diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 81990ba77..ed0ec9575 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -25,6 +25,7 @@ on: - 'OpenCL/**.cl' - 'include/**.h' - 'src/**.c' + - 'src/**.mk' - 'tools/**' - '**/Makefile' - '.github/workflows/build.yml' @@ -36,58 +37,36 @@ on: - 'OpenCL/**.cl' - 'include/**.h' - 'src/**.c' + - 'src/**.mk' - 'tools/**' - '**/Makefile' - '.github/workflows/build.yml' jobs: - build-linux: + build: strategy: fail-fast: false matrix: + os: [ubuntu-latest, macos-latest, windows-latest] shared: [0, 1] - name: Build Linux (${{ matrix.shared == 0 && 'Static' || 'Shared' }}) - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - name: Build - env: - SHARED: ${{ matrix.shared }} - run: make - - name: Generate artifacts - uses: actions/upload-artifact@v3 - with: - name: hashcat-linux-${{ matrix.shared == 0 && 'static' || 'shared' }} - path: ${{ env.include_paths }} + include: + - os: ubuntu-latest + os_name: Linux + os_name_lowercase: linux + - os: macos-latest + os_name: macOS + os_name_lowercase: macos + - os: windows-latest + os_name: Windows + os_name_lowercase: windows - build-macos: - strategy: - fail-fast: false - matrix: - shared: [0, 1] - name: Build macOS (${{ matrix.shared == 0 && 'Static' || 'Shared' }}) - runs-on: macos-latest + name: Build ${{ matrix.os_name }} (${{ matrix.shared == 0 && 'Static' || 'Shared' }}) + runs-on: ${{ matrix.os }} steps: - - uses: actions/checkout@v3 - - name: Build - env: - SHARED: ${{ matrix.shared }} - run: make - - name: Generate artifacts - uses: actions/upload-artifact@v3 - with: - name: hashcat-macos-${{ matrix.shared == 0 && 'static' || 'shared' }} - path: ${{ env.include_paths }} + - uses: actions/checkout@v4 - build-windows: - strategy: - fail-fast: false - matrix: - shared: [0, 1] - name: Build Windows (${{ matrix.shared == 0 && 'Static' || 'Shared' }}) - runs-on: windows-latest - steps: - - name: Install libiconv + - name: Install dependencies (Windows only) + if: matrix.os_name_lowercase == 'windows' uses: msys2/setup-msys2@v2 with: update: true @@ -97,14 +76,23 @@ jobs: libiconv libiconv-devel make - - uses: actions/checkout@v3 - - name: Build + python + + - name: Build (Windows) + if: matrix.os_name_lowercase == 'windows' shell: msys2 {0} env: SHARED: ${{ matrix.shared }} run: make + + - name: Build (Linux/macOS) + if: matrix.os_name_lowercase != 'windows' + env: + SHARED: ${{ matrix.shared }} + run: make + - name: Generate artifacts - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: - name: hashcat-windows-${{ matrix.shared == 0 && 'static' || 'shared' }} + name: hashcat-${{ matrix.os_name_lowercase }}-${{ matrix.shared == 0 && 'static' || 'shared' }} path: ${{ env.include_paths }} diff --git a/.gitignore b/.gitignore index d8ff600bb..6dd2f09f2 100644 --- a/.gitignore +++ b/.gitignore @@ -17,6 +17,8 @@ hashcat.dll *.dSYM kernels/** lib/*.a +bridges/*.dll +bridges/*.so modules/*.dll modules/*.so obj/*/*/*.o @@ -24,3 +26,9 @@ obj/*.o obj/*.a include/CL tools/luks_tests +.vscode + +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class diff --git a/BUILD.md b/BUILD.md index b552f48bc..a66a75938 100644 --- a/BUILD.md +++ b/BUILD.md @@ -1,87 +1,138 @@ -hashcat build documentation -= -### Revision ### +# Hashcat – Build Documentation -* 1.6 +**Revision**: 1.7 +**Author**: See `docs/credits.txt` -### Author ### +--- -See docs/credits.txt +## ✅ Requirements -### Building hashcat for Linux and macOS ### +- **Python 3.12** or higher -Get a copy of the **hashcat** repository +Check your Python version: +```bash +$ python3 --version +# Expected output: Python 3.13.3 ``` + +If you can't install Python ≥ 3.12 globally, you can use **pyenv**. + +> If you're using `pyenv`, follow **all steps** below. Otherwise, follow only **steps 3 and 5**. + +--- + +## 🛠️ Building Hashcat – Step-by-Step + +### 🔹 Step 1: Install dependencies and pyenv + +#### On Linux + +Install required libraries to build Python: + +```bash +$ sudo apt install libbz2-dev libssl-dev libncurses5-dev libffi-dev libreadline-dev libsqlite3-dev liblzma-dev +``` + +Install `pyenv`: + +```bash +$ curl https://pyenv.run | bash +``` + +> Follow the instructions shown after installation to set up your shell correctly. + +#### On macOS + +Install `pyenv` via Homebrew: + +```bash +$ brew install pyenv +``` + +--- + +### 🔹 Step 2: Install Python using pyenv + +Install Python 3.12 (or newer): + +```bash +$ pyenv install 3.12 +``` + +Check installed versions: + +```bash +$ pyenv versions +# Example: +# * system +# 3.12.11 +``` + +--- + +### 🔹 Step 3: Clone the Hashcat repository + +```bash $ git clone https://github.com/hashcat/hashcat.git +$ cd hashcat ``` -Run "make" +--- -``` -$ make +### 🔹 Step 4: Set the local Python version + +```bash +$ pyenv local 3.12.11 ``` -### Install hashcat for Linux ### +--- -The install target is linux FHS compatible and can be used like this: +### 🔹 Step 5: Build Hashcat +```bash +$ make clean && make ``` + +--- + +### 🔹 Step 6 (Optional): Install Hashcat (Linux only) + +```bash $ make install ``` -If the $HOME/.hashcat folder exists, then: +Hashcat will use the following locations depending on your environment: -- Session related files go to: $HOME/.hashcat/sessions/ -- Cached kernels go to: $HOME/.hashcat/kernels/ -- Potfiles go to: $HOME/.hashcat/ +| Condition | Session Files | Kernel Cache | Potfiles | +|--------------------------------------------|----------------------------------------|---------------------------------------|----------------------------------------| +| `$HOME/.hashcat` exists | `$HOME/.hashcat/sessions/` | `$HOME/.hashcat/kernels/` | `$HOME/.hashcat/` | +| `$XDG_DATA_HOME` and `$XDG_CACHE_HOME` set | `$XDG_DATA_HOME/hashcat/sessions/` | `$XDG_CACHE_HOME/hashcat/kernels/` | `$XDG_DATA_HOME/hashcat/` | +| Only `$XDG_DATA_HOME` set | `$XDG_DATA_HOME/hashcat/sessions/` | `$HOME/.cache/hashcat/` | `$XDG_DATA_HOME/hashcat/` | +| Only `$XDG_CACHE_HOME` set | `$HOME/.local/share/hashcat/sessions/` | `$XDG_CACHE_HOME/hashcat/kernels/` | `$HOME/.local/share/hashcat/` | +| None of the above | `$HOME/.local/share/hashcat/sessions/` | `$HOME/.cache/hashcat/` | `$HOME/.local/share/hashcat/` | -Otherwise, if environment variable XDG_DATA_HOME and XDG_CACHE_HOME exists, then: +--- -- Session related files go to: $XDG_DATA_HOME/hashcat/sessions/ -- Cached kernels go to: $XDG_CACHE_HOME/hashcat/kernels/ -- Potfiles go to: $XDG_DATA_HOME/hashcat/ +## 🐳 Building Hashcat with Docker -Otherwise, if environment variable XDG_DATA_HOME exists, then: +See: [BUILD_Docker.md](BUILD_Docker.md) -- Session related files go to: $XDG_DATA_HOME/hashcat/sessions/ -- Cached kernels go to: $HOME/.cache/hashcat -- Potfiles go to: $XDG_DATA_HOME/hashcat/ +--- -Otherwise, if environment variable XDG_CACHE_HOME exists, then: +## 🪟 Building Hashcat for Windows -- Session related files go to: $HOME/.local/share/hashcat/sessions/ -- Cached kernels go to: $XDG_CACHE_HOME/hashcat/kernels/ -- Potfiles go to: $HOME/.local/share/hashcat/ +| Method | Documentation | +|----------------------------------------|--------------------------------------| +| From macOS | [BUILD_macOS.md](BUILD_macOS.md) | +| Using Windows Subsystem for Linux (WSL)| [BUILD_WSL.md](BUILD_WSL.md) | +| Using Cygwin | [BUILD_CYGWIN.md](BUILD_CYGWIN.md) | +| Using MSYS2 | [BUILD_MSYS2.md](BUILD_MSYS2.md) | +| From Linux | Run: `make win` | -Otherwise: +--- -- Session related files go to: $HOME/.local/share/hashcat/sessions/ -- Cached kernels go to: $HOME/.cache/hashcat -- Potfiles go to: $HOME/.local/share/hashcat/ +## 🎉 Done -### Building hashcat for Windows (using macOS) ### - -Refer to [BUILD_macOS.md](BUILD_macOS.md) - -### Building hashcat for Windows (using Windows Subsystem for Linux) ### - -Refer to [BUILD_WSL.md](BUILD_WSL.md) - -### Building hashcat for Windows (using Cygwin) ### - -Refer to [BUILD_CYGWIN.md](BUILD_CYGWIN.md) - -### Building hashcat for Windows (using MSYS2) ### - -Refer to [BUILD_MSYS2.md](BUILD_MSYS2.md) - -### Building hashcat for Windows from Linux ### - -``` -$ make win -``` - -= -Enjoy your fresh **hashcat** binaries ;) +Enjoy your fresh **Hashcat** binaries! 😎 diff --git a/BUILD_CYGWIN.md b/BUILD_CYGWIN.md index 13b1d2c02..b5719de11 100644 --- a/BUILD_CYGWIN.md +++ b/BUILD_CYGWIN.md @@ -14,6 +14,8 @@ gcc-core gcc-g++ make git +python312 +python312-devel ``` ### Building ### diff --git a/BUILD_Docker.md b/BUILD_Docker.md new file mode 100644 index 000000000..cd957bcc9 --- /dev/null +++ b/BUILD_Docker.md @@ -0,0 +1,40 @@ +# Compiling hashcat binaries with Docker + +To build both Linux and Windows binaries in a clean and reproducible environment a dockerfile is available. +It is not considered to be used as a runtime OS. + +### Building ### + +```bash +docker build -f docker/BinaryPackage.ubuntu20 -t hashcat-binaries . +``` + +This will create a Docker image with all required toolchains and dependencies. + +Optionally you can place custom *.patch or *.diff files into `patches/` folder. They will be applied before compiling. + +### Output ### + +The resulting output package will be located in: `/root/xy/hashcat-.7z`. + +You can copy it to your host with this command: + +```bash +docker run --rm \ + -e HOST_UID=$(id -u) \ + -e HOST_GID=$(id -g) \ + -v $(pwd):/out \ + hashcat-binaries \ + bash -c "cp /root/xy/hashcat-*.7z /out && chown \$HOST_UID:\$HOST_GID /out/hashcat-*.7z" +``` + +The package will be available on your host machine in the `out` directory. + +### Debug ### + +In case you want to play around in the docker, run: + +```bash +docker run --rm -it hashcat-binaries /bin/bash +``` + diff --git a/BUILD_MSYS2.md b/BUILD_MSYS2.md index 09c7b4f1a..bdb2c68a9 100644 --- a/BUILD_MSYS2.md +++ b/BUILD_MSYS2.md @@ -13,6 +13,7 @@ $ pacman -S git $ pacman -S make $ pacman -S gcc $ pacman -S libiconv-devel +$ pacman -S python3 ``` ### Building ### diff --git a/BUILD_WSL.md b/BUILD_WSL.md index 115c3772b..cd5b6fd5b 100644 --- a/BUILD_WSL.md +++ b/BUILD_WSL.md @@ -1,24 +1,27 @@ -# Compiling hashcat for Windows with Windows Subsystem for Linux. +# Compiling hashcat for Windows with Windows Subsystem for Linux 2. -Tested on Windows 10 x64, should also work to build hashcat for Windows on Linux. +Tested on Windows 11 x64, should also work to build hashcat for Windows on Linux. -I had it tested with WSL2 using Ubuntu_2004.2020.424.0_x64.appx. +I had it tested with WSL2 using "Ubuntu", which at the time of writing is Ubuntu 24.04 Make sure to have the system upgraded after install (otherwise it will fail to find the gcc-mingw-w64-x86-64 package). ### Installation ### -Enable WSL. +Enable WSL2. Press the win + r key on your keyboard simultaneously and in the "Run" popup window type bash and make sure to install additional dependencies necessary for hashcat compilation -``` -sudo apt install gcc-mingw-w64-x86-64 g++-mingw-w64-x86-64 make git +```bash +sudo apt install build-essential gcc-mingw-w64-x86-64 g++-mingw-w64-x86-64 make git zstd python3-dev cmake git clone https://github.com/hashcat/hashcat git clone https://github.com/win-iconv/win-iconv cd win-iconv/ -patch < ../hashcat/tools/win-iconv-64.diff +cmake -D WIN_ICONV_BUILD_EXECUTABLE=OFF -D CMAKE_INSTALL_PREFIX=/opt/win-iconv-64 -D CMAKE_CXX_COMPILER=$(which x86_64-w64-mingw32-g++) -D CMAKE_C_COMPILER=$(which x86_64-w64-mingw32-gcc) -D CMAKE_SYSTEM_NAME=Windows sudo make install cd ../ +wget https://repo.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-3.12.10-1-any.pkg.tar.zst +sudo mkdir /opt/win-python +sudo tar --zstd -xf mingw-w64-x86_64-python-3.12.10-1-any.pkg.tar.zst -C /opt/win-python ``` ### Building ### diff --git a/BUILD_macOS.md b/BUILD_macOS.md index 67d09a6bf..9388dd75e 100644 --- a/BUILD_macOS.md +++ b/BUILD_macOS.md @@ -11,9 +11,12 @@ brew install mingw-w64 git clone https://github.com/hashcat/hashcat git clone https://github.com/win-iconv/win-iconv cd win-iconv/ -patch < ../hashcat/tools/win-iconv-64.diff +cmake -D WIN_ICONV_BUILD_EXECUTABLE=OFF -D CMAKE_INSTALL_PREFIX=/opt/win-iconv-64 -D CMAKE_CXX_COMPILER=$(which x86_64-w64-mingw32-g++) -D CMAKE_C_COMPILER=$(which x86_64-w64-mingw32-gcc) -D CMAKE_SYSTEM_NAME=Windows sudo make install cd ../ +wget https://repo.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-3.12.10-1-any.pkg.tar.zst +sudo mkdir /opt/win-python +sudo tar --zstd -xf mingw-w64-x86_64-python-3.12.10-1-any.pkg.tar.zst -C /opt/win-python ``` ### Building ### diff --git a/OpenCL/amp_a0.cl b/OpenCL/amp_a0.cl index f39750c54..5e4a1ae55 100644 --- a/OpenCL/amp_a0.cl +++ b/OpenCL/amp_a0.cl @@ -13,7 +13,7 @@ #include M2S(INCLUDE_PATH/inc_amp.h) #endif -KERNEL_FQ void amp (KERN_ATTR_AMP) +KERNEL_FQ KERNEL_FA void amp (KERN_ATTR_AMP) { const u64 gid = get_global_id (0); diff --git a/OpenCL/amp_a1.cl b/OpenCL/amp_a1.cl index 99d91c168..b1cfc1c1d 100644 --- a/OpenCL/amp_a1.cl +++ b/OpenCL/amp_a1.cl @@ -11,7 +11,7 @@ #include M2S(INCLUDE_PATH/inc_amp.h) #endif -KERNEL_FQ void amp (KERN_ATTR_AMP) +KERNEL_FQ KERNEL_FA void amp (KERN_ATTR_AMP) { const u64 gid = get_global_id (0); diff --git a/OpenCL/amp_a3.cl b/OpenCL/amp_a3.cl index abdb3f7a6..a5b74c85f 100644 --- a/OpenCL/amp_a3.cl +++ b/OpenCL/amp_a3.cl @@ -10,7 +10,7 @@ #include M2S(INCLUDE_PATH/inc_amp.h) #endif -KERNEL_FQ void amp (KERN_ATTR_AMP) +KERNEL_FQ KERNEL_FA void amp (KERN_ATTR_AMP) { const u64 gid = get_global_id (0); diff --git a/OpenCL/inc_cipher_rc4.cl b/OpenCL/inc_cipher_rc4.cl index c2601e80f..77dc5daa4 100644 --- a/OpenCL/inc_cipher_rc4.cl +++ b/OpenCL/inc_cipher_rc4.cl @@ -4,6 +4,12 @@ #include "inc_common.h" #include "inc_cipher_rc4.h" +#ifdef IS_HIP +#define RC4_NOINLINE __attribute__ ((noinline)) +#else +#define RC4_NOINLINE +#endif + #ifdef IS_CPU // Pattern linear @@ -136,6 +142,113 @@ DECLSPEC void rc4_init_40 (LOCAL_AS u32 *S, PRIVATE_AS const u32 *key, const u64 j += GET_KEY8 (S, 255, lid) + d0; rc4_swap (S, 255, j, lid); } +DECLSPEC void rc4_init_72 (LOCAL_AS u32 *S, PRIVATE_AS const u32 *key, const u64 lid) +{ + u32 v = 0x03020100; + u32 a = 0x04040404; + + #ifdef _unroll + #pragma unroll + #endif + for (u8 i = 0; i < 64; i++) + { + SET_KEY32 (S, i, v, lid); v += a; + } + + const u8 d0 = v8a_from_v32_S (key[0]); + const u8 d1 = v8b_from_v32_S (key[0]); + const u8 d2 = v8c_from_v32_S (key[0]); + const u8 d3 = v8d_from_v32_S (key[0]); + const u8 d4 = v8a_from_v32_S (key[1]); + const u8 d5 = v8b_from_v32_S (key[1]); + const u8 d6 = v8c_from_v32_S (key[1]); + const u8 d7 = v8d_from_v32_S (key[1]); + const u8 d8 = v8a_from_v32_S (key[2]); + + u8 j = 0; + + #ifdef _unroll + #pragma unroll + #endif + for (u32 i = 0; i < 252; i += 9) + { + j += GET_KEY8 (S, i + 0, lid) + d0; rc4_swap (S, i + 0, j, lid); + j += GET_KEY8 (S, i + 1, lid) + d1; rc4_swap (S, i + 1, j, lid); + j += GET_KEY8 (S, i + 2, lid) + d2; rc4_swap (S, i + 2, j, lid); + j += GET_KEY8 (S, i + 3, lid) + d3; rc4_swap (S, i + 3, j, lid); + j += GET_KEY8 (S, i + 4, lid) + d4; rc4_swap (S, i + 4, j, lid); + j += GET_KEY8 (S, i + 5, lid) + d5; rc4_swap (S, i + 5, j, lid); + j += GET_KEY8 (S, i + 6, lid) + d6; rc4_swap (S, i + 6, j, lid); + j += GET_KEY8 (S, i + 7, lid) + d7; rc4_swap (S, i + 7, j, lid); + j += GET_KEY8 (S, i + 8, lid) + d8; rc4_swap (S, i + 8, j, lid); + } + + j += GET_KEY8 (S, 252, lid) + d0; rc4_swap (S, 252, j, lid); + j += GET_KEY8 (S, 253, lid) + d1; rc4_swap (S, 253, j, lid); + j += GET_KEY8 (S, 254, lid) + d2; rc4_swap (S, 254, j, lid); + j += GET_KEY8 (S, 255, lid) + d3; rc4_swap (S, 255, j, lid); +} + +DECLSPEC void rc4_init_104 (LOCAL_AS u32 *S, PRIVATE_AS const u32 *key, const u64 lid) +{ + u32 v = 0x03020100; + u32 a = 0x04040404; + + #ifdef _unroll + #pragma unroll + #endif + for (u8 i = 0; i < 64; i++) + { + SET_KEY32 (S, i, v, lid); v += a; + } + + const u8 d0 = v8a_from_v32_S(key[0]); + const u8 d1 = v8b_from_v32_S(key[0]); + const u8 d2 = v8c_from_v32_S(key[0]); + const u8 d3 = v8d_from_v32_S(key[0]); + const u8 d4 = v8a_from_v32_S(key[1]); + const u8 d5 = v8b_from_v32_S(key[1]); + const u8 d6 = v8c_from_v32_S(key[1]); + const u8 d7 = v8d_from_v32_S(key[1]); + const u8 d8 = v8a_from_v32_S(key[2]); + const u8 d9 = v8b_from_v32_S(key[2]); + const u8 d10 = v8c_from_v32_S(key[2]); + const u8 d11 = v8d_from_v32_S(key[2]); + const u8 d12 = v8a_from_v32_S(key[3]); + + u8 j = 0; + + #ifdef _unroll + #pragma unroll + #endif + for (u32 i = 0; i < 247; i += 13) + { + j += GET_KEY8(S, i + 0, lid) + d0; rc4_swap(S, i + 0, j, lid); + j += GET_KEY8(S, i + 1, lid) + d1; rc4_swap(S, i + 1, j, lid); + j += GET_KEY8(S, i + 2, lid) + d2; rc4_swap(S, i + 2, j, lid); + j += GET_KEY8(S, i + 3, lid) + d3; rc4_swap(S, i + 3, j, lid); + j += GET_KEY8(S, i + 4, lid) + d4; rc4_swap(S, i + 4, j, lid); + j += GET_KEY8(S, i + 5, lid) + d5; rc4_swap(S, i + 5, j, lid); + j += GET_KEY8(S, i + 6, lid) + d6; rc4_swap(S, i + 6, j, lid); + j += GET_KEY8(S, i + 7, lid) + d7; rc4_swap(S, i + 7, j, lid); + j += GET_KEY8(S, i + 8, lid) + d8; rc4_swap(S, i + 8, j, lid); + j += GET_KEY8(S, i + 9, lid) + d9; rc4_swap(S, i + 9, j, lid); + j += GET_KEY8(S, i + 10, lid) + d10; rc4_swap(S, i + 10, j, lid); + j += GET_KEY8(S, i + 11, lid) + d11; rc4_swap(S, i + 11, j, lid); + j += GET_KEY8(S, i + 12, lid) + d12; rc4_swap(S, i + 12, j, lid); + } + + j += GET_KEY8(S, 247, lid) + d0; rc4_swap(S, 247, j, lid); + j += GET_KEY8(S, 248, lid) + d1; rc4_swap(S, 248, j, lid); + j += GET_KEY8(S, 249, lid) + d2; rc4_swap(S, 249, j, lid); + j += GET_KEY8(S, 250, lid) + d3; rc4_swap(S, 250, j, lid); + j += GET_KEY8(S, 251, lid) + d4; rc4_swap(S, 251, j, lid); + j += GET_KEY8(S, 252, lid) + d5; rc4_swap(S, 252, j, lid); + j += GET_KEY8(S, 253, lid) + d6; rc4_swap(S, 253, j, lid); + j += GET_KEY8(S, 254, lid) + d7; rc4_swap(S, 254, j, lid); + j += GET_KEY8(S, 255, lid) + d8; rc4_swap(S, 255, j, lid); +} + DECLSPEC void rc4_init_128 (LOCAL_AS u32 *S, PRIVATE_AS const u32 *key, const u64 lid) { u32 v = 0x03020100; @@ -196,6 +309,27 @@ DECLSPEC void rc4_swap (LOCAL_AS u32 *S, const u8 i, const u8 j, const u64 lid) SET_KEY8 (S, j, tmp, lid); } +DECLSPEC void rc4_dropN (LOCAL_AS u32 *S, PRIVATE_AS u8 *i, PRIVATE_AS u8 *j, const u32 n, const u64 lid) +{ + u8 a = *i; + u8 b = *j; + + for (u32 z = 0; z < n; z++) + { + a += 1; + b += GET_KEY8 (S, a, lid); + + rc4_swap (S, a, b, lid); + + u8 idx = GET_KEY8 (S, a, lid) + GET_KEY8 (S, b, lid); + + GET_KEY8 (S, idx, lid); + } + + *i = a; + *j = b; +} + DECLSPEC u8 rc4_next_16 (LOCAL_AS u32 *S, const u8 i, const u8 j, PRIVATE_AS const u32 *in, PRIVATE_AS u32 *out, const u64 lid) { u8 a = i; @@ -262,7 +396,7 @@ DECLSPEC u8 rc4_next_16 (LOCAL_AS u32 *S, const u8 i, const u8 j, PRIVATE_AS con return b; } -DECLSPEC u8 rc4_next_16_global (LOCAL_AS u32 *S, const u8 i, const u8 j, GLOBAL_AS const u32 *in, PRIVATE_AS u32 *out, const u64 lid) +DECLSPEC RC4_NOINLINE u8 rc4_next_16_global (LOCAL_AS u32 *S, const u8 i, const u8 j, GLOBAL_AS const u32 *in, PRIVATE_AS u32 *out, const u64 lid) { u8 a = i; u8 b = j; diff --git a/OpenCL/inc_cipher_rc4.h b/OpenCL/inc_cipher_rc4.h index d789eb691..ed7569472 100644 --- a/OpenCL/inc_cipher_rc4.h +++ b/OpenCL/inc_cipher_rc4.h @@ -11,8 +11,11 @@ DECLSPEC void SET_KEY8 (LOCAL_AS u32 *S, const u8 k, const u8 v, const u64 lid) DECLSPEC void SET_KEY32 (LOCAL_AS u32 *S, const u8 k, const u32 v, const u64 lid); DECLSPEC void rc4_init_40 (LOCAL_AS u32 *S, PRIVATE_AS const u32 *key, const u64 lid); +DECLSPEC void rc4_init_72 (LOCAL_AS u32 *S, PRIVATE_AS const u32 *key, const u64 lid); +DECLSPEC void rc4_init_104 (LOCAL_AS u32 *S, PRIVATE_AS const u32 *key, const u64 lid); DECLSPEC void rc4_init_128 (LOCAL_AS u32 *S, PRIVATE_AS const u32 *key, const u64 lid); DECLSPEC void rc4_swap (LOCAL_AS u32 *S, const u8 i, const u8 j, const u64 lid); +DECLSPEC void rc4_dropN (LOCAL_AS u32 *S, PRIVATE_AS u8 *i, PRIVATE_AS u8 *j, const u32 n, const u64 lid); DECLSPEC u8 rc4_next_16 (LOCAL_AS u32 *S, const u8 i, const u8 j, PRIVATE_AS const u32 *in, PRIVATE_AS u32 *out, const u64 lid); DECLSPEC u8 rc4_next_16_global (LOCAL_AS u32 *S, const u8 i, const u8 j, GLOBAL_AS const u32 *in, PRIVATE_AS u32 *out, const u64 lid); diff --git a/OpenCL/inc_common.cl b/OpenCL/inc_common.cl index 818b32e69..a23efd42b 100644 --- a/OpenCL/inc_common.cl +++ b/OpenCL/inc_common.cl @@ -1317,7 +1317,7 @@ DECLSPEC u64x hc_swap64 (const u64x v) asm volatile ("mov.b64 %0, {%1, %2};" : "=l"(r.sf) : "r"(tr.sf), "r"(tl.sf)); #endif - #elif defined IS_METAL + #elif defined IS_METAL || defined IS_APPLE_SILICON const u32x a0 = h32_from_64 (v); const u32x a1 = l32_from_64 (v); @@ -1391,7 +1391,7 @@ DECLSPEC u64 hc_swap64_S (const u64 v) asm volatile ("mov.b64 %0, {%1, %2};" : "=l"(r) : "r"(tr), "r"(tl)); - #elif defined IS_METAL + #elif defined IS_METAL || defined IS_APPLE_SILICON const u32 v0 = h32_from_64_S (v); const u32 v1 = l32_from_64_S (v); @@ -2701,6 +2701,71 @@ DECLSPEC int asn1_detect (PRIVATE_AS const u32 *buf, const int len) return 1; } +DECLSPEC int asn1_check_int_tag (PRIVATE_AS const u32 *buf, const int len) +{ + PRIVATE_AS const u8 *bytes = (PRIVATE_AS const u8 *) buf; + + int seq_len_offset = 0; + + if (bytes[1] < 0x80) + { + seq_len_offset = 2; + } + else if (bytes[1] == 0x81) + { + seq_len_offset = 3; + } + else if (bytes[1] == 0x82) + { + seq_len_offset = 4; + } + else + { + return 0; + } + + int pos = seq_len_offset; + + if (pos >= len) return 0; + if (pos + 2 > len) return 0; + + u8 tag = bytes[pos]; + + if (tag != 0x02) return 0; + + u8 len_byte = bytes[pos + 1]; + + int val_len = 0; + int tmp_len = 1; + + if (len_byte < 0x80) + { + val_len = len_byte; + } + else if (len_byte == 0x81) + { + if (pos + 2 >= len) return 0; + val_len = bytes[pos + 2]; + tmp_len = 2; + } + else if (len_byte == 0x82) + { + if (pos + 3 >= len) return 0; + val_len = (bytes[pos + 2] << 8) | bytes[pos + 3]; + tmp_len = 3; + } + else + { + return 0; + } + + if (pos + 1 + tmp_len + val_len > len) return 0; + + if (val_len != 1) return 0; + + return 1; +} + DECLSPEC u32 check_bitmap (GLOBAL_AS const u32 *bitmap, const u32 bitmap_mask, const u32 bitmap_shift, const u32 digest) { return (bitmap[(digest >> bitmap_shift) & bitmap_mask] & (1 << (digest & 0x1f))); diff --git a/OpenCL/inc_common.h b/OpenCL/inc_common.h index 434de8866..0b51fbd29 100644 --- a/OpenCL/inc_common.h +++ b/OpenCL/inc_common.h @@ -126,7 +126,8 @@ #define KERN_ATTR_MAIN_PARAMS \ uint hc_gid [[ thread_position_in_grid ]], \ uint hc_lid [[ thread_position_in_threadgroup ]], \ - uint hc_lsz [[ threads_per_threadgroup ]] + uint hc_lsz [[ threads_per_threadgroup ]], \ + uint hc_bid [[ threadgroup_position_in_grid ]] #endif // IS_METAL /* @@ -302,6 +303,7 @@ DECLSPEC int hc_enc_next_global (PRIVATE_AS hc_enc_t *hc_enc, GLOBAL_AS const u3 DECLSPEC int pkcs_padding_bs8 (PRIVATE_AS const u32 *data_buf, const int data_len); DECLSPEC int pkcs_padding_bs16 (PRIVATE_AS const u32 *data_buf, const int data_len); DECLSPEC int asn1_detect (PRIVATE_AS const u32 *buf, const int len); +DECLSPEC int asn1_check_int_tag (PRIVATE_AS const u32 *buf, const int len); DECLSPEC u32 check_bitmap (GLOBAL_AS const u32 *bitmap, const u32 bitmap_mask, const u32 bitmap_shift, const u32 digest); DECLSPEC u32 check (PRIVATE_AS const u32 *digest, GLOBAL_AS const u32 *bitmap_s1_a, GLOBAL_AS const u32 *bitmap_s1_b, GLOBAL_AS const u32 *bitmap_s1_c, GLOBAL_AS const u32 *bitmap_s1_d, GLOBAL_AS const u32 *bitmap_s2_a, GLOBAL_AS const u32 *bitmap_s2_b, GLOBAL_AS const u32 *bitmap_s2_c, GLOBAL_AS const u32 *bitmap_s2_d, const u32 bitmap_mask, const u32 bitmap_shift1, const u32 bitmap_shift2); DECLSPEC void mark_hash (GLOBAL_AS plain_t *plains_buf, GLOBAL_AS u32 *d_result, const u32 salt_pos, const u32 digests_cnt, const u32 digest_pos, const u32 hash_pos, const u64 gid, const u32 il_pos, const u32 extra1, const u32 extra2); diff --git a/OpenCL/inc_comp_multi_iba.cl b/OpenCL/inc_comp_multi_iba.cl index 9a41cc17c..05d8bf3b1 100644 --- a/OpenCL/inc_comp_multi_iba.cl +++ b/OpenCL/inc_comp_multi_iba.cl @@ -3,7 +3,7 @@ for (int digest_pos = 0; digest_pos < DIGESTS_CNT; digest_pos++) { const u32 final_hash_pos = DIGESTS_OFFSET_HOST + digest_pos; - const digest_t *digest = digests_buf + final_hash_pos; + GLOBAL_AS const digest_t *digest = digests_buf + final_hash_pos; const int invalid_bits = count_bits_32 (digest->digest_buf[0], r0) + count_bits_32 (digest->digest_buf[1], r1) diff --git a/OpenCL/inc_hash_blake2s.cl b/OpenCL/inc_hash_blake2s.cl index 5fb60f979..77ecc02fb 100644 --- a/OpenCL/inc_hash_blake2s.cl +++ b/OpenCL/inc_hash_blake2s.cl @@ -9,6 +9,7 @@ #include "inc_common.h" #include "inc_hash_blake2s.h" + DECLSPEC u32 blake2s_rot16_S (const u32 a) { vconv32_t in; @@ -217,7 +218,7 @@ DECLSPEC void blake2s_update_64 (PRIVATE_AS blake2s_ctx_t *ctx, PRIVATE_AS u32 * if (pos == 0) { - if (ctx->len > 0) // if new block (pos == 0) AND the (old) len is not zero => transform + if (ctx->len > 0) { blake2s_transform (ctx->h, ctx->m, ctx->len, BLAKE2S_UPDATE); } @@ -288,8 +289,6 @@ DECLSPEC void blake2s_update_64 (PRIVATE_AS blake2s_ctx_t *ctx, PRIVATE_AS u32 * ctx->m[14] |= w3[2]; ctx->m[15] |= w3[3]; - // len must be a multiple of 64 (not ctx->len) for BLAKE2S_UPDATE: - const u32 cur_len = ((ctx->len + len) / 64) * 64; blake2s_transform (ctx->h, ctx->m, cur_len, BLAKE2S_UPDATE); @@ -424,11 +423,520 @@ DECLSPEC void blake2s_update_global (PRIVATE_AS blake2s_ctx_t *ctx, GLOBAL_AS co blake2s_update_64 (ctx, w0, w1, w2, w3, len - (u32) pos1); } +DECLSPEC void blake2s_update_swap (PRIVATE_AS blake2s_ctx_t *ctx, PRIVATE_AS const u32 *w, const int len) +{ + u32 w0[4]; + u32 w1[4]; + u32 w2[4]; + u32 w3[4]; + + int pos1; + int pos4; + + for (pos1 = 0, pos4 = 0; pos1 < len - 64; pos1 += 64, pos4 += 16) + { + w0[0] = w[pos4 + 0]; + w0[1] = w[pos4 + 1]; + w0[2] = w[pos4 + 2]; + w0[3] = w[pos4 + 3]; + w1[0] = w[pos4 + 4]; + w1[1] = w[pos4 + 5]; + w1[2] = w[pos4 + 6]; + w1[3] = w[pos4 + 7]; + w2[0] = w[pos4 + 8]; + w2[1] = w[pos4 + 9]; + w2[2] = w[pos4 + 10]; + w2[3] = w[pos4 + 11]; + w3[0] = w[pos4 + 12]; + w3[1] = w[pos4 + 13]; + w3[2] = w[pos4 + 14]; + w3[3] = w[pos4 + 15]; + + w0[0] = hc_swap32_S (w0[0]); + w0[1] = hc_swap32_S (w0[1]); + w0[2] = hc_swap32_S (w0[2]); + w0[3] = hc_swap32_S (w0[3]); + w1[0] = hc_swap32_S (w1[0]); + w1[1] = hc_swap32_S (w1[1]); + w1[2] = hc_swap32_S (w1[2]); + w1[3] = hc_swap32_S (w1[3]); + w2[0] = hc_swap32_S (w2[0]); + w2[1] = hc_swap32_S (w2[1]); + w2[2] = hc_swap32_S (w2[2]); + w2[3] = hc_swap32_S (w2[3]); + w3[0] = hc_swap32_S (w3[0]); + w3[1] = hc_swap32_S (w3[1]); + w3[2] = hc_swap32_S (w3[2]); + w3[3] = hc_swap32_S (w3[3]); + + blake2s_update_64 (ctx, w0, w1, w2, w3, 64); + } + + w0[0] = w[pos4 + 0]; + w0[1] = w[pos4 + 1]; + w0[2] = w[pos4 + 2]; + w0[3] = w[pos4 + 3]; + w1[0] = w[pos4 + 4]; + w1[1] = w[pos4 + 5]; + w1[2] = w[pos4 + 6]; + w1[3] = w[pos4 + 7]; + w2[0] = w[pos4 + 8]; + w2[1] = w[pos4 + 9]; + w2[2] = w[pos4 + 10]; + w2[3] = w[pos4 + 11]; + w3[0] = w[pos4 + 12]; + w3[1] = w[pos4 + 13]; + w3[2] = w[pos4 + 14]; + w3[3] = w[pos4 + 15]; + + w0[0] = hc_swap32_S (w0[0]); + w0[1] = hc_swap32_S (w0[1]); + w0[2] = hc_swap32_S (w0[2]); + w0[3] = hc_swap32_S (w0[3]); + w1[0] = hc_swap32_S (w1[0]); + w1[1] = hc_swap32_S (w1[1]); + w1[2] = hc_swap32_S (w1[2]); + w1[3] = hc_swap32_S (w1[3]); + w2[0] = hc_swap32_S (w2[0]); + w2[1] = hc_swap32_S (w2[1]); + w2[2] = hc_swap32_S (w2[2]); + w2[3] = hc_swap32_S (w2[3]); + w3[0] = hc_swap32_S (w3[0]); + w3[1] = hc_swap32_S (w3[1]); + w3[2] = hc_swap32_S (w3[2]); + w3[3] = hc_swap32_S (w3[3]); + + blake2s_update_64 (ctx, w0, w1, w2, w3, len - pos1); +} + +DECLSPEC void blake2s_update_global_swap (PRIVATE_AS blake2s_ctx_t *ctx, GLOBAL_AS const u32 *w, const int len) +{ + u32 w0[4]; + u32 w1[4]; + u32 w2[4]; + u32 w3[4]; + + const int limit = (const int) len - 64; // int type needed, could be negative + + int pos1; + int pos4; + + for (pos1 = 0, pos4 = 0; pos1 < limit; pos1 += 64, pos4 += 16) + { + w0[0] = w[pos4 + 0]; + w0[1] = w[pos4 + 1]; + w0[2] = w[pos4 + 2]; + w0[3] = w[pos4 + 3]; + w1[0] = w[pos4 + 4]; + w1[1] = w[pos4 + 5]; + w1[2] = w[pos4 + 6]; + w1[3] = w[pos4 + 7]; + w2[0] = w[pos4 + 8]; + w2[1] = w[pos4 + 9]; + w2[2] = w[pos4 + 10]; + w2[3] = w[pos4 + 11]; + w3[0] = w[pos4 + 12]; + w3[1] = w[pos4 + 13]; + w3[2] = w[pos4 + 14]; + w3[3] = w[pos4 + 15]; + + w0[0] = hc_swap32_S (w0[0]); + w0[1] = hc_swap32_S (w0[1]); + w0[2] = hc_swap32_S (w0[2]); + w0[3] = hc_swap32_S (w0[3]); + w1[0] = hc_swap32_S (w1[0]); + w1[1] = hc_swap32_S (w1[1]); + w1[2] = hc_swap32_S (w1[2]); + w1[3] = hc_swap32_S (w1[3]); + w2[0] = hc_swap32_S (w2[0]); + w2[1] = hc_swap32_S (w2[1]); + w2[2] = hc_swap32_S (w2[2]); + w2[3] = hc_swap32_S (w2[3]); + w3[0] = hc_swap32_S (w3[0]); + w3[1] = hc_swap32_S (w3[1]); + w3[2] = hc_swap32_S (w3[2]); + w3[3] = hc_swap32_S (w3[3]); + + blake2s_update_64 (ctx, w0, w1, w2, w3, 64); + } + + w0[0] = w[pos4 + 0]; + w0[1] = w[pos4 + 1]; + w0[2] = w[pos4 + 2]; + w0[3] = w[pos4 + 3]; + w1[0] = w[pos4 + 4]; + w1[1] = w[pos4 + 5]; + w1[2] = w[pos4 + 6]; + w1[3] = w[pos4 + 7]; + w2[0] = w[pos4 + 8]; + w2[1] = w[pos4 + 9]; + w2[2] = w[pos4 + 10]; + w2[3] = w[pos4 + 11]; + w3[0] = w[pos4 + 12]; + w3[1] = w[pos4 + 13]; + w3[2] = w[pos4 + 14]; + w3[3] = w[pos4 + 15]; + + w0[0] = hc_swap32_S (w0[0]); + w0[1] = hc_swap32_S (w0[1]); + w0[2] = hc_swap32_S (w0[2]); + w0[3] = hc_swap32_S (w0[3]); + w1[0] = hc_swap32_S (w1[0]); + w1[1] = hc_swap32_S (w1[1]); + w1[2] = hc_swap32_S (w1[2]); + w1[3] = hc_swap32_S (w1[3]); + w2[0] = hc_swap32_S (w2[0]); + w2[1] = hc_swap32_S (w2[1]); + w2[2] = hc_swap32_S (w2[2]); + w2[3] = hc_swap32_S (w2[3]); + w3[0] = hc_swap32_S (w3[0]); + w3[1] = hc_swap32_S (w3[1]); + w3[2] = hc_swap32_S (w3[2]); + w3[3] = hc_swap32_S (w3[3]); + + blake2s_update_64 (ctx, w0, w1, w2, w3, len - (u32) pos1); +} + + DECLSPEC void blake2s_final (PRIVATE_AS blake2s_ctx_t *ctx) { blake2s_transform (ctx->h, ctx->m, ctx->len, BLAKE2S_FINAL); } + +DECLSPEC void blake2s_hmac_init_64 (PRIVATE_AS blake2s_hmac_ctx_t *ctx, PRIVATE_AS const u32 *w0, PRIVATE_AS const u32 *w1, PRIVATE_AS const u32 *w2, PRIVATE_AS const u32 *w3) +{ + u32 a0[4]; + u32 a1[4]; + u32 a2[4]; + u32 a3[4]; + + // ipad + + a0[0] = w0[0] ^ 0x36363636; + a0[1] = w0[1] ^ 0x36363636; + a0[2] = w0[2] ^ 0x36363636; + a0[3] = w0[3] ^ 0x36363636; + a1[0] = w1[0] ^ 0x36363636; + a1[1] = w1[1] ^ 0x36363636; + a1[2] = w1[2] ^ 0x36363636; + a1[3] = w1[3] ^ 0x36363636; + a2[0] = w2[0] ^ 0x36363636; + a2[1] = w2[1] ^ 0x36363636; + a2[2] = w2[2] ^ 0x36363636; + a2[3] = w2[3] ^ 0x36363636; + a3[0] = w3[0] ^ 0x36363636; + a3[1] = w3[1] ^ 0x36363636; + a3[2] = w3[2] ^ 0x36363636; + a3[3] = w3[3] ^ 0x36363636; + + blake2s_init (&ctx->ipad); + + blake2s_update_64 (&ctx->ipad, a0, a1, a2, a3, 64); + + // opad + + u32 b0[4]; + u32 b1[4]; + u32 b2[4]; + u32 b3[4]; + + b0[0] = w0[0] ^ 0x5c5c5c5c; + b0[1] = w0[1] ^ 0x5c5c5c5c; + b0[2] = w0[2] ^ 0x5c5c5c5c; + b0[3] = w0[3] ^ 0x5c5c5c5c; + b1[0] = w1[0] ^ 0x5c5c5c5c; + b1[1] = w1[1] ^ 0x5c5c5c5c; + b1[2] = w1[2] ^ 0x5c5c5c5c; + b1[3] = w1[3] ^ 0x5c5c5c5c; + b2[0] = w2[0] ^ 0x5c5c5c5c; + b2[1] = w2[1] ^ 0x5c5c5c5c; + b2[2] = w2[2] ^ 0x5c5c5c5c; + b2[3] = w2[3] ^ 0x5c5c5c5c; + b3[0] = w3[0] ^ 0x5c5c5c5c; + b3[1] = w3[1] ^ 0x5c5c5c5c; + b3[2] = w3[2] ^ 0x5c5c5c5c; + b3[3] = w3[3] ^ 0x5c5c5c5c; + + blake2s_init (&ctx->opad); + + blake2s_update_64 (&ctx->opad, b0, b1, b2, b3, 64); +} + +DECLSPEC void blake2s_hmac_init (PRIVATE_AS blake2s_hmac_ctx_t *ctx, PRIVATE_AS const u32 *w, const int len) +{ + u32 w0[4]; + u32 w1[4]; + u32 w2[4]; + u32 w3[4]; + + if (len > 64) + { + blake2s_ctx_t tmp; + + blake2s_init (&tmp); + + blake2s_update (&tmp, w, len); + + blake2s_final (&tmp); + + w0[0] = tmp.h[0]; + w0[1] = tmp.h[1]; + w0[2] = tmp.h[2]; + w0[3] = tmp.h[3]; + w1[0] = tmp.h[4]; + w1[1] = tmp.h[5]; + w1[2] = tmp.h[6]; + w1[3] = tmp.h[7]; + w2[0] = 0; + w2[1] = 0; + w2[2] = 0; + w2[3] = 0; + w3[0] = 0; + w3[1] = 0; + w3[2] = 0; + w3[3] = 0; + } + else + { + w0[0] = w[ 0]; + w0[1] = w[ 1]; + w0[2] = w[ 2]; + w0[3] = w[ 3]; + w1[0] = w[ 4]; + w1[1] = w[ 5]; + w1[2] = w[ 6]; + w1[3] = w[ 7]; + w2[0] = w[ 8]; + w2[1] = w[ 9]; + w2[2] = w[10]; + w2[3] = w[11]; + w3[0] = w[12]; + w3[1] = w[13]; + w3[2] = w[14]; + w3[3] = w[15]; + } + + blake2s_hmac_init_64 (ctx, w0, w1, w2, w3); +} + +DECLSPEC void blake2s_hmac_init_swap (PRIVATE_AS blake2s_hmac_ctx_t *ctx, PRIVATE_AS const u32 *w, const int len) +{ + u32 w0[4]; + u32 w1[4]; + u32 w2[4]; + u32 w3[4]; + + if (len > 64) + { + blake2s_ctx_t tmp; + + blake2s_init (&tmp); + + blake2s_update_swap (&tmp, w, len); + + blake2s_final (&tmp); + + w0[0] = tmp.h[0]; + w0[1] = tmp.h[1]; + w0[2] = tmp.h[2]; + w0[3] = tmp.h[3]; + w1[0] = tmp.h[4]; + w1[1] = tmp.h[5]; + w1[2] = tmp.h[6]; + w1[3] = tmp.h[7]; + w2[0] = 0; + w2[1] = 0; + w2[2] = 0; + w2[3] = 0; + w3[0] = 0; + w3[1] = 0; + w3[2] = 0; + w3[3] = 0; + } + else + { + w0[0] = hc_swap32_S (w[ 0]); + w0[1] = hc_swap32_S (w[ 1]); + w0[2] = hc_swap32_S (w[ 2]); + w0[3] = hc_swap32_S (w[ 3]); + w1[0] = hc_swap32_S (w[ 4]); + w1[1] = hc_swap32_S (w[ 5]); + w1[2] = hc_swap32_S (w[ 6]); + w1[3] = hc_swap32_S (w[ 7]); + w2[0] = hc_swap32_S (w[ 8]); + w2[1] = hc_swap32_S (w[ 9]); + w2[2] = hc_swap32_S (w[10]); + w2[3] = hc_swap32_S (w[11]); + w3[0] = hc_swap32_S (w[12]); + w3[1] = hc_swap32_S (w[13]); + w3[2] = hc_swap32_S (w[14]); + w3[3] = hc_swap32_S (w[15]); + } + + blake2s_hmac_init_64 (ctx, w0, w1, w2, w3); +} + +DECLSPEC void blake2s_hmac_init_global (PRIVATE_AS blake2s_hmac_ctx_t *ctx, GLOBAL_AS const u32 *w, const int len) +{ + u32 w0[4]; + u32 w1[4]; + u32 w2[4]; + u32 w3[4]; + + if (len > 64) + { + blake2s_ctx_t tmp; + + blake2s_init (&tmp); + + blake2s_update_global (&tmp, w, len); + + blake2s_final (&tmp); + + w0[0] = tmp.h[0]; + w0[1] = tmp.h[1]; + w0[2] = tmp.h[2]; + w0[3] = tmp.h[3]; + w1[0] = tmp.h[4]; + w1[1] = tmp.h[5]; + w1[2] = tmp.h[6]; + w1[3] = tmp.h[7]; + w2[0] = 0; + w2[1] = 0; + w2[2] = 0; + w2[3] = 0; + w3[0] = 0; + w3[1] = 0; + w3[2] = 0; + w3[3] = 0; + } + else + { + w0[0] = w[ 0]; + w0[1] = w[ 1]; + w0[2] = w[ 2]; + w0[3] = w[ 3]; + w1[0] = w[ 4]; + w1[1] = w[ 5]; + w1[2] = w[ 6]; + w1[3] = w[ 7]; + w2[0] = w[ 8]; + w2[1] = w[ 9]; + w2[2] = w[10]; + w2[3] = w[11]; + w3[0] = w[12]; + w3[1] = w[13]; + w3[2] = w[14]; + w3[3] = w[15]; + } + + blake2s_hmac_init_64 (ctx, w0, w1, w2, w3); +} + +DECLSPEC void blake2s_hmac_init_global_swap (PRIVATE_AS blake2s_hmac_ctx_t *ctx, GLOBAL_AS const u32 *w, const int len) +{ + u32 w0[4]; + u32 w1[4]; + u32 w2[4]; + u32 w3[4]; + + if (len > 64) + { + blake2s_ctx_t tmp; + + blake2s_init (&tmp); + + blake2s_update_global_swap (&tmp, w, len); + + blake2s_final (&tmp); + + w0[0] = tmp.h[0]; + w0[1] = tmp.h[1]; + w0[2] = tmp.h[2]; + w0[3] = tmp.h[3]; + w1[0] = tmp.h[4]; + w1[1] = tmp.h[5]; + w1[2] = tmp.h[6]; + w1[3] = tmp.h[7]; + w2[0] = 0; + w2[1] = 0; + w2[2] = 0; + w2[3] = 0; + w3[0] = 0; + w3[1] = 0; + w3[2] = 0; + w3[3] = 0; + } + else + { + w0[0] = hc_swap32_S (w[ 0]); + w0[1] = hc_swap32_S (w[ 1]); + w0[2] = hc_swap32_S (w[ 2]); + w0[3] = hc_swap32_S (w[ 3]); + w1[0] = hc_swap32_S (w[ 4]); + w1[1] = hc_swap32_S (w[ 5]); + w1[2] = hc_swap32_S (w[ 6]); + w1[3] = hc_swap32_S (w[ 7]); + w2[0] = hc_swap32_S (w[ 8]); + w2[1] = hc_swap32_S (w[ 9]); + w2[2] = hc_swap32_S (w[10]); + w2[3] = hc_swap32_S (w[11]); + w3[0] = hc_swap32_S (w[12]); + w3[1] = hc_swap32_S (w[13]); + w3[2] = hc_swap32_S (w[14]); + w3[3] = hc_swap32_S (w[15]); + } + + blake2s_hmac_init_64 (ctx, w0, w1, w2, w3); +} + +DECLSPEC void blake2s_hmac_update_64 (PRIVATE_AS blake2s_hmac_ctx_t *ctx, PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w2, PRIVATE_AS u32 *w3, const int len) +{ + blake2s_update_64 (&ctx->ipad, w0, w1, w2, w3, len); +} + +DECLSPEC void blake2s_hmac_update (PRIVATE_AS blake2s_hmac_ctx_t *ctx, PRIVATE_AS const u32 *w, const int len) +{ + blake2s_update (&ctx->ipad, w, len); +} + +DECLSPEC void blake2s_hmac_update_swap (PRIVATE_AS blake2s_hmac_ctx_t *ctx, PRIVATE_AS const u32 *w, const int len) +{ + blake2s_update_swap (&ctx->ipad, w, len); +} + +DECLSPEC void blake2s_hmac_update_global (PRIVATE_AS blake2s_hmac_ctx_t *ctx, GLOBAL_AS const u32 *w, const int len) +{ + blake2s_update_global (&ctx->ipad, w, len); +} + +DECLSPEC void blake2s_hmac_update_global_swap (PRIVATE_AS blake2s_hmac_ctx_t *ctx, GLOBAL_AS const u32 *w, const int len) +{ + blake2s_update_global_swap (&ctx->ipad, w, len); +} + +DECLSPEC void blake2s_hmac_final (PRIVATE_AS blake2s_hmac_ctx_t *ctx) +{ + blake2s_final (&ctx->ipad); + + for (int n = 0; n < 8; n += 1) + { + blake2s_update(&ctx->opad, &ctx->ipad.h[n], 4); + } + + ctx->opad.m[8] = 0; + ctx->opad.m[9] = 0; + ctx->opad.m[10]= 0; + ctx->opad.m[11]= 0; + ctx->opad.m[12]= 0; + ctx->opad.m[13]= 0; + ctx->opad.m[14]= 0; + ctx->opad.m[15]= 0; + + blake2s_final (&ctx->opad); +} + DECLSPEC void blake2s_transform_vector (PRIVATE_AS u32x *h, PRIVATE_AS const u32x *m, const u32x len, const u32 f0) { const u32x t0 = len; @@ -452,6 +960,7 @@ DECLSPEC void blake2s_transform_vector (PRIVATE_AS u32x *h, PRIVATE_AS const u32 v[14] = BLAKE2S_IV_06 ^ f0; v[15] = BLAKE2S_IV_07; // ^ f1; + BLAKE2S_ROUND_VECTOR ( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15); BLAKE2S_ROUND_VECTOR (14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3); BLAKE2S_ROUND_VECTOR (11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4); @@ -700,3 +1209,152 @@ DECLSPEC void blake2s_final_vector (PRIVATE_AS blake2s_ctx_vector_t *ctx) { blake2s_transform_vector (ctx->h, ctx->m, (u32x) ctx->len, BLAKE2S_FINAL); } + +DECLSPEC void blake2s_hmac_init_vector_64 (PRIVATE_AS blake2s_hmac_ctx_vector_t *ctx, PRIVATE_AS const u32x *w0, PRIVATE_AS const u32x *w1, PRIVATE_AS const u32x *w2, PRIVATE_AS const u32x *w3) +{ + u32x a0[4]; + u32x a1[4]; + u32x a2[4]; + u32x a3[4]; + + // ipad + + a0[0] = w0[0] ^ 0x36363636; + a0[1] = w0[1] ^ 0x36363636; + a0[2] = w0[2] ^ 0x36363636; + a0[3] = w0[3] ^ 0x36363636; + a1[0] = w1[0] ^ 0x36363636; + a1[1] = w1[1] ^ 0x36363636; + a1[2] = w1[2] ^ 0x36363636; + a1[3] = w1[3] ^ 0x36363636; + a2[0] = w2[0] ^ 0x36363636; + a2[1] = w2[1] ^ 0x36363636; + a2[2] = w2[2] ^ 0x36363636; + a2[3] = w2[3] ^ 0x36363636; + a3[0] = w3[0] ^ 0x36363636; + a3[1] = w3[1] ^ 0x36363636; + a3[2] = w3[2] ^ 0x36363636; + a3[3] = w3[3] ^ 0x36363636; + + blake2s_init_vector (&ctx->ipad); + + blake2s_update_vector_64 (&ctx->ipad, a0, a1, a2, a3, 64); + + // opad + + u32x b0[4]; + u32x b1[4]; + u32x b2[4]; + u32x b3[4]; + + b0[0] = w0[0] ^ 0x5c5c5c5c; + b0[1] = w0[1] ^ 0x5c5c5c5c; + b0[2] = w0[2] ^ 0x5c5c5c5c; + b0[3] = w0[3] ^ 0x5c5c5c5c; + b1[0] = w1[0] ^ 0x5c5c5c5c; + b1[1] = w1[1] ^ 0x5c5c5c5c; + b1[2] = w1[2] ^ 0x5c5c5c5c; + b1[3] = w1[3] ^ 0x5c5c5c5c; + b2[0] = w2[0] ^ 0x5c5c5c5c; + b2[1] = w2[1] ^ 0x5c5c5c5c; + b2[2] = w2[2] ^ 0x5c5c5c5c; + b2[3] = w2[3] ^ 0x5c5c5c5c; + b3[0] = w3[0] ^ 0x5c5c5c5c; + b3[1] = w3[1] ^ 0x5c5c5c5c; + b3[2] = w3[2] ^ 0x5c5c5c5c; + b3[3] = w3[3] ^ 0x5c5c5c5c; + + blake2s_init_vector (&ctx->opad); + + blake2s_update_vector_64 (&ctx->opad, b0, b1, b2, b3, 64); +} + + +DECLSPEC void blake2s_hmac_init_vector (PRIVATE_AS blake2s_hmac_ctx_vector_t *ctx, PRIVATE_AS const u32x *w, const int len) +{ + u32x w0[4]; + u32x w1[4]; + u32x w2[4]; + u32x w3[4]; + + if (len > 64) + { + blake2s_ctx_vector_t tmp; + + blake2s_init_vector (&tmp); + + blake2s_update_vector (&tmp, w, len); + + blake2s_final_vector (&tmp); + + w0[0] = tmp.h[0]; + w0[1] = tmp.h[1]; + w0[2] = tmp.h[2]; + w0[3] = tmp.h[3]; + w1[0] = tmp.h[4]; + w1[1] = tmp.h[5]; + w1[2] = tmp.h[6]; + w1[3] = tmp.h[7]; + w2[0] = 0; + w2[1] = 0; + w2[2] = 0; + w2[3] = 0; + w3[0] = 0; + w3[1] = 0; + w3[2] = 0; + w3[3] = 0; + } + else + { + w0[0] = w[ 0]; + w0[1] = w[ 1]; + w0[2] = w[ 2]; + w0[3] = w[ 3]; + w1[0] = w[ 4]; + w1[1] = w[ 5]; + w1[2] = w[ 6]; + w1[3] = w[ 7]; + w2[0] = w[ 8]; + w2[1] = w[ 9]; + w2[2] = w[10]; + w2[3] = w[11]; + w3[0] = w[12]; + w3[1] = w[13]; + w3[2] = w[14]; + w3[3] = w[15]; + } + + blake2s_hmac_init_vector_64 (ctx, w0, w1, w2, w3); +} + +DECLSPEC void blake2s_hmac_update_vector_64 (PRIVATE_AS blake2s_hmac_ctx_vector_t *ctx, PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE_AS u32x *w2, PRIVATE_AS u32x *w3, const int len) +{ + blake2s_update_vector_64 (&ctx->ipad, w0, w1, w2, w3, len); +} + +DECLSPEC void blake2s_hmac_update_vector (PRIVATE_AS blake2s_hmac_ctx_vector_t *ctx, PRIVATE_AS const u32x *w, const int len) +{ + blake2s_update_vector (&ctx->ipad, w, len); +} + +DECLSPEC void blake2s_hmac_final_vector (PRIVATE_AS blake2s_hmac_ctx_vector_t *ctx) +{ + + blake2s_final_vector (&ctx->ipad); + + for (int n = 0; n < 8; n += 1) + { + blake2s_update_vector(&ctx->opad, &ctx->ipad.h[n], 4); + } + + ctx->opad.m[8] = 0; + ctx->opad.m[9] = 0; + ctx->opad.m[10]= 0; + ctx->opad.m[11]= 0; + ctx->opad.m[12]= 0; + ctx->opad.m[13]= 0; + ctx->opad.m[14]= 0; + ctx->opad.m[15]= 0; + + blake2s_final_vector (&ctx->opad); +} diff --git a/OpenCL/inc_hash_blake2s.h b/OpenCL/inc_hash_blake2s.h index 63f2942f1..9a13a59c7 100644 --- a/OpenCL/inc_hash_blake2s.h +++ b/OpenCL/inc_hash_blake2s.h @@ -72,6 +72,14 @@ typedef struct blake2s_ctx } blake2s_ctx_t; +typedef struct blake2s_hmac_ctx +{ + blake2s_ctx_t ipad; + blake2s_ctx_t opad; + +} blake2s_hmac_ctx_t; + + typedef struct blake2s_ctx_vector { u32x m[16]; // buffer @@ -81,16 +89,45 @@ typedef struct blake2s_ctx_vector } blake2s_ctx_vector_t; +typedef struct blake2s_hmac_ctx_vector +{ + blake2s_ctx_vector_t ipad; + blake2s_ctx_vector_t opad; + +} blake2s_hmac_ctx_vector_t; + + + + DECLSPEC void blake2s_transform (PRIVATE_AS u32 *h, PRIVATE_AS const u32 *m, const int len, const u32 f0); DECLSPEC void blake2s_init (PRIVATE_AS blake2s_ctx_t *ctx); DECLSPEC void blake2s_update (PRIVATE_AS blake2s_ctx_t *ctx, PRIVATE_AS const u32 *w, const int len); DECLSPEC void blake2s_update_global (PRIVATE_AS blake2s_ctx_t *ctx, GLOBAL_AS const u32 *w, const int len); +DECLSPEC void blake2s_update_global_swap (PRIVATE_AS blake2s_ctx_t *ctx, GLOBAL_AS const u32 *w, const int len); DECLSPEC void blake2s_final (PRIVATE_AS blake2s_ctx_t *ctx); +DECLSPEC void blake2s_hmac_init_64 (PRIVATE_AS blake2s_hmac_ctx_t *ctx, PRIVATE_AS const u32 *w0, PRIVATE_AS const u32 *w1, PRIVATE_AS const u32 *w2, PRIVATE_AS const u32 *w3); +DECLSPEC void blake2s_hmac_init (PRIVATE_AS blake2s_hmac_ctx_t *ctx, PRIVATE_AS const u32 *w, const int len); +DECLSPEC void blake2s_hmac_init_swap (PRIVATE_AS blake2s_hmac_ctx_t *ctx, PRIVATE_AS const u32 *w, const int len); +DECLSPEC void blake2s_hmac_init_global (PRIVATE_AS blake2s_hmac_ctx_t *ctx, GLOBAL_AS const u32 *w, const int len); +DECLSPEC void blake2s_hmac_init_global_swap (PRIVATE_AS blake2s_hmac_ctx_t *ctx, GLOBAL_AS const u32 *w, const int len); +DECLSPEC void blake2s_hmac_update_64 (PRIVATE_AS blake2s_hmac_ctx_t *ctx, PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w2, PRIVATE_AS u32 *w3, const int len); +DECLSPEC void blake2s_hmac_update (PRIVATE_AS blake2s_hmac_ctx_t *ctx, PRIVATE_AS const u32 *w, const int len); +DECLSPEC void blake2s_hmac_update_swap (PRIVATE_AS blake2s_hmac_ctx_t *ctx, PRIVATE_AS const u32 *w, const int len); +DECLSPEC void blake2s_hmac_update_global (PRIVATE_AS blake2s_hmac_ctx_t *ctx, GLOBAL_AS const u32 *w, const int len); +DECLSPEC void blake2s_hmac_update_global_swap (PRIVATE_AS blake2s_hmac_ctx_t *ctx, GLOBAL_AS const u32 *w, const int len); +DECLSPEC void blake2s_hmac_final (PRIVATE_AS blake2s_hmac_ctx_t *ctx); + DECLSPEC void blake2s_transform_vector (PRIVATE_AS u32x *h, PRIVATE_AS const u32x *m, const u32x len, const u32 f0); DECLSPEC void blake2s_init_vector (PRIVATE_AS blake2s_ctx_vector_t *ctx); DECLSPEC void blake2s_init_vector_from_scalar (PRIVATE_AS blake2s_ctx_vector_t *ctx, PRIVATE_AS blake2s_ctx_t *ctx0); DECLSPEC void blake2s_update_vector (PRIVATE_AS blake2s_ctx_vector_t *ctx, PRIVATE_AS const u32x *w, const int len); DECLSPEC void blake2s_final_vector (PRIVATE_AS blake2s_ctx_vector_t *ctx); +DECLSPEC void blake2s_hmac_init_vector_64 (PRIVATE_AS blake2s_hmac_ctx_vector_t *ctx, PRIVATE_AS const u32x *w0, PRIVATE_AS const u32x *w1, PRIVATE_AS const u32x *w2, PRIVATE_AS const u32x *w3); +DECLSPEC void blake2s_hmac_init_vector (PRIVATE_AS blake2s_hmac_ctx_vector_t *ctx, PRIVATE_AS const u32x *w, const int len); +DECLSPEC void blake2s_hmac_update_vector_64 (PRIVATE_AS blake2s_hmac_ctx_vector_t *ctx, PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE_AS u32x *w2, PRIVATE_AS u32x *w3, const int len); +DECLSPEC void blake2s_hmac_update_vector (PRIVATE_AS blake2s_hmac_ctx_vector_t *ctx, PRIVATE_AS const u32x *w, const int len); +DECLSPEC void blake2s_hmac_final_vector (PRIVATE_AS blake2s_hmac_ctx_vector_t *ctx); + #endif // INC_HASH_BLAKE2S_H diff --git a/OpenCL/inc_hash_scrypt.cl b/OpenCL/inc_hash_scrypt.cl new file mode 100644 index 000000000..45c054534 --- /dev/null +++ b/OpenCL/inc_hash_scrypt.cl @@ -0,0 +1,511 @@ +/** + * Author......: See docs/credits.txt + * License.....: MIT + */ + +#include "inc_vendor.h" +#include "inc_types.h" +#include "inc_platform.h" +#include "inc_common.h" +#include "inc_hash_scrypt.h" + +#if SCRYPT_R > 1 +DECLSPEC void scrypt_shuffle (PRIVATE_AS u32 *TI) +{ + u32 TT[STATE_CNT4 / 2]; + + for (int dst_off = 0, src_off = SALSA_CNT4; src_off < STATE_CNT4; dst_off += SALSA_CNT4, src_off += SALSA_CNT4 * 2) + { + for (int j = 0; j < SALSA_CNT4; j++) TT[dst_off + j] = TI[src_off + j]; + } + + for (int dst_off = SALSA_CNT4, src_off = SALSA_CNT4 * 2; src_off < STATE_CNT4; dst_off += SALSA_CNT4, src_off += SALSA_CNT4 * 2) + { + for (int j = 0; j < SALSA_CNT4; j++) TI[dst_off + j] = TI[src_off + j]; + } + + for (int dst_off = STATE_CNT4 / 2, src_off = 0; dst_off < STATE_CNT4; dst_off += SALSA_CNT4, src_off += SALSA_CNT4) + { + for (int j = 0; j < SALSA_CNT4; j++) TI[dst_off + j] = TT[src_off + j]; + } +} +#endif + +DECLSPEC void salsa_r (PRIVATE_AS u32 *TI) +{ + u32 TT[16]; + + for (int j = 0; j < SALSA_CNT4; j++) TT[j] = TI[STATE_CNT4 - 16 + j]; + + for (int i = 0; i < STATE_CNT4; i += SALSA_CNT4) + { + for (int j = 0; j < SALSA_CNT4; j++) TT[j] ^= TI[i + j]; + + for (int j = 0; j < SALSA_CNT4; j++) TI[i + j] = TT[j]; + + for (int r = 0; r < 4; r++) + { + u32 t0, t1, t2, t3; + + t0 = TT[ 0] + TT[12]; + t1 = TT[ 1] + TT[13]; + t2 = TT[ 2] + TT[14]; + t3 = TT[ 3] + TT[15]; + TT[ 4] ^= hc_rotl32_S (t0, 7); + TT[ 5] ^= hc_rotl32_S (t1, 7); + TT[ 6] ^= hc_rotl32_S (t2, 7); + TT[ 7] ^= hc_rotl32_S (t3, 7); + + t0 = TT[ 4] + TT[ 0]; + t1 = TT[ 5] + TT[ 1]; + t2 = TT[ 6] + TT[ 2]; + t3 = TT[ 7] + TT[ 3]; + TT[ 8] ^= hc_rotl32_S (t0, 9); + TT[ 9] ^= hc_rotl32_S (t1, 9); + TT[10] ^= hc_rotl32_S (t2, 9); + TT[11] ^= hc_rotl32_S (t3, 9); + + t0 = TT[ 8] + TT[ 4]; + t1 = TT[ 9] + TT[ 5]; + t2 = TT[10] + TT[ 6]; + t3 = TT[11] + TT[ 7]; + TT[12] ^= hc_rotl32_S (t0, 13); + TT[13] ^= hc_rotl32_S (t1, 13); + TT[14] ^= hc_rotl32_S (t2, 13); + TT[15] ^= hc_rotl32_S (t3, 13); + + t0 = TT[12] + TT[ 8]; + t1 = TT[13] + TT[ 9]; + t2 = TT[14] + TT[10]; + t3 = TT[15] + TT[11]; + TT[ 0] ^= hc_rotl32_S (t0, 18); + TT[ 1] ^= hc_rotl32_S (t1, 18); + TT[ 2] ^= hc_rotl32_S (t2, 18); + TT[ 3] ^= hc_rotl32_S (t3, 18); + + t0 = TT[ 4]; TT[ 4] = TT[ 7]; TT[ 7] = TT[ 6]; TT[ 6] = TT[ 5]; TT[ 5] = t0; + t0 = TT[ 8]; TT[ 8] = TT[10]; TT[10] = t0; + t0 = TT[ 9]; TT[ 9] = TT[11]; TT[11] = t0; + t0 = TT[12]; TT[12] = TT[13]; TT[13] = TT[14]; TT[14] = TT[15]; TT[15] = t0; + + t0 = TT[ 0] + TT[ 4]; + t1 = TT[ 1] + TT[ 5]; + t2 = TT[ 2] + TT[ 6]; + t3 = TT[ 3] + TT[ 7]; + TT[12] ^= hc_rotl32_S (t0, 7); + TT[13] ^= hc_rotl32_S (t1, 7); + TT[14] ^= hc_rotl32_S (t2, 7); + TT[15] ^= hc_rotl32_S (t3, 7); + + t0 = TT[12] + TT[ 0]; + t1 = TT[13] + TT[ 1]; + t2 = TT[14] + TT[ 2]; + t3 = TT[15] + TT[ 3]; + TT[ 8] ^= hc_rotl32_S (t0, 9); + TT[ 9] ^= hc_rotl32_S (t1, 9); + TT[10] ^= hc_rotl32_S (t2, 9); + TT[11] ^= hc_rotl32_S (t3, 9); + + t0 = TT[ 8] + TT[12]; + t1 = TT[ 9] + TT[13]; + t2 = TT[10] + TT[14]; + t3 = TT[11] + TT[15]; + TT[ 4] ^= hc_rotl32_S (t0, 13); + TT[ 5] ^= hc_rotl32_S (t1, 13); + TT[ 6] ^= hc_rotl32_S (t2, 13); + TT[ 7] ^= hc_rotl32_S (t3, 13); + + t0 = TT[ 4] + TT[ 8]; + t1 = TT[ 5] + TT[ 9]; + t2 = TT[ 6] + TT[10]; + t3 = TT[ 7] + TT[11]; + TT[ 0] ^= hc_rotl32_S (t0, 18); + TT[ 1] ^= hc_rotl32_S (t1, 18); + TT[ 2] ^= hc_rotl32_S (t2, 18); + TT[ 3] ^= hc_rotl32_S (t3, 18); + + t0 = TT[ 4]; TT[ 4] = TT[ 5]; TT[ 5] = TT[ 6]; TT[ 6] = TT[ 7]; TT[ 7] = t0; + t0 = TT[ 8]; TT[ 8] = TT[10]; TT[10] = t0; + t0 = TT[ 9]; TT[ 9] = TT[11]; TT[11] = t0; + t0 = TT[15]; TT[15] = TT[14]; TT[14] = TT[13]; TT[13] = TT[12]; TT[12] = t0; + } + + for (int j = 0; j < SALSA_CNT4; j++) TT[j] += TI[i + j]; + + for (int j = 0; j < SALSA_CNT4; j++) TI[i + j] = TT[j]; + } +} + +DECLSPEC void scrypt_smix_init (GLOBAL_AS u32 *P, PRIVATE_AS u32 *X, GLOBAL_AS void *V0, GLOBAL_AS void *V1, GLOBAL_AS void *V2, GLOBAL_AS void *V3, const u32 gid, const u32 lid, const u32 lsz, const u32 bid) +{ + const u32 ySIZE = SCRYPT_N >> SCRYPT_TMTO; + const u32 zSIZE = STATE_CNT44; + + const u32 xd4 = bid / 4; + const u32 xm4 = bid & 3; + + PRIVATE_AS uint4 *X4 = (PRIVATE_AS uint4 *) X; + + GLOBAL_AS uint4 *V; + + switch (xm4) + { + case 0: V = (GLOBAL_AS uint4 *) V0; break; + case 1: V = (GLOBAL_AS uint4 *) V1; break; + case 2: V = (GLOBAL_AS uint4 *) V2; break; + case 3: V = (GLOBAL_AS uint4 *) V3; break; + } + + GLOBAL_AS uint4 *Vx = V + (xd4 * lsz * ySIZE * zSIZE) + (lid * ySIZE * zSIZE); + + for (u32 i = 0; i < STATE_CNT4; i++) X[i] = P[i]; + + for (u32 y = 0; y < ySIZE; y++) + { + GLOBAL_AS uint4 *Vxx = Vx + (y * zSIZE); + + for (u32 z = 0; z < zSIZE; z++) *Vxx++ = X4[z]; + + for (u32 i = 0; i < (1 << SCRYPT_TMTO); i++) + { + salsa_r (X); + + #if SCRYPT_R > 1 + scrypt_shuffle (X); + #endif + } + } + + for (u32 i = 0; i < STATE_CNT4; i++) P[i] = X[i]; +} + +DECLSPEC void scrypt_smix_loop (GLOBAL_AS u32 *P, PRIVATE_AS u32 *X, PRIVATE_AS u32 *T, GLOBAL_AS void *V0, GLOBAL_AS void *V1, GLOBAL_AS void *V2, GLOBAL_AS void *V3, const u32 gid, const u32 lid, const u32 lsz, const u32 bid) +{ + const u32 ySIZE = SCRYPT_N >> SCRYPT_TMTO; + const u32 zSIZE = STATE_CNT44; + + const u32 xd4 = bid / 4; + const u32 xm4 = bid & 3; + + PRIVATE_AS uint4 *X4 = (PRIVATE_AS uint4 *) X; + PRIVATE_AS uint4 *T4 = (PRIVATE_AS uint4 *) T; + + GLOBAL_AS uint4 *V; + + switch (xm4) + { + case 0: V = (GLOBAL_AS uint4 *) V0; break; + case 1: V = (GLOBAL_AS uint4 *) V1; break; + case 2: V = (GLOBAL_AS uint4 *) V2; break; + case 3: V = (GLOBAL_AS uint4 *) V3; break; + } + + GLOBAL_AS uint4 *Vx = V + (xd4 * lsz * ySIZE * zSIZE) + (lid * ySIZE * zSIZE); + + for (u32 i = 0; i < STATE_CNT4; i++) X[i] = P[i]; + + // note: max 1024 iterations = forced -u 2048 + + const u32 N_max = (SCRYPT_N < 2048) ? SCRYPT_N : 2048; + + for (u32 N_pos = 0; N_pos < N_max; N_pos++) + { + const u32 k = X4[zSIZE - 4].x & (SCRYPT_N - 1); + + const u32 y = k >> SCRYPT_TMTO; + + const u32 km = k - (y << SCRYPT_TMTO); + + GLOBAL_AS uint4 *Vxx = Vx + (y * zSIZE); + + for (u32 z = 0; z < zSIZE; z++) T4[z] = *Vxx++; + + for (u32 i = 0; i < km; i++) + { + salsa_r (T); + + #if SCRYPT_R > 1 + scrypt_shuffle (T); + #endif + } + + for (u32 z = 0; z < zSIZE; z++) X4[z] = X4[z] ^ T4[z]; + + salsa_r (X); + + #if SCRYPT_R > 1 + scrypt_shuffle (X); + #endif + } + + for (u32 i = 0; i < STATE_CNT4; i++) P[i] = X[i]; +} + +DECLSPEC void scrypt_blockmix_in (GLOBAL_AS u32 *in_buf, GLOBAL_AS u32 *out_buf, const int out_len) +{ + for (int i = 0, j = 0; i < out_len; i += SALSA_SZ, j += SALSA_CNT4) + { + u32 X[SALSA_CNT4]; + + X[ 0] = in_buf[j + 0]; + X[ 1] = in_buf[j + 5]; + X[ 2] = in_buf[j + 10]; + X[ 3] = in_buf[j + 15]; + X[ 4] = in_buf[j + 4]; + X[ 5] = in_buf[j + 9]; + X[ 6] = in_buf[j + 14]; + X[ 7] = in_buf[j + 3]; + X[ 8] = in_buf[j + 8]; + X[ 9] = in_buf[j + 13]; + X[10] = in_buf[j + 2]; + X[11] = in_buf[j + 7]; + X[12] = in_buf[j + 12]; + X[13] = in_buf[j + 1]; + X[14] = in_buf[j + 6]; + X[15] = in_buf[j + 11]; + + out_buf[j + 0] = X[ 0]; + out_buf[j + 1] = X[ 1]; + out_buf[j + 2] = X[ 2]; + out_buf[j + 3] = X[ 3]; + out_buf[j + 4] = X[ 4]; + out_buf[j + 5] = X[ 5]; + out_buf[j + 6] = X[ 6]; + out_buf[j + 7] = X[ 7]; + out_buf[j + 8] = X[ 8]; + out_buf[j + 9] = X[ 9]; + out_buf[j + 10] = X[10]; + out_buf[j + 11] = X[11]; + out_buf[j + 12] = X[12]; + out_buf[j + 13] = X[13]; + out_buf[j + 14] = X[14]; + out_buf[j + 15] = X[15]; + } +} + +DECLSPEC void scrypt_blockmix_out (GLOBAL_AS u32 *in_buf, GLOBAL_AS u32 *out_buf, const int out_len) +{ + for (int i = 0, j = 0; i < out_len; i += SALSA_SZ, j += SALSA_CNT4) + { + u32 T[SALSA_CNT4]; + + T[ 0] = in_buf[j + 0]; + T[ 1] = in_buf[j + 13]; + T[ 2] = in_buf[j + 10]; + T[ 3] = in_buf[j + 7]; + T[ 4] = in_buf[j + 4]; + T[ 5] = in_buf[j + 1]; + T[ 6] = in_buf[j + 14]; + T[ 7] = in_buf[j + 11]; + T[ 8] = in_buf[j + 8]; + T[ 9] = in_buf[j + 5]; + T[10] = in_buf[j + 2]; + T[11] = in_buf[j + 15]; + T[12] = in_buf[j + 12]; + T[13] = in_buf[j + 9]; + T[14] = in_buf[j + 6]; + T[15] = in_buf[j + 3]; + + out_buf[j + 0] = T[ 0]; + out_buf[j + 1] = T[ 1]; + out_buf[j + 2] = T[ 2]; + out_buf[j + 3] = T[ 3]; + out_buf[j + 4] = T[ 4]; + out_buf[j + 5] = T[ 5]; + out_buf[j + 6] = T[ 6]; + out_buf[j + 7] = T[ 7]; + out_buf[j + 8] = T[ 8]; + out_buf[j + 9] = T[ 9]; + out_buf[j + 10] = T[10]; + out_buf[j + 11] = T[11]; + out_buf[j + 12] = T[12]; + out_buf[j + 13] = T[13]; + out_buf[j + 14] = T[14]; + out_buf[j + 15] = T[15]; + } +} + +DECLSPEC void scrypt_pbkdf2_body_pp (PRIVATE_AS sha256_hmac_ctx_t *sha256_hmac_ctx, PRIVATE_AS u32 *out_buf, const int out_len) +{ + for (int i = 0, j = 1, k = 0; i < out_len; i += 32, j += 1, k += 8) + { + sha256_hmac_ctx_t sha256_hmac_ctx2 = *sha256_hmac_ctx; + + u32 w0[4]; + u32 w1[4]; + u32 w2[4]; + u32 w3[4]; + + w0[0] = j; + w0[1] = 0; + w0[2] = 0; + w0[3] = 0; + w1[0] = 0; + w1[1] = 0; + w1[2] = 0; + w1[3] = 0; + w2[0] = 0; + w2[1] = 0; + w2[2] = 0; + w2[3] = 0; + w3[0] = 0; + w3[1] = 0; + w3[2] = 0; + w3[3] = 0; + + sha256_hmac_update_64 (&sha256_hmac_ctx2, w0, w1, w2, w3, 4); + + sha256_hmac_final (&sha256_hmac_ctx2); + + // this will not work if user specifies output length not a multiple of 4 + // probably never happens... + // let's hope the compiler will auto optimize this since out_len is very likely + // a constant at caller level + + if (out_len >= (i + 4)) out_buf[k + 0] = hc_swap32_S (sha256_hmac_ctx2.opad.h[0]); + if (out_len >= (i + 8)) out_buf[k + 1] = hc_swap32_S (sha256_hmac_ctx2.opad.h[1]); + if (out_len >= (i + 12)) out_buf[k + 2] = hc_swap32_S (sha256_hmac_ctx2.opad.h[2]); + if (out_len >= (i + 16)) out_buf[k + 3] = hc_swap32_S (sha256_hmac_ctx2.opad.h[3]); + if (out_len >= (i + 20)) out_buf[k + 4] = hc_swap32_S (sha256_hmac_ctx2.opad.h[4]); + if (out_len >= (i + 24)) out_buf[k + 5] = hc_swap32_S (sha256_hmac_ctx2.opad.h[5]); + if (out_len >= (i + 28)) out_buf[k + 6] = hc_swap32_S (sha256_hmac_ctx2.opad.h[6]); + if (out_len >= (i + 32)) out_buf[k + 7] = hc_swap32_S (sha256_hmac_ctx2.opad.h[7]); + } +} + +DECLSPEC void scrypt_pbkdf2_body_pg (PRIVATE_AS sha256_hmac_ctx_t *sha256_hmac_ctx, GLOBAL_AS u32 *out_buf, const int out_len) +{ + for (int i = 0, j = 1, k = 0; i < out_len; i += 32, j += 1, k += 8) + { + sha256_hmac_ctx_t sha256_hmac_ctx2 = *sha256_hmac_ctx; + + u32 w0[4]; + u32 w1[4]; + u32 w2[4]; + u32 w3[4]; + + w0[0] = j; + w0[1] = 0; + w0[2] = 0; + w0[3] = 0; + w1[0] = 0; + w1[1] = 0; + w1[2] = 0; + w1[3] = 0; + w2[0] = 0; + w2[1] = 0; + w2[2] = 0; + w2[3] = 0; + w3[0] = 0; + w3[1] = 0; + w3[2] = 0; + w3[3] = 0; + + sha256_hmac_update_64 (&sha256_hmac_ctx2, w0, w1, w2, w3, 4); + + sha256_hmac_final (&sha256_hmac_ctx2); + + // this will not work if user specifies output length not a multiple of 4 + // probably never happens... + // let's hope the compiler will auto optimize this since out_len is very likely + // a constant at caller level + + if (out_len >= (i + 4)) out_buf[k + 0] = hc_swap32_S (sha256_hmac_ctx2.opad.h[0]); + if (out_len >= (i + 8)) out_buf[k + 1] = hc_swap32_S (sha256_hmac_ctx2.opad.h[1]); + if (out_len >= (i + 12)) out_buf[k + 2] = hc_swap32_S (sha256_hmac_ctx2.opad.h[2]); + if (out_len >= (i + 16)) out_buf[k + 3] = hc_swap32_S (sha256_hmac_ctx2.opad.h[3]); + if (out_len >= (i + 20)) out_buf[k + 4] = hc_swap32_S (sha256_hmac_ctx2.opad.h[4]); + if (out_len >= (i + 24)) out_buf[k + 5] = hc_swap32_S (sha256_hmac_ctx2.opad.h[5]); + if (out_len >= (i + 28)) out_buf[k + 6] = hc_swap32_S (sha256_hmac_ctx2.opad.h[6]); + if (out_len >= (i + 32)) out_buf[k + 7] = hc_swap32_S (sha256_hmac_ctx2.opad.h[7]); + } +} + +DECLSPEC void scrypt_pbkdf2_ppp (PRIVATE_AS const u32 *pw_buf, const int pw_len, PRIVATE_AS const u32 *salt_buf, const int salt_len, PRIVATE_AS u32 *out_buf, const int out_len) +{ + sha256_hmac_ctx_t sha256_hmac_ctx; + + sha256_hmac_init_swap (&sha256_hmac_ctx, pw_buf, pw_len); + + sha256_hmac_update_swap (&sha256_hmac_ctx, salt_buf, salt_len); + + scrypt_pbkdf2_body_pp (&sha256_hmac_ctx, out_buf, out_len); +} + +DECLSPEC void scrypt_pbkdf2_pgp (PRIVATE_AS const u32 *pw_buf, const int pw_len, GLOBAL_AS const u32 *salt_buf, const int salt_len, PRIVATE_AS u32 *out_buf, const int out_len) +{ + sha256_hmac_ctx_t sha256_hmac_ctx; + + sha256_hmac_init_swap (&sha256_hmac_ctx, pw_buf, pw_len); + + sha256_hmac_update_global_swap (&sha256_hmac_ctx, salt_buf, salt_len); + + scrypt_pbkdf2_body_pp (&sha256_hmac_ctx, out_buf, out_len); +} + +DECLSPEC void scrypt_pbkdf2_gpp (GLOBAL_AS const u32 *pw_buf, const int pw_len, PRIVATE_AS const u32 *salt_buf, const int salt_len, PRIVATE_AS u32 *out_buf, const int out_len) +{ + sha256_hmac_ctx_t sha256_hmac_ctx; + + sha256_hmac_init_global_swap (&sha256_hmac_ctx, pw_buf, pw_len); + + sha256_hmac_update_swap (&sha256_hmac_ctx, salt_buf, salt_len); + + scrypt_pbkdf2_body_pp (&sha256_hmac_ctx, out_buf, out_len); +} + +DECLSPEC void scrypt_pbkdf2_ggp (GLOBAL_AS const u32 *pw_buf, const int pw_len, GLOBAL_AS const u32 *salt_buf, const int salt_len, PRIVATE_AS u32 *out_buf, const int out_len) +{ + sha256_hmac_ctx_t sha256_hmac_ctx; + + sha256_hmac_init_global_swap (&sha256_hmac_ctx, pw_buf, pw_len); + + sha256_hmac_update_global_swap (&sha256_hmac_ctx, salt_buf, salt_len); + + scrypt_pbkdf2_body_pp (&sha256_hmac_ctx, out_buf, out_len); +} + +DECLSPEC void scrypt_pbkdf2_ppg (PRIVATE_AS const u32 *pw_buf, const int pw_len, PRIVATE_AS const u32 *salt_buf, const int salt_len, GLOBAL_AS u32 *out_buf, const int out_len) +{ + sha256_hmac_ctx_t sha256_hmac_ctx; + + sha256_hmac_init_swap (&sha256_hmac_ctx, pw_buf, pw_len); + + sha256_hmac_update_swap (&sha256_hmac_ctx, salt_buf, salt_len); + + scrypt_pbkdf2_body_pg (&sha256_hmac_ctx, out_buf, out_len); +} + +DECLSPEC void scrypt_pbkdf2_pgg (PRIVATE_AS const u32 *pw_buf, const int pw_len, GLOBAL_AS const u32 *salt_buf, const int salt_len, GLOBAL_AS u32 *out_buf, const int out_len) +{ + sha256_hmac_ctx_t sha256_hmac_ctx; + + sha256_hmac_init_swap (&sha256_hmac_ctx, pw_buf, pw_len); + + sha256_hmac_update_global_swap (&sha256_hmac_ctx, salt_buf, salt_len); + + scrypt_pbkdf2_body_pg (&sha256_hmac_ctx, out_buf, out_len); +} + +DECLSPEC void scrypt_pbkdf2_gpg (GLOBAL_AS const u32 *pw_buf, const int pw_len, PRIVATE_AS const u32 *salt_buf, const int salt_len, GLOBAL_AS u32 *out_buf, const int out_len) +{ + sha256_hmac_ctx_t sha256_hmac_ctx; + + sha256_hmac_init_global_swap (&sha256_hmac_ctx, pw_buf, pw_len); + + sha256_hmac_update_swap (&sha256_hmac_ctx, salt_buf, salt_len); + + scrypt_pbkdf2_body_pg (&sha256_hmac_ctx, out_buf, out_len); +} + +DECLSPEC void scrypt_pbkdf2_ggg (GLOBAL_AS const u32 *pw_buf, const int pw_len, GLOBAL_AS const u32 *salt_buf, const int salt_len, GLOBAL_AS u32 *out_buf, const int out_len) +{ + sha256_hmac_ctx_t sha256_hmac_ctx; + + sha256_hmac_init_global_swap (&sha256_hmac_ctx, pw_buf, pw_len); + + sha256_hmac_update_global_swap (&sha256_hmac_ctx, salt_buf, salt_len); + + scrypt_pbkdf2_body_pg (&sha256_hmac_ctx, out_buf, out_len); +} + diff --git a/OpenCL/inc_hash_scrypt.h b/OpenCL/inc_hash_scrypt.h new file mode 100644 index 000000000..808661726 --- /dev/null +++ b/OpenCL/inc_hash_scrypt.h @@ -0,0 +1,57 @@ +/** + * Author......: See docs/credits.txt + * License.....: MIT + */ + +#ifndef INC_HASH_SCRYPT_H +#define INC_HASH_SCRYPT_H + +#define GET_SCRYPT_SZ(r,p) (128 * (r) * (p)) +#define GET_STATE_SZ(r) (128 * (r)) + +// _SZ is true sizes as bytes +#define SCRYPT_SZ GET_SCRYPT_SZ (SCRYPT_R, SCRYPT_P) +#define STATE_SZ GET_STATE_SZ (SCRYPT_R) + +// _CNT is size as whatever /X datatype +#define SCRYPT_CNT4 (SCRYPT_SZ / 4) +#define STATE_CNT4 (STATE_SZ / 4) + +// this would be uint4, feels more natural than 16 +#define SCRYPT_CNT44 ((SCRYPT_SZ / 4) / 4) +#define STATE_CNT44 ((STATE_SZ / 4) / 4) + +#define SALSA_SZ 64 +#define SALSA_CNT4 (SALSA_SZ / 4) +#define SALSA_CNT44 ((SALSA_SZ / 4) / 4) + +//#define VIDX(bid4,lsz,lid,ySIZE,zSIZE,y,z) (((bid4) * (lsz) * (ySIZE) * (zSIZE)) + ((lid) * (ySIZE) * (zSIZE)) + ((y) * (zSIZE)) + (z)) + +#if defined IS_CUDA + +DECLSPEC uint4 operator ^ (const uint4 a, const uint4 b) +{ + uint4 r; + + r.x = a.x ^ b.x; + r.y = a.y ^ b.y; + r.z = a.z ^ b.z; + r.w = a.w ^ b.w; + + return r; +} + +#endif + +typedef struct +{ + #ifndef SCRYPT_TMP_ELEM + #define SCRYPT_TMP_ELEM 1 + #endif + + u32 in[SCRYPT_TMP_ELEM / 2]; + u32 out[SCRYPT_TMP_ELEM / 2]; + +} scrypt_tmp_t; + +#endif diff --git a/OpenCL/inc_hash_sha256.cl b/OpenCL/inc_hash_sha256.cl index f75d5ce60..4f7656274 100644 --- a/OpenCL/inc_hash_sha256.cl +++ b/OpenCL/inc_hash_sha256.cl @@ -1245,6 +1245,152 @@ DECLSPEC void sha256_hmac_init_global_swap (PRIVATE_AS sha256_hmac_ctx_t *ctx, G sha256_hmac_init_64 (ctx, w0, w1, w2, w3); } +DECLSPEC void sha256_hmac_init_global_utf16le_swap (PRIVATE_AS sha256_hmac_ctx_t *ctx, GLOBAL_AS const u32 *w, const int len) +{ + if (hc_enc_scan_global (w, len)) + { + hc_enc_t hc_enc; + + hc_enc_init (&hc_enc); + + while (hc_enc_has_next (&hc_enc, len)) + { + // forced full decode in one round + + u32 enc_buf[256]; + + const int enc_len = hc_enc_next_global (&hc_enc, w, len, 256, enc_buf, sizeof (enc_buf)); + + if (enc_len == -1) + { + //hmac doesn't have password length + //ctx->len = -1; + + return; + } + + if (enc_len > 64) + { + sha256_ctx_t tmp; + + sha256_init (&tmp); + + sha256_update_utf16le_swap (&tmp, enc_buf, enc_len); + + sha256_final (&tmp); + + enc_buf[ 0] = tmp.h[0]; + enc_buf[ 1] = tmp.h[1]; + enc_buf[ 2] = tmp.h[2]; + enc_buf[ 3] = tmp.h[3]; + enc_buf[ 4] = tmp.h[4]; + enc_buf[ 5] = tmp.h[5]; + enc_buf[ 6] = tmp.h[6]; + enc_buf[ 7] = tmp.h[7]; + enc_buf[ 8] = 0; + enc_buf[ 9] = 0; + enc_buf[10] = 0; + enc_buf[11] = 0; + enc_buf[12] = 0; + enc_buf[13] = 0; + enc_buf[14] = 0; + enc_buf[15] = 0; + } + else + { + enc_buf[ 0] = hc_swap32_S (enc_buf[ 0]); + enc_buf[ 1] = hc_swap32_S (enc_buf[ 1]); + enc_buf[ 2] = hc_swap32_S (enc_buf[ 2]); + enc_buf[ 3] = hc_swap32_S (enc_buf[ 3]); + enc_buf[ 4] = hc_swap32_S (enc_buf[ 4]); + enc_buf[ 5] = hc_swap32_S (enc_buf[ 5]); + enc_buf[ 6] = hc_swap32_S (enc_buf[ 6]); + enc_buf[ 7] = hc_swap32_S (enc_buf[ 7]); + enc_buf[ 8] = hc_swap32_S (enc_buf[ 8]); + enc_buf[ 9] = hc_swap32_S (enc_buf[ 9]); + enc_buf[10] = hc_swap32_S (enc_buf[10]); + enc_buf[11] = hc_swap32_S (enc_buf[11]); + enc_buf[12] = hc_swap32_S (enc_buf[12]); + enc_buf[13] = hc_swap32_S (enc_buf[13]); + enc_buf[14] = hc_swap32_S (enc_buf[14]); + enc_buf[15] = hc_swap32_S (enc_buf[15]); + } + + sha256_hmac_init_64 (ctx, enc_buf + 0, enc_buf + 4, enc_buf + 8, enc_buf + 12); + } + + return; + } + + u32 w0[4]; + u32 w1[4]; + u32 w2[4]; + u32 w3[4]; + + const int len_new = len * 2; + + if (len_new > 64) + { + sha256_ctx_t tmp; + + sha256_init (&tmp); + + sha256_update_global_utf16le_swap (&tmp, w, len); + + sha256_final (&tmp); + + w0[0] = tmp.h[0]; + w0[1] = tmp.h[1]; + w0[2] = tmp.h[2]; + w0[3] = tmp.h[3]; + w1[0] = tmp.h[4]; + w1[1] = tmp.h[5]; + w1[2] = tmp.h[6]; + w1[3] = tmp.h[7]; + w2[0] = 0; + w2[1] = 0; + w2[2] = 0; + w2[3] = 0; + w3[0] = 0; + w3[1] = 0; + w3[2] = 0; + w3[3] = 0; + } + else + { + w0[0] = w[0]; + w0[1] = w[1]; + w0[2] = w[2]; + w0[3] = w[3]; + w1[0] = w[4]; + w1[1] = w[5]; + w1[2] = w[6]; + w1[3] = w[7]; + + make_utf16le_S (w1, w2, w3); + make_utf16le_S (w0, w0, w1); + + w0[0] = hc_swap32_S (w0[0]); + w0[1] = hc_swap32_S (w0[1]); + w0[2] = hc_swap32_S (w0[2]); + w0[3] = hc_swap32_S (w0[3]); + w1[0] = hc_swap32_S (w1[0]); + w1[1] = hc_swap32_S (w1[1]); + w1[2] = hc_swap32_S (w1[2]); + w1[3] = hc_swap32_S (w1[3]); + w2[0] = hc_swap32_S (w2[0]); + w2[1] = hc_swap32_S (w2[1]); + w2[2] = hc_swap32_S (w2[2]); + w2[3] = hc_swap32_S (w2[3]); + w3[0] = hc_swap32_S (w3[0]); + w3[1] = hc_swap32_S (w3[1]); + w3[2] = hc_swap32_S (w3[2]); + w3[3] = hc_swap32_S (w3[3]); + } + + sha256_hmac_init_64 (ctx, w0, w1, w2, w3); +} + DECLSPEC void sha256_hmac_update_64 (PRIVATE_AS sha256_hmac_ctx_t *ctx, PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w2, PRIVATE_AS u32 *w3, const int len) { sha256_update_64 (&ctx->ipad, w0, w1, w2, w3, len); diff --git a/OpenCL/inc_hash_sha256.h b/OpenCL/inc_hash_sha256.h index bfafa2f69..04dc1f713 100644 --- a/OpenCL/inc_hash_sha256.h +++ b/OpenCL/inc_hash_sha256.h @@ -106,6 +106,7 @@ DECLSPEC void sha256_hmac_init (PRIVATE_AS sha256_hmac_ctx_t *ctx, PRIVATE_AS co DECLSPEC void sha256_hmac_init_swap (PRIVATE_AS sha256_hmac_ctx_t *ctx, PRIVATE_AS const u32 *w, const int len); DECLSPEC void sha256_hmac_init_global (PRIVATE_AS sha256_hmac_ctx_t *ctx, GLOBAL_AS const u32 *w, const int len); DECLSPEC void sha256_hmac_init_global_swap (PRIVATE_AS sha256_hmac_ctx_t *ctx, GLOBAL_AS const u32 *w, const int len); +DECLSPEC void sha256_hmac_init_global_utf16le_swap (PRIVATE_AS sha256_hmac_ctx_t *ctx, GLOBAL_AS const u32 *w, const int len); DECLSPEC void sha256_hmac_update_64 (PRIVATE_AS sha256_hmac_ctx_t *ctx, PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w2, PRIVATE_AS u32 *w3, const int len); DECLSPEC void sha256_hmac_update (PRIVATE_AS sha256_hmac_ctx_t *ctx, PRIVATE_AS const u32 *w, const int len); DECLSPEC void sha256_hmac_update_swap (PRIVATE_AS sha256_hmac_ctx_t *ctx, PRIVATE_AS const u32 *w, const int len); diff --git a/OpenCL/inc_platform.cl b/OpenCL/inc_platform.cl index 06ba76553..9af10e9ba 100644 --- a/OpenCL/inc_platform.cl +++ b/OpenCL/inc_platform.cl @@ -104,6 +104,11 @@ DECLSPEC u32 hc_atomic_or (GLOBAL_AS u32 *p, volatile const u32 val) return atomicOr (p, val); } +DECLSPEC size_t get_group_id (const u32 dimindx __attribute__((unused))) +{ + return blockIdx.x; +} + DECLSPEC size_t get_global_id (const u32 dimindx __attribute__((unused))) { return (blockIdx.x * blockDim.x) + threadIdx.x; @@ -122,37 +127,129 @@ DECLSPEC size_t get_local_size (const u32 dimindx __attribute__((unused))) DECLSPEC u32x rotl32 (const u32x a, const int n) { - return ((a << n) | ((a >> (32 - n)))); + #if VECT_SIZE == 1 + + return rotl32_S (a, n); + + #else + + u32x t = 0; + + #if VECT_SIZE >= 2 + t.s0 = rotl32_S (a.s0, n); + t.s1 = rotl32_S (a.s1, n); + #endif + + #if VECT_SIZE >= 4 + t.s2 = rotl32_S (a.s2, n); + t.s3 = rotl32_S (a.s3, n); + #endif + + #if VECT_SIZE >= 8 + t.s4 = rotl32_S (a.s4, n); + t.s5 = rotl32_S (a.s5, n); + t.s6 = rotl32_S (a.s6, n); + t.s7 = rotl32_S (a.s7, n); + #endif + + #if VECT_SIZE >= 16 + t.s8 = rotl32_S (a.s8, n); + t.s9 = rotl32_S (a.s9, n); + t.sa = rotl32_S (a.sa, n); + t.sb = rotl32_S (a.sb, n); + t.sc = rotl32_S (a.sc, n); + t.sd = rotl32_S (a.sd, n); + t.se = rotl32_S (a.se, n); + t.sf = rotl32_S (a.sf, n); + #endif + + return t; + + #endif } DECLSPEC u32x rotr32 (const u32x a, const int n) { - return ((a >> n) | ((a << (32 - n)))); + #if VECT_SIZE == 1 + + return rotr32_S (a, n); + + #else + + u32x t = 0; + + #if VECT_SIZE >= 2 + t.s0 = rotr32_S (a.s0, n); + t.s1 = rotr32_S (a.s1, n); + #endif + + #if VECT_SIZE >= 4 + t.s2 = rotr32_S (a.s2, n); + t.s3 = rotr32_S (a.s3, n); + #endif + + #if VECT_SIZE >= 8 + t.s4 = rotr32_S (a.s4, n); + t.s5 = rotr32_S (a.s5, n); + t.s6 = rotr32_S (a.s6, n); + t.s7 = rotr32_S (a.s7, n); + #endif + + #if VECT_SIZE >= 16 + t.s8 = rotr32_S (a.s8, n); + t.s9 = rotr32_S (a.s9, n); + t.sa = rotr32_S (a.sa, n); + t.sb = rotr32_S (a.sb, n); + t.sc = rotr32_S (a.sc, n); + t.sd = rotr32_S (a.sd, n); + t.se = rotr32_S (a.se, n); + t.sf = rotr32_S (a.sf, n); + #endif + + return t; + + #endif } DECLSPEC u32 rotl32_S (const u32 a, const int n) { + #ifdef USE_FUNNELSHIFT + return __funnelshift_l (a, a, n); + #else return ((a << n) | ((a >> (32 - n)))); + #endif } DECLSPEC u32 rotr32_S (const u32 a, const int n) { + #ifdef USE_FUNNELSHIFT + return __funnelshift_r (a, a, n); + #else return ((a >> n) | ((a << (32 - n)))); + #endif } DECLSPEC u64x rotl64 (const u64x a, const int n) { + #if VECT_SIZE == 1 + return rotl64_S (a, n); + #else return ((a << n) | ((a >> (64 - n)))); + #endif } DECLSPEC u64x rotr64 (const u64x a, const int n) { + #if VECT_SIZE == 1 + return rotr64_S (a, n); + #else return ((a >> n) | ((a << (64 - n)))); + #endif } DECLSPEC u64 rotl64_S (const u64 a, const int n) { - return ((a << n) | ((a >> (64 - n)))); + return rotr64_S (a, 64 - n); } DECLSPEC u64 rotr64_S (const u64 a, const int n) @@ -208,6 +305,11 @@ DECLSPEC u32 hc_atomic_or (GLOBAL_AS u32 *p, volatile const u32 val) return atomicOr (p, val); } +DECLSPEC size_t get_group_id (const u32 dimindx __attribute__((unused))) +{ + return blockIdx.x; +} + DECLSPEC size_t get_global_id (const u32 dimindx __attribute__((unused))) { return (blockIdx.x * blockDim.x) + threadIdx.x; @@ -226,36 +328,115 @@ DECLSPEC size_t get_local_size (const u32 dimindx __attribute__((unused))) DECLSPEC u32x rotl32 (const u32x a, const int n) { - return ((a << n) | ((a >> (32 - n)))); + #if VECT_SIZE == 1 + + return rotl32_S (a, n); + + #else + + u32x t = 0; + + #if VECT_SIZE >= 2 + t.s0 = rotl32_S (a.s0, n); + t.s1 = rotl32_S (a.s1, n); + #endif + + #if VECT_SIZE >= 4 + t.s2 = rotl32_S (a.s2, n); + t.s3 = rotl32_S (a.s3, n); + #endif + + #if VECT_SIZE >= 8 + t.s4 = rotl32_S (a.s4, n); + t.s5 = rotl32_S (a.s5, n); + t.s6 = rotl32_S (a.s6, n); + t.s7 = rotl32_S (a.s7, n); + #endif + + #if VECT_SIZE >= 16 + t.s8 = rotl32_S (a.s8, n); + t.s9 = rotl32_S (a.s9, n); + t.sa = rotl32_S (a.sa, n); + t.sb = rotl32_S (a.sb, n); + t.sc = rotl32_S (a.sc, n); + t.sd = rotl32_S (a.sd, n); + t.se = rotl32_S (a.se, n); + t.sf = rotl32_S (a.sf, n); + #endif + + return t; + + #endif } DECLSPEC u32x rotr32 (const u32x a, const int n) { - return ((a >> n) | ((a << (32 - n)))); + #if VECT_SIZE == 1 + + return rotr32_S (a, n); + + #else + + u32x t = 0; + + #if VECT_SIZE >= 2 + t.s0 = rotr32_S (a.s0, n); + t.s1 = rotr32_S (a.s1, n); + #endif + + #if VECT_SIZE >= 4 + t.s2 = rotr32_S (a.s2, n); + t.s3 = rotr32_S (a.s3, n); + #endif + + #if VECT_SIZE >= 8 + t.s4 = rotr32_S (a.s4, n); + t.s5 = rotr32_S (a.s5, n); + t.s6 = rotr32_S (a.s6, n); + t.s7 = rotr32_S (a.s7, n); + #endif + + #if VECT_SIZE >= 16 + t.s8 = rotr32_S (a.s8, n); + t.s9 = rotr32_S (a.s9, n); + t.sa = rotr32_S (a.sa, n); + t.sb = rotr32_S (a.sb, n); + t.sc = rotr32_S (a.sc, n); + t.sd = rotr32_S (a.sd, n); + t.se = rotr32_S (a.se, n); + t.sf = rotr32_S (a.sf, n); + #endif + + return t; + + #endif } DECLSPEC u32 rotl32_S (const u32 a, const int n) { + #ifdef USE_FUNNELSHIFT + return __funnelshift_l (a, a, n); + #else return ((a << n) | ((a >> (32 - n)))); + #endif } DECLSPEC u32 rotr32_S (const u32 a, const int n) { + #ifdef USE_FUNNELSHIFT + return __funnelshift_r (a, a, n); + #else return ((a >> n) | ((a << (32 - n)))); + #endif } DECLSPEC u64x rotl64 (const u64x a, const int n) { - return rotr64 (a, 64 - n); -} - -DECLSPEC u32 amd_bitalign_S (const u32 a, const u32 b, const int n) -{ - u32 r = 0; - - __asm__ ("V_ALIGNBIT_B32 %0, %1, %2, %3;" : "=v"(r): "v"(a), "v"(b), "I"(n)); - - return r; + #if VECT_SIZE == 1 + return rotl64_S (a, n); + #else + return ((a << n) | ((a >> (64 - n)))); + #endif } DECLSPEC u64x rotr64 (const u64x a, const int n) @@ -274,6 +455,7 @@ DECLSPEC u64 rotl64_S (const u64 a, const int n) DECLSPEC u64 rotr64_S (const u64 a, const int n) { + #ifdef USE_FUNNELSHIFT vconv64_t in; in.v64 = a; @@ -285,16 +467,19 @@ DECLSPEC u64 rotr64_S (const u64 a, const int n) if (n < 32) { - out.v32.a = amd_bitalign_S (a1, a0, n); - out.v32.b = amd_bitalign_S (a0, a1, n); + out.v32.a = __funnelshift_r (a0, a1, n); + out.v32.b = __funnelshift_r (a1, a0, n); } else { - out.v32.a = amd_bitalign_S (a0, a1, n - 32); - out.v32.b = amd_bitalign_S (a1, a0, n - 32); + out.v32.a = __funnelshift_r (a1, a0, n - 32); + out.v32.b = __funnelshift_r (a0, a1, n - 32); } return out.v64; + #else + return ((a >> n) | ((a << (64 - n)))); + #endif } #define FIXED_THREAD_COUNT(n) __launch_bounds__((n), 0) diff --git a/OpenCL/inc_platform.h b/OpenCL/inc_platform.h index 1e7805290..cc6489afe 100644 --- a/OpenCL/inc_platform.h +++ b/OpenCL/inc_platform.h @@ -74,6 +74,7 @@ DECLSPEC u32 hc_atomic_or (volatile GLOBAL_AS u32 *p, volatile const u32 val); #define get_global_id(param) hc_gid #define get_local_id(param) hc_lid #define get_local_size(param) hc_lsz +#define get_group_id(param) hc_bid DECLSPEC u32x rotl32 (const u32x a, const int n); DECLSPEC u32x rotr32 (const u32x a, const int n); diff --git a/OpenCL/inc_vendor.h b/OpenCL/inc_vendor.h index 52ef8188d..a52b4c899 100644 --- a/OpenCL/inc_vendor.h +++ b/OpenCL/inc_vendor.h @@ -66,6 +66,12 @@ using namespace metal; #define KERNEL_FQ __kernel #endif +#if defined FIXED_LOCAL_SIZE +#define KERNEL_FA FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) +#else +#define KERNEL_FA +#endif + #ifndef MAYBE_UNUSED #define MAYBE_UNUSED #endif @@ -150,8 +156,10 @@ using namespace metal; #if defined IS_AMD && defined IS_GPU #define DECLSPEC HC_INLINE +#elif defined IS_CUDA +#define DECLSPEC __device__ #elif defined IS_HIP -#define DECLSPEC __device__ HC_INLINE +#define DECLSPEC __device__ #else #define DECLSPEC #endif @@ -175,11 +183,13 @@ using namespace metal; #ifdef IS_CUDA #define USE_BITSELECT #define USE_ROTATE +#define USE_FUNNELSHIFT #endif #ifdef IS_HIP #define USE_BITSELECT #define USE_ROTATE +#define USE_FUNNELSHIFT #endif #ifdef IS_ROCM @@ -210,4 +220,9 @@ using namespace metal; #define s3 w #endif +// some algorithms do not like this, eg 150, 1100, ... +#ifdef NO_FUNNELSHIFT +#undef USE_FUNNELSHIFT +#endif + #endif // INC_VENDOR_H diff --git a/OpenCL/m00000_a0-optimized.cl b/OpenCL/m00000_a0-optimized.cl index 366f74bfa..ba6dae580 100644 --- a/OpenCL/m00000_a0-optimized.cl +++ b/OpenCL/m00000_a0-optimized.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m00000_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00000_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -143,15 +143,15 @@ KERNEL_FQ void m00000_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00000_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00000_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00000_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00000_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00000_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00000_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -293,10 +293,10 @@ KERNEL_FQ void m00000_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00000_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00000_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00000_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00000_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m00000_a0-pure.cl b/OpenCL/m00000_a0-pure.cl index 0dafc0653..283aaeead 100644 --- a/OpenCL/m00000_a0-pure.cl +++ b/OpenCL/m00000_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m00000_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00000_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -60,7 +60,7 @@ KERNEL_FQ void m00000_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00000_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00000_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m00000_a1-optimized.cl b/OpenCL/m00000_a1-optimized.cl index 17cf06a79..3cf9851c0 100644 --- a/OpenCL/m00000_a1-optimized.cl +++ b/OpenCL/m00000_a1-optimized.cl @@ -15,7 +15,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m00000_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00000_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -201,15 +201,15 @@ KERNEL_FQ void m00000_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00000_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00000_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00000_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00000_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00000_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00000_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -410,10 +410,10 @@ KERNEL_FQ void m00000_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00000_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00000_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00000_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00000_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m00000_a1-pure.cl b/OpenCL/m00000_a1-pure.cl index 9d7dfded8..16bffa5fe 100644 --- a/OpenCL/m00000_a1-pure.cl +++ b/OpenCL/m00000_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m00000_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00000_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -56,7 +56,7 @@ KERNEL_FQ void m00000_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00000_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00000_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m00000_a3-optimized.cl b/OpenCL/m00000_a3-optimized.cl index bbe35c2c5..4b22bd0c9 100644 --- a/OpenCL/m00000_a3-optimized.cl +++ b/OpenCL/m00000_a3-optimized.cl @@ -423,7 +423,7 @@ DECLSPEC void m00000s (PRIVATE_AS u32 *w, const u32 pw_len, KERN_ATTR_FUNC_VECTO } } -KERNEL_FQ void m00000_m04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00000_m04 (KERN_ATTR_VECTOR ()) { /** * base @@ -463,7 +463,7 @@ KERNEL_FQ void m00000_m04 (KERN_ATTR_VECTOR ()) m00000m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00000_m08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00000_m08 (KERN_ATTR_VECTOR ()) { /** * base @@ -503,7 +503,7 @@ KERNEL_FQ void m00000_m08 (KERN_ATTR_VECTOR ()) m00000m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00000_m16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00000_m16 (KERN_ATTR_VECTOR ()) { /** * base @@ -543,7 +543,7 @@ KERNEL_FQ void m00000_m16 (KERN_ATTR_VECTOR ()) m00000m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00000_s04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00000_s04 (KERN_ATTR_VECTOR ()) { /** * base @@ -583,7 +583,7 @@ KERNEL_FQ void m00000_s04 (KERN_ATTR_VECTOR ()) m00000s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00000_s08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00000_s08 (KERN_ATTR_VECTOR ()) { /** * base @@ -623,7 +623,7 @@ KERNEL_FQ void m00000_s08 (KERN_ATTR_VECTOR ()) m00000s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00000_s16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00000_s16 (KERN_ATTR_VECTOR ()) { /** * base diff --git a/OpenCL/m00000_a3-pure.cl b/OpenCL/m00000_a3-pure.cl index aae28aa7f..e05d4d292 100644 --- a/OpenCL/m00000_a3-pure.cl +++ b/OpenCL/m00000_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m00000_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00000_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -69,7 +69,7 @@ KERNEL_FQ void m00000_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m00000_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00000_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m00010_a0-optimized.cl b/OpenCL/m00010_a0-optimized.cl index 30c3311e1..5bb64a831 100644 --- a/OpenCL/m00010_a0-optimized.cl +++ b/OpenCL/m00010_a0-optimized.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m00010_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00010_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -217,15 +217,15 @@ KERNEL_FQ void m00010_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00010_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00010_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00010_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00010_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00010_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00010_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -441,10 +441,10 @@ KERNEL_FQ void m00010_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00010_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00010_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00010_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00010_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m00010_a0-pure.cl b/OpenCL/m00010_a0-pure.cl index cbbcd203e..0b9a8472c 100644 --- a/OpenCL/m00010_a0-pure.cl +++ b/OpenCL/m00010_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m00010_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00010_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -71,7 +71,7 @@ KERNEL_FQ void m00010_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00010_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00010_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m00010_a1-optimized.cl b/OpenCL/m00010_a1-optimized.cl index c707d50ce..2d2fdfc82 100644 --- a/OpenCL/m00010_a1-optimized.cl +++ b/OpenCL/m00010_a1-optimized.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m00010_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00010_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -275,15 +275,15 @@ KERNEL_FQ void m00010_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00010_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00010_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00010_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00010_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00010_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00010_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -559,10 +559,10 @@ KERNEL_FQ void m00010_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00010_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00010_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00010_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00010_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m00010_a1-pure.cl b/OpenCL/m00010_a1-pure.cl index 0fdf5de48..7ef618342 100644 --- a/OpenCL/m00010_a1-pure.cl +++ b/OpenCL/m00010_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m00010_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00010_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -67,7 +67,7 @@ KERNEL_FQ void m00010_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00010_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00010_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m00010_a3-optimized.cl b/OpenCL/m00010_a3-optimized.cl index 84ddc589c..1cad7a5dd 100644 --- a/OpenCL/m00010_a3-optimized.cl +++ b/OpenCL/m00010_a3-optimized.cl @@ -472,7 +472,7 @@ DECLSPEC void m00010s (PRIVATE_AS u32 *w, const u32 pw_len, KERN_ATTR_FUNC_VECTO } } -KERNEL_FQ void m00010_m04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00010_m04 (KERN_ATTR_VECTOR ()) { /** * base @@ -512,7 +512,7 @@ KERNEL_FQ void m00010_m04 (KERN_ATTR_VECTOR ()) m00010m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00010_m08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00010_m08 (KERN_ATTR_VECTOR ()) { /** * base @@ -552,7 +552,7 @@ KERNEL_FQ void m00010_m08 (KERN_ATTR_VECTOR ()) m00010m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00010_m16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00010_m16 (KERN_ATTR_VECTOR ()) { /** * base @@ -592,7 +592,7 @@ KERNEL_FQ void m00010_m16 (KERN_ATTR_VECTOR ()) m00010m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00010_s04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00010_s04 (KERN_ATTR_VECTOR ()) { /** * base @@ -632,7 +632,7 @@ KERNEL_FQ void m00010_s04 (KERN_ATTR_VECTOR ()) m00010s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00010_s08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00010_s08 (KERN_ATTR_VECTOR ()) { /** * base @@ -672,7 +672,7 @@ KERNEL_FQ void m00010_s08 (KERN_ATTR_VECTOR ()) m00010s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00010_s16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00010_s16 (KERN_ATTR_VECTOR ()) { /** * base diff --git a/OpenCL/m00010_a3-pure.cl b/OpenCL/m00010_a3-pure.cl index fdc18f513..e7f149e4c 100644 --- a/OpenCL/m00010_a3-pure.cl +++ b/OpenCL/m00010_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m00010_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00010_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -80,7 +80,7 @@ KERNEL_FQ void m00010_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m00010_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00010_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m00020_a0-optimized.cl b/OpenCL/m00020_a0-optimized.cl index 6bf430fba..d0947fc7a 100644 --- a/OpenCL/m00020_a0-optimized.cl +++ b/OpenCL/m00020_a0-optimized.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m00020_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00020_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -197,15 +197,15 @@ KERNEL_FQ void m00020_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00020_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00020_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00020_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00020_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00020_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00020_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -401,10 +401,10 @@ KERNEL_FQ void m00020_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00020_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00020_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00020_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00020_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m00020_a0-pure.cl b/OpenCL/m00020_a0-pure.cl index c0721a27b..1e2cb8614 100644 --- a/OpenCL/m00020_a0-pure.cl +++ b/OpenCL/m00020_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m00020_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00020_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -64,7 +64,7 @@ KERNEL_FQ void m00020_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00020_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00020_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m00020_a1-optimized.cl b/OpenCL/m00020_a1-optimized.cl index 64ca7e34c..8a73ef7f9 100644 --- a/OpenCL/m00020_a1-optimized.cl +++ b/OpenCL/m00020_a1-optimized.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m00020_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00020_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -253,15 +253,15 @@ KERNEL_FQ void m00020_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00020_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00020_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00020_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00020_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00020_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00020_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -515,10 +515,10 @@ KERNEL_FQ void m00020_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00020_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00020_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00020_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00020_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m00020_a1-pure.cl b/OpenCL/m00020_a1-pure.cl index accb063cb..4da56b6a3 100644 --- a/OpenCL/m00020_a1-pure.cl +++ b/OpenCL/m00020_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m00020_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00020_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -58,7 +58,7 @@ KERNEL_FQ void m00020_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00020_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00020_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m00020_a3-optimized.cl b/OpenCL/m00020_a3-optimized.cl index adb7076f4..428ae4221 100644 --- a/OpenCL/m00020_a3-optimized.cl +++ b/OpenCL/m00020_a3-optimized.cl @@ -373,7 +373,7 @@ DECLSPEC void m00020s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m00020_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00020_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -422,7 +422,7 @@ KERNEL_FQ void m00020_m04 (KERN_ATTR_BASIC ()) m00020m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00020_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00020_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -471,7 +471,7 @@ KERNEL_FQ void m00020_m08 (KERN_ATTR_BASIC ()) m00020m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00020_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00020_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -520,7 +520,7 @@ KERNEL_FQ void m00020_m16 (KERN_ATTR_BASIC ()) m00020m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00020_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00020_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -569,7 +569,7 @@ KERNEL_FQ void m00020_s04 (KERN_ATTR_BASIC ()) m00020s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00020_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00020_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -618,7 +618,7 @@ KERNEL_FQ void m00020_s08 (KERN_ATTR_BASIC ()) m00020s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00020_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00020_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m00020_a3-pure.cl b/OpenCL/m00020_a3-pure.cl index db1bb450c..b7083fa9a 100644 --- a/OpenCL/m00020_a3-pure.cl +++ b/OpenCL/m00020_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m00020_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00020_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -75,7 +75,7 @@ KERNEL_FQ void m00020_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m00020_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00020_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m00030_a0-optimized.cl b/OpenCL/m00030_a0-optimized.cl index 10f0e1c4e..9704afb47 100644 --- a/OpenCL/m00030_a0-optimized.cl +++ b/OpenCL/m00030_a0-optimized.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m00030_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00030_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -222,15 +222,15 @@ KERNEL_FQ void m00030_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00030_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00030_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00030_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00030_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00030_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00030_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -451,10 +451,10 @@ KERNEL_FQ void m00030_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00030_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00030_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00030_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00030_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m00030_a0-pure.cl b/OpenCL/m00030_a0-pure.cl index faee2c23b..445fff4ec 100644 --- a/OpenCL/m00030_a0-pure.cl +++ b/OpenCL/m00030_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m00030_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00030_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -71,7 +71,7 @@ KERNEL_FQ void m00030_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00030_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00030_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m00030_a1-optimized.cl b/OpenCL/m00030_a1-optimized.cl index 1d84bc0e7..b00a2e21d 100644 --- a/OpenCL/m00030_a1-optimized.cl +++ b/OpenCL/m00030_a1-optimized.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m00030_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00030_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -280,15 +280,15 @@ KERNEL_FQ void m00030_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00030_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00030_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00030_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00030_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00030_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00030_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -569,10 +569,10 @@ KERNEL_FQ void m00030_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00030_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00030_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00030_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00030_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m00030_a1-pure.cl b/OpenCL/m00030_a1-pure.cl index 7ecbe7a95..8ea89c339 100644 --- a/OpenCL/m00030_a1-pure.cl +++ b/OpenCL/m00030_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m00030_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00030_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -67,7 +67,7 @@ KERNEL_FQ void m00030_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00030_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00030_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m00030_a3-optimized.cl b/OpenCL/m00030_a3-optimized.cl index fe11425bb..d8dd49c9d 100644 --- a/OpenCL/m00030_a3-optimized.cl +++ b/OpenCL/m00030_a3-optimized.cl @@ -472,7 +472,7 @@ DECLSPEC void m00030s (PRIVATE_AS u32 *w, const u32 pw_len, KERN_ATTR_FUNC_VECTO } } -KERNEL_FQ void m00030_m04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00030_m04 (KERN_ATTR_VECTOR ()) { /** * base @@ -512,7 +512,7 @@ KERNEL_FQ void m00030_m04 (KERN_ATTR_VECTOR ()) m00030m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00030_m08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00030_m08 (KERN_ATTR_VECTOR ()) { /** * base @@ -552,7 +552,7 @@ KERNEL_FQ void m00030_m08 (KERN_ATTR_VECTOR ()) m00030m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00030_m16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00030_m16 (KERN_ATTR_VECTOR ()) { /** * base @@ -592,7 +592,7 @@ KERNEL_FQ void m00030_m16 (KERN_ATTR_VECTOR ()) m00030m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00030_s04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00030_s04 (KERN_ATTR_VECTOR ()) { /** * base @@ -632,7 +632,7 @@ KERNEL_FQ void m00030_s04 (KERN_ATTR_VECTOR ()) m00030s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00030_s08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00030_s08 (KERN_ATTR_VECTOR ()) { /** * base @@ -672,7 +672,7 @@ KERNEL_FQ void m00030_s08 (KERN_ATTR_VECTOR ()) m00030s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00030_s16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00030_s16 (KERN_ATTR_VECTOR ()) { /** * base diff --git a/OpenCL/m00030_a3-pure.cl b/OpenCL/m00030_a3-pure.cl index 6fd205531..79e2f9058 100644 --- a/OpenCL/m00030_a3-pure.cl +++ b/OpenCL/m00030_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m00030_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00030_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -96,7 +96,7 @@ KERNEL_FQ void m00030_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m00030_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00030_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m00040_a0-optimized.cl b/OpenCL/m00040_a0-optimized.cl index 1282eba47..01c2ae417 100644 --- a/OpenCL/m00040_a0-optimized.cl +++ b/OpenCL/m00040_a0-optimized.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m00040_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00040_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -202,15 +202,15 @@ KERNEL_FQ void m00040_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00040_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00040_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00040_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00040_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00040_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00040_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -411,10 +411,10 @@ KERNEL_FQ void m00040_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00040_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00040_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00040_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00040_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m00040_a0-pure.cl b/OpenCL/m00040_a0-pure.cl index 66d556c43..7e58eca6e 100644 --- a/OpenCL/m00040_a0-pure.cl +++ b/OpenCL/m00040_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m00040_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00040_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -64,7 +64,7 @@ KERNEL_FQ void m00040_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00040_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00040_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m00040_a1-optimized.cl b/OpenCL/m00040_a1-optimized.cl index 6e29d87cd..7c2aa5095 100644 --- a/OpenCL/m00040_a1-optimized.cl +++ b/OpenCL/m00040_a1-optimized.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m00040_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00040_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -258,15 +258,15 @@ KERNEL_FQ void m00040_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00040_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00040_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00040_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00040_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00040_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00040_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -525,10 +525,10 @@ KERNEL_FQ void m00040_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00040_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00040_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00040_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00040_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m00040_a1-pure.cl b/OpenCL/m00040_a1-pure.cl index 488b183eb..97be5b283 100644 --- a/OpenCL/m00040_a1-pure.cl +++ b/OpenCL/m00040_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m00040_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00040_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -58,7 +58,7 @@ KERNEL_FQ void m00040_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00040_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00040_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m00040_a3-optimized.cl b/OpenCL/m00040_a3-optimized.cl index cf87f67d3..43316408a 100644 --- a/OpenCL/m00040_a3-optimized.cl +++ b/OpenCL/m00040_a3-optimized.cl @@ -373,7 +373,7 @@ DECLSPEC void m00040s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m00040_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00040_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -422,7 +422,7 @@ KERNEL_FQ void m00040_m04 (KERN_ATTR_BASIC ()) m00040m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00040_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00040_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -471,7 +471,7 @@ KERNEL_FQ void m00040_m08 (KERN_ATTR_BASIC ()) m00040m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00040_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00040_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -520,7 +520,7 @@ KERNEL_FQ void m00040_m16 (KERN_ATTR_BASIC ()) m00040m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00040_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00040_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -569,7 +569,7 @@ KERNEL_FQ void m00040_s04 (KERN_ATTR_BASIC ()) m00040s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00040_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00040_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -618,7 +618,7 @@ KERNEL_FQ void m00040_s08 (KERN_ATTR_BASIC ()) m00040s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00040_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00040_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m00040_a3-pure.cl b/OpenCL/m00040_a3-pure.cl index 6dd3f5cd2..5a7738356 100644 --- a/OpenCL/m00040_a3-pure.cl +++ b/OpenCL/m00040_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m00040_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00040_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -87,7 +87,7 @@ KERNEL_FQ void m00040_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m00040_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00040_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m00050_a0-optimized.cl b/OpenCL/m00050_a0-optimized.cl index 398e4d90a..509d31df4 100644 --- a/OpenCL/m00050_a0-optimized.cl +++ b/OpenCL/m00050_a0-optimized.cl @@ -101,7 +101,7 @@ DECLSPEC void hmac_md5_run (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE_AS md5_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m00050_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00050_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -206,15 +206,15 @@ KERNEL_FQ void m00050_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00050_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00050_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00050_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00050_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00050_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00050_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -331,10 +331,10 @@ KERNEL_FQ void m00050_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00050_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00050_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00050_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00050_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m00050_a0-pure.cl b/OpenCL/m00050_a0-pure.cl index 2a5d3f089..bb5c811a9 100644 --- a/OpenCL/m00050_a0-pure.cl +++ b/OpenCL/m00050_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m00050_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00050_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -69,7 +69,7 @@ KERNEL_FQ void m00050_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00050_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00050_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m00050_a1-optimized.cl b/OpenCL/m00050_a1-optimized.cl index 1067f8cc1..7413dd42e 100644 --- a/OpenCL/m00050_a1-optimized.cl +++ b/OpenCL/m00050_a1-optimized.cl @@ -99,7 +99,7 @@ DECLSPEC void hmac_md5_run (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE_AS md5_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m00050_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00050_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -264,15 +264,15 @@ KERNEL_FQ void m00050_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00050_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00050_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00050_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00050_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00050_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00050_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -449,10 +449,10 @@ KERNEL_FQ void m00050_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00050_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00050_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00050_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00050_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m00050_a1-pure.cl b/OpenCL/m00050_a1-pure.cl index 9de09b4bd..f971bdff6 100644 --- a/OpenCL/m00050_a1-pure.cl +++ b/OpenCL/m00050_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m00050_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00050_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -92,7 +92,7 @@ KERNEL_FQ void m00050_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00050_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00050_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m00050_a3-optimized.cl b/OpenCL/m00050_a3-optimized.cl index 0ea68753c..eacd34b81 100644 --- a/OpenCL/m00050_a3-optimized.cl +++ b/OpenCL/m00050_a3-optimized.cl @@ -315,7 +315,7 @@ DECLSPEC void m00050s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m00050_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00050_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -364,7 +364,7 @@ KERNEL_FQ void m00050_m04 (KERN_ATTR_BASIC ()) m00050m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00050_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00050_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -413,7 +413,7 @@ KERNEL_FQ void m00050_m08 (KERN_ATTR_BASIC ()) m00050m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00050_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00050_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -462,7 +462,7 @@ KERNEL_FQ void m00050_m16 (KERN_ATTR_BASIC ()) m00050m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00050_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00050_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -511,7 +511,7 @@ KERNEL_FQ void m00050_s04 (KERN_ATTR_BASIC ()) m00050s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00050_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00050_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -560,7 +560,7 @@ KERNEL_FQ void m00050_s08 (KERN_ATTR_BASIC ()) m00050s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00050_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00050_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m00050_a3-pure.cl b/OpenCL/m00050_a3-pure.cl index 9b118a8b5..7b0347976 100644 --- a/OpenCL/m00050_a3-pure.cl +++ b/OpenCL/m00050_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m00050_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00050_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -78,7 +78,7 @@ KERNEL_FQ void m00050_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m00050_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00050_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m00060_a0-optimized.cl b/OpenCL/m00060_a0-optimized.cl index 578bb7297..35a377d6b 100644 --- a/OpenCL/m00060_a0-optimized.cl +++ b/OpenCL/m00060_a0-optimized.cl @@ -101,7 +101,7 @@ DECLSPEC void hmac_md5_run (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE_AS md5_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m00060_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00060_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -228,15 +228,15 @@ KERNEL_FQ void m00060_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00060_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00060_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00060_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00060_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00060_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00060_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -375,10 +375,10 @@ KERNEL_FQ void m00060_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00060_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00060_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00060_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00060_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m00060_a0-pure.cl b/OpenCL/m00060_a0-pure.cl index ddfe80a7a..e625e900d 100644 --- a/OpenCL/m00060_a0-pure.cl +++ b/OpenCL/m00060_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m00060_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00060_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -71,7 +71,7 @@ KERNEL_FQ void m00060_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00060_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00060_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m00060_a1-optimized.cl b/OpenCL/m00060_a1-optimized.cl index 8d41540d1..053efe581 100644 --- a/OpenCL/m00060_a1-optimized.cl +++ b/OpenCL/m00060_a1-optimized.cl @@ -99,7 +99,7 @@ DECLSPEC void hmac_md5_run (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE_AS md5_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m00060_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00060_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -267,15 +267,15 @@ KERNEL_FQ void m00060_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00060_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00060_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00060_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00060_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00060_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00060_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -455,10 +455,10 @@ KERNEL_FQ void m00060_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00060_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00060_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00060_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00060_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m00060_a1-pure.cl b/OpenCL/m00060_a1-pure.cl index 2341e99a9..2da99ce5b 100644 --- a/OpenCL/m00060_a1-pure.cl +++ b/OpenCL/m00060_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m00060_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00060_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -94,7 +94,7 @@ KERNEL_FQ void m00060_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00060_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00060_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m00060_a3-optimized.cl b/OpenCL/m00060_a3-optimized.cl index e829b6eb9..70cc97da0 100644 --- a/OpenCL/m00060_a3-optimized.cl +++ b/OpenCL/m00060_a3-optimized.cl @@ -311,7 +311,7 @@ DECLSPEC void m00060s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m00060_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00060_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -360,7 +360,7 @@ KERNEL_FQ void m00060_m04 (KERN_ATTR_BASIC ()) m00060m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00060_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00060_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -409,7 +409,7 @@ KERNEL_FQ void m00060_m08 (KERN_ATTR_BASIC ()) m00060m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00060_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00060_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -458,7 +458,7 @@ KERNEL_FQ void m00060_m16 (KERN_ATTR_BASIC ()) m00060m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00060_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00060_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -507,7 +507,7 @@ KERNEL_FQ void m00060_s04 (KERN_ATTR_BASIC ()) m00060s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00060_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00060_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -556,7 +556,7 @@ KERNEL_FQ void m00060_s08 (KERN_ATTR_BASIC ()) m00060s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00060_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00060_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m00060_a3-pure.cl b/OpenCL/m00060_a3-pure.cl index 9e9f7aa8b..ef34c2124 100644 --- a/OpenCL/m00060_a3-pure.cl +++ b/OpenCL/m00060_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m00060_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00060_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -80,7 +80,7 @@ KERNEL_FQ void m00060_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m00060_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00060_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m00070_a0-optimized.cl b/OpenCL/m00070_a0-optimized.cl index d866de9ec..870cb50b9 100644 --- a/OpenCL/m00070_a0-optimized.cl +++ b/OpenCL/m00070_a0-optimized.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m00070_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00070_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -152,15 +152,15 @@ KERNEL_FQ void m00070_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00070_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00070_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00070_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00070_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00070_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00070_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -311,10 +311,10 @@ KERNEL_FQ void m00070_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00070_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00070_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00070_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00070_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m00070_a0-pure.cl b/OpenCL/m00070_a0-pure.cl index 0a0c2e6de..a57981059 100644 --- a/OpenCL/m00070_a0-pure.cl +++ b/OpenCL/m00070_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m00070_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00070_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -60,7 +60,7 @@ KERNEL_FQ void m00070_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00070_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00070_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m00070_a1-optimized.cl b/OpenCL/m00070_a1-optimized.cl index 4376a0f12..0a916e5ed 100644 --- a/OpenCL/m00070_a1-optimized.cl +++ b/OpenCL/m00070_a1-optimized.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m00070_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00070_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -210,15 +210,15 @@ KERNEL_FQ void m00070_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00070_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00070_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00070_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00070_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00070_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00070_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -429,10 +429,10 @@ KERNEL_FQ void m00070_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00070_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00070_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00070_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00070_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m00070_a1-pure.cl b/OpenCL/m00070_a1-pure.cl index f35be6a39..dd6e3e51f 100644 --- a/OpenCL/m00070_a1-pure.cl +++ b/OpenCL/m00070_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m00070_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00070_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -56,7 +56,7 @@ KERNEL_FQ void m00070_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00070_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00070_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m00070_a3-optimized.cl b/OpenCL/m00070_a3-optimized.cl index 95cf2ac2b..6b9dfc180 100644 --- a/OpenCL/m00070_a3-optimized.cl +++ b/OpenCL/m00070_a3-optimized.cl @@ -426,7 +426,7 @@ DECLSPEC void m00070s (PRIVATE_AS u32 *w, const u32 pw_len, KERN_ATTR_FUNC_VECTO } } -KERNEL_FQ void m00070_m04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00070_m04 (KERN_ATTR_VECTOR ()) { /** * base @@ -466,7 +466,7 @@ KERNEL_FQ void m00070_m04 (KERN_ATTR_VECTOR ()) m00070m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00070_m08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00070_m08 (KERN_ATTR_VECTOR ()) { /** * base @@ -506,7 +506,7 @@ KERNEL_FQ void m00070_m08 (KERN_ATTR_VECTOR ()) m00070m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00070_m16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00070_m16 (KERN_ATTR_VECTOR ()) { /** * base @@ -546,7 +546,7 @@ KERNEL_FQ void m00070_m16 (KERN_ATTR_VECTOR ()) m00070m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00070_s04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00070_s04 (KERN_ATTR_VECTOR ()) { /** * base @@ -586,7 +586,7 @@ KERNEL_FQ void m00070_s04 (KERN_ATTR_VECTOR ()) m00070s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00070_s08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00070_s08 (KERN_ATTR_VECTOR ()) { /** * base @@ -626,7 +626,7 @@ KERNEL_FQ void m00070_s08 (KERN_ATTR_VECTOR ()) m00070s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00070_s16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00070_s16 (KERN_ATTR_VECTOR ()) { /** * base diff --git a/OpenCL/m00070_a3-pure.cl b/OpenCL/m00070_a3-pure.cl index 84a22e63d..9bca35d8a 100644 --- a/OpenCL/m00070_a3-pure.cl +++ b/OpenCL/m00070_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m00070_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00070_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -83,7 +83,7 @@ KERNEL_FQ void m00070_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m00070_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00070_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m00100_a0-optimized.cl b/OpenCL/m00100_a0-optimized.cl index 26d1c1753..fd79e84da 100644 --- a/OpenCL/m00100_a0-optimized.cl +++ b/OpenCL/m00100_a0-optimized.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m00100_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00100_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -188,15 +188,15 @@ KERNEL_FQ void m00100_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00100_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00100_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00100_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00100_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00100_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00100_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -389,10 +389,10 @@ KERNEL_FQ void m00100_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00100_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00100_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00100_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00100_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m00100_a0-pure.cl b/OpenCL/m00100_a0-pure.cl index 5142cedb3..0bef6afb6 100644 --- a/OpenCL/m00100_a0-pure.cl +++ b/OpenCL/m00100_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m00100_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00100_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -60,7 +60,7 @@ KERNEL_FQ void m00100_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00100_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00100_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m00100_a1-optimized.cl b/OpenCL/m00100_a1-optimized.cl index 4b33bbb0b..6f1a15db4 100644 --- a/OpenCL/m00100_a1-optimized.cl +++ b/OpenCL/m00100_a1-optimized.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m00100_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00100_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -244,15 +244,15 @@ KERNEL_FQ void m00100_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00100_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00100_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00100_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00100_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00100_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00100_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -503,10 +503,10 @@ KERNEL_FQ void m00100_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00100_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00100_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00100_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00100_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m00100_a1-pure.cl b/OpenCL/m00100_a1-pure.cl index 9007a7f9c..95f5e7af1 100644 --- a/OpenCL/m00100_a1-pure.cl +++ b/OpenCL/m00100_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m00100_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00100_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -56,7 +56,7 @@ KERNEL_FQ void m00100_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00100_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00100_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m00100_a3-optimized.cl b/OpenCL/m00100_a3-optimized.cl index ceb01ef4f..b3132558c 100644 --- a/OpenCL/m00100_a3-optimized.cl +++ b/OpenCL/m00100_a3-optimized.cl @@ -516,7 +516,7 @@ DECLSPEC void m00100s (PRIVATE_AS u32 *w, const u32 pw_len, KERN_ATTR_FUNC_VECTO } } -KERNEL_FQ void m00100_m04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00100_m04 (KERN_ATTR_VECTOR ()) { /** * base @@ -556,7 +556,7 @@ KERNEL_FQ void m00100_m04 (KERN_ATTR_VECTOR ()) m00100m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00100_m08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00100_m08 (KERN_ATTR_VECTOR ()) { /** * base @@ -596,7 +596,7 @@ KERNEL_FQ void m00100_m08 (KERN_ATTR_VECTOR ()) m00100m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00100_m16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00100_m16 (KERN_ATTR_VECTOR ()) { /** * base @@ -636,7 +636,7 @@ KERNEL_FQ void m00100_m16 (KERN_ATTR_VECTOR ()) m00100m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00100_s04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00100_s04 (KERN_ATTR_VECTOR ()) { /** * base @@ -676,7 +676,7 @@ KERNEL_FQ void m00100_s04 (KERN_ATTR_VECTOR ()) m00100s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00100_s08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00100_s08 (KERN_ATTR_VECTOR ()) { /** * base @@ -716,7 +716,7 @@ KERNEL_FQ void m00100_s08 (KERN_ATTR_VECTOR ()) m00100s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00100_s16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00100_s16 (KERN_ATTR_VECTOR ()) { /** * base diff --git a/OpenCL/m00100_a3-pure.cl b/OpenCL/m00100_a3-pure.cl index 06695068d..206f9271f 100644 --- a/OpenCL/m00100_a3-pure.cl +++ b/OpenCL/m00100_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m00100_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00100_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -69,7 +69,7 @@ KERNEL_FQ void m00100_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m00100_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00100_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m00110_a0-optimized.cl b/OpenCL/m00110_a0-optimized.cl index 7289495de..21de3710e 100644 --- a/OpenCL/m00110_a0-optimized.cl +++ b/OpenCL/m00110_a0-optimized.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m00110_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00110_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -261,15 +261,15 @@ KERNEL_FQ void m00110_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00110_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00110_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00110_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00110_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00110_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00110_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -535,10 +535,10 @@ KERNEL_FQ void m00110_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00110_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00110_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00110_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00110_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m00110_a0-pure.cl b/OpenCL/m00110_a0-pure.cl index 8f5ef2a0e..e1ba326df 100644 --- a/OpenCL/m00110_a0-pure.cl +++ b/OpenCL/m00110_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m00110_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00110_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -71,7 +71,7 @@ KERNEL_FQ void m00110_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00110_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00110_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m00110_a1-optimized.cl b/OpenCL/m00110_a1-optimized.cl index 2591c95d2..52fc35227 100644 --- a/OpenCL/m00110_a1-optimized.cl +++ b/OpenCL/m00110_a1-optimized.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m00110_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00110_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -319,15 +319,15 @@ KERNEL_FQ void m00110_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00110_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00110_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00110_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00110_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00110_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00110_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -653,10 +653,10 @@ KERNEL_FQ void m00110_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00110_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00110_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00110_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00110_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m00110_a1-pure.cl b/OpenCL/m00110_a1-pure.cl index 24b42d999..758c3d672 100644 --- a/OpenCL/m00110_a1-pure.cl +++ b/OpenCL/m00110_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m00110_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00110_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -67,7 +67,7 @@ KERNEL_FQ void m00110_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00110_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00110_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m00110_a3-optimized.cl b/OpenCL/m00110_a3-optimized.cl index d989e422a..bd00afdec 100644 --- a/OpenCL/m00110_a3-optimized.cl +++ b/OpenCL/m00110_a3-optimized.cl @@ -564,7 +564,7 @@ DECLSPEC void m00110s (PRIVATE_AS u32 *w, const u32 pw_len, KERN_ATTR_FUNC_VECTO } } -KERNEL_FQ void m00110_m04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00110_m04 (KERN_ATTR_VECTOR ()) { /** * base @@ -604,7 +604,7 @@ KERNEL_FQ void m00110_m04 (KERN_ATTR_VECTOR ()) m00110m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00110_m08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00110_m08 (KERN_ATTR_VECTOR ()) { /** * base @@ -644,7 +644,7 @@ KERNEL_FQ void m00110_m08 (KERN_ATTR_VECTOR ()) m00110m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00110_m16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00110_m16 (KERN_ATTR_VECTOR ()) { /** * base @@ -684,7 +684,7 @@ KERNEL_FQ void m00110_m16 (KERN_ATTR_VECTOR ()) m00110m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00110_s04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00110_s04 (KERN_ATTR_VECTOR ()) { /** * base @@ -724,7 +724,7 @@ KERNEL_FQ void m00110_s04 (KERN_ATTR_VECTOR ()) m00110s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00110_s08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00110_s08 (KERN_ATTR_VECTOR ()) { /** * base @@ -764,7 +764,7 @@ KERNEL_FQ void m00110_s08 (KERN_ATTR_VECTOR ()) m00110s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00110_s16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00110_s16 (KERN_ATTR_VECTOR ()) { /** * base diff --git a/OpenCL/m00110_a3-pure.cl b/OpenCL/m00110_a3-pure.cl index 6be13eeb2..0ba65e4cf 100644 --- a/OpenCL/m00110_a3-pure.cl +++ b/OpenCL/m00110_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m00110_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00110_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -80,7 +80,7 @@ KERNEL_FQ void m00110_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m00110_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00110_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m00120_a0-optimized.cl b/OpenCL/m00120_a0-optimized.cl index 86e3df072..9af2d1fae 100644 --- a/OpenCL/m00120_a0-optimized.cl +++ b/OpenCL/m00120_a0-optimized.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m00120_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00120_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -253,15 +253,15 @@ KERNEL_FQ void m00120_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00120_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00120_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00120_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00120_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00120_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00120_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -507,10 +507,10 @@ KERNEL_FQ void m00120_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00120_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00120_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00120_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00120_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m00120_a0-pure.cl b/OpenCL/m00120_a0-pure.cl index e1b9b1e67..35f8b4805 100644 --- a/OpenCL/m00120_a0-pure.cl +++ b/OpenCL/m00120_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m00120_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00120_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -64,7 +64,7 @@ KERNEL_FQ void m00120_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00120_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00120_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m00120_a1-optimized.cl b/OpenCL/m00120_a1-optimized.cl index 528b4427b..d94b728ba 100644 --- a/OpenCL/m00120_a1-optimized.cl +++ b/OpenCL/m00120_a1-optimized.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m00120_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00120_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -309,15 +309,15 @@ KERNEL_FQ void m00120_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00120_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00120_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00120_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00120_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00120_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00120_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -621,10 +621,10 @@ KERNEL_FQ void m00120_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00120_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00120_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00120_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00120_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m00120_a1-pure.cl b/OpenCL/m00120_a1-pure.cl index de06c0a45..52d4c32d4 100644 --- a/OpenCL/m00120_a1-pure.cl +++ b/OpenCL/m00120_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m00120_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00120_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -58,7 +58,7 @@ KERNEL_FQ void m00120_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00120_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00120_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m00120_a3-optimized.cl b/OpenCL/m00120_a3-optimized.cl index 843ce7179..f3ef7665a 100644 --- a/OpenCL/m00120_a3-optimized.cl +++ b/OpenCL/m00120_a3-optimized.cl @@ -467,7 +467,7 @@ DECLSPEC void m00120s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m00120_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00120_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -516,7 +516,7 @@ KERNEL_FQ void m00120_m04 (KERN_ATTR_BASIC ()) m00120m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00120_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00120_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -565,7 +565,7 @@ KERNEL_FQ void m00120_m08 (KERN_ATTR_BASIC ()) m00120m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00120_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00120_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -614,7 +614,7 @@ KERNEL_FQ void m00120_m16 (KERN_ATTR_BASIC ()) m00120m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00120_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00120_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -663,7 +663,7 @@ KERNEL_FQ void m00120_s04 (KERN_ATTR_BASIC ()) m00120s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00120_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00120_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -712,7 +712,7 @@ KERNEL_FQ void m00120_s08 (KERN_ATTR_BASIC ()) m00120s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00120_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00120_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m00120_a3-pure.cl b/OpenCL/m00120_a3-pure.cl index 609c14308..5bf4a7bbc 100644 --- a/OpenCL/m00120_a3-pure.cl +++ b/OpenCL/m00120_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m00120_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00120_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -75,7 +75,7 @@ KERNEL_FQ void m00120_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m00120_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00120_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m00130_a0-optimized.cl b/OpenCL/m00130_a0-optimized.cl index de71f2af1..35a848780 100644 --- a/OpenCL/m00130_a0-optimized.cl +++ b/OpenCL/m00130_a0-optimized.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m00130_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00130_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -266,15 +266,15 @@ KERNEL_FQ void m00130_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00130_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00130_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00130_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00130_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00130_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00130_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -545,10 +545,10 @@ KERNEL_FQ void m00130_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00130_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00130_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00130_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00130_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m00130_a0-pure.cl b/OpenCL/m00130_a0-pure.cl index d7fcf39a8..8cdc95f11 100644 --- a/OpenCL/m00130_a0-pure.cl +++ b/OpenCL/m00130_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m00130_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00130_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -71,7 +71,7 @@ KERNEL_FQ void m00130_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00130_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00130_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m00130_a1-optimized.cl b/OpenCL/m00130_a1-optimized.cl index 25f84e81f..de94f6571 100644 --- a/OpenCL/m00130_a1-optimized.cl +++ b/OpenCL/m00130_a1-optimized.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m00130_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00130_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -324,15 +324,15 @@ KERNEL_FQ void m00130_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00130_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00130_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00130_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00130_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00130_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00130_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -663,10 +663,10 @@ KERNEL_FQ void m00130_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00130_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00130_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00130_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00130_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m00130_a1-pure.cl b/OpenCL/m00130_a1-pure.cl index c8676867c..58668c131 100644 --- a/OpenCL/m00130_a1-pure.cl +++ b/OpenCL/m00130_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m00130_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00130_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -67,7 +67,7 @@ KERNEL_FQ void m00130_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00130_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00130_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m00130_a3-optimized.cl b/OpenCL/m00130_a3-optimized.cl index 3ea05c652..f085cca4d 100644 --- a/OpenCL/m00130_a3-optimized.cl +++ b/OpenCL/m00130_a3-optimized.cl @@ -564,7 +564,7 @@ DECLSPEC void m00130s (PRIVATE_AS u32 *w, const u32 pw_len, KERN_ATTR_FUNC_VECTO } } -KERNEL_FQ void m00130_m04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00130_m04 (KERN_ATTR_VECTOR ()) { /** * base @@ -604,7 +604,7 @@ KERNEL_FQ void m00130_m04 (KERN_ATTR_VECTOR ()) m00130m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00130_m08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00130_m08 (KERN_ATTR_VECTOR ()) { /** * base @@ -644,7 +644,7 @@ KERNEL_FQ void m00130_m08 (KERN_ATTR_VECTOR ()) m00130m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00130_m16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00130_m16 (KERN_ATTR_VECTOR ()) { /** * base @@ -684,7 +684,7 @@ KERNEL_FQ void m00130_m16 (KERN_ATTR_VECTOR ()) m00130m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00130_s04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00130_s04 (KERN_ATTR_VECTOR ()) { /** * base @@ -724,7 +724,7 @@ KERNEL_FQ void m00130_s04 (KERN_ATTR_VECTOR ()) m00130s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00130_s08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00130_s08 (KERN_ATTR_VECTOR ()) { /** * base @@ -764,7 +764,7 @@ KERNEL_FQ void m00130_s08 (KERN_ATTR_VECTOR ()) m00130s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00130_s16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00130_s16 (KERN_ATTR_VECTOR ()) { /** * base diff --git a/OpenCL/m00130_a3-pure.cl b/OpenCL/m00130_a3-pure.cl index 733e5a2fd..1ae2cfdfe 100644 --- a/OpenCL/m00130_a3-pure.cl +++ b/OpenCL/m00130_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m00130_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00130_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -80,7 +80,7 @@ KERNEL_FQ void m00130_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m00130_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00130_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m00140_a0-optimized.cl b/OpenCL/m00140_a0-optimized.cl index 0a01ab7cb..5fed269f3 100644 --- a/OpenCL/m00140_a0-optimized.cl +++ b/OpenCL/m00140_a0-optimized.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m00140_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00140_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -246,15 +246,15 @@ KERNEL_FQ void m00140_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00140_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00140_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00140_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00140_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00140_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00140_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -505,10 +505,10 @@ KERNEL_FQ void m00140_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00140_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00140_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00140_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00140_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m00140_a0-pure.cl b/OpenCL/m00140_a0-pure.cl index 3e4a5fd36..ae213125f 100644 --- a/OpenCL/m00140_a0-pure.cl +++ b/OpenCL/m00140_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m00140_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00140_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -64,7 +64,7 @@ KERNEL_FQ void m00140_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00140_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00140_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m00140_a1-optimized.cl b/OpenCL/m00140_a1-optimized.cl index d0dce68c6..81ddff1f1 100644 --- a/OpenCL/m00140_a1-optimized.cl +++ b/OpenCL/m00140_a1-optimized.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m00140_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00140_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -302,15 +302,15 @@ KERNEL_FQ void m00140_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00140_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00140_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00140_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00140_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00140_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00140_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -619,10 +619,10 @@ KERNEL_FQ void m00140_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00140_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00140_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00140_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00140_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m00140_a1-pure.cl b/OpenCL/m00140_a1-pure.cl index 3bd8223ba..7fadd12bc 100644 --- a/OpenCL/m00140_a1-pure.cl +++ b/OpenCL/m00140_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m00140_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00140_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -58,7 +58,7 @@ KERNEL_FQ void m00140_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00140_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00140_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m00140_a3-optimized.cl b/OpenCL/m00140_a3-optimized.cl index e0ef0076a..baec78f05 100644 --- a/OpenCL/m00140_a3-optimized.cl +++ b/OpenCL/m00140_a3-optimized.cl @@ -467,7 +467,7 @@ DECLSPEC void m00140s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m00140_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00140_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -516,7 +516,7 @@ KERNEL_FQ void m00140_m04 (KERN_ATTR_BASIC ()) m00140m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00140_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00140_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -565,7 +565,7 @@ KERNEL_FQ void m00140_m08 (KERN_ATTR_BASIC ()) m00140m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00140_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00140_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -614,7 +614,7 @@ KERNEL_FQ void m00140_m16 (KERN_ATTR_BASIC ()) m00140m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00140_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00140_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -663,7 +663,7 @@ KERNEL_FQ void m00140_s04 (KERN_ATTR_BASIC ()) m00140s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00140_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00140_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -712,7 +712,7 @@ KERNEL_FQ void m00140_s08 (KERN_ATTR_BASIC ()) m00140s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00140_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00140_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m00140_a3-pure.cl b/OpenCL/m00140_a3-pure.cl index dd921714f..aee5f7d5f 100644 --- a/OpenCL/m00140_a3-pure.cl +++ b/OpenCL/m00140_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m00140_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00140_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -75,7 +75,7 @@ KERNEL_FQ void m00140_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m00140_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00140_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m00150_a0-optimized.cl b/OpenCL/m00150_a0-optimized.cl index 69b7f3ea1..fd981eb51 100644 --- a/OpenCL/m00150_a0-optimized.cl +++ b/OpenCL/m00150_a0-optimized.cl @@ -105,7 +105,7 @@ DECLSPEC void hmac_sha1_run (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE_A sha1_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m00150_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00150_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -219,15 +219,15 @@ KERNEL_FQ void m00150_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00150_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00150_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00150_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00150_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00150_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00150_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -353,10 +353,10 @@ KERNEL_FQ void m00150_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00150_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00150_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00150_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00150_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m00150_a0-pure.cl b/OpenCL/m00150_a0-pure.cl index 29b929c95..4acba3e47 100644 --- a/OpenCL/m00150_a0-pure.cl +++ b/OpenCL/m00150_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m00150_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00150_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -69,7 +69,7 @@ KERNEL_FQ void m00150_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00150_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00150_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m00150_a1-optimized.cl b/OpenCL/m00150_a1-optimized.cl index 3fb66a02f..adc3fc0fb 100644 --- a/OpenCL/m00150_a1-optimized.cl +++ b/OpenCL/m00150_a1-optimized.cl @@ -103,7 +103,7 @@ DECLSPEC void hmac_sha1_run (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE_A sha1_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m00150_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00150_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -285,15 +285,15 @@ KERNEL_FQ void m00150_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00150_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00150_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00150_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00150_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00150_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00150_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -487,10 +487,10 @@ KERNEL_FQ void m00150_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00150_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00150_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00150_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00150_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m00150_a1-pure.cl b/OpenCL/m00150_a1-pure.cl index 7a607e8b7..395244729 100644 --- a/OpenCL/m00150_a1-pure.cl +++ b/OpenCL/m00150_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m00150_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00150_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -92,7 +92,7 @@ KERNEL_FQ void m00150_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00150_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00150_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m00150_a3-optimized.cl b/OpenCL/m00150_a3-optimized.cl index b959bfb8a..de810699e 100644 --- a/OpenCL/m00150_a3-optimized.cl +++ b/OpenCL/m00150_a3-optimized.cl @@ -319,7 +319,7 @@ DECLSPEC void m00150s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m00150_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00150_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -368,7 +368,7 @@ KERNEL_FQ void m00150_m04 (KERN_ATTR_BASIC ()) m00150m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00150_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00150_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -417,7 +417,7 @@ KERNEL_FQ void m00150_m08 (KERN_ATTR_BASIC ()) m00150m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00150_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00150_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -466,7 +466,7 @@ KERNEL_FQ void m00150_m16 (KERN_ATTR_BASIC ()) m00150m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00150_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00150_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -515,7 +515,7 @@ KERNEL_FQ void m00150_s04 (KERN_ATTR_BASIC ()) m00150s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00150_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00150_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -564,7 +564,7 @@ KERNEL_FQ void m00150_s08 (KERN_ATTR_BASIC ()) m00150s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00150_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00150_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m00150_a3-pure.cl b/OpenCL/m00150_a3-pure.cl index 789ebb4d5..57674fc54 100644 --- a/OpenCL/m00150_a3-pure.cl +++ b/OpenCL/m00150_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m00150_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00150_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -78,7 +78,7 @@ KERNEL_FQ void m00150_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m00150_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00150_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m00160_a0-optimized.cl b/OpenCL/m00160_a0-optimized.cl index cf77ebe6b..3b7e295e8 100644 --- a/OpenCL/m00160_a0-optimized.cl +++ b/OpenCL/m00160_a0-optimized.cl @@ -105,7 +105,7 @@ DECLSPEC void hmac_sha1_run (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE_A sha1_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m00160_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00160_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -232,15 +232,15 @@ KERNEL_FQ void m00160_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00160_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00160_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00160_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00160_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00160_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00160_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -379,10 +379,10 @@ KERNEL_FQ void m00160_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00160_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00160_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00160_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00160_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m00160_a0-pure.cl b/OpenCL/m00160_a0-pure.cl index 95648d839..a818239b9 100644 --- a/OpenCL/m00160_a0-pure.cl +++ b/OpenCL/m00160_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m00160_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00160_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -71,7 +71,7 @@ KERNEL_FQ void m00160_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00160_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00160_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m00160_a1-optimized.cl b/OpenCL/m00160_a1-optimized.cl index 730e29a27..196bfc827 100644 --- a/OpenCL/m00160_a1-optimized.cl +++ b/OpenCL/m00160_a1-optimized.cl @@ -103,7 +103,7 @@ DECLSPEC void hmac_sha1_run (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE_A sha1_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m00160_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00160_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -290,15 +290,15 @@ KERNEL_FQ void m00160_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00160_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00160_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00160_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00160_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00160_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00160_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -497,10 +497,10 @@ KERNEL_FQ void m00160_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00160_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00160_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00160_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00160_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m00160_a1-pure.cl b/OpenCL/m00160_a1-pure.cl index a5c3830c8..a9d7b13de 100644 --- a/OpenCL/m00160_a1-pure.cl +++ b/OpenCL/m00160_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m00160_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00160_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -94,7 +94,7 @@ KERNEL_FQ void m00160_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00160_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00160_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m00160_a3-optimized.cl b/OpenCL/m00160_a3-optimized.cl index d59399df0..ae8ac654b 100644 --- a/OpenCL/m00160_a3-optimized.cl +++ b/OpenCL/m00160_a3-optimized.cl @@ -315,7 +315,7 @@ DECLSPEC void m00160s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m00160_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00160_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -364,7 +364,7 @@ KERNEL_FQ void m00160_m04 (KERN_ATTR_BASIC ()) m00160m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00160_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00160_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -413,7 +413,7 @@ KERNEL_FQ void m00160_m08 (KERN_ATTR_BASIC ()) m00160m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00160_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00160_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -462,7 +462,7 @@ KERNEL_FQ void m00160_m16 (KERN_ATTR_BASIC ()) m00160m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00160_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00160_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -511,7 +511,7 @@ KERNEL_FQ void m00160_s04 (KERN_ATTR_BASIC ()) m00160s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00160_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00160_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -560,7 +560,7 @@ KERNEL_FQ void m00160_s08 (KERN_ATTR_BASIC ()) m00160s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00160_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00160_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m00160_a3-pure.cl b/OpenCL/m00160_a3-pure.cl index 907e393c7..45e55bce3 100644 --- a/OpenCL/m00160_a3-pure.cl +++ b/OpenCL/m00160_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m00160_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00160_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -80,7 +80,7 @@ KERNEL_FQ void m00160_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m00160_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00160_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m00170_a0-optimized.cl b/OpenCL/m00170_a0-optimized.cl index 0eb3ee0bb..2376b88bd 100644 --- a/OpenCL/m00170_a0-optimized.cl +++ b/OpenCL/m00170_a0-optimized.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m00170_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00170_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -193,15 +193,15 @@ KERNEL_FQ void m00170_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00170_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00170_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00170_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00170_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00170_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00170_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -399,10 +399,10 @@ KERNEL_FQ void m00170_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00170_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00170_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00170_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00170_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m00170_a0-pure.cl b/OpenCL/m00170_a0-pure.cl index 624f51f4e..89aed961a 100644 --- a/OpenCL/m00170_a0-pure.cl +++ b/OpenCL/m00170_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m00170_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00170_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -60,7 +60,7 @@ KERNEL_FQ void m00170_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00170_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00170_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m00170_a1-optimized.cl b/OpenCL/m00170_a1-optimized.cl index b281b9f90..84ea48f4b 100644 --- a/OpenCL/m00170_a1-optimized.cl +++ b/OpenCL/m00170_a1-optimized.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m00170_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00170_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -249,15 +249,15 @@ KERNEL_FQ void m00170_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00170_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00170_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00170_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00170_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00170_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00170_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -513,10 +513,10 @@ KERNEL_FQ void m00170_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00170_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00170_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00170_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00170_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m00170_a1-pure.cl b/OpenCL/m00170_a1-pure.cl index c7c9aa16b..354ed502a 100644 --- a/OpenCL/m00170_a1-pure.cl +++ b/OpenCL/m00170_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m00170_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00170_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -56,7 +56,7 @@ KERNEL_FQ void m00170_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00170_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00170_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m00170_a3-optimized.cl b/OpenCL/m00170_a3-optimized.cl index a96d1d5a7..77217b348 100644 --- a/OpenCL/m00170_a3-optimized.cl +++ b/OpenCL/m00170_a3-optimized.cl @@ -513,7 +513,7 @@ DECLSPEC void m00170s (PRIVATE_AS u32 *w, const u32 pw_len, KERN_ATTR_FUNC_VECTO } } -KERNEL_FQ void m00170_m04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00170_m04 (KERN_ATTR_VECTOR ()) { /** * base @@ -553,7 +553,7 @@ KERNEL_FQ void m00170_m04 (KERN_ATTR_VECTOR ()) m00170m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00170_m08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00170_m08 (KERN_ATTR_VECTOR ()) { /** * base @@ -593,7 +593,7 @@ KERNEL_FQ void m00170_m08 (KERN_ATTR_VECTOR ()) m00170m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00170_m16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00170_m16 (KERN_ATTR_VECTOR ()) { /** * base @@ -633,7 +633,7 @@ KERNEL_FQ void m00170_m16 (KERN_ATTR_VECTOR ()) m00170m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00170_s04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00170_s04 (KERN_ATTR_VECTOR ()) { /** * base @@ -673,7 +673,7 @@ KERNEL_FQ void m00170_s04 (KERN_ATTR_VECTOR ()) m00170s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00170_s08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00170_s08 (KERN_ATTR_VECTOR ()) { /** * base @@ -713,7 +713,7 @@ KERNEL_FQ void m00170_s08 (KERN_ATTR_VECTOR ()) m00170s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00170_s16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00170_s16 (KERN_ATTR_VECTOR ()) { /** * base diff --git a/OpenCL/m00170_a3-pure.cl b/OpenCL/m00170_a3-pure.cl index efebacac5..a399605ff 100644 --- a/OpenCL/m00170_a3-pure.cl +++ b/OpenCL/m00170_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m00170_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00170_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -69,7 +69,7 @@ KERNEL_FQ void m00170_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m00170_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00170_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m00200_a0-optimized.cl b/OpenCL/m00200_a0-optimized.cl index d7b759cf7..713ff7b04 100644 --- a/OpenCL/m00200_a0-optimized.cl +++ b/OpenCL/m00200_a0-optimized.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_simd.cl) #endif -KERNEL_FQ void m00200_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00200_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -134,15 +134,15 @@ KERNEL_FQ void m00200_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00200_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00200_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00200_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00200_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00200_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00200_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -272,10 +272,10 @@ KERNEL_FQ void m00200_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00200_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00200_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00200_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00200_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m00200_a1-optimized.cl b/OpenCL/m00200_a1-optimized.cl index 5cc2e46e7..fcef4548a 100644 --- a/OpenCL/m00200_a1-optimized.cl +++ b/OpenCL/m00200_a1-optimized.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_simd.cl) #endif -KERNEL_FQ void m00200_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00200_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -196,15 +196,15 @@ KERNEL_FQ void m00200_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00200_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00200_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00200_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00200_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00200_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00200_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -398,10 +398,10 @@ KERNEL_FQ void m00200_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00200_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00200_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00200_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00200_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m00200_a3-optimized.cl b/OpenCL/m00200_a3-optimized.cl index 2de401b84..3c2a6fe3d 100644 --- a/OpenCL/m00200_a3-optimized.cl +++ b/OpenCL/m00200_a3-optimized.cl @@ -340,7 +340,7 @@ DECLSPEC void m00200s (PRIVATE_AS u32 *w, const u32 pw_len, KERN_ATTR_FUNC_VECTO CODE_POST_S; } -KERNEL_FQ void m00200_m04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00200_m04 (KERN_ATTR_VECTOR ()) { /** * base @@ -380,7 +380,7 @@ KERNEL_FQ void m00200_m04 (KERN_ATTR_VECTOR ()) m00200m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00200_m08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00200_m08 (KERN_ATTR_VECTOR ()) { /** * base @@ -420,7 +420,7 @@ KERNEL_FQ void m00200_m08 (KERN_ATTR_VECTOR ()) m00200m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00200_m16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00200_m16 (KERN_ATTR_VECTOR ()) { /** * base @@ -460,7 +460,7 @@ KERNEL_FQ void m00200_m16 (KERN_ATTR_VECTOR ()) m00200m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00200_s04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00200_s04 (KERN_ATTR_VECTOR ()) { /** * base @@ -500,7 +500,7 @@ KERNEL_FQ void m00200_s04 (KERN_ATTR_VECTOR ()) m00200s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00200_s08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00200_s08 (KERN_ATTR_VECTOR ()) { /** * base @@ -540,7 +540,7 @@ KERNEL_FQ void m00200_s08 (KERN_ATTR_VECTOR ()) m00200s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00200_s16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00200_s16 (KERN_ATTR_VECTOR ()) { /** * base diff --git a/OpenCL/m00300_a0-optimized.cl b/OpenCL/m00300_a0-optimized.cl index 594d190dc..d4f10f46f 100644 --- a/OpenCL/m00300_a0-optimized.cl +++ b/OpenCL/m00300_a0-optimized.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m00300_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00300_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -313,15 +313,15 @@ KERNEL_FQ void m00300_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00300_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00300_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00300_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00300_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00300_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00300_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -639,10 +639,10 @@ KERNEL_FQ void m00300_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00300_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00300_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00300_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00300_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m00300_a0-pure.cl b/OpenCL/m00300_a0-pure.cl index a328a5e83..7398af811 100644 --- a/OpenCL/m00300_a0-pure.cl +++ b/OpenCL/m00300_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m00300_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00300_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -83,7 +83,7 @@ KERNEL_FQ void m00300_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00300_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00300_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m00300_a1-optimized.cl b/OpenCL/m00300_a1-optimized.cl index 77b0ffb0c..2206be011 100644 --- a/OpenCL/m00300_a1-optimized.cl +++ b/OpenCL/m00300_a1-optimized.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m00300_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00300_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -369,15 +369,15 @@ KERNEL_FQ void m00300_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00300_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00300_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00300_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00300_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00300_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00300_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -753,10 +753,10 @@ KERNEL_FQ void m00300_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00300_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00300_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00300_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00300_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m00300_a1-pure.cl b/OpenCL/m00300_a1-pure.cl index 3ba139992..c27282a6e 100644 --- a/OpenCL/m00300_a1-pure.cl +++ b/OpenCL/m00300_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m00300_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00300_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -79,7 +79,7 @@ KERNEL_FQ void m00300_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00300_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00300_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m00300_a3-optimized.cl b/OpenCL/m00300_a3-optimized.cl index 185cd9938..b6a5f211a 100644 --- a/OpenCL/m00300_a3-optimized.cl +++ b/OpenCL/m00300_a3-optimized.cl @@ -767,7 +767,7 @@ DECLSPEC void m00300s (PRIVATE_AS u32 *w, const u32 pw_len, KERN_ATTR_FUNC_VECTO } } -KERNEL_FQ void m00300_m04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00300_m04 (KERN_ATTR_VECTOR ()) { /** * base @@ -807,7 +807,7 @@ KERNEL_FQ void m00300_m04 (KERN_ATTR_VECTOR ()) m00300m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00300_m08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00300_m08 (KERN_ATTR_VECTOR ()) { /** * base @@ -847,7 +847,7 @@ KERNEL_FQ void m00300_m08 (KERN_ATTR_VECTOR ()) m00300m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00300_m16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00300_m16 (KERN_ATTR_VECTOR ()) { /** * base @@ -887,7 +887,7 @@ KERNEL_FQ void m00300_m16 (KERN_ATTR_VECTOR ()) m00300m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00300_s04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00300_s04 (KERN_ATTR_VECTOR ()) { /** * base @@ -927,7 +927,7 @@ KERNEL_FQ void m00300_s04 (KERN_ATTR_VECTOR ()) m00300s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00300_s08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00300_s08 (KERN_ATTR_VECTOR ()) { /** * base @@ -967,7 +967,7 @@ KERNEL_FQ void m00300_s08 (KERN_ATTR_VECTOR ()) m00300s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00300_s16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00300_s16 (KERN_ATTR_VECTOR ()) { /** * base diff --git a/OpenCL/m00300_a3-pure.cl b/OpenCL/m00300_a3-pure.cl index dcd9ac736..c7432e0b2 100644 --- a/OpenCL/m00300_a3-pure.cl +++ b/OpenCL/m00300_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m00300_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00300_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -92,7 +92,7 @@ KERNEL_FQ void m00300_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m00300_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00300_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m00400-optimized.cl b/OpenCL/m00400-optimized.cl index 8ddeb789a..993ef9a36 100644 --- a/OpenCL/m00400-optimized.cl +++ b/OpenCL/m00400-optimized.cl @@ -23,7 +23,7 @@ typedef struct phpass_tmp } phpass_tmp_t; -KERNEL_FQ void m00400_init (KERN_ATTR_TMPS (phpass_tmp_t)) +KERNEL_FQ KERNEL_FA void m00400_init (KERN_ATTR_TMPS (phpass_tmp_t)) { /** * base @@ -120,7 +120,7 @@ KERNEL_FQ void m00400_init (KERN_ATTR_TMPS (phpass_tmp_t)) tmps[gid].digest_buf[3] = digest[3]; } -KERNEL_FQ void m00400_loop (KERN_ATTR_TMPS (phpass_tmp_t)) +KERNEL_FQ KERNEL_FA void m00400_loop (KERN_ATTR_TMPS (phpass_tmp_t)) { /** * base @@ -211,7 +211,7 @@ KERNEL_FQ void m00400_loop (KERN_ATTR_TMPS (phpass_tmp_t)) unpackv (tmps, digest_buf, gid, 3, digest[3]); } -KERNEL_FQ void m00400_comp (KERN_ATTR_TMPS (phpass_tmp_t)) +KERNEL_FQ KERNEL_FA void m00400_comp (KERN_ATTR_TMPS (phpass_tmp_t)) { /** * modifier diff --git a/OpenCL/m00400-pure.cl b/OpenCL/m00400-pure.cl index 6fa76b732..20cbc91af 100644 --- a/OpenCL/m00400-pure.cl +++ b/OpenCL/m00400-pure.cl @@ -23,7 +23,7 @@ typedef struct phpass_tmp } phpass_tmp_t; -KERNEL_FQ void m00400_init (KERN_ATTR_TMPS (phpass_tmp_t)) +KERNEL_FQ KERNEL_FA void m00400_init (KERN_ATTR_TMPS (phpass_tmp_t)) { /** * base @@ -60,7 +60,7 @@ KERNEL_FQ void m00400_init (KERN_ATTR_TMPS (phpass_tmp_t)) tmps[gid].digest_buf[3] = digest[3]; } -KERNEL_FQ void m00400_loop (KERN_ATTR_TMPS (phpass_tmp_t)) +KERNEL_FQ KERNEL_FA void m00400_loop (KERN_ATTR_TMPS (phpass_tmp_t)) { /** * base @@ -161,7 +161,7 @@ KERNEL_FQ void m00400_loop (KERN_ATTR_TMPS (phpass_tmp_t)) tmps[gid].digest_buf[3] = digest[3]; } -KERNEL_FQ void m00400_comp (KERN_ATTR_TMPS (phpass_tmp_t)) +KERNEL_FQ KERNEL_FA void m00400_comp (KERN_ATTR_TMPS (phpass_tmp_t)) { /** * modifier diff --git a/OpenCL/m00500-optimized.cl b/OpenCL/m00500-optimized.cl index f44294283..d7b7f57d2 100644 --- a/OpenCL/m00500-optimized.cl +++ b/OpenCL/m00500-optimized.cl @@ -659,7 +659,7 @@ DECLSPEC void append_1st (PRIVATE_AS u32 *block0, PRIVATE_AS u32 *block1, PRIVAT } } -KERNEL_FQ void m00500_init (KERN_ATTR_TMPS (md5crypt_tmp_t)) +KERNEL_FQ KERNEL_FA void m00500_init (KERN_ATTR_TMPS (md5crypt_tmp_t)) { /** * base @@ -822,7 +822,7 @@ KERNEL_FQ void m00500_init (KERN_ATTR_TMPS (md5crypt_tmp_t)) tmps[gid].digest_buf[3] = digest[3]; } -KERNEL_FQ void m00500_loop (KERN_ATTR_TMPS (md5crypt_tmp_t)) +KERNEL_FQ KERNEL_FA void m00500_loop (KERN_ATTR_TMPS (md5crypt_tmp_t)) { /** * base @@ -1010,7 +1010,7 @@ KERNEL_FQ void m00500_loop (KERN_ATTR_TMPS (md5crypt_tmp_t)) tmps[gid].digest_buf[3] = digest[3]; } -KERNEL_FQ void m00500_comp (KERN_ATTR_TMPS (md5crypt_tmp_t)) +KERNEL_FQ KERNEL_FA void m00500_comp (KERN_ATTR_TMPS (md5crypt_tmp_t)) { /** * modifier diff --git a/OpenCL/m00500-pure.cl b/OpenCL/m00500-pure.cl index 6c9700639..bb1605d98 100644 --- a/OpenCL/m00500-pure.cl +++ b/OpenCL/m00500-pure.cl @@ -24,7 +24,7 @@ typedef struct md5crypt_tmp #define md5crypt_magic 0x00243124u -KERNEL_FQ void m00500_init (KERN_ATTR_TMPS (md5crypt_tmp_t)) +KERNEL_FQ KERNEL_FA void m00500_init (KERN_ATTR_TMPS (md5crypt_tmp_t)) { /** * base @@ -130,7 +130,7 @@ KERNEL_FQ void m00500_init (KERN_ATTR_TMPS (md5crypt_tmp_t)) tmps[gid].digest_buf[3] = md5_ctx.h[3]; } -KERNEL_FQ void m00500_loop (KERN_ATTR_TMPS (md5crypt_tmp_t)) +KERNEL_FQ KERNEL_FA void m00500_loop (KERN_ATTR_TMPS (md5crypt_tmp_t)) { /** * base @@ -225,7 +225,7 @@ KERNEL_FQ void m00500_loop (KERN_ATTR_TMPS (md5crypt_tmp_t)) tmps[gid].digest_buf[3] = digest[3]; } -KERNEL_FQ void m00500_comp (KERN_ATTR_TMPS (md5crypt_tmp_t)) +KERNEL_FQ KERNEL_FA void m00500_comp (KERN_ATTR_TMPS (md5crypt_tmp_t)) { /** * modifier diff --git a/OpenCL/m00600_a0-optimized.cl b/OpenCL/m00600_a0-optimized.cl index 1402dde1c..b66891bb2 100644 --- a/OpenCL/m00600_a0-optimized.cl +++ b/OpenCL/m00600_a0-optimized.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_blake2b.cl) #endif -KERNEL_FQ void m00600_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00600_m04 (KERN_ATTR_RULES ()) { /** * base @@ -94,15 +94,15 @@ KERNEL_FQ void m00600_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00600_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00600_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00600_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00600_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00600_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00600_s04 (KERN_ATTR_RULES ()) { /** * base @@ -192,10 +192,10 @@ KERNEL_FQ void m00600_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00600_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00600_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00600_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00600_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m00600_a0-pure.cl b/OpenCL/m00600_a0-pure.cl index 8324fd1be..686c6e404 100644 --- a/OpenCL/m00600_a0-pure.cl +++ b/OpenCL/m00600_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_blake2b.cl) #endif -KERNEL_FQ void m00600_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00600_mxx (KERN_ATTR_RULES ()) { /** * base @@ -57,7 +57,7 @@ KERNEL_FQ void m00600_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00600_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00600_sxx (KERN_ATTR_RULES ()) { /** * base diff --git a/OpenCL/m00600_a1-optimized.cl b/OpenCL/m00600_a1-optimized.cl index 40edd58d3..686ca4547 100644 --- a/OpenCL/m00600_a1-optimized.cl +++ b/OpenCL/m00600_a1-optimized.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_blake2b.cl) #endif -KERNEL_FQ void m00600_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00600_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -152,15 +152,15 @@ KERNEL_FQ void m00600_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00600_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00600_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00600_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00600_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00600_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00600_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -310,10 +310,10 @@ KERNEL_FQ void m00600_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00600_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00600_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00600_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00600_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m00600_a1-pure.cl b/OpenCL/m00600_a1-pure.cl index bd7fe085a..cf9007fe9 100644 --- a/OpenCL/m00600_a1-pure.cl +++ b/OpenCL/m00600_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_blake2b.cl) #endif -KERNEL_FQ void m00600_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00600_mxx (KERN_ATTR_BASIC ()) { /** * base @@ -55,7 +55,7 @@ KERNEL_FQ void m00600_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00600_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00600_sxx (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m00600_a3-optimized.cl b/OpenCL/m00600_a3-optimized.cl index 8cbdf7a95..a8774830d 100644 --- a/OpenCL/m00600_a3-optimized.cl +++ b/OpenCL/m00600_a3-optimized.cl @@ -186,7 +186,7 @@ DECLSPEC void m00600s (PRIVATE_AS u32 *w, const u32 pw_len, KERN_ATTR_FUNC_VECTO } } -KERNEL_FQ void m00600_m04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00600_m04 (KERN_ATTR_VECTOR ()) { /** * base @@ -226,7 +226,7 @@ KERNEL_FQ void m00600_m04 (KERN_ATTR_VECTOR ()) m00600m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00600_m08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00600_m08 (KERN_ATTR_VECTOR ()) { /** * base @@ -266,7 +266,7 @@ KERNEL_FQ void m00600_m08 (KERN_ATTR_VECTOR ()) m00600m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00600_m16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00600_m16 (KERN_ATTR_VECTOR ()) { /** * base @@ -306,7 +306,7 @@ KERNEL_FQ void m00600_m16 (KERN_ATTR_VECTOR ()) m00600m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00600_s04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00600_s04 (KERN_ATTR_VECTOR ()) { /** * base @@ -346,7 +346,7 @@ KERNEL_FQ void m00600_s04 (KERN_ATTR_VECTOR ()) m00600s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00600_s08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00600_s08 (KERN_ATTR_VECTOR ()) { /** * base @@ -386,7 +386,7 @@ KERNEL_FQ void m00600_s08 (KERN_ATTR_VECTOR ()) m00600s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00600_s16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00600_s16 (KERN_ATTR_VECTOR ()) { /** * base diff --git a/OpenCL/m00600_a3-pure.cl b/OpenCL/m00600_a3-pure.cl index 7b80092bf..93005c627 100644 --- a/OpenCL/m00600_a3-pure.cl +++ b/OpenCL/m00600_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_blake2b.cl) #endif -KERNEL_FQ void m00600_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00600_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -66,7 +66,7 @@ KERNEL_FQ void m00600_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m00600_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00600_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m00610_a0-optimized.cl b/OpenCL/m00610_a0-optimized.cl index 01b29a159..be62aad8e 100644 --- a/OpenCL/m00610_a0-optimized.cl +++ b/OpenCL/m00610_a0-optimized.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_blake2b.cl) #endif -KERNEL_FQ void m00610_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00610_m04 (KERN_ATTR_RULES ()) { /** * base @@ -173,15 +173,15 @@ KERNEL_FQ void m00610_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00610_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00610_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00610_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00610_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00610_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00610_s04 (KERN_ATTR_RULES ()) { /** * base @@ -350,11 +350,11 @@ KERNEL_FQ void m00610_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00610_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00610_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00610_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00610_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m00610_a0-pure.cl b/OpenCL/m00610_a0-pure.cl index f3d98ff9e..d126761eb 100644 --- a/OpenCL/m00610_a0-pure.cl +++ b/OpenCL/m00610_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_blake2b.cl) #endif -KERNEL_FQ void m00610_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00610_mxx (KERN_ATTR_RULES ()) { /** * base @@ -68,7 +68,7 @@ KERNEL_FQ void m00610_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00610_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00610_sxx (KERN_ATTR_RULES ()) { /** * base diff --git a/OpenCL/m00610_a1-optimized.cl b/OpenCL/m00610_a1-optimized.cl index a6728bce4..246dddef7 100644 --- a/OpenCL/m00610_a1-optimized.cl +++ b/OpenCL/m00610_a1-optimized.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_blake2b.cl) #endif -KERNEL_FQ void m00610_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00610_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -231,15 +231,15 @@ KERNEL_FQ void m00610_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00610_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00610_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00610_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00610_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00610_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00610_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -468,11 +468,11 @@ KERNEL_FQ void m00610_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00610_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00610_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00610_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00610_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m00610_a1-pure.cl b/OpenCL/m00610_a1-pure.cl index 9eeabb060..b04796a55 100644 --- a/OpenCL/m00610_a1-pure.cl +++ b/OpenCL/m00610_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_blake2b.cl) #endif -KERNEL_FQ void m00610_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00610_mxx (KERN_ATTR_BASIC ()) { /** * base @@ -66,7 +66,7 @@ KERNEL_FQ void m00610_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00610_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00610_sxx (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m00610_a3-optimized.cl b/OpenCL/m00610_a3-optimized.cl index 1ebbffb51..bc9b38266 100644 --- a/OpenCL/m00610_a3-optimized.cl +++ b/OpenCL/m00610_a3-optimized.cl @@ -222,7 +222,7 @@ DECLSPEC void m00610s (PRIVATE_AS u32 *w, const u32 pw_len, KERN_ATTR_FUNC_VECTO } } -KERNEL_FQ void m00610_m04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00610_m04 (KERN_ATTR_VECTOR ()) { /** * base @@ -262,7 +262,7 @@ KERNEL_FQ void m00610_m04 (KERN_ATTR_VECTOR ()) m00610m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00610_m08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00610_m08 (KERN_ATTR_VECTOR ()) { /** * base @@ -302,7 +302,7 @@ KERNEL_FQ void m00610_m08 (KERN_ATTR_VECTOR ()) m00610m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00610_m16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00610_m16 (KERN_ATTR_VECTOR ()) { /** * base @@ -342,7 +342,7 @@ KERNEL_FQ void m00610_m16 (KERN_ATTR_VECTOR ()) m00610m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00610_s04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00610_s04 (KERN_ATTR_VECTOR ()) { /** * base @@ -382,7 +382,7 @@ KERNEL_FQ void m00610_s04 (KERN_ATTR_VECTOR ()) m00610s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00610_s08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00610_s08 (KERN_ATTR_VECTOR ()) { /** * base @@ -422,7 +422,7 @@ KERNEL_FQ void m00610_s08 (KERN_ATTR_VECTOR ()) m00610s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00610_s16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00610_s16 (KERN_ATTR_VECTOR ()) { /** * base diff --git a/OpenCL/m00610_a3-pure.cl b/OpenCL/m00610_a3-pure.cl index d61b6f847..c84377d6c 100644 --- a/OpenCL/m00610_a3-pure.cl +++ b/OpenCL/m00610_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_blake2b.cl) #endif -KERNEL_FQ void m00610_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00610_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -79,7 +79,7 @@ KERNEL_FQ void m00610_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m00610_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00610_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m00620_a0-optimized.cl b/OpenCL/m00620_a0-optimized.cl index 29144dc4a..d6be652b9 100644 --- a/OpenCL/m00620_a0-optimized.cl +++ b/OpenCL/m00620_a0-optimized.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_blake2b.cl) #endif -KERNEL_FQ void m00620_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00620_m04 (KERN_ATTR_RULES ()) { /** * base @@ -151,15 +151,15 @@ KERNEL_FQ void m00620_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00620_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00620_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00620_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00620_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00620_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00620_s04 (KERN_ATTR_RULES ()) { /** * base @@ -306,11 +306,11 @@ KERNEL_FQ void m00620_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00620_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00620_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00620_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00620_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m00620_a0-pure.cl b/OpenCL/m00620_a0-pure.cl index bcc056611..d35f3ce76 100644 --- a/OpenCL/m00620_a0-pure.cl +++ b/OpenCL/m00620_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_blake2b.cl) #endif -KERNEL_FQ void m00620_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00620_mxx (KERN_ATTR_RULES ()) { /** * base @@ -62,7 +62,7 @@ KERNEL_FQ void m00620_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00620_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00620_sxx (KERN_ATTR_RULES ()) { /** * base diff --git a/OpenCL/m00620_a1-optimized.cl b/OpenCL/m00620_a1-optimized.cl index fa50e5d89..bd4e6ae8e 100644 --- a/OpenCL/m00620_a1-optimized.cl +++ b/OpenCL/m00620_a1-optimized.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_blake2b.cl) #endif -KERNEL_FQ void m00620_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00620_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -209,15 +209,15 @@ KERNEL_FQ void m00620_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00620_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00620_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00620_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00620_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00620_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00620_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -424,11 +424,11 @@ KERNEL_FQ void m00620_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00620_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00620_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00620_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00620_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m00620_a1-pure.cl b/OpenCL/m00620_a1-pure.cl index 70ffccc8c..25ad2115a 100644 --- a/OpenCL/m00620_a1-pure.cl +++ b/OpenCL/m00620_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_blake2b.cl) #endif -KERNEL_FQ void m00620_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00620_mxx (KERN_ATTR_BASIC ()) { /** * base @@ -57,7 +57,7 @@ KERNEL_FQ void m00620_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00620_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00620_sxx (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m00620_a3-optimized.cl b/OpenCL/m00620_a3-optimized.cl index 64cb352c5..e063d7fc1 100644 --- a/OpenCL/m00620_a3-optimized.cl +++ b/OpenCL/m00620_a3-optimized.cl @@ -294,7 +294,7 @@ DECLSPEC void m00620s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m00620_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00620_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -343,7 +343,7 @@ KERNEL_FQ void m00620_m04 (KERN_ATTR_BASIC ()) m00620m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00620_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00620_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -392,7 +392,7 @@ KERNEL_FQ void m00620_m08 (KERN_ATTR_BASIC ()) m00620m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00620_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00620_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -441,7 +441,7 @@ KERNEL_FQ void m00620_m16 (KERN_ATTR_BASIC ()) m00620m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00620_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00620_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -490,7 +490,7 @@ KERNEL_FQ void m00620_s04 (KERN_ATTR_BASIC ()) m00620s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00620_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00620_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -539,7 +539,7 @@ KERNEL_FQ void m00620_s08 (KERN_ATTR_BASIC ()) m00620s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00620_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00620_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m00620_a3-pure.cl b/OpenCL/m00620_a3-pure.cl index 2b34cd3ba..67b5f0b9e 100644 --- a/OpenCL/m00620_a3-pure.cl +++ b/OpenCL/m00620_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_blake2b.cl) #endif -KERNEL_FQ void m00620_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00620_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -74,7 +74,7 @@ KERNEL_FQ void m00620_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m00620_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00620_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m00900_a0-optimized.cl b/OpenCL/m00900_a0-optimized.cl index c11ed77d0..26d63da8a 100644 --- a/OpenCL/m00900_a0-optimized.cl +++ b/OpenCL/m00900_a0-optimized.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md4.cl) #endif -KERNEL_FQ void m00900_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00900_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -124,15 +124,15 @@ KERNEL_FQ void m00900_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00900_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00900_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00900_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00900_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00900_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00900_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -255,10 +255,10 @@ KERNEL_FQ void m00900_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00900_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00900_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m00900_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00900_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m00900_a0-pure.cl b/OpenCL/m00900_a0-pure.cl index 25cf7f1d9..bf58b7c98 100644 --- a/OpenCL/m00900_a0-pure.cl +++ b/OpenCL/m00900_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md4.cl) #endif -KERNEL_FQ void m00900_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00900_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -60,7 +60,7 @@ KERNEL_FQ void m00900_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m00900_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m00900_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m00900_a1-optimized.cl b/OpenCL/m00900_a1-optimized.cl index af869cb27..826880268 100644 --- a/OpenCL/m00900_a1-optimized.cl +++ b/OpenCL/m00900_a1-optimized.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md4.cl) #endif -KERNEL_FQ void m00900_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00900_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -181,15 +181,15 @@ KERNEL_FQ void m00900_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00900_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00900_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00900_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00900_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00900_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00900_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -371,10 +371,10 @@ KERNEL_FQ void m00900_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00900_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00900_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m00900_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00900_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m00900_a1-pure.cl b/OpenCL/m00900_a1-pure.cl index 8b1e086a8..a51fe1e85 100644 --- a/OpenCL/m00900_a1-pure.cl +++ b/OpenCL/m00900_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md4.cl) #endif -KERNEL_FQ void m00900_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00900_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -56,7 +56,7 @@ KERNEL_FQ void m00900_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m00900_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m00900_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m00900_a3-optimized.cl b/OpenCL/m00900_a3-optimized.cl index c9b635854..706ff5924 100644 --- a/OpenCL/m00900_a3-optimized.cl +++ b/OpenCL/m00900_a3-optimized.cl @@ -347,7 +347,7 @@ DECLSPEC void m00900s (PRIVATE_AS u32 *w, const u32 pw_len, KERN_ATTR_FUNC_VECTO } } -KERNEL_FQ void m00900_m04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00900_m04 (KERN_ATTR_VECTOR ()) { /** * base @@ -387,7 +387,7 @@ KERNEL_FQ void m00900_m04 (KERN_ATTR_VECTOR ()) m00900m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00900_m08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00900_m08 (KERN_ATTR_VECTOR ()) { /** * base @@ -427,7 +427,7 @@ KERNEL_FQ void m00900_m08 (KERN_ATTR_VECTOR ()) m00900m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00900_m16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00900_m16 (KERN_ATTR_VECTOR ()) { /** * base @@ -467,7 +467,7 @@ KERNEL_FQ void m00900_m16 (KERN_ATTR_VECTOR ()) m00900m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00900_s04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00900_s04 (KERN_ATTR_VECTOR ()) { /** * base @@ -507,7 +507,7 @@ KERNEL_FQ void m00900_s04 (KERN_ATTR_VECTOR ()) m00900s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00900_s08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00900_s08 (KERN_ATTR_VECTOR ()) { /** * base @@ -547,7 +547,7 @@ KERNEL_FQ void m00900_s08 (KERN_ATTR_VECTOR ()) m00900s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m00900_s16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00900_s16 (KERN_ATTR_VECTOR ()) { /** * base diff --git a/OpenCL/m00900_a3-pure.cl b/OpenCL/m00900_a3-pure.cl index beb0f89af..96a375a8c 100644 --- a/OpenCL/m00900_a3-pure.cl +++ b/OpenCL/m00900_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md4.cl) #endif -KERNEL_FQ void m00900_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00900_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -69,7 +69,7 @@ KERNEL_FQ void m00900_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m00900_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m00900_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m01000_a0-optimized.cl b/OpenCL/m01000_a0-optimized.cl index a0732dd92..e769e4360 100644 --- a/OpenCL/m01000_a0-optimized.cl +++ b/OpenCL/m01000_a0-optimized.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md4.cl) #endif -KERNEL_FQ void m01000_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01000_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -127,15 +127,15 @@ KERNEL_FQ void m01000_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m01000_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01000_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m01000_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01000_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m01000_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01000_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -261,10 +261,10 @@ KERNEL_FQ void m01000_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m01000_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01000_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m01000_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01000_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m01000_a0-pure.cl b/OpenCL/m01000_a0-pure.cl index a85989648..5907bcad6 100644 --- a/OpenCL/m01000_a0-pure.cl +++ b/OpenCL/m01000_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md4.cl) #endif -KERNEL_FQ void m01000_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01000_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -60,7 +60,7 @@ KERNEL_FQ void m01000_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m01000_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01000_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m01000_a1-optimized.cl b/OpenCL/m01000_a1-optimized.cl index fc19ea778..954467b3e 100644 --- a/OpenCL/m01000_a1-optimized.cl +++ b/OpenCL/m01000_a1-optimized.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md4.cl) #endif -KERNEL_FQ void m01000_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01000_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -187,15 +187,15 @@ KERNEL_FQ void m01000_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m01000_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01000_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m01000_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01000_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m01000_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01000_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -383,10 +383,10 @@ KERNEL_FQ void m01000_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m01000_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01000_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m01000_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01000_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m01000_a1-pure.cl b/OpenCL/m01000_a1-pure.cl index 2d2d4b510..41b103ea4 100644 --- a/OpenCL/m01000_a1-pure.cl +++ b/OpenCL/m01000_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md4.cl) #endif -KERNEL_FQ void m01000_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01000_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -56,7 +56,7 @@ KERNEL_FQ void m01000_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m01000_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01000_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m01000_a3-optimized.cl b/OpenCL/m01000_a3-optimized.cl index fa6b86266..4360b62b4 100644 --- a/OpenCL/m01000_a3-optimized.cl +++ b/OpenCL/m01000_a3-optimized.cl @@ -347,7 +347,7 @@ DECLSPEC void m01000s (PRIVATE_AS u32 *w, const u32 pw_len, KERN_ATTR_FUNC_VECTO } } -KERNEL_FQ void m01000_m04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01000_m04 (KERN_ATTR_VECTOR ()) { /** * base @@ -387,7 +387,7 @@ KERNEL_FQ void m01000_m04 (KERN_ATTR_VECTOR ()) m01000m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01000_m08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01000_m08 (KERN_ATTR_VECTOR ()) { /** * base @@ -427,7 +427,7 @@ KERNEL_FQ void m01000_m08 (KERN_ATTR_VECTOR ()) m01000m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01000_m16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01000_m16 (KERN_ATTR_VECTOR ()) { /** * base @@ -467,7 +467,7 @@ KERNEL_FQ void m01000_m16 (KERN_ATTR_VECTOR ()) m01000m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01000_s04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01000_s04 (KERN_ATTR_VECTOR ()) { /** * base @@ -507,7 +507,7 @@ KERNEL_FQ void m01000_s04 (KERN_ATTR_VECTOR ()) m01000s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01000_s08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01000_s08 (KERN_ATTR_VECTOR ()) { /** * base @@ -547,7 +547,7 @@ KERNEL_FQ void m01000_s08 (KERN_ATTR_VECTOR ()) m01000s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01000_s16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01000_s16 (KERN_ATTR_VECTOR ()) { /** * base diff --git a/OpenCL/m01000_a3-pure.cl b/OpenCL/m01000_a3-pure.cl index 4aea55ae1..6cc7b57bc 100644 --- a/OpenCL/m01000_a3-pure.cl +++ b/OpenCL/m01000_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md4.cl) #endif -KERNEL_FQ void m01000_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01000_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -83,7 +83,7 @@ KERNEL_FQ void m01000_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m01000_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01000_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m01100_a0-optimized.cl b/OpenCL/m01100_a0-optimized.cl index 9c8b4194f..2188b95ad 100644 --- a/OpenCL/m01100_a0-optimized.cl +++ b/OpenCL/m01100_a0-optimized.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md4.cl) #endif -KERNEL_FQ void m01100_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01100_m04 (KERN_ATTR_RULES ()) { /** * base @@ -227,15 +227,15 @@ KERNEL_FQ void m01100_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m01100_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01100_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m01100_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01100_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m01100_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01100_s04 (KERN_ATTR_RULES ()) { /** * base @@ -461,10 +461,10 @@ KERNEL_FQ void m01100_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m01100_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01100_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m01100_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01100_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m01100_a0-pure.cl b/OpenCL/m01100_a0-pure.cl index 985d7350c..869fc3ab5 100644 --- a/OpenCL/m01100_a0-pure.cl +++ b/OpenCL/m01100_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md4.cl) #endif -KERNEL_FQ void m01100_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01100_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -84,7 +84,7 @@ KERNEL_FQ void m01100_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m01100_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01100_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m01100_a1-optimized.cl b/OpenCL/m01100_a1-optimized.cl index 72e6d71fa..3abdd43d4 100644 --- a/OpenCL/m01100_a1-optimized.cl +++ b/OpenCL/m01100_a1-optimized.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md4.cl) #endif -KERNEL_FQ void m01100_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01100_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -287,15 +287,15 @@ KERNEL_FQ void m01100_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m01100_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01100_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m01100_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01100_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m01100_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01100_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -583,10 +583,10 @@ KERNEL_FQ void m01100_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m01100_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01100_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m01100_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01100_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m01100_a1-pure.cl b/OpenCL/m01100_a1-pure.cl index ef5b7d142..f8e9fb2a9 100644 --- a/OpenCL/m01100_a1-pure.cl +++ b/OpenCL/m01100_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md4.cl) #endif -KERNEL_FQ void m01100_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01100_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -80,7 +80,7 @@ KERNEL_FQ void m01100_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m01100_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01100_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m01100_a3-optimized.cl b/OpenCL/m01100_a3-optimized.cl index d26ac1708..d7253f1cc 100644 --- a/OpenCL/m01100_a3-optimized.cl +++ b/OpenCL/m01100_a3-optimized.cl @@ -493,7 +493,7 @@ DECLSPEC void m01100s (LOCAL_AS salt_t *s_salt_buf, PRIVATE_AS u32 *w, const u32 } } -KERNEL_FQ void m01100_m04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01100_m04 (KERN_ATTR_VECTOR ()) { /** * base @@ -548,7 +548,7 @@ KERNEL_FQ void m01100_m04 (KERN_ATTR_VECTOR ()) m01100m (s_salt_buf, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01100_m08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01100_m08 (KERN_ATTR_VECTOR ()) { /** * base @@ -603,7 +603,7 @@ KERNEL_FQ void m01100_m08 (KERN_ATTR_VECTOR ()) m01100m (s_salt_buf, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01100_m16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01100_m16 (KERN_ATTR_VECTOR ()) { /** * base @@ -658,7 +658,7 @@ KERNEL_FQ void m01100_m16 (KERN_ATTR_VECTOR ()) m01100m (s_salt_buf, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01100_s04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01100_s04 (KERN_ATTR_VECTOR ()) { /** * base @@ -713,7 +713,7 @@ KERNEL_FQ void m01100_s04 (KERN_ATTR_VECTOR ()) m01100s (s_salt_buf, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01100_s08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01100_s08 (KERN_ATTR_VECTOR ()) { /** * base @@ -768,7 +768,7 @@ KERNEL_FQ void m01100_s08 (KERN_ATTR_VECTOR ()) m01100s (s_salt_buf, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01100_s16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01100_s16 (KERN_ATTR_VECTOR ()) { /** * base diff --git a/OpenCL/m01100_a3-pure.cl b/OpenCL/m01100_a3-pure.cl index afa425501..5924876d2 100644 --- a/OpenCL/m01100_a3-pure.cl +++ b/OpenCL/m01100_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md4.cl) #endif -KERNEL_FQ void m01100_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01100_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -122,7 +122,7 @@ KERNEL_FQ void m01100_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m01100_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01100_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m01300_a0-optimized.cl b/OpenCL/m01300_a0-optimized.cl index 695d65c7f..d2785fcd8 100644 --- a/OpenCL/m01300_a0-optimized.cl +++ b/OpenCL/m01300_a0-optimized.cl @@ -29,7 +29,7 @@ g = 0; \ } -KERNEL_FQ void m01300_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01300_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -176,15 +176,15 @@ KERNEL_FQ void m01300_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m01300_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01300_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m01300_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01300_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m01300_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01300_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -362,10 +362,10 @@ KERNEL_FQ void m01300_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m01300_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01300_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m01300_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01300_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m01300_a0-pure.cl b/OpenCL/m01300_a0-pure.cl index 52f35f9d5..2a798d59f 100644 --- a/OpenCL/m01300_a0-pure.cl +++ b/OpenCL/m01300_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha224.cl) #endif -KERNEL_FQ void m01300_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01300_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -60,7 +60,7 @@ KERNEL_FQ void m01300_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m01300_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01300_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m01300_a1-optimized.cl b/OpenCL/m01300_a1-optimized.cl index f1b7fe8c5..141fb139b 100644 --- a/OpenCL/m01300_a1-optimized.cl +++ b/OpenCL/m01300_a1-optimized.cl @@ -27,7 +27,7 @@ g = 0; \ } -KERNEL_FQ void m01300_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01300_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -232,15 +232,15 @@ KERNEL_FQ void m01300_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m01300_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01300_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m01300_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01300_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m01300_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01300_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -476,10 +476,10 @@ KERNEL_FQ void m01300_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m01300_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01300_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m01300_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01300_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m01300_a1-pure.cl b/OpenCL/m01300_a1-pure.cl index 71da5f570..5cc91ff33 100644 --- a/OpenCL/m01300_a1-pure.cl +++ b/OpenCL/m01300_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha224.cl) #endif -KERNEL_FQ void m01300_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01300_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -56,7 +56,7 @@ KERNEL_FQ void m01300_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m01300_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01300_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m01300_a3-optimized.cl b/OpenCL/m01300_a3-optimized.cl index 8b0d065d0..132748c1f 100644 --- a/OpenCL/m01300_a3-optimized.cl +++ b/OpenCL/m01300_a3-optimized.cl @@ -290,7 +290,7 @@ DECLSPEC void m01300s (PRIVATE_AS u32 *w, const u32 pw_len, KERN_ATTR_FUNC_VECTO } } -KERNEL_FQ void m01300_m04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01300_m04 (KERN_ATTR_VECTOR ()) { /** * base @@ -330,7 +330,7 @@ KERNEL_FQ void m01300_m04 (KERN_ATTR_VECTOR ()) m01300m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01300_m08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01300_m08 (KERN_ATTR_VECTOR ()) { /** * base @@ -370,7 +370,7 @@ KERNEL_FQ void m01300_m08 (KERN_ATTR_VECTOR ()) m01300m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01300_m16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01300_m16 (KERN_ATTR_VECTOR ()) { /** * base @@ -410,7 +410,7 @@ KERNEL_FQ void m01300_m16 (KERN_ATTR_VECTOR ()) m01300m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01300_s04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01300_s04 (KERN_ATTR_VECTOR ()) { /** * base @@ -450,7 +450,7 @@ KERNEL_FQ void m01300_s04 (KERN_ATTR_VECTOR ()) m01300s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01300_s08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01300_s08 (KERN_ATTR_VECTOR ()) { /** * base @@ -490,7 +490,7 @@ KERNEL_FQ void m01300_s08 (KERN_ATTR_VECTOR ()) m01300s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01300_s16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01300_s16 (KERN_ATTR_VECTOR ()) { /** * base diff --git a/OpenCL/m01300_a3-pure.cl b/OpenCL/m01300_a3-pure.cl index 2cefefa34..491792ea6 100644 --- a/OpenCL/m01300_a3-pure.cl +++ b/OpenCL/m01300_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha224.cl) #endif -KERNEL_FQ void m01300_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01300_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -69,7 +69,7 @@ KERNEL_FQ void m01300_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m01300_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01300_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m01400_a0-optimized.cl b/OpenCL/m01400_a0-optimized.cl index 95fac4e0d..511b15e4f 100644 --- a/OpenCL/m01400_a0-optimized.cl +++ b/OpenCL/m01400_a0-optimized.cl @@ -30,7 +30,7 @@ h = 0; \ } -KERNEL_FQ void m01400_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01400_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -177,15 +177,15 @@ KERNEL_FQ void m01400_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m01400_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01400_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m01400_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01400_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m01400_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01400_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -365,10 +365,10 @@ KERNEL_FQ void m01400_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m01400_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01400_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m01400_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01400_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m01400_a0-pure.cl b/OpenCL/m01400_a0-pure.cl index 932a6c33d..002b9cf9b 100644 --- a/OpenCL/m01400_a0-pure.cl +++ b/OpenCL/m01400_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha256.cl) #endif -KERNEL_FQ void m01400_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01400_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -60,7 +60,7 @@ KERNEL_FQ void m01400_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m01400_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01400_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m01400_a1-optimized.cl b/OpenCL/m01400_a1-optimized.cl index ad90577fb..992c36d5c 100644 --- a/OpenCL/m01400_a1-optimized.cl +++ b/OpenCL/m01400_a1-optimized.cl @@ -28,7 +28,7 @@ h = 0; \ } -KERNEL_FQ void m01400_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01400_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -233,15 +233,15 @@ KERNEL_FQ void m01400_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m01400_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01400_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m01400_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01400_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m01400_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01400_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -479,10 +479,10 @@ KERNEL_FQ void m01400_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m01400_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01400_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m01400_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01400_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m01400_a1-pure.cl b/OpenCL/m01400_a1-pure.cl index 8ce38c174..868e6f9b6 100644 --- a/OpenCL/m01400_a1-pure.cl +++ b/OpenCL/m01400_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha256.cl) #endif -KERNEL_FQ void m01400_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01400_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -56,7 +56,7 @@ KERNEL_FQ void m01400_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m01400_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01400_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m01400_a3-optimized.cl b/OpenCL/m01400_a3-optimized.cl index 6b82987bb..6cec22dae 100644 --- a/OpenCL/m01400_a3-optimized.cl +++ b/OpenCL/m01400_a3-optimized.cl @@ -293,7 +293,7 @@ DECLSPEC void m01400s (PRIVATE_AS u32 *w, const u32 pw_len, KERN_ATTR_FUNC_VECTO } } -KERNEL_FQ void m01400_m04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01400_m04 (KERN_ATTR_VECTOR ()) { /** * base @@ -333,7 +333,7 @@ KERNEL_FQ void m01400_m04 (KERN_ATTR_VECTOR ()) m01400m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01400_m08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01400_m08 (KERN_ATTR_VECTOR ()) { /** * base @@ -373,7 +373,7 @@ KERNEL_FQ void m01400_m08 (KERN_ATTR_VECTOR ()) m01400m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01400_m16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01400_m16 (KERN_ATTR_VECTOR ()) { /** * base @@ -413,7 +413,7 @@ KERNEL_FQ void m01400_m16 (KERN_ATTR_VECTOR ()) m01400m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01400_s04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01400_s04 (KERN_ATTR_VECTOR ()) { /** * base @@ -453,7 +453,7 @@ KERNEL_FQ void m01400_s04 (KERN_ATTR_VECTOR ()) m01400s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01400_s08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01400_s08 (KERN_ATTR_VECTOR ()) { /** * base @@ -493,7 +493,7 @@ KERNEL_FQ void m01400_s08 (KERN_ATTR_VECTOR ()) m01400s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01400_s16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01400_s16 (KERN_ATTR_VECTOR ()) { /** * base diff --git a/OpenCL/m01400_a3-pure.cl b/OpenCL/m01400_a3-pure.cl index 04ebffdbb..c4a457e42 100644 --- a/OpenCL/m01400_a3-pure.cl +++ b/OpenCL/m01400_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha256.cl) #endif -KERNEL_FQ void m01400_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01400_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -69,7 +69,7 @@ KERNEL_FQ void m01400_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m01400_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01400_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m01410_a0-optimized.cl b/OpenCL/m01410_a0-optimized.cl index b2e6a2bd5..dc4c2d068 100644 --- a/OpenCL/m01410_a0-optimized.cl +++ b/OpenCL/m01410_a0-optimized.cl @@ -30,7 +30,7 @@ h = 0; \ } -KERNEL_FQ void m01410_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01410_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -250,15 +250,15 @@ KERNEL_FQ void m01410_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m01410_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01410_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m01410_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01410_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m01410_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01410_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -511,10 +511,10 @@ KERNEL_FQ void m01410_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m01410_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01410_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m01410_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01410_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m01410_a0-pure.cl b/OpenCL/m01410_a0-pure.cl index 81a0b2487..d2b65cb4f 100644 --- a/OpenCL/m01410_a0-pure.cl +++ b/OpenCL/m01410_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha256.cl) #endif -KERNEL_FQ void m01410_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01410_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -71,7 +71,7 @@ KERNEL_FQ void m01410_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m01410_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01410_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m01410_a1-optimized.cl b/OpenCL/m01410_a1-optimized.cl index 287b8da82..e879d80b7 100644 --- a/OpenCL/m01410_a1-optimized.cl +++ b/OpenCL/m01410_a1-optimized.cl @@ -28,7 +28,7 @@ h = 0; \ } -KERNEL_FQ void m01410_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01410_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -308,15 +308,15 @@ KERNEL_FQ void m01410_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m01410_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01410_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m01410_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01410_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m01410_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01410_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -629,10 +629,10 @@ KERNEL_FQ void m01410_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m01410_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01410_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m01410_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01410_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m01410_a1-pure.cl b/OpenCL/m01410_a1-pure.cl index 01204bc42..a27236812 100644 --- a/OpenCL/m01410_a1-pure.cl +++ b/OpenCL/m01410_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha256.cl) #endif -KERNEL_FQ void m01410_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01410_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -67,7 +67,7 @@ KERNEL_FQ void m01410_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m01410_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01410_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m01410_a3-optimized.cl b/OpenCL/m01410_a3-optimized.cl index 2574d9fe7..935acdfed 100644 --- a/OpenCL/m01410_a3-optimized.cl +++ b/OpenCL/m01410_a3-optimized.cl @@ -344,7 +344,7 @@ DECLSPEC void m01410s (PRIVATE_AS u32 *w, const u32 pw_len, KERN_ATTR_FUNC_VECTO } } -KERNEL_FQ void m01410_m04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01410_m04 (KERN_ATTR_VECTOR ()) { /** * base @@ -384,7 +384,7 @@ KERNEL_FQ void m01410_m04 (KERN_ATTR_VECTOR ()) m01410m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01410_m08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01410_m08 (KERN_ATTR_VECTOR ()) { /** * base @@ -424,7 +424,7 @@ KERNEL_FQ void m01410_m08 (KERN_ATTR_VECTOR ()) m01410m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01410_m16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01410_m16 (KERN_ATTR_VECTOR ()) { /** * base @@ -464,7 +464,7 @@ KERNEL_FQ void m01410_m16 (KERN_ATTR_VECTOR ()) m01410m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01410_s04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01410_s04 (KERN_ATTR_VECTOR ()) { /** * base @@ -504,7 +504,7 @@ KERNEL_FQ void m01410_s04 (KERN_ATTR_VECTOR ()) m01410s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01410_s08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01410_s08 (KERN_ATTR_VECTOR ()) { /** * base @@ -544,7 +544,7 @@ KERNEL_FQ void m01410_s08 (KERN_ATTR_VECTOR ()) m01410s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01410_s16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01410_s16 (KERN_ATTR_VECTOR ()) { /** * base diff --git a/OpenCL/m01410_a3-pure.cl b/OpenCL/m01410_a3-pure.cl index 7e29bf125..792065f92 100644 --- a/OpenCL/m01410_a3-pure.cl +++ b/OpenCL/m01410_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha256.cl) #endif -KERNEL_FQ void m01410_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01410_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -80,7 +80,7 @@ KERNEL_FQ void m01410_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m01410_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01410_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m01420_a0-optimized.cl b/OpenCL/m01420_a0-optimized.cl index b83b6860e..553d6a5b0 100644 --- a/OpenCL/m01420_a0-optimized.cl +++ b/OpenCL/m01420_a0-optimized.cl @@ -30,7 +30,7 @@ h = 0; \ } -KERNEL_FQ void m01420_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01420_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -230,15 +230,15 @@ KERNEL_FQ void m01420_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m01420_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01420_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m01420_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01420_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m01420_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01420_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -471,10 +471,10 @@ KERNEL_FQ void m01420_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m01420_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01420_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m01420_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01420_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m01420_a0-pure.cl b/OpenCL/m01420_a0-pure.cl index a021b8cc3..037b6dd85 100644 --- a/OpenCL/m01420_a0-pure.cl +++ b/OpenCL/m01420_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha256.cl) #endif -KERNEL_FQ void m01420_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01420_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -64,7 +64,7 @@ KERNEL_FQ void m01420_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m01420_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01420_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m01420_a1-optimized.cl b/OpenCL/m01420_a1-optimized.cl index 668cf0969..f7fd380bc 100644 --- a/OpenCL/m01420_a1-optimized.cl +++ b/OpenCL/m01420_a1-optimized.cl @@ -28,7 +28,7 @@ h = 0; \ } -KERNEL_FQ void m01420_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01420_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -286,15 +286,15 @@ KERNEL_FQ void m01420_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m01420_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01420_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m01420_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01420_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m01420_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01420_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -585,10 +585,10 @@ KERNEL_FQ void m01420_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m01420_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01420_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m01420_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01420_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m01420_a1-pure.cl b/OpenCL/m01420_a1-pure.cl index adf7e44cf..8ac8bdd36 100644 --- a/OpenCL/m01420_a1-pure.cl +++ b/OpenCL/m01420_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha256.cl) #endif -KERNEL_FQ void m01420_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01420_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -58,7 +58,7 @@ KERNEL_FQ void m01420_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m01420_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01420_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m01420_a3-optimized.cl b/OpenCL/m01420_a3-optimized.cl index 42019378a..fd585d33f 100644 --- a/OpenCL/m01420_a3-optimized.cl +++ b/OpenCL/m01420_a3-optimized.cl @@ -443,7 +443,7 @@ DECLSPEC void m01420s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m01420_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01420_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -492,7 +492,7 @@ KERNEL_FQ void m01420_m04 (KERN_ATTR_BASIC ()) m01420m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01420_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01420_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -541,7 +541,7 @@ KERNEL_FQ void m01420_m08 (KERN_ATTR_BASIC ()) m01420m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01420_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01420_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -590,7 +590,7 @@ KERNEL_FQ void m01420_m16 (KERN_ATTR_BASIC ()) m01420m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01420_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01420_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -639,7 +639,7 @@ KERNEL_FQ void m01420_s04 (KERN_ATTR_BASIC ()) m01420s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01420_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01420_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -688,7 +688,7 @@ KERNEL_FQ void m01420_s08 (KERN_ATTR_BASIC ()) m01420s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01420_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01420_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m01420_a3-pure.cl b/OpenCL/m01420_a3-pure.cl index 7bf819abe..a8e3eaa1d 100644 --- a/OpenCL/m01420_a3-pure.cl +++ b/OpenCL/m01420_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha256.cl) #endif -KERNEL_FQ void m01420_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01420_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -75,7 +75,7 @@ KERNEL_FQ void m01420_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m01420_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01420_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m01430_a0-optimized.cl b/OpenCL/m01430_a0-optimized.cl index 1be82fdad..8107e625e 100644 --- a/OpenCL/m01430_a0-optimized.cl +++ b/OpenCL/m01430_a0-optimized.cl @@ -30,7 +30,7 @@ h = 0; \ } -KERNEL_FQ void m01430_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01430_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -255,15 +255,15 @@ KERNEL_FQ void m01430_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m01430_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01430_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m01430_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01430_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m01430_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01430_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -521,10 +521,10 @@ KERNEL_FQ void m01430_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m01430_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01430_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m01430_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01430_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m01430_a0-pure.cl b/OpenCL/m01430_a0-pure.cl index 8abd18ca5..a791c0654 100644 --- a/OpenCL/m01430_a0-pure.cl +++ b/OpenCL/m01430_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha256.cl) #endif -KERNEL_FQ void m01430_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01430_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -71,7 +71,7 @@ KERNEL_FQ void m01430_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m01430_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01430_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m01430_a1-optimized.cl b/OpenCL/m01430_a1-optimized.cl index 15f216ae9..6e225dd2f 100644 --- a/OpenCL/m01430_a1-optimized.cl +++ b/OpenCL/m01430_a1-optimized.cl @@ -28,7 +28,7 @@ h = 0; \ } -KERNEL_FQ void m01430_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01430_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -313,15 +313,15 @@ KERNEL_FQ void m01430_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m01430_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01430_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m01430_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01430_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m01430_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01430_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -639,10 +639,10 @@ KERNEL_FQ void m01430_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m01430_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01430_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m01430_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01430_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m01430_a1-pure.cl b/OpenCL/m01430_a1-pure.cl index b75eb7191..b55c5ab94 100644 --- a/OpenCL/m01430_a1-pure.cl +++ b/OpenCL/m01430_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha256.cl) #endif -KERNEL_FQ void m01430_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01430_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -67,7 +67,7 @@ KERNEL_FQ void m01430_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m01430_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01430_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m01430_a3-optimized.cl b/OpenCL/m01430_a3-optimized.cl index 4a76b5028..60e56fae7 100644 --- a/OpenCL/m01430_a3-optimized.cl +++ b/OpenCL/m01430_a3-optimized.cl @@ -344,7 +344,7 @@ DECLSPEC void m01430s (PRIVATE_AS u32 *w, const u32 pw_len, KERN_ATTR_FUNC_VECTO } } -KERNEL_FQ void m01430_m04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01430_m04 (KERN_ATTR_VECTOR ()) { /** * base @@ -384,7 +384,7 @@ KERNEL_FQ void m01430_m04 (KERN_ATTR_VECTOR ()) m01430m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01430_m08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01430_m08 (KERN_ATTR_VECTOR ()) { /** * base @@ -424,7 +424,7 @@ KERNEL_FQ void m01430_m08 (KERN_ATTR_VECTOR ()) m01430m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01430_m16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01430_m16 (KERN_ATTR_VECTOR ()) { /** * base @@ -464,7 +464,7 @@ KERNEL_FQ void m01430_m16 (KERN_ATTR_VECTOR ()) m01430m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01430_s04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01430_s04 (KERN_ATTR_VECTOR ()) { /** * base @@ -504,7 +504,7 @@ KERNEL_FQ void m01430_s04 (KERN_ATTR_VECTOR ()) m01430s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01430_s08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01430_s08 (KERN_ATTR_VECTOR ()) { /** * base @@ -544,7 +544,7 @@ KERNEL_FQ void m01430_s08 (KERN_ATTR_VECTOR ()) m01430s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01430_s16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01430_s16 (KERN_ATTR_VECTOR ()) { /** * base diff --git a/OpenCL/m01430_a3-pure.cl b/OpenCL/m01430_a3-pure.cl index 24afd1355..87cd121d8 100644 --- a/OpenCL/m01430_a3-pure.cl +++ b/OpenCL/m01430_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha256.cl) #endif -KERNEL_FQ void m01430_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01430_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -80,7 +80,7 @@ KERNEL_FQ void m01430_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m01430_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01430_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m01440_a0-optimized.cl b/OpenCL/m01440_a0-optimized.cl index 60b369eec..20b619abd 100644 --- a/OpenCL/m01440_a0-optimized.cl +++ b/OpenCL/m01440_a0-optimized.cl @@ -30,7 +30,7 @@ h = 0; \ } -KERNEL_FQ void m01440_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01440_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -235,15 +235,15 @@ KERNEL_FQ void m01440_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m01440_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01440_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m01440_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01440_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m01440_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01440_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -481,10 +481,10 @@ KERNEL_FQ void m01440_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m01440_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01440_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m01440_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01440_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m01440_a0-pure.cl b/OpenCL/m01440_a0-pure.cl index 8b7e6d8d7..5fe4fd6a1 100644 --- a/OpenCL/m01440_a0-pure.cl +++ b/OpenCL/m01440_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha256.cl) #endif -KERNEL_FQ void m01440_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01440_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -64,7 +64,7 @@ KERNEL_FQ void m01440_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m01440_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01440_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m01440_a1-optimized.cl b/OpenCL/m01440_a1-optimized.cl index 8dd16407c..3d4408445 100644 --- a/OpenCL/m01440_a1-optimized.cl +++ b/OpenCL/m01440_a1-optimized.cl @@ -28,7 +28,7 @@ h = 0; \ } -KERNEL_FQ void m01440_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01440_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -291,15 +291,15 @@ KERNEL_FQ void m01440_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m01440_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01440_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m01440_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01440_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m01440_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01440_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -595,10 +595,10 @@ KERNEL_FQ void m01440_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m01440_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01440_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m01440_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01440_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m01440_a1-pure.cl b/OpenCL/m01440_a1-pure.cl index aa16fb9dd..de83b2fd9 100644 --- a/OpenCL/m01440_a1-pure.cl +++ b/OpenCL/m01440_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha256.cl) #endif -KERNEL_FQ void m01440_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01440_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -58,7 +58,7 @@ KERNEL_FQ void m01440_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m01440_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01440_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m01440_a3-optimized.cl b/OpenCL/m01440_a3-optimized.cl index bd3dc0512..2f8b3a06c 100644 --- a/OpenCL/m01440_a3-optimized.cl +++ b/OpenCL/m01440_a3-optimized.cl @@ -443,7 +443,7 @@ DECLSPEC void m01440s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m01440_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01440_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -492,7 +492,7 @@ KERNEL_FQ void m01440_m04 (KERN_ATTR_BASIC ()) m01440m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01440_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01440_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -541,7 +541,7 @@ KERNEL_FQ void m01440_m08 (KERN_ATTR_BASIC ()) m01440m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01440_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01440_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -590,7 +590,7 @@ KERNEL_FQ void m01440_m16 (KERN_ATTR_BASIC ()) m01440m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01440_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01440_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -639,7 +639,7 @@ KERNEL_FQ void m01440_s04 (KERN_ATTR_BASIC ()) m01440s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01440_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01440_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -688,7 +688,7 @@ KERNEL_FQ void m01440_s08 (KERN_ATTR_BASIC ()) m01440s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01440_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01440_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m01440_a3-pure.cl b/OpenCL/m01440_a3-pure.cl index 8724e78c1..d20546de8 100644 --- a/OpenCL/m01440_a3-pure.cl +++ b/OpenCL/m01440_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha256.cl) #endif -KERNEL_FQ void m01440_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01440_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -75,7 +75,7 @@ KERNEL_FQ void m01440_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m01440_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01440_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m01450_a0-optimized.cl b/OpenCL/m01450_a0-optimized.cl index 262641bf3..bf5043c6e 100644 --- a/OpenCL/m01450_a0-optimized.cl +++ b/OpenCL/m01450_a0-optimized.cl @@ -117,7 +117,7 @@ DECLSPEC void hmac_sha256_run (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE sha256_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m01450_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01450_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -231,15 +231,15 @@ KERNEL_FQ void m01450_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m01450_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01450_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m01450_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01450_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m01450_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01450_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -365,10 +365,10 @@ KERNEL_FQ void m01450_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m01450_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01450_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m01450_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01450_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m01450_a0-pure.cl b/OpenCL/m01450_a0-pure.cl index b2167e229..1d5edb8dd 100644 --- a/OpenCL/m01450_a0-pure.cl +++ b/OpenCL/m01450_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha256.cl) #endif -KERNEL_FQ void m01450_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01450_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -69,7 +69,7 @@ KERNEL_FQ void m01450_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m01450_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01450_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m01450_a1-optimized.cl b/OpenCL/m01450_a1-optimized.cl index 8b75fcf25..42917ce80 100644 --- a/OpenCL/m01450_a1-optimized.cl +++ b/OpenCL/m01450_a1-optimized.cl @@ -115,7 +115,7 @@ DECLSPEC void hmac_sha256_run (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE sha256_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m01450_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01450_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -297,15 +297,15 @@ KERNEL_FQ void m01450_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m01450_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01450_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m01450_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01450_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m01450_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01450_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -499,10 +499,10 @@ KERNEL_FQ void m01450_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m01450_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01450_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m01450_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01450_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m01450_a1-pure.cl b/OpenCL/m01450_a1-pure.cl index 07bdfac62..fda90f7a1 100644 --- a/OpenCL/m01450_a1-pure.cl +++ b/OpenCL/m01450_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha256.cl) #endif -KERNEL_FQ void m01450_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01450_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -92,7 +92,7 @@ KERNEL_FQ void m01450_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m01450_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01450_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m01450_a3-optimized.cl b/OpenCL/m01450_a3-optimized.cl index a88a84100..dad463cf6 100644 --- a/OpenCL/m01450_a3-optimized.cl +++ b/OpenCL/m01450_a3-optimized.cl @@ -331,7 +331,7 @@ DECLSPEC void m01450s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m01450_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01450_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -380,7 +380,7 @@ KERNEL_FQ void m01450_m04 (KERN_ATTR_BASIC ()) m01450m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01450_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01450_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -429,7 +429,7 @@ KERNEL_FQ void m01450_m08 (KERN_ATTR_BASIC ()) m01450m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01450_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01450_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -478,7 +478,7 @@ KERNEL_FQ void m01450_m16 (KERN_ATTR_BASIC ()) m01450m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01450_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01450_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -527,7 +527,7 @@ KERNEL_FQ void m01450_s04 (KERN_ATTR_BASIC ()) m01450s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01450_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01450_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -576,7 +576,7 @@ KERNEL_FQ void m01450_s08 (KERN_ATTR_BASIC ()) m01450s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01450_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01450_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m01450_a3-pure.cl b/OpenCL/m01450_a3-pure.cl index 462a22a0c..4f089698c 100644 --- a/OpenCL/m01450_a3-pure.cl +++ b/OpenCL/m01450_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha256.cl) #endif -KERNEL_FQ void m01450_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01450_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -78,7 +78,7 @@ KERNEL_FQ void m01450_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m01450_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01450_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m01460_a0-optimized.cl b/OpenCL/m01460_a0-optimized.cl index d3dea0ceb..fab2a2e5f 100644 --- a/OpenCL/m01460_a0-optimized.cl +++ b/OpenCL/m01460_a0-optimized.cl @@ -117,7 +117,7 @@ DECLSPEC void hmac_sha256_run (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE sha256_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m01460_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01460_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -244,15 +244,15 @@ KERNEL_FQ void m01460_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m01460_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01460_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m01460_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01460_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m01460_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01460_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -391,10 +391,10 @@ KERNEL_FQ void m01460_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m01460_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01460_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m01460_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01460_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m01460_a0-pure.cl b/OpenCL/m01460_a0-pure.cl index 7cdc49d1b..5dc2ba300 100644 --- a/OpenCL/m01460_a0-pure.cl +++ b/OpenCL/m01460_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha256.cl) #endif -KERNEL_FQ void m01460_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01460_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -71,7 +71,7 @@ KERNEL_FQ void m01460_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m01460_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01460_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m01460_a1-optimized.cl b/OpenCL/m01460_a1-optimized.cl index 5fb3c8a90..0ed4b8a8a 100644 --- a/OpenCL/m01460_a1-optimized.cl +++ b/OpenCL/m01460_a1-optimized.cl @@ -115,7 +115,7 @@ DECLSPEC void hmac_sha256_run (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE sha256_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m01460_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01460_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -302,15 +302,15 @@ KERNEL_FQ void m01460_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m01460_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01460_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m01460_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01460_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m01460_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01460_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -509,10 +509,10 @@ KERNEL_FQ void m01460_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m01460_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01460_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m01460_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01460_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m01460_a1-pure.cl b/OpenCL/m01460_a1-pure.cl index 49f0a3ce6..862fa584a 100644 --- a/OpenCL/m01460_a1-pure.cl +++ b/OpenCL/m01460_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha256.cl) #endif -KERNEL_FQ void m01460_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01460_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -94,7 +94,7 @@ KERNEL_FQ void m01460_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m01460_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01460_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m01460_a3-optimized.cl b/OpenCL/m01460_a3-optimized.cl index da5e67a07..10c6053e1 100644 --- a/OpenCL/m01460_a3-optimized.cl +++ b/OpenCL/m01460_a3-optimized.cl @@ -327,7 +327,7 @@ DECLSPEC void m01460s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m01460_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01460_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -376,7 +376,7 @@ KERNEL_FQ void m01460_m04 (KERN_ATTR_BASIC ()) m01460m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01460_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01460_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -425,7 +425,7 @@ KERNEL_FQ void m01460_m08 (KERN_ATTR_BASIC ()) m01460m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01460_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01460_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -474,7 +474,7 @@ KERNEL_FQ void m01460_m16 (KERN_ATTR_BASIC ()) m01460m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01460_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01460_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -523,7 +523,7 @@ KERNEL_FQ void m01460_s04 (KERN_ATTR_BASIC ()) m01460s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01460_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01460_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -572,7 +572,7 @@ KERNEL_FQ void m01460_s08 (KERN_ATTR_BASIC ()) m01460s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01460_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01460_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m01460_a3-pure.cl b/OpenCL/m01460_a3-pure.cl index 28b359f1c..967677511 100644 --- a/OpenCL/m01460_a3-pure.cl +++ b/OpenCL/m01460_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha256.cl) #endif -KERNEL_FQ void m01460_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01460_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -80,7 +80,7 @@ KERNEL_FQ void m01460_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m01460_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01460_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m01470_a0-optimized.cl b/OpenCL/m01470_a0-optimized.cl index fa40cecbf..269e2a6a4 100644 --- a/OpenCL/m01470_a0-optimized.cl +++ b/OpenCL/m01470_a0-optimized.cl @@ -30,7 +30,7 @@ h = 0; \ } -KERNEL_FQ void m01470_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01470_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -182,15 +182,15 @@ KERNEL_FQ void m01470_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m01470_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01470_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m01470_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01470_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m01470_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01470_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -375,10 +375,10 @@ KERNEL_FQ void m01470_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m01470_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01470_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m01470_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01470_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m01470_a0-pure.cl b/OpenCL/m01470_a0-pure.cl index 1e43c8245..beefea18a 100644 --- a/OpenCL/m01470_a0-pure.cl +++ b/OpenCL/m01470_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha256.cl) #endif -KERNEL_FQ void m01470_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01470_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -62,7 +62,7 @@ KERNEL_FQ void m01470_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m01470_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01470_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m01470_a1-optimized.cl b/OpenCL/m01470_a1-optimized.cl index 06774618e..c528febf8 100644 --- a/OpenCL/m01470_a1-optimized.cl +++ b/OpenCL/m01470_a1-optimized.cl @@ -28,7 +28,7 @@ h = 0; \ } -KERNEL_FQ void m01470_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01470_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -238,15 +238,15 @@ KERNEL_FQ void m01470_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m01470_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01470_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m01470_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01470_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m01470_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01470_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -489,10 +489,10 @@ KERNEL_FQ void m01470_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m01470_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01470_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m01470_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01470_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m01470_a1-pure.cl b/OpenCL/m01470_a1-pure.cl index 18ab9488f..971100e6b 100644 --- a/OpenCL/m01470_a1-pure.cl +++ b/OpenCL/m01470_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha256.cl) #endif -KERNEL_FQ void m01470_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01470_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -56,7 +56,7 @@ KERNEL_FQ void m01470_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m01470_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01470_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m01470_a3-optimized.cl b/OpenCL/m01470_a3-optimized.cl index 9c8b1519b..d5e287964 100644 --- a/OpenCL/m01470_a3-optimized.cl +++ b/OpenCL/m01470_a3-optimized.cl @@ -345,7 +345,7 @@ DECLSPEC void m01470s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m01470_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01470_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -394,7 +394,7 @@ KERNEL_FQ void m01470_m04 (KERN_ATTR_BASIC ()) m01470m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01470_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01470_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -443,7 +443,7 @@ KERNEL_FQ void m01470_m08 (KERN_ATTR_BASIC ()) m01470m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01470_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01470_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -492,7 +492,7 @@ KERNEL_FQ void m01470_m16 (KERN_ATTR_BASIC ()) m01470m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01470_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01470_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -541,7 +541,7 @@ KERNEL_FQ void m01470_s04 (KERN_ATTR_BASIC ()) m01470s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01470_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01470_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -590,7 +590,7 @@ KERNEL_FQ void m01470_s08 (KERN_ATTR_BASIC ()) m01470s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01470_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01470_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m01470_a3-pure.cl b/OpenCL/m01470_a3-pure.cl index fcf36b2d9..fee6f362f 100644 --- a/OpenCL/m01470_a3-pure.cl +++ b/OpenCL/m01470_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha256.cl) #endif -KERNEL_FQ void m01470_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01470_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -73,7 +73,7 @@ KERNEL_FQ void m01470_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m01470_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01470_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m01500_a0-pure.cl b/OpenCL/m01500_a0-pure.cl index 7a95576f9..c4f39f20d 100644 --- a/OpenCL/m01500_a0-pure.cl +++ b/OpenCL/m01500_a0-pure.cl @@ -482,7 +482,7 @@ DECLSPEC void _des_crypt_encrypt (PRIVATE_AS u32 *iv, u32 mask, PRIVATE_AS u32 iv[1] = hc_rotl32 (l, 31); } -KERNEL_FQ void m01500_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01500_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -566,7 +566,7 @@ KERNEL_FQ void m01500_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m01500_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01500_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m01500_a1-pure.cl b/OpenCL/m01500_a1-pure.cl index 581e708f8..5c5c4e335 100644 --- a/OpenCL/m01500_a1-pure.cl +++ b/OpenCL/m01500_a1-pure.cl @@ -480,7 +480,7 @@ DECLSPEC void _des_crypt_encrypt (PRIVATE_AS u32 *iv, u32 mask, PRIVATE_AS u32x iv[1] = hc_rotl32 (l, 31); } -KERNEL_FQ void m01500_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01500_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -643,7 +643,7 @@ KERNEL_FQ void m01500_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m01500_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01500_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m01500_a3-pure.cl b/OpenCL/m01500_a3-pure.cl index 59606e47f..1feeba9c2 100644 --- a/OpenCL/m01500_a3-pure.cl +++ b/OpenCL/m01500_a3-pure.cl @@ -1885,7 +1885,7 @@ DECLSPEC void transpose32c (PRIVATE_AS u32 *data) // transpose bitslice mod : attention race conditions, need different buffers for *in and *out // -KERNEL_FQ void m01500_tm (KERN_ATTR_TM) +KERNEL_FQ KERNEL_FA void m01500_tm (KERN_ATTR_TM) { const u64 gid = get_global_id (0); @@ -1915,11 +1915,11 @@ KERNEL_FQ void m01500_tm (KERN_ATTR_TM) #ifndef DESCRYPT_SALT -KERNEL_FQ void m01500_sxx (KERN_ATTR_BITSLICE ()) +KERNEL_FQ KERNEL_FA void m01500_sxx (KERN_ATTR_BITSLICE ()) { } -KERNEL_FQ void m01500_mxx (KERN_ATTR_BITSLICE ()) +KERNEL_FQ KERNEL_FA void m01500_mxx (KERN_ATTR_BITSLICE ()) { /** * base @@ -2294,7 +2294,7 @@ KERNEL_FQ void m01500_mxx (KERN_ATTR_BITSLICE ()) #else -KERNEL_FQ void m01500_sxx (KERN_ATTR_BITSLICE ()) +KERNEL_FQ KERNEL_FA void m01500_sxx (KERN_ATTR_BITSLICE ()) { /** * base @@ -2688,7 +2688,7 @@ KERNEL_FQ void m01500_sxx (KERN_ATTR_BITSLICE ()) } } -KERNEL_FQ void m01500_mxx (KERN_ATTR_BITSLICE ()) +KERNEL_FQ KERNEL_FA void m01500_mxx (KERN_ATTR_BITSLICE ()) { } diff --git a/OpenCL/m01600-optimized.cl b/OpenCL/m01600-optimized.cl index 7f5bd7f5e..d113243e1 100644 --- a/OpenCL/m01600-optimized.cl +++ b/OpenCL/m01600-optimized.cl @@ -674,7 +674,7 @@ DECLSPEC void append_1st (PRIVATE_AS u32 *block0, PRIVATE_AS u32 *block1, PRIVAT } } -KERNEL_FQ void m01600_init (KERN_ATTR_TMPS (md5crypt_tmp_t)) +KERNEL_FQ KERNEL_FA void m01600_init (KERN_ATTR_TMPS (md5crypt_tmp_t)) { /** * base @@ -837,7 +837,7 @@ KERNEL_FQ void m01600_init (KERN_ATTR_TMPS (md5crypt_tmp_t)) tmps[gid].digest_buf[3] = digest[3]; } -KERNEL_FQ void m01600_loop (KERN_ATTR_TMPS (md5crypt_tmp_t)) +KERNEL_FQ KERNEL_FA void m01600_loop (KERN_ATTR_TMPS (md5crypt_tmp_t)) { /** * base @@ -1025,7 +1025,7 @@ KERNEL_FQ void m01600_loop (KERN_ATTR_TMPS (md5crypt_tmp_t)) tmps[gid].digest_buf[3] = digest[3]; } -KERNEL_FQ void m01600_comp (KERN_ATTR_TMPS (md5crypt_tmp_t)) +KERNEL_FQ KERNEL_FA void m01600_comp (KERN_ATTR_TMPS (md5crypt_tmp_t)) { /** * modifier diff --git a/OpenCL/m01600-pure.cl b/OpenCL/m01600-pure.cl index ac1722da9..96ee4bbb3 100644 --- a/OpenCL/m01600-pure.cl +++ b/OpenCL/m01600-pure.cl @@ -25,7 +25,7 @@ typedef struct md5crypt_tmp #define md5apr1_magic0 0x72706124u #define md5apr1_magic1 0x00002431u -KERNEL_FQ void m01600_init (KERN_ATTR_TMPS (md5crypt_tmp_t)) +KERNEL_FQ KERNEL_FA void m01600_init (KERN_ATTR_TMPS (md5crypt_tmp_t)) { /** * base @@ -132,7 +132,7 @@ KERNEL_FQ void m01600_init (KERN_ATTR_TMPS (md5crypt_tmp_t)) tmps[gid].digest_buf[3] = md5_ctx.h[3]; } -KERNEL_FQ void m01600_loop (KERN_ATTR_TMPS (md5crypt_tmp_t)) +KERNEL_FQ KERNEL_FA void m01600_loop (KERN_ATTR_TMPS (md5crypt_tmp_t)) { /** * base @@ -227,7 +227,7 @@ KERNEL_FQ void m01600_loop (KERN_ATTR_TMPS (md5crypt_tmp_t)) tmps[gid].digest_buf[3] = digest[3]; } -KERNEL_FQ void m01600_comp (KERN_ATTR_TMPS (md5crypt_tmp_t)) +KERNEL_FQ KERNEL_FA void m01600_comp (KERN_ATTR_TMPS (md5crypt_tmp_t)) { /** * modifier diff --git a/OpenCL/m01700_a0-optimized.cl b/OpenCL/m01700_a0-optimized.cl index 161a6a603..af7f4f89c 100644 --- a/OpenCL/m01700_a0-optimized.cl +++ b/OpenCL/m01700_a0-optimized.cl @@ -122,7 +122,7 @@ DECLSPEC void sha512_transform_intern (PRIVATE_AS const u32x *w0, PRIVATE_AS con digest[7] = h; } -KERNEL_FQ void m01700_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01700_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -215,15 +215,15 @@ KERNEL_FQ void m01700_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m01700_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01700_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m01700_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01700_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m01700_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01700_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -328,10 +328,10 @@ KERNEL_FQ void m01700_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m01700_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01700_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m01700_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01700_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m01700_a0-pure.cl b/OpenCL/m01700_a0-pure.cl index 254769c54..e71c37b48 100644 --- a/OpenCL/m01700_a0-pure.cl +++ b/OpenCL/m01700_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha512.cl) #endif -KERNEL_FQ void m01700_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01700_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -60,7 +60,7 @@ KERNEL_FQ void m01700_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m01700_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01700_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m01700_a1-optimized.cl b/OpenCL/m01700_a1-optimized.cl index 1112c25d0..d9d7791c6 100644 --- a/OpenCL/m01700_a1-optimized.cl +++ b/OpenCL/m01700_a1-optimized.cl @@ -120,7 +120,7 @@ DECLSPEC void sha512_transform_intern (PRIVATE_AS const u32x *w0, PRIVATE_AS con digest[7] = h; } -KERNEL_FQ void m01700_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01700_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -271,15 +271,15 @@ KERNEL_FQ void m01700_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m01700_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01700_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m01700_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01700_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m01700_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01700_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -442,10 +442,10 @@ KERNEL_FQ void m01700_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m01700_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01700_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m01700_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01700_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m01700_a1-pure.cl b/OpenCL/m01700_a1-pure.cl index 904d1f118..91b36c2d4 100644 --- a/OpenCL/m01700_a1-pure.cl +++ b/OpenCL/m01700_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha512.cl) #endif -KERNEL_FQ void m01700_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01700_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -56,7 +56,7 @@ KERNEL_FQ void m01700_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m01700_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01700_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m01700_a3-optimized.cl b/OpenCL/m01700_a3-optimized.cl index c7f4eebfb..6e6e179fa 100644 --- a/OpenCL/m01700_a3-optimized.cl +++ b/OpenCL/m01700_a3-optimized.cl @@ -256,7 +256,7 @@ DECLSPEC void m01700s (PRIVATE_AS u32 *w, const u32 pw_len, KERN_ATTR_FUNC_VECTO } } -KERNEL_FQ void m01700_m04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01700_m04 (KERN_ATTR_VECTOR ()) { /** * base @@ -296,7 +296,7 @@ KERNEL_FQ void m01700_m04 (KERN_ATTR_VECTOR ()) m01700m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01700_m08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01700_m08 (KERN_ATTR_VECTOR ()) { /** * base @@ -336,7 +336,7 @@ KERNEL_FQ void m01700_m08 (KERN_ATTR_VECTOR ()) m01700m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01700_m16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01700_m16 (KERN_ATTR_VECTOR ()) { /** * base @@ -376,7 +376,7 @@ KERNEL_FQ void m01700_m16 (KERN_ATTR_VECTOR ()) m01700m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01700_s04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01700_s04 (KERN_ATTR_VECTOR ()) { /** * base @@ -416,7 +416,7 @@ KERNEL_FQ void m01700_s04 (KERN_ATTR_VECTOR ()) m01700s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01700_s08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01700_s08 (KERN_ATTR_VECTOR ()) { /** * base @@ -456,7 +456,7 @@ KERNEL_FQ void m01700_s08 (KERN_ATTR_VECTOR ()) m01700s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01700_s16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01700_s16 (KERN_ATTR_VECTOR ()) { /** * base diff --git a/OpenCL/m01700_a3-pure.cl b/OpenCL/m01700_a3-pure.cl index dd04f3616..78b0dcfe4 100644 --- a/OpenCL/m01700_a3-pure.cl +++ b/OpenCL/m01700_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha512.cl) #endif -KERNEL_FQ void m01700_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01700_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -69,7 +69,7 @@ KERNEL_FQ void m01700_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m01700_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01700_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m01710_a0-optimized.cl b/OpenCL/m01710_a0-optimized.cl index fa9a024ea..2ec8f8243 100644 --- a/OpenCL/m01710_a0-optimized.cl +++ b/OpenCL/m01710_a0-optimized.cl @@ -122,7 +122,7 @@ DECLSPEC void sha512_transform_intern (PRIVATE_AS const u32x *w0, PRIVATE_AS con digest[7] = h; } -KERNEL_FQ void m01710_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01710_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -288,15 +288,15 @@ KERNEL_FQ void m01710_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m01710_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01710_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m01710_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01710_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m01710_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01710_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -474,10 +474,10 @@ KERNEL_FQ void m01710_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m01710_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01710_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m01710_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01710_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m01710_a0-pure.cl b/OpenCL/m01710_a0-pure.cl index cdf537ae1..f73767598 100644 --- a/OpenCL/m01710_a0-pure.cl +++ b/OpenCL/m01710_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha512.cl) #endif -KERNEL_FQ void m01710_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01710_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -71,7 +71,7 @@ KERNEL_FQ void m01710_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m01710_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01710_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m01710_a1-optimized.cl b/OpenCL/m01710_a1-optimized.cl index bb395f2ae..32f974b09 100644 --- a/OpenCL/m01710_a1-optimized.cl +++ b/OpenCL/m01710_a1-optimized.cl @@ -120,7 +120,7 @@ DECLSPEC void sha512_transform_intern (PRIVATE_AS const u32x *w0, PRIVATE_AS con digest[7] = h; } -KERNEL_FQ void m01710_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01710_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -346,15 +346,15 @@ KERNEL_FQ void m01710_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m01710_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01710_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m01710_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01710_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m01710_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01710_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -592,10 +592,10 @@ KERNEL_FQ void m01710_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m01710_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01710_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m01710_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01710_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m01710_a1-pure.cl b/OpenCL/m01710_a1-pure.cl index e81e1d7e4..a77c2a8a9 100644 --- a/OpenCL/m01710_a1-pure.cl +++ b/OpenCL/m01710_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha512.cl) #endif -KERNEL_FQ void m01710_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01710_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -67,7 +67,7 @@ KERNEL_FQ void m01710_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m01710_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01710_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m01710_a3-optimized.cl b/OpenCL/m01710_a3-optimized.cl index e2a8aecbe..6ae9344e5 100644 --- a/OpenCL/m01710_a3-optimized.cl +++ b/OpenCL/m01710_a3-optimized.cl @@ -307,7 +307,7 @@ DECLSPEC void m01710s (PRIVATE_AS u32 *w, const u32 pw_len, KERN_ATTR_FUNC_VECTO } } -KERNEL_FQ void m01710_m04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01710_m04 (KERN_ATTR_VECTOR ()) { /** * base @@ -347,7 +347,7 @@ KERNEL_FQ void m01710_m04 (KERN_ATTR_VECTOR ()) m01710m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01710_m08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01710_m08 (KERN_ATTR_VECTOR ()) { /** * base @@ -387,7 +387,7 @@ KERNEL_FQ void m01710_m08 (KERN_ATTR_VECTOR ()) m01710m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01710_m16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01710_m16 (KERN_ATTR_VECTOR ()) { /** * base @@ -427,7 +427,7 @@ KERNEL_FQ void m01710_m16 (KERN_ATTR_VECTOR ()) m01710m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01710_s04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01710_s04 (KERN_ATTR_VECTOR ()) { /** * base @@ -467,7 +467,7 @@ KERNEL_FQ void m01710_s04 (KERN_ATTR_VECTOR ()) m01710s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01710_s08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01710_s08 (KERN_ATTR_VECTOR ()) { /** * base @@ -507,7 +507,7 @@ KERNEL_FQ void m01710_s08 (KERN_ATTR_VECTOR ()) m01710s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01710_s16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01710_s16 (KERN_ATTR_VECTOR ()) { /** * base diff --git a/OpenCL/m01710_a3-pure.cl b/OpenCL/m01710_a3-pure.cl index 340e2ece0..f27f6a528 100644 --- a/OpenCL/m01710_a3-pure.cl +++ b/OpenCL/m01710_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha512.cl) #endif -KERNEL_FQ void m01710_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01710_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -80,7 +80,7 @@ KERNEL_FQ void m01710_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m01710_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01710_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m01720_a0-optimized.cl b/OpenCL/m01720_a0-optimized.cl index 669108e88..b82a837c6 100644 --- a/OpenCL/m01720_a0-optimized.cl +++ b/OpenCL/m01720_a0-optimized.cl @@ -122,7 +122,7 @@ DECLSPEC void sha512_transform_intern (PRIVATE_AS const u32x *w0, PRIVATE_AS con digest[7] = h; } -KERNEL_FQ void m01720_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01720_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -268,15 +268,15 @@ KERNEL_FQ void m01720_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m01720_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01720_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m01720_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01720_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m01720_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01720_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -434,10 +434,10 @@ KERNEL_FQ void m01720_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m01720_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01720_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m01720_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01720_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m01720_a0-pure.cl b/OpenCL/m01720_a0-pure.cl index 33c9d16d0..443fea316 100644 --- a/OpenCL/m01720_a0-pure.cl +++ b/OpenCL/m01720_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha512.cl) #endif -KERNEL_FQ void m01720_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01720_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -64,7 +64,7 @@ KERNEL_FQ void m01720_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m01720_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01720_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m01720_a1-optimized.cl b/OpenCL/m01720_a1-optimized.cl index a6882e1c1..158151798 100644 --- a/OpenCL/m01720_a1-optimized.cl +++ b/OpenCL/m01720_a1-optimized.cl @@ -120,7 +120,7 @@ DECLSPEC void sha512_transform_intern (PRIVATE_AS const u32x *w0, PRIVATE_AS con digest[7] = h; } -KERNEL_FQ void m01720_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01720_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -324,15 +324,15 @@ KERNEL_FQ void m01720_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m01720_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01720_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m01720_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01720_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m01720_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01720_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -548,10 +548,10 @@ KERNEL_FQ void m01720_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m01720_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01720_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m01720_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01720_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m01720_a1-pure.cl b/OpenCL/m01720_a1-pure.cl index aa06164df..ed26b6514 100644 --- a/OpenCL/m01720_a1-pure.cl +++ b/OpenCL/m01720_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha512.cl) #endif -KERNEL_FQ void m01720_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01720_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -58,7 +58,7 @@ KERNEL_FQ void m01720_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m01720_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01720_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m01720_a3-optimized.cl b/OpenCL/m01720_a3-optimized.cl index de40817c2..856c65204 100644 --- a/OpenCL/m01720_a3-optimized.cl +++ b/OpenCL/m01720_a3-optimized.cl @@ -362,7 +362,7 @@ DECLSPEC void m01720s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m01720_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01720_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -411,7 +411,7 @@ KERNEL_FQ void m01720_m04 (KERN_ATTR_BASIC ()) m01720m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01720_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01720_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -460,7 +460,7 @@ KERNEL_FQ void m01720_m08 (KERN_ATTR_BASIC ()) m01720m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01720_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01720_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -509,7 +509,7 @@ KERNEL_FQ void m01720_m16 (KERN_ATTR_BASIC ()) m01720m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01720_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01720_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -558,7 +558,7 @@ KERNEL_FQ void m01720_s04 (KERN_ATTR_BASIC ()) m01720s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01720_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01720_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -607,7 +607,7 @@ KERNEL_FQ void m01720_s08 (KERN_ATTR_BASIC ()) m01720s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01720_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01720_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m01720_a3-pure.cl b/OpenCL/m01720_a3-pure.cl index ec7a882d5..26cc51ebf 100644 --- a/OpenCL/m01720_a3-pure.cl +++ b/OpenCL/m01720_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha512.cl) #endif -KERNEL_FQ void m01720_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01720_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -75,7 +75,7 @@ KERNEL_FQ void m01720_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m01720_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01720_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m01730_a0-optimized.cl b/OpenCL/m01730_a0-optimized.cl index 7638c39f3..311b4df11 100644 --- a/OpenCL/m01730_a0-optimized.cl +++ b/OpenCL/m01730_a0-optimized.cl @@ -122,7 +122,7 @@ DECLSPEC void sha512_transform_intern (PRIVATE_AS const u32x *w0, PRIVATE_AS con digest[7] = h; } -KERNEL_FQ void m01730_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01730_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -293,15 +293,15 @@ KERNEL_FQ void m01730_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m01730_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01730_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m01730_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01730_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m01730_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01730_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -484,10 +484,10 @@ KERNEL_FQ void m01730_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m01730_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01730_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m01730_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01730_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m01730_a0-pure.cl b/OpenCL/m01730_a0-pure.cl index 3b0cd3ebe..fb7c40184 100644 --- a/OpenCL/m01730_a0-pure.cl +++ b/OpenCL/m01730_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha512.cl) #endif -KERNEL_FQ void m01730_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01730_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -71,7 +71,7 @@ KERNEL_FQ void m01730_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m01730_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01730_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m01730_a1-optimized.cl b/OpenCL/m01730_a1-optimized.cl index d491e077d..ea2821c4f 100644 --- a/OpenCL/m01730_a1-optimized.cl +++ b/OpenCL/m01730_a1-optimized.cl @@ -120,7 +120,7 @@ DECLSPEC void sha512_transform_intern (PRIVATE_AS const u32x *w0, PRIVATE_AS con digest[7] = h; } -KERNEL_FQ void m01730_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01730_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -351,15 +351,15 @@ KERNEL_FQ void m01730_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m01730_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01730_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m01730_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01730_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m01730_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01730_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -602,10 +602,10 @@ KERNEL_FQ void m01730_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m01730_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01730_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m01730_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01730_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m01730_a1-pure.cl b/OpenCL/m01730_a1-pure.cl index 88ae2f6ad..6e38be410 100644 --- a/OpenCL/m01730_a1-pure.cl +++ b/OpenCL/m01730_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha512.cl) #endif -KERNEL_FQ void m01730_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01730_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -67,7 +67,7 @@ KERNEL_FQ void m01730_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m01730_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01730_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m01730_a3-optimized.cl b/OpenCL/m01730_a3-optimized.cl index ecfc09f94..7ca2a5e0a 100644 --- a/OpenCL/m01730_a3-optimized.cl +++ b/OpenCL/m01730_a3-optimized.cl @@ -307,7 +307,7 @@ DECLSPEC void m01730s (PRIVATE_AS u32 *w, const u32 pw_len, KERN_ATTR_FUNC_VECTO } } -KERNEL_FQ void m01730_m04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01730_m04 (KERN_ATTR_VECTOR ()) { /** * base @@ -347,7 +347,7 @@ KERNEL_FQ void m01730_m04 (KERN_ATTR_VECTOR ()) m01730m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01730_m08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01730_m08 (KERN_ATTR_VECTOR ()) { /** * base @@ -387,7 +387,7 @@ KERNEL_FQ void m01730_m08 (KERN_ATTR_VECTOR ()) m01730m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01730_m16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01730_m16 (KERN_ATTR_VECTOR ()) { /** * base @@ -427,7 +427,7 @@ KERNEL_FQ void m01730_m16 (KERN_ATTR_VECTOR ()) m01730m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01730_s04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01730_s04 (KERN_ATTR_VECTOR ()) { /** * base @@ -467,7 +467,7 @@ KERNEL_FQ void m01730_s04 (KERN_ATTR_VECTOR ()) m01730s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01730_s08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01730_s08 (KERN_ATTR_VECTOR ()) { /** * base @@ -507,7 +507,7 @@ KERNEL_FQ void m01730_s08 (KERN_ATTR_VECTOR ()) m01730s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01730_s16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01730_s16 (KERN_ATTR_VECTOR ()) { /** * base diff --git a/OpenCL/m01730_a3-pure.cl b/OpenCL/m01730_a3-pure.cl index 9f9e0f2e3..4b6911199 100644 --- a/OpenCL/m01730_a3-pure.cl +++ b/OpenCL/m01730_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha512.cl) #endif -KERNEL_FQ void m01730_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01730_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -80,7 +80,7 @@ KERNEL_FQ void m01730_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m01730_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01730_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m01740_a0-optimized.cl b/OpenCL/m01740_a0-optimized.cl index c384bbd39..57eceb1f3 100644 --- a/OpenCL/m01740_a0-optimized.cl +++ b/OpenCL/m01740_a0-optimized.cl @@ -122,7 +122,7 @@ DECLSPEC void sha512_transform_intern (PRIVATE_AS const u32x *w0, PRIVATE_AS con digest[7] = h; } -KERNEL_FQ void m01740_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01740_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -273,15 +273,15 @@ KERNEL_FQ void m01740_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m01740_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01740_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m01740_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01740_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m01740_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01740_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -444,10 +444,10 @@ KERNEL_FQ void m01740_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m01740_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01740_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m01740_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01740_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m01740_a0-pure.cl b/OpenCL/m01740_a0-pure.cl index 1fd0df2ca..5a33f36e6 100644 --- a/OpenCL/m01740_a0-pure.cl +++ b/OpenCL/m01740_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha512.cl) #endif -KERNEL_FQ void m01740_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01740_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -64,7 +64,7 @@ KERNEL_FQ void m01740_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m01740_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01740_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m01740_a1-optimized.cl b/OpenCL/m01740_a1-optimized.cl index f6a453911..063ad53d1 100644 --- a/OpenCL/m01740_a1-optimized.cl +++ b/OpenCL/m01740_a1-optimized.cl @@ -120,7 +120,7 @@ DECLSPEC void sha512_transform_intern (PRIVATE_AS const u32x *w0, PRIVATE_AS con digest[7] = h; } -KERNEL_FQ void m01740_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01740_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -329,15 +329,15 @@ KERNEL_FQ void m01740_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m01740_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01740_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m01740_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01740_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m01740_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01740_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -558,10 +558,10 @@ KERNEL_FQ void m01740_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m01740_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01740_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m01740_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01740_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m01740_a1-pure.cl b/OpenCL/m01740_a1-pure.cl index 7144b9ab7..b15ab489c 100644 --- a/OpenCL/m01740_a1-pure.cl +++ b/OpenCL/m01740_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha512.cl) #endif -KERNEL_FQ void m01740_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01740_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -58,7 +58,7 @@ KERNEL_FQ void m01740_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m01740_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01740_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m01740_a3-optimized.cl b/OpenCL/m01740_a3-optimized.cl index df4a1c10d..b1b9f8e47 100644 --- a/OpenCL/m01740_a3-optimized.cl +++ b/OpenCL/m01740_a3-optimized.cl @@ -362,7 +362,7 @@ DECLSPEC void m01740s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m01740_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01740_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -411,7 +411,7 @@ KERNEL_FQ void m01740_m04 (KERN_ATTR_BASIC ()) m01740m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01740_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01740_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -460,7 +460,7 @@ KERNEL_FQ void m01740_m08 (KERN_ATTR_BASIC ()) m01740m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01740_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01740_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -509,7 +509,7 @@ KERNEL_FQ void m01740_m16 (KERN_ATTR_BASIC ()) m01740m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01740_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01740_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -558,7 +558,7 @@ KERNEL_FQ void m01740_s04 (KERN_ATTR_BASIC ()) m01740s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01740_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01740_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -607,7 +607,7 @@ KERNEL_FQ void m01740_s08 (KERN_ATTR_BASIC ()) m01740s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01740_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01740_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m01740_a3-pure.cl b/OpenCL/m01740_a3-pure.cl index 4e448f353..48cb4485d 100644 --- a/OpenCL/m01740_a3-pure.cl +++ b/OpenCL/m01740_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha512.cl) #endif -KERNEL_FQ void m01740_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01740_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -75,7 +75,7 @@ KERNEL_FQ void m01740_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m01740_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01740_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m01750_a0-optimized.cl b/OpenCL/m01750_a0-optimized.cl index 32a7c5c75..d19cdb97c 100644 --- a/OpenCL/m01750_a0-optimized.cl +++ b/OpenCL/m01750_a0-optimized.cl @@ -191,7 +191,7 @@ DECLSPEC void hmac_sha512_run (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE sha512_transform_transport_vector (w0_t, w1_t, w2_t, w3_t, digest); } -KERNEL_FQ void m01750_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01750_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -310,15 +310,15 @@ KERNEL_FQ void m01750_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m01750_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01750_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m01750_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01750_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m01750_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01750_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -449,10 +449,10 @@ KERNEL_FQ void m01750_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m01750_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01750_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m01750_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01750_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m01750_a0-pure.cl b/OpenCL/m01750_a0-pure.cl index 7fae20f0b..90f9a0b74 100644 --- a/OpenCL/m01750_a0-pure.cl +++ b/OpenCL/m01750_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha512.cl) #endif -KERNEL_FQ void m01750_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01750_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -69,7 +69,7 @@ KERNEL_FQ void m01750_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m01750_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01750_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m01750_a1-optimized.cl b/OpenCL/m01750_a1-optimized.cl index b6925c871..3c8a21025 100644 --- a/OpenCL/m01750_a1-optimized.cl +++ b/OpenCL/m01750_a1-optimized.cl @@ -189,7 +189,7 @@ DECLSPEC void hmac_sha512_run (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE sha512_transform_transport_vector (w0_t, w1_t, w2_t, w3_t, digest); } -KERNEL_FQ void m01750_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01750_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -376,15 +376,15 @@ KERNEL_FQ void m01750_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m01750_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01750_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m01750_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01750_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m01750_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01750_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -583,10 +583,10 @@ KERNEL_FQ void m01750_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m01750_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01750_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m01750_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01750_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m01750_a1-pure.cl b/OpenCL/m01750_a1-pure.cl index 4c9e99333..135e50d06 100644 --- a/OpenCL/m01750_a1-pure.cl +++ b/OpenCL/m01750_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha512.cl) #endif -KERNEL_FQ void m01750_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01750_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -92,7 +92,7 @@ KERNEL_FQ void m01750_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m01750_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01750_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m01750_a3-optimized.cl b/OpenCL/m01750_a3-optimized.cl index 196c7e597..e422db63c 100644 --- a/OpenCL/m01750_a3-optimized.cl +++ b/OpenCL/m01750_a3-optimized.cl @@ -415,7 +415,7 @@ DECLSPEC void m01750s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m01750_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01750_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -464,7 +464,7 @@ KERNEL_FQ void m01750_m04 (KERN_ATTR_BASIC ()) m01750m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01750_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01750_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -513,7 +513,7 @@ KERNEL_FQ void m01750_m08 (KERN_ATTR_BASIC ()) m01750m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01750_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01750_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -562,7 +562,7 @@ KERNEL_FQ void m01750_m16 (KERN_ATTR_BASIC ()) m01750m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01750_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01750_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -611,7 +611,7 @@ KERNEL_FQ void m01750_s04 (KERN_ATTR_BASIC ()) m01750s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01750_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01750_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -660,7 +660,7 @@ KERNEL_FQ void m01750_s08 (KERN_ATTR_BASIC ()) m01750s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01750_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01750_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m01750_a3-pure.cl b/OpenCL/m01750_a3-pure.cl index 297b0f82e..bcb295bf0 100644 --- a/OpenCL/m01750_a3-pure.cl +++ b/OpenCL/m01750_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha512.cl) #endif -KERNEL_FQ void m01750_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01750_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -78,7 +78,7 @@ KERNEL_FQ void m01750_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m01750_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01750_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m01760_a0-optimized.cl b/OpenCL/m01760_a0-optimized.cl index 7ce89b233..4b20511c5 100644 --- a/OpenCL/m01760_a0-optimized.cl +++ b/OpenCL/m01760_a0-optimized.cl @@ -191,7 +191,7 @@ DECLSPEC void hmac_sha512_run (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE sha512_transform_transport_vector (w0_t, w1_t, w2_t, w3_t, digest); } -KERNEL_FQ void m01760_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01760_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -323,15 +323,15 @@ KERNEL_FQ void m01760_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m01760_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01760_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m01760_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01760_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m01760_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01760_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -475,10 +475,10 @@ KERNEL_FQ void m01760_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m01760_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01760_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m01760_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01760_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m01760_a0-pure.cl b/OpenCL/m01760_a0-pure.cl index a1a2f401f..891b11edd 100644 --- a/OpenCL/m01760_a0-pure.cl +++ b/OpenCL/m01760_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha512.cl) #endif -KERNEL_FQ void m01760_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01760_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -71,7 +71,7 @@ KERNEL_FQ void m01760_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m01760_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01760_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m01760_a1-optimized.cl b/OpenCL/m01760_a1-optimized.cl index 713ede277..b6a67ddfa 100644 --- a/OpenCL/m01760_a1-optimized.cl +++ b/OpenCL/m01760_a1-optimized.cl @@ -189,7 +189,7 @@ DECLSPEC void hmac_sha512_run (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE sha512_transform_transport_vector (w0_t, w1_t, w2_t, w3_t, digest); } -KERNEL_FQ void m01760_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01760_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -381,15 +381,15 @@ KERNEL_FQ void m01760_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m01760_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01760_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m01760_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01760_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m01760_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01760_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -593,10 +593,10 @@ KERNEL_FQ void m01760_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m01760_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01760_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m01760_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01760_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m01760_a1-pure.cl b/OpenCL/m01760_a1-pure.cl index 9c44ccd33..398bb97b4 100644 --- a/OpenCL/m01760_a1-pure.cl +++ b/OpenCL/m01760_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha512.cl) #endif -KERNEL_FQ void m01760_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01760_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -94,7 +94,7 @@ KERNEL_FQ void m01760_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m01760_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01760_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m01760_a3-optimized.cl b/OpenCL/m01760_a3-optimized.cl index 674fee09f..2d83dd07a 100644 --- a/OpenCL/m01760_a3-optimized.cl +++ b/OpenCL/m01760_a3-optimized.cl @@ -411,7 +411,7 @@ DECLSPEC void m01760s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m01760_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01760_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -460,7 +460,7 @@ KERNEL_FQ void m01760_m04 (KERN_ATTR_BASIC ()) m01760m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01760_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01760_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -509,7 +509,7 @@ KERNEL_FQ void m01760_m08 (KERN_ATTR_BASIC ()) m01760m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01760_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01760_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -558,7 +558,7 @@ KERNEL_FQ void m01760_m16 (KERN_ATTR_BASIC ()) m01760m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01760_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01760_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -607,7 +607,7 @@ KERNEL_FQ void m01760_s04 (KERN_ATTR_BASIC ()) m01760s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01760_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01760_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -656,7 +656,7 @@ KERNEL_FQ void m01760_s08 (KERN_ATTR_BASIC ()) m01760s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01760_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01760_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m01760_a3-pure.cl b/OpenCL/m01760_a3-pure.cl index a929aaf70..91b43658a 100644 --- a/OpenCL/m01760_a3-pure.cl +++ b/OpenCL/m01760_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha512.cl) #endif -KERNEL_FQ void m01760_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01760_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -80,7 +80,7 @@ KERNEL_FQ void m01760_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m01760_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01760_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m01770_a0-optimized.cl b/OpenCL/m01770_a0-optimized.cl index b4a9f3eea..e5cc7f117 100644 --- a/OpenCL/m01770_a0-optimized.cl +++ b/OpenCL/m01770_a0-optimized.cl @@ -122,7 +122,7 @@ DECLSPEC void sha512_transform_intern (PRIVATE_AS const u32x *w0, PRIVATE_AS con digest[7] = h; } -KERNEL_FQ void m01770_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01770_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -220,15 +220,15 @@ KERNEL_FQ void m01770_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m01770_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01770_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m01770_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01770_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m01770_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01770_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -338,10 +338,10 @@ KERNEL_FQ void m01770_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m01770_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01770_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m01770_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01770_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m01770_a0-pure.cl b/OpenCL/m01770_a0-pure.cl index 462288df8..4f9e35880 100644 --- a/OpenCL/m01770_a0-pure.cl +++ b/OpenCL/m01770_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha512.cl) #endif -KERNEL_FQ void m01770_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01770_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -60,7 +60,7 @@ KERNEL_FQ void m01770_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m01770_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m01770_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m01770_a1-optimized.cl b/OpenCL/m01770_a1-optimized.cl index 41f6a77df..3d39d2fd3 100644 --- a/OpenCL/m01770_a1-optimized.cl +++ b/OpenCL/m01770_a1-optimized.cl @@ -120,7 +120,7 @@ DECLSPEC void sha512_transform_intern (PRIVATE_AS const u32x *w0, PRIVATE_AS con digest[7] = h; } -KERNEL_FQ void m01770_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01770_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -276,15 +276,15 @@ KERNEL_FQ void m01770_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m01770_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01770_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m01770_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01770_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m01770_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01770_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -452,10 +452,10 @@ KERNEL_FQ void m01770_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m01770_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01770_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m01770_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01770_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m01770_a1-pure.cl b/OpenCL/m01770_a1-pure.cl index 46c56dc12..2f547c660 100644 --- a/OpenCL/m01770_a1-pure.cl +++ b/OpenCL/m01770_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha512.cl) #endif -KERNEL_FQ void m01770_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01770_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -56,7 +56,7 @@ KERNEL_FQ void m01770_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m01770_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m01770_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m01770_a3-optimized.cl b/OpenCL/m01770_a3-optimized.cl index 248e644ec..06bf8f2b0 100644 --- a/OpenCL/m01770_a3-optimized.cl +++ b/OpenCL/m01770_a3-optimized.cl @@ -258,7 +258,7 @@ DECLSPEC void m01770s (PRIVATE_AS u32 *w, const u32 pw_len, KERN_ATTR_FUNC_VECTO } } -KERNEL_FQ void m01770_m04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01770_m04 (KERN_ATTR_VECTOR ()) { /** * base @@ -298,7 +298,7 @@ KERNEL_FQ void m01770_m04 (KERN_ATTR_VECTOR ()) m01770m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01770_m08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01770_m08 (KERN_ATTR_VECTOR ()) { /** * base @@ -338,7 +338,7 @@ KERNEL_FQ void m01770_m08 (KERN_ATTR_VECTOR ()) m01770m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01770_m16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01770_m16 (KERN_ATTR_VECTOR ()) { /** * base @@ -378,7 +378,7 @@ KERNEL_FQ void m01770_m16 (KERN_ATTR_VECTOR ()) m01770m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01770_s04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01770_s04 (KERN_ATTR_VECTOR ()) { /** * base @@ -418,7 +418,7 @@ KERNEL_FQ void m01770_s04 (KERN_ATTR_VECTOR ()) m01770s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01770_s08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01770_s08 (KERN_ATTR_VECTOR ()) { /** * base @@ -458,7 +458,7 @@ KERNEL_FQ void m01770_s08 (KERN_ATTR_VECTOR ()) m01770s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m01770_s16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01770_s16 (KERN_ATTR_VECTOR ()) { /** * base diff --git a/OpenCL/m01770_a3-pure.cl b/OpenCL/m01770_a3-pure.cl index 7cd13c39c..67f41b4ff 100644 --- a/OpenCL/m01770_a3-pure.cl +++ b/OpenCL/m01770_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha512.cl) #endif -KERNEL_FQ void m01770_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01770_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -69,7 +69,7 @@ KERNEL_FQ void m01770_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m01770_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m01770_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m01800-optimized.cl b/OpenCL/m01800-optimized.cl index e994b7985..b7c17ad5d 100644 --- a/OpenCL/m01800-optimized.cl +++ b/OpenCL/m01800-optimized.cl @@ -171,7 +171,7 @@ DECLSPEC void orig_sha512_final (PRIVATE_AS orig_sha512_ctx_t *sha512_ctx) sha512_transform_transport (sha512_ctx->buf, sha512_ctx->state); } -KERNEL_FQ void m01800_init (KERN_ATTR_TMPS (sha512crypt_tmp_t)) +KERNEL_FQ KERNEL_FA void m01800_init (KERN_ATTR_TMPS (sha512crypt_tmp_t)) { /** * base @@ -300,7 +300,7 @@ KERNEL_FQ void m01800_init (KERN_ATTR_TMPS (sha512crypt_tmp_t)) tmps[gid].l_s_bytes[1] = sha512_ctx.state[1]; } -KERNEL_FQ void m01800_loop (KERN_ATTR_TMPS (sha512crypt_tmp_t)) +KERNEL_FQ KERNEL_FA void m01800_loop (KERN_ATTR_TMPS (sha512crypt_tmp_t)) { /** * base @@ -477,7 +477,7 @@ KERNEL_FQ void m01800_loop (KERN_ATTR_TMPS (sha512crypt_tmp_t)) tmps[gid].l_alt_result[7] = l_alt_result[7]; } -KERNEL_FQ void m01800_comp (KERN_ATTR_TMPS (sha512crypt_tmp_t)) +KERNEL_FQ KERNEL_FA void m01800_comp (KERN_ATTR_TMPS (sha512crypt_tmp_t)) { /** * base diff --git a/OpenCL/m01800-pure.cl b/OpenCL/m01800-pure.cl index 77bf38ba5..6a7a7efe0 100644 --- a/OpenCL/m01800-pure.cl +++ b/OpenCL/m01800-pure.cl @@ -28,7 +28,7 @@ typedef struct sha512crypt_tmp } sha512crypt_tmp_t; -KERNEL_FQ void m01800_init (KERN_ATTR_TMPS (sha512crypt_tmp_t)) +KERNEL_FQ KERNEL_FA void m01800_init (KERN_ATTR_TMPS (sha512crypt_tmp_t)) { /** * base @@ -313,7 +313,7 @@ KERNEL_FQ void m01800_init (KERN_ATTR_TMPS (sha512crypt_tmp_t)) for (int i = 0; i < 64; i++) tmps[gid].s_bytes[i] = s_final[i]; } -KERNEL_FQ void m01800_loop (KERN_ATTR_TMPS (sha512crypt_tmp_t)) +KERNEL_FQ KERNEL_FA void m01800_loop (KERN_ATTR_TMPS (sha512crypt_tmp_t)) { /** * base @@ -397,7 +397,7 @@ KERNEL_FQ void m01800_loop (KERN_ATTR_TMPS (sha512crypt_tmp_t)) for (int i = 0; i < 16; i++) tmps[gid].alt_result[i] = alt_result[i]; } -KERNEL_FQ void m01800_comp (KERN_ATTR_TMPS (sha512crypt_tmp_t)) +KERNEL_FQ KERNEL_FA void m01800_comp (KERN_ATTR_TMPS (sha512crypt_tmp_t)) { /** * base diff --git a/OpenCL/m02000_a0-optimized.cl b/OpenCL/m02000_a0-optimized.cl index 7b537538e..0a598feb2 100644 --- a/OpenCL/m02000_a0-optimized.cl +++ b/OpenCL/m02000_a0-optimized.cl @@ -10,26 +10,26 @@ #include M2S(INCLUDE_PATH/inc_common.cl) #endif -KERNEL_FQ void m02000_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m02000_m04 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m02000_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m02000_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m02000_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m02000_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m02000_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m02000_s04 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m02000_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m02000_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m02000_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m02000_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m02000_a0-pure.cl b/OpenCL/m02000_a0-pure.cl index b902aa2c9..443d84c19 100644 --- a/OpenCL/m02000_a0-pure.cl +++ b/OpenCL/m02000_a0-pure.cl @@ -10,10 +10,10 @@ #include M2S(INCLUDE_PATH/inc_common.cl) #endif -KERNEL_FQ void m02000_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m02000_mxx (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m02000_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m02000_sxx (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m02000_a1-optimized.cl b/OpenCL/m02000_a1-optimized.cl index 248122e0f..59ba09fe6 100644 --- a/OpenCL/m02000_a1-optimized.cl +++ b/OpenCL/m02000_a1-optimized.cl @@ -10,26 +10,26 @@ #include M2S(INCLUDE_PATH/inc_common.cl) #endif -KERNEL_FQ void m02000_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02000_m04 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m02000_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02000_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m02000_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02000_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m02000_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02000_s04 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m02000_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02000_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m02000_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02000_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m02000_a1-pure.cl b/OpenCL/m02000_a1-pure.cl index 71a8c9015..654eeceed 100644 --- a/OpenCL/m02000_a1-pure.cl +++ b/OpenCL/m02000_a1-pure.cl @@ -10,10 +10,10 @@ #include M2S(INCLUDE_PATH/inc_common.cl) #endif -KERNEL_FQ void m02000_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02000_mxx (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m02000_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02000_sxx (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m02000_a3-optimized.cl b/OpenCL/m02000_a3-optimized.cl index 248122e0f..59ba09fe6 100644 --- a/OpenCL/m02000_a3-optimized.cl +++ b/OpenCL/m02000_a3-optimized.cl @@ -10,26 +10,26 @@ #include M2S(INCLUDE_PATH/inc_common.cl) #endif -KERNEL_FQ void m02000_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02000_m04 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m02000_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02000_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m02000_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02000_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m02000_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02000_s04 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m02000_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02000_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m02000_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02000_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m02000_a3-pure.cl b/OpenCL/m02000_a3-pure.cl index 71a8c9015..654eeceed 100644 --- a/OpenCL/m02000_a3-pure.cl +++ b/OpenCL/m02000_a3-pure.cl @@ -10,10 +10,10 @@ #include M2S(INCLUDE_PATH/inc_common.cl) #endif -KERNEL_FQ void m02000_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02000_mxx (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m02000_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02000_sxx (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m02100-pure.cl b/OpenCL/m02100-pure.cl index ec97d1d15..a44f889fd 100644 --- a/OpenCL/m02100-pure.cl +++ b/OpenCL/m02100-pure.cl @@ -65,7 +65,7 @@ DECLSPEC void hmac_sha1_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE sha1_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m02100_init (KERN_ATTR_TMPS (dcc2_tmp_t)) +KERNEL_FQ KERNEL_FA void m02100_init (KERN_ATTR_TMPS (dcc2_tmp_t)) { /** * base @@ -180,7 +180,7 @@ KERNEL_FQ void m02100_init (KERN_ATTR_TMPS (dcc2_tmp_t)) tmps[gid].out[3] = tmps[gid].dgst[3]; } -KERNEL_FQ void m02100_loop (KERN_ATTR_TMPS (dcc2_tmp_t)) +KERNEL_FQ KERNEL_FA void m02100_loop (KERN_ATTR_TMPS (dcc2_tmp_t)) { /** * base @@ -267,7 +267,7 @@ KERNEL_FQ void m02100_loop (KERN_ATTR_TMPS (dcc2_tmp_t)) unpackv (tmps, out, gid, 3, out[3]); } -KERNEL_FQ void m02100_comp (KERN_ATTR_TMPS (dcc2_tmp_t)) +KERNEL_FQ KERNEL_FA void m02100_comp (KERN_ATTR_TMPS (dcc2_tmp_t)) { /** * base diff --git a/OpenCL/m02400_a0-optimized.cl b/OpenCL/m02400_a0-optimized.cl index f10aac5cb..89cbcf525 100644 --- a/OpenCL/m02400_a0-optimized.cl +++ b/OpenCL/m02400_a0-optimized.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m02400_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m02400_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -177,15 +177,15 @@ KERNEL_FQ void m02400_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m02400_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m02400_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m02400_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m02400_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m02400_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m02400_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -361,10 +361,10 @@ KERNEL_FQ void m02400_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m02400_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m02400_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m02400_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m02400_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m02400_a1-optimized.cl b/OpenCL/m02400_a1-optimized.cl index 7ad7bd058..c9a1a23ae 100644 --- a/OpenCL/m02400_a1-optimized.cl +++ b/OpenCL/m02400_a1-optimized.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m02400_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02400_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -239,15 +239,15 @@ KERNEL_FQ void m02400_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m02400_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02400_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m02400_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02400_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m02400_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02400_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -487,10 +487,10 @@ KERNEL_FQ void m02400_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m02400_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02400_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m02400_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02400_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m02400_a3-optimized.cl b/OpenCL/m02400_a3-optimized.cl index b3b3f6d94..02974d53b 100644 --- a/OpenCL/m02400_a3-optimized.cl +++ b/OpenCL/m02400_a3-optimized.cl @@ -453,7 +453,7 @@ DECLSPEC void m02400s (PRIVATE_AS u32 *w, const u32 pw_len, KERN_ATTR_FUNC_VECTO } } -KERNEL_FQ void m02400_m04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m02400_m04 (KERN_ATTR_VECTOR ()) { /** * base @@ -493,7 +493,7 @@ KERNEL_FQ void m02400_m04 (KERN_ATTR_VECTOR ()) m02400m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m02400_m08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m02400_m08 (KERN_ATTR_VECTOR ()) { /** * base @@ -533,7 +533,7 @@ KERNEL_FQ void m02400_m08 (KERN_ATTR_VECTOR ()) m02400m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m02400_m16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m02400_m16 (KERN_ATTR_VECTOR ()) { /** * base @@ -573,7 +573,7 @@ KERNEL_FQ void m02400_m16 (KERN_ATTR_VECTOR ()) m02400m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m02400_s04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m02400_s04 (KERN_ATTR_VECTOR ()) { /** * base @@ -613,7 +613,7 @@ KERNEL_FQ void m02400_s04 (KERN_ATTR_VECTOR ()) m02400s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m02400_s08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m02400_s08 (KERN_ATTR_VECTOR ()) { /** * base @@ -653,7 +653,7 @@ KERNEL_FQ void m02400_s08 (KERN_ATTR_VECTOR ()) m02400s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m02400_s16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m02400_s16 (KERN_ATTR_VECTOR ()) { /** * base diff --git a/OpenCL/m02410_a0-optimized.cl b/OpenCL/m02410_a0-optimized.cl index 84ab9e682..4a702680b 100644 --- a/OpenCL/m02410_a0-optimized.cl +++ b/OpenCL/m02410_a0-optimized.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m02410_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m02410_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -256,15 +256,15 @@ KERNEL_FQ void m02410_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m02410_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m02410_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m02410_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m02410_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m02410_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m02410_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -519,10 +519,10 @@ KERNEL_FQ void m02410_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m02410_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m02410_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m02410_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m02410_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m02410_a1-optimized.cl b/OpenCL/m02410_a1-optimized.cl index 8e0045453..934e0d026 100644 --- a/OpenCL/m02410_a1-optimized.cl +++ b/OpenCL/m02410_a1-optimized.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m02410_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02410_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -314,15 +314,15 @@ KERNEL_FQ void m02410_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m02410_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02410_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m02410_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02410_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m02410_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02410_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -637,10 +637,10 @@ KERNEL_FQ void m02410_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m02410_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02410_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m02410_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02410_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m02410_a3-optimized.cl b/OpenCL/m02410_a3-optimized.cl index c5352aadf..5af9e342f 100644 --- a/OpenCL/m02410_a3-optimized.cl +++ b/OpenCL/m02410_a3-optimized.cl @@ -551,7 +551,7 @@ DECLSPEC void m02410s (PRIVATE_AS u32 *w, const u32 pw_len, KERN_ATTR_FUNC_VECTO } } -KERNEL_FQ void m02410_m04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m02410_m04 (KERN_ATTR_VECTOR ()) { /** * base @@ -591,7 +591,7 @@ KERNEL_FQ void m02410_m04 (KERN_ATTR_VECTOR ()) m02410m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m02410_m08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m02410_m08 (KERN_ATTR_VECTOR ()) { /** * base @@ -631,7 +631,7 @@ KERNEL_FQ void m02410_m08 (KERN_ATTR_VECTOR ()) m02410m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m02410_m16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m02410_m16 (KERN_ATTR_VECTOR ()) { /** * base @@ -671,7 +671,7 @@ KERNEL_FQ void m02410_m16 (KERN_ATTR_VECTOR ()) m02410m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m02410_s04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m02410_s04 (KERN_ATTR_VECTOR ()) { /** * base @@ -711,7 +711,7 @@ KERNEL_FQ void m02410_s04 (KERN_ATTR_VECTOR ()) m02410s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m02410_s08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m02410_s08 (KERN_ATTR_VECTOR ()) { /** * base @@ -751,7 +751,7 @@ KERNEL_FQ void m02410_s08 (KERN_ATTR_VECTOR ()) m02410s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m02410_s16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m02410_s16 (KERN_ATTR_VECTOR ()) { /** * base diff --git a/OpenCL/m02500-pure.cl b/OpenCL/m02500-pure.cl index 80bc26bdc..2a4e84b68 100644 --- a/OpenCL/m02500-pure.cl +++ b/OpenCL/m02500-pure.cl @@ -128,7 +128,7 @@ DECLSPEC void hmac_sha1_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE sha1_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m02500_init (KERN_ATTR_TMPS_ESALT (wpa_pbkdf2_tmp_t, wpa_eapol_t)) +KERNEL_FQ KERNEL_FA void m02500_init (KERN_ATTR_TMPS_ESALT (wpa_pbkdf2_tmp_t, wpa_eapol_t)) { /** * base @@ -236,7 +236,7 @@ KERNEL_FQ void m02500_init (KERN_ATTR_TMPS_ESALT (wpa_pbkdf2_tmp_t, wpa_eapol_t) tmps[gid].out[9] = sha1_hmac_ctx2.opad.h[4]; } -KERNEL_FQ void m02500_loop (KERN_ATTR_TMPS_ESALT (wpa_pbkdf2_tmp_t, wpa_eapol_t)) +KERNEL_FQ KERNEL_FA void m02500_loop (KERN_ATTR_TMPS_ESALT (wpa_pbkdf2_tmp_t, wpa_eapol_t)) { const u64 gid = get_global_id (0); @@ -379,12 +379,12 @@ KERNEL_FQ void m02500_loop (KERN_ATTR_TMPS_ESALT (wpa_pbkdf2_tmp_t, wpa_eapol_t) unpackv (tmps, out, gid, 9, out[4]); } -KERNEL_FQ void m02500_comp (KERN_ATTR_TMPS_ESALT (wpa_pbkdf2_tmp_t, wpa_eapol_t)) +KERNEL_FQ KERNEL_FA void m02500_comp (KERN_ATTR_TMPS_ESALT (wpa_pbkdf2_tmp_t, wpa_eapol_t)) { // not in use here, special case... } -KERNEL_FQ void m02500_aux1 (KERN_ATTR_TMPS_ESALT (wpa_pbkdf2_tmp_t, wpa_eapol_t)) +KERNEL_FQ KERNEL_FA void m02500_aux1 (KERN_ATTR_TMPS_ESALT (wpa_pbkdf2_tmp_t, wpa_eapol_t)) { const u64 gid = get_global_id (0); @@ -572,7 +572,7 @@ KERNEL_FQ void m02500_aux1 (KERN_ATTR_TMPS_ESALT (wpa_pbkdf2_tmp_t, wpa_eapol_t) } } -KERNEL_FQ void m02500_aux2 (KERN_ATTR_TMPS_ESALT (wpa_pbkdf2_tmp_t, wpa_eapol_t)) +KERNEL_FQ KERNEL_FA void m02500_aux2 (KERN_ATTR_TMPS_ESALT (wpa_pbkdf2_tmp_t, wpa_eapol_t)) { const u64 gid = get_global_id (0); @@ -755,7 +755,7 @@ KERNEL_FQ void m02500_aux2 (KERN_ATTR_TMPS_ESALT (wpa_pbkdf2_tmp_t, wpa_eapol_t) } } -KERNEL_FQ void m02500_aux3 (KERN_ATTR_TMPS_ESALT (wpa_pbkdf2_tmp_t, wpa_eapol_t)) +KERNEL_FQ KERNEL_FA void m02500_aux3 (KERN_ATTR_TMPS_ESALT (wpa_pbkdf2_tmp_t, wpa_eapol_t)) { /** * aes shared diff --git a/OpenCL/m02501-pure.cl b/OpenCL/m02501-pure.cl index 6bb174486..24bd5409c 100644 --- a/OpenCL/m02501-pure.cl +++ b/OpenCL/m02501-pure.cl @@ -3,7 +3,7 @@ * License.....: MIT */ -#define NEW_SIMD_CODE +//#define NEW_SIMD_CODE #ifdef KERNEL_STATIC #include M2S(INCLUDE_PATH/inc_vendor.h) @@ -102,7 +102,7 @@ DECLSPEC void make_kn (u32 *k) k[3] ^= c * 0x87000000; } -KERNEL_FQ void m02501_init (KERN_ATTR_TMPS_ESALT (wpa_pmk_tmp_t, wpa_eapol_t)) +KERNEL_FQ KERNEL_FA void m02501_init (KERN_ATTR_TMPS_ESALT (wpa_pmk_tmp_t, wpa_eapol_t)) { const u64 gid = get_global_id (0); @@ -148,19 +148,19 @@ KERNEL_FQ void m02501_init (KERN_ATTR_TMPS_ESALT (wpa_pmk_tmp_t, wpa_eapol_t)) tmps[gid].out[7] = hc_swap32_S (out[7]); } -KERNEL_FQ void m02501_loop (KERN_ATTR_TMPS_ESALT (wpa_pmk_tmp_t, wpa_eapol_t)) +KERNEL_FQ KERNEL_FA void m02501_loop (KERN_ATTR_TMPS_ESALT (wpa_pmk_tmp_t, wpa_eapol_t)) { const u64 gid = get_global_id (0); if (gid >= GID_CNT) return; } -KERNEL_FQ void m02501_comp (KERN_ATTR_TMPS_ESALT (wpa_pmk_tmp_t, wpa_eapol_t)) +KERNEL_FQ KERNEL_FA void m02501_comp (KERN_ATTR_TMPS_ESALT (wpa_pmk_tmp_t, wpa_eapol_t)) { // not in use here, special case... } -KERNEL_FQ void m02501_aux1 (KERN_ATTR_TMPS_ESALT (wpa_pmk_tmp_t, wpa_eapol_t)) +KERNEL_FQ KERNEL_FA void m02501_aux1 (KERN_ATTR_TMPS_ESALT (wpa_pmk_tmp_t, wpa_eapol_t)) { const u64 gid = get_global_id (0); @@ -348,7 +348,7 @@ KERNEL_FQ void m02501_aux1 (KERN_ATTR_TMPS_ESALT (wpa_pmk_tmp_t, wpa_eapol_t)) } } -KERNEL_FQ void m02501_aux2 (KERN_ATTR_TMPS_ESALT (wpa_pmk_tmp_t, wpa_eapol_t)) +KERNEL_FQ KERNEL_FA void m02501_aux2 (KERN_ATTR_TMPS_ESALT (wpa_pmk_tmp_t, wpa_eapol_t)) { const u64 gid = get_global_id (0); @@ -531,7 +531,7 @@ KERNEL_FQ void m02501_aux2 (KERN_ATTR_TMPS_ESALT (wpa_pmk_tmp_t, wpa_eapol_t)) } } -KERNEL_FQ void m02501_aux3 (KERN_ATTR_TMPS_ESALT (wpa_pmk_tmp_t, wpa_eapol_t)) +KERNEL_FQ KERNEL_FA void m02501_aux3 (KERN_ATTR_TMPS_ESALT (wpa_pmk_tmp_t, wpa_eapol_t)) { /** * aes shared diff --git a/OpenCL/m02610_a0-optimized.cl b/OpenCL/m02610_a0-optimized.cl index 47ccd84a5..253136c4c 100644 --- a/OpenCL/m02610_a0-optimized.cl +++ b/OpenCL/m02610_a0-optimized.cl @@ -28,7 +28,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m02610_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m02610_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -304,15 +304,15 @@ KERNEL_FQ void m02610_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m02610_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m02610_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m02610_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m02610_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m02610_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m02610_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -603,10 +603,10 @@ KERNEL_FQ void m02610_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m02610_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m02610_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m02610_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m02610_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m02610_a0-pure.cl b/OpenCL/m02610_a0-pure.cl index ecd7d3319..101a16095 100644 --- a/OpenCL/m02610_a0-pure.cl +++ b/OpenCL/m02610_a0-pure.cl @@ -28,7 +28,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m02610_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m02610_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -131,7 +131,7 @@ KERNEL_FQ void m02610_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m02610_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m02610_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m02610_a1-optimized.cl b/OpenCL/m02610_a1-optimized.cl index 9f05b58d8..1f402a48f 100644 --- a/OpenCL/m02610_a1-optimized.cl +++ b/OpenCL/m02610_a1-optimized.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m02610_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02610_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -361,15 +361,15 @@ KERNEL_FQ void m02610_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m02610_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02610_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m02610_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02610_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m02610_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02610_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -719,10 +719,10 @@ KERNEL_FQ void m02610_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m02610_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02610_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m02610_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02610_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m02610_a1-pure.cl b/OpenCL/m02610_a1-pure.cl index 569486bd0..d69d19bd9 100644 --- a/OpenCL/m02610_a1-pure.cl +++ b/OpenCL/m02610_a1-pure.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m02610_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02610_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -127,7 +127,7 @@ KERNEL_FQ void m02610_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m02610_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02610_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m02610_a3-optimized.cl b/OpenCL/m02610_a3-optimized.cl index bdbf35318..ceaec427b 100644 --- a/OpenCL/m02610_a3-optimized.cl +++ b/OpenCL/m02610_a3-optimized.cl @@ -552,7 +552,7 @@ DECLSPEC void m02610s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m02610_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02610_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -622,7 +622,7 @@ KERNEL_FQ void m02610_m04 (KERN_ATTR_BASIC ()) m02610m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m02610_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02610_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -692,7 +692,7 @@ KERNEL_FQ void m02610_m08 (KERN_ATTR_BASIC ()) m02610m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m02610_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02610_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -762,7 +762,7 @@ KERNEL_FQ void m02610_m16 (KERN_ATTR_BASIC ()) m02610m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m02610_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02610_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -832,7 +832,7 @@ KERNEL_FQ void m02610_s04 (KERN_ATTR_BASIC ()) m02610s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m02610_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02610_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -902,7 +902,7 @@ KERNEL_FQ void m02610_s08 (KERN_ATTR_BASIC ()) m02610s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m02610_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02610_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m02610_a3-pure.cl b/OpenCL/m02610_a3-pure.cl index c9ff5c487..dce67c176 100644 --- a/OpenCL/m02610_a3-pure.cl +++ b/OpenCL/m02610_a3-pure.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m02610_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m02610_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -140,7 +140,7 @@ KERNEL_FQ void m02610_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m02610_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m02610_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m02630_a0-optimized.cl b/OpenCL/m02630_a0-optimized.cl index ceb71f299..03386c7d8 100644 --- a/OpenCL/m02630_a0-optimized.cl +++ b/OpenCL/m02630_a0-optimized.cl @@ -28,7 +28,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m02630_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m02630_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -370,15 +370,15 @@ KERNEL_FQ void m02630_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m02630_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m02630_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m02630_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m02630_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m02630_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m02630_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -735,10 +735,10 @@ KERNEL_FQ void m02630_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m02630_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m02630_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m02630_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m02630_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m02630_a0-pure.cl b/OpenCL/m02630_a0-pure.cl index 6c691a526..f2a3f285d 100644 --- a/OpenCL/m02630_a0-pure.cl +++ b/OpenCL/m02630_a0-pure.cl @@ -28,7 +28,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m02630_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m02630_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -137,7 +137,7 @@ KERNEL_FQ void m02630_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m02630_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m02630_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m02630_a1-optimized.cl b/OpenCL/m02630_a1-optimized.cl index 7f6971c8d..59b660619 100644 --- a/OpenCL/m02630_a1-optimized.cl +++ b/OpenCL/m02630_a1-optimized.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m02630_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02630_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -428,15 +428,15 @@ KERNEL_FQ void m02630_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m02630_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02630_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m02630_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02630_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m02630_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02630_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -853,10 +853,10 @@ KERNEL_FQ void m02630_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m02630_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02630_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m02630_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02630_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m02630_a1-pure.cl b/OpenCL/m02630_a1-pure.cl index 1157dd7d7..4da81a509 100644 --- a/OpenCL/m02630_a1-pure.cl +++ b/OpenCL/m02630_a1-pure.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m02630_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02630_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -135,7 +135,7 @@ KERNEL_FQ void m02630_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m02630_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02630_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m02630_a3-optimized.cl b/OpenCL/m02630_a3-optimized.cl index aa12d6a94..d51e4fa2c 100644 --- a/OpenCL/m02630_a3-optimized.cl +++ b/OpenCL/m02630_a3-optimized.cl @@ -642,7 +642,7 @@ DECLSPEC void m02630s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m02630_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02630_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -712,7 +712,7 @@ KERNEL_FQ void m02630_m04 (KERN_ATTR_BASIC ()) m02630m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m02630_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02630_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -782,7 +782,7 @@ KERNEL_FQ void m02630_m08 (KERN_ATTR_BASIC ()) m02630m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m02630_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02630_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -852,7 +852,7 @@ KERNEL_FQ void m02630_m16 (KERN_ATTR_BASIC ()) m02630m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m02630_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02630_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -922,7 +922,7 @@ KERNEL_FQ void m02630_s04 (KERN_ATTR_BASIC ()) m02630s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m02630_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02630_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -992,7 +992,7 @@ KERNEL_FQ void m02630_s08 (KERN_ATTR_BASIC ()) m02630s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m02630_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02630_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m02630_a3-pure.cl b/OpenCL/m02630_a3-pure.cl index 51c5fb3af..683e1d180 100644 --- a/OpenCL/m02630_a3-pure.cl +++ b/OpenCL/m02630_a3-pure.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m02630_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m02630_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -148,7 +148,7 @@ KERNEL_FQ void m02630_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m02630_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m02630_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m02710_a0-optimized.cl b/OpenCL/m02710_a0-optimized.cl index 99fca1af1..ce5d2456b 100644 --- a/OpenCL/m02710_a0-optimized.cl +++ b/OpenCL/m02710_a0-optimized.cl @@ -28,7 +28,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m02710_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m02710_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -389,15 +389,15 @@ KERNEL_FQ void m02710_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m02710_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m02710_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m02710_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m02710_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m02710_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m02710_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -773,10 +773,10 @@ KERNEL_FQ void m02710_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m02710_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m02710_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m02710_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m02710_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m02710_a1-optimized.cl b/OpenCL/m02710_a1-optimized.cl index 5e8b2d4fe..8414e2160 100644 --- a/OpenCL/m02710_a1-optimized.cl +++ b/OpenCL/m02710_a1-optimized.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m02710_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02710_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -446,15 +446,15 @@ KERNEL_FQ void m02710_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m02710_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02710_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m02710_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02710_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m02710_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02710_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -889,10 +889,10 @@ KERNEL_FQ void m02710_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m02710_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02710_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m02710_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02710_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m02710_a3-optimized.cl b/OpenCL/m02710_a3-optimized.cl index 3c8404772..c21894f76 100644 --- a/OpenCL/m02710_a3-optimized.cl +++ b/OpenCL/m02710_a3-optimized.cl @@ -721,7 +721,7 @@ DECLSPEC void m02710s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m02710_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02710_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -791,7 +791,7 @@ KERNEL_FQ void m02710_m04 (KERN_ATTR_BASIC ()) m02710m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m02710_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02710_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -861,7 +861,7 @@ KERNEL_FQ void m02710_m08 (KERN_ATTR_BASIC ()) m02710m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m02710_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02710_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -931,7 +931,7 @@ KERNEL_FQ void m02710_m16 (KERN_ATTR_BASIC ()) m02710m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m02710_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02710_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -1001,7 +1001,7 @@ KERNEL_FQ void m02710_s04 (KERN_ATTR_BASIC ()) m02710s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m02710_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02710_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -1071,7 +1071,7 @@ KERNEL_FQ void m02710_s08 (KERN_ATTR_BASIC ()) m02710s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m02710_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02710_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m02810_a0-optimized.cl b/OpenCL/m02810_a0-optimized.cl index 38853d0e2..450a53108 100644 --- a/OpenCL/m02810_a0-optimized.cl +++ b/OpenCL/m02810_a0-optimized.cl @@ -28,7 +28,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m02810_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m02810_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -388,15 +388,15 @@ KERNEL_FQ void m02810_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m02810_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m02810_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m02810_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m02810_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m02810_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m02810_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -771,10 +771,10 @@ KERNEL_FQ void m02810_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m02810_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m02810_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m02810_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m02810_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m02810_a0-pure.cl b/OpenCL/m02810_a0-pure.cl index 7beaed972..c90833ed0 100644 --- a/OpenCL/m02810_a0-pure.cl +++ b/OpenCL/m02810_a0-pure.cl @@ -28,7 +28,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m02810_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m02810_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -154,7 +154,7 @@ KERNEL_FQ void m02810_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m02810_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m02810_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m02810_a1-optimized.cl b/OpenCL/m02810_a1-optimized.cl index 5b61d0e25..914302e5f 100644 --- a/OpenCL/m02810_a1-optimized.cl +++ b/OpenCL/m02810_a1-optimized.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m02810_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02810_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -445,15 +445,15 @@ KERNEL_FQ void m02810_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m02810_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02810_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m02810_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02810_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m02810_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02810_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -887,10 +887,10 @@ KERNEL_FQ void m02810_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m02810_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02810_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m02810_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02810_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m02810_a1-pure.cl b/OpenCL/m02810_a1-pure.cl index 5aa69a11c..693b02b41 100644 --- a/OpenCL/m02810_a1-pure.cl +++ b/OpenCL/m02810_a1-pure.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m02810_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02810_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -150,7 +150,7 @@ KERNEL_FQ void m02810_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m02810_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02810_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m02810_a3-optimized.cl b/OpenCL/m02810_a3-optimized.cl index 5f80b2be3..989ae8a69 100644 --- a/OpenCL/m02810_a3-optimized.cl +++ b/OpenCL/m02810_a3-optimized.cl @@ -719,7 +719,7 @@ DECLSPEC void m02810s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m02810_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02810_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -789,7 +789,7 @@ KERNEL_FQ void m02810_m04 (KERN_ATTR_BASIC ()) m02810m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m02810_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02810_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -859,7 +859,7 @@ KERNEL_FQ void m02810_m08 (KERN_ATTR_BASIC ()) m02810m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m02810_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02810_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -929,7 +929,7 @@ KERNEL_FQ void m02810_m16 (KERN_ATTR_BASIC ()) m02810m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m02810_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02810_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -999,7 +999,7 @@ KERNEL_FQ void m02810_s04 (KERN_ATTR_BASIC ()) m02810s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m02810_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02810_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -1069,7 +1069,7 @@ KERNEL_FQ void m02810_s08 (KERN_ATTR_BASIC ()) m02810s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m02810_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m02810_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m02810_a3-pure.cl b/OpenCL/m02810_a3-pure.cl index e970b166e..36fde14ef 100644 --- a/OpenCL/m02810_a3-pure.cl +++ b/OpenCL/m02810_a3-pure.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m02810_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m02810_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -163,7 +163,7 @@ KERNEL_FQ void m02810_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m02810_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m02810_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m03000_a0-pure.cl b/OpenCL/m03000_a0-pure.cl index 58c3e7045..1bf3551ef 100644 --- a/OpenCL/m03000_a0-pure.cl +++ b/OpenCL/m03000_a0-pure.cl @@ -492,7 +492,7 @@ DECLSPEC void transform_netntlmv1_key (const u32 w0, const u32x w1, PRIVATE_AS u | ((k[7] & 0xff) << 24); } -KERNEL_FQ void m03000_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m03000_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -577,7 +577,7 @@ KERNEL_FQ void m03000_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m03000_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m03000_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m03000_a1-pure.cl b/OpenCL/m03000_a1-pure.cl index 35929b974..0b9205628 100644 --- a/OpenCL/m03000_a1-pure.cl +++ b/OpenCL/m03000_a1-pure.cl @@ -490,7 +490,7 @@ DECLSPEC void transform_netntlmv1_key (const u32 w0, const u32x w1, PRIVATE_AS u | ((k[7] & 0xff) << 24); } -KERNEL_FQ void m03000_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03000_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -654,7 +654,7 @@ KERNEL_FQ void m03000_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m03000_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03000_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m03000_a3-pure.cl b/OpenCL/m03000_a3-pure.cl index 15c24a43e..4cbbb0234 100644 --- a/OpenCL/m03000_a3-pure.cl +++ b/OpenCL/m03000_a3-pure.cl @@ -1730,7 +1730,7 @@ DECLSPEC void transpose32c (PRIVATE_AS u32 *data) // transpose bitslice mod : attention race conditions, need different buffers for *in and *out // -KERNEL_FQ void m03000_tm (KERN_ATTR_TM) +KERNEL_FQ KERNEL_FA void m03000_tm (KERN_ATTR_TM) { const u64 gid = get_global_id (0); @@ -1754,7 +1754,7 @@ KERNEL_FQ void m03000_tm (KERN_ATTR_TM) } } -KERNEL_FQ void m03000_mxx (KERN_ATTR_BITSLICE ()) +KERNEL_FQ KERNEL_FA void m03000_mxx (KERN_ATTR_BITSLICE ()) { /** * base @@ -2127,7 +2127,7 @@ KERNEL_FQ void m03000_mxx (KERN_ATTR_BITSLICE ()) } } -KERNEL_FQ void m03000_sxx (KERN_ATTR_BITSLICE ()) +KERNEL_FQ KERNEL_FA void m03000_sxx (KERN_ATTR_BITSLICE ()) { /** * base diff --git a/OpenCL/m03100_a0-optimized.cl b/OpenCL/m03100_a0-optimized.cl index 9bce4928a..a1a131f1c 100644 --- a/OpenCL/m03100_a0-optimized.cl +++ b/OpenCL/m03100_a0-optimized.cl @@ -17,7 +17,7 @@ #include M2S(INCLUDE_PATH/inc_cipher_des.cl) #endif -KERNEL_FQ void m03100_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m03100_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -241,15 +241,15 @@ KERNEL_FQ void m03100_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m03100_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m03100_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m03100_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m03100_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m03100_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m03100_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -485,10 +485,10 @@ KERNEL_FQ void m03100_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m03100_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m03100_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m03100_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m03100_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m03100_a1-optimized.cl b/OpenCL/m03100_a1-optimized.cl index d027d2650..547e36ca2 100644 --- a/OpenCL/m03100_a1-optimized.cl +++ b/OpenCL/m03100_a1-optimized.cl @@ -15,7 +15,7 @@ #include M2S(INCLUDE_PATH/inc_cipher_des.cl) #endif -KERNEL_FQ void m03100_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03100_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -299,15 +299,15 @@ KERNEL_FQ void m03100_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m03100_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03100_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m03100_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03100_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m03100_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03100_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -603,10 +603,10 @@ KERNEL_FQ void m03100_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m03100_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03100_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m03100_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03100_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m03100_a3-optimized.cl b/OpenCL/m03100_a3-optimized.cl index 5c92c78f5..3579a68f4 100644 --- a/OpenCL/m03100_a3-optimized.cl +++ b/OpenCL/m03100_a3-optimized.cl @@ -382,7 +382,7 @@ DECLSPEC void m03100s (SHM_TYPE u32 (*s_SPtrans)[64], SHM_TYPE u32 (*s_skb)[64], } } -KERNEL_FQ void m03100_m04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m03100_m04 (KERN_ATTR_VECTOR ()) { /** * modifier @@ -465,7 +465,7 @@ KERNEL_FQ void m03100_m04 (KERN_ATTR_VECTOR ()) m03100m (s_SPtrans, s_skb, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m03100_m08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m03100_m08 (KERN_ATTR_VECTOR ()) { /** * modifier @@ -548,11 +548,11 @@ KERNEL_FQ void m03100_m08 (KERN_ATTR_VECTOR ()) m03100m (s_SPtrans, s_skb, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m03100_m16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m03100_m16 (KERN_ATTR_VECTOR ()) { } -KERNEL_FQ void m03100_s04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m03100_s04 (KERN_ATTR_VECTOR ()) { /** * modifier @@ -635,7 +635,7 @@ KERNEL_FQ void m03100_s04 (KERN_ATTR_VECTOR ()) m03100s (s_SPtrans, s_skb, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m03100_s08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m03100_s08 (KERN_ATTR_VECTOR ()) { /** * modifier @@ -718,6 +718,6 @@ KERNEL_FQ void m03100_s08 (KERN_ATTR_VECTOR ()) m03100s (s_SPtrans, s_skb, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m03100_s16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m03100_s16 (KERN_ATTR_VECTOR ()) { } diff --git a/OpenCL/m03200-pure.cl b/OpenCL/m03200-pure.cl index 2828908d7..5340015ce 100644 --- a/OpenCL/m03200-pure.cl +++ b/OpenCL/m03200-pure.cl @@ -425,7 +425,7 @@ DECLSPEC void expand_key (PRIVATE_AS u32 *E, PRIVATE_AS u32 *W, const int len) } } -KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m03200_init (KERN_ATTR_TMPS (bcrypt_tmp_t)) +KERNEL_FQ KERNEL_FA void m03200_init (KERN_ATTR_TMPS (bcrypt_tmp_t)) { /** * base @@ -647,7 +647,7 @@ KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m03200_init (KERN_ATTR_TMPS } } -KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m03200_loop (KERN_ATTR_TMPS (bcrypt_tmp_t)) +KERNEL_FQ KERNEL_FA void m03200_loop (KERN_ATTR_TMPS (bcrypt_tmp_t)) { /** * base @@ -850,7 +850,7 @@ KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m03200_loop (KERN_ATTR_TMPS } } -KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m03200_comp (KERN_ATTR_TMPS (bcrypt_tmp_t)) +KERNEL_FQ KERNEL_FA void m03200_comp (KERN_ATTR_TMPS (bcrypt_tmp_t)) { /** * base diff --git a/OpenCL/m03500_a0-optimized.cl b/OpenCL/m03500_a0-optimized.cl index b24cdecb0..21104d773 100644 --- a/OpenCL/m03500_a0-optimized.cl +++ b/OpenCL/m03500_a0-optimized.cl @@ -28,7 +28,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m03500_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m03500_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -410,15 +410,15 @@ KERNEL_FQ void m03500_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m03500_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m03500_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m03500_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m03500_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m03500_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m03500_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -815,10 +815,10 @@ KERNEL_FQ void m03500_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m03500_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m03500_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m03500_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m03500_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m03500_a0-pure.cl b/OpenCL/m03500_a0-pure.cl index bf87330c5..5295405f1 100644 --- a/OpenCL/m03500_a0-pure.cl +++ b/OpenCL/m03500_a0-pure.cl @@ -28,7 +28,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m03500_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m03500_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -161,7 +161,7 @@ KERNEL_FQ void m03500_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m03500_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m03500_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m03500_a1-optimized.cl b/OpenCL/m03500_a1-optimized.cl index 707718fce..bb2c1c46f 100644 --- a/OpenCL/m03500_a1-optimized.cl +++ b/OpenCL/m03500_a1-optimized.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m03500_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03500_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -467,15 +467,15 @@ KERNEL_FQ void m03500_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m03500_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03500_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m03500_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03500_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m03500_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03500_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -931,10 +931,10 @@ KERNEL_FQ void m03500_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m03500_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03500_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m03500_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03500_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m03500_a1-pure.cl b/OpenCL/m03500_a1-pure.cl index 66205828e..ae0cd94b3 100644 --- a/OpenCL/m03500_a1-pure.cl +++ b/OpenCL/m03500_a1-pure.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m03500_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03500_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -157,7 +157,7 @@ KERNEL_FQ void m03500_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m03500_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03500_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m03500_a3-optimized.cl b/OpenCL/m03500_a3-optimized.cl index 1c7972e41..95f7dccac 100644 --- a/OpenCL/m03500_a3-optimized.cl +++ b/OpenCL/m03500_a3-optimized.cl @@ -764,7 +764,7 @@ DECLSPEC void m03500s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m03500_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03500_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -834,7 +834,7 @@ KERNEL_FQ void m03500_m04 (KERN_ATTR_BASIC ()) m03500m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m03500_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03500_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -904,7 +904,7 @@ KERNEL_FQ void m03500_m08 (KERN_ATTR_BASIC ()) m03500m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m03500_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03500_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -974,7 +974,7 @@ KERNEL_FQ void m03500_m16 (KERN_ATTR_BASIC ()) m03500m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m03500_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03500_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -1044,7 +1044,7 @@ KERNEL_FQ void m03500_s04 (KERN_ATTR_BASIC ()) m03500s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m03500_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03500_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -1114,7 +1114,7 @@ KERNEL_FQ void m03500_s08 (KERN_ATTR_BASIC ()) m03500s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m03500_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03500_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m03500_a3-pure.cl b/OpenCL/m03500_a3-pure.cl index c2200b2a1..42aa475a2 100644 --- a/OpenCL/m03500_a3-pure.cl +++ b/OpenCL/m03500_a3-pure.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m03500_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m03500_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -170,7 +170,7 @@ KERNEL_FQ void m03500_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m03500_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m03500_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m03610_a0-optimized.cl b/OpenCL/m03610_a0-optimized.cl index 7829bf6fd..9bb77ad5f 100644 --- a/OpenCL/m03610_a0-optimized.cl +++ b/OpenCL/m03610_a0-optimized.cl @@ -28,7 +28,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m03610_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m03610_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -408,15 +408,15 @@ KERNEL_FQ void m03610_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m03610_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m03610_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m03610_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m03610_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m03610_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m03610_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -811,10 +811,10 @@ KERNEL_FQ void m03610_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m03610_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m03610_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m03610_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m03610_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m03610_a0-pure.cl b/OpenCL/m03610_a0-pure.cl index 8eec44092..de94a30eb 100644 --- a/OpenCL/m03610_a0-pure.cl +++ b/OpenCL/m03610_a0-pure.cl @@ -28,7 +28,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m03610_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m03610_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -161,7 +161,7 @@ KERNEL_FQ void m03610_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m03610_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m03610_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m03610_a1-optimized.cl b/OpenCL/m03610_a1-optimized.cl index b8ed49a7a..3128d1615 100644 --- a/OpenCL/m03610_a1-optimized.cl +++ b/OpenCL/m03610_a1-optimized.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m03610_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03610_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -464,15 +464,15 @@ KERNEL_FQ void m03610_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m03610_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03610_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m03610_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03610_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m03610_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03610_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -925,10 +925,10 @@ KERNEL_FQ void m03610_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m03610_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03610_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m03610_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03610_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m03610_a1-pure.cl b/OpenCL/m03610_a1-pure.cl index 2e412d0dd..72695b1c2 100644 --- a/OpenCL/m03610_a1-pure.cl +++ b/OpenCL/m03610_a1-pure.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m03610_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03610_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -157,7 +157,7 @@ KERNEL_FQ void m03610_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m03610_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03610_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m03610_a3-optimized.cl b/OpenCL/m03610_a3-optimized.cl index 55a6d7bf5..6bd2c0771 100644 --- a/OpenCL/m03610_a3-optimized.cl +++ b/OpenCL/m03610_a3-optimized.cl @@ -758,7 +758,7 @@ DECLSPEC void m03610s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m03610_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03610_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -828,7 +828,7 @@ KERNEL_FQ void m03610_m04 (KERN_ATTR_BASIC ()) m03610m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m03610_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03610_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -898,7 +898,7 @@ KERNEL_FQ void m03610_m08 (KERN_ATTR_BASIC ()) m03610m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m03610_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03610_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -968,7 +968,7 @@ KERNEL_FQ void m03610_m16 (KERN_ATTR_BASIC ()) m03610m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m03610_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03610_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -1038,7 +1038,7 @@ KERNEL_FQ void m03610_s04 (KERN_ATTR_BASIC ()) m03610s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m03610_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03610_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -1108,7 +1108,7 @@ KERNEL_FQ void m03610_s08 (KERN_ATTR_BASIC ()) m03610s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m03610_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03610_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m03610_a3-pure.cl b/OpenCL/m03610_a3-pure.cl index 1e622a413..8b628c92e 100644 --- a/OpenCL/m03610_a3-pure.cl +++ b/OpenCL/m03610_a3-pure.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m03610_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m03610_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -170,7 +170,7 @@ KERNEL_FQ void m03610_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m03610_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m03610_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m03710_a0-optimized.cl b/OpenCL/m03710_a0-optimized.cl index 54498ca59..41087021d 100644 --- a/OpenCL/m03710_a0-optimized.cl +++ b/OpenCL/m03710_a0-optimized.cl @@ -28,7 +28,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m03710_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m03710_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -335,15 +335,15 @@ KERNEL_FQ void m03710_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m03710_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m03710_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m03710_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m03710_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m03710_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m03710_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -665,10 +665,10 @@ KERNEL_FQ void m03710_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m03710_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m03710_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m03710_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m03710_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m03710_a0-pure.cl b/OpenCL/m03710_a0-pure.cl index 0f61a73bf..835ed51e8 100644 --- a/OpenCL/m03710_a0-pure.cl +++ b/OpenCL/m03710_a0-pure.cl @@ -28,7 +28,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m03710_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m03710_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -144,7 +144,7 @@ KERNEL_FQ void m03710_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m03710_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m03710_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m03710_a1-optimized.cl b/OpenCL/m03710_a1-optimized.cl index c4254ae8d..e127548f4 100644 --- a/OpenCL/m03710_a1-optimized.cl +++ b/OpenCL/m03710_a1-optimized.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m03710_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03710_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -392,15 +392,15 @@ KERNEL_FQ void m03710_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m03710_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03710_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m03710_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03710_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m03710_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03710_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -781,10 +781,10 @@ KERNEL_FQ void m03710_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m03710_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03710_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m03710_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03710_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m03710_a1-pure.cl b/OpenCL/m03710_a1-pure.cl index af7e112b8..03771e070 100644 --- a/OpenCL/m03710_a1-pure.cl +++ b/OpenCL/m03710_a1-pure.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m03710_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03710_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -140,7 +140,7 @@ KERNEL_FQ void m03710_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m03710_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03710_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m03710_a3-optimized.cl b/OpenCL/m03710_a3-optimized.cl index c2d71c934..6bf63fd0e 100644 --- a/OpenCL/m03710_a3-optimized.cl +++ b/OpenCL/m03710_a3-optimized.cl @@ -613,7 +613,7 @@ DECLSPEC void m03710s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m03710_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03710_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -683,7 +683,7 @@ KERNEL_FQ void m03710_m04 (KERN_ATTR_BASIC ()) m03710m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m03710_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03710_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -753,7 +753,7 @@ KERNEL_FQ void m03710_m08 (KERN_ATTR_BASIC ()) m03710m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m03710_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03710_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -823,7 +823,7 @@ KERNEL_FQ void m03710_m16 (KERN_ATTR_BASIC ()) m03710m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m03710_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03710_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -893,7 +893,7 @@ KERNEL_FQ void m03710_s04 (KERN_ATTR_BASIC ()) m03710s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m03710_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03710_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -963,7 +963,7 @@ KERNEL_FQ void m03710_s08 (KERN_ATTR_BASIC ()) m03710s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m03710_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03710_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m03710_a3-pure.cl b/OpenCL/m03710_a3-pure.cl index 553672fc5..1c475a0a7 100644 --- a/OpenCL/m03710_a3-pure.cl +++ b/OpenCL/m03710_a3-pure.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m03710_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m03710_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -153,7 +153,7 @@ KERNEL_FQ void m03710_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m03710_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m03710_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m03730_a0-pure.cl b/OpenCL/m03730_a0-pure.cl index d3713e572..9083bf05d 100644 --- a/OpenCL/m03730_a0-pure.cl +++ b/OpenCL/m03730_a0-pure.cl @@ -38,7 +38,7 @@ typedef struct md5_double_salt } md5_double_salt_t; -KERNEL_FQ void m03730_mxx (KERN_ATTR_ESALT (md5_double_salt_t)) +KERNEL_FQ KERNEL_FA void m03730_mxx (KERN_ATTR_ESALT (md5_double_salt_t)) { /** * modifier @@ -156,7 +156,7 @@ KERNEL_FQ void m03730_mxx (KERN_ATTR_ESALT (md5_double_salt_t)) } } -KERNEL_FQ void m03730_sxx (KERN_ATTR_ESALT (md5_double_salt_t)) +KERNEL_FQ KERNEL_FA void m03730_sxx (KERN_ATTR_ESALT (md5_double_salt_t)) { /** * modifier diff --git a/OpenCL/m03730_a1-pure.cl b/OpenCL/m03730_a1-pure.cl index 779f14fa6..2ad5a9e1d 100644 --- a/OpenCL/m03730_a1-pure.cl +++ b/OpenCL/m03730_a1-pure.cl @@ -36,7 +36,7 @@ typedef struct md5_double_salt } md5_double_salt_t; -KERNEL_FQ void m03730_mxx (KERN_ATTR_ESALT (md5_double_salt_t)) +KERNEL_FQ KERNEL_FA void m03730_mxx (KERN_ATTR_ESALT (md5_double_salt_t)) { /** * modifier @@ -152,7 +152,7 @@ KERNEL_FQ void m03730_mxx (KERN_ATTR_ESALT (md5_double_salt_t)) } } -KERNEL_FQ void m03730_sxx (KERN_ATTR_ESALT (md5_double_salt_t)) +KERNEL_FQ KERNEL_FA void m03730_sxx (KERN_ATTR_ESALT (md5_double_salt_t)) { /** * modifier diff --git a/OpenCL/m03730_a3-pure.cl b/OpenCL/m03730_a3-pure.cl index 903512e24..ae6b84c9a 100644 --- a/OpenCL/m03730_a3-pure.cl +++ b/OpenCL/m03730_a3-pure.cl @@ -36,7 +36,7 @@ typedef struct md5_double_salt } md5_double_salt_t; -KERNEL_FQ void m03730_mxx (KERN_ATTR_VECTOR_ESALT (md5_double_salt_t)) +KERNEL_FQ KERNEL_FA void m03730_mxx (KERN_ATTR_VECTOR_ESALT (md5_double_salt_t)) { /** * modifier @@ -176,7 +176,7 @@ KERNEL_FQ void m03730_mxx (KERN_ATTR_VECTOR_ESALT (md5_double_salt_t)) } } -KERNEL_FQ void m03730_sxx (KERN_ATTR_VECTOR_ESALT (md5_double_salt_t)) +KERNEL_FQ KERNEL_FA void m03730_sxx (KERN_ATTR_VECTOR_ESALT (md5_double_salt_t)) { /** * modifier diff --git a/OpenCL/m03800_a0-optimized.cl b/OpenCL/m03800_a0-optimized.cl index 07a959c00..145e52c68 100644 --- a/OpenCL/m03800_a0-optimized.cl +++ b/OpenCL/m03800_a0-optimized.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m03800_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m03800_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -247,15 +247,15 @@ KERNEL_FQ void m03800_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m03800_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m03800_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m03800_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m03800_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m03800_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m03800_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -501,10 +501,10 @@ KERNEL_FQ void m03800_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m03800_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m03800_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m03800_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m03800_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m03800_a0-pure.cl b/OpenCL/m03800_a0-pure.cl index 191735f2d..7341cd5a7 100644 --- a/OpenCL/m03800_a0-pure.cl +++ b/OpenCL/m03800_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m03800_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m03800_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -75,7 +75,7 @@ KERNEL_FQ void m03800_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m03800_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m03800_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m03800_a1-optimized.cl b/OpenCL/m03800_a1-optimized.cl index 8b440155a..70b495e88 100644 --- a/OpenCL/m03800_a1-optimized.cl +++ b/OpenCL/m03800_a1-optimized.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m03800_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03800_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -305,15 +305,15 @@ KERNEL_FQ void m03800_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m03800_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03800_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m03800_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03800_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m03800_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03800_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -619,10 +619,10 @@ KERNEL_FQ void m03800_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m03800_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03800_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m03800_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03800_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m03800_a1-pure.cl b/OpenCL/m03800_a1-pure.cl index 5ea3d9b57..1acee959f 100644 --- a/OpenCL/m03800_a1-pure.cl +++ b/OpenCL/m03800_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m03800_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03800_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -69,7 +69,7 @@ KERNEL_FQ void m03800_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m03800_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03800_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m03800_a3-optimized.cl b/OpenCL/m03800_a3-optimized.cl index 0b421306f..9a7265de8 100644 --- a/OpenCL/m03800_a3-optimized.cl +++ b/OpenCL/m03800_a3-optimized.cl @@ -471,7 +471,7 @@ DECLSPEC void m03800s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m03800_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03800_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -524,7 +524,7 @@ KERNEL_FQ void m03800_m04 (KERN_ATTR_BASIC ()) m03800m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m03800_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03800_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -577,7 +577,7 @@ KERNEL_FQ void m03800_m08 (KERN_ATTR_BASIC ()) m03800m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m03800_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03800_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -630,7 +630,7 @@ KERNEL_FQ void m03800_m16 (KERN_ATTR_BASIC ()) m03800m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m03800_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03800_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -683,7 +683,7 @@ KERNEL_FQ void m03800_s04 (KERN_ATTR_BASIC ()) m03800s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m03800_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03800_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -736,7 +736,7 @@ KERNEL_FQ void m03800_s08 (KERN_ATTR_BASIC ()) m03800s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m03800_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03800_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m03800_a3-pure.cl b/OpenCL/m03800_a3-pure.cl index ca1c599e3..4dd5652ff 100644 --- a/OpenCL/m03800_a3-pure.cl +++ b/OpenCL/m03800_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m03800_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m03800_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -86,7 +86,7 @@ KERNEL_FQ void m03800_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m03800_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m03800_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m03910_a0-optimized.cl b/OpenCL/m03910_a0-optimized.cl index e8a305f72..a13a5f5ea 100644 --- a/OpenCL/m03910_a0-optimized.cl +++ b/OpenCL/m03910_a0-optimized.cl @@ -28,7 +28,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m03910_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m03910_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -388,15 +388,15 @@ KERNEL_FQ void m03910_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m03910_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m03910_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m03910_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m03910_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m03910_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m03910_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -771,10 +771,10 @@ KERNEL_FQ void m03910_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m03910_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m03910_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m03910_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m03910_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m03910_a0-pure.cl b/OpenCL/m03910_a0-pure.cl index e178e8bf8..367319814 100644 --- a/OpenCL/m03910_a0-pure.cl +++ b/OpenCL/m03910_a0-pure.cl @@ -28,7 +28,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m03910_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m03910_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -154,7 +154,7 @@ KERNEL_FQ void m03910_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m03910_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m03910_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m03910_a1-optimized.cl b/OpenCL/m03910_a1-optimized.cl index c759bde95..6a40fbd76 100644 --- a/OpenCL/m03910_a1-optimized.cl +++ b/OpenCL/m03910_a1-optimized.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m03910_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03910_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -445,15 +445,15 @@ KERNEL_FQ void m03910_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m03910_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03910_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m03910_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03910_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m03910_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03910_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -887,10 +887,10 @@ KERNEL_FQ void m03910_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m03910_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03910_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m03910_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03910_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m03910_a1-pure.cl b/OpenCL/m03910_a1-pure.cl index b9421224c..27748d64c 100644 --- a/OpenCL/m03910_a1-pure.cl +++ b/OpenCL/m03910_a1-pure.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m03910_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03910_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -150,7 +150,7 @@ KERNEL_FQ void m03910_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m03910_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03910_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m03910_a3-optimized.cl b/OpenCL/m03910_a3-optimized.cl index 9137008a4..1b82b961a 100644 --- a/OpenCL/m03910_a3-optimized.cl +++ b/OpenCL/m03910_a3-optimized.cl @@ -719,7 +719,7 @@ DECLSPEC void m03910s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m03910_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03910_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -789,7 +789,7 @@ KERNEL_FQ void m03910_m04 (KERN_ATTR_BASIC ()) m03910m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m03910_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03910_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -859,7 +859,7 @@ KERNEL_FQ void m03910_m08 (KERN_ATTR_BASIC ()) m03910m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m03910_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03910_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -929,7 +929,7 @@ KERNEL_FQ void m03910_m16 (KERN_ATTR_BASIC ()) m03910m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m03910_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03910_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -999,7 +999,7 @@ KERNEL_FQ void m03910_s04 (KERN_ATTR_BASIC ()) m03910s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m03910_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03910_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -1069,7 +1069,7 @@ KERNEL_FQ void m03910_s08 (KERN_ATTR_BASIC ()) m03910s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m03910_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m03910_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m03910_a3-pure.cl b/OpenCL/m03910_a3-pure.cl index f9b32de2a..318e86ce0 100644 --- a/OpenCL/m03910_a3-pure.cl +++ b/OpenCL/m03910_a3-pure.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m03910_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m03910_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -163,7 +163,7 @@ KERNEL_FQ void m03910_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m03910_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m03910_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m04010_a0-optimized.cl b/OpenCL/m04010_a0-optimized.cl index 596fa9a0c..981b4b136 100644 --- a/OpenCL/m04010_a0-optimized.cl +++ b/OpenCL/m04010_a0-optimized.cl @@ -28,7 +28,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m04010_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04010_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -361,15 +361,15 @@ KERNEL_FQ void m04010_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m04010_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04010_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m04010_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04010_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m04010_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04010_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -717,10 +717,10 @@ KERNEL_FQ void m04010_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m04010_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04010_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m04010_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04010_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m04010_a0-pure.cl b/OpenCL/m04010_a0-pure.cl index 6485d70dd..4ec77ff15 100644 --- a/OpenCL/m04010_a0-pure.cl +++ b/OpenCL/m04010_a0-pure.cl @@ -28,7 +28,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m04010_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04010_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -135,7 +135,7 @@ KERNEL_FQ void m04010_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m04010_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04010_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m04010_a1-optimized.cl b/OpenCL/m04010_a1-optimized.cl index d50efb929..20cd96844 100644 --- a/OpenCL/m04010_a1-optimized.cl +++ b/OpenCL/m04010_a1-optimized.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m04010_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04010_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -417,15 +417,15 @@ KERNEL_FQ void m04010_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m04010_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04010_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m04010_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04010_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m04010_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04010_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -831,10 +831,10 @@ KERNEL_FQ void m04010_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m04010_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04010_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m04010_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04010_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m04010_a1-pure.cl b/OpenCL/m04010_a1-pure.cl index 084e85ef0..1e717bbf6 100644 --- a/OpenCL/m04010_a1-pure.cl +++ b/OpenCL/m04010_a1-pure.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m04010_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04010_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -131,7 +131,7 @@ KERNEL_FQ void m04010_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m04010_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04010_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m04010_a3-optimized.cl b/OpenCL/m04010_a3-optimized.cl index 6a52abb00..8442089be 100644 --- a/OpenCL/m04010_a3-optimized.cl +++ b/OpenCL/m04010_a3-optimized.cl @@ -653,7 +653,7 @@ DECLSPEC void m04010s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m04010_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04010_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -723,7 +723,7 @@ KERNEL_FQ void m04010_m04 (KERN_ATTR_BASIC ()) m04010m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m04010_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04010_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -793,7 +793,7 @@ KERNEL_FQ void m04010_m08 (KERN_ATTR_BASIC ()) m04010m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m04010_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04010_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -863,7 +863,7 @@ KERNEL_FQ void m04010_m16 (KERN_ATTR_BASIC ()) m04010m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m04010_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04010_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -933,7 +933,7 @@ KERNEL_FQ void m04010_s04 (KERN_ATTR_BASIC ()) m04010s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m04010_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04010_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -1003,7 +1003,7 @@ KERNEL_FQ void m04010_s08 (KERN_ATTR_BASIC ()) m04010s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m04010_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04010_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m04010_a3-pure.cl b/OpenCL/m04010_a3-pure.cl index 4bff07477..0409b60cb 100644 --- a/OpenCL/m04010_a3-pure.cl +++ b/OpenCL/m04010_a3-pure.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m04010_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m04010_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -148,7 +148,7 @@ KERNEL_FQ void m04010_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m04010_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m04010_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m04110_a0-optimized.cl b/OpenCL/m04110_a0-optimized.cl index c2e04ac36..68f99f996 100644 --- a/OpenCL/m04110_a0-optimized.cl +++ b/OpenCL/m04110_a0-optimized.cl @@ -28,7 +28,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m04110_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04110_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -406,15 +406,15 @@ KERNEL_FQ void m04110_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m04110_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04110_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m04110_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04110_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m04110_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04110_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -807,10 +807,10 @@ KERNEL_FQ void m04110_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m04110_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04110_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m04110_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04110_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m04110_a0-pure.cl b/OpenCL/m04110_a0-pure.cl index a4fd4f00c..9a9de7f0e 100644 --- a/OpenCL/m04110_a0-pure.cl +++ b/OpenCL/m04110_a0-pure.cl @@ -28,7 +28,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m04110_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04110_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -148,7 +148,7 @@ KERNEL_FQ void m04110_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m04110_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04110_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m04110_a1-optimized.cl b/OpenCL/m04110_a1-optimized.cl index cba0aac04..26457d24c 100644 --- a/OpenCL/m04110_a1-optimized.cl +++ b/OpenCL/m04110_a1-optimized.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m04110_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04110_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -464,15 +464,15 @@ KERNEL_FQ void m04110_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m04110_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04110_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m04110_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04110_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m04110_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04110_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -925,10 +925,10 @@ KERNEL_FQ void m04110_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m04110_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04110_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m04110_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04110_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m04110_a1-pure.cl b/OpenCL/m04110_a1-pure.cl index a1cab9e20..8d34d8305 100644 --- a/OpenCL/m04110_a1-pure.cl +++ b/OpenCL/m04110_a1-pure.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m04110_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04110_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -144,7 +144,7 @@ KERNEL_FQ void m04110_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m04110_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04110_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m04110_a3-optimized.cl b/OpenCL/m04110_a3-optimized.cl index c01dfa5ae..f98871708 100644 --- a/OpenCL/m04110_a3-optimized.cl +++ b/OpenCL/m04110_a3-optimized.cl @@ -709,7 +709,7 @@ DECLSPEC void m04110s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m04110_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04110_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -779,7 +779,7 @@ KERNEL_FQ void m04110_m04 (KERN_ATTR_BASIC ()) m04110m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m04110_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04110_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -849,7 +849,7 @@ KERNEL_FQ void m04110_m08 (KERN_ATTR_BASIC ()) m04110m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m04110_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04110_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -919,7 +919,7 @@ KERNEL_FQ void m04110_m16 (KERN_ATTR_BASIC ()) m04110m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m04110_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04110_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -989,7 +989,7 @@ KERNEL_FQ void m04110_s04 (KERN_ATTR_BASIC ()) m04110s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m04110_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04110_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -1059,7 +1059,7 @@ KERNEL_FQ void m04110_s08 (KERN_ATTR_BASIC ()) m04110s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m04110_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04110_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m04110_a3-pure.cl b/OpenCL/m04110_a3-pure.cl index b30502e58..c1e02f9d7 100644 --- a/OpenCL/m04110_a3-pure.cl +++ b/OpenCL/m04110_a3-pure.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m04110_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m04110_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -159,7 +159,7 @@ KERNEL_FQ void m04110_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m04110_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m04110_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m04310_a0-optimized.cl b/OpenCL/m04310_a0-optimized.cl index 3dca3c0a4..4b0e75c7a 100644 --- a/OpenCL/m04310_a0-optimized.cl +++ b/OpenCL/m04310_a0-optimized.cl @@ -28,7 +28,7 @@ #define uint_to_hex_upper8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m04310_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04310_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -304,15 +304,15 @@ KERNEL_FQ void m04310_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m04310_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04310_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m04310_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04310_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m04310_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04310_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -603,10 +603,10 @@ KERNEL_FQ void m04310_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m04310_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04310_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m04310_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04310_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m04310_a0-pure.cl b/OpenCL/m04310_a0-pure.cl index cd6abb254..ae988e45d 100644 --- a/OpenCL/m04310_a0-pure.cl +++ b/OpenCL/m04310_a0-pure.cl @@ -28,7 +28,7 @@ #define uint_to_hex_upper8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m04310_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04310_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -131,7 +131,7 @@ KERNEL_FQ void m04310_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m04310_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04310_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m04310_a1-optimized.cl b/OpenCL/m04310_a1-optimized.cl index b6128578c..779c1a902 100644 --- a/OpenCL/m04310_a1-optimized.cl +++ b/OpenCL/m04310_a1-optimized.cl @@ -26,7 +26,7 @@ #define uint_to_hex_upper8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m04310_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04310_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -361,15 +361,15 @@ KERNEL_FQ void m04310_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m04310_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04310_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m04310_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04310_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m04310_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04310_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -719,10 +719,10 @@ KERNEL_FQ void m04310_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m04310_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04310_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m04310_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04310_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m04310_a1-pure.cl b/OpenCL/m04310_a1-pure.cl index 7087e597d..34810c5b9 100644 --- a/OpenCL/m04310_a1-pure.cl +++ b/OpenCL/m04310_a1-pure.cl @@ -26,7 +26,7 @@ #define uint_to_hex_upper8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m04310_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04310_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -127,7 +127,7 @@ KERNEL_FQ void m04310_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m04310_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04310_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m04310_a3-optimized.cl b/OpenCL/m04310_a3-optimized.cl index 0e2cb3e45..21ca961fe 100644 --- a/OpenCL/m04310_a3-optimized.cl +++ b/OpenCL/m04310_a3-optimized.cl @@ -552,7 +552,7 @@ DECLSPEC void m04310s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m04310_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04310_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -622,7 +622,7 @@ KERNEL_FQ void m04310_m04 (KERN_ATTR_BASIC ()) m04310m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m04310_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04310_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -692,7 +692,7 @@ KERNEL_FQ void m04310_m08 (KERN_ATTR_BASIC ()) m04310m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m04310_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04310_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -762,7 +762,7 @@ KERNEL_FQ void m04310_m16 (KERN_ATTR_BASIC ()) m04310m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m04310_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04310_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -832,7 +832,7 @@ KERNEL_FQ void m04310_s04 (KERN_ATTR_BASIC ()) m04310s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m04310_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04310_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -902,7 +902,7 @@ KERNEL_FQ void m04310_s08 (KERN_ATTR_BASIC ()) m04310s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m04310_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04310_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m04310_a3-pure.cl b/OpenCL/m04310_a3-pure.cl index 2aa0b01b2..63994c713 100644 --- a/OpenCL/m04310_a3-pure.cl +++ b/OpenCL/m04310_a3-pure.cl @@ -26,7 +26,7 @@ #define uint_to_hex_upper8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m04310_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m04310_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -140,7 +140,7 @@ KERNEL_FQ void m04310_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m04310_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m04310_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m04400_a0-optimized.cl b/OpenCL/m04400_a0-optimized.cl index 22a622863..891bd8da5 100644 --- a/OpenCL/m04400_a0-optimized.cl +++ b/OpenCL/m04400_a0-optimized.cl @@ -29,7 +29,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m04400_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04400_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -331,15 +331,15 @@ KERNEL_FQ void m04400_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m04400_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04400_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m04400_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04400_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m04400_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04400_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -656,10 +656,10 @@ KERNEL_FQ void m04400_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m04400_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04400_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m04400_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04400_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m04400_a0-pure.cl b/OpenCL/m04400_a0-pure.cl index 378a66ed0..87cd1f4d7 100644 --- a/OpenCL/m04400_a0-pure.cl +++ b/OpenCL/m04400_a0-pure.cl @@ -29,7 +29,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m04400_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04400_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -126,7 +126,7 @@ KERNEL_FQ void m04400_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m04400_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04400_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m04400_a1-optimized.cl b/OpenCL/m04400_a1-optimized.cl index 152fd04e7..314e9cbed 100644 --- a/OpenCL/m04400_a1-optimized.cl +++ b/OpenCL/m04400_a1-optimized.cl @@ -27,7 +27,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m04400_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04400_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -387,15 +387,15 @@ KERNEL_FQ void m04400_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m04400_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04400_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m04400_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04400_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m04400_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04400_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -770,10 +770,10 @@ KERNEL_FQ void m04400_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m04400_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04400_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m04400_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04400_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m04400_a1-pure.cl b/OpenCL/m04400_a1-pure.cl index 8fc032c46..208523dae 100644 --- a/OpenCL/m04400_a1-pure.cl +++ b/OpenCL/m04400_a1-pure.cl @@ -27,7 +27,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m04400_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04400_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -122,7 +122,7 @@ KERNEL_FQ void m04400_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m04400_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04400_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m04400_a3-optimized.cl b/OpenCL/m04400_a3-optimized.cl index e53ae6b16..3a03611e1 100644 --- a/OpenCL/m04400_a3-optimized.cl +++ b/OpenCL/m04400_a3-optimized.cl @@ -558,7 +558,7 @@ DECLSPEC void m04400s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m04400_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04400_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -628,7 +628,7 @@ KERNEL_FQ void m04400_m04 (KERN_ATTR_BASIC ()) m04400m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m04400_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04400_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -698,7 +698,7 @@ KERNEL_FQ void m04400_m08 (KERN_ATTR_BASIC ()) m04400m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m04400_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04400_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -768,7 +768,7 @@ KERNEL_FQ void m04400_m16 (KERN_ATTR_BASIC ()) m04400m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m04400_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04400_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -838,7 +838,7 @@ KERNEL_FQ void m04400_s04 (KERN_ATTR_BASIC ()) m04400s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m04400_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04400_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -908,7 +908,7 @@ KERNEL_FQ void m04400_s08 (KERN_ATTR_BASIC ()) m04400s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m04400_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04400_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m04400_a3-pure.cl b/OpenCL/m04400_a3-pure.cl index c463e627c..71a917453 100644 --- a/OpenCL/m04400_a3-pure.cl +++ b/OpenCL/m04400_a3-pure.cl @@ -27,7 +27,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m04400_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m04400_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -135,7 +135,7 @@ KERNEL_FQ void m04400_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m04400_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m04400_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m04410_a0-optimized.cl b/OpenCL/m04410_a0-optimized.cl index 191e1eddf..32fbfcf5a 100644 --- a/OpenCL/m04410_a0-optimized.cl +++ b/OpenCL/m04410_a0-optimized.cl @@ -29,7 +29,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m04410_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04410_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -650,15 +650,15 @@ KERNEL_FQ void m04410_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m04410_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04410_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m04410_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04410_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m04410_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04410_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -1294,10 +1294,10 @@ KERNEL_FQ void m04410_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m04410_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04410_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m04410_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04410_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m04410_a0-pure.cl b/OpenCL/m04410_a0-pure.cl index 52c9d8578..b6e2f26f0 100644 --- a/OpenCL/m04410_a0-pure.cl +++ b/OpenCL/m04410_a0-pure.cl @@ -29,7 +29,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m04410_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04410_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -148,7 +148,7 @@ KERNEL_FQ void m04410_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m04410_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04410_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m04410_a1-optimized.cl b/OpenCL/m04410_a1-optimized.cl index 813ad365d..bde1a9ff0 100644 --- a/OpenCL/m04410_a1-optimized.cl +++ b/OpenCL/m04410_a1-optimized.cl @@ -27,7 +27,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m04410_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04410_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -706,15 +706,15 @@ KERNEL_FQ void m04410_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m04410_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04410_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m04410_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04410_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m04410_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04410_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -1408,10 +1408,10 @@ KERNEL_FQ void m04410_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m04410_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04410_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m04410_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04410_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m04410_a1-pure.cl b/OpenCL/m04410_a1-pure.cl index 4c08d8eb5..2a9f11531 100644 --- a/OpenCL/m04410_a1-pure.cl +++ b/OpenCL/m04410_a1-pure.cl @@ -27,7 +27,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m04410_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04410_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -144,7 +144,7 @@ KERNEL_FQ void m04410_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m04410_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04410_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m04410_a3-optimized.cl b/OpenCL/m04410_a3-optimized.cl index 584999c7e..1a217562e 100644 --- a/OpenCL/m04410_a3-optimized.cl +++ b/OpenCL/m04410_a3-optimized.cl @@ -1196,7 +1196,7 @@ DECLSPEC void m04410s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m04410_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04410_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -1266,7 +1266,7 @@ KERNEL_FQ void m04410_m04 (KERN_ATTR_BASIC ()) m04410m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m04410_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04410_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -1336,7 +1336,7 @@ KERNEL_FQ void m04410_m08 (KERN_ATTR_BASIC ()) m04410m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m04410_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04410_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -1406,7 +1406,7 @@ KERNEL_FQ void m04410_m16 (KERN_ATTR_BASIC ()) m04410m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m04410_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04410_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -1476,7 +1476,7 @@ KERNEL_FQ void m04410_s04 (KERN_ATTR_BASIC ()) m04410s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m04410_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04410_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -1546,7 +1546,7 @@ KERNEL_FQ void m04410_s08 (KERN_ATTR_BASIC ()) m04410s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m04410_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04410_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m04410_a3-pure.cl b/OpenCL/m04410_a3-pure.cl index 9e2fa1f80..cfd402b9c 100644 --- a/OpenCL/m04410_a3-pure.cl +++ b/OpenCL/m04410_a3-pure.cl @@ -27,7 +27,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m04410_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m04410_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -157,7 +157,7 @@ KERNEL_FQ void m04410_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m04410_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m04410_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m04420_a0-optimized.cl b/OpenCL/m04420_a0-optimized.cl index e071beef3..d1c49c7a5 100644 --- a/OpenCL/m04420_a0-optimized.cl +++ b/OpenCL/m04420_a0-optimized.cl @@ -29,7 +29,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m04420_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04420_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -405,15 +405,15 @@ KERNEL_FQ void m04420_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m04420_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04420_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m04420_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04420_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m04420_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04420_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -804,10 +804,10 @@ KERNEL_FQ void m04420_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m04420_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04420_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m04420_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04420_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m04420_a0-pure.cl b/OpenCL/m04420_a0-pure.cl index a0114a72c..f9a5f9daf 100644 --- a/OpenCL/m04420_a0-pure.cl +++ b/OpenCL/m04420_a0-pure.cl @@ -29,7 +29,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m04420_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04420_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -148,7 +148,7 @@ KERNEL_FQ void m04420_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m04420_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04420_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m04420_a1-optimized.cl b/OpenCL/m04420_a1-optimized.cl index 2f688826e..7a17a98e9 100644 --- a/OpenCL/m04420_a1-optimized.cl +++ b/OpenCL/m04420_a1-optimized.cl @@ -27,7 +27,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m04420_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04420_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -463,15 +463,15 @@ KERNEL_FQ void m04420_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m04420_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04420_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m04420_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04420_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m04420_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04420_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -922,10 +922,10 @@ KERNEL_FQ void m04420_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m04420_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04420_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m04420_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04420_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m04420_a1-pure.cl b/OpenCL/m04420_a1-pure.cl index 20b17296c..b8a4fbdce 100644 --- a/OpenCL/m04420_a1-pure.cl +++ b/OpenCL/m04420_a1-pure.cl @@ -27,7 +27,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m04420_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04420_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -144,7 +144,7 @@ KERNEL_FQ void m04420_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m04420_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04420_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m04420_a3-optimized.cl b/OpenCL/m04420_a3-optimized.cl index baef3c6a7..df794dccd 100644 --- a/OpenCL/m04420_a3-optimized.cl +++ b/OpenCL/m04420_a3-optimized.cl @@ -706,7 +706,7 @@ DECLSPEC void m04420s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m04420_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04420_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -776,7 +776,7 @@ KERNEL_FQ void m04420_m04 (KERN_ATTR_BASIC ()) m04420m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m04420_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04420_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -846,7 +846,7 @@ KERNEL_FQ void m04420_m08 (KERN_ATTR_BASIC ()) m04420m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m04420_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04420_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -916,7 +916,7 @@ KERNEL_FQ void m04420_m16 (KERN_ATTR_BASIC ()) m04420m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m04420_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04420_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -986,7 +986,7 @@ KERNEL_FQ void m04420_s04 (KERN_ATTR_BASIC ()) m04420s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m04420_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04420_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -1056,7 +1056,7 @@ KERNEL_FQ void m04420_s08 (KERN_ATTR_BASIC ()) m04420s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m04420_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04420_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m04420_a3-pure.cl b/OpenCL/m04420_a3-pure.cl index 37727503e..9e4648f6c 100644 --- a/OpenCL/m04420_a3-pure.cl +++ b/OpenCL/m04420_a3-pure.cl @@ -27,7 +27,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m04420_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m04420_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -157,7 +157,7 @@ KERNEL_FQ void m04420_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m04420_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m04420_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m04430_a0-optimized.cl b/OpenCL/m04430_a0-optimized.cl index 4f809d3ff..b82cc7b73 100644 --- a/OpenCL/m04430_a0-optimized.cl +++ b/OpenCL/m04430_a0-optimized.cl @@ -29,7 +29,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m04430_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04430_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -385,15 +385,15 @@ KERNEL_FQ void m04430_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m04430_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04430_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m04430_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04430_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m04430_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04430_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -764,10 +764,10 @@ KERNEL_FQ void m04430_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m04430_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04430_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m04430_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04430_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m04430_a0-pure.cl b/OpenCL/m04430_a0-pure.cl index 60cfea81b..b54521b65 100644 --- a/OpenCL/m04430_a0-pure.cl +++ b/OpenCL/m04430_a0-pure.cl @@ -29,7 +29,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m04430_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04430_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -141,7 +141,7 @@ KERNEL_FQ void m04430_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m04430_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04430_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m04430_a1-optimized.cl b/OpenCL/m04430_a1-optimized.cl index 43b94cf73..aa6453ace 100644 --- a/OpenCL/m04430_a1-optimized.cl +++ b/OpenCL/m04430_a1-optimized.cl @@ -27,7 +27,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m04430_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04430_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -441,15 +441,15 @@ KERNEL_FQ void m04430_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m04430_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04430_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m04430_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04430_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m04430_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04430_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -877,10 +877,10 @@ KERNEL_FQ void m04430_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m04430_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04430_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m04430_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04430_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m04430_a1-pure.cl b/OpenCL/m04430_a1-pure.cl index 3a801e1a2..b990d90fb 100644 --- a/OpenCL/m04430_a1-pure.cl +++ b/OpenCL/m04430_a1-pure.cl @@ -27,7 +27,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m04430_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04430_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -135,7 +135,7 @@ KERNEL_FQ void m04430_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m04430_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04430_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m04430_a3-optimized.cl b/OpenCL/m04430_a3-optimized.cl index ccca5001c..0914baccc 100644 --- a/OpenCL/m04430_a3-optimized.cl +++ b/OpenCL/m04430_a3-optimized.cl @@ -702,7 +702,7 @@ DECLSPEC void m04430s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m04430_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04430_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -772,7 +772,7 @@ KERNEL_FQ void m04430_m04 (KERN_ATTR_BASIC ()) m04430m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m04430_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04430_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -842,7 +842,7 @@ KERNEL_FQ void m04430_m08 (KERN_ATTR_BASIC ()) m04430m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m04430_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04430_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -912,7 +912,7 @@ KERNEL_FQ void m04430_m16 (KERN_ATTR_BASIC ()) m04430m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m04430_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04430_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -982,7 +982,7 @@ KERNEL_FQ void m04430_s04 (KERN_ATTR_BASIC ()) m04430s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m04430_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04430_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -1052,7 +1052,7 @@ KERNEL_FQ void m04430_s08 (KERN_ATTR_BASIC ()) m04430s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m04430_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04430_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m04430_a3-pure.cl b/OpenCL/m04430_a3-pure.cl index 54142aeb3..abeaa803c 100644 --- a/OpenCL/m04430_a3-pure.cl +++ b/OpenCL/m04430_a3-pure.cl @@ -27,7 +27,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m04430_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m04430_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -152,7 +152,7 @@ KERNEL_FQ void m04430_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m04430_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m04430_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m04500_a0-optimized.cl b/OpenCL/m04500_a0-optimized.cl index 1adb1c5a1..a4ada9fb0 100644 --- a/OpenCL/m04500_a0-optimized.cl +++ b/OpenCL/m04500_a0-optimized.cl @@ -28,7 +28,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m04500_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04500_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -357,15 +357,15 @@ KERNEL_FQ void m04500_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m04500_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04500_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m04500_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04500_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m04500_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04500_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -715,10 +715,10 @@ KERNEL_FQ void m04500_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m04500_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04500_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m04500_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04500_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m04500_a0-pure.cl b/OpenCL/m04500_a0-pure.cl index 2704f3b14..34a9e75d7 100644 --- a/OpenCL/m04500_a0-pure.cl +++ b/OpenCL/m04500_a0-pure.cl @@ -28,7 +28,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m04500_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04500_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -125,7 +125,7 @@ KERNEL_FQ void m04500_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m04500_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04500_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m04500_a1-optimized.cl b/OpenCL/m04500_a1-optimized.cl index cb4a9af2b..27251248a 100644 --- a/OpenCL/m04500_a1-optimized.cl +++ b/OpenCL/m04500_a1-optimized.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m04500_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04500_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -413,15 +413,15 @@ KERNEL_FQ void m04500_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m04500_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04500_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m04500_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04500_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m04500_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04500_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -829,10 +829,10 @@ KERNEL_FQ void m04500_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m04500_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04500_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m04500_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04500_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m04500_a1-pure.cl b/OpenCL/m04500_a1-pure.cl index 7a7fefce3..0aac24706 100644 --- a/OpenCL/m04500_a1-pure.cl +++ b/OpenCL/m04500_a1-pure.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m04500_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04500_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -121,7 +121,7 @@ KERNEL_FQ void m04500_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m04500_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04500_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m04500_a3-optimized.cl b/OpenCL/m04500_a3-optimized.cl index d03a86232..e689f0716 100644 --- a/OpenCL/m04500_a3-optimized.cl +++ b/OpenCL/m04500_a3-optimized.cl @@ -617,7 +617,7 @@ DECLSPEC void m04500s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m04500_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04500_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -687,7 +687,7 @@ KERNEL_FQ void m04500_m04 (KERN_ATTR_BASIC ()) m04500m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m04500_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04500_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -757,7 +757,7 @@ KERNEL_FQ void m04500_m08 (KERN_ATTR_BASIC ()) m04500m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m04500_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04500_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -827,7 +827,7 @@ KERNEL_FQ void m04500_m16 (KERN_ATTR_BASIC ()) m04500m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m04500_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04500_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -897,7 +897,7 @@ KERNEL_FQ void m04500_s04 (KERN_ATTR_BASIC ()) m04500s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m04500_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04500_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -967,7 +967,7 @@ KERNEL_FQ void m04500_s08 (KERN_ATTR_BASIC ()) m04500s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m04500_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04500_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m04500_a3-pure.cl b/OpenCL/m04500_a3-pure.cl index 1811b6f18..3517541fc 100644 --- a/OpenCL/m04500_a3-pure.cl +++ b/OpenCL/m04500_a3-pure.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m04500_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m04500_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -134,7 +134,7 @@ KERNEL_FQ void m04500_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m04500_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m04500_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m04510_a0-optimized.cl b/OpenCL/m04510_a0-optimized.cl index 59b5994f5..945d341d0 100644 --- a/OpenCL/m04510_a0-optimized.cl +++ b/OpenCL/m04510_a0-optimized.cl @@ -28,7 +28,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m04510_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04510_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -1024,15 +1024,15 @@ KERNEL_FQ void m04510_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m04510_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04510_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m04510_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04510_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m04510_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04510_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -2045,10 +2045,10 @@ KERNEL_FQ void m04510_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m04510_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04510_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m04510_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04510_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m04510_a0-pure.cl b/OpenCL/m04510_a0-pure.cl index a3be7b535..f7d2ea92b 100644 --- a/OpenCL/m04510_a0-pure.cl +++ b/OpenCL/m04510_a0-pure.cl @@ -28,7 +28,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m04510_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04510_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -131,7 +131,7 @@ KERNEL_FQ void m04510_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m04510_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04510_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m04510_a1-optimized.cl b/OpenCL/m04510_a1-optimized.cl index 5c94dbbd1..f4627d4a4 100644 --- a/OpenCL/m04510_a1-optimized.cl +++ b/OpenCL/m04510_a1-optimized.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m04510_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04510_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -1079,15 +1079,15 @@ KERNEL_FQ void m04510_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m04510_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04510_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m04510_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04510_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m04510_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04510_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -2157,10 +2157,10 @@ KERNEL_FQ void m04510_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m04510_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04510_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m04510_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04510_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m04510_a1-pure.cl b/OpenCL/m04510_a1-pure.cl index 885cee178..02f37b99e 100644 --- a/OpenCL/m04510_a1-pure.cl +++ b/OpenCL/m04510_a1-pure.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m04510_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04510_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -127,7 +127,7 @@ KERNEL_FQ void m04510_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m04510_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04510_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m04510_a3-optimized.cl b/OpenCL/m04510_a3-optimized.cl index 685b6f9a8..c449f79fc 100644 --- a/OpenCL/m04510_a3-optimized.cl +++ b/OpenCL/m04510_a3-optimized.cl @@ -1947,7 +1947,7 @@ DECLSPEC void m04510s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m04510_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04510_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -2017,7 +2017,7 @@ KERNEL_FQ void m04510_m04 (KERN_ATTR_BASIC ()) m04510m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m04510_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04510_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -2087,7 +2087,7 @@ KERNEL_FQ void m04510_m08 (KERN_ATTR_BASIC ()) m04510m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m04510_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04510_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -2157,7 +2157,7 @@ KERNEL_FQ void m04510_m16 (KERN_ATTR_BASIC ()) m04510m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m04510_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04510_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -2227,7 +2227,7 @@ KERNEL_FQ void m04510_s04 (KERN_ATTR_BASIC ()) m04510s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m04510_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04510_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -2297,7 +2297,7 @@ KERNEL_FQ void m04510_s08 (KERN_ATTR_BASIC ()) m04510s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m04510_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04510_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m04510_a3-pure.cl b/OpenCL/m04510_a3-pure.cl index c9d578819..f37739add 100644 --- a/OpenCL/m04510_a3-pure.cl +++ b/OpenCL/m04510_a3-pure.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m04510_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m04510_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -135,7 +135,7 @@ KERNEL_FQ void m04510_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m04510_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m04510_sxx (KERN_ATTR_VECTOR ()) { /** * base diff --git a/OpenCL/m04520_a0-optimized.cl b/OpenCL/m04520_a0-optimized.cl index 52aa26687..eb446e0eb 100644 --- a/OpenCL/m04520_a0-optimized.cl +++ b/OpenCL/m04520_a0-optimized.cl @@ -28,7 +28,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m04520_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04520_m04 (KERN_ATTR_RULES ()) { /** * base @@ -588,15 +588,15 @@ KERNEL_FQ void m04520_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m04520_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04520_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m04520_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04520_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m04520_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04520_s04 (KERN_ATTR_RULES ()) { /** * base @@ -1168,10 +1168,10 @@ KERNEL_FQ void m04520_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m04520_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04520_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m04520_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04520_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m04520_a0-pure.cl b/OpenCL/m04520_a0-pure.cl index f87c1521b..060a50412 100644 --- a/OpenCL/m04520_a0-pure.cl +++ b/OpenCL/m04520_a0-pure.cl @@ -28,7 +28,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m04520_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04520_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -140,7 +140,7 @@ KERNEL_FQ void m04520_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m04520_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04520_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m04520_a1-optimized.cl b/OpenCL/m04520_a1-optimized.cl index 58a4c9fbd..4f430379d 100644 --- a/OpenCL/m04520_a1-optimized.cl +++ b/OpenCL/m04520_a1-optimized.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m04520_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04520_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -644,15 +644,15 @@ KERNEL_FQ void m04520_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m04520_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04520_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m04520_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04520_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m04520_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04520_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -1282,10 +1282,10 @@ KERNEL_FQ void m04520_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m04520_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04520_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m04520_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04520_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m04520_a1-pure.cl b/OpenCL/m04520_a1-pure.cl index 03c5370a2..909120ec4 100644 --- a/OpenCL/m04520_a1-pure.cl +++ b/OpenCL/m04520_a1-pure.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m04520_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04520_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -136,7 +136,7 @@ KERNEL_FQ void m04520_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m04520_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04520_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m04520_a3-optimized.cl b/OpenCL/m04520_a3-optimized.cl index 563da5b9d..eba840108 100644 --- a/OpenCL/m04520_a3-optimized.cl +++ b/OpenCL/m04520_a3-optimized.cl @@ -1070,7 +1070,7 @@ DECLSPEC void m04520s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m04520_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04520_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -1140,7 +1140,7 @@ KERNEL_FQ void m04520_m04 (KERN_ATTR_BASIC ()) m04520m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m04520_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04520_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -1210,7 +1210,7 @@ KERNEL_FQ void m04520_m08 (KERN_ATTR_BASIC ()) m04520m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m04520_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04520_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -1280,7 +1280,7 @@ KERNEL_FQ void m04520_m16 (KERN_ATTR_BASIC ()) m04520m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m04520_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04520_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -1350,7 +1350,7 @@ KERNEL_FQ void m04520_s04 (KERN_ATTR_BASIC ()) m04520s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m04520_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04520_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -1420,7 +1420,7 @@ KERNEL_FQ void m04520_s08 (KERN_ATTR_BASIC ()) m04520s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m04520_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04520_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m04520_a3-pure.cl b/OpenCL/m04520_a3-pure.cl index 0ae4e54b4..3b393a9b7 100644 --- a/OpenCL/m04520_a3-pure.cl +++ b/OpenCL/m04520_a3-pure.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m04520_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m04520_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -151,7 +151,7 @@ KERNEL_FQ void m04520_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m04520_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m04520_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m04700_a0-optimized.cl b/OpenCL/m04700_a0-optimized.cl index d89787e1b..5ebc61e52 100644 --- a/OpenCL/m04700_a0-optimized.cl +++ b/OpenCL/m04700_a0-optimized.cl @@ -29,7 +29,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m04700_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04700_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -314,15 +314,15 @@ KERNEL_FQ void m04700_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m04700_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04700_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m04700_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04700_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m04700_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04700_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -628,10 +628,10 @@ KERNEL_FQ void m04700_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m04700_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04700_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m04700_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04700_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m04700_a0-pure.cl b/OpenCL/m04700_a0-pure.cl index 32c24fafd..3a48346fe 100644 --- a/OpenCL/m04700_a0-pure.cl +++ b/OpenCL/m04700_a0-pure.cl @@ -29,7 +29,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m04700_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04700_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -121,7 +121,7 @@ KERNEL_FQ void m04700_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m04700_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04700_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m04700_a1-optimized.cl b/OpenCL/m04700_a1-optimized.cl index 54b141681..3cd748109 100644 --- a/OpenCL/m04700_a1-optimized.cl +++ b/OpenCL/m04700_a1-optimized.cl @@ -27,7 +27,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m04700_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04700_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -367,15 +367,15 @@ KERNEL_FQ void m04700_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m04700_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04700_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m04700_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04700_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m04700_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04700_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -736,10 +736,10 @@ KERNEL_FQ void m04700_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m04700_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04700_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m04700_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04700_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m04700_a1-pure.cl b/OpenCL/m04700_a1-pure.cl index e5f1465a5..beda5345a 100644 --- a/OpenCL/m04700_a1-pure.cl +++ b/OpenCL/m04700_a1-pure.cl @@ -27,7 +27,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m04700_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04700_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -117,7 +117,7 @@ KERNEL_FQ void m04700_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m04700_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04700_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m04700_a3-optimized.cl b/OpenCL/m04700_a3-optimized.cl index 91d329c4b..bbca7ef7c 100644 --- a/OpenCL/m04700_a3-optimized.cl +++ b/OpenCL/m04700_a3-optimized.cl @@ -558,7 +558,7 @@ DECLSPEC void m04700s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m04700_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04700_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -628,7 +628,7 @@ KERNEL_FQ void m04700_m04 (KERN_ATTR_BASIC ()) m04700m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m04700_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04700_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -698,7 +698,7 @@ KERNEL_FQ void m04700_m08 (KERN_ATTR_BASIC ()) m04700m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m04700_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04700_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -768,7 +768,7 @@ KERNEL_FQ void m04700_m16 (KERN_ATTR_BASIC ()) m04700m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m04700_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04700_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -838,7 +838,7 @@ KERNEL_FQ void m04700_s04 (KERN_ATTR_BASIC ()) m04700s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m04700_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04700_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -908,7 +908,7 @@ KERNEL_FQ void m04700_s08 (KERN_ATTR_BASIC ()) m04700s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m04700_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04700_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m04700_a3-pure.cl b/OpenCL/m04700_a3-pure.cl index eadeb2a68..9231b2eec 100644 --- a/OpenCL/m04700_a3-pure.cl +++ b/OpenCL/m04700_a3-pure.cl @@ -27,7 +27,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m04700_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m04700_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -130,7 +130,7 @@ KERNEL_FQ void m04700_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m04700_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m04700_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m04710_a0-optimized.cl b/OpenCL/m04710_a0-optimized.cl index ea50b7d79..f1066a2e4 100644 --- a/OpenCL/m04710_a0-optimized.cl +++ b/OpenCL/m04710_a0-optimized.cl @@ -29,7 +29,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m04710_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04710_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -724,15 +724,15 @@ KERNEL_FQ void m04710_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m04710_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04710_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m04710_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04710_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m04710_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04710_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -1443,10 +1443,10 @@ KERNEL_FQ void m04710_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m04710_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04710_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m04710_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04710_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m04710_a0-pure.cl b/OpenCL/m04710_a0-pure.cl index ddec6b202..21d579855 100644 --- a/OpenCL/m04710_a0-pure.cl +++ b/OpenCL/m04710_a0-pure.cl @@ -29,7 +29,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m04710_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04710_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -146,7 +146,7 @@ KERNEL_FQ void m04710_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m04710_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04710_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m04710_a1-optimized.cl b/OpenCL/m04710_a1-optimized.cl index 248903fbc..dfa30d855 100644 --- a/OpenCL/m04710_a1-optimized.cl +++ b/OpenCL/m04710_a1-optimized.cl @@ -27,7 +27,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m04710_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04710_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -777,15 +777,15 @@ KERNEL_FQ void m04710_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m04710_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04710_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m04710_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04710_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m04710_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04710_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -1551,10 +1551,10 @@ KERNEL_FQ void m04710_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m04710_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04710_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m04710_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04710_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m04710_a1-pure.cl b/OpenCL/m04710_a1-pure.cl index 1c71a09d8..b3566e3b4 100644 --- a/OpenCL/m04710_a1-pure.cl +++ b/OpenCL/m04710_a1-pure.cl @@ -27,7 +27,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m04710_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04710_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -142,7 +142,7 @@ KERNEL_FQ void m04710_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m04710_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04710_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m04710_a3-optimized.cl b/OpenCL/m04710_a3-optimized.cl index 9fad29489..1015e1ea0 100644 --- a/OpenCL/m04710_a3-optimized.cl +++ b/OpenCL/m04710_a3-optimized.cl @@ -1373,7 +1373,7 @@ DECLSPEC void m04710s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m04710_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04710_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -1443,7 +1443,7 @@ KERNEL_FQ void m04710_m04 (KERN_ATTR_BASIC ()) m04710m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m04710_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04710_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -1513,7 +1513,7 @@ KERNEL_FQ void m04710_m08 (KERN_ATTR_BASIC ()) m04710m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m04710_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04710_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -1583,7 +1583,7 @@ KERNEL_FQ void m04710_m16 (KERN_ATTR_BASIC ()) m04710m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m04710_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04710_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -1653,7 +1653,7 @@ KERNEL_FQ void m04710_s04 (KERN_ATTR_BASIC ()) m04710s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m04710_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04710_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -1723,7 +1723,7 @@ KERNEL_FQ void m04710_s08 (KERN_ATTR_BASIC ()) m04710s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m04710_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04710_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m04710_a3-pure.cl b/OpenCL/m04710_a3-pure.cl index f60f385f8..f30c850e1 100644 --- a/OpenCL/m04710_a3-pure.cl +++ b/OpenCL/m04710_a3-pure.cl @@ -27,7 +27,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m04710_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m04710_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -155,7 +155,7 @@ KERNEL_FQ void m04710_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m04710_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m04710_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m04800_a0-optimized.cl b/OpenCL/m04800_a0-optimized.cl index d0142f1f7..7b5f724bb 100644 --- a/OpenCL/m04800_a0-optimized.cl +++ b/OpenCL/m04800_a0-optimized.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m04800_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04800_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -213,15 +213,15 @@ KERNEL_FQ void m04800_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m04800_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04800_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m04800_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04800_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m04800_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04800_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -433,10 +433,10 @@ KERNEL_FQ void m04800_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m04800_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04800_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m04800_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04800_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m04800_a0-pure.cl b/OpenCL/m04800_a0-pure.cl index a8b8549f1..446663598 100644 --- a/OpenCL/m04800_a0-pure.cl +++ b/OpenCL/m04800_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m04800_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04800_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -77,7 +77,7 @@ KERNEL_FQ void m04800_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m04800_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04800_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m04800_a1-optimized.cl b/OpenCL/m04800_a1-optimized.cl index 4f09e63ae..06d721f10 100644 --- a/OpenCL/m04800_a1-optimized.cl +++ b/OpenCL/m04800_a1-optimized.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m04800_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04800_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -283,15 +283,15 @@ KERNEL_FQ void m04800_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m04800_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04800_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m04800_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04800_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m04800_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04800_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -563,10 +563,10 @@ KERNEL_FQ void m04800_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m04800_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04800_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m04800_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04800_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m04800_a1-pure.cl b/OpenCL/m04800_a1-pure.cl index 2328b1dbd..daf93e493 100644 --- a/OpenCL/m04800_a1-pure.cl +++ b/OpenCL/m04800_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m04800_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04800_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -71,7 +71,7 @@ KERNEL_FQ void m04800_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m04800_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04800_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m04800_a3-optimized.cl b/OpenCL/m04800_a3-optimized.cl index 9f59e50b8..97f3d4113 100644 --- a/OpenCL/m04800_a3-optimized.cl +++ b/OpenCL/m04800_a3-optimized.cl @@ -391,7 +391,7 @@ DECLSPEC void m04800s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m04800_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04800_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -444,7 +444,7 @@ KERNEL_FQ void m04800_m04 (KERN_ATTR_BASIC ()) m04800m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m04800_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04800_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -497,7 +497,7 @@ KERNEL_FQ void m04800_m08 (KERN_ATTR_BASIC ()) m04800m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m04800_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04800_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -550,7 +550,7 @@ KERNEL_FQ void m04800_m16 (KERN_ATTR_BASIC ()) m04800m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m04800_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04800_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -603,7 +603,7 @@ KERNEL_FQ void m04800_s04 (KERN_ATTR_BASIC ()) m04800s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m04800_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04800_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -656,7 +656,7 @@ KERNEL_FQ void m04800_s08 (KERN_ATTR_BASIC ()) m04800s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m04800_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04800_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m04800_a3-pure.cl b/OpenCL/m04800_a3-pure.cl index 0a7619700..4186e675e 100644 --- a/OpenCL/m04800_a3-pure.cl +++ b/OpenCL/m04800_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m04800_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m04800_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -88,7 +88,7 @@ KERNEL_FQ void m04800_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m04800_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m04800_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m04900_a0-optimized.cl b/OpenCL/m04900_a0-optimized.cl index 758f48497..d731b60af 100644 --- a/OpenCL/m04900_a0-optimized.cl +++ b/OpenCL/m04900_a0-optimized.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m04900_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04900_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -288,15 +288,15 @@ KERNEL_FQ void m04900_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m04900_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04900_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m04900_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04900_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m04900_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04900_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -589,10 +589,10 @@ KERNEL_FQ void m04900_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m04900_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04900_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m04900_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04900_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m04900_a0-pure.cl b/OpenCL/m04900_a0-pure.cl index c16962c10..e393fcea7 100644 --- a/OpenCL/m04900_a0-pure.cl +++ b/OpenCL/m04900_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m04900_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04900_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -75,7 +75,7 @@ KERNEL_FQ void m04900_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m04900_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m04900_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m04900_a1-optimized.cl b/OpenCL/m04900_a1-optimized.cl index d14164a89..062e533ca 100644 --- a/OpenCL/m04900_a1-optimized.cl +++ b/OpenCL/m04900_a1-optimized.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m04900_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04900_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -346,15 +346,15 @@ KERNEL_FQ void m04900_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m04900_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04900_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m04900_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04900_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m04900_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04900_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -707,10 +707,10 @@ KERNEL_FQ void m04900_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m04900_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04900_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m04900_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04900_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m04900_a1-pure.cl b/OpenCL/m04900_a1-pure.cl index 99ac40da6..fe7ea6bff 100644 --- a/OpenCL/m04900_a1-pure.cl +++ b/OpenCL/m04900_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m04900_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04900_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -69,7 +69,7 @@ KERNEL_FQ void m04900_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m04900_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04900_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m04900_a3-optimized.cl b/OpenCL/m04900_a3-optimized.cl index 31e3b3e14..ca4d6f037 100644 --- a/OpenCL/m04900_a3-optimized.cl +++ b/OpenCL/m04900_a3-optimized.cl @@ -563,7 +563,7 @@ DECLSPEC void m04900s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m04900_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04900_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -616,7 +616,7 @@ KERNEL_FQ void m04900_m04 (KERN_ATTR_BASIC ()) m04900m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m04900_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04900_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -669,7 +669,7 @@ KERNEL_FQ void m04900_m08 (KERN_ATTR_BASIC ()) m04900m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m04900_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04900_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -722,7 +722,7 @@ KERNEL_FQ void m04900_m16 (KERN_ATTR_BASIC ()) m04900m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m04900_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04900_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -775,7 +775,7 @@ KERNEL_FQ void m04900_s04 (KERN_ATTR_BASIC ()) m04900s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m04900_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04900_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -828,7 +828,7 @@ KERNEL_FQ void m04900_s08 (KERN_ATTR_BASIC ()) m04900s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m04900_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m04900_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m04900_a3-pure.cl b/OpenCL/m04900_a3-pure.cl index 1b2999879..e3bcd5eeb 100644 --- a/OpenCL/m04900_a3-pure.cl +++ b/OpenCL/m04900_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m04900_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m04900_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -86,7 +86,7 @@ KERNEL_FQ void m04900_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m04900_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m04900_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m05000_a0-optimized.cl b/OpenCL/m05000_a0-optimized.cl index af98d5922..0c40ac0ca 100644 --- a/OpenCL/m05000_a0-optimized.cl +++ b/OpenCL/m05000_a0-optimized.cl @@ -28,7 +28,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m05000_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m05000_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -458,15 +458,15 @@ KERNEL_FQ void m05000_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m05000_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m05000_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m05000_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m05000_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m05000_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m05000_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -917,10 +917,10 @@ KERNEL_FQ void m05000_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m05000_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m05000_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m05000_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m05000_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m05000_a0-pure.cl b/OpenCL/m05000_a0-pure.cl index 7733bc064..8b37666a9 100644 --- a/OpenCL/m05000_a0-pure.cl +++ b/OpenCL/m05000_a0-pure.cl @@ -28,7 +28,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m05000_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m05000_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -140,7 +140,7 @@ KERNEL_FQ void m05000_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m05000_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m05000_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m05000_a1-optimized.cl b/OpenCL/m05000_a1-optimized.cl index 84d227e1f..d7ddd83dd 100644 --- a/OpenCL/m05000_a1-optimized.cl +++ b/OpenCL/m05000_a1-optimized.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m05000_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m05000_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -516,15 +516,15 @@ KERNEL_FQ void m05000_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m05000_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m05000_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m05000_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m05000_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m05000_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m05000_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -1035,10 +1035,10 @@ KERNEL_FQ void m05000_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m05000_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m05000_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m05000_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m05000_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m05000_a1-pure.cl b/OpenCL/m05000_a1-pure.cl index d96c0bf90..485299b48 100644 --- a/OpenCL/m05000_a1-pure.cl +++ b/OpenCL/m05000_a1-pure.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m05000_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m05000_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -134,7 +134,7 @@ KERNEL_FQ void m05000_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m05000_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m05000_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m05000_a3-optimized.cl b/OpenCL/m05000_a3-optimized.cl index 2b7de0385..1337eae0b 100644 --- a/OpenCL/m05000_a3-optimized.cl +++ b/OpenCL/m05000_a3-optimized.cl @@ -855,7 +855,7 @@ DECLSPEC void m05000s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m05000_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m05000_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -921,7 +921,7 @@ KERNEL_FQ void m05000_m04 (KERN_ATTR_BASIC ()) m05000m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m05000_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m05000_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -987,7 +987,7 @@ KERNEL_FQ void m05000_m08 (KERN_ATTR_BASIC ()) m05000m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m05000_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m05000_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -1053,7 +1053,7 @@ KERNEL_FQ void m05000_m16 (KERN_ATTR_BASIC ()) m05000m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m05000_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m05000_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -1119,7 +1119,7 @@ KERNEL_FQ void m05000_s04 (KERN_ATTR_BASIC ()) m05000s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m05000_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m05000_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -1185,7 +1185,7 @@ KERNEL_FQ void m05000_s08 (KERN_ATTR_BASIC ()) m05000s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m05000_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m05000_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m05000_a3-pure.cl b/OpenCL/m05000_a3-pure.cl index ef86170d6..29db44cca 100644 --- a/OpenCL/m05000_a3-pure.cl +++ b/OpenCL/m05000_a3-pure.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m05000_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m05000_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -151,7 +151,7 @@ KERNEL_FQ void m05000_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m05000_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m05000_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m05100_a0-optimized.cl b/OpenCL/m05100_a0-optimized.cl index 17ea18179..365f18153 100644 --- a/OpenCL/m05100_a0-optimized.cl +++ b/OpenCL/m05100_a0-optimized.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m05100_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m05100_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -156,15 +156,15 @@ KERNEL_FQ void m05100_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m05100_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m05100_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m05100_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m05100_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m05100_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m05100_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -316,10 +316,10 @@ KERNEL_FQ void m05100_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m05100_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m05100_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m05100_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m05100_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m05100_a0-pure.cl b/OpenCL/m05100_a0-pure.cl index 77915b5cf..6dd302f07 100644 --- a/OpenCL/m05100_a0-pure.cl +++ b/OpenCL/m05100_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m05100_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m05100_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -64,7 +64,7 @@ KERNEL_FQ void m05100_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m05100_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m05100_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m05100_a1-optimized.cl b/OpenCL/m05100_a1-optimized.cl index 33805c09b..b1067f98a 100644 --- a/OpenCL/m05100_a1-optimized.cl +++ b/OpenCL/m05100_a1-optimized.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m05100_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m05100_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -209,15 +209,15 @@ KERNEL_FQ void m05100_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m05100_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m05100_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m05100_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m05100_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m05100_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m05100_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -424,10 +424,10 @@ KERNEL_FQ void m05100_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m05100_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m05100_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m05100_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m05100_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m05100_a1-pure.cl b/OpenCL/m05100_a1-pure.cl index 630fa692f..450a51554 100644 --- a/OpenCL/m05100_a1-pure.cl +++ b/OpenCL/m05100_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m05100_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m05100_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -60,7 +60,7 @@ KERNEL_FQ void m05100_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m05100_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m05100_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m05100_a3-optimized.cl b/OpenCL/m05100_a3-optimized.cl index 7bb0ab257..8078f768b 100644 --- a/OpenCL/m05100_a3-optimized.cl +++ b/OpenCL/m05100_a3-optimized.cl @@ -290,7 +290,7 @@ DECLSPEC void m05100s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m05100_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m05100_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -339,7 +339,7 @@ KERNEL_FQ void m05100_m04 (KERN_ATTR_BASIC ()) m05100m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m05100_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m05100_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -388,7 +388,7 @@ KERNEL_FQ void m05100_m08 (KERN_ATTR_BASIC ()) m05100m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m05100_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m05100_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -437,7 +437,7 @@ KERNEL_FQ void m05100_m16 (KERN_ATTR_BASIC ()) m05100m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m05100_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m05100_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -486,7 +486,7 @@ KERNEL_FQ void m05100_s04 (KERN_ATTR_BASIC ()) m05100s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m05100_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m05100_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -535,7 +535,7 @@ KERNEL_FQ void m05100_s08 (KERN_ATTR_BASIC ()) m05100s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m05100_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m05100_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m05100_a3-pure.cl b/OpenCL/m05100_a3-pure.cl index 559bc5f9c..71751804e 100644 --- a/OpenCL/m05100_a3-pure.cl +++ b/OpenCL/m05100_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m05100_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m05100_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -73,7 +73,7 @@ KERNEL_FQ void m05100_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m05100_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m05100_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m05200-pure.cl b/OpenCL/m05200-pure.cl index 57aea1a72..2fc06f2b9 100644 --- a/OpenCL/m05200-pure.cl +++ b/OpenCL/m05200-pure.cl @@ -23,7 +23,7 @@ typedef struct pwsafe3_tmp } pwsafe3_tmp_t; -KERNEL_FQ void m05200_init (KERN_ATTR_TMPS (pwsafe3_tmp_t)) +KERNEL_FQ KERNEL_FA void m05200_init (KERN_ATTR_TMPS (pwsafe3_tmp_t)) { /** * base @@ -53,7 +53,7 @@ KERNEL_FQ void m05200_init (KERN_ATTR_TMPS (pwsafe3_tmp_t)) tmps[gid].digest_buf[7] = ctx.h[7]; } -KERNEL_FQ void m05200_loop (KERN_ATTR_TMPS (pwsafe3_tmp_t)) +KERNEL_FQ KERNEL_FA void m05200_loop (KERN_ATTR_TMPS (pwsafe3_tmp_t)) { const u64 gid = get_global_id (0); @@ -120,7 +120,7 @@ KERNEL_FQ void m05200_loop (KERN_ATTR_TMPS (pwsafe3_tmp_t)) unpackv (tmps, digest_buf, gid, 7, digest[7]); } -KERNEL_FQ void m05200_comp (KERN_ATTR_TMPS (pwsafe3_tmp_t)) +KERNEL_FQ KERNEL_FA void m05200_comp (KERN_ATTR_TMPS (pwsafe3_tmp_t)) { /** * modifier diff --git a/OpenCL/m05300_a0-optimized.cl b/OpenCL/m05300_a0-optimized.cl index 2d0ed29b9..5ff12ea49 100644 --- a/OpenCL/m05300_a0-optimized.cl +++ b/OpenCL/m05300_a0-optimized.cl @@ -111,7 +111,7 @@ DECLSPEC void hmac_md5_run (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE_AS md5_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m05300_m04 (KERN_ATTR_RULES_ESALT (ikepsk_t)) +KERNEL_FQ KERNEL_FA void m05300_m04 (KERN_ATTR_RULES_ESALT (ikepsk_t)) { /** * modifier @@ -278,15 +278,15 @@ KERNEL_FQ void m05300_m04 (KERN_ATTR_RULES_ESALT (ikepsk_t)) } } -KERNEL_FQ void m05300_m08 (KERN_ATTR_RULES_ESALT (ikepsk_t)) +KERNEL_FQ KERNEL_FA void m05300_m08 (KERN_ATTR_RULES_ESALT (ikepsk_t)) { } -KERNEL_FQ void m05300_m16 (KERN_ATTR_RULES_ESALT (ikepsk_t)) +KERNEL_FQ KERNEL_FA void m05300_m16 (KERN_ATTR_RULES_ESALT (ikepsk_t)) { } -KERNEL_FQ void m05300_s04 (KERN_ATTR_RULES_ESALT (ikepsk_t)) +KERNEL_FQ KERNEL_FA void m05300_s04 (KERN_ATTR_RULES_ESALT (ikepsk_t)) { /** * modifier @@ -465,10 +465,10 @@ KERNEL_FQ void m05300_s04 (KERN_ATTR_RULES_ESALT (ikepsk_t)) } } -KERNEL_FQ void m05300_s08 (KERN_ATTR_RULES_ESALT (ikepsk_t)) +KERNEL_FQ KERNEL_FA void m05300_s08 (KERN_ATTR_RULES_ESALT (ikepsk_t)) { } -KERNEL_FQ void m05300_s16 (KERN_ATTR_RULES_ESALT (ikepsk_t)) +KERNEL_FQ KERNEL_FA void m05300_s16 (KERN_ATTR_RULES_ESALT (ikepsk_t)) { } diff --git a/OpenCL/m05300_a0-pure.cl b/OpenCL/m05300_a0-pure.cl index 689fd0874..1af5de49c 100644 --- a/OpenCL/m05300_a0-pure.cl +++ b/OpenCL/m05300_a0-pure.cl @@ -26,7 +26,7 @@ typedef struct ikepsk } ikepsk_t; -KERNEL_FQ void m05300_mxx (KERN_ATTR_RULES_ESALT (ikepsk_t)) +KERNEL_FQ KERNEL_FA void m05300_mxx (KERN_ATTR_RULES_ESALT (ikepsk_t)) { /** * modifier @@ -100,7 +100,7 @@ KERNEL_FQ void m05300_mxx (KERN_ATTR_RULES_ESALT (ikepsk_t)) } } -KERNEL_FQ void m05300_sxx (KERN_ATTR_RULES_ESALT (ikepsk_t)) +KERNEL_FQ KERNEL_FA void m05300_sxx (KERN_ATTR_RULES_ESALT (ikepsk_t)) { /** * modifier diff --git a/OpenCL/m05300_a1-optimized.cl b/OpenCL/m05300_a1-optimized.cl index 784c7db0b..adfc8a698 100644 --- a/OpenCL/m05300_a1-optimized.cl +++ b/OpenCL/m05300_a1-optimized.cl @@ -109,7 +109,7 @@ DECLSPEC void hmac_md5_run (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE_AS md5_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m05300_m04 (KERN_ATTR_ESALT (ikepsk_t)) +KERNEL_FQ KERNEL_FA void m05300_m04 (KERN_ATTR_ESALT (ikepsk_t)) { /** * modifier @@ -336,15 +336,15 @@ KERNEL_FQ void m05300_m04 (KERN_ATTR_ESALT (ikepsk_t)) } } -KERNEL_FQ void m05300_m08 (KERN_ATTR_ESALT (ikepsk_t)) +KERNEL_FQ KERNEL_FA void m05300_m08 (KERN_ATTR_ESALT (ikepsk_t)) { } -KERNEL_FQ void m05300_m16 (KERN_ATTR_ESALT (ikepsk_t)) +KERNEL_FQ KERNEL_FA void m05300_m16 (KERN_ATTR_ESALT (ikepsk_t)) { } -KERNEL_FQ void m05300_s04 (KERN_ATTR_ESALT (ikepsk_t)) +KERNEL_FQ KERNEL_FA void m05300_s04 (KERN_ATTR_ESALT (ikepsk_t)) { /** * modifier @@ -583,10 +583,10 @@ KERNEL_FQ void m05300_s04 (KERN_ATTR_ESALT (ikepsk_t)) } } -KERNEL_FQ void m05300_s08 (KERN_ATTR_ESALT (ikepsk_t)) +KERNEL_FQ KERNEL_FA void m05300_s08 (KERN_ATTR_ESALT (ikepsk_t)) { } -KERNEL_FQ void m05300_s16 (KERN_ATTR_ESALT (ikepsk_t)) +KERNEL_FQ KERNEL_FA void m05300_s16 (KERN_ATTR_ESALT (ikepsk_t)) { } diff --git a/OpenCL/m05300_a1-pure.cl b/OpenCL/m05300_a1-pure.cl index c3bdb83a6..702d49e01 100644 --- a/OpenCL/m05300_a1-pure.cl +++ b/OpenCL/m05300_a1-pure.cl @@ -24,7 +24,7 @@ typedef struct ikepsk } ikepsk_t; -KERNEL_FQ void m05300_mxx (KERN_ATTR_ESALT (ikepsk_t)) +KERNEL_FQ KERNEL_FA void m05300_mxx (KERN_ATTR_ESALT (ikepsk_t)) { /** * modifier @@ -123,7 +123,7 @@ KERNEL_FQ void m05300_mxx (KERN_ATTR_ESALT (ikepsk_t)) } } -KERNEL_FQ void m05300_sxx (KERN_ATTR_ESALT (ikepsk_t)) +KERNEL_FQ KERNEL_FA void m05300_sxx (KERN_ATTR_ESALT (ikepsk_t)) { /** * modifier diff --git a/OpenCL/m05300_a3-optimized.cl b/OpenCL/m05300_a3-optimized.cl index 5917f6c29..b927a26d0 100644 --- a/OpenCL/m05300_a3-optimized.cl +++ b/OpenCL/m05300_a3-optimized.cl @@ -409,7 +409,7 @@ DECLSPEC void m05300s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m05300_m04 (KERN_ATTR_ESALT (ikepsk_t)) +KERNEL_FQ KERNEL_FA void m05300_m04 (KERN_ATTR_ESALT (ikepsk_t)) { /** * modifier @@ -482,7 +482,7 @@ KERNEL_FQ void m05300_m04 (KERN_ATTR_ESALT (ikepsk_t)) m05300m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, s_msg_buf, s_nr_buf); } -KERNEL_FQ void m05300_m08 (KERN_ATTR_ESALT (ikepsk_t)) +KERNEL_FQ KERNEL_FA void m05300_m08 (KERN_ATTR_ESALT (ikepsk_t)) { /** * modifier @@ -555,7 +555,7 @@ KERNEL_FQ void m05300_m08 (KERN_ATTR_ESALT (ikepsk_t)) m05300m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, s_msg_buf, s_nr_buf); } -KERNEL_FQ void m05300_m16 (KERN_ATTR_ESALT (ikepsk_t)) +KERNEL_FQ KERNEL_FA void m05300_m16 (KERN_ATTR_ESALT (ikepsk_t)) { /** * modifier @@ -628,7 +628,7 @@ KERNEL_FQ void m05300_m16 (KERN_ATTR_ESALT (ikepsk_t)) m05300m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, s_msg_buf, s_nr_buf); } -KERNEL_FQ void m05300_s04 (KERN_ATTR_ESALT (ikepsk_t)) +KERNEL_FQ KERNEL_FA void m05300_s04 (KERN_ATTR_ESALT (ikepsk_t)) { /** * modifier @@ -701,7 +701,7 @@ KERNEL_FQ void m05300_s04 (KERN_ATTR_ESALT (ikepsk_t)) m05300s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, s_msg_buf, s_nr_buf); } -KERNEL_FQ void m05300_s08 (KERN_ATTR_ESALT (ikepsk_t)) +KERNEL_FQ KERNEL_FA void m05300_s08 (KERN_ATTR_ESALT (ikepsk_t)) { /** * modifier @@ -774,7 +774,7 @@ KERNEL_FQ void m05300_s08 (KERN_ATTR_ESALT (ikepsk_t)) m05300s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, s_msg_buf, s_nr_buf); } -KERNEL_FQ void m05300_s16 (KERN_ATTR_ESALT (ikepsk_t)) +KERNEL_FQ KERNEL_FA void m05300_s16 (KERN_ATTR_ESALT (ikepsk_t)) { /** * modifier diff --git a/OpenCL/m05300_a3-pure.cl b/OpenCL/m05300_a3-pure.cl index 43dfe10dd..24aa07b9e 100644 --- a/OpenCL/m05300_a3-pure.cl +++ b/OpenCL/m05300_a3-pure.cl @@ -24,7 +24,7 @@ typedef struct ikepsk } ikepsk_t; -KERNEL_FQ void m05300_mxx (KERN_ATTR_VECTOR_ESALT (ikepsk_t)) +KERNEL_FQ KERNEL_FA void m05300_mxx (KERN_ATTR_VECTOR_ESALT (ikepsk_t)) { /** * modifier @@ -109,7 +109,7 @@ KERNEL_FQ void m05300_mxx (KERN_ATTR_VECTOR_ESALT (ikepsk_t)) } } -KERNEL_FQ void m05300_sxx (KERN_ATTR_VECTOR_ESALT (ikepsk_t)) +KERNEL_FQ KERNEL_FA void m05300_sxx (KERN_ATTR_VECTOR_ESALT (ikepsk_t)) { /** * modifier diff --git a/OpenCL/m05400_a0-optimized.cl b/OpenCL/m05400_a0-optimized.cl index cbe34a58b..10941fe02 100644 --- a/OpenCL/m05400_a0-optimized.cl +++ b/OpenCL/m05400_a0-optimized.cl @@ -115,7 +115,7 @@ DECLSPEC void hmac_sha1_run (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE_A sha1_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m05400_m04 (KERN_ATTR_RULES_ESALT (ikepsk_t)) +KERNEL_FQ KERNEL_FA void m05400_m04 (KERN_ATTR_RULES_ESALT (ikepsk_t)) { /** * modifier @@ -291,15 +291,15 @@ KERNEL_FQ void m05400_m04 (KERN_ATTR_RULES_ESALT (ikepsk_t)) } } -KERNEL_FQ void m05400_m08 (KERN_ATTR_RULES_ESALT (ikepsk_t)) +KERNEL_FQ KERNEL_FA void m05400_m08 (KERN_ATTR_RULES_ESALT (ikepsk_t)) { } -KERNEL_FQ void m05400_m16 (KERN_ATTR_RULES_ESALT (ikepsk_t)) +KERNEL_FQ KERNEL_FA void m05400_m16 (KERN_ATTR_RULES_ESALT (ikepsk_t)) { } -KERNEL_FQ void m05400_s04 (KERN_ATTR_RULES_ESALT (ikepsk_t)) +KERNEL_FQ KERNEL_FA void m05400_s04 (KERN_ATTR_RULES_ESALT (ikepsk_t)) { /** * modifier @@ -487,10 +487,10 @@ KERNEL_FQ void m05400_s04 (KERN_ATTR_RULES_ESALT (ikepsk_t)) } } -KERNEL_FQ void m05400_s08 (KERN_ATTR_RULES_ESALT (ikepsk_t)) +KERNEL_FQ KERNEL_FA void m05400_s08 (KERN_ATTR_RULES_ESALT (ikepsk_t)) { } -KERNEL_FQ void m05400_s16 (KERN_ATTR_RULES_ESALT (ikepsk_t)) +KERNEL_FQ KERNEL_FA void m05400_s16 (KERN_ATTR_RULES_ESALT (ikepsk_t)) { } diff --git a/OpenCL/m05400_a0-pure.cl b/OpenCL/m05400_a0-pure.cl index 5481144d0..ab1a412f8 100644 --- a/OpenCL/m05400_a0-pure.cl +++ b/OpenCL/m05400_a0-pure.cl @@ -26,7 +26,7 @@ typedef struct ikepsk } ikepsk_t; -KERNEL_FQ void m05400_mxx (KERN_ATTR_RULES_ESALT (ikepsk_t)) +KERNEL_FQ KERNEL_FA void m05400_mxx (KERN_ATTR_RULES_ESALT (ikepsk_t)) { /** * modifier @@ -100,7 +100,7 @@ KERNEL_FQ void m05400_mxx (KERN_ATTR_RULES_ESALT (ikepsk_t)) } } -KERNEL_FQ void m05400_sxx (KERN_ATTR_RULES_ESALT (ikepsk_t)) +KERNEL_FQ KERNEL_FA void m05400_sxx (KERN_ATTR_RULES_ESALT (ikepsk_t)) { /** * modifier diff --git a/OpenCL/m05400_a1-optimized.cl b/OpenCL/m05400_a1-optimized.cl index 245580c31..a9bf97330 100644 --- a/OpenCL/m05400_a1-optimized.cl +++ b/OpenCL/m05400_a1-optimized.cl @@ -113,7 +113,7 @@ DECLSPEC void hmac_sha1_run (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE_A sha1_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m05400_m04 (KERN_ATTR_ESALT (ikepsk_t)) +KERNEL_FQ KERNEL_FA void m05400_m04 (KERN_ATTR_ESALT (ikepsk_t)) { /** * modifier @@ -357,15 +357,15 @@ KERNEL_FQ void m05400_m04 (KERN_ATTR_ESALT (ikepsk_t)) } } -KERNEL_FQ void m05400_m08 (KERN_ATTR_ESALT (ikepsk_t)) +KERNEL_FQ KERNEL_FA void m05400_m08 (KERN_ATTR_ESALT (ikepsk_t)) { } -KERNEL_FQ void m05400_m16 (KERN_ATTR_ESALT (ikepsk_t)) +KERNEL_FQ KERNEL_FA void m05400_m16 (KERN_ATTR_ESALT (ikepsk_t)) { } -KERNEL_FQ void m05400_s04 (KERN_ATTR_ESALT (ikepsk_t)) +KERNEL_FQ KERNEL_FA void m05400_s04 (KERN_ATTR_ESALT (ikepsk_t)) { /** * modifier @@ -621,10 +621,10 @@ KERNEL_FQ void m05400_s04 (KERN_ATTR_ESALT (ikepsk_t)) } } -KERNEL_FQ void m05400_s08 (KERN_ATTR_ESALT (ikepsk_t)) +KERNEL_FQ KERNEL_FA void m05400_s08 (KERN_ATTR_ESALT (ikepsk_t)) { } -KERNEL_FQ void m05400_s16 (KERN_ATTR_ESALT (ikepsk_t)) +KERNEL_FQ KERNEL_FA void m05400_s16 (KERN_ATTR_ESALT (ikepsk_t)) { } diff --git a/OpenCL/m05400_a1-pure.cl b/OpenCL/m05400_a1-pure.cl index 60679fab5..bd55728f9 100644 --- a/OpenCL/m05400_a1-pure.cl +++ b/OpenCL/m05400_a1-pure.cl @@ -24,7 +24,7 @@ typedef struct ikepsk } ikepsk_t; -KERNEL_FQ void m05400_mxx (KERN_ATTR_ESALT (ikepsk_t)) +KERNEL_FQ KERNEL_FA void m05400_mxx (KERN_ATTR_ESALT (ikepsk_t)) { /** * modifier @@ -123,7 +123,7 @@ KERNEL_FQ void m05400_mxx (KERN_ATTR_ESALT (ikepsk_t)) } } -KERNEL_FQ void m05400_sxx (KERN_ATTR_ESALT (ikepsk_t)) +KERNEL_FQ KERNEL_FA void m05400_sxx (KERN_ATTR_ESALT (ikepsk_t)) { /** * modifier diff --git a/OpenCL/m05400_a3-optimized.cl b/OpenCL/m05400_a3-optimized.cl index b99b970f3..ae69521fb 100644 --- a/OpenCL/m05400_a3-optimized.cl +++ b/OpenCL/m05400_a3-optimized.cl @@ -413,7 +413,7 @@ DECLSPEC void m05400s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m05400_m04 (KERN_ATTR_ESALT (ikepsk_t)) +KERNEL_FQ KERNEL_FA void m05400_m04 (KERN_ATTR_ESALT (ikepsk_t)) { /** * modifier @@ -486,7 +486,7 @@ KERNEL_FQ void m05400_m04 (KERN_ATTR_ESALT (ikepsk_t)) m05400m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, s_msg_buf, s_nr_buf); } -KERNEL_FQ void m05400_m08 (KERN_ATTR_ESALT (ikepsk_t)) +KERNEL_FQ KERNEL_FA void m05400_m08 (KERN_ATTR_ESALT (ikepsk_t)) { /** * modifier @@ -559,7 +559,7 @@ KERNEL_FQ void m05400_m08 (KERN_ATTR_ESALT (ikepsk_t)) m05400m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, s_msg_buf, s_nr_buf); } -KERNEL_FQ void m05400_m16 (KERN_ATTR_ESALT (ikepsk_t)) +KERNEL_FQ KERNEL_FA void m05400_m16 (KERN_ATTR_ESALT (ikepsk_t)) { /** * modifier @@ -632,7 +632,7 @@ KERNEL_FQ void m05400_m16 (KERN_ATTR_ESALT (ikepsk_t)) m05400m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, s_msg_buf, s_nr_buf); } -KERNEL_FQ void m05400_s04 (KERN_ATTR_ESALT (ikepsk_t)) +KERNEL_FQ KERNEL_FA void m05400_s04 (KERN_ATTR_ESALT (ikepsk_t)) { /** * modifier @@ -705,7 +705,7 @@ KERNEL_FQ void m05400_s04 (KERN_ATTR_ESALT (ikepsk_t)) m05400s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, s_msg_buf, s_nr_buf); } -KERNEL_FQ void m05400_s08 (KERN_ATTR_ESALT (ikepsk_t)) +KERNEL_FQ KERNEL_FA void m05400_s08 (KERN_ATTR_ESALT (ikepsk_t)) { /** * modifier @@ -778,7 +778,7 @@ KERNEL_FQ void m05400_s08 (KERN_ATTR_ESALT (ikepsk_t)) m05400s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, s_msg_buf, s_nr_buf); } -KERNEL_FQ void m05400_s16 (KERN_ATTR_ESALT (ikepsk_t)) +KERNEL_FQ KERNEL_FA void m05400_s16 (KERN_ATTR_ESALT (ikepsk_t)) { /** * modifier diff --git a/OpenCL/m05400_a3-pure.cl b/OpenCL/m05400_a3-pure.cl index c22bdd166..6f7719ca4 100644 --- a/OpenCL/m05400_a3-pure.cl +++ b/OpenCL/m05400_a3-pure.cl @@ -24,7 +24,7 @@ typedef struct ikepsk } ikepsk_t; -KERNEL_FQ void m05400_mxx (KERN_ATTR_VECTOR_ESALT (ikepsk_t)) +KERNEL_FQ KERNEL_FA void m05400_mxx (KERN_ATTR_VECTOR_ESALT (ikepsk_t)) { /** * modifier @@ -109,7 +109,7 @@ KERNEL_FQ void m05400_mxx (KERN_ATTR_VECTOR_ESALT (ikepsk_t)) } } -KERNEL_FQ void m05400_sxx (KERN_ATTR_VECTOR_ESALT (ikepsk_t)) +KERNEL_FQ KERNEL_FA void m05400_sxx (KERN_ATTR_VECTOR_ESALT (ikepsk_t)) { /** * modifier diff --git a/OpenCL/m05500_a0-optimized.cl b/OpenCL/m05500_a0-optimized.cl index f3eee1661..989e05c4f 100644 --- a/OpenCL/m05500_a0-optimized.cl +++ b/OpenCL/m05500_a0-optimized.cl @@ -502,7 +502,7 @@ DECLSPEC void transform_netntlmv1_key (const u32x w0, const u32x w1, PRIVATE_AS | ((k[7] & 0xff) << 24); } -KERNEL_FQ void m05500_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m05500_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -716,15 +716,15 @@ KERNEL_FQ void m05500_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m05500_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m05500_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m05500_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m05500_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m05500_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m05500_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -952,10 +952,10 @@ KERNEL_FQ void m05500_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m05500_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m05500_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m05500_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m05500_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m05500_a0-pure.cl b/OpenCL/m05500_a0-pure.cl index 0b65f38dd..6b15c1414 100644 --- a/OpenCL/m05500_a0-pure.cl +++ b/OpenCL/m05500_a0-pure.cl @@ -502,7 +502,7 @@ DECLSPEC void transform_netntlmv1_key (const u32 w0, const u32 w1, PRIVATE_AS u3 | ((k[7] & 0xff) << 24); } -KERNEL_FQ void m05500_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m05500_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -635,7 +635,7 @@ KERNEL_FQ void m05500_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m05500_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m05500_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m05500_a1-optimized.cl b/OpenCL/m05500_a1-optimized.cl index a102db121..619827e06 100644 --- a/OpenCL/m05500_a1-optimized.cl +++ b/OpenCL/m05500_a1-optimized.cl @@ -500,7 +500,7 @@ DECLSPEC void transform_netntlmv1_key (const u32x w0, const u32x w1, PRIVATE_AS | ((k[7] & 0xff) << 24); } -KERNEL_FQ void m05500_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m05500_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -767,15 +767,15 @@ KERNEL_FQ void m05500_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m05500_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m05500_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m05500_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m05500_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m05500_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m05500_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -1061,10 +1061,10 @@ KERNEL_FQ void m05500_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m05500_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m05500_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m05500_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m05500_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m05500_a1-pure.cl b/OpenCL/m05500_a1-pure.cl index 1466ce430..57fb3a40d 100644 --- a/OpenCL/m05500_a1-pure.cl +++ b/OpenCL/m05500_a1-pure.cl @@ -500,7 +500,7 @@ DECLSPEC void transform_netntlmv1_key (const u32 w0, const u32 w1, PRIVATE_AS u3 | ((k[7] & 0xff) << 24); } -KERNEL_FQ void m05500_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m05500_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -631,7 +631,7 @@ KERNEL_FQ void m05500_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m05500_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m05500_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m05500_a3-optimized.cl b/OpenCL/m05500_a3-optimized.cl index 421e683ca..08a6bff51 100644 --- a/OpenCL/m05500_a3-optimized.cl +++ b/OpenCL/m05500_a3-optimized.cl @@ -827,7 +827,7 @@ DECLSPEC void m05500s (SHM_TYPE u32 (*s_SPtrans)[64], SHM_TYPE u32 (*s_skb)[64], } } -KERNEL_FQ void m05500_m04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m05500_m04 (KERN_ATTR_VECTOR ()) { /** * modifier @@ -910,7 +910,7 @@ KERNEL_FQ void m05500_m04 (KERN_ATTR_VECTOR ()) m05500m (s_SPtrans, s_skb, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m05500_m08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m05500_m08 (KERN_ATTR_VECTOR ()) { /** * modifier @@ -993,7 +993,7 @@ KERNEL_FQ void m05500_m08 (KERN_ATTR_VECTOR ()) m05500m (s_SPtrans, s_skb, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m05500_m16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m05500_m16 (KERN_ATTR_VECTOR ()) { /** * modifier @@ -1076,7 +1076,7 @@ KERNEL_FQ void m05500_m16 (KERN_ATTR_VECTOR ()) m05500m (s_SPtrans, s_skb, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m05500_s04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m05500_s04 (KERN_ATTR_VECTOR ()) { /** * modifier @@ -1159,7 +1159,7 @@ KERNEL_FQ void m05500_s04 (KERN_ATTR_VECTOR ()) m05500s (s_SPtrans, s_skb, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m05500_s08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m05500_s08 (KERN_ATTR_VECTOR ()) { /** * modifier @@ -1242,7 +1242,7 @@ KERNEL_FQ void m05500_s08 (KERN_ATTR_VECTOR ()) m05500s (s_SPtrans, s_skb, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m05500_s16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m05500_s16 (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m05500_a3-pure.cl b/OpenCL/m05500_a3-pure.cl index ab19a80bc..4306fc9d8 100644 --- a/OpenCL/m05500_a3-pure.cl +++ b/OpenCL/m05500_a3-pure.cl @@ -500,7 +500,7 @@ DECLSPEC void transform_netntlmv1_key (const u32x w0, const u32x w1, PRIVATE_AS | ((k[7] & 0xff) << 24); } -KERNEL_FQ void m05500_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m05500_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -658,7 +658,7 @@ KERNEL_FQ void m05500_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m05500_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m05500_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m05600_a0-optimized.cl b/OpenCL/m05600_a0-optimized.cl index 5bedcfe2d..4c8408ea1 100644 --- a/OpenCL/m05600_a0-optimized.cl +++ b/OpenCL/m05600_a0-optimized.cl @@ -114,7 +114,7 @@ DECLSPEC void hmac_md5_run (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE_AS md5_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m05600_m04 (KERN_ATTR_RULES_ESALT (netntlm_t)) +KERNEL_FQ KERNEL_FA void m05600_m04 (KERN_ATTR_RULES_ESALT (netntlm_t)) { /** * modifier @@ -345,15 +345,15 @@ KERNEL_FQ void m05600_m04 (KERN_ATTR_RULES_ESALT (netntlm_t)) } } -KERNEL_FQ void m05600_m08 (KERN_ATTR_RULES_ESALT (netntlm_t)) +KERNEL_FQ KERNEL_FA void m05600_m08 (KERN_ATTR_RULES_ESALT (netntlm_t)) { } -KERNEL_FQ void m05600_m16 (KERN_ATTR_RULES_ESALT (netntlm_t)) +KERNEL_FQ KERNEL_FA void m05600_m16 (KERN_ATTR_RULES_ESALT (netntlm_t)) { } -KERNEL_FQ void m05600_s04 (KERN_ATTR_RULES_ESALT (netntlm_t)) +KERNEL_FQ KERNEL_FA void m05600_s04 (KERN_ATTR_RULES_ESALT (netntlm_t)) { /** * modifier @@ -596,10 +596,10 @@ KERNEL_FQ void m05600_s04 (KERN_ATTR_RULES_ESALT (netntlm_t)) } } -KERNEL_FQ void m05600_s08 (KERN_ATTR_RULES_ESALT (netntlm_t)) +KERNEL_FQ KERNEL_FA void m05600_s08 (KERN_ATTR_RULES_ESALT (netntlm_t)) { } -KERNEL_FQ void m05600_s16 (KERN_ATTR_RULES_ESALT (netntlm_t)) +KERNEL_FQ KERNEL_FA void m05600_s16 (KERN_ATTR_RULES_ESALT (netntlm_t)) { } diff --git a/OpenCL/m05600_a0-pure.cl b/OpenCL/m05600_a0-pure.cl index 257bf949a..7f6affa61 100644 --- a/OpenCL/m05600_a0-pure.cl +++ b/OpenCL/m05600_a0-pure.cl @@ -29,7 +29,7 @@ typedef struct netntlm } netntlm_t; -KERNEL_FQ void m05600_mxx (KERN_ATTR_RULES_ESALT (netntlm_t)) +KERNEL_FQ KERNEL_FA void m05600_mxx (KERN_ATTR_RULES_ESALT (netntlm_t)) { /** * modifier @@ -128,7 +128,7 @@ KERNEL_FQ void m05600_mxx (KERN_ATTR_RULES_ESALT (netntlm_t)) } } -KERNEL_FQ void m05600_sxx (KERN_ATTR_RULES_ESALT (netntlm_t)) +KERNEL_FQ KERNEL_FA void m05600_sxx (KERN_ATTR_RULES_ESALT (netntlm_t)) { /** * modifier diff --git a/OpenCL/m05600_a1-optimized.cl b/OpenCL/m05600_a1-optimized.cl index f30fb465d..35939a0b9 100644 --- a/OpenCL/m05600_a1-optimized.cl +++ b/OpenCL/m05600_a1-optimized.cl @@ -112,7 +112,7 @@ DECLSPEC void hmac_md5_run (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE_AS md5_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m05600_m04 (KERN_ATTR_ESALT (netntlm_t)) +KERNEL_FQ KERNEL_FA void m05600_m04 (KERN_ATTR_ESALT (netntlm_t)) { /** * modifier @@ -401,15 +401,15 @@ KERNEL_FQ void m05600_m04 (KERN_ATTR_ESALT (netntlm_t)) } } -KERNEL_FQ void m05600_m08 (KERN_ATTR_ESALT (netntlm_t)) +KERNEL_FQ KERNEL_FA void m05600_m08 (KERN_ATTR_ESALT (netntlm_t)) { } -KERNEL_FQ void m05600_m16 (KERN_ATTR_ESALT (netntlm_t)) +KERNEL_FQ KERNEL_FA void m05600_m16 (KERN_ATTR_ESALT (netntlm_t)) { } -KERNEL_FQ void m05600_s04 (KERN_ATTR_ESALT (netntlm_t)) +KERNEL_FQ KERNEL_FA void m05600_s04 (KERN_ATTR_ESALT (netntlm_t)) { /** * modifier @@ -710,10 +710,10 @@ KERNEL_FQ void m05600_s04 (KERN_ATTR_ESALT (netntlm_t)) } } -KERNEL_FQ void m05600_s08 (KERN_ATTR_ESALT (netntlm_t)) +KERNEL_FQ KERNEL_FA void m05600_s08 (KERN_ATTR_ESALT (netntlm_t)) { } -KERNEL_FQ void m05600_s16 (KERN_ATTR_ESALT (netntlm_t)) +KERNEL_FQ KERNEL_FA void m05600_s16 (KERN_ATTR_ESALT (netntlm_t)) { } diff --git a/OpenCL/m05600_a1-pure.cl b/OpenCL/m05600_a1-pure.cl index 65b8ae4b3..8844eb855 100644 --- a/OpenCL/m05600_a1-pure.cl +++ b/OpenCL/m05600_a1-pure.cl @@ -27,7 +27,7 @@ typedef struct netntlm } netntlm_t; -KERNEL_FQ void m05600_mxx (KERN_ATTR_ESALT (netntlm_t)) +KERNEL_FQ KERNEL_FA void m05600_mxx (KERN_ATTR_ESALT (netntlm_t)) { /** * modifier @@ -124,7 +124,7 @@ KERNEL_FQ void m05600_mxx (KERN_ATTR_ESALT (netntlm_t)) } } -KERNEL_FQ void m05600_sxx (KERN_ATTR_ESALT (netntlm_t)) +KERNEL_FQ KERNEL_FA void m05600_sxx (KERN_ATTR_ESALT (netntlm_t)) { /** * modifier diff --git a/OpenCL/m05600_a3-optimized.cl b/OpenCL/m05600_a3-optimized.cl index d2450f86b..76ab35328 100644 --- a/OpenCL/m05600_a3-optimized.cl +++ b/OpenCL/m05600_a3-optimized.cl @@ -530,7 +530,7 @@ DECLSPEC void m05600s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m05600_m04 (KERN_ATTR_ESALT (netntlm_t)) +KERNEL_FQ KERNEL_FA void m05600_m04 (KERN_ATTR_ESALT (netntlm_t)) { /** * modifier @@ -603,7 +603,7 @@ KERNEL_FQ void m05600_m04 (KERN_ATTR_ESALT (netntlm_t)) m05600m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, s_userdomain_buf, s_chall_buf); } -KERNEL_FQ void m05600_m08 (KERN_ATTR_ESALT (netntlm_t)) +KERNEL_FQ KERNEL_FA void m05600_m08 (KERN_ATTR_ESALT (netntlm_t)) { /** * modifier @@ -676,7 +676,7 @@ KERNEL_FQ void m05600_m08 (KERN_ATTR_ESALT (netntlm_t)) m05600m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, s_userdomain_buf, s_chall_buf); } -KERNEL_FQ void m05600_m16 (KERN_ATTR_ESALT (netntlm_t)) +KERNEL_FQ KERNEL_FA void m05600_m16 (KERN_ATTR_ESALT (netntlm_t)) { /** * modifier @@ -749,7 +749,7 @@ KERNEL_FQ void m05600_m16 (KERN_ATTR_ESALT (netntlm_t)) m05600m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, s_userdomain_buf, s_chall_buf); } -KERNEL_FQ void m05600_s04 (KERN_ATTR_ESALT (netntlm_t)) +KERNEL_FQ KERNEL_FA void m05600_s04 (KERN_ATTR_ESALT (netntlm_t)) { /** * modifier @@ -822,7 +822,7 @@ KERNEL_FQ void m05600_s04 (KERN_ATTR_ESALT (netntlm_t)) m05600s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, s_userdomain_buf, s_chall_buf); } -KERNEL_FQ void m05600_s08 (KERN_ATTR_ESALT (netntlm_t)) +KERNEL_FQ KERNEL_FA void m05600_s08 (KERN_ATTR_ESALT (netntlm_t)) { /** * modifier @@ -895,7 +895,7 @@ KERNEL_FQ void m05600_s08 (KERN_ATTR_ESALT (netntlm_t)) m05600s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, s_userdomain_buf, s_chall_buf); } -KERNEL_FQ void m05600_s16 (KERN_ATTR_ESALT (netntlm_t)) +KERNEL_FQ KERNEL_FA void m05600_s16 (KERN_ATTR_ESALT (netntlm_t)) { /** * modifier diff --git a/OpenCL/m05600_a3-pure.cl b/OpenCL/m05600_a3-pure.cl index dc7521830..d4e0937fe 100644 --- a/OpenCL/m05600_a3-pure.cl +++ b/OpenCL/m05600_a3-pure.cl @@ -27,7 +27,7 @@ typedef struct netntlm } netntlm_t; -KERNEL_FQ void m05600_mxx (KERN_ATTR_VECTOR_ESALT (netntlm_t)) +KERNEL_FQ KERNEL_FA void m05600_mxx (KERN_ATTR_VECTOR_ESALT (netntlm_t)) { /** * modifier @@ -137,7 +137,7 @@ KERNEL_FQ void m05600_mxx (KERN_ATTR_VECTOR_ESALT (netntlm_t)) } } -KERNEL_FQ void m05600_sxx (KERN_ATTR_VECTOR_ESALT (netntlm_t)) +KERNEL_FQ KERNEL_FA void m05600_sxx (KERN_ATTR_VECTOR_ESALT (netntlm_t)) { /** * modifier diff --git a/OpenCL/m05800-optimized.cl b/OpenCL/m05800-optimized.cl index 200716a2f..37bbcf883 100644 --- a/OpenCL/m05800-optimized.cl +++ b/OpenCL/m05800-optimized.cl @@ -315,7 +315,7 @@ DECLSPEC void append_salt (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u3 } } -KERNEL_FQ void m05800_init (KERN_ATTR_TMPS (androidpin_tmp_t)) +KERNEL_FQ KERNEL_FA void m05800_init (KERN_ATTR_TMPS (androidpin_tmp_t)) { /** * base @@ -404,7 +404,7 @@ KERNEL_FQ void m05800_init (KERN_ATTR_TMPS (androidpin_tmp_t)) tmps[gid].digest_buf[4] = digest[4]; } -KERNEL_FQ void m05800_loop (KERN_ATTR_TMPS (androidpin_tmp_t)) +KERNEL_FQ KERNEL_FA void m05800_loop (KERN_ATTR_TMPS (androidpin_tmp_t)) { /** * base @@ -523,7 +523,7 @@ KERNEL_FQ void m05800_loop (KERN_ATTR_TMPS (androidpin_tmp_t)) tmps[gid].digest_buf[4] = digest[4]; } -KERNEL_FQ void m05800_comp (KERN_ATTR_TMPS (androidpin_tmp_t)) +KERNEL_FQ KERNEL_FA void m05800_comp (KERN_ATTR_TMPS (androidpin_tmp_t)) { /** * modifier diff --git a/OpenCL/m05800-pure.cl b/OpenCL/m05800-pure.cl index 313530194..aa8672d09 100644 --- a/OpenCL/m05800-pure.cl +++ b/OpenCL/m05800-pure.cl @@ -188,7 +188,7 @@ CONSTANT_VK u32a c_pc_len[1024] = 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 }; -KERNEL_FQ void m05800_init (KERN_ATTR_TMPS (androidpin_tmp_t)) +KERNEL_FQ KERNEL_FA void m05800_init (KERN_ATTR_TMPS (androidpin_tmp_t)) { const u64 gid = get_global_id (0); @@ -218,7 +218,7 @@ KERNEL_FQ void m05800_init (KERN_ATTR_TMPS (androidpin_tmp_t)) tmps[gid].digest_buf[4] = ctx.h[4]; } -KERNEL_FQ void m05800_loop (KERN_ATTR_TMPS (androidpin_tmp_t)) +KERNEL_FQ KERNEL_FA void m05800_loop (KERN_ATTR_TMPS (androidpin_tmp_t)) { /** * base @@ -317,7 +317,7 @@ KERNEL_FQ void m05800_loop (KERN_ATTR_TMPS (androidpin_tmp_t)) tmps[gid].digest_buf[4] = digest[4]; } -KERNEL_FQ void m05800_comp (KERN_ATTR_TMPS (androidpin_tmp_t)) +KERNEL_FQ KERNEL_FA void m05800_comp (KERN_ATTR_TMPS (androidpin_tmp_t)) { /** * modifier diff --git a/OpenCL/m06000_a0-optimized.cl b/OpenCL/m06000_a0-optimized.cl index 79fc22175..23cbb34f5 100644 --- a/OpenCL/m06000_a0-optimized.cl +++ b/OpenCL/m06000_a0-optimized.cl @@ -21,7 +21,7 @@ DECLSPEC void ripemd160_transform_transport_vector (PRIVATE_AS const u32x *w, PR ripemd160_transform_vector (w + 0, w + 4, w + 8, w + 12, dgst); } -KERNEL_FQ void m06000_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m06000_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -103,15 +103,15 @@ KERNEL_FQ void m06000_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m06000_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m06000_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m06000_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m06000_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m06000_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m06000_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -205,10 +205,10 @@ KERNEL_FQ void m06000_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m06000_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m06000_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m06000_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m06000_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m06000_a0-pure.cl b/OpenCL/m06000_a0-pure.cl index 799b60e58..7a0f62353 100644 --- a/OpenCL/m06000_a0-pure.cl +++ b/OpenCL/m06000_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_ripemd160.cl) #endif -KERNEL_FQ void m06000_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m06000_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -60,7 +60,7 @@ KERNEL_FQ void m06000_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m06000_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m06000_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m06000_a1-optimized.cl b/OpenCL/m06000_a1-optimized.cl index f1311ce99..7af74d9d1 100644 --- a/OpenCL/m06000_a1-optimized.cl +++ b/OpenCL/m06000_a1-optimized.cl @@ -19,7 +19,7 @@ DECLSPEC void ripemd160_transform_transport_vector (PRIVATE_AS const u32x *w, PR ripemd160_transform_vector (w + 0, w + 4, w + 8, w + 12, dgst); } -KERNEL_FQ void m06000_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m06000_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -159,15 +159,15 @@ KERNEL_FQ void m06000_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m06000_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m06000_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m06000_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m06000_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m06000_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m06000_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -319,10 +319,10 @@ KERNEL_FQ void m06000_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m06000_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m06000_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m06000_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m06000_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m06000_a1-pure.cl b/OpenCL/m06000_a1-pure.cl index 80fc12ee9..87e5fafb6 100644 --- a/OpenCL/m06000_a1-pure.cl +++ b/OpenCL/m06000_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_ripemd160.cl) #endif -KERNEL_FQ void m06000_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m06000_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -56,7 +56,7 @@ KERNEL_FQ void m06000_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m06000_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m06000_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m06000_a3-optimized.cl b/OpenCL/m06000_a3-optimized.cl index 4f09bd702..57c65263e 100644 --- a/OpenCL/m06000_a3-optimized.cl +++ b/OpenCL/m06000_a3-optimized.cl @@ -141,7 +141,7 @@ DECLSPEC void m06000s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m06000_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m06000_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -190,7 +190,7 @@ KERNEL_FQ void m06000_m04 (KERN_ATTR_BASIC ()) m06000m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m06000_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m06000_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -239,7 +239,7 @@ KERNEL_FQ void m06000_m08 (KERN_ATTR_BASIC ()) m06000m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m06000_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m06000_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -288,7 +288,7 @@ KERNEL_FQ void m06000_m16 (KERN_ATTR_BASIC ()) m06000m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m06000_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m06000_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -337,7 +337,7 @@ KERNEL_FQ void m06000_s04 (KERN_ATTR_BASIC ()) m06000s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m06000_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m06000_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -386,7 +386,7 @@ KERNEL_FQ void m06000_s08 (KERN_ATTR_BASIC ()) m06000s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m06000_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m06000_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m06000_a3-pure.cl b/OpenCL/m06000_a3-pure.cl index 60049ccfd..d6a23ea12 100644 --- a/OpenCL/m06000_a3-pure.cl +++ b/OpenCL/m06000_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_ripemd160.cl) #endif -KERNEL_FQ void m06000_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m06000_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -69,7 +69,7 @@ KERNEL_FQ void m06000_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m06000_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m06000_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m06050_a0-pure.cl b/OpenCL/m06050_a0-pure.cl index 721829c35..1dff54588 100644 --- a/OpenCL/m06050_a0-pure.cl +++ b/OpenCL/m06050_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_ripemd160.cl) #endif -KERNEL_FQ void m06050_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m06050_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -69,7 +69,7 @@ KERNEL_FQ void m06050_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m06050_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m06050_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m06050_a1-pure.cl b/OpenCL/m06050_a1-pure.cl index 8ee9d6a3f..609d9fce8 100644 --- a/OpenCL/m06050_a1-pure.cl +++ b/OpenCL/m06050_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_ripemd160.cl) #endif -KERNEL_FQ void m06050_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m06050_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -92,7 +92,7 @@ KERNEL_FQ void m06050_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m06050_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m06050_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m06050_a3-pure.cl b/OpenCL/m06050_a3-pure.cl index 18bf635ce..cee483653 100644 --- a/OpenCL/m06050_a3-pure.cl +++ b/OpenCL/m06050_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_ripemd160.cl) #endif -KERNEL_FQ void m06050_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m06050_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -78,7 +78,7 @@ KERNEL_FQ void m06050_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m06050_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m06050_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m06060_a0-pure.cl b/OpenCL/m06060_a0-pure.cl index 2ec330ec9..be76268b6 100644 --- a/OpenCL/m06060_a0-pure.cl +++ b/OpenCL/m06060_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_ripemd160.cl) #endif -KERNEL_FQ void m06060_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m06060_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -71,7 +71,7 @@ KERNEL_FQ void m06060_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m06060_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m06060_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m06060_a1-pure.cl b/OpenCL/m06060_a1-pure.cl index 65113fd08..85bc6766f 100644 --- a/OpenCL/m06060_a1-pure.cl +++ b/OpenCL/m06060_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_ripemd160.cl) #endif -KERNEL_FQ void m06060_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m06060_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -94,7 +94,7 @@ KERNEL_FQ void m06060_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m06060_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m06060_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m06060_a3-pure.cl b/OpenCL/m06060_a3-pure.cl index b67daf63b..724590c2f 100644 --- a/OpenCL/m06060_a3-pure.cl +++ b/OpenCL/m06060_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_ripemd160.cl) #endif -KERNEL_FQ void m06060_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m06060_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -80,7 +80,7 @@ KERNEL_FQ void m06060_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m06060_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m06060_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m06100_a0-optimized.cl b/OpenCL/m06100_a0-optimized.cl index 478e8caa2..b99efe822 100644 --- a/OpenCL/m06100_a0-optimized.cl +++ b/OpenCL/m06100_a0-optimized.cl @@ -21,7 +21,7 @@ DECLSPEC void whirlpool_transform_transport_vector (PRIVATE_AS const u32x *w, PR whirlpool_transform_vector (w + 0, w + 4, w + 8, w + 12, digest, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7); } -KERNEL_FQ void m06100_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m06100_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -156,15 +156,15 @@ KERNEL_FQ void m06100_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m06100_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m06100_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m06100_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m06100_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m06100_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m06100_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -311,10 +311,10 @@ KERNEL_FQ void m06100_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m06100_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m06100_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m06100_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m06100_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m06100_a0-pure.cl b/OpenCL/m06100_a0-pure.cl index f53025d4d..b8de4be0a 100644 --- a/OpenCL/m06100_a0-pure.cl +++ b/OpenCL/m06100_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_whirlpool.cl) #endif -KERNEL_FQ void m06100_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m06100_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -103,7 +103,7 @@ KERNEL_FQ void m06100_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m06100_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m06100_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m06100_a1-optimized.cl b/OpenCL/m06100_a1-optimized.cl index 0ce3769e4..15218383f 100644 --- a/OpenCL/m06100_a1-optimized.cl +++ b/OpenCL/m06100_a1-optimized.cl @@ -19,7 +19,7 @@ DECLSPEC void whirlpool_transform_transport_vector (PRIVATE_AS const u32x *w, PR whirlpool_transform_vector (w + 0, w + 4, w + 8, w + 12, digest, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7); } -KERNEL_FQ void m06100_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m06100_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -212,15 +212,15 @@ KERNEL_FQ void m06100_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m06100_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m06100_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m06100_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m06100_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m06100_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m06100_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -425,10 +425,10 @@ KERNEL_FQ void m06100_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m06100_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m06100_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m06100_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m06100_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m06100_a1-pure.cl b/OpenCL/m06100_a1-pure.cl index 95567d1dd..b108ff19d 100644 --- a/OpenCL/m06100_a1-pure.cl +++ b/OpenCL/m06100_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_whirlpool.cl) #endif -KERNEL_FQ void m06100_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m06100_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -99,7 +99,7 @@ KERNEL_FQ void m06100_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m06100_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m06100_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m06100_a3-optimized.cl b/OpenCL/m06100_a3-optimized.cl index 9623ad97e..cd3e84704 100644 --- a/OpenCL/m06100_a3-optimized.cl +++ b/OpenCL/m06100_a3-optimized.cl @@ -163,7 +163,7 @@ DECLSPEC void m06100s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m06100_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m06100_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -258,7 +258,7 @@ KERNEL_FQ void m06100_m04 (KERN_ATTR_BASIC ()) m06100m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7); } -KERNEL_FQ void m06100_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m06100_m08 (KERN_ATTR_BASIC ()) { /** * modifier @@ -353,11 +353,11 @@ KERNEL_FQ void m06100_m08 (KERN_ATTR_BASIC ()) m06100m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7); } -KERNEL_FQ void m06100_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m06100_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m06100_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m06100_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -452,7 +452,7 @@ KERNEL_FQ void m06100_s04 (KERN_ATTR_BASIC ()) m06100s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7); } -KERNEL_FQ void m06100_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m06100_s08 (KERN_ATTR_BASIC ()) { /** * modifier @@ -547,6 +547,6 @@ KERNEL_FQ void m06100_s08 (KERN_ATTR_BASIC ()) m06100s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7); } -KERNEL_FQ void m06100_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m06100_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m06100_a3-pure.cl b/OpenCL/m06100_a3-pure.cl index a54d087e8..24d84465c 100644 --- a/OpenCL/m06100_a3-pure.cl +++ b/OpenCL/m06100_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_whirlpool.cl) #endif -KERNEL_FQ void m06100_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m06100_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -112,7 +112,7 @@ KERNEL_FQ void m06100_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m06100_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m06100_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m06211-pure.cl b/OpenCL/m06211-pure.cl index 11e5a5bf4..15b74abe5 100644 --- a/OpenCL/m06211-pure.cl +++ b/OpenCL/m06211-pure.cl @@ -84,7 +84,7 @@ DECLSPEC void hmac_ripemd160_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PR ripemd160_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m06211_init (KERN_ATTR_TMPS_ESALT (tc_tmp_t, tc_t)) +KERNEL_FQ KERNEL_FA void m06211_init (KERN_ATTR_TMPS_ESALT (tc_tmp_t, tc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -214,7 +214,7 @@ KERNEL_FQ void m06211_init (KERN_ATTR_TMPS_ESALT (tc_tmp_t, tc_t)) } } -KERNEL_FQ void m06211_loop (KERN_ATTR_TMPS_ESALT (tc_tmp_t, tc_t)) +KERNEL_FQ KERNEL_FA void m06211_loop (KERN_ATTR_TMPS_ESALT (tc_tmp_t, tc_t)) { const u64 gid = get_global_id (0); @@ -299,7 +299,7 @@ KERNEL_FQ void m06211_loop (KERN_ATTR_TMPS_ESALT (tc_tmp_t, tc_t)) } } -KERNEL_FQ void m06211_comp (KERN_ATTR_TMPS_ESALT (tc_tmp_t, tc_t)) +KERNEL_FQ KERNEL_FA void m06211_comp (KERN_ATTR_TMPS_ESALT (tc_tmp_t, tc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m06212-pure.cl b/OpenCL/m06212-pure.cl index 01dca38c8..7885a0662 100644 --- a/OpenCL/m06212-pure.cl +++ b/OpenCL/m06212-pure.cl @@ -84,7 +84,7 @@ DECLSPEC void hmac_ripemd160_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PR ripemd160_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m06212_init (KERN_ATTR_TMPS_ESALT (tc_tmp_t, tc_t)) +KERNEL_FQ KERNEL_FA void m06212_init (KERN_ATTR_TMPS_ESALT (tc_tmp_t, tc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -214,7 +214,7 @@ KERNEL_FQ void m06212_init (KERN_ATTR_TMPS_ESALT (tc_tmp_t, tc_t)) } } -KERNEL_FQ void m06212_loop (KERN_ATTR_TMPS_ESALT (tc_tmp_t, tc_t)) +KERNEL_FQ KERNEL_FA void m06212_loop (KERN_ATTR_TMPS_ESALT (tc_tmp_t, tc_t)) { const u64 gid = get_global_id (0); @@ -299,7 +299,7 @@ KERNEL_FQ void m06212_loop (KERN_ATTR_TMPS_ESALT (tc_tmp_t, tc_t)) } } -KERNEL_FQ void m06212_comp (KERN_ATTR_TMPS_ESALT (tc_tmp_t, tc_t)) +KERNEL_FQ KERNEL_FA void m06212_comp (KERN_ATTR_TMPS_ESALT (tc_tmp_t, tc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m06213-pure.cl b/OpenCL/m06213-pure.cl index dd51ac790..45172d8bd 100644 --- a/OpenCL/m06213-pure.cl +++ b/OpenCL/m06213-pure.cl @@ -84,7 +84,7 @@ DECLSPEC void hmac_ripemd160_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PR ripemd160_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m06213_init (KERN_ATTR_TMPS_ESALT (tc_tmp_t, tc_t)) +KERNEL_FQ KERNEL_FA void m06213_init (KERN_ATTR_TMPS_ESALT (tc_tmp_t, tc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -214,7 +214,7 @@ KERNEL_FQ void m06213_init (KERN_ATTR_TMPS_ESALT (tc_tmp_t, tc_t)) } } -KERNEL_FQ void m06213_loop (KERN_ATTR_TMPS_ESALT (tc_tmp_t, tc_t)) +KERNEL_FQ KERNEL_FA void m06213_loop (KERN_ATTR_TMPS_ESALT (tc_tmp_t, tc_t)) { const u64 gid = get_global_id (0); @@ -299,7 +299,7 @@ KERNEL_FQ void m06213_loop (KERN_ATTR_TMPS_ESALT (tc_tmp_t, tc_t)) } } -KERNEL_FQ void m06213_comp (KERN_ATTR_TMPS_ESALT (tc_tmp_t, tc_t)) +KERNEL_FQ KERNEL_FA void m06213_comp (KERN_ATTR_TMPS_ESALT (tc_tmp_t, tc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m06221-pure.cl b/OpenCL/m06221-pure.cl index cf03af58b..e1689b874 100644 --- a/OpenCL/m06221-pure.cl +++ b/OpenCL/m06221-pure.cl @@ -106,7 +106,7 @@ DECLSPEC void hmac_sha512_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVA sha512_transform_vector (w0, w1, w2, w3, w4, w5, w6, w7, digest); } -KERNEL_FQ void m06221_init (KERN_ATTR_TMPS_ESALT (tc64_tmp_t, tc_t)) +KERNEL_FQ KERNEL_FA void m06221_init (KERN_ATTR_TMPS_ESALT (tc64_tmp_t, tc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -268,7 +268,7 @@ KERNEL_FQ void m06221_init (KERN_ATTR_TMPS_ESALT (tc64_tmp_t, tc_t)) } } -KERNEL_FQ void m06221_loop (KERN_ATTR_TMPS_ESALT (tc64_tmp_t, tc_t)) +KERNEL_FQ KERNEL_FA void m06221_loop (KERN_ATTR_TMPS_ESALT (tc64_tmp_t, tc_t)) { const u64 gid = get_global_id (0); @@ -394,7 +394,7 @@ KERNEL_FQ void m06221_loop (KERN_ATTR_TMPS_ESALT (tc64_tmp_t, tc_t)) } } -KERNEL_FQ void m06221_comp (KERN_ATTR_TMPS_ESALT (tc64_tmp_t, tc_t)) +KERNEL_FQ KERNEL_FA void m06221_comp (KERN_ATTR_TMPS_ESALT (tc64_tmp_t, tc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m06222-pure.cl b/OpenCL/m06222-pure.cl index 6187ff2dd..f6ab92797 100644 --- a/OpenCL/m06222-pure.cl +++ b/OpenCL/m06222-pure.cl @@ -106,7 +106,7 @@ DECLSPEC void hmac_sha512_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVA sha512_transform_vector (w0, w1, w2, w3, w4, w5, w6, w7, digest); } -KERNEL_FQ void m06222_init (KERN_ATTR_TMPS_ESALT (tc64_tmp_t, tc_t)) +KERNEL_FQ KERNEL_FA void m06222_init (KERN_ATTR_TMPS_ESALT (tc64_tmp_t, tc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -268,7 +268,7 @@ KERNEL_FQ void m06222_init (KERN_ATTR_TMPS_ESALT (tc64_tmp_t, tc_t)) } } -KERNEL_FQ void m06222_loop (KERN_ATTR_TMPS_ESALT (tc64_tmp_t, tc_t)) +KERNEL_FQ KERNEL_FA void m06222_loop (KERN_ATTR_TMPS_ESALT (tc64_tmp_t, tc_t)) { const u64 gid = get_global_id (0); @@ -394,7 +394,7 @@ KERNEL_FQ void m06222_loop (KERN_ATTR_TMPS_ESALT (tc64_tmp_t, tc_t)) } } -KERNEL_FQ void m06222_comp (KERN_ATTR_TMPS_ESALT (tc64_tmp_t, tc_t)) +KERNEL_FQ KERNEL_FA void m06222_comp (KERN_ATTR_TMPS_ESALT (tc64_tmp_t, tc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m06223-pure.cl b/OpenCL/m06223-pure.cl index 5e64191df..93caffef4 100644 --- a/OpenCL/m06223-pure.cl +++ b/OpenCL/m06223-pure.cl @@ -106,7 +106,7 @@ DECLSPEC void hmac_sha512_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVA sha512_transform_vector (w0, w1, w2, w3, w4, w5, w6, w7, digest); } -KERNEL_FQ void m06223_init (KERN_ATTR_TMPS_ESALT (tc64_tmp_t, tc_t)) +KERNEL_FQ KERNEL_FA void m06223_init (KERN_ATTR_TMPS_ESALT (tc64_tmp_t, tc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -268,7 +268,7 @@ KERNEL_FQ void m06223_init (KERN_ATTR_TMPS_ESALT (tc64_tmp_t, tc_t)) } } -KERNEL_FQ void m06223_loop (KERN_ATTR_TMPS_ESALT (tc64_tmp_t, tc_t)) +KERNEL_FQ KERNEL_FA void m06223_loop (KERN_ATTR_TMPS_ESALT (tc64_tmp_t, tc_t)) { const u64 gid = get_global_id (0); @@ -394,7 +394,7 @@ KERNEL_FQ void m06223_loop (KERN_ATTR_TMPS_ESALT (tc64_tmp_t, tc_t)) } } -KERNEL_FQ void m06223_comp (KERN_ATTR_TMPS_ESALT (tc64_tmp_t, tc_t)) +KERNEL_FQ KERNEL_FA void m06223_comp (KERN_ATTR_TMPS_ESALT (tc64_tmp_t, tc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m06231-pure.cl b/OpenCL/m06231-pure.cl index 85880b268..ff6eeef70 100644 --- a/OpenCL/m06231-pure.cl +++ b/OpenCL/m06231-pure.cl @@ -144,7 +144,7 @@ DECLSPEC void hmac_whirlpool_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PR whirlpool_transform_vector (w0, w1, w2, w3, digest, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7); } -KERNEL_FQ void m06231_init (KERN_ATTR_TMPS_ESALT (tc_tmp_t, tc_t)) +KERNEL_FQ KERNEL_FA void m06231_init (KERN_ATTR_TMPS_ESALT (tc_tmp_t, tc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -360,7 +360,7 @@ KERNEL_FQ void m06231_init (KERN_ATTR_TMPS_ESALT (tc_tmp_t, tc_t)) } } -KERNEL_FQ void m06231_loop (KERN_ATTR_TMPS_ESALT (tc_tmp_t, tc_t)) +KERNEL_FQ KERNEL_FA void m06231_loop (KERN_ATTR_TMPS_ESALT (tc_tmp_t, tc_t)) { /** * Whirlpool shared @@ -566,7 +566,7 @@ KERNEL_FQ void m06231_loop (KERN_ATTR_TMPS_ESALT (tc_tmp_t, tc_t)) } } -KERNEL_FQ void m06231_comp (KERN_ATTR_TMPS_ESALT (tc_tmp_t, tc_t)) +KERNEL_FQ KERNEL_FA void m06231_comp (KERN_ATTR_TMPS_ESALT (tc_tmp_t, tc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m06232-pure.cl b/OpenCL/m06232-pure.cl index 702a1719e..237906b4e 100644 --- a/OpenCL/m06232-pure.cl +++ b/OpenCL/m06232-pure.cl @@ -144,7 +144,7 @@ DECLSPEC void hmac_whirlpool_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PR whirlpool_transform_vector (w0, w1, w2, w3, digest, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7); } -KERNEL_FQ void m06232_init (KERN_ATTR_TMPS_ESALT (tc_tmp_t, tc_t)) +KERNEL_FQ KERNEL_FA void m06232_init (KERN_ATTR_TMPS_ESALT (tc_tmp_t, tc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -360,7 +360,7 @@ KERNEL_FQ void m06232_init (KERN_ATTR_TMPS_ESALT (tc_tmp_t, tc_t)) } } -KERNEL_FQ void m06232_loop (KERN_ATTR_TMPS_ESALT (tc_tmp_t, tc_t)) +KERNEL_FQ KERNEL_FA void m06232_loop (KERN_ATTR_TMPS_ESALT (tc_tmp_t, tc_t)) { /** * Whirlpool shared @@ -566,7 +566,7 @@ KERNEL_FQ void m06232_loop (KERN_ATTR_TMPS_ESALT (tc_tmp_t, tc_t)) } } -KERNEL_FQ void m06232_comp (KERN_ATTR_TMPS_ESALT (tc_tmp_t, tc_t)) +KERNEL_FQ KERNEL_FA void m06232_comp (KERN_ATTR_TMPS_ESALT (tc_tmp_t, tc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m06233-pure.cl b/OpenCL/m06233-pure.cl index 446c58327..4d030b294 100644 --- a/OpenCL/m06233-pure.cl +++ b/OpenCL/m06233-pure.cl @@ -144,7 +144,7 @@ DECLSPEC void hmac_whirlpool_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PR whirlpool_transform_vector (w0, w1, w2, w3, digest, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7); } -KERNEL_FQ void m06233_init (KERN_ATTR_TMPS_ESALT (tc_tmp_t, tc_t)) +KERNEL_FQ KERNEL_FA void m06233_init (KERN_ATTR_TMPS_ESALT (tc_tmp_t, tc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -360,7 +360,7 @@ KERNEL_FQ void m06233_init (KERN_ATTR_TMPS_ESALT (tc_tmp_t, tc_t)) } } -KERNEL_FQ void m06233_loop (KERN_ATTR_TMPS_ESALT (tc_tmp_t, tc_t)) +KERNEL_FQ KERNEL_FA void m06233_loop (KERN_ATTR_TMPS_ESALT (tc_tmp_t, tc_t)) { /** * Whirlpool shared @@ -566,7 +566,7 @@ KERNEL_FQ void m06233_loop (KERN_ATTR_TMPS_ESALT (tc_tmp_t, tc_t)) } } -KERNEL_FQ void m06233_comp (KERN_ATTR_TMPS_ESALT (tc_tmp_t, tc_t)) +KERNEL_FQ KERNEL_FA void m06233_comp (KERN_ATTR_TMPS_ESALT (tc_tmp_t, tc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m06300-optimized.cl b/OpenCL/m06300-optimized.cl index c8cc8779b..39865927c 100644 --- a/OpenCL/m06300-optimized.cl +++ b/OpenCL/m06300-optimized.cl @@ -573,7 +573,7 @@ DECLSPEC void append_1st (PRIVATE_AS u32 *block0, PRIVATE_AS u32 *block1, PRIVAT } } -KERNEL_FQ void m06300_init (KERN_ATTR_TMPS (md5crypt_tmp_t)) +KERNEL_FQ KERNEL_FA void m06300_init (KERN_ATTR_TMPS (md5crypt_tmp_t)) { /** * base @@ -731,7 +731,7 @@ KERNEL_FQ void m06300_init (KERN_ATTR_TMPS (md5crypt_tmp_t)) tmps[gid].digest_buf[3] = digest[3]; } -KERNEL_FQ void m06300_loop (KERN_ATTR_TMPS (md5crypt_tmp_t)) +KERNEL_FQ KERNEL_FA void m06300_loop (KERN_ATTR_TMPS (md5crypt_tmp_t)) { /** * base @@ -919,7 +919,7 @@ KERNEL_FQ void m06300_loop (KERN_ATTR_TMPS (md5crypt_tmp_t)) tmps[gid].digest_buf[3] = digest[3]; } -KERNEL_FQ void m06300_comp (KERN_ATTR_TMPS (md5crypt_tmp_t)) +KERNEL_FQ KERNEL_FA void m06300_comp (KERN_ATTR_TMPS (md5crypt_tmp_t)) { /** * modifier diff --git a/OpenCL/m06300-pure.cl b/OpenCL/m06300-pure.cl index 11a02d988..c0f0465fb 100644 --- a/OpenCL/m06300-pure.cl +++ b/OpenCL/m06300-pure.cl @@ -22,7 +22,7 @@ typedef struct md5crypt_tmp } md5crypt_tmp_t; -KERNEL_FQ void m06300_init (KERN_ATTR_TMPS (md5crypt_tmp_t)) +KERNEL_FQ KERNEL_FA void m06300_init (KERN_ATTR_TMPS (md5crypt_tmp_t)) { /** * base @@ -122,7 +122,7 @@ KERNEL_FQ void m06300_init (KERN_ATTR_TMPS (md5crypt_tmp_t)) tmps[gid].digest_buf[3] = md5_ctx.h[3]; } -KERNEL_FQ void m06300_loop (KERN_ATTR_TMPS (md5crypt_tmp_t)) +KERNEL_FQ KERNEL_FA void m06300_loop (KERN_ATTR_TMPS (md5crypt_tmp_t)) { /** * base @@ -217,7 +217,7 @@ KERNEL_FQ void m06300_loop (KERN_ATTR_TMPS (md5crypt_tmp_t)) tmps[gid].digest_buf[3] = digest[3]; } -KERNEL_FQ void m06300_comp (KERN_ATTR_TMPS (md5crypt_tmp_t)) +KERNEL_FQ KERNEL_FA void m06300_comp (KERN_ATTR_TMPS (md5crypt_tmp_t)) { /** * modifier diff --git a/OpenCL/m06400-pure.cl b/OpenCL/m06400-pure.cl index 9dbbfe7d4..8185a5406 100644 --- a/OpenCL/m06400-pure.cl +++ b/OpenCL/m06400-pure.cl @@ -69,7 +69,7 @@ DECLSPEC void hmac_sha256_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVA sha256_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m06400_init (KERN_ATTR_TMPS (sha256aix_tmp_t)) +KERNEL_FQ KERNEL_FA void m06400_init (KERN_ATTR_TMPS (sha256aix_tmp_t)) { /** * base @@ -153,7 +153,7 @@ KERNEL_FQ void m06400_init (KERN_ATTR_TMPS (sha256aix_tmp_t)) } } -KERNEL_FQ void m06400_loop (KERN_ATTR_TMPS (sha256aix_tmp_t)) +KERNEL_FQ KERNEL_FA void m06400_loop (KERN_ATTR_TMPS (sha256aix_tmp_t)) { const u64 gid = get_global_id (0); @@ -259,7 +259,7 @@ KERNEL_FQ void m06400_loop (KERN_ATTR_TMPS (sha256aix_tmp_t)) } } -KERNEL_FQ void m06400_comp (KERN_ATTR_TMPS (sha256aix_tmp_t)) +KERNEL_FQ KERNEL_FA void m06400_comp (KERN_ATTR_TMPS (sha256aix_tmp_t)) { /** * base diff --git a/OpenCL/m06500-pure.cl b/OpenCL/m06500-pure.cl index fe8ef3e9a..f3c8f678b 100644 --- a/OpenCL/m06500-pure.cl +++ b/OpenCL/m06500-pure.cl @@ -85,7 +85,7 @@ DECLSPEC void hmac_sha512_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVA sha512_transform_vector (w0, w1, w2, w3, w4, w5, w6, w7, digest); } -KERNEL_FQ void m06500_init (KERN_ATTR_TMPS (sha512aix_tmp_t)) +KERNEL_FQ KERNEL_FA void m06500_init (KERN_ATTR_TMPS (sha512aix_tmp_t)) { /** * base @@ -184,7 +184,7 @@ KERNEL_FQ void m06500_init (KERN_ATTR_TMPS (sha512aix_tmp_t)) tmps[gid].out[7] = sha512_hmac_ctx.opad.h[7]; } -KERNEL_FQ void m06500_loop (KERN_ATTR_TMPS (sha512aix_tmp_t)) +KERNEL_FQ KERNEL_FA void m06500_loop (KERN_ATTR_TMPS (sha512aix_tmp_t)) { const u64 gid = get_global_id (0); @@ -307,7 +307,7 @@ KERNEL_FQ void m06500_loop (KERN_ATTR_TMPS (sha512aix_tmp_t)) unpack64v (tmps, out, gid, 7, out[7]); } -KERNEL_FQ void m06500_comp (KERN_ATTR_TMPS (sha512aix_tmp_t)) +KERNEL_FQ KERNEL_FA void m06500_comp (KERN_ATTR_TMPS (sha512aix_tmp_t)) { /** * base diff --git a/OpenCL/m06600-pure.cl b/OpenCL/m06600-pure.cl index c98902f42..2d67a6e24 100644 --- a/OpenCL/m06600-pure.cl +++ b/OpenCL/m06600-pure.cl @@ -64,7 +64,7 @@ DECLSPEC void hmac_sha1_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE sha1_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m06600_init (KERN_ATTR_TMPS (agilekey_tmp_t)) +KERNEL_FQ KERNEL_FA void m06600_init (KERN_ATTR_TMPS (agilekey_tmp_t)) { /** * base @@ -144,7 +144,7 @@ KERNEL_FQ void m06600_init (KERN_ATTR_TMPS (agilekey_tmp_t)) } } -KERNEL_FQ void m06600_loop (KERN_ATTR_TMPS (agilekey_tmp_t)) +KERNEL_FQ KERNEL_FA void m06600_loop (KERN_ATTR_TMPS (agilekey_tmp_t)) { const u64 gid = get_global_id (0); @@ -229,7 +229,7 @@ KERNEL_FQ void m06600_loop (KERN_ATTR_TMPS (agilekey_tmp_t)) } } -KERNEL_FQ void m06600_comp (KERN_ATTR_TMPS (agilekey_tmp_t)) +KERNEL_FQ KERNEL_FA void m06600_comp (KERN_ATTR_TMPS (agilekey_tmp_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m06700-pure.cl b/OpenCL/m06700-pure.cl index 35d041efa..3bc502cef 100644 --- a/OpenCL/m06700-pure.cl +++ b/OpenCL/m06700-pure.cl @@ -63,7 +63,7 @@ DECLSPEC void hmac_sha1_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE sha1_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m06700_init (KERN_ATTR_TMPS (sha1aix_tmp_t)) +KERNEL_FQ KERNEL_FA void m06700_init (KERN_ATTR_TMPS (sha1aix_tmp_t)) { /** * base @@ -135,7 +135,7 @@ KERNEL_FQ void m06700_init (KERN_ATTR_TMPS (sha1aix_tmp_t)) } } -KERNEL_FQ void m06700_loop (KERN_ATTR_TMPS (sha1aix_tmp_t)) +KERNEL_FQ KERNEL_FA void m06700_loop (KERN_ATTR_TMPS (sha1aix_tmp_t)) { const u64 gid = get_global_id (0); @@ -220,7 +220,7 @@ KERNEL_FQ void m06700_loop (KERN_ATTR_TMPS (sha1aix_tmp_t)) } } -KERNEL_FQ void m06700_comp (KERN_ATTR_TMPS (sha1aix_tmp_t)) +KERNEL_FQ KERNEL_FA void m06700_comp (KERN_ATTR_TMPS (sha1aix_tmp_t)) { /** * base diff --git a/OpenCL/m06800-pure.cl b/OpenCL/m06800-pure.cl index 48efc5306..dd1145a79 100644 --- a/OpenCL/m06800-pure.cl +++ b/OpenCL/m06800-pure.cl @@ -75,7 +75,7 @@ DECLSPEC void hmac_sha256_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVA sha256_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m06800_init (KERN_ATTR_TMPS_ESALT (lastpass_tmp_t, lastpass_t)) +KERNEL_FQ KERNEL_FA void m06800_init (KERN_ATTR_TMPS_ESALT (lastpass_tmp_t, lastpass_t)) { /** * base @@ -159,7 +159,7 @@ KERNEL_FQ void m06800_init (KERN_ATTR_TMPS_ESALT (lastpass_tmp_t, lastpass_t)) } } -KERNEL_FQ void m06800_loop (KERN_ATTR_TMPS_ESALT (lastpass_tmp_t, lastpass_t)) +KERNEL_FQ KERNEL_FA void m06800_loop (KERN_ATTR_TMPS_ESALT (lastpass_tmp_t, lastpass_t)) { const u64 gid = get_global_id (0); @@ -265,7 +265,7 @@ KERNEL_FQ void m06800_loop (KERN_ATTR_TMPS_ESALT (lastpass_tmp_t, lastpass_t)) } } -KERNEL_FQ void m06800_comp (KERN_ATTR_TMPS_ESALT (lastpass_tmp_t, lastpass_t)) +KERNEL_FQ KERNEL_FA void m06800_comp (KERN_ATTR_TMPS_ESALT (lastpass_tmp_t, lastpass_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m06900_a0-optimized.cl b/OpenCL/m06900_a0-optimized.cl index 9902bdcee..f9784431c 100644 --- a/OpenCL/m06900_a0-optimized.cl +++ b/OpenCL/m06900_a0-optimized.cl @@ -698,7 +698,7 @@ CONSTANT_VK u32a c_tables[4][256] = R (k, h, s, 6, t); \ } -KERNEL_FQ void m06900_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m06900_m04 (KERN_ATTR_RULES ()) { /** * base @@ -906,15 +906,15 @@ KERNEL_FQ void m06900_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m06900_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m06900_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m06900_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m06900_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m06900_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m06900_s04 (KERN_ATTR_RULES ()) { /** * base @@ -1138,10 +1138,10 @@ KERNEL_FQ void m06900_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m06900_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m06900_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m06900_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m06900_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m06900_a1-optimized.cl b/OpenCL/m06900_a1-optimized.cl index d98dbff79..e42c2a6c3 100644 --- a/OpenCL/m06900_a1-optimized.cl +++ b/OpenCL/m06900_a1-optimized.cl @@ -696,7 +696,7 @@ CONSTANT_VK u32a c_tables[4][256] = R (k, h, s, 6, t); \ } -KERNEL_FQ void m06900_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m06900_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -958,15 +958,15 @@ KERNEL_FQ void m06900_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m06900_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m06900_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m06900_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m06900_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m06900_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m06900_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -1240,10 +1240,10 @@ KERNEL_FQ void m06900_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m06900_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m06900_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m06900_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m06900_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m06900_a3-optimized.cl b/OpenCL/m06900_a3-optimized.cl index 1cb46e6ea..d71302d55 100644 --- a/OpenCL/m06900_a3-optimized.cl +++ b/OpenCL/m06900_a3-optimized.cl @@ -1050,7 +1050,7 @@ DECLSPEC void m06900s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m06900_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m06900_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -1119,7 +1119,7 @@ KERNEL_FQ void m06900_m04 (KERN_ATTR_BASIC ()) m06900m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, s_tables); } -KERNEL_FQ void m06900_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m06900_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -1188,11 +1188,11 @@ KERNEL_FQ void m06900_m08 (KERN_ATTR_BASIC ()) m06900m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, s_tables); } -KERNEL_FQ void m06900_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m06900_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m06900_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m06900_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -1261,7 +1261,7 @@ KERNEL_FQ void m06900_s04 (KERN_ATTR_BASIC ()) m06900s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, s_tables); } -KERNEL_FQ void m06900_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m06900_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -1330,6 +1330,6 @@ KERNEL_FQ void m06900_s08 (KERN_ATTR_BASIC ()) m06900s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, s_tables); } -KERNEL_FQ void m06900_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m06900_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m07000_a0-optimized.cl b/OpenCL/m07000_a0-optimized.cl index 4671bdeb9..7e0b71b17 100644 --- a/OpenCL/m07000_a0-optimized.cl +++ b/OpenCL/m07000_a0-optimized.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m07000_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m07000_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -270,15 +270,15 @@ KERNEL_FQ void m07000_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m07000_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m07000_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m07000_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m07000_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m07000_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m07000_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -553,10 +553,10 @@ KERNEL_FQ void m07000_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m07000_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m07000_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m07000_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m07000_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m07000_a0-pure.cl b/OpenCL/m07000_a0-pure.cl index f5e083df7..938205612 100644 --- a/OpenCL/m07000_a0-pure.cl +++ b/OpenCL/m07000_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m07000_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m07000_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -92,7 +92,7 @@ KERNEL_FQ void m07000_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m07000_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m07000_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m07000_a1-optimized.cl b/OpenCL/m07000_a1-optimized.cl index 0e7408918..914761dd6 100644 --- a/OpenCL/m07000_a1-optimized.cl +++ b/OpenCL/m07000_a1-optimized.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m07000_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07000_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -328,15 +328,15 @@ KERNEL_FQ void m07000_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m07000_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07000_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m07000_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07000_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m07000_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07000_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -671,10 +671,10 @@ KERNEL_FQ void m07000_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m07000_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07000_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m07000_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07000_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m07000_a1-pure.cl b/OpenCL/m07000_a1-pure.cl index 5d4440654..434aaa8cf 100644 --- a/OpenCL/m07000_a1-pure.cl +++ b/OpenCL/m07000_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m07000_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07000_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -86,7 +86,7 @@ KERNEL_FQ void m07000_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m07000_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07000_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m07000_a3-optimized.cl b/OpenCL/m07000_a3-optimized.cl index 83bda1931..6a5e9bf86 100644 --- a/OpenCL/m07000_a3-optimized.cl +++ b/OpenCL/m07000_a3-optimized.cl @@ -563,7 +563,7 @@ DECLSPEC void m07000s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m07000_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07000_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -616,7 +616,7 @@ KERNEL_FQ void m07000_m04 (KERN_ATTR_BASIC ()) m07000m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m07000_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07000_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -669,7 +669,7 @@ KERNEL_FQ void m07000_m08 (KERN_ATTR_BASIC ()) m07000m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m07000_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07000_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -722,7 +722,7 @@ KERNEL_FQ void m07000_m16 (KERN_ATTR_BASIC ()) m07000m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m07000_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07000_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -775,7 +775,7 @@ KERNEL_FQ void m07000_s04 (KERN_ATTR_BASIC ()) m07000s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m07000_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07000_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -828,7 +828,7 @@ KERNEL_FQ void m07000_s08 (KERN_ATTR_BASIC ()) m07000s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m07000_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07000_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m07000_a3-pure.cl b/OpenCL/m07000_a3-pure.cl index f7ac81883..01982d278 100644 --- a/OpenCL/m07000_a3-pure.cl +++ b/OpenCL/m07000_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m07000_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m07000_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -103,7 +103,7 @@ KERNEL_FQ void m07000_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m07000_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m07000_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m07100-pure.cl b/OpenCL/m07100-pure.cl index 55dcdb066..e8add2df6 100644 --- a/OpenCL/m07100-pure.cl +++ b/OpenCL/m07100-pure.cl @@ -91,7 +91,7 @@ DECLSPEC void hmac_sha512_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVA sha512_transform_vector (w0, w1, w2, w3, w4, w5, w6, w7, digest); } -KERNEL_FQ void m07100_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha512_tmp_t, pbkdf2_sha512_t)) +KERNEL_FQ KERNEL_FA void m07100_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha512_tmp_t, pbkdf2_sha512_t)) { /** * base @@ -195,7 +195,7 @@ KERNEL_FQ void m07100_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha512_tmp_t, pbkdf2_sh } } -KERNEL_FQ void m07100_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha512_tmp_t, pbkdf2_sha512_t)) +KERNEL_FQ KERNEL_FA void m07100_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha512_tmp_t, pbkdf2_sha512_t)) { const u64 gid = get_global_id (0); @@ -321,7 +321,7 @@ KERNEL_FQ void m07100_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha512_tmp_t, pbkdf2_sh } } -KERNEL_FQ void m07100_comp (KERN_ATTR_TMPS_ESALT (pbkdf2_sha512_tmp_t, pbkdf2_sha512_t)) +KERNEL_FQ KERNEL_FA void m07100_comp (KERN_ATTR_TMPS_ESALT (pbkdf2_sha512_tmp_t, pbkdf2_sha512_t)) { /** * base diff --git a/OpenCL/m07300_a0-optimized.cl b/OpenCL/m07300_a0-optimized.cl index 0cda75ede..5f6fe0475 100644 --- a/OpenCL/m07300_a0-optimized.cl +++ b/OpenCL/m07300_a0-optimized.cl @@ -112,7 +112,7 @@ DECLSPEC void hmac_sha1_run (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE_A sha1_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m07300_m04 (KERN_ATTR_RULES_ESALT (rakp_t)) +KERNEL_FQ KERNEL_FA void m07300_m04 (KERN_ATTR_RULES_ESALT (rakp_t)) { /** * modifier @@ -240,15 +240,15 @@ KERNEL_FQ void m07300_m04 (KERN_ATTR_RULES_ESALT (rakp_t)) } } -KERNEL_FQ void m07300_m08 (KERN_ATTR_RULES_ESALT (rakp_t)) +KERNEL_FQ KERNEL_FA void m07300_m08 (KERN_ATTR_RULES_ESALT (rakp_t)) { } -KERNEL_FQ void m07300_m16 (KERN_ATTR_RULES_ESALT (rakp_t)) +KERNEL_FQ KERNEL_FA void m07300_m16 (KERN_ATTR_RULES_ESALT (rakp_t)) { } -KERNEL_FQ void m07300_s04 (KERN_ATTR_RULES_ESALT (rakp_t)) +KERNEL_FQ KERNEL_FA void m07300_s04 (KERN_ATTR_RULES_ESALT (rakp_t)) { /** * modifier @@ -388,10 +388,10 @@ KERNEL_FQ void m07300_s04 (KERN_ATTR_RULES_ESALT (rakp_t)) } } -KERNEL_FQ void m07300_s08 (KERN_ATTR_RULES_ESALT (rakp_t)) +KERNEL_FQ KERNEL_FA void m07300_s08 (KERN_ATTR_RULES_ESALT (rakp_t)) { } -KERNEL_FQ void m07300_s16 (KERN_ATTR_RULES_ESALT (rakp_t)) +KERNEL_FQ KERNEL_FA void m07300_s16 (KERN_ATTR_RULES_ESALT (rakp_t)) { } diff --git a/OpenCL/m07300_a0-pure.cl b/OpenCL/m07300_a0-pure.cl index 3bef46d34..4aa9fbf4c 100644 --- a/OpenCL/m07300_a0-pure.cl +++ b/OpenCL/m07300_a0-pure.cl @@ -23,7 +23,7 @@ typedef struct rakp } rakp_t; -KERNEL_FQ void m07300_mxx (KERN_ATTR_RULES_ESALT (rakp_t)) +KERNEL_FQ KERNEL_FA void m07300_mxx (KERN_ATTR_RULES_ESALT (rakp_t)) { /** * modifier @@ -67,7 +67,7 @@ KERNEL_FQ void m07300_mxx (KERN_ATTR_RULES_ESALT (rakp_t)) } } -KERNEL_FQ void m07300_sxx (KERN_ATTR_RULES_ESALT (rakp_t)) +KERNEL_FQ KERNEL_FA void m07300_sxx (KERN_ATTR_RULES_ESALT (rakp_t)) { /** * modifier diff --git a/OpenCL/m07300_a1-optimized.cl b/OpenCL/m07300_a1-optimized.cl index fc2d6ff8a..fad8c8382 100644 --- a/OpenCL/m07300_a1-optimized.cl +++ b/OpenCL/m07300_a1-optimized.cl @@ -110,7 +110,7 @@ DECLSPEC void hmac_sha1_run (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE_A sha1_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m07300_m04 (KERN_ATTR_ESALT (rakp_t)) +KERNEL_FQ KERNEL_FA void m07300_m04 (KERN_ATTR_ESALT (rakp_t)) { /** * modifier @@ -306,15 +306,15 @@ KERNEL_FQ void m07300_m04 (KERN_ATTR_ESALT (rakp_t)) } } -KERNEL_FQ void m07300_m08 (KERN_ATTR_ESALT (rakp_t)) +KERNEL_FQ KERNEL_FA void m07300_m08 (KERN_ATTR_ESALT (rakp_t)) { } -KERNEL_FQ void m07300_m16 (KERN_ATTR_ESALT (rakp_t)) +KERNEL_FQ KERNEL_FA void m07300_m16 (KERN_ATTR_ESALT (rakp_t)) { } -KERNEL_FQ void m07300_s04 (KERN_ATTR_ESALT (rakp_t)) +KERNEL_FQ KERNEL_FA void m07300_s04 (KERN_ATTR_ESALT (rakp_t)) { /** * modifier @@ -522,10 +522,10 @@ KERNEL_FQ void m07300_s04 (KERN_ATTR_ESALT (rakp_t)) } } -KERNEL_FQ void m07300_s08 (KERN_ATTR_ESALT (rakp_t)) +KERNEL_FQ KERNEL_FA void m07300_s08 (KERN_ATTR_ESALT (rakp_t)) { } -KERNEL_FQ void m07300_s16 (KERN_ATTR_ESALT (rakp_t)) +KERNEL_FQ KERNEL_FA void m07300_s16 (KERN_ATTR_ESALT (rakp_t)) { } diff --git a/OpenCL/m07300_a1-pure.cl b/OpenCL/m07300_a1-pure.cl index 12016889c..08bfefa03 100644 --- a/OpenCL/m07300_a1-pure.cl +++ b/OpenCL/m07300_a1-pure.cl @@ -21,7 +21,7 @@ typedef struct rakp } rakp_t; -KERNEL_FQ void m07300_mxx (KERN_ATTR_ESALT (rakp_t)) +KERNEL_FQ KERNEL_FA void m07300_mxx (KERN_ATTR_ESALT (rakp_t)) { /** * modifier @@ -90,7 +90,7 @@ KERNEL_FQ void m07300_mxx (KERN_ATTR_ESALT (rakp_t)) } } -KERNEL_FQ void m07300_sxx (KERN_ATTR_ESALT (rakp_t)) +KERNEL_FQ KERNEL_FA void m07300_sxx (KERN_ATTR_ESALT (rakp_t)) { /** * modifier diff --git a/OpenCL/m07300_a3-optimized.cl b/OpenCL/m07300_a3-optimized.cl index e14dcd72b..322f3c06b 100644 --- a/OpenCL/m07300_a3-optimized.cl +++ b/OpenCL/m07300_a3-optimized.cl @@ -336,7 +336,7 @@ DECLSPEC void m07300s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m07300_m04 (KERN_ATTR_ESALT (rakp_t)) +KERNEL_FQ KERNEL_FA void m07300_m04 (KERN_ATTR_ESALT (rakp_t)) { /** * modifier @@ -402,7 +402,7 @@ KERNEL_FQ void m07300_m04 (KERN_ATTR_ESALT (rakp_t)) m07300m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, s_esalt_buf); } -KERNEL_FQ void m07300_m08 (KERN_ATTR_ESALT (rakp_t)) +KERNEL_FQ KERNEL_FA void m07300_m08 (KERN_ATTR_ESALT (rakp_t)) { /** * modifiers are taken from args @@ -468,7 +468,7 @@ KERNEL_FQ void m07300_m08 (KERN_ATTR_ESALT (rakp_t)) m07300m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, s_esalt_buf); } -KERNEL_FQ void m07300_m16 (KERN_ATTR_ESALT (rakp_t)) +KERNEL_FQ KERNEL_FA void m07300_m16 (KERN_ATTR_ESALT (rakp_t)) { /** * modifiers are taken from args @@ -534,7 +534,7 @@ KERNEL_FQ void m07300_m16 (KERN_ATTR_ESALT (rakp_t)) m07300m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, s_esalt_buf); } -KERNEL_FQ void m07300_s04 (KERN_ATTR_ESALT (rakp_t)) +KERNEL_FQ KERNEL_FA void m07300_s04 (KERN_ATTR_ESALT (rakp_t)) { /** * modifier @@ -600,7 +600,7 @@ KERNEL_FQ void m07300_s04 (KERN_ATTR_ESALT (rakp_t)) m07300s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, s_esalt_buf); } -KERNEL_FQ void m07300_s08 (KERN_ATTR_ESALT (rakp_t)) +KERNEL_FQ KERNEL_FA void m07300_s08 (KERN_ATTR_ESALT (rakp_t)) { /** * modifier @@ -666,7 +666,7 @@ KERNEL_FQ void m07300_s08 (KERN_ATTR_ESALT (rakp_t)) m07300s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, s_esalt_buf); } -KERNEL_FQ void m07300_s16 (KERN_ATTR_ESALT (rakp_t)) +KERNEL_FQ KERNEL_FA void m07300_s16 (KERN_ATTR_ESALT (rakp_t)) { /** * modifier diff --git a/OpenCL/m07300_a3-pure.cl b/OpenCL/m07300_a3-pure.cl index d969ed0f6..4b4a9abf9 100644 --- a/OpenCL/m07300_a3-pure.cl +++ b/OpenCL/m07300_a3-pure.cl @@ -21,7 +21,7 @@ typedef struct rakp } rakp_t; -KERNEL_FQ void m07300_mxx (KERN_ATTR_VECTOR_ESALT (rakp_t)) +KERNEL_FQ KERNEL_FA void m07300_mxx (KERN_ATTR_VECTOR_ESALT (rakp_t)) { /** * modifier @@ -76,7 +76,7 @@ KERNEL_FQ void m07300_mxx (KERN_ATTR_VECTOR_ESALT (rakp_t)) } } -KERNEL_FQ void m07300_sxx (KERN_ATTR_VECTOR_ESALT (rakp_t)) +KERNEL_FQ KERNEL_FA void m07300_sxx (KERN_ATTR_VECTOR_ESALT (rakp_t)) { /** * modifier diff --git a/OpenCL/m07350_a0-optimized.cl b/OpenCL/m07350_a0-optimized.cl index 89b557b32..d82add460 100644 --- a/OpenCL/m07350_a0-optimized.cl +++ b/OpenCL/m07350_a0-optimized.cl @@ -74,7 +74,7 @@ DECLSPEC void hmac_md5_pad (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE_AS md5_transform_vector (w0, w1, w2, w3, opad); } -KERNEL_FQ void m07350_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m07350_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -221,15 +221,15 @@ KERNEL_FQ void m07350_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m07350_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m07350_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m07350_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m07350_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m07350_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m07350_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -388,10 +388,10 @@ KERNEL_FQ void m07350_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m07350_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m07350_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m07350_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m07350_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m07350_a0-pure.cl b/OpenCL/m07350_a0-pure.cl index 6d1cac651..0efd0e429 100644 --- a/OpenCL/m07350_a0-pure.cl +++ b/OpenCL/m07350_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m07350_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m07350_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -69,7 +69,7 @@ KERNEL_FQ void m07350_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m07350_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m07350_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m07350_a1-optimized.cl b/OpenCL/m07350_a1-optimized.cl index 058b6411d..3b272e6bb 100644 --- a/OpenCL/m07350_a1-optimized.cl +++ b/OpenCL/m07350_a1-optimized.cl @@ -101,7 +101,7 @@ DECLSPEC void hmac_md5_run (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE_AS } */ -KERNEL_FQ void m07350_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07350_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -358,15 +358,15 @@ KERNEL_FQ void m07350_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m07350_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07350_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m07350_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07350_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m07350_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07350_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -635,10 +635,10 @@ KERNEL_FQ void m07350_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m07350_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07350_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m07350_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07350_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m07350_a1-pure.cl b/OpenCL/m07350_a1-pure.cl index 09b774141..11ba923f5 100644 --- a/OpenCL/m07350_a1-pure.cl +++ b/OpenCL/m07350_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m07350_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07350_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -92,7 +92,7 @@ KERNEL_FQ void m07350_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m07350_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07350_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m07350_a3-optimized.cl b/OpenCL/m07350_a3-optimized.cl index 79dde06d5..72728c563 100644 --- a/OpenCL/m07350_a3-optimized.cl +++ b/OpenCL/m07350_a3-optimized.cl @@ -365,7 +365,7 @@ DECLSPEC void m07350s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m07350_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07350_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -414,7 +414,7 @@ KERNEL_FQ void m07350_m04 (KERN_ATTR_BASIC ()) m07350m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m07350_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07350_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -463,7 +463,7 @@ KERNEL_FQ void m07350_m08 (KERN_ATTR_BASIC ()) m07350m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m07350_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07350_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -512,7 +512,7 @@ KERNEL_FQ void m07350_m16 (KERN_ATTR_BASIC ()) m07350m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m07350_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07350_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -561,7 +561,7 @@ KERNEL_FQ void m07350_s04 (KERN_ATTR_BASIC ()) m07350s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m07350_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07350_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -610,7 +610,7 @@ KERNEL_FQ void m07350_s08 (KERN_ATTR_BASIC ()) m07350s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m07350_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07350_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m07350_a3-pure.cl b/OpenCL/m07350_a3-pure.cl index 908bd51e2..d2702b485 100644 --- a/OpenCL/m07350_a3-pure.cl +++ b/OpenCL/m07350_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m07350_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m07350_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -78,7 +78,7 @@ KERNEL_FQ void m07350_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m07350_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m07350_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m07400-optimized.cl b/OpenCL/m07400-optimized.cl index 0615d5414..1a3ea413c 100644 --- a/OpenCL/m07400-optimized.cl +++ b/OpenCL/m07400-optimized.cl @@ -1178,7 +1178,7 @@ DECLSPEC u32 memcat24 (PRIVATE_AS u32 *block, const u32 offset, PRIVATE_AS const return offset + append_len; } -KERNEL_FQ void m07400_init (KERN_ATTR_TMPS (sha256crypt_tmp_t)) +KERNEL_FQ KERNEL_FA void m07400_init (KERN_ATTR_TMPS (sha256crypt_tmp_t)) { /** * base @@ -1526,7 +1526,7 @@ KERNEL_FQ void m07400_init (KERN_ATTR_TMPS (sha256crypt_tmp_t)) tmps[gid].s_bytes[4] = s_bytes[4]; } -KERNEL_FQ void m07400_loop (KERN_ATTR_TMPS (sha256crypt_tmp_t)) +KERNEL_FQ KERNEL_FA void m07400_loop (KERN_ATTR_TMPS (sha256crypt_tmp_t)) { /** * base @@ -1737,7 +1737,7 @@ KERNEL_FQ void m07400_loop (KERN_ATTR_TMPS (sha256crypt_tmp_t)) tmps[gid].alt_result[7] = alt_result[7]; } -KERNEL_FQ void m07400_comp (KERN_ATTR_TMPS (sha256crypt_tmp_t)) +KERNEL_FQ KERNEL_FA void m07400_comp (KERN_ATTR_TMPS (sha256crypt_tmp_t)) { /** * base diff --git a/OpenCL/m07400-pure.cl b/OpenCL/m07400-pure.cl index d17aafd9f..e42b07c8d 100644 --- a/OpenCL/m07400-pure.cl +++ b/OpenCL/m07400-pure.cl @@ -24,7 +24,7 @@ typedef struct sha256crypt_tmp } sha256crypt_tmp_t; -KERNEL_FQ void m07400_init (KERN_ATTR_TMPS (sha256crypt_tmp_t)) +KERNEL_FQ KERNEL_FA void m07400_init (KERN_ATTR_TMPS (sha256crypt_tmp_t)) { /** * base @@ -261,7 +261,7 @@ KERNEL_FQ void m07400_init (KERN_ATTR_TMPS (sha256crypt_tmp_t)) for (int i = 0; i < 64; i++) tmps[gid].s_bytes[i] = s_final[i]; } -KERNEL_FQ void m07400_loop (KERN_ATTR_TMPS (sha256crypt_tmp_t)) +KERNEL_FQ KERNEL_FA void m07400_loop (KERN_ATTR_TMPS (sha256crypt_tmp_t)) { /** * base @@ -345,7 +345,7 @@ KERNEL_FQ void m07400_loop (KERN_ATTR_TMPS (sha256crypt_tmp_t)) tmps[gid].alt_result[7] = alt_result[7]; } -KERNEL_FQ void m07400_comp (KERN_ATTR_TMPS (sha256crypt_tmp_t)) +KERNEL_FQ KERNEL_FA void m07400_comp (KERN_ATTR_TMPS (sha256crypt_tmp_t)) { /** * base diff --git a/OpenCL/m07500_a0-optimized.cl b/OpenCL/m07500_a0-optimized.cl index 2036dd882..659b36c25 100644 --- a/OpenCL/m07500_a0-optimized.cl +++ b/OpenCL/m07500_a0-optimized.cl @@ -273,7 +273,7 @@ DECLSPEC void kerb_prepare (PRIVATE_AS const u32 *w0, PRIVATE_AS const u32 *w1, hmac_md5_run (w0_t, w1_t, w2_t, w3_t, ipad, opad, digest); } -KERNEL_FQ void m07500_m04 (KERN_ATTR_RULES_ESALT (krb5pa_t)) +KERNEL_FQ KERNEL_FA void m07500_m04 (KERN_ATTR_RULES_ESALT (krb5pa_t)) { /** * modifier @@ -369,15 +369,15 @@ KERNEL_FQ void m07500_m04 (KERN_ATTR_RULES_ESALT (krb5pa_t)) } } -KERNEL_FQ void m07500_m08 (KERN_ATTR_RULES_ESALT (krb5pa_t)) +KERNEL_FQ KERNEL_FA void m07500_m08 (KERN_ATTR_RULES_ESALT (krb5pa_t)) { } -KERNEL_FQ void m07500_m16 (KERN_ATTR_RULES_ESALT (krb5pa_t)) +KERNEL_FQ KERNEL_FA void m07500_m16 (KERN_ATTR_RULES_ESALT (krb5pa_t)) { } -KERNEL_FQ void m07500_s04 (KERN_ATTR_RULES_ESALT (krb5pa_t)) +KERNEL_FQ KERNEL_FA void m07500_s04 (KERN_ATTR_RULES_ESALT (krb5pa_t)) { /** * modifier @@ -473,10 +473,10 @@ KERNEL_FQ void m07500_s04 (KERN_ATTR_RULES_ESALT (krb5pa_t)) } } -KERNEL_FQ void m07500_s08 (KERN_ATTR_RULES_ESALT (krb5pa_t)) +KERNEL_FQ KERNEL_FA void m07500_s08 (KERN_ATTR_RULES_ESALT (krb5pa_t)) { } -KERNEL_FQ void m07500_s16 (KERN_ATTR_RULES_ESALT (krb5pa_t)) +KERNEL_FQ KERNEL_FA void m07500_s16 (KERN_ATTR_RULES_ESALT (krb5pa_t)) { } diff --git a/OpenCL/m07500_a0-pure.cl b/OpenCL/m07500_a0-pure.cl index 3799e2f30..da773d3cc 100644 --- a/OpenCL/m07500_a0-pure.cl +++ b/OpenCL/m07500_a0-pure.cl @@ -157,7 +157,7 @@ DECLSPEC void kerb_prepare (PRIVATE_AS const u32 *K, PRIVATE_AS const u32 *check digest[3] = ctx.opad.h[3]; } -KERNEL_FQ void m07500_mxx (KERN_ATTR_RULES_ESALT (krb5pa_t)) +KERNEL_FQ KERNEL_FA void m07500_mxx (KERN_ATTR_RULES_ESALT (krb5pa_t)) { /** * modifier @@ -226,7 +226,7 @@ KERNEL_FQ void m07500_mxx (KERN_ATTR_RULES_ESALT (krb5pa_t)) } } -KERNEL_FQ void m07500_sxx (KERN_ATTR_RULES_ESALT (krb5pa_t)) +KERNEL_FQ KERNEL_FA void m07500_sxx (KERN_ATTR_RULES_ESALT (krb5pa_t)) { /** * modifier diff --git a/OpenCL/m07500_a1-optimized.cl b/OpenCL/m07500_a1-optimized.cl index 89935c890..29d350099 100644 --- a/OpenCL/m07500_a1-optimized.cl +++ b/OpenCL/m07500_a1-optimized.cl @@ -271,7 +271,7 @@ DECLSPEC void kerb_prepare (PRIVATE_AS const u32 *w0, PRIVATE_AS const u32 *w1, hmac_md5_run (w0_t, w1_t, w2_t, w3_t, ipad, opad, digest); } -KERNEL_FQ void m07500_m04 (KERN_ATTR_ESALT (krb5pa_t)) +KERNEL_FQ KERNEL_FA void m07500_m04 (KERN_ATTR_ESALT (krb5pa_t)) { /** * modifier @@ -417,15 +417,15 @@ KERNEL_FQ void m07500_m04 (KERN_ATTR_ESALT (krb5pa_t)) } } -KERNEL_FQ void m07500_m08 (KERN_ATTR_ESALT (krb5pa_t)) +KERNEL_FQ KERNEL_FA void m07500_m08 (KERN_ATTR_ESALT (krb5pa_t)) { } -KERNEL_FQ void m07500_m16 (KERN_ATTR_ESALT (krb5pa_t)) +KERNEL_FQ KERNEL_FA void m07500_m16 (KERN_ATTR_ESALT (krb5pa_t)) { } -KERNEL_FQ void m07500_s04 (KERN_ATTR_ESALT (krb5pa_t)) +KERNEL_FQ KERNEL_FA void m07500_s04 (KERN_ATTR_ESALT (krb5pa_t)) { /** * modifier @@ -571,10 +571,10 @@ KERNEL_FQ void m07500_s04 (KERN_ATTR_ESALT (krb5pa_t)) } } -KERNEL_FQ void m07500_s08 (KERN_ATTR_ESALT (krb5pa_t)) +KERNEL_FQ KERNEL_FA void m07500_s08 (KERN_ATTR_ESALT (krb5pa_t)) { } -KERNEL_FQ void m07500_s16 (KERN_ATTR_ESALT (krb5pa_t)) +KERNEL_FQ KERNEL_FA void m07500_s16 (KERN_ATTR_ESALT (krb5pa_t)) { } diff --git a/OpenCL/m07500_a1-pure.cl b/OpenCL/m07500_a1-pure.cl index 125757b26..6d51d3928 100644 --- a/OpenCL/m07500_a1-pure.cl +++ b/OpenCL/m07500_a1-pure.cl @@ -155,7 +155,7 @@ DECLSPEC void kerb_prepare (PRIVATE_AS const u32 *K, PRIVATE_AS const u32 *check digest[3] = ctx.opad.h[3]; } -KERNEL_FQ void m07500_mxx (KERN_ATTR_ESALT (krb5pa_t)) +KERNEL_FQ KERNEL_FA void m07500_mxx (KERN_ATTR_ESALT (krb5pa_t)) { /** * modifier @@ -222,7 +222,7 @@ KERNEL_FQ void m07500_mxx (KERN_ATTR_ESALT (krb5pa_t)) } } -KERNEL_FQ void m07500_sxx (KERN_ATTR_ESALT (krb5pa_t)) +KERNEL_FQ KERNEL_FA void m07500_sxx (KERN_ATTR_ESALT (krb5pa_t)) { /** * modifier diff --git a/OpenCL/m07500_a3-optimized.cl b/OpenCL/m07500_a3-optimized.cl index c85d2d728..392dca645 100644 --- a/OpenCL/m07500_a3-optimized.cl +++ b/OpenCL/m07500_a3-optimized.cl @@ -358,7 +358,7 @@ DECLSPEC void m07500 (LOCAL_AS u32 *S, PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, P } } -KERNEL_FQ void m07500_m04 (KERN_ATTR_ESALT (krb5pa_t)) +KERNEL_FQ KERNEL_FA void m07500_m04 (KERN_ATTR_ESALT (krb5pa_t)) { /** * base @@ -409,7 +409,7 @@ KERNEL_FQ void m07500_m04 (KERN_ATTR_ESALT (krb5pa_t)) m07500 (S, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m07500_m08 (KERN_ATTR_ESALT (krb5pa_t)) +KERNEL_FQ KERNEL_FA void m07500_m08 (KERN_ATTR_ESALT (krb5pa_t)) { /** * base @@ -460,11 +460,11 @@ KERNEL_FQ void m07500_m08 (KERN_ATTR_ESALT (krb5pa_t)) m07500 (S, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m07500_m16 (KERN_ATTR_ESALT (krb5pa_t)) +KERNEL_FQ KERNEL_FA void m07500_m16 (KERN_ATTR_ESALT (krb5pa_t)) { } -KERNEL_FQ void m07500_s04 (KERN_ATTR_ESALT (krb5pa_t)) +KERNEL_FQ KERNEL_FA void m07500_s04 (KERN_ATTR_ESALT (krb5pa_t)) { /** * base @@ -515,7 +515,7 @@ KERNEL_FQ void m07500_s04 (KERN_ATTR_ESALT (krb5pa_t)) m07500 (S, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m07500_s08 (KERN_ATTR_ESALT (krb5pa_t)) +KERNEL_FQ KERNEL_FA void m07500_s08 (KERN_ATTR_ESALT (krb5pa_t)) { /** * base @@ -566,6 +566,6 @@ KERNEL_FQ void m07500_s08 (KERN_ATTR_ESALT (krb5pa_t)) m07500 (S, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m07500_s16 (KERN_ATTR_ESALT (krb5pa_t)) +KERNEL_FQ KERNEL_FA void m07500_s16 (KERN_ATTR_ESALT (krb5pa_t)) { } diff --git a/OpenCL/m07500_a3-pure.cl b/OpenCL/m07500_a3-pure.cl index 0191426da..cc16e2805 100644 --- a/OpenCL/m07500_a3-pure.cl +++ b/OpenCL/m07500_a3-pure.cl @@ -155,7 +155,7 @@ DECLSPEC void kerb_prepare (PRIVATE_AS const u32 *K, PRIVATE_AS const u32 *check digest[3] = ctx.opad.h[3]; } -KERNEL_FQ void m07500_mxx (KERN_ATTR_VECTOR_ESALT (krb5pa_t)) +KERNEL_FQ KERNEL_FA void m07500_mxx (KERN_ATTR_VECTOR_ESALT (krb5pa_t)) { /** * modifier @@ -247,7 +247,7 @@ KERNEL_FQ void m07500_mxx (KERN_ATTR_VECTOR_ESALT (krb5pa_t)) } } -KERNEL_FQ void m07500_sxx (KERN_ATTR_VECTOR_ESALT (krb5pa_t)) +KERNEL_FQ KERNEL_FA void m07500_sxx (KERN_ATTR_VECTOR_ESALT (krb5pa_t)) { /** * modifier diff --git a/OpenCL/m07700_a0-optimized.cl b/OpenCL/m07700_a0-optimized.cl index 9d6f7a018..7f46eed87 100644 --- a/OpenCL/m07700_a0-optimized.cl +++ b/OpenCL/m07700_a0-optimized.cl @@ -155,7 +155,7 @@ DECLSPEC u32 walld0rf_magic (PRIVATE_AS const u32 *w0, const u32 pw_len, PRIVATE return sum20; } -KERNEL_FQ void m07700_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m07700_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -311,15 +311,15 @@ KERNEL_FQ void m07700_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m07700_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m07700_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m07700_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m07700_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m07700_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m07700_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -487,10 +487,10 @@ KERNEL_FQ void m07700_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m07700_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m07700_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m07700_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m07700_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m07700_a1-optimized.cl b/OpenCL/m07700_a1-optimized.cl index 581d4e236..7ce7198d3 100644 --- a/OpenCL/m07700_a1-optimized.cl +++ b/OpenCL/m07700_a1-optimized.cl @@ -146,7 +146,7 @@ DECLSPEC u32 walld0rf_magic (PRIVATE_AS const u32 *w0, const u32 pw_len, PRIVATE return sum20; } -KERNEL_FQ void m07700_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07700_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -345,15 +345,15 @@ KERNEL_FQ void m07700_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m07700_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07700_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m07700_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07700_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m07700_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07700_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -564,10 +564,10 @@ KERNEL_FQ void m07700_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m07700_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07700_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m07700_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07700_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m07700_a3-optimized.cl b/OpenCL/m07700_a3-optimized.cl index 6af310aca..7505431c4 100644 --- a/OpenCL/m07700_a3-optimized.cl +++ b/OpenCL/m07700_a3-optimized.cl @@ -393,7 +393,7 @@ DECLSPEC void m07700s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m07700_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07700_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -446,7 +446,7 @@ KERNEL_FQ void m07700_m04 (KERN_ATTR_BASIC ()) m07700m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m07700_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07700_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -499,11 +499,11 @@ KERNEL_FQ void m07700_m08 (KERN_ATTR_BASIC ()) m07700m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m07700_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07700_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m07700_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07700_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -556,7 +556,7 @@ KERNEL_FQ void m07700_s04 (KERN_ATTR_BASIC ()) m07700s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m07700_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07700_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -609,6 +609,6 @@ KERNEL_FQ void m07700_s08 (KERN_ATTR_BASIC ()) m07700s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m07700_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07700_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m07701_a0-optimized.cl b/OpenCL/m07701_a0-optimized.cl index f673fbba4..bf7a9f6c1 100644 --- a/OpenCL/m07701_a0-optimized.cl +++ b/OpenCL/m07701_a0-optimized.cl @@ -148,7 +148,7 @@ DECLSPEC u32 walld0rf_magic (PRIVATE_AS const u32 *w0, const u32 pw_len, PRIVATE return sum20; } -KERNEL_FQ void m07701_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m07701_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -304,15 +304,15 @@ KERNEL_FQ void m07701_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m07701_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m07701_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m07701_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m07701_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m07701_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m07701_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -480,10 +480,10 @@ KERNEL_FQ void m07701_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m07701_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m07701_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m07701_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m07701_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m07701_a1-optimized.cl b/OpenCL/m07701_a1-optimized.cl index e3727fe13..97e9a50a4 100644 --- a/OpenCL/m07701_a1-optimized.cl +++ b/OpenCL/m07701_a1-optimized.cl @@ -146,7 +146,7 @@ DECLSPEC u32 walld0rf_magic (PRIVATE_AS const u32 *w0, const u32 pw_len, PRIVATE return sum20; } -KERNEL_FQ void m07701_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07701_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -345,15 +345,15 @@ KERNEL_FQ void m07701_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m07701_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07701_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m07701_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07701_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m07701_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07701_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -564,10 +564,10 @@ KERNEL_FQ void m07701_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m07701_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07701_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m07701_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07701_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m07701_a3-optimized.cl b/OpenCL/m07701_a3-optimized.cl index 3ee03e9a3..830f4af87 100644 --- a/OpenCL/m07701_a3-optimized.cl +++ b/OpenCL/m07701_a3-optimized.cl @@ -393,7 +393,7 @@ DECLSPEC void m07701s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m07701_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07701_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -446,7 +446,7 @@ KERNEL_FQ void m07701_m04 (KERN_ATTR_BASIC ()) m07701m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m07701_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07701_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -499,11 +499,11 @@ KERNEL_FQ void m07701_m08 (KERN_ATTR_BASIC ()) m07701m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m07701_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07701_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m07701_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07701_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -556,7 +556,7 @@ KERNEL_FQ void m07701_s04 (KERN_ATTR_BASIC ()) m07701s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m07701_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07701_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -609,6 +609,6 @@ KERNEL_FQ void m07701_s08 (KERN_ATTR_BASIC ()) m07701s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m07701_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07701_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m07800_a0-optimized.cl b/OpenCL/m07800_a0-optimized.cl index 6344453a2..7bf4bd7a1 100644 --- a/OpenCL/m07800_a0-optimized.cl +++ b/OpenCL/m07800_a0-optimized.cl @@ -54,7 +54,7 @@ DECLSPEC void SETSHIFTEDINT (PRIVATE_AS u32 *a, const int n, const u32 v) a[d + 1] = l32_from_64_S (tmp); } -KERNEL_FQ void m07800_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m07800_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -298,15 +298,15 @@ KERNEL_FQ void m07800_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m07800_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m07800_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m07800_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m07800_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m07800_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m07800_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -562,10 +562,10 @@ KERNEL_FQ void m07800_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m07800_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m07800_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m07800_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m07800_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m07800_a1-optimized.cl b/OpenCL/m07800_a1-optimized.cl index 79564d7e5..0c72423f7 100644 --- a/OpenCL/m07800_a1-optimized.cl +++ b/OpenCL/m07800_a1-optimized.cl @@ -52,7 +52,7 @@ DECLSPEC void SETSHIFTEDINT (PRIVATE_AS u32 *a, const int n, const u32 v) a[d + 1] = l32_from_64_S (tmp); } -KERNEL_FQ void m07800_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07800_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -356,15 +356,15 @@ KERNEL_FQ void m07800_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m07800_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07800_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m07800_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07800_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m07800_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07800_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -680,10 +680,10 @@ KERNEL_FQ void m07800_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m07800_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07800_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m07800_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07800_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m07800_a3-optimized.cl b/OpenCL/m07800_a3-optimized.cl index 7ff3ec75a..5b442f6c6 100644 --- a/OpenCL/m07800_a3-optimized.cl +++ b/OpenCL/m07800_a3-optimized.cl @@ -498,7 +498,7 @@ DECLSPEC void m07800s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m07800_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07800_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -553,7 +553,7 @@ KERNEL_FQ void m07800_m04 (KERN_ATTR_BASIC ()) m07800m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m07800_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07800_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -608,11 +608,11 @@ KERNEL_FQ void m07800_m08 (KERN_ATTR_BASIC ()) m07800m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m07800_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07800_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m07800_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07800_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -667,7 +667,7 @@ KERNEL_FQ void m07800_s04 (KERN_ATTR_BASIC ()) m07800s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m07800_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07800_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -722,6 +722,6 @@ KERNEL_FQ void m07800_s08 (KERN_ATTR_BASIC ()) m07800s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m07800_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07800_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m07801_a0-optimized.cl b/OpenCL/m07801_a0-optimized.cl index d9033a704..c5f7cb0d5 100644 --- a/OpenCL/m07801_a0-optimized.cl +++ b/OpenCL/m07801_a0-optimized.cl @@ -54,7 +54,7 @@ DECLSPEC void SETSHIFTEDINT (PRIVATE_AS u32 *a, const int n, const u32 v) a[d + 1] = l32_from_64_S (tmp); } -KERNEL_FQ void m07801_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m07801_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -298,15 +298,15 @@ KERNEL_FQ void m07801_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m07801_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m07801_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m07801_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m07801_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m07801_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m07801_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -562,10 +562,10 @@ KERNEL_FQ void m07801_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m07801_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m07801_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m07801_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m07801_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m07801_a1-optimized.cl b/OpenCL/m07801_a1-optimized.cl index f9479c906..10608c0ba 100644 --- a/OpenCL/m07801_a1-optimized.cl +++ b/OpenCL/m07801_a1-optimized.cl @@ -52,7 +52,7 @@ DECLSPEC void SETSHIFTEDINT (PRIVATE_AS u32 *a, const int n, const u32 v) a[d + 1] = l32_from_64_S (tmp); } -KERNEL_FQ void m07801_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07801_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -356,15 +356,15 @@ KERNEL_FQ void m07801_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m07801_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07801_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m07801_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07801_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m07801_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07801_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -680,10 +680,10 @@ KERNEL_FQ void m07801_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m07801_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07801_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m07801_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07801_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m07801_a3-optimized.cl b/OpenCL/m07801_a3-optimized.cl index 169657aad..340aa6258 100644 --- a/OpenCL/m07801_a3-optimized.cl +++ b/OpenCL/m07801_a3-optimized.cl @@ -498,7 +498,7 @@ DECLSPEC void m07801s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m07801_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07801_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -553,7 +553,7 @@ KERNEL_FQ void m07801_m04 (KERN_ATTR_BASIC ()) m07801m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m07801_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07801_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -608,11 +608,11 @@ KERNEL_FQ void m07801_m08 (KERN_ATTR_BASIC ()) m07801m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m07801_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07801_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m07801_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07801_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -667,7 +667,7 @@ KERNEL_FQ void m07801_s04 (KERN_ATTR_BASIC ()) m07801s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m07801_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07801_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -722,6 +722,6 @@ KERNEL_FQ void m07801_s08 (KERN_ATTR_BASIC ()) m07801s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m07801_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m07801_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m07900-pure.cl b/OpenCL/m07900-pure.cl index 9fdc23cbb..5052ac20c 100644 --- a/OpenCL/m07900-pure.cl +++ b/OpenCL/m07900-pure.cl @@ -20,7 +20,7 @@ typedef struct drupal7_tmp } drupal7_tmp_t; -KERNEL_FQ void m07900_init (KERN_ATTR_TMPS (drupal7_tmp_t)) +KERNEL_FQ KERNEL_FA void m07900_init (KERN_ATTR_TMPS (drupal7_tmp_t)) { /** * base @@ -50,7 +50,7 @@ KERNEL_FQ void m07900_init (KERN_ATTR_TMPS (drupal7_tmp_t)) tmps[gid].digest_buf[7] = ctx.h[7]; } -KERNEL_FQ void m07900_loop (KERN_ATTR_TMPS (drupal7_tmp_t)) +KERNEL_FQ KERNEL_FA void m07900_loop (KERN_ATTR_TMPS (drupal7_tmp_t)) { /** * base @@ -204,7 +204,7 @@ KERNEL_FQ void m07900_loop (KERN_ATTR_TMPS (drupal7_tmp_t)) tmps[gid].digest_buf[7] = digest[7]; } -KERNEL_FQ void m07900_comp (KERN_ATTR_TMPS (drupal7_tmp_t)) +KERNEL_FQ KERNEL_FA void m07900_comp (KERN_ATTR_TMPS (drupal7_tmp_t)) { /** * modifier diff --git a/OpenCL/m08000_a0-optimized.cl b/OpenCL/m08000_a0-optimized.cl index 3a5348531..c40f73a28 100644 --- a/OpenCL/m08000_a0-optimized.cl +++ b/OpenCL/m08000_a0-optimized.cl @@ -218,7 +218,7 @@ DECLSPEC void sha256_transform_s (PRIVATE_AS u32x *digest, LOCAL_AS u32 *w) digest[7] += h; } -KERNEL_FQ void m08000_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m08000_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -381,15 +381,15 @@ KERNEL_FQ void m08000_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m08000_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m08000_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m08000_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m08000_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m08000_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m08000_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -564,10 +564,10 @@ KERNEL_FQ void m08000_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m08000_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m08000_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m08000_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m08000_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m08000_a1-optimized.cl b/OpenCL/m08000_a1-optimized.cl index 3565c5fc4..0e9a701d7 100644 --- a/OpenCL/m08000_a1-optimized.cl +++ b/OpenCL/m08000_a1-optimized.cl @@ -216,7 +216,7 @@ DECLSPEC void sha256_transform_s (PRIVATE_AS u32x *digest, LOCAL_AS u32 *w) digest[7] += h; } -KERNEL_FQ void m08000_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m08000_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -433,15 +433,15 @@ KERNEL_FQ void m08000_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m08000_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m08000_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m08000_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m08000_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m08000_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m08000_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -670,10 +670,10 @@ KERNEL_FQ void m08000_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m08000_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m08000_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m08000_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m08000_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m08000_a3-optimized.cl b/OpenCL/m08000_a3-optimized.cl index 2e13bd72b..09ce853ca 100644 --- a/OpenCL/m08000_a3-optimized.cl +++ b/OpenCL/m08000_a3-optimized.cl @@ -464,7 +464,7 @@ DECLSPEC void m08000s (LOCAL_AS u32 *w_s1, LOCAL_AS u32 *w_s2, PRIVATE_AS u32 *w } } -KERNEL_FQ void m08000_m04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m08000_m04 (KERN_ATTR_VECTOR ()) { /** * base @@ -505,7 +505,7 @@ KERNEL_FQ void m08000_m04 (KERN_ATTR_VECTOR ()) m08000m (w_s1, w_s2, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m08000_m08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m08000_m08 (KERN_ATTR_VECTOR ()) { /** * base @@ -546,7 +546,7 @@ KERNEL_FQ void m08000_m08 (KERN_ATTR_VECTOR ()) m08000m (w_s1, w_s2, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m08000_m16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m08000_m16 (KERN_ATTR_VECTOR ()) { /** * base @@ -587,7 +587,7 @@ KERNEL_FQ void m08000_m16 (KERN_ATTR_VECTOR ()) m08000m (w_s1, w_s2, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m08000_s04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m08000_s04 (KERN_ATTR_VECTOR ()) { /** * base @@ -628,7 +628,7 @@ KERNEL_FQ void m08000_s04 (KERN_ATTR_VECTOR ()) m08000s (w_s1, w_s2, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m08000_s08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m08000_s08 (KERN_ATTR_VECTOR ()) { /** * base @@ -669,7 +669,7 @@ KERNEL_FQ void m08000_s08 (KERN_ATTR_VECTOR ()) m08000s (w_s1, w_s2, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m08000_s16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m08000_s16 (KERN_ATTR_VECTOR ()) { /** * base diff --git a/OpenCL/m08100_a0-optimized.cl b/OpenCL/m08100_a0-optimized.cl index cba059b94..0d2c66d68 100644 --- a/OpenCL/m08100_a0-optimized.cl +++ b/OpenCL/m08100_a0-optimized.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m08100_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m08100_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -220,15 +220,15 @@ KERNEL_FQ void m08100_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m08100_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m08100_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m08100_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m08100_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m08100_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m08100_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -453,10 +453,10 @@ KERNEL_FQ void m08100_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m08100_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m08100_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m08100_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m08100_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m08100_a0-pure.cl b/OpenCL/m08100_a0-pure.cl index 63dd1561e..f19f3c1c8 100644 --- a/OpenCL/m08100_a0-pure.cl +++ b/OpenCL/m08100_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m08100_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m08100_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -68,7 +68,7 @@ KERNEL_FQ void m08100_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m08100_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m08100_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m08100_a1-optimized.cl b/OpenCL/m08100_a1-optimized.cl index e1ffe5e15..3d4f115c9 100644 --- a/OpenCL/m08100_a1-optimized.cl +++ b/OpenCL/m08100_a1-optimized.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m08100_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m08100_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -289,15 +289,15 @@ KERNEL_FQ void m08100_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m08100_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m08100_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m08100_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m08100_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m08100_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m08100_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -581,10 +581,10 @@ KERNEL_FQ void m08100_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m08100_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m08100_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m08100_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m08100_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m08100_a1-pure.cl b/OpenCL/m08100_a1-pure.cl index 8b46f1fa8..21a103538 100644 --- a/OpenCL/m08100_a1-pure.cl +++ b/OpenCL/m08100_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m08100_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m08100_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -63,7 +63,7 @@ KERNEL_FQ void m08100_mxx (KERN_ATTR_BASIC ()) } -KERNEL_FQ void m08100_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m08100_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m08100_a3-optimized.cl b/OpenCL/m08100_a3-optimized.cl index 5d2ebec01..dfbf6e20e 100644 --- a/OpenCL/m08100_a3-optimized.cl +++ b/OpenCL/m08100_a3-optimized.cl @@ -351,7 +351,7 @@ DECLSPEC void m08100s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m08100_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m08100_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -417,7 +417,7 @@ KERNEL_FQ void m08100_m04 (KERN_ATTR_BASIC ()) m08100m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m08100_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m08100_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -491,7 +491,7 @@ KERNEL_FQ void m08100_m08 (KERN_ATTR_BASIC ()) m08100m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m08100_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m08100_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -580,7 +580,7 @@ KERNEL_FQ void m08100_m16 (KERN_ATTR_BASIC ()) m08100m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m08100_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m08100_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -646,7 +646,7 @@ KERNEL_FQ void m08100_s04 (KERN_ATTR_BASIC ()) m08100s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m08100_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m08100_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -720,7 +720,7 @@ KERNEL_FQ void m08100_s08 (KERN_ATTR_BASIC ()) m08100s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m08100_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m08100_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m08100_a3-pure.cl b/OpenCL/m08100_a3-pure.cl index c7b5884b7..499dd9132 100644 --- a/OpenCL/m08100_a3-pure.cl +++ b/OpenCL/m08100_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m08100_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m08100_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -79,7 +79,7 @@ KERNEL_FQ void m08100_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m08100_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m08100_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m08200-pure.cl b/OpenCL/m08200-pure.cl index 49d951cb7..cc54ad2ce 100644 --- a/OpenCL/m08200-pure.cl +++ b/OpenCL/m08200-pure.cl @@ -93,7 +93,7 @@ DECLSPEC void hmac_sha512_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVA sha512_transform_vector (w0, w1, w2, w3, w4, w5, w6, w7, digest); } -KERNEL_FQ void m08200_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha512_tmp_t, cloudkey_t)) +KERNEL_FQ KERNEL_FA void m08200_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha512_tmp_t, cloudkey_t)) { /** * base @@ -197,7 +197,7 @@ KERNEL_FQ void m08200_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha512_tmp_t, cloudkey_ } } -KERNEL_FQ void m08200_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha512_tmp_t, cloudkey_t)) +KERNEL_FQ KERNEL_FA void m08200_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha512_tmp_t, cloudkey_t)) { const u64 gid = get_global_id (0); @@ -323,7 +323,7 @@ KERNEL_FQ void m08200_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha512_tmp_t, cloudkey_ } } -KERNEL_FQ void m08200_comp (KERN_ATTR_TMPS_ESALT (pbkdf2_sha512_tmp_t, cloudkey_t)) +KERNEL_FQ KERNEL_FA void m08200_comp (KERN_ATTR_TMPS_ESALT (pbkdf2_sha512_tmp_t, cloudkey_t)) { /** * base diff --git a/OpenCL/m08300_a0-optimized.cl b/OpenCL/m08300_a0-optimized.cl index f1265f28b..53f19f614 100644 --- a/OpenCL/m08300_a0-optimized.cl +++ b/OpenCL/m08300_a0-optimized.cl @@ -173,7 +173,7 @@ DECLSPEC u32 replace_dot_by_len (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE out_len.s##n++; \ } -KERNEL_FQ void m08300_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m08300_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -457,15 +457,15 @@ KERNEL_FQ void m08300_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m08300_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m08300_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m08300_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m08300_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m08300_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m08300_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -761,10 +761,10 @@ KERNEL_FQ void m08300_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m08300_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m08300_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m08300_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m08300_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m08300_a0-pure.cl b/OpenCL/m08300_a0-pure.cl index 1454c90bf..5b8f3bbdb 100644 --- a/OpenCL/m08300_a0-pure.cl +++ b/OpenCL/m08300_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m08300_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m08300_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -148,7 +148,7 @@ KERNEL_FQ void m08300_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m08300_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m08300_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m08300_a1-optimized.cl b/OpenCL/m08300_a1-optimized.cl index 690647820..227a865a4 100644 --- a/OpenCL/m08300_a1-optimized.cl +++ b/OpenCL/m08300_a1-optimized.cl @@ -171,7 +171,7 @@ DECLSPEC u32 replace_dot_by_len (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE pw_len.s##n++; \ } -KERNEL_FQ void m08300_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m08300_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -515,15 +515,15 @@ KERNEL_FQ void m08300_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m08300_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m08300_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m08300_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m08300_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m08300_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m08300_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -879,10 +879,10 @@ KERNEL_FQ void m08300_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m08300_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m08300_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m08300_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m08300_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m08300_a1-pure.cl b/OpenCL/m08300_a1-pure.cl index 0545f4c93..e9c8c6059 100644 --- a/OpenCL/m08300_a1-pure.cl +++ b/OpenCL/m08300_a1-pure.cl @@ -50,7 +50,7 @@ DECLSPEC const u32 replace_dot_by_len (PRIVATE_AS pw_t *out, GLOBAL_AS const pw_ return cur_len; } -KERNEL_FQ void m08300_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m08300_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -167,7 +167,7 @@ KERNEL_FQ void m08300_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m08300_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m08300_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m08300_a3-optimized.cl b/OpenCL/m08300_a3-optimized.cl index 2364b0219..dcbec54ce 100644 --- a/OpenCL/m08300_a3-optimized.cl +++ b/OpenCL/m08300_a3-optimized.cl @@ -651,7 +651,7 @@ DECLSPEC void m08300s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m08300_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m08300_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -700,7 +700,7 @@ KERNEL_FQ void m08300_m04 (KERN_ATTR_BASIC ()) m08300m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m08300_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m08300_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -749,7 +749,7 @@ KERNEL_FQ void m08300_m08 (KERN_ATTR_BASIC ()) m08300m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m08300_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m08300_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -798,7 +798,7 @@ KERNEL_FQ void m08300_m16 (KERN_ATTR_BASIC ()) m08300m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m08300_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m08300_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -847,7 +847,7 @@ KERNEL_FQ void m08300_s04 (KERN_ATTR_BASIC ()) m08300s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m08300_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m08300_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -896,7 +896,7 @@ KERNEL_FQ void m08300_s08 (KERN_ATTR_BASIC ()) m08300s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m08300_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m08300_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m08300_a3-pure.cl b/OpenCL/m08300_a3-pure.cl index 38879aaca..000d2e124 100644 --- a/OpenCL/m08300_a3-pure.cl +++ b/OpenCL/m08300_a3-pure.cl @@ -25,7 +25,7 @@ len.s##n++; \ } -KERNEL_FQ void m08300_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m08300_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -198,7 +198,7 @@ KERNEL_FQ void m08300_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m08300_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m08300_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m08400_a0-optimized.cl b/OpenCL/m08400_a0-optimized.cl index ff7f1d720..098d66fa3 100644 --- a/OpenCL/m08400_a0-optimized.cl +++ b/OpenCL/m08400_a0-optimized.cl @@ -28,7 +28,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m08400_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m08400_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -274,15 +274,15 @@ KERNEL_FQ void m08400_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m08400_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m08400_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m08400_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m08400_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m08400_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m08400_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -540,10 +540,10 @@ KERNEL_FQ void m08400_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m08400_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m08400_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m08400_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m08400_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m08400_a0-pure.cl b/OpenCL/m08400_a0-pure.cl index 42adeeb07..a50483266 100644 --- a/OpenCL/m08400_a0-pure.cl +++ b/OpenCL/m08400_a0-pure.cl @@ -28,7 +28,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m08400_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m08400_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -179,7 +179,7 @@ KERNEL_FQ void m08400_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m08400_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m08400_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m08400_a1-optimized.cl b/OpenCL/m08400_a1-optimized.cl index 0cb5adbfd..14e3544df 100644 --- a/OpenCL/m08400_a1-optimized.cl +++ b/OpenCL/m08400_a1-optimized.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m08400_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m08400_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -330,15 +330,15 @@ KERNEL_FQ void m08400_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m08400_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m08400_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m08400_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m08400_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m08400_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m08400_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -654,10 +654,10 @@ KERNEL_FQ void m08400_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m08400_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m08400_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m08400_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m08400_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m08400_a1-pure.cl b/OpenCL/m08400_a1-pure.cl index 3ec471e72..5d08d0f9c 100644 --- a/OpenCL/m08400_a1-pure.cl +++ b/OpenCL/m08400_a1-pure.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m08400_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m08400_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -175,7 +175,7 @@ KERNEL_FQ void m08400_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m08400_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m08400_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m08400_a3-optimized.cl b/OpenCL/m08400_a3-optimized.cl index 6b4288fb4..58c56a1db 100644 --- a/OpenCL/m08400_a3-optimized.cl +++ b/OpenCL/m08400_a3-optimized.cl @@ -452,7 +452,7 @@ DECLSPEC void m08400s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m08400_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m08400_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -522,7 +522,7 @@ KERNEL_FQ void m08400_m04 (KERN_ATTR_BASIC ()) m08400m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m08400_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m08400_m08 (KERN_ATTR_BASIC ()) { /** * modifier @@ -592,7 +592,7 @@ KERNEL_FQ void m08400_m08 (KERN_ATTR_BASIC ()) m08400m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m08400_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m08400_m16 (KERN_ATTR_BASIC ()) { /** * modifier @@ -662,7 +662,7 @@ KERNEL_FQ void m08400_m16 (KERN_ATTR_BASIC ()) m08400m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m08400_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m08400_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -732,7 +732,7 @@ KERNEL_FQ void m08400_s04 (KERN_ATTR_BASIC ()) m08400s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m08400_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m08400_s08 (KERN_ATTR_BASIC ()) { /** * modifier @@ -802,7 +802,7 @@ KERNEL_FQ void m08400_s08 (KERN_ATTR_BASIC ()) m08400s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m08400_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m08400_s16 (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m08400_a3-pure.cl b/OpenCL/m08400_a3-pure.cl index 01db0dcb9..078b69c53 100644 --- a/OpenCL/m08400_a3-pure.cl +++ b/OpenCL/m08400_a3-pure.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m08400_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m08400_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -192,7 +192,7 @@ KERNEL_FQ void m08400_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m08400_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m08400_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m08500_a0-pure.cl b/OpenCL/m08500_a0-pure.cl index 0f4fabad9..c3d9f791d 100644 --- a/OpenCL/m08500_a0-pure.cl +++ b/OpenCL/m08500_a0-pure.cl @@ -522,7 +522,7 @@ DECLSPEC void transform_racf_key (const u32 w0, const u32x w1, PRIVATE_AS u32x * | BOX1 (((w1 >> 24) & 0xff), c_ascii_to_ebcdic_pc) << 24; } -KERNEL_FQ void m08500_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m08500_mxx (KERN_ATTR_RULES ()) { /** * base @@ -620,7 +620,7 @@ KERNEL_FQ void m08500_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m08500_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m08500_sxx (KERN_ATTR_RULES ()) { /** * base diff --git a/OpenCL/m08500_a1-pure.cl b/OpenCL/m08500_a1-pure.cl index 37df9d9df..21f7dc3c0 100644 --- a/OpenCL/m08500_a1-pure.cl +++ b/OpenCL/m08500_a1-pure.cl @@ -520,7 +520,7 @@ DECLSPEC void transform_racf_key (const u32 w0, const u32x w1, PRIVATE_AS u32x * | BOX1 (((w1 >> 24) & 0xff), c_ascii_to_ebcdic_pc) << 24; } -KERNEL_FQ void m08500_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m08500_mxx (KERN_ATTR_BASIC ()) { /** * base @@ -676,7 +676,7 @@ KERNEL_FQ void m08500_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m08500_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m08500_sxx (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m08500_a3-pure.cl b/OpenCL/m08500_a3-pure.cl index 9eb48ad2a..29aff1efc 100644 --- a/OpenCL/m08500_a3-pure.cl +++ b/OpenCL/m08500_a3-pure.cl @@ -652,7 +652,7 @@ DECLSPEC void m08500s (LOCAL_AS u32 (*s_SPtrans)[64], LOCAL_AS u32 (*s_skb)[64], } } -KERNEL_FQ void m08500_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m08500_mxx (KERN_ATTR_VECTOR ()) { /** * base @@ -726,7 +726,7 @@ KERNEL_FQ void m08500_mxx (KERN_ATTR_VECTOR ()) m08500m (s_SPtrans, s_skb, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m08500_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m08500_sxx (KERN_ATTR_VECTOR ()) { /** * base diff --git a/OpenCL/m08600_a0-pure.cl b/OpenCL/m08600_a0-pure.cl index ed65c3ed8..2840a00e8 100644 --- a/OpenCL/m08600_a0-pure.cl +++ b/OpenCL/m08600_a0-pure.cl @@ -265,7 +265,7 @@ DECLSPEC void domino_big_md (PRIVATE_AS const u32 *saved_key, const u32 size, PR mdtransform_norecalc (state, checksum, s_lotus_magic_table); } -KERNEL_FQ void m08600_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m08600_mxx (KERN_ATTR_RULES ()) { /** * base @@ -329,7 +329,7 @@ KERNEL_FQ void m08600_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m08600_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m08600_sxx (KERN_ATTR_RULES ()) { /** * base diff --git a/OpenCL/m08600_a1-pure.cl b/OpenCL/m08600_a1-pure.cl index 006d46e5e..e50585d39 100644 --- a/OpenCL/m08600_a1-pure.cl +++ b/OpenCL/m08600_a1-pure.cl @@ -263,7 +263,7 @@ DECLSPEC void domino_big_md (PRIVATE_AS const u32 *saved_key, const u32 size, PR mdtransform_norecalc (state, checksum, s_lotus_magic_table); } -KERNEL_FQ void m08600_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m08600_mxx (KERN_ATTR_BASIC ()) { /** * base @@ -387,7 +387,7 @@ KERNEL_FQ void m08600_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m08600_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m08600_sxx (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m08600_a3-pure.cl b/OpenCL/m08600_a3-pure.cl index 1adc4deb4..5a3c801d7 100644 --- a/OpenCL/m08600_a3-pure.cl +++ b/OpenCL/m08600_a3-pure.cl @@ -362,7 +362,7 @@ DECLSPEC void m08600s (LOCAL_AS u32 *s_lotus_magic_table, PRIVATE_AS u32 *w, con } } -KERNEL_FQ void m08600_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m08600_mxx (KERN_ATTR_VECTOR ()) { /** * base @@ -419,7 +419,7 @@ KERNEL_FQ void m08600_mxx (KERN_ATTR_VECTOR ()) m08600m (s_lotus_magic_table, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m08600_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m08600_sxx (KERN_ATTR_VECTOR ()) { /** * base diff --git a/OpenCL/m08700_a0-optimized.cl b/OpenCL/m08700_a0-optimized.cl index 19c75e923..69660d4ca 100644 --- a/OpenCL/m08700_a0-optimized.cl +++ b/OpenCL/m08700_a0-optimized.cl @@ -302,7 +302,7 @@ DECLSPEC void domino_big_md (PRIVATE_AS const u32x *saved_key, const u32 size, P mdtransform_norecalc (state, checksum, s_lotus_magic_table); } -KERNEL_FQ void m08700_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m08700_m04 (KERN_ATTR_RULES ()) { /** * base @@ -481,15 +481,15 @@ KERNEL_FQ void m08700_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m08700_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m08700_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m08700_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m08700_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m08700_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m08700_s04 (KERN_ATTR_RULES ()) { /** * base @@ -680,10 +680,10 @@ KERNEL_FQ void m08700_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m08700_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m08700_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m08700_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m08700_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m08700_a1-optimized.cl b/OpenCL/m08700_a1-optimized.cl index 41d0b368b..6cea71887 100644 --- a/OpenCL/m08700_a1-optimized.cl +++ b/OpenCL/m08700_a1-optimized.cl @@ -300,7 +300,7 @@ DECLSPEC void domino_big_md (PRIVATE_AS const u32x *saved_key, const u32 size, P mdtransform_norecalc (state, checksum, s_lotus_magic_table); } -KERNEL_FQ void m08700_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m08700_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -539,15 +539,15 @@ KERNEL_FQ void m08700_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m08700_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m08700_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m08700_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m08700_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m08700_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m08700_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -798,10 +798,10 @@ KERNEL_FQ void m08700_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m08700_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m08700_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m08700_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m08700_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m08700_a3-optimized.cl b/OpenCL/m08700_a3-optimized.cl index b2af8bec9..3fc49c389 100644 --- a/OpenCL/m08700_a3-optimized.cl +++ b/OpenCL/m08700_a3-optimized.cl @@ -573,7 +573,7 @@ DECLSPEC void m08700s (LOCAL_AS u32 *s_lotus_magic_table, LOCAL_AS u32 *l_bin2as } } -KERNEL_FQ void m08700_m04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m08700_m04 (KERN_ATTR_VECTOR ()) { /** * base @@ -641,7 +641,7 @@ KERNEL_FQ void m08700_m04 (KERN_ATTR_VECTOR ()) m08700m (s_lotus_magic_table, l_bin2asc, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m08700_m08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m08700_m08 (KERN_ATTR_VECTOR ()) { /** * base @@ -709,7 +709,7 @@ KERNEL_FQ void m08700_m08 (KERN_ATTR_VECTOR ()) m08700m (s_lotus_magic_table, l_bin2asc, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m08700_m16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m08700_m16 (KERN_ATTR_VECTOR ()) { /** * base @@ -777,7 +777,7 @@ KERNEL_FQ void m08700_m16 (KERN_ATTR_VECTOR ()) m08700m (s_lotus_magic_table, l_bin2asc, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m08700_s04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m08700_s04 (KERN_ATTR_VECTOR ()) { /** * base @@ -845,7 +845,7 @@ KERNEL_FQ void m08700_s04 (KERN_ATTR_VECTOR ()) m08700s (s_lotus_magic_table, l_bin2asc, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m08700_s08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m08700_s08 (KERN_ATTR_VECTOR ()) { /** * base @@ -913,7 +913,7 @@ KERNEL_FQ void m08700_s08 (KERN_ATTR_VECTOR ()) m08700s (s_lotus_magic_table, l_bin2asc, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m08700_s16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m08700_s16 (KERN_ATTR_VECTOR ()) { /** * base diff --git a/OpenCL/m08800-pure.cl b/OpenCL/m08800-pure.cl index cbd3a250d..43c1e281a 100644 --- a/OpenCL/m08800-pure.cl +++ b/OpenCL/m08800-pure.cl @@ -68,7 +68,7 @@ DECLSPEC void hmac_sha1_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE sha1_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m08800_init (KERN_ATTR_TMPS_ESALT (androidfde_tmp_t, androidfde_t)) +KERNEL_FQ KERNEL_FA void m08800_init (KERN_ATTR_TMPS_ESALT (androidfde_tmp_t, androidfde_t)) { /** * base @@ -140,7 +140,7 @@ KERNEL_FQ void m08800_init (KERN_ATTR_TMPS_ESALT (androidfde_tmp_t, androidfde_t } } -KERNEL_FQ void m08800_loop (KERN_ATTR_TMPS_ESALT (androidfde_tmp_t, androidfde_t)) +KERNEL_FQ KERNEL_FA void m08800_loop (KERN_ATTR_TMPS_ESALT (androidfde_tmp_t, androidfde_t)) { const u64 gid = get_global_id (0); @@ -225,7 +225,7 @@ KERNEL_FQ void m08800_loop (KERN_ATTR_TMPS_ESALT (androidfde_tmp_t, androidfde_t } } -KERNEL_FQ void m08800_comp (KERN_ATTR_TMPS_ESALT (androidfde_tmp_t, androidfde_t)) +KERNEL_FQ KERNEL_FA void m08800_comp (KERN_ATTR_TMPS_ESALT (androidfde_tmp_t, androidfde_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m08900-pure.cl b/OpenCL/m08900-pure.cl index b74b3d9c6..126f421b1 100644 --- a/OpenCL/m08900-pure.cl +++ b/OpenCL/m08900-pure.cl @@ -9,563 +9,72 @@ #include M2S(INCLUDE_PATH/inc_platform.cl) #include M2S(INCLUDE_PATH/inc_common.cl) #include M2S(INCLUDE_PATH/inc_hash_sha256.cl) +#include M2S(INCLUDE_PATH/inc_hash_scrypt.cl) #endif #define COMPARE_S M2S(INCLUDE_PATH/inc_comp_single.cl) #define COMPARE_M M2S(INCLUDE_PATH/inc_comp_multi.cl) -typedef struct +KERNEL_FQ KERNEL_FA void m08900_init (KERN_ATTR_TMPS (scrypt_tmp_t)) { - #ifndef SCRYPT_TMP_ELEM - #define SCRYPT_TMP_ELEM 1 - #endif - - uint4 P[SCRYPT_TMP_ELEM]; - -} scrypt_tmp_t; - -#if defined IS_CUDA || defined IS_HIP - -inline __device__ uint4 operator & (const uint4 a, const u32 b) { return make_uint4 ((a.x & b ), (a.y & b ), (a.z & b ), (a.w & b )); } -inline __device__ uint4 operator << (const uint4 a, const u32 b) { return make_uint4 ((a.x << b ), (a.y << b ), (a.z << b ), (a.w << b )); } -inline __device__ uint4 operator >> (const uint4 a, const u32 b) { return make_uint4 ((a.x >> b ), (a.y >> b ), (a.z >> b ), (a.w >> b )); } -inline __device__ uint4 operator + (const uint4 a, const uint4 b) { return make_uint4 ((a.x + b.x), (a.y + b.y), (a.z + b.z), (a.w + b.w)); } -inline __device__ uint4 operator ^ (const uint4 a, const uint4 b) { return make_uint4 ((a.x ^ b.x), (a.y ^ b.y), (a.z ^ b.z), (a.w ^ b.w)); } -inline __device__ uint4 operator | (const uint4 a, const uint4 b) { return make_uint4 ((a.x | b.x), (a.y | b.y), (a.z | b.z), (a.w | b.w)); } -inline __device__ void operator ^= ( uint4 &a, const uint4 b) { a.x ^= b.x; a.y ^= b.y; a.z ^= b.z; a.w ^= b.w; } - -inline __device__ uint4 rotate (const uint4 a, const int n) -{ - return ((a << n) | ((a >> (32 - n)))); -} - -#endif - -DECLSPEC uint4 hc_swap32_4 (uint4 v) -{ - return (rotate ((v & 0x00FF00FF), 24u) | rotate ((v & 0xFF00FF00), 8u)); -} - -#define GET_SCRYPT_CNT(r,p) (2 * (r) * 16 * (p)) -#define GET_SMIX_CNT(r,N) (2 * (r) * 16 * (N)) -#define GET_STATE_CNT(r) (2 * (r) * 16) - -#define SCRYPT_CNT GET_SCRYPT_CNT (SCRYPT_R, SCRYPT_P) -#define SCRYPT_CNT4 (SCRYPT_CNT / 4) -#define STATE_CNT GET_STATE_CNT (SCRYPT_R) -#define STATE_CNT4 (STATE_CNT / 4) - -#define ADD_ROTATE_XOR(r,i1,i2,s) (r) ^= rotate ((i1) + (i2), (s)); - -#if defined IS_CUDA || defined IS_HIP - -#define SALSA20_2R() \ -{ \ - ADD_ROTATE_XOR (X1, X0, X3, 7); \ - ADD_ROTATE_XOR (X2, X1, X0, 9); \ - ADD_ROTATE_XOR (X3, X2, X1, 13); \ - ADD_ROTATE_XOR (X0, X3, X2, 18); \ - \ - X1 = make_uint4 (X1.w, X1.x, X1.y, X1.z); \ - X2 = make_uint4 (X2.z, X2.w, X2.x, X2.y); \ - X3 = make_uint4 (X3.y, X3.z, X3.w, X3.x); \ - \ - ADD_ROTATE_XOR (X3, X0, X1, 7); \ - ADD_ROTATE_XOR (X2, X3, X0, 9); \ - ADD_ROTATE_XOR (X1, X2, X3, 13); \ - ADD_ROTATE_XOR (X0, X1, X2, 18); \ - \ - X1 = make_uint4 (X1.y, X1.z, X1.w, X1.x); \ - X2 = make_uint4 (X2.z, X2.w, X2.x, X2.y); \ - X3 = make_uint4 (X3.w, X3.x, X3.y, X3.z); \ -} -#elif defined IS_METAL -#define SALSA20_2R() \ -{ \ - ADD_ROTATE_XOR (X1, X0, X3, 7); \ - ADD_ROTATE_XOR (X2, X1, X0, 9); \ - ADD_ROTATE_XOR (X3, X2, X1, 13); \ - ADD_ROTATE_XOR (X0, X3, X2, 18); \ - \ - X1 = X1.wxyz; \ - X2 = X2.zwxy; \ - X3 = X3.yzwx; \ - \ - ADD_ROTATE_XOR (X3, X0, X1, 7); \ - ADD_ROTATE_XOR (X2, X3, X0, 9); \ - ADD_ROTATE_XOR (X1, X2, X3, 13); \ - ADD_ROTATE_XOR (X0, X1, X2, 18); \ - \ - X1 = X1.yzwx; \ - X2 = X2.zwxy; \ - X3 = X3.wxyz; \ -} -#else -#define SALSA20_2R() \ -{ \ - ADD_ROTATE_XOR (X1, X0, X3, 7); \ - ADD_ROTATE_XOR (X2, X1, X0, 9); \ - ADD_ROTATE_XOR (X3, X2, X1, 13); \ - ADD_ROTATE_XOR (X0, X3, X2, 18); \ - \ - X1 = X1.s3012; \ - X2 = X2.s2301; \ - X3 = X3.s1230; \ - \ - ADD_ROTATE_XOR (X3, X0, X1, 7); \ - ADD_ROTATE_XOR (X2, X3, X0, 9); \ - ADD_ROTATE_XOR (X1, X2, X3, 13); \ - ADD_ROTATE_XOR (X0, X1, X2, 18); \ - \ - X1 = X1.s1230; \ - X2 = X2.s2301; \ - X3 = X3.s3012; \ -} -#endif - -#define Coord(xd4,y,z) (((xd4) * ySIZE * zSIZE) + ((y) * zSIZE) + (z)) -#define CO Coord(xd4,y,z) - -DECLSPEC void salsa_r (PRIVATE_AS uint4 *TI) -{ - #if SCRYPT_R > 1 - - uint4 TT[STATE_CNT4 / 2]; - - for (int dst_off = 0, src_off = 4; src_off < STATE_CNT4; dst_off += 4, src_off += 8) - { - TT[dst_off + 0] = TI[src_off + 0]; - TT[dst_off + 1] = TI[src_off + 1]; - TT[dst_off + 2] = TI[src_off + 2]; - TT[dst_off + 3] = TI[src_off + 3]; - } - - for (int dst_off = 4, src_off = 8; src_off < STATE_CNT4; dst_off += 4, src_off += 8) - { - TI[dst_off + 0] = TI[src_off + 0]; - TI[dst_off + 1] = TI[src_off + 1]; - TI[dst_off + 2] = TI[src_off + 2]; - TI[dst_off + 3] = TI[src_off + 3]; - } - - for (int dst_off = STATE_CNT4 / 2, src_off = 0; dst_off < STATE_CNT4; dst_off += 4, src_off += 4) - { - TI[dst_off + 0] = TT[src_off + 0]; - TI[dst_off + 1] = TT[src_off + 1]; - TI[dst_off + 2] = TT[src_off + 2]; - TI[dst_off + 3] = TT[src_off + 3]; - } - - #endif - - uint4 R0 = TI[STATE_CNT4 - 4]; - uint4 R1 = TI[STATE_CNT4 - 3]; - uint4 R2 = TI[STATE_CNT4 - 2]; - uint4 R3 = TI[STATE_CNT4 - 1]; - - for (int i = 0; i < STATE_CNT4; i += 4) - { - uint4 Y0 = TI[i + 0]; - uint4 Y1 = TI[i + 1]; - uint4 Y2 = TI[i + 2]; - uint4 Y3 = TI[i + 3]; - - R0 = R0 ^ Y0; - R1 = R1 ^ Y1; - R2 = R2 ^ Y2; - R3 = R3 ^ Y3; - - uint4 X0 = R0; - uint4 X1 = R1; - uint4 X2 = R2; - uint4 X3 = R3; - - SALSA20_2R (); - SALSA20_2R (); - SALSA20_2R (); - SALSA20_2R (); - - R0 = R0 + X0; - R1 = R1 + X1; - R2 = R2 + X2; - R3 = R3 + X3; - - TI[i + 0] = R0; - TI[i + 1] = R1; - TI[i + 2] = R2; - TI[i + 3] = R3; - } -} - -DECLSPEC void scrypt_smix_init (PRIVATE_AS uint4 *X, GLOBAL_AS uint4 *V0, GLOBAL_AS uint4 *V1, GLOBAL_AS uint4 *V2, GLOBAL_AS uint4 *V3, const u64 gid) -{ - const u32 ySIZE = SCRYPT_N / SCRYPT_TMTO; - const u32 zSIZE = STATE_CNT4; - - const u32 x = (u32) gid; - - const u32 xd4 = x / 4; - const u32 xm4 = x & 3; - - GLOBAL_AS uint4 *V; - - switch (xm4) - { - case 0: V = V0; break; - case 1: V = V1; break; - case 2: V = V2; break; - case 3: V = V3; break; - } - - #if SCRYPT_R > 1 - - uint4 TT[STATE_CNT4]; - - for (int z = 0; z < zSIZE; z++) TT[z] = X[z]; - - for (int dst_off = 8, src_off = 4; dst_off < zSIZE; dst_off += 8, src_off += 4) - { - X[dst_off + 0] = TT[src_off + 0]; - X[dst_off + 1] = TT[src_off + 1]; - X[dst_off + 2] = TT[src_off + 2]; - X[dst_off + 3] = TT[src_off + 3]; - } - - for (int dst_off = 4, src_off = zSIZE / 2; dst_off < zSIZE; dst_off += 8, src_off += 4) - { - X[dst_off + 0] = TT[src_off + 0]; - X[dst_off + 1] = TT[src_off + 1]; - X[dst_off + 2] = TT[src_off + 2]; - X[dst_off + 3] = TT[src_off + 3]; - } - - #endif - - for (u32 y = 0; y < ySIZE; y++) - { - for (u32 z = 0; z < zSIZE; z++) V[CO] = X[z]; - - for (u32 i = 0; i < SCRYPT_TMTO; i++) salsa_r (X); - } -} - -DECLSPEC void scrypt_smix_loop (PRIVATE_AS uint4 *X, GLOBAL_AS uint4 *V0, GLOBAL_AS uint4 *V1, GLOBAL_AS uint4 *V2, GLOBAL_AS uint4 *V3, const u64 gid) -{ - const u32 ySIZE = SCRYPT_N / SCRYPT_TMTO; - const u32 zSIZE = STATE_CNT4; - - const u32 x = (u32) gid; - - const u32 xd4 = x / 4; - const u32 xm4 = x & 3; - - GLOBAL_AS uint4 *V; - - switch (xm4) - { - case 0: V = V0; break; - case 1: V = V1; break; - case 2: V = V2; break; - case 3: V = V3; break; - } - - // note: fixed 1024 iterations = forced -u 1024 - - for (u32 N_pos = 0; N_pos < 1024; N_pos++) - { - const u32 k = X[zSIZE - 4].x & (SCRYPT_N - 1); - - const u32 y = k / SCRYPT_TMTO; - - const u32 km = k - (y * SCRYPT_TMTO); - - uint4 T[STATE_CNT4]; - - for (u32 z = 0; z < zSIZE; z++) T[z] = V[CO]; - - for (u32 i = 0; i < km; i++) salsa_r (T); - - for (u32 z = 0; z < zSIZE; z++) X[z] ^= T[z]; - - salsa_r (X); - } -} - -KERNEL_FQ void m08900_init (KERN_ATTR_TMPS (scrypt_tmp_t)) -{ - /** - * base - */ - const u64 gid = get_global_id (0); if (gid >= GID_CNT) return; - sha256_hmac_ctx_t sha256_hmac_ctx; + scrypt_pbkdf2_ggg (pws[gid].i, pws[gid].pw_len, salt_bufs[SALT_POS_HOST].salt_buf, salt_bufs[SALT_POS_HOST].salt_len, tmps[gid].in, SCRYPT_SZ); - sha256_hmac_init_global_swap (&sha256_hmac_ctx, pws[gid].i, pws[gid].pw_len); - - sha256_hmac_update_global_swap (&sha256_hmac_ctx, salt_bufs[SALT_POS_HOST].salt_buf, salt_bufs[SALT_POS_HOST].salt_len); - - for (u32 i = 0, j = 1, k = 0; i < SCRYPT_CNT; i += 8, j += 1, k += 2) - { - sha256_hmac_ctx_t sha256_hmac_ctx2 = sha256_hmac_ctx; - - u32 w0[4]; - u32 w1[4]; - u32 w2[4]; - u32 w3[4]; - - w0[0] = j; - w0[1] = 0; - w0[2] = 0; - w0[3] = 0; - w1[0] = 0; - w1[1] = 0; - w1[2] = 0; - w1[3] = 0; - w2[0] = 0; - w2[1] = 0; - w2[2] = 0; - w2[3] = 0; - w3[0] = 0; - w3[1] = 0; - w3[2] = 0; - w3[3] = 0; - - sha256_hmac_update_64 (&sha256_hmac_ctx2, w0, w1, w2, w3, 4); - - sha256_hmac_final (&sha256_hmac_ctx2); - - u32 digest[8]; - - digest[0] = sha256_hmac_ctx2.opad.h[0]; - digest[1] = sha256_hmac_ctx2.opad.h[1]; - digest[2] = sha256_hmac_ctx2.opad.h[2]; - digest[3] = sha256_hmac_ctx2.opad.h[3]; - digest[4] = sha256_hmac_ctx2.opad.h[4]; - digest[5] = sha256_hmac_ctx2.opad.h[5]; - digest[6] = sha256_hmac_ctx2.opad.h[6]; - digest[7] = sha256_hmac_ctx2.opad.h[7]; - - #if defined IS_CUDA || defined IS_HIP - const uint4 tmp0 = make_uint4 (digest[0], digest[1], digest[2], digest[3]); - const uint4 tmp1 = make_uint4 (digest[4], digest[5], digest[6], digest[7]); - #elif defined IS_METAL - const uint4 tmp0 = uint4 (digest[0], digest[1], digest[2], digest[3]); - const uint4 tmp1 = uint4 (digest[4], digest[5], digest[6], digest[7]); - #else - const uint4 tmp0 = (uint4) (digest[0], digest[1], digest[2], digest[3]); - const uint4 tmp1 = (uint4) (digest[4], digest[5], digest[6], digest[7]); - #endif - - tmps[gid].P[k + 0] = tmp0; - tmps[gid].P[k + 1] = tmp1; - } - - for (u32 l = 0; l < SCRYPT_CNT4; l += 4) - { - uint4 T[4]; - - T[0] = tmps[gid].P[l + 0]; - T[1] = tmps[gid].P[l + 1]; - T[2] = tmps[gid].P[l + 2]; - T[3] = tmps[gid].P[l + 3]; - - T[0] = hc_swap32_4 (T[0]); - T[1] = hc_swap32_4 (T[1]); - T[2] = hc_swap32_4 (T[2]); - T[3] = hc_swap32_4 (T[3]); - - uint4 X[4]; - - #if defined IS_CUDA || defined IS_HIP - X[0] = make_uint4 (T[0].x, T[1].y, T[2].z, T[3].w); - X[1] = make_uint4 (T[1].x, T[2].y, T[3].z, T[0].w); - X[2] = make_uint4 (T[2].x, T[3].y, T[0].z, T[1].w); - X[3] = make_uint4 (T[3].x, T[0].y, T[1].z, T[2].w); - #elif defined IS_METAL - X[0] = uint4 (T[0].x, T[1].y, T[2].z, T[3].w); - X[1] = uint4 (T[1].x, T[2].y, T[3].z, T[0].w); - X[2] = uint4 (T[2].x, T[3].y, T[0].z, T[1].w); - X[3] = uint4 (T[3].x, T[0].y, T[1].z, T[2].w); - #else - X[0] = (uint4) (T[0].x, T[1].y, T[2].z, T[3].w); - X[1] = (uint4) (T[1].x, T[2].y, T[3].z, T[0].w); - X[2] = (uint4) (T[2].x, T[3].y, T[0].z, T[1].w); - X[3] = (uint4) (T[3].x, T[0].y, T[1].z, T[2].w); - #endif - - tmps[gid].P[l + 0] = X[0]; - tmps[gid].P[l + 1] = X[1]; - tmps[gid].P[l + 2] = X[2]; - tmps[gid].P[l + 3] = X[3]; - } + scrypt_blockmix_in (tmps[gid].in, tmps[gid].out, SCRYPT_SZ); } -KERNEL_FQ void m08900_loop_prepare (KERN_ATTR_TMPS (scrypt_tmp_t)) -{ - /** - * base - */ - - const u64 gid = get_global_id (0); - const u64 lid = get_local_id (0); - - if (gid >= GID_CNT) return; - - // SCRYPT part, init V - - GLOBAL_AS uint4 *d_scrypt0_buf = (GLOBAL_AS uint4 *) d_extra0_buf; - GLOBAL_AS uint4 *d_scrypt1_buf = (GLOBAL_AS uint4 *) d_extra1_buf; - GLOBAL_AS uint4 *d_scrypt2_buf = (GLOBAL_AS uint4 *) d_extra2_buf; - GLOBAL_AS uint4 *d_scrypt3_buf = (GLOBAL_AS uint4 *) d_extra3_buf; - - uint4 X[STATE_CNT4]; - - const u32 P_offset = SALT_REPEAT * STATE_CNT4; - - GLOBAL_AS uint4 *P = tmps[gid].P + P_offset; - - for (int z = 0; z < STATE_CNT4; z++) X[z] = P[z]; - - scrypt_smix_init (X, d_scrypt0_buf, d_scrypt1_buf, d_scrypt2_buf, d_scrypt3_buf, gid); - - for (int z = 0; z < STATE_CNT4; z++) P[z] = X[z]; -} - -KERNEL_FQ void m08900_loop (KERN_ATTR_TMPS (scrypt_tmp_t)) +KERNEL_FQ KERNEL_FA void m08900_loop_prepare (KERN_ATTR_TMPS (scrypt_tmp_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); + const u64 lsz = get_local_size (0); + const u64 bid = get_group_id (0); if (gid >= GID_CNT) return; - GLOBAL_AS uint4 *d_scrypt0_buf = (GLOBAL_AS uint4 *) d_extra0_buf; - GLOBAL_AS uint4 *d_scrypt1_buf = (GLOBAL_AS uint4 *) d_extra1_buf; - GLOBAL_AS uint4 *d_scrypt2_buf = (GLOBAL_AS uint4 *) d_extra2_buf; - GLOBAL_AS uint4 *d_scrypt3_buf = (GLOBAL_AS uint4 *) d_extra3_buf; + u32 X[STATE_CNT4]; - uint4 X[STATE_CNT4]; + GLOBAL_AS u32 *P = tmps[gid].out + (SALT_REPEAT * STATE_CNT4); - const u32 P_offset = SALT_REPEAT * STATE_CNT4; - - GLOBAL_AS uint4 *P = tmps[gid].P + P_offset; - - for (int z = 0; z < STATE_CNT4; z++) X[z] = P[z]; - - scrypt_smix_loop (X, d_scrypt0_buf, d_scrypt1_buf, d_scrypt2_buf, d_scrypt3_buf, gid); - - for (int z = 0; z < STATE_CNT4; z++) P[z] = X[z]; + scrypt_smix_init (P, X, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, gid, lid, lsz, bid); } -KERNEL_FQ void m08900_comp (KERN_ATTR_TMPS (scrypt_tmp_t)) +KERNEL_FQ KERNEL_FA void m08900_loop (KERN_ATTR_TMPS (scrypt_tmp_t)) { - /** - * base - */ - const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); + const u64 lsz = get_local_size (0); + const u64 bid = get_group_id (0); if (gid >= GID_CNT) return; - /** - * 2nd pbkdf2, creates B - */ + u32 X[STATE_CNT4]; + u32 T[STATE_CNT4]; - u32 w0[4]; - u32 w1[4]; - u32 w2[4]; - u32 w3[4]; + GLOBAL_AS u32 *P = tmps[gid].out + (SALT_REPEAT * STATE_CNT4); - sha256_hmac_ctx_t ctx; + scrypt_smix_loop (P, X, T, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, gid, lid, lsz, bid); +} - sha256_hmac_init_global_swap (&ctx, pws[gid].i, pws[gid].pw_len); +KERNEL_FQ KERNEL_FA void m08900_comp (KERN_ATTR_TMPS (scrypt_tmp_t)) +{ + const u64 gid = get_global_id (0); - for (u32 i = 0; i < SCRYPT_CNT4; i += STATE_CNT4) - { - for (u32 j = 0; j < (STATE_CNT4 * 2); j += 8) - { - uint4 X[4]; + if (gid >= GID_CNT) return; - const u32 l = i + j + ((j >= STATE_CNT4) ? (4 - STATE_CNT4) : 0); + scrypt_blockmix_out (tmps[gid].out, tmps[gid].in, SCRYPT_SZ); - X[0] = tmps[gid].P[l + 0]; - X[1] = tmps[gid].P[l + 1]; - X[2] = tmps[gid].P[l + 2]; - X[3] = tmps[gid].P[l + 3]; + u32 out[4]; - uint4 T[4]; + scrypt_pbkdf2_ggp (pws[gid].i, pws[gid].pw_len, tmps[gid].in, SCRYPT_SZ, out, 16); - #if defined IS_CUDA || defined IS_HIP - T[0] = make_uint4 (X[0].x, X[3].y, X[2].z, X[1].w); - T[1] = make_uint4 (X[1].x, X[0].y, X[3].z, X[2].w); - T[2] = make_uint4 (X[2].x, X[1].y, X[0].z, X[3].w); - T[3] = make_uint4 (X[3].x, X[2].y, X[1].z, X[0].w); - #elif defined IS_METAL - T[0] = uint4 (X[0].x, X[3].y, X[2].z, X[1].w); - T[1] = uint4 (X[1].x, X[0].y, X[3].z, X[2].w); - T[2] = uint4 (X[2].x, X[1].y, X[0].z, X[3].w); - T[3] = uint4 (X[3].x, X[2].y, X[1].z, X[0].w); - #else - T[0] = (uint4) (X[0].x, X[3].y, X[2].z, X[1].w); - T[1] = (uint4) (X[1].x, X[0].y, X[3].z, X[2].w); - T[2] = (uint4) (X[2].x, X[1].y, X[0].z, X[3].w); - T[3] = (uint4) (X[3].x, X[2].y, X[1].z, X[0].w); - #endif - - T[0] = hc_swap32_4 (T[0]); - T[1] = hc_swap32_4 (T[1]); - T[2] = hc_swap32_4 (T[2]); - T[3] = hc_swap32_4 (T[3]); - - w0[0] = T[0].x; - w0[1] = T[0].y; - w0[2] = T[0].z; - w0[3] = T[0].w; - w1[0] = T[1].x; - w1[1] = T[1].y; - w1[2] = T[1].z; - w1[3] = T[1].w; - w2[0] = T[2].x; - w2[1] = T[2].y; - w2[2] = T[2].z; - w2[3] = T[2].w; - w3[0] = T[3].x; - w3[1] = T[3].y; - w3[2] = T[3].z; - w3[3] = T[3].w; - - sha256_hmac_update_64 (&ctx, w0, w1, w2, w3, 64); - } - } - - w0[0] = 1; - w0[1] = 0; - w0[2] = 0; - w0[3] = 0; - w1[0] = 0; - w1[1] = 0; - w1[2] = 0; - w1[3] = 0; - w2[0] = 0; - w2[1] = 0; - w2[2] = 0; - w2[3] = 0; - w3[0] = 0; - w3[1] = 0; - w3[2] = 0; - w3[3] = 0; - - sha256_hmac_update_64 (&ctx, w0, w1, w2, w3, 4); - - sha256_hmac_final (&ctx); - - const u32 r0 = hc_swap32_S (ctx.opad.h[DGST_R0]); - const u32 r1 = hc_swap32_S (ctx.opad.h[DGST_R1]); - const u32 r2 = hc_swap32_S (ctx.opad.h[DGST_R2]); - const u32 r3 = hc_swap32_S (ctx.opad.h[DGST_R3]); + const u32 r0 = out[0]; + const u32 r1 = out[1]; + const u32 r2 = out[2]; + const u32 r3 = out[3]; #define il_pos 0 diff --git a/OpenCL/m09000-pure.cl b/OpenCL/m09000-pure.cl index 999f57bfe..d8ef5f6a4 100644 --- a/OpenCL/m09000-pure.cl +++ b/OpenCL/m09000-pure.cl @@ -406,7 +406,7 @@ DECLSPEC inline void SET_KEY32 (LOCAL_AS u32 *S, const u64 key, const u32 val) extern __shared__ u32 S[]; #endif -KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m09000_init (KERN_ATTR_TMPS (pwsafe2_tmp_t)) +KERNEL_FQ KERNEL_FA void m09000_init (KERN_ATTR_TMPS (pwsafe2_tmp_t)) { /** * base @@ -636,7 +636,7 @@ KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m09000_init (KERN_ATTR_TMPS } } -KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m09000_loop (KERN_ATTR_TMPS (pwsafe2_tmp_t)) +KERNEL_FQ KERNEL_FA void m09000_loop (KERN_ATTR_TMPS (pwsafe2_tmp_t)) { /** * base @@ -705,7 +705,7 @@ KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m09000_loop (KERN_ATTR_TMPS tmps[gid].digest[1] = R0; } -KERNEL_FQ void m09000_comp (KERN_ATTR_TMPS (pwsafe2_tmp_t)) +KERNEL_FQ KERNEL_FA void m09000_comp (KERN_ATTR_TMPS (pwsafe2_tmp_t)) { /** * base diff --git a/OpenCL/m09100-pure.cl b/OpenCL/m09100-pure.cl index 307dcfab8..794e4f971 100644 --- a/OpenCL/m09100-pure.cl +++ b/OpenCL/m09100-pure.cl @@ -424,7 +424,7 @@ DECLSPEC void hmac_sha1_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE sha1_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m09100_init (KERN_ATTR_TMPS (lotus8_tmp_t)) +KERNEL_FQ KERNEL_FA void m09100_init (KERN_ATTR_TMPS (lotus8_tmp_t)) { /** * base @@ -696,7 +696,7 @@ KERNEL_FQ void m09100_init (KERN_ATTR_TMPS (lotus8_tmp_t)) } } -KERNEL_FQ void m09100_loop (KERN_ATTR_TMPS (lotus8_tmp_t)) +KERNEL_FQ KERNEL_FA void m09100_loop (KERN_ATTR_TMPS (lotus8_tmp_t)) { const u64 gid = get_global_id (0); @@ -781,7 +781,7 @@ KERNEL_FQ void m09100_loop (KERN_ATTR_TMPS (lotus8_tmp_t)) } } -KERNEL_FQ void m09100_comp (KERN_ATTR_TMPS (lotus8_tmp_t)) +KERNEL_FQ KERNEL_FA void m09100_comp (KERN_ATTR_TMPS (lotus8_tmp_t)) { /** * base diff --git a/OpenCL/m09400-pure.cl b/OpenCL/m09400-pure.cl index be2626141..523d0f1ca 100644 --- a/OpenCL/m09400-pure.cl +++ b/OpenCL/m09400-pure.cl @@ -33,7 +33,7 @@ typedef struct office2007 } office2007_t; -KERNEL_FQ void m09400_init (KERN_ATTR_TMPS_ESALT (office2007_tmp_t, office2007_t)) +KERNEL_FQ KERNEL_FA void m09400_init (KERN_ATTR_TMPS_ESALT (office2007_tmp_t, office2007_t)) { /** * base @@ -60,7 +60,7 @@ KERNEL_FQ void m09400_init (KERN_ATTR_TMPS_ESALT (office2007_tmp_t, office2007_t tmps[gid].out[4] = ctx.h[4]; } -KERNEL_FQ void m09400_loop (KERN_ATTR_TMPS_ESALT (office2007_tmp_t, office2007_t)) +KERNEL_FQ KERNEL_FA void m09400_loop (KERN_ATTR_TMPS_ESALT (office2007_tmp_t, office2007_t)) { const u64 gid = get_global_id (0); @@ -127,7 +127,7 @@ KERNEL_FQ void m09400_loop (KERN_ATTR_TMPS_ESALT (office2007_tmp_t, office2007_t unpackv (tmps, out, gid, 4, t4); } -KERNEL_FQ void m09400_comp (KERN_ATTR_TMPS_ESALT (office2007_tmp_t, office2007_t)) +KERNEL_FQ KERNEL_FA void m09400_comp (KERN_ATTR_TMPS_ESALT (office2007_tmp_t, office2007_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m09500-pure.cl b/OpenCL/m09500-pure.cl index e009a1b80..03fbe15cf 100644 --- a/OpenCL/m09500-pure.cl +++ b/OpenCL/m09500-pure.cl @@ -31,7 +31,7 @@ typedef struct office2010_tmp } office2010_tmp_t; -KERNEL_FQ void m09500_init (KERN_ATTR_TMPS_ESALT (office2010_tmp_t, office2010_t)) +KERNEL_FQ KERNEL_FA void m09500_init (KERN_ATTR_TMPS_ESALT (office2010_tmp_t, office2010_t)) { /** * base @@ -58,7 +58,7 @@ KERNEL_FQ void m09500_init (KERN_ATTR_TMPS_ESALT (office2010_tmp_t, office2010_t tmps[gid].out[4] = ctx.h[4]; } -KERNEL_FQ void m09500_loop (KERN_ATTR_TMPS_ESALT (office2010_tmp_t, office2010_t)) +KERNEL_FQ KERNEL_FA void m09500_loop (KERN_ATTR_TMPS_ESALT (office2010_tmp_t, office2010_t)) { const u64 gid = get_global_id (0); @@ -125,7 +125,7 @@ KERNEL_FQ void m09500_loop (KERN_ATTR_TMPS_ESALT (office2010_tmp_t, office2010_t unpackv (tmps, out, gid, 4, t4); } -KERNEL_FQ void m09500_comp (KERN_ATTR_TMPS_ESALT (office2010_tmp_t, office2010_t)) +KERNEL_FQ KERNEL_FA void m09500_comp (KERN_ATTR_TMPS_ESALT (office2010_tmp_t, office2010_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m09600-pure.cl b/OpenCL/m09600-pure.cl index aeb397a20..e4c2510ea 100644 --- a/OpenCL/m09600-pure.cl +++ b/OpenCL/m09600-pure.cl @@ -31,7 +31,7 @@ typedef struct office2013 } office2013_t; -KERNEL_FQ void m09600_init (KERN_ATTR_TMPS_ESALT (office2013_tmp_t, office2013_t)) +KERNEL_FQ KERNEL_FA void m09600_init (KERN_ATTR_TMPS_ESALT (office2013_tmp_t, office2013_t)) { /** * base @@ -61,7 +61,7 @@ KERNEL_FQ void m09600_init (KERN_ATTR_TMPS_ESALT (office2013_tmp_t, office2013_t tmps[gid].out[7] = ctx.h[7]; } -KERNEL_FQ void m09600_loop (KERN_ATTR_TMPS_ESALT (office2013_tmp_t, office2013_t)) +KERNEL_FQ KERNEL_FA void m09600_loop (KERN_ATTR_TMPS_ESALT (office2013_tmp_t, office2013_t)) { const u64 gid = get_global_id (0); @@ -171,7 +171,7 @@ KERNEL_FQ void m09600_loop (KERN_ATTR_TMPS_ESALT (office2013_tmp_t, office2013_t unpack64v (tmps, out, gid, 7, t7); } -KERNEL_FQ void m09600_comp (KERN_ATTR_TMPS_ESALT (office2013_tmp_t, office2013_t)) +KERNEL_FQ KERNEL_FA void m09600_comp (KERN_ATTR_TMPS_ESALT (office2013_tmp_t, office2013_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m09700_a0-optimized.cl b/OpenCL/m09700_a0-optimized.cl index 1a1384f3a..cebaa2441 100644 --- a/OpenCL/m09700_a0-optimized.cl +++ b/OpenCL/m09700_a0-optimized.cl @@ -371,7 +371,7 @@ DECLSPEC void gen336 (PRIVATE_AS u32 *digest_pre, PRIVATE_AS u32 *salt_buf, PRIV md5_transform (w0_t, w1_t, w2_t, w3_t, digest); } -KERNEL_FQ void m09700_m04 (KERN_ATTR_RULES_ESALT (oldoffice01_t)) +KERNEL_FQ KERNEL_FA void m09700_m04 (KERN_ATTR_RULES_ESALT (oldoffice01_t)) { /** * modifier @@ -548,15 +548,15 @@ KERNEL_FQ void m09700_m04 (KERN_ATTR_RULES_ESALT (oldoffice01_t)) } } -KERNEL_FQ void m09700_m08 (KERN_ATTR_RULES_ESALT (oldoffice01_t)) +KERNEL_FQ KERNEL_FA void m09700_m08 (KERN_ATTR_RULES_ESALT (oldoffice01_t)) { } -KERNEL_FQ void m09700_m16 (KERN_ATTR_RULES_ESALT (oldoffice01_t)) +KERNEL_FQ KERNEL_FA void m09700_m16 (KERN_ATTR_RULES_ESALT (oldoffice01_t)) { } -KERNEL_FQ void m09700_s04 (KERN_ATTR_RULES_ESALT (oldoffice01_t)) +KERNEL_FQ KERNEL_FA void m09700_s04 (KERN_ATTR_RULES_ESALT (oldoffice01_t)) { /** * modifier @@ -745,10 +745,10 @@ KERNEL_FQ void m09700_s04 (KERN_ATTR_RULES_ESALT (oldoffice01_t)) } } -KERNEL_FQ void m09700_s08 (KERN_ATTR_RULES_ESALT (oldoffice01_t)) +KERNEL_FQ KERNEL_FA void m09700_s08 (KERN_ATTR_RULES_ESALT (oldoffice01_t)) { } -KERNEL_FQ void m09700_s16 (KERN_ATTR_RULES_ESALT (oldoffice01_t)) +KERNEL_FQ KERNEL_FA void m09700_s16 (KERN_ATTR_RULES_ESALT (oldoffice01_t)) { } diff --git a/OpenCL/m09700_a1-optimized.cl b/OpenCL/m09700_a1-optimized.cl index d6a5164cd..5d679a8ef 100644 --- a/OpenCL/m09700_a1-optimized.cl +++ b/OpenCL/m09700_a1-optimized.cl @@ -369,7 +369,7 @@ DECLSPEC void gen336 (PRIVATE_AS u32 *digest_pre, PRIVATE_AS u32 *salt_buf, PRIV md5_transform (w0_t, w1_t, w2_t, w3_t, digest); } -KERNEL_FQ void m09700_m04 (KERN_ATTR_ESALT (oldoffice01_t)) +KERNEL_FQ KERNEL_FA void m09700_m04 (KERN_ATTR_ESALT (oldoffice01_t)) { /** * modifier @@ -604,15 +604,15 @@ KERNEL_FQ void m09700_m04 (KERN_ATTR_ESALT (oldoffice01_t)) } } -KERNEL_FQ void m09700_m08 (KERN_ATTR_ESALT (oldoffice01_t)) +KERNEL_FQ KERNEL_FA void m09700_m08 (KERN_ATTR_ESALT (oldoffice01_t)) { } -KERNEL_FQ void m09700_m16 (KERN_ATTR_ESALT (oldoffice01_t)) +KERNEL_FQ KERNEL_FA void m09700_m16 (KERN_ATTR_ESALT (oldoffice01_t)) { } -KERNEL_FQ void m09700_s04 (KERN_ATTR_ESALT (oldoffice01_t)) +KERNEL_FQ KERNEL_FA void m09700_s04 (KERN_ATTR_ESALT (oldoffice01_t)) { /** * modifier @@ -859,10 +859,10 @@ KERNEL_FQ void m09700_s04 (KERN_ATTR_ESALT (oldoffice01_t)) } } -KERNEL_FQ void m09700_s08 (KERN_ATTR_ESALT (oldoffice01_t)) +KERNEL_FQ KERNEL_FA void m09700_s08 (KERN_ATTR_ESALT (oldoffice01_t)) { } -KERNEL_FQ void m09700_s16 (KERN_ATTR_ESALT (oldoffice01_t)) +KERNEL_FQ KERNEL_FA void m09700_s16 (KERN_ATTR_ESALT (oldoffice01_t)) { } diff --git a/OpenCL/m09700_a3-optimized.cl b/OpenCL/m09700_a3-optimized.cl index 6e368bc10..3953b3718 100644 --- a/OpenCL/m09700_a3-optimized.cl +++ b/OpenCL/m09700_a3-optimized.cl @@ -828,7 +828,7 @@ DECLSPEC void m09700s (LOCAL_AS u32 *S, PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, } } -KERNEL_FQ void m09700_m04 (KERN_ATTR_ESALT (oldoffice01_t)) +KERNEL_FQ KERNEL_FA void m09700_m04 (KERN_ATTR_ESALT (oldoffice01_t)) { /** * base @@ -879,7 +879,7 @@ KERNEL_FQ void m09700_m04 (KERN_ATTR_ESALT (oldoffice01_t)) m09700m (S, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m09700_m08 (KERN_ATTR_ESALT (oldoffice01_t)) +KERNEL_FQ KERNEL_FA void m09700_m08 (KERN_ATTR_ESALT (oldoffice01_t)) { /** * base @@ -930,11 +930,11 @@ KERNEL_FQ void m09700_m08 (KERN_ATTR_ESALT (oldoffice01_t)) m09700m (S, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m09700_m16 (KERN_ATTR_ESALT (oldoffice01_t)) +KERNEL_FQ KERNEL_FA void m09700_m16 (KERN_ATTR_ESALT (oldoffice01_t)) { } -KERNEL_FQ void m09700_s04 (KERN_ATTR_ESALT (oldoffice01_t)) +KERNEL_FQ KERNEL_FA void m09700_s04 (KERN_ATTR_ESALT (oldoffice01_t)) { /** * base @@ -985,7 +985,7 @@ KERNEL_FQ void m09700_s04 (KERN_ATTR_ESALT (oldoffice01_t)) m09700s (S, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m09700_s08 (KERN_ATTR_ESALT (oldoffice01_t)) +KERNEL_FQ KERNEL_FA void m09700_s08 (KERN_ATTR_ESALT (oldoffice01_t)) { /** * base @@ -1036,6 +1036,6 @@ KERNEL_FQ void m09700_s08 (KERN_ATTR_ESALT (oldoffice01_t)) m09700s (S, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m09700_s16 (KERN_ATTR_ESALT (oldoffice01_t)) +KERNEL_FQ KERNEL_FA void m09700_s16 (KERN_ATTR_ESALT (oldoffice01_t)) { } diff --git a/OpenCL/m09710_a0-optimized.cl b/OpenCL/m09710_a0-optimized.cl index 87773002d..3ebd47076 100644 --- a/OpenCL/m09710_a0-optimized.cl +++ b/OpenCL/m09710_a0-optimized.cl @@ -27,7 +27,7 @@ typedef struct oldoffice01 } oldoffice01_t; -KERNEL_FQ void m09710_m04 (KERN_ATTR_RULES_ESALT (oldoffice01_t)) +KERNEL_FQ KERNEL_FA void m09710_m04 (KERN_ATTR_RULES_ESALT (oldoffice01_t)) { /** * modifier @@ -155,15 +155,15 @@ KERNEL_FQ void m09710_m04 (KERN_ATTR_RULES_ESALT (oldoffice01_t)) } } -KERNEL_FQ void m09710_m08 (KERN_ATTR_RULES_ESALT (oldoffice01_t)) +KERNEL_FQ KERNEL_FA void m09710_m08 (KERN_ATTR_RULES_ESALT (oldoffice01_t)) { } -KERNEL_FQ void m09710_m16 (KERN_ATTR_RULES_ESALT (oldoffice01_t)) +KERNEL_FQ KERNEL_FA void m09710_m16 (KERN_ATTR_RULES_ESALT (oldoffice01_t)) { } -KERNEL_FQ void m09710_s04 (KERN_ATTR_RULES_ESALT (oldoffice01_t)) +KERNEL_FQ KERNEL_FA void m09710_s04 (KERN_ATTR_RULES_ESALT (oldoffice01_t)) { /** * modifier @@ -303,10 +303,10 @@ KERNEL_FQ void m09710_s04 (KERN_ATTR_RULES_ESALT (oldoffice01_t)) } } -KERNEL_FQ void m09710_s08 (KERN_ATTR_RULES_ESALT (oldoffice01_t)) +KERNEL_FQ KERNEL_FA void m09710_s08 (KERN_ATTR_RULES_ESALT (oldoffice01_t)) { } -KERNEL_FQ void m09710_s16 (KERN_ATTR_RULES_ESALT (oldoffice01_t)) +KERNEL_FQ KERNEL_FA void m09710_s16 (KERN_ATTR_RULES_ESALT (oldoffice01_t)) { } diff --git a/OpenCL/m09710_a1-optimized.cl b/OpenCL/m09710_a1-optimized.cl index 04ea2ee80..f6189624e 100644 --- a/OpenCL/m09710_a1-optimized.cl +++ b/OpenCL/m09710_a1-optimized.cl @@ -25,7 +25,7 @@ typedef struct oldoffice01 } oldoffice01_t; -KERNEL_FQ void m09710_m04 (KERN_ATTR_ESALT (oldoffice01_t)) +KERNEL_FQ KERNEL_FA void m09710_m04 (KERN_ATTR_ESALT (oldoffice01_t)) { /** * modifier @@ -199,15 +199,15 @@ KERNEL_FQ void m09710_m04 (KERN_ATTR_ESALT (oldoffice01_t)) } } -KERNEL_FQ void m09710_m08 (KERN_ATTR_ESALT (oldoffice01_t)) +KERNEL_FQ KERNEL_FA void m09710_m08 (KERN_ATTR_ESALT (oldoffice01_t)) { } -KERNEL_FQ void m09710_m16 (KERN_ATTR_ESALT (oldoffice01_t)) +KERNEL_FQ KERNEL_FA void m09710_m16 (KERN_ATTR_ESALT (oldoffice01_t)) { } -KERNEL_FQ void m09710_s04 (KERN_ATTR_ESALT (oldoffice01_t)) +KERNEL_FQ KERNEL_FA void m09710_s04 (KERN_ATTR_ESALT (oldoffice01_t)) { /** * modifier @@ -393,10 +393,10 @@ KERNEL_FQ void m09710_s04 (KERN_ATTR_ESALT (oldoffice01_t)) } } -KERNEL_FQ void m09710_s08 (KERN_ATTR_ESALT (oldoffice01_t)) +KERNEL_FQ KERNEL_FA void m09710_s08 (KERN_ATTR_ESALT (oldoffice01_t)) { } -KERNEL_FQ void m09710_s16 (KERN_ATTR_ESALT (oldoffice01_t)) +KERNEL_FQ KERNEL_FA void m09710_s16 (KERN_ATTR_ESALT (oldoffice01_t)) { } diff --git a/OpenCL/m09710_a3-optimized.cl b/OpenCL/m09710_a3-optimized.cl index dc7c1f6ef..1403d9aa1 100644 --- a/OpenCL/m09710_a3-optimized.cl +++ b/OpenCL/m09710_a3-optimized.cl @@ -237,7 +237,7 @@ DECLSPEC void m09710s (LOCAL_AS u32 *S, PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, } } -KERNEL_FQ void m09710_m04 (KERN_ATTR_ESALT (oldoffice01_t)) +KERNEL_FQ KERNEL_FA void m09710_m04 (KERN_ATTR_ESALT (oldoffice01_t)) { /** * base @@ -288,15 +288,15 @@ KERNEL_FQ void m09710_m04 (KERN_ATTR_ESALT (oldoffice01_t)) m09710m (S, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m09710_m08 (KERN_ATTR_ESALT (oldoffice01_t)) +KERNEL_FQ KERNEL_FA void m09710_m08 (KERN_ATTR_ESALT (oldoffice01_t)) { } -KERNEL_FQ void m09710_m16 (KERN_ATTR_ESALT (oldoffice01_t)) +KERNEL_FQ KERNEL_FA void m09710_m16 (KERN_ATTR_ESALT (oldoffice01_t)) { } -KERNEL_FQ void m09710_s04 (KERN_ATTR_ESALT (oldoffice01_t)) +KERNEL_FQ KERNEL_FA void m09710_s04 (KERN_ATTR_ESALT (oldoffice01_t)) { /** * base @@ -347,10 +347,10 @@ KERNEL_FQ void m09710_s04 (KERN_ATTR_ESALT (oldoffice01_t)) m09710s (S, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m09710_s08 (KERN_ATTR_ESALT (oldoffice01_t)) +KERNEL_FQ KERNEL_FA void m09710_s08 (KERN_ATTR_ESALT (oldoffice01_t)) { } -KERNEL_FQ void m09710_s16 (KERN_ATTR_ESALT (oldoffice01_t)) +KERNEL_FQ KERNEL_FA void m09710_s16 (KERN_ATTR_ESALT (oldoffice01_t)) { } diff --git a/OpenCL/m09720_a0-optimized.cl b/OpenCL/m09720_a0-optimized.cl index 4e58fa2ed..9673787c9 100644 --- a/OpenCL/m09720_a0-optimized.cl +++ b/OpenCL/m09720_a0-optimized.cl @@ -369,7 +369,7 @@ DECLSPEC void gen336 (PRIVATE_AS u32x *digest_pre, PRIVATE_AS u32 *salt_buf, PRI md5_transform_vector (w0_t, w1_t, w2_t, w3_t, digest); } -KERNEL_FQ void m09720_m04 (KERN_ATTR_RULES_ESALT (oldoffice01_t)) +KERNEL_FQ KERNEL_FA void m09720_m04 (KERN_ATTR_RULES_ESALT (oldoffice01_t)) { /** * modifier @@ -467,15 +467,15 @@ KERNEL_FQ void m09720_m04 (KERN_ATTR_RULES_ESALT (oldoffice01_t)) } } -KERNEL_FQ void m09720_m08 (KERN_ATTR_RULES_ESALT (oldoffice01_t)) +KERNEL_FQ KERNEL_FA void m09720_m08 (KERN_ATTR_RULES_ESALT (oldoffice01_t)) { } -KERNEL_FQ void m09720_m16 (KERN_ATTR_RULES_ESALT (oldoffice01_t)) +KERNEL_FQ KERNEL_FA void m09720_m16 (KERN_ATTR_RULES_ESALT (oldoffice01_t)) { } -KERNEL_FQ void m09720_s04 (KERN_ATTR_RULES_ESALT (oldoffice01_t)) +KERNEL_FQ KERNEL_FA void m09720_s04 (KERN_ATTR_RULES_ESALT (oldoffice01_t)) { /** * modifier @@ -585,10 +585,10 @@ KERNEL_FQ void m09720_s04 (KERN_ATTR_RULES_ESALT (oldoffice01_t)) } } -KERNEL_FQ void m09720_s08 (KERN_ATTR_RULES_ESALT (oldoffice01_t)) +KERNEL_FQ KERNEL_FA void m09720_s08 (KERN_ATTR_RULES_ESALT (oldoffice01_t)) { } -KERNEL_FQ void m09720_s16 (KERN_ATTR_RULES_ESALT (oldoffice01_t)) +KERNEL_FQ KERNEL_FA void m09720_s16 (KERN_ATTR_RULES_ESALT (oldoffice01_t)) { } diff --git a/OpenCL/m09720_a1-optimized.cl b/OpenCL/m09720_a1-optimized.cl index a9c0c53ed..d8ab038ce 100644 --- a/OpenCL/m09720_a1-optimized.cl +++ b/OpenCL/m09720_a1-optimized.cl @@ -367,7 +367,7 @@ DECLSPEC void gen336 (PRIVATE_AS u32x *digest_pre, PRIVATE_AS u32 *salt_buf, PRI md5_transform_vector (w0_t, w1_t, w2_t, w3_t, digest); } -KERNEL_FQ void m09720_m04 (KERN_ATTR_ESALT (oldoffice01_t)) +KERNEL_FQ KERNEL_FA void m09720_m04 (KERN_ATTR_ESALT (oldoffice01_t)) { /** * modifier @@ -515,15 +515,15 @@ KERNEL_FQ void m09720_m04 (KERN_ATTR_ESALT (oldoffice01_t)) } } -KERNEL_FQ void m09720_m08 (KERN_ATTR_ESALT (oldoffice01_t)) +KERNEL_FQ KERNEL_FA void m09720_m08 (KERN_ATTR_ESALT (oldoffice01_t)) { } -KERNEL_FQ void m09720_m16 (KERN_ATTR_ESALT (oldoffice01_t)) +KERNEL_FQ KERNEL_FA void m09720_m16 (KERN_ATTR_ESALT (oldoffice01_t)) { } -KERNEL_FQ void m09720_s04 (KERN_ATTR_ESALT (oldoffice01_t)) +KERNEL_FQ KERNEL_FA void m09720_s04 (KERN_ATTR_ESALT (oldoffice01_t)) { /** * modifier @@ -683,10 +683,10 @@ KERNEL_FQ void m09720_s04 (KERN_ATTR_ESALT (oldoffice01_t)) } } -KERNEL_FQ void m09720_s08 (KERN_ATTR_ESALT (oldoffice01_t)) +KERNEL_FQ KERNEL_FA void m09720_s08 (KERN_ATTR_ESALT (oldoffice01_t)) { } -KERNEL_FQ void m09720_s16 (KERN_ATTR_ESALT (oldoffice01_t)) +KERNEL_FQ KERNEL_FA void m09720_s16 (KERN_ATTR_ESALT (oldoffice01_t)) { } diff --git a/OpenCL/m09720_a3-optimized.cl b/OpenCL/m09720_a3-optimized.cl index 1102f1222..f35547726 100644 --- a/OpenCL/m09720_a3-optimized.cl +++ b/OpenCL/m09720_a3-optimized.cl @@ -553,7 +553,7 @@ DECLSPEC void m09720s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m09720_m04 (KERN_ATTR_ESALT (oldoffice01_t)) +KERNEL_FQ KERNEL_FA void m09720_m04 (KERN_ATTR_ESALT (oldoffice01_t)) { /** * base @@ -602,7 +602,7 @@ KERNEL_FQ void m09720_m04 (KERN_ATTR_ESALT (oldoffice01_t)) m09720m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m09720_m08 (KERN_ATTR_ESALT (oldoffice01_t)) +KERNEL_FQ KERNEL_FA void m09720_m08 (KERN_ATTR_ESALT (oldoffice01_t)) { /** * base @@ -651,11 +651,11 @@ KERNEL_FQ void m09720_m08 (KERN_ATTR_ESALT (oldoffice01_t)) m09720m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m09720_m16 (KERN_ATTR_ESALT (oldoffice01_t)) +KERNEL_FQ KERNEL_FA void m09720_m16 (KERN_ATTR_ESALT (oldoffice01_t)) { } -KERNEL_FQ void m09720_s04 (KERN_ATTR_ESALT (oldoffice01_t)) +KERNEL_FQ KERNEL_FA void m09720_s04 (KERN_ATTR_ESALT (oldoffice01_t)) { /** * base @@ -704,7 +704,7 @@ KERNEL_FQ void m09720_s04 (KERN_ATTR_ESALT (oldoffice01_t)) m09720s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m09720_s08 (KERN_ATTR_ESALT (oldoffice01_t)) +KERNEL_FQ KERNEL_FA void m09720_s08 (KERN_ATTR_ESALT (oldoffice01_t)) { /** * base @@ -753,6 +753,6 @@ KERNEL_FQ void m09720_s08 (KERN_ATTR_ESALT (oldoffice01_t)) m09720s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m09720_s16 (KERN_ATTR_ESALT (oldoffice01_t)) +KERNEL_FQ KERNEL_FA void m09720_s16 (KERN_ATTR_ESALT (oldoffice01_t)) { } diff --git a/OpenCL/m09800_a0-optimized.cl b/OpenCL/m09800_a0-optimized.cl index 46b798d1c..f51dfd726 100644 --- a/OpenCL/m09800_a0-optimized.cl +++ b/OpenCL/m09800_a0-optimized.cl @@ -31,7 +31,7 @@ typedef struct oldoffice34 } oldoffice34_t; -KERNEL_FQ void m09800_m04 (KERN_ATTR_RULES_ESALT (oldoffice34_t)) +KERNEL_FQ KERNEL_FA void m09800_m04 (KERN_ATTR_RULES_ESALT (oldoffice34_t)) { /** * modifier @@ -309,15 +309,15 @@ KERNEL_FQ void m09800_m04 (KERN_ATTR_RULES_ESALT (oldoffice34_t)) } } -KERNEL_FQ void m09800_m08 (KERN_ATTR_RULES_ESALT (oldoffice34_t)) +KERNEL_FQ KERNEL_FA void m09800_m08 (KERN_ATTR_RULES_ESALT (oldoffice34_t)) { } -KERNEL_FQ void m09800_m16 (KERN_ATTR_RULES_ESALT (oldoffice34_t)) +KERNEL_FQ KERNEL_FA void m09800_m16 (KERN_ATTR_RULES_ESALT (oldoffice34_t)) { } -KERNEL_FQ void m09800_s04 (KERN_ATTR_RULES_ESALT (oldoffice34_t)) +KERNEL_FQ KERNEL_FA void m09800_s04 (KERN_ATTR_RULES_ESALT (oldoffice34_t)) { /** * modifier @@ -606,10 +606,10 @@ KERNEL_FQ void m09800_s04 (KERN_ATTR_RULES_ESALT (oldoffice34_t)) } } -KERNEL_FQ void m09800_s08 (KERN_ATTR_RULES_ESALT (oldoffice34_t)) +KERNEL_FQ KERNEL_FA void m09800_s08 (KERN_ATTR_RULES_ESALT (oldoffice34_t)) { } -KERNEL_FQ void m09800_s16 (KERN_ATTR_RULES_ESALT (oldoffice34_t)) +KERNEL_FQ KERNEL_FA void m09800_s16 (KERN_ATTR_RULES_ESALT (oldoffice34_t)) { } diff --git a/OpenCL/m09800_a1-optimized.cl b/OpenCL/m09800_a1-optimized.cl index 9a27f463d..86759d633 100644 --- a/OpenCL/m09800_a1-optimized.cl +++ b/OpenCL/m09800_a1-optimized.cl @@ -29,7 +29,7 @@ typedef struct oldoffice34 } oldoffice34_t; -KERNEL_FQ void m09800_m04 (KERN_ATTR_ESALT (oldoffice34_t)) +KERNEL_FQ KERNEL_FA void m09800_m04 (KERN_ATTR_ESALT (oldoffice34_t)) { /** * modifier @@ -357,15 +357,15 @@ KERNEL_FQ void m09800_m04 (KERN_ATTR_ESALT (oldoffice34_t)) } } -KERNEL_FQ void m09800_m08 (KERN_ATTR_ESALT (oldoffice34_t)) +KERNEL_FQ KERNEL_FA void m09800_m08 (KERN_ATTR_ESALT (oldoffice34_t)) { } -KERNEL_FQ void m09800_m16 (KERN_ATTR_ESALT (oldoffice34_t)) +KERNEL_FQ KERNEL_FA void m09800_m16 (KERN_ATTR_ESALT (oldoffice34_t)) { } -KERNEL_FQ void m09800_s04 (KERN_ATTR_ESALT (oldoffice34_t)) +KERNEL_FQ KERNEL_FA void m09800_s04 (KERN_ATTR_ESALT (oldoffice34_t)) { /** * modifier @@ -704,10 +704,10 @@ KERNEL_FQ void m09800_s04 (KERN_ATTR_ESALT (oldoffice34_t)) } } -KERNEL_FQ void m09800_s08 (KERN_ATTR_ESALT (oldoffice34_t)) +KERNEL_FQ KERNEL_FA void m09800_s08 (KERN_ATTR_ESALT (oldoffice34_t)) { } -KERNEL_FQ void m09800_s16 (KERN_ATTR_ESALT (oldoffice34_t)) +KERNEL_FQ KERNEL_FA void m09800_s16 (KERN_ATTR_ESALT (oldoffice34_t)) { } diff --git a/OpenCL/m09800_a3-optimized.cl b/OpenCL/m09800_a3-optimized.cl index 53c3b7ef0..534cbad4b 100644 --- a/OpenCL/m09800_a3-optimized.cl +++ b/OpenCL/m09800_a3-optimized.cl @@ -531,7 +531,7 @@ DECLSPEC void m09800s (LOCAL_AS u32 *S, PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, } } -KERNEL_FQ void m09800_m04 (KERN_ATTR_ESALT (oldoffice34_t)) +KERNEL_FQ KERNEL_FA void m09800_m04 (KERN_ATTR_ESALT (oldoffice34_t)) { /** * base @@ -582,7 +582,7 @@ KERNEL_FQ void m09800_m04 (KERN_ATTR_ESALT (oldoffice34_t)) m09800m (S, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m09800_m08 (KERN_ATTR_ESALT (oldoffice34_t)) +KERNEL_FQ KERNEL_FA void m09800_m08 (KERN_ATTR_ESALT (oldoffice34_t)) { /** * base @@ -633,7 +633,7 @@ KERNEL_FQ void m09800_m08 (KERN_ATTR_ESALT (oldoffice34_t)) m09800m (S, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m09800_m16 (KERN_ATTR_ESALT (oldoffice34_t)) +KERNEL_FQ KERNEL_FA void m09800_m16 (KERN_ATTR_ESALT (oldoffice34_t)) { /** * base @@ -684,7 +684,7 @@ KERNEL_FQ void m09800_m16 (KERN_ATTR_ESALT (oldoffice34_t)) m09800m (S, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m09800_s04 (KERN_ATTR_ESALT (oldoffice34_t)) +KERNEL_FQ KERNEL_FA void m09800_s04 (KERN_ATTR_ESALT (oldoffice34_t)) { /** * base @@ -735,7 +735,7 @@ KERNEL_FQ void m09800_s04 (KERN_ATTR_ESALT (oldoffice34_t)) m09800s (S, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m09800_s08 (KERN_ATTR_ESALT (oldoffice34_t)) +KERNEL_FQ KERNEL_FA void m09800_s08 (KERN_ATTR_ESALT (oldoffice34_t)) { /** * base @@ -786,7 +786,7 @@ KERNEL_FQ void m09800_s08 (KERN_ATTR_ESALT (oldoffice34_t)) m09800s (S, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m09800_s16 (KERN_ATTR_ESALT (oldoffice34_t)) +KERNEL_FQ KERNEL_FA void m09800_s16 (KERN_ATTR_ESALT (oldoffice34_t)) { /** * base diff --git a/OpenCL/m09810_a0-optimized.cl b/OpenCL/m09810_a0-optimized.cl index f0f1f15fd..aa3b983e6 100644 --- a/OpenCL/m09810_a0-optimized.cl +++ b/OpenCL/m09810_a0-optimized.cl @@ -29,7 +29,7 @@ typedef struct oldoffice34 } oldoffice34_t; -KERNEL_FQ void m09810_m04 (KERN_ATTR_RULES_ESALT (oldoffice34_t)) +KERNEL_FQ KERNEL_FA void m09810_m04 (KERN_ATTR_RULES_ESALT (oldoffice34_t)) { /** * modifier @@ -144,15 +144,15 @@ KERNEL_FQ void m09810_m04 (KERN_ATTR_RULES_ESALT (oldoffice34_t)) } } -KERNEL_FQ void m09810_m08 (KERN_ATTR_RULES_ESALT (oldoffice34_t)) +KERNEL_FQ KERNEL_FA void m09810_m08 (KERN_ATTR_RULES_ESALT (oldoffice34_t)) { } -KERNEL_FQ void m09810_m16 (KERN_ATTR_RULES_ESALT (oldoffice34_t)) +KERNEL_FQ KERNEL_FA void m09810_m16 (KERN_ATTR_RULES_ESALT (oldoffice34_t)) { } -KERNEL_FQ void m09810_s04 (KERN_ATTR_RULES_ESALT (oldoffice34_t)) +KERNEL_FQ KERNEL_FA void m09810_s04 (KERN_ATTR_RULES_ESALT (oldoffice34_t)) { /** * modifier @@ -279,10 +279,10 @@ KERNEL_FQ void m09810_s04 (KERN_ATTR_RULES_ESALT (oldoffice34_t)) } } -KERNEL_FQ void m09810_s08 (KERN_ATTR_RULES_ESALT (oldoffice34_t)) +KERNEL_FQ KERNEL_FA void m09810_s08 (KERN_ATTR_RULES_ESALT (oldoffice34_t)) { } -KERNEL_FQ void m09810_s16 (KERN_ATTR_RULES_ESALT (oldoffice34_t)) +KERNEL_FQ KERNEL_FA void m09810_s16 (KERN_ATTR_RULES_ESALT (oldoffice34_t)) { } diff --git a/OpenCL/m09810_a1-optimized.cl b/OpenCL/m09810_a1-optimized.cl index 7f90cfd0a..cfd0fc883 100644 --- a/OpenCL/m09810_a1-optimized.cl +++ b/OpenCL/m09810_a1-optimized.cl @@ -27,7 +27,7 @@ typedef struct oldoffice34 } oldoffice34_t; -KERNEL_FQ void m09810_m04 (KERN_ATTR_ESALT (oldoffice34_t)) +KERNEL_FQ KERNEL_FA void m09810_m04 (KERN_ATTR_ESALT (oldoffice34_t)) { /** * modifier @@ -188,15 +188,15 @@ KERNEL_FQ void m09810_m04 (KERN_ATTR_ESALT (oldoffice34_t)) } } -KERNEL_FQ void m09810_m08 (KERN_ATTR_ESALT (oldoffice34_t)) +KERNEL_FQ KERNEL_FA void m09810_m08 (KERN_ATTR_ESALT (oldoffice34_t)) { } -KERNEL_FQ void m09810_m16 (KERN_ATTR_ESALT (oldoffice34_t)) +KERNEL_FQ KERNEL_FA void m09810_m16 (KERN_ATTR_ESALT (oldoffice34_t)) { } -KERNEL_FQ void m09810_s04 (KERN_ATTR_ESALT (oldoffice34_t)) +KERNEL_FQ KERNEL_FA void m09810_s04 (KERN_ATTR_ESALT (oldoffice34_t)) { /** * modifier @@ -369,10 +369,10 @@ KERNEL_FQ void m09810_s04 (KERN_ATTR_ESALT (oldoffice34_t)) } } -KERNEL_FQ void m09810_s08 (KERN_ATTR_ESALT (oldoffice34_t)) +KERNEL_FQ KERNEL_FA void m09810_s08 (KERN_ATTR_ESALT (oldoffice34_t)) { } -KERNEL_FQ void m09810_s16 (KERN_ATTR_ESALT (oldoffice34_t)) +KERNEL_FQ KERNEL_FA void m09810_s16 (KERN_ATTR_ESALT (oldoffice34_t)) { } diff --git a/OpenCL/m09810_a3-optimized.cl b/OpenCL/m09810_a3-optimized.cl index 902b369bf..ffb7a5e43 100644 --- a/OpenCL/m09810_a3-optimized.cl +++ b/OpenCL/m09810_a3-optimized.cl @@ -209,7 +209,7 @@ DECLSPEC void m09810s (LOCAL_AS u32 *S, PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, } } -KERNEL_FQ void m09810_m04 (KERN_ATTR_ESALT (oldoffice34_t)) +KERNEL_FQ KERNEL_FA void m09810_m04 (KERN_ATTR_ESALT (oldoffice34_t)) { /** * base @@ -260,7 +260,7 @@ KERNEL_FQ void m09810_m04 (KERN_ATTR_ESALT (oldoffice34_t)) m09810m (S, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m09810_m08 (KERN_ATTR_ESALT (oldoffice34_t)) +KERNEL_FQ KERNEL_FA void m09810_m08 (KERN_ATTR_ESALT (oldoffice34_t)) { /** * base @@ -311,7 +311,7 @@ KERNEL_FQ void m09810_m08 (KERN_ATTR_ESALT (oldoffice34_t)) m09810m (S, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m09810_m16 (KERN_ATTR_ESALT (oldoffice34_t)) +KERNEL_FQ KERNEL_FA void m09810_m16 (KERN_ATTR_ESALT (oldoffice34_t)) { /** * base @@ -362,7 +362,7 @@ KERNEL_FQ void m09810_m16 (KERN_ATTR_ESALT (oldoffice34_t)) m09810m (S, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m09810_s04 (KERN_ATTR_ESALT (oldoffice34_t)) +KERNEL_FQ KERNEL_FA void m09810_s04 (KERN_ATTR_ESALT (oldoffice34_t)) { /** * base @@ -413,7 +413,7 @@ KERNEL_FQ void m09810_s04 (KERN_ATTR_ESALT (oldoffice34_t)) m09810s (S, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m09810_s08 (KERN_ATTR_ESALT (oldoffice34_t)) +KERNEL_FQ KERNEL_FA void m09810_s08 (KERN_ATTR_ESALT (oldoffice34_t)) { /** * base @@ -464,7 +464,7 @@ KERNEL_FQ void m09810_s08 (KERN_ATTR_ESALT (oldoffice34_t)) m09810s (S, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m09810_s16 (KERN_ATTR_ESALT (oldoffice34_t)) +KERNEL_FQ KERNEL_FA void m09810_s16 (KERN_ATTR_ESALT (oldoffice34_t)) { /** * base diff --git a/OpenCL/m09820_a0-optimized.cl b/OpenCL/m09820_a0-optimized.cl index b4daf5587..7a5b02956 100644 --- a/OpenCL/m09820_a0-optimized.cl +++ b/OpenCL/m09820_a0-optimized.cl @@ -31,7 +31,7 @@ typedef struct oldoffice34 } oldoffice34_t; -KERNEL_FQ void m09820_m04 (KERN_ATTR_RULES_ESALT (oldoffice34_t)) +KERNEL_FQ KERNEL_FA void m09820_m04 (KERN_ATTR_RULES_ESALT (oldoffice34_t)) { /** * modifier @@ -253,15 +253,15 @@ KERNEL_FQ void m09820_m04 (KERN_ATTR_RULES_ESALT (oldoffice34_t)) } } -KERNEL_FQ void m09820_m08 (KERN_ATTR_RULES_ESALT (oldoffice34_t)) +KERNEL_FQ KERNEL_FA void m09820_m08 (KERN_ATTR_RULES_ESALT (oldoffice34_t)) { } -KERNEL_FQ void m09820_m16 (KERN_ATTR_RULES_ESALT (oldoffice34_t)) +KERNEL_FQ KERNEL_FA void m09820_m16 (KERN_ATTR_RULES_ESALT (oldoffice34_t)) { } -KERNEL_FQ void m09820_s04 (KERN_ATTR_RULES_ESALT (oldoffice34_t)) +KERNEL_FQ KERNEL_FA void m09820_s04 (KERN_ATTR_RULES_ESALT (oldoffice34_t)) { /** * modifier @@ -492,10 +492,10 @@ KERNEL_FQ void m09820_s04 (KERN_ATTR_RULES_ESALT (oldoffice34_t)) } } -KERNEL_FQ void m09820_s08 (KERN_ATTR_RULES_ESALT (oldoffice34_t)) +KERNEL_FQ KERNEL_FA void m09820_s08 (KERN_ATTR_RULES_ESALT (oldoffice34_t)) { } -KERNEL_FQ void m09820_s16 (KERN_ATTR_RULES_ESALT (oldoffice34_t)) +KERNEL_FQ KERNEL_FA void m09820_s16 (KERN_ATTR_RULES_ESALT (oldoffice34_t)) { } diff --git a/OpenCL/m09820_a1-optimized.cl b/OpenCL/m09820_a1-optimized.cl index b8d19f00c..4b04ec596 100644 --- a/OpenCL/m09820_a1-optimized.cl +++ b/OpenCL/m09820_a1-optimized.cl @@ -29,7 +29,7 @@ typedef struct oldoffice34 } oldoffice34_t; -KERNEL_FQ void m09820_m04 (KERN_ATTR_ESALT (oldoffice34_t)) +KERNEL_FQ KERNEL_FA void m09820_m04 (KERN_ATTR_ESALT (oldoffice34_t)) { /** * modifier @@ -301,15 +301,15 @@ KERNEL_FQ void m09820_m04 (KERN_ATTR_ESALT (oldoffice34_t)) } } -KERNEL_FQ void m09820_m08 (KERN_ATTR_ESALT (oldoffice34_t)) +KERNEL_FQ KERNEL_FA void m09820_m08 (KERN_ATTR_ESALT (oldoffice34_t)) { } -KERNEL_FQ void m09820_m16 (KERN_ATTR_ESALT (oldoffice34_t)) +KERNEL_FQ KERNEL_FA void m09820_m16 (KERN_ATTR_ESALT (oldoffice34_t)) { } -KERNEL_FQ void m09820_s04 (KERN_ATTR_ESALT (oldoffice34_t)) +KERNEL_FQ KERNEL_FA void m09820_s04 (KERN_ATTR_ESALT (oldoffice34_t)) { /** * modifier @@ -590,10 +590,10 @@ KERNEL_FQ void m09820_s04 (KERN_ATTR_ESALT (oldoffice34_t)) } } -KERNEL_FQ void m09820_s08 (KERN_ATTR_ESALT (oldoffice34_t)) +KERNEL_FQ KERNEL_FA void m09820_s08 (KERN_ATTR_ESALT (oldoffice34_t)) { } -KERNEL_FQ void m09820_s16 (KERN_ATTR_ESALT (oldoffice34_t)) +KERNEL_FQ KERNEL_FA void m09820_s16 (KERN_ATTR_ESALT (oldoffice34_t)) { } diff --git a/OpenCL/m09820_a3-optimized.cl b/OpenCL/m09820_a3-optimized.cl index 889268423..c7c846b36 100644 --- a/OpenCL/m09820_a3-optimized.cl +++ b/OpenCL/m09820_a3-optimized.cl @@ -416,7 +416,7 @@ DECLSPEC void m09820s (LOCAL_AS u32 *S, PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, } } -KERNEL_FQ void m09820_m04 (KERN_ATTR_ESALT (oldoffice34_t)) +KERNEL_FQ KERNEL_FA void m09820_m04 (KERN_ATTR_ESALT (oldoffice34_t)) { /** * base @@ -467,7 +467,7 @@ KERNEL_FQ void m09820_m04 (KERN_ATTR_ESALT (oldoffice34_t)) m09820m (S, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m09820_m08 (KERN_ATTR_ESALT (oldoffice34_t)) +KERNEL_FQ KERNEL_FA void m09820_m08 (KERN_ATTR_ESALT (oldoffice34_t)) { /** * base @@ -518,7 +518,7 @@ KERNEL_FQ void m09820_m08 (KERN_ATTR_ESALT (oldoffice34_t)) m09820m (S, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m09820_m16 (KERN_ATTR_ESALT (oldoffice34_t)) +KERNEL_FQ KERNEL_FA void m09820_m16 (KERN_ATTR_ESALT (oldoffice34_t)) { /** * base @@ -569,7 +569,7 @@ KERNEL_FQ void m09820_m16 (KERN_ATTR_ESALT (oldoffice34_t)) m09820m (S, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m09820_s04 (KERN_ATTR_ESALT (oldoffice34_t)) +KERNEL_FQ KERNEL_FA void m09820_s04 (KERN_ATTR_ESALT (oldoffice34_t)) { /** * base @@ -620,7 +620,7 @@ KERNEL_FQ void m09820_s04 (KERN_ATTR_ESALT (oldoffice34_t)) m09820s (S, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m09820_s08 (KERN_ATTR_ESALT (oldoffice34_t)) +KERNEL_FQ KERNEL_FA void m09820_s08 (KERN_ATTR_ESALT (oldoffice34_t)) { /** * base @@ -671,7 +671,7 @@ KERNEL_FQ void m09820_s08 (KERN_ATTR_ESALT (oldoffice34_t)) m09820s (S, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m09820_s16 (KERN_ATTR_ESALT (oldoffice34_t)) +KERNEL_FQ KERNEL_FA void m09820_s16 (KERN_ATTR_ESALT (oldoffice34_t)) { /** * base diff --git a/OpenCL/m09900_a0-optimized.cl b/OpenCL/m09900_a0-optimized.cl index 2aa8ae62f..217da7f5c 100644 --- a/OpenCL/m09900_a0-optimized.cl +++ b/OpenCL/m09900_a0-optimized.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m09900_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m09900_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -242,15 +242,15 @@ KERNEL_FQ void m09900_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m09900_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m09900_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m09900_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m09900_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m09900_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m09900_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -491,10 +491,10 @@ KERNEL_FQ void m09900_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m09900_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m09900_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m09900_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m09900_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m09900_a0-pure.cl b/OpenCL/m09900_a0-pure.cl index dc4d9ea92..5679142b8 100644 --- a/OpenCL/m09900_a0-pure.cl +++ b/OpenCL/m09900_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m09900_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m09900_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -60,7 +60,7 @@ KERNEL_FQ void m09900_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m09900_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m09900_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m09900_a1-optimized.cl b/OpenCL/m09900_a1-optimized.cl index fb52d6aa1..dacdb4ca1 100644 --- a/OpenCL/m09900_a1-optimized.cl +++ b/OpenCL/m09900_a1-optimized.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m09900_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m09900_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -300,15 +300,15 @@ KERNEL_FQ void m09900_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m09900_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m09900_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m09900_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m09900_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m09900_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m09900_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -609,10 +609,10 @@ KERNEL_FQ void m09900_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m09900_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m09900_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m09900_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m09900_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m09900_a1-pure.cl b/OpenCL/m09900_a1-pure.cl index 9be5a5714..69ac972ae 100644 --- a/OpenCL/m09900_a1-pure.cl +++ b/OpenCL/m09900_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m09900_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m09900_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -56,7 +56,7 @@ KERNEL_FQ void m09900_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m09900_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m09900_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m09900_a3-optimized.cl b/OpenCL/m09900_a3-optimized.cl index c2d7e76b8..ce13b0673 100644 --- a/OpenCL/m09900_a3-optimized.cl +++ b/OpenCL/m09900_a3-optimized.cl @@ -585,7 +585,7 @@ DECLSPEC void m09900s (PRIVATE_AS u32 *w, const u32 pw_len, KERN_ATTR_FUNC_VECTO } } -KERNEL_FQ void m09900_m04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m09900_m04 (KERN_ATTR_VECTOR ()) { /** * base @@ -625,7 +625,7 @@ KERNEL_FQ void m09900_m04 (KERN_ATTR_VECTOR ()) m09900m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m09900_m08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m09900_m08 (KERN_ATTR_VECTOR ()) { /** * base @@ -665,7 +665,7 @@ KERNEL_FQ void m09900_m08 (KERN_ATTR_VECTOR ()) m09900m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m09900_m16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m09900_m16 (KERN_ATTR_VECTOR ()) { /** * base @@ -705,7 +705,7 @@ KERNEL_FQ void m09900_m16 (KERN_ATTR_VECTOR ()) m09900m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m09900_s04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m09900_s04 (KERN_ATTR_VECTOR ()) { /** * base @@ -745,7 +745,7 @@ KERNEL_FQ void m09900_s04 (KERN_ATTR_VECTOR ()) m09900s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m09900_s08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m09900_s08 (KERN_ATTR_VECTOR ()) { /** * base @@ -785,7 +785,7 @@ KERNEL_FQ void m09900_s08 (KERN_ATTR_VECTOR ()) m09900s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m09900_s16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m09900_s16 (KERN_ATTR_VECTOR ()) { /** * base diff --git a/OpenCL/m09900_a3-pure.cl b/OpenCL/m09900_a3-pure.cl index f76512ed6..d206bd3fd 100644 --- a/OpenCL/m09900_a3-pure.cl +++ b/OpenCL/m09900_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m09900_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m09900_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -69,7 +69,7 @@ KERNEL_FQ void m09900_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m09900_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m09900_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m10100_a0-optimized.cl b/OpenCL/m10100_a0-optimized.cl index 946c47f71..13fe2e72b 100644 --- a/OpenCL/m10100_a0-optimized.cl +++ b/OpenCL/m10100_a0-optimized.cl @@ -85,7 +85,7 @@ DECLSPEC u64x siphash_rot32 (const u64x a) (v1) ^= (v2); \ (v2) = siphash_rot32 ((v2)) -KERNEL_FQ void m10100_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m10100_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -204,15 +204,15 @@ KERNEL_FQ void m10100_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m10100_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m10100_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m10100_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m10100_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m10100_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m10100_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -343,10 +343,10 @@ KERNEL_FQ void m10100_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m10100_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m10100_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m10100_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m10100_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m10100_a1-optimized.cl b/OpenCL/m10100_a1-optimized.cl index ca7e5b63d..557b919b0 100644 --- a/OpenCL/m10100_a1-optimized.cl +++ b/OpenCL/m10100_a1-optimized.cl @@ -83,7 +83,7 @@ DECLSPEC u64x siphash_rot32 (const u64x a) (v1) ^= (v2); \ (v2) = siphash_rot32 ((v2)) -KERNEL_FQ void m10100_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10100_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -262,15 +262,15 @@ KERNEL_FQ void m10100_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m10100_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10100_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m10100_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10100_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m10100_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10100_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -461,10 +461,10 @@ KERNEL_FQ void m10100_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m10100_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10100_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m10100_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10100_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m10100_a3-optimized.cl b/OpenCL/m10100_a3-optimized.cl index 26c1e036f..8370fe013 100644 --- a/OpenCL/m10100_a3-optimized.cl +++ b/OpenCL/m10100_a3-optimized.cl @@ -276,7 +276,7 @@ DECLSPEC void m10100s (PRIVATE_AS u32 *w, const u32 pw_len, KERN_ATTR_FUNC_VECTO } } -KERNEL_FQ void m10100_m04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m10100_m04 (KERN_ATTR_VECTOR ()) { /** * base @@ -316,7 +316,7 @@ KERNEL_FQ void m10100_m04 (KERN_ATTR_VECTOR ()) m10100m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m10100_m08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m10100_m08 (KERN_ATTR_VECTOR ()) { /** * base @@ -356,7 +356,7 @@ KERNEL_FQ void m10100_m08 (KERN_ATTR_VECTOR ()) m10100m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m10100_m16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m10100_m16 (KERN_ATTR_VECTOR ()) { /** * base @@ -396,7 +396,7 @@ KERNEL_FQ void m10100_m16 (KERN_ATTR_VECTOR ()) m10100m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m10100_s04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m10100_s04 (KERN_ATTR_VECTOR ()) { /** * base @@ -436,7 +436,7 @@ KERNEL_FQ void m10100_s04 (KERN_ATTR_VECTOR ()) m10100s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m10100_s08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m10100_s08 (KERN_ATTR_VECTOR ()) { /** * base @@ -476,7 +476,7 @@ KERNEL_FQ void m10100_s08 (KERN_ATTR_VECTOR ()) m10100s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m10100_s16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m10100_s16 (KERN_ATTR_VECTOR ()) { /** * base diff --git a/OpenCL/m10300-pure.cl b/OpenCL/m10300-pure.cl index 8976ad795..ff3cd4c4b 100644 --- a/OpenCL/m10300-pure.cl +++ b/OpenCL/m10300-pure.cl @@ -20,7 +20,7 @@ typedef struct saph_sha1_tmp } saph_sha1_tmp_t; -KERNEL_FQ void m10300_init (KERN_ATTR_TMPS (saph_sha1_tmp_t)) +KERNEL_FQ KERNEL_FA void m10300_init (KERN_ATTR_TMPS (saph_sha1_tmp_t)) { /** * base @@ -47,7 +47,7 @@ KERNEL_FQ void m10300_init (KERN_ATTR_TMPS (saph_sha1_tmp_t)) tmps[gid].digest_buf[4] = ctx.h[4]; } -KERNEL_FQ void m10300_loop (KERN_ATTR_TMPS (saph_sha1_tmp_t)) +KERNEL_FQ KERNEL_FA void m10300_loop (KERN_ATTR_TMPS (saph_sha1_tmp_t)) { /** * base @@ -127,7 +127,7 @@ KERNEL_FQ void m10300_loop (KERN_ATTR_TMPS (saph_sha1_tmp_t)) tmps[gid].digest_buf[4] = digest[4]; } -KERNEL_FQ void m10300_comp (KERN_ATTR_TMPS (saph_sha1_tmp_t)) +KERNEL_FQ KERNEL_FA void m10300_comp (KERN_ATTR_TMPS (saph_sha1_tmp_t)) { /** * modifier diff --git a/OpenCL/m10400_a0-optimized.cl b/OpenCL/m10400_a0-optimized.cl index e442a7e8b..374980daf 100644 --- a/OpenCL/m10400_a0-optimized.cl +++ b/OpenCL/m10400_a0-optimized.cl @@ -41,7 +41,7 @@ typedef struct pdf } pdf_t; -KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m10400_m04 (KERN_ATTR_RULES_ESALT (pdf_t)) +KERNEL_FQ KERNEL_FA void m10400_m04 (KERN_ATTR_RULES_ESALT (pdf_t)) { /** * modifier @@ -223,15 +223,15 @@ KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m10400_m04 (KERN_ATTR_RULES_ } } -KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m10400_m08 (KERN_ATTR_RULES_ESALT (pdf_t)) +KERNEL_FQ KERNEL_FA void m10400_m08 (KERN_ATTR_RULES_ESALT (pdf_t)) { } -KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m10400_m16 (KERN_ATTR_RULES_ESALT (pdf_t)) +KERNEL_FQ KERNEL_FA void m10400_m16 (KERN_ATTR_RULES_ESALT (pdf_t)) { } -KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m10400_s04 (KERN_ATTR_RULES_ESALT (pdf_t)) +KERNEL_FQ KERNEL_FA void m10400_s04 (KERN_ATTR_RULES_ESALT (pdf_t)) { /** * modifier @@ -425,10 +425,10 @@ KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m10400_s04 (KERN_ATTR_RULES_ } } -KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m10400_s08 (KERN_ATTR_RULES_ESALT (pdf_t)) +KERNEL_FQ KERNEL_FA void m10400_s08 (KERN_ATTR_RULES_ESALT (pdf_t)) { } -KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m10400_s16 (KERN_ATTR_RULES_ESALT (pdf_t)) +KERNEL_FQ KERNEL_FA void m10400_s16 (KERN_ATTR_RULES_ESALT (pdf_t)) { } diff --git a/OpenCL/m10400_a1-optimized.cl b/OpenCL/m10400_a1-optimized.cl index 3c0165749..f11835643 100644 --- a/OpenCL/m10400_a1-optimized.cl +++ b/OpenCL/m10400_a1-optimized.cl @@ -39,7 +39,7 @@ typedef struct pdf } pdf_t; -KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m10400_m04 (KERN_ATTR_ESALT (pdf_t)) +KERNEL_FQ KERNEL_FA void m10400_m04 (KERN_ATTR_ESALT (pdf_t)) { /** * modifier @@ -281,15 +281,15 @@ KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m10400_m04 (KERN_ATTR_ESALT } } -KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m10400_m08 (KERN_ATTR_ESALT (pdf_t)) +KERNEL_FQ KERNEL_FA void m10400_m08 (KERN_ATTR_ESALT (pdf_t)) { } -KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m10400_m16 (KERN_ATTR_ESALT (pdf_t)) +KERNEL_FQ KERNEL_FA void m10400_m16 (KERN_ATTR_ESALT (pdf_t)) { } -KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m10400_s04 (KERN_ATTR_ESALT (pdf_t)) +KERNEL_FQ KERNEL_FA void m10400_s04 (KERN_ATTR_ESALT (pdf_t)) { /** * modifier @@ -543,10 +543,10 @@ KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m10400_s04 (KERN_ATTR_ESALT } } -KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m10400_s08 (KERN_ATTR_ESALT (pdf_t)) +KERNEL_FQ KERNEL_FA void m10400_s08 (KERN_ATTR_ESALT (pdf_t)) { } -KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m10400_s16 (KERN_ATTR_ESALT (pdf_t)) +KERNEL_FQ KERNEL_FA void m10400_s16 (KERN_ATTR_ESALT (pdf_t)) { } diff --git a/OpenCL/m10400_a3-optimized.cl b/OpenCL/m10400_a3-optimized.cl index 8687ae809..044752b43 100644 --- a/OpenCL/m10400_a3-optimized.cl +++ b/OpenCL/m10400_a3-optimized.cl @@ -397,7 +397,7 @@ DECLSPEC void m10400s (LOCAL_AS u32 *S, PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, } } -KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m10400_m04 (KERN_ATTR_ESALT (pdf_t)) +KERNEL_FQ KERNEL_FA void m10400_m04 (KERN_ATTR_ESALT (pdf_t)) { /** * base @@ -448,7 +448,7 @@ KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m10400_m04 (KERN_ATTR_ESALT m10400m (S, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m10400_m08 (KERN_ATTR_ESALT (pdf_t)) +KERNEL_FQ KERNEL_FA void m10400_m08 (KERN_ATTR_ESALT (pdf_t)) { /** * base @@ -499,7 +499,7 @@ KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m10400_m08 (KERN_ATTR_ESALT m10400m (S, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m10400_m16 (KERN_ATTR_ESALT (pdf_t)) +KERNEL_FQ KERNEL_FA void m10400_m16 (KERN_ATTR_ESALT (pdf_t)) { /** * base @@ -550,7 +550,7 @@ KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m10400_m16 (KERN_ATTR_ESALT m10400m (S, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m10400_s04 (KERN_ATTR_ESALT (pdf_t)) +KERNEL_FQ KERNEL_FA void m10400_s04 (KERN_ATTR_ESALT (pdf_t)) { /** * base @@ -601,7 +601,7 @@ KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m10400_s04 (KERN_ATTR_ESALT m10400s (S, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m10400_s08 (KERN_ATTR_ESALT (pdf_t)) +KERNEL_FQ KERNEL_FA void m10400_s08 (KERN_ATTR_ESALT (pdf_t)) { /** * base @@ -652,7 +652,7 @@ KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m10400_s08 (KERN_ATTR_ESALT m10400s (S, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m10400_s16 (KERN_ATTR_ESALT (pdf_t)) +KERNEL_FQ KERNEL_FA void m10400_s16 (KERN_ATTR_ESALT (pdf_t)) { /** * base diff --git a/OpenCL/m10410_a0-optimized.cl b/OpenCL/m10410_a0-optimized.cl index aa1acad0b..28251f827 100644 --- a/OpenCL/m10410_a0-optimized.cl +++ b/OpenCL/m10410_a0-optimized.cl @@ -41,7 +41,7 @@ typedef struct pdf } pdf_t; -KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m10410_m04 (KERN_ATTR_RULES_ESALT (pdf_t)) +KERNEL_FQ KERNEL_FA void m10410_m04 (KERN_ATTR_RULES_ESALT (pdf_t)) { /** * modifier @@ -120,15 +120,15 @@ KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m10410_m04 (KERN_ATTR_RULES_ } } -KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m10410_m08 (KERN_ATTR_RULES_ESALT (pdf_t)) +KERNEL_FQ KERNEL_FA void m10410_m08 (KERN_ATTR_RULES_ESALT (pdf_t)) { } -KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m10410_m16 (KERN_ATTR_RULES_ESALT (pdf_t)) +KERNEL_FQ KERNEL_FA void m10410_m16 (KERN_ATTR_RULES_ESALT (pdf_t)) { } -KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m10410_s04 (KERN_ATTR_RULES_ESALT (pdf_t)) +KERNEL_FQ KERNEL_FA void m10410_s04 (KERN_ATTR_RULES_ESALT (pdf_t)) { /** * modifier @@ -219,10 +219,10 @@ KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m10410_s04 (KERN_ATTR_RULES_ } } -KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m10410_s08 (KERN_ATTR_RULES_ESALT (pdf_t)) +KERNEL_FQ KERNEL_FA void m10410_s08 (KERN_ATTR_RULES_ESALT (pdf_t)) { } -KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m10410_s16 (KERN_ATTR_RULES_ESALT (pdf_t)) +KERNEL_FQ KERNEL_FA void m10410_s16 (KERN_ATTR_RULES_ESALT (pdf_t)) { } diff --git a/OpenCL/m10410_a1-optimized.cl b/OpenCL/m10410_a1-optimized.cl index b37624c5b..4ead5106b 100644 --- a/OpenCL/m10410_a1-optimized.cl +++ b/OpenCL/m10410_a1-optimized.cl @@ -39,7 +39,7 @@ typedef struct pdf } pdf_t; -KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m10410_m04 (KERN_ATTR_ESALT (pdf_t)) +KERNEL_FQ KERNEL_FA void m10410_m04 (KERN_ATTR_ESALT (pdf_t)) { /** * modifier @@ -187,15 +187,15 @@ KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m10410_m04 (KERN_ATTR_ESALT } } -KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m10410_m08 (KERN_ATTR_ESALT (pdf_t)) +KERNEL_FQ KERNEL_FA void m10410_m08 (KERN_ATTR_ESALT (pdf_t)) { } -KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m10410_m16 (KERN_ATTR_ESALT (pdf_t)) +KERNEL_FQ KERNEL_FA void m10410_m16 (KERN_ATTR_ESALT (pdf_t)) { } -KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m10410_s04 (KERN_ATTR_ESALT (pdf_t)) +KERNEL_FQ KERNEL_FA void m10410_s04 (KERN_ATTR_ESALT (pdf_t)) { /** * modifier @@ -355,10 +355,10 @@ KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m10410_s04 (KERN_ATTR_ESALT } } -KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m10410_s08 (KERN_ATTR_ESALT (pdf_t)) +KERNEL_FQ KERNEL_FA void m10410_s08 (KERN_ATTR_ESALT (pdf_t)) { } -KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m10410_s16 (KERN_ATTR_ESALT (pdf_t)) +KERNEL_FQ KERNEL_FA void m10410_s16 (KERN_ATTR_ESALT (pdf_t)) { } diff --git a/OpenCL/m10410_a3-optimized.cl b/OpenCL/m10410_a3-optimized.cl index 5e789cca8..e1bb0f2f5 100644 --- a/OpenCL/m10410_a3-optimized.cl +++ b/OpenCL/m10410_a3-optimized.cl @@ -151,7 +151,7 @@ DECLSPEC void m10410s (LOCAL_AS u32 *S, PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, } } -KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m10410_m04 (KERN_ATTR_ESALT (pdf_t)) +KERNEL_FQ KERNEL_FA void m10410_m04 (KERN_ATTR_ESALT (pdf_t)) { /** * base @@ -202,7 +202,7 @@ KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m10410_m04 (KERN_ATTR_ESALT m10410m (S, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m10410_m08 (KERN_ATTR_ESALT (pdf_t)) +KERNEL_FQ KERNEL_FA void m10410_m08 (KERN_ATTR_ESALT (pdf_t)) { /** * base @@ -253,7 +253,7 @@ KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m10410_m08 (KERN_ATTR_ESALT m10410m (S, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m10410_m16 (KERN_ATTR_ESALT (pdf_t)) +KERNEL_FQ KERNEL_FA void m10410_m16 (KERN_ATTR_ESALT (pdf_t)) { /** * base @@ -304,7 +304,7 @@ KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m10410_m16 (KERN_ATTR_ESALT m10410m (S, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m10410_s04 (KERN_ATTR_ESALT (pdf_t)) +KERNEL_FQ KERNEL_FA void m10410_s04 (KERN_ATTR_ESALT (pdf_t)) { /** * base @@ -355,7 +355,7 @@ KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m10410_s04 (KERN_ATTR_ESALT m10410s (S, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m10410_s08 (KERN_ATTR_ESALT (pdf_t)) +KERNEL_FQ KERNEL_FA void m10410_s08 (KERN_ATTR_ESALT (pdf_t)) { /** * base @@ -406,7 +406,7 @@ KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m10410_s08 (KERN_ATTR_ESALT m10410s (S, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m10410_s16 (KERN_ATTR_ESALT (pdf_t)) +KERNEL_FQ KERNEL_FA void m10410_s16 (KERN_ATTR_ESALT (pdf_t)) { /** * base diff --git a/OpenCL/m10420_a0-optimized.cl b/OpenCL/m10420_a0-optimized.cl index 32b1df8c1..981c32385 100644 --- a/OpenCL/m10420_a0-optimized.cl +++ b/OpenCL/m10420_a0-optimized.cl @@ -51,7 +51,7 @@ typedef struct pdf } pdf_t; -KERNEL_FQ void m10420_m04 (KERN_ATTR_RULES_ESALT (pdf_t)) +KERNEL_FQ KERNEL_FA void m10420_m04 (KERN_ATTR_RULES_ESALT (pdf_t)) { /** * modifier @@ -204,15 +204,15 @@ KERNEL_FQ void m10420_m04 (KERN_ATTR_RULES_ESALT (pdf_t)) } } -KERNEL_FQ void m10420_m08 (KERN_ATTR_RULES_ESALT (pdf_t)) +KERNEL_FQ KERNEL_FA void m10420_m08 (KERN_ATTR_RULES_ESALT (pdf_t)) { } -KERNEL_FQ void m10420_m16 (KERN_ATTR_RULES_ESALT (pdf_t)) +KERNEL_FQ KERNEL_FA void m10420_m16 (KERN_ATTR_RULES_ESALT (pdf_t)) { } -KERNEL_FQ void m10420_s04 (KERN_ATTR_RULES_ESALT (pdf_t)) +KERNEL_FQ KERNEL_FA void m10420_s04 (KERN_ATTR_RULES_ESALT (pdf_t)) { /** * modifier @@ -377,10 +377,10 @@ KERNEL_FQ void m10420_s04 (KERN_ATTR_RULES_ESALT (pdf_t)) } } -KERNEL_FQ void m10420_s08 (KERN_ATTR_RULES_ESALT (pdf_t)) +KERNEL_FQ KERNEL_FA void m10420_s08 (KERN_ATTR_RULES_ESALT (pdf_t)) { } -KERNEL_FQ void m10420_s16 (KERN_ATTR_RULES_ESALT (pdf_t)) +KERNEL_FQ KERNEL_FA void m10420_s16 (KERN_ATTR_RULES_ESALT (pdf_t)) { } diff --git a/OpenCL/m10420_a1-optimized.cl b/OpenCL/m10420_a1-optimized.cl index 5c2ef872d..add621053 100644 --- a/OpenCL/m10420_a1-optimized.cl +++ b/OpenCL/m10420_a1-optimized.cl @@ -49,7 +49,7 @@ typedef struct pdf } pdf_t; -KERNEL_FQ void m10420_m04 (KERN_ATTR_ESALT (pdf_t)) +KERNEL_FQ KERNEL_FA void m10420_m04 (KERN_ATTR_ESALT (pdf_t)) { /** * modifier @@ -262,15 +262,15 @@ KERNEL_FQ void m10420_m04 (KERN_ATTR_ESALT (pdf_t)) } } -KERNEL_FQ void m10420_m08 (KERN_ATTR_ESALT (pdf_t)) +KERNEL_FQ KERNEL_FA void m10420_m08 (KERN_ATTR_ESALT (pdf_t)) { } -KERNEL_FQ void m10420_m16 (KERN_ATTR_ESALT (pdf_t)) +KERNEL_FQ KERNEL_FA void m10420_m16 (KERN_ATTR_ESALT (pdf_t)) { } -KERNEL_FQ void m10420_s04 (KERN_ATTR_ESALT (pdf_t)) +KERNEL_FQ KERNEL_FA void m10420_s04 (KERN_ATTR_ESALT (pdf_t)) { /** * modifier @@ -495,10 +495,10 @@ KERNEL_FQ void m10420_s04 (KERN_ATTR_ESALT (pdf_t)) } } -KERNEL_FQ void m10420_s08 (KERN_ATTR_ESALT (pdf_t)) +KERNEL_FQ KERNEL_FA void m10420_s08 (KERN_ATTR_ESALT (pdf_t)) { } -KERNEL_FQ void m10420_s16 (KERN_ATTR_ESALT (pdf_t)) +KERNEL_FQ KERNEL_FA void m10420_s16 (KERN_ATTR_ESALT (pdf_t)) { } diff --git a/OpenCL/m10420_a3-optimized.cl b/OpenCL/m10420_a3-optimized.cl index 797c7d16b..97769040e 100644 --- a/OpenCL/m10420_a3-optimized.cl +++ b/OpenCL/m10420_a3-optimized.cl @@ -361,7 +361,7 @@ DECLSPEC void m10420s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m10420_m04 (KERN_ATTR_ESALT (pdf_t)) +KERNEL_FQ KERNEL_FA void m10420_m04 (KERN_ATTR_ESALT (pdf_t)) { /** * base @@ -410,7 +410,7 @@ KERNEL_FQ void m10420_m04 (KERN_ATTR_ESALT (pdf_t)) m10420m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m10420_m08 (KERN_ATTR_ESALT (pdf_t)) +KERNEL_FQ KERNEL_FA void m10420_m08 (KERN_ATTR_ESALT (pdf_t)) { /** * base @@ -459,7 +459,7 @@ KERNEL_FQ void m10420_m08 (KERN_ATTR_ESALT (pdf_t)) m10420m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m10420_m16 (KERN_ATTR_ESALT (pdf_t)) +KERNEL_FQ KERNEL_FA void m10420_m16 (KERN_ATTR_ESALT (pdf_t)) { /** * base @@ -508,7 +508,7 @@ KERNEL_FQ void m10420_m16 (KERN_ATTR_ESALT (pdf_t)) m10420m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m10420_s04 (KERN_ATTR_ESALT (pdf_t)) +KERNEL_FQ KERNEL_FA void m10420_s04 (KERN_ATTR_ESALT (pdf_t)) { /** * base @@ -557,7 +557,7 @@ KERNEL_FQ void m10420_s04 (KERN_ATTR_ESALT (pdf_t)) m10420s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m10420_s08 (KERN_ATTR_ESALT (pdf_t)) +KERNEL_FQ KERNEL_FA void m10420_s08 (KERN_ATTR_ESALT (pdf_t)) { /** * base @@ -606,7 +606,7 @@ KERNEL_FQ void m10420_s08 (KERN_ATTR_ESALT (pdf_t)) m10420s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m10420_s16 (KERN_ATTR_ESALT (pdf_t)) +KERNEL_FQ KERNEL_FA void m10420_s16 (KERN_ATTR_ESALT (pdf_t)) { /** * base diff --git a/OpenCL/m10500-pure.cl b/OpenCL/m10500-pure.cl index f45c40d42..dc0d711d2 100644 --- a/OpenCL/m10500-pure.cl +++ b/OpenCL/m10500-pure.cl @@ -45,7 +45,7 @@ typedef struct pdf14_tmp } pdf14_tmp_t; -KERNEL_FQ void m10500_init (KERN_ATTR_TMPS_ESALT (pdf14_tmp_t, pdf_t)) +KERNEL_FQ KERNEL_FA void m10500_init (KERN_ATTR_TMPS_ESALT (pdf14_tmp_t, pdf_t)) { /** * base @@ -232,7 +232,7 @@ KERNEL_FQ void m10500_init (KERN_ATTR_TMPS_ESALT (pdf14_tmp_t, pdf_t)) tmps[gid].out[3] = 0; } -KERNEL_FQ void m10500_loop (KERN_ATTR_TMPS_ESALT (pdf14_tmp_t, pdf_t)) +KERNEL_FQ KERNEL_FA void m10500_loop (KERN_ATTR_TMPS_ESALT (pdf14_tmp_t, pdf_t)) { /** * base @@ -333,7 +333,7 @@ KERNEL_FQ void m10500_loop (KERN_ATTR_TMPS_ESALT (pdf14_tmp_t, pdf_t)) tmps[gid].out[3] = out[3]; } -KERNEL_FQ void m10500_comp (KERN_ATTR_TMPS_ESALT (pdf14_tmp_t, pdf_t)) +KERNEL_FQ KERNEL_FA void m10500_comp (KERN_ATTR_TMPS_ESALT (pdf14_tmp_t, pdf_t)) { /** * modifier diff --git a/OpenCL/m10700-optimized.cl b/OpenCL/m10700-optimized.cl index 10ebfcac8..b665dbbf3 100644 --- a/OpenCL/m10700-optimized.cl +++ b/OpenCL/m10700-optimized.cl @@ -563,7 +563,7 @@ DECLSPEC u32 do_round (LOCAL_AS u32 *sc, PRIVATE_AS const u32 *pw, const u32 pw_ return ex; } -KERNEL_FQ void m10700_init (KERN_ATTR_TMPS_ESALT (pdf17l8_tmp_t, pdf_t)) +KERNEL_FQ KERNEL_FA void m10700_init (KERN_ATTR_TMPS_ESALT (pdf17l8_tmp_t, pdf_t)) { /** * base @@ -595,7 +595,7 @@ KERNEL_FQ void m10700_init (KERN_ATTR_TMPS_ESALT (pdf17l8_tmp_t, pdf_t)) tmps[gid].W_len = WORDSZ256; } -KERNEL_FQ void m10700_loop (KERN_ATTR_TMPS_ESALT (pdf17l8_tmp_t, pdf_t)) +KERNEL_FQ KERNEL_FA void m10700_loop (KERN_ATTR_TMPS_ESALT (pdf17l8_tmp_t, pdf_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -666,7 +666,7 @@ KERNEL_FQ void m10700_loop (KERN_ATTR_TMPS_ESALT (pdf17l8_tmp_t, pdf_t)) ctx.dgst_len = tmps[gid].dgst_len; ctx.W_len = tmps[gid].W_len; - LOCAL_VK u32 s_sc[256][PWMAXSZ4 + BLMAXSZ4 + AESSZ4]; + LOCAL_VK u32 s_sc[FIXED_LOCAL_SIZE][PWMAXSZ4 + BLMAXSZ4 + AESSZ4]; u32 ex = 0; @@ -695,7 +695,7 @@ KERNEL_FQ void m10700_loop (KERN_ATTR_TMPS_ESALT (pdf17l8_tmp_t, pdf_t)) tmps[gid].W_len = ctx.W_len; } -KERNEL_FQ void m10700_comp (KERN_ATTR_TMPS_ESALT (pdf17l8_tmp_t, pdf_t)) +KERNEL_FQ KERNEL_FA void m10700_comp (KERN_ATTR_TMPS_ESALT (pdf17l8_tmp_t, pdf_t)) { /** * modifier diff --git a/OpenCL/m10700-pure.cl b/OpenCL/m10700-pure.cl index 327c76e71..688caf153 100644 --- a/OpenCL/m10700-pure.cl +++ b/OpenCL/m10700-pure.cl @@ -1167,7 +1167,7 @@ DECLSPEC u32 do_round (PRIVATE_AS const u32 *w, const u32 pw_len, PRIVATE_AS pdf return ex; } -KERNEL_FQ void m10700_init (KERN_ATTR_TMPS_ESALT (pdf17l8_tmp_t, pdf_t)) +KERNEL_FQ KERNEL_FA void m10700_init (KERN_ATTR_TMPS_ESALT (pdf17l8_tmp_t, pdf_t)) { /** * base @@ -1211,7 +1211,7 @@ KERNEL_FQ void m10700_init (KERN_ATTR_TMPS_ESALT (pdf17l8_tmp_t, pdf_t)) tmps[gid] = tmp; } -KERNEL_FQ void m10700_loop (KERN_ATTR_TMPS_ESALT (pdf17l8_tmp_t, pdf_t)) +KERNEL_FQ KERNEL_FA void m10700_loop (KERN_ATTR_TMPS_ESALT (pdf17l8_tmp_t, pdf_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -1289,7 +1289,7 @@ KERNEL_FQ void m10700_loop (KERN_ATTR_TMPS_ESALT (pdf17l8_tmp_t, pdf_t)) tmps[gid] = tmp; } -KERNEL_FQ void m10700_comp (KERN_ATTR_TMPS_ESALT (pdf17l8_tmp_t, pdf_t)) +KERNEL_FQ KERNEL_FA void m10700_comp (KERN_ATTR_TMPS_ESALT (pdf17l8_tmp_t, pdf_t)) { /** * modifier diff --git a/OpenCL/m10800_a0-optimized.cl b/OpenCL/m10800_a0-optimized.cl index 4825f106d..6182d81d3 100644 --- a/OpenCL/m10800_a0-optimized.cl +++ b/OpenCL/m10800_a0-optimized.cl @@ -122,7 +122,7 @@ DECLSPEC void sha384_transform_intern (PRIVATE_AS const u32x *w0, PRIVATE_AS con digest[7] = 0; } -KERNEL_FQ void m10800_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m10800_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -215,15 +215,15 @@ KERNEL_FQ void m10800_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m10800_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m10800_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m10800_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m10800_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m10800_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m10800_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -328,10 +328,10 @@ KERNEL_FQ void m10800_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m10800_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m10800_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m10800_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m10800_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m10800_a0-pure.cl b/OpenCL/m10800_a0-pure.cl index 665d0fe0c..a1d3ff787 100644 --- a/OpenCL/m10800_a0-pure.cl +++ b/OpenCL/m10800_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha384.cl) #endif -KERNEL_FQ void m10800_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m10800_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -60,7 +60,7 @@ KERNEL_FQ void m10800_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m10800_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m10800_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m10800_a1-optimized.cl b/OpenCL/m10800_a1-optimized.cl index ad3321401..0dd77c59d 100644 --- a/OpenCL/m10800_a1-optimized.cl +++ b/OpenCL/m10800_a1-optimized.cl @@ -120,7 +120,7 @@ DECLSPEC void sha384_transform_intern (PRIVATE_AS const u32x *w0, PRIVATE_AS con digest[7] = 0; } -KERNEL_FQ void m10800_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10800_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -271,15 +271,15 @@ KERNEL_FQ void m10800_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m10800_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10800_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m10800_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10800_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m10800_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10800_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -442,10 +442,10 @@ KERNEL_FQ void m10800_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m10800_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10800_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m10800_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10800_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m10800_a1-pure.cl b/OpenCL/m10800_a1-pure.cl index 827093244..f2422a392 100644 --- a/OpenCL/m10800_a1-pure.cl +++ b/OpenCL/m10800_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha384.cl) #endif -KERNEL_FQ void m10800_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10800_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -56,7 +56,7 @@ KERNEL_FQ void m10800_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m10800_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10800_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m10800_a3-optimized.cl b/OpenCL/m10800_a3-optimized.cl index 371e024d2..342e46d7f 100644 --- a/OpenCL/m10800_a3-optimized.cl +++ b/OpenCL/m10800_a3-optimized.cl @@ -256,7 +256,7 @@ DECLSPEC void m10800s (PRIVATE_AS u32 *w, const u32 pw_len, KERN_ATTR_FUNC_VECTO } } -KERNEL_FQ void m10800_m04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m10800_m04 (KERN_ATTR_VECTOR ()) { /** * base @@ -296,7 +296,7 @@ KERNEL_FQ void m10800_m04 (KERN_ATTR_VECTOR ()) m10800m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m10800_m08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m10800_m08 (KERN_ATTR_VECTOR ()) { /** * base @@ -336,7 +336,7 @@ KERNEL_FQ void m10800_m08 (KERN_ATTR_VECTOR ()) m10800m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m10800_m16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m10800_m16 (KERN_ATTR_VECTOR ()) { /** * base @@ -376,7 +376,7 @@ KERNEL_FQ void m10800_m16 (KERN_ATTR_VECTOR ()) m10800m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m10800_s04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m10800_s04 (KERN_ATTR_VECTOR ()) { /** * base @@ -416,7 +416,7 @@ KERNEL_FQ void m10800_s04 (KERN_ATTR_VECTOR ()) m10800s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m10800_s08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m10800_s08 (KERN_ATTR_VECTOR ()) { /** * base @@ -456,7 +456,7 @@ KERNEL_FQ void m10800_s08 (KERN_ATTR_VECTOR ()) m10800s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m10800_s16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m10800_s16 (KERN_ATTR_VECTOR ()) { /** * base diff --git a/OpenCL/m10800_a3-pure.cl b/OpenCL/m10800_a3-pure.cl index a1c0213c2..cc4bdf4e5 100644 --- a/OpenCL/m10800_a3-pure.cl +++ b/OpenCL/m10800_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha384.cl) #endif -KERNEL_FQ void m10800_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m10800_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -69,7 +69,7 @@ KERNEL_FQ void m10800_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m10800_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m10800_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m10810_a0-optimized.cl b/OpenCL/m10810_a0-optimized.cl index 9bee00928..c833aaf14 100644 --- a/OpenCL/m10810_a0-optimized.cl +++ b/OpenCL/m10810_a0-optimized.cl @@ -122,7 +122,7 @@ DECLSPEC void sha384_transform_intern (PRIVATE_AS const u32x *w0, PRIVATE_AS con digest[7] = 0; } -KERNEL_FQ void m10810_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m10810_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -288,15 +288,15 @@ KERNEL_FQ void m10810_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m10810_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m10810_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m10810_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m10810_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m10810_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m10810_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -474,10 +474,10 @@ KERNEL_FQ void m10810_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m10810_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m10810_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m10810_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m10810_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m10810_a0-pure.cl b/OpenCL/m10810_a0-pure.cl index 5ba543ff4..dc7bb4739 100644 --- a/OpenCL/m10810_a0-pure.cl +++ b/OpenCL/m10810_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha384.cl) #endif -KERNEL_FQ void m10810_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m10810_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -71,7 +71,7 @@ KERNEL_FQ void m10810_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m10810_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m10810_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m10810_a1-optimized.cl b/OpenCL/m10810_a1-optimized.cl index 76c6fc3d1..7834db98e 100644 --- a/OpenCL/m10810_a1-optimized.cl +++ b/OpenCL/m10810_a1-optimized.cl @@ -120,7 +120,7 @@ DECLSPEC void sha384_transform_intern (PRIVATE_AS const u32x *w0, PRIVATE_AS con digest[7] = 0; } -KERNEL_FQ void m10810_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10810_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -346,15 +346,15 @@ KERNEL_FQ void m10810_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m10810_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10810_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m10810_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10810_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m10810_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10810_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -592,10 +592,10 @@ KERNEL_FQ void m10810_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m10810_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10810_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m10810_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10810_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m10810_a1-pure.cl b/OpenCL/m10810_a1-pure.cl index 31a34e647..459ee66e3 100644 --- a/OpenCL/m10810_a1-pure.cl +++ b/OpenCL/m10810_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha384.cl) #endif -KERNEL_FQ void m10810_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10810_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -67,7 +67,7 @@ KERNEL_FQ void m10810_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m10810_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10810_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m10810_a3-optimized.cl b/OpenCL/m10810_a3-optimized.cl index c4be02491..a14ac91ef 100644 --- a/OpenCL/m10810_a3-optimized.cl +++ b/OpenCL/m10810_a3-optimized.cl @@ -307,7 +307,7 @@ DECLSPEC void m10810s (PRIVATE_AS u32 *w, const u32 pw_len, KERN_ATTR_FUNC_VECTO } } -KERNEL_FQ void m10810_m04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m10810_m04 (KERN_ATTR_VECTOR ()) { /** * base @@ -347,7 +347,7 @@ KERNEL_FQ void m10810_m04 (KERN_ATTR_VECTOR ()) m10810m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m10810_m08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m10810_m08 (KERN_ATTR_VECTOR ()) { /** * base @@ -387,7 +387,7 @@ KERNEL_FQ void m10810_m08 (KERN_ATTR_VECTOR ()) m10810m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m10810_m16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m10810_m16 (KERN_ATTR_VECTOR ()) { /** * base @@ -427,7 +427,7 @@ KERNEL_FQ void m10810_m16 (KERN_ATTR_VECTOR ()) m10810m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m10810_s04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m10810_s04 (KERN_ATTR_VECTOR ()) { /** * base @@ -467,7 +467,7 @@ KERNEL_FQ void m10810_s04 (KERN_ATTR_VECTOR ()) m10810s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m10810_s08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m10810_s08 (KERN_ATTR_VECTOR ()) { /** * base @@ -507,7 +507,7 @@ KERNEL_FQ void m10810_s08 (KERN_ATTR_VECTOR ()) m10810s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m10810_s16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m10810_s16 (KERN_ATTR_VECTOR ()) { /** * base diff --git a/OpenCL/m10810_a3-pure.cl b/OpenCL/m10810_a3-pure.cl index 334370c7b..d9ede0052 100644 --- a/OpenCL/m10810_a3-pure.cl +++ b/OpenCL/m10810_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha384.cl) #endif -KERNEL_FQ void m10810_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m10810_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -80,7 +80,7 @@ KERNEL_FQ void m10810_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m10810_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m10810_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m10820_a0-optimized.cl b/OpenCL/m10820_a0-optimized.cl index 2fd131708..2c1b43994 100644 --- a/OpenCL/m10820_a0-optimized.cl +++ b/OpenCL/m10820_a0-optimized.cl @@ -122,7 +122,7 @@ DECLSPEC void sha384_transform_intern (PRIVATE_AS const u32x *w0, PRIVATE_AS con digest[7] = 0; } -KERNEL_FQ void m10820_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m10820_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -268,15 +268,15 @@ KERNEL_FQ void m10820_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m10820_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m10820_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m10820_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m10820_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m10820_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m10820_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -434,10 +434,10 @@ KERNEL_FQ void m10820_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m10820_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m10820_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m10820_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m10820_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m10820_a0-pure.cl b/OpenCL/m10820_a0-pure.cl index dcb959972..ca0af920a 100644 --- a/OpenCL/m10820_a0-pure.cl +++ b/OpenCL/m10820_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha384.cl) #endif -KERNEL_FQ void m10820_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m10820_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -64,7 +64,7 @@ KERNEL_FQ void m10820_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m10820_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m10820_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m10820_a1-optimized.cl b/OpenCL/m10820_a1-optimized.cl index beb234e13..cfa3f7a35 100644 --- a/OpenCL/m10820_a1-optimized.cl +++ b/OpenCL/m10820_a1-optimized.cl @@ -120,7 +120,7 @@ DECLSPEC void sha384_transform_intern (PRIVATE_AS const u32x *w0, PRIVATE_AS con digest[7] = 0; } -KERNEL_FQ void m10820_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10820_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -324,15 +324,15 @@ KERNEL_FQ void m10820_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m10820_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10820_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m10820_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10820_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m10820_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10820_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -548,10 +548,10 @@ KERNEL_FQ void m10820_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m10820_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10820_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m10820_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10820_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m10820_a1-pure.cl b/OpenCL/m10820_a1-pure.cl index a58b437a4..c6bb0daf2 100644 --- a/OpenCL/m10820_a1-pure.cl +++ b/OpenCL/m10820_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha384.cl) #endif -KERNEL_FQ void m10820_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10820_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -58,7 +58,7 @@ KERNEL_FQ void m10820_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m10820_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10820_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m10820_a3-optimized.cl b/OpenCL/m10820_a3-optimized.cl index 3b6ccedd9..f83649e0c 100644 --- a/OpenCL/m10820_a3-optimized.cl +++ b/OpenCL/m10820_a3-optimized.cl @@ -362,7 +362,7 @@ DECLSPEC void m10820s (PRIVATE_AS u32 *w, const u32 pw_len, KERN_ATTR_FUNC_BASIC } } -KERNEL_FQ void m10820_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10820_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -402,7 +402,7 @@ KERNEL_FQ void m10820_m04 (KERN_ATTR_BASIC ()) m10820m (w, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m10820_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10820_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -442,7 +442,7 @@ KERNEL_FQ void m10820_m08 (KERN_ATTR_BASIC ()) m10820m (w, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m10820_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10820_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -482,7 +482,7 @@ KERNEL_FQ void m10820_m16 (KERN_ATTR_BASIC ()) m10820m (w, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m10820_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10820_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -522,7 +522,7 @@ KERNEL_FQ void m10820_s04 (KERN_ATTR_BASIC ()) m10820s (w, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m10820_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10820_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -562,7 +562,7 @@ KERNEL_FQ void m10820_s08 (KERN_ATTR_BASIC ()) m10820s (w, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m10820_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10820_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m10820_a3-pure.cl b/OpenCL/m10820_a3-pure.cl index 542612a8b..1b0b4bc83 100644 --- a/OpenCL/m10820_a3-pure.cl +++ b/OpenCL/m10820_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha384.cl) #endif -KERNEL_FQ void m10820_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m10820_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -75,7 +75,7 @@ KERNEL_FQ void m10820_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m10820_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m10820_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m10830_a0-optimized.cl b/OpenCL/m10830_a0-optimized.cl index de034f608..22a03dd59 100644 --- a/OpenCL/m10830_a0-optimized.cl +++ b/OpenCL/m10830_a0-optimized.cl @@ -122,7 +122,7 @@ DECLSPEC void sha384_transform_intern (PRIVATE_AS const u32x *w0, PRIVATE_AS con digest[7] = 0; } -KERNEL_FQ void m10830_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m10830_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -293,15 +293,15 @@ KERNEL_FQ void m10830_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m10830_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m10830_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m10830_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m10830_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m10830_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m10830_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -484,10 +484,10 @@ KERNEL_FQ void m10830_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m10830_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m10830_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m10830_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m10830_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m10830_a0-pure.cl b/OpenCL/m10830_a0-pure.cl index 9f8c33c07..c40ac5e30 100644 --- a/OpenCL/m10830_a0-pure.cl +++ b/OpenCL/m10830_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha384.cl) #endif -KERNEL_FQ void m10830_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m10830_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -71,7 +71,7 @@ KERNEL_FQ void m10830_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m10830_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m10830_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m10830_a1-optimized.cl b/OpenCL/m10830_a1-optimized.cl index a98dca237..38ae65d22 100644 --- a/OpenCL/m10830_a1-optimized.cl +++ b/OpenCL/m10830_a1-optimized.cl @@ -120,7 +120,7 @@ DECLSPEC void sha384_transform_intern (PRIVATE_AS const u32x *w0, PRIVATE_AS con digest[7] = 0; } -KERNEL_FQ void m10830_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10830_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -351,15 +351,15 @@ KERNEL_FQ void m10830_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m10830_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10830_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m10830_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10830_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m10830_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10830_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -602,10 +602,10 @@ KERNEL_FQ void m10830_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m10830_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10830_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m10830_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10830_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m10830_a1-pure.cl b/OpenCL/m10830_a1-pure.cl index 23c2954f8..c0376c124 100644 --- a/OpenCL/m10830_a1-pure.cl +++ b/OpenCL/m10830_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha384.cl) #endif -KERNEL_FQ void m10830_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10830_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -67,7 +67,7 @@ KERNEL_FQ void m10830_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m10830_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10830_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m10830_a3-optimized.cl b/OpenCL/m10830_a3-optimized.cl index 9e1177f40..81e590b10 100644 --- a/OpenCL/m10830_a3-optimized.cl +++ b/OpenCL/m10830_a3-optimized.cl @@ -307,7 +307,7 @@ DECLSPEC void m10830s (PRIVATE_AS u32 *w, const u32 pw_len, KERN_ATTR_FUNC_VECTO } } -KERNEL_FQ void m10830_m04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m10830_m04 (KERN_ATTR_VECTOR ()) { /** * base @@ -347,7 +347,7 @@ KERNEL_FQ void m10830_m04 (KERN_ATTR_VECTOR ()) m10830m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m10830_m08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m10830_m08 (KERN_ATTR_VECTOR ()) { /** * base @@ -387,7 +387,7 @@ KERNEL_FQ void m10830_m08 (KERN_ATTR_VECTOR ()) m10830m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m10830_m16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m10830_m16 (KERN_ATTR_VECTOR ()) { /** * base @@ -427,7 +427,7 @@ KERNEL_FQ void m10830_m16 (KERN_ATTR_VECTOR ()) m10830m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m10830_s04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m10830_s04 (KERN_ATTR_VECTOR ()) { /** * base @@ -467,7 +467,7 @@ KERNEL_FQ void m10830_s04 (KERN_ATTR_VECTOR ()) m10830s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m10830_s08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m10830_s08 (KERN_ATTR_VECTOR ()) { /** * base @@ -507,7 +507,7 @@ KERNEL_FQ void m10830_s08 (KERN_ATTR_VECTOR ()) m10830s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m10830_s16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m10830_s16 (KERN_ATTR_VECTOR ()) { /** * base diff --git a/OpenCL/m10830_a3-pure.cl b/OpenCL/m10830_a3-pure.cl index 052523e08..989133aa1 100644 --- a/OpenCL/m10830_a3-pure.cl +++ b/OpenCL/m10830_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha384.cl) #endif -KERNEL_FQ void m10830_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m10830_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -80,7 +80,7 @@ KERNEL_FQ void m10830_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m10830_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m10830_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m10840_a0-optimized.cl b/OpenCL/m10840_a0-optimized.cl index 6629619d2..6ff980fb4 100644 --- a/OpenCL/m10840_a0-optimized.cl +++ b/OpenCL/m10840_a0-optimized.cl @@ -122,7 +122,7 @@ DECLSPEC void sha384_transform_intern (PRIVATE_AS const u32x *w0, PRIVATE_AS con digest[7] = 0; } -KERNEL_FQ void m10840_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m10840_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -273,15 +273,15 @@ KERNEL_FQ void m10840_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m10840_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m10840_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m10840_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m10840_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m10840_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m10840_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -444,10 +444,10 @@ KERNEL_FQ void m10840_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m10840_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m10840_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m10840_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m10840_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m10840_a0-pure.cl b/OpenCL/m10840_a0-pure.cl index 531da18b0..22b180ecd 100644 --- a/OpenCL/m10840_a0-pure.cl +++ b/OpenCL/m10840_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha384.cl) #endif -KERNEL_FQ void m10840_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m10840_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -64,7 +64,7 @@ KERNEL_FQ void m10840_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m10840_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m10840_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m10840_a1-optimized.cl b/OpenCL/m10840_a1-optimized.cl index 8ec344beb..85eafd57b 100644 --- a/OpenCL/m10840_a1-optimized.cl +++ b/OpenCL/m10840_a1-optimized.cl @@ -120,7 +120,7 @@ DECLSPEC void sha384_transform_intern (PRIVATE_AS const u32x *w0, PRIVATE_AS con digest[7] = 0; } -KERNEL_FQ void m10840_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10840_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -329,15 +329,15 @@ KERNEL_FQ void m10840_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m10840_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10840_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m10840_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10840_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m10840_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10840_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -558,10 +558,10 @@ KERNEL_FQ void m10840_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m10840_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10840_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m10840_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10840_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m10840_a1-pure.cl b/OpenCL/m10840_a1-pure.cl index 4dd8ba1c3..62c6c56a7 100644 --- a/OpenCL/m10840_a1-pure.cl +++ b/OpenCL/m10840_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha384.cl) #endif -KERNEL_FQ void m10840_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10840_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -58,7 +58,7 @@ KERNEL_FQ void m10840_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m10840_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10840_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m10840_a3-optimized.cl b/OpenCL/m10840_a3-optimized.cl index 8f05f4bd9..b0e9ed875 100644 --- a/OpenCL/m10840_a3-optimized.cl +++ b/OpenCL/m10840_a3-optimized.cl @@ -362,7 +362,7 @@ DECLSPEC void m10840s (PRIVATE_AS u32 *w, const u32 pw_len, KERN_ATTR_FUNC_BASIC } } -KERNEL_FQ void m10840_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10840_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -402,7 +402,7 @@ KERNEL_FQ void m10840_m04 (KERN_ATTR_BASIC ()) m10840m (w, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m10840_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10840_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -442,7 +442,7 @@ KERNEL_FQ void m10840_m08 (KERN_ATTR_BASIC ()) m10840m (w, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m10840_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10840_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -482,7 +482,7 @@ KERNEL_FQ void m10840_m16 (KERN_ATTR_BASIC ()) m10840m (w, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m10840_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10840_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -522,7 +522,7 @@ KERNEL_FQ void m10840_s04 (KERN_ATTR_BASIC ()) m10840s (w, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m10840_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10840_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -562,7 +562,7 @@ KERNEL_FQ void m10840_s08 (KERN_ATTR_BASIC ()) m10840s (w, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m10840_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10840_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m10840_a3-pure.cl b/OpenCL/m10840_a3-pure.cl index 4469efe45..6ec9cc3c0 100644 --- a/OpenCL/m10840_a3-pure.cl +++ b/OpenCL/m10840_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha384.cl) #endif -KERNEL_FQ void m10840_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m10840_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -75,7 +75,7 @@ KERNEL_FQ void m10840_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m10840_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m10840_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m10870_a0-optimized.cl b/OpenCL/m10870_a0-optimized.cl index ed2c4b80c..1dfc798f1 100644 --- a/OpenCL/m10870_a0-optimized.cl +++ b/OpenCL/m10870_a0-optimized.cl @@ -122,7 +122,7 @@ DECLSPEC void sha384_transform_intern (PRIVATE_AS const u32x *w0, PRIVATE_AS con digest[7] = 0; } -KERNEL_FQ void m10870_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m10870_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -220,15 +220,15 @@ KERNEL_FQ void m10870_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m10870_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m10870_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m10870_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m10870_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m10870_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m10870_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -338,10 +338,10 @@ KERNEL_FQ void m10870_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m10870_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m10870_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m10870_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m10870_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m10870_a0-pure.cl b/OpenCL/m10870_a0-pure.cl index aacfffea5..15bd04d9e 100644 --- a/OpenCL/m10870_a0-pure.cl +++ b/OpenCL/m10870_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha384.cl) #endif -KERNEL_FQ void m10870_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m10870_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -60,7 +60,7 @@ KERNEL_FQ void m10870_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m10870_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m10870_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m10870_a1-optimized.cl b/OpenCL/m10870_a1-optimized.cl index d4a08c550..a2095ed4e 100644 --- a/OpenCL/m10870_a1-optimized.cl +++ b/OpenCL/m10870_a1-optimized.cl @@ -120,7 +120,7 @@ DECLSPEC void sha384_transform_intern (PRIVATE_AS const u32x *w0, PRIVATE_AS con digest[7] = 0; } -KERNEL_FQ void m10870_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10870_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -276,15 +276,15 @@ KERNEL_FQ void m10870_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m10870_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10870_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m10870_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10870_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m10870_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10870_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -452,10 +452,10 @@ KERNEL_FQ void m10870_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m10870_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10870_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m10870_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10870_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m10870_a1-pure.cl b/OpenCL/m10870_a1-pure.cl index 659c1c06c..99776d0f6 100644 --- a/OpenCL/m10870_a1-pure.cl +++ b/OpenCL/m10870_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha384.cl) #endif -KERNEL_FQ void m10870_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10870_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -56,7 +56,7 @@ KERNEL_FQ void m10870_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m10870_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m10870_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m10870_a3-optimized.cl b/OpenCL/m10870_a3-optimized.cl index 3a24df3bb..ec1d7e675 100644 --- a/OpenCL/m10870_a3-optimized.cl +++ b/OpenCL/m10870_a3-optimized.cl @@ -256,7 +256,7 @@ DECLSPEC void m10870s (PRIVATE_AS u32 *w, const u32 pw_len, KERN_ATTR_FUNC_VECTO } } -KERNEL_FQ void m10870_m04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m10870_m04 (KERN_ATTR_VECTOR ()) { /** * base @@ -296,7 +296,7 @@ KERNEL_FQ void m10870_m04 (KERN_ATTR_VECTOR ()) m10870m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m10870_m08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m10870_m08 (KERN_ATTR_VECTOR ()) { /** * base @@ -336,7 +336,7 @@ KERNEL_FQ void m10870_m08 (KERN_ATTR_VECTOR ()) m10870m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m10870_m16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m10870_m16 (KERN_ATTR_VECTOR ()) { /** * base @@ -376,7 +376,7 @@ KERNEL_FQ void m10870_m16 (KERN_ATTR_VECTOR ()) m10870m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m10870_s04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m10870_s04 (KERN_ATTR_VECTOR ()) { /** * base @@ -416,7 +416,7 @@ KERNEL_FQ void m10870_s04 (KERN_ATTR_VECTOR ()) m10870s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m10870_s08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m10870_s08 (KERN_ATTR_VECTOR ()) { /** * base @@ -456,7 +456,7 @@ KERNEL_FQ void m10870_s08 (KERN_ATTR_VECTOR ()) m10870s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m10870_s16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m10870_s16 (KERN_ATTR_VECTOR ()) { /** * base diff --git a/OpenCL/m10870_a3-pure.cl b/OpenCL/m10870_a3-pure.cl index 26dbae7c1..115016dc4 100644 --- a/OpenCL/m10870_a3-pure.cl +++ b/OpenCL/m10870_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha384.cl) #endif -KERNEL_FQ void m10870_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m10870_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -69,7 +69,7 @@ KERNEL_FQ void m10870_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m10870_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m10870_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m10900-pure.cl b/OpenCL/m10900-pure.cl index 009715af6..3e19c16a4 100644 --- a/OpenCL/m10900-pure.cl +++ b/OpenCL/m10900-pure.cl @@ -75,7 +75,7 @@ DECLSPEC void hmac_sha256_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVA sha256_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m10900_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, pbkdf2_sha256_t)) +KERNEL_FQ KERNEL_FA void m10900_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, pbkdf2_sha256_t)) { /** * base @@ -159,7 +159,7 @@ KERNEL_FQ void m10900_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, pbkdf2_sh } } -KERNEL_FQ void m10900_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, pbkdf2_sha256_t)) +KERNEL_FQ KERNEL_FA void m10900_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, pbkdf2_sha256_t)) { const u64 gid = get_global_id (0); @@ -265,7 +265,7 @@ KERNEL_FQ void m10900_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, pbkdf2_sh } } -KERNEL_FQ void m10900_comp (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, pbkdf2_sha256_t)) +KERNEL_FQ KERNEL_FA void m10900_comp (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, pbkdf2_sha256_t)) { /** * base diff --git a/OpenCL/m11000_a0-optimized.cl b/OpenCL/m11000_a0-optimized.cl index 05bf90ac3..5103db800 100644 --- a/OpenCL/m11000_a0-optimized.cl +++ b/OpenCL/m11000_a0-optimized.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m11000_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m11000_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -305,15 +305,15 @@ KERNEL_FQ void m11000_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m11000_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m11000_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m11000_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m11000_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m11000_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m11000_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -614,10 +614,10 @@ KERNEL_FQ void m11000_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m11000_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m11000_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m11000_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m11000_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m11000_a0-pure.cl b/OpenCL/m11000_a0-pure.cl index 6969c2929..f9d468470 100644 --- a/OpenCL/m11000_a0-pure.cl +++ b/OpenCL/m11000_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m11000_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m11000_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -64,7 +64,7 @@ KERNEL_FQ void m11000_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m11000_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m11000_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m11000_a1-optimized.cl b/OpenCL/m11000_a1-optimized.cl index 2500deba6..5851f5501 100644 --- a/OpenCL/m11000_a1-optimized.cl +++ b/OpenCL/m11000_a1-optimized.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m11000_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11000_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -361,15 +361,15 @@ KERNEL_FQ void m11000_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m11000_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11000_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m11000_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11000_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m11000_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11000_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -728,10 +728,10 @@ KERNEL_FQ void m11000_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m11000_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11000_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m11000_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11000_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m11000_a1-pure.cl b/OpenCL/m11000_a1-pure.cl index 906c5bcfd..9a71ab94d 100644 --- a/OpenCL/m11000_a1-pure.cl +++ b/OpenCL/m11000_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m11000_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11000_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -58,7 +58,7 @@ KERNEL_FQ void m11000_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m11000_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11000_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m11000_a3-optimized.cl b/OpenCL/m11000_a3-optimized.cl index a7cb4055a..a35bb460c 100644 --- a/OpenCL/m11000_a3-optimized.cl +++ b/OpenCL/m11000_a3-optimized.cl @@ -550,7 +550,7 @@ DECLSPEC void m11000s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m11000_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11000_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -599,7 +599,7 @@ KERNEL_FQ void m11000_m04 (KERN_ATTR_BASIC ()) m11000m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m11000_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11000_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -648,7 +648,7 @@ KERNEL_FQ void m11000_m08 (KERN_ATTR_BASIC ()) m11000m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m11000_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11000_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -697,7 +697,7 @@ KERNEL_FQ void m11000_m16 (KERN_ATTR_BASIC ()) m11000m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m11000_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11000_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -746,7 +746,7 @@ KERNEL_FQ void m11000_s04 (KERN_ATTR_BASIC ()) m11000s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m11000_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11000_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -795,7 +795,7 @@ KERNEL_FQ void m11000_s08 (KERN_ATTR_BASIC ()) m11000s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m11000_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11000_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m11000_a3-pure.cl b/OpenCL/m11000_a3-pure.cl index 21cea2c2d..4892b6af3 100644 --- a/OpenCL/m11000_a3-pure.cl +++ b/OpenCL/m11000_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m11000_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m11000_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -75,7 +75,7 @@ KERNEL_FQ void m11000_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m11000_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m11000_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m11100_a0-optimized.cl b/OpenCL/m11100_a0-optimized.cl index 23ba22a5a..44cd453df 100644 --- a/OpenCL/m11100_a0-optimized.cl +++ b/OpenCL/m11100_a0-optimized.cl @@ -28,7 +28,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m11100_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m11100_m04 (KERN_ATTR_RULES ()) { /** * base @@ -354,15 +354,15 @@ KERNEL_FQ void m11100_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m11100_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m11100_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m11100_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m11100_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m11100_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m11100_s04 (KERN_ATTR_RULES ()) { /** * base @@ -703,10 +703,10 @@ KERNEL_FQ void m11100_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m11100_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m11100_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m11100_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m11100_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m11100_a0-pure.cl b/OpenCL/m11100_a0-pure.cl index ed8221ae7..728ad90df 100644 --- a/OpenCL/m11100_a0-pure.cl +++ b/OpenCL/m11100_a0-pure.cl @@ -28,7 +28,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m11100_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m11100_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -174,7 +174,7 @@ KERNEL_FQ void m11100_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m11100_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m11100_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m11100_a1-optimized.cl b/OpenCL/m11100_a1-optimized.cl index 015a2fdf4..6b6182bf9 100644 --- a/OpenCL/m11100_a1-optimized.cl +++ b/OpenCL/m11100_a1-optimized.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m11100_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11100_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -412,15 +412,15 @@ KERNEL_FQ void m11100_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m11100_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11100_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m11100_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11100_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m11100_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11100_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -821,10 +821,10 @@ KERNEL_FQ void m11100_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m11100_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11100_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m11100_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11100_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m11100_a1-pure.cl b/OpenCL/m11100_a1-pure.cl index e2189be2d..8e485d844 100644 --- a/OpenCL/m11100_a1-pure.cl +++ b/OpenCL/m11100_a1-pure.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m11100_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11100_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -170,7 +170,7 @@ KERNEL_FQ void m11100_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m11100_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11100_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m11100_a3-optimized.cl b/OpenCL/m11100_a3-optimized.cl index af87664e3..5781e0bfd 100644 --- a/OpenCL/m11100_a3-optimized.cl +++ b/OpenCL/m11100_a3-optimized.cl @@ -645,7 +645,7 @@ DECLSPEC void m11100s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m11100_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11100_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -715,7 +715,7 @@ KERNEL_FQ void m11100_m04 (KERN_ATTR_BASIC ()) m11100m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m11100_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11100_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -785,7 +785,7 @@ KERNEL_FQ void m11100_m08 (KERN_ATTR_BASIC ()) m11100m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m11100_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11100_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -855,7 +855,7 @@ KERNEL_FQ void m11100_m16 (KERN_ATTR_BASIC ()) m11100m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m11100_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11100_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -925,7 +925,7 @@ KERNEL_FQ void m11100_s04 (KERN_ATTR_BASIC ()) m11100s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m11100_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11100_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -995,7 +995,7 @@ KERNEL_FQ void m11100_s08 (KERN_ATTR_BASIC ()) m11100s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m11100_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11100_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m11100_a3-pure.cl b/OpenCL/m11100_a3-pure.cl index cdb063f02..450965776 100644 --- a/OpenCL/m11100_a3-pure.cl +++ b/OpenCL/m11100_a3-pure.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m11100_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m11100_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -213,7 +213,7 @@ KERNEL_FQ void m11100_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m11100_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m11100_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m11200_a0-optimized.cl b/OpenCL/m11200_a0-optimized.cl index 9cf4eb094..4898d94ae 100644 --- a/OpenCL/m11200_a0-optimized.cl +++ b/OpenCL/m11200_a0-optimized.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m11200_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m11200_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -470,15 +470,15 @@ KERNEL_FQ void m11200_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m11200_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m11200_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m11200_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m11200_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m11200_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m11200_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -944,10 +944,10 @@ KERNEL_FQ void m11200_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m11200_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m11200_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m11200_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m11200_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m11200_a0-pure.cl b/OpenCL/m11200_a0-pure.cl index 8fcb68a08..0fddb9a46 100644 --- a/OpenCL/m11200_a0-pure.cl +++ b/OpenCL/m11200_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m11200_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m11200_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -132,7 +132,7 @@ KERNEL_FQ void m11200_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m11200_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m11200_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m11200_a1-optimized.cl b/OpenCL/m11200_a1-optimized.cl index 67bd63aef..fe734cf1b 100644 --- a/OpenCL/m11200_a1-optimized.cl +++ b/OpenCL/m11200_a1-optimized.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m11200_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11200_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -526,15 +526,15 @@ KERNEL_FQ void m11200_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m11200_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11200_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m11200_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11200_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m11200_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11200_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -1058,10 +1058,10 @@ KERNEL_FQ void m11200_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m11200_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11200_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m11200_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11200_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m11200_a1-pure.cl b/OpenCL/m11200_a1-pure.cl index 051348f67..7e0c5c3e7 100644 --- a/OpenCL/m11200_a1-pure.cl +++ b/OpenCL/m11200_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m11200_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11200_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -128,7 +128,7 @@ KERNEL_FQ void m11200_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m11200_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11200_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m11200_a3-optimized.cl b/OpenCL/m11200_a3-optimized.cl index e74a76733..1ce0ff377 100644 --- a/OpenCL/m11200_a3-optimized.cl +++ b/OpenCL/m11200_a3-optimized.cl @@ -880,7 +880,7 @@ DECLSPEC void m11200s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m11200_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11200_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -933,7 +933,7 @@ KERNEL_FQ void m11200_m04 (KERN_ATTR_BASIC ()) m11200m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m11200_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11200_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -986,7 +986,7 @@ KERNEL_FQ void m11200_m08 (KERN_ATTR_BASIC ()) m11200m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m11200_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11200_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -1039,7 +1039,7 @@ KERNEL_FQ void m11200_m16 (KERN_ATTR_BASIC ()) m11200m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m11200_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11200_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -1092,7 +1092,7 @@ KERNEL_FQ void m11200_s04 (KERN_ATTR_BASIC ()) m11200s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m11200_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11200_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -1145,7 +1145,7 @@ KERNEL_FQ void m11200_s08 (KERN_ATTR_BASIC ()) m11200s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m11200_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11200_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m11200_a3-pure.cl b/OpenCL/m11200_a3-pure.cl index 79524b5cf..0578f3a56 100644 --- a/OpenCL/m11200_a3-pure.cl +++ b/OpenCL/m11200_a3-pure.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m11200_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m11200_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -155,7 +155,7 @@ KERNEL_FQ void m11200_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m11200_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m11200_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m11300-pure.cl b/OpenCL/m11300-pure.cl index 074d91797..438f806f7 100644 --- a/OpenCL/m11300-pure.cl +++ b/OpenCL/m11300-pure.cl @@ -89,7 +89,7 @@ DECLSPEC void hmac_sha512_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVA sha512_transform_vector (w0, w1, w2, w3, w4, w5, w6, w7, digest); } -KERNEL_FQ void m11300_init (KERN_ATTR_TMPS_ESALT (bitcoin_wallet_tmp_t, bitcoin_wallet_t)) +KERNEL_FQ KERNEL_FA void m11300_init (KERN_ATTR_TMPS_ESALT (bitcoin_wallet_tmp_t, bitcoin_wallet_t)) { /** * base @@ -119,7 +119,7 @@ KERNEL_FQ void m11300_init (KERN_ATTR_TMPS_ESALT (bitcoin_wallet_tmp_t, bitcoin_ tmps[gid].dgst[7] = ctx.h[7]; } -KERNEL_FQ void m11300_loop (KERN_ATTR_TMPS_ESALT (bitcoin_wallet_tmp_t, bitcoin_wallet_t)) +KERNEL_FQ KERNEL_FA void m11300_loop (KERN_ATTR_TMPS_ESALT (bitcoin_wallet_tmp_t, bitcoin_wallet_t)) { const u64 gid = get_global_id (0); @@ -211,7 +211,7 @@ KERNEL_FQ void m11300_loop (KERN_ATTR_TMPS_ESALT (bitcoin_wallet_tmp_t, bitcoin_ unpack64v (tmps, dgst, gid, 7, t7); } -KERNEL_FQ void m11300_comp (KERN_ATTR_TMPS_ESALT (bitcoin_wallet_tmp_t, bitcoin_wallet_t)) +KERNEL_FQ KERNEL_FA void m11300_comp (KERN_ATTR_TMPS_ESALT (bitcoin_wallet_tmp_t, bitcoin_wallet_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m11400_a0-pure.cl b/OpenCL/m11400_a0-pure.cl index e0cb1171d..fe3e08c3e 100644 --- a/OpenCL/m11400_a0-pure.cl +++ b/OpenCL/m11400_a0-pure.cl @@ -38,7 +38,7 @@ typedef struct sip #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m11400_mxx (KERN_ATTR_RULES_ESALT (sip_t)) +KERNEL_FQ KERNEL_FA void m11400_mxx (KERN_ATTR_RULES_ESALT (sip_t)) { /** * modifier @@ -136,7 +136,7 @@ KERNEL_FQ void m11400_mxx (KERN_ATTR_RULES_ESALT (sip_t)) } } -KERNEL_FQ void m11400_sxx (KERN_ATTR_RULES_ESALT (sip_t)) +KERNEL_FQ KERNEL_FA void m11400_sxx (KERN_ATTR_RULES_ESALT (sip_t)) { /** * modifier diff --git a/OpenCL/m11400_a1-pure.cl b/OpenCL/m11400_a1-pure.cl index 253f63d58..823abe3cb 100644 --- a/OpenCL/m11400_a1-pure.cl +++ b/OpenCL/m11400_a1-pure.cl @@ -36,7 +36,7 @@ typedef struct sip #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m11400_mxx (KERN_ATTR_ESALT (sip_t)) +KERNEL_FQ KERNEL_FA void m11400_mxx (KERN_ATTR_ESALT (sip_t)) { /** * modifier @@ -130,7 +130,7 @@ KERNEL_FQ void m11400_mxx (KERN_ATTR_ESALT (sip_t)) } } -KERNEL_FQ void m11400_sxx (KERN_ATTR_ESALT (sip_t)) +KERNEL_FQ KERNEL_FA void m11400_sxx (KERN_ATTR_ESALT (sip_t)) { /** * modifier diff --git a/OpenCL/m11400_a3-pure.cl b/OpenCL/m11400_a3-pure.cl index cf11f9295..c429e8ff4 100644 --- a/OpenCL/m11400_a3-pure.cl +++ b/OpenCL/m11400_a3-pure.cl @@ -36,7 +36,7 @@ typedef struct sip #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m11400_mxx (KERN_ATTR_VECTOR_ESALT (sip_t)) +KERNEL_FQ KERNEL_FA void m11400_mxx (KERN_ATTR_VECTOR_ESALT (sip_t)) { /** * modifier @@ -156,7 +156,7 @@ KERNEL_FQ void m11400_mxx (KERN_ATTR_VECTOR_ESALT (sip_t)) } } -KERNEL_FQ void m11400_sxx (KERN_ATTR_VECTOR_ESALT (sip_t)) +KERNEL_FQ KERNEL_FA void m11400_sxx (KERN_ATTR_VECTOR_ESALT (sip_t)) { /** * modifier diff --git a/OpenCL/m11500_a0-optimized.cl b/OpenCL/m11500_a0-optimized.cl index cef66fe88..8ce45c649 100644 --- a/OpenCL/m11500_a0-optimized.cl +++ b/OpenCL/m11500_a0-optimized.cl @@ -135,7 +135,7 @@ DECLSPEC u32x crc32 (PRIVATE_AS const u32x *w, const u32 pw_len, const u32 iv) return ~a; } -KERNEL_FQ void m11500_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m11500_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -215,15 +215,15 @@ KERNEL_FQ void m11500_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m11500_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m11500_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m11500_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m11500_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m11500_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m11500_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -315,10 +315,10 @@ KERNEL_FQ void m11500_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m11500_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m11500_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m11500_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m11500_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m11500_a0-pure.cl b/OpenCL/m11500_a0-pure.cl index 520975145..4b37034c1 100644 --- a/OpenCL/m11500_a0-pure.cl +++ b/OpenCL/m11500_a0-pure.cl @@ -123,7 +123,7 @@ DECLSPEC u32x crc32 (PRIVATE_AS const u32x *w, const u32 pw_len, const u32 iv) return ~a; } -KERNEL_FQ void m11500_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m11500_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -169,7 +169,7 @@ KERNEL_FQ void m11500_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m11500_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m11500_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m11500_a1-optimized.cl b/OpenCL/m11500_a1-optimized.cl index 0b6ad0808..78ff20370 100644 --- a/OpenCL/m11500_a1-optimized.cl +++ b/OpenCL/m11500_a1-optimized.cl @@ -133,7 +133,7 @@ DECLSPEC u32x crc32 (PRIVATE_AS const u32x *w, const u32 pw_len, const u32 iv) return ~a; } -KERNEL_FQ void m11500_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11500_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -273,15 +273,15 @@ KERNEL_FQ void m11500_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m11500_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11500_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m11500_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11500_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m11500_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11500_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -433,10 +433,10 @@ KERNEL_FQ void m11500_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m11500_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11500_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m11500_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11500_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m11500_a1-pure.cl b/OpenCL/m11500_a1-pure.cl index 7d6c54eae..4621690ba 100644 --- a/OpenCL/m11500_a1-pure.cl +++ b/OpenCL/m11500_a1-pure.cl @@ -121,7 +121,7 @@ DECLSPEC u32x crc32_g (GLOBAL_AS const u32x *w, const u32 pw_len, const u32 iv) return ~a; } -KERNEL_FQ void m11500_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11500_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -163,7 +163,7 @@ KERNEL_FQ void m11500_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m11500_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11500_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m11500_a3-optimized.cl b/OpenCL/m11500_a3-optimized.cl index 21794b812..5e369be7e 100644 --- a/OpenCL/m11500_a3-optimized.cl +++ b/OpenCL/m11500_a3-optimized.cl @@ -255,7 +255,7 @@ DECLSPEC void m11500s (PRIVATE_AS u32 *w, const u32 pw_len, KERN_ATTR_FUNC_BASIC } } -KERNEL_FQ void m11500_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11500_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -295,7 +295,7 @@ KERNEL_FQ void m11500_m04 (KERN_ATTR_BASIC ()) m11500m (w, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m11500_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11500_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -335,7 +335,7 @@ KERNEL_FQ void m11500_m08 (KERN_ATTR_BASIC ()) m11500m (w, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m11500_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11500_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -375,7 +375,7 @@ KERNEL_FQ void m11500_m16 (KERN_ATTR_BASIC ()) m11500m (w, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m11500_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11500_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -415,7 +415,7 @@ KERNEL_FQ void m11500_s04 (KERN_ATTR_BASIC ()) m11500s (w, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m11500_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11500_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -455,7 +455,7 @@ KERNEL_FQ void m11500_s08 (KERN_ATTR_BASIC ()) m11500s (w, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m11500_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11500_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m11500_a3-pure.cl b/OpenCL/m11500_a3-pure.cl index 8a64c4cc0..054d61b16 100644 --- a/OpenCL/m11500_a3-pure.cl +++ b/OpenCL/m11500_a3-pure.cl @@ -121,7 +121,7 @@ DECLSPEC u32x crc32 (PRIVATE_AS const u32x *w, const u32 pw_len, const u32 iv) return ~a; } -KERNEL_FQ void m11500_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m11500_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -174,7 +174,7 @@ KERNEL_FQ void m11500_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m11500_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m11500_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m11600-optimized.cl b/OpenCL/m11600-optimized.cl index 671349d99..2d2eb61d3 100644 --- a/OpenCL/m11600-optimized.cl +++ b/OpenCL/m11600-optimized.cl @@ -40,7 +40,7 @@ typedef struct #define MIN(a,b) (((a) < (b)) ? (a) : (b)) -KERNEL_FQ void m11600_init (KERN_ATTR_TMPS_HOOKS (seven_zip_tmp_t, seven_zip_hook_t)) +KERNEL_FQ KERNEL_FA void m11600_init (KERN_ATTR_TMPS_HOOKS (seven_zip_tmp_t, seven_zip_hook_t)) { /** * base @@ -62,7 +62,7 @@ KERNEL_FQ void m11600_init (KERN_ATTR_TMPS_HOOKS (seven_zip_tmp_t, seven_zip_hoo tmps[gid].len = 0; } -KERNEL_FQ void m11600_loop (KERN_ATTR_TMPS_HOOKS (seven_zip_tmp_t, seven_zip_hook_t)) +KERNEL_FQ KERNEL_FA void m11600_loop (KERN_ATTR_TMPS_HOOKS (seven_zip_tmp_t, seven_zip_hook_t)) { const u64 gid = get_global_id (0); @@ -178,7 +178,7 @@ KERNEL_FQ void m11600_loop (KERN_ATTR_TMPS_HOOKS (seven_zip_tmp_t, seven_zip_hoo tmps[gid].h[7] = h[7]; } -KERNEL_FQ void m11600_hook23 (KERN_ATTR_TMPS_HOOKS (seven_zip_tmp_t, seven_zip_hook_t)) +KERNEL_FQ KERNEL_FA void m11600_hook23 (KERN_ATTR_TMPS_HOOKS (seven_zip_tmp_t, seven_zip_hook_t)) { const u64 gid = get_global_id (0); @@ -233,7 +233,7 @@ KERNEL_FQ void m11600_hook23 (KERN_ATTR_TMPS_HOOKS (seven_zip_tmp_t, seven_zip_h hooks[gid].ukey[7] = hc_swap32_S (h[7]); } -KERNEL_FQ void m11600_comp (KERN_ATTR_TMPS_HOOKS (seven_zip_tmp_t, seven_zip_hook_t)) +KERNEL_FQ KERNEL_FA void m11600_comp (KERN_ATTR_TMPS_HOOKS (seven_zip_tmp_t, seven_zip_hook_t)) { /** * base diff --git a/OpenCL/m11600-pure.cl b/OpenCL/m11600-pure.cl index 585b1e308..85e59a4da 100644 --- a/OpenCL/m11600-pure.cl +++ b/OpenCL/m11600-pure.cl @@ -140,7 +140,7 @@ DECLSPEC void memcat8c_be (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u3 } } -KERNEL_FQ void m11600_init (KERN_ATTR_TMPS_HOOKS (seven_zip_tmp_t, seven_zip_hook_t)) +KERNEL_FQ KERNEL_FA void m11600_init (KERN_ATTR_TMPS_HOOKS (seven_zip_tmp_t, seven_zip_hook_t)) { /** * base @@ -187,7 +187,7 @@ KERNEL_FQ void m11600_init (KERN_ATTR_TMPS_HOOKS (seven_zip_tmp_t, seven_zip_hoo tmps[gid].len = ctx.len; } -KERNEL_FQ void m11600_loop (KERN_ATTR_TMPS_HOOKS (seven_zip_tmp_t, seven_zip_hook_t)) +KERNEL_FQ KERNEL_FA void m11600_loop (KERN_ATTR_TMPS_HOOKS (seven_zip_tmp_t, seven_zip_hook_t)) { /** * base @@ -286,7 +286,7 @@ KERNEL_FQ void m11600_loop (KERN_ATTR_TMPS_HOOKS (seven_zip_tmp_t, seven_zip_hoo tmps[gid].len = ctx.len; } -KERNEL_FQ void m11600_hook23 (KERN_ATTR_TMPS_HOOKS (seven_zip_tmp_t, seven_zip_hook_t)) +KERNEL_FQ KERNEL_FA void m11600_hook23 (KERN_ATTR_TMPS_HOOKS (seven_zip_tmp_t, seven_zip_hook_t)) { const u64 gid = get_global_id (0); @@ -341,7 +341,7 @@ KERNEL_FQ void m11600_hook23 (KERN_ATTR_TMPS_HOOKS (seven_zip_tmp_t, seven_zip_h hooks[gid].ukey[7] = hc_swap32_S (h[7]); } -KERNEL_FQ void m11600_comp (KERN_ATTR_TMPS_HOOKS (seven_zip_tmp_t, seven_zip_hook_t)) +KERNEL_FQ KERNEL_FA void m11600_comp (KERN_ATTR_TMPS_HOOKS (seven_zip_tmp_t, seven_zip_hook_t)) { /** * base diff --git a/OpenCL/m11700_a0-optimized.cl b/OpenCL/m11700_a0-optimized.cl index 55186edd5..72bb1db5e 100644 --- a/OpenCL/m11700_a0-optimized.cl +++ b/OpenCL/m11700_a0-optimized.cl @@ -87,7 +87,7 @@ DECLSPEC void streebog_g (PRIVATE_AS u64x *h, PRIVATE_AS const u64x *m, LOCAL_AS } } -KERNEL_FQ void m11700_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m11700_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -237,15 +237,15 @@ KERNEL_FQ void m11700_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m11700_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m11700_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m11700_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m11700_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m11700_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m11700_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -407,10 +407,10 @@ KERNEL_FQ void m11700_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m11700_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m11700_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m11700_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m11700_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m11700_a0-pure.cl b/OpenCL/m11700_a0-pure.cl index 05825df37..d565046eb 100644 --- a/OpenCL/m11700_a0-pure.cl +++ b/OpenCL/m11700_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_streebog256.cl) #endif -KERNEL_FQ void m11700_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m11700_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -89,7 +89,7 @@ KERNEL_FQ void m11700_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m11700_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m11700_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m11700_a1-optimized.cl b/OpenCL/m11700_a1-optimized.cl index 4a0c9e086..9bbbfe1c9 100644 --- a/OpenCL/m11700_a1-optimized.cl +++ b/OpenCL/m11700_a1-optimized.cl @@ -85,7 +85,7 @@ DECLSPEC void streebog_g (PRIVATE_AS u64x *h, PRIVATE_AS const u64x *m, LOCAL_AS } } -KERNEL_FQ void m11700_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11700_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -293,15 +293,15 @@ KERNEL_FQ void m11700_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m11700_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11700_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m11700_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11700_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m11700_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11700_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -521,10 +521,10 @@ KERNEL_FQ void m11700_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m11700_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11700_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m11700_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11700_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m11700_a1-pure.cl b/OpenCL/m11700_a1-pure.cl index 5bbe44e30..48346a286 100644 --- a/OpenCL/m11700_a1-pure.cl +++ b/OpenCL/m11700_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_streebog256.cl) #endif -KERNEL_FQ void m11700_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11700_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -85,7 +85,7 @@ KERNEL_FQ void m11700_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m11700_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11700_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m11700_a3-optimized.cl b/OpenCL/m11700_a3-optimized.cl index 211b7258e..d98def3d8 100644 --- a/OpenCL/m11700_a3-optimized.cl +++ b/OpenCL/m11700_a3-optimized.cl @@ -248,7 +248,7 @@ DECLSPEC void m11700s (LOCAL_AS u64 (*s_sbob_sl64)[256], PRIVATE_AS u32 *w, cons } } -KERNEL_FQ void m11700_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11700_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -312,7 +312,7 @@ KERNEL_FQ void m11700_m04 (KERN_ATTR_BASIC ()) m11700m (s_sbob_sl64, w, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m11700_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11700_m08 (KERN_ATTR_BASIC ()) { /** * modifier @@ -376,7 +376,7 @@ KERNEL_FQ void m11700_m08 (KERN_ATTR_BASIC ()) m11700m (s_sbob_sl64, w, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m11700_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11700_m16 (KERN_ATTR_BASIC ()) { /** * modifier @@ -440,7 +440,7 @@ KERNEL_FQ void m11700_m16 (KERN_ATTR_BASIC ()) m11700m (s_sbob_sl64, w, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m11700_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11700_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -504,7 +504,7 @@ KERNEL_FQ void m11700_s04 (KERN_ATTR_BASIC ()) m11700s (s_sbob_sl64, w, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m11700_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11700_s08 (KERN_ATTR_BASIC ()) { /** * modifier @@ -568,7 +568,7 @@ KERNEL_FQ void m11700_s08 (KERN_ATTR_BASIC ()) m11700s (s_sbob_sl64, w, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m11700_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11700_s16 (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m11700_a3-pure.cl b/OpenCL/m11700_a3-pure.cl index 3daf08077..66d3e37f9 100644 --- a/OpenCL/m11700_a3-pure.cl +++ b/OpenCL/m11700_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_streebog256.cl) #endif -KERNEL_FQ void m11700_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m11700_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -98,7 +98,7 @@ KERNEL_FQ void m11700_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m11700_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m11700_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m11750_a0-pure.cl b/OpenCL/m11750_a0-pure.cl index 0626330b1..92a7487b2 100644 --- a/OpenCL/m11750_a0-pure.cl +++ b/OpenCL/m11750_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_streebog256.cl) #endif -KERNEL_FQ void m11750_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m11750_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -98,7 +98,7 @@ KERNEL_FQ void m11750_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m11750_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m11750_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m11750_a1-pure.cl b/OpenCL/m11750_a1-pure.cl index 96bd210ef..bfa16fda1 100644 --- a/OpenCL/m11750_a1-pure.cl +++ b/OpenCL/m11750_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_streebog256.cl) #endif -KERNEL_FQ void m11750_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11750_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -121,7 +121,7 @@ KERNEL_FQ void m11750_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m11750_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11750_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m11750_a3-pure.cl b/OpenCL/m11750_a3-pure.cl index 604cdd250..6bd7fb57e 100644 --- a/OpenCL/m11750_a3-pure.cl +++ b/OpenCL/m11750_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_streebog256.cl) #endif -KERNEL_FQ void m11750_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m11750_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -107,7 +107,7 @@ KERNEL_FQ void m11750_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m11750_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m11750_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m11760_a0-pure.cl b/OpenCL/m11760_a0-pure.cl index bef4c15ea..1222b9b18 100644 --- a/OpenCL/m11760_a0-pure.cl +++ b/OpenCL/m11760_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_streebog256.cl) #endif -KERNEL_FQ void m11760_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m11760_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -100,7 +100,7 @@ KERNEL_FQ void m11760_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m11760_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m11760_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m11760_a1-pure.cl b/OpenCL/m11760_a1-pure.cl index e98ff5ae2..9a9f9c963 100644 --- a/OpenCL/m11760_a1-pure.cl +++ b/OpenCL/m11760_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_streebog256.cl) #endif -KERNEL_FQ void m11760_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11760_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -123,7 +123,7 @@ KERNEL_FQ void m11760_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m11760_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11760_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m11760_a3-pure.cl b/OpenCL/m11760_a3-pure.cl index a125320b1..89c539460 100644 --- a/OpenCL/m11760_a3-pure.cl +++ b/OpenCL/m11760_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_streebog256.cl) #endif -KERNEL_FQ void m11760_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m11760_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -109,7 +109,7 @@ KERNEL_FQ void m11760_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m11760_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m11760_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m11800_a0-optimized.cl b/OpenCL/m11800_a0-optimized.cl index dc0251a00..7b5669204 100644 --- a/OpenCL/m11800_a0-optimized.cl +++ b/OpenCL/m11800_a0-optimized.cl @@ -87,7 +87,7 @@ DECLSPEC void streebog_g (PRIVATE_AS u64x *h, PRIVATE_AS const u64x *m, LOCAL_AS } } -KERNEL_FQ void m11800_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m11800_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -237,15 +237,15 @@ KERNEL_FQ void m11800_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m11800_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m11800_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m11800_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m11800_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m11800_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m11800_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -407,10 +407,10 @@ KERNEL_FQ void m11800_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m11800_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m11800_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m11800_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m11800_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m11800_a0-pure.cl b/OpenCL/m11800_a0-pure.cl index 09f65c373..202d2c30a 100644 --- a/OpenCL/m11800_a0-pure.cl +++ b/OpenCL/m11800_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_streebog512.cl) #endif -KERNEL_FQ void m11800_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m11800_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -89,7 +89,7 @@ KERNEL_FQ void m11800_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m11800_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m11800_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m11800_a1-optimized.cl b/OpenCL/m11800_a1-optimized.cl index 9f8985346..031ccd4f7 100644 --- a/OpenCL/m11800_a1-optimized.cl +++ b/OpenCL/m11800_a1-optimized.cl @@ -85,7 +85,7 @@ DECLSPEC void streebog_g (PRIVATE_AS u64x *h, PRIVATE_AS const u64x *m, LOCAL_AS } } -KERNEL_FQ void m11800_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11800_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -293,15 +293,15 @@ KERNEL_FQ void m11800_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m11800_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11800_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m11800_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11800_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m11800_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11800_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -521,10 +521,10 @@ KERNEL_FQ void m11800_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m11800_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11800_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m11800_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11800_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m11800_a1-pure.cl b/OpenCL/m11800_a1-pure.cl index 7acd881cd..8de94d8d3 100644 --- a/OpenCL/m11800_a1-pure.cl +++ b/OpenCL/m11800_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_streebog512.cl) #endif -KERNEL_FQ void m11800_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11800_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -85,7 +85,7 @@ KERNEL_FQ void m11800_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m11800_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11800_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m11800_a3-optimized.cl b/OpenCL/m11800_a3-optimized.cl index 2b91c9576..7f97b54f9 100644 --- a/OpenCL/m11800_a3-optimized.cl +++ b/OpenCL/m11800_a3-optimized.cl @@ -248,7 +248,7 @@ DECLSPEC void m11800s (LOCAL_AS u64 (*s_sbob_sl64)[256], PRIVATE_AS u32 *w, cons } } -KERNEL_FQ void m11800_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11800_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -312,7 +312,7 @@ KERNEL_FQ void m11800_m04 (KERN_ATTR_BASIC ()) m11800m (s_sbob_sl64, w, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m11800_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11800_m08 (KERN_ATTR_BASIC ()) { /** * modifier @@ -376,7 +376,7 @@ KERNEL_FQ void m11800_m08 (KERN_ATTR_BASIC ()) m11800m (s_sbob_sl64, w, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m11800_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11800_m16 (KERN_ATTR_BASIC ()) { /** * modifier @@ -440,7 +440,7 @@ KERNEL_FQ void m11800_m16 (KERN_ATTR_BASIC ()) m11800m (s_sbob_sl64, w, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m11800_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11800_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -504,7 +504,7 @@ KERNEL_FQ void m11800_s04 (KERN_ATTR_BASIC ()) m11800s (s_sbob_sl64, w, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m11800_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11800_s08 (KERN_ATTR_BASIC ()) { /** * modifier @@ -568,7 +568,7 @@ KERNEL_FQ void m11800_s08 (KERN_ATTR_BASIC ()) m11800s (s_sbob_sl64, w, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m11800_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11800_s16 (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m11800_a3-pure.cl b/OpenCL/m11800_a3-pure.cl index eb378b6c1..33fde0e74 100644 --- a/OpenCL/m11800_a3-pure.cl +++ b/OpenCL/m11800_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_streebog512.cl) #endif -KERNEL_FQ void m11800_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m11800_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -98,7 +98,7 @@ KERNEL_FQ void m11800_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m11800_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m11800_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m11850_a0-pure.cl b/OpenCL/m11850_a0-pure.cl index 8963e8d24..f9f72fbac 100644 --- a/OpenCL/m11850_a0-pure.cl +++ b/OpenCL/m11850_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_streebog512.cl) #endif -KERNEL_FQ void m11850_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m11850_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -98,7 +98,7 @@ KERNEL_FQ void m11850_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m11850_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m11850_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m11850_a1-pure.cl b/OpenCL/m11850_a1-pure.cl index 0f10594d3..8eb3b2a87 100644 --- a/OpenCL/m11850_a1-pure.cl +++ b/OpenCL/m11850_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_streebog512.cl) #endif -KERNEL_FQ void m11850_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11850_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -121,7 +121,7 @@ KERNEL_FQ void m11850_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m11850_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11850_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m11850_a3-pure.cl b/OpenCL/m11850_a3-pure.cl index ee3f3a050..2804d410d 100644 --- a/OpenCL/m11850_a3-pure.cl +++ b/OpenCL/m11850_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_streebog512.cl) #endif -KERNEL_FQ void m11850_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m11850_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -107,7 +107,7 @@ KERNEL_FQ void m11850_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m11850_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m11850_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m11860_a0-pure.cl b/OpenCL/m11860_a0-pure.cl index ab1cc6b98..65f8a1fe5 100644 --- a/OpenCL/m11860_a0-pure.cl +++ b/OpenCL/m11860_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_streebog512.cl) #endif -KERNEL_FQ void m11860_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m11860_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -100,7 +100,7 @@ KERNEL_FQ void m11860_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m11860_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m11860_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m11860_a1-pure.cl b/OpenCL/m11860_a1-pure.cl index 2842b9f52..8bd4459ed 100644 --- a/OpenCL/m11860_a1-pure.cl +++ b/OpenCL/m11860_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_streebog512.cl) #endif -KERNEL_FQ void m11860_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11860_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -123,7 +123,7 @@ KERNEL_FQ void m11860_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m11860_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m11860_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m11860_a3-pure.cl b/OpenCL/m11860_a3-pure.cl index 60c72865b..75d3d9129 100644 --- a/OpenCL/m11860_a3-pure.cl +++ b/OpenCL/m11860_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_streebog512.cl) #endif -KERNEL_FQ void m11860_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m11860_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -109,7 +109,7 @@ KERNEL_FQ void m11860_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m11860_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m11860_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m11900-pure.cl b/OpenCL/m11900-pure.cl index fee24abc7..d00200784 100644 --- a/OpenCL/m11900-pure.cl +++ b/OpenCL/m11900-pure.cl @@ -67,7 +67,7 @@ DECLSPEC void hmac_md5_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE_ md5_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m11900_init (KERN_ATTR_TMPS_ESALT (pbkdf2_md5_tmp_t, pbkdf2_md5_t)) +KERNEL_FQ KERNEL_FA void m11900_init (KERN_ATTR_TMPS_ESALT (pbkdf2_md5_tmp_t, pbkdf2_md5_t)) { /** * base @@ -135,7 +135,7 @@ KERNEL_FQ void m11900_init (KERN_ATTR_TMPS_ESALT (pbkdf2_md5_tmp_t, pbkdf2_md5_t } } -KERNEL_FQ void m11900_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_md5_tmp_t, pbkdf2_md5_t)) +KERNEL_FQ KERNEL_FA void m11900_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_md5_tmp_t, pbkdf2_md5_t)) { const u64 gid = get_global_id (0); @@ -213,7 +213,7 @@ KERNEL_FQ void m11900_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_md5_tmp_t, pbkdf2_md5_t } } -KERNEL_FQ void m11900_comp (KERN_ATTR_TMPS_ESALT (pbkdf2_md5_tmp_t, pbkdf2_md5_t)) +KERNEL_FQ KERNEL_FA void m11900_comp (KERN_ATTR_TMPS_ESALT (pbkdf2_md5_tmp_t, pbkdf2_md5_t)) { /** * base diff --git a/OpenCL/m12000-pure.cl b/OpenCL/m12000-pure.cl index 5c2385bdf..ae47e1677 100644 --- a/OpenCL/m12000-pure.cl +++ b/OpenCL/m12000-pure.cl @@ -69,7 +69,7 @@ DECLSPEC void hmac_sha1_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE sha1_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m12000_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha1_tmp_t, pbkdf2_sha1_t)) +KERNEL_FQ KERNEL_FA void m12000_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha1_tmp_t, pbkdf2_sha1_t)) { /** * base @@ -141,7 +141,7 @@ KERNEL_FQ void m12000_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha1_tmp_t, pbkdf2_sha1 } } -KERNEL_FQ void m12000_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha1_tmp_t, pbkdf2_sha1_t)) +KERNEL_FQ KERNEL_FA void m12000_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha1_tmp_t, pbkdf2_sha1_t)) { const u64 gid = get_global_id (0); @@ -226,7 +226,7 @@ KERNEL_FQ void m12000_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha1_tmp_t, pbkdf2_sha1 } } -KERNEL_FQ void m12000_comp (KERN_ATTR_TMPS_ESALT (pbkdf2_sha1_tmp_t, pbkdf2_sha1_t)) +KERNEL_FQ KERNEL_FA void m12000_comp (KERN_ATTR_TMPS_ESALT (pbkdf2_sha1_tmp_t, pbkdf2_sha1_t)) { /** * base diff --git a/OpenCL/m12200-pure.cl b/OpenCL/m12200-pure.cl index 39eb3016e..91d55adaf 100644 --- a/OpenCL/m12200-pure.cl +++ b/OpenCL/m12200-pure.cl @@ -23,7 +23,7 @@ typedef struct ecryptfs_tmp } ecryptfs_tmp_t; -KERNEL_FQ void m12200_init (KERN_ATTR_TMPS (ecryptfs_tmp_t)) +KERNEL_FQ KERNEL_FA void m12200_init (KERN_ATTR_TMPS (ecryptfs_tmp_t)) { /** * base @@ -53,7 +53,7 @@ KERNEL_FQ void m12200_init (KERN_ATTR_TMPS (ecryptfs_tmp_t)) tmps[gid].out[7] = ctx.h[7]; } -KERNEL_FQ void m12200_loop (KERN_ATTR_TMPS (ecryptfs_tmp_t)) +KERNEL_FQ KERNEL_FA void m12200_loop (KERN_ATTR_TMPS (ecryptfs_tmp_t)) { const u64 gid = get_global_id (0); @@ -162,7 +162,7 @@ KERNEL_FQ void m12200_loop (KERN_ATTR_TMPS (ecryptfs_tmp_t)) unpack64v (tmps, out, gid, 7, t7); } -KERNEL_FQ void m12200_comp (KERN_ATTR_TMPS (ecryptfs_tmp_t)) +KERNEL_FQ KERNEL_FA void m12200_comp (KERN_ATTR_TMPS (ecryptfs_tmp_t)) { /** * base diff --git a/OpenCL/m12300-pure.cl b/OpenCL/m12300-pure.cl index 32fcafb4b..f5d7318f2 100644 --- a/OpenCL/m12300-pure.cl +++ b/OpenCL/m12300-pure.cl @@ -85,7 +85,7 @@ DECLSPEC void hmac_sha512_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVA sha512_transform_vector (w0, w1, w2, w3, w4, w5, w6, w7, digest); } -KERNEL_FQ void m12300_init (KERN_ATTR_TMPS (oraclet_tmp_t)) +KERNEL_FQ KERNEL_FA void m12300_init (KERN_ATTR_TMPS (oraclet_tmp_t)) { /** * base @@ -224,7 +224,7 @@ KERNEL_FQ void m12300_init (KERN_ATTR_TMPS (oraclet_tmp_t)) } } -KERNEL_FQ void m12300_loop (KERN_ATTR_TMPS (oraclet_tmp_t)) +KERNEL_FQ KERNEL_FA void m12300_loop (KERN_ATTR_TMPS (oraclet_tmp_t)) { const u64 gid = get_global_id (0); @@ -350,7 +350,7 @@ KERNEL_FQ void m12300_loop (KERN_ATTR_TMPS (oraclet_tmp_t)) } } -KERNEL_FQ void m12300_comp (KERN_ATTR_TMPS (oraclet_tmp_t)) +KERNEL_FQ KERNEL_FA void m12300_comp (KERN_ATTR_TMPS (oraclet_tmp_t)) { /** * base diff --git a/OpenCL/m12400-pure.cl b/OpenCL/m12400-pure.cl index e515bc907..19bc2a8ca 100644 --- a/OpenCL/m12400-pure.cl +++ b/OpenCL/m12400-pure.cl @@ -497,7 +497,7 @@ DECLSPEC void _des_crypt_encrypt (PRIVATE_AS u32 *iv, u32 mask, u32 rounds, PRIV iv[1] = l; } -KERNEL_FQ void m12400_init (KERN_ATTR_TMPS (bsdicrypt_tmp_t)) +KERNEL_FQ KERNEL_FA void m12400_init (KERN_ATTR_TMPS (bsdicrypt_tmp_t)) { /** * base @@ -633,7 +633,7 @@ KERNEL_FQ void m12400_init (KERN_ATTR_TMPS (bsdicrypt_tmp_t)) tmps[gid].iv[1] = 0; } -KERNEL_FQ void m12400_loop (KERN_ATTR_TMPS (bsdicrypt_tmp_t)) +KERNEL_FQ KERNEL_FA void m12400_loop (KERN_ATTR_TMPS (bsdicrypt_tmp_t)) { /** * base @@ -730,7 +730,7 @@ KERNEL_FQ void m12400_loop (KERN_ATTR_TMPS (bsdicrypt_tmp_t)) tmps[gid].iv[1] = iv[1]; } -KERNEL_FQ void m12400_comp (KERN_ATTR_TMPS (bsdicrypt_tmp_t)) +KERNEL_FQ KERNEL_FA void m12400_comp (KERN_ATTR_TMPS (bsdicrypt_tmp_t)) { /** * base diff --git a/OpenCL/m12500-optimized.cl b/OpenCL/m12500-optimized.cl index 01abd8805..c0e42f123 100644 --- a/OpenCL/m12500-optimized.cl +++ b/OpenCL/m12500-optimized.cl @@ -31,7 +31,7 @@ typedef struct rar3_tmp } rar3_tmp_t; -KERNEL_FQ void m12500_init (KERN_ATTR_TMPS (rar3_tmp_t)) +KERNEL_FQ KERNEL_FA void m12500_init (KERN_ATTR_TMPS (rar3_tmp_t)) { /** * base @@ -48,7 +48,7 @@ KERNEL_FQ void m12500_init (KERN_ATTR_TMPS (rar3_tmp_t)) tmps[gid].dgst[0][4] = SHA1M_E; } -KERNEL_FQ void m12500_loop (KERN_ATTR_TMPS (rar3_tmp_t)) +KERNEL_FQ KERNEL_FA void m12500_loop (KERN_ATTR_TMPS (rar3_tmp_t)) { const u64 gid = get_global_id (0); @@ -237,7 +237,7 @@ KERNEL_FQ void m12500_loop (KERN_ATTR_TMPS (rar3_tmp_t)) tmps[gid].dgst[init_pos + 1][4] = dgst[4]; } -KERNEL_FQ void m12500_comp (KERN_ATTR_TMPS (rar3_tmp_t)) +KERNEL_FQ KERNEL_FA void m12500_comp (KERN_ATTR_TMPS (rar3_tmp_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m12500-pure.cl b/OpenCL/m12500-pure.cl index f6101ab8c..9ae20dc50 100644 --- a/OpenCL/m12500-pure.cl +++ b/OpenCL/m12500-pure.cl @@ -728,7 +728,7 @@ DECLSPEC void sha1_update_rar29 (PRIVATE_AS sha1_ctx_t *ctx, PRIVATE_AS u32 *w, } } -KERNEL_FQ void m12500_init (KERN_ATTR_TMPS (rar3_tmp_t)) +KERNEL_FQ KERNEL_FA void m12500_init (KERN_ATTR_TMPS (rar3_tmp_t)) { /** * base @@ -796,7 +796,7 @@ KERNEL_FQ void m12500_init (KERN_ATTR_TMPS (rar3_tmp_t)) tmps[gid].iv[3] = 0; } -KERNEL_FQ void m12500_loop (KERN_ATTR_TMPS (rar3_tmp_t)) +KERNEL_FQ KERNEL_FA void m12500_loop (KERN_ATTR_TMPS (rar3_tmp_t)) { const u64 gid = get_global_id (0); @@ -911,7 +911,7 @@ KERNEL_FQ void m12500_loop (KERN_ATTR_TMPS (rar3_tmp_t)) } } -KERNEL_FQ void m12500_comp (KERN_ATTR_TMPS (rar3_tmp_t)) +KERNEL_FQ KERNEL_FA void m12500_comp (KERN_ATTR_TMPS (rar3_tmp_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m12600_a0-optimized.cl b/OpenCL/m12600_a0-optimized.cl index 323d8c0e6..ddc22b9b5 100644 --- a/OpenCL/m12600_a0-optimized.cl +++ b/OpenCL/m12600_a0-optimized.cl @@ -29,7 +29,7 @@ #define uint_to_hex_upper8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m12600_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m12600_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -361,15 +361,15 @@ KERNEL_FQ void m12600_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m12600_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m12600_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m12600_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m12600_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m12600_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m12600_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -716,10 +716,10 @@ KERNEL_FQ void m12600_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m12600_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m12600_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m12600_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m12600_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m12600_a0-pure.cl b/OpenCL/m12600_a0-pure.cl index f4ac84492..5f4d61093 100644 --- a/OpenCL/m12600_a0-pure.cl +++ b/OpenCL/m12600_a0-pure.cl @@ -29,7 +29,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m12600_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m12600_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -165,7 +165,7 @@ KERNEL_FQ void m12600_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m12600_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m12600_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m12600_a1-optimized.cl b/OpenCL/m12600_a1-optimized.cl index 3c5b709a8..5237e904f 100644 --- a/OpenCL/m12600_a1-optimized.cl +++ b/OpenCL/m12600_a1-optimized.cl @@ -27,7 +27,7 @@ #define uint_to_hex_upper8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m12600_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m12600_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -417,15 +417,15 @@ KERNEL_FQ void m12600_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m12600_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m12600_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m12600_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m12600_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m12600_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m12600_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -830,10 +830,10 @@ KERNEL_FQ void m12600_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m12600_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m12600_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m12600_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m12600_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m12600_a1-pure.cl b/OpenCL/m12600_a1-pure.cl index 4f130e1bb..491eb077e 100644 --- a/OpenCL/m12600_a1-pure.cl +++ b/OpenCL/m12600_a1-pure.cl @@ -27,7 +27,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m12600_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m12600_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -161,7 +161,7 @@ KERNEL_FQ void m12600_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m12600_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m12600_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m12600_a3-optimized.cl b/OpenCL/m12600_a3-optimized.cl index e73899b05..84ca582f7 100644 --- a/OpenCL/m12600_a3-optimized.cl +++ b/OpenCL/m12600_a3-optimized.cl @@ -618,7 +618,7 @@ DECLSPEC void m12600s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m12600_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m12600_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -688,7 +688,7 @@ KERNEL_FQ void m12600_m04 (KERN_ATTR_BASIC ()) m12600m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m12600_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m12600_m08 (KERN_ATTR_BASIC ()) { /** * modifier @@ -758,7 +758,7 @@ KERNEL_FQ void m12600_m08 (KERN_ATTR_BASIC ()) m12600m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m12600_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m12600_m16 (KERN_ATTR_BASIC ()) { /** * modifier @@ -828,7 +828,7 @@ KERNEL_FQ void m12600_m16 (KERN_ATTR_BASIC ()) m12600m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m12600_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m12600_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -898,7 +898,7 @@ KERNEL_FQ void m12600_s04 (KERN_ATTR_BASIC ()) m12600s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m12600_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m12600_s08 (KERN_ATTR_BASIC ()) { /** * modifier @@ -968,7 +968,7 @@ KERNEL_FQ void m12600_s08 (KERN_ATTR_BASIC ()) m12600s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m12600_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m12600_s16 (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m12600_a3-pure.cl b/OpenCL/m12600_a3-pure.cl index 9b4afb1cf..09b0f889f 100644 --- a/OpenCL/m12600_a3-pure.cl +++ b/OpenCL/m12600_a3-pure.cl @@ -27,7 +27,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m12600_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m12600_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -174,7 +174,7 @@ KERNEL_FQ void m12600_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m12600_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m12600_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m12700-pure.cl b/OpenCL/m12700-pure.cl index 497b44a75..39a1cc859 100644 --- a/OpenCL/m12700-pure.cl +++ b/OpenCL/m12700-pure.cl @@ -78,7 +78,7 @@ DECLSPEC void hmac_sha1_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE sha1_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m12700_init (KERN_ATTR_TMPS (mywallet_tmp_t)) +KERNEL_FQ KERNEL_FA void m12700_init (KERN_ATTR_TMPS (mywallet_tmp_t)) { /** * base @@ -167,7 +167,7 @@ KERNEL_FQ void m12700_init (KERN_ATTR_TMPS (mywallet_tmp_t)) } } -KERNEL_FQ void m12700_loop (KERN_ATTR_TMPS (mywallet_tmp_t)) +KERNEL_FQ KERNEL_FA void m12700_loop (KERN_ATTR_TMPS (mywallet_tmp_t)) { const u64 gid = get_global_id (0); @@ -252,7 +252,7 @@ KERNEL_FQ void m12700_loop (KERN_ATTR_TMPS (mywallet_tmp_t)) } } -KERNEL_FQ void m12700_comp (KERN_ATTR_TMPS (mywallet_tmp_t)) +KERNEL_FQ KERNEL_FA void m12700_comp (KERN_ATTR_TMPS (mywallet_tmp_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m12800-pure.cl b/OpenCL/m12800-pure.cl index fb8848dcf..4001a8e43 100644 --- a/OpenCL/m12800-pure.cl +++ b/OpenCL/m12800-pure.cl @@ -76,7 +76,7 @@ DECLSPEC void hmac_sha256_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVA sha256_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m12800_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, pbkdf2_sha256_t)) +KERNEL_FQ KERNEL_FA void m12800_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, pbkdf2_sha256_t)) { /** * base @@ -244,7 +244,7 @@ KERNEL_FQ void m12800_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, pbkdf2_sh } } -KERNEL_FQ void m12800_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, pbkdf2_sha256_t)) +KERNEL_FQ KERNEL_FA void m12800_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, pbkdf2_sha256_t)) { const u64 gid = get_global_id (0); @@ -350,7 +350,7 @@ KERNEL_FQ void m12800_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, pbkdf2_sh } } -KERNEL_FQ void m12800_comp (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, pbkdf2_sha256_t)) +KERNEL_FQ KERNEL_FA void m12800_comp (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, pbkdf2_sha256_t)) { /** * base diff --git a/OpenCL/m12900-pure.cl b/OpenCL/m12900-pure.cl index c3c9d4d32..98727c3f9 100644 --- a/OpenCL/m12900-pure.cl +++ b/OpenCL/m12900-pure.cl @@ -75,7 +75,7 @@ DECLSPEC void hmac_sha256_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVA sha256_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m12900_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, pbkdf2_sha256_t)) +KERNEL_FQ KERNEL_FA void m12900_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, pbkdf2_sha256_t)) { /** * base @@ -176,7 +176,7 @@ KERNEL_FQ void m12900_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, pbkdf2_sh } } -KERNEL_FQ void m12900_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, pbkdf2_sha256_t)) +KERNEL_FQ KERNEL_FA void m12900_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, pbkdf2_sha256_t)) { const u64 gid = get_global_id (0); @@ -282,7 +282,7 @@ KERNEL_FQ void m12900_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, pbkdf2_sh } } -KERNEL_FQ void m12900_comp (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, pbkdf2_sha256_t)) +KERNEL_FQ KERNEL_FA void m12900_comp (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, pbkdf2_sha256_t)) { /** * base diff --git a/OpenCL/m13000-pure.cl b/OpenCL/m13000-pure.cl index c2ccb8f96..c83223689 100644 --- a/OpenCL/m13000-pure.cl +++ b/OpenCL/m13000-pure.cl @@ -69,7 +69,7 @@ DECLSPEC void hmac_sha256_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVA sha256_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m13000_init (KERN_ATTR_TMPS (pbkdf2_sha256_tmp_t)) +KERNEL_FQ KERNEL_FA void m13000_init (KERN_ATTR_TMPS (pbkdf2_sha256_tmp_t)) { /** * base @@ -153,7 +153,7 @@ KERNEL_FQ void m13000_init (KERN_ATTR_TMPS (pbkdf2_sha256_tmp_t)) } } -KERNEL_FQ void m13000_loop (KERN_ATTR_TMPS (pbkdf2_sha256_tmp_t)) +KERNEL_FQ KERNEL_FA void m13000_loop (KERN_ATTR_TMPS (pbkdf2_sha256_tmp_t)) { const u64 gid = get_global_id (0); @@ -259,7 +259,7 @@ KERNEL_FQ void m13000_loop (KERN_ATTR_TMPS (pbkdf2_sha256_tmp_t)) } } -KERNEL_FQ void m13000_comp (KERN_ATTR_TMPS (pbkdf2_sha256_tmp_t)) +KERNEL_FQ KERNEL_FA void m13000_comp (KERN_ATTR_TMPS (pbkdf2_sha256_tmp_t)) { /** * base diff --git a/OpenCL/m13100_a0-optimized.cl b/OpenCL/m13100_a0-optimized.cl index a2b653f47..5706ceae9 100644 --- a/OpenCL/m13100_a0-optimized.cl +++ b/OpenCL/m13100_a0-optimized.cl @@ -454,7 +454,7 @@ DECLSPEC void kerb_prepare (PRIVATE_AS const u32 *w0, PRIVATE_AS const u32 *w1, hmac_md5_run (w0_t, w1_t, w2_t, w3_t, ipad, opad, digest); } -KERNEL_FQ void m13100_m04 (KERN_ATTR_RULES_ESALT (krb5tgs_t)) +KERNEL_FQ KERNEL_FA void m13100_m04 (KERN_ATTR_RULES_ESALT (krb5tgs_t)) { /** * modifier @@ -542,15 +542,15 @@ KERNEL_FQ void m13100_m04 (KERN_ATTR_RULES_ESALT (krb5tgs_t)) } } -KERNEL_FQ void m13100_m08 (KERN_ATTR_RULES_ESALT (krb5tgs_t)) +KERNEL_FQ KERNEL_FA void m13100_m08 (KERN_ATTR_RULES_ESALT (krb5tgs_t)) { } -KERNEL_FQ void m13100_m16 (KERN_ATTR_RULES_ESALT (krb5tgs_t)) +KERNEL_FQ KERNEL_FA void m13100_m16 (KERN_ATTR_RULES_ESALT (krb5tgs_t)) { } -KERNEL_FQ void m13100_s04 (KERN_ATTR_RULES_ESALT (krb5tgs_t)) +KERNEL_FQ KERNEL_FA void m13100_s04 (KERN_ATTR_RULES_ESALT (krb5tgs_t)) { /** * modifier @@ -638,10 +638,10 @@ KERNEL_FQ void m13100_s04 (KERN_ATTR_RULES_ESALT (krb5tgs_t)) } } -KERNEL_FQ void m13100_s08 (KERN_ATTR_RULES_ESALT (krb5tgs_t)) +KERNEL_FQ KERNEL_FA void m13100_s08 (KERN_ATTR_RULES_ESALT (krb5tgs_t)) { } -KERNEL_FQ void m13100_s16 (KERN_ATTR_RULES_ESALT (krb5tgs_t)) +KERNEL_FQ KERNEL_FA void m13100_s16 (KERN_ATTR_RULES_ESALT (krb5tgs_t)) { } diff --git a/OpenCL/m13100_a0-pure.cl b/OpenCL/m13100_a0-pure.cl index 8aaff8389..0eb6e08da 100644 --- a/OpenCL/m13100_a0-pure.cl +++ b/OpenCL/m13100_a0-pure.cl @@ -266,7 +266,7 @@ DECLSPEC void kerb_prepare (PRIVATE_AS const u32 *K, PRIVATE_AS const u32 *check K2[3] = ctx1.opad.h[3]; } -KERNEL_FQ void m13100_mxx (KERN_ATTR_RULES_ESALT (krb5tgs_t)) +KERNEL_FQ KERNEL_FA void m13100_mxx (KERN_ATTR_RULES_ESALT (krb5tgs_t)) { /** * modifier @@ -326,7 +326,7 @@ KERNEL_FQ void m13100_mxx (KERN_ATTR_RULES_ESALT (krb5tgs_t)) } } -KERNEL_FQ void m13100_sxx (KERN_ATTR_RULES_ESALT (krb5tgs_t)) +KERNEL_FQ KERNEL_FA void m13100_sxx (KERN_ATTR_RULES_ESALT (krb5tgs_t)) { /** * modifier diff --git a/OpenCL/m13100_a1-optimized.cl b/OpenCL/m13100_a1-optimized.cl index 26c8e8111..4f10747a6 100644 --- a/OpenCL/m13100_a1-optimized.cl +++ b/OpenCL/m13100_a1-optimized.cl @@ -452,7 +452,7 @@ DECLSPEC void kerb_prepare (PRIVATE_AS const u32 *w0, PRIVATE_AS const u32 *w1, hmac_md5_run (w0_t, w1_t, w2_t, w3_t, ipad, opad, digest); } -KERNEL_FQ void m13100_m04 (KERN_ATTR_ESALT (krb5tgs_t)) +KERNEL_FQ KERNEL_FA void m13100_m04 (KERN_ATTR_ESALT (krb5tgs_t)) { /** * modifier @@ -589,15 +589,15 @@ KERNEL_FQ void m13100_m04 (KERN_ATTR_ESALT (krb5tgs_t)) } } -KERNEL_FQ void m13100_m08 (KERN_ATTR_ESALT (krb5tgs_t)) +KERNEL_FQ KERNEL_FA void m13100_m08 (KERN_ATTR_ESALT (krb5tgs_t)) { } -KERNEL_FQ void m13100_m16 (KERN_ATTR_ESALT (krb5tgs_t)) +KERNEL_FQ KERNEL_FA void m13100_m16 (KERN_ATTR_ESALT (krb5tgs_t)) { } -KERNEL_FQ void m13100_s04 (KERN_ATTR_ESALT (krb5tgs_t)) +KERNEL_FQ KERNEL_FA void m13100_s04 (KERN_ATTR_ESALT (krb5tgs_t)) { /** * modifier @@ -734,10 +734,10 @@ KERNEL_FQ void m13100_s04 (KERN_ATTR_ESALT (krb5tgs_t)) } } -KERNEL_FQ void m13100_s08 (KERN_ATTR_ESALT (krb5tgs_t)) +KERNEL_FQ KERNEL_FA void m13100_s08 (KERN_ATTR_ESALT (krb5tgs_t)) { } -KERNEL_FQ void m13100_s16 (KERN_ATTR_ESALT (krb5tgs_t)) +KERNEL_FQ KERNEL_FA void m13100_s16 (KERN_ATTR_ESALT (krb5tgs_t)) { } diff --git a/OpenCL/m13100_a1-pure.cl b/OpenCL/m13100_a1-pure.cl index 1799a64ee..07cd7fcbc 100644 --- a/OpenCL/m13100_a1-pure.cl +++ b/OpenCL/m13100_a1-pure.cl @@ -264,7 +264,7 @@ DECLSPEC void kerb_prepare (PRIVATE_AS const u32 *K, PRIVATE_AS const u32 *check K2[3] = ctx1.opad.h[3]; } -KERNEL_FQ void m13100_mxx (KERN_ATTR_ESALT (krb5tgs_t)) +KERNEL_FQ KERNEL_FA void m13100_mxx (KERN_ATTR_ESALT (krb5tgs_t)) { /** * modifier @@ -322,7 +322,7 @@ KERNEL_FQ void m13100_mxx (KERN_ATTR_ESALT (krb5tgs_t)) } } -KERNEL_FQ void m13100_sxx (KERN_ATTR_ESALT (krb5tgs_t)) +KERNEL_FQ KERNEL_FA void m13100_sxx (KERN_ATTR_ESALT (krb5tgs_t)) { /** * modifier diff --git a/OpenCL/m13100_a3-optimized.cl b/OpenCL/m13100_a3-optimized.cl index 2d2a47efc..ac6de9f82 100644 --- a/OpenCL/m13100_a3-optimized.cl +++ b/OpenCL/m13100_a3-optimized.cl @@ -508,7 +508,7 @@ DECLSPEC void m13100 (LOCAL_AS u32 *S, PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, P } } -KERNEL_FQ void m13100_m04 (KERN_ATTR_ESALT (krb5tgs_t)) +KERNEL_FQ KERNEL_FA void m13100_m04 (KERN_ATTR_ESALT (krb5tgs_t)) { /** * base @@ -559,7 +559,7 @@ KERNEL_FQ void m13100_m04 (KERN_ATTR_ESALT (krb5tgs_t)) m13100 (S, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m13100_m08 (KERN_ATTR_ESALT (krb5tgs_t)) +KERNEL_FQ KERNEL_FA void m13100_m08 (KERN_ATTR_ESALT (krb5tgs_t)) { /** * base @@ -610,11 +610,11 @@ KERNEL_FQ void m13100_m08 (KERN_ATTR_ESALT (krb5tgs_t)) m13100 (S, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m13100_m16 (KERN_ATTR_ESALT (krb5tgs_t)) +KERNEL_FQ KERNEL_FA void m13100_m16 (KERN_ATTR_ESALT (krb5tgs_t)) { } -KERNEL_FQ void m13100_s04 (KERN_ATTR_ESALT (krb5tgs_t)) +KERNEL_FQ KERNEL_FA void m13100_s04 (KERN_ATTR_ESALT (krb5tgs_t)) { /** * base @@ -665,7 +665,7 @@ KERNEL_FQ void m13100_s04 (KERN_ATTR_ESALT (krb5tgs_t)) m13100 (S, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m13100_s08 (KERN_ATTR_ESALT (krb5tgs_t)) +KERNEL_FQ KERNEL_FA void m13100_s08 (KERN_ATTR_ESALT (krb5tgs_t)) { /** * base @@ -716,6 +716,6 @@ KERNEL_FQ void m13100_s08 (KERN_ATTR_ESALT (krb5tgs_t)) m13100 (S, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m13100_s16 (KERN_ATTR_ESALT (krb5tgs_t)) +KERNEL_FQ KERNEL_FA void m13100_s16 (KERN_ATTR_ESALT (krb5tgs_t)) { } diff --git a/OpenCL/m13100_a3-pure.cl b/OpenCL/m13100_a3-pure.cl index 166997b52..960ddadfa 100644 --- a/OpenCL/m13100_a3-pure.cl +++ b/OpenCL/m13100_a3-pure.cl @@ -264,7 +264,7 @@ DECLSPEC void kerb_prepare (PRIVATE_AS const u32 *K, PRIVATE_AS const u32 *check K2[3] = ctx1.opad.h[3]; } -KERNEL_FQ void m13100_mxx (KERN_ATTR_VECTOR_ESALT (krb5tgs_t)) +KERNEL_FQ KERNEL_FA void m13100_mxx (KERN_ATTR_VECTOR_ESALT (krb5tgs_t)) { /** * modifier @@ -335,7 +335,7 @@ KERNEL_FQ void m13100_mxx (KERN_ATTR_VECTOR_ESALT (krb5tgs_t)) } } -KERNEL_FQ void m13100_sxx (KERN_ATTR_VECTOR_ESALT (krb5tgs_t)) +KERNEL_FQ KERNEL_FA void m13100_sxx (KERN_ATTR_VECTOR_ESALT (krb5tgs_t)) { /** * modifier diff --git a/OpenCL/m13200-pure.cl b/OpenCL/m13200-pure.cl index 06a6856a7..30c697e9b 100644 --- a/OpenCL/m13200-pure.cl +++ b/OpenCL/m13200-pure.cl @@ -20,7 +20,7 @@ typedef struct axcrypt_tmp } axcrypt_tmp_t; -KERNEL_FQ void m13200_init (KERN_ATTR_TMPS (axcrypt_tmp_t)) +KERNEL_FQ KERNEL_FA void m13200_init (KERN_ATTR_TMPS (axcrypt_tmp_t)) { /** * base @@ -74,7 +74,7 @@ KERNEL_FQ void m13200_init (KERN_ATTR_TMPS (axcrypt_tmp_t)) tmps[gid].cipher[3] = 0; } -KERNEL_FQ void m13200_loop (KERN_ATTR_TMPS (axcrypt_tmp_t)) +KERNEL_FQ KERNEL_FA void m13200_loop (KERN_ATTR_TMPS (axcrypt_tmp_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -211,7 +211,7 @@ KERNEL_FQ void m13200_loop (KERN_ATTR_TMPS (axcrypt_tmp_t)) tmps[gid].cipher[3] = cipher[3]; } -KERNEL_FQ void m13200_comp (KERN_ATTR_TMPS (axcrypt_tmp_t)) +KERNEL_FQ KERNEL_FA void m13200_comp (KERN_ATTR_TMPS (axcrypt_tmp_t)) { /** * base diff --git a/OpenCL/m13300_a0-optimized.cl b/OpenCL/m13300_a0-optimized.cl index 5110045c3..2d4622911 100644 --- a/OpenCL/m13300_a0-optimized.cl +++ b/OpenCL/m13300_a0-optimized.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m13300_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m13300_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -195,15 +195,15 @@ KERNEL_FQ void m13300_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m13300_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m13300_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m13300_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m13300_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m13300_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m13300_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -394,10 +394,10 @@ KERNEL_FQ void m13300_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m13300_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m13300_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m13300_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m13300_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m13300_a0-pure.cl b/OpenCL/m13300_a0-pure.cl index 12ccda0b2..bc6da5ee9 100644 --- a/OpenCL/m13300_a0-pure.cl +++ b/OpenCL/m13300_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m13300_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m13300_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -62,7 +62,7 @@ KERNEL_FQ void m13300_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m13300_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m13300_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m13300_a1-optimized.cl b/OpenCL/m13300_a1-optimized.cl index 051eba2db..092d8402c 100644 --- a/OpenCL/m13300_a1-optimized.cl +++ b/OpenCL/m13300_a1-optimized.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m13300_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m13300_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -251,15 +251,15 @@ KERNEL_FQ void m13300_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m13300_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m13300_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m13300_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m13300_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m13300_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m13300_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -508,10 +508,10 @@ KERNEL_FQ void m13300_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m13300_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m13300_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m13300_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m13300_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m13300_a1-pure.cl b/OpenCL/m13300_a1-pure.cl index b87420eca..48f853213 100644 --- a/OpenCL/m13300_a1-pure.cl +++ b/OpenCL/m13300_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m13300_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m13300_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -58,7 +58,7 @@ KERNEL_FQ void m13300_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m13300_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m13300_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m13300_a3-optimized.cl b/OpenCL/m13300_a3-optimized.cl index dfeff4acd..1622f8c9a 100644 --- a/OpenCL/m13300_a3-optimized.cl +++ b/OpenCL/m13300_a3-optimized.cl @@ -522,7 +522,7 @@ DECLSPEC void m13300s (PRIVATE_AS u32 *w, const u32 pw_len, KERN_ATTR_FUNC_VECTO } } -KERNEL_FQ void m13300_m04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m13300_m04 (KERN_ATTR_VECTOR ()) { /** * base @@ -562,7 +562,7 @@ KERNEL_FQ void m13300_m04 (KERN_ATTR_VECTOR ()) m13300m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m13300_m08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m13300_m08 (KERN_ATTR_VECTOR ()) { /** * base @@ -602,7 +602,7 @@ KERNEL_FQ void m13300_m08 (KERN_ATTR_VECTOR ()) m13300m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m13300_m16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m13300_m16 (KERN_ATTR_VECTOR ()) { /** * base @@ -642,7 +642,7 @@ KERNEL_FQ void m13300_m16 (KERN_ATTR_VECTOR ()) m13300m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m13300_s04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m13300_s04 (KERN_ATTR_VECTOR ()) { /** * base @@ -682,7 +682,7 @@ KERNEL_FQ void m13300_s04 (KERN_ATTR_VECTOR ()) m13300s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m13300_s08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m13300_s08 (KERN_ATTR_VECTOR ()) { /** * base @@ -722,7 +722,7 @@ KERNEL_FQ void m13300_s08 (KERN_ATTR_VECTOR ()) m13300s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m13300_s16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m13300_s16 (KERN_ATTR_VECTOR ()) { /** * base diff --git a/OpenCL/m13300_a3-pure.cl b/OpenCL/m13300_a3-pure.cl index 10f82fda6..93bace4da 100644 --- a/OpenCL/m13300_a3-pure.cl +++ b/OpenCL/m13300_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m13300_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m13300_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -71,7 +71,7 @@ KERNEL_FQ void m13300_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m13300_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m13300_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m13400-pure.cl b/OpenCL/m13400-pure.cl index 49d52dc21..2d4fc3f02 100644 --- a/OpenCL/m13400-pure.cl +++ b/OpenCL/m13400-pure.cl @@ -45,7 +45,7 @@ typedef struct keepass } keepass_t; -KERNEL_FQ void m13400_init (KERN_ATTR_TMPS_ESALT (keepass_tmp_t, keepass_t)) +KERNEL_FQ KERNEL_FA void m13400_init (KERN_ATTR_TMPS_ESALT (keepass_tmp_t, keepass_t)) { /** * base @@ -164,7 +164,7 @@ KERNEL_FQ void m13400_init (KERN_ATTR_TMPS_ESALT (keepass_tmp_t, keepass_t)) tmps[gid].tmp_digest[7] = digest[7]; } -KERNEL_FQ void m13400_loop (KERN_ATTR_TMPS_ESALT (keepass_tmp_t, keepass_t)) +KERNEL_FQ KERNEL_FA void m13400_loop (KERN_ATTR_TMPS_ESALT (keepass_tmp_t, keepass_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -252,7 +252,7 @@ KERNEL_FQ void m13400_loop (KERN_ATTR_TMPS_ESALT (keepass_tmp_t, keepass_t)) tmps[gid].tmp_digest[7] = data1[3]; } -KERNEL_FQ void m13400_comp (KERN_ATTR_TMPS_ESALT (keepass_tmp_t, keepass_t)) +KERNEL_FQ KERNEL_FA void m13400_comp (KERN_ATTR_TMPS_ESALT (keepass_tmp_t, keepass_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m13500_a0-optimized.cl b/OpenCL/m13500_a0-optimized.cl index f01a248a7..0b0afedb5 100644 --- a/OpenCL/m13500_a0-optimized.cl +++ b/OpenCL/m13500_a0-optimized.cl @@ -27,7 +27,7 @@ typedef struct pstoken } pstoken_t; -KERNEL_FQ void m13500_m04 (KERN_ATTR_RULES_ESALT (pstoken_t)) +KERNEL_FQ KERNEL_FA void m13500_m04 (KERN_ATTR_RULES_ESALT (pstoken_t)) { /** * modifier @@ -444,15 +444,15 @@ KERNEL_FQ void m13500_m04 (KERN_ATTR_RULES_ESALT (pstoken_t)) } } -KERNEL_FQ void m13500_m08 (KERN_ATTR_RULES_ESALT (pstoken_t)) +KERNEL_FQ KERNEL_FA void m13500_m08 (KERN_ATTR_RULES_ESALT (pstoken_t)) { } -KERNEL_FQ void m13500_m16 (KERN_ATTR_RULES_ESALT (pstoken_t)) +KERNEL_FQ KERNEL_FA void m13500_m16 (KERN_ATTR_RULES_ESALT (pstoken_t)) { } -KERNEL_FQ void m13500_s04 (KERN_ATTR_RULES_ESALT (pstoken_t)) +KERNEL_FQ KERNEL_FA void m13500_s04 (KERN_ATTR_RULES_ESALT (pstoken_t)) { /** * modifier @@ -881,10 +881,10 @@ KERNEL_FQ void m13500_s04 (KERN_ATTR_RULES_ESALT (pstoken_t)) } } -KERNEL_FQ void m13500_s08 (KERN_ATTR_RULES_ESALT (pstoken_t)) +KERNEL_FQ KERNEL_FA void m13500_s08 (KERN_ATTR_RULES_ESALT (pstoken_t)) { } -KERNEL_FQ void m13500_s16 (KERN_ATTR_RULES_ESALT (pstoken_t)) +KERNEL_FQ KERNEL_FA void m13500_s16 (KERN_ATTR_RULES_ESALT (pstoken_t)) { } diff --git a/OpenCL/m13500_a0-pure.cl b/OpenCL/m13500_a0-pure.cl index 8ade5504f..4312d3d6a 100644 --- a/OpenCL/m13500_a0-pure.cl +++ b/OpenCL/m13500_a0-pure.cl @@ -26,7 +26,7 @@ typedef struct pstoken } pstoken_t; -KERNEL_FQ void m13500_mxx (KERN_ATTR_RULES_ESALT (pstoken_t)) +KERNEL_FQ KERNEL_FA void m13500_mxx (KERN_ATTR_RULES_ESALT (pstoken_t)) { /** * modifier @@ -101,7 +101,7 @@ KERNEL_FQ void m13500_mxx (KERN_ATTR_RULES_ESALT (pstoken_t)) } } -KERNEL_FQ void m13500_sxx (KERN_ATTR_RULES_ESALT (pstoken_t)) +KERNEL_FQ KERNEL_FA void m13500_sxx (KERN_ATTR_RULES_ESALT (pstoken_t)) { /** * modifier diff --git a/OpenCL/m13500_a1-optimized.cl b/OpenCL/m13500_a1-optimized.cl index 5fd2ed370..823dcc34d 100644 --- a/OpenCL/m13500_a1-optimized.cl +++ b/OpenCL/m13500_a1-optimized.cl @@ -25,7 +25,7 @@ typedef struct pstoken } pstoken_t; -KERNEL_FQ void m13500_m04 (KERN_ATTR_ESALT (pstoken_t)) +KERNEL_FQ KERNEL_FA void m13500_m04 (KERN_ATTR_ESALT (pstoken_t)) { /** * modifier @@ -494,15 +494,15 @@ KERNEL_FQ void m13500_m04 (KERN_ATTR_ESALT (pstoken_t)) } } -KERNEL_FQ void m13500_m08 (KERN_ATTR_ESALT (pstoken_t)) +KERNEL_FQ KERNEL_FA void m13500_m08 (KERN_ATTR_ESALT (pstoken_t)) { } -KERNEL_FQ void m13500_m16 (KERN_ATTR_ESALT (pstoken_t)) +KERNEL_FQ KERNEL_FA void m13500_m16 (KERN_ATTR_ESALT (pstoken_t)) { } -KERNEL_FQ void m13500_s04 (KERN_ATTR_ESALT (pstoken_t)) +KERNEL_FQ KERNEL_FA void m13500_s04 (KERN_ATTR_ESALT (pstoken_t)) { /** * modifier @@ -983,10 +983,10 @@ KERNEL_FQ void m13500_s04 (KERN_ATTR_ESALT (pstoken_t)) } } -KERNEL_FQ void m13500_s08 (KERN_ATTR_ESALT (pstoken_t)) +KERNEL_FQ KERNEL_FA void m13500_s08 (KERN_ATTR_ESALT (pstoken_t)) { } -KERNEL_FQ void m13500_s16 (KERN_ATTR_ESALT (pstoken_t)) +KERNEL_FQ KERNEL_FA void m13500_s16 (KERN_ATTR_ESALT (pstoken_t)) { } diff --git a/OpenCL/m13500_a1-pure.cl b/OpenCL/m13500_a1-pure.cl index 9e8438e15..3851b6fab 100644 --- a/OpenCL/m13500_a1-pure.cl +++ b/OpenCL/m13500_a1-pure.cl @@ -24,7 +24,7 @@ typedef struct pstoken } pstoken_t; -KERNEL_FQ void m13500_mxx (KERN_ATTR_ESALT (pstoken_t)) +KERNEL_FQ KERNEL_FA void m13500_mxx (KERN_ATTR_ESALT (pstoken_t)) { /** * modifier @@ -95,7 +95,7 @@ KERNEL_FQ void m13500_mxx (KERN_ATTR_ESALT (pstoken_t)) } } -KERNEL_FQ void m13500_sxx (KERN_ATTR_ESALT (pstoken_t)) +KERNEL_FQ KERNEL_FA void m13500_sxx (KERN_ATTR_ESALT (pstoken_t)) { /** * modifier diff --git a/OpenCL/m13500_a3-optimized.cl b/OpenCL/m13500_a3-optimized.cl index eb334cdac..7a942b224 100644 --- a/OpenCL/m13500_a3-optimized.cl +++ b/OpenCL/m13500_a3-optimized.cl @@ -817,7 +817,7 @@ DECLSPEC void m13500s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m13500_m04 (KERN_ATTR_ESALT (pstoken_t)) +KERNEL_FQ KERNEL_FA void m13500_m04 (KERN_ATTR_ESALT (pstoken_t)) { /** * base @@ -866,7 +866,7 @@ KERNEL_FQ void m13500_m04 (KERN_ATTR_ESALT (pstoken_t)) m13500m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m13500_m08 (KERN_ATTR_ESALT (pstoken_t)) +KERNEL_FQ KERNEL_FA void m13500_m08 (KERN_ATTR_ESALT (pstoken_t)) { /** * base @@ -915,7 +915,7 @@ KERNEL_FQ void m13500_m08 (KERN_ATTR_ESALT (pstoken_t)) m13500m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m13500_m16 (KERN_ATTR_ESALT (pstoken_t)) +KERNEL_FQ KERNEL_FA void m13500_m16 (KERN_ATTR_ESALT (pstoken_t)) { /** * base @@ -964,7 +964,7 @@ KERNEL_FQ void m13500_m16 (KERN_ATTR_ESALT (pstoken_t)) m13500m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m13500_s04 (KERN_ATTR_ESALT (pstoken_t)) +KERNEL_FQ KERNEL_FA void m13500_s04 (KERN_ATTR_ESALT (pstoken_t)) { /** * base @@ -1013,7 +1013,7 @@ KERNEL_FQ void m13500_s04 (KERN_ATTR_ESALT (pstoken_t)) m13500s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m13500_s08 (KERN_ATTR_ESALT (pstoken_t)) +KERNEL_FQ KERNEL_FA void m13500_s08 (KERN_ATTR_ESALT (pstoken_t)) { /** * base @@ -1062,7 +1062,7 @@ KERNEL_FQ void m13500_s08 (KERN_ATTR_ESALT (pstoken_t)) m13500s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m13500_s16 (KERN_ATTR_ESALT (pstoken_t)) +KERNEL_FQ KERNEL_FA void m13500_s16 (KERN_ATTR_ESALT (pstoken_t)) { /** * base diff --git a/OpenCL/m13500_a3-pure.cl b/OpenCL/m13500_a3-pure.cl index 2dee0a358..f66e71239 100644 --- a/OpenCL/m13500_a3-pure.cl +++ b/OpenCL/m13500_a3-pure.cl @@ -24,7 +24,7 @@ typedef struct pstoken } pstoken_t; -KERNEL_FQ void m13500_mxx (KERN_ATTR_VECTOR_ESALT (pstoken_t)) +KERNEL_FQ KERNEL_FA void m13500_mxx (KERN_ATTR_VECTOR_ESALT (pstoken_t)) { /** * modifier @@ -112,7 +112,7 @@ KERNEL_FQ void m13500_mxx (KERN_ATTR_VECTOR_ESALT (pstoken_t)) } } -KERNEL_FQ void m13500_sxx (KERN_ATTR_VECTOR_ESALT (pstoken_t)) +KERNEL_FQ KERNEL_FA void m13500_sxx (KERN_ATTR_VECTOR_ESALT (pstoken_t)) { /** * modifier diff --git a/OpenCL/m13600-pure.cl b/OpenCL/m13600-pure.cl index 5a114304e..a5577bbaa 100644 --- a/OpenCL/m13600-pure.cl +++ b/OpenCL/m13600-pure.cl @@ -79,7 +79,7 @@ DECLSPEC void hmac_sha1_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE sha1_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m13600_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha1_tmp_t, zip2_t)) +KERNEL_FQ KERNEL_FA void m13600_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha1_tmp_t, zip2_t)) { /** * base @@ -188,7 +188,7 @@ KERNEL_FQ void m13600_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha1_tmp_t, zip2_t)) } } -KERNEL_FQ void m13600_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha1_tmp_t, zip2_t)) +KERNEL_FQ KERNEL_FA void m13600_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha1_tmp_t, zip2_t)) { const u64 gid = get_global_id (0); @@ -302,7 +302,7 @@ KERNEL_FQ void m13600_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha1_tmp_t, zip2_t)) } } -KERNEL_FQ void m13600_comp (KERN_ATTR_TMPS_ESALT (pbkdf2_sha1_tmp_t, zip2_t)) +KERNEL_FQ KERNEL_FA void m13600_comp (KERN_ATTR_TMPS_ESALT (pbkdf2_sha1_tmp_t, zip2_t)) { /** * base diff --git a/OpenCL/m13711-pure.cl b/OpenCL/m13711-pure.cl index 36ae740a7..b7f67269f 100644 --- a/OpenCL/m13711-pure.cl +++ b/OpenCL/m13711-pure.cl @@ -124,7 +124,7 @@ DECLSPEC void hmac_ripemd160_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PR ripemd160_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m13711_init (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) +KERNEL_FQ KERNEL_FA void m13711_init (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -254,7 +254,7 @@ KERNEL_FQ void m13711_init (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) } } -KERNEL_FQ void m13711_loop (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) +KERNEL_FQ KERNEL_FA void m13711_loop (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) { const u64 gid = get_global_id (0); @@ -385,7 +385,7 @@ KERNEL_FQ void m13711_loop (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) } } -KERNEL_FQ void m13711_loop_extended (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) +KERNEL_FQ KERNEL_FA void m13711_loop_extended (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -457,7 +457,7 @@ KERNEL_FQ void m13711_loop_extended (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) } } -KERNEL_FQ void m13711_comp (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) +KERNEL_FQ KERNEL_FA void m13711_comp (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m13712-pure.cl b/OpenCL/m13712-pure.cl index 11acc1753..5f3e6f910 100644 --- a/OpenCL/m13712-pure.cl +++ b/OpenCL/m13712-pure.cl @@ -175,7 +175,7 @@ DECLSPEC void hmac_ripemd160_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PR ripemd160_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m13712_init (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) +KERNEL_FQ KERNEL_FA void m13712_init (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -305,7 +305,7 @@ KERNEL_FQ void m13712_init (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) } } -KERNEL_FQ void m13712_loop (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) +KERNEL_FQ KERNEL_FA void m13712_loop (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) { const u64 gid = get_global_id (0); @@ -436,7 +436,7 @@ KERNEL_FQ void m13712_loop (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) } } -KERNEL_FQ void m13712_loop_extended (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) +KERNEL_FQ KERNEL_FA void m13712_loop_extended (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -513,7 +513,7 @@ KERNEL_FQ void m13712_loop_extended (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) } } -KERNEL_FQ void m13712_comp (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) +KERNEL_FQ KERNEL_FA void m13712_comp (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m13713-pure.cl b/OpenCL/m13713-pure.cl index e03a1e86a..7c4296269 100644 --- a/OpenCL/m13713-pure.cl +++ b/OpenCL/m13713-pure.cl @@ -240,7 +240,7 @@ DECLSPEC void hmac_ripemd160_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PR ripemd160_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m13713_init (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) +KERNEL_FQ KERNEL_FA void m13713_init (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -370,7 +370,7 @@ KERNEL_FQ void m13713_init (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) } } -KERNEL_FQ void m13713_loop (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) +KERNEL_FQ KERNEL_FA void m13713_loop (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) { const u64 gid = get_global_id (0); @@ -501,7 +501,7 @@ KERNEL_FQ void m13713_loop (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) } } -KERNEL_FQ void m13713_loop_extended (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) +KERNEL_FQ KERNEL_FA void m13713_loop_extended (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -583,7 +583,7 @@ KERNEL_FQ void m13713_loop_extended (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) } } -KERNEL_FQ void m13713_comp (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) +KERNEL_FQ KERNEL_FA void m13713_comp (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m13721-pure.cl b/OpenCL/m13721-pure.cl index 978497b58..2e7c2dd48 100644 --- a/OpenCL/m13721-pure.cl +++ b/OpenCL/m13721-pure.cl @@ -146,7 +146,7 @@ DECLSPEC void hmac_sha512_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVA sha512_transform_vector (w0, w1, w2, w3, w4, w5, w6, w7, digest); } -KERNEL_FQ void m13721_init (KERN_ATTR_TMPS_ESALT (vc64_tmp_t, vc_t)) +KERNEL_FQ KERNEL_FA void m13721_init (KERN_ATTR_TMPS_ESALT (vc64_tmp_t, vc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -308,7 +308,7 @@ KERNEL_FQ void m13721_init (KERN_ATTR_TMPS_ESALT (vc64_tmp_t, vc_t)) } } -KERNEL_FQ void m13721_loop (KERN_ATTR_TMPS_ESALT (vc64_tmp_t, vc_t)) +KERNEL_FQ KERNEL_FA void m13721_loop (KERN_ATTR_TMPS_ESALT (vc64_tmp_t, vc_t)) { const u64 gid = get_global_id (0); @@ -483,7 +483,7 @@ KERNEL_FQ void m13721_loop (KERN_ATTR_TMPS_ESALT (vc64_tmp_t, vc_t)) } } -KERNEL_FQ void m13721_loop_extended (KERN_ATTR_TMPS_ESALT (vc64_tmp_t, vc_t)) +KERNEL_FQ KERNEL_FA void m13721_loop_extended (KERN_ATTR_TMPS_ESALT (vc64_tmp_t, vc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -555,7 +555,7 @@ KERNEL_FQ void m13721_loop_extended (KERN_ATTR_TMPS_ESALT (vc64_tmp_t, vc_t)) } } -KERNEL_FQ void m13721_comp (KERN_ATTR_TMPS_ESALT (vc64_tmp_t, vc_t)) +KERNEL_FQ KERNEL_FA void m13721_comp (KERN_ATTR_TMPS_ESALT (vc64_tmp_t, vc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m13722-pure.cl b/OpenCL/m13722-pure.cl index 12590f2fb..d8c0eacc8 100644 --- a/OpenCL/m13722-pure.cl +++ b/OpenCL/m13722-pure.cl @@ -197,7 +197,7 @@ DECLSPEC void hmac_sha512_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVA sha512_transform_vector (w0, w1, w2, w3, w4, w5, w6, w7, digest); } -KERNEL_FQ void m13722_init (KERN_ATTR_TMPS_ESALT (vc64_tmp_t, vc_t)) +KERNEL_FQ KERNEL_FA void m13722_init (KERN_ATTR_TMPS_ESALT (vc64_tmp_t, vc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -359,7 +359,7 @@ KERNEL_FQ void m13722_init (KERN_ATTR_TMPS_ESALT (vc64_tmp_t, vc_t)) } } -KERNEL_FQ void m13722_loop (KERN_ATTR_TMPS_ESALT (vc64_tmp_t, vc_t)) +KERNEL_FQ KERNEL_FA void m13722_loop (KERN_ATTR_TMPS_ESALT (vc64_tmp_t, vc_t)) { const u64 gid = get_global_id (0); @@ -534,7 +534,7 @@ KERNEL_FQ void m13722_loop (KERN_ATTR_TMPS_ESALT (vc64_tmp_t, vc_t)) } } -KERNEL_FQ void m13722_loop_extended (KERN_ATTR_TMPS_ESALT (vc64_tmp_t, vc_t)) +KERNEL_FQ KERNEL_FA void m13722_loop_extended (KERN_ATTR_TMPS_ESALT (vc64_tmp_t, vc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -611,7 +611,7 @@ KERNEL_FQ void m13722_loop_extended (KERN_ATTR_TMPS_ESALT (vc64_tmp_t, vc_t)) } } -KERNEL_FQ void m13722_comp (KERN_ATTR_TMPS_ESALT (vc64_tmp_t, vc_t)) +KERNEL_FQ KERNEL_FA void m13722_comp (KERN_ATTR_TMPS_ESALT (vc64_tmp_t, vc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m13723-pure.cl b/OpenCL/m13723-pure.cl index 8d67e7c7a..42e3cf63e 100644 --- a/OpenCL/m13723-pure.cl +++ b/OpenCL/m13723-pure.cl @@ -262,7 +262,7 @@ DECLSPEC void hmac_sha512_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVA sha512_transform_vector (w0, w1, w2, w3, w4, w5, w6, w7, digest); } -KERNEL_FQ void m13723_init (KERN_ATTR_TMPS_ESALT (vc64_tmp_t, vc_t)) +KERNEL_FQ KERNEL_FA void m13723_init (KERN_ATTR_TMPS_ESALT (vc64_tmp_t, vc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -424,7 +424,7 @@ KERNEL_FQ void m13723_init (KERN_ATTR_TMPS_ESALT (vc64_tmp_t, vc_t)) } } -KERNEL_FQ void m13723_loop (KERN_ATTR_TMPS_ESALT (vc64_tmp_t, vc_t)) +KERNEL_FQ KERNEL_FA void m13723_loop (KERN_ATTR_TMPS_ESALT (vc64_tmp_t, vc_t)) { const u64 gid = get_global_id (0); @@ -599,7 +599,7 @@ KERNEL_FQ void m13723_loop (KERN_ATTR_TMPS_ESALT (vc64_tmp_t, vc_t)) } } -KERNEL_FQ void m13723_loop_extended (KERN_ATTR_TMPS_ESALT (vc64_tmp_t, vc_t)) +KERNEL_FQ KERNEL_FA void m13723_loop_extended (KERN_ATTR_TMPS_ESALT (vc64_tmp_t, vc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -681,7 +681,7 @@ KERNEL_FQ void m13723_loop_extended (KERN_ATTR_TMPS_ESALT (vc64_tmp_t, vc_t)) } } -KERNEL_FQ void m13723_comp (KERN_ATTR_TMPS_ESALT (vc64_tmp_t, vc_t)) +KERNEL_FQ KERNEL_FA void m13723_comp (KERN_ATTR_TMPS_ESALT (vc64_tmp_t, vc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m13731-pure.cl b/OpenCL/m13731-pure.cl index bf6109688..ebd10aecc 100644 --- a/OpenCL/m13731-pure.cl +++ b/OpenCL/m13731-pure.cl @@ -184,7 +184,7 @@ DECLSPEC void hmac_whirlpool_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PR whirlpool_transform_vector (w0, w1, w2, w3, digest, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7); } -KERNEL_FQ void m13731_init (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) +KERNEL_FQ KERNEL_FA void m13731_init (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -400,7 +400,7 @@ KERNEL_FQ void m13731_init (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) } } -KERNEL_FQ void m13731_loop (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) +KERNEL_FQ KERNEL_FA void m13731_loop (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -663,7 +663,7 @@ KERNEL_FQ void m13731_loop (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) } } -KERNEL_FQ void m13731_loop_extended (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) +KERNEL_FQ KERNEL_FA void m13731_loop_extended (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -735,7 +735,7 @@ KERNEL_FQ void m13731_loop_extended (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) } } -KERNEL_FQ void m13731_comp (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) +KERNEL_FQ KERNEL_FA void m13731_comp (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m13732-pure.cl b/OpenCL/m13732-pure.cl index 5cebed18e..2b981463f 100644 --- a/OpenCL/m13732-pure.cl +++ b/OpenCL/m13732-pure.cl @@ -235,7 +235,7 @@ DECLSPEC void hmac_whirlpool_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PR whirlpool_transform_vector (w0, w1, w2, w3, digest, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7); } -KERNEL_FQ void m13732_init (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) +KERNEL_FQ KERNEL_FA void m13732_init (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -451,7 +451,7 @@ KERNEL_FQ void m13732_init (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) } } -KERNEL_FQ void m13732_loop (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) +KERNEL_FQ KERNEL_FA void m13732_loop (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -714,7 +714,7 @@ KERNEL_FQ void m13732_loop (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) } } -KERNEL_FQ void m13732_loop_extended (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) +KERNEL_FQ KERNEL_FA void m13732_loop_extended (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -791,7 +791,7 @@ KERNEL_FQ void m13732_loop_extended (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) } } -KERNEL_FQ void m13732_comp (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) +KERNEL_FQ KERNEL_FA void m13732_comp (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m13733-pure.cl b/OpenCL/m13733-pure.cl index a16ee5740..afc129827 100644 --- a/OpenCL/m13733-pure.cl +++ b/OpenCL/m13733-pure.cl @@ -300,7 +300,7 @@ DECLSPEC void hmac_whirlpool_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PR whirlpool_transform_vector (w0, w1, w2, w3, digest, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7); } -KERNEL_FQ void m13733_init (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) +KERNEL_FQ KERNEL_FA void m13733_init (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -516,7 +516,7 @@ KERNEL_FQ void m13733_init (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) } } -KERNEL_FQ void m13733_loop (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) +KERNEL_FQ KERNEL_FA void m13733_loop (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -779,7 +779,7 @@ KERNEL_FQ void m13733_loop (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) } } -KERNEL_FQ void m13733_loop_extended (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) +KERNEL_FQ KERNEL_FA void m13733_loop_extended (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -861,7 +861,7 @@ KERNEL_FQ void m13733_loop_extended (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) } } -KERNEL_FQ void m13733_comp (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) +KERNEL_FQ KERNEL_FA void m13733_comp (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m13751-pure.cl b/OpenCL/m13751-pure.cl index cd7a2dbd8..b504c4c42 100644 --- a/OpenCL/m13751-pure.cl +++ b/OpenCL/m13751-pure.cl @@ -130,7 +130,7 @@ DECLSPEC void hmac_sha256_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVA sha256_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m13751_init (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) +KERNEL_FQ KERNEL_FA void m13751_init (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -276,7 +276,7 @@ KERNEL_FQ void m13751_init (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) } } -KERNEL_FQ void m13751_loop (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) +KERNEL_FQ KERNEL_FA void m13751_loop (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) { const u64 gid = get_global_id (0); @@ -460,7 +460,7 @@ KERNEL_FQ void m13751_loop (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) } } -KERNEL_FQ void m13751_loop_extended (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) +KERNEL_FQ KERNEL_FA void m13751_loop_extended (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -532,7 +532,7 @@ KERNEL_FQ void m13751_loop_extended (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) } } -KERNEL_FQ void m13751_comp (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) +KERNEL_FQ KERNEL_FA void m13751_comp (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m13752-pure.cl b/OpenCL/m13752-pure.cl index a7a977e31..f823064cd 100644 --- a/OpenCL/m13752-pure.cl +++ b/OpenCL/m13752-pure.cl @@ -181,7 +181,7 @@ DECLSPEC void hmac_sha256_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVA sha256_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m13752_init (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) +KERNEL_FQ KERNEL_FA void m13752_init (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -327,7 +327,7 @@ KERNEL_FQ void m13752_init (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) } } -KERNEL_FQ void m13752_loop (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) +KERNEL_FQ KERNEL_FA void m13752_loop (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) { const u64 gid = get_global_id (0); @@ -482,7 +482,7 @@ KERNEL_FQ void m13752_loop (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) } } -KERNEL_FQ void m13752_loop_extended (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) +KERNEL_FQ KERNEL_FA void m13752_loop_extended (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -559,7 +559,7 @@ KERNEL_FQ void m13752_loop_extended (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) } } -KERNEL_FQ void m13752_comp (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) +KERNEL_FQ KERNEL_FA void m13752_comp (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m13753-pure.cl b/OpenCL/m13753-pure.cl index 7df35f839..485983b26 100644 --- a/OpenCL/m13753-pure.cl +++ b/OpenCL/m13753-pure.cl @@ -246,7 +246,7 @@ DECLSPEC void hmac_sha256_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVA sha256_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m13753_init (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) +KERNEL_FQ KERNEL_FA void m13753_init (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -392,7 +392,7 @@ KERNEL_FQ void m13753_init (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) } } -KERNEL_FQ void m13753_loop (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) +KERNEL_FQ KERNEL_FA void m13753_loop (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) { const u64 gid = get_global_id (0); @@ -547,7 +547,7 @@ KERNEL_FQ void m13753_loop (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) } } -KERNEL_FQ void m13753_loop_extended (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) +KERNEL_FQ KERNEL_FA void m13753_loop_extended (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -629,7 +629,7 @@ KERNEL_FQ void m13753_loop_extended (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) } } -KERNEL_FQ void m13753_comp (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) +KERNEL_FQ KERNEL_FA void m13753_comp (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m13771-pure.cl b/OpenCL/m13771-pure.cl index e212dfacb..21d9a1824 100644 --- a/OpenCL/m13771-pure.cl +++ b/OpenCL/m13771-pure.cl @@ -176,7 +176,7 @@ DECLSPEC void hmac_streebog512_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, streebog512_g_vector (digest, nullbuf, message, s_sbob_sl64); } -KERNEL_FQ void m13771_init (KERN_ATTR_TMPS_ESALT (vc64_sbog_tmp_t, vc_t)) +KERNEL_FQ KERNEL_FA void m13771_init (KERN_ATTR_TMPS_ESALT (vc64_sbog_tmp_t, vc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -356,7 +356,7 @@ KERNEL_FQ void m13771_init (KERN_ATTR_TMPS_ESALT (vc64_sbog_tmp_t, vc_t)) } } -KERNEL_FQ void m13771_loop (KERN_ATTR_TMPS_ESALT (vc64_sbog_tmp_t, vc_t)) +KERNEL_FQ KERNEL_FA void m13771_loop (KERN_ATTR_TMPS_ESALT (vc64_sbog_tmp_t, vc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -562,7 +562,7 @@ KERNEL_FQ void m13771_loop (KERN_ATTR_TMPS_ESALT (vc64_sbog_tmp_t, vc_t)) } } -KERNEL_FQ void m13771_loop_extended (KERN_ATTR_TMPS_ESALT (vc64_sbog_tmp_t, vc_t)) +KERNEL_FQ KERNEL_FA void m13771_loop_extended (KERN_ATTR_TMPS_ESALT (vc64_sbog_tmp_t, vc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -634,7 +634,7 @@ KERNEL_FQ void m13771_loop_extended (KERN_ATTR_TMPS_ESALT (vc64_sbog_tmp_t, vc_t } } -KERNEL_FQ void m13771_comp (KERN_ATTR_TMPS_ESALT (vc64_sbog_tmp_t, vc_t)) +KERNEL_FQ KERNEL_FA void m13771_comp (KERN_ATTR_TMPS_ESALT (vc64_sbog_tmp_t, vc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m13772-pure.cl b/OpenCL/m13772-pure.cl index c4b870208..f6b7d9402 100644 --- a/OpenCL/m13772-pure.cl +++ b/OpenCL/m13772-pure.cl @@ -227,7 +227,7 @@ DECLSPEC void hmac_streebog512_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, streebog512_g_vector (digest, nullbuf, message, s_sbob_sl64); } -KERNEL_FQ void m13772_init (KERN_ATTR_TMPS_ESALT (vc64_sbog_tmp_t, vc_t)) +KERNEL_FQ KERNEL_FA void m13772_init (KERN_ATTR_TMPS_ESALT (vc64_sbog_tmp_t, vc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -451,7 +451,7 @@ KERNEL_FQ void m13772_init (KERN_ATTR_TMPS_ESALT (vc64_sbog_tmp_t, vc_t)) tmps[gid].out[i + 7] = tmps[gid].dgst[i + 7]; } -KERNEL_FQ void m13772_loop (KERN_ATTR_TMPS_ESALT (vc64_sbog_tmp_t, vc_t)) +KERNEL_FQ KERNEL_FA void m13772_loop (KERN_ATTR_TMPS_ESALT (vc64_sbog_tmp_t, vc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -657,7 +657,7 @@ KERNEL_FQ void m13772_loop (KERN_ATTR_TMPS_ESALT (vc64_sbog_tmp_t, vc_t)) } } -KERNEL_FQ void m13772_loop_extended (KERN_ATTR_TMPS_ESALT (vc64_sbog_tmp_t, vc_t)) +KERNEL_FQ KERNEL_FA void m13772_loop_extended (KERN_ATTR_TMPS_ESALT (vc64_sbog_tmp_t, vc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -734,7 +734,7 @@ KERNEL_FQ void m13772_loop_extended (KERN_ATTR_TMPS_ESALT (vc64_sbog_tmp_t, vc_t } } -KERNEL_FQ void m13772_comp (KERN_ATTR_TMPS_ESALT (vc64_sbog_tmp_t, vc_t)) +KERNEL_FQ KERNEL_FA void m13772_comp (KERN_ATTR_TMPS_ESALT (vc64_sbog_tmp_t, vc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m13773-pure.cl b/OpenCL/m13773-pure.cl index 55f14890c..5b9411215 100644 --- a/OpenCL/m13773-pure.cl +++ b/OpenCL/m13773-pure.cl @@ -292,7 +292,7 @@ DECLSPEC void hmac_streebog512_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, streebog512_g_vector (digest, nullbuf, message, s_sbob_sl64); } -KERNEL_FQ void m13773_init (KERN_ATTR_TMPS_ESALT (vc64_sbog_tmp_t, vc_t)) +KERNEL_FQ KERNEL_FA void m13773_init (KERN_ATTR_TMPS_ESALT (vc64_sbog_tmp_t, vc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -560,7 +560,7 @@ KERNEL_FQ void m13773_init (KERN_ATTR_TMPS_ESALT (vc64_sbog_tmp_t, vc_t)) tmps[gid].out[i + 7] = tmps[gid].dgst[i + 7]; } -KERNEL_FQ void m13773_loop (KERN_ATTR_TMPS_ESALT (vc64_sbog_tmp_t, vc_t)) +KERNEL_FQ KERNEL_FA void m13773_loop (KERN_ATTR_TMPS_ESALT (vc64_sbog_tmp_t, vc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -766,7 +766,7 @@ KERNEL_FQ void m13773_loop (KERN_ATTR_TMPS_ESALT (vc64_sbog_tmp_t, vc_t)) } } -KERNEL_FQ void m13773_loop_extended (KERN_ATTR_TMPS_ESALT (vc64_sbog_tmp_t, vc_t)) +KERNEL_FQ KERNEL_FA void m13773_loop_extended (KERN_ATTR_TMPS_ESALT (vc64_sbog_tmp_t, vc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -848,7 +848,7 @@ KERNEL_FQ void m13773_loop_extended (KERN_ATTR_TMPS_ESALT (vc64_sbog_tmp_t, vc_t } } -KERNEL_FQ void m13773_comp (KERN_ATTR_TMPS_ESALT (vc64_sbog_tmp_t, vc_t)) +KERNEL_FQ KERNEL_FA void m13773_comp (KERN_ATTR_TMPS_ESALT (vc64_sbog_tmp_t, vc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m13800_a0-optimized.cl b/OpenCL/m13800_a0-optimized.cl index 4da2d1c98..2562fac9b 100644 --- a/OpenCL/m13800_a0-optimized.cl +++ b/OpenCL/m13800_a0-optimized.cl @@ -410,7 +410,7 @@ DECLSPEC void memcat64c_be (PRIVATE_AS u32x *block, const u32 offset, PRIVATE_AS } } -KERNEL_FQ void m13800_m04 (KERN_ATTR_RULES_ESALT (win8phone_t)) +KERNEL_FQ KERNEL_FA void m13800_m04 (KERN_ATTR_RULES_ESALT (win8phone_t)) { /** * modifier @@ -598,15 +598,15 @@ KERNEL_FQ void m13800_m04 (KERN_ATTR_RULES_ESALT (win8phone_t)) } } -KERNEL_FQ void m13800_m08 (KERN_ATTR_RULES_ESALT (win8phone_t)) +KERNEL_FQ KERNEL_FA void m13800_m08 (KERN_ATTR_RULES_ESALT (win8phone_t)) { } -KERNEL_FQ void m13800_m16 (KERN_ATTR_RULES_ESALT (win8phone_t)) +KERNEL_FQ KERNEL_FA void m13800_m16 (KERN_ATTR_RULES_ESALT (win8phone_t)) { } -KERNEL_FQ void m13800_s04 (KERN_ATTR_RULES_ESALT (win8phone_t)) +KERNEL_FQ KERNEL_FA void m13800_s04 (KERN_ATTR_RULES_ESALT (win8phone_t)) { /** * modifier @@ -806,10 +806,10 @@ KERNEL_FQ void m13800_s04 (KERN_ATTR_RULES_ESALT (win8phone_t)) } } -KERNEL_FQ void m13800_s08 (KERN_ATTR_RULES_ESALT (win8phone_t)) +KERNEL_FQ KERNEL_FA void m13800_s08 (KERN_ATTR_RULES_ESALT (win8phone_t)) { } -KERNEL_FQ void m13800_s16 (KERN_ATTR_RULES_ESALT (win8phone_t)) +KERNEL_FQ KERNEL_FA void m13800_s16 (KERN_ATTR_RULES_ESALT (win8phone_t)) { } diff --git a/OpenCL/m13800_a0-pure.cl b/OpenCL/m13800_a0-pure.cl index c7a1d0299..ba45d033e 100644 --- a/OpenCL/m13800_a0-pure.cl +++ b/OpenCL/m13800_a0-pure.cl @@ -22,7 +22,7 @@ typedef struct win8phone } win8phone_t; -KERNEL_FQ void m13800_mxx (KERN_ATTR_RULES_ESALT (win8phone_t)) +KERNEL_FQ KERNEL_FA void m13800_mxx (KERN_ATTR_RULES_ESALT (win8phone_t)) { /** * modifier @@ -68,7 +68,7 @@ KERNEL_FQ void m13800_mxx (KERN_ATTR_RULES_ESALT (win8phone_t)) } } -KERNEL_FQ void m13800_sxx (KERN_ATTR_RULES_ESALT (win8phone_t)) +KERNEL_FQ KERNEL_FA void m13800_sxx (KERN_ATTR_RULES_ESALT (win8phone_t)) { /** * modifier diff --git a/OpenCL/m13800_a1-optimized.cl b/OpenCL/m13800_a1-optimized.cl index 033f3a98e..2ea23421b 100644 --- a/OpenCL/m13800_a1-optimized.cl +++ b/OpenCL/m13800_a1-optimized.cl @@ -408,7 +408,7 @@ DECLSPEC void memcat64c_be (PRIVATE_AS u32x *block, const u32 offset, PRIVATE_AS } } -KERNEL_FQ void m13800_m04 (KERN_ATTR_ESALT (win8phone_t)) +KERNEL_FQ KERNEL_FA void m13800_m04 (KERN_ATTR_ESALT (win8phone_t)) { /** * modifier @@ -652,15 +652,15 @@ KERNEL_FQ void m13800_m04 (KERN_ATTR_ESALT (win8phone_t)) } } -KERNEL_FQ void m13800_m08 (KERN_ATTR_ESALT (win8phone_t)) +KERNEL_FQ KERNEL_FA void m13800_m08 (KERN_ATTR_ESALT (win8phone_t)) { } -KERNEL_FQ void m13800_m16 (KERN_ATTR_ESALT (win8phone_t)) +KERNEL_FQ KERNEL_FA void m13800_m16 (KERN_ATTR_ESALT (win8phone_t)) { } -KERNEL_FQ void m13800_s04 (KERN_ATTR_ESALT (win8phone_t)) +KERNEL_FQ KERNEL_FA void m13800_s04 (KERN_ATTR_ESALT (win8phone_t)) { /** * modifier @@ -916,10 +916,10 @@ KERNEL_FQ void m13800_s04 (KERN_ATTR_ESALT (win8phone_t)) } } -KERNEL_FQ void m13800_s08 (KERN_ATTR_ESALT (win8phone_t)) +KERNEL_FQ KERNEL_FA void m13800_s08 (KERN_ATTR_ESALT (win8phone_t)) { } -KERNEL_FQ void m13800_s16 (KERN_ATTR_ESALT (win8phone_t)) +KERNEL_FQ KERNEL_FA void m13800_s16 (KERN_ATTR_ESALT (win8phone_t)) { } diff --git a/OpenCL/m13800_a1-pure.cl b/OpenCL/m13800_a1-pure.cl index 5e507e7f4..036086f8a 100644 --- a/OpenCL/m13800_a1-pure.cl +++ b/OpenCL/m13800_a1-pure.cl @@ -20,7 +20,7 @@ typedef struct win8phone } win8phone_t; -KERNEL_FQ void m13800_mxx (KERN_ATTR_ESALT (win8phone_t)) +KERNEL_FQ KERNEL_FA void m13800_mxx (KERN_ATTR_ESALT (win8phone_t)) { /** * modifier @@ -64,7 +64,7 @@ KERNEL_FQ void m13800_mxx (KERN_ATTR_ESALT (win8phone_t)) } } -KERNEL_FQ void m13800_sxx (KERN_ATTR_ESALT (win8phone_t)) +KERNEL_FQ KERNEL_FA void m13800_sxx (KERN_ATTR_ESALT (win8phone_t)) { /** * modifier diff --git a/OpenCL/m13800_a3-optimized.cl b/OpenCL/m13800_a3-optimized.cl index 8352ffb4f..d79a9e8f7 100644 --- a/OpenCL/m13800_a3-optimized.cl +++ b/OpenCL/m13800_a3-optimized.cl @@ -709,7 +709,7 @@ DECLSPEC void m13800s (LOCAL_AS u32 *s_esalt, PRIVATE_AS u32 *w, const u32 pw_le } } -KERNEL_FQ void m13800_m04 (KERN_ATTR_VECTOR_ESALT (win8phone_t)) +KERNEL_FQ KERNEL_FA void m13800_m04 (KERN_ATTR_VECTOR_ESALT (win8phone_t)) { /** * modifier @@ -766,7 +766,7 @@ KERNEL_FQ void m13800_m04 (KERN_ATTR_VECTOR_ESALT (win8phone_t)) m13800m (s_esalt, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m13800_m08 (KERN_ATTR_VECTOR_ESALT (win8phone_t)) +KERNEL_FQ KERNEL_FA void m13800_m08 (KERN_ATTR_VECTOR_ESALT (win8phone_t)) { /** * modifier @@ -823,7 +823,7 @@ KERNEL_FQ void m13800_m08 (KERN_ATTR_VECTOR_ESALT (win8phone_t)) m13800m (s_esalt, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m13800_m16 (KERN_ATTR_VECTOR_ESALT (win8phone_t)) +KERNEL_FQ KERNEL_FA void m13800_m16 (KERN_ATTR_VECTOR_ESALT (win8phone_t)) { /** * modifier @@ -880,7 +880,7 @@ KERNEL_FQ void m13800_m16 (KERN_ATTR_VECTOR_ESALT (win8phone_t)) m13800m (s_esalt, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m13800_s04 (KERN_ATTR_VECTOR_ESALT (win8phone_t)) +KERNEL_FQ KERNEL_FA void m13800_s04 (KERN_ATTR_VECTOR_ESALT (win8phone_t)) { /** * modifier @@ -937,7 +937,7 @@ KERNEL_FQ void m13800_s04 (KERN_ATTR_VECTOR_ESALT (win8phone_t)) m13800s (s_esalt, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m13800_s08 (KERN_ATTR_VECTOR_ESALT (win8phone_t)) +KERNEL_FQ KERNEL_FA void m13800_s08 (KERN_ATTR_VECTOR_ESALT (win8phone_t)) { /** * modifier @@ -994,7 +994,7 @@ KERNEL_FQ void m13800_s08 (KERN_ATTR_VECTOR_ESALT (win8phone_t)) m13800s (s_esalt, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m13800_s16 (KERN_ATTR_VECTOR_ESALT (win8phone_t)) +KERNEL_FQ KERNEL_FA void m13800_s16 (KERN_ATTR_VECTOR_ESALT (win8phone_t)) { /** * modifier diff --git a/OpenCL/m13800_a3-pure.cl b/OpenCL/m13800_a3-pure.cl index 47ad0f431..6e433819c 100644 --- a/OpenCL/m13800_a3-pure.cl +++ b/OpenCL/m13800_a3-pure.cl @@ -20,7 +20,7 @@ typedef struct win8phone } win8phone_t; -KERNEL_FQ void m13800_mxx (KERN_ATTR_VECTOR_ESALT (win8phone_t)) +KERNEL_FQ KERNEL_FA void m13800_mxx (KERN_ATTR_VECTOR_ESALT (win8phone_t)) { /** * modifier @@ -86,7 +86,7 @@ KERNEL_FQ void m13800_mxx (KERN_ATTR_VECTOR_ESALT (win8phone_t)) } } -KERNEL_FQ void m13800_sxx (KERN_ATTR_VECTOR_ESALT (win8phone_t)) +KERNEL_FQ KERNEL_FA void m13800_sxx (KERN_ATTR_VECTOR_ESALT (win8phone_t)) { /** * modifier diff --git a/OpenCL/m13900_a0-optimized.cl b/OpenCL/m13900_a0-optimized.cl index b24b610e5..7f7a5b891 100644 --- a/OpenCL/m13900_a0-optimized.cl +++ b/OpenCL/m13900_a0-optimized.cl @@ -28,7 +28,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m13900_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m13900_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -247,15 +247,15 @@ KERNEL_FQ void m13900_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m13900_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m13900_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m13900_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m13900_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m13900_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m13900_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -486,10 +486,10 @@ KERNEL_FQ void m13900_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m13900_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m13900_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m13900_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m13900_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m13900_a0-pure.cl b/OpenCL/m13900_a0-pure.cl index df2afe2e9..a62859e7c 100644 --- a/OpenCL/m13900_a0-pure.cl +++ b/OpenCL/m13900_a0-pure.cl @@ -28,7 +28,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m13900_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m13900_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -179,7 +179,7 @@ KERNEL_FQ void m13900_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m13900_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m13900_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m13900_a1-optimized.cl b/OpenCL/m13900_a1-optimized.cl index 22e59655a..6dbac3ab0 100644 --- a/OpenCL/m13900_a1-optimized.cl +++ b/OpenCL/m13900_a1-optimized.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m13900_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m13900_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -303,15 +303,15 @@ KERNEL_FQ void m13900_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m13900_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m13900_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m13900_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m13900_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m13900_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m13900_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -600,10 +600,10 @@ KERNEL_FQ void m13900_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m13900_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m13900_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m13900_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m13900_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m13900_a1-pure.cl b/OpenCL/m13900_a1-pure.cl index 2da14f898..bb7f5fa34 100644 --- a/OpenCL/m13900_a1-pure.cl +++ b/OpenCL/m13900_a1-pure.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m13900_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m13900_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -175,7 +175,7 @@ KERNEL_FQ void m13900_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m13900_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m13900_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m13900_a3-optimized.cl b/OpenCL/m13900_a3-optimized.cl index e0292604e..50bfc8ebf 100644 --- a/OpenCL/m13900_a3-optimized.cl +++ b/OpenCL/m13900_a3-optimized.cl @@ -409,7 +409,7 @@ DECLSPEC void m13900s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m13900_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m13900_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -479,7 +479,7 @@ KERNEL_FQ void m13900_m04 (KERN_ATTR_BASIC ()) m13900m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m13900_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m13900_m08 (KERN_ATTR_BASIC ()) { /** * modifier @@ -549,7 +549,7 @@ KERNEL_FQ void m13900_m08 (KERN_ATTR_BASIC ()) m13900m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m13900_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m13900_m16 (KERN_ATTR_BASIC ()) { /** * modifier @@ -619,7 +619,7 @@ KERNEL_FQ void m13900_m16 (KERN_ATTR_BASIC ()) m13900m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m13900_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m13900_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -689,7 +689,7 @@ KERNEL_FQ void m13900_s04 (KERN_ATTR_BASIC ()) m13900s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m13900_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m13900_s08 (KERN_ATTR_BASIC ()) { /** * modifier @@ -759,7 +759,7 @@ KERNEL_FQ void m13900_s08 (KERN_ATTR_BASIC ()) m13900s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m13900_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m13900_s16 (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m13900_a3-pure.cl b/OpenCL/m13900_a3-pure.cl index 42a93b689..e200881a9 100644 --- a/OpenCL/m13900_a3-pure.cl +++ b/OpenCL/m13900_a3-pure.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m13900_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m13900_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -192,7 +192,7 @@ KERNEL_FQ void m13900_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m13900_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m13900_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m14000_a0-pure.cl b/OpenCL/m14000_a0-pure.cl index 6f53c5fc0..61c443477 100644 --- a/OpenCL/m14000_a0-pure.cl +++ b/OpenCL/m14000_a0-pure.cl @@ -497,7 +497,7 @@ DECLSPEC void _des_crypt_keysetup (u32 c, u32 d, PRIVATE_AS u32 *Kc, PRIVATE_AS } } -KERNEL_FQ void m14000_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m14000_mxx (KERN_ATTR_RULES ()) { /** * base @@ -602,7 +602,7 @@ KERNEL_FQ void m14000_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m14000_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m14000_sxx (KERN_ATTR_RULES ()) { /** * base diff --git a/OpenCL/m14000_a1-pure.cl b/OpenCL/m14000_a1-pure.cl index 2615a66d4..5ef0b3ef7 100644 --- a/OpenCL/m14000_a1-pure.cl +++ b/OpenCL/m14000_a1-pure.cl @@ -487,7 +487,7 @@ DECLSPEC void _des_crypt_keysetup (u32 c, u32 d, PRIVATE_AS u32 *Kc, PRIVATE_AS } } -KERNEL_FQ void m14000_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m14000_mxx (KERN_ATTR_BASIC ()) { /** * base @@ -635,7 +635,7 @@ KERNEL_FQ void m14000_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m14000_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m14000_sxx (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m14000_a3-pure.cl b/OpenCL/m14000_a3-pure.cl index 6b020b286..28931f4dd 100644 --- a/OpenCL/m14000_a3-pure.cl +++ b/OpenCL/m14000_a3-pure.cl @@ -1730,7 +1730,7 @@ DECLSPEC void transpose32c (PRIVATE_AS u32 *data) // transpose bitslice mod : attention race conditions, need different buffers for *in and *out // -KERNEL_FQ void m14000_tm (KERN_ATTR_TM) +KERNEL_FQ KERNEL_FA void m14000_tm (KERN_ATTR_TM) { const u64 gid = get_global_id (0); @@ -1756,7 +1756,7 @@ KERNEL_FQ void m14000_tm (KERN_ATTR_TM) } } -KERNEL_FQ void m14000_mxx (KERN_ATTR_BITSLICE ()) +KERNEL_FQ KERNEL_FA void m14000_mxx (KERN_ATTR_BITSLICE ()) { /** * base @@ -2200,7 +2200,7 @@ KERNEL_FQ void m14000_mxx (KERN_ATTR_BITSLICE ()) } } -KERNEL_FQ void m14000_sxx (KERN_ATTR_BITSLICE ()) +KERNEL_FQ KERNEL_FA void m14000_sxx (KERN_ATTR_BITSLICE ()) { /** * base diff --git a/OpenCL/m14100_a0-pure.cl b/OpenCL/m14100_a0-pure.cl index 5466ce60d..61a533806 100644 --- a/OpenCL/m14100_a0-pure.cl +++ b/OpenCL/m14100_a0-pure.cl @@ -541,7 +541,7 @@ DECLSPEC void _des_crypt_keysetup (u32 c, u32 d, PRIVATE_AS u32 *Kc, PRIVATE_AS } } -KERNEL_FQ void m14100_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m14100_mxx (KERN_ATTR_RULES ()) { /** * base @@ -676,7 +676,7 @@ KERNEL_FQ void m14100_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m14100_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m14100_sxx (KERN_ATTR_RULES ()) { /** * base diff --git a/OpenCL/m14100_a1-pure.cl b/OpenCL/m14100_a1-pure.cl index cd35004a4..6656793ae 100644 --- a/OpenCL/m14100_a1-pure.cl +++ b/OpenCL/m14100_a1-pure.cl @@ -531,7 +531,7 @@ DECLSPEC void _des_crypt_keysetup (u32 c, u32 d, PRIVATE_AS u32 *Kc, PRIVATE_AS } } -KERNEL_FQ void m14100_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m14100_mxx (KERN_ATTR_BASIC ()) { /** * base @@ -714,7 +714,7 @@ KERNEL_FQ void m14100_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m14100_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m14100_sxx (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m14100_a3-pure.cl b/OpenCL/m14100_a3-pure.cl index 2686f2599..2ba0a471a 100644 --- a/OpenCL/m14100_a3-pure.cl +++ b/OpenCL/m14100_a3-pure.cl @@ -730,7 +730,7 @@ DECLSPEC void m14100s (LOCAL_AS u32 (*s_SPtrans)[64], LOCAL_AS u32 (*s_skb)[64], } } -KERNEL_FQ void m14100_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m14100_mxx (KERN_ATTR_BASIC ()) { /** * base @@ -804,7 +804,7 @@ KERNEL_FQ void m14100_mxx (KERN_ATTR_BASIC ()) m14100m (s_SPtrans, s_skb, w, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m14100_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m14100_sxx (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m14400_a0-optimized.cl b/OpenCL/m14400_a0-optimized.cl index c7a9cd640..db149eda5 100644 --- a/OpenCL/m14400_a0-optimized.cl +++ b/OpenCL/m14400_a0-optimized.cl @@ -118,7 +118,7 @@ DECLSPEC void shift_2 (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w w0[0] = 0 | w0[0] << 16; } -KERNEL_FQ void m14400_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m14400_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -381,15 +381,15 @@ KERNEL_FQ void m14400_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m14400_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m14400_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m14400_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m14400_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m14400_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m14400_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -664,10 +664,10 @@ KERNEL_FQ void m14400_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m14400_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m14400_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m14400_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m14400_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m14400_a0-pure.cl b/OpenCL/m14400_a0-pure.cl index 9e4814289..71bea1413 100644 --- a/OpenCL/m14400_a0-pure.cl +++ b/OpenCL/m14400_a0-pure.cl @@ -28,7 +28,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m14400_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m14400_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -275,7 +275,7 @@ KERNEL_FQ void m14400_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m14400_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m14400_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m14400_a1-optimized.cl b/OpenCL/m14400_a1-optimized.cl index b2d7bf2f9..68fbac6ea 100644 --- a/OpenCL/m14400_a1-optimized.cl +++ b/OpenCL/m14400_a1-optimized.cl @@ -118,7 +118,7 @@ DECLSPEC void shift_2 (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w w0[0] = 0 | w0[0] << 16; } -KERNEL_FQ void m14400_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m14400_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -445,15 +445,15 @@ KERNEL_FQ void m14400_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m14400_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m14400_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m14400_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m14400_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m14400_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m14400_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -792,10 +792,10 @@ KERNEL_FQ void m14400_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m14400_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m14400_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m14400_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m14400_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m14400_a1-pure.cl b/OpenCL/m14400_a1-pure.cl index 4410dbf46..f66976563 100644 --- a/OpenCL/m14400_a1-pure.cl +++ b/OpenCL/m14400_a1-pure.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m14400_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m14400_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -271,7 +271,7 @@ KERNEL_FQ void m14400_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m14400_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m14400_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m14400_a3-optimized.cl b/OpenCL/m14400_a3-optimized.cl index 4598a7632..9e4903c1b 100644 --- a/OpenCL/m14400_a3-optimized.cl +++ b/OpenCL/m14400_a3-optimized.cl @@ -622,7 +622,7 @@ DECLSPEC void m14400s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m14400_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m14400_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -692,7 +692,7 @@ KERNEL_FQ void m14400_m04 (KERN_ATTR_BASIC ()) m14400m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m14400_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m14400_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -762,7 +762,7 @@ KERNEL_FQ void m14400_m08 (KERN_ATTR_BASIC ()) m14400m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m14400_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m14400_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -832,7 +832,7 @@ KERNEL_FQ void m14400_m16 (KERN_ATTR_BASIC ()) m14400m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m14400_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m14400_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -902,7 +902,7 @@ KERNEL_FQ void m14400_s04 (KERN_ATTR_BASIC ()) m14400s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m14400_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m14400_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -972,7 +972,7 @@ KERNEL_FQ void m14400_s08 (KERN_ATTR_BASIC ()) m14400s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m14400_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m14400_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m14400_a3-pure.cl b/OpenCL/m14400_a3-pure.cl index 853044e05..05e33c017 100644 --- a/OpenCL/m14400_a3-pure.cl +++ b/OpenCL/m14400_a3-pure.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m14400_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m14400_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -296,7 +296,7 @@ KERNEL_FQ void m14400_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m14400_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m14400_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m14511_a0-pure.cl b/OpenCL/m14511_a0-pure.cl index 201ea1de8..9a93ea18f 100644 --- a/OpenCL/m14511_a0-pure.cl +++ b/OpenCL/m14511_a0-pure.cl @@ -24,7 +24,7 @@ typedef struct cryptoapi } cryptoapi_t; -KERNEL_FQ void m14511_mxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14511_mxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) { /** * modifier @@ -200,7 +200,7 @@ KERNEL_FQ void m14511_mxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) } } -KERNEL_FQ void m14511_sxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14511_sxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) { /** * modifier diff --git a/OpenCL/m14511_a1-pure.cl b/OpenCL/m14511_a1-pure.cl index 869d38946..03afc331e 100644 --- a/OpenCL/m14511_a1-pure.cl +++ b/OpenCL/m14511_a1-pure.cl @@ -22,7 +22,7 @@ typedef struct cryptoapi } cryptoapi_t; -KERNEL_FQ void m14511_mxx (KERN_ATTR_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14511_mxx (KERN_ATTR_ESALT (cryptoapi_t)) { /** * modifier @@ -210,7 +210,7 @@ KERNEL_FQ void m14511_mxx (KERN_ATTR_ESALT (cryptoapi_t)) } } -KERNEL_FQ void m14511_sxx (KERN_ATTR_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14511_sxx (KERN_ATTR_ESALT (cryptoapi_t)) { /** * modifier diff --git a/OpenCL/m14511_a3-pure.cl b/OpenCL/m14511_a3-pure.cl index 507bf490c..a3527efc8 100644 --- a/OpenCL/m14511_a3-pure.cl +++ b/OpenCL/m14511_a3-pure.cl @@ -22,7 +22,7 @@ typedef struct cryptoapi } cryptoapi_t; -KERNEL_FQ void m14511_mxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14511_mxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) { /** * modifier @@ -203,7 +203,7 @@ KERNEL_FQ void m14511_mxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) } } -KERNEL_FQ void m14511_sxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14511_sxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) { /** * modifier diff --git a/OpenCL/m14512_a0-pure.cl b/OpenCL/m14512_a0-pure.cl index 2120c87c2..0c4d80651 100644 --- a/OpenCL/m14512_a0-pure.cl +++ b/OpenCL/m14512_a0-pure.cl @@ -24,7 +24,7 @@ typedef struct cryptoapi } cryptoapi_t; -KERNEL_FQ void m14512_mxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14512_mxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) { /** * modifier @@ -164,7 +164,7 @@ KERNEL_FQ void m14512_mxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) } } -KERNEL_FQ void m14512_sxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14512_sxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) { /** * modifier diff --git a/OpenCL/m14512_a1-pure.cl b/OpenCL/m14512_a1-pure.cl index 597231930..73cf1ee56 100644 --- a/OpenCL/m14512_a1-pure.cl +++ b/OpenCL/m14512_a1-pure.cl @@ -22,7 +22,7 @@ typedef struct cryptoapi } cryptoapi_t; -KERNEL_FQ void m14512_mxx (KERN_ATTR_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14512_mxx (KERN_ATTR_ESALT (cryptoapi_t)) { /** * modifier @@ -174,7 +174,7 @@ KERNEL_FQ void m14512_mxx (KERN_ATTR_ESALT (cryptoapi_t)) } } -KERNEL_FQ void m14512_sxx (KERN_ATTR_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14512_sxx (KERN_ATTR_ESALT (cryptoapi_t)) { /** * modifier diff --git a/OpenCL/m14512_a3-pure.cl b/OpenCL/m14512_a3-pure.cl index ace236029..611689dfd 100644 --- a/OpenCL/m14512_a3-pure.cl +++ b/OpenCL/m14512_a3-pure.cl @@ -22,7 +22,7 @@ typedef struct cryptoapi } cryptoapi_t; -KERNEL_FQ void m14512_mxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14512_mxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) { /** * modifier @@ -167,7 +167,7 @@ KERNEL_FQ void m14512_mxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) } } -KERNEL_FQ void m14512_sxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14512_sxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) { /** * modifier diff --git a/OpenCL/m14513_a0-pure.cl b/OpenCL/m14513_a0-pure.cl index 281921530..4a476d997 100644 --- a/OpenCL/m14513_a0-pure.cl +++ b/OpenCL/m14513_a0-pure.cl @@ -24,7 +24,7 @@ typedef struct cryptoapi } cryptoapi_t; -KERNEL_FQ void m14513_mxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14513_mxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) { /** * modifier @@ -165,7 +165,7 @@ KERNEL_FQ void m14513_mxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) } } -KERNEL_FQ void m14513_sxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14513_sxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) { /** * modifier diff --git a/OpenCL/m14513_a1-pure.cl b/OpenCL/m14513_a1-pure.cl index 71f9f9ade..d96d6c55f 100644 --- a/OpenCL/m14513_a1-pure.cl +++ b/OpenCL/m14513_a1-pure.cl @@ -22,7 +22,7 @@ typedef struct cryptoapi } cryptoapi_t; -KERNEL_FQ void m14513_mxx (KERN_ATTR_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14513_mxx (KERN_ATTR_ESALT (cryptoapi_t)) { /** * modifier @@ -175,7 +175,7 @@ KERNEL_FQ void m14513_mxx (KERN_ATTR_ESALT (cryptoapi_t)) } } -KERNEL_FQ void m14513_sxx (KERN_ATTR_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14513_sxx (KERN_ATTR_ESALT (cryptoapi_t)) { /** * modifier diff --git a/OpenCL/m14513_a3-pure.cl b/OpenCL/m14513_a3-pure.cl index bace1952c..43fbfbd51 100644 --- a/OpenCL/m14513_a3-pure.cl +++ b/OpenCL/m14513_a3-pure.cl @@ -22,7 +22,7 @@ typedef struct cryptoapi } cryptoapi_t; -KERNEL_FQ void m14513_mxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14513_mxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) { /** * modifier @@ -168,7 +168,7 @@ KERNEL_FQ void m14513_mxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) } } -KERNEL_FQ void m14513_sxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14513_sxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) { /** * modifier diff --git a/OpenCL/m14521_a0-pure.cl b/OpenCL/m14521_a0-pure.cl index 44f5ba90d..79621b104 100644 --- a/OpenCL/m14521_a0-pure.cl +++ b/OpenCL/m14521_a0-pure.cl @@ -24,7 +24,7 @@ typedef struct cryptoapi } cryptoapi_t; -KERNEL_FQ void m14521_mxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14521_mxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) { /** * modifier @@ -181,7 +181,7 @@ KERNEL_FQ void m14521_mxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) } } -KERNEL_FQ void m14521_sxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14521_sxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) { /** * modifier diff --git a/OpenCL/m14521_a1-pure.cl b/OpenCL/m14521_a1-pure.cl index f42b48c26..333115adb 100644 --- a/OpenCL/m14521_a1-pure.cl +++ b/OpenCL/m14521_a1-pure.cl @@ -22,7 +22,7 @@ typedef struct cryptoapi } cryptoapi_t; -KERNEL_FQ void m14521_mxx (KERN_ATTR_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14521_mxx (KERN_ATTR_ESALT (cryptoapi_t)) { /** * modifier @@ -177,7 +177,7 @@ KERNEL_FQ void m14521_mxx (KERN_ATTR_ESALT (cryptoapi_t)) } } -KERNEL_FQ void m14521_sxx (KERN_ATTR_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14521_sxx (KERN_ATTR_ESALT (cryptoapi_t)) { /** * modifier diff --git a/OpenCL/m14521_a3-pure.cl b/OpenCL/m14521_a3-pure.cl index 82dfecbf6..fffff55c1 100644 --- a/OpenCL/m14521_a3-pure.cl +++ b/OpenCL/m14521_a3-pure.cl @@ -22,7 +22,7 @@ typedef struct cryptoapi } cryptoapi_t; -KERNEL_FQ void m14521_mxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14521_mxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) { /** * modifier @@ -190,7 +190,7 @@ KERNEL_FQ void m14521_mxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) } } -KERNEL_FQ void m14521_sxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14521_sxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) { /** * modifier diff --git a/OpenCL/m14522_a0-pure.cl b/OpenCL/m14522_a0-pure.cl index a39b10993..7cd0bb2d3 100644 --- a/OpenCL/m14522_a0-pure.cl +++ b/OpenCL/m14522_a0-pure.cl @@ -24,7 +24,7 @@ typedef struct cryptoapi } cryptoapi_t; -KERNEL_FQ void m14522_mxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14522_mxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) { /** * modifier @@ -145,7 +145,7 @@ KERNEL_FQ void m14522_mxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) } } -KERNEL_FQ void m14522_sxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14522_sxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) { /** * modifier diff --git a/OpenCL/m14522_a1-pure.cl b/OpenCL/m14522_a1-pure.cl index 44d50f9b5..aa5303193 100644 --- a/OpenCL/m14522_a1-pure.cl +++ b/OpenCL/m14522_a1-pure.cl @@ -22,7 +22,7 @@ typedef struct cryptoapi } cryptoapi_t; -KERNEL_FQ void m14522_mxx (KERN_ATTR_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14522_mxx (KERN_ATTR_ESALT (cryptoapi_t)) { /** * modifier @@ -141,7 +141,7 @@ KERNEL_FQ void m14522_mxx (KERN_ATTR_ESALT (cryptoapi_t)) } } -KERNEL_FQ void m14522_sxx (KERN_ATTR_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14522_sxx (KERN_ATTR_ESALT (cryptoapi_t)) { /** * modifier diff --git a/OpenCL/m14522_a3-pure.cl b/OpenCL/m14522_a3-pure.cl index 633a71e1a..efc78c2cc 100644 --- a/OpenCL/m14522_a3-pure.cl +++ b/OpenCL/m14522_a3-pure.cl @@ -22,7 +22,7 @@ typedef struct cryptoapi } cryptoapi_t; -KERNEL_FQ void m14522_mxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14522_mxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) { /** * modifier @@ -154,7 +154,7 @@ KERNEL_FQ void m14522_mxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) } } -KERNEL_FQ void m14522_sxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14522_sxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) { /** * modifier diff --git a/OpenCL/m14523_a0-pure.cl b/OpenCL/m14523_a0-pure.cl index a9ff6de68..78730c2b4 100644 --- a/OpenCL/m14523_a0-pure.cl +++ b/OpenCL/m14523_a0-pure.cl @@ -24,7 +24,7 @@ typedef struct cryptoapi } cryptoapi_t; -KERNEL_FQ void m14523_mxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14523_mxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) { /** * modifier @@ -146,7 +146,7 @@ KERNEL_FQ void m14523_mxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) } } -KERNEL_FQ void m14523_sxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14523_sxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) { /** * modifier diff --git a/OpenCL/m14523_a1-pure.cl b/OpenCL/m14523_a1-pure.cl index 557c6d9b7..4b12f749e 100644 --- a/OpenCL/m14523_a1-pure.cl +++ b/OpenCL/m14523_a1-pure.cl @@ -22,7 +22,7 @@ typedef struct cryptoapi } cryptoapi_t; -KERNEL_FQ void m14523_mxx (KERN_ATTR_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14523_mxx (KERN_ATTR_ESALT (cryptoapi_t)) { /** * modifier @@ -142,7 +142,7 @@ KERNEL_FQ void m14523_mxx (KERN_ATTR_ESALT (cryptoapi_t)) } } -KERNEL_FQ void m14523_sxx (KERN_ATTR_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14523_sxx (KERN_ATTR_ESALT (cryptoapi_t)) { /** * modifier diff --git a/OpenCL/m14523_a3-pure.cl b/OpenCL/m14523_a3-pure.cl index b3086a558..375e738b2 100644 --- a/OpenCL/m14523_a3-pure.cl +++ b/OpenCL/m14523_a3-pure.cl @@ -22,7 +22,7 @@ typedef struct cryptoapi } cryptoapi_t; -KERNEL_FQ void m14523_mxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14523_mxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) { /** * modifier @@ -155,7 +155,7 @@ KERNEL_FQ void m14523_mxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) } } -KERNEL_FQ void m14523_sxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14523_sxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) { /** * modifier diff --git a/OpenCL/m14531_a0-pure.cl b/OpenCL/m14531_a0-pure.cl index 9ebed2d37..555912185 100644 --- a/OpenCL/m14531_a0-pure.cl +++ b/OpenCL/m14531_a0-pure.cl @@ -24,7 +24,7 @@ typedef struct cryptoapi } cryptoapi_t; -KERNEL_FQ void m14531_mxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14531_mxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) { /** * modifier @@ -181,7 +181,7 @@ KERNEL_FQ void m14531_mxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) } } -KERNEL_FQ void m14531_sxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14531_sxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) { /** * modifier diff --git a/OpenCL/m14531_a1-pure.cl b/OpenCL/m14531_a1-pure.cl index e9c1e686b..d4175e226 100644 --- a/OpenCL/m14531_a1-pure.cl +++ b/OpenCL/m14531_a1-pure.cl @@ -22,7 +22,7 @@ typedef struct cryptoapi } cryptoapi_t; -KERNEL_FQ void m14531_mxx (KERN_ATTR_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14531_mxx (KERN_ATTR_ESALT (cryptoapi_t)) { /** * modifier @@ -177,7 +177,7 @@ KERNEL_FQ void m14531_mxx (KERN_ATTR_ESALT (cryptoapi_t)) } } -KERNEL_FQ void m14531_sxx (KERN_ATTR_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14531_sxx (KERN_ATTR_ESALT (cryptoapi_t)) { /** * modifier diff --git a/OpenCL/m14531_a3-pure.cl b/OpenCL/m14531_a3-pure.cl index ddeb1210b..3ae49a255 100644 --- a/OpenCL/m14531_a3-pure.cl +++ b/OpenCL/m14531_a3-pure.cl @@ -22,7 +22,7 @@ typedef struct cryptoapi } cryptoapi_t; -KERNEL_FQ void m14531_mxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14531_mxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) { /** * modifier @@ -190,7 +190,7 @@ KERNEL_FQ void m14531_mxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) } } -KERNEL_FQ void m14531_sxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14531_sxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) { /** * modifier diff --git a/OpenCL/m14532_a0-pure.cl b/OpenCL/m14532_a0-pure.cl index 4ff993369..5235a3f26 100644 --- a/OpenCL/m14532_a0-pure.cl +++ b/OpenCL/m14532_a0-pure.cl @@ -24,7 +24,7 @@ typedef struct cryptoapi } cryptoapi_t; -KERNEL_FQ void m14532_mxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14532_mxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) { /** * modifier @@ -145,7 +145,7 @@ KERNEL_FQ void m14532_mxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) } } -KERNEL_FQ void m14532_sxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14532_sxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) { /** * modifier diff --git a/OpenCL/m14532_a1-pure.cl b/OpenCL/m14532_a1-pure.cl index 46ea468d8..6e0efe3a0 100644 --- a/OpenCL/m14532_a1-pure.cl +++ b/OpenCL/m14532_a1-pure.cl @@ -22,7 +22,7 @@ typedef struct cryptoapi } cryptoapi_t; -KERNEL_FQ void m14532_mxx (KERN_ATTR_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14532_mxx (KERN_ATTR_ESALT (cryptoapi_t)) { /** * modifier @@ -141,7 +141,7 @@ KERNEL_FQ void m14532_mxx (KERN_ATTR_ESALT (cryptoapi_t)) } } -KERNEL_FQ void m14532_sxx (KERN_ATTR_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14532_sxx (KERN_ATTR_ESALT (cryptoapi_t)) { /** * modifier diff --git a/OpenCL/m14532_a3-pure.cl b/OpenCL/m14532_a3-pure.cl index d2115cb96..593a5c299 100644 --- a/OpenCL/m14532_a3-pure.cl +++ b/OpenCL/m14532_a3-pure.cl @@ -22,7 +22,7 @@ typedef struct cryptoapi } cryptoapi_t; -KERNEL_FQ void m14532_mxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14532_mxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) { /** * modifier @@ -154,7 +154,7 @@ KERNEL_FQ void m14532_mxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) } } -KERNEL_FQ void m14532_sxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14532_sxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) { /** * modifier diff --git a/OpenCL/m14533_a0-pure.cl b/OpenCL/m14533_a0-pure.cl index c22abe168..b4fe23cd1 100644 --- a/OpenCL/m14533_a0-pure.cl +++ b/OpenCL/m14533_a0-pure.cl @@ -24,7 +24,7 @@ typedef struct cryptoapi } cryptoapi_t; -KERNEL_FQ void m14533_mxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14533_mxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) { /** * modifier @@ -146,7 +146,7 @@ KERNEL_FQ void m14533_mxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) } } -KERNEL_FQ void m14533_sxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14533_sxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) { /** * modifier diff --git a/OpenCL/m14533_a1-pure.cl b/OpenCL/m14533_a1-pure.cl index 2ce1e6c37..e3c0d9032 100644 --- a/OpenCL/m14533_a1-pure.cl +++ b/OpenCL/m14533_a1-pure.cl @@ -22,7 +22,7 @@ typedef struct cryptoapi } cryptoapi_t; -KERNEL_FQ void m14533_mxx (KERN_ATTR_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14533_mxx (KERN_ATTR_ESALT (cryptoapi_t)) { /** * modifier @@ -142,7 +142,7 @@ KERNEL_FQ void m14533_mxx (KERN_ATTR_ESALT (cryptoapi_t)) } } -KERNEL_FQ void m14533_sxx (KERN_ATTR_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14533_sxx (KERN_ATTR_ESALT (cryptoapi_t)) { /** * modifier diff --git a/OpenCL/m14533_a3-pure.cl b/OpenCL/m14533_a3-pure.cl index 294e8fb74..df7fbe92c 100644 --- a/OpenCL/m14533_a3-pure.cl +++ b/OpenCL/m14533_a3-pure.cl @@ -22,7 +22,7 @@ typedef struct cryptoapi } cryptoapi_t; -KERNEL_FQ void m14533_mxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14533_mxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) { /** * modifier @@ -155,7 +155,7 @@ KERNEL_FQ void m14533_mxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) } } -KERNEL_FQ void m14533_sxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14533_sxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) { /** * modifier diff --git a/OpenCL/m14541_a0-pure.cl b/OpenCL/m14541_a0-pure.cl index d04e0e96d..ee7344489 100644 --- a/OpenCL/m14541_a0-pure.cl +++ b/OpenCL/m14541_a0-pure.cl @@ -24,7 +24,7 @@ typedef struct cryptoapi } cryptoapi_t; -KERNEL_FQ void m14541_mxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14541_mxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) { /** * modifier @@ -200,7 +200,7 @@ KERNEL_FQ void m14541_mxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) } } -KERNEL_FQ void m14541_sxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14541_sxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) { /** * modifier diff --git a/OpenCL/m14541_a1-pure.cl b/OpenCL/m14541_a1-pure.cl index 822edab4b..27bcf929f 100644 --- a/OpenCL/m14541_a1-pure.cl +++ b/OpenCL/m14541_a1-pure.cl @@ -22,7 +22,7 @@ typedef struct cryptoapi } cryptoapi_t; -KERNEL_FQ void m14541_mxx (KERN_ATTR_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14541_mxx (KERN_ATTR_ESALT (cryptoapi_t)) { /** * modifier @@ -210,7 +210,7 @@ KERNEL_FQ void m14541_mxx (KERN_ATTR_ESALT (cryptoapi_t)) } } -KERNEL_FQ void m14541_sxx (KERN_ATTR_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14541_sxx (KERN_ATTR_ESALT (cryptoapi_t)) { /** * modifier diff --git a/OpenCL/m14541_a3-pure.cl b/OpenCL/m14541_a3-pure.cl index 826768b8e..cf51c0ad3 100644 --- a/OpenCL/m14541_a3-pure.cl +++ b/OpenCL/m14541_a3-pure.cl @@ -22,7 +22,7 @@ typedef struct cryptoapi } cryptoapi_t; -KERNEL_FQ void m14541_mxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14541_mxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) { /** * modifier @@ -203,7 +203,7 @@ KERNEL_FQ void m14541_mxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) } } -KERNEL_FQ void m14541_sxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14541_sxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) { /** * modifier diff --git a/OpenCL/m14542_a0-pure.cl b/OpenCL/m14542_a0-pure.cl index 9231a7d81..82b05a70a 100644 --- a/OpenCL/m14542_a0-pure.cl +++ b/OpenCL/m14542_a0-pure.cl @@ -24,7 +24,7 @@ typedef struct cryptoapi } cryptoapi_t; -KERNEL_FQ void m14542_mxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14542_mxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) { /** * modifier @@ -164,7 +164,7 @@ KERNEL_FQ void m14542_mxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) } } -KERNEL_FQ void m14542_sxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14542_sxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) { /** * modifier diff --git a/OpenCL/m14542_a1-pure.cl b/OpenCL/m14542_a1-pure.cl index d25a00920..a75335c00 100644 --- a/OpenCL/m14542_a1-pure.cl +++ b/OpenCL/m14542_a1-pure.cl @@ -22,7 +22,7 @@ typedef struct cryptoapi } cryptoapi_t; -KERNEL_FQ void m14542_mxx (KERN_ATTR_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14542_mxx (KERN_ATTR_ESALT (cryptoapi_t)) { /** * modifier @@ -174,7 +174,7 @@ KERNEL_FQ void m14542_mxx (KERN_ATTR_ESALT (cryptoapi_t)) } } -KERNEL_FQ void m14542_sxx (KERN_ATTR_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14542_sxx (KERN_ATTR_ESALT (cryptoapi_t)) { /** * modifier diff --git a/OpenCL/m14542_a3-pure.cl b/OpenCL/m14542_a3-pure.cl index 2e167c5e1..4308ef6f8 100644 --- a/OpenCL/m14542_a3-pure.cl +++ b/OpenCL/m14542_a3-pure.cl @@ -22,7 +22,7 @@ typedef struct cryptoapi } cryptoapi_t; -KERNEL_FQ void m14542_mxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14542_mxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) { /** * modifier @@ -167,7 +167,7 @@ KERNEL_FQ void m14542_mxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) } } -KERNEL_FQ void m14542_sxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14542_sxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) { /** * modifier diff --git a/OpenCL/m14543_a0-pure.cl b/OpenCL/m14543_a0-pure.cl index 5fcd0c681..10713ca4b 100644 --- a/OpenCL/m14543_a0-pure.cl +++ b/OpenCL/m14543_a0-pure.cl @@ -24,7 +24,7 @@ typedef struct cryptoapi } cryptoapi_t; -KERNEL_FQ void m14543_mxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14543_mxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) { /** * modifier @@ -165,7 +165,7 @@ KERNEL_FQ void m14543_mxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) } } -KERNEL_FQ void m14543_sxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14543_sxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) { /** * modifier diff --git a/OpenCL/m14543_a1-pure.cl b/OpenCL/m14543_a1-pure.cl index aea17884c..e969805ce 100644 --- a/OpenCL/m14543_a1-pure.cl +++ b/OpenCL/m14543_a1-pure.cl @@ -22,7 +22,7 @@ typedef struct cryptoapi } cryptoapi_t; -KERNEL_FQ void m14543_mxx (KERN_ATTR_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14543_mxx (KERN_ATTR_ESALT (cryptoapi_t)) { /** * modifier @@ -175,7 +175,7 @@ KERNEL_FQ void m14543_mxx (KERN_ATTR_ESALT (cryptoapi_t)) } } -KERNEL_FQ void m14543_sxx (KERN_ATTR_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14543_sxx (KERN_ATTR_ESALT (cryptoapi_t)) { /** * modifier diff --git a/OpenCL/m14543_a3-pure.cl b/OpenCL/m14543_a3-pure.cl index b40223c38..ba9694bf8 100644 --- a/OpenCL/m14543_a3-pure.cl +++ b/OpenCL/m14543_a3-pure.cl @@ -22,7 +22,7 @@ typedef struct cryptoapi } cryptoapi_t; -KERNEL_FQ void m14543_mxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14543_mxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) { /** * modifier @@ -168,7 +168,7 @@ KERNEL_FQ void m14543_mxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) } } -KERNEL_FQ void m14543_sxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14543_sxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) { /** * modifier diff --git a/OpenCL/m14551_a0-pure.cl b/OpenCL/m14551_a0-pure.cl index e8a8ee9c3..aa8920792 100644 --- a/OpenCL/m14551_a0-pure.cl +++ b/OpenCL/m14551_a0-pure.cl @@ -24,7 +24,7 @@ typedef struct cryptoapi } cryptoapi_t; -KERNEL_FQ void m14551_mxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14551_mxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) { /** * modifier @@ -208,7 +208,7 @@ KERNEL_FQ void m14551_mxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) } } -KERNEL_FQ void m14551_sxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14551_sxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) { /** * modifier diff --git a/OpenCL/m14551_a1-pure.cl b/OpenCL/m14551_a1-pure.cl index 402a40494..e2e48c52f 100644 --- a/OpenCL/m14551_a1-pure.cl +++ b/OpenCL/m14551_a1-pure.cl @@ -22,7 +22,7 @@ typedef struct cryptoapi } cryptoapi_t; -KERNEL_FQ void m14551_mxx (KERN_ATTR_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14551_mxx (KERN_ATTR_ESALT (cryptoapi_t)) { /** * modifier @@ -204,7 +204,7 @@ KERNEL_FQ void m14551_mxx (KERN_ATTR_ESALT (cryptoapi_t)) } } -KERNEL_FQ void m14551_sxx (KERN_ATTR_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14551_sxx (KERN_ATTR_ESALT (cryptoapi_t)) { /** * modifier diff --git a/OpenCL/m14551_a3-pure.cl b/OpenCL/m14551_a3-pure.cl index 7069505e8..8fc4534ae 100644 --- a/OpenCL/m14551_a3-pure.cl +++ b/OpenCL/m14551_a3-pure.cl @@ -22,7 +22,7 @@ typedef struct cryptoapi } cryptoapi_t; -KERNEL_FQ void m14551_mxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14551_mxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) { /** * modifier @@ -217,7 +217,7 @@ KERNEL_FQ void m14551_mxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) } } -KERNEL_FQ void m14551_sxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14551_sxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) { /** * modifier diff --git a/OpenCL/m14552_a0-pure.cl b/OpenCL/m14552_a0-pure.cl index 70ea01567..c77be4763 100644 --- a/OpenCL/m14552_a0-pure.cl +++ b/OpenCL/m14552_a0-pure.cl @@ -24,7 +24,7 @@ typedef struct cryptoapi } cryptoapi_t; -KERNEL_FQ void m14552_mxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14552_mxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) { /** * modifier @@ -190,7 +190,7 @@ KERNEL_FQ void m14552_mxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) } } -KERNEL_FQ void m14552_sxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14552_sxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) { /** * modifier diff --git a/OpenCL/m14552_a1-pure.cl b/OpenCL/m14552_a1-pure.cl index dd7ce6f30..848a69d9c 100644 --- a/OpenCL/m14552_a1-pure.cl +++ b/OpenCL/m14552_a1-pure.cl @@ -22,7 +22,7 @@ typedef struct cryptoapi } cryptoapi_t; -KERNEL_FQ void m14552_mxx (KERN_ATTR_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14552_mxx (KERN_ATTR_ESALT (cryptoapi_t)) { /** * modifier @@ -186,7 +186,7 @@ KERNEL_FQ void m14552_mxx (KERN_ATTR_ESALT (cryptoapi_t)) } } -KERNEL_FQ void m14552_sxx (KERN_ATTR_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14552_sxx (KERN_ATTR_ESALT (cryptoapi_t)) { /** * modifier diff --git a/OpenCL/m14552_a3-pure.cl b/OpenCL/m14552_a3-pure.cl index b42e8d2f3..ec7993a89 100644 --- a/OpenCL/m14552_a3-pure.cl +++ b/OpenCL/m14552_a3-pure.cl @@ -22,7 +22,7 @@ typedef struct cryptoapi } cryptoapi_t; -KERNEL_FQ void m14552_mxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14552_mxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) { /** * modifier @@ -199,7 +199,7 @@ KERNEL_FQ void m14552_mxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) } } -KERNEL_FQ void m14552_sxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14552_sxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) { /** * modifier diff --git a/OpenCL/m14553_a0-pure.cl b/OpenCL/m14553_a0-pure.cl index 0ee833a6d..c2658b110 100644 --- a/OpenCL/m14553_a0-pure.cl +++ b/OpenCL/m14553_a0-pure.cl @@ -24,7 +24,7 @@ typedef struct cryptoapi } cryptoapi_t; -KERNEL_FQ void m14553_mxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14553_mxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) { /** * modifier @@ -191,7 +191,7 @@ KERNEL_FQ void m14553_mxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) } } -KERNEL_FQ void m14553_sxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14553_sxx (KERN_ATTR_RULES_ESALT (cryptoapi_t)) { /** * modifier diff --git a/OpenCL/m14553_a1-pure.cl b/OpenCL/m14553_a1-pure.cl index 0aca6847a..bd000b4c3 100644 --- a/OpenCL/m14553_a1-pure.cl +++ b/OpenCL/m14553_a1-pure.cl @@ -22,7 +22,7 @@ typedef struct cryptoapi } cryptoapi_t; -KERNEL_FQ void m14553_mxx (KERN_ATTR_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14553_mxx (KERN_ATTR_ESALT (cryptoapi_t)) { /** * modifier @@ -187,7 +187,7 @@ KERNEL_FQ void m14553_mxx (KERN_ATTR_ESALT (cryptoapi_t)) } } -KERNEL_FQ void m14553_sxx (KERN_ATTR_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14553_sxx (KERN_ATTR_ESALT (cryptoapi_t)) { /** * modifier diff --git a/OpenCL/m14553_a3-pure.cl b/OpenCL/m14553_a3-pure.cl index 62048e1ed..e8348f472 100644 --- a/OpenCL/m14553_a3-pure.cl +++ b/OpenCL/m14553_a3-pure.cl @@ -22,7 +22,7 @@ typedef struct cryptoapi } cryptoapi_t; -KERNEL_FQ void m14553_mxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14553_mxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) { /** * modifier @@ -200,7 +200,7 @@ KERNEL_FQ void m14553_mxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) } } -KERNEL_FQ void m14553_sxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) +KERNEL_FQ KERNEL_FA void m14553_sxx (KERN_ATTR_VECTOR_ESALT (cryptoapi_t)) { /** * modifier diff --git a/OpenCL/m14611-pure.cl b/OpenCL/m14611-pure.cl index 7d9c6742a..bdef8c740 100644 --- a/OpenCL/m14611-pure.cl +++ b/OpenCL/m14611-pure.cl @@ -136,7 +136,7 @@ DECLSPEC void hmac_sha1_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE sha1_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m14611_init (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) +KERNEL_FQ KERNEL_FA void m14611_init (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) { /** * base @@ -210,7 +210,7 @@ KERNEL_FQ void m14611_init (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) } } -KERNEL_FQ void m14611_loop (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) +KERNEL_FQ KERNEL_FA void m14611_loop (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) { const u64 gid = get_global_id (0); @@ -297,7 +297,7 @@ KERNEL_FQ void m14611_loop (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) } } -KERNEL_FQ void m14611_comp (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) +KERNEL_FQ KERNEL_FA void m14611_comp (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m14612-pure.cl b/OpenCL/m14612-pure.cl index d00cca68f..0ab2ac8f0 100644 --- a/OpenCL/m14612-pure.cl +++ b/OpenCL/m14612-pure.cl @@ -136,7 +136,7 @@ DECLSPEC void hmac_sha1_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE sha1_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m14612_init (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) +KERNEL_FQ KERNEL_FA void m14612_init (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) { /** * base @@ -210,7 +210,7 @@ KERNEL_FQ void m14612_init (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) } } -KERNEL_FQ void m14612_loop (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) +KERNEL_FQ KERNEL_FA void m14612_loop (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) { const u64 gid = get_global_id (0); @@ -297,7 +297,7 @@ KERNEL_FQ void m14612_loop (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) } } -KERNEL_FQ void m14612_comp (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) +KERNEL_FQ KERNEL_FA void m14612_comp (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) { const u64 gid = get_global_id (0); diff --git a/OpenCL/m14613-pure.cl b/OpenCL/m14613-pure.cl index d1788d9bc..c234a239f 100644 --- a/OpenCL/m14613-pure.cl +++ b/OpenCL/m14613-pure.cl @@ -136,7 +136,7 @@ DECLSPEC void hmac_sha1_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE sha1_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m14613_init (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) +KERNEL_FQ KERNEL_FA void m14613_init (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) { /** * base @@ -210,7 +210,7 @@ KERNEL_FQ void m14613_init (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) } } -KERNEL_FQ void m14613_loop (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) +KERNEL_FQ KERNEL_FA void m14613_loop (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) { const u64 gid = get_global_id (0); @@ -297,7 +297,7 @@ KERNEL_FQ void m14613_loop (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) } } -KERNEL_FQ void m14613_comp (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) +KERNEL_FQ KERNEL_FA void m14613_comp (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) { const u64 gid = get_global_id (0); diff --git a/OpenCL/m14621-pure.cl b/OpenCL/m14621-pure.cl index 6789f606c..1eefdbf8b 100644 --- a/OpenCL/m14621-pure.cl +++ b/OpenCL/m14621-pure.cl @@ -142,7 +142,7 @@ DECLSPEC void hmac_sha256_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVA sha256_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m14621_init (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) +KERNEL_FQ KERNEL_FA void m14621_init (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) { /** * base @@ -228,7 +228,7 @@ KERNEL_FQ void m14621_init (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) } } -KERNEL_FQ void m14621_loop (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) +KERNEL_FQ KERNEL_FA void m14621_loop (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) { const u64 gid = get_global_id (0); @@ -336,7 +336,7 @@ KERNEL_FQ void m14621_loop (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) } } -KERNEL_FQ void m14621_comp (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) +KERNEL_FQ KERNEL_FA void m14621_comp (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m14622-pure.cl b/OpenCL/m14622-pure.cl index 0921fbde4..105195198 100644 --- a/OpenCL/m14622-pure.cl +++ b/OpenCL/m14622-pure.cl @@ -142,7 +142,7 @@ DECLSPEC void hmac_sha256_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVA sha256_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m14622_init (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) +KERNEL_FQ KERNEL_FA void m14622_init (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) { /** * base @@ -228,7 +228,7 @@ KERNEL_FQ void m14622_init (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) } } -KERNEL_FQ void m14622_loop (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) +KERNEL_FQ KERNEL_FA void m14622_loop (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) { const u64 gid = get_global_id (0); @@ -336,7 +336,7 @@ KERNEL_FQ void m14622_loop (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) } } -KERNEL_FQ void m14622_comp (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) +KERNEL_FQ KERNEL_FA void m14622_comp (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) { const u64 gid = get_global_id (0); diff --git a/OpenCL/m14623-pure.cl b/OpenCL/m14623-pure.cl index 98884e25e..0912d706f 100644 --- a/OpenCL/m14623-pure.cl +++ b/OpenCL/m14623-pure.cl @@ -142,7 +142,7 @@ DECLSPEC void hmac_sha256_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVA sha256_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m14623_init (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) +KERNEL_FQ KERNEL_FA void m14623_init (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) { /** * base @@ -228,7 +228,7 @@ KERNEL_FQ void m14623_init (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) } } -KERNEL_FQ void m14623_loop (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) +KERNEL_FQ KERNEL_FA void m14623_loop (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) { const u64 gid = get_global_id (0); @@ -336,7 +336,7 @@ KERNEL_FQ void m14623_loop (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) } } -KERNEL_FQ void m14623_comp (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) +KERNEL_FQ KERNEL_FA void m14623_comp (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) { const u64 gid = get_global_id (0); diff --git a/OpenCL/m14631-pure.cl b/OpenCL/m14631-pure.cl index f42f215c4..bd282089f 100644 --- a/OpenCL/m14631-pure.cl +++ b/OpenCL/m14631-pure.cl @@ -158,7 +158,7 @@ DECLSPEC void hmac_sha512_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVA sha512_transform_vector (w0, w1, w2, w3, w4, w5, w6, w7, digest); } -KERNEL_FQ void m14631_init (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) +KERNEL_FQ KERNEL_FA void m14631_init (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) { /** * base @@ -264,7 +264,7 @@ KERNEL_FQ void m14631_init (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) } } -KERNEL_FQ void m14631_loop (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) +KERNEL_FQ KERNEL_FA void m14631_loop (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) { const u64 gid = get_global_id (0); @@ -392,7 +392,7 @@ KERNEL_FQ void m14631_loop (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) } } -KERNEL_FQ void m14631_comp (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) +KERNEL_FQ KERNEL_FA void m14631_comp (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m14632-pure.cl b/OpenCL/m14632-pure.cl index 50ba38a64..e2a3a7e11 100644 --- a/OpenCL/m14632-pure.cl +++ b/OpenCL/m14632-pure.cl @@ -158,7 +158,7 @@ DECLSPEC void hmac_sha512_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVA sha512_transform_vector (w0, w1, w2, w3, w4, w5, w6, w7, digest); } -KERNEL_FQ void m14632_init (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) +KERNEL_FQ KERNEL_FA void m14632_init (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) { /** * base @@ -264,7 +264,7 @@ KERNEL_FQ void m14632_init (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) } } -KERNEL_FQ void m14632_loop (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) +KERNEL_FQ KERNEL_FA void m14632_loop (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) { const u64 gid = get_global_id (0); @@ -392,7 +392,7 @@ KERNEL_FQ void m14632_loop (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) } } -KERNEL_FQ void m14632_comp (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) +KERNEL_FQ KERNEL_FA void m14632_comp (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) { const u64 gid = get_global_id (0); diff --git a/OpenCL/m14633-pure.cl b/OpenCL/m14633-pure.cl index 1e008e8dd..beb5f8657 100644 --- a/OpenCL/m14633-pure.cl +++ b/OpenCL/m14633-pure.cl @@ -158,7 +158,7 @@ DECLSPEC void hmac_sha512_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVA sha512_transform_vector (w0, w1, w2, w3, w4, w5, w6, w7, digest); } -KERNEL_FQ void m14633_init (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) +KERNEL_FQ KERNEL_FA void m14633_init (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) { /** * base @@ -264,7 +264,7 @@ KERNEL_FQ void m14633_init (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) } } -KERNEL_FQ void m14633_loop (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) +KERNEL_FQ KERNEL_FA void m14633_loop (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) { const u64 gid = get_global_id (0); @@ -392,7 +392,7 @@ KERNEL_FQ void m14633_loop (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) } } -KERNEL_FQ void m14633_comp (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) +KERNEL_FQ KERNEL_FA void m14633_comp (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) { const u64 gid = get_global_id (0); diff --git a/OpenCL/m14641-pure.cl b/OpenCL/m14641-pure.cl index 2c32013c6..ca75aa00d 100644 --- a/OpenCL/m14641-pure.cl +++ b/OpenCL/m14641-pure.cl @@ -136,7 +136,7 @@ DECLSPEC void hmac_ripemd160_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PR ripemd160_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m14641_init (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) +KERNEL_FQ KERNEL_FA void m14641_init (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) { /** * base @@ -210,7 +210,7 @@ KERNEL_FQ void m14641_init (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) } } -KERNEL_FQ void m14641_loop (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) +KERNEL_FQ KERNEL_FA void m14641_loop (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) { const u64 gid = get_global_id (0); @@ -297,7 +297,7 @@ KERNEL_FQ void m14641_loop (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) } } -KERNEL_FQ void m14641_comp (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) +KERNEL_FQ KERNEL_FA void m14641_comp (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m14642-pure.cl b/OpenCL/m14642-pure.cl index e8ab9919d..08cfaff70 100644 --- a/OpenCL/m14642-pure.cl +++ b/OpenCL/m14642-pure.cl @@ -136,7 +136,7 @@ DECLSPEC void hmac_ripemd160_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PR ripemd160_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m14642_init (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) +KERNEL_FQ KERNEL_FA void m14642_init (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) { /** * base @@ -210,7 +210,7 @@ KERNEL_FQ void m14642_init (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) } } -KERNEL_FQ void m14642_loop (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) +KERNEL_FQ KERNEL_FA void m14642_loop (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) { const u64 gid = get_global_id (0); @@ -297,7 +297,7 @@ KERNEL_FQ void m14642_loop (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) } } -KERNEL_FQ void m14642_comp (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) +KERNEL_FQ KERNEL_FA void m14642_comp (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) { const u64 gid = get_global_id (0); diff --git a/OpenCL/m14643-pure.cl b/OpenCL/m14643-pure.cl index cc48d85e0..d5ace42bb 100644 --- a/OpenCL/m14643-pure.cl +++ b/OpenCL/m14643-pure.cl @@ -136,7 +136,7 @@ DECLSPEC void hmac_ripemd160_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PR ripemd160_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m14643_init (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) +KERNEL_FQ KERNEL_FA void m14643_init (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) { /** * base @@ -210,7 +210,7 @@ KERNEL_FQ void m14643_init (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) } } -KERNEL_FQ void m14643_loop (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) +KERNEL_FQ KERNEL_FA void m14643_loop (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) { const u64 gid = get_global_id (0); @@ -297,7 +297,7 @@ KERNEL_FQ void m14643_loop (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) } } -KERNEL_FQ void m14643_comp (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) +KERNEL_FQ KERNEL_FA void m14643_comp (KERN_ATTR_TMPS_ESALT (luks_tmp_t, luks_t)) { const u64 gid = get_global_id (0); diff --git a/OpenCL/m14700-pure.cl b/OpenCL/m14700-pure.cl index fc5acfd8d..a795e8e22 100644 --- a/OpenCL/m14700-pure.cl +++ b/OpenCL/m14700-pure.cl @@ -71,7 +71,7 @@ DECLSPEC void hmac_sha1_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE sha1_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m14700_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha1_tmp_t, itunes_backup_t)) +KERNEL_FQ KERNEL_FA void m14700_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha1_tmp_t, itunes_backup_t)) { /** * base @@ -143,7 +143,7 @@ KERNEL_FQ void m14700_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha1_tmp_t, itunes_back } } -KERNEL_FQ void m14700_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha1_tmp_t, itunes_backup_t)) +KERNEL_FQ KERNEL_FA void m14700_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha1_tmp_t, itunes_backup_t)) { const u64 gid = get_global_id (0); @@ -228,7 +228,7 @@ KERNEL_FQ void m14700_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha1_tmp_t, itunes_back } } -KERNEL_FQ void m14700_comp (KERN_ATTR_TMPS_ESALT (pbkdf2_sha1_tmp_t, itunes_backup_t)) +KERNEL_FQ KERNEL_FA void m14700_comp (KERN_ATTR_TMPS_ESALT (pbkdf2_sha1_tmp_t, itunes_backup_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m14800-pure.cl b/OpenCL/m14800-pure.cl index 6d7322e92..e7cac034d 100644 --- a/OpenCL/m14800-pure.cl +++ b/OpenCL/m14800-pure.cl @@ -111,7 +111,7 @@ DECLSPEC void hmac_sha256_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVA sha256_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m14800_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, itunes_backup_t)) +KERNEL_FQ KERNEL_FA void m14800_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, itunes_backup_t)) { /** * base @@ -212,7 +212,7 @@ KERNEL_FQ void m14800_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, itunes_ba } } -KERNEL_FQ void m14800_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, itunes_backup_t)) +KERNEL_FQ KERNEL_FA void m14800_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, itunes_backup_t)) { const u64 gid = get_global_id (0); @@ -318,7 +318,7 @@ KERNEL_FQ void m14800_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, itunes_ba } } -KERNEL_FQ void m14800_init2 (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, itunes_backup_t)) +KERNEL_FQ KERNEL_FA void m14800_init2 (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, itunes_backup_t)) { /** * base @@ -407,7 +407,7 @@ KERNEL_FQ void m14800_init2 (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, itunes_b } } -KERNEL_FQ void m14800_loop2 (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, itunes_backup_t)) +KERNEL_FQ KERNEL_FA void m14800_loop2 (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, itunes_backup_t)) { const u64 gid = get_global_id (0); @@ -492,7 +492,7 @@ KERNEL_FQ void m14800_loop2 (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, itunes_b } } -KERNEL_FQ void m14800_comp (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, itunes_backup_t)) +KERNEL_FQ KERNEL_FA void m14800_comp (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, itunes_backup_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m14900_a0-optimized.cl b/OpenCL/m14900_a0-optimized.cl index b835dd776..9255b0940 100644 --- a/OpenCL/m14900_a0-optimized.cl +++ b/OpenCL/m14900_a0-optimized.cl @@ -105,7 +105,7 @@ DECLSPEC u32 skip32 (LOCAL_AS u8 *s_ftable, const u32 KP, PRIVATE_AS const u32 * return r; } -KERNEL_FQ void m14900_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m14900_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -188,15 +188,15 @@ KERNEL_FQ void m14900_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m14900_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m14900_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m14900_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m14900_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m14900_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m14900_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -291,10 +291,10 @@ KERNEL_FQ void m14900_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m14900_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m14900_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m14900_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m14900_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m14900_a1-optimized.cl b/OpenCL/m14900_a1-optimized.cl index 3b47cb5de..27bfc7568 100644 --- a/OpenCL/m14900_a1-optimized.cl +++ b/OpenCL/m14900_a1-optimized.cl @@ -103,7 +103,7 @@ DECLSPEC u32 skip32 (LOCAL_AS u8 *s_ftable, const u32 KP, PRIVATE_AS const u32 * return r; } -KERNEL_FQ void m14900_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m14900_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -250,15 +250,15 @@ KERNEL_FQ void m14900_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m14900_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m14900_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m14900_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m14900_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m14900_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m14900_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -417,10 +417,10 @@ KERNEL_FQ void m14900_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m14900_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m14900_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m14900_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m14900_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m14900_a3-optimized.cl b/OpenCL/m14900_a3-optimized.cl index b902b40c1..fb79ab712 100644 --- a/OpenCL/m14900_a3-optimized.cl +++ b/OpenCL/m14900_a3-optimized.cl @@ -205,7 +205,7 @@ DECLSPEC void m14900s (LOCAL_AS u8 *s_ftable, PRIVATE_AS u32 *w0, PRIVATE_AS u32 } } -KERNEL_FQ void m14900_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m14900_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -271,15 +271,15 @@ KERNEL_FQ void m14900_m04 (KERN_ATTR_BASIC ()) m14900m (s_ftable, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m14900_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m14900_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m14900_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m14900_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m14900_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m14900_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -345,10 +345,10 @@ KERNEL_FQ void m14900_s04 (KERN_ATTR_BASIC ()) m14900s (s_ftable, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m14900_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m14900_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m14900_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m14900_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m15000_a0-optimized.cl b/OpenCL/m15000_a0-optimized.cl index 404a0418a..154ebbd97 100644 --- a/OpenCL/m15000_a0-optimized.cl +++ b/OpenCL/m15000_a0-optimized.cl @@ -115,7 +115,7 @@ DECLSPEC void sha512_transform_intern (PRIVATE_AS const u32x *w0, PRIVATE_AS con digest[7] = h; } -KERNEL_FQ void m15000_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m15000_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -312,15 +312,15 @@ KERNEL_FQ void m15000_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m15000_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m15000_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m15000_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m15000_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m15000_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m15000_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -529,10 +529,10 @@ KERNEL_FQ void m15000_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m15000_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m15000_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m15000_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m15000_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m15000_a0-pure.cl b/OpenCL/m15000_a0-pure.cl index bfc61e2e6..87b9f02bb 100644 --- a/OpenCL/m15000_a0-pure.cl +++ b/OpenCL/m15000_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha512.cl) #endif -KERNEL_FQ void m15000_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m15000_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -71,7 +71,7 @@ KERNEL_FQ void m15000_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m15000_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m15000_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m15000_a1-optimized.cl b/OpenCL/m15000_a1-optimized.cl index 609a5fa3a..419ee07d3 100644 --- a/OpenCL/m15000_a1-optimized.cl +++ b/OpenCL/m15000_a1-optimized.cl @@ -113,7 +113,7 @@ DECLSPEC void sha512_transform_intern (PRIVATE_AS const u32x *w0, PRIVATE_AS con digest[7] = h; } -KERNEL_FQ void m15000_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m15000_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -370,15 +370,15 @@ KERNEL_FQ void m15000_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m15000_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m15000_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m15000_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m15000_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m15000_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m15000_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -647,10 +647,10 @@ KERNEL_FQ void m15000_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m15000_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m15000_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m15000_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m15000_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m15000_a1-pure.cl b/OpenCL/m15000_a1-pure.cl index 412858add..a4a086e38 100644 --- a/OpenCL/m15000_a1-pure.cl +++ b/OpenCL/m15000_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha512.cl) #endif -KERNEL_FQ void m15000_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m15000_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -67,7 +67,7 @@ KERNEL_FQ void m15000_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m15000_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m15000_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m15000_a3-optimized.cl b/OpenCL/m15000_a3-optimized.cl index 6715ab4d0..274b64265 100644 --- a/OpenCL/m15000_a3-optimized.cl +++ b/OpenCL/m15000_a3-optimized.cl @@ -437,7 +437,7 @@ DECLSPEC void m15000s (PRIVATE_AS u32 *w, const u32 pw_len, KERN_ATTR_FUNC_VECTO } } -KERNEL_FQ void m15000_m04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m15000_m04 (KERN_ATTR_VECTOR ()) { /** * base @@ -477,7 +477,7 @@ KERNEL_FQ void m15000_m04 (KERN_ATTR_VECTOR ()) m15000m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m15000_m08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m15000_m08 (KERN_ATTR_VECTOR ()) { /** * base @@ -517,7 +517,7 @@ KERNEL_FQ void m15000_m08 (KERN_ATTR_VECTOR ()) m15000m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m15000_m16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m15000_m16 (KERN_ATTR_VECTOR ()) { /** * base @@ -557,7 +557,7 @@ KERNEL_FQ void m15000_m16 (KERN_ATTR_VECTOR ()) m15000m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m15000_s04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m15000_s04 (KERN_ATTR_VECTOR ()) { /** * base @@ -597,7 +597,7 @@ KERNEL_FQ void m15000_s04 (KERN_ATTR_VECTOR ()) m15000s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m15000_s08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m15000_s08 (KERN_ATTR_VECTOR ()) { /** * base @@ -637,7 +637,7 @@ KERNEL_FQ void m15000_s08 (KERN_ATTR_VECTOR ()) m15000s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m15000_s16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m15000_s16 (KERN_ATTR_VECTOR ()) { /** * base diff --git a/OpenCL/m15000_a3-pure.cl b/OpenCL/m15000_a3-pure.cl index 59e983719..76c88b2ff 100644 --- a/OpenCL/m15000_a3-pure.cl +++ b/OpenCL/m15000_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha512.cl) #endif -KERNEL_FQ void m15000_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m15000_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -80,7 +80,7 @@ KERNEL_FQ void m15000_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m15000_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m15000_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m15100-pure.cl b/OpenCL/m15100-pure.cl index 97138fc42..fbba7afc1 100644 --- a/OpenCL/m15100-pure.cl +++ b/OpenCL/m15100-pure.cl @@ -64,7 +64,7 @@ DECLSPEC void hmac_sha1_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE sha1_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m15100_init (KERN_ATTR_TMPS (pbkdf1_sha1_tmp_t)) +KERNEL_FQ KERNEL_FA void m15100_init (KERN_ATTR_TMPS (pbkdf1_sha1_tmp_t)) { /** * base @@ -101,7 +101,7 @@ KERNEL_FQ void m15100_init (KERN_ATTR_TMPS (pbkdf1_sha1_tmp_t)) tmps[gid].out[4] = sha1_hmac_ctx.opad.h[4]; } -KERNEL_FQ void m15100_loop (KERN_ATTR_TMPS (pbkdf1_sha1_tmp_t)) +KERNEL_FQ KERNEL_FA void m15100_loop (KERN_ATTR_TMPS (pbkdf1_sha1_tmp_t)) { const u64 gid = get_global_id (0); @@ -164,7 +164,7 @@ KERNEL_FQ void m15100_loop (KERN_ATTR_TMPS (pbkdf1_sha1_tmp_t)) unpackv (tmps, out, gid, 4, out[4]); } -KERNEL_FQ void m15100_comp (KERN_ATTR_TMPS (pbkdf1_sha1_tmp_t)) +KERNEL_FQ KERNEL_FA void m15100_comp (KERN_ATTR_TMPS (pbkdf1_sha1_tmp_t)) { /** * base diff --git a/OpenCL/m15300-pure.cl b/OpenCL/m15300-pure.cl index 64869baa7..8deb497a0 100644 --- a/OpenCL/m15300-pure.cl +++ b/OpenCL/m15300-pure.cl @@ -86,7 +86,7 @@ DECLSPEC void hmac_sha1_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE sha1_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m15300_init (KERN_ATTR_TMPS_ESALT (dpapimk_tmp_v1_t, dpapimk_t)) +KERNEL_FQ KERNEL_FA void m15300_init (KERN_ATTR_TMPS_ESALT (dpapimk_tmp_v1_t, dpapimk_t)) { /** * base @@ -283,7 +283,7 @@ KERNEL_FQ void m15300_init (KERN_ATTR_TMPS_ESALT (dpapimk_tmp_v1_t, dpapimk_t)) } } -KERNEL_FQ void m15300_loop (KERN_ATTR_TMPS_ESALT (dpapimk_tmp_v1_t, dpapimk_t)) +KERNEL_FQ KERNEL_FA void m15300_loop (KERN_ATTR_TMPS_ESALT (dpapimk_tmp_v1_t, dpapimk_t)) { /** * base @@ -372,7 +372,7 @@ KERNEL_FQ void m15300_loop (KERN_ATTR_TMPS_ESALT (dpapimk_tmp_v1_t, dpapimk_t)) } } -KERNEL_FQ void m15300_comp (KERN_ATTR_TMPS_ESALT (dpapimk_tmp_v1_t, dpapimk_t)) +KERNEL_FQ KERNEL_FA void m15300_comp (KERN_ATTR_TMPS_ESALT (dpapimk_tmp_v1_t, dpapimk_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m15310-pure.cl b/OpenCL/m15310-pure.cl index bf8c53947..e0036942e 100644 --- a/OpenCL/m15310-pure.cl +++ b/OpenCL/m15310-pure.cl @@ -130,7 +130,7 @@ DECLSPEC void hmac_sha1_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE sha1_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m15310_init (KERN_ATTR_TMPS_ESALT (dpapimk_tmp_v1_t, dpapimk_t)) +KERNEL_FQ KERNEL_FA void m15310_init (KERN_ATTR_TMPS_ESALT (dpapimk_tmp_v1_t, dpapimk_t)) { /** * base @@ -252,7 +252,7 @@ KERNEL_FQ void m15310_init (KERN_ATTR_TMPS_ESALT (dpapimk_tmp_v1_t, dpapimk_t)) } } -KERNEL_FQ void m15310_loop (KERN_ATTR_TMPS_ESALT (dpapimk_tmp_v1_t, dpapimk_t)) +KERNEL_FQ KERNEL_FA void m15310_loop (KERN_ATTR_TMPS_ESALT (dpapimk_tmp_v1_t, dpapimk_t)) { const u64 gid = get_global_id (0); @@ -358,7 +358,7 @@ KERNEL_FQ void m15310_loop (KERN_ATTR_TMPS_ESALT (dpapimk_tmp_v1_t, dpapimk_t)) } } -KERNEL_FQ void m15310_init2 (KERN_ATTR_TMPS_ESALT (dpapimk_tmp_v1_t, dpapimk_t)) +KERNEL_FQ KERNEL_FA void m15310_init2 (KERN_ATTR_TMPS_ESALT (dpapimk_tmp_v1_t, dpapimk_t)) { /** * base @@ -599,7 +599,7 @@ KERNEL_FQ void m15310_init2 (KERN_ATTR_TMPS_ESALT (dpapimk_tmp_v1_t, dpapimk_t)) } } -KERNEL_FQ void m15310_loop2 (KERN_ATTR_TMPS_ESALT (dpapimk_tmp_v1_t, dpapimk_t)) +KERNEL_FQ KERNEL_FA void m15310_loop2 (KERN_ATTR_TMPS_ESALT (dpapimk_tmp_v1_t, dpapimk_t)) { /** * base @@ -688,7 +688,7 @@ KERNEL_FQ void m15310_loop2 (KERN_ATTR_TMPS_ESALT (dpapimk_tmp_v1_t, dpapimk_t)) } } -KERNEL_FQ void m15310_comp (KERN_ATTR_TMPS_ESALT (dpapimk_tmp_v1_t, dpapimk_t)) +KERNEL_FQ KERNEL_FA void m15310_comp (KERN_ATTR_TMPS_ESALT (dpapimk_tmp_v1_t, dpapimk_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m15400_a0-optimized.cl b/OpenCL/m15400_a0-optimized.cl index 86363977a..d2df7d4f9 100644 --- a/OpenCL/m15400_a0-optimized.cl +++ b/OpenCL/m15400_a0-optimized.cl @@ -238,7 +238,7 @@ DECLSPEC void chacha20_transform (PRIVATE_AS const u32x *w0, PRIVATE_AS const u3 } } -KERNEL_FQ void m15400_m04 (KERN_ATTR_RULES_ESALT (chacha20_t)) +KERNEL_FQ KERNEL_FA void m15400_m04 (KERN_ATTR_RULES_ESALT (chacha20_t)) { /** * modifier @@ -308,15 +308,15 @@ KERNEL_FQ void m15400_m04 (KERN_ATTR_RULES_ESALT (chacha20_t)) } } -KERNEL_FQ void m15400_m08 (KERN_ATTR_RULES_ESALT (chacha20_t)) +KERNEL_FQ KERNEL_FA void m15400_m08 (KERN_ATTR_RULES_ESALT (chacha20_t)) { } -KERNEL_FQ void m15400_m16 (KERN_ATTR_RULES_ESALT (chacha20_t)) +KERNEL_FQ KERNEL_FA void m15400_m16 (KERN_ATTR_RULES_ESALT (chacha20_t)) { } -KERNEL_FQ void m15400_s04 (KERN_ATTR_RULES_ESALT (chacha20_t)) +KERNEL_FQ KERNEL_FA void m15400_s04 (KERN_ATTR_RULES_ESALT (chacha20_t)) { /** * modifier @@ -398,10 +398,10 @@ KERNEL_FQ void m15400_s04 (KERN_ATTR_RULES_ESALT (chacha20_t)) } } -KERNEL_FQ void m15400_s08 (KERN_ATTR_RULES_ESALT (chacha20_t)) +KERNEL_FQ KERNEL_FA void m15400_s08 (KERN_ATTR_RULES_ESALT (chacha20_t)) { } -KERNEL_FQ void m15400_s16 (KERN_ATTR_RULES_ESALT (chacha20_t)) +KERNEL_FQ KERNEL_FA void m15400_s16 (KERN_ATTR_RULES_ESALT (chacha20_t)) { } diff --git a/OpenCL/m15400_a1-optimized.cl b/OpenCL/m15400_a1-optimized.cl index cf9017ce6..c140058df 100644 --- a/OpenCL/m15400_a1-optimized.cl +++ b/OpenCL/m15400_a1-optimized.cl @@ -236,7 +236,7 @@ DECLSPEC void chacha20_transform (PRIVATE_AS const u32x *w0, PRIVATE_AS const u3 } } -KERNEL_FQ void m15400_m04 (KERN_ATTR_ESALT (chacha20_t)) +KERNEL_FQ KERNEL_FA void m15400_m04 (KERN_ATTR_ESALT (chacha20_t)) { /** * modifier @@ -357,15 +357,15 @@ KERNEL_FQ void m15400_m04 (KERN_ATTR_ESALT (chacha20_t)) } } -KERNEL_FQ void m15400_m08 (KERN_ATTR_ESALT (chacha20_t)) +KERNEL_FQ KERNEL_FA void m15400_m08 (KERN_ATTR_ESALT (chacha20_t)) { } -KERNEL_FQ void m15400_m16 (KERN_ATTR_ESALT (chacha20_t)) +KERNEL_FQ KERNEL_FA void m15400_m16 (KERN_ATTR_ESALT (chacha20_t)) { } -KERNEL_FQ void m15400_s04 (KERN_ATTR_ESALT (chacha20_t)) +KERNEL_FQ KERNEL_FA void m15400_s04 (KERN_ATTR_ESALT (chacha20_t)) { /** * modifier @@ -498,10 +498,10 @@ KERNEL_FQ void m15400_s04 (KERN_ATTR_ESALT (chacha20_t)) } } -KERNEL_FQ void m15400_s08 (KERN_ATTR_ESALT (chacha20_t)) +KERNEL_FQ KERNEL_FA void m15400_s08 (KERN_ATTR_ESALT (chacha20_t)) { } -KERNEL_FQ void m15400_s16 (KERN_ATTR_ESALT (chacha20_t)) +KERNEL_FQ KERNEL_FA void m15400_s16 (KERN_ATTR_ESALT (chacha20_t)) { } diff --git a/OpenCL/m15400_a3-optimized.cl b/OpenCL/m15400_a3-optimized.cl index 2eaa0ea40..a0f856bac 100644 --- a/OpenCL/m15400_a3-optimized.cl +++ b/OpenCL/m15400_a3-optimized.cl @@ -236,17 +236,17 @@ DECLSPEC void chacha20_transform (PRIVATE_AS const u32x *w0, PRIVATE_AS const u3 } } -KERNEL_FQ void m15400_m04 (KERN_ATTR_VECTOR_ESALT (chacha20_t)) +KERNEL_FQ KERNEL_FA void m15400_m04 (KERN_ATTR_VECTOR_ESALT (chacha20_t)) { // fixed size 32 } -KERNEL_FQ void m15400_m08 (KERN_ATTR_VECTOR_ESALT (chacha20_t)) +KERNEL_FQ KERNEL_FA void m15400_m08 (KERN_ATTR_VECTOR_ESALT (chacha20_t)) { // fixed size 32 } -KERNEL_FQ void m15400_m16 (KERN_ATTR_VECTOR_ESALT (chacha20_t)) +KERNEL_FQ KERNEL_FA void m15400_m16 (KERN_ATTR_VECTOR_ESALT (chacha20_t)) { /** * modifier @@ -326,17 +326,17 @@ KERNEL_FQ void m15400_m16 (KERN_ATTR_VECTOR_ESALT (chacha20_t)) } } -KERNEL_FQ void m15400_s04 (KERN_ATTR_VECTOR_ESALT (chacha20_t)) +KERNEL_FQ KERNEL_FA void m15400_s04 (KERN_ATTR_VECTOR_ESALT (chacha20_t)) { // fixed size 32 } -KERNEL_FQ void m15400_s08 (KERN_ATTR_VECTOR_ESALT (chacha20_t)) +KERNEL_FQ KERNEL_FA void m15400_s08 (KERN_ATTR_VECTOR_ESALT (chacha20_t)) { // fixed size 32 } -KERNEL_FQ void m15400_s16 (KERN_ATTR_VECTOR_ESALT (chacha20_t)) +KERNEL_FQ KERNEL_FA void m15400_s16 (KERN_ATTR_VECTOR_ESALT (chacha20_t)) { /** * modifier diff --git a/OpenCL/m15500_a0-optimized.cl b/OpenCL/m15500_a0-optimized.cl index 55d5cf935..e3ea59427 100644 --- a/OpenCL/m15500_a0-optimized.cl +++ b/OpenCL/m15500_a0-optimized.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m15500_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m15500_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -264,15 +264,15 @@ KERNEL_FQ void m15500_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m15500_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m15500_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m15500_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m15500_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m15500_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m15500_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -532,10 +532,10 @@ KERNEL_FQ void m15500_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m15500_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m15500_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m15500_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m15500_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m15500_a0-pure.cl b/OpenCL/m15500_a0-pure.cl index 5190cf4ea..d2c568e3e 100644 --- a/OpenCL/m15500_a0-pure.cl +++ b/OpenCL/m15500_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m15500_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m15500_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -77,7 +77,7 @@ KERNEL_FQ void m15500_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m15500_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m15500_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m15500_a1-optimized.cl b/OpenCL/m15500_a1-optimized.cl index 6d253ba54..3c11ee2a1 100644 --- a/OpenCL/m15500_a1-optimized.cl +++ b/OpenCL/m15500_a1-optimized.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m15500_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m15500_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -322,15 +322,15 @@ KERNEL_FQ void m15500_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m15500_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m15500_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m15500_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m15500_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m15500_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m15500_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -650,10 +650,10 @@ KERNEL_FQ void m15500_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m15500_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m15500_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m15500_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m15500_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m15500_a1-pure.cl b/OpenCL/m15500_a1-pure.cl index 457a9e982..d98047710 100644 --- a/OpenCL/m15500_a1-pure.cl +++ b/OpenCL/m15500_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m15500_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m15500_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -73,7 +73,7 @@ KERNEL_FQ void m15500_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m15500_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m15500_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m15500_a3-optimized.cl b/OpenCL/m15500_a3-optimized.cl index f6d37dd9f..2a99be21d 100644 --- a/OpenCL/m15500_a3-optimized.cl +++ b/OpenCL/m15500_a3-optimized.cl @@ -580,7 +580,7 @@ DECLSPEC void m15500s (PRIVATE_AS u32 *w, const u32 pw_len, KERN_ATTR_FUNC_VECTO } } -KERNEL_FQ void m15500_m04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m15500_m04 (KERN_ATTR_VECTOR ()) { /** * base @@ -620,7 +620,7 @@ KERNEL_FQ void m15500_m04 (KERN_ATTR_VECTOR ()) m15500m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m15500_m08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m15500_m08 (KERN_ATTR_VECTOR ()) { /** * base @@ -660,7 +660,7 @@ KERNEL_FQ void m15500_m08 (KERN_ATTR_VECTOR ()) m15500m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m15500_m16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m15500_m16 (KERN_ATTR_VECTOR ()) { /** * base @@ -700,7 +700,7 @@ KERNEL_FQ void m15500_m16 (KERN_ATTR_VECTOR ()) m15500m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m15500_s04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m15500_s04 (KERN_ATTR_VECTOR ()) { /** * base @@ -740,7 +740,7 @@ KERNEL_FQ void m15500_s04 (KERN_ATTR_VECTOR ()) m15500s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m15500_s08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m15500_s08 (KERN_ATTR_VECTOR ()) { /** * base @@ -780,7 +780,7 @@ KERNEL_FQ void m15500_s08 (KERN_ATTR_VECTOR ()) m15500s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m15500_s16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m15500_s16 (KERN_ATTR_VECTOR ()) { /** * base diff --git a/OpenCL/m15500_a3-pure.cl b/OpenCL/m15500_a3-pure.cl index 1805eb526..b838b8ad2 100644 --- a/OpenCL/m15500_a3-pure.cl +++ b/OpenCL/m15500_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m15500_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m15500_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -86,7 +86,7 @@ KERNEL_FQ void m15500_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m15500_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m15500_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m15600-pure.cl b/OpenCL/m15600-pure.cl index 391bdf13c..08d05e039 100644 --- a/OpenCL/m15600-pure.cl +++ b/OpenCL/m15600-pure.cl @@ -205,7 +205,7 @@ DECLSPEC void hmac_sha256_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVA sha256_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m15600_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, ethereum_pbkdf2_t)) +KERNEL_FQ KERNEL_FA void m15600_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, ethereum_pbkdf2_t)) { /** * base @@ -289,7 +289,7 @@ KERNEL_FQ void m15600_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, ethereum_ } } -KERNEL_FQ void m15600_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, ethereum_pbkdf2_t)) +KERNEL_FQ KERNEL_FA void m15600_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, ethereum_pbkdf2_t)) { const u64 gid = get_global_id (0); @@ -395,7 +395,7 @@ KERNEL_FQ void m15600_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, ethereum_ } } -KERNEL_FQ void m15600_comp (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, ethereum_pbkdf2_t)) +KERNEL_FQ KERNEL_FA void m15600_comp (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, ethereum_pbkdf2_t)) { /** * base diff --git a/OpenCL/m15700-pure.cl b/OpenCL/m15700-pure.cl index d435883ce..2e9e1bf45 100644 --- a/OpenCL/m15700-pure.cl +++ b/OpenCL/m15700-pure.cl @@ -9,21 +9,12 @@ #include M2S(INCLUDE_PATH/inc_platform.cl) #include M2S(INCLUDE_PATH/inc_common.cl) #include M2S(INCLUDE_PATH/inc_hash_sha256.cl) +#include M2S(INCLUDE_PATH/inc_hash_scrypt.cl) #endif #define COMPARE_S M2S(INCLUDE_PATH/inc_comp_single.cl) #define COMPARE_M M2S(INCLUDE_PATH/inc_comp_multi.cl) -typedef struct -{ - #ifndef SCRYPT_TMP_ELEM - #define SCRYPT_TMP_ELEM 1 - #endif - - uint4 P[SCRYPT_TMP_ELEM]; - -} scrypt_tmp_t; - typedef struct ethereum_scrypt { u32 salt_buf[16]; @@ -31,273 +22,6 @@ typedef struct ethereum_scrypt } ethereum_scrypt_t; -#if defined IS_CUDA || defined IS_HIP - -inline __device__ uint4 operator & (const uint4 a, const u32 b) { return make_uint4 ((a.x & b ), (a.y & b ), (a.z & b ), (a.w & b )); } -inline __device__ uint4 operator << (const uint4 a, const u32 b) { return make_uint4 ((a.x << b ), (a.y << b ), (a.z << b ), (a.w << b )); } -inline __device__ uint4 operator >> (const uint4 a, const u32 b) { return make_uint4 ((a.x >> b ), (a.y >> b ), (a.z >> b ), (a.w >> b )); } -inline __device__ uint4 operator + (const uint4 a, const uint4 b) { return make_uint4 ((a.x + b.x), (a.y + b.y), (a.z + b.z), (a.w + b.w)); } -inline __device__ uint4 operator ^ (const uint4 a, const uint4 b) { return make_uint4 ((a.x ^ b.x), (a.y ^ b.y), (a.z ^ b.z), (a.w ^ b.w)); } -inline __device__ uint4 operator | (const uint4 a, const uint4 b) { return make_uint4 ((a.x | b.x), (a.y | b.y), (a.z | b.z), (a.w | b.w)); } -inline __device__ void operator ^= ( uint4 &a, const uint4 b) { a.x ^= b.x; a.y ^= b.y; a.z ^= b.z; a.w ^= b.w; } - -inline __device__ uint4 rotate (const uint4 a, const int n) -{ - return ((a << n) | ((a >> (32 - n)))); -} - -#endif - -DECLSPEC uint4 hc_swap32_4 (uint4 v) -{ - return (rotate ((v & 0x00FF00FF), 24u) | rotate ((v & 0xFF00FF00), 8u)); -} - -#define GET_SCRYPT_CNT(r,p) (2 * (r) * 16 * (p)) -#define GET_SMIX_CNT(r,N) (2 * (r) * 16 * (N)) -#define GET_STATE_CNT(r) (2 * (r) * 16) - -#define SCRYPT_CNT GET_SCRYPT_CNT (SCRYPT_R, SCRYPT_P) -#define SCRYPT_CNT4 (SCRYPT_CNT / 4) -#define STATE_CNT GET_STATE_CNT (SCRYPT_R) -#define STATE_CNT4 (STATE_CNT / 4) - -#define ADD_ROTATE_XOR(r,i1,i2,s) (r) ^= rotate ((i1) + (i2), (s)); - -#if defined IS_CUDA || defined IS_HIP - -#define SALSA20_2R() \ -{ \ - ADD_ROTATE_XOR (X1, X0, X3, 7); \ - ADD_ROTATE_XOR (X2, X1, X0, 9); \ - ADD_ROTATE_XOR (X3, X2, X1, 13); \ - ADD_ROTATE_XOR (X0, X3, X2, 18); \ - \ - X1 = make_uint4 (X1.w, X1.x, X1.y, X1.z); \ - X2 = make_uint4 (X2.z, X2.w, X2.x, X2.y); \ - X3 = make_uint4 (X3.y, X3.z, X3.w, X3.x); \ - \ - ADD_ROTATE_XOR (X3, X0, X1, 7); \ - ADD_ROTATE_XOR (X2, X3, X0, 9); \ - ADD_ROTATE_XOR (X1, X2, X3, 13); \ - ADD_ROTATE_XOR (X0, X1, X2, 18); \ - \ - X1 = make_uint4 (X1.y, X1.z, X1.w, X1.x); \ - X2 = make_uint4 (X2.z, X2.w, X2.x, X2.y); \ - X3 = make_uint4 (X3.w, X3.x, X3.y, X3.z); \ -} -#elif defined IS_METAL -#define SALSA20_2R() \ -{ \ - ADD_ROTATE_XOR (X1, X0, X3, 7); \ - ADD_ROTATE_XOR (X2, X1, X0, 9); \ - ADD_ROTATE_XOR (X3, X2, X1, 13); \ - ADD_ROTATE_XOR (X0, X3, X2, 18); \ - \ - X1 = X1.wxyz; \ - X2 = X2.zwxy; \ - X3 = X3.yzwx; \ - \ - ADD_ROTATE_XOR (X3, X0, X1, 7); \ - ADD_ROTATE_XOR (X2, X3, X0, 9); \ - ADD_ROTATE_XOR (X1, X2, X3, 13); \ - ADD_ROTATE_XOR (X0, X1, X2, 18); \ - \ - X1 = X1.yzwx; \ - X2 = X2.zwxy; \ - X3 = X3.wxyz; \ -} -#else -#define SALSA20_2R() \ -{ \ - ADD_ROTATE_XOR (X1, X0, X3, 7); \ - ADD_ROTATE_XOR (X2, X1, X0, 9); \ - ADD_ROTATE_XOR (X3, X2, X1, 13); \ - ADD_ROTATE_XOR (X0, X3, X2, 18); \ - \ - X1 = X1.s3012; \ - X2 = X2.s2301; \ - X3 = X3.s1230; \ - \ - ADD_ROTATE_XOR (X3, X0, X1, 7); \ - ADD_ROTATE_XOR (X2, X3, X0, 9); \ - ADD_ROTATE_XOR (X1, X2, X3, 13); \ - ADD_ROTATE_XOR (X0, X1, X2, 18); \ - \ - X1 = X1.s1230; \ - X2 = X2.s2301; \ - X3 = X3.s3012; \ -} -#endif - -#define Coord(xd4,y,z) (((xd4) * ySIZE * zSIZE) + ((y) * zSIZE) + (z)) -#define CO Coord(xd4,y,z) - -DECLSPEC void salsa_r (PRIVATE_AS uint4 *TI) -{ - #if SCRYPT_R > 1 - - uint4 TT[STATE_CNT4 / 2]; - - for (int dst_off = 0, src_off = 4; src_off < STATE_CNT4; dst_off += 4, src_off += 8) - { - TT[dst_off + 0] = TI[src_off + 0]; - TT[dst_off + 1] = TI[src_off + 1]; - TT[dst_off + 2] = TI[src_off + 2]; - TT[dst_off + 3] = TI[src_off + 3]; - } - - for (int dst_off = 4, src_off = 8; src_off < STATE_CNT4; dst_off += 4, src_off += 8) - { - TI[dst_off + 0] = TI[src_off + 0]; - TI[dst_off + 1] = TI[src_off + 1]; - TI[dst_off + 2] = TI[src_off + 2]; - TI[dst_off + 3] = TI[src_off + 3]; - } - - for (int dst_off = STATE_CNT4 / 2, src_off = 0; dst_off < STATE_CNT4; dst_off += 4, src_off += 4) - { - TI[dst_off + 0] = TT[src_off + 0]; - TI[dst_off + 1] = TT[src_off + 1]; - TI[dst_off + 2] = TT[src_off + 2]; - TI[dst_off + 3] = TT[src_off + 3]; - } - - #endif - - uint4 R0 = TI[STATE_CNT4 - 4]; - uint4 R1 = TI[STATE_CNT4 - 3]; - uint4 R2 = TI[STATE_CNT4 - 2]; - uint4 R3 = TI[STATE_CNT4 - 1]; - - for (int i = 0; i < STATE_CNT4; i += 4) - { - uint4 Y0 = TI[i + 0]; - uint4 Y1 = TI[i + 1]; - uint4 Y2 = TI[i + 2]; - uint4 Y3 = TI[i + 3]; - - R0 = R0 ^ Y0; - R1 = R1 ^ Y1; - R2 = R2 ^ Y2; - R3 = R3 ^ Y3; - - uint4 X0 = R0; - uint4 X1 = R1; - uint4 X2 = R2; - uint4 X3 = R3; - - SALSA20_2R (); - SALSA20_2R (); - SALSA20_2R (); - SALSA20_2R (); - - R0 = R0 + X0; - R1 = R1 + X1; - R2 = R2 + X2; - R3 = R3 + X3; - - TI[i + 0] = R0; - TI[i + 1] = R1; - TI[i + 2] = R2; - TI[i + 3] = R3; - } -} - -DECLSPEC void scrypt_smix_init (PRIVATE_AS uint4 *X, GLOBAL_AS uint4 *V0, GLOBAL_AS uint4 *V1, GLOBAL_AS uint4 *V2, GLOBAL_AS uint4 *V3, const u64 gid) -{ - const u32 ySIZE = SCRYPT_N / SCRYPT_TMTO; - const u32 zSIZE = STATE_CNT4; - - const u32 x = (u32) gid; - - const u32 xd4 = x / 4; - const u32 xm4 = x & 3; - - GLOBAL_AS uint4 *V; - - switch (xm4) - { - case 0: V = V0; break; - case 1: V = V1; break; - case 2: V = V2; break; - case 3: V = V3; break; - } - - #if SCRYPT_R > 1 - - uint4 TT[STATE_CNT4]; - - for (int z = 0; z < zSIZE; z++) TT[z] = X[z]; - - for (int dst_off = 8, src_off = 4; dst_off < zSIZE; dst_off += 8, src_off += 4) - { - X[dst_off + 0] = TT[src_off + 0]; - X[dst_off + 1] = TT[src_off + 1]; - X[dst_off + 2] = TT[src_off + 2]; - X[dst_off + 3] = TT[src_off + 3]; - } - - for (int dst_off = 4, src_off = zSIZE / 2; dst_off < zSIZE; dst_off += 8, src_off += 4) - { - X[dst_off + 0] = TT[src_off + 0]; - X[dst_off + 1] = TT[src_off + 1]; - X[dst_off + 2] = TT[src_off + 2]; - X[dst_off + 3] = TT[src_off + 3]; - } - - #endif - - for (u32 y = 0; y < ySIZE; y++) - { - for (u32 z = 0; z < zSIZE; z++) V[CO] = X[z]; - - for (u32 i = 0; i < SCRYPT_TMTO; i++) salsa_r (X); - } -} - -DECLSPEC void scrypt_smix_loop (PRIVATE_AS uint4 *X, GLOBAL_AS uint4 *V0, GLOBAL_AS uint4 *V1, GLOBAL_AS uint4 *V2, GLOBAL_AS uint4 *V3, const u64 gid) -{ - const u32 ySIZE = SCRYPT_N / SCRYPT_TMTO; - const u32 zSIZE = STATE_CNT4; - - const u32 x = (u32) gid; - - const u32 xd4 = x / 4; - const u32 xm4 = x & 3; - - GLOBAL_AS uint4 *V; - - switch (xm4) - { - case 0: V = V0; break; - case 1: V = V1; break; - case 2: V = V2; break; - case 3: V = V3; break; - } - - // note: fixed 1024 iterations = forced -u 1024 - - for (u32 N_pos = 0; N_pos < 1024; N_pos++) - { - const u32 k = X[zSIZE - 4].x & (SCRYPT_N - 1); - - const u32 y = k / SCRYPT_TMTO; - - const u32 km = k - (y * SCRYPT_TMTO); - - uint4 T[STATE_CNT4]; - - for (u32 z = 0; z < zSIZE; z++) T[z] = V[CO]; - - for (u32 i = 0; i < km; i++) salsa_r (T); - - for (u32 z = 0; z < zSIZE; z++) X[z] ^= T[z]; - - salsa_r (X); - } -} - #ifndef KECCAK_ROUNDS #define KECCAK_ROUNDS 24 #endif @@ -427,277 +151,61 @@ DECLSPEC void keccak_transform_S (PRIVATE_AS u64 *st) } } -KERNEL_FQ void m15700_init (KERN_ATTR_TMPS_ESALT (scrypt_tmp_t, ethereum_scrypt_t)) +KERNEL_FQ KERNEL_FA void m15700_init (KERN_ATTR_TMPS_ESALT (scrypt_tmp_t, ethereum_scrypt_t)) { - /** - * base - */ - const u64 gid = get_global_id (0); if (gid >= GID_CNT) return; - sha256_hmac_ctx_t sha256_hmac_ctx; + scrypt_pbkdf2_ggg (pws[gid].i, pws[gid].pw_len, salt_bufs[SALT_POS_HOST].salt_buf, salt_bufs[SALT_POS_HOST].salt_len, tmps[gid].in, SCRYPT_SZ); - sha256_hmac_init_global_swap (&sha256_hmac_ctx, pws[gid].i, pws[gid].pw_len); - - sha256_hmac_update_global_swap (&sha256_hmac_ctx, salt_bufs[SALT_POS_HOST].salt_buf, salt_bufs[SALT_POS_HOST].salt_len); - - for (u32 i = 0, j = 1, k = 0; i < SCRYPT_CNT; i += 8, j += 1, k += 2) - { - sha256_hmac_ctx_t sha256_hmac_ctx2 = sha256_hmac_ctx; - - u32 w0[4]; - u32 w1[4]; - u32 w2[4]; - u32 w3[4]; - - w0[0] = j; - w0[1] = 0; - w0[2] = 0; - w0[3] = 0; - w1[0] = 0; - w1[1] = 0; - w1[2] = 0; - w1[3] = 0; - w2[0] = 0; - w2[1] = 0; - w2[2] = 0; - w2[3] = 0; - w3[0] = 0; - w3[1] = 0; - w3[2] = 0; - w3[3] = 0; - - sha256_hmac_update_64 (&sha256_hmac_ctx2, w0, w1, w2, w3, 4); - - sha256_hmac_final (&sha256_hmac_ctx2); - - u32 digest[8]; - - digest[0] = sha256_hmac_ctx2.opad.h[0]; - digest[1] = sha256_hmac_ctx2.opad.h[1]; - digest[2] = sha256_hmac_ctx2.opad.h[2]; - digest[3] = sha256_hmac_ctx2.opad.h[3]; - digest[4] = sha256_hmac_ctx2.opad.h[4]; - digest[5] = sha256_hmac_ctx2.opad.h[5]; - digest[6] = sha256_hmac_ctx2.opad.h[6]; - digest[7] = sha256_hmac_ctx2.opad.h[7]; - - #if defined IS_CUDA || defined IS_HIP - const uint4 tmp0 = make_uint4 (digest[0], digest[1], digest[2], digest[3]); - const uint4 tmp1 = make_uint4 (digest[4], digest[5], digest[6], digest[7]); - #elif defined IS_METAL - const uint4 tmp0 = uint4 (digest[0], digest[1], digest[2], digest[3]); - const uint4 tmp1 = uint4 (digest[4], digest[5], digest[6], digest[7]); - #else - const uint4 tmp0 = (uint4) (digest[0], digest[1], digest[2], digest[3]); - const uint4 tmp1 = (uint4) (digest[4], digest[5], digest[6], digest[7]); - #endif - - tmps[gid].P[k + 0] = tmp0; - tmps[gid].P[k + 1] = tmp1; - } - - for (u32 l = 0; l < SCRYPT_CNT4; l += 4) - { - uint4 T[4]; - - T[0] = tmps[gid].P[l + 0]; - T[1] = tmps[gid].P[l + 1]; - T[2] = tmps[gid].P[l + 2]; - T[3] = tmps[gid].P[l + 3]; - - T[0] = hc_swap32_4 (T[0]); - T[1] = hc_swap32_4 (T[1]); - T[2] = hc_swap32_4 (T[2]); - T[3] = hc_swap32_4 (T[3]); - - uint4 X[4]; - - #if defined IS_CUDA || defined IS_HIP - X[0] = make_uint4 (T[0].x, T[1].y, T[2].z, T[3].w); - X[1] = make_uint4 (T[1].x, T[2].y, T[3].z, T[0].w); - X[2] = make_uint4 (T[2].x, T[3].y, T[0].z, T[1].w); - X[3] = make_uint4 (T[3].x, T[0].y, T[1].z, T[2].w); - #elif defined IS_METAL - X[0] = uint4 (T[0].x, T[1].y, T[2].z, T[3].w); - X[1] = uint4 (T[1].x, T[2].y, T[3].z, T[0].w); - X[2] = uint4 (T[2].x, T[3].y, T[0].z, T[1].w); - X[3] = uint4 (T[3].x, T[0].y, T[1].z, T[2].w); - #else - X[0] = (uint4) (T[0].x, T[1].y, T[2].z, T[3].w); - X[1] = (uint4) (T[1].x, T[2].y, T[3].z, T[0].w); - X[2] = (uint4) (T[2].x, T[3].y, T[0].z, T[1].w); - X[3] = (uint4) (T[3].x, T[0].y, T[1].z, T[2].w); - #endif - - tmps[gid].P[l + 0] = X[0]; - tmps[gid].P[l + 1] = X[1]; - tmps[gid].P[l + 2] = X[2]; - tmps[gid].P[l + 3] = X[3]; - } + scrypt_blockmix_in (tmps[gid].in, tmps[gid].out, SCRYPT_SZ); } -KERNEL_FQ void m15700_loop_prepare (KERN_ATTR_TMPS (scrypt_tmp_t)) -{ - /** - * base - */ - - const u64 gid = get_global_id (0); - const u64 lid = get_local_id (0); - - if (gid >= GID_CNT) return; - - // SCRYPT part, init V - - GLOBAL_AS uint4 *d_scrypt0_buf = (GLOBAL_AS uint4 *) d_extra0_buf; - GLOBAL_AS uint4 *d_scrypt1_buf = (GLOBAL_AS uint4 *) d_extra1_buf; - GLOBAL_AS uint4 *d_scrypt2_buf = (GLOBAL_AS uint4 *) d_extra2_buf; - GLOBAL_AS uint4 *d_scrypt3_buf = (GLOBAL_AS uint4 *) d_extra3_buf; - - uint4 X[STATE_CNT4]; - - const u32 P_offset = SALT_REPEAT * STATE_CNT4; - - GLOBAL_AS uint4 *P = tmps[gid].P + P_offset; - - for (int z = 0; z < STATE_CNT4; z++) X[z] = P[z]; - - scrypt_smix_init (X, d_scrypt0_buf, d_scrypt1_buf, d_scrypt2_buf, d_scrypt3_buf, gid); - - for (int z = 0; z < STATE_CNT4; z++) P[z] = X[z]; -} - -KERNEL_FQ void m15700_loop (KERN_ATTR_TMPS (scrypt_tmp_t)) +KERNEL_FQ KERNEL_FA void m15700_loop_prepare (KERN_ATTR_TMPS (scrypt_tmp_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); + const u64 lsz = get_local_size (0); + const u64 bid = get_group_id (0); if (gid >= GID_CNT) return; - GLOBAL_AS uint4 *d_scrypt0_buf = (GLOBAL_AS uint4 *) d_extra0_buf; - GLOBAL_AS uint4 *d_scrypt1_buf = (GLOBAL_AS uint4 *) d_extra1_buf; - GLOBAL_AS uint4 *d_scrypt2_buf = (GLOBAL_AS uint4 *) d_extra2_buf; - GLOBAL_AS uint4 *d_scrypt3_buf = (GLOBAL_AS uint4 *) d_extra3_buf; + u32 X[STATE_CNT4]; - uint4 X[STATE_CNT4]; + GLOBAL_AS u32 *P = tmps[gid].out + (SALT_REPEAT * STATE_CNT4); - const u32 P_offset = SALT_REPEAT * STATE_CNT4; - - GLOBAL_AS uint4 *P = tmps[gid].P + P_offset; - - for (int z = 0; z < STATE_CNT4; z++) X[z] = P[z]; - - scrypt_smix_loop (X, d_scrypt0_buf, d_scrypt1_buf, d_scrypt2_buf, d_scrypt3_buf, gid); - - for (int z = 0; z < STATE_CNT4; z++) P[z] = X[z]; + scrypt_smix_init (P, X, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, gid, lid, lsz, bid); } -KERNEL_FQ void m15700_comp (KERN_ATTR_TMPS_ESALT (scrypt_tmp_t, ethereum_scrypt_t)) +KERNEL_FQ KERNEL_FA void m15700_loop (KERN_ATTR_TMPS (scrypt_tmp_t)) { - /** - * base - */ - const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); + const u64 lsz = get_local_size (0); + const u64 bid = get_group_id (0); if (gid >= GID_CNT) return; - /** - * 2nd pbkdf2, creates B - */ + u32 X[STATE_CNT4]; + u32 T[STATE_CNT4]; - u32 w0[4]; - u32 w1[4]; - u32 w2[4]; - u32 w3[4]; + GLOBAL_AS u32 *P = tmps[gid].out + (SALT_REPEAT * STATE_CNT4); - sha256_hmac_ctx_t ctx; + scrypt_smix_loop (P, X, T, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, gid, lid, lsz, bid); +} - sha256_hmac_init_global_swap (&ctx, pws[gid].i, pws[gid].pw_len); +KERNEL_FQ KERNEL_FA void m15700_comp (KERN_ATTR_TMPS_ESALT (scrypt_tmp_t, ethereum_scrypt_t)) +{ + const u64 gid = get_global_id (0); + if (gid >= GID_CNT) return; - for (u32 i = 0; i < SCRYPT_CNT4; i += STATE_CNT4) - { - for (u32 j = 0; j < (STATE_CNT4 * 2); j += 8) - { - uint4 X[4]; + scrypt_blockmix_out (tmps[gid].out, tmps[gid].in, SCRYPT_SZ); - const u32 l = i + j + ((j >= STATE_CNT4) ? (4 - STATE_CNT4) : 0); + u32 out[8]; - X[0] = tmps[gid].P[l + 0]; - X[1] = tmps[gid].P[l + 1]; - X[2] = tmps[gid].P[l + 2]; - X[3] = tmps[gid].P[l + 3]; - - uint4 T[4]; - - #if defined IS_CUDA || defined IS_HIP - T[0] = make_uint4 (X[0].x, X[3].y, X[2].z, X[1].w); - T[1] = make_uint4 (X[1].x, X[0].y, X[3].z, X[2].w); - T[2] = make_uint4 (X[2].x, X[1].y, X[0].z, X[3].w); - T[3] = make_uint4 (X[3].x, X[2].y, X[1].z, X[0].w); - #elif defined IS_METAL - T[0] = uint4 (X[0].x, X[3].y, X[2].z, X[1].w); - T[1] = uint4 (X[1].x, X[0].y, X[3].z, X[2].w); - T[2] = uint4 (X[2].x, X[1].y, X[0].z, X[3].w); - T[3] = uint4 (X[3].x, X[2].y, X[1].z, X[0].w); - #else - T[0] = (uint4) (X[0].x, X[3].y, X[2].z, X[1].w); - T[1] = (uint4) (X[1].x, X[0].y, X[3].z, X[2].w); - T[2] = (uint4) (X[2].x, X[1].y, X[0].z, X[3].w); - T[3] = (uint4) (X[3].x, X[2].y, X[1].z, X[0].w); - #endif - - T[0] = hc_swap32_4 (T[0]); - T[1] = hc_swap32_4 (T[1]); - T[2] = hc_swap32_4 (T[2]); - T[3] = hc_swap32_4 (T[3]); - - w0[0] = T[0].x; - w0[1] = T[0].y; - w0[2] = T[0].z; - w0[3] = T[0].w; - w1[0] = T[1].x; - w1[1] = T[1].y; - w1[2] = T[1].z; - w1[3] = T[1].w; - w2[0] = T[2].x; - w2[1] = T[2].y; - w2[2] = T[2].z; - w2[3] = T[2].w; - w3[0] = T[3].x; - w3[1] = T[3].y; - w3[2] = T[3].z; - w3[3] = T[3].w; - - sha256_hmac_update_64 (&ctx, w0, w1, w2, w3, 64); - } - } - - w0[0] = 1; - w0[1] = 0; - w0[2] = 0; - w0[3] = 0; - w1[0] = 0; - w1[1] = 0; - w1[2] = 0; - w1[3] = 0; - w2[0] = 0; - w2[1] = 0; - w2[2] = 0; - w2[3] = 0; - w3[0] = 0; - w3[1] = 0; - w3[2] = 0; - w3[3] = 0; - - sha256_hmac_update_64 (&ctx, w0, w1, w2, w3, 4); - - sha256_hmac_final (&ctx); + scrypt_pbkdf2_ggp (pws[gid].i, pws[gid].pw_len, tmps[gid].in, SCRYPT_SZ, out, 32); /** * keccak @@ -716,10 +224,10 @@ KERNEL_FQ void m15700_comp (KERN_ATTR_TMPS_ESALT (scrypt_tmp_t, ethereum_scrypt_ u32 key[4]; - key[0] = hc_swap32_S (ctx.opad.h[4]); - key[1] = hc_swap32_S (ctx.opad.h[5]); - key[2] = hc_swap32_S (ctx.opad.h[6]); - key[3] = hc_swap32_S (ctx.opad.h[7]); + key[0] = out[4]; + key[1] = out[5]; + key[2] = out[6]; + key[3] = out[7]; u64 st[25]; diff --git a/OpenCL/m15900-pure.cl b/OpenCL/m15900-pure.cl index 025c50f0d..a5c2ada6b 100644 --- a/OpenCL/m15900-pure.cl +++ b/OpenCL/m15900-pure.cl @@ -109,7 +109,7 @@ DECLSPEC void hmac_sha512_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVA sha512_transform_vector (w0, w1, w2, w3, w4, w5, w6, w7, digest); } -KERNEL_FQ void m15900_init (KERN_ATTR_TMPS_ESALT (dpapimk_tmp_v2_t, dpapimk_t)) +KERNEL_FQ KERNEL_FA void m15900_init (KERN_ATTR_TMPS_ESALT (dpapimk_tmp_v2_t, dpapimk_t)) { /** * base @@ -371,7 +371,7 @@ KERNEL_FQ void m15900_init (KERN_ATTR_TMPS_ESALT (dpapimk_tmp_v2_t, dpapimk_t)) } } -KERNEL_FQ void m15900_loop (KERN_ATTR_TMPS_ESALT (dpapimk_tmp_v2_t, dpapimk_t)) +KERNEL_FQ KERNEL_FA void m15900_loop (KERN_ATTR_TMPS_ESALT (dpapimk_tmp_v2_t, dpapimk_t)) { /** * base @@ -501,7 +501,7 @@ KERNEL_FQ void m15900_loop (KERN_ATTR_TMPS_ESALT (dpapimk_tmp_v2_t, dpapimk_t)) } } -KERNEL_FQ void m15900_comp (KERN_ATTR_TMPS_ESALT (dpapimk_tmp_v2_t, dpapimk_t)) +KERNEL_FQ KERNEL_FA void m15900_comp (KERN_ATTR_TMPS_ESALT (dpapimk_tmp_v2_t, dpapimk_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m15910-pure.cl b/OpenCL/m15910-pure.cl index d9c781911..6f080d699 100644 --- a/OpenCL/m15910-pure.cl +++ b/OpenCL/m15910-pure.cl @@ -159,7 +159,7 @@ DECLSPEC void hmac_sha512_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVA sha512_transform_vector (w0, w1, w2, w3, w4, w5, w6, w7, digest); } -KERNEL_FQ void m15910_init (KERN_ATTR_TMPS_ESALT (dpapimk_tmp_v2_t, dpapimk_t)) +KERNEL_FQ KERNEL_FA void m15910_init (KERN_ATTR_TMPS_ESALT (dpapimk_tmp_v2_t, dpapimk_t)) { /** * base @@ -281,7 +281,7 @@ KERNEL_FQ void m15910_init (KERN_ATTR_TMPS_ESALT (dpapimk_tmp_v2_t, dpapimk_t)) } } -KERNEL_FQ void m15910_loop (KERN_ATTR_TMPS_ESALT (dpapimk_tmp_v2_t, dpapimk_t)) +KERNEL_FQ KERNEL_FA void m15910_loop (KERN_ATTR_TMPS_ESALT (dpapimk_tmp_v2_t, dpapimk_t)) { const u64 gid = get_global_id (0); @@ -387,7 +387,7 @@ KERNEL_FQ void m15910_loop (KERN_ATTR_TMPS_ESALT (dpapimk_tmp_v2_t, dpapimk_t)) } } -KERNEL_FQ void m15910_init2 (KERN_ATTR_TMPS_ESALT (dpapimk_tmp_v2_t, dpapimk_t)) +KERNEL_FQ KERNEL_FA void m15910_init2 (KERN_ATTR_TMPS_ESALT (dpapimk_tmp_v2_t, dpapimk_t)) { /** * base @@ -693,7 +693,7 @@ KERNEL_FQ void m15910_init2 (KERN_ATTR_TMPS_ESALT (dpapimk_tmp_v2_t, dpapimk_t)) } } -KERNEL_FQ void m15910_loop2 (KERN_ATTR_TMPS_ESALT (dpapimk_tmp_v2_t, dpapimk_t)) +KERNEL_FQ KERNEL_FA void m15910_loop2 (KERN_ATTR_TMPS_ESALT (dpapimk_tmp_v2_t, dpapimk_t)) { /** * base @@ -823,7 +823,7 @@ KERNEL_FQ void m15910_loop2 (KERN_ATTR_TMPS_ESALT (dpapimk_tmp_v2_t, dpapimk_t)) } } -KERNEL_FQ void m15910_comp (KERN_ATTR_TMPS_ESALT (dpapimk_tmp_v2_t, dpapimk_t)) +KERNEL_FQ KERNEL_FA void m15910_comp (KERN_ATTR_TMPS_ESALT (dpapimk_tmp_v2_t, dpapimk_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m16000_a0-pure.cl b/OpenCL/m16000_a0-pure.cl index 9abeee3ce..5207544fd 100644 --- a/OpenCL/m16000_a0-pure.cl +++ b/OpenCL/m16000_a0-pure.cl @@ -494,7 +494,7 @@ DECLSPEC void _des_crypt_encrypt (PRIVATE_AS u32 *iv, u32 mask, PRIVATE_AS u32x iv[1] = hc_rotl32 (l, 31); } -KERNEL_FQ void m16000_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m16000_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -587,7 +587,7 @@ KERNEL_FQ void m16000_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m16000_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m16000_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m16000_a1-pure.cl b/OpenCL/m16000_a1-pure.cl index e076a5f24..1ac5c55e0 100644 --- a/OpenCL/m16000_a1-pure.cl +++ b/OpenCL/m16000_a1-pure.cl @@ -492,7 +492,7 @@ DECLSPEC void _des_crypt_encrypt (PRIVATE_AS u32 *iv, u32 mask, PRIVATE_AS u32x iv[1] = hc_rotl32 (l, 31); } -KERNEL_FQ void m16000_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m16000_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -664,7 +664,7 @@ KERNEL_FQ void m16000_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m16000_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m16000_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m16000_a3-pure.cl b/OpenCL/m16000_a3-pure.cl index 25d1cf776..cea8b57fa 100644 --- a/OpenCL/m16000_a3-pure.cl +++ b/OpenCL/m16000_a3-pure.cl @@ -492,7 +492,7 @@ DECLSPEC void _des_crypt_encrypt (PRIVATE_AS u32 *iv, u32 mask, PRIVATE_AS u32x iv[1] = hc_rotl32 (l, 31); } -KERNEL_FQ void m16000_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m16000_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -613,7 +613,7 @@ KERNEL_FQ void m16000_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m16000_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m16000_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m16100_a0-optimized.cl b/OpenCL/m16100_a0-optimized.cl index 8e068c96b..d808d97e2 100644 --- a/OpenCL/m16100_a0-optimized.cl +++ b/OpenCL/m16100_a0-optimized.cl @@ -27,7 +27,7 @@ typedef struct tacacs_plus } tacacs_plus_t; -KERNEL_FQ void m16100_m04 (KERN_ATTR_RULES_ESALT (tacacs_plus_t)) +KERNEL_FQ KERNEL_FA void m16100_m04 (KERN_ATTR_RULES_ESALT (tacacs_plus_t)) { /** * modifier @@ -304,15 +304,15 @@ KERNEL_FQ void m16100_m04 (KERN_ATTR_RULES_ESALT (tacacs_plus_t)) } } -KERNEL_FQ void m16100_m08 (KERN_ATTR_RULES_ESALT (tacacs_plus_t)) +KERNEL_FQ KERNEL_FA void m16100_m08 (KERN_ATTR_RULES_ESALT (tacacs_plus_t)) { } -KERNEL_FQ void m16100_m16 (KERN_ATTR_RULES_ESALT (tacacs_plus_t)) +KERNEL_FQ KERNEL_FA void m16100_m16 (KERN_ATTR_RULES_ESALT (tacacs_plus_t)) { } -KERNEL_FQ void m16100_s04 (KERN_ATTR_RULES_ESALT (tacacs_plus_t)) +KERNEL_FQ KERNEL_FA void m16100_s04 (KERN_ATTR_RULES_ESALT (tacacs_plus_t)) { /** * modifier @@ -589,10 +589,10 @@ KERNEL_FQ void m16100_s04 (KERN_ATTR_RULES_ESALT (tacacs_plus_t)) } } -KERNEL_FQ void m16100_s08 (KERN_ATTR_RULES_ESALT (tacacs_plus_t)) +KERNEL_FQ KERNEL_FA void m16100_s08 (KERN_ATTR_RULES_ESALT (tacacs_plus_t)) { } -KERNEL_FQ void m16100_s16 (KERN_ATTR_RULES_ESALT (tacacs_plus_t)) +KERNEL_FQ KERNEL_FA void m16100_s16 (KERN_ATTR_RULES_ESALT (tacacs_plus_t)) { } diff --git a/OpenCL/m16100_a0-pure.cl b/OpenCL/m16100_a0-pure.cl index 24e0289d9..ebc316e9c 100644 --- a/OpenCL/m16100_a0-pure.cl +++ b/OpenCL/m16100_a0-pure.cl @@ -27,7 +27,7 @@ typedef struct tacacs_plus } tacacs_plus_t; -KERNEL_FQ void m16100_mxx (KERN_ATTR_RULES_ESALT (tacacs_plus_t)) +KERNEL_FQ KERNEL_FA void m16100_mxx (KERN_ATTR_RULES_ESALT (tacacs_plus_t)) { /** * modifier @@ -189,7 +189,7 @@ KERNEL_FQ void m16100_mxx (KERN_ATTR_RULES_ESALT (tacacs_plus_t)) } } -KERNEL_FQ void m16100_sxx (KERN_ATTR_RULES_ESALT (tacacs_plus_t)) +KERNEL_FQ KERNEL_FA void m16100_sxx (KERN_ATTR_RULES_ESALT (tacacs_plus_t)) { /** * modifier diff --git a/OpenCL/m16100_a1-optimized.cl b/OpenCL/m16100_a1-optimized.cl index b950b2a41..8de440e95 100644 --- a/OpenCL/m16100_a1-optimized.cl +++ b/OpenCL/m16100_a1-optimized.cl @@ -25,7 +25,7 @@ typedef struct tacacs_plus } tacacs_plus_t; -KERNEL_FQ void m16100_m04 (KERN_ATTR_ESALT (tacacs_plus_t)) +KERNEL_FQ KERNEL_FA void m16100_m04 (KERN_ATTR_ESALT (tacacs_plus_t)) { /** * modifier @@ -363,15 +363,15 @@ KERNEL_FQ void m16100_m04 (KERN_ATTR_ESALT (tacacs_plus_t)) } } -KERNEL_FQ void m16100_m08 (KERN_ATTR_ESALT (tacacs_plus_t)) +KERNEL_FQ KERNEL_FA void m16100_m08 (KERN_ATTR_ESALT (tacacs_plus_t)) { } -KERNEL_FQ void m16100_m16 (KERN_ATTR_ESALT (tacacs_plus_t)) +KERNEL_FQ KERNEL_FA void m16100_m16 (KERN_ATTR_ESALT (tacacs_plus_t)) { } -KERNEL_FQ void m16100_s04 (KERN_ATTR_ESALT (tacacs_plus_t)) +KERNEL_FQ KERNEL_FA void m16100_s04 (KERN_ATTR_ESALT (tacacs_plus_t)) { /** * modifier @@ -709,10 +709,10 @@ KERNEL_FQ void m16100_s04 (KERN_ATTR_ESALT (tacacs_plus_t)) } } -KERNEL_FQ void m16100_s08 (KERN_ATTR_ESALT (tacacs_plus_t)) +KERNEL_FQ KERNEL_FA void m16100_s08 (KERN_ATTR_ESALT (tacacs_plus_t)) { } -KERNEL_FQ void m16100_s16 (KERN_ATTR_ESALT (tacacs_plus_t)) +KERNEL_FQ KERNEL_FA void m16100_s16 (KERN_ATTR_ESALT (tacacs_plus_t)) { } diff --git a/OpenCL/m16100_a1-pure.cl b/OpenCL/m16100_a1-pure.cl index d27663ec2..7470968f8 100644 --- a/OpenCL/m16100_a1-pure.cl +++ b/OpenCL/m16100_a1-pure.cl @@ -24,7 +24,7 @@ typedef struct tacacs_plus } tacacs_plus_t; -KERNEL_FQ void m16100_mxx (KERN_ATTR_ESALT (tacacs_plus_t)) +KERNEL_FQ KERNEL_FA void m16100_mxx (KERN_ATTR_ESALT (tacacs_plus_t)) { /** * modifier @@ -182,7 +182,7 @@ KERNEL_FQ void m16100_mxx (KERN_ATTR_ESALT (tacacs_plus_t)) } } -KERNEL_FQ void m16100_sxx (KERN_ATTR_ESALT (tacacs_plus_t)) +KERNEL_FQ KERNEL_FA void m16100_sxx (KERN_ATTR_ESALT (tacacs_plus_t)) { /** * modifier diff --git a/OpenCL/m16100_a3-optimized.cl b/OpenCL/m16100_a3-optimized.cl index 9353f977d..ccd88c0e1 100644 --- a/OpenCL/m16100_a3-optimized.cl +++ b/OpenCL/m16100_a3-optimized.cl @@ -525,7 +525,7 @@ DECLSPEC void m16100s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m16100_m04 (KERN_ATTR_ESALT (tacacs_plus_t)) +KERNEL_FQ KERNEL_FA void m16100_m04 (KERN_ATTR_ESALT (tacacs_plus_t)) { /** * base @@ -574,7 +574,7 @@ KERNEL_FQ void m16100_m04 (KERN_ATTR_ESALT (tacacs_plus_t)) m16100m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m16100_m08 (KERN_ATTR_ESALT (tacacs_plus_t)) +KERNEL_FQ KERNEL_FA void m16100_m08 (KERN_ATTR_ESALT (tacacs_plus_t)) { /** * base @@ -623,7 +623,7 @@ KERNEL_FQ void m16100_m08 (KERN_ATTR_ESALT (tacacs_plus_t)) m16100m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m16100_m16 (KERN_ATTR_ESALT (tacacs_plus_t)) +KERNEL_FQ KERNEL_FA void m16100_m16 (KERN_ATTR_ESALT (tacacs_plus_t)) { /** * base @@ -672,7 +672,7 @@ KERNEL_FQ void m16100_m16 (KERN_ATTR_ESALT (tacacs_plus_t)) m16100m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m16100_s04 (KERN_ATTR_ESALT (tacacs_plus_t)) +KERNEL_FQ KERNEL_FA void m16100_s04 (KERN_ATTR_ESALT (tacacs_plus_t)) { /** * base @@ -721,7 +721,7 @@ KERNEL_FQ void m16100_s04 (KERN_ATTR_ESALT (tacacs_plus_t)) m16100s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m16100_s08 (KERN_ATTR_ESALT (tacacs_plus_t)) +KERNEL_FQ KERNEL_FA void m16100_s08 (KERN_ATTR_ESALT (tacacs_plus_t)) { /** * base @@ -770,7 +770,7 @@ KERNEL_FQ void m16100_s08 (KERN_ATTR_ESALT (tacacs_plus_t)) m16100s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m16100_s16 (KERN_ATTR_ESALT (tacacs_plus_t)) +KERNEL_FQ KERNEL_FA void m16100_s16 (KERN_ATTR_ESALT (tacacs_plus_t)) { /** * base diff --git a/OpenCL/m16100_a3-pure.cl b/OpenCL/m16100_a3-pure.cl index a55774438..9908831c5 100644 --- a/OpenCL/m16100_a3-pure.cl +++ b/OpenCL/m16100_a3-pure.cl @@ -24,7 +24,7 @@ typedef struct tacacs_plus } tacacs_plus_t; -KERNEL_FQ void m16100_mxx (KERN_ATTR_VECTOR_ESALT (tacacs_plus_t)) +KERNEL_FQ KERNEL_FA void m16100_mxx (KERN_ATTR_VECTOR_ESALT (tacacs_plus_t)) { /** * modifier @@ -199,7 +199,7 @@ KERNEL_FQ void m16100_mxx (KERN_ATTR_VECTOR_ESALT (tacacs_plus_t)) } } -KERNEL_FQ void m16100_sxx (KERN_ATTR_VECTOR_ESALT (tacacs_plus_t)) +KERNEL_FQ KERNEL_FA void m16100_sxx (KERN_ATTR_VECTOR_ESALT (tacacs_plus_t)) { /** * modifier diff --git a/OpenCL/m16200-pure.cl b/OpenCL/m16200-pure.cl index 85cc819b3..5bb9e772d 100644 --- a/OpenCL/m16200-pure.cl +++ b/OpenCL/m16200-pure.cl @@ -79,7 +79,7 @@ DECLSPEC void hmac_sha256_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVA sha256_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m16200_init (KERN_ATTR_TMPS_ESALT (apple_secure_notes_tmp_t, apple_secure_notes_t)) +KERNEL_FQ KERNEL_FA void m16200_init (KERN_ATTR_TMPS_ESALT (apple_secure_notes_tmp_t, apple_secure_notes_t)) { /** * base @@ -163,7 +163,7 @@ KERNEL_FQ void m16200_init (KERN_ATTR_TMPS_ESALT (apple_secure_notes_tmp_t, appl } } -KERNEL_FQ void m16200_loop (KERN_ATTR_TMPS_ESALT (apple_secure_notes_tmp_t, apple_secure_notes_t)) +KERNEL_FQ KERNEL_FA void m16200_loop (KERN_ATTR_TMPS_ESALT (apple_secure_notes_tmp_t, apple_secure_notes_t)) { const u64 gid = get_global_id (0); @@ -269,7 +269,7 @@ KERNEL_FQ void m16200_loop (KERN_ATTR_TMPS_ESALT (apple_secure_notes_tmp_t, appl } } -KERNEL_FQ void m16200_comp (KERN_ATTR_TMPS_ESALT (apple_secure_notes_tmp_t, apple_secure_notes_t)) +KERNEL_FQ KERNEL_FA void m16200_comp (KERN_ATTR_TMPS_ESALT (apple_secure_notes_tmp_t, apple_secure_notes_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m16300-pure.cl b/OpenCL/m16300-pure.cl index 2ec4c9152..a65cac579 100644 --- a/OpenCL/m16300-pure.cl +++ b/OpenCL/m16300-pure.cl @@ -207,7 +207,7 @@ DECLSPEC void hmac_sha256_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVA sha256_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m16300_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, ethereum_presale_t)) +KERNEL_FQ KERNEL_FA void m16300_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, ethereum_presale_t)) { /** * base @@ -291,7 +291,7 @@ KERNEL_FQ void m16300_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, ethereum_ } } -KERNEL_FQ void m16300_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, ethereum_presale_t)) +KERNEL_FQ KERNEL_FA void m16300_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, ethereum_presale_t)) { const u64 gid = get_global_id (0); @@ -397,7 +397,7 @@ KERNEL_FQ void m16300_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, ethereum_ } } -KERNEL_FQ void m16300_comp (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, ethereum_presale_t)) +KERNEL_FQ KERNEL_FA void m16300_comp (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, ethereum_presale_t)) { /** * base diff --git a/OpenCL/m16400_a0-optimized.cl b/OpenCL/m16400_a0-optimized.cl index f7c254928..b863b036d 100644 --- a/OpenCL/m16400_a0-optimized.cl +++ b/OpenCL/m16400_a0-optimized.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m16400_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m16400_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -155,15 +155,15 @@ KERNEL_FQ void m16400_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m16400_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m16400_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m16400_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m16400_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m16400_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m16400_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -317,10 +317,10 @@ KERNEL_FQ void m16400_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m16400_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m16400_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m16400_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m16400_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m16400_a0-pure.cl b/OpenCL/m16400_a0-pure.cl index 59e4dc2d5..af25ddee5 100644 --- a/OpenCL/m16400_a0-pure.cl +++ b/OpenCL/m16400_a0-pure.cl @@ -176,7 +176,7 @@ DECLSPEC void cram_md5_final (PRIVATE_AS md5_ctx_t *ctx) cram_md5_transform (ctx->w0, ctx->w1, ctx->w2, ctx->w3, ctx->h); } -KERNEL_FQ void m16400_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m16400_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -220,7 +220,7 @@ KERNEL_FQ void m16400_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m16400_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m16400_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m16400_a1-optimized.cl b/OpenCL/m16400_a1-optimized.cl index 3fbb16a87..da143dbe6 100644 --- a/OpenCL/m16400_a1-optimized.cl +++ b/OpenCL/m16400_a1-optimized.cl @@ -15,7 +15,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m16400_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m16400_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -201,15 +201,15 @@ KERNEL_FQ void m16400_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m16400_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m16400_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m16400_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m16400_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m16400_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m16400_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -410,10 +410,10 @@ KERNEL_FQ void m16400_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m16400_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m16400_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m16400_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m16400_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m16400_a1-pure.cl b/OpenCL/m16400_a1-pure.cl index 18b460d81..3247cc36b 100644 --- a/OpenCL/m16400_a1-pure.cl +++ b/OpenCL/m16400_a1-pure.cl @@ -174,7 +174,7 @@ DECLSPEC void cram_md5_final (PRIVATE_AS md5_ctx_t *ctx) cram_md5_transform (ctx->w0, ctx->w1, ctx->w2, ctx->w3, ctx->h); } -KERNEL_FQ void m16400_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m16400_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -216,7 +216,7 @@ KERNEL_FQ void m16400_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m16400_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m16400_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m16400_a3-optimized.cl b/OpenCL/m16400_a3-optimized.cl index d51ac6319..366664c42 100644 --- a/OpenCL/m16400_a3-optimized.cl +++ b/OpenCL/m16400_a3-optimized.cl @@ -463,7 +463,7 @@ DECLSPEC void m16400s (PRIVATE_AS u32 *w, const u32 pw_len, KERN_ATTR_FUNC_VECTO } } -KERNEL_FQ void m16400_m04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m16400_m04 (KERN_ATTR_VECTOR ()) { /** * base @@ -503,7 +503,7 @@ KERNEL_FQ void m16400_m04 (KERN_ATTR_VECTOR ()) m16400m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m16400_m08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m16400_m08 (KERN_ATTR_VECTOR ()) { /** * base @@ -543,7 +543,7 @@ KERNEL_FQ void m16400_m08 (KERN_ATTR_VECTOR ()) m16400m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m16400_m16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m16400_m16 (KERN_ATTR_VECTOR ()) { /** * base @@ -583,7 +583,7 @@ KERNEL_FQ void m16400_m16 (KERN_ATTR_VECTOR ()) m16400m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m16400_s04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m16400_s04 (KERN_ATTR_VECTOR ()) { /** * base @@ -623,7 +623,7 @@ KERNEL_FQ void m16400_s04 (KERN_ATTR_VECTOR ()) m16400s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m16400_s08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m16400_s08 (KERN_ATTR_VECTOR ()) { /** * base @@ -663,7 +663,7 @@ KERNEL_FQ void m16400_s08 (KERN_ATTR_VECTOR ()) m16400s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m16400_s16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m16400_s16 (KERN_ATTR_VECTOR ()) { /** * base diff --git a/OpenCL/m16400_a3-pure.cl b/OpenCL/m16400_a3-pure.cl index d6c5bcb49..acc6ab6f6 100644 --- a/OpenCL/m16400_a3-pure.cl +++ b/OpenCL/m16400_a3-pure.cl @@ -175,7 +175,7 @@ DECLSPEC void cram_md5_final_vector (PRIVATE_AS md5_ctx_vector_t *ctx) cram_md5_transform_vector (ctx->w0, ctx->w1, ctx->w2, ctx->w3, ctx->h); } -KERNEL_FQ void m16400_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m16400_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -230,7 +230,7 @@ KERNEL_FQ void m16400_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m16400_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m16400_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m16511_a0-pure.cl b/OpenCL/m16511_a0-pure.cl index cce108270..d84519877 100644 --- a/OpenCL/m16511_a0-pure.cl +++ b/OpenCL/m16511_a0-pure.cl @@ -25,7 +25,7 @@ typedef struct jwt } jwt_t; -KERNEL_FQ void m16511_mxx (KERN_ATTR_RULES_ESALT (jwt_t)) +KERNEL_FQ KERNEL_FA void m16511_mxx (KERN_ATTR_RULES_ESALT (jwt_t)) { /** * modifier @@ -69,7 +69,7 @@ KERNEL_FQ void m16511_mxx (KERN_ATTR_RULES_ESALT (jwt_t)) } } -KERNEL_FQ void m16511_sxx (KERN_ATTR_RULES_ESALT (jwt_t)) +KERNEL_FQ KERNEL_FA void m16511_sxx (KERN_ATTR_RULES_ESALT (jwt_t)) { /** * modifier diff --git a/OpenCL/m16511_a1-pure.cl b/OpenCL/m16511_a1-pure.cl index 022548e40..39f466d11 100644 --- a/OpenCL/m16511_a1-pure.cl +++ b/OpenCL/m16511_a1-pure.cl @@ -23,7 +23,7 @@ typedef struct jwt } jwt_t; -KERNEL_FQ void m16511_mxx (KERN_ATTR_ESALT (jwt_t)) +KERNEL_FQ KERNEL_FA void m16511_mxx (KERN_ATTR_ESALT (jwt_t)) { /** * modifier @@ -92,7 +92,7 @@ KERNEL_FQ void m16511_mxx (KERN_ATTR_ESALT (jwt_t)) } } -KERNEL_FQ void m16511_sxx (KERN_ATTR_ESALT (jwt_t)) +KERNEL_FQ KERNEL_FA void m16511_sxx (KERN_ATTR_ESALT (jwt_t)) { /** * modifier diff --git a/OpenCL/m16511_a3-pure.cl b/OpenCL/m16511_a3-pure.cl index aebd2dead..a2ee8414f 100644 --- a/OpenCL/m16511_a3-pure.cl +++ b/OpenCL/m16511_a3-pure.cl @@ -23,7 +23,7 @@ typedef struct jwt } jwt_t; -KERNEL_FQ void m16511_mxx (KERN_ATTR_VECTOR_ESALT (jwt_t)) +KERNEL_FQ KERNEL_FA void m16511_mxx (KERN_ATTR_VECTOR_ESALT (jwt_t)) { /** * modifier @@ -78,7 +78,7 @@ KERNEL_FQ void m16511_mxx (KERN_ATTR_VECTOR_ESALT (jwt_t)) } } -KERNEL_FQ void m16511_sxx (KERN_ATTR_VECTOR_ESALT (jwt_t)) +KERNEL_FQ KERNEL_FA void m16511_sxx (KERN_ATTR_VECTOR_ESALT (jwt_t)) { /** * modifier diff --git a/OpenCL/m16512_a0-pure.cl b/OpenCL/m16512_a0-pure.cl index 9f612b6e4..89e87de4f 100644 --- a/OpenCL/m16512_a0-pure.cl +++ b/OpenCL/m16512_a0-pure.cl @@ -25,7 +25,7 @@ typedef struct jwt } jwt_t; -KERNEL_FQ void m16512_mxx (KERN_ATTR_RULES_ESALT (jwt_t)) +KERNEL_FQ KERNEL_FA void m16512_mxx (KERN_ATTR_RULES_ESALT (jwt_t)) { /** * modifier @@ -69,7 +69,7 @@ KERNEL_FQ void m16512_mxx (KERN_ATTR_RULES_ESALT (jwt_t)) } } -KERNEL_FQ void m16512_sxx (KERN_ATTR_RULES_ESALT (jwt_t)) +KERNEL_FQ KERNEL_FA void m16512_sxx (KERN_ATTR_RULES_ESALT (jwt_t)) { /** * modifier diff --git a/OpenCL/m16512_a1-pure.cl b/OpenCL/m16512_a1-pure.cl index 857bf28da..a55529392 100644 --- a/OpenCL/m16512_a1-pure.cl +++ b/OpenCL/m16512_a1-pure.cl @@ -23,7 +23,7 @@ typedef struct jwt } jwt_t; -KERNEL_FQ void m16512_mxx (KERN_ATTR_ESALT (jwt_t)) +KERNEL_FQ KERNEL_FA void m16512_mxx (KERN_ATTR_ESALT (jwt_t)) { /** * modifier @@ -92,7 +92,7 @@ KERNEL_FQ void m16512_mxx (KERN_ATTR_ESALT (jwt_t)) } } -KERNEL_FQ void m16512_sxx (KERN_ATTR_ESALT (jwt_t)) +KERNEL_FQ KERNEL_FA void m16512_sxx (KERN_ATTR_ESALT (jwt_t)) { /** * modifier diff --git a/OpenCL/m16512_a3-pure.cl b/OpenCL/m16512_a3-pure.cl index f89e03844..34aab0b2c 100644 --- a/OpenCL/m16512_a3-pure.cl +++ b/OpenCL/m16512_a3-pure.cl @@ -23,7 +23,7 @@ typedef struct jwt } jwt_t; -KERNEL_FQ void m16512_mxx (KERN_ATTR_VECTOR_ESALT (jwt_t)) +KERNEL_FQ KERNEL_FA void m16512_mxx (KERN_ATTR_VECTOR_ESALT (jwt_t)) { /** * modifier @@ -78,7 +78,7 @@ KERNEL_FQ void m16512_mxx (KERN_ATTR_VECTOR_ESALT (jwt_t)) } } -KERNEL_FQ void m16512_sxx (KERN_ATTR_VECTOR_ESALT (jwt_t)) +KERNEL_FQ KERNEL_FA void m16512_sxx (KERN_ATTR_VECTOR_ESALT (jwt_t)) { /** * modifier diff --git a/OpenCL/m16513_a0-pure.cl b/OpenCL/m16513_a0-pure.cl index 2eed0e12a..733070149 100644 --- a/OpenCL/m16513_a0-pure.cl +++ b/OpenCL/m16513_a0-pure.cl @@ -25,7 +25,7 @@ typedef struct jwt } jwt_t; -KERNEL_FQ void m16513_mxx (KERN_ATTR_RULES_ESALT (jwt_t)) +KERNEL_FQ KERNEL_FA void m16513_mxx (KERN_ATTR_RULES_ESALT (jwt_t)) { /** * modifier @@ -69,7 +69,7 @@ KERNEL_FQ void m16513_mxx (KERN_ATTR_RULES_ESALT (jwt_t)) } } -KERNEL_FQ void m16513_sxx (KERN_ATTR_RULES_ESALT (jwt_t)) +KERNEL_FQ KERNEL_FA void m16513_sxx (KERN_ATTR_RULES_ESALT (jwt_t)) { /** * modifier diff --git a/OpenCL/m16513_a1-pure.cl b/OpenCL/m16513_a1-pure.cl index 53fd8f41f..4159757b4 100644 --- a/OpenCL/m16513_a1-pure.cl +++ b/OpenCL/m16513_a1-pure.cl @@ -23,7 +23,7 @@ typedef struct jwt } jwt_t; -KERNEL_FQ void m16513_mxx (KERN_ATTR_ESALT (jwt_t)) +KERNEL_FQ KERNEL_FA void m16513_mxx (KERN_ATTR_ESALT (jwt_t)) { /** * modifier @@ -92,7 +92,7 @@ KERNEL_FQ void m16513_mxx (KERN_ATTR_ESALT (jwt_t)) } } -KERNEL_FQ void m16513_sxx (KERN_ATTR_ESALT (jwt_t)) +KERNEL_FQ KERNEL_FA void m16513_sxx (KERN_ATTR_ESALT (jwt_t)) { /** * modifier diff --git a/OpenCL/m16513_a3-pure.cl b/OpenCL/m16513_a3-pure.cl index f3f9bbd1e..56c7f5444 100644 --- a/OpenCL/m16513_a3-pure.cl +++ b/OpenCL/m16513_a3-pure.cl @@ -23,7 +23,7 @@ typedef struct jwt } jwt_t; -KERNEL_FQ void m16513_mxx (KERN_ATTR_VECTOR_ESALT (jwt_t)) +KERNEL_FQ KERNEL_FA void m16513_mxx (KERN_ATTR_VECTOR_ESALT (jwt_t)) { /** * modifier @@ -78,7 +78,7 @@ KERNEL_FQ void m16513_mxx (KERN_ATTR_VECTOR_ESALT (jwt_t)) } } -KERNEL_FQ void m16513_sxx (KERN_ATTR_VECTOR_ESALT (jwt_t)) +KERNEL_FQ KERNEL_FA void m16513_sxx (KERN_ATTR_VECTOR_ESALT (jwt_t)) { /** * modifier diff --git a/OpenCL/m16600_a0-optimized.cl b/OpenCL/m16600_a0-optimized.cl index 27842d1c8..1d3b4871f 100644 --- a/OpenCL/m16600_a0-optimized.cl +++ b/OpenCL/m16600_a0-optimized.cl @@ -25,7 +25,7 @@ typedef struct electrum_wallet } electrum_wallet_t; -KERNEL_FQ void m16600_m04 (KERN_ATTR_RULES_ESALT (electrum_wallet_t)) +KERNEL_FQ KERNEL_FA void m16600_m04 (KERN_ATTR_RULES_ESALT (electrum_wallet_t)) { /** * base @@ -429,15 +429,15 @@ KERNEL_FQ void m16600_m04 (KERN_ATTR_RULES_ESALT (electrum_wallet_t)) } } -KERNEL_FQ void m16600_m08 (KERN_ATTR_RULES_ESALT (electrum_wallet_t)) +KERNEL_FQ KERNEL_FA void m16600_m08 (KERN_ATTR_RULES_ESALT (electrum_wallet_t)) { } -KERNEL_FQ void m16600_m16 (KERN_ATTR_RULES_ESALT (electrum_wallet_t)) +KERNEL_FQ KERNEL_FA void m16600_m16 (KERN_ATTR_RULES_ESALT (electrum_wallet_t)) { } -KERNEL_FQ void m16600_s04 (KERN_ATTR_RULES_ESALT (electrum_wallet_t)) +KERNEL_FQ KERNEL_FA void m16600_s04 (KERN_ATTR_RULES_ESALT (electrum_wallet_t)) { /** * base @@ -841,10 +841,10 @@ KERNEL_FQ void m16600_s04 (KERN_ATTR_RULES_ESALT (electrum_wallet_t)) } } -KERNEL_FQ void m16600_s08 (KERN_ATTR_RULES_ESALT (electrum_wallet_t)) +KERNEL_FQ KERNEL_FA void m16600_s08 (KERN_ATTR_RULES_ESALT (electrum_wallet_t)) { } -KERNEL_FQ void m16600_s16 (KERN_ATTR_RULES_ESALT (electrum_wallet_t)) +KERNEL_FQ KERNEL_FA void m16600_s16 (KERN_ATTR_RULES_ESALT (electrum_wallet_t)) { } diff --git a/OpenCL/m16600_a0-pure.cl b/OpenCL/m16600_a0-pure.cl index c13319564..40655d3b6 100644 --- a/OpenCL/m16600_a0-pure.cl +++ b/OpenCL/m16600_a0-pure.cl @@ -25,7 +25,7 @@ typedef struct electrum_wallet } electrum_wallet_t; -KERNEL_FQ void m16600_mxx (KERN_ATTR_RULES_ESALT (electrum_wallet_t)) +KERNEL_FQ KERNEL_FA void m16600_mxx (KERN_ATTR_RULES_ESALT (electrum_wallet_t)) { /** * base @@ -243,7 +243,7 @@ KERNEL_FQ void m16600_mxx (KERN_ATTR_RULES_ESALT (electrum_wallet_t)) } } -KERNEL_FQ void m16600_sxx (KERN_ATTR_RULES_ESALT (electrum_wallet_t)) +KERNEL_FQ KERNEL_FA void m16600_sxx (KERN_ATTR_RULES_ESALT (electrum_wallet_t)) { /** * base diff --git a/OpenCL/m16600_a1-optimized.cl b/OpenCL/m16600_a1-optimized.cl index 9ee0b7b85..0a51cd748 100644 --- a/OpenCL/m16600_a1-optimized.cl +++ b/OpenCL/m16600_a1-optimized.cl @@ -23,7 +23,7 @@ typedef struct electrum_wallet } electrum_wallet_t; -KERNEL_FQ void m16600_m04 (KERN_ATTR_ESALT (electrum_wallet_t)) +KERNEL_FQ KERNEL_FA void m16600_m04 (KERN_ATTR_ESALT (electrum_wallet_t)) { /** * base @@ -485,15 +485,15 @@ KERNEL_FQ void m16600_m04 (KERN_ATTR_ESALT (electrum_wallet_t)) } } -KERNEL_FQ void m16600_m08 (KERN_ATTR_ESALT (electrum_wallet_t)) +KERNEL_FQ KERNEL_FA void m16600_m08 (KERN_ATTR_ESALT (electrum_wallet_t)) { } -KERNEL_FQ void m16600_m16 (KERN_ATTR_ESALT (electrum_wallet_t)) +KERNEL_FQ KERNEL_FA void m16600_m16 (KERN_ATTR_ESALT (electrum_wallet_t)) { } -KERNEL_FQ void m16600_s04 (KERN_ATTR_ESALT (electrum_wallet_t)) +KERNEL_FQ KERNEL_FA void m16600_s04 (KERN_ATTR_ESALT (electrum_wallet_t)) { /** * base @@ -955,10 +955,10 @@ KERNEL_FQ void m16600_s04 (KERN_ATTR_ESALT (electrum_wallet_t)) } } -KERNEL_FQ void m16600_s08 (KERN_ATTR_ESALT (electrum_wallet_t)) +KERNEL_FQ KERNEL_FA void m16600_s08 (KERN_ATTR_ESALT (electrum_wallet_t)) { } -KERNEL_FQ void m16600_s16 (KERN_ATTR_ESALT (electrum_wallet_t)) +KERNEL_FQ KERNEL_FA void m16600_s16 (KERN_ATTR_ESALT (electrum_wallet_t)) { } diff --git a/OpenCL/m16600_a1-pure.cl b/OpenCL/m16600_a1-pure.cl index b62608b09..b654820c4 100644 --- a/OpenCL/m16600_a1-pure.cl +++ b/OpenCL/m16600_a1-pure.cl @@ -23,7 +23,7 @@ typedef struct electrum_wallet } electrum_wallet_t; -KERNEL_FQ void m16600_mxx (KERN_ATTR_ESALT (electrum_wallet_t)) +KERNEL_FQ KERNEL_FA void m16600_mxx (KERN_ATTR_ESALT (electrum_wallet_t)) { /** * base @@ -239,7 +239,7 @@ KERNEL_FQ void m16600_mxx (KERN_ATTR_ESALT (electrum_wallet_t)) } } -KERNEL_FQ void m16600_sxx (KERN_ATTR_ESALT (electrum_wallet_t)) +KERNEL_FQ KERNEL_FA void m16600_sxx (KERN_ATTR_ESALT (electrum_wallet_t)) { /** * base diff --git a/OpenCL/m16600_a3-optimized.cl b/OpenCL/m16600_a3-optimized.cl index b12391b6e..45760ab33 100644 --- a/OpenCL/m16600_a3-optimized.cl +++ b/OpenCL/m16600_a3-optimized.cl @@ -204,7 +204,7 @@ DECLSPEC void m16600 (SHM_TYPE u32a *s_te0, SHM_TYPE u32a *s_te1, SHM_TYPE u32a } } -KERNEL_FQ void m16600_m04 (KERN_ATTR_ESALT (electrum_wallet_t)) +KERNEL_FQ KERNEL_FA void m16600_m04 (KERN_ATTR_ESALT (electrum_wallet_t)) { /** * base @@ -299,7 +299,7 @@ KERNEL_FQ void m16600_m04 (KERN_ATTR_ESALT (electrum_wallet_t)) m16600 (s_te0, s_te1, s_te2, s_te3, s_te4, s_td0, s_td1, s_td2, s_td3, s_td4, w, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m16600_m08 (KERN_ATTR_ESALT (electrum_wallet_t)) +KERNEL_FQ KERNEL_FA void m16600_m08 (KERN_ATTR_ESALT (electrum_wallet_t)) { /** * base @@ -394,7 +394,7 @@ KERNEL_FQ void m16600_m08 (KERN_ATTR_ESALT (electrum_wallet_t)) m16600 (s_te0, s_te1, s_te2, s_te3, s_te4, s_td0, s_td1, s_td2, s_td3, s_td4, w, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m16600_m16 (KERN_ATTR_ESALT (electrum_wallet_t)) +KERNEL_FQ KERNEL_FA void m16600_m16 (KERN_ATTR_ESALT (electrum_wallet_t)) { /** * base @@ -489,7 +489,7 @@ KERNEL_FQ void m16600_m16 (KERN_ATTR_ESALT (electrum_wallet_t)) m16600 (s_te0, s_te1, s_te2, s_te3, s_te4, s_td0, s_td1, s_td2, s_td3, s_td4, w, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m16600_s04 (KERN_ATTR_ESALT (electrum_wallet_t)) +KERNEL_FQ KERNEL_FA void m16600_s04 (KERN_ATTR_ESALT (electrum_wallet_t)) { /** * base @@ -584,7 +584,7 @@ KERNEL_FQ void m16600_s04 (KERN_ATTR_ESALT (electrum_wallet_t)) m16600 (s_te0, s_te1, s_te2, s_te3, s_te4, s_td0, s_td1, s_td2, s_td3, s_td4, w, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m16600_s08 (KERN_ATTR_ESALT (electrum_wallet_t)) +KERNEL_FQ KERNEL_FA void m16600_s08 (KERN_ATTR_ESALT (electrum_wallet_t)) { /** * base @@ -679,7 +679,7 @@ KERNEL_FQ void m16600_s08 (KERN_ATTR_ESALT (electrum_wallet_t)) m16600 (s_te0, s_te1, s_te2, s_te3, s_te4, s_td0, s_td1, s_td2, s_td3, s_td4, w, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m16600_s16 (KERN_ATTR_ESALT (electrum_wallet_t)) +KERNEL_FQ KERNEL_FA void m16600_s16 (KERN_ATTR_ESALT (electrum_wallet_t)) { /** * base diff --git a/OpenCL/m16600_a3-pure.cl b/OpenCL/m16600_a3-pure.cl index 906a4b56a..a611b6759 100644 --- a/OpenCL/m16600_a3-pure.cl +++ b/OpenCL/m16600_a3-pure.cl @@ -23,7 +23,7 @@ typedef struct electrum_wallet } electrum_wallet_t; -KERNEL_FQ void m16600_mxx (KERN_ATTR_VECTOR_ESALT (electrum_wallet_t)) +KERNEL_FQ KERNEL_FA void m16600_mxx (KERN_ATTR_VECTOR_ESALT (electrum_wallet_t)) { /** * base @@ -252,7 +252,7 @@ KERNEL_FQ void m16600_mxx (KERN_ATTR_VECTOR_ESALT (electrum_wallet_t)) } } -KERNEL_FQ void m16600_sxx (KERN_ATTR_VECTOR_ESALT (electrum_wallet_t)) +KERNEL_FQ KERNEL_FA void m16600_sxx (KERN_ATTR_VECTOR_ESALT (electrum_wallet_t)) { /** * base diff --git a/OpenCL/m16800-pure.cl b/OpenCL/m16800-pure.cl index e4752e21c..f6d24a330 100644 --- a/OpenCL/m16800-pure.cl +++ b/OpenCL/m16800-pure.cl @@ -81,7 +81,7 @@ DECLSPEC void hmac_sha1_run_V (u32x *w0, u32x *w1, u32x *w2, u32x *w3, const u32 sha1_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m16800_init (KERN_ATTR_TMPS_ESALT (wpa_pbkdf2_tmp_t, wpa_pmkid_t)) +KERNEL_FQ KERNEL_FA void m16800_init (KERN_ATTR_TMPS_ESALT (wpa_pbkdf2_tmp_t, wpa_pmkid_t)) { /** * base @@ -189,7 +189,7 @@ KERNEL_FQ void m16800_init (KERN_ATTR_TMPS_ESALT (wpa_pbkdf2_tmp_t, wpa_pmkid_t) tmps[gid].out[9] = sha1_hmac_ctx2.opad.h[4]; } -KERNEL_FQ void m16800_loop (KERN_ATTR_TMPS_ESALT (wpa_pbkdf2_tmp_t, wpa_pmkid_t)) +KERNEL_FQ KERNEL_FA void m16800_loop (KERN_ATTR_TMPS_ESALT (wpa_pbkdf2_tmp_t, wpa_pmkid_t)) { const u64 gid = get_global_id (0); @@ -332,12 +332,12 @@ KERNEL_FQ void m16800_loop (KERN_ATTR_TMPS_ESALT (wpa_pbkdf2_tmp_t, wpa_pmkid_t) unpackv (tmps, out, gid, 9, out[4]); } -KERNEL_FQ void m16800_comp (KERN_ATTR_TMPS_ESALT (wpa_pbkdf2_tmp_t, wpa_pmkid_t)) +KERNEL_FQ KERNEL_FA void m16800_comp (KERN_ATTR_TMPS_ESALT (wpa_pbkdf2_tmp_t, wpa_pmkid_t)) { // not in use here, special case... } -KERNEL_FQ void m16800_aux1 (KERN_ATTR_TMPS_ESALT (wpa_pbkdf2_tmp_t, wpa_pmkid_t)) +KERNEL_FQ KERNEL_FA void m16800_aux1 (KERN_ATTR_TMPS_ESALT (wpa_pbkdf2_tmp_t, wpa_pmkid_t)) { const u64 gid = get_global_id (0); diff --git a/OpenCL/m16801-pure.cl b/OpenCL/m16801-pure.cl index a98ad6424..daf6f0f23 100644 --- a/OpenCL/m16801-pure.cl +++ b/OpenCL/m16801-pure.cl @@ -3,7 +3,7 @@ * License.....: MIT */ -#define NEW_SIMD_CODE +//#define NEW_SIMD_CODE #ifdef KERNEL_STATIC #include M2S(INCLUDE_PATH/inc_vendor.h) @@ -58,7 +58,7 @@ DECLSPEC u8 hex_to_u8 (const u8 *hex) } #endif -KERNEL_FQ void m16801_init (KERN_ATTR_TMPS_ESALT (wpa_pmk_tmp_t, wpa_pmkid_t)) +KERNEL_FQ KERNEL_FA void m16801_init (KERN_ATTR_TMPS_ESALT (wpa_pmk_tmp_t, wpa_pmkid_t)) { const u64 gid = get_global_id (0); @@ -104,19 +104,19 @@ KERNEL_FQ void m16801_init (KERN_ATTR_TMPS_ESALT (wpa_pmk_tmp_t, wpa_pmkid_t)) tmps[gid].out[7] = hc_swap32_S (out[7]); } -KERNEL_FQ void m16801_loop (KERN_ATTR_TMPS_ESALT (wpa_pmk_tmp_t, wpa_pmkid_t)) +KERNEL_FQ KERNEL_FA void m16801_loop (KERN_ATTR_TMPS_ESALT (wpa_pmk_tmp_t, wpa_pmkid_t)) { const u64 gid = get_global_id (0); if (gid >= GID_CNT) return; } -KERNEL_FQ void m16801_comp (KERN_ATTR_TMPS_ESALT (wpa_pmk_tmp_t, wpa_pmkid_t)) +KERNEL_FQ KERNEL_FA void m16801_comp (KERN_ATTR_TMPS_ESALT (wpa_pmk_tmp_t, wpa_pmkid_t)) { // not in use here, special case... } -KERNEL_FQ void m16801_aux1 (KERN_ATTR_TMPS_ESALT (wpa_pmk_tmp_t, wpa_pmkid_t)) +KERNEL_FQ KERNEL_FA void m16801_aux1 (KERN_ATTR_TMPS_ESALT (wpa_pmk_tmp_t, wpa_pmkid_t)) { const u64 gid = get_global_id (0); diff --git a/OpenCL/m16900-pure.cl b/OpenCL/m16900-pure.cl index 88bde3454..985c23093 100644 --- a/OpenCL/m16900-pure.cl +++ b/OpenCL/m16900-pure.cl @@ -78,7 +78,7 @@ DECLSPEC void hmac_sha256_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVA sha256_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m16900_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, ansible_vault_t)) +KERNEL_FQ KERNEL_FA void m16900_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, ansible_vault_t)) { /** * base @@ -162,7 +162,7 @@ KERNEL_FQ void m16900_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, ansible_v } } -KERNEL_FQ void m16900_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, ansible_vault_t)) +KERNEL_FQ KERNEL_FA void m16900_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, ansible_vault_t)) { const u64 gid = get_global_id (0); @@ -268,7 +268,7 @@ KERNEL_FQ void m16900_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, ansible_v } } -KERNEL_FQ void m16900_comp (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, ansible_vault_t)) +KERNEL_FQ KERNEL_FA void m16900_comp (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, ansible_vault_t)) { /** * base diff --git a/OpenCL/m17010-pure.cl b/OpenCL/m17010-pure.cl index 406c35aa2..4c4e41571 100644 --- a/OpenCL/m17010-pure.cl +++ b/OpenCL/m17010-pure.cl @@ -211,7 +211,7 @@ DECLSPEC int check_decoded_data (PRIVATE_AS u32 *decoded_data, const u32 decoded && (expected_sha1[4] == hc_swap32_S (ctx.h[4])); } -KERNEL_FQ void m17010_init (KERN_ATTR_TMPS_ESALT (gpg_tmp_t, gpg_t)) +KERNEL_FQ KERNEL_FA void m17010_init (KERN_ATTR_TMPS_ESALT (gpg_tmp_t, gpg_t)) { const u64 gid = get_global_id (0); @@ -260,7 +260,7 @@ KERNEL_FQ void m17010_init (KERN_ATTR_TMPS_ESALT (gpg_tmp_t, gpg_t)) tmps[gid].len = 0; } -KERNEL_FQ void m17010_loop_prepare (KERN_ATTR_TMPS_ESALT (gpg_tmp_t, gpg_t)) +KERNEL_FQ KERNEL_FA void m17010_loop_prepare (KERN_ATTR_TMPS_ESALT (gpg_tmp_t, gpg_t)) { const u64 gid = get_global_id (0); @@ -286,7 +286,7 @@ KERNEL_FQ void m17010_loop_prepare (KERN_ATTR_TMPS_ESALT (gpg_tmp_t, gpg_t)) tmps[gid].len = SALT_REPEAT; } -KERNEL_FQ void m17010_loop (KERN_ATTR_TMPS_ESALT (gpg_tmp_t, gpg_t)) +KERNEL_FQ KERNEL_FA void m17010_loop (KERN_ATTR_TMPS_ESALT (gpg_tmp_t, gpg_t)) { const u64 gid = get_global_id (0); @@ -358,12 +358,12 @@ KERNEL_FQ void m17010_loop (KERN_ATTR_TMPS_ESALT (gpg_tmp_t, gpg_t)) tmps[gid].len = ctx.len; } -KERNEL_FQ void m17010_comp (KERN_ATTR_TMPS_ESALT (gpg_tmp_t, gpg_t)) +KERNEL_FQ KERNEL_FA void m17010_comp (KERN_ATTR_TMPS_ESALT (gpg_tmp_t, gpg_t)) { // not in use here, special case... } -KERNEL_FQ void m17010_aux1 (KERN_ATTR_TMPS_ESALT (gpg_tmp_t, gpg_t)) +KERNEL_FQ KERNEL_FA void m17010_aux1 (KERN_ATTR_TMPS_ESALT (gpg_tmp_t, gpg_t)) { /** * modifier @@ -433,7 +433,7 @@ KERNEL_FQ void m17010_aux1 (KERN_ATTR_TMPS_ESALT (gpg_tmp_t, gpg_t)) } } -KERNEL_FQ void m17010_aux2 (KERN_ATTR_TMPS_ESALT (gpg_tmp_t, gpg_t)) +KERNEL_FQ KERNEL_FA void m17010_aux2 (KERN_ATTR_TMPS_ESALT (gpg_tmp_t, gpg_t)) { /** * modifier diff --git a/OpenCL/m17020-pure.cl b/OpenCL/m17020-pure.cl index d8b112a13..29fda3bfa 100644 --- a/OpenCL/m17020-pure.cl +++ b/OpenCL/m17020-pure.cl @@ -216,7 +216,7 @@ DECLSPEC int check_decoded_data (PRIVATE_AS u32 *decoded_data, const u32 decoded && (expected_sha1[4] == hc_swap32_S (ctx.h[4])); } -KERNEL_FQ void m17020_init (KERN_ATTR_TMPS_ESALT (gpg_tmp_t, gpg_t)) +KERNEL_FQ KERNEL_FA void m17020_init (KERN_ATTR_TMPS_ESALT (gpg_tmp_t, gpg_t)) { const u64 gid = get_global_id (0); @@ -266,7 +266,7 @@ KERNEL_FQ void m17020_init (KERN_ATTR_TMPS_ESALT (gpg_tmp_t, gpg_t)) tmps[gid].len = 0; } -KERNEL_FQ void m17020_loop_prepare (KERN_ATTR_TMPS_ESALT (gpg_tmp_t, gpg_t)) +KERNEL_FQ KERNEL_FA void m17020_loop_prepare (KERN_ATTR_TMPS_ESALT (gpg_tmp_t, gpg_t)) { const u64 gid = get_global_id (0); @@ -308,7 +308,7 @@ KERNEL_FQ void m17020_loop_prepare (KERN_ATTR_TMPS_ESALT (gpg_tmp_t, gpg_t)) tmps[gid].len = 0; } -KERNEL_FQ void m17020_loop (KERN_ATTR_TMPS_ESALT (gpg_tmp_t, gpg_t)) +KERNEL_FQ KERNEL_FA void m17020_loop (KERN_ATTR_TMPS_ESALT (gpg_tmp_t, gpg_t)) { const u64 gid = get_global_id (0); @@ -386,12 +386,12 @@ KERNEL_FQ void m17020_loop (KERN_ATTR_TMPS_ESALT (gpg_tmp_t, gpg_t)) tmps[gid].len = ctx.len; } -KERNEL_FQ void m17020_comp (KERN_ATTR_TMPS_ESALT (gpg_tmp_t, gpg_t)) +KERNEL_FQ KERNEL_FA void m17020_comp (KERN_ATTR_TMPS_ESALT (gpg_tmp_t, gpg_t)) { // not in use here, special case... } -KERNEL_FQ void m17020_aux1 (KERN_ATTR_TMPS_ESALT (gpg_tmp_t, gpg_t)) +KERNEL_FQ KERNEL_FA void m17020_aux1 (KERN_ATTR_TMPS_ESALT (gpg_tmp_t, gpg_t)) { /** * modifier @@ -464,7 +464,7 @@ KERNEL_FQ void m17020_aux1 (KERN_ATTR_TMPS_ESALT (gpg_tmp_t, gpg_t)) } } -KERNEL_FQ void m17020_aux2 (KERN_ATTR_TMPS_ESALT (gpg_tmp_t, gpg_t)) +KERNEL_FQ KERNEL_FA void m17020_aux2 (KERN_ATTR_TMPS_ESALT (gpg_tmp_t, gpg_t)) { /** * modifier diff --git a/OpenCL/m17030-pure.cl b/OpenCL/m17030-pure.cl index e04ac6398..b31f2eeb2 100644 --- a/OpenCL/m17030-pure.cl +++ b/OpenCL/m17030-pure.cl @@ -212,7 +212,7 @@ DECLSPEC int check_decoded_data (PRIVATE_AS u32 *decoded_data, const u32 decoded && (expected_sha1[4] == hc_swap32_S (ctx.h[4])); } -KERNEL_FQ void m17030_init (KERN_ATTR_TMPS_ESALT (gpg_tmp_t, gpg_t)) +KERNEL_FQ KERNEL_FA void m17030_init (KERN_ATTR_TMPS_ESALT (gpg_tmp_t, gpg_t)) { const u64 gid = get_global_id (0); @@ -262,7 +262,7 @@ KERNEL_FQ void m17030_init (KERN_ATTR_TMPS_ESALT (gpg_tmp_t, gpg_t)) tmps[gid].len = 0; } -KERNEL_FQ void m17030_loop_prepare (KERN_ATTR_TMPS_ESALT (gpg_tmp_t, gpg_t)) +KERNEL_FQ KERNEL_FA void m17030_loop_prepare (KERN_ATTR_TMPS_ESALT (gpg_tmp_t, gpg_t)) { const u64 gid = get_global_id (0); @@ -288,7 +288,7 @@ KERNEL_FQ void m17030_loop_prepare (KERN_ATTR_TMPS_ESALT (gpg_tmp_t, gpg_t)) tmps[gid].len = 0; } -KERNEL_FQ void m17030_loop (KERN_ATTR_TMPS_ESALT (gpg_tmp_t, gpg_t)) +KERNEL_FQ KERNEL_FA void m17030_loop (KERN_ATTR_TMPS_ESALT (gpg_tmp_t, gpg_t)) { const u64 gid = get_global_id (0); @@ -358,12 +358,12 @@ KERNEL_FQ void m17030_loop (KERN_ATTR_TMPS_ESALT (gpg_tmp_t, gpg_t)) tmps[gid].len = ctx.len; } -KERNEL_FQ void m17030_comp (KERN_ATTR_TMPS_ESALT (gpg_tmp_t, gpg_t)) +KERNEL_FQ KERNEL_FA void m17030_comp (KERN_ATTR_TMPS_ESALT (gpg_tmp_t, gpg_t)) { // not in use here, special case... } -KERNEL_FQ void m17030_aux1 (KERN_ATTR_TMPS_ESALT (gpg_tmp_t, gpg_t)) +KERNEL_FQ KERNEL_FA void m17030_aux1 (KERN_ATTR_TMPS_ESALT (gpg_tmp_t, gpg_t)) { /** * modifier @@ -436,7 +436,7 @@ KERNEL_FQ void m17030_aux1 (KERN_ATTR_TMPS_ESALT (gpg_tmp_t, gpg_t)) } } -KERNEL_FQ void m17030_aux2 (KERN_ATTR_TMPS_ESALT (gpg_tmp_t, gpg_t)) +KERNEL_FQ KERNEL_FA void m17030_aux2 (KERN_ATTR_TMPS_ESALT (gpg_tmp_t, gpg_t)) { /** * modifier diff --git a/OpenCL/m17040-pure.cl b/OpenCL/m17040-pure.cl index feeae009f..020ab6b64 100644 --- a/OpenCL/m17040-pure.cl +++ b/OpenCL/m17040-pure.cl @@ -193,7 +193,7 @@ DECLSPEC int check_decoded_data (PRIVATE_AS u32 *decoded_data, const u32 decoded && (expected_sha1[4] == hc_swap32_S (ctx.h[4])); } -KERNEL_FQ void m17040_init (KERN_ATTR_TMPS_ESALT (gpg_tmp_t, gpg_t)) +KERNEL_FQ KERNEL_FA void m17040_init (KERN_ATTR_TMPS_ESALT (gpg_tmp_t, gpg_t)) { const u64 gid = get_global_id (0); @@ -242,7 +242,7 @@ KERNEL_FQ void m17040_init (KERN_ATTR_TMPS_ESALT (gpg_tmp_t, gpg_t)) tmps[gid].len = 0; } -KERNEL_FQ void m17040_loop_prepare (KERN_ATTR_TMPS_ESALT (gpg_tmp_t, gpg_t)) +KERNEL_FQ KERNEL_FA void m17040_loop_prepare (KERN_ATTR_TMPS_ESALT (gpg_tmp_t, gpg_t)) { const u64 gid = get_global_id (0); @@ -279,7 +279,7 @@ KERNEL_FQ void m17040_loop_prepare (KERN_ATTR_TMPS_ESALT (gpg_tmp_t, gpg_t)) tmps[gid].len = 0; } -KERNEL_FQ void m17040_loop (KERN_ATTR_TMPS_ESALT (gpg_tmp_t, gpg_t)) +KERNEL_FQ KERNEL_FA void m17040_loop (KERN_ATTR_TMPS_ESALT (gpg_tmp_t, gpg_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -336,12 +336,12 @@ KERNEL_FQ void m17040_loop (KERN_ATTR_TMPS_ESALT (gpg_tmp_t, gpg_t)) tmps[gid].len = ctx.len; } -KERNEL_FQ void m17040_comp (KERN_ATTR_TMPS_ESALT (gpg_tmp_t, gpg_t)) +KERNEL_FQ KERNEL_FA void m17040_comp (KERN_ATTR_TMPS_ESALT (gpg_tmp_t, gpg_t)) { // not in use here, special case... } -KERNEL_FQ void m17040_aux1 (KERN_ATTR_TMPS_ESALT (gpg_tmp_t, gpg_t)) +KERNEL_FQ KERNEL_FA void m17040_aux1 (KERN_ATTR_TMPS_ESALT (gpg_tmp_t, gpg_t)) { /** * modifier diff --git a/OpenCL/m17200_a0-pure.cl b/OpenCL/m17200_a0-pure.cl index 1fdc1c069..cc85a10c9 100644 --- a/OpenCL/m17200_a0-pure.cl +++ b/OpenCL/m17200_a0-pure.cl @@ -529,7 +529,7 @@ DECLSPEC int check_inflate_code1 (u8 *next, int left) } } -KERNEL_FQ void m17200_sxx (KERN_ATTR_RULES_ESALT (pkzip_t)) +KERNEL_FQ KERNEL_FA void m17200_sxx (KERN_ATTR_RULES_ESALT (pkzip_t)) { /** * modifier @@ -767,7 +767,7 @@ KERNEL_FQ void m17200_sxx (KERN_ATTR_RULES_ESALT (pkzip_t)) } } -KERNEL_FQ void m17200_mxx (KERN_ATTR_RULES_ESALT (pkzip_t)) +KERNEL_FQ KERNEL_FA void m17200_mxx (KERN_ATTR_RULES_ESALT (pkzip_t)) { /** * modifier diff --git a/OpenCL/m17200_a1-pure.cl b/OpenCL/m17200_a1-pure.cl index c8ed0d5bc..7943ee531 100644 --- a/OpenCL/m17200_a1-pure.cl +++ b/OpenCL/m17200_a1-pure.cl @@ -527,7 +527,7 @@ DECLSPEC int check_inflate_code1 (PRIVATE_AS u8 *next, int left) } } -KERNEL_FQ void m17200_sxx (KERN_ATTR_ESALT (pkzip_t)) +KERNEL_FQ KERNEL_FA void m17200_sxx (KERN_ATTR_ESALT (pkzip_t)) { /** * modifier @@ -769,7 +769,7 @@ KERNEL_FQ void m17200_sxx (KERN_ATTR_ESALT (pkzip_t)) } } -KERNEL_FQ void m17200_mxx (KERN_ATTR_ESALT (pkzip_t)) +KERNEL_FQ KERNEL_FA void m17200_mxx (KERN_ATTR_ESALT (pkzip_t)) { /** * modifier diff --git a/OpenCL/m17200_a3-pure.cl b/OpenCL/m17200_a3-pure.cl index 1820c38e6..a370910a5 100644 --- a/OpenCL/m17200_a3-pure.cl +++ b/OpenCL/m17200_a3-pure.cl @@ -528,7 +528,7 @@ DECLSPEC int check_inflate_code1 (u8 *next, int left) } } -KERNEL_FQ void m17200_sxx (KERN_ATTR_VECTOR_ESALT (pkzip_t)) +KERNEL_FQ KERNEL_FA void m17200_sxx (KERN_ATTR_VECTOR_ESALT (pkzip_t)) { /** * modifier @@ -782,7 +782,7 @@ KERNEL_FQ void m17200_sxx (KERN_ATTR_VECTOR_ESALT (pkzip_t)) } } -KERNEL_FQ void m17200_mxx (KERN_ATTR_VECTOR_ESALT (pkzip_t)) +KERNEL_FQ KERNEL_FA void m17200_mxx (KERN_ATTR_VECTOR_ESALT (pkzip_t)) { /** * modifier diff --git a/OpenCL/m17210_a0-pure.cl b/OpenCL/m17210_a0-pure.cl index 093a62d6b..6ad437ac4 100644 --- a/OpenCL/m17210_a0-pure.cl +++ b/OpenCL/m17210_a0-pure.cl @@ -220,7 +220,7 @@ CONSTANT_VK u32a crc32tab[256] = 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d }; -KERNEL_FQ void m17210_sxx (KERN_ATTR_RULES_ESALT (pkzip_t)) +KERNEL_FQ KERNEL_FA void m17210_sxx (KERN_ATTR_RULES_ESALT (pkzip_t)) { /** * modifier @@ -459,7 +459,7 @@ KERNEL_FQ void m17210_sxx (KERN_ATTR_RULES_ESALT (pkzip_t)) } } -KERNEL_FQ void m17210_mxx (KERN_ATTR_RULES_ESALT (pkzip_t)) +KERNEL_FQ KERNEL_FA void m17210_mxx (KERN_ATTR_RULES_ESALT (pkzip_t)) { /** * modifier diff --git a/OpenCL/m17210_a1-pure.cl b/OpenCL/m17210_a1-pure.cl index a2d7d4984..5ecdd74e5 100644 --- a/OpenCL/m17210_a1-pure.cl +++ b/OpenCL/m17210_a1-pure.cl @@ -218,7 +218,7 @@ CONSTANT_VK u32a crc32tab[256] = 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d }; -KERNEL_FQ void m17210_sxx (KERN_ATTR_ESALT (pkzip_t)) +KERNEL_FQ KERNEL_FA void m17210_sxx (KERN_ATTR_ESALT (pkzip_t)) { /** * modifier @@ -459,7 +459,7 @@ KERNEL_FQ void m17210_sxx (KERN_ATTR_ESALT (pkzip_t)) } } -KERNEL_FQ void m17210_mxx (KERN_ATTR_ESALT (pkzip_t)) +KERNEL_FQ KERNEL_FA void m17210_mxx (KERN_ATTR_ESALT (pkzip_t)) { /** * modifier diff --git a/OpenCL/m17210_a3-pure.cl b/OpenCL/m17210_a3-pure.cl index 829f06644..49859cd31 100644 --- a/OpenCL/m17210_a3-pure.cl +++ b/OpenCL/m17210_a3-pure.cl @@ -218,7 +218,7 @@ CONSTANT_VK u32a crc32tab[256] = 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d }; -KERNEL_FQ void m17210_sxx (KERN_ATTR_VECTOR_ESALT (pkzip_t)) +KERNEL_FQ KERNEL_FA void m17210_sxx (KERN_ATTR_VECTOR_ESALT (pkzip_t)) { /** * modifier @@ -471,7 +471,7 @@ KERNEL_FQ void m17210_sxx (KERN_ATTR_VECTOR_ESALT (pkzip_t)) } } -KERNEL_FQ void m17210_mxx (KERN_ATTR_VECTOR_ESALT (pkzip_t)) +KERNEL_FQ KERNEL_FA void m17210_mxx (KERN_ATTR_VECTOR_ESALT (pkzip_t)) { /** * modifier diff --git a/OpenCL/m17220_a0-pure.cl b/OpenCL/m17220_a0-pure.cl index a7300768d..1c7d0155c 100644 --- a/OpenCL/m17220_a0-pure.cl +++ b/OpenCL/m17220_a0-pure.cl @@ -527,7 +527,7 @@ DECLSPEC int check_inflate_code1 (u8 *next, int left) } } -KERNEL_FQ void m17220_sxx (KERN_ATTR_RULES_ESALT (pkzip_t)) +KERNEL_FQ KERNEL_FA void m17220_sxx (KERN_ATTR_RULES_ESALT (pkzip_t)) { /** * modifier @@ -792,7 +792,7 @@ KERNEL_FQ void m17220_sxx (KERN_ATTR_RULES_ESALT (pkzip_t)) } } -KERNEL_FQ void m17220_mxx (KERN_ATTR_RULES_ESALT (pkzip_t)) +KERNEL_FQ KERNEL_FA void m17220_mxx (KERN_ATTR_RULES_ESALT (pkzip_t)) { /** * modifier diff --git a/OpenCL/m17220_a1-pure.cl b/OpenCL/m17220_a1-pure.cl index 7755ee5a8..a0256b90e 100644 --- a/OpenCL/m17220_a1-pure.cl +++ b/OpenCL/m17220_a1-pure.cl @@ -525,7 +525,7 @@ DECLSPEC int check_inflate_code1 (PRIVATE_AS u8 *next, int left) } } -KERNEL_FQ void m17220_sxx (KERN_ATTR_ESALT (pkzip_t)) +KERNEL_FQ KERNEL_FA void m17220_sxx (KERN_ATTR_ESALT (pkzip_t)) { /** * modifier @@ -792,7 +792,7 @@ KERNEL_FQ void m17220_sxx (KERN_ATTR_ESALT (pkzip_t)) } } -KERNEL_FQ void m17220_mxx (KERN_ATTR_ESALT (pkzip_t)) +KERNEL_FQ KERNEL_FA void m17220_mxx (KERN_ATTR_ESALT (pkzip_t)) { /** * modifier diff --git a/OpenCL/m17220_a3-pure.cl b/OpenCL/m17220_a3-pure.cl index 2145540af..a0bd659db 100644 --- a/OpenCL/m17220_a3-pure.cl +++ b/OpenCL/m17220_a3-pure.cl @@ -525,7 +525,7 @@ DECLSPEC int check_inflate_code1 (u8 *next, int left) } } -KERNEL_FQ void m17220_sxx (KERN_ATTR_VECTOR_ESALT (pkzip_t)) +KERNEL_FQ KERNEL_FA void m17220_sxx (KERN_ATTR_VECTOR_ESALT (pkzip_t)) { /** * modifier @@ -804,7 +804,7 @@ KERNEL_FQ void m17220_sxx (KERN_ATTR_VECTOR_ESALT (pkzip_t)) } } -KERNEL_FQ void m17220_mxx (KERN_ATTR_VECTOR_ESALT (pkzip_t)) +KERNEL_FQ KERNEL_FA void m17220_mxx (KERN_ATTR_VECTOR_ESALT (pkzip_t)) { /** * modifier diff --git a/OpenCL/m17225_a0-pure.cl b/OpenCL/m17225_a0-pure.cl index 868ffc8dd..487aa2823 100644 --- a/OpenCL/m17225_a0-pure.cl +++ b/OpenCL/m17225_a0-pure.cl @@ -527,7 +527,7 @@ DECLSPEC int check_inflate_code1 (u8 *next, int left) } } -KERNEL_FQ void m17225_sxx (KERN_ATTR_RULES_ESALT (pkzip_t)) +KERNEL_FQ KERNEL_FA void m17225_sxx (KERN_ATTR_RULES_ESALT (pkzip_t)) { /** * modifier @@ -855,7 +855,7 @@ KERNEL_FQ void m17225_sxx (KERN_ATTR_RULES_ESALT (pkzip_t)) } } -KERNEL_FQ void m17225_mxx (KERN_ATTR_RULES_ESALT (pkzip_t)) +KERNEL_FQ KERNEL_FA void m17225_mxx (KERN_ATTR_RULES_ESALT (pkzip_t)) { /** * modifier diff --git a/OpenCL/m17225_a1-pure.cl b/OpenCL/m17225_a1-pure.cl index a4f04f253..cf6cae8b9 100644 --- a/OpenCL/m17225_a1-pure.cl +++ b/OpenCL/m17225_a1-pure.cl @@ -525,7 +525,7 @@ DECLSPEC int check_inflate_code1 (PRIVATE_AS u8 *next, int left) } } -KERNEL_FQ void m17225_sxx (KERN_ATTR_ESALT (pkzip_t)) +KERNEL_FQ KERNEL_FA void m17225_sxx (KERN_ATTR_ESALT (pkzip_t)) { /** * modifier @@ -854,7 +854,7 @@ KERNEL_FQ void m17225_sxx (KERN_ATTR_ESALT (pkzip_t)) } } -KERNEL_FQ void m17225_mxx (KERN_ATTR_ESALT (pkzip_t)) +KERNEL_FQ KERNEL_FA void m17225_mxx (KERN_ATTR_ESALT (pkzip_t)) { /** * modifier diff --git a/OpenCL/m17225_a3-pure.cl b/OpenCL/m17225_a3-pure.cl index 1704eb848..f563a1aee 100644 --- a/OpenCL/m17225_a3-pure.cl +++ b/OpenCL/m17225_a3-pure.cl @@ -525,7 +525,7 @@ DECLSPEC int check_inflate_code1 (u8 *next, int left) } } -KERNEL_FQ void m17225_sxx (KERN_ATTR_VECTOR_ESALT (pkzip_t)) +KERNEL_FQ KERNEL_FA void m17225_sxx (KERN_ATTR_VECTOR_ESALT (pkzip_t)) { /** * modifier @@ -866,7 +866,7 @@ KERNEL_FQ void m17225_sxx (KERN_ATTR_VECTOR_ESALT (pkzip_t)) } } -KERNEL_FQ void m17225_mxx (KERN_ATTR_VECTOR_ESALT (pkzip_t)) +KERNEL_FQ KERNEL_FA void m17225_mxx (KERN_ATTR_VECTOR_ESALT (pkzip_t)) { /** * modifier diff --git a/OpenCL/m17230_a0-pure.cl b/OpenCL/m17230_a0-pure.cl index b9d8e60ed..39d1e022f 100644 --- a/OpenCL/m17230_a0-pure.cl +++ b/OpenCL/m17230_a0-pure.cl @@ -220,7 +220,7 @@ CONSTANT_VK u32a crc32tab[256] = 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d }; -KERNEL_FQ void m17230_sxx (KERN_ATTR_RULES_ESALT (pkzip_t)) +KERNEL_FQ KERNEL_FA void m17230_sxx (KERN_ATTR_RULES_ESALT (pkzip_t)) { /** * modifier @@ -390,7 +390,7 @@ KERNEL_FQ void m17230_sxx (KERN_ATTR_RULES_ESALT (pkzip_t)) } } -KERNEL_FQ void m17230_mxx (KERN_ATTR_RULES_ESALT (pkzip_t)) +KERNEL_FQ KERNEL_FA void m17230_mxx (KERN_ATTR_RULES_ESALT (pkzip_t)) { /** * modifier diff --git a/OpenCL/m17230_a1-pure.cl b/OpenCL/m17230_a1-pure.cl index ebeb48768..08dc09322 100644 --- a/OpenCL/m17230_a1-pure.cl +++ b/OpenCL/m17230_a1-pure.cl @@ -218,7 +218,7 @@ CONSTANT_VK u32a crc32tab[256] = 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d }; -KERNEL_FQ void m17230_sxx (KERN_ATTR_ESALT (pkzip_t)) +KERNEL_FQ KERNEL_FA void m17230_sxx (KERN_ATTR_ESALT (pkzip_t)) { /** * modifier @@ -390,7 +390,7 @@ KERNEL_FQ void m17230_sxx (KERN_ATTR_ESALT (pkzip_t)) } } -KERNEL_FQ void m17230_mxx (KERN_ATTR_ESALT (pkzip_t)) +KERNEL_FQ KERNEL_FA void m17230_mxx (KERN_ATTR_ESALT (pkzip_t)) { /** * modifier diff --git a/OpenCL/m17230_a3-pure.cl b/OpenCL/m17230_a3-pure.cl index a52dec658..42215c69a 100644 --- a/OpenCL/m17230_a3-pure.cl +++ b/OpenCL/m17230_a3-pure.cl @@ -218,7 +218,7 @@ CONSTANT_VK u32a crc32tab[256] = 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d }; -KERNEL_FQ void m17230_sxx (KERN_ATTR_VECTOR_ESALT (pkzip_t)) +KERNEL_FQ KERNEL_FA void m17230_sxx (KERN_ATTR_VECTOR_ESALT (pkzip_t)) { /** * modifier @@ -404,7 +404,7 @@ KERNEL_FQ void m17230_sxx (KERN_ATTR_VECTOR_ESALT (pkzip_t)) } } -KERNEL_FQ void m17230_mxx (KERN_ATTR_VECTOR_ESALT (pkzip_t)) +KERNEL_FQ KERNEL_FA void m17230_mxx (KERN_ATTR_VECTOR_ESALT (pkzip_t)) { /** * modifier diff --git a/OpenCL/m17300_a0-optimized.cl b/OpenCL/m17300_a0-optimized.cl index 0140de8fb..d47fba4c2 100644 --- a/OpenCL/m17300_a0-optimized.cl +++ b/OpenCL/m17300_a0-optimized.cl @@ -29,7 +29,7 @@ CONSTANT_VK u64a keccakf_rndc[24] = #define KECCAK_ROUNDS 24 #endif -KERNEL_FQ void m17300_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m17300_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -239,15 +239,15 @@ KERNEL_FQ void m17300_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m17300_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m17300_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m17300_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m17300_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m17300_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m17300_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -469,10 +469,10 @@ KERNEL_FQ void m17300_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m17300_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m17300_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m17300_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m17300_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m17300_a1-optimized.cl b/OpenCL/m17300_a1-optimized.cl index 04d70395a..4e5e9e1fc 100644 --- a/OpenCL/m17300_a1-optimized.cl +++ b/OpenCL/m17300_a1-optimized.cl @@ -27,7 +27,7 @@ CONSTANT_VK u64a keccakf_rndc[24] = #define KECCAK_ROUNDS 24 #endif -KERNEL_FQ void m17300_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17300_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -296,15 +296,15 @@ KERNEL_FQ void m17300_m04 (KERN_ATTR_BASIC ()) } -KERNEL_FQ void m17300_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17300_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m17300_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17300_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m17300_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17300_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -584,10 +584,10 @@ KERNEL_FQ void m17300_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m17300_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17300_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m17300_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17300_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m17300_a3-optimized.cl b/OpenCL/m17300_a3-optimized.cl index 4f3c1649e..23f32510c 100644 --- a/OpenCL/m17300_a3-optimized.cl +++ b/OpenCL/m17300_a3-optimized.cl @@ -405,7 +405,7 @@ DECLSPEC void m17300s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m17300_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17300_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -454,7 +454,7 @@ KERNEL_FQ void m17300_m04 (KERN_ATTR_BASIC ()) m17300m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m17300_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17300_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -503,7 +503,7 @@ KERNEL_FQ void m17300_m08 (KERN_ATTR_BASIC ()) m17300m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m17300_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17300_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -552,7 +552,7 @@ KERNEL_FQ void m17300_m16 (KERN_ATTR_BASIC ()) m17300m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m17300_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17300_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -601,7 +601,7 @@ KERNEL_FQ void m17300_s04 (KERN_ATTR_BASIC ()) m17300s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m17300_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17300_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -650,7 +650,7 @@ KERNEL_FQ void m17300_s08 (KERN_ATTR_BASIC ()) m17300s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m17300_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17300_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m17400_a0-optimized.cl b/OpenCL/m17400_a0-optimized.cl index ad517f2dd..b2fb8ce70 100644 --- a/OpenCL/m17400_a0-optimized.cl +++ b/OpenCL/m17400_a0-optimized.cl @@ -29,7 +29,7 @@ CONSTANT_VK u64a keccakf_rndc[24] = #define KECCAK_ROUNDS 24 #endif -KERNEL_FQ void m17400_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m17400_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -239,15 +239,15 @@ KERNEL_FQ void m17400_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m17400_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m17400_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m17400_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m17400_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m17400_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m17400_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -469,10 +469,10 @@ KERNEL_FQ void m17400_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m17400_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m17400_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m17400_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m17400_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m17400_a1-optimized.cl b/OpenCL/m17400_a1-optimized.cl index 47b771a47..d20988369 100644 --- a/OpenCL/m17400_a1-optimized.cl +++ b/OpenCL/m17400_a1-optimized.cl @@ -27,7 +27,7 @@ CONSTANT_VK u64a keccakf_rndc[24] = #define KECCAK_ROUNDS 24 #endif -KERNEL_FQ void m17400_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17400_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -296,15 +296,15 @@ KERNEL_FQ void m17400_m04 (KERN_ATTR_BASIC ()) } -KERNEL_FQ void m17400_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17400_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m17400_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17400_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m17400_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17400_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -584,10 +584,10 @@ KERNEL_FQ void m17400_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m17400_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17400_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m17400_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17400_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m17400_a3-optimized.cl b/OpenCL/m17400_a3-optimized.cl index ae79bfb14..23e561f36 100644 --- a/OpenCL/m17400_a3-optimized.cl +++ b/OpenCL/m17400_a3-optimized.cl @@ -405,7 +405,7 @@ DECLSPEC void m17400s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m17400_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17400_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -454,7 +454,7 @@ KERNEL_FQ void m17400_m04 (KERN_ATTR_BASIC ()) m17400m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m17400_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17400_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -503,7 +503,7 @@ KERNEL_FQ void m17400_m08 (KERN_ATTR_BASIC ()) m17400m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m17400_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17400_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -552,7 +552,7 @@ KERNEL_FQ void m17400_m16 (KERN_ATTR_BASIC ()) m17400m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m17400_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17400_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -601,7 +601,7 @@ KERNEL_FQ void m17400_s04 (KERN_ATTR_BASIC ()) m17400s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m17400_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17400_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -650,7 +650,7 @@ KERNEL_FQ void m17400_s08 (KERN_ATTR_BASIC ()) m17400s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m17400_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17400_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m17500_a0-optimized.cl b/OpenCL/m17500_a0-optimized.cl index c1f24e1cc..5071b90e7 100644 --- a/OpenCL/m17500_a0-optimized.cl +++ b/OpenCL/m17500_a0-optimized.cl @@ -29,7 +29,7 @@ CONSTANT_VK u64a keccakf_rndc[24] = #define KECCAK_ROUNDS 24 #endif -KERNEL_FQ void m17500_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m17500_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -239,15 +239,15 @@ KERNEL_FQ void m17500_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m17500_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m17500_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m17500_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m17500_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m17500_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m17500_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -469,10 +469,10 @@ KERNEL_FQ void m17500_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m17500_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m17500_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m17500_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m17500_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m17500_a1-optimized.cl b/OpenCL/m17500_a1-optimized.cl index cd8ebcef9..eed7bb6c3 100644 --- a/OpenCL/m17500_a1-optimized.cl +++ b/OpenCL/m17500_a1-optimized.cl @@ -27,7 +27,7 @@ CONSTANT_VK u64a keccakf_rndc[24] = #define KECCAK_ROUNDS 24 #endif -KERNEL_FQ void m17500_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17500_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -296,15 +296,15 @@ KERNEL_FQ void m17500_m04 (KERN_ATTR_BASIC ()) } -KERNEL_FQ void m17500_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17500_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m17500_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17500_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m17500_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17500_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -584,10 +584,10 @@ KERNEL_FQ void m17500_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m17500_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17500_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m17500_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17500_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m17500_a3-optimized.cl b/OpenCL/m17500_a3-optimized.cl index 488b92236..3103985a7 100644 --- a/OpenCL/m17500_a3-optimized.cl +++ b/OpenCL/m17500_a3-optimized.cl @@ -405,7 +405,7 @@ DECLSPEC void m17500s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m17500_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17500_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -454,7 +454,7 @@ KERNEL_FQ void m17500_m04 (KERN_ATTR_BASIC ()) m17500m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m17500_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17500_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -503,7 +503,7 @@ KERNEL_FQ void m17500_m08 (KERN_ATTR_BASIC ()) m17500m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m17500_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17500_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -552,7 +552,7 @@ KERNEL_FQ void m17500_m16 (KERN_ATTR_BASIC ()) m17500m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m17500_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17500_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -601,7 +601,7 @@ KERNEL_FQ void m17500_s04 (KERN_ATTR_BASIC ()) m17500s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m17500_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17500_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -650,7 +650,7 @@ KERNEL_FQ void m17500_s08 (KERN_ATTR_BASIC ()) m17500s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m17500_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17500_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m17600_a0-optimized.cl b/OpenCL/m17600_a0-optimized.cl index 4a9282398..e34a3607a 100644 --- a/OpenCL/m17600_a0-optimized.cl +++ b/OpenCL/m17600_a0-optimized.cl @@ -29,7 +29,7 @@ CONSTANT_VK u64a keccakf_rndc[24] = #define KECCAK_ROUNDS 24 #endif -KERNEL_FQ void m17600_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m17600_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -239,15 +239,15 @@ KERNEL_FQ void m17600_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m17600_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m17600_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m17600_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m17600_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m17600_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m17600_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -469,10 +469,10 @@ KERNEL_FQ void m17600_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m17600_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m17600_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m17600_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m17600_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m17600_a1-optimized.cl b/OpenCL/m17600_a1-optimized.cl index d6ff92ee7..ebf3fc6e8 100644 --- a/OpenCL/m17600_a1-optimized.cl +++ b/OpenCL/m17600_a1-optimized.cl @@ -27,7 +27,7 @@ CONSTANT_VK u64a keccakf_rndc[24] = #define KECCAK_ROUNDS 24 #endif -KERNEL_FQ void m17600_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17600_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -296,15 +296,15 @@ KERNEL_FQ void m17600_m04 (KERN_ATTR_BASIC ()) } -KERNEL_FQ void m17600_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17600_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m17600_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17600_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m17600_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17600_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -584,10 +584,10 @@ KERNEL_FQ void m17600_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m17600_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17600_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m17600_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17600_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m17600_a3-optimized.cl b/OpenCL/m17600_a3-optimized.cl index 13d47d69d..942fdb507 100644 --- a/OpenCL/m17600_a3-optimized.cl +++ b/OpenCL/m17600_a3-optimized.cl @@ -405,7 +405,7 @@ DECLSPEC void m17600s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m17600_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17600_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -454,7 +454,7 @@ KERNEL_FQ void m17600_m04 (KERN_ATTR_BASIC ()) m17600m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m17600_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17600_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -503,7 +503,7 @@ KERNEL_FQ void m17600_m08 (KERN_ATTR_BASIC ()) m17600m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m17600_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17600_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -552,7 +552,7 @@ KERNEL_FQ void m17600_m16 (KERN_ATTR_BASIC ()) m17600m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m17600_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17600_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -601,7 +601,7 @@ KERNEL_FQ void m17600_s04 (KERN_ATTR_BASIC ()) m17600s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m17600_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17600_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -650,7 +650,7 @@ KERNEL_FQ void m17600_s08 (KERN_ATTR_BASIC ()) m17600s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m17600_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17600_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m17700_a0-optimized.cl b/OpenCL/m17700_a0-optimized.cl index 7d7066f3b..a6b285ca8 100644 --- a/OpenCL/m17700_a0-optimized.cl +++ b/OpenCL/m17700_a0-optimized.cl @@ -29,7 +29,7 @@ CONSTANT_VK u64a keccakf_rndc[24] = #define KECCAK_ROUNDS 24 #endif -KERNEL_FQ void m17700_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m17700_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -239,15 +239,15 @@ KERNEL_FQ void m17700_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m17700_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m17700_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m17700_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m17700_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m17700_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m17700_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -469,10 +469,10 @@ KERNEL_FQ void m17700_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m17700_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m17700_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m17700_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m17700_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m17700_a1-optimized.cl b/OpenCL/m17700_a1-optimized.cl index 1a8cf659b..eab16275e 100644 --- a/OpenCL/m17700_a1-optimized.cl +++ b/OpenCL/m17700_a1-optimized.cl @@ -27,7 +27,7 @@ CONSTANT_VK u64a keccakf_rndc[24] = #define KECCAK_ROUNDS 24 #endif -KERNEL_FQ void m17700_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17700_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -296,15 +296,15 @@ KERNEL_FQ void m17700_m04 (KERN_ATTR_BASIC ()) } -KERNEL_FQ void m17700_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17700_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m17700_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17700_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m17700_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17700_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -584,10 +584,10 @@ KERNEL_FQ void m17700_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m17700_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17700_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m17700_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17700_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m17700_a3-optimized.cl b/OpenCL/m17700_a3-optimized.cl index 4f2ae86bf..d62f67c91 100644 --- a/OpenCL/m17700_a3-optimized.cl +++ b/OpenCL/m17700_a3-optimized.cl @@ -405,7 +405,7 @@ DECLSPEC void m17300s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m17700_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17700_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -454,7 +454,7 @@ KERNEL_FQ void m17700_m04 (KERN_ATTR_BASIC ()) m17300m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m17700_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17700_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -503,7 +503,7 @@ KERNEL_FQ void m17700_m08 (KERN_ATTR_BASIC ()) m17300m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m17700_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17700_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -552,7 +552,7 @@ KERNEL_FQ void m17700_m16 (KERN_ATTR_BASIC ()) m17300m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m17700_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17700_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -601,7 +601,7 @@ KERNEL_FQ void m17700_s04 (KERN_ATTR_BASIC ()) m17300s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m17700_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17700_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -650,7 +650,7 @@ KERNEL_FQ void m17700_s08 (KERN_ATTR_BASIC ()) m17300s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m17700_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17700_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m17800_a0-optimized.cl b/OpenCL/m17800_a0-optimized.cl index ca898956d..53d5dfa50 100644 --- a/OpenCL/m17800_a0-optimized.cl +++ b/OpenCL/m17800_a0-optimized.cl @@ -29,7 +29,7 @@ CONSTANT_VK u64a keccakf_rndc[24] = #define KECCAK_ROUNDS 24 #endif -KERNEL_FQ void m17800_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m17800_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -239,15 +239,15 @@ KERNEL_FQ void m17800_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m17800_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m17800_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m17800_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m17800_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m17800_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m17800_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -469,10 +469,10 @@ KERNEL_FQ void m17800_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m17800_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m17800_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m17800_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m17800_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m17800_a1-optimized.cl b/OpenCL/m17800_a1-optimized.cl index 33a90169f..d33b5744f 100644 --- a/OpenCL/m17800_a1-optimized.cl +++ b/OpenCL/m17800_a1-optimized.cl @@ -27,7 +27,7 @@ CONSTANT_VK u64a keccakf_rndc[24] = #define KECCAK_ROUNDS 24 #endif -KERNEL_FQ void m17800_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17800_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -296,15 +296,15 @@ KERNEL_FQ void m17800_m04 (KERN_ATTR_BASIC ()) } -KERNEL_FQ void m17800_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17800_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m17800_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17800_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m17800_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17800_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -584,10 +584,10 @@ KERNEL_FQ void m17800_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m17800_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17800_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m17800_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17800_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m17800_a3-optimized.cl b/OpenCL/m17800_a3-optimized.cl index e073b1910..455db7ecd 100644 --- a/OpenCL/m17800_a3-optimized.cl +++ b/OpenCL/m17800_a3-optimized.cl @@ -405,7 +405,7 @@ DECLSPEC void m17400s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m17800_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17800_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -454,7 +454,7 @@ KERNEL_FQ void m17800_m04 (KERN_ATTR_BASIC ()) m17400m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m17800_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17800_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -503,7 +503,7 @@ KERNEL_FQ void m17800_m08 (KERN_ATTR_BASIC ()) m17400m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m17800_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17800_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -552,7 +552,7 @@ KERNEL_FQ void m17800_m16 (KERN_ATTR_BASIC ()) m17400m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m17800_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17800_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -601,7 +601,7 @@ KERNEL_FQ void m17800_s04 (KERN_ATTR_BASIC ()) m17400s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m17800_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17800_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -650,7 +650,7 @@ KERNEL_FQ void m17800_s08 (KERN_ATTR_BASIC ()) m17400s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m17800_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17800_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m17900_a0-optimized.cl b/OpenCL/m17900_a0-optimized.cl index 42c9e970a..ccd5339eb 100644 --- a/OpenCL/m17900_a0-optimized.cl +++ b/OpenCL/m17900_a0-optimized.cl @@ -29,7 +29,7 @@ CONSTANT_VK u64a keccakf_rndc[24] = #define KECCAK_ROUNDS 24 #endif -KERNEL_FQ void m17900_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m17900_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -239,15 +239,15 @@ KERNEL_FQ void m17900_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m17900_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m17900_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m17900_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m17900_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m17900_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m17900_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -469,10 +469,10 @@ KERNEL_FQ void m17900_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m17900_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m17900_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m17900_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m17900_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m17900_a1-optimized.cl b/OpenCL/m17900_a1-optimized.cl index 7c4047ed4..d82ba8721 100644 --- a/OpenCL/m17900_a1-optimized.cl +++ b/OpenCL/m17900_a1-optimized.cl @@ -27,7 +27,7 @@ CONSTANT_VK u64a keccakf_rndc[24] = #define KECCAK_ROUNDS 24 #endif -KERNEL_FQ void m17900_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17900_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -296,15 +296,15 @@ KERNEL_FQ void m17900_m04 (KERN_ATTR_BASIC ()) } -KERNEL_FQ void m17900_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17900_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m17900_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17900_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m17900_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17900_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -584,10 +584,10 @@ KERNEL_FQ void m17900_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m17900_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17900_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m17900_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17900_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m17900_a3-optimized.cl b/OpenCL/m17900_a3-optimized.cl index 58b0211ae..833821819 100644 --- a/OpenCL/m17900_a3-optimized.cl +++ b/OpenCL/m17900_a3-optimized.cl @@ -405,7 +405,7 @@ DECLSPEC void m17500s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m17900_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17900_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -454,7 +454,7 @@ KERNEL_FQ void m17900_m04 (KERN_ATTR_BASIC ()) m17500m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m17900_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17900_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -503,7 +503,7 @@ KERNEL_FQ void m17900_m08 (KERN_ATTR_BASIC ()) m17500m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m17900_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17900_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -552,7 +552,7 @@ KERNEL_FQ void m17900_m16 (KERN_ATTR_BASIC ()) m17500m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m17900_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17900_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -601,7 +601,7 @@ KERNEL_FQ void m17900_s04 (KERN_ATTR_BASIC ()) m17500s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m17900_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17900_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -650,7 +650,7 @@ KERNEL_FQ void m17900_s08 (KERN_ATTR_BASIC ()) m17500s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m17900_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m17900_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m18000_a0-optimized.cl b/OpenCL/m18000_a0-optimized.cl index 88b9f51d2..e19fbfe35 100644 --- a/OpenCL/m18000_a0-optimized.cl +++ b/OpenCL/m18000_a0-optimized.cl @@ -29,7 +29,7 @@ CONSTANT_VK u64a keccakf_rndc[24] = #define KECCAK_ROUNDS 24 #endif -KERNEL_FQ void m18000_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m18000_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -239,15 +239,15 @@ KERNEL_FQ void m18000_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m18000_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m18000_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m18000_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m18000_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m18000_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m18000_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -469,10 +469,10 @@ KERNEL_FQ void m18000_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m18000_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m18000_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m18000_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m18000_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m18000_a1-optimized.cl b/OpenCL/m18000_a1-optimized.cl index 8600c0f29..3e7108512 100644 --- a/OpenCL/m18000_a1-optimized.cl +++ b/OpenCL/m18000_a1-optimized.cl @@ -27,7 +27,7 @@ CONSTANT_VK u64a keccakf_rndc[24] = #define KECCAK_ROUNDS 24 #endif -KERNEL_FQ void m18000_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m18000_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -296,15 +296,15 @@ KERNEL_FQ void m18000_m04 (KERN_ATTR_BASIC ()) } -KERNEL_FQ void m18000_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m18000_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m18000_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m18000_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m18000_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m18000_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -584,10 +584,10 @@ KERNEL_FQ void m18000_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m18000_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m18000_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m18000_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m18000_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m18000_a3-optimized.cl b/OpenCL/m18000_a3-optimized.cl index bb83ec067..c7fec3218 100644 --- a/OpenCL/m18000_a3-optimized.cl +++ b/OpenCL/m18000_a3-optimized.cl @@ -405,7 +405,7 @@ DECLSPEC void m17600s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m18000_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m18000_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -454,7 +454,7 @@ KERNEL_FQ void m18000_m04 (KERN_ATTR_BASIC ()) m17600m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m18000_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m18000_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -503,7 +503,7 @@ KERNEL_FQ void m18000_m08 (KERN_ATTR_BASIC ()) m17600m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m18000_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m18000_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -552,7 +552,7 @@ KERNEL_FQ void m18000_m16 (KERN_ATTR_BASIC ()) m17600m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m18000_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m18000_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -601,7 +601,7 @@ KERNEL_FQ void m18000_s04 (KERN_ATTR_BASIC ()) m17600s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m18000_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m18000_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -650,7 +650,7 @@ KERNEL_FQ void m18000_s08 (KERN_ATTR_BASIC ()) m17600s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m18000_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m18000_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m18100_a0-pure.cl b/OpenCL/m18100_a0-pure.cl index 9c8f047a9..4450254ad 100644 --- a/OpenCL/m18100_a0-pure.cl +++ b/OpenCL/m18100_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m18100_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m18100_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -93,7 +93,7 @@ KERNEL_FQ void m18100_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m18100_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m18100_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m18100_a1-pure.cl b/OpenCL/m18100_a1-pure.cl index a596894ca..513080220 100644 --- a/OpenCL/m18100_a1-pure.cl +++ b/OpenCL/m18100_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m18100_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m18100_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -116,7 +116,7 @@ KERNEL_FQ void m18100_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m18100_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m18100_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m18100_a3-pure.cl b/OpenCL/m18100_a3-pure.cl index 70235ce95..b219cf37d 100644 --- a/OpenCL/m18100_a3-pure.cl +++ b/OpenCL/m18100_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m18100_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m18100_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -103,7 +103,7 @@ KERNEL_FQ void m18100_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m18100_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m18100_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m18200_a0-optimized.cl b/OpenCL/m18200_a0-optimized.cl index 4eee77861..1192c2f87 100644 --- a/OpenCL/m18200_a0-optimized.cl +++ b/OpenCL/m18200_a0-optimized.cl @@ -452,7 +452,7 @@ DECLSPEC void kerb_prepare (PRIVATE_AS const u32 *w0, PRIVATE_AS const u32 *w1, hmac_md5_run (w0_t, w1_t, w2_t, w3_t, ipad, opad, digest); } -KERNEL_FQ void m18200_m04 (KERN_ATTR_RULES_ESALT (krb5asrep_t)) +KERNEL_FQ KERNEL_FA void m18200_m04 (KERN_ATTR_RULES_ESALT (krb5asrep_t)) { /** * modifier @@ -540,15 +540,15 @@ KERNEL_FQ void m18200_m04 (KERN_ATTR_RULES_ESALT (krb5asrep_t)) } } -KERNEL_FQ void m18200_m08 (KERN_ATTR_RULES_ESALT (krb5asrep_t)) +KERNEL_FQ KERNEL_FA void m18200_m08 (KERN_ATTR_RULES_ESALT (krb5asrep_t)) { } -KERNEL_FQ void m18200_m16 (KERN_ATTR_RULES_ESALT (krb5asrep_t)) +KERNEL_FQ KERNEL_FA void m18200_m16 (KERN_ATTR_RULES_ESALT (krb5asrep_t)) { } -KERNEL_FQ void m18200_s04 (KERN_ATTR_RULES_ESALT (krb5asrep_t)) +KERNEL_FQ KERNEL_FA void m18200_s04 (KERN_ATTR_RULES_ESALT (krb5asrep_t)) { /** * modifier @@ -636,10 +636,10 @@ KERNEL_FQ void m18200_s04 (KERN_ATTR_RULES_ESALT (krb5asrep_t)) } } -KERNEL_FQ void m18200_s08 (KERN_ATTR_RULES_ESALT (krb5asrep_t)) +KERNEL_FQ KERNEL_FA void m18200_s08 (KERN_ATTR_RULES_ESALT (krb5asrep_t)) { } -KERNEL_FQ void m18200_s16 (KERN_ATTR_RULES_ESALT (krb5asrep_t)) +KERNEL_FQ KERNEL_FA void m18200_s16 (KERN_ATTR_RULES_ESALT (krb5asrep_t)) { } diff --git a/OpenCL/m18200_a0-pure.cl b/OpenCL/m18200_a0-pure.cl index f86a48fef..430170c45 100644 --- a/OpenCL/m18200_a0-pure.cl +++ b/OpenCL/m18200_a0-pure.cl @@ -264,7 +264,7 @@ DECLSPEC void kerb_prepare (PRIVATE_AS const u32 *K, PRIVATE_AS const u32 *check K2[3] = ctx1.opad.h[3]; } -KERNEL_FQ void m18200_mxx (KERN_ATTR_RULES_ESALT (krb5asrep_t)) +KERNEL_FQ KERNEL_FA void m18200_mxx (KERN_ATTR_RULES_ESALT (krb5asrep_t)) { /** * modifier @@ -324,7 +324,7 @@ KERNEL_FQ void m18200_mxx (KERN_ATTR_RULES_ESALT (krb5asrep_t)) } } -KERNEL_FQ void m18200_sxx (KERN_ATTR_RULES_ESALT (krb5asrep_t)) +KERNEL_FQ KERNEL_FA void m18200_sxx (KERN_ATTR_RULES_ESALT (krb5asrep_t)) { /** * modifier diff --git a/OpenCL/m18200_a1-optimized.cl b/OpenCL/m18200_a1-optimized.cl index c710bcbe8..41b6daeb5 100644 --- a/OpenCL/m18200_a1-optimized.cl +++ b/OpenCL/m18200_a1-optimized.cl @@ -450,7 +450,7 @@ DECLSPEC void kerb_prepare (PRIVATE_AS const u32 *w0, PRIVATE_AS const u32 *w1, hmac_md5_run (w0_t, w1_t, w2_t, w3_t, ipad, opad, digest); } -KERNEL_FQ void m18200_m04 (KERN_ATTR_ESALT (krb5asrep_t)) +KERNEL_FQ KERNEL_FA void m18200_m04 (KERN_ATTR_ESALT (krb5asrep_t)) { /** * modifier @@ -587,15 +587,15 @@ KERNEL_FQ void m18200_m04 (KERN_ATTR_ESALT (krb5asrep_t)) } } -KERNEL_FQ void m18200_m08 (KERN_ATTR_ESALT (krb5asrep_t)) +KERNEL_FQ KERNEL_FA void m18200_m08 (KERN_ATTR_ESALT (krb5asrep_t)) { } -KERNEL_FQ void m18200_m16 (KERN_ATTR_ESALT (krb5asrep_t)) +KERNEL_FQ KERNEL_FA void m18200_m16 (KERN_ATTR_ESALT (krb5asrep_t)) { } -KERNEL_FQ void m18200_s04 (KERN_ATTR_ESALT (krb5asrep_t)) +KERNEL_FQ KERNEL_FA void m18200_s04 (KERN_ATTR_ESALT (krb5asrep_t)) { /** * modifier @@ -732,10 +732,10 @@ KERNEL_FQ void m18200_s04 (KERN_ATTR_ESALT (krb5asrep_t)) } } -KERNEL_FQ void m18200_s08 (KERN_ATTR_ESALT (krb5asrep_t)) +KERNEL_FQ KERNEL_FA void m18200_s08 (KERN_ATTR_ESALT (krb5asrep_t)) { } -KERNEL_FQ void m18200_s16 (KERN_ATTR_ESALT (krb5asrep_t)) +KERNEL_FQ KERNEL_FA void m18200_s16 (KERN_ATTR_ESALT (krb5asrep_t)) { } diff --git a/OpenCL/m18200_a1-pure.cl b/OpenCL/m18200_a1-pure.cl index 987afb360..9f6023a0d 100644 --- a/OpenCL/m18200_a1-pure.cl +++ b/OpenCL/m18200_a1-pure.cl @@ -262,7 +262,7 @@ DECLSPEC void kerb_prepare (PRIVATE_AS const u32 *K, PRIVATE_AS const u32 *check K2[3] = ctx1.opad.h[3]; } -KERNEL_FQ void m18200_mxx (KERN_ATTR_ESALT (krb5asrep_t)) +KERNEL_FQ KERNEL_FA void m18200_mxx (KERN_ATTR_ESALT (krb5asrep_t)) { /** * modifier @@ -320,7 +320,7 @@ KERNEL_FQ void m18200_mxx (KERN_ATTR_ESALT (krb5asrep_t)) } } -KERNEL_FQ void m18200_sxx (KERN_ATTR_ESALT (krb5asrep_t)) +KERNEL_FQ KERNEL_FA void m18200_sxx (KERN_ATTR_ESALT (krb5asrep_t)) { /** * modifier diff --git a/OpenCL/m18200_a3-optimized.cl b/OpenCL/m18200_a3-optimized.cl index c2c2eee7b..5c767e2f5 100644 --- a/OpenCL/m18200_a3-optimized.cl +++ b/OpenCL/m18200_a3-optimized.cl @@ -506,7 +506,7 @@ DECLSPEC void m18200 (LOCAL_AS u32 *S, PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, P } } -KERNEL_FQ void m18200_m04 (KERN_ATTR_ESALT (krb5asrep_t)) +KERNEL_FQ KERNEL_FA void m18200_m04 (KERN_ATTR_ESALT (krb5asrep_t)) { /** * base @@ -557,7 +557,7 @@ KERNEL_FQ void m18200_m04 (KERN_ATTR_ESALT (krb5asrep_t)) m18200 (S, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m18200_m08 (KERN_ATTR_ESALT (krb5asrep_t)) +KERNEL_FQ KERNEL_FA void m18200_m08 (KERN_ATTR_ESALT (krb5asrep_t)) { /** * base @@ -608,11 +608,11 @@ KERNEL_FQ void m18200_m08 (KERN_ATTR_ESALT (krb5asrep_t)) m18200 (S, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m18200_m16 (KERN_ATTR_ESALT (krb5asrep_t)) +KERNEL_FQ KERNEL_FA void m18200_m16 (KERN_ATTR_ESALT (krb5asrep_t)) { } -KERNEL_FQ void m18200_s04 (KERN_ATTR_ESALT (krb5asrep_t)) +KERNEL_FQ KERNEL_FA void m18200_s04 (KERN_ATTR_ESALT (krb5asrep_t)) { /** * base @@ -663,7 +663,7 @@ KERNEL_FQ void m18200_s04 (KERN_ATTR_ESALT (krb5asrep_t)) m18200 (S, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m18200_s08 (KERN_ATTR_ESALT (krb5asrep_t)) +KERNEL_FQ KERNEL_FA void m18200_s08 (KERN_ATTR_ESALT (krb5asrep_t)) { /** * base @@ -714,6 +714,6 @@ KERNEL_FQ void m18200_s08 (KERN_ATTR_ESALT (krb5asrep_t)) m18200 (S, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m18200_s16 (KERN_ATTR_ESALT (krb5asrep_t)) +KERNEL_FQ KERNEL_FA void m18200_s16 (KERN_ATTR_ESALT (krb5asrep_t)) { } diff --git a/OpenCL/m18200_a3-pure.cl b/OpenCL/m18200_a3-pure.cl index b5015406b..30eb42eea 100644 --- a/OpenCL/m18200_a3-pure.cl +++ b/OpenCL/m18200_a3-pure.cl @@ -262,7 +262,7 @@ DECLSPEC void kerb_prepare (PRIVATE_AS const u32 *K, PRIVATE_AS const u32 *check K2[3] = ctx1.opad.h[3]; } -KERNEL_FQ void m18200_mxx (KERN_ATTR_VECTOR_ESALT (krb5asrep_t)) +KERNEL_FQ KERNEL_FA void m18200_mxx (KERN_ATTR_VECTOR_ESALT (krb5asrep_t)) { /** * modifier @@ -333,7 +333,7 @@ KERNEL_FQ void m18200_mxx (KERN_ATTR_VECTOR_ESALT (krb5asrep_t)) } } -KERNEL_FQ void m18200_sxx (KERN_ATTR_VECTOR_ESALT (krb5asrep_t)) +KERNEL_FQ KERNEL_FA void m18200_sxx (KERN_ATTR_VECTOR_ESALT (krb5asrep_t)) { /** * modifier diff --git a/OpenCL/m18300-pure.cl b/OpenCL/m18300-pure.cl index d2ecaa88a..1da6951cb 100644 --- a/OpenCL/m18300-pure.cl +++ b/OpenCL/m18300-pure.cl @@ -79,7 +79,7 @@ DECLSPEC void hmac_sha256_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVA sha256_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m18300_init (KERN_ATTR_TMPS_ESALT (apple_secure_notes_tmp_t, apple_secure_notes_t)) +KERNEL_FQ KERNEL_FA void m18300_init (KERN_ATTR_TMPS_ESALT (apple_secure_notes_tmp_t, apple_secure_notes_t)) { /** * base @@ -163,7 +163,7 @@ KERNEL_FQ void m18300_init (KERN_ATTR_TMPS_ESALT (apple_secure_notes_tmp_t, appl } } -KERNEL_FQ void m18300_loop (KERN_ATTR_TMPS_ESALT (apple_secure_notes_tmp_t, apple_secure_notes_t)) +KERNEL_FQ KERNEL_FA void m18300_loop (KERN_ATTR_TMPS_ESALT (apple_secure_notes_tmp_t, apple_secure_notes_t)) { const u64 gid = get_global_id (0); @@ -269,7 +269,7 @@ KERNEL_FQ void m18300_loop (KERN_ATTR_TMPS_ESALT (apple_secure_notes_tmp_t, appl } } -KERNEL_FQ void m18300_comp (KERN_ATTR_TMPS_ESALT (apple_secure_notes_tmp_t, apple_secure_notes_t)) +KERNEL_FQ KERNEL_FA void m18300_comp (KERN_ATTR_TMPS_ESALT (apple_secure_notes_tmp_t, apple_secure_notes_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m18400-pure.cl b/OpenCL/m18400-pure.cl index 36c1411f1..59c22df6e 100644 --- a/OpenCL/m18400-pure.cl +++ b/OpenCL/m18400-pure.cl @@ -75,7 +75,7 @@ DECLSPEC void hmac_sha1_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE sha1_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m18400_init (KERN_ATTR_TMPS_ESALT (odf12_tmp_t, odf12_t)) +KERNEL_FQ KERNEL_FA void m18400_init (KERN_ATTR_TMPS_ESALT (odf12_tmp_t, odf12_t)) { /** * base @@ -180,7 +180,7 @@ KERNEL_FQ void m18400_init (KERN_ATTR_TMPS_ESALT (odf12_tmp_t, odf12_t)) } } -KERNEL_FQ void m18400_loop (KERN_ATTR_TMPS_ESALT (odf12_tmp_t, odf12_t)) +KERNEL_FQ KERNEL_FA void m18400_loop (KERN_ATTR_TMPS_ESALT (odf12_tmp_t, odf12_t)) { const u64 gid = get_global_id (0); @@ -266,7 +266,7 @@ KERNEL_FQ void m18400_loop (KERN_ATTR_TMPS_ESALT (odf12_tmp_t, odf12_t)) } } -KERNEL_FQ void m18400_comp (KERN_ATTR_TMPS_ESALT (odf12_tmp_t, odf12_t)) +KERNEL_FQ KERNEL_FA void m18400_comp (KERN_ATTR_TMPS_ESALT (odf12_tmp_t, odf12_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m18500_a0-pure.cl b/OpenCL/m18500_a0-pure.cl index dd952ba2e..9d2742b26 100644 --- a/OpenCL/m18500_a0-pure.cl +++ b/OpenCL/m18500_a0-pure.cl @@ -29,7 +29,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m18500_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m18500_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -145,7 +145,7 @@ KERNEL_FQ void m18500_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m18500_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m18500_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m18500_a1-pure.cl b/OpenCL/m18500_a1-pure.cl index a0093926a..0344ef3e7 100644 --- a/OpenCL/m18500_a1-pure.cl +++ b/OpenCL/m18500_a1-pure.cl @@ -29,7 +29,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m18500_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m18500_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -144,7 +144,7 @@ KERNEL_FQ void m18500_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m18500_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m18500_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m18500_a3-pure.cl b/OpenCL/m18500_a3-pure.cl index 9191affa6..ba342c963 100644 --- a/OpenCL/m18500_a3-pure.cl +++ b/OpenCL/m18500_a3-pure.cl @@ -27,7 +27,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m18500_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m18500_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -154,7 +154,7 @@ KERNEL_FQ void m18500_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m18500_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m18500_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m18600-pure.cl b/OpenCL/m18600-pure.cl index 1e00f6628..54bba75d7 100644 --- a/OpenCL/m18600-pure.cl +++ b/OpenCL/m18600-pure.cl @@ -452,7 +452,7 @@ DECLSPEC void hmac_sha1_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE sha1_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m18600_init (KERN_ATTR_TMPS_ESALT (odf11_tmp_t, odf11_t)) +KERNEL_FQ KERNEL_FA void m18600_init (KERN_ATTR_TMPS_ESALT (odf11_tmp_t, odf11_t)) { /** * base @@ -554,7 +554,7 @@ KERNEL_FQ void m18600_init (KERN_ATTR_TMPS_ESALT (odf11_tmp_t, odf11_t)) tmps[gid].out[4] = tmps[gid].dgst[4]; } -KERNEL_FQ void m18600_loop (KERN_ATTR_TMPS_ESALT (odf11_tmp_t, odf11_t)) +KERNEL_FQ KERNEL_FA void m18600_loop (KERN_ATTR_TMPS_ESALT (odf11_tmp_t, odf11_t)) { const u64 gid = get_global_id (0); @@ -636,7 +636,7 @@ KERNEL_FQ void m18600_loop (KERN_ATTR_TMPS_ESALT (odf11_tmp_t, odf11_t)) } } -KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE_COMP) m18600_comp (KERN_ATTR_TMPS_ESALT (odf11_tmp_t, odf11_t)) +KERNEL_FQ KERNEL_FA void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE_COMP) m18600_comp (KERN_ATTR_TMPS_ESALT (odf11_tmp_t, odf11_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m18700_a0-optimized.cl b/OpenCL/m18700_a0-optimized.cl index 0daed2a10..960079b8f 100644 --- a/OpenCL/m18700_a0-optimized.cl +++ b/OpenCL/m18700_a0-optimized.cl @@ -53,7 +53,7 @@ DECLSPEC u32 hashCode (const u32 init, PRIVATE_AS const u32 *w, const u32 pw_len return hash; } -KERNEL_FQ void m18700_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m18700_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -104,15 +104,15 @@ KERNEL_FQ void m18700_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m18700_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m18700_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m18700_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m18700_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m18700_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m18700_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -175,10 +175,10 @@ KERNEL_FQ void m18700_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m18700_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m18700_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m18700_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m18700_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m18700_a0-pure.cl b/OpenCL/m18700_a0-pure.cl index c1841f3c0..d95902f5c 100644 --- a/OpenCL/m18700_a0-pure.cl +++ b/OpenCL/m18700_a0-pure.cl @@ -54,7 +54,7 @@ DECLSPEC u32 hashCode (const u32 init, PRIVATE_AS const u32 *w, const u32 pw_len return hash; } -KERNEL_FQ void m18700_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m18700_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -92,7 +92,7 @@ KERNEL_FQ void m18700_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m18700_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m18700_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m18700_a1-optimized.cl b/OpenCL/m18700_a1-optimized.cl index 873a601cf..d8c549a0e 100644 --- a/OpenCL/m18700_a1-optimized.cl +++ b/OpenCL/m18700_a1-optimized.cl @@ -53,7 +53,7 @@ DECLSPEC u32 hashCode_g (const u32 init, GLOBAL_AS const u32 *w, const u32 pw_le return hash; } -KERNEL_FQ void m18700_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m18700_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -97,15 +97,15 @@ KERNEL_FQ void m18700_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m18700_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m18700_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m18700_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m18700_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m18700_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m18700_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -161,10 +161,10 @@ KERNEL_FQ void m18700_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m18700_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m18700_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m18700_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m18700_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m18700_a1-pure.cl b/OpenCL/m18700_a1-pure.cl index e8f8f9988..3f16de698 100644 --- a/OpenCL/m18700_a1-pure.cl +++ b/OpenCL/m18700_a1-pure.cl @@ -52,7 +52,7 @@ DECLSPEC u32 hashCode_g (const u32 init, GLOBAL_AS const u32 *w, const u32 pw_le return hash; } -KERNEL_FQ void m18700_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m18700_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -91,7 +91,7 @@ KERNEL_FQ void m18700_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m18700_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m18700_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m18700_a3-optimized.cl b/OpenCL/m18700_a3-optimized.cl index e3aa57ecf..4a3e7b47d 100644 --- a/OpenCL/m18700_a3-optimized.cl +++ b/OpenCL/m18700_a3-optimized.cl @@ -140,7 +140,7 @@ DECLSPEC void m18700s (PRIVATE_AS const u32 *w, const u32 pw_len, KERN_ATTR_FUNC } } -KERNEL_FQ void m18700_m04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m18700_m04 (KERN_ATTR_VECTOR ()) { /** * base @@ -180,7 +180,7 @@ KERNEL_FQ void m18700_m04 (KERN_ATTR_VECTOR ()) m18700m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m18700_m08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m18700_m08 (KERN_ATTR_VECTOR ()) { /** * base @@ -220,7 +220,7 @@ KERNEL_FQ void m18700_m08 (KERN_ATTR_VECTOR ()) m18700m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m18700_m16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m18700_m16 (KERN_ATTR_VECTOR ()) { /** * base @@ -260,7 +260,7 @@ KERNEL_FQ void m18700_m16 (KERN_ATTR_VECTOR ()) m18700m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m18700_s04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m18700_s04 (KERN_ATTR_VECTOR ()) { /** * base @@ -300,7 +300,7 @@ KERNEL_FQ void m18700_s04 (KERN_ATTR_VECTOR ()) m18700s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m18700_s08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m18700_s08 (KERN_ATTR_VECTOR ()) { /** * base @@ -340,7 +340,7 @@ KERNEL_FQ void m18700_s08 (KERN_ATTR_VECTOR ()) m18700s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m18700_s16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m18700_s16 (KERN_ATTR_VECTOR ()) { /** * base diff --git a/OpenCL/m18700_a3-pure.cl b/OpenCL/m18700_a3-pure.cl index cb1407e94..52d2fcd66 100644 --- a/OpenCL/m18700_a3-pure.cl +++ b/OpenCL/m18700_a3-pure.cl @@ -70,7 +70,7 @@ DECLSPEC u32x hashCode_w0 (const u32x init, const u32x w0, PRIVATE_AS const u32 return hash; } -KERNEL_FQ void m18700_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m18700_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -117,7 +117,7 @@ KERNEL_FQ void m18700_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m18700_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m18700_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m18800-pure.cl b/OpenCL/m18800-pure.cl index 93ebf5aca..17c7d1c51 100644 --- a/OpenCL/m18800-pure.cl +++ b/OpenCL/m18800-pure.cl @@ -23,7 +23,7 @@ typedef struct bsp_tmp } bsp_tmp_t; -KERNEL_FQ void m18800_init (KERN_ATTR_TMPS (bsp_tmp_t)) +KERNEL_FQ KERNEL_FA void m18800_init (KERN_ATTR_TMPS (bsp_tmp_t)) { /** * base @@ -53,7 +53,7 @@ KERNEL_FQ void m18800_init (KERN_ATTR_TMPS (bsp_tmp_t)) tmps[gid].hash[7] = ctx.h[7]; } -KERNEL_FQ void m18800_loop (KERN_ATTR_TMPS (bsp_tmp_t)) +KERNEL_FQ KERNEL_FA void m18800_loop (KERN_ATTR_TMPS (bsp_tmp_t)) { const u64 gid = get_global_id (0); @@ -116,7 +116,7 @@ KERNEL_FQ void m18800_loop (KERN_ATTR_TMPS (bsp_tmp_t)) unpackv (tmps, hash, gid, 7, digest[7]); } -KERNEL_FQ void m18800_comp (KERN_ATTR_TMPS (bsp_tmp_t)) +KERNEL_FQ KERNEL_FA void m18800_comp (KERN_ATTR_TMPS (bsp_tmp_t)) { /** * modifier diff --git a/OpenCL/m18900-pure.cl b/OpenCL/m18900-pure.cl index 707ba438c..d88f31e01 100644 --- a/OpenCL/m18900-pure.cl +++ b/OpenCL/m18900-pure.cl @@ -76,7 +76,7 @@ DECLSPEC void hmac_sha1_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE sha1_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m18900_init (KERN_ATTR_TMPS_ESALT (android_backup_tmp_t, android_backup_t)) +KERNEL_FQ KERNEL_FA void m18900_init (KERN_ATTR_TMPS_ESALT (android_backup_tmp_t, android_backup_t)) { /** * base @@ -148,7 +148,7 @@ KERNEL_FQ void m18900_init (KERN_ATTR_TMPS_ESALT (android_backup_tmp_t, android_ } } -KERNEL_FQ void m18900_loop (KERN_ATTR_TMPS_ESALT (android_backup_tmp_t, android_backup_t)) +KERNEL_FQ KERNEL_FA void m18900_loop (KERN_ATTR_TMPS_ESALT (android_backup_tmp_t, android_backup_t)) { const u64 gid = get_global_id (0); @@ -233,7 +233,7 @@ KERNEL_FQ void m18900_loop (KERN_ATTR_TMPS_ESALT (android_backup_tmp_t, android_ } } -KERNEL_FQ void m18900_comp (KERN_ATTR_TMPS_ESALT (android_backup_tmp_t, android_backup_t)) +KERNEL_FQ KERNEL_FA void m18900_comp (KERN_ATTR_TMPS_ESALT (android_backup_tmp_t, android_backup_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m19000-pure.cl b/OpenCL/m19000-pure.cl index 42ee3dd54..fc234dc1a 100644 --- a/OpenCL/m19000-pure.cl +++ b/OpenCL/m19000-pure.cl @@ -23,7 +23,7 @@ typedef struct qnx_md5_tmp } qnx_md5_tmp_t; -KERNEL_FQ void m19000_init (KERN_ATTR_TMPS (qnx_md5_tmp_t)) +KERNEL_FQ KERNEL_FA void m19000_init (KERN_ATTR_TMPS (qnx_md5_tmp_t)) { /** * base @@ -37,18 +37,36 @@ KERNEL_FQ void m19000_init (KERN_ATTR_TMPS (qnx_md5_tmp_t)) * init */ + const u32 pw_len = pws[gid].pw_len; + + u32 w[64] = { 0 }; + + for (u32 i = 0, idx = 0; i < pw_len; i += 4, idx += 1) + { + w[idx] = pws[gid].i[idx]; + } + + const u32 salt_len = salt_bufs[SALT_POS_HOST].salt_len; + + u32 s[64] = { 0 }; + + for (u32 i = 0, idx = 0; i < salt_len; i += 4, idx += 1) + { + s[idx] = salt_bufs[SALT_POS_HOST].salt_buf[idx]; + } + md5_ctx_t md5_ctx; md5_init (&md5_ctx); - md5_update_global (&md5_ctx, salt_bufs[SALT_POS_HOST].salt_buf, salt_bufs[SALT_POS_HOST].salt_len); + md5_update (&md5_ctx, s, salt_len); - md5_update_global (&md5_ctx, pws[gid].i, pws[gid].pw_len); + md5_update (&md5_ctx, w, pw_len); tmps[gid].md5_ctx = md5_ctx; } -KERNEL_FQ void m19000_loop (KERN_ATTR_TMPS (qnx_md5_tmp_t)) +KERNEL_FQ KERNEL_FA void m19000_loop (KERN_ATTR_TMPS (qnx_md5_tmp_t)) { /** * base @@ -58,17 +76,26 @@ KERNEL_FQ void m19000_loop (KERN_ATTR_TMPS (qnx_md5_tmp_t)) if (gid >= GID_CNT) return; + const u32 pw_len = pws[gid].pw_len; + + u32 w[64] = { 0 }; + + for (u32 i = 0, idx = 0; i < pw_len; i += 4, idx += 1) + { + w[idx] = pws[gid].i[idx]; + } + md5_ctx_t md5_ctx = tmps[gid].md5_ctx; for (u32 i = 0; i < LOOP_CNT; i++) { - md5_update_global (&md5_ctx, pws[gid].i, pws[gid].pw_len); + md5_update (&md5_ctx, w, pw_len); } tmps[gid].md5_ctx = md5_ctx; } -KERNEL_FQ void m19000_comp (KERN_ATTR_TMPS (qnx_md5_tmp_t)) +KERNEL_FQ KERNEL_FA void m19000_comp (KERN_ATTR_TMPS (qnx_md5_tmp_t)) { /** * modifier diff --git a/OpenCL/m19100-pure.cl b/OpenCL/m19100-pure.cl index 64b402b6e..f94d0464a 100644 --- a/OpenCL/m19100-pure.cl +++ b/OpenCL/m19100-pure.cl @@ -23,7 +23,7 @@ typedef struct qnx_sha256_tmp } qnx_sha256_tmp_t; -KERNEL_FQ void m19100_init (KERN_ATTR_TMPS (qnx_sha256_tmp_t)) +KERNEL_FQ KERNEL_FA void m19100_init (KERN_ATTR_TMPS (qnx_sha256_tmp_t)) { /** * base @@ -37,18 +37,36 @@ KERNEL_FQ void m19100_init (KERN_ATTR_TMPS (qnx_sha256_tmp_t)) * init */ + const u32 pw_len = pws[gid].pw_len; + + u32 w[64] = { 0 }; + + for (u32 i = 0, idx = 0; i < pw_len; i += 4, idx += 1) + { + w[idx] = hc_swap32_S (pws[gid].i[idx]); + } + + const u32 salt_len = salt_bufs[SALT_POS_HOST].salt_len; + + u32 s[64] = { 0 }; + + for (u32 i = 0, idx = 0; i < salt_len; i += 4, idx += 1) + { + s[idx] = hc_swap32_S (salt_bufs[SALT_POS_HOST].salt_buf[idx]); + } + sha256_ctx_t sha256_ctx; sha256_init (&sha256_ctx); - sha256_update_global_swap (&sha256_ctx, salt_bufs[SALT_POS_HOST].salt_buf, salt_bufs[SALT_POS_HOST].salt_len); + sha256_update (&sha256_ctx, s, salt_len); - sha256_update_global_swap (&sha256_ctx, pws[gid].i, pws[gid].pw_len); + sha256_update (&sha256_ctx, w, pw_len); tmps[gid].sha256_ctx = sha256_ctx; } -KERNEL_FQ void m19100_loop (KERN_ATTR_TMPS (qnx_sha256_tmp_t)) +KERNEL_FQ KERNEL_FA void m19100_loop (KERN_ATTR_TMPS (qnx_sha256_tmp_t)) { /** * base @@ -58,17 +76,26 @@ KERNEL_FQ void m19100_loop (KERN_ATTR_TMPS (qnx_sha256_tmp_t)) if (gid >= GID_CNT) return; + const u32 pw_len = pws[gid].pw_len; + + u32 w[64] = { 0 }; + + for (u32 i = 0, idx = 0; i < pw_len; i += 4, idx += 1) + { + w[idx] = hc_swap32_S (pws[gid].i[idx]); + } + sha256_ctx_t sha256_ctx = tmps[gid].sha256_ctx; for (u32 i = 0; i < LOOP_CNT; i++) { - sha256_update_global_swap (&sha256_ctx, pws[gid].i, pws[gid].pw_len); + sha256_update (&sha256_ctx, w, pw_len); } tmps[gid].sha256_ctx = sha256_ctx; } -KERNEL_FQ void m19100_comp (KERN_ATTR_TMPS (qnx_sha256_tmp_t)) +KERNEL_FQ KERNEL_FA void m19100_comp (KERN_ATTR_TMPS (qnx_sha256_tmp_t)) { /** * modifier diff --git a/OpenCL/m19200-pure.cl b/OpenCL/m19200-pure.cl index 4d62da229..58eb69d1c 100644 --- a/OpenCL/m19200-pure.cl +++ b/OpenCL/m19200-pure.cl @@ -155,7 +155,7 @@ DECLSPEC u32 sha512_update_128_qnxbug (PRIVATE_AS sha512_ctx_t *ctx, PRIVATE_AS return sav; } -DECLSPEC u32 sha512_update_global_swap_qnxbug (PRIVATE_AS sha512_ctx_t *ctx, GLOBAL_AS const u32 *w, const int len, u32 sav) +DECLSPEC u32 sha512_update_qnxbug (PRIVATE_AS sha512_ctx_t *ctx, PRIVATE_AS const u32 *w, const int len, u32 sav) { u32 w0[4]; u32 w1[4]; @@ -204,39 +204,6 @@ DECLSPEC u32 sha512_update_global_swap_qnxbug (PRIVATE_AS sha512_ctx_t *ctx, GLO w7[2] = w[pos4 + 30]; w7[3] = w[pos4 + 31]; - w0[0] = hc_swap32_S (w0[0]); - w0[1] = hc_swap32_S (w0[1]); - w0[2] = hc_swap32_S (w0[2]); - w0[3] = hc_swap32_S (w0[3]); - w1[0] = hc_swap32_S (w1[0]); - w1[1] = hc_swap32_S (w1[1]); - w1[2] = hc_swap32_S (w1[2]); - w1[3] = hc_swap32_S (w1[3]); - w2[0] = hc_swap32_S (w2[0]); - w2[1] = hc_swap32_S (w2[1]); - w2[2] = hc_swap32_S (w2[2]); - w2[3] = hc_swap32_S (w2[3]); - w3[0] = hc_swap32_S (w3[0]); - w3[1] = hc_swap32_S (w3[1]); - w3[2] = hc_swap32_S (w3[2]); - w3[3] = hc_swap32_S (w3[3]); - w4[0] = hc_swap32_S (w4[0]); - w4[1] = hc_swap32_S (w4[1]); - w4[2] = hc_swap32_S (w4[2]); - w4[3] = hc_swap32_S (w4[3]); - w5[0] = hc_swap32_S (w5[0]); - w5[1] = hc_swap32_S (w5[1]); - w5[2] = hc_swap32_S (w5[2]); - w5[3] = hc_swap32_S (w5[3]); - w6[0] = hc_swap32_S (w6[0]); - w6[1] = hc_swap32_S (w6[1]); - w6[2] = hc_swap32_S (w6[2]); - w6[3] = hc_swap32_S (w6[3]); - w7[0] = hc_swap32_S (w7[0]); - w7[1] = hc_swap32_S (w7[1]); - w7[2] = hc_swap32_S (w7[2]); - w7[3] = hc_swap32_S (w7[3]); - sav = sha512_update_128_qnxbug (ctx, w0, w1, w2, w3, w4, w5, w6, w7, 128, sav); } @@ -273,39 +240,6 @@ DECLSPEC u32 sha512_update_global_swap_qnxbug (PRIVATE_AS sha512_ctx_t *ctx, GLO w7[2] = w[pos4 + 30]; w7[3] = w[pos4 + 31]; - w0[0] = hc_swap32_S (w0[0]); - w0[1] = hc_swap32_S (w0[1]); - w0[2] = hc_swap32_S (w0[2]); - w0[3] = hc_swap32_S (w0[3]); - w1[0] = hc_swap32_S (w1[0]); - w1[1] = hc_swap32_S (w1[1]); - w1[2] = hc_swap32_S (w1[2]); - w1[3] = hc_swap32_S (w1[3]); - w2[0] = hc_swap32_S (w2[0]); - w2[1] = hc_swap32_S (w2[1]); - w2[2] = hc_swap32_S (w2[2]); - w2[3] = hc_swap32_S (w2[3]); - w3[0] = hc_swap32_S (w3[0]); - w3[1] = hc_swap32_S (w3[1]); - w3[2] = hc_swap32_S (w3[2]); - w3[3] = hc_swap32_S (w3[3]); - w4[0] = hc_swap32_S (w4[0]); - w4[1] = hc_swap32_S (w4[1]); - w4[2] = hc_swap32_S (w4[2]); - w4[3] = hc_swap32_S (w4[3]); - w5[0] = hc_swap32_S (w5[0]); - w5[1] = hc_swap32_S (w5[1]); - w5[2] = hc_swap32_S (w5[2]); - w5[3] = hc_swap32_S (w5[3]); - w6[0] = hc_swap32_S (w6[0]); - w6[1] = hc_swap32_S (w6[1]); - w6[2] = hc_swap32_S (w6[2]); - w6[3] = hc_swap32_S (w6[3]); - w7[0] = hc_swap32_S (w7[0]); - w7[1] = hc_swap32_S (w7[1]); - w7[2] = hc_swap32_S (w7[2]); - w7[3] = hc_swap32_S (w7[3]); - sav = sha512_update_128_qnxbug (ctx, w0, w1, w2, w3, w4, w5, w6, w7, len - pos1, sav); return sav; @@ -364,7 +298,7 @@ DECLSPEC void sha512_final_qnxbug (PRIVATE_AS sha512_ctx_t *ctx, u32 sav) sha512_transform (ctx->w0, ctx->w1, ctx->w2, ctx->w3, ctx->w4, ctx->w5, ctx->w6, ctx->w7, ctx->h); } -KERNEL_FQ void m19200_init (KERN_ATTR_TMPS (qnx_sha512_tmp_t)) +KERNEL_FQ KERNEL_FA void m19200_init (KERN_ATTR_TMPS (qnx_sha512_tmp_t)) { /** * base @@ -382,15 +316,33 @@ KERNEL_FQ void m19200_init (KERN_ATTR_TMPS (qnx_sha512_tmp_t)) sha512_init (&sha512_ctx); - sha512_update_global_swap (&sha512_ctx, salt_bufs[SALT_POS_HOST].salt_buf, salt_bufs[SALT_POS_HOST].salt_len); + const u32 pw_len = pws[gid].pw_len; - sha512_update_global_swap (&sha512_ctx, pws[gid].i, pws[gid].pw_len); + u32 w[64] = { 0 }; + + for (u32 i = 0, idx = 0; i < pw_len; i += 4, idx += 1) + { + w[idx] = hc_swap32_S (pws[gid].i[idx]); + } + + const u32 salt_len = salt_bufs[SALT_POS_HOST].salt_len; + + u32 s[64] = { 0 }; + + for (u32 i = 0, idx = 0; i < salt_len; i += 4, idx += 1) + { + s[idx] = hc_swap32_S (salt_bufs[SALT_POS_HOST].salt_buf[idx]); + } + + sha512_update (&sha512_ctx, s, salt_len); + + sha512_update (&sha512_ctx, w, pw_len); tmps[gid].sha512_ctx = sha512_ctx; tmps[gid].sav = 0; } -KERNEL_FQ void m19200_loop (KERN_ATTR_TMPS (qnx_sha512_tmp_t)) +KERNEL_FQ KERNEL_FA void m19200_loop (KERN_ATTR_TMPS (qnx_sha512_tmp_t)) { /** * base @@ -400,19 +352,28 @@ KERNEL_FQ void m19200_loop (KERN_ATTR_TMPS (qnx_sha512_tmp_t)) if (gid >= GID_CNT) return; + const u32 pw_len = pws[gid].pw_len; + + u32 w[64] = { 0 }; + + for (u32 i = 0, idx = 0; i < pw_len; i += 4, idx += 1) + { + w[idx] = hc_swap32_S (pws[gid].i[idx]); + } + sha512_ctx_t sha512_ctx = tmps[gid].sha512_ctx; u32 sav = tmps[gid].sav; for (u32 i = 0; i < LOOP_CNT; i++) { - sav = sha512_update_global_swap_qnxbug (&sha512_ctx, pws[gid].i, pws[gid].pw_len, sav); + sav = sha512_update_qnxbug (&sha512_ctx, w, pw_len, sav); } tmps[gid].sha512_ctx = sha512_ctx; tmps[gid].sav = sav; } -KERNEL_FQ void m19200_comp (KERN_ATTR_TMPS (qnx_sha512_tmp_t)) +KERNEL_FQ KERNEL_FA void m19200_comp (KERN_ATTR_TMPS (qnx_sha512_tmp_t)) { /** * modifier diff --git a/OpenCL/m19300_a0-pure.cl b/OpenCL/m19300_a0-pure.cl index a08b85c9e..2461ebc46 100644 --- a/OpenCL/m19300_a0-pure.cl +++ b/OpenCL/m19300_a0-pure.cl @@ -26,7 +26,7 @@ typedef struct sha1_double_salt } sha1_double_salt_t; -KERNEL_FQ void m19300_mxx (KERN_ATTR_RULES_ESALT (sha1_double_salt_t)) +KERNEL_FQ KERNEL_FA void m19300_mxx (KERN_ATTR_RULES_ESALT (sha1_double_salt_t)) { /** * modifier @@ -85,7 +85,7 @@ KERNEL_FQ void m19300_mxx (KERN_ATTR_RULES_ESALT (sha1_double_salt_t)) } } -KERNEL_FQ void m19300_sxx (KERN_ATTR_RULES_ESALT (sha1_double_salt_t)) +KERNEL_FQ KERNEL_FA void m19300_sxx (KERN_ATTR_RULES_ESALT (sha1_double_salt_t)) { /** * modifier diff --git a/OpenCL/m19300_a1-pure.cl b/OpenCL/m19300_a1-pure.cl index 236844816..0aede4dce 100644 --- a/OpenCL/m19300_a1-pure.cl +++ b/OpenCL/m19300_a1-pure.cl @@ -24,7 +24,7 @@ typedef struct sha1_double_salt } sha1_double_salt_t; -KERNEL_FQ void m19300_mxx (KERN_ATTR_ESALT (sha1_double_salt_t)) +KERNEL_FQ KERNEL_FA void m19300_mxx (KERN_ATTR_ESALT (sha1_double_salt_t)) { /** * modifier @@ -79,7 +79,7 @@ KERNEL_FQ void m19300_mxx (KERN_ATTR_ESALT (sha1_double_salt_t)) } } -KERNEL_FQ void m19300_sxx (KERN_ATTR_ESALT (sha1_double_salt_t)) +KERNEL_FQ KERNEL_FA void m19300_sxx (KERN_ATTR_ESALT (sha1_double_salt_t)) { /** * modifier diff --git a/OpenCL/m19300_a3-pure.cl b/OpenCL/m19300_a3-pure.cl index 2ad916d35..bfea266e9 100644 --- a/OpenCL/m19300_a3-pure.cl +++ b/OpenCL/m19300_a3-pure.cl @@ -24,7 +24,7 @@ typedef struct sha1_double_salt } sha1_double_salt_t; -KERNEL_FQ void m19300_mxx (KERN_ATTR_VECTOR_ESALT (sha1_double_salt_t)) +KERNEL_FQ KERNEL_FA void m19300_mxx (KERN_ATTR_VECTOR_ESALT (sha1_double_salt_t)) { /** * modifier @@ -96,7 +96,7 @@ KERNEL_FQ void m19300_mxx (KERN_ATTR_VECTOR_ESALT (sha1_double_salt_t)) } } -KERNEL_FQ void m19300_sxx (KERN_ATTR_VECTOR_ESALT (sha1_double_salt_t)) +KERNEL_FQ KERNEL_FA void m19300_sxx (KERN_ATTR_VECTOR_ESALT (sha1_double_salt_t)) { /** * modifier diff --git a/OpenCL/m19500_a0-pure.cl b/OpenCL/m19500_a0-pure.cl index 01c8b2279..d28bbc7aa 100644 --- a/OpenCL/m19500_a0-pure.cl +++ b/OpenCL/m19500_a0-pure.cl @@ -38,7 +38,7 @@ typedef struct devise_hash #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m19500_mxx (KERN_ATTR_RULES_ESALT (devise_hash_t)) +KERNEL_FQ KERNEL_FA void m19500_mxx (KERN_ATTR_RULES_ESALT (devise_hash_t)) { /** * modifier @@ -173,7 +173,7 @@ KERNEL_FQ void m19500_mxx (KERN_ATTR_RULES_ESALT (devise_hash_t)) } } -KERNEL_FQ void m19500_sxx (KERN_ATTR_RULES_ESALT (devise_hash_t)) +KERNEL_FQ KERNEL_FA void m19500_sxx (KERN_ATTR_RULES_ESALT (devise_hash_t)) { /** * modifier diff --git a/OpenCL/m19500_a1-pure.cl b/OpenCL/m19500_a1-pure.cl index 5b5afaadd..62c6f60f2 100644 --- a/OpenCL/m19500_a1-pure.cl +++ b/OpenCL/m19500_a1-pure.cl @@ -36,7 +36,7 @@ typedef struct devise_hash #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m19500_mxx (KERN_ATTR_ESALT (devise_hash_t)) +KERNEL_FQ KERNEL_FA void m19500_mxx (KERN_ATTR_ESALT (devise_hash_t)) { /** * modifier @@ -167,7 +167,7 @@ KERNEL_FQ void m19500_mxx (KERN_ATTR_ESALT (devise_hash_t)) } } -KERNEL_FQ void m19500_sxx (KERN_ATTR_ESALT (devise_hash_t)) +KERNEL_FQ KERNEL_FA void m19500_sxx (KERN_ATTR_ESALT (devise_hash_t)) { /** * modifier diff --git a/OpenCL/m19500_a3-pure.cl b/OpenCL/m19500_a3-pure.cl index 1efdb7af2..1e63bf291 100644 --- a/OpenCL/m19500_a3-pure.cl +++ b/OpenCL/m19500_a3-pure.cl @@ -36,7 +36,7 @@ typedef struct devise_hash #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m19500_mxx (KERN_ATTR_VECTOR_ESALT (devise_hash_t)) +KERNEL_FQ KERNEL_FA void m19500_mxx (KERN_ATTR_VECTOR_ESALT (devise_hash_t)) { /** * modifier @@ -182,7 +182,7 @@ KERNEL_FQ void m19500_mxx (KERN_ATTR_VECTOR_ESALT (devise_hash_t)) } } -KERNEL_FQ void m19500_sxx (KERN_ATTR_VECTOR_ESALT (devise_hash_t)) +KERNEL_FQ KERNEL_FA void m19500_sxx (KERN_ATTR_VECTOR_ESALT (devise_hash_t)) { /** * modifier diff --git a/OpenCL/m19600-pure.cl b/OpenCL/m19600-pure.cl index 916b79a84..d5924dc7e 100644 --- a/OpenCL/m19600-pure.cl +++ b/OpenCL/m19600-pure.cl @@ -115,7 +115,7 @@ DECLSPEC void hmac_sha1_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE sha1_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m19600_init (KERN_ATTR_TMPS_ESALT (krb5tgs_17_tmp_t, krb5tgs_17_t)) +KERNEL_FQ KERNEL_FA void m19600_init (KERN_ATTR_TMPS_ESALT (krb5tgs_17_tmp_t, krb5tgs_17_t)) { /** * base @@ -193,7 +193,7 @@ KERNEL_FQ void m19600_init (KERN_ATTR_TMPS_ESALT (krb5tgs_17_tmp_t, krb5tgs_17_t } } -KERNEL_FQ void m19600_loop (KERN_ATTR_TMPS_ESALT (krb5tgs_17_tmp_t, krb5tgs_17_t)) +KERNEL_FQ KERNEL_FA void m19600_loop (KERN_ATTR_TMPS_ESALT (krb5tgs_17_tmp_t, krb5tgs_17_t)) { /** * base @@ -281,7 +281,7 @@ KERNEL_FQ void m19600_loop (KERN_ATTR_TMPS_ESALT (krb5tgs_17_tmp_t, krb5tgs_17_t } } -KERNEL_FQ void m19600_comp (KERN_ATTR_TMPS_ESALT (krb5tgs_17_tmp_t, krb5tgs_17_t)) +KERNEL_FQ KERNEL_FA void m19600_comp (KERN_ATTR_TMPS_ESALT (krb5tgs_17_tmp_t, krb5tgs_17_t)) { /** * base diff --git a/OpenCL/m19700-pure.cl b/OpenCL/m19700-pure.cl index c3346bdc5..4584ff380 100644 --- a/OpenCL/m19700-pure.cl +++ b/OpenCL/m19700-pure.cl @@ -115,7 +115,7 @@ DECLSPEC void hmac_sha1_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE sha1_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m19700_init (KERN_ATTR_TMPS_ESALT (krb5tgs_18_tmp_t, krb5tgs_18_t)) +KERNEL_FQ KERNEL_FA void m19700_init (KERN_ATTR_TMPS_ESALT (krb5tgs_18_tmp_t, krb5tgs_18_t)) { /** * base @@ -193,7 +193,7 @@ KERNEL_FQ void m19700_init (KERN_ATTR_TMPS_ESALT (krb5tgs_18_tmp_t, krb5tgs_18_t } } -KERNEL_FQ void m19700_loop (KERN_ATTR_TMPS_ESALT (krb5tgs_18_tmp_t, krb5tgs_18_t)) +KERNEL_FQ KERNEL_FA void m19700_loop (KERN_ATTR_TMPS_ESALT (krb5tgs_18_tmp_t, krb5tgs_18_t)) { /** * base @@ -281,7 +281,7 @@ KERNEL_FQ void m19700_loop (KERN_ATTR_TMPS_ESALT (krb5tgs_18_tmp_t, krb5tgs_18_t } } -KERNEL_FQ void m19700_comp (KERN_ATTR_TMPS_ESALT (krb5tgs_18_tmp_t, krb5tgs_18_t)) +KERNEL_FQ KERNEL_FA void m19700_comp (KERN_ATTR_TMPS_ESALT (krb5tgs_18_tmp_t, krb5tgs_18_t)) { /** * base diff --git a/OpenCL/m19800-pure.cl b/OpenCL/m19800-pure.cl index 91ec5592c..c3d0d6129 100644 --- a/OpenCL/m19800-pure.cl +++ b/OpenCL/m19800-pure.cl @@ -115,7 +115,7 @@ DECLSPEC void hmac_sha1_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE sha1_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m19800_init (KERN_ATTR_TMPS_ESALT (krb5pa_17_tmp_t, krb5pa_17_t)) +KERNEL_FQ KERNEL_FA void m19800_init (KERN_ATTR_TMPS_ESALT (krb5pa_17_tmp_t, krb5pa_17_t)) { /** * base @@ -193,7 +193,7 @@ KERNEL_FQ void m19800_init (KERN_ATTR_TMPS_ESALT (krb5pa_17_tmp_t, krb5pa_17_t)) } } -KERNEL_FQ void m19800_loop (KERN_ATTR_TMPS_ESALT (krb5pa_17_tmp_t, krb5pa_17_t)) +KERNEL_FQ KERNEL_FA void m19800_loop (KERN_ATTR_TMPS_ESALT (krb5pa_17_tmp_t, krb5pa_17_t)) { /** * base @@ -281,7 +281,7 @@ KERNEL_FQ void m19800_loop (KERN_ATTR_TMPS_ESALT (krb5pa_17_tmp_t, krb5pa_17_t)) } } -KERNEL_FQ void m19800_comp (KERN_ATTR_TMPS_ESALT (krb5pa_17_tmp_t, krb5pa_17_t)) +KERNEL_FQ KERNEL_FA void m19800_comp (KERN_ATTR_TMPS_ESALT (krb5pa_17_tmp_t, krb5pa_17_t)) { /** * base diff --git a/OpenCL/m19900-pure.cl b/OpenCL/m19900-pure.cl index 05579ee15..301939dde 100644 --- a/OpenCL/m19900-pure.cl +++ b/OpenCL/m19900-pure.cl @@ -115,7 +115,7 @@ DECLSPEC void hmac_sha1_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE sha1_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m19900_init (KERN_ATTR_TMPS_ESALT (krb5pa_18_tmp_t, krb5pa_18_t)) +KERNEL_FQ KERNEL_FA void m19900_init (KERN_ATTR_TMPS_ESALT (krb5pa_18_tmp_t, krb5pa_18_t)) { /** * base @@ -193,7 +193,7 @@ KERNEL_FQ void m19900_init (KERN_ATTR_TMPS_ESALT (krb5pa_18_tmp_t, krb5pa_18_t)) } } -KERNEL_FQ void m19900_loop (KERN_ATTR_TMPS_ESALT (krb5pa_18_tmp_t, krb5pa_18_t)) +KERNEL_FQ KERNEL_FA void m19900_loop (KERN_ATTR_TMPS_ESALT (krb5pa_18_tmp_t, krb5pa_18_t)) { /** * base @@ -282,7 +282,7 @@ KERNEL_FQ void m19900_loop (KERN_ATTR_TMPS_ESALT (krb5pa_18_tmp_t, krb5pa_18_t)) } } -KERNEL_FQ void m19900_comp (KERN_ATTR_TMPS_ESALT (krb5pa_18_tmp_t, krb5pa_18_t)) +KERNEL_FQ KERNEL_FA void m19900_comp (KERN_ATTR_TMPS_ESALT (krb5pa_18_tmp_t, krb5pa_18_t)) { /** * base diff --git a/OpenCL/m20011-pure.cl b/OpenCL/m20011-pure.cl index dc40f80c3..ca1e785c8 100644 --- a/OpenCL/m20011-pure.cl +++ b/OpenCL/m20011-pure.cl @@ -92,7 +92,7 @@ DECLSPEC void hmac_sha512_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVA sha512_transform_vector (w0, w1, w2, w3, w4, w5, w6, w7, digest); } -KERNEL_FQ void m20011_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha512_tmp_t, diskcryptor_esalt_t)) +KERNEL_FQ KERNEL_FA void m20011_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha512_tmp_t, diskcryptor_esalt_t)) { /** * base @@ -196,7 +196,7 @@ KERNEL_FQ void m20011_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha512_tmp_t, diskcrypt } } -KERNEL_FQ void m20011_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha512_tmp_t, diskcryptor_esalt_t)) +KERNEL_FQ KERNEL_FA void m20011_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha512_tmp_t, diskcryptor_esalt_t)) { const u64 gid = get_global_id (0); @@ -322,7 +322,7 @@ KERNEL_FQ void m20011_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha512_tmp_t, diskcrypt } } -KERNEL_FQ void m20011_comp (KERN_ATTR_TMPS_ESALT (pbkdf2_sha512_tmp_t, diskcryptor_esalt_t)) +KERNEL_FQ KERNEL_FA void m20011_comp (KERN_ATTR_TMPS_ESALT (pbkdf2_sha512_tmp_t, diskcryptor_esalt_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m20012-pure.cl b/OpenCL/m20012-pure.cl index 8966e60ca..f5cb9fff5 100644 --- a/OpenCL/m20012-pure.cl +++ b/OpenCL/m20012-pure.cl @@ -92,7 +92,7 @@ DECLSPEC void hmac_sha512_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVA sha512_transform_vector (w0, w1, w2, w3, w4, w5, w6, w7, digest); } -KERNEL_FQ void m20012_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha512_tmp_t, diskcryptor_esalt_t)) +KERNEL_FQ KERNEL_FA void m20012_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha512_tmp_t, diskcryptor_esalt_t)) { /** * base @@ -196,7 +196,7 @@ KERNEL_FQ void m20012_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha512_tmp_t, diskcrypt } } -KERNEL_FQ void m20012_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha512_tmp_t, diskcryptor_esalt_t)) +KERNEL_FQ KERNEL_FA void m20012_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha512_tmp_t, diskcryptor_esalt_t)) { const u64 gid = get_global_id (0); @@ -322,7 +322,7 @@ KERNEL_FQ void m20012_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha512_tmp_t, diskcrypt } } -KERNEL_FQ void m20012_comp (KERN_ATTR_TMPS_ESALT (pbkdf2_sha512_tmp_t, diskcryptor_esalt_t)) +KERNEL_FQ KERNEL_FA void m20012_comp (KERN_ATTR_TMPS_ESALT (pbkdf2_sha512_tmp_t, diskcryptor_esalt_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m20013-pure.cl b/OpenCL/m20013-pure.cl index a26269980..ebb610504 100644 --- a/OpenCL/m20013-pure.cl +++ b/OpenCL/m20013-pure.cl @@ -92,7 +92,7 @@ DECLSPEC void hmac_sha512_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVA sha512_transform_vector (w0, w1, w2, w3, w4, w5, w6, w7, digest); } -KERNEL_FQ void m20013_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha512_tmp_t, diskcryptor_esalt_t)) +KERNEL_FQ KERNEL_FA void m20013_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha512_tmp_t, diskcryptor_esalt_t)) { /** * base @@ -196,7 +196,7 @@ KERNEL_FQ void m20013_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha512_tmp_t, diskcrypt } } -KERNEL_FQ void m20013_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha512_tmp_t, diskcryptor_esalt_t)) +KERNEL_FQ KERNEL_FA void m20013_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha512_tmp_t, diskcryptor_esalt_t)) { const u64 gid = get_global_id (0); @@ -322,7 +322,7 @@ KERNEL_FQ void m20013_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha512_tmp_t, diskcrypt } } -KERNEL_FQ void m20013_comp (KERN_ATTR_TMPS_ESALT (pbkdf2_sha512_tmp_t, diskcryptor_esalt_t)) +KERNEL_FQ KERNEL_FA void m20013_comp (KERN_ATTR_TMPS_ESALT (pbkdf2_sha512_tmp_t, diskcryptor_esalt_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m20500_a0-pure.cl b/OpenCL/m20500_a0-pure.cl index 7ab1ca4fa..f9a112314 100644 --- a/OpenCL/m20500_a0-pure.cl +++ b/OpenCL/m20500_a0-pure.cl @@ -151,7 +151,7 @@ CONSTANT_VK u32a crc32tab[256] = 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d }; -KERNEL_FQ void m20500_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m20500_sxx (KERN_ATTR_RULES ()) { /** * modifier @@ -225,7 +225,7 @@ KERNEL_FQ void m20500_sxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m20500_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m20500_mxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m20500_a1-pure.cl b/OpenCL/m20500_a1-pure.cl index 541b3cc6b..687d6d2f8 100644 --- a/OpenCL/m20500_a1-pure.cl +++ b/OpenCL/m20500_a1-pure.cl @@ -149,7 +149,7 @@ CONSTANT_VK u32a crc32tab[256] = 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d }; -KERNEL_FQ void m20500_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m20500_sxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -225,7 +225,7 @@ KERNEL_FQ void m20500_sxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m20500_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m20500_mxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m20500_a3-pure.cl b/OpenCL/m20500_a3-pure.cl index e7a9f137c..eb33dda6d 100644 --- a/OpenCL/m20500_a3-pure.cl +++ b/OpenCL/m20500_a3-pure.cl @@ -245,7 +245,7 @@ CONSTANT_VK u32a crc32tab[256] = 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d }; -KERNEL_FQ void m20500_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m20500_sxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -359,7 +359,7 @@ KERNEL_FQ void m20500_sxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m20500_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m20500_mxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m20510_a0-pure.cl b/OpenCL/m20510_a0-pure.cl index 59f088764..aa031c31a 100644 --- a/OpenCL/m20510_a0-pure.cl +++ b/OpenCL/m20510_a0-pure.cl @@ -465,7 +465,7 @@ DECLSPEC int derivelast6bytes (const u32x k0, const u32x k1, const u32x k2, PRIV return 0; } -KERNEL_FQ void m20510_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m20510_sxx (KERN_ATTR_RULES ()) { /** * modifier @@ -581,7 +581,7 @@ KERNEL_FQ void m20510_sxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m20510_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m20510_mxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m20510_a1-pure.cl b/OpenCL/m20510_a1-pure.cl index d0dc121fe..80d97e94f 100644 --- a/OpenCL/m20510_a1-pure.cl +++ b/OpenCL/m20510_a1-pure.cl @@ -463,7 +463,7 @@ DECLSPEC int derivelast6bytes (const u32x k0, const u32x k1, const u32x k2, PRIV return 0; } -KERNEL_FQ void m20510_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m20510_sxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -585,7 +585,7 @@ KERNEL_FQ void m20510_sxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m20510_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m20510_mxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m20510_a3-pure.cl b/OpenCL/m20510_a3-pure.cl index e2c6fc406..34ea3c6c4 100644 --- a/OpenCL/m20510_a3-pure.cl +++ b/OpenCL/m20510_a3-pure.cl @@ -463,7 +463,7 @@ DECLSPEC int derivelast6bytes (const u32x k0, const u32x k1, const u32x k2, PRIV return 0; } -KERNEL_FQ void m20510_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m20510_sxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -604,7 +604,7 @@ KERNEL_FQ void m20510_sxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m20510_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m20510_mxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m20600-pure.cl b/OpenCL/m20600-pure.cl index 1373bb96c..1927af091 100644 --- a/OpenCL/m20600-pure.cl +++ b/OpenCL/m20600-pure.cl @@ -25,7 +25,7 @@ typedef struct omt_sha256_tmp } omt_sha256_tmp_t; -KERNEL_FQ void m20600_init (KERN_ATTR_TMPS (omt_sha256_tmp_t)) +KERNEL_FQ KERNEL_FA void m20600_init (KERN_ATTR_TMPS (omt_sha256_tmp_t)) { /** * base @@ -59,7 +59,7 @@ KERNEL_FQ void m20600_init (KERN_ATTR_TMPS (omt_sha256_tmp_t)) tmps[gid].digest_buf[7] = sha256_ctx.h[7]; } -KERNEL_FQ void m20600_loop (KERN_ATTR_TMPS (omt_sha256_tmp_t)) +KERNEL_FQ KERNEL_FA void m20600_loop (KERN_ATTR_TMPS (omt_sha256_tmp_t)) { /** * base @@ -135,7 +135,7 @@ KERNEL_FQ void m20600_loop (KERN_ATTR_TMPS (omt_sha256_tmp_t)) unpackv (tmps, digest_buf, gid, 7, digest[7]); } -KERNEL_FQ void m20600_comp (KERN_ATTR_TMPS (omt_sha256_tmp_t)) +KERNEL_FQ KERNEL_FA void m20600_comp (KERN_ATTR_TMPS (omt_sha256_tmp_t)) { /** * modifier diff --git a/OpenCL/m20710_a0-optimized.cl b/OpenCL/m20710_a0-optimized.cl index f5385d316..ebf87bf3e 100644 --- a/OpenCL/m20710_a0-optimized.cl +++ b/OpenCL/m20710_a0-optimized.cl @@ -42,7 +42,7 @@ h = 0; \ } -KERNEL_FQ void m20710_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m20710_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -620,15 +620,15 @@ KERNEL_FQ void m20710_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m20710_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m20710_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m20710_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m20710_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m20710_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m20710_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -1224,10 +1224,10 @@ KERNEL_FQ void m20710_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m20710_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m20710_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m20710_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m20710_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m20710_a0-pure.cl b/OpenCL/m20710_a0-pure.cl index 47ef8c683..a70bb5527 100644 --- a/OpenCL/m20710_a0-pure.cl +++ b/OpenCL/m20710_a0-pure.cl @@ -28,7 +28,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m20710_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m20710_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -140,7 +140,7 @@ KERNEL_FQ void m20710_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m20710_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m20710_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m20710_a1-optimized.cl b/OpenCL/m20710_a1-optimized.cl index 044720593..7fb3745af 100644 --- a/OpenCL/m20710_a1-optimized.cl +++ b/OpenCL/m20710_a1-optimized.cl @@ -40,7 +40,7 @@ h = 0; \ } -KERNEL_FQ void m20710_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m20710_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -676,15 +676,15 @@ KERNEL_FQ void m20710_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m20710_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m20710_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m20710_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m20710_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m20710_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m20710_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -1338,10 +1338,10 @@ KERNEL_FQ void m20710_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m20710_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m20710_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m20710_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m20710_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m20710_a1-pure.cl b/OpenCL/m20710_a1-pure.cl index f2a6ac7d8..e79ea916a 100644 --- a/OpenCL/m20710_a1-pure.cl +++ b/OpenCL/m20710_a1-pure.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m20710_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m20710_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -136,7 +136,7 @@ KERNEL_FQ void m20710_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m20710_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m20710_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m20710_a3-optimized.cl b/OpenCL/m20710_a3-optimized.cl index ab959ef93..3f85a2413 100644 --- a/OpenCL/m20710_a3-optimized.cl +++ b/OpenCL/m20710_a3-optimized.cl @@ -1123,7 +1123,7 @@ DECLSPEC void m20710s (PRIVATE_AS u32 *w, const u32 pw_len, KERN_ATTR_FUNC_VECTO } } -KERNEL_FQ void m20710_m04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m20710_m04 (KERN_ATTR_VECTOR ()) { /** * base @@ -1184,7 +1184,7 @@ KERNEL_FQ void m20710_m04 (KERN_ATTR_VECTOR ()) m20710m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m20710_m08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m20710_m08 (KERN_ATTR_VECTOR ()) { /** * base @@ -1245,7 +1245,7 @@ KERNEL_FQ void m20710_m08 (KERN_ATTR_VECTOR ()) m20710m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m20710_m16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m20710_m16 (KERN_ATTR_VECTOR ()) { /** * base @@ -1306,7 +1306,7 @@ KERNEL_FQ void m20710_m16 (KERN_ATTR_VECTOR ()) m20710m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m20710_s04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m20710_s04 (KERN_ATTR_VECTOR ()) { /** * base @@ -1367,7 +1367,7 @@ KERNEL_FQ void m20710_s04 (KERN_ATTR_VECTOR ()) m20710s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m20710_s08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m20710_s08 (KERN_ATTR_VECTOR ()) { /** * base @@ -1428,7 +1428,7 @@ KERNEL_FQ void m20710_s08 (KERN_ATTR_VECTOR ()) m20710s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m20710_s16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m20710_s16 (KERN_ATTR_VECTOR ()) { /** * base diff --git a/OpenCL/m20710_a3-pure.cl b/OpenCL/m20710_a3-pure.cl index e17cb76e9..08bc4157a 100644 --- a/OpenCL/m20710_a3-pure.cl +++ b/OpenCL/m20710_a3-pure.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m20710_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m20710_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -149,7 +149,7 @@ KERNEL_FQ void m20710_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m20710_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m20710_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m20712_a0-optimized.cl b/OpenCL/m20712_a0-optimized.cl index 48f5e9463..3ff867c7f 100644 --- a/OpenCL/m20712_a0-optimized.cl +++ b/OpenCL/m20712_a0-optimized.cl @@ -42,7 +42,7 @@ h = 0; \ } -KERNEL_FQ void m20712_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m20712_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -620,15 +620,15 @@ KERNEL_FQ void m20712_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m20712_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m20712_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m20712_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m20712_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m20712_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m20712_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -1224,10 +1224,10 @@ KERNEL_FQ void m20712_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m20712_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m20712_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m20712_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m20712_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m20712_a0-pure.cl b/OpenCL/m20712_a0-pure.cl index 4ec9014e3..ae9cadb18 100644 --- a/OpenCL/m20712_a0-pure.cl +++ b/OpenCL/m20712_a0-pure.cl @@ -28,7 +28,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m20712_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m20712_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -140,7 +140,7 @@ KERNEL_FQ void m20712_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m20712_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m20712_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m20712_a1-optimized.cl b/OpenCL/m20712_a1-optimized.cl index b1088a630..3979e8e73 100644 --- a/OpenCL/m20712_a1-optimized.cl +++ b/OpenCL/m20712_a1-optimized.cl @@ -40,7 +40,7 @@ h = 0; \ } -KERNEL_FQ void m20712_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m20712_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -676,15 +676,15 @@ KERNEL_FQ void m20712_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m20712_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m20712_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m20712_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m20712_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m20712_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m20712_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -1338,10 +1338,10 @@ KERNEL_FQ void m20712_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m20712_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m20712_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m20712_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m20712_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m20712_a1-pure.cl b/OpenCL/m20712_a1-pure.cl index b713e2eca..8bb18c4c1 100644 --- a/OpenCL/m20712_a1-pure.cl +++ b/OpenCL/m20712_a1-pure.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m20712_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m20712_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -136,7 +136,7 @@ KERNEL_FQ void m20712_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m20712_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m20712_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m20712_a3-optimized.cl b/OpenCL/m20712_a3-optimized.cl index 2814cbe69..8008a7a93 100644 --- a/OpenCL/m20712_a3-optimized.cl +++ b/OpenCL/m20712_a3-optimized.cl @@ -1123,7 +1123,7 @@ DECLSPEC void m20712s (PRIVATE_AS u32 *w, const u32 pw_len, KERN_ATTR_FUNC_VECTO } } -KERNEL_FQ void m20712_m04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m20712_m04 (KERN_ATTR_VECTOR ()) { /** * base @@ -1184,7 +1184,7 @@ KERNEL_FQ void m20712_m04 (KERN_ATTR_VECTOR ()) m20712m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m20712_m08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m20712_m08 (KERN_ATTR_VECTOR ()) { /** * base @@ -1245,7 +1245,7 @@ KERNEL_FQ void m20712_m08 (KERN_ATTR_VECTOR ()) m20712m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m20712_m16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m20712_m16 (KERN_ATTR_VECTOR ()) { /** * base @@ -1306,7 +1306,7 @@ KERNEL_FQ void m20712_m16 (KERN_ATTR_VECTOR ()) m20712m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m20712_s04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m20712_s04 (KERN_ATTR_VECTOR ()) { /** * base @@ -1367,7 +1367,7 @@ KERNEL_FQ void m20712_s04 (KERN_ATTR_VECTOR ()) m20712s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m20712_s08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m20712_s08 (KERN_ATTR_VECTOR ()) { /** * base @@ -1428,7 +1428,7 @@ KERNEL_FQ void m20712_s08 (KERN_ATTR_VECTOR ()) m20712s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m20712_s16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m20712_s16 (KERN_ATTR_VECTOR ()) { /** * base diff --git a/OpenCL/m20712_a3-pure.cl b/OpenCL/m20712_a3-pure.cl index 908b8ca2d..715441e84 100644 --- a/OpenCL/m20712_a3-pure.cl +++ b/OpenCL/m20712_a3-pure.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m20712_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m20712_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -149,7 +149,7 @@ KERNEL_FQ void m20712_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m20712_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m20712_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m20720_a0-pure.cl b/OpenCL/m20720_a0-pure.cl index a25d65181..558f4f298 100644 --- a/OpenCL/m20720_a0-pure.cl +++ b/OpenCL/m20720_a0-pure.cl @@ -28,7 +28,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m20720_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m20720_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -140,7 +140,7 @@ KERNEL_FQ void m20720_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m20720_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m20720_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m20720_a1-pure.cl b/OpenCL/m20720_a1-pure.cl index 82ebdb8d2..534b2b46b 100644 --- a/OpenCL/m20720_a1-pure.cl +++ b/OpenCL/m20720_a1-pure.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m20720_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m20720_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -136,7 +136,7 @@ KERNEL_FQ void m20720_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m20720_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m20720_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m20720_a3-pure.cl b/OpenCL/m20720_a3-pure.cl index 0caa7bd4f..0a02220e5 100644 --- a/OpenCL/m20720_a3-pure.cl +++ b/OpenCL/m20720_a3-pure.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m20720_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m20720_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -149,7 +149,7 @@ KERNEL_FQ void m20720_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m20720_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m20720_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m20730_a0-pure.cl b/OpenCL/m20730_a0-pure.cl new file mode 100644 index 000000000..e87187d91 --- /dev/null +++ b/OpenCL/m20730_a0-pure.cl @@ -0,0 +1,253 @@ +/** + * Author......: Andreas Vikerup @ Shelltrail + * License.....: MIT + */ + +//#define NEW_SIMD_CODE + +#ifdef KERNEL_STATIC +#include M2S(INCLUDE_PATH/inc_vendor.h) +#include M2S(INCLUDE_PATH/inc_types.h) +#include M2S(INCLUDE_PATH/inc_platform.cl) +#include M2S(INCLUDE_PATH/inc_common.cl) +#include M2S(INCLUDE_PATH/inc_rp.h) +#include M2S(INCLUDE_PATH/inc_rp.cl) +#include M2S(INCLUDE_PATH/inc_scalar.cl) +#include M2S(INCLUDE_PATH/inc_hash_sha256.cl) +#endif + +#if VECT_SIZE == 1 +#define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i)]) +#elif VECT_SIZE == 2 +#define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1]) +#elif VECT_SIZE == 4 +#define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3]) +#elif VECT_SIZE == 8 +#define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7]) +#elif VECT_SIZE == 16 +#define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) +#endif + +KERNEL_FQ KERNEL_FA void m20730_mxx (KERN_ATTR_RULES ()) +{ + /** + * modifier + */ + + const u64 gid = get_global_id (0); + const u64 lid = get_local_id (0); + const u64 lsz = get_local_size (0); + + /** + * bin2asc table + */ + + LOCAL_VK u32 l_bin2asc[256]; + + for (u32 i = lid; i < 256; i += lsz) + { + const u32 i0 = (i >> 0) & 15; + const u32 i1 = (i >> 4) & 15; + + l_bin2asc[i] = ((i0 < 10) ? '0' + i0 : 'a' - 10 + i0) << 0 + | ((i1 < 10) ? '0' + i1 : 'a' - 10 + i1) << 8; + } + + SYNC_THREADS (); + + if (gid >= GID_CNT) return; + + /** + * base + */ + + u32 w0[4]; + u32 w1[4]; + u32 w2[4]; + u32 w3[4]; + + COPY_PW (pws[gid]); + + const u32 salt_len = salt_bufs[SALT_POS_HOST].salt_len; + + u32 s[64] = { 0 }; + + for (int i = 0, idx = 0; i < salt_len; i += 4, idx += 1) + { + s[idx] = hc_swap32_S (salt_bufs[SALT_POS_HOST].salt_buf[idx]); + } + + /** + * loop + */ + + for (u32 il_pos = 0; il_pos < IL_CNT; il_pos++) + { + pw_t tmp = PASTE_PW; + + tmp.pw_len = apply_rules (rules_buf[il_pos].cmds, tmp.i, tmp.pw_len); + + sha256_ctx_t ctx0; + sha256_init (&ctx0); + sha256_update_swap (&ctx0, tmp.i, tmp.pw_len); + sha256_update (&ctx0, s, salt_len); + sha256_final (&ctx0); + + const u32 a = ctx0.h[0]; + const u32 b = ctx0.h[1]; + const u32 c = ctx0.h[2]; + const u32 d = ctx0.h[3]; + const u32 e = ctx0.h[4]; + const u32 f = ctx0.h[5]; + const u32 g = ctx0.h[6]; + const u32 h = ctx0.h[7]; + + sha256_ctx_t ctx; + sha256_init (&ctx); + + w0[0] = uint_to_hex_lower8_le ((a >> 16) & 255) << 0 | uint_to_hex_lower8_le ((a >> 24) & 255) << 16; + w0[1] = uint_to_hex_lower8_le ((a >> 0) & 255) << 0 | uint_to_hex_lower8_le ((a >> 8) & 255) << 16; + w0[2] = uint_to_hex_lower8_le ((b >> 16) & 255) << 0 | uint_to_hex_lower8_le ((b >> 24) & 255) << 16; + w0[3] = uint_to_hex_lower8_le ((b >> 0) & 255) << 0 | uint_to_hex_lower8_le ((b >> 8) & 255) << 16; + w1[0] = uint_to_hex_lower8_le ((c >> 16) & 255) << 0 | uint_to_hex_lower8_le ((c >> 24) & 255) << 16; + w1[1] = uint_to_hex_lower8_le ((c >> 0) & 255) << 0 | uint_to_hex_lower8_le ((c >> 8) & 255) << 16; + w1[2] = uint_to_hex_lower8_le ((d >> 16) & 255) << 0 | uint_to_hex_lower8_le ((d >> 24) & 255) << 16; + w1[3] = uint_to_hex_lower8_le ((d >> 0) & 255) << 0 | uint_to_hex_lower8_le ((d >> 8) & 255) << 16; + w2[0] = uint_to_hex_lower8_le ((e >> 16) & 255) << 0 | uint_to_hex_lower8_le ((e >> 24) & 255) << 16; + w2[1] = uint_to_hex_lower8_le ((e >> 0) & 255) << 0 | uint_to_hex_lower8_le ((e >> 8) & 255) << 16; + w2[2] = uint_to_hex_lower8_le ((f >> 16) & 255) << 0 | uint_to_hex_lower8_le ((f >> 24) & 255) << 16; + w2[3] = uint_to_hex_lower8_le ((f >> 0) & 255) << 0 | uint_to_hex_lower8_le ((f >> 8) & 255) << 16; + w3[0] = uint_to_hex_lower8_le ((g >> 16) & 255) << 0 | uint_to_hex_lower8_le ((g >> 24) & 255) << 16; + w3[1] = uint_to_hex_lower8_le ((g >> 0) & 255) << 0 | uint_to_hex_lower8_le ((g >> 8) & 255) << 16; + w3[2] = uint_to_hex_lower8_le ((h >> 16) & 255) << 0 | uint_to_hex_lower8_le ((h >> 24) & 255) << 16; + w3[3] = uint_to_hex_lower8_le ((h >> 0) & 255) << 0 | uint_to_hex_lower8_le ((h >> 8) & 255) << 16; + + sha256_update_64 (&ctx, w0, w1, w2, w3, 64); + sha256_final (&ctx); + + const u32 r0 = ctx.h[DGST_R0]; + const u32 r1 = ctx.h[DGST_R1]; + const u32 r2 = ctx.h[DGST_R2]; + const u32 r3 = ctx.h[DGST_R3]; + + COMPARE_M_SCALAR (r0, r1, r2, r3); + } +} + +KERNEL_FQ KERNEL_FA void m20730_sxx (KERN_ATTR_RULES ()) +{ + /** + * modifier + */ + + const u64 gid = get_global_id (0); + const u64 lid = get_local_id (0); + const u64 lsz = get_local_size (0); + + /** + * bin2asc table + */ + + LOCAL_VK u32 l_bin2asc[256]; + + for (u32 i = lid; i < 256; i += lsz) + { + const u32 i0 = (i >> 0) & 15; + const u32 i1 = (i >> 4) & 15; + + l_bin2asc[i] = ((i0 < 10) ? '0' + i0 : 'a' - 10 + i0) << 0 + | ((i1 < 10) ? '0' + i1 : 'a' - 10 + i1) << 8; + } + + SYNC_THREADS (); + + if (gid >= GID_CNT) return; + + /** + * digest + */ + + const u32 search[4] = + { + digests_buf[DIGESTS_OFFSET_HOST].digest_buf[DGST_R0], + digests_buf[DIGESTS_OFFSET_HOST].digest_buf[DGST_R1], + digests_buf[DIGESTS_OFFSET_HOST].digest_buf[DGST_R2], + digests_buf[DIGESTS_OFFSET_HOST].digest_buf[DGST_R3] + }; + + /** + * base + */ + + u32 w0[4]; + u32 w1[4]; + u32 w2[4]; + u32 w3[4]; + + COPY_PW (pws[gid]); + + const u32 salt_len = salt_bufs[SALT_POS_HOST].salt_len; + + u32 s[64] = { 0 }; + + for (int i = 0, idx = 0; i < salt_len; i += 4, idx += 1) + { + s[idx] = hc_swap32_S (salt_bufs[SALT_POS_HOST].salt_buf[idx]); + } + + /** + * loop + */ + + for (u32 il_pos = 0; il_pos < IL_CNT; il_pos++) + { + pw_t tmp = PASTE_PW; + + tmp.pw_len = apply_rules (rules_buf[il_pos].cmds, tmp.i, tmp.pw_len); + + sha256_ctx_t ctx0; + sha256_init (&ctx0); + sha256_update_swap (&ctx0, tmp.i, tmp.pw_len); + sha256_update (&ctx0, s, salt_len); + sha256_final (&ctx0); + + const u32 a = ctx0.h[0]; + const u32 b = ctx0.h[1]; + const u32 c = ctx0.h[2]; + const u32 d = ctx0.h[3]; + const u32 e = ctx0.h[4]; + const u32 f = ctx0.h[5]; + const u32 g = ctx0.h[6]; + const u32 h = ctx0.h[7]; + + sha256_ctx_t ctx; + sha256_init (&ctx); + + w0[0] = uint_to_hex_lower8_le ((a >> 16) & 255) << 0 | uint_to_hex_lower8_le ((a >> 24) & 255) << 16; + w0[1] = uint_to_hex_lower8_le ((a >> 0) & 255) << 0 | uint_to_hex_lower8_le ((a >> 8) & 255) << 16; + w0[2] = uint_to_hex_lower8_le ((b >> 16) & 255) << 0 | uint_to_hex_lower8_le ((b >> 24) & 255) << 16; + w0[3] = uint_to_hex_lower8_le ((b >> 0) & 255) << 0 | uint_to_hex_lower8_le ((b >> 8) & 255) << 16; + w1[0] = uint_to_hex_lower8_le ((c >> 16) & 255) << 0 | uint_to_hex_lower8_le ((c >> 24) & 255) << 16; + w1[1] = uint_to_hex_lower8_le ((c >> 0) & 255) << 0 | uint_to_hex_lower8_le ((c >> 8) & 255) << 16; + w1[2] = uint_to_hex_lower8_le ((d >> 16) & 255) << 0 | uint_to_hex_lower8_le ((d >> 24) & 255) << 16; + w1[3] = uint_to_hex_lower8_le ((d >> 0) & 255) << 0 | uint_to_hex_lower8_le ((d >> 8) & 255) << 16; + w2[0] = uint_to_hex_lower8_le ((e >> 16) & 255) << 0 | uint_to_hex_lower8_le ((e >> 24) & 255) << 16; + w2[1] = uint_to_hex_lower8_le ((e >> 0) & 255) << 0 | uint_to_hex_lower8_le ((e >> 8) & 255) << 16; + w2[2] = uint_to_hex_lower8_le ((f >> 16) & 255) << 0 | uint_to_hex_lower8_le ((f >> 24) & 255) << 16; + w2[3] = uint_to_hex_lower8_le ((f >> 0) & 255) << 0 | uint_to_hex_lower8_le ((f >> 8) & 255) << 16; + w3[0] = uint_to_hex_lower8_le ((g >> 16) & 255) << 0 | uint_to_hex_lower8_le ((g >> 24) & 255) << 16; + w3[1] = uint_to_hex_lower8_le ((g >> 0) & 255) << 0 | uint_to_hex_lower8_le ((g >> 8) & 255) << 16; + w3[2] = uint_to_hex_lower8_le ((h >> 16) & 255) << 0 | uint_to_hex_lower8_le ((h >> 24) & 255) << 16; + w3[3] = uint_to_hex_lower8_le ((h >> 0) & 255) << 0 | uint_to_hex_lower8_le ((h >> 8) & 255) << 16; + + sha256_update_64 (&ctx, w0, w1, w2, w3, 64); + sha256_final (&ctx); + + const u32 r0 = ctx.h[DGST_R0]; + const u32 r1 = ctx.h[DGST_R1]; + const u32 r2 = ctx.h[DGST_R2]; + const u32 r3 = ctx.h[DGST_R3]; + + COMPARE_S_SCALAR (r0, r1, r2, r3); + } +} diff --git a/OpenCL/m20730_a1-pure.cl b/OpenCL/m20730_a1-pure.cl new file mode 100644 index 000000000..1971c359f --- /dev/null +++ b/OpenCL/m20730_a1-pure.cl @@ -0,0 +1,257 @@ +/** + * Author......: Andreas Vikerup @ Shelltrail + * License.....: MIT + */ + +//#define NEW_SIMD_CODE + +#ifdef KERNEL_STATIC +#include M2S(INCLUDE_PATH/inc_vendor.h) +#include M2S(INCLUDE_PATH/inc_types.h) +#include M2S(INCLUDE_PATH/inc_platform.cl) +#include M2S(INCLUDE_PATH/inc_common.cl) +#include M2S(INCLUDE_PATH/inc_scalar.cl) +#include M2S(INCLUDE_PATH/inc_hash_sha256.cl) +#endif + +#if VECT_SIZE == 1 +#define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i)]) +#elif VECT_SIZE == 2 +#define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1]) +#elif VECT_SIZE == 4 +#define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3]) +#elif VECT_SIZE == 8 +#define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7]) +#elif VECT_SIZE == 16 +#define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) +#endif + +KERNEL_FQ KERNEL_FA void m20730_mxx (KERN_ATTR_BASIC ()) +{ + /** + * modifier + */ + + const u64 lid = get_local_id (0); + const u64 gid = get_global_id (0); + const u64 lsz = get_local_size (0); + + /** + * bin2asc table + */ + + LOCAL_VK u32 l_bin2asc[256]; + + for (u32 i = lid; i < 256; i += lsz) + { + const u32 i0 = (i >> 0) & 15; + const u32 i1 = (i >> 4) & 15; + + l_bin2asc[i] = ((i0 < 10) ? '0' + i0 : 'a' - 10 + i0) << 0 + | ((i1 < 10) ? '0' + i1 : 'a' - 10 + i1) << 8; + } + + SYNC_THREADS (); + + if (gid >= GID_CNT) return; + + /** + * base + */ + + u32 w0[4]; + u32 w1[4]; + u32 w2[4]; + u32 w3[4]; + + u32 s[64] = { 0 }; + + const u32 salt_len = salt_bufs[SALT_POS_HOST].salt_len; + + for (int i = 0, idx = 0; i < salt_len; i += 4, idx += 1) + { + s[idx] = hc_swap32_S (salt_bufs[SALT_POS_HOST].salt_buf[idx]); + } + + sha256_ctx_t ctx1; + + sha256_init (&ctx1); + + sha256_update_global_swap (&ctx1, pws[gid].i, pws[gid].pw_len); + + /** + * loop + */ + + for (u32 il_pos = 0; il_pos < IL_CNT; il_pos++) + { + sha256_ctx_t ctx0 = ctx1; + + sha256_update_global_swap (&ctx0, combs_buf[il_pos].i, combs_buf[il_pos].pw_len); + sha256_update (&ctx0, s, salt_len); + + sha256_final (&ctx0); + + const u32 a = ctx0.h[0]; + const u32 b = ctx0.h[1]; + const u32 c = ctx0.h[2]; + const u32 d = ctx0.h[3]; + const u32 e = ctx0.h[4]; + const u32 f = ctx0.h[5]; + const u32 g = ctx0.h[6]; + const u32 h = ctx0.h[7]; + + sha256_ctx_t ctx; + + sha256_init (&ctx); + + w0[0] = uint_to_hex_lower8_le ((a >> 16) & 255) << 0 | uint_to_hex_lower8_le ((a >> 24) & 255) << 16; + w0[1] = uint_to_hex_lower8_le ((a >> 0) & 255) << 0 | uint_to_hex_lower8_le ((a >> 8) & 255) << 16; + w0[2] = uint_to_hex_lower8_le ((b >> 16) & 255) << 0 | uint_to_hex_lower8_le ((b >> 24) & 255) << 16; + w0[3] = uint_to_hex_lower8_le ((b >> 0) & 255) << 0 | uint_to_hex_lower8_le ((b >> 8) & 255) << 16; + w1[0] = uint_to_hex_lower8_le ((c >> 16) & 255) << 0 | uint_to_hex_lower8_le ((c >> 24) & 255) << 16; + w1[1] = uint_to_hex_lower8_le ((c >> 0) & 255) << 0 | uint_to_hex_lower8_le ((c >> 8) & 255) << 16; + w1[2] = uint_to_hex_lower8_le ((d >> 16) & 255) << 0 | uint_to_hex_lower8_le ((d >> 24) & 255) << 16; + w1[3] = uint_to_hex_lower8_le ((d >> 0) & 255) << 0 | uint_to_hex_lower8_le ((d >> 8) & 255) << 16; + w2[0] = uint_to_hex_lower8_le ((e >> 16) & 255) << 0 | uint_to_hex_lower8_le ((e >> 24) & 255) << 16; + w2[1] = uint_to_hex_lower8_le ((e >> 0) & 255) << 0 | uint_to_hex_lower8_le ((e >> 8) & 255) << 16; + w2[2] = uint_to_hex_lower8_le ((f >> 16) & 255) << 0 | uint_to_hex_lower8_le ((f >> 24) & 255) << 16; + w2[3] = uint_to_hex_lower8_le ((f >> 0) & 255) << 0 | uint_to_hex_lower8_le ((f >> 8) & 255) << 16; + w3[0] = uint_to_hex_lower8_le ((g >> 16) & 255) << 0 | uint_to_hex_lower8_le ((g >> 24) & 255) << 16; + w3[1] = uint_to_hex_lower8_le ((g >> 0) & 255) << 0 | uint_to_hex_lower8_le ((g >> 8) & 255) << 16; + w3[2] = uint_to_hex_lower8_le ((h >> 16) & 255) << 0 | uint_to_hex_lower8_le ((h >> 24) & 255) << 16; + w3[3] = uint_to_hex_lower8_le ((h >> 0) & 255) << 0 | uint_to_hex_lower8_le ((h >> 8) & 255) << 16; + + sha256_update_64 (&ctx, w0, w1, w2, w3, 64); + + sha256_final (&ctx); + + const u32 r0 = ctx.h[DGST_R0]; + const u32 r1 = ctx.h[DGST_R1]; + const u32 r2 = ctx.h[DGST_R2]; + const u32 r3 = ctx.h[DGST_R3]; + + COMPARE_M_SCALAR (r0, r1, r2, r3); + } +} + +KERNEL_FQ KERNEL_FA void m20730_sxx (KERN_ATTR_BASIC ()) +{ + /** + * modifier + */ + + const u64 lid = get_local_id (0); + const u64 gid = get_global_id (0); + const u64 lsz = get_local_size (0); + + /** + * bin2asc table + */ + + LOCAL_VK u32 l_bin2asc[256]; + + for (u32 i = lid; i < 256; i += lsz) + { + const u32 i0 = (i >> 0) & 15; + const u32 i1 = (i >> 4) & 15; + + l_bin2asc[i] = ((i0 < 10) ? '0' + i0 : 'a' - 10 + i0) << 0 + | ((i1 < 10) ? '0' + i1 : 'a' - 10 + i1) << 8; + } + + SYNC_THREADS (); + + if (gid >= GID_CNT) return; + + /** + * digest + */ + + const u32 search[4] = + { + digests_buf[DIGESTS_OFFSET_HOST].digest_buf[DGST_R0], + digests_buf[DIGESTS_OFFSET_HOST].digest_buf[DGST_R1], + digests_buf[DIGESTS_OFFSET_HOST].digest_buf[DGST_R2], + digests_buf[DIGESTS_OFFSET_HOST].digest_buf[DGST_R3] + }; + + /** + * base + */ + + u32 w0[4]; + u32 w1[4]; + u32 w2[4]; + u32 w3[4]; + + const u32 salt_len = salt_bufs[SALT_POS_HOST].salt_len; + + u32 s[64] = { 0 }; + + for (int i = 0, idx = 0; i < salt_len; i += 4, idx += 1) + { + s[idx] = hc_swap32_S (salt_bufs[SALT_POS_HOST].salt_buf[idx]); + } + + sha256_ctx_t ctx1; + + sha256_init (&ctx1); + + sha256_update_global_swap (&ctx1, pws[gid].i, pws[gid].pw_len); + + /** + * loop + */ + + for (u32 il_pos = 0; il_pos < IL_CNT; il_pos++) + { + sha256_ctx_t ctx0 = ctx1; + + sha256_update_global_swap (&ctx0, combs_buf[il_pos].i, combs_buf[il_pos].pw_len); + sha256_update (&ctx0, s, salt_len); + + sha256_final (&ctx0); + + const u32 a = ctx0.h[0]; + const u32 b = ctx0.h[1]; + const u32 c = ctx0.h[2]; + const u32 d = ctx0.h[3]; + const u32 e = ctx0.h[4]; + const u32 f = ctx0.h[5]; + const u32 g = ctx0.h[6]; + const u32 h = ctx0.h[7]; + + sha256_ctx_t ctx; + + sha256_init (&ctx); + + w0[0] = uint_to_hex_lower8_le ((a >> 16) & 255) << 0 | uint_to_hex_lower8_le ((a >> 24) & 255) << 16; + w0[1] = uint_to_hex_lower8_le ((a >> 0) & 255) << 0 | uint_to_hex_lower8_le ((a >> 8) & 255) << 16; + w0[2] = uint_to_hex_lower8_le ((b >> 16) & 255) << 0 | uint_to_hex_lower8_le ((b >> 24) & 255) << 16; + w0[3] = uint_to_hex_lower8_le ((b >> 0) & 255) << 0 | uint_to_hex_lower8_le ((b >> 8) & 255) << 16; + w1[0] = uint_to_hex_lower8_le ((c >> 16) & 255) << 0 | uint_to_hex_lower8_le ((c >> 24) & 255) << 16; + w1[1] = uint_to_hex_lower8_le ((c >> 0) & 255) << 0 | uint_to_hex_lower8_le ((c >> 8) & 255) << 16; + w1[2] = uint_to_hex_lower8_le ((d >> 16) & 255) << 0 | uint_to_hex_lower8_le ((d >> 24) & 255) << 16; + w1[3] = uint_to_hex_lower8_le ((d >> 0) & 255) << 0 | uint_to_hex_lower8_le ((d >> 8) & 255) << 16; + w2[0] = uint_to_hex_lower8_le ((e >> 16) & 255) << 0 | uint_to_hex_lower8_le ((e >> 24) & 255) << 16; + w2[1] = uint_to_hex_lower8_le ((e >> 0) & 255) << 0 | uint_to_hex_lower8_le ((e >> 8) & 255) << 16; + w2[2] = uint_to_hex_lower8_le ((f >> 16) & 255) << 0 | uint_to_hex_lower8_le ((f >> 24) & 255) << 16; + w2[3] = uint_to_hex_lower8_le ((f >> 0) & 255) << 0 | uint_to_hex_lower8_le ((f >> 8) & 255) << 16; + w3[0] = uint_to_hex_lower8_le ((g >> 16) & 255) << 0 | uint_to_hex_lower8_le ((g >> 24) & 255) << 16; + w3[1] = uint_to_hex_lower8_le ((g >> 0) & 255) << 0 | uint_to_hex_lower8_le ((g >> 8) & 255) << 16; + w3[2] = uint_to_hex_lower8_le ((h >> 16) & 255) << 0 | uint_to_hex_lower8_le ((h >> 24) & 255) << 16; + w3[3] = uint_to_hex_lower8_le ((h >> 0) & 255) << 0 | uint_to_hex_lower8_le ((h >> 8) & 255) << 16; + + sha256_update_64 (&ctx, w0, w1, w2, w3, 64); + + sha256_final (&ctx); + + const u32 r0 = ctx.h[DGST_R0]; + const u32 r1 = ctx.h[DGST_R1]; + const u32 r2 = ctx.h[DGST_R2]; + const u32 r3 = ctx.h[DGST_R3]; + + COMPARE_S_SCALAR (r0, r1, r2, r3); + } +} diff --git a/OpenCL/m20730_a3-pure.cl b/OpenCL/m20730_a3-pure.cl new file mode 100644 index 000000000..9c1b3654a --- /dev/null +++ b/OpenCL/m20730_a3-pure.cl @@ -0,0 +1,283 @@ +/** + * Author......: Andreas Vikerup @ Shelltrail + * License.....: MIT + */ + +#define NEW_SIMD_CODE + +#ifdef KERNEL_STATIC +#include M2S(INCLUDE_PATH/inc_vendor.h) +#include M2S(INCLUDE_PATH/inc_types.h) +#include M2S(INCLUDE_PATH/inc_platform.cl) +#include M2S(INCLUDE_PATH/inc_common.cl) +#include M2S(INCLUDE_PATH/inc_simd.cl) +#include M2S(INCLUDE_PATH/inc_hash_sha256.cl) +#endif + +#if VECT_SIZE == 1 +#define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i)]) +#elif VECT_SIZE == 2 +#define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1]) +#elif VECT_SIZE == 4 +#define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3]) +#elif VECT_SIZE == 8 +#define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7]) +#elif VECT_SIZE == 16 +#define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) +#endif + +KERNEL_FQ KERNEL_FA void m20730_mxx (KERN_ATTR_VECTOR ()) +{ + /** + * modifier + */ + + const u64 gid = get_global_id (0); + const u64 lid = get_local_id (0); + const u64 lsz = get_local_size (0); + + /** + * bin2asc table + */ + + LOCAL_VK u32 l_bin2asc[256]; + + for (u32 i = lid; i < 256; i += lsz) + { + const u32 i0 = (i >> 0) & 15; + const u32 i1 = (i >> 4) & 15; + + l_bin2asc[i] = ((i0 < 10) ? '0' + i0 : 'a' - 10 + i0) << 0 + | ((i1 < 10) ? '0' + i1 : 'a' - 10 + i1) << 8; + } + + SYNC_THREADS (); + + if (gid >= GID_CNT) return; + + /** + * base + */ + + u32x _w0[4]; + u32x _w1[4]; + u32x _w2[4]; + u32x _w3[4]; + + const u32 pw_len = pws[gid].pw_len; + + u32x w[64] = { 0 }; + + for (u32 i = 0, idx = 0; i < pw_len; i += 4, idx += 1) + { + w[idx] = pws[gid].i[idx]; + } + + const u32 salt_len = salt_bufs[SALT_POS_HOST].salt_len; + + u32x s[64] = { 0 }; + + for (int i = 0, idx = 0; i < salt_len; i += 4, idx += 1) + { + s[idx] = hc_swap32_S (salt_bufs[SALT_POS_HOST].salt_buf[idx]); + } + + /** + * loop + */ + + u32x w0l = w[0]; + + for (u32 il_pos = 0; il_pos < IL_CNT; il_pos += VECT_SIZE) + { + const u32x w0r = words_buf_r[il_pos / VECT_SIZE]; + + const u32x w0 = w0l | w0r; + + w[0] = w0; + + sha256_ctx_vector_t ctx0; + + sha256_init_vector (&ctx0); + + sha256_update_vector (&ctx0, w, pw_len); + sha256_update_vector (&ctx0, s, salt_len); + + sha256_final_vector (&ctx0); + + const u32x a = ctx0.h[0]; + const u32x b = ctx0.h[1]; + const u32x c = ctx0.h[2]; + const u32x d = ctx0.h[3]; + const u32x e = ctx0.h[4]; + const u32x f = ctx0.h[5]; + const u32x g = ctx0.h[6]; + const u32x h = ctx0.h[7]; + + sha256_ctx_vector_t ctx; + + sha256_init_vector (&ctx); + + _w0[0] = uint_to_hex_lower8_le ((a >> 16) & 255) << 0 | uint_to_hex_lower8_le ((a >> 24) & 255) << 16; + _w0[1] = uint_to_hex_lower8_le ((a >> 0) & 255) << 0 | uint_to_hex_lower8_le ((a >> 8) & 255) << 16; + _w0[2] = uint_to_hex_lower8_le ((b >> 16) & 255) << 0 | uint_to_hex_lower8_le ((b >> 24) & 255) << 16; + _w0[3] = uint_to_hex_lower8_le ((b >> 0) & 255) << 0 | uint_to_hex_lower8_le ((b >> 8) & 255) << 16; + _w1[0] = uint_to_hex_lower8_le ((c >> 16) & 255) << 0 | uint_to_hex_lower8_le ((c >> 24) & 255) << 16; + _w1[1] = uint_to_hex_lower8_le ((c >> 0) & 255) << 0 | uint_to_hex_lower8_le ((c >> 8) & 255) << 16; + _w1[2] = uint_to_hex_lower8_le ((d >> 16) & 255) << 0 | uint_to_hex_lower8_le ((d >> 24) & 255) << 16; + _w1[3] = uint_to_hex_lower8_le ((d >> 0) & 255) << 0 | uint_to_hex_lower8_le ((d >> 8) & 255) << 16; + _w2[0] = uint_to_hex_lower8_le ((e >> 16) & 255) << 0 | uint_to_hex_lower8_le ((e >> 24) & 255) << 16; + _w2[1] = uint_to_hex_lower8_le ((e >> 0) & 255) << 0 | uint_to_hex_lower8_le ((e >> 8) & 255) << 16; + _w2[2] = uint_to_hex_lower8_le ((f >> 16) & 255) << 0 | uint_to_hex_lower8_le ((f >> 24) & 255) << 16; + _w2[3] = uint_to_hex_lower8_le ((f >> 0) & 255) << 0 | uint_to_hex_lower8_le ((f >> 8) & 255) << 16; + _w3[0] = uint_to_hex_lower8_le ((g >> 16) & 255) << 0 | uint_to_hex_lower8_le ((g >> 24) & 255) << 16; + _w3[1] = uint_to_hex_lower8_le ((g >> 0) & 255) << 0 | uint_to_hex_lower8_le ((g >> 8) & 255) << 16; + _w3[2] = uint_to_hex_lower8_le ((h >> 16) & 255) << 0 | uint_to_hex_lower8_le ((h >> 24) & 255) << 16; + _w3[3] = uint_to_hex_lower8_le ((h >> 0) & 255) << 0 | uint_to_hex_lower8_le ((h >> 8) & 255) << 16; + + sha256_update_vector_64 (&ctx, _w0, _w1, _w2, _w3, 64); + + sha256_final_vector (&ctx); + + const u32x r0 = ctx.h[DGST_R0]; + const u32x r1 = ctx.h[DGST_R1]; + const u32x r2 = ctx.h[DGST_R2]; + const u32x r3 = ctx.h[DGST_R3]; + + COMPARE_M_SIMD (r0, r1, r2, r3); + } +} + +KERNEL_FQ KERNEL_FA void m20730_sxx (KERN_ATTR_VECTOR ()) +{ + /** + * modifier + */ + + const u64 gid = get_global_id (0); + const u64 lid = get_local_id (0); + const u64 lsz = get_local_size (0); + + /** + * bin2asc table + */ + + LOCAL_VK u32 l_bin2asc[256]; + + for (u32 i = lid; i < 256; i += lsz) + { + const u32 i0 = (i >> 0) & 15; + const u32 i1 = (i >> 4) & 15; + + l_bin2asc[i] = ((i0 < 10) ? '0' + i0 : 'a' - 10 + i0) << 0 + | ((i1 < 10) ? '0' + i1 : 'a' - 10 + i1) << 8; + } + + SYNC_THREADS (); + + if (gid >= GID_CNT) return; + + /** + * digest + */ + + const u32 search[4] = + { + digests_buf[DIGESTS_OFFSET_HOST].digest_buf[DGST_R0], + digests_buf[DIGESTS_OFFSET_HOST].digest_buf[DGST_R1], + digests_buf[DIGESTS_OFFSET_HOST].digest_buf[DGST_R2], + digests_buf[DIGESTS_OFFSET_HOST].digest_buf[DGST_R3] + }; + + /** + * base + */ + + u32x _w0[4]; + u32x _w1[4]; + u32x _w2[4]; + u32x _w3[4]; + + const u32 pw_len = pws[gid].pw_len; + + u32x w[64] = { 0 }; + + for (u32 i = 0, idx = 0; i < pw_len; i += 4, idx += 1) + { + w[idx] = pws[gid].i[idx]; + } + + const u32 salt_len = salt_bufs[SALT_POS_HOST].salt_len; + + u32x s[64] = { 0 }; + + for (int i = 0, idx = 0; i < salt_len; i += 4, idx += 1) + { + s[idx] = hc_swap32_S (salt_bufs[SALT_POS_HOST].salt_buf[idx]); + } + + /** + * loop + */ + + u32x w0l = w[0]; + + for (u32 il_pos = 0; il_pos < IL_CNT; il_pos += VECT_SIZE) + { + const u32x w0r = words_buf_r[il_pos / VECT_SIZE]; + + const u32x w0 = w0l | w0r; + + w[0] = w0; + + sha256_ctx_vector_t ctx0; + + sha256_init_vector (&ctx0); + + sha256_update_vector (&ctx0, w, pw_len); + sha256_update_vector (&ctx0, s, salt_len); + + sha256_final_vector (&ctx0); + + const u32x a = ctx0.h[0]; + const u32x b = ctx0.h[1]; + const u32x c = ctx0.h[2]; + const u32x d = ctx0.h[3]; + const u32x e = ctx0.h[4]; + const u32x f = ctx0.h[5]; + const u32x g = ctx0.h[6]; + const u32x h = ctx0.h[7]; + + sha256_ctx_vector_t ctx; + + sha256_init_vector (&ctx); + + _w0[0] = uint_to_hex_lower8_le ((a >> 16) & 255) << 0 | uint_to_hex_lower8_le ((a >> 24) & 255) << 16; + _w0[1] = uint_to_hex_lower8_le ((a >> 0) & 255) << 0 | uint_to_hex_lower8_le ((a >> 8) & 255) << 16; + _w0[2] = uint_to_hex_lower8_le ((b >> 16) & 255) << 0 | uint_to_hex_lower8_le ((b >> 24) & 255) << 16; + _w0[3] = uint_to_hex_lower8_le ((b >> 0) & 255) << 0 | uint_to_hex_lower8_le ((b >> 8) & 255) << 16; + _w1[0] = uint_to_hex_lower8_le ((c >> 16) & 255) << 0 | uint_to_hex_lower8_le ((c >> 24) & 255) << 16; + _w1[1] = uint_to_hex_lower8_le ((c >> 0) & 255) << 0 | uint_to_hex_lower8_le ((c >> 8) & 255) << 16; + _w1[2] = uint_to_hex_lower8_le ((d >> 16) & 255) << 0 | uint_to_hex_lower8_le ((d >> 24) & 255) << 16; + _w1[3] = uint_to_hex_lower8_le ((d >> 0) & 255) << 0 | uint_to_hex_lower8_le ((d >> 8) & 255) << 16; + _w2[0] = uint_to_hex_lower8_le ((e >> 16) & 255) << 0 | uint_to_hex_lower8_le ((e >> 24) & 255) << 16; + _w2[1] = uint_to_hex_lower8_le ((e >> 0) & 255) << 0 | uint_to_hex_lower8_le ((e >> 8) & 255) << 16; + _w2[2] = uint_to_hex_lower8_le ((f >> 16) & 255) << 0 | uint_to_hex_lower8_le ((f >> 24) & 255) << 16; + _w2[3] = uint_to_hex_lower8_le ((f >> 0) & 255) << 0 | uint_to_hex_lower8_le ((f >> 8) & 255) << 16; + _w3[0] = uint_to_hex_lower8_le ((g >> 16) & 255) << 0 | uint_to_hex_lower8_le ((g >> 24) & 255) << 16; + _w3[1] = uint_to_hex_lower8_le ((g >> 0) & 255) << 0 | uint_to_hex_lower8_le ((g >> 8) & 255) << 16; + _w3[2] = uint_to_hex_lower8_le ((h >> 16) & 255) << 0 | uint_to_hex_lower8_le ((h >> 24) & 255) << 16; + _w3[3] = uint_to_hex_lower8_le ((h >> 0) & 255) << 0 | uint_to_hex_lower8_le ((h >> 8) & 255) << 16; + + sha256_update_vector_64 (&ctx, _w0, _w1, _w2, _w3, 64); + + sha256_final_vector (&ctx); + + const u32x r0 = ctx.h[DGST_R0]; + const u32x r1 = ctx.h[DGST_R1]; + const u32x r2 = ctx.h[DGST_R2]; + const u32x r3 = ctx.h[DGST_R3]; + + COMPARE_S_SIMD (r0, r1, r2, r3); + } +} diff --git a/OpenCL/m20800_a0-optimized.cl b/OpenCL/m20800_a0-optimized.cl index 2eca0f810..bc46b754c 100644 --- a/OpenCL/m20800_a0-optimized.cl +++ b/OpenCL/m20800_a0-optimized.cl @@ -43,7 +43,7 @@ h = 0; \ } -KERNEL_FQ void m20800_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m20800_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -306,15 +306,15 @@ KERNEL_FQ void m20800_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m20800_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m20800_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m20800_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m20800_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m20800_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m20800_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -610,10 +610,10 @@ KERNEL_FQ void m20800_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m20800_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m20800_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m20800_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m20800_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m20800_a0-pure.cl b/OpenCL/m20800_a0-pure.cl index c9254e633..69aad87a1 100644 --- a/OpenCL/m20800_a0-pure.cl +++ b/OpenCL/m20800_a0-pure.cl @@ -29,7 +29,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m20800_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m20800_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -130,7 +130,7 @@ KERNEL_FQ void m20800_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m20800_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m20800_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m20800_a1-optimized.cl b/OpenCL/m20800_a1-optimized.cl index fa01e62d3..8af3c5d8f 100644 --- a/OpenCL/m20800_a1-optimized.cl +++ b/OpenCL/m20800_a1-optimized.cl @@ -41,7 +41,7 @@ h = 0; \ } -KERNEL_FQ void m20800_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m20800_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -359,15 +359,15 @@ KERNEL_FQ void m20800_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m20800_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m20800_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m20800_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m20800_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m20800_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m20800_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -718,10 +718,10 @@ KERNEL_FQ void m20800_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m20800_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m20800_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m20800_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m20800_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m20800_a1-pure.cl b/OpenCL/m20800_a1-pure.cl index b2594147b..b7141405e 100644 --- a/OpenCL/m20800_a1-pure.cl +++ b/OpenCL/m20800_a1-pure.cl @@ -27,7 +27,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m20800_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m20800_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -126,7 +126,7 @@ KERNEL_FQ void m20800_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m20800_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m20800_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m20800_a3-optimized.cl b/OpenCL/m20800_a3-optimized.cl index 3523584a9..8953d20a1 100644 --- a/OpenCL/m20800_a3-optimized.cl +++ b/OpenCL/m20800_a3-optimized.cl @@ -540,7 +540,7 @@ DECLSPEC void m20800s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m20800_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m20800_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -610,7 +610,7 @@ KERNEL_FQ void m20800_m04 (KERN_ATTR_BASIC ()) m20800m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m20800_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m20800_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -680,7 +680,7 @@ KERNEL_FQ void m20800_m08 (KERN_ATTR_BASIC ()) m20800m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m20800_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m20800_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -750,7 +750,7 @@ KERNEL_FQ void m20800_m16 (KERN_ATTR_BASIC ()) m20800m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m20800_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m20800_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -820,7 +820,7 @@ KERNEL_FQ void m20800_s04 (KERN_ATTR_BASIC ()) m20800s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m20800_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m20800_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -890,7 +890,7 @@ KERNEL_FQ void m20800_s08 (KERN_ATTR_BASIC ()) m20800s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m20800_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m20800_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m20800_a3-pure.cl b/OpenCL/m20800_a3-pure.cl index f0bb42691..0295e6a8e 100644 --- a/OpenCL/m20800_a3-pure.cl +++ b/OpenCL/m20800_a3-pure.cl @@ -27,7 +27,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m20800_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m20800_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -139,7 +139,7 @@ KERNEL_FQ void m20800_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m20800_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m20800_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m20900_a0-optimized.cl b/OpenCL/m20900_a0-optimized.cl index 3ab829071..428a2ee3d 100644 --- a/OpenCL/m20900_a0-optimized.cl +++ b/OpenCL/m20900_a0-optimized.cl @@ -29,7 +29,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m20900_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m20900_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -731,15 +731,15 @@ KERNEL_FQ void m20900_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m20900_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m20900_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m20900_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m20900_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m20900_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m20900_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -1456,10 +1456,10 @@ KERNEL_FQ void m20900_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m20900_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m20900_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m20900_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m20900_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m20900_a0-pure.cl b/OpenCL/m20900_a0-pure.cl index 556d41cf6..7bd06863f 100644 --- a/OpenCL/m20900_a0-pure.cl +++ b/OpenCL/m20900_a0-pure.cl @@ -29,7 +29,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m20900_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m20900_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -209,7 +209,7 @@ KERNEL_FQ void m20900_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m20900_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m20900_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m20900_a1-optimized.cl b/OpenCL/m20900_a1-optimized.cl index c50b619f8..b6fe3c802 100644 --- a/OpenCL/m20900_a1-optimized.cl +++ b/OpenCL/m20900_a1-optimized.cl @@ -27,7 +27,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m20900_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m20900_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -787,15 +787,15 @@ KERNEL_FQ void m20900_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m20900_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m20900_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m20900_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m20900_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m20900_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m20900_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -1570,10 +1570,10 @@ KERNEL_FQ void m20900_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m20900_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m20900_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m20900_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m20900_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m20900_a1-pure.cl b/OpenCL/m20900_a1-pure.cl index 0b4f0f898..b115c6ef4 100644 --- a/OpenCL/m20900_a1-pure.cl +++ b/OpenCL/m20900_a1-pure.cl @@ -27,7 +27,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m20900_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m20900_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -209,7 +209,7 @@ KERNEL_FQ void m20900_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m20900_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m20900_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m20900_a3-optimized.cl b/OpenCL/m20900_a3-optimized.cl index adeb2b1e6..e3c0d74b7 100644 --- a/OpenCL/m20900_a3-optimized.cl +++ b/OpenCL/m20900_a3-optimized.cl @@ -1358,7 +1358,7 @@ DECLSPEC void m20900s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m20900_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m20900_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -1428,7 +1428,7 @@ KERNEL_FQ void m20900_m04 (KERN_ATTR_BASIC ()) m20900m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m20900_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m20900_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -1498,7 +1498,7 @@ KERNEL_FQ void m20900_m08 (KERN_ATTR_BASIC ()) m20900m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m20900_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m20900_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -1568,7 +1568,7 @@ KERNEL_FQ void m20900_m16 (KERN_ATTR_BASIC ()) m20900m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m20900_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m20900_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -1638,7 +1638,7 @@ KERNEL_FQ void m20900_s04 (KERN_ATTR_BASIC ()) m20900s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m20900_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m20900_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -1708,7 +1708,7 @@ KERNEL_FQ void m20900_s08 (KERN_ATTR_BASIC ()) m20900s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m20900_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m20900_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m20900_a3-pure.cl b/OpenCL/m20900_a3-pure.cl index 23443d5ea..dc172f931 100644 --- a/OpenCL/m20900_a3-pure.cl +++ b/OpenCL/m20900_a3-pure.cl @@ -27,7 +27,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m20900_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m20900_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -218,7 +218,7 @@ KERNEL_FQ void m20900_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m20900_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m20900_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m21000_a0-optimized.cl b/OpenCL/m21000_a0-optimized.cl index fe3305d8c..50689b2a6 100644 --- a/OpenCL/m21000_a0-optimized.cl +++ b/OpenCL/m21000_a0-optimized.cl @@ -125,7 +125,7 @@ DECLSPEC void sha512_transform_opt (PRIVATE_AS const u32x *w0, PRIVATE_AS const digest[7] = h; } -KERNEL_FQ void m21000_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m21000_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -266,15 +266,15 @@ KERNEL_FQ void m21000_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m21000_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m21000_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m21000_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m21000_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m21000_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m21000_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -427,10 +427,10 @@ KERNEL_FQ void m21000_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m21000_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m21000_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m21000_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m21000_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m21000_a0-pure.cl b/OpenCL/m21000_a0-pure.cl index c66ee9b83..353fa154d 100644 --- a/OpenCL/m21000_a0-pure.cl +++ b/OpenCL/m21000_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha512.cl) #endif -KERNEL_FQ void m21000_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m21000_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -87,7 +87,7 @@ KERNEL_FQ void m21000_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m21000_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m21000_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m21000_a1-optimized.cl b/OpenCL/m21000_a1-optimized.cl index b0f4b364b..65f71f146 100644 --- a/OpenCL/m21000_a1-optimized.cl +++ b/OpenCL/m21000_a1-optimized.cl @@ -218,7 +218,7 @@ DECLSPEC void sha512_transform_opt (PRIVATE_AS const u32x *w0, PRIVATE_AS const digest[7] = h; } -KERNEL_FQ void m21000_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m21000_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -397,15 +397,15 @@ KERNEL_FQ void m21000_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m21000_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m21000_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m21000_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m21000_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m21000_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m21000_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -596,10 +596,10 @@ KERNEL_FQ void m21000_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m21000_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m21000_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m21000_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m21000_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m21000_a1-pure.cl b/OpenCL/m21000_a1-pure.cl index cf0667973..ca52a9518 100644 --- a/OpenCL/m21000_a1-pure.cl +++ b/OpenCL/m21000_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha512.cl) #endif -KERNEL_FQ void m21000_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m21000_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -83,7 +83,7 @@ KERNEL_FQ void m21000_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m21000_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m21000_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m21000_a3-optimized.cl b/OpenCL/m21000_a3-optimized.cl index 4096c2e25..0ae103080 100644 --- a/OpenCL/m21000_a3-optimized.cl +++ b/OpenCL/m21000_a3-optimized.cl @@ -410,7 +410,7 @@ DECLSPEC void m21000s (PRIVATE_AS u32 *w, const u32 pw_len, KERN_ATTR_FUNC_VECTO } } -KERNEL_FQ void m21000_m04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m21000_m04 (KERN_ATTR_VECTOR ()) { /** * base @@ -450,7 +450,7 @@ KERNEL_FQ void m21000_m04 (KERN_ATTR_VECTOR ()) m21000m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m21000_m08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m21000_m08 (KERN_ATTR_VECTOR ()) { /** * base @@ -490,7 +490,7 @@ KERNEL_FQ void m21000_m08 (KERN_ATTR_VECTOR ()) m21000m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m21000_m16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m21000_m16 (KERN_ATTR_VECTOR ()) { /** * base @@ -530,7 +530,7 @@ KERNEL_FQ void m21000_m16 (KERN_ATTR_VECTOR ()) m21000m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m21000_s04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m21000_s04 (KERN_ATTR_VECTOR ()) { /** * base @@ -570,7 +570,7 @@ KERNEL_FQ void m21000_s04 (KERN_ATTR_VECTOR ()) m21000s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m21000_s08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m21000_s08 (KERN_ATTR_VECTOR ()) { /** * base @@ -610,7 +610,7 @@ KERNEL_FQ void m21000_s08 (KERN_ATTR_VECTOR ()) m21000s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m21000_s16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m21000_s16 (KERN_ATTR_VECTOR ()) { /** * base diff --git a/OpenCL/m21000_a3-pure.cl b/OpenCL/m21000_a3-pure.cl index 17854b263..48393a4b6 100644 --- a/OpenCL/m21000_a3-pure.cl +++ b/OpenCL/m21000_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha512.cl) #endif -KERNEL_FQ void m21000_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m21000_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -96,7 +96,7 @@ KERNEL_FQ void m21000_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m21000_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m21000_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m21100_a0-optimized.cl b/OpenCL/m21100_a0-optimized.cl index 6c6654355..9536e3d7e 100644 --- a/OpenCL/m21100_a0-optimized.cl +++ b/OpenCL/m21100_a0-optimized.cl @@ -29,7 +29,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m21100_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m21100_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -386,15 +386,15 @@ KERNEL_FQ void m21100_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m21100_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m21100_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m21100_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m21100_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m21100_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m21100_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -772,10 +772,10 @@ KERNEL_FQ void m21100_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m21100_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m21100_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m21100_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m21100_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m21100_a0-pure.cl b/OpenCL/m21100_a0-pure.cl index b59d5a31a..625ebd1d9 100644 --- a/OpenCL/m21100_a0-pure.cl +++ b/OpenCL/m21100_a0-pure.cl @@ -29,7 +29,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m21100_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m21100_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -146,7 +146,7 @@ KERNEL_FQ void m21100_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m21100_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m21100_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m21100_a1-optimized.cl b/OpenCL/m21100_a1-optimized.cl index 4a20328c3..7155fb117 100644 --- a/OpenCL/m21100_a1-optimized.cl +++ b/OpenCL/m21100_a1-optimized.cl @@ -27,7 +27,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m21100_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m21100_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -442,15 +442,15 @@ KERNEL_FQ void m21100_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m21100_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m21100_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m21100_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m21100_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m21100_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m21100_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -886,10 +886,10 @@ KERNEL_FQ void m21100_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m21100_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m21100_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m21100_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m21100_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m21100_a1-pure.cl b/OpenCL/m21100_a1-pure.cl index 9c6019504..04cb75709 100644 --- a/OpenCL/m21100_a1-pure.cl +++ b/OpenCL/m21100_a1-pure.cl @@ -27,7 +27,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m21100_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m21100_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -142,7 +142,7 @@ KERNEL_FQ void m21100_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m21100_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m21100_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m21100_a3-optimized.cl b/OpenCL/m21100_a3-optimized.cl index e5b0e86ce..ce58cf443 100644 --- a/OpenCL/m21100_a3-optimized.cl +++ b/OpenCL/m21100_a3-optimized.cl @@ -634,7 +634,7 @@ DECLSPEC void m21100s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m21100_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m21100_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -704,7 +704,7 @@ KERNEL_FQ void m21100_m04 (KERN_ATTR_BASIC ()) m21100m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m21100_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m21100_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -774,7 +774,7 @@ KERNEL_FQ void m21100_m08 (KERN_ATTR_BASIC ()) m21100m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m21100_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m21100_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -844,7 +844,7 @@ KERNEL_FQ void m21100_m16 (KERN_ATTR_BASIC ()) m21100m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m21100_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m21100_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -914,7 +914,7 @@ KERNEL_FQ void m21100_s04 (KERN_ATTR_BASIC ()) m21100s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m21100_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m21100_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -984,7 +984,7 @@ KERNEL_FQ void m21100_s08 (KERN_ATTR_BASIC ()) m21100s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m21100_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m21100_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m21100_a3-pure.cl b/OpenCL/m21100_a3-pure.cl index 90d39999f..021798167 100644 --- a/OpenCL/m21100_a3-pure.cl +++ b/OpenCL/m21100_a3-pure.cl @@ -27,7 +27,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m21100_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m21100_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -155,7 +155,7 @@ KERNEL_FQ void m21100_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m21100_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m21100_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m21200_a0-optimized.cl b/OpenCL/m21200_a0-optimized.cl index c3764aa87..3a2c9578f 100644 --- a/OpenCL/m21200_a0-optimized.cl +++ b/OpenCL/m21200_a0-optimized.cl @@ -28,7 +28,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m21200_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m21200_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -442,15 +442,15 @@ KERNEL_FQ void m21200_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m21200_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m21200_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m21200_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m21200_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m21200_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m21200_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -879,10 +879,10 @@ KERNEL_FQ void m21200_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m21200_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m21200_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m21200_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m21200_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m21200_a0-pure.cl b/OpenCL/m21200_a0-pure.cl index 31a05eafe..96fe90131 100644 --- a/OpenCL/m21200_a0-pure.cl +++ b/OpenCL/m21200_a0-pure.cl @@ -28,7 +28,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m21200_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m21200_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -166,7 +166,7 @@ KERNEL_FQ void m21200_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m21200_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m21200_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m21200_a1-optimized.cl b/OpenCL/m21200_a1-optimized.cl index 00289dc1f..260e537df 100644 --- a/OpenCL/m21200_a1-optimized.cl +++ b/OpenCL/m21200_a1-optimized.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m21200_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m21200_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -498,15 +498,15 @@ KERNEL_FQ void m21200_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m21200_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m21200_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m21200_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m21200_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m21200_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m21200_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -993,10 +993,10 @@ KERNEL_FQ void m21200_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m21200_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m21200_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m21200_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m21200_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m21200_a1-pure.cl b/OpenCL/m21200_a1-pure.cl index 9c75b2ba5..5aaa9dc74 100644 --- a/OpenCL/m21200_a1-pure.cl +++ b/OpenCL/m21200_a1-pure.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m21200_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m21200_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -162,7 +162,7 @@ KERNEL_FQ void m21200_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m21200_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m21200_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m21200_a3-optimized.cl b/OpenCL/m21200_a3-optimized.cl index 74292b4f1..521c5b811 100644 --- a/OpenCL/m21200_a3-optimized.cl +++ b/OpenCL/m21200_a3-optimized.cl @@ -781,7 +781,7 @@ DECLSPEC void m21200s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m21200_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m21200_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -851,7 +851,7 @@ KERNEL_FQ void m21200_m04 (KERN_ATTR_BASIC ()) m21200m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m21200_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m21200_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -921,7 +921,7 @@ KERNEL_FQ void m21200_m08 (KERN_ATTR_BASIC ()) m21200m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m21200_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m21200_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -991,7 +991,7 @@ KERNEL_FQ void m21200_m16 (KERN_ATTR_BASIC ()) m21200m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m21200_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m21200_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -1061,7 +1061,7 @@ KERNEL_FQ void m21200_s04 (KERN_ATTR_BASIC ()) m21200s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m21200_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m21200_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -1131,7 +1131,7 @@ KERNEL_FQ void m21200_s08 (KERN_ATTR_BASIC ()) m21200s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m21200_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m21200_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m21200_a3-pure.cl b/OpenCL/m21200_a3-pure.cl index efd900e8d..6b6702b46 100644 --- a/OpenCL/m21200_a3-pure.cl +++ b/OpenCL/m21200_a3-pure.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m21200_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m21200_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -173,7 +173,7 @@ KERNEL_FQ void m21200_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m21200_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m21200_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m21300_a0-pure.cl b/OpenCL/m21300_a0-pure.cl index 31eeea607..acad2e499 100644 --- a/OpenCL/m21300_a0-pure.cl +++ b/OpenCL/m21300_a0-pure.cl @@ -29,7 +29,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m21300_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m21300_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -146,7 +146,7 @@ KERNEL_FQ void m21300_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m21300_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m21300_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m21300_a1-pure.cl b/OpenCL/m21300_a1-pure.cl index a1c1c8f75..97a5a5d5c 100644 --- a/OpenCL/m21300_a1-pure.cl +++ b/OpenCL/m21300_a1-pure.cl @@ -27,7 +27,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m21300_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m21300_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -140,7 +140,7 @@ KERNEL_FQ void m21300_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m21300_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m21300_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m21300_a3-pure.cl b/OpenCL/m21300_a3-pure.cl index 5f92bb90a..8fa0bb5af 100644 --- a/OpenCL/m21300_a3-pure.cl +++ b/OpenCL/m21300_a3-pure.cl @@ -27,7 +27,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m21300_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m21300_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -159,7 +159,7 @@ KERNEL_FQ void m21300_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m21300_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m21300_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m21310_a0-pure.cl b/OpenCL/m21310_a0-pure.cl index dba86ea7d..154f3030d 100644 --- a/OpenCL/m21310_a0-pure.cl +++ b/OpenCL/m21310_a0-pure.cl @@ -39,7 +39,7 @@ typedef struct md5_double_salt } md5_double_salt_t; -KERNEL_FQ void m21310_mxx (KERN_ATTR_RULES_ESALT (md5_double_salt_t)) +KERNEL_FQ KERNEL_FA void m21310_mxx (KERN_ATTR_RULES_ESALT (md5_double_salt_t)) { /** * modifier @@ -153,7 +153,7 @@ KERNEL_FQ void m21310_mxx (KERN_ATTR_RULES_ESALT (md5_double_salt_t)) } } -KERNEL_FQ void m21310_sxx (KERN_ATTR_RULES_ESALT (md5_double_salt_t)) +KERNEL_FQ KERNEL_FA void m21310_sxx (KERN_ATTR_RULES_ESALT (md5_double_salt_t)) { /** * modifier diff --git a/OpenCL/m21310_a1-pure.cl b/OpenCL/m21310_a1-pure.cl index be8285e50..512c460cc 100644 --- a/OpenCL/m21310_a1-pure.cl +++ b/OpenCL/m21310_a1-pure.cl @@ -37,7 +37,7 @@ typedef struct md5_double_salt } md5_double_salt_t; -KERNEL_FQ void m21310_mxx (KERN_ATTR_ESALT (md5_double_salt)) +KERNEL_FQ KERNEL_FA void m21310_mxx (KERN_ATTR_ESALT (md5_double_salt)) { /** * modifier @@ -149,7 +149,7 @@ KERNEL_FQ void m21310_mxx (KERN_ATTR_ESALT (md5_double_salt)) } } -KERNEL_FQ void m21310_sxx (KERN_ATTR_ESALT (md5_double_salt)) +KERNEL_FQ KERNEL_FA void m21310_sxx (KERN_ATTR_ESALT (md5_double_salt)) { /** * modifier diff --git a/OpenCL/m21310_a3-pure.cl b/OpenCL/m21310_a3-pure.cl index 546e7defb..5837f74b7 100644 --- a/OpenCL/m21310_a3-pure.cl +++ b/OpenCL/m21310_a3-pure.cl @@ -37,7 +37,7 @@ typedef struct md5_double_salt } md5_double_salt_t; -KERNEL_FQ void m21310_mxx (KERN_ATTR_VECTOR_ESALT (md5_double_salt)) +KERNEL_FQ KERNEL_FA void m21310_mxx (KERN_ATTR_VECTOR_ESALT (md5_double_salt)) { /** * modifier @@ -168,7 +168,7 @@ KERNEL_FQ void m21310_mxx (KERN_ATTR_VECTOR_ESALT (md5_double_salt)) } } -KERNEL_FQ void m21310_sxx (KERN_ATTR_VECTOR_ESALT (md5_double_salt)) +KERNEL_FQ KERNEL_FA void m21310_sxx (KERN_ATTR_VECTOR_ESALT (md5_double_salt)) { /** * modifier diff --git a/OpenCL/m21400_a0-optimized.cl b/OpenCL/m21400_a0-optimized.cl index 7148b8aa0..9b76e15ce 100644 --- a/OpenCL/m21400_a0-optimized.cl +++ b/OpenCL/m21400_a0-optimized.cl @@ -30,7 +30,7 @@ h = 0; \ } -KERNEL_FQ void m21400_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m21400_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -277,15 +277,15 @@ KERNEL_FQ void m21400_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m21400_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m21400_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m21400_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m21400_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m21400_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m21400_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -565,10 +565,10 @@ KERNEL_FQ void m21400_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m21400_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m21400_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m21400_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m21400_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m21400_a0-pure.cl b/OpenCL/m21400_a0-pure.cl index c16f3c6c1..e00e4e67f 100644 --- a/OpenCL/m21400_a0-pure.cl +++ b/OpenCL/m21400_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha256.cl) #endif -KERNEL_FQ void m21400_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m21400_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -91,7 +91,7 @@ KERNEL_FQ void m21400_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m21400_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m21400_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m21400_a1-optimized.cl b/OpenCL/m21400_a1-optimized.cl index c71550a34..d767ac996 100644 --- a/OpenCL/m21400_a1-optimized.cl +++ b/OpenCL/m21400_a1-optimized.cl @@ -28,7 +28,7 @@ h = 0; \ } -KERNEL_FQ void m21400_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m21400_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -333,15 +333,15 @@ KERNEL_FQ void m21400_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m21400_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m21400_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m21400_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m21400_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m21400_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m21400_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -679,10 +679,10 @@ KERNEL_FQ void m21400_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m21400_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m21400_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m21400_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m21400_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m21400_a1-pure.cl b/OpenCL/m21400_a1-pure.cl index 68b1d47e8..49c1761c4 100644 --- a/OpenCL/m21400_a1-pure.cl +++ b/OpenCL/m21400_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha256.cl) #endif -KERNEL_FQ void m21400_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m21400_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -87,7 +87,7 @@ KERNEL_FQ void m21400_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m21400_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m21400_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m21400_a3-optimized.cl b/OpenCL/m21400_a3-optimized.cl index 8fbbeb2b5..158fe8cde 100644 --- a/OpenCL/m21400_a3-optimized.cl +++ b/OpenCL/m21400_a3-optimized.cl @@ -493,7 +493,7 @@ DECLSPEC void m21400s (PRIVATE_AS u32 *w, const u32 pw_len, KERN_ATTR_FUNC_VECTO } } -KERNEL_FQ void m21400_m04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m21400_m04 (KERN_ATTR_VECTOR ()) { /** * base @@ -533,7 +533,7 @@ KERNEL_FQ void m21400_m04 (KERN_ATTR_VECTOR ()) m21400m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m21400_m08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m21400_m08 (KERN_ATTR_VECTOR ()) { /** * base @@ -573,7 +573,7 @@ KERNEL_FQ void m21400_m08 (KERN_ATTR_VECTOR ()) m21400m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m21400_m16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m21400_m16 (KERN_ATTR_VECTOR ()) { /** * base @@ -613,7 +613,7 @@ KERNEL_FQ void m21400_m16 (KERN_ATTR_VECTOR ()) m21400m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m21400_s04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m21400_s04 (KERN_ATTR_VECTOR ()) { /** * base @@ -653,7 +653,7 @@ KERNEL_FQ void m21400_s04 (KERN_ATTR_VECTOR ()) m21400s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m21400_s08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m21400_s08 (KERN_ATTR_VECTOR ()) { /** * base @@ -693,7 +693,7 @@ KERNEL_FQ void m21400_s08 (KERN_ATTR_VECTOR ()) m21400s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m21400_s16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m21400_s16 (KERN_ATTR_VECTOR ()) { /** * base diff --git a/OpenCL/m21400_a3-pure.cl b/OpenCL/m21400_a3-pure.cl index b14318fe5..25ec481ef 100644 --- a/OpenCL/m21400_a3-pure.cl +++ b/OpenCL/m21400_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha256.cl) #endif -KERNEL_FQ void m21400_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m21400_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -100,7 +100,7 @@ KERNEL_FQ void m21400_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m21400_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m21400_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m21420_a0-pure.cl b/OpenCL/m21420_a0-pure.cl index 06c7dad00..557de6769 100644 --- a/OpenCL/m21420_a0-pure.cl +++ b/OpenCL/m21420_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha256.cl) #endif -KERNEL_FQ void m21420_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m21420_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -111,7 +111,7 @@ KERNEL_FQ void m21420_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m21420_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m21420_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m21420_a1-pure.cl b/OpenCL/m21420_a1-pure.cl index 720b189a1..4c0aca32a 100644 --- a/OpenCL/m21420_a1-pure.cl +++ b/OpenCL/m21420_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha256.cl) #endif -KERNEL_FQ void m21420_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m21420_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -107,7 +107,7 @@ KERNEL_FQ void m21420_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m21420_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m21420_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m21420_a3-pure.cl b/OpenCL/m21420_a3-pure.cl index 9d81389b9..4a513a9ac 100644 --- a/OpenCL/m21420_a3-pure.cl +++ b/OpenCL/m21420_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha256.cl) #endif -KERNEL_FQ void m21420_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m21420_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -120,7 +120,7 @@ KERNEL_FQ void m21420_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m21420_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m21420_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m21500-pure.cl b/OpenCL/m21500-pure.cl index a181cc4a6..5b069bb1b 100644 --- a/OpenCL/m21500-pure.cl +++ b/OpenCL/m21500-pure.cl @@ -70,7 +70,7 @@ DECLSPEC void hmac_sha1_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE sha1_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m21500_init (KERN_ATTR_TMPS_ESALT (solarwinds_tmp_t, solarwinds_t)) +KERNEL_FQ KERNEL_FA void m21500_init (KERN_ATTR_TMPS_ESALT (solarwinds_tmp_t, solarwinds_t)) { /** * base @@ -142,7 +142,7 @@ KERNEL_FQ void m21500_init (KERN_ATTR_TMPS_ESALT (solarwinds_tmp_t, solarwinds_t } } -KERNEL_FQ void m21500_loop (KERN_ATTR_TMPS_ESALT (solarwinds_tmp_t, solarwinds_t)) +KERNEL_FQ KERNEL_FA void m21500_loop (KERN_ATTR_TMPS_ESALT (solarwinds_tmp_t, solarwinds_t)) { const u64 gid = get_global_id (0); @@ -227,7 +227,7 @@ KERNEL_FQ void m21500_loop (KERN_ATTR_TMPS_ESALT (solarwinds_tmp_t, solarwinds_t } } -KERNEL_FQ void m21500_comp (KERN_ATTR_TMPS_ESALT (solarwinds_tmp_t, solarwinds_t)) +KERNEL_FQ KERNEL_FA void m21500_comp (KERN_ATTR_TMPS_ESALT (solarwinds_tmp_t, solarwinds_t)) { /** * base diff --git a/OpenCL/m21600-pure.cl b/OpenCL/m21600-pure.cl index 8852a3c4a..e49d14b30 100644 --- a/OpenCL/m21600-pure.cl +++ b/OpenCL/m21600-pure.cl @@ -85,7 +85,7 @@ DECLSPEC void hmac_sha512_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVA sha512_transform_vector (w0, w1, w2, w3, w4, w5, w6, w7, digest); } -KERNEL_FQ void m21600_init (KERN_ATTR_TMPS (web2py_sha512_tmp_t)) +KERNEL_FQ KERNEL_FA void m21600_init (KERN_ATTR_TMPS (web2py_sha512_tmp_t)) { /** * base @@ -189,7 +189,7 @@ KERNEL_FQ void m21600_init (KERN_ATTR_TMPS (web2py_sha512_tmp_t)) } } -KERNEL_FQ void m21600_loop (KERN_ATTR_TMPS (web2py_sha512_tmp_t)) +KERNEL_FQ KERNEL_FA void m21600_loop (KERN_ATTR_TMPS (web2py_sha512_tmp_t)) { const u64 gid = get_global_id (0); @@ -315,7 +315,7 @@ KERNEL_FQ void m21600_loop (KERN_ATTR_TMPS (web2py_sha512_tmp_t)) } } -KERNEL_FQ void m21600_comp (KERN_ATTR_TMPS (web2py_sha512_tmp_t)) +KERNEL_FQ KERNEL_FA void m21600_comp (KERN_ATTR_TMPS (web2py_sha512_tmp_t)) { /** * base diff --git a/OpenCL/m21700-pure.cl b/OpenCL/m21700-pure.cl index 554dcfbdf..6ad2488ca 100644 --- a/OpenCL/m21700-pure.cl +++ b/OpenCL/m21700-pure.cl @@ -95,7 +95,7 @@ DECLSPEC void hmac_sha512_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVA sha512_transform_vector (w0, w1, w2, w3, w4, w5, w6, w7, digest); } -KERNEL_FQ void m21700_init (KERN_ATTR_TMPS_ESALT (electrum_tmp_t, electrum_t)) +KERNEL_FQ KERNEL_FA void m21700_init (KERN_ATTR_TMPS_ESALT (electrum_tmp_t, electrum_t)) { /** * base @@ -192,7 +192,7 @@ KERNEL_FQ void m21700_init (KERN_ATTR_TMPS_ESALT (electrum_tmp_t, electrum_t)) tmps[gid].out[7] = tmps[gid].dgst[7]; } -KERNEL_FQ void m21700_loop (KERN_ATTR_TMPS_ESALT (electrum_tmp_t, electrum_t)) +KERNEL_FQ KERNEL_FA void m21700_loop (KERN_ATTR_TMPS_ESALT (electrum_tmp_t, electrum_t)) { const u64 gid = get_global_id (0); @@ -315,7 +315,7 @@ KERNEL_FQ void m21700_loop (KERN_ATTR_TMPS_ESALT (electrum_tmp_t, electrum_t)) unpack64v (tmps, out, gid, 7, out[7]); } -KERNEL_FQ void m21700_comp (KERN_ATTR_TMPS_ESALT (electrum_tmp_t, electrum_t)) +KERNEL_FQ KERNEL_FA void m21700_comp (KERN_ATTR_TMPS_ESALT (electrum_tmp_t, electrum_t)) { /** * base diff --git a/OpenCL/m21800-pure.cl b/OpenCL/m21800-pure.cl index fd301671b..a9b2bf635 100644 --- a/OpenCL/m21800-pure.cl +++ b/OpenCL/m21800-pure.cl @@ -96,7 +96,7 @@ DECLSPEC void hmac_sha512_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVA sha512_transform_vector (w0, w1, w2, w3, w4, w5, w6, w7, digest); } -KERNEL_FQ void m21800_init (KERN_ATTR_TMPS_ESALT (electrum_tmp_t, electrum_t)) +KERNEL_FQ KERNEL_FA void m21800_init (KERN_ATTR_TMPS_ESALT (electrum_tmp_t, electrum_t)) { /** * base @@ -193,7 +193,7 @@ KERNEL_FQ void m21800_init (KERN_ATTR_TMPS_ESALT (electrum_tmp_t, electrum_t)) tmps[gid].out[7] = tmps[gid].dgst[7]; } -KERNEL_FQ void m21800_loop (KERN_ATTR_TMPS_ESALT (electrum_tmp_t, electrum_t)) +KERNEL_FQ KERNEL_FA void m21800_loop (KERN_ATTR_TMPS_ESALT (electrum_tmp_t, electrum_t)) { const u64 gid = get_global_id (0); @@ -316,7 +316,7 @@ KERNEL_FQ void m21800_loop (KERN_ATTR_TMPS_ESALT (electrum_tmp_t, electrum_t)) unpack64v (tmps, out, gid, 7, out[7]); } -KERNEL_FQ void m21800_comp (KERN_ATTR_TMPS_ESALT (electrum_tmp_t, electrum_t)) +KERNEL_FQ KERNEL_FA void m21800_comp (KERN_ATTR_TMPS_ESALT (electrum_tmp_t, electrum_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m22000-pure.cl b/OpenCL/m22000-pure.cl index 5fc836f89..f6462637c 100644 --- a/OpenCL/m22000-pure.cl +++ b/OpenCL/m22000-pure.cl @@ -145,7 +145,7 @@ DECLSPEC void hmac_sha1_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE sha1_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m22000_init (KERN_ATTR_TMPS_ESALT (wpa_pbkdf2_tmp_t, wpa_t)) +KERNEL_FQ KERNEL_FA void m22000_init (KERN_ATTR_TMPS_ESALT (wpa_pbkdf2_tmp_t, wpa_t)) { /** * base @@ -253,7 +253,7 @@ KERNEL_FQ void m22000_init (KERN_ATTR_TMPS_ESALT (wpa_pbkdf2_tmp_t, wpa_t)) tmps[gid].out[9] = sha1_hmac_ctx2.opad.h[4]; } -KERNEL_FQ void m22000_loop (KERN_ATTR_TMPS_ESALT (wpa_pbkdf2_tmp_t, wpa_t)) +KERNEL_FQ KERNEL_FA void m22000_loop (KERN_ATTR_TMPS_ESALT (wpa_pbkdf2_tmp_t, wpa_t)) { const u64 gid = get_global_id (0); @@ -396,12 +396,12 @@ KERNEL_FQ void m22000_loop (KERN_ATTR_TMPS_ESALT (wpa_pbkdf2_tmp_t, wpa_t)) unpackv (tmps, out, gid, 9, out[4]); } -KERNEL_FQ void m22000_comp (KERN_ATTR_TMPS_ESALT (wpa_pbkdf2_tmp_t, wpa_t)) +KERNEL_FQ KERNEL_FA void m22000_comp (KERN_ATTR_TMPS_ESALT (wpa_pbkdf2_tmp_t, wpa_t)) { // not in use here, special case... } -KERNEL_FQ void m22000_aux1 (KERN_ATTR_TMPS_ESALT (wpa_pbkdf2_tmp_t, wpa_t)) +KERNEL_FQ KERNEL_FA void m22000_aux1 (KERN_ATTR_TMPS_ESALT (wpa_pbkdf2_tmp_t, wpa_t)) { const u64 gid = get_global_id (0); @@ -594,7 +594,7 @@ KERNEL_FQ void m22000_aux1 (KERN_ATTR_TMPS_ESALT (wpa_pbkdf2_tmp_t, wpa_t)) } } -KERNEL_FQ void m22000_aux2 (KERN_ATTR_TMPS_ESALT (wpa_pbkdf2_tmp_t, wpa_t)) +KERNEL_FQ KERNEL_FA void m22000_aux2 (KERN_ATTR_TMPS_ESALT (wpa_pbkdf2_tmp_t, wpa_t)) { const u64 gid = get_global_id (0); @@ -777,7 +777,7 @@ KERNEL_FQ void m22000_aux2 (KERN_ATTR_TMPS_ESALT (wpa_pbkdf2_tmp_t, wpa_t)) } } -KERNEL_FQ void m22000_aux3 (KERN_ATTR_TMPS_ESALT (wpa_pbkdf2_tmp_t, wpa_t)) +KERNEL_FQ KERNEL_FA void m22000_aux3 (KERN_ATTR_TMPS_ESALT (wpa_pbkdf2_tmp_t, wpa_t)) { /** * aes shared @@ -1071,7 +1071,7 @@ KERNEL_FQ void m22000_aux3 (KERN_ATTR_TMPS_ESALT (wpa_pbkdf2_tmp_t, wpa_t)) } } -KERNEL_FQ void m22000_aux4 (KERN_ATTR_TMPS_ESALT (wpa_pbkdf2_tmp_t, wpa_t)) +KERNEL_FQ KERNEL_FA void m22000_aux4 (KERN_ATTR_TMPS_ESALT (wpa_pbkdf2_tmp_t, wpa_t)) { const u64 gid = get_global_id (0); diff --git a/OpenCL/m22001-pure.cl b/OpenCL/m22001-pure.cl index 9034abded..d26a276f1 100644 --- a/OpenCL/m22001-pure.cl +++ b/OpenCL/m22001-pure.cl @@ -158,7 +158,7 @@ DECLSPEC void hmac_sha1_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE sha1_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m22001_init (KERN_ATTR_TMPS_ESALT (wpa_pmk_tmp_t, wpa_t)) +KERNEL_FQ KERNEL_FA void m22001_init (KERN_ATTR_TMPS_ESALT (wpa_pmk_tmp_t, wpa_t)) { const u64 gid = get_global_id (0); @@ -203,17 +203,17 @@ KERNEL_FQ void m22001_init (KERN_ATTR_TMPS_ESALT (wpa_pmk_tmp_t, wpa_t)) tmps[gid].out[7] = hc_swap32_S (out[7]); } -KERNEL_FQ void m22001_loop (KERN_ATTR_TMPS_ESALT (wpa_pmk_tmp_t, wpa_t)) +KERNEL_FQ KERNEL_FA void m22001_loop (KERN_ATTR_TMPS_ESALT (wpa_pmk_tmp_t, wpa_t)) { // not in use here, special case... } -KERNEL_FQ void m22001_comp (KERN_ATTR_TMPS_ESALT (wpa_pmk_tmp_t, wpa_t)) +KERNEL_FQ KERNEL_FA void m22001_comp (KERN_ATTR_TMPS_ESALT (wpa_pmk_tmp_t, wpa_t)) { // not in use here, special case... } -KERNEL_FQ void m22001_aux1 (KERN_ATTR_TMPS_ESALT (wpa_pmk_tmp_t, wpa_t)) +KERNEL_FQ KERNEL_FA void m22001_aux1 (KERN_ATTR_TMPS_ESALT (wpa_pmk_tmp_t, wpa_t)) { const u64 gid = get_global_id (0); @@ -406,7 +406,7 @@ KERNEL_FQ void m22001_aux1 (KERN_ATTR_TMPS_ESALT (wpa_pmk_tmp_t, wpa_t)) } } -KERNEL_FQ void m22001_aux2 (KERN_ATTR_TMPS_ESALT (wpa_pmk_tmp_t, wpa_t)) +KERNEL_FQ KERNEL_FA void m22001_aux2 (KERN_ATTR_TMPS_ESALT (wpa_pmk_tmp_t, wpa_t)) { const u64 gid = get_global_id (0); @@ -589,7 +589,7 @@ KERNEL_FQ void m22001_aux2 (KERN_ATTR_TMPS_ESALT (wpa_pmk_tmp_t, wpa_t)) } } -KERNEL_FQ void m22001_aux3 (KERN_ATTR_TMPS_ESALT (wpa_pmk_tmp_t, wpa_t)) +KERNEL_FQ KERNEL_FA void m22001_aux3 (KERN_ATTR_TMPS_ESALT (wpa_pmk_tmp_t, wpa_t)) { /** * aes shared @@ -883,7 +883,7 @@ KERNEL_FQ void m22001_aux3 (KERN_ATTR_TMPS_ESALT (wpa_pmk_tmp_t, wpa_t)) } } -KERNEL_FQ void m22001_aux4 (KERN_ATTR_TMPS_ESALT (wpa_pmk_tmp_t, wpa_t)) +KERNEL_FQ KERNEL_FA void m22001_aux4 (KERN_ATTR_TMPS_ESALT (wpa_pmk_tmp_t, wpa_t)) { const u64 gid = get_global_id (0); diff --git a/OpenCL/m22100-pure.cl b/OpenCL/m22100-pure.cl index 15747015c..36930325e 100644 --- a/OpenCL/m22100-pure.cl +++ b/OpenCL/m22100-pure.cl @@ -133,7 +133,7 @@ DECLSPEC void sha256_transform_vector_pc (PRIVATE_AS const u32x *w0, PRIVATE_AS digest[7] += h; } -KERNEL_FQ void m22100_init (KERN_ATTR_TMPS_ESALT (bitlocker_tmp_t, bitlocker_t)) +KERNEL_FQ KERNEL_FA void m22100_init (KERN_ATTR_TMPS_ESALT (bitlocker_tmp_t, bitlocker_t)) { /** * base @@ -193,7 +193,7 @@ KERNEL_FQ void m22100_init (KERN_ATTR_TMPS_ESALT (bitlocker_tmp_t, bitlocker_t)) tmps[gid].last_hash[7] = 0; } -KERNEL_FQ void m22100_loop (KERN_ATTR_TMPS_ESALT (bitlocker_tmp_t, bitlocker_t)) +KERNEL_FQ KERNEL_FA void m22100_loop (KERN_ATTR_TMPS_ESALT (bitlocker_tmp_t, bitlocker_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -347,7 +347,7 @@ KERNEL_FQ void m22100_loop (KERN_ATTR_TMPS_ESALT (bitlocker_tmp_t, bitlocker_t)) unpackv (tmps, last_hash, gid, 7, w1[3]); } -KERNEL_FQ void m22100_comp (KERN_ATTR_TMPS_ESALT (bitlocker_tmp_t, bitlocker_t)) +KERNEL_FQ KERNEL_FA void m22100_comp (KERN_ATTR_TMPS_ESALT (bitlocker_tmp_t, bitlocker_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m22200_a0-optimized.cl b/OpenCL/m22200_a0-optimized.cl index fc7c9406b..73ae7e9aa 100644 --- a/OpenCL/m22200_a0-optimized.cl +++ b/OpenCL/m22200_a0-optimized.cl @@ -122,7 +122,7 @@ DECLSPEC void sha512_transform_intern (PRIVATE_AS const u32x *w0, PRIVATE_AS con digest[7] = h; } -KERNEL_FQ void m22200_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m22200_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -237,15 +237,15 @@ KERNEL_FQ void m22200_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m22200_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m22200_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m22200_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m22200_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m22200_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m22200_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -373,10 +373,10 @@ KERNEL_FQ void m22200_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m22200_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m22200_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m22200_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m22200_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m22200_a0-pure.cl b/OpenCL/m22200_a0-pure.cl index 75d20c990..8c1338596 100644 --- a/OpenCL/m22200_a0-pure.cl +++ b/OpenCL/m22200_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha512.cl) #endif -KERNEL_FQ void m22200_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m22200_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -68,7 +68,7 @@ KERNEL_FQ void m22200_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m22200_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m22200_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m22200_a1-optimized.cl b/OpenCL/m22200_a1-optimized.cl index 9c426666a..7ce510ba9 100644 --- a/OpenCL/m22200_a1-optimized.cl +++ b/OpenCL/m22200_a1-optimized.cl @@ -120,7 +120,7 @@ DECLSPEC void sha512_transform_intern (PRIVATE_AS const u32x *w0, PRIVATE_AS con digest[7] = h; } -KERNEL_FQ void m22200_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m22200_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -307,15 +307,15 @@ KERNEL_FQ void m22200_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m22200_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m22200_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m22200_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m22200_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m22200_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m22200_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -502,10 +502,10 @@ KERNEL_FQ void m22200_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m22200_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m22200_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m22200_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m22200_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m22200_a1-pure.cl b/OpenCL/m22200_a1-pure.cl index 82af2556d..aad1d3179 100644 --- a/OpenCL/m22200_a1-pure.cl +++ b/OpenCL/m22200_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha512.cl) #endif -KERNEL_FQ void m22200_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m22200_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -63,7 +63,7 @@ KERNEL_FQ void m22200_mxx (KERN_ATTR_BASIC ()) } -KERNEL_FQ void m22200_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m22200_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m22200_a3-optimized.cl b/OpenCL/m22200_a3-optimized.cl index c26d3977c..feae41218 100644 --- a/OpenCL/m22200_a3-optimized.cl +++ b/OpenCL/m22200_a3-optimized.cl @@ -282,7 +282,7 @@ DECLSPEC void m22200s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m22200_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m22200_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -348,7 +348,7 @@ KERNEL_FQ void m22200_m04 (KERN_ATTR_BASIC ()) m22200m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m22200_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m22200_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -422,7 +422,7 @@ KERNEL_FQ void m22200_m08 (KERN_ATTR_BASIC ()) m22200m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m22200_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m22200_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -511,7 +511,7 @@ KERNEL_FQ void m22200_m16 (KERN_ATTR_BASIC ()) m22200m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m22200_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m22200_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -577,7 +577,7 @@ KERNEL_FQ void m22200_s04 (KERN_ATTR_BASIC ()) m22200s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m22200_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m22200_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -651,7 +651,7 @@ KERNEL_FQ void m22200_s08 (KERN_ATTR_BASIC ()) m22200s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m22200_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m22200_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m22200_a3-pure.cl b/OpenCL/m22200_a3-pure.cl index 4df3d0c63..a06b6c4e6 100644 --- a/OpenCL/m22200_a3-pure.cl +++ b/OpenCL/m22200_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha512.cl) #endif -KERNEL_FQ void m22200_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m22200_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -79,7 +79,7 @@ KERNEL_FQ void m22200_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m22200_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m22200_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m22300_a0-optimized.cl b/OpenCL/m22300_a0-optimized.cl index 78178a00c..4d22d3e16 100644 --- a/OpenCL/m22300_a0-optimized.cl +++ b/OpenCL/m22300_a0-optimized.cl @@ -30,7 +30,7 @@ h = 0; \ } -KERNEL_FQ void m22300_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m22300_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -277,15 +277,15 @@ KERNEL_FQ void m22300_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m22300_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m22300_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m22300_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m22300_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m22300_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m22300_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -565,10 +565,10 @@ KERNEL_FQ void m22300_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m22300_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m22300_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m22300_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m22300_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m22300_a0-pure.cl b/OpenCL/m22300_a0-pure.cl index 729ac56e0..338608d14 100644 --- a/OpenCL/m22300_a0-pure.cl +++ b/OpenCL/m22300_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha256.cl) #endif -KERNEL_FQ void m22300_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m22300_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -75,7 +75,7 @@ KERNEL_FQ void m22300_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m22300_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m22300_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m22300_a1-optimized.cl b/OpenCL/m22300_a1-optimized.cl index f57a8c2a1..3d1614871 100644 --- a/OpenCL/m22300_a1-optimized.cl +++ b/OpenCL/m22300_a1-optimized.cl @@ -28,7 +28,7 @@ h = 0; \ } -KERNEL_FQ void m22300_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m22300_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -335,15 +335,15 @@ KERNEL_FQ void m22300_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m22300_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m22300_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m22300_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m22300_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m22300_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m22300_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -683,10 +683,10 @@ KERNEL_FQ void m22300_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m22300_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m22300_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m22300_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m22300_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m22300_a1-pure.cl b/OpenCL/m22300_a1-pure.cl index 65af3eb13..a71525f1f 100644 --- a/OpenCL/m22300_a1-pure.cl +++ b/OpenCL/m22300_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha256.cl) #endif -KERNEL_FQ void m22300_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m22300_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -69,7 +69,7 @@ KERNEL_FQ void m22300_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m22300_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m22300_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m22300_a3-optimized.cl b/OpenCL/m22300_a3-optimized.cl index 4293778df..e4c06bf76 100644 --- a/OpenCL/m22300_a3-optimized.cl +++ b/OpenCL/m22300_a3-optimized.cl @@ -537,7 +537,7 @@ DECLSPEC void m22300s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m22300_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m22300_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -586,7 +586,7 @@ KERNEL_FQ void m22300_m04 (KERN_ATTR_BASIC ()) m22300m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m22300_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m22300_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -635,7 +635,7 @@ KERNEL_FQ void m22300_m08 (KERN_ATTR_BASIC ()) m22300m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m22300_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m22300_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -684,7 +684,7 @@ KERNEL_FQ void m22300_m16 (KERN_ATTR_BASIC ()) m22300m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m22300_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m22300_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -733,7 +733,7 @@ KERNEL_FQ void m22300_s04 (KERN_ATTR_BASIC ()) m22300s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m22300_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m22300_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -782,7 +782,7 @@ KERNEL_FQ void m22300_s08 (KERN_ATTR_BASIC ()) m22300s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m22300_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m22300_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m22300_a3-pure.cl b/OpenCL/m22300_a3-pure.cl index dfe7fa169..c34bc3a0a 100644 --- a/OpenCL/m22300_a3-pure.cl +++ b/OpenCL/m22300_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha256.cl) #endif -KERNEL_FQ void m22300_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m22300_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -86,7 +86,7 @@ KERNEL_FQ void m22300_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m22300_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m22300_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m22400-pure.cl b/OpenCL/m22400-pure.cl index f7da3a4ba..6daf00114 100644 --- a/OpenCL/m22400-pure.cl +++ b/OpenCL/m22400-pure.cl @@ -31,7 +31,7 @@ typedef struct aescrypt_tmp } aescrypt_tmp_t; -KERNEL_FQ void m22400_init (KERN_ATTR_TMPS_ESALT (aescrypt_tmp_t, aescrypt_t)) +KERNEL_FQ KERNEL_FA void m22400_init (KERN_ATTR_TMPS_ESALT (aescrypt_tmp_t, aescrypt_t)) { /** * base @@ -110,7 +110,7 @@ KERNEL_FQ void m22400_init (KERN_ATTR_TMPS_ESALT (aescrypt_tmp_t, aescrypt_t)) tmps[gid].len = final_len; } -KERNEL_FQ void m22400_loop (KERN_ATTR_TMPS_ESALT (aescrypt_tmp_t, aescrypt_t)) +KERNEL_FQ KERNEL_FA void m22400_loop (KERN_ATTR_TMPS_ESALT (aescrypt_tmp_t, aescrypt_t)) { const u64 gid = get_global_id (0); @@ -214,7 +214,7 @@ KERNEL_FQ void m22400_loop (KERN_ATTR_TMPS_ESALT (aescrypt_tmp_t, aescrypt_t)) tmps[gid].pass[7] = w[7]; } -KERNEL_FQ void m22400_comp (KERN_ATTR_TMPS_ESALT (aescrypt_tmp_t, aescrypt_t)) +KERNEL_FQ KERNEL_FA void m22400_comp (KERN_ATTR_TMPS_ESALT (aescrypt_tmp_t, aescrypt_t)) { const u64 gid = get_global_id (0); diff --git a/OpenCL/m22500_a0-optimized.cl b/OpenCL/m22500_a0-optimized.cl index 12e14e48d..7b8ecf5a7 100644 --- a/OpenCL/m22500_a0-optimized.cl +++ b/OpenCL/m22500_a0-optimized.cl @@ -29,7 +29,7 @@ DECLSPEC int is_valid_bitcoinj_8 (const u8 v) return 1; } -KERNEL_FQ void m22500_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m22500_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -616,15 +616,15 @@ KERNEL_FQ void m22500_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m22500_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m22500_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m22500_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m22500_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m22500_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m22500_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -1211,10 +1211,10 @@ KERNEL_FQ void m22500_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m22500_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m22500_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m22500_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m22500_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m22500_a0-pure.cl b/OpenCL/m22500_a0-pure.cl index e2c51c557..1d67a95d7 100644 --- a/OpenCL/m22500_a0-pure.cl +++ b/OpenCL/m22500_a0-pure.cl @@ -29,7 +29,7 @@ DECLSPEC int is_valid_bitcoinj_8 (const u8 v) return 1; } -KERNEL_FQ void m22500_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m22500_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -325,7 +325,7 @@ KERNEL_FQ void m22500_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m22500_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m22500_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m22500_a1-optimized.cl b/OpenCL/m22500_a1-optimized.cl index 9eb8a54c5..fdd78ba1a 100644 --- a/OpenCL/m22500_a1-optimized.cl +++ b/OpenCL/m22500_a1-optimized.cl @@ -28,7 +28,7 @@ DECLSPEC int is_valid_bitcoinj_8 (const u8 v) return 1; } -KERNEL_FQ void m22500_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m22500_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -675,15 +675,15 @@ KERNEL_FQ void m22500_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m22500_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m22500_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m22500_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m22500_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m22500_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m22500_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -1330,10 +1330,10 @@ KERNEL_FQ void m22500_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m22500_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m22500_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m22500_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m22500_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m22500_a1-pure.cl b/OpenCL/m22500_a1-pure.cl index 07b11a97f..fb3c210d4 100644 --- a/OpenCL/m22500_a1-pure.cl +++ b/OpenCL/m22500_a1-pure.cl @@ -27,7 +27,7 @@ DECLSPEC int is_valid_bitcoinj_8 (const u8 v) return 1; } -KERNEL_FQ void m22500_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m22500_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -329,7 +329,7 @@ KERNEL_FQ void m22500_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m22500_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m22500_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m22500_a3-optimized.cl b/OpenCL/m22500_a3-optimized.cl index a16415b0b..e7466d88e 100644 --- a/OpenCL/m22500_a3-optimized.cl +++ b/OpenCL/m22500_a3-optimized.cl @@ -602,7 +602,7 @@ DECLSPEC void m22500 (SHM_TYPE u32a *s_te0, SHM_TYPE u32a *s_te1, SHM_TYPE u32a } } -KERNEL_FQ void m22500_m04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m22500_m04 (KERN_ATTR_VECTOR ()) { /** * base @@ -697,7 +697,7 @@ KERNEL_FQ void m22500_m04 (KERN_ATTR_VECTOR ()) m22500 (s_te0, s_te1, s_te2, s_te3, s_te4, s_td0, s_td1, s_td2, s_td3, s_td4, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m22500_m08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m22500_m08 (KERN_ATTR_VECTOR ()) { /** * base @@ -792,7 +792,7 @@ KERNEL_FQ void m22500_m08 (KERN_ATTR_VECTOR ()) m22500 (s_te0, s_te1, s_te2, s_te3, s_te4, s_td0, s_td1, s_td2, s_td3, s_td4, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m22500_m16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m22500_m16 (KERN_ATTR_VECTOR ()) { /** * base @@ -887,7 +887,7 @@ KERNEL_FQ void m22500_m16 (KERN_ATTR_VECTOR ()) m22500 (s_te0, s_te1, s_te2, s_te3, s_te4, s_td0, s_td1, s_td2, s_td3, s_td4, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m22500_s04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m22500_s04 (KERN_ATTR_VECTOR ()) { /** * base @@ -982,7 +982,7 @@ KERNEL_FQ void m22500_s04 (KERN_ATTR_VECTOR ()) m22500 (s_te0, s_te1, s_te2, s_te3, s_te4, s_td0, s_td1, s_td2, s_td3, s_td4, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m22500_s08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m22500_s08 (KERN_ATTR_VECTOR ()) { /** * base @@ -1077,7 +1077,7 @@ KERNEL_FQ void m22500_s08 (KERN_ATTR_VECTOR ()) m22500 (s_te0, s_te1, s_te2, s_te3, s_te4, s_td0, s_td1, s_td2, s_td3, s_td4, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m22500_s16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m22500_s16 (KERN_ATTR_VECTOR ()) { /** * base diff --git a/OpenCL/m22500_a3-pure.cl b/OpenCL/m22500_a3-pure.cl index d11b78493..5b9d85287 100644 --- a/OpenCL/m22500_a3-pure.cl +++ b/OpenCL/m22500_a3-pure.cl @@ -27,7 +27,7 @@ DECLSPEC int is_valid_bitcoinj_8 (const u8 v) return 1; } -KERNEL_FQ void m22500_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m22500_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -338,7 +338,7 @@ KERNEL_FQ void m22500_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m22500_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m22500_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m22600-pure.cl b/OpenCL/m22600-pure.cl index 04558549b..30fd96fd7 100644 --- a/OpenCL/m22600-pure.cl +++ b/OpenCL/m22600-pure.cl @@ -108,7 +108,7 @@ DECLSPEC void sha1_run (PRIVATE_AS u32 *w, PRIVATE_AS u32 *res) res[4] = digest[4]; } -KERNEL_FQ void m22600_init (KERN_ATTR_TMPS_ESALT (telegram_tmp_t, telegram_t)) +KERNEL_FQ KERNEL_FA void m22600_init (KERN_ATTR_TMPS_ESALT (telegram_tmp_t, telegram_t)) { /** * base @@ -182,7 +182,7 @@ KERNEL_FQ void m22600_init (KERN_ATTR_TMPS_ESALT (telegram_tmp_t, telegram_t)) } } -KERNEL_FQ void m22600_loop (KERN_ATTR_TMPS_ESALT (telegram_tmp_t, telegram_t)) +KERNEL_FQ KERNEL_FA void m22600_loop (KERN_ATTR_TMPS_ESALT (telegram_tmp_t, telegram_t)) { const u64 gid = get_global_id (0); @@ -267,7 +267,7 @@ KERNEL_FQ void m22600_loop (KERN_ATTR_TMPS_ESALT (telegram_tmp_t, telegram_t)) } } -KERNEL_FQ void m22600_comp (KERN_ATTR_TMPS_ESALT (telegram_tmp_t, telegram_t)) +KERNEL_FQ KERNEL_FA void m22600_comp (KERN_ATTR_TMPS_ESALT (telegram_tmp_t, telegram_t)) { /** * base diff --git a/OpenCL/m22700-pure.cl b/OpenCL/m22700-pure.cl index 303e5e334..981880169 100644 --- a/OpenCL/m22700-pure.cl +++ b/OpenCL/m22700-pure.cl @@ -9,6 +9,7 @@ #include M2S(INCLUDE_PATH/inc_platform.cl) #include M2S(INCLUDE_PATH/inc_common.cl) #include M2S(INCLUDE_PATH/inc_hash_sha256.cl) +#include M2S(INCLUDE_PATH/inc_hash_scrypt.cl) #include M2S(INCLUDE_PATH/inc_cipher_aes.cl) #endif @@ -25,16 +26,6 @@ #define MULTIBIT_IV2 0x16865429 #define MULTIBIT_IV3 0x3e7289c4 -typedef struct -{ - #ifndef SCRYPT_TMP_ELEM - #define SCRYPT_TMP_ELEM 1 - #endif - - uint4 P[SCRYPT_TMP_ELEM]; - -} scrypt_tmp_t; - DECLSPEC int is_valid_bitcoinj_8 (const u8 v) { // .abcdefghijklmnopqrstuvwxyz @@ -72,279 +63,8 @@ DECLSPEC int is_valid_bitcoinj (PRIVATE_AS const u32 *w) return 1; } -#if defined IS_CUDA || defined IS_HIP - -inline __device__ uint4 operator & (const uint4 a, const u32 b) { return make_uint4 ((a.x & b ), (a.y & b ), (a.z & b ), (a.w & b )); } -inline __device__ uint4 operator << (const uint4 a, const u32 b) { return make_uint4 ((a.x << b ), (a.y << b ), (a.z << b ), (a.w << b )); } -inline __device__ uint4 operator >> (const uint4 a, const u32 b) { return make_uint4 ((a.x >> b ), (a.y >> b ), (a.z >> b ), (a.w >> b )); } -inline __device__ uint4 operator + (const uint4 a, const uint4 b) { return make_uint4 ((a.x + b.x), (a.y + b.y), (a.z + b.z), (a.w + b.w)); } -inline __device__ uint4 operator ^ (const uint4 a, const uint4 b) { return make_uint4 ((a.x ^ b.x), (a.y ^ b.y), (a.z ^ b.z), (a.w ^ b.w)); } -inline __device__ uint4 operator | (const uint4 a, const uint4 b) { return make_uint4 ((a.x | b.x), (a.y | b.y), (a.z | b.z), (a.w | b.w)); } -inline __device__ void operator ^= ( uint4 &a, const uint4 b) { a.x ^= b.x; a.y ^= b.y; a.z ^= b.z; a.w ^= b.w; } - -inline __device__ uint4 rotate (const uint4 a, const int n) +KERNEL_FQ KERNEL_FA void m22700_init (KERN_ATTR_TMPS (scrypt_tmp_t)) { - return ((a << n) | ((a >> (32 - n)))); -} - -#endif - -DECLSPEC uint4 hc_swap32_4 (uint4 v) -{ - return (rotate ((v & 0x00FF00FF), 24u) | rotate ((v & 0xFF00FF00), 8u)); -} - -#define GET_SCRYPT_CNT(r,p) (2 * (r) * 16 * (p)) -#define GET_SMIX_CNT(r,N) (2 * (r) * 16 * (N)) -#define GET_STATE_CNT(r) (2 * (r) * 16) - -#define SCRYPT_CNT GET_SCRYPT_CNT (SCRYPT_R, SCRYPT_P) -#define SCRYPT_CNT4 (SCRYPT_CNT / 4) -#define STATE_CNT GET_STATE_CNT (SCRYPT_R) -#define STATE_CNT4 (STATE_CNT / 4) - -#define ADD_ROTATE_XOR(r,i1,i2,s) (r) ^= rotate ((i1) + (i2), (s)); - -#if defined IS_CUDA || defined IS_HIP - -#define SALSA20_2R() \ -{ \ - ADD_ROTATE_XOR (X1, X0, X3, 7); \ - ADD_ROTATE_XOR (X2, X1, X0, 9); \ - ADD_ROTATE_XOR (X3, X2, X1, 13); \ - ADD_ROTATE_XOR (X0, X3, X2, 18); \ - \ - X1 = make_uint4 (X1.w, X1.x, X1.y, X1.z); \ - X2 = make_uint4 (X2.z, X2.w, X2.x, X2.y); \ - X3 = make_uint4 (X3.y, X3.z, X3.w, X3.x); \ - \ - ADD_ROTATE_XOR (X3, X0, X1, 7); \ - ADD_ROTATE_XOR (X2, X3, X0, 9); \ - ADD_ROTATE_XOR (X1, X2, X3, 13); \ - ADD_ROTATE_XOR (X0, X1, X2, 18); \ - \ - X1 = make_uint4 (X1.y, X1.z, X1.w, X1.x); \ - X2 = make_uint4 (X2.z, X2.w, X2.x, X2.y); \ - X3 = make_uint4 (X3.w, X3.x, X3.y, X3.z); \ -} -#elif defined IS_METAL -#define SALSA20_2R() \ -{ \ - ADD_ROTATE_XOR (X1, X0, X3, 7); \ - ADD_ROTATE_XOR (X2, X1, X0, 9); \ - ADD_ROTATE_XOR (X3, X2, X1, 13); \ - ADD_ROTATE_XOR (X0, X3, X2, 18); \ - \ - X1 = X1.wxyz; \ - X2 = X2.zwxy; \ - X3 = X3.yzwx; \ - \ - ADD_ROTATE_XOR (X3, X0, X1, 7); \ - ADD_ROTATE_XOR (X2, X3, X0, 9); \ - ADD_ROTATE_XOR (X1, X2, X3, 13); \ - ADD_ROTATE_XOR (X0, X1, X2, 18); \ - \ - X1 = X1.yzwx; \ - X2 = X2.zwxy; \ - X3 = X3.wxyz; \ -} -#else -#define SALSA20_2R() \ -{ \ - ADD_ROTATE_XOR (X1, X0, X3, 7); \ - ADD_ROTATE_XOR (X2, X1, X0, 9); \ - ADD_ROTATE_XOR (X3, X2, X1, 13); \ - ADD_ROTATE_XOR (X0, X3, X2, 18); \ - \ - X1 = X1.s3012; \ - X2 = X2.s2301; \ - X3 = X3.s1230; \ - \ - ADD_ROTATE_XOR (X3, X0, X1, 7); \ - ADD_ROTATE_XOR (X2, X3, X0, 9); \ - ADD_ROTATE_XOR (X1, X2, X3, 13); \ - ADD_ROTATE_XOR (X0, X1, X2, 18); \ - \ - X1 = X1.s1230; \ - X2 = X2.s2301; \ - X3 = X3.s3012; \ -} -#endif - -#define Coord(xd4,y,z) (((xd4) * ySIZE * zSIZE) + ((y) * zSIZE) + (z)) -#define CO Coord(xd4,y,z) - -DECLSPEC void salsa_r (PRIVATE_AS uint4 *TI) -{ - #if SCRYPT_R > 1 - - uint4 TT[STATE_CNT4 / 2]; - - for (int dst_off = 0, src_off = 4; src_off < STATE_CNT4; dst_off += 4, src_off += 8) - { - TT[dst_off + 0] = TI[src_off + 0]; - TT[dst_off + 1] = TI[src_off + 1]; - TT[dst_off + 2] = TI[src_off + 2]; - TT[dst_off + 3] = TI[src_off + 3]; - } - - for (int dst_off = 4, src_off = 8; src_off < STATE_CNT4; dst_off += 4, src_off += 8) - { - TI[dst_off + 0] = TI[src_off + 0]; - TI[dst_off + 1] = TI[src_off + 1]; - TI[dst_off + 2] = TI[src_off + 2]; - TI[dst_off + 3] = TI[src_off + 3]; - } - - for (int dst_off = STATE_CNT4 / 2, src_off = 0; dst_off < STATE_CNT4; dst_off += 4, src_off += 4) - { - TI[dst_off + 0] = TT[src_off + 0]; - TI[dst_off + 1] = TT[src_off + 1]; - TI[dst_off + 2] = TT[src_off + 2]; - TI[dst_off + 3] = TT[src_off + 3]; - } - - #endif - - uint4 R0 = TI[STATE_CNT4 - 4]; - uint4 R1 = TI[STATE_CNT4 - 3]; - uint4 R2 = TI[STATE_CNT4 - 2]; - uint4 R3 = TI[STATE_CNT4 - 1]; - - for (int i = 0; i < STATE_CNT4; i += 4) - { - uint4 Y0 = TI[i + 0]; - uint4 Y1 = TI[i + 1]; - uint4 Y2 = TI[i + 2]; - uint4 Y3 = TI[i + 3]; - - R0 = R0 ^ Y0; - R1 = R1 ^ Y1; - R2 = R2 ^ Y2; - R3 = R3 ^ Y3; - - uint4 X0 = R0; - uint4 X1 = R1; - uint4 X2 = R2; - uint4 X3 = R3; - - SALSA20_2R (); - SALSA20_2R (); - SALSA20_2R (); - SALSA20_2R (); - - R0 = R0 + X0; - R1 = R1 + X1; - R2 = R2 + X2; - R3 = R3 + X3; - - TI[i + 0] = R0; - TI[i + 1] = R1; - TI[i + 2] = R2; - TI[i + 3] = R3; - } -} - -DECLSPEC void scrypt_smix_init (PRIVATE_AS uint4 *X, GLOBAL_AS uint4 *V0, GLOBAL_AS uint4 *V1, GLOBAL_AS uint4 *V2, GLOBAL_AS uint4 *V3, const u64 gid) -{ - const u32 ySIZE = SCRYPT_N / SCRYPT_TMTO; - const u32 zSIZE = STATE_CNT4; - - const u32 x = (u32) gid; - - const u32 xd4 = x / 4; - const u32 xm4 = x & 3; - - GLOBAL_AS uint4 *V; - - switch (xm4) - { - case 0: V = V0; break; - case 1: V = V1; break; - case 2: V = V2; break; - case 3: V = V3; break; - } - - #if SCRYPT_R > 1 - - uint4 TT[STATE_CNT4]; - - for (int z = 0; z < zSIZE; z++) TT[z] = X[z]; - - for (int dst_off = 8, src_off = 4; dst_off < zSIZE; dst_off += 8, src_off += 4) - { - X[dst_off + 0] = TT[src_off + 0]; - X[dst_off + 1] = TT[src_off + 1]; - X[dst_off + 2] = TT[src_off + 2]; - X[dst_off + 3] = TT[src_off + 3]; - } - - for (int dst_off = 4, src_off = zSIZE / 2; dst_off < zSIZE; dst_off += 8, src_off += 4) - { - X[dst_off + 0] = TT[src_off + 0]; - X[dst_off + 1] = TT[src_off + 1]; - X[dst_off + 2] = TT[src_off + 2]; - X[dst_off + 3] = TT[src_off + 3]; - } - - #endif - - for (u32 y = 0; y < ySIZE; y++) - { - for (u32 z = 0; z < zSIZE; z++) V[CO] = X[z]; - - for (u32 i = 0; i < SCRYPT_TMTO; i++) salsa_r (X); - } -} - -DECLSPEC void scrypt_smix_loop (PRIVATE_AS uint4 *X, GLOBAL_AS uint4 *V0, GLOBAL_AS uint4 *V1, GLOBAL_AS uint4 *V2, GLOBAL_AS uint4 *V3, const u64 gid) -{ - const u32 ySIZE = SCRYPT_N / SCRYPT_TMTO; - const u32 zSIZE = STATE_CNT4; - - const u32 x = (u32) gid; - - const u32 xd4 = x / 4; - const u32 xm4 = x & 3; - - GLOBAL_AS uint4 *V; - - switch (xm4) - { - case 0: V = V0; break; - case 1: V = V1; break; - case 2: V = V2; break; - case 3: V = V3; break; - } - - // note: fixed 1024 iterations = forced -u 1024 - - for (u32 N_pos = 0; N_pos < 1024; N_pos++) - { - const u32 k = X[zSIZE - 4].x & (SCRYPT_N - 1); - - const u32 y = k / SCRYPT_TMTO; - - const u32 km = k - (y * SCRYPT_TMTO); - - uint4 T[STATE_CNT4]; - - for (u32 z = 0; z < zSIZE; z++) T[z] = V[CO]; - - for (u32 i = 0; i < km; i++) salsa_r (T); - - for (u32 z = 0; z < zSIZE; z++) X[z] ^= T[z]; - - salsa_r (X); - } -} - -KERNEL_FQ void m22700_init (KERN_ATTR_TMPS (scrypt_tmp_t)) -{ - /** - * base - */ - const u64 gid = get_global_id (0); if (gid >= GID_CNT) return; @@ -366,173 +86,50 @@ KERNEL_FQ void m22700_init (KERN_ATTR_TMPS (scrypt_tmp_t)) | ((w[j] << 8) & 0xff00ff00); } - sha256_hmac_ctx_t sha256_hmac_ctx; + u32 s[16] = { 0 }; - sha256_hmac_init_swap (&sha256_hmac_ctx, w, w_len); + s[0] = hc_swap32_S (MULTIBIT_S0); + s[1] = hc_swap32_S (MULTIBIT_S1); - u32 x0[4] = { 0 }; - u32 x1[4] = { 0 }; - u32 x2[4] = { 0 }; - u32 x3[4] = { 0 }; + scrypt_pbkdf2_ppg (w, w_len, s, 8, tmps[gid].in, SCRYPT_SZ); - x0[0] = MULTIBIT_S0; - x0[1] = MULTIBIT_S1; - - sha256_hmac_update_64 (&sha256_hmac_ctx, x0, x1, x2, x3, 8); - - for (u32 i = 0, j = 1, k = 0; i < SCRYPT_CNT; i += 8, j += 1, k += 2) - { - sha256_hmac_ctx_t sha256_hmac_ctx2 = sha256_hmac_ctx; - - u32 w0[4]; - u32 w1[4]; - u32 w2[4]; - u32 w3[4]; - - w0[0] = j; - w0[1] = 0; - w0[2] = 0; - w0[3] = 0; - w1[0] = 0; - w1[1] = 0; - w1[2] = 0; - w1[3] = 0; - w2[0] = 0; - w2[1] = 0; - w2[2] = 0; - w2[3] = 0; - w3[0] = 0; - w3[1] = 0; - w3[2] = 0; - w3[3] = 0; - - sha256_hmac_update_64 (&sha256_hmac_ctx2, w0, w1, w2, w3, 4); - - sha256_hmac_final (&sha256_hmac_ctx2); - - u32 digest[8]; - - digest[0] = sha256_hmac_ctx2.opad.h[0]; - digest[1] = sha256_hmac_ctx2.opad.h[1]; - digest[2] = sha256_hmac_ctx2.opad.h[2]; - digest[3] = sha256_hmac_ctx2.opad.h[3]; - digest[4] = sha256_hmac_ctx2.opad.h[4]; - digest[5] = sha256_hmac_ctx2.opad.h[5]; - digest[6] = sha256_hmac_ctx2.opad.h[6]; - digest[7] = sha256_hmac_ctx2.opad.h[7]; - - #if defined IS_CUDA || defined IS_HIP - const uint4 tmp0 = make_uint4 (digest[0], digest[1], digest[2], digest[3]); - const uint4 tmp1 = make_uint4 (digest[4], digest[5], digest[6], digest[7]); - #elif defined IS_METAL - const uint4 tmp0 = uint4 (digest[0], digest[1], digest[2], digest[3]); - const uint4 tmp1 = uint4 (digest[4], digest[5], digest[6], digest[7]); - #else - const uint4 tmp0 = (uint4) (digest[0], digest[1], digest[2], digest[3]); - const uint4 tmp1 = (uint4) (digest[4], digest[5], digest[6], digest[7]); - #endif - - tmps[gid].P[k + 0] = tmp0; - tmps[gid].P[k + 1] = tmp1; - } - - for (u32 l = 0; l < SCRYPT_CNT4; l += 4) - { - uint4 T[4]; - - T[0] = tmps[gid].P[l + 0]; - T[1] = tmps[gid].P[l + 1]; - T[2] = tmps[gid].P[l + 2]; - T[3] = tmps[gid].P[l + 3]; - - T[0] = hc_swap32_4 (T[0]); - T[1] = hc_swap32_4 (T[1]); - T[2] = hc_swap32_4 (T[2]); - T[3] = hc_swap32_4 (T[3]); - - uint4 X[4]; - - #if defined IS_CUDA || defined IS_HIP - X[0] = make_uint4 (T[0].x, T[1].y, T[2].z, T[3].w); - X[1] = make_uint4 (T[1].x, T[2].y, T[3].z, T[0].w); - X[2] = make_uint4 (T[2].x, T[3].y, T[0].z, T[1].w); - X[3] = make_uint4 (T[3].x, T[0].y, T[1].z, T[2].w); - #elif defined IS_METAL - X[0] = uint4 (T[0].x, T[1].y, T[2].z, T[3].w); - X[1] = uint4 (T[1].x, T[2].y, T[3].z, T[0].w); - X[2] = uint4 (T[2].x, T[3].y, T[0].z, T[1].w); - X[3] = uint4 (T[3].x, T[0].y, T[1].z, T[2].w); - #else - X[0] = (uint4) (T[0].x, T[1].y, T[2].z, T[3].w); - X[1] = (uint4) (T[1].x, T[2].y, T[3].z, T[0].w); - X[2] = (uint4) (T[2].x, T[3].y, T[0].z, T[1].w); - X[3] = (uint4) (T[3].x, T[0].y, T[1].z, T[2].w); - #endif - - tmps[gid].P[l + 0] = X[0]; - tmps[gid].P[l + 1] = X[1]; - tmps[gid].P[l + 2] = X[2]; - tmps[gid].P[l + 3] = X[3]; - } + scrypt_blockmix_in (tmps[gid].in, tmps[gid].out, SCRYPT_SZ); } -KERNEL_FQ void m22700_loop_prepare (KERN_ATTR_TMPS (scrypt_tmp_t)) -{ - /** - * base - */ - - const u64 gid = get_global_id (0); - const u64 lid = get_local_id (0); - - if (gid >= GID_CNT) return; - - // SCRYPT part, init V - - GLOBAL_AS uint4 *d_scrypt0_buf = (GLOBAL_AS uint4 *) d_extra0_buf; - GLOBAL_AS uint4 *d_scrypt1_buf = (GLOBAL_AS uint4 *) d_extra1_buf; - GLOBAL_AS uint4 *d_scrypt2_buf = (GLOBAL_AS uint4 *) d_extra2_buf; - GLOBAL_AS uint4 *d_scrypt3_buf = (GLOBAL_AS uint4 *) d_extra3_buf; - - uint4 X[STATE_CNT4]; - - const u32 P_offset = SALT_REPEAT * STATE_CNT4; - - GLOBAL_AS uint4 *P = tmps[gid].P + P_offset; - - for (int z = 0; z < STATE_CNT4; z++) X[z] = P[z]; - - scrypt_smix_init (X, d_scrypt0_buf, d_scrypt1_buf, d_scrypt2_buf, d_scrypt3_buf, gid); - - for (int z = 0; z < STATE_CNT4; z++) P[z] = X[z]; -} - -KERNEL_FQ void m22700_loop (KERN_ATTR_TMPS (scrypt_tmp_t)) +KERNEL_FQ KERNEL_FA void m22700_loop_prepare (KERN_ATTR_TMPS (scrypt_tmp_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); + const u64 lsz = get_local_size (0); + const u64 bid = get_group_id (0); if (gid >= GID_CNT) return; - GLOBAL_AS uint4 *d_scrypt0_buf = (GLOBAL_AS uint4 *) d_extra0_buf; - GLOBAL_AS uint4 *d_scrypt1_buf = (GLOBAL_AS uint4 *) d_extra1_buf; - GLOBAL_AS uint4 *d_scrypt2_buf = (GLOBAL_AS uint4 *) d_extra2_buf; - GLOBAL_AS uint4 *d_scrypt3_buf = (GLOBAL_AS uint4 *) d_extra3_buf; + u32 X[STATE_CNT4]; - uint4 X[STATE_CNT4]; + GLOBAL_AS u32 *P = tmps[gid].out + (SALT_REPEAT * STATE_CNT4); - const u32 P_offset = SALT_REPEAT * STATE_CNT4; - - GLOBAL_AS uint4 *P = tmps[gid].P + P_offset; - - for (int z = 0; z < STATE_CNT4; z++) X[z] = P[z]; - - scrypt_smix_loop (X, d_scrypt0_buf, d_scrypt1_buf, d_scrypt2_buf, d_scrypt3_buf, gid); - - for (int z = 0; z < STATE_CNT4; z++) P[z] = X[z]; + scrypt_smix_init (P, X, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, gid, lid, lsz, bid); } -KERNEL_FQ void m22700_comp (KERN_ATTR_TMPS (scrypt_tmp_t)) +KERNEL_FQ KERNEL_FA void m22700_loop (KERN_ATTR_TMPS (scrypt_tmp_t)) +{ + const u64 gid = get_global_id (0); + const u64 lid = get_local_id (0); + const u64 lsz = get_local_size (0); + const u64 bid = get_group_id (0); + + if (gid >= GID_CNT) return; + + u32 X[STATE_CNT4]; + u32 T[STATE_CNT4]; + + GLOBAL_AS u32 *P = tmps[gid].out + (SALT_REPEAT * STATE_CNT4); + + scrypt_smix_loop (P, X, T, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, gid, lid, lsz, bid); +} + +KERNEL_FQ KERNEL_FA void m22700_comp (KERN_ATTR_TMPS (scrypt_tmp_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -612,112 +209,31 @@ KERNEL_FQ void m22700_comp (KERN_ATTR_TMPS (scrypt_tmp_t)) | ((w[j] << 8) & 0xff00ff00); } - sha256_hmac_ctx_t ctx; - sha256_hmac_init_swap (&ctx, w, w_len); + scrypt_blockmix_out (tmps[gid].out, tmps[gid].in, SCRYPT_SZ); - u32 w0[4]; - u32 w1[4]; - u32 w2[4]; - u32 w3[4]; + u32 out[8]; - for (u32 i = 0; i < SCRYPT_CNT4; i += STATE_CNT4) - { - for (u32 j = 0; j < (STATE_CNT4 * 2); j += 8) - { - uint4 X[4]; - - const u32 l = i + j + ((j >= STATE_CNT4) ? (4 - STATE_CNT4) : 0); - - X[0] = tmps[gid].P[l + 0]; - X[1] = tmps[gid].P[l + 1]; - X[2] = tmps[gid].P[l + 2]; - X[3] = tmps[gid].P[l + 3]; - - uint4 T[4]; - - #if defined IS_CUDA || defined IS_HIP - T[0] = make_uint4 (X[0].x, X[3].y, X[2].z, X[1].w); - T[1] = make_uint4 (X[1].x, X[0].y, X[3].z, X[2].w); - T[2] = make_uint4 (X[2].x, X[1].y, X[0].z, X[3].w); - T[3] = make_uint4 (X[3].x, X[2].y, X[1].z, X[0].w); - #elif defined IS_METAL - T[0] = uint4 (X[0].x, X[3].y, X[2].z, X[1].w); - T[1] = uint4 (X[1].x, X[0].y, X[3].z, X[2].w); - T[2] = uint4 (X[2].x, X[1].y, X[0].z, X[3].w); - T[3] = uint4 (X[3].x, X[2].y, X[1].z, X[0].w); - #else - T[0] = (uint4) (X[0].x, X[3].y, X[2].z, X[1].w); - T[1] = (uint4) (X[1].x, X[0].y, X[3].z, X[2].w); - T[2] = (uint4) (X[2].x, X[1].y, X[0].z, X[3].w); - T[3] = (uint4) (X[3].x, X[2].y, X[1].z, X[0].w); - #endif - - T[0] = hc_swap32_4 (T[0]); - T[1] = hc_swap32_4 (T[1]); - T[2] = hc_swap32_4 (T[2]); - T[3] = hc_swap32_4 (T[3]); - - w0[0] = T[0].x; - w0[1] = T[0].y; - w0[2] = T[0].z; - w0[3] = T[0].w; - w1[0] = T[1].x; - w1[1] = T[1].y; - w1[2] = T[1].z; - w1[3] = T[1].w; - w2[0] = T[2].x; - w2[1] = T[2].y; - w2[2] = T[2].z; - w2[3] = T[2].w; - w3[0] = T[3].x; - w3[1] = T[3].y; - w3[2] = T[3].z; - w3[3] = T[3].w; - - sha256_hmac_update_64 (&ctx, w0, w1, w2, w3, 64); - } - } - - w0[0] = 1; - w0[1] = 0; - w0[2] = 0; - w0[3] = 0; - w1[0] = 0; - w1[1] = 0; - w1[2] = 0; - w1[3] = 0; - w2[0] = 0; - w2[1] = 0; - w2[2] = 0; - w2[3] = 0; - w3[0] = 0; - w3[1] = 0; - w3[2] = 0; - w3[3] = 0; - - sha256_hmac_update_64 (&ctx, w0, w1, w2, w3, 4); - - sha256_hmac_final (&ctx); + scrypt_pbkdf2_pgp (w, w_len, tmps[gid].in, SCRYPT_SZ, out, 32); // AES256-CBC decrypt with IV from salt buffer (dynamic, alternative 1): u32 key[8]; - key[0] = ctx.opad.h[0]; - key[1] = ctx.opad.h[1]; - key[2] = ctx.opad.h[2]; - key[3] = ctx.opad.h[3]; - key[4] = ctx.opad.h[4]; - key[5] = ctx.opad.h[5]; - key[6] = ctx.opad.h[6]; - key[7] = ctx.opad.h[7]; + key[0] = out[0]; + key[1] = out[1]; + key[2] = out[2]; + key[3] = out[3]; + key[4] = out[4]; + key[5] = out[5]; + key[6] = out[6]; + key[7] = out[7]; #define KEYLEN 60 u32 ks[KEYLEN]; - AES256_set_decrypt_key (ks, key, s_te0, s_te1, s_te2, s_te3, s_td0, s_td1, s_td2, s_td3); + aes256_set_decrypt_key (ks, key, s_te0, s_te1, s_te2, s_te3, s_td0, s_td1, s_td2, s_td3); u32 iv[4]; diff --git a/OpenCL/m22911_a0-pure.cl b/OpenCL/m22911_a0-pure.cl index 6445b4f02..c79750b3c 100644 --- a/OpenCL/m22911_a0-pure.cl +++ b/OpenCL/m22911_a0-pure.cl @@ -26,7 +26,7 @@ typedef struct pem } pem_t; -KERNEL_FQ void m22911_mxx (KERN_ATTR_RULES_ESALT (pem_t)) +KERNEL_FQ KERNEL_FA void m22911_mxx (KERN_ATTR_RULES_ESALT (pem_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -223,6 +223,10 @@ KERNEL_FQ void m22911_mxx (KERN_ATTR_RULES_ESALT (pem_t)) if (asn1_ok == 0) continue; + const int asn1_tag_ok = asn1_check_int_tag (dec, real_len); + + if (asn1_tag_ok == 0) continue; + const u32 r0 = search[0]; const u32 r1 = search[1]; const u32 r2 = search[2]; @@ -232,7 +236,7 @@ KERNEL_FQ void m22911_mxx (KERN_ATTR_RULES_ESALT (pem_t)) } } -KERNEL_FQ void m22911_sxx (KERN_ATTR_RULES_ESALT (pem_t)) +KERNEL_FQ KERNEL_FA void m22911_sxx (KERN_ATTR_RULES_ESALT (pem_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -429,6 +433,10 @@ KERNEL_FQ void m22911_sxx (KERN_ATTR_RULES_ESALT (pem_t)) if (asn1_ok == 0) continue; + const int asn1_tag_ok = asn1_check_int_tag (dec, real_len); + + if (asn1_tag_ok == 0) continue; + const u32 r0 = search[0]; const u32 r1 = search[1]; const u32 r2 = search[2]; diff --git a/OpenCL/m22911_a1-pure.cl b/OpenCL/m22911_a1-pure.cl index eef5380ae..7d52a8ab5 100644 --- a/OpenCL/m22911_a1-pure.cl +++ b/OpenCL/m22911_a1-pure.cl @@ -24,7 +24,7 @@ typedef struct pem } pem_t; -KERNEL_FQ void m22911_mxx (KERN_ATTR_ESALT (pem_t)) +KERNEL_FQ KERNEL_FA void m22911_mxx (KERN_ATTR_ESALT (pem_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -219,6 +219,10 @@ KERNEL_FQ void m22911_mxx (KERN_ATTR_ESALT (pem_t)) if (asn1_ok == 0) continue; + const int asn1_tag_ok = asn1_check_int_tag (dec, real_len); + + if (asn1_tag_ok == 0) continue; + const u32 r0 = search[0]; const u32 r1 = search[1]; const u32 r2 = search[2]; @@ -228,7 +232,7 @@ KERNEL_FQ void m22911_mxx (KERN_ATTR_ESALT (pem_t)) } } -KERNEL_FQ void m22911_sxx (KERN_ATTR_ESALT (pem_t)) +KERNEL_FQ KERNEL_FA void m22911_sxx (KERN_ATTR_ESALT (pem_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -423,6 +427,10 @@ KERNEL_FQ void m22911_sxx (KERN_ATTR_ESALT (pem_t)) if (asn1_ok == 0) continue; + const int asn1_tag_ok = asn1_check_int_tag (dec, real_len); + + if (asn1_tag_ok == 0) continue; + const u32 r0 = search[0]; const u32 r1 = search[1]; const u32 r2 = search[2]; diff --git a/OpenCL/m22911_a3-pure.cl b/OpenCL/m22911_a3-pure.cl index 2583ee6b7..485964606 100644 --- a/OpenCL/m22911_a3-pure.cl +++ b/OpenCL/m22911_a3-pure.cl @@ -24,7 +24,7 @@ typedef struct pem } pem_t; -KERNEL_FQ void m22911_mxx (KERN_ATTR_VECTOR_ESALT (pem_t)) +KERNEL_FQ KERNEL_FA void m22911_mxx (KERN_ATTR_VECTOR_ESALT (pem_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -115,7 +115,7 @@ KERNEL_FQ void m22911_mxx (KERN_ATTR_VECTOR_ESALT (pem_t)) const u32 pw_len = pws[gid].pw_len; - u32x w[64] = { 0 }; + u32x w[32] = { 0 }; for (u32 i = 0, idx = 0; i < pw_len; i += 4, idx += 1) { @@ -236,6 +236,10 @@ KERNEL_FQ void m22911_mxx (KERN_ATTR_VECTOR_ESALT (pem_t)) if (asn1_ok == 0) continue; + const int asn1_tag_ok = asn1_check_int_tag (dec, real_len); + + if (asn1_tag_ok == 0) continue; + const u32 r0 = search[0]; const u32 r1 = search[1]; const u32 r2 = search[2]; @@ -245,7 +249,7 @@ KERNEL_FQ void m22911_mxx (KERN_ATTR_VECTOR_ESALT (pem_t)) } } -KERNEL_FQ void m22911_sxx (KERN_ATTR_VECTOR_ESALT (pem_t)) +KERNEL_FQ KERNEL_FA void m22911_sxx (KERN_ATTR_VECTOR_ESALT (pem_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -336,7 +340,7 @@ KERNEL_FQ void m22911_sxx (KERN_ATTR_VECTOR_ESALT (pem_t)) const u32 pw_len = pws[gid].pw_len; - u32x w[64] = { 0 }; + u32x w[32] = { 0 }; for (u32 i = 0, idx = 0; i < pw_len; i += 4, idx += 1) { @@ -457,6 +461,10 @@ KERNEL_FQ void m22911_sxx (KERN_ATTR_VECTOR_ESALT (pem_t)) if (asn1_ok == 0) continue; + const int asn1_tag_ok = asn1_check_int_tag (dec, real_len); + + if (asn1_tag_ok == 0) continue; + const u32 r0 = search[0]; const u32 r1 = search[1]; const u32 r2 = search[2]; diff --git a/OpenCL/m22921_a0-pure.cl b/OpenCL/m22921_a0-pure.cl index 4a0834c1a..7be554f4a 100644 --- a/OpenCL/m22921_a0-pure.cl +++ b/OpenCL/m22921_a0-pure.cl @@ -26,7 +26,7 @@ typedef struct pem } pem_t; -KERNEL_FQ void m22921_mxx (KERN_ATTR_RULES_ESALT (pem_t)) +KERNEL_FQ KERNEL_FA void m22921_mxx (KERN_ATTR_RULES_ESALT (pem_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -190,6 +190,10 @@ KERNEL_FQ void m22921_mxx (KERN_ATTR_RULES_ESALT (pem_t)) if (asn1_ok == 0) continue; + const int asn1_tag_ok = asn1_check_int_tag (dec, real_len); + + if (asn1_tag_ok == 0) continue; + const u32 r0 = search[0]; const u32 r1 = search[1]; const u32 r2 = search[2]; @@ -199,7 +203,7 @@ KERNEL_FQ void m22921_mxx (KERN_ATTR_RULES_ESALT (pem_t)) } } -KERNEL_FQ void m22921_sxx (KERN_ATTR_RULES_ESALT (pem_t)) +KERNEL_FQ KERNEL_FA void m22921_sxx (KERN_ATTR_RULES_ESALT (pem_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -363,6 +367,10 @@ KERNEL_FQ void m22921_sxx (KERN_ATTR_RULES_ESALT (pem_t)) if (asn1_ok == 0) continue; + const int asn1_tag_ok = asn1_check_int_tag (dec, real_len); + + if (asn1_tag_ok == 0) continue; + const u32 r0 = search[0]; const u32 r1 = search[1]; const u32 r2 = search[2]; diff --git a/OpenCL/m22921_a1-pure.cl b/OpenCL/m22921_a1-pure.cl index be4dadc6c..ccdb2d09e 100644 --- a/OpenCL/m22921_a1-pure.cl +++ b/OpenCL/m22921_a1-pure.cl @@ -24,7 +24,7 @@ typedef struct pem } pem_t; -KERNEL_FQ void m22921_mxx (KERN_ATTR_ESALT (pem_t)) +KERNEL_FQ KERNEL_FA void m22921_mxx (KERN_ATTR_ESALT (pem_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -184,6 +184,10 @@ KERNEL_FQ void m22921_mxx (KERN_ATTR_ESALT (pem_t)) if (asn1_ok == 0) continue; + const int asn1_tag_ok = asn1_check_int_tag (dec, real_len); + + if (asn1_tag_ok == 0) continue; + const u32 r0 = search[0]; const u32 r1 = search[1]; const u32 r2 = search[2]; @@ -193,7 +197,7 @@ KERNEL_FQ void m22921_mxx (KERN_ATTR_ESALT (pem_t)) } } -KERNEL_FQ void m22921_sxx (KERN_ATTR_ESALT (pem_t)) +KERNEL_FQ KERNEL_FA void m22921_sxx (KERN_ATTR_ESALT (pem_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -353,6 +357,10 @@ KERNEL_FQ void m22921_sxx (KERN_ATTR_ESALT (pem_t)) if (asn1_ok == 0) continue; + const int asn1_tag_ok = asn1_check_int_tag (dec, real_len); + + if (asn1_tag_ok == 0) continue; + const u32 r0 = search[0]; const u32 r1 = search[1]; const u32 r2 = search[2]; diff --git a/OpenCL/m22921_a3-pure.cl b/OpenCL/m22921_a3-pure.cl index b691b64a9..8bc06cdcb 100644 --- a/OpenCL/m22921_a3-pure.cl +++ b/OpenCL/m22921_a3-pure.cl @@ -24,7 +24,7 @@ typedef struct pem } pem_t; -KERNEL_FQ void m22921_mxx (KERN_ATTR_VECTOR_ESALT (pem_t)) +KERNEL_FQ KERNEL_FA void m22921_mxx (KERN_ATTR_VECTOR_ESALT (pem_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -115,7 +115,7 @@ KERNEL_FQ void m22921_mxx (KERN_ATTR_VECTOR_ESALT (pem_t)) const u32 pw_len = pws[gid].pw_len; - u32x w[64] = { 0 }; + u32x w[32] = { 0 }; for (u32 i = 0, idx = 0; i < pw_len; i += 4, idx += 1) { @@ -203,6 +203,10 @@ KERNEL_FQ void m22921_mxx (KERN_ATTR_VECTOR_ESALT (pem_t)) if (asn1_ok == 0) continue; + const int asn1_tag_ok = asn1_check_int_tag (dec, real_len); + + if (asn1_tag_ok == 0) continue; + const u32 r0 = search[0]; const u32 r1 = search[1]; const u32 r2 = search[2]; @@ -213,7 +217,7 @@ KERNEL_FQ void m22921_mxx (KERN_ATTR_VECTOR_ESALT (pem_t)) } -KERNEL_FQ void m22921_sxx (KERN_ATTR_VECTOR_ESALT (pem_t)) +KERNEL_FQ KERNEL_FA void m22921_sxx (KERN_ATTR_VECTOR_ESALT (pem_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -304,7 +308,7 @@ KERNEL_FQ void m22921_sxx (KERN_ATTR_VECTOR_ESALT (pem_t)) const u32 pw_len = pws[gid].pw_len; - u32x w[64] = { 0 }; + u32x w[32] = { 0 }; for (u32 i = 0, idx = 0; i < pw_len; i += 4, idx += 1) { @@ -392,6 +396,10 @@ KERNEL_FQ void m22921_sxx (KERN_ATTR_VECTOR_ESALT (pem_t)) if (asn1_ok == 0) continue; + const int asn1_tag_ok = asn1_check_int_tag (dec, real_len); + + if (asn1_tag_ok == 0) continue; + const u32 r0 = search[0]; const u32 r1 = search[1]; const u32 r2 = search[2]; diff --git a/OpenCL/m22931_a0-pure.cl b/OpenCL/m22931_a0-pure.cl index 9bf8e31c5..25fcc6d13 100644 --- a/OpenCL/m22931_a0-pure.cl +++ b/OpenCL/m22931_a0-pure.cl @@ -26,7 +26,7 @@ typedef struct pem } pem_t; -KERNEL_FQ void m22931_mxx (KERN_ATTR_RULES_ESALT (pem_t)) +KERNEL_FQ KERNEL_FA void m22931_mxx (KERN_ATTR_RULES_ESALT (pem_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -224,6 +224,10 @@ KERNEL_FQ void m22931_mxx (KERN_ATTR_RULES_ESALT (pem_t)) if (asn1_ok == 0) continue; + const int asn1_tag_ok = asn1_check_int_tag (dec, real_len); + + if (asn1_tag_ok == 0) continue; + const u32 r0 = search[0]; const u32 r1 = search[1]; const u32 r2 = search[2]; @@ -233,7 +237,7 @@ KERNEL_FQ void m22931_mxx (KERN_ATTR_RULES_ESALT (pem_t)) } } -KERNEL_FQ void m22931_sxx (KERN_ATTR_RULES_ESALT (pem_t)) +KERNEL_FQ KERNEL_FA void m22931_sxx (KERN_ATTR_RULES_ESALT (pem_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -431,6 +435,10 @@ KERNEL_FQ void m22931_sxx (KERN_ATTR_RULES_ESALT (pem_t)) if (asn1_ok == 0) continue; + const int asn1_tag_ok = asn1_check_int_tag (dec, real_len); + + if (asn1_tag_ok == 0) continue; + const u32 r0 = search[0]; const u32 r1 = search[1]; const u32 r2 = search[2]; diff --git a/OpenCL/m22931_a1-pure.cl b/OpenCL/m22931_a1-pure.cl index 045076665..549dc49e6 100644 --- a/OpenCL/m22931_a1-pure.cl +++ b/OpenCL/m22931_a1-pure.cl @@ -24,7 +24,7 @@ typedef struct pem } pem_t; -KERNEL_FQ void m22931_mxx (KERN_ATTR_ESALT (pem_t)) +KERNEL_FQ KERNEL_FA void m22931_mxx (KERN_ATTR_ESALT (pem_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -218,6 +218,10 @@ KERNEL_FQ void m22931_mxx (KERN_ATTR_ESALT (pem_t)) if (asn1_ok == 0) continue; + const int asn1_tag_ok = asn1_check_int_tag (dec, real_len); + + if (asn1_tag_ok == 0) continue; + const u32 r0 = search[0]; const u32 r1 = search[1]; const u32 r2 = search[2]; @@ -227,7 +231,7 @@ KERNEL_FQ void m22931_mxx (KERN_ATTR_ESALT (pem_t)) } } -KERNEL_FQ void m22931_sxx (KERN_ATTR_ESALT (pem_t)) +KERNEL_FQ KERNEL_FA void m22931_sxx (KERN_ATTR_ESALT (pem_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -421,6 +425,10 @@ KERNEL_FQ void m22931_sxx (KERN_ATTR_ESALT (pem_t)) if (asn1_ok == 0) continue; + const int asn1_tag_ok = asn1_check_int_tag (dec, real_len); + + if (asn1_tag_ok == 0) continue; + const u32 r0 = search[0]; const u32 r1 = search[1]; const u32 r2 = search[2]; diff --git a/OpenCL/m22931_a3-pure.cl b/OpenCL/m22931_a3-pure.cl index b32e9c726..21ccd1ee3 100644 --- a/OpenCL/m22931_a3-pure.cl +++ b/OpenCL/m22931_a3-pure.cl @@ -24,7 +24,7 @@ typedef struct pem } pem_t; -KERNEL_FQ void m22931_mxx (KERN_ATTR_VECTOR_ESALT (pem_t)) +KERNEL_FQ KERNEL_FA void m22931_mxx (KERN_ATTR_VECTOR_ESALT (pem_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -139,7 +139,7 @@ KERNEL_FQ void m22931_mxx (KERN_ATTR_VECTOR_ESALT (pem_t)) const u32 pw_len = pws[gid].pw_len; - u32x w[64] = { 0 }; + u32x w[32] = { 0 }; for (u32 i = 0, idx = 0; i < pw_len; i += 4, idx += 1) { @@ -237,6 +237,10 @@ KERNEL_FQ void m22931_mxx (KERN_ATTR_VECTOR_ESALT (pem_t)) if (asn1_ok == 0) continue; + const int asn1_tag_ok = asn1_check_int_tag (dec, real_len); + + if (asn1_tag_ok == 0) continue; + const u32 r0 = search[0]; const u32 r1 = search[1]; const u32 r2 = search[2]; @@ -246,7 +250,7 @@ KERNEL_FQ void m22931_mxx (KERN_ATTR_VECTOR_ESALT (pem_t)) } } -KERNEL_FQ void m22931_sxx (KERN_ATTR_VECTOR_ESALT (pem_t)) +KERNEL_FQ KERNEL_FA void m22931_sxx (KERN_ATTR_VECTOR_ESALT (pem_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -361,7 +365,7 @@ KERNEL_FQ void m22931_sxx (KERN_ATTR_VECTOR_ESALT (pem_t)) const u32 pw_len = pws[gid].pw_len; - u32x w[64] = { 0 }; + u32x w[32] = { 0 }; for (u32 i = 0, idx = 0; i < pw_len; i += 4, idx += 1) { @@ -459,6 +463,10 @@ KERNEL_FQ void m22931_sxx (KERN_ATTR_VECTOR_ESALT (pem_t)) if (asn1_ok == 0) continue; + const int asn1_tag_ok = asn1_check_int_tag (dec, real_len); + + if (asn1_tag_ok == 0) continue; + const u32 r0 = search[0]; const u32 r1 = search[1]; const u32 r2 = search[2]; diff --git a/OpenCL/m22941_a0-pure.cl b/OpenCL/m22941_a0-pure.cl index 87974152a..791727f95 100644 --- a/OpenCL/m22941_a0-pure.cl +++ b/OpenCL/m22941_a0-pure.cl @@ -26,7 +26,7 @@ typedef struct pem } pem_t; -KERNEL_FQ void m22941_mxx (KERN_ATTR_RULES_ESALT (pem_t)) +KERNEL_FQ KERNEL_FA void m22941_mxx (KERN_ATTR_RULES_ESALT (pem_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -244,6 +244,10 @@ KERNEL_FQ void m22941_mxx (KERN_ATTR_RULES_ESALT (pem_t)) if (asn1_ok == 0) continue; + const int asn1_tag_ok = asn1_check_int_tag (dec, real_len); + + if (asn1_tag_ok == 0) continue; + const u32 r0 = search[0]; const u32 r1 = search[1]; const u32 r2 = search[2]; @@ -253,7 +257,7 @@ KERNEL_FQ void m22941_mxx (KERN_ATTR_RULES_ESALT (pem_t)) } } -KERNEL_FQ void m22941_sxx (KERN_ATTR_RULES_ESALT (pem_t)) +KERNEL_FQ KERNEL_FA void m22941_sxx (KERN_ATTR_RULES_ESALT (pem_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -471,6 +475,10 @@ KERNEL_FQ void m22941_sxx (KERN_ATTR_RULES_ESALT (pem_t)) if (asn1_ok == 0) continue; + const int asn1_tag_ok = asn1_check_int_tag (dec, real_len); + + if (asn1_tag_ok == 0) continue; + const u32 r0 = search[0]; const u32 r1 = search[1]; const u32 r2 = search[2]; diff --git a/OpenCL/m22941_a1-pure.cl b/OpenCL/m22941_a1-pure.cl index f298c16cf..4826f2a3d 100644 --- a/OpenCL/m22941_a1-pure.cl +++ b/OpenCL/m22941_a1-pure.cl @@ -24,7 +24,7 @@ typedef struct pem } pem_t; -KERNEL_FQ void m22941_mxx (KERN_ATTR_ESALT (pem_t)) +KERNEL_FQ KERNEL_FA void m22941_mxx (KERN_ATTR_ESALT (pem_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -240,6 +240,10 @@ KERNEL_FQ void m22941_mxx (KERN_ATTR_ESALT (pem_t)) if (asn1_ok == 0) continue; + const int asn1_tag_ok = asn1_check_int_tag (dec, real_len); + + if (asn1_tag_ok == 0) continue; + const u32 r0 = search[0]; const u32 r1 = search[1]; const u32 r2 = search[2]; @@ -249,7 +253,7 @@ KERNEL_FQ void m22941_mxx (KERN_ATTR_ESALT (pem_t)) } } -KERNEL_FQ void m22941_sxx (KERN_ATTR_ESALT (pem_t)) +KERNEL_FQ KERNEL_FA void m22941_sxx (KERN_ATTR_ESALT (pem_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -465,6 +469,10 @@ KERNEL_FQ void m22941_sxx (KERN_ATTR_ESALT (pem_t)) if (asn1_ok == 0) continue; + const int asn1_tag_ok = asn1_check_int_tag (dec, real_len); + + if (asn1_tag_ok == 0) continue; + const u32 r0 = search[0]; const u32 r1 = search[1]; const u32 r2 = search[2]; diff --git a/OpenCL/m22941_a3-pure.cl b/OpenCL/m22941_a3-pure.cl index 20f153181..799552d97 100644 --- a/OpenCL/m22941_a3-pure.cl +++ b/OpenCL/m22941_a3-pure.cl @@ -24,7 +24,7 @@ typedef struct pem } pem_t; -KERNEL_FQ void m22941_mxx (KERN_ATTR_VECTOR_ESALT (pem_t)) +KERNEL_FQ KERNEL_FA void m22941_mxx (KERN_ATTR_VECTOR_ESALT (pem_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -139,7 +139,7 @@ KERNEL_FQ void m22941_mxx (KERN_ATTR_VECTOR_ESALT (pem_t)) const u32 pw_len = pws[gid].pw_len; - u32x w[64] = { 0 }; + u32x w[32] = { 0 }; for (u32 i = 0, idx = 0; i < pw_len; i += 4, idx += 1) { @@ -257,6 +257,10 @@ KERNEL_FQ void m22941_mxx (KERN_ATTR_VECTOR_ESALT (pem_t)) if (asn1_ok == 0) continue; + const int asn1_tag_ok = asn1_check_int_tag (dec, real_len); + + if (asn1_tag_ok == 0) continue; + const u32 r0 = search[0]; const u32 r1 = search[1]; const u32 r2 = search[2]; @@ -266,7 +270,7 @@ KERNEL_FQ void m22941_mxx (KERN_ATTR_VECTOR_ESALT (pem_t)) } } -KERNEL_FQ void m22941_sxx (KERN_ATTR_VECTOR_ESALT (pem_t)) +KERNEL_FQ KERNEL_FA void m22941_sxx (KERN_ATTR_VECTOR_ESALT (pem_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -381,7 +385,7 @@ KERNEL_FQ void m22941_sxx (KERN_ATTR_VECTOR_ESALT (pem_t)) const u32 pw_len = pws[gid].pw_len; - u32x w[64] = { 0 }; + u32x w[32] = { 0 }; for (u32 i = 0, idx = 0; i < pw_len; i += 4, idx += 1) { @@ -499,6 +503,10 @@ KERNEL_FQ void m22941_sxx (KERN_ATTR_VECTOR_ESALT (pem_t)) if (asn1_ok == 0) continue; + const int asn1_tag_ok = asn1_check_int_tag (dec, real_len); + + if (asn1_tag_ok == 0) continue; + const u32 r0 = search[0]; const u32 r1 = search[1]; const u32 r2 = search[2]; diff --git a/OpenCL/m22951_a0-pure.cl b/OpenCL/m22951_a0-pure.cl index 2ffcfbf69..4b9821177 100644 --- a/OpenCL/m22951_a0-pure.cl +++ b/OpenCL/m22951_a0-pure.cl @@ -26,7 +26,7 @@ typedef struct pem } pem_t; -KERNEL_FQ void m22951_mxx (KERN_ATTR_RULES_ESALT (pem_t)) +KERNEL_FQ KERNEL_FA void m22951_mxx (KERN_ATTR_RULES_ESALT (pem_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -248,6 +248,10 @@ KERNEL_FQ void m22951_mxx (KERN_ATTR_RULES_ESALT (pem_t)) if (asn1_ok == 0) continue; + const int asn1_tag_ok = asn1_check_int_tag (dec, real_len); + + if (asn1_tag_ok == 0) continue; + const u32 r0 = search[0]; const u32 r1 = search[1]; const u32 r2 = search[2]; @@ -257,7 +261,7 @@ KERNEL_FQ void m22951_mxx (KERN_ATTR_RULES_ESALT (pem_t)) } } -KERNEL_FQ void m22951_sxx (KERN_ATTR_RULES_ESALT (pem_t)) +KERNEL_FQ KERNEL_FA void m22951_sxx (KERN_ATTR_RULES_ESALT (pem_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -479,6 +483,10 @@ KERNEL_FQ void m22951_sxx (KERN_ATTR_RULES_ESALT (pem_t)) if (asn1_ok == 0) continue; + const int asn1_tag_ok = asn1_check_int_tag (dec, real_len); + + if (asn1_tag_ok == 0) continue; + const u32 r0 = search[0]; const u32 r1 = search[1]; const u32 r2 = search[2]; diff --git a/OpenCL/m22951_a1-pure.cl b/OpenCL/m22951_a1-pure.cl index 6fd4b0c30..18f2b1fb5 100644 --- a/OpenCL/m22951_a1-pure.cl +++ b/OpenCL/m22951_a1-pure.cl @@ -24,7 +24,7 @@ typedef struct pem } pem_t; -KERNEL_FQ void m22951_mxx (KERN_ATTR_ESALT (pem_t)) +KERNEL_FQ KERNEL_FA void m22951_mxx (KERN_ATTR_ESALT (pem_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -244,6 +244,10 @@ KERNEL_FQ void m22951_mxx (KERN_ATTR_ESALT (pem_t)) if (asn1_ok == 0) continue; + const int asn1_tag_ok = asn1_check_int_tag (dec, real_len); + + if (asn1_tag_ok == 0) continue; + const u32 r0 = search[0]; const u32 r1 = search[1]; const u32 r2 = search[2]; @@ -253,7 +257,7 @@ KERNEL_FQ void m22951_mxx (KERN_ATTR_ESALT (pem_t)) } } -KERNEL_FQ void m22951_sxx (KERN_ATTR_ESALT (pem_t)) +KERNEL_FQ KERNEL_FA void m22951_sxx (KERN_ATTR_ESALT (pem_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -473,6 +477,10 @@ KERNEL_FQ void m22951_sxx (KERN_ATTR_ESALT (pem_t)) if (asn1_ok == 0) continue; + const int asn1_tag_ok = asn1_check_int_tag (dec, real_len); + + if (asn1_tag_ok == 0) continue; + const u32 r0 = search[0]; const u32 r1 = search[1]; const u32 r2 = search[2]; diff --git a/OpenCL/m22951_a3-pure.cl b/OpenCL/m22951_a3-pure.cl index 3d3acc233..01b06914f 100644 --- a/OpenCL/m22951_a3-pure.cl +++ b/OpenCL/m22951_a3-pure.cl @@ -24,7 +24,7 @@ typedef struct pem } pem_t; -KERNEL_FQ void m22951_mxx (KERN_ATTR_VECTOR_ESALT (pem_t)) +KERNEL_FQ KERNEL_FA void m22951_mxx (KERN_ATTR_VECTOR_ESALT (pem_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -139,7 +139,7 @@ KERNEL_FQ void m22951_mxx (KERN_ATTR_VECTOR_ESALT (pem_t)) const u32 pw_len = pws[gid].pw_len; - u32x w[64] = { 0 }; + u32x w[32] = { 0 }; for (u32 i = 0, idx = 0; i < pw_len; i += 4, idx += 1) { @@ -261,6 +261,10 @@ KERNEL_FQ void m22951_mxx (KERN_ATTR_VECTOR_ESALT (pem_t)) if (asn1_ok == 0) continue; + const int asn1_tag_ok = asn1_check_int_tag (dec, real_len); + + if (asn1_tag_ok == 0) continue; + const u32 r0 = search[0]; const u32 r1 = search[1]; const u32 r2 = search[2]; @@ -270,7 +274,7 @@ KERNEL_FQ void m22951_mxx (KERN_ATTR_VECTOR_ESALT (pem_t)) } } -KERNEL_FQ void m22951_sxx (KERN_ATTR_VECTOR_ESALT (pem_t)) +KERNEL_FQ KERNEL_FA void m22951_sxx (KERN_ATTR_VECTOR_ESALT (pem_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -385,7 +389,7 @@ KERNEL_FQ void m22951_sxx (KERN_ATTR_VECTOR_ESALT (pem_t)) const u32 pw_len = pws[gid].pw_len; - u32x w[64] = { 0 }; + u32x w[32] = { 0 }; for (u32 i = 0, idx = 0; i < pw_len; i += 4, idx += 1) { @@ -507,6 +511,10 @@ KERNEL_FQ void m22951_sxx (KERN_ATTR_VECTOR_ESALT (pem_t)) if (asn1_ok == 0) continue; + const int asn1_tag_ok = asn1_check_int_tag (dec, real_len); + + if (asn1_tag_ok == 0) continue; + const u32 r0 = search[0]; const u32 r1 = search[1]; const u32 r2 = search[2]; diff --git a/OpenCL/m23001_a0-optimized.cl b/OpenCL/m23001_a0-optimized.cl index b9e4555b0..33a896ec8 100644 --- a/OpenCL/m23001_a0-optimized.cl +++ b/OpenCL/m23001_a0-optimized.cl @@ -26,7 +26,7 @@ typedef struct securezip } securezip_t; -KERNEL_FQ void m23001_m04 (KERN_ATTR_RULES_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23001_m04 (KERN_ATTR_RULES_ESALT (securezip_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -352,15 +352,15 @@ KERNEL_FQ void m23001_m04 (KERN_ATTR_RULES_ESALT (securezip_t)) } } -KERNEL_FQ void m23001_m08 (KERN_ATTR_RULES_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23001_m08 (KERN_ATTR_RULES_ESALT (securezip_t)) { } -KERNEL_FQ void m23001_m16 (KERN_ATTR_RULES_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23001_m16 (KERN_ATTR_RULES_ESALT (securezip_t)) { } -KERNEL_FQ void m23001_s04 (KERN_ATTR_RULES_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23001_s04 (KERN_ATTR_RULES_ESALT (securezip_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -686,10 +686,10 @@ KERNEL_FQ void m23001_s04 (KERN_ATTR_RULES_ESALT (securezip_t)) } } -KERNEL_FQ void m23001_s08 (KERN_ATTR_RULES_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23001_s08 (KERN_ATTR_RULES_ESALT (securezip_t)) { } -KERNEL_FQ void m23001_s16 (KERN_ATTR_RULES_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23001_s16 (KERN_ATTR_RULES_ESALT (securezip_t)) { } diff --git a/OpenCL/m23001_a0-pure.cl b/OpenCL/m23001_a0-pure.cl index 332893e12..08b2b4994 100644 --- a/OpenCL/m23001_a0-pure.cl +++ b/OpenCL/m23001_a0-pure.cl @@ -26,7 +26,7 @@ typedef struct securezip } securezip_t; -KERNEL_FQ void m23001_mxx (KERN_ATTR_RULES_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23001_mxx (KERN_ATTR_RULES_ESALT (securezip_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -218,7 +218,7 @@ KERNEL_FQ void m23001_mxx (KERN_ATTR_RULES_ESALT (securezip_t)) } } -KERNEL_FQ void m23001_sxx (KERN_ATTR_RULES_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23001_sxx (KERN_ATTR_RULES_ESALT (securezip_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m23001_a1-optimized.cl b/OpenCL/m23001_a1-optimized.cl index 8df639eb4..dc0663c0d 100644 --- a/OpenCL/m23001_a1-optimized.cl +++ b/OpenCL/m23001_a1-optimized.cl @@ -24,7 +24,7 @@ typedef struct securezip } securezip_t; -KERNEL_FQ void m23001_m04 (KERN_ATTR_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23001_m04 (KERN_ATTR_ESALT (securezip_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -408,15 +408,15 @@ KERNEL_FQ void m23001_m04 (KERN_ATTR_ESALT (securezip_t)) } } -KERNEL_FQ void m23001_m08 (KERN_ATTR_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23001_m08 (KERN_ATTR_ESALT (securezip_t)) { } -KERNEL_FQ void m23001_m16 (KERN_ATTR_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23001_m16 (KERN_ATTR_ESALT (securezip_t)) { } -KERNEL_FQ void m23001_s04 (KERN_ATTR_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23001_s04 (KERN_ATTR_ESALT (securezip_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -800,10 +800,10 @@ KERNEL_FQ void m23001_s04 (KERN_ATTR_ESALT (securezip_t)) } } -KERNEL_FQ void m23001_s08 (KERN_ATTR_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23001_s08 (KERN_ATTR_ESALT (securezip_t)) { } -KERNEL_FQ void m23001_s16 (KERN_ATTR_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23001_s16 (KERN_ATTR_ESALT (securezip_t)) { } diff --git a/OpenCL/m23001_a1-pure.cl b/OpenCL/m23001_a1-pure.cl index 5a5d009c5..99eeb98ae 100644 --- a/OpenCL/m23001_a1-pure.cl +++ b/OpenCL/m23001_a1-pure.cl @@ -24,7 +24,7 @@ typedef struct securezip } securezip_t; -KERNEL_FQ void m23001_mxx (KERN_ATTR_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23001_mxx (KERN_ATTR_ESALT (securezip_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -214,7 +214,7 @@ KERNEL_FQ void m23001_mxx (KERN_ATTR_ESALT (securezip_t)) } } -KERNEL_FQ void m23001_sxx (KERN_ATTR_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23001_sxx (KERN_ATTR_ESALT (securezip_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m23001_a3-optimized.cl b/OpenCL/m23001_a3-optimized.cl index b8fb0b748..e38d3bb0c 100644 --- a/OpenCL/m23001_a3-optimized.cl +++ b/OpenCL/m23001_a3-optimized.cl @@ -728,7 +728,7 @@ DECLSPEC void m23001s (SHM_TYPE u32a *s_te0, SHM_TYPE u32a *s_te1, SHM_TYPE u32a } } -KERNEL_FQ void m23001_m04 (KERN_ATTR_VECTOR_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23001_m04 (KERN_ATTR_VECTOR_ESALT (securezip_t)) { /** * base @@ -819,7 +819,7 @@ KERNEL_FQ void m23001_m04 (KERN_ATTR_VECTOR_ESALT (securezip_t)) m23001m (s_te0, s_te1, s_te2, s_te3, s_te4, s_td0, s_td1, s_td2, s_td3, s_td4, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m23001_m08 (KERN_ATTR_VECTOR_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23001_m08 (KERN_ATTR_VECTOR_ESALT (securezip_t)) { /** * base @@ -910,7 +910,7 @@ KERNEL_FQ void m23001_m08 (KERN_ATTR_VECTOR_ESALT (securezip_t)) m23001m (s_te0, s_te1, s_te2, s_te3, s_te4, s_td0, s_td1, s_td2, s_td3, s_td4, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m23001_m16 (KERN_ATTR_VECTOR_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23001_m16 (KERN_ATTR_VECTOR_ESALT (securezip_t)) { /** * base @@ -1001,7 +1001,7 @@ KERNEL_FQ void m23001_m16 (KERN_ATTR_VECTOR_ESALT (securezip_t)) m23001m (s_te0, s_te1, s_te2, s_te3, s_te4, s_td0, s_td1, s_td2, s_td3, s_td4, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m23001_s04 (KERN_ATTR_VECTOR_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23001_s04 (KERN_ATTR_VECTOR_ESALT (securezip_t)) { /** * base @@ -1092,7 +1092,7 @@ KERNEL_FQ void m23001_s04 (KERN_ATTR_VECTOR_ESALT (securezip_t)) m23001s (s_te0, s_te1, s_te2, s_te3, s_te4, s_td0, s_td1, s_td2, s_td3, s_td4, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m23001_s08 (KERN_ATTR_VECTOR_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23001_s08 (KERN_ATTR_VECTOR_ESALT (securezip_t)) { /** * base @@ -1183,7 +1183,7 @@ KERNEL_FQ void m23001_s08 (KERN_ATTR_VECTOR_ESALT (securezip_t)) m23001s (s_te0, s_te1, s_te2, s_te3, s_te4, s_td0, s_td1, s_td2, s_td3, s_td4, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m23001_s16 (KERN_ATTR_VECTOR_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23001_s16 (KERN_ATTR_VECTOR_ESALT (securezip_t)) { /** * base diff --git a/OpenCL/m23001_a3-pure.cl b/OpenCL/m23001_a3-pure.cl index 538106f76..2b0659135 100644 --- a/OpenCL/m23001_a3-pure.cl +++ b/OpenCL/m23001_a3-pure.cl @@ -24,7 +24,7 @@ typedef struct securezip } securezip_t; -KERNEL_FQ void m23001_mxx (KERN_ATTR_VECTOR_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23001_mxx (KERN_ATTR_VECTOR_ESALT (securezip_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -227,7 +227,7 @@ KERNEL_FQ void m23001_mxx (KERN_ATTR_VECTOR_ESALT (securezip_t)) } } -KERNEL_FQ void m23001_sxx (KERN_ATTR_VECTOR_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23001_sxx (KERN_ATTR_VECTOR_ESALT (securezip_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m23002_a0-optimized.cl b/OpenCL/m23002_a0-optimized.cl index 02deb7d1d..30e239339 100644 --- a/OpenCL/m23002_a0-optimized.cl +++ b/OpenCL/m23002_a0-optimized.cl @@ -26,7 +26,7 @@ typedef struct securezip } securezip_t; -KERNEL_FQ void m23002_m04 (KERN_ATTR_RULES_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23002_m04 (KERN_ATTR_RULES_ESALT (securezip_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -405,15 +405,15 @@ KERNEL_FQ void m23002_m04 (KERN_ATTR_RULES_ESALT (securezip_t)) } } -KERNEL_FQ void m23002_m08 (KERN_ATTR_RULES_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23002_m08 (KERN_ATTR_RULES_ESALT (securezip_t)) { } -KERNEL_FQ void m23002_m16 (KERN_ATTR_RULES_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23002_m16 (KERN_ATTR_RULES_ESALT (securezip_t)) { } -KERNEL_FQ void m23002_s04 (KERN_ATTR_RULES_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23002_s04 (KERN_ATTR_RULES_ESALT (securezip_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -792,10 +792,10 @@ KERNEL_FQ void m23002_s04 (KERN_ATTR_RULES_ESALT (securezip_t)) } } -KERNEL_FQ void m23002_s08 (KERN_ATTR_RULES_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23002_s08 (KERN_ATTR_RULES_ESALT (securezip_t)) { } -KERNEL_FQ void m23002_s16 (KERN_ATTR_RULES_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23002_s16 (KERN_ATTR_RULES_ESALT (securezip_t)) { } diff --git a/OpenCL/m23002_a0-pure.cl b/OpenCL/m23002_a0-pure.cl index 142053dd6..d49f1badc 100644 --- a/OpenCL/m23002_a0-pure.cl +++ b/OpenCL/m23002_a0-pure.cl @@ -26,7 +26,7 @@ typedef struct securezip } securezip_t; -KERNEL_FQ void m23002_mxx (KERN_ATTR_RULES_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23002_mxx (KERN_ATTR_RULES_ESALT (securezip_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -271,7 +271,7 @@ KERNEL_FQ void m23002_mxx (KERN_ATTR_RULES_ESALT (securezip_t)) } } -KERNEL_FQ void m23002_sxx (KERN_ATTR_RULES_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23002_sxx (KERN_ATTR_RULES_ESALT (securezip_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m23002_a1-optimized.cl b/OpenCL/m23002_a1-optimized.cl index 5ca39b3f9..4cad747f0 100644 --- a/OpenCL/m23002_a1-optimized.cl +++ b/OpenCL/m23002_a1-optimized.cl @@ -24,7 +24,7 @@ typedef struct securezip } securezip_t; -KERNEL_FQ void m23002_m04 (KERN_ATTR_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23002_m04 (KERN_ATTR_ESALT (securezip_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -461,15 +461,15 @@ KERNEL_FQ void m23002_m04 (KERN_ATTR_ESALT (securezip_t)) } } -KERNEL_FQ void m23002_m08 (KERN_ATTR_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23002_m08 (KERN_ATTR_ESALT (securezip_t)) { } -KERNEL_FQ void m23002_m16 (KERN_ATTR_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23002_m16 (KERN_ATTR_ESALT (securezip_t)) { } -KERNEL_FQ void m23002_s04 (KERN_ATTR_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23002_s04 (KERN_ATTR_ESALT (securezip_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -906,10 +906,10 @@ KERNEL_FQ void m23002_s04 (KERN_ATTR_ESALT (securezip_t)) } } -KERNEL_FQ void m23002_s08 (KERN_ATTR_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23002_s08 (KERN_ATTR_ESALT (securezip_t)) { } -KERNEL_FQ void m23002_s16 (KERN_ATTR_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23002_s16 (KERN_ATTR_ESALT (securezip_t)) { } diff --git a/OpenCL/m23002_a1-pure.cl b/OpenCL/m23002_a1-pure.cl index ca1931c14..acab135e1 100644 --- a/OpenCL/m23002_a1-pure.cl +++ b/OpenCL/m23002_a1-pure.cl @@ -24,7 +24,7 @@ typedef struct securezip } securezip_t; -KERNEL_FQ void m23002_mxx (KERN_ATTR_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23002_mxx (KERN_ATTR_ESALT (securezip_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -267,7 +267,7 @@ KERNEL_FQ void m23002_mxx (KERN_ATTR_ESALT (securezip_t)) } } -KERNEL_FQ void m23002_sxx (KERN_ATTR_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23002_sxx (KERN_ATTR_ESALT (securezip_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m23002_a3-optimized.cl b/OpenCL/m23002_a3-optimized.cl index c5dd6af46..ddf04dcc0 100644 --- a/OpenCL/m23002_a3-optimized.cl +++ b/OpenCL/m23002_a3-optimized.cl @@ -834,7 +834,7 @@ DECLSPEC void m23002s (SHM_TYPE u32a *s_te0, SHM_TYPE u32a *s_te1, SHM_TYPE u32a } } -KERNEL_FQ void m23002_m04 (KERN_ATTR_VECTOR_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23002_m04 (KERN_ATTR_VECTOR_ESALT (securezip_t)) { /** * base @@ -925,7 +925,7 @@ KERNEL_FQ void m23002_m04 (KERN_ATTR_VECTOR_ESALT (securezip_t)) m23002m (s_te0, s_te1, s_te2, s_te3, s_te4, s_td0, s_td1, s_td2, s_td3, s_td4, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m23002_m08 (KERN_ATTR_VECTOR_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23002_m08 (KERN_ATTR_VECTOR_ESALT (securezip_t)) { /** * base @@ -1016,7 +1016,7 @@ KERNEL_FQ void m23002_m08 (KERN_ATTR_VECTOR_ESALT (securezip_t)) m23002m (s_te0, s_te1, s_te2, s_te3, s_te4, s_td0, s_td1, s_td2, s_td3, s_td4, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m23002_m16 (KERN_ATTR_VECTOR_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23002_m16 (KERN_ATTR_VECTOR_ESALT (securezip_t)) { /** * base @@ -1107,7 +1107,7 @@ KERNEL_FQ void m23002_m16 (KERN_ATTR_VECTOR_ESALT (securezip_t)) m23002m (s_te0, s_te1, s_te2, s_te3, s_te4, s_td0, s_td1, s_td2, s_td3, s_td4, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m23002_s04 (KERN_ATTR_VECTOR_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23002_s04 (KERN_ATTR_VECTOR_ESALT (securezip_t)) { /** * base @@ -1198,7 +1198,7 @@ KERNEL_FQ void m23002_s04 (KERN_ATTR_VECTOR_ESALT (securezip_t)) m23002s (s_te0, s_te1, s_te2, s_te3, s_te4, s_td0, s_td1, s_td2, s_td3, s_td4, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m23002_s08 (KERN_ATTR_VECTOR_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23002_s08 (KERN_ATTR_VECTOR_ESALT (securezip_t)) { /** * base @@ -1289,7 +1289,7 @@ KERNEL_FQ void m23002_s08 (KERN_ATTR_VECTOR_ESALT (securezip_t)) m23002s (s_te0, s_te1, s_te2, s_te3, s_te4, s_td0, s_td1, s_td2, s_td3, s_td4, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m23002_s16 (KERN_ATTR_VECTOR_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23002_s16 (KERN_ATTR_VECTOR_ESALT (securezip_t)) { /** * base diff --git a/OpenCL/m23002_a3-pure.cl b/OpenCL/m23002_a3-pure.cl index 99e99fb2e..4c1399268 100644 --- a/OpenCL/m23002_a3-pure.cl +++ b/OpenCL/m23002_a3-pure.cl @@ -24,7 +24,7 @@ typedef struct securezip } securezip_t; -KERNEL_FQ void m23002_mxx (KERN_ATTR_VECTOR_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23002_mxx (KERN_ATTR_VECTOR_ESALT (securezip_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -280,7 +280,7 @@ KERNEL_FQ void m23002_mxx (KERN_ATTR_VECTOR_ESALT (securezip_t)) } } -KERNEL_FQ void m23002_sxx (KERN_ATTR_VECTOR_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23002_sxx (KERN_ATTR_VECTOR_ESALT (securezip_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m23003_a0-optimized.cl b/OpenCL/m23003_a0-optimized.cl index 6a3c918de..508372f1e 100644 --- a/OpenCL/m23003_a0-optimized.cl +++ b/OpenCL/m23003_a0-optimized.cl @@ -26,7 +26,7 @@ typedef struct securezip } securezip_t; -KERNEL_FQ void m23003_m04 (KERN_ATTR_RULES_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23003_m04 (KERN_ATTR_RULES_ESALT (securezip_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -407,15 +407,15 @@ KERNEL_FQ void m23003_m04 (KERN_ATTR_RULES_ESALT (securezip_t)) } } -KERNEL_FQ void m23003_m08 (KERN_ATTR_RULES_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23003_m08 (KERN_ATTR_RULES_ESALT (securezip_t)) { } -KERNEL_FQ void m23003_m16 (KERN_ATTR_RULES_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23003_m16 (KERN_ATTR_RULES_ESALT (securezip_t)) { } -KERNEL_FQ void m23003_s04 (KERN_ATTR_RULES_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23003_s04 (KERN_ATTR_RULES_ESALT (securezip_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -796,10 +796,10 @@ KERNEL_FQ void m23003_s04 (KERN_ATTR_RULES_ESALT (securezip_t)) } } -KERNEL_FQ void m23003_s08 (KERN_ATTR_RULES_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23003_s08 (KERN_ATTR_RULES_ESALT (securezip_t)) { } -KERNEL_FQ void m23003_s16 (KERN_ATTR_RULES_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23003_s16 (KERN_ATTR_RULES_ESALT (securezip_t)) { } diff --git a/OpenCL/m23003_a0-pure.cl b/OpenCL/m23003_a0-pure.cl index 123fbda71..ed121ce49 100644 --- a/OpenCL/m23003_a0-pure.cl +++ b/OpenCL/m23003_a0-pure.cl @@ -26,7 +26,7 @@ typedef struct securezip } securezip_t; -KERNEL_FQ void m23003_mxx (KERN_ATTR_RULES_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23003_mxx (KERN_ATTR_RULES_ESALT (securezip_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -273,7 +273,7 @@ KERNEL_FQ void m23003_mxx (KERN_ATTR_RULES_ESALT (securezip_t)) } } -KERNEL_FQ void m23003_sxx (KERN_ATTR_RULES_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23003_sxx (KERN_ATTR_RULES_ESALT (securezip_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m23003_a1-optimized.cl b/OpenCL/m23003_a1-optimized.cl index de9ad1db1..c5637a0cb 100644 --- a/OpenCL/m23003_a1-optimized.cl +++ b/OpenCL/m23003_a1-optimized.cl @@ -24,7 +24,7 @@ typedef struct securezip } securezip_t; -KERNEL_FQ void m23003_m04 (KERN_ATTR_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23003_m04 (KERN_ATTR_ESALT (securezip_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -463,15 +463,15 @@ KERNEL_FQ void m23003_m04 (KERN_ATTR_ESALT (securezip_t)) } } -KERNEL_FQ void m23003_m08 (KERN_ATTR_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23003_m08 (KERN_ATTR_ESALT (securezip_t)) { } -KERNEL_FQ void m23003_m16 (KERN_ATTR_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23003_m16 (KERN_ATTR_ESALT (securezip_t)) { } -KERNEL_FQ void m23003_s04 (KERN_ATTR_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23003_s04 (KERN_ATTR_ESALT (securezip_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -910,10 +910,10 @@ KERNEL_FQ void m23003_s04 (KERN_ATTR_ESALT (securezip_t)) } } -KERNEL_FQ void m23003_s08 (KERN_ATTR_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23003_s08 (KERN_ATTR_ESALT (securezip_t)) { } -KERNEL_FQ void m23003_s16 (KERN_ATTR_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23003_s16 (KERN_ATTR_ESALT (securezip_t)) { } diff --git a/OpenCL/m23003_a1-pure.cl b/OpenCL/m23003_a1-pure.cl index bc26fad52..cf2196505 100644 --- a/OpenCL/m23003_a1-pure.cl +++ b/OpenCL/m23003_a1-pure.cl @@ -24,7 +24,7 @@ typedef struct securezip } securezip_t; -KERNEL_FQ void m23003_mxx (KERN_ATTR_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23003_mxx (KERN_ATTR_ESALT (securezip_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -269,7 +269,7 @@ KERNEL_FQ void m23003_mxx (KERN_ATTR_ESALT (securezip_t)) } } -KERNEL_FQ void m23003_sxx (KERN_ATTR_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23003_sxx (KERN_ATTR_ESALT (securezip_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m23003_a3-optimized.cl b/OpenCL/m23003_a3-optimized.cl index 1d32074c3..b42f99255 100644 --- a/OpenCL/m23003_a3-optimized.cl +++ b/OpenCL/m23003_a3-optimized.cl @@ -838,7 +838,7 @@ DECLSPEC void m23003s (SHM_TYPE u32a *s_te0, SHM_TYPE u32a *s_te1, SHM_TYPE u32a } } -KERNEL_FQ void m23003_m04 (KERN_ATTR_VECTOR_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23003_m04 (KERN_ATTR_VECTOR_ESALT (securezip_t)) { /** * base @@ -929,7 +929,7 @@ KERNEL_FQ void m23003_m04 (KERN_ATTR_VECTOR_ESALT (securezip_t)) m23003m (s_te0, s_te1, s_te2, s_te3, s_te4, s_td0, s_td1, s_td2, s_td3, s_td4, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m23003_m08 (KERN_ATTR_VECTOR_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23003_m08 (KERN_ATTR_VECTOR_ESALT (securezip_t)) { /** * base @@ -1020,7 +1020,7 @@ KERNEL_FQ void m23003_m08 (KERN_ATTR_VECTOR_ESALT (securezip_t)) m23003m (s_te0, s_te1, s_te2, s_te3, s_te4, s_td0, s_td1, s_td2, s_td3, s_td4, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m23003_m16 (KERN_ATTR_VECTOR_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23003_m16 (KERN_ATTR_VECTOR_ESALT (securezip_t)) { /** * base @@ -1111,7 +1111,7 @@ KERNEL_FQ void m23003_m16 (KERN_ATTR_VECTOR_ESALT (securezip_t)) m23003m (s_te0, s_te1, s_te2, s_te3, s_te4, s_td0, s_td1, s_td2, s_td3, s_td4, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m23003_s04 (KERN_ATTR_VECTOR_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23003_s04 (KERN_ATTR_VECTOR_ESALT (securezip_t)) { /** * base @@ -1202,7 +1202,7 @@ KERNEL_FQ void m23003_s04 (KERN_ATTR_VECTOR_ESALT (securezip_t)) m23003s (s_te0, s_te1, s_te2, s_te3, s_te4, s_td0, s_td1, s_td2, s_td3, s_td4, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m23003_s08 (KERN_ATTR_VECTOR_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23003_s08 (KERN_ATTR_VECTOR_ESALT (securezip_t)) { /** * base @@ -1293,7 +1293,7 @@ KERNEL_FQ void m23003_s08 (KERN_ATTR_VECTOR_ESALT (securezip_t)) m23003s (s_te0, s_te1, s_te2, s_te3, s_te4, s_td0, s_td1, s_td2, s_td3, s_td4, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m23003_s16 (KERN_ATTR_VECTOR_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23003_s16 (KERN_ATTR_VECTOR_ESALT (securezip_t)) { /** * base diff --git a/OpenCL/m23003_a3-pure.cl b/OpenCL/m23003_a3-pure.cl index 4c9d79332..0ef8191af 100644 --- a/OpenCL/m23003_a3-pure.cl +++ b/OpenCL/m23003_a3-pure.cl @@ -24,7 +24,7 @@ typedef struct securezip } securezip_t; -KERNEL_FQ void m23003_mxx (KERN_ATTR_VECTOR_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23003_mxx (KERN_ATTR_VECTOR_ESALT (securezip_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -282,7 +282,7 @@ KERNEL_FQ void m23003_mxx (KERN_ATTR_VECTOR_ESALT (securezip_t)) } } -KERNEL_FQ void m23003_sxx (KERN_ATTR_VECTOR_ESALT (securezip_t)) +KERNEL_FQ KERNEL_FA void m23003_sxx (KERN_ATTR_VECTOR_ESALT (securezip_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m23100-pure.cl b/OpenCL/m23100-pure.cl index bdc03f0dc..72944c449 100644 --- a/OpenCL/m23100-pure.cl +++ b/OpenCL/m23100-pure.cl @@ -68,7 +68,7 @@ DECLSPEC void hmac_sha1_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE sha1_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m23100_init (KERN_ATTR_TMPS_ESALT (keychain_tmp_t, keychain_t)) +KERNEL_FQ KERNEL_FA void m23100_init (KERN_ATTR_TMPS_ESALT (keychain_tmp_t, keychain_t)) { /** * base @@ -140,7 +140,7 @@ KERNEL_FQ void m23100_init (KERN_ATTR_TMPS_ESALT (keychain_tmp_t, keychain_t)) } } -KERNEL_FQ void m23100_loop (KERN_ATTR_TMPS_ESALT (keychain_tmp_t, keychain_t)) +KERNEL_FQ KERNEL_FA void m23100_loop (KERN_ATTR_TMPS_ESALT (keychain_tmp_t, keychain_t)) { const u64 gid = get_global_id (0); @@ -225,7 +225,7 @@ KERNEL_FQ void m23100_loop (KERN_ATTR_TMPS_ESALT (keychain_tmp_t, keychain_t)) } } -KERNEL_FQ void m23100_comp (KERN_ATTR_TMPS_ESALT (keychain_tmp_t, keychain_t)) +KERNEL_FQ KERNEL_FA void m23100_comp (KERN_ATTR_TMPS_ESALT (keychain_tmp_t, keychain_t)) { /** * base diff --git a/OpenCL/m23200-pure.cl b/OpenCL/m23200-pure.cl index eebe40906..21c8c1e5a 100644 --- a/OpenCL/m23200-pure.cl +++ b/OpenCL/m23200-pure.cl @@ -63,7 +63,7 @@ DECLSPEC void hmac_sha1_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE sha1_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m23200_init (KERN_ATTR_TMPS (xmpp_tmp_t)) +KERNEL_FQ KERNEL_FA void m23200_init (KERN_ATTR_TMPS (xmpp_tmp_t)) { /** * base @@ -135,7 +135,7 @@ KERNEL_FQ void m23200_init (KERN_ATTR_TMPS (xmpp_tmp_t)) } } -KERNEL_FQ void m23200_loop (KERN_ATTR_TMPS (xmpp_tmp_t)) +KERNEL_FQ KERNEL_FA void m23200_loop (KERN_ATTR_TMPS (xmpp_tmp_t)) { const u64 gid = get_global_id (0); @@ -220,7 +220,7 @@ KERNEL_FQ void m23200_loop (KERN_ATTR_TMPS (xmpp_tmp_t)) } } -KERNEL_FQ void m23200_comp (KERN_ATTR_TMPS (xmpp_tmp_t)) +KERNEL_FQ KERNEL_FA void m23200_comp (KERN_ATTR_TMPS (xmpp_tmp_t)) { /** * base diff --git a/OpenCL/m23300-pure.cl b/OpenCL/m23300-pure.cl index 485340612..385fdd6d1 100644 --- a/OpenCL/m23300-pure.cl +++ b/OpenCL/m23300-pure.cl @@ -69,7 +69,7 @@ DECLSPEC void hmac_sha1_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE sha1_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m23300_init (KERN_ATTR_TMPS_ESALT (iwork_tmp_t, iwork_t)) +KERNEL_FQ KERNEL_FA void m23300_init (KERN_ATTR_TMPS_ESALT (iwork_tmp_t, iwork_t)) { /** * base @@ -158,7 +158,7 @@ KERNEL_FQ void m23300_init (KERN_ATTR_TMPS_ESALT (iwork_tmp_t, iwork_t)) } } -KERNEL_FQ void m23300_loop (KERN_ATTR_TMPS_ESALT (iwork_tmp_t, iwork_t)) +KERNEL_FQ KERNEL_FA void m23300_loop (KERN_ATTR_TMPS_ESALT (iwork_tmp_t, iwork_t)) { const u64 gid = get_global_id (0); @@ -243,7 +243,7 @@ KERNEL_FQ void m23300_loop (KERN_ATTR_TMPS_ESALT (iwork_tmp_t, iwork_t)) } } -KERNEL_FQ void m23300_comp (KERN_ATTR_TMPS_ESALT (iwork_tmp_t, iwork_t)) +KERNEL_FQ KERNEL_FA void m23300_comp (KERN_ATTR_TMPS_ESALT (iwork_tmp_t, iwork_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m23400-pure.cl b/OpenCL/m23400-pure.cl index 091dc8ca6..6a0ae1f11 100644 --- a/OpenCL/m23400-pure.cl +++ b/OpenCL/m23400-pure.cl @@ -69,7 +69,7 @@ DECLSPEC void hmac_sha256_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVA sha256_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m23400_init (KERN_ATTR_TMPS (bitwarden_tmp_t)) +KERNEL_FQ KERNEL_FA void m23400_init (KERN_ATTR_TMPS (bitwarden_tmp_t)) { /** * base @@ -150,7 +150,7 @@ KERNEL_FQ void m23400_init (KERN_ATTR_TMPS (bitwarden_tmp_t)) tmps[gid].out[7] = tmps[gid].dgst[7]; } -KERNEL_FQ void m23400_loop (KERN_ATTR_TMPS (bitwarden_tmp_t)) +KERNEL_FQ KERNEL_FA void m23400_loop (KERN_ATTR_TMPS (bitwarden_tmp_t)) { const u64 gid = get_global_id (0); @@ -253,7 +253,7 @@ KERNEL_FQ void m23400_loop (KERN_ATTR_TMPS (bitwarden_tmp_t)) unpackv (tmps, out, gid, 7, out[7]); } -KERNEL_FQ void m23400_init2 (KERN_ATTR_TMPS (bitwarden_tmp_t)) +KERNEL_FQ KERNEL_FA void m23400_init2 (KERN_ATTR_TMPS (bitwarden_tmp_t)) { /** * base @@ -345,7 +345,7 @@ KERNEL_FQ void m23400_init2 (KERN_ATTR_TMPS (bitwarden_tmp_t)) tmps[gid].out[7] = tmps[gid].dgst[7]; } -KERNEL_FQ void m23400_loop2 (KERN_ATTR_TMPS (bitwarden_tmp_t)) +KERNEL_FQ KERNEL_FA void m23400_loop2 (KERN_ATTR_TMPS (bitwarden_tmp_t)) { const u64 gid = get_global_id (0); @@ -448,7 +448,7 @@ KERNEL_FQ void m23400_loop2 (KERN_ATTR_TMPS (bitwarden_tmp_t)) unpackv (tmps, out, gid, 7, out[7]); } -KERNEL_FQ void m23400_comp (KERN_ATTR_TMPS (bitwarden_tmp_t)) +KERNEL_FQ KERNEL_FA void m23400_comp (KERN_ATTR_TMPS (bitwarden_tmp_t)) { /** * base diff --git a/OpenCL/m23500-pure.cl b/OpenCL/m23500-pure.cl index 23def62fe..e4c1a3d10 100644 --- a/OpenCL/m23500-pure.cl +++ b/OpenCL/m23500-pure.cl @@ -93,7 +93,7 @@ DECLSPEC void hmac_sha512_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVA sha512_transform_vector (w0, w1, w2, w3, w4, w5, w6, w7, digest); } -KERNEL_FQ void m23500_init (KERN_ATTR_TMPS_ESALT (axcrypt2_tmp_t, axcrypt2_t)) +KERNEL_FQ KERNEL_FA void m23500_init (KERN_ATTR_TMPS_ESALT (axcrypt2_tmp_t, axcrypt2_t)) { /** * base @@ -197,7 +197,7 @@ KERNEL_FQ void m23500_init (KERN_ATTR_TMPS_ESALT (axcrypt2_tmp_t, axcrypt2_t)) } } -KERNEL_FQ void m23500_loop (KERN_ATTR_TMPS_ESALT (axcrypt2_tmp_t, axcrypt2_t)) +KERNEL_FQ KERNEL_FA void m23500_loop (KERN_ATTR_TMPS_ESALT (axcrypt2_tmp_t, axcrypt2_t)) { const u64 gid = get_global_id (0); @@ -323,7 +323,7 @@ KERNEL_FQ void m23500_loop (KERN_ATTR_TMPS_ESALT (axcrypt2_tmp_t, axcrypt2_t)) } } -KERNEL_FQ void m23500_init2 (KERN_ATTR_TMPS_ESALT (axcrypt2_tmp_t, axcrypt2_t)) +KERNEL_FQ KERNEL_FA void m23500_init2 (KERN_ATTR_TMPS_ESALT (axcrypt2_tmp_t, axcrypt2_t)) { /** * base @@ -377,7 +377,7 @@ KERNEL_FQ void m23500_init2 (KERN_ATTR_TMPS_ESALT (axcrypt2_tmp_t, axcrypt2_t)) } } -KERNEL_FQ void m23500_loop2 (KERN_ATTR_TMPS_ESALT (axcrypt2_tmp_t, axcrypt2_t)) +KERNEL_FQ KERNEL_FA void m23500_loop2 (KERN_ATTR_TMPS_ESALT (axcrypt2_tmp_t, axcrypt2_t)) { /** * base @@ -498,7 +498,7 @@ KERNEL_FQ void m23500_loop2 (KERN_ATTR_TMPS_ESALT (axcrypt2_tmp_t, axcrypt2_t)) } } -KERNEL_FQ void m23500_comp (KERN_ATTR_TMPS_ESALT (axcrypt2_tmp_t, axcrypt2_t)) +KERNEL_FQ KERNEL_FA void m23500_comp (KERN_ATTR_TMPS_ESALT (axcrypt2_tmp_t, axcrypt2_t)) { /** * base diff --git a/OpenCL/m23600-pure.cl b/OpenCL/m23600-pure.cl index 41f31a873..a1258681b 100644 --- a/OpenCL/m23600-pure.cl +++ b/OpenCL/m23600-pure.cl @@ -93,7 +93,7 @@ DECLSPEC void hmac_sha512_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVA sha512_transform_vector (w0, w1, w2, w3, w4, w5, w6, w7, digest); } -KERNEL_FQ void m23600_init (KERN_ATTR_TMPS_ESALT (axcrypt2_tmp_t, axcrypt2_t)) +KERNEL_FQ KERNEL_FA void m23600_init (KERN_ATTR_TMPS_ESALT (axcrypt2_tmp_t, axcrypt2_t)) { /** * base @@ -197,7 +197,7 @@ KERNEL_FQ void m23600_init (KERN_ATTR_TMPS_ESALT (axcrypt2_tmp_t, axcrypt2_t)) } } -KERNEL_FQ void m23600_loop (KERN_ATTR_TMPS_ESALT (axcrypt2_tmp_t, axcrypt2_t)) +KERNEL_FQ KERNEL_FA void m23600_loop (KERN_ATTR_TMPS_ESALT (axcrypt2_tmp_t, axcrypt2_t)) { const u64 gid = get_global_id (0); @@ -323,7 +323,7 @@ KERNEL_FQ void m23600_loop (KERN_ATTR_TMPS_ESALT (axcrypt2_tmp_t, axcrypt2_t)) } } -KERNEL_FQ void m23600_init2 (KERN_ATTR_TMPS_ESALT (axcrypt2_tmp_t, axcrypt2_t)) +KERNEL_FQ KERNEL_FA void m23600_init2 (KERN_ATTR_TMPS_ESALT (axcrypt2_tmp_t, axcrypt2_t)) { /** * base @@ -389,7 +389,7 @@ KERNEL_FQ void m23600_init2 (KERN_ATTR_TMPS_ESALT (axcrypt2_tmp_t, axcrypt2_t)) } } -KERNEL_FQ void m23600_loop2 (KERN_ATTR_TMPS_ESALT (axcrypt2_tmp_t, axcrypt2_t)) +KERNEL_FQ KERNEL_FA void m23600_loop2 (KERN_ATTR_TMPS_ESALT (axcrypt2_tmp_t, axcrypt2_t)) { /** * base @@ -514,7 +514,7 @@ KERNEL_FQ void m23600_loop2 (KERN_ATTR_TMPS_ESALT (axcrypt2_tmp_t, axcrypt2_t)) } } -KERNEL_FQ void m23600_comp (KERN_ATTR_TMPS_ESALT (axcrypt2_tmp_t, axcrypt2_t)) +KERNEL_FQ KERNEL_FA void m23600_comp (KERN_ATTR_TMPS_ESALT (axcrypt2_tmp_t, axcrypt2_t)) { /** * base diff --git a/OpenCL/m23700-optimized.cl b/OpenCL/m23700-optimized.cl index c3c823464..ca5b565d0 100644 --- a/OpenCL/m23700-optimized.cl +++ b/OpenCL/m23700-optimized.cl @@ -137,7 +137,7 @@ DECLSPEC u32 round_crc32_16 (const u32 crc32, PRIVATE_AS const u32 *buf, const u return c; } -KERNEL_FQ void m23700_init (KERN_ATTR_TMPS_ESALT (rar3_tmp_t, rar3_t)) +KERNEL_FQ KERNEL_FA void m23700_init (KERN_ATTR_TMPS_ESALT (rar3_tmp_t, rar3_t)) { /** * base @@ -155,7 +155,7 @@ KERNEL_FQ void m23700_init (KERN_ATTR_TMPS_ESALT (rar3_tmp_t, rar3_t)) } /* -KERNEL_FQ void m23700_loop (KERN_ATTR_TMPS_ESALT (rar3_tmp_t, rar3_t)) +KERNEL_FQ KERNEL_FA void m23700_loop (KERN_ATTR_TMPS_ESALT (rar3_tmp_t, rar3_t)) { const u64 gid = get_global_id (0); @@ -490,7 +490,7 @@ KERNEL_FQ void m23700_loop (KERN_ATTR_TMPS_ESALT (rar3_tmp_t, rar3_t)) } */ -KERNEL_FQ void m23700_loop (KERN_ATTR_TMPS_ESALT (rar3_tmp_t, rar3_t)) +KERNEL_FQ KERNEL_FA void m23700_loop (KERN_ATTR_TMPS_ESALT (rar3_tmp_t, rar3_t)) { const u64 gid = get_global_id (0); @@ -679,7 +679,7 @@ KERNEL_FQ void m23700_loop (KERN_ATTR_TMPS_ESALT (rar3_tmp_t, rar3_t)) tmps[gid].dgst[init_pos + 1][4] = dgst[4]; } -KERNEL_FQ void m23700_comp (KERN_ATTR_TMPS_ESALT (rar3_tmp_t, rar3_t)) +KERNEL_FQ KERNEL_FA void m23700_comp (KERN_ATTR_TMPS_ESALT (rar3_tmp_t, rar3_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m23700-pure.cl b/OpenCL/m23700-pure.cl index 468711e2f..4e520a5cd 100644 --- a/OpenCL/m23700-pure.cl +++ b/OpenCL/m23700-pure.cl @@ -836,7 +836,7 @@ DECLSPEC void sha1_update_rar29 (PRIVATE_AS sha1_ctx_t *ctx, PRIVATE_AS u32 *w, } } -KERNEL_FQ void m23700_init (KERN_ATTR_TMPS_ESALT (rar3_tmp_t, rar3_t)) +KERNEL_FQ KERNEL_FA void m23700_init (KERN_ATTR_TMPS_ESALT (rar3_tmp_t, rar3_t)) { /** * base @@ -904,7 +904,7 @@ KERNEL_FQ void m23700_init (KERN_ATTR_TMPS_ESALT (rar3_tmp_t, rar3_t)) tmps[gid].iv[3] = 0; } -KERNEL_FQ void m23700_loop (KERN_ATTR_TMPS_ESALT (rar3_tmp_t, rar3_t)) +KERNEL_FQ KERNEL_FA void m23700_loop (KERN_ATTR_TMPS_ESALT (rar3_tmp_t, rar3_t)) { const u64 gid = get_global_id (0); @@ -1020,7 +1020,7 @@ KERNEL_FQ void m23700_loop (KERN_ATTR_TMPS_ESALT (rar3_tmp_t, rar3_t)) } } -KERNEL_FQ void m23700_comp (KERN_ATTR_TMPS_ESALT (rar3_tmp_t, rar3_t)) +KERNEL_FQ KERNEL_FA void m23700_comp (KERN_ATTR_TMPS_ESALT (rar3_tmp_t, rar3_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m23800-optimized.cl b/OpenCL/m23800-optimized.cl index 2d7bc57e6..5551cf0cd 100644 --- a/OpenCL/m23800-optimized.cl +++ b/OpenCL/m23800-optimized.cl @@ -44,11 +44,13 @@ typedef struct rar3_hook u32 first_block_decrypted[4]; + u32 unpack_failed; + u32 crc32; } rar3_hook_t; -KERNEL_FQ void m23800_init (KERN_ATTR_TMPS_HOOKS_ESALT (rar3_tmp_t, rar3_hook_t, rar3_t)) +KERNEL_FQ KERNEL_FA void m23800_init (KERN_ATTR_TMPS_HOOKS_ESALT (rar3_tmp_t, rar3_hook_t, rar3_t)) { /** * base @@ -65,7 +67,7 @@ KERNEL_FQ void m23800_init (KERN_ATTR_TMPS_HOOKS_ESALT (rar3_tmp_t, rar3_hook_t, tmps[gid].dgst[0][4] = SHA1M_E; } -KERNEL_FQ void m23800_loop (KERN_ATTR_TMPS_HOOKS_ESALT (rar3_tmp_t, rar3_hook_t, rar3_t)) +KERNEL_FQ KERNEL_FA void m23800_loop (KERN_ATTR_TMPS_HOOKS_ESALT (rar3_tmp_t, rar3_hook_t, rar3_t)) { const u64 gid = get_global_id (0); @@ -254,7 +256,7 @@ KERNEL_FQ void m23800_loop (KERN_ATTR_TMPS_HOOKS_ESALT (rar3_tmp_t, rar3_hook_t, tmps[gid].dgst[init_pos + 1][4] = dgst[4]; } -KERNEL_FQ void m23800_hook23 (KERN_ATTR_TMPS_HOOKS_ESALT (rar3_tmp_t, rar3_hook_t, rar3_t)) +KERNEL_FQ KERNEL_FA void m23800_hook23 (KERN_ATTR_TMPS_HOOKS_ESALT (rar3_tmp_t, rar3_hook_t, rar3_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -485,7 +487,7 @@ KERNEL_FQ void m23800_hook23 (KERN_ATTR_TMPS_HOOKS_ESALT (rar3_tmp_t, rar3_hook_ hooks[gid].first_block_decrypted[3] = hc_swap32_S (out[3]); } -KERNEL_FQ void m23800_comp (KERN_ATTR_TMPS_HOOKS_ESALT (rar3_tmp_t, rar3_hook_t, rar3_t)) +KERNEL_FQ KERNEL_FA void m23800_comp (KERN_ATTR_TMPS_HOOKS_ESALT (rar3_tmp_t, rar3_hook_t, rar3_t)) { /** * base @@ -495,6 +497,8 @@ KERNEL_FQ void m23800_comp (KERN_ATTR_TMPS_HOOKS_ESALT (rar3_tmp_t, rar3_hook_t, if (gid >= GID_CNT) return; + if (hooks[gid].unpack_failed == 1) return; + u32 crc32 = hooks[gid].crc32; const u32 r0 = crc32; diff --git a/OpenCL/m23800-pure.cl b/OpenCL/m23800-pure.cl index 2db5f69a1..71bd9a50f 100644 --- a/OpenCL/m23800-pure.cl +++ b/OpenCL/m23800-pure.cl @@ -42,6 +42,8 @@ typedef struct rar3_hook u32 first_block_decrypted[4]; + u32 unpack_failed; + u32 crc32; } rar3_hook_t; @@ -747,7 +749,7 @@ DECLSPEC void sha1_update_rar29 (PRIVATE_AS sha1_ctx_t *ctx, PRIVATE_AS u32 *w, } } -KERNEL_FQ void m23800_init (KERN_ATTR_TMPS_HOOKS_ESALT (rar3_tmp_t, rar3_hook_t, rar3_t)) +KERNEL_FQ KERNEL_FA void m23800_init (KERN_ATTR_TMPS_HOOKS_ESALT (rar3_tmp_t, rar3_hook_t, rar3_t)) { /** * base @@ -815,7 +817,7 @@ KERNEL_FQ void m23800_init (KERN_ATTR_TMPS_HOOKS_ESALT (rar3_tmp_t, rar3_hook_t, tmps[gid].iv[3] = 0; } -KERNEL_FQ void m23800_loop (KERN_ATTR_TMPS_HOOKS_ESALT (rar3_tmp_t, rar3_hook_t, rar3_t)) +KERNEL_FQ KERNEL_FA void m23800_loop (KERN_ATTR_TMPS_HOOKS_ESALT (rar3_tmp_t, rar3_hook_t, rar3_t)) { const u64 gid = get_global_id (0); @@ -931,7 +933,7 @@ KERNEL_FQ void m23800_loop (KERN_ATTR_TMPS_HOOKS_ESALT (rar3_tmp_t, rar3_hook_t, } } -KERNEL_FQ void m23800_hook23 (KERN_ATTR_TMPS_HOOKS_ESALT (rar3_tmp_t, rar3_hook_t, rar3_t)) +KERNEL_FQ KERNEL_FA void m23800_hook23 (KERN_ATTR_TMPS_HOOKS_ESALT (rar3_tmp_t, rar3_hook_t, rar3_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -1086,7 +1088,7 @@ KERNEL_FQ void m23800_hook23 (KERN_ATTR_TMPS_HOOKS_ESALT (rar3_tmp_t, rar3_hook_ hooks[gid].first_block_decrypted[3] = hc_swap32_S (out[3]); } -KERNEL_FQ void m23800_comp (KERN_ATTR_TMPS_HOOKS_ESALT (rar3_tmp_t, rar3_hook_t, rar3_t)) +KERNEL_FQ KERNEL_FA void m23800_comp (KERN_ATTR_TMPS_HOOKS_ESALT (rar3_tmp_t, rar3_hook_t, rar3_t)) { /** * base @@ -1096,6 +1098,8 @@ KERNEL_FQ void m23800_comp (KERN_ATTR_TMPS_HOOKS_ESALT (rar3_tmp_t, rar3_hook_t, if (gid >= GID_CNT) return; + if (hooks[gid].unpack_failed == 1) return; + u32 crc32 = hooks[gid].crc32; const u32 r0 = crc32; diff --git a/OpenCL/m23900-pure.cl b/OpenCL/m23900-pure.cl index bc99e371d..415acbede 100644 --- a/OpenCL/m23900-pure.cl +++ b/OpenCL/m23900-pure.cl @@ -29,7 +29,7 @@ typedef struct bestcrypt } bestcrypt_t; -KERNEL_FQ void m23900_init (KERN_ATTR_TMPS_ESALT (bestcrypt_tmp_t, bestcrypt_t)) +KERNEL_FQ KERNEL_FA void m23900_init (KERN_ATTR_TMPS_ESALT (bestcrypt_tmp_t, bestcrypt_t)) { const u64 gid = get_global_id (0); @@ -103,7 +103,7 @@ KERNEL_FQ void m23900_init (KERN_ATTR_TMPS_ESALT (bestcrypt_tmp_t, bestcrypt_t)) } } -KERNEL_FQ void m23900_loop (KERN_ATTR_TMPS_ESALT (bestcrypt_tmp_t, bestcrypt_t)) +KERNEL_FQ KERNEL_FA void m23900_loop (KERN_ATTR_TMPS_ESALT (bestcrypt_tmp_t, bestcrypt_t)) { const u64 gid = get_global_id (0); @@ -251,7 +251,7 @@ KERNEL_FQ void m23900_loop (KERN_ATTR_TMPS_ESALT (bestcrypt_tmp_t, bestcrypt_t)) tmps[gid].out[7] = digest[7]; } -KERNEL_FQ void m23900_comp (KERN_ATTR_TMPS_ESALT (bestcrypt_tmp_t, bestcrypt_t)) +KERNEL_FQ KERNEL_FA void m23900_comp (KERN_ATTR_TMPS_ESALT (bestcrypt_tmp_t, bestcrypt_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m24000-pure.cl b/OpenCL/m24000-pure.cl new file mode 100644 index 000000000..a80607187 --- /dev/null +++ b/OpenCL/m24000-pure.cl @@ -0,0 +1,483 @@ +/** + * Author......: See docs/credits.txt + * License.....: MIT + */ + +#ifdef KERNEL_STATIC +#include M2S(INCLUDE_PATH/inc_vendor.h) +#include M2S(INCLUDE_PATH/inc_types.h) +#include M2S(INCLUDE_PATH/inc_platform.cl) +#include M2S(INCLUDE_PATH/inc_common.cl) +#include M2S(INCLUDE_PATH/inc_hash_sha256.cl) +#include M2S(INCLUDE_PATH/inc_hash_scrypt.cl) +#include M2S(INCLUDE_PATH/inc_cipher_aes.cl) +#include M2S(INCLUDE_PATH/inc_cipher_twofish.cl) +#include M2S(INCLUDE_PATH/inc_cipher_serpent.cl) +#include M2S(INCLUDE_PATH/inc_cipher_camellia.cl) +#endif + +typedef struct bestcrypt_scrypt +{ + u32 salt_buf[24]; + u32 ciphertext[96]; + u32 version; + +} bestcrypt_scrypt_t; + +#ifndef KECCAK_ROUNDS +#define KECCAK_ROUNDS 24 +#endif + +#define Theta1(s) (st[0 + s] ^ st[5 + s] ^ st[10 + s] ^ st[15 + s] ^ st[20 + s]) + +#define Theta2(s) \ +{ \ + st[ 0 + s] ^= t; \ + st[ 5 + s] ^= t; \ + st[10 + s] ^= t; \ + st[15 + s] ^= t; \ + st[20 + s] ^= t; \ +} + +#define Rho_Pi(s) \ +{ \ + u32 j = keccakf_piln[s]; \ + u32 k = keccakf_rotc[s]; \ + bc0 = st[j]; \ + st[j] = hc_rotl64_S (t, k); \ + t = bc0; \ +} + +#define Chi(s) \ +{ \ + bc0 = st[0 + s]; \ + bc1 = st[1 + s]; \ + bc2 = st[2 + s]; \ + bc3 = st[3 + s]; \ + bc4 = st[4 + s]; \ + st[0 + s] ^= ~bc1 & bc2; \ + st[1 + s] ^= ~bc2 & bc3; \ + st[2 + s] ^= ~bc3 & bc4; \ + st[3 + s] ^= ~bc4 & bc0; \ + st[4 + s] ^= ~bc0 & bc1; \ +} + +CONSTANT_VK u64a keccakf_rndc[24] = +{ + 0x0000000000000001, 0x0000000000008082, 0x800000000000808a, + 0x8000000080008000, 0x000000000000808b, 0x0000000080000001, + 0x8000000080008081, 0x8000000000008009, 0x000000000000008a, + 0x0000000000000088, 0x0000000080008009, 0x000000008000000a, + 0x000000008000808b, 0x800000000000008b, 0x8000000000008089, + 0x8000000000008003, 0x8000000000008002, 0x8000000000000080, + 0x000000000000800a, 0x800000008000000a, 0x8000000080008081, + 0x8000000000008080, 0x0000000080000001, 0x8000000080008008 +}; + +DECLSPEC void keccak_transform_S (PRIVATE_AS u64 *st) +{ + const u8 keccakf_rotc[24] = + { + 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, 2, 14, + 27, 41, 56, 8, 25, 43, 62, 18, 39, 61, 20, 44 + }; + + const u8 keccakf_piln[24] = + { + 10, 7, 11, 17, 18, 3, 5, 16, 8, 21, 24, 4, + 15, 23, 19, 13, 12, 2, 20, 14, 22, 9, 6, 1 + }; + + /** + * Keccak + */ + + int round; + + for (round = 0; round < KECCAK_ROUNDS; round++) + { + // Theta + + u64 bc0 = Theta1 (0); + u64 bc1 = Theta1 (1); + u64 bc2 = Theta1 (2); + u64 bc3 = Theta1 (3); + u64 bc4 = Theta1 (4); + + u64 t; + + t = bc4 ^ hc_rotl64_S (bc1, 1); Theta2 (0); + t = bc0 ^ hc_rotl64_S (bc2, 1); Theta2 (1); + t = bc1 ^ hc_rotl64_S (bc3, 1); Theta2 (2); + t = bc2 ^ hc_rotl64_S (bc4, 1); Theta2 (3); + t = bc3 ^ hc_rotl64_S (bc0, 1); Theta2 (4); + + // Rho Pi + + t = st[1]; + + Rho_Pi (0); + Rho_Pi (1); + Rho_Pi (2); + Rho_Pi (3); + Rho_Pi (4); + Rho_Pi (5); + Rho_Pi (6); + Rho_Pi (7); + Rho_Pi (8); + Rho_Pi (9); + Rho_Pi (10); + Rho_Pi (11); + Rho_Pi (12); + Rho_Pi (13); + Rho_Pi (14); + Rho_Pi (15); + Rho_Pi (16); + Rho_Pi (17); + Rho_Pi (18); + Rho_Pi (19); + Rho_Pi (20); + Rho_Pi (21); + Rho_Pi (22); + Rho_Pi (23); + + // Chi + + Chi (0); + Chi (5); + Chi (10); + Chi (15); + Chi (20); + + // Iota + + st[0] ^= keccakf_rndc[round]; + } +} + +KERNEL_FQ KERNEL_FA void m24000_init (KERN_ATTR_TMPS_ESALT (scrypt_tmp_t, bestcrypt_scrypt_t)) +{ + const u64 gid = get_global_id (0); + + if (gid >= GID_CNT) return; + + scrypt_pbkdf2_ggg (pws[gid].i, pws[gid].pw_len, salt_bufs[SALT_POS_HOST].salt_buf, salt_bufs[SALT_POS_HOST].salt_len, tmps[gid].in, SCRYPT_SZ); + + scrypt_blockmix_in (tmps[gid].in, tmps[gid].out, SCRYPT_SZ); +} + +KERNEL_FQ KERNEL_FA void m24000_loop_prepare (KERN_ATTR_TMPS_ESALT (scrypt_tmp_t, bestcrypt_scrypt_t)) +{ + const u64 gid = get_global_id (0); + const u64 lid = get_local_id (0); + const u64 lsz = get_local_size (0); + const u64 bid = get_group_id (0); + + if (gid >= GID_CNT) return; + + u32 X[STATE_CNT4]; + + GLOBAL_AS u32 *P = tmps[gid].out + (SALT_REPEAT * STATE_CNT4); + + scrypt_smix_init (P, X, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, gid, lid, lsz, bid); +} + +KERNEL_FQ KERNEL_FA void m24000_loop (KERN_ATTR_TMPS_ESALT (scrypt_tmp_t, bestcrypt_scrypt_t)) +{ + const u64 gid = get_global_id (0); + const u64 lid = get_local_id (0); + const u64 lsz = get_local_size (0); + const u64 bid = get_group_id (0); + + if (gid >= GID_CNT) return; + + u32 X[STATE_CNT4]; + u32 T[STATE_CNT4]; + + GLOBAL_AS u32 *P = tmps[gid].out + (SALT_REPEAT * STATE_CNT4); + + scrypt_smix_loop (P, X, T, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, gid, lid, lsz, bid); +} + +KERNEL_FQ KERNEL_FA void m24000_comp (KERN_ATTR_TMPS_ESALT (scrypt_tmp_t, bestcrypt_scrypt_t)) +{ + /** + * base + */ + + const u64 gid = get_global_id (0); + const u64 lid = get_local_id (0); + const u64 lsz = get_local_size (0); + + /** + * aes shared + */ + + #ifdef REAL_SHM + + LOCAL_VK u32 s_td0[256]; + LOCAL_VK u32 s_td1[256]; + LOCAL_VK u32 s_td2[256]; + LOCAL_VK u32 s_td3[256]; + LOCAL_VK u32 s_td4[256]; + + LOCAL_VK u32 s_te0[256]; + LOCAL_VK u32 s_te1[256]; + LOCAL_VK u32 s_te2[256]; + LOCAL_VK u32 s_te3[256]; + LOCAL_VK u32 s_te4[256]; + + for (u32 i = lid; i < 256; i += lsz) + { + s_td0[i] = td0[i]; + s_td1[i] = td1[i]; + s_td2[i] = td2[i]; + s_td3[i] = td3[i]; + s_td4[i] = td4[i]; + + s_te0[i] = te0[i]; + s_te1[i] = te1[i]; + s_te2[i] = te2[i]; + s_te3[i] = te3[i]; + s_te4[i] = te4[i]; + } + + SYNC_THREADS (); + + #else + + CONSTANT_AS u32a *s_td0 = td0; + CONSTANT_AS u32a *s_td1 = td1; + CONSTANT_AS u32a *s_td2 = td2; + CONSTANT_AS u32a *s_td3 = td3; + CONSTANT_AS u32a *s_td4 = td4; + + CONSTANT_AS u32a *s_te0 = te0; + CONSTANT_AS u32a *s_te1 = te1; + CONSTANT_AS u32a *s_te2 = te2; + CONSTANT_AS u32a *s_te3 = te3; + CONSTANT_AS u32a *s_te4 = te4; + #endif + + if (gid >= GID_CNT) return; + + scrypt_blockmix_out (tmps[gid].out, tmps[gid].in, SCRYPT_SZ); + + u32 out[8]; + + scrypt_pbkdf2_ggp (pws[gid].i, pws[gid].pw_len, tmps[gid].in, SCRYPT_SZ, out, 32); + + u32 version = esalt_bufs[DIGESTS_OFFSET_HOST].version; + + u32 iv[4] = { 0 }; + + u32 res[20]; // full would be 24 x u32 (96 bytes) + + u32 key[8]; + + key[0] = out[0]; + key[1] = out[1]; + key[2] = out[2]; + key[3] = out[3]; + key[4] = out[4]; + key[5] = out[5]; + key[6] = out[6]; + key[7] = out[7]; + + if (version == 0x38) //0x38 is char for '8' which is the crypto type passed in position 3 of hash ( $08$ ) + { + #define KEYLEN 60 + + u32 ks[KEYLEN]; + + aes256_set_decrypt_key (ks, key, s_te0, s_te1, s_te2, s_te3, s_td0, s_td1, s_td2, s_td3); + + for (u32 i = 0; i < 20; i += 4) // 96 bytes output would contain the full 32 byte checksum + { + u32 data[4]; + + data[0] = esalt_bufs[DIGESTS_OFFSET_HOST].ciphertext[i + 0]; + data[1] = esalt_bufs[DIGESTS_OFFSET_HOST].ciphertext[i + 1]; + data[2] = esalt_bufs[DIGESTS_OFFSET_HOST].ciphertext[i + 2]; + data[3] = esalt_bufs[DIGESTS_OFFSET_HOST].ciphertext[i + 3]; + + u32 out[4]; + + aes256_decrypt (ks, data, out, s_td0, s_td1, s_td2, s_td3, s_td4); + + res[i + 0] = hc_swap32_S (out[0] ^ iv[0]); + res[i + 1] = hc_swap32_S (out[1] ^ iv[1]); + res[i + 2] = hc_swap32_S (out[2] ^ iv[2]); + res[i + 3] = hc_swap32_S (out[3] ^ iv[3]); + + iv[0] = data[0]; + iv[1] = data[1]; + iv[2] = data[2]; + iv[3] = data[3]; + } + } + + if (version == 0x39) //0x39 is char for '9' which is the crypto type passed in position 3 of hash ( $09$ ) + { + u32 sk[4]; + u32 lk[40]; + + twofish256_set_key (sk, lk, key); + + for (u32 i = 0; i < 20; i += 4) // 96 bytes output would contain the full 32 byte checksum + { + u32 data[4]; + + data[0] = esalt_bufs[DIGESTS_OFFSET_HOST].ciphertext[i + 0]; + data[1] = esalt_bufs[DIGESTS_OFFSET_HOST].ciphertext[i + 1]; + data[2] = esalt_bufs[DIGESTS_OFFSET_HOST].ciphertext[i + 2]; + data[3] = esalt_bufs[DIGESTS_OFFSET_HOST].ciphertext[i + 3]; + + u32 out[4]; + + twofish256_decrypt (sk, lk, data, out); + + res[i + 0] = hc_swap32_S (out[0] ^ iv[0]); + res[i + 1] = hc_swap32_S (out[1] ^ iv[1]); + res[i + 2] = hc_swap32_S (out[2] ^ iv[2]); + res[i + 3] = hc_swap32_S (out[3] ^ iv[3]); + + iv[0] = data[0]; + iv[1] = data[1]; + iv[2] = data[2]; + iv[3] = data[3]; + } + } + + if (version == 0x61) //0x61 is char for 'a' which is the crypto type passed in position 3 of hash ( $0a$ ) + { + u32 ks_serpent[140]; + + serpent256_set_key (ks_serpent, key); + + for (u32 i = 0; i < 20; i += 4) // 96 bytes output would contain the full 32 byte checksum + { + u32 data[4]; + + data[0] = esalt_bufs[DIGESTS_OFFSET_HOST].ciphertext[i + 0]; + data[1] = esalt_bufs[DIGESTS_OFFSET_HOST].ciphertext[i + 1]; + data[2] = esalt_bufs[DIGESTS_OFFSET_HOST].ciphertext[i + 2]; + data[3] = esalt_bufs[DIGESTS_OFFSET_HOST].ciphertext[i + 3]; + + + u32 out[4]; + + serpent256_decrypt (ks_serpent, data, out); + + res[i + 0] = hc_swap32_S (out[0] ^ iv[0]); + res[i + 1] = hc_swap32_S (out[1] ^ iv[1]); + res[i + 2] = hc_swap32_S (out[2] ^ iv[2]); + res[i + 3] = hc_swap32_S (out[3] ^ iv[3]); + + iv[0] = data[0]; + iv[1] = data[1]; + iv[2] = data[2]; + iv[3] = data[3]; + } + } + + if (version == 0x66) //0x66 is char for 'f' which is the crypto type passed in position 3 of hash ( $0f$ ) + { + u32 ks_camellia[68]; + + camellia256_set_key (ks_camellia, key); + + for (u32 i = 0; i < 20; i += 4) // 96 bytes output would contain the full 32 byte checksum + { + u32 data[4]; + + data[0] = esalt_bufs[DIGESTS_OFFSET_HOST].ciphertext[i + 0]; + data[1] = esalt_bufs[DIGESTS_OFFSET_HOST].ciphertext[i + 1]; + data[2] = esalt_bufs[DIGESTS_OFFSET_HOST].ciphertext[i + 2]; + data[3] = esalt_bufs[DIGESTS_OFFSET_HOST].ciphertext[i + 3]; + + + u32 out[4]; + + camellia256_decrypt (ks_camellia, data, out); + + res[i + 0] = hc_swap32_S (out[0] ^ iv[0]); + res[i + 1] = hc_swap32_S (out[1] ^ iv[1]); + res[i + 2] = hc_swap32_S (out[2] ^ iv[2]); + res[i + 3] = hc_swap32_S (out[3] ^ iv[3]); + + iv[0] = data[0]; + iv[1] = data[1]; + iv[2] = data[2]; + iv[3] = data[3]; + } + } + + u32 digest[8]; + + digest[0] = SHA256M_A; + digest[1] = SHA256M_B; + digest[2] = SHA256M_C; + digest[3] = SHA256M_D; + digest[4] = SHA256M_E; + digest[5] = SHA256M_F; + digest[6] = SHA256M_G; + digest[7] = SHA256M_H; + + u32 w0[4]; + u32 w1[4]; + u32 w2[4]; + u32 w3[4]; + + w0[0] = res[ 0]; + w0[1] = res[ 1]; + w0[2] = res[ 2]; + w0[3] = res[ 3]; + w1[0] = res[ 4]; + w1[1] = res[ 5]; + w1[2] = res[ 6]; + w1[3] = res[ 7]; + w2[0] = res[ 8]; + w2[1] = res[ 9]; + w2[2] = res[10]; + w2[3] = res[11]; + w3[0] = res[12]; + w3[1] = res[13]; + w3[2] = res[14]; + w3[3] = res[15]; + + sha256_transform (w0, w1, w2, w3, digest); + + w0[0] = 0x80000000; + w0[1] = 0; + w0[2] = 0; + w0[3] = 0; + w1[0] = 0; + w1[1] = 0; + w1[2] = 0; + w1[3] = 0; + w2[0] = 0; + w2[1] = 0; + w2[2] = 0; + w2[3] = 0; + w3[0] = 0; + w3[1] = 0; + w3[2] = 0; + w3[3] = 64 * 8; + + sha256_transform (w0, w1, w2, w3, digest); + + if ((digest[0] == res[16]) && + (digest[1] == res[17]) && + (digest[2] == res[18]) && + (digest[3] == res[19])) + { + if (hc_atomic_inc (&hashes_shown[DIGESTS_OFFSET_HOST]) == 0) + { + mark_hash (plains_buf, d_return_buf, SALT_POS_HOST, DIGESTS_CNT, 0, DIGESTS_OFFSET_HOST + 0, gid, 0, 0, 0); + } + + return; + } +} + diff --git a/OpenCL/m24100-pure.cl b/OpenCL/m24100-pure.cl index 8f8842e7c..79adf0f62 100644 --- a/OpenCL/m24100-pure.cl +++ b/OpenCL/m24100-pure.cl @@ -73,7 +73,7 @@ DECLSPEC void hmac_sha1_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE sha1_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m24100_init (KERN_ATTR_TMPS_ESALT (mongodb_sha1_tmp_t, mongodb_sha1_t)) +KERNEL_FQ KERNEL_FA void m24100_init (KERN_ATTR_TMPS_ESALT (mongodb_sha1_tmp_t, mongodb_sha1_t)) { /** * modifier @@ -199,7 +199,7 @@ KERNEL_FQ void m24100_init (KERN_ATTR_TMPS_ESALT (mongodb_sha1_tmp_t, mongodb_sh } } -KERNEL_FQ void m24100_loop (KERN_ATTR_TMPS_ESALT (mongodb_sha1_tmp_t, mongodb_sha1_t)) +KERNEL_FQ KERNEL_FA void m24100_loop (KERN_ATTR_TMPS_ESALT (mongodb_sha1_tmp_t, mongodb_sha1_t)) { const u64 gid = get_global_id (0); @@ -284,7 +284,7 @@ KERNEL_FQ void m24100_loop (KERN_ATTR_TMPS_ESALT (mongodb_sha1_tmp_t, mongodb_sh } } -KERNEL_FQ void m24100_comp (KERN_ATTR_TMPS_ESALT (mongodb_sha1_tmp_t, mongodb_sha1_t)) +KERNEL_FQ KERNEL_FA void m24100_comp (KERN_ATTR_TMPS_ESALT (mongodb_sha1_tmp_t, mongodb_sha1_t)) { /** * base diff --git a/OpenCL/m24200-pure.cl b/OpenCL/m24200-pure.cl index 6cf9e8a79..a1ec3e140 100644 --- a/OpenCL/m24200-pure.cl +++ b/OpenCL/m24200-pure.cl @@ -78,7 +78,7 @@ DECLSPEC void hmac_sha256_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVA sha256_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m24200_init (KERN_ATTR_TMPS_ESALT (mongodb_sha256_tmp_t, mongodb_sha256_t)) +KERNEL_FQ KERNEL_FA void m24200_init (KERN_ATTR_TMPS_ESALT (mongodb_sha256_tmp_t, mongodb_sha256_t)) { /** * base @@ -162,7 +162,7 @@ KERNEL_FQ void m24200_init (KERN_ATTR_TMPS_ESALT (mongodb_sha256_tmp_t, mongodb_ } } -KERNEL_FQ void m24200_loop (KERN_ATTR_TMPS_ESALT (mongodb_sha256_tmp_t, mongodb_sha256_t)) +KERNEL_FQ KERNEL_FA void m24200_loop (KERN_ATTR_TMPS_ESALT (mongodb_sha256_tmp_t, mongodb_sha256_t)) { const u64 gid = get_global_id (0); @@ -268,7 +268,7 @@ KERNEL_FQ void m24200_loop (KERN_ATTR_TMPS_ESALT (mongodb_sha256_tmp_t, mongodb_ } } -KERNEL_FQ void m24200_comp (KERN_ATTR_TMPS_ESALT (mongodb_sha256_tmp_t, mongodb_sha256_t)) +KERNEL_FQ KERNEL_FA void m24200_comp (KERN_ATTR_TMPS_ESALT (mongodb_sha256_tmp_t, mongodb_sha256_t)) { /** * base diff --git a/OpenCL/m24300_a0-optimized.cl b/OpenCL/m24300_a0-optimized.cl index 5f595ac64..afb2e0179 100644 --- a/OpenCL/m24300_a0-optimized.cl +++ b/OpenCL/m24300_a0-optimized.cl @@ -28,7 +28,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m24300_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m24300_m04 (KERN_ATTR_RULES ()) { /** * base @@ -635,15 +635,15 @@ KERNEL_FQ void m24300_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m24300_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m24300_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m24300_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m24300_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m24300_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m24300_s04 (KERN_ATTR_RULES ()) { /** * base @@ -1263,10 +1263,10 @@ KERNEL_FQ void m24300_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m24300_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m24300_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m24300_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m24300_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m24300_a0-pure.cl b/OpenCL/m24300_a0-pure.cl index f4d9ea8ba..9fa7ba09e 100644 --- a/OpenCL/m24300_a0-pure.cl +++ b/OpenCL/m24300_a0-pure.cl @@ -28,7 +28,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m24300_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m24300_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -142,7 +142,7 @@ KERNEL_FQ void m24300_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m24300_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m24300_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m24300_a1-optimized.cl b/OpenCL/m24300_a1-optimized.cl index 153ba475a..27fece6e3 100644 --- a/OpenCL/m24300_a1-optimized.cl +++ b/OpenCL/m24300_a1-optimized.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m24300_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m24300_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -689,15 +689,15 @@ KERNEL_FQ void m24300_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m24300_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m24300_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m24300_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m24300_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m24300_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m24300_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -1372,10 +1372,10 @@ KERNEL_FQ void m24300_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m24300_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m24300_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m24300_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m24300_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m24300_a1-pure.cl b/OpenCL/m24300_a1-pure.cl index d5d00c6eb..84f2cf3e7 100644 --- a/OpenCL/m24300_a1-pure.cl +++ b/OpenCL/m24300_a1-pure.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m24300_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m24300_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -138,7 +138,7 @@ KERNEL_FQ void m24300_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m24300_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m24300_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m24300_a3-optimized.cl b/OpenCL/m24300_a3-optimized.cl index c48755420..a3125ea93 100644 --- a/OpenCL/m24300_a3-optimized.cl +++ b/OpenCL/m24300_a3-optimized.cl @@ -1162,7 +1162,7 @@ DECLSPEC void m24300s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m24300_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m24300_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -1232,7 +1232,7 @@ KERNEL_FQ void m24300_m04 (KERN_ATTR_BASIC ()) m24300m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m24300_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m24300_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -1302,7 +1302,7 @@ KERNEL_FQ void m24300_m08 (KERN_ATTR_BASIC ()) m24300m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m24300_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m24300_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -1372,7 +1372,7 @@ KERNEL_FQ void m24300_m16 (KERN_ATTR_BASIC ()) m24300m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m24300_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m24300_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -1442,7 +1442,7 @@ KERNEL_FQ void m24300_s04 (KERN_ATTR_BASIC ()) m24300s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m24300_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m24300_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -1512,7 +1512,7 @@ KERNEL_FQ void m24300_s08 (KERN_ATTR_BASIC ()) m24300s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m24300_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m24300_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m24300_a3-pure.cl b/OpenCL/m24300_a3-pure.cl index 776d6dfaa..fdd1da566 100644 --- a/OpenCL/m24300_a3-pure.cl +++ b/OpenCL/m24300_a3-pure.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8_le(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m24300_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m24300_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -162,7 +162,7 @@ KERNEL_FQ void m24300_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m24300_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m24300_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m24410-pure.cl b/OpenCL/m24410-pure.cl index d0553cb40..7d19c4023 100644 --- a/OpenCL/m24410-pure.cl +++ b/OpenCL/m24410-pure.cl @@ -90,7 +90,7 @@ DECLSPEC void hmac_sha1_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE sha1_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m24410_init (KERN_ATTR_TMPS_ESALT (pkcs_sha1_tmp_t, pkcs_t)) +KERNEL_FQ KERNEL_FA void m24410_init (KERN_ATTR_TMPS_ESALT (pkcs_sha1_tmp_t, pkcs_t)) { /** * base @@ -169,7 +169,7 @@ KERNEL_FQ void m24410_init (KERN_ATTR_TMPS_ESALT (pkcs_sha1_tmp_t, pkcs_t)) } } -KERNEL_FQ void m24410_loop (KERN_ATTR_TMPS_ESALT (pkcs_sha1_tmp_t, pkcs_t)) +KERNEL_FQ KERNEL_FA void m24410_loop (KERN_ATTR_TMPS_ESALT (pkcs_sha1_tmp_t, pkcs_t)) { const u64 gid = get_global_id (0); @@ -261,7 +261,7 @@ KERNEL_FQ void m24410_loop (KERN_ATTR_TMPS_ESALT (pkcs_sha1_tmp_t, pkcs_t)) } } -KERNEL_FQ void m24410_comp (KERN_ATTR_TMPS_ESALT (pkcs_sha1_tmp_t, pkcs_t)) +KERNEL_FQ KERNEL_FA void m24410_comp (KERN_ATTR_TMPS_ESALT (pkcs_sha1_tmp_t, pkcs_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m24420-pure.cl b/OpenCL/m24420-pure.cl index 2da61b238..613d03862 100644 --- a/OpenCL/m24420-pure.cl +++ b/OpenCL/m24420-pure.cl @@ -89,7 +89,7 @@ DECLSPEC void hmac_sha256_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVA sha256_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m24420_init (KERN_ATTR_TMPS_ESALT (pkcs_sha256_tmp_t, pkcs_t)) +KERNEL_FQ KERNEL_FA void m24420_init (KERN_ATTR_TMPS_ESALT (pkcs_sha256_tmp_t, pkcs_t)) { /** * base @@ -173,7 +173,7 @@ KERNEL_FQ void m24420_init (KERN_ATTR_TMPS_ESALT (pkcs_sha256_tmp_t, pkcs_t)) } } -KERNEL_FQ void m24420_loop (KERN_ATTR_TMPS_ESALT (pkcs_sha256_tmp_t, pkcs_t)) +KERNEL_FQ KERNEL_FA void m24420_loop (KERN_ATTR_TMPS_ESALT (pkcs_sha256_tmp_t, pkcs_t)) { const u64 gid = get_global_id (0); @@ -279,7 +279,7 @@ KERNEL_FQ void m24420_loop (KERN_ATTR_TMPS_ESALT (pkcs_sha256_tmp_t, pkcs_t)) } } -KERNEL_FQ void m24420_comp (KERN_ATTR_TMPS_ESALT (pkcs_sha256_tmp_t, pkcs_t)) +KERNEL_FQ KERNEL_FA void m24420_comp (KERN_ATTR_TMPS_ESALT (pkcs_sha256_tmp_t, pkcs_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m24500-pure.cl b/OpenCL/m24500-pure.cl index 2eaf5e8c8..6a926cccc 100644 --- a/OpenCL/m24500-pure.cl +++ b/OpenCL/m24500-pure.cl @@ -131,7 +131,7 @@ DECLSPEC void sha1_run (PRIVATE_AS u32 *w, PRIVATE_AS u32 *res) res[4] = digest[4]; } -KERNEL_FQ void m24500_init (KERN_ATTR_TMPS_ESALT (telegram_tmp_t, telegram_t)) +KERNEL_FQ KERNEL_FA void m24500_init (KERN_ATTR_TMPS_ESALT (telegram_tmp_t, telegram_t)) { /** * base @@ -266,7 +266,7 @@ KERNEL_FQ void m24500_init (KERN_ATTR_TMPS_ESALT (telegram_tmp_t, telegram_t)) } } -KERNEL_FQ void m24500_loop (KERN_ATTR_TMPS_ESALT (telegram_tmp_t, telegram_t)) +KERNEL_FQ KERNEL_FA void m24500_loop (KERN_ATTR_TMPS_ESALT (telegram_tmp_t, telegram_t)) { const u64 gid = get_global_id (0); @@ -392,7 +392,7 @@ KERNEL_FQ void m24500_loop (KERN_ATTR_TMPS_ESALT (telegram_tmp_t, telegram_t)) } } -KERNEL_FQ void m24500_comp (KERN_ATTR_TMPS_ESALT (telegram_tmp_t, telegram_t)) +KERNEL_FQ KERNEL_FA void m24500_comp (KERN_ATTR_TMPS_ESALT (telegram_tmp_t, telegram_t)) { /** * base diff --git a/OpenCL/m24610-pure.cl b/OpenCL/m24610-pure.cl index 798070ddb..a21bff789 100644 --- a/OpenCL/m24610-pure.cl +++ b/OpenCL/m24610-pure.cl @@ -73,7 +73,7 @@ DECLSPEC void hmac_sha1_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE sha1_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m24610_init (KERN_ATTR_TMPS_ESALT (sqlcipher_sha1_tmp_t, sqlcipher_t)) +KERNEL_FQ KERNEL_FA void m24610_init (KERN_ATTR_TMPS_ESALT (sqlcipher_sha1_tmp_t, sqlcipher_t)) { /** * base @@ -145,7 +145,7 @@ KERNEL_FQ void m24610_init (KERN_ATTR_TMPS_ESALT (sqlcipher_sha1_tmp_t, sqlciphe } } -KERNEL_FQ void m24610_loop (KERN_ATTR_TMPS_ESALT (sqlcipher_sha1_tmp_t, sqlcipher_t)) +KERNEL_FQ KERNEL_FA void m24610_loop (KERN_ATTR_TMPS_ESALT (sqlcipher_sha1_tmp_t, sqlcipher_t)) { const u64 gid = get_global_id (0); @@ -230,7 +230,7 @@ KERNEL_FQ void m24610_loop (KERN_ATTR_TMPS_ESALT (sqlcipher_sha1_tmp_t, sqlciphe } } -KERNEL_FQ void m24610_comp (KERN_ATTR_TMPS_ESALT (sqlcipher_sha1_tmp_t, sqlcipher_t)) +KERNEL_FQ KERNEL_FA void m24610_comp (KERN_ATTR_TMPS_ESALT (sqlcipher_sha1_tmp_t, sqlcipher_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m24620-pure.cl b/OpenCL/m24620-pure.cl index 863e9cc31..dd794ee87 100644 --- a/OpenCL/m24620-pure.cl +++ b/OpenCL/m24620-pure.cl @@ -79,7 +79,7 @@ DECLSPEC void hmac_sha256_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVA sha256_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m24620_init (KERN_ATTR_TMPS_ESALT (sqlcipher_sha256_tmp_t, sqlcipher_t)) +KERNEL_FQ KERNEL_FA void m24620_init (KERN_ATTR_TMPS_ESALT (sqlcipher_sha256_tmp_t, sqlcipher_t)) { /** * base @@ -163,7 +163,7 @@ KERNEL_FQ void m24620_init (KERN_ATTR_TMPS_ESALT (sqlcipher_sha256_tmp_t, sqlcip } } -KERNEL_FQ void m24620_loop (KERN_ATTR_TMPS_ESALT (sqlcipher_sha256_tmp_t, sqlcipher_t)) +KERNEL_FQ KERNEL_FA void m24620_loop (KERN_ATTR_TMPS_ESALT (sqlcipher_sha256_tmp_t, sqlcipher_t)) { const u64 gid = get_global_id (0); @@ -269,7 +269,7 @@ KERNEL_FQ void m24620_loop (KERN_ATTR_TMPS_ESALT (sqlcipher_sha256_tmp_t, sqlcip } } -KERNEL_FQ void m24620_comp (KERN_ATTR_TMPS_ESALT (sqlcipher_sha256_tmp_t, sqlcipher_t)) +KERNEL_FQ KERNEL_FA void m24620_comp (KERN_ATTR_TMPS_ESALT (sqlcipher_sha256_tmp_t, sqlcipher_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m24630-pure.cl b/OpenCL/m24630-pure.cl index d1c26a400..fc868004a 100644 --- a/OpenCL/m24630-pure.cl +++ b/OpenCL/m24630-pure.cl @@ -95,7 +95,7 @@ DECLSPEC void hmac_sha512_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVA sha512_transform_vector (w0, w1, w2, w3, w4, w5, w6, w7, digest); } -KERNEL_FQ void m24630_init (KERN_ATTR_TMPS_ESALT (sqlcipher_sha512_tmp_t, sqlcipher_t)) +KERNEL_FQ KERNEL_FA void m24630_init (KERN_ATTR_TMPS_ESALT (sqlcipher_sha512_tmp_t, sqlcipher_t)) { /** * base @@ -199,7 +199,7 @@ KERNEL_FQ void m24630_init (KERN_ATTR_TMPS_ESALT (sqlcipher_sha512_tmp_t, sqlcip } } -KERNEL_FQ void m24630_loop (KERN_ATTR_TMPS_ESALT (sqlcipher_sha512_tmp_t, sqlcipher_t)) +KERNEL_FQ KERNEL_FA void m24630_loop (KERN_ATTR_TMPS_ESALT (sqlcipher_sha512_tmp_t, sqlcipher_t)) { const u64 gid = get_global_id (0); @@ -325,7 +325,7 @@ KERNEL_FQ void m24630_loop (KERN_ATTR_TMPS_ESALT (sqlcipher_sha512_tmp_t, sqlcip } } -KERNEL_FQ void m24630_comp (KERN_ATTR_TMPS_ESALT (sqlcipher_sha512_tmp_t, sqlcipher_t)) +KERNEL_FQ KERNEL_FA void m24630_comp (KERN_ATTR_TMPS_ESALT (sqlcipher_sha512_tmp_t, sqlcipher_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m24700_a0-optimized.cl b/OpenCL/m24700_a0-optimized.cl index 8a351fb6f..107bd2c25 100644 --- a/OpenCL/m24700_a0-optimized.cl +++ b/OpenCL/m24700_a0-optimized.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m24700_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m24700_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -240,15 +240,15 @@ KERNEL_FQ void m24700_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m24700_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m24700_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m24700_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m24700_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m24700_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m24700_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -487,10 +487,10 @@ KERNEL_FQ void m24700_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m24700_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m24700_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m24700_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m24700_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m24700_a0-pure.cl b/OpenCL/m24700_a0-pure.cl index afffe62cf..f714f31d4 100644 --- a/OpenCL/m24700_a0-pure.cl +++ b/OpenCL/m24700_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m24700_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m24700_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -73,7 +73,7 @@ KERNEL_FQ void m24700_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m24700_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m24700_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m24700_a1-optimized.cl b/OpenCL/m24700_a1-optimized.cl index 65f3bd1ac..e6938e04c 100644 --- a/OpenCL/m24700_a1-optimized.cl +++ b/OpenCL/m24700_a1-optimized.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m24700_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m24700_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -297,15 +297,15 @@ KERNEL_FQ void m24700_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m24700_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m24700_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m24700_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m24700_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m24700_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m24700_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -603,10 +603,10 @@ KERNEL_FQ void m24700_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m24700_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m24700_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m24700_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m24700_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m24700_a1-pure.cl b/OpenCL/m24700_a1-pure.cl index 35c81b748..9e2edac7b 100644 --- a/OpenCL/m24700_a1-pure.cl +++ b/OpenCL/m24700_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m24700_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m24700_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -69,7 +69,7 @@ KERNEL_FQ void m24700_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m24700_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m24700_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m24700_a3-optimized.cl b/OpenCL/m24700_a3-optimized.cl index 231f129de..1530b4ee0 100644 --- a/OpenCL/m24700_a3-optimized.cl +++ b/OpenCL/m24700_a3-optimized.cl @@ -473,7 +473,7 @@ DECLSPEC void m24700s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m24700_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m24700_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -526,7 +526,7 @@ KERNEL_FQ void m24700_m04 (KERN_ATTR_BASIC ()) m24700m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m24700_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m24700_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -579,7 +579,7 @@ KERNEL_FQ void m24700_m08 (KERN_ATTR_BASIC ()) m24700m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m24700_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m24700_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -632,7 +632,7 @@ KERNEL_FQ void m24700_m16 (KERN_ATTR_BASIC ()) m24700m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m24700_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m24700_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -685,7 +685,7 @@ KERNEL_FQ void m24700_s04 (KERN_ATTR_BASIC ()) m24700s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m24700_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m24700_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -738,7 +738,7 @@ KERNEL_FQ void m24700_s08 (KERN_ATTR_BASIC ()) m24700s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m24700_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m24700_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m24700_a3-pure.cl b/OpenCL/m24700_a3-pure.cl index 081c2bc22..3becd9709 100644 --- a/OpenCL/m24700_a3-pure.cl +++ b/OpenCL/m24700_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m24700_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m24700_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -82,7 +82,7 @@ KERNEL_FQ void m24700_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m24700_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m24700_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m24800_a0-optimized.cl b/OpenCL/m24800_a0-optimized.cl index 23be925b2..a7e2132a6 100644 --- a/OpenCL/m24800_a0-optimized.cl +++ b/OpenCL/m24800_a0-optimized.cl @@ -105,7 +105,7 @@ DECLSPEC void hmac_sha1_run (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE_A sha1_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m24800_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m24800_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -219,15 +219,15 @@ KERNEL_FQ void m24800_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m24800_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m24800_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m24800_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m24800_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m24800_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m24800_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -353,10 +353,10 @@ KERNEL_FQ void m24800_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m24800_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m24800_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m24800_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m24800_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m24800_a0-pure.cl b/OpenCL/m24800_a0-pure.cl index 512ecec1c..2afaff370 100644 --- a/OpenCL/m24800_a0-pure.cl +++ b/OpenCL/m24800_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m24800_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m24800_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -72,7 +72,7 @@ KERNEL_FQ void m24800_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m24800_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m24800_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m24800_a1-optimized.cl b/OpenCL/m24800_a1-optimized.cl index fe26c52ca..18d96b694 100644 --- a/OpenCL/m24800_a1-optimized.cl +++ b/OpenCL/m24800_a1-optimized.cl @@ -103,7 +103,7 @@ DECLSPEC void hmac_sha1_run (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE_A sha1_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m24800_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m24800_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -269,15 +269,15 @@ KERNEL_FQ void m24800_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m24800_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m24800_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m24800_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m24800_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m24800_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m24800_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -455,10 +455,10 @@ KERNEL_FQ void m24800_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m24800_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m24800_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m24800_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m24800_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m24800_a1-pure.cl b/OpenCL/m24800_a1-pure.cl index a1b2766f7..e427e4ef3 100644 --- a/OpenCL/m24800_a1-pure.cl +++ b/OpenCL/m24800_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m24800_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m24800_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -95,7 +95,7 @@ KERNEL_FQ void m24800_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m24800_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m24800_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m24800_a3-optimized.cl b/OpenCL/m24800_a3-optimized.cl index 80a8c5b2b..adedf6a26 100644 --- a/OpenCL/m24800_a3-optimized.cl +++ b/OpenCL/m24800_a3-optimized.cl @@ -323,7 +323,7 @@ DECLSPEC void m24800s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m24800_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m24800_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -372,7 +372,7 @@ KERNEL_FQ void m24800_m04 (KERN_ATTR_BASIC ()) m24800m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m24800_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m24800_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -421,7 +421,7 @@ KERNEL_FQ void m24800_m08 (KERN_ATTR_BASIC ()) m24800m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m24800_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m24800_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -470,7 +470,7 @@ KERNEL_FQ void m24800_m16 (KERN_ATTR_BASIC ()) m24800m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m24800_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m24800_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -519,7 +519,7 @@ KERNEL_FQ void m24800_s04 (KERN_ATTR_BASIC ()) m24800s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m24800_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m24800_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -568,7 +568,7 @@ KERNEL_FQ void m24800_s08 (KERN_ATTR_BASIC ()) m24800s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m24800_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m24800_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m24800_a3-pure.cl b/OpenCL/m24800_a3-pure.cl index cb76326ec..791eb85ca 100644 --- a/OpenCL/m24800_a3-pure.cl +++ b/OpenCL/m24800_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m24800_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m24800_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -81,7 +81,7 @@ KERNEL_FQ void m24800_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m24800_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m24800_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m24900_a0-optimized.cl b/OpenCL/m24900_a0-optimized.cl index f22a0c59b..0e69cb252 100644 --- a/OpenCL/m24900_a0-optimized.cl +++ b/OpenCL/m24900_a0-optimized.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m24900_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m24900_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -162,15 +162,15 @@ KERNEL_FQ void m24900_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m24900_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m24900_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m24900_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m24900_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m24900_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m24900_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -328,10 +328,10 @@ KERNEL_FQ void m24900_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m24900_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m24900_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m24900_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m24900_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m24900_a1-optimized.cl b/OpenCL/m24900_a1-optimized.cl index 9bff24186..b0315f681 100644 --- a/OpenCL/m24900_a1-optimized.cl +++ b/OpenCL/m24900_a1-optimized.cl @@ -15,7 +15,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m24900_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m24900_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -220,15 +220,15 @@ KERNEL_FQ void m24900_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m24900_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m24900_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m24900_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m24900_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m24900_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m24900_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -445,10 +445,10 @@ KERNEL_FQ void m24900_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m24900_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m24900_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m24900_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m24900_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m24900_a3-optimized.cl b/OpenCL/m24900_a3-optimized.cl index 432dab27b..04bdbe539 100644 --- a/OpenCL/m24900_a3-optimized.cl +++ b/OpenCL/m24900_a3-optimized.cl @@ -310,7 +310,7 @@ DECLSPEC void m24900s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m24900_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m24900_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -359,7 +359,7 @@ KERNEL_FQ void m24900_m04 (KERN_ATTR_BASIC ()) m24900m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m24900_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m24900_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -408,7 +408,7 @@ KERNEL_FQ void m24900_m08 (KERN_ATTR_BASIC ()) m24900m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m24900_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m24900_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -457,7 +457,7 @@ KERNEL_FQ void m24900_m16 (KERN_ATTR_BASIC ()) m24900m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m24900_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m24900_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -506,7 +506,7 @@ KERNEL_FQ void m24900_s04 (KERN_ATTR_BASIC ()) m24900s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m24900_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m24900_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -555,7 +555,7 @@ KERNEL_FQ void m24900_s08 (KERN_ATTR_BASIC ()) m24900s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m24900_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m24900_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m25000-pure.cl b/OpenCL/m25000-pure.cl index a6325c37a..8efb6366c 100644 --- a/OpenCL/m25000-pure.cl +++ b/OpenCL/m25000-pure.cl @@ -59,7 +59,7 @@ typedef struct snmpv3 } snmpv3_t; -KERNEL_FQ void m25000_init (KERN_ATTR_TMPS_ESALT (hmac_md5_tmp_t, snmpv3_t)) +KERNEL_FQ KERNEL_FA void m25000_init (KERN_ATTR_TMPS_ESALT (hmac_md5_tmp_t, snmpv3_t)) { /** * modifier @@ -165,7 +165,7 @@ KERNEL_FQ void m25000_init (KERN_ATTR_TMPS_ESALT (hmac_md5_tmp_t, snmpv3_t)) tmps[gid].h_sha1[4] = SHA1M_E; } -KERNEL_FQ void m25000_loop (KERN_ATTR_TMPS_ESALT (hmac_md5_tmp_t, snmpv3_t)) +KERNEL_FQ KERNEL_FA void m25000_loop (KERN_ATTR_TMPS_ESALT (hmac_md5_tmp_t, snmpv3_t)) { /** * base @@ -337,7 +337,7 @@ KERNEL_FQ void m25000_loop (KERN_ATTR_TMPS_ESALT (hmac_md5_tmp_t, snmpv3_t)) tmps[gid].h_sha1[4] = h_sha1[4]; } -KERNEL_FQ void m25000_comp (KERN_ATTR_TMPS_ESALT (hmac_md5_tmp_t, snmpv3_t)) +KERNEL_FQ KERNEL_FA void m25000_comp (KERN_ATTR_TMPS_ESALT (hmac_md5_tmp_t, snmpv3_t)) { /** * modifier diff --git a/OpenCL/m25100-pure.cl b/OpenCL/m25100-pure.cl index 63fdebd20..a8555530c 100644 --- a/OpenCL/m25100-pure.cl +++ b/OpenCL/m25100-pure.cl @@ -54,7 +54,7 @@ typedef struct snmpv3 } snmpv3_t; -KERNEL_FQ void m25100_init (KERN_ATTR_TMPS_ESALT (hmac_md5_tmp_t, snmpv3_t)) +KERNEL_FQ KERNEL_FA void m25100_init (KERN_ATTR_TMPS_ESALT (hmac_md5_tmp_t, snmpv3_t)) { /** * modifier @@ -131,7 +131,7 @@ KERNEL_FQ void m25100_init (KERN_ATTR_TMPS_ESALT (hmac_md5_tmp_t, snmpv3_t)) tmps[gid].h[3] = MD5M_D; } -KERNEL_FQ void m25100_loop (KERN_ATTR_TMPS_ESALT (hmac_md5_tmp_t, snmpv3_t)) +KERNEL_FQ KERNEL_FA void m25100_loop (KERN_ATTR_TMPS_ESALT (hmac_md5_tmp_t, snmpv3_t)) { /** * base @@ -228,7 +228,7 @@ KERNEL_FQ void m25100_loop (KERN_ATTR_TMPS_ESALT (hmac_md5_tmp_t, snmpv3_t)) tmps[gid].h[3] = h[3]; } -KERNEL_FQ void m25100_comp (KERN_ATTR_TMPS_ESALT (hmac_md5_tmp_t, snmpv3_t)) +KERNEL_FQ KERNEL_FA void m25100_comp (KERN_ATTR_TMPS_ESALT (hmac_md5_tmp_t, snmpv3_t)) { /** * modifier diff --git a/OpenCL/m25200-pure.cl b/OpenCL/m25200-pure.cl index 82ae963dc..e4bcea075 100644 --- a/OpenCL/m25200-pure.cl +++ b/OpenCL/m25200-pure.cl @@ -54,7 +54,7 @@ typedef struct snmpv3 } snmpv3_t; -KERNEL_FQ void m25200_init (KERN_ATTR_TMPS_ESALT (hmac_sha1_tmp_t, snmpv3_t)) +KERNEL_FQ KERNEL_FA void m25200_init (KERN_ATTR_TMPS_ESALT (hmac_sha1_tmp_t, snmpv3_t)) { /** * modifier @@ -132,7 +132,7 @@ KERNEL_FQ void m25200_init (KERN_ATTR_TMPS_ESALT (hmac_sha1_tmp_t, snmpv3_t)) tmps[gid].h[4] = SHA1M_E; } -KERNEL_FQ void m25200_loop (KERN_ATTR_TMPS_ESALT (hmac_sha1_tmp_t, snmpv3_t)) +KERNEL_FQ KERNEL_FA void m25200_loop (KERN_ATTR_TMPS_ESALT (hmac_sha1_tmp_t, snmpv3_t)) { /** * base @@ -231,7 +231,7 @@ KERNEL_FQ void m25200_loop (KERN_ATTR_TMPS_ESALT (hmac_sha1_tmp_t, snmpv3_t)) tmps[gid].h[4] = h[4]; } -KERNEL_FQ void m25200_comp (KERN_ATTR_TMPS_ESALT (hmac_sha1_tmp_t, snmpv3_t)) +KERNEL_FQ KERNEL_FA void m25200_comp (KERN_ATTR_TMPS_ESALT (hmac_sha1_tmp_t, snmpv3_t)) { /** * modifier diff --git a/OpenCL/m25300-pure.cl b/OpenCL/m25300-pure.cl index b7f6ebceb..04c2ca6f1 100644 --- a/OpenCL/m25300-pure.cl +++ b/OpenCL/m25300-pure.cl @@ -23,7 +23,7 @@ typedef struct office2016_tmp } office2016_tmp_t; -KERNEL_FQ void m25300_init (KERN_ATTR_TMPS (office2016_tmp_t)) +KERNEL_FQ KERNEL_FA void m25300_init (KERN_ATTR_TMPS (office2016_tmp_t)) { /** * base @@ -53,7 +53,7 @@ KERNEL_FQ void m25300_init (KERN_ATTR_TMPS (office2016_tmp_t)) tmps[gid].out[7] = ctx.h[7]; } -KERNEL_FQ void m25300_loop (KERN_ATTR_TMPS (office2016_tmp_t)) +KERNEL_FQ KERNEL_FA void m25300_loop (KERN_ATTR_TMPS (office2016_tmp_t)) { const u64 gid = get_global_id (0); @@ -163,7 +163,7 @@ KERNEL_FQ void m25300_loop (KERN_ATTR_TMPS (office2016_tmp_t)) unpack64v (tmps, out, gid, 7, t7); } -KERNEL_FQ void m25300_comp (KERN_ATTR_TMPS (office2016_tmp_t)) +KERNEL_FQ KERNEL_FA void m25300_comp (KERN_ATTR_TMPS (office2016_tmp_t)) { const u64 gid = get_global_id (0); diff --git a/OpenCL/m25400-pure.cl b/OpenCL/m25400-pure.cl index 6ad2d1034..ae10ebc42 100644 --- a/OpenCL/m25400-pure.cl +++ b/OpenCL/m25400-pure.cl @@ -49,7 +49,7 @@ typedef struct pdf14_tmp } pdf14_tmp_t; -KERNEL_FQ void m25400_init (KERN_ATTR_TMPS_ESALT (pdf14_tmp_t, pdf_t)) +KERNEL_FQ KERNEL_FA void m25400_init (KERN_ATTR_TMPS_ESALT (pdf14_tmp_t, pdf_t)) { /** * base @@ -191,7 +191,7 @@ KERNEL_FQ void m25400_init (KERN_ATTR_TMPS_ESALT (pdf14_tmp_t, pdf_t)) tmps[gid].out[7] = 0; // we only need the size of out for the plaintext check } -KERNEL_FQ void m25400_loop (KERN_ATTR_TMPS_ESALT (pdf14_tmp_t, pdf_t)) +KERNEL_FQ KERNEL_FA void m25400_loop (KERN_ATTR_TMPS_ESALT (pdf14_tmp_t, pdf_t)) { /** * base @@ -315,7 +315,7 @@ KERNEL_FQ void m25400_loop (KERN_ATTR_TMPS_ESALT (pdf14_tmp_t, pdf_t)) tmps[gid].digest[3] = digest[3]; } -KERNEL_FQ void m25400_comp (KERN_ATTR_TMPS_ESALT (pdf14_tmp_t, pdf_t)) +KERNEL_FQ KERNEL_FA void m25400_comp (KERN_ATTR_TMPS_ESALT (pdf14_tmp_t, pdf_t)) { const u32 digest[4] = { diff --git a/OpenCL/m25500-pure.cl b/OpenCL/m25500-pure.cl index f5c72c3de..9bb47f474 100644 --- a/OpenCL/m25500-pure.cl +++ b/OpenCL/m25500-pure.cl @@ -81,7 +81,7 @@ DECLSPEC void hmac_sha256_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVA sha256_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m25500_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, pbkdf2_sha256_aes_gcm_t)) +KERNEL_FQ KERNEL_FA void m25500_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, pbkdf2_sha256_aes_gcm_t)) { /** * base @@ -165,7 +165,7 @@ KERNEL_FQ void m25500_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, pbkdf2_sh } } -KERNEL_FQ void m25500_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, pbkdf2_sha256_aes_gcm_t)) +KERNEL_FQ KERNEL_FA void m25500_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, pbkdf2_sha256_aes_gcm_t)) { const u64 gid = get_global_id (0); @@ -271,7 +271,7 @@ KERNEL_FQ void m25500_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, pbkdf2_sh } } -KERNEL_FQ void m25500_comp (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, pbkdf2_sha256_aes_gcm_t)) +KERNEL_FQ KERNEL_FA void m25500_comp (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, pbkdf2_sha256_aes_gcm_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -407,7 +407,7 @@ KERNEL_FQ void m25500_comp (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, pbkdf2_sh /* Optimized GCM: No real speed benefit. For documentation purpose -KERNEL_FQ void m25500_comp (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, pbkdf2_sha256_aes_gcm_t)) +KERNEL_FQ KERNEL_FA void m25500_comp (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, pbkdf2_sha256_aes_gcm_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m25600-pure.cl b/OpenCL/m25600-pure.cl index 98151b7bf..80f9eb9d7 100644 --- a/OpenCL/m25600-pure.cl +++ b/OpenCL/m25600-pure.cl @@ -447,7 +447,7 @@ DECLSPEC u32 u16_bin_to_u32_hex (const u32 v) | ((v1 < 10) ? '0' + v1 : 'a' - 10 + v1) << 0; } -KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m25600_init (KERN_ATTR_TMPS (bcrypt_tmp_t)) +KERNEL_FQ KERNEL_FA void m25600_init (KERN_ATTR_TMPS (bcrypt_tmp_t)) { /** * base @@ -686,7 +686,7 @@ KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m25600_init (KERN_ATTR_TMPS } } -KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m25600_loop (KERN_ATTR_TMPS (bcrypt_tmp_t)) +KERNEL_FQ KERNEL_FA void m25600_loop (KERN_ATTR_TMPS (bcrypt_tmp_t)) { /** * base @@ -889,7 +889,7 @@ KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m25600_loop (KERN_ATTR_TMPS } } -KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m25600_comp (KERN_ATTR_TMPS (bcrypt_tmp_t)) +KERNEL_FQ KERNEL_FA void m25600_comp (KERN_ATTR_TMPS (bcrypt_tmp_t)) { /** * base diff --git a/OpenCL/m25700_a0-optimized.cl b/OpenCL/m25700_a0-optimized.cl index a83272714..82d7e8924 100644 --- a/OpenCL/m25700_a0-optimized.cl +++ b/OpenCL/m25700_a0-optimized.cl @@ -51,7 +51,7 @@ DECLSPEC u32 MurmurHash (const u32 seed, PRIVATE_AS const u32 *w, const u32 pw_l return hash; } -KERNEL_FQ void m25700_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m25700_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -108,15 +108,15 @@ KERNEL_FQ void m25700_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m25700_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m25700_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m25700_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m25700_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m25700_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m25700_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -185,10 +185,10 @@ KERNEL_FQ void m25700_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m25700_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m25700_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m25700_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m25700_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m25700_a1-optimized.cl b/OpenCL/m25700_a1-optimized.cl index 029a79506..163ed4741 100644 --- a/OpenCL/m25700_a1-optimized.cl +++ b/OpenCL/m25700_a1-optimized.cl @@ -50,7 +50,7 @@ DECLSPEC u32 MurmurHash (const u32 seed, PRIVATE_AS const u32 *w, const u32 pw_l return hash; } -KERNEL_FQ void m25700_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m25700_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -163,15 +163,15 @@ KERNEL_FQ void m25700_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m25700_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m25700_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m25700_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m25700_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m25700_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m25700_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -296,10 +296,10 @@ KERNEL_FQ void m25700_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m25700_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m25700_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m25700_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m25700_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m25700_a3-optimized.cl b/OpenCL/m25700_a3-optimized.cl index 69b96f987..6541c12a8 100644 --- a/OpenCL/m25700_a3-optimized.cl +++ b/OpenCL/m25700_a3-optimized.cl @@ -182,7 +182,7 @@ DECLSPEC void m25700s (PRIVATE_AS const u32 *data, const u32 pw_len, KERN_ATTR_F } } -KERNEL_FQ void m25700_m04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m25700_m04 (KERN_ATTR_VECTOR ()) { /** * base @@ -222,7 +222,7 @@ KERNEL_FQ void m25700_m04 (KERN_ATTR_VECTOR ()) m25700m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m25700_m08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m25700_m08 (KERN_ATTR_VECTOR ()) { /** * base @@ -262,7 +262,7 @@ KERNEL_FQ void m25700_m08 (KERN_ATTR_VECTOR ()) m25700m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m25700_m16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m25700_m16 (KERN_ATTR_VECTOR ()) { /** * base @@ -302,7 +302,7 @@ KERNEL_FQ void m25700_m16 (KERN_ATTR_VECTOR ()) m25700m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m25700_s04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m25700_s04 (KERN_ATTR_VECTOR ()) { /** * base @@ -342,7 +342,7 @@ KERNEL_FQ void m25700_s04 (KERN_ATTR_VECTOR ()) m25700s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m25700_s08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m25700_s08 (KERN_ATTR_VECTOR ()) { /** * base @@ -382,7 +382,7 @@ KERNEL_FQ void m25700_s08 (KERN_ATTR_VECTOR ()) m25700s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m25700_s16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m25700_s16 (KERN_ATTR_VECTOR ()) { /** * base diff --git a/OpenCL/m25800-pure.cl b/OpenCL/m25800-pure.cl index 2c3d581ec..9bfa5583e 100644 --- a/OpenCL/m25800-pure.cl +++ b/OpenCL/m25800-pure.cl @@ -443,7 +443,7 @@ DECLSPEC u32 u16_bin_to_u32_hex (const u32 v) | ((v1 < 10) ? '0' + v1 : 'a' - 10 + v1) << 0; } -KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m25800_init (KERN_ATTR_TMPS (bcrypt_tmp_t)) +KERNEL_FQ KERNEL_FA void m25800_init (KERN_ATTR_TMPS (bcrypt_tmp_t)) { /** * base @@ -685,7 +685,7 @@ KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m25800_init (KERN_ATTR_TMPS } } -KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m25800_loop (KERN_ATTR_TMPS (bcrypt_tmp_t)) +KERNEL_FQ KERNEL_FA void m25800_loop (KERN_ATTR_TMPS (bcrypt_tmp_t)) { /** * base @@ -888,7 +888,7 @@ KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m25800_loop (KERN_ATTR_TMPS } } -KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m25800_comp (KERN_ATTR_TMPS (bcrypt_tmp_t)) +KERNEL_FQ KERNEL_FA void m25800_comp (KERN_ATTR_TMPS (bcrypt_tmp_t)) { /** * base diff --git a/OpenCL/m25900-pure.cl b/OpenCL/m25900-pure.cl index 00c2637ed..04b66242b 100644 --- a/OpenCL/m25900-pure.cl +++ b/OpenCL/m25900-pure.cl @@ -100,7 +100,7 @@ DECLSPEC void aes128_encrypt_cbc (PRIVATE_AS const u32 *aes_ks, PRIVATE_AS u32 * aes_iv[3] = out[3]; } -KERNEL_FQ void m25900_init (KERN_ATTR_TMPS (pbkdf2_sha256_tmp_t)) +KERNEL_FQ KERNEL_FA void m25900_init (KERN_ATTR_TMPS (pbkdf2_sha256_tmp_t)) { /** * base @@ -184,7 +184,7 @@ KERNEL_FQ void m25900_init (KERN_ATTR_TMPS (pbkdf2_sha256_tmp_t)) } } -KERNEL_FQ void m25900_loop (KERN_ATTR_TMPS (pbkdf2_sha256_tmp_t)) +KERNEL_FQ KERNEL_FA void m25900_loop (KERN_ATTR_TMPS (pbkdf2_sha256_tmp_t)) { const u64 gid = get_global_id(0); @@ -290,7 +290,7 @@ KERNEL_FQ void m25900_loop (KERN_ATTR_TMPS (pbkdf2_sha256_tmp_t)) } } -KERNEL_FQ void m25900_comp (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, blocks_t)) +KERNEL_FQ KERNEL_FA void m25900_comp (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, blocks_t)) { /** * base diff --git a/OpenCL/m26000_a0-pure.cl b/OpenCL/m26000_a0-pure.cl index adaf0100d..e5eb380e7 100644 --- a/OpenCL/m26000_a0-pure.cl +++ b/OpenCL/m26000_a0-pure.cl @@ -23,7 +23,7 @@ typedef struct mozilla_3des } mozilla_3des_t; -KERNEL_FQ void m26000_mxx (KERN_ATTR_RULES_ESALT (mozilla_3des_t)) +KERNEL_FQ KERNEL_FA void m26000_mxx (KERN_ATTR_RULES_ESALT (mozilla_3des_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -365,7 +365,7 @@ KERNEL_FQ void m26000_mxx (KERN_ATTR_RULES_ESALT (mozilla_3des_t)) } } -KERNEL_FQ void m26000_sxx (KERN_ATTR_RULES_ESALT (mozilla_3des_t)) +KERNEL_FQ KERNEL_FA void m26000_sxx (KERN_ATTR_RULES_ESALT (mozilla_3des_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m26000_a1-pure.cl b/OpenCL/m26000_a1-pure.cl index 577bbdc08..5f178d8b5 100644 --- a/OpenCL/m26000_a1-pure.cl +++ b/OpenCL/m26000_a1-pure.cl @@ -21,7 +21,7 @@ typedef struct mozilla_3des } mozilla_3des_t; -KERNEL_FQ void m26000_mxx (KERN_ATTR_ESALT (mozilla_3des_t)) +KERNEL_FQ KERNEL_FA void m26000_mxx (KERN_ATTR_ESALT (mozilla_3des_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -388,7 +388,7 @@ KERNEL_FQ void m26000_mxx (KERN_ATTR_ESALT (mozilla_3des_t)) } } -KERNEL_FQ void m26000_sxx (KERN_ATTR_ESALT (mozilla_3des_t)) +KERNEL_FQ KERNEL_FA void m26000_sxx (KERN_ATTR_ESALT (mozilla_3des_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m26000_a3-pure.cl b/OpenCL/m26000_a3-pure.cl index b7993154b..77d395de6 100644 --- a/OpenCL/m26000_a3-pure.cl +++ b/OpenCL/m26000_a3-pure.cl @@ -21,7 +21,7 @@ typedef struct mozilla_3des } mozilla_3des_t; -KERNEL_FQ void m26000_mxx (KERN_ATTR_VECTOR_ESALT (mozilla_3des_t)) +KERNEL_FQ KERNEL_FA void m26000_mxx (KERN_ATTR_VECTOR_ESALT (mozilla_3des_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -374,7 +374,7 @@ KERNEL_FQ void m26000_mxx (KERN_ATTR_VECTOR_ESALT (mozilla_3des_t)) } } -KERNEL_FQ void m26000_sxx (KERN_ATTR_VECTOR_ESALT (mozilla_3des_t)) +KERNEL_FQ KERNEL_FA void m26000_sxx (KERN_ATTR_VECTOR_ESALT (mozilla_3des_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m26100-pure.cl b/OpenCL/m26100-pure.cl index 83cba94e4..03f7dd0e7 100644 --- a/OpenCL/m26100-pure.cl +++ b/OpenCL/m26100-pure.cl @@ -78,7 +78,7 @@ DECLSPEC void hmac_sha256_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVA sha256_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m26100_init (KERN_ATTR_TMPS_ESALT (mozilla_aes_tmp_t, mozilla_aes_t)) +KERNEL_FQ KERNEL_FA void m26100_init (KERN_ATTR_TMPS_ESALT (mozilla_aes_tmp_t, mozilla_aes_t)) { /** * base @@ -203,7 +203,7 @@ KERNEL_FQ void m26100_init (KERN_ATTR_TMPS_ESALT (mozilla_aes_tmp_t, mozilla_aes } } -KERNEL_FQ void m26100_loop (KERN_ATTR_TMPS_ESALT (mozilla_aes_tmp_t, mozilla_aes_t)) +KERNEL_FQ KERNEL_FA void m26100_loop (KERN_ATTR_TMPS_ESALT (mozilla_aes_tmp_t, mozilla_aes_t)) { const u64 gid = get_global_id (0); @@ -309,7 +309,7 @@ KERNEL_FQ void m26100_loop (KERN_ATTR_TMPS_ESALT (mozilla_aes_tmp_t, mozilla_aes } } -KERNEL_FQ void m26100_comp (KERN_ATTR_TMPS_ESALT (mozilla_aes_tmp_t, mozilla_aes_t)) +KERNEL_FQ KERNEL_FA void m26100_comp (KERN_ATTR_TMPS_ESALT (mozilla_aes_tmp_t, mozilla_aes_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m26200_a0-pure.cl b/OpenCL/m26200_a0-pure.cl index b38ae40bf..e37a59969 100644 --- a/OpenCL/m26200_a0-pure.cl +++ b/OpenCL/m26200_a0-pure.cl @@ -35,7 +35,7 @@ CONSTANT_VK u32a PE_CONST[256] = 17408, 33985, 34177, 17728, 34561, 18368, 18048, 34369, 33281, 17088, 17280, 33601, 16640, 33217, 32897, 16448 }; -KERNEL_FQ void m26200_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m26200_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -128,7 +128,7 @@ KERNEL_FQ void m26200_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m26200_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m26200_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m26200_a1-pure.cl b/OpenCL/m26200_a1-pure.cl index 3b84dfba5..d22b2e009 100644 --- a/OpenCL/m26200_a1-pure.cl +++ b/OpenCL/m26200_a1-pure.cl @@ -33,7 +33,7 @@ CONSTANT_VK u32a PE_CONST[256] = 17408, 33985, 34177, 17728, 34561, 18368, 18048, 34369, 33281, 17088, 17280, 33601, 16640, 33217, 32897, 16448 }; -KERNEL_FQ void m26200_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m26200_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -193,7 +193,7 @@ KERNEL_FQ void m26200_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m26200_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m26200_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m26200_a3-pure.cl b/OpenCL/m26200_a3-pure.cl index 447771260..5bc2a9cc1 100644 --- a/OpenCL/m26200_a3-pure.cl +++ b/OpenCL/m26200_a3-pure.cl @@ -33,7 +33,7 @@ CONSTANT_VK u32a PE_CONST[256] = 17408, 33985, 34177, 17728, 34561, 18368, 18048, 34369, 33281, 17088, 17280, 33601, 16640, 33217, 32897, 16448 }; -KERNEL_FQ void m26200_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m26200_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -137,7 +137,7 @@ KERNEL_FQ void m26200_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m26200_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m26200_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m26300_a0-pure.cl b/OpenCL/m26300_a0-pure.cl index 2020035b1..3f590d5f0 100644 --- a/OpenCL/m26300_a0-pure.cl +++ b/OpenCL/m26300_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha256.cl) #endif -KERNEL_FQ void m26300_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m26300_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -92,7 +92,7 @@ KERNEL_FQ void m26300_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m26300_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m26300_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m26300_a1-pure.cl b/OpenCL/m26300_a1-pure.cl index cf0ab137c..85a45006f 100644 --- a/OpenCL/m26300_a1-pure.cl +++ b/OpenCL/m26300_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha256.cl) #endif -KERNEL_FQ void m26300_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m26300_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -86,7 +86,7 @@ KERNEL_FQ void m26300_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m26300_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m26300_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m26300_a3-pure.cl b/OpenCL/m26300_a3-pure.cl index b4224857b..c2f8ba348 100644 --- a/OpenCL/m26300_a3-pure.cl +++ b/OpenCL/m26300_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha256.cl) #endif -KERNEL_FQ void m26300_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m26300_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -103,7 +103,7 @@ KERNEL_FQ void m26300_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m26300_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m26300_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m26401_a0-optimized.cl b/OpenCL/m26401_a0-optimized.cl index e22fe2fbe..3c4958b6c 100644 --- a/OpenCL/m26401_a0-optimized.cl +++ b/OpenCL/m26401_a0-optimized.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_cipher_aes.cl) #endif -KERNEL_FQ void m26401_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m26401_m04 (KERN_ATTR_RULES ()) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -142,15 +142,15 @@ KERNEL_FQ void m26401_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m26401_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m26401_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m26401_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m26401_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m26401_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m26401_s04 (KERN_ATTR_RULES ()) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -288,10 +288,10 @@ KERNEL_FQ void m26401_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m26401_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m26401_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m26401_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m26401_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m26401_a1-optimized.cl b/OpenCL/m26401_a1-optimized.cl index 8138ab9a4..105d103cf 100644 --- a/OpenCL/m26401_a1-optimized.cl +++ b/OpenCL/m26401_a1-optimized.cl @@ -15,7 +15,7 @@ #include M2S(INCLUDE_PATH/inc_cipher_aes.cl) #endif -KERNEL_FQ void m26401_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m26401_m04 (KERN_ATTR_BASIC ()) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -194,15 +194,15 @@ KERNEL_FQ void m26401_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m26401_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m26401_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m26401_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m26401_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m26401_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m26401_s04 (KERN_ATTR_BASIC ()) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -393,10 +393,10 @@ KERNEL_FQ void m26401_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m26401_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m26401_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m26401_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m26401_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m26401_a3-optimized.cl b/OpenCL/m26401_a3-optimized.cl index c2bbcaadd..c756216ae 100644 --- a/OpenCL/m26401_a3-optimized.cl +++ b/OpenCL/m26401_a3-optimized.cl @@ -136,7 +136,7 @@ DECLSPEC void m26401s (SHM_TYPE u32a *s_te0, SHM_TYPE u32a *s_te1, SHM_TYPE u32a } } -KERNEL_FQ void m26401_m04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m26401_m04 (KERN_ATTR_VECTOR ()) { const u64 lid = get_local_id (0); const u64 gid = get_global_id (0); @@ -227,7 +227,7 @@ KERNEL_FQ void m26401_m04 (KERN_ATTR_VECTOR ()) m26401m (s_te0, s_te1, s_te2, s_te3, s_te4, s_td0, s_td1, s_td2, s_td3, s_td4, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m26401_m08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m26401_m08 (KERN_ATTR_VECTOR ()) { const u64 lid = get_local_id (0); const u64 gid = get_global_id (0); @@ -318,11 +318,11 @@ KERNEL_FQ void m26401_m08 (KERN_ATTR_VECTOR ()) m26401m (s_te0, s_te1, s_te2, s_te3, s_te4, s_td0, s_td1, s_td2, s_td3, s_td4, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m26401_m16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m26401_m16 (KERN_ATTR_VECTOR ()) { } -KERNEL_FQ void m26401_s04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m26401_s04 (KERN_ATTR_VECTOR ()) { const u64 lid = get_local_id (0); const u64 gid = get_global_id (0); @@ -413,7 +413,7 @@ KERNEL_FQ void m26401_s04 (KERN_ATTR_VECTOR ()) m26401s (s_te0, s_te1, s_te2, s_te3, s_te4, s_td0, s_td1, s_td2, s_td3, s_td4, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m26401_s08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m26401_s08 (KERN_ATTR_VECTOR ()) { const u64 lid = get_local_id (0); const u64 gid = get_global_id (0); @@ -504,6 +504,6 @@ KERNEL_FQ void m26401_s08 (KERN_ATTR_VECTOR ()) m26401s (s_te0, s_te1, s_te2, s_te3, s_te4, s_td0, s_td1, s_td2, s_td3, s_td4, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m26401_s16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m26401_s16 (KERN_ATTR_VECTOR ()) { } diff --git a/OpenCL/m26402_a0-optimized.cl b/OpenCL/m26402_a0-optimized.cl index 0b27c2baa..bfc1e3a0c 100644 --- a/OpenCL/m26402_a0-optimized.cl +++ b/OpenCL/m26402_a0-optimized.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_cipher_aes.cl) #endif -KERNEL_FQ void m26402_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m26402_m04 (KERN_ATTR_RULES ()) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -144,15 +144,15 @@ KERNEL_FQ void m26402_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m26402_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m26402_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m26402_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m26402_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m26402_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m26402_s04 (KERN_ATTR_RULES ()) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -292,10 +292,10 @@ KERNEL_FQ void m26402_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m26402_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m26402_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m26402_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m26402_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m26402_a1-optimized.cl b/OpenCL/m26402_a1-optimized.cl index 68b788251..bc8fec95b 100644 --- a/OpenCL/m26402_a1-optimized.cl +++ b/OpenCL/m26402_a1-optimized.cl @@ -15,7 +15,7 @@ #include M2S(INCLUDE_PATH/inc_cipher_aes.cl) #endif -KERNEL_FQ void m26402_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m26402_m04 (KERN_ATTR_BASIC ()) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -200,15 +200,15 @@ KERNEL_FQ void m26402_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m26402_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m26402_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m26402_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m26402_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m26402_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m26402_s04 (KERN_ATTR_BASIC ()) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -405,10 +405,10 @@ KERNEL_FQ void m26402_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m26402_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m26402_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m26402_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m26402_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m26402_a3-optimized.cl b/OpenCL/m26402_a3-optimized.cl index add930bec..5a4e0f7e4 100644 --- a/OpenCL/m26402_a3-optimized.cl +++ b/OpenCL/m26402_a3-optimized.cl @@ -140,7 +140,7 @@ DECLSPEC void m26402s (SHM_TYPE u32a *s_te0, SHM_TYPE u32a *s_te1, SHM_TYPE u32a } } -KERNEL_FQ void m26402_m04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m26402_m04 (KERN_ATTR_VECTOR ()) { const u64 lid = get_local_id (0); const u64 gid = get_global_id (0); @@ -231,7 +231,7 @@ KERNEL_FQ void m26402_m04 (KERN_ATTR_VECTOR ()) m26402m (s_te0, s_te1, s_te2, s_te3, s_te4, s_td0, s_td1, s_td2, s_td3, s_td4, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m26402_m08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m26402_m08 (KERN_ATTR_VECTOR ()) { const u64 lid = get_local_id (0); const u64 gid = get_global_id (0); @@ -322,11 +322,11 @@ KERNEL_FQ void m26402_m08 (KERN_ATTR_VECTOR ()) m26402m (s_te0, s_te1, s_te2, s_te3, s_te4, s_td0, s_td1, s_td2, s_td3, s_td4, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m26402_m16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m26402_m16 (KERN_ATTR_VECTOR ()) { } -KERNEL_FQ void m26402_s04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m26402_s04 (KERN_ATTR_VECTOR ()) { const u64 lid = get_local_id (0); const u64 gid = get_global_id (0); @@ -417,7 +417,7 @@ KERNEL_FQ void m26402_s04 (KERN_ATTR_VECTOR ()) m26402s (s_te0, s_te1, s_te2, s_te3, s_te4, s_td0, s_td1, s_td2, s_td3, s_td4, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m26402_s08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m26402_s08 (KERN_ATTR_VECTOR ()) { const u64 lid = get_local_id (0); const u64 gid = get_global_id (0); @@ -508,6 +508,6 @@ KERNEL_FQ void m26402_s08 (KERN_ATTR_VECTOR ()) m26402s (s_te0, s_te1, s_te2, s_te3, s_te4, s_td0, s_td1, s_td2, s_td3, s_td4, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m26402_s16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m26402_s16 (KERN_ATTR_VECTOR ()) { } diff --git a/OpenCL/m26403_a0-optimized.cl b/OpenCL/m26403_a0-optimized.cl index 1fae8e779..ea019a16d 100644 --- a/OpenCL/m26403_a0-optimized.cl +++ b/OpenCL/m26403_a0-optimized.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_cipher_aes.cl) #endif -KERNEL_FQ void m26403_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m26403_m04 (KERN_ATTR_RULES ()) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -146,15 +146,15 @@ KERNEL_FQ void m26403_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m26403_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m26403_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m26403_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m26403_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m26403_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m26403_s04 (KERN_ATTR_RULES ()) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -296,10 +296,10 @@ KERNEL_FQ void m26403_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m26403_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m26403_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m26403_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m26403_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m26403_a1-optimized.cl b/OpenCL/m26403_a1-optimized.cl index 107ba9218..b8502d9c3 100644 --- a/OpenCL/m26403_a1-optimized.cl +++ b/OpenCL/m26403_a1-optimized.cl @@ -15,7 +15,7 @@ #include M2S(INCLUDE_PATH/inc_cipher_aes.cl) #endif -KERNEL_FQ void m26403_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m26403_m04 (KERN_ATTR_BASIC ()) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -206,15 +206,15 @@ KERNEL_FQ void m26403_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m26403_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m26403_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m26403_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m26403_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m26403_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m26403_s04 (KERN_ATTR_BASIC ()) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -417,10 +417,10 @@ KERNEL_FQ void m26403_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m26403_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m26403_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m26403_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m26403_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m26403_a3-optimized.cl b/OpenCL/m26403_a3-optimized.cl index 76de06b78..b123f3e15 100644 --- a/OpenCL/m26403_a3-optimized.cl +++ b/OpenCL/m26403_a3-optimized.cl @@ -144,7 +144,7 @@ DECLSPEC void m26403s (SHM_TYPE u32a *s_te0, SHM_TYPE u32a *s_te1, SHM_TYPE u32a } } -KERNEL_FQ void m26403_m04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m26403_m04 (KERN_ATTR_VECTOR ()) { const u64 lid = get_local_id (0); const u64 gid = get_global_id (0); @@ -235,7 +235,7 @@ KERNEL_FQ void m26403_m04 (KERN_ATTR_VECTOR ()) m26403m (s_te0, s_te1, s_te2, s_te3, s_te4, s_td0, s_td1, s_td2, s_td3, s_td4, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m26403_m08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m26403_m08 (KERN_ATTR_VECTOR ()) { const u64 lid = get_local_id (0); const u64 gid = get_global_id (0); @@ -326,7 +326,7 @@ KERNEL_FQ void m26403_m08 (KERN_ATTR_VECTOR ()) m26403m (s_te0, s_te1, s_te2, s_te3, s_te4, s_td0, s_td1, s_td2, s_td3, s_td4, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m26403_m16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m26403_m16 (KERN_ATTR_VECTOR ()) { const u64 lid = get_local_id (0); const u64 gid = get_global_id (0); @@ -417,7 +417,7 @@ KERNEL_FQ void m26403_m16 (KERN_ATTR_VECTOR ()) m26403m (s_te0, s_te1, s_te2, s_te3, s_te4, s_td0, s_td1, s_td2, s_td3, s_td4, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m26403_s04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m26403_s04 (KERN_ATTR_VECTOR ()) { const u64 lid = get_local_id (0); const u64 gid = get_global_id (0); @@ -508,7 +508,7 @@ KERNEL_FQ void m26403_s04 (KERN_ATTR_VECTOR ()) m26403s (s_te0, s_te1, s_te2, s_te3, s_te4, s_td0, s_td1, s_td2, s_td3, s_td4, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m26403_s08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m26403_s08 (KERN_ATTR_VECTOR ()) { const u64 lid = get_local_id (0); const u64 gid = get_global_id (0); @@ -599,7 +599,7 @@ KERNEL_FQ void m26403_s08 (KERN_ATTR_VECTOR ()) m26403s (s_te0, s_te1, s_te2, s_te3, s_te4, s_td0, s_td1, s_td2, s_td3, s_td4, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m26403_s16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m26403_s16 (KERN_ATTR_VECTOR ()) { const u64 lid = get_local_id (0); const u64 gid = get_global_id (0); diff --git a/OpenCL/m26500-pure.cl b/OpenCL/m26500-pure.cl index 7e73390e4..7061ec738 100644 --- a/OpenCL/m26500-pure.cl +++ b/OpenCL/m26500-pure.cl @@ -73,7 +73,7 @@ DECLSPEC void hmac_sha1_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE sha1_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m26500_init (KERN_ATTR_TMPS_ESALT (iphone_passcode_tmp_t, iphone_passcode_t)) +KERNEL_FQ KERNEL_FA void m26500_init (KERN_ATTR_TMPS_ESALT (iphone_passcode_tmp_t, iphone_passcode_t)) { /** * base @@ -167,7 +167,7 @@ KERNEL_FQ void m26500_init (KERN_ATTR_TMPS_ESALT (iphone_passcode_tmp_t, iphone_ tmps[gid].iv[3] = 0; } -KERNEL_FQ void m26500_loop (KERN_ATTR_TMPS_ESALT (iphone_passcode_tmp_t, iphone_passcode_t)) +KERNEL_FQ KERNEL_FA void m26500_loop (KERN_ATTR_TMPS_ESALT (iphone_passcode_tmp_t, iphone_passcode_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -298,7 +298,7 @@ KERNEL_FQ void m26500_loop (KERN_ATTR_TMPS_ESALT (iphone_passcode_tmp_t, iphone_ tmps[gid].iv[3] = iv[3]; } -KERNEL_FQ void m26500_comp (KERN_ATTR_TMPS_ESALT (iphone_passcode_tmp_t, iphone_passcode_t)) +KERNEL_FQ KERNEL_FA void m26500_comp (KERN_ATTR_TMPS_ESALT (iphone_passcode_tmp_t, iphone_passcode_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m26600-pure.cl b/OpenCL/m26600-pure.cl index 6f1d1f4f4..0ed264a28 100644 --- a/OpenCL/m26600-pure.cl +++ b/OpenCL/m26600-pure.cl @@ -81,7 +81,7 @@ DECLSPEC void hmac_sha256_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVA sha256_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m26600_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, pbkdf2_sha256_aes_gcm_t)) +KERNEL_FQ KERNEL_FA void m26600_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, pbkdf2_sha256_aes_gcm_t)) { /** * base @@ -165,7 +165,7 @@ KERNEL_FQ void m26600_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, pbkdf2_sh } } -KERNEL_FQ void m26600_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, pbkdf2_sha256_aes_gcm_t)) +KERNEL_FQ KERNEL_FA void m26600_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, pbkdf2_sha256_aes_gcm_t)) { const u64 gid = get_global_id (0); @@ -271,7 +271,7 @@ KERNEL_FQ void m26600_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, pbkdf2_sh } } -KERNEL_FQ void m26600_comp (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, pbkdf2_sha256_aes_gcm_t)) +KERNEL_FQ KERNEL_FA void m26600_comp (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, pbkdf2_sha256_aes_gcm_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m26610-pure.cl b/OpenCL/m26610-pure.cl index abd476395..8ca397629 100644 --- a/OpenCL/m26610-pure.cl +++ b/OpenCL/m26610-pure.cl @@ -81,7 +81,7 @@ DECLSPEC void hmac_sha256_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVA sha256_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m26610_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, pbkdf2_sha256_aes_gcm_t)) +KERNEL_FQ KERNEL_FA void m26610_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, pbkdf2_sha256_aes_gcm_t)) { /** * base @@ -165,7 +165,7 @@ KERNEL_FQ void m26610_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, pbkdf2_sh } } -KERNEL_FQ void m26610_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, pbkdf2_sha256_aes_gcm_t)) +KERNEL_FQ KERNEL_FA void m26610_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, pbkdf2_sha256_aes_gcm_t)) { const u64 gid = get_global_id (0); @@ -271,7 +271,7 @@ KERNEL_FQ void m26610_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, pbkdf2_sh } } -KERNEL_FQ void m26610_comp (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, pbkdf2_sha256_aes_gcm_t)) +KERNEL_FQ KERNEL_FA void m26610_comp (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, pbkdf2_sha256_aes_gcm_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m26700-pure.cl b/OpenCL/m26700-pure.cl index 74bb30284..14be99636 100644 --- a/OpenCL/m26700-pure.cl +++ b/OpenCL/m26700-pure.cl @@ -54,7 +54,7 @@ typedef struct snmpv3 } snmpv3_t; -KERNEL_FQ void m26700_init (KERN_ATTR_TMPS_ESALT (hmac_sha224_tmp_t, snmpv3_t)) +KERNEL_FQ KERNEL_FA void m26700_init (KERN_ATTR_TMPS_ESALT (hmac_sha224_tmp_t, snmpv3_t)) { /** * modifier @@ -135,7 +135,7 @@ KERNEL_FQ void m26700_init (KERN_ATTR_TMPS_ESALT (hmac_sha224_tmp_t, snmpv3_t)) tmps[gid].h[7] = SHA224M_H; } -KERNEL_FQ void m26700_loop (KERN_ATTR_TMPS_ESALT (hmac_sha224_tmp_t, snmpv3_t)) +KERNEL_FQ KERNEL_FA void m26700_loop (KERN_ATTR_TMPS_ESALT (hmac_sha224_tmp_t, snmpv3_t)) { /** * base @@ -240,7 +240,7 @@ KERNEL_FQ void m26700_loop (KERN_ATTR_TMPS_ESALT (hmac_sha224_tmp_t, snmpv3_t)) tmps[gid].h[7] = h[7]; } -KERNEL_FQ void m26700_comp (KERN_ATTR_TMPS_ESALT (hmac_sha224_tmp_t, snmpv3_t)) +KERNEL_FQ KERNEL_FA void m26700_comp (KERN_ATTR_TMPS_ESALT (hmac_sha224_tmp_t, snmpv3_t)) { /** * modifier diff --git a/OpenCL/m26800-pure.cl b/OpenCL/m26800-pure.cl index 9fa5ce34d..d0906f532 100644 --- a/OpenCL/m26800-pure.cl +++ b/OpenCL/m26800-pure.cl @@ -54,7 +54,7 @@ typedef struct snmpv3 } snmpv3_t; -KERNEL_FQ void m26800_init (KERN_ATTR_TMPS_ESALT (hmac_sha256_tmp_t, snmpv3_t)) +KERNEL_FQ KERNEL_FA void m26800_init (KERN_ATTR_TMPS_ESALT (hmac_sha256_tmp_t, snmpv3_t)) { /** * modifier @@ -135,7 +135,7 @@ KERNEL_FQ void m26800_init (KERN_ATTR_TMPS_ESALT (hmac_sha256_tmp_t, snmpv3_t)) tmps[gid].h[7] = SHA256M_H; } -KERNEL_FQ void m26800_loop (KERN_ATTR_TMPS_ESALT (hmac_sha256_tmp_t, snmpv3_t)) +KERNEL_FQ KERNEL_FA void m26800_loop (KERN_ATTR_TMPS_ESALT (hmac_sha256_tmp_t, snmpv3_t)) { /** * base @@ -240,7 +240,7 @@ KERNEL_FQ void m26800_loop (KERN_ATTR_TMPS_ESALT (hmac_sha256_tmp_t, snmpv3_t)) tmps[gid].h[7] = h[7]; } -KERNEL_FQ void m26800_comp (KERN_ATTR_TMPS_ESALT (hmac_sha256_tmp_t, snmpv3_t)) +KERNEL_FQ KERNEL_FA void m26800_comp (KERN_ATTR_TMPS_ESALT (hmac_sha256_tmp_t, snmpv3_t)) { /** * modifier diff --git a/OpenCL/m26900-pure.cl b/OpenCL/m26900-pure.cl index 616a3c5c1..d5a48d653 100644 --- a/OpenCL/m26900-pure.cl +++ b/OpenCL/m26900-pure.cl @@ -54,7 +54,7 @@ typedef struct snmpv3 } snmpv3_t; -KERNEL_FQ void m26900_init (KERN_ATTR_TMPS_ESALT (hmac_sha384_tmp_t, snmpv3_t)) +KERNEL_FQ KERNEL_FA void m26900_init (KERN_ATTR_TMPS_ESALT (hmac_sha384_tmp_t, snmpv3_t)) { /** * modifier @@ -151,7 +151,7 @@ KERNEL_FQ void m26900_init (KERN_ATTR_TMPS_ESALT (hmac_sha384_tmp_t, snmpv3_t)) tmps[gid].h[7] = SHA384M_H; } -KERNEL_FQ void m26900_loop (KERN_ATTR_TMPS_ESALT (hmac_sha384_tmp_t, snmpv3_t)) +KERNEL_FQ KERNEL_FA void m26900_loop (KERN_ATTR_TMPS_ESALT (hmac_sha384_tmp_t, snmpv3_t)) { /** * base @@ -296,7 +296,7 @@ KERNEL_FQ void m26900_loop (KERN_ATTR_TMPS_ESALT (hmac_sha384_tmp_t, snmpv3_t)) tmps[gid].h[7] = h[7]; } -KERNEL_FQ void m26900_comp (KERN_ATTR_TMPS_ESALT (hmac_sha384_tmp_t, snmpv3_t)) +KERNEL_FQ KERNEL_FA void m26900_comp (KERN_ATTR_TMPS_ESALT (hmac_sha384_tmp_t, snmpv3_t)) { /** * modifier diff --git a/OpenCL/m27000-pure.cl b/OpenCL/m27000-pure.cl index 5f85c8f2b..60ca8a322 100644 --- a/OpenCL/m27000-pure.cl +++ b/OpenCL/m27000-pure.cl @@ -528,7 +528,7 @@ typedef struct netntlm_tmp } netntlm_tmp_t; -KERNEL_FQ void m27000_init (KERN_ATTR_TMPS_ESALT (netntlm_tmp_t, netntlm_t)) +KERNEL_FQ KERNEL_FA void m27000_init (KERN_ATTR_TMPS_ESALT (netntlm_tmp_t, netntlm_t)) { /** * modifier @@ -572,12 +572,12 @@ KERNEL_FQ void m27000_init (KERN_ATTR_TMPS_ESALT (netntlm_tmp_t, netntlm_t)) } -KERNEL_FQ void m27000_loop (KERN_ATTR_TMPS_ESALT (netntlm_tmp_t, netntlm_t)) +KERNEL_FQ KERNEL_FA void m27000_loop (KERN_ATTR_TMPS_ESALT (netntlm_tmp_t, netntlm_t)) { } -KERNEL_FQ void m27000_comp (KERN_ATTR_TMPS_ESALT (netntlm_tmp_t, netntlm_t)) +KERNEL_FQ KERNEL_FA void m27000_comp (KERN_ATTR_TMPS_ESALT (netntlm_tmp_t, netntlm_t)) { /** * modifier diff --git a/OpenCL/m27100-pure.cl b/OpenCL/m27100-pure.cl index d3cb273f5..e15531cec 100644 --- a/OpenCL/m27100-pure.cl +++ b/OpenCL/m27100-pure.cl @@ -56,7 +56,7 @@ typedef struct netntlmv2_tmp } netntlm_tmp_t; -KERNEL_FQ void m27100_init (KERN_ATTR_TMPS_ESALT (netntlm_tmp_t, netntlm_t)) +KERNEL_FQ KERNEL_FA void m27100_init (KERN_ATTR_TMPS_ESALT (netntlm_tmp_t, netntlm_t)) { /** * modifier @@ -100,13 +100,13 @@ KERNEL_FQ void m27100_init (KERN_ATTR_TMPS_ESALT (netntlm_tmp_t, netntlm_t)) } -KERNEL_FQ void m27100_loop (KERN_ATTR_TMPS_ESALT (netntlm_tmp_t, netntlm_t)) +KERNEL_FQ KERNEL_FA void m27100_loop (KERN_ATTR_TMPS_ESALT (netntlm_tmp_t, netntlm_t)) { } -KERNEL_FQ void m27100_comp (KERN_ATTR_TMPS_ESALT (netntlm_tmp_t, netntlm_t)) +KERNEL_FQ KERNEL_FA void m27100_comp (KERN_ATTR_TMPS_ESALT (netntlm_tmp_t, netntlm_t)) { /** * modifier diff --git a/OpenCL/m27200_a0-optimized.cl b/OpenCL/m27200_a0-optimized.cl index 5ec604632..fd45f4b28 100644 --- a/OpenCL/m27200_a0-optimized.cl +++ b/OpenCL/m27200_a0-optimized.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m27200_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m27200_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -251,15 +251,15 @@ KERNEL_FQ void m27200_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m27200_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m27200_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m27200_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m27200_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m27200_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m27200_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -504,10 +504,10 @@ KERNEL_FQ void m27200_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m27200_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m27200_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m27200_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m27200_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m27200_a0-pure.cl b/OpenCL/m27200_a0-pure.cl index 41abbf189..b95164fc4 100644 --- a/OpenCL/m27200_a0-pure.cl +++ b/OpenCL/m27200_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m27200_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m27200_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -72,7 +72,7 @@ KERNEL_FQ void m27200_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m27200_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m27200_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m27200_a1-optimized.cl b/OpenCL/m27200_a1-optimized.cl index 2e04d23a0..0c53527f7 100644 --- a/OpenCL/m27200_a1-optimized.cl +++ b/OpenCL/m27200_a1-optimized.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m27200_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m27200_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -309,15 +309,15 @@ KERNEL_FQ void m27200_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m27200_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m27200_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m27200_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m27200_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m27200_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m27200_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -621,10 +621,10 @@ KERNEL_FQ void m27200_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m27200_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m27200_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m27200_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m27200_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m27200_a1-pure.cl b/OpenCL/m27200_a1-pure.cl index cf5cca506..4ab4907e4 100644 --- a/OpenCL/m27200_a1-pure.cl +++ b/OpenCL/m27200_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m27200_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m27200_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -66,7 +66,7 @@ KERNEL_FQ void m27200_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m27200_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m27200_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m27200_a3-optimized.cl b/OpenCL/m27200_a3-optimized.cl index f7bc79d58..6189293ad 100644 --- a/OpenCL/m27200_a3-optimized.cl +++ b/OpenCL/m27200_a3-optimized.cl @@ -539,7 +539,7 @@ DECLSPEC void m27200s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m27200_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m27200_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -588,7 +588,7 @@ KERNEL_FQ void m27200_m04 (KERN_ATTR_BASIC ()) m27200m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m27200_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m27200_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -637,7 +637,7 @@ KERNEL_FQ void m27200_m08 (KERN_ATTR_BASIC ()) m27200m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m27200_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m27200_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -686,7 +686,7 @@ KERNEL_FQ void m27200_m16 (KERN_ATTR_BASIC ()) m27200m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m27200_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m27200_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -735,7 +735,7 @@ KERNEL_FQ void m27200_s04 (KERN_ATTR_BASIC ()) m27200s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m27200_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m27200_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -784,7 +784,7 @@ KERNEL_FQ void m27200_s08 (KERN_ATTR_BASIC ()) m27200s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m27200_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m27200_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m27200_a3-pure.cl b/OpenCL/m27200_a3-pure.cl index 9b976ee15..822555cac 100644 --- a/OpenCL/m27200_a3-pure.cl +++ b/OpenCL/m27200_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m27200_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m27200_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -85,7 +85,7 @@ KERNEL_FQ void m27200_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m27200_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m27200_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m27300-pure.cl b/OpenCL/m27300-pure.cl index 6d21ba03c..71f767071 100644 --- a/OpenCL/m27300-pure.cl +++ b/OpenCL/m27300-pure.cl @@ -54,7 +54,7 @@ typedef struct snmpv3 } snmpv3_t; -KERNEL_FQ void m27300_init (KERN_ATTR_TMPS_ESALT (hmac_sha512_tmp_t, snmpv3_t)) +KERNEL_FQ KERNEL_FA void m27300_init (KERN_ATTR_TMPS_ESALT (hmac_sha512_tmp_t, snmpv3_t)) { /** * modifier @@ -151,7 +151,7 @@ KERNEL_FQ void m27300_init (KERN_ATTR_TMPS_ESALT (hmac_sha512_tmp_t, snmpv3_t)) tmps[gid].h[7] = SHA512M_H; } -KERNEL_FQ void m27300_loop (KERN_ATTR_TMPS_ESALT (hmac_sha512_tmp_t, snmpv3_t)) +KERNEL_FQ KERNEL_FA void m27300_loop (KERN_ATTR_TMPS_ESALT (hmac_sha512_tmp_t, snmpv3_t)) { /** * base @@ -296,7 +296,7 @@ KERNEL_FQ void m27300_loop (KERN_ATTR_TMPS_ESALT (hmac_sha512_tmp_t, snmpv3_t)) tmps[gid].h[7] = h[7]; } -KERNEL_FQ void m27300_comp (KERN_ATTR_TMPS_ESALT (hmac_sha512_tmp_t, snmpv3_t)) +KERNEL_FQ KERNEL_FA void m27300_comp (KERN_ATTR_TMPS_ESALT (hmac_sha512_tmp_t, snmpv3_t)) { /** * modifier diff --git a/OpenCL/m27400-pure.cl b/OpenCL/m27400-pure.cl index d86b95d6c..bdbf272fb 100644 --- a/OpenCL/m27400-pure.cl +++ b/OpenCL/m27400-pure.cl @@ -72,7 +72,7 @@ DECLSPEC void hmac_sha1_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE sha1_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m27400_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha1_tmp_t, vmware_vmx_t)) +KERNEL_FQ KERNEL_FA void m27400_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha1_tmp_t, vmware_vmx_t)) { /** * base @@ -144,7 +144,7 @@ KERNEL_FQ void m27400_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha1_tmp_t, vmware_vmx_ } } -KERNEL_FQ void m27400_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha1_tmp_t, vmware_vmx_t)) +KERNEL_FQ KERNEL_FA void m27400_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha1_tmp_t, vmware_vmx_t)) { const u64 gid = get_global_id (0); @@ -229,7 +229,7 @@ KERNEL_FQ void m27400_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha1_tmp_t, vmware_vmx_ } } -KERNEL_FQ void m27400_comp (KERN_ATTR_TMPS_ESALT (pbkdf2_sha1_tmp_t, vmware_vmx_t)) +KERNEL_FQ KERNEL_FA void m27400_comp (KERN_ATTR_TMPS_ESALT (pbkdf2_sha1_tmp_t, vmware_vmx_t)) { /** * base diff --git a/OpenCL/m27500-pure.cl b/OpenCL/m27500-pure.cl index e4120dd15..3ff56cc61 100644 --- a/OpenCL/m27500-pure.cl +++ b/OpenCL/m27500-pure.cl @@ -92,7 +92,7 @@ DECLSPEC void xts_mul2 (PRIVATE_AS u32 *in, PRIVATE_AS u32 *out) out[0] ^= c * 0x87; } -KERNEL_FQ void m27500_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, vbox_t)) +KERNEL_FQ KERNEL_FA void m27500_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, vbox_t)) { /** * base @@ -176,7 +176,7 @@ KERNEL_FQ void m27500_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, vbox_t)) } } -KERNEL_FQ void m27500_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, vbox_t)) +KERNEL_FQ KERNEL_FA void m27500_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, vbox_t)) { const u64 gid = get_global_id (0); @@ -282,7 +282,7 @@ KERNEL_FQ void m27500_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, vbox_t)) } } -KERNEL_FQ void m27500_init2 (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, vbox_t)) +KERNEL_FQ KERNEL_FA void m27500_init2 (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, vbox_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -538,7 +538,7 @@ KERNEL_FQ void m27500_init2 (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, vbox_t)) } } -KERNEL_FQ void m27500_loop2 (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, vbox_t)) +KERNEL_FQ KERNEL_FA void m27500_loop2 (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, vbox_t)) { const u64 gid = get_global_id (0); @@ -644,7 +644,7 @@ KERNEL_FQ void m27500_loop2 (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, vbox_t)) } } -KERNEL_FQ void m27500_comp (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, vbox_t)) +KERNEL_FQ KERNEL_FA void m27500_comp (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, vbox_t)) { const u64 gid = get_global_id (0); diff --git a/OpenCL/m27600-pure.cl b/OpenCL/m27600-pure.cl index 0825425ad..553a46bd9 100644 --- a/OpenCL/m27600-pure.cl +++ b/OpenCL/m27600-pure.cl @@ -92,7 +92,7 @@ DECLSPEC void xts_mul2 (PRIVATE_AS u32 *in, PRIVATE_AS u32 *out) out[0] ^= c * 0x87; } -KERNEL_FQ void m27600_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, vbox_t)) +KERNEL_FQ KERNEL_FA void m27600_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, vbox_t)) { /** * base @@ -176,7 +176,7 @@ KERNEL_FQ void m27600_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, vbox_t)) } } -KERNEL_FQ void m27600_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, vbox_t)) +KERNEL_FQ KERNEL_FA void m27600_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, vbox_t)) { const u64 gid = get_global_id (0); @@ -282,7 +282,7 @@ KERNEL_FQ void m27600_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, vbox_t)) } } -KERNEL_FQ void m27600_init2 (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, vbox_t)) +KERNEL_FQ KERNEL_FA void m27600_init2 (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, vbox_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -616,7 +616,7 @@ KERNEL_FQ void m27600_init2 (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, vbox_t)) } } -KERNEL_FQ void m27600_loop2 (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, vbox_t)) +KERNEL_FQ KERNEL_FA void m27600_loop2 (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, vbox_t)) { const u64 gid = get_global_id (0); @@ -722,7 +722,7 @@ KERNEL_FQ void m27600_loop2 (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, vbox_t)) } } -KERNEL_FQ void m27600_comp (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, vbox_t)) +KERNEL_FQ KERNEL_FA void m27600_comp (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, vbox_t)) { const u64 gid = get_global_id (0); diff --git a/OpenCL/m27700-pure.cl b/OpenCL/m27700-pure.cl index d9bf11510..c1f930ebc 100644 --- a/OpenCL/m27700-pure.cl +++ b/OpenCL/m27700-pure.cl @@ -9,292 +9,12 @@ #include M2S(INCLUDE_PATH/inc_platform.cl) #include M2S(INCLUDE_PATH/inc_common.cl) #include M2S(INCLUDE_PATH/inc_hash_sha256.cl) +#include M2S(INCLUDE_PATH/inc_hash_scrypt.cl) #include M2S(INCLUDE_PATH/inc_cipher_aes.cl) #endif -typedef struct +KERNEL_FQ KERNEL_FA void m27700_init (KERN_ATTR_TMPS (scrypt_tmp_t)) { - #ifndef SCRYPT_TMP_ELEM - #define SCRYPT_TMP_ELEM 1 - #endif - - uint4 P[SCRYPT_TMP_ELEM]; - -} scrypt_tmp_t; - -#if defined IS_CUDA || defined IS_HIP - -inline __device__ uint4 operator & (const uint4 a, const u32 b) { return make_uint4 ((a.x & b ), (a.y & b ), (a.z & b ), (a.w & b )); } -inline __device__ uint4 operator << (const uint4 a, const u32 b) { return make_uint4 ((a.x << b ), (a.y << b ), (a.z << b ), (a.w << b )); } -inline __device__ uint4 operator >> (const uint4 a, const u32 b) { return make_uint4 ((a.x >> b ), (a.y >> b ), (a.z >> b ), (a.w >> b )); } -inline __device__ uint4 operator + (const uint4 a, const uint4 b) { return make_uint4 ((a.x + b.x), (a.y + b.y), (a.z + b.z), (a.w + b.w)); } -inline __device__ uint4 operator ^ (const uint4 a, const uint4 b) { return make_uint4 ((a.x ^ b.x), (a.y ^ b.y), (a.z ^ b.z), (a.w ^ b.w)); } -inline __device__ uint4 operator | (const uint4 a, const uint4 b) { return make_uint4 ((a.x | b.x), (a.y | b.y), (a.z | b.z), (a.w | b.w)); } -inline __device__ void operator ^= ( uint4 &a, const uint4 b) { a.x ^= b.x; a.y ^= b.y; a.z ^= b.z; a.w ^= b.w; } - -inline __device__ uint4 rotate (const uint4 a, const int n) -{ - return ((a << n) | ((a >> (32 - n)))); -} - -#endif - -DECLSPEC uint4 hc_swap32_4 (uint4 v) -{ - return (rotate ((v & 0x00FF00FF), 24u) | rotate ((v & 0xFF00FF00), 8u)); -} - -#define GET_SCRYPT_CNT(r,p) (2 * (r) * 16 * (p)) -#define GET_SMIX_CNT(r,N) (2 * (r) * 16 * (N)) -#define GET_STATE_CNT(r) (2 * (r) * 16) - -#define SCRYPT_CNT GET_SCRYPT_CNT (SCRYPT_R, SCRYPT_P) -#define SCRYPT_CNT4 (SCRYPT_CNT / 4) -#define STATE_CNT GET_STATE_CNT (SCRYPT_R) -#define STATE_CNT4 (STATE_CNT / 4) - -#define ADD_ROTATE_XOR(r,i1,i2,s) (r) ^= rotate ((i1) + (i2), (s)); - -#if defined IS_CUDA || defined IS_HIP - -#define SALSA20_2R() \ -{ \ - ADD_ROTATE_XOR (X1, X0, X3, 7); \ - ADD_ROTATE_XOR (X2, X1, X0, 9); \ - ADD_ROTATE_XOR (X3, X2, X1, 13); \ - ADD_ROTATE_XOR (X0, X3, X2, 18); \ - \ - X1 = make_uint4 (X1.w, X1.x, X1.y, X1.z); \ - X2 = make_uint4 (X2.z, X2.w, X2.x, X2.y); \ - X3 = make_uint4 (X3.y, X3.z, X3.w, X3.x); \ - \ - ADD_ROTATE_XOR (X3, X0, X1, 7); \ - ADD_ROTATE_XOR (X2, X3, X0, 9); \ - ADD_ROTATE_XOR (X1, X2, X3, 13); \ - ADD_ROTATE_XOR (X0, X1, X2, 18); \ - \ - X1 = make_uint4 (X1.y, X1.z, X1.w, X1.x); \ - X2 = make_uint4 (X2.z, X2.w, X2.x, X2.y); \ - X3 = make_uint4 (X3.w, X3.x, X3.y, X3.z); \ -} -#elif defined IS_METAL -#define SALSA20_2R() \ -{ \ - ADD_ROTATE_XOR (X1, X0, X3, 7); \ - ADD_ROTATE_XOR (X2, X1, X0, 9); \ - ADD_ROTATE_XOR (X3, X2, X1, 13); \ - ADD_ROTATE_XOR (X0, X3, X2, 18); \ - \ - X1 = X1.wxyz; \ - X2 = X2.zwxy; \ - X3 = X3.yzwx; \ - \ - ADD_ROTATE_XOR (X3, X0, X1, 7); \ - ADD_ROTATE_XOR (X2, X3, X0, 9); \ - ADD_ROTATE_XOR (X1, X2, X3, 13); \ - ADD_ROTATE_XOR (X0, X1, X2, 18); \ - \ - X1 = X1.yzwx; \ - X2 = X2.zwxy; \ - X3 = X3.wxyz; \ -} -#else -#define SALSA20_2R() \ -{ \ - ADD_ROTATE_XOR (X1, X0, X3, 7); \ - ADD_ROTATE_XOR (X2, X1, X0, 9); \ - ADD_ROTATE_XOR (X3, X2, X1, 13); \ - ADD_ROTATE_XOR (X0, X3, X2, 18); \ - \ - X1 = X1.s3012; \ - X2 = X2.s2301; \ - X3 = X3.s1230; \ - \ - ADD_ROTATE_XOR (X3, X0, X1, 7); \ - ADD_ROTATE_XOR (X2, X3, X0, 9); \ - ADD_ROTATE_XOR (X1, X2, X3, 13); \ - ADD_ROTATE_XOR (X0, X1, X2, 18); \ - \ - X1 = X1.s1230; \ - X2 = X2.s2301; \ - X3 = X3.s3012; \ -} -#endif - -#define Coord(xd4,y,z) (((xd4) * ySIZE * zSIZE) + ((y) * zSIZE) + (z)) -#define CO Coord(xd4,y,z) - -DECLSPEC void salsa_r (PRIVATE_AS uint4 *TI) -{ - #if SCRYPT_R > 1 - - uint4 TT[STATE_CNT4 / 2]; - - for (int dst_off = 0, src_off = 4; src_off < STATE_CNT4; dst_off += 4, src_off += 8) - { - TT[dst_off + 0] = TI[src_off + 0]; - TT[dst_off + 1] = TI[src_off + 1]; - TT[dst_off + 2] = TI[src_off + 2]; - TT[dst_off + 3] = TI[src_off + 3]; - } - - for (int dst_off = 4, src_off = 8; src_off < STATE_CNT4; dst_off += 4, src_off += 8) - { - TI[dst_off + 0] = TI[src_off + 0]; - TI[dst_off + 1] = TI[src_off + 1]; - TI[dst_off + 2] = TI[src_off + 2]; - TI[dst_off + 3] = TI[src_off + 3]; - } - - for (int dst_off = STATE_CNT4 / 2, src_off = 0; dst_off < STATE_CNT4; dst_off += 4, src_off += 4) - { - TI[dst_off + 0] = TT[src_off + 0]; - TI[dst_off + 1] = TT[src_off + 1]; - TI[dst_off + 2] = TT[src_off + 2]; - TI[dst_off + 3] = TT[src_off + 3]; - } - - #endif - - uint4 R0 = TI[STATE_CNT4 - 4]; - uint4 R1 = TI[STATE_CNT4 - 3]; - uint4 R2 = TI[STATE_CNT4 - 2]; - uint4 R3 = TI[STATE_CNT4 - 1]; - - for (int i = 0; i < STATE_CNT4; i += 4) - { - uint4 Y0 = TI[i + 0]; - uint4 Y1 = TI[i + 1]; - uint4 Y2 = TI[i + 2]; - uint4 Y3 = TI[i + 3]; - - R0 = R0 ^ Y0; - R1 = R1 ^ Y1; - R2 = R2 ^ Y2; - R3 = R3 ^ Y3; - - uint4 X0 = R0; - uint4 X1 = R1; - uint4 X2 = R2; - uint4 X3 = R3; - - SALSA20_2R (); - SALSA20_2R (); - SALSA20_2R (); - SALSA20_2R (); - - R0 = R0 + X0; - R1 = R1 + X1; - R2 = R2 + X2; - R3 = R3 + X3; - - TI[i + 0] = R0; - TI[i + 1] = R1; - TI[i + 2] = R2; - TI[i + 3] = R3; - } -} - -DECLSPEC void scrypt_smix_init (PRIVATE_AS uint4 *X, GLOBAL_AS uint4 *V0, GLOBAL_AS uint4 *V1, GLOBAL_AS uint4 *V2, GLOBAL_AS uint4 *V3, const u64 gid) -{ - const u32 ySIZE = SCRYPT_N / SCRYPT_TMTO; - const u32 zSIZE = STATE_CNT4; - - const u32 x = (u32) gid; - - const u32 xd4 = x / 4; - const u32 xm4 = x & 3; - - GLOBAL_AS uint4 *V; - - switch (xm4) - { - case 0: V = V0; break; - case 1: V = V1; break; - case 2: V = V2; break; - case 3: V = V3; break; - } - - #if SCRYPT_R > 1 - - uint4 TT[STATE_CNT4]; - - for (int z = 0; z < zSIZE; z++) TT[z] = X[z]; - - for (int dst_off = 8, src_off = 4; dst_off < zSIZE; dst_off += 8, src_off += 4) - { - X[dst_off + 0] = TT[src_off + 0]; - X[dst_off + 1] = TT[src_off + 1]; - X[dst_off + 2] = TT[src_off + 2]; - X[dst_off + 3] = TT[src_off + 3]; - } - - for (int dst_off = 4, src_off = zSIZE / 2; dst_off < zSIZE; dst_off += 8, src_off += 4) - { - X[dst_off + 0] = TT[src_off + 0]; - X[dst_off + 1] = TT[src_off + 1]; - X[dst_off + 2] = TT[src_off + 2]; - X[dst_off + 3] = TT[src_off + 3]; - } - - #endif - - for (u32 y = 0; y < ySIZE; y++) - { - for (u32 z = 0; z < zSIZE; z++) V[CO] = X[z]; - - for (u32 i = 0; i < SCRYPT_TMTO; i++) salsa_r (X); - } -} - -DECLSPEC void scrypt_smix_loop (PRIVATE_AS uint4 *X, GLOBAL_AS uint4 *V0, GLOBAL_AS uint4 *V1, GLOBAL_AS uint4 *V2, GLOBAL_AS uint4 *V3, const u64 gid) -{ - const u32 ySIZE = SCRYPT_N / SCRYPT_TMTO; - const u32 zSIZE = STATE_CNT4; - - const u32 x = (u32) gid; - - const u32 xd4 = x / 4; - const u32 xm4 = x & 3; - - GLOBAL_AS uint4 *V; - - switch (xm4) - { - case 0: V = V0; break; - case 1: V = V1; break; - case 2: V = V2; break; - case 3: V = V3; break; - } - - // note: fixed 1024 iterations = forced -u 1024 - - for (u32 N_pos = 0; N_pos < 1024; N_pos++) - { - const u32 k = X[zSIZE - 4].x & (SCRYPT_N - 1); - - const u32 y = k / SCRYPT_TMTO; - - const u32 km = k - (y * SCRYPT_TMTO); - - uint4 T[STATE_CNT4]; - - for (u32 z = 0; z < zSIZE; z++) T[z] = V[CO]; - - for (u32 i = 0; i < km; i++) salsa_r (T); - - for (u32 z = 0; z < zSIZE; z++) X[z] ^= T[z]; - - salsa_r (X); - } -} - -KERNEL_FQ void m27700_init (KERN_ATTR_TMPS (scrypt_tmp_t)) -{ - /** - * base - */ - const u64 gid = get_global_id (0); if (gid >= GID_CNT) return; @@ -310,180 +30,56 @@ KERNEL_FQ void m27700_init (KERN_ATTR_TMPS (scrypt_tmp_t)) if (w_len == -1) return; // utf16le to utf16be - for (int i = 0, j = 0; i < w_len; i += 4, j += 1) { w[j] = ((w[j] >> 8) & 0x00ff00ff) | ((w[j] << 8) & 0xff00ff00); } - sha256_hmac_ctx_t sha256_hmac_ctx; + u32 s[16] = { 0 }; - sha256_hmac_init_swap (&sha256_hmac_ctx, w, w_len); + s[0] = hc_swap32_S (salt_bufs[SALT_POS_HOST].salt_buf[0]); + s[1] = hc_swap32_S (salt_bufs[SALT_POS_HOST].salt_buf[1]); - u32 x0[4] = { 0 }; - u32 x1[4] = { 0 }; - u32 x2[4] = { 0 }; - u32 x3[4] = { 0 }; + scrypt_pbkdf2_ppg (w, w_len, s, 8, tmps[gid].in, SCRYPT_SZ); - x0[0] = salt_bufs[SALT_POS_HOST].salt_buf[0]; - x0[1] = salt_bufs[SALT_POS_HOST].salt_buf[1]; - - sha256_hmac_update_64 (&sha256_hmac_ctx, x0, x1, x2, x3, 8); - - for (u32 i = 0, j = 1, k = 0; i < SCRYPT_CNT; i += 8, j += 1, k += 2) - { - sha256_hmac_ctx_t sha256_hmac_ctx2 = sha256_hmac_ctx; - - u32 w0[4]; - u32 w1[4]; - u32 w2[4]; - u32 w3[4]; - - w0[0] = j; - w0[1] = 0; - w0[2] = 0; - w0[3] = 0; - w1[0] = 0; - w1[1] = 0; - w1[2] = 0; - w1[3] = 0; - w2[0] = 0; - w2[1] = 0; - w2[2] = 0; - w2[3] = 0; - w3[0] = 0; - w3[1] = 0; - w3[2] = 0; - w3[3] = 0; - - sha256_hmac_update_64 (&sha256_hmac_ctx2, w0, w1, w2, w3, 4); - - sha256_hmac_final (&sha256_hmac_ctx2); - - u32 digest[8]; - - digest[0] = sha256_hmac_ctx2.opad.h[0]; - digest[1] = sha256_hmac_ctx2.opad.h[1]; - digest[2] = sha256_hmac_ctx2.opad.h[2]; - digest[3] = sha256_hmac_ctx2.opad.h[3]; - digest[4] = sha256_hmac_ctx2.opad.h[4]; - digest[5] = sha256_hmac_ctx2.opad.h[5]; - digest[6] = sha256_hmac_ctx2.opad.h[6]; - digest[7] = sha256_hmac_ctx2.opad.h[7]; - - #if defined IS_CUDA || defined IS_HIP - const uint4 tmp0 = make_uint4 (digest[0], digest[1], digest[2], digest[3]); - const uint4 tmp1 = make_uint4 (digest[4], digest[5], digest[6], digest[7]); - #elif defined IS_METAL - const uint4 tmp0 = uint4 (digest[0], digest[1], digest[2], digest[3]); - const uint4 tmp1 = uint4 (digest[4], digest[5], digest[6], digest[7]); - #else - const uint4 tmp0 = (uint4) (digest[0], digest[1], digest[2], digest[3]); - const uint4 tmp1 = (uint4) (digest[4], digest[5], digest[6], digest[7]); - #endif - - tmps[gid].P[k + 0] = tmp0; - tmps[gid].P[k + 1] = tmp1; - } - - for (u32 l = 0; l < SCRYPT_CNT4; l += 4) - { - uint4 T[4]; - - T[0] = tmps[gid].P[l + 0]; - T[1] = tmps[gid].P[l + 1]; - T[2] = tmps[gid].P[l + 2]; - T[3] = tmps[gid].P[l + 3]; - - T[0] = hc_swap32_4 (T[0]); - T[1] = hc_swap32_4 (T[1]); - T[2] = hc_swap32_4 (T[2]); - T[3] = hc_swap32_4 (T[3]); - - uint4 X[4]; - - #if defined IS_CUDA || defined IS_HIP - X[0] = make_uint4 (T[0].x, T[1].y, T[2].z, T[3].w); - X[1] = make_uint4 (T[1].x, T[2].y, T[3].z, T[0].w); - X[2] = make_uint4 (T[2].x, T[3].y, T[0].z, T[1].w); - X[3] = make_uint4 (T[3].x, T[0].y, T[1].z, T[2].w); - #elif defined IS_METAL - X[0] = uint4 (T[0].x, T[1].y, T[2].z, T[3].w); - X[1] = uint4 (T[1].x, T[2].y, T[3].z, T[0].w); - X[2] = uint4 (T[2].x, T[3].y, T[0].z, T[1].w); - X[3] = uint4 (T[3].x, T[0].y, T[1].z, T[2].w); - #else - X[0] = (uint4) (T[0].x, T[1].y, T[2].z, T[3].w); - X[1] = (uint4) (T[1].x, T[2].y, T[3].z, T[0].w); - X[2] = (uint4) (T[2].x, T[3].y, T[0].z, T[1].w); - X[3] = (uint4) (T[3].x, T[0].y, T[1].z, T[2].w); - #endif - - tmps[gid].P[l + 0] = X[0]; - tmps[gid].P[l + 1] = X[1]; - tmps[gid].P[l + 2] = X[2]; - tmps[gid].P[l + 3] = X[3]; - } + scrypt_blockmix_in (tmps[gid].in, tmps[gid].out, SCRYPT_SZ); } -KERNEL_FQ void m27700_loop_prepare (KERN_ATTR_TMPS (scrypt_tmp_t)) -{ - /** - * base - */ - - const u64 gid = get_global_id (0); - const u64 lid = get_local_id (0); - - if (gid >= GID_CNT) return; - - // SCRYPT part, init V - - GLOBAL_AS uint4 *d_scrypt0_buf = (GLOBAL_AS uint4 *) d_extra0_buf; - GLOBAL_AS uint4 *d_scrypt1_buf = (GLOBAL_AS uint4 *) d_extra1_buf; - GLOBAL_AS uint4 *d_scrypt2_buf = (GLOBAL_AS uint4 *) d_extra2_buf; - GLOBAL_AS uint4 *d_scrypt3_buf = (GLOBAL_AS uint4 *) d_extra3_buf; - - uint4 X[STATE_CNT4]; - - const u32 P_offset = SALT_REPEAT * STATE_CNT4; - - GLOBAL_AS uint4 *P = tmps[gid].P + P_offset; - - for (int z = 0; z < STATE_CNT4; z++) X[z] = P[z]; - - scrypt_smix_init (X, d_scrypt0_buf, d_scrypt1_buf, d_scrypt2_buf, d_scrypt3_buf, gid); - - for (int z = 0; z < STATE_CNT4; z++) P[z] = X[z]; -} - -KERNEL_FQ void m27700_loop (KERN_ATTR_TMPS (scrypt_tmp_t)) +KERNEL_FQ KERNEL_FA void m27700_loop_prepare (KERN_ATTR_TMPS (scrypt_tmp_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); + const u64 lsz = get_local_size (0); + const u64 bid = get_group_id (0); if (gid >= GID_CNT) return; - GLOBAL_AS uint4 *d_scrypt0_buf = (GLOBAL_AS uint4 *) d_extra0_buf; - GLOBAL_AS uint4 *d_scrypt1_buf = (GLOBAL_AS uint4 *) d_extra1_buf; - GLOBAL_AS uint4 *d_scrypt2_buf = (GLOBAL_AS uint4 *) d_extra2_buf; - GLOBAL_AS uint4 *d_scrypt3_buf = (GLOBAL_AS uint4 *) d_extra3_buf; + u32 X[STATE_CNT4]; - uint4 X[STATE_CNT4]; + GLOBAL_AS u32 *P = tmps[gid].out + (SALT_REPEAT * STATE_CNT4); - const u32 P_offset = SALT_REPEAT * STATE_CNT4; - - GLOBAL_AS uint4 *P = tmps[gid].P + P_offset; - - for (int z = 0; z < STATE_CNT4; z++) X[z] = P[z]; - - scrypt_smix_loop (X, d_scrypt0_buf, d_scrypt1_buf, d_scrypt2_buf, d_scrypt3_buf, gid); - - for (int z = 0; z < STATE_CNT4; z++) P[z] = X[z]; + scrypt_smix_init (P, X, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, gid, lid, lsz, bid); } -KERNEL_FQ void m27700_comp (KERN_ATTR_TMPS (scrypt_tmp_t)) +KERNEL_FQ KERNEL_FA void m27700_loop (KERN_ATTR_TMPS (scrypt_tmp_t)) +{ + const u64 gid = get_global_id (0); + const u64 lid = get_local_id (0); + const u64 lsz = get_local_size (0); + const u64 bid = get_group_id (0); + + if (gid >= GID_CNT) return; + + u32 X[STATE_CNT4]; + u32 T[STATE_CNT4]; + + GLOBAL_AS u32 *P = tmps[gid].out + (SALT_REPEAT * STATE_CNT4); + + scrypt_smix_loop (P, X, T, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, gid, lid, lsz, bid); +} + +KERNEL_FQ KERNEL_FA void m27700_comp (KERN_ATTR_TMPS (scrypt_tmp_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -557,119 +153,36 @@ KERNEL_FQ void m27700_comp (KERN_ATTR_TMPS (scrypt_tmp_t)) if (w_len == -1) return; // utf16le to utf16be - for (int i = 0, j = 0; i < w_len; i += 4, j += 1) { w[j] = ((w[j] >> 8) & 0x00ff00ff) | ((w[j] << 8) & 0xff00ff00); } - sha256_hmac_ctx_t ctx; + scrypt_blockmix_out (tmps[gid].out, tmps[gid].in, SCRYPT_SZ); - sha256_hmac_init_swap (&ctx, w, w_len); + u32 out[8]; - u32 w0[4]; - u32 w1[4]; - u32 w2[4]; - u32 w3[4]; - - for (u32 i = 0; i < SCRYPT_CNT4; i += STATE_CNT4) - { - for (u32 j = 0; j < (STATE_CNT4 * 2); j += 8) - { - uint4 X[4]; - - const u32 l = i + j + ((j >= STATE_CNT4) ? (4 - STATE_CNT4) : 0); - - X[0] = tmps[gid].P[l + 0]; - X[1] = tmps[gid].P[l + 1]; - X[2] = tmps[gid].P[l + 2]; - X[3] = tmps[gid].P[l + 3]; - - uint4 T[4]; - - #if defined IS_CUDA || defined IS_HIP - T[0] = make_uint4 (X[0].x, X[3].y, X[2].z, X[1].w); - T[1] = make_uint4 (X[1].x, X[0].y, X[3].z, X[2].w); - T[2] = make_uint4 (X[2].x, X[1].y, X[0].z, X[3].w); - T[3] = make_uint4 (X[3].x, X[2].y, X[1].z, X[0].w); - #elif defined IS_METAL - T[0] = uint4 (X[0].x, X[3].y, X[2].z, X[1].w); - T[1] = uint4 (X[1].x, X[0].y, X[3].z, X[2].w); - T[2] = uint4 (X[2].x, X[1].y, X[0].z, X[3].w); - T[3] = uint4 (X[3].x, X[2].y, X[1].z, X[0].w); - #else - T[0] = (uint4) (X[0].x, X[3].y, X[2].z, X[1].w); - T[1] = (uint4) (X[1].x, X[0].y, X[3].z, X[2].w); - T[2] = (uint4) (X[2].x, X[1].y, X[0].z, X[3].w); - T[3] = (uint4) (X[3].x, X[2].y, X[1].z, X[0].w); - #endif - - T[0] = hc_swap32_4 (T[0]); - T[1] = hc_swap32_4 (T[1]); - T[2] = hc_swap32_4 (T[2]); - T[3] = hc_swap32_4 (T[3]); - - w0[0] = T[0].x; - w0[1] = T[0].y; - w0[2] = T[0].z; - w0[3] = T[0].w; - w1[0] = T[1].x; - w1[1] = T[1].y; - w1[2] = T[1].z; - w1[3] = T[1].w; - w2[0] = T[2].x; - w2[1] = T[2].y; - w2[2] = T[2].z; - w2[3] = T[2].w; - w3[0] = T[3].x; - w3[1] = T[3].y; - w3[2] = T[3].z; - w3[3] = T[3].w; - - sha256_hmac_update_64 (&ctx, w0, w1, w2, w3, 64); - } - } - - w0[0] = 1; - w0[1] = 0; - w0[2] = 0; - w0[3] = 0; - w1[0] = 0; - w1[1] = 0; - w1[2] = 0; - w1[3] = 0; - w2[0] = 0; - w2[1] = 0; - w2[2] = 0; - w2[3] = 0; - w3[0] = 0; - w3[1] = 0; - w3[2] = 0; - w3[3] = 0; - - sha256_hmac_update_64 (&ctx, w0, w1, w2, w3, 4); - - sha256_hmac_final (&ctx); + scrypt_pbkdf2_pgp (w, w_len, tmps[gid].in, SCRYPT_SZ, out, 32); // AES256-CBC decrypt u32 key[8]; - key[0] = ctx.opad.h[0]; - key[1] = ctx.opad.h[1]; - key[2] = ctx.opad.h[2]; - key[3] = ctx.opad.h[3]; - key[4] = ctx.opad.h[4]; - key[5] = ctx.opad.h[5]; - key[6] = ctx.opad.h[6]; - key[7] = ctx.opad.h[7]; + key[0] = out[0]; + key[1] = out[1]; + key[2] = out[2]; + key[3] = out[3]; + key[4] = out[4]; + key[5] = out[5]; + key[6] = out[6]; + key[7] = out[7]; #define KEYLEN 60 u32 ks[KEYLEN]; - AES256_set_decrypt_key (ks, key, s_te0, s_te1, s_te2, s_te3, s_td0, s_td1, s_td2, s_td3); + aes256_set_decrypt_key (ks, key, s_te0, s_te1, s_te2, s_te3, s_td0, s_td1, s_td2, s_td3); u32 iv[4]; diff --git a/OpenCL/m27800_a0-optimized.cl b/OpenCL/m27800_a0-optimized.cl index fc4017a50..81d70d10b 100644 --- a/OpenCL/m27800_a0-optimized.cl +++ b/OpenCL/m27800_a0-optimized.cl @@ -55,7 +55,7 @@ DECLSPEC u32 MurmurHash3 (const u32 seed, PRIVATE_AS const u32 *data, const u32 return checksum ^ (checksum >> 16); } -KERNEL_FQ void m27800_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m27800_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -112,15 +112,15 @@ KERNEL_FQ void m27800_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m27800_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m27800_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m27800_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m27800_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m27800_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m27800_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -189,10 +189,10 @@ KERNEL_FQ void m27800_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m27800_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m27800_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m27800_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m27800_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m27800_a1-optimized.cl b/OpenCL/m27800_a1-optimized.cl index 28f8dfb45..66927e35f 100644 --- a/OpenCL/m27800_a1-optimized.cl +++ b/OpenCL/m27800_a1-optimized.cl @@ -53,7 +53,7 @@ DECLSPEC u32 MurmurHash3 (const u32 seed, PRIVATE_AS const u32 *data, const u32 return checksum ^ (checksum >> 16); } -KERNEL_FQ void m27800_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m27800_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -166,15 +166,15 @@ KERNEL_FQ void m27800_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m27800_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m27800_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m27800_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m27800_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m27800_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m27800_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -299,10 +299,10 @@ KERNEL_FQ void m27800_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m27800_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m27800_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m27800_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m27800_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m27800_a3-optimized.cl b/OpenCL/m27800_a3-optimized.cl index d0e04eae0..da67f0df3 100644 --- a/OpenCL/m27800_a3-optimized.cl +++ b/OpenCL/m27800_a3-optimized.cl @@ -185,7 +185,7 @@ DECLSPEC void m27800s (PRIVATE_AS const u32 *data, const u32 pw_len, KERN_ATTR_F } } -KERNEL_FQ void m27800_m04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m27800_m04 (KERN_ATTR_VECTOR ()) { /** * base @@ -225,7 +225,7 @@ KERNEL_FQ void m27800_m04 (KERN_ATTR_VECTOR ()) m27800m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m27800_m08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m27800_m08 (KERN_ATTR_VECTOR ()) { /** * base @@ -265,7 +265,7 @@ KERNEL_FQ void m27800_m08 (KERN_ATTR_VECTOR ()) m27800m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m27800_m16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m27800_m16 (KERN_ATTR_VECTOR ()) { /** * base @@ -305,7 +305,7 @@ KERNEL_FQ void m27800_m16 (KERN_ATTR_VECTOR ()) m27800m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m27800_s04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m27800_s04 (KERN_ATTR_VECTOR ()) { /** * base @@ -345,7 +345,7 @@ KERNEL_FQ void m27800_s04 (KERN_ATTR_VECTOR ()) m27800s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m27800_s08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m27800_s08 (KERN_ATTR_VECTOR ()) { /** * base @@ -385,7 +385,7 @@ KERNEL_FQ void m27800_s08 (KERN_ATTR_VECTOR ()) m27800s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m27800_s16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m27800_s16 (KERN_ATTR_VECTOR ()) { /** * base diff --git a/OpenCL/m27900_a0-optimized.cl b/OpenCL/m27900_a0-optimized.cl index fac6a7799..955eda573 100644 --- a/OpenCL/m27900_a0-optimized.cl +++ b/OpenCL/m27900_a0-optimized.cl @@ -135,7 +135,7 @@ DECLSPEC u32x crc32c (PRIVATE_AS const u32x *w, const u32 pw_len, const u32 iv) return ~a; } -KERNEL_FQ void m27900_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m27900_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -215,15 +215,15 @@ KERNEL_FQ void m27900_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m27900_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m27900_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m27900_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m27900_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m27900_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m27900_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -315,10 +315,10 @@ KERNEL_FQ void m27900_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m27900_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m27900_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m27900_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m27900_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m27900_a0-pure.cl b/OpenCL/m27900_a0-pure.cl index c378ee5c6..a321907b3 100644 --- a/OpenCL/m27900_a0-pure.cl +++ b/OpenCL/m27900_a0-pure.cl @@ -123,7 +123,7 @@ DECLSPEC u32x crc32c (PRIVATE_AS const u32x *w, const u32 pw_len, const u32 iv) return ~a; } -KERNEL_FQ void m27900_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m27900_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -169,7 +169,7 @@ KERNEL_FQ void m27900_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m27900_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m27900_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m27900_a1-optimized.cl b/OpenCL/m27900_a1-optimized.cl index 240d7c050..209ffe13c 100644 --- a/OpenCL/m27900_a1-optimized.cl +++ b/OpenCL/m27900_a1-optimized.cl @@ -133,7 +133,7 @@ DECLSPEC u32x crc32c (PRIVATE_AS const u32x *w, const u32 pw_len, const u32 iv) return ~a; } -KERNEL_FQ void m27900_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m27900_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -273,15 +273,15 @@ KERNEL_FQ void m27900_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m27900_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m27900_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m27900_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m27900_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m27900_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m27900_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -433,10 +433,10 @@ KERNEL_FQ void m27900_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m27900_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m27900_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m27900_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m27900_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m27900_a1-pure.cl b/OpenCL/m27900_a1-pure.cl index 11c41b8be..542da85ca 100644 --- a/OpenCL/m27900_a1-pure.cl +++ b/OpenCL/m27900_a1-pure.cl @@ -121,7 +121,7 @@ DECLSPEC u32x crc32c_g (GLOBAL_AS const u32x *w, const u32 pw_len, const u32 iv) return ~a; } -KERNEL_FQ void m27900_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m27900_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -163,7 +163,7 @@ KERNEL_FQ void m27900_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m27900_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m27900_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m27900_a3-optimized.cl b/OpenCL/m27900_a3-optimized.cl index 2f9e7ce2a..9e90fed1d 100644 --- a/OpenCL/m27900_a3-optimized.cl +++ b/OpenCL/m27900_a3-optimized.cl @@ -255,7 +255,7 @@ DECLSPEC void m27900s (PRIVATE_AS u32 *w, const u32 pw_len, KERN_ATTR_FUNC_BASIC } } -KERNEL_FQ void m27900_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m27900_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -295,7 +295,7 @@ KERNEL_FQ void m27900_m04 (KERN_ATTR_BASIC ()) m27900m (w, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m27900_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m27900_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -335,7 +335,7 @@ KERNEL_FQ void m27900_m08 (KERN_ATTR_BASIC ()) m27900m (w, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m27900_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m27900_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -375,7 +375,7 @@ KERNEL_FQ void m27900_m16 (KERN_ATTR_BASIC ()) m27900m (w, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m27900_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m27900_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -415,7 +415,7 @@ KERNEL_FQ void m27900_s04 (KERN_ATTR_BASIC ()) m27900s (w, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m27900_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m27900_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -455,7 +455,7 @@ KERNEL_FQ void m27900_s08 (KERN_ATTR_BASIC ()) m27900s (w, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m27900_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m27900_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m27900_a3-pure.cl b/OpenCL/m27900_a3-pure.cl index 90e8777c8..e3d3048e5 100644 --- a/OpenCL/m27900_a3-pure.cl +++ b/OpenCL/m27900_a3-pure.cl @@ -121,7 +121,7 @@ DECLSPEC u32x crc32c (PRIVATE_AS const u32x *w, const u32 pw_len, const u32 iv) return ~a; } -KERNEL_FQ void m27900_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m27900_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -174,7 +174,7 @@ KERNEL_FQ void m27900_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m27900_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m27900_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m28000_a0-optimized.cl b/OpenCL/m28000_a0-optimized.cl index 275a195e7..a8861d117 100644 --- a/OpenCL/m28000_a0-optimized.cl +++ b/OpenCL/m28000_a0-optimized.cl @@ -195,7 +195,7 @@ DECLSPEC u64 crc64jones (PRIVATE_AS const u32 *w, const u32 pw_len, const u64 iv return a; } -KERNEL_FQ void m28000_m04 (KERN_ATTR_RULES_ESALT (crc64_t)) +KERNEL_FQ KERNEL_FA void m28000_m04 (KERN_ATTR_RULES_ESALT (crc64_t)) { /** * modifier @@ -299,15 +299,15 @@ KERNEL_FQ void m28000_m04 (KERN_ATTR_RULES_ESALT (crc64_t)) } } -KERNEL_FQ void m28000_m08 (KERN_ATTR_RULES_ESALT (crc64_t)) +KERNEL_FQ KERNEL_FA void m28000_m08 (KERN_ATTR_RULES_ESALT (crc64_t)) { } -KERNEL_FQ void m28000_m16 (KERN_ATTR_RULES_ESALT (crc64_t)) +KERNEL_FQ KERNEL_FA void m28000_m16 (KERN_ATTR_RULES_ESALT (crc64_t)) { } -KERNEL_FQ void m28000_s04 (KERN_ATTR_RULES_ESALT (crc64_t)) +KERNEL_FQ KERNEL_FA void m28000_s04 (KERN_ATTR_RULES_ESALT (crc64_t)) { /** * modifier @@ -423,10 +423,10 @@ KERNEL_FQ void m28000_s04 (KERN_ATTR_RULES_ESALT (crc64_t)) } } -KERNEL_FQ void m28000_s08 (KERN_ATTR_RULES_ESALT (crc64_t)) +KERNEL_FQ KERNEL_FA void m28000_s08 (KERN_ATTR_RULES_ESALT (crc64_t)) { } -KERNEL_FQ void m28000_s16 (KERN_ATTR_RULES_ESALT (crc64_t)) +KERNEL_FQ KERNEL_FA void m28000_s16 (KERN_ATTR_RULES_ESALT (crc64_t)) { } diff --git a/OpenCL/m28000_a0-pure.cl b/OpenCL/m28000_a0-pure.cl index 75abc8c0d..5e8805555 100644 --- a/OpenCL/m28000_a0-pure.cl +++ b/OpenCL/m28000_a0-pure.cl @@ -183,7 +183,7 @@ DECLSPEC u64 crc64jones (PRIVATE_AS const u32 *w, const u32 pw_len, const u64 iv return a; } -KERNEL_FQ void m28000_mxx (KERN_ATTR_RULES_ESALT (crc64_t)) +KERNEL_FQ KERNEL_FA void m28000_mxx (KERN_ATTR_RULES_ESALT (crc64_t)) { /** * modifier @@ -253,7 +253,7 @@ KERNEL_FQ void m28000_mxx (KERN_ATTR_RULES_ESALT (crc64_t)) } } -KERNEL_FQ void m28000_sxx (KERN_ATTR_RULES_ESALT (crc64_t)) +KERNEL_FQ KERNEL_FA void m28000_sxx (KERN_ATTR_RULES_ESALT (crc64_t)) { /** * modifier diff --git a/OpenCL/m28000_a1-optimized.cl b/OpenCL/m28000_a1-optimized.cl index 16e840868..25aa706f1 100644 --- a/OpenCL/m28000_a1-optimized.cl +++ b/OpenCL/m28000_a1-optimized.cl @@ -193,7 +193,7 @@ DECLSPEC u64 crc64jones (PRIVATE_AS const u32 *w, const u32 pw_len, const u64 iv return a; } -KERNEL_FQ void m28000_m04 (KERN_ATTR_ESALT (crc64_t)) +KERNEL_FQ KERNEL_FA void m28000_m04 (KERN_ATTR_ESALT (crc64_t)) { /** * modifier @@ -357,15 +357,15 @@ KERNEL_FQ void m28000_m04 (KERN_ATTR_ESALT (crc64_t)) } } -KERNEL_FQ void m28000_m08 (KERN_ATTR_ESALT (crc64_t)) +KERNEL_FQ KERNEL_FA void m28000_m08 (KERN_ATTR_ESALT (crc64_t)) { } -KERNEL_FQ void m28000_m16 (KERN_ATTR_ESALT (crc64_t)) +KERNEL_FQ KERNEL_FA void m28000_m16 (KERN_ATTR_ESALT (crc64_t)) { } -KERNEL_FQ void m28000_s04 (KERN_ATTR_ESALT (crc64_t)) +KERNEL_FQ KERNEL_FA void m28000_s04 (KERN_ATTR_ESALT (crc64_t)) { /** * modifier @@ -541,10 +541,10 @@ KERNEL_FQ void m28000_s04 (KERN_ATTR_ESALT (crc64_t)) } } -KERNEL_FQ void m28000_s08 (KERN_ATTR_ESALT (crc64_t)) +KERNEL_FQ KERNEL_FA void m28000_s08 (KERN_ATTR_ESALT (crc64_t)) { } -KERNEL_FQ void m28000_s16 (KERN_ATTR_ESALT (crc64_t)) +KERNEL_FQ KERNEL_FA void m28000_s16 (KERN_ATTR_ESALT (crc64_t)) { } diff --git a/OpenCL/m28000_a1-pure.cl b/OpenCL/m28000_a1-pure.cl index b07ca2c0f..e27654c85 100644 --- a/OpenCL/m28000_a1-pure.cl +++ b/OpenCL/m28000_a1-pure.cl @@ -181,7 +181,7 @@ DECLSPEC u64 crc64jones_g (GLOBAL_AS const u32 *w, const u32 pw_len, const u64 i return a; } -KERNEL_FQ void m28000_mxx (KERN_ATTR_ESALT (crc64_t)) +KERNEL_FQ KERNEL_FA void m28000_mxx (KERN_ATTR_ESALT (crc64_t)) { /** * modifier @@ -243,7 +243,7 @@ KERNEL_FQ void m28000_mxx (KERN_ATTR_ESALT (crc64_t)) } } -KERNEL_FQ void m28000_sxx (KERN_ATTR_ESALT (crc64_t)) +KERNEL_FQ KERNEL_FA void m28000_sxx (KERN_ATTR_ESALT (crc64_t)) { /** * modifier diff --git a/OpenCL/m28000_a3-optimized.cl b/OpenCL/m28000_a3-optimized.cl index b304d64f2..6f1185ada 100644 --- a/OpenCL/m28000_a3-optimized.cl +++ b/OpenCL/m28000_a3-optimized.cl @@ -321,7 +321,7 @@ DECLSPEC void m28000s (SHM_TYPE u64 *s_crc64jonestab, PRIVATE_AS u32 *w, const u } } -KERNEL_FQ void m28000_m04 (KERN_ATTR_ESALT (crc64_t)) +KERNEL_FQ KERNEL_FA void m28000_m04 (KERN_ATTR_ESALT (crc64_t)) { /** * modifier @@ -386,7 +386,7 @@ KERNEL_FQ void m28000_m04 (KERN_ATTR_ESALT (crc64_t)) m28000m (s_crc64jonestab, w, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m28000_m08 (KERN_ATTR_ESALT (crc64_t)) +KERNEL_FQ KERNEL_FA void m28000_m08 (KERN_ATTR_ESALT (crc64_t)) { /** * modifier @@ -451,7 +451,7 @@ KERNEL_FQ void m28000_m08 (KERN_ATTR_ESALT (crc64_t)) m28000m (s_crc64jonestab, w, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m28000_m16 (KERN_ATTR_ESALT (crc64_t)) +KERNEL_FQ KERNEL_FA void m28000_m16 (KERN_ATTR_ESALT (crc64_t)) { /** * modifier @@ -516,7 +516,7 @@ KERNEL_FQ void m28000_m16 (KERN_ATTR_ESALT (crc64_t)) m28000m (s_crc64jonestab, w, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m28000_s04 (KERN_ATTR_ESALT (crc64_t)) +KERNEL_FQ KERNEL_FA void m28000_s04 (KERN_ATTR_ESALT (crc64_t)) { /** * modifier @@ -581,7 +581,7 @@ KERNEL_FQ void m28000_s04 (KERN_ATTR_ESALT (crc64_t)) m28000s (s_crc64jonestab, w, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m28000_s08 (KERN_ATTR_ESALT (crc64_t)) +KERNEL_FQ KERNEL_FA void m28000_s08 (KERN_ATTR_ESALT (crc64_t)) { /** * modifier @@ -646,7 +646,7 @@ KERNEL_FQ void m28000_s08 (KERN_ATTR_ESALT (crc64_t)) m28000s (s_crc64jonestab, w, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m28000_s16 (KERN_ATTR_ESALT (crc64_t)) +KERNEL_FQ KERNEL_FA void m28000_s16 (KERN_ATTR_ESALT (crc64_t)) { /** * modifier diff --git a/OpenCL/m28000_a3-pure.cl b/OpenCL/m28000_a3-pure.cl index f0aac2e14..bc6edf3f8 100644 --- a/OpenCL/m28000_a3-pure.cl +++ b/OpenCL/m28000_a3-pure.cl @@ -181,7 +181,7 @@ DECLSPEC u64 crc64jones (PRIVATE_AS const u32 *w, const u32 pw_len, const u64 iv return a; } -KERNEL_FQ void m28000_mxx (KERN_ATTR_VECTOR_ESALT (crc64_t)) +KERNEL_FQ KERNEL_FA void m28000_mxx (KERN_ATTR_VECTOR_ESALT (crc64_t)) { /** * modifier @@ -254,7 +254,7 @@ KERNEL_FQ void m28000_mxx (KERN_ATTR_VECTOR_ESALT (crc64_t)) } } -KERNEL_FQ void m28000_sxx (KERN_ATTR_VECTOR_ESALT (crc64_t)) +KERNEL_FQ KERNEL_FA void m28000_sxx (KERN_ATTR_VECTOR_ESALT (crc64_t)) { /** * modifier diff --git a/OpenCL/m28100-pure.cl b/OpenCL/m28100-pure.cl index 46d707055..0dfa4924d 100644 --- a/OpenCL/m28100-pure.cl +++ b/OpenCL/m28100-pure.cl @@ -88,7 +88,7 @@ DECLSPEC void hmac_sha256_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVA sha256_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m28100_init (KERN_ATTR_TMPS_ESALT (winhello_tmp_t, winhello_t)) +KERNEL_FQ KERNEL_FA void m28100_init (KERN_ATTR_TMPS_ESALT (winhello_tmp_t, winhello_t)) { /** * base @@ -203,7 +203,7 @@ KERNEL_FQ void m28100_init (KERN_ATTR_TMPS_ESALT (winhello_tmp_t, winhello_t)) } } -KERNEL_FQ void m28100_loop (KERN_ATTR_TMPS_ESALT (winhello_tmp_t, winhello_t)) +KERNEL_FQ KERNEL_FA void m28100_loop (KERN_ATTR_TMPS_ESALT (winhello_tmp_t, winhello_t)) { const u64 gid = get_global_id (0); @@ -309,7 +309,7 @@ KERNEL_FQ void m28100_loop (KERN_ATTR_TMPS_ESALT (winhello_tmp_t, winhello_t)) } } -KERNEL_FQ void m28100_comp (KERN_ATTR_TMPS_ESALT (winhello_tmp_t, winhello_t)) +KERNEL_FQ KERNEL_FA void m28100_comp (KERN_ATTR_TMPS_ESALT (winhello_tmp_t, winhello_t)) { /** * base diff --git a/OpenCL/m28200-pure.cl b/OpenCL/m28200-pure.cl index 58106a007..92b7a2434 100644 --- a/OpenCL/m28200-pure.cl +++ b/OpenCL/m28200-pure.cl @@ -9,6 +9,7 @@ #include M2S(INCLUDE_PATH/inc_platform.cl) #include M2S(INCLUDE_PATH/inc_common.cl) #include M2S(INCLUDE_PATH/inc_hash_sha256.cl) +#include M2S(INCLUDE_PATH/inc_hash_scrypt.cl) #include M2S(INCLUDE_PATH/inc_cipher_aes.cl) #include M2S(INCLUDE_PATH/inc_cipher_aes-gcm.cl) #endif @@ -16,16 +17,6 @@ #define COMPARE_S M2S(INCLUDE_PATH/inc_comp_single.cl) #define COMPARE_M M2S(INCLUDE_PATH/inc_comp_multi.cl) -typedef struct exodus_tmp -{ - #ifndef SCRYPT_TMP_ELEM - #define SCRYPT_TMP_ELEM 1 - #endif - - uint4 P[SCRYPT_TMP_ELEM]; - -} exodus_tmp_t; - typedef struct exodus { u32 iv[4]; @@ -34,443 +25,51 @@ typedef struct exodus } exodus_t; -#if defined IS_CUDA || defined IS_HIP - -inline __device__ uint4 operator & (const uint4 a, const u32 b) { return make_uint4 ((a.x & b ), (a.y & b ), (a.z & b ), (a.w & b )); } -inline __device__ uint4 operator << (const uint4 a, const u32 b) { return make_uint4 ((a.x << b ), (a.y << b ), (a.z << b ), (a.w << b )); } -inline __device__ uint4 operator >> (const uint4 a, const u32 b) { return make_uint4 ((a.x >> b ), (a.y >> b ), (a.z >> b ), (a.w >> b )); } -inline __device__ uint4 operator + (const uint4 a, const uint4 b) { return make_uint4 ((a.x + b.x), (a.y + b.y), (a.z + b.z), (a.w + b.w)); } -inline __device__ uint4 operator ^ (const uint4 a, const uint4 b) { return make_uint4 ((a.x ^ b.x), (a.y ^ b.y), (a.z ^ b.z), (a.w ^ b.w)); } -inline __device__ uint4 operator | (const uint4 a, const uint4 b) { return make_uint4 ((a.x | b.x), (a.y | b.y), (a.z | b.z), (a.w | b.w)); } -inline __device__ void operator ^= ( uint4 &a, const uint4 b) { a.x ^= b.x; a.y ^= b.y; a.z ^= b.z; a.w ^= b.w; } - -inline __device__ uint4 rotate (const uint4 a, const int n) +KERNEL_FQ KERNEL_FA void m28200_init (KERN_ATTR_TMPS_ESALT (scrypt_tmp_t, exodus_t)) { - return ((a << n) | ((a >> (32 - n)))); -} - -#endif - -DECLSPEC uint4 hc_swap32_4 (uint4 v) -{ - return (rotate ((v & 0x00FF00FF), 24u) | rotate ((v & 0xFF00FF00), 8u)); -} - -#define GET_SCRYPT_CNT(r,p) (2 * (r) * 16 * (p)) -#define GET_SMIX_CNT(r,N) (2 * (r) * 16 * (N)) -#define GET_STATE_CNT(r) (2 * (r) * 16) - -#define SCRYPT_CNT GET_SCRYPT_CNT (SCRYPT_R, SCRYPT_P) -#define SCRYPT_CNT4 (SCRYPT_CNT / 4) -#define STATE_CNT GET_STATE_CNT (SCRYPT_R) -#define STATE_CNT4 (STATE_CNT / 4) - -#define ADD_ROTATE_XOR(r,i1,i2,s) (r) ^= rotate ((i1) + (i2), (s)); - -#if defined IS_CUDA || defined IS_HIP - -#define SALSA20_2R() \ -{ \ - ADD_ROTATE_XOR (X1, X0, X3, 7); \ - ADD_ROTATE_XOR (X2, X1, X0, 9); \ - ADD_ROTATE_XOR (X3, X2, X1, 13); \ - ADD_ROTATE_XOR (X0, X3, X2, 18); \ - \ - X1 = make_uint4 (X1.w, X1.x, X1.y, X1.z); \ - X2 = make_uint4 (X2.z, X2.w, X2.x, X2.y); \ - X3 = make_uint4 (X3.y, X3.z, X3.w, X3.x); \ - \ - ADD_ROTATE_XOR (X3, X0, X1, 7); \ - ADD_ROTATE_XOR (X2, X3, X0, 9); \ - ADD_ROTATE_XOR (X1, X2, X3, 13); \ - ADD_ROTATE_XOR (X0, X1, X2, 18); \ - \ - X1 = make_uint4 (X1.y, X1.z, X1.w, X1.x); \ - X2 = make_uint4 (X2.z, X2.w, X2.x, X2.y); \ - X3 = make_uint4 (X3.w, X3.x, X3.y, X3.z); \ -} -#elif defined IS_METAL -#define SALSA20_2R() \ -{ \ - ADD_ROTATE_XOR (X1, X0, X3, 7); \ - ADD_ROTATE_XOR (X2, X1, X0, 9); \ - ADD_ROTATE_XOR (X3, X2, X1, 13); \ - ADD_ROTATE_XOR (X0, X3, X2, 18); \ - \ - X1 = X1.wxyz; \ - X2 = X2.zwxy; \ - X3 = X3.yzwx; \ - \ - ADD_ROTATE_XOR (X3, X0, X1, 7); \ - ADD_ROTATE_XOR (X2, X3, X0, 9); \ - ADD_ROTATE_XOR (X1, X2, X3, 13); \ - ADD_ROTATE_XOR (X0, X1, X2, 18); \ - \ - X1 = X1.yzwx; \ - X2 = X2.zwxy; \ - X3 = X3.wxyz; \ -} -#else -#define SALSA20_2R() \ -{ \ - ADD_ROTATE_XOR (X1, X0, X3, 7); \ - ADD_ROTATE_XOR (X2, X1, X0, 9); \ - ADD_ROTATE_XOR (X3, X2, X1, 13); \ - ADD_ROTATE_XOR (X0, X3, X2, 18); \ - \ - X1 = X1.s3012; \ - X2 = X2.s2301; \ - X3 = X3.s1230; \ - \ - ADD_ROTATE_XOR (X3, X0, X1, 7); \ - ADD_ROTATE_XOR (X2, X3, X0, 9); \ - ADD_ROTATE_XOR (X1, X2, X3, 13); \ - ADD_ROTATE_XOR (X0, X1, X2, 18); \ - \ - X1 = X1.s1230; \ - X2 = X2.s2301; \ - X3 = X3.s3012; \ -} -#endif - -#define Coord(xd4,y,z) (((xd4) * ySIZE * zSIZE) + ((y) * zSIZE) + (z)) -#define CO Coord(xd4,y,z) - -DECLSPEC void salsa_r (PRIVATE_AS uint4 *TI) -{ - #if SCRYPT_R > 1 - - uint4 TT[STATE_CNT4 / 2]; - - for (int dst_off = 0, src_off = 4; src_off < STATE_CNT4; dst_off += 4, src_off += 8) - { - TT[dst_off + 0] = TI[src_off + 0]; - TT[dst_off + 1] = TI[src_off + 1]; - TT[dst_off + 2] = TI[src_off + 2]; - TT[dst_off + 3] = TI[src_off + 3]; - } - - for (int dst_off = 4, src_off = 8; src_off < STATE_CNT4; dst_off += 4, src_off += 8) - { - TI[dst_off + 0] = TI[src_off + 0]; - TI[dst_off + 1] = TI[src_off + 1]; - TI[dst_off + 2] = TI[src_off + 2]; - TI[dst_off + 3] = TI[src_off + 3]; - } - - for (int dst_off = STATE_CNT4 / 2, src_off = 0; dst_off < STATE_CNT4; dst_off += 4, src_off += 4) - { - TI[dst_off + 0] = TT[src_off + 0]; - TI[dst_off + 1] = TT[src_off + 1]; - TI[dst_off + 2] = TT[src_off + 2]; - TI[dst_off + 3] = TT[src_off + 3]; - } - - #endif - - uint4 R0 = TI[STATE_CNT4 - 4]; - uint4 R1 = TI[STATE_CNT4 - 3]; - uint4 R2 = TI[STATE_CNT4 - 2]; - uint4 R3 = TI[STATE_CNT4 - 1]; - - for (int i = 0; i < STATE_CNT4; i += 4) - { - uint4 Y0 = TI[i + 0]; - uint4 Y1 = TI[i + 1]; - uint4 Y2 = TI[i + 2]; - uint4 Y3 = TI[i + 3]; - - R0 = R0 ^ Y0; - R1 = R1 ^ Y1; - R2 = R2 ^ Y2; - R3 = R3 ^ Y3; - - uint4 X0 = R0; - uint4 X1 = R1; - uint4 X2 = R2; - uint4 X3 = R3; - - SALSA20_2R (); - SALSA20_2R (); - SALSA20_2R (); - SALSA20_2R (); - - R0 = R0 + X0; - R1 = R1 + X1; - R2 = R2 + X2; - R3 = R3 + X3; - - TI[i + 0] = R0; - TI[i + 1] = R1; - TI[i + 2] = R2; - TI[i + 3] = R3; - } -} - - -DECLSPEC void scrypt_smix_init (PRIVATE_AS uint4 *X, GLOBAL_AS uint4 *V0, GLOBAL_AS uint4 *V1, GLOBAL_AS uint4 *V2, GLOBAL_AS uint4 *V3, const u64 gid) -{ - const u32 ySIZE = SCRYPT_N / SCRYPT_TMTO; - const u32 zSIZE = STATE_CNT4; - - const u32 x = (u32) gid; - - const u32 xd4 = x / 4; - const u32 xm4 = x & 3; - - GLOBAL_AS uint4 *V; - - switch (xm4) - { - case 0: V = V0; break; - case 1: V = V1; break; - case 2: V = V2; break; - case 3: V = V3; break; - } - - #if SCRYPT_R > 1 - - uint4 TT[STATE_CNT4]; - - for (int z = 0; z < zSIZE; z++) TT[z] = X[z]; - - for (int dst_off = 8, src_off = 4; dst_off < zSIZE; dst_off += 8, src_off += 4) - { - X[dst_off + 0] = TT[src_off + 0]; - X[dst_off + 1] = TT[src_off + 1]; - X[dst_off + 2] = TT[src_off + 2]; - X[dst_off + 3] = TT[src_off + 3]; - } - - for (int dst_off = 4, src_off = zSIZE / 2; dst_off < zSIZE; dst_off += 8, src_off += 4) - { - X[dst_off + 0] = TT[src_off + 0]; - X[dst_off + 1] = TT[src_off + 1]; - X[dst_off + 2] = TT[src_off + 2]; - X[dst_off + 3] = TT[src_off + 3]; - } - - #endif - - for (u32 y = 0; y < ySIZE; y++) - { - for (u32 z = 0; z < zSIZE; z++) V[CO] = X[z]; - - for (u32 i = 0; i < SCRYPT_TMTO; i++) salsa_r (X); - } -} - -DECLSPEC void scrypt_smix_loop (PRIVATE_AS uint4 *X, GLOBAL_AS uint4 *V0, GLOBAL_AS uint4 *V1, GLOBAL_AS uint4 *V2, GLOBAL_AS uint4 *V3, const u64 gid) -{ - const u32 ySIZE = SCRYPT_N / SCRYPT_TMTO; - const u32 zSIZE = STATE_CNT4; - - const u32 x = (u32) gid; - - const u32 xd4 = x / 4; - const u32 xm4 = x & 3; - - GLOBAL_AS uint4 *V; - - switch (xm4) - { - case 0: V = V0; break; - case 1: V = V1; break; - case 2: V = V2; break; - case 3: V = V3; break; - } - - // note: fixed 1024 iterations = forced -u 1024 - - for (u32 N_pos = 0; N_pos < 1024; N_pos++) - { - const u32 k = X[zSIZE - 4].x & (SCRYPT_N - 1); - - const u32 y = k / SCRYPT_TMTO; - - const u32 km = k - (y * SCRYPT_TMTO); - - uint4 T[STATE_CNT4]; - - for (u32 z = 0; z < zSIZE; z++) T[z] = V[CO]; - - for (u32 i = 0; i < km; i++) salsa_r (T); - - for (u32 z = 0; z < zSIZE; z++) X[z] ^= T[z]; - - salsa_r (X); - } -} - -KERNEL_FQ void m28200_init (KERN_ATTR_TMPS_ESALT (exodus_tmp_t, exodus_t)) -{ - /** - * base - */ - const u64 gid = get_global_id (0); if (gid >= GID_CNT) return; - sha256_hmac_ctx_t sha256_hmac_ctx; + scrypt_pbkdf2_ggg (pws[gid].i, pws[gid].pw_len, salt_bufs[SALT_POS_HOST].salt_buf, salt_bufs[SALT_POS_HOST].salt_len, tmps[gid].in, SCRYPT_SZ); - sha256_hmac_init_global_swap (&sha256_hmac_ctx, pws[gid].i, pws[gid].pw_len); - - sha256_hmac_update_global (&sha256_hmac_ctx, salt_bufs[SALT_POS_HOST].salt_buf, salt_bufs[SALT_POS_HOST].salt_len); - - for (u32 i = 0, j = 1, k = 0; i < SCRYPT_CNT; i += 8, j += 1, k += 2) - { - sha256_hmac_ctx_t sha256_hmac_ctx2 = sha256_hmac_ctx; - - u32 w0[4]; - u32 w1[4]; - u32 w2[4]; - u32 w3[4]; - - w0[0] = j; - w0[1] = 0; - w0[2] = 0; - w0[3] = 0; - w1[0] = 0; - w1[1] = 0; - w1[2] = 0; - w1[3] = 0; - w2[0] = 0; - w2[1] = 0; - w2[2] = 0; - w2[3] = 0; - w3[0] = 0; - w3[1] = 0; - w3[2] = 0; - w3[3] = 0; - - sha256_hmac_update_64 (&sha256_hmac_ctx2, w0, w1, w2, w3, 4); - - sha256_hmac_final (&sha256_hmac_ctx2); - - u32 digest[8]; - - digest[0] = sha256_hmac_ctx2.opad.h[0]; - digest[1] = sha256_hmac_ctx2.opad.h[1]; - digest[2] = sha256_hmac_ctx2.opad.h[2]; - digest[3] = sha256_hmac_ctx2.opad.h[3]; - digest[4] = sha256_hmac_ctx2.opad.h[4]; - digest[5] = sha256_hmac_ctx2.opad.h[5]; - digest[6] = sha256_hmac_ctx2.opad.h[6]; - digest[7] = sha256_hmac_ctx2.opad.h[7]; - - #if defined IS_CUDA || defined IS_HIP - const uint4 tmp0 = make_uint4 (digest[0], digest[1], digest[2], digest[3]); - const uint4 tmp1 = make_uint4 (digest[4], digest[5], digest[6], digest[7]); - #elif defined IS_METAL - const uint4 tmp0 = uint4 (digest[0], digest[1], digest[2], digest[3]); - const uint4 tmp1 = uint4 (digest[4], digest[5], digest[6], digest[7]); - #else - const uint4 tmp0 = (uint4) (digest[0], digest[1], digest[2], digest[3]); - const uint4 tmp1 = (uint4) (digest[4], digest[5], digest[6], digest[7]); - #endif - - tmps[gid].P[k + 0] = tmp0; - tmps[gid].P[k + 1] = tmp1; - } - - for (u32 l = 0; l < SCRYPT_CNT4; l += 4) - { - uint4 T[4]; - - T[0] = tmps[gid].P[l + 0]; - T[1] = tmps[gid].P[l + 1]; - T[2] = tmps[gid].P[l + 2]; - T[3] = tmps[gid].P[l + 3]; - - T[0] = hc_swap32_4 (T[0]); - T[1] = hc_swap32_4 (T[1]); - T[2] = hc_swap32_4 (T[2]); - T[3] = hc_swap32_4 (T[3]); - - uint4 X[4]; - - #if defined IS_CUDA || defined IS_HIP - X[0] = make_uint4 (T[0].x, T[1].y, T[2].z, T[3].w); - X[1] = make_uint4 (T[1].x, T[2].y, T[3].z, T[0].w); - X[2] = make_uint4 (T[2].x, T[3].y, T[0].z, T[1].w); - X[3] = make_uint4 (T[3].x, T[0].y, T[1].z, T[2].w); - #elif defined IS_METAL - X[0] = uint4 (T[0].x, T[1].y, T[2].z, T[3].w); - X[1] = uint4 (T[1].x, T[2].y, T[3].z, T[0].w); - X[2] = uint4 (T[2].x, T[3].y, T[0].z, T[1].w); - X[3] = uint4 (T[3].x, T[0].y, T[1].z, T[2].w); - #else - X[0] = (uint4) (T[0].x, T[1].y, T[2].z, T[3].w); - X[1] = (uint4) (T[1].x, T[2].y, T[3].z, T[0].w); - X[2] = (uint4) (T[2].x, T[3].y, T[0].z, T[1].w); - X[3] = (uint4) (T[3].x, T[0].y, T[1].z, T[2].w); - #endif - - tmps[gid].P[l + 0] = X[0]; - tmps[gid].P[l + 1] = X[1]; - tmps[gid].P[l + 2] = X[2]; - tmps[gid].P[l + 3] = X[3]; - } + scrypt_blockmix_in (tmps[gid].in, tmps[gid].out, SCRYPT_SZ); } -KERNEL_FQ void m28200_loop_prepare (KERN_ATTR_TMPS_ESALT (exodus_tmp_t, exodus_t)) -{ - /** - * base - */ - - const u64 gid = get_global_id (0); - const u64 lid = get_local_id (0); - - if (gid >= GID_CNT) return; - - // SCRYPT part, init V - - GLOBAL_AS uint4 *d_scrypt0_buf = (GLOBAL_AS uint4 *) d_extra0_buf; - GLOBAL_AS uint4 *d_scrypt1_buf = (GLOBAL_AS uint4 *) d_extra1_buf; - GLOBAL_AS uint4 *d_scrypt2_buf = (GLOBAL_AS uint4 *) d_extra2_buf; - GLOBAL_AS uint4 *d_scrypt3_buf = (GLOBAL_AS uint4 *) d_extra3_buf; - - uint4 X[STATE_CNT4]; - - const u32 P_offset = SALT_REPEAT * STATE_CNT4; - - GLOBAL_AS uint4 *P = tmps[gid].P + P_offset; - - for (int z = 0; z < STATE_CNT4; z++) X[z] = P[z]; - - scrypt_smix_init (X, d_scrypt0_buf, d_scrypt1_buf, d_scrypt2_buf, d_scrypt3_buf, gid); - - for (int z = 0; z < STATE_CNT4; z++) P[z] = X[z]; -} - -KERNEL_FQ void m28200_loop (KERN_ATTR_TMPS_ESALT (exodus_tmp_t, exodus_t)) +KERNEL_FQ KERNEL_FA void m28200_loop_prepare (KERN_ATTR_TMPS_ESALT (scrypt_tmp_t, exodus_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); + const u64 lsz = get_local_size (0); + const u64 bid = get_group_id (0); if (gid >= GID_CNT) return; - GLOBAL_AS uint4 *d_scrypt0_buf = (GLOBAL_AS uint4 *) d_extra0_buf; - GLOBAL_AS uint4 *d_scrypt1_buf = (GLOBAL_AS uint4 *) d_extra1_buf; - GLOBAL_AS uint4 *d_scrypt2_buf = (GLOBAL_AS uint4 *) d_extra2_buf; - GLOBAL_AS uint4 *d_scrypt3_buf = (GLOBAL_AS uint4 *) d_extra3_buf; + u32 X[STATE_CNT4]; - uint4 X[STATE_CNT4]; + GLOBAL_AS u32 *P = tmps[gid].out + (SALT_REPEAT * STATE_CNT4); - const u32 P_offset = SALT_REPEAT * STATE_CNT4; - - GLOBAL_AS uint4 *P = tmps[gid].P + P_offset; - - for (int z = 0; z < STATE_CNT4; z++) X[z] = P[z]; - - scrypt_smix_loop (X, d_scrypt0_buf, d_scrypt1_buf, d_scrypt2_buf, d_scrypt3_buf, gid); - - for (int z = 0; z < STATE_CNT4; z++) P[z] = X[z]; + scrypt_smix_init (P, X, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, gid, lid, lsz, bid); } -KERNEL_FQ void m28200_comp (KERN_ATTR_TMPS_ESALT (exodus_tmp_t, exodus_t)) +KERNEL_FQ KERNEL_FA void m28200_loop (KERN_ATTR_TMPS_ESALT (scrypt_tmp_t, exodus_t)) +{ + const u64 gid = get_global_id (0); + const u64 lid = get_local_id (0); + const u64 lsz = get_local_size (0); + const u64 bid = get_group_id (0); + + if (gid >= GID_CNT) return; + + u32 X[STATE_CNT4]; + u32 T[STATE_CNT4]; + + GLOBAL_AS u32 *P = tmps[gid].out + (SALT_REPEAT * STATE_CNT4); + + scrypt_smix_loop (P, X, T, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, gid, lid, lsz, bid); +} + +KERNEL_FQ KERNEL_FA void m28200_comp (KERN_ATTR_TMPS_ESALT (scrypt_tmp_t, exodus_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -529,110 +128,24 @@ KERNEL_FQ void m28200_comp (KERN_ATTR_TMPS_ESALT (exodus_tmp_t, exodus_t)) if (gid >= GID_CNT) return; - /** - * 2nd pbkdf2, creates B - */ + scrypt_blockmix_out (tmps[gid].out, tmps[gid].in, SCRYPT_SZ); - u32 w0[4]; - u32 w1[4]; - u32 w2[4]; - u32 w3[4]; + u32 out[8]; - sha256_hmac_ctx_t ctx; - - sha256_hmac_init_global_swap (&ctx, pws[gid].i, pws[gid].pw_len); - - for (u32 i = 0; i < SCRYPT_CNT4; i += STATE_CNT4) - { - for (u32 j = 0; j < (STATE_CNT4 * 2); j += 8) - { - uint4 X[4]; - - const u32 l = i + j + ((j >= STATE_CNT4) ? (4 - STATE_CNT4) : 0); - - X[0] = tmps[gid].P[l + 0]; - X[1] = tmps[gid].P[l + 1]; - X[2] = tmps[gid].P[l + 2]; - X[3] = tmps[gid].P[l + 3]; - - uint4 T[4]; - - #if defined IS_CUDA || defined IS_HIP - T[0] = make_uint4 (X[0].x, X[3].y, X[2].z, X[1].w); - T[1] = make_uint4 (X[1].x, X[0].y, X[3].z, X[2].w); - T[2] = make_uint4 (X[2].x, X[1].y, X[0].z, X[3].w); - T[3] = make_uint4 (X[3].x, X[2].y, X[1].z, X[0].w); - #elif defined IS_METAL - T[0] = uint4 (X[0].x, X[3].y, X[2].z, X[1].w); - T[1] = uint4 (X[1].x, X[0].y, X[3].z, X[2].w); - T[2] = uint4 (X[2].x, X[1].y, X[0].z, X[3].w); - T[3] = uint4 (X[3].x, X[2].y, X[1].z, X[0].w); - #else - T[0] = (uint4) (X[0].x, X[3].y, X[2].z, X[1].w); - T[1] = (uint4) (X[1].x, X[0].y, X[3].z, X[2].w); - T[2] = (uint4) (X[2].x, X[1].y, X[0].z, X[3].w); - T[3] = (uint4) (X[3].x, X[2].y, X[1].z, X[0].w); - #endif - - T[0] = hc_swap32_4 (T[0]); - T[1] = hc_swap32_4 (T[1]); - T[2] = hc_swap32_4 (T[2]); - T[3] = hc_swap32_4 (T[3]); - - w0[0] = T[0].x; - w0[1] = T[0].y; - w0[2] = T[0].z; - w0[3] = T[0].w; - w1[0] = T[1].x; - w1[1] = T[1].y; - w1[2] = T[1].z; - w1[3] = T[1].w; - w2[0] = T[2].x; - w2[1] = T[2].y; - w2[2] = T[2].z; - w2[3] = T[2].w; - w3[0] = T[3].x; - w3[1] = T[3].y; - w3[2] = T[3].z; - w3[3] = T[3].w; - - sha256_hmac_update_64 (&ctx, w0, w1, w2, w3, 64); - } - } - - w0[0] = 1; - w0[1] = 0; - w0[2] = 0; - w0[3] = 0; - w1[0] = 0; - w1[1] = 0; - w1[2] = 0; - w1[3] = 0; - w2[0] = 0; - w2[1] = 0; - w2[2] = 0; - w2[3] = 0; - w3[0] = 0; - w3[1] = 0; - w3[2] = 0; - w3[3] = 0; - - sha256_hmac_update_64 (&ctx, w0, w1, w2, w3, 4); - - sha256_hmac_final (&ctx); + scrypt_pbkdf2_ggp (pws[gid].i, pws[gid].pw_len, tmps[gid].in, SCRYPT_SZ, out, 32); // GCM stuff u32 ukey[8]; - ukey[0] = ctx.opad.h[0]; - ukey[1] = ctx.opad.h[1]; - ukey[2] = ctx.opad.h[2]; - ukey[3] = ctx.opad.h[3]; - ukey[4] = ctx.opad.h[4]; - ukey[5] = ctx.opad.h[5]; - ukey[6] = ctx.opad.h[6]; - ukey[7] = ctx.opad.h[7]; + ukey[0] = hc_swap32_S (out[0]); + ukey[1] = hc_swap32_S (out[1]); + ukey[2] = hc_swap32_S (out[2]); + ukey[3] = hc_swap32_S (out[3]); + ukey[4] = hc_swap32_S (out[4]); + ukey[5] = hc_swap32_S (out[5]); + ukey[6] = hc_swap32_S (out[6]); + ukey[7] = hc_swap32_S (out[7]); u32 key[60] = { 0 }; u32 subKey[4] = { 0 }; diff --git a/OpenCL/m28300_a0-pure.cl b/OpenCL/m28300_a0-pure.cl index 8551fd776..a6c78bd07 100644 --- a/OpenCL/m28300_a0-pure.cl +++ b/OpenCL/m28300_a0-pure.cl @@ -36,7 +36,7 @@ CONSTANT_VK u32 bin2base64[0x40] = #define int_to_base64(c) make_u32x (s_bin2base64[(c).s0], s_bin2base64[(c).s1], s_bin2base64[(c).s2], s_bin2base64[(c).s3], s_bin2base64[(c).s4], s_bin2base64[(c).s5], s_bin2base64[(c).s6], s_bin2base64[(c).s7], s_bin2base64[(c).s8], s_bin2base64[(c).s9], s_bin2base64[(c).sa], s_bin2base64[(c).sb], s_bin2base64[(c).sc], s_bin2base64[(c).sd], s_bin2base64[(c).se], s_bin2base64[(c).sf]) #endif -KERNEL_FQ void m28300_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m28300_mxx (KERN_ATTR_RULES ()) { /** * base @@ -184,7 +184,7 @@ KERNEL_FQ void m28300_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m28300_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m28300_sxx (KERN_ATTR_RULES ()) { /** * base diff --git a/OpenCL/m28300_a1-pure.cl b/OpenCL/m28300_a1-pure.cl index 5924ad59d..7535c3b07 100644 --- a/OpenCL/m28300_a1-pure.cl +++ b/OpenCL/m28300_a1-pure.cl @@ -34,7 +34,7 @@ CONSTANT_VK u32 bin2base64[0x40] = #define int_to_base64(c) make_u32x (s_bin2base64[(c).s0], s_bin2base64[(c).s1], s_bin2base64[(c).s2], s_bin2base64[(c).s3], s_bin2base64[(c).s4], s_bin2base64[(c).s5], s_bin2base64[(c).s6], s_bin2base64[(c).s7], s_bin2base64[(c).s8], s_bin2base64[(c).s9], s_bin2base64[(c).sa], s_bin2base64[(c).sb], s_bin2base64[(c).sc], s_bin2base64[(c).sd], s_bin2base64[(c).se], s_bin2base64[(c).sf]) #endif -KERNEL_FQ void m28300_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m28300_mxx (KERN_ATTR_BASIC ()) { /** * base @@ -180,7 +180,7 @@ KERNEL_FQ void m28300_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m28300_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m28300_sxx (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m28300_a3-pure.cl b/OpenCL/m28300_a3-pure.cl index 0734fcf5e..29b1e21ba 100644 --- a/OpenCL/m28300_a3-pure.cl +++ b/OpenCL/m28300_a3-pure.cl @@ -34,7 +34,7 @@ CONSTANT_VK u32 bin2base64[0x40] = #define int_to_base64(c) make_u32x (s_bin2base64[(c).s0], s_bin2base64[(c).s1], s_bin2base64[(c).s2], s_bin2base64[(c).s3], s_bin2base64[(c).s4], s_bin2base64[(c).s5], s_bin2base64[(c).s6], s_bin2base64[(c).s7], s_bin2base64[(c).s8], s_bin2base64[(c).s9], s_bin2base64[(c).sa], s_bin2base64[(c).sb], s_bin2base64[(c).sc], s_bin2base64[(c).sd], s_bin2base64[(c).se], s_bin2base64[(c).sf]) #endif -KERNEL_FQ void m28300_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m28300_mxx (KERN_ATTR_VECTOR ()) { /** * base @@ -193,7 +193,7 @@ KERNEL_FQ void m28300_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m28300_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m28300_sxx (KERN_ATTR_VECTOR ()) { /** * base diff --git a/OpenCL/m28400-pure.cl b/OpenCL/m28400-pure.cl index 2fec71c5b..3d8af6ae7 100644 --- a/OpenCL/m28400-pure.cl +++ b/OpenCL/m28400-pure.cl @@ -423,7 +423,7 @@ DECLSPEC u32 u16_bin_to_u32_hex (const u32 v) | ((v1 < 10) ? '0' + v1 : 'a' - 10 + v1) << 0; } -KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m28400_init (KERN_ATTR_TMPS (bcrypt_tmp_t)) +KERNEL_FQ KERNEL_FA void m28400_init (KERN_ATTR_TMPS (bcrypt_tmp_t)) { /** * base @@ -659,7 +659,7 @@ KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m28400_init (KERN_ATTR_TMPS } } -KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m28400_loop (KERN_ATTR_TMPS (bcrypt_tmp_t)) +KERNEL_FQ KERNEL_FA void m28400_loop (KERN_ATTR_TMPS (bcrypt_tmp_t)) { /** * base @@ -862,7 +862,7 @@ KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m28400_loop (KERN_ATTR_TMPS } } -KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m28400_comp (KERN_ATTR_TMPS (bcrypt_tmp_t)) +KERNEL_FQ KERNEL_FA void m28400_comp (KERN_ATTR_TMPS (bcrypt_tmp_t)) { /** * base diff --git a/OpenCL/m28501_a0-pure.cl b/OpenCL/m28501_a0-pure.cl index a04f0db9c..9f0d8c197 100644 --- a/OpenCL/m28501_a0-pure.cl +++ b/OpenCL/m28501_a0-pure.cl @@ -21,7 +21,7 @@ #include M2S(INCLUDE_PATH/inc_ecc_secp256k1.cl) #endif -KERNEL_FQ void m28501_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m28501_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -162,7 +162,7 @@ KERNEL_FQ void m28501_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m28501_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m28501_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m28501_a1-pure.cl b/OpenCL/m28501_a1-pure.cl index 23146d63a..b078b0bc3 100644 --- a/OpenCL/m28501_a1-pure.cl +++ b/OpenCL/m28501_a1-pure.cl @@ -19,7 +19,7 @@ #include M2S(INCLUDE_PATH/inc_ecc_secp256k1.cl) #endif -KERNEL_FQ void m28501_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m28501_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -200,7 +200,7 @@ KERNEL_FQ void m28501_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m28501_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m28501_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m28501_a3-pure.cl b/OpenCL/m28501_a3-pure.cl index 960a1c431..30ba29601 100644 --- a/OpenCL/m28501_a3-pure.cl +++ b/OpenCL/m28501_a3-pure.cl @@ -61,7 +61,7 @@ // } // }; -KERNEL_FQ void m28501_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m28501_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -220,7 +220,7 @@ KERNEL_FQ void m28501_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m28501_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m28501_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m28502_a0-pure.cl b/OpenCL/m28502_a0-pure.cl index 19f5e4af8..44a8fa9c4 100644 --- a/OpenCL/m28502_a0-pure.cl +++ b/OpenCL/m28502_a0-pure.cl @@ -21,7 +21,7 @@ #include M2S(INCLUDE_PATH/inc_ecc_secp256k1.cl) #endif -KERNEL_FQ void m28502_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m28502_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -163,7 +163,7 @@ KERNEL_FQ void m28502_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m28502_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m28502_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m28502_a1-pure.cl b/OpenCL/m28502_a1-pure.cl index fdbe644aa..442ec2f25 100644 --- a/OpenCL/m28502_a1-pure.cl +++ b/OpenCL/m28502_a1-pure.cl @@ -19,7 +19,7 @@ #include M2S(INCLUDE_PATH/inc_ecc_secp256k1.cl) #endif -KERNEL_FQ void m28502_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m28502_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -201,7 +201,7 @@ KERNEL_FQ void m28502_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m28502_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m28502_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m28502_a3-pure.cl b/OpenCL/m28502_a3-pure.cl index 080e86bc7..cfdd43275 100644 --- a/OpenCL/m28502_a3-pure.cl +++ b/OpenCL/m28502_a3-pure.cl @@ -19,7 +19,7 @@ #include M2S(INCLUDE_PATH/inc_ecc_secp256k1.cl) #endif -KERNEL_FQ void m28502_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m28502_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -179,7 +179,7 @@ KERNEL_FQ void m28502_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m28502_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m28502_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m28505_a0-pure.cl b/OpenCL/m28505_a0-pure.cl index 94d90874b..a44a13eac 100644 --- a/OpenCL/m28505_a0-pure.cl +++ b/OpenCL/m28505_a0-pure.cl @@ -21,7 +21,7 @@ #include M2S(INCLUDE_PATH/inc_ecc_secp256k1.cl) #endif -KERNEL_FQ void m28505_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m28505_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -186,7 +186,7 @@ KERNEL_FQ void m28505_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m28505_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m28505_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m28505_a1-pure.cl b/OpenCL/m28505_a1-pure.cl index 38fd02d32..32ba42a3a 100644 --- a/OpenCL/m28505_a1-pure.cl +++ b/OpenCL/m28505_a1-pure.cl @@ -19,7 +19,7 @@ #include M2S(INCLUDE_PATH/inc_ecc_secp256k1.cl) #endif -KERNEL_FQ void m28505_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m28505_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -224,7 +224,7 @@ KERNEL_FQ void m28505_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m28505_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m28505_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m28505_a3-pure.cl b/OpenCL/m28505_a3-pure.cl index d0f0ca899..8b26928b9 100644 --- a/OpenCL/m28505_a3-pure.cl +++ b/OpenCL/m28505_a3-pure.cl @@ -20,7 +20,7 @@ #include M2S(INCLUDE_PATH/inc_ecc_secp256k1.cl) #endif -KERNEL_FQ void m28505_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m28505_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -203,7 +203,7 @@ KERNEL_FQ void m28505_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m28505_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m28505_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m28506_a0-pure.cl b/OpenCL/m28506_a0-pure.cl index 31361c813..90426a852 100644 --- a/OpenCL/m28506_a0-pure.cl +++ b/OpenCL/m28506_a0-pure.cl @@ -21,7 +21,7 @@ #include M2S(INCLUDE_PATH/inc_ecc_secp256k1.cl) #endif -KERNEL_FQ void m28506_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m28506_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -187,7 +187,7 @@ KERNEL_FQ void m28506_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m28506_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m28506_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m28506_a1-pure.cl b/OpenCL/m28506_a1-pure.cl index f26707e1a..9d3cbd471 100644 --- a/OpenCL/m28506_a1-pure.cl +++ b/OpenCL/m28506_a1-pure.cl @@ -19,7 +19,7 @@ #include M2S(INCLUDE_PATH/inc_ecc_secp256k1.cl) #endif -KERNEL_FQ void m28506_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m28506_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -225,7 +225,7 @@ KERNEL_FQ void m28506_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m28506_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m28506_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m28506_a3-pure.cl b/OpenCL/m28506_a3-pure.cl index 1c31c5563..daf409411 100644 --- a/OpenCL/m28506_a3-pure.cl +++ b/OpenCL/m28506_a3-pure.cl @@ -19,7 +19,7 @@ #include M2S(INCLUDE_PATH/inc_ecc_secp256k1.cl) #endif -KERNEL_FQ void m28506_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m28506_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -203,7 +203,7 @@ KERNEL_FQ void m28506_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m28506_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m28506_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m28600-pure.cl b/OpenCL/m28600-pure.cl index 9b534a4d5..e119404e2 100644 --- a/OpenCL/m28600-pure.cl +++ b/OpenCL/m28600-pure.cl @@ -79,7 +79,7 @@ DECLSPEC void hmac_sha256_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVA sha256_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m28600_init (KERN_ATTR_TMPS_ESALT (postgres_sha256_tmp_t, postgres_sha256_t)) +KERNEL_FQ KERNEL_FA void m28600_init (KERN_ATTR_TMPS_ESALT (postgres_sha256_tmp_t, postgres_sha256_t)) { /** * base @@ -163,7 +163,7 @@ KERNEL_FQ void m28600_init (KERN_ATTR_TMPS_ESALT (postgres_sha256_tmp_t, postgre } } -KERNEL_FQ void m28600_loop (KERN_ATTR_TMPS_ESALT (postgres_sha256_tmp_t, postgres_sha256_t)) +KERNEL_FQ KERNEL_FA void m28600_loop (KERN_ATTR_TMPS_ESALT (postgres_sha256_tmp_t, postgres_sha256_t)) { const u64 gid = get_global_id (0); @@ -269,7 +269,7 @@ KERNEL_FQ void m28600_loop (KERN_ATTR_TMPS_ESALT (postgres_sha256_tmp_t, postgre } } -KERNEL_FQ void m28600_comp (KERN_ATTR_TMPS_ESALT (postgres_sha256_tmp_t, postgres_sha256_t)) +KERNEL_FQ KERNEL_FA void m28600_comp (KERN_ATTR_TMPS_ESALT (postgres_sha256_tmp_t, postgres_sha256_t)) { /** * base diff --git a/OpenCL/m28700_a0-optimized.cl b/OpenCL/m28700_a0-optimized.cl index f32c69ccb..d946fdd59 100644 --- a/OpenCL/m28700_a0-optimized.cl +++ b/OpenCL/m28700_a0-optimized.cl @@ -139,7 +139,7 @@ DECLSPEC void hmac_sha256_run (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE sha256_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m28700_m04 (KERN_ATTR_RULES_ESALT (aws4_sig_v4_t)) +KERNEL_FQ KERNEL_FA void m28700_m04 (KERN_ATTR_RULES_ESALT (aws4_sig_v4_t)) { /** * modifier @@ -431,15 +431,15 @@ KERNEL_FQ void m28700_m04 (KERN_ATTR_RULES_ESALT (aws4_sig_v4_t)) } } -KERNEL_FQ void m28700_m08 (KERN_ATTR_RULES_ESALT (aws4_sig_v4_t)) +KERNEL_FQ KERNEL_FA void m28700_m08 (KERN_ATTR_RULES_ESALT (aws4_sig_v4_t)) { } -KERNEL_FQ void m28700_m16 (KERN_ATTR_RULES_ESALT (aws4_sig_v4_t)) +KERNEL_FQ KERNEL_FA void m28700_m16 (KERN_ATTR_RULES_ESALT (aws4_sig_v4_t)) { } -KERNEL_FQ void m28700_s04 (KERN_ATTR_RULES_ESALT (aws4_sig_v4_t)) +KERNEL_FQ KERNEL_FA void m28700_s04 (KERN_ATTR_RULES_ESALT (aws4_sig_v4_t)) { /** * modifier @@ -743,10 +743,10 @@ KERNEL_FQ void m28700_s04 (KERN_ATTR_RULES_ESALT (aws4_sig_v4_t)) } } -KERNEL_FQ void m28700_s08 (KERN_ATTR_RULES_ESALT (aws4_sig_v4_t)) +KERNEL_FQ KERNEL_FA void m28700_s08 (KERN_ATTR_RULES_ESALT (aws4_sig_v4_t)) { } -KERNEL_FQ void m28700_s16 (KERN_ATTR_RULES_ESALT (aws4_sig_v4_t)) +KERNEL_FQ KERNEL_FA void m28700_s16 (KERN_ATTR_RULES_ESALT (aws4_sig_v4_t)) { } diff --git a/OpenCL/m28700_a0-pure.cl b/OpenCL/m28700_a0-pure.cl index 65583b2b0..2fb4615eb 100644 --- a/OpenCL/m28700_a0-pure.cl +++ b/OpenCL/m28700_a0-pure.cl @@ -38,7 +38,7 @@ typedef struct aws4_sig_v4 } aws4_sig_v4_t; -KERNEL_FQ void m28700_mxx (KERN_ATTR_RULES_ESALT (aws4_sig_v4_t)) +KERNEL_FQ KERNEL_FA void m28700_mxx (KERN_ATTR_RULES_ESALT (aws4_sig_v4_t)) { /** * modifier @@ -264,7 +264,7 @@ KERNEL_FQ void m28700_mxx (KERN_ATTR_RULES_ESALT (aws4_sig_v4_t)) } } -KERNEL_FQ void m28700_sxx (KERN_ATTR_RULES_ESALT (aws4_sig_v4_t)) +KERNEL_FQ KERNEL_FA void m28700_sxx (KERN_ATTR_RULES_ESALT (aws4_sig_v4_t)) { /** * modifier diff --git a/OpenCL/m28700_a1-optimized.cl b/OpenCL/m28700_a1-optimized.cl index 5458783f2..9de44dfc9 100644 --- a/OpenCL/m28700_a1-optimized.cl +++ b/OpenCL/m28700_a1-optimized.cl @@ -137,7 +137,7 @@ DECLSPEC void hmac_sha256_run (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE sha256_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m28700_m04 (KERN_ATTR_ESALT (aws4_sig_v4_t)) +KERNEL_FQ KERNEL_FA void m28700_m04 (KERN_ATTR_ESALT (aws4_sig_v4_t)) { /** * modifier @@ -498,15 +498,15 @@ KERNEL_FQ void m28700_m04 (KERN_ATTR_ESALT (aws4_sig_v4_t)) } } -KERNEL_FQ void m28700_m08 (KERN_ATTR_ESALT (aws4_sig_v4_t)) +KERNEL_FQ KERNEL_FA void m28700_m08 (KERN_ATTR_ESALT (aws4_sig_v4_t)) { } -KERNEL_FQ void m28700_m16 (KERN_ATTR_ESALT (aws4_sig_v4_t)) +KERNEL_FQ KERNEL_FA void m28700_m16 (KERN_ATTR_ESALT (aws4_sig_v4_t)) { } -KERNEL_FQ void m28700_s04 (KERN_ATTR_ESALT (aws4_sig_v4_t)) +KERNEL_FQ KERNEL_FA void m28700_s04 (KERN_ATTR_ESALT (aws4_sig_v4_t)) { /** * modifier @@ -879,10 +879,10 @@ KERNEL_FQ void m28700_s04 (KERN_ATTR_ESALT (aws4_sig_v4_t)) } } -KERNEL_FQ void m28700_s08 (KERN_ATTR_ESALT (aws4_sig_v4_t)) +KERNEL_FQ KERNEL_FA void m28700_s08 (KERN_ATTR_ESALT (aws4_sig_v4_t)) { } -KERNEL_FQ void m28700_s16 (KERN_ATTR_ESALT (aws4_sig_v4_t)) +KERNEL_FQ KERNEL_FA void m28700_s16 (KERN_ATTR_ESALT (aws4_sig_v4_t)) { } diff --git a/OpenCL/m28700_a1-pure.cl b/OpenCL/m28700_a1-pure.cl index 2cb8cca7a..b64ae5e79 100644 --- a/OpenCL/m28700_a1-pure.cl +++ b/OpenCL/m28700_a1-pure.cl @@ -36,7 +36,7 @@ typedef struct aws4_sig_v4 } aws4_sig_v4_t; -KERNEL_FQ void m28700_mxx (KERN_ATTR_RULES_ESALT (aws4_sig_v4_t)) +KERNEL_FQ KERNEL_FA void m28700_mxx (KERN_ATTR_RULES_ESALT (aws4_sig_v4_t)) { /** * modifier @@ -285,7 +285,7 @@ KERNEL_FQ void m28700_mxx (KERN_ATTR_RULES_ESALT (aws4_sig_v4_t)) } } -KERNEL_FQ void m28700_sxx (KERN_ATTR_RULES_ESALT (aws4_sig_v4_t)) +KERNEL_FQ KERNEL_FA void m28700_sxx (KERN_ATTR_RULES_ESALT (aws4_sig_v4_t)) { /** * modifier diff --git a/OpenCL/m28700_a3-optimized.cl b/OpenCL/m28700_a3-optimized.cl index 4dff8f5b9..e3d66daa8 100644 --- a/OpenCL/m28700_a3-optimized.cl +++ b/OpenCL/m28700_a3-optimized.cl @@ -701,7 +701,7 @@ DECLSPEC void m28700s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m28700_m04 (KERN_ATTR_ESALT (aws4_sig_v4_t)) +KERNEL_FQ KERNEL_FA void m28700_m04 (KERN_ATTR_ESALT (aws4_sig_v4_t)) { /** * base @@ -750,7 +750,7 @@ KERNEL_FQ void m28700_m04 (KERN_ATTR_ESALT (aws4_sig_v4_t)) m28700m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m28700_m08 (KERN_ATTR_ESALT (aws4_sig_v4_t)) +KERNEL_FQ KERNEL_FA void m28700_m08 (KERN_ATTR_ESALT (aws4_sig_v4_t)) { /** * base @@ -799,7 +799,7 @@ KERNEL_FQ void m28700_m08 (KERN_ATTR_ESALT (aws4_sig_v4_t)) m28700m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m28700_m16 (KERN_ATTR_ESALT (aws4_sig_v4_t)) +KERNEL_FQ KERNEL_FA void m28700_m16 (KERN_ATTR_ESALT (aws4_sig_v4_t)) { /** * base @@ -848,7 +848,7 @@ KERNEL_FQ void m28700_m16 (KERN_ATTR_ESALT (aws4_sig_v4_t)) m28700m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m28700_s04 (KERN_ATTR_ESALT (aws4_sig_v4_t)) +KERNEL_FQ KERNEL_FA void m28700_s04 (KERN_ATTR_ESALT (aws4_sig_v4_t)) { /** * base @@ -897,7 +897,7 @@ KERNEL_FQ void m28700_s04 (KERN_ATTR_ESALT (aws4_sig_v4_t)) m28700s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m28700_s08 (KERN_ATTR_ESALT (aws4_sig_v4_t)) +KERNEL_FQ KERNEL_FA void m28700_s08 (KERN_ATTR_ESALT (aws4_sig_v4_t)) { /** * base @@ -946,7 +946,7 @@ KERNEL_FQ void m28700_s08 (KERN_ATTR_ESALT (aws4_sig_v4_t)) m28700s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m28700_s16 (KERN_ATTR_ESALT (aws4_sig_v4_t)) +KERNEL_FQ KERNEL_FA void m28700_s16 (KERN_ATTR_ESALT (aws4_sig_v4_t)) { /** * base diff --git a/OpenCL/m28700_a3-pure.cl b/OpenCL/m28700_a3-pure.cl index d6111755d..11abdb800 100644 --- a/OpenCL/m28700_a3-pure.cl +++ b/OpenCL/m28700_a3-pure.cl @@ -36,7 +36,7 @@ typedef struct aws4_sig_v4 } aws4_sig_v4_t; -KERNEL_FQ void m28700_mxx (KERN_ATTR_VECTOR_ESALT (aws4_sig_v4_t)) +KERNEL_FQ KERNEL_FA void m28700_mxx (KERN_ATTR_VECTOR_ESALT (aws4_sig_v4_t)) { /** * modifier @@ -246,7 +246,7 @@ KERNEL_FQ void m28700_mxx (KERN_ATTR_VECTOR_ESALT (aws4_sig_v4_t)) } } -KERNEL_FQ void m28700_sxx (KERN_ATTR_VECTOR_ESALT (aws4_sig_v4_t)) +KERNEL_FQ KERNEL_FA void m28700_sxx (KERN_ATTR_VECTOR_ESALT (aws4_sig_v4_t)) { /** * modifier diff --git a/OpenCL/m28800-pure.cl b/OpenCL/m28800-pure.cl index ed167af6d..b822a17b8 100644 --- a/OpenCL/m28800-pure.cl +++ b/OpenCL/m28800-pure.cl @@ -114,7 +114,7 @@ DECLSPEC void hmac_sha1_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE sha1_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m28800_init (KERN_ATTR_TMPS_ESALT (krb5db_17_tmp_t, krb5db_17_t)) +KERNEL_FQ KERNEL_FA void m28800_init (KERN_ATTR_TMPS_ESALT (krb5db_17_tmp_t, krb5db_17_t)) { /** * base @@ -192,7 +192,7 @@ KERNEL_FQ void m28800_init (KERN_ATTR_TMPS_ESALT (krb5db_17_tmp_t, krb5db_17_t)) } } -KERNEL_FQ void m28800_loop (KERN_ATTR_TMPS_ESALT (krb5db_17_tmp_t, krb5db_17_t)) +KERNEL_FQ KERNEL_FA void m28800_loop (KERN_ATTR_TMPS_ESALT (krb5db_17_tmp_t, krb5db_17_t)) { /** * base @@ -280,7 +280,7 @@ KERNEL_FQ void m28800_loop (KERN_ATTR_TMPS_ESALT (krb5db_17_tmp_t, krb5db_17_t)) } } -KERNEL_FQ void m28800_comp (KERN_ATTR_TMPS_ESALT (krb5db_17_tmp_t, krb5db_17_t)) +KERNEL_FQ KERNEL_FA void m28800_comp (KERN_ATTR_TMPS_ESALT (krb5db_17_tmp_t, krb5db_17_t)) { /** * base diff --git a/OpenCL/m28900-pure.cl b/OpenCL/m28900-pure.cl index 075ed4e94..9c018bd7e 100644 --- a/OpenCL/m28900-pure.cl +++ b/OpenCL/m28900-pure.cl @@ -114,7 +114,7 @@ DECLSPEC void hmac_sha1_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE sha1_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m28900_init (KERN_ATTR_TMPS_ESALT (krb5db_18_tmp_t, krb5db_18_t)) +KERNEL_FQ KERNEL_FA void m28900_init (KERN_ATTR_TMPS_ESALT (krb5db_18_tmp_t, krb5db_18_t)) { /** * base @@ -192,7 +192,7 @@ KERNEL_FQ void m28900_init (KERN_ATTR_TMPS_ESALT (krb5db_18_tmp_t, krb5db_18_t)) } } -KERNEL_FQ void m28900_loop (KERN_ATTR_TMPS_ESALT (krb5db_18_tmp_t, krb5db_18_t)) +KERNEL_FQ KERNEL_FA void m28900_loop (KERN_ATTR_TMPS_ESALT (krb5db_18_tmp_t, krb5db_18_t)) { /** * base @@ -280,7 +280,7 @@ KERNEL_FQ void m28900_loop (KERN_ATTR_TMPS_ESALT (krb5db_18_tmp_t, krb5db_18_t)) } } -KERNEL_FQ void m28900_comp (KERN_ATTR_TMPS_ESALT (krb5db_18_tmp_t, krb5db_18_t)) +KERNEL_FQ KERNEL_FA void m28900_comp (KERN_ATTR_TMPS_ESALT (krb5db_18_tmp_t, krb5db_18_t)) { /** * base diff --git a/OpenCL/m29000_a0-pure.cl b/OpenCL/m29000_a0-pure.cl index b2685c9ca..30c774b91 100644 --- a/OpenCL/m29000_a0-pure.cl +++ b/OpenCL/m29000_a0-pure.cl @@ -26,7 +26,7 @@ typedef struct sha1_double_salt } sha1_double_salt_t; -KERNEL_FQ void m29000_mxx (KERN_ATTR_RULES_ESALT (sha1_double_salt_t)) +KERNEL_FQ KERNEL_FA void m29000_mxx (KERN_ATTR_RULES_ESALT (sha1_double_salt_t)) { /** * modifier @@ -112,7 +112,7 @@ KERNEL_FQ void m29000_mxx (KERN_ATTR_RULES_ESALT (sha1_double_salt_t)) } } -KERNEL_FQ void m29000_sxx (KERN_ATTR_RULES_ESALT (sha1_double_salt_t)) +KERNEL_FQ KERNEL_FA void m29000_sxx (KERN_ATTR_RULES_ESALT (sha1_double_salt_t)) { /** * modifier diff --git a/OpenCL/m29000_a1-pure.cl b/OpenCL/m29000_a1-pure.cl index eb7efadd1..0e4ef3265 100644 --- a/OpenCL/m29000_a1-pure.cl +++ b/OpenCL/m29000_a1-pure.cl @@ -24,7 +24,7 @@ typedef struct sha1_double_salt } sha1_double_salt_t; -KERNEL_FQ void m29000_mxx (KERN_ATTR_ESALT (sha1_double_salt_t)) +KERNEL_FQ KERNEL_FA void m29000_mxx (KERN_ATTR_ESALT (sha1_double_salt_t)) { /** * modifier @@ -115,7 +115,7 @@ KERNEL_FQ void m29000_mxx (KERN_ATTR_ESALT (sha1_double_salt_t)) } } -KERNEL_FQ void m29000_sxx (KERN_ATTR_ESALT (sha1_double_salt_t)) +KERNEL_FQ KERNEL_FA void m29000_sxx (KERN_ATTR_ESALT (sha1_double_salt_t)) { /** * modifier diff --git a/OpenCL/m29000_a3-pure.cl b/OpenCL/m29000_a3-pure.cl index 2d7eb194f..19823bfcd 100644 --- a/OpenCL/m29000_a3-pure.cl +++ b/OpenCL/m29000_a3-pure.cl @@ -24,7 +24,7 @@ typedef struct sha1_double_salt } sha1_double_salt_t; -KERNEL_FQ void m29000_mxx (KERN_ATTR_VECTOR_ESALT (sha1_double_salt_t)) +KERNEL_FQ KERNEL_FA void m29000_mxx (KERN_ATTR_VECTOR_ESALT (sha1_double_salt_t)) { /** * modifier @@ -121,7 +121,7 @@ KERNEL_FQ void m29000_mxx (KERN_ATTR_VECTOR_ESALT (sha1_double_salt_t)) } } -KERNEL_FQ void m29000_sxx (KERN_ATTR_VECTOR_ESALT (sha1_double_salt_t)) +KERNEL_FQ KERNEL_FA void m29000_sxx (KERN_ATTR_VECTOR_ESALT (sha1_double_salt_t)) { /** * modifier diff --git a/OpenCL/m29100_a0-pure.cl b/OpenCL/m29100_a0-pure.cl index 1d53b0036..6176de75d 100644 --- a/OpenCL/m29100_a0-pure.cl +++ b/OpenCL/m29100_a0-pure.cl @@ -17,7 +17,7 @@ #endif -KERNEL_FQ void m29100_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m29100_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -104,7 +104,7 @@ KERNEL_FQ void m29100_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m29100_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m29100_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m29100_a1-pure.cl b/OpenCL/m29100_a1-pure.cl index e6bb17319..de8f95da2 100644 --- a/OpenCL/m29100_a1-pure.cl +++ b/OpenCL/m29100_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m29100_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m29100_mxx (KERN_ATTR_BASIC ()) { /** @@ -124,7 +124,7 @@ KERNEL_FQ void m29100_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m29100_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m29100_sxx (KERN_ATTR_BASIC ()) { /** diff --git a/OpenCL/m29100_a3-pure.cl b/OpenCL/m29100_a3-pure.cl index 94c38d7da..d8aff6810 100644 --- a/OpenCL/m29100_a3-pure.cl +++ b/OpenCL/m29100_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha1.cl) #endif -KERNEL_FQ void m29100_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m29100_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -110,7 +110,7 @@ KERNEL_FQ void m29100_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m29100_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m29100_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m29200_a0-pure.cl b/OpenCL/m29200_a0-pure.cl index 017fc1c8e..e16fd9f2e 100644 --- a/OpenCL/m29200_a0-pure.cl +++ b/OpenCL/m29200_a0-pure.cl @@ -32,7 +32,7 @@ typedef struct radmin3 } radmin3_t; -KERNEL_FQ void m29200_mxx (KERN_ATTR_RULES_ESALT (radmin3_t)) +KERNEL_FQ KERNEL_FA void m29200_mxx (KERN_ATTR_RULES_ESALT (radmin3_t)) { /** * modifier @@ -288,7 +288,7 @@ KERNEL_FQ void m29200_mxx (KERN_ATTR_RULES_ESALT (radmin3_t)) } } -KERNEL_FQ void m29200_sxx (KERN_ATTR_RULES_ESALT (radmin3_t)) +KERNEL_FQ KERNEL_FA void m29200_sxx (KERN_ATTR_RULES_ESALT (radmin3_t)) { /** * modifier diff --git a/OpenCL/m29200_a1-pure.cl b/OpenCL/m29200_a1-pure.cl index 9a44a3efe..d0d30a1e9 100644 --- a/OpenCL/m29200_a1-pure.cl +++ b/OpenCL/m29200_a1-pure.cl @@ -30,7 +30,7 @@ typedef struct radmin3 } radmin3_t; -KERNEL_FQ void m29200_mxx (KERN_ATTR_ESALT (radmin3_t)) +KERNEL_FQ KERNEL_FA void m29200_mxx (KERN_ATTR_ESALT (radmin3_t)) { /** * modifier @@ -291,7 +291,7 @@ KERNEL_FQ void m29200_mxx (KERN_ATTR_ESALT (radmin3_t)) } } -KERNEL_FQ void m29200_sxx (KERN_ATTR_ESALT (radmin3_t)) +KERNEL_FQ KERNEL_FA void m29200_sxx (KERN_ATTR_ESALT (radmin3_t)) { /** * modifier diff --git a/OpenCL/m29200_a3-pure.cl b/OpenCL/m29200_a3-pure.cl index 1757589da..e8ea5b85b 100644 --- a/OpenCL/m29200_a3-pure.cl +++ b/OpenCL/m29200_a3-pure.cl @@ -30,7 +30,7 @@ typedef struct radmin3 } radmin3_t; -KERNEL_FQ void m29200_mxx (KERN_ATTR_VECTOR_ESALT (radmin3_t)) +KERNEL_FQ KERNEL_FA void m29200_mxx (KERN_ATTR_VECTOR_ESALT (radmin3_t)) { /** * modifier @@ -298,7 +298,7 @@ KERNEL_FQ void m29200_mxx (KERN_ATTR_VECTOR_ESALT (radmin3_t)) } } -KERNEL_FQ void m29200_sxx (KERN_ATTR_VECTOR_ESALT (radmin3_t)) +KERNEL_FQ KERNEL_FA void m29200_sxx (KERN_ATTR_VECTOR_ESALT (radmin3_t)) { /** * modifier diff --git a/OpenCL/m29600-pure.cl b/OpenCL/m29600-pure.cl index 85406f53e..e07a0637e 100644 --- a/OpenCL/m29600-pure.cl +++ b/OpenCL/m29600-pure.cl @@ -75,7 +75,7 @@ DECLSPEC void hmac_sha1_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE sha1_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m29600_init (KERN_ATTR_TMPS_ESALT (pbkdf_sha1_tmp_t,terra_t)) +KERNEL_FQ KERNEL_FA void m29600_init (KERN_ATTR_TMPS_ESALT (pbkdf_sha1_tmp_t,terra_t)) { const u64 gid = get_global_id (0); if (gid >= GID_CNT) return; @@ -155,7 +155,7 @@ KERNEL_FQ void m29600_init (KERN_ATTR_TMPS_ESALT (pbkdf_sha1_tmp_t,terra_t)) } } -KERNEL_FQ void m29600_loop (KERN_ATTR_TMPS_ESALT (pbkdf_sha1_tmp_t,terra_t)) +KERNEL_FQ KERNEL_FA void m29600_loop (KERN_ATTR_TMPS_ESALT (pbkdf_sha1_tmp_t,terra_t)) { const u64 gid = get_global_id (0); @@ -241,7 +241,7 @@ KERNEL_FQ void m29600_loop (KERN_ATTR_TMPS_ESALT (pbkdf_sha1_tmp_t,terra_t)) } } -KERNEL_FQ void m29600_comp (KERN_ATTR_TMPS_ESALT (pbkdf_sha1_tmp_t,terra_t)) +KERNEL_FQ KERNEL_FA void m29600_comp (KERN_ATTR_TMPS_ESALT (pbkdf_sha1_tmp_t,terra_t)) { /** * base diff --git a/OpenCL/m29700-pure.cl b/OpenCL/m29700-pure.cl index 8eaf8ae03..61171e391 100644 --- a/OpenCL/m29700-pure.cl +++ b/OpenCL/m29700-pure.cl @@ -45,7 +45,7 @@ typedef struct keepass } keepass_t; -KERNEL_FQ void m29700_init (KERN_ATTR_TMPS_ESALT (keepass_tmp_t, keepass_t)) +KERNEL_FQ KERNEL_FA void m29700_init (KERN_ATTR_TMPS_ESALT (keepass_tmp_t, keepass_t)) { /** * base @@ -84,7 +84,7 @@ KERNEL_FQ void m29700_init (KERN_ATTR_TMPS_ESALT (keepass_tmp_t, keepass_t)) tmps[gid].tmp_digest[7] = digest[7]; } -KERNEL_FQ void m29700_loop (KERN_ATTR_TMPS_ESALT (keepass_tmp_t, keepass_t)) +KERNEL_FQ KERNEL_FA void m29700_loop (KERN_ATTR_TMPS_ESALT (keepass_tmp_t, keepass_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); @@ -172,7 +172,7 @@ KERNEL_FQ void m29700_loop (KERN_ATTR_TMPS_ESALT (keepass_tmp_t, keepass_t)) tmps[gid].tmp_digest[7] = data1[3]; } -KERNEL_FQ void m29700_comp (KERN_ATTR_TMPS_ESALT (keepass_tmp_t, keepass_t)) +KERNEL_FQ KERNEL_FA void m29700_comp (KERN_ATTR_TMPS_ESALT (keepass_tmp_t, keepass_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m29800-pure.cl b/OpenCL/m29800-pure.cl deleted file mode 100644 index c72f5c267..000000000 --- a/OpenCL/m29800-pure.cl +++ /dev/null @@ -1,680 +0,0 @@ -/** - * Author......: See docs/credits.txt - * License.....: MIT - */ - -#ifdef KERNEL_STATIC -#include M2S(INCLUDE_PATH/inc_vendor.h) -#include M2S(INCLUDE_PATH/inc_types.h) -#include M2S(INCLUDE_PATH/inc_platform.cl) -#include M2S(INCLUDE_PATH/inc_common.cl) -#include M2S(INCLUDE_PATH/inc_hash_sha256.cl) -#include M2S(INCLUDE_PATH/inc_cipher_aes.cl) -#endif - -typedef struct -{ - #ifndef SCRYPT_TMP_ELEM - #define SCRYPT_TMP_ELEM 1 - #endif - - uint4 P[SCRYPT_TMP_ELEM]; - -} scrypt_tmp_t; - -#if defined IS_CUDA || defined IS_HIP - -inline __device__ uint4 operator & (const uint4 a, const u32 b) { return make_uint4 ((a.x & b ), (a.y & b ), (a.z & b ), (a.w & b )); } -inline __device__ uint4 operator << (const uint4 a, const u32 b) { return make_uint4 ((a.x << b ), (a.y << b ), (a.z << b ), (a.w << b )); } -inline __device__ uint4 operator >> (const uint4 a, const u32 b) { return make_uint4 ((a.x >> b ), (a.y >> b ), (a.z >> b ), (a.w >> b )); } -inline __device__ uint4 operator + (const uint4 a, const uint4 b) { return make_uint4 ((a.x + b.x), (a.y + b.y), (a.z + b.z), (a.w + b.w)); } -inline __device__ uint4 operator ^ (const uint4 a, const uint4 b) { return make_uint4 ((a.x ^ b.x), (a.y ^ b.y), (a.z ^ b.z), (a.w ^ b.w)); } -inline __device__ uint4 operator | (const uint4 a, const uint4 b) { return make_uint4 ((a.x | b.x), (a.y | b.y), (a.z | b.z), (a.w | b.w)); } -inline __device__ void operator ^= ( uint4 &a, const uint4 b) { a.x ^= b.x; a.y ^= b.y; a.z ^= b.z; a.w ^= b.w; } - -inline __device__ uint4 rotate (const uint4 a, const int n) -{ - return ((a << n) | ((a >> (32 - n)))); -} - -#endif - -DECLSPEC uint4 hc_swap32_4 (uint4 v) -{ - return (rotate ((v & 0x00FF00FF), 24u) | rotate ((v & 0xFF00FF00), 8u)); -} - -#define GET_SCRYPT_CNT(r,p) (2 * (r) * 16 * (p)) -#define GET_SMIX_CNT(r,N) (2 * (r) * 16 * (N)) -#define GET_STATE_CNT(r) (2 * (r) * 16) - -#define SCRYPT_CNT GET_SCRYPT_CNT (SCRYPT_R, SCRYPT_P) -#define SCRYPT_CNT4 (SCRYPT_CNT / 4) -#define STATE_CNT GET_STATE_CNT (SCRYPT_R) -#define STATE_CNT4 (STATE_CNT / 4) - -#define ADD_ROTATE_XOR(r,i1,i2,s) (r) ^= rotate ((i1) + (i2), (s)); - -#if defined IS_CUDA || defined IS_HIP - -#define SALSA20_2R() \ -{ \ - ADD_ROTATE_XOR (X1, X0, X3, 7); \ - ADD_ROTATE_XOR (X2, X1, X0, 9); \ - ADD_ROTATE_XOR (X3, X2, X1, 13); \ - ADD_ROTATE_XOR (X0, X3, X2, 18); \ - \ - X1 = make_uint4 (X1.w, X1.x, X1.y, X1.z); \ - X2 = make_uint4 (X2.z, X2.w, X2.x, X2.y); \ - X3 = make_uint4 (X3.y, X3.z, X3.w, X3.x); \ - \ - ADD_ROTATE_XOR (X3, X0, X1, 7); \ - ADD_ROTATE_XOR (X2, X3, X0, 9); \ - ADD_ROTATE_XOR (X1, X2, X3, 13); \ - ADD_ROTATE_XOR (X0, X1, X2, 18); \ - \ - X1 = make_uint4 (X1.y, X1.z, X1.w, X1.x); \ - X2 = make_uint4 (X2.z, X2.w, X2.x, X2.y); \ - X3 = make_uint4 (X3.w, X3.x, X3.y, X3.z); \ -} -#elif defined IS_METAL -#define SALSA20_2R() \ -{ \ - ADD_ROTATE_XOR (X1, X0, X3, 7); \ - ADD_ROTATE_XOR (X2, X1, X0, 9); \ - ADD_ROTATE_XOR (X3, X2, X1, 13); \ - ADD_ROTATE_XOR (X0, X3, X2, 18); \ - \ - X1 = X1.wxyz; \ - X2 = X2.zwxy; \ - X3 = X3.yzwx; \ - \ - ADD_ROTATE_XOR (X3, X0, X1, 7); \ - ADD_ROTATE_XOR (X2, X3, X0, 9); \ - ADD_ROTATE_XOR (X1, X2, X3, 13); \ - ADD_ROTATE_XOR (X0, X1, X2, 18); \ - \ - X1 = X1.yzwx; \ - X2 = X2.zwxy; \ - X3 = X3.wxyz; \ -} -#else -#define SALSA20_2R() \ -{ \ - ADD_ROTATE_XOR (X1, X0, X3, 7); \ - ADD_ROTATE_XOR (X2, X1, X0, 9); \ - ADD_ROTATE_XOR (X3, X2, X1, 13); \ - ADD_ROTATE_XOR (X0, X3, X2, 18); \ - \ - X1 = X1.s3012; \ - X2 = X2.s2301; \ - X3 = X3.s1230; \ - \ - ADD_ROTATE_XOR (X3, X0, X1, 7); \ - ADD_ROTATE_XOR (X2, X3, X0, 9); \ - ADD_ROTATE_XOR (X1, X2, X3, 13); \ - ADD_ROTATE_XOR (X0, X1, X2, 18); \ - \ - X1 = X1.s1230; \ - X2 = X2.s2301; \ - X3 = X3.s3012; \ -} -#endif - -#define Coord(xd4,y,z) (((xd4) * ySIZE * zSIZE) + ((y) * zSIZE) + (z)) -#define CO Coord(xd4,y,z) - -DECLSPEC void salsa_r (PRIVATE_AS uint4 *TI) -{ - uint4 R0 = TI[STATE_CNT4 - 4]; - uint4 R1 = TI[STATE_CNT4 - 3]; - uint4 R2 = TI[STATE_CNT4 - 2]; - uint4 R3 = TI[STATE_CNT4 - 1]; - - for (int i = 0; i < STATE_CNT4; i += 4) - { - uint4 Y0 = TI[i + 0]; - uint4 Y1 = TI[i + 1]; - uint4 Y2 = TI[i + 2]; - uint4 Y3 = TI[i + 3]; - - R0 = R0 ^ Y0; - R1 = R1 ^ Y1; - R2 = R2 ^ Y2; - R3 = R3 ^ Y3; - - uint4 X0 = R0; - uint4 X1 = R1; - uint4 X2 = R2; - uint4 X3 = R3; - - SALSA20_2R (); - SALSA20_2R (); - SALSA20_2R (); - SALSA20_2R (); - - R0 = R0 + X0; - R1 = R1 + X1; - R2 = R2 + X2; - R3 = R3 + X3; - - TI[i + 0] = R0; - TI[i + 1] = R1; - TI[i + 2] = R2; - TI[i + 3] = R3; - } - - #if SCRYPT_R > 1 - - uint4 TT[STATE_CNT4 / 2]; - - for (int dst_off = 0, src_off = 4; src_off < STATE_CNT4; dst_off += 4, src_off += 8) - { - TT[dst_off + 0] = TI[src_off + 0]; - TT[dst_off + 1] = TI[src_off + 1]; - TT[dst_off + 2] = TI[src_off + 2]; - TT[dst_off + 3] = TI[src_off + 3]; - } - - for (int dst_off = 4, src_off = 8; src_off < STATE_CNT4; dst_off += 4, src_off += 8) - { - TI[dst_off + 0] = TI[src_off + 0]; - TI[dst_off + 1] = TI[src_off + 1]; - TI[dst_off + 2] = TI[src_off + 2]; - TI[dst_off + 3] = TI[src_off + 3]; - } - - for (int dst_off = STATE_CNT4 / 2, src_off = 0; dst_off < STATE_CNT4; dst_off += 4, src_off += 4) - { - TI[dst_off + 0] = TT[src_off + 0]; - TI[dst_off + 1] = TT[src_off + 1]; - TI[dst_off + 2] = TT[src_off + 2]; - TI[dst_off + 3] = TT[src_off + 3]; - } - - #endif -} - -DECLSPEC void scrypt_smix_init (PRIVATE_AS uint4 *X, GLOBAL_AS uint4 *V0, GLOBAL_AS uint4 *V1, GLOBAL_AS uint4 *V2, GLOBAL_AS uint4 *V3, const u64 gid) -{ - const u32 ySIZE = SCRYPT_N / SCRYPT_TMTO; - const u32 zSIZE = STATE_CNT4; - - const u32 x = (u32) gid; - - const u32 xd4 = x / 4; - const u32 xm4 = x & 3; - - GLOBAL_AS uint4 *V; - - switch (xm4) - { - case 0: V = V0; break; - case 1: V = V1; break; - case 2: V = V2; break; - case 3: V = V3; break; - } - - for (u32 y = 0; y < ySIZE; y++) - { - for (u32 z = 0; z < zSIZE; z++) V[CO] = X[z]; - - for (u32 i = 0; i < SCRYPT_TMTO; i++) salsa_r (X); - } -} - -DECLSPEC void scrypt_smix_loop (PRIVATE_AS uint4 *X, GLOBAL_AS uint4 *V0, GLOBAL_AS uint4 *V1, GLOBAL_AS uint4 *V2, GLOBAL_AS uint4 *V3, const u64 gid) -{ - const u32 ySIZE = SCRYPT_N / SCRYPT_TMTO; - const u32 zSIZE = STATE_CNT4; - - const u32 x = (u32) gid; - - const u32 xd4 = x / 4; - const u32 xm4 = x & 3; - - GLOBAL_AS uint4 *V; - - switch (xm4) - { - case 0: V = V0; break; - case 1: V = V1; break; - case 2: V = V2; break; - case 3: V = V3; break; - } - - // note: fixed 1024 iterations = forced -u 1024 - - for (u32 N_pos = 0; N_pos < 1024; N_pos++) - { - const u32 k = X[zSIZE - 4].x & (SCRYPT_N - 1); - - const u32 y = k / SCRYPT_TMTO; - - const u32 km = k - (y * SCRYPT_TMTO); - - uint4 T[STATE_CNT4]; - - for (u32 z = 0; z < zSIZE; z++) T[z] = V[CO]; - - for (u32 i = 0; i < km; i++) salsa_r (T); - - for (u32 z = 0; z < zSIZE; z++) X[z] ^= T[z]; - - salsa_r (X); - } -} - -KERNEL_FQ void m29800_init (KERN_ATTR_TMPS (scrypt_tmp_t)) -{ - /** - * base - */ - - const u64 gid = get_global_id (0); - - if (gid >= GID_CNT) return; - - u32 w[128] = { 0 }; - - hc_enc_t hc_enc; - - hc_enc_init (&hc_enc); - - const int w_len = hc_enc_next_global (&hc_enc, pws[gid].i, pws[gid].pw_len, 256, w, sizeof (w)); - - if (w_len == -1) return; - - // utf16le to utf16be - - for (int i = 0, j = 0; i < w_len; i += 4, j += 1) - { - w[j] = ((w[j] >> 8) & 0x00ff00ff) - | ((w[j] << 8) & 0xff00ff00); - } - - sha256_hmac_ctx_t sha256_hmac_ctx; - - sha256_hmac_init_swap (&sha256_hmac_ctx, w, w_len); - - u32 x0[4] = { 0 }; - u32 x1[4] = { 0 }; - u32 x2[4] = { 0 }; - u32 x3[4] = { 0 }; - - x0[0] = salt_bufs[SALT_POS_HOST].salt_buf[0]; - x0[1] = salt_bufs[SALT_POS_HOST].salt_buf[1]; - - sha256_hmac_update_64 (&sha256_hmac_ctx, x0, x1, x2, x3, 8); - - for (u32 i = 0, j = 1, k = 0; i < SCRYPT_CNT; i += 8, j += 1, k += 2) - { - sha256_hmac_ctx_t sha256_hmac_ctx2 = sha256_hmac_ctx; - - u32 w0[4]; - u32 w1[4]; - u32 w2[4]; - u32 w3[4]; - - w0[0] = j; - w0[1] = 0; - w0[2] = 0; - w0[3] = 0; - w1[0] = 0; - w1[1] = 0; - w1[2] = 0; - w1[3] = 0; - w2[0] = 0; - w2[1] = 0; - w2[2] = 0; - w2[3] = 0; - w3[0] = 0; - w3[1] = 0; - w3[2] = 0; - w3[3] = 0; - - sha256_hmac_update_64 (&sha256_hmac_ctx2, w0, w1, w2, w3, 4); - - sha256_hmac_final (&sha256_hmac_ctx2); - - u32 digest[8]; - - digest[0] = sha256_hmac_ctx2.opad.h[0]; - digest[1] = sha256_hmac_ctx2.opad.h[1]; - digest[2] = sha256_hmac_ctx2.opad.h[2]; - digest[3] = sha256_hmac_ctx2.opad.h[3]; - digest[4] = sha256_hmac_ctx2.opad.h[4]; - digest[5] = sha256_hmac_ctx2.opad.h[5]; - digest[6] = sha256_hmac_ctx2.opad.h[6]; - digest[7] = sha256_hmac_ctx2.opad.h[7]; - - #if defined IS_CUDA || defined IS_HIP - const uint4 tmp0 = make_uint4 (digest[0], digest[1], digest[2], digest[3]); - const uint4 tmp1 = make_uint4 (digest[4], digest[5], digest[6], digest[7]); - #elif defined IS_METAL - const uint4 tmp0 = uint4 (digest[0], digest[1], digest[2], digest[3]); - const uint4 tmp1 = uint4 (digest[4], digest[5], digest[6], digest[7]); - #else - const uint4 tmp0 = (uint4) (digest[0], digest[1], digest[2], digest[3]); - const uint4 tmp1 = (uint4) (digest[4], digest[5], digest[6], digest[7]); - #endif - - tmps[gid].P[k + 0] = tmp0; - tmps[gid].P[k + 1] = tmp1; - } - - for (u32 l = 0; l < SCRYPT_CNT4; l += 4) - { - uint4 T[4]; - - T[0] = tmps[gid].P[l + 0]; - T[1] = tmps[gid].P[l + 1]; - T[2] = tmps[gid].P[l + 2]; - T[3] = tmps[gid].P[l + 3]; - - T[0] = hc_swap32_4 (T[0]); - T[1] = hc_swap32_4 (T[1]); - T[2] = hc_swap32_4 (T[2]); - T[3] = hc_swap32_4 (T[3]); - - uint4 X[4]; - - #if defined IS_CUDA || defined IS_HIP - X[0] = make_uint4 (T[0].x, T[1].y, T[2].z, T[3].w); - X[1] = make_uint4 (T[1].x, T[2].y, T[3].z, T[0].w); - X[2] = make_uint4 (T[2].x, T[3].y, T[0].z, T[1].w); - X[3] = make_uint4 (T[3].x, T[0].y, T[1].z, T[2].w); - #elif defined IS_METAL - X[0] = uint4 (T[0].x, T[1].y, T[2].z, T[3].w); - X[1] = uint4 (T[1].x, T[2].y, T[3].z, T[0].w); - X[2] = uint4 (T[2].x, T[3].y, T[0].z, T[1].w); - X[3] = uint4 (T[3].x, T[0].y, T[1].z, T[2].w); - #else - X[0] = (uint4) (T[0].x, T[1].y, T[2].z, T[3].w); - X[1] = (uint4) (T[1].x, T[2].y, T[3].z, T[0].w); - X[2] = (uint4) (T[2].x, T[3].y, T[0].z, T[1].w); - X[3] = (uint4) (T[3].x, T[0].y, T[1].z, T[2].w); - #endif - - tmps[gid].P[l + 0] = X[0]; - tmps[gid].P[l + 1] = X[1]; - tmps[gid].P[l + 2] = X[2]; - tmps[gid].P[l + 3] = X[3]; - } -} - -KERNEL_FQ void m29800_loop_prepare (KERN_ATTR_TMPS (scrypt_tmp_t)) -{ - /** - * base - */ - - const u64 gid = get_global_id (0); - const u64 lid = get_local_id (0); - - if (gid >= GID_CNT) return; - - // SCRYPT part, init V - - GLOBAL_AS uint4 *d_scrypt0_buf = (GLOBAL_AS uint4 *) d_extra0_buf; - GLOBAL_AS uint4 *d_scrypt1_buf = (GLOBAL_AS uint4 *) d_extra1_buf; - GLOBAL_AS uint4 *d_scrypt2_buf = (GLOBAL_AS uint4 *) d_extra2_buf; - GLOBAL_AS uint4 *d_scrypt3_buf = (GLOBAL_AS uint4 *) d_extra3_buf; - - uint4 X[STATE_CNT4]; - - const u32 P_offset = SALT_REPEAT * STATE_CNT4; - - GLOBAL_AS uint4 *P = tmps[gid].P + P_offset; - - for (int z = 0; z < STATE_CNT4; z++) X[z] = P[z]; - - scrypt_smix_init (X, d_scrypt0_buf, d_scrypt1_buf, d_scrypt2_buf, d_scrypt3_buf, gid); - - for (int z = 0; z < STATE_CNT4; z++) P[z] = X[z]; -} - -KERNEL_FQ void m29800_loop (KERN_ATTR_TMPS (scrypt_tmp_t)) -{ - const u64 gid = get_global_id (0); - const u64 lid = get_local_id (0); - - if (gid >= GID_CNT) return; - - GLOBAL_AS uint4 *d_scrypt0_buf = (GLOBAL_AS uint4 *) d_extra0_buf; - GLOBAL_AS uint4 *d_scrypt1_buf = (GLOBAL_AS uint4 *) d_extra1_buf; - GLOBAL_AS uint4 *d_scrypt2_buf = (GLOBAL_AS uint4 *) d_extra2_buf; - GLOBAL_AS uint4 *d_scrypt3_buf = (GLOBAL_AS uint4 *) d_extra3_buf; - - uint4 X[STATE_CNT4]; - - const u32 P_offset = SALT_REPEAT * STATE_CNT4; - - GLOBAL_AS uint4 *P = tmps[gid].P + P_offset; - - for (int z = 0; z < STATE_CNT4; z++) X[z] = P[z]; - - scrypt_smix_loop (X, d_scrypt0_buf, d_scrypt1_buf, d_scrypt2_buf, d_scrypt3_buf, gid); - - for (int z = 0; z < STATE_CNT4; z++) P[z] = X[z]; -} - -KERNEL_FQ void m29800_comp (KERN_ATTR_TMPS (scrypt_tmp_t)) -{ - const u64 gid = get_global_id (0); - const u64 lid = get_local_id (0); - const u64 lsz = get_local_size (0); - - /** - * aes shared - */ - - #ifdef REAL_SHM - - LOCAL_VK u32 s_td0[256]; - LOCAL_VK u32 s_td1[256]; - LOCAL_VK u32 s_td2[256]; - LOCAL_VK u32 s_td3[256]; - LOCAL_VK u32 s_td4[256]; - - LOCAL_VK u32 s_te0[256]; - LOCAL_VK u32 s_te1[256]; - LOCAL_VK u32 s_te2[256]; - LOCAL_VK u32 s_te3[256]; - LOCAL_VK u32 s_te4[256]; - - for (u32 i = lid; i < 256; i += lsz) - { - s_td0[i] = td0[i]; - s_td1[i] = td1[i]; - s_td2[i] = td2[i]; - s_td3[i] = td3[i]; - s_td4[i] = td4[i]; - - s_te0[i] = te0[i]; - s_te1[i] = te1[i]; - s_te2[i] = te2[i]; - s_te3[i] = te3[i]; - s_te4[i] = te4[i]; - } - - SYNC_THREADS (); - - #else - - CONSTANT_AS u32a *s_td0 = td0; - CONSTANT_AS u32a *s_td1 = td1; - CONSTANT_AS u32a *s_td2 = td2; - CONSTANT_AS u32a *s_td3 = td3; - CONSTANT_AS u32a *s_td4 = td4; - - CONSTANT_AS u32a *s_te0 = te0; - CONSTANT_AS u32a *s_te1 = te1; - CONSTANT_AS u32a *s_te2 = te2; - CONSTANT_AS u32a *s_te3 = te3; - CONSTANT_AS u32a *s_te4 = te4; - - #endif - - if (gid >= GID_CNT) return; - - /** - * 2nd pbkdf2, creates B - */ - - u32 w[128] = { 0 }; - - hc_enc_t hc_enc; - - hc_enc_init (&hc_enc); - - const int w_len = hc_enc_next_global (&hc_enc, pws[gid].i, pws[gid].pw_len, 256, w, sizeof (w)); - - if (w_len == -1) return; - - // utf16le to utf16be - - for (int i = 0, j = 0; i < w_len; i += 4, j += 1) - { - w[j] = ((w[j] >> 8) & 0x00ff00ff) - | ((w[j] << 8) & 0xff00ff00); - } - - sha256_hmac_ctx_t ctx; - - sha256_hmac_init_swap (&ctx, w, w_len); - - u32 w0[4]; - u32 w1[4]; - u32 w2[4]; - u32 w3[4]; - - for (u32 l = 0; l < SCRYPT_CNT4; l += 4) - { - uint4 X[4]; - - X[0] = tmps[gid].P[l + 0]; - X[1] = tmps[gid].P[l + 1]; - X[2] = tmps[gid].P[l + 2]; - X[3] = tmps[gid].P[l + 3]; - - uint4 T[4]; - - #if defined IS_CUDA || defined IS_HIP - T[0] = make_uint4 (X[0].x, X[3].y, X[2].z, X[1].w); - T[1] = make_uint4 (X[1].x, X[0].y, X[3].z, X[2].w); - T[2] = make_uint4 (X[2].x, X[1].y, X[0].z, X[3].w); - T[3] = make_uint4 (X[3].x, X[2].y, X[1].z, X[0].w); - #elif defined IS_METAL - T[0] = uint4 (X[0].x, X[3].y, X[2].z, X[1].w); - T[1] = uint4 (X[1].x, X[0].y, X[3].z, X[2].w); - T[2] = uint4 (X[2].x, X[1].y, X[0].z, X[3].w); - T[3] = uint4 (X[3].x, X[2].y, X[1].z, X[0].w); - #else - T[0] = (uint4) (X[0].x, X[3].y, X[2].z, X[1].w); - T[1] = (uint4) (X[1].x, X[0].y, X[3].z, X[2].w); - T[2] = (uint4) (X[2].x, X[1].y, X[0].z, X[3].w); - T[3] = (uint4) (X[3].x, X[2].y, X[1].z, X[0].w); - #endif - - T[0] = hc_swap32_4 (T[0]); - T[1] = hc_swap32_4 (T[1]); - T[2] = hc_swap32_4 (T[2]); - T[3] = hc_swap32_4 (T[3]); - - w0[0] = T[0].x; - w0[1] = T[0].y; - w0[2] = T[0].z; - w0[3] = T[0].w; - w1[0] = T[1].x; - w1[1] = T[1].y; - w1[2] = T[1].z; - w1[3] = T[1].w; - w2[0] = T[2].x; - w2[1] = T[2].y; - w2[2] = T[2].z; - w2[3] = T[2].w; - w3[0] = T[3].x; - w3[1] = T[3].y; - w3[2] = T[3].z; - w3[3] = T[3].w; - - sha256_hmac_update_64 (&ctx, w0, w1, w2, w3, 64); - } - - w0[0] = 1; - w0[1] = 0; - w0[2] = 0; - w0[3] = 0; - w1[0] = 0; - w1[1] = 0; - w1[2] = 0; - w1[3] = 0; - w2[0] = 0; - w2[1] = 0; - w2[2] = 0; - w2[3] = 0; - w3[0] = 0; - w3[1] = 0; - w3[2] = 0; - w3[3] = 0; - - sha256_hmac_update_64 (&ctx, w0, w1, w2, w3, 4); - - sha256_hmac_final (&ctx); - - // AES256-CBC decrypt - - u32 key[8]; - - key[0] = ctx.opad.h[0]; - key[1] = ctx.opad.h[1]; - key[2] = ctx.opad.h[2]; - key[3] = ctx.opad.h[3]; - key[4] = ctx.opad.h[4]; - key[5] = ctx.opad.h[5]; - key[6] = ctx.opad.h[6]; - key[7] = ctx.opad.h[7]; - - #define KEYLEN 60 - - u32 ks[KEYLEN]; - - AES256_set_decrypt_key (ks, key, s_te0, s_te1, s_te2, s_te3, s_td0, s_td1, s_td2, s_td3); - - u32 iv[4]; - - iv[0] = salt_bufs[SALT_POS_HOST].salt_buf[2]; - iv[1] = salt_bufs[SALT_POS_HOST].salt_buf[3]; - iv[2] = salt_bufs[SALT_POS_HOST].salt_buf[4]; - iv[3] = salt_bufs[SALT_POS_HOST].salt_buf[5]; - - u32 enc[4]; - - enc[0] = salt_bufs[SALT_POS_HOST].salt_buf[6]; - enc[1] = salt_bufs[SALT_POS_HOST].salt_buf[7]; - enc[2] = salt_bufs[SALT_POS_HOST].salt_buf[8]; - enc[3] = salt_bufs[SALT_POS_HOST].salt_buf[9]; - - u32 dec[4]; - - aes256_decrypt (ks, enc, dec, s_td0, s_td1, s_td2, s_td3, s_td4); - - dec[0] ^= iv[0]; - dec[1] ^= iv[1]; - dec[2] ^= iv[2]; - dec[3] ^= iv[3]; - - if ((dec[0] == 0x10101010) && - (dec[1] == 0x10101010) && - (dec[2] == 0x10101010) && - (dec[3] == 0x10101010)) - { - if (hc_atomic_inc (&hashes_shown[DIGESTS_OFFSET_HOST]) == 0) - { - mark_hash (plains_buf, d_return_buf, SALT_POS_HOST, DIGESTS_CNT, 0, DIGESTS_OFFSET_HOST + 0, gid, 0, 0, 0); - } - - return; - } -} diff --git a/OpenCL/m29910-pure.cl b/OpenCL/m29910-pure.cl index 2d8c0954d..9bd893ebe 100644 --- a/OpenCL/m29910-pure.cl +++ b/OpenCL/m29910-pure.cl @@ -87,7 +87,7 @@ DECLSPEC void hmac_sha256_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVA sha256_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m29910_init (KERN_ATTR_TMPS_ESALT (encdatavault_tmp_t, encdatavault_t)) +KERNEL_FQ KERNEL_FA void m29910_init (KERN_ATTR_TMPS_ESALT (encdatavault_tmp_t, encdatavault_t)) { /** * base @@ -173,7 +173,7 @@ KERNEL_FQ void m29910_init (KERN_ATTR_TMPS_ESALT (encdatavault_tmp_t, encdatavau } } -KERNEL_FQ void m29910_loop (KERN_ATTR_TMPS_ESALT (encdatavault_tmp_t, encdatavault_t)) +KERNEL_FQ KERNEL_FA void m29910_loop (KERN_ATTR_TMPS_ESALT (encdatavault_tmp_t, encdatavault_t)) { const u64 gid = get_global_id (0); @@ -281,7 +281,7 @@ KERNEL_FQ void m29910_loop (KERN_ATTR_TMPS_ESALT (encdatavault_tmp_t, encdatavau } } -KERNEL_FQ void m29910_comp (KERN_ATTR_TMPS_ESALT (encdatavault_tmp_t, encdatavault_t)) +KERNEL_FQ KERNEL_FA void m29910_comp (KERN_ATTR_TMPS_ESALT (encdatavault_tmp_t, encdatavault_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m29920-pure.cl b/OpenCL/m29920-pure.cl index a44d6c6a1..15317afeb 100644 --- a/OpenCL/m29920-pure.cl +++ b/OpenCL/m29920-pure.cl @@ -87,7 +87,7 @@ DECLSPEC void hmac_sha256_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVA sha256_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m29920_init (KERN_ATTR_TMPS_ESALT (encdatavault_tmp_t, encdatavault_t)) +KERNEL_FQ KERNEL_FA void m29920_init (KERN_ATTR_TMPS_ESALT (encdatavault_tmp_t, encdatavault_t)) { /** * base @@ -173,7 +173,7 @@ KERNEL_FQ void m29920_init (KERN_ATTR_TMPS_ESALT (encdatavault_tmp_t, encdatavau } } -KERNEL_FQ void m29920_loop (KERN_ATTR_TMPS_ESALT (encdatavault_tmp_t, encdatavault_t)) +KERNEL_FQ KERNEL_FA void m29920_loop (KERN_ATTR_TMPS_ESALT (encdatavault_tmp_t, encdatavault_t)) { const u64 gid = get_global_id (0); @@ -281,7 +281,7 @@ KERNEL_FQ void m29920_loop (KERN_ATTR_TMPS_ESALT (encdatavault_tmp_t, encdatavau } } -KERNEL_FQ void m29920_comp (KERN_ATTR_TMPS_ESALT (encdatavault_tmp_t, encdatavault_t)) +KERNEL_FQ KERNEL_FA void m29920_comp (KERN_ATTR_TMPS_ESALT (encdatavault_tmp_t, encdatavault_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m29930-pure.cl b/OpenCL/m29930-pure.cl index 9a1f842d6..d3284a718 100644 --- a/OpenCL/m29930-pure.cl +++ b/OpenCL/m29930-pure.cl @@ -52,7 +52,7 @@ CONSTANT_VK u32a default_salts[32] = 0xeae3f44e, 0xaf4a8f84, 0xf1fab308, 0x8569bef8 }; -KERNEL_FQ void m29930_init (KERN_ATTR_TMPS_ESALT (encdatavault_tmp_t, encdatavault_t)) +KERNEL_FQ KERNEL_FA void m29930_init (KERN_ATTR_TMPS_ESALT (encdatavault_tmp_t, encdatavault_t)) { /** * base @@ -81,7 +81,7 @@ KERNEL_FQ void m29930_init (KERN_ATTR_TMPS_ESALT (encdatavault_tmp_t, encdatavau tmps[gid].out_buf[3] = 0; } -KERNEL_FQ void m29930_loop (KERN_ATTR_TMPS_ESALT (encdatavault_tmp_t, encdatavault_t)) +KERNEL_FQ KERNEL_FA void m29930_loop (KERN_ATTR_TMPS_ESALT (encdatavault_tmp_t, encdatavault_t)) { const u64 gid = get_global_id (0); @@ -154,7 +154,7 @@ KERNEL_FQ void m29930_loop (KERN_ATTR_TMPS_ESALT (encdatavault_tmp_t, encdatavau unpackv (tmps, out_buf, gid, 3, out[3]); } -KERNEL_FQ void m29930_comp (KERN_ATTR_TMPS_ESALT (encdatavault_tmp_t, encdatavault_t)) +KERNEL_FQ KERNEL_FA void m29930_comp (KERN_ATTR_TMPS_ESALT (encdatavault_tmp_t, encdatavault_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m29940-pure.cl b/OpenCL/m29940-pure.cl index e93708b9b..d321c2bfc 100644 --- a/OpenCL/m29940-pure.cl +++ b/OpenCL/m29940-pure.cl @@ -52,7 +52,7 @@ CONSTANT_VK u32a default_salts[32] = 0xeae3f44e, 0xaf4a8f84, 0xf1fab308, 0x8569bef8 }; -KERNEL_FQ void m29940_init (KERN_ATTR_TMPS_ESALT (encdatavault_tmp_t, encdatavault_t)) +KERNEL_FQ KERNEL_FA void m29940_init (KERN_ATTR_TMPS_ESALT (encdatavault_tmp_t, encdatavault_t)) { /** * base @@ -81,7 +81,7 @@ KERNEL_FQ void m29940_init (KERN_ATTR_TMPS_ESALT (encdatavault_tmp_t, encdatavau tmps[gid].out_buf[3] = 0; } -KERNEL_FQ void m29940_loop (KERN_ATTR_TMPS_ESALT (encdatavault_tmp_t, encdatavault_t)) +KERNEL_FQ KERNEL_FA void m29940_loop (KERN_ATTR_TMPS_ESALT (encdatavault_tmp_t, encdatavault_t)) { const u64 gid = get_global_id (0); @@ -154,7 +154,7 @@ KERNEL_FQ void m29940_loop (KERN_ATTR_TMPS_ESALT (encdatavault_tmp_t, encdatavau unpackv (tmps, out_buf, gid, 3, out[3]); } -KERNEL_FQ void m29940_comp (KERN_ATTR_TMPS_ESALT (encdatavault_tmp_t, encdatavault_t)) +KERNEL_FQ KERNEL_FA void m29940_comp (KERN_ATTR_TMPS_ESALT (encdatavault_tmp_t, encdatavault_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m30420_a0-optimized.cl b/OpenCL/m30420_a0-optimized.cl index ac0c46ec5..9da71c166 100644 --- a/OpenCL/m30420_a0-optimized.cl +++ b/OpenCL/m30420_a0-optimized.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha256.cl) #endif -KERNEL_FQ void m30420_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m30420_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -163,15 +163,15 @@ KERNEL_FQ void m30420_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m30420_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m30420_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m30420_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m30420_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m30420_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m30420_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -330,10 +330,10 @@ KERNEL_FQ void m30420_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m30420_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m30420_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m30420_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m30420_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m30420_a0-pure.cl b/OpenCL/m30420_a0-pure.cl index ef049b6a7..52728b163 100644 --- a/OpenCL/m30420_a0-pure.cl +++ b/OpenCL/m30420_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha256.cl) #endif -KERNEL_FQ void m30420_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m30420_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -60,7 +60,7 @@ KERNEL_FQ void m30420_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m30420_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m30420_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m30420_a1-optimized.cl b/OpenCL/m30420_a1-optimized.cl index 2ce78c612..7ca50d36a 100644 --- a/OpenCL/m30420_a1-optimized.cl +++ b/OpenCL/m30420_a1-optimized.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha256.cl) #endif -KERNEL_FQ void m30420_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m30420_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -219,15 +219,15 @@ KERNEL_FQ void m30420_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m30420_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m30420_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m30420_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m30420_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m30420_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m30420_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -444,10 +444,10 @@ KERNEL_FQ void m30420_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m30420_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m30420_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m30420_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m30420_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m30420_a1-pure.cl b/OpenCL/m30420_a1-pure.cl index 135ce78df..9d803f2e5 100644 --- a/OpenCL/m30420_a1-pure.cl +++ b/OpenCL/m30420_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha256.cl) #endif -KERNEL_FQ void m30420_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m30420_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -56,7 +56,7 @@ KERNEL_FQ void m30420_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m30420_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m30420_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m30420_a3-optimized.cl b/OpenCL/m30420_a3-optimized.cl index ed59e5277..5a2fd1195 100644 --- a/OpenCL/m30420_a3-optimized.cl +++ b/OpenCL/m30420_a3-optimized.cl @@ -258,7 +258,7 @@ DECLSPEC void m30420s (PRIVATE_AS u32 *w, const u32 pw_len, KERN_ATTR_FUNC_VECTO } } -KERNEL_FQ void m30420_m04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m30420_m04 (KERN_ATTR_VECTOR ()) { /** * base @@ -298,7 +298,7 @@ KERNEL_FQ void m30420_m04 (KERN_ATTR_VECTOR ()) m30420m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m30420_m08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m30420_m08 (KERN_ATTR_VECTOR ()) { /** * base @@ -338,7 +338,7 @@ KERNEL_FQ void m30420_m08 (KERN_ATTR_VECTOR ()) m30420m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m30420_m16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m30420_m16 (KERN_ATTR_VECTOR ()) { /** * base @@ -378,7 +378,7 @@ KERNEL_FQ void m30420_m16 (KERN_ATTR_VECTOR ()) m30420m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m30420_s04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m30420_s04 (KERN_ATTR_VECTOR ()) { /** * base @@ -418,7 +418,7 @@ KERNEL_FQ void m30420_s04 (KERN_ATTR_VECTOR ()) m30420s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m30420_s08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m30420_s08 (KERN_ATTR_VECTOR ()) { /** * base @@ -458,7 +458,7 @@ KERNEL_FQ void m30420_s08 (KERN_ATTR_VECTOR ()) m30420s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m30420_s16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m30420_s16 (KERN_ATTR_VECTOR ()) { /** * base diff --git a/OpenCL/m30420_a3-pure.cl b/OpenCL/m30420_a3-pure.cl index a2698f5b3..509eb453d 100644 --- a/OpenCL/m30420_a3-pure.cl +++ b/OpenCL/m30420_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha256.cl) #endif -KERNEL_FQ void m30420_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m30420_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -69,7 +69,7 @@ KERNEL_FQ void m30420_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m30420_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m30420_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m30500_a0-optimized.cl b/OpenCL/m30500_a0-optimized.cl index 115409f48..21a8f69b5 100644 --- a/OpenCL/m30500_a0-optimized.cl +++ b/OpenCL/m30500_a0-optimized.cl @@ -28,7 +28,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m30500_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m30500_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -492,15 +492,15 @@ KERNEL_FQ void m30500_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m30500_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m30500_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m30500_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m30500_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m30500_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m30500_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -979,10 +979,10 @@ KERNEL_FQ void m30500_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m30500_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m30500_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m30500_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m30500_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m30500_a0-pure.cl b/OpenCL/m30500_a0-pure.cl index e78e6c708..f37f85576 100644 --- a/OpenCL/m30500_a0-pure.cl +++ b/OpenCL/m30500_a0-pure.cl @@ -28,7 +28,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m30500_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m30500_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -184,7 +184,7 @@ KERNEL_FQ void m30500_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m30500_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m30500_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m30500_a1-optimized.cl b/OpenCL/m30500_a1-optimized.cl index c77a0c341..327db8db8 100644 --- a/OpenCL/m30500_a1-optimized.cl +++ b/OpenCL/m30500_a1-optimized.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m30500_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m30500_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -549,15 +549,15 @@ KERNEL_FQ void m30500_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m30500_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m30500_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m30500_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m30500_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m30500_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m30500_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -1095,10 +1095,10 @@ KERNEL_FQ void m30500_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m30500_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m30500_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m30500_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m30500_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m30500_a1-pure.cl b/OpenCL/m30500_a1-pure.cl index 18bed013f..2c13c2262 100644 --- a/OpenCL/m30500_a1-pure.cl +++ b/OpenCL/m30500_a1-pure.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m30500_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m30500_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -180,7 +180,7 @@ KERNEL_FQ void m30500_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m30500_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m30500_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m30500_a3-optimized.cl b/OpenCL/m30500_a3-optimized.cl index 2326eb1c3..1f7d44408 100644 --- a/OpenCL/m30500_a3-optimized.cl +++ b/OpenCL/m30500_a3-optimized.cl @@ -929,7 +929,7 @@ DECLSPEC void m30500s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m30500_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m30500_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -999,7 +999,7 @@ KERNEL_FQ void m30500_m04 (KERN_ATTR_BASIC ()) m30500m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m30500_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m30500_m08 (KERN_ATTR_BASIC ()) { /** * base @@ -1069,7 +1069,7 @@ KERNEL_FQ void m30500_m08 (KERN_ATTR_BASIC ()) m30500m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m30500_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m30500_m16 (KERN_ATTR_BASIC ()) { /** * base @@ -1139,7 +1139,7 @@ KERNEL_FQ void m30500_m16 (KERN_ATTR_BASIC ()) m30500m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m30500_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m30500_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -1209,7 +1209,7 @@ KERNEL_FQ void m30500_s04 (KERN_ATTR_BASIC ()) m30500s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m30500_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m30500_s08 (KERN_ATTR_BASIC ()) { /** * base @@ -1279,7 +1279,7 @@ KERNEL_FQ void m30500_s08 (KERN_ATTR_BASIC ()) m30500s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m30500_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m30500_s16 (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m30500_a3-pure.cl b/OpenCL/m30500_a3-pure.cl index ad3e5da9f..86508df81 100644 --- a/OpenCL/m30500_a3-pure.cl +++ b/OpenCL/m30500_a3-pure.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m30500_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m30500_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -193,7 +193,7 @@ KERNEL_FQ void m30500_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m30500_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m30500_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m30600-pure.cl b/OpenCL/m30600-pure.cl index 140514465..dc1ebbe2d 100644 --- a/OpenCL/m30600-pure.cl +++ b/OpenCL/m30600-pure.cl @@ -444,7 +444,7 @@ DECLSPEC u32 u16_bin_to_u32_hex (const u32 v) | ((v1 < 10) ? '0' + v1 : 'a' - 10 + v1) << 0; } -KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m30600_init (KERN_ATTR_TMPS (bcrypt_tmp_t)) +KERNEL_FQ KERNEL_FA void m30600_init (KERN_ATTR_TMPS (bcrypt_tmp_t)) { /** * base @@ -695,7 +695,7 @@ KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m30600_init (KERN_ATTR_TMPS } } -KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m30600_loop (KERN_ATTR_TMPS (bcrypt_tmp_t)) +KERNEL_FQ KERNEL_FA void m30600_loop (KERN_ATTR_TMPS (bcrypt_tmp_t)) { /** * base @@ -898,7 +898,7 @@ KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m30600_loop (KERN_ATTR_TMPS } } -KERNEL_FQ void FIXED_THREAD_COUNT(FIXED_LOCAL_SIZE) m30600_comp (KERN_ATTR_TMPS (bcrypt_tmp_t)) +KERNEL_FQ KERNEL_FA void m30600_comp (KERN_ATTR_TMPS (bcrypt_tmp_t)) { /** * base diff --git a/OpenCL/m30700_a0-optimized.cl b/OpenCL/m30700_a0-optimized.cl index 88f6cd29b..30d18fbe2 100644 --- a/OpenCL/m30700_a0-optimized.cl +++ b/OpenCL/m30700_a0-optimized.cl @@ -30,7 +30,7 @@ h = 0; \ } -KERNEL_FQ void m30700_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m30700_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -186,15 +186,15 @@ KERNEL_FQ void m30700_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m30700_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m30700_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m30700_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m30700_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m30700_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m30700_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -383,10 +383,10 @@ KERNEL_FQ void m30700_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m30700_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m30700_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m30700_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m30700_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m30700_a0-pure.cl b/OpenCL/m30700_a0-pure.cl index 72eab9d86..2fca62245 100644 --- a/OpenCL/m30700_a0-pure.cl +++ b/OpenCL/m30700_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha256.cl) #endif -KERNEL_FQ void m30700_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m30700_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -71,7 +71,7 @@ KERNEL_FQ void m30700_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m30700_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m30700_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m30700_a1-optimized.cl b/OpenCL/m30700_a1-optimized.cl index 873c96b5f..d03e60628 100644 --- a/OpenCL/m30700_a1-optimized.cl +++ b/OpenCL/m30700_a1-optimized.cl @@ -28,7 +28,7 @@ h = 0; \ } -KERNEL_FQ void m30700_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m30700_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -242,15 +242,15 @@ KERNEL_FQ void m30700_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m30700_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m30700_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m30700_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m30700_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m30700_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m30700_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -497,10 +497,10 @@ KERNEL_FQ void m30700_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m30700_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m30700_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m30700_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m30700_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m30700_a1-pure.cl b/OpenCL/m30700_a1-pure.cl index 146f543ac..3ba191501 100644 --- a/OpenCL/m30700_a1-pure.cl +++ b/OpenCL/m30700_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha256.cl) #endif -KERNEL_FQ void m30700_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m30700_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -65,7 +65,7 @@ KERNEL_FQ void m30700_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m30700_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m30700_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m30700_a3-optimized.cl b/OpenCL/m30700_a3-optimized.cl index 54b769776..a72d1559d 100644 --- a/OpenCL/m30700_a3-optimized.cl +++ b/OpenCL/m30700_a3-optimized.cl @@ -311,7 +311,7 @@ DECLSPEC void m30700s (PRIVATE_AS u32 *w, const u32 pw_len, KERN_ATTR_FUNC_VECTO } } -KERNEL_FQ void m30700_m04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m30700_m04 (KERN_ATTR_VECTOR ()) { /** * base @@ -351,7 +351,7 @@ KERNEL_FQ void m30700_m04 (KERN_ATTR_VECTOR ()) m30700m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m30700_m08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m30700_m08 (KERN_ATTR_VECTOR ()) { /** * base @@ -391,7 +391,7 @@ KERNEL_FQ void m30700_m08 (KERN_ATTR_VECTOR ()) m30700m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m30700_m16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m30700_m16 (KERN_ATTR_VECTOR ()) { /** * base @@ -431,7 +431,7 @@ KERNEL_FQ void m30700_m16 (KERN_ATTR_VECTOR ()) m30700m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m30700_s04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m30700_s04 (KERN_ATTR_VECTOR ()) { /** * base @@ -471,7 +471,7 @@ KERNEL_FQ void m30700_s04 (KERN_ATTR_VECTOR ()) m30700s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m30700_s08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m30700_s08 (KERN_ATTR_VECTOR ()) { /** * base @@ -511,7 +511,7 @@ KERNEL_FQ void m30700_s08 (KERN_ATTR_VECTOR ()) m30700s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m30700_s16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m30700_s16 (KERN_ATTR_VECTOR ()) { /** * base diff --git a/OpenCL/m30700_a3-pure.cl b/OpenCL/m30700_a3-pure.cl index 910e54f9c..08d9ba797 100644 --- a/OpenCL/m30700_a3-pure.cl +++ b/OpenCL/m30700_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha256.cl) #endif -KERNEL_FQ void m30700_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m30700_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -82,7 +82,7 @@ KERNEL_FQ void m30700_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m30700_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m30700_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m30901_a0-pure.cl b/OpenCL/m30901_a0-pure.cl index 0709c22d2..4dd177a04 100644 --- a/OpenCL/m30901_a0-pure.cl +++ b/OpenCL/m30901_a0-pure.cl @@ -42,7 +42,7 @@ DECLSPEC u32 hex_u32_to_u32 (PRIVATE_AS const u32 hex0, PRIVATE_AS const u32 hex return (v); } -KERNEL_FQ void m30901_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m30901_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -161,7 +161,7 @@ KERNEL_FQ void m30901_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m30901_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m30901_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m30901_a1-pure.cl b/OpenCL/m30901_a1-pure.cl index 097351c8d..a577f6669 100644 --- a/OpenCL/m30901_a1-pure.cl +++ b/OpenCL/m30901_a1-pure.cl @@ -40,7 +40,7 @@ DECLSPEC u32 hex_u32_to_u32 (PRIVATE_AS const u32 hex0, PRIVATE_AS const u32 hex return (v); } -KERNEL_FQ void m30901_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m30901_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -187,7 +187,7 @@ KERNEL_FQ void m30901_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m30901_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m30901_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m30901_a3-pure.cl b/OpenCL/m30901_a3-pure.cl index 6df675272..66b7557cf 100644 --- a/OpenCL/m30901_a3-pure.cl +++ b/OpenCL/m30901_a3-pure.cl @@ -82,7 +82,7 @@ DECLSPEC u32 hex_u32_to_u32 (PRIVATE_AS const u32 hex0, PRIVATE_AS const u32 hex return (v); } -KERNEL_FQ void m30901_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m30901_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -217,7 +217,7 @@ KERNEL_FQ void m30901_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m30901_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m30901_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m30902_a0-pure.cl b/OpenCL/m30902_a0-pure.cl index 570f54fb4..4ceef3158 100644 --- a/OpenCL/m30902_a0-pure.cl +++ b/OpenCL/m30902_a0-pure.cl @@ -42,7 +42,7 @@ DECLSPEC u32 hex_u32_to_u32 (PRIVATE_AS const u32 hex0, PRIVATE_AS const u32 hex return (v); } -KERNEL_FQ void m30902_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m30902_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -167,7 +167,7 @@ KERNEL_FQ void m30902_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m30902_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m30902_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m30902_a1-pure.cl b/OpenCL/m30902_a1-pure.cl index d1e478296..55f090e62 100644 --- a/OpenCL/m30902_a1-pure.cl +++ b/OpenCL/m30902_a1-pure.cl @@ -40,7 +40,7 @@ DECLSPEC u32 hex_u32_to_u32 (PRIVATE_AS const u32 hex0, PRIVATE_AS const u32 hex return (v); } -KERNEL_FQ void m30902_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m30902_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -193,7 +193,7 @@ KERNEL_FQ void m30902_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m30902_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m30902_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m30902_a3-pure.cl b/OpenCL/m30902_a3-pure.cl index 13f949bab..36a7191c4 100644 --- a/OpenCL/m30902_a3-pure.cl +++ b/OpenCL/m30902_a3-pure.cl @@ -40,7 +40,7 @@ DECLSPEC u32 hex_u32_to_u32 (PRIVATE_AS const u32 hex0, PRIVATE_AS const u32 hex return (v); } -KERNEL_FQ void m30902_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m30902_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -181,7 +181,7 @@ KERNEL_FQ void m30902_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m30902_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m30902_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m30905_a0-pure.cl b/OpenCL/m30905_a0-pure.cl index d72376414..b60085021 100644 --- a/OpenCL/m30905_a0-pure.cl +++ b/OpenCL/m30905_a0-pure.cl @@ -42,7 +42,7 @@ DECLSPEC u32 hex_u32_to_u32 (PRIVATE_AS const u32 hex0, PRIVATE_AS const u32 hex return (v); } -KERNEL_FQ void m30905_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m30905_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -185,7 +185,7 @@ KERNEL_FQ void m30905_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m30905_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m30905_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m30905_a1-pure.cl b/OpenCL/m30905_a1-pure.cl index 2493a1741..5da3ed631 100644 --- a/OpenCL/m30905_a1-pure.cl +++ b/OpenCL/m30905_a1-pure.cl @@ -40,7 +40,7 @@ DECLSPEC u32 hex_u32_to_u32 (PRIVATE_AS const u32 hex0, PRIVATE_AS const u32 hex return (v); } -KERNEL_FQ void m30905_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m30905_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -211,7 +211,7 @@ KERNEL_FQ void m30905_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m30905_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m30905_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m30905_a3-pure.cl b/OpenCL/m30905_a3-pure.cl index 624d21ec6..2efe255bb 100644 --- a/OpenCL/m30905_a3-pure.cl +++ b/OpenCL/m30905_a3-pure.cl @@ -41,7 +41,7 @@ DECLSPEC u32 hex_u32_to_u32 (PRIVATE_AS const u32 hex0, PRIVATE_AS const u32 hex return (v); } -KERNEL_FQ void m30905_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m30905_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -200,7 +200,7 @@ KERNEL_FQ void m30905_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m30905_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m30905_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m30906_a0-pure.cl b/OpenCL/m30906_a0-pure.cl index 95549f36a..1812284e1 100644 --- a/OpenCL/m30906_a0-pure.cl +++ b/OpenCL/m30906_a0-pure.cl @@ -42,7 +42,7 @@ DECLSPEC u32 hex_u32_to_u32 (PRIVATE_AS const u32 hex0, PRIVATE_AS const u32 hex return (v); } -KERNEL_FQ void m30906_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m30906_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -191,7 +191,7 @@ KERNEL_FQ void m30906_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m30906_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m30906_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m30906_a1-pure.cl b/OpenCL/m30906_a1-pure.cl index fd76b12c4..46b12eb3b 100644 --- a/OpenCL/m30906_a1-pure.cl +++ b/OpenCL/m30906_a1-pure.cl @@ -40,7 +40,7 @@ DECLSPEC u32 hex_u32_to_u32 (PRIVATE_AS const u32 hex0, PRIVATE_AS const u32 hex return (v); } -KERNEL_FQ void m30906_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m30906_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -217,7 +217,7 @@ KERNEL_FQ void m30906_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m30906_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m30906_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m30906_a3-pure.cl b/OpenCL/m30906_a3-pure.cl index 033d9e1c4..e2a5a341f 100644 --- a/OpenCL/m30906_a3-pure.cl +++ b/OpenCL/m30906_a3-pure.cl @@ -40,7 +40,7 @@ DECLSPEC u32 hex_u32_to_u32 (PRIVATE_AS const u32 hex0, PRIVATE_AS const u32 hex return (v); } -KERNEL_FQ void m30906_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m30906_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -205,7 +205,7 @@ KERNEL_FQ void m30906_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m30906_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m30906_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m31000_a0-optimized.cl b/OpenCL/m31000_a0-optimized.cl index 52d4d7852..7c06fb4f2 100644 --- a/OpenCL/m31000_a0-optimized.cl +++ b/OpenCL/m31000_a0-optimized.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_blake2s.cl) #endif -KERNEL_FQ void m31000_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m31000_m04 (KERN_ATTR_RULES ()) { /** * base @@ -92,15 +92,15 @@ KERNEL_FQ void m31000_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m31000_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m31000_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m31000_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m31000_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m31000_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m31000_s04 (KERN_ATTR_RULES ()) { /** * base @@ -188,10 +188,10 @@ KERNEL_FQ void m31000_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m31000_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m31000_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m31000_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m31000_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m31000_a0-pure.cl b/OpenCL/m31000_a0-pure.cl index 81919e0ff..6792d0d89 100644 --- a/OpenCL/m31000_a0-pure.cl +++ b/OpenCL/m31000_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_blake2s.cl) #endif -KERNEL_FQ void m31000_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m31000_mxx (KERN_ATTR_RULES ()) { /** * base @@ -57,7 +57,7 @@ KERNEL_FQ void m31000_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m31000_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m31000_sxx (KERN_ATTR_RULES ()) { /** * base diff --git a/OpenCL/m31000_a1-optimized.cl b/OpenCL/m31000_a1-optimized.cl index 8bb154729..22aa3b11b 100644 --- a/OpenCL/m31000_a1-optimized.cl +++ b/OpenCL/m31000_a1-optimized.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_blake2s.cl) #endif -KERNEL_FQ void m31000_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m31000_m04 (KERN_ATTR_BASIC ()) { /** * base @@ -152,15 +152,15 @@ KERNEL_FQ void m31000_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m31000_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m31000_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m31000_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m31000_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m31000_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m31000_s04 (KERN_ATTR_BASIC ()) { /** * base @@ -311,10 +311,10 @@ KERNEL_FQ void m31000_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m31000_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m31000_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m31000_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m31000_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m31000_a1-pure.cl b/OpenCL/m31000_a1-pure.cl index e90aa0d46..c9d3c2be6 100644 --- a/OpenCL/m31000_a1-pure.cl +++ b/OpenCL/m31000_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_blake2s.cl) #endif -KERNEL_FQ void m31000_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m31000_mxx (KERN_ATTR_BASIC ()) { /** * base @@ -55,7 +55,7 @@ KERNEL_FQ void m31000_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m31000_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m31000_sxx (KERN_ATTR_BASIC ()) { /** * base diff --git a/OpenCL/m31000_a3-optimized.cl b/OpenCL/m31000_a3-optimized.cl index 085873422..451104801 100644 --- a/OpenCL/m31000_a3-optimized.cl +++ b/OpenCL/m31000_a3-optimized.cl @@ -142,7 +142,7 @@ DECLSPEC void m31000s (PRIVATE_AS u32 *w, const u32 pw_len, KERN_ATTR_FUNC_VECTO } } -KERNEL_FQ void m31000_m04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m31000_m04 (KERN_ATTR_VECTOR ()) { /** * base @@ -182,7 +182,7 @@ KERNEL_FQ void m31000_m04 (KERN_ATTR_VECTOR ()) m31000m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m31000_m08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m31000_m08 (KERN_ATTR_VECTOR ()) { /** * base @@ -222,7 +222,7 @@ KERNEL_FQ void m31000_m08 (KERN_ATTR_VECTOR ()) m31000m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m31000_m16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m31000_m16 (KERN_ATTR_VECTOR ()) { /** * base @@ -262,7 +262,7 @@ KERNEL_FQ void m31000_m16 (KERN_ATTR_VECTOR ()) m31000m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m31000_s04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m31000_s04 (KERN_ATTR_VECTOR ()) { /** * base @@ -302,7 +302,7 @@ KERNEL_FQ void m31000_s04 (KERN_ATTR_VECTOR ()) m31000s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m31000_s08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m31000_s08 (KERN_ATTR_VECTOR ()) { /** * base @@ -342,7 +342,7 @@ KERNEL_FQ void m31000_s08 (KERN_ATTR_VECTOR ()) m31000s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m31000_s16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m31000_s16 (KERN_ATTR_VECTOR ()) { /** * base diff --git a/OpenCL/m31000_a3-pure.cl b/OpenCL/m31000_a3-pure.cl index 24ce691db..9456dcde4 100644 --- a/OpenCL/m31000_a3-pure.cl +++ b/OpenCL/m31000_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_blake2s.cl) #endif -KERNEL_FQ void m31000_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m31000_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -66,7 +66,7 @@ KERNEL_FQ void m31000_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m31000_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m31000_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m31100_a0-optimized.cl b/OpenCL/m31100_a0-optimized.cl index c42b3f18e..9cbeeacac 100644 --- a/OpenCL/m31100_a0-optimized.cl +++ b/OpenCL/m31100_a0-optimized.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sm3.cl) #endif -KERNEL_FQ void m31100_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m31100_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -163,15 +163,15 @@ KERNEL_FQ void m31100_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m31100_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m31100_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m31100_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m31100_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m31100_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m31100_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -335,10 +335,10 @@ KERNEL_FQ void m31100_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m31100_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m31100_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m31100_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m31100_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m31100_a0-pure.cl b/OpenCL/m31100_a0-pure.cl index 18c1e2795..9b8f4b2ff 100644 --- a/OpenCL/m31100_a0-pure.cl +++ b/OpenCL/m31100_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sm3.cl) #endif -KERNEL_FQ void m31100_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m31100_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -60,7 +60,7 @@ KERNEL_FQ void m31100_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m31100_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m31100_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m31100_a1-optimized.cl b/OpenCL/m31100_a1-optimized.cl index 5ed4672ec..2ff8ca04d 100644 --- a/OpenCL/m31100_a1-optimized.cl +++ b/OpenCL/m31100_a1-optimized.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sm3.cl) #endif -KERNEL_FQ void m31100_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m31100_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -219,15 +219,15 @@ KERNEL_FQ void m31100_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m31100_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m31100_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m31100_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m31100_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m31100_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m31100_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -449,10 +449,10 @@ KERNEL_FQ void m31100_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m31100_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m31100_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m31100_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m31100_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m31100_a1-pure.cl b/OpenCL/m31100_a1-pure.cl index 43d42204a..474962708 100644 --- a/OpenCL/m31100_a1-pure.cl +++ b/OpenCL/m31100_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sm3.cl) #endif -KERNEL_FQ void m31100_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m31100_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -56,7 +56,7 @@ KERNEL_FQ void m31100_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m31100_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m31100_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m31100_a3-optimized.cl b/OpenCL/m31100_a3-optimized.cl index c5f61fceb..8ec75e45f 100644 --- a/OpenCL/m31100_a3-optimized.cl +++ b/OpenCL/m31100_a3-optimized.cl @@ -498,7 +498,7 @@ DECLSPEC void m31100s (PRIVATE_AS u32 *w, const u32 pw_len, KERN_ATTR_FUNC_VECTO } */ -KERNEL_FQ void m31100_m04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m31100_m04 (KERN_ATTR_VECTOR ()) { /** * base @@ -538,7 +538,7 @@ KERNEL_FQ void m31100_m04 (KERN_ATTR_VECTOR ()) m31100m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m31100_m08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m31100_m08 (KERN_ATTR_VECTOR ()) { /** * base @@ -578,7 +578,7 @@ KERNEL_FQ void m31100_m08 (KERN_ATTR_VECTOR ()) m31100m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m31100_m16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m31100_m16 (KERN_ATTR_VECTOR ()) { /** * base @@ -618,7 +618,7 @@ KERNEL_FQ void m31100_m16 (KERN_ATTR_VECTOR ()) m31100m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m31100_s04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m31100_s04 (KERN_ATTR_VECTOR ()) { /** * base @@ -658,7 +658,7 @@ KERNEL_FQ void m31100_s04 (KERN_ATTR_VECTOR ()) m31100s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m31100_s08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m31100_s08 (KERN_ATTR_VECTOR ()) { /** * base @@ -698,7 +698,7 @@ KERNEL_FQ void m31100_s08 (KERN_ATTR_VECTOR ()) m31100s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m31100_s16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m31100_s16 (KERN_ATTR_VECTOR ()) { /** * base diff --git a/OpenCL/m31100_a3-pure.cl b/OpenCL/m31100_a3-pure.cl index 01dea33eb..9db1e470a 100644 --- a/OpenCL/m31100_a3-pure.cl +++ b/OpenCL/m31100_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sm3.cl) #endif -KERNEL_FQ void m31100_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m31100_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -69,7 +69,7 @@ KERNEL_FQ void m31100_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m31100_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m31100_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m31200-pure.cl b/OpenCL/m31200-pure.cl index 4cbe28053..ef634ca11 100644 --- a/OpenCL/m31200-pure.cl +++ b/OpenCL/m31200-pure.cl @@ -70,7 +70,7 @@ DECLSPEC void hmac_sha1_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE sha1_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m31200_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha1_tmp_t, veeam_vbk_t)) +KERNEL_FQ KERNEL_FA void m31200_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha1_tmp_t, veeam_vbk_t)) { /** * base @@ -142,7 +142,7 @@ KERNEL_FQ void m31200_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha1_tmp_t, veeam_vbk_t } } -KERNEL_FQ void m31200_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha1_tmp_t, veeam_vbk_t)) +KERNEL_FQ KERNEL_FA void m31200_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha1_tmp_t, veeam_vbk_t)) { const u64 gid = get_global_id (0); @@ -227,7 +227,7 @@ KERNEL_FQ void m31200_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha1_tmp_t, veeam_vbk_t } } -KERNEL_FQ void m31200_comp (KERN_ATTR_TMPS_ESALT (pbkdf2_sha1_tmp_t, veeam_vbk_t)) +KERNEL_FQ KERNEL_FA void m31200_comp (KERN_ATTR_TMPS_ESALT (pbkdf2_sha1_tmp_t, veeam_vbk_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m31300_a0-optimized.cl b/OpenCL/m31300_a0-optimized.cl index 11b3061c5..abd3c540a 100644 --- a/OpenCL/m31300_a0-optimized.cl +++ b/OpenCL/m31300_a0-optimized.cl @@ -17,7 +17,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m31300_m04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m31300_m04 (KERN_ATTR_RULES ()) { /** * modifier @@ -343,15 +343,15 @@ KERNEL_FQ void m31300_m04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m31300_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m31300_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m31300_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m31300_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m31300_s04 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m31300_s04 (KERN_ATTR_RULES ()) { /** * modifier @@ -689,10 +689,10 @@ KERNEL_FQ void m31300_s04 (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m31300_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m31300_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m31300_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m31300_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m31300_a0-pure.cl b/OpenCL/m31300_a0-pure.cl index ef3cac65a..6e50e7223 100644 --- a/OpenCL/m31300_a0-pure.cl +++ b/OpenCL/m31300_a0-pure.cl @@ -17,7 +17,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m31300_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m31300_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -114,7 +114,7 @@ KERNEL_FQ void m31300_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m31300_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m31300_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m31300_a1-optimized.cl b/OpenCL/m31300_a1-optimized.cl index 604554925..f120c456e 100644 --- a/OpenCL/m31300_a1-optimized.cl +++ b/OpenCL/m31300_a1-optimized.cl @@ -15,7 +15,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m31300_m04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m31300_m04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -403,15 +403,15 @@ KERNEL_FQ void m31300_m04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m31300_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m31300_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m31300_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m31300_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m31300_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m31300_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -812,10 +812,10 @@ KERNEL_FQ void m31300_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m31300_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m31300_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m31300_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m31300_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m31300_a1-pure.cl b/OpenCL/m31300_a1-pure.cl index a6c964152..db42e61ea 100644 --- a/OpenCL/m31300_a1-pure.cl +++ b/OpenCL/m31300_a1-pure.cl @@ -15,7 +15,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m31300_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m31300_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -110,7 +110,7 @@ KERNEL_FQ void m31300_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m31300_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m31300_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m31300_a3-optimized.cl b/OpenCL/m31300_a3-optimized.cl index e305df2c5..d8f64aaaf 100644 --- a/OpenCL/m31300_a3-optimized.cl +++ b/OpenCL/m31300_a3-optimized.cl @@ -725,7 +725,7 @@ DECLSPEC void m31300s (PRIVATE_AS u32 *w, const u32 pw_len, KERN_ATTR_FUNC_VECTO } } -KERNEL_FQ void m31300_m04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m31300_m04 (KERN_ATTR_VECTOR ()) { /** * base @@ -765,7 +765,7 @@ KERNEL_FQ void m31300_m04 (KERN_ATTR_VECTOR ()) m31300m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m31300_m08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m31300_m08 (KERN_ATTR_VECTOR ()) { /** * base @@ -805,7 +805,7 @@ KERNEL_FQ void m31300_m08 (KERN_ATTR_VECTOR ()) m31300m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m31300_m16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m31300_m16 (KERN_ATTR_VECTOR ()) { /** * base @@ -845,7 +845,7 @@ KERNEL_FQ void m31300_m16 (KERN_ATTR_VECTOR ()) m31300m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m31300_s04 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m31300_s04 (KERN_ATTR_VECTOR ()) { /** * base @@ -885,7 +885,7 @@ KERNEL_FQ void m31300_s04 (KERN_ATTR_VECTOR ()) m31300s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m31300_s08 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m31300_s08 (KERN_ATTR_VECTOR ()) { /** * base @@ -925,7 +925,7 @@ KERNEL_FQ void m31300_s08 (KERN_ATTR_VECTOR ()) m31300s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m31300_s16 (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m31300_s16 (KERN_ATTR_VECTOR ()) { /** * base diff --git a/OpenCL/m31300_a3-pure.cl b/OpenCL/m31300_a3-pure.cl index 2296f9b68..d6dd0a02e 100644 --- a/OpenCL/m31300_a3-pure.cl +++ b/OpenCL/m31300_a3-pure.cl @@ -15,7 +15,7 @@ #include M2S(INCLUDE_PATH/inc_hash_md5.cl) #endif -KERNEL_FQ void m31300_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m31300_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -165,7 +165,7 @@ KERNEL_FQ void m31300_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m31300_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m31300_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m31400_a0-optimized.cl b/OpenCL/m31400_a0-optimized.cl index 3ebf076da..3d386cb7c 100644 --- a/OpenCL/m31400_a0-optimized.cl +++ b/OpenCL/m31400_a0-optimized.cl @@ -303,15 +303,15 @@ DECLSPEC void aes256_scrt_format_VV (PRIVATE_AS u32 *aes_ks, PRIVATE_AS u32x *w, #endif } -KERNEL_FQ void m31400_m16 (KERN_ATTR_RULES_ESALT (scrtv2_t)) +KERNEL_FQ KERNEL_FA void m31400_m16 (KERN_ATTR_RULES_ESALT (scrtv2_t)) { } -KERNEL_FQ void m31400_m08 (KERN_ATTR_RULES_ESALT (scrtv2_t)) +KERNEL_FQ KERNEL_FA void m31400_m08 (KERN_ATTR_RULES_ESALT (scrtv2_t)) { } -KERNEL_FQ void m31400_m04 (KERN_ATTR_RULES_ESALT (scrtv2_t)) +KERNEL_FQ KERNEL_FA void m31400_m04 (KERN_ATTR_RULES_ESALT (scrtv2_t)) { /** * modifier @@ -520,15 +520,15 @@ KERNEL_FQ void m31400_m04 (KERN_ATTR_RULES_ESALT (scrtv2_t)) } } -KERNEL_FQ void m31400_s16 (KERN_ATTR_RULES_ESALT (scrtv2_t)) +KERNEL_FQ KERNEL_FA void m31400_s16 (KERN_ATTR_RULES_ESALT (scrtv2_t)) { } -KERNEL_FQ void m31400_s08 (KERN_ATTR_RULES_ESALT (scrtv2_t)) +KERNEL_FQ KERNEL_FA void m31400_s08 (KERN_ATTR_RULES_ESALT (scrtv2_t)) { } -KERNEL_FQ void m31400_s04 (KERN_ATTR_RULES_ESALT (scrtv2_t)) +KERNEL_FQ KERNEL_FA void m31400_s04 (KERN_ATTR_RULES_ESALT (scrtv2_t)) { /** * modifier diff --git a/OpenCL/m31400_a0-pure.cl b/OpenCL/m31400_a0-pure.cl index 28cd2c51a..50a005e33 100644 --- a/OpenCL/m31400_a0-pure.cl +++ b/OpenCL/m31400_a0-pure.cl @@ -3,7 +3,7 @@ * License.....: MIT */ -#define NEW_SIMD_CODE +//#define NEW_SIMD_CODE #ifdef KERNEL_STATIC #include M2S(INCLUDE_PATH/inc_vendor.h) @@ -135,7 +135,7 @@ DECLSPEC void aes256_scrt_format (PRIVATE_AS u32 *aes_ks, PRIVATE_AS u32 *pw, co AES256_encrypt (aes_ks, hash, out, s_te0, s_te1, s_te2, s_te3, s_te4); } -KERNEL_FQ void m31400_mxx (KERN_ATTR_RULES_ESALT (scrtv2_t)) +KERNEL_FQ KERNEL_FA void m31400_mxx (KERN_ATTR_RULES_ESALT (scrtv2_t)) { /** * modifier @@ -219,7 +219,7 @@ KERNEL_FQ void m31400_mxx (KERN_ATTR_RULES_ESALT (scrtv2_t)) } } -KERNEL_FQ void m31400_sxx (KERN_ATTR_RULES_ESALT (scrtv2_t)) +KERNEL_FQ KERNEL_FA void m31400_sxx (KERN_ATTR_RULES_ESALT (scrtv2_t)) { /** * modifier diff --git a/OpenCL/m31400_a1-optimized.cl b/OpenCL/m31400_a1-optimized.cl index e6b266a23..aba0ad4fa 100644 --- a/OpenCL/m31400_a1-optimized.cl +++ b/OpenCL/m31400_a1-optimized.cl @@ -300,7 +300,7 @@ DECLSPEC void aes256_scrt_format_VV (PRIVATE_AS u32 *aes_ks, PRIVATE_AS u32x *w, #endif } -KERNEL_FQ void m31400_m04 (KERN_ATTR_ESALT (scrtv2_t)) +KERNEL_FQ KERNEL_FA void m31400_m04 (KERN_ATTR_ESALT (scrtv2_t)) { /** * modifier @@ -586,15 +586,15 @@ KERNEL_FQ void m31400_m04 (KERN_ATTR_ESALT (scrtv2_t)) } } -KERNEL_FQ void m31400_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m31400_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m31400_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m31400_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m31400_s04 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m31400_s04 (KERN_ATTR_BASIC ()) { /** * modifier @@ -892,10 +892,10 @@ KERNEL_FQ void m31400_s04 (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m31400_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m31400_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m31400_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m31400_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m31400_a1-pure.cl b/OpenCL/m31400_a1-pure.cl index 390bc8bf3..96774ca7b 100644 --- a/OpenCL/m31400_a1-pure.cl +++ b/OpenCL/m31400_a1-pure.cl @@ -3,7 +3,7 @@ * License.....: MIT */ -#define NEW_SIMD_CODE +//#define NEW_SIMD_CODE #ifdef KERNEL_STATIC #include M2S(INCLUDE_PATH/inc_vendor.h) @@ -135,7 +135,7 @@ DECLSPEC void aes256_scrt_format (PRIVATE_AS u32 *aes_ks, PRIVATE_AS u32 *pw, co AES256_encrypt (aes_ks, hash, out, s_te0, s_te1, s_te2, s_te3, s_te4); } -KERNEL_FQ void m31400_mxx (KERN_ATTR_ESALT (scrtv2_t)) +KERNEL_FQ KERNEL_FA void m31400_mxx (KERN_ATTR_ESALT (scrtv2_t)) { /** * modifier @@ -225,7 +225,7 @@ KERNEL_FQ void m31400_mxx (KERN_ATTR_ESALT (scrtv2_t)) } } -KERNEL_FQ void m31400_sxx (KERN_ATTR_ESALT (scrtv2_t)) +KERNEL_FQ KERNEL_FA void m31400_sxx (KERN_ATTR_ESALT (scrtv2_t)) { /** * modifier diff --git a/OpenCL/m31400_a3-optimized.cl b/OpenCL/m31400_a3-optimized.cl index a9c43e961..bc30d42c3 100644 --- a/OpenCL/m31400_a3-optimized.cl +++ b/OpenCL/m31400_a3-optimized.cl @@ -478,7 +478,7 @@ DECLSPEC void m31400m (SHM_TYPE u32a *s_te0, SHM_TYPE u32a *s_te1, SHM_TYPE u32a } } -KERNEL_FQ void m31400_m04 (KERN_ATTR_VECTOR_ESALT (scrtv2_t)) +KERNEL_FQ KERNEL_FA void m31400_m04 (KERN_ATTR_VECTOR_ESALT (scrtv2_t)) { /** * base @@ -551,7 +551,7 @@ KERNEL_FQ void m31400_m04 (KERN_ATTR_VECTOR_ESALT (scrtv2_t)) m31400m (s_te0, s_te1, s_te2, s_te3, s_te4, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m31400_m08 (KERN_ATTR_VECTOR_ESALT (scrtv2_t)) +KERNEL_FQ KERNEL_FA void m31400_m08 (KERN_ATTR_VECTOR_ESALT (scrtv2_t)) { /** * base @@ -624,7 +624,7 @@ KERNEL_FQ void m31400_m08 (KERN_ATTR_VECTOR_ESALT (scrtv2_t)) m31400m (s_te0, s_te1, s_te2, s_te3, s_te4, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m31400_m16 (KERN_ATTR_VECTOR_ESALT (scrtv2_t)) +KERNEL_FQ KERNEL_FA void m31400_m16 (KERN_ATTR_VECTOR_ESALT (scrtv2_t)) { /** * base @@ -885,7 +885,7 @@ DECLSPEC void m31400s (SHM_TYPE u32a *s_te0, SHM_TYPE u32a *s_te1, SHM_TYPE u32a } } -KERNEL_FQ void m31400_s04 (KERN_ATTR_VECTOR_ESALT (scrtv2_t)) +KERNEL_FQ KERNEL_FA void m31400_s04 (KERN_ATTR_VECTOR_ESALT (scrtv2_t)) { /** * base @@ -957,7 +957,7 @@ KERNEL_FQ void m31400_s04 (KERN_ATTR_VECTOR_ESALT (scrtv2_t)) m31400s (s_te0, s_te1, s_te2, s_te3, s_te4, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m31400_s08 (KERN_ATTR_VECTOR_ESALT (scrtv2_t)) +KERNEL_FQ KERNEL_FA void m31400_s08 (KERN_ATTR_VECTOR_ESALT (scrtv2_t)) { /** * base @@ -1030,7 +1030,7 @@ KERNEL_FQ void m31400_s08 (KERN_ATTR_VECTOR_ESALT (scrtv2_t)) m31400s (s_te0, s_te1, s_te2, s_te3, s_te4, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); } -KERNEL_FQ void m31400_s16 (KERN_ATTR_VECTOR_ESALT (scrtv2_t)) +KERNEL_FQ KERNEL_FA void m31400_s16 (KERN_ATTR_VECTOR_ESALT (scrtv2_t)) { /** * base diff --git a/OpenCL/m31400_a3-pure.cl b/OpenCL/m31400_a3-pure.cl index 7baacb913..09d450df9 100644 --- a/OpenCL/m31400_a3-pure.cl +++ b/OpenCL/m31400_a3-pure.cl @@ -305,7 +305,7 @@ DECLSPEC void aes256_scrt_format_VV (PRIVATE_AS u32 *aes_ks, PRIVATE_AS u32x *w, #endif } -KERNEL_FQ void m31400_mxx (KERN_ATTR_VECTOR_ESALT (scrtv2_t)) +KERNEL_FQ KERNEL_FA void m31400_mxx (KERN_ATTR_VECTOR_ESALT (scrtv2_t)) { /** * modifier @@ -400,7 +400,7 @@ KERNEL_FQ void m31400_mxx (KERN_ATTR_VECTOR_ESALT (scrtv2_t)) } } -KERNEL_FQ void m31400_sxx (KERN_ATTR_VECTOR_ESALT (scrtv2_t)) +KERNEL_FQ KERNEL_FA void m31400_sxx (KERN_ATTR_VECTOR_ESALT (scrtv2_t)) { /** * modifier diff --git a/OpenCL/m31500-pure.cl b/OpenCL/m31500-pure.cl index 9797dfcff..4911c632a 100644 --- a/OpenCL/m31500-pure.cl +++ b/OpenCL/m31500-pure.cl @@ -41,7 +41,7 @@ typedef struct dcc_tmp } dcc_tmp_t; -KERNEL_FQ void m31500_init (KERN_ATTR_TMPS (dcc_tmp_t)) +KERNEL_FQ KERNEL_FA void m31500_init (KERN_ATTR_TMPS (dcc_tmp_t)) { /** * modifier @@ -79,12 +79,12 @@ KERNEL_FQ void m31500_init (KERN_ATTR_TMPS (dcc_tmp_t)) tmps[gid].digest_buf[3] = out[3]; } -KERNEL_FQ void m31500_loop (KERN_ATTR_TMPS (dcc_tmp_t)) +KERNEL_FQ KERNEL_FA void m31500_loop (KERN_ATTR_TMPS (dcc_tmp_t)) { } -KERNEL_FQ void m31500_comp (KERN_ATTR_TMPS (dcc_tmp_t)) +KERNEL_FQ KERNEL_FA void m31500_comp (KERN_ATTR_TMPS (dcc_tmp_t)) { /** * modifier diff --git a/OpenCL/m31600-pure.cl b/OpenCL/m31600-pure.cl index 40af858f4..93925cb4c 100644 --- a/OpenCL/m31600-pure.cl +++ b/OpenCL/m31600-pure.cl @@ -82,7 +82,7 @@ DECLSPEC void hmac_sha1_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE sha1_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m31600_init (KERN_ATTR_TMPS (dcc2_tmp_t)) +KERNEL_FQ KERNEL_FA void m31600_init (KERN_ATTR_TMPS (dcc2_tmp_t)) { /** * base @@ -210,7 +210,7 @@ KERNEL_FQ void m31600_init (KERN_ATTR_TMPS (dcc2_tmp_t)) tmps[gid].out[3] = tmps[gid].dgst[3]; } -KERNEL_FQ void m31600_loop (KERN_ATTR_TMPS (dcc2_tmp_t)) +KERNEL_FQ KERNEL_FA void m31600_loop (KERN_ATTR_TMPS (dcc2_tmp_t)) { /** * base @@ -297,7 +297,7 @@ KERNEL_FQ void m31600_loop (KERN_ATTR_TMPS (dcc2_tmp_t)) unpackv (tmps, out, gid, 3, out[3]); } -KERNEL_FQ void m31600_comp (KERN_ATTR_TMPS (dcc2_tmp_t)) +KERNEL_FQ KERNEL_FA void m31600_comp (KERN_ATTR_TMPS (dcc2_tmp_t)) { /** * base diff --git a/OpenCL/m31700_a0-pure.cl b/OpenCL/m31700_a0-pure.cl index f56df6f88..551ab69b0 100644 --- a/OpenCL/m31700_a0-pure.cl +++ b/OpenCL/m31700_a0-pure.cl @@ -38,7 +38,7 @@ typedef struct md5_double_salt } md5_double_salt_t; -KERNEL_FQ void m31700_mxx (KERN_ATTR_RULES_ESALT (md5_double_salt_t)) +KERNEL_FQ KERNEL_FA void m31700_mxx (KERN_ATTR_RULES_ESALT (md5_double_salt_t)) { /** * modifier @@ -180,7 +180,7 @@ KERNEL_FQ void m31700_mxx (KERN_ATTR_RULES_ESALT (md5_double_salt_t)) } } -KERNEL_FQ void m31700_sxx (KERN_ATTR_RULES_ESALT (md5_double_salt_t)) +KERNEL_FQ KERNEL_FA void m31700_sxx (KERN_ATTR_RULES_ESALT (md5_double_salt_t)) { /** * modifier diff --git a/OpenCL/m31700_a1-pure.cl b/OpenCL/m31700_a1-pure.cl index 3b07f7e55..06b2e22af 100644 --- a/OpenCL/m31700_a1-pure.cl +++ b/OpenCL/m31700_a1-pure.cl @@ -36,7 +36,7 @@ typedef struct md5_double_salt } md5_double_salt_t; -KERNEL_FQ void m31700_mxx (KERN_ATTR_ESALT (md5_double_salt_t)) +KERNEL_FQ KERNEL_FA void m31700_mxx (KERN_ATTR_ESALT (md5_double_salt_t)) { /** * modifier @@ -176,7 +176,7 @@ KERNEL_FQ void m31700_mxx (KERN_ATTR_ESALT (md5_double_salt_t)) } } -KERNEL_FQ void m31700_sxx (KERN_ATTR_ESALT (md5_double_salt_t)) +KERNEL_FQ KERNEL_FA void m31700_sxx (KERN_ATTR_ESALT (md5_double_salt_t)) { /** * modifier diff --git a/OpenCL/m31700_a3-pure.cl b/OpenCL/m31700_a3-pure.cl index 9a9db3047..487179006 100644 --- a/OpenCL/m31700_a3-pure.cl +++ b/OpenCL/m31700_a3-pure.cl @@ -36,7 +36,7 @@ typedef struct md5_double_salt } md5_double_salt_t; -KERNEL_FQ void m31700_mxx (KERN_ATTR_VECTOR_ESALT (md5_double_salt_t)) +KERNEL_FQ KERNEL_FA void m31700_mxx (KERN_ATTR_VECTOR_ESALT (md5_double_salt_t)) { /** * modifier @@ -189,7 +189,7 @@ KERNEL_FQ void m31700_mxx (KERN_ATTR_VECTOR_ESALT (md5_double_salt_t)) } } -KERNEL_FQ void m31700_sxx (KERN_ATTR_VECTOR_ESALT (md5_double_salt_t)) +KERNEL_FQ KERNEL_FA void m31700_sxx (KERN_ATTR_VECTOR_ESALT (md5_double_salt_t)) { /** * modifier diff --git a/OpenCL/m31800-pure.cl b/OpenCL/m31800-pure.cl index 55ec89ddf..ec89c7e1a 100644 --- a/OpenCL/m31800-pure.cl +++ b/OpenCL/m31800-pure.cl @@ -88,7 +88,7 @@ DECLSPEC void hmac_sha256_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVA sha256_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m31800_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, onepassword8_t)) +KERNEL_FQ KERNEL_FA void m31800_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, onepassword8_t)) { /** * base @@ -191,7 +191,7 @@ KERNEL_FQ void m31800_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, onepasswo } } -KERNEL_FQ void m31800_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, onepassword8_t)) +KERNEL_FQ KERNEL_FA void m31800_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, onepassword8_t)) { const u64 gid = get_global_id (0); @@ -297,7 +297,7 @@ KERNEL_FQ void m31800_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, onepasswo } } -KERNEL_FQ void m31800_comp (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, onepassword8_t)) +KERNEL_FQ KERNEL_FA void m31800_comp (KERN_ATTR_TMPS_ESALT (pbkdf2_sha256_tmp_t, onepassword8_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m31900-pure.cl b/OpenCL/m31900-pure.cl index fca9b423d..a68c1702d 100644 --- a/OpenCL/m31900-pure.cl +++ b/OpenCL/m31900-pure.cl @@ -96,7 +96,7 @@ DECLSPEC void hmac_sha512_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVA sha512_transform_vector (w0, w1, w2, w3, w4, w5, w6, w7, digest); } -KERNEL_FQ void m31900_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha512_tmp_t, pbkdf2_sha512_aes_cbc_t)) +KERNEL_FQ KERNEL_FA void m31900_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha512_tmp_t, pbkdf2_sha512_aes_cbc_t)) { /** * base @@ -200,7 +200,7 @@ KERNEL_FQ void m31900_init (KERN_ATTR_TMPS_ESALT (pbkdf2_sha512_tmp_t, pbkdf2_sh } } -KERNEL_FQ void m31900_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha512_tmp_t, pbkdf2_sha512_aes_cbc_t)) +KERNEL_FQ KERNEL_FA void m31900_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha512_tmp_t, pbkdf2_sha512_aes_cbc_t)) { const u64 gid = get_global_id (0); @@ -326,7 +326,7 @@ KERNEL_FQ void m31900_loop (KERN_ATTR_TMPS_ESALT (pbkdf2_sha512_tmp_t, pbkdf2_sh } } -KERNEL_FQ void m31900_comp (KERN_ATTR_TMPS_ESALT (pbkdf2_sha512_tmp_t, pbkdf2_sha512_aes_cbc_t)) +KERNEL_FQ KERNEL_FA void m31900_comp (KERN_ATTR_TMPS_ESALT (pbkdf2_sha512_tmp_t, pbkdf2_sha512_aes_cbc_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m32000-pure.cl b/OpenCL/m32000-pure.cl index e7d985b52..8257eda4a 100644 --- a/OpenCL/m32000-pure.cl +++ b/OpenCL/m32000-pure.cl @@ -23,7 +23,7 @@ typedef struct netiq_sspr_md5_tmp } netiq_sspr_md5_tmp_t; -KERNEL_FQ void m32000_init (KERN_ATTR_TMPS (netiq_sspr_md5_tmp_t)) +KERNEL_FQ KERNEL_FA void m32000_init (KERN_ATTR_TMPS (netiq_sspr_md5_tmp_t)) { /** * base @@ -47,7 +47,7 @@ KERNEL_FQ void m32000_init (KERN_ATTR_TMPS (netiq_sspr_md5_tmp_t)) tmps[gid].dgst[3] = ctx.h[3]; } -KERNEL_FQ void m32000_loop (KERN_ATTR_TMPS (netiq_sspr_md5_tmp_t)) +KERNEL_FQ KERNEL_FA void m32000_loop (KERN_ATTR_TMPS (netiq_sspr_md5_tmp_t)) { const u64 gid = get_global_id (0); @@ -108,7 +108,7 @@ KERNEL_FQ void m32000_loop (KERN_ATTR_TMPS (netiq_sspr_md5_tmp_t)) } } -KERNEL_FQ void m32000_comp (KERN_ATTR_TMPS (netiq_sspr_md5_tmp_t)) +KERNEL_FQ KERNEL_FA void m32000_comp (KERN_ATTR_TMPS (netiq_sspr_md5_tmp_t)) { const u64 gid = get_global_id (0); diff --git a/OpenCL/m32010-pure.cl b/OpenCL/m32010-pure.cl index c806dce13..08a9a44a4 100644 --- a/OpenCL/m32010-pure.cl +++ b/OpenCL/m32010-pure.cl @@ -23,7 +23,7 @@ typedef struct netiq_sspr_sha1_tmp } netiq_sspr_sha1_tmp_t; -KERNEL_FQ void m32010_init (KERN_ATTR_TMPS (netiq_sspr_sha1_tmp_t)) +KERNEL_FQ KERNEL_FA void m32010_init (KERN_ATTR_TMPS (netiq_sspr_sha1_tmp_t)) { /** * base @@ -48,7 +48,7 @@ KERNEL_FQ void m32010_init (KERN_ATTR_TMPS (netiq_sspr_sha1_tmp_t)) tmps[gid].dgst[4] = ctx.h[4]; } -KERNEL_FQ void m32010_loop (KERN_ATTR_TMPS (netiq_sspr_sha1_tmp_t)) +KERNEL_FQ KERNEL_FA void m32010_loop (KERN_ATTR_TMPS (netiq_sspr_sha1_tmp_t)) { const u64 gid = get_global_id (0); @@ -113,7 +113,7 @@ KERNEL_FQ void m32010_loop (KERN_ATTR_TMPS (netiq_sspr_sha1_tmp_t)) } } -KERNEL_FQ void m32010_comp (KERN_ATTR_TMPS (netiq_sspr_sha1_tmp_t)) +KERNEL_FQ KERNEL_FA void m32010_comp (KERN_ATTR_TMPS (netiq_sspr_sha1_tmp_t)) { const u64 gid = get_global_id (0); diff --git a/OpenCL/m32020-pure.cl b/OpenCL/m32020-pure.cl index b779676e2..dccaf8f91 100644 --- a/OpenCL/m32020-pure.cl +++ b/OpenCL/m32020-pure.cl @@ -23,7 +23,7 @@ typedef struct netiq_sspr_sha1_tmp } netiq_sspr_sha1_tmp_t; -KERNEL_FQ void m32020_init (KERN_ATTR_TMPS (netiq_sspr_sha1_tmp_t)) +KERNEL_FQ KERNEL_FA void m32020_init (KERN_ATTR_TMPS (netiq_sspr_sha1_tmp_t)) { /** * base @@ -50,7 +50,7 @@ KERNEL_FQ void m32020_init (KERN_ATTR_TMPS (netiq_sspr_sha1_tmp_t)) tmps[gid].dgst[4] = ctx.h[4]; } -KERNEL_FQ void m32020_loop (KERN_ATTR_TMPS (netiq_sspr_sha1_tmp_t)) +KERNEL_FQ KERNEL_FA void m32020_loop (KERN_ATTR_TMPS (netiq_sspr_sha1_tmp_t)) { const u64 gid = get_global_id (0); @@ -115,7 +115,7 @@ KERNEL_FQ void m32020_loop (KERN_ATTR_TMPS (netiq_sspr_sha1_tmp_t)) } } -KERNEL_FQ void m32020_comp (KERN_ATTR_TMPS (netiq_sspr_sha1_tmp_t)) +KERNEL_FQ KERNEL_FA void m32020_comp (KERN_ATTR_TMPS (netiq_sspr_sha1_tmp_t)) { const u64 gid = get_global_id (0); diff --git a/OpenCL/m32030-pure.cl b/OpenCL/m32030-pure.cl index 78ea30d56..358d01165 100644 --- a/OpenCL/m32030-pure.cl +++ b/OpenCL/m32030-pure.cl @@ -23,7 +23,7 @@ typedef struct netiq_sspr_sha256_tmp } netiq_sspr_sha256_tmp_t; -KERNEL_FQ void m32030_init (KERN_ATTR_TMPS (netiq_sspr_sha256_tmp_t)) +KERNEL_FQ KERNEL_FA void m32030_init (KERN_ATTR_TMPS (netiq_sspr_sha256_tmp_t)) { /** * base @@ -53,7 +53,7 @@ KERNEL_FQ void m32030_init (KERN_ATTR_TMPS (netiq_sspr_sha256_tmp_t)) tmps[gid].dgst[7] = ctx.h[7]; } -KERNEL_FQ void m32030_loop (KERN_ATTR_TMPS (netiq_sspr_sha256_tmp_t)) +KERNEL_FQ KERNEL_FA void m32030_loop (KERN_ATTR_TMPS (netiq_sspr_sha256_tmp_t)) { const u64 gid = get_global_id (0); @@ -130,7 +130,7 @@ KERNEL_FQ void m32030_loop (KERN_ATTR_TMPS (netiq_sspr_sha256_tmp_t)) } } -KERNEL_FQ void m32030_comp (KERN_ATTR_TMPS (netiq_sspr_sha256_tmp_t)) +KERNEL_FQ KERNEL_FA void m32030_comp (KERN_ATTR_TMPS (netiq_sspr_sha256_tmp_t)) { const u64 gid = get_global_id (0); diff --git a/OpenCL/m32040-pure.cl b/OpenCL/m32040-pure.cl index 66611bd98..73b0d2b55 100644 --- a/OpenCL/m32040-pure.cl +++ b/OpenCL/m32040-pure.cl @@ -23,7 +23,7 @@ typedef struct netiq_sspr_sha512_tmp } netiq_sspr_sha512_tmp_t; -KERNEL_FQ void m32040_init (KERN_ATTR_TMPS (netiq_sspr_sha512_tmp_t)) +KERNEL_FQ KERNEL_FA void m32040_init (KERN_ATTR_TMPS (netiq_sspr_sha512_tmp_t)) { /** * base @@ -53,7 +53,7 @@ KERNEL_FQ void m32040_init (KERN_ATTR_TMPS (netiq_sspr_sha512_tmp_t)) tmps[gid].dgst[7] = ctx.h[7]; } -KERNEL_FQ void m32040_loop (KERN_ATTR_TMPS (netiq_sspr_sha512_tmp_t)) +KERNEL_FQ KERNEL_FA void m32040_loop (KERN_ATTR_TMPS (netiq_sspr_sha512_tmp_t)) { const u64 gid = get_global_id (0); @@ -150,7 +150,7 @@ KERNEL_FQ void m32040_loop (KERN_ATTR_TMPS (netiq_sspr_sha512_tmp_t)) } } -KERNEL_FQ void m32040_comp (KERN_ATTR_TMPS (netiq_sspr_sha512_tmp_t)) +KERNEL_FQ KERNEL_FA void m32040_comp (KERN_ATTR_TMPS (netiq_sspr_sha512_tmp_t)) { const u64 gid = get_global_id (0); const u64 lid = get_local_id (0); diff --git a/OpenCL/m32100-pure.cl b/OpenCL/m32100-pure.cl index a1e9fe227..57e4272c8 100644 --- a/OpenCL/m32100-pure.cl +++ b/OpenCL/m32100-pure.cl @@ -116,7 +116,7 @@ DECLSPEC void hmac_sha1_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE sha1_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m32100_init (KERN_ATTR_TMPS_ESALT (krb5asrep_17_tmp_t, krb5asrep_17_t)) +KERNEL_FQ KERNEL_FA void m32100_init (KERN_ATTR_TMPS_ESALT (krb5asrep_17_tmp_t, krb5asrep_17_t)) { /** * base @@ -194,7 +194,7 @@ KERNEL_FQ void m32100_init (KERN_ATTR_TMPS_ESALT (krb5asrep_17_tmp_t, krb5asrep_ } } -KERNEL_FQ void m32100_loop (KERN_ATTR_TMPS_ESALT (krb5asrep_17_tmp_t, krb5asrep_17_t)) +KERNEL_FQ KERNEL_FA void m32100_loop (KERN_ATTR_TMPS_ESALT (krb5asrep_17_tmp_t, krb5asrep_17_t)) { /** * base @@ -282,7 +282,7 @@ KERNEL_FQ void m32100_loop (KERN_ATTR_TMPS_ESALT (krb5asrep_17_tmp_t, krb5asrep_ } } -KERNEL_FQ void m32100_comp (KERN_ATTR_TMPS_ESALT (krb5asrep_17_tmp_t, krb5asrep_17_t)) +KERNEL_FQ KERNEL_FA void m32100_comp (KERN_ATTR_TMPS_ESALT (krb5asrep_17_tmp_t, krb5asrep_17_t)) { /** * base diff --git a/OpenCL/m32200-pure.cl b/OpenCL/m32200-pure.cl index 9a9d999ae..76a8c07a6 100644 --- a/OpenCL/m32200-pure.cl +++ b/OpenCL/m32200-pure.cl @@ -116,7 +116,7 @@ DECLSPEC void hmac_sha1_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE sha1_transform_vector (w0, w1, w2, w3, digest); } -KERNEL_FQ void m32200_init (KERN_ATTR_TMPS_ESALT (krb5asrep_18_tmp_t, krb5asrep_18_t)) +KERNEL_FQ KERNEL_FA void m32200_init (KERN_ATTR_TMPS_ESALT (krb5asrep_18_tmp_t, krb5asrep_18_t)) { /** * base @@ -194,7 +194,7 @@ KERNEL_FQ void m32200_init (KERN_ATTR_TMPS_ESALT (krb5asrep_18_tmp_t, krb5asrep_ } } -KERNEL_FQ void m32200_loop (KERN_ATTR_TMPS_ESALT (krb5asrep_18_tmp_t, krb5asrep_18_t)) +KERNEL_FQ KERNEL_FA void m32200_loop (KERN_ATTR_TMPS_ESALT (krb5asrep_18_tmp_t, krb5asrep_18_t)) { /** * base @@ -282,7 +282,7 @@ KERNEL_FQ void m32200_loop (KERN_ATTR_TMPS_ESALT (krb5asrep_18_tmp_t, krb5asrep_ } } -KERNEL_FQ void m32200_comp (KERN_ATTR_TMPS_ESALT (krb5asrep_18_tmp_t, krb5asrep_18_t)) +KERNEL_FQ KERNEL_FA void m32200_comp (KERN_ATTR_TMPS_ESALT (krb5asrep_18_tmp_t, krb5asrep_18_t)) { /** * base diff --git a/OpenCL/m32300_a0-optimized.cl b/OpenCL/m32300_a0-optimized.cl index 76400a61e..5d0b3eeee 100644 --- a/OpenCL/m32300_a0-optimized.cl +++ b/OpenCL/m32300_a0-optimized.cl @@ -41,7 +41,7 @@ typedef struct md5_triple_salt } md5_triple_salt_t; -KERNEL_FQ void m32300_m04 (KERN_ATTR_RULES_ESALT (md5_triple_salt_t)) +KERNEL_FQ KERNEL_FA void m32300_m04 (KERN_ATTR_RULES_ESALT (md5_triple_salt_t)) { /** * modifier @@ -413,15 +413,15 @@ KERNEL_FQ void m32300_m04 (KERN_ATTR_RULES_ESALT (md5_triple_salt_t)) } } -KERNEL_FQ void m32300_m08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m32300_m08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m32300_m16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m32300_m16 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m32300_s04 (KERN_ATTR_RULES_ESALT (md5_triple_salt_t)) +KERNEL_FQ KERNEL_FA void m32300_s04 (KERN_ATTR_RULES_ESALT (md5_triple_salt_t)) { /** * modifier @@ -804,10 +804,10 @@ KERNEL_FQ void m32300_s04 (KERN_ATTR_RULES_ESALT (md5_triple_salt_t)) } } -KERNEL_FQ void m32300_s08 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m32300_s08 (KERN_ATTR_RULES ()) { } -KERNEL_FQ void m32300_s16 (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m32300_s16 (KERN_ATTR_RULES ()) { } diff --git a/OpenCL/m32300_a0-pure.cl b/OpenCL/m32300_a0-pure.cl index 59c177abc..a0a663bff 100644 --- a/OpenCL/m32300_a0-pure.cl +++ b/OpenCL/m32300_a0-pure.cl @@ -41,7 +41,7 @@ typedef struct md5_triple_salt } md5_triple_salt_t; -KERNEL_FQ void m32300_mxx (KERN_ATTR_RULES_ESALT (md5_triple_salt_t)) +KERNEL_FQ KERNEL_FA void m32300_mxx (KERN_ATTR_RULES_ESALT (md5_triple_salt_t)) { /** * modifier @@ -208,7 +208,7 @@ KERNEL_FQ void m32300_mxx (KERN_ATTR_RULES_ESALT (md5_triple_salt_t)) } } -KERNEL_FQ void m32300_sxx (KERN_ATTR_RULES_ESALT (md5_triple_salt_t)) +KERNEL_FQ KERNEL_FA void m32300_sxx (KERN_ATTR_RULES_ESALT (md5_triple_salt_t)) { /** * modifier diff --git a/OpenCL/m32300_a1-optimized.cl b/OpenCL/m32300_a1-optimized.cl index 371cb2d99..d3a9d2efe 100644 --- a/OpenCL/m32300_a1-optimized.cl +++ b/OpenCL/m32300_a1-optimized.cl @@ -39,7 +39,7 @@ typedef struct md5_triple_salt } md5_triple_salt_t; -KERNEL_FQ void m32300_m04 (KERN_ATTR_ESALT (md5_triple_salt_t)) +KERNEL_FQ KERNEL_FA void m32300_m04 (KERN_ATTR_ESALT (md5_triple_salt_t)) { /** * modifier @@ -466,15 +466,15 @@ KERNEL_FQ void m32300_m04 (KERN_ATTR_ESALT (md5_triple_salt_t)) } } -KERNEL_FQ void m32300_m08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m32300_m08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m32300_m16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m32300_m16 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m32300_s04 (KERN_ATTR_ESALT (md5_triple_salt_t)) +KERNEL_FQ KERNEL_FA void m32300_s04 (KERN_ATTR_ESALT (md5_triple_salt_t)) { /** * modifier @@ -916,10 +916,10 @@ KERNEL_FQ void m32300_s04 (KERN_ATTR_ESALT (md5_triple_salt_t)) } } -KERNEL_FQ void m32300_s08 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m32300_s08 (KERN_ATTR_BASIC ()) { } -KERNEL_FQ void m32300_s16 (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m32300_s16 (KERN_ATTR_BASIC ()) { } diff --git a/OpenCL/m32300_a1-pure.cl b/OpenCL/m32300_a1-pure.cl index 132db135a..47dd89d72 100644 --- a/OpenCL/m32300_a1-pure.cl +++ b/OpenCL/m32300_a1-pure.cl @@ -39,7 +39,7 @@ typedef struct md5_triple_salt } md5_triple_salt_t; -KERNEL_FQ void m32300_mxx (KERN_ATTR_ESALT (md5_triple_salt_t)) +KERNEL_FQ KERNEL_FA void m32300_mxx (KERN_ATTR_ESALT (md5_triple_salt_t)) { /** * modifier @@ -204,7 +204,7 @@ KERNEL_FQ void m32300_mxx (KERN_ATTR_ESALT (md5_triple_salt_t)) } } -KERNEL_FQ void m32300_sxx (KERN_ATTR_ESALT (md5_triple_salt_t)) +KERNEL_FQ KERNEL_FA void m32300_sxx (KERN_ATTR_ESALT (md5_triple_salt_t)) { /** * modifier diff --git a/OpenCL/m32300_a3-optimized.cl b/OpenCL/m32300_a3-optimized.cl index 74a051cf5..603dbcdbc 100644 --- a/OpenCL/m32300_a3-optimized.cl +++ b/OpenCL/m32300_a3-optimized.cl @@ -748,7 +748,7 @@ DECLSPEC void m32300s (PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w } } -KERNEL_FQ void m32300_m04 (KERN_ATTR_VECTOR_ESALT (md5_triple_salt_t)) +KERNEL_FQ KERNEL_FA void m32300_m04 (KERN_ATTR_VECTOR_ESALT (md5_triple_salt_t)) { /** * base @@ -818,7 +818,7 @@ KERNEL_FQ void m32300_m04 (KERN_ATTR_VECTOR_ESALT (md5_triple_salt_t)) m32300m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m32300_m08 (KERN_ATTR_VECTOR_ESALT (md5_triple_salt_t)) +KERNEL_FQ KERNEL_FA void m32300_m08 (KERN_ATTR_VECTOR_ESALT (md5_triple_salt_t)) { /** * base @@ -888,7 +888,7 @@ KERNEL_FQ void m32300_m08 (KERN_ATTR_VECTOR_ESALT (md5_triple_salt_t)) m32300m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m32300_m16 (KERN_ATTR_VECTOR_ESALT (md5_triple_salt_t)) +KERNEL_FQ KERNEL_FA void m32300_m16 (KERN_ATTR_VECTOR_ESALT (md5_triple_salt_t)) { /** * base @@ -958,7 +958,7 @@ KERNEL_FQ void m32300_m16 (KERN_ATTR_VECTOR_ESALT (md5_triple_salt_t)) m32300m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m32300_s04 (KERN_ATTR_VECTOR_ESALT (md5_triple_salt_t)) +KERNEL_FQ KERNEL_FA void m32300_s04 (KERN_ATTR_VECTOR_ESALT (md5_triple_salt_t)) { /** * base @@ -1028,7 +1028,7 @@ KERNEL_FQ void m32300_s04 (KERN_ATTR_VECTOR_ESALT (md5_triple_salt_t)) m32300s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m32300_s08 (KERN_ATTR_VECTOR_ESALT (md5_triple_salt_t)) +KERNEL_FQ KERNEL_FA void m32300_s08 (KERN_ATTR_VECTOR_ESALT (md5_triple_salt_t)) { /** * base @@ -1098,7 +1098,7 @@ KERNEL_FQ void m32300_s08 (KERN_ATTR_VECTOR_ESALT (md5_triple_salt_t)) m32300s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz, l_bin2asc); } -KERNEL_FQ void m32300_s16 (KERN_ATTR_VECTOR_ESALT (md5_triple_salt_t)) +KERNEL_FQ KERNEL_FA void m32300_s16 (KERN_ATTR_VECTOR_ESALT (md5_triple_salt_t)) { /** * base diff --git a/OpenCL/m32300_a3-pure.cl b/OpenCL/m32300_a3-pure.cl index 1345df59d..87ce4ca12 100644 --- a/OpenCL/m32300_a3-pure.cl +++ b/OpenCL/m32300_a3-pure.cl @@ -39,7 +39,7 @@ typedef struct md5_triple_salt } md5_triple_salt_t; -KERNEL_FQ void m32300_mxx (KERN_ATTR_VECTOR_ESALT (md5_triple_salt_t)) +KERNEL_FQ KERNEL_FA void m32300_mxx (KERN_ATTR_VECTOR_ESALT (md5_triple_salt_t)) { /** * modifier @@ -217,7 +217,7 @@ KERNEL_FQ void m32300_mxx (KERN_ATTR_VECTOR_ESALT (md5_triple_salt_t)) } } -KERNEL_FQ void m32300_sxx (KERN_ATTR_VECTOR_ESALT (md5_triple_salt_t)) +KERNEL_FQ KERNEL_FA void m32300_sxx (KERN_ATTR_VECTOR_ESALT (md5_triple_salt_t)) { /** * modifier diff --git a/OpenCL/m32410_a0-pure.cl b/OpenCL/m32410_a0-pure.cl index 864468195..79ca3d5c6 100644 --- a/OpenCL/m32410_a0-pure.cl +++ b/OpenCL/m32410_a0-pure.cl @@ -28,7 +28,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m32410_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m32410_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -192,7 +192,7 @@ KERNEL_FQ void m32410_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m32410_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m32410_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m32410_a1-pure.cl b/OpenCL/m32410_a1-pure.cl index 65dccc7d6..c94d252a8 100644 --- a/OpenCL/m32410_a1-pure.cl +++ b/OpenCL/m32410_a1-pure.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m32410_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m32410_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -188,7 +188,7 @@ KERNEL_FQ void m32410_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m32410_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m32410_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m32410_a3-pure.cl b/OpenCL/m32410_a3-pure.cl index 32b0c17d9..e58b8c94a 100644 --- a/OpenCL/m32410_a3-pure.cl +++ b/OpenCL/m32410_a3-pure.cl @@ -26,7 +26,7 @@ #define uint_to_hex_lower8(i) make_u32x (l_bin2asc[(i).s0], l_bin2asc[(i).s1], l_bin2asc[(i).s2], l_bin2asc[(i).s3], l_bin2asc[(i).s4], l_bin2asc[(i).s5], l_bin2asc[(i).s6], l_bin2asc[(i).s7], l_bin2asc[(i).s8], l_bin2asc[(i).s9], l_bin2asc[(i).sa], l_bin2asc[(i).sb], l_bin2asc[(i).sc], l_bin2asc[(i).sd], l_bin2asc[(i).se], l_bin2asc[(i).sf]) #endif -KERNEL_FQ void m32410_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m32410_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -201,7 +201,7 @@ KERNEL_FQ void m32410_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m32410_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m32410_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m32420_a0-pure.cl b/OpenCL/m32420_a0-pure.cl index 79a7c2712..11159cb07 100644 --- a/OpenCL/m32420_a0-pure.cl +++ b/OpenCL/m32420_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha512.cl) #endif -KERNEL_FQ void m32420_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m32420_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -122,7 +122,7 @@ KERNEL_FQ void m32420_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m32420_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m32420_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m32420_a1-pure.cl b/OpenCL/m32420_a1-pure.cl index 1835d4fba..8a5ab0976 100644 --- a/OpenCL/m32420_a1-pure.cl +++ b/OpenCL/m32420_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha512.cl) #endif -KERNEL_FQ void m32420_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m32420_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -118,7 +118,7 @@ KERNEL_FQ void m32420_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m32420_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m32420_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m32420_a3-pure.cl b/OpenCL/m32420_a3-pure.cl index ae4575e1b..e67961591 100644 --- a/OpenCL/m32420_a3-pure.cl +++ b/OpenCL/m32420_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_sha512.cl) #endif -KERNEL_FQ void m32420_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m32420_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -140,7 +140,7 @@ KERNEL_FQ void m32420_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m32420_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m32420_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m32500-pure.cl b/OpenCL/m32500-pure.cl index a40ed2481..9a0a5a08d 100644 --- a/OpenCL/m32500-pure.cl +++ b/OpenCL/m32500-pure.cl @@ -127,7 +127,7 @@ DECLSPEC void base64_encode_sha256 (u32 *out, const u32 *in) } //--------------------------------------------------------------------------------------- -KERNEL_FQ void m32500_init (KERN_ATTR_TMPS_ESALT (doge_tmp_t, payload_t)) +KERNEL_FQ KERNEL_FA void m32500_init (KERN_ATTR_TMPS_ESALT (doge_tmp_t, payload_t)) { const u64 gid = get_global_id (0); @@ -220,7 +220,7 @@ KERNEL_FQ void m32500_init (KERN_ATTR_TMPS_ESALT (doge_tmp_t, payload_t)) } -KERNEL_FQ void m32500_loop (KERN_ATTR_TMPS_ESALT (doge_tmp_t, payload_t)) +KERNEL_FQ KERNEL_FA void m32500_loop (KERN_ATTR_TMPS_ESALT (doge_tmp_t, payload_t)) { //pbkdf2hmac here @@ -328,7 +328,7 @@ KERNEL_FQ void m32500_loop (KERN_ATTR_TMPS_ESALT (doge_tmp_t, payload_t)) } } -KERNEL_FQ void m32500_comp (KERN_ATTR_TMPS_ESALT (doge_tmp_t, payload_t)) +KERNEL_FQ KERNEL_FA void m32500_comp (KERN_ATTR_TMPS_ESALT (doge_tmp_t, payload_t)) { /** * base diff --git a/OpenCL/m32600_a0-pure.cl b/OpenCL/m32600_a0-pure.cl index b3200f1cf..c15b27ee9 100644 --- a/OpenCL/m32600_a0-pure.cl +++ b/OpenCL/m32600_a0-pure.cl @@ -16,7 +16,7 @@ #include M2S(INCLUDE_PATH/inc_hash_whirlpool.cl) #endif -KERNEL_FQ void m32600_mxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m32600_mxx (KERN_ATTR_RULES ()) { /** * modifier @@ -118,7 +118,7 @@ KERNEL_FQ void m32600_mxx (KERN_ATTR_RULES ()) } } -KERNEL_FQ void m32600_sxx (KERN_ATTR_RULES ()) +KERNEL_FQ KERNEL_FA void m32600_sxx (KERN_ATTR_RULES ()) { /** * modifier diff --git a/OpenCL/m32600_a1-pure.cl b/OpenCL/m32600_a1-pure.cl index 40289ed35..05e5da59c 100644 --- a/OpenCL/m32600_a1-pure.cl +++ b/OpenCL/m32600_a1-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_whirlpool.cl) #endif -KERNEL_FQ void m32600_mxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m32600_mxx (KERN_ATTR_BASIC ()) { /** * modifier @@ -112,7 +112,7 @@ KERNEL_FQ void m32600_mxx (KERN_ATTR_BASIC ()) } } -KERNEL_FQ void m32600_sxx (KERN_ATTR_BASIC ()) +KERNEL_FQ KERNEL_FA void m32600_sxx (KERN_ATTR_BASIC ()) { /** * modifier diff --git a/OpenCL/m32600_a3-pure.cl b/OpenCL/m32600_a3-pure.cl index 173ba4381..bd5580bd0 100644 --- a/OpenCL/m32600_a3-pure.cl +++ b/OpenCL/m32600_a3-pure.cl @@ -14,7 +14,7 @@ #include M2S(INCLUDE_PATH/inc_hash_whirlpool.cl) #endif -KERNEL_FQ void m32600_mxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m32600_mxx (KERN_ATTR_VECTOR ()) { /** * modifier @@ -127,7 +127,7 @@ KERNEL_FQ void m32600_mxx (KERN_ATTR_VECTOR ()) } } -KERNEL_FQ void m32600_sxx (KERN_ATTR_VECTOR ()) +KERNEL_FQ KERNEL_FA void m32600_sxx (KERN_ATTR_VECTOR ()) { /** * modifier diff --git a/OpenCL/m32700-pure.cl b/OpenCL/m32700-pure.cl index 4f25d3020..1779c1be6 100644 --- a/OpenCL/m32700-pure.cl +++ b/OpenCL/m32700-pure.cl @@ -120,7 +120,7 @@ DECLSPEC void sha1_final_32700 (PRIVATE_AS sha1_ctx_t *ctx) sha1_transform (ctx->w0, ctx->w1, ctx->w2, ctx->w3, ctx->h); } -KERNEL_FQ void m32700_init (KERN_ATTR_TMPS (sha1_tmp_t)) +KERNEL_FQ KERNEL_FA void m32700_init (KERN_ATTR_TMPS (sha1_tmp_t)) { const u64 gid = get_global_id (0); @@ -161,7 +161,7 @@ KERNEL_FQ void m32700_init (KERN_ATTR_TMPS (sha1_tmp_t)) } } -KERNEL_FQ void m32700_loop (KERN_ATTR_TMPS (sha1_tmp_t)) +KERNEL_FQ KERNEL_FA void m32700_loop (KERN_ATTR_TMPS (sha1_tmp_t)) { const u64 gid = get_global_id (0); @@ -193,7 +193,7 @@ KERNEL_FQ void m32700_loop (KERN_ATTR_TMPS (sha1_tmp_t)) } } -KERNEL_FQ void m32700_comp (KERN_ATTR_TMPS (sha1_tmp_t)) +KERNEL_FQ KERNEL_FA void m32700_comp (KERN_ATTR_TMPS (sha1_tmp_t)) { const u64 gid = get_global_id (0); diff --git a/OpenCL/m33300_a0-pure.cl b/OpenCL/m33300_a0-pure.cl new file mode 100644 index 000000000..eade1317c --- /dev/null +++ b/OpenCL/m33300_a0-pure.cl @@ -0,0 +1,135 @@ +/** + * Author......: See docs/credits.txt + * License.....: MIT + */ + +//#define NEW_SIMD_CODE + +#ifdef KERNEL_STATIC +#include M2S(INCLUDE_PATH/inc_vendor.h) +#include M2S(INCLUDE_PATH/inc_types.h) +#include M2S(INCLUDE_PATH/inc_platform.cl) +#include M2S(INCLUDE_PATH/inc_common.cl) +#include M2S(INCLUDE_PATH/inc_rp.h) +#include M2S(INCLUDE_PATH/inc_rp.cl) +#include M2S(INCLUDE_PATH/inc_scalar.cl) +#include M2S(INCLUDE_PATH/inc_hash_blake2s.cl) +#endif + +KERNEL_FQ KERNEL_FA void m33300_mxx (KERN_ATTR_RULES ()) +{ + /** + * modifier + */ + + const u64 lid = get_local_id (0); + const u64 gid = get_global_id (0); + + if (gid >= GID_CNT) return; + + /** + * base + */ + + COPY_PW (pws[gid]); + + const u32 salt_len = salt_bufs[SALT_POS_HOST].salt_len; + + u32 s[64] = { 0 }; + + for (u32 i = 0, idx = 0; i < salt_len; i += 4, idx += 1) + { + s[idx] = salt_bufs[SALT_POS_HOST].salt_buf[idx]; + } + + /** + * loop + */ + + for (u32 il_pos = 0; il_pos < IL_CNT; il_pos++) + { + pw_t tmp = PASTE_PW; + + tmp.pw_len = apply_rules (rules_buf[il_pos].cmds, tmp.i, tmp.pw_len); + + blake2s_hmac_ctx_t ctx; + + blake2s_hmac_init (&ctx, tmp.i, tmp.pw_len); + + blake2s_hmac_update (&ctx, s, salt_len); + + blake2s_hmac_final (&ctx); + + const u32 r0 = ctx.opad.h[DGST_R0]; + const u32 r1 = ctx.opad.h[DGST_R1]; + const u32 r2 = ctx.opad.h[DGST_R2]; + const u32 r3 = ctx.opad.h[DGST_R3]; + + COMPARE_M_SCALAR (r0, r1, r2, r3); + } +} + +KERNEL_FQ KERNEL_FA void m33300_sxx (KERN_ATTR_RULES ()) +{ + /** + * modifier + */ + + const u64 lid = get_local_id (0); + const u64 gid = get_global_id (0); + + if (gid >= GID_CNT) return; + + /** + * digest + */ + + const u32 search[4] = + { + digests_buf[DIGESTS_OFFSET_HOST].digest_buf[DGST_R0], + digests_buf[DIGESTS_OFFSET_HOST].digest_buf[DGST_R1], + digests_buf[DIGESTS_OFFSET_HOST].digest_buf[DGST_R2], + digests_buf[DIGESTS_OFFSET_HOST].digest_buf[DGST_R3] + }; + + /** + * base + */ + + COPY_PW (pws[gid]); + + const u32 salt_len = salt_bufs[SALT_POS_HOST].salt_len; + + u32 s[64] = { 0 }; + + for (u32 i = 0, idx = 0; i < salt_len; i += 4, idx += 1) + { + s[idx] = salt_bufs[SALT_POS_HOST].salt_buf[idx]; + } + + /** + * loop + */ + + for (u32 il_pos = 0; il_pos < IL_CNT; il_pos++) + { + pw_t tmp = PASTE_PW; + + tmp.pw_len = apply_rules (rules_buf[il_pos].cmds, tmp.i, tmp.pw_len); + + blake2s_hmac_ctx_t ctx; + + blake2s_hmac_init (&ctx, tmp.i, tmp.pw_len); + + blake2s_hmac_update (&ctx, s, salt_len); + + blake2s_hmac_final (&ctx); + + const u32 r0 = ctx.opad.h[DGST_R0]; + const u32 r1 = ctx.opad.h[DGST_R1]; + const u32 r2 = ctx.opad.h[DGST_R2]; + const u32 r3 = ctx.opad.h[DGST_R3]; + + COMPARE_S_SCALAR (r0, r1, r2, r3); + } +} diff --git a/OpenCL/m33300_a1-pure.cl b/OpenCL/m33300_a1-pure.cl new file mode 100644 index 000000000..53d7496a5 --- /dev/null +++ b/OpenCL/m33300_a1-pure.cl @@ -0,0 +1,183 @@ +/** + * Author......: See docs/credits.txt + * License.....: MIT + */ + +//#define NEW_SIMD_CODE + +#ifdef KERNEL_STATIC +#include M2S(INCLUDE_PATH/inc_vendor.h) +#include M2S(INCLUDE_PATH/inc_types.h) +#include M2S(INCLUDE_PATH/inc_platform.cl) +#include M2S(INCLUDE_PATH/inc_common.cl) +#include M2S(INCLUDE_PATH/inc_scalar.cl) +#include M2S(INCLUDE_PATH/inc_hash_blake2s.cl) +#endif + +KERNEL_FQ KERNEL_FA void m33300_mxx (KERN_ATTR_BASIC ()) +{ + /** + * modifier + */ + + const u64 lid = get_local_id (0); + const u64 gid = get_global_id (0); + + if (gid >= GID_CNT) return; + + /** + * base + */ + + const u32 pw_len = pws[gid].pw_len; + + u32 w[64] = { 0 }; + + for (u32 i = 0, idx = 0; i < pw_len; i += 4, idx += 1) + { + w[idx] = pws[gid].i[idx]; + } + + const u32 salt_len = salt_bufs[SALT_POS_HOST].salt_len; + + u32 s[64] = { 0 }; + + for (u32 i = 0, idx = 0; i < salt_len; i += 4, idx += 1) + { + s[idx] = salt_bufs[SALT_POS_HOST].salt_buf[idx]; + } + + /** + * loop + */ + + for (u32 il_pos = 0; il_pos < IL_CNT; il_pos++) + { + const u32 comb_len = combs_buf[il_pos].pw_len; + + u32 c[64]; + + #ifdef _unroll + #pragma unroll + #endif + for (int idx = 0; idx < 64; idx++) + { + c[idx] = combs_buf[il_pos].i[idx]; + } + + switch_buffer_by_offset_1x64_le_S (c, pw_len); + + #ifdef _unroll + #pragma unroll + #endif + for (int i = 0; i < 64; i++) + { + c[i] |= w[i]; + } + + blake2s_hmac_ctx_t ctx; + + blake2s_hmac_init (&ctx, c, pw_len + comb_len); + + blake2s_hmac_update (&ctx, s, salt_len); + + blake2s_hmac_final (&ctx); + + const u32 r0 = ctx.opad.h[DGST_R0]; + const u32 r1 = ctx.opad.h[DGST_R1]; + const u32 r2 = ctx.opad.h[DGST_R2]; + const u32 r3 = ctx.opad.h[DGST_R3]; + + COMPARE_M_SCALAR (r0, r1, r2, r3); + } +} + +KERNEL_FQ KERNEL_FA void m33300_sxx (KERN_ATTR_BASIC ()) +{ + /** + * modifier + */ + + const u64 lid = get_local_id (0); + const u64 gid = get_global_id (0); + + if (gid >= GID_CNT) return; + + /** + * digest + */ + + const u32 search[4] = + { + digests_buf[DIGESTS_OFFSET_HOST].digest_buf[DGST_R0], + digests_buf[DIGESTS_OFFSET_HOST].digest_buf[DGST_R1], + digests_buf[DIGESTS_OFFSET_HOST].digest_buf[DGST_R2], + digests_buf[DIGESTS_OFFSET_HOST].digest_buf[DGST_R3] + }; + + /** + * base + */ + + const u32 pw_len = pws[gid].pw_len; + + u32 w[64] = { 0 }; + + for (u32 i = 0, idx = 0; i < pw_len; i += 4, idx += 1) + { + w[idx] = pws[gid].i[idx]; + } + + const u32 salt_len = salt_bufs[SALT_POS_HOST].salt_len; + + u32 s[64] = { 0 }; + + for (u32 i = 0, idx = 0; i < salt_len; i += 4, idx += 1) + { + s[idx] = salt_bufs[SALT_POS_HOST].salt_buf[idx]; + } + + /** + * loop + */ + + for (u32 il_pos = 0; il_pos < IL_CNT; il_pos++) + { + const u32 comb_len = combs_buf[il_pos].pw_len; + + u32 c[64]; + + #ifdef _unroll + #pragma unroll + #endif + for (int idx = 0; idx < 64; idx++) + { + c[idx] = combs_buf[il_pos].i[idx]; + } + + switch_buffer_by_offset_1x64_le_S (c, pw_len); + + #ifdef _unroll + #pragma unroll + #endif + for (int i = 0; i < 64; i++) + { + c[i] |= w[i]; + } + + blake2s_hmac_ctx_t ctx; + + blake2s_hmac_init (&ctx, c, pw_len + comb_len); + + blake2s_hmac_update (&ctx, s, salt_len); + + blake2s_hmac_final (&ctx); + + const u32 r0 = ctx.opad.h[DGST_R0]; + const u32 r1 = ctx.opad.h[DGST_R1]; + const u32 r2 = ctx.opad.h[DGST_R2]; + const u32 r3 = ctx.opad.h[DGST_R3]; + + COMPARE_S_SCALAR (r0, r1, r2, r3); + } +} diff --git a/OpenCL/m33300_a3-pure.cl b/OpenCL/m33300_a3-pure.cl new file mode 100644 index 000000000..a1ae75885 --- /dev/null +++ b/OpenCL/m33300_a3-pure.cl @@ -0,0 +1,156 @@ +/** + * Author......: See docs/credits.txt + * License.....: MIT + */ + +#define NEW_SIMD_CODE + +#ifdef KERNEL_STATIC +#include M2S(INCLUDE_PATH/inc_vendor.h) +#include M2S(INCLUDE_PATH/inc_types.h) +#include M2S(INCLUDE_PATH/inc_platform.cl) +#include M2S(INCLUDE_PATH/inc_common.cl) +#include M2S(INCLUDE_PATH/inc_simd.cl) +#include M2S(INCLUDE_PATH/inc_hash_blake2s.cl) +#endif + +KERNEL_FQ KERNEL_FA void m33300_mxx (KERN_ATTR_VECTOR ()) +{ + /** + * modifier + */ + + const u64 lid = get_local_id (0); + const u64 gid = get_global_id (0); + + if (gid >= GID_CNT) return; + + /** + * base + */ + + const u32 pw_len = pws[gid].pw_len; + + u32x w[64] = { 0 }; + + for (u32 i = 0, idx = 0; i < pw_len; i += 4, idx += 1) + { + w[idx] = pws[gid].i[idx]; + } + + const u32 salt_len = salt_bufs[SALT_POS_HOST].salt_len; + + u32x s[64] = { 0 }; + + for (u32 i = 0, idx = 0; i < salt_len; i += 4, idx += 1) + { + s[idx] = (salt_bufs[SALT_POS_HOST].salt_buf[idx]); + } + + /** + * loop + */ + + u32x w0l = w[0]; + + for (u32 il_pos = 0; il_pos < IL_CNT; il_pos += VECT_SIZE) + { + const u32x w0r = words_buf_r[il_pos / VECT_SIZE]; + + const u32x w0 = w0l | w0r; + + w[0] = w0; + + blake2s_hmac_ctx_vector_t ctx; + + blake2s_hmac_init_vector (&ctx, w, pw_len); + + blake2s_hmac_update_vector (&ctx, s, salt_len); + + blake2s_hmac_final_vector (&ctx); + + const u32x r0 = ctx.opad.h[DGST_R0]; + const u32x r1 = ctx.opad.h[DGST_R1]; + const u32x r2 = ctx.opad.h[DGST_R2]; + const u32x r3 = ctx.opad.h[DGST_R3]; + + COMPARE_M_SIMD (r0, r1, r2, r3); + } +} + +KERNEL_FQ KERNEL_FA void m33300_sxx (KERN_ATTR_VECTOR ()) +{ + /** + * modifier + */ + + const u64 lid = get_local_id (0); + const u64 gid = get_global_id (0); + + if (gid >= GID_CNT) return; + + /** + * digest + */ + + const u32 search[4] = + { + digests_buf[DIGESTS_OFFSET_HOST].digest_buf[DGST_R0], + digests_buf[DIGESTS_OFFSET_HOST].digest_buf[DGST_R1], + digests_buf[DIGESTS_OFFSET_HOST].digest_buf[DGST_R2], + digests_buf[DIGESTS_OFFSET_HOST].digest_buf[DGST_R3] + }; + + /** + * base + */ + + const u32 pw_len = pws[gid].pw_len; + + u32x w[64] = { 0 }; + + for (u32 i = 0, idx = 0; i < pw_len; i += 4, idx += 1) + { + w[idx] = pws[gid].i[idx]; + } + + const u32 salt_len = salt_bufs[SALT_POS_HOST].salt_len; + + u32x s[64] = { 0 }; + + for (u32 i = 0, idx = 0; i < salt_len; i += 4, idx += 1) + { + s[idx] = (salt_bufs[SALT_POS_HOST].salt_buf[idx]); + } + + /** + * loop + */ + + u32x w0l = w[0]; + + for (u32 il_pos = 0; il_pos < IL_CNT; il_pos += VECT_SIZE) + { + const u32x w0r = words_buf_r[il_pos / VECT_SIZE]; + + const u32x w0 = w0l | w0r; + + w[0] = w0; + + blake2s_hmac_ctx_vector_t ctx; + + blake2s_hmac_init_vector (&ctx, w, pw_len); + + blake2s_hmac_update_vector (&ctx, s, salt_len); + + blake2s_hmac_final_vector (&ctx); + + const u32x r0 = ctx.opad.h[DGST_R0]; + const u32x r1 = ctx.opad.h[DGST_R1]; + const u32x r2 = ctx.opad.h[DGST_R2]; + const u32x r3 = ctx.opad.h[DGST_R3]; + + COMPARE_S_SIMD (r0, r1, r2, r3); + } + +} diff --git a/OpenCL/m33500_a0-optimized.cl b/OpenCL/m33500_a0-optimized.cl new file mode 100644 index 000000000..dc8684b7d --- /dev/null +++ b/OpenCL/m33500_a0-optimized.cl @@ -0,0 +1,239 @@ +/** + * Author......: See docs/credits.txt + * License.....: MIT + */ + +//#define NEW_SIMD_CODE + +#ifdef KERNEL_STATIC +#include M2S(INCLUDE_PATH/inc_vendor.h) +#include M2S(INCLUDE_PATH/inc_types.h) +#include M2S(INCLUDE_PATH/inc_platform.cl) +#include M2S(INCLUDE_PATH/inc_common.cl) +#include M2S(INCLUDE_PATH/inc_rp_optimized.h) +#include M2S(INCLUDE_PATH/inc_rp_optimized.cl) +#include M2S(INCLUDE_PATH/inc_simd.cl) +#include M2S(INCLUDE_PATH/inc_cipher_rc4.cl) +#endif + +typedef struct rc4 +{ + u32 dropN; + u32 ct_len; + u32 pt_len; + u32 pt_off; + + u32 pt[2]; + u32 ct[16]; + +} rc4_t; + +CONSTANT_VK u32 pt_masks[8] = +{ + 0x00000000, + 0x000000FF, + 0x0000FFFF, + 0x00FFFFFF, + 0xFFFFFFFF, + 0x000000FF, + 0, + 0 +}; + +KERNEL_FQ KERNEL_FA void m33500_m04 (KERN_ATTR_RULES_ESALT (rc4_t)) +{ + /** + * base + */ + + const u64 lid = get_local_id (0); + const u64 gid = get_global_id (0); + + if (gid >= GID_CNT) return; + + u32 pw_buf0[4]; + u32 pw_buf1[4] = { 0 }; + + pw_buf0[0] = pws[gid].i[0]; + pw_buf0[1] = pws[gid].i[1]; + pw_buf0[2] = 0; + pw_buf0[3] = 0; + + const u32 pw_len = pws[gid].pw_len & 63; + + /** + * shared + */ + + LOCAL_VK u32 S[64 * FIXED_LOCAL_SIZE]; + + /** + * loop + */ + + const u32 dropN = esalt_bufs[DIGESTS_OFFSET_HOST].dropN; + const u32 pt_len = esalt_bufs[DIGESTS_OFFSET_HOST].pt_len; + + const u32 ct[4] = + { + esalt_bufs[DIGESTS_OFFSET_HOST].ct[0], + esalt_bufs[DIGESTS_OFFSET_HOST].ct[1], + esalt_bufs[DIGESTS_OFFSET_HOST].ct[2], + esalt_bufs[DIGESTS_OFFSET_HOST].ct[3] + }; + + for (u32 il_pos = 0; il_pos < IL_CNT; il_pos += VECT_SIZE) + { + u32x w0[4] = { 0 }; + u32x w1[4] = { 0 }; + + apply_rules_vect_optimized (pw_buf0, pw_buf1, pw_len, rules_buf, il_pos, w0, w1); + + rc4_init_40 (S, w0, lid); + + u32 out[4]; + + u8 i = 0; + u8 j = 0; + + if (dropN > 0) + { + rc4_dropN (S, &i, &j, dropN, lid); + } + + rc4_next_16 (S, i, j, ct, out, lid); + + if (pt_len == 5) + { + out[1] &= pt_masks[1]; + } + else + { + out[1] = 0; + + if (pt_len >= 1 && pt_len <= 3) + { + out[0] &= pt_masks[pt_len]; + } + } + + out[2] = out[3] = 0; + + COMPARE_M_SIMD (out[0], out[1], out[2], out[3]); + } +} + +KERNEL_FQ KERNEL_FA void m33500_m08 (KERN_ATTR_RULES_ESALT (rc4_t)) +{ +} + +KERNEL_FQ KERNEL_FA void m33500_m16 (KERN_ATTR_RULES_ESALT (rc4_t)) +{ +} + +KERNEL_FQ KERNEL_FA void m33500_s04 (KERN_ATTR_RULES_ESALT (rc4_t)) +{ + /** + * base + */ + + const u64 lid = get_local_id (0); + const u64 gid = get_global_id (0); + + if (gid >= GID_CNT) return; + + u32 pw_buf0[4]; + u32 pw_buf1[4] = { 0 }; + + pw_buf0[0] = pws[gid].i[0]; + pw_buf0[1] = pws[gid].i[1]; + pw_buf0[2] = 0; + pw_buf0[3] = 0; + + const u32 pw_len = pws[gid].pw_len & 63; + + /** + * shared + */ + + LOCAL_VK u32 S[64 * FIXED_LOCAL_SIZE]; + + /** + * digest + */ + + const u32 search[4] = + { + digests_buf[DIGESTS_OFFSET_HOST].digest_buf[DGST_R0], + digests_buf[DIGESTS_OFFSET_HOST].digest_buf[DGST_R1], + digests_buf[DIGESTS_OFFSET_HOST].digest_buf[DGST_R2], + digests_buf[DIGESTS_OFFSET_HOST].digest_buf[DGST_R3] + }; + + /** + * loop + */ + + const u32 dropN = esalt_bufs[DIGESTS_OFFSET_HOST].dropN; + const u32 pt_len = esalt_bufs[DIGESTS_OFFSET_HOST].pt_len; + + const u32 ct[4] = + { + esalt_bufs[DIGESTS_OFFSET_HOST].ct[0], + esalt_bufs[DIGESTS_OFFSET_HOST].ct[1], + esalt_bufs[DIGESTS_OFFSET_HOST].ct[2], + esalt_bufs[DIGESTS_OFFSET_HOST].ct[3] + }; + + for (u32 il_pos = 0; il_pos < IL_CNT; il_pos += VECT_SIZE) + { + u32x w0[4] = { 0 }; + u32x w1[4] = { 0 }; + + apply_rules_vect_optimized (pw_buf0, pw_buf1, pw_len, rules_buf, il_pos, w0, w1); + + /** + * pdf + */ + + rc4_init_40 (S, w0, lid); + + u32 out[4]; + + u8 i = 0; + u8 j = 0; + + if (dropN > 0) + { + rc4_dropN (S, &i, &j, dropN, lid); + } + + rc4_next_16 (S, i, j, ct, out, lid); + + if (pt_len == 5) + { + out[1] &= pt_masks[1]; + } + else + { + out[1] = 0; + + if (pt_len >= 1 && pt_len <= 3) + { + out[0] &= pt_masks[pt_len]; + } + } + + out[2] = out[3] = 0; + + COMPARE_S_SIMD (out[0], out[1], out[2], out[3]); + } +} + +KERNEL_FQ KERNEL_FA void m33500_s08 (KERN_ATTR_RULES_ESALT (rc4_t)) +{ +} + +KERNEL_FQ KERNEL_FA void m33500_s16 (KERN_ATTR_RULES_ESALT (rc4_t)) +{ +} diff --git a/OpenCL/m33500_a1-optimized.cl b/OpenCL/m33500_a1-optimized.cl new file mode 100644 index 000000000..b2b091bc6 --- /dev/null +++ b/OpenCL/m33500_a1-optimized.cl @@ -0,0 +1,335 @@ +/** + * Author......: See docs/credits.txt + * License.....: MIT + */ + +//#define NEW_SIMD_CODE + +#ifdef KERNEL_STATIC +#include M2S(INCLUDE_PATH/inc_vendor.h) +#include M2S(INCLUDE_PATH/inc_types.h) +#include M2S(INCLUDE_PATH/inc_platform.cl) +#include M2S(INCLUDE_PATH/inc_common.cl) +#include M2S(INCLUDE_PATH/inc_simd.cl) +#include M2S(INCLUDE_PATH/inc_cipher_rc4.cl) +#endif + +typedef struct rc4 +{ + u32 dropN; + u32 ct_len; + u32 pt_len; + u32 pt_off; + + u32 pt[2]; + u32 ct[16]; + +} rc4_t; + +CONSTANT_VK u32 pt_masks[8] = +{ + 0x00000000, + 0x000000FF, + 0x0000FFFF, + 0x00FFFFFF, + 0xFFFFFFFF, + 0x000000FF, + 0, + 0 +}; + +KERNEL_FQ KERNEL_FA void m33500_m04 (KERN_ATTR_ESALT (rc4_t)) +{ + /** + * base + */ + + const u64 lid = get_local_id (0); + const u64 gid = get_global_id (0); + + if (gid >= GID_CNT) return; + + u32 pw_buf0[4]; + u32 pw_buf1[4]; + + pw_buf0[0] = pws[gid].i[ 0]; + pw_buf0[1] = pws[gid].i[ 1]; + pw_buf0[2] = pws[gid].i[ 2]; + pw_buf0[3] = pws[gid].i[ 3]; + pw_buf1[0] = pws[gid].i[ 4]; + pw_buf1[1] = pws[gid].i[ 5]; + pw_buf1[2] = pws[gid].i[ 6]; + pw_buf1[3] = pws[gid].i[ 7]; + + const u32 pw_l_len = pws[gid].pw_len & 63; + + /** + * shared + */ + + LOCAL_VK u32 S[64 * FIXED_LOCAL_SIZE]; + + /** + * loop + */ + + const u32 dropN = esalt_bufs[DIGESTS_OFFSET_HOST].dropN; + const u32 pt_len = esalt_bufs[DIGESTS_OFFSET_HOST].pt_len; + + const u32 ct[4] = + { + esalt_bufs[DIGESTS_OFFSET_HOST].ct[0], + esalt_bufs[DIGESTS_OFFSET_HOST].ct[1], + esalt_bufs[DIGESTS_OFFSET_HOST].ct[2], + esalt_bufs[DIGESTS_OFFSET_HOST].ct[3] + }; + + for (u32 il_pos = 0; il_pos < IL_CNT; il_pos += VECT_SIZE) + { + const u32x pw_r_len = pwlenx_create_combt (combs_buf, il_pos) & 63; + + const u32x pw_len = (pw_l_len + pw_r_len) & 63; + + /** + * concat password candidate + */ + + u32x wordl0[4] = { 0 }; + u32x wordl1[4] = { 0 }; + u32x wordl2[4] = { 0 }; + u32x wordl3[4] = { 0 }; + + wordl0[0] = pw_buf0[0]; + wordl0[1] = pw_buf0[1]; + wordl0[2] = pw_buf0[2]; + wordl0[3] = pw_buf0[3]; + wordl1[0] = pw_buf1[0]; + wordl1[1] = pw_buf1[1]; + wordl1[2] = pw_buf1[2]; + wordl1[3] = pw_buf1[3]; + + u32x wordr0[4] = { 0 }; + u32x wordr1[4] = { 0 }; + u32x wordr2[4] = { 0 }; + u32x wordr3[4] = { 0 }; + + wordr0[0] = ix_create_combt (combs_buf, il_pos, 0); + wordr0[1] = ix_create_combt (combs_buf, il_pos, 1); + wordr0[2] = ix_create_combt (combs_buf, il_pos, 2); + wordr0[3] = ix_create_combt (combs_buf, il_pos, 3); + wordr1[0] = ix_create_combt (combs_buf, il_pos, 4); + wordr1[1] = ix_create_combt (combs_buf, il_pos, 5); + wordr1[2] = ix_create_combt (combs_buf, il_pos, 6); + wordr1[3] = ix_create_combt (combs_buf, il_pos, 7); + + if (COMBS_MODE == COMBINATOR_MODE_BASE_LEFT) + { + switch_buffer_by_offset_le_VV (wordr0, wordr1, wordr2, wordr3, pw_l_len); + } + else + { + switch_buffer_by_offset_le_VV (wordl0, wordl1, wordl2, wordl3, pw_r_len); + } + + u32x w0[4]; + + w0[0] = wordl0[0] | wordr0[0]; + w0[1] = wordl0[1] | wordr0[1]; + w0[2] = 0; + w0[3] = 0; + + rc4_init_40 (S, w0, lid); + + u32 out[4]; + + u8 i = 0; + u8 j = 0; + + if (dropN > 0) + { + rc4_dropN (S, &i, &j, dropN, lid); + } + + rc4_next_16 (S, i, j, ct, out, lid); + + if (pt_len == 5) + { + out[1] &= pt_masks[1]; + } + else + { + out[1] = 0; + + if (pt_len >= 1 && pt_len <= 3) + { + out[0] &= pt_masks[pt_len]; + } + } + + out[2] = out[3] = 0; + + COMPARE_M_SIMD (out[0], out[1], out[2], out[3]); + } +} + +KERNEL_FQ KERNEL_FA void m33500_m08 (KERN_ATTR_ESALT (rc4_t)) +{ +} + +KERNEL_FQ KERNEL_FA void m33500_m16 (KERN_ATTR_ESALT (rc4_t)) +{ +} + +KERNEL_FQ KERNEL_FA void m33500_s04 (KERN_ATTR_ESALT (rc4_t)) +{ + /** + * base + */ + + const u64 lid = get_local_id (0); + const u64 gid = get_global_id (0); + + if (gid >= GID_CNT) return; + + u32 pw_buf0[4]; + u32 pw_buf1[4]; + + pw_buf0[0] = pws[gid].i[ 0]; + pw_buf0[1] = pws[gid].i[ 1]; + pw_buf0[2] = pws[gid].i[ 2]; + pw_buf0[3] = pws[gid].i[ 3]; + pw_buf1[0] = pws[gid].i[ 4]; + pw_buf1[1] = pws[gid].i[ 5]; + pw_buf1[2] = pws[gid].i[ 6]; + pw_buf1[3] = pws[gid].i[ 7]; + + const u32 pw_l_len = pws[gid].pw_len & 63; + + /** + * shared + */ + + LOCAL_VK u32 S[64 * FIXED_LOCAL_SIZE]; + + /** + * digest + */ + + const u32 search[4] = + { + digests_buf[DIGESTS_OFFSET_HOST].digest_buf[DGST_R0], + digests_buf[DIGESTS_OFFSET_HOST].digest_buf[DGST_R1], + digests_buf[DIGESTS_OFFSET_HOST].digest_buf[DGST_R2], + digests_buf[DIGESTS_OFFSET_HOST].digest_buf[DGST_R3] + }; + + /** + * loop + */ + + const u32 dropN = esalt_bufs[DIGESTS_OFFSET_HOST].dropN; + const u32 pt_len = esalt_bufs[DIGESTS_OFFSET_HOST].pt_len; + + const u32 ct[4] = + { + esalt_bufs[DIGESTS_OFFSET_HOST].ct[0], + esalt_bufs[DIGESTS_OFFSET_HOST].ct[1], + esalt_bufs[DIGESTS_OFFSET_HOST].ct[2], + esalt_bufs[DIGESTS_OFFSET_HOST].ct[3] + }; + + for (u32 il_pos = 0; il_pos < IL_CNT; il_pos += VECT_SIZE) + { + const u32x pw_r_len = pwlenx_create_combt (combs_buf, il_pos) & 63; + + const u32x pw_len = (pw_l_len + pw_r_len) & 63; + + /** + * concat password candidate + */ + + u32x wordl0[4] = { 0 }; + u32x wordl1[4] = { 0 }; + u32x wordl2[4] = { 0 }; + u32x wordl3[4] = { 0 }; + + wordl0[0] = pw_buf0[0]; + wordl0[1] = pw_buf0[1]; + wordl0[2] = pw_buf0[2]; + wordl0[3] = pw_buf0[3]; + wordl1[0] = pw_buf1[0]; + wordl1[1] = pw_buf1[1]; + wordl1[2] = pw_buf1[2]; + wordl1[3] = pw_buf1[3]; + + u32x wordr0[4] = { 0 }; + u32x wordr1[4] = { 0 }; + u32x wordr2[4] = { 0 }; + u32x wordr3[4] = { 0 }; + + wordr0[0] = ix_create_combt (combs_buf, il_pos, 0); + wordr0[1] = ix_create_combt (combs_buf, il_pos, 1); + wordr0[2] = ix_create_combt (combs_buf, il_pos, 2); + wordr0[3] = ix_create_combt (combs_buf, il_pos, 3); + wordr1[0] = ix_create_combt (combs_buf, il_pos, 4); + wordr1[1] = ix_create_combt (combs_buf, il_pos, 5); + wordr1[2] = ix_create_combt (combs_buf, il_pos, 6); + wordr1[3] = ix_create_combt (combs_buf, il_pos, 7); + + if (COMBS_MODE == COMBINATOR_MODE_BASE_LEFT) + { + switch_buffer_by_offset_le_VV (wordr0, wordr1, wordr2, wordr3, pw_l_len); + } + else + { + switch_buffer_by_offset_le_VV (wordl0, wordl1, wordl2, wordl3, pw_r_len); + } + + u32x w0[4]; + + w0[0] = wordl0[0] | wordr0[0]; + w0[1] = wordl0[1] | wordr0[1]; + w0[2] = 0; + w0[3] = 0; + + rc4_init_40 (S, w0, lid); + + u32 out[4]; + + u8 i = 0; + u8 j = 0; + + if (dropN > 0) + { + rc4_dropN (S, &i, &j, dropN, lid); + } + + rc4_next_16 (S, i, j, ct, out, lid); + + if (pt_len == 5) + { + out[1] &= pt_masks[1]; + } + else + { + out[1] = 0; + + if (pt_len >= 1 && pt_len <= 3) + { + out[0] &= pt_masks[pt_len]; + } + } + + out[2] = out[3] = 0; + + COMPARE_S_SIMD (out[0], out[1], out[2], out[3]); + } +} + +KERNEL_FQ KERNEL_FA void m33500_s08 (KERN_ATTR_ESALT (rc4_t)) +{ +} + +KERNEL_FQ KERNEL_FA void m33500_s16 (KERN_ATTR_ESALT (rc4_t)) +{ +} diff --git a/OpenCL/m33500_a3-optimized.cl b/OpenCL/m33500_a3-optimized.cl new file mode 100644 index 000000000..db49a047d --- /dev/null +++ b/OpenCL/m33500_a3-optimized.cl @@ -0,0 +1,487 @@ +/** + * Author......: See docs/credits.txt + * License.....: MIT + */ + +//#define NEW_SIMD_CODE + +#ifdef KERNEL_STATIC +#include M2S(INCLUDE_PATH/inc_vendor.h) +#include M2S(INCLUDE_PATH/inc_types.h) +#include M2S(INCLUDE_PATH/inc_platform.cl) +#include M2S(INCLUDE_PATH/inc_common.cl) +#include M2S(INCLUDE_PATH/inc_simd.cl) +#include M2S(INCLUDE_PATH/inc_cipher_rc4.cl) +#endif + +typedef struct rc4 +{ + u32 dropN; + u32 ct_len; + u32 pt_len; + u32 pt_off; + + u32 pt[2]; + u32 ct[16]; + +} rc4_t; + +CONSTANT_VK u32 pt_masks[8] = +{ + 0x00000000, + 0x000000FF, + 0x0000FFFF, + 0x00FFFFFF, + 0xFFFFFFFF, + 0x000000FF, + 0, + 0 +}; + +DECLSPEC void m33500m (LOCAL_AS u32 *S, PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w2, PRIVATE_AS u32 *w3, const u32 pw_len, KERN_ATTR_FUNC_ESALT (rc4_t)) +{ + /** + * modifiers are taken from args + */ + + /** + * loop + */ + + const u32 dropN = esalt_bufs[DIGESTS_OFFSET_HOST].dropN; + const u32 pt_len = esalt_bufs[DIGESTS_OFFSET_HOST].pt_len; + + const u32 ct[4] = + { + esalt_bufs[DIGESTS_OFFSET_HOST].ct[0], + esalt_bufs[DIGESTS_OFFSET_HOST].ct[1], + esalt_bufs[DIGESTS_OFFSET_HOST].ct[2], + esalt_bufs[DIGESTS_OFFSET_HOST].ct[3] + }; + + u32 w0l = w0[0]; + + for (u32 il_pos = 0; il_pos < IL_CNT; il_pos += VECT_SIZE) + { + const u32 w0r = ix_create_bft (bfs_buf, il_pos); + + const u32 w0lr = w0l | w0r; + + w0[0] = w0lr; + + rc4_init_40 (S, w0, lid); + + u32 out[4]; + + u8 i = 0; + u8 j = 0; + + if (dropN > 0) + { + rc4_dropN (S, &i, &j, dropN, lid); + } + + rc4_next_16 (S, i, j, ct, out, lid); + + if (pt_len == 5) + { + out[1] &= pt_masks[1]; + } + else + { + out[1] = 0; + + if (pt_len >= 1 && pt_len <= 3) + { + out[0] &= pt_masks[pt_len]; + } + } + + out[2] = out[3] = 0; + + COMPARE_M_SIMD (out[0], out[1], out[2], out[3]); + } +} + +DECLSPEC void m33500s (LOCAL_AS u32 *S, PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w2, PRIVATE_AS u32 *w3, const u32 pw_len, KERN_ATTR_FUNC_ESALT (rc4_t)) +{ + /** + * modifiers are taken from args + */ + + /** + * digest + */ + + const u32 search[4] = + { + digests_buf[DIGESTS_OFFSET_HOST].digest_buf[DGST_R0], + digests_buf[DIGESTS_OFFSET_HOST].digest_buf[DGST_R1], + digests_buf[DIGESTS_OFFSET_HOST].digest_buf[DGST_R2], + digests_buf[DIGESTS_OFFSET_HOST].digest_buf[DGST_R3] + }; + + /** + * loop + */ + + const u32 dropN = esalt_bufs[DIGESTS_OFFSET_HOST].dropN; + const u32 pt_len = esalt_bufs[DIGESTS_OFFSET_HOST].pt_len; + + const u32 ct[4] = + { + esalt_bufs[DIGESTS_OFFSET_HOST].ct[0], + esalt_bufs[DIGESTS_OFFSET_HOST].ct[1], + esalt_bufs[DIGESTS_OFFSET_HOST].ct[2], + esalt_bufs[DIGESTS_OFFSET_HOST].ct[3] + }; + + u32 w0l = w0[0]; + + for (u32 il_pos = 0; il_pos < IL_CNT; il_pos += VECT_SIZE) + { + const u32 w0r = ix_create_bft (bfs_buf, il_pos); + + const u32 w0lr = w0l | w0r; + + w0[0] = w0lr; + + rc4_init_40 (S, w0, lid); + + u32 out[4]; + + u8 i = 0; + u8 j = 0; + + if (dropN > 0) + { + rc4_dropN (S, &i, &j, dropN, lid); + } + + rc4_next_16 (S, i, j, ct, out, lid); + + if (pt_len == 5) + { + out[1] &= pt_masks[1]; + } + else + { + out[1] = 0; + + if (pt_len >= 1 && pt_len <= 3) + { + out[0] &= pt_masks[pt_len]; + } + } + + out[2] = out[3] = 0; + + COMPARE_S_SIMD (out[0], out[1], out[2], out[3]); + } +} + +KERNEL_FQ KERNEL_FA void m33500_m04 (KERN_ATTR_ESALT (rc4_t)) +{ + /** + * base + */ + + const u64 lid = get_local_id (0); + const u64 gid = get_global_id (0); + const u64 lsz = get_local_size (0); + + if (gid >= GID_CNT) return; + + u32 w0[4]; + + w0[0] = pws[gid].i[ 0]; + w0[1] = pws[gid].i[ 1]; + w0[2] = pws[gid].i[ 2]; + w0[3] = pws[gid].i[ 3]; + + u32 w1[4]; + + w1[0] = 0; + w1[1] = 0; + w1[2] = 0; + w1[3] = 0; + + u32 w2[4]; + + w2[0] = 0; + w2[1] = 0; + w2[2] = 0; + w2[3] = 0; + + u32 w3[4]; + + w3[0] = 0; + w3[1] = 0; + w3[2] = 0; + w3[3] = 0; + + const u32 pw_len = pws[gid].pw_len & 63; + + /** + * main + */ + + LOCAL_VK u32 S[64 * FIXED_LOCAL_SIZE]; + + m33500m (S, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); +} + +KERNEL_FQ KERNEL_FA void m33500_m08 (KERN_ATTR_ESALT (rc4_t)) +{ + /** + * base + */ + + const u64 lid = get_local_id (0); + const u64 gid = get_global_id (0); + const u64 lsz = get_local_size (0); + + if (gid >= GID_CNT) return; + + u32 w0[4]; + + w0[0] = pws[gid].i[ 0]; + w0[1] = pws[gid].i[ 1]; + w0[2] = pws[gid].i[ 2]; + w0[3] = pws[gid].i[ 3]; + + u32 w1[4]; + + w1[0] = pws[gid].i[ 4]; + w1[1] = pws[gid].i[ 5]; + w1[2] = pws[gid].i[ 6]; + w1[3] = pws[gid].i[ 7]; + + u32 w2[4]; + + w2[0] = 0; + w2[1] = 0; + w2[2] = 0; + w2[3] = 0; + + u32 w3[4]; + + w3[0] = 0; + w3[1] = 0; + w3[2] = 0; + w3[3] = 0; + + const u32 pw_len = pws[gid].pw_len & 63; + + /** + * main + */ + + LOCAL_VK u32 S[64 * FIXED_LOCAL_SIZE]; + + m33500m (S, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); +} + +KERNEL_FQ KERNEL_FA void m33500_m16 (KERN_ATTR_ESALT (rc4_t)) +{ + /** + * base + */ + + const u64 lid = get_local_id (0); + const u64 gid = get_global_id (0); + const u64 lsz = get_local_size (0); + + if (gid >= GID_CNT) return; + + u32 w0[4]; + + w0[0] = pws[gid].i[ 0]; + w0[1] = pws[gid].i[ 1]; + w0[2] = pws[gid].i[ 2]; + w0[3] = pws[gid].i[ 3]; + + u32 w1[4]; + + w1[0] = pws[gid].i[ 4]; + w1[1] = pws[gid].i[ 5]; + w1[2] = pws[gid].i[ 6]; + w1[3] = pws[gid].i[ 7]; + + u32 w2[4]; + + w2[0] = pws[gid].i[ 8]; + w2[1] = pws[gid].i[ 9]; + w2[2] = pws[gid].i[10]; + w2[3] = pws[gid].i[11]; + + u32 w3[4]; + + w3[0] = pws[gid].i[12]; + w3[1] = pws[gid].i[13]; + w3[2] = 0; + w3[3] = 0; + + const u32 pw_len = pws[gid].pw_len & 63; + + /** + * main + */ + + LOCAL_VK u32 S[64 * FIXED_LOCAL_SIZE]; + + m33500m (S, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); +} + +KERNEL_FQ KERNEL_FA void m33500_s04 (KERN_ATTR_ESALT (rc4_t)) +{ + /** + * base + */ + + const u64 lid = get_local_id (0); + const u64 gid = get_global_id (0); + const u64 lsz = get_local_size (0); + + if (gid >= GID_CNT) return; + + u32 w0[4]; + + w0[0] = pws[gid].i[ 0]; + w0[1] = pws[gid].i[ 1]; + w0[2] = pws[gid].i[ 2]; + w0[3] = pws[gid].i[ 3]; + + u32 w1[4]; + + w1[0] = 0; + w1[1] = 0; + w1[2] = 0; + w1[3] = 0; + + u32 w2[4]; + + w2[0] = 0; + w2[1] = 0; + w2[2] = 0; + w2[3] = 0; + + u32 w3[4]; + + w3[0] = 0; + w3[1] = 0; + w3[2] = 0; + w3[3] = 0; + + const u32 pw_len = pws[gid].pw_len & 63; + + /** + * main + */ + + LOCAL_VK u32 S[64 * FIXED_LOCAL_SIZE]; + + m33500s (S, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); +} + +KERNEL_FQ KERNEL_FA void m33500_s08 (KERN_ATTR_ESALT (rc4_t)) +{ + /** + * base + */ + + const u64 lid = get_local_id (0); + const u64 gid = get_global_id (0); + const u64 lsz = get_local_size (0); + + if (gid >= GID_CNT) return; + + u32 w0[4]; + + w0[0] = pws[gid].i[ 0]; + w0[1] = pws[gid].i[ 1]; + w0[2] = pws[gid].i[ 2]; + w0[3] = pws[gid].i[ 3]; + + u32 w1[4]; + + w1[0] = pws[gid].i[ 4]; + w1[1] = pws[gid].i[ 5]; + w1[2] = pws[gid].i[ 6]; + w1[3] = pws[gid].i[ 7]; + + u32 w2[4]; + + w2[0] = 0; + w2[1] = 0; + w2[2] = 0; + w2[3] = 0; + + u32 w3[4]; + + w3[0] = 0; + w3[1] = 0; + w3[2] = 0; + w3[3] = 0; + + const u32 pw_len = pws[gid].pw_len & 63; + + /** + * main + */ + + LOCAL_VK u32 S[64 * FIXED_LOCAL_SIZE]; + + m33500s (S, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); +} + +KERNEL_FQ KERNEL_FA void m33500_s16 (KERN_ATTR_ESALT (rc4_t)) +{ + /** + * base + */ + + const u64 lid = get_local_id (0); + const u64 gid = get_global_id (0); + const u64 lsz = get_local_size (0); + + if (gid >= GID_CNT) return; + + u32 w0[4]; + + w0[0] = pws[gid].i[ 0]; + w0[1] = pws[gid].i[ 1]; + w0[2] = pws[gid].i[ 2]; + w0[3] = pws[gid].i[ 3]; + + u32 w1[4]; + + w1[0] = pws[gid].i[ 4]; + w1[1] = pws[gid].i[ 5]; + w1[2] = pws[gid].i[ 6]; + w1[3] = pws[gid].i[ 7]; + + u32 w2[4]; + + w2[0] = pws[gid].i[ 8]; + w2[1] = pws[gid].i[ 9]; + w2[2] = pws[gid].i[10]; + w2[3] = pws[gid].i[11]; + + u32 w3[4]; + + w3[0] = pws[gid].i[12]; + w3[1] = pws[gid].i[13]; + w3[2] = 0; + w3[3] = 0; + + const u32 pw_len = pws[gid].pw_len & 63; + + /** + * main + */ + + LOCAL_VK u32 S[64 * FIXED_LOCAL_SIZE]; + + m33500s (S, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); +} diff --git a/OpenCL/m33501_a0-optimized.cl b/OpenCL/m33501_a0-optimized.cl new file mode 100644 index 000000000..ff691591f --- /dev/null +++ b/OpenCL/m33501_a0-optimized.cl @@ -0,0 +1,263 @@ +/** + * Author......: See docs/credits.txt + * License.....: MIT + */ + +//#define NEW_SIMD_CODE + +#ifdef KERNEL_STATIC +#include M2S(INCLUDE_PATH/inc_vendor.h) +#include M2S(INCLUDE_PATH/inc_types.h) +#include M2S(INCLUDE_PATH/inc_platform.cl) +#include M2S(INCLUDE_PATH/inc_common.cl) +#include M2S(INCLUDE_PATH/inc_rp_optimized.h) +#include M2S(INCLUDE_PATH/inc_rp_optimized.cl) +#include M2S(INCLUDE_PATH/inc_simd.cl) +#include M2S(INCLUDE_PATH/inc_cipher_rc4.cl) +#endif + +typedef struct rc4 +{ + u32 dropN; + u32 ct_len; + u32 pt_len; + u32 pt_off; + + u32 pt[2]; + u32 ct[16]; + +} rc4_t; + +CONSTANT_VK u32 pt_masks[12] = +{ + 0x00000000, + 0x000000FF, + 0x0000FFFF, + 0x00FFFFFF, + 0xFFFFFFFF, + 0x000000FF, + 0x0000FFFF, + 0x00FFFFFF, + 0xFFFFFFFF, + 0x000000FF, + 0, + 0 +}; + +KERNEL_FQ KERNEL_FA void m33501_m04 (KERN_ATTR_RULES_ESALT (rc4_t)) +{ + /** + * base + */ + + const u64 lid = get_local_id (0); + const u64 gid = get_global_id (0); + const u64 lsz = get_local_size (0); + + if (gid >= GID_CNT) return; + + u32 pw_buf0[4]; + u32 pw_buf1[4] = { 0 }; + + pw_buf0[0] = pws[gid].i[ 0]; + pw_buf0[1] = pws[gid].i[ 1]; + pw_buf0[2] = pws[gid].i[ 2]; + pw_buf0[3] = 0; + + const u32 pw_len = pws[gid].pw_len & 63; + + /** + * shared + */ + + LOCAL_VK u32 S[64 * FIXED_LOCAL_SIZE]; + + /** + * loop + */ + + const u32 dropN = esalt_bufs[DIGESTS_OFFSET_HOST].dropN; + const u32 pt_len = esalt_bufs[DIGESTS_OFFSET_HOST].pt_len; + + const u32 ct[4] = + { + esalt_bufs[DIGESTS_OFFSET_HOST].ct[0], + esalt_bufs[DIGESTS_OFFSET_HOST].ct[1], + esalt_bufs[DIGESTS_OFFSET_HOST].ct[2], + esalt_bufs[DIGESTS_OFFSET_HOST].ct[3] + }; + + for (u32 il_pos = 0; il_pos < IL_CNT; il_pos += VECT_SIZE) + { + u32x w0[4] = { 0 }; + u32x w1[4] = { 0 }; + + apply_rules_vect_optimized (pw_buf0, pw_buf1, pw_len, rules_buf, il_pos, w0, w1); + + rc4_init_72 (S, w0, lid); + + u32 out[4]; + + u8 i = 0; + u8 j = 0; + + if (dropN > 0) + { + rc4_dropN (S, &i, &j, dropN, lid); + } + + rc4_next_16 (S, i, j, ct, out, lid); + + if (pt_len == 9) + { + out[2] &= pt_masks[1]; + } + else + { + out[2] = 0; + + if (pt_len < 5) + { + out[1] = 0; + + if (pt_len >= 1 && pt_len <= 3) + { + out[0] &= pt_masks[pt_len]; + } + } + else if (pt_len <= 7) + { + out[1] &= pt_masks[pt_len]; + } + } + + out[3] = 0; + + COMPARE_M_SIMD (out[0], out[1], out[2], out[3]); + } +} + +KERNEL_FQ KERNEL_FA void m33501_m08 (KERN_ATTR_RULES_ESALT (rc4_t)) +{ +} + +KERNEL_FQ KERNEL_FA void m33501_m16 (KERN_ATTR_RULES_ESALT (rc4_t)) +{ +} + +KERNEL_FQ KERNEL_FA void m33501_s04 (KERN_ATTR_RULES_ESALT (rc4_t)) +{ + /** + * base + */ + + const u64 lid = get_local_id (0); + const u64 gid = get_global_id (0); + const u64 lsz = get_local_size (0); + + if (gid >= GID_CNT) return; + + u32 pw_buf0[4]; + u32 pw_buf1[4] = { 0 }; + + pw_buf0[0] = pws[gid].i[ 0]; + pw_buf0[1] = pws[gid].i[ 1]; + pw_buf0[2] = pws[gid].i[ 2]; + pw_buf0[3] = 0; + + const u32 pw_len = pws[gid].pw_len & 63; + + /** + * shared + */ + + LOCAL_VK u32 S[64 * FIXED_LOCAL_SIZE]; + + /** + * digest + */ + + const u32 search[4] = + { + digests_buf[DIGESTS_OFFSET_HOST].digest_buf[DGST_R0], + digests_buf[DIGESTS_OFFSET_HOST].digest_buf[DGST_R1], + digests_buf[DIGESTS_OFFSET_HOST].digest_buf[DGST_R2], + digests_buf[DIGESTS_OFFSET_HOST].digest_buf[DGST_R3] + }; + + /** + * loop + */ + + const u32 dropN = esalt_bufs[DIGESTS_OFFSET_HOST].dropN; + const u32 pt_len = esalt_bufs[DIGESTS_OFFSET_HOST].pt_len; + + const u32 ct[4] = + { + esalt_bufs[DIGESTS_OFFSET_HOST].ct[0], + esalt_bufs[DIGESTS_OFFSET_HOST].ct[1], + esalt_bufs[DIGESTS_OFFSET_HOST].ct[2], + esalt_bufs[DIGESTS_OFFSET_HOST].ct[3] + }; + + for (u32 il_pos = 0; il_pos < IL_CNT; il_pos += VECT_SIZE) + { + u32x w0[4] = { 0 }; + u32x w1[4] = { 0 }; + + apply_rules_vect_optimized (pw_buf0, pw_buf1, pw_len, rules_buf, il_pos, w0, w1); + + /** + * pdf + */ + + rc4_init_72 (S, w0, lid); + + u32 out[4]; + + u8 i = 0; + u8 j = 0; + + if (dropN > 0) + { + rc4_dropN (S, &i, &j, dropN, lid); + } + + rc4_next_16 (S, i, j, ct, out, lid); + + if (pt_len == 9) + { + out[2] &= pt_masks[1]; + } + else + { + out[2] = 0; + + if (pt_len < 5) + { + out[1] = 0; + + if (pt_len >= 1 && pt_len <= 3) + { + out[0] &= pt_masks[pt_len]; + } + } + else if (pt_len <= 7) + { + out[1] &= pt_masks[pt_len]; + } + } + + out[3] = 0; + + COMPARE_S_SIMD (out[0], out[1], out[2], out[3]); + } +} + +KERNEL_FQ KERNEL_FA void m33501_s08 (KERN_ATTR_RULES_ESALT (rc4_t)) +{ +} + +KERNEL_FQ KERNEL_FA void m33501_s16 (KERN_ATTR_RULES_ESALT (rc4_t)) +{ +} diff --git a/OpenCL/m33501_a1-optimized.cl b/OpenCL/m33501_a1-optimized.cl new file mode 100644 index 000000000..267f7cfb7 --- /dev/null +++ b/OpenCL/m33501_a1-optimized.cl @@ -0,0 +1,359 @@ +/** + * Author......: See docs/credits.txt + * License.....: MIT + */ + +//#define NEW_SIMD_CODE + +#ifdef KERNEL_STATIC +#include M2S(INCLUDE_PATH/inc_vendor.h) +#include M2S(INCLUDE_PATH/inc_types.h) +#include M2S(INCLUDE_PATH/inc_platform.cl) +#include M2S(INCLUDE_PATH/inc_common.cl) +#include M2S(INCLUDE_PATH/inc_simd.cl) +#include M2S(INCLUDE_PATH/inc_cipher_rc4.cl) +#endif + +typedef struct rc4 +{ + u32 dropN; + u32 ct_len; + u32 pt_len; + u32 pt_off; + + u32 pt[2]; + u32 ct[16]; + +} rc4_t; + +CONSTANT_VK u32 pt_masks[12] = +{ + 0x00000000, + 0x000000FF, + 0x0000FFFF, + 0x00FFFFFF, + 0xFFFFFFFF, + 0x000000FF, + 0x0000FFFF, + 0x00FFFFFF, + 0xFFFFFFFF, + 0x000000FF, + 0, + 0 +}; + +KERNEL_FQ KERNEL_FA void m33501_m04 (KERN_ATTR_ESALT (rc4_t)) +{ + /** + * base + */ + + const u64 lid = get_local_id (0); + const u64 gid = get_global_id (0); + const u64 lsz = get_local_size (0); + + if (gid >= GID_CNT) return; + + u32 pw_buf0[4]; + u32 pw_buf1[4]; + + pw_buf0[0] = pws[gid].i[ 0]; + pw_buf0[1] = pws[gid].i[ 1]; + pw_buf0[2] = pws[gid].i[ 2]; + pw_buf0[3] = pws[gid].i[ 3]; + pw_buf1[0] = pws[gid].i[ 4]; + pw_buf1[1] = pws[gid].i[ 5]; + pw_buf1[2] = pws[gid].i[ 6]; + pw_buf1[3] = pws[gid].i[ 7]; + + const u32 pw_l_len = pws[gid].pw_len & 63; + + /** + * shared + */ + + LOCAL_VK u32 S[64 * FIXED_LOCAL_SIZE]; + + /** + * loop + */ + + const u32 dropN = esalt_bufs[DIGESTS_OFFSET_HOST].dropN; + const u32 pt_len = esalt_bufs[DIGESTS_OFFSET_HOST].pt_len; + + const u32 ct[4] = + { + esalt_bufs[DIGESTS_OFFSET_HOST].ct[0], + esalt_bufs[DIGESTS_OFFSET_HOST].ct[1], + esalt_bufs[DIGESTS_OFFSET_HOST].ct[2], + esalt_bufs[DIGESTS_OFFSET_HOST].ct[3] + }; + + for (u32 il_pos = 0; il_pos < IL_CNT; il_pos += VECT_SIZE) + { + const u32x pw_r_len = pwlenx_create_combt (combs_buf, il_pos) & 63; + + const u32x pw_len = (pw_l_len + pw_r_len) & 63; + + /** + * concat password candidate + */ + + u32x wordl0[4] = { 0 }; + u32x wordl1[4] = { 0 }; + u32x wordl2[4] = { 0 }; + u32x wordl3[4] = { 0 }; + + wordl0[0] = pw_buf0[0]; + wordl0[1] = pw_buf0[1]; + wordl0[2] = pw_buf0[2]; + wordl0[3] = pw_buf0[3]; + wordl1[0] = pw_buf1[0]; + wordl1[1] = pw_buf1[1]; + wordl1[2] = pw_buf1[2]; + wordl1[3] = pw_buf1[3]; + + u32x wordr0[4] = { 0 }; + u32x wordr1[4] = { 0 }; + u32x wordr2[4] = { 0 }; + u32x wordr3[4] = { 0 }; + + wordr0[0] = ix_create_combt (combs_buf, il_pos, 0); + wordr0[1] = ix_create_combt (combs_buf, il_pos, 1); + wordr0[2] = ix_create_combt (combs_buf, il_pos, 2); + wordr0[3] = ix_create_combt (combs_buf, il_pos, 3); + wordr1[0] = ix_create_combt (combs_buf, il_pos, 4); + wordr1[1] = ix_create_combt (combs_buf, il_pos, 5); + wordr1[2] = ix_create_combt (combs_buf, il_pos, 6); + wordr1[3] = ix_create_combt (combs_buf, il_pos, 7); + + if (COMBS_MODE == COMBINATOR_MODE_BASE_LEFT) + { + switch_buffer_by_offset_le_VV (wordr0, wordr1, wordr2, wordr3, pw_l_len); + } + else + { + switch_buffer_by_offset_le_VV (wordl0, wordl1, wordl2, wordl3, pw_r_len); + } + + u32x w0[4]; + + w0[0] = wordl0[0] | wordr0[0]; + w0[1] = wordl0[1] | wordr0[1]; + w0[2] = wordl0[2] | wordr0[2]; + w0[3] = 0; + + rc4_init_72 (S, w0, lid); + + u32 out[4]; + + u8 i = 0; + u8 j = 0; + + if (dropN > 0) + { + rc4_dropN (S, &i, &j, dropN, lid); + } + + rc4_next_16 (S, i, j, ct, out, lid); + + if (pt_len == 9) + { + out[2] &= pt_masks[1]; + } + else + { + out[2] = 0; + + if (pt_len < 5) + { + out[1] = 0; + + if (pt_len >= 1 && pt_len <= 3) + { + out[0] &= pt_masks[pt_len]; + } + } + else if (pt_len <= 7) + { + out[1] &= pt_masks[pt_len]; + } + } + + out[3] = 0; + + COMPARE_M_SIMD (out[0], out[1], out[2], out[3]); + } +} + +KERNEL_FQ KERNEL_FA void m33501_m08 (KERN_ATTR_ESALT (rc4_t)) +{ +} + +KERNEL_FQ KERNEL_FA void m33501_m16 (KERN_ATTR_ESALT (rc4_t)) +{ +} + +KERNEL_FQ KERNEL_FA void m33501_s04 (KERN_ATTR_ESALT (rc4_t)) +{ + /** + * base + */ + + const u64 lid = get_local_id (0); + const u64 gid = get_global_id (0); + const u64 lsz = get_local_size (0); + + if (gid >= GID_CNT) return; + + u32 pw_buf0[4]; + u32 pw_buf1[4]; + + pw_buf0[0] = pws[gid].i[ 0]; + pw_buf0[1] = pws[gid].i[ 1]; + pw_buf0[2] = pws[gid].i[ 2]; + pw_buf0[3] = pws[gid].i[ 3]; + pw_buf1[0] = pws[gid].i[ 4]; + pw_buf1[1] = pws[gid].i[ 5]; + pw_buf1[2] = pws[gid].i[ 6]; + pw_buf1[3] = pws[gid].i[ 7]; + + const u32 pw_l_len = pws[gid].pw_len & 63; + + /** + * shared + */ + + LOCAL_VK u32 S[64 * FIXED_LOCAL_SIZE]; + + /** + * digest + */ + + const u32 search[4] = + { + digests_buf[DIGESTS_OFFSET_HOST].digest_buf[DGST_R0], + digests_buf[DIGESTS_OFFSET_HOST].digest_buf[DGST_R1], + digests_buf[DIGESTS_OFFSET_HOST].digest_buf[DGST_R2], + digests_buf[DIGESTS_OFFSET_HOST].digest_buf[DGST_R3] + }; + + /** + * loop + */ + + const u32 dropN = esalt_bufs[DIGESTS_OFFSET_HOST].dropN; + const u32 pt_len = esalt_bufs[DIGESTS_OFFSET_HOST].pt_len; + + const u32 ct[4] = + { + esalt_bufs[DIGESTS_OFFSET_HOST].ct[0], + esalt_bufs[DIGESTS_OFFSET_HOST].ct[1], + esalt_bufs[DIGESTS_OFFSET_HOST].ct[2], + esalt_bufs[DIGESTS_OFFSET_HOST].ct[3] + }; + + for (u32 il_pos = 0; il_pos < IL_CNT; il_pos += VECT_SIZE) + { + const u32x pw_r_len = pwlenx_create_combt (combs_buf, il_pos) & 63; + + const u32x pw_len = (pw_l_len + pw_r_len) & 63; + + /** + * concat password candidate + */ + + u32x wordl0[4] = { 0 }; + u32x wordl1[4] = { 0 }; + u32x wordl2[4] = { 0 }; + u32x wordl3[4] = { 0 }; + + wordl0[0] = pw_buf0[0]; + wordl0[1] = pw_buf0[1]; + wordl0[2] = pw_buf0[2]; + wordl0[3] = pw_buf0[3]; + wordl1[0] = pw_buf1[0]; + wordl1[1] = pw_buf1[1]; + wordl1[2] = pw_buf1[2]; + wordl1[3] = pw_buf1[3]; + + u32x wordr0[4] = { 0 }; + u32x wordr1[4] = { 0 }; + u32x wordr2[4] = { 0 }; + u32x wordr3[4] = { 0 }; + + wordr0[0] = ix_create_combt (combs_buf, il_pos, 0); + wordr0[1] = ix_create_combt (combs_buf, il_pos, 1); + wordr0[2] = ix_create_combt (combs_buf, il_pos, 2); + wordr0[3] = ix_create_combt (combs_buf, il_pos, 3); + wordr1[0] = ix_create_combt (combs_buf, il_pos, 4); + wordr1[1] = ix_create_combt (combs_buf, il_pos, 5); + wordr1[2] = ix_create_combt (combs_buf, il_pos, 6); + wordr1[3] = ix_create_combt (combs_buf, il_pos, 7); + + if (COMBS_MODE == COMBINATOR_MODE_BASE_LEFT) + { + switch_buffer_by_offset_le_VV (wordr0, wordr1, wordr2, wordr3, pw_l_len); + } + else + { + switch_buffer_by_offset_le_VV (wordl0, wordl1, wordl2, wordl3, pw_r_len); + } + + u32x w0[4]; + + w0[0] = wordl0[0] | wordr0[0]; + w0[1] = wordl0[1] | wordr0[1]; + w0[2] = wordl0[2] | wordr0[2]; + w0[3] = 0; + + rc4_init_72 (S, w0, lid); + + u32 out[4]; + + u8 i = 0; + u8 j = 0; + + if (dropN > 0) + { + rc4_dropN (S, &i, &j, dropN, lid); + } + + rc4_next_16 (S, i, j, ct, out, lid); + + if (pt_len == 9) + { + out[2] &= pt_masks[1]; + } + else + { + out[2] = 0; + + if (pt_len < 5) + { + out[1] = 0; + + if (pt_len >= 1 && pt_len <= 3) + { + out[0] &= pt_masks[pt_len]; + } + } + else if (pt_len <= 7) + { + out[1] &= pt_masks[pt_len]; + } + } + + out[3] = 0; + + COMPARE_S_SIMD (out[0], out[1], out[2], out[3]); + } +} + +KERNEL_FQ KERNEL_FA void m33501_s08 (KERN_ATTR_ESALT (rc4_t)) +{ +} + +KERNEL_FQ KERNEL_FA void m33501_s16 (KERN_ATTR_ESALT (rc4_t)) +{ +} diff --git a/OpenCL/m33501_a3-optimized.cl b/OpenCL/m33501_a3-optimized.cl new file mode 100644 index 000000000..19378d768 --- /dev/null +++ b/OpenCL/m33501_a3-optimized.cl @@ -0,0 +1,509 @@ +/** + * Author......: See docs/credits.txt + * License.....: MIT + */ + +//#define NEW_SIMD_CODE + +#ifdef KERNEL_STATIC +#include M2S(INCLUDE_PATH/inc_vendor.h) +#include M2S(INCLUDE_PATH/inc_types.h) +#include M2S(INCLUDE_PATH/inc_platform.cl) +#include M2S(INCLUDE_PATH/inc_common.cl) +#include M2S(INCLUDE_PATH/inc_simd.cl) +#include M2S(INCLUDE_PATH/inc_cipher_rc4.cl) +#endif + +typedef struct rc4 +{ + u32 dropN; + u32 ct_len; + u32 pt_len; + u32 pt_off; + + u32 pt[2]; + u32 ct[16]; + +} rc4_t; + +CONSTANT_VK u32 pt_masks[12] = +{ + 0x00000000, + 0x000000FF, + 0x0000FFFF, + 0x00FFFFFF, + 0xFFFFFFFF, + 0x000000FF, + 0x0000FFFF, + 0x00FFFFFF, + 0xFFFFFFFF, + 0x000000FF, + 0, + 0 +}; + +DECLSPEC void m33501m (LOCAL_AS u32 *S, PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w2, PRIVATE_AS u32 *w3, const u32 pw_len, KERN_ATTR_FUNC_ESALT (rc4_t)) +{ + /** + * modifiers are taken from args + */ + + /** + * loop + */ + + const u32 dropN = esalt_bufs[DIGESTS_OFFSET_HOST].dropN; + const u32 pt_len = esalt_bufs[DIGESTS_OFFSET_HOST].pt_len; + + const u32 ct[4] = + { + esalt_bufs[DIGESTS_OFFSET_HOST].ct[0], + esalt_bufs[DIGESTS_OFFSET_HOST].ct[1], + esalt_bufs[DIGESTS_OFFSET_HOST].ct[2], + esalt_bufs[DIGESTS_OFFSET_HOST].ct[3] + }; + + u32 w0l = w0[0]; + + for (u32 il_pos = 0; il_pos < IL_CNT; il_pos += VECT_SIZE) + { + const u32 w0r = ix_create_bft (bfs_buf, il_pos); + + const u32 w0lr = w0l | w0r; + + w0[0] = w0lr; + + rc4_init_72 (S, w0, lid); + + u32 out[4]; + + u8 i = 0; + u8 j = 0; + + if (dropN > 0) + { + rc4_dropN (S, &i, &j, dropN, lid); + } + + rc4_next_16 (S, i, j, ct, out, lid); + + if (pt_len == 9) + { + out[2] &= pt_masks[1]; + } + else + { + out[2] = 0; + + if (pt_len < 5) + { + out[1] = 0; + + if (pt_len >= 1 && pt_len <= 3) + { + out[0] &= pt_masks[pt_len]; + } + } + else if (pt_len <= 7) + { + out[1] &= pt_masks[pt_len]; + } + } + + out[3] = 0; + + COMPARE_M_SIMD (out[0], out[1], out[2], out[3]); + } +} + +DECLSPEC void m33501s (LOCAL_AS u32 *S, PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w2, PRIVATE_AS u32 *w3, const u32 pw_len, KERN_ATTR_FUNC_ESALT (rc4_t)) +{ + /** + * modifiers are taken from args + */ + + /** + * digest + */ + + const u32 search[4] = + { + digests_buf[DIGESTS_OFFSET_HOST].digest_buf[DGST_R0], + digests_buf[DIGESTS_OFFSET_HOST].digest_buf[DGST_R1], + digests_buf[DIGESTS_OFFSET_HOST].digest_buf[DGST_R2], + digests_buf[DIGESTS_OFFSET_HOST].digest_buf[DGST_R3] + }; + + /** + * loop + */ + + const u32 dropN = esalt_bufs[DIGESTS_OFFSET_HOST].dropN; + const u32 pt_len = esalt_bufs[DIGESTS_OFFSET_HOST].pt_len; + + const u32 ct[4] = + { + esalt_bufs[DIGESTS_OFFSET_HOST].ct[0], + esalt_bufs[DIGESTS_OFFSET_HOST].ct[1], + esalt_bufs[DIGESTS_OFFSET_HOST].ct[2], + esalt_bufs[DIGESTS_OFFSET_HOST].ct[3] + }; + + u32 w0l = w0[0]; + + for (u32 il_pos = 0; il_pos < IL_CNT; il_pos += VECT_SIZE) + { + const u32 w0r = ix_create_bft (bfs_buf, il_pos); + + const u32 w0lr = w0l | w0r; + + w0[0] = w0lr; + + rc4_init_72 (S, w0, lid); + + u32 out[4]; + + u8 i = 0; + u8 j = 0; + + if (dropN > 0) + { + rc4_dropN (S, &i, &j, dropN, lid); + } + + rc4_next_16 (S, i, j, ct, out, lid); + + if (pt_len == 9) + { + out[2] &= pt_masks[1]; + } + else + { + out[2] = 0; + + if (pt_len < 5) + { + out[1] = 0; + + if (pt_len >= 1 && pt_len <= 3) + { + out[0] &= pt_masks[pt_len]; + } + } + else if (pt_len <= 7) + { + out[1] &= pt_masks[pt_len]; + } + } + + out[3] = 0; + + COMPARE_S_SIMD (out[0], out[1], out[2], out[3]); + } +} + +KERNEL_FQ KERNEL_FA void m33501_m04 (KERN_ATTR_ESALT (rc4_t)) +{ + /** + * base + */ + + const u64 lid = get_local_id (0); + const u64 gid = get_global_id (0); + const u64 lsz = get_local_size (0); + + if (gid >= GID_CNT) return; + + u32 w0[4]; + + w0[0] = pws[gid].i[ 0]; + w0[1] = pws[gid].i[ 1]; + w0[2] = pws[gid].i[ 2]; + w0[3] = pws[gid].i[ 3]; + + u32 w1[4]; + + w1[0] = 0; + w1[1] = 0; + w1[2] = 0; + w1[3] = 0; + + u32 w2[4]; + + w2[0] = 0; + w2[1] = 0; + w2[2] = 0; + w2[3] = 0; + + u32 w3[4]; + + w3[0] = 0; + w3[1] = 0; + w3[2] = 0; + w3[3] = 0; + + const u32 pw_len = pws[gid].pw_len & 63; + + /** + * main + */ + + LOCAL_VK u32 S[64 * FIXED_LOCAL_SIZE]; + + m33501m (S, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); +} + +KERNEL_FQ KERNEL_FA void m33501_m08 (KERN_ATTR_ESALT (rc4_t)) +{ + /** + * base + */ + + const u64 lid = get_local_id (0); + const u64 gid = get_global_id (0); + const u64 lsz = get_local_size (0); + + if (gid >= GID_CNT) return; + + u32 w0[4]; + + w0[0] = pws[gid].i[ 0]; + w0[1] = pws[gid].i[ 1]; + w0[2] = pws[gid].i[ 2]; + w0[3] = pws[gid].i[ 3]; + + u32 w1[4]; + + w1[0] = pws[gid].i[ 4]; + w1[1] = pws[gid].i[ 5]; + w1[2] = pws[gid].i[ 6]; + w1[3] = pws[gid].i[ 7]; + + u32 w2[4]; + + w2[0] = 0; + w2[1] = 0; + w2[2] = 0; + w2[3] = 0; + + u32 w3[4]; + + w3[0] = 0; + w3[1] = 0; + w3[2] = 0; + w3[3] = 0; + + const u32 pw_len = pws[gid].pw_len & 63; + + /** + * main + */ + + LOCAL_VK u32 S[64 * FIXED_LOCAL_SIZE]; + + m33501m (S, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); +} + +KERNEL_FQ KERNEL_FA void m33501_m16 (KERN_ATTR_ESALT (rc4_t)) +{ + /** + * base + */ + + const u64 lid = get_local_id (0); + const u64 gid = get_global_id (0); + const u64 lsz = get_local_size (0); + + if (gid >= GID_CNT) return; + + u32 w0[4]; + + w0[0] = pws[gid].i[ 0]; + w0[1] = pws[gid].i[ 1]; + w0[2] = pws[gid].i[ 2]; + w0[3] = pws[gid].i[ 3]; + + u32 w1[4]; + + w1[0] = pws[gid].i[ 4]; + w1[1] = pws[gid].i[ 5]; + w1[2] = pws[gid].i[ 6]; + w1[3] = pws[gid].i[ 7]; + + u32 w2[4]; + + w2[0] = pws[gid].i[ 8]; + w2[1] = pws[gid].i[ 9]; + w2[2] = pws[gid].i[10]; + w2[3] = pws[gid].i[11]; + + u32 w3[4]; + + w3[0] = pws[gid].i[12]; + w3[1] = pws[gid].i[13]; + w3[2] = 0; + w3[3] = 0; + + const u32 pw_len = pws[gid].pw_len & 63; + + /** + * main + */ + + LOCAL_VK u32 S[64 * FIXED_LOCAL_SIZE]; + + m33501m (S, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); +} + +KERNEL_FQ KERNEL_FA void m33501_s04 (KERN_ATTR_ESALT (rc4_t)) +{ + /** + * base + */ + + const u64 lid = get_local_id (0); + const u64 gid = get_global_id (0); + const u64 lsz = get_local_size (0); + + if (gid >= GID_CNT) return; + + u32 w0[4]; + + w0[0] = pws[gid].i[ 0]; + w0[1] = pws[gid].i[ 1]; + w0[2] = pws[gid].i[ 2]; + w0[3] = pws[gid].i[ 3]; + + u32 w1[4]; + + w1[0] = 0; + w1[1] = 0; + w1[2] = 0; + w1[3] = 0; + + u32 w2[4]; + + w2[0] = 0; + w2[1] = 0; + w2[2] = 0; + w2[3] = 0; + + u32 w3[4]; + + w3[0] = 0; + w3[1] = 0; + w3[2] = 0; + w3[3] = 0; + + const u32 pw_len = pws[gid].pw_len & 63; + + /** + * main + */ + + LOCAL_VK u32 S[64 * FIXED_LOCAL_SIZE]; + + m33501s (S, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); +} + +KERNEL_FQ KERNEL_FA void m33501_s08 (KERN_ATTR_ESALT (rc4_t)) +{ + /** + * base + */ + + const u64 lid = get_local_id (0); + const u64 gid = get_global_id (0); + const u64 lsz = get_local_size (0); + + if (gid >= GID_CNT) return; + + u32 w0[4]; + + w0[0] = pws[gid].i[ 0]; + w0[1] = pws[gid].i[ 1]; + w0[2] = pws[gid].i[ 2]; + w0[3] = pws[gid].i[ 3]; + + u32 w1[4]; + + w1[0] = pws[gid].i[ 4]; + w1[1] = pws[gid].i[ 5]; + w1[2] = pws[gid].i[ 6]; + w1[3] = pws[gid].i[ 7]; + + u32 w2[4]; + + w2[0] = 0; + w2[1] = 0; + w2[2] = 0; + w2[3] = 0; + + u32 w3[4]; + + w3[0] = 0; + w3[1] = 0; + w3[2] = 0; + w3[3] = 0; + + const u32 pw_len = pws[gid].pw_len & 63; + + /** + * main + */ + + LOCAL_VK u32 S[64 * FIXED_LOCAL_SIZE]; + + m33501s (S, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); +} + +KERNEL_FQ KERNEL_FA void m33501_s16 (KERN_ATTR_ESALT (rc4_t)) +{ + /** + * base + */ + + const u64 lid = get_local_id (0); + const u64 gid = get_global_id (0); + const u64 lsz = get_local_size (0); + + if (gid >= GID_CNT) return; + + u32 w0[4]; + + w0[0] = pws[gid].i[ 0]; + w0[1] = pws[gid].i[ 1]; + w0[2] = pws[gid].i[ 2]; + w0[3] = pws[gid].i[ 3]; + + u32 w1[4]; + + w1[0] = pws[gid].i[ 4]; + w1[1] = pws[gid].i[ 5]; + w1[2] = pws[gid].i[ 6]; + w1[3] = pws[gid].i[ 7]; + + u32 w2[4]; + + w2[0] = pws[gid].i[ 8]; + w2[1] = pws[gid].i[ 9]; + w2[2] = pws[gid].i[10]; + w2[3] = pws[gid].i[11]; + + u32 w3[4]; + + w3[0] = pws[gid].i[12]; + w3[1] = pws[gid].i[13]; + w3[2] = 0; + w3[3] = 0; + + const u32 pw_len = pws[gid].pw_len & 63; + + /** + * main + */ + + LOCAL_VK u32 S[64 * FIXED_LOCAL_SIZE]; + + m33501s (S, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); +} diff --git a/OpenCL/m33502_a0-optimized.cl b/OpenCL/m33502_a0-optimized.cl new file mode 100644 index 000000000..85de1d900 --- /dev/null +++ b/OpenCL/m33502_a0-optimized.cl @@ -0,0 +1,281 @@ +/** + * Author......: See docs/credits.txt + * License.....: MIT + */ + +//#define NEW_SIMD_CODE + +#ifdef KERNEL_STATIC +#include M2S(INCLUDE_PATH/inc_vendor.h) +#include M2S(INCLUDE_PATH/inc_types.h) +#include M2S(INCLUDE_PATH/inc_platform.cl) +#include M2S(INCLUDE_PATH/inc_common.cl) +#include M2S(INCLUDE_PATH/inc_rp_optimized.h) +#include M2S(INCLUDE_PATH/inc_rp_optimized.cl) +#include M2S(INCLUDE_PATH/inc_simd.cl) +#include M2S(INCLUDE_PATH/inc_cipher_rc4.cl) +#endif + +typedef struct rc4 +{ + u32 dropN; + u32 ct_len; + u32 pt_len; + u32 pt_off; + + u32 pt[2]; + u32 ct[16]; + +} rc4_t; + +CONSTANT_VK u32 pt_masks[16] = +{ + 0x00000000, + 0x000000FF, + 0x0000FFFF, + 0x00FFFFFF, + 0xFFFFFFFF, + 0x000000FF, + 0x0000FFFF, + 0x00FFFFFF, + 0xFFFFFFFF, + 0x000000FF, + 0x0000FFFF, + 0x00FFFFFF, + 0xFFFFFFFF, + 0x000000FF, + 0, + 0 +}; + +KERNEL_FQ KERNEL_FA void m33502_m04 (KERN_ATTR_RULES_ESALT (rc4_t)) +{ + /** + * base + */ + + const u64 lid = get_local_id (0); + const u64 gid = get_global_id (0); + const u64 lsz = get_local_size (0); + + if (gid >= GID_CNT) return; + + u32 pw_buf0[4]; + u32 pw_buf1[4] = { 0 }; + + pw_buf0[0] = pws[gid].i[ 0]; + pw_buf0[1] = pws[gid].i[ 1]; + pw_buf0[2] = pws[gid].i[ 2]; + pw_buf0[3] = pws[gid].i[ 3]; + + const u32 pw_len = pws[gid].pw_len & 63; + + /** + * shared + */ + + LOCAL_VK u32 S[64 * FIXED_LOCAL_SIZE]; + + /** + * loop + */ + + const u32 dropN = esalt_bufs[DIGESTS_OFFSET_HOST].dropN; + const u32 pt_len = esalt_bufs[DIGESTS_OFFSET_HOST].pt_len; + + const u32 ct[4] = + { + esalt_bufs[DIGESTS_OFFSET_HOST].ct[0], + esalt_bufs[DIGESTS_OFFSET_HOST].ct[1], + esalt_bufs[DIGESTS_OFFSET_HOST].ct[2], + esalt_bufs[DIGESTS_OFFSET_HOST].ct[3] + }; + + for (u32 il_pos = 0; il_pos < IL_CNT; il_pos += VECT_SIZE) + { + u32x w0[4] = { 0 }; + u32x w1[4] = { 0 }; + + apply_rules_vect_optimized (pw_buf0, pw_buf1, pw_len, rules_buf, il_pos, w0, w1); + + rc4_init_104 (S, w0, lid); + + u32 out[4]; + + u8 i = 0; + u8 j = 0; + + if (dropN > 0) + { + rc4_dropN (S, &i, &j, dropN, lid); + } + + rc4_next_16 (S, i, j, ct, out, lid); + + if (pt_len == 13) + { + out[3] &= pt_masks[1]; + } + else + { + out[3] = 0; + + if (pt_len < 9) + { + out[2] = 0; + + if (pt_len < 5) + { + out[1] = 0; + + if (pt_len >= 1 && pt_len <= 3) + { + out[0] &= pt_masks[pt_len]; + } + } + else if (pt_len <= 7) + { + out[1] &= pt_masks[pt_len]; + } + } + else if (pt_len <= 11) + { + out[2] &= pt_masks[pt_len]; + } + } + + COMPARE_M_SIMD (out[0], out[1], out[2], out[3]); + } +} + +KERNEL_FQ KERNEL_FA void m33502_m08 (KERN_ATTR_RULES_ESALT (rc4_t)) +{ +} + +KERNEL_FQ KERNEL_FA void m33502_m16 (KERN_ATTR_RULES_ESALT (rc4_t)) +{ +} + +KERNEL_FQ KERNEL_FA void m33502_s04 (KERN_ATTR_RULES_ESALT (rc4_t)) +{ + /** + * base + */ + + const u64 lid = get_local_id (0); + const u64 gid = get_global_id (0); + const u64 lsz = get_local_size (0); + + if (gid >= GID_CNT) return; + + u32 pw_buf0[4]; + u32 pw_buf1[4] = { 0 }; + + pw_buf0[0] = pws[gid].i[ 0]; + pw_buf0[1] = pws[gid].i[ 1]; + pw_buf0[2] = pws[gid].i[ 2]; + pw_buf0[3] = pws[gid].i[ 3]; + + const u32 pw_len = pws[gid].pw_len & 63; + + /** + * shared + */ + + LOCAL_VK u32 S[64 * FIXED_LOCAL_SIZE]; + + /** + * digest + */ + + const u32 search[4] = + { + digests_buf[DIGESTS_OFFSET_HOST].digest_buf[DGST_R0], + digests_buf[DIGESTS_OFFSET_HOST].digest_buf[DGST_R1], + digests_buf[DIGESTS_OFFSET_HOST].digest_buf[DGST_R2], + digests_buf[DIGESTS_OFFSET_HOST].digest_buf[DGST_R3] + }; + + /** + * loop + */ + + const u32 dropN = esalt_bufs[DIGESTS_OFFSET_HOST].dropN; + const u32 pt_len = esalt_bufs[DIGESTS_OFFSET_HOST].pt_len; + + const u32 ct[4] = + { + esalt_bufs[DIGESTS_OFFSET_HOST].ct[0], + esalt_bufs[DIGESTS_OFFSET_HOST].ct[1], + esalt_bufs[DIGESTS_OFFSET_HOST].ct[2], + esalt_bufs[DIGESTS_OFFSET_HOST].ct[3] + }; + + for (u32 il_pos = 0; il_pos < IL_CNT; il_pos += VECT_SIZE) + { + u32x w0[4] = { 0 }; + u32x w1[4] = { 0 }; + + apply_rules_vect_optimized (pw_buf0, pw_buf1, pw_len, rules_buf, il_pos, w0, w1); + + /** + * pdf + */ + + rc4_init_104 (S, w0, lid); + + u32 out[4]; + + u8 i = 0; + u8 j = 0; + + if (dropN > 0) + { + rc4_dropN (S, &i, &j, dropN, lid); + } + + rc4_next_16 (S, i, j, ct, out, lid); + + if (pt_len == 13) + { + out[3] &= pt_masks[1]; + } + else + { + out[3] = 0; + + if (pt_len < 9) + { + out[2] = 0; + + if (pt_len < 5) + { + out[1] = 0; + + if (pt_len >= 1 && pt_len <= 3) + { + out[0] &= pt_masks[pt_len]; + } + } + else if (pt_len <= 7) + { + out[1] &= pt_masks[pt_len]; + } + } + else if (pt_len <= 11) + { + out[2] &= pt_masks[pt_len]; + } + } + + COMPARE_S_SIMD (out[0], out[1], out[2], out[3]); + } +} + +KERNEL_FQ KERNEL_FA void m33502_s08 (KERN_ATTR_RULES_ESALT (rc4_t)) +{ +} + +KERNEL_FQ KERNEL_FA void m33502_s16 (KERN_ATTR_RULES_ESALT (rc4_t)) +{ +} diff --git a/OpenCL/m33502_a1-optimized.cl b/OpenCL/m33502_a1-optimized.cl new file mode 100644 index 000000000..8aca6d8e4 --- /dev/null +++ b/OpenCL/m33502_a1-optimized.cl @@ -0,0 +1,377 @@ +/** + * Author......: See docs/credits.txt + * License.....: MIT + */ + +//#define NEW_SIMD_CODE + +#ifdef KERNEL_STATIC +#include M2S(INCLUDE_PATH/inc_vendor.h) +#include M2S(INCLUDE_PATH/inc_types.h) +#include M2S(INCLUDE_PATH/inc_platform.cl) +#include M2S(INCLUDE_PATH/inc_common.cl) +#include M2S(INCLUDE_PATH/inc_simd.cl) +#include M2S(INCLUDE_PATH/inc_cipher_rc4.cl) +#endif + +typedef struct rc4 +{ + u32 dropN; + u32 ct_len; + u32 pt_len; + u32 pt_off; + + u32 pt[2]; + u32 ct[16]; + +} rc4_t; + +CONSTANT_VK u32 pt_masks[16] = +{ + 0x00000000, + 0x000000FF, + 0x0000FFFF, + 0x00FFFFFF, + 0xFFFFFFFF, + 0x000000FF, + 0x0000FFFF, + 0x00FFFFFF, + 0xFFFFFFFF, + 0x000000FF, + 0x0000FFFF, + 0x00FFFFFF, + 0xFFFFFFFF, + 0x000000FF, + 0, + 0 +}; + +KERNEL_FQ KERNEL_FA void m33502_m04 (KERN_ATTR_ESALT (rc4_t)) +{ + /** + * base + */ + + const u64 lid = get_local_id (0); + const u64 gid = get_global_id (0); + const u64 lsz = get_local_size (0); + + if (gid >= GID_CNT) return; + + u32 pw_buf0[4]; + u32 pw_buf1[4]; + + pw_buf0[0] = pws[gid].i[ 0]; + pw_buf0[1] = pws[gid].i[ 1]; + pw_buf0[2] = pws[gid].i[ 2]; + pw_buf0[3] = pws[gid].i[ 3]; + pw_buf1[0] = pws[gid].i[ 4]; + pw_buf1[1] = pws[gid].i[ 5]; + pw_buf1[2] = pws[gid].i[ 6]; + pw_buf1[3] = pws[gid].i[ 7]; + + const u32 pw_l_len = pws[gid].pw_len & 63; + + /** + * shared + */ + + LOCAL_VK u32 S[64 * FIXED_LOCAL_SIZE]; + + /** + * loop + */ + + const u32 dropN = esalt_bufs[DIGESTS_OFFSET_HOST].dropN; + const u32 pt_len = esalt_bufs[DIGESTS_OFFSET_HOST].pt_len; + + const u32 ct[4] = + { + esalt_bufs[DIGESTS_OFFSET_HOST].ct[0], + esalt_bufs[DIGESTS_OFFSET_HOST].ct[1], + esalt_bufs[DIGESTS_OFFSET_HOST].ct[2], + esalt_bufs[DIGESTS_OFFSET_HOST].ct[3] + }; + + for (u32 il_pos = 0; il_pos < IL_CNT; il_pos += VECT_SIZE) + { + const u32x pw_r_len = pwlenx_create_combt (combs_buf, il_pos) & 63; + + const u32x pw_len = (pw_l_len + pw_r_len) & 63; + + /** + * concat password candidate + */ + + u32x wordl0[4] = { 0 }; + u32x wordl1[4] = { 0 }; + u32x wordl2[4] = { 0 }; + u32x wordl3[4] = { 0 }; + + wordl0[0] = pw_buf0[0]; + wordl0[1] = pw_buf0[1]; + wordl0[2] = pw_buf0[2]; + wordl0[3] = pw_buf0[3]; + wordl1[0] = pw_buf1[0]; + wordl1[1] = pw_buf1[1]; + wordl1[2] = pw_buf1[2]; + wordl1[3] = pw_buf1[3]; + + u32x wordr0[4] = { 0 }; + u32x wordr1[4] = { 0 }; + u32x wordr2[4] = { 0 }; + u32x wordr3[4] = { 0 }; + + wordr0[0] = ix_create_combt (combs_buf, il_pos, 0); + wordr0[1] = ix_create_combt (combs_buf, il_pos, 1); + wordr0[2] = ix_create_combt (combs_buf, il_pos, 2); + wordr0[3] = ix_create_combt (combs_buf, il_pos, 3); + wordr1[0] = ix_create_combt (combs_buf, il_pos, 4); + wordr1[1] = ix_create_combt (combs_buf, il_pos, 5); + wordr1[2] = ix_create_combt (combs_buf, il_pos, 6); + wordr1[3] = ix_create_combt (combs_buf, il_pos, 7); + + if (COMBS_MODE == COMBINATOR_MODE_BASE_LEFT) + { + switch_buffer_by_offset_le_VV (wordr0, wordr1, wordr2, wordr3, pw_l_len); + } + else + { + switch_buffer_by_offset_le_VV (wordl0, wordl1, wordl2, wordl3, pw_r_len); + } + + u32x w0[4]; + + w0[0] = wordl0[0] | wordr0[0]; + w0[1] = wordl0[1] | wordr0[1]; + w0[2] = wordl0[2] | wordr0[2]; + w0[3] = wordl0[3] | wordr0[3]; + + rc4_init_104 (S, w0, lid); + + u32 out[4]; + + u8 i = 0; + u8 j = 0; + + if (dropN > 0) + { + rc4_dropN (S, &i, &j, dropN, lid); + } + + rc4_next_16 (S, i, j, ct, out, lid); + + if (pt_len == 13) + { + out[3] &= pt_masks[1]; + } + else + { + out[3] = 0; + + if (pt_len < 9) + { + out[2] = 0; + + if (pt_len < 5) + { + out[1] = 0; + + if (pt_len >= 1 && pt_len <= 3) + { + out[0] &= pt_masks[pt_len]; + } + } + else if (pt_len <= 7) + { + out[1] &= pt_masks[pt_len]; + } + } + else if (pt_len <= 11) + { + out[2] &= pt_masks[pt_len]; + } + } + + COMPARE_M_SIMD (out[0], out[1], out[2], out[3]); + } +} + +KERNEL_FQ KERNEL_FA void m33502_m08 (KERN_ATTR_ESALT (rc4_t)) +{ +} + +KERNEL_FQ KERNEL_FA void m33502_m16 (KERN_ATTR_ESALT (rc4_t)) +{ +} + +KERNEL_FQ KERNEL_FA void m33502_s04 (KERN_ATTR_ESALT (rc4_t)) +{ + /** + * base + */ + + const u64 lid = get_local_id (0); + const u64 gid = get_global_id (0); + const u64 lsz = get_local_size (0); + + if (gid >= GID_CNT) return; + + u32 pw_buf0[4]; + u32 pw_buf1[4]; + + pw_buf0[0] = pws[gid].i[ 0]; + pw_buf0[1] = pws[gid].i[ 1]; + pw_buf0[2] = pws[gid].i[ 2]; + pw_buf0[3] = pws[gid].i[ 3]; + pw_buf1[0] = pws[gid].i[ 4]; + pw_buf1[1] = pws[gid].i[ 5]; + pw_buf1[2] = pws[gid].i[ 6]; + pw_buf1[3] = pws[gid].i[ 7]; + + const u32 pw_l_len = pws[gid].pw_len & 63; + + /** + * shared + */ + + LOCAL_VK u32 S[64 * FIXED_LOCAL_SIZE]; + + /** + * digest + */ + + const u32 search[4] = + { + digests_buf[DIGESTS_OFFSET_HOST].digest_buf[DGST_R0], + digests_buf[DIGESTS_OFFSET_HOST].digest_buf[DGST_R1], + digests_buf[DIGESTS_OFFSET_HOST].digest_buf[DGST_R2], + digests_buf[DIGESTS_OFFSET_HOST].digest_buf[DGST_R3] + }; + + /** + * loop + */ + + const u32 dropN = esalt_bufs[DIGESTS_OFFSET_HOST].dropN; + const u32 pt_len = esalt_bufs[DIGESTS_OFFSET_HOST].pt_len; + + const u32 ct[4] = + { + esalt_bufs[DIGESTS_OFFSET_HOST].ct[0], + esalt_bufs[DIGESTS_OFFSET_HOST].ct[1], + esalt_bufs[DIGESTS_OFFSET_HOST].ct[2], + esalt_bufs[DIGESTS_OFFSET_HOST].ct[3] + }; + + for (u32 il_pos = 0; il_pos < IL_CNT; il_pos += VECT_SIZE) + { + const u32x pw_r_len = pwlenx_create_combt (combs_buf, il_pos) & 63; + + const u32x pw_len = (pw_l_len + pw_r_len) & 63; + + /** + * concat password candidate + */ + + u32x wordl0[4] = { 0 }; + u32x wordl1[4] = { 0 }; + u32x wordl2[4] = { 0 }; + u32x wordl3[4] = { 0 }; + + wordl0[0] = pw_buf0[0]; + wordl0[1] = pw_buf0[1]; + wordl0[2] = pw_buf0[2]; + wordl0[3] = pw_buf0[3]; + wordl1[0] = pw_buf1[0]; + wordl1[1] = pw_buf1[1]; + wordl1[2] = pw_buf1[2]; + wordl1[3] = pw_buf1[3]; + + u32x wordr0[4] = { 0 }; + u32x wordr1[4] = { 0 }; + u32x wordr2[4] = { 0 }; + u32x wordr3[4] = { 0 }; + + wordr0[0] = ix_create_combt (combs_buf, il_pos, 0); + wordr0[1] = ix_create_combt (combs_buf, il_pos, 1); + wordr0[2] = ix_create_combt (combs_buf, il_pos, 2); + wordr0[3] = ix_create_combt (combs_buf, il_pos, 3); + wordr1[0] = ix_create_combt (combs_buf, il_pos, 4); + wordr1[1] = ix_create_combt (combs_buf, il_pos, 5); + wordr1[2] = ix_create_combt (combs_buf, il_pos, 6); + wordr1[3] = ix_create_combt (combs_buf, il_pos, 7); + + if (COMBS_MODE == COMBINATOR_MODE_BASE_LEFT) + { + switch_buffer_by_offset_le_VV (wordr0, wordr1, wordr2, wordr3, pw_l_len); + } + else + { + switch_buffer_by_offset_le_VV (wordl0, wordl1, wordl2, wordl3, pw_r_len); + } + + u32x w0[4]; + + w0[0] = wordl0[0] | wordr0[0]; + w0[1] = wordl0[1] | wordr0[1]; + w0[2] = wordl0[2] | wordr0[2]; + w0[3] = wordl0[3] | wordr0[3]; + + rc4_init_104 (S, w0, lid); + + u32 out[4]; + + u8 i = 0; + u8 j = 0; + + if (dropN > 0) + { + rc4_dropN (S, &i, &j, dropN, lid); + } + + rc4_next_16 (S, i, j, ct, out, lid); + + if (pt_len == 13) + { + out[3] &= pt_masks[1]; + } + else + { + out[3] = 0; + + if (pt_len < 9) + { + out[2] = 0; + + if (pt_len < 5) + { + out[1] = 0; + + if (pt_len >= 1 && pt_len <= 3) + { + out[0] &= pt_masks[pt_len]; + } + } + else if (pt_len <= 7) + { + out[1] &= pt_masks[pt_len]; + } + } + else if (pt_len <= 11) + { + out[2] &= pt_masks[pt_len]; + } + } + + COMPARE_S_SIMD (out[0], out[1], out[2], out[3]); + } +} + +KERNEL_FQ KERNEL_FA void m33502_s08 (KERN_ATTR_ESALT (rc4_t)) +{ +} + +KERNEL_FQ KERNEL_FA void m33502_s16 (KERN_ATTR_ESALT (rc4_t)) +{ +} diff --git a/OpenCL/m33502_a3-optimized.cl b/OpenCL/m33502_a3-optimized.cl new file mode 100644 index 000000000..8042776ce --- /dev/null +++ b/OpenCL/m33502_a3-optimized.cl @@ -0,0 +1,527 @@ +/** + * Author......: See docs/credits.txt + * License.....: MIT + */ + +//#define NEW_SIMD_CODE + +#ifdef KERNEL_STATIC +#include M2S(INCLUDE_PATH/inc_vendor.h) +#include M2S(INCLUDE_PATH/inc_types.h) +#include M2S(INCLUDE_PATH/inc_platform.cl) +#include M2S(INCLUDE_PATH/inc_common.cl) +#include M2S(INCLUDE_PATH/inc_simd.cl) +#include M2S(INCLUDE_PATH/inc_cipher_rc4.cl) +#endif + +typedef struct rc4 +{ + u32 dropN; + u32 ct_len; + u32 pt_len; + u32 pt_off; + + u32 pt[2]; + u32 ct[16]; + +} rc4_t; + +CONSTANT_VK u32 pt_masks[16] = +{ + 0x00000000, + 0x000000FF, + 0x0000FFFF, + 0x00FFFFFF, + 0xFFFFFFFF, + 0x000000FF, + 0x0000FFFF, + 0x00FFFFFF, + 0xFFFFFFFF, + 0x000000FF, + 0x0000FFFF, + 0x00FFFFFF, + 0xFFFFFFFF, + 0x000000FF, + 0, + 0 +}; + +DECLSPEC void m33502m (LOCAL_AS u32 *S, PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w2, PRIVATE_AS u32 *w3, const u32 pw_len, KERN_ATTR_FUNC_ESALT (rc4_t)) +{ + /** + * modifiers are taken from args + */ + + /** + * loop + */ + + const u32 dropN = esalt_bufs[DIGESTS_OFFSET_HOST].dropN; + const u32 pt_len = esalt_bufs[DIGESTS_OFFSET_HOST].pt_len; + + const u32 ct[4] = + { + esalt_bufs[DIGESTS_OFFSET_HOST].ct[0], + esalt_bufs[DIGESTS_OFFSET_HOST].ct[1], + esalt_bufs[DIGESTS_OFFSET_HOST].ct[2], + esalt_bufs[DIGESTS_OFFSET_HOST].ct[3] + }; + + u32 w0l = w0[0]; + + for (u32 il_pos = 0; il_pos < IL_CNT; il_pos += VECT_SIZE) + { + const u32 w0r = ix_create_bft (bfs_buf, il_pos); + + const u32 w0lr = w0l | w0r; + + w0[0] = w0lr; + + rc4_init_104 (S, w0, lid); + + u32 out[4]; + + u8 i = 0; + u8 j = 0; + + if (dropN > 0) + { + rc4_dropN (S, &i, &j, dropN, lid); + } + + rc4_next_16 (S, i, j, ct, out, lid); + + if (pt_len == 13) + { + out[3] &= pt_masks[1]; + } + else + { + out[3] = 0; + + if (pt_len < 9) + { + out[2] = 0; + + if (pt_len < 5) + { + out[1] = 0; + + if (pt_len >= 1 && pt_len <= 3) + { + out[0] &= pt_masks[pt_len]; + } + } + else if (pt_len <= 7) + { + out[1] &= pt_masks[pt_len]; + } + } + else if (pt_len <= 11) + { + out[2] &= pt_masks[pt_len]; + } + } + + COMPARE_M_SIMD (out[0], out[1], out[2], out[3]); + } +} + +DECLSPEC void m33502s (LOCAL_AS u32 *S, PRIVATE_AS u32 *w0, PRIVATE_AS u32 *w1, PRIVATE_AS u32 *w2, PRIVATE_AS u32 *w3, const u32 pw_len, KERN_ATTR_FUNC_ESALT (rc4_t)) +{ + /** + * modifiers are taken from args + */ + + /** + * digest + */ + + const u32 search[4] = + { + digests_buf[DIGESTS_OFFSET_HOST].digest_buf[DGST_R0], + digests_buf[DIGESTS_OFFSET_HOST].digest_buf[DGST_R1], + digests_buf[DIGESTS_OFFSET_HOST].digest_buf[DGST_R2], + digests_buf[DIGESTS_OFFSET_HOST].digest_buf[DGST_R3] + }; + + /** + * loop + */ + + const u32 dropN = esalt_bufs[DIGESTS_OFFSET_HOST].dropN; + const u32 pt_len = esalt_bufs[DIGESTS_OFFSET_HOST].pt_len; + + const u32 ct[4] = + { + esalt_bufs[DIGESTS_OFFSET_HOST].ct[0], + esalt_bufs[DIGESTS_OFFSET_HOST].ct[1], + esalt_bufs[DIGESTS_OFFSET_HOST].ct[2], + esalt_bufs[DIGESTS_OFFSET_HOST].ct[3] + }; + + u32 w0l = w0[0]; + + for (u32 il_pos = 0; il_pos < IL_CNT; il_pos += VECT_SIZE) + { + const u32 w0r = ix_create_bft (bfs_buf, il_pos); + + const u32 w0lr = w0l | w0r; + + w0[0] = w0lr; + + rc4_init_104 (S, w0, lid); + + u32 out[4]; + + u8 i = 0; + u8 j = 0; + + if (dropN > 0) + { + rc4_dropN (S, &i, &j, dropN, lid); + } + + rc4_next_16 (S, i, j, ct, out, lid); + + if (pt_len == 13) + { + out[3] &= pt_masks[1]; + } + else + { + out[3] = 0; + + if (pt_len < 9) + { + out[2] = 0; + + if (pt_len < 5) + { + out[1] = 0; + + if (pt_len >= 1 && pt_len <= 3) + { + out[0] &= pt_masks[pt_len]; + } + } + else if (pt_len <= 7) + { + out[1] &= pt_masks[pt_len]; + } + } + else if (pt_len <= 11) + { + out[2] &= pt_masks[pt_len]; + } + } + + COMPARE_S_SIMD (out[0], out[1], out[2], out[3]); + } +} + +KERNEL_FQ KERNEL_FA void m33502_m04 (KERN_ATTR_ESALT (rc4_t)) +{ + /** + * base + */ + + const u64 lid = get_local_id (0); + const u64 gid = get_global_id (0); + const u64 lsz = get_local_size (0); + + if (gid >= GID_CNT) return; + + u32 w0[4]; + + w0[0] = pws[gid].i[ 0]; + w0[1] = pws[gid].i[ 1]; + w0[2] = pws[gid].i[ 2]; + w0[3] = pws[gid].i[ 3]; + + u32 w1[4]; + + w1[0] = 0; + w1[1] = 0; + w1[2] = 0; + w1[3] = 0; + + u32 w2[4]; + + w2[0] = 0; + w2[1] = 0; + w2[2] = 0; + w2[3] = 0; + + u32 w3[4]; + + w3[0] = 0; + w3[1] = 0; + w3[2] = 0; + w3[3] = 0; + + const u32 pw_len = pws[gid].pw_len & 63; + + /** + * main + */ + + LOCAL_VK u32 S[64 * FIXED_LOCAL_SIZE]; + + m33502m (S, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); +} + +KERNEL_FQ KERNEL_FA void m33502_m08 (KERN_ATTR_ESALT (rc4_t)) +{ + /** + * base + */ + + const u64 lid = get_local_id (0); + const u64 gid = get_global_id (0); + const u64 lsz = get_local_size (0); + + if (gid >= GID_CNT) return; + + u32 w0[4]; + + w0[0] = pws[gid].i[ 0]; + w0[1] = pws[gid].i[ 1]; + w0[2] = pws[gid].i[ 2]; + w0[3] = pws[gid].i[ 3]; + + u32 w1[4]; + + w1[0] = pws[gid].i[ 4]; + w1[1] = pws[gid].i[ 5]; + w1[2] = pws[gid].i[ 6]; + w1[3] = pws[gid].i[ 7]; + + u32 w2[4]; + + w2[0] = 0; + w2[1] = 0; + w2[2] = 0; + w2[3] = 0; + + u32 w3[4]; + + w3[0] = 0; + w3[1] = 0; + w3[2] = 0; + w3[3] = 0; + + const u32 pw_len = pws[gid].pw_len & 63; + + /** + * main + */ + + LOCAL_VK u32 S[64 * FIXED_LOCAL_SIZE]; + + m33502m (S, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); +} + +KERNEL_FQ KERNEL_FA void m33502_m16 (KERN_ATTR_ESALT (rc4_t)) +{ + /** + * base + */ + + const u64 lid = get_local_id (0); + const u64 gid = get_global_id (0); + const u64 lsz = get_local_size (0); + + if (gid >= GID_CNT) return; + + u32 w0[4]; + + w0[0] = pws[gid].i[ 0]; + w0[1] = pws[gid].i[ 1]; + w0[2] = pws[gid].i[ 2]; + w0[3] = pws[gid].i[ 3]; + + u32 w1[4]; + + w1[0] = pws[gid].i[ 4]; + w1[1] = pws[gid].i[ 5]; + w1[2] = pws[gid].i[ 6]; + w1[3] = pws[gid].i[ 7]; + + u32 w2[4]; + + w2[0] = pws[gid].i[ 8]; + w2[1] = pws[gid].i[ 9]; + w2[2] = pws[gid].i[10]; + w2[3] = pws[gid].i[11]; + + u32 w3[4]; + + w3[0] = pws[gid].i[12]; + w3[1] = pws[gid].i[13]; + w3[2] = 0; + w3[3] = 0; + + const u32 pw_len = pws[gid].pw_len & 63; + + /** + * main + */ + + LOCAL_VK u32 S[64 * FIXED_LOCAL_SIZE]; + + m33502m (S, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); +} + +KERNEL_FQ KERNEL_FA void m33502_s04 (KERN_ATTR_ESALT (rc4_t)) +{ + /** + * base + */ + + const u64 lid = get_local_id (0); + const u64 gid = get_global_id (0); + const u64 lsz = get_local_size (0); + + if (gid >= GID_CNT) return; + + u32 w0[4]; + + w0[0] = pws[gid].i[ 0]; + w0[1] = pws[gid].i[ 1]; + w0[2] = pws[gid].i[ 2]; + w0[3] = pws[gid].i[ 3]; + + u32 w1[4]; + + w1[0] = 0; + w1[1] = 0; + w1[2] = 0; + w1[3] = 0; + + u32 w2[4]; + + w2[0] = 0; + w2[1] = 0; + w2[2] = 0; + w2[3] = 0; + + u32 w3[4]; + + w3[0] = 0; + w3[1] = 0; + w3[2] = 0; + w3[3] = 0; + + const u32 pw_len = pws[gid].pw_len & 63; + + /** + * main + */ + + LOCAL_VK u32 S[64 * FIXED_LOCAL_SIZE]; + + m33502s (S, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); +} + +KERNEL_FQ KERNEL_FA void m33502_s08 (KERN_ATTR_ESALT (rc4_t)) +{ + /** + * base + */ + + const u64 lid = get_local_id (0); + const u64 gid = get_global_id (0); + const u64 lsz = get_local_size (0); + + if (gid >= GID_CNT) return; + + u32 w0[4]; + + w0[0] = pws[gid].i[ 0]; + w0[1] = pws[gid].i[ 1]; + w0[2] = pws[gid].i[ 2]; + w0[3] = pws[gid].i[ 3]; + + u32 w1[4]; + + w1[0] = pws[gid].i[ 4]; + w1[1] = pws[gid].i[ 5]; + w1[2] = pws[gid].i[ 6]; + w1[3] = pws[gid].i[ 7]; + + u32 w2[4]; + + w2[0] = 0; + w2[1] = 0; + w2[2] = 0; + w2[3] = 0; + + u32 w3[4]; + + w3[0] = 0; + w3[1] = 0; + w3[2] = 0; + w3[3] = 0; + + const u32 pw_len = pws[gid].pw_len & 63; + + /** + * main + */ + + LOCAL_VK u32 S[64 * FIXED_LOCAL_SIZE]; + + m33502s (S, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); +} + +KERNEL_FQ KERNEL_FA void m33502_s16 (KERN_ATTR_ESALT (rc4_t)) +{ + /** + * base + */ + + const u64 lid = get_local_id (0); + const u64 gid = get_global_id (0); + const u64 lsz = get_local_size (0); + + if (gid >= GID_CNT) return; + + u32 w0[4]; + + w0[0] = pws[gid].i[ 0]; + w0[1] = pws[gid].i[ 1]; + w0[2] = pws[gid].i[ 2]; + w0[3] = pws[gid].i[ 3]; + + u32 w1[4]; + + w1[0] = pws[gid].i[ 4]; + w1[1] = pws[gid].i[ 5]; + w1[2] = pws[gid].i[ 6]; + w1[3] = pws[gid].i[ 7]; + + u32 w2[4]; + + w2[0] = pws[gid].i[ 8]; + w2[1] = pws[gid].i[ 9]; + w2[2] = pws[gid].i[10]; + w2[3] = pws[gid].i[11]; + + u32 w3[4]; + + w3[0] = pws[gid].i[12]; + w3[1] = pws[gid].i[13]; + w3[2] = 0; + w3[3] = 0; + + const u32 pw_len = pws[gid].pw_len & 63; + + /** + * main + */ + + LOCAL_VK u32 S[64 * FIXED_LOCAL_SIZE]; + + m33502s (S, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param, gid, lid, lsz); +} diff --git a/OpenCL/m33700-pure.cl b/OpenCL/m33700-pure.cl new file mode 100644 index 000000000..7811340ea --- /dev/null +++ b/OpenCL/m33700-pure.cl @@ -0,0 +1,392 @@ +/** + * Author......: See docs/credits.txt + * License.....: MIT + */ + +#define NEW_SIMD_CODE + +#ifdef KERNEL_STATIC +#include M2S(INCLUDE_PATH/inc_vendor.h) +#include M2S(INCLUDE_PATH/inc_types.h) +#include M2S(INCLUDE_PATH/inc_platform.cl) +#include M2S(INCLUDE_PATH/inc_common.cl) +#include M2S(INCLUDE_PATH/inc_simd.cl) +#include M2S(INCLUDE_PATH/inc_hash_sha256.cl) +#include M2S(INCLUDE_PATH/inc_cipher_aes.cl) +#include M2S(INCLUDE_PATH/inc_cipher_des.cl) +#endif + +typedef struct pkcs_sha256_tmp +{ + u32 ipad[8]; + u32 opad[8]; + + u32 dgst[32]; + u32 out[32]; + +} pkcs_sha256_tmp_t; + +typedef struct pkcs +{ + u32 data_buf[8]; + int data_len; + +} pkcs_t; + +DECLSPEC void hmac_sha256_run_V (PRIVATE_AS u32x *w0, PRIVATE_AS u32x *w1, PRIVATE_AS u32x *w2, PRIVATE_AS u32x *w3, PRIVATE_AS u32x *ipad, PRIVATE_AS u32x *opad, PRIVATE_AS u32x *digest) +{ + digest[0] = ipad[0]; + digest[1] = ipad[1]; + digest[2] = ipad[2]; + digest[3] = ipad[3]; + digest[4] = ipad[4]; + digest[5] = ipad[5]; + digest[6] = ipad[6]; + digest[7] = ipad[7]; + + sha256_transform_vector (w0, w1, w2, w3, digest); + + w0[0] = digest[0]; + w0[1] = digest[1]; + w0[2] = digest[2]; + w0[3] = digest[3]; + w1[0] = digest[4]; + w1[1] = digest[5]; + w1[2] = digest[6]; + w1[3] = digest[7]; + w2[0] = 0x80000000; + w2[1] = 0; + w2[2] = 0; + w2[3] = 0; + w3[0] = 0; + w3[1] = 0; + w3[2] = 0; + w3[3] = (64 + 32) * 8; + + digest[0] = opad[0]; + digest[1] = opad[1]; + digest[2] = opad[2]; + digest[3] = opad[3]; + digest[4] = opad[4]; + digest[5] = opad[5]; + digest[6] = opad[6]; + digest[7] = opad[7]; + + sha256_transform_vector (w0, w1, w2, w3, digest); +} + +KERNEL_FQ KERNEL_FA void m33700_init (KERN_ATTR_TMPS_ESALT (pkcs_sha256_tmp_t, pkcs_t)) +{ + /** + * base + */ + + const u64 gid = get_global_id (0); + + if (gid >= GID_CNT) return; + + sha256_hmac_ctx_t sha256_hmac_ctx; + + sha256_hmac_init_global_utf16le_swap (&sha256_hmac_ctx, pws[gid].i, pws[gid].pw_len); + + tmps[gid].ipad[0] = sha256_hmac_ctx.ipad.h[0]; + tmps[gid].ipad[1] = sha256_hmac_ctx.ipad.h[1]; + tmps[gid].ipad[2] = sha256_hmac_ctx.ipad.h[2]; + tmps[gid].ipad[3] = sha256_hmac_ctx.ipad.h[3]; + tmps[gid].ipad[4] = sha256_hmac_ctx.ipad.h[4]; + tmps[gid].ipad[5] = sha256_hmac_ctx.ipad.h[5]; + tmps[gid].ipad[6] = sha256_hmac_ctx.ipad.h[6]; + tmps[gid].ipad[7] = sha256_hmac_ctx.ipad.h[7]; + + tmps[gid].opad[0] = sha256_hmac_ctx.opad.h[0]; + tmps[gid].opad[1] = sha256_hmac_ctx.opad.h[1]; + tmps[gid].opad[2] = sha256_hmac_ctx.opad.h[2]; + tmps[gid].opad[3] = sha256_hmac_ctx.opad.h[3]; + tmps[gid].opad[4] = sha256_hmac_ctx.opad.h[4]; + tmps[gid].opad[5] = sha256_hmac_ctx.opad.h[5]; + tmps[gid].opad[6] = sha256_hmac_ctx.opad.h[6]; + tmps[gid].opad[7] = sha256_hmac_ctx.opad.h[7]; + + for (u32 i = 0, j = 1; i < 8; i += 8, j += 1) + { + sha256_hmac_ctx_t sha256_hmac_ctx2 = sha256_hmac_ctx; + + u32 w0[4]; + u32 w1[4]; + u32 w2[4]; + u32 w3[4]; + + w0[0] = j; + w0[1] = 0; + w0[2] = 0; + w0[3] = 0; + w1[0] = 0; + w1[1] = 0; + w1[2] = 0; + w1[3] = 0; + w2[0] = 0; + w2[1] = 0; + w2[2] = 0; + w2[3] = 0; + w3[0] = 0; + w3[1] = 0; + w3[2] = 0; + w3[3] = 0; + + sha256_hmac_update_64 (&sha256_hmac_ctx2, w0, w1, w2, w3, 4); + + sha256_hmac_final (&sha256_hmac_ctx2); + + tmps[gid].dgst[i + 0] = sha256_hmac_ctx2.opad.h[0]; + tmps[gid].dgst[i + 1] = sha256_hmac_ctx2.opad.h[1]; + tmps[gid].dgst[i + 2] = sha256_hmac_ctx2.opad.h[2]; + tmps[gid].dgst[i + 3] = sha256_hmac_ctx2.opad.h[3]; + tmps[gid].dgst[i + 4] = sha256_hmac_ctx2.opad.h[4]; + tmps[gid].dgst[i + 5] = sha256_hmac_ctx2.opad.h[5]; + tmps[gid].dgst[i + 6] = sha256_hmac_ctx2.opad.h[6]; + tmps[gid].dgst[i + 7] = sha256_hmac_ctx2.opad.h[7]; + + tmps[gid].out[i + 0] = tmps[gid].dgst[i + 0]; + tmps[gid].out[i + 1] = tmps[gid].dgst[i + 1]; + tmps[gid].out[i + 2] = tmps[gid].dgst[i + 2]; + tmps[gid].out[i + 3] = tmps[gid].dgst[i + 3]; + tmps[gid].out[i + 4] = tmps[gid].dgst[i + 4]; + tmps[gid].out[i + 5] = tmps[gid].dgst[i + 5]; + tmps[gid].out[i + 6] = tmps[gid].dgst[i + 6]; + tmps[gid].out[i + 7] = tmps[gid].dgst[i + 7]; + } +} + +KERNEL_FQ KERNEL_FA void m33700_loop (KERN_ATTR_TMPS_ESALT (pkcs_sha256_tmp_t, pkcs_t)) +{ + const u64 gid = get_global_id (0); + + if ((gid * VECT_SIZE) >= GID_CNT) return; + + u32x ipad[8]; + u32x opad[8]; + + ipad[0] = packv (tmps, ipad, gid, 0); + ipad[1] = packv (tmps, ipad, gid, 1); + ipad[2] = packv (tmps, ipad, gid, 2); + ipad[3] = packv (tmps, ipad, gid, 3); + ipad[4] = packv (tmps, ipad, gid, 4); + ipad[5] = packv (tmps, ipad, gid, 5); + ipad[6] = packv (tmps, ipad, gid, 6); + ipad[7] = packv (tmps, ipad, gid, 7); + + opad[0] = packv (tmps, opad, gid, 0); + opad[1] = packv (tmps, opad, gid, 1); + opad[2] = packv (tmps, opad, gid, 2); + opad[3] = packv (tmps, opad, gid, 3); + opad[4] = packv (tmps, opad, gid, 4); + opad[5] = packv (tmps, opad, gid, 5); + opad[6] = packv (tmps, opad, gid, 6); + opad[7] = packv (tmps, opad, gid, 7); + + for (u32 i = 0; i < 8; i += 8) + { + u32x dgst[8]; + u32x out[8]; + + dgst[0] = packv (tmps, dgst, gid, i + 0); + dgst[1] = packv (tmps, dgst, gid, i + 1); + dgst[2] = packv (tmps, dgst, gid, i + 2); + dgst[3] = packv (tmps, dgst, gid, i + 3); + dgst[4] = packv (tmps, dgst, gid, i + 4); + dgst[5] = packv (tmps, dgst, gid, i + 5); + dgst[6] = packv (tmps, dgst, gid, i + 6); + dgst[7] = packv (tmps, dgst, gid, i + 7); + + out[0] = packv (tmps, out, gid, i + 0); + out[1] = packv (tmps, out, gid, i + 1); + out[2] = packv (tmps, out, gid, i + 2); + out[3] = packv (tmps, out, gid, i + 3); + out[4] = packv (tmps, out, gid, i + 4); + out[5] = packv (tmps, out, gid, i + 5); + out[6] = packv (tmps, out, gid, i + 6); + out[7] = packv (tmps, out, gid, i + 7); + + for (u32 j = 0; j < LOOP_CNT; j++) + { + u32x w0[4]; + u32x w1[4]; + u32x w2[4]; + u32x w3[4]; + + w0[0] = dgst[0]; + w0[1] = dgst[1]; + w0[2] = dgst[2]; + w0[3] = dgst[3]; + w1[0] = dgst[4]; + w1[1] = dgst[5]; + w1[2] = dgst[6]; + w1[3] = dgst[7]; + w2[0] = 0x80000000; + w2[1] = 0; + w2[2] = 0; + w2[3] = 0; + w3[0] = 0; + w3[1] = 0; + w3[2] = 0; + w3[3] = (64 + 32) * 8; + + hmac_sha256_run_V (w0, w1, w2, w3, ipad, opad, dgst); + + out[0] ^= dgst[0]; + out[1] ^= dgst[1]; + out[2] ^= dgst[2]; + out[3] ^= dgst[3]; + out[4] ^= dgst[4]; + out[5] ^= dgst[5]; + out[6] ^= dgst[6]; + out[7] ^= dgst[7]; + } + + unpackv (tmps, dgst, gid, i + 0, dgst[0]); + unpackv (tmps, dgst, gid, i + 1, dgst[1]); + unpackv (tmps, dgst, gid, i + 2, dgst[2]); + unpackv (tmps, dgst, gid, i + 3, dgst[3]); + unpackv (tmps, dgst, gid, i + 4, dgst[4]); + unpackv (tmps, dgst, gid, i + 5, dgst[5]); + unpackv (tmps, dgst, gid, i + 6, dgst[6]); + unpackv (tmps, dgst, gid, i + 7, dgst[7]); + + unpackv (tmps, out, gid, i + 0, out[0]); + unpackv (tmps, out, gid, i + 1, out[1]); + unpackv (tmps, out, gid, i + 2, out[2]); + unpackv (tmps, out, gid, i + 3, out[3]); + unpackv (tmps, out, gid, i + 4, out[4]); + unpackv (tmps, out, gid, i + 5, out[5]); + unpackv (tmps, out, gid, i + 6, out[6]); + unpackv (tmps, out, gid, i + 7, out[7]); + } +} + +KERNEL_FQ KERNEL_FA void m33700_comp (KERN_ATTR_TMPS_ESALT (pkcs_sha256_tmp_t, pkcs_t)) +{ + const u64 gid = get_global_id (0); + const u64 lid = get_local_id (0); + const u64 lsz = get_local_size (0); + + /** + * aes shared + */ + + #ifdef REAL_SHM + + LOCAL_VK u32 s_td0[256]; + LOCAL_VK u32 s_td1[256]; + LOCAL_VK u32 s_td2[256]; + LOCAL_VK u32 s_td3[256]; + LOCAL_VK u32 s_td4[256]; + + LOCAL_VK u32 s_te0[256]; + LOCAL_VK u32 s_te1[256]; + LOCAL_VK u32 s_te2[256]; + LOCAL_VK u32 s_te3[256]; + LOCAL_VK u32 s_te4[256]; + + for (u32 i = lid; i < 256; i += lsz) + { + s_td0[i] = td0[i]; + s_td1[i] = td1[i]; + s_td2[i] = td2[i]; + s_td3[i] = td3[i]; + s_td4[i] = td4[i]; + + s_te0[i] = te0[i]; + s_te1[i] = te1[i]; + s_te2[i] = te2[i]; + s_te3[i] = te3[i]; + s_te4[i] = te4[i]; + } + + LOCAL_VK u32 s_SPtrans[8][64]; + LOCAL_VK u32 s_skb[8][64]; + + for (u32 i = lid; i < 64; i += lsz) + { + s_SPtrans[0][i] = c_SPtrans[0][i]; + s_SPtrans[1][i] = c_SPtrans[1][i]; + s_SPtrans[2][i] = c_SPtrans[2][i]; + s_SPtrans[3][i] = c_SPtrans[3][i]; + s_SPtrans[4][i] = c_SPtrans[4][i]; + s_SPtrans[5][i] = c_SPtrans[5][i]; + s_SPtrans[6][i] = c_SPtrans[6][i]; + s_SPtrans[7][i] = c_SPtrans[7][i]; + + s_skb[0][i] = c_skb[0][i]; + s_skb[1][i] = c_skb[1][i]; + s_skb[2][i] = c_skb[2][i]; + s_skb[3][i] = c_skb[3][i]; + s_skb[4][i] = c_skb[4][i]; + s_skb[5][i] = c_skb[5][i]; + s_skb[6][i] = c_skb[6][i]; + s_skb[7][i] = c_skb[7][i]; + } + + SYNC_THREADS (); + + #else + + CONSTANT_AS u32a *s_td0 = td0; + CONSTANT_AS u32a *s_td1 = td1; + CONSTANT_AS u32a *s_td2 = td2; + CONSTANT_AS u32a *s_td3 = td3; + CONSTANT_AS u32a *s_td4 = td4; + + CONSTANT_AS u32a *s_te0 = te0; + CONSTANT_AS u32a *s_te1 = te1; + CONSTANT_AS u32a *s_te2 = te2; + CONSTANT_AS u32a *s_te3 = te3; + CONSTANT_AS u32a *s_te4 = te4; + + CONSTANT_AS u32a (*s_SPtrans)[64] = c_SPtrans; + CONSTANT_AS u32a (*s_skb)[64] = c_skb; + + #endif + + if (gid >= GID_CNT) return; + + u32 ukey[8]; + + ukey[0] = tmps[gid].out[0]; + ukey[1] = tmps[gid].out[1]; + ukey[2] = tmps[gid].out[2]; + ukey[3] = tmps[gid].out[3]; + ukey[4] = tmps[gid].out[4]; + ukey[5] = tmps[gid].out[5]; + ukey[6] = tmps[gid].out[6]; + ukey[7] = tmps[gid].out[7]; + + // decrypt first block + + u32 enc[4]; + u32 dec[4]; + + enc[0] = esalt_bufs[DIGESTS_OFFSET_HOST].data_buf[0]; + enc[1] = esalt_bufs[DIGESTS_OFFSET_HOST].data_buf[1]; + enc[2] = esalt_bufs[DIGESTS_OFFSET_HOST].data_buf[2]; + enc[3] = esalt_bufs[DIGESTS_OFFSET_HOST].data_buf[3]; + + u32 ks[60]; + + AES256_set_decrypt_key (ks, ukey, s_te0, s_te1, s_te2, s_te3, s_td0, s_td1, s_td2, s_td3); + + aes256_decrypt (ks, enc, dec, s_td0, s_td1, s_td2, s_td3, s_td4); + + dec[0] ^= 0x00000000; + + if (dec[0] != 0x00000000) return; + + dec[1] ^= 0x00000000; + + if (dec[1] != 0x00000001) return; + + if (hc_atomic_inc (&hashes_shown[DIGESTS_OFFSET_HOST]) == 0) + { + #define il_pos 0 + mark_hash (plains_buf, d_return_buf, SALT_POS_HOST, DIGESTS_CNT, 0, DIGESTS_OFFSET_HOST + 0, gid, il_pos, 0, 0); + } +} diff --git a/OpenCL/m33800-pure.cl b/OpenCL/m33800-pure.cl new file mode 100644 index 000000000..646a68c7b --- /dev/null +++ b/OpenCL/m33800-pure.cl @@ -0,0 +1,1308 @@ +/** + * based on 3200 + * + */ + +#ifdef KERNEL_STATIC +#include M2S(INCLUDE_PATH/inc_vendor.h) +#include M2S(INCLUDE_PATH/inc_types.h) +#include M2S(INCLUDE_PATH/inc_platform.cl) +#include M2S(INCLUDE_PATH/inc_common.cl) +#endif + +#define COMPARE_S M2S(INCLUDE_PATH/inc_comp_single.cl) +#define COMPARE_M M2S(INCLUDE_PATH/inc_comp_multi.cl) + +typedef struct bcrypt_tmp +{ + u32 E[18]; + + u32 P[18]; + + u32 S0[256]; + u32 S1[256]; + u32 S2[256]; + u32 S3[256]; + +} bcrypt_tmp_t; + +// http://www.schneier.com/code/constants.txt + +CONSTANT_VK u32a c_sbox0[256] = +{ + 0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7, + 0xb8e1afed, 0x6a267e96, 0xba7c9045, 0xf12c7f99, + 0x24a19947, 0xb3916cf7, 0x0801f2e2, 0x858efc16, + 0x636920d8, 0x71574e69, 0xa458fea3, 0xf4933d7e, + 0x0d95748f, 0x728eb658, 0x718bcd58, 0x82154aee, + 0x7b54a41d, 0xc25a59b5, 0x9c30d539, 0x2af26013, + 0xc5d1b023, 0x286085f0, 0xca417918, 0xb8db38ef, + 0x8e79dcb0, 0x603a180e, 0x6c9e0e8b, 0xb01e8a3e, + 0xd71577c1, 0xbd314b27, 0x78af2fda, 0x55605c60, + 0xe65525f3, 0xaa55ab94, 0x57489862, 0x63e81440, + 0x55ca396a, 0x2aab10b6, 0xb4cc5c34, 0x1141e8ce, + 0xa15486af, 0x7c72e993, 0xb3ee1411, 0x636fbc2a, + 0x2ba9c55d, 0x741831f6, 0xce5c3e16, 0x9b87931e, + 0xafd6ba33, 0x6c24cf5c, 0x7a325381, 0x28958677, + 0x3b8f4898, 0x6b4bb9af, 0xc4bfe81b, 0x66282193, + 0x61d809cc, 0xfb21a991, 0x487cac60, 0x5dec8032, + 0xef845d5d, 0xe98575b1, 0xdc262302, 0xeb651b88, + 0x23893e81, 0xd396acc5, 0x0f6d6ff3, 0x83f44239, + 0x2e0b4482, 0xa4842004, 0x69c8f04a, 0x9e1f9b5e, + 0x21c66842, 0xf6e96c9a, 0x670c9c61, 0xabd388f0, + 0x6a51a0d2, 0xd8542f68, 0x960fa728, 0xab5133a3, + 0x6eef0b6c, 0x137a3be4, 0xba3bf050, 0x7efb2a98, + 0xa1f1651d, 0x39af0176, 0x66ca593e, 0x82430e88, + 0x8cee8619, 0x456f9fb4, 0x7d84a5c3, 0x3b8b5ebe, + 0xe06f75d8, 0x85c12073, 0x401a449f, 0x56c16aa6, + 0x4ed3aa62, 0x363f7706, 0x1bfedf72, 0x429b023d, + 0x37d0d724, 0xd00a1248, 0xdb0fead3, 0x49f1c09b, + 0x075372c9, 0x80991b7b, 0x25d479d8, 0xf6e8def7, + 0xe3fe501a, 0xb6794c3b, 0x976ce0bd, 0x04c006ba, + 0xc1a94fb6, 0x409f60c4, 0x5e5c9ec2, 0x196a2463, + 0x68fb6faf, 0x3e6c53b5, 0x1339b2eb, 0x3b52ec6f, + 0x6dfc511f, 0x9b30952c, 0xcc814544, 0xaf5ebd09, + 0xbee3d004, 0xde334afd, 0x660f2807, 0x192e4bb3, + 0xc0cba857, 0x45c8740f, 0xd20b5f39, 0xb9d3fbdb, + 0x5579c0bd, 0x1a60320a, 0xd6a100c6, 0x402c7279, + 0x679f25fe, 0xfb1fa3cc, 0x8ea5e9f8, 0xdb3222f8, + 0x3c7516df, 0xfd616b15, 0x2f501ec8, 0xad0552ab, + 0x323db5fa, 0xfd238760, 0x53317b48, 0x3e00df82, + 0x9e5c57bb, 0xca6f8ca0, 0x1a87562e, 0xdf1769db, + 0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573, + 0x695b27b0, 0xbbca58c8, 0xe1ffa35d, 0xb8f011a0, + 0x10fa3d98, 0xfd2183b8, 0x4afcb56c, 0x2dd1d35b, + 0x9a53e479, 0xb6f84565, 0xd28e49bc, 0x4bfb9790, + 0xe1ddf2da, 0xa4cb7e33, 0x62fb1341, 0xcee4c6e8, + 0xef20cada, 0x36774c01, 0xd07e9efe, 0x2bf11fb4, + 0x95dbda4d, 0xae909198, 0xeaad8e71, 0x6b93d5a0, + 0xd08ed1d0, 0xafc725e0, 0x8e3c5b2f, 0x8e7594b7, + 0x8ff6e2fb, 0xf2122b64, 0x8888b812, 0x900df01c, + 0x4fad5ea0, 0x688fc31c, 0xd1cff191, 0xb3a8c1ad, + 0x2f2f2218, 0xbe0e1777, 0xea752dfe, 0x8b021fa1, + 0xe5a0cc0f, 0xb56f74e8, 0x18acf3d6, 0xce89e299, + 0xb4a84fe0, 0xfd13e0b7, 0x7cc43b81, 0xd2ada8d9, + 0x165fa266, 0x80957705, 0x93cc7314, 0x211a1477, + 0xe6ad2065, 0x77b5fa86, 0xc75442f5, 0xfb9d35cf, + 0xebcdaf0c, 0x7b3e89a0, 0xd6411bd3, 0xae1e7e49, + 0x00250e2d, 0x2071b35e, 0x226800bb, 0x57b8e0af, + 0x2464369b, 0xf009b91e, 0x5563911d, 0x59dfa6aa, + 0x78c14389, 0xd95a537f, 0x207d5ba2, 0x02e5b9c5, + 0x83260376, 0x6295cfa9, 0x11c81968, 0x4e734a41, + 0xb3472dca, 0x7b14a94a, 0x1b510052, 0x9a532915, + 0xd60f573f, 0xbc9bc6e4, 0x2b60a476, 0x81e67400, + 0x08ba6fb5, 0x571be91f, 0xf296ec6b, 0x2a0dd915, + 0xb6636521, 0xe7b9f9b6, 0xff34052e, 0xc5855664, + 0x53b02d5d, 0xa99f8fa1, 0x08ba4799, 0x6e85076a +}; + +CONSTANT_VK u32a c_sbox1[256] = +{ + 0x4b7a70e9, 0xb5b32944, 0xdb75092e, 0xc4192623, + 0xad6ea6b0, 0x49a7df7d, 0x9cee60b8, 0x8fedb266, + 0xecaa8c71, 0x699a17ff, 0x5664526c, 0xc2b19ee1, + 0x193602a5, 0x75094c29, 0xa0591340, 0xe4183a3e, + 0x3f54989a, 0x5b429d65, 0x6b8fe4d6, 0x99f73fd6, + 0xa1d29c07, 0xefe830f5, 0x4d2d38e6, 0xf0255dc1, + 0x4cdd2086, 0x8470eb26, 0x6382e9c6, 0x021ecc5e, + 0x09686b3f, 0x3ebaefc9, 0x3c971814, 0x6b6a70a1, + 0x687f3584, 0x52a0e286, 0xb79c5305, 0xaa500737, + 0x3e07841c, 0x7fdeae5c, 0x8e7d44ec, 0x5716f2b8, + 0xb03ada37, 0xf0500c0d, 0xf01c1f04, 0x0200b3ff, + 0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd, + 0xd19113f9, 0x7ca92ff6, 0x94324773, 0x22f54701, + 0x3ae5e581, 0x37c2dadc, 0xc8b57634, 0x9af3dda7, + 0xa9446146, 0x0fd0030e, 0xecc8c73e, 0xa4751e41, + 0xe238cd99, 0x3bea0e2f, 0x3280bba1, 0x183eb331, + 0x4e548b38, 0x4f6db908, 0x6f420d03, 0xf60a04bf, + 0x2cb81290, 0x24977c79, 0x5679b072, 0xbcaf89af, + 0xde9a771f, 0xd9930810, 0xb38bae12, 0xdccf3f2e, + 0x5512721f, 0x2e6b7124, 0x501adde6, 0x9f84cd87, + 0x7a584718, 0x7408da17, 0xbc9f9abc, 0xe94b7d8c, + 0xec7aec3a, 0xdb851dfa, 0x63094366, 0xc464c3d2, + 0xef1c1847, 0x3215d908, 0xdd433b37, 0x24c2ba16, + 0x12a14d43, 0x2a65c451, 0x50940002, 0x133ae4dd, + 0x71dff89e, 0x10314e55, 0x81ac77d6, 0x5f11199b, + 0x043556f1, 0xd7a3c76b, 0x3c11183b, 0x5924a509, + 0xf28fe6ed, 0x97f1fbfa, 0x9ebabf2c, 0x1e153c6e, + 0x86e34570, 0xeae96fb1, 0x860e5e0a, 0x5a3e2ab3, + 0x771fe71c, 0x4e3d06fa, 0x2965dcb9, 0x99e71d0f, + 0x803e89d6, 0x5266c825, 0x2e4cc978, 0x9c10b36a, + 0xc6150eba, 0x94e2ea78, 0xa5fc3c53, 0x1e0a2df4, + 0xf2f74ea7, 0x361d2b3d, 0x1939260f, 0x19c27960, + 0x5223a708, 0xf71312b6, 0xebadfe6e, 0xeac31f66, + 0xe3bc4595, 0xa67bc883, 0xb17f37d1, 0x018cff28, + 0xc332ddef, 0xbe6c5aa5, 0x65582185, 0x68ab9802, + 0xeecea50f, 0xdb2f953b, 0x2aef7dad, 0x5b6e2f84, + 0x1521b628, 0x29076170, 0xecdd4775, 0x619f1510, + 0x13cca830, 0xeb61bd96, 0x0334fe1e, 0xaa0363cf, + 0xb5735c90, 0x4c70a239, 0xd59e9e0b, 0xcbaade14, + 0xeecc86bc, 0x60622ca7, 0x9cab5cab, 0xb2f3846e, + 0x648b1eaf, 0x19bdf0ca, 0xa02369b9, 0x655abb50, + 0x40685a32, 0x3c2ab4b3, 0x319ee9d5, 0xc021b8f7, + 0x9b540b19, 0x875fa099, 0x95f7997e, 0x623d7da8, + 0xf837889a, 0x97e32d77, 0x11ed935f, 0x16681281, + 0x0e358829, 0xc7e61fd6, 0x96dedfa1, 0x7858ba99, + 0x57f584a5, 0x1b227263, 0x9b83c3ff, 0x1ac24696, + 0xcdb30aeb, 0x532e3054, 0x8fd948e4, 0x6dbc3128, + 0x58ebf2ef, 0x34c6ffea, 0xfe28ed61, 0xee7c3c73, + 0x5d4a14d9, 0xe864b7e3, 0x42105d14, 0x203e13e0, + 0x45eee2b6, 0xa3aaabea, 0xdb6c4f15, 0xfacb4fd0, + 0xc742f442, 0xef6abbb5, 0x654f3b1d, 0x41cd2105, + 0xd81e799e, 0x86854dc7, 0xe44b476a, 0x3d816250, + 0xcf62a1f2, 0x5b8d2646, 0xfc8883a0, 0xc1c7b6a3, + 0x7f1524c3, 0x69cb7492, 0x47848a0b, 0x5692b285, + 0x095bbf00, 0xad19489d, 0x1462b174, 0x23820e00, + 0x58428d2a, 0x0c55f5ea, 0x1dadf43e, 0x233f7061, + 0x3372f092, 0x8d937e41, 0xd65fecf1, 0x6c223bdb, + 0x7cde3759, 0xcbee7460, 0x4085f2a7, 0xce77326e, + 0xa6078084, 0x19f8509e, 0xe8efd855, 0x61d99735, + 0xa969a7aa, 0xc50c06c2, 0x5a04abfc, 0x800bcadc, + 0x9e447a2e, 0xc3453484, 0xfdd56705, 0x0e1e9ec9, + 0xdb73dbd3, 0x105588cd, 0x675fda79, 0xe3674340, + 0xc5c43465, 0x713e38d8, 0x3d28f89e, 0xf16dff20, + 0x153e21e7, 0x8fb03d4a, 0xe6e39f2b, 0xdb83adf7 +}; + +CONSTANT_VK u32a c_sbox2[256] = +{ + 0xe93d5a68, 0x948140f7, 0xf64c261c, 0x94692934, + 0x411520f7, 0x7602d4f7, 0xbcf46b2e, 0xd4a20068, + 0xd4082471, 0x3320f46a, 0x43b7d4b7, 0x500061af, + 0x1e39f62e, 0x97244546, 0x14214f74, 0xbf8b8840, + 0x4d95fc1d, 0x96b591af, 0x70f4ddd3, 0x66a02f45, + 0xbfbc09ec, 0x03bd9785, 0x7fac6dd0, 0x31cb8504, + 0x96eb27b3, 0x55fd3941, 0xda2547e6, 0xabca0a9a, + 0x28507825, 0x530429f4, 0x0a2c86da, 0xe9b66dfb, + 0x68dc1462, 0xd7486900, 0x680ec0a4, 0x27a18dee, + 0x4f3ffea2, 0xe887ad8c, 0xb58ce006, 0x7af4d6b6, + 0xaace1e7c, 0xd3375fec, 0xce78a399, 0x406b2a42, + 0x20fe9e35, 0xd9f385b9, 0xee39d7ab, 0x3b124e8b, + 0x1dc9faf7, 0x4b6d1856, 0x26a36631, 0xeae397b2, + 0x3a6efa74, 0xdd5b4332, 0x6841e7f7, 0xca7820fb, + 0xfb0af54e, 0xd8feb397, 0x454056ac, 0xba489527, + 0x55533a3a, 0x20838d87, 0xfe6ba9b7, 0xd096954b, + 0x55a867bc, 0xa1159a58, 0xcca92963, 0x99e1db33, + 0xa62a4a56, 0x3f3125f9, 0x5ef47e1c, 0x9029317c, + 0xfdf8e802, 0x04272f70, 0x80bb155c, 0x05282ce3, + 0x95c11548, 0xe4c66d22, 0x48c1133f, 0xc70f86dc, + 0x07f9c9ee, 0x41041f0f, 0x404779a4, 0x5d886e17, + 0x325f51eb, 0xd59bc0d1, 0xf2bcc18f, 0x41113564, + 0x257b7834, 0x602a9c60, 0xdff8e8a3, 0x1f636c1b, + 0x0e12b4c2, 0x02e1329e, 0xaf664fd1, 0xcad18115, + 0x6b2395e0, 0x333e92e1, 0x3b240b62, 0xeebeb922, + 0x85b2a20e, 0xe6ba0d99, 0xde720c8c, 0x2da2f728, + 0xd0127845, 0x95b794fd, 0x647d0862, 0xe7ccf5f0, + 0x5449a36f, 0x877d48fa, 0xc39dfd27, 0xf33e8d1e, + 0x0a476341, 0x992eff74, 0x3a6f6eab, 0xf4f8fd37, + 0xa812dc60, 0xa1ebddf8, 0x991be14c, 0xdb6e6b0d, + 0xc67b5510, 0x6d672c37, 0x2765d43b, 0xdcd0e804, + 0xf1290dc7, 0xcc00ffa3, 0xb5390f92, 0x690fed0b, + 0x667b9ffb, 0xcedb7d9c, 0xa091cf0b, 0xd9155ea3, + 0xbb132f88, 0x515bad24, 0x7b9479bf, 0x763bd6eb, + 0x37392eb3, 0xcc115979, 0x8026e297, 0xf42e312d, + 0x6842ada7, 0xc66a2b3b, 0x12754ccc, 0x782ef11c, + 0x6a124237, 0xb79251e7, 0x06a1bbe6, 0x4bfb6350, + 0x1a6b1018, 0x11caedfa, 0x3d25bdd8, 0xe2e1c3c9, + 0x44421659, 0x0a121386, 0xd90cec6e, 0xd5abea2a, + 0x64af674e, 0xda86a85f, 0xbebfe988, 0x64e4c3fe, + 0x9dbc8057, 0xf0f7c086, 0x60787bf8, 0x6003604d, + 0xd1fd8346, 0xf6381fb0, 0x7745ae04, 0xd736fccc, + 0x83426b33, 0xf01eab71, 0xb0804187, 0x3c005e5f, + 0x77a057be, 0xbde8ae24, 0x55464299, 0xbf582e61, + 0x4e58f48f, 0xf2ddfda2, 0xf474ef38, 0x8789bdc2, + 0x5366f9c3, 0xc8b38e74, 0xb475f255, 0x46fcd9b9, + 0x7aeb2661, 0x8b1ddf84, 0x846a0e79, 0x915f95e2, + 0x466e598e, 0x20b45770, 0x8cd55591, 0xc902de4c, + 0xb90bace1, 0xbb8205d0, 0x11a86248, 0x7574a99e, + 0xb77f19b6, 0xe0a9dc09, 0x662d09a1, 0xc4324633, + 0xe85a1f02, 0x09f0be8c, 0x4a99a025, 0x1d6efe10, + 0x1ab93d1d, 0x0ba5a4df, 0xa186f20f, 0x2868f169, + 0xdcb7da83, 0x573906fe, 0xa1e2ce9b, 0x4fcd7f52, + 0x50115e01, 0xa70683fa, 0xa002b5c4, 0x0de6d027, + 0x9af88c27, 0x773f8641, 0xc3604c06, 0x61a806b5, + 0xf0177a28, 0xc0f586e0, 0x006058aa, 0x30dc7d62, + 0x11e69ed7, 0x2338ea63, 0x53c2dd94, 0xc2c21634, + 0xbbcbee56, 0x90bcb6de, 0xebfc7da1, 0xce591d76, + 0x6f05e409, 0x4b7c0188, 0x39720a3d, 0x7c927c24, + 0x86e3725f, 0x724d9db9, 0x1ac15bb4, 0xd39eb8fc, + 0xed545578, 0x08fca5b5, 0xd83d7cd3, 0x4dad0fc4, + 0x1e50ef5e, 0xb161e6f8, 0xa28514d9, 0x6c51133c, + 0x6fd5c7e7, 0x56e14ec4, 0x362abfce, 0xddc6c837, + 0xd79a3234, 0x92638212, 0x670efa8e, 0x406000e0 +}; + +CONSTANT_VK u32a c_sbox3[256] = +{ + 0x3a39ce37, 0xd3faf5cf, 0xabc27737, 0x5ac52d1b, + 0x5cb0679e, 0x4fa33742, 0xd3822740, 0x99bc9bbe, + 0xd5118e9d, 0xbf0f7315, 0xd62d1c7e, 0xc700c47b, + 0xb78c1b6b, 0x21a19045, 0xb26eb1be, 0x6a366eb4, + 0x5748ab2f, 0xbc946e79, 0xc6a376d2, 0x6549c2c8, + 0x530ff8ee, 0x468dde7d, 0xd5730a1d, 0x4cd04dc6, + 0x2939bbdb, 0xa9ba4650, 0xac9526e8, 0xbe5ee304, + 0xa1fad5f0, 0x6a2d519a, 0x63ef8ce2, 0x9a86ee22, + 0xc089c2b8, 0x43242ef6, 0xa51e03aa, 0x9cf2d0a4, + 0x83c061ba, 0x9be96a4d, 0x8fe51550, 0xba645bd6, + 0x2826a2f9, 0xa73a3ae1, 0x4ba99586, 0xef5562e9, + 0xc72fefd3, 0xf752f7da, 0x3f046f69, 0x77fa0a59, + 0x80e4a915, 0x87b08601, 0x9b09e6ad, 0x3b3ee593, + 0xe990fd5a, 0x9e34d797, 0x2cf0b7d9, 0x022b8b51, + 0x96d5ac3a, 0x017da67d, 0xd1cf3ed6, 0x7c7d2d28, + 0x1f9f25cf, 0xadf2b89b, 0x5ad6b472, 0x5a88f54c, + 0xe029ac71, 0xe019a5e6, 0x47b0acfd, 0xed93fa9b, + 0xe8d3c48d, 0x283b57cc, 0xf8d56629, 0x79132e28, + 0x785f0191, 0xed756055, 0xf7960e44, 0xe3d35e8c, + 0x15056dd4, 0x88f46dba, 0x03a16125, 0x0564f0bd, + 0xc3eb9e15, 0x3c9057a2, 0x97271aec, 0xa93a072a, + 0x1b3f6d9b, 0x1e6321f5, 0xf59c66fb, 0x26dcf319, + 0x7533d928, 0xb155fdf5, 0x03563482, 0x8aba3cbb, + 0x28517711, 0xc20ad9f8, 0xabcc5167, 0xccad925f, + 0x4de81751, 0x3830dc8e, 0x379d5862, 0x9320f991, + 0xea7a90c2, 0xfb3e7bce, 0x5121ce64, 0x774fbe32, + 0xa8b6e37e, 0xc3293d46, 0x48de5369, 0x6413e680, + 0xa2ae0810, 0xdd6db224, 0x69852dfd, 0x09072166, + 0xb39a460a, 0x6445c0dd, 0x586cdecf, 0x1c20c8ae, + 0x5bbef7dd, 0x1b588d40, 0xccd2017f, 0x6bb4e3bb, + 0xdda26a7e, 0x3a59ff45, 0x3e350a44, 0xbcb4cdd5, + 0x72eacea8, 0xfa6484bb, 0x8d6612ae, 0xbf3c6f47, + 0xd29be463, 0x542f5d9e, 0xaec2771b, 0xf64e6370, + 0x740e0d8d, 0xe75b1357, 0xf8721671, 0xaf537d5d, + 0x4040cb08, 0x4eb4e2cc, 0x34d2466a, 0x0115af84, + 0xe1b00428, 0x95983a1d, 0x06b89fb4, 0xce6ea048, + 0x6f3f3b82, 0x3520ab82, 0x011a1d4b, 0x277227f8, + 0x611560b1, 0xe7933fdc, 0xbb3a792b, 0x344525bd, + 0xa08839e1, 0x51ce794b, 0x2f32c9b7, 0xa01fbac9, + 0xe01cc87e, 0xbcc7d1f6, 0xcf0111c3, 0xa1e8aac7, + 0x1a908749, 0xd44fbd9a, 0xd0dadecb, 0xd50ada38, + 0x0339c32a, 0xc6913667, 0x8df9317c, 0xe0b12b4f, + 0xf79e59b7, 0x43f5bb3a, 0xf2d519ff, 0x27d9459c, + 0xbf97222c, 0x15e6fc2a, 0x0f91fc71, 0x9b941525, + 0xfae59361, 0xceb69ceb, 0xc2a86459, 0x12baa8d1, + 0xb6c1075e, 0xe3056a0c, 0x10d25065, 0xcb03a442, + 0xe0ec6e0e, 0x1698db3b, 0x4c98a0be, 0x3278e964, + 0x9f1f9532, 0xe0d392df, 0xd3a0342b, 0x8971f21e, + 0x1b0a7441, 0x4ba3348c, 0xc5be7120, 0xc37632d8, + 0xdf359f8d, 0x9b992f2e, 0xe60b6f47, 0x0fe3f11d, + 0xe54cda54, 0x1edad891, 0xce6279cf, 0xcd3e7e6f, + 0x1618b166, 0xfd2c1d05, 0x848fd2c5, 0xf6fb2299, + 0xf523f357, 0xa6327623, 0x93a83531, 0x56cccd02, + 0xacf08162, 0x5a75ebb5, 0x6e163697, 0x88d273cc, + 0xde966292, 0x81b949d0, 0x4c50901b, 0x71c65614, + 0xe6c6c7bd, 0x327a140a, 0x45e1d006, 0xc3f27b9a, + 0xc9aa53fd, 0x62a80f00, 0xbb25bfe2, 0x35bdd2f6, + 0x71126905, 0xb2040222, 0xb6cbcf7c, 0xcd769c2b, + 0x53113ec0, 0x1640e3d3, 0x38abbd60, 0x2547adf0, + 0xba38209c, 0xf746ce76, 0x77afa1c5, 0x20756060, + 0x85cbfe4e, 0x8ae88dd8, 0x7aaaf9b0, 0x4cf9aa7e, + 0x1948c25c, 0x02fb8a8c, 0x01c36ae4, 0xd6ebe1f9, + 0x90d4f869, 0xa65cdea0, 0x3f09252d, 0xc208e69f, + 0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6 +}; + +CONSTANT_VK u32a c_pbox[18] = +{ + 0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344, + 0xa4093822, 0x299f31d0, 0x082efa98, 0xec4e6c89, + 0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c, + 0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917, + 0x9216d5d9, 0x8979fb1b +}; + +CONSTANT_VK u8 c_bcrypt_base64_alphabet[64] = +{ + '.', '/', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', + 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', + 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', + 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' +}; + +// Yes, works only with CUDA atm + +#ifdef DYNAMIC_LOCAL +#define BCRYPT_AVOID_BANK_CONFLICTS +#endif + +#ifdef BCRYPT_AVOID_BANK_CONFLICTS + +// access pattern: minimize bank ID based on thread ID but thread ID is not saved from computation + +#define KEY32(lid,key) (((key) * FIXED_LOCAL_SIZE) + (lid)) + +DECLSPEC u32 GET_KEY32 (LOCAL_AS u32 *S, const u64 key) +{ + const u64 lid = get_local_id (0); + + return S[KEY32 (lid, key)]; +} + +DECLSPEC void SET_KEY32 (LOCAL_AS u32 *S, const u64 key, const u32 val) +{ + const u64 lid = get_local_id (0); + + S[KEY32 (lid, key)] = val; +} + +#undef KEY32 + +#else + +// access pattern: linear access with S offset already set to right offset based on thread ID saving it from computation +// makes sense if there are not thread ID's (for instance on CPU) + +DECLSPEC inline u32 GET_KEY32 (LOCAL_AS u32 *S, const u64 key) +{ + return S[key]; +} + +DECLSPEC inline void SET_KEY32 (LOCAL_AS u32 *S, const u64 key, const u32 val) +{ + S[key] = val; +} + +#endif + +#define BF_ROUND(L,R,N) \ +{ \ + u32 tmp; \ + \ + const u32 r0 = unpack_v8d_from_v32_S ((L)); \ + const u32 r1 = unpack_v8c_from_v32_S ((L)); \ + const u32 r2 = unpack_v8b_from_v32_S ((L)); \ + const u32 r3 = unpack_v8a_from_v32_S ((L)); \ + \ + tmp = GET_KEY32 (S0, r0); \ + tmp += GET_KEY32 (S1, r1); \ + tmp ^= GET_KEY32 (S2, r2); \ + tmp += GET_KEY32 (S3, r3); \ + \ + (R) ^= tmp ^ P[(N)]; \ +} + +#define BF_ENCRYPT(L,R) \ +{ \ + L ^= P[0]; \ + \ + BF_ROUND (L, R, 1); \ + BF_ROUND (R, L, 2); \ + BF_ROUND (L, R, 3); \ + BF_ROUND (R, L, 4); \ + BF_ROUND (L, R, 5); \ + BF_ROUND (R, L, 6); \ + BF_ROUND (L, R, 7); \ + BF_ROUND (R, L, 8); \ + BF_ROUND (L, R, 9); \ + BF_ROUND (R, L, 10); \ + BF_ROUND (L, R, 11); \ + BF_ROUND (R, L, 12); \ + BF_ROUND (L, R, 13); \ + BF_ROUND (R, L, 14); \ + BF_ROUND (L, R, 15); \ + BF_ROUND (R, L, 16); \ + \ + u32 tmp; \ + \ + tmp = R; \ + R = L; \ + L = tmp; \ + \ + L ^= P[17]; \ +} + +#ifdef DYNAMIC_LOCAL +extern __shared__ u32 S[]; +#endif + +DECLSPEC void expand_key (PRIVATE_AS u32 *E, PRIVATE_AS u32 *W, const int len) +{ + PRIVATE_AS u8 *E_ptr = (PRIVATE_AS u8 *) E; + PRIVATE_AS u8 *W_ptr = (PRIVATE_AS u8 *) W; + + for (int pos = 0; pos < 72; pos++) // pos++ is not a bug, we actually want that zero byte here + { + const int left = 72 - pos; + + const int sz = (len < left) ? len : left; // should be MIN() + + for (int i = 0; i < sz; i++) + { + E_ptr[pos + i] = W_ptr[i]; + } + + pos += sz; + } +} + +KERNEL_FQ KERNEL_FA void m33800_init (KERN_ATTR_TMPS (bcrypt_tmp_t)) +{ + /** + * base + */ + + const u64 gid = get_global_id (0); + const u64 lid = get_local_id (0); + + if (gid >= GID_CNT) return; + + const u32 pw_len = pws[gid].pw_len; + + u32 w[18]; + + w[ 0] = pws[gid].i[ 0]; + w[ 1] = pws[gid].i[ 1]; + w[ 2] = pws[gid].i[ 2]; + w[ 3] = pws[gid].i[ 3]; + w[ 4] = pws[gid].i[ 4]; + w[ 5] = pws[gid].i[ 5]; + w[ 6] = pws[gid].i[ 6]; + w[ 7] = pws[gid].i[ 7]; + w[ 8] = pws[gid].i[ 8]; + w[ 9] = pws[gid].i[ 9]; + w[10] = pws[gid].i[10]; + w[11] = pws[gid].i[11]; + w[12] = pws[gid].i[12]; + w[13] = pws[gid].i[13]; + w[14] = pws[gid].i[14]; + w[15] = pws[gid].i[15]; + w[16] = pws[gid].i[16]; + w[17] = pws[gid].i[17]; + + u32 E[18] = { 0 }; + + expand_key (E, w, pw_len); + + E[ 0] = hc_swap32_S (E[ 0]); + E[ 1] = hc_swap32_S (E[ 1]); + E[ 2] = hc_swap32_S (E[ 2]); + E[ 3] = hc_swap32_S (E[ 3]); + E[ 4] = hc_swap32_S (E[ 4]); + E[ 5] = hc_swap32_S (E[ 5]); + E[ 6] = hc_swap32_S (E[ 6]); + E[ 7] = hc_swap32_S (E[ 7]); + E[ 8] = hc_swap32_S (E[ 8]); + E[ 9] = hc_swap32_S (E[ 9]); + E[10] = hc_swap32_S (E[10]); + E[11] = hc_swap32_S (E[11]); + E[12] = hc_swap32_S (E[12]); + E[13] = hc_swap32_S (E[13]); + E[14] = hc_swap32_S (E[14]); + E[15] = hc_swap32_S (E[15]); + E[16] = hc_swap32_S (E[16]); + E[17] = hc_swap32_S (E[17]); + + for (u32 i = 0; i < 18; i++) + { + tmps[gid].E[i] = E[i]; + } + + /** + * salt + */ + + u32 salt_buf[4]; + + salt_buf[0] = salt_bufs[SALT_POS_HOST].salt_buf[0]; + salt_buf[1] = salt_bufs[SALT_POS_HOST].salt_buf[1]; + salt_buf[2] = salt_bufs[SALT_POS_HOST].salt_buf[2]; + salt_buf[3] = salt_bufs[SALT_POS_HOST].salt_buf[3]; + + u32 P[18]; + + for (u32 i = 0; i < 18; i++) + { + P[i] = c_pbox[i]; + } + + #ifdef DYNAMIC_LOCAL + // from host + #else + LOCAL_VK u32 S0_all[FIXED_LOCAL_SIZE][256]; + LOCAL_VK u32 S1_all[FIXED_LOCAL_SIZE][256]; + LOCAL_VK u32 S2_all[FIXED_LOCAL_SIZE][256]; + LOCAL_VK u32 S3_all[FIXED_LOCAL_SIZE][256]; + #endif + + #ifdef BCRYPT_AVOID_BANK_CONFLICTS + LOCAL_AS u32 *S0 = S + (FIXED_LOCAL_SIZE * 256 * 0); + LOCAL_AS u32 *S1 = S + (FIXED_LOCAL_SIZE * 256 * 1); + LOCAL_AS u32 *S2 = S + (FIXED_LOCAL_SIZE * 256 * 2); + LOCAL_AS u32 *S3 = S + (FIXED_LOCAL_SIZE * 256 * 3); + #else + LOCAL_AS u32 *S0 = S0_all[lid]; + LOCAL_AS u32 *S1 = S1_all[lid]; + LOCAL_AS u32 *S2 = S2_all[lid]; + LOCAL_AS u32 *S3 = S3_all[lid]; + #endif + + for (u32 i = 0; i < 256; i++) + { + SET_KEY32 (S0, i, c_sbox0[i]); + SET_KEY32 (S1, i, c_sbox1[i]); + SET_KEY32 (S2, i, c_sbox2[i]); + SET_KEY32 (S3, i, c_sbox3[i]); + } + + // expandstate + + for (u32 i = 0; i < 18; i++) + { + P[i] ^= E[i]; + } + + u32 L0 = 0; + u32 R0 = 0; + + for (u32 i = 0; i < 18; i += 2) + { + L0 ^= salt_buf[(i & 2) + 0]; + R0 ^= salt_buf[(i & 2) + 1]; + + BF_ENCRYPT (L0, R0); + + P[i + 0] = L0; + P[i + 1] = R0; + } + + for (u32 i = 0; i < 256; i += 4) + { + L0 ^= salt_buf[2]; + R0 ^= salt_buf[3]; + + BF_ENCRYPT (L0, R0); + + SET_KEY32 (S0, i + 0, L0); + SET_KEY32 (S0, i + 1, R0); + + L0 ^= salt_buf[0]; + R0 ^= salt_buf[1]; + + BF_ENCRYPT (L0, R0); + + SET_KEY32 (S0, i + 2, L0); + SET_KEY32 (S0, i + 3, R0); + } + + for (u32 i = 0; i < 256; i += 4) + { + L0 ^= salt_buf[2]; + R0 ^= salt_buf[3]; + + BF_ENCRYPT (L0, R0); + + SET_KEY32 (S1, i + 0, L0); + SET_KEY32 (S1, i + 1, R0); + + L0 ^= salt_buf[0]; + R0 ^= salt_buf[1]; + + BF_ENCRYPT (L0, R0); + + SET_KEY32 (S1, i + 2, L0); + SET_KEY32 (S1, i + 3, R0); + } + + for (u32 i = 0; i < 256; i += 4) + { + L0 ^= salt_buf[2]; + R0 ^= salt_buf[3]; + + BF_ENCRYPT (L0, R0); + + SET_KEY32 (S2, i + 0, L0); + SET_KEY32 (S2, i + 1, R0); + + L0 ^= salt_buf[0]; + R0 ^= salt_buf[1]; + + BF_ENCRYPT (L0, R0); + + SET_KEY32 (S2, i + 2, L0); + SET_KEY32 (S2, i + 3, R0); + } + + for (u32 i = 0; i < 256; i += 4) + { + L0 ^= salt_buf[2]; + R0 ^= salt_buf[3]; + + BF_ENCRYPT (L0, R0); + + SET_KEY32 (S3, i + 0, L0); + SET_KEY32 (S3, i + 1, R0); + + L0 ^= salt_buf[0]; + R0 ^= salt_buf[1]; + + BF_ENCRYPT (L0, R0); + + SET_KEY32 (S3, i + 2, L0); + SET_KEY32 (S3, i + 3, R0); + } + + // store + + for (u32 i = 0; i < 18; i++) + { + tmps[gid].P[i] = P[i]; + } + + for (u32 i = 0; i < 256; i++) + { + tmps[gid].S0[i] = GET_KEY32 (S0, i); + tmps[gid].S1[i] = GET_KEY32 (S1, i); + tmps[gid].S2[i] = GET_KEY32 (S2, i); + tmps[gid].S3[i] = GET_KEY32 (S3, i); + } +} + +KERNEL_FQ KERNEL_FA void m33800_loop (KERN_ATTR_TMPS (bcrypt_tmp_t)) +{ + /** + * base + */ + + const u64 gid = get_global_id (0); + const u64 lid = get_local_id (0); + + if (gid >= GID_CNT) return; + + // load + + u32 E[18]; + + for (u32 i = 0; i < 18; i++) + { + E[i] = tmps[gid].E[i]; + } + + u32 P[18]; + + for (u32 i = 0; i < 18; i++) + { + P[i] = tmps[gid].P[i]; + } + + #ifdef DYNAMIC_LOCAL + // from host + #else + LOCAL_VK u32 S0_all[FIXED_LOCAL_SIZE][256]; + LOCAL_VK u32 S1_all[FIXED_LOCAL_SIZE][256]; + LOCAL_VK u32 S2_all[FIXED_LOCAL_SIZE][256]; + LOCAL_VK u32 S3_all[FIXED_LOCAL_SIZE][256]; + #endif + + #ifdef BCRYPT_AVOID_BANK_CONFLICTS + LOCAL_AS u32 *S0 = S + (FIXED_LOCAL_SIZE * 256 * 0); + LOCAL_AS u32 *S1 = S + (FIXED_LOCAL_SIZE * 256 * 1); + LOCAL_AS u32 *S2 = S + (FIXED_LOCAL_SIZE * 256 * 2); + LOCAL_AS u32 *S3 = S + (FIXED_LOCAL_SIZE * 256 * 3); + #else + LOCAL_AS u32 *S0 = S0_all[lid]; + LOCAL_AS u32 *S1 = S1_all[lid]; + LOCAL_AS u32 *S2 = S2_all[lid]; + LOCAL_AS u32 *S3 = S3_all[lid]; + #endif + + for (u32 i = 0; i < 256; i++) + { + SET_KEY32 (S0, i, tmps[gid].S0[i]); + SET_KEY32 (S1, i, tmps[gid].S1[i]); + SET_KEY32 (S2, i, tmps[gid].S2[i]); + SET_KEY32 (S3, i, tmps[gid].S3[i]); + } + + /** + * salt + */ + + u32 salt_buf[4]; + + salt_buf[0] = salt_bufs[SALT_POS_HOST].salt_buf[0]; + salt_buf[1] = salt_bufs[SALT_POS_HOST].salt_buf[1]; + salt_buf[2] = salt_bufs[SALT_POS_HOST].salt_buf[2]; + salt_buf[3] = salt_bufs[SALT_POS_HOST].salt_buf[3]; + + /** + * main loop + */ + + u32 L0; + u32 R0; + + for (u32 i = 0; i < LOOP_CNT; i++) + { + for (u32 i = 0; i < 18; i++) + { + P[i] ^= E[i]; + } + + L0 = 0; + R0 = 0; + + for (u32 i = 0; i < 9; i++) + { + BF_ENCRYPT (L0, R0); + + P[i * 2 + 0] = L0; + P[i * 2 + 1] = R0; + } + + for (u32 i = 0; i < 256; i += 2) + { + BF_ENCRYPT (L0, R0); + + SET_KEY32 (S0, i + 0, L0); + SET_KEY32 (S0, i + 1, R0); + } + + for (u32 i = 0; i < 256; i += 2) + { + BF_ENCRYPT (L0, R0); + + SET_KEY32 (S1, i + 0, L0); + SET_KEY32 (S1, i + 1, R0); + } + + for (u32 i = 0; i < 256; i += 2) + { + BF_ENCRYPT (L0, R0); + + SET_KEY32 (S2, i + 0, L0); + SET_KEY32 (S2, i + 1, R0); + } + + for (u32 i = 0; i < 256; i += 2) + { + BF_ENCRYPT (L0, R0); + + SET_KEY32 (S3, i + 0, L0); + SET_KEY32 (S3, i + 1, R0); + } + + P[ 0] ^= salt_buf[0]; + P[ 1] ^= salt_buf[1]; + P[ 2] ^= salt_buf[2]; + P[ 3] ^= salt_buf[3]; + P[ 4] ^= salt_buf[0]; + P[ 5] ^= salt_buf[1]; + P[ 6] ^= salt_buf[2]; + P[ 7] ^= salt_buf[3]; + P[ 8] ^= salt_buf[0]; + P[ 9] ^= salt_buf[1]; + P[10] ^= salt_buf[2]; + P[11] ^= salt_buf[3]; + P[12] ^= salt_buf[0]; + P[13] ^= salt_buf[1]; + P[14] ^= salt_buf[2]; + P[15] ^= salt_buf[3]; + P[16] ^= salt_buf[0]; + P[17] ^= salt_buf[1]; + + L0 = 0; + R0 = 0; + + for (u32 i = 0; i < 9; i++) + { + BF_ENCRYPT (L0, R0); + + P[i * 2 + 0] = L0; + P[i * 2 + 1] = R0; + } + + for (u32 i = 0; i < 256; i += 2) + { + BF_ENCRYPT (L0, R0); + + SET_KEY32 (S0, i + 0, L0); + SET_KEY32 (S0, i + 1, R0); + } + + for (u32 i = 0; i < 256; i += 2) + { + BF_ENCRYPT (L0, R0); + + SET_KEY32 (S1, i + 0, L0); + SET_KEY32 (S1, i + 1, R0); + } + + for (u32 i = 0; i < 256; i += 2) + { + BF_ENCRYPT (L0, R0); + + SET_KEY32 (S2, i + 0, L0); + SET_KEY32 (S2, i + 1, R0); + } + + for (u32 i = 0; i < 256; i += 2) + { + BF_ENCRYPT (L0, R0); + + SET_KEY32 (S3, i + 0, L0); + SET_KEY32 (S3, i + 1, R0); + } + } + + // store + + for (u32 i = 0; i < 18; i++) + { + tmps[gid].P[i] = P[i]; + } + + for (u32 i = 0; i < 256; i++) + { + tmps[gid].S0[i] = GET_KEY32 (S0, i); + tmps[gid].S1[i] = GET_KEY32 (S1, i); + tmps[gid].S2[i] = GET_KEY32 (S2, i); + tmps[gid].S3[i] = GET_KEY32 (S3, i); + } +} + +KERNEL_FQ KERNEL_FA void m33800_init2 (KERN_ATTR_TMPS (bcrypt_tmp_t)) +{ + /** + * base + */ + + const u64 gid = get_global_id (0); + const u64 lid = get_local_id (0); + + if (gid >= GID_CNT) return; + + const u32 pw_len = 60; + + /** + * calculate final inner/first bcrypt + */ + u32 P[18]; + + for (u32 i = 0; i < 18; i++) + { + P[i] = tmps[gid].P[i]; + } + + #ifdef DYNAMIC_LOCAL + // from host + #else + LOCAL_VK u32 S0_all[FIXED_LOCAL_SIZE][256]; + LOCAL_VK u32 S1_all[FIXED_LOCAL_SIZE][256]; + LOCAL_VK u32 S2_all[FIXED_LOCAL_SIZE][256]; + LOCAL_VK u32 S3_all[FIXED_LOCAL_SIZE][256]; + #endif + + #ifdef BCRYPT_AVOID_BANK_CONFLICTS + LOCAL_AS u32 *S0 = S + (FIXED_LOCAL_SIZE * 256 * 0); + LOCAL_AS u32 *S1 = S + (FIXED_LOCAL_SIZE * 256 * 1); + LOCAL_AS u32 *S2 = S + (FIXED_LOCAL_SIZE * 256 * 2); + LOCAL_AS u32 *S3 = S + (FIXED_LOCAL_SIZE * 256 * 3); + #else + LOCAL_AS u32 *S0 = S0_all[lid]; + LOCAL_AS u32 *S1 = S1_all[lid]; + LOCAL_AS u32 *S2 = S2_all[lid]; + LOCAL_AS u32 *S3 = S3_all[lid]; + #endif + + for (u32 i = 0; i < 256; i++) + { + SET_KEY32 (S0, i, tmps[gid].S0[i]); + SET_KEY32 (S1, i, tmps[gid].S1[i]); + SET_KEY32 (S2, i, tmps[gid].S2[i]); + SET_KEY32 (S3, i, tmps[gid].S3[i]); + } + + u32 L0; + u32 R0; + + L0 = BCRYPTM_0; + R0 = BCRYPTM_1; + + for (u32 i = 0; i < 64; i++) + { + BF_ENCRYPT (L0, R0); + } + + const u32 r0 = L0; + const u32 r1 = R0; + + L0 = BCRYPTM_2; + R0 = BCRYPTM_3; + + for (u32 i = 0; i < 64; i++) + { + BF_ENCRYPT (L0, R0); + } + + const u32 r2 = L0; + const u32 r3 = R0; + + L0 = BCRYPTM_4; + R0 = BCRYPTM_5; + + for (u32 i = 0; i < 64; i++) + { + BF_ENCRYPT (L0, R0); + } + + const u32 r4 = L0; + const u32 r5 = R0; + + u32 w[18]; + + /** + * set first bcrypt as input for second bcrypt + */ + + //put in the saved beginning and salt of original hash + w[ 0] = salt_bufs[SALT_POS_HOST].salt_buf_pc[ 0]; + w[ 1] = salt_bufs[SALT_POS_HOST].salt_buf_pc[ 1]; + w[ 2] = salt_bufs[SALT_POS_HOST].salt_buf_pc[ 2]; + w[ 3] = salt_bufs[SALT_POS_HOST].salt_buf_pc[ 3]; + w[ 4] = salt_bufs[SALT_POS_HOST].salt_buf_pc[ 4]; + w[ 5] = salt_bufs[SALT_POS_HOST].salt_buf_pc[ 5]; + w[ 6] = salt_bufs[SALT_POS_HOST].salt_buf_pc[ 6]; + //w[ 7] = salt_bufs[SALT_POS_HOST].salt_buf_pc[ 7]; //here for logic (overwritten in next step) + + //now fill in base64; last Byte is zeroed (--> 0x00000F00 not 0x00000FC0) + w[ 7] = salt_bufs[SALT_POS_HOST].salt_buf_pc[ 7] ^ (c_bcrypt_base64_alphabet[(r0&0xFC000000)>>26] << 8) ^ (c_bcrypt_base64_alphabet[(r0&0x03F00000)>> 20] << 16) ^ (c_bcrypt_base64_alphabet[(r0&0x000FC000)>>14] << 24); + w[ 8] = c_bcrypt_base64_alphabet[(r0&0x00003F00)>> 8] ^ (c_bcrypt_base64_alphabet[(r0&0x000000FC)>> 2] << 8) ^ (c_bcrypt_base64_alphabet[(r0&0x00000003)<< 4 ^ (r1&0xF0000000)>>28] << 16) ^ (c_bcrypt_base64_alphabet[(r1&0x0FC00000)>>22] << 24); + w[ 9] = c_bcrypt_base64_alphabet[(r1&0x003F0000)>>16] ^ (c_bcrypt_base64_alphabet[(r1&0x0000FC00)>>10] << 8) ^ (c_bcrypt_base64_alphabet[(r1&0x000003F0)>> 4] << 16) ^ (c_bcrypt_base64_alphabet[(r1&0x0000000F)<< 2 ^ (r2&0xC0000000)>>30] << 24); + w[10] = c_bcrypt_base64_alphabet[(r2&0x3F000000)>>24] ^ (c_bcrypt_base64_alphabet[(r2&0x00FC0000)>>18] << 8) ^ (c_bcrypt_base64_alphabet[(r2&0x0003F000)>>12] << 16) ^ (c_bcrypt_base64_alphabet[(r2&0x00000FC0)>> 6] << 24); + w[11] = c_bcrypt_base64_alphabet[(r2&0x0000003F) ] ^ (c_bcrypt_base64_alphabet[(r3&0xFC000000)>>26] << 8) ^ (c_bcrypt_base64_alphabet[(r3&0x03F00000)>>20] << 16) ^ (c_bcrypt_base64_alphabet[(r3&0x000FC000)>>14] << 24); + w[12] = c_bcrypt_base64_alphabet[(r3&0x00003F00)>> 8] ^ (c_bcrypt_base64_alphabet[(r3&0x000000FC)>> 2] << 8) ^ (c_bcrypt_base64_alphabet[(r3&0x00000003)<< 4 ^ (r4&0xF0000000)>>28] << 16) ^ (c_bcrypt_base64_alphabet[(r4&0x0FC00000)>>22] << 24); + w[13] = c_bcrypt_base64_alphabet[(r4&0x003F0000)>>16] ^ (c_bcrypt_base64_alphabet[(r4&0x0000FC00)>>10] << 8) ^ (c_bcrypt_base64_alphabet[(r4&0x000003F0)>> 4] << 16) ^ (c_bcrypt_base64_alphabet[(r4&0x0000000F)<< 2 ^ (r5&0xC0000000)>>30] << 24); + w[14] = c_bcrypt_base64_alphabet[(r5&0x3F000000)>>24] ^ (c_bcrypt_base64_alphabet[(r5&0x00FC0000)>>18] << 8) ^ (c_bcrypt_base64_alphabet[(r5&0x0003F000)>>12] << 16) ^ (c_bcrypt_base64_alphabet[(r5&0x00000F00)>> 6] << 24); + w[15] = 0; + w[16] = 0; + w[17] = 0; + + u32 E[18] = { 0 }; + + expand_key (E, w, pw_len); + + E[ 0] = hc_swap32_S (E[ 0]); + E[ 1] = hc_swap32_S (E[ 1]); + E[ 2] = hc_swap32_S (E[ 2]); + E[ 3] = hc_swap32_S (E[ 3]); + E[ 4] = hc_swap32_S (E[ 4]); + E[ 5] = hc_swap32_S (E[ 5]); + E[ 6] = hc_swap32_S (E[ 6]); + E[ 7] = hc_swap32_S (E[ 7]); + E[ 8] = hc_swap32_S (E[ 8]); + E[ 9] = hc_swap32_S (E[ 9]); + E[10] = hc_swap32_S (E[10]); + E[11] = hc_swap32_S (E[11]); + E[12] = hc_swap32_S (E[12]); + E[13] = hc_swap32_S (E[13]); + E[14] = hc_swap32_S (E[14]); + E[15] = hc_swap32_S (E[15]); + E[16] = hc_swap32_S (E[16]); + E[17] = hc_swap32_S (E[17]); + + for (u32 i = 0; i < 18; i++) + { + tmps[gid].E[i] = E[i]; + } + + /** + * salt + */ + + u32 salt_buf[4]; + + salt_buf[0] = salt_bufs[SALT_POS_HOST].salt_buf[0]; + salt_buf[1] = salt_bufs[SALT_POS_HOST].salt_buf[1]; + salt_buf[2] = salt_bufs[SALT_POS_HOST].salt_buf[2]; + salt_buf[3] = salt_bufs[SALT_POS_HOST].salt_buf[3]; + + for (u32 i = 0; i < 18; i++) + { + P[i] = c_pbox[i]; + } + + + #ifdef BCRYPT_AVOID_BANK_CONFLICTS + S0 = S + (FIXED_LOCAL_SIZE * 256 * 0); + S1 = S + (FIXED_LOCAL_SIZE * 256 * 1); + S2 = S + (FIXED_LOCAL_SIZE * 256 * 2); + S3 = S + (FIXED_LOCAL_SIZE * 256 * 3); + #else + S0 = S0_all[lid]; + S1 = S1_all[lid]; + S2 = S2_all[lid]; + S3 = S3_all[lid]; + #endif + + for (u32 i = 0; i < 256; i++) + { + SET_KEY32 (S0, i, c_sbox0[i]); + SET_KEY32 (S1, i, c_sbox1[i]); + SET_KEY32 (S2, i, c_sbox2[i]); + SET_KEY32 (S3, i, c_sbox3[i]); + } + + // expandstate + + for (u32 i = 0; i < 18; i++) + { + P[i] ^= E[i]; + } + + L0 = 0; + R0 = 0; + + for (u32 i = 0; i < 18; i += 2) + { + L0 ^= salt_buf[(i & 2) + 0]; + R0 ^= salt_buf[(i & 2) + 1]; + + BF_ENCRYPT (L0, R0); + + P[i + 0] = L0; + P[i + 1] = R0; + } + + for (u32 i = 0; i < 256; i += 4) + { + L0 ^= salt_buf[2]; + R0 ^= salt_buf[3]; + + BF_ENCRYPT (L0, R0); + + SET_KEY32 (S0, i + 0, L0); + SET_KEY32 (S0, i + 1, R0); + + L0 ^= salt_buf[0]; + R0 ^= salt_buf[1]; + + BF_ENCRYPT (L0, R0); + + SET_KEY32 (S0, i + 2, L0); + SET_KEY32 (S0, i + 3, R0); + } + + for (u32 i = 0; i < 256; i += 4) + { + L0 ^= salt_buf[2]; + R0 ^= salt_buf[3]; + + BF_ENCRYPT (L0, R0); + + SET_KEY32 (S1, i + 0, L0); + SET_KEY32 (S1, i + 1, R0); + + L0 ^= salt_buf[0]; + R0 ^= salt_buf[1]; + + BF_ENCRYPT (L0, R0); + + SET_KEY32 (S1, i + 2, L0); + SET_KEY32 (S1, i + 3, R0); + } + + for (u32 i = 0; i < 256; i += 4) + { + L0 ^= salt_buf[2]; + R0 ^= salt_buf[3]; + + BF_ENCRYPT (L0, R0); + + SET_KEY32 (S2, i + 0, L0); + SET_KEY32 (S2, i + 1, R0); + + L0 ^= salt_buf[0]; + R0 ^= salt_buf[1]; + + BF_ENCRYPT (L0, R0); + + SET_KEY32 (S2, i + 2, L0); + SET_KEY32 (S2, i + 3, R0); + } + + for (u32 i = 0; i < 256; i += 4) + { + L0 ^= salt_buf[2]; + R0 ^= salt_buf[3]; + + BF_ENCRYPT (L0, R0); + + SET_KEY32 (S3, i + 0, L0); + SET_KEY32 (S3, i + 1, R0); + + L0 ^= salt_buf[0]; + R0 ^= salt_buf[1]; + + BF_ENCRYPT (L0, R0); + + SET_KEY32 (S3, i + 2, L0); + SET_KEY32 (S3, i + 3, R0); + } + + // store + + for (u32 i = 0; i < 18; i++) + { + tmps[gid].P[i] = P[i]; + } + + for (u32 i = 0; i < 256; i++) + { + tmps[gid].S0[i] = GET_KEY32 (S0, i); + tmps[gid].S1[i] = GET_KEY32 (S1, i); + tmps[gid].S2[i] = GET_KEY32 (S2, i); + tmps[gid].S3[i] = GET_KEY32 (S3, i); + } +} + +KERNEL_FQ KERNEL_FA void m33800_loop2 (KERN_ATTR_TMPS (bcrypt_tmp_t)) +{ + // the second loop is the same as the first one, only different "password" in init2 +#if defined IS_CUDA || defined IS_HIP + m33800_loop( + pws, + g_rules_buf, + combs_buf, + g_bfs_buf, + tmps, + hooks, + bitmaps_buf_s1_a, + bitmaps_buf_s1_b, + bitmaps_buf_s1_c, + bitmaps_buf_s1_d, + bitmaps_buf_s2_a, + bitmaps_buf_s2_b, + bitmaps_buf_s2_c, + bitmaps_buf_s2_d, + plains_buf, + digests_buf, + hashes_shown, + salt_bufs, + esalt_bufs, + d_return_buf, + d_extra0_buf, + d_extra1_buf, + d_extra2_buf, + d_extra3_buf, + kernel_param + ); +#else + m33800_loop( + pws, + rules_buf, + combs_buf, + bfs_buf, + tmps, + hooks, + bitmaps_buf_s1_a, + bitmaps_buf_s1_b, + bitmaps_buf_s1_c, + bitmaps_buf_s1_d, + bitmaps_buf_s2_a, + bitmaps_buf_s2_b, + bitmaps_buf_s2_c, + bitmaps_buf_s2_d, + plains_buf, + digests_buf, + hashes_shown, + salt_bufs, + esalt_bufs, + d_return_buf, + d_extra0_buf, + d_extra1_buf, + d_extra2_buf, + d_extra3_buf, + kernel_param + ); +#endif +} + +KERNEL_FQ KERNEL_FA void m33800_comp (KERN_ATTR_TMPS (bcrypt_tmp_t)) +{ + /** + * base + */ + + const u64 gid = get_global_id (0); + const u64 lid = get_local_id (0); + + if (gid >= GID_CNT) return; + + // load + + u32 P[18]; + + for (u32 i = 0; i < 18; i++) + { + P[i] = tmps[gid].P[i]; + } + + #ifdef DYNAMIC_LOCAL + // from host + #else + LOCAL_VK u32 S0_all[FIXED_LOCAL_SIZE][256]; + LOCAL_VK u32 S1_all[FIXED_LOCAL_SIZE][256]; + LOCAL_VK u32 S2_all[FIXED_LOCAL_SIZE][256]; + LOCAL_VK u32 S3_all[FIXED_LOCAL_SIZE][256]; + #endif + + #ifdef BCRYPT_AVOID_BANK_CONFLICTS + LOCAL_AS u32 *S0 = S + (FIXED_LOCAL_SIZE * 256 * 0); + LOCAL_AS u32 *S1 = S + (FIXED_LOCAL_SIZE * 256 * 1); + LOCAL_AS u32 *S2 = S + (FIXED_LOCAL_SIZE * 256 * 2); + LOCAL_AS u32 *S3 = S + (FIXED_LOCAL_SIZE * 256 * 3); + #else + LOCAL_AS u32 *S0 = S0_all[lid]; + LOCAL_AS u32 *S1 = S1_all[lid]; + LOCAL_AS u32 *S2 = S2_all[lid]; + LOCAL_AS u32 *S3 = S3_all[lid]; + #endif + + for (u32 i = 0; i < 256; i++) + { + SET_KEY32 (S0, i, tmps[gid].S0[i]); + SET_KEY32 (S1, i, tmps[gid].S1[i]); + SET_KEY32 (S2, i, tmps[gid].S2[i]); + SET_KEY32 (S3, i, tmps[gid].S3[i]); + } + + /** + * main + */ + + u32 L0; + u32 R0; + + L0 = BCRYPTM_0; + R0 = BCRYPTM_1; + + for (u32 i = 0; i < 64; i++) + { + BF_ENCRYPT (L0, R0); + } + + const u32 r0 = L0; + const u32 r1 = R0; + + L0 = BCRYPTM_2; + R0 = BCRYPTM_3; + + for (u32 i = 0; i < 64; i++) + { + BF_ENCRYPT (L0, R0); + } + + const u32 r2 = L0; + const u32 r3 = R0; + + /* + e = L0; + f = R0; + + f &= ~0xff; // its just 23 not 24 ! + */ + + #define il_pos 0 + + #ifdef KERNEL_STATIC + #include COMPARE_M + #endif +} diff --git a/OpenCL/m70000-pure.cl b/OpenCL/m70000-pure.cl new file mode 100644 index 000000000..70bfd8d61 --- /dev/null +++ b/OpenCL/m70000-pure.cl @@ -0,0 +1,69 @@ +/** + * Author......: See docs/credits.txt + * License.....: MIT + */ + +#ifdef KERNEL_STATIC +#include M2S(INCLUDE_PATH/inc_vendor.h) +#include M2S(INCLUDE_PATH/inc_types.h) +#include M2S(INCLUDE_PATH/inc_platform.cl) +#include M2S(INCLUDE_PATH/inc_common.cl) +#endif + +#define COMPARE_S M2S(INCLUDE_PATH/inc_comp_single.cl) +#define COMPARE_M M2S(INCLUDE_PATH/inc_comp_multi.cl) + +typedef struct +{ + // input + + u32 pw_buf[64]; + u32 pw_len; + + // output + + u32 h[64]; + +} argon2_reference_tmp_t; + +KERNEL_FQ KERNEL_FA void m70000_init (KERN_ATTR_TMPS (argon2_reference_tmp_t)) +{ + const u64 gid = get_global_id (0); + + if (gid >= GID_CNT) return; + + const u32 pw_len = pws[gid].pw_len; + + for (u32 idx = 0; idx < 64; idx++) + { + tmps[gid].pw_buf[idx] = pws[gid].i[idx]; + } + + tmps[gid].pw_len = pw_len; +} + +KERNEL_FQ KERNEL_FA void m70000_loop (KERN_ATTR_TMPS (argon2_reference_tmp_t)) +{ +} + +KERNEL_FQ KERNEL_FA void m70000_comp (KERN_ATTR_TMPS (argon2_reference_tmp_t)) +{ + /** + * base + */ + + const u64 gid = get_global_id (0); + + if (gid >= GID_CNT) return; + + const u32 r0 = tmps[gid].h[0]; + const u32 r1 = tmps[gid].h[1]; + const u32 r2 = tmps[gid].h[2]; + const u32 r3 = tmps[gid].h[3]; + + #define il_pos 0 + + #ifdef KERNEL_STATIC + #include COMPARE_M + #endif +} diff --git a/OpenCL/m70100-pure.cl b/OpenCL/m70100-pure.cl new file mode 100644 index 000000000..38b603457 --- /dev/null +++ b/OpenCL/m70100-pure.cl @@ -0,0 +1,192 @@ +/** + * Author......: See docs/credits.txt + * License.....: MIT + */ + +#ifdef KERNEL_STATIC +#include M2S(INCLUDE_PATH/inc_vendor.h) +#include M2S(INCLUDE_PATH/inc_types.h) +#include M2S(INCLUDE_PATH/inc_platform.cl) +#include M2S(INCLUDE_PATH/inc_common.cl) +#include M2S(INCLUDE_PATH/inc_hash_sha256.cl) +#endif + +#define COMPARE_S M2S(INCLUDE_PATH/inc_comp_single.cl) +#define COMPARE_M M2S(INCLUDE_PATH/inc_comp_multi.cl) + +#define SCRYPT_R_MAX 16 +#define SCRYPT_P_MAX 16 + +#define SCRYPT_TMP_SIZE (128ULL * SCRYPT_R_MAX * SCRYPT_P_MAX) +#define SCRYPT_TMP_SIZE4 (SCRYPT_TMP_SIZE / 4) + +typedef struct +{ + u32 P[SCRYPT_TMP_SIZE4]; + +} scrypt_tmp_t; + +KERNEL_FQ KERNEL_FA void m70100_init (KERN_ATTR_TMPS (scrypt_tmp_t)) +{ + /** + * base + */ + + const u64 gid = get_global_id (0); + + if (gid >= GID_CNT) return; + + sha256_hmac_ctx_t sha256_hmac_ctx; + + sha256_hmac_init_global_swap (&sha256_hmac_ctx, pws[gid].i, pws[gid].pw_len); + + sha256_hmac_update_global_swap (&sha256_hmac_ctx, salt_bufs[SALT_POS_HOST].salt_buf, salt_bufs[SALT_POS_HOST].salt_len); + + u32 r = salt_bufs[SALT_POS_HOST].scrypt_r; + u32 p = salt_bufs[SALT_POS_HOST].scrypt_p; + + u32 chunk_bytes = 64 * r * 2; + + u32 x_bytes = chunk_bytes * p; + + for (u32 i = 0, j = 0, k = 1; i < x_bytes; i += 32, j += 8, k += 1) + { + sha256_hmac_ctx_t sha256_hmac_ctx2 = sha256_hmac_ctx; + + u32 w0[4]; + u32 w1[4]; + u32 w2[4]; + u32 w3[4]; + + w0[0] = k; + w0[1] = 0; + w0[2] = 0; + w0[3] = 0; + w1[0] = 0; + w1[1] = 0; + w1[2] = 0; + w1[3] = 0; + w2[0] = 0; + w2[1] = 0; + w2[2] = 0; + w2[3] = 0; + w3[0] = 0; + w3[1] = 0; + w3[2] = 0; + w3[3] = 0; + + sha256_hmac_update_64 (&sha256_hmac_ctx2, w0, w1, w2, w3, 4); + + sha256_hmac_final (&sha256_hmac_ctx2); + + u32 digest[8]; + + digest[0] = sha256_hmac_ctx2.opad.h[0]; + digest[1] = sha256_hmac_ctx2.opad.h[1]; + digest[2] = sha256_hmac_ctx2.opad.h[2]; + digest[3] = sha256_hmac_ctx2.opad.h[3]; + digest[4] = sha256_hmac_ctx2.opad.h[4]; + digest[5] = sha256_hmac_ctx2.opad.h[5]; + digest[6] = sha256_hmac_ctx2.opad.h[6]; + digest[7] = sha256_hmac_ctx2.opad.h[7]; + + tmps[gid].P[j + 0] = hc_swap32_S (digest[0]); + tmps[gid].P[j + 1] = hc_swap32_S (digest[1]); + tmps[gid].P[j + 2] = hc_swap32_S (digest[2]); + tmps[gid].P[j + 3] = hc_swap32_S (digest[3]); + tmps[gid].P[j + 4] = hc_swap32_S (digest[4]); + tmps[gid].P[j + 5] = hc_swap32_S (digest[5]); + tmps[gid].P[j + 6] = hc_swap32_S (digest[6]); + tmps[gid].P[j + 7] = hc_swap32_S (digest[7]); + } +} + +KERNEL_FQ KERNEL_FA void m70100_loop (KERN_ATTR_TMPS (scrypt_tmp_t)) +{ +} + +KERNEL_FQ KERNEL_FA void m70100_comp (KERN_ATTR_TMPS (scrypt_tmp_t)) +{ + /** + * base + */ + + const u64 gid = get_global_id (0); + const u64 lid = get_local_id (0); + + if (gid >= GID_CNT) return; + + /** + * 2nd pbkdf2, creates B + */ + + u32 w0[4]; + u32 w1[4]; + u32 w2[4]; + u32 w3[4]; + + sha256_hmac_ctx_t ctx; + + sha256_hmac_init_global_swap (&ctx, pws[gid].i, pws[gid].pw_len); + + u32 r = salt_bufs[SALT_POS_HOST].scrypt_r; + u32 p = salt_bufs[SALT_POS_HOST].scrypt_p; + + u32 chunk_bytes = 64 * r * 2; + + u32 x_bytes = chunk_bytes * p; + + for (u32 i = 0, j = 0; i < x_bytes; i += 64, j += 16) + { + w0[0] = hc_swap32_S (tmps[gid].P[j + 0]); + w0[1] = hc_swap32_S (tmps[gid].P[j + 1]); + w0[2] = hc_swap32_S (tmps[gid].P[j + 2]); + w0[3] = hc_swap32_S (tmps[gid].P[j + 3]); + w1[0] = hc_swap32_S (tmps[gid].P[j + 4]); + w1[1] = hc_swap32_S (tmps[gid].P[j + 5]); + w1[2] = hc_swap32_S (tmps[gid].P[j + 6]); + w1[3] = hc_swap32_S (tmps[gid].P[j + 7]); + w2[0] = hc_swap32_S (tmps[gid].P[j + 8]); + w2[1] = hc_swap32_S (tmps[gid].P[j + 9]); + w2[2] = hc_swap32_S (tmps[gid].P[j + 10]); + w2[3] = hc_swap32_S (tmps[gid].P[j + 11]); + w3[0] = hc_swap32_S (tmps[gid].P[j + 12]); + w3[1] = hc_swap32_S (tmps[gid].P[j + 13]); + w3[2] = hc_swap32_S (tmps[gid].P[j + 14]); + w3[3] = hc_swap32_S (tmps[gid].P[j + 15]); + + sha256_hmac_update_64 (&ctx, w0, w1, w2, w3, 64); + } + + w0[0] = 1; + w0[1] = 0; + w0[2] = 0; + w0[3] = 0; + w1[0] = 0; + w1[1] = 0; + w1[2] = 0; + w1[3] = 0; + w2[0] = 0; + w2[1] = 0; + w2[2] = 0; + w2[3] = 0; + w3[0] = 0; + w3[1] = 0; + w3[2] = 0; + w3[3] = 0; + + sha256_hmac_update_64 (&ctx, w0, w1, w2, w3, 4); + + sha256_hmac_final (&ctx); + + const u32 r0 = hc_swap32_S (ctx.opad.h[DGST_R0]); + const u32 r1 = hc_swap32_S (ctx.opad.h[DGST_R1]); + const u32 r2 = hc_swap32_S (ctx.opad.h[DGST_R2]); + const u32 r3 = hc_swap32_S (ctx.opad.h[DGST_R3]); + + #define il_pos 0 + + #ifdef KERNEL_STATIC + #include COMPARE_M + #endif +} diff --git a/OpenCL/m72000-pure.cl b/OpenCL/m72000-pure.cl new file mode 100644 index 000000000..340b88ff3 --- /dev/null +++ b/OpenCL/m72000-pure.cl @@ -0,0 +1,79 @@ +/** + * Author......: See docs/credits.txt + * License.....: MIT + */ + +#ifdef KERNEL_STATIC +#include M2S(INCLUDE_PATH/inc_vendor.h) +#include M2S(INCLUDE_PATH/inc_types.h) +#include M2S(INCLUDE_PATH/inc_platform.cl) +#include M2S(INCLUDE_PATH/inc_common.cl) +#include M2S(INCLUDE_PATH/inc_hash_md4.cl) +#endif + +#define COMPARE_S M2S(INCLUDE_PATH/inc_comp_single.cl) +#define COMPARE_M M2S(INCLUDE_PATH/inc_comp_multi.cl) + +typedef struct +{ + // input + + u32 pw_buf[64]; + u32 pw_len; + + // output + + u32 out_buf[64]; + u32 out_len; + +} generic_io_tmp_t; + +KERNEL_FQ KERNEL_FA void m72000_init (KERN_ATTR_TMPS (generic_io_tmp_t)) +{ + const u64 gid = get_global_id (0); + + if (gid >= GID_CNT) return; + + const u32 pw_len = pws[gid].pw_len; + + for (u32 idx = 0; idx < 64; idx++) + { + tmps[gid].pw_buf[idx] = pws[gid].i[idx]; + } + + tmps[gid].pw_len = pw_len; +} + +KERNEL_FQ KERNEL_FA void m72000_loop (KERN_ATTR_TMPS (generic_io_tmp_t)) +{ +} + +KERNEL_FQ KERNEL_FA void m72000_comp (KERN_ATTR_TMPS (generic_io_tmp_t)) +{ + /** + * base + */ + + const u64 gid = get_global_id (0); + + if (gid >= GID_CNT) return; + + md4_ctx_t ctx0; + + md4_init (&ctx0); + + md4_update_global (&ctx0, tmps[gid].out_buf, tmps[gid].out_len); + + md4_final (&ctx0); + + const u32 r0 = ctx0.h[0]; + const u32 r1 = ctx0.h[1]; + const u32 r2 = ctx0.h[2]; + const u32 r3 = ctx0.h[3]; + + #define il_pos 0 + + #ifdef KERNEL_STATIC + #include COMPARE_M + #endif +} diff --git a/OpenCL/m73000-pure.cl b/OpenCL/m73000-pure.cl new file mode 100644 index 000000000..bfb95c7d3 --- /dev/null +++ b/OpenCL/m73000-pure.cl @@ -0,0 +1,79 @@ +/** + * Author......: See docs/credits.txt + * License.....: MIT + */ + +#ifdef KERNEL_STATIC +#include M2S(INCLUDE_PATH/inc_vendor.h) +#include M2S(INCLUDE_PATH/inc_types.h) +#include M2S(INCLUDE_PATH/inc_platform.cl) +#include M2S(INCLUDE_PATH/inc_common.cl) +#include M2S(INCLUDE_PATH/inc_hash_md4.cl) +#endif + +#define COMPARE_S M2S(INCLUDE_PATH/inc_comp_single.cl) +#define COMPARE_M M2S(INCLUDE_PATH/inc_comp_multi.cl) + +typedef struct +{ + // input + + u32 pw_buf[64]; + u32 pw_len; + + // output + + u32 out_buf[64]; + u32 out_len; + +} generic_io_tmp_t; + +KERNEL_FQ KERNEL_FA void m73000_init (KERN_ATTR_TMPS (generic_io_tmp_t)) +{ + const u64 gid = get_global_id (0); + + if (gid >= GID_CNT) return; + + const u32 pw_len = pws[gid].pw_len; + + for (u32 idx = 0; idx < 64; idx++) + { + tmps[gid].pw_buf[idx] = pws[gid].i[idx]; + } + + tmps[gid].pw_len = pw_len; +} + +KERNEL_FQ KERNEL_FA void m73000_loop (KERN_ATTR_TMPS (generic_io_tmp_t)) +{ +} + +KERNEL_FQ KERNEL_FA void m73000_comp (KERN_ATTR_TMPS (generic_io_tmp_t)) +{ + /** + * base + */ + + const u64 gid = get_global_id (0); + + if (gid >= GID_CNT) return; + + md4_ctx_t ctx0; + + md4_init (&ctx0); + + md4_update_global (&ctx0, tmps[gid].out_buf, tmps[gid].out_len); + + md4_final (&ctx0); + + const u32 r0 = ctx0.h[0]; + const u32 r1 = ctx0.h[1]; + const u32 r2 = ctx0.h[2]; + const u32 r3 = ctx0.h[3]; + + #define il_pos 0 + + #ifdef KERNEL_STATIC + #include COMPARE_M + #endif +} diff --git a/OpenCL/markov_be.cl b/OpenCL/markov_be.cl index 0c4dc7d17..fb5ac8549 100644 --- a/OpenCL/markov_be.cl +++ b/OpenCL/markov_be.cl @@ -47,7 +47,7 @@ DECLSPEC void generate_pw (PRIVATE_AS u32 *pw_buf, GLOBAL_AS const cs_t *root_cs if (bits15) pw_buf[15] = (pw_l_len + pw_r_len) * 8; } -KERNEL_FQ void l_markov (KERN_ATTR_L_MARKOV) +KERNEL_FQ KERNEL_FA void l_markov (KERN_ATTR_L_MARKOV) { const u64 gid = get_global_id (0); @@ -128,7 +128,7 @@ KERNEL_FQ void l_markov (KERN_ATTR_L_MARKOV) pws_buf_l[gid] = pw; } -KERNEL_FQ void r_markov (KERN_ATTR_R_MARKOV) +KERNEL_FQ KERNEL_FA void r_markov (KERN_ATTR_R_MARKOV) { const u64 gid = get_global_id (0); @@ -206,7 +206,7 @@ KERNEL_FQ void r_markov (KERN_ATTR_R_MARKOV) pws_buf_r[gid].i = pw.i[0]; } -KERNEL_FQ void C_markov (KERN_ATTR_C_MARKOV) +KERNEL_FQ KERNEL_FA void C_markov (KERN_ATTR_C_MARKOV) { const u64 gid = get_global_id (0); diff --git a/OpenCL/markov_le.cl b/OpenCL/markov_le.cl index 49da843aa..57e1e2ae6 100644 --- a/OpenCL/markov_le.cl +++ b/OpenCL/markov_le.cl @@ -47,7 +47,7 @@ DECLSPEC void generate_pw (PRIVATE_AS u32 *pw_buf, GLOBAL_AS const cs_t *root_cs if (bits15) pw_buf[15] = (pw_l_len + pw_r_len) * 8; } -KERNEL_FQ void l_markov (KERN_ATTR_L_MARKOV) +KERNEL_FQ KERNEL_FA void l_markov (KERN_ATTR_L_MARKOV) { const u64 gid = get_global_id (0); @@ -127,7 +127,7 @@ KERNEL_FQ void l_markov (KERN_ATTR_L_MARKOV) pws_buf_l[gid] = pw; } -KERNEL_FQ void r_markov (KERN_ATTR_R_MARKOV) +KERNEL_FQ KERNEL_FA void r_markov (KERN_ATTR_R_MARKOV) { const u64 gid = get_global_id (0); @@ -205,7 +205,7 @@ KERNEL_FQ void r_markov (KERN_ATTR_R_MARKOV) pws_buf_r[gid].i = pw.i[0]; } -KERNEL_FQ void C_markov (KERN_ATTR_C_MARKOV) +KERNEL_FQ KERNEL_FA void C_markov (KERN_ATTR_C_MARKOV) { const u64 gid = get_global_id (0); diff --git a/OpenCL/shared.cl b/OpenCL/shared.cl index 7b8939ded..ef06f856d 100644 --- a/OpenCL/shared.cl +++ b/OpenCL/shared.cl @@ -94,7 +94,7 @@ DECLSPEC void gpu_decompress_entry (GLOBAL_AS pw_idx_t *pws_idx, GLOBAL_AS u32 * *buf = pw; } -KERNEL_FQ void gpu_decompress (KERN_ATTR_GPU_DECOMPRESS) +KERNEL_FQ KERNEL_FA void gpu_decompress (KERN_ATTR_GPU_DECOMPRESS) { const u64 gid = get_global_id (0); @@ -107,7 +107,7 @@ KERNEL_FQ void gpu_decompress (KERN_ATTR_GPU_DECOMPRESS) pws_buf[gid] = pw; } -KERNEL_FQ void gpu_memset (KERN_ATTR_GPU_MEMSET) +KERNEL_FQ KERNEL_FA void gpu_memset (KERN_ATTR_GPU_MEMSET) { const u64 gid = get_global_id (0); @@ -139,7 +139,7 @@ KERNEL_FQ void gpu_memset (KERN_ATTR_GPU_MEMSET) buf[gid] = r; } -KERNEL_FQ void gpu_bzero (KERN_ATTR_GPU_BZERO) +KERNEL_FQ KERNEL_FA void gpu_bzero (KERN_ATTR_GPU_BZERO) { const u64 gid = get_global_id (0); @@ -171,7 +171,7 @@ KERNEL_FQ void gpu_bzero (KERN_ATTR_GPU_BZERO) buf[gid] = r; } -KERNEL_FQ void gpu_atinit (KERN_ATTR_GPU_ATINIT) +KERNEL_FQ KERNEL_FA void gpu_atinit (KERN_ATTR_GPU_ATINIT) { const u64 gid = get_global_id (0); @@ -253,7 +253,7 @@ KERNEL_FQ void gpu_atinit (KERN_ATTR_GPU_ATINIT) buf[gid] = pw; } -KERNEL_FQ void gpu_utf8_to_utf16 (KERN_ATTR_GPU_UTF8_TO_UTF16) +KERNEL_FQ KERNEL_FA void gpu_utf8_to_utf16 (KERN_ATTR_GPU_UTF8_TO_UTF16) { const u64 gid = get_global_id (0); diff --git a/Python/generic_hash_mp.py b/Python/generic_hash_mp.py new file mode 100644 index 000000000..53c00f6b4 --- /dev/null +++ b/Python/generic_hash_mp.py @@ -0,0 +1,68 @@ +import sys +import struct +import hashlib +import hcshared +import hcmp + +ST_HASH = "33522b0fd9812aa68586f66dba7c17a8ce64344137f9c7d8b11f32a6921c22de*9348746780603343" +ST_PASS = "hashcat" + +# In theory, you only have to implement this function... + +def calc_hash(password: bytes, salt: dict) -> str: + salt_buf = hcshared.get_salt_buf(salt) + hash = hashlib.sha256(salt_buf + password) + for i in range(10000): + hash = hashlib.sha256(hash.digest()) + return hash.hexdigest() + +# ...except when using an esalt. The esalt void* structure is both dynamic and specific to a hash mode. +# If you use an esalt, you must convert its contents into Python datatypes. +# If you don't use esalt, just return [] +# For this example hash-mode, we kept it very general and pushed all salt data in a generic format of generic sizes +# As such, it has to go into esalt + +def extract_esalts(esalts_buf): + esalts=[] + for hash_buf, hash_len, salt_buf, salt_len in struct.iter_unpack("65536s I 65536s I", esalts_buf): + hash_buf = hash_buf[0:hash_len] + salt_buf = salt_buf[0:salt_len] + esalts.append({ "hash_buf": hash_buf, "salt_buf": salt_buf }) + return esalts + +# From here you really can leave things as they are +# The init function is good for converting the hashcat data type because it is only called once + +def kernel_loop(ctx,passwords,salt_id,is_selftest): + return hcmp.handle_queue(ctx,passwords,salt_id,is_selftest) + +def init(ctx): + hcmp.init(ctx,extract_esalts) + +def term(ctx): + hcmp.term(ctx) + +# This code is only intended to enable debugging via a standalone Python interpreter. +# It makes development easier as you don't have to use a hashcat to test your changes. +# Read passwords from stdin + +if __name__ == '__main__': + ctx = { + "salts_buf": bytes(568), + "esalts_buf": bytes(131080), + "st_salts_buf": bytes(568), + "st_esalts_buf": bytes(131080), + "parallelism": 4 + } + init(ctx) + hashcat_passwords = 256 + passwords = [] + for line in sys.stdin: + passwords.append(bytes(line.rstrip(), 'utf-8')) + if(len(passwords) == hashcat_passwords): + hashes = kernel_loop(ctx,passwords,0,False) + passwords.clear() + hashes = kernel_loop(ctx,passwords,0,False) ## remaining entries + if hashes: + print(hashes[-1]) + term(ctx) diff --git a/Python/generic_hash_sp.py b/Python/generic_hash_sp.py new file mode 100644 index 000000000..d985b1693 --- /dev/null +++ b/Python/generic_hash_sp.py @@ -0,0 +1,69 @@ +import sys +import struct +import hashlib +import hcshared +import hcsp + +ST_HASH = "33522b0fd9812aa68586f66dba7c17a8ce64344137f9c7d8b11f32a6921c22de*9348746780603343" +ST_PASS = "hashcat" + +# In theory, you only have to implement this function... + +def calc_hash(password: bytes, salt: dict) -> str: + salt_buf = hcshared.get_salt_buf(salt) + hash = hashlib.sha256(salt_buf + password) + for i in range(10000): + hash = hashlib.sha256(hash.digest()) + return hash.hexdigest() + +# ...except when using an esalt. The esalt void* structure is both dynamic and specific to a hash mode. +# If you use an esalt, you must convert its contents into Python datatypes. +# If you don't use esalt, just return [] +# For this example hash-mode, we kept it very general and pushed all salt data in a generic format of generic sizes +# As such, it has to go into esalt + +def extract_esalts(esalts_buf): + esalts=[] + for hash_buf, hash_len, salt_buf, salt_len in struct.iter_unpack("65536s I 65536s I", esalts_buf): + hash_buf = hash_buf[0:hash_len] + salt_buf = salt_buf[0:salt_len] + esalts.append({ "hash_buf": hash_buf, "salt_buf": salt_buf }) + return esalts + +# From here you really can leave things as they are +# The init function is good for converting the hashcat data type because it is only called once + +def kernel_loop(ctx,passwords,salt_id,is_selftest): + return hcsp.handle_queue(ctx,passwords,salt_id,is_selftest) + +def init(ctx): + hcsp.init(ctx,extract_esalts) + +def term(ctx): + hcsp.term(ctx) + +# This code is only intended to enable debugging via a standalone Python interpreter. +# It makes development easier as you don't have to use a hashcat to test your changes. +# Read passwords from stdin + +if __name__ == '__main__': + ctx = { + "salts_buf": bytes(568), + "esalts_buf": bytes(131080), + "st_salts_buf": bytes(568), + "st_esalts_buf": bytes(131080), + "parallelism": 1 + } + init(ctx) + hashcat_passwords = 256 + passwords = [] + for line in sys.stdin: + passwords.append(bytes(line.rstrip(), 'utf-8')) + if len(passwords) == hashcat_passwords: + hashes = kernel_loop(ctx,passwords,0,False) + passwords.clear() + hashes = kernel_loop(ctx,passwords,0,False) ## remaining entries + if hashes: + print(hashes[-1]) + term(ctx) + diff --git a/Python/hcmp.py b/Python/hcmp.py new file mode 100644 index 000000000..60af98b16 --- /dev/null +++ b/Python/hcmp.py @@ -0,0 +1,58 @@ +import importlib +import multiprocessing +import hcshared + +def _worker_batch(chunk, salt_id, is_selftest, module_name, salts, st_salts): + user_module = importlib.import_module(module_name) + calc_hash = getattr(user_module, "calc_hash") + return hcshared._worker_batch(chunk, salt_id, is_selftest, calc_hash, salts, st_salts) + +def init(ctx: dict, extract_esalts): + # Extract and merge salts and esalts + salts = hcshared.extract_salts(ctx["salts_buf"]) + esalts = extract_esalts(ctx["esalts_buf"]) + for salt, esalt in zip(salts, esalts): + salt["esalt"] = esalt + + st_salts = hcshared.extract_salts(ctx["st_salts_buf"]) + st_esalts = extract_esalts(ctx["st_esalts_buf"]) + for salt, esalt in zip(st_salts, st_esalts): + salt["esalt"] = esalt + + # Save in ctx + ctx["salts"] = salts + ctx["st_salts"] = st_salts + ctx["module_name"] = ctx.get("module_name", "__main__") + + ctx["pool"] = multiprocessing.Pool(processes=ctx["parallelism"]) + return + +def handle_queue(ctx: dict, passwords: list, salt_id: int, is_selftest: bool) -> list: + pool = ctx["pool"] + salts = ctx["salts"] + st_salts = ctx["st_salts"] + module_name = ctx["module_name"] + parallelism = ctx["parallelism"] + + chunk_size = (len(passwords) + parallelism - 1) // parallelism + chunks = [passwords[i:i + chunk_size] for i in range(0, len(passwords), chunk_size)] + + jobs = [] + for chunk in chunks: + if chunk: + jobs.append(pool.apply_async( + _worker_batch, + args=(chunk, salt_id, is_selftest, module_name, salts, st_salts) + )) + + hashes = [] + for job in jobs: + hashes.extend(job.get()) + return hashes + +def term(ctx: dict): + if "pool" in ctx: + ctx["pool"].close() + ctx["pool"].join() + del ctx["pool"] + return diff --git a/Python/hcshared.py b/Python/hcshared.py new file mode 100644 index 000000000..2fcf56c70 --- /dev/null +++ b/Python/hcshared.py @@ -0,0 +1,73 @@ +import struct +import sys + +# Extract a blob that is a list of salt_t entries and convert it to a list of dictionaries +# The salt_t is a fixed data-type so we can handle it here + +def extract_salts(salts_buf) -> list: + salts=[] + for salt_buf, salt_buf_pc, salt_len, salt_len_pc, salt_iter, salt_iter2, salt_sign, salt_repeats, orig_pos, digests_cnt, digests_done, digests_offset, scrypt_N, scrypt_r, scrypt_p in struct.iter_unpack("256s 256s I I I I 8s I I I I I I I I", salts_buf): + salt_buf = salt_buf[0:salt_len] + salt_buf_pc = salt_buf_pc[0:salt_len_pc] + salts.append({ "salt_buf": salt_buf, \ + "salt_buf_pc": salt_buf_pc, \ + "salt_iter": salt_iter, \ + "salt_iter2": salt_iter2, \ + "salt_sign": salt_sign, \ + "salt_repeats": salt_repeats, \ + "orig_pos": orig_pos, \ + "digests_cnt": digests_cnt, \ + "digests_done": digests_done, \ + "scrypt_N": scrypt_N, \ + "scrypt_r": scrypt_r, \ + "scrypt_p": scrypt_p, \ + "esalt": None }) + return salts + +def get_salt_buf(salt: dict) -> bytes: + return salt["esalt"]["salt_buf"] + +def get_salt_buf_pc(salt: dict) -> bytes: + return salt["esalt"]["salt_buf_pc"] + +def get_salt_iter(salt: dict) -> int: + return salt["esalt"]["salt_iter"] + +def get_salt_iter2(salt: dict) -> int: + return salt["esalt"]["salt_iter2"] + +def get_salt_sign(salt: dict) -> bytes: + return salt["esalt"]["salt_sign"] + +def get_salt_repeats(salt: dict) -> int: + return salt["esalt"]["salt_repeats"] + +def get_orig_pos(salt: dict) -> int: + return salt["esalt"]["orig_pos"] + +def get_digests_cnt(salt: dict) -> int: + return salt["esalt"]["digests_cnt"] + +def get_digests_done(salt: dict) -> int: + return salt["esalt"]["digests_done"] + +def get_digests_offset(salt: dict) -> int: + return salt["esalt"]["digests_offset"] + +def get_scrypt_N(salt: dict) -> int: + return salt["esalt"]["scrypt_N"] + +def get_scrypt_r(salt: dict) -> int: + return salt["esalt"]["scrypt_r"] + +def _worker_batch(passwords, salt_id, is_selftest, user_fn, salts, st_salts): + salt = st_salts[salt_id] if is_selftest else salts[salt_id] + hashes = [] + for pw in passwords: + try: + hash=user_fn(pw, salt) + hashes.append(hash) + except Exception as e: + print(e, file=sys.stderr) + hashes.append("invalid-password") + return hashes diff --git a/Python/hcsp.py b/Python/hcsp.py new file mode 100644 index 000000000..792674e74 --- /dev/null +++ b/Python/hcsp.py @@ -0,0 +1,33 @@ +import importlib +import hcshared + +def handle_queue(ctx: dict, passwords: list, salt_id: int, is_selftest: bool) -> list: + user_module = importlib.import_module(ctx["module_name"]) + calc_hash = getattr(user_module, "calc_hash") + + salts = ctx["salts"] + st_salts = ctx["st_salts"] + + return hcshared._worker_batch(passwords, salt_id, is_selftest, calc_hash, salts, st_salts) + +def init(ctx: dict, extract_esalts): + # Extract and merge salts and esalts + salts = hcshared.extract_salts(ctx["salts_buf"]) + esalts = extract_esalts(ctx["esalts_buf"]) + for salt, esalt in zip(salts, esalts): + salt["esalt"] = esalt + + st_salts = hcshared.extract_salts(ctx["st_salts_buf"]) + st_esalts = extract_esalts(ctx["st_esalts_buf"]) + for salt, esalt in zip(st_salts, st_esalts): + salt["esalt"] = esalt + + # Store final state + ctx["salts"] = salts + ctx["st_salts"] = st_salts + ctx["module_name"] = ctx.get("module_name", "__main__") + + return + +def term(ctx: dict): + return diff --git a/modules/.lock b/bridges/.gitkeep similarity index 100% rename from modules/.lock rename to bridges/.gitkeep diff --git a/deps/LZMA-SDK/C/7z.h b/deps/LZMA-SDK/C/7z.h index 304f75ffc..9e27c0152 100644 --- a/deps/LZMA-SDK/C/7z.h +++ b/deps/LZMA-SDK/C/7z.h @@ -1,8 +1,8 @@ /* 7z.h -- 7z interface -2018-07-02 : Igor Pavlov : Public domain */ +2023-04-02 : Igor Pavlov : Public domain */ -#ifndef __7Z_H -#define __7Z_H +#ifndef ZIP7_INC_7Z_H +#define ZIP7_INC_7Z_H #include "7zTypes.h" @@ -98,7 +98,7 @@ typedef struct UInt64 SzAr_GetFolderUnpackSize(const CSzAr *p, UInt32 folderIndex); SRes SzAr_DecodeFolder(const CSzAr *p, UInt32 folderIndex, - ILookInStream *stream, UInt64 startPos, + ILookInStreamPtr stream, UInt64 startPos, Byte *outBuffer, size_t outSize, ISzAllocPtr allocMain); @@ -174,7 +174,7 @@ UInt16 *SzArEx_GetFullNameUtf16_Back(const CSzArEx *p, size_t fileIndex, UInt16 SRes SzArEx_Extract( const CSzArEx *db, - ILookInStream *inStream, + ILookInStreamPtr inStream, UInt32 fileIndex, /* index of file */ UInt32 *blockIndex, /* index of solid block */ Byte **outBuffer, /* pointer to pointer to output buffer (allocated with allocMain) */ @@ -196,7 +196,7 @@ SZ_ERROR_INPUT_EOF SZ_ERROR_FAIL */ -SRes SzArEx_Open(CSzArEx *p, ILookInStream *inStream, +SRes SzArEx_Open(CSzArEx *p, ILookInStreamPtr inStream, ISzAllocPtr allocMain, ISzAllocPtr allocTemp); EXTERN_C_END diff --git a/deps/LZMA-SDK/C/7zAlloc.c b/deps/LZMA-SDK/C/7zAlloc.c index c924a529f..2f0659af6 100644 --- a/deps/LZMA-SDK/C/7zAlloc.c +++ b/deps/LZMA-SDK/C/7zAlloc.c @@ -1,5 +1,5 @@ -/* 7zAlloc.c -- Allocation functions -2017-04-03 : Igor Pavlov : Public domain */ +/* 7zAlloc.c -- Allocation functions for 7z processing +2023-03-04 : Igor Pavlov : Public domain */ #include "Precomp.h" @@ -7,74 +7,83 @@ #include "7zAlloc.h" -/* #define _SZ_ALLOC_DEBUG */ -/* use _SZ_ALLOC_DEBUG to debug alloc/free operations */ +/* #define SZ_ALLOC_DEBUG */ +/* use SZ_ALLOC_DEBUG to debug alloc/free operations */ -#ifdef _SZ_ALLOC_DEBUG +#ifdef SZ_ALLOC_DEBUG +/* #ifdef _WIN32 -#include +#include "7zWindows.h" #endif +*/ #include -int g_allocCount = 0; -int g_allocCountTemp = 0; +static int g_allocCount = 0; +static int g_allocCountTemp = 0; +static void Print_Alloc(const char *s, size_t size, int *counter) +{ + const unsigned size2 = (unsigned)size; + fprintf(stderr, "\n%s count = %10d : %10u bytes; ", s, *counter, size2); + (*counter)++; +} +static void Print_Free(const char *s, int *counter) +{ + (*counter)--; + fprintf(stderr, "\n%s count = %10d", s, *counter); +} #endif void *SzAlloc(ISzAllocPtr p, size_t size) { - UNUSED_VAR(p); + UNUSED_VAR(p) if (size == 0) return 0; - #ifdef _SZ_ALLOC_DEBUG - fprintf(stderr, "\nAlloc %10u bytes; count = %10d", (unsigned)size, g_allocCount); - g_allocCount++; + #ifdef SZ_ALLOC_DEBUG + Print_Alloc("Alloc", size, &g_allocCount); #endif return malloc(size); } void SzFree(ISzAllocPtr p, void *address) { - UNUSED_VAR(p); - #ifdef _SZ_ALLOC_DEBUG - if (address != 0) - { - g_allocCount--; - fprintf(stderr, "\nFree; count = %10d", g_allocCount); - } + UNUSED_VAR(p) + #ifdef SZ_ALLOC_DEBUG + if (address) + Print_Free("Free ", &g_allocCount); #endif free(address); } void *SzAllocTemp(ISzAllocPtr p, size_t size) { - UNUSED_VAR(p); + UNUSED_VAR(p) if (size == 0) return 0; - #ifdef _SZ_ALLOC_DEBUG - fprintf(stderr, "\nAlloc_temp %10u bytes; count = %10d", (unsigned)size, g_allocCountTemp); - g_allocCountTemp++; + #ifdef SZ_ALLOC_DEBUG + Print_Alloc("Alloc_temp", size, &g_allocCountTemp); + /* #ifdef _WIN32 return HeapAlloc(GetProcessHeap(), 0, size); #endif + */ #endif return malloc(size); } void SzFreeTemp(ISzAllocPtr p, void *address) { - UNUSED_VAR(p); - #ifdef _SZ_ALLOC_DEBUG - if (address != 0) - { - g_allocCountTemp--; - fprintf(stderr, "\nFree_temp; count = %10d", g_allocCountTemp); - } + UNUSED_VAR(p) + #ifdef SZ_ALLOC_DEBUG + if (address) + Print_Free("Free_temp ", &g_allocCountTemp); + /* #ifdef _WIN32 HeapFree(GetProcessHeap(), 0, address); return; #endif + */ #endif free(address); } diff --git a/deps/LZMA-SDK/C/7zAlloc.h b/deps/LZMA-SDK/C/7zAlloc.h index 44778f9b2..b2b8b0cdd 100644 --- a/deps/LZMA-SDK/C/7zAlloc.h +++ b/deps/LZMA-SDK/C/7zAlloc.h @@ -1,8 +1,8 @@ /* 7zAlloc.h -- Allocation functions -2017-04-03 : Igor Pavlov : Public domain */ +2023-03-04 : Igor Pavlov : Public domain */ -#ifndef __7Z_ALLOC_H -#define __7Z_ALLOC_H +#ifndef ZIP7_INC_7Z_ALLOC_H +#define ZIP7_INC_7Z_ALLOC_H #include "7zTypes.h" diff --git a/deps/LZMA-SDK/C/7zArcIn.c b/deps/LZMA-SDK/C/7zArcIn.c index 0d9dec41e..23f294992 100644 --- a/deps/LZMA-SDK/C/7zArcIn.c +++ b/deps/LZMA-SDK/C/7zArcIn.c @@ -1,5 +1,5 @@ /* 7zArcIn.c -- 7z Input functions -2021-02-09 : Igor Pavlov : Public domain */ +2023-09-07 : Igor Pavlov : Public domain */ #include "Precomp.h" @@ -10,10 +10,11 @@ #include "7zCrc.h" #include "CpuArch.h" -#define MY_ALLOC(T, p, size, alloc) { \ - if ((p = (T *)ISzAlloc_Alloc(alloc, (size) * sizeof(T))) == NULL) return SZ_ERROR_MEM; } +#define MY_ALLOC(T, p, size, alloc) \ + { if ((p = (T *)ISzAlloc_Alloc(alloc, (size) * sizeof(T))) == NULL) return SZ_ERROR_MEM; } -#define MY_ALLOC_ZE(T, p, size, alloc) { if ((size) == 0) p = NULL; else MY_ALLOC(T, p, size, alloc) } +#define MY_ALLOC_ZE(T, p, size, alloc) \ + { if ((size) == 0) p = NULL; else MY_ALLOC(T, p, size, alloc) } #define MY_ALLOC_AND_CPY(to, size, from, alloc) \ { MY_ALLOC(Byte, to, size, alloc); memcpy(to, from, size); } @@ -58,7 +59,7 @@ enum EIdEnum const Byte k7zSignature[k7zSignatureSize] = {'7', 'z', 0xBC, 0xAF, 0x27, 0x1C}; -#define SzBitUi32s_Init(p) { (p)->Defs = NULL; (p)->Vals = NULL; } +#define SzBitUi32s_INIT(p) { (p)->Defs = NULL; (p)->Vals = NULL; } static SRes SzBitUi32s_Alloc(CSzBitUi32s *p, size_t num, ISzAllocPtr alloc) { @@ -69,8 +70,8 @@ static SRes SzBitUi32s_Alloc(CSzBitUi32s *p, size_t num, ISzAllocPtr alloc) } else { - MY_ALLOC(Byte, p->Defs, (num + 7) >> 3, alloc); - MY_ALLOC(UInt32, p->Vals, num, alloc); + MY_ALLOC(Byte, p->Defs, (num + 7) >> 3, alloc) + MY_ALLOC(UInt32, p->Vals, num, alloc) } return SZ_OK; } @@ -81,7 +82,7 @@ static void SzBitUi32s_Free(CSzBitUi32s *p, ISzAllocPtr alloc) ISzAlloc_Free(alloc, p->Vals); p->Vals = NULL; } -#define SzBitUi64s_Init(p) { (p)->Defs = NULL; (p)->Vals = NULL; } +#define SzBitUi64s_INIT(p) { (p)->Defs = NULL; (p)->Vals = NULL; } static void SzBitUi64s_Free(CSzBitUi64s *p, ISzAllocPtr alloc) { @@ -96,7 +97,7 @@ static void SzAr_Init(CSzAr *p) p->NumFolders = 0; p->PackPositions = NULL; - SzBitUi32s_Init(&p->FolderCRCs); + SzBitUi32s_INIT(&p->FolderCRCs) p->FoCodersOffsets = NULL; p->FoStartPackStreamIndex = NULL; @@ -142,11 +143,11 @@ void SzArEx_Init(CSzArEx *p) p->FileNameOffsets = NULL; p->FileNames = NULL; - SzBitUi32s_Init(&p->CRCs); - SzBitUi32s_Init(&p->Attribs); - // SzBitUi32s_Init(&p->Parents); - SzBitUi64s_Init(&p->MTime); - SzBitUi64s_Init(&p->CTime); + SzBitUi32s_INIT(&p->CRCs) + SzBitUi32s_INIT(&p->Attribs) + // SzBitUi32s_INIT(&p->Parents) + SzBitUi64s_INIT(&p->MTime) + SzBitUi64s_INIT(&p->CTime) } void SzArEx_Free(CSzArEx *p, ISzAllocPtr alloc) @@ -180,11 +181,20 @@ static int TestSignatureCandidate(const Byte *testBytes) return 1; } -#define SzData_Clear(p) { (p)->Data = NULL; (p)->Size = 0; } +#define SzData_CLEAR(p) { (p)->Data = NULL; (p)->Size = 0; } + +#define SZ_READ_BYTE_SD_NOCHECK(_sd_, dest) \ + (_sd_)->Size--; dest = *(_sd_)->Data++; + +#define SZ_READ_BYTE_SD(_sd_, dest) \ + if ((_sd_)->Size == 0) return SZ_ERROR_ARCHIVE; \ + SZ_READ_BYTE_SD_NOCHECK(_sd_, dest) -#define SZ_READ_BYTE_SD(_sd_, dest) if ((_sd_)->Size == 0) return SZ_ERROR_ARCHIVE; (_sd_)->Size--; dest = *(_sd_)->Data++; #define SZ_READ_BYTE(dest) SZ_READ_BYTE_SD(sd, dest) -#define SZ_READ_BYTE_2(dest) if (sd.Size == 0) return SZ_ERROR_ARCHIVE; sd.Size--; dest = *sd.Data++; + +#define SZ_READ_BYTE_2(dest) \ + if (sd.Size == 0) return SZ_ERROR_ARCHIVE; \ + sd.Size--; dest = *sd.Data++; #define SKIP_DATA(sd, size) { sd->Size -= (size_t)(size); sd->Data += (size_t)(size); } #define SKIP_DATA2(sd, size) { sd.Size -= (size_t)(size); sd.Data += (size_t)(size); } @@ -192,25 +202,25 @@ static int TestSignatureCandidate(const Byte *testBytes) #define SZ_READ_32(dest) if (sd.Size < 4) return SZ_ERROR_ARCHIVE; \ dest = GetUi32(sd.Data); SKIP_DATA2(sd, 4); -static MY_NO_INLINE SRes ReadNumber(CSzData *sd, UInt64 *value) +static Z7_NO_INLINE SRes ReadNumber(CSzData *sd, UInt64 *value) { Byte firstByte, mask; unsigned i; UInt32 v; - SZ_READ_BYTE(firstByte); + SZ_READ_BYTE(firstByte) if ((firstByte & 0x80) == 0) { *value = firstByte; return SZ_OK; } - SZ_READ_BYTE(v); + SZ_READ_BYTE(v) if ((firstByte & 0x40) == 0) { *value = (((UInt32)firstByte & 0x3F) << 8) | v; return SZ_OK; } - SZ_READ_BYTE(mask); + SZ_READ_BYTE(mask) *value = v | ((UInt32)mask << 8); mask = 0x20; for (i = 2; i < 8; i++) @@ -218,11 +228,11 @@ static MY_NO_INLINE SRes ReadNumber(CSzData *sd, UInt64 *value) Byte b; if ((firstByte & mask) == 0) { - UInt64 highPart = (unsigned)firstByte & (unsigned)(mask - 1); + const UInt64 highPart = (unsigned)firstByte & (unsigned)(mask - 1); *value |= (highPart << (8 * i)); return SZ_OK; } - SZ_READ_BYTE(b); + SZ_READ_BYTE(b) *value |= ((UInt64)b << (8 * i)); mask >>= 1; } @@ -230,7 +240,7 @@ static MY_NO_INLINE SRes ReadNumber(CSzData *sd, UInt64 *value) } -static MY_NO_INLINE SRes SzReadNumber32(CSzData *sd, UInt32 *value) +static Z7_NO_INLINE SRes SzReadNumber32(CSzData *sd, UInt32 *value) { Byte firstByte; UInt64 value64; @@ -244,7 +254,7 @@ static MY_NO_INLINE SRes SzReadNumber32(CSzData *sd, UInt32 *value) sd->Size--; return SZ_OK; } - RINOK(ReadNumber(sd, &value64)); + RINOK(ReadNumber(sd, &value64)) if (value64 >= (UInt32)0x80000000 - 1) return SZ_ERROR_UNSUPPORTED; if (value64 >= ((UInt64)(1) << ((sizeof(size_t) - 1) * 8 + 4))) @@ -258,10 +268,10 @@ static MY_NO_INLINE SRes SzReadNumber32(CSzData *sd, UInt32 *value) static SRes SkipData(CSzData *sd) { UInt64 size; - RINOK(ReadNumber(sd, &size)); + RINOK(ReadNumber(sd, &size)) if (size > sd->Size) return SZ_ERROR_ARCHIVE; - SKIP_DATA(sd, size); + SKIP_DATA(sd, size) return SZ_OK; } @@ -270,28 +280,28 @@ static SRes WaitId(CSzData *sd, UInt32 id) for (;;) { UInt64 type; - RINOK(ReadID(sd, &type)); + RINOK(ReadID(sd, &type)) if (type == id) return SZ_OK; if (type == k7zIdEnd) return SZ_ERROR_ARCHIVE; - RINOK(SkipData(sd)); + RINOK(SkipData(sd)) } } static SRes RememberBitVector(CSzData *sd, UInt32 numItems, const Byte **v) { - UInt32 numBytes = (numItems + 7) >> 3; + const UInt32 numBytes = (numItems + 7) >> 3; if (numBytes > sd->Size) return SZ_ERROR_ARCHIVE; *v = sd->Data; - SKIP_DATA(sd, numBytes); + SKIP_DATA(sd, numBytes) return SZ_OK; } static UInt32 CountDefinedBits(const Byte *bits, UInt32 numItems) { - Byte b = 0; + unsigned b = 0; unsigned m = 0; UInt32 sum = 0; for (; numItems != 0; numItems--) @@ -302,53 +312,53 @@ static UInt32 CountDefinedBits(const Byte *bits, UInt32 numItems) m = 8; } m--; - sum += ((b >> m) & 1); + sum += (UInt32)((b >> m) & 1); } return sum; } -static MY_NO_INLINE SRes ReadBitVector(CSzData *sd, UInt32 numItems, Byte **v, ISzAllocPtr alloc) +static Z7_NO_INLINE SRes ReadBitVector(CSzData *sd, UInt32 numItems, Byte **v, ISzAllocPtr alloc) { Byte allAreDefined; Byte *v2; - UInt32 numBytes = (numItems + 7) >> 3; + const UInt32 numBytes = (numItems + 7) >> 3; *v = NULL; - SZ_READ_BYTE(allAreDefined); + SZ_READ_BYTE(allAreDefined) if (numBytes == 0) return SZ_OK; if (allAreDefined == 0) { if (numBytes > sd->Size) return SZ_ERROR_ARCHIVE; - MY_ALLOC_AND_CPY(*v, numBytes, sd->Data, alloc); - SKIP_DATA(sd, numBytes); + MY_ALLOC_AND_CPY(*v, numBytes, sd->Data, alloc) + SKIP_DATA(sd, numBytes) return SZ_OK; } - MY_ALLOC(Byte, *v, numBytes, alloc); + MY_ALLOC(Byte, *v, numBytes, alloc) v2 = *v; memset(v2, 0xFF, (size_t)numBytes); { - unsigned numBits = (unsigned)numItems & 7; + const unsigned numBits = (unsigned)numItems & 7; if (numBits != 0) v2[(size_t)numBytes - 1] = (Byte)((((UInt32)1 << numBits) - 1) << (8 - numBits)); } return SZ_OK; } -static MY_NO_INLINE SRes ReadUi32s(CSzData *sd2, UInt32 numItems, CSzBitUi32s *crcs, ISzAllocPtr alloc) +static Z7_NO_INLINE SRes ReadUi32s(CSzData *sd2, UInt32 numItems, CSzBitUi32s *crcs, ISzAllocPtr alloc) { UInt32 i; CSzData sd; UInt32 *vals; const Byte *defs; - MY_ALLOC_ZE(UInt32, crcs->Vals, numItems, alloc); + MY_ALLOC_ZE(UInt32, crcs->Vals, numItems, alloc) sd = *sd2; defs = crcs->Defs; vals = crcs->Vals; for (i = 0; i < numItems; i++) if (SzBitArray_Check(defs, i)) { - SZ_READ_32(vals[i]); + SZ_READ_32(vals[i]) } else vals[i] = 0; @@ -359,7 +369,7 @@ static MY_NO_INLINE SRes ReadUi32s(CSzData *sd2, UInt32 numItems, CSzBitUi32s *c static SRes ReadBitUi32s(CSzData *sd, UInt32 numItems, CSzBitUi32s *crcs, ISzAllocPtr alloc) { SzBitUi32s_Free(crcs, alloc); - RINOK(ReadBitVector(sd, numItems, &crcs->Defs, alloc)); + RINOK(ReadBitVector(sd, numItems, &crcs->Defs, alloc)) return ReadUi32s(sd, numItems, crcs, alloc); } @@ -367,36 +377,36 @@ static SRes SkipBitUi32s(CSzData *sd, UInt32 numItems) { Byte allAreDefined; UInt32 numDefined = numItems; - SZ_READ_BYTE(allAreDefined); + SZ_READ_BYTE(allAreDefined) if (!allAreDefined) { - size_t numBytes = (numItems + 7) >> 3; + const size_t numBytes = (numItems + 7) >> 3; if (numBytes > sd->Size) return SZ_ERROR_ARCHIVE; numDefined = CountDefinedBits(sd->Data, numItems); - SKIP_DATA(sd, numBytes); + SKIP_DATA(sd, numBytes) } if (numDefined > (sd->Size >> 2)) return SZ_ERROR_ARCHIVE; - SKIP_DATA(sd, (size_t)numDefined * 4); + SKIP_DATA(sd, (size_t)numDefined * 4) return SZ_OK; } static SRes ReadPackInfo(CSzAr *p, CSzData *sd, ISzAllocPtr alloc) { - RINOK(SzReadNumber32(sd, &p->NumPackStreams)); + RINOK(SzReadNumber32(sd, &p->NumPackStreams)) - RINOK(WaitId(sd, k7zIdSize)); - MY_ALLOC(UInt64, p->PackPositions, (size_t)p->NumPackStreams + 1, alloc); + RINOK(WaitId(sd, k7zIdSize)) + MY_ALLOC(UInt64, p->PackPositions, (size_t)p->NumPackStreams + 1, alloc) { UInt64 sum = 0; UInt32 i; - UInt32 numPackStreams = p->NumPackStreams; + const UInt32 numPackStreams = p->NumPackStreams; for (i = 0; i < numPackStreams; i++) { UInt64 packSize; p->PackPositions[i] = sum; - RINOK(ReadNumber(sd, &packSize)); + RINOK(ReadNumber(sd, &packSize)) sum += packSize; if (sum < packSize) return SZ_ERROR_ARCHIVE; @@ -407,16 +417,16 @@ static SRes ReadPackInfo(CSzAr *p, CSzData *sd, ISzAllocPtr alloc) for (;;) { UInt64 type; - RINOK(ReadID(sd, &type)); + RINOK(ReadID(sd, &type)) if (type == k7zIdEnd) return SZ_OK; if (type == k7zIdCRC) { /* CRC of packed streams is unused now */ - RINOK(SkipBitUi32s(sd, p->NumPackStreams)); + RINOK(SkipBitUi32s(sd, p->NumPackStreams)) continue; } - RINOK(SkipData(sd)); + RINOK(SkipData(sd)) } } @@ -442,7 +452,7 @@ SRes SzGetNextFolderItem(CSzFolder *f, CSzData *sd) f->NumPackStreams = 0; f->UnpackStream = 0; - RINOK(SzReadNumber32(sd, &numCoders)); + RINOK(SzReadNumber32(sd, &numCoders)) if (numCoders == 0 || numCoders > SZ_NUM_CODERS_IN_FOLDER_MAX) return SZ_ERROR_UNSUPPORTED; @@ -453,7 +463,7 @@ SRes SzGetNextFolderItem(CSzFolder *f, CSzData *sd) unsigned idSize, j; UInt64 id; - SZ_READ_BYTE(mainByte); + SZ_READ_BYTE(mainByte) if ((mainByte & 0xC0) != 0) return SZ_ERROR_UNSUPPORTED; @@ -481,12 +491,12 @@ SRes SzGetNextFolderItem(CSzFolder *f, CSzData *sd) { UInt32 numStreams; - RINOK(SzReadNumber32(sd, &numStreams)); + RINOK(SzReadNumber32(sd, &numStreams)) if (numStreams > k_NumCodersStreams_in_Folder_MAX) return SZ_ERROR_UNSUPPORTED; coder->NumStreams = (Byte)numStreams; - RINOK(SzReadNumber32(sd, &numStreams)); + RINOK(SzReadNumber32(sd, &numStreams)) if (numStreams != 1) return SZ_ERROR_UNSUPPORTED; } @@ -499,7 +509,7 @@ SRes SzGetNextFolderItem(CSzFolder *f, CSzData *sd) if ((mainByte & 0x20) != 0) { UInt32 propsSize = 0; - RINOK(SzReadNumber32(sd, &propsSize)); + RINOK(SzReadNumber32(sd, &propsSize)) if (propsSize > sd->Size) return SZ_ERROR_ARCHIVE; if (propsSize >= 0x80) @@ -549,12 +559,12 @@ SRes SzGetNextFolderItem(CSzFolder *f, CSzData *sd) { CSzBond *bp = f->Bonds + i; - RINOK(SzReadNumber32(sd, &bp->InIndex)); + RINOK(SzReadNumber32(sd, &bp->InIndex)) if (bp->InIndex >= numInStreams || streamUsed[bp->InIndex]) return SZ_ERROR_ARCHIVE; streamUsed[bp->InIndex] = True; - RINOK(SzReadNumber32(sd, &bp->OutIndex)); + RINOK(SzReadNumber32(sd, &bp->OutIndex)) if (bp->OutIndex >= numCoders || coderUsed[bp->OutIndex]) return SZ_ERROR_ARCHIVE; coderUsed[bp->OutIndex] = True; @@ -584,7 +594,7 @@ SRes SzGetNextFolderItem(CSzFolder *f, CSzData *sd) for (i = 0; i < numPackStreams; i++) { UInt32 index; - RINOK(SzReadNumber32(sd, &index)); + RINOK(SzReadNumber32(sd, &index)) if (index >= numInStreams || streamUsed[index]) return SZ_ERROR_ARCHIVE; streamUsed[index] = True; @@ -598,7 +608,7 @@ SRes SzGetNextFolderItem(CSzFolder *f, CSzData *sd) } -static MY_NO_INLINE SRes SkipNumbers(CSzData *sd2, UInt32 num) +static Z7_NO_INLINE SRes SkipNumbers(CSzData *sd2, UInt32 num) { CSzData sd; sd = *sd2; @@ -606,7 +616,7 @@ static MY_NO_INLINE SRes SkipNumbers(CSzData *sd2, UInt32 num) { Byte firstByte, mask; unsigned i; - SZ_READ_BYTE_2(firstByte); + SZ_READ_BYTE_2(firstByte) if ((firstByte & 0x80) == 0) continue; if ((firstByte & 0x40) == 0) @@ -622,7 +632,7 @@ static MY_NO_INLINE SRes SkipNumbers(CSzData *sd2, UInt32 num) mask >>= 1; if (i > sd.Size) return SZ_ERROR_ARCHIVE; - SKIP_DATA2(sd, i); + SKIP_DATA2(sd, i) } *sd2 = sd; return SZ_OK; @@ -645,30 +655,30 @@ static SRes ReadUnpackInfo(CSzAr *p, const Byte *startBufPtr; Byte external; - RINOK(WaitId(sd2, k7zIdFolder)); + RINOK(WaitId(sd2, k7zIdFolder)) - RINOK(SzReadNumber32(sd2, &numFolders)); + RINOK(SzReadNumber32(sd2, &numFolders)) if (numFolders > numFoldersMax) return SZ_ERROR_UNSUPPORTED; p->NumFolders = numFolders; - SZ_READ_BYTE_SD(sd2, external); + SZ_READ_BYTE_SD(sd2, external) if (external == 0) sd = *sd2; else { UInt32 index; - RINOK(SzReadNumber32(sd2, &index)); + RINOK(SzReadNumber32(sd2, &index)) if (index >= numTempBufs) return SZ_ERROR_ARCHIVE; sd.Data = tempBufs[index].data; sd.Size = tempBufs[index].size; } - MY_ALLOC(size_t, p->FoCodersOffsets, (size_t)numFolders + 1, alloc); - MY_ALLOC(UInt32, p->FoStartPackStreamIndex, (size_t)numFolders + 1, alloc); - MY_ALLOC(UInt32, p->FoToCoderUnpackSizes, (size_t)numFolders + 1, alloc); - MY_ALLOC_ZE(Byte, p->FoToMainUnpackSizeIndex, (size_t)numFolders, alloc); + MY_ALLOC(size_t, p->FoCodersOffsets, (size_t)numFolders + 1, alloc) + MY_ALLOC(UInt32, p->FoStartPackStreamIndex, (size_t)numFolders + 1, alloc) + MY_ALLOC(UInt32, p->FoToCoderUnpackSizes, (size_t)numFolders + 1, alloc) + MY_ALLOC_ZE(Byte, p->FoToMainUnpackSizeIndex, (size_t)numFolders, alloc) startBufPtr = sd.Data; @@ -681,7 +691,7 @@ static SRes ReadUnpackInfo(CSzAr *p, p->FoCodersOffsets[fo] = (size_t)(sd.Data - startBufPtr); - RINOK(SzReadNumber32(&sd, &numCoders)); + RINOK(SzReadNumber32(&sd, &numCoders)) if (numCoders == 0 || numCoders > k_Scan_NumCoders_MAX) return SZ_ERROR_UNSUPPORTED; @@ -691,7 +701,7 @@ static SRes ReadUnpackInfo(CSzAr *p, unsigned idSize; UInt32 coderInStreams; - SZ_READ_BYTE_2(mainByte); + SZ_READ_BYTE_2(mainByte) if ((mainByte & 0xC0) != 0) return SZ_ERROR_UNSUPPORTED; idSize = (mainByte & 0xF); @@ -699,15 +709,15 @@ static SRes ReadUnpackInfo(CSzAr *p, return SZ_ERROR_UNSUPPORTED; if (idSize > sd.Size) return SZ_ERROR_ARCHIVE; - SKIP_DATA2(sd, idSize); + SKIP_DATA2(sd, idSize) coderInStreams = 1; if ((mainByte & 0x10) != 0) { UInt32 coderOutStreams; - RINOK(SzReadNumber32(&sd, &coderInStreams)); - RINOK(SzReadNumber32(&sd, &coderOutStreams)); + RINOK(SzReadNumber32(&sd, &coderInStreams)) + RINOK(SzReadNumber32(&sd, &coderOutStreams)) if (coderInStreams > k_Scan_NumCodersStreams_in_Folder_MAX || coderOutStreams != 1) return SZ_ERROR_UNSUPPORTED; } @@ -717,10 +727,10 @@ static SRes ReadUnpackInfo(CSzAr *p, if ((mainByte & 0x20) != 0) { UInt32 propsSize; - RINOK(SzReadNumber32(&sd, &propsSize)); + RINOK(SzReadNumber32(&sd, &propsSize)) if (propsSize > sd.Size) return SZ_ERROR_ARCHIVE; - SKIP_DATA2(sd, propsSize); + SKIP_DATA2(sd, propsSize) } } @@ -734,7 +744,7 @@ static SRes ReadUnpackInfo(CSzAr *p, Byte coderUsed[k_Scan_NumCoders_MAX]; UInt32 i; - UInt32 numBonds = numCoders - 1; + const UInt32 numBonds = numCoders - 1; if (numInStreams < numBonds) return SZ_ERROR_ARCHIVE; @@ -750,12 +760,12 @@ static SRes ReadUnpackInfo(CSzAr *p, { UInt32 index; - RINOK(SzReadNumber32(&sd, &index)); + RINOK(SzReadNumber32(&sd, &index)) if (index >= numInStreams || streamUsed[index]) return SZ_ERROR_ARCHIVE; streamUsed[index] = True; - RINOK(SzReadNumber32(&sd, &index)); + RINOK(SzReadNumber32(&sd, &index)) if (index >= numCoders || coderUsed[index]) return SZ_ERROR_ARCHIVE; coderUsed[index] = True; @@ -767,7 +777,7 @@ static SRes ReadUnpackInfo(CSzAr *p, for (i = 0; i < numPackStreams; i++) { UInt32 index; - RINOK(SzReadNumber32(&sd, &index)); + RINOK(SzReadNumber32(&sd, &index)) if (index >= numInStreams || streamUsed[index]) return SZ_ERROR_ARCHIVE; streamUsed[index] = True; @@ -802,7 +812,7 @@ static SRes ReadUnpackInfo(CSzAr *p, const size_t dataSize = (size_t)(sd.Data - startBufPtr); p->FoStartPackStreamIndex[fo] = packStreamIndex; p->FoCodersOffsets[fo] = dataSize; - MY_ALLOC_ZE_AND_CPY(p->CodersData, dataSize, startBufPtr, alloc); + MY_ALLOC_ZE_AND_CPY(p->CodersData, dataSize, startBufPtr, alloc) } if (external != 0) @@ -812,21 +822,21 @@ static SRes ReadUnpackInfo(CSzAr *p, sd = *sd2; } - RINOK(WaitId(&sd, k7zIdCodersUnpackSize)); + RINOK(WaitId(&sd, k7zIdCodersUnpackSize)) - MY_ALLOC_ZE(UInt64, p->CoderUnpackSizes, (size_t)numCodersOutStreams, alloc); + MY_ALLOC_ZE(UInt64, p->CoderUnpackSizes, (size_t)numCodersOutStreams, alloc) { UInt32 i; for (i = 0; i < numCodersOutStreams; i++) { - RINOK(ReadNumber(&sd, p->CoderUnpackSizes + i)); + RINOK(ReadNumber(&sd, p->CoderUnpackSizes + i)) } } for (;;) { UInt64 type; - RINOK(ReadID(&sd, &type)); + RINOK(ReadID(&sd, &type)) if (type == k7zIdEnd) { *sd2 = sd; @@ -834,10 +844,10 @@ static SRes ReadUnpackInfo(CSzAr *p, } if (type == k7zIdCRC) { - RINOK(ReadBitUi32s(&sd, numFolders, &p->FolderCRCs, alloc)); + RINOK(ReadBitUi32s(&sd, numFolders, &p->FolderCRCs, alloc)) continue; } - RINOK(SkipData(&sd)); + RINOK(SkipData(&sd)) } } @@ -862,13 +872,13 @@ static SRes ReadSubStreamsInfo(CSzAr *p, CSzData *sd, CSubStreamInfo *ssi) { UInt64 type = 0; UInt32 numSubDigests = 0; - UInt32 numFolders = p->NumFolders; + const UInt32 numFolders = p->NumFolders; UInt32 numUnpackStreams = numFolders; UInt32 numUnpackSizesInData = 0; for (;;) { - RINOK(ReadID(sd, &type)); + RINOK(ReadID(sd, &type)) if (type == k7zIdNumUnpackStream) { UInt32 i; @@ -878,7 +888,7 @@ static SRes ReadSubStreamsInfo(CSzAr *p, CSzData *sd, CSubStreamInfo *ssi) for (i = 0; i < numFolders; i++) { UInt32 numStreams; - RINOK(SzReadNumber32(sd, &numStreams)); + RINOK(SzReadNumber32(sd, &numStreams)) if (numUnpackStreams > numUnpackStreams + numStreams) return SZ_ERROR_UNSUPPORTED; numUnpackStreams += numStreams; @@ -892,7 +902,7 @@ static SRes ReadSubStreamsInfo(CSzAr *p, CSzData *sd, CSubStreamInfo *ssi) } if (type == k7zIdCRC || type == k7zIdSize || type == k7zIdEnd) break; - RINOK(SkipData(sd)); + RINOK(SkipData(sd)) } if (!ssi->sdNumSubStreams.Data) @@ -908,9 +918,9 @@ static SRes ReadSubStreamsInfo(CSzAr *p, CSzData *sd, CSubStreamInfo *ssi) if (type == k7zIdSize) { ssi->sdSizes.Data = sd->Data; - RINOK(SkipNumbers(sd, numUnpackSizesInData)); + RINOK(SkipNumbers(sd, numUnpackSizesInData)) ssi->sdSizes.Size = (size_t)(sd->Data - ssi->sdSizes.Data); - RINOK(ReadID(sd, &type)); + RINOK(ReadID(sd, &type)) } for (;;) @@ -920,14 +930,14 @@ static SRes ReadSubStreamsInfo(CSzAr *p, CSzData *sd, CSubStreamInfo *ssi) if (type == k7zIdCRC) { ssi->sdCRCs.Data = sd->Data; - RINOK(SkipBitUi32s(sd, numSubDigests)); + RINOK(SkipBitUi32s(sd, numSubDigests)) ssi->sdCRCs.Size = (size_t)(sd->Data - ssi->sdCRCs.Data); } else { - RINOK(SkipData(sd)); + RINOK(SkipData(sd)) } - RINOK(ReadID(sd, &type)); + RINOK(ReadID(sd, &type)) } } @@ -940,31 +950,31 @@ static SRes SzReadStreamsInfo(CSzAr *p, { UInt64 type; - SzData_Clear(&ssi->sdSizes); - SzData_Clear(&ssi->sdCRCs); - SzData_Clear(&ssi->sdNumSubStreams); + SzData_CLEAR(&ssi->sdSizes) + SzData_CLEAR(&ssi->sdCRCs) + SzData_CLEAR(&ssi->sdNumSubStreams) *dataOffset = 0; - RINOK(ReadID(sd, &type)); + RINOK(ReadID(sd, &type)) if (type == k7zIdPackInfo) { - RINOK(ReadNumber(sd, dataOffset)); + RINOK(ReadNumber(sd, dataOffset)) if (*dataOffset > p->RangeLimit) return SZ_ERROR_ARCHIVE; - RINOK(ReadPackInfo(p, sd, alloc)); + RINOK(ReadPackInfo(p, sd, alloc)) if (p->PackPositions[p->NumPackStreams] > p->RangeLimit - *dataOffset) return SZ_ERROR_ARCHIVE; - RINOK(ReadID(sd, &type)); + RINOK(ReadID(sd, &type)) } if (type == k7zIdUnpackInfo) { - RINOK(ReadUnpackInfo(p, sd, numFoldersMax, tempBufs, numTempBufs, alloc)); - RINOK(ReadID(sd, &type)); + RINOK(ReadUnpackInfo(p, sd, numFoldersMax, tempBufs, numTempBufs, alloc)) + RINOK(ReadID(sd, &type)) } if (type == k7zIdSubStreamsInfo) { - RINOK(ReadSubStreamsInfo(p, sd, ssi)); - RINOK(ReadID(sd, &type)); + RINOK(ReadSubStreamsInfo(p, sd, ssi)) + RINOK(ReadID(sd, &type)) } else { @@ -976,7 +986,7 @@ static SRes SzReadStreamsInfo(CSzAr *p, } static SRes SzReadAndDecodePackedStreams( - ILookInStream *inStream, + ILookInStreamPtr inStream, CSzData *sd, CBuf *tempBufs, UInt32 numFoldersMax, @@ -988,7 +998,7 @@ static SRes SzReadAndDecodePackedStreams( UInt32 fo; CSubStreamInfo ssi; - RINOK(SzReadStreamsInfo(p, sd, numFoldersMax, NULL, 0, &dataStartPos, &ssi, allocTemp)); + RINOK(SzReadStreamsInfo(p, sd, numFoldersMax, NULL, 0, &dataStartPos, &ssi, allocTemp)) dataStartPos += baseOffset; if (p->NumFolders == 0) @@ -1000,7 +1010,7 @@ static SRes SzReadAndDecodePackedStreams( for (fo = 0; fo < p->NumFolders; fo++) { CBuf *tempBuf = tempBufs + fo; - UInt64 unpackSize = SzAr_GetFolderUnpackSize(p, fo); + const UInt64 unpackSize = SzAr_GetFolderUnpackSize(p, fo); if ((size_t)unpackSize != unpackSize) return SZ_ERROR_MEM; if (!Buf_Create(tempBuf, (size_t)unpackSize, allocTemp)) @@ -1010,8 +1020,8 @@ static SRes SzReadAndDecodePackedStreams( for (fo = 0; fo < p->NumFolders; fo++) { const CBuf *tempBuf = tempBufs + fo; - RINOK(LookInStream_SeekTo(inStream, dataStartPos)); - RINOK(SzAr_DecodeFolder(p, fo, inStream, dataStartPos, tempBuf->data, tempBuf->size, allocTemp)); + RINOK(LookInStream_SeekTo(inStream, dataStartPos)) + RINOK(SzAr_DecodeFolder(p, fo, inStream, dataStartPos, tempBuf->data, tempBuf->size, allocTemp)) } return SZ_OK; @@ -1046,7 +1056,7 @@ static SRes SzReadFileNames(const Byte *data, size_t size, UInt32 numFiles, size return (pos == size) ? SZ_OK : SZ_ERROR_ARCHIVE; } -static MY_NO_INLINE SRes ReadTime(CSzBitUi64s *p, UInt32 num, +static Z7_NO_INLINE SRes ReadTime(CSzBitUi64s *p, UInt32 num, CSzData *sd2, const CBuf *tempBufs, UInt32 numTempBufs, ISzAllocPtr alloc) @@ -1057,22 +1067,22 @@ static MY_NO_INLINE SRes ReadTime(CSzBitUi64s *p, UInt32 num, Byte *defs; Byte external; - RINOK(ReadBitVector(sd2, num, &p->Defs, alloc)); + RINOK(ReadBitVector(sd2, num, &p->Defs, alloc)) - SZ_READ_BYTE_SD(sd2, external); + SZ_READ_BYTE_SD(sd2, external) if (external == 0) sd = *sd2; else { UInt32 index; - RINOK(SzReadNumber32(sd2, &index)); + RINOK(SzReadNumber32(sd2, &index)) if (index >= numTempBufs) return SZ_ERROR_ARCHIVE; sd.Data = tempBufs[index].data; sd.Size = tempBufs[index].size; } - MY_ALLOC_ZE(CNtfsFileTime, p->Vals, num, alloc); + MY_ALLOC_ZE(CNtfsFileTime, p->Vals, num, alloc) vals = p->Vals; defs = p->Defs; for (i = 0; i < num; i++) @@ -1082,7 +1092,7 @@ static MY_NO_INLINE SRes ReadTime(CSzBitUi64s *p, UInt32 num, return SZ_ERROR_ARCHIVE; vals[i].Low = GetUi32(sd.Data); vals[i].High = GetUi32(sd.Data + 4); - SKIP_DATA2(sd, 8); + SKIP_DATA2(sd, 8) } else vals[i].High = vals[i].Low = 0; @@ -1100,7 +1110,7 @@ static MY_NO_INLINE SRes ReadTime(CSzBitUi64s *p, UInt32 num, static SRes SzReadHeader2( CSzArEx *p, /* allocMain */ CSzData *sd, - ILookInStream *inStream, + ILookInStreamPtr inStream, CBuf *tempBufs, UInt32 *numTempBufs, ISzAllocPtr allocMain, ISzAllocPtr allocTemp @@ -1111,26 +1121,26 @@ static SRes SzReadHeader2( { UInt64 type; - SzData_Clear(&ssi.sdSizes); - SzData_Clear(&ssi.sdCRCs); - SzData_Clear(&ssi.sdNumSubStreams); + SzData_CLEAR(&ssi.sdSizes) + SzData_CLEAR(&ssi.sdCRCs) + SzData_CLEAR(&ssi.sdNumSubStreams) ssi.NumSubDigests = 0; ssi.NumTotalSubStreams = 0; - RINOK(ReadID(sd, &type)); + RINOK(ReadID(sd, &type)) if (type == k7zIdArchiveProperties) { for (;;) { UInt64 type2; - RINOK(ReadID(sd, &type2)); + RINOK(ReadID(sd, &type2)) if (type2 == k7zIdEnd) break; - RINOK(SkipData(sd)); + RINOK(SkipData(sd)) } - RINOK(ReadID(sd, &type)); + RINOK(ReadID(sd, &type)) } if (type == k7zIdAdditionalStreamsInfo) @@ -1148,15 +1158,15 @@ static SRes SzReadHeader2( if (res != SZ_OK) return res; - RINOK(ReadID(sd, &type)); + RINOK(ReadID(sd, &type)) } if (type == k7zIdMainStreamsInfo) { RINOK(SzReadStreamsInfo(&p->db, sd, (UInt32)1 << 30, tempBufs, *numTempBufs, - &p->dataPos, &ssi, allocMain)); + &p->dataPos, &ssi, allocMain)) p->dataPos += p->startPosAfterHeader; - RINOK(ReadID(sd, &type)); + RINOK(ReadID(sd, &type)) } if (type == k7zIdEnd) @@ -1174,23 +1184,23 @@ static SRes SzReadHeader2( const Byte *emptyStreams = NULL; const Byte *emptyFiles = NULL; - RINOK(SzReadNumber32(sd, &numFiles)); + RINOK(SzReadNumber32(sd, &numFiles)) p->NumFiles = numFiles; for (;;) { UInt64 type; UInt64 size; - RINOK(ReadID(sd, &type)); + RINOK(ReadID(sd, &type)) if (type == k7zIdEnd) break; - RINOK(ReadNumber(sd, &size)); + RINOK(ReadNumber(sd, &size)) if (size > sd->Size) return SZ_ERROR_ARCHIVE; if (type >= ((UInt32)1 << 8)) { - SKIP_DATA(sd, size); + SKIP_DATA(sd, size) } else switch ((unsigned)type) { @@ -1200,7 +1210,7 @@ static SRes SzReadHeader2( const Byte *namesData; Byte external; - SZ_READ_BYTE(external); + SZ_READ_BYTE(external) if (external == 0) { namesSize = (size_t)size - 1; @@ -1209,7 +1219,7 @@ static SRes SzReadHeader2( else { UInt32 index; - RINOK(SzReadNumber32(sd, &index)); + RINOK(SzReadNumber32(sd, &index)) if (index >= *numTempBufs) return SZ_ERROR_ARCHIVE; namesData = (tempBufs)[index].data; @@ -1218,25 +1228,25 @@ static SRes SzReadHeader2( if ((namesSize & 1) != 0) return SZ_ERROR_ARCHIVE; - MY_ALLOC(size_t, p->FileNameOffsets, numFiles + 1, allocMain); - MY_ALLOC_ZE_AND_CPY(p->FileNames, namesSize, namesData, allocMain); + MY_ALLOC(size_t, p->FileNameOffsets, numFiles + 1, allocMain) + MY_ALLOC_ZE_AND_CPY(p->FileNames, namesSize, namesData, allocMain) RINOK(SzReadFileNames(p->FileNames, namesSize, numFiles, p->FileNameOffsets)) if (external == 0) { - SKIP_DATA(sd, namesSize); + SKIP_DATA(sd, namesSize) } break; } case k7zIdEmptyStream: { - RINOK(RememberBitVector(sd, numFiles, &emptyStreams)); + RINOK(RememberBitVector(sd, numFiles, &emptyStreams)) numEmptyStreams = CountDefinedBits(emptyStreams, numFiles); emptyFiles = NULL; break; } case k7zIdEmptyFile: { - RINOK(RememberBitVector(sd, numEmptyStreams, &emptyFiles)); + RINOK(RememberBitVector(sd, numEmptyStreams, &emptyFiles)) break; } case k7zIdWinAttrib: @@ -1245,22 +1255,22 @@ static SRes SzReadHeader2( CSzData sdSwitch; CSzData *sdPtr; SzBitUi32s_Free(&p->Attribs, allocMain); - RINOK(ReadBitVector(sd, numFiles, &p->Attribs.Defs, allocMain)); + RINOK(ReadBitVector(sd, numFiles, &p->Attribs.Defs, allocMain)) - SZ_READ_BYTE(external); + SZ_READ_BYTE(external) if (external == 0) sdPtr = sd; else { UInt32 index; - RINOK(SzReadNumber32(sd, &index)); + RINOK(SzReadNumber32(sd, &index)) if (index >= *numTempBufs) return SZ_ERROR_ARCHIVE; sdSwitch.Data = (tempBufs)[index].data; sdSwitch.Size = (tempBufs)[index].size; sdPtr = &sdSwitch; } - RINOK(ReadUi32s(sdPtr, numFiles, &p->Attribs, allocMain)); + RINOK(ReadUi32s(sdPtr, numFiles, &p->Attribs, allocMain)) break; } /* @@ -1273,11 +1283,11 @@ static SRes SzReadHeader2( break; } */ - case k7zIdMTime: RINOK(ReadTime(&p->MTime, numFiles, sd, tempBufs, *numTempBufs, allocMain)); break; - case k7zIdCTime: RINOK(ReadTime(&p->CTime, numFiles, sd, tempBufs, *numTempBufs, allocMain)); break; + case k7zIdMTime: RINOK(ReadTime(&p->MTime, numFiles, sd, tempBufs, *numTempBufs, allocMain)) break; + case k7zIdCTime: RINOK(ReadTime(&p->CTime, numFiles, sd, tempBufs, *numTempBufs, allocMain)) break; default: { - SKIP_DATA(sd, size); + SKIP_DATA(sd, size) } } } @@ -1288,10 +1298,10 @@ static SRes SzReadHeader2( for (;;) { UInt64 type; - RINOK(ReadID(sd, &type)); + RINOK(ReadID(sd, &type)) if (type == k7zIdEnd) break; - RINOK(SkipData(sd)); + RINOK(SkipData(sd)) } { @@ -1303,40 +1313,37 @@ static SRes SzReadHeader2( UInt64 unpackPos = 0; const Byte *digestsDefs = NULL; const Byte *digestsVals = NULL; - UInt32 digestsValsIndex = 0; - UInt32 digestIndex; - Byte allDigestsDefined = 0; + UInt32 digestIndex = 0; Byte isDirMask = 0; Byte crcMask = 0; Byte mask = 0x80; - MY_ALLOC(UInt32, p->FolderToFile, p->db.NumFolders + 1, allocMain); - MY_ALLOC_ZE(UInt32, p->FileToFolder, p->NumFiles, allocMain); - MY_ALLOC(UInt64, p->UnpackPositions, p->NumFiles + 1, allocMain); - MY_ALLOC_ZE(Byte, p->IsDirs, (p->NumFiles + 7) >> 3, allocMain); + MY_ALLOC(UInt32, p->FolderToFile, p->db.NumFolders + 1, allocMain) + MY_ALLOC_ZE(UInt32, p->FileToFolder, p->NumFiles, allocMain) + MY_ALLOC(UInt64, p->UnpackPositions, p->NumFiles + 1, allocMain) + MY_ALLOC_ZE(Byte, p->IsDirs, (p->NumFiles + 7) >> 3, allocMain) - RINOK(SzBitUi32s_Alloc(&p->CRCs, p->NumFiles, allocMain)); + RINOK(SzBitUi32s_Alloc(&p->CRCs, p->NumFiles, allocMain)) if (ssi.sdCRCs.Size != 0) { - SZ_READ_BYTE_SD(&ssi.sdCRCs, allDigestsDefined); + Byte allDigestsDefined = 0; + SZ_READ_BYTE_SD_NOCHECK(&ssi.sdCRCs, allDigestsDefined) if (allDigestsDefined) digestsVals = ssi.sdCRCs.Data; else { - size_t numBytes = (ssi.NumSubDigests + 7) >> 3; + const size_t numBytes = (ssi.NumSubDigests + 7) >> 3; digestsDefs = ssi.sdCRCs.Data; digestsVals = digestsDefs + numBytes; } } - digestIndex = 0; - for (i = 0; i < numFiles; i++, mask >>= 1) { if (mask == 0) { - UInt32 byteIndex = (i - 1) >> 3; + const UInt32 byteIndex = (i - 1) >> 3; p->IsDirs[byteIndex] = isDirMask; p->CRCs.Defs[byteIndex] = crcMask; isDirMask = 0; @@ -1374,18 +1381,17 @@ static SRes SzReadHeader2( numSubStreams = 1; if (ssi.sdNumSubStreams.Data) { - RINOK(SzReadNumber32(&ssi.sdNumSubStreams, &numSubStreams)); + RINOK(SzReadNumber32(&ssi.sdNumSubStreams, &numSubStreams)) } remSubStreams = numSubStreams; if (numSubStreams != 0) break; { - UInt64 folderUnpackSize = SzAr_GetFolderUnpackSize(&p->db, folderIndex); + const UInt64 folderUnpackSize = SzAr_GetFolderUnpackSize(&p->db, folderIndex); unpackPos += folderUnpackSize; if (unpackPos < folderUnpackSize) return SZ_ERROR_ARCHIVE; } - folderIndex++; } } @@ -1397,47 +1403,44 @@ static SRes SzReadHeader2( if (--remSubStreams == 0) { - UInt64 folderUnpackSize = SzAr_GetFolderUnpackSize(&p->db, folderIndex); - UInt64 startFolderUnpackPos = p->UnpackPositions[p->FolderToFile[folderIndex]]; + const UInt64 folderUnpackSize = SzAr_GetFolderUnpackSize(&p->db, folderIndex); + const UInt64 startFolderUnpackPos = p->UnpackPositions[p->FolderToFile[folderIndex]]; if (folderUnpackSize < unpackPos - startFolderUnpackPos) return SZ_ERROR_ARCHIVE; unpackPos = startFolderUnpackPos + folderUnpackSize; if (unpackPos < folderUnpackSize) return SZ_ERROR_ARCHIVE; - if (numSubStreams == 1 && SzBitWithVals_Check(&p->db.FolderCRCs, i)) + if (numSubStreams == 1 && SzBitWithVals_Check(&p->db.FolderCRCs, folderIndex)) { p->CRCs.Vals[i] = p->db.FolderCRCs.Vals[folderIndex]; crcMask |= mask; } - else if (allDigestsDefined || (digestsDefs && SzBitArray_Check(digestsDefs, digestIndex))) - { - p->CRCs.Vals[i] = GetUi32(digestsVals + (size_t)digestsValsIndex * 4); - digestsValsIndex++; - crcMask |= mask; - } - folderIndex++; } else { UInt64 v; - RINOK(ReadNumber(&ssi.sdSizes, &v)); + RINOK(ReadNumber(&ssi.sdSizes, &v)) unpackPos += v; if (unpackPos < v) return SZ_ERROR_ARCHIVE; - if (allDigestsDefined || (digestsDefs && SzBitArray_Check(digestsDefs, digestIndex))) + } + if ((crcMask & mask) == 0 && digestsVals) + { + if (!digestsDefs || SzBitArray_Check(digestsDefs, digestIndex)) { - p->CRCs.Vals[i] = GetUi32(digestsVals + (size_t)digestsValsIndex * 4); - digestsValsIndex++; + p->CRCs.Vals[i] = GetUi32(digestsVals); + digestsVals += 4; crcMask |= mask; } + digestIndex++; } } if (mask != 0x80) { - UInt32 byteIndex = (i - 1) >> 3; + const UInt32 byteIndex = (i - 1) >> 3; p->IsDirs[byteIndex] = isDirMask; p->CRCs.Defs[byteIndex] = crcMask; } @@ -1454,7 +1457,7 @@ static SRes SzReadHeader2( break; if (!ssi.sdNumSubStreams.Data) return SZ_ERROR_ARCHIVE; - RINOK(SzReadNumber32(&ssi.sdNumSubStreams, &numSubStreams)); + RINOK(SzReadNumber32(&ssi.sdNumSubStreams, &numSubStreams)) if (numSubStreams != 0) return SZ_ERROR_ARCHIVE; /* @@ -1479,7 +1482,7 @@ static SRes SzReadHeader2( static SRes SzReadHeader( CSzArEx *p, CSzData *sd, - ILookInStream *inStream, + ILookInStreamPtr inStream, ISzAllocPtr allocMain, ISzAllocPtr allocTemp) { @@ -1498,7 +1501,7 @@ static SRes SzReadHeader( for (i = 0; i < NUM_ADDITIONAL_STREAMS_MAX; i++) Buf_Free(tempBufs + i, allocTemp); - RINOK(res); + RINOK(res) if (sd->Size != 0) return SZ_ERROR_FAIL; @@ -1508,7 +1511,7 @@ static SRes SzReadHeader( static SRes SzArEx_Open2( CSzArEx *p, - ILookInStream *inStream, + ILookInStreamPtr inStream, ISzAllocPtr allocMain, ISzAllocPtr allocTemp) { @@ -1521,9 +1524,9 @@ static SRes SzArEx_Open2( SRes res; startArcPos = 0; - RINOK(ILookInStream_Seek(inStream, &startArcPos, SZ_SEEK_CUR)); + RINOK(ILookInStream_Seek(inStream, &startArcPos, SZ_SEEK_CUR)) - RINOK(LookInStream_Read2(inStream, header, k7zStartHeaderSize, SZ_ERROR_NO_ARCHIVE)); + RINOK(LookInStream_Read2(inStream, header, k7zStartHeaderSize, SZ_ERROR_NO_ARCHIVE)) if (!TestSignatureCandidate(header)) return SZ_ERROR_NO_ARCHIVE; @@ -1552,14 +1555,14 @@ static SRes SzArEx_Open2( { Int64 pos = 0; - RINOK(ILookInStream_Seek(inStream, &pos, SZ_SEEK_END)); + RINOK(ILookInStream_Seek(inStream, &pos, SZ_SEEK_END)) if ((UInt64)pos < (UInt64)startArcPos + nextHeaderOffset || (UInt64)pos < (UInt64)startArcPos + k7zStartHeaderSize + nextHeaderOffset || (UInt64)pos < (UInt64)startArcPos + k7zStartHeaderSize + nextHeaderOffset + nextHeaderSize) return SZ_ERROR_INPUT_EOF; } - RINOK(LookInStream_SeekTo(inStream, (UInt64)startArcPos + k7zStartHeaderSize + nextHeaderOffset)); + RINOK(LookInStream_SeekTo(inStream, (UInt64)startArcPos + k7zStartHeaderSize + nextHeaderOffset)) if (!Buf_Create(&buf, nextHeaderSizeT, allocTemp)) return SZ_ERROR_MEM; @@ -1634,10 +1637,10 @@ static SRes SzArEx_Open2( } -SRes SzArEx_Open(CSzArEx *p, ILookInStream *inStream, +SRes SzArEx_Open(CSzArEx *p, ILookInStreamPtr inStream, ISzAllocPtr allocMain, ISzAllocPtr allocTemp) { - SRes res = SzArEx_Open2(p, inStream, allocMain, allocTemp); + const SRes res = SzArEx_Open2(p, inStream, allocMain, allocTemp); if (res != SZ_OK) SzArEx_Free(p, allocMain); return res; @@ -1646,7 +1649,7 @@ SRes SzArEx_Open(CSzArEx *p, ILookInStream *inStream, SRes SzArEx_Extract( const CSzArEx *p, - ILookInStream *inStream, + ILookInStreamPtr inStream, UInt32 fileIndex, UInt32 *blockIndex, Byte **tempBuf, @@ -1656,7 +1659,7 @@ SRes SzArEx_Extract( ISzAllocPtr allocMain, ISzAllocPtr allocTemp) { - UInt32 folderIndex = p->FileToFolder[fileIndex]; + const UInt32 folderIndex = p->FileToFolder[fileIndex]; SRes res = SZ_OK; *offset = 0; @@ -1673,13 +1676,13 @@ SRes SzArEx_Extract( if (*tempBuf == NULL || *blockIndex != folderIndex) { - UInt64 unpackSizeSpec = SzAr_GetFolderUnpackSize(&p->db, folderIndex); + const UInt64 unpackSizeSpec = SzAr_GetFolderUnpackSize(&p->db, folderIndex); /* UInt64 unpackSizeSpec = p->UnpackPositions[p->FolderToFile[(size_t)folderIndex + 1]] - p->UnpackPositions[p->FolderToFile[folderIndex]]; */ - size_t unpackSize = (size_t)unpackSizeSpec; + const size_t unpackSize = (size_t)unpackSizeSpec; if (unpackSize != unpackSizeSpec) return SZ_ERROR_MEM; @@ -1707,7 +1710,7 @@ SRes SzArEx_Extract( if (res == SZ_OK) { - UInt64 unpackPos = p->UnpackPositions[fileIndex]; + const UInt64 unpackPos = p->UnpackPositions[fileIndex]; *offset = (size_t)(unpackPos - p->UnpackPositions[p->FolderToFile[folderIndex]]); *outSizeProcessed = (size_t)(p->UnpackPositions[(size_t)fileIndex + 1] - unpackPos); if (*offset + *outSizeProcessed > *outBufferSize) @@ -1723,8 +1726,8 @@ SRes SzArEx_Extract( size_t SzArEx_GetFileNameUtf16(const CSzArEx *p, size_t fileIndex, UInt16 *dest) { - size_t offs = p->FileNameOffsets[fileIndex]; - size_t len = p->FileNameOffsets[fileIndex + 1] - offs; + const size_t offs = p->FileNameOffsets[fileIndex]; + const size_t len = p->FileNameOffsets[fileIndex + 1] - offs; if (dest != 0) { size_t i; diff --git a/deps/LZMA-SDK/C/7zBuf.h b/deps/LZMA-SDK/C/7zBuf.h index 81d1b5b64..c0ba8a7b6 100644 --- a/deps/LZMA-SDK/C/7zBuf.h +++ b/deps/LZMA-SDK/C/7zBuf.h @@ -1,8 +1,8 @@ /* 7zBuf.h -- Byte Buffer -2017-04-03 : Igor Pavlov : Public domain */ +2023-03-04 : Igor Pavlov : Public domain */ -#ifndef __7Z_BUF_H -#define __7Z_BUF_H +#ifndef ZIP7_INC_7Z_BUF_H +#define ZIP7_INC_7Z_BUF_H #include "7zTypes.h" diff --git a/deps/LZMA-SDK/C/7zCrc.c b/deps/LZMA-SDK/C/7zCrc.c index f186324dd..6e2db9eab 100644 --- a/deps/LZMA-SDK/C/7zCrc.c +++ b/deps/LZMA-SDK/C/7zCrc.c @@ -1,182 +1,218 @@ -/* 7zCrc.c -- CRC32 init -2021-04-01 : Igor Pavlov : Public domain */ +/* 7zCrc.c -- CRC32 calculation and init +2024-03-01 : Igor Pavlov : Public domain */ #include "Precomp.h" #include "7zCrc.h" #include "CpuArch.h" -#define kCrcPoly 0xEDB88320 +// for debug: +// #define __ARM_FEATURE_CRC32 1 -#ifdef MY_CPU_LE - #define CRC_NUM_TABLES 8 +#ifdef __ARM_FEATURE_CRC32 +// #pragma message("__ARM_FEATURE_CRC32") +#define Z7_CRC_HW_FORCE +#endif + +// #define Z7_CRC_DEBUG_BE +#ifdef Z7_CRC_DEBUG_BE +#undef MY_CPU_LE +#define MY_CPU_BE +#endif + +#ifdef Z7_CRC_HW_FORCE + #define Z7_CRC_NUM_TABLES_USE 1 #else - #define CRC_NUM_TABLES 9 - - #define CRC_UINT32_SWAP(v) ((v >> 24) | ((v >> 8) & 0xFF00) | ((v << 8) & 0xFF0000) | (v << 24)) - - UInt32 MY_FAST_CALL CrcUpdateT1_BeT4(UInt32 v, const void *data, size_t size, const UInt32 *table); - UInt32 MY_FAST_CALL CrcUpdateT1_BeT8(UInt32 v, const void *data, size_t size, const UInt32 *table); +#ifdef Z7_CRC_NUM_TABLES + #define Z7_CRC_NUM_TABLES_USE Z7_CRC_NUM_TABLES +#else + #define Z7_CRC_NUM_TABLES_USE 12 +#endif #endif -#ifndef MY_CPU_BE - UInt32 MY_FAST_CALL CrcUpdateT4(UInt32 v, const void *data, size_t size, const UInt32 *table); - UInt32 MY_FAST_CALL CrcUpdateT8(UInt32 v, const void *data, size_t size, const UInt32 *table); +#if Z7_CRC_NUM_TABLES_USE < 1 + #error Stop_Compiling_Bad_Z7_CRC_NUM_TABLES #endif -typedef UInt32 (MY_FAST_CALL *CRC_FUNC)(UInt32 v, const void *data, size_t size, const UInt32 *table); +#if defined(MY_CPU_LE) || (Z7_CRC_NUM_TABLES_USE == 1) + #define Z7_CRC_NUM_TABLES_TOTAL Z7_CRC_NUM_TABLES_USE +#else + #define Z7_CRC_NUM_TABLES_TOTAL (Z7_CRC_NUM_TABLES_USE + 1) +#endif -extern -CRC_FUNC g_CrcUpdateT4; -CRC_FUNC g_CrcUpdateT4; -extern -CRC_FUNC g_CrcUpdateT8; -CRC_FUNC g_CrcUpdateT8; -extern -CRC_FUNC g_CrcUpdateT0_32; -CRC_FUNC g_CrcUpdateT0_32; -extern -CRC_FUNC g_CrcUpdateT0_64; -CRC_FUNC g_CrcUpdateT0_64; -extern -CRC_FUNC g_CrcUpdate; -CRC_FUNC g_CrcUpdate; +#ifndef Z7_CRC_HW_FORCE -UInt32 g_CrcTable[256 * CRC_NUM_TABLES]; - -UInt32 MY_FAST_CALL CrcUpdate(UInt32 v, const void *data, size_t size) -{ - return g_CrcUpdate(v, data, size, g_CrcTable); -} - -UInt32 MY_FAST_CALL CrcCalc(const void *data, size_t size) -{ - return g_CrcUpdate(CRC_INIT_VAL, data, size, g_CrcTable) ^ CRC_INIT_VAL; -} - -#define CRC_UPDATE_BYTE_2(crc, b) (table[((crc) ^ (b)) & 0xFF] ^ ((crc) >> 8)) - -UInt32 MY_FAST_CALL CrcUpdateT1(UInt32 v, const void *data, size_t size, const UInt32 *table); -UInt32 MY_FAST_CALL CrcUpdateT1(UInt32 v, const void *data, size_t size, const UInt32 *table) +#if Z7_CRC_NUM_TABLES_USE == 1 \ + || (!defined(MY_CPU_LE) && !defined(MY_CPU_BE)) +#define CRC_UPDATE_BYTE_2(crc, b) (table[((crc) ^ (b)) & 0xFF] ^ ((crc) >> 8)) +#define Z7_CRC_UPDATE_T1_FUNC_NAME CrcUpdateGT1 +static UInt32 Z7_FASTCALL Z7_CRC_UPDATE_T1_FUNC_NAME(UInt32 v, const void *data, size_t size) { + const UInt32 *table = g_CrcTable; const Byte *p = (const Byte *)data; - const Byte *pEnd = p + size; - for (; p != pEnd; p++) + const Byte *lim = p + size; + for (; p != lim; p++) v = CRC_UPDATE_BYTE_2(v, *p); return v; } +#endif +#if Z7_CRC_NUM_TABLES_USE != 1 +#ifndef MY_CPU_BE + #define FUNC_NAME_LE_2(s) CrcUpdateT ## s + #define FUNC_NAME_LE_1(s) FUNC_NAME_LE_2(s) + #define FUNC_NAME_LE FUNC_NAME_LE_1(Z7_CRC_NUM_TABLES_USE) + UInt32 Z7_FASTCALL FUNC_NAME_LE (UInt32 v, const void *data, size_t size, const UInt32 *table); +#endif +#ifndef MY_CPU_LE + #define FUNC_NAME_BE_2(s) CrcUpdateT1_BeT ## s + #define FUNC_NAME_BE_1(s) FUNC_NAME_BE_2(s) + #define FUNC_NAME_BE FUNC_NAME_BE_1(Z7_CRC_NUM_TABLES_USE) + UInt32 Z7_FASTCALL FUNC_NAME_BE (UInt32 v, const void *data, size_t size, const UInt32 *table); +#endif +#endif + +#endif // Z7_CRC_HW_FORCE + /* ---------- hardware CRC ---------- */ #ifdef MY_CPU_LE #if defined(MY_CPU_ARM_OR_ARM64) - // #pragma message("ARM*") - #if defined(_MSC_VER) - #if defined(MY_CPU_ARM64) - #if (_MSC_VER >= 1910) - #define USE_ARM64_CRC - #endif - #endif - #elif (defined(__clang__) && (__clang_major__ >= 3)) \ - || (defined(__GNUC__) && (__GNUC__ > 4)) + #if (defined(__clang__) && (__clang_major__ >= 3)) \ + || defined(__GNUC__) && (__GNUC__ >= 6) && defined(MY_CPU_ARM64) \ + || defined(__GNUC__) && (__GNUC__ >= 8) #if !defined(__ARM_FEATURE_CRC32) +// #pragma message("!defined(__ARM_FEATURE_CRC32)") +Z7_DIAGNOSTIC_IGNORE_BEGIN_RESERVED_MACRO_IDENTIFIER #define __ARM_FEATURE_CRC32 1 - #if (!defined(__clang__) || (__clang_major__ > 3)) // fix these numbers - #define ATTRIB_CRC __attribute__((__target__("arch=armv8-a+crc"))) +Z7_DIAGNOSTIC_IGNORE_END_RESERVED_MACRO_IDENTIFIER + #define Z7_ARM_FEATURE_CRC32_WAS_SET + #if defined(__clang__) + #if defined(MY_CPU_ARM64) + #define ATTRIB_CRC __attribute__((__target__("crc"))) + #else + #define ATTRIB_CRC __attribute__((__target__("armv8-a,crc"))) #endif + #else + #if defined(MY_CPU_ARM64) +#if !defined(Z7_GCC_VERSION) || (Z7_GCC_VERSION >= 60000) + #define ATTRIB_CRC __attribute__((__target__("+crc"))) +#endif + #else +#if !defined(Z7_GCC_VERSION) || (__GNUC__ >= 8) +#if defined(__ARM_FP) && __GNUC__ >= 8 +// for -mfloat-abi=hard: similar to + #define ATTRIB_CRC __attribute__((__target__("arch=armv8-a+crc+simd"))) +#else + #define ATTRIB_CRC __attribute__((__target__("arch=armv8-a+crc"))) +#endif +#endif + #endif + #endif #endif #if defined(__ARM_FEATURE_CRC32) - #define USE_ARM64_CRC + // #pragma message("") +/* +arm_acle.h (GGC): + before Nov 17, 2017: +#ifdef __ARM_FEATURE_CRC32 + + Nov 17, 2017: gcc10.0 (gcc 9.2.0) checked" +#if __ARM_ARCH >= 8 +#pragma GCC target ("arch=armv8-a+crc") + + Aug 22, 2019: GCC 8.4?, 9.2.1, 10.1: +#ifdef __ARM_FEATURE_CRC32 +#ifdef __ARM_FP +#pragma GCC target ("arch=armv8-a+crc+simd") +#else +#pragma GCC target ("arch=armv8-a+crc") +#endif +*/ +#if defined(__ARM_ARCH) && __ARM_ARCH < 8 +#if defined(Z7_GCC_VERSION) && (__GNUC__ == 8) && (Z7_GCC_VERSION < 80400) \ + || defined(Z7_GCC_VERSION) && (__GNUC__ == 9) && (Z7_GCC_VERSION < 90201) \ + || defined(Z7_GCC_VERSION) && (__GNUC__ == 10) && (Z7_GCC_VERSION < 100100) +Z7_DIAGNOSTIC_IGNORE_BEGIN_RESERVED_MACRO_IDENTIFIER +// #pragma message("#define __ARM_ARCH 8") +#undef __ARM_ARCH +#define __ARM_ARCH 8 +Z7_DIAGNOSTIC_IGNORE_END_RESERVED_MACRO_IDENTIFIER +#endif +#endif + #define Z7_CRC_HW_USE #include #endif + #elif defined(_MSC_VER) + #if defined(MY_CPU_ARM64) + #if (_MSC_VER >= 1910) + #ifdef __clang__ + // #define Z7_CRC_HW_USE + // #include + #else + #define Z7_CRC_HW_USE + #include + #endif + #endif + #endif #endif -#else +#else // non-ARM* -// no hardware CRC - -// #define USE_CRC_EMU - -#ifdef USE_CRC_EMU - -#pragma message("ARM64 CRC emulation") - -MY_FORCE_INLINE -UInt32 __crc32b(UInt32 v, UInt32 data) -{ - const UInt32 *table = g_CrcTable; - v = CRC_UPDATE_BYTE_2(v, (Byte)data); - return v; -} - -MY_FORCE_INLINE -UInt32 __crc32w(UInt32 v, UInt32 data) -{ - const UInt32 *table = g_CrcTable; - v = CRC_UPDATE_BYTE_2(v, (Byte)data); data >>= 8; - v = CRC_UPDATE_BYTE_2(v, (Byte)data); data >>= 8; - v = CRC_UPDATE_BYTE_2(v, (Byte)data); data >>= 8; - v = CRC_UPDATE_BYTE_2(v, (Byte)data); data >>= 8; - return v; -} - -MY_FORCE_INLINE -UInt32 __crc32d(UInt32 v, UInt64 data) -{ - const UInt32 *table = g_CrcTable; - v = CRC_UPDATE_BYTE_2(v, (Byte)data); data >>= 8; - v = CRC_UPDATE_BYTE_2(v, (Byte)data); data >>= 8; - v = CRC_UPDATE_BYTE_2(v, (Byte)data); data >>= 8; - v = CRC_UPDATE_BYTE_2(v, (Byte)data); data >>= 8; - v = CRC_UPDATE_BYTE_2(v, (Byte)data); data >>= 8; - v = CRC_UPDATE_BYTE_2(v, (Byte)data); data >>= 8; - v = CRC_UPDATE_BYTE_2(v, (Byte)data); data >>= 8; - v = CRC_UPDATE_BYTE_2(v, (Byte)data); data >>= 8; - return v; -} - -#endif // USE_CRC_EMU - -#endif // defined(MY_CPU_ARM64) && defined(MY_CPU_LE) - - - -#if defined(USE_ARM64_CRC) || defined(USE_CRC_EMU) - -#define T0_32_UNROLL_BYTES (4 * 4) -#define T0_64_UNROLL_BYTES (4 * 8) - -#ifndef ATTRIB_CRC -#define ATTRIB_CRC +// #define Z7_CRC_HW_USE // for debug : we can test HW-branch of code +#ifdef Z7_CRC_HW_USE +#include "7zCrcEmu.h" #endif + +#endif // non-ARM* + + + +#if defined(Z7_CRC_HW_USE) + // #pragma message("USE ARM HW CRC") -ATTRIB_CRC -UInt32 MY_FAST_CALL CrcUpdateT0_32(UInt32 v, const void *data, size_t size, const UInt32 *table); -ATTRIB_CRC -UInt32 MY_FAST_CALL CrcUpdateT0_32(UInt32 v, const void *data, size_t size, const UInt32 *table) +#ifdef MY_CPU_64BIT + #define CRC_HW_WORD_TYPE UInt64 + #define CRC_HW_WORD_FUNC __crc32d +#else + #define CRC_HW_WORD_TYPE UInt32 + #define CRC_HW_WORD_FUNC __crc32w +#endif + +#define CRC_HW_UNROLL_BYTES (sizeof(CRC_HW_WORD_TYPE) * 4) + +#ifdef ATTRIB_CRC + ATTRIB_CRC +#endif +Z7_NO_INLINE +#ifdef Z7_CRC_HW_FORCE + UInt32 Z7_FASTCALL CrcUpdate +#else + static UInt32 Z7_FASTCALL CrcUpdate_HW +#endif + (UInt32 v, const void *data, size_t size) { const Byte *p = (const Byte *)data; - UNUSED_VAR(table); - - for (; size != 0 && ((unsigned)(ptrdiff_t)p & (T0_32_UNROLL_BYTES - 1)) != 0; size--) + for (; size != 0 && ((unsigned)(ptrdiff_t)p & (CRC_HW_UNROLL_BYTES - 1)) != 0; size--) v = __crc32b(v, *p++); - - if (size >= T0_32_UNROLL_BYTES) + if (size >= CRC_HW_UNROLL_BYTES) { const Byte *lim = p + size; - size &= (T0_32_UNROLL_BYTES - 1); + size &= CRC_HW_UNROLL_BYTES - 1; lim -= size; do { - v = __crc32w(v, *(const UInt32 *)(const void *)(p)); - v = __crc32w(v, *(const UInt32 *)(const void *)(p + 4)); p += 2 * 4; - v = __crc32w(v, *(const UInt32 *)(const void *)(p)); - v = __crc32w(v, *(const UInt32 *)(const void *)(p + 4)); p += 2 * 4; + v = CRC_HW_WORD_FUNC(v, *(const CRC_HW_WORD_TYPE *)(const void *)(p)); + v = CRC_HW_WORD_FUNC(v, *(const CRC_HW_WORD_TYPE *)(const void *)(p + sizeof(CRC_HW_WORD_TYPE))); + p += 2 * sizeof(CRC_HW_WORD_TYPE); + v = CRC_HW_WORD_FUNC(v, *(const CRC_HW_WORD_TYPE *)(const void *)(p)); + v = CRC_HW_WORD_FUNC(v, *(const CRC_HW_WORD_TYPE *)(const void *)(p + sizeof(CRC_HW_WORD_TYPE))); + p += 2 * sizeof(CRC_HW_WORD_TYPE); } while (p != lim); } @@ -187,136 +223,198 @@ UInt32 MY_FAST_CALL CrcUpdateT0_32(UInt32 v, const void *data, size_t size, cons return v; } -ATTRIB_CRC -UInt32 MY_FAST_CALL CrcUpdateT0_64(UInt32 v, const void *data, size_t size, const UInt32 *table); -ATTRIB_CRC -UInt32 MY_FAST_CALL CrcUpdateT0_64(UInt32 v, const void *data, size_t size, const UInt32 *table) -{ - const Byte *p = (const Byte *)data; - UNUSED_VAR(table); - - for (; size != 0 && ((unsigned)(ptrdiff_t)p & (T0_64_UNROLL_BYTES - 1)) != 0; size--) - v = __crc32b(v, *p++); - - if (size >= T0_64_UNROLL_BYTES) - { - const Byte *lim = p + size; - size &= (T0_64_UNROLL_BYTES - 1); - lim -= size; - do - { - v = __crc32d(v, *(const UInt64 *)(const void *)(p)); - v = __crc32d(v, *(const UInt64 *)(const void *)(p + 8)); p += 2 * 8; - v = __crc32d(v, *(const UInt64 *)(const void *)(p)); - v = __crc32d(v, *(const UInt64 *)(const void *)(p + 8)); p += 2 * 8; - } - while (p != lim); - } - - for (; size != 0; size--) - v = __crc32b(v, *p++); - - return v; -} - -#endif // defined(USE_ARM64_CRC) || defined(USE_CRC_EMU) +#ifdef Z7_ARM_FEATURE_CRC32_WAS_SET +Z7_DIAGNOSTIC_IGNORE_BEGIN_RESERVED_MACRO_IDENTIFIER +#undef __ARM_FEATURE_CRC32 +Z7_DIAGNOSTIC_IGNORE_END_RESERVED_MACRO_IDENTIFIER +#undef Z7_ARM_FEATURE_CRC32_WAS_SET +#endif +#endif // defined(Z7_CRC_HW_USE) #endif // MY_CPU_LE +#ifndef Z7_CRC_HW_FORCE -void MY_FAST_CALL CrcGenerateTable() +#if defined(Z7_CRC_HW_USE) || defined(Z7_CRC_UPDATE_T1_FUNC_NAME) +/* +typedef UInt32 (Z7_FASTCALL *Z7_CRC_UPDATE_WITH_TABLE_FUNC) + (UInt32 v, const void *data, size_t size, const UInt32 *table); +Z7_CRC_UPDATE_WITH_TABLE_FUNC g_CrcUpdate; +*/ +static unsigned g_Crc_Algo; +#if (!defined(MY_CPU_LE) && !defined(MY_CPU_BE)) +static unsigned g_Crc_Be; +#endif +#endif // defined(Z7_CRC_HW_USE) || defined(Z7_CRC_UPDATE_T1_FUNC_NAME) + + + +Z7_NO_INLINE +#ifdef Z7_CRC_HW_USE + static UInt32 Z7_FASTCALL CrcUpdate_Base +#else + UInt32 Z7_FASTCALL CrcUpdate +#endif + (UInt32 crc, const void *data, size_t size) +{ +#if Z7_CRC_NUM_TABLES_USE == 1 + return Z7_CRC_UPDATE_T1_FUNC_NAME(crc, data, size); +#else // Z7_CRC_NUM_TABLES_USE != 1 +#ifdef Z7_CRC_UPDATE_T1_FUNC_NAME + if (g_Crc_Algo == 1) + return Z7_CRC_UPDATE_T1_FUNC_NAME(crc, data, size); +#endif + +#ifdef MY_CPU_LE + return FUNC_NAME_LE(crc, data, size, g_CrcTable); +#elif defined(MY_CPU_BE) + return FUNC_NAME_BE(crc, data, size, g_CrcTable); +#else + if (g_Crc_Be) + return FUNC_NAME_BE(crc, data, size, g_CrcTable); + else + return FUNC_NAME_LE(crc, data, size, g_CrcTable); +#endif +#endif // Z7_CRC_NUM_TABLES_USE != 1 +} + + +#ifdef Z7_CRC_HW_USE +Z7_NO_INLINE +UInt32 Z7_FASTCALL CrcUpdate(UInt32 crc, const void *data, size_t size) +{ + if (g_Crc_Algo == 0) + return CrcUpdate_HW(crc, data, size); + return CrcUpdate_Base(crc, data, size); +} +#endif + +#endif // !defined(Z7_CRC_HW_FORCE) + + + +UInt32 Z7_FASTCALL CrcCalc(const void *data, size_t size) +{ + return CrcUpdate(CRC_INIT_VAL, data, size) ^ CRC_INIT_VAL; +} + + +MY_ALIGN(64) +UInt32 g_CrcTable[256 * Z7_CRC_NUM_TABLES_TOTAL]; + + +void Z7_FASTCALL CrcGenerateTable(void) { UInt32 i; for (i = 0; i < 256; i++) { +#if defined(Z7_CRC_HW_FORCE) + g_CrcTable[i] = __crc32b(i, 0); +#else + #define kCrcPoly 0xEDB88320 UInt32 r = i; unsigned j; for (j = 0; j < 8; j++) r = (r >> 1) ^ (kCrcPoly & ((UInt32)0 - (r & 1))); g_CrcTable[i] = r; +#endif } - for (i = 256; i < 256 * CRC_NUM_TABLES; i++) + for (i = 256; i < 256 * Z7_CRC_NUM_TABLES_USE; i++) { - UInt32 r = g_CrcTable[(size_t)i - 256]; + const UInt32 r = g_CrcTable[(size_t)i - 256]; g_CrcTable[i] = g_CrcTable[r & 0xFF] ^ (r >> 8); } - #if CRC_NUM_TABLES < 4 - - g_CrcUpdate = CrcUpdateT1; - - #else - - #ifdef MY_CPU_LE +#if !defined(Z7_CRC_HW_FORCE) && \ + (defined(Z7_CRC_HW_USE) || defined(Z7_CRC_UPDATE_T1_FUNC_NAME) || defined(MY_CPU_BE)) - g_CrcUpdateT4 = CrcUpdateT4; - g_CrcUpdate = CrcUpdateT4; +#if Z7_CRC_NUM_TABLES_USE <= 1 + g_Crc_Algo = 1; +#else // Z7_CRC_NUM_TABLES_USE <= 1 - #if CRC_NUM_TABLES >= 8 - g_CrcUpdateT8 = CrcUpdateT8; - - #ifdef MY_CPU_X86_OR_AMD64 - if (!CPU_Is_InOrder()) - #endif - g_CrcUpdate = CrcUpdateT8; - #endif - - #else +#if defined(MY_CPU_LE) + g_Crc_Algo = Z7_CRC_NUM_TABLES_USE; +#else // !defined(MY_CPU_LE) { - #ifndef MY_CPU_BE +#ifndef MY_CPU_BE UInt32 k = 0x01020304; const Byte *p = (const Byte *)&k; if (p[0] == 4 && p[1] == 3) - { - g_CrcUpdateT4 = CrcUpdateT4; - g_CrcUpdate = CrcUpdateT4; - #if CRC_NUM_TABLES >= 8 - g_CrcUpdateT8 = CrcUpdateT8; - g_CrcUpdate = CrcUpdateT8; - #endif - } + g_Crc_Algo = Z7_CRC_NUM_TABLES_USE; else if (p[0] != 1 || p[1] != 2) - g_CrcUpdate = CrcUpdateT1; + g_Crc_Algo = 1; else - #endif +#endif // MY_CPU_BE { - for (i = 256 * CRC_NUM_TABLES - 1; i >= 256; i--) + for (i = 256 * Z7_CRC_NUM_TABLES_TOTAL - 1; i >= 256; i--) { - UInt32 x = g_CrcTable[(size_t)i - 256]; - g_CrcTable[i] = CRC_UINT32_SWAP(x); + const UInt32 x = g_CrcTable[(size_t)i - 256]; + g_CrcTable[i] = Z7_BSWAP32(x); } - g_CrcUpdateT4 = CrcUpdateT1_BeT4; - g_CrcUpdate = CrcUpdateT1_BeT4; - #if CRC_NUM_TABLES >= 8 - g_CrcUpdateT8 = CrcUpdateT1_BeT8; - g_CrcUpdate = CrcUpdateT1_BeT8; - #endif +#if defined(Z7_CRC_UPDATE_T1_FUNC_NAME) + g_Crc_Algo = Z7_CRC_NUM_TABLES_USE; +#endif +#if (!defined(MY_CPU_LE) && !defined(MY_CPU_BE)) + g_Crc_Be = 1; +#endif } } - #endif - #endif +#endif // !defined(MY_CPU_LE) - #ifdef MY_CPU_LE - #ifdef USE_ARM64_CRC - if (CPU_IsSupported_CRC32()) - { - g_CrcUpdateT0_32 = CrcUpdateT0_32; - g_CrcUpdateT0_64 = CrcUpdateT0_64; - g_CrcUpdate = - #if defined(MY_CPU_ARM) - CrcUpdateT0_32; - #else - CrcUpdateT0_64; - #endif - } - #endif - - #ifdef USE_CRC_EMU - g_CrcUpdateT0_32 = CrcUpdateT0_32; - g_CrcUpdateT0_64 = CrcUpdateT0_64; - g_CrcUpdate = CrcUpdateT0_64; - #endif - #endif +#ifdef MY_CPU_LE +#ifdef Z7_CRC_HW_USE + if (CPU_IsSupported_CRC32()) + g_Crc_Algo = 0; +#endif // Z7_CRC_HW_USE +#endif // MY_CPU_LE + +#endif // Z7_CRC_NUM_TABLES_USE <= 1 +#endif // g_Crc_Algo was declared } + +Z7_CRC_UPDATE_FUNC z7_GetFunc_CrcUpdate(unsigned algo) +{ + if (algo == 0) + return &CrcUpdate; + +#if defined(Z7_CRC_HW_USE) + if (algo == sizeof(CRC_HW_WORD_TYPE) * 8) + { +#ifdef Z7_CRC_HW_FORCE + return &CrcUpdate; +#else + if (g_Crc_Algo == 0) + return &CrcUpdate_HW; +#endif + } +#endif + +#ifndef Z7_CRC_HW_FORCE + if (algo == Z7_CRC_NUM_TABLES_USE) + return + #ifdef Z7_CRC_HW_USE + &CrcUpdate_Base; + #else + &CrcUpdate; + #endif +#endif + + return NULL; +} + +#undef kCrcPoly +#undef Z7_CRC_NUM_TABLES_USE +#undef Z7_CRC_NUM_TABLES_TOTAL +#undef CRC_UPDATE_BYTE_2 +#undef FUNC_NAME_LE_2 +#undef FUNC_NAME_LE_1 +#undef FUNC_NAME_LE +#undef FUNC_NAME_BE_2 +#undef FUNC_NAME_BE_1 +#undef FUNC_NAME_BE + +#undef CRC_HW_UNROLL_BYTES +#undef CRC_HW_WORD_FUNC +#undef CRC_HW_WORD_TYPE diff --git a/deps/LZMA-SDK/C/7zCrc.h b/deps/LZMA-SDK/C/7zCrc.h index 8fd579587..3e6d408b9 100644 --- a/deps/LZMA-SDK/C/7zCrc.h +++ b/deps/LZMA-SDK/C/7zCrc.h @@ -1,8 +1,8 @@ /* 7zCrc.h -- CRC32 calculation -2013-01-18 : Igor Pavlov : Public domain */ +2024-01-22 : Igor Pavlov : Public domain */ -#ifndef __7Z_CRC_H -#define __7Z_CRC_H +#ifndef ZIP7_INC_7Z_CRC_H +#define ZIP7_INC_7Z_CRC_H #include "7zTypes.h" @@ -11,14 +11,17 @@ EXTERN_C_BEGIN extern UInt32 g_CrcTable[]; /* Call CrcGenerateTable one time before other CRC functions */ -void MY_FAST_CALL CrcGenerateTable(void); +void Z7_FASTCALL CrcGenerateTable(void); #define CRC_INIT_VAL 0xFFFFFFFF #define CRC_GET_DIGEST(crc) ((crc) ^ CRC_INIT_VAL) #define CRC_UPDATE_BYTE(crc, b) (g_CrcTable[((crc) ^ (b)) & 0xFF] ^ ((crc) >> 8)) -UInt32 MY_FAST_CALL CrcUpdate(UInt32 crc, const void *data, size_t size); -UInt32 MY_FAST_CALL CrcCalc(const void *data, size_t size); +UInt32 Z7_FASTCALL CrcUpdate(UInt32 crc, const void *data, size_t size); +UInt32 Z7_FASTCALL CrcCalc(const void *data, size_t size); + +typedef UInt32 (Z7_FASTCALL *Z7_CRC_UPDATE_FUNC)(UInt32 v, const void *data, size_t size); +Z7_CRC_UPDATE_FUNC z7_GetFunc_CrcUpdate(unsigned algo); EXTERN_C_END diff --git a/deps/LZMA-SDK/C/7zCrcOpt.c b/deps/LZMA-SDK/C/7zCrcOpt.c index 69fad9ca2..9408017ed 100644 --- a/deps/LZMA-SDK/C/7zCrcOpt.c +++ b/deps/LZMA-SDK/C/7zCrcOpt.c @@ -1,117 +1,199 @@ -/* 7zCrcOpt.c -- CRC32 calculation -2021-02-09 : Igor Pavlov : Public domain */ +/* 7zCrcOpt.c -- CRC32 calculation (optimized functions) +2023-12-07 : Igor Pavlov : Public domain */ #include "Precomp.h" #include "CpuArch.h" +#if !defined(Z7_CRC_NUM_TABLES) || Z7_CRC_NUM_TABLES > 1 + +// for debug only : define Z7_CRC_DEBUG_BE to test big-endian code in little-endian cpu +// #define Z7_CRC_DEBUG_BE +#ifdef Z7_CRC_DEBUG_BE +#undef MY_CPU_LE +#define MY_CPU_BE +#endif + +// the value Z7_CRC_NUM_TABLES_USE must be defined to same value as in 7zCrc.c +#ifdef Z7_CRC_NUM_TABLES +#define Z7_CRC_NUM_TABLES_USE Z7_CRC_NUM_TABLES +#else +#define Z7_CRC_NUM_TABLES_USE 12 +#endif + +#if Z7_CRC_NUM_TABLES_USE % 4 || \ + Z7_CRC_NUM_TABLES_USE < 4 * 1 || \ + Z7_CRC_NUM_TABLES_USE > 4 * 6 + #error Stop_Compiling_Bad_Z7_CRC_NUM_TABLES +#endif + + #ifndef MY_CPU_BE -#define CRC_UPDATE_BYTE_2(crc, b) (table[((crc) ^ (b)) & 0xFF] ^ ((crc) >> 8)) +#define CRC_UPDATE_BYTE_2(crc, b) (table[((crc) ^ (b)) & 0xFF] ^ ((crc) >> 8)) -UInt32 MY_FAST_CALL CrcUpdateT4(UInt32 v, const void *data, size_t size, const UInt32 *table); -UInt32 MY_FAST_CALL CrcUpdateT4(UInt32 v, const void *data, size_t size, const UInt32 *table) +#define Q(n, d) \ + ( (table + ((n) * 4 + 3) * 0x100)[(Byte)(d)] \ + ^ (table + ((n) * 4 + 2) * 0x100)[((d) >> 1 * 8) & 0xFF] \ + ^ (table + ((n) * 4 + 1) * 0x100)[((d) >> 2 * 8) & 0xFF] \ + ^ (table + ((n) * 4 + 0) * 0x100)[((d) >> 3 * 8)] ) + +#define R(a) *((const UInt32 *)(const void *)p + (a)) + +#define CRC_FUNC_PRE_LE2(step) \ +UInt32 Z7_FASTCALL CrcUpdateT ## step (UInt32 v, const void *data, size_t size, const UInt32 *table) + +#define CRC_FUNC_PRE_LE(step) \ + CRC_FUNC_PRE_LE2(step); \ + CRC_FUNC_PRE_LE2(step) + +CRC_FUNC_PRE_LE(Z7_CRC_NUM_TABLES_USE) { const Byte *p = (const Byte *)data; - for (; size > 0 && ((unsigned)(ptrdiff_t)p & 3) != 0; size--, p++) + const Byte *lim; + for (; size && ((unsigned)(ptrdiff_t)p & (7 - (Z7_CRC_NUM_TABLES_USE & 4))) != 0; size--, p++) v = CRC_UPDATE_BYTE_2(v, *p); - for (; size >= 4; size -= 4, p += 4) + lim = p + size; + if (size >= Z7_CRC_NUM_TABLES_USE) { - v ^= *(const UInt32 *)(const void *)p; - v = - (table + 0x300)[((v ) & 0xFF)] - ^ (table + 0x200)[((v >> 8) & 0xFF)] - ^ (table + 0x100)[((v >> 16) & 0xFF)] - ^ (table + 0x000)[((v >> 24))]; + lim -= Z7_CRC_NUM_TABLES_USE; + do + { + v ^= R(0); + { +#if Z7_CRC_NUM_TABLES_USE == 1 * 4 + v = Q(0, v); +#else +#define U2(r, op) \ + { d = R(r); x op Q(Z7_CRC_NUM_TABLES_USE / 4 - 1 - (r), d); } + UInt32 d, x; + U2(1, =) +#if Z7_CRC_NUM_TABLES_USE >= 3 * 4 +#define U(r) U2(r, ^=) + U(2) +#if Z7_CRC_NUM_TABLES_USE >= 4 * 4 + U(3) +#if Z7_CRC_NUM_TABLES_USE >= 5 * 4 + U(4) +#if Z7_CRC_NUM_TABLES_USE >= 6 * 4 + U(5) +#if Z7_CRC_NUM_TABLES_USE >= 7 * 4 +#error Stop_Compiling_Bad_Z7_CRC_NUM_TABLES +#endif +#endif +#endif +#endif +#endif +#undef U +#undef U2 + v = x ^ Q(Z7_CRC_NUM_TABLES_USE / 4 - 1, v); +#endif + } + p += Z7_CRC_NUM_TABLES_USE; + } + while (p <= lim); + lim += Z7_CRC_NUM_TABLES_USE; } - for (; size > 0; size--, p++) + for (; p < lim; p++) v = CRC_UPDATE_BYTE_2(v, *p); return v; } -UInt32 MY_FAST_CALL CrcUpdateT8(UInt32 v, const void *data, size_t size, const UInt32 *table); -UInt32 MY_FAST_CALL CrcUpdateT8(UInt32 v, const void *data, size_t size, const UInt32 *table) -{ - const Byte *p = (const Byte *)data; - for (; size > 0 && ((unsigned)(ptrdiff_t)p & 7) != 0; size--, p++) - v = CRC_UPDATE_BYTE_2(v, *p); - for (; size >= 8; size -= 8, p += 8) - { - UInt32 d; - v ^= *(const UInt32 *)(const void *)p; - v = - (table + 0x700)[((v ) & 0xFF)] - ^ (table + 0x600)[((v >> 8) & 0xFF)] - ^ (table + 0x500)[((v >> 16) & 0xFF)] - ^ (table + 0x400)[((v >> 24))]; - d = *((const UInt32 *)(const void *)p + 1); - v ^= - (table + 0x300)[((d ) & 0xFF)] - ^ (table + 0x200)[((d >> 8) & 0xFF)] - ^ (table + 0x100)[((d >> 16) & 0xFF)] - ^ (table + 0x000)[((d >> 24))]; - } - for (; size > 0; size--, p++) - v = CRC_UPDATE_BYTE_2(v, *p); - return v; -} +#undef CRC_UPDATE_BYTE_2 +#undef R +#undef Q +#undef CRC_FUNC_PRE_LE +#undef CRC_FUNC_PRE_LE2 #endif + + #ifndef MY_CPU_LE -#define CRC_UINT32_SWAP(v) ((v >> 24) | ((v >> 8) & 0xFF00) | ((v << 8) & 0xFF0000) | (v << 24)) +#define CRC_UPDATE_BYTE_2_BE(crc, b) (table[((crc) >> 24) ^ (b)] ^ ((crc) << 8)) -#define CRC_UPDATE_BYTE_2_BE(crc, b) (table[(((crc) >> 24) ^ (b))] ^ ((crc) << 8)) +#define Q(n, d) \ + ( (table + ((n) * 4 + 0) * 0x100)[((d)) & 0xFF] \ + ^ (table + ((n) * 4 + 1) * 0x100)[((d) >> 1 * 8) & 0xFF] \ + ^ (table + ((n) * 4 + 2) * 0x100)[((d) >> 2 * 8) & 0xFF] \ + ^ (table + ((n) * 4 + 3) * 0x100)[((d) >> 3 * 8)] ) -UInt32 MY_FAST_CALL CrcUpdateT1_BeT4(UInt32 v, const void *data, size_t size, const UInt32 *table) +#ifdef Z7_CRC_DEBUG_BE + #define R(a) GetBe32a((const UInt32 *)(const void *)p + (a)) +#else + #define R(a) *((const UInt32 *)(const void *)p + (a)) +#endif + + +#define CRC_FUNC_PRE_BE2(step) \ +UInt32 Z7_FASTCALL CrcUpdateT1_BeT ## step (UInt32 v, const void *data, size_t size, const UInt32 *table) + +#define CRC_FUNC_PRE_BE(step) \ + CRC_FUNC_PRE_BE2(step); \ + CRC_FUNC_PRE_BE2(step) + +CRC_FUNC_PRE_BE(Z7_CRC_NUM_TABLES_USE) { const Byte *p = (const Byte *)data; + const Byte *lim; table += 0x100; - v = CRC_UINT32_SWAP(v); - for (; size > 0 && ((unsigned)(ptrdiff_t)p & 3) != 0; size--, p++) + v = Z7_BSWAP32(v); + for (; size && ((unsigned)(ptrdiff_t)p & (7 - (Z7_CRC_NUM_TABLES_USE & 4))) != 0; size--, p++) v = CRC_UPDATE_BYTE_2_BE(v, *p); - for (; size >= 4; size -= 4, p += 4) + lim = p + size; + if (size >= Z7_CRC_NUM_TABLES_USE) { - v ^= *(const UInt32 *)(const void *)p; - v = - (table + 0x000)[((v ) & 0xFF)] - ^ (table + 0x100)[((v >> 8) & 0xFF)] - ^ (table + 0x200)[((v >> 16) & 0xFF)] - ^ (table + 0x300)[((v >> 24))]; + lim -= Z7_CRC_NUM_TABLES_USE; + do + { + v ^= R(0); + { +#if Z7_CRC_NUM_TABLES_USE == 1 * 4 + v = Q(0, v); +#else +#define U2(r, op) \ + { d = R(r); x op Q(Z7_CRC_NUM_TABLES_USE / 4 - 1 - (r), d); } + UInt32 d, x; + U2(1, =) +#if Z7_CRC_NUM_TABLES_USE >= 3 * 4 +#define U(r) U2(r, ^=) + U(2) +#if Z7_CRC_NUM_TABLES_USE >= 4 * 4 + U(3) +#if Z7_CRC_NUM_TABLES_USE >= 5 * 4 + U(4) +#if Z7_CRC_NUM_TABLES_USE >= 6 * 4 + U(5) +#if Z7_CRC_NUM_TABLES_USE >= 7 * 4 +#error Stop_Compiling_Bad_Z7_CRC_NUM_TABLES +#endif +#endif +#endif +#endif +#endif +#undef U +#undef U2 + v = x ^ Q(Z7_CRC_NUM_TABLES_USE / 4 - 1, v); +#endif + } + p += Z7_CRC_NUM_TABLES_USE; + } + while (p <= lim); + lim += Z7_CRC_NUM_TABLES_USE; } - for (; size > 0; size--, p++) + for (; p < lim; p++) v = CRC_UPDATE_BYTE_2_BE(v, *p); - return CRC_UINT32_SWAP(v); + return Z7_BSWAP32(v); } -UInt32 MY_FAST_CALL CrcUpdateT1_BeT8(UInt32 v, const void *data, size_t size, const UInt32 *table) -{ - const Byte *p = (const Byte *)data; - table += 0x100; - v = CRC_UINT32_SWAP(v); - for (; size > 0 && ((unsigned)(ptrdiff_t)p & 7) != 0; size--, p++) - v = CRC_UPDATE_BYTE_2_BE(v, *p); - for (; size >= 8; size -= 8, p += 8) - { - UInt32 d; - v ^= *(const UInt32 *)(const void *)p; - v = - (table + 0x400)[((v ) & 0xFF)] - ^ (table + 0x500)[((v >> 8) & 0xFF)] - ^ (table + 0x600)[((v >> 16) & 0xFF)] - ^ (table + 0x700)[((v >> 24))]; - d = *((const UInt32 *)(const void *)p + 1); - v ^= - (table + 0x000)[((d ) & 0xFF)] - ^ (table + 0x100)[((d >> 8) & 0xFF)] - ^ (table + 0x200)[((d >> 16) & 0xFF)] - ^ (table + 0x300)[((d >> 24))]; - } - for (; size > 0; size--, p++) - v = CRC_UPDATE_BYTE_2_BE(v, *p); - return CRC_UINT32_SWAP(v); -} +#undef CRC_UPDATE_BYTE_2_BE +#undef R +#undef Q +#undef CRC_FUNC_PRE_BE +#undef CRC_FUNC_PRE_BE2 #endif +#undef Z7_CRC_NUM_TABLES_USE +#endif diff --git a/deps/LZMA-SDK/C/7zDec.c b/deps/LZMA-SDK/C/7zDec.c index fbfd016e1..520cbfd83 100644 --- a/deps/LZMA-SDK/C/7zDec.c +++ b/deps/LZMA-SDK/C/7zDec.c @@ -1,11 +1,11 @@ /* 7zDec.c -- Decoding from 7z folder -2021-02-09 : Igor Pavlov : Public domain */ +: Igor Pavlov : Public domain */ #include "Precomp.h" #include -/* #define _7ZIP_PPMD_SUPPPORT */ +/* #define Z7_PPMD_SUPPORT */ #include "7z.h" #include "7zCrc.h" @@ -16,27 +16,50 @@ #include "Delta.h" #include "LzmaDec.h" #include "Lzma2Dec.h" -#ifdef _7ZIP_PPMD_SUPPPORT +#ifdef Z7_PPMD_SUPPORT #include "Ppmd7.h" #endif #define k_Copy 0 -#ifndef _7Z_NO_METHOD_LZMA2 +#ifndef Z7_NO_METHOD_LZMA2 #define k_LZMA2 0x21 #endif #define k_LZMA 0x30101 #define k_BCJ2 0x303011B -#ifndef _7Z_NO_METHODS_FILTERS + +#if !defined(Z7_NO_METHODS_FILTERS) +#define Z7_USE_BRANCH_FILTER +#endif + +#if !defined(Z7_NO_METHODS_FILTERS) || \ + defined(Z7_USE_NATIVE_BRANCH_FILTER) && defined(MY_CPU_ARM64) +#define Z7_USE_FILTER_ARM64 +#ifndef Z7_USE_BRANCH_FILTER +#define Z7_USE_BRANCH_FILTER +#endif +#define k_ARM64 0xa +#endif + +#if !defined(Z7_NO_METHODS_FILTERS) || \ + defined(Z7_USE_NATIVE_BRANCH_FILTER) && defined(MY_CPU_ARMT) +#define Z7_USE_FILTER_ARMT +#ifndef Z7_USE_BRANCH_FILTER +#define Z7_USE_BRANCH_FILTER +#endif +#define k_ARMT 0x3030701 +#endif + +#ifndef Z7_NO_METHODS_FILTERS #define k_Delta 3 +#define k_RISCV 0xb #define k_BCJ 0x3030103 #define k_PPC 0x3030205 #define k_IA64 0x3030401 #define k_ARM 0x3030501 -#define k_ARMT 0x3030701 #define k_SPARC 0x3030805 #endif -#ifdef _7ZIP_PPMD_SUPPPORT +#ifdef Z7_PPMD_SUPPORT #define k_PPMD 0x30401 @@ -49,12 +72,12 @@ typedef struct UInt64 processed; BoolInt extra; SRes res; - const ILookInStream *inStream; + ILookInStreamPtr inStream; } CByteInToLook; -static Byte ReadByte(const IByteIn *pp) +static Byte ReadByte(IByteInPtr pp) { - CByteInToLook *p = CONTAINER_FROM_VTBL(pp, CByteInToLook, vt); + Z7_CONTAINER_FROM_VTBL_TO_DECL_VAR_pp_vt_p(CByteInToLook) if (p->cur != p->end) return *p->cur++; if (p->res == SZ_OK) @@ -67,13 +90,13 @@ static Byte ReadByte(const IByteIn *pp) p->cur = p->begin; p->end = p->begin + size; if (size != 0) - return *p->cur++;; + return *p->cur++; } p->extra = True; return 0; } -static SRes SzDecodePpmd(const Byte *props, unsigned propsSize, UInt64 inSize, const ILookInStream *inStream, +static SRes SzDecodePpmd(const Byte *props, unsigned propsSize, UInt64 inSize, ILookInStreamPtr inStream, Byte *outBuffer, SizeT outSize, ISzAllocPtr allocMain) { CPpmd7 ppmd; @@ -138,14 +161,14 @@ static SRes SzDecodePpmd(const Byte *props, unsigned propsSize, UInt64 inSize, c #endif -static SRes SzDecodeLzma(const Byte *props, unsigned propsSize, UInt64 inSize, ILookInStream *inStream, +static SRes SzDecodeLzma(const Byte *props, unsigned propsSize, UInt64 inSize, ILookInStreamPtr inStream, Byte *outBuffer, SizeT outSize, ISzAllocPtr allocMain) { CLzmaDec state; SRes res = SZ_OK; - LzmaDec_Construct(&state); - RINOK(LzmaDec_AllocateProbs(&state, props, propsSize, allocMain)); + LzmaDec_CONSTRUCT(&state) + RINOK(LzmaDec_AllocateProbs(&state, props, propsSize, allocMain)) state.dic = outBuffer; state.dicBufSize = outSize; LzmaDec_Init(&state); @@ -196,18 +219,18 @@ static SRes SzDecodeLzma(const Byte *props, unsigned propsSize, UInt64 inSize, I } -#ifndef _7Z_NO_METHOD_LZMA2 +#ifndef Z7_NO_METHOD_LZMA2 -static SRes SzDecodeLzma2(const Byte *props, unsigned propsSize, UInt64 inSize, ILookInStream *inStream, +static SRes SzDecodeLzma2(const Byte *props, unsigned propsSize, UInt64 inSize, ILookInStreamPtr inStream, Byte *outBuffer, SizeT outSize, ISzAllocPtr allocMain) { CLzma2Dec state; SRes res = SZ_OK; - Lzma2Dec_Construct(&state); + Lzma2Dec_CONSTRUCT(&state) if (propsSize != 1) return SZ_ERROR_DATA; - RINOK(Lzma2Dec_AllocateProbs(&state, props[0], allocMain)); + RINOK(Lzma2Dec_AllocateProbs(&state, props[0], allocMain)) state.decoder.dic = outBuffer; state.decoder.dicBufSize = outSize; Lzma2Dec_Init(&state); @@ -257,7 +280,7 @@ static SRes SzDecodeLzma2(const Byte *props, unsigned propsSize, UInt64 inSize, #endif -static SRes SzDecodeCopy(UInt64 inSize, ILookInStream *inStream, Byte *outBuffer) +static SRes SzDecodeCopy(UInt64 inSize, ILookInStreamPtr inStream, Byte *outBuffer) { while (inSize > 0) { @@ -265,13 +288,13 @@ static SRes SzDecodeCopy(UInt64 inSize, ILookInStream *inStream, Byte *outBuffer size_t curSize = (1 << 18); if (curSize > inSize) curSize = (size_t)inSize; - RINOK(ILookInStream_Look(inStream, &inBuf, &curSize)); + RINOK(ILookInStream_Look(inStream, &inBuf, &curSize)) if (curSize == 0) return SZ_ERROR_INPUT_EOF; memcpy(outBuffer, inBuf, curSize); outBuffer += curSize; inSize -= curSize; - RINOK(ILookInStream_Skip(inStream, curSize)); + RINOK(ILookInStream_Skip(inStream, curSize)) } return SZ_OK; } @@ -282,15 +305,16 @@ static BoolInt IS_MAIN_METHOD(UInt32 m) { case k_Copy: case k_LZMA: - #ifndef _7Z_NO_METHOD_LZMA2 + #ifndef Z7_NO_METHOD_LZMA2 case k_LZMA2: - #endif - #ifdef _7ZIP_PPMD_SUPPPORT + #endif + #ifdef Z7_PPMD_SUPPORT case k_PPMD: - #endif + #endif return True; + default: + return False; } - return False; } static BoolInt IS_SUPPORTED_CODER(const CSzCoderInfo *c) @@ -317,7 +341,7 @@ static SRes CheckSupportedFolder(const CSzFolder *f) } - #ifndef _7Z_NO_METHODS_FILTERS + #if defined(Z7_USE_BRANCH_FILTER) if (f->NumCoders == 2) { @@ -333,13 +357,21 @@ static SRes CheckSupportedFolder(const CSzFolder *f) return SZ_ERROR_UNSUPPORTED; switch ((UInt32)c->MethodID) { + #if !defined(Z7_NO_METHODS_FILTERS) case k_Delta: case k_BCJ: case k_PPC: case k_IA64: case k_SPARC: case k_ARM: + case k_RISCV: + #endif + #ifdef Z7_USE_FILTER_ARM64 + case k_ARM64: + #endif + #ifdef Z7_USE_FILTER_ARMT case k_ARMT: + #endif break; default: return SZ_ERROR_UNSUPPORTED; @@ -372,15 +404,16 @@ static SRes CheckSupportedFolder(const CSzFolder *f) return SZ_ERROR_UNSUPPORTED; } -#ifndef _7Z_NO_METHODS_FILTERS -#define CASE_BRA_CONV(isa) case k_ ## isa: isa ## _Convert(outBuffer, outSize, 0, 0); break; -#endif + + + + static SRes SzFolder_Decode2(const CSzFolder *folder, const Byte *propsData, const UInt64 *unpackSizes, const UInt64 *packPositions, - ILookInStream *inStream, UInt64 startPos, + ILookInStreamPtr inStream, UInt64 startPos, Byte *outBuffer, SizeT outSize, ISzAllocPtr allocMain, Byte *tempBuf[]) { @@ -389,7 +422,7 @@ static SRes SzFolder_Decode2(const CSzFolder *folder, SizeT tempSize3 = 0; Byte *tempBuf3 = 0; - RINOK(CheckSupportedFolder(folder)); + RINOK(CheckSupportedFolder(folder)) for (ci = 0; ci < folder->NumCoders; ci++) { @@ -404,8 +437,8 @@ static SRes SzFolder_Decode2(const CSzFolder *folder, SizeT outSizeCur = outSize; if (folder->NumCoders == 4) { - UInt32 indices[] = { 3, 2, 0 }; - UInt64 unpackSize = unpackSizes[ci]; + const UInt32 indices[] = { 3, 2, 0 }; + const UInt64 unpackSize = unpackSizes[ci]; si = indices[ci]; if (ci < 2) { @@ -431,37 +464,37 @@ static SRes SzFolder_Decode2(const CSzFolder *folder, } offset = packPositions[si]; inSize = packPositions[(size_t)si + 1] - offset; - RINOK(LookInStream_SeekTo(inStream, startPos + offset)); + RINOK(LookInStream_SeekTo(inStream, startPos + offset)) if (coder->MethodID == k_Copy) { if (inSize != outSizeCur) /* check it */ return SZ_ERROR_DATA; - RINOK(SzDecodeCopy(inSize, inStream, outBufCur)); + RINOK(SzDecodeCopy(inSize, inStream, outBufCur)) } else if (coder->MethodID == k_LZMA) { - RINOK(SzDecodeLzma(propsData + coder->PropsOffset, coder->PropsSize, inSize, inStream, outBufCur, outSizeCur, allocMain)); + RINOK(SzDecodeLzma(propsData + coder->PropsOffset, coder->PropsSize, inSize, inStream, outBufCur, outSizeCur, allocMain)) } - #ifndef _7Z_NO_METHOD_LZMA2 + #ifndef Z7_NO_METHOD_LZMA2 else if (coder->MethodID == k_LZMA2) { - RINOK(SzDecodeLzma2(propsData + coder->PropsOffset, coder->PropsSize, inSize, inStream, outBufCur, outSizeCur, allocMain)); + RINOK(SzDecodeLzma2(propsData + coder->PropsOffset, coder->PropsSize, inSize, inStream, outBufCur, outSizeCur, allocMain)) } - #endif - #ifdef _7ZIP_PPMD_SUPPPORT + #endif + #ifdef Z7_PPMD_SUPPORT else if (coder->MethodID == k_PPMD) { - RINOK(SzDecodePpmd(propsData + coder->PropsOffset, coder->PropsSize, inSize, inStream, outBufCur, outSizeCur, allocMain)); + RINOK(SzDecodePpmd(propsData + coder->PropsOffset, coder->PropsSize, inSize, inStream, outBufCur, outSizeCur, allocMain)) } - #endif + #endif else return SZ_ERROR_UNSUPPORTED; } else if (coder->MethodID == k_BCJ2) { - UInt64 offset = packPositions[1]; - UInt64 s3Size = packPositions[2] - offset; + const UInt64 offset = packPositions[1]; + const UInt64 s3Size = packPositions[2] - offset; if (ci != 3) return SZ_ERROR_UNSUPPORTED; @@ -473,8 +506,8 @@ static SRes SzFolder_Decode2(const CSzFolder *folder, if (!tempBuf[2] && tempSizes[2] != 0) return SZ_ERROR_MEM; - RINOK(LookInStream_SeekTo(inStream, startPos + offset)); - RINOK(SzDecodeCopy(s3Size, inStream, tempBuf[2])); + RINOK(LookInStream_SeekTo(inStream, startPos + offset)) + RINOK(SzDecodeCopy(s3Size, inStream, tempBuf[2])) if ((tempSizes[0] & 3) != 0 || (tempSizes[1] & 3) != 0 || @@ -493,26 +526,22 @@ static SRes SzFolder_Decode2(const CSzFolder *folder, p.destLim = outBuffer + outSize; Bcj2Dec_Init(&p); - RINOK(Bcj2Dec_Decode(&p)); + RINOK(Bcj2Dec_Decode(&p)) { unsigned i; for (i = 0; i < 4; i++) if (p.bufs[i] != p.lims[i]) return SZ_ERROR_DATA; - - if (!Bcj2Dec_IsFinished(&p)) - return SZ_ERROR_DATA; - - if (p.dest != p.destLim - || p.state != BCJ2_STREAM_MAIN) + if (p.dest != p.destLim || !Bcj2Dec_IsMaybeFinished(&p)) return SZ_ERROR_DATA; } } } - #ifndef _7Z_NO_METHODS_FILTERS +#if defined(Z7_USE_BRANCH_FILTER) else if (ci == 1) { +#if !defined(Z7_NO_METHODS_FILTERS) if (coder->MethodID == k_Delta) { if (coder->PropsSize != 1) @@ -522,31 +551,75 @@ static SRes SzFolder_Decode2(const CSzFolder *folder, Delta_Init(state); Delta_Decode(state, (unsigned)(propsData[coder->PropsOffset]) + 1, outBuffer, outSize); } + continue; } - else +#endif + +#ifdef Z7_USE_FILTER_ARM64 + if (coder->MethodID == k_ARM64) + { + UInt32 pc = 0; + if (coder->PropsSize == 4) + { + pc = GetUi32(propsData + coder->PropsOffset); + if (pc & 3) + return SZ_ERROR_UNSUPPORTED; + } + else if (coder->PropsSize != 0) + return SZ_ERROR_UNSUPPORTED; + z7_BranchConv_ARM64_Dec(outBuffer, outSize, pc); + continue; + } +#endif + +#if !defined(Z7_NO_METHODS_FILTERS) + if (coder->MethodID == k_RISCV) + { + UInt32 pc = 0; + if (coder->PropsSize == 4) + { + pc = GetUi32(propsData + coder->PropsOffset); + if (pc & 1) + return SZ_ERROR_UNSUPPORTED; + } + else if (coder->PropsSize != 0) + return SZ_ERROR_UNSUPPORTED; + z7_BranchConv_RISCV_Dec(outBuffer, outSize, pc); + continue; + } +#endif + +#if !defined(Z7_NO_METHODS_FILTERS) || defined(Z7_USE_FILTER_ARMT) { if (coder->PropsSize != 0) return SZ_ERROR_UNSUPPORTED; + #define CASE_BRA_CONV(isa) case k_ ## isa: Z7_BRANCH_CONV_DEC(isa)(outBuffer, outSize, 0); break; // pc = 0; switch (coder->MethodID) { + #if !defined(Z7_NO_METHODS_FILTERS) case k_BCJ: { - UInt32 state; - x86_Convert_Init(state); - x86_Convert(outBuffer, outSize, 0, &state, 0); + UInt32 state = Z7_BRANCH_CONV_ST_X86_STATE_INIT_VAL; + z7_BranchConvSt_X86_Dec(outBuffer, outSize, 0, &state); // pc = 0 break; } - CASE_BRA_CONV(PPC) + case k_PPC: Z7_BRANCH_CONV_DEC_2(BranchConv_PPC)(outBuffer, outSize, 0); break; // pc = 0; + // CASE_BRA_CONV(PPC) CASE_BRA_CONV(IA64) CASE_BRA_CONV(SPARC) CASE_BRA_CONV(ARM) + #endif + #if !defined(Z7_NO_METHODS_FILTERS) || defined(Z7_USE_FILTER_ARMT) CASE_BRA_CONV(ARMT) + #endif default: return SZ_ERROR_UNSUPPORTED; } + continue; } - } - #endif +#endif + } // (c == 1) +#endif // Z7_USE_BRANCH_FILTER else return SZ_ERROR_UNSUPPORTED; } @@ -556,7 +629,7 @@ static SRes SzFolder_Decode2(const CSzFolder *folder, SRes SzAr_DecodeFolder(const CSzAr *p, UInt32 folderIndex, - ILookInStream *inStream, UInt64 startPos, + ILookInStreamPtr inStream, UInt64 startPos, Byte *outBuffer, size_t outSize, ISzAllocPtr allocMain) { diff --git a/deps/LZMA-SDK/C/7zFile.c b/deps/LZMA-SDK/C/7zFile.c index 13d2efa47..ba5daa133 100644 --- a/deps/LZMA-SDK/C/7zFile.c +++ b/deps/LZMA-SDK/C/7zFile.c @@ -1,5 +1,5 @@ /* 7zFile.c -- File IO -2021-04-29 : Igor Pavlov : Public domain */ +2023-04-02 : Igor Pavlov : Public domain */ #include "Precomp.h" @@ -268,7 +268,7 @@ WRes File_Write(CSzFile *p, const void *data, size_t *size) return errno; if (processed == 0) break; - data = (void *)((Byte *)data + (size_t)processed); + data = (const void *)((const Byte *)data + (size_t)processed); originalSize -= (size_t)processed; *size += (size_t)processed; } @@ -287,7 +287,8 @@ WRes File_Seek(CSzFile *p, Int64 *pos, ESzSeek origin) DWORD moveMethod; UInt32 low = (UInt32)*pos; LONG high = (LONG)((UInt64)*pos >> 16 >> 16); /* for case when UInt64 is 32-bit only */ - switch (origin) + // (int) to eliminate clang warning + switch ((int)origin) { case SZ_SEEK_SET: moveMethod = FILE_BEGIN; break; case SZ_SEEK_CUR: moveMethod = FILE_CURRENT; break; @@ -308,7 +309,7 @@ WRes File_Seek(CSzFile *p, Int64 *pos, ESzSeek origin) int moveMethod; // = origin; - switch (origin) + switch ((int)origin) { case SZ_SEEK_SET: moveMethod = SEEK_SET; break; case SZ_SEEK_CUR: moveMethod = SEEK_CUR; break; @@ -387,10 +388,10 @@ WRes File_GetLength(CSzFile *p, UInt64 *length) /* ---------- FileSeqInStream ---------- */ -static SRes FileSeqInStream_Read(const ISeqInStream *pp, void *buf, size_t *size) +static SRes FileSeqInStream_Read(ISeqInStreamPtr pp, void *buf, size_t *size) { - CFileSeqInStream *p = CONTAINER_FROM_VTBL(pp, CFileSeqInStream, vt); - WRes wres = File_Read(&p->file, buf, size); + Z7_CONTAINER_FROM_VTBL_TO_DECL_VAR_pp_vt_p(CFileSeqInStream) + const WRes wres = File_Read(&p->file, buf, size); p->wres = wres; return (wres == 0) ? SZ_OK : SZ_ERROR_READ; } @@ -403,18 +404,18 @@ void FileSeqInStream_CreateVTable(CFileSeqInStream *p) /* ---------- FileInStream ---------- */ -static SRes FileInStream_Read(const ISeekInStream *pp, void *buf, size_t *size) +static SRes FileInStream_Read(ISeekInStreamPtr pp, void *buf, size_t *size) { - CFileInStream *p = CONTAINER_FROM_VTBL(pp, CFileInStream, vt); - WRes wres = File_Read(&p->file, buf, size); + Z7_CONTAINER_FROM_VTBL_TO_DECL_VAR_pp_vt_p(CFileInStream) + const WRes wres = File_Read(&p->file, buf, size); p->wres = wres; return (wres == 0) ? SZ_OK : SZ_ERROR_READ; } -static SRes FileInStream_Seek(const ISeekInStream *pp, Int64 *pos, ESzSeek origin) +static SRes FileInStream_Seek(ISeekInStreamPtr pp, Int64 *pos, ESzSeek origin) { - CFileInStream *p = CONTAINER_FROM_VTBL(pp, CFileInStream, vt); - WRes wres = File_Seek(&p->file, pos, origin); + Z7_CONTAINER_FROM_VTBL_TO_DECL_VAR_pp_vt_p(CFileInStream) + const WRes wres = File_Seek(&p->file, pos, origin); p->wres = wres; return (wres == 0) ? SZ_OK : SZ_ERROR_READ; } @@ -428,10 +429,10 @@ void FileInStream_CreateVTable(CFileInStream *p) /* ---------- FileOutStream ---------- */ -static size_t FileOutStream_Write(const ISeqOutStream *pp, const void *data, size_t size) +static size_t FileOutStream_Write(ISeqOutStreamPtr pp, const void *data, size_t size) { - CFileOutStream *p = CONTAINER_FROM_VTBL(pp, CFileOutStream, vt); - WRes wres = File_Write(&p->file, data, &size); + Z7_CONTAINER_FROM_VTBL_TO_DECL_VAR_pp_vt_p(CFileOutStream) + const WRes wres = File_Write(&p->file, data, &size); p->wres = wres; return size; } diff --git a/deps/LZMA-SDK/C/7zFile.h b/deps/LZMA-SDK/C/7zFile.h index 788abb6b9..f5069cd9e 100644 --- a/deps/LZMA-SDK/C/7zFile.h +++ b/deps/LZMA-SDK/C/7zFile.h @@ -1,8 +1,8 @@ /* 7zFile.h -- File IO -2021-02-15 : Igor Pavlov : Public domain */ +2023-03-05 : Igor Pavlov : Public domain */ -#ifndef __7Z_FILE_H -#define __7Z_FILE_H +#ifndef ZIP7_INC_FILE_H +#define ZIP7_INC_FILE_H #ifdef _WIN32 #define USE_WINDOWS_FILE @@ -10,7 +10,8 @@ #endif #ifdef USE_WINDOWS_FILE -#include +#include "7zWindows.h" + #else // note: USE_FOPEN mode is limited to 32-bit file size // #define USE_FOPEN diff --git a/deps/LZMA-SDK/C/7zStream.c b/deps/LZMA-SDK/C/7zStream.c index 28a14604f..74e75b65a 100644 --- a/deps/LZMA-SDK/C/7zStream.c +++ b/deps/LZMA-SDK/C/7zStream.c @@ -1,5 +1,5 @@ /* 7zStream.c -- 7z Stream functions -2021-02-09 : Igor Pavlov : Public domain */ +2023-04-02 : Igor Pavlov : Public domain */ #include "Precomp.h" @@ -7,12 +7,33 @@ #include "7zTypes.h" -SRes SeqInStream_Read2(const ISeqInStream *stream, void *buf, size_t size, SRes errorType) + +SRes SeqInStream_ReadMax(ISeqInStreamPtr stream, void *buf, size_t *processedSize) +{ + size_t size = *processedSize; + *processedSize = 0; + while (size != 0) + { + size_t cur = size; + const SRes res = ISeqInStream_Read(stream, buf, &cur); + *processedSize += cur; + buf = (void *)((Byte *)buf + cur); + size -= cur; + if (res != SZ_OK) + return res; + if (cur == 0) + return SZ_OK; + } + return SZ_OK; +} + +/* +SRes SeqInStream_Read2(ISeqInStreamPtr stream, void *buf, size_t size, SRes errorType) { while (size != 0) { size_t processed = size; - RINOK(ISeqInStream_Read(stream, buf, &processed)); + RINOK(ISeqInStream_Read(stream, buf, &processed)) if (processed == 0) return errorType; buf = (void *)((Byte *)buf + processed); @@ -21,42 +42,44 @@ SRes SeqInStream_Read2(const ISeqInStream *stream, void *buf, size_t size, SRes return SZ_OK; } -SRes SeqInStream_Read(const ISeqInStream *stream, void *buf, size_t size) +SRes SeqInStream_Read(ISeqInStreamPtr stream, void *buf, size_t size) { return SeqInStream_Read2(stream, buf, size, SZ_ERROR_INPUT_EOF); } +*/ -SRes SeqInStream_ReadByte(const ISeqInStream *stream, Byte *buf) + +SRes SeqInStream_ReadByte(ISeqInStreamPtr stream, Byte *buf) { size_t processed = 1; - RINOK(ISeqInStream_Read(stream, buf, &processed)); + RINOK(ISeqInStream_Read(stream, buf, &processed)) return (processed == 1) ? SZ_OK : SZ_ERROR_INPUT_EOF; } -SRes LookInStream_SeekTo(const ILookInStream *stream, UInt64 offset) +SRes LookInStream_SeekTo(ILookInStreamPtr stream, UInt64 offset) { Int64 t = (Int64)offset; return ILookInStream_Seek(stream, &t, SZ_SEEK_SET); } -SRes LookInStream_LookRead(const ILookInStream *stream, void *buf, size_t *size) +SRes LookInStream_LookRead(ILookInStreamPtr stream, void *buf, size_t *size) { const void *lookBuf; if (*size == 0) return SZ_OK; - RINOK(ILookInStream_Look(stream, &lookBuf, size)); + RINOK(ILookInStream_Look(stream, &lookBuf, size)) memcpy(buf, lookBuf, *size); return ILookInStream_Skip(stream, *size); } -SRes LookInStream_Read2(const ILookInStream *stream, void *buf, size_t size, SRes errorType) +SRes LookInStream_Read2(ILookInStreamPtr stream, void *buf, size_t size, SRes errorType) { while (size != 0) { size_t processed = size; - RINOK(ILookInStream_Read(stream, buf, &processed)); + RINOK(ILookInStream_Read(stream, buf, &processed)) if (processed == 0) return errorType; buf = (void *)((Byte *)buf + processed); @@ -65,16 +88,16 @@ SRes LookInStream_Read2(const ILookInStream *stream, void *buf, size_t size, SRe return SZ_OK; } -SRes LookInStream_Read(const ILookInStream *stream, void *buf, size_t size) +SRes LookInStream_Read(ILookInStreamPtr stream, void *buf, size_t size) { return LookInStream_Read2(stream, buf, size, SZ_ERROR_INPUT_EOF); } -#define GET_LookToRead2 CLookToRead2 *p = CONTAINER_FROM_VTBL(pp, CLookToRead2, vt); +#define GET_LookToRead2 Z7_CONTAINER_FROM_VTBL_TO_DECL_VAR_pp_vt_p(CLookToRead2) -static SRes LookToRead2_Look_Lookahead(const ILookInStream *pp, const void **buf, size_t *size) +static SRes LookToRead2_Look_Lookahead(ILookInStreamPtr pp, const void **buf, size_t *size) { SRes res = SZ_OK; GET_LookToRead2 @@ -93,7 +116,7 @@ static SRes LookToRead2_Look_Lookahead(const ILookInStream *pp, const void **buf return res; } -static SRes LookToRead2_Look_Exact(const ILookInStream *pp, const void **buf, size_t *size) +static SRes LookToRead2_Look_Exact(ILookInStreamPtr pp, const void **buf, size_t *size) { SRes res = SZ_OK; GET_LookToRead2 @@ -113,14 +136,14 @@ static SRes LookToRead2_Look_Exact(const ILookInStream *pp, const void **buf, si return res; } -static SRes LookToRead2_Skip(const ILookInStream *pp, size_t offset) +static SRes LookToRead2_Skip(ILookInStreamPtr pp, size_t offset) { GET_LookToRead2 p->pos += offset; return SZ_OK; } -static SRes LookToRead2_Read(const ILookInStream *pp, void *buf, size_t *size) +static SRes LookToRead2_Read(ILookInStreamPtr pp, void *buf, size_t *size) { GET_LookToRead2 size_t rem = p->size - p->pos; @@ -134,7 +157,7 @@ static SRes LookToRead2_Read(const ILookInStream *pp, void *buf, size_t *size) return SZ_OK; } -static SRes LookToRead2_Seek(const ILookInStream *pp, Int64 *pos, ESzSeek origin) +static SRes LookToRead2_Seek(ILookInStreamPtr pp, Int64 *pos, ESzSeek origin) { GET_LookToRead2 p->pos = p->size = 0; @@ -153,9 +176,9 @@ void LookToRead2_CreateVTable(CLookToRead2 *p, int lookahead) -static SRes SecToLook_Read(const ISeqInStream *pp, void *buf, size_t *size) +static SRes SecToLook_Read(ISeqInStreamPtr pp, void *buf, size_t *size) { - CSecToLook *p = CONTAINER_FROM_VTBL(pp, CSecToLook, vt); + Z7_CONTAINER_FROM_VTBL_TO_DECL_VAR_pp_vt_p(CSecToLook) return LookInStream_LookRead(p->realStream, buf, size); } @@ -164,9 +187,9 @@ void SecToLook_CreateVTable(CSecToLook *p) p->vt.Read = SecToLook_Read; } -static SRes SecToRead_Read(const ISeqInStream *pp, void *buf, size_t *size) +static SRes SecToRead_Read(ISeqInStreamPtr pp, void *buf, size_t *size) { - CSecToRead *p = CONTAINER_FROM_VTBL(pp, CSecToRead, vt); + Z7_CONTAINER_FROM_VTBL_TO_DECL_VAR_pp_vt_p(CSecToRead) return ILookInStream_Read(p->realStream, buf, size); } diff --git a/deps/LZMA-SDK/C/7zTypes.h b/deps/LZMA-SDK/C/7zTypes.h index f7d707183..5b77420a3 100644 --- a/deps/LZMA-SDK/C/7zTypes.h +++ b/deps/LZMA-SDK/C/7zTypes.h @@ -1,8 +1,8 @@ /* 7zTypes.h -- Basic types -2022-04-01 : Igor Pavlov : Public domain */ +2024-01-24 : Igor Pavlov : Public domain */ -#ifndef __7Z_TYPES_H -#define __7Z_TYPES_H +#ifndef ZIP7_7Z_TYPES_H +#define ZIP7_7Z_TYPES_H #ifdef _WIN32 /* #include */ @@ -52,6 +52,11 @@ typedef int SRes; #define MY_ALIGN(n) #endif #else + /* + // C11/C++11: + #include + #define MY_ALIGN(n) alignas(n) + */ #define MY_ALIGN(n) __attribute__ ((aligned(n))) #endif @@ -62,7 +67,7 @@ typedef int SRes; typedef unsigned WRes; #define MY_SRes_HRESULT_FROM_WRes(x) HRESULT_FROM_WIN32(x) -// #define MY_HRES_ERROR__INTERNAL_ERROR MY_SRes_HRESULT_FROM_WRes(ERROR_INTERNAL_ERROR) +// #define MY_HRES_ERROR_INTERNAL_ERROR MY_SRes_HRESULT_FROM_WRes(ERROR_INTERNAL_ERROR) #else // _WIN32 @@ -70,13 +75,13 @@ typedef unsigned WRes; typedef int WRes; // (FACILITY_ERRNO = 0x800) is 7zip's FACILITY constant to represent (errno) errors in HRESULT -#define MY__FACILITY_ERRNO 0x800 -#define MY__FACILITY_WIN32 7 -#define MY__FACILITY__WRes MY__FACILITY_ERRNO +#define MY_FACILITY_ERRNO 0x800 +#define MY_FACILITY_WIN32 7 +#define MY_FACILITY_WRes MY_FACILITY_ERRNO #define MY_HRESULT_FROM_errno_CONST_ERROR(x) ((HRESULT)( \ ( (HRESULT)(x) & 0x0000FFFF) \ - | (MY__FACILITY__WRes << 16) \ + | (MY_FACILITY_WRes << 16) \ | (HRESULT)0x80000000 )) #define MY_SRes_HRESULT_FROM_WRes(x) \ @@ -120,17 +125,17 @@ typedef int WRes; #define ERROR_INVALID_REPARSE_DATA ((HRESULT)0x80071128L) #define ERROR_REPARSE_TAG_INVALID ((HRESULT)0x80071129L) -// if (MY__FACILITY__WRes != FACILITY_WIN32), +// if (MY_FACILITY_WRes != FACILITY_WIN32), // we use FACILITY_WIN32 for COM errors: #define E_OUTOFMEMORY ((HRESULT)0x8007000EL) #define E_INVALIDARG ((HRESULT)0x80070057L) -#define MY__E_ERROR_NEGATIVE_SEEK ((HRESULT)0x80070083L) +#define MY_E_ERROR_NEGATIVE_SEEK ((HRESULT)0x80070083L) /* // we can use FACILITY_ERRNO for some COM errors, that have errno equivalents: #define E_OUTOFMEMORY MY_HRESULT_FROM_errno_CONST_ERROR(ENOMEM) #define E_INVALIDARG MY_HRESULT_FROM_errno_CONST_ERROR(EINVAL) -#define MY__E_ERROR_NEGATIVE_SEEK MY_HRESULT_FROM_errno_CONST_ERROR(EINVAL) +#define MY_E_ERROR_NEGATIVE_SEEK MY_HRESULT_FROM_errno_CONST_ERROR(EINVAL) */ #define TEXT(quote) quote @@ -156,18 +161,18 @@ typedef int WRes; #ifndef RINOK -#define RINOK(x) { int __result__ = (x); if (__result__ != 0) return __result__; } +#define RINOK(x) { const int _result_ = (x); if (_result_ != 0) return _result_; } #endif #ifndef RINOK_WRes -#define RINOK_WRes(x) { WRes __result__ = (x); if (__result__ != 0) return __result__; } +#define RINOK_WRes(x) { const WRes _result_ = (x); if (_result_ != 0) return _result_; } #endif typedef unsigned char Byte; typedef short Int16; typedef unsigned short UInt16; -#ifdef _LZMA_UINT32_IS_ULONG +#ifdef Z7_DECL_Int32_AS_long typedef long Int32; typedef unsigned long UInt32; #else @@ -206,37 +211,51 @@ typedef size_t SIZE_T; #endif // _WIN32 -#define MY_HRES_ERROR__INTERNAL_ERROR ((HRESULT)0x8007054FL) +#define MY_HRES_ERROR_INTERNAL_ERROR ((HRESULT)0x8007054FL) -#ifdef _SZ_NO_INT_64 - -/* define _SZ_NO_INT_64, if your compiler doesn't support 64-bit integers. - NOTES: Some code will work incorrectly in that case! */ +#ifdef Z7_DECL_Int64_AS_long typedef long Int64; typedef unsigned long UInt64; #else -#if defined(_MSC_VER) || defined(__BORLANDC__) +#if (defined(_MSC_VER) || defined(__BORLANDC__)) && !defined(__clang__) typedef __int64 Int64; typedef unsigned __int64 UInt64; -#define UINT64_CONST(n) n +#else +#if defined(__clang__) || defined(__GNUC__) +#include +typedef int64_t Int64; +typedef uint64_t UInt64; #else typedef long long int Int64; typedef unsigned long long int UInt64; -#define UINT64_CONST(n) n ## ULL +// #define UINT64_CONST(n) n ## ULL +#endif #endif #endif -#ifdef _LZMA_NO_SYSTEM_SIZE_T -typedef UInt32 SizeT; +#define UINT64_CONST(n) n + + +#ifdef Z7_DECL_SizeT_AS_unsigned_int +typedef unsigned int SizeT; #else typedef size_t SizeT; #endif +/* +#if (defined(_MSC_VER) && _MSC_VER <= 1200) +typedef size_t MY_uintptr_t; +#else +#include +typedef uintptr_t MY_uintptr_t; +#endif +*/ + typedef int BoolInt; /* typedef BoolInt Bool; */ #define True 1 @@ -244,23 +263,23 @@ typedef int BoolInt; #ifdef _WIN32 -#define MY_STD_CALL __stdcall +#define Z7_STDCALL __stdcall #else -#define MY_STD_CALL +#define Z7_STDCALL #endif #ifdef _MSC_VER #if _MSC_VER >= 1300 -#define MY_NO_INLINE __declspec(noinline) +#define Z7_NO_INLINE __declspec(noinline) #else -#define MY_NO_INLINE +#define Z7_NO_INLINE #endif -#define MY_FORCE_INLINE __forceinline +#define Z7_FORCE_INLINE __forceinline -#define MY_CDECL __cdecl -#define MY_FAST_CALL __fastcall +#define Z7_CDECL __cdecl +#define Z7_FASTCALL __fastcall #else // _MSC_VER @@ -268,27 +287,25 @@ typedef int BoolInt; || (defined(__clang__) && (__clang_major__ >= 4)) \ || defined(__INTEL_COMPILER) \ || defined(__xlC__) -#define MY_NO_INLINE __attribute__((noinline)) -// #define MY_FORCE_INLINE __attribute__((always_inline)) inline +#define Z7_NO_INLINE __attribute__((noinline)) +#define Z7_FORCE_INLINE __attribute__((always_inline)) inline #else -#define MY_NO_INLINE +#define Z7_NO_INLINE +#define Z7_FORCE_INLINE #endif -#define MY_FORCE_INLINE - - -#define MY_CDECL +#define Z7_CDECL #if defined(_M_IX86) \ || defined(__i386__) -// #define MY_FAST_CALL __attribute__((fastcall)) -// #define MY_FAST_CALL __attribute__((cdecl)) -#define MY_FAST_CALL +// #define Z7_FASTCALL __attribute__((fastcall)) +// #define Z7_FASTCALL __attribute__((cdecl)) +#define Z7_FASTCALL #elif defined(MY_CPU_AMD64) -// #define MY_FAST_CALL __attribute__((ms_abi)) -#define MY_FAST_CALL +// #define Z7_FASTCALL __attribute__((ms_abi)) +#define Z7_FASTCALL #else -#define MY_FAST_CALL +#define Z7_FASTCALL #endif #endif // _MSC_VER @@ -296,41 +313,49 @@ typedef int BoolInt; /* The following interfaces use first parameter as pointer to structure */ -typedef struct IByteIn IByteIn; -struct IByteIn +// #define Z7_C_IFACE_CONST_QUAL +#define Z7_C_IFACE_CONST_QUAL const + +#define Z7_C_IFACE_DECL(a) \ + struct a ## _; \ + typedef Z7_C_IFACE_CONST_QUAL struct a ## _ * a ## Ptr; \ + typedef struct a ## _ a; \ + struct a ## _ + + +Z7_C_IFACE_DECL (IByteIn) { - Byte (*Read)(const IByteIn *p); /* reads one byte, returns 0 in case of EOF or error */ + Byte (*Read)(IByteInPtr p); /* reads one byte, returns 0 in case of EOF or error */ }; #define IByteIn_Read(p) (p)->Read(p) -typedef struct IByteOut IByteOut; -struct IByteOut +Z7_C_IFACE_DECL (IByteOut) { - void (*Write)(const IByteOut *p, Byte b); + void (*Write)(IByteOutPtr p, Byte b); }; #define IByteOut_Write(p, b) (p)->Write(p, b) -typedef struct ISeqInStream ISeqInStream; -struct ISeqInStream +Z7_C_IFACE_DECL (ISeqInStream) { - SRes (*Read)(const ISeqInStream *p, void *buf, size_t *size); + SRes (*Read)(ISeqInStreamPtr p, void *buf, size_t *size); /* if (input(*size) != 0 && output(*size) == 0) means end_of_stream. (output(*size) < input(*size)) is allowed */ }; #define ISeqInStream_Read(p, buf, size) (p)->Read(p, buf, size) +/* try to read as much as avail in stream and limited by (*processedSize) */ +SRes SeqInStream_ReadMax(ISeqInStreamPtr stream, void *buf, size_t *processedSize); /* it can return SZ_ERROR_INPUT_EOF */ -SRes SeqInStream_Read(const ISeqInStream *stream, void *buf, size_t size); -SRes SeqInStream_Read2(const ISeqInStream *stream, void *buf, size_t size, SRes errorType); -SRes SeqInStream_ReadByte(const ISeqInStream *stream, Byte *buf); +// SRes SeqInStream_Read(ISeqInStreamPtr stream, void *buf, size_t size); +// SRes SeqInStream_Read2(ISeqInStreamPtr stream, void *buf, size_t size, SRes errorType); +SRes SeqInStream_ReadByte(ISeqInStreamPtr stream, Byte *buf); -typedef struct ISeqOutStream ISeqOutStream; -struct ISeqOutStream +Z7_C_IFACE_DECL (ISeqOutStream) { - size_t (*Write)(const ISeqOutStream *p, const void *buf, size_t size); + size_t (*Write)(ISeqOutStreamPtr p, const void *buf, size_t size); /* Returns: result - the number of actually written bytes. (result < size) means error */ }; @@ -344,29 +369,26 @@ typedef enum } ESzSeek; -typedef struct ISeekInStream ISeekInStream; -struct ISeekInStream +Z7_C_IFACE_DECL (ISeekInStream) { - SRes (*Read)(const ISeekInStream *p, void *buf, size_t *size); /* same as ISeqInStream::Read */ - SRes (*Seek)(const ISeekInStream *p, Int64 *pos, ESzSeek origin); + SRes (*Read)(ISeekInStreamPtr p, void *buf, size_t *size); /* same as ISeqInStream::Read */ + SRes (*Seek)(ISeekInStreamPtr p, Int64 *pos, ESzSeek origin); }; #define ISeekInStream_Read(p, buf, size) (p)->Read(p, buf, size) #define ISeekInStream_Seek(p, pos, origin) (p)->Seek(p, pos, origin) -typedef struct ILookInStream ILookInStream; -struct ILookInStream +Z7_C_IFACE_DECL (ILookInStream) { - SRes (*Look)(const ILookInStream *p, const void **buf, size_t *size); + SRes (*Look)(ILookInStreamPtr p, const void **buf, size_t *size); /* if (input(*size) != 0 && output(*size) == 0) means end_of_stream. (output(*size) > input(*size)) is not allowed (output(*size) < input(*size)) is allowed */ - SRes (*Skip)(const ILookInStream *p, size_t offset); + SRes (*Skip)(ILookInStreamPtr p, size_t offset); /* offset must be <= output(*size) of Look */ - - SRes (*Read)(const ILookInStream *p, void *buf, size_t *size); + SRes (*Read)(ILookInStreamPtr p, void *buf, size_t *size); /* reads directly (without buffer). It's same as ISeqInStream::Read */ - SRes (*Seek)(const ILookInStream *p, Int64 *pos, ESzSeek origin); + SRes (*Seek)(ILookInStreamPtr p, Int64 *pos, ESzSeek origin); }; #define ILookInStream_Look(p, buf, size) (p)->Look(p, buf, size) @@ -375,19 +397,18 @@ struct ILookInStream #define ILookInStream_Seek(p, pos, origin) (p)->Seek(p, pos, origin) -SRes LookInStream_LookRead(const ILookInStream *stream, void *buf, size_t *size); -SRes LookInStream_SeekTo(const ILookInStream *stream, UInt64 offset); +SRes LookInStream_LookRead(ILookInStreamPtr stream, void *buf, size_t *size); +SRes LookInStream_SeekTo(ILookInStreamPtr stream, UInt64 offset); /* reads via ILookInStream::Read */ -SRes LookInStream_Read2(const ILookInStream *stream, void *buf, size_t size, SRes errorType); -SRes LookInStream_Read(const ILookInStream *stream, void *buf, size_t size); - +SRes LookInStream_Read2(ILookInStreamPtr stream, void *buf, size_t size, SRes errorType); +SRes LookInStream_Read(ILookInStreamPtr stream, void *buf, size_t size); typedef struct { ILookInStream vt; - const ISeekInStream *realStream; + ISeekInStreamPtr realStream; size_t pos; size_t size; /* it's data size */ @@ -399,13 +420,13 @@ typedef struct void LookToRead2_CreateVTable(CLookToRead2 *p, int lookahead); -#define LookToRead2_Init(p) { (p)->pos = (p)->size = 0; } +#define LookToRead2_INIT(p) { (p)->pos = (p)->size = 0; } typedef struct { ISeqInStream vt; - const ILookInStream *realStream; + ILookInStreamPtr realStream; } CSecToLook; void SecToLook_CreateVTable(CSecToLook *p); @@ -415,20 +436,19 @@ void SecToLook_CreateVTable(CSecToLook *p); typedef struct { ISeqInStream vt; - const ILookInStream *realStream; + ILookInStreamPtr realStream; } CSecToRead; void SecToRead_CreateVTable(CSecToRead *p); -typedef struct ICompressProgress ICompressProgress; - -struct ICompressProgress +Z7_C_IFACE_DECL (ICompressProgress) { - SRes (*Progress)(const ICompressProgress *p, UInt64 inSize, UInt64 outSize); + SRes (*Progress)(ICompressProgressPtr p, UInt64 inSize, UInt64 outSize); /* Returns: result. (result != SZ_OK) means break. Value (UInt64)(Int64)-1 for size means unknown value. */ }; + #define ICompressProgress_Progress(p, inSize, outSize) (p)->Progress(p, inSize, outSize) @@ -466,13 +486,13 @@ struct ISzAlloc -#ifndef MY_container_of +#ifndef Z7_container_of /* -#define MY_container_of(ptr, type, m) container_of(ptr, type, m) -#define MY_container_of(ptr, type, m) CONTAINING_RECORD(ptr, type, m) -#define MY_container_of(ptr, type, m) ((type *)((char *)(ptr) - offsetof(type, m))) -#define MY_container_of(ptr, type, m) (&((type *)0)->m == (ptr), ((type *)(((char *)(ptr)) - MY_offsetof(type, m)))) +#define Z7_container_of(ptr, type, m) container_of(ptr, type, m) +#define Z7_container_of(ptr, type, m) CONTAINING_RECORD(ptr, type, m) +#define Z7_container_of(ptr, type, m) ((type *)((char *)(ptr) - offsetof(type, m))) +#define Z7_container_of(ptr, type, m) (&((type *)0)->m == (ptr), ((type *)(((char *)(ptr)) - MY_offsetof(type, m)))) */ /* @@ -481,24 +501,64 @@ struct ISzAlloc GCC 4.8.1 : classes with non-public variable members" */ -#define MY_container_of(ptr, type, m) ((type *)(void *)((char *)(void *)(1 ? (ptr) : &((type *)0)->m) - MY_offsetof(type, m))) +#define Z7_container_of(ptr, type, m) \ + ((type *)(void *)((char *)(void *) \ + (1 ? (ptr) : &((type *)NULL)->m) - MY_offsetof(type, m))) + +#define Z7_container_of_CONST(ptr, type, m) \ + ((const type *)(const void *)((const char *)(const void *) \ + (1 ? (ptr) : &((type *)NULL)->m) - MY_offsetof(type, m))) + +/* +#define Z7_container_of_NON_CONST_FROM_CONST(ptr, type, m) \ + ((type *)(void *)(const void *)((const char *)(const void *) \ + (1 ? (ptr) : &((type *)NULL)->m) - MY_offsetof(type, m))) +*/ #endif -#define CONTAINER_FROM_VTBL_SIMPLE(ptr, type, m) ((type *)(void *)(ptr)) +#define Z7_CONTAINER_FROM_VTBL_SIMPLE(ptr, type, m) ((type *)(void *)(ptr)) +// #define Z7_CONTAINER_FROM_VTBL(ptr, type, m) Z7_CONTAINER_FROM_VTBL_SIMPLE(ptr, type, m) +#define Z7_CONTAINER_FROM_VTBL(ptr, type, m) Z7_container_of(ptr, type, m) +// #define Z7_CONTAINER_FROM_VTBL(ptr, type, m) Z7_container_of_NON_CONST_FROM_CONST(ptr, type, m) + +#define Z7_CONTAINER_FROM_VTBL_CONST(ptr, type, m) Z7_container_of_CONST(ptr, type, m) + +#define Z7_CONTAINER_FROM_VTBL_CLS(ptr, type, m) Z7_CONTAINER_FROM_VTBL_SIMPLE(ptr, type, m) /* -#define CONTAINER_FROM_VTBL(ptr, type, m) CONTAINER_FROM_VTBL_SIMPLE(ptr, type, m) +#define Z7_CONTAINER_FROM_VTBL_CLS(ptr, type, m) Z7_CONTAINER_FROM_VTBL(ptr, type, m) */ -#define CONTAINER_FROM_VTBL(ptr, type, m) MY_container_of(ptr, type, m) +#if defined (__clang__) || defined(__GNUC__) +#define Z7_DIAGNOSTIC_IGNORE_BEGIN_CAST_QUAL \ + _Pragma("GCC diagnostic push") \ + _Pragma("GCC diagnostic ignored \"-Wcast-qual\"") +#define Z7_DIAGNOSTIC_IGNORE_END_CAST_QUAL \ + _Pragma("GCC diagnostic pop") +#else +#define Z7_DIAGNOSTIC_IGNORE_BEGIN_CAST_QUAL +#define Z7_DIAGNOSTIC_IGNORE_END_CAST_QUAL +#endif -#define CONTAINER_FROM_VTBL_CLS(ptr, type, m) CONTAINER_FROM_VTBL_SIMPLE(ptr, type, m) -/* -#define CONTAINER_FROM_VTBL_CLS(ptr, type, m) CONTAINER_FROM_VTBL(ptr, type, m) -*/ +#define Z7_CONTAINER_FROM_VTBL_TO_DECL_VAR(ptr, type, m, p) \ + Z7_DIAGNOSTIC_IGNORE_BEGIN_CAST_QUAL \ + type *p = Z7_CONTAINER_FROM_VTBL(ptr, type, m); \ + Z7_DIAGNOSTIC_IGNORE_END_CAST_QUAL + +#define Z7_CONTAINER_FROM_VTBL_TO_DECL_VAR_pp_vt_p(type) \ + Z7_CONTAINER_FROM_VTBL_TO_DECL_VAR(pp, type, vt, p) -#define MY_memset_0_ARRAY(a) memset((a), 0, sizeof(a)) +// #define ZIP7_DECLARE_HANDLE(name) typedef void *name; +#define Z7_DECLARE_HANDLE(name) struct name##_dummy{int unused;}; typedef struct name##_dummy *name; + + +#define Z7_memset_0_ARRAY(a) memset((a), 0, sizeof(a)) + +#ifndef Z7_ARRAY_SIZE +#define Z7_ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0])) +#endif + #ifdef _WIN32 @@ -527,3 +587,11 @@ struct ISzAlloc EXTERN_C_END #endif + +/* +#ifndef Z7_ST +#ifdef _7ZIP_ST +#define Z7_ST +#endif +#endif +*/ diff --git a/deps/LZMA-SDK/C/7zVersion.h b/deps/LZMA-SDK/C/7zVersion.h index 49ea81dd3..e82ba0bbe 100644 --- a/deps/LZMA-SDK/C/7zVersion.h +++ b/deps/LZMA-SDK/C/7zVersion.h @@ -1,7 +1,7 @@ -#define MY_VER_MAJOR 22 -#define MY_VER_MINOR 01 +#define MY_VER_MAJOR 24 +#define MY_VER_MINOR 9 #define MY_VER_BUILD 0 -#define MY_VERSION_NUMBERS "22.01" +#define MY_VERSION_NUMBERS "24.09" #define MY_VERSION MY_VERSION_NUMBERS #ifdef MY_CPU_NAME @@ -10,12 +10,12 @@ #define MY_VERSION_CPU MY_VERSION #endif -#define MY_DATE "2022-07-15" +#define MY_DATE "2024-11-29" #undef MY_COPYRIGHT #undef MY_VERSION_COPYRIGHT_DATE #define MY_AUTHOR_NAME "Igor Pavlov" #define MY_COPYRIGHT_PD "Igor Pavlov : Public domain" -#define MY_COPYRIGHT_CR "Copyright (c) 1999-2022 Igor Pavlov" +#define MY_COPYRIGHT_CR "Copyright (c) 1999-2024 Igor Pavlov" #ifdef USE_COPYRIGHT_CR #define MY_COPYRIGHT MY_COPYRIGHT_CR diff --git a/deps/LZMA-SDK/C/7zWindows.h b/deps/LZMA-SDK/C/7zWindows.h new file mode 100644 index 000000000..42c6db8bf --- /dev/null +++ b/deps/LZMA-SDK/C/7zWindows.h @@ -0,0 +1,101 @@ +/* 7zWindows.h -- StdAfx +2023-04-02 : Igor Pavlov : Public domain */ + +#ifndef ZIP7_INC_7Z_WINDOWS_H +#define ZIP7_INC_7Z_WINDOWS_H + +#ifdef _WIN32 + +#if defined(__clang__) +# pragma clang diagnostic push +#endif + +#if defined(_MSC_VER) + +#pragma warning(push) +#pragma warning(disable : 4668) // '_WIN32_WINNT' is not defined as a preprocessor macro, replacing with '0' for '#if/#elif' + +#if _MSC_VER == 1900 +// for old kit10 versions +// #pragma warning(disable : 4255) // winuser.h(13979): warning C4255: 'GetThreadDpiAwarenessContext': +#endif +// win10 Windows Kit: +#endif // _MSC_VER + +#if defined(_MSC_VER) && _MSC_VER <= 1200 && !defined(_WIN64) +// for msvc6 without sdk2003 +#define RPC_NO_WINDOWS_H +#endif + +#if defined(__MINGW32__) || defined(__MINGW64__) +// #if defined(__GNUC__) && !defined(__clang__) +#include +#else +#include +#endif +// #include +// #include + +// but if precompiled with clang-cl then we need +// #include +#if defined(_MSC_VER) +#pragma warning(pop) +#endif + +#if defined(__clang__) +# pragma clang diagnostic pop +#endif + +#if defined(_MSC_VER) && _MSC_VER <= 1200 && !defined(_WIN64) +#ifndef _W64 + +typedef long LONG_PTR, *PLONG_PTR; +typedef unsigned long ULONG_PTR, *PULONG_PTR; +typedef ULONG_PTR DWORD_PTR, *PDWORD_PTR; + +#define Z7_OLD_WIN_SDK +#endif // _W64 +#endif // _MSC_VER == 1200 + +#ifdef Z7_OLD_WIN_SDK + +#ifndef INVALID_FILE_ATTRIBUTES +#define INVALID_FILE_ATTRIBUTES ((DWORD)-1) +#endif +#ifndef INVALID_SET_FILE_POINTER +#define INVALID_SET_FILE_POINTER ((DWORD)-1) +#endif +#ifndef FILE_SPECIAL_ACCESS +#define FILE_SPECIAL_ACCESS (FILE_ANY_ACCESS) +#endif + +// ShlObj.h: +// #define BIF_NEWDIALOGSTYLE 0x0040 + +#pragma warning(disable : 4201) +// #pragma warning(disable : 4115) + +#undef VARIANT_TRUE +#define VARIANT_TRUE ((VARIANT_BOOL)-1) +#endif + +#endif // Z7_OLD_WIN_SDK + +#ifdef UNDER_CE +#undef VARIANT_TRUE +#define VARIANT_TRUE ((VARIANT_BOOL)-1) +#endif + + +#if defined(_MSC_VER) +#if _MSC_VER >= 1400 && _MSC_VER <= 1600 + // BaseTsd.h(148) : 'HandleToULong' : unreferenced inline function has been removed + // string.h + // #pragma warning(disable : 4514) +#endif +#endif + + +/* #include "7zTypes.h" */ + +#endif diff --git a/deps/LZMA-SDK/C/7zip_gcc_c.mak b/deps/LZMA-SDK/C/7zip_gcc_c.mak index 24505f377..195d23d86 100644 --- a/deps/LZMA-SDK/C/7zip_gcc_c.mak +++ b/deps/LZMA-SDK/C/7zip_gcc_c.mak @@ -4,15 +4,28 @@ MY_ARCH_2 = $(MY_ARCH) MY_ASM = jwasm MY_ASM = asmc +ifndef RC +#RC=windres.exe --target=pe-x86-64 +#RC=windres.exe -F pe-i386 +RC=windres.exe +endif + PROGPATH = $(O)/$(PROG) PROGPATH_STATIC = $(O)/$(PROG)s +ifneq ($(CC), xlc) +CFLAGS_WARN_WALL = -Wall -Werror -Wextra +endif # for object file CFLAGS_BASE_LIST = -c # for ASM file # CFLAGS_BASE_LIST = -S -CFLAGS_BASE = $(MY_ARCH_2) -O2 $(CFLAGS_BASE_LIST) -Wall -Werror -Wextra $(CFLAGS_WARN) \ + +FLAGS_FLTO = -flto +FLAGS_FLTO = + +CFLAGS_BASE = $(MY_ARCH_2) -O2 $(CFLAGS_BASE_LIST) $(CFLAGS_WARN_WALL) $(CFLAGS_WARN) \ -DNDEBUG -D_REENTRANT -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE @@ -93,9 +106,9 @@ DEL_OBJ_EXE = -$(RM) $(O)\*.o $(O)\$(PROG).exe $(O)\$(PROG).dll endif -LIB2 = -lOle32 -loleaut32 -luuid -ladvapi32 -lUser32 +LIB2 = -lOle32 -loleaut32 -luuid -ladvapi32 -lUser32 -lShell32 -CXXFLAGS_EXTRA = -DUNICODE -D_UNICODE +CFLAGS_EXTRA = -DUNICODE -D_UNICODE # -Wno-delete-non-virtual-dtor @@ -103,8 +116,8 @@ else RM = rm -f MY_MKDIR=mkdir -p -# CFLAGS_BASE := $(CFLAGS_BASE) -D_7ZIP_ST -# CXXFLAGS_EXTRA = -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE +# CFLAGS_BASE := $(CFLAGS_BASE) -DZ7_ST +# CFLAGS_EXTRA = -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE # LOCAL_LIBS=-lpthread # LOCAL_LIBS_DLL=$(LOCAL_LIBS) -ldl @@ -115,10 +128,6 @@ DEL_OBJ_EXE = -$(RM) $(PROGPATH) $(PROGPATH_STATIC) $(OBJS) endif - -CFLAGS = $(LOCAL_FLAGS) $(CFLAGS_BASE2) $(CFLAGS_BASE) $(CC_SHARED) -o $@ - - ifdef IS_X64 AFLAGS_ABI = -elf64 -DABI_LINUX else @@ -129,12 +138,9 @@ AFLAGS_ABI = -elf -DABI_LINUX -DABI_CDECL endif AFLAGS = $(AFLAGS_ABI) -Fo$(O)/ +C_WARN_FLAGS = -CXX_WARN_FLAGS = -#-Wno-invalid-offsetof -#-Wno-reorder - -CXXFLAGS = $(LOCAL_FLAGS) $(CXXFLAGS_BASE2) $(CFLAGS_BASE) $(CXXFLAGS_EXTRA) $(CC_SHARED) -o $@ $(CXX_WARN_FLAGS) +CFLAGS = $(LOCAL_FLAGS) $(CFLAGS_BASE2) $(CFLAGS_BASE) $(CFLAGS_EXTRA) $(C_WARN_FLAGS) $(FLAGS_FLTO) $(CC_SHARED) -o $@ STATIC_TARGET= ifdef COMPL_STATIC @@ -147,18 +153,27 @@ all: $(O) $(PROGPATH) $(STATIC_TARGET) $(O): $(MY_MKDIR) $(O) -LFLAGS_ALL = -s $(MY_ARCH_2) $(LDFLAGS) $(LD_arch) $(OBJS) $(MY_LIBS) $(LIB2) +ifneq ($(CC), $(CROSS_COMPILE)clang) +LFLAGS_STRIP = -s +endif + +LFLAGS_ALL = $(LFLAGS_STRIP) $(MY_ARCH_2) $(LDFLAGS) $(FLAGS_FLTO) $(LD_arch) $(OBJS) $(MY_LIBS) $(LIB2) $(PROGPATH): $(OBJS) - $(CXX) -o $(PROGPATH) $(LFLAGS_ALL) + $(CC) -o $(PROGPATH) $(LFLAGS_ALL) $(PROGPATH_STATIC): $(OBJS) - $(CXX) -static -o $(PROGPATH_STATIC) $(LFLAGS_ALL) + $(CC) -static -o $(PROGPATH_STATIC) $(LFLAGS_ALL) ifndef NO_DEFAULT_RES +# old mingw without -FO +# windres.exe $(RFLAGS) resource.rc $O/resource.o $O/resource.o: resource.rc - windres.exe $(RFLAGS) resource.rc $O/resource.o + $(RC) $(RFLAGS) resource.rc $(O)/resource.o endif +# windres.exe $(RFLAGS) resource.rc $(O)\resource.o +# windres.exe $(RFLAGS) resource.rc -FO $(O)/resource.o +# $(RC) $(RFLAGS) resource.rc -FO $(O)/resource.o @@ -256,10 +271,18 @@ $O/Sha256.o: ../../../C/Sha256.c $(CC) $(CFLAGS) $< $O/Sort.o: ../../../C/Sort.c $(CC) $(CFLAGS) $< +$O/SwapBytes.o: ../../../C/SwapBytes.c + $(CC) $(CFLAGS) $< $O/Xz.o: ../../../C/Xz.c $(CC) $(CFLAGS) $< $O/XzCrc64.o: ../../../C/XzCrc64.c $(CC) $(CFLAGS) $< +$O/XzDec.o: ../../../C/XzDec.c + $(CC) $(CFLAGS) $< +$O/XzEnc.o: ../../../C/XzEnc.c + $(CC) $(CFLAGS) $< +$O/XzIn.o: ../../../C/XzIn.c + $(CC) $(CFLAGS) $< ifdef USE_ASM @@ -306,11 +329,11 @@ endif ifdef IS_ARM64 $O/LzmaDecOpt.o: ../../../Asm/arm64/LzmaDecOpt.S ../../../Asm/arm64/7zAsm.S - $(CC) $(CFLAGS) $< + $(CC) $(CFLAGS) $(ASM_FLAGS) $< endif $O/LzmaDec.o: ../../LzmaDec.c - $(CC) $(CFLAGS) -D_LZMA_DEC_OPT $< + $(CC) $(CFLAGS) -DZ7_LZMA_DEC_OPT $< else @@ -321,22 +344,16 @@ endif -$O/XzDec.o: ../../../C/XzDec.c - $(CC) $(CFLAGS) $< -$O/XzEnc.o: ../../../C/XzEnc.c - $(CC) $(CFLAGS) $< -$O/XzIn.o: ../../../C/XzIn.c - $(CC) $(CFLAGS) $< - - $O/7zMain.o: ../../../C/Util/7z/7zMain.c $(CC) $(CFLAGS) $< -$O/LzmaUtil.o: ../../../C/Util/Lzma/LzmaUtil.c - $(CC) $(CFLAGS) $< $O/7zipInstall.o: ../../../C/Util/7zipInstall/7zipInstall.c $(CC) $(CFLAGS) $< $O/7zipUninstall.o: ../../../C/Util/7zipUninstall/7zipUninstall.c $(CC) $(CFLAGS) $< +$O/LzmaUtil.o: ../../../C/Util/Lzma/LzmaUtil.c + $(CC) $(CFLAGS) $< +$O/XzUtil.o: ../../../C/Util/Xz/XzUtil.c + $(CC) $(CFLAGS) $< clean: diff --git a/deps/LZMA-SDK/C/Aes.c b/deps/LZMA-SDK/C/Aes.c index 27e32e622..abc5d24b4 100644 --- a/deps/LZMA-SDK/C/Aes.c +++ b/deps/LZMA-SDK/C/Aes.c @@ -1,5 +1,5 @@ /* Aes.c -- AES encryption / decryption -2021-05-13 : Igor Pavlov : Public domain */ +2024-03-01 : Igor Pavlov : Public domain */ #include "Precomp.h" @@ -7,13 +7,15 @@ #include "Aes.h" AES_CODE_FUNC g_AesCbc_Decode; -#ifndef _SFX +#ifndef Z7_SFX AES_CODE_FUNC g_AesCbc_Encode; AES_CODE_FUNC g_AesCtr_Code; UInt32 g_Aes_SupportedFunctions_Flags; #endif +MY_ALIGN(64) static UInt32 T[256 * 4]; +MY_ALIGN(64) static const Byte Sbox[256] = { 0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, @@ -33,7 +35,9 @@ static const Byte Sbox[256] = { 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16}; +MY_ALIGN(64) static UInt32 D[256 * 4]; +MY_ALIGN(64) static Byte InvS[256]; #define xtime(x) ((((x) << 1) ^ (((x) & 0x80) != 0 ? 0x1B : 0)) & 0xFF) @@ -51,32 +55,62 @@ static Byte InvS[256]; #define DD(x) (D + (x << 8)) -// #define _SHOW_AES_STATUS +// #define Z7_SHOW_AES_STATUS #ifdef MY_CPU_X86_OR_AMD64 - #define USE_HW_AES -#elif defined(MY_CPU_ARM_OR_ARM64) && defined(MY_CPU_LE) - #if defined(__clang__) - #if (__clang_major__ >= 8) // fix that check - #define USE_HW_AES - #endif - #elif defined(__GNUC__) - #if (__GNUC__ >= 6) // fix that check + + #if defined(__INTEL_COMPILER) + #if (__INTEL_COMPILER >= 1110) #define USE_HW_AES + #if (__INTEL_COMPILER >= 1900) + #define USE_HW_VAES + #endif #endif + #elif defined(Z7_CLANG_VERSION) && (Z7_CLANG_VERSION >= 30800) \ + || defined(Z7_GCC_VERSION) && (Z7_GCC_VERSION >= 40400) + #define USE_HW_AES + #if defined(__clang__) && (__clang_major__ >= 8) \ + || defined(__GNUC__) && (__GNUC__ >= 8) + #define USE_HW_VAES + #endif #elif defined(_MSC_VER) - #if _MSC_VER >= 1910 + #define USE_HW_AES + #define USE_HW_VAES + #endif + +#elif defined(MY_CPU_ARM_OR_ARM64) && defined(MY_CPU_LE) + + #if defined(__ARM_FEATURE_AES) \ + || defined(__ARM_FEATURE_CRYPTO) + #define USE_HW_AES + #else + #if defined(MY_CPU_ARM64) \ + || defined(__ARM_ARCH) && (__ARM_ARCH >= 4) \ + || defined(Z7_MSC_VER_ORIGINAL) + #if defined(__ARM_FP) && \ + ( defined(Z7_CLANG_VERSION) && (Z7_CLANG_VERSION >= 30800) \ + || defined(__GNUC__) && (__GNUC__ >= 6) \ + ) \ + || defined(Z7_MSC_VER_ORIGINAL) && (_MSC_VER >= 1910) + #if defined(MY_CPU_ARM64) \ + || !defined(Z7_CLANG_VERSION) \ + || defined(__ARM_NEON) && \ + (Z7_CLANG_VERSION < 170000 || \ + Z7_CLANG_VERSION > 170001) #define USE_HW_AES #endif + #endif + #endif #endif #endif #ifdef USE_HW_AES -#ifdef _SHOW_AES_STATUS +// #pragma message("=== Aes.c USE_HW_AES === ") +#ifdef Z7_SHOW_AES_STATUS #include -#define _PRF(x) x +#define PRF(x) x #else -#define _PRF(x) +#define PRF(x) #endif #endif @@ -90,23 +124,23 @@ void AesGenTables(void) for (i = 0; i < 256; i++) { { - UInt32 a1 = Sbox[i]; - UInt32 a2 = xtime(a1); - UInt32 a3 = a2 ^ a1; + const UInt32 a1 = Sbox[i]; + const UInt32 a2 = xtime(a1); + const UInt32 a3 = a2 ^ a1; TT(0)[i] = Ui32(a2, a1, a1, a3); TT(1)[i] = Ui32(a3, a2, a1, a1); TT(2)[i] = Ui32(a1, a3, a2, a1); TT(3)[i] = Ui32(a1, a1, a3, a2); } { - UInt32 a1 = InvS[i]; - UInt32 a2 = xtime(a1); - UInt32 a4 = xtime(a2); - UInt32 a8 = xtime(a4); - UInt32 a9 = a8 ^ a1; - UInt32 aB = a8 ^ a2 ^ a1; - UInt32 aD = a8 ^ a4 ^ a1; - UInt32 aE = a8 ^ a4 ^ a2; + const UInt32 a1 = InvS[i]; + const UInt32 a2 = xtime(a1); + const UInt32 a4 = xtime(a2); + const UInt32 a8 = xtime(a4); + const UInt32 a9 = a8 ^ a1; + const UInt32 aB = a8 ^ a2 ^ a1; + const UInt32 aD = a8 ^ a4 ^ a1; + const UInt32 aE = a8 ^ a4 ^ a2; DD(0)[i] = Ui32(aE, a9, aD, aB); DD(1)[i] = Ui32(aB, aE, a9, aD); DD(2)[i] = Ui32(aD, aB, aE, a9); @@ -116,7 +150,7 @@ void AesGenTables(void) { AES_CODE_FUNC d = AesCbc_Decode; - #ifndef _SFX + #ifndef Z7_SFX AES_CODE_FUNC e = AesCbc_Encode; AES_CODE_FUNC c = AesCtr_Code; UInt32 flags = 0; @@ -126,31 +160,33 @@ void AesGenTables(void) if (CPU_IsSupported_AES()) { // #pragma message ("AES HW") - _PRF(printf("\n===AES HW\n")); + PRF(printf("\n===AES HW\n")); d = AesCbc_Decode_HW; - #ifndef _SFX + #ifndef Z7_SFX e = AesCbc_Encode_HW; c = AesCtr_Code_HW; flags = k_Aes_SupportedFunctions_HW; #endif #ifdef MY_CPU_X86_OR_AMD64 + #ifdef USE_HW_VAES if (CPU_IsSupported_VAES_AVX2()) { - _PRF(printf("\n===vaes avx2\n")); + PRF(printf("\n===vaes avx2\n")); d = AesCbc_Decode_HW_256; - #ifndef _SFX + #ifndef Z7_SFX c = AesCtr_Code_HW_256; flags |= k_Aes_SupportedFunctions_HW_256; #endif } #endif + #endif } #endif g_AesCbc_Decode = d; - #ifndef _SFX + #ifndef Z7_SFX g_AesCbc_Encode = e; g_AesCtr_Code = c; g_Aes_SupportedFunctions_Flags = flags; @@ -194,7 +230,7 @@ void AesGenTables(void) #define FD(i, x) InvS[gb(x, m[(i - x) & 3])] #define FD4(i) dest[i] = Ui32(FD(i, 0), FD(i, 1), FD(i, 2), FD(i, 3)) ^ w[i]; -void MY_FAST_CALL Aes_SetKey_Enc(UInt32 *w, const Byte *key, unsigned keySize) +void Z7_FASTCALL Aes_SetKey_Enc(UInt32 *w, const Byte *key, unsigned keySize) { unsigned i, m; const UInt32 *wLim; @@ -230,7 +266,7 @@ void MY_FAST_CALL Aes_SetKey_Enc(UInt32 *w, const Byte *key, unsigned keySize) while (++w != wLim); } -void MY_FAST_CALL Aes_SetKey_Dec(UInt32 *w, const Byte *key, unsigned keySize) +void Z7_FASTCALL Aes_SetKey_Dec(UInt32 *w, const Byte *key, unsigned keySize) { unsigned i, num; Aes_SetKey_Enc(w, key, keySize); @@ -251,7 +287,7 @@ void MY_FAST_CALL Aes_SetKey_Dec(UInt32 *w, const Byte *key, unsigned keySize) src and dest are pointers to 4 UInt32 words. src and dest can point to same block */ -// MY_FORCE_INLINE +// Z7_FORCE_INLINE static void Aes_Encode(const UInt32 *w, UInt32 *dest, const UInt32 *src) { UInt32 s[4]; @@ -265,17 +301,20 @@ static void Aes_Encode(const UInt32 *w, UInt32 *dest, const UInt32 *src) w += 4; for (;;) { - HT16(m, s, 0); + HT16(m, s, 0) if (--numRounds2 == 0) break; - HT16(s, m, 4); + HT16(s, m, 4) w += 8; } w += 4; - FT4(0); FT4(1); FT4(2); FT4(3); + FT4(0) + FT4(1) + FT4(2) + FT4(3) } -MY_FORCE_INLINE +Z7_FORCE_INLINE static void Aes_Decode(const UInt32 *w, UInt32 *dest, const UInt32 *src) { UInt32 s[4]; @@ -289,12 +328,15 @@ static void Aes_Decode(const UInt32 *w, UInt32 *dest, const UInt32 *src) for (;;) { w -= 8; - HD16(m, s, 4); + HD16(m, s, 4) if (--numRounds2 == 0) break; - HD16(s, m, 0); + HD16(s, m, 0) } - FD4(0); FD4(1); FD4(2); FD4(3); + FD4(0) + FD4(1) + FD4(2) + FD4(3) } void AesCbc_Init(UInt32 *p, const Byte *iv) @@ -304,7 +346,7 @@ void AesCbc_Init(UInt32 *p, const Byte *iv) p[i] = GetUi32(iv + i * 4); } -void MY_FAST_CALL AesCbc_Encode(UInt32 *p, Byte *data, size_t numBlocks) +void Z7_FASTCALL AesCbc_Encode(UInt32 *p, Byte *data, size_t numBlocks) { for (; numBlocks != 0; numBlocks--, data += AES_BLOCK_SIZE) { @@ -315,14 +357,14 @@ void MY_FAST_CALL AesCbc_Encode(UInt32 *p, Byte *data, size_t numBlocks) Aes_Encode(p + 4, p, p); - SetUi32(data, p[0]); - SetUi32(data + 4, p[1]); - SetUi32(data + 8, p[2]); - SetUi32(data + 12, p[3]); + SetUi32(data, p[0]) + SetUi32(data + 4, p[1]) + SetUi32(data + 8, p[2]) + SetUi32(data + 12, p[3]) } } -void MY_FAST_CALL AesCbc_Decode(UInt32 *p, Byte *data, size_t numBlocks) +void Z7_FASTCALL AesCbc_Decode(UInt32 *p, Byte *data, size_t numBlocks) { UInt32 in[4], out[4]; for (; numBlocks != 0; numBlocks--, data += AES_BLOCK_SIZE) @@ -334,10 +376,10 @@ void MY_FAST_CALL AesCbc_Decode(UInt32 *p, Byte *data, size_t numBlocks) Aes_Decode(p + 4, out, in); - SetUi32(data, p[0] ^ out[0]); - SetUi32(data + 4, p[1] ^ out[1]); - SetUi32(data + 8, p[2] ^ out[2]); - SetUi32(data + 12, p[3] ^ out[3]); + SetUi32(data, p[0] ^ out[0]) + SetUi32(data + 4, p[1] ^ out[1]) + SetUi32(data + 8, p[2] ^ out[2]) + SetUi32(data + 12, p[3] ^ out[3]) p[0] = in[0]; p[1] = in[1]; @@ -346,7 +388,7 @@ void MY_FAST_CALL AesCbc_Decode(UInt32 *p, Byte *data, size_t numBlocks) } } -void MY_FAST_CALL AesCtr_Code(UInt32 *p, Byte *data, size_t numBlocks) +void Z7_FASTCALL AesCtr_Code(UInt32 *p, Byte *data, size_t numBlocks) { for (; numBlocks != 0; numBlocks--) { @@ -360,7 +402,7 @@ void MY_FAST_CALL AesCtr_Code(UInt32 *p, Byte *data, size_t numBlocks) for (i = 0; i < 4; i++, data += 4) { - UInt32 t = temp[i]; + const UInt32 t = temp[i]; #ifdef MY_CPU_LE_UNALIGN *((UInt32 *)(void *)data) ^= t; @@ -373,3 +415,15 @@ void MY_FAST_CALL AesCtr_Code(UInt32 *p, Byte *data, size_t numBlocks) } } } + +#undef xtime +#undef Ui32 +#undef gb0 +#undef gb1 +#undef gb2 +#undef gb3 +#undef gb +#undef TT +#undef DD +#undef USE_HW_AES +#undef PRF diff --git a/deps/LZMA-SDK/C/Aes.h b/deps/LZMA-SDK/C/Aes.h index 2aa225642..7f0182ac0 100644 --- a/deps/LZMA-SDK/C/Aes.h +++ b/deps/LZMA-SDK/C/Aes.h @@ -1,8 +1,8 @@ /* Aes.h -- AES encryption / decryption -2018-04-28 : Igor Pavlov : Public domain */ +2023-04-02 : Igor Pavlov : Public domain */ -#ifndef __AES_H -#define __AES_H +#ifndef ZIP7_INC_AES_H +#define ZIP7_INC_AES_H #include "7zTypes.h" @@ -20,19 +20,19 @@ void AesGenTables(void); /* aes - 16-byte aligned pointer to keyMode+roundKeys sequence */ /* keySize = 16 or 24 or 32 (bytes) */ -typedef void (MY_FAST_CALL *AES_SET_KEY_FUNC)(UInt32 *aes, const Byte *key, unsigned keySize); -void MY_FAST_CALL Aes_SetKey_Enc(UInt32 *aes, const Byte *key, unsigned keySize); -void MY_FAST_CALL Aes_SetKey_Dec(UInt32 *aes, const Byte *key, unsigned keySize); +typedef void (Z7_FASTCALL *AES_SET_KEY_FUNC)(UInt32 *aes, const Byte *key, unsigned keySize); +void Z7_FASTCALL Aes_SetKey_Enc(UInt32 *aes, const Byte *key, unsigned keySize); +void Z7_FASTCALL Aes_SetKey_Dec(UInt32 *aes, const Byte *key, unsigned keySize); /* ivAes - 16-byte aligned pointer to iv+keyMode+roundKeys sequence: UInt32[AES_NUM_IVMRK_WORDS] */ void AesCbc_Init(UInt32 *ivAes, const Byte *iv); /* iv size is AES_BLOCK_SIZE */ /* data - 16-byte aligned pointer to data */ /* numBlocks - the number of 16-byte blocks in data array */ -typedef void (MY_FAST_CALL *AES_CODE_FUNC)(UInt32 *ivAes, Byte *data, size_t numBlocks); +typedef void (Z7_FASTCALL *AES_CODE_FUNC)(UInt32 *ivAes, Byte *data, size_t numBlocks); extern AES_CODE_FUNC g_AesCbc_Decode; -#ifndef _SFX +#ifndef Z7_SFX extern AES_CODE_FUNC g_AesCbc_Encode; extern AES_CODE_FUNC g_AesCtr_Code; #define k_Aes_SupportedFunctions_HW (1 << 2) @@ -41,19 +41,19 @@ extern UInt32 g_Aes_SupportedFunctions_Flags; #endif -#define DECLARE__AES_CODE_FUNC(funcName) \ - void MY_FAST_CALL funcName(UInt32 *ivAes, Byte *data, size_t numBlocks); +#define Z7_DECLARE_AES_CODE_FUNC(funcName) \ + void Z7_FASTCALL funcName(UInt32 *ivAes, Byte *data, size_t numBlocks); -DECLARE__AES_CODE_FUNC (AesCbc_Encode) -DECLARE__AES_CODE_FUNC (AesCbc_Decode) -DECLARE__AES_CODE_FUNC (AesCtr_Code) +Z7_DECLARE_AES_CODE_FUNC (AesCbc_Encode) +Z7_DECLARE_AES_CODE_FUNC (AesCbc_Decode) +Z7_DECLARE_AES_CODE_FUNC (AesCtr_Code) -DECLARE__AES_CODE_FUNC (AesCbc_Encode_HW) -DECLARE__AES_CODE_FUNC (AesCbc_Decode_HW) -DECLARE__AES_CODE_FUNC (AesCtr_Code_HW) +Z7_DECLARE_AES_CODE_FUNC (AesCbc_Encode_HW) +Z7_DECLARE_AES_CODE_FUNC (AesCbc_Decode_HW) +Z7_DECLARE_AES_CODE_FUNC (AesCtr_Code_HW) -DECLARE__AES_CODE_FUNC (AesCbc_Decode_HW_256) -DECLARE__AES_CODE_FUNC (AesCtr_Code_HW_256) +Z7_DECLARE_AES_CODE_FUNC (AesCbc_Decode_HW_256) +Z7_DECLARE_AES_CODE_FUNC (AesCtr_Code_HW_256) EXTERN_C_END diff --git a/deps/LZMA-SDK/C/AesOpt.c b/deps/LZMA-SDK/C/AesOpt.c index 8be8ff69d..b28180739 100644 --- a/deps/LZMA-SDK/C/AesOpt.c +++ b/deps/LZMA-SDK/C/AesOpt.c @@ -1,39 +1,33 @@ /* AesOpt.c -- AES optimized code for x86 AES hardware instructions -2021-04-01 : Igor Pavlov : Public domain */ +Igor Pavlov : Public domain */ #include "Precomp.h" +#include "Aes.h" #include "CpuArch.h" #ifdef MY_CPU_X86_OR_AMD64 - #if defined(__clang__) - #if __clang_major__ > 3 || (__clang_major__ == 3 && __clang_minor__ >= 8) - #define USE_INTEL_AES - #define ATTRIB_AES __attribute__((__target__("aes"))) - #if (__clang_major__ >= 8) - #define USE_INTEL_VAES - #define ATTRIB_VAES __attribute__((__target__("aes,vaes,avx2"))) - #endif - #endif - #elif defined(__GNUC__) - #if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4) - #define USE_INTEL_AES - #ifndef __AES__ - #define ATTRIB_AES __attribute__((__target__("aes"))) - #endif - #if (__GNUC__ >= 8) - #define USE_INTEL_VAES - #define ATTRIB_VAES __attribute__((__target__("aes,vaes,avx2"))) - #endif - #endif - #elif defined(__INTEL_COMPILER) + #if defined(__INTEL_COMPILER) #if (__INTEL_COMPILER >= 1110) #define USE_INTEL_AES #if (__INTEL_COMPILER >= 1900) #define USE_INTEL_VAES #endif #endif + #elif defined(Z7_CLANG_VERSION) && (Z7_CLANG_VERSION >= 30800) \ + || defined(Z7_GCC_VERSION) && (Z7_GCC_VERSION >= 40400) + #define USE_INTEL_AES + #if !defined(__AES__) + #define ATTRIB_AES __attribute__((__target__("aes"))) + #endif + #if defined(__clang__) && (__clang_major__ >= 8) \ + || defined(__GNUC__) && (__GNUC__ >= 8) + #define USE_INTEL_VAES + #if !defined(__AES__) || !defined(__VAES__) || !defined(__AVX__) || !defined(__AVX2__) + #define ATTRIB_VAES __attribute__((__target__("aes,vaes,avx,avx2"))) + #endif + #endif #elif defined(_MSC_VER) #if (_MSC_VER > 1500) || (_MSC_FULL_VER >= 150030729) #define USE_INTEL_AES @@ -41,27 +35,40 @@ #define USE_INTEL_VAES #endif #endif + #ifndef USE_INTEL_AES + #define Z7_USE_AES_HW_STUB + #endif + #ifndef USE_INTEL_VAES + #define Z7_USE_VAES_HW_STUB + #endif #endif -#ifndef ATTRIB_AES - #define ATTRIB_AES -#endif -#ifndef ATTRIB_VAES - #define ATTRIB_VAES -#endif + #ifndef USE_INTEL_AES + // #define Z7_USE_AES_HW_STUB // for debug + #endif + #ifndef USE_INTEL_VAES + // #define Z7_USE_VAES_HW_STUB // for debug + #endif #ifdef USE_INTEL_AES #include -#ifndef USE_INTEL_VAES -#define AES_TYPE_keys __m128i -#define AES_TYPE_data __m128i +#if !defined(USE_INTEL_VAES) && defined(Z7_USE_VAES_HW_STUB) +#define AES_TYPE_keys UInt32 +#define AES_TYPE_data Byte +// #define AES_TYPE_keys __m128i +// #define AES_TYPE_data __m128i +#endif + +#ifndef ATTRIB_AES + #define ATTRIB_AES #endif #define AES_FUNC_START(name) \ - void MY_FAST_CALL name(__m128i *p, __m128i *data, size_t numBlocks) + void Z7_FASTCALL name(UInt32 *ivAes, Byte *data8, size_t numBlocks) + // void Z7_FASTCALL name(__m128i *p, __m128i *data, size_t numBlocks) #define AES_FUNC_START2(name) \ AES_FUNC_START (name); \ @@ -69,49 +76,72 @@ ATTRIB_AES \ AES_FUNC_START (name) #define MM_OP(op, dest, src) dest = op(dest, src); -#define MM_OP_m(op, src) MM_OP(op, m, src); +#define MM_OP_m(op, src) MM_OP(op, m, src) -#define MM_XOR( dest, src) MM_OP(_mm_xor_si128, dest, src); -#define AVX_XOR(dest, src) MM_OP(_mm256_xor_si256, dest, src); +#define MM_XOR( dest, src) MM_OP(_mm_xor_si128, dest, src) +#if 1 +// use aligned SSE load/store for data. +// It is required for our Aes functions, that data is aligned for 16-bytes. +// So we can use this branch of code. +// and compiler can use fused load-op SSE instructions: +// xorps xmm0, XMMWORD PTR [rdx] +#define LOAD_128(pp) (*(__m128i *)(void *)(pp)) +#define STORE_128(pp, _v) *(__m128i *)(void *)(pp) = _v +// use aligned SSE load/store for data. Alternative code with direct access +// #define LOAD_128(pp) _mm_load_si128(pp) +// #define STORE_128(pp, _v) _mm_store_si128(pp, _v) +#else +// use unaligned load/store for data: movdqu XMMWORD PTR [rdx] +#define LOAD_128(pp) _mm_loadu_si128(pp) +#define STORE_128(pp, _v) _mm_storeu_si128(pp, _v) +#endif AES_FUNC_START2 (AesCbc_Encode_HW) { + if (numBlocks == 0) + return; + { + __m128i *p = (__m128i *)(void *)ivAes; + __m128i *data = (__m128i *)(void *)data8; __m128i m = *p; const __m128i k0 = p[2]; const __m128i k1 = p[3]; const UInt32 numRounds2 = *(const UInt32 *)(p + 1) - 1; - for (; numBlocks != 0; numBlocks--, data++) + do { UInt32 r = numRounds2; const __m128i *w = p + 4; - __m128i temp = *data; - MM_XOR (temp, k0); - MM_XOR (m, temp); - MM_OP_m (_mm_aesenc_si128, k1); + __m128i temp = LOAD_128(data); + MM_XOR (temp, k0) + MM_XOR (m, temp) + MM_OP_m (_mm_aesenc_si128, k1) do { - MM_OP_m (_mm_aesenc_si128, w[0]); - MM_OP_m (_mm_aesenc_si128, w[1]); + MM_OP_m (_mm_aesenc_si128, w[0]) + MM_OP_m (_mm_aesenc_si128, w[1]) w += 2; } while (--r); - MM_OP_m (_mm_aesenclast_si128, w[0]); - *data = m; + MM_OP_m (_mm_aesenclast_si128, w[0]) + STORE_128(data, m); + data++; } + while (--numBlocks); *p = m; + } } #define WOP_1(op) -#define WOP_2(op) WOP_1 (op) op (m1, 1); -#define WOP_3(op) WOP_2 (op) op (m2, 2); -#define WOP_4(op) WOP_3 (op) op (m3, 3); +#define WOP_2(op) WOP_1 (op) op (m1, 1) +#define WOP_3(op) WOP_2 (op) op (m2, 2) +#define WOP_4(op) WOP_3 (op) op (m3, 3) #ifdef MY_CPU_AMD64 -#define WOP_5(op) WOP_4 (op) op (m4, 4); -#define WOP_6(op) WOP_5 (op) op (m5, 5); -#define WOP_7(op) WOP_6 (op) op (m6, 6); -#define WOP_8(op) WOP_7 (op) op (m7, 7); +#define WOP_5(op) WOP_4 (op) op (m4, 4) +#define WOP_6(op) WOP_5 (op) op (m5, 5) +#define WOP_7(op) WOP_6 (op) op (m6, 6) +#define WOP_8(op) WOP_7 (op) op (m7, 7) #endif /* #define WOP_9(op) WOP_8 (op) op (m8, 8); @@ -130,21 +160,16 @@ AES_FUNC_START2 (AesCbc_Encode_HW) #define WOP_M1 WOP_4 #endif -#define WOP(op) op (m0, 0); WOP_M1(op) +#define WOP(op) op (m0, 0) WOP_M1(op) - -#define DECLARE_VAR(reg, ii) __m128i reg -#define LOAD_data( reg, ii) reg = data[ii]; -#define STORE_data( reg, ii) data[ii] = reg; +#define DECLARE_VAR(reg, ii) __m128i reg; +#define LOAD_data_ii(ii) LOAD_128(data + (ii)) +#define LOAD_data( reg, ii) reg = LOAD_data_ii(ii); +#define STORE_data( reg, ii) STORE_128(data + (ii), reg); #if (NUM_WAYS > 1) -#define XOR_data_M1(reg, ii) MM_XOR (reg, data[ii- 1]); +#define XOR_data_M1(reg, ii) MM_XOR (reg, LOAD_128(data + (ii- 1))) #endif -#define AVX__DECLARE_VAR(reg, ii) __m256i reg -#define AVX__LOAD_data( reg, ii) reg = ((const __m256i *)(const void *)data)[ii]; -#define AVX__STORE_data( reg, ii) ((__m256i *)(void *)data)[ii] = reg; -#define AVX__XOR_data_M1(reg, ii) AVX_XOR (reg, (((const __m256i *)(const void *)(data - 1))[ii])); - #define MM_OP_key(op, reg) MM_OP(op, reg, key); #define AES_DEC( reg, ii) MM_OP_key (_mm_aesdec_si128, reg) @@ -153,116 +178,156 @@ AES_FUNC_START2 (AesCbc_Encode_HW) #define AES_ENC_LAST( reg, ii) MM_OP_key (_mm_aesenclast_si128, reg) #define AES_XOR( reg, ii) MM_OP_key (_mm_xor_si128, reg) - -#define AVX__AES_DEC( reg, ii) MM_OP_key (_mm256_aesdec_epi128, reg) -#define AVX__AES_DEC_LAST( reg, ii) MM_OP_key (_mm256_aesdeclast_epi128, reg) -#define AVX__AES_ENC( reg, ii) MM_OP_key (_mm256_aesenc_epi128, reg) -#define AVX__AES_ENC_LAST( reg, ii) MM_OP_key (_mm256_aesenclast_epi128, reg) -#define AVX__AES_XOR( reg, ii) MM_OP_key (_mm256_xor_si256, reg) - -#define CTR_START(reg, ii) MM_OP (_mm_add_epi64, ctr, one); reg = ctr; -#define CTR_END( reg, ii) MM_XOR (data[ii], reg); - -#define AVX__CTR_START(reg, ii) MM_OP (_mm256_add_epi64, ctr2, two); reg = _mm256_xor_si256(ctr2, key); -#define AVX__CTR_END( reg, ii) AVX_XOR (((__m256i *)(void *)data)[ii], reg); - +#define CTR_START(reg, ii) MM_OP (_mm_add_epi64, ctr, one) reg = ctr; +#define CTR_END( reg, ii) STORE_128(data + (ii), _mm_xor_si128(reg, \ + LOAD_128 (data + (ii)))); #define WOP_KEY(op, n) { \ const __m128i key = w[n]; \ - WOP(op); } - -#define AVX__WOP_KEY(op, n) { \ - const __m256i key = w[n]; \ - WOP(op); } - + WOP(op) } #define WIDE_LOOP_START \ dataEnd = data + numBlocks; \ if (numBlocks >= NUM_WAYS) \ { dataEnd -= NUM_WAYS; do { \ - #define WIDE_LOOP_END \ data += NUM_WAYS; \ } while (data <= dataEnd); \ dataEnd += NUM_WAYS; } \ - #define SINGLE_LOOP \ for (; data < dataEnd; data++) + +#ifdef USE_INTEL_VAES + +#define AVX_XOR(dest, src) MM_OP(_mm256_xor_si256, dest, src) +#define AVX_DECLARE_VAR(reg, ii) __m256i reg; + +#if 1 +// use unaligned AVX load/store for data. +// It is required for our Aes functions, that data is aligned for 16-bytes. +// But we need 32-bytes reading. +// So we use intrinsics for unaligned AVX load/store. +// notes for _mm256_storeu_si256: +// msvc2022: uses vmovdqu and keeps the order of instruction sequence. +// new gcc11 uses vmovdqu +// old gcc9 could use pair of instructions: +// vmovups %xmm7, -224(%rax) +// vextracti128 $0x1, %ymm7, -208(%rax) +#define AVX_LOAD(p) _mm256_loadu_si256((const __m256i *)(const void *)(p)) +#define AVX_STORE(p, _v) _mm256_storeu_si256((__m256i *)(void *)(p), _v); +#else +// use aligned AVX load/store for data. +// for debug: we can use this branch, if we are sure that data is aligned for 32-bytes. +// msvc2022 uses vmovdqu still +// gcc uses vmovdqa (that requires 32-bytes alignment) +#define AVX_LOAD(p) (*(const __m256i *)(const void *)(p)) +#define AVX_STORE(p, _v) (*(__m256i *)(void *)(p)) = _v; +#endif + +#define AVX_LOAD_data( reg, ii) reg = AVX_LOAD((const __m256i *)(const void *)data + (ii)); +#define AVX_STORE_data( reg, ii) AVX_STORE((__m256i *)(void *)data + (ii), reg) +/* +AVX_XOR_data_M1() needs unaligned memory load, even if (data) +is aligned for 256-bits, because we read 32-bytes chunk that +crosses (data) position: from (data - 16bytes) to (data + 16bytes). +*/ +#define AVX_XOR_data_M1(reg, ii) AVX_XOR (reg, _mm256_loadu_si256((const __m256i *)(const void *)(data - 1) + (ii))) + +#define AVX_AES_DEC( reg, ii) MM_OP_key (_mm256_aesdec_epi128, reg) +#define AVX_AES_DEC_LAST( reg, ii) MM_OP_key (_mm256_aesdeclast_epi128, reg) +#define AVX_AES_ENC( reg, ii) MM_OP_key (_mm256_aesenc_epi128, reg) +#define AVX_AES_ENC_LAST( reg, ii) MM_OP_key (_mm256_aesenclast_epi128, reg) +#define AVX_AES_XOR( reg, ii) MM_OP_key (_mm256_xor_si256, reg) +#define AVX_CTR_START(reg, ii) \ + MM_OP (_mm256_add_epi64, ctr2, two) \ + reg = _mm256_xor_si256(ctr2, key); + +#define AVX_CTR_END(reg, ii) \ + AVX_STORE((__m256i *)(void *)data + (ii), _mm256_xor_si256(reg, \ + AVX_LOAD ((__m256i *)(void *)data + (ii)))); + +#define AVX_WOP_KEY(op, n) { \ + const __m256i key = w[n]; \ + WOP(op) } + #define NUM_AES_KEYS_MAX 15 #define WIDE_LOOP_START_AVX(OP) \ dataEnd = data + numBlocks; \ if (numBlocks >= NUM_WAYS * 2) \ - { __m256i keys[NUM_AES_KEYS_MAX]; \ - UInt32 ii; \ - OP \ - for (ii = 0; ii < numRounds; ii++) \ - keys[ii] = _mm256_broadcastsi128_si256(p[ii]); \ - dataEnd -= NUM_WAYS * 2; do { \ - + { __m256i keys[NUM_AES_KEYS_MAX]; \ + OP \ + { UInt32 ii; for (ii = 0; ii < numRounds; ii++) \ + keys[ii] = _mm256_broadcastsi128_si256(p[ii]); } \ + dataEnd -= NUM_WAYS * 2; \ + do { \ #define WIDE_LOOP_END_AVX(OP) \ - data += NUM_WAYS * 2; \ - } while (data <= dataEnd); \ - dataEnd += NUM_WAYS * 2; \ - OP \ - _mm256_zeroupper(); \ + data += NUM_WAYS * 2; \ + } while (data <= dataEnd); \ + dataEnd += NUM_WAYS * 2; \ + OP \ + _mm256_zeroupper(); \ } \ /* MSVC for x86: If we don't call _mm256_zeroupper(), and -arch:IA32 is not specified, MSVC still can insert vzeroupper instruction. */ +#endif + + AES_FUNC_START2 (AesCbc_Decode_HW) { + __m128i *p = (__m128i *)(void *)ivAes; + __m128i *data = (__m128i *)(void *)data8; __m128i iv = *p; - const __m128i *wStart = p + *(const UInt32 *)(p + 1) * 2 + 2 - 1; + const __m128i * const wStart = p + (size_t)*(const UInt32 *)(p + 1) * 2 + 2 - 1; const __m128i *dataEnd; p += 2; WIDE_LOOP_START { const __m128i *w = wStart; - WOP (DECLARE_VAR) - WOP (LOAD_data); + WOP (LOAD_data) WOP_KEY (AES_XOR, 1) - do { WOP_KEY (AES_DEC, 0) + w--; } while (w != p); WOP_KEY (AES_DEC_LAST, 0) - MM_XOR (m0, iv); + MM_XOR (m0, iv) WOP_M1 (XOR_data_M1) - iv = data[NUM_WAYS - 1]; - WOP (STORE_data); + LOAD_data(iv, NUM_WAYS - 1) + WOP (STORE_data) } WIDE_LOOP_END SINGLE_LOOP { const __m128i *w = wStart - 1; - __m128i m = _mm_xor_si128 (w[2], *data); + __m128i m = _mm_xor_si128 (w[2], LOAD_data_ii(0)); + do { - MM_OP_m (_mm_aesdec_si128, w[1]); - MM_OP_m (_mm_aesdec_si128, w[0]); + MM_OP_m (_mm_aesdec_si128, w[1]) + MM_OP_m (_mm_aesdec_si128, w[0]) w -= 2; } while (w != p); - MM_OP_m (_mm_aesdec_si128, w[1]); - MM_OP_m (_mm_aesdeclast_si128, w[0]); - - MM_XOR (m, iv); - iv = *data; - *data = m; + MM_OP_m (_mm_aesdec_si128, w[1]) + MM_OP_m (_mm_aesdeclast_si128, w[0]) + MM_XOR (m, iv) + LOAD_data(iv, 0) + STORE_data(m, 0) } p[-2] = iv; @@ -271,10 +336,12 @@ AES_FUNC_START2 (AesCbc_Decode_HW) AES_FUNC_START2 (AesCtr_Code_HW) { + __m128i *p = (__m128i *)(void *)ivAes; + __m128i *data = (__m128i *)(void *)data8; __m128i ctr = *p; - UInt32 numRoundsMinus2 = *(const UInt32 *)(p + 1) * 2 - 1; + const UInt32 numRoundsMinus2 = *(const UInt32 *)(p + 1) * 2 - 1; const __m128i *dataEnd; - __m128i one = _mm_cvtsi32_si128(1); + const __m128i one = _mm_cvtsi32_si128(1); p += 2; @@ -283,7 +350,7 @@ AES_FUNC_START2 (AesCtr_Code_HW) const __m128i *w = p; UInt32 r = numRoundsMinus2; WOP (DECLARE_VAR) - WOP (CTR_START); + WOP (CTR_START) WOP_KEY (AES_XOR, 0) w += 1; do @@ -293,8 +360,7 @@ AES_FUNC_START2 (AesCtr_Code_HW) } while (--r); WOP_KEY (AES_ENC_LAST, 0) - - WOP (CTR_END); + WOP (CTR_END) } WIDE_LOOP_END @@ -303,19 +369,19 @@ AES_FUNC_START2 (AesCtr_Code_HW) UInt32 numRounds2 = *(const UInt32 *)(p - 2 + 1) - 1; const __m128i *w = p; __m128i m; - MM_OP (_mm_add_epi64, ctr, one); + MM_OP (_mm_add_epi64, ctr, one) m = _mm_xor_si128 (ctr, p[0]); w += 1; do { - MM_OP_m (_mm_aesenc_si128, w[0]); - MM_OP_m (_mm_aesenc_si128, w[1]); + MM_OP_m (_mm_aesenc_si128, w[0]) + MM_OP_m (_mm_aesenc_si128, w[1]) w += 2; } while (--numRounds2); - MM_OP_m (_mm_aesenc_si128, w[0]); - MM_OP_m (_mm_aesenclast_si128, w[1]); - MM_XOR (*data, m); + MM_OP_m (_mm_aesenc_si128, w[0]) + MM_OP_m (_mm_aesenclast_si128, w[1]) + CTR_END (m, 0) } p[-2] = ctr; @@ -325,17 +391,61 @@ AES_FUNC_START2 (AesCtr_Code_HW) #ifdef USE_INTEL_VAES +/* +GCC before 2013-Jun: + : + #ifdef __AVX__ + #include + #endif +GCC after 2013-Jun: + : + #include +CLANG 3.8+: +{ + : + #if !defined(_MSC_VER) || defined(__AVX__) + #include + #endif + + if (the compiler is clang for Windows and if global arch is not set for __AVX__) + [ if (defined(_MSC_VER) && !defined(__AVX__)) ] + { + doesn't include + and we have 2 ways to fix it: + 1) we can define required __AVX__ before + or + 2) we can include after + } +} + +If we include manually for GCC/CLANG, it's +required that must be included before . +*/ + +/* #if defined(__clang__) && defined(_MSC_VER) -#define __SSE4_2__ -#define __AES__ #define __AVX__ #define __AVX2__ #define __VAES__ -#define __AVX512F__ -#define __AVX512VL__ #endif +*/ #include +#if defined(__clang__) && defined(_MSC_VER) + #if !defined(__AVX__) + #include + #endif + #if !defined(__AVX2__) + #include + #endif + #if !defined(__VAES__) + #include + #endif +#endif // __clang__ && _MSC_VER + +#ifndef ATTRIB_VAES + #define ATTRIB_VAES +#endif #define VAES_FUNC_START2(name) \ AES_FUNC_START (name); \ @@ -344,51 +454,53 @@ AES_FUNC_START (name) VAES_FUNC_START2 (AesCbc_Decode_HW_256) { + __m128i *p = (__m128i *)(void *)ivAes; + __m128i *data = (__m128i *)(void *)data8; __m128i iv = *p; const __m128i *dataEnd; - UInt32 numRounds = *(const UInt32 *)(p + 1) * 2 + 1; + const UInt32 numRounds = *(const UInt32 *)(p + 1) * 2 + 1; p += 2; WIDE_LOOP_START_AVX(;) { const __m256i *w = keys + numRounds - 2; - WOP (AVX__DECLARE_VAR) - WOP (AVX__LOAD_data); - AVX__WOP_KEY (AVX__AES_XOR, 1) + WOP (AVX_DECLARE_VAR) + WOP (AVX_LOAD_data) + AVX_WOP_KEY (AVX_AES_XOR, 1) do { - AVX__WOP_KEY (AVX__AES_DEC, 0) + AVX_WOP_KEY (AVX_AES_DEC, 0) w--; } while (w != keys); - AVX__WOP_KEY (AVX__AES_DEC_LAST, 0) + AVX_WOP_KEY (AVX_AES_DEC_LAST, 0) - AVX_XOR (m0, _mm256_setr_m128i(iv, data[0])); - WOP_M1 (AVX__XOR_data_M1) - iv = data[NUM_WAYS * 2 - 1]; - WOP (AVX__STORE_data); + AVX_XOR (m0, _mm256_setr_m128i(iv, LOAD_data_ii(0))) + WOP_M1 (AVX_XOR_data_M1) + LOAD_data (iv, NUM_WAYS * 2 - 1) + WOP (AVX_STORE_data) } WIDE_LOOP_END_AVX(;) SINGLE_LOOP { - const __m128i *w = p + *(const UInt32 *)(p + 1 - 2) * 2 + 1 - 3; - __m128i m = _mm_xor_si128 (w[2], *data); + const __m128i *w = p - 2 + (size_t)*(const UInt32 *)(p + 1 - 2) * 2; + __m128i m = _mm_xor_si128 (w[2], LOAD_data_ii(0)); do { - MM_OP_m (_mm_aesdec_si128, w[1]); - MM_OP_m (_mm_aesdec_si128, w[0]); + MM_OP_m (_mm_aesdec_si128, w[1]) + MM_OP_m (_mm_aesdec_si128, w[0]) w -= 2; } while (w != p); - MM_OP_m (_mm_aesdec_si128, w[1]); - MM_OP_m (_mm_aesdeclast_si128, w[0]); + MM_OP_m (_mm_aesdec_si128, w[1]) + MM_OP_m (_mm_aesdeclast_si128, w[0]) - MM_XOR (m, iv); - iv = *data; - *data = m; + MM_XOR (m, iv) + LOAD_data(iv, 0) + STORE_data(m, 0) } p[-2] = iv; @@ -403,63 +515,65 @@ AVX2: _mm256_add_epi64 : vpaddq ymm, ymm, ymm _mm256_broadcastsi128_si256 : vbroadcasti128 */ -#define AVX__CTR_LOOP_START \ +#define AVX_CTR_LOOP_START \ ctr2 = _mm256_setr_m128i(_mm_sub_epi64(ctr, one), ctr); \ two = _mm256_setr_m128i(one, one); \ two = _mm256_add_epi64(two, two); \ // two = _mm256_setr_epi64x(2, 0, 2, 0); -#define AVX__CTR_LOOP_ENC \ +#define AVX_CTR_LOOP_ENC \ ctr = _mm256_extracti128_si256 (ctr2, 1); \ VAES_FUNC_START2 (AesCtr_Code_HW_256) { + __m128i *p = (__m128i *)(void *)ivAes; + __m128i *data = (__m128i *)(void *)data8; __m128i ctr = *p; - UInt32 numRounds = *(const UInt32 *)(p + 1) * 2 + 1; + const UInt32 numRounds = *(const UInt32 *)(p + 1) * 2 + 1; const __m128i *dataEnd; - __m128i one = _mm_cvtsi32_si128(1); + const __m128i one = _mm_cvtsi32_si128(1); __m256i ctr2, two; p += 2; - WIDE_LOOP_START_AVX (AVX__CTR_LOOP_START) + WIDE_LOOP_START_AVX (AVX_CTR_LOOP_START) { const __m256i *w = keys; UInt32 r = numRounds - 2; - WOP (AVX__DECLARE_VAR) - AVX__WOP_KEY (AVX__CTR_START, 0); + WOP (AVX_DECLARE_VAR) + AVX_WOP_KEY (AVX_CTR_START, 0) w += 1; do { - AVX__WOP_KEY (AVX__AES_ENC, 0) + AVX_WOP_KEY (AVX_AES_ENC, 0) w += 1; } while (--r); - AVX__WOP_KEY (AVX__AES_ENC_LAST, 0) + AVX_WOP_KEY (AVX_AES_ENC_LAST, 0) - WOP (AVX__CTR_END); + WOP (AVX_CTR_END) } - WIDE_LOOP_END_AVX (AVX__CTR_LOOP_ENC) + WIDE_LOOP_END_AVX (AVX_CTR_LOOP_ENC) SINGLE_LOOP { UInt32 numRounds2 = *(const UInt32 *)(p - 2 + 1) - 1; const __m128i *w = p; __m128i m; - MM_OP (_mm_add_epi64, ctr, one); + MM_OP (_mm_add_epi64, ctr, one) m = _mm_xor_si128 (ctr, p[0]); w += 1; do { - MM_OP_m (_mm_aesenc_si128, w[0]); - MM_OP_m (_mm_aesenc_si128, w[1]); + MM_OP_m (_mm_aesenc_si128, w[0]) + MM_OP_m (_mm_aesenc_si128, w[1]) w += 2; } while (--numRounds2); - MM_OP_m (_mm_aesenc_si128, w[0]); - MM_OP_m (_mm_aesenclast_si128, w[1]); - MM_XOR (*data, m); + MM_OP_m (_mm_aesenc_si128, w[0]) + MM_OP_m (_mm_aesenclast_si128, w[1]) + CTR_END (m, 0) } p[-2] = ctr; @@ -471,13 +585,21 @@ VAES_FUNC_START2 (AesCtr_Code_HW_256) /* no USE_INTEL_AES */ +#if defined(Z7_USE_AES_HW_STUB) +// We can compile this file with another C compiler, +// or we can compile asm version. +// So we can generate real code instead of this stub function. +// #if defined(_MSC_VER) #pragma message("AES HW_SW stub was used") +// #endif +#if !defined(USE_INTEL_VAES) && defined(Z7_USE_VAES_HW_STUB) #define AES_TYPE_keys UInt32 #define AES_TYPE_data Byte +#endif #define AES_FUNC_START(name) \ - void MY_FAST_CALL name(UInt32 *p, Byte *data, size_t numBlocks) \ + void Z7_FASTCALL name(UInt32 *p, Byte *data, size_t numBlocks) \ #define AES_COMPAT_STUB(name) \ AES_FUNC_START(name); \ @@ -487,51 +609,77 @@ VAES_FUNC_START2 (AesCtr_Code_HW_256) AES_COMPAT_STUB (AesCbc_Encode) AES_COMPAT_STUB (AesCbc_Decode) AES_COMPAT_STUB (AesCtr_Code) +#endif // Z7_USE_AES_HW_STUB #endif // USE_INTEL_AES #ifndef USE_INTEL_VAES - +#if defined(Z7_USE_VAES_HW_STUB) +// #if defined(_MSC_VER) #pragma message("VAES HW_SW stub was used") +// #endif #define VAES_COMPAT_STUB(name) \ - void MY_FAST_CALL name ## _256(UInt32 *p, Byte *data, size_t numBlocks); \ - void MY_FAST_CALL name ## _256(UInt32 *p, Byte *data, size_t numBlocks) \ + void Z7_FASTCALL name ## _256(UInt32 *p, Byte *data, size_t numBlocks); \ + void Z7_FASTCALL name ## _256(UInt32 *p, Byte *data, size_t numBlocks) \ { name((AES_TYPE_keys *)(void *)p, (AES_TYPE_data *)(void *)data, numBlocks); } VAES_COMPAT_STUB (AesCbc_Decode_HW) VAES_COMPAT_STUB (AesCtr_Code_HW) - +#endif #endif // ! USE_INTEL_VAES + + #elif defined(MY_CPU_ARM_OR_ARM64) && defined(MY_CPU_LE) - #if defined(__clang__) - #if (__clang_major__ >= 8) // fix that check + #if defined(__ARM_FEATURE_AES) \ + || defined(__ARM_FEATURE_CRYPTO) + #define USE_HW_AES + #else + #if defined(MY_CPU_ARM64) \ + || defined(__ARM_ARCH) && (__ARM_ARCH >= 4) \ + || defined(Z7_MSC_VER_ORIGINAL) + #if defined(__ARM_FP) && \ + ( defined(Z7_CLANG_VERSION) && (Z7_CLANG_VERSION >= 30800) \ + || defined(__GNUC__) && (__GNUC__ >= 6) \ + ) \ + || defined(Z7_MSC_VER_ORIGINAL) && (_MSC_VER >= 1910) + #if defined(MY_CPU_ARM64) \ + || !defined(Z7_CLANG_VERSION) \ + || defined(__ARM_NEON) && \ + (Z7_CLANG_VERSION < 170000 || \ + Z7_CLANG_VERSION > 170001) #define USE_HW_AES #endif - #elif defined(__GNUC__) - #if (__GNUC__ >= 6) // fix that check - #define USE_HW_AES #endif - #elif defined(_MSC_VER) - #if _MSC_VER >= 1910 - #define USE_HW_AES #endif #endif #ifdef USE_HW_AES // #pragma message("=== AES HW === ") +// __ARM_FEATURE_CRYPTO macro is deprecated in favor of the finer grained feature macro __ARM_FEATURE_AES #if defined(__clang__) || defined(__GNUC__) +#if !defined(__ARM_FEATURE_AES) && \ + !defined(__ARM_FEATURE_CRYPTO) #ifdef MY_CPU_ARM64 +#if defined(__clang__) + #define ATTRIB_AES __attribute__((__target__("crypto"))) +#else #define ATTRIB_AES __attribute__((__target__("+crypto"))) +#endif #else +#if defined(__clang__) + #define ATTRIB_AES __attribute__((__target__("armv8-a,aes"))) +#else #define ATTRIB_AES __attribute__((__target__("fpu=crypto-neon-fp-armv8"))) +#endif #endif +#endif #else // _MSC_VER // for arm32 @@ -542,16 +690,65 @@ VAES_COMPAT_STUB (AesCtr_Code_HW) #define ATTRIB_AES #endif -#if defined(_MSC_VER) && defined(MY_CPU_ARM64) +#if defined(Z7_MSC_VER_ORIGINAL) && defined(MY_CPU_ARM64) #include #else -#include +/* + clang-17.0.1: error : Cannot select: intrinsic %llvm.arm.neon.aese + clang + 3.8.1 : __ARM_NEON : defined(__ARM_FEATURE_CRYPTO) + 7.0.1 : __ARM_NEON : __ARM_ARCH >= 8 && defined(__ARM_FEATURE_CRYPTO) + 11.?.0 : __ARM_NEON && __ARM_FP : __ARM_ARCH >= 8 && defined(__ARM_FEATURE_CRYPTO) + 13.0.1 : __ARM_NEON && __ARM_FP : __ARM_ARCH >= 8 && defined(__ARM_FEATURE_AES) + 16 : __ARM_NEON && __ARM_FP : __ARM_ARCH >= 8 +*/ +#if defined(__clang__) && __clang_major__ < 16 +#if !defined(__ARM_FEATURE_AES) && \ + !defined(__ARM_FEATURE_CRYPTO) +// #pragma message("=== we set __ARM_FEATURE_CRYPTO 1 === ") + Z7_DIAGNOSTIC_IGNORE_BEGIN_RESERVED_MACRO_IDENTIFIER + #define Z7_ARM_FEATURE_CRYPTO_WAS_SET 1 +// #if defined(__clang__) && __clang_major__ < 13 + #define __ARM_FEATURE_CRYPTO 1 +// #else + #define __ARM_FEATURE_AES 1 +// #endif + Z7_DIAGNOSTIC_IGNORE_END_RESERVED_MACRO_IDENTIFIER #endif +#endif // clang + +#if defined(__clang__) + +#if defined(__ARM_ARCH) && __ARM_ARCH < 8 + Z7_DIAGNOSTIC_IGNORE_BEGIN_RESERVED_MACRO_IDENTIFIER +// #pragma message("#define __ARM_ARCH 8") + #undef __ARM_ARCH + #define __ARM_ARCH 8 + Z7_DIAGNOSTIC_IGNORE_END_RESERVED_MACRO_IDENTIFIER +#endif + +#endif // clang + +#include + +#if defined(Z7_ARM_FEATURE_CRYPTO_WAS_SET) && \ + defined(__ARM_FEATURE_CRYPTO) && \ + defined(__ARM_FEATURE_AES) +Z7_DIAGNOSTIC_IGNORE_BEGIN_RESERVED_MACRO_IDENTIFIER + #undef __ARM_FEATURE_CRYPTO + #undef __ARM_FEATURE_AES + #undef Z7_ARM_FEATURE_CRYPTO_WAS_SET +Z7_DIAGNOSTIC_IGNORE_END_RESERVED_MACRO_IDENTIFIER +// #pragma message("=== we undefine __ARM_FEATURE_CRYPTO === ") +#endif + +#endif // Z7_MSC_VER_ORIGINAL typedef uint8x16_t v128; #define AES_FUNC_START(name) \ - void MY_FAST_CALL name(v128 *p, v128 *data, size_t numBlocks) + void Z7_FASTCALL name(UInt32 *ivAes, Byte *data8, size_t numBlocks) + // void Z7_FASTCALL name(v128 *p, v128 *data, size_t numBlocks) #define AES_FUNC_START2(name) \ AES_FUNC_START (name); \ @@ -559,19 +756,26 @@ ATTRIB_AES \ AES_FUNC_START (name) #define MM_OP(op, dest, src) dest = op(dest, src); -#define MM_OP_m(op, src) MM_OP(op, m, src); +#define MM_OP_m(op, src) MM_OP(op, m, src) #define MM_OP1_m(op) m = op(m); -#define MM_XOR( dest, src) MM_OP(veorq_u8, dest, src); -#define MM_XOR_m( src) MM_XOR(m, src); +#define MM_XOR( dest, src) MM_OP(veorq_u8, dest, src) +#define MM_XOR_m( src) MM_XOR(m, src) -#define AES_E_m(k) MM_OP_m (vaeseq_u8, k); -#define AES_E_MC_m(k) AES_E_m (k); MM_OP1_m(vaesmcq_u8); +#define AES_E_m(k) MM_OP_m (vaeseq_u8, k) +#define AES_E_MC_m(k) AES_E_m (k) MM_OP1_m(vaesmcq_u8) AES_FUNC_START2 (AesCbc_Encode_HW) { + if (numBlocks == 0) + return; + { + v128 * const p = (v128 *)(void *)ivAes; + v128 *data = (v128 *)(void *)data8; v128 m = *p; + const UInt32 numRounds2 = *(const UInt32 *)(p + 1); + const v128 *w = p + (size_t)numRounds2 * 2; const v128 k0 = p[2]; const v128 k1 = p[3]; const v128 k2 = p[4]; @@ -582,79 +786,84 @@ AES_FUNC_START2 (AesCbc_Encode_HW) const v128 k7 = p[9]; const v128 k8 = p[10]; const v128 k9 = p[11]; - const UInt32 numRounds2 = *(const UInt32 *)(p + 1); - const v128 *w = p + ((size_t)numRounds2 * 2); + const v128 k_z4 = w[-2]; + const v128 k_z3 = w[-1]; + const v128 k_z2 = w[0]; const v128 k_z1 = w[1]; const v128 k_z0 = w[2]; - for (; numBlocks != 0; numBlocks--, data++) + // we don't use optimization veorq_u8(*data, k_z0) that can reduce one cycle, + // because gcc/clang compilers are not good for that optimization. + do { - MM_XOR_m (*data); + MM_XOR_m (*data) AES_E_MC_m (k0) AES_E_MC_m (k1) AES_E_MC_m (k2) AES_E_MC_m (k3) AES_E_MC_m (k4) AES_E_MC_m (k5) - AES_E_MC_m (k6) - AES_E_MC_m (k7) - AES_E_MC_m (k8) if (numRounds2 >= 6) { - AES_E_MC_m (k9) - AES_E_MC_m (p[12]) + AES_E_MC_m (k6) + AES_E_MC_m (k7) if (numRounds2 != 6) { - AES_E_MC_m (p[13]) - AES_E_MC_m (p[14]) + AES_E_MC_m (k8) + AES_E_MC_m (k9) } } - AES_E_m (k_z1); - MM_XOR_m (k_z0); - *data = m; + AES_E_MC_m (k_z4) + AES_E_MC_m (k_z3) + AES_E_MC_m (k_z2) + AES_E_m (k_z1) + MM_XOR_m (k_z0) + *data++ = m; } + while (--numBlocks); *p = m; + } } #define WOP_1(op) -#define WOP_2(op) WOP_1 (op) op (m1, 1); -#define WOP_3(op) WOP_2 (op) op (m2, 2); -#define WOP_4(op) WOP_3 (op) op (m3, 3); -#define WOP_5(op) WOP_4 (op) op (m4, 4); -#define WOP_6(op) WOP_5 (op) op (m5, 5); -#define WOP_7(op) WOP_6 (op) op (m6, 6); -#define WOP_8(op) WOP_7 (op) op (m7, 7); +#define WOP_2(op) WOP_1 (op) op (m1, 1) +#define WOP_3(op) WOP_2 (op) op (m2, 2) +#define WOP_4(op) WOP_3 (op) op (m3, 3) +#define WOP_5(op) WOP_4 (op) op (m4, 4) +#define WOP_6(op) WOP_5 (op) op (m5, 5) +#define WOP_7(op) WOP_6 (op) op (m6, 6) +#define WOP_8(op) WOP_7 (op) op (m7, 7) #define NUM_WAYS 8 #define WOP_M1 WOP_8 -#define WOP(op) op (m0, 0); WOP_M1(op) +#define WOP(op) op (m0, 0) WOP_M1(op) -#define DECLARE_VAR(reg, ii) v128 reg +#define DECLARE_VAR(reg, ii) v128 reg; #define LOAD_data( reg, ii) reg = data[ii]; #define STORE_data( reg, ii) data[ii] = reg; #if (NUM_WAYS > 1) -#define XOR_data_M1(reg, ii) MM_XOR (reg, data[ii- 1]); +#define XOR_data_M1(reg, ii) MM_XOR (reg, data[ii- 1]) #endif -#define MM_OP_key(op, reg) MM_OP (op, reg, key); +#define MM_OP_key(op, reg) MM_OP (op, reg, key) -#define AES_D_m(k) MM_OP_m (vaesdq_u8, k); -#define AES_D_IMC_m(k) AES_D_m (k); MM_OP1_m (vaesimcq_u8); +#define AES_D_m(k) MM_OP_m (vaesdq_u8, k) +#define AES_D_IMC_m(k) AES_D_m (k) MM_OP1_m (vaesimcq_u8) #define AES_XOR( reg, ii) MM_OP_key (veorq_u8, reg) #define AES_D( reg, ii) MM_OP_key (vaesdq_u8, reg) #define AES_E( reg, ii) MM_OP_key (vaeseq_u8, reg) -#define AES_D_IMC( reg, ii) AES_D (reg, ii); reg = vaesimcq_u8(reg) -#define AES_E_MC( reg, ii) AES_E (reg, ii); reg = vaesmcq_u8(reg) +#define AES_D_IMC( reg, ii) AES_D (reg, ii) reg = vaesimcq_u8(reg); +#define AES_E_MC( reg, ii) AES_E (reg, ii) reg = vaesmcq_u8(reg); -#define CTR_START(reg, ii) MM_OP (vaddq_u64, ctr, one); reg = vreinterpretq_u8_u64(ctr); -#define CTR_END( reg, ii) MM_XOR (data[ii], reg); +#define CTR_START(reg, ii) MM_OP (vaddq_u64, ctr, one) reg = vreinterpretq_u8_u64(ctr); +#define CTR_END( reg, ii) MM_XOR (data[ii], reg) #define WOP_KEY(op, n) { \ const v128 key = w[n]; \ - WOP(op); } + WOP(op) } #define WIDE_LOOP_START \ dataEnd = data + numBlocks; \ @@ -672,8 +881,10 @@ AES_FUNC_START2 (AesCbc_Encode_HW) AES_FUNC_START2 (AesCbc_Decode_HW) { + v128 *p = (v128 *)(void *)ivAes; + v128 *data = (v128 *)(void *)data8; v128 iv = *p; - const v128 *wStart = p + ((size_t)*(const UInt32 *)(p + 1)) * 2; + const v128 * const wStart = p + (size_t)*(const UInt32 *)(p + 1) * 2; const v128 *dataEnd; p += 2; @@ -681,7 +892,7 @@ AES_FUNC_START2 (AesCbc_Decode_HW) { const v128 *w = wStart; WOP (DECLARE_VAR) - WOP (LOAD_data); + WOP (LOAD_data) WOP_KEY (AES_D_IMC, 2) do { @@ -692,30 +903,30 @@ AES_FUNC_START2 (AesCbc_Decode_HW) while (w != p); WOP_KEY (AES_D, 1) WOP_KEY (AES_XOR, 0) - MM_XOR (m0, iv); + MM_XOR (m0, iv) WOP_M1 (XOR_data_M1) - iv = data[NUM_WAYS - 1]; - WOP (STORE_data); + LOAD_data(iv, NUM_WAYS - 1) + WOP (STORE_data) } WIDE_LOOP_END SINGLE_LOOP { const v128 *w = wStart; - v128 m = *data; + v128 m; LOAD_data(m, 0) AES_D_IMC_m (w[2]) do { - AES_D_IMC_m (w[1]); - AES_D_IMC_m (w[0]); + AES_D_IMC_m (w[1]) + AES_D_IMC_m (w[0]) w -= 2; } while (w != p); - AES_D_m (w[1]); - MM_XOR_m (w[0]); - MM_XOR_m (iv); - iv = *data; - *data = m; + AES_D_m (w[1]) + MM_XOR_m (w[0]) + MM_XOR_m (iv) + LOAD_data(iv, 0) + STORE_data(m, 0) } p[-2] = iv; @@ -724,18 +935,24 @@ AES_FUNC_START2 (AesCbc_Decode_HW) AES_FUNC_START2 (AesCtr_Code_HW) { + v128 *p = (v128 *)(void *)ivAes; + v128 *data = (v128 *)(void *)data8; uint64x2_t ctr = vreinterpretq_u64_u8(*p); - const v128 *wEnd = p + ((size_t)*(const UInt32 *)(p + 1)) * 2; + const v128 * const wEnd = p + (size_t)*(const UInt32 *)(p + 1) * 2; const v128 *dataEnd; - uint64x2_t one = vdupq_n_u64(0); - one = vsetq_lane_u64(1, one, 0); +// the bug in clang: +// __builtin_neon_vsetq_lane_i64(__s0, (int8x16_t)__s1, __p2); +#if defined(__clang__) && (__clang_major__ <= 9) +#pragma GCC diagnostic ignored "-Wvector-conversion" +#endif + const uint64x2_t one = vsetq_lane_u64(1, vdupq_n_u64(0), 0); p += 2; WIDE_LOOP_START { const v128 *w = p; WOP (DECLARE_VAR) - WOP (CTR_START); + WOP (CTR_START) do { WOP_KEY (AES_E_MC, 0) @@ -746,7 +963,7 @@ AES_FUNC_START2 (AesCtr_Code_HW) WOP_KEY (AES_E_MC, 0) WOP_KEY (AES_E, 1) WOP_KEY (AES_XOR, 2) - WOP (CTR_END); + WOP (CTR_END) } WIDE_LOOP_END @@ -754,18 +971,18 @@ AES_FUNC_START2 (AesCtr_Code_HW) { const v128 *w = p; v128 m; - CTR_START (m, 0); + CTR_START (m, 0) do { - AES_E_MC_m (w[0]); - AES_E_MC_m (w[1]); + AES_E_MC_m (w[0]) + AES_E_MC_m (w[1]) w += 2; } while (w != wEnd); - AES_E_MC_m (w[0]); - AES_E_m (w[1]); - MM_XOR_m (w[2]); - CTR_END (m, 0); + AES_E_MC_m (w[0]) + AES_E_m (w[1]) + MM_XOR_m (w[2]) + CTR_END (m, 0) } p[-2] = vreinterpretq_u8_u64(ctr); @@ -774,3 +991,12 @@ AES_FUNC_START2 (AesCtr_Code_HW) #endif // USE_HW_AES #endif // MY_CPU_ARM_OR_ARM64 + +#undef NUM_WAYS +#undef WOP_M1 +#undef WOP +#undef DECLARE_VAR +#undef LOAD_data +#undef STORE_data +#undef USE_INTEL_AES +#undef USE_HW_AES diff --git a/deps/LZMA-SDK/C/Alloc.c b/deps/LZMA-SDK/C/Alloc.c index 242ae3d4f..63e1a121e 100644 --- a/deps/LZMA-SDK/C/Alloc.c +++ b/deps/LZMA-SDK/C/Alloc.c @@ -1,38 +1,53 @@ /* Alloc.c -- Memory allocation functions -2021-07-13 : Igor Pavlov : Public domain */ +2024-02-18 : Igor Pavlov : Public domain */ #include "Precomp.h" -#include - #ifdef _WIN32 -#include +#include "7zWindows.h" #endif #include #include "Alloc.h" -/* #define _SZ_ALLOC_DEBUG */ +#if defined(Z7_LARGE_PAGES) && defined(_WIN32) && \ + (!defined(Z7_WIN32_WINNT_MIN) || Z7_WIN32_WINNT_MIN < 0x0502) // < Win2003 (xp-64) + #define Z7_USE_DYN_GetLargePageMinimum +#endif -/* use _SZ_ALLOC_DEBUG to debug alloc/free operations */ -#ifdef _SZ_ALLOC_DEBUG +// for debug: +#if 0 +#if defined(__CHERI__) && defined(__SIZEOF_POINTER__) && (__SIZEOF_POINTER__ == 16) +// #pragma message("=== Z7_ALLOC_NO_OFFSET_ALLOCATOR === ") +#define Z7_ALLOC_NO_OFFSET_ALLOCATOR +#endif +#endif +// #define SZ_ALLOC_DEBUG +/* #define SZ_ALLOC_DEBUG */ + +/* use SZ_ALLOC_DEBUG to debug alloc/free operations */ +#ifdef SZ_ALLOC_DEBUG + +#include #include -int g_allocCount = 0; -int g_allocCountMid = 0; -int g_allocCountBig = 0; +static int g_allocCount = 0; +#ifdef _WIN32 +static int g_allocCountMid = 0; +static int g_allocCountBig = 0; +#endif #define CONVERT_INT_TO_STR(charType, tempSize) \ - unsigned char temp[tempSize]; unsigned i = 0; \ - while (val >= 10) { temp[i++] = (unsigned char)('0' + (unsigned)(val % 10)); val /= 10; } \ + char temp[tempSize]; unsigned i = 0; \ + while (val >= 10) { temp[i++] = (char)('0' + (unsigned)(val % 10)); val /= 10; } \ *s++ = (charType)('0' + (unsigned)val); \ while (i != 0) { i--; *s++ = temp[i]; } \ *s = 0; static void ConvertUInt64ToString(UInt64 val, char *s) { - CONVERT_INT_TO_STR(char, 24); + CONVERT_INT_TO_STR(char, 24) } #define GET_HEX_CHAR(t) ((char)(((t < 10) ? ('0' + t) : ('A' + (t - 10))))) @@ -77,7 +92,7 @@ static void PrintAligned(const char *s, size_t align) Print(s); } -static void PrintLn() +static void PrintLn(void) { Print("\n"); } @@ -89,10 +104,10 @@ static void PrintHex(UInt64 v, size_t align) PrintAligned(s, align); } -static void PrintDec(UInt64 v, size_t align) +static void PrintDec(int v, size_t align) { char s[32]; - ConvertUInt64ToString(v, s); + ConvertUInt64ToString((unsigned)v, s); PrintAligned(s, align); } @@ -102,12 +117,19 @@ static void PrintAddr(void *p) } -#define PRINT_ALLOC(name, cnt, size, ptr) \ +#define PRINT_REALLOC(name, cnt, size, ptr) { \ + Print(name " "); \ + if (!ptr) PrintDec(cnt++, 10); \ + PrintHex(size, 10); \ + PrintAddr(ptr); \ + PrintLn(); } + +#define PRINT_ALLOC(name, cnt, size, ptr) { \ Print(name " "); \ PrintDec(cnt++, 10); \ PrintHex(size, 10); \ PrintAddr(ptr); \ - PrintLn(); + PrintLn(); } #define PRINT_FREE(name, cnt, ptr) if (ptr) { \ Print(name " "); \ @@ -117,26 +139,45 @@ static void PrintAddr(void *p) #else +#ifdef _WIN32 #define PRINT_ALLOC(name, cnt, size, ptr) +#endif #define PRINT_FREE(name, cnt, ptr) #define Print(s) #define PrintLn() +#ifndef Z7_ALLOC_NO_OFFSET_ALLOCATOR #define PrintHex(v, align) +#endif #define PrintAddr(p) #endif +/* +by specification: + malloc(non_NULL, 0) : returns NULL or a unique pointer value that can later be successfully passed to free() + realloc(NULL, size) : the call is equivalent to malloc(size) + realloc(non_NULL, 0) : the call is equivalent to free(ptr) + +in main compilers: + malloc(0) : returns non_NULL + realloc(NULL, 0) : returns non_NULL + realloc(non_NULL, 0) : returns NULL +*/ + void *MyAlloc(size_t size) { if (size == 0) return NULL; - PRINT_ALLOC("Alloc ", g_allocCount, size, NULL); - #ifdef _SZ_ALLOC_DEBUG + // PRINT_ALLOC("Alloc ", g_allocCount, size, NULL) + #ifdef SZ_ALLOC_DEBUG { void *p = malloc(size); - // PRINT_ALLOC("Alloc ", g_allocCount, size, p); + if (p) + { + PRINT_ALLOC("Alloc ", g_allocCount, size, p) + } return p; } #else @@ -146,71 +187,107 @@ void *MyAlloc(size_t size) void MyFree(void *address) { - PRINT_FREE("Free ", g_allocCount, address); + PRINT_FREE("Free ", g_allocCount, address) free(address); } +void *MyRealloc(void *address, size_t size) +{ + if (size == 0) + { + MyFree(address); + return NULL; + } + // PRINT_REALLOC("Realloc ", g_allocCount, size, address) + #ifdef SZ_ALLOC_DEBUG + { + void *p = realloc(address, size); + if (p) + { + PRINT_REALLOC("Realloc ", g_allocCount, size, address) + } + return p; + } + #else + return realloc(address, size); + #endif +} + + #ifdef _WIN32 void *MidAlloc(size_t size) { if (size == 0) return NULL; - - PRINT_ALLOC("Alloc-Mid", g_allocCountMid, size, NULL); - + #ifdef SZ_ALLOC_DEBUG + { + void *p = VirtualAlloc(NULL, size, MEM_COMMIT, PAGE_READWRITE); + if (p) + { + PRINT_ALLOC("Alloc-Mid", g_allocCountMid, size, p) + } + return p; + } + #else return VirtualAlloc(NULL, size, MEM_COMMIT, PAGE_READWRITE); + #endif } void MidFree(void *address) { - PRINT_FREE("Free-Mid", g_allocCountMid, address); + PRINT_FREE("Free-Mid", g_allocCountMid, address) if (!address) return; VirtualFree(address, 0, MEM_RELEASE); } -#ifdef _7ZIP_LARGE_PAGES +#ifdef Z7_LARGE_PAGES #ifdef MEM_LARGE_PAGES - #define MY__MEM_LARGE_PAGES MEM_LARGE_PAGES + #define MY_MEM_LARGE_PAGES MEM_LARGE_PAGES #else - #define MY__MEM_LARGE_PAGES 0x20000000 + #define MY_MEM_LARGE_PAGES 0x20000000 #endif extern SIZE_T g_LargePageSize; SIZE_T g_LargePageSize = 0; -typedef SIZE_T (WINAPI *GetLargePageMinimumP)(VOID); +typedef SIZE_T (WINAPI *Func_GetLargePageMinimum)(VOID); -#endif // _7ZIP_LARGE_PAGES - -void SetLargePageSize() +void SetLargePageSize(void) { - #ifdef _7ZIP_LARGE_PAGES SIZE_T size; - GetLargePageMinimumP largePageMinimum = (GetLargePageMinimumP) - GetProcAddress(GetModuleHandle(TEXT("kernel32.dll")), "GetLargePageMinimum"); - if (!largePageMinimum) +#ifdef Z7_USE_DYN_GetLargePageMinimum +Z7_DIAGNOSTIC_IGNORE_CAST_FUNCTION + + const + Func_GetLargePageMinimum fn = + (Func_GetLargePageMinimum) Z7_CAST_FUNC_C GetProcAddress(GetModuleHandle(TEXT("kernel32.dll")), + "GetLargePageMinimum"); + if (!fn) return; - size = largePageMinimum(); + size = fn(); +#else + size = GetLargePageMinimum(); +#endif if (size == 0 || (size & (size - 1)) != 0) return; g_LargePageSize = size; - #endif } +#endif // Z7_LARGE_PAGES void *BigAlloc(size_t size) { if (size == 0) return NULL; - PRINT_ALLOC("Alloc-Big", g_allocCountBig, size, NULL); - - #ifdef _7ZIP_LARGE_PAGES + PRINT_ALLOC("Alloc-Big", g_allocCountBig, size, NULL) + + #ifdef Z7_LARGE_PAGES { SIZE_T ps = g_LargePageSize; if (ps != 0 && ps <= (1 << 30) && size > (ps / 2)) @@ -220,56 +297,43 @@ void *BigAlloc(size_t size) size2 = (size + ps) & ~ps; if (size2 >= size) { - void *res = VirtualAlloc(NULL, size2, MEM_COMMIT | MY__MEM_LARGE_PAGES, PAGE_READWRITE); - if (res) - return res; + void *p = VirtualAlloc(NULL, size2, MEM_COMMIT | MY_MEM_LARGE_PAGES, PAGE_READWRITE); + if (p) + { + PRINT_ALLOC("Alloc-BM ", g_allocCountMid, size2, p) + return p; + } } } } #endif - return VirtualAlloc(NULL, size, MEM_COMMIT, PAGE_READWRITE); + return MidAlloc(size); } void BigFree(void *address) { - PRINT_FREE("Free-Big", g_allocCountBig, address); - - if (!address) - return; - VirtualFree(address, 0, MEM_RELEASE); + PRINT_FREE("Free-Big", g_allocCountBig, address) + MidFree(address); } -#endif +#endif // _WIN32 -static void *SzAlloc(ISzAllocPtr p, size_t size) { UNUSED_VAR(p); return MyAlloc(size); } -static void SzFree(ISzAllocPtr p, void *address) { UNUSED_VAR(p); MyFree(address); } +static void *SzAlloc(ISzAllocPtr p, size_t size) { UNUSED_VAR(p) return MyAlloc(size); } +static void SzFree(ISzAllocPtr p, void *address) { UNUSED_VAR(p) MyFree(address); } const ISzAlloc g_Alloc = { SzAlloc, SzFree }; #ifdef _WIN32 -static void *SzMidAlloc(ISzAllocPtr p, size_t size) { UNUSED_VAR(p); return MidAlloc(size); } -static void SzMidFree(ISzAllocPtr p, void *address) { UNUSED_VAR(p); MidFree(address); } -static void *SzBigAlloc(ISzAllocPtr p, size_t size) { UNUSED_VAR(p); return BigAlloc(size); } -static void SzBigFree(ISzAllocPtr p, void *address) { UNUSED_VAR(p); BigFree(address); } +static void *SzMidAlloc(ISzAllocPtr p, size_t size) { UNUSED_VAR(p) return MidAlloc(size); } +static void SzMidFree(ISzAllocPtr p, void *address) { UNUSED_VAR(p) MidFree(address); } +static void *SzBigAlloc(ISzAllocPtr p, size_t size) { UNUSED_VAR(p) return BigAlloc(size); } +static void SzBigFree(ISzAllocPtr p, void *address) { UNUSED_VAR(p) BigFree(address); } const ISzAlloc g_MidAlloc = { SzMidAlloc, SzMidFree }; const ISzAlloc g_BigAlloc = { SzBigAlloc, SzBigFree }; #endif -/* - uintptr_t : C99 (optional) - : unsupported in VS6 -*/ - -#ifdef _WIN32 - typedef UINT_PTR UIntPtr; -#else - /* - typedef uintptr_t UIntPtr; - */ - typedef ptrdiff_t UIntPtr; -#endif - +#ifndef Z7_ALLOC_NO_OFFSET_ALLOCATOR #define ADJUST_ALLOC_SIZE 0 /* @@ -280,14 +344,36 @@ const ISzAlloc g_BigAlloc = { SzBigAlloc, SzBigFree }; MyAlloc() can return address that is NOT multiple of sizeof(void *). */ - /* -#define MY_ALIGN_PTR_DOWN(p, align) ((void *)((char *)(p) - ((size_t)(UIntPtr)(p) & ((align) - 1)))) + uintptr_t : C99 (optional) + : unsupported in VS6 */ -#define MY_ALIGN_PTR_DOWN(p, align) ((void *)((((UIntPtr)(p)) & ~((UIntPtr)(align) - 1)))) +typedef + #ifdef _WIN32 + UINT_PTR + #elif 1 + uintptr_t + #else + ptrdiff_t + #endif + MY_uintptr_t; +#if 0 \ + || (defined(__CHERI__) \ + || defined(__SIZEOF_POINTER__) && (__SIZEOF_POINTER__ > 8)) +// for 128-bit pointers (cheri): +#define MY_ALIGN_PTR_DOWN(p, align) \ + ((void *)((char *)(p) - ((size_t)(MY_uintptr_t)(p) & ((align) - 1)))) +#else +#define MY_ALIGN_PTR_DOWN(p, align) \ + ((void *)((((MY_uintptr_t)(p)) & ~((MY_uintptr_t)(align) - 1)))) +#endif -#if !defined(_WIN32) && defined(_POSIX_C_SOURCE) && (_POSIX_C_SOURCE >= 200112L) +#endif + +#if !defined(_WIN32) \ + && (defined(Z7_ALLOC_NO_OFFSET_ALLOCATOR) \ + || defined(_POSIX_C_SOURCE) && (_POSIX_C_SOURCE >= 200112L)) #define USE_posix_memalign #endif @@ -327,14 +413,13 @@ static int posix_memalign(void **ptr, size_t align, size_t size) #define ALLOC_ALIGN_SIZE ((size_t)1 << 7) -static void *SzAlignedAlloc(ISzAllocPtr pp, size_t size) +void *z7_AlignedAlloc(size_t size) { - #ifndef USE_posix_memalign +#ifndef USE_posix_memalign void *p; void *pAligned; size_t newSize; - UNUSED_VAR(pp); /* also we can allocate additional dummy ALLOC_ALIGN_SIZE bytes after aligned block to prevent cache line sharing with another allocated blocks */ @@ -359,10 +444,9 @@ static void *SzAlignedAlloc(ISzAllocPtr pp, size_t size) return pAligned; - #else +#else void *p; - UNUSED_VAR(pp); if (posix_memalign(&p, ALLOC_ALIGN_SIZE, size)) return NULL; @@ -371,19 +455,37 @@ static void *SzAlignedAlloc(ISzAllocPtr pp, size_t size) return p; - #endif +#endif +} + + +void z7_AlignedFree(void *address) +{ +#ifndef USE_posix_memalign + if (address) + MyFree(((void **)address)[-1]); +#else + free(address); +#endif +} + + +static void *SzAlignedAlloc(ISzAllocPtr pp, size_t size) +{ + UNUSED_VAR(pp) + return z7_AlignedAlloc(size); } static void SzAlignedFree(ISzAllocPtr pp, void *address) { - UNUSED_VAR(pp); - #ifndef USE_posix_memalign + UNUSED_VAR(pp) +#ifndef USE_posix_memalign if (address) MyFree(((void **)address)[-1]); - #else +#else free(address); - #endif +#endif } @@ -391,17 +493,45 @@ const ISzAlloc g_AlignedAlloc = { SzAlignedAlloc, SzAlignedFree }; -#define MY_ALIGN_PTR_DOWN_1(p) MY_ALIGN_PTR_DOWN(p, sizeof(void *)) - /* we align ptr to support cases where CAlignOffsetAlloc::offset is not multiply of sizeof(void *) */ -#define REAL_BLOCK_PTR_VAR(p) ((void **)MY_ALIGN_PTR_DOWN_1(p))[-1] -/* -#define REAL_BLOCK_PTR_VAR(p) ((void **)(p))[-1] -*/ +#ifndef Z7_ALLOC_NO_OFFSET_ALLOCATOR +#if 1 + #define MY_ALIGN_PTR_DOWN_1(p) MY_ALIGN_PTR_DOWN(p, sizeof(void *)) + #define REAL_BLOCK_PTR_VAR(p) ((void **)MY_ALIGN_PTR_DOWN_1(p))[-1] +#else + // we can use this simplified code, + // if (CAlignOffsetAlloc::offset == (k * sizeof(void *)) + #define REAL_BLOCK_PTR_VAR(p) (((void **)(p))[-1]) +#endif +#endif + + +#if 0 +#ifndef Z7_ALLOC_NO_OFFSET_ALLOCATOR +#include +static void PrintPtr(const char *s, const void *p) +{ + const Byte *p2 = (const Byte *)&p; + unsigned i; + printf("%s %p ", s, p); + for (i = sizeof(p); i != 0;) + { + i--; + printf("%02x", p2[i]); + } + printf("\n"); +} +#endif +#endif + static void *AlignOffsetAlloc_Alloc(ISzAllocPtr pp, size_t size) { - CAlignOffsetAlloc *p = CONTAINER_FROM_VTBL(pp, CAlignOffsetAlloc, vt); +#if defined(Z7_ALLOC_NO_OFFSET_ALLOCATOR) + UNUSED_VAR(pp) + return z7_AlignedAlloc(size); +#else + const CAlignOffsetAlloc *p = Z7_CONTAINER_FROM_VTBL_CONST(pp, CAlignOffsetAlloc, vt); void *adr; void *pAligned; size_t newSize; @@ -429,6 +559,12 @@ static void *AlignOffsetAlloc_Alloc(ISzAllocPtr pp, size_t size) pAligned = (char *)MY_ALIGN_PTR_DOWN((char *)adr + alignSize - p->offset + extra + ADJUST_ALLOC_SIZE, alignSize) + p->offset; +#if 0 + printf("\nalignSize = %6x, offset=%6x, size=%8x \n", (unsigned)alignSize, (unsigned)p->offset, (unsigned)size); + PrintPtr("base", adr); + PrintPtr("alig", pAligned); +#endif + PrintLn(); Print("- Aligned: "); Print(" size="); PrintHex(size, 8); @@ -440,19 +576,25 @@ static void *AlignOffsetAlloc_Alloc(ISzAllocPtr pp, size_t size) REAL_BLOCK_PTR_VAR(pAligned) = adr; return pAligned; +#endif } static void AlignOffsetAlloc_Free(ISzAllocPtr pp, void *address) { +#if defined(Z7_ALLOC_NO_OFFSET_ALLOCATOR) + UNUSED_VAR(pp) + z7_AlignedFree(address); +#else if (address) { - CAlignOffsetAlloc *p = CONTAINER_FROM_VTBL(pp, CAlignOffsetAlloc, vt); + const CAlignOffsetAlloc *p = Z7_CONTAINER_FROM_VTBL_CONST(pp, CAlignOffsetAlloc, vt); PrintLn(); Print("- Aligned Free: "); PrintLn(); ISzAlloc_Free(p->baseAlloc, REAL_BLOCK_PTR_VAR(address)); } +#endif } diff --git a/deps/LZMA-SDK/C/Alloc.h b/deps/LZMA-SDK/C/Alloc.h index 3be2041eb..01bf6b7dd 100644 --- a/deps/LZMA-SDK/C/Alloc.h +++ b/deps/LZMA-SDK/C/Alloc.h @@ -1,31 +1,49 @@ /* Alloc.h -- Memory allocation functions -2021-07-13 : Igor Pavlov : Public domain */ +2024-01-22 : Igor Pavlov : Public domain */ -#ifndef __COMMON_ALLOC_H -#define __COMMON_ALLOC_H +#ifndef ZIP7_INC_ALLOC_H +#define ZIP7_INC_ALLOC_H #include "7zTypes.h" EXTERN_C_BEGIN +/* + MyFree(NULL) : is allowed, as free(NULL) + MyAlloc(0) : returns NULL : but malloc(0) is allowed to return NULL or non_NULL + MyRealloc(NULL, 0) : returns NULL : but realloc(NULL, 0) is allowed to return NULL or non_NULL +MyRealloc() is similar to realloc() for the following cases: + MyRealloc(non_NULL, 0) : returns NULL and always calls MyFree(ptr) + MyRealloc(NULL, non_ZERO) : returns NULL, if allocation failed + MyRealloc(non_NULL, non_ZERO) : returns NULL, if reallocation failed +*/ + void *MyAlloc(size_t size); void MyFree(void *address); +void *MyRealloc(void *address, size_t size); + +void *z7_AlignedAlloc(size_t size); +void z7_AlignedFree(void *p); #ifdef _WIN32 +#ifdef Z7_LARGE_PAGES void SetLargePageSize(void); +#endif void *MidAlloc(size_t size); void MidFree(void *address); void *BigAlloc(size_t size); void BigFree(void *address); +/* #define Z7_BIG_ALLOC_IS_ZERO_FILLED */ + #else -#define MidAlloc(size) MyAlloc(size) -#define MidFree(address) MyFree(address) -#define BigAlloc(size) MyAlloc(size) -#define BigFree(address) MyFree(address) +#define MidAlloc(size) z7_AlignedAlloc(size) +#define MidFree(address) z7_AlignedFree(address) +#define BigAlloc(size) z7_AlignedAlloc(size) +#define BigFree(address) z7_AlignedFree(address) #endif diff --git a/deps/LZMA-SDK/C/Asm_c.mak b/deps/LZMA-SDK/C/Asm_c.mak new file mode 100644 index 000000000..94318163b --- /dev/null +++ b/deps/LZMA-SDK/C/Asm_c.mak @@ -0,0 +1,12 @@ +!IFDEF ASM_OBJS +!IF "$(PLATFORM)" == "arm64" +$(ASM_OBJS): ../../../Asm/arm64/$(*B).S + $(COMPL_ASM_CLANG) +!ELSEIF "$(PLATFORM)" == "arm" +$(ASM_OBJS): ../../../Asm/arm/$(*B).asm + $(COMPL_ASM) +!ELSEIF "$(PLATFORM)" != "ia64" && "$(PLATFORM)" != "mips" +$(ASM_OBJS): ../../../Asm/x86/$(*B).asm + $(COMPL_ASM) +!ENDIF +!ENDIF diff --git a/deps/LZMA-SDK/C/Bcj2.c b/deps/LZMA-SDK/C/Bcj2.c index c7b956708..7cb57ad62 100644 --- a/deps/LZMA-SDK/C/Bcj2.c +++ b/deps/LZMA-SDK/C/Bcj2.c @@ -1,29 +1,24 @@ /* Bcj2.c -- BCJ2 Decoder (Converter for x86 code) -2021-02-09 : Igor Pavlov : Public domain */ +2023-03-01 : Igor Pavlov : Public domain */ #include "Precomp.h" #include "Bcj2.h" #include "CpuArch.h" -#define CProb UInt16 - #define kTopValue ((UInt32)1 << 24) -#define kNumModelBits 11 -#define kBitModelTotal (1 << kNumModelBits) +#define kNumBitModelTotalBits 11 +#define kBitModelTotal (1 << kNumBitModelTotalBits) #define kNumMoveBits 5 -#define _IF_BIT_0 ttt = *prob; bound = (p->range >> kNumModelBits) * ttt; if (p->code < bound) -#define _UPDATE_0 p->range = bound; *prob = (CProb)(ttt + ((kBitModelTotal - ttt) >> kNumMoveBits)); -#define _UPDATE_1 p->range -= bound; p->code -= bound; *prob = (CProb)(ttt - (ttt >> kNumMoveBits)); +// UInt32 bcj2_stats[256 + 2][2]; void Bcj2Dec_Init(CBcj2Dec *p) { unsigned i; - - p->state = BCJ2_DEC_STATE_OK; + p->state = BCJ2_STREAM_RC; // BCJ2_DEC_STATE_OK; p->ip = 0; - p->temp[3] = 0; + p->temp = 0; p->range = 0; p->code = 0; for (i = 0; i < sizeof(p->probs) / sizeof(p->probs[0]); i++) @@ -32,217 +27,248 @@ void Bcj2Dec_Init(CBcj2Dec *p) SRes Bcj2Dec_Decode(CBcj2Dec *p) { + UInt32 v = p->temp; + // const Byte *src; if (p->range <= 5) { - p->state = BCJ2_DEC_STATE_OK; + UInt32 code = p->code; + p->state = BCJ2_DEC_STATE_ERROR; /* for case if we return SZ_ERROR_DATA; */ for (; p->range != 5; p->range++) { - if (p->range == 1 && p->code != 0) + if (p->range == 1 && code != 0) return SZ_ERROR_DATA; - if (p->bufs[BCJ2_STREAM_RC] == p->lims[BCJ2_STREAM_RC]) { p->state = BCJ2_STREAM_RC; return SZ_OK; } - - p->code = (p->code << 8) | *(p->bufs[BCJ2_STREAM_RC])++; + code = (code << 8) | *(p->bufs[BCJ2_STREAM_RC])++; + p->code = code; } - - if (p->code == 0xFFFFFFFF) + if (code == 0xffffffff) return SZ_ERROR_DATA; - - p->range = 0xFFFFFFFF; + p->range = 0xffffffff; } - else if (p->state >= BCJ2_DEC_STATE_ORIG_0) + // else { - while (p->state <= BCJ2_DEC_STATE_ORIG_3) + unsigned state = p->state; + // we check BCJ2_IS_32BIT_STREAM() here instead of check in the main loop + if (BCJ2_IS_32BIT_STREAM(state)) + { + const Byte *cur = p->bufs[state]; + if (cur == p->lims[state]) + return SZ_OK; + p->bufs[state] = cur + 4; + { + const UInt32 ip = p->ip + 4; + v = GetBe32a(cur) - ip; + p->ip = ip; + } + state = BCJ2_DEC_STATE_ORIG_0; + } + if ((unsigned)(state - BCJ2_DEC_STATE_ORIG_0) < 4) { Byte *dest = p->dest; - if (dest == p->destLim) - return SZ_OK; - *dest = p->temp[(size_t)p->state - BCJ2_DEC_STATE_ORIG_0]; - p->state++; - p->dest = dest + 1; - } - } - - /* - if (BCJ2_IS_32BIT_STREAM(p->state)) - { - const Byte *cur = p->bufs[p->state]; - if (cur == p->lims[p->state]) - return SZ_OK; - p->bufs[p->state] = cur + 4; - - { - UInt32 val; - Byte *dest; - SizeT rem; - - p->ip += 4; - val = GetBe32(cur) - p->ip; - dest = p->dest; - rem = p->destLim - dest; - if (rem < 4) + for (;;) { - SizeT i; - SetUi32(p->temp, val); - for (i = 0; i < rem; i++) - dest[i] = p->temp[i]; - p->dest = dest + rem; - p->state = BCJ2_DEC_STATE_ORIG_0 + (unsigned)rem; - return SZ_OK; + if (dest == p->destLim) + { + p->state = state; + p->temp = v; + return SZ_OK; + } + *dest++ = (Byte)v; + p->dest = dest; + if (++state == BCJ2_DEC_STATE_ORIG_3 + 1) + break; + v >>= 8; } - SetUi32(dest, val); - p->temp[3] = (Byte)(val >> 24); - p->dest = dest + 4; - p->state = BCJ2_DEC_STATE_OK; } } - */ + // src = p->bufs[BCJ2_STREAM_MAIN]; for (;;) { + /* if (BCJ2_IS_32BIT_STREAM(p->state)) p->state = BCJ2_DEC_STATE_OK; else + */ { if (p->range < kTopValue) { if (p->bufs[BCJ2_STREAM_RC] == p->lims[BCJ2_STREAM_RC]) { p->state = BCJ2_STREAM_RC; + p->temp = v; return SZ_OK; } p->range <<= 8; p->code = (p->code << 8) | *(p->bufs[BCJ2_STREAM_RC])++; } - { const Byte *src = p->bufs[BCJ2_STREAM_MAIN]; const Byte *srcLim; - Byte *dest; - SizeT num = (SizeT)(p->lims[BCJ2_STREAM_MAIN] - src); - - if (num == 0) + Byte *dest = p->dest; { - p->state = BCJ2_STREAM_MAIN; - return SZ_OK; + const SizeT rem = (SizeT)(p->lims[BCJ2_STREAM_MAIN] - src); + SizeT num = (SizeT)(p->destLim - dest); + if (num >= rem) + num = rem; + #define NUM_ITERS 4 + #if (NUM_ITERS & (NUM_ITERS - 1)) == 0 + num &= ~((SizeT)NUM_ITERS - 1); // if (NUM_ITERS == (1 << x)) + #else + num -= num % NUM_ITERS; // if (NUM_ITERS != (1 << x)) + #endif + srcLim = src + num; } - - dest = p->dest; - if (num > (SizeT)(p->destLim - dest)) + + #define NUM_SHIFT_BITS 24 + #define ONE_ITER(indx) { \ + const unsigned b = src[indx]; \ + *dest++ = (Byte)b; \ + v = (v << NUM_SHIFT_BITS) | b; \ + if (((b + (0x100 - 0xe8)) & 0xfe) == 0) break; \ + if (((v - (((UInt32)0x0f << (NUM_SHIFT_BITS)) + 0x80)) & \ + ((((UInt32)1 << (4 + NUM_SHIFT_BITS)) - 0x1) << 4)) == 0) break; \ + /* ++dest */; /* v = b; */ } + + if (src != srcLim) + for (;;) { - num = (SizeT)(p->destLim - dest); - if (num == 0) + /* The dependency chain of 2-cycle for (v) calculation is not big problem here. + But we can remove dependency chain with v = b in the end of loop. */ + ONE_ITER(0) + #if (NUM_ITERS > 1) + ONE_ITER(1) + #if (NUM_ITERS > 2) + ONE_ITER(2) + #if (NUM_ITERS > 3) + ONE_ITER(3) + #if (NUM_ITERS > 4) + ONE_ITER(4) + #if (NUM_ITERS > 5) + ONE_ITER(5) + #if (NUM_ITERS > 6) + ONE_ITER(6) + #if (NUM_ITERS > 7) + ONE_ITER(7) + #endif + #endif + #endif + #endif + #endif + #endif + #endif + + src += NUM_ITERS; + if (src == srcLim) + break; + } + + if (src == srcLim) + #if (NUM_ITERS > 1) + for (;;) + #endif + { + #if (NUM_ITERS > 1) + if (src == p->lims[BCJ2_STREAM_MAIN] || dest == p->destLim) + #endif { - p->state = BCJ2_DEC_STATE_ORIG; + const SizeT num = (SizeT)(src - p->bufs[BCJ2_STREAM_MAIN]); + p->bufs[BCJ2_STREAM_MAIN] = src; + p->dest = dest; + p->ip += (UInt32)num; + /* state BCJ2_STREAM_MAIN has more priority than BCJ2_STATE_ORIG */ + p->state = + src == p->lims[BCJ2_STREAM_MAIN] ? + (unsigned)BCJ2_STREAM_MAIN : + (unsigned)BCJ2_DEC_STATE_ORIG; + p->temp = v; return SZ_OK; } + #if (NUM_ITERS > 1) + ONE_ITER(0) + src++; + #endif } - - srcLim = src + num; - if (p->temp[3] == 0x0F && (src[0] & 0xF0) == 0x80) - *dest = src[0]; - else for (;;) { - Byte b = *src; - *dest = b; - if (b != 0x0F) - { - if ((b & 0xFE) == 0xE8) - break; - dest++; - if (++src != srcLim) - continue; - break; - } - dest++; - if (++src == srcLim) - break; - if ((*src & 0xF0) != 0x80) - continue; - *dest = *src; - break; - } - - num = (SizeT)(src - p->bufs[BCJ2_STREAM_MAIN]); - - if (src == srcLim) - { - p->temp[3] = src[-1]; - p->bufs[BCJ2_STREAM_MAIN] = src; + const SizeT num = (SizeT)(dest - p->dest); + p->dest = dest; // p->dest += num; + p->bufs[BCJ2_STREAM_MAIN] += num; // = src; p->ip += (UInt32)num; - p->dest += num; - p->state = - p->bufs[BCJ2_STREAM_MAIN] == - p->lims[BCJ2_STREAM_MAIN] ? - (unsigned)BCJ2_STREAM_MAIN : - (unsigned)BCJ2_DEC_STATE_ORIG; - return SZ_OK; } - { UInt32 bound, ttt; - CProb *prob; - Byte b = src[0]; - Byte prev = (Byte)(num == 0 ? p->temp[3] : src[-1]); - - p->temp[3] = b; - p->bufs[BCJ2_STREAM_MAIN] = src + 1; - num++; - p->ip += (UInt32)num; - p->dest += num; - - prob = p->probs + (unsigned)(b == 0xE8 ? 2 + (unsigned)prev : (b == 0xE9 ? 1 : 0)); - - _IF_BIT_0 + CBcj2Prob *prob; // unsigned index; + /* + prob = p->probs + (unsigned)((Byte)v == 0xe8 ? + 2 + (Byte)(v >> 8) : + ((v >> 5) & 1)); // ((Byte)v < 0xe8 ? 0 : 1)); + */ { - _UPDATE_0 + const unsigned c = ((v + 0x17) >> 6) & 1; + prob = p->probs + (unsigned) + (((0 - c) & (Byte)(v >> NUM_SHIFT_BITS)) + c + ((v >> 5) & 1)); + // (Byte) + // 8x->0 : e9->1 : xxe8->xx+2 + // 8x->0x100 : e9->0x101 : xxe8->xx + // (((0x100 - (e & ~v)) & (0x100 | (v >> 8))) + (e & v)); + // (((0x101 + (~e | v)) & (0x100 | (v >> 8))) + (e & v)); + } + ttt = *prob; + bound = (p->range >> kNumBitModelTotalBits) * ttt; + if (p->code < bound) + { + // bcj2_stats[prob - p->probs][0]++; + p->range = bound; + *prob = (CBcj2Prob)(ttt + ((kBitModelTotal - ttt) >> kNumMoveBits)); continue; } - _UPDATE_1 - + { + // bcj2_stats[prob - p->probs][1]++; + p->range -= bound; + p->code -= bound; + *prob = (CBcj2Prob)(ttt - (ttt >> kNumMoveBits)); + } } } } - { - UInt32 val; - unsigned cj = (p->temp[3] == 0xE8) ? BCJ2_STREAM_CALL : BCJ2_STREAM_JUMP; + /* (v == 0xe8 ? 0 : 1) uses setcc instruction with additional zero register usage in x64 MSVC. */ + // const unsigned cj = ((Byte)v == 0xe8) ? BCJ2_STREAM_CALL : BCJ2_STREAM_JUMP; + const unsigned cj = (((v + 0x57) >> 6) & 1) + BCJ2_STREAM_CALL; const Byte *cur = p->bufs[cj]; Byte *dest; SizeT rem; - if (cur == p->lims[cj]) { p->state = cj; break; } - - val = GetBe32(cur); + v = GetBe32a(cur); p->bufs[cj] = cur + 4; - - p->ip += 4; - val -= p->ip; + { + const UInt32 ip = p->ip + 4; + v -= ip; + p->ip = ip; + } dest = p->dest; rem = (SizeT)(p->destLim - dest); - if (rem < 4) { - p->temp[0] = (Byte)val; if (rem > 0) dest[0] = (Byte)val; val >>= 8; - p->temp[1] = (Byte)val; if (rem > 1) dest[1] = (Byte)val; val >>= 8; - p->temp[2] = (Byte)val; if (rem > 2) dest[2] = (Byte)val; val >>= 8; - p->temp[3] = (Byte)val; + if ((unsigned)rem > 0) { dest[0] = (Byte)v; v >>= 8; + if ((unsigned)rem > 1) { dest[1] = (Byte)v; v >>= 8; + if ((unsigned)rem > 2) { dest[2] = (Byte)v; v >>= 8; }}} + p->temp = v; p->dest = dest + rem; p->state = BCJ2_DEC_STATE_ORIG_0 + (unsigned)rem; break; } - - SetUi32(dest, val); - p->temp[3] = (Byte)(val >> 24); + SetUi32(dest, v) + v >>= 24; p->dest = dest + 4; } } @@ -252,6 +278,13 @@ SRes Bcj2Dec_Decode(CBcj2Dec *p) p->range <<= 8; p->code = (p->code << 8) | *(p->bufs[BCJ2_STREAM_RC])++; } - return SZ_OK; } + +#undef NUM_ITERS +#undef ONE_ITER +#undef NUM_SHIFT_BITS +#undef kTopValue +#undef kNumBitModelTotalBits +#undef kBitModelTotal +#undef kNumMoveBits diff --git a/deps/LZMA-SDK/C/Bcj2.h b/deps/LZMA-SDK/C/Bcj2.h index 8824080ac..4575545b6 100644 --- a/deps/LZMA-SDK/C/Bcj2.h +++ b/deps/LZMA-SDK/C/Bcj2.h @@ -1,8 +1,8 @@ -/* Bcj2.h -- BCJ2 Converter for x86 code -2014-11-10 : Igor Pavlov : Public domain */ +/* Bcj2.h -- BCJ2 converter for x86 code (Branch CALL/JUMP variant2) +2023-03-02 : Igor Pavlov : Public domain */ -#ifndef __BCJ2_H -#define __BCJ2_H +#ifndef ZIP7_INC_BCJ2_H +#define ZIP7_INC_BCJ2_H #include "7zTypes.h" @@ -26,37 +26,68 @@ enum BCJ2_DEC_STATE_ORIG_3, BCJ2_DEC_STATE_ORIG, - BCJ2_DEC_STATE_OK + BCJ2_DEC_STATE_ERROR /* after detected data error */ }; enum { BCJ2_ENC_STATE_ORIG = BCJ2_NUM_STREAMS, - BCJ2_ENC_STATE_OK + BCJ2_ENC_STATE_FINISHED /* it's state after fully encoded stream */ }; -#define BCJ2_IS_32BIT_STREAM(s) ((s) == BCJ2_STREAM_CALL || (s) == BCJ2_STREAM_JUMP) +/* #define BCJ2_IS_32BIT_STREAM(s) ((s) == BCJ2_STREAM_CALL || (s) == BCJ2_STREAM_JUMP) */ +#define BCJ2_IS_32BIT_STREAM(s) ((unsigned)((unsigned)(s) - (unsigned)BCJ2_STREAM_CALL) < 2) /* CBcj2Dec / CBcj2Enc bufs sizes: BUF_SIZE(n) = lims[n] - bufs[n] -bufs sizes for BCJ2_STREAM_CALL and BCJ2_STREAM_JUMP must be mutliply of 4: +bufs sizes for BCJ2_STREAM_CALL and BCJ2_STREAM_JUMP must be multiply of 4: (BUF_SIZE(BCJ2_STREAM_CALL) & 3) == 0 (BUF_SIZE(BCJ2_STREAM_JUMP) & 3) == 0 */ +// typedef UInt32 CBcj2Prob; +typedef UInt16 CBcj2Prob; + +/* +BCJ2 encoder / decoder internal requirements: + - If last bytes of stream contain marker (e8/e8/0f8x), then + there is also encoded symbol (0 : no conversion) in RC stream. + - One case of overlapped instructions is supported, + if last byte of converted instruction is (0f) and next byte is (8x): + marker [xx xx xx 0f] 8x + then the pair (0f 8x) is treated as marker. +*/ + +/* ---------- BCJ2 Decoder ---------- */ + /* CBcj2Dec: -dest is allowed to overlap with bufs[BCJ2_STREAM_MAIN], with the following conditions: +(dest) is allowed to overlap with bufs[BCJ2_STREAM_MAIN], with the following conditions: bufs[BCJ2_STREAM_MAIN] >= dest && - bufs[BCJ2_STREAM_MAIN] - dest >= tempReserv + + bufs[BCJ2_STREAM_MAIN] - dest >= BUF_SIZE(BCJ2_STREAM_CALL) + BUF_SIZE(BCJ2_STREAM_JUMP) - tempReserv = 0 : for first call of Bcj2Dec_Decode - tempReserv = 4 : for any other calls of Bcj2Dec_Decode - overlap with offset = 1 is not allowed + reserve = bufs[BCJ2_STREAM_MAIN] - dest - + ( BUF_SIZE(BCJ2_STREAM_CALL) + + BUF_SIZE(BCJ2_STREAM_JUMP) ) + and additional conditions: + if (it's first call of Bcj2Dec_Decode() after Bcj2Dec_Init()) + { + (reserve != 1) : if (ver < v23.00) + } + else // if there are more than one calls of Bcj2Dec_Decode() after Bcj2Dec_Init()) + { + (reserve >= 6) : if (ver < v23.00) + (reserve >= 4) : if (ver >= v23.00) + We need that (reserve) because after first call of Bcj2Dec_Decode(), + CBcj2Dec::temp can contain up to 4 bytes for writing to (dest). + } + (reserve == 0) is allowed, if we decode full stream via single call of Bcj2Dec_Decode(). + (reserve == 0) also is allowed in case of multi-call, if we use fixed buffers, + and (reserve) is calculated from full (final) sizes of all streams before first call. */ typedef struct @@ -68,22 +99,66 @@ typedef struct unsigned state; /* BCJ2_STREAM_MAIN has more priority than BCJ2_STATE_ORIG */ - UInt32 ip; - Byte temp[4]; + UInt32 ip; /* property of starting base for decoding */ + UInt32 temp; /* Byte temp[4]; */ UInt32 range; UInt32 code; - UInt16 probs[2 + 256]; + CBcj2Prob probs[2 + 256]; } CBcj2Dec; + +/* Note: + Bcj2Dec_Init() sets (CBcj2Dec::ip = 0) + if (ip != 0) property is required, the caller must set CBcj2Dec::ip after Bcj2Dec_Init() +*/ void Bcj2Dec_Init(CBcj2Dec *p); -/* Returns: SZ_OK or SZ_ERROR_DATA */ + +/* Bcj2Dec_Decode(): + returns: + SZ_OK + SZ_ERROR_DATA : if data in 5 starting bytes of BCJ2_STREAM_RC stream are not correct +*/ SRes Bcj2Dec_Decode(CBcj2Dec *p); -#define Bcj2Dec_IsFinished(_p_) ((_p_)->code == 0) +/* To check that decoding was finished you can compare + sizes of processed streams with sizes known from another sources. + You must do at least one mandatory check from the two following options: + - the check for size of processed output (ORIG) stream. + - the check for size of processed input (MAIN) stream. + additional optional checks: + - the checks for processed sizes of all input streams (MAIN, CALL, JUMP, RC) + - the checks Bcj2Dec_IsMaybeFinished*() + also before actual decoding you can check that the + following condition is met for stream sizes: + ( size(ORIG) == size(MAIN) + size(CALL) + size(JUMP) ) +*/ + +/* (state == BCJ2_STREAM_MAIN) means that decoder is ready for + additional input data in BCJ2_STREAM_MAIN stream. + Note that (state == BCJ2_STREAM_MAIN) is allowed for non-finished decoding. +*/ +#define Bcj2Dec_IsMaybeFinished_state_MAIN(_p_) ((_p_)->state == BCJ2_STREAM_MAIN) + +/* if the stream decoding was finished correctly, then range decoder + part of CBcj2Dec also was finished, and then (CBcj2Dec::code == 0). + Note that (CBcj2Dec::code == 0) is allowed for non-finished decoding. +*/ +#define Bcj2Dec_IsMaybeFinished_code(_p_) ((_p_)->code == 0) + +/* use Bcj2Dec_IsMaybeFinished() only as additional check + after at least one mandatory check from the two following options: + - the check for size of processed output (ORIG) stream. + - the check for size of processed input (MAIN) stream. +*/ +#define Bcj2Dec_IsMaybeFinished(_p_) ( \ + Bcj2Dec_IsMaybeFinished_state_MAIN(_p_) && \ + Bcj2Dec_IsMaybeFinished_code(_p_)) +/* ---------- BCJ2 Encoder ---------- */ + typedef enum { BCJ2_ENC_FINISH_MODE_CONTINUE, @@ -91,6 +166,91 @@ typedef enum BCJ2_ENC_FINISH_MODE_END_STREAM } EBcj2Enc_FinishMode; +/* + BCJ2_ENC_FINISH_MODE_CONTINUE: + process non finished encoding. + It notifies the encoder that additional further calls + can provide more input data (src) than provided by current call. + In that case the CBcj2Enc encoder still can move (src) pointer + up to (srcLim), but CBcj2Enc encoder can store some of the last + processed bytes (up to 4 bytes) from src to internal CBcj2Enc::temp[] buffer. + at return: + (CBcj2Enc::src will point to position that includes + processed data and data copied to (temp[]) buffer) + That data from (temp[]) buffer will be used in further calls. + + BCJ2_ENC_FINISH_MODE_END_BLOCK: + finish encoding of current block (ended at srcLim) without RC flushing. + at return: if (CBcj2Enc::state == BCJ2_ENC_STATE_ORIG) && + CBcj2Enc::src == CBcj2Enc::srcLim) + : it shows that block encoding was finished. And the encoder is + ready for new (src) data or for stream finish operation. + finished block means + { + CBcj2Enc has completed block encoding up to (srcLim). + (1 + 4 bytes) or (2 + 4 bytes) CALL/JUMP cortages will + not cross block boundary at (srcLim). + temporary CBcj2Enc buffer for (ORIG) src data is empty. + 3 output uncompressed streams (MAIN, CALL, JUMP) were flushed. + RC stream was not flushed. And RC stream will cross block boundary. + } + Note: some possible implementation of BCJ2 encoder could + write branch marker (e8/e8/0f8x) in one call of Bcj2Enc_Encode(), + and it could calculate symbol for RC in another call of Bcj2Enc_Encode(). + BCJ2 encoder uses ip/fileIp/fileSize/relatLimit values to calculate RC symbol. + And these CBcj2Enc variables can have different values in different Bcj2Enc_Encode() calls. + So caller must finish each block with BCJ2_ENC_FINISH_MODE_END_BLOCK + to ensure that RC symbol is calculated and written in proper block. + + BCJ2_ENC_FINISH_MODE_END_STREAM + finish encoding of stream (ended at srcLim) fully including RC flushing. + at return: if (CBcj2Enc::state == BCJ2_ENC_STATE_FINISHED) + : it shows that stream encoding was finished fully, + and all output streams were flushed fully. + also Bcj2Enc_IsFinished() can be called. +*/ + + +/* + 32-bit relative offset in JUMP/CALL commands is + - (mod 4 GiB) for 32-bit x86 code + - signed Int32 for 64-bit x86-64 code + BCJ2 encoder also does internal relative to absolute address conversions. + And there are 2 possible ways to do it: + before v23: we used 32-bit variables and (mod 4 GiB) conversion + since v23: we use 64-bit variables and (signed Int32 offset) conversion. + The absolute address condition for conversion in v23: + ((UInt64)((Int64)ip64 - (Int64)fileIp64 + 5 + (Int32)offset) < (UInt64)fileSize64) + note that if (fileSize64 > 2 GiB). there is difference between + old (mod 4 GiB) way (v22) and new (signed Int32 offset) way (v23). + And new (v23) way is more suitable to encode 64-bit x86-64 code for (fileSize64 > 2 GiB) cases. +*/ + +/* +// for old (v22) way for conversion: +typedef UInt32 CBcj2Enc_ip_unsigned; +typedef Int32 CBcj2Enc_ip_signed; +#define BCJ2_ENC_FileSize_MAX ((UInt32)1 << 31) +*/ +typedef UInt64 CBcj2Enc_ip_unsigned; +typedef Int64 CBcj2Enc_ip_signed; + +/* maximum size of file that can be used for conversion condition */ +#define BCJ2_ENC_FileSize_MAX ((CBcj2Enc_ip_unsigned)0 - 2) + +/* default value of fileSize64_minus1 variable that means + that absolute address limitation will not be used */ +#define BCJ2_ENC_FileSizeField_UNLIMITED ((CBcj2Enc_ip_unsigned)0 - 1) + +/* calculate value that later can be set to CBcj2Enc::fileSize64_minus1 */ +#define BCJ2_ENC_GET_FileSizeField_VAL_FROM_FileSize(fileSize) \ + ((CBcj2Enc_ip_unsigned)(fileSize) - 1) + +/* set CBcj2Enc::fileSize64_minus1 variable from size of file */ +#define Bcj2Enc_SET_FileSize(p, fileSize) \ + (p)->fileSize64_minus1 = BCJ2_ENC_GET_FileSizeField_VAL_FROM_FileSize(fileSize); + + typedef struct { Byte *bufs[BCJ2_NUM_STREAMS]; @@ -101,45 +261,71 @@ typedef struct unsigned state; EBcj2Enc_FinishMode finishMode; - Byte prevByte; + Byte context; + Byte flushRem; + Byte isFlushState; Byte cache; UInt32 range; UInt64 low; UInt64 cacheSize; + + // UInt32 context; // for marker version, it can include marker flag. - UInt32 ip; - - /* 32-bit ralative offset in JUMP/CALL commands is - - (mod 4 GB) in 32-bit mode - - signed Int32 in 64-bit mode - We use (mod 4 GB) check for fileSize. - Use fileSize up to 2 GB, if you want to support 32-bit and 64-bit code conversion. */ - UInt32 fileIp; - UInt32 fileSize; /* (fileSize <= ((UInt32)1 << 31)), 0 means no_limit */ - UInt32 relatLimit; /* (relatLimit <= ((UInt32)1 << 31)), 0 means desable_conversion */ + /* (ip64) and (fileIp64) correspond to virtual source stream position + that doesn't include data in temp[] */ + CBcj2Enc_ip_unsigned ip64; /* current (ip) position */ + CBcj2Enc_ip_unsigned fileIp64; /* start (ip) position of current file */ + CBcj2Enc_ip_unsigned fileSize64_minus1; /* size of current file (for conversion limitation) */ + UInt32 relatLimit; /* (relatLimit <= ((UInt32)1 << 31)) : 0 means disable_conversion */ + // UInt32 relatExcludeBits; UInt32 tempTarget; - unsigned tempPos; - Byte temp[4 * 2]; - - unsigned flushPos; - - UInt16 probs[2 + 256]; + unsigned tempPos; /* the number of bytes that were copied to temp[] buffer + (tempPos <= 4) outside of Bcj2Enc_Encode() */ + // Byte temp[4]; // for marker version + Byte temp[8]; + CBcj2Prob probs[2 + 256]; } CBcj2Enc; void Bcj2Enc_Init(CBcj2Enc *p); + + +/* +Bcj2Enc_Encode(): at exit: + p->State < BCJ2_NUM_STREAMS : we need more buffer space for output stream + (bufs[p->State] == lims[p->State]) + p->State == BCJ2_ENC_STATE_ORIG : we need more data in input src stream + (src == srcLim) + p->State == BCJ2_ENC_STATE_FINISHED : after fully encoded stream +*/ void Bcj2Enc_Encode(CBcj2Enc *p); -#define Bcj2Enc_Get_InputData_Size(p) ((SizeT)((p)->srcLim - (p)->src) + (p)->tempPos) -#define Bcj2Enc_IsFinished(p) ((p)->flushPos == 5) +/* Bcj2Enc encoder can look ahead for up 4 bytes of source stream. + CBcj2Enc::tempPos : is the number of bytes that were copied from input stream to temp[] buffer. + (CBcj2Enc::src) after Bcj2Enc_Encode() is starting position after + fully processed data and after data copied to temp buffer. + So if the caller needs to get real number of fully processed input + bytes (without look ahead data in temp buffer), + the caller must subtruct (CBcj2Enc::tempPos) value from processed size + value that is calculated based on current (CBcj2Enc::src): + cur_processed_pos = Calc_Big_Processed_Pos(enc.src)) - + Bcj2Enc_Get_AvailInputSize_in_Temp(&enc); +*/ +/* get the size of input data that was stored in temp[] buffer: */ +#define Bcj2Enc_Get_AvailInputSize_in_Temp(p) ((p)->tempPos) +#define Bcj2Enc_IsFinished(p) ((p)->flushRem == 0) -#define BCJ2_RELAT_LIMIT_NUM_BITS 26 -#define BCJ2_RELAT_LIMIT ((UInt32)1 << BCJ2_RELAT_LIMIT_NUM_BITS) - -/* limit for CBcj2Enc::fileSize variable */ -#define BCJ2_FileSize_MAX ((UInt32)1 << 31) +/* Note : the decoder supports overlapping of marker (0f 80). + But we can eliminate such overlapping cases by setting + the limit for relative offset conversion as + CBcj2Enc::relatLimit <= (0x0f << 24) == (240 MiB) +*/ +/* default value for CBcj2Enc::relatLimit */ +#define BCJ2_ENC_RELAT_LIMIT_DEFAULT ((UInt32)0x0f << 24) +#define BCJ2_ENC_RELAT_LIMIT_MAX ((UInt32)1 << 31) +// #define BCJ2_RELAT_EXCLUDE_NUM_BITS 5 EXTERN_C_END diff --git a/deps/LZMA-SDK/C/Bcj2Enc.c b/deps/LZMA-SDK/C/Bcj2Enc.c index 682362a15..79460bb15 100644 --- a/deps/LZMA-SDK/C/Bcj2Enc.c +++ b/deps/LZMA-SDK/C/Bcj2Enc.c @@ -1,60 +1,62 @@ -/* Bcj2Enc.c -- BCJ2 Encoder (Converter for x86 code) -2021-02-09 : Igor Pavlov : Public domain */ +/* Bcj2Enc.c -- BCJ2 Encoder converter for x86 code (Branch CALL/JUMP variant2) +2023-04-02 : Igor Pavlov : Public domain */ #include "Precomp.h" /* #define SHOW_STAT */ - #ifdef SHOW_STAT #include -#define PRF(x) x +#define PRF2(s) printf("%s ip=%8x tempPos=%d src= %8x\n", s, (unsigned)p->ip64, p->tempPos, (unsigned)(p->srcLim - p->src)); #else -#define PRF(x) +#define PRF2(s) #endif -#include - #include "Bcj2.h" #include "CpuArch.h" -#define CProb UInt16 - #define kTopValue ((UInt32)1 << 24) -#define kNumModelBits 11 -#define kBitModelTotal (1 << kNumModelBits) +#define kNumBitModelTotalBits 11 +#define kBitModelTotal (1 << kNumBitModelTotalBits) #define kNumMoveBits 5 void Bcj2Enc_Init(CBcj2Enc *p) { unsigned i; - - p->state = BCJ2_ENC_STATE_OK; + p->state = BCJ2_ENC_STATE_ORIG; p->finishMode = BCJ2_ENC_FINISH_MODE_CONTINUE; - - p->prevByte = 0; - + p->context = 0; + p->flushRem = 5; + p->isFlushState = 0; p->cache = 0; - p->range = 0xFFFFFFFF; + p->range = 0xffffffff; p->low = 0; p->cacheSize = 1; - - p->ip = 0; - - p->fileIp = 0; - p->fileSize = 0; - p->relatLimit = BCJ2_RELAT_LIMIT; - + p->ip64 = 0; + p->fileIp64 = 0; + p->fileSize64_minus1 = BCJ2_ENC_FileSizeField_UNLIMITED; + p->relatLimit = BCJ2_ENC_RELAT_LIMIT_DEFAULT; + // p->relatExcludeBits = 0; p->tempPos = 0; - - p->flushPos = 0; - for (i = 0; i < sizeof(p->probs) / sizeof(p->probs[0]); i++) p->probs[i] = kBitModelTotal >> 1; } -static BoolInt MY_FAST_CALL RangeEnc_ShiftLow(CBcj2Enc *p) +// Z7_NO_INLINE +Z7_FORCE_INLINE +static BoolInt Bcj2_RangeEnc_ShiftLow(CBcj2Enc *p) { - if ((UInt32)p->low < (UInt32)0xFF000000 || (UInt32)(p->low >> 32) != 0) + const UInt32 low = (UInt32)p->low; + const unsigned high = (unsigned) + #if defined(Z7_MSC_VER_ORIGINAL) \ + && defined(MY_CPU_X86) \ + && defined(MY_CPU_LE) \ + && !defined(MY_CPU_64BIT) + // we try to rid of __aullshr() call in MSVS-x86 + (((const UInt32 *)&p->low)[1]); // [1] : for little-endian only + #else + (p->low >> 32); + #endif + if (low < (UInt32)0xff000000 || high != 0) { Byte *buf = p->bufs[BCJ2_STREAM_RC]; do @@ -65,247 +67,440 @@ static BoolInt MY_FAST_CALL RangeEnc_ShiftLow(CBcj2Enc *p) p->bufs[BCJ2_STREAM_RC] = buf; return True; } - *buf++ = (Byte)(p->cache + (Byte)(p->low >> 32)); - p->cache = 0xFF; + *buf++ = (Byte)(p->cache + high); + p->cache = 0xff; } while (--p->cacheSize); p->bufs[BCJ2_STREAM_RC] = buf; - p->cache = (Byte)((UInt32)p->low >> 24); + p->cache = (Byte)(low >> 24); } p->cacheSize++; - p->low = (UInt32)p->low << 8; + p->low = low << 8; return False; } + +/* +We can use 2 alternative versions of code: +1) non-marker version: + Byte CBcj2Enc::context + Byte temp[8]; + Last byte of marker (e8/e9/[0f]8x) can be written to temp[] buffer. + Encoder writes last byte of marker (e8/e9/[0f]8x) to dest, only in conjunction + with writing branch symbol to range coder in same Bcj2Enc_Encode_2() call. + +2) marker version: + UInt32 CBcj2Enc::context + Byte CBcj2Enc::temp[4]; + MARKER_FLAG in CBcj2Enc::context shows that CBcj2Enc::context contains finded marker. + it's allowed that + one call of Bcj2Enc_Encode_2() writes last byte of marker (e8/e9/[0f]8x) to dest, + and another call of Bcj2Enc_Encode_2() does offset conversion. + So different values of (fileIp) and (fileSize) are possible + in these different Bcj2Enc_Encode_2() calls. + +Also marker version requires additional if((v & MARKER_FLAG) == 0) check in main loop. +So we use non-marker version. +*/ + +/* + Corner cases with overlap in multi-block. + before v23: there was one corner case, where converted instruction + could start in one sub-stream and finish in next sub-stream. + If multi-block (solid) encoding is used, + and BCJ2_ENC_FINISH_MODE_END_BLOCK is used for each sub-stream. + and (0f) is last byte of previous sub-stream + and (8x) is first byte of current sub-stream + then (0f 8x) pair is treated as marker by BCJ2 encoder and decoder. + BCJ2 encoder can converts 32-bit offset for that (0f 8x) cortage, + if that offset meets limit requirements. + If encoder allows 32-bit offset conversion for such overlap case, + then the data in 3 uncompressed BCJ2 streams for some sub-stream + can depend from data of previous sub-stream. + That corner case is not big problem, and it's rare case. + Since v23.00 we do additional check to prevent conversions in such overlap cases. +*/ + +/* + Bcj2Enc_Encode_2() output variables at exit: + { + if (Bcj2Enc_Encode_2() exits with (p->state == BCJ2_ENC_STATE_ORIG)) + { + it means that encoder needs more input data. + if (p->srcLim == p->src) at exit, then + { + (p->finishMode != BCJ2_ENC_FINISH_MODE_END_STREAM) + all input data were read and processed, and we are ready for + new input data. + } + else + { + (p->srcLim != p->src) + (p->finishMode == BCJ2_ENC_FINISH_MODE_CONTINUE) + The encoder have found e8/e9/0f_8x marker, + and p->src points to last byte of that marker, + Bcj2Enc_Encode_2() needs more input data to get totally + 5 bytes (last byte of marker and 32-bit branch offset) + as continuous array starting from p->src. + (p->srcLim - p->src < 5) requirement is met after exit. + So non-processed resedue from p->src to p->srcLim is always less than 5 bytes. + } + } + } +*/ + +Z7_NO_INLINE static void Bcj2Enc_Encode_2(CBcj2Enc *p) { - if (BCJ2_IS_32BIT_STREAM(p->state)) + if (!p->isFlushState) { - Byte *cur = p->bufs[p->state]; - if (cur == p->lims[p->state]) - return; - SetBe32(cur, p->tempTarget); - p->bufs[p->state] = cur + 4; - } - - p->state = BCJ2_ENC_STATE_ORIG; - - for (;;) - { - if (p->range < kTopValue) - { - if (RangeEnc_ShiftLow(p)) - return; - p->range <<= 8; - } - + const Byte *src; + UInt32 v; { + const unsigned state = p->state; + if (BCJ2_IS_32BIT_STREAM(state)) + { + Byte *cur = p->bufs[state]; + if (cur == p->lims[state]) + return; + SetBe32a(cur, p->tempTarget) + p->bufs[state] = cur + 4; + } + } + p->state = BCJ2_ENC_STATE_ORIG; // for main reason of exit + src = p->src; + v = p->context; + + // #define WRITE_CONTEXT p->context = v; // for marker version + #define WRITE_CONTEXT p->context = (Byte)v; + #define WRITE_CONTEXT_AND_SRC p->src = src; WRITE_CONTEXT + + for (;;) + { + // const Byte *src; + // UInt32 v; + CBcj2Enc_ip_unsigned ip; + if (p->range < kTopValue) + { + // to reduce register pressure and code size: we save and restore local variables. + WRITE_CONTEXT_AND_SRC + if (Bcj2_RangeEnc_ShiftLow(p)) + return; + p->range <<= 8; + src = p->src; + v = p->context; + } + // src = p->src; + // #define MARKER_FLAG ((UInt32)1 << 17) + // if ((v & MARKER_FLAG) == 0) // for marker version { - const Byte *src = p->src; const Byte *srcLim; - Byte *dest; - SizeT num = (SizeT)(p->srcLim - src); - - if (p->finishMode == BCJ2_ENC_FINISH_MODE_CONTINUE) + Byte *dest = p->bufs[BCJ2_STREAM_MAIN]; { - if (num <= 4) - return; - num -= 4; + const SizeT remSrc = (SizeT)(p->srcLim - src); + SizeT rem = (SizeT)(p->lims[BCJ2_STREAM_MAIN] - dest); + if (rem >= remSrc) + rem = remSrc; + srcLim = src + rem; } - else if (num == 0) - break; + /* p->context contains context of previous byte: + bits [0 : 7] : src[-1], if (src) was changed in this call + bits [8 : 31] : are undefined for non-marker version + */ + // v = p->context; + #define NUM_SHIFT_BITS 24 + #define CONV_FLAG ((UInt32)1 << 16) + #define ONE_ITER { \ + b = src[0]; \ + *dest++ = (Byte)b; \ + v = (v << NUM_SHIFT_BITS) | b; \ + if (((b + (0x100 - 0xe8)) & 0xfe) == 0) break; \ + if (((v - (((UInt32)0x0f << (NUM_SHIFT_BITS)) + 0x80)) & \ + ((((UInt32)1 << (4 + NUM_SHIFT_BITS)) - 0x1) << 4)) == 0) break; \ + src++; if (src == srcLim) { break; } } - dest = p->bufs[BCJ2_STREAM_MAIN]; - if (num > (SizeT)(p->lims[BCJ2_STREAM_MAIN] - dest)) + if (src != srcLim) + for (;;) { - num = (SizeT)(p->lims[BCJ2_STREAM_MAIN] - dest); - if (num == 0) + /* clang can generate ineffective code with setne instead of two jcc instructions. + we can use 2 iterations and external (unsigned b) to avoid that ineffective code genaration. */ + unsigned b; + ONE_ITER + ONE_ITER + } + + ip = p->ip64 + (CBcj2Enc_ip_unsigned)(SizeT)(dest - p->bufs[BCJ2_STREAM_MAIN]); + p->bufs[BCJ2_STREAM_MAIN] = dest; + p->ip64 = ip; + + if (src == srcLim) + { + WRITE_CONTEXT_AND_SRC + if (src != p->srcLim) { p->state = BCJ2_STREAM_MAIN; return; } - } - - srcLim = src + num; - - if (p->prevByte == 0x0F && (src[0] & 0xF0) == 0x80) - *dest = src[0]; - else for (;;) - { - Byte b = *src; - *dest = b; - if (b != 0x0F) - { - if ((b & 0xFE) == 0xE8) - break; - dest++; - if (++src != srcLim) - continue; - break; - } - dest++; - if (++src == srcLim) - break; - if ((*src & 0xF0) != 0x80) - continue; - *dest = *src; + /* (p->src == p->srcLim) + (p->state == BCJ2_ENC_STATE_ORIG) */ + if (p->finishMode != BCJ2_ENC_FINISH_MODE_END_STREAM) + return; + /* (p->finishMode == BCJ2_ENC_FINISH_MODE_END_STREAM */ + // (p->flushRem == 5); + p->isFlushState = 1; break; } - - num = (SizeT)(src - p->src); - - if (src == srcLim) + src++; + // p->src = src; + } + // ip = p->ip; // for marker version + /* marker was found */ + /* (v) contains marker that was found: + bits [NUM_SHIFT_BITS : NUM_SHIFT_BITS + 7] + : value of src[-2] : xx/xx/0f + bits [0 : 7] : value of src[-1] : e8/e9/8x + */ + { { - p->prevByte = src[-1]; - p->bufs[BCJ2_STREAM_MAIN] = dest; - p->src = src; - p->ip += (UInt32)num; - continue; - } - - { - Byte context = (Byte)(num == 0 ? p->prevByte : src[-1]); - BoolInt needConvert; - - p->bufs[BCJ2_STREAM_MAIN] = dest + 1; - p->ip += (UInt32)num + 1; - src++; - - needConvert = False; - + #if NUM_SHIFT_BITS != 24 + v &= ~(UInt32)CONV_FLAG; + #endif + // UInt32 relat = 0; if ((SizeT)(p->srcLim - src) >= 4) { - UInt32 relatVal = GetUi32(src); - if ((p->fileSize == 0 || (UInt32)(p->ip + 4 + relatVal - p->fileIp) < p->fileSize) - && ((relatVal + p->relatLimit) >> 1) < p->relatLimit) - needConvert = True; - } - - { - UInt32 bound; - unsigned ttt; - Byte b = src[-1]; - CProb *prob = p->probs + (unsigned)(b == 0xE8 ? 2 + (unsigned)context : (b == 0xE9 ? 1 : 0)); - - ttt = *prob; - bound = (p->range >> kNumModelBits) * ttt; - - if (!needConvert) + /* + if (relat != 0 || (Byte)v != 0xe8) + BoolInt isBigOffset = True; + */ + const UInt32 relat = GetUi32(src); + /* + #define EXCLUDE_FLAG ((UInt32)1 << 4) + #define NEED_CONVERT(rel) ((((rel) + EXCLUDE_FLAG) & (0 - EXCLUDE_FLAG * 2)) != 0) + if (p->relatExcludeBits != 0) { + const UInt32 flag = (UInt32)1 << (p->relatExcludeBits - 1); + isBigOffset = (((relat + flag) & (0 - flag * 2)) != 0); + } + // isBigOffset = False; // for debug + */ + ip -= p->fileIp64; + // Use the following if check, if (ip) is 64-bit: + if (ip > (((v + 0x20) >> 5) & 1)) // 23.00 : we eliminate milti-block overlap for (Of 80) and (e8/e9) + if ((CBcj2Enc_ip_unsigned)((CBcj2Enc_ip_signed)ip + 4 + (Int32)relat) <= p->fileSize64_minus1) + if (((UInt32)(relat + p->relatLimit) >> 1) < p->relatLimit) + v |= CONV_FLAG; + } + else if (p->finishMode == BCJ2_ENC_FINISH_MODE_CONTINUE) + { + // (p->srcLim - src < 4) + // /* + // for non-marker version + p->ip64--; // p->ip = ip - 1; + p->bufs[BCJ2_STREAM_MAIN]--; + src--; + v >>= NUM_SHIFT_BITS; + // (0 < p->srcLim - p->src <= 4) + // */ + // v |= MARKER_FLAG; // for marker version + /* (p->state == BCJ2_ENC_STATE_ORIG) */ + WRITE_CONTEXT_AND_SRC + return; + } + { + const unsigned c = ((v + 0x17) >> 6) & 1; + CBcj2Prob *prob = p->probs + (unsigned) + (((0 - c) & (Byte)(v >> NUM_SHIFT_BITS)) + c + ((v >> 5) & 1)); + /* + ((Byte)v == 0xe8 ? 2 + ((Byte)(v >> 8)) : + ((Byte)v < 0xe8 ? 0 : 1)); // ((v >> 5) & 1)); + */ + const unsigned ttt = *prob; + const UInt32 bound = (p->range >> kNumBitModelTotalBits) * ttt; + if ((v & CONV_FLAG) == 0) + { + // static int yyy = 0; yyy++; printf("\n!needConvert = %d\n", yyy); + // v = (Byte)v; // for marker version p->range = bound; - *prob = (CProb)(ttt + ((kBitModelTotal - ttt) >> kNumMoveBits)); - p->src = src; - p->prevByte = b; + *prob = (CBcj2Prob)(ttt + ((kBitModelTotal - ttt) >> kNumMoveBits)); + // WRITE_CONTEXT_AND_SRC continue; } - p->low += bound; p->range -= bound; - *prob = (CProb)(ttt - (ttt >> kNumMoveBits)); - + *prob = (CBcj2Prob)(ttt - (ttt >> kNumMoveBits)); + } + // p->context = src[3]; + { + // const unsigned cj = ((Byte)v == 0xe8 ? BCJ2_STREAM_CALL : BCJ2_STREAM_JUMP); + const unsigned cj = (((v + 0x57) >> 6) & 1) + BCJ2_STREAM_CALL; + ip = p->ip64; + v = GetUi32(src); // relat + ip += 4; + p->ip64 = ip; + src += 4; + // p->src = src; { - UInt32 relatVal = GetUi32(src); - UInt32 absVal; - p->ip += 4; - absVal = p->ip + relatVal; - p->prevByte = src[3]; - src += 4; - p->src = src; + const UInt32 absol = (UInt32)ip + v; + Byte *cur = p->bufs[cj]; + v >>= 24; + // WRITE_CONTEXT + if (cur == p->lims[cj]) { - unsigned cj = (b == 0xE8) ? BCJ2_STREAM_CALL : BCJ2_STREAM_JUMP; - Byte *cur = p->bufs[cj]; - if (cur == p->lims[cj]) - { - p->state = cj; - p->tempTarget = absVal; - return; - } - SetBe32(cur, absVal); - p->bufs[cj] = cur + 4; + p->state = cj; + p->tempTarget = absol; + WRITE_CONTEXT_AND_SRC + return; } + SetBe32a(cur, absol) + p->bufs[cj] = cur + 4; } } } } - } + } // end of loop } - if (p->finishMode != BCJ2_ENC_FINISH_MODE_END_STREAM) - return; - - for (; p->flushPos < 5; p->flushPos++) - if (RangeEnc_ShiftLow(p)) + for (; p->flushRem != 0; p->flushRem--) + if (Bcj2_RangeEnc_ShiftLow(p)) return; - p->state = BCJ2_ENC_STATE_OK; + p->state = BCJ2_ENC_STATE_FINISHED; } +/* +BCJ2 encoder needs look ahead for up to 4 bytes in (src) buffer. +So base function Bcj2Enc_Encode_2() + in BCJ2_ENC_FINISH_MODE_CONTINUE mode can return with + (p->state == BCJ2_ENC_STATE_ORIG && p->src < p->srcLim) +Bcj2Enc_Encode() solves that look ahead problem by using p->temp[] buffer. + so if (p->state == BCJ2_ENC_STATE_ORIG) after Bcj2Enc_Encode(), + then (p->src == p->srcLim). + And the caller's code is simpler with Bcj2Enc_Encode(). +*/ + +Z7_NO_INLINE void Bcj2Enc_Encode(CBcj2Enc *p) { - PRF(printf("\n")); - PRF(printf("---- ip = %8d tempPos = %8d src = %8d\n", p->ip, p->tempPos, p->srcLim - p->src)); - + PRF2("\n----") if (p->tempPos != 0) { + /* extra: number of bytes that were copied from (src) to (temp) buffer in this call */ unsigned extra = 0; - + /* We will touch only minimal required number of bytes in input (src) stream. + So we will add input bytes from (src) stream to temp[] with step of 1 byte. + We don't add new bytes to temp[] before Bcj2Enc_Encode_2() call + in first loop iteration because + - previous call of Bcj2Enc_Encode() could use another (finishMode), + - previous call could finish with (p->state != BCJ2_ENC_STATE_ORIG). + the case with full temp[] buffer (p->tempPos == 4) is possible here. + */ for (;;) { + // (0 < p->tempPos <= 5) // in non-marker version + /* p->src : the current src data position including extra bytes + that were copied to temp[] buffer in this call */ const Byte *src = p->src; const Byte *srcLim = p->srcLim; - EBcj2Enc_FinishMode finishMode = p->finishMode; - + const EBcj2Enc_FinishMode finishMode = p->finishMode; + if (src != srcLim) + { + /* if there are some src data after the data copied to temp[], + then we use MODE_CONTINUE for temp data */ + p->finishMode = BCJ2_ENC_FINISH_MODE_CONTINUE; + } p->src = p->temp; p->srcLim = p->temp + p->tempPos; - if (src != srcLim) - p->finishMode = BCJ2_ENC_FINISH_MODE_CONTINUE; - - PRF(printf(" ip = %8d tempPos = %8d src = %8d\n", p->ip, p->tempPos, p->srcLim - p->src)); - + PRF2(" ") Bcj2Enc_Encode_2(p); - { - unsigned num = (unsigned)(p->src - p->temp); - unsigned tempPos = p->tempPos - num; + const unsigned num = (unsigned)(p->src - p->temp); + const unsigned tempPos = p->tempPos - num; unsigned i; p->tempPos = tempPos; for (i = 0; i < tempPos; i++) - p->temp[i] = p->temp[(size_t)i + num]; - + p->temp[i] = p->temp[(SizeT)i + num]; + // tempPos : number of bytes in temp buffer p->src = src; p->srcLim = srcLim; p->finishMode = finishMode; - - if (p->state != BCJ2_ENC_STATE_ORIG || src == srcLim) + if (p->state != BCJ2_ENC_STATE_ORIG) + { + // (p->tempPos <= 4) // in non-marker version + /* if (the reason of exit from Bcj2Enc_Encode_2() + is not BCJ2_ENC_STATE_ORIG), + then we exit from Bcj2Enc_Encode() with same reason */ + // optional code begin : we rollback (src) and tempPos, if it's possible: + if (extra >= tempPos) + extra = tempPos; + p->src = src - extra; + p->tempPos = tempPos - extra; + // optional code end : rollback of (src) and tempPos return; - + } + /* (p->tempPos <= 4) + (p->state == BCJ2_ENC_STATE_ORIG) + so encoder needs more data than in temp[] */ + if (src == srcLim) + return; // src buffer has no more input data. + /* (src != srcLim) + so we can provide more input data from src for Bcj2Enc_Encode_2() */ if (extra >= tempPos) { - p->src = src - tempPos; + /* (extra >= tempPos) means that temp buffer contains + only data from src buffer of this call. + So now we can encode without temp buffer */ + p->src = src - tempPos; // rollback (src) p->tempPos = 0; break; } - - p->temp[tempPos] = src[0]; + // we append one additional extra byte from (src) to temp[] buffer: + p->temp[tempPos] = *src; p->tempPos = tempPos + 1; + // (0 < p->tempPos <= 5) // in non-marker version p->src = src + 1; extra++; } } } - PRF(printf("++++ ip = %8d tempPos = %8d src = %8d\n", p->ip, p->tempPos, p->srcLim - p->src)); - + PRF2("++++") + // (p->tempPos == 0) Bcj2Enc_Encode_2(p); + PRF2("====") if (p->state == BCJ2_ENC_STATE_ORIG) { const Byte *src = p->src; - unsigned rem = (unsigned)(p->srcLim - src); - unsigned i; - for (i = 0; i < rem; i++) - p->temp[i] = src[i]; - p->tempPos = rem; - p->src = src + rem; + const Byte *srcLim = p->srcLim; + const unsigned rem = (unsigned)(srcLim - src); + /* (rem <= 4) here. + if (p->src != p->srcLim), then + - we copy non-processed bytes from (p->src) to temp[] buffer, + - we set p->src equal to p->srcLim. + */ + if (rem) + { + unsigned i = 0; + p->src = srcLim; + p->tempPos = rem; + // (0 < p->tempPos <= 4) + do + p->temp[i] = src[i]; + while (++i != rem); + } + // (p->tempPos <= 4) + // (p->src == p->srcLim) } } + +#undef PRF2 +#undef CONV_FLAG +#undef MARKER_FLAG +#undef WRITE_CONTEXT +#undef WRITE_CONTEXT_AND_SRC +#undef ONE_ITER +#undef NUM_SHIFT_BITS +#undef kTopValue +#undef kNumBitModelTotalBits +#undef kBitModelTotal +#undef kNumMoveBits diff --git a/deps/LZMA-SDK/C/Bra.c b/deps/LZMA-SDK/C/Bra.c index 3b854d9ca..e61edf8f1 100644 --- a/deps/LZMA-SDK/C/Bra.c +++ b/deps/LZMA-SDK/C/Bra.c @@ -1,230 +1,709 @@ -/* Bra.c -- Converters for RISC code -2021-02-09 : Igor Pavlov : Public domain */ +/* Bra.c -- Branch converters for RISC code +2024-01-20 : Igor Pavlov : Public domain */ #include "Precomp.h" -#include "CpuArch.h" #include "Bra.h" +#include "RotateDefs.h" +#include "CpuArch.h" -SizeT ARM_Convert(Byte *data, SizeT size, UInt32 ip, int encoding) +#if defined(MY_CPU_SIZEOF_POINTER) \ + && ( MY_CPU_SIZEOF_POINTER == 4 \ + || MY_CPU_SIZEOF_POINTER == 8) + #define BR_CONV_USE_OPT_PC_PTR +#endif + +#ifdef BR_CONV_USE_OPT_PC_PTR +#define BR_PC_INIT pc -= (UInt32)(SizeT)p; +#define BR_PC_GET (pc + (UInt32)(SizeT)p) +#else +#define BR_PC_INIT pc += (UInt32)size; +#define BR_PC_GET (pc - (UInt32)(SizeT)(lim - p)) +// #define BR_PC_INIT +// #define BR_PC_GET (pc + (UInt32)(SizeT)(p - data)) +#endif + +#define BR_CONVERT_VAL(v, c) if (encoding) v += c; else v -= c; +// #define BR_CONVERT_VAL(v, c) if (!encoding) c = (UInt32)0 - c; v += c; + +#define Z7_BRANCH_CONV(name) z7_ ## name + +#define Z7_BRANCH_FUNC_MAIN(name) \ +static \ +Z7_FORCE_INLINE \ +Z7_ATTRIB_NO_VECTOR \ +Byte *Z7_BRANCH_CONV(name)(Byte *p, SizeT size, UInt32 pc, int encoding) + +#define Z7_BRANCH_FUNC_IMP(name, m, encoding) \ +Z7_NO_INLINE \ +Z7_ATTRIB_NO_VECTOR \ +Byte *m(name)(Byte *data, SizeT size, UInt32 pc) \ + { return Z7_BRANCH_CONV(name)(data, size, pc, encoding); } \ + +#ifdef Z7_EXTRACT_ONLY +#define Z7_BRANCH_FUNCS_IMP(name) \ + Z7_BRANCH_FUNC_IMP(name, Z7_BRANCH_CONV_DEC_2, 0) +#else +#define Z7_BRANCH_FUNCS_IMP(name) \ + Z7_BRANCH_FUNC_IMP(name, Z7_BRANCH_CONV_DEC_2, 0) \ + Z7_BRANCH_FUNC_IMP(name, Z7_BRANCH_CONV_ENC_2, 1) +#endif + +#if defined(__clang__) +#define BR_EXTERNAL_FOR +#define BR_NEXT_ITERATION continue; +#else +#define BR_EXTERNAL_FOR for (;;) +#define BR_NEXT_ITERATION break; +#endif + +#if defined(__clang__) && (__clang_major__ >= 8) \ + || defined(__GNUC__) && (__GNUC__ >= 1000) \ + // GCC is not good for __builtin_expect() here + /* || defined(_MSC_VER) && (_MSC_VER >= 1920) */ + // #define Z7_unlikely [[unlikely]] + // #define Z7_LIKELY(x) (__builtin_expect((x), 1)) + #define Z7_UNLIKELY(x) (__builtin_expect((x), 0)) + // #define Z7_likely [[likely]] +#else + // #define Z7_LIKELY(x) (x) + #define Z7_UNLIKELY(x) (x) + // #define Z7_likely +#endif + + +Z7_BRANCH_FUNC_MAIN(BranchConv_ARM64) { - Byte *p; + // Byte *p = data; const Byte *lim; - size &= ~(size_t)3; - ip += 4; - p = data; - lim = data + size; - - if (encoding) - - for (;;) + const UInt32 flag = (UInt32)1 << (24 - 4); + const UInt32 mask = ((UInt32)1 << 24) - (flag << 1); + size &= ~(SizeT)3; + // if (size == 0) return p; + lim = p + size; + BR_PC_INIT + pc -= 4; // because (p) will point to next instruction + + BR_EXTERNAL_FOR { + // Z7_PRAGMA_OPT_DISABLE_LOOP_UNROLL_VECTORIZE for (;;) { - if (p >= lim) - return (SizeT)(p - data); + UInt32 v; + if Z7_UNLIKELY(p == lim) + return p; + v = GetUi32a(p); p += 4; - if (p[-1] == 0xEB) - break; - } - { - UInt32 v = GetUi32(p - 4); - v <<= 2; - v += ip + (UInt32)(p - data); - v >>= 2; - v &= 0x00FFFFFF; - v |= 0xEB000000; - SetUi32(p - 4, v); - } - } - - for (;;) - { - for (;;) - { - if (p >= lim) - return (SizeT)(p - data); - p += 4; - if (p[-1] == 0xEB) - break; - } - { - UInt32 v = GetUi32(p - 4); - v <<= 2; - v -= ip + (UInt32)(p - data); - v >>= 2; - v &= 0x00FFFFFF; - v |= 0xEB000000; - SetUi32(p - 4, v); + if Z7_UNLIKELY(((v - 0x94000000) & 0xfc000000) == 0) + { + UInt32 c = BR_PC_GET >> 2; + BR_CONVERT_VAL(v, c) + v &= 0x03ffffff; + v |= 0x94000000; + SetUi32a(p - 4, v) + BR_NEXT_ITERATION + } + // v = rotlFixed(v, 8); v += (flag << 8) - 0x90; if Z7_UNLIKELY((v & ((mask << 8) + 0x9f)) == 0) + v -= 0x90000000; if Z7_UNLIKELY((v & 0x9f000000) == 0) + { + UInt32 z, c; + // v = rotrFixed(v, 8); + v += flag; if Z7_UNLIKELY(v & mask) continue; + z = (v & 0xffffffe0) | (v >> 26); + c = (BR_PC_GET >> (12 - 3)) & ~(UInt32)7; + BR_CONVERT_VAL(z, c) + v &= 0x1f; + v |= 0x90000000; + v |= z << 26; + v |= 0x00ffffe0 & ((z & (((flag << 1) - 1))) - flag); + SetUi32a(p - 4, v) + } } } } +Z7_BRANCH_FUNCS_IMP(BranchConv_ARM64) -SizeT ARMT_Convert(Byte *data, SizeT size, UInt32 ip, int encoding) +Z7_BRANCH_FUNC_MAIN(BranchConv_ARM) { - Byte *p; + // Byte *p = data; const Byte *lim; - size &= ~(size_t)1; - p = data; - lim = data + size - 4; - - if (encoding) + size &= ~(SizeT)3; + lim = p + size; + BR_PC_INIT + /* in ARM: branch offset is relative to the +2 instructions from current instruction. + (p) will point to next instruction */ + pc += 8 - 4; for (;;) { - UInt32 b1; for (;;) { - UInt32 b3; - if (p > lim) - return (SizeT)(p - data); - b1 = p[1]; - b3 = p[3]; - p += 2; - b1 ^= 8; - if ((b3 & b1) >= 0xF8) - break; + if Z7_UNLIKELY(p >= lim) { return p; } p += 4; if Z7_UNLIKELY(p[-1] == 0xeb) break; + if Z7_UNLIKELY(p >= lim) { return p; } p += 4; if Z7_UNLIKELY(p[-1] == 0xeb) break; } { - UInt32 v = - ((UInt32)b1 << 19) - + (((UInt32)p[1] & 0x7) << 8) - + (((UInt32)p[-2] << 11)) - + (p[0]); - - p += 2; - { - UInt32 cur = (ip + (UInt32)(p - data)) >> 1; - v += cur; - } - - p[-4] = (Byte)(v >> 11); - p[-3] = (Byte)(0xF0 | ((v >> 19) & 0x7)); - p[-2] = (Byte)v; - p[-1] = (Byte)(0xF8 | (v >> 8)); - } - } - - for (;;) - { - UInt32 b1; - for (;;) - { - UInt32 b3; - if (p > lim) - return (SizeT)(p - data); - b1 = p[1]; - b3 = p[3]; - p += 2; - b1 ^= 8; - if ((b3 & b1) >= 0xF8) - break; - } - { - UInt32 v = - ((UInt32)b1 << 19) - + (((UInt32)p[1] & 0x7) << 8) - + (((UInt32)p[-2] << 11)) - + (p[0]); - - p += 2; - { - UInt32 cur = (ip + (UInt32)(p - data)) >> 1; - v -= cur; - } - - /* - SetUi16(p - 4, (UInt16)(((v >> 11) & 0x7FF) | 0xF000)); - SetUi16(p - 2, (UInt16)(v | 0xF800)); - */ - - p[-4] = (Byte)(v >> 11); - p[-3] = (Byte)(0xF0 | ((v >> 19) & 0x7)); - p[-2] = (Byte)v; - p[-1] = (Byte)(0xF8 | (v >> 8)); + UInt32 v = GetUi32a(p - 4); + UInt32 c = BR_PC_GET >> 2; + BR_CONVERT_VAL(v, c) + v &= 0x00ffffff; + v |= 0xeb000000; + SetUi32a(p - 4, v) } } } +Z7_BRANCH_FUNCS_IMP(BranchConv_ARM) -SizeT PPC_Convert(Byte *data, SizeT size, UInt32 ip, int encoding) +Z7_BRANCH_FUNC_MAIN(BranchConv_PPC) { - Byte *p; + // Byte *p = data; const Byte *lim; - size &= ~(size_t)3; - ip -= 4; - p = data; - lim = data + size; - + size &= ~(SizeT)3; + lim = p + size; + BR_PC_INIT + pc -= 4; // because (p) will point to next instruction + for (;;) { + UInt32 v; for (;;) { - if (p >= lim) - return (SizeT)(p - data); + if Z7_UNLIKELY(p == lim) + return p; + // v = GetBe32a(p); + v = *(UInt32 *)(void *)p; p += 4; - /* if ((v & 0xFC000003) == 0x48000001) */ - if ((p[-4] & 0xFC) == 0x48 && (p[-1] & 3) == 1) - break; + // if ((v & 0xfc000003) == 0x48000001) break; + // if ((p[-4] & 0xFC) == 0x48 && (p[-1] & 3) == 1) break; + if Z7_UNLIKELY( + ((v - Z7_CONV_BE_TO_NATIVE_CONST32(0x48000001)) + & Z7_CONV_BE_TO_NATIVE_CONST32(0xfc000003)) == 0) break; } { - UInt32 v = GetBe32(p - 4); - if (encoding) - v += ip + (UInt32)(p - data); - else - v -= ip + (UInt32)(p - data); - v &= 0x03FFFFFF; + v = Z7_CONV_NATIVE_TO_BE_32(v); + { + UInt32 c = BR_PC_GET; + BR_CONVERT_VAL(v, c) + } + v &= 0x03ffffff; v |= 0x48000000; - SetBe32(p - 4, v); + SetBe32a(p - 4, v) } } } +Z7_BRANCH_FUNCS_IMP(BranchConv_PPC) -SizeT SPARC_Convert(Byte *data, SizeT size, UInt32 ip, int encoding) +#ifdef Z7_CPU_FAST_ROTATE_SUPPORTED +#define BR_SPARC_USE_ROTATE +#endif + +Z7_BRANCH_FUNC_MAIN(BranchConv_SPARC) { - Byte *p; + // Byte *p = data; const Byte *lim; - size &= ~(size_t)3; - ip -= 4; - p = data; - lim = data + size; - + const UInt32 flag = (UInt32)1 << 22; + size &= ~(SizeT)3; + lim = p + size; + BR_PC_INIT + pc -= 4; // because (p) will point to next instruction for (;;) { + UInt32 v; for (;;) { - if (p >= lim) - return (SizeT)(p - data); - /* - v = GetBe32(p); - p += 4; - m = v + ((UInt32)5 << 29); - m ^= (UInt32)7 << 29; - m += (UInt32)1 << 22; - if ((m & ((UInt32)0x1FF << 23)) == 0) - break; + if Z7_UNLIKELY(p == lim) + return p; + /* // the code without GetBe32a(): + { const UInt32 v = GetUi16a(p) & 0xc0ff; p += 4; if (v == 0x40 || v == 0xc07f) break; } */ + v = GetBe32a(p); p += 4; - if ((p[-4] == 0x40 && (p[-3] & 0xC0) == 0) || - (p[-4] == 0x7F && (p[-3] >= 0xC0))) + #ifdef BR_SPARC_USE_ROTATE + v = rotlFixed(v, 2); + v += (flag << 2) - 1; + if Z7_UNLIKELY((v & (3 - (flag << 3))) == 0) + #else + v += (UInt32)5 << 29; + v ^= (UInt32)7 << 29; + v += flag; + if Z7_UNLIKELY((v & (0 - (flag << 1))) == 0) + #endif break; } { - UInt32 v = GetBe32(p - 4); + // UInt32 v = GetBe32a(p - 4); + #ifndef BR_SPARC_USE_ROTATE v <<= 2; - if (encoding) - v += ip + (UInt32)(p - data); - else - v -= ip + (UInt32)(p - data); - - v &= 0x01FFFFFF; - v -= (UInt32)1 << 24; - v ^= 0xFF000000; + #endif + { + UInt32 c = BR_PC_GET; + BR_CONVERT_VAL(v, c) + } + v &= (flag << 3) - 1; + #ifdef BR_SPARC_USE_ROTATE + v -= (flag << 2) - 1; + v = rotrFixed(v, 2); + #else + v -= (flag << 2); v >>= 2; - v |= 0x40000000; - SetBe32(p - 4, v); + v |= (UInt32)1 << 30; + #endif + SetBe32a(p - 4, v) } } } +Z7_BRANCH_FUNCS_IMP(BranchConv_SPARC) + + +Z7_BRANCH_FUNC_MAIN(BranchConv_ARMT) +{ + // Byte *p = data; + Byte *lim; + size &= ~(SizeT)1; + // if (size == 0) return p; + if (size <= 2) return p; + size -= 2; + lim = p + size; + BR_PC_INIT + /* in ARM: branch offset is relative to the +2 instructions from current instruction. + (p) will point to the +2 instructions from current instruction */ + // pc += 4 - 4; + // if (encoding) pc -= 0xf800 << 1; else pc += 0xf800 << 1; + // #define ARMT_TAIL_PROC { goto armt_tail; } + #define ARMT_TAIL_PROC { return p; } + + do + { + /* in MSVC 32-bit x86 compilers: + UInt32 version : it loads value from memory with movzx + Byte version : it loads value to 8-bit register (AL/CL) + movzx version is slightly faster in some cpus + */ + unsigned b1; + // Byte / unsigned + b1 = p[1]; + // optimized version to reduce one (p >= lim) check: + // unsigned a1 = p[1]; b1 = p[3]; p += 2; if Z7_LIKELY((b1 & (a1 ^ 8)) < 0xf8) + for (;;) + { + unsigned b3; // Byte / UInt32 + /* (Byte)(b3) normalization can use low byte computations in MSVC. + It gives smaller code, and no loss of speed in some compilers/cpus. + But new MSVC 32-bit x86 compilers use more slow load + from memory to low byte register in that case. + So we try to use full 32-bit computations for faster code. + */ + // if (p >= lim) { ARMT_TAIL_PROC } b3 = b1 + 8; b1 = p[3]; p += 2; if ((b3 & b1) >= 0xf8) break; + if Z7_UNLIKELY(p >= lim) { ARMT_TAIL_PROC } b3 = p[3]; p += 2; if Z7_UNLIKELY((b3 & (b1 ^ 8)) >= 0xf8) break; + if Z7_UNLIKELY(p >= lim) { ARMT_TAIL_PROC } b1 = p[3]; p += 2; if Z7_UNLIKELY((b1 & (b3 ^ 8)) >= 0xf8) break; + } + { + /* we can adjust pc for (0xf800) to rid of (& 0x7FF) operation. + But gcc/clang for arm64 can use bfi instruction for full code here */ + UInt32 v = + ((UInt32)GetUi16a(p - 2) << 11) | + ((UInt32)GetUi16a(p) & 0x7FF); + /* + UInt32 v = + ((UInt32)p[1 - 2] << 19) + + (((UInt32)p[1] & 0x7) << 8) + + (((UInt32)p[-2] << 11)) + + (p[0]); + */ + p += 2; + { + UInt32 c = BR_PC_GET >> 1; + BR_CONVERT_VAL(v, c) + } + SetUi16a(p - 4, (UInt16)(((v >> 11) & 0x7ff) | 0xf000)) + SetUi16a(p - 2, (UInt16)(v | 0xf800)) + /* + p[-4] = (Byte)(v >> 11); + p[-3] = (Byte)(0xf0 | ((v >> 19) & 0x7)); + p[-2] = (Byte)v; + p[-1] = (Byte)(0xf8 | (v >> 8)); + */ + } + } + while (p < lim); + return p; + // armt_tail: + // if ((Byte)((lim[1] & 0xf8)) != 0xf0) { lim += 2; } return lim; + // return (Byte *)(lim + ((Byte)((lim[1] ^ 0xf0) & 0xf8) == 0 ? 0 : 2)); + // return (Byte *)(lim + (((lim[1] ^ ~0xfu) & ~7u) == 0 ? 0 : 2)); + // return (Byte *)(lim + 2 - (((((unsigned)lim[1] ^ 8) + 8) >> 7) & 2)); +} +Z7_BRANCH_FUNCS_IMP(BranchConv_ARMT) + + +// #define BR_IA64_NO_INLINE + +Z7_BRANCH_FUNC_MAIN(BranchConv_IA64) +{ + // Byte *p = data; + const Byte *lim; + size &= ~(SizeT)15; + lim = p + size; + pc -= 1 << 4; + pc >>= 4 - 1; + // pc -= 1 << 1; + + for (;;) + { + unsigned m; + for (;;) + { + if Z7_UNLIKELY(p == lim) + return p; + m = (unsigned)((UInt32)0x334b0000 >> (*p & 0x1e)); + p += 16; + pc += 1 << 1; + if (m &= 3) + break; + } + { + p += (ptrdiff_t)m * 5 - 20; // negative value is expected here. + do + { + const UInt32 t = + #if defined(MY_CPU_X86_OR_AMD64) + // we use 32-bit load here to reduce code size on x86: + GetUi32(p); + #else + GetUi16(p); + #endif + UInt32 z = GetUi32(p + 1) >> m; + p += 5; + if (((t >> m) & (0x70 << 1)) == 0 + && ((z - (0x5000000 << 1)) & (0xf000000 << 1)) == 0) + { + UInt32 v = (UInt32)((0x8fffff << 1) | 1) & z; + z ^= v; + #ifdef BR_IA64_NO_INLINE + v |= (v & ((UInt32)1 << (23 + 1))) >> 3; + { + UInt32 c = pc; + BR_CONVERT_VAL(v, c) + } + v &= (0x1fffff << 1) | 1; + #else + { + if (encoding) + { + // pc &= ~(0xc00000 << 1); // we just need to clear at least 2 bits + pc &= (0x1fffff << 1) | 1; + v += pc; + } + else + { + // pc |= 0xc00000 << 1; // we need to set at least 2 bits + pc |= ~(UInt32)((0x1fffff << 1) | 1); + v -= pc; + } + } + v &= ~(UInt32)(0x600000 << 1); + #endif + v += (0x700000 << 1); + v &= (0x8fffff << 1) | 1; + z |= v; + z <<= m; + SetUi32(p + 1 - 5, z) + } + m++; + } + while (m &= 3); // while (m < 4); + } + } +} +Z7_BRANCH_FUNCS_IMP(BranchConv_IA64) + + +#define BR_CONVERT_VAL_ENC(v) v += BR_PC_GET; +#define BR_CONVERT_VAL_DEC(v) v -= BR_PC_GET; + +#if 1 && defined(MY_CPU_LE_UNALIGN) + #define RISCV_USE_UNALIGNED_LOAD +#endif + +#ifdef RISCV_USE_UNALIGNED_LOAD + #define RISCV_GET_UI32(p) GetUi32(p) + #define RISCV_SET_UI32(p, v) { SetUi32(p, v) } +#else + #define RISCV_GET_UI32(p) \ + ((UInt32)GetUi16a(p) + \ + ((UInt32)GetUi16a((p) + 2) << 16)) + #define RISCV_SET_UI32(p, v) { \ + SetUi16a(p, (UInt16)(v)) \ + SetUi16a((p) + 2, (UInt16)(v >> 16)) } +#endif + +#if 1 && defined(MY_CPU_LE) + #define RISCV_USE_16BIT_LOAD +#endif + +#ifdef RISCV_USE_16BIT_LOAD + #define RISCV_LOAD_VAL(p) GetUi16a(p) +#else + #define RISCV_LOAD_VAL(p) (*(p)) +#endif + +#define RISCV_INSTR_SIZE 2 +#define RISCV_STEP_1 (4 + RISCV_INSTR_SIZE) +#define RISCV_STEP_2 4 +#define RISCV_REG_VAL (2 << 7) +#define RISCV_CMD_VAL 3 +#if 1 + // for code size optimization: + #define RISCV_DELTA_7F 0x7f +#else + #define RISCV_DELTA_7F 0 +#endif + +#define RISCV_CHECK_1(v, b) \ + (((((b) - RISCV_CMD_VAL) ^ ((v) << 8)) & (0xf8000 + RISCV_CMD_VAL)) == 0) + +#if 1 + #define RISCV_CHECK_2(v, r) \ + ((((v) - ((RISCV_CMD_VAL << 12) | RISCV_REG_VAL | 8)) \ + << 18) \ + < ((r) & 0x1d)) +#else + // this branch gives larger code, because + // compilers generate larger code for big constants. + #define RISCV_CHECK_2(v, r) \ + ((((v) - ((RISCV_CMD_VAL << 12) | RISCV_REG_VAL)) \ + & ((RISCV_CMD_VAL << 12) | RISCV_REG_VAL)) \ + < ((r) & 0x1d)) +#endif + + +#define RISCV_SCAN_LOOP \ + Byte *lim; \ + size &= ~(SizeT)(RISCV_INSTR_SIZE - 1); \ + if (size <= 6) return p; \ + size -= 6; \ + lim = p + size; \ + BR_PC_INIT \ + for (;;) \ + { \ + UInt32 a, v; \ + /* Z7_PRAGMA_OPT_DISABLE_LOOP_UNROLL_VECTORIZE */ \ + for (;;) \ + { \ + if Z7_UNLIKELY(p >= lim) { return p; } \ + a = (RISCV_LOAD_VAL(p) ^ 0x10u) + 1; \ + if ((a & 0x77) == 0) break; \ + a = (RISCV_LOAD_VAL(p + RISCV_INSTR_SIZE) ^ 0x10u) + 1; \ + p += RISCV_INSTR_SIZE * 2; \ + if ((a & 0x77) == 0) \ + { \ + p -= RISCV_INSTR_SIZE; \ + if Z7_UNLIKELY(p >= lim) { return p; } \ + break; \ + } \ + } +// (xx6f ^ 10) + 1 = xx7f + 1 = xx80 : JAL +// (xxef ^ 10) + 1 = xxff + 1 = xx00 + 100 : JAL +// (xx17 ^ 10) + 1 = xx07 + 1 = xx08 : AUIPC +// (xx97 ^ 10) + 1 = xx87 + 1 = xx88 : AUIPC + +Byte * Z7_BRANCH_CONV_ENC(RISCV)(Byte *p, SizeT size, UInt32 pc) +{ + RISCV_SCAN_LOOP + v = a; + a = RISCV_GET_UI32(p); +#ifndef RISCV_USE_16BIT_LOAD + v += (UInt32)p[1] << 8; +#endif + + if ((v & 8) == 0) // JAL + { + if ((v - (0x100 /* - RISCV_DELTA_7F */)) & 0xd80) + { + p += RISCV_INSTR_SIZE; + continue; + } + { + v = ((a & 1u << 31) >> 11) + | ((a & 0x3ff << 21) >> 20) + | ((a & 1 << 20) >> 9) + | (a & 0xff << 12); + BR_CONVERT_VAL_ENC(v) + // ((v & 1) == 0) + // v: bits [1 : 20] contain offset bits +#if 0 && defined(RISCV_USE_UNALIGNED_LOAD) + a &= 0xfff; + a |= ((UInt32)(v << 23)) + | ((UInt32)(v << 7) & ((UInt32)0xff << 16)) + | ((UInt32)(v >> 5) & ((UInt32)0xf0 << 8)); + RISCV_SET_UI32(p, a) +#else // aligned +#if 0 + SetUi16a(p, (UInt16)(((v >> 5) & 0xf000) | (a & 0xfff))) +#else + p[1] = (Byte)(((v >> 13) & 0xf0) | ((a >> 8) & 0xf)); +#endif + +#if 1 && defined(Z7_CPU_FAST_BSWAP_SUPPORTED) && defined(MY_CPU_LE) + v <<= 15; + v = Z7_BSWAP32(v); + SetUi16a(p + 2, (UInt16)v) +#else + p[2] = (Byte)(v >> 9); + p[3] = (Byte)(v >> 1); +#endif +#endif // aligned + } + p += 4; + continue; + } // JAL + + { + // AUIPC + if (v & 0xe80) // (not x0) and (not x2) + { + const UInt32 b = RISCV_GET_UI32(p + 4); + if (RISCV_CHECK_1(v, b)) + { + { + const UInt32 temp = (b << 12) | (0x17 + RISCV_REG_VAL); + RISCV_SET_UI32(p, temp) + } + a &= 0xfffff000; + { +#if 1 + const int t = -1 >> 1; + if (t != -1) + a += (b >> 20) - ((b >> 19) & 0x1000); // arithmetic right shift emulation + else +#endif + a += (UInt32)((Int32)b >> 20); // arithmetic right shift (sign-extension). + } + BR_CONVERT_VAL_ENC(a) +#if 1 && defined(Z7_CPU_FAST_BSWAP_SUPPORTED) && defined(MY_CPU_LE) + a = Z7_BSWAP32(a); + RISCV_SET_UI32(p + 4, a) +#else + SetBe32(p + 4, a) +#endif + p += 8; + } + else + p += RISCV_STEP_1; + } + else + { + UInt32 r = a >> 27; + if (RISCV_CHECK_2(v, r)) + { + v = RISCV_GET_UI32(p + 4); + r = (r << 7) + 0x17 + (v & 0xfffff000); + a = (a >> 12) | (v << 20); + RISCV_SET_UI32(p, r) + RISCV_SET_UI32(p + 4, a) + p += 8; + } + else + p += RISCV_STEP_2; + } + } + } // for +} + + +Byte * Z7_BRANCH_CONV_DEC(RISCV)(Byte *p, SizeT size, UInt32 pc) +{ + RISCV_SCAN_LOOP +#ifdef RISCV_USE_16BIT_LOAD + if ((a & 8) == 0) + { +#else + v = a; + a += (UInt32)p[1] << 8; + if ((v & 8) == 0) + { +#endif + // JAL + a -= 0x100 - RISCV_DELTA_7F; + if (a & 0xd80) + { + p += RISCV_INSTR_SIZE; + continue; + } + { + const UInt32 a_old = (a + (0xef - RISCV_DELTA_7F)) & 0xfff; +#if 0 // unaligned + a = GetUi32(p); + v = (UInt32)(a >> 23) & ((UInt32)0xff << 1) + | (UInt32)(a >> 7) & ((UInt32)0xff << 9) +#elif 1 && defined(Z7_CPU_FAST_BSWAP_SUPPORTED) && defined(MY_CPU_LE) + v = GetUi16a(p + 2); + v = Z7_BSWAP32(v) >> 15 +#else + v = (UInt32)p[3] << 1 + | (UInt32)p[2] << 9 +#endif + | (UInt32)((a & 0xf000) << 5); + BR_CONVERT_VAL_DEC(v) + a = a_old + | (v << 11 & 1u << 31) + | (v << 20 & 0x3ff << 21) + | (v << 9 & 1 << 20) + | (v & 0xff << 12); + RISCV_SET_UI32(p, a) + } + p += 4; + continue; + } // JAL + + { + // AUIPC + v = a; +#if 1 && defined(RISCV_USE_UNALIGNED_LOAD) + a = GetUi32(p); +#else + a |= (UInt32)GetUi16a(p + 2) << 16; +#endif + if ((v & 0xe80) == 0) // x0/x2 + { + const UInt32 r = a >> 27; + if (RISCV_CHECK_2(v, r)) + { + UInt32 b; +#if 1 && defined(Z7_CPU_FAST_BSWAP_SUPPORTED) && defined(MY_CPU_LE) + b = RISCV_GET_UI32(p + 4); + b = Z7_BSWAP32(b); +#else + b = GetBe32(p + 4); +#endif + v = a >> 12; + BR_CONVERT_VAL_DEC(b) + a = (r << 7) + 0x17; + a += (b + 0x800) & 0xfffff000; + v |= b << 20; + RISCV_SET_UI32(p, a) + RISCV_SET_UI32(p + 4, v) + p += 8; + } + else + p += RISCV_STEP_2; + } + else + { + const UInt32 b = RISCV_GET_UI32(p + 4); + if (!RISCV_CHECK_1(v, b)) + p += RISCV_STEP_1; + else + { + v = (a & 0xfffff000) | (b >> 20); + a = (b << 12) | (0x17 + RISCV_REG_VAL); + RISCV_SET_UI32(p, a) + RISCV_SET_UI32(p + 4, v) + p += 8; + } + } + } + } // for +} diff --git a/deps/LZMA-SDK/C/Bra.h b/deps/LZMA-SDK/C/Bra.h index 855e37a6b..b47112ced 100644 --- a/deps/LZMA-SDK/C/Bra.h +++ b/deps/LZMA-SDK/C/Bra.h @@ -1,64 +1,105 @@ /* Bra.h -- Branch converters for executables -2013-01-18 : Igor Pavlov : Public domain */ +2024-01-20 : Igor Pavlov : Public domain */ -#ifndef __BRA_H -#define __BRA_H +#ifndef ZIP7_INC_BRA_H +#define ZIP7_INC_BRA_H #include "7zTypes.h" EXTERN_C_BEGIN -/* -These functions convert relative addresses to absolute addresses -in CALL instructions to increase the compression ratio. - - In: - data - data buffer - size - size of data - ip - current virtual Instruction Pinter (IP) value - state - state variable for x86 converter - encoding - 0 (for decoding), 1 (for encoding) - - Out: - state - state variable for x86 converter +/* #define PPC BAD_PPC_11 // for debug */ - Returns: - The number of processed bytes. If you call these functions with multiple calls, - you must start next call with first byte after block of processed bytes. +#define Z7_BRANCH_CONV_DEC_2(name) z7_ ## name ## _Dec +#define Z7_BRANCH_CONV_ENC_2(name) z7_ ## name ## _Enc +#define Z7_BRANCH_CONV_DEC(name) Z7_BRANCH_CONV_DEC_2(BranchConv_ ## name) +#define Z7_BRANCH_CONV_ENC(name) Z7_BRANCH_CONV_ENC_2(BranchConv_ ## name) +#define Z7_BRANCH_CONV_ST_DEC(name) z7_BranchConvSt_ ## name ## _Dec +#define Z7_BRANCH_CONV_ST_ENC(name) z7_BranchConvSt_ ## name ## _Enc + +#define Z7_BRANCH_CONV_DECL(name) Byte * name(Byte *data, SizeT size, UInt32 pc) +#define Z7_BRANCH_CONV_ST_DECL(name) Byte * name(Byte *data, SizeT size, UInt32 pc, UInt32 *state) + +typedef Z7_BRANCH_CONV_DECL( (*z7_Func_BranchConv)); +typedef Z7_BRANCH_CONV_ST_DECL((*z7_Func_BranchConvSt)); + +#define Z7_BRANCH_CONV_ST_X86_STATE_INIT_VAL 0 +Z7_BRANCH_CONV_ST_DECL (Z7_BRANCH_CONV_ST_DEC(X86)); +Z7_BRANCH_CONV_ST_DECL (Z7_BRANCH_CONV_ST_ENC(X86)); + +#define Z7_BRANCH_FUNCS_DECL(name) \ +Z7_BRANCH_CONV_DECL (Z7_BRANCH_CONV_DEC_2(name)); \ +Z7_BRANCH_CONV_DECL (Z7_BRANCH_CONV_ENC_2(name)); + +Z7_BRANCH_FUNCS_DECL (BranchConv_ARM64) +Z7_BRANCH_FUNCS_DECL (BranchConv_ARM) +Z7_BRANCH_FUNCS_DECL (BranchConv_ARMT) +Z7_BRANCH_FUNCS_DECL (BranchConv_PPC) +Z7_BRANCH_FUNCS_DECL (BranchConv_SPARC) +Z7_BRANCH_FUNCS_DECL (BranchConv_IA64) +Z7_BRANCH_FUNCS_DECL (BranchConv_RISCV) + +/* +These functions convert data that contain CPU instructions. +Each such function converts relative addresses to absolute addresses in some +branch instructions: CALL (in all converters) and JUMP (X86 converter only). +Such conversion allows to increase compression ratio, if we compress that data. + +There are 2 types of converters: + Byte * Conv_RISC (Byte *data, SizeT size, UInt32 pc); + Byte * ConvSt_X86(Byte *data, SizeT size, UInt32 pc, UInt32 *state); +Each Converter supports 2 versions: one for encoding +and one for decoding (_Enc/_Dec postfixes in function name). + +In params: + data : data buffer + size : size of data + pc : current virtual Program Counter (Instruction Pointer) value +In/Out param: + state : pointer to state variable (for X86 converter only) + +Return: + The pointer to position in (data) buffer after last byte that was processed. + If the caller calls converter again, it must call it starting with that position. + But the caller is allowed to move data in buffer. So pointer to + current processed position also will be changed for next call. + Also the caller must increase internal (pc) value for next call. +Each converter has some characteristics: Endian, Alignment, LookAhead. Type Endian Alignment LookAhead - x86 little 1 4 + X86 little 1 4 ARMT little 2 2 + RISCV little 2 6 ARM little 4 0 + ARM64 little 4 0 PPC big 4 0 SPARC big 4 0 IA64 little 16 0 - size must be >= Alignment + LookAhead, if it's not last block. - If (size < Alignment + LookAhead), converter returns 0. + (data) must be aligned for (Alignment). + processed size can be calculated as: + SizeT processed = Conv(data, size, pc) - data; + if (processed == 0) + it means that converter needs more data for processing. + If (size < Alignment + LookAhead) + then (processed == 0) is allowed. - Example: - - UInt32 ip = 0; - for () - { - ; size must be >= Alignment + LookAhead, if it's not last block - SizeT processed = Convert(data, size, ip, 1); - data += processed; - size -= processed; - ip += processed; - } +Example code for conversion in loop: + UInt32 pc = 0; + size = 0; + for (;;) + { + size += Load_more_input_data(data + size); + SizeT processed = Conv(data, size, pc) - data; + if (processed == 0 && no_more_input_data_after_size) + break; // we stop convert loop + data += processed; + size -= processed; + pc += processed; + } */ -#define x86_Convert_Init(state) { state = 0; } -SizeT x86_Convert(Byte *data, SizeT size, UInt32 ip, UInt32 *state, int encoding); -SizeT ARM_Convert(Byte *data, SizeT size, UInt32 ip, int encoding); -SizeT ARMT_Convert(Byte *data, SizeT size, UInt32 ip, int encoding); -SizeT PPC_Convert(Byte *data, SizeT size, UInt32 ip, int encoding); -SizeT SPARC_Convert(Byte *data, SizeT size, UInt32 ip, int encoding); -SizeT IA64_Convert(Byte *data, SizeT size, UInt32 ip, int encoding); - EXTERN_C_END #endif diff --git a/deps/LZMA-SDK/C/Bra86.c b/deps/LZMA-SDK/C/Bra86.c index 10a0fbd16..d81f392ae 100644 --- a/deps/LZMA-SDK/C/Bra86.c +++ b/deps/LZMA-SDK/C/Bra86.c @@ -1,82 +1,187 @@ -/* Bra86.c -- Converter for x86 code (BCJ) -2021-02-09 : Igor Pavlov : Public domain */ +/* Bra86.c -- Branch converter for X86 code (BCJ) +2023-04-02 : Igor Pavlov : Public domain */ #include "Precomp.h" #include "Bra.h" +#include "CpuArch.h" -#define Test86MSByte(b) ((((b) + 1) & 0xFE) == 0) -SizeT x86_Convert(Byte *data, SizeT size, UInt32 ip, UInt32 *state, int encoding) +#if defined(MY_CPU_SIZEOF_POINTER) \ + && ( MY_CPU_SIZEOF_POINTER == 4 \ + || MY_CPU_SIZEOF_POINTER == 8) + #define BR_CONV_USE_OPT_PC_PTR +#endif + +#ifdef BR_CONV_USE_OPT_PC_PTR +#define BR_PC_INIT pc -= (UInt32)(SizeT)p; // (MY_uintptr_t) +#define BR_PC_GET (pc + (UInt32)(SizeT)p) +#else +#define BR_PC_INIT pc += (UInt32)size; +#define BR_PC_GET (pc - (UInt32)(SizeT)(lim - p)) +// #define BR_PC_INIT +// #define BR_PC_GET (pc + (UInt32)(SizeT)(p - data)) +#endif + +#define BR_CONVERT_VAL(v, c) if (encoding) v += c; else v -= c; +// #define BR_CONVERT_VAL(v, c) if (!encoding) c = (UInt32)0 - c; v += c; + +#define Z7_BRANCH_CONV_ST(name) z7_BranchConvSt_ ## name + +#define BR86_NEED_CONV_FOR_MS_BYTE(b) ((((b) + 1) & 0xfe) == 0) + +#ifdef MY_CPU_LE_UNALIGN + #define BR86_PREPARE_BCJ_SCAN const UInt32 v = GetUi32(p) ^ 0xe8e8e8e8; + #define BR86_IS_BCJ_BYTE(n) ((v & ((UInt32)0xfe << (n) * 8)) == 0) +#else + #define BR86_PREPARE_BCJ_SCAN + // bad for MSVC X86 (partial write to byte reg): + #define BR86_IS_BCJ_BYTE(n) ((p[n - 4] & 0xfe) == 0xe8) + // bad for old MSVC (partial write to byte reg): + // #define BR86_IS_BCJ_BYTE(n) (((*p ^ 0xe8) & 0xfe) == 0) +#endif + +static +Z7_FORCE_INLINE +Z7_ATTRIB_NO_VECTOR +Byte *Z7_BRANCH_CONV_ST(X86)(Byte *p, SizeT size, UInt32 pc, UInt32 *state, int encoding) { - SizeT pos = 0; - UInt32 mask = *state & 7; if (size < 5) - return 0; - size -= 4; - ip += 5; + return p; + { + // Byte *p = data; + const Byte *lim = p + size - 4; + unsigned mask = (unsigned)*state; // & 7; +#ifdef BR_CONV_USE_OPT_PC_PTR + /* if BR_CONV_USE_OPT_PC_PTR is defined: we need to adjust (pc) for (+4), + because call/jump offset is relative to the next instruction. + if BR_CONV_USE_OPT_PC_PTR is not defined : we don't need to adjust (pc) for (+4), + because BR_PC_GET uses (pc - (lim - p)), and lim was adjusted for (-4) before. + */ + pc += 4; +#endif + BR_PC_INIT + goto start; - for (;;) + for (;; mask |= 4) { - Byte *p = data + pos; - const Byte *limit = data + size; - for (; p < limit; p++) - if ((*p & 0xFE) == 0xE8) - break; - + // cont: mask |= 4; + start: + if (p >= lim) + goto fin; { - SizeT d = (SizeT)(p - data) - pos; - pos = (SizeT)(p - data); - if (p >= limit) - { - *state = (d > 2 ? 0 : mask >> (unsigned)d); - return pos; - } - if (d > 2) - mask = 0; - else - { - mask >>= (unsigned)d; - if (mask != 0 && (mask > 4 || mask == 3 || Test86MSByte(p[(size_t)(mask >> 1) + 1]))) - { - mask = (mask >> 1) | 4; - pos++; - continue; - } - } + BR86_PREPARE_BCJ_SCAN + p += 4; + if (BR86_IS_BCJ_BYTE(0)) { goto m0; } mask >>= 1; + if (BR86_IS_BCJ_BYTE(1)) { goto m1; } mask >>= 1; + if (BR86_IS_BCJ_BYTE(2)) { goto m2; } mask = 0; + if (BR86_IS_BCJ_BYTE(3)) { goto a3; } } + goto main_loop; - if (Test86MSByte(p[4])) + m0: p--; + m1: p--; + m2: p--; + if (mask == 0) + goto a3; + if (p > lim) + goto fin_p; + + // if (((0x17u >> mask) & 1) == 0) + if (mask > 4 || mask == 3) { - UInt32 v = ((UInt32)p[4] << 24) | ((UInt32)p[3] << 16) | ((UInt32)p[2] << 8) | ((UInt32)p[1]); - UInt32 cur = ip + (UInt32)pos; - pos += 5; - if (encoding) - v += cur; - else - v -= cur; - if (mask != 0) + mask >>= 1; + continue; // goto cont; + } + mask >>= 1; + if (BR86_NEED_CONV_FOR_MS_BYTE(p[mask])) + continue; // goto cont; + // if (!BR86_NEED_CONV_FOR_MS_BYTE(p[3])) continue; // goto cont; + { + UInt32 v = GetUi32(p); + UInt32 c; + v += (1 << 24); if (v & 0xfe000000) continue; // goto cont; + c = BR_PC_GET; + BR_CONVERT_VAL(v, c) { - unsigned sh = (mask & 6) << 2; - if (Test86MSByte((Byte)(v >> sh))) + mask <<= 3; + if (BR86_NEED_CONV_FOR_MS_BYTE(v >> mask)) { - v ^= (((UInt32)0x100 << sh) - 1); - if (encoding) - v += cur; - else - v -= cur; + v ^= (((UInt32)0x100 << mask) - 1); + #ifdef MY_CPU_X86 + // for X86 : we can recalculate (c) to reduce register pressure + c = BR_PC_GET; + #endif + BR_CONVERT_VAL(v, c) } mask = 0; } - p[1] = (Byte)v; - p[2] = (Byte)(v >> 8); - p[3] = (Byte)(v >> 16); - p[4] = (Byte)(0 - ((v >> 24) & 1)); + // v = (v & ((1 << 24) - 1)) - (v & (1 << 24)); + v &= (1 << 25) - 1; v -= (1 << 24); + SetUi32(p, v) + p += 4; + goto main_loop; } - else + + main_loop: + if (p >= lim) + goto fin; + for (;;) { - mask = (mask >> 1) | 4; - pos++; + BR86_PREPARE_BCJ_SCAN + p += 4; + if (BR86_IS_BCJ_BYTE(0)) { goto a0; } + if (BR86_IS_BCJ_BYTE(1)) { goto a1; } + if (BR86_IS_BCJ_BYTE(2)) { goto a2; } + if (BR86_IS_BCJ_BYTE(3)) { goto a3; } + if (p >= lim) + goto fin; + } + + a0: p--; + a1: p--; + a2: p--; + a3: + if (p > lim) + goto fin_p; + // if (!BR86_NEED_CONV_FOR_MS_BYTE(p[3])) continue; // goto cont; + { + UInt32 v = GetUi32(p); + UInt32 c; + v += (1 << 24); if (v & 0xfe000000) continue; // goto cont; + c = BR_PC_GET; + BR_CONVERT_VAL(v, c) + // v = (v & ((1 << 24) - 1)) - (v & (1 << 24)); + v &= (1 << 25) - 1; v -= (1 << 24); + SetUi32(p, v) + p += 4; + goto main_loop; } } + +fin_p: + p--; +fin: + // the following processing for tail is optional and can be commented + /* + lim += 4; + for (; p < lim; p++, mask >>= 1) + if ((*p & 0xfe) == 0xe8) + break; + */ + *state = (UInt32)mask; + return p; + } } + + +#define Z7_BRANCH_CONV_ST_FUNC_IMP(name, m, encoding) \ +Z7_NO_INLINE \ +Z7_ATTRIB_NO_VECTOR \ +Byte *m(name)(Byte *data, SizeT size, UInt32 pc, UInt32 *state) \ + { return Z7_BRANCH_CONV_ST(name)(data, size, pc, state, encoding); } + +Z7_BRANCH_CONV_ST_FUNC_IMP(X86, Z7_BRANCH_CONV_ST_DEC, 0) +#ifndef Z7_EXTRACT_ONLY +Z7_BRANCH_CONV_ST_FUNC_IMP(X86, Z7_BRANCH_CONV_ST_ENC, 1) +#endif diff --git a/deps/LZMA-SDK/C/BraIA64.c b/deps/LZMA-SDK/C/BraIA64.c index d1dbc62c5..9dfe3e289 100644 --- a/deps/LZMA-SDK/C/BraIA64.c +++ b/deps/LZMA-SDK/C/BraIA64.c @@ -1,53 +1,14 @@ /* BraIA64.c -- Converter for IA-64 code -2017-01-26 : Igor Pavlov : Public domain */ +2023-02-20 : Igor Pavlov : Public domain */ #include "Precomp.h" -#include "CpuArch.h" -#include "Bra.h" +// the code was moved to Bra.c -SizeT IA64_Convert(Byte *data, SizeT size, UInt32 ip, int encoding) -{ - SizeT i; - if (size < 16) - return 0; - size -= 16; - i = 0; - do - { - unsigned m = ((UInt32)0x334B0000 >> (data[i] & 0x1E)) & 3; - if (m) - { - m++; - do - { - Byte *p = data + (i + (size_t)m * 5 - 8); - if (((p[3] >> m) & 15) == 5 - && (((p[-1] | ((UInt32)p[0] << 8)) >> m) & 0x70) == 0) - { - unsigned raw = GetUi32(p); - unsigned v = raw >> m; - v = (v & 0xFFFFF) | ((v & (1 << 23)) >> 3); - - v <<= 4; - if (encoding) - v += ip + (UInt32)i; - else - v -= ip + (UInt32)i; - v >>= 4; - - v &= 0x1FFFFF; - v += 0x700000; - v &= 0x8FFFFF; - raw &= ~((UInt32)0x8FFFFF << m); - raw |= (v << m); - SetUi32(p, raw); - } - } - while (++m <= 4); - } - i += 16; - } - while (i <= size); - return i; -} +#ifdef _MSC_VER +#pragma warning(disable : 4206) // nonstandard extension used : translation unit is empty +#endif + +#if defined(__clang__) +#pragma GCC diagnostic ignored "-Wempty-translation-unit" +#endif diff --git a/deps/LZMA-SDK/C/Compiler.h b/deps/LZMA-SDK/C/Compiler.h index a9816fa5a..2a9c2b7a0 100644 --- a/deps/LZMA-SDK/C/Compiler.h +++ b/deps/LZMA-SDK/C/Compiler.h @@ -1,12 +1,105 @@ -/* Compiler.h -2021-01-05 : Igor Pavlov : Public domain */ +/* Compiler.h : Compiler specific defines and pragmas +2024-01-22 : Igor Pavlov : Public domain */ -#ifndef __7Z_COMPILER_H -#define __7Z_COMPILER_H +#ifndef ZIP7_INC_COMPILER_H +#define ZIP7_INC_COMPILER_H - #ifdef __clang__ - #pragma clang diagnostic ignored "-Wunused-private-field" +#if defined(__clang__) +# define Z7_CLANG_VERSION (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__) +#endif +#if defined(__clang__) && defined(__apple_build_version__) +# define Z7_APPLE_CLANG_VERSION Z7_CLANG_VERSION +#elif defined(__clang__) +# define Z7_LLVM_CLANG_VERSION Z7_CLANG_VERSION +#elif defined(__GNUC__) +# define Z7_GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) +#endif + +#ifdef _MSC_VER +#if !defined(__clang__) && !defined(__GNUC__) +#define Z7_MSC_VER_ORIGINAL _MSC_VER +#endif +#endif + +#if defined(__MINGW32__) || defined(__MINGW64__) +#define Z7_MINGW +#endif + +#if defined(__LCC__) && (defined(__MCST__) || defined(__e2k__)) +#define Z7_MCST_LCC +#define Z7_MCST_LCC_VERSION (__LCC__ * 100 + __LCC_MINOR__) +#endif + +/* +#if defined(__AVX2__) \ + || defined(Z7_GCC_VERSION) && (Z7_GCC_VERSION >= 40900) \ + || defined(Z7_APPLE_CLANG_VERSION) && (Z7_APPLE_CLANG_VERSION >= 40600) \ + || defined(Z7_LLVM_CLANG_VERSION) && (Z7_LLVM_CLANG_VERSION >= 30100) \ + || defined(Z7_MSC_VER_ORIGINAL) && (Z7_MSC_VER_ORIGINAL >= 1800) \ + || defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 1400) + #define Z7_COMPILER_AVX2_SUPPORTED #endif +#endif +*/ + +// #pragma GCC diagnostic ignored "-Wunknown-pragmas" + +#ifdef __clang__ +// padding size of '' with 4 bytes to alignment boundary +#pragma GCC diagnostic ignored "-Wpadded" + +#if defined(Z7_LLVM_CLANG_VERSION) && (__clang_major__ == 13) \ + && defined(__FreeBSD__) +// freebsd: +#pragma GCC diagnostic ignored "-Wexcess-padding" +#endif + +#if __clang_major__ >= 16 +#pragma GCC diagnostic ignored "-Wunsafe-buffer-usage" +#endif + +#if __clang_major__ == 13 +#if defined(__SIZEOF_POINTER__) && (__SIZEOF_POINTER__ == 16) +// cheri +#pragma GCC diagnostic ignored "-Wcapability-to-integer-cast" +#endif +#endif + +#if __clang_major__ == 13 + // for + #pragma GCC diagnostic ignored "-Wreserved-identifier" +#endif + +#endif // __clang__ + +#if defined(_WIN32) && defined(__clang__) && __clang_major__ >= 16 +// #pragma GCC diagnostic ignored "-Wcast-function-type-strict" +#define Z7_DIAGNOSTIC_IGNORE_CAST_FUNCTION \ + _Pragma("GCC diagnostic ignored \"-Wcast-function-type-strict\"") +#else +#define Z7_DIAGNOSTIC_IGNORE_CAST_FUNCTION +#endif + +typedef void (*Z7_void_Function)(void); +#if defined(__clang__) || defined(__GNUC__) +#define Z7_CAST_FUNC_C (Z7_void_Function) +#elif defined(_MSC_VER) && _MSC_VER > 1920 +#define Z7_CAST_FUNC_C (void *) +// #pragma warning(disable : 4191) // 'type cast': unsafe conversion from 'FARPROC' to 'void (__cdecl *)()' +#else +#define Z7_CAST_FUNC_C +#endif +/* +#if (defined(__GNUC__) && (__GNUC__ >= 8)) || defined(__clang__) + // #pragma GCC diagnostic ignored "-Wcast-function-type" +#endif +*/ +#ifdef __GNUC__ +#if defined(Z7_GCC_VERSION) && (Z7_GCC_VERSION >= 40000) && (Z7_GCC_VERSION < 70000) +#pragma GCC diagnostic ignored "-Wstrict-aliasing" +#endif +#endif + #ifdef _MSC_VER @@ -17,24 +110,124 @@ #pragma warning(disable : 4214) // nonstandard extension used : bit field types other than int #endif - #if _MSC_VER >= 1300 - #pragma warning(disable : 4996) // This function or variable may be unsafe - #else - #pragma warning(disable : 4511) // copy constructor could not be generated - #pragma warning(disable : 4512) // assignment operator could not be generated - #pragma warning(disable : 4514) // unreferenced inline function has been removed - #pragma warning(disable : 4702) // unreachable code - #pragma warning(disable : 4710) // not inlined - #pragma warning(disable : 4714) // function marked as __forceinline not inlined - #pragma warning(disable : 4786) // identifier was truncated to '255' characters in the debug information - #endif +#if defined(_MSC_VER) && _MSC_VER >= 1800 +#pragma warning(disable : 4464) // relative include path contains '..' +#endif - #ifdef __clang__ - #pragma clang diagnostic ignored "-Wdeprecated-declarations" - #pragma clang diagnostic ignored "-Wmicrosoft-exception-spec" - // #pragma clang diagnostic ignored "-Wreserved-id-macro" - #endif +// == 1200 : -O1 : for __forceinline +// >= 1900 : -O1 : for printf +#pragma warning(disable : 4710) // function not inlined +#if _MSC_VER < 1900 +// winnt.h: 'Int64ShllMod32' +#pragma warning(disable : 4514) // unreferenced inline function has been removed +#endif + +#if _MSC_VER < 1300 +// #pragma warning(disable : 4702) // unreachable code +// Bra.c : -O1: +#pragma warning(disable : 4714) // function marked as __forceinline not inlined +#endif + +/* +#if _MSC_VER > 1400 && _MSC_VER <= 1900 +// strcat: This function or variable may be unsafe +// sysinfoapi.h: kit10: GetVersion was declared deprecated +#pragma warning(disable : 4996) +#endif +*/ + +#if _MSC_VER > 1200 +// -Wall warnings + +#pragma warning(disable : 4711) // function selected for automatic inline expansion +#pragma warning(disable : 4820) // '2' bytes padding added after data member + +#if _MSC_VER >= 1400 && _MSC_VER < 1920 +// 1400: string.h: _DBG_MEMCPY_INLINE_ +// 1600 - 191x : smmintrin.h __cplusplus' +// is not defined as a preprocessor macro, replacing with '0' for '#if/#elif' +#pragma warning(disable : 4668) + +// 1400 - 1600 : WinDef.h : 'FARPROC' : +// 1900 - 191x : immintrin.h: _readfsbase_u32 +// no function prototype given : converting '()' to '(void)' +#pragma warning(disable : 4255) +#endif + +#if _MSC_VER >= 1914 +// Compiler will insert Spectre mitigation for memory load if /Qspectre switch specified +#pragma warning(disable : 5045) +#endif + +#endif // _MSC_VER > 1200 +#endif // _MSC_VER + + +#if defined(__clang__) && (__clang_major__ >= 4) + #define Z7_PRAGMA_OPT_DISABLE_LOOP_UNROLL_VECTORIZE \ + _Pragma("clang loop unroll(disable)") \ + _Pragma("clang loop vectorize(disable)") + #define Z7_ATTRIB_NO_VECTORIZE +#elif defined(__GNUC__) && (__GNUC__ >= 5) \ + && (!defined(Z7_MCST_LCC_VERSION) || (Z7_MCST_LCC_VERSION >= 12610)) + #define Z7_ATTRIB_NO_VECTORIZE __attribute__((optimize("no-tree-vectorize"))) + // __attribute__((optimize("no-unroll-loops"))); + #define Z7_PRAGMA_OPT_DISABLE_LOOP_UNROLL_VECTORIZE +#elif defined(_MSC_VER) && (_MSC_VER >= 1920) + #define Z7_PRAGMA_OPT_DISABLE_LOOP_UNROLL_VECTORIZE \ + _Pragma("loop( no_vector )") + #define Z7_ATTRIB_NO_VECTORIZE +#else + #define Z7_PRAGMA_OPT_DISABLE_LOOP_UNROLL_VECTORIZE + #define Z7_ATTRIB_NO_VECTORIZE +#endif + +#if defined(MY_CPU_X86_OR_AMD64) && ( \ + defined(__clang__) && (__clang_major__ >= 4) \ + || defined(__GNUC__) && (__GNUC__ >= 5)) + #define Z7_ATTRIB_NO_SSE __attribute__((__target__("no-sse"))) +#else + #define Z7_ATTRIB_NO_SSE +#endif + +#define Z7_ATTRIB_NO_VECTOR \ + Z7_ATTRIB_NO_VECTORIZE \ + Z7_ATTRIB_NO_SSE + + +#if defined(__clang__) && (__clang_major__ >= 8) \ + || defined(__GNUC__) && (__GNUC__ >= 1000) \ + /* || defined(_MSC_VER) && (_MSC_VER >= 1920) */ + // GCC is not good for __builtin_expect() + #define Z7_LIKELY(x) (__builtin_expect((x), 1)) + #define Z7_UNLIKELY(x) (__builtin_expect((x), 0)) + // #define Z7_unlikely [[unlikely]] + // #define Z7_likely [[likely]] +#else + #define Z7_LIKELY(x) (x) + #define Z7_UNLIKELY(x) (x) + // #define Z7_likely +#endif + + +#if (defined(Z7_CLANG_VERSION) && (Z7_CLANG_VERSION >= 30600)) + +#if (Z7_CLANG_VERSION < 130000) +#define Z7_DIAGNOSTIC_IGNORE_BEGIN_RESERVED_MACRO_IDENTIFIER \ + _Pragma("GCC diagnostic push") \ + _Pragma("GCC diagnostic ignored \"-Wreserved-id-macro\"") +#else +#define Z7_DIAGNOSTIC_IGNORE_BEGIN_RESERVED_MACRO_IDENTIFIER \ + _Pragma("GCC diagnostic push") \ + _Pragma("GCC diagnostic ignored \"-Wreserved-macro-identifier\"") +#endif + +#define Z7_DIAGNOSTIC_IGNORE_END_RESERVED_MACRO_IDENTIFIER \ + _Pragma("GCC diagnostic pop") +#else +#define Z7_DIAGNOSTIC_IGNORE_BEGIN_RESERVED_MACRO_IDENTIFIER +#define Z7_DIAGNOSTIC_IGNORE_END_RESERVED_MACRO_IDENTIFIER #endif #define UNUSED_VAR(x) (void)x; diff --git a/deps/LZMA-SDK/C/CpuArch.c b/deps/LZMA-SDK/C/CpuArch.c index 110ced6d6..6e02551e2 100644 --- a/deps/LZMA-SDK/C/CpuArch.c +++ b/deps/LZMA-SDK/C/CpuArch.c @@ -1,187 +1,357 @@ /* CpuArch.c -- CPU specific code -2021-07-13 : Igor Pavlov : Public domain */ +Igor Pavlov : Public domain */ #include "Precomp.h" +// #include + #include "CpuArch.h" #ifdef MY_CPU_X86_OR_AMD64 -#if (defined(_MSC_VER) && !defined(MY_CPU_AMD64)) || defined(__GNUC__) -#define USE_ASM +#undef NEED_CHECK_FOR_CPUID +#if !defined(MY_CPU_AMD64) +#define NEED_CHECK_FOR_CPUID #endif -#if !defined(USE_ASM) && _MSC_VER >= 1500 -#include +/* + cpuid instruction supports (subFunction) parameter in ECX, + that is used only with some specific (function) parameter values. + most functions use only (subFunction==0). +*/ +/* + __cpuid(): MSVC and GCC/CLANG use same function/macro name + but parameters are different. + We use MSVC __cpuid() parameters style for our z7_x86_cpuid() function. +*/ + +#if defined(__GNUC__) /* && (__GNUC__ >= 10) */ \ + || defined(__clang__) /* && (__clang_major__ >= 10) */ + +/* there was some CLANG/GCC compilers that have issues with + rbx(ebx) handling in asm blocks in -fPIC mode (__PIC__ is defined). + compiler's contains the macro __cpuid() that is similar to our code. + The history of __cpuid() changes in CLANG/GCC: + GCC: + 2007: it preserved ebx for (__PIC__ && __i386__) + 2013: it preserved rbx and ebx for __PIC__ + 2014: it doesn't preserves rbx and ebx anymore + we suppose that (__GNUC__ >= 5) fixed that __PIC__ ebx/rbx problem. + CLANG: + 2014+: it preserves rbx, but only for 64-bit code. No __PIC__ check. + Why CLANG cares about 64-bit mode only, and doesn't care about ebx (in 32-bit)? + Do we need __PIC__ test for CLANG or we must care about rbx even if + __PIC__ is not defined? +*/ + +#define ASM_LN "\n" + +#if defined(MY_CPU_AMD64) && defined(__PIC__) \ + && ((defined (__GNUC__) && (__GNUC__ < 5)) || defined(__clang__)) + + /* "=&r" selects free register. It can select even rbx, if that register is free. + "=&D" for (RDI) also works, but the code can be larger with "=&D" + "2"(subFun) : 2 is (zero-based) index in the output constraint list "=c" (ECX). */ + +#define x86_cpuid_MACRO_2(p, func, subFunc) { \ + __asm__ __volatile__ ( \ + ASM_LN "mov %%rbx, %q1" \ + ASM_LN "cpuid" \ + ASM_LN "xchg %%rbx, %q1" \ + : "=a" ((p)[0]), "=&r" ((p)[1]), "=c" ((p)[2]), "=d" ((p)[3]) : "0" (func), "2"(subFunc)); } + +#elif defined(MY_CPU_X86) && defined(__PIC__) \ + && ((defined (__GNUC__) && (__GNUC__ < 5)) || defined(__clang__)) + +#define x86_cpuid_MACRO_2(p, func, subFunc) { \ + __asm__ __volatile__ ( \ + ASM_LN "mov %%ebx, %k1" \ + ASM_LN "cpuid" \ + ASM_LN "xchg %%ebx, %k1" \ + : "=a" ((p)[0]), "=&r" ((p)[1]), "=c" ((p)[2]), "=d" ((p)[3]) : "0" (func), "2"(subFunc)); } + +#else + +#define x86_cpuid_MACRO_2(p, func, subFunc) { \ + __asm__ __volatile__ ( \ + ASM_LN "cpuid" \ + : "=a" ((p)[0]), "=b" ((p)[1]), "=c" ((p)[2]), "=d" ((p)[3]) : "0" (func), "2"(subFunc)); } + #endif -#if defined(USE_ASM) && !defined(MY_CPU_AMD64) -static UInt32 CheckFlag(UInt32 flag) +#define x86_cpuid_MACRO(p, func) x86_cpuid_MACRO_2(p, func, 0) + +void Z7_FASTCALL z7_x86_cpuid(UInt32 p[4], UInt32 func) { - #ifdef _MSC_VER - __asm pushfd; - __asm pop EAX; - __asm mov EDX, EAX; - __asm xor EAX, flag; - __asm push EAX; - __asm popfd; - __asm pushfd; - __asm pop EAX; - __asm xor EAX, EDX; - __asm push EDX; - __asm popfd; - __asm and flag, EAX; - #else - __asm__ __volatile__ ( - "pushf\n\t" - "pop %%EAX\n\t" - "movl %%EAX,%%EDX\n\t" - "xorl %0,%%EAX\n\t" - "push %%EAX\n\t" - "popf\n\t" - "pushf\n\t" - "pop %%EAX\n\t" - "xorl %%EDX,%%EAX\n\t" - "push %%EDX\n\t" - "popf\n\t" - "andl %%EAX, %0\n\t": - "=c" (flag) : "c" (flag) : - "%eax", "%edx"); - #endif - return flag; + x86_cpuid_MACRO(p, func) } -#define CHECK_CPUID_IS_SUPPORTED if (CheckFlag(1 << 18) == 0 || CheckFlag(1 << 21) == 0) return False; + +static +void Z7_FASTCALL z7_x86_cpuid_subFunc(UInt32 p[4], UInt32 func, UInt32 subFunc) +{ + x86_cpuid_MACRO_2(p, func, subFunc) +} + + +Z7_NO_INLINE +UInt32 Z7_FASTCALL z7_x86_cpuid_GetMaxFunc(void) +{ + #if defined(NEED_CHECK_FOR_CPUID) + #define EFALGS_CPUID_BIT 21 + UInt32 a; + __asm__ __volatile__ ( + ASM_LN "pushf" + ASM_LN "pushf" + ASM_LN "pop %0" + // ASM_LN "movl %0, %1" + // ASM_LN "xorl $0x200000, %0" + ASM_LN "btc %1, %0" + ASM_LN "push %0" + ASM_LN "popf" + ASM_LN "pushf" + ASM_LN "pop %0" + ASM_LN "xorl (%%esp), %0" + + ASM_LN "popf" + ASM_LN + : "=&r" (a) // "=a" + : "i" (EFALGS_CPUID_BIT) + ); + if ((a & (1 << EFALGS_CPUID_BIT)) == 0) + return 0; + #endif + { + UInt32 p[4]; + x86_cpuid_MACRO(p, 0) + return p[0]; + } +} + +#undef ASM_LN + +#elif !defined(_MSC_VER) + +/* +// for gcc/clang and other: we can try to use __cpuid macro: +#include +void Z7_FASTCALL z7_x86_cpuid(UInt32 p[4], UInt32 func) +{ + __cpuid(func, p[0], p[1], p[2], p[3]); +} +UInt32 Z7_FASTCALL z7_x86_cpuid_GetMaxFunc(void) +{ + return (UInt32)__get_cpuid_max(0, NULL); +} +*/ +// for unsupported cpuid: +void Z7_FASTCALL z7_x86_cpuid(UInt32 p[4], UInt32 func) +{ + UNUSED_VAR(func) + p[0] = p[1] = p[2] = p[3] = 0; +} +UInt32 Z7_FASTCALL z7_x86_cpuid_GetMaxFunc(void) +{ + return 0; +} + +#else // _MSC_VER + +#if !defined(MY_CPU_AMD64) + +UInt32 __declspec(naked) Z7_FASTCALL z7_x86_cpuid_GetMaxFunc(void) +{ + #if defined(NEED_CHECK_FOR_CPUID) + #define EFALGS_CPUID_BIT 21 + __asm pushfd + __asm pushfd + /* + __asm pop eax + // __asm mov edx, eax + __asm btc eax, EFALGS_CPUID_BIT + __asm push eax + */ + __asm btc dword ptr [esp], EFALGS_CPUID_BIT + __asm popfd + __asm pushfd + __asm pop eax + // __asm xor eax, edx + __asm xor eax, [esp] + // __asm push edx + __asm popfd + __asm and eax, (1 shl EFALGS_CPUID_BIT) + __asm jz end_func + #endif + __asm push ebx + __asm xor eax, eax // func + __asm xor ecx, ecx // subFunction (optional) for (func == 0) + __asm cpuid + __asm pop ebx + #if defined(NEED_CHECK_FOR_CPUID) + end_func: + #endif + __asm ret 0 +} + +void __declspec(naked) Z7_FASTCALL z7_x86_cpuid(UInt32 p[4], UInt32 func) +{ + UNUSED_VAR(p) + UNUSED_VAR(func) + __asm push ebx + __asm push edi + __asm mov edi, ecx // p + __asm mov eax, edx // func + __asm xor ecx, ecx // subfunction (optional) for (func == 0) + __asm cpuid + __asm mov [edi ], eax + __asm mov [edi + 4], ebx + __asm mov [edi + 8], ecx + __asm mov [edi + 12], edx + __asm pop edi + __asm pop ebx + __asm ret 0 +} + +static +void __declspec(naked) Z7_FASTCALL z7_x86_cpuid_subFunc(UInt32 p[4], UInt32 func, UInt32 subFunc) +{ + UNUSED_VAR(p) + UNUSED_VAR(func) + UNUSED_VAR(subFunc) + __asm push ebx + __asm push edi + __asm mov edi, ecx // p + __asm mov eax, edx // func + __asm mov ecx, [esp + 12] // subFunc + __asm cpuid + __asm mov [edi ], eax + __asm mov [edi + 4], ebx + __asm mov [edi + 8], ecx + __asm mov [edi + 12], edx + __asm pop edi + __asm pop ebx + __asm ret 4 +} + +#else // MY_CPU_AMD64 + + #if _MSC_VER >= 1600 + #include + #define MY_cpuidex __cpuidex + +static +void Z7_FASTCALL z7_x86_cpuid_subFunc(UInt32 p[4], UInt32 func, UInt32 subFunc) +{ + __cpuidex((int *)p, func, subFunc); +} + + #else +/* + __cpuid (func == (0 or 7)) requires subfunction number in ECX. + MSDN: The __cpuid intrinsic clears the ECX register before calling the cpuid instruction. + __cpuid() in new MSVC clears ECX. + __cpuid() in old MSVC (14.00) x64 doesn't clear ECX + We still can use __cpuid for low (func) values that don't require ECX, + but __cpuid() in old MSVC will be incorrect for some func values: (func == 7). + So here we use the hack for old MSVC to send (subFunction) in ECX register to cpuid instruction, + where ECX value is first parameter for FASTCALL / NO_INLINE func. + So the caller of MY_cpuidex_HACK() sets ECX as subFunction, and + old MSVC for __cpuid() doesn't change ECX and cpuid instruction gets (subFunction) value. + +DON'T remove Z7_NO_INLINE and Z7_FASTCALL for MY_cpuidex_HACK(): !!! +*/ +static +Z7_NO_INLINE void Z7_FASTCALL MY_cpuidex_HACK(Int32 subFunction, Int32 func, Int32 *CPUInfo) +{ + UNUSED_VAR(subFunction) + __cpuid(CPUInfo, func); +} + #define MY_cpuidex(info, func, func2) MY_cpuidex_HACK(func2, func, info) + #pragma message("======== MY_cpuidex_HACK WAS USED ========") +static +void Z7_FASTCALL z7_x86_cpuid_subFunc(UInt32 p[4], UInt32 func, UInt32 subFunc) +{ + MY_cpuidex_HACK(subFunc, func, (Int32 *)p); +} + #endif // _MSC_VER >= 1600 + +#if !defined(MY_CPU_AMD64) +/* inlining for __cpuid() in MSVC x86 (32-bit) produces big ineffective code, + so we disable inlining here */ +Z7_NO_INLINE +#endif +void Z7_FASTCALL z7_x86_cpuid(UInt32 p[4], UInt32 func) +{ + MY_cpuidex((Int32 *)p, (Int32)func, 0); +} + +Z7_NO_INLINE +UInt32 Z7_FASTCALL z7_x86_cpuid_GetMaxFunc(void) +{ + Int32 a[4]; + MY_cpuidex(a, 0, 0); + return a[0]; +} + +#endif // MY_CPU_AMD64 +#endif // _MSC_VER + +#if defined(NEED_CHECK_FOR_CPUID) +#define CHECK_CPUID_IS_SUPPORTED { if (z7_x86_cpuid_GetMaxFunc() == 0) return 0; } #else #define CHECK_CPUID_IS_SUPPORTED #endif +#undef NEED_CHECK_FOR_CPUID -#ifndef USE_ASM - #ifdef _MSC_VER - #if _MSC_VER >= 1600 - #define MY__cpuidex __cpuidex - #else - -/* - __cpuid (function == 4) requires subfunction number in ECX. - MSDN: The __cpuid intrinsic clears the ECX register before calling the cpuid instruction. - __cpuid() in new MSVC clears ECX. - __cpuid() in old MSVC (14.00) doesn't clear ECX - We still can use __cpuid for low (function) values that don't require ECX, - but __cpuid() in old MSVC will be incorrect for some function values: (function == 4). - So here we use the hack for old MSVC to send (subFunction) in ECX register to cpuid instruction, - where ECX value is first parameter for FAST_CALL / NO_INLINE function, - So the caller of MY__cpuidex_HACK() sets ECX as subFunction, and - old MSVC for __cpuid() doesn't change ECX and cpuid instruction gets (subFunction) value. - - DON'T remove MY_NO_INLINE and MY_FAST_CALL for MY__cpuidex_HACK() !!! -*/ static -MY_NO_INLINE -void MY_FAST_CALL MY__cpuidex_HACK(UInt32 subFunction, int *CPUInfo, UInt32 function) -{ - UNUSED_VAR(subFunction); - __cpuid(CPUInfo, function); -} - - #define MY__cpuidex(info, func, func2) MY__cpuidex_HACK(func2, info, func) - #pragma message("======== MY__cpuidex_HACK WAS USED ========") - #endif - #else - #define MY__cpuidex(info, func, func2) __cpuid(info, func) - #pragma message("======== (INCORRECT ?) cpuid WAS USED ========") - #endif -#endif - - - - -void MyCPUID(UInt32 function, UInt32 *a, UInt32 *b, UInt32 *c, UInt32 *d) -{ - #ifdef USE_ASM - - #ifdef _MSC_VER - - UInt32 a2, b2, c2, d2; - __asm xor EBX, EBX; - __asm xor ECX, ECX; - __asm xor EDX, EDX; - __asm mov EAX, function; - __asm cpuid; - __asm mov a2, EAX; - __asm mov b2, EBX; - __asm mov c2, ECX; - __asm mov d2, EDX; - - *a = a2; - *b = b2; - *c = c2; - *d = d2; - - #else - - __asm__ __volatile__ ( - #if defined(MY_CPU_AMD64) && defined(__PIC__) - "mov %%rbx, %%rdi;" - "cpuid;" - "xchg %%rbx, %%rdi;" - : "=a" (*a) , - "=D" (*b) , - #elif defined(MY_CPU_X86) && defined(__PIC__) - "mov %%ebx, %%edi;" - "cpuid;" - "xchgl %%ebx, %%edi;" - : "=a" (*a) , - "=D" (*b) , - #else - "cpuid" - : "=a" (*a) , - "=b" (*b) , - #endif - "=c" (*c) , - "=d" (*d) - : "0" (function), "c"(0) ) ; - - #endif - - #else - - int CPUInfo[4]; - - MY__cpuidex(CPUInfo, (int)function, 0); - - *a = (UInt32)CPUInfo[0]; - *b = (UInt32)CPUInfo[1]; - *c = (UInt32)CPUInfo[2]; - *d = (UInt32)CPUInfo[3]; - - #endif -} - -BoolInt x86cpuid_CheckAndRead(Cx86cpuid *p) +BoolInt x86cpuid_Func_1(UInt32 *p) { CHECK_CPUID_IS_SUPPORTED - MyCPUID(0, &p->maxFunc, &p->vendor[0], &p->vendor[2], &p->vendor[1]); - MyCPUID(1, &p->ver, &p->b, &p->c, &p->d); + z7_x86_cpuid(p, 1); return True; } -static const UInt32 kVendors[][3] = +/* +static const UInt32 kVendors[][1] = { - { 0x756E6547, 0x49656E69, 0x6C65746E}, - { 0x68747541, 0x69746E65, 0x444D4163}, - { 0x746E6543, 0x48727561, 0x736C7561} + { 0x756E6547 }, // , 0x49656E69, 0x6C65746E }, + { 0x68747541 }, // , 0x69746E65, 0x444D4163 }, + { 0x746E6543 } // , 0x48727561, 0x736C7561 } }; +*/ + +/* +typedef struct +{ + UInt32 maxFunc; + UInt32 vendor[3]; + UInt32 ver; + UInt32 b; + UInt32 c; + UInt32 d; +} Cx86cpuid; + +enum +{ + CPU_FIRM_INTEL, + CPU_FIRM_AMD, + CPU_FIRM_VIA +}; +int x86cpuid_GetFirm(const Cx86cpuid *p); +#define x86cpuid_ver_GetFamily(ver) (((ver >> 16) & 0xff0) | ((ver >> 8) & 0xf)) +#define x86cpuid_ver_GetModel(ver) (((ver >> 12) & 0xf0) | ((ver >> 4) & 0xf)) +#define x86cpuid_ver_GetStepping(ver) (ver & 0xf) int x86cpuid_GetFirm(const Cx86cpuid *p) { unsigned i; - for (i = 0; i < sizeof(kVendors) / sizeof(kVendors[i]); i++) + for (i = 0; i < sizeof(kVendors) / sizeof(kVendors[0]); i++) { const UInt32 *v = kVendors[i]; - if (v[0] == p->vendor[0] && - v[1] == p->vendor[1] && - v[2] == p->vendor[2]) + if (v[0] == p->vendor[0] + // && v[1] == p->vendor[1] + // && v[2] == p->vendor[2] + ) return (int)i; } return -1; @@ -190,41 +360,55 @@ int x86cpuid_GetFirm(const Cx86cpuid *p) BoolInt CPU_Is_InOrder() { Cx86cpuid p; - int firm; UInt32 family, model; if (!x86cpuid_CheckAndRead(&p)) return True; - family = x86cpuid_GetFamily(p.ver); - model = x86cpuid_GetModel(p.ver); - - firm = x86cpuid_GetFirm(&p); + family = x86cpuid_ver_GetFamily(p.ver); + model = x86cpuid_ver_GetModel(p.ver); - switch (firm) + switch (x86cpuid_GetFirm(&p)) { case CPU_FIRM_INTEL: return (family < 6 || (family == 6 && ( - /* In-Order Atom CPU */ - model == 0x1C /* 45 nm, N4xx, D4xx, N5xx, D5xx, 230, 330 */ - || model == 0x26 /* 45 nm, Z6xx */ - || model == 0x27 /* 32 nm, Z2460 */ - || model == 0x35 /* 32 nm, Z2760 */ - || model == 0x36 /* 32 nm, N2xxx, D2xxx */ + // In-Order Atom CPU + model == 0x1C // 45 nm, N4xx, D4xx, N5xx, D5xx, 230, 330 + || model == 0x26 // 45 nm, Z6xx + || model == 0x27 // 32 nm, Z2460 + || model == 0x35 // 32 nm, Z2760 + || model == 0x36 // 32 nm, N2xxx, D2xxx ))); case CPU_FIRM_AMD: return (family < 5 || (family == 5 && (model < 6 || model == 0xA))); case CPU_FIRM_VIA: return (family < 6 || (family == 6 && model < 0xF)); } - return True; + return False; // v23 : unknown processors are not In-Order } +*/ + +#ifdef _WIN32 +#include "7zWindows.h" +#endif #if !defined(MY_CPU_AMD64) && defined(_WIN32) -#include -static BoolInt CPU_Sys_Is_SSE_Supported() + +/* for legacy SSE ia32: there is no user-space cpu instruction to check + that OS supports SSE register storing/restoring on context switches. + So we need some OS-specific function to check that it's safe to use SSE registers. +*/ + +Z7_FORCE_INLINE +static BoolInt CPU_Sys_Is_SSE_Supported(void) { - OSVERSIONINFO vi; - vi.dwOSVersionInfoSize = sizeof(vi); - if (!GetVersionEx(&vi)) - return False; - return (vi.dwMajorVersion >= 5); +#ifdef _MSC_VER + #pragma warning(push) + #pragma warning(disable : 4996) // `GetVersion': was declared deprecated +#endif + /* low byte is major version of Windows + We suppose that any Windows version since + Windows2000 (major == 5) supports SSE registers */ + return (Byte)GetVersion() >= 5; +#if defined(_MSC_VER) + #pragma warning(pop) +#endif } #define CHECK_SYS_SSE_SUPPORT if (!CPU_Sys_Is_SSE_Supported()) return False; #else @@ -232,117 +416,364 @@ static BoolInt CPU_Sys_Is_SSE_Supported() #endif -static UInt32 X86_CPUID_ECX_Get_Flags() +#if !defined(MY_CPU_AMD64) + +BoolInt CPU_IsSupported_CMOV(void) { - Cx86cpuid p; - CHECK_SYS_SSE_SUPPORT - if (!x86cpuid_CheckAndRead(&p)) + UInt32 a[4]; + if (!x86cpuid_Func_1(&a[0])) return 0; - return p.c; + return (BoolInt)(a[3] >> 15) & 1; } -BoolInt CPU_IsSupported_AES() +BoolInt CPU_IsSupported_SSE(void) { - return (X86_CPUID_ECX_Get_Flags() >> 25) & 1; -} - -BoolInt CPU_IsSupported_SSSE3() -{ - return (X86_CPUID_ECX_Get_Flags() >> 9) & 1; -} - -BoolInt CPU_IsSupported_SSE41() -{ - return (X86_CPUID_ECX_Get_Flags() >> 19) & 1; -} - -BoolInt CPU_IsSupported_SHA() -{ - Cx86cpuid p; + UInt32 a[4]; CHECK_SYS_SSE_SUPPORT - if (!x86cpuid_CheckAndRead(&p)) - return False; - - if (p.maxFunc < 7) - return False; - { - UInt32 d[4] = { 0 }; - MyCPUID(7, &d[0], &d[1], &d[2], &d[3]); - return (d[1] >> 29) & 1; - } + if (!x86cpuid_Func_1(&a[0])) + return 0; + return (BoolInt)(a[3] >> 25) & 1; } -// #include +BoolInt CPU_IsSupported_SSE2(void) +{ + UInt32 a[4]; + CHECK_SYS_SSE_SUPPORT + if (!x86cpuid_Func_1(&a[0])) + return 0; + return (BoolInt)(a[3] >> 26) & 1; +} -#ifdef _WIN32 -#include #endif -BoolInt CPU_IsSupported_AVX2() + +static UInt32 x86cpuid_Func_1_ECX(void) +{ + UInt32 a[4]; + CHECK_SYS_SSE_SUPPORT + if (!x86cpuid_Func_1(&a[0])) + return 0; + return a[2]; +} + +BoolInt CPU_IsSupported_AES(void) +{ + return (BoolInt)(x86cpuid_Func_1_ECX() >> 25) & 1; +} + +BoolInt CPU_IsSupported_SSSE3(void) +{ + return (BoolInt)(x86cpuid_Func_1_ECX() >> 9) & 1; +} + +BoolInt CPU_IsSupported_SSE41(void) +{ + return (BoolInt)(x86cpuid_Func_1_ECX() >> 19) & 1; +} + +BoolInt CPU_IsSupported_SHA(void) { - Cx86cpuid p; CHECK_SYS_SSE_SUPPORT - #ifdef _WIN32 - #define MY__PF_XSAVE_ENABLED 17 - if (!IsProcessorFeaturePresent(MY__PF_XSAVE_ENABLED)) - return False; - #endif - - if (!x86cpuid_CheckAndRead(&p)) - return False; - if (p.maxFunc < 7) + if (z7_x86_cpuid_GetMaxFunc() < 7) return False; { - UInt32 d[4] = { 0 }; - MyCPUID(7, &d[0], &d[1], &d[2], &d[3]); - // printf("\ncpuid(7): ebx=%8x ecx=%8x\n", d[1], d[2]); - return 1 - & (d[1] >> 5); // avx2 + UInt32 d[4]; + z7_x86_cpuid(d, 7); + return (BoolInt)(d[1] >> 29) & 1; } } -BoolInt CPU_IsSupported_VAES_AVX2() + +BoolInt CPU_IsSupported_SHA512(void) { - Cx86cpuid p; - CHECK_SYS_SSE_SUPPORT + if (!CPU_IsSupported_AVX2()) return False; // maybe CPU_IsSupported_AVX() is enough here - #ifdef _WIN32 - #define MY__PF_XSAVE_ENABLED 17 - if (!IsProcessorFeaturePresent(MY__PF_XSAVE_ENABLED)) - return False; - #endif - - if (!x86cpuid_CheckAndRead(&p)) - return False; - if (p.maxFunc < 7) + if (z7_x86_cpuid_GetMaxFunc() < 7) return False; { - UInt32 d[4] = { 0 }; - MyCPUID(7, &d[0], &d[1], &d[2], &d[3]); - // printf("\ncpuid(7): ebx=%8x ecx=%8x\n", d[1], d[2]); - return 1 - & (d[1] >> 5) // avx2 - // & (d[1] >> 31) // avx512vl - & (d[2] >> 9); // vaes // VEX-256/EVEX + UInt32 d[4]; + z7_x86_cpuid_subFunc(d, 7, 0); + if (d[0] < 1) // d[0] - is max supported subleaf value + return False; + z7_x86_cpuid_subFunc(d, 7, 1); + return (BoolInt)(d[0]) & 1; } } -BoolInt CPU_IsSupported_PageGB() +/* +MSVC: _xgetbv() intrinsic is available since VS2010SP1. + MSVC also defines (_XCR_XFEATURE_ENABLED_MASK) macro in + that we can use or check. + For any 32-bit x86 we can use asm code in MSVC, + but MSVC asm code is huge after compilation. + So _xgetbv() is better + +ICC: _xgetbv() intrinsic is available (in what version of ICC?) + ICC defines (__GNUC___) and it supports gnu assembler + also ICC supports MASM style code with -use-msasm switch. + but ICC doesn't support __attribute__((__target__)) + +GCC/CLANG 9: + _xgetbv() is macro that works via __builtin_ia32_xgetbv() + and we need __attribute__((__target__("xsave")). + But with __target__("xsave") the function will be not + inlined to function that has no __target__("xsave") attribute. + If we want _xgetbv() call inlining, then we should use asm version + instead of calling _xgetbv(). + Note:intrinsic is broke before GCC 8.2: + https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85684 +*/ + +#if defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 1100) \ + || defined(_MSC_VER) && (_MSC_VER >= 1600) && (_MSC_FULL_VER >= 160040219) \ + || defined(__GNUC__) && (__GNUC__ >= 9) \ + || defined(__clang__) && (__clang_major__ >= 9) +// we define ATTRIB_XGETBV, if we want to use predefined _xgetbv() from compiler +#if defined(__INTEL_COMPILER) +#define ATTRIB_XGETBV +#elif defined(__GNUC__) || defined(__clang__) +// we don't define ATTRIB_XGETBV here, because asm version is better for inlining. +// #define ATTRIB_XGETBV __attribute__((__target__("xsave"))) +#else +#define ATTRIB_XGETBV +#endif +#endif + +#if defined(ATTRIB_XGETBV) +#include +#endif + + +// XFEATURE_ENABLED_MASK/XCR0 +#define MY_XCR_XFEATURE_ENABLED_MASK 0 + +#if defined(ATTRIB_XGETBV) +ATTRIB_XGETBV +#endif +static UInt64 x86_xgetbv_0(UInt32 num) { - Cx86cpuid cpuid; - if (!x86cpuid_CheckAndRead(&cpuid)) +#if defined(ATTRIB_XGETBV) + { + return + #if (defined(_MSC_VER)) + _xgetbv(num); + #else + __builtin_ia32_xgetbv( + #if !defined(__clang__) + (int) + #endif + num); + #endif + } + +#elif defined(__GNUC__) || defined(__clang__) || defined(__SUNPRO_CC) + + UInt32 a, d; + #if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) + __asm__ + ( + "xgetbv" + : "=a"(a), "=d"(d) : "c"(num) : "cc" + ); + #else // is old gcc + __asm__ + ( + ".byte 0x0f, 0x01, 0xd0" "\n\t" + : "=a"(a), "=d"(d) : "c"(num) : "cc" + ); + #endif + return ((UInt64)d << 32) | a; + // return a; + +#elif defined(_MSC_VER) && !defined(MY_CPU_AMD64) + + UInt32 a, d; + __asm { + push eax + push edx + push ecx + mov ecx, num; + // xor ecx, ecx // = MY_XCR_XFEATURE_ENABLED_MASK + _emit 0x0f + _emit 0x01 + _emit 0xd0 + mov a, eax + mov d, edx + pop ecx + pop edx + pop eax + } + return ((UInt64)d << 32) | a; + // return a; + +#else // it's unknown compiler + // #error "Need xgetbv function" + UNUSED_VAR(num) + // for MSVC-X64 we could call external function from external file. + /* Actually we had checked OSXSAVE/AVX in cpuid before. + So it's expected that OS supports at least AVX and below. */ + // if (num != MY_XCR_XFEATURE_ENABLED_MASK) return 0; // if not XCR0 + return + // (1 << 0) | // x87 + (1 << 1) // SSE + | (1 << 2); // AVX + +#endif +} + +#ifdef _WIN32 +/* + Windows versions do not know about new ISA extensions that + can be introduced. But we still can use new extensions, + even if Windows doesn't report about supporting them, + But we can use new extensions, only if Windows knows about new ISA extension + that changes the number or size of registers: SSE, AVX/XSAVE, AVX512 + So it's enough to check + MY_PF_AVX_INSTRUCTIONS_AVAILABLE + instead of + MY_PF_AVX2_INSTRUCTIONS_AVAILABLE +*/ +#define MY_PF_XSAVE_ENABLED 17 +// #define MY_PF_SSSE3_INSTRUCTIONS_AVAILABLE 36 +// #define MY_PF_SSE4_1_INSTRUCTIONS_AVAILABLE 37 +// #define MY_PF_SSE4_2_INSTRUCTIONS_AVAILABLE 38 +// #define MY_PF_AVX_INSTRUCTIONS_AVAILABLE 39 +// #define MY_PF_AVX2_INSTRUCTIONS_AVAILABLE 40 +// #define MY_PF_AVX512F_INSTRUCTIONS_AVAILABLE 41 +#endif + +BoolInt CPU_IsSupported_AVX(void) +{ + #ifdef _WIN32 + if (!IsProcessorFeaturePresent(MY_PF_XSAVE_ENABLED)) + return False; + /* PF_AVX_INSTRUCTIONS_AVAILABLE probably is supported starting from + some latest Win10 revisions. But we need AVX in older Windows also. + So we don't use the following check: */ + /* + if (!IsProcessorFeaturePresent(MY_PF_AVX_INSTRUCTIONS_AVAILABLE)) + return False; + */ + #endif + + /* + OS must use new special XSAVE/XRSTOR instructions to save + AVX registers when it required for context switching. + At OS statring: + OS sets CR4.OSXSAVE flag to signal the processor that OS supports the XSAVE extensions. + Also OS sets bitmask in XCR0 register that defines what + registers will be processed by XSAVE instruction: + XCR0.SSE[bit 0] - x87 registers and state + XCR0.SSE[bit 1] - SSE registers and state + XCR0.AVX[bit 2] - AVX registers and state + CR4.OSXSAVE is reflected to CPUID.1:ECX.OSXSAVE[bit 27]. + So we can read that bit in user-space. + XCR0 is available for reading in user-space by new XGETBV instruction. + */ + { + const UInt32 c = x86cpuid_Func_1_ECX(); + if (0 == (1 + & (c >> 28) // AVX instructions are supported by hardware + & (c >> 27))) // OSXSAVE bit: XSAVE and related instructions are enabled by OS. + return False; + } + + /* also we can check + CPUID.1:ECX.XSAVE [bit 26] : that shows that + XSAVE, XRESTOR, XSETBV, XGETBV instructions are supported by hardware. + But that check is redundant, because if OSXSAVE bit is set, then XSAVE is also set */ + + /* If OS have enabled XSAVE extension instructions (OSXSAVE == 1), + in most cases we expect that OS also will support storing/restoring + for AVX and SSE states at least. + But to be ensure for that we call user-space instruction + XGETBV(0) to get XCR0 value that contains bitmask that defines + what exact states(registers) OS have enabled for storing/restoring. + */ + + { + const UInt32 bm = (UInt32)x86_xgetbv_0(MY_XCR_XFEATURE_ENABLED_MASK); + // printf("\n=== XGetBV=0x%x\n", bm); + return 1 + & (BoolInt)(bm >> 1) // SSE state is supported (set by OS) for storing/restoring + & (BoolInt)(bm >> 2); // AVX state is supported (set by OS) for storing/restoring + } + // since Win7SP1: we can use GetEnabledXStateFeatures(); +} + + +BoolInt CPU_IsSupported_AVX2(void) +{ + if (!CPU_IsSupported_AVX()) + return False; + if (z7_x86_cpuid_GetMaxFunc() < 7) return False; { - UInt32 d[4] = { 0 }; - MyCPUID(0x80000000, &d[0], &d[1], &d[2], &d[3]); - if (d[0] < 0x80000001) + UInt32 d[4]; + z7_x86_cpuid(d, 7); + // printf("\ncpuid(7): ebx=%8x ecx=%8x\n", d[1], d[2]); + return 1 + & (BoolInt)(d[1] >> 5); // avx2 + } +} + +#if 0 +BoolInt CPU_IsSupported_AVX512F_AVX512VL(void) +{ + if (!CPU_IsSupported_AVX()) + return False; + if (z7_x86_cpuid_GetMaxFunc() < 7) + return False; + { + UInt32 d[4]; + BoolInt v; + z7_x86_cpuid(d, 7); + // printf("\ncpuid(7): ebx=%8x ecx=%8x\n", d[1], d[2]); + v = 1 + & (BoolInt)(d[1] >> 16) // avx512f + & (BoolInt)(d[1] >> 31); // avx512vl + if (!v) return False; } { - UInt32 d[4] = { 0 }; - MyCPUID(0x80000001, &d[0], &d[1], &d[2], &d[3]); - return (d[3] >> 26) & 1; + const UInt32 bm = (UInt32)x86_xgetbv_0(MY_XCR_XFEATURE_ENABLED_MASK); + // printf("\n=== XGetBV=0x%x\n", bm); + return 1 + & (BoolInt)(bm >> 5) // OPMASK + & (BoolInt)(bm >> 6) // ZMM upper 256-bit + & (BoolInt)(bm >> 7); // ZMM16 ... ZMM31 + } +} +#endif + +BoolInt CPU_IsSupported_VAES_AVX2(void) +{ + if (!CPU_IsSupported_AVX()) + return False; + if (z7_x86_cpuid_GetMaxFunc() < 7) + return False; + { + UInt32 d[4]; + z7_x86_cpuid(d, 7); + // printf("\ncpuid(7): ebx=%8x ecx=%8x\n", d[1], d[2]); + return 1 + & (BoolInt)(d[1] >> 5) // avx2 + // & (d[1] >> 31) // avx512vl + & (BoolInt)(d[2] >> 9); // vaes // VEX-256/EVEX + } +} + +BoolInt CPU_IsSupported_PageGB(void) +{ + CHECK_CPUID_IS_SUPPORTED + { + UInt32 d[4]; + z7_x86_cpuid(d, 0x80000000); + if (d[0] < 0x80000001) + return False; + z7_x86_cpuid(d, 0x80000001); + return (BoolInt)(d[3] >> 26) & 1; } } @@ -351,11 +782,11 @@ BoolInt CPU_IsSupported_PageGB() #ifdef _WIN32 -#include +#include "7zWindows.h" -BoolInt CPU_IsSupported_CRC32() { return IsProcessorFeaturePresent(PF_ARM_V8_CRC32_INSTRUCTIONS_AVAILABLE) ? 1 : 0; } -BoolInt CPU_IsSupported_CRYPTO() { return IsProcessorFeaturePresent(PF_ARM_V8_CRYPTO_INSTRUCTIONS_AVAILABLE) ? 1 : 0; } -BoolInt CPU_IsSupported_NEON() { return IsProcessorFeaturePresent(PF_ARM_NEON_INSTRUCTIONS_AVAILABLE) ? 1 : 0; } +BoolInt CPU_IsSupported_CRC32(void) { return IsProcessorFeaturePresent(PF_ARM_V8_CRC32_INSTRUCTIONS_AVAILABLE) ? 1 : 0; } +BoolInt CPU_IsSupported_CRYPTO(void) { return IsProcessorFeaturePresent(PF_ARM_V8_CRYPTO_INSTRUCTIONS_AVAILABLE) ? 1 : 0; } +BoolInt CPU_IsSupported_NEON(void) { return IsProcessorFeaturePresent(PF_ARM_NEON_INSTRUCTIONS_AVAILABLE) ? 1 : 0; } #else @@ -378,30 +809,41 @@ static void Print_sysctlbyname(const char *name) } } */ +/* + Print_sysctlbyname("hw.pagesize"); + Print_sysctlbyname("machdep.cpu.brand_string"); +*/ -static BoolInt My_sysctlbyname_Get_BoolInt(const char *name) +static BoolInt z7_sysctlbyname_Get_BoolInt(const char *name) { UInt32 val = 0; - if (My_sysctlbyname_Get_UInt32(name, &val) == 0 && val == 1) + if (z7_sysctlbyname_Get_UInt32(name, &val) == 0 && val == 1) return 1; return 0; } - /* - Print_sysctlbyname("hw.pagesize"); - Print_sysctlbyname("machdep.cpu.brand_string"); - */ - BoolInt CPU_IsSupported_CRC32(void) { - return My_sysctlbyname_Get_BoolInt("hw.optional.armv8_crc32"); + return z7_sysctlbyname_Get_BoolInt("hw.optional.armv8_crc32"); } BoolInt CPU_IsSupported_NEON(void) { - return My_sysctlbyname_Get_BoolInt("hw.optional.neon"); + return z7_sysctlbyname_Get_BoolInt("hw.optional.neon"); } +BoolInt CPU_IsSupported_SHA512(void) +{ + return z7_sysctlbyname_Get_BoolInt("hw.optional.armv8_2_sha512"); +} + +/* +BoolInt CPU_IsSupported_SHA3(void) +{ + return z7_sysctlbyname_Get_BoolInt("hw.optional.armv8_2_sha3"); +} +*/ + #ifdef MY_CPU_ARM64 #define APPLE_CRYPTO_SUPPORT_VAL 1 #else @@ -415,33 +857,70 @@ BoolInt CPU_IsSupported_AES (void) { return APPLE_CRYPTO_SUPPORT_VAL; } #else // __APPLE__ -#include +#if defined(__GLIBC__) && (__GLIBC__ * 100 + __GLIBC_MINOR__ >= 216) + #define Z7_GETAUXV_AVAILABLE +#else +// #pragma message("=== is not NEW GLIBC === ") + #if defined __has_include + #if __has_include () +// #pragma message("=== sys/auxv.h is avail=== ") + #define Z7_GETAUXV_AVAILABLE + #endif + #endif +#endif +#ifdef Z7_GETAUXV_AVAILABLE +// #pragma message("=== Z7_GETAUXV_AVAILABLE === ") +#include #define USE_HWCAP +#endif #ifdef USE_HWCAP +#if defined(__FreeBSD__) +static unsigned long MY_getauxval(int aux) +{ + unsigned long val; + if (elf_aux_info(aux, &val, sizeof(val))) + return 0; + return val; +} +#else +#define MY_getauxval getauxval + #if defined __has_include + #if __has_include () #include + #endif + #endif +#endif #define MY_HWCAP_CHECK_FUNC_2(name1, name2) \ - BoolInt CPU_IsSupported_ ## name1() { return (getauxval(AT_HWCAP) & (HWCAP_ ## name2)) ? 1 : 0; } + BoolInt CPU_IsSupported_ ## name1(void) { return (MY_getauxval(AT_HWCAP) & (HWCAP_ ## name2)); } #ifdef MY_CPU_ARM64 #define MY_HWCAP_CHECK_FUNC(name) \ MY_HWCAP_CHECK_FUNC_2(name, name) +#if 1 || defined(__ARM_NEON) + BoolInt CPU_IsSupported_NEON(void) { return True; } +#else MY_HWCAP_CHECK_FUNC_2(NEON, ASIMD) +#endif // MY_HWCAP_CHECK_FUNC (ASIMD) #elif defined(MY_CPU_ARM) #define MY_HWCAP_CHECK_FUNC(name) \ - BoolInt CPU_IsSupported_ ## name() { return (getauxval(AT_HWCAP2) & (HWCAP2_ ## name)) ? 1 : 0; } + BoolInt CPU_IsSupported_ ## name(void) { return (MY_getauxval(AT_HWCAP2) & (HWCAP2_ ## name)); } MY_HWCAP_CHECK_FUNC_2(NEON, NEON) #endif #else // USE_HWCAP #define MY_HWCAP_CHECK_FUNC(name) \ - BoolInt CPU_IsSupported_ ## name() { return 0; } + BoolInt CPU_IsSupported_ ## name(void) { return 0; } +#if defined(__ARM_NEON) + BoolInt CPU_IsSupported_NEON(void) { return True; } +#else MY_HWCAP_CHECK_FUNC(NEON) +#endif #endif // USE_HWCAP @@ -449,6 +928,19 @@ MY_HWCAP_CHECK_FUNC (CRC32) MY_HWCAP_CHECK_FUNC (SHA1) MY_HWCAP_CHECK_FUNC (SHA2) MY_HWCAP_CHECK_FUNC (AES) +#ifdef MY_CPU_ARM64 +// supports HWCAP_SHA512 and HWCAP_SHA3 since 2017. +// we define them here, if they are not defined +#ifndef HWCAP_SHA3 +// #define HWCAP_SHA3 (1 << 17) +#endif +#ifndef HWCAP_SHA512 +// #pragma message("=== HWCAP_SHA512 define === ") +#define HWCAP_SHA512 (1 << 21) +#endif +MY_HWCAP_CHECK_FUNC (SHA512) +// MY_HWCAP_CHECK_FUNC (SHA3) +#endif #endif // __APPLE__ #endif // _WIN32 @@ -461,15 +953,15 @@ MY_HWCAP_CHECK_FUNC (AES) #include -int My_sysctlbyname_Get(const char *name, void *buf, size_t *bufSize) +int z7_sysctlbyname_Get(const char *name, void *buf, size_t *bufSize) { return sysctlbyname(name, buf, bufSize, NULL, 0); } -int My_sysctlbyname_Get_UInt32(const char *name, UInt32 *val) +int z7_sysctlbyname_Get_UInt32(const char *name, UInt32 *val) { size_t bufSize = sizeof(*val); - int res = My_sysctlbyname_Get(name, val, &bufSize); + const int res = z7_sysctlbyname_Get(name, val, &bufSize); if (res == 0 && bufSize != sizeof(*val)) return EFAULT; return res; diff --git a/deps/LZMA-SDK/C/CpuArch.h b/deps/LZMA-SDK/C/CpuArch.h index 4856fbb12..a6297ea43 100644 --- a/deps/LZMA-SDK/C/CpuArch.h +++ b/deps/LZMA-SDK/C/CpuArch.h @@ -1,8 +1,8 @@ /* CpuArch.h -- CPU specific code -2022-07-15 : Igor Pavlov : Public domain */ +Igor Pavlov : Public domain */ -#ifndef __CPU_ARCH_H -#define __CPU_ARCH_H +#ifndef ZIP7_INC_CPU_ARCH_H +#define ZIP7_INC_CPU_ARCH_H #include "7zTypes.h" @@ -20,6 +20,7 @@ MY_CPU_64BIT means that processor can work with 64-bit registers. MY_CPU_64BIT doesn't mean that (sizeof(void *) == 8) */ +#if !defined(_M_ARM64EC) #if defined(_M_X64) \ || defined(_M_AMD64) \ || defined(__x86_64__) \ @@ -35,6 +36,7 @@ MY_CPU_64BIT means that processor can work with 64-bit registers. #endif #define MY_CPU_64BIT #endif +#endif #if defined(_M_IX86) \ @@ -47,11 +49,26 @@ MY_CPU_64BIT means that processor can work with 64-bit registers. #if defined(_M_ARM64) \ + || defined(_M_ARM64EC) \ || defined(__AARCH64EL__) \ || defined(__AARCH64EB__) \ || defined(__aarch64__) #define MY_CPU_ARM64 - #define MY_CPU_NAME "arm64" +#if defined(__ILP32__) \ + || defined(__SIZEOF_POINTER__) && (__SIZEOF_POINTER__ == 4) + #define MY_CPU_NAME "arm64-32" + #define MY_CPU_SIZEOF_POINTER 4 +#elif defined(__SIZEOF_POINTER__) && (__SIZEOF_POINTER__ == 16) + #define MY_CPU_NAME "arm64-128" + #define MY_CPU_SIZEOF_POINTER 16 +#else +#if defined(_M_ARM64EC) + #define MY_CPU_NAME "arm64ec" +#else + #define MY_CPU_NAME "arm64" +#endif + #define MY_CPU_SIZEOF_POINTER 8 +#endif #define MY_CPU_64BIT #endif @@ -68,8 +85,10 @@ MY_CPU_64BIT means that processor can work with 64-bit registers. #define MY_CPU_ARM #if defined(__thumb__) || defined(__THUMBEL__) || defined(_M_ARMT) + #define MY_CPU_ARMT #define MY_CPU_NAME "armt" #else + #define MY_CPU_ARM32 #define MY_CPU_NAME "arm" #endif /* #define MY_CPU_32BIT */ @@ -103,6 +122,8 @@ MY_CPU_64BIT means that processor can work with 64-bit registers. || defined(__PPC__) \ || defined(_POWER) +#define MY_CPU_PPC_OR_PPC64 + #if defined(__ppc64__) \ || defined(__powerpc64__) \ || defined(_LP64) \ @@ -123,8 +144,36 @@ MY_CPU_64BIT means that processor can work with 64-bit registers. #endif +#if defined(__sparc__) \ + || defined(__sparc) + #define MY_CPU_SPARC + #if defined(__LP64__) \ + || defined(_LP64) \ + || defined(__SIZEOF_POINTER__) && (__SIZEOF_POINTER__ == 8) + #define MY_CPU_NAME "sparcv9" + #define MY_CPU_SIZEOF_POINTER 8 + #define MY_CPU_64BIT + #elif defined(__sparc_v9__) \ + || defined(__sparcv9) + #define MY_CPU_64BIT + #if defined(__SIZEOF_POINTER__) && (__SIZEOF_POINTER__ == 4) + #define MY_CPU_NAME "sparcv9-32" + #else + #define MY_CPU_NAME "sparcv9m" + #endif + #elif defined(__sparc_v8__) \ + || defined(__sparcv8) + #define MY_CPU_NAME "sparcv8" + #define MY_CPU_SIZEOF_POINTER 4 + #else + #define MY_CPU_NAME "sparc" + #endif +#endif + + #if defined(__riscv) \ || defined(__riscv__) + #define MY_CPU_RISCV #if __riscv_xlen == 32 #define MY_CPU_NAME "riscv32" #elif __riscv_xlen == 64 @@ -135,6 +184,39 @@ MY_CPU_64BIT means that processor can work with 64-bit registers. #endif +#if defined(__loongarch__) + #define MY_CPU_LOONGARCH + #if defined(__loongarch64) || defined(__loongarch_grlen) && (__loongarch_grlen == 64) + #define MY_CPU_64BIT + #endif + #if defined(__loongarch64) + #define MY_CPU_NAME "loongarch64" + #define MY_CPU_LOONGARCH64 + #else + #define MY_CPU_NAME "loongarch" + #endif +#endif + + +// #undef MY_CPU_NAME +// #undef MY_CPU_SIZEOF_POINTER +// #define __e2k__ +// #define __SIZEOF_POINTER__ 4 +#if defined(__e2k__) + #define MY_CPU_E2K + #if defined(__ILP32__) || defined(__SIZEOF_POINTER__) && (__SIZEOF_POINTER__ == 4) + #define MY_CPU_NAME "e2k-32" + #define MY_CPU_SIZEOF_POINTER 4 + #else + #define MY_CPU_NAME "e2k" + #if defined(__LP64__) || defined(__SIZEOF_POINTER__) && (__SIZEOF_POINTER__ == 8) + #define MY_CPU_SIZEOF_POINTER 8 + #endif + #endif + #define MY_CPU_64BIT +#endif + + #if defined(MY_CPU_X86) || defined(MY_CPU_AMD64) #define MY_CPU_X86_OR_AMD64 #endif @@ -165,6 +247,7 @@ MY_CPU_64BIT means that processor can work with 64-bit registers. || defined(MY_CPU_ARM_LE) \ || defined(MY_CPU_ARM64_LE) \ || defined(MY_CPU_IA64_LE) \ + || defined(_LITTLE_ENDIAN) \ || defined(__LITTLE_ENDIAN__) \ || defined(__ARMEL__) \ || defined(__THUMBEL__) \ @@ -197,6 +280,9 @@ MY_CPU_64BIT means that processor can work with 64-bit registers. #error Stop_Compiling_Bad_Endian #endif +#if !defined(MY_CPU_LE) && !defined(MY_CPU_BE) + #error Stop_Compiling_CPU_ENDIAN_must_be_detected_at_compile_time +#endif #if defined(MY_CPU_32BIT) && defined(MY_CPU_64BIT) #error Stop_Compiling_Bad_32_64_BIT @@ -238,6 +324,7 @@ MY_CPU_64BIT means that processor can work with 64-bit registers. #ifndef MY_CPU_NAME + // #define MY_CPU_IS_UNKNOWN #ifdef MY_CPU_LE #define MY_CPU_NAME "LE" #elif defined(MY_CPU_BE) @@ -253,15 +340,121 @@ MY_CPU_64BIT means that processor can work with 64-bit registers. +#ifdef __has_builtin + #define Z7_has_builtin(x) __has_builtin(x) +#else + #define Z7_has_builtin(x) 0 +#endif + + +#define Z7_BSWAP32_CONST(v) \ + ( (((UInt32)(v) << 24) ) \ + | (((UInt32)(v) << 8) & (UInt32)0xff0000) \ + | (((UInt32)(v) >> 8) & (UInt32)0xff00 ) \ + | (((UInt32)(v) >> 24) )) + + +#if defined(_MSC_VER) && (_MSC_VER >= 1300) + +#include + +/* Note: these macros will use bswap instruction (486), that is unsupported in 386 cpu */ + +#pragma intrinsic(_byteswap_ushort) +#pragma intrinsic(_byteswap_ulong) +#pragma intrinsic(_byteswap_uint64) + +#define Z7_BSWAP16(v) _byteswap_ushort(v) +#define Z7_BSWAP32(v) _byteswap_ulong (v) +#define Z7_BSWAP64(v) _byteswap_uint64(v) +#define Z7_CPU_FAST_BSWAP_SUPPORTED + +/* GCC can generate slow code that calls function for __builtin_bswap32() for: + - GCC for RISCV, if Zbb/XTHeadBb extension is not used. + - GCC for SPARC. + The code from CLANG for SPARC also is not fastest. + So we don't define Z7_CPU_FAST_BSWAP_SUPPORTED in some cases. +*/ +#elif (!defined(MY_CPU_RISCV) || defined (__riscv_zbb) || defined(__riscv_xtheadbb)) \ + && !defined(MY_CPU_SPARC) \ + && ( \ + (defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))) \ + || (defined(__clang__) && Z7_has_builtin(__builtin_bswap16)) \ + ) + +#define Z7_BSWAP16(v) __builtin_bswap16(v) +#define Z7_BSWAP32(v) __builtin_bswap32(v) +#define Z7_BSWAP64(v) __builtin_bswap64(v) +#define Z7_CPU_FAST_BSWAP_SUPPORTED + +#else + +#define Z7_BSWAP16(v) ((UInt16) \ + ( ((UInt32)(v) << 8) \ + | ((UInt32)(v) >> 8) \ + )) + +#define Z7_BSWAP32(v) Z7_BSWAP32_CONST(v) + +#define Z7_BSWAP64(v) \ + ( ( ( (UInt64)(v) ) << 8 * 7 ) \ + | ( ( (UInt64)(v) & ((UInt32)0xff << 8 * 1) ) << 8 * 5 ) \ + | ( ( (UInt64)(v) & ((UInt32)0xff << 8 * 2) ) << 8 * 3 ) \ + | ( ( (UInt64)(v) & ((UInt32)0xff << 8 * 3) ) << 8 * 1 ) \ + | ( ( (UInt64)(v) >> 8 * 1 ) & ((UInt32)0xff << 8 * 3) ) \ + | ( ( (UInt64)(v) >> 8 * 3 ) & ((UInt32)0xff << 8 * 2) ) \ + | ( ( (UInt64)(v) >> 8 * 5 ) & ((UInt32)0xff << 8 * 1) ) \ + | ( ( (UInt64)(v) >> 8 * 7 ) ) \ + ) + +#endif + + + #ifdef MY_CPU_LE #if defined(MY_CPU_X86_OR_AMD64) \ - || defined(MY_CPU_ARM64) + || defined(MY_CPU_ARM64) \ + || defined(MY_CPU_RISCV) && defined(__riscv_misaligned_fast) \ + || defined(MY_CPU_E2K) && defined(__iset__) && (__iset__ >= 6) #define MY_CPU_LE_UNALIGN #define MY_CPU_LE_UNALIGN_64 #elif defined(__ARM_FEATURE_UNALIGNED) - /* gcc9 for 32-bit arm can use LDRD instruction that requires 32-bit alignment. - So we can't use unaligned 64-bit operations. */ - #define MY_CPU_LE_UNALIGN +/* === ALIGNMENT on 32-bit arm and LDRD/STRD/LDM/STM instructions. + Description of problems: +problem-1 : 32-bit ARM architecture: + multi-access (pair of 32-bit accesses) instructions (LDRD/STRD/LDM/STM) + require 32-bit (WORD) alignment (by 32-bit ARM architecture). + So there is "Alignment fault exception", if data is not aligned for 32-bit. + +problem-2 : 32-bit kernels and arm64 kernels: + 32-bit linux kernels provide fixup for these "paired" instruction "Alignment fault exception". + So unaligned paired-access instructions work via exception handler in kernel in 32-bit linux. + + But some arm64 kernels do not handle these faults in 32-bit programs. + So we have unhandled exception for such instructions. + Probably some new arm64 kernels have fixed it, and unaligned + paired-access instructions work in new kernels? + +problem-3 : compiler for 32-bit arm: + Compilers use LDRD/STRD/LDM/STM for UInt64 accesses + and for another cases where two 32-bit accesses are fused + to one multi-access instruction. + So UInt64 variables must be aligned for 32-bit, and each + 32-bit access must be aligned for 32-bit, if we want to + avoid "Alignment fault" exception (handled or unhandled). + +problem-4 : performace: + Even if unaligned access is handled by kernel, it will be slow. + So if we allow unaligned access, we can get fast unaligned + single-access, and slow unaligned paired-access. + + We don't allow unaligned access on 32-bit arm, because compiler + genarates paired-access instructions that require 32-bit alignment, + and some arm64 kernels have no handler for these instructions. + Also unaligned paired-access instructions will be slow, if kernel handles them. +*/ + // it must be disabled: + // #define MY_CPU_LE_UNALIGN #endif #endif @@ -272,13 +465,11 @@ MY_CPU_64BIT means that processor can work with 64-bit registers. #define GetUi32(p) (*(const UInt32 *)(const void *)(p)) #ifdef MY_CPU_LE_UNALIGN_64 #define GetUi64(p) (*(const UInt64 *)(const void *)(p)) +#define SetUi64(p, v) { *(UInt64 *)(void *)(p) = (v); } #endif #define SetUi16(p, v) { *(UInt16 *)(void *)(p) = (v); } #define SetUi32(p, v) { *(UInt32 *)(void *)(p) = (v); } -#ifdef MY_CPU_LE_UNALIGN_64 -#define SetUi64(p, v) { *(UInt64 *)(void *)(p) = (v); } -#endif #else @@ -305,50 +496,33 @@ MY_CPU_64BIT means that processor can work with 64-bit registers. #endif -#ifndef MY_CPU_LE_UNALIGN_64 - +#ifndef GetUi64 #define GetUi64(p) (GetUi32(p) | ((UInt64)GetUi32(((const Byte *)(p)) + 4) << 32)) +#endif +#ifndef SetUi64 #define SetUi64(p, v) { Byte *_ppp2_ = (Byte *)(p); UInt64 _vvv2_ = (v); \ - SetUi32(_ppp2_ , (UInt32)_vvv2_); \ - SetUi32(_ppp2_ + 4, (UInt32)(_vvv2_ >> 32)); } - + SetUi32(_ppp2_ , (UInt32)_vvv2_) \ + SetUi32(_ppp2_ + 4, (UInt32)(_vvv2_ >> 32)) } #endif +#if defined(MY_CPU_LE_UNALIGN) && defined(Z7_CPU_FAST_BSWAP_SUPPORTED) - -#ifdef __has_builtin - #define MY__has_builtin(x) __has_builtin(x) +#if 0 +// Z7_BSWAP16 can be slow for x86-msvc +#define GetBe16_to32(p) (Z7_BSWAP16 (*(const UInt16 *)(const void *)(p))) #else - #define MY__has_builtin(x) 0 +#define GetBe16_to32(p) (Z7_BSWAP32 (*(const UInt16 *)(const void *)(p)) >> 16) #endif -#if defined(MY_CPU_LE_UNALIGN) && /* defined(_WIN64) && */ defined(_MSC_VER) && (_MSC_VER >= 1300) +#define GetBe32(p) Z7_BSWAP32 (*(const UInt32 *)(const void *)(p)) +#define SetBe32(p, v) { (*(UInt32 *)(void *)(p)) = Z7_BSWAP32(v); } -/* Note: we use bswap instruction, that is unsupported in 386 cpu */ - -#include - -#pragma intrinsic(_byteswap_ushort) -#pragma intrinsic(_byteswap_ulong) -#pragma intrinsic(_byteswap_uint64) - -/* #define GetBe16(p) _byteswap_ushort(*(const UInt16 *)(const Byte *)(p)) */ -#define GetBe32(p) _byteswap_ulong (*(const UInt32 *)(const void *)(p)) -#define GetBe64(p) _byteswap_uint64(*(const UInt64 *)(const void *)(p)) - -#define SetBe32(p, v) (*(UInt32 *)(void *)(p)) = _byteswap_ulong(v) - -#elif defined(MY_CPU_LE_UNALIGN) && ( \ - (defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))) \ - || (defined(__clang__) && MY__has_builtin(__builtin_bswap16)) ) - -/* #define GetBe16(p) __builtin_bswap16(*(const UInt16 *)(const void *)(p)) */ -#define GetBe32(p) __builtin_bswap32(*(const UInt32 *)(const void *)(p)) -#define GetBe64(p) __builtin_bswap64(*(const UInt64 *)(const void *)(p)) - -#define SetBe32(p, v) (*(UInt32 *)(void *)(p)) = __builtin_bswap32(v) +#if defined(MY_CPU_LE_UNALIGN_64) +#define GetBe64(p) Z7_BSWAP64 (*(const UInt64 *)(const void *)(p)) +#define SetBe64(p, v) { (*(UInt64 *)(void *)(p)) = Z7_BSWAP64(v); } +#endif #else @@ -358,8 +532,6 @@ MY_CPU_64BIT means that processor can work with 64-bit registers. ((UInt32)((const Byte *)(p))[2] << 8) | \ ((const Byte *)(p))[3] ) -#define GetBe64(p) (((UInt64)GetBe32(p) << 32) | GetBe32(((const Byte *)(p)) + 4)) - #define SetBe32(p, v) { Byte *_ppp_ = (Byte *)(p); UInt32 _vvv_ = (v); \ _ppp_[0] = (Byte)(_vvv_ >> 24); \ _ppp_[1] = (Byte)(_vvv_ >> 16); \ @@ -368,53 +540,113 @@ MY_CPU_64BIT means that processor can work with 64-bit registers. #endif +#ifndef GetBe64 +#define GetBe64(p) (((UInt64)GetBe32(p) << 32) | GetBe32(((const Byte *)(p)) + 4)) +#endif + +#ifndef SetBe64 +#define SetBe64(p, v) { Byte *_ppp_ = (Byte *)(p); UInt64 _vvv_ = (v); \ + _ppp_[0] = (Byte)(_vvv_ >> 56); \ + _ppp_[1] = (Byte)(_vvv_ >> 48); \ + _ppp_[2] = (Byte)(_vvv_ >> 40); \ + _ppp_[3] = (Byte)(_vvv_ >> 32); \ + _ppp_[4] = (Byte)(_vvv_ >> 24); \ + _ppp_[5] = (Byte)(_vvv_ >> 16); \ + _ppp_[6] = (Byte)(_vvv_ >> 8); \ + _ppp_[7] = (Byte)_vvv_; } +#endif #ifndef GetBe16 - +#ifdef GetBe16_to32 +#define GetBe16(p) ( (UInt16) GetBe16_to32(p)) +#else #define GetBe16(p) ( (UInt16) ( \ ((UInt16)((const Byte *)(p))[0] << 8) | \ ((const Byte *)(p))[1] )) - +#endif #endif +#if defined(MY_CPU_BE) +#define Z7_CONV_BE_TO_NATIVE_CONST32(v) (v) +#define Z7_CONV_LE_TO_NATIVE_CONST32(v) Z7_BSWAP32_CONST(v) +#define Z7_CONV_NATIVE_TO_BE_32(v) (v) +#elif defined(MY_CPU_LE) +#define Z7_CONV_BE_TO_NATIVE_CONST32(v) Z7_BSWAP32_CONST(v) +#define Z7_CONV_LE_TO_NATIVE_CONST32(v) (v) +#define Z7_CONV_NATIVE_TO_BE_32(v) Z7_BSWAP32(v) +#else +#error Stop_Compiling_Unknown_Endian_CONV +#endif + + +#if defined(MY_CPU_BE) + +#define GetBe64a(p) (*(const UInt64 *)(const void *)(p)) +#define GetBe32a(p) (*(const UInt32 *)(const void *)(p)) +#define GetBe16a(p) (*(const UInt16 *)(const void *)(p)) +#define SetBe32a(p, v) { *(UInt32 *)(void *)(p) = (v); } +#define SetBe16a(p, v) { *(UInt16 *)(void *)(p) = (v); } + +#define GetUi64a(p) GetUi64(p) +#define GetUi32a(p) GetUi32(p) +#define GetUi16a(p) GetUi16(p) +#define SetUi32a(p, v) SetUi32(p, v) +#define SetUi16a(p, v) SetUi16(p, v) + +#elif defined(MY_CPU_LE) + +#define GetUi64a(p) (*(const UInt64 *)(const void *)(p)) +#define GetUi32a(p) (*(const UInt32 *)(const void *)(p)) +#define GetUi16a(p) (*(const UInt16 *)(const void *)(p)) +#define SetUi32a(p, v) { *(UInt32 *)(void *)(p) = (v); } +#define SetUi16a(p, v) { *(UInt16 *)(void *)(p) = (v); } + +#define GetBe64a(p) GetBe64(p) +#define GetBe32a(p) GetBe32(p) +#define GetBe16a(p) GetBe16(p) +#define SetBe32a(p, v) SetBe32(p, v) +#define SetBe16a(p, v) SetBe16(p, v) + +#else +#error Stop_Compiling_Unknown_Endian_CPU_a +#endif + + +#ifndef GetBe16_to32 +#define GetBe16_to32(p) GetBe16(p) +#endif + + +#if defined(MY_CPU_X86_OR_AMD64) \ + || defined(MY_CPU_ARM_OR_ARM64) \ + || defined(MY_CPU_PPC_OR_PPC64) + #define Z7_CPU_FAST_ROTATE_SUPPORTED +#endif + #ifdef MY_CPU_X86_OR_AMD64 -typedef struct -{ - UInt32 maxFunc; - UInt32 vendor[3]; - UInt32 ver; - UInt32 b; - UInt32 c; - UInt32 d; -} Cx86cpuid; - -enum -{ - CPU_FIRM_INTEL, - CPU_FIRM_AMD, - CPU_FIRM_VIA -}; - -void MyCPUID(UInt32 function, UInt32 *a, UInt32 *b, UInt32 *c, UInt32 *d); - -BoolInt x86cpuid_CheckAndRead(Cx86cpuid *p); -int x86cpuid_GetFirm(const Cx86cpuid *p); - -#define x86cpuid_GetFamily(ver) (((ver >> 16) & 0xFF0) | ((ver >> 8) & 0xF)) -#define x86cpuid_GetModel(ver) (((ver >> 12) & 0xF0) | ((ver >> 4) & 0xF)) -#define x86cpuid_GetStepping(ver) (ver & 0xF) - -BoolInt CPU_Is_InOrder(void); +void Z7_FASTCALL z7_x86_cpuid(UInt32 a[4], UInt32 function); +UInt32 Z7_FASTCALL z7_x86_cpuid_GetMaxFunc(void); +#if defined(MY_CPU_AMD64) +#define Z7_IF_X86_CPUID_SUPPORTED +#else +#define Z7_IF_X86_CPUID_SUPPORTED if (z7_x86_cpuid_GetMaxFunc()) +#endif BoolInt CPU_IsSupported_AES(void); +BoolInt CPU_IsSupported_AVX(void); BoolInt CPU_IsSupported_AVX2(void); +BoolInt CPU_IsSupported_AVX512F_AVX512VL(void); BoolInt CPU_IsSupported_VAES_AVX2(void); +BoolInt CPU_IsSupported_CMOV(void); +BoolInt CPU_IsSupported_SSE(void); +BoolInt CPU_IsSupported_SSE2(void); BoolInt CPU_IsSupported_SSSE3(void); BoolInt CPU_IsSupported_SSE41(void); BoolInt CPU_IsSupported_SHA(void); +BoolInt CPU_IsSupported_SHA512(void); BoolInt CPU_IsSupported_PageGB(void); #elif defined(MY_CPU_ARM_OR_ARM64) @@ -432,12 +664,13 @@ BoolInt CPU_IsSupported_SHA1(void); BoolInt CPU_IsSupported_SHA2(void); BoolInt CPU_IsSupported_AES(void); #endif +BoolInt CPU_IsSupported_SHA512(void); #endif #if defined(__APPLE__) -int My_sysctlbyname_Get(const char *name, void *buf, size_t *bufSize); -int My_sysctlbyname_Get_UInt32(const char *name, UInt32 *val); +int z7_sysctlbyname_Get(const char *name, void *buf, size_t *bufSize); +int z7_sysctlbyname_Get_UInt32(const char *name, UInt32 *val); #endif EXTERN_C_END diff --git a/deps/LZMA-SDK/C/Delta.h b/deps/LZMA-SDK/C/Delta.h index 2fa54ad67..706095417 100644 --- a/deps/LZMA-SDK/C/Delta.h +++ b/deps/LZMA-SDK/C/Delta.h @@ -1,8 +1,8 @@ /* Delta.h -- Delta converter -2013-01-18 : Igor Pavlov : Public domain */ +2023-03-03 : Igor Pavlov : Public domain */ -#ifndef __DELTA_H -#define __DELTA_H +#ifndef ZIP7_INC_DELTA_H +#define ZIP7_INC_DELTA_H #include "7zTypes.h" diff --git a/deps/LZMA-SDK/C/DllSecur.c b/deps/LZMA-SDK/C/DllSecur.c index a3c294bfe..bbbfc0a76 100644 --- a/deps/LZMA-SDK/C/DllSecur.c +++ b/deps/LZMA-SDK/C/DllSecur.c @@ -1,114 +1,99 @@ /* DllSecur.c -- DLL loading security -2022-07-15 : Igor Pavlov : Public domain */ +2023-12-03 : Igor Pavlov : Public domain */ #include "Precomp.h" #ifdef _WIN32 -#include +#include "7zWindows.h" #include "DllSecur.h" #ifndef UNDER_CE -#if defined(__GNUC__) && (__GNUC__ >= 8) - #pragma GCC diagnostic ignored "-Wcast-function-type" -#endif +Z7_DIAGNOSTIC_IGNORE_CAST_FUNCTION typedef BOOL (WINAPI *Func_SetDefaultDllDirectories)(DWORD DirectoryFlags); #define MY_LOAD_LIBRARY_SEARCH_USER_DIRS 0x400 #define MY_LOAD_LIBRARY_SEARCH_SYSTEM32 0x800 +#define DELIM "\0" + static const char * const g_Dlls = + "userenv" + DELIM "setupapi" + DELIM "apphelp" + DELIM "propsys" + DELIM "dwmapi" + DELIM "cryptbase" + DELIM "oleacc" + DELIM "clbcatq" + DELIM "version" #ifndef _CONSOLE - "UXTHEME\0" + DELIM "uxtheme" #endif - "USERENV\0" - "SETUPAPI\0" - "APPHELP\0" - "PROPSYS\0" - "DWMAPI\0" - "CRYPTBASE\0" - "OLEACC\0" - "CLBCATQ\0" - "VERSION\0" - ; + DELIM; #endif -// #define MY_CAST_FUNC (void(*)()) -#define MY_CAST_FUNC +#ifdef __clang__ + #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +#endif +#if defined (_MSC_VER) && _MSC_VER >= 1900 +// sysinfoapi.h: kit10: GetVersion was declared deprecated +#pragma warning(disable : 4996) +#endif -void My_SetDefaultDllDirectories() +#define IF_NON_VISTA_SET_DLL_DIRS_AND_RETURN \ + if ((UInt16)GetVersion() != 6) { \ + const \ + Func_SetDefaultDllDirectories setDllDirs = \ + (Func_SetDefaultDllDirectories) Z7_CAST_FUNC_C GetProcAddress(GetModuleHandle(TEXT("kernel32.dll")), \ + "SetDefaultDllDirectories"); \ + if (setDllDirs) if (setDllDirs(MY_LOAD_LIBRARY_SEARCH_SYSTEM32 | MY_LOAD_LIBRARY_SEARCH_USER_DIRS)) return; } + +void My_SetDefaultDllDirectories(void) { #ifndef UNDER_CE - - OSVERSIONINFO vi; - vi.dwOSVersionInfoSize = sizeof(vi); - if (!GetVersionEx(&vi) || vi.dwMajorVersion != 6 || vi.dwMinorVersion != 0) - { - Func_SetDefaultDllDirectories setDllDirs = (Func_SetDefaultDllDirectories) - MY_CAST_FUNC GetProcAddress(GetModuleHandle(TEXT("kernel32.dll")), "SetDefaultDllDirectories"); - if (setDllDirs) - if (setDllDirs(MY_LOAD_LIBRARY_SEARCH_SYSTEM32 | MY_LOAD_LIBRARY_SEARCH_USER_DIRS)) - return; - } - + IF_NON_VISTA_SET_DLL_DIRS_AND_RETURN #endif } -void LoadSecurityDlls() +void LoadSecurityDlls(void) { #ifndef UNDER_CE - - wchar_t buf[MAX_PATH + 100]; - - { - // at Vista (ver 6.0) : CoCreateInstance(CLSID_ShellLink, ...) doesn't work after SetDefaultDllDirectories() : Check it ??? - OSVERSIONINFO vi; - vi.dwOSVersionInfoSize = sizeof(vi); - if (!GetVersionEx(&vi) || vi.dwMajorVersion != 6 || vi.dwMinorVersion != 0) - { - Func_SetDefaultDllDirectories setDllDirs = (Func_SetDefaultDllDirectories) - MY_CAST_FUNC GetProcAddress(GetModuleHandle(TEXT("kernel32.dll")), "SetDefaultDllDirectories"); - if (setDllDirs) - if (setDllDirs(MY_LOAD_LIBRARY_SEARCH_SYSTEM32 | MY_LOAD_LIBRARY_SEARCH_USER_DIRS)) - return; - } - } - - { - unsigned len = GetSystemDirectoryW(buf, MAX_PATH + 2); - if (len == 0 || len > MAX_PATH) - return; - } + // at Vista (ver 6.0) : CoCreateInstance(CLSID_ShellLink, ...) doesn't work after SetDefaultDllDirectories() : Check it ??? + IF_NON_VISTA_SET_DLL_DIRS_AND_RETURN { + wchar_t buf[MAX_PATH + 100]; const char *dll; - unsigned pos = (unsigned)lstrlenW(buf); - + unsigned pos = GetSystemDirectoryW(buf, MAX_PATH + 2); + if (pos == 0 || pos > MAX_PATH) + return; if (buf[pos - 1] != '\\') buf[pos++] = '\\'; - - for (dll = g_Dlls; dll[0] != 0;) + for (dll = g_Dlls; *dll != 0;) { - unsigned k = 0; + wchar_t *dest = &buf[pos]; for (;;) { - char c = *dll++; - buf[pos + k] = (Byte)c; - k++; + const char c = *dll++; if (c == 0) break; + *dest++ = (Byte)c; } - - lstrcatW(buf, L".dll"); + dest[0] = '.'; + dest[1] = 'd'; + dest[2] = 'l'; + dest[3] = 'l'; + dest[4] = 0; + // lstrcatW(buf, L".dll"); LoadLibraryExW(buf, NULL, LOAD_WITH_ALTERED_SEARCH_PATH); } } - #endif } -#endif +#endif // _WIN32 diff --git a/deps/LZMA-SDK/C/DllSecur.h b/deps/LZMA-SDK/C/DllSecur.h index 64ff26cd9..9fa415382 100644 --- a/deps/LZMA-SDK/C/DllSecur.h +++ b/deps/LZMA-SDK/C/DllSecur.h @@ -1,8 +1,8 @@ /* DllSecur.h -- DLL loading for security -2018-02-19 : Igor Pavlov : Public domain */ +2023-03-03 : Igor Pavlov : Public domain */ -#ifndef __DLL_SECUR_H -#define __DLL_SECUR_H +#ifndef ZIP7_INC_DLL_SECUR_H +#define ZIP7_INC_DLL_SECUR_H #include "7zTypes.h" diff --git a/deps/LZMA-SDK/C/LzFind.c b/deps/LZMA-SDK/C/LzFind.c index 1b73c2848..1ce404648 100644 --- a/deps/LZMA-SDK/C/LzFind.c +++ b/deps/LZMA-SDK/C/LzFind.c @@ -1,5 +1,5 @@ /* LzFind.c -- Match finder for LZ algorithms -2021-11-29 : Igor Pavlov : Public domain */ +2024-03-01 : Igor Pavlov : Public domain */ #include "Precomp.h" @@ -17,7 +17,7 @@ #define kEmptyHashValue 0 #define kMaxValForNormalize ((UInt32)0) -// #define kMaxValForNormalize ((UInt32)(1 << 20) + 0xFFF) // for debug +// #define kMaxValForNormalize ((UInt32)(1 << 20) + 0xfff) // for debug // #define kNormalizeAlign (1 << 7) // alignment for speculated accesses @@ -67,10 +67,10 @@ static void LzInWindow_Free(CMatchFinder *p, ISzAllocPtr alloc) { - if (!p->directInput) + // if (!p->directInput) { - ISzAlloc_Free(alloc, p->bufferBase); - p->bufferBase = NULL; + ISzAlloc_Free(alloc, p->bufBase); + p->bufBase = NULL; } } @@ -79,7 +79,7 @@ static int LzInWindow_Create2(CMatchFinder *p, UInt32 blockSize, ISzAllocPtr all { if (blockSize == 0) return 0; - if (!p->bufferBase || p->blockSize != blockSize) + if (!p->bufBase || p->blockSize != blockSize) { // size_t blockSizeT; LzInWindow_Free(p, alloc); @@ -101,19 +101,25 @@ static int LzInWindow_Create2(CMatchFinder *p, UInt32 blockSize, ISzAllocPtr all #endif */ - p->bufferBase = (Byte *)ISzAlloc_Alloc(alloc, blockSize); - // printf("\nbufferBase = %p\n", p->bufferBase); + p->bufBase = (Byte *)ISzAlloc_Alloc(alloc, blockSize); + // printf("\nbufferBase = %p\n", p->bufBase); // return 0; // for debug } - return (p->bufferBase != NULL); + return (p->bufBase != NULL); } -static const Byte *MatchFinder_GetPointerToCurrentPos(CMatchFinder *p) { return p->buffer; } +static const Byte *MatchFinder_GetPointerToCurrentPos(void *p) +{ + return ((CMatchFinder *)p)->buffer; +} -static UInt32 MatchFinder_GetNumAvailableBytes(CMatchFinder *p) { return GET_AVAIL_BYTES(p); } +static UInt32 MatchFinder_GetNumAvailableBytes(void *p) +{ + return GET_AVAIL_BYTES((CMatchFinder *)p); +} -MY_NO_INLINE +Z7_NO_INLINE static void MatchFinder_ReadBlock(CMatchFinder *p) { if (p->streamEndWasReached || p->result != SZ_OK) @@ -127,8 +133,8 @@ static void MatchFinder_ReadBlock(CMatchFinder *p) UInt32 curSize = 0xFFFFFFFF - GET_AVAIL_BYTES(p); if (curSize > p->directInputRem) curSize = (UInt32)p->directInputRem; - p->directInputRem -= curSize; p->streamPos += curSize; + p->directInputRem -= curSize; if (p->directInputRem == 0) p->streamEndWasReached = 1; return; @@ -136,8 +142,8 @@ static void MatchFinder_ReadBlock(CMatchFinder *p) for (;;) { - Byte *dest = p->buffer + GET_AVAIL_BYTES(p); - size_t size = (size_t)(p->bufferBase + p->blockSize - dest); + const Byte *dest = p->buffer + GET_AVAIL_BYTES(p); + size_t size = (size_t)(p->bufBase + p->blockSize - dest); if (size == 0) { /* we call ReadBlock() after NeedMove() and MoveBlock(). @@ -153,7 +159,14 @@ static void MatchFinder_ReadBlock(CMatchFinder *p) // #define kRead 3 // if (size > kRead) size = kRead; // for debug - p->result = ISeqInStream_Read(p->stream, dest, &size); + /* + // we need cast (Byte *)dest. + #ifdef __clang__ + #pragma GCC diagnostic ignored "-Wcast-qual" + #endif + */ + p->result = ISeqInStream_Read(p->stream, + p->bufBase + (dest - p->bufBase), &size); if (p->result != SZ_OK) return; if (size == 0) @@ -173,14 +186,14 @@ static void MatchFinder_ReadBlock(CMatchFinder *p) -MY_NO_INLINE +Z7_NO_INLINE void MatchFinder_MoveBlock(CMatchFinder *p) { - const size_t offset = (size_t)(p->buffer - p->bufferBase) - p->keepSizeBefore; + const size_t offset = (size_t)(p->buffer - p->bufBase) - p->keepSizeBefore; const size_t keepBefore = (offset & (kBlockMoveAlign - 1)) + p->keepSizeBefore; - p->buffer = p->bufferBase + keepBefore; - memmove(p->bufferBase, - p->bufferBase + (offset & ~((size_t)kBlockMoveAlign - 1)), + p->buffer = p->bufBase + keepBefore; + memmove(p->bufBase, + p->bufBase + (offset & ~((size_t)kBlockMoveAlign - 1)), keepBefore + (size_t)GET_AVAIL_BYTES(p)); } @@ -198,7 +211,7 @@ int MatchFinder_NeedMove(CMatchFinder *p) return 0; if (p->streamEndWasReached || p->result != SZ_OK) return 0; - return ((size_t)(p->bufferBase + p->blockSize - p->buffer) <= p->keepSizeAfter); + return ((size_t)(p->bufBase + p->blockSize - p->buffer) <= p->keepSizeAfter); } void MatchFinder_ReadIfRequired(CMatchFinder *p) @@ -214,6 +227,8 @@ static void MatchFinder_SetDefaultSettings(CMatchFinder *p) p->cutValue = 32; p->btMode = 1; p->numHashBytes = 4; + p->numHashBytes_Min = 2; + p->numHashOutBits = 0; p->bigHash = 0; } @@ -222,8 +237,10 @@ static void MatchFinder_SetDefaultSettings(CMatchFinder *p) void MatchFinder_Construct(CMatchFinder *p) { unsigned i; - p->bufferBase = NULL; + p->buffer = NULL; + p->bufBase = NULL; p->directInput = 0; + p->stream = NULL; p->hash = NULL; p->expectedDataSize = (UInt64)(Int64)-1; MatchFinder_SetDefaultSettings(p); @@ -238,6 +255,8 @@ void MatchFinder_Construct(CMatchFinder *p) } } +#undef kCrcPoly + static void MatchFinder_FreeThisClassMemory(CMatchFinder *p, ISzAllocPtr alloc) { ISzAlloc_Free(alloc, p->hash); @@ -252,7 +271,7 @@ void MatchFinder_Free(CMatchFinder *p, ISzAllocPtr alloc) static CLzRef* AllocRefs(size_t num, ISzAllocPtr alloc) { - size_t sizeInBytes = (size_t)num * sizeof(CLzRef); + const size_t sizeInBytes = (size_t)num * sizeof(CLzRef); if (sizeInBytes / sizeof(CLzRef) != num) return NULL; return (CLzRef *)ISzAlloc_Alloc(alloc, sizeInBytes); @@ -298,6 +317,62 @@ static UInt32 GetBlockSize(CMatchFinder *p, UInt32 historySize) } +// input is historySize +static UInt32 MatchFinder_GetHashMask2(CMatchFinder *p, UInt32 hs) +{ + if (p->numHashBytes == 2) + return (1 << 16) - 1; + if (hs != 0) + hs--; + hs |= (hs >> 1); + hs |= (hs >> 2); + hs |= (hs >> 4); + hs |= (hs >> 8); + // we propagated 16 bits in (hs). Low 16 bits must be set later + if (hs >= (1 << 24)) + { + if (p->numHashBytes == 3) + hs = (1 << 24) - 1; + /* if (bigHash) mode, GetHeads4b() in LzFindMt.c needs (hs >= ((1 << 24) - 1))) */ + } + // (hash_size >= (1 << 16)) : Required for (numHashBytes > 2) + hs |= (1 << 16) - 1; /* don't change it! */ + // bt5: we adjust the size with recommended minimum size + if (p->numHashBytes >= 5) + hs |= (256 << kLzHash_CrcShift_2) - 1; + return hs; +} + +// input is historySize +static UInt32 MatchFinder_GetHashMask(CMatchFinder *p, UInt32 hs) +{ + if (p->numHashBytes == 2) + return (1 << 16) - 1; + if (hs != 0) + hs--; + hs |= (hs >> 1); + hs |= (hs >> 2); + hs |= (hs >> 4); + hs |= (hs >> 8); + // we propagated 16 bits in (hs). Low 16 bits must be set later + hs >>= 1; + if (hs >= (1 << 24)) + { + if (p->numHashBytes == 3) + hs = (1 << 24) - 1; + else + hs >>= 1; + /* if (bigHash) mode, GetHeads4b() in LzFindMt.c needs (hs >= ((1 << 24) - 1))) */ + } + // (hash_size >= (1 << 16)) : Required for (numHashBytes > 2) + hs |= (1 << 16) - 1; /* don't change it! */ + // bt5: we adjust the size with recommended minimum size + if (p->numHashBytes >= 5) + hs |= (256 << kLzHash_CrcShift_2) - 1; + return hs; +} + + int MatchFinder_Create(CMatchFinder *p, UInt32 historySize, UInt32 keepAddBufferBefore, UInt32 matchMaxLen, UInt32 keepAddBufferAfter, ISzAllocPtr alloc) @@ -318,78 +393,91 @@ int MatchFinder_Create(CMatchFinder *p, UInt32 historySize, p->blockSize = 0; if (p->directInput || LzInWindow_Create2(p, GetBlockSize(p, historySize), alloc)) { - const UInt32 newCyclicBufferSize = historySize + 1; // do not change it - UInt32 hs; - p->matchMaxLen = matchMaxLen; + size_t hashSizeSum; { - // UInt32 hs4; - p->fixedHashSize = 0; - hs = (1 << 16) - 1; - if (p->numHashBytes != 2) + UInt32 hs; + UInt32 hsCur; + + if (p->numHashOutBits != 0) { - hs = historySize; - if (hs > p->expectedDataSize) - hs = (UInt32)p->expectedDataSize; - if (hs != 0) - hs--; - hs |= (hs >> 1); - hs |= (hs >> 2); - hs |= (hs >> 4); - hs |= (hs >> 8); - // we propagated 16 bits in (hs). Low 16 bits must be set later - hs >>= 1; - if (hs >= (1 << 24)) - { - if (p->numHashBytes == 3) - hs = (1 << 24) - 1; - else - hs >>= 1; - /* if (bigHash) mode, GetHeads4b() in LzFindMt.c needs (hs >= ((1 << 24) - 1))) */ - } - - // hs = ((UInt32)1 << 25) - 1; // for test - + unsigned numBits = p->numHashOutBits; + const unsigned nbMax = + (p->numHashBytes == 2 ? 16 : + (p->numHashBytes == 3 ? 24 : 32)); + if (numBits > nbMax) + numBits = nbMax; + if (numBits >= 32) + hs = (UInt32)0 - 1; + else + hs = ((UInt32)1 << numBits) - 1; // (hash_size >= (1 << 16)) : Required for (numHashBytes > 2) hs |= (1 << 16) - 1; /* don't change it! */ - - // bt5: we adjust the size with recommended minimum size if (p->numHashBytes >= 5) hs |= (256 << kLzHash_CrcShift_2) - 1; + { + const UInt32 hs2 = MatchFinder_GetHashMask2(p, historySize); + if (hs > hs2) + hs = hs2; + } + hsCur = hs; + if (p->expectedDataSize < historySize) + { + const UInt32 hs2 = MatchFinder_GetHashMask2(p, (UInt32)p->expectedDataSize); + if (hsCur > hs2) + hsCur = hs2; + } + } + else + { + hs = MatchFinder_GetHashMask(p, historySize); + hsCur = hs; + if (p->expectedDataSize < historySize) + { + hsCur = MatchFinder_GetHashMask(p, (UInt32)p->expectedDataSize); + if (hsCur > hs) // is it possible? + hsCur = hs; + } } - p->hashMask = hs; - hs++; - /* - hs4 = (1 << 20); - if (hs4 > hs) - hs4 = hs; - // hs4 = (1 << 16); // for test - p->hash4Mask = hs4 - 1; - */ + p->hashMask = hsCur; - if (p->numHashBytes > 2) p->fixedHashSize += kHash2Size; - if (p->numHashBytes > 3) p->fixedHashSize += kHash3Size; - // if (p->numHashBytes > 4) p->fixedHashSize += hs4; // kHash4Size; - hs += p->fixedHashSize; + hashSizeSum = hs; + hashSizeSum++; + if (hashSizeSum < hs) + return 0; + { + UInt32 fixedHashSize = 0; + if (p->numHashBytes > 2 && p->numHashBytes_Min <= 2) fixedHashSize += kHash2Size; + if (p->numHashBytes > 3 && p->numHashBytes_Min <= 3) fixedHashSize += kHash3Size; + // if (p->numHashBytes > 4) p->fixedHashSize += hs4; // kHash4Size; + hashSizeSum += fixedHashSize; + p->fixedHashSize = fixedHashSize; + } } + p->matchMaxLen = matchMaxLen; + { size_t newSize; size_t numSons; + const UInt32 newCyclicBufferSize = historySize + 1; // do not change it p->historySize = historySize; - p->hashSizeSum = hs; p->cyclicBufferSize = newCyclicBufferSize; // it must be = (historySize + 1) numSons = newCyclicBufferSize; if (p->btMode) numSons <<= 1; - newSize = hs + numSons; + newSize = hashSizeSum + numSons; + + if (numSons < newCyclicBufferSize || newSize < numSons) + return 0; // aligned size is not required here, but it can be better for some loops #define NUM_REFS_ALIGN_MASK 0xF newSize = (newSize + NUM_REFS_ALIGN_MASK) & ~(size_t)NUM_REFS_ALIGN_MASK; - if (p->hash && p->numRefs == newSize) + // 22.02: we don't reallocate buffer, if old size is enough + if (p->hash && p->numRefs >= newSize) return 1; MatchFinder_FreeThisClassMemory(p, alloc); @@ -398,7 +486,7 @@ int MatchFinder_Create(CMatchFinder *p, UInt32 historySize, if (p->hash) { - p->son = p->hash + p->hashSizeSum; + p->son = p->hash + hashSizeSum; return 1; } } @@ -470,7 +558,8 @@ void MatchFinder_Init_HighHash(CMatchFinder *p) void MatchFinder_Init_4(CMatchFinder *p) { - p->buffer = p->bufferBase; + if (!p->directInput) + p->buffer = p->bufBase; { /* kEmptyHashValue = 0 (Zero) is used in hash tables as NO-VALUE marker. the code in CMatchFinderMt expects (pos = 1) */ @@ -488,8 +577,9 @@ void MatchFinder_Init_4(CMatchFinder *p) #define CYC_TO_POS_OFFSET 0 // #define CYC_TO_POS_OFFSET 1 // for debug -void MatchFinder_Init(CMatchFinder *p) +void MatchFinder_Init(void *_p) { + CMatchFinder *p = (CMatchFinder *)_p; MatchFinder_Init_HighHash(p); MatchFinder_Init_LowHash(p); MatchFinder_Init_4(p); @@ -507,42 +597,42 @@ void MatchFinder_Init(CMatchFinder *p) #ifdef MY_CPU_X86_OR_AMD64 - #if defined(__clang__) && (__clang_major__ >= 8) \ - || defined(__GNUC__) && (__GNUC__ >= 8) \ - || defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 1900) - #define USE_SATUR_SUB_128 - #define USE_AVX2 - #define ATTRIB_SSE41 __attribute__((__target__("sse4.1"))) - #define ATTRIB_AVX2 __attribute__((__target__("avx2"))) + #if defined(__clang__) && (__clang_major__ >= 4) \ + || defined(Z7_GCC_VERSION) && (Z7_GCC_VERSION >= 40701) + // || defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 1900) + + #define USE_LZFIND_SATUR_SUB_128 + #define USE_LZFIND_SATUR_SUB_256 + #define LZFIND_ATTRIB_SSE41 __attribute__((__target__("sse4.1"))) + #define LZFIND_ATTRIB_AVX2 __attribute__((__target__("avx2"))) #elif defined(_MSC_VER) #if (_MSC_VER >= 1600) - #define USE_SATUR_SUB_128 - #if (_MSC_VER >= 1900) - #define USE_AVX2 - #include // avx - #endif + #define USE_LZFIND_SATUR_SUB_128 + #endif + #if (_MSC_VER >= 1900) + #define USE_LZFIND_SATUR_SUB_256 #endif #endif -// #elif defined(MY_CPU_ARM_OR_ARM64) -#elif defined(MY_CPU_ARM64) +#elif defined(MY_CPU_ARM64) \ + /* || (defined(__ARM_ARCH) && (__ARM_ARCH >= 7)) */ - #if defined(__clang__) && (__clang_major__ >= 8) \ - || defined(__GNUC__) && (__GNUC__ >= 8) - #define USE_SATUR_SUB_128 + #if defined(Z7_CLANG_VERSION) && (Z7_CLANG_VERSION >= 30800) \ + || defined(__GNUC__) && (__GNUC__ >= 6) + #define USE_LZFIND_SATUR_SUB_128 #ifdef MY_CPU_ARM64 - // #define ATTRIB_SSE41 __attribute__((__target__(""))) + // #define LZFIND_ATTRIB_SSE41 __attribute__((__target__(""))) #else - // #define ATTRIB_SSE41 __attribute__((__target__("fpu=crypto-neon-fp-armv8"))) + #define LZFIND_ATTRIB_SSE41 __attribute__((__target__("fpu=neon"))) #endif #elif defined(_MSC_VER) #if (_MSC_VER >= 1910) - #define USE_SATUR_SUB_128 + #define USE_LZFIND_SATUR_SUB_128 #endif #endif - #if defined(_MSC_VER) && defined(MY_CPU_ARM64) + #if defined(Z7_MSC_VER_ORIGINAL) && defined(MY_CPU_ARM64) #include #else #include @@ -550,121 +640,130 @@ void MatchFinder_Init(CMatchFinder *p) #endif -/* -#ifndef ATTRIB_SSE41 - #define ATTRIB_SSE41 -#endif -#ifndef ATTRIB_AVX2 - #define ATTRIB_AVX2 -#endif -*/ -#ifdef USE_SATUR_SUB_128 +#ifdef USE_LZFIND_SATUR_SUB_128 -// #define _SHOW_HW_STATUS +// #define Z7_SHOW_HW_STATUS -#ifdef _SHOW_HW_STATUS +#ifdef Z7_SHOW_HW_STATUS #include -#define _PRF(x) x -_PRF(;) +#define PRF(x) x +PRF(;) #else -#define _PRF(x) +#define PRF(x) #endif + #ifdef MY_CPU_ARM_OR_ARM64 #ifdef MY_CPU_ARM64 -// #define FORCE_SATUR_SUB_128 +// #define FORCE_LZFIND_SATUR_SUB_128 #endif +typedef uint32x4_t LzFind_v128; +#define SASUB_128_V(v, s) \ + vsubq_u32(vmaxq_u32(v, s), s) -typedef uint32x4_t v128; -#define SASUB_128(i) \ - *(v128 *)(void *)(items + (i) * 4) = \ - vsubq_u32(vmaxq_u32(*(const v128 *)(const void *)(items + (i) * 4), sub2), sub2); - -#else +#else // MY_CPU_ARM_OR_ARM64 #include // sse4.1 -typedef __m128i v128; +typedef __m128i LzFind_v128; +// SSE 4.1 +#define SASUB_128_V(v, s) \ + _mm_sub_epi32(_mm_max_epu32(v, s), s) + +#endif // MY_CPU_ARM_OR_ARM64 + + #define SASUB_128(i) \ - *(v128 *)(void *)(items + (i) * 4) = \ - _mm_sub_epi32(_mm_max_epu32(*(const v128 *)(const void *)(items + (i) * 4), sub2), sub2); // SSE 4.1 - -#endif + *( LzFind_v128 *)( void *)(items + (i) * 4) = SASUB_128_V( \ + *(const LzFind_v128 *)(const void *)(items + (i) * 4), sub2); - -MY_NO_INLINE +Z7_NO_INLINE static -#ifdef ATTRIB_SSE41 -ATTRIB_SSE41 +#ifdef LZFIND_ATTRIB_SSE41 +LZFIND_ATTRIB_SSE41 #endif void -MY_FAST_CALL +Z7_FASTCALL LzFind_SaturSub_128(UInt32 subValue, CLzRef *items, const CLzRef *lim) { - v128 sub2 = + const LzFind_v128 sub2 = #ifdef MY_CPU_ARM_OR_ARM64 vdupq_n_u32(subValue); #else _mm_set_epi32((Int32)subValue, (Int32)subValue, (Int32)subValue, (Int32)subValue); #endif + Z7_PRAGMA_OPT_DISABLE_LOOP_UNROLL_VECTORIZE do { - SASUB_128(0) - SASUB_128(1) - SASUB_128(2) - SASUB_128(3) - items += 4 * 4; + SASUB_128(0) SASUB_128(1) items += 2 * 4; + SASUB_128(0) SASUB_128(1) items += 2 * 4; } while (items != lim); } -#ifdef USE_AVX2 +#ifdef USE_LZFIND_SATUR_SUB_256 #include // avx +/* +clang :immintrin.h uses +#if !(defined(_MSC_VER) || defined(__SCE__)) || __has_feature(modules) || \ + defined(__AVX2__) +#include +#endif +so we need for clang-cl */ -#define SASUB_256(i) *(__m256i *)(void *)(items + (i) * 8) = _mm256_sub_epi32(_mm256_max_epu32(*(const __m256i *)(const void *)(items + (i) * 8), sub2), sub2); // AVX2 +#if defined(__clang__) +#include +#include +#endif -MY_NO_INLINE +// AVX2: +#define SASUB_256(i) \ + *( __m256i *)( void *)(items + (i) * 8) = \ + _mm256_sub_epi32(_mm256_max_epu32( \ + *(const __m256i *)(const void *)(items + (i) * 8), sub2), sub2); + +Z7_NO_INLINE static -#ifdef ATTRIB_AVX2 -ATTRIB_AVX2 +#ifdef LZFIND_ATTRIB_AVX2 +LZFIND_ATTRIB_AVX2 #endif void -MY_FAST_CALL +Z7_FASTCALL LzFind_SaturSub_256(UInt32 subValue, CLzRef *items, const CLzRef *lim) { - __m256i sub2 = _mm256_set_epi32( + const __m256i sub2 = _mm256_set_epi32( (Int32)subValue, (Int32)subValue, (Int32)subValue, (Int32)subValue, (Int32)subValue, (Int32)subValue, (Int32)subValue, (Int32)subValue); + Z7_PRAGMA_OPT_DISABLE_LOOP_UNROLL_VECTORIZE do { - SASUB_256(0) - SASUB_256(1) - items += 2 * 8; + SASUB_256(0) SASUB_256(1) items += 2 * 8; + SASUB_256(0) SASUB_256(1) items += 2 * 8; } while (items != lim); } -#endif // USE_AVX2 +#endif // USE_LZFIND_SATUR_SUB_256 -#ifndef FORCE_SATUR_SUB_128 -typedef void (MY_FAST_CALL *LZFIND_SATUR_SUB_CODE_FUNC)( +#ifndef FORCE_LZFIND_SATUR_SUB_128 +typedef void (Z7_FASTCALL *LZFIND_SATUR_SUB_CODE_FUNC)( UInt32 subValue, CLzRef *items, const CLzRef *lim); static LZFIND_SATUR_SUB_CODE_FUNC g_LzFind_SaturSub; -#endif // FORCE_SATUR_SUB_128 +#endif // FORCE_LZFIND_SATUR_SUB_128 -#endif // USE_SATUR_SUB_128 +#endif // USE_LZFIND_SATUR_SUB_128 // kEmptyHashValue must be zero -// #define SASUB_32(i) v = items[i]; m = v - subValue; if (v < subValue) m = kEmptyHashValue; items[i] = m; -#define SASUB_32(i) v = items[i]; if (v < subValue) v = subValue; items[i] = v - subValue; +// #define SASUB_32(i) { UInt32 v = items[i]; UInt32 m = v - subValue; if (v < subValue) m = kEmptyHashValue; items[i] = m; } +#define SASUB_32(i) { UInt32 v = items[i]; if (v < subValue) v = subValue; items[i] = v - subValue; } -#ifdef FORCE_SATUR_SUB_128 +#ifdef FORCE_LZFIND_SATUR_SUB_128 #define DEFAULT_SaturSub LzFind_SaturSub_128 @@ -672,24 +771,19 @@ static LZFIND_SATUR_SUB_CODE_FUNC g_LzFind_SaturSub; #define DEFAULT_SaturSub LzFind_SaturSub_32 -MY_NO_INLINE +Z7_NO_INLINE static void -MY_FAST_CALL +Z7_FASTCALL LzFind_SaturSub_32(UInt32 subValue, CLzRef *items, const CLzRef *lim) { + Z7_PRAGMA_OPT_DISABLE_LOOP_UNROLL_VECTORIZE do { - UInt32 v; - SASUB_32(0) - SASUB_32(1) - SASUB_32(2) - SASUB_32(3) - SASUB_32(4) - SASUB_32(5) - SASUB_32(6) - SASUB_32(7) - items += 8; + SASUB_32(0) SASUB_32(1) items += 2; + SASUB_32(0) SASUB_32(1) items += 2; + SASUB_32(0) SASUB_32(1) items += 2; + SASUB_32(0) SASUB_32(1) items += 2; } while (items != lim); } @@ -697,27 +791,23 @@ LzFind_SaturSub_32(UInt32 subValue, CLzRef *items, const CLzRef *lim) #endif -MY_NO_INLINE +Z7_NO_INLINE void MatchFinder_Normalize3(UInt32 subValue, CLzRef *items, size_t numItems) { - #define K_NORM_ALIGN_BLOCK_SIZE (1 << 6) - - CLzRef *lim; - - for (; numItems != 0 && ((unsigned)(ptrdiff_t)items & (K_NORM_ALIGN_BLOCK_SIZE - 1)) != 0; numItems--) + #define LZFIND_NORM_ALIGN_BLOCK_SIZE (1 << 7) + Z7_PRAGMA_OPT_DISABLE_LOOP_UNROLL_VECTORIZE + for (; numItems != 0 && ((unsigned)(ptrdiff_t)items & (LZFIND_NORM_ALIGN_BLOCK_SIZE - 1)) != 0; numItems--) { - UInt32 v; - SASUB_32(0); + SASUB_32(0) items++; } - { - #define K_NORM_ALIGN_MASK (K_NORM_ALIGN_BLOCK_SIZE / 4 - 1) - lim = items + (numItems & ~(size_t)K_NORM_ALIGN_MASK); - numItems &= K_NORM_ALIGN_MASK; + const size_t k_Align_Mask = (LZFIND_NORM_ALIGN_BLOCK_SIZE / 4 - 1); + CLzRef *lim = items + (numItems & ~(size_t)k_Align_Mask); + numItems &= k_Align_Mask; if (items != lim) { - #if defined(USE_SATUR_SUB_128) && !defined(FORCE_SATUR_SUB_128) + #if defined(USE_LZFIND_SATUR_SUB_128) && !defined(FORCE_LZFIND_SATUR_SUB_128) if (g_LzFind_SaturSub) g_LzFind_SaturSub(subValue, items, lim); else @@ -726,12 +816,10 @@ void MatchFinder_Normalize3(UInt32 subValue, CLzRef *items, size_t numItems) } items = lim; } - - + Z7_PRAGMA_OPT_DISABLE_LOOP_UNROLL_VECTORIZE for (; numItems != 0; numItems--) { - UInt32 v; - SASUB_32(0); + SASUB_32(0) items++; } } @@ -740,7 +828,7 @@ void MatchFinder_Normalize3(UInt32 subValue, CLzRef *items, size_t numItems) // call MatchFinder_CheckLimits() only after (p->pos++) update -MY_NO_INLINE +Z7_NO_INLINE static void MatchFinder_CheckLimits(CMatchFinder *p) { if (// !p->streamEndWasReached && p->result == SZ_OK && @@ -768,11 +856,14 @@ static void MatchFinder_CheckLimits(CMatchFinder *p) const UInt32 subValue = (p->pos - p->historySize - 1) /* & ~(UInt32)(kNormalizeAlign - 1) */; // const UInt32 subValue = (1 << 15); // for debug // printf("\nMatchFinder_Normalize() subValue == 0x%x\n", subValue); - size_t numSonRefs = p->cyclicBufferSize; - if (p->btMode) - numSonRefs <<= 1; - Inline_MatchFinder_ReduceOffsets(p, subValue); - MatchFinder_Normalize3(subValue, p->hash, (size_t)p->hashSizeSum + numSonRefs); + MatchFinder_REDUCE_OFFSETS(p, subValue) + MatchFinder_Normalize3(subValue, p->hash, (size_t)p->hashMask + 1 + p->fixedHashSize); + { + size_t numSonRefs = p->cyclicBufferSize; + if (p->btMode) + numSonRefs <<= 1; + MatchFinder_Normalize3(subValue, p->son, numSonRefs); + } } if (p->cyclicBufferPos == p->cyclicBufferSize) @@ -785,7 +876,7 @@ static void MatchFinder_CheckLimits(CMatchFinder *p) /* (lenLimit > maxLen) */ -MY_FORCE_INLINE +Z7_FORCE_INLINE static UInt32 * Hc_GetMatchesSpec(size_t lenLimit, UInt32 curMatch, UInt32 pos, const Byte *cur, CLzRef *son, size_t _cyclicBufferPos, UInt32 _cyclicBufferSize, UInt32 cutValue, UInt32 *d, unsigned maxLen) @@ -867,7 +958,7 @@ static UInt32 * Hc_GetMatchesSpec(size_t lenLimit, UInt32 curMatch, UInt32 pos, } -MY_FORCE_INLINE +Z7_FORCE_INLINE UInt32 * GetMatchesSpec1(UInt32 lenLimit, UInt32 curMatch, UInt32 pos, const Byte *cur, CLzRef *son, size_t _cyclicBufferPos, UInt32 _cyclicBufferSize, UInt32 cutValue, UInt32 *d, UInt32 maxLen) @@ -998,13 +1089,15 @@ static void SkipMatchesSpec(UInt32 lenLimit, UInt32 curMatch, UInt32 pos, const #define MOVE_POS \ - ++p->cyclicBufferPos; \ + p->cyclicBufferPos++; \ p->buffer++; \ - { const UInt32 pos1 = p->pos + 1; p->pos = pos1; if (pos1 == p->posLimit) MatchFinder_CheckLimits(p); } + { const UInt32 pos1 = p->pos + 1; \ + p->pos = pos1; \ + if (pos1 == p->posLimit) MatchFinder_CheckLimits(p); } #define MOVE_POS_RET MOVE_POS return distances; -MY_NO_INLINE +Z7_NO_INLINE static void MatchFinder_MovePos(CMatchFinder *p) { /* we go here at the end of stream data, when (avail < num_hash_bytes) @@ -1015,24 +1108,30 @@ static void MatchFinder_MovePos(CMatchFinder *p) if (p->btMode) p->sons[(p->cyclicBufferPos << p->btMode) + 1] = 0; // kEmptyHashValue */ - MOVE_POS; + MOVE_POS } #define GET_MATCHES_HEADER2(minLen, ret_op) \ - unsigned lenLimit; UInt32 hv; Byte *cur; UInt32 curMatch; \ - lenLimit = (unsigned)p->lenLimit; { if (lenLimit < minLen) { MatchFinder_MovePos(p); ret_op; }} \ + UInt32 hv; const Byte *cur; UInt32 curMatch; \ + UInt32 lenLimit = p->lenLimit; \ + if (lenLimit < minLen) { MatchFinder_MovePos(p); ret_op; } \ cur = p->buffer; #define GET_MATCHES_HEADER(minLen) GET_MATCHES_HEADER2(minLen, return distances) -#define SKIP_HEADER(minLen) do { GET_MATCHES_HEADER2(minLen, continue) +#define SKIP_HEADER(minLen) \ + do { GET_MATCHES_HEADER2(minLen, continue) -#define MF_PARAMS(p) lenLimit, curMatch, p->pos, p->buffer, p->son, p->cyclicBufferPos, p->cyclicBufferSize, p->cutValue +#define MF_PARAMS(p) lenLimit, curMatch, p->pos, p->buffer, p->son, \ + p->cyclicBufferPos, p->cyclicBufferSize, p->cutValue -#define SKIP_FOOTER SkipMatchesSpec(MF_PARAMS(p)); MOVE_POS; } while (--num); +#define SKIP_FOOTER \ + SkipMatchesSpec(MF_PARAMS(p)); \ + MOVE_POS \ + } while (--num); #define GET_MATCHES_FOOTER_BASE(_maxLen_, func) \ - distances = func(MF_PARAMS(p), \ - distances, (UInt32)_maxLen_); MOVE_POS_RET; + distances = func(MF_PARAMS(p), distances, (UInt32)_maxLen_); \ + MOVE_POS_RET #define GET_MATCHES_FOOTER_BT(_maxLen_) \ GET_MATCHES_FOOTER_BASE(_maxLen_, GetMatchesSpec1) @@ -1049,10 +1148,11 @@ static void MatchFinder_MovePos(CMatchFinder *p) for (; c != lim; c++) if (*(c + diff) != *c) break; \ maxLen = (unsigned)(c - cur); } -static UInt32* Bt2_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distances) +static UInt32* Bt2_MatchFinder_GetMatches(void *_p, UInt32 *distances) { + CMatchFinder *p = (CMatchFinder *)_p; GET_MATCHES_HEADER(2) - HASH2_CALC; + HASH2_CALC curMatch = p->hash[hv]; p->hash[hv] = p->pos; GET_MATCHES_FOOTER_BT(1) @@ -1061,7 +1161,7 @@ static UInt32* Bt2_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distances) UInt32* Bt3Zip_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distances) { GET_MATCHES_HEADER(3) - HASH_ZIP_CALC; + HASH_ZIP_CALC curMatch = p->hash[hv]; p->hash[hv] = p->pos; GET_MATCHES_FOOTER_BT(2) @@ -1074,15 +1174,16 @@ UInt32* Bt3Zip_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distances) mmm = pos; -static UInt32* Bt3_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distances) +static UInt32* Bt3_MatchFinder_GetMatches(void *_p, UInt32 *distances) { + CMatchFinder *p = (CMatchFinder *)_p; UInt32 mmm; UInt32 h2, d2, pos; unsigned maxLen; UInt32 *hash; GET_MATCHES_HEADER(3) - HASH3_CALC; + HASH3_CALC hash = p->hash; pos = p->pos; @@ -1107,7 +1208,7 @@ static UInt32* Bt3_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distances) if (maxLen == lenLimit) { SkipMatchesSpec(MF_PARAMS(p)); - MOVE_POS_RET; + MOVE_POS_RET } } @@ -1115,15 +1216,16 @@ static UInt32* Bt3_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distances) } -static UInt32* Bt4_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distances) +static UInt32* Bt4_MatchFinder_GetMatches(void *_p, UInt32 *distances) { + CMatchFinder *p = (CMatchFinder *)_p; UInt32 mmm; UInt32 h2, h3, d2, d3, pos; unsigned maxLen; UInt32 *hash; GET_MATCHES_HEADER(4) - HASH4_CALC; + HASH4_CALC hash = p->hash; pos = p->pos; @@ -1183,14 +1285,16 @@ static UInt32* Bt4_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distances) } -static UInt32* Bt5_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distances) +static UInt32* Bt5_MatchFinder_GetMatches(void *_p, UInt32 *distances) { + CMatchFinder *p = (CMatchFinder *)_p; UInt32 mmm; - UInt32 h2, h3, d2, d3, maxLen, pos; + UInt32 h2, h3, d2, d3, pos; + unsigned maxLen; UInt32 *hash; GET_MATCHES_HEADER(5) - HASH5_CALC; + HASH5_CALC hash = p->hash; pos = p->pos; @@ -1246,7 +1350,7 @@ static UInt32* Bt5_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distances) if (maxLen == lenLimit) { SkipMatchesSpec(MF_PARAMS(p)); - MOVE_POS_RET; + MOVE_POS_RET } break; } @@ -1255,15 +1359,16 @@ static UInt32* Bt5_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distances) } -static UInt32* Hc4_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distances) +static UInt32* Hc4_MatchFinder_GetMatches(void *_p, UInt32 *distances) { + CMatchFinder *p = (CMatchFinder *)_p; UInt32 mmm; UInt32 h2, h3, d2, d3, pos; unsigned maxLen; UInt32 *hash; GET_MATCHES_HEADER(4) - HASH4_CALC; + HASH4_CALC hash = p->hash; pos = p->pos; @@ -1314,23 +1419,25 @@ static UInt32* Hc4_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distances) if (maxLen == lenLimit) { p->son[p->cyclicBufferPos] = curMatch; - MOVE_POS_RET; + MOVE_POS_RET } break; } - GET_MATCHES_FOOTER_HC(maxLen); + GET_MATCHES_FOOTER_HC(maxLen) } -static UInt32 * Hc5_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distances) +static UInt32 * Hc5_MatchFinder_GetMatches(void *_p, UInt32 *distances) { + CMatchFinder *p = (CMatchFinder *)_p; UInt32 mmm; - UInt32 h2, h3, d2, d3, maxLen, pos; + UInt32 h2, h3, d2, d3, pos; + unsigned maxLen; UInt32 *hash; GET_MATCHES_HEADER(5) - HASH5_CALC; + HASH5_CALC hash = p->hash; pos = p->pos; @@ -1382,34 +1489,35 @@ static UInt32 * Hc5_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distances) if (*(cur - d2 + 3) != cur[3]) break; UPDATE_maxLen - distances[-2] = maxLen; + distances[-2] = (UInt32)maxLen; if (maxLen == lenLimit) { p->son[p->cyclicBufferPos] = curMatch; - MOVE_POS_RET; + MOVE_POS_RET } break; } - GET_MATCHES_FOOTER_HC(maxLen); + GET_MATCHES_FOOTER_HC(maxLen) } UInt32* Hc3Zip_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distances) { GET_MATCHES_HEADER(3) - HASH_ZIP_CALC; + HASH_ZIP_CALC curMatch = p->hash[hv]; p->hash[hv] = p->pos; GET_MATCHES_FOOTER_HC(2) } -static void Bt2_MatchFinder_Skip(CMatchFinder *p, UInt32 num) +static void Bt2_MatchFinder_Skip(void *_p, UInt32 num) { + CMatchFinder *p = (CMatchFinder *)_p; SKIP_HEADER(2) { - HASH2_CALC; + HASH2_CALC curMatch = p->hash[hv]; p->hash[hv] = p->pos; } @@ -1420,20 +1528,21 @@ void Bt3Zip_MatchFinder_Skip(CMatchFinder *p, UInt32 num) { SKIP_HEADER(3) { - HASH_ZIP_CALC; + HASH_ZIP_CALC curMatch = p->hash[hv]; p->hash[hv] = p->pos; } SKIP_FOOTER } -static void Bt3_MatchFinder_Skip(CMatchFinder *p, UInt32 num) +static void Bt3_MatchFinder_Skip(void *_p, UInt32 num) { + CMatchFinder *p = (CMatchFinder *)_p; SKIP_HEADER(3) { UInt32 h2; UInt32 *hash; - HASH3_CALC; + HASH3_CALC hash = p->hash; curMatch = (hash + kFix3HashSize)[hv]; hash[h2] = @@ -1442,13 +1551,14 @@ static void Bt3_MatchFinder_Skip(CMatchFinder *p, UInt32 num) SKIP_FOOTER } -static void Bt4_MatchFinder_Skip(CMatchFinder *p, UInt32 num) +static void Bt4_MatchFinder_Skip(void *_p, UInt32 num) { + CMatchFinder *p = (CMatchFinder *)_p; SKIP_HEADER(4) { UInt32 h2, h3; UInt32 *hash; - HASH4_CALC; + HASH4_CALC hash = p->hash; curMatch = (hash + kFix4HashSize)[hv]; hash [h2] = @@ -1458,13 +1568,14 @@ static void Bt4_MatchFinder_Skip(CMatchFinder *p, UInt32 num) SKIP_FOOTER } -static void Bt5_MatchFinder_Skip(CMatchFinder *p, UInt32 num) +static void Bt5_MatchFinder_Skip(void *_p, UInt32 num) { + CMatchFinder *p = (CMatchFinder *)_p; SKIP_HEADER(5) { UInt32 h2, h3; UInt32 *hash; - HASH5_CALC; + HASH5_CALC hash = p->hash; curMatch = (hash + kFix5HashSize)[hv]; hash [h2] = @@ -1478,7 +1589,7 @@ static void Bt5_MatchFinder_Skip(CMatchFinder *p, UInt32 num) #define HC_SKIP_HEADER(minLen) \ do { if (p->lenLimit < minLen) { MatchFinder_MovePos(p); num--; continue; } { \ - Byte *cur; \ + const Byte *cur; \ UInt32 *hash; \ UInt32 *son; \ UInt32 pos = p->pos; \ @@ -1505,12 +1616,13 @@ static void Bt5_MatchFinder_Skip(CMatchFinder *p, UInt32 num) }} while(num); \ -static void Hc4_MatchFinder_Skip(CMatchFinder *p, UInt32 num) +static void Hc4_MatchFinder_Skip(void *_p, UInt32 num) { + CMatchFinder *p = (CMatchFinder *)_p; HC_SKIP_HEADER(4) UInt32 h2, h3; - HASH4_CALC; + HASH4_CALC curMatch = (hash + kFix4HashSize)[hv]; hash [h2] = (hash + kFix3HashSize)[h3] = @@ -1520,8 +1632,9 @@ static void Hc4_MatchFinder_Skip(CMatchFinder *p, UInt32 num) } -static void Hc5_MatchFinder_Skip(CMatchFinder *p, UInt32 num) +static void Hc5_MatchFinder_Skip(void *_p, UInt32 num) { + CMatchFinder *p = (CMatchFinder *)_p; HC_SKIP_HEADER(5) UInt32 h2, h3; @@ -1540,7 +1653,7 @@ void Hc3Zip_MatchFinder_Skip(CMatchFinder *p, UInt32 num) { HC_SKIP_HEADER(3) - HASH_ZIP_CALC; + HASH_ZIP_CALC curMatch = hash[hv]; hash[hv] = pos; @@ -1550,57 +1663,57 @@ void Hc3Zip_MatchFinder_Skip(CMatchFinder *p, UInt32 num) void MatchFinder_CreateVTable(CMatchFinder *p, IMatchFinder2 *vTable) { - vTable->Init = (Mf_Init_Func)MatchFinder_Init; - vTable->GetNumAvailableBytes = (Mf_GetNumAvailableBytes_Func)MatchFinder_GetNumAvailableBytes; - vTable->GetPointerToCurrentPos = (Mf_GetPointerToCurrentPos_Func)MatchFinder_GetPointerToCurrentPos; + vTable->Init = MatchFinder_Init; + vTable->GetNumAvailableBytes = MatchFinder_GetNumAvailableBytes; + vTable->GetPointerToCurrentPos = MatchFinder_GetPointerToCurrentPos; if (!p->btMode) { if (p->numHashBytes <= 4) { - vTable->GetMatches = (Mf_GetMatches_Func)Hc4_MatchFinder_GetMatches; - vTable->Skip = (Mf_Skip_Func)Hc4_MatchFinder_Skip; + vTable->GetMatches = Hc4_MatchFinder_GetMatches; + vTable->Skip = Hc4_MatchFinder_Skip; } else { - vTable->GetMatches = (Mf_GetMatches_Func)Hc5_MatchFinder_GetMatches; - vTable->Skip = (Mf_Skip_Func)Hc5_MatchFinder_Skip; + vTable->GetMatches = Hc5_MatchFinder_GetMatches; + vTable->Skip = Hc5_MatchFinder_Skip; } } else if (p->numHashBytes == 2) { - vTable->GetMatches = (Mf_GetMatches_Func)Bt2_MatchFinder_GetMatches; - vTable->Skip = (Mf_Skip_Func)Bt2_MatchFinder_Skip; + vTable->GetMatches = Bt2_MatchFinder_GetMatches; + vTable->Skip = Bt2_MatchFinder_Skip; } else if (p->numHashBytes == 3) { - vTable->GetMatches = (Mf_GetMatches_Func)Bt3_MatchFinder_GetMatches; - vTable->Skip = (Mf_Skip_Func)Bt3_MatchFinder_Skip; + vTable->GetMatches = Bt3_MatchFinder_GetMatches; + vTable->Skip = Bt3_MatchFinder_Skip; } else if (p->numHashBytes == 4) { - vTable->GetMatches = (Mf_GetMatches_Func)Bt4_MatchFinder_GetMatches; - vTable->Skip = (Mf_Skip_Func)Bt4_MatchFinder_Skip; + vTable->GetMatches = Bt4_MatchFinder_GetMatches; + vTable->Skip = Bt4_MatchFinder_Skip; } else { - vTable->GetMatches = (Mf_GetMatches_Func)Bt5_MatchFinder_GetMatches; - vTable->Skip = (Mf_Skip_Func)Bt5_MatchFinder_Skip; + vTable->GetMatches = Bt5_MatchFinder_GetMatches; + vTable->Skip = Bt5_MatchFinder_Skip; } } -void LzFindPrepare() +void LzFindPrepare(void) { - #ifndef FORCE_SATUR_SUB_128 - #ifdef USE_SATUR_SUB_128 + #ifndef FORCE_LZFIND_SATUR_SUB_128 + #ifdef USE_LZFIND_SATUR_SUB_128 LZFIND_SATUR_SUB_CODE_FUNC f = NULL; #ifdef MY_CPU_ARM_OR_ARM64 { if (CPU_IsSupported_NEON()) { // #pragma message ("=== LzFind NEON") - _PRF(printf("\n=== LzFind NEON\n")); + PRF(printf("\n=== LzFind NEON\n")); f = LzFind_SaturSub_128; } // f = 0; // for debug @@ -1609,20 +1722,25 @@ void LzFindPrepare() if (CPU_IsSupported_SSE41()) { // #pragma message ("=== LzFind SSE41") - _PRF(printf("\n=== LzFind SSE41\n")); + PRF(printf("\n=== LzFind SSE41\n")); f = LzFind_SaturSub_128; - #ifdef USE_AVX2 + #ifdef USE_LZFIND_SATUR_SUB_256 if (CPU_IsSupported_AVX2()) { // #pragma message ("=== LzFind AVX2") - _PRF(printf("\n=== LzFind AVX2\n")); + PRF(printf("\n=== LzFind AVX2\n")); f = LzFind_SaturSub_256; } #endif } #endif // MY_CPU_ARM_OR_ARM64 g_LzFind_SaturSub = f; - #endif // USE_SATUR_SUB_128 - #endif // FORCE_SATUR_SUB_128 + #endif // USE_LZFIND_SATUR_SUB_128 + #endif // FORCE_LZFIND_SATUR_SUB_128 } + + +#undef MOVE_POS +#undef MOVE_POS_RET +#undef PRF diff --git a/deps/LZMA-SDK/C/LzFind.h b/deps/LZMA-SDK/C/LzFind.h index eea873ff6..67e8a6e02 100644 --- a/deps/LZMA-SDK/C/LzFind.h +++ b/deps/LZMA-SDK/C/LzFind.h @@ -1,8 +1,8 @@ /* LzFind.h -- Match finder for LZ algorithms -2021-07-13 : Igor Pavlov : Public domain */ +2024-01-22 : Igor Pavlov : Public domain */ -#ifndef __LZ_FIND_H -#define __LZ_FIND_H +#ifndef ZIP7_INC_LZ_FIND_H +#define ZIP7_INC_LZ_FIND_H #include "7zTypes.h" @@ -10,9 +10,9 @@ EXTERN_C_BEGIN typedef UInt32 CLzRef; -typedef struct _CMatchFinder +typedef struct { - Byte *buffer; + const Byte *buffer; UInt32 pos; UInt32 posLimit; UInt32 streamPos; /* wrap over Zero is allowed (streamPos < pos). Use (UInt32)(streamPos - pos) */ @@ -32,8 +32,8 @@ typedef struct _CMatchFinder UInt32 hashMask; UInt32 cutValue; - Byte *bufferBase; - ISeqInStream *stream; + Byte *bufBase; + ISeqInStreamPtr stream; UInt32 blockSize; UInt32 keepSizeBefore; @@ -43,7 +43,9 @@ typedef struct _CMatchFinder size_t directInputRem; UInt32 historySize; UInt32 fixedHashSize; - UInt32 hashSizeSum; + Byte numHashBytes_Min; + Byte numHashOutBits; + Byte _pad2_[2]; SRes result; UInt32 crc[256]; size_t numRefs; @@ -69,24 +71,45 @@ void MatchFinder_ReadIfRequired(CMatchFinder *p); void MatchFinder_Construct(CMatchFinder *p); -/* Conditions: - historySize <= 3 GB - keepAddBufferBefore + matchMaxLen + keepAddBufferAfter < 511MB +/* (directInput = 0) is default value. + It's required to provide correct (directInput) value + before calling MatchFinder_Create(). + You can set (directInput) by any of the following calls: + - MatchFinder_SET_DIRECT_INPUT_BUF() + - MatchFinder_SET_STREAM() + - MatchFinder_SET_STREAM_MODE() */ + +#define MatchFinder_SET_DIRECT_INPUT_BUF(p, _src_, _srcLen_) { \ + (p)->stream = NULL; \ + (p)->directInput = 1; \ + (p)->buffer = (_src_); \ + (p)->directInputRem = (_srcLen_); } + +/* +#define MatchFinder_SET_STREAM_MODE(p) { \ + (p)->directInput = 0; } +*/ + +#define MatchFinder_SET_STREAM(p, _stream_) { \ + (p)->stream = _stream_; \ + (p)->directInput = 0; } + + int MatchFinder_Create(CMatchFinder *p, UInt32 historySize, UInt32 keepAddBufferBefore, UInt32 matchMaxLen, UInt32 keepAddBufferAfter, ISzAllocPtr alloc); void MatchFinder_Free(CMatchFinder *p, ISzAllocPtr alloc); void MatchFinder_Normalize3(UInt32 subValue, CLzRef *items, size_t numItems); -// void MatchFinder_ReduceOffsets(CMatchFinder *p, UInt32 subValue); /* -#define Inline_MatchFinder_InitPos(p, val) \ +#define MatchFinder_INIT_POS(p, val) \ (p)->pos = (val); \ (p)->streamPos = (val); */ -#define Inline_MatchFinder_ReduceOffsets(p, subValue) \ +// void MatchFinder_ReduceOffsets(CMatchFinder *p, UInt32 subValue); +#define MatchFinder_REDUCE_OFFSETS(p, subValue) \ (p)->pos -= (subValue); \ (p)->streamPos -= (subValue); @@ -107,7 +130,7 @@ typedef const Byte * (*Mf_GetPointerToCurrentPos_Func)(void *object); typedef UInt32 * (*Mf_GetMatches_Func)(void *object, UInt32 *distances); typedef void (*Mf_Skip_Func)(void *object, UInt32); -typedef struct _IMatchFinder +typedef struct { Mf_Init_Func Init; Mf_GetNumAvailableBytes_Func GetNumAvailableBytes; @@ -121,7 +144,8 @@ void MatchFinder_CreateVTable(CMatchFinder *p, IMatchFinder2 *vTable); void MatchFinder_Init_LowHash(CMatchFinder *p); void MatchFinder_Init_HighHash(CMatchFinder *p); void MatchFinder_Init_4(CMatchFinder *p); -void MatchFinder_Init(CMatchFinder *p); +// void MatchFinder_Init(CMatchFinder *p); +void MatchFinder_Init(void *p); UInt32* Bt3Zip_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distances); UInt32* Hc3Zip_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distances); diff --git a/deps/LZMA-SDK/C/LzFindMt.c b/deps/LZMA-SDK/C/LzFindMt.c index 4e67fc3f2..ac9d59d0f 100644 --- a/deps/LZMA-SDK/C/LzFindMt.c +++ b/deps/LZMA-SDK/C/LzFindMt.c @@ -1,5 +1,5 @@ /* LzFindMt.c -- multithreaded Match finder for LZ algorithms -2021-12-21 : Igor Pavlov : Public domain */ +2024-01-22 : Igor Pavlov : Public domain */ #include "Precomp.h" @@ -69,7 +69,7 @@ extern UInt64 g_NumIters_Bytes; UInt32 temp = p->crc[cur[0]] ^ cur[1]; \ h3 = (temp ^ ((UInt32)cur[2] << 8)) & (kHash3Size - 1); } -#define __MT_HASH4_CALC { \ +#define MT_HASH4_CALC { \ UInt32 temp = p->crc[cur[0]] ^ cur[1]; \ h2 = temp & (kHash2Size - 1); \ temp ^= ((UInt32)cur[2] << 8); \ @@ -79,14 +79,14 @@ extern UInt64 g_NumIters_Bytes; */ -MY_NO_INLINE +Z7_NO_INLINE static void MtSync_Construct(CMtSync *p) { p->affinity = 0; p->wasCreated = False; p->csWasInitialized = False; p->csWasEntered = False; - Thread_Construct(&p->thread); + Thread_CONSTRUCT(&p->thread) Event_Construct(&p->canStart); Event_Construct(&p->wasStopped); Semaphore_Construct(&p->freeSemaphore); @@ -94,7 +94,7 @@ static void MtSync_Construct(CMtSync *p) } -#define DEBUG_BUFFER_LOCK // define it to debug lock state +// #define DEBUG_BUFFER_LOCK // define it to debug lock state #ifdef DEBUG_BUFFER_LOCK #include @@ -116,7 +116,7 @@ static void MtSync_Construct(CMtSync *p) (p)->csWasEntered = False; } -MY_NO_INLINE +Z7_NO_INLINE static UInt32 MtSync_GetNextBlock(CMtSync *p) { UInt32 numBlocks = 0; @@ -140,14 +140,14 @@ static UInt32 MtSync_GetNextBlock(CMtSync *p) // buffer is UNLOCKED here Semaphore_Wait(&p->filledSemaphore); - LOCK_BUFFER(p); + LOCK_BUFFER(p) return numBlocks; } /* if Writing (Processing) thread was started, we must call MtSync_StopWriting() */ -MY_NO_INLINE +Z7_NO_INLINE static void MtSync_StopWriting(CMtSync *p) { if (!Thread_WasCreated(&p->thread) || p->needStart) @@ -185,7 +185,7 @@ static void MtSync_StopWriting(CMtSync *p) } -MY_NO_INLINE +Z7_NO_INLINE static void MtSync_Destruct(CMtSync *p) { PRF(printf("\nMtSync_Destruct %p\n", p)); @@ -220,11 +220,11 @@ static void MtSync_Destruct(CMtSync *p) // #define RINOK_THREAD(x) { if ((x) != 0) return SZ_ERROR_THREAD; } // we want to get real system error codes here instead of SZ_ERROR_THREAD -#define RINOK_THREAD(x) RINOK(x) +#define RINOK_THREAD(x) RINOK_WRes(x) // call it before each new file (when new starting is required): -MY_NO_INLINE +Z7_NO_INLINE static SRes MtSync_Init(CMtSync *p, UInt32 numBlocks) { WRes wres; @@ -245,12 +245,12 @@ static WRes MtSync_Create_WRes(CMtSync *p, THREAD_FUNC_TYPE startAddress, void * if (p->wasCreated) return SZ_OK; - RINOK_THREAD(CriticalSection_Init(&p->cs)); + RINOK_THREAD(CriticalSection_Init(&p->cs)) p->csWasInitialized = True; p->csWasEntered = False; - RINOK_THREAD(AutoResetEvent_CreateNotSignaled(&p->canStart)); - RINOK_THREAD(AutoResetEvent_CreateNotSignaled(&p->wasStopped)); + RINOK_THREAD(AutoResetEvent_CreateNotSignaled(&p->canStart)) + RINOK_THREAD(AutoResetEvent_CreateNotSignaled(&p->wasStopped)) p->needStart = True; p->exit = True; /* p->exit is unused before (canStart) Event. @@ -264,13 +264,13 @@ static WRes MtSync_Create_WRes(CMtSync *p, THREAD_FUNC_TYPE startAddress, void * else wres = Thread_Create(&p->thread, startAddress, obj); - RINOK_THREAD(wres); + RINOK_THREAD(wres) p->wasCreated = True; return SZ_OK; } -MY_NO_INLINE +Z7_NO_INLINE static SRes MtSync_Create(CMtSync *p, THREAD_FUNC_TYPE startAddress, void *obj) { const WRes wres = MtSync_Create_WRes(p, startAddress, obj); @@ -519,7 +519,7 @@ static void HashThreadFunc(CMatchFinderMt *mt) if (mf->pos > (UInt32)kMtMaxValForNormalize - num) { const UInt32 subValue = (mf->pos - mf->historySize - 1); // & ~(UInt32)(kNormalizeAlign - 1); - Inline_MatchFinder_ReduceOffsets(mf, subValue); + MatchFinder_REDUCE_OFFSETS(mf, subValue) MatchFinder_Normalize3(subValue, mf->hash + mf->fixedHashSize, (size_t)mf->hashMask + 1); } @@ -560,7 +560,7 @@ static void HashThreadFunc(CMatchFinderMt *mt) */ -UInt32 * MY_FAST_CALL GetMatchesSpecN_2(const Byte *lenLimit, size_t pos, const Byte *cur, CLzRef *son, +UInt32 * Z7_FASTCALL GetMatchesSpecN_2(const Byte *lenLimit, size_t pos, const Byte *cur, CLzRef *son, UInt32 _cutValue, UInt32 *d, size_t _maxLen, const UInt32 *hash, const UInt32 *limit, const UInt32 *size, size_t _cyclicBufferPos, UInt32 _cyclicBufferSize, UInt32 *posRes); @@ -749,7 +749,7 @@ static void BtFillBlock(CMatchFinderMt *p, UInt32 globalBlockIndex) } -MY_NO_INLINE +Z7_NO_INLINE static void BtThreadFunc(CMatchFinderMt *mt) { CMtSync *p = &mt->btSync; @@ -864,21 +864,22 @@ SRes MatchFinderMt_Create(CMatchFinderMt *p, UInt32 historySize, UInt32 keepAddB if (!MatchFinder_Create(mf, historySize, keepAddBufferBefore, matchMaxLen, keepAddBufferAfter, alloc)) return SZ_ERROR_MEM; - RINOK(MtSync_Create(&p->hashSync, HashThreadFunc2, p)); - RINOK(MtSync_Create(&p->btSync, BtThreadFunc2, p)); + RINOK(MtSync_Create(&p->hashSync, HashThreadFunc2, p)) + RINOK(MtSync_Create(&p->btSync, BtThreadFunc2, p)) return SZ_OK; } SRes MatchFinderMt_InitMt(CMatchFinderMt *p) { - RINOK(MtSync_Init(&p->hashSync, kMtHashNumBlocks)); + RINOK(MtSync_Init(&p->hashSync, kMtHashNumBlocks)) return MtSync_Init(&p->btSync, kMtBtNumBlocks); } -static void MatchFinderMt_Init(CMatchFinderMt *p) +static void MatchFinderMt_Init(void *_p) { + CMatchFinderMt *p = (CMatchFinderMt *)_p; CMatchFinder *mf = MF(p); p->btBufPos = @@ -941,7 +942,7 @@ void MatchFinderMt_ReleaseStream(CMatchFinderMt *p) } -MY_NO_INLINE +Z7_NO_INLINE static UInt32 MatchFinderMt_GetNextBlock_Bt(CMatchFinderMt *p) { if (p->failure_LZ_BT) @@ -981,8 +982,9 @@ static UInt32 MatchFinderMt_GetNextBlock_Bt(CMatchFinderMt *p) -static const Byte * MatchFinderMt_GetPointerToCurrentPos(CMatchFinderMt *p) +static const Byte * MatchFinderMt_GetPointerToCurrentPos(void *_p) { + CMatchFinderMt *p = (CMatchFinderMt *)_p; return p->pointerToCurPos; } @@ -990,8 +992,9 @@ static const Byte * MatchFinderMt_GetPointerToCurrentPos(CMatchFinderMt *p) #define GET_NEXT_BLOCK_IF_REQUIRED if (p->btBufPos == p->btBufPosLimit) MatchFinderMt_GetNextBlock_Bt(p); -static UInt32 MatchFinderMt_GetNumAvailableBytes(CMatchFinderMt *p) +static UInt32 MatchFinderMt_GetNumAvailableBytes(void *_p) { + CMatchFinderMt *p = (CMatchFinderMt *)_p; if (p->btBufPos != p->btBufPosLimit) return p->btNumAvailBytes; return MatchFinderMt_GetNextBlock_Bt(p); @@ -1163,7 +1166,7 @@ UInt32* MatchFinderMt_GetMatches_Bt4(CMatchFinderMt *p, UInt32 *d) */ -static UInt32 *MixMatches4(CMatchFinderMt *p, UInt32 matchMinPos, UInt32 *d) +static UInt32 * MixMatches4(CMatchFinderMt *p, UInt32 matchMinPos, UInt32 *d) { UInt32 h2, h3, /* h4, */ c2, c3 /* , c4 */; UInt32 *hash = p->hash; @@ -1179,9 +1182,8 @@ static UInt32 *MixMatches4(CMatchFinderMt *p, UInt32 matchMinPos, UInt32 *d) (hash + kFix3HashSize)[h3] = m; // (hash + kFix4HashSize)[h4] = m; - #define _USE_H2 - - #ifdef _USE_H2 + // #define BT5_USE_H2 + // #ifdef BT5_USE_H2 if (c2 >= matchMinPos && cur[(ptrdiff_t)c2 - (ptrdiff_t)m] == cur[0]) { d[1] = m - c2 - 1; @@ -1197,8 +1199,8 @@ static UInt32 *MixMatches4(CMatchFinderMt *p, UInt32 matchMinPos, UInt32 *d) } d[0] = 3; d += 2; - - #ifdef _USE_H4 + + #ifdef BT5_USE_H4 if (c4 >= matchMinPos) if ( cur[(ptrdiff_t)c4 - (ptrdiff_t)m] == cur[0] && @@ -1214,7 +1216,7 @@ static UInt32 *MixMatches4(CMatchFinderMt *p, UInt32 matchMinPos, UInt32 *d) d[0] = 2; d += 2; } - #endif + // #endif if (c3 >= matchMinPos && cur[(ptrdiff_t)c3 - (ptrdiff_t)m] == cur[0]) { @@ -1228,7 +1230,7 @@ static UInt32 *MixMatches4(CMatchFinderMt *p, UInt32 matchMinPos, UInt32 *d) d += 2; } - #ifdef _USE_H4 + #ifdef BT5_USE_H4 if (c4 >= matchMinPos) if ( cur[(ptrdiff_t)c4 - (ptrdiff_t)m] == cur[0] && @@ -1244,8 +1246,9 @@ static UInt32 *MixMatches4(CMatchFinderMt *p, UInt32 matchMinPos, UInt32 *d) } -static UInt32* MatchFinderMt2_GetMatches(CMatchFinderMt *p, UInt32 *d) +static UInt32 * MatchFinderMt2_GetMatches(void *_p, UInt32 *d) { + CMatchFinderMt *p = (CMatchFinderMt *)_p; const UInt32 *bt = p->btBufPos; const UInt32 len = *bt++; const UInt32 *btLim = bt + len; @@ -1268,8 +1271,9 @@ static UInt32* MatchFinderMt2_GetMatches(CMatchFinderMt *p, UInt32 *d) -static UInt32* MatchFinderMt_GetMatches(CMatchFinderMt *p, UInt32 *d) +static UInt32 * MatchFinderMt_GetMatches(void *_p, UInt32 *d) { + CMatchFinderMt *p = (CMatchFinderMt *)_p; const UInt32 *bt = p->btBufPos; UInt32 len = *bt++; const UInt32 avail = p->btNumAvailBytes - 1; @@ -1316,14 +1320,16 @@ static UInt32* MatchFinderMt_GetMatches(CMatchFinderMt *p, UInt32 *d) #define SKIP_HEADER_MT(n) SKIP_HEADER2_MT if (p->btNumAvailBytes-- >= (n)) { const Byte *cur = p->pointerToCurPos; UInt32 *hash = p->hash; #define SKIP_FOOTER_MT } INCREASE_LZ_POS p->btBufPos += (size_t)*p->btBufPos + 1; } while (--num != 0); -static void MatchFinderMt0_Skip(CMatchFinderMt *p, UInt32 num) +static void MatchFinderMt0_Skip(void *_p, UInt32 num) { + CMatchFinderMt *p = (CMatchFinderMt *)_p; SKIP_HEADER2_MT { p->btNumAvailBytes--; SKIP_FOOTER_MT } -static void MatchFinderMt2_Skip(CMatchFinderMt *p, UInt32 num) +static void MatchFinderMt2_Skip(void *_p, UInt32 num) { + CMatchFinderMt *p = (CMatchFinderMt *)_p; SKIP_HEADER_MT(2) UInt32 h2; MT_HASH2_CALC @@ -1331,8 +1337,9 @@ static void MatchFinderMt2_Skip(CMatchFinderMt *p, UInt32 num) SKIP_FOOTER_MT } -static void MatchFinderMt3_Skip(CMatchFinderMt *p, UInt32 num) +static void MatchFinderMt3_Skip(void *_p, UInt32 num) { + CMatchFinderMt *p = (CMatchFinderMt *)_p; SKIP_HEADER_MT(3) UInt32 h2, h3; MT_HASH3_CALC @@ -1362,39 +1369,46 @@ static void MatchFinderMt4_Skip(CMatchFinderMt *p, UInt32 num) void MatchFinderMt_CreateVTable(CMatchFinderMt *p, IMatchFinder2 *vTable) { - vTable->Init = (Mf_Init_Func)MatchFinderMt_Init; - vTable->GetNumAvailableBytes = (Mf_GetNumAvailableBytes_Func)MatchFinderMt_GetNumAvailableBytes; - vTable->GetPointerToCurrentPos = (Mf_GetPointerToCurrentPos_Func)MatchFinderMt_GetPointerToCurrentPos; - vTable->GetMatches = (Mf_GetMatches_Func)MatchFinderMt_GetMatches; + vTable->Init = MatchFinderMt_Init; + vTable->GetNumAvailableBytes = MatchFinderMt_GetNumAvailableBytes; + vTable->GetPointerToCurrentPos = MatchFinderMt_GetPointerToCurrentPos; + vTable->GetMatches = MatchFinderMt_GetMatches; switch (MF(p)->numHashBytes) { case 2: p->GetHeadsFunc = GetHeads2; - p->MixMatchesFunc = (Mf_Mix_Matches)NULL; - vTable->Skip = (Mf_Skip_Func)MatchFinderMt0_Skip; - vTable->GetMatches = (Mf_GetMatches_Func)MatchFinderMt2_GetMatches; + p->MixMatchesFunc = NULL; + vTable->Skip = MatchFinderMt0_Skip; + vTable->GetMatches = MatchFinderMt2_GetMatches; break; case 3: p->GetHeadsFunc = MF(p)->bigHash ? GetHeads3b : GetHeads3; - p->MixMatchesFunc = (Mf_Mix_Matches)MixMatches2; - vTable->Skip = (Mf_Skip_Func)MatchFinderMt2_Skip; + p->MixMatchesFunc = MixMatches2; + vTable->Skip = MatchFinderMt2_Skip; break; case 4: p->GetHeadsFunc = MF(p)->bigHash ? GetHeads4b : GetHeads4; // it's fast inline version of GetMatches() - // vTable->GetMatches = (Mf_GetMatches_Func)MatchFinderMt_GetMatches_Bt4; + // vTable->GetMatches = MatchFinderMt_GetMatches_Bt4; - p->MixMatchesFunc = (Mf_Mix_Matches)MixMatches3; - vTable->Skip = (Mf_Skip_Func)MatchFinderMt3_Skip; + p->MixMatchesFunc = MixMatches3; + vTable->Skip = MatchFinderMt3_Skip; break; default: p->GetHeadsFunc = MF(p)->bigHash ? GetHeads5b : GetHeads5; - p->MixMatchesFunc = (Mf_Mix_Matches)MixMatches4; + p->MixMatchesFunc = MixMatches4; vTable->Skip = - (Mf_Skip_Func)MatchFinderMt3_Skip; - // (Mf_Skip_Func)MatchFinderMt4_Skip; + MatchFinderMt3_Skip; + // MatchFinderMt4_Skip; break; } } + +#undef RINOK_THREAD +#undef PRF +#undef MF +#undef GetUi24hi_from32 +#undef LOCK_BUFFER +#undef UNLOCK_BUFFER diff --git a/deps/LZMA-SDK/C/LzFindMt.h b/deps/LZMA-SDK/C/LzFindMt.h index 660b7244d..fcb479da9 100644 --- a/deps/LZMA-SDK/C/LzFindMt.h +++ b/deps/LZMA-SDK/C/LzFindMt.h @@ -1,15 +1,15 @@ /* LzFindMt.h -- multithreaded Match finder for LZ algorithms -2021-07-12 : Igor Pavlov : Public domain */ +2024-01-22 : Igor Pavlov : Public domain */ -#ifndef __LZ_FIND_MT_H -#define __LZ_FIND_MT_H +#ifndef ZIP7_INC_LZ_FIND_MT_H +#define ZIP7_INC_LZ_FIND_MT_H #include "LzFind.h" #include "Threads.h" EXTERN_C_BEGIN -typedef struct _CMtSync +typedef struct { UInt32 numProcessedBlocks; CThread thread; @@ -31,7 +31,10 @@ typedef struct _CMtSync // UInt32 numBlocks_Sent; } CMtSync; -typedef UInt32 * (*Mf_Mix_Matches)(void *p, UInt32 matchMinPos, UInt32 *distances); + +struct CMatchFinderMt_; + +typedef UInt32 * (*Mf_Mix_Matches)(struct CMatchFinderMt_ *p, UInt32 matchMinPos, UInt32 *distances); /* kMtCacheLineDummy must be >= size_of_CPU_cache_line */ #define kMtCacheLineDummy 128 @@ -39,7 +42,7 @@ typedef UInt32 * (*Mf_Mix_Matches)(void *p, UInt32 matchMinPos, UInt32 *distance typedef void (*Mf_GetHeads)(const Byte *buffer, UInt32 pos, UInt32 *hash, UInt32 hashMask, UInt32 *heads, UInt32 numHeads, const UInt32 *crc); -typedef struct _CMatchFinderMt +typedef struct CMatchFinderMt_ { /* LZ */ const Byte *pointerToCurPos; diff --git a/deps/LZMA-SDK/C/LzFindOpt.c b/deps/LZMA-SDK/C/LzFindOpt.c index 8ff006e07..85bdc136d 100644 --- a/deps/LZMA-SDK/C/LzFindOpt.c +++ b/deps/LZMA-SDK/C/LzFindOpt.c @@ -1,5 +1,5 @@ /* LzFindOpt.c -- multithreaded Match finder for LZ algorithms -2021-07-13 : Igor Pavlov : Public domain */ +2023-04-02 : Igor Pavlov : Public domain */ #include "Precomp.h" @@ -41,8 +41,8 @@ UInt64 g_NumIters_Bytes; // #define CYC_TO_POS_OFFSET 1 // for debug /* -MY_NO_INLINE -UInt32 * MY_FAST_CALL GetMatchesSpecN_1(const Byte *lenLimit, size_t pos, const Byte *cur, CLzRef *son, +Z7_NO_INLINE +UInt32 * Z7_FASTCALL GetMatchesSpecN_1(const Byte *lenLimit, size_t pos, const Byte *cur, CLzRef *son, UInt32 _cutValue, UInt32 *d, size_t _maxLen, const UInt32 *hash, const UInt32 *limit, const UInt32 *size, UInt32 *posRes) { do @@ -214,13 +214,13 @@ else to eliminate "movsx" BUG in old MSVC x64 compiler. */ -UInt32 * MY_FAST_CALL GetMatchesSpecN_2(const Byte *lenLimit, size_t pos, const Byte *cur, CLzRef *son, +UInt32 * Z7_FASTCALL GetMatchesSpecN_2(const Byte *lenLimit, size_t pos, const Byte *cur, CLzRef *son, UInt32 _cutValue, UInt32 *d, size_t _maxLen, const UInt32 *hash, const UInt32 *limit, const UInt32 *size, size_t _cyclicBufferPos, UInt32 _cyclicBufferSize, UInt32 *posRes); -MY_NO_INLINE -UInt32 * MY_FAST_CALL GetMatchesSpecN_2(const Byte *lenLimit, size_t pos, const Byte *cur, CLzRef *son, +Z7_NO_INLINE +UInt32 * Z7_FASTCALL GetMatchesSpecN_2(const Byte *lenLimit, size_t pos, const Byte *cur, CLzRef *son, UInt32 _cutValue, UInt32 *d, size_t _maxLen, const UInt32 *hash, const UInt32 *limit, const UInt32 *size, size_t _cyclicBufferPos, UInt32 _cyclicBufferSize, UInt32 *posRes) @@ -404,7 +404,7 @@ else /* typedef UInt32 uint32plus; // size_t -UInt32 * MY_FAST_CALL GetMatchesSpecN_3(uint32plus lenLimit, size_t pos, const Byte *cur, CLzRef *son, +UInt32 * Z7_FASTCALL GetMatchesSpecN_3(uint32plus lenLimit, size_t pos, const Byte *cur, CLzRef *son, UInt32 _cutValue, UInt32 *d, uint32plus _maxLen, const UInt32 *hash, const UInt32 *limit, const UInt32 *size, size_t _cyclicBufferPos, UInt32 _cyclicBufferSize, UInt32 *posRes) diff --git a/deps/LZMA-SDK/C/LzHash.h b/deps/LZMA-SDK/C/LzHash.h index 77b898cfa..2b6290b64 100644 --- a/deps/LZMA-SDK/C/LzHash.h +++ b/deps/LZMA-SDK/C/LzHash.h @@ -1,8 +1,8 @@ -/* LzHash.h -- HASH functions for LZ algorithms -2019-10-30 : Igor Pavlov : Public domain */ +/* LzHash.h -- HASH constants for LZ algorithms +2023-03-05 : Igor Pavlov : Public domain */ -#ifndef __LZ_HASH_H -#define __LZ_HASH_H +#ifndef ZIP7_INC_LZ_HASH_H +#define ZIP7_INC_LZ_HASH_H /* (kHash2Size >= (1 << 8)) : Required diff --git a/deps/LZMA-SDK/C/Lzma2Dec.c b/deps/LZMA-SDK/C/Lzma2Dec.c index ac970a843..8bf54e499 100644 --- a/deps/LZMA-SDK/C/Lzma2Dec.c +++ b/deps/LZMA-SDK/C/Lzma2Dec.c @@ -1,5 +1,5 @@ /* Lzma2Dec.c -- LZMA2 Decoder -2021-02-09 : Igor Pavlov : Public domain */ +2024-03-01 : Igor Pavlov : Public domain */ /* #define SHOW_DEBUG_INFO */ @@ -71,14 +71,14 @@ static SRes Lzma2Dec_GetOldProps(Byte prop, Byte *props) SRes Lzma2Dec_AllocateProbs(CLzma2Dec *p, Byte prop, ISzAllocPtr alloc) { Byte props[LZMA_PROPS_SIZE]; - RINOK(Lzma2Dec_GetOldProps(prop, props)); + RINOK(Lzma2Dec_GetOldProps(prop, props)) return LzmaDec_AllocateProbs(&p->decoder, props, LZMA_PROPS_SIZE, alloc); } SRes Lzma2Dec_Allocate(CLzma2Dec *p, Byte prop, ISzAllocPtr alloc) { Byte props[LZMA_PROPS_SIZE]; - RINOK(Lzma2Dec_GetOldProps(prop, props)); + RINOK(Lzma2Dec_GetOldProps(prop, props)) return LzmaDec_Allocate(&p->decoder, props, LZMA_PROPS_SIZE, alloc); } @@ -157,8 +157,10 @@ static unsigned Lzma2Dec_UpdateState(CLzma2Dec *p, Byte b) p->decoder.prop.lp = (Byte)lp; return LZMA2_STATE_DATA; } + + default: + return LZMA2_STATE_ERROR; } - return LZMA2_STATE_ERROR; } static void LzmaDec_UpdateWithUncompressed(CLzmaDec *p, const Byte *src, SizeT size) @@ -474,8 +476,8 @@ SRes Lzma2Decode(Byte *dest, SizeT *destLen, const Byte *src, SizeT *srcLen, SizeT outSize = *destLen, inSize = *srcLen; *destLen = *srcLen = 0; *status = LZMA_STATUS_NOT_SPECIFIED; - Lzma2Dec_Construct(&p); - RINOK(Lzma2Dec_AllocateProbs(&p, prop, alloc)); + Lzma2Dec_CONSTRUCT(&p) + RINOK(Lzma2Dec_AllocateProbs(&p, prop, alloc)) p.decoder.dic = dest; p.decoder.dicBufSize = outSize; Lzma2Dec_Init(&p); @@ -487,3 +489,5 @@ SRes Lzma2Decode(Byte *dest, SizeT *destLen, const Byte *src, SizeT *srcLen, Lzma2Dec_FreeProbs(&p, alloc); return res; } + +#undef PRF diff --git a/deps/LZMA-SDK/C/Lzma2Dec.h b/deps/LZMA-SDK/C/Lzma2Dec.h index b8ddeac89..1f5233a72 100644 --- a/deps/LZMA-SDK/C/Lzma2Dec.h +++ b/deps/LZMA-SDK/C/Lzma2Dec.h @@ -1,8 +1,8 @@ /* Lzma2Dec.h -- LZMA2 Decoder -2018-02-19 : Igor Pavlov : Public domain */ +2023-03-03 : Igor Pavlov : Public domain */ -#ifndef __LZMA2_DEC_H -#define __LZMA2_DEC_H +#ifndef ZIP7_INC_LZMA2_DEC_H +#define ZIP7_INC_LZMA2_DEC_H #include "LzmaDec.h" @@ -22,9 +22,10 @@ typedef struct CLzmaDec decoder; } CLzma2Dec; -#define Lzma2Dec_Construct(p) LzmaDec_Construct(&(p)->decoder) -#define Lzma2Dec_FreeProbs(p, alloc) LzmaDec_FreeProbs(&(p)->decoder, alloc) -#define Lzma2Dec_Free(p, alloc) LzmaDec_Free(&(p)->decoder, alloc) +#define Lzma2Dec_CONSTRUCT(p) LzmaDec_CONSTRUCT(&(p)->decoder) +#define Lzma2Dec_Construct(p) Lzma2Dec_CONSTRUCT(p) +#define Lzma2Dec_FreeProbs(p, alloc) LzmaDec_FreeProbs(&(p)->decoder, alloc) +#define Lzma2Dec_Free(p, alloc) LzmaDec_Free(&(p)->decoder, alloc) SRes Lzma2Dec_AllocateProbs(CLzma2Dec *p, Byte prop, ISzAllocPtr alloc); SRes Lzma2Dec_Allocate(CLzma2Dec *p, Byte prop, ISzAllocPtr alloc); @@ -90,7 +91,7 @@ Lzma2Dec_GetUnpackExtra() returns the value that shows at current input positon. */ -#define Lzma2Dec_GetUnpackExtra(p) ((p)->isExtraMode ? (p)->unpackSize : 0); +#define Lzma2Dec_GetUnpackExtra(p) ((p)->isExtraMode ? (p)->unpackSize : 0) /* ---------- One Call Interface ---------- */ diff --git a/deps/LZMA-SDK/C/Lzma2DecMt.c b/deps/LZMA-SDK/C/Lzma2DecMt.c index 9f1dc52ba..4bc4ddeb5 100644 --- a/deps/LZMA-SDK/C/Lzma2DecMt.c +++ b/deps/LZMA-SDK/C/Lzma2DecMt.c @@ -1,44 +1,44 @@ /* Lzma2DecMt.c -- LZMA2 Decoder Multi-thread -2021-04-01 : Igor Pavlov : Public domain */ +2023-04-13 : Igor Pavlov : Public domain */ #include "Precomp.h" // #define SHOW_DEBUG_INFO - -// #define _7ZIP_ST +// #define Z7_ST #ifdef SHOW_DEBUG_INFO #include #endif -#ifndef _7ZIP_ST -#ifdef SHOW_DEBUG_INFO -#define PRF(x) x -#else -#define PRF(x) -#endif -#define PRF_STR(s) PRF(printf("\n" s "\n")) -#define PRF_STR_INT_2(s, d1, d2) PRF(printf("\n" s " %d %d\n", (unsigned)d1, (unsigned)d2)) -#endif - #include "Alloc.h" #include "Lzma2Dec.h" #include "Lzma2DecMt.h" -#ifndef _7ZIP_ST +#ifndef Z7_ST #include "MtDec.h" #define LZMA2DECMT_OUT_BLOCK_MAX_DEFAULT (1 << 28) #endif +#ifndef Z7_ST +#ifdef SHOW_DEBUG_INFO +#define PRF(x) x +#else +#define PRF(x) +#endif +#define PRF_STR(s) PRF(printf("\n" s "\n");) +#define PRF_STR_INT_2(s, d1, d2) PRF(printf("\n" s " %d %d\n", (unsigned)d1, (unsigned)d2);) +#endif + + void Lzma2DecMtProps_Init(CLzma2DecMtProps *p) { p->inBufSize_ST = 1 << 20; p->outStep_ST = 1 << 20; - #ifndef _7ZIP_ST + #ifndef Z7_ST p->numThreads = 1; p->inBufSize_MT = 1 << 18; p->outBlockMax = LZMA2DECMT_OUT_BLOCK_MAX_DEFAULT; @@ -48,7 +48,7 @@ void Lzma2DecMtProps_Init(CLzma2DecMtProps *p) -#ifndef _7ZIP_ST +#ifndef Z7_ST /* ---------- CLzma2DecMtThread ---------- */ @@ -81,7 +81,7 @@ typedef struct /* ---------- CLzma2DecMt ---------- */ -typedef struct +struct CLzma2DecMt { // ISzAllocPtr alloc; ISzAllocPtr allocMid; @@ -90,9 +90,9 @@ typedef struct CLzma2DecMtProps props; Byte prop; - ISeqInStream *inStream; - ISeqOutStream *outStream; - ICompressProgress *progress; + ISeqInStreamPtr inStream; + ISeqOutStreamPtr outStream; + ICompressProgressPtr progress; BoolInt finishMode; BoolInt outSize_Defined; @@ -111,14 +111,13 @@ typedef struct size_t inPos; size_t inLim; - #ifndef _7ZIP_ST + #ifndef Z7_ST UInt64 outProcessed_Parse; BoolInt mtc_WasConstructed; CMtDec mtc; - CLzma2DecMtThread coders[MTDEC__THREADS_MAX]; + CLzma2DecMtThread coders[MTDEC_THREADS_MAX]; #endif - -} CLzma2DecMt; +}; @@ -142,11 +141,11 @@ CLzma2DecMtHandle Lzma2DecMt_Create(ISzAllocPtr alloc, ISzAllocPtr allocMid) // Lzma2DecMtProps_Init(&p->props); - #ifndef _7ZIP_ST + #ifndef Z7_ST p->mtc_WasConstructed = False; { unsigned i; - for (i = 0; i < MTDEC__THREADS_MAX; i++) + for (i = 0; i < MTDEC_THREADS_MAX; i++) { CLzma2DecMtThread *t = &p->coders[i]; t->dec_created = False; @@ -156,16 +155,16 @@ CLzma2DecMtHandle Lzma2DecMt_Create(ISzAllocPtr alloc, ISzAllocPtr allocMid) } #endif - return p; + return (CLzma2DecMtHandle)(void *)p; } -#ifndef _7ZIP_ST +#ifndef Z7_ST static void Lzma2DecMt_FreeOutBufs(CLzma2DecMt *p) { unsigned i; - for (i = 0; i < MTDEC__THREADS_MAX; i++) + for (i = 0; i < MTDEC_THREADS_MAX; i++) { CLzma2DecMtThread *t = &p->coders[i]; if (t->outBuf) @@ -196,13 +195,15 @@ static void Lzma2DecMt_FreeSt(CLzma2DecMt *p) } -void Lzma2DecMt_Destroy(CLzma2DecMtHandle pp) +// #define GET_CLzma2DecMt_p CLzma2DecMt *p = (CLzma2DecMt *)(void *)pp; + +void Lzma2DecMt_Destroy(CLzma2DecMtHandle p) { - CLzma2DecMt *p = (CLzma2DecMt *)pp; + // GET_CLzma2DecMt_p Lzma2DecMt_FreeSt(p); - #ifndef _7ZIP_ST + #ifndef Z7_ST if (p->mtc_WasConstructed) { @@ -211,7 +212,7 @@ void Lzma2DecMt_Destroy(CLzma2DecMtHandle pp) } { unsigned i; - for (i = 0; i < MTDEC__THREADS_MAX; i++) + for (i = 0; i < MTDEC_THREADS_MAX; i++) { CLzma2DecMtThread *t = &p->coders[i]; if (t->dec_created) @@ -226,19 +227,19 @@ void Lzma2DecMt_Destroy(CLzma2DecMtHandle pp) #endif - ISzAlloc_Free(p->alignOffsetAlloc.baseAlloc, pp); + ISzAlloc_Free(p->alignOffsetAlloc.baseAlloc, p); } -#ifndef _7ZIP_ST +#ifndef Z7_ST static void Lzma2DecMt_MtCallback_Parse(void *obj, unsigned coderIndex, CMtDecCallbackInfo *cc) { CLzma2DecMt *me = (CLzma2DecMt *)obj; CLzma2DecMtThread *t = &me->coders[coderIndex]; - PRF_STR_INT_2("Parse", coderIndex, cc->srcSize); + PRF_STR_INT_2("Parse", coderIndex, cc->srcSize) cc->state = MTDEC_PARSE_CONTINUE; @@ -246,7 +247,7 @@ static void Lzma2DecMt_MtCallback_Parse(void *obj, unsigned coderIndex, CMtDecCa { if (!t->dec_created) { - Lzma2Dec_Construct(&t->dec); + Lzma2Dec_CONSTRUCT(&t->dec) t->dec_created = True; AlignOffsetAlloc_CreateVTable(&t->alloc); { @@ -297,7 +298,7 @@ static void Lzma2DecMt_MtCallback_Parse(void *obj, unsigned coderIndex, CMtDecCa // that must be finished at position <= outBlockMax. { - const SizeT srcOrig = cc->srcSize; + const size_t srcOrig = cc->srcSize; SizeT srcSize_Point = 0; SizeT dicPos_Point = 0; @@ -306,10 +307,10 @@ static void Lzma2DecMt_MtCallback_Parse(void *obj, unsigned coderIndex, CMtDecCa for (;;) { - SizeT srcCur = srcOrig - cc->srcSize; + SizeT srcCur = (SizeT)(srcOrig - cc->srcSize); status = Lzma2Dec_Parse(&t->dec, - limit - t->dec.decoder.dicPos, + (SizeT)limit - t->dec.decoder.dicPos, cc->src + cc->srcSize, &srcCur, checkFinishBlock); @@ -333,7 +334,7 @@ static void Lzma2DecMt_MtCallback_Parse(void *obj, unsigned coderIndex, CMtDecCa if (t->dec.decoder.dicPos >= (1 << 14)) break; dicPos_Point = t->dec.decoder.dicPos; - srcSize_Point = cc->srcSize; + srcSize_Point = (SizeT)cc->srcSize; continue; } @@ -391,7 +392,7 @@ static void Lzma2DecMt_MtCallback_Parse(void *obj, unsigned coderIndex, CMtDecCa if (unpackRem != 0) { /* we also reserve space for max possible number of output bytes of current LZMA chunk */ - SizeT rem = limit - dicPos; + size_t rem = limit - dicPos; if (rem > unpackRem) rem = unpackRem; dicPos += rem; @@ -444,7 +445,7 @@ static SRes Lzma2DecMt_MtCallback_PreCode(void *pp, unsigned coderIndex) } t->dec.decoder.dic = dest; - t->dec.decoder.dicBufSize = t->outPreSize; + t->dec.decoder.dicBufSize = (SizeT)t->outPreSize; t->needInit = True; @@ -462,7 +463,7 @@ static SRes Lzma2DecMt_MtCallback_Code(void *pp, unsigned coderIndex, UNUSED_VAR(srcFinished) - PRF_STR_INT_2("Code", coderIndex, srcSize); + PRF_STR_INT_2("Code", coderIndex, srcSize) *inCodePos = t->inCodeSize; *outCodePos = 0; @@ -476,13 +477,13 @@ static SRes Lzma2DecMt_MtCallback_Code(void *pp, unsigned coderIndex, { ELzmaStatus status; - size_t srcProcessed = srcSize; + SizeT srcProcessed = (SizeT)srcSize; BoolInt blockWasFinished = ((int)t->parseStatus == LZMA_STATUS_FINISHED_WITH_MARK || t->parseStatus == LZMA2_PARSE_STATUS_NEW_BLOCK); SRes res = Lzma2Dec_DecodeToDic(&t->dec, - t->outPreSize, + (SizeT)t->outPreSize, src, &srcProcessed, blockWasFinished ? LZMA_FINISH_END : LZMA_FINISH_ANY, &status); @@ -540,7 +541,7 @@ static SRes Lzma2DecMt_MtCallback_Write(void *pp, unsigned coderIndex, UNUSED_VAR(srcSize) UNUSED_VAR(isCross) - PRF_STR_INT_2("Write", coderIndex, srcSize); + PRF_STR_INT_2("Write", coderIndex, srcSize) *needContinue = False; *canRecode = True; @@ -588,7 +589,7 @@ static SRes Lzma2DecMt_MtCallback_Write(void *pp, unsigned coderIndex, *needContinue = needContinue2; return SZ_OK; } - RINOK(MtProgress_ProgressAdd(&me->mtc.mtProgress, 0, 0)); + RINOK(MtProgress_ProgressAdd(&me->mtc.mtProgress, 0, 0)) } } @@ -611,11 +612,11 @@ static SRes Lzma2Dec_Prepare_ST(CLzma2DecMt *p) { if (!p->dec_created) { - Lzma2Dec_Construct(&p->dec); + Lzma2Dec_CONSTRUCT(&p->dec) p->dec_created = True; } - RINOK(Lzma2Dec_Allocate(&p->dec, p->prop, &p->alignOffsetAlloc.vt)); + RINOK(Lzma2Dec_Allocate(&p->dec, p->prop, &p->alignOffsetAlloc.vt)) if (!p->inBuf || p->inBufSize != p->props.inBufSize_ST) { @@ -634,7 +635,7 @@ static SRes Lzma2Dec_Prepare_ST(CLzma2DecMt *p) static SRes Lzma2Dec_Decode_ST(CLzma2DecMt *p - #ifndef _7ZIP_ST + #ifndef Z7_ST , BoolInt tMode #endif ) @@ -646,7 +647,7 @@ static SRes Lzma2Dec_Decode_ST(CLzma2DecMt *p CLzma2Dec *dec; - #ifndef _7ZIP_ST + #ifndef Z7_ST if (tMode) { Lzma2DecMt_FreeOutBufs(p); @@ -654,7 +655,7 @@ static SRes Lzma2Dec_Decode_ST(CLzma2DecMt *p } #endif - RINOK(Lzma2Dec_Prepare_ST(p)); + RINOK(Lzma2Dec_Prepare_ST(p)) dec = &p->dec; @@ -681,7 +682,7 @@ static SRes Lzma2Dec_Decode_ST(CLzma2DecMt *p if (inPos == inLim) { - #ifndef _7ZIP_ST + #ifndef Z7_ST if (tMode) { inData = MtDec_Read(&p->mtc, &inLim); @@ -710,7 +711,7 @@ static SRes Lzma2Dec_Decode_ST(CLzma2DecMt *p { SizeT next = dec->decoder.dicBufSize; if (next - wrPos > p->props.outStep_ST) - next = wrPos + p->props.outStep_ST; + next = wrPos + (SizeT)p->props.outStep_ST; size = next - dicPos; } @@ -726,7 +727,7 @@ static SRes Lzma2Dec_Decode_ST(CLzma2DecMt *p } } - inProcessed = inLim - inPos; + inProcessed = (SizeT)(inLim - inPos); res = Lzma2Dec_DecodeToDic(dec, dicPos + size, inData + inPos, &inProcessed, finishMode, &status); @@ -755,7 +756,7 @@ static SRes Lzma2Dec_Decode_ST(CLzma2DecMt *p dec->decoder.dicPos = 0; wrPos = dec->decoder.dicPos; - RINOK(res2); + RINOK(res2) if (needStop) { @@ -788,7 +789,7 @@ static SRes Lzma2Dec_Decode_ST(CLzma2DecMt *p UInt64 outDelta = p->outProcessed - outPrev; if (inDelta >= (1 << 22) || outDelta >= (1 << 22)) { - RINOK(ICompressProgress_Progress(p->progress, p->inProcessed, p->outProcessed)); + RINOK(ICompressProgress_Progress(p->progress, p->inProcessed, p->outProcessed)) inPrev = p->inProcessed; outPrev = p->outProcessed; } @@ -798,20 +799,20 @@ static SRes Lzma2Dec_Decode_ST(CLzma2DecMt *p -SRes Lzma2DecMt_Decode(CLzma2DecMtHandle pp, +SRes Lzma2DecMt_Decode(CLzma2DecMtHandle p, Byte prop, const CLzma2DecMtProps *props, - ISeqOutStream *outStream, const UInt64 *outDataSize, int finishMode, + ISeqOutStreamPtr outStream, const UInt64 *outDataSize, int finishMode, // Byte *outBuf, size_t *outBufSize, - ISeqInStream *inStream, + ISeqInStreamPtr inStream, // const Byte *inData, size_t inDataSize, UInt64 *inProcessed, // UInt64 *outProcessed, int *isMT, - ICompressProgress *progress) + ICompressProgressPtr progress) { - CLzma2DecMt *p = (CLzma2DecMt *)pp; - #ifndef _7ZIP_ST + // GET_CLzma2DecMt_p + #ifndef Z7_ST BoolInt tMode; #endif @@ -845,7 +846,7 @@ SRes Lzma2DecMt_Decode(CLzma2DecMtHandle pp, *isMT = False; - #ifndef _7ZIP_ST + #ifndef Z7_ST tMode = False; @@ -939,7 +940,7 @@ SRes Lzma2DecMt_Decode(CLzma2DecMtHandle pp, p->readWasFinished = p->mtc.readWasFinished; p->inProcessed = p->mtc.inProcessed; - PRF_STR("----- decoding ST -----"); + PRF_STR("----- decoding ST -----") } } @@ -950,7 +951,7 @@ SRes Lzma2DecMt_Decode(CLzma2DecMtHandle pp, { SRes res = Lzma2Dec_Decode_ST(p - #ifndef _7ZIP_ST + #ifndef Z7_ST , tMode #endif ); @@ -967,7 +968,7 @@ SRes Lzma2DecMt_Decode(CLzma2DecMtHandle pp, res = p->readRes; /* - #ifndef _7ZIP_ST + #ifndef Z7_ST if (res == SZ_OK && tMode && p->mtc.parseRes != SZ_OK) res = p->mtc.parseRes; #endif @@ -980,13 +981,13 @@ SRes Lzma2DecMt_Decode(CLzma2DecMtHandle pp, /* ---------- Read from CLzma2DecMtHandle Interface ---------- */ -SRes Lzma2DecMt_Init(CLzma2DecMtHandle pp, +SRes Lzma2DecMt_Init(CLzma2DecMtHandle p, Byte prop, const CLzma2DecMtProps *props, const UInt64 *outDataSize, int finishMode, - ISeqInStream *inStream) + ISeqInStreamPtr inStream) { - CLzma2DecMt *p = (CLzma2DecMt *)pp; + // GET_CLzma2DecMt_p if (prop > 40) return SZ_ERROR_UNSUPPORTED; @@ -1015,11 +1016,11 @@ SRes Lzma2DecMt_Init(CLzma2DecMtHandle pp, } -SRes Lzma2DecMt_Read(CLzma2DecMtHandle pp, +SRes Lzma2DecMt_Read(CLzma2DecMtHandle p, Byte *data, size_t *outSize, UInt64 *inStreamProcessed) { - CLzma2DecMt *p = (CLzma2DecMt *)pp; + // GET_CLzma2DecMt_p ELzmaFinishMode finishMode; SRes readRes; size_t size = *outSize; @@ -1055,8 +1056,8 @@ SRes Lzma2DecMt_Read(CLzma2DecMtHandle pp, readRes = ISeqInStream_Read(p->inStream, p->inBuf, &p->inLim); } - inCur = p->inLim - p->inPos; - outCur = size; + inCur = (SizeT)(p->inLim - p->inPos); + outCur = (SizeT)size; res = Lzma2Dec_DecodeToBuf(&p->dec, data, &outCur, p->inBuf + p->inPos, &inCur, finishMode, &status); @@ -1088,3 +1089,7 @@ SRes Lzma2DecMt_Read(CLzma2DecMtHandle pp, return readRes; } } + +#undef PRF +#undef PRF_STR +#undef PRF_STR_INT_2 diff --git a/deps/LZMA-SDK/C/Lzma2DecMt.h b/deps/LZMA-SDK/C/Lzma2DecMt.h index 7791c310b..93a5cd59e 100644 --- a/deps/LZMA-SDK/C/Lzma2DecMt.h +++ b/deps/LZMA-SDK/C/Lzma2DecMt.h @@ -1,8 +1,8 @@ /* Lzma2DecMt.h -- LZMA2 Decoder Multi-thread -2018-02-17 : Igor Pavlov : Public domain */ +2023-04-13 : Igor Pavlov : Public domain */ -#ifndef __LZMA2_DEC_MT_H -#define __LZMA2_DEC_MT_H +#ifndef ZIP7_INC_LZMA2_DEC_MT_H +#define ZIP7_INC_LZMA2_DEC_MT_H #include "7zTypes.h" @@ -13,7 +13,7 @@ typedef struct size_t inBufSize_ST; size_t outStep_ST; - #ifndef _7ZIP_ST + #ifndef Z7_ST unsigned numThreads; size_t inBufSize_MT; size_t outBlockMax; @@ -38,7 +38,9 @@ SRes: SZ_ERROR_THREAD - error in multithreading functions (only for Mt version) */ -typedef void * CLzma2DecMtHandle; +typedef struct CLzma2DecMt CLzma2DecMt; +typedef CLzma2DecMt * CLzma2DecMtHandle; +// Z7_DECLARE_HANDLE(CLzma2DecMtHandle) CLzma2DecMtHandle Lzma2DecMt_Create(ISzAllocPtr alloc, ISzAllocPtr allocMid); void Lzma2DecMt_Destroy(CLzma2DecMtHandle p); @@ -46,11 +48,11 @@ void Lzma2DecMt_Destroy(CLzma2DecMtHandle p); SRes Lzma2DecMt_Decode(CLzma2DecMtHandle p, Byte prop, const CLzma2DecMtProps *props, - ISeqOutStream *outStream, + ISeqOutStreamPtr outStream, const UInt64 *outDataSize, // NULL means undefined int finishMode, // 0 - partial unpacking is allowed, 1 - if lzma2 stream must be finished // Byte *outBuf, size_t *outBufSize, - ISeqInStream *inStream, + ISeqInStreamPtr inStream, // const Byte *inData, size_t inDataSize, // out variables: @@ -58,7 +60,7 @@ SRes Lzma2DecMt_Decode(CLzma2DecMtHandle p, int *isMT, /* out: (*isMT == 0), if single thread decoding was used */ // UInt64 *outProcessed, - ICompressProgress *progress); + ICompressProgressPtr progress); /* ---------- Read from CLzma2DecMtHandle Interface ---------- */ @@ -67,7 +69,7 @@ SRes Lzma2DecMt_Init(CLzma2DecMtHandle pp, Byte prop, const CLzma2DecMtProps *props, const UInt64 *outDataSize, int finishMode, - ISeqInStream *inStream); + ISeqInStreamPtr inStream); SRes Lzma2DecMt_Read(CLzma2DecMtHandle pp, Byte *data, size_t *outSize, diff --git a/deps/LZMA-SDK/C/Lzma2Enc.c b/deps/LZMA-SDK/C/Lzma2Enc.c index e61a5dfe0..703e146b5 100644 --- a/deps/LZMA-SDK/C/Lzma2Enc.c +++ b/deps/LZMA-SDK/C/Lzma2Enc.c @@ -1,18 +1,18 @@ /* Lzma2Enc.c -- LZMA2 Encoder -2021-02-09 : Igor Pavlov : Public domain */ +2023-04-13 : Igor Pavlov : Public domain */ #include "Precomp.h" #include -/* #define _7ZIP_ST */ +/* #define Z7_ST */ #include "Lzma2Enc.h" -#ifndef _7ZIP_ST +#ifndef Z7_ST #include "MtCoder.h" #else -#define MTCODER__THREADS_MAX 1 +#define MTCODER_THREADS_MAX 1 #endif #define LZMA2_CONTROL_LZMA (1 << 7) @@ -40,7 +40,7 @@ typedef struct { ISeqInStream vt; - ISeqInStream *realStream; + ISeqInStreamPtr realStream; UInt64 limit; UInt64 processed; int finished; @@ -53,15 +53,15 @@ static void LimitedSeqInStream_Init(CLimitedSeqInStream *p) p->finished = 0; } -static SRes LimitedSeqInStream_Read(const ISeqInStream *pp, void *data, size_t *size) +static SRes LimitedSeqInStream_Read(ISeqInStreamPtr pp, void *data, size_t *size) { - CLimitedSeqInStream *p = CONTAINER_FROM_VTBL(pp, CLimitedSeqInStream, vt); + Z7_CONTAINER_FROM_VTBL_TO_DECL_VAR_pp_vt_p(CLimitedSeqInStream) size_t size2 = *size; SRes res = SZ_OK; if (p->limit != (UInt64)(Int64)-1) { - UInt64 rem = p->limit - p->processed; + const UInt64 rem = p->limit - p->processed; if (size2 > rem) size2 = (size_t)rem; } @@ -95,8 +95,8 @@ static SRes Lzma2EncInt_InitStream(CLzma2EncInt *p, const CLzma2EncProps *props) { SizeT propsSize = LZMA_PROPS_SIZE; Byte propsEncoded[LZMA_PROPS_SIZE]; - RINOK(LzmaEnc_SetProps(p->enc, &props->lzmaProps)); - RINOK(LzmaEnc_WriteProperties(p->enc, propsEncoded, &propsSize)); + RINOK(LzmaEnc_SetProps(p->enc, &props->lzmaProps)) + RINOK(LzmaEnc_WriteProperties(p->enc, propsEncoded, &propsSize)) p->propsByte = propsEncoded[0]; p->propsAreSet = True; } @@ -111,23 +111,23 @@ static void Lzma2EncInt_InitBlock(CLzma2EncInt *p) } -SRes LzmaEnc_PrepareForLzma2(CLzmaEncHandle pp, ISeqInStream *inStream, UInt32 keepWindowSize, +SRes LzmaEnc_PrepareForLzma2(CLzmaEncHandle p, ISeqInStreamPtr inStream, UInt32 keepWindowSize, ISzAllocPtr alloc, ISzAllocPtr allocBig); -SRes LzmaEnc_MemPrepare(CLzmaEncHandle pp, const Byte *src, SizeT srcLen, +SRes LzmaEnc_MemPrepare(CLzmaEncHandle p, const Byte *src, SizeT srcLen, UInt32 keepWindowSize, ISzAllocPtr alloc, ISzAllocPtr allocBig); -SRes LzmaEnc_CodeOneMemBlock(CLzmaEncHandle pp, BoolInt reInit, +SRes LzmaEnc_CodeOneMemBlock(CLzmaEncHandle p, BoolInt reInit, Byte *dest, size_t *destLen, UInt32 desiredPackSize, UInt32 *unpackSize); -const Byte *LzmaEnc_GetCurBuf(CLzmaEncHandle pp); -void LzmaEnc_Finish(CLzmaEncHandle pp); -void LzmaEnc_SaveState(CLzmaEncHandle pp); -void LzmaEnc_RestoreState(CLzmaEncHandle pp); +const Byte *LzmaEnc_GetCurBuf(CLzmaEncHandle p); +void LzmaEnc_Finish(CLzmaEncHandle p); +void LzmaEnc_SaveState(CLzmaEncHandle p); +void LzmaEnc_RestoreState(CLzmaEncHandle p); /* -UInt32 LzmaEnc_GetNumAvailableBytes(CLzmaEncHandle pp); +UInt32 LzmaEnc_GetNumAvailableBytes(CLzmaEncHandle p); */ static SRes Lzma2EncInt_EncodeSubblock(CLzma2EncInt *p, Byte *outBuf, - size_t *packSizeRes, ISeqOutStream *outStream) + size_t *packSizeRes, ISeqOutStreamPtr outStream) { size_t packSizeLimit = *packSizeRes; size_t packSize = packSizeLimit; @@ -167,7 +167,7 @@ static SRes Lzma2EncInt_EncodeSubblock(CLzma2EncInt *p, Byte *outBuf, while (unpackSize > 0) { - UInt32 u = (unpackSize < LZMA2_COPY_CHUNK_SIZE) ? unpackSize : LZMA2_COPY_CHUNK_SIZE; + const UInt32 u = (unpackSize < LZMA2_COPY_CHUNK_SIZE) ? unpackSize : LZMA2_COPY_CHUNK_SIZE; if (packSizeLimit - destPos < u + 3) return SZ_ERROR_OUTPUT_EOF; outBuf[destPos++] = (Byte)(p->srcPos == 0 ? LZMA2_CONTROL_COPY_RESET_DIC : LZMA2_CONTROL_COPY_NO_RESET); @@ -196,9 +196,9 @@ static SRes Lzma2EncInt_EncodeSubblock(CLzma2EncInt *p, Byte *outBuf, { size_t destPos = 0; - UInt32 u = unpackSize - 1; - UInt32 pm = (UInt32)(packSize - 1); - unsigned mode = (p->srcPos == 0) ? 3 : (p->needInitState ? (p->needInitProp ? 2 : 1) : 0); + const UInt32 u = unpackSize - 1; + const UInt32 pm = (UInt32)(packSize - 1); + const unsigned mode = (p->srcPos == 0) ? 3 : (p->needInitState ? (p->needInitProp ? 2 : 1) : 0); PRF(printf(" ")); @@ -231,7 +231,7 @@ static SRes Lzma2EncInt_EncodeSubblock(CLzma2EncInt *p, Byte *outBuf, void Lzma2EncProps_Init(CLzma2EncProps *p) { LzmaEncProps_Init(&p->lzmaProps); - p->blockSize = LZMA2_ENC_PROPS__BLOCK_SIZE__AUTO; + p->blockSize = LZMA2_ENC_PROPS_BLOCK_SIZE_AUTO; p->numBlockThreads_Reduced = -1; p->numBlockThreads_Max = -1; p->numTotalThreads = -1; @@ -251,8 +251,8 @@ void Lzma2EncProps_Normalize(CLzma2EncProps *p) t2 = p->numBlockThreads_Max; t3 = p->numTotalThreads; - if (t2 > MTCODER__THREADS_MAX) - t2 = MTCODER__THREADS_MAX; + if (t2 > MTCODER_THREADS_MAX) + t2 = MTCODER_THREADS_MAX; if (t3 <= 0) { @@ -268,8 +268,8 @@ void Lzma2EncProps_Normalize(CLzma2EncProps *p) t1 = 1; t2 = t3; } - if (t2 > MTCODER__THREADS_MAX) - t2 = MTCODER__THREADS_MAX; + if (t2 > MTCODER_THREADS_MAX) + t2 = MTCODER_THREADS_MAX; } else if (t1 <= 0) { @@ -286,8 +286,8 @@ void Lzma2EncProps_Normalize(CLzma2EncProps *p) fileSize = p->lzmaProps.reduceSize; - if ( p->blockSize != LZMA2_ENC_PROPS__BLOCK_SIZE__SOLID - && p->blockSize != LZMA2_ENC_PROPS__BLOCK_SIZE__AUTO + if ( p->blockSize != LZMA2_ENC_PROPS_BLOCK_SIZE_SOLID + && p->blockSize != LZMA2_ENC_PROPS_BLOCK_SIZE_AUTO && (p->blockSize < fileSize || fileSize == (UInt64)(Int64)-1)) p->lzmaProps.reduceSize = p->blockSize; @@ -297,19 +297,19 @@ void Lzma2EncProps_Normalize(CLzma2EncProps *p) t1 = p->lzmaProps.numThreads; - if (p->blockSize == LZMA2_ENC_PROPS__BLOCK_SIZE__SOLID) + if (p->blockSize == LZMA2_ENC_PROPS_BLOCK_SIZE_SOLID) { t2r = t2 = 1; t3 = t1; } - else if (p->blockSize == LZMA2_ENC_PROPS__BLOCK_SIZE__AUTO && t2 <= 1) + else if (p->blockSize == LZMA2_ENC_PROPS_BLOCK_SIZE_AUTO && t2 <= 1) { /* if there is no block multi-threading, we use SOLID block */ - p->blockSize = LZMA2_ENC_PROPS__BLOCK_SIZE__SOLID; + p->blockSize = LZMA2_ENC_PROPS_BLOCK_SIZE_SOLID; } else { - if (p->blockSize == LZMA2_ENC_PROPS__BLOCK_SIZE__AUTO) + if (p->blockSize == LZMA2_ENC_PROPS_BLOCK_SIZE_AUTO) { const UInt32 kMinSize = (UInt32)1 << 20; const UInt32 kMaxSize = (UInt32)1 << 28; @@ -344,7 +344,7 @@ void Lzma2EncProps_Normalize(CLzma2EncProps *p) } -static SRes Progress(ICompressProgress *p, UInt64 inSize, UInt64 outSize) +static SRes Progress(ICompressProgressPtr p, UInt64 inSize, UInt64 outSize) { return (p && ICompressProgress_Progress(p, inSize, outSize) != SZ_OK) ? SZ_ERROR_PROGRESS : SZ_OK; } @@ -352,7 +352,7 @@ static SRes Progress(ICompressProgress *p, UInt64 inSize, UInt64 outSize) /* ---------- Lzma2 ---------- */ -typedef struct +struct CLzma2Enc { Byte propEncoded; CLzma2EncProps props; @@ -363,23 +363,22 @@ typedef struct ISzAllocPtr alloc; ISzAllocPtr allocBig; - CLzma2EncInt coders[MTCODER__THREADS_MAX]; + CLzma2EncInt coders[MTCODER_THREADS_MAX]; - #ifndef _7ZIP_ST + #ifndef Z7_ST - ISeqOutStream *outStream; + ISeqOutStreamPtr outStream; Byte *outBuf; size_t outBuf_Rem; /* remainder in outBuf */ size_t outBufSize; /* size of allocated outBufs[i] */ - size_t outBufsDataSizes[MTCODER__BLOCKS_MAX]; + size_t outBufsDataSizes[MTCODER_BLOCKS_MAX]; BoolInt mtCoder_WasConstructed; CMtCoder mtCoder; - Byte *outBufs[MTCODER__BLOCKS_MAX]; + Byte *outBufs[MTCODER_BLOCKS_MAX]; #endif - -} CLzma2Enc; +}; @@ -396,30 +395,30 @@ CLzma2EncHandle Lzma2Enc_Create(ISzAllocPtr alloc, ISzAllocPtr allocBig) p->allocBig = allocBig; { unsigned i; - for (i = 0; i < MTCODER__THREADS_MAX; i++) + for (i = 0; i < MTCODER_THREADS_MAX; i++) p->coders[i].enc = NULL; } - #ifndef _7ZIP_ST + #ifndef Z7_ST p->mtCoder_WasConstructed = False; { unsigned i; - for (i = 0; i < MTCODER__BLOCKS_MAX; i++) + for (i = 0; i < MTCODER_BLOCKS_MAX; i++) p->outBufs[i] = NULL; p->outBufSize = 0; } #endif - return p; + return (CLzma2EncHandle)p; } -#ifndef _7ZIP_ST +#ifndef Z7_ST static void Lzma2Enc_FreeOutBufs(CLzma2Enc *p) { unsigned i; - for (i = 0; i < MTCODER__BLOCKS_MAX; i++) + for (i = 0; i < MTCODER_BLOCKS_MAX; i++) if (p->outBufs[i]) { ISzAlloc_Free(p->alloc, p->outBufs[i]); @@ -430,12 +429,13 @@ static void Lzma2Enc_FreeOutBufs(CLzma2Enc *p) #endif +// #define GET_CLzma2Enc_p CLzma2Enc *p = (CLzma2Enc *)(void *)p; -void Lzma2Enc_Destroy(CLzma2EncHandle pp) +void Lzma2Enc_Destroy(CLzma2EncHandle p) { - CLzma2Enc *p = (CLzma2Enc *)pp; + // GET_CLzma2Enc_p unsigned i; - for (i = 0; i < MTCODER__THREADS_MAX; i++) + for (i = 0; i < MTCODER_THREADS_MAX; i++) { CLzma2EncInt *t = &p->coders[i]; if (t->enc) @@ -446,7 +446,7 @@ void Lzma2Enc_Destroy(CLzma2EncHandle pp) } - #ifndef _7ZIP_ST + #ifndef Z7_ST if (p->mtCoder_WasConstructed) { MtCoder_Destruct(&p->mtCoder); @@ -458,13 +458,13 @@ void Lzma2Enc_Destroy(CLzma2EncHandle pp) ISzAlloc_Free(p->alloc, p->tempBufLzma); p->tempBufLzma = NULL; - ISzAlloc_Free(p->alloc, pp); + ISzAlloc_Free(p->alloc, p); } -SRes Lzma2Enc_SetProps(CLzma2EncHandle pp, const CLzma2EncProps *props) +SRes Lzma2Enc_SetProps(CLzma2EncHandle p, const CLzma2EncProps *props) { - CLzma2Enc *p = (CLzma2Enc *)pp; + // GET_CLzma2Enc_p CLzmaEncProps lzmaProps = props->lzmaProps; LzmaEncProps_Normalize(&lzmaProps); if (lzmaProps.lc + lzmaProps.lp > LZMA2_LCLP_MAX) @@ -475,16 +475,16 @@ SRes Lzma2Enc_SetProps(CLzma2EncHandle pp, const CLzma2EncProps *props) } -void Lzma2Enc_SetDataSize(CLzmaEncHandle pp, UInt64 expectedDataSiize) +void Lzma2Enc_SetDataSize(CLzma2EncHandle p, UInt64 expectedDataSiize) { - CLzma2Enc *p = (CLzma2Enc *)pp; + // GET_CLzma2Enc_p p->expectedDataSize = expectedDataSiize; } -Byte Lzma2Enc_WriteProperties(CLzma2EncHandle pp) +Byte Lzma2Enc_WriteProperties(CLzma2EncHandle p) { - CLzma2Enc *p = (CLzma2Enc *)pp; + // GET_CLzma2Enc_p unsigned i; UInt32 dicSize = LzmaEncProps_GetDictSize(&p->props.lzmaProps); for (i = 0; i < 40; i++) @@ -497,12 +497,12 @@ Byte Lzma2Enc_WriteProperties(CLzma2EncHandle pp) static SRes Lzma2Enc_EncodeMt1( CLzma2Enc *me, CLzma2EncInt *p, - ISeqOutStream *outStream, + ISeqOutStreamPtr outStream, Byte *outBuf, size_t *outBufSize, - ISeqInStream *inStream, + ISeqInStreamPtr inStream, const Byte *inData, size_t inDataSize, int finished, - ICompressProgress *progress) + ICompressProgressPtr progress) { UInt64 unpackTotal = 0; UInt64 packTotal = 0; @@ -540,12 +540,12 @@ static SRes Lzma2Enc_EncodeMt1( } } - RINOK(Lzma2EncInt_InitStream(p, &me->props)); + RINOK(Lzma2EncInt_InitStream(p, &me->props)) for (;;) { SRes res = SZ_OK; - size_t inSizeCur = 0; + SizeT inSizeCur = 0; Lzma2EncInt_InitBlock(p); @@ -559,7 +559,7 @@ static SRes Lzma2Enc_EncodeMt1( if (me->expectedDataSize != (UInt64)(Int64)-1 && me->expectedDataSize >= unpackTotal) expected = me->expectedDataSize - unpackTotal; - if (me->props.blockSize != LZMA2_ENC_PROPS__BLOCK_SIZE__SOLID + if (me->props.blockSize != LZMA2_ENC_PROPS_BLOCK_SIZE_SOLID && expected > me->props.blockSize) expected = (size_t)me->props.blockSize; @@ -569,14 +569,14 @@ static SRes Lzma2Enc_EncodeMt1( &limitedInStream.vt, LZMA2_KEEP_WINDOW_SIZE, me->alloc, - me->allocBig)); + me->allocBig)) } else { - inSizeCur = inDataSize - (size_t)unpackTotal; - if (me->props.blockSize != LZMA2_ENC_PROPS__BLOCK_SIZE__SOLID + inSizeCur = (SizeT)(inDataSize - (size_t)unpackTotal); + if (me->props.blockSize != LZMA2_ENC_PROPS_BLOCK_SIZE_SOLID && inSizeCur > me->props.blockSize) - inSizeCur = (size_t)me->props.blockSize; + inSizeCur = (SizeT)(size_t)me->props.blockSize; // LzmaEnc_SetDataSize(p->enc, inSizeCur); @@ -584,7 +584,7 @@ static SRes Lzma2Enc_EncodeMt1( inData + (size_t)unpackTotal, inSizeCur, LZMA2_KEEP_WINDOW_SIZE, me->alloc, - me->allocBig)); + me->allocBig)) } for (;;) @@ -621,7 +621,7 @@ static SRes Lzma2Enc_EncodeMt1( unpackTotal += p->srcPos; - RINOK(res); + RINOK(res) if (p->srcPos != (inStream ? limitedInStream.processed : inSizeCur)) return SZ_ERROR_FAIL; @@ -652,12 +652,12 @@ static SRes Lzma2Enc_EncodeMt1( -#ifndef _7ZIP_ST +#ifndef Z7_ST -static SRes Lzma2Enc_MtCallback_Code(void *pp, unsigned coderIndex, unsigned outBufIndex, +static SRes Lzma2Enc_MtCallback_Code(void *p, unsigned coderIndex, unsigned outBufIndex, const Byte *src, size_t srcSize, int finished) { - CLzma2Enc *me = (CLzma2Enc *)pp; + CLzma2Enc *me = (CLzma2Enc *)p; size_t destSize = me->outBufSize; SRes res; CMtProgressThunk progressThunk; @@ -692,9 +692,9 @@ static SRes Lzma2Enc_MtCallback_Code(void *pp, unsigned coderIndex, unsigned out } -static SRes Lzma2Enc_MtCallback_Write(void *pp, unsigned outBufIndex) +static SRes Lzma2Enc_MtCallback_Write(void *p, unsigned outBufIndex) { - CLzma2Enc *me = (CLzma2Enc *)pp; + CLzma2Enc *me = (CLzma2Enc *)p; size_t size = me->outBufsDataSizes[outBufIndex]; const Byte *data = me->outBufs[outBufIndex]; @@ -713,14 +713,14 @@ static SRes Lzma2Enc_MtCallback_Write(void *pp, unsigned outBufIndex) -SRes Lzma2Enc_Encode2(CLzma2EncHandle pp, - ISeqOutStream *outStream, +SRes Lzma2Enc_Encode2(CLzma2EncHandle p, + ISeqOutStreamPtr outStream, Byte *outBuf, size_t *outBufSize, - ISeqInStream *inStream, + ISeqInStreamPtr inStream, const Byte *inData, size_t inDataSize, - ICompressProgress *progress) + ICompressProgressPtr progress) { - CLzma2Enc *p = (CLzma2Enc *)pp; + // GET_CLzma2Enc_p if (inStream && inData) return SZ_ERROR_PARAM; @@ -730,11 +730,11 @@ SRes Lzma2Enc_Encode2(CLzma2EncHandle pp, { unsigned i; - for (i = 0; i < MTCODER__THREADS_MAX; i++) + for (i = 0; i < MTCODER_THREADS_MAX; i++) p->coders[i].propsAreSet = False; } - #ifndef _7ZIP_ST + #ifndef Z7_ST if (p->props.numBlockThreads_Reduced > 1) { @@ -772,7 +772,7 @@ SRes Lzma2Enc_Encode2(CLzma2EncHandle pp, return SZ_ERROR_PARAM; /* SZ_ERROR_MEM */ { - size_t destBlockSize = p->mtCoder.blockSize + (p->mtCoder.blockSize >> 10) + 16; + const size_t destBlockSize = p->mtCoder.blockSize + (p->mtCoder.blockSize >> 10) + 16; if (destBlockSize < p->mtCoder.blockSize) return SZ_ERROR_PARAM; if (p->outBufSize != destBlockSize) @@ -784,7 +784,7 @@ SRes Lzma2Enc_Encode2(CLzma2EncHandle pp, p->mtCoder.expectedDataSize = p->expectedDataSize; { - SRes res = MtCoder_Code(&p->mtCoder); + const SRes res = MtCoder_Code(&p->mtCoder); if (!outStream) *outBufSize = (size_t)(p->outBuf - outBuf); return res; @@ -801,3 +801,5 @@ SRes Lzma2Enc_Encode2(CLzma2EncHandle pp, True, /* finished */ progress); } + +#undef PRF diff --git a/deps/LZMA-SDK/C/Lzma2Enc.h b/deps/LZMA-SDK/C/Lzma2Enc.h index 6a6110ff7..cb25275c6 100644 --- a/deps/LZMA-SDK/C/Lzma2Enc.h +++ b/deps/LZMA-SDK/C/Lzma2Enc.h @@ -1,15 +1,15 @@ /* Lzma2Enc.h -- LZMA2 Encoder -2017-07-27 : Igor Pavlov : Public domain */ +2023-04-13 : Igor Pavlov : Public domain */ -#ifndef __LZMA2_ENC_H -#define __LZMA2_ENC_H +#ifndef ZIP7_INC_LZMA2_ENC_H +#define ZIP7_INC_LZMA2_ENC_H #include "LzmaEnc.h" EXTERN_C_BEGIN -#define LZMA2_ENC_PROPS__BLOCK_SIZE__AUTO 0 -#define LZMA2_ENC_PROPS__BLOCK_SIZE__SOLID ((UInt64)(Int64)-1) +#define LZMA2_ENC_PROPS_BLOCK_SIZE_AUTO 0 +#define LZMA2_ENC_PROPS_BLOCK_SIZE_SOLID ((UInt64)(Int64)-1) typedef struct { @@ -36,7 +36,9 @@ SRes: SZ_ERROR_THREAD - error in multithreading functions (only for Mt version) */ -typedef void * CLzma2EncHandle; +typedef struct CLzma2Enc CLzma2Enc; +typedef CLzma2Enc * CLzma2EncHandle; +// Z7_DECLARE_HANDLE(CLzma2EncHandle) CLzma2EncHandle Lzma2Enc_Create(ISzAllocPtr alloc, ISzAllocPtr allocBig); void Lzma2Enc_Destroy(CLzma2EncHandle p); @@ -44,11 +46,11 @@ SRes Lzma2Enc_SetProps(CLzma2EncHandle p, const CLzma2EncProps *props); void Lzma2Enc_SetDataSize(CLzma2EncHandle p, UInt64 expectedDataSiize); Byte Lzma2Enc_WriteProperties(CLzma2EncHandle p); SRes Lzma2Enc_Encode2(CLzma2EncHandle p, - ISeqOutStream *outStream, + ISeqOutStreamPtr outStream, Byte *outBuf, size_t *outBufSize, - ISeqInStream *inStream, + ISeqInStreamPtr inStream, const Byte *inData, size_t inDataSize, - ICompressProgress *progress); + ICompressProgressPtr progress); EXTERN_C_END diff --git a/deps/LZMA-SDK/C/Lzma86.h b/deps/LZMA-SDK/C/Lzma86.h index bebed5cb7..e7707e2c4 100644 --- a/deps/LZMA-SDK/C/Lzma86.h +++ b/deps/LZMA-SDK/C/Lzma86.h @@ -1,8 +1,8 @@ /* Lzma86.h -- LZMA + x86 (BCJ) Filter -2013-01-18 : Igor Pavlov : Public domain */ +2023-03-03 : Igor Pavlov : Public domain */ -#ifndef __LZMA86_H -#define __LZMA86_H +#ifndef ZIP7_INC_LZMA86_H +#define ZIP7_INC_LZMA86_H #include "7zTypes.h" diff --git a/deps/LZMA-SDK/C/Lzma86Dec.c b/deps/LZMA-SDK/C/Lzma86Dec.c index 21031745c..f094d4c35 100644 --- a/deps/LZMA-SDK/C/Lzma86Dec.c +++ b/deps/LZMA-SDK/C/Lzma86Dec.c @@ -1,5 +1,5 @@ /* Lzma86Dec.c -- LZMA + x86 (BCJ) Filter Decoder -2016-05-16 : Igor Pavlov : Public domain */ +2023-03-03 : Igor Pavlov : Public domain */ #include "Precomp.h" @@ -46,9 +46,8 @@ SRes Lzma86_Decode(Byte *dest, SizeT *destLen, const Byte *src, SizeT *srcLen) return res; if (useFilter == 1) { - UInt32 x86State; - x86_Convert_Init(x86State); - x86_Convert(dest, *destLen, 0, &x86State, 0); + UInt32 x86State = Z7_BRANCH_CONV_ST_X86_STATE_INIT_VAL; + z7_BranchConvSt_X86_Dec(dest, *destLen, 0, &x86State); } return SZ_OK; } diff --git a/deps/LZMA-SDK/C/Lzma86Enc.c b/deps/LZMA-SDK/C/Lzma86Enc.c index 14fcd65c6..0cdde1c9a 100644 --- a/deps/LZMA-SDK/C/Lzma86Enc.c +++ b/deps/LZMA-SDK/C/Lzma86Enc.c @@ -1,5 +1,5 @@ /* Lzma86Enc.c -- LZMA + x86 (BCJ) Filter Encoder -2018-07-04 : Igor Pavlov : Public domain */ +2023-03-03 : Igor Pavlov : Public domain */ #include "Precomp.h" @@ -46,9 +46,8 @@ int Lzma86_Encode(Byte *dest, size_t *destLen, const Byte *src, size_t srcLen, memcpy(filteredStream, src, srcLen); } { - UInt32 x86State; - x86_Convert_Init(x86State); - x86_Convert(filteredStream, srcLen, 0, &x86State, 1); + UInt32 x86State = Z7_BRANCH_CONV_ST_X86_STATE_INIT_VAL; + z7_BranchConvSt_X86_Enc(filteredStream, srcLen, 0, &x86State); } } diff --git a/deps/LZMA-SDK/C/LzmaDec.c b/deps/LZMA-SDK/C/LzmaDec.c index d6742e5af..69bb8bba9 100644 --- a/deps/LZMA-SDK/C/LzmaDec.c +++ b/deps/LZMA-SDK/C/LzmaDec.c @@ -1,5 +1,5 @@ /* LzmaDec.c -- LZMA Decoder -2021-04-01 : Igor Pavlov : Public domain */ +2023-04-07 : Igor Pavlov : Public domain */ #include "Precomp.h" @@ -8,15 +8,15 @@ /* #include "CpuArch.h" */ #include "LzmaDec.h" -#define kNumTopBits 24 -#define kTopValue ((UInt32)1 << kNumTopBits) +// #define kNumTopBits 24 +#define kTopValue ((UInt32)1 << 24) #define kNumBitModelTotalBits 11 #define kBitModelTotal (1 << kNumBitModelTotalBits) #define RC_INIT_SIZE 5 -#ifndef _LZMA_DEC_OPT +#ifndef Z7_LZMA_DEC_OPT #define kNumMoveBits 5 #define NORMALIZE if (range < kTopValue) { range <<= 8; code = (code << 8) | (*buf++); } @@ -25,14 +25,14 @@ #define UPDATE_0(p) range = bound; *(p) = (CLzmaProb)(ttt + ((kBitModelTotal - ttt) >> kNumMoveBits)); #define UPDATE_1(p) range -= bound; code -= bound; *(p) = (CLzmaProb)(ttt - (ttt >> kNumMoveBits)); #define GET_BIT2(p, i, A0, A1) IF_BIT_0(p) \ - { UPDATE_0(p); i = (i + i); A0; } else \ - { UPDATE_1(p); i = (i + i) + 1; A1; } + { UPDATE_0(p) i = (i + i); A0; } else \ + { UPDATE_1(p) i = (i + i) + 1; A1; } #define TREE_GET_BIT(probs, i) { GET_BIT2(probs + i, i, ;, ;); } #define REV_BIT(p, i, A0, A1) IF_BIT_0(p + i) \ - { UPDATE_0(p + i); A0; } else \ - { UPDATE_1(p + i); A1; } + { UPDATE_0(p + i) A0; } else \ + { UPDATE_1(p + i) A1; } #define REV_BIT_VAR( p, i, m) REV_BIT(p, i, i += m; m += m, m += m; i += m; ) #define REV_BIT_CONST(p, i, m) REV_BIT(p, i, i += m; , i += m * 2; ) #define REV_BIT_LAST( p, i, m) REV_BIT(p, i, i -= m , ; ) @@ -40,19 +40,19 @@ #define TREE_DECODE(probs, limit, i) \ { i = 1; do { TREE_GET_BIT(probs, i); } while (i < limit); i -= limit; } -/* #define _LZMA_SIZE_OPT */ +/* #define Z7_LZMA_SIZE_OPT */ -#ifdef _LZMA_SIZE_OPT +#ifdef Z7_LZMA_SIZE_OPT #define TREE_6_DECODE(probs, i) TREE_DECODE(probs, (1 << 6), i) #else #define TREE_6_DECODE(probs, i) \ { i = 1; \ - TREE_GET_BIT(probs, i); \ - TREE_GET_BIT(probs, i); \ - TREE_GET_BIT(probs, i); \ - TREE_GET_BIT(probs, i); \ - TREE_GET_BIT(probs, i); \ - TREE_GET_BIT(probs, i); \ + TREE_GET_BIT(probs, i) \ + TREE_GET_BIT(probs, i) \ + TREE_GET_BIT(probs, i) \ + TREE_GET_BIT(probs, i) \ + TREE_GET_BIT(probs, i) \ + TREE_GET_BIT(probs, i) \ i -= 0x40; } #endif @@ -64,25 +64,25 @@ probLit = prob + (offs + bit + symbol); \ GET_BIT2(probLit, symbol, offs ^= bit; , ;) -#endif // _LZMA_DEC_OPT +#endif // Z7_LZMA_DEC_OPT #define NORMALIZE_CHECK if (range < kTopValue) { if (buf >= bufLimit) return DUMMY_INPUT_EOF; range <<= 8; code = (code << 8) | (*buf++); } -#define IF_BIT_0_CHECK(p) ttt = *(p); NORMALIZE_CHECK; bound = (range >> kNumBitModelTotalBits) * (UInt32)ttt; if (code < bound) +#define IF_BIT_0_CHECK(p) ttt = *(p); NORMALIZE_CHECK bound = (range >> kNumBitModelTotalBits) * (UInt32)ttt; if (code < bound) #define UPDATE_0_CHECK range = bound; #define UPDATE_1_CHECK range -= bound; code -= bound; #define GET_BIT2_CHECK(p, i, A0, A1) IF_BIT_0_CHECK(p) \ - { UPDATE_0_CHECK; i = (i + i); A0; } else \ - { UPDATE_1_CHECK; i = (i + i) + 1; A1; } + { UPDATE_0_CHECK i = (i + i); A0; } else \ + { UPDATE_1_CHECK i = (i + i) + 1; A1; } #define GET_BIT_CHECK(p, i) GET_BIT2_CHECK(p, i, ; , ;) #define TREE_DECODE_CHECK(probs, limit, i) \ { i = 1; do { GET_BIT_CHECK(probs + i, i) } while (i < limit); i -= limit; } #define REV_BIT_CHECK(p, i, m) IF_BIT_0_CHECK(p + i) \ - { UPDATE_0_CHECK; i += m; m += m; } else \ - { UPDATE_1_CHECK; m += m; i += m; } + { UPDATE_0_CHECK i += m; m += m; } else \ + { UPDATE_1_CHECK m += m; i += m; } #define kNumPosBitsMax 4 @@ -224,14 +224,14 @@ Out: */ -#ifdef _LZMA_DEC_OPT +#ifdef Z7_LZMA_DEC_OPT -int MY_FAST_CALL LZMA_DECODE_REAL(CLzmaDec *p, SizeT limit, const Byte *bufLimit); +int Z7_FASTCALL LZMA_DECODE_REAL(CLzmaDec *p, SizeT limit, const Byte *bufLimit); #else static -int MY_FAST_CALL LZMA_DECODE_REAL(CLzmaDec *p, SizeT limit, const Byte *bufLimit) +int Z7_FASTCALL LZMA_DECODE_REAL(CLzmaDec *p, SizeT limit, const Byte *bufLimit) { CLzmaProb *probs = GET_PROBS; unsigned state = (unsigned)p->state; @@ -263,7 +263,7 @@ int MY_FAST_CALL LZMA_DECODE_REAL(CLzmaDec *p, SizeT limit, const Byte *bufLimit IF_BIT_0(prob) { unsigned symbol; - UPDATE_0(prob); + UPDATE_0(prob) prob = probs + Literal; if (processedPos != 0 || checkDicSize != 0) prob += (UInt32)3 * ((((processedPos << 8) + dic[(dicPos == 0 ? dicBufSize : dicPos) - 1]) & lpMask) << lc); @@ -273,7 +273,7 @@ int MY_FAST_CALL LZMA_DECODE_REAL(CLzmaDec *p, SizeT limit, const Byte *bufLimit { state -= (state < 4) ? state : 3; symbol = 1; - #ifdef _LZMA_SIZE_OPT + #ifdef Z7_LZMA_SIZE_OPT do { NORMAL_LITER_DEC } while (symbol < 0x100); #else NORMAL_LITER_DEC @@ -292,7 +292,7 @@ int MY_FAST_CALL LZMA_DECODE_REAL(CLzmaDec *p, SizeT limit, const Byte *bufLimit unsigned offs = 0x100; state -= (state < 10) ? 3 : 6; symbol = 1; - #ifdef _LZMA_SIZE_OPT + #ifdef Z7_LZMA_SIZE_OPT do { unsigned bit; @@ -321,25 +321,25 @@ int MY_FAST_CALL LZMA_DECODE_REAL(CLzmaDec *p, SizeT limit, const Byte *bufLimit } { - UPDATE_1(prob); + UPDATE_1(prob) prob = probs + IsRep + state; IF_BIT_0(prob) { - UPDATE_0(prob); + UPDATE_0(prob) state += kNumStates; prob = probs + LenCoder; } else { - UPDATE_1(prob); + UPDATE_1(prob) prob = probs + IsRepG0 + state; IF_BIT_0(prob) { - UPDATE_0(prob); + UPDATE_0(prob) prob = probs + IsRep0Long + COMBINED_PS_STATE; IF_BIT_0(prob) { - UPDATE_0(prob); + UPDATE_0(prob) // that case was checked before with kBadRepCode // if (checkDicSize == 0 && processedPos == 0) { len = kMatchSpecLen_Error_Data + 1; break; } @@ -353,30 +353,30 @@ int MY_FAST_CALL LZMA_DECODE_REAL(CLzmaDec *p, SizeT limit, const Byte *bufLimit state = state < kNumLitStates ? 9 : 11; continue; } - UPDATE_1(prob); + UPDATE_1(prob) } else { UInt32 distance; - UPDATE_1(prob); + UPDATE_1(prob) prob = probs + IsRepG1 + state; IF_BIT_0(prob) { - UPDATE_0(prob); + UPDATE_0(prob) distance = rep1; } else { - UPDATE_1(prob); + UPDATE_1(prob) prob = probs + IsRepG2 + state; IF_BIT_0(prob) { - UPDATE_0(prob); + UPDATE_0(prob) distance = rep2; } else { - UPDATE_1(prob); + UPDATE_1(prob) distance = rep3; rep3 = rep2; } @@ -389,37 +389,37 @@ int MY_FAST_CALL LZMA_DECODE_REAL(CLzmaDec *p, SizeT limit, const Byte *bufLimit prob = probs + RepLenCoder; } - #ifdef _LZMA_SIZE_OPT + #ifdef Z7_LZMA_SIZE_OPT { unsigned lim, offset; CLzmaProb *probLen = prob + LenChoice; IF_BIT_0(probLen) { - UPDATE_0(probLen); + UPDATE_0(probLen) probLen = prob + LenLow + GET_LEN_STATE; offset = 0; lim = (1 << kLenNumLowBits); } else { - UPDATE_1(probLen); + UPDATE_1(probLen) probLen = prob + LenChoice2; IF_BIT_0(probLen) { - UPDATE_0(probLen); + UPDATE_0(probLen) probLen = prob + LenLow + GET_LEN_STATE + (1 << kLenNumLowBits); offset = kLenNumLowSymbols; lim = (1 << kLenNumLowBits); } else { - UPDATE_1(probLen); + UPDATE_1(probLen) probLen = prob + LenHigh; offset = kLenNumLowSymbols * 2; lim = (1 << kLenNumHighBits); } } - TREE_DECODE(probLen, lim, len); + TREE_DECODE(probLen, lim, len) len += offset; } #else @@ -427,32 +427,32 @@ int MY_FAST_CALL LZMA_DECODE_REAL(CLzmaDec *p, SizeT limit, const Byte *bufLimit CLzmaProb *probLen = prob + LenChoice; IF_BIT_0(probLen) { - UPDATE_0(probLen); + UPDATE_0(probLen) probLen = prob + LenLow + GET_LEN_STATE; len = 1; - TREE_GET_BIT(probLen, len); - TREE_GET_BIT(probLen, len); - TREE_GET_BIT(probLen, len); + TREE_GET_BIT(probLen, len) + TREE_GET_BIT(probLen, len) + TREE_GET_BIT(probLen, len) len -= 8; } else { - UPDATE_1(probLen); + UPDATE_1(probLen) probLen = prob + LenChoice2; IF_BIT_0(probLen) { - UPDATE_0(probLen); + UPDATE_0(probLen) probLen = prob + LenLow + GET_LEN_STATE + (1 << kLenNumLowBits); len = 1; - TREE_GET_BIT(probLen, len); - TREE_GET_BIT(probLen, len); - TREE_GET_BIT(probLen, len); + TREE_GET_BIT(probLen, len) + TREE_GET_BIT(probLen, len) + TREE_GET_BIT(probLen, len) } else { - UPDATE_1(probLen); + UPDATE_1(probLen) probLen = prob + LenHigh; - TREE_DECODE(probLen, (1 << kLenNumHighBits), len); + TREE_DECODE(probLen, (1 << kLenNumHighBits), len) len += kLenNumLowSymbols * 2; } } @@ -464,7 +464,7 @@ int MY_FAST_CALL LZMA_DECODE_REAL(CLzmaDec *p, SizeT limit, const Byte *bufLimit UInt32 distance; prob = probs + PosSlot + ((len < kNumLenToPosStates ? len : kNumLenToPosStates - 1) << kNumPosSlotBits); - TREE_6_DECODE(prob, distance); + TREE_6_DECODE(prob, distance) if (distance >= kStartPosModelIndex) { unsigned posSlot = (unsigned)distance; @@ -479,7 +479,7 @@ int MY_FAST_CALL LZMA_DECODE_REAL(CLzmaDec *p, SizeT limit, const Byte *bufLimit distance++; do { - REV_BIT_VAR(prob, distance, m); + REV_BIT_VAR(prob, distance, m) } while (--numDirectBits); distance -= m; @@ -514,10 +514,10 @@ int MY_FAST_CALL LZMA_DECODE_REAL(CLzmaDec *p, SizeT limit, const Byte *bufLimit distance <<= kNumAlignBits; { unsigned i = 1; - REV_BIT_CONST(prob, i, 1); - REV_BIT_CONST(prob, i, 2); - REV_BIT_CONST(prob, i, 4); - REV_BIT_LAST (prob, i, 8); + REV_BIT_CONST(prob, i, 1) + REV_BIT_CONST(prob, i, 2) + REV_BIT_CONST(prob, i, 4) + REV_BIT_LAST (prob, i, 8) distance |= i; } if (distance == (UInt32)0xFFFFFFFF) @@ -592,7 +592,7 @@ int MY_FAST_CALL LZMA_DECODE_REAL(CLzmaDec *p, SizeT limit, const Byte *bufLimit } while (dicPos < limit && buf < bufLimit); - NORMALIZE; + NORMALIZE p->buf = buf; p->range = range; @@ -613,7 +613,7 @@ int MY_FAST_CALL LZMA_DECODE_REAL(CLzmaDec *p, SizeT limit, const Byte *bufLimit -static void MY_FAST_CALL LzmaDec_WriteRem(CLzmaDec *p, SizeT limit) +static void Z7_FASTCALL LzmaDec_WriteRem(CLzmaDec *p, SizeT limit) { unsigned len = (unsigned)p->remainLen; if (len == 0 /* || len >= kMatchSpecLenStart */) @@ -683,7 +683,7 @@ and we support the following state of (p->checkDicSize): (p->checkDicSize == p->prop.dicSize) */ -static int MY_FAST_CALL LzmaDec_DecodeReal2(CLzmaDec *p, SizeT limit, const Byte *bufLimit) +static int Z7_FASTCALL LzmaDec_DecodeReal2(CLzmaDec *p, SizeT limit, const Byte *bufLimit) { if (p->checkDicSize == 0) { @@ -767,54 +767,54 @@ static ELzmaDummy LzmaDec_TryDummy(const CLzmaDec *p, const Byte *buf, const Byt else { unsigned len; - UPDATE_1_CHECK; + UPDATE_1_CHECK prob = probs + IsRep + state; IF_BIT_0_CHECK(prob) { - UPDATE_0_CHECK; + UPDATE_0_CHECK state = 0; prob = probs + LenCoder; res = DUMMY_MATCH; } else { - UPDATE_1_CHECK; + UPDATE_1_CHECK res = DUMMY_REP; prob = probs + IsRepG0 + state; IF_BIT_0_CHECK(prob) { - UPDATE_0_CHECK; + UPDATE_0_CHECK prob = probs + IsRep0Long + COMBINED_PS_STATE; IF_BIT_0_CHECK(prob) { - UPDATE_0_CHECK; + UPDATE_0_CHECK break; } else { - UPDATE_1_CHECK; + UPDATE_1_CHECK } } else { - UPDATE_1_CHECK; + UPDATE_1_CHECK prob = probs + IsRepG1 + state; IF_BIT_0_CHECK(prob) { - UPDATE_0_CHECK; + UPDATE_0_CHECK } else { - UPDATE_1_CHECK; + UPDATE_1_CHECK prob = probs + IsRepG2 + state; IF_BIT_0_CHECK(prob) { - UPDATE_0_CHECK; + UPDATE_0_CHECK } else { - UPDATE_1_CHECK; + UPDATE_1_CHECK } } } @@ -826,31 +826,31 @@ static ELzmaDummy LzmaDec_TryDummy(const CLzmaDec *p, const Byte *buf, const Byt const CLzmaProb *probLen = prob + LenChoice; IF_BIT_0_CHECK(probLen) { - UPDATE_0_CHECK; + UPDATE_0_CHECK probLen = prob + LenLow + GET_LEN_STATE; offset = 0; limit = 1 << kLenNumLowBits; } else { - UPDATE_1_CHECK; + UPDATE_1_CHECK probLen = prob + LenChoice2; IF_BIT_0_CHECK(probLen) { - UPDATE_0_CHECK; + UPDATE_0_CHECK probLen = prob + LenLow + GET_LEN_STATE + (1 << kLenNumLowBits); offset = kLenNumLowSymbols; limit = 1 << kLenNumLowBits; } else { - UPDATE_1_CHECK; + UPDATE_1_CHECK probLen = prob + LenHigh; offset = kLenNumLowSymbols * 2; limit = 1 << kLenNumHighBits; } } - TREE_DECODE_CHECK(probLen, limit, len); + TREE_DECODE_CHECK(probLen, limit, len) len += offset; } @@ -860,7 +860,7 @@ static ELzmaDummy LzmaDec_TryDummy(const CLzmaDec *p, const Byte *buf, const Byt prob = probs + PosSlot + ((len < kNumLenToPosStates - 1 ? len : kNumLenToPosStates - 1) << kNumPosSlotBits); - TREE_DECODE_CHECK(prob, 1 << kNumPosSlotBits, posSlot); + TREE_DECODE_CHECK(prob, 1 << kNumPosSlotBits, posSlot) if (posSlot >= kStartPosModelIndex) { unsigned numDirectBits = ((posSlot >> 1) - 1); @@ -888,7 +888,7 @@ static ELzmaDummy LzmaDec_TryDummy(const CLzmaDec *p, const Byte *buf, const Byt unsigned m = 1; do { - REV_BIT_CHECK(prob, i, m); + REV_BIT_CHECK(prob, i, m) } while (--numDirectBits); } @@ -897,7 +897,7 @@ static ELzmaDummy LzmaDec_TryDummy(const CLzmaDec *p, const Byte *buf, const Byt } break; } - NORMALIZE_CHECK; + NORMALIZE_CHECK *bufOut = buf; return res; @@ -943,7 +943,7 @@ When the decoder lookahead, and the lookahead symbol is not end_marker, we have */ -#define RETURN__NOT_FINISHED__FOR_FINISH \ +#define RETURN_NOT_FINISHED_FOR_FINISH \ *status = LZMA_STATUS_NOT_FINISHED; \ return SZ_ERROR_DATA; // for strict mode // return SZ_OK; // for relaxed mode @@ -1029,7 +1029,7 @@ SRes LzmaDec_DecodeToDic(CLzmaDec *p, SizeT dicLimit, const Byte *src, SizeT *sr } if (p->remainLen != 0) { - RETURN__NOT_FINISHED__FOR_FINISH; + RETURN_NOT_FINISHED_FOR_FINISH } checkEndMarkNow = 1; } @@ -1072,7 +1072,7 @@ SRes LzmaDec_DecodeToDic(CLzmaDec *p, SizeT dicLimit, const Byte *src, SizeT *sr for (i = 0; i < (unsigned)dummyProcessed; i++) p->tempBuf[i] = src[i]; // p->remainLen = kMatchSpecLen_Error_Data; - RETURN__NOT_FINISHED__FOR_FINISH; + RETURN_NOT_FINISHED_FOR_FINISH } bufLimit = src; @@ -1150,7 +1150,7 @@ SRes LzmaDec_DecodeToDic(CLzmaDec *p, SizeT dicLimit, const Byte *src, SizeT *sr (*srcLen) += (unsigned)dummyProcessed - p->tempBufSize; p->tempBufSize = (unsigned)dummyProcessed; // p->remainLen = kMatchSpecLen_Error_Data; - RETURN__NOT_FINISHED__FOR_FINISH; + RETURN_NOT_FINISHED_FOR_FINISH } } @@ -1299,8 +1299,8 @@ static SRes LzmaDec_AllocateProbs2(CLzmaDec *p, const CLzmaProps *propNew, ISzAl SRes LzmaDec_AllocateProbs(CLzmaDec *p, const Byte *props, unsigned propsSize, ISzAllocPtr alloc) { CLzmaProps propNew; - RINOK(LzmaProps_Decode(&propNew, props, propsSize)); - RINOK(LzmaDec_AllocateProbs2(p, &propNew, alloc)); + RINOK(LzmaProps_Decode(&propNew, props, propsSize)) + RINOK(LzmaDec_AllocateProbs2(p, &propNew, alloc)) p->prop = propNew; return SZ_OK; } @@ -1309,14 +1309,14 @@ SRes LzmaDec_Allocate(CLzmaDec *p, const Byte *props, unsigned propsSize, ISzAll { CLzmaProps propNew; SizeT dicBufSize; - RINOK(LzmaProps_Decode(&propNew, props, propsSize)); - RINOK(LzmaDec_AllocateProbs2(p, &propNew, alloc)); + RINOK(LzmaProps_Decode(&propNew, props, propsSize)) + RINOK(LzmaDec_AllocateProbs2(p, &propNew, alloc)) { UInt32 dictSize = propNew.dicSize; SizeT mask = ((UInt32)1 << 12) - 1; if (dictSize >= ((UInt32)1 << 30)) mask = ((UInt32)1 << 22) - 1; - else if (dictSize >= ((UInt32)1 << 22)) mask = ((UInt32)1 << 20) - 1;; + else if (dictSize >= ((UInt32)1 << 22)) mask = ((UInt32)1 << 20) - 1; dicBufSize = ((SizeT)dictSize + mask) & ~mask; if (dicBufSize < dictSize) dicBufSize = dictSize; @@ -1348,8 +1348,8 @@ SRes LzmaDecode(Byte *dest, SizeT *destLen, const Byte *src, SizeT *srcLen, *status = LZMA_STATUS_NOT_SPECIFIED; if (inSize < RC_INIT_SIZE) return SZ_ERROR_INPUT_EOF; - LzmaDec_Construct(&p); - RINOK(LzmaDec_AllocateProbs(&p, propData, propSize, alloc)); + LzmaDec_CONSTRUCT(&p) + RINOK(LzmaDec_AllocateProbs(&p, propData, propSize, alloc)) p.dic = dest; p.dicBufSize = outSize; LzmaDec_Init(&p); diff --git a/deps/LZMA-SDK/C/LzmaDec.h b/deps/LZMA-SDK/C/LzmaDec.h index 6f1296250..b0ce28fa0 100644 --- a/deps/LZMA-SDK/C/LzmaDec.h +++ b/deps/LZMA-SDK/C/LzmaDec.h @@ -1,19 +1,19 @@ /* LzmaDec.h -- LZMA Decoder -2020-03-19 : Igor Pavlov : Public domain */ +2023-04-02 : Igor Pavlov : Public domain */ -#ifndef __LZMA_DEC_H -#define __LZMA_DEC_H +#ifndef ZIP7_INC_LZMA_DEC_H +#define ZIP7_INC_LZMA_DEC_H #include "7zTypes.h" EXTERN_C_BEGIN -/* #define _LZMA_PROB32 */ -/* _LZMA_PROB32 can increase the speed on some CPUs, +/* #define Z7_LZMA_PROB32 */ +/* Z7_LZMA_PROB32 can increase the speed on some CPUs, but memory usage for CLzmaDec::probs will be doubled in that case */ typedef -#ifdef _LZMA_PROB32 +#ifdef Z7_LZMA_PROB32 UInt32 #else UInt16 @@ -25,7 +25,7 @@ typedef #define LZMA_PROPS_SIZE 5 -typedef struct _CLzmaProps +typedef struct { Byte lc; Byte lp; @@ -73,7 +73,8 @@ typedef struct Byte tempBuf[LZMA_REQUIRED_INPUT_MAX]; } CLzmaDec; -#define LzmaDec_Construct(p) { (p)->dic = NULL; (p)->probs = NULL; } +#define LzmaDec_CONSTRUCT(p) { (p)->dic = NULL; (p)->probs = NULL; } +#define LzmaDec_Construct(p) LzmaDec_CONSTRUCT(p) void LzmaDec_Init(CLzmaDec *p); diff --git a/deps/LZMA-SDK/C/LzmaEnc.c b/deps/LZMA-SDK/C/LzmaEnc.c index c8b31a19e..088b78f8b 100644 --- a/deps/LZMA-SDK/C/LzmaEnc.c +++ b/deps/LZMA-SDK/C/LzmaEnc.c @@ -1,5 +1,5 @@ /* LzmaEnc.c -- LZMA Encoder -2022-07-15: Igor Pavlov : Public domain */ +Igor Pavlov : Public domain */ #include "Precomp.h" @@ -16,22 +16,22 @@ #include "LzmaEnc.h" #include "LzFind.h" -#ifndef _7ZIP_ST +#ifndef Z7_ST #include "LzFindMt.h" #endif /* the following LzmaEnc_* declarations is internal LZMA interface for LZMA2 encoder */ -SRes LzmaEnc_PrepareForLzma2(CLzmaEncHandle pp, ISeqInStream *inStream, UInt32 keepWindowSize, +SRes LzmaEnc_PrepareForLzma2(CLzmaEncHandle p, ISeqInStreamPtr inStream, UInt32 keepWindowSize, ISzAllocPtr alloc, ISzAllocPtr allocBig); -SRes LzmaEnc_MemPrepare(CLzmaEncHandle pp, const Byte *src, SizeT srcLen, +SRes LzmaEnc_MemPrepare(CLzmaEncHandle p, const Byte *src, SizeT srcLen, UInt32 keepWindowSize, ISzAllocPtr alloc, ISzAllocPtr allocBig); -SRes LzmaEnc_CodeOneMemBlock(CLzmaEncHandle pp, BoolInt reInit, +SRes LzmaEnc_CodeOneMemBlock(CLzmaEncHandle p, BoolInt reInit, Byte *dest, size_t *destLen, UInt32 desiredPackSize, UInt32 *unpackSize); -const Byte *LzmaEnc_GetCurBuf(CLzmaEncHandle pp); -void LzmaEnc_Finish(CLzmaEncHandle pp); -void LzmaEnc_SaveState(CLzmaEncHandle pp); -void LzmaEnc_RestoreState(CLzmaEncHandle pp); +const Byte *LzmaEnc_GetCurBuf(CLzmaEncHandle p); +void LzmaEnc_Finish(CLzmaEncHandle p); +void LzmaEnc_SaveState(CLzmaEncHandle p); +void LzmaEnc_RestoreState(CLzmaEncHandle p); #ifdef SHOW_STAT static unsigned g_STAT_OFFSET = 0; @@ -40,8 +40,8 @@ static unsigned g_STAT_OFFSET = 0; /* for good normalization speed we still reserve 256 MB before 4 GB range */ #define kLzmaMaxHistorySize ((UInt32)15 << 28) -#define kNumTopBits 24 -#define kTopValue ((UInt32)1 << kNumTopBits) +// #define kNumTopBits 24 +#define kTopValue ((UInt32)1 << 24) #define kNumBitModelTotalBits 11 #define kBitModelTotal (1 << kNumBitModelTotalBits) @@ -60,6 +60,7 @@ void LzmaEncProps_Init(CLzmaEncProps *p) p->dictSize = p->mc = 0; p->reduceSize = (UInt64)(Int64)-1; p->lc = p->lp = p->pb = p->algo = p->fb = p->btMode = p->numHashBytes = p->numThreads = -1; + p->numHashOutBits = 0; p->writeEndMark = 0; p->affinity = 0; } @@ -71,11 +72,11 @@ void LzmaEncProps_Normalize(CLzmaEncProps *p) p->level = level; if (p->dictSize == 0) - p->dictSize = - ( level <= 3 ? ((UInt32)1 << (level * 2 + 16)) : - ( level <= 6 ? ((UInt32)1 << (level + 19)) : - ( level <= 7 ? ((UInt32)1 << 25) : ((UInt32)1 << 26) - ))); + p->dictSize = (unsigned)level <= 4 ? + (UInt32)1 << (level * 2 + 16) : + (unsigned)level <= sizeof(size_t) / 2 + 4 ? + (UInt32)1 << (level + 20) : + (UInt32)1 << (sizeof(size_t) / 2 + 24); if (p->dictSize > p->reduceSize) { @@ -91,15 +92,15 @@ void LzmaEncProps_Normalize(CLzmaEncProps *p) if (p->lp < 0) p->lp = 0; if (p->pb < 0) p->pb = 2; - if (p->algo < 0) p->algo = (level < 5 ? 0 : 1); - if (p->fb < 0) p->fb = (level < 7 ? 32 : 64); + if (p->algo < 0) p->algo = (unsigned)level < 5 ? 0 : 1; + if (p->fb < 0) p->fb = (unsigned)level < 7 ? 32 : 64; if (p->btMode < 0) p->btMode = (p->algo == 0 ? 0 : 1); if (p->numHashBytes < 0) p->numHashBytes = (p->btMode ? 4 : 5); if (p->mc == 0) p->mc = (16 + ((unsigned)p->fb >> 1)) >> (p->btMode ? 0 : 1); if (p->numThreads < 0) p->numThreads = - #ifndef _7ZIP_ST + #ifndef Z7_ST ((p->btMode && p->algo) ? 2 : 1); #else 1; @@ -194,11 +195,11 @@ unsigned GetPosSlot1(UInt32 pos); unsigned GetPosSlot1(UInt32 pos) { unsigned res; - BSR2_RET(pos, res); + BSR2_RET(pos, res) return res; } -#define GetPosSlot2(pos, res) { BSR2_RET(pos, res); } -#define GetPosSlot(pos, res) { if (pos < 2) res = pos; else BSR2_RET(pos, res); } +#define GetPosSlot2(pos, res) { BSR2_RET(pos, res) } +#define GetPosSlot(pos, res) { if (pos < 2) res = pos; else BSR2_RET(pos, res) } #else // ! LZMA_LOG_BSR @@ -293,7 +294,7 @@ typedef struct #define kNumFullDistances (1 << (kEndPosModelIndex >> 1)) typedef -#ifdef _LZMA_PROB32 +#ifdef Z7_LZMA_PROB32 UInt32 #else UInt16 @@ -350,7 +351,7 @@ typedef struct Byte *buf; Byte *bufLim; Byte *bufBase; - ISeqOutStream *outStream; + ISeqOutStreamPtr outStream; UInt64 processed; SRes res; } CRangeEnc; @@ -383,7 +384,7 @@ typedef struct typedef UInt32 CProbPrice; -typedef struct +struct CLzmaEnc { void *matchFinderObj; IMatchFinder2 matchFinder; @@ -426,7 +427,7 @@ typedef struct UInt32 dictSize; SRes result; - #ifndef _7ZIP_ST + #ifndef Z7_ST BoolInt mtMode; // begin of CMatchFinderMt is used in LZ thread CMatchFinderMt matchFinderMt; @@ -439,7 +440,7 @@ typedef struct // we suppose that we have 8-bytes alignment after CMatchFinder - #ifndef _7ZIP_ST + #ifndef Z7_ST Byte pad[128]; #endif @@ -479,77 +480,59 @@ typedef struct CSaveState saveState; // BoolInt mf_Failure; - #ifndef _7ZIP_ST + #ifndef Z7_ST Byte pad2[128]; #endif -} CLzmaEnc; +}; #define MFB (p->matchFinderBase) /* -#ifndef _7ZIP_ST +#ifndef Z7_ST #define MFB (p->matchFinderMt.MatchFinder) #endif */ -#define COPY_ARR(dest, src, arr) memcpy(dest->arr, src->arr, sizeof(src->arr)); +// #define GET_CLzmaEnc_p CLzmaEnc *p = (CLzmaEnc*)(void *)p; +// #define GET_const_CLzmaEnc_p const CLzmaEnc *p = (const CLzmaEnc*)(const void *)p; -void LzmaEnc_SaveState(CLzmaEncHandle pp) +#define COPY_ARR(dest, src, arr) memcpy((dest)->arr, (src)->arr, sizeof((src)->arr)); + +#define COPY_LZMA_ENC_STATE(d, s, p) \ + (d)->state = (s)->state; \ + COPY_ARR(d, s, reps) \ + COPY_ARR(d, s, posAlignEncoder) \ + COPY_ARR(d, s, isRep) \ + COPY_ARR(d, s, isRepG0) \ + COPY_ARR(d, s, isRepG1) \ + COPY_ARR(d, s, isRepG2) \ + COPY_ARR(d, s, isMatch) \ + COPY_ARR(d, s, isRep0Long) \ + COPY_ARR(d, s, posSlotEncoder) \ + COPY_ARR(d, s, posEncoders) \ + (d)->lenProbs = (s)->lenProbs; \ + (d)->repLenProbs = (s)->repLenProbs; \ + memcpy((d)->litProbs, (s)->litProbs, ((size_t)0x300 * sizeof(CLzmaProb)) << (p)->lclp); + +void LzmaEnc_SaveState(CLzmaEncHandle p) { - CLzmaEnc *p = (CLzmaEnc *)pp; - CSaveState *dest = &p->saveState; - - dest->state = p->state; - - dest->lenProbs = p->lenProbs; - dest->repLenProbs = p->repLenProbs; + // GET_CLzmaEnc_p + CSaveState *v = &p->saveState; + COPY_LZMA_ENC_STATE(v, p, p) +} - COPY_ARR(dest, p, reps); - - COPY_ARR(dest, p, posAlignEncoder); - COPY_ARR(dest, p, isRep); - COPY_ARR(dest, p, isRepG0); - COPY_ARR(dest, p, isRepG1); - COPY_ARR(dest, p, isRepG2); - COPY_ARR(dest, p, isMatch); - COPY_ARR(dest, p, isRep0Long); - COPY_ARR(dest, p, posSlotEncoder); - COPY_ARR(dest, p, posEncoders); - - memcpy(dest->litProbs, p->litProbs, ((UInt32)0x300 << p->lclp) * sizeof(CLzmaProb)); +void LzmaEnc_RestoreState(CLzmaEncHandle p) +{ + // GET_CLzmaEnc_p + const CSaveState *v = &p->saveState; + COPY_LZMA_ENC_STATE(p, v, p) } -void LzmaEnc_RestoreState(CLzmaEncHandle pp) +Z7_NO_INLINE +SRes LzmaEnc_SetProps(CLzmaEncHandle p, const CLzmaEncProps *props2) { - CLzmaEnc *dest = (CLzmaEnc *)pp; - const CSaveState *p = &dest->saveState; - - dest->state = p->state; - - dest->lenProbs = p->lenProbs; - dest->repLenProbs = p->repLenProbs; - - COPY_ARR(dest, p, reps); - - COPY_ARR(dest, p, posAlignEncoder); - COPY_ARR(dest, p, isRep); - COPY_ARR(dest, p, isRepG0); - COPY_ARR(dest, p, isRepG1); - COPY_ARR(dest, p, isRepG2); - COPY_ARR(dest, p, isMatch); - COPY_ARR(dest, p, isRep0Long); - COPY_ARR(dest, p, posSlotEncoder); - COPY_ARR(dest, p, posEncoders); - - memcpy(dest->litProbs, p->litProbs, ((UInt32)0x300 << dest->lclp) * sizeof(CLzmaProb)); -} - - - -SRes LzmaEnc_SetProps(CLzmaEncHandle pp, const CLzmaEncProps *props2) -{ - CLzmaEnc *p = (CLzmaEnc *)pp; + // GET_CLzmaEnc_p CLzmaEncProps props = *props2; LzmaEncProps_Normalize(&props); @@ -585,6 +568,7 @@ SRes LzmaEnc_SetProps(CLzmaEncHandle pp, const CLzmaEncProps *props2) p->fastMode = (props.algo == 0); // p->_maxMode = True; MFB.btMode = (Byte)(props.btMode ? 1 : 0); + // MFB.btMode = (Byte)(props.btMode); { unsigned numHashBytes = 4; if (props.btMode) @@ -595,13 +579,15 @@ SRes LzmaEnc_SetProps(CLzmaEncHandle pp, const CLzmaEncProps *props2) if (props.numHashBytes >= 5) numHashBytes = 5; MFB.numHashBytes = numHashBytes; + // MFB.numHashBytes_Min = 2; + MFB.numHashOutBits = (Byte)props.numHashOutBits; } MFB.cutValue = props.mc; p->writeEndMark = (BoolInt)props.writeEndMark; - #ifndef _7ZIP_ST + #ifndef Z7_ST /* if (newMultiThread != _multiThread) { @@ -618,9 +604,9 @@ SRes LzmaEnc_SetProps(CLzmaEncHandle pp, const CLzmaEncProps *props2) } -void LzmaEnc_SetDataSize(CLzmaEncHandle pp, UInt64 expectedDataSiize) +void LzmaEnc_SetDataSize(CLzmaEncHandle p, UInt64 expectedDataSiize) { - CLzmaEnc *p = (CLzmaEnc *)pp; + // GET_CLzmaEnc_p MFB.expectedDataSize = expectedDataSiize; } @@ -684,7 +670,7 @@ static void RangeEnc_Init(CRangeEnc *p) p->res = SZ_OK; } -MY_NO_INLINE static void RangeEnc_FlushStream(CRangeEnc *p) +Z7_NO_INLINE static void RangeEnc_FlushStream(CRangeEnc *p) { const size_t num = (size_t)(p->buf - p->bufBase); if (p->res == SZ_OK) @@ -696,7 +682,7 @@ MY_NO_INLINE static void RangeEnc_FlushStream(CRangeEnc *p) p->buf = p->bufBase; } -MY_NO_INLINE static void MY_FAST_CALL RangeEnc_ShiftLow(CRangeEnc *p) +Z7_NO_INLINE static void Z7_FASTCALL RangeEnc_ShiftLow(CRangeEnc *p) { UInt32 low = (UInt32)p->low; unsigned high = (unsigned)(p->low >> 32); @@ -741,9 +727,9 @@ static void RangeEnc_FlushData(CRangeEnc *p) ttt = *(prob); \ newBound = (range >> kNumBitModelTotalBits) * ttt; -// #define _LZMA_ENC_USE_BRANCH +// #define Z7_LZMA_ENC_USE_BRANCH -#ifdef _LZMA_ENC_USE_BRANCH +#ifdef Z7_LZMA_ENC_USE_BRANCH #define RC_BIT(p, prob, bit) { \ RC_BIT_PRE(p, prob) \ @@ -811,7 +797,7 @@ static void LitEnc_Encode(CRangeEnc *p, CLzmaProb *probs, UInt32 sym) CLzmaProb *prob = probs + (sym >> 8); UInt32 bit = (sym >> 7) & 1; sym <<= 1; - RC_BIT(p, prob, bit); + RC_BIT(p, prob, bit) } while (sym < 0x10000); p->range = range; @@ -833,7 +819,7 @@ static void LitEnc_EncodeMatched(CRangeEnc *p, CLzmaProb *probs, UInt32 sym, UIn bit = (sym >> 7) & 1; sym <<= 1; offs &= ~(matchByte ^ sym); - RC_BIT(p, prob, bit); + RC_BIT(p, prob, bit) } while (sym < 0x10000); p->range = range; @@ -867,10 +853,10 @@ static void LzmaEnc_InitPriceTables(CProbPrice *ProbPrices) #define GET_PRICE(prob, bit) \ - p->ProbPrices[((prob) ^ (unsigned)(((-(int)(bit))) & (kBitModelTotal - 1))) >> kNumMoveReducingBits]; + p->ProbPrices[((prob) ^ (unsigned)(((-(int)(bit))) & (kBitModelTotal - 1))) >> kNumMoveReducingBits] #define GET_PRICEa(prob, bit) \ - ProbPrices[((prob) ^ (unsigned)((-((int)(bit))) & (kBitModelTotal - 1))) >> kNumMoveReducingBits]; + ProbPrices[((prob) ^ (unsigned)((-((int)(bit))) & (kBitModelTotal - 1))) >> kNumMoveReducingBits] #define GET_PRICE_0(prob) p->ProbPrices[(prob) >> kNumMoveReducingBits] #define GET_PRICE_1(prob) p->ProbPrices[((prob) ^ (kBitModelTotal - 1)) >> kNumMoveReducingBits] @@ -921,7 +907,7 @@ static void RcTree_ReverseEncode(CRangeEnc *rc, CLzmaProb *probs, unsigned numBi unsigned bit = sym & 1; // RangeEnc_EncodeBit(rc, probs + m, bit); sym >>= 1; - RC_BIT(rc, probs + m, bit); + RC_BIT(rc, probs + m, bit) m = (m << 1) | bit; } while (--numBits); @@ -944,15 +930,15 @@ static void LenEnc_Encode(CLenEnc *p, CRangeEnc *rc, unsigned sym, unsigned posS UInt32 range, ttt, newBound; CLzmaProb *probs = p->low; range = rc->range; - RC_BIT_PRE(rc, probs); + RC_BIT_PRE(rc, probs) if (sym >= kLenNumLowSymbols) { - RC_BIT_1(rc, probs); + RC_BIT_1(rc, probs) probs += kLenNumLowSymbols; - RC_BIT_PRE(rc, probs); + RC_BIT_PRE(rc, probs) if (sym >= kLenNumLowSymbols * 2) { - RC_BIT_1(rc, probs); + RC_BIT_1(rc, probs) rc->range = range; // RcTree_Encode(rc, p->high, kLenNumHighBits, sym - kLenNumLowSymbols * 2); LitEnc_Encode(rc, p->high, sym - kLenNumLowSymbols * 2); @@ -965,11 +951,11 @@ static void LenEnc_Encode(CLenEnc *p, CRangeEnc *rc, unsigned sym, unsigned posS { unsigned m; unsigned bit; - RC_BIT_0(rc, probs); + RC_BIT_0(rc, probs) probs += (posState << (1 + kLenNumLowBits)); - bit = (sym >> 2) ; RC_BIT(rc, probs + 1, bit); m = (1 << 1) + bit; - bit = (sym >> 1) & 1; RC_BIT(rc, probs + m, bit); m = (m << 1) + bit; - bit = sym & 1; RC_BIT(rc, probs + m, bit); + bit = (sym >> 2) ; RC_BIT(rc, probs + 1, bit) m = (1 << 1) + bit; + bit = (sym >> 1) & 1; RC_BIT(rc, probs + m, bit) m = (m << 1) + bit; + bit = sym & 1; RC_BIT(rc, probs + m, bit) rc->range = range; } } @@ -990,7 +976,7 @@ static void SetPrices_3(const CLzmaProb *probs, UInt32 startPrice, UInt32 *price } -MY_NO_INLINE static void MY_FAST_CALL LenPriceEnc_UpdateTables( +Z7_NO_INLINE static void Z7_FASTCALL LenPriceEnc_UpdateTables( CLenPriceEnc *p, unsigned numPosStates, const CLenEnc *enc, @@ -1054,14 +1040,14 @@ MY_NO_INLINE static void MY_FAST_CALL LenPriceEnc_UpdateTables( UInt32 price = b; do { - unsigned bit = sym & 1; + const unsigned bit = sym & 1; sym >>= 1; price += GET_PRICEa(probs[sym], bit); } while (sym >= 2); { - unsigned prob = probs[(size_t)i + (1 << (kLenNumHighBits - 1))]; + const unsigned prob = probs[(size_t)i + (1 << (kLenNumHighBits - 1))]; prices[(size_t)i * 2 ] = price + GET_PRICEa_0(prob); prices[(size_t)i * 2 + 1] = price + GET_PRICEa_1(prob); } @@ -1070,7 +1056,7 @@ MY_NO_INLINE static void MY_FAST_CALL LenPriceEnc_UpdateTables( { unsigned posState; - size_t num = (p->tableSize - kLenNumLowSymbols * 2) * sizeof(p->prices[0][0]); + const size_t num = (p->tableSize - kLenNumLowSymbols * 2) * sizeof(p->prices[0][0]); for (posState = 1; posState < numPosStates; posState++) memcpy(p->prices[posState] + kLenNumLowSymbols * 2, p->prices[0] + kLenNumLowSymbols * 2, num); } @@ -1152,7 +1138,7 @@ static unsigned ReadMatchDistances(CLzmaEnc *p, unsigned *numPairsRes) + GET_PRICE_1(p->isRep[state]) \ + GET_PRICE_0(p->isRepG0[state]) -MY_FORCE_INLINE +Z7_FORCE_INLINE static UInt32 GetPrice_PureRep(const CLzmaEnc *p, unsigned repIndex, size_t state, size_t posState) { UInt32 price; @@ -1331,7 +1317,7 @@ static unsigned GetOptimum(CLzmaEnc *p, UInt32 position) LitEnc_GetPrice(probs, curByte, p->ProbPrices)); } - MakeAs_Lit(&p->opt[1]); + MakeAs_Lit(&p->opt[1]) matchPrice = GET_PRICE_1(p->isMatch[p->state][posState]); repMatchPrice = matchPrice + GET_PRICE_1(p->isRep[p->state]); @@ -1343,7 +1329,7 @@ static unsigned GetOptimum(CLzmaEnc *p, UInt32 position) if (shortRepPrice < p->opt[1].price) { p->opt[1].price = shortRepPrice; - MakeAs_ShortRep(&p->opt[1]); + MakeAs_ShortRep(&p->opt[1]) } if (last < 2) { @@ -1410,7 +1396,7 @@ static unsigned GetOptimum(CLzmaEnc *p, UInt32 position) else { unsigned slot; - GetPosSlot2(dist, slot); + GetPosSlot2(dist, slot) price += p->alignPrices[dist & kAlignMask]; price += p->posSlotPrices[lenToPosState][slot]; } @@ -1486,7 +1472,7 @@ static unsigned GetOptimum(CLzmaEnc *p, UInt32 position) unsigned delta = best - cur; if (delta != 0) { - MOVE_POS(p, delta); + MOVE_POS(p, delta) } } cur = best; @@ -1633,7 +1619,7 @@ static unsigned GetOptimum(CLzmaEnc *p, UInt32 position) { nextOpt->price = litPrice; nextOpt->len = 1; - MakeAs_Lit(nextOpt); + MakeAs_Lit(nextOpt) nextIsLit = True; } } @@ -1667,7 +1653,7 @@ static unsigned GetOptimum(CLzmaEnc *p, UInt32 position) { nextOpt->price = shortRepPrice; nextOpt->len = 1; - MakeAs_ShortRep(nextOpt); + MakeAs_ShortRep(nextOpt) nextIsLit = False; } } @@ -1871,7 +1857,7 @@ static unsigned GetOptimum(CLzmaEnc *p, UInt32 position) dist = MATCHES[(size_t)offs + 1]; // if (dist >= kNumFullDistances) - GetPosSlot2(dist, posSlot); + GetPosSlot2(dist, posSlot) for (len = /*2*/ startLen; ; len++) { @@ -1962,7 +1948,7 @@ static unsigned GetOptimum(CLzmaEnc *p, UInt32 position) break; dist = MATCHES[(size_t)offs + 1]; // if (dist >= kNumFullDistances) - GetPosSlot2(dist, posSlot); + GetPosSlot2(dist, posSlot) } } } @@ -2138,7 +2124,7 @@ static void WriteEndMarker(CLzmaEnc *p, unsigned posState) { UInt32 ttt, newBound; RC_BIT_PRE(p, probs + m) - RC_BIT_1(&p->rc, probs + m); + RC_BIT_1(&p->rc, probs + m) m = (m << 1) + 1; } while (m < (1 << kNumPosSlotBits)); @@ -2163,7 +2149,7 @@ static void WriteEndMarker(CLzmaEnc *p, unsigned posState) { UInt32 ttt, newBound; RC_BIT_PRE(p, probs + m) - RC_BIT_1(&p->rc, probs + m); + RC_BIT_1(&p->rc, probs + m) m = (m << 1) + 1; } while (m < kAlignTableSize); @@ -2179,7 +2165,7 @@ static SRes CheckErrors(CLzmaEnc *p) if (p->rc.res != SZ_OK) p->result = SZ_ERROR_WRITE; - #ifndef _7ZIP_ST + #ifndef Z7_ST if ( // p->mf_Failure || (p->mtMode && @@ -2187,7 +2173,7 @@ static SRes CheckErrors(CLzmaEnc *p) p->matchFinderMt.failure_LZ_BT)) ) { - p->result = MY_HRES_ERROR__INTERNAL_ERROR; + p->result = MY_HRES_ERROR_INTERNAL_ERROR; // printf("\nCheckErrors p->matchFinderMt.failureLZ\n"); } #endif @@ -2201,7 +2187,7 @@ static SRes CheckErrors(CLzmaEnc *p) } -MY_NO_INLINE static SRes Flush(CLzmaEnc *p, UInt32 nowPos) +Z7_NO_INLINE static SRes Flush(CLzmaEnc *p, UInt32 nowPos) { /* ReleaseMFStream(); */ p->finished = True; @@ -2213,7 +2199,7 @@ MY_NO_INLINE static SRes Flush(CLzmaEnc *p, UInt32 nowPos) } -MY_NO_INLINE static void FillAlignPrices(CLzmaEnc *p) +Z7_NO_INLINE static void FillAlignPrices(CLzmaEnc *p) { unsigned i; const CProbPrice *ProbPrices = p->ProbPrices; @@ -2237,7 +2223,7 @@ MY_NO_INLINE static void FillAlignPrices(CLzmaEnc *p) } -MY_NO_INLINE static void FillDistancesPrices(CLzmaEnc *p) +Z7_NO_INLINE static void FillDistancesPrices(CLzmaEnc *p) { // int y; for (y = 0; y < 100; y++) { @@ -2337,7 +2323,7 @@ static void LzmaEnc_Construct(CLzmaEnc *p) RangeEnc_Construct(&p->rc); MatchFinder_Construct(&MFB); - #ifndef _7ZIP_ST + #ifndef Z7_ST p->matchFinderMt.MatchFinder = &MFB; MatchFinderMt_Construct(&p->matchFinderMt); #endif @@ -2345,7 +2331,7 @@ static void LzmaEnc_Construct(CLzmaEnc *p) { CLzmaEncProps props; LzmaEncProps_Init(&props); - LzmaEnc_SetProps(p, &props); + LzmaEnc_SetProps((CLzmaEncHandle)(void *)p, &props); } #ifndef LZMA_LOG_BSR @@ -2376,7 +2362,7 @@ static void LzmaEnc_FreeLits(CLzmaEnc *p, ISzAllocPtr alloc) static void LzmaEnc_Destruct(CLzmaEnc *p, ISzAllocPtr alloc, ISzAllocPtr allocBig) { - #ifndef _7ZIP_ST + #ifndef Z7_ST MatchFinderMt_Destruct(&p->matchFinderMt, allocBig); #endif @@ -2387,21 +2373,22 @@ static void LzmaEnc_Destruct(CLzmaEnc *p, ISzAllocPtr alloc, ISzAllocPtr allocBi void LzmaEnc_Destroy(CLzmaEncHandle p, ISzAllocPtr alloc, ISzAllocPtr allocBig) { - LzmaEnc_Destruct((CLzmaEnc *)p, alloc, allocBig); + // GET_CLzmaEnc_p + LzmaEnc_Destruct(p, alloc, allocBig); ISzAlloc_Free(alloc, p); } -MY_NO_INLINE +Z7_NO_INLINE static SRes LzmaEnc_CodeOneBlock(CLzmaEnc *p, UInt32 maxPackSize, UInt32 maxUnpackSize) { UInt32 nowPos32, startPos32; if (p->needInit) { - #ifndef _7ZIP_ST + #ifndef Z7_ST if (p->mtMode) { - RINOK(MatchFinderMt_InitMt(&p->matchFinderMt)); + RINOK(MatchFinderMt_InitMt(&p->matchFinderMt)) } #endif p->matchFinder.Init(p->matchFinderObj); @@ -2410,7 +2397,7 @@ static SRes LzmaEnc_CodeOneBlock(CLzmaEnc *p, UInt32 maxPackSize, UInt32 maxUnpa if (p->finished) return p->result; - RINOK(CheckErrors(p)); + RINOK(CheckErrors(p)) nowPos32 = (UInt32)p->nowPos64; startPos32 = nowPos32; @@ -2473,7 +2460,7 @@ static SRes LzmaEnc_CodeOneBlock(CLzmaEnc *p, UInt32 maxPackSize, UInt32 maxUnpa const Byte *data; unsigned state; - RC_BIT_0(&p->rc, probs); + RC_BIT_0(&p->rc, probs) p->rc.range = range; data = p->matchFinder.GetPointerToCurrentPos(p->matchFinderObj) - p->additionalOffset; probs = LIT_PROBS(nowPos32, *(data - 1)); @@ -2487,53 +2474,53 @@ static SRes LzmaEnc_CodeOneBlock(CLzmaEnc *p, UInt32 maxPackSize, UInt32 maxUnpa } else { - RC_BIT_1(&p->rc, probs); + RC_BIT_1(&p->rc, probs) probs = &p->isRep[p->state]; RC_BIT_PRE(&p->rc, probs) if (dist < LZMA_NUM_REPS) { - RC_BIT_1(&p->rc, probs); + RC_BIT_1(&p->rc, probs) probs = &p->isRepG0[p->state]; RC_BIT_PRE(&p->rc, probs) if (dist == 0) { - RC_BIT_0(&p->rc, probs); + RC_BIT_0(&p->rc, probs) probs = &p->isRep0Long[p->state][posState]; RC_BIT_PRE(&p->rc, probs) if (len != 1) { - RC_BIT_1_BASE(&p->rc, probs); + RC_BIT_1_BASE(&p->rc, probs) } else { - RC_BIT_0_BASE(&p->rc, probs); + RC_BIT_0_BASE(&p->rc, probs) p->state = kShortRepNextStates[p->state]; } } else { - RC_BIT_1(&p->rc, probs); + RC_BIT_1(&p->rc, probs) probs = &p->isRepG1[p->state]; RC_BIT_PRE(&p->rc, probs) if (dist == 1) { - RC_BIT_0_BASE(&p->rc, probs); + RC_BIT_0_BASE(&p->rc, probs) dist = p->reps[1]; } else { - RC_BIT_1(&p->rc, probs); + RC_BIT_1(&p->rc, probs) probs = &p->isRepG2[p->state]; RC_BIT_PRE(&p->rc, probs) if (dist == 2) { - RC_BIT_0_BASE(&p->rc, probs); + RC_BIT_0_BASE(&p->rc, probs) dist = p->reps[2]; } else { - RC_BIT_1_BASE(&p->rc, probs); + RC_BIT_1_BASE(&p->rc, probs) dist = p->reps[3]; p->reps[3] = p->reps[2]; } @@ -2557,7 +2544,7 @@ static SRes LzmaEnc_CodeOneBlock(CLzmaEnc *p, UInt32 maxPackSize, UInt32 maxUnpa else { unsigned posSlot; - RC_BIT_0(&p->rc, probs); + RC_BIT_0(&p->rc, probs) p->rc.range = range; p->state = kMatchNextStates[p->state]; @@ -2571,7 +2558,7 @@ static SRes LzmaEnc_CodeOneBlock(CLzmaEnc *p, UInt32 maxPackSize, UInt32 maxUnpa p->reps[0] = dist + 1; p->matchPriceCount++; - GetPosSlot(dist, posSlot); + GetPosSlot(dist, posSlot) // RcTree_Encode_PosSlot(&p->rc, p->posSlotEncoder[GetLenToPosState(len)], posSlot); { UInt32 sym = (UInt32)posSlot + (1 << kNumPosSlotBits); @@ -2582,7 +2569,7 @@ static SRes LzmaEnc_CodeOneBlock(CLzmaEnc *p, UInt32 maxPackSize, UInt32 maxUnpa CLzmaProb *prob = probs + (sym >> kNumPosSlotBits); UInt32 bit = (sym >> (kNumPosSlotBits - 1)) & 1; sym <<= 1; - RC_BIT(&p->rc, prob, bit); + RC_BIT(&p->rc, prob, bit) } while (sym < (1 << kNumPosSlotBits * 2)); p->rc.range = range; @@ -2626,10 +2613,10 @@ static SRes LzmaEnc_CodeOneBlock(CLzmaEnc *p, UInt32 maxPackSize, UInt32 maxUnpa { unsigned m = 1; unsigned bit; - bit = dist & 1; dist >>= 1; RC_BIT(&p->rc, p->posAlignEncoder + m, bit); m = (m << 1) + bit; - bit = dist & 1; dist >>= 1; RC_BIT(&p->rc, p->posAlignEncoder + m, bit); m = (m << 1) + bit; - bit = dist & 1; dist >>= 1; RC_BIT(&p->rc, p->posAlignEncoder + m, bit); m = (m << 1) + bit; - bit = dist & 1; RC_BIT(&p->rc, p->posAlignEncoder + m, bit); + bit = dist & 1; dist >>= 1; RC_BIT(&p->rc, p->posAlignEncoder + m, bit) m = (m << 1) + bit; + bit = dist & 1; dist >>= 1; RC_BIT(&p->rc, p->posAlignEncoder + m, bit) m = (m << 1) + bit; + bit = dist & 1; dist >>= 1; RC_BIT(&p->rc, p->posAlignEncoder + m, bit) m = (m << 1) + bit; + bit = dist & 1; RC_BIT(&p->rc, p->posAlignEncoder + m, bit) p->rc.range = range; // p->alignPriceCount++; } @@ -2704,17 +2691,17 @@ static SRes LzmaEnc_Alloc(CLzmaEnc *p, UInt32 keepWindowSize, ISzAllocPtr alloc, if (!RangeEnc_Alloc(&p->rc, alloc)) return SZ_ERROR_MEM; - #ifndef _7ZIP_ST + #ifndef Z7_ST p->mtMode = (p->multiThread && !p->fastMode && (MFB.btMode != 0)); #endif { - unsigned lclp = p->lc + p->lp; + const unsigned lclp = p->lc + p->lp; if (!p->litProbs || !p->saveState.litProbs || p->lclp != lclp) { LzmaEnc_FreeLits(p, alloc); - p->litProbs = (CLzmaProb *)ISzAlloc_Alloc(alloc, ((UInt32)0x300 << lclp) * sizeof(CLzmaProb)); - p->saveState.litProbs = (CLzmaProb *)ISzAlloc_Alloc(alloc, ((UInt32)0x300 << lclp) * sizeof(CLzmaProb)); + p->litProbs = (CLzmaProb *)ISzAlloc_Alloc(alloc, ((size_t)0x300 * sizeof(CLzmaProb)) << lclp); + p->saveState.litProbs = (CLzmaProb *)ISzAlloc_Alloc(alloc, ((size_t)0x300 * sizeof(CLzmaProb)) << lclp); if (!p->litProbs || !p->saveState.litProbs) { LzmaEnc_FreeLits(p, alloc); @@ -2748,15 +2735,14 @@ static SRes LzmaEnc_Alloc(CLzmaEnc *p, UInt32 keepWindowSize, ISzAllocPtr alloc, (numFastBytes + LZMA_MATCH_LEN_MAX + 1) */ - #ifndef _7ZIP_ST + #ifndef Z7_ST if (p->mtMode) { RINOK(MatchFinderMt_Create(&p->matchFinderMt, dictSize, beforeSize, p->numFastBytes, LZMA_MATCH_LEN_MAX + 1 /* 18.04 */ - , allocBig)); + , allocBig)) p->matchFinderObj = &p->matchFinderMt; - MFB.bigHash = (Byte)( - (p->dictSize > kBigHashDicLimit && MFB.hashMask >= 0xFFFFFF) ? 1 : 0); + MFB.bigHash = (Byte)(MFB.hashMask >= 0xFFFFFF ? 1 : 0); MatchFinderMt_CreateVTable(&p->matchFinderMt, &p->matchFinder); } else @@ -2816,8 +2802,8 @@ static void LzmaEnc_Init(CLzmaEnc *p) } { - UInt32 num = (UInt32)0x300 << (p->lp + p->lc); - UInt32 k; + const size_t num = (size_t)0x300 << (p->lp + p->lc); + size_t k; CLzmaProb *probs = p->litProbs; for (k = 0; k < num; k++) probs[k] = kProbInitValue; @@ -2872,59 +2858,53 @@ static SRes LzmaEnc_AllocAndInit(CLzmaEnc *p, UInt32 keepWindowSize, ISzAllocPtr p->finished = False; p->result = SZ_OK; - RINOK(LzmaEnc_Alloc(p, keepWindowSize, alloc, allocBig)); + p->nowPos64 = 0; + p->needInit = 1; + RINOK(LzmaEnc_Alloc(p, keepWindowSize, alloc, allocBig)) LzmaEnc_Init(p); LzmaEnc_InitPrices(p); - p->nowPos64 = 0; return SZ_OK; } -static SRes LzmaEnc_Prepare(CLzmaEncHandle pp, ISeqOutStream *outStream, ISeqInStream *inStream, +static SRes LzmaEnc_Prepare(CLzmaEncHandle p, + ISeqOutStreamPtr outStream, + ISeqInStreamPtr inStream, ISzAllocPtr alloc, ISzAllocPtr allocBig) { - CLzmaEnc *p = (CLzmaEnc *)pp; - MFB.stream = inStream; - p->needInit = 1; + // GET_CLzmaEnc_p + MatchFinder_SET_STREAM(&MFB, inStream) p->rc.outStream = outStream; return LzmaEnc_AllocAndInit(p, 0, alloc, allocBig); } -SRes LzmaEnc_PrepareForLzma2(CLzmaEncHandle pp, - ISeqInStream *inStream, UInt32 keepWindowSize, +SRes LzmaEnc_PrepareForLzma2(CLzmaEncHandle p, + ISeqInStreamPtr inStream, UInt32 keepWindowSize, ISzAllocPtr alloc, ISzAllocPtr allocBig) { - CLzmaEnc *p = (CLzmaEnc *)pp; - MFB.stream = inStream; - p->needInit = 1; + // GET_CLzmaEnc_p + MatchFinder_SET_STREAM(&MFB, inStream) return LzmaEnc_AllocAndInit(p, keepWindowSize, alloc, allocBig); } -static void LzmaEnc_SetInputBuf(CLzmaEnc *p, const Byte *src, SizeT srcLen) +SRes LzmaEnc_MemPrepare(CLzmaEncHandle p, + const Byte *src, SizeT srcLen, + UInt32 keepWindowSize, + ISzAllocPtr alloc, ISzAllocPtr allocBig) { - MFB.directInput = 1; - MFB.bufferBase = (Byte *)src; - MFB.directInputRem = srcLen; -} - -SRes LzmaEnc_MemPrepare(CLzmaEncHandle pp, const Byte *src, SizeT srcLen, - UInt32 keepWindowSize, ISzAllocPtr alloc, ISzAllocPtr allocBig) -{ - CLzmaEnc *p = (CLzmaEnc *)pp; - LzmaEnc_SetInputBuf(p, src, srcLen); - p->needInit = 1; - - LzmaEnc_SetDataSize(pp, srcLen); + // GET_CLzmaEnc_p + MatchFinder_SET_DIRECT_INPUT_BUF(&MFB, src, srcLen) + LzmaEnc_SetDataSize(p, srcLen); return LzmaEnc_AllocAndInit(p, keepWindowSize, alloc, allocBig); } -void LzmaEnc_Finish(CLzmaEncHandle pp) +void LzmaEnc_Finish(CLzmaEncHandle p) { - #ifndef _7ZIP_ST - CLzmaEnc *p = (CLzmaEnc *)pp; + #ifndef Z7_ST + // GET_CLzmaEnc_p if (p->mtMode) MatchFinderMt_ReleaseStream(&p->matchFinderMt); #else - UNUSED_VAR(pp); + UNUSED_VAR(p) #endif } @@ -2933,13 +2913,13 @@ typedef struct { ISeqOutStream vt; Byte *data; - SizeT rem; + size_t rem; BoolInt overflow; } CLzmaEnc_SeqOutStreamBuf; -static size_t SeqOutStreamBuf_Write(const ISeqOutStream *pp, const void *data, size_t size) +static size_t SeqOutStreamBuf_Write(ISeqOutStreamPtr pp, const void *data, size_t size) { - CLzmaEnc_SeqOutStreamBuf *p = CONTAINER_FROM_VTBL(pp, CLzmaEnc_SeqOutStreamBuf, vt); + Z7_CONTAINER_FROM_VTBL_TO_DECL_VAR_pp_vt_p(CLzmaEnc_SeqOutStreamBuf) if (p->rem < size) { size = p->rem; @@ -2956,25 +2936,25 @@ static size_t SeqOutStreamBuf_Write(const ISeqOutStream *pp, const void *data, s /* -UInt32 LzmaEnc_GetNumAvailableBytes(CLzmaEncHandle pp) +UInt32 LzmaEnc_GetNumAvailableBytes(CLzmaEncHandle p) { - const CLzmaEnc *p = (CLzmaEnc *)pp; + GET_const_CLzmaEnc_p return p->matchFinder.GetNumAvailableBytes(p->matchFinderObj); } */ -const Byte *LzmaEnc_GetCurBuf(CLzmaEncHandle pp) +const Byte *LzmaEnc_GetCurBuf(CLzmaEncHandle p) { - const CLzmaEnc *p = (CLzmaEnc *)pp; + // GET_const_CLzmaEnc_p return p->matchFinder.GetPointerToCurrentPos(p->matchFinderObj) - p->additionalOffset; } // (desiredPackSize == 0) is not allowed -SRes LzmaEnc_CodeOneMemBlock(CLzmaEncHandle pp, BoolInt reInit, +SRes LzmaEnc_CodeOneMemBlock(CLzmaEncHandle p, BoolInt reInit, Byte *dest, size_t *destLen, UInt32 desiredPackSize, UInt32 *unpackSize) { - CLzmaEnc *p = (CLzmaEnc *)pp; + // GET_CLzmaEnc_p UInt64 nowPos64; SRes res; CLzmaEnc_SeqOutStreamBuf outStream; @@ -3006,12 +2986,12 @@ SRes LzmaEnc_CodeOneMemBlock(CLzmaEncHandle pp, BoolInt reInit, } -MY_NO_INLINE -static SRes LzmaEnc_Encode2(CLzmaEnc *p, ICompressProgress *progress) +Z7_NO_INLINE +static SRes LzmaEnc_Encode2(CLzmaEnc *p, ICompressProgressPtr progress) { SRes res = SZ_OK; - #ifndef _7ZIP_ST + #ifndef Z7_ST Byte allocaDummy[0x300]; allocaDummy[0] = 0; allocaDummy[1] = allocaDummy[0]; @@ -3033,7 +3013,7 @@ static SRes LzmaEnc_Encode2(CLzmaEnc *p, ICompressProgress *progress) } } - LzmaEnc_Finish(p); + LzmaEnc_Finish((CLzmaEncHandle)(void *)p); /* if (res == SZ_OK && !Inline_MatchFinder_IsFinishedOK(&MFB)) @@ -3045,21 +3025,22 @@ static SRes LzmaEnc_Encode2(CLzmaEnc *p, ICompressProgress *progress) } -SRes LzmaEnc_Encode(CLzmaEncHandle pp, ISeqOutStream *outStream, ISeqInStream *inStream, ICompressProgress *progress, +SRes LzmaEnc_Encode(CLzmaEncHandle p, ISeqOutStreamPtr outStream, ISeqInStreamPtr inStream, ICompressProgressPtr progress, ISzAllocPtr alloc, ISzAllocPtr allocBig) { - RINOK(LzmaEnc_Prepare(pp, outStream, inStream, alloc, allocBig)); - return LzmaEnc_Encode2((CLzmaEnc *)pp, progress); + // GET_CLzmaEnc_p + RINOK(LzmaEnc_Prepare(p, outStream, inStream, alloc, allocBig)) + return LzmaEnc_Encode2(p, progress); } -SRes LzmaEnc_WriteProperties(CLzmaEncHandle pp, Byte *props, SizeT *size) +SRes LzmaEnc_WriteProperties(CLzmaEncHandle p, Byte *props, SizeT *size) { if (*size < LZMA_PROPS_SIZE) return SZ_ERROR_PARAM; *size = LZMA_PROPS_SIZE; { - const CLzmaEnc *p = (const CLzmaEnc *)pp; + // GET_CLzmaEnc_p const UInt32 dictSize = p->dictSize; UInt32 v; props[0] = (Byte)((p->pb * 5 + p->lp) * 9 + p->lc); @@ -3083,23 +3064,24 @@ SRes LzmaEnc_WriteProperties(CLzmaEncHandle pp, Byte *props, SizeT *size) while (v < dictSize); } - SetUi32(props + 1, v); + SetUi32(props + 1, v) return SZ_OK; } } -unsigned LzmaEnc_IsWriteEndMark(CLzmaEncHandle pp) +unsigned LzmaEnc_IsWriteEndMark(CLzmaEncHandle p) { - return (unsigned)((CLzmaEnc *)pp)->writeEndMark; + // GET_CLzmaEnc_p + return (unsigned)p->writeEndMark; } -SRes LzmaEnc_MemEncode(CLzmaEncHandle pp, Byte *dest, SizeT *destLen, const Byte *src, SizeT srcLen, - int writeEndMark, ICompressProgress *progress, ISzAllocPtr alloc, ISzAllocPtr allocBig) +SRes LzmaEnc_MemEncode(CLzmaEncHandle p, Byte *dest, SizeT *destLen, const Byte *src, SizeT srcLen, + int writeEndMark, ICompressProgressPtr progress, ISzAllocPtr alloc, ISzAllocPtr allocBig) { SRes res; - CLzmaEnc *p = (CLzmaEnc *)pp; + // GET_CLzmaEnc_p CLzmaEnc_SeqOutStreamBuf outStream; @@ -3111,7 +3093,7 @@ SRes LzmaEnc_MemEncode(CLzmaEncHandle pp, Byte *dest, SizeT *destLen, const Byte p->writeEndMark = writeEndMark; p->rc.outStream = &outStream.vt; - res = LzmaEnc_MemPrepare(pp, src, srcLen, 0, alloc, allocBig); + res = LzmaEnc_MemPrepare(p, src, srcLen, 0, alloc, allocBig); if (res == SZ_OK) { @@ -3120,7 +3102,7 @@ SRes LzmaEnc_MemEncode(CLzmaEncHandle pp, Byte *dest, SizeT *destLen, const Byte res = SZ_ERROR_FAIL; } - *destLen -= outStream.rem; + *destLen -= (SizeT)outStream.rem; if (outStream.overflow) return SZ_ERROR_OUTPUT_EOF; return res; @@ -3129,9 +3111,9 @@ SRes LzmaEnc_MemEncode(CLzmaEncHandle pp, Byte *dest, SizeT *destLen, const Byte SRes LzmaEncode(Byte *dest, SizeT *destLen, const Byte *src, SizeT srcLen, const CLzmaEncProps *props, Byte *propsEncoded, SizeT *propsSize, int writeEndMark, - ICompressProgress *progress, ISzAllocPtr alloc, ISzAllocPtr allocBig) + ICompressProgressPtr progress, ISzAllocPtr alloc, ISzAllocPtr allocBig) { - CLzmaEnc *p = (CLzmaEnc *)LzmaEnc_Create(alloc); + CLzmaEncHandle p = LzmaEnc_Create(alloc); SRes res; if (!p) return SZ_ERROR_MEM; @@ -3151,10 +3133,10 @@ SRes LzmaEncode(Byte *dest, SizeT *destLen, const Byte *src, SizeT srcLen, /* -#ifndef _7ZIP_ST -void LzmaEnc_GetLzThreads(CLzmaEncHandle pp, HANDLE lz_threads[2]) +#ifndef Z7_ST +void LzmaEnc_GetLzThreads(CLzmaEncHandle p, HANDLE lz_threads[2]) { - const CLzmaEnc *p = (CLzmaEnc *)pp; + GET_const_CLzmaEnc_p lz_threads[0] = p->matchFinderMt.hashSync.thread; lz_threads[1] = p->matchFinderMt.btSync.thread; } diff --git a/deps/LZMA-SDK/C/LzmaEnc.h b/deps/LZMA-SDK/C/LzmaEnc.h index bc2ed5042..9f8039a10 100644 --- a/deps/LZMA-SDK/C/LzmaEnc.h +++ b/deps/LZMA-SDK/C/LzmaEnc.h @@ -1,8 +1,8 @@ /* LzmaEnc.h -- LZMA Encoder -2019-10-30 : Igor Pavlov : Public domain */ +2023-04-13 : Igor Pavlov : Public domain */ -#ifndef __LZMA_ENC_H -#define __LZMA_ENC_H +#ifndef ZIP7_INC_LZMA_ENC_H +#define ZIP7_INC_LZMA_ENC_H #include "7zTypes.h" @@ -10,7 +10,7 @@ EXTERN_C_BEGIN #define LZMA_PROPS_SIZE 5 -typedef struct _CLzmaEncProps +typedef struct { int level; /* 0 <= level <= 9 */ UInt32 dictSize; /* (1 << 12) <= dictSize <= (1 << 27) for 32-bit version @@ -23,10 +23,13 @@ typedef struct _CLzmaEncProps int fb; /* 5 <= fb <= 273, default = 32 */ int btMode; /* 0 - hashChain Mode, 1 - binTree mode - normal, default = 1 */ int numHashBytes; /* 2, 3 or 4, default = 4 */ + unsigned numHashOutBits; /* default = ? */ UInt32 mc; /* 1 <= mc <= (1 << 30), default = 32 */ unsigned writeEndMark; /* 0 - do not write EOPM, 1 - write EOPM, default = 0 */ int numThreads; /* 1 or 2, default = 2 */ + // int _pad; + UInt64 reduceSize; /* estimated size of data that will be compressed. default = (UInt64)(Int64)-1. Encoder uses this value to reduce dictionary size */ @@ -51,7 +54,9 @@ SRes: SZ_ERROR_THREAD - error in multithreading functions (only for Mt version) */ -typedef void * CLzmaEncHandle; +typedef struct CLzmaEnc CLzmaEnc; +typedef CLzmaEnc * CLzmaEncHandle; +// Z7_DECLARE_HANDLE(CLzmaEncHandle) CLzmaEncHandle LzmaEnc_Create(ISzAllocPtr alloc); void LzmaEnc_Destroy(CLzmaEncHandle p, ISzAllocPtr alloc, ISzAllocPtr allocBig); @@ -61,17 +66,17 @@ void LzmaEnc_SetDataSize(CLzmaEncHandle p, UInt64 expectedDataSiize); SRes LzmaEnc_WriteProperties(CLzmaEncHandle p, Byte *properties, SizeT *size); unsigned LzmaEnc_IsWriteEndMark(CLzmaEncHandle p); -SRes LzmaEnc_Encode(CLzmaEncHandle p, ISeqOutStream *outStream, ISeqInStream *inStream, - ICompressProgress *progress, ISzAllocPtr alloc, ISzAllocPtr allocBig); +SRes LzmaEnc_Encode(CLzmaEncHandle p, ISeqOutStreamPtr outStream, ISeqInStreamPtr inStream, + ICompressProgressPtr progress, ISzAllocPtr alloc, ISzAllocPtr allocBig); SRes LzmaEnc_MemEncode(CLzmaEncHandle p, Byte *dest, SizeT *destLen, const Byte *src, SizeT srcLen, - int writeEndMark, ICompressProgress *progress, ISzAllocPtr alloc, ISzAllocPtr allocBig); + int writeEndMark, ICompressProgressPtr progress, ISzAllocPtr alloc, ISzAllocPtr allocBig); /* ---------- One Call Interface ---------- */ SRes LzmaEncode(Byte *dest, SizeT *destLen, const Byte *src, SizeT srcLen, const CLzmaEncProps *props, Byte *propsEncoded, SizeT *propsSize, int writeEndMark, - ICompressProgress *progress, ISzAllocPtr alloc, ISzAllocPtr allocBig); + ICompressProgressPtr progress, ISzAllocPtr alloc, ISzAllocPtr allocBig); EXTERN_C_END diff --git a/deps/LZMA-SDK/C/LzmaLib.c b/deps/LZMA-SDK/C/LzmaLib.c index 706e9e58c..785e88487 100644 --- a/deps/LZMA-SDK/C/LzmaLib.c +++ b/deps/LZMA-SDK/C/LzmaLib.c @@ -1,12 +1,14 @@ /* LzmaLib.c -- LZMA library wrapper -2015-06-13 : Igor Pavlov : Public domain */ +2023-04-02 : Igor Pavlov : Public domain */ + +#include "Precomp.h" #include "Alloc.h" #include "LzmaDec.h" #include "LzmaEnc.h" #include "LzmaLib.h" -MY_STDAPI LzmaCompress(unsigned char *dest, size_t *destLen, const unsigned char *src, size_t srcLen, +Z7_STDAPI LzmaCompress(unsigned char *dest, size_t *destLen, const unsigned char *src, size_t srcLen, unsigned char *outProps, size_t *outPropsSize, int level, /* 0 <= level <= 9, default = 5 */ unsigned dictSize, /* use (1 << N) or (3 << N). 4 KB < dictSize <= 128 MB */ @@ -32,7 +34,7 @@ MY_STDAPI LzmaCompress(unsigned char *dest, size_t *destLen, const unsigned char } -MY_STDAPI LzmaUncompress(unsigned char *dest, size_t *destLen, const unsigned char *src, size_t *srcLen, +Z7_STDAPI LzmaUncompress(unsigned char *dest, size_t *destLen, const unsigned char *src, size_t *srcLen, const unsigned char *props, size_t propsSize) { ELzmaStatus status; diff --git a/deps/LZMA-SDK/C/LzmaLib.h b/deps/LZMA-SDK/C/LzmaLib.h index c343a8596..d7c0724de 100644 --- a/deps/LZMA-SDK/C/LzmaLib.h +++ b/deps/LZMA-SDK/C/LzmaLib.h @@ -1,14 +1,14 @@ /* LzmaLib.h -- LZMA library interface -2021-04-03 : Igor Pavlov : Public domain */ +2023-04-02 : Igor Pavlov : Public domain */ -#ifndef __LZMA_LIB_H -#define __LZMA_LIB_H +#ifndef ZIP7_INC_LZMA_LIB_H +#define ZIP7_INC_LZMA_LIB_H #include "7zTypes.h" EXTERN_C_BEGIN -#define MY_STDAPI int MY_STD_CALL +#define Z7_STDAPI int Z7_STDCALL #define LZMA_PROPS_SIZE 5 @@ -100,7 +100,7 @@ Returns: SZ_ERROR_THREAD - errors in multithreading functions (only for Mt version) */ -MY_STDAPI LzmaCompress(unsigned char *dest, size_t *destLen, const unsigned char *src, size_t srcLen, +Z7_STDAPI LzmaCompress(unsigned char *dest, size_t *destLen, const unsigned char *src, size_t srcLen, unsigned char *outProps, size_t *outPropsSize, /* *outPropsSize must be = 5 */ int level, /* 0 <= level <= 9, default = 5 */ unsigned dictSize, /* default = (1 << 24) */ @@ -130,7 +130,7 @@ Returns: SZ_ERROR_INPUT_EOF - it needs more bytes in input buffer (src) */ -MY_STDAPI LzmaUncompress(unsigned char *dest, size_t *destLen, const unsigned char *src, SizeT *srcLen, +Z7_STDAPI LzmaUncompress(unsigned char *dest, size_t *destLen, const unsigned char *src, SizeT *srcLen, const unsigned char *props, size_t propsSize); EXTERN_C_END diff --git a/deps/LZMA-SDK/C/MtCoder.c b/deps/LZMA-SDK/C/MtCoder.c index 99dc9090a..03959b6ca 100644 --- a/deps/LZMA-SDK/C/MtCoder.c +++ b/deps/LZMA-SDK/C/MtCoder.c @@ -1,28 +1,28 @@ /* MtCoder.c -- Multi-thread Coder -2021-12-21 : Igor Pavlov : Public domain */ +2023-09-07 : Igor Pavlov : Public domain */ #include "Precomp.h" #include "MtCoder.h" -#ifndef _7ZIP_ST +#ifndef Z7_ST -static SRes MtProgressThunk_Progress(const ICompressProgress *pp, UInt64 inSize, UInt64 outSize) +static SRes MtProgressThunk_Progress(ICompressProgressPtr pp, UInt64 inSize, UInt64 outSize) { - CMtProgressThunk *thunk = CONTAINER_FROM_VTBL(pp, CMtProgressThunk, vt); + Z7_CONTAINER_FROM_VTBL_TO_DECL_VAR_pp_vt_p(CMtProgressThunk) UInt64 inSize2 = 0; UInt64 outSize2 = 0; if (inSize != (UInt64)(Int64)-1) { - inSize2 = inSize - thunk->inSize; - thunk->inSize = inSize; + inSize2 = inSize - p->inSize; + p->inSize = inSize; } if (outSize != (UInt64)(Int64)-1) { - outSize2 = outSize - thunk->outSize; - thunk->outSize = outSize; + outSize2 = outSize - p->outSize; + p->outSize = outSize; } - return MtProgress_ProgressAdd(thunk->mtProgress, inSize2, outSize2); + return MtProgress_ProgressAdd(p->mtProgress, inSize2, outSize2); } @@ -36,20 +36,12 @@ void MtProgressThunk_CreateVTable(CMtProgressThunk *p) #define RINOK_THREAD(x) { if ((x) != 0) return SZ_ERROR_THREAD; } -static WRes ArEvent_OptCreate_And_Reset(CEvent *p) -{ - if (Event_IsCreated(p)) - return Event_Reset(p); - return AutoResetEvent_CreateNotSignaled(p); -} - - static THREAD_FUNC_DECL ThreadFunc(void *pp); static SRes MtCoderThread_CreateAndStart(CMtCoderThread *t) { - WRes wres = ArEvent_OptCreate_And_Reset(&t->startEvent); + WRes wres = AutoResetEvent_OptCreate_And_Reset(&t->startEvent); if (wres == 0) { t->stop = False; @@ -84,24 +76,6 @@ static void MtCoderThread_Destruct(CMtCoderThread *t) -static SRes FullRead(ISeqInStream *stream, Byte *data, size_t *processedSize) -{ - size_t size = *processedSize; - *processedSize = 0; - while (size != 0) - { - size_t cur = size; - SRes res = ISeqInStream_Read(stream, data, &cur); - *processedSize += cur; - data += cur; - size -= cur; - RINOK(res); - if (cur == 0) - return SZ_OK; - } - return SZ_OK; -} - /* ThreadFunc2() returns: @@ -152,7 +126,7 @@ static SRes ThreadFunc2(CMtCoderThread *t) } if (res == SZ_OK) { - res = FullRead(mtc->inStream, t->inBuf, &size); + res = SeqInStream_ReadMax(mtc->inStream, t->inBuf, &size); readProcessed = mtc->readProcessed + size; mtc->readProcessed = readProcessed; } @@ -253,7 +227,7 @@ static SRes ThreadFunc2(CMtCoderThread *t) block->finished = finished; } - #ifdef MTCODER__USE_WRITE_THREAD + #ifdef MTCODER_USE_WRITE_THREAD RINOK_THREAD(Event_Set(&mtc->writeEvents[bi])) #else { @@ -352,7 +326,7 @@ static THREAD_FUNC_DECL ThreadFunc(void *pp) MtProgress_SetError(&mtc->mtProgress, res); } - #ifndef MTCODER__USE_WRITE_THREAD + #ifndef MTCODER_USE_WRITE_THREAD { unsigned numFinished = (unsigned)InterlockedIncrement(&mtc->numFinishedThreads); if (numFinished == mtc->numStartedThreads) @@ -389,7 +363,7 @@ void MtCoder_Construct(CMtCoder *p) Event_Construct(&p->readEvent); Semaphore_Construct(&p->blocksSemaphore); - for (i = 0; i < MTCODER__THREADS_MAX; i++) + for (i = 0; i < MTCODER_THREADS_MAX; i++) { CMtCoderThread *t = &p->threads[i]; t->mtCoder = p; @@ -397,11 +371,11 @@ void MtCoder_Construct(CMtCoder *p) t->inBuf = NULL; t->stop = False; Event_Construct(&t->startEvent); - Thread_Construct(&t->thread); + Thread_CONSTRUCT(&t->thread) } - #ifdef MTCODER__USE_WRITE_THREAD - for (i = 0; i < MTCODER__BLOCKS_MAX; i++) + #ifdef MTCODER_USE_WRITE_THREAD + for (i = 0; i < MTCODER_BLOCKS_MAX; i++) Event_Construct(&p->writeEvents[i]); #else Event_Construct(&p->finishedEvent); @@ -424,14 +398,14 @@ static void MtCoder_Free(CMtCoder *p) Event_Set(&p->readEvent); */ - for (i = 0; i < MTCODER__THREADS_MAX; i++) + for (i = 0; i < MTCODER_THREADS_MAX; i++) MtCoderThread_Destruct(&p->threads[i]); Event_Close(&p->readEvent); Semaphore_Close(&p->blocksSemaphore); - #ifdef MTCODER__USE_WRITE_THREAD - for (i = 0; i < MTCODER__BLOCKS_MAX; i++) + #ifdef MTCODER_USE_WRITE_THREAD + for (i = 0; i < MTCODER_BLOCKS_MAX; i++) Event_Close(&p->writeEvents[i]); #else Event_Close(&p->finishedEvent); @@ -455,20 +429,20 @@ SRes MtCoder_Code(CMtCoder *p) unsigned i; SRes res = SZ_OK; - if (numThreads > MTCODER__THREADS_MAX) - numThreads = MTCODER__THREADS_MAX; - numBlocksMax = MTCODER__GET_NUM_BLOCKS_FROM_THREADS(numThreads); + if (numThreads > MTCODER_THREADS_MAX) + numThreads = MTCODER_THREADS_MAX; + numBlocksMax = MTCODER_GET_NUM_BLOCKS_FROM_THREADS(numThreads); if (p->blockSize < ((UInt32)1 << 26)) numBlocksMax++; if (p->blockSize < ((UInt32)1 << 24)) numBlocksMax++; if (p->blockSize < ((UInt32)1 << 22)) numBlocksMax++; - if (numBlocksMax > MTCODER__BLOCKS_MAX) - numBlocksMax = MTCODER__BLOCKS_MAX; + if (numBlocksMax > MTCODER_BLOCKS_MAX) + numBlocksMax = MTCODER_BLOCKS_MAX; if (p->blockSize != p->allocatedBufsSize) { - for (i = 0; i < MTCODER__THREADS_MAX; i++) + for (i = 0; i < MTCODER_THREADS_MAX; i++) { CMtCoderThread *t = &p->threads[i]; if (t->inBuf) @@ -484,23 +458,23 @@ SRes MtCoder_Code(CMtCoder *p) MtProgress_Init(&p->mtProgress, p->progress); - #ifdef MTCODER__USE_WRITE_THREAD + #ifdef MTCODER_USE_WRITE_THREAD for (i = 0; i < numBlocksMax; i++) { - RINOK_THREAD(ArEvent_OptCreate_And_Reset(&p->writeEvents[i])); + RINOK_THREAD(AutoResetEvent_OptCreate_And_Reset(&p->writeEvents[i])) } #else - RINOK_THREAD(ArEvent_OptCreate_And_Reset(&p->finishedEvent)); + RINOK_THREAD(AutoResetEvent_OptCreate_And_Reset(&p->finishedEvent)) #endif { - RINOK_THREAD(ArEvent_OptCreate_And_Reset(&p->readEvent)); - RINOK_THREAD(Semaphore_OptCreateInit(&p->blocksSemaphore, numBlocksMax, numBlocksMax)); + RINOK_THREAD(AutoResetEvent_OptCreate_And_Reset(&p->readEvent)) + RINOK_THREAD(Semaphore_OptCreateInit(&p->blocksSemaphore, (UInt32)numBlocksMax, (UInt32)numBlocksMax)) } - for (i = 0; i < MTCODER__BLOCKS_MAX - 1; i++) + for (i = 0; i < MTCODER_BLOCKS_MAX - 1; i++) p->freeBlockList[i] = i + 1; - p->freeBlockList[MTCODER__BLOCKS_MAX - 1] = (unsigned)(int)-1; + p->freeBlockList[MTCODER_BLOCKS_MAX - 1] = (unsigned)(int)-1; p->freeBlockHead = 0; p->readProcessed = 0; @@ -508,10 +482,10 @@ SRes MtCoder_Code(CMtCoder *p) p->numBlocksMax = numBlocksMax; p->stopReading = False; - #ifndef MTCODER__USE_WRITE_THREAD + #ifndef MTCODER_USE_WRITE_THREAD p->writeIndex = 0; p->writeRes = SZ_OK; - for (i = 0; i < MTCODER__BLOCKS_MAX; i++) + for (i = 0; i < MTCODER_BLOCKS_MAX; i++) p->ReadyBlocks[i] = False; p->numFinishedThreads = 0; #endif @@ -522,12 +496,12 @@ SRes MtCoder_Code(CMtCoder *p) // for (i = 0; i < numThreads; i++) { CMtCoderThread *nextThread = &p->threads[p->numStartedThreads++]; - RINOK(MtCoderThread_CreateAndStart(nextThread)); + RINOK(MtCoderThread_CreateAndStart(nextThread)) } RINOK_THREAD(Event_Set(&p->readEvent)) - #ifdef MTCODER__USE_WRITE_THREAD + #ifdef MTCODER_USE_WRITE_THREAD { unsigned bi = 0; @@ -582,7 +556,7 @@ SRes MtCoder_Code(CMtCoder *p) if (res == SZ_OK) res = p->mtProgress.res; - #ifndef MTCODER__USE_WRITE_THREAD + #ifndef MTCODER_USE_WRITE_THREAD if (res == SZ_OK) res = p->writeRes; #endif @@ -593,3 +567,5 @@ SRes MtCoder_Code(CMtCoder *p) } #endif + +#undef RINOK_THREAD diff --git a/deps/LZMA-SDK/C/MtCoder.h b/deps/LZMA-SDK/C/MtCoder.h index 5a5f4d11b..1231d3c2a 100644 --- a/deps/LZMA-SDK/C/MtCoder.h +++ b/deps/LZMA-SDK/C/MtCoder.h @@ -1,30 +1,30 @@ /* MtCoder.h -- Multi-thread Coder -2018-07-04 : Igor Pavlov : Public domain */ +2023-04-13 : Igor Pavlov : Public domain */ -#ifndef __MT_CODER_H -#define __MT_CODER_H +#ifndef ZIP7_INC_MT_CODER_H +#define ZIP7_INC_MT_CODER_H #include "MtDec.h" EXTERN_C_BEGIN /* - if ( defined MTCODER__USE_WRITE_THREAD) : main thread writes all data blocks to output stream - if (not defined MTCODER__USE_WRITE_THREAD) : any coder thread can write data blocks to output stream + if ( defined MTCODER_USE_WRITE_THREAD) : main thread writes all data blocks to output stream + if (not defined MTCODER_USE_WRITE_THREAD) : any coder thread can write data blocks to output stream */ -/* #define MTCODER__USE_WRITE_THREAD */ +/* #define MTCODER_USE_WRITE_THREAD */ -#ifndef _7ZIP_ST - #define MTCODER__GET_NUM_BLOCKS_FROM_THREADS(numThreads) ((numThreads) + (numThreads) / 8 + 1) - #define MTCODER__THREADS_MAX 64 - #define MTCODER__BLOCKS_MAX (MTCODER__GET_NUM_BLOCKS_FROM_THREADS(MTCODER__THREADS_MAX) + 3) +#ifndef Z7_ST + #define MTCODER_GET_NUM_BLOCKS_FROM_THREADS(numThreads) ((numThreads) + (numThreads) / 8 + 1) + #define MTCODER_THREADS_MAX 64 + #define MTCODER_BLOCKS_MAX (MTCODER_GET_NUM_BLOCKS_FROM_THREADS(MTCODER_THREADS_MAX) + 3) #else - #define MTCODER__THREADS_MAX 1 - #define MTCODER__BLOCKS_MAX 1 + #define MTCODER_THREADS_MAX 1 + #define MTCODER_BLOCKS_MAX 1 #endif -#ifndef _7ZIP_ST +#ifndef Z7_ST typedef struct @@ -37,15 +37,15 @@ typedef struct void MtProgressThunk_CreateVTable(CMtProgressThunk *p); -#define MtProgressThunk_Init(p) { (p)->inSize = 0; (p)->outSize = 0; } +#define MtProgressThunk_INIT(p) { (p)->inSize = 0; (p)->outSize = 0; } -struct _CMtCoder; +struct CMtCoder_; typedef struct { - struct _CMtCoder *mtCoder; + struct CMtCoder_ *mtCoder; unsigned index; int stop; Byte *inBuf; @@ -71,7 +71,7 @@ typedef struct } CMtCoderBlock; -typedef struct _CMtCoder +typedef struct CMtCoder_ { /* input variables */ @@ -79,11 +79,11 @@ typedef struct _CMtCoder unsigned numThreadsMax; UInt64 expectedDataSize; - ISeqInStream *inStream; + ISeqInStreamPtr inStream; const Byte *inData; size_t inDataSize; - ICompressProgress *progress; + ICompressProgressPtr progress; ISzAllocPtr allocBig; IMtCoderCallback2 *mtCallback; @@ -100,13 +100,13 @@ typedef struct _CMtCoder BoolInt stopReading; SRes readRes; - #ifdef MTCODER__USE_WRITE_THREAD - CAutoResetEvent writeEvents[MTCODER__BLOCKS_MAX]; + #ifdef MTCODER_USE_WRITE_THREAD + CAutoResetEvent writeEvents[MTCODER_BLOCKS_MAX]; #else CAutoResetEvent finishedEvent; SRes writeRes; unsigned writeIndex; - Byte ReadyBlocks[MTCODER__BLOCKS_MAX]; + Byte ReadyBlocks[MTCODER_BLOCKS_MAX]; LONG numFinishedThreads; #endif @@ -120,11 +120,11 @@ typedef struct _CMtCoder CCriticalSection cs; unsigned freeBlockHead; - unsigned freeBlockList[MTCODER__BLOCKS_MAX]; + unsigned freeBlockList[MTCODER_BLOCKS_MAX]; CMtProgress mtProgress; - CMtCoderBlock blocks[MTCODER__BLOCKS_MAX]; - CMtCoderThread threads[MTCODER__THREADS_MAX]; + CMtCoderBlock blocks[MTCODER_BLOCKS_MAX]; + CMtCoderThread threads[MTCODER_THREADS_MAX]; } CMtCoder; diff --git a/deps/LZMA-SDK/C/MtDec.c b/deps/LZMA-SDK/C/MtDec.c index 45a671396..96274b6f3 100644 --- a/deps/LZMA-SDK/C/MtDec.c +++ b/deps/LZMA-SDK/C/MtDec.c @@ -1,5 +1,5 @@ /* MtDec.c -- Multi-thread Decoder -2021-12-21 : Igor Pavlov : Public domain */ +2024-02-20 : Igor Pavlov : Public domain */ #include "Precomp.h" @@ -14,7 +14,7 @@ #include "MtDec.h" -#ifndef _7ZIP_ST +#ifndef Z7_ST #ifdef SHOW_DEBUG_INFO #define PRF(x) x @@ -24,7 +24,7 @@ #define PRF_STR_INT(s, d) PRF(printf("\n" s " %d\n", (unsigned)d)) -void MtProgress_Init(CMtProgress *p, ICompressProgress *progress) +void MtProgress_Init(CMtProgress *p, ICompressProgressPtr progress) { p->progress = progress; p->res = SZ_OK; @@ -81,36 +81,28 @@ void MtProgress_SetError(CMtProgress *p, SRes res) #define RINOK_THREAD(x) RINOK_WRes(x) -static WRes ArEvent_OptCreate_And_Reset(CEvent *p) +struct CMtDecBufLink_ { - if (Event_IsCreated(p)) - return Event_Reset(p); - return AutoResetEvent_CreateNotSignaled(p); -} - - -struct __CMtDecBufLink -{ - struct __CMtDecBufLink *next; + struct CMtDecBufLink_ *next; void *pad[3]; }; -typedef struct __CMtDecBufLink CMtDecBufLink; +typedef struct CMtDecBufLink_ CMtDecBufLink; #define MTDEC__LINK_DATA_OFFSET sizeof(CMtDecBufLink) #define MTDEC__DATA_PTR_FROM_LINK(link) ((Byte *)(link) + MTDEC__LINK_DATA_OFFSET) -static THREAD_FUNC_DECL ThreadFunc(void *pp); +static THREAD_FUNC_DECL MtDec_ThreadFunc(void *pp); static WRes MtDecThread_CreateEvents(CMtDecThread *t) { - WRes wres = ArEvent_OptCreate_And_Reset(&t->canWrite); + WRes wres = AutoResetEvent_OptCreate_And_Reset(&t->canWrite); if (wres == 0) { - wres = ArEvent_OptCreate_And_Reset(&t->canRead); + wres = AutoResetEvent_OptCreate_And_Reset(&t->canRead); if (wres == 0) return SZ_OK; } @@ -126,7 +118,7 @@ static SRes MtDecThread_CreateAndStart(CMtDecThread *t) { if (Thread_WasCreated(&t->thread)) return SZ_OK; - wres = Thread_Create(&t->thread, ThreadFunc, t); + wres = Thread_Create(&t->thread, MtDec_ThreadFunc, t); if (wres == 0) return SZ_OK; } @@ -167,7 +159,7 @@ static void MtDecThread_CloseThread(CMtDecThread *t) static void MtDec_CloseThreads(CMtDec *p) { unsigned i; - for (i = 0; i < MTDEC__THREADS_MAX; i++) + for (i = 0; i < MTDEC_THREADS_MAX; i++) MtDecThread_CloseThread(&p->threads[i]); } @@ -179,25 +171,6 @@ static void MtDecThread_Destruct(CMtDecThread *t) -static SRes FullRead(ISeqInStream *stream, Byte *data, size_t *processedSize) -{ - size_t size = *processedSize; - *processedSize = 0; - while (size != 0) - { - size_t cur = size; - SRes res = ISeqInStream_Read(stream, data, &cur); - *processedSize += cur; - data += cur; - size -= cur; - RINOK(res); - if (cur == 0) - return SZ_OK; - } - return SZ_OK; -} - - static SRes MtDec_GetError_Spec(CMtDec *p, UInt64 interruptIndex, BoolInt *wasInterrupted) { SRes res; @@ -253,7 +226,7 @@ Byte *MtDec_GetCrossBuff(CMtDec *p) /* - ThreadFunc2() returns: + MtDec_ThreadFunc2() returns: 0 - in all normal cases (even for stream error or memory allocation error) (!= 0) - WRes error return by system threading function */ @@ -261,11 +234,11 @@ Byte *MtDec_GetCrossBuff(CMtDec *p) // #define MTDEC_ProgessStep (1 << 22) #define MTDEC_ProgessStep (1 << 0) -static WRes ThreadFunc2(CMtDecThread *t) +static WRes MtDec_ThreadFunc2(CMtDecThread *t) { CMtDec *p = t->mtDec; - PRF_STR_INT("ThreadFunc2", t->index); + PRF_STR_INT("MtDec_ThreadFunc2", t->index) // SetThreadAffinityMask(GetCurrentThread(), 1 << t->index); @@ -295,13 +268,13 @@ static WRes ThreadFunc2(CMtDecThread *t) // CMtDecCallbackInfo parse; CMtDecThread *nextThread; - PRF_STR_INT("=============== Event_Wait(&t->canRead)", t->index); + PRF_STR_INT("=============== Event_Wait(&t->canRead)", t->index) - RINOK_THREAD(Event_Wait(&t->canRead)); + RINOK_THREAD(Event_Wait(&t->canRead)) if (p->exitThread) return 0; - PRF_STR_INT("after Event_Wait(&t->canRead)", t->index); + PRF_STR_INT("after Event_Wait(&t->canRead)", t->index) // if (t->index == 3) return 19; // for test @@ -373,7 +346,7 @@ static WRes ThreadFunc2(CMtDecThread *t) { size = p->inBufSize; - res = FullRead(p->inStream, data, &size); + res = SeqInStream_ReadMax(p->inStream, data, &size); // size = 10; // test @@ -615,7 +588,7 @@ static WRes ThreadFunc2(CMtDecThread *t) // if ( !finish ) we must call Event_Set(&nextThread->canWrite) in any case // if ( finish ) we switch to single-thread mode and there are 2 ways at the end of current iteration (current block): // - if (needContinue) after Write(&needContinue), we restore decoding with new iteration - // - otherwise we stop decoding and exit from ThreadFunc2() + // - otherwise we stop decoding and exit from MtDec_ThreadFunc2() // Don't change (finish) variable in the further code @@ -688,7 +661,7 @@ static WRes ThreadFunc2(CMtDecThread *t) // ---------- WRITE ---------- - RINOK_THREAD(Event_Wait(&t->canWrite)); + RINOK_THREAD(Event_Wait(&t->canWrite)) { BoolInt isErrorMode = False; @@ -801,14 +774,14 @@ static WRes ThreadFunc2(CMtDecThread *t) if (!finish) { - RINOK_THREAD(Event_Set(&nextThread->canWrite)); + RINOK_THREAD(Event_Set(&nextThread->canWrite)) } else { if (needContinue) { // we restore decoding with new iteration - RINOK_THREAD(Event_Set(&p->threads[0].canWrite)); + RINOK_THREAD(Event_Set(&p->threads[0].canWrite)) } else { @@ -817,7 +790,7 @@ static WRes ThreadFunc2(CMtDecThread *t) return SZ_OK; p->exitThread = True; } - RINOK_THREAD(Event_Set(&p->threads[0].canRead)); + RINOK_THREAD(Event_Set(&p->threads[0].canRead)) } } } @@ -836,7 +809,17 @@ static WRes ThreadFunc2(CMtDecThread *t) #endif -static THREAD_FUNC_DECL ThreadFunc1(void *pp) +typedef + #ifdef _WIN32 + UINT_PTR + #elif 1 + uintptr_t + #else + ptrdiff_t + #endif + MY_uintptr_t; + +static THREAD_FUNC_DECL MtDec_ThreadFunc1(void *pp) { WRes res; @@ -845,10 +828,10 @@ static THREAD_FUNC_DECL ThreadFunc1(void *pp) // fprintf(stdout, "\n%d = %p\n", t->index, &t); - res = ThreadFunc2(t); + res = MtDec_ThreadFunc2(t); p = t->mtDec; if (res == 0) - return (THREAD_FUNC_RET_TYPE)(UINT_PTR)p->exitThreadWRes; + return (THREAD_FUNC_RET_TYPE)(MY_uintptr_t)p->exitThreadWRes; { // it's unexpected situation for some threading function error if (p->exitThreadWRes == 0) @@ -859,17 +842,17 @@ static THREAD_FUNC_DECL ThreadFunc1(void *pp) Event_Set(&p->threads[0].canWrite); MtProgress_SetError(&p->mtProgress, MY_SRes_HRESULT_FROM_WRes(res)); } - return (THREAD_FUNC_RET_TYPE)(UINT_PTR)res; + return (THREAD_FUNC_RET_TYPE)(MY_uintptr_t)res; } -static MY_NO_INLINE THREAD_FUNC_DECL ThreadFunc(void *pp) +static Z7_NO_INLINE THREAD_FUNC_DECL MtDec_ThreadFunc(void *pp) { #ifdef USE_ALLOCA CMtDecThread *t = (CMtDecThread *)pp; // fprintf(stderr, "\n%d = %p - before", t->index, &t); t->allocaPtr = alloca(t->index * 128); #endif - return ThreadFunc1(pp); + return MtDec_ThreadFunc1(pp); } @@ -883,7 +866,7 @@ int MtDec_PrepareRead(CMtDec *p) { unsigned i; - for (i = 0; i < MTDEC__THREADS_MAX; i++) + for (i = 0; i < MTDEC_THREADS_MAX; i++) if (i > p->numStartedThreads || p->numFilledThreads <= (i >= p->filledThreadStart ? @@ -987,7 +970,7 @@ void MtDec_Construct(CMtDec *p) p->allocatedBufsSize = 0; - for (i = 0; i < MTDEC__THREADS_MAX; i++) + for (i = 0; i < MTDEC_THREADS_MAX; i++) { CMtDecThread *t = &p->threads[i]; t->mtDec = p; @@ -995,7 +978,7 @@ void MtDec_Construct(CMtDec *p) t->inBuf = NULL; Event_Construct(&t->canRead); Event_Construct(&t->canWrite); - Thread_Construct(&t->thread); + Thread_CONSTRUCT(&t->thread) } // Event_Construct(&p->finishedEvent); @@ -1010,7 +993,7 @@ static void MtDec_Free(CMtDec *p) p->exitThread = True; - for (i = 0; i < MTDEC__THREADS_MAX; i++) + for (i = 0; i < MTDEC_THREADS_MAX; i++) MtDecThread_Destruct(&p->threads[i]); // Event_Close(&p->finishedEvent); @@ -1061,15 +1044,15 @@ SRes MtDec_Code(CMtDec *p) { unsigned numThreads = p->numThreadsMax; - if (numThreads > MTDEC__THREADS_MAX) - numThreads = MTDEC__THREADS_MAX; + if (numThreads > MTDEC_THREADS_MAX) + numThreads = MTDEC_THREADS_MAX; p->numStartedThreads_Limit = numThreads; p->numStartedThreads = 0; } if (p->inBufSize != p->allocatedBufsSize) { - for (i = 0; i < MTDEC__THREADS_MAX; i++) + for (i = 0; i < MTDEC_THREADS_MAX; i++) { CMtDecThread *t = &p->threads[i]; if (t->inBuf) @@ -1086,7 +1069,7 @@ SRes MtDec_Code(CMtDec *p) MtProgress_Init(&p->mtProgress, p->progress); - // RINOK_THREAD(ArEvent_OptCreate_And_Reset(&p->finishedEvent)); + // RINOK_THREAD(AutoResetEvent_OptCreate_And_Reset(&p->finishedEvent)) p->exitThread = False; p->exitThreadWRes = 0; @@ -1098,8 +1081,8 @@ SRes MtDec_Code(CMtDec *p) wres = MtDecThread_CreateEvents(nextThread); if (wres == 0) { wres = Event_Set(&nextThread->canWrite); if (wres == 0) { wres = Event_Set(&nextThread->canRead); - if (wres == 0) { THREAD_FUNC_RET_TYPE res = ThreadFunc(nextThread); - wres = (WRes)(UINT_PTR)res; + if (wres == 0) { THREAD_FUNC_RET_TYPE res = MtDec_ThreadFunc(nextThread); + wres = (WRes)(MY_uintptr_t)res; if (wres != 0) { p->needContinue = False; @@ -1137,3 +1120,5 @@ SRes MtDec_Code(CMtDec *p) } #endif + +#undef PRF diff --git a/deps/LZMA-SDK/C/MtDec.h b/deps/LZMA-SDK/C/MtDec.h index c2da46ae2..c28e8d9ac 100644 --- a/deps/LZMA-SDK/C/MtDec.h +++ b/deps/LZMA-SDK/C/MtDec.h @@ -1,46 +1,46 @@ /* MtDec.h -- Multi-thread Decoder -2020-03-05 : Igor Pavlov : Public domain */ +2023-04-02 : Igor Pavlov : Public domain */ -#ifndef __MT_DEC_H -#define __MT_DEC_H +#ifndef ZIP7_INC_MT_DEC_H +#define ZIP7_INC_MT_DEC_H #include "7zTypes.h" -#ifndef _7ZIP_ST +#ifndef Z7_ST #include "Threads.h" #endif EXTERN_C_BEGIN -#ifndef _7ZIP_ST +#ifndef Z7_ST -#ifndef _7ZIP_ST - #define MTDEC__THREADS_MAX 32 +#ifndef Z7_ST + #define MTDEC_THREADS_MAX 32 #else - #define MTDEC__THREADS_MAX 1 + #define MTDEC_THREADS_MAX 1 #endif typedef struct { - ICompressProgress *progress; + ICompressProgressPtr progress; SRes res; UInt64 totalInSize; UInt64 totalOutSize; CCriticalSection cs; } CMtProgress; -void MtProgress_Init(CMtProgress *p, ICompressProgress *progress); +void MtProgress_Init(CMtProgress *p, ICompressProgressPtr progress); SRes MtProgress_Progress_ST(CMtProgress *p); SRes MtProgress_ProgressAdd(CMtProgress *p, UInt64 inSize, UInt64 outSize); SRes MtProgress_GetError(CMtProgress *p); void MtProgress_SetError(CMtProgress *p, SRes res); -struct _CMtDec; +struct CMtDec; typedef struct { - struct _CMtDec *mtDec; + struct CMtDec_ *mtDec; unsigned index; void *inBuf; @@ -117,7 +117,7 @@ typedef struct -typedef struct _CMtDec +typedef struct CMtDec_ { /* input variables */ @@ -126,11 +126,11 @@ typedef struct _CMtDec // size_t inBlockMax; unsigned numThreadsMax_2; - ISeqInStream *inStream; + ISeqInStreamPtr inStream; // const Byte *inData; // size_t inDataSize; - ICompressProgress *progress; + ICompressProgressPtr progress; ISzAllocPtr alloc; IMtDecCallback2 *mtCallback; @@ -171,11 +171,11 @@ typedef struct _CMtDec unsigned filledThreadStart; unsigned numFilledThreads; - #ifndef _7ZIP_ST + #ifndef Z7_ST BoolInt needInterrupt; UInt64 interruptIndex; CMtProgress mtProgress; - CMtDecThread threads[MTDEC__THREADS_MAX]; + CMtDecThread threads[MTDEC_THREADS_MAX]; #endif } CMtDec; diff --git a/deps/LZMA-SDK/C/Ppmd.h b/deps/LZMA-SDK/C/Ppmd.h index b19879208..66b26266f 100644 --- a/deps/LZMA-SDK/C/Ppmd.h +++ b/deps/LZMA-SDK/C/Ppmd.h @@ -1,9 +1,9 @@ /* Ppmd.h -- PPMD codec common code -2021-04-13 : Igor Pavlov : Public domain +2023-03-05 : Igor Pavlov : Public domain This code is based on PPMd var.H (2001): Dmitry Shkarin : Public domain */ -#ifndef __PPMD_H -#define __PPMD_H +#ifndef ZIP7_INC_PPMD_H +#define ZIP7_INC_PPMD_H #include "CpuArch.h" @@ -48,8 +48,10 @@ typedef struct Byte Count; /* Count to next change of Shift */ } CPpmd_See; -#define Ppmd_See_Update(p) if ((p)->Shift < PPMD_PERIOD_BITS && --(p)->Count == 0) \ - { (p)->Summ = (UInt16)((p)->Summ << 1); (p)->Count = (Byte)(3 << (p)->Shift++); } +#define Ppmd_See_UPDATE(p) \ + { if ((p)->Shift < PPMD_PERIOD_BITS && --(p)->Count == 0) \ + { (p)->Summ = (UInt16)((p)->Summ << 1); \ + (p)->Count = (Byte)(3 << (p)->Shift++); }} typedef struct diff --git a/deps/LZMA-SDK/C/Ppmd7.c b/deps/LZMA-SDK/C/Ppmd7.c index cf401cb37..efcc5d86e 100644 --- a/deps/LZMA-SDK/C/Ppmd7.c +++ b/deps/LZMA-SDK/C/Ppmd7.c @@ -1,5 +1,5 @@ /* Ppmd7.c -- PPMdH codec -2021-04-13 : Igor Pavlov : Public domain +2023-09-07 : Igor Pavlov : Public domain This code is based on PPMd var.H (2001): Dmitry Shkarin : Public domain */ #include "Precomp.h" @@ -14,7 +14,7 @@ This code is based on PPMd var.H (2001): Dmitry Shkarin : Public domain */ MY_ALIGN(16) static const Byte PPMD7_kExpEscape[16] = { 25, 14, 9, 7, 5, 5, 4, 4, 4, 3, 3, 3, 2, 2, 2, 2 }; MY_ALIGN(16) -static const UInt16 kInitBinEsc[] = { 0x3CDD, 0x1F3F, 0x59BF, 0x48F3, 0x64A1, 0x5ABC, 0x6632, 0x6051}; +static const UInt16 PPMD7_kInitBinEsc[] = { 0x3CDD, 0x1F3F, 0x59BF, 0x48F3, 0x64A1, 0x5ABC, 0x6632, 0x6051}; #define MAX_FREQ 124 #define UNIT_SIZE 12 @@ -33,7 +33,7 @@ static const UInt16 kInitBinEsc[] = { 0x3CDD, 0x1F3F, 0x59BF, 0x48F3, 0x64A1, 0x #define ONE_STATE(ctx) Ppmd7Context_OneState(ctx) #define SUFFIX(ctx) CTX((ctx)->Suffix) -typedef CPpmd7_Context * CTX_PTR; +typedef CPpmd7_Context * PPMD7_CTX_PTR; struct CPpmd7_Node_; @@ -107,14 +107,14 @@ BoolInt Ppmd7_Alloc(CPpmd7 *p, UInt32 size, ISzAllocPtr alloc) // ---------- Internal Memory Allocator ---------- /* We can use CPpmd7_Node in list of free units (as in Ppmd8) - But we still need one additional list walk pass in GlueFreeBlocks(). - So we use simple CPpmd_Void_Ref instead of CPpmd7_Node in InsertNode() / RemoveNode() + But we still need one additional list walk pass in Ppmd7_GlueFreeBlocks(). + So we use simple CPpmd_Void_Ref instead of CPpmd7_Node in Ppmd7_InsertNode() / Ppmd7_RemoveNode() */ #define EMPTY_NODE 0 -static void InsertNode(CPpmd7 *p, void *node, unsigned indx) +static void Ppmd7_InsertNode(CPpmd7 *p, void *node, unsigned indx) { *((CPpmd_Void_Ref *)node) = p->FreeList[indx]; // ((CPpmd7_Node *)node)->Next = (CPpmd7_Node_Ref)p->FreeList[indx]; @@ -124,7 +124,7 @@ static void InsertNode(CPpmd7 *p, void *node, unsigned indx) } -static void *RemoveNode(CPpmd7 *p, unsigned indx) +static void *Ppmd7_RemoveNode(CPpmd7 *p, unsigned indx) { CPpmd_Void_Ref *node = (CPpmd_Void_Ref *)Ppmd7_GetPtr(p, p->FreeList[indx]); p->FreeList[indx] = *node; @@ -134,32 +134,32 @@ static void *RemoveNode(CPpmd7 *p, unsigned indx) } -static void SplitBlock(CPpmd7 *p, void *ptr, unsigned oldIndx, unsigned newIndx) +static void Ppmd7_SplitBlock(CPpmd7 *p, void *ptr, unsigned oldIndx, unsigned newIndx) { unsigned i, nu = I2U(oldIndx) - I2U(newIndx); ptr = (Byte *)ptr + U2B(I2U(newIndx)); if (I2U(i = U2I(nu)) != nu) { unsigned k = I2U(--i); - InsertNode(p, ((Byte *)ptr) + U2B(k), nu - k - 1); + Ppmd7_InsertNode(p, ((Byte *)ptr) + U2B(k), nu - k - 1); } - InsertNode(p, ptr, i); + Ppmd7_InsertNode(p, ptr, i); } /* we use CPpmd7_Node_Union union to solve XLC -O2 strict pointer aliasing problem */ -typedef union _CPpmd7_Node_Union +typedef union { CPpmd7_Node Node; CPpmd7_Node_Ref NextRef; } CPpmd7_Node_Union; -/* Original PPmdH (Ppmd7) code uses doubly linked list in GlueFreeBlocks() +/* Original PPmdH (Ppmd7) code uses doubly linked list in Ppmd7_GlueFreeBlocks() we use single linked list similar to Ppmd8 code */ -static void GlueFreeBlocks(CPpmd7 *p) +static void Ppmd7_GlueFreeBlocks(CPpmd7 *p) { /* we use first UInt16 field of 12-bytes UNITs as record type stamp @@ -239,27 +239,27 @@ static void GlueFreeBlocks(CPpmd7 *p) if (nu == 0) continue; for (; nu > 128; nu -= 128, node += 128) - InsertNode(p, node, PPMD_NUM_INDEXES - 1); + Ppmd7_InsertNode(p, node, PPMD_NUM_INDEXES - 1); if (I2U(i = U2I(nu)) != nu) { unsigned k = I2U(--i); - InsertNode(p, node + k, (unsigned)nu - k - 1); + Ppmd7_InsertNode(p, node + k, (unsigned)nu - k - 1); } - InsertNode(p, node, i); + Ppmd7_InsertNode(p, node, i); } } -MY_NO_INLINE -static void *AllocUnitsRare(CPpmd7 *p, unsigned indx) +Z7_NO_INLINE +static void *Ppmd7_AllocUnitsRare(CPpmd7 *p, unsigned indx) { unsigned i; if (p->GlueCount == 0) { - GlueFreeBlocks(p); + Ppmd7_GlueFreeBlocks(p); if (p->FreeList[indx] != 0) - return RemoveNode(p, indx); + return Ppmd7_RemoveNode(p, indx); } i = indx; @@ -277,17 +277,17 @@ static void *AllocUnitsRare(CPpmd7 *p, unsigned indx) while (p->FreeList[i] == 0); { - void *block = RemoveNode(p, i); - SplitBlock(p, block, i, indx); + void *block = Ppmd7_RemoveNode(p, i); + Ppmd7_SplitBlock(p, block, i, indx); return block; } } -static void *AllocUnits(CPpmd7 *p, unsigned indx) +static void *Ppmd7_AllocUnits(CPpmd7 *p, unsigned indx) { if (p->FreeList[indx] != 0) - return RemoveNode(p, indx); + return Ppmd7_RemoveNode(p, indx); { UInt32 numBytes = U2B(I2U(indx)); Byte *lo = p->LoUnit; @@ -297,13 +297,22 @@ static void *AllocUnits(CPpmd7 *p, unsigned indx) return lo; } } - return AllocUnitsRare(p, indx); + return Ppmd7_AllocUnitsRare(p, indx); } -#define MyMem12Cpy(dest, src, num) \ - { UInt32 *d = (UInt32 *)dest; const UInt32 *z = (const UInt32 *)src; UInt32 n = num; \ - do { d[0] = z[0]; d[1] = z[1]; d[2] = z[2]; z += 3; d += 3; } while (--n); } +#define MEM_12_CPY(dest, src, num) \ + { UInt32 *d = (UInt32 *)(dest); \ + const UInt32 *z = (const UInt32 *)(src); \ + unsigned n = (num); \ + do { \ + d[0] = z[0]; \ + d[1] = z[1]; \ + d[2] = z[2]; \ + z += 3; \ + d += 3; \ + } while (--n); \ + } /* @@ -315,12 +324,12 @@ static void *ShrinkUnits(CPpmd7 *p, void *oldPtr, unsigned oldNU, unsigned newNU return oldPtr; if (p->FreeList[i1] != 0) { - void *ptr = RemoveNode(p, i1); - MyMem12Cpy(ptr, oldPtr, newNU); - InsertNode(p, oldPtr, i0); + void *ptr = Ppmd7_RemoveNode(p, i1); + MEM_12_CPY(ptr, oldPtr, newNU) + Ppmd7_InsertNode(p, oldPtr, i0); return ptr; } - SplitBlock(p, oldPtr, i0, i1); + Ppmd7_SplitBlock(p, oldPtr, i0, i1); return oldPtr; } */ @@ -329,14 +338,14 @@ static void *ShrinkUnits(CPpmd7 *p, void *oldPtr, unsigned oldNU, unsigned newNU #define SUCCESSOR(p) Ppmd_GET_SUCCESSOR(p) static void SetSuccessor(CPpmd_State *p, CPpmd_Void_Ref v) { - Ppmd_SET_SUCCESSOR(p, v); + Ppmd_SET_SUCCESSOR(p, v) } -MY_NO_INLINE +Z7_NO_INLINE static -void RestartModel(CPpmd7 *p) +void Ppmd7_RestartModel(CPpmd7 *p) { unsigned i, k; @@ -352,8 +361,8 @@ void RestartModel(CPpmd7 *p) p->PrevSuccess = 0; { - CPpmd7_Context *mc = (CTX_PTR)(void *)(p->HiUnit -= UNIT_SIZE); /* AllocContext(p); */ - CPpmd_State *s = (CPpmd_State *)p->LoUnit; /* AllocUnits(p, PPMD_NUM_INDEXES - 1); */ + CPpmd7_Context *mc = (PPMD7_CTX_PTR)(void *)(p->HiUnit -= UNIT_SIZE); /* AllocContext(p); */ + CPpmd_State *s = (CPpmd_State *)p->LoUnit; /* Ppmd7_AllocUnits(p, PPMD_NUM_INDEXES - 1); */ p->LoUnit += U2B(256 / 2); p->MaxContext = p->MinContext = mc; @@ -391,7 +400,7 @@ void RestartModel(CPpmd7 *p) { unsigned m; UInt16 *dest = p->BinSumm[i] + k; - UInt16 val = (UInt16)(PPMD_BIN_SCALE - kInitBinEsc[k] / (i + 2)); + const UInt16 val = (UInt16)(PPMD_BIN_SCALE - PPMD7_kInitBinEsc[k] / (i + 2)); for (m = 0; m < 64; m += 8) dest[m] = val; } @@ -423,13 +432,13 @@ void Ppmd7_Init(CPpmd7 *p, unsigned maxOrder) { p->MaxOrder = maxOrder; - RestartModel(p); + Ppmd7_RestartModel(p); } /* - CreateSuccessors() + Ppmd7_CreateSuccessors() It's called when (FoundState->Successor) is RAW-Successor, that is the link to position in Raw text. So we create Context records and write the links to @@ -445,10 +454,10 @@ void Ppmd7_Init(CPpmd7 *p, unsigned maxOrder) also it can return pointer to real context of same order, */ -MY_NO_INLINE -static CTX_PTR CreateSuccessors(CPpmd7 *p) +Z7_NO_INLINE +static PPMD7_CTX_PTR Ppmd7_CreateSuccessors(CPpmd7 *p) { - CTX_PTR c = p->MinContext; + PPMD7_CTX_PTR c = p->MinContext; CPpmd_Byte_Ref upBranch = (CPpmd_Byte_Ref)SUCCESSOR(p->FoundState); Byte newSym, newFreq; unsigned numPs = 0; @@ -522,15 +531,15 @@ static CTX_PTR CreateSuccessors(CPpmd7 *p) do { - CTX_PTR c1; + PPMD7_CTX_PTR c1; /* = AllocContext(p); */ if (p->HiUnit != p->LoUnit) - c1 = (CTX_PTR)(void *)(p->HiUnit -= UNIT_SIZE); + c1 = (PPMD7_CTX_PTR)(void *)(p->HiUnit -= UNIT_SIZE); else if (p->FreeList[0] != 0) - c1 = (CTX_PTR)RemoveNode(p, 0); + c1 = (PPMD7_CTX_PTR)Ppmd7_RemoveNode(p, 0); else { - c1 = (CTX_PTR)AllocUnitsRare(p, 0); + c1 = (PPMD7_CTX_PTR)Ppmd7_AllocUnitsRare(p, 0); if (!c1) return NULL; } @@ -550,16 +559,16 @@ static CTX_PTR CreateSuccessors(CPpmd7 *p) -#define SwapStates(s) \ +#define SWAP_STATES(s) \ { CPpmd_State tmp = s[0]; s[0] = s[-1]; s[-1] = tmp; } void Ppmd7_UpdateModel(CPpmd7 *p); -MY_NO_INLINE +Z7_NO_INLINE void Ppmd7_UpdateModel(CPpmd7 *p) { CPpmd_Void_Ref maxSuccessor, minSuccessor; - CTX_PTR c, mc; + PPMD7_CTX_PTR c, mc; unsigned s0, ns; @@ -592,7 +601,7 @@ void Ppmd7_UpdateModel(CPpmd7 *p) if (s[0].Freq >= s[-1].Freq) { - SwapStates(s); + SWAP_STATES(s) s--; } } @@ -610,10 +619,10 @@ void Ppmd7_UpdateModel(CPpmd7 *p) { /* MAX ORDER context */ /* (FoundState->Successor) is RAW-Successor. */ - p->MaxContext = p->MinContext = CreateSuccessors(p); + p->MaxContext = p->MinContext = Ppmd7_CreateSuccessors(p); if (!p->MinContext) { - RestartModel(p); + Ppmd7_RestartModel(p); return; } SetSuccessor(p->FoundState, REF(p->MinContext)); @@ -629,7 +638,7 @@ void Ppmd7_UpdateModel(CPpmd7 *p) p->Text = text; if (text >= p->UnitsStart) { - RestartModel(p); + Ppmd7_RestartModel(p); return; } maxSuccessor = REF(text); @@ -645,10 +654,10 @@ void Ppmd7_UpdateModel(CPpmd7 *p) if (minSuccessor <= maxSuccessor) { // minSuccessor is RAW-Successor. So we will create real contexts records: - CTX_PTR cs = CreateSuccessors(p); + PPMD7_CTX_PTR cs = Ppmd7_CreateSuccessors(p); if (!cs) { - RestartModel(p); + Ppmd7_RestartModel(p); return; } minSuccessor = REF(cs); @@ -711,27 +720,27 @@ void Ppmd7_UpdateModel(CPpmd7 *p) if ((ns1 & 1) == 0) { /* Expand for one UNIT */ - unsigned oldNU = ns1 >> 1; - unsigned i = U2I(oldNU); + const unsigned oldNU = ns1 >> 1; + const unsigned i = U2I(oldNU); if (i != U2I((size_t)oldNU + 1)) { - void *ptr = AllocUnits(p, i + 1); + void *ptr = Ppmd7_AllocUnits(p, i + 1); void *oldPtr; if (!ptr) { - RestartModel(p); + Ppmd7_RestartModel(p); return; } oldPtr = STATS(c); - MyMem12Cpy(ptr, oldPtr, oldNU); - InsertNode(p, oldPtr, i); + MEM_12_CPY(ptr, oldPtr, oldNU) + Ppmd7_InsertNode(p, oldPtr, i); c->Union4.Stats = STATS_REF(ptr); } } sum = c->Union2.SummFreq; /* max increase of Escape_Freq is 3 here. total increase of Union2.SummFreq for all symbols is less than 256 here */ - sum += (UInt32)(2 * ns1 < ns) + 2 * ((unsigned)(4 * ns1 <= ns) & (sum <= 8 * ns1)); + sum += (UInt32)(unsigned)((2 * ns1 < ns) + 2 * ((unsigned)(4 * ns1 <= ns) & (sum <= 8 * ns1))); /* original PPMdH uses 16-bit variable for (sum) here. But (sum < 0x9000). So we don't truncate (sum) to 16-bit */ // sum = (UInt16)sum; @@ -739,10 +748,10 @@ void Ppmd7_UpdateModel(CPpmd7 *p) else { // instead of One-symbol context we create 2-symbol context - CPpmd_State *s = (CPpmd_State*)AllocUnits(p, 0); + CPpmd_State *s = (CPpmd_State*)Ppmd7_AllocUnits(p, 0); if (!s) { - RestartModel(p); + Ppmd7_RestartModel(p); return; } { @@ -761,7 +770,7 @@ void Ppmd7_UpdateModel(CPpmd7 *p) // (max(s->freq) == 120), when we convert from 1-symbol into 2-symbol context s->Freq = (Byte)freq; // max(InitEsc = PPMD7_kExpEscape[*]) is 25. So the max(escapeFreq) is 26 here - sum = freq + p->InitEsc + (ns > 3); + sum = (UInt32)(freq + p->InitEsc + (ns > 3)); } } @@ -795,8 +804,8 @@ void Ppmd7_UpdateModel(CPpmd7 *p) -MY_NO_INLINE -static void Rescale(CPpmd7 *p) +Z7_NO_INLINE +static void Ppmd7_Rescale(CPpmd7 *p) { unsigned i, adder, sumFreq, escFreq; CPpmd_State *stats = STATS(p->MinContext); @@ -885,7 +894,7 @@ static void Rescale(CPpmd7 *p) *s = *stats; s->Freq = (Byte)freq; // (freq <= 260 / 4) p->FoundState = s; - InsertNode(p, stats, U2I(n0)); + Ppmd7_InsertNode(p, stats, U2I(n0)); return; } @@ -899,13 +908,13 @@ static void Rescale(CPpmd7 *p) { if (p->FreeList[i1] != 0) { - void *ptr = RemoveNode(p, i1); + void *ptr = Ppmd7_RemoveNode(p, i1); p->MinContext->Union4.Stats = STATS_REF(ptr); - MyMem12Cpy(ptr, (const void *)stats, n1); - InsertNode(p, stats, i0); + MEM_12_CPY(ptr, (const void *)stats, n1) + Ppmd7_InsertNode(p, stats, i0); } else - SplitBlock(p, stats, i0, i1); + Ppmd7_SplitBlock(p, stats, i0, i1); } } } @@ -933,10 +942,10 @@ CPpmd_See *Ppmd7_MakeEscFreq(CPpmd7 *p, unsigned numMasked, UInt32 *escFreq) p->HiBitsFlag; { // if (see->Summ) field is larger than 16-bit, we need only low 16 bits of Summ - unsigned summ = (UInt16)see->Summ; // & 0xFFFF - unsigned r = (summ >> see->Shift); + const unsigned summ = (UInt16)see->Summ; // & 0xFFFF + const unsigned r = (summ >> see->Shift); see->Summ = (UInt16)(summ - r); - *escFreq = r + (r == 0); + *escFreq = (UInt32)(r + (r == 0)); } } else @@ -948,9 +957,9 @@ CPpmd_See *Ppmd7_MakeEscFreq(CPpmd7 *p, unsigned numMasked, UInt32 *escFreq) } -static void NextContext(CPpmd7 *p) +static void Ppmd7_NextContext(CPpmd7 *p) { - CTX_PTR c = CTX(SUCCESSOR(p->FoundState)); + PPMD7_CTX_PTR c = CTX(SUCCESSOR(p->FoundState)); if (p->OrderFall == 0 && (const Byte *)c > p->Text) p->MaxContext = p->MinContext = c; else @@ -967,12 +976,12 @@ void Ppmd7_Update1(CPpmd7 *p) s->Freq = (Byte)freq; if (freq > s[-1].Freq) { - SwapStates(s); + SWAP_STATES(s) p->FoundState = --s; if (freq > MAX_FREQ) - Rescale(p); + Ppmd7_Rescale(p); } - NextContext(p); + Ppmd7_NextContext(p); } @@ -981,15 +990,15 @@ void Ppmd7_Update1_0(CPpmd7 *p) CPpmd_State *s = p->FoundState; CPpmd7_Context *mc = p->MinContext; unsigned freq = s->Freq; - unsigned summFreq = mc->Union2.SummFreq; + const unsigned summFreq = mc->Union2.SummFreq; p->PrevSuccess = (2 * freq > summFreq); - p->RunLength += (int)p->PrevSuccess; + p->RunLength += (Int32)p->PrevSuccess; mc->Union2.SummFreq = (UInt16)(summFreq + 4); freq += 4; s->Freq = (Byte)freq; if (freq > MAX_FREQ) - Rescale(p); - NextContext(p); + Ppmd7_Rescale(p); + Ppmd7_NextContext(p); } @@ -1000,7 +1009,7 @@ void Ppmd7_UpdateBin(CPpmd7 *p) p->FoundState->Freq = (Byte)(freq + (freq < 128)); p->PrevSuccess = 1; p->RunLength++; - NextContext(p); + Ppmd7_NextContext(p); } */ @@ -1013,7 +1022,7 @@ void Ppmd7_Update2(CPpmd7 *p) p->MinContext->Union2.SummFreq = (UInt16)(p->MinContext->Union2.SummFreq + 4); s->Freq = (Byte)freq; if (freq > MAX_FREQ) - Rescale(p); + Ppmd7_Rescale(p); Ppmd7_UpdateModel(p); } @@ -1042,8 +1051,8 @@ Last UNIT of array at offset (Size - 12) is root order-0 CPpmd7_Context record. The code can free UNITs memory blocks that were allocated to store CPpmd_State vectors. The code doesn't free UNITs allocated for CPpmd7_Context records. -The code calls RestartModel(), when there is no free memory for allocation. -And RestartModel() changes the state to orignal start state, with full free block. +The code calls Ppmd7_RestartModel(), when there is no free memory for allocation. +And Ppmd7_RestartModel() changes the state to orignal start state, with full free block. The code allocates UNITs with the following order: @@ -1051,14 +1060,14 @@ The code allocates UNITs with the following order: Allocation of 1 UNIT for Context record - from free space (HiUnit) down to (LoUnit) - from FreeList[0] - - AllocUnitsRare() + - Ppmd7_AllocUnitsRare() -AllocUnits() for CPpmd_State vectors: +Ppmd7_AllocUnits() for CPpmd_State vectors: - from FreeList[i] - from free space (LoUnit) up to (HiUnit) - - AllocUnitsRare() + - Ppmd7_AllocUnitsRare() -AllocUnitsRare() +Ppmd7_AllocUnitsRare() - if (GlueCount == 0) { Glue lists, GlueCount = 255, allocate from FreeList[i]] } - loop for all higher sized FreeList[...] lists @@ -1093,8 +1102,8 @@ The PPMd code tries to fulfill the condition: We have (Sum(Stats[].Freq) <= 256 * 124), because of (MAX_FREQ = 124) So (4 = 128 - 124) is average reserve for Escape_Freq for each symbol. If (CPpmd_State::Freq) is not aligned for 4, the reserve can be 5, 6 or 7. -SummFreq and Escape_Freq can be changed in Rescale() and *Update*() functions. -Rescale() can remove symbols only from max-order contexts. So Escape_Freq can increase after multiple calls of Rescale() for +SummFreq and Escape_Freq can be changed in Ppmd7_Rescale() and *Update*() functions. +Ppmd7_Rescale() can remove symbols only from max-order contexts. So Escape_Freq can increase after multiple calls of Ppmd7_Rescale() for max-order context. When the PPMd code still break (Total <= RC::Range) condition in range coder, @@ -1102,3 +1111,21 @@ we have two ways to resolve that problem: 1) we can report error, if we want to keep compatibility with original PPMd code that has no fix for such cases. 2) we can reduce (Total) value to (RC::Range) by reducing (Escape_Freq) part of (Total) value. */ + +#undef MAX_FREQ +#undef UNIT_SIZE +#undef U2B +#undef U2I +#undef I2U +#undef I2U_UInt16 +#undef REF +#undef STATS_REF +#undef CTX +#undef STATS +#undef ONE_STATE +#undef SUFFIX +#undef NODE +#undef EMPTY_NODE +#undef MEM_12_CPY +#undef SUCCESSOR +#undef SWAP_STATES diff --git a/deps/LZMA-SDK/C/Ppmd7.h b/deps/LZMA-SDK/C/Ppmd7.h index d31809aeb..d9eb326d6 100644 --- a/deps/LZMA-SDK/C/Ppmd7.h +++ b/deps/LZMA-SDK/C/Ppmd7.h @@ -1,11 +1,11 @@ /* Ppmd7.h -- Ppmd7 (PPMdH) compression codec -2021-04-13 : Igor Pavlov : Public domain +2023-04-02 : Igor Pavlov : Public domain This code is based on: PPMd var.H (2001): Dmitry Shkarin : Public domain */ -#ifndef __PPMD7_H -#define __PPMD7_H +#ifndef ZIP7_INC_PPMD7_H +#define ZIP7_INC_PPMD7_H #include "Ppmd.h" @@ -55,7 +55,7 @@ typedef struct UInt32 Range; UInt32 Code; UInt32 Low; - IByteIn *Stream; + IByteInPtr Stream; } CPpmd7_RangeDec; @@ -66,7 +66,7 @@ typedef struct // Byte _dummy_[3]; UInt64 Low; UInt64 CacheSize; - IByteOut *Stream; + IByteOutPtr Stream; } CPpmd7z_RangeEnc; diff --git a/deps/LZMA-SDK/C/Ppmd7Dec.c b/deps/LZMA-SDK/C/Ppmd7Dec.c index 55d74ff9d..081ab8955 100644 --- a/deps/LZMA-SDK/C/Ppmd7Dec.c +++ b/deps/LZMA-SDK/C/Ppmd7Dec.c @@ -1,5 +1,5 @@ /* Ppmd7Dec.c -- Ppmd7z (PPMdH with 7z Range Coder) Decoder -2021-04-13 : Igor Pavlov : Public domain +2023-09-07 : Igor Pavlov : Public domain This code is based on: PPMd var.H (2001): Dmitry Shkarin : Public domain */ @@ -8,7 +8,7 @@ This code is based on: #include "Ppmd7.h" -#define kTopValue (1 << 24) +#define kTopValue ((UInt32)1 << 24) #define READ_BYTE(p) IByteIn_Read((p)->Stream) @@ -37,9 +37,9 @@ BoolInt Ppmd7z_RangeDec_Init(CPpmd7_RangeDec *p) #define R (&p->rc.dec) -MY_FORCE_INLINE -// MY_NO_INLINE -static void RangeDec_Decode(CPpmd7 *p, UInt32 start, UInt32 size) +Z7_FORCE_INLINE +// Z7_NO_INLINE +static void Ppmd7z_RD_Decode(CPpmd7 *p, UInt32 start, UInt32 size) { @@ -48,18 +48,18 @@ static void RangeDec_Decode(CPpmd7 *p, UInt32 start, UInt32 size) RC_NORM_LOCAL(R) } -#define RC_Decode(start, size) RangeDec_Decode(p, start, size); -#define RC_DecodeFinal(start, size) RC_Decode(start, size) RC_NORM_REMOTE(R) -#define RC_GetThreshold(total) (R->Code / (R->Range /= (total))) +#define RC_Decode(start, size) Ppmd7z_RD_Decode(p, start, size); +#define RC_DecodeFinal(start, size) RC_Decode(start, size) RC_NORM_REMOTE(R) +#define RC_GetThreshold(total) (R->Code / (R->Range /= (total))) #define CTX(ref) ((CPpmd7_Context *)Ppmd7_GetContext(p, ref)) -typedef CPpmd7_Context * CTX_PTR; +// typedef CPpmd7_Context * CTX_PTR; #define SUCCESSOR(p) Ppmd_GET_SUCCESSOR(p) void Ppmd7_UpdateModel(CPpmd7 *p); -#define MASK(sym) ((unsigned char *)charMask)[sym] -// MY_FORCE_INLINE +#define MASK(sym) ((Byte *)charMask)[sym] +// Z7_FORCE_INLINE // static int Ppmd7z_DecodeSymbol(CPpmd7 *p) { @@ -70,7 +70,7 @@ int Ppmd7z_DecodeSymbol(CPpmd7 *p) CPpmd_State *s = Ppmd7_GetStats(p, p->MinContext); unsigned i; UInt32 count, hiCnt; - UInt32 summFreq = p->MinContext->Union2.SummFreq; + const UInt32 summFreq = p->MinContext->Union2.SummFreq; @@ -81,7 +81,7 @@ int Ppmd7z_DecodeSymbol(CPpmd7 *p) if ((Int32)(count -= s->Freq) < 0) { Byte sym; - RC_DecodeFinal(0, s->Freq); + RC_DecodeFinal(0, s->Freq) p->FoundState = s; sym = s->Symbol; Ppmd7_Update1_0(p); @@ -96,7 +96,7 @@ int Ppmd7z_DecodeSymbol(CPpmd7 *p) if ((Int32)(count -= (++s)->Freq) < 0) { Byte sym; - RC_DecodeFinal((hiCnt - count) - s->Freq, s->Freq); + RC_DecodeFinal((hiCnt - count) - s->Freq, s->Freq) p->FoundState = s; sym = s->Symbol; Ppmd7_Update1(p); @@ -109,10 +109,10 @@ int Ppmd7z_DecodeSymbol(CPpmd7 *p) return PPMD7_SYM_ERROR; hiCnt -= count; - RC_Decode(hiCnt, summFreq - hiCnt); + RC_Decode(hiCnt, summFreq - hiCnt) p->HiBitsFlag = PPMD7_HiBitsFlag_3(p->FoundState->Symbol); - PPMD_SetAllBitsIn256Bytes(charMask); + PPMD_SetAllBitsIn256Bytes(charMask) // i = p->MinContext->NumStats - 1; // do { MASK((--s)->Symbol) = 0; } while (--i); { @@ -120,8 +120,8 @@ int Ppmd7z_DecodeSymbol(CPpmd7 *p) MASK(s->Symbol) = 0; do { - unsigned sym0 = s2[0].Symbol; - unsigned sym1 = s2[1].Symbol; + const unsigned sym0 = s2[0].Symbol; + const unsigned sym1 = s2[1].Symbol; s2 += 2; MASK(sym0) = 0; MASK(sym1) = 0; @@ -152,7 +152,7 @@ int Ppmd7z_DecodeSymbol(CPpmd7 *p) // Ppmd7_UpdateBin(p); { unsigned freq = s->Freq; - CTX_PTR c = CTX(SUCCESSOR(s)); + CPpmd7_Context *c = CTX(SUCCESSOR(s)); sym = s->Symbol; p->FoundState = s; p->PrevSuccess = 1; @@ -176,7 +176,7 @@ int Ppmd7z_DecodeSymbol(CPpmd7 *p) R->Range -= size0; RC_NORM_LOCAL(R) - PPMD_SetAllBitsIn256Bytes(charMask); + PPMD_SetAllBitsIn256Bytes(charMask) MASK(Ppmd7Context_OneState(p->MinContext)->Symbol) = 0; p->PrevSuccess = 0; } @@ -209,17 +209,17 @@ int Ppmd7z_DecodeSymbol(CPpmd7 *p) unsigned num2 = num / 2; num &= 1; - hiCnt = (s->Freq & (unsigned)(MASK(s->Symbol))) & (0 - (UInt32)num); + hiCnt = (s->Freq & (UInt32)(MASK(s->Symbol))) & (0 - (UInt32)num); s += num; p->MinContext = mc; do { - unsigned sym0 = s[0].Symbol; - unsigned sym1 = s[1].Symbol; + const unsigned sym0 = s[0].Symbol; + const unsigned sym1 = s[1].Symbol; s += 2; - hiCnt += (s[-2].Freq & (unsigned)(MASK(sym0))); - hiCnt += (s[-1].Freq & (unsigned)(MASK(sym1))); + hiCnt += (s[-2].Freq & (UInt32)(MASK(sym0))); + hiCnt += (s[-1].Freq & (UInt32)(MASK(sym1))); } while (--num2); } @@ -238,20 +238,20 @@ int Ppmd7z_DecodeSymbol(CPpmd7 *p) s = Ppmd7_GetStats(p, p->MinContext); hiCnt = count; - // count -= s->Freq & (unsigned)(MASK(s->Symbol)); + // count -= s->Freq & (UInt32)(MASK(s->Symbol)); // if ((Int32)count >= 0) { for (;;) { - count -= s->Freq & (unsigned)(MASK((s)->Symbol)); s++; if ((Int32)count < 0) break; - // count -= s->Freq & (unsigned)(MASK((s)->Symbol)); s++; if ((Int32)count < 0) break; - }; + count -= s->Freq & (UInt32)(MASK((s)->Symbol)); s++; if ((Int32)count < 0) break; + // count -= s->Freq & (UInt32)(MASK((s)->Symbol)); s++; if ((Int32)count < 0) break; + } } s--; - RC_DecodeFinal((hiCnt - count) - s->Freq, s->Freq); + RC_DecodeFinal((hiCnt - count) - s->Freq, s->Freq) // new (see->Summ) value can overflow over 16-bits in some rare cases - Ppmd_See_Update(see); + Ppmd_See_UPDATE(see) p->FoundState = s; sym = s->Symbol; Ppmd7_Update2(p); @@ -261,7 +261,7 @@ int Ppmd7z_DecodeSymbol(CPpmd7 *p) if (count >= freqSum) return PPMD7_SYM_ERROR; - RC_Decode(hiCnt, freqSum - hiCnt); + RC_Decode(hiCnt, freqSum - hiCnt) // We increase (see->Summ) for sum of Freqs of all non_Masked symbols. // new (see->Summ) value can overflow over 16-bits in some rare cases @@ -295,3 +295,18 @@ Byte *Ppmd7z_DecodeSymbols(CPpmd7 *p, Byte *buf, const Byte *lim) return buf; } */ + +#undef kTopValue +#undef READ_BYTE +#undef RC_NORM_BASE +#undef RC_NORM_1 +#undef RC_NORM +#undef RC_NORM_LOCAL +#undef RC_NORM_REMOTE +#undef R +#undef RC_Decode +#undef RC_DecodeFinal +#undef RC_GetThreshold +#undef CTX +#undef SUCCESSOR +#undef MASK diff --git a/deps/LZMA-SDK/C/Ppmd7Enc.c b/deps/LZMA-SDK/C/Ppmd7Enc.c index 62139c5b6..49cbbe649 100644 --- a/deps/LZMA-SDK/C/Ppmd7Enc.c +++ b/deps/LZMA-SDK/C/Ppmd7Enc.c @@ -1,5 +1,5 @@ /* Ppmd7Enc.c -- Ppmd7z (PPMdH with 7z Range Coder) Encoder -2021-04-13 : Igor Pavlov : Public domain +2023-09-07 : Igor Pavlov : Public domain This code is based on: PPMd var.H (2001): Dmitry Shkarin : Public domain */ @@ -8,7 +8,7 @@ This code is based on: #include "Ppmd7.h" -#define kTopValue (1 << 24) +#define kTopValue ((UInt32)1 << 24) #define R (&p->rc.enc) @@ -20,8 +20,8 @@ void Ppmd7z_Init_RangeEnc(CPpmd7 *p) R->CacheSize = 1; } -MY_NO_INLINE -static void RangeEnc_ShiftLow(CPpmd7 *p) +Z7_NO_INLINE +static void Ppmd7z_RangeEnc_ShiftLow(CPpmd7 *p) { if ((UInt32)R->Low < (UInt32)0xFF000000 || (unsigned)(R->Low >> 32) != 0) { @@ -38,53 +38,53 @@ static void RangeEnc_ShiftLow(CPpmd7 *p) R->Low = (UInt32)((UInt32)R->Low << 8); } -#define RC_NORM_BASE(p) if (R->Range < kTopValue) { R->Range <<= 8; RangeEnc_ShiftLow(p); -#define RC_NORM_1(p) RC_NORM_BASE(p) } -#define RC_NORM(p) RC_NORM_BASE(p) RC_NORM_BASE(p) }} +#define RC_NORM_BASE(p) if (R->Range < kTopValue) { R->Range <<= 8; Ppmd7z_RangeEnc_ShiftLow(p); +#define RC_NORM_1(p) RC_NORM_BASE(p) } +#define RC_NORM(p) RC_NORM_BASE(p) RC_NORM_BASE(p) }} // we must use only one type of Normalization from two: LOCAL or REMOTE #define RC_NORM_LOCAL(p) // RC_NORM(p) #define RC_NORM_REMOTE(p) RC_NORM(p) /* -#define RangeEnc_Encode(p, start, _size_) \ +#define Ppmd7z_RangeEnc_Encode(p, start, _size_) \ { UInt32 size = _size_; \ R->Low += start * R->Range; \ R->Range *= size; \ RC_NORM_LOCAL(p); } */ -MY_FORCE_INLINE -// MY_NO_INLINE -static void RangeEnc_Encode(CPpmd7 *p, UInt32 start, UInt32 size) +Z7_FORCE_INLINE +// Z7_NO_INLINE +static void Ppmd7z_RangeEnc_Encode(CPpmd7 *p, UInt32 start, UInt32 size) { R->Low += start * R->Range; R->Range *= size; - RC_NORM_LOCAL(p); + RC_NORM_LOCAL(p) } void Ppmd7z_Flush_RangeEnc(CPpmd7 *p) { unsigned i; for (i = 0; i < 5; i++) - RangeEnc_ShiftLow(p); + Ppmd7z_RangeEnc_ShiftLow(p); } -#define RC_Encode(start, size) RangeEnc_Encode(p, start, size); -#define RC_EncodeFinal(start, size) RC_Encode(start, size); RC_NORM_REMOTE(p); +#define RC_Encode(start, size) Ppmd7z_RangeEnc_Encode(p, start, size); +#define RC_EncodeFinal(start, size) RC_Encode(start, size) RC_NORM_REMOTE(p) #define CTX(ref) ((CPpmd7_Context *)Ppmd7_GetContext(p, ref)) #define SUFFIX(ctx) CTX((ctx)->Suffix) -typedef CPpmd7_Context * CTX_PTR; +// typedef CPpmd7_Context * CTX_PTR; #define SUCCESSOR(p) Ppmd_GET_SUCCESSOR(p) void Ppmd7_UpdateModel(CPpmd7 *p); -#define MASK(sym) ((unsigned char *)charMask)[sym] +#define MASK(sym) ((Byte *)charMask)[sym] -MY_FORCE_INLINE +Z7_FORCE_INLINE static void Ppmd7z_EncodeSymbol(CPpmd7 *p, int symbol) { @@ -104,7 +104,7 @@ void Ppmd7z_EncodeSymbol(CPpmd7 *p, int symbol) if (s->Symbol == symbol) { // R->Range /= p->MinContext->Union2.SummFreq; - RC_EncodeFinal(0, s->Freq); + RC_EncodeFinal(0, s->Freq) p->FoundState = s; Ppmd7_Update1_0(p); return; @@ -117,7 +117,7 @@ void Ppmd7z_EncodeSymbol(CPpmd7 *p, int symbol) if ((++s)->Symbol == symbol) { // R->Range /= p->MinContext->Union2.SummFreq; - RC_EncodeFinal(sum, s->Freq); + RC_EncodeFinal(sum, s->Freq) p->FoundState = s; Ppmd7_Update1(p); return; @@ -127,10 +127,10 @@ void Ppmd7z_EncodeSymbol(CPpmd7 *p, int symbol) while (--i); // R->Range /= p->MinContext->Union2.SummFreq; - RC_Encode(sum, p->MinContext->Union2.SummFreq - sum); + RC_Encode(sum, p->MinContext->Union2.SummFreq - sum) p->HiBitsFlag = PPMD7_HiBitsFlag_3(p->FoundState->Symbol); - PPMD_SetAllBitsIn256Bytes(charMask); + PPMD_SetAllBitsIn256Bytes(charMask) // MASK(s->Symbol) = 0; // i = p->MinContext->NumStats - 1; // do { MASK((--s)->Symbol) = 0; } while (--i); @@ -139,8 +139,8 @@ void Ppmd7z_EncodeSymbol(CPpmd7 *p, int symbol) MASK(s->Symbol) = 0; do { - unsigned sym0 = s2[0].Symbol; - unsigned sym1 = s2[1].Symbol; + const unsigned sym0 = s2[0].Symbol; + const unsigned sym1 = s2[1].Symbol; s2 += 2; MASK(sym0) = 0; MASK(sym1) = 0; @@ -153,20 +153,20 @@ void Ppmd7z_EncodeSymbol(CPpmd7 *p, int symbol) UInt16 *prob = Ppmd7_GetBinSumm(p); CPpmd_State *s = Ppmd7Context_OneState(p->MinContext); UInt32 pr = *prob; - UInt32 bound = (R->Range >> 14) * pr; + const UInt32 bound = (R->Range >> 14) * pr; pr = PPMD_UPDATE_PROB_1(pr); if (s->Symbol == symbol) { *prob = (UInt16)(pr + (1 << PPMD_INT_BITS)); // RangeEnc_EncodeBit_0(p, bound); R->Range = bound; - RC_NORM_1(p); + RC_NORM_1(p) // p->FoundState = s; // Ppmd7_UpdateBin(p); { - unsigned freq = s->Freq; - CTX_PTR c = CTX(SUCCESSOR(s)); + const unsigned freq = s->Freq; + CPpmd7_Context *c = CTX(SUCCESSOR(s)); p->FoundState = s; p->PrevSuccess = 1; p->RunLength++; @@ -187,7 +187,7 @@ void Ppmd7z_EncodeSymbol(CPpmd7 *p, int symbol) R->Range -= bound; RC_NORM_LOCAL(p) - PPMD_SetAllBitsIn256Bytes(charMask); + PPMD_SetAllBitsIn256Bytes(charMask) MASK(s->Symbol) = 0; p->PrevSuccess = 0; } @@ -248,14 +248,14 @@ void Ppmd7z_EncodeSymbol(CPpmd7 *p, int symbol) do { - unsigned cur = s->Symbol; + const unsigned cur = s->Symbol; if ((int)cur == symbol) { - UInt32 low = sum; - UInt32 freq = s->Freq; + const UInt32 low = sum; + const UInt32 freq = s->Freq; unsigned num2; - Ppmd_See_Update(see); + Ppmd_See_UPDATE(see) p->FoundState = s; sum += escFreq; @@ -265,21 +265,20 @@ void Ppmd7z_EncodeSymbol(CPpmd7 *p, int symbol) if (num2 != 0) { s += i; - for (;;) + do { - unsigned sym0 = s[0].Symbol; - unsigned sym1 = s[1].Symbol; + const unsigned sym0 = s[0].Symbol; + const unsigned sym1 = s[1].Symbol; s += 2; sum += (s[-2].Freq & (unsigned)(MASK(sym0))); sum += (s[-1].Freq & (unsigned)(MASK(sym1))); - if (--num2 == 0) - break; } + while (--num2); } R->Range /= sum; - RC_EncodeFinal(low, freq); + RC_EncodeFinal(low, freq) Ppmd7_Update2(p); return; } @@ -289,21 +288,21 @@ void Ppmd7z_EncodeSymbol(CPpmd7 *p, int symbol) while (--i); { - UInt32 total = sum + escFreq; + const UInt32 total = sum + escFreq; see->Summ = (UInt16)(see->Summ + total); R->Range /= total; - RC_Encode(sum, escFreq); + RC_Encode(sum, escFreq) } { - CPpmd_State *s2 = Ppmd7_GetStats(p, p->MinContext); + const CPpmd_State *s2 = Ppmd7_GetStats(p, p->MinContext); s--; MASK(s->Symbol) = 0; do { - unsigned sym0 = s2[0].Symbol; - unsigned sym1 = s2[1].Symbol; + const unsigned sym0 = s2[0].Symbol; + const unsigned sym1 = s2[1].Symbol; s2 += 2; MASK(sym0) = 0; MASK(sym1) = 0; @@ -321,3 +320,18 @@ void Ppmd7z_EncodeSymbols(CPpmd7 *p, const Byte *buf, const Byte *lim) Ppmd7z_EncodeSymbol(p, *buf); } } + +#undef kTopValue +#undef WRITE_BYTE +#undef RC_NORM_BASE +#undef RC_NORM_1 +#undef RC_NORM +#undef RC_NORM_LOCAL +#undef RC_NORM_REMOTE +#undef R +#undef RC_Encode +#undef RC_EncodeFinal +#undef SUFFIX +#undef CTX +#undef SUCCESSOR +#undef MASK diff --git a/deps/LZMA-SDK/C/Precomp.h b/deps/LZMA-SDK/C/Precomp.h index e8ff8b40e..7747fdd74 100644 --- a/deps/LZMA-SDK/C/Precomp.h +++ b/deps/LZMA-SDK/C/Precomp.h @@ -1,10 +1,127 @@ -/* Precomp.h -- StdAfx -2013-11-12 : Igor Pavlov : Public domain */ +/* Precomp.h -- precompilation file +2024-01-25 : Igor Pavlov : Public domain */ -#ifndef __7Z_PRECOMP_H -#define __7Z_PRECOMP_H +#ifndef ZIP7_INC_PRECOMP_H +#define ZIP7_INC_PRECOMP_H + +/* + this file must be included before another *.h files and before . + this file is included from the following files: + C\*.c + C\Util\*\Precomp.h <- C\Util\*\*.c + CPP\Common\Common.h <- *\StdAfx.h <- *\*.cpp + + this file can set the following macros: + Z7_LARGE_PAGES 1 + Z7_LONG_PATH 1 + Z7_WIN32_WINNT_MIN 0x0500 (or higher) : we require at least win2000+ for 7-Zip + _WIN32_WINNT 0x0500 (or higher) + WINVER _WIN32_WINNT + UNICODE 1 + _UNICODE 1 +*/ #include "Compiler.h" -/* #include "7zTypes.h" */ + +#ifdef _MSC_VER +// #pragma warning(disable : 4206) // nonstandard extension used : translation unit is empty +#if _MSC_VER >= 1912 +// #pragma warning(disable : 5039) // pointer or reference to potentially throwing function passed to 'extern "C"' function under - EHc.Undefined behavior may occur if this function throws an exception. +#endif +#endif + +/* +// for debug: +#define UNICODE 1 +#define _UNICODE 1 +#define _WIN32_WINNT 0x0500 // win2000 +#ifndef WINVER + #define WINVER _WIN32_WINNT +#endif +*/ + +#ifdef _WIN32 +/* + this "Precomp.h" file must be included before , + if we want to define _WIN32_WINNT before . +*/ + +#ifndef Z7_LARGE_PAGES +#ifndef Z7_NO_LARGE_PAGES +#define Z7_LARGE_PAGES 1 +#endif +#endif + +#ifndef Z7_LONG_PATH +#ifndef Z7_NO_LONG_PATH +#define Z7_LONG_PATH 1 +#endif +#endif + +#ifndef Z7_DEVICE_FILE +#ifndef Z7_NO_DEVICE_FILE +// #define Z7_DEVICE_FILE 1 +#endif +#endif + +// we don't change macros if included after +#ifndef _WINDOWS_ + +#ifndef Z7_WIN32_WINNT_MIN + #if defined(_M_ARM64) || defined(__aarch64__) + // #define Z7_WIN32_WINNT_MIN 0x0a00 // win10 + #define Z7_WIN32_WINNT_MIN 0x0600 // vista + #elif defined(_M_ARM) && defined(_M_ARMT) && defined(_M_ARM_NT) + // #define Z7_WIN32_WINNT_MIN 0x0602 // win8 + #define Z7_WIN32_WINNT_MIN 0x0600 // vista + #elif defined(_M_X64) || defined(_M_AMD64) || defined(__x86_64__) || defined(_M_IA64) + #define Z7_WIN32_WINNT_MIN 0x0503 // win2003 + // #elif defined(_M_IX86) || defined(__i386__) + // #define Z7_WIN32_WINNT_MIN 0x0500 // win2000 + #else // x86 and another(old) systems + #define Z7_WIN32_WINNT_MIN 0x0500 // win2000 + // #define Z7_WIN32_WINNT_MIN 0x0502 // win2003 // for debug + #endif +#endif // Z7_WIN32_WINNT_MIN + + +#ifndef Z7_DO_NOT_DEFINE_WIN32_WINNT +#ifdef _WIN32_WINNT + // #error Stop_Compiling_Bad_WIN32_WINNT +#else + #ifndef Z7_NO_DEFINE_WIN32_WINNT +Z7_DIAGNOSTIC_IGNORE_BEGIN_RESERVED_MACRO_IDENTIFIER + #define _WIN32_WINNT Z7_WIN32_WINNT_MIN +Z7_DIAGNOSTIC_IGNORE_END_RESERVED_MACRO_IDENTIFIER + #endif +#endif // _WIN32_WINNT + +#ifndef WINVER + #define WINVER _WIN32_WINNT +#endif +#endif // Z7_DO_NOT_DEFINE_WIN32_WINNT + + +#ifndef _MBCS +#ifndef Z7_NO_UNICODE +// UNICODE and _UNICODE are used by and by 7-zip code. + +#ifndef UNICODE +#define UNICODE 1 +#endif + +#ifndef _UNICODE +Z7_DIAGNOSTIC_IGNORE_BEGIN_RESERVED_MACRO_IDENTIFIER +#define _UNICODE 1 +Z7_DIAGNOSTIC_IGNORE_END_RESERVED_MACRO_IDENTIFIER +#endif + +#endif // Z7_NO_UNICODE +#endif // _MBCS +#endif // _WINDOWS_ + +// #include "7zWindows.h" + +#endif // _WIN32 #endif diff --git a/deps/LZMA-SDK/C/RotateDefs.h b/deps/LZMA-SDK/C/RotateDefs.h index 8f01d1a6c..c16b4f8e6 100644 --- a/deps/LZMA-SDK/C/RotateDefs.h +++ b/deps/LZMA-SDK/C/RotateDefs.h @@ -1,14 +1,14 @@ /* RotateDefs.h -- Rotate functions -2015-03-25 : Igor Pavlov : Public domain */ +2023-06-18 : Igor Pavlov : Public domain */ -#ifndef __ROTATE_DEFS_H -#define __ROTATE_DEFS_H +#ifndef ZIP7_INC_ROTATE_DEFS_H +#define ZIP7_INC_ROTATE_DEFS_H #ifdef _MSC_VER #include -/* don't use _rotl with MINGW. It can insert slow call to function. */ +/* don't use _rotl with old MINGW. It can insert slow call to function. */ /* #if (_MSC_VER >= 1200) */ #pragma intrinsic(_rotl) @@ -18,12 +18,32 @@ #define rotlFixed(x, n) _rotl((x), (n)) #define rotrFixed(x, n) _rotr((x), (n)) +#if (_MSC_VER >= 1300) +#define Z7_ROTL64(x, n) _rotl64((x), (n)) +#define Z7_ROTR64(x, n) _rotr64((x), (n)) +#else +#define Z7_ROTL64(x, n) (((x) << (n)) | ((x) >> (64 - (n)))) +#define Z7_ROTR64(x, n) (((x) >> (n)) | ((x) << (64 - (n)))) +#endif + #else /* new compilers can translate these macros to fast commands. */ +#if defined(__clang__) && (__clang_major__ >= 4) \ + || defined(__GNUC__) && (__GNUC__ >= 5) +/* GCC 4.9.0 and clang 3.5 can recognize more correct version: */ +#define rotlFixed(x, n) (((x) << (n)) | ((x) >> (-(n) & 31))) +#define rotrFixed(x, n) (((x) >> (n)) | ((x) << (-(n) & 31))) +#define Z7_ROTL64(x, n) (((x) << (n)) | ((x) >> (-(n) & 63))) +#define Z7_ROTR64(x, n) (((x) >> (n)) | ((x) << (-(n) & 63))) +#else +/* for old GCC / clang: */ #define rotlFixed(x, n) (((x) << (n)) | ((x) >> (32 - (n)))) #define rotrFixed(x, n) (((x) >> (n)) | ((x) << (32 - (n)))) +#define Z7_ROTL64(x, n) (((x) << (n)) | ((x) >> (64 - (n)))) +#define Z7_ROTR64(x, n) (((x) >> (n)) | ((x) << (64 - (n)))) +#endif #endif diff --git a/deps/LZMA-SDK/C/Sha256.c b/deps/LZMA-SDK/C/Sha256.c index 8b3983ea7..ea7ed8e75 100644 --- a/deps/LZMA-SDK/C/Sha256.c +++ b/deps/LZMA-SDK/C/Sha256.c @@ -1,64 +1,60 @@ /* Sha256.c -- SHA-256 Hash -2021-04-01 : Igor Pavlov : Public domain +: Igor Pavlov : Public domain This code is based on public domain code from Wei Dai's Crypto++ library. */ #include "Precomp.h" #include -#include "CpuArch.h" -#include "RotateDefs.h" #include "Sha256.h" - -#if defined(_MSC_VER) && (_MSC_VER < 1900) -// #define USE_MY_MM -#endif +#include "RotateDefs.h" +#include "CpuArch.h" #ifdef MY_CPU_X86_OR_AMD64 - #ifdef _MSC_VER - #if _MSC_VER >= 1200 - #define _SHA_SUPPORTED - #endif - #elif defined(__clang__) - #if (__clang_major__ >= 8) // fix that check - #define _SHA_SUPPORTED - #endif - #elif defined(__GNUC__) - #if (__GNUC__ >= 8) // fix that check - #define _SHA_SUPPORTED - #endif - #elif defined(__INTEL_COMPILER) - #if (__INTEL_COMPILER >= 1800) // fix that check - #define _SHA_SUPPORTED - #endif + #if defined(Z7_LLVM_CLANG_VERSION) && (Z7_LLVM_CLANG_VERSION >= 30800) \ + || defined(Z7_APPLE_CLANG_VERSION) && (Z7_APPLE_CLANG_VERSION >= 50100) \ + || defined(Z7_GCC_VERSION) && (Z7_GCC_VERSION >= 40900) \ + || defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 1600) \ + || defined(_MSC_VER) && (_MSC_VER >= 1200) + #define Z7_COMPILER_SHA256_SUPPORTED #endif -#elif defined(MY_CPU_ARM_OR_ARM64) - #ifdef _MSC_VER - #if _MSC_VER >= 1910 - #define _SHA_SUPPORTED +#elif defined(MY_CPU_ARM_OR_ARM64) && defined(MY_CPU_LE) + + #if defined(__ARM_FEATURE_SHA2) \ + || defined(__ARM_FEATURE_CRYPTO) + #define Z7_COMPILER_SHA256_SUPPORTED + #else + #if defined(MY_CPU_ARM64) \ + || defined(__ARM_ARCH) && (__ARM_ARCH >= 4) \ + || defined(Z7_MSC_VER_ORIGINAL) + #if defined(__ARM_FP) && \ + ( defined(Z7_CLANG_VERSION) && (Z7_CLANG_VERSION >= 30800) \ + || defined(__GNUC__) && (__GNUC__ >= 6) \ + ) \ + || defined(Z7_MSC_VER_ORIGINAL) && (_MSC_VER >= 1910) + #if defined(MY_CPU_ARM64) \ + || !defined(Z7_CLANG_VERSION) \ + || defined(__ARM_NEON) && \ + (Z7_CLANG_VERSION < 170000 || \ + Z7_CLANG_VERSION > 170001) + #define Z7_COMPILER_SHA256_SUPPORTED #endif - #elif defined(__clang__) - #if (__clang_major__ >= 8) // fix that check - #define _SHA_SUPPORTED #endif - #elif defined(__GNUC__) - #if (__GNUC__ >= 6) // fix that check - #define _SHA_SUPPORTED #endif #endif #endif -void MY_FAST_CALL Sha256_UpdateBlocks(UInt32 state[8], const Byte *data, size_t numBlocks); +void Z7_FASTCALL Sha256_UpdateBlocks(UInt32 state[8], const Byte *data, size_t numBlocks); -#ifdef _SHA_SUPPORTED - void MY_FAST_CALL Sha256_UpdateBlocks_HW(UInt32 state[8], const Byte *data, size_t numBlocks); +#ifdef Z7_COMPILER_SHA256_SUPPORTED + void Z7_FASTCALL Sha256_UpdateBlocks_HW(UInt32 state[8], const Byte *data, size_t numBlocks); - static SHA256_FUNC_UPDATE_BLOCKS g_FUNC_UPDATE_BLOCKS = Sha256_UpdateBlocks; - static SHA256_FUNC_UPDATE_BLOCKS g_FUNC_UPDATE_BLOCKS_HW; + static SHA256_FUNC_UPDATE_BLOCKS g_SHA256_FUNC_UPDATE_BLOCKS = Sha256_UpdateBlocks; + static SHA256_FUNC_UPDATE_BLOCKS g_SHA256_FUNC_UPDATE_BLOCKS_HW; - #define UPDATE_BLOCKS(p) p->func_UpdateBlocks + #define SHA256_UPDATE_BLOCKS(p) p->v.vars.func_UpdateBlocks #else - #define UPDATE_BLOCKS(p) Sha256_UpdateBlocks + #define SHA256_UPDATE_BLOCKS(p) Sha256_UpdateBlocks #endif @@ -66,16 +62,16 @@ BoolInt Sha256_SetFunction(CSha256 *p, unsigned algo) { SHA256_FUNC_UPDATE_BLOCKS func = Sha256_UpdateBlocks; - #ifdef _SHA_SUPPORTED + #ifdef Z7_COMPILER_SHA256_SUPPORTED if (algo != SHA256_ALGO_SW) { if (algo == SHA256_ALGO_DEFAULT) - func = g_FUNC_UPDATE_BLOCKS; + func = g_SHA256_FUNC_UPDATE_BLOCKS; else { if (algo != SHA256_ALGO_HW) return False; - func = g_FUNC_UPDATE_BLOCKS_HW; + func = g_SHA256_FUNC_UPDATE_BLOCKS_HW; if (!func) return False; } @@ -85,24 +81,25 @@ BoolInt Sha256_SetFunction(CSha256 *p, unsigned algo) return False; #endif - p->func_UpdateBlocks = func; + p->v.vars.func_UpdateBlocks = func; return True; } /* define it for speed optimization */ -#ifdef _SFX +#ifdef Z7_SFX #define STEP_PRE 1 #define STEP_MAIN 1 #else #define STEP_PRE 2 #define STEP_MAIN 4 - // #define _SHA256_UNROLL + // #define Z7_SHA256_UNROLL #endif +#undef Z7_SHA256_BIG_W #if STEP_MAIN != 16 - #define _SHA256_BIG_W + #define Z7_SHA256_BIG_W #endif @@ -110,7 +107,7 @@ BoolInt Sha256_SetFunction(CSha256 *p, unsigned algo) void Sha256_InitState(CSha256 *p) { - p->count = 0; + p->v.vars.count = 0; p->state[0] = 0x6a09e667; p->state[1] = 0xbb67ae85; p->state[2] = 0x3c6ef372; @@ -121,21 +118,28 @@ void Sha256_InitState(CSha256 *p) p->state[7] = 0x5be0cd19; } + + + + + + + void Sha256_Init(CSha256 *p) { - p->func_UpdateBlocks = - #ifdef _SHA_SUPPORTED - g_FUNC_UPDATE_BLOCKS; + p->v.vars.func_UpdateBlocks = + #ifdef Z7_COMPILER_SHA256_SUPPORTED + g_SHA256_FUNC_UPDATE_BLOCKS; #else NULL; #endif Sha256_InitState(p); } -#define S0(x) (rotrFixed(x, 2) ^ rotrFixed(x,13) ^ rotrFixed(x, 22)) -#define S1(x) (rotrFixed(x, 6) ^ rotrFixed(x,11) ^ rotrFixed(x, 25)) +#define S0(x) (rotrFixed(x, 2) ^ rotrFixed(x,13) ^ rotrFixed(x,22)) +#define S1(x) (rotrFixed(x, 6) ^ rotrFixed(x,11) ^ rotrFixed(x,25)) #define s0(x) (rotrFixed(x, 7) ^ rotrFixed(x,18) ^ (x >> 3)) -#define s1(x) (rotrFixed(x,17) ^ rotrFixed(x,19) ^ (x >> 10)) +#define s1(x) (rotrFixed(x,17) ^ rotrFixed(x,19) ^ (x >>10)) #define Ch(x,y,z) (z^(x&(y^z))) #define Maj(x,y,z) ((x&y)|(z&(x|y))) @@ -145,7 +149,7 @@ void Sha256_Init(CSha256 *p) #define blk2_main(j, i) s1(w(j, (i)-2)) + w(j, (i)-7) + s0(w(j, (i)-15)) -#ifdef _SHA256_BIG_W +#ifdef Z7_SHA256_BIG_W // we use +i instead of +(i) to change the order to solve CLANG compiler warning for signed/unsigned. #define w(j, i) W[(size_t)(j) + i] #define blk2(j, i) (w(j, i) = w(j, (i)-16) + blk2_main(j, i)) @@ -176,7 +180,7 @@ void Sha256_Init(CSha256 *p) #define R1_PRE(i) T1( W_PRE, i) #define R1_MAIN(i) T1( W_MAIN, i) -#if (!defined(_SHA256_UNROLL) || STEP_MAIN < 8) && (STEP_MAIN >= 4) +#if (!defined(Z7_SHA256_UNROLL) || STEP_MAIN < 8) && (STEP_MAIN >= 4) #define R2_MAIN(i) \ R1_MAIN(i) \ R1_MAIN(i + 1) \ @@ -185,7 +189,7 @@ void Sha256_Init(CSha256 *p) -#if defined(_SHA256_UNROLL) && STEP_MAIN >= 8 +#if defined(Z7_SHA256_UNROLL) && STEP_MAIN >= 8 #define T4( a,b,c,d,e,f,g,h, wx, i) \ h += S1(e) + Ch(e,f,g) + K[(i)+(size_t)(j)] + wx(i); \ @@ -223,14 +227,10 @@ void Sha256_Init(CSha256 *p) #endif -void MY_FAST_CALL Sha256_UpdateBlocks_HW(UInt32 state[8], const Byte *data, size_t numBlocks); -// static -extern MY_ALIGN(64) -const UInt32 SHA256_K_ARRAY[64]; - -MY_ALIGN(64) -const UInt32 SHA256_K_ARRAY[64] = { +extern +MY_ALIGN(64) const UInt32 SHA256_K_ARRAY[64]; +MY_ALIGN(64) const UInt32 SHA256_K_ARRAY[64] = { 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, @@ -249,27 +249,29 @@ const UInt32 SHA256_K_ARRAY[64] = { 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2 }; + + + + #define K SHA256_K_ARRAY - -MY_NO_INLINE -void MY_FAST_CALL Sha256_UpdateBlocks(UInt32 state[8], const Byte *data, size_t numBlocks) +Z7_NO_INLINE +void Z7_FASTCALL Sha256_UpdateBlocks(UInt32 state[8], const Byte *data, size_t numBlocks) { UInt32 W - #ifdef _SHA256_BIG_W +#ifdef Z7_SHA256_BIG_W [64]; - #else +#else [16]; - #endif - +#endif unsigned j; - UInt32 a,b,c,d,e,f,g,h; - - #if !defined(_SHA256_UNROLL) || (STEP_MAIN <= 4) || (STEP_PRE <= 4) +#if !defined(Z7_SHA256_UNROLL) || (STEP_MAIN <= 4) || (STEP_PRE <= 4) UInt32 tmp; - #endif +#endif + if (numBlocks == 0) return; + a = state[0]; b = state[1]; c = state[2]; @@ -279,7 +281,7 @@ void MY_FAST_CALL Sha256_UpdateBlocks(UInt32 state[8], const Byte *data, size_t g = state[6]; h = state[7]; - while (numBlocks) + do { for (j = 0; j < 16; j += STEP_PRE) @@ -297,12 +299,12 @@ void MY_FAST_CALL Sha256_UpdateBlocks(UInt32 state[8], const Byte *data, size_t #else - R1_PRE(0); + R1_PRE(0) #if STEP_PRE >= 2 - R1_PRE(1); + R1_PRE(1) #if STEP_PRE >= 4 - R1_PRE(2); - R1_PRE(3); + R1_PRE(2) + R1_PRE(3) #endif #endif @@ -311,32 +313,32 @@ void MY_FAST_CALL Sha256_UpdateBlocks(UInt32 state[8], const Byte *data, size_t for (j = 16; j < 64; j += STEP_MAIN) { - #if defined(_SHA256_UNROLL) && STEP_MAIN >= 8 + #if defined(Z7_SHA256_UNROLL) && STEP_MAIN >= 8 #if STEP_MAIN < 8 - R4_MAIN(0); + R4_MAIN(0) #else - R8_MAIN(0); + R8_MAIN(0) #if STEP_MAIN == 16 - R8_MAIN(8); + R8_MAIN(8) #endif #endif #else - R1_MAIN(0); + R1_MAIN(0) #if STEP_MAIN >= 2 - R1_MAIN(1); + R1_MAIN(1) #if STEP_MAIN >= 4 - R2_MAIN(2); + R2_MAIN(2) #if STEP_MAIN >= 8 - R2_MAIN(4); - R2_MAIN(6); + R2_MAIN(4) + R2_MAIN(6) #if STEP_MAIN >= 16 - R2_MAIN(8); - R2_MAIN(10); - R2_MAIN(12); - R2_MAIN(14); + R2_MAIN(8) + R2_MAIN(10) + R2_MAIN(12) + R2_MAIN(14) #endif #endif #endif @@ -353,40 +355,27 @@ void MY_FAST_CALL Sha256_UpdateBlocks(UInt32 state[8], const Byte *data, size_t g += state[6]; state[6] = g; h += state[7]; state[7] = h; - data += 64; - numBlocks--; + data += SHA256_BLOCK_SIZE; } - - /* Wipe variables */ - /* memset(W, 0, sizeof(W)); */ + while (--numBlocks); } -#undef S0 -#undef S1 -#undef s0 -#undef s1 -#undef K -#define Sha256_UpdateBlock(p) UPDATE_BLOCKS(p)(p->state, p->buffer, 1) +#define Sha256_UpdateBlock(p) SHA256_UPDATE_BLOCKS(p)(p->state, p->buffer, 1) void Sha256_Update(CSha256 *p, const Byte *data, size_t size) { if (size == 0) return; - { - unsigned pos = (unsigned)p->count & 0x3F; - unsigned num; - - p->count += size; - - num = 64 - pos; + const unsigned pos = (unsigned)p->v.vars.count & (SHA256_BLOCK_SIZE - 1); + const unsigned num = SHA256_BLOCK_SIZE - pos; + p->v.vars.count += size; if (num > size) { memcpy(p->buffer + pos, data, size); return; } - if (pos != 0) { size -= num; @@ -396,9 +385,10 @@ void Sha256_Update(CSha256 *p, const Byte *data, size_t size) } } { - size_t numBlocks = size >> 6; - UPDATE_BLOCKS(p)(p->state, data, numBlocks); - size &= 0x3F; + const size_t numBlocks = size >> 6; + // if (numBlocks) + SHA256_UPDATE_BLOCKS(p)(p->state, data, numBlocks); + size &= SHA256_BLOCK_SIZE - 1; if (size == 0) return; data += (numBlocks << 6); @@ -409,78 +399,94 @@ void Sha256_Update(CSha256 *p, const Byte *data, size_t size) void Sha256_Final(CSha256 *p, Byte *digest) { - unsigned pos = (unsigned)p->count & 0x3F; - unsigned i; - + unsigned pos = (unsigned)p->v.vars.count & (SHA256_BLOCK_SIZE - 1); p->buffer[pos++] = 0x80; - - if (pos > (64 - 8)) + if (pos > (SHA256_BLOCK_SIZE - 4 * 2)) { - while (pos != 64) { p->buffer[pos++] = 0; } - // memset(&p->buf.buffer[pos], 0, 64 - pos); + while (pos != SHA256_BLOCK_SIZE) { p->buffer[pos++] = 0; } + // memset(&p->buf.buffer[pos], 0, SHA256_BLOCK_SIZE - pos); Sha256_UpdateBlock(p); pos = 0; } - - /* - if (pos & 3) + memset(&p->buffer[pos], 0, (SHA256_BLOCK_SIZE - 4 * 2) - pos); { - p->buffer[pos] = 0; - p->buffer[pos + 1] = 0; - p->buffer[pos + 2] = 0; - pos += 3; - pos &= ~3; + const UInt64 numBits = p->v.vars.count << 3; + SetBe32(p->buffer + SHA256_BLOCK_SIZE - 4 * 2, (UInt32)(numBits >> 32)) + SetBe32(p->buffer + SHA256_BLOCK_SIZE - 4 * 1, (UInt32)(numBits)) } - { - for (; pos < 64 - 8; pos += 4) - *(UInt32 *)(&p->buffer[pos]) = 0; - } - */ - - memset(&p->buffer[pos], 0, (64 - 8) - pos); - - { - UInt64 numBits = (p->count << 3); - SetBe32(p->buffer + 64 - 8, (UInt32)(numBits >> 32)); - SetBe32(p->buffer + 64 - 4, (UInt32)(numBits)); - } - Sha256_UpdateBlock(p); - - for (i = 0; i < 8; i += 2) +#if 1 && defined(MY_CPU_BE) + memcpy(digest, p->state, SHA256_DIGEST_SIZE); +#else { - UInt32 v0 = p->state[i]; - UInt32 v1 = p->state[(size_t)i + 1]; - SetBe32(digest , v0); - SetBe32(digest + 4, v1); - digest += 8; + unsigned i; + for (i = 0; i < 8; i += 2) + { + const UInt32 v0 = p->state[i]; + const UInt32 v1 = p->state[(size_t)i + 1]; + SetBe32(digest , v0) + SetBe32(digest + 4, v1) + digest += 4 * 2; + } } - + + + + +#endif Sha256_InitState(p); } -void Sha256Prepare() +void Sha256Prepare(void) { - #ifdef _SHA_SUPPORTED +#ifdef Z7_COMPILER_SHA256_SUPPORTED SHA256_FUNC_UPDATE_BLOCKS f, f_hw; f = Sha256_UpdateBlocks; f_hw = NULL; - #ifdef MY_CPU_X86_OR_AMD64 - #ifndef USE_MY_MM +#ifdef MY_CPU_X86_OR_AMD64 if (CPU_IsSupported_SHA() && CPU_IsSupported_SSSE3() - // && CPU_IsSupported_SSE41() ) - #endif - #else +#else if (CPU_IsSupported_SHA2()) - #endif +#endif { // printf("\n========== HW SHA256 ======== \n"); f = f_hw = Sha256_UpdateBlocks_HW; } - g_FUNC_UPDATE_BLOCKS = f; - g_FUNC_UPDATE_BLOCKS_HW = f_hw; - #endif + g_SHA256_FUNC_UPDATE_BLOCKS = f; + g_SHA256_FUNC_UPDATE_BLOCKS_HW = f_hw; +#endif } + +#undef U64C +#undef K +#undef S0 +#undef S1 +#undef s0 +#undef s1 +#undef Ch +#undef Maj +#undef W_MAIN +#undef W_PRE +#undef w +#undef blk2_main +#undef blk2 +#undef T1 +#undef T4 +#undef T8 +#undef R1_PRE +#undef R1_MAIN +#undef R2_MAIN +#undef R4 +#undef R4_PRE +#undef R4_MAIN +#undef R8 +#undef R8_PRE +#undef R8_MAIN +#undef STEP_PRE +#undef STEP_MAIN +#undef Z7_SHA256_BIG_W +#undef Z7_SHA256_UNROLL +#undef Z7_COMPILER_SHA256_SUPPORTED diff --git a/deps/LZMA-SDK/C/Sha256.h b/deps/LZMA-SDK/C/Sha256.h index aa38501e5..75329cdf0 100644 --- a/deps/LZMA-SDK/C/Sha256.h +++ b/deps/LZMA-SDK/C/Sha256.h @@ -1,8 +1,8 @@ /* Sha256.h -- SHA-256 Hash -2021-01-01 : Igor Pavlov : Public domain */ +: Igor Pavlov : Public domain */ -#ifndef __7Z_SHA256_H -#define __7Z_SHA256_H +#ifndef ZIP7_INC_SHA256_H +#define ZIP7_INC_SHA256_H #include "7zTypes.h" @@ -14,7 +14,10 @@ EXTERN_C_BEGIN #define SHA256_BLOCK_SIZE (SHA256_NUM_BLOCK_WORDS * 4) #define SHA256_DIGEST_SIZE (SHA256_NUM_DIGEST_WORDS * 4) -typedef void (MY_FAST_CALL *SHA256_FUNC_UPDATE_BLOCKS)(UInt32 state[8], const Byte *data, size_t numBlocks); + + + +typedef void (Z7_FASTCALL *SHA256_FUNC_UPDATE_BLOCKS)(UInt32 state[8], const Byte *data, size_t numBlocks); /* if (the system supports different SHA256 code implementations) @@ -32,9 +35,16 @@ typedef void (MY_FAST_CALL *SHA256_FUNC_UPDATE_BLOCKS)(UInt32 state[8], const By typedef struct { - SHA256_FUNC_UPDATE_BLOCKS func_UpdateBlocks; - UInt64 count; - UInt64 __pad_2[2]; + union + { + struct + { + SHA256_FUNC_UPDATE_BLOCKS func_UpdateBlocks; + UInt64 count; + } vars; + UInt64 _pad_64bit[4]; + void *_pad_align_ptr[2]; + } v; UInt32 state[SHA256_NUM_DIGEST_WORDS]; Byte buffer[SHA256_BLOCK_SIZE]; @@ -62,7 +72,7 @@ void Sha256_Final(CSha256 *p, Byte *digest); -// void MY_FAST_CALL Sha256_UpdateBlocks(UInt32 state[8], const Byte *data, size_t numBlocks); +// void Z7_FASTCALL Sha256_UpdateBlocks(UInt32 state[8], const Byte *data, size_t numBlocks); /* call Sha256Prepare() once at program start. diff --git a/deps/LZMA-SDK/C/Sha256Opt.c b/deps/LZMA-SDK/C/Sha256Opt.c index decc1382c..1c6b50f8d 100644 --- a/deps/LZMA-SDK/C/Sha256Opt.c +++ b/deps/LZMA-SDK/C/Sha256Opt.c @@ -1,71 +1,53 @@ /* Sha256Opt.c -- SHA-256 optimized code for SHA-256 hardware instructions -2021-04-01 : Igor Pavlov : Public domain */ +: Igor Pavlov : Public domain */ #include "Precomp.h" - -#if defined(_MSC_VER) -#if (_MSC_VER < 1900) && (_MSC_VER >= 1200) -// #define USE_MY_MM -#endif -#endif - +#include "Compiler.h" #include "CpuArch.h" +// #define Z7_USE_HW_SHA_STUB // for debug #ifdef MY_CPU_X86_OR_AMD64 - #if defined(__clang__) - #if (__clang_major__ >= 8) // fix that check + #if defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 1600) // fix that check #define USE_HW_SHA - #ifndef __SHA__ + #elif defined(Z7_LLVM_CLANG_VERSION) && (Z7_LLVM_CLANG_VERSION >= 30800) \ + || defined(Z7_APPLE_CLANG_VERSION) && (Z7_APPLE_CLANG_VERSION >= 50100) \ + || defined(Z7_GCC_VERSION) && (Z7_GCC_VERSION >= 40900) + #define USE_HW_SHA + #if !defined(__INTEL_COMPILER) + // icc defines __GNUC__, but icc doesn't support __attribute__(__target__) + #if !defined(__SHA__) || !defined(__SSSE3__) #define ATTRIB_SHA __attribute__((__target__("sha,ssse3"))) - #if defined(_MSC_VER) - // SSSE3: for clang-cl: - #include - #define __SHA__ - #endif #endif - - #endif - #elif defined(__GNUC__) - #if (__GNUC__ >= 8) // fix that check - #define USE_HW_SHA - #ifndef __SHA__ - #define ATTRIB_SHA __attribute__((__target__("sha,ssse3"))) - // #pragma GCC target("sha,ssse3") #endif - #endif - #elif defined(__INTEL_COMPILER) - #if (__INTEL_COMPILER >= 1800) // fix that check - #define USE_HW_SHA - #endif #elif defined(_MSC_VER) - #ifdef USE_MY_MM - #define USE_VER_MIN 1300 - #else - #define USE_VER_MIN 1910 - #endif - #if _MSC_VER >= USE_VER_MIN + #if (_MSC_VER >= 1900) #define USE_HW_SHA + #else + #define Z7_USE_HW_SHA_STUB #endif #endif // #endif // MY_CPU_X86_OR_AMD64 +#ifndef USE_HW_SHA + // #define Z7_USE_HW_SHA_STUB // for debug +#endif #ifdef USE_HW_SHA // #pragma message("Sha256 HW") -// #include -#if !defined(_MSC_VER) || (_MSC_VER >= 1900) + + + +// sse/sse2/ssse3: +#include +// sha*: #include + +#if defined (__clang__) && defined(_MSC_VER) + #if !defined(__SHA__) + #include + #endif #else -#include - -#if defined(_MSC_VER) && (_MSC_VER >= 1600) -// #include -#endif - -#ifdef USE_MY_MM -#include "My_mm.h" -#endif #endif @@ -94,60 +76,44 @@ SHA: extern MY_ALIGN(64) const UInt32 SHA256_K_ARRAY[64]; - #define K SHA256_K_ARRAY -#define ADD_EPI32(dest, src) dest = _mm_add_epi32(dest, src); -#define SHA256_MSG1(dest, src) dest = _mm_sha256msg1_epu32(dest, src); -#define SHA25G_MSG2(dest, src) dest = _mm_sha256msg2_epu32(dest, src); - +#define ADD_EPI32(dest, src) dest = _mm_add_epi32(dest, src); +#define SHA256_MSG1(dest, src) dest = _mm_sha256msg1_epu32(dest, src); +#define SHA256_MSG2(dest, src) dest = _mm_sha256msg2_epu32(dest, src); #define LOAD_SHUFFLE(m, k) \ m = _mm_loadu_si128((const __m128i *)(const void *)(data + (k) * 16)); \ m = _mm_shuffle_epi8(m, mask); \ -#define SM1(g0, g1, g2, g3) \ - SHA256_MSG1(g3, g0); \ +#define NNN(m0, m1, m2, m3) -#define SM2(g0, g1, g2, g3) \ - tmp = _mm_alignr_epi8(g1, g0, 4); \ - ADD_EPI32(g2, tmp); \ - SHA25G_MSG2(g2, g1); \ - -// #define LS0(k, g0, g1, g2, g3) LOAD_SHUFFLE(g0, k) -// #define LS1(k, g0, g1, g2, g3) LOAD_SHUFFLE(g1, k+1) - - -#define NNN(g0, g1, g2, g3) +#define SM1(m1, m2, m3, m0) \ + SHA256_MSG1(m0, m1); \ +#define SM2(m2, m3, m0, m1) \ + ADD_EPI32(m0, _mm_alignr_epi8(m3, m2, 4)) \ + SHA256_MSG2(m0, m3); \ #define RND2(t0, t1) \ t0 = _mm_sha256rnds2_epu32(t0, t1, msg); -#define RND2_0(m, k) \ - msg = _mm_add_epi32(m, *(const __m128i *) (const void *) &K[(k) * 4]); \ + + +#define R4(k, m0, m1, m2, m3, OP0, OP1) \ + msg = _mm_add_epi32(m0, *(const __m128i *) (const void *) &K[(k) * 4]); \ RND2(state0, state1); \ msg = _mm_shuffle_epi32(msg, 0x0E); \ - - -#define RND2_1 \ + OP0(m0, m1, m2, m3) \ RND2(state1, state0); \ - - -// We use scheme with 3 rounds ahead for SHA256_MSG1 / 2 rounds ahead for SHA256_MSG2 - -#define R4(k, g0, g1, g2, g3, OP0, OP1) \ - RND2_0(g0, k); \ - OP0(g0, g1, g2, g3); \ - RND2_1; \ - OP1(g0, g1, g2, g3); \ + OP1(m0, m1, m2, m3) \ #define R16(k, OP0, OP1, OP2, OP3, OP4, OP5, OP6, OP7) \ - R4 ( (k)*4+0, m0, m1, m2, m3, OP0, OP1 ) \ - R4 ( (k)*4+1, m1, m2, m3, m0, OP2, OP3 ) \ - R4 ( (k)*4+2, m2, m3, m0, m1, OP4, OP5 ) \ - R4 ( (k)*4+3, m3, m0, m1, m2, OP6, OP7 ) \ + R4 ( (k)*4+0, m0,m1,m2,m3, OP0, OP1 ) \ + R4 ( (k)*4+1, m1,m2,m3,m0, OP2, OP3 ) \ + R4 ( (k)*4+2, m2,m3,m0,m1, OP4, OP5 ) \ + R4 ( (k)*4+3, m3,m0,m1,m2, OP6, OP7 ) \ #define PREPARE_STATE \ tmp = _mm_shuffle_epi32(state0, 0x1B); /* abcd */ \ @@ -157,15 +123,16 @@ const UInt32 SHA256_K_ARRAY[64]; state1 = _mm_unpackhi_epi64(state1, tmp); /* abef */ \ -void MY_FAST_CALL Sha256_UpdateBlocks_HW(UInt32 state[8], const Byte *data, size_t numBlocks); +void Z7_FASTCALL Sha256_UpdateBlocks_HW(UInt32 state[8], const Byte *data, size_t numBlocks); #ifdef ATTRIB_SHA ATTRIB_SHA #endif -void MY_FAST_CALL Sha256_UpdateBlocks_HW(UInt32 state[8], const Byte *data, size_t numBlocks) +void Z7_FASTCALL Sha256_UpdateBlocks_HW(UInt32 state[8], const Byte *data, size_t numBlocks) { const __m128i mask = _mm_set_epi32(0x0c0d0e0f, 0x08090a0b, 0x04050607, 0x00010203); - __m128i tmp; - __m128i state0, state1; + + + __m128i tmp, state0, state1; if (numBlocks == 0) return; @@ -192,13 +159,13 @@ void MY_FAST_CALL Sha256_UpdateBlocks_HW(UInt32 state[8], const Byte *data, size - R16 ( 0, NNN, NNN, SM1, NNN, SM1, SM2, SM1, SM2 ); - R16 ( 1, SM1, SM2, SM1, SM2, SM1, SM2, SM1, SM2 ); - R16 ( 2, SM1, SM2, SM1, SM2, SM1, SM2, SM1, SM2 ); - R16 ( 3, SM1, SM2, NNN, SM2, NNN, NNN, NNN, NNN ); + R16 ( 0, NNN, NNN, SM1, NNN, SM1, SM2, SM1, SM2 ) + R16 ( 1, SM1, SM2, SM1, SM2, SM1, SM2, SM1, SM2 ) + R16 ( 2, SM1, SM2, SM1, SM2, SM1, SM2, SM1, SM2 ) + R16 ( 3, SM1, SM2, NNN, SM2, NNN, NNN, NNN, NNN ) - ADD_EPI32(state0, state0_save); - ADD_EPI32(state1, state1_save); + ADD_EPI32(state0, state0_save) + ADD_EPI32(state1, state1_save) data += 64; } @@ -212,19 +179,28 @@ void MY_FAST_CALL Sha256_UpdateBlocks_HW(UInt32 state[8], const Byte *data, size #endif // USE_HW_SHA -#elif defined(MY_CPU_ARM_OR_ARM64) - - #if defined(__clang__) - #if (__clang_major__ >= 8) // fix that check +#elif defined(MY_CPU_ARM_OR_ARM64) && defined(MY_CPU_LE) + + #if defined(__ARM_FEATURE_SHA2) \ + || defined(__ARM_FEATURE_CRYPTO) + #define USE_HW_SHA + #else + #if defined(MY_CPU_ARM64) \ + || defined(__ARM_ARCH) && (__ARM_ARCH >= 4) \ + || defined(Z7_MSC_VER_ORIGINAL) + #if defined(__ARM_FP) && \ + ( defined(Z7_CLANG_VERSION) && (Z7_CLANG_VERSION >= 30800) \ + || defined(__GNUC__) && (__GNUC__ >= 6) \ + ) \ + || defined(Z7_MSC_VER_ORIGINAL) && (_MSC_VER >= 1910) + #if defined(MY_CPU_ARM64) \ + || !defined(Z7_CLANG_VERSION) \ + || defined(__ARM_NEON) && \ + (Z7_CLANG_VERSION < 170000 || \ + Z7_CLANG_VERSION > 170001) #define USE_HW_SHA #endif - #elif defined(__GNUC__) - #if (__GNUC__ >= 6) // fix that check - #define USE_HW_SHA #endif - #elif defined(_MSC_VER) - #if _MSC_VER >= 1910 - #define USE_HW_SHA #endif #endif @@ -232,63 +208,144 @@ void MY_FAST_CALL Sha256_UpdateBlocks_HW(UInt32 state[8], const Byte *data, size // #pragma message("=== Sha256 HW === ") + #if defined(__clang__) || defined(__GNUC__) +#if !defined(__ARM_FEATURE_SHA2) && \ + !defined(__ARM_FEATURE_CRYPTO) #ifdef MY_CPU_ARM64 +#if defined(__clang__) + #define ATTRIB_SHA __attribute__((__target__("crypto"))) +#else #define ATTRIB_SHA __attribute__((__target__("+crypto"))) +#endif #else +#if defined(__clang__) && (__clang_major__ >= 1) + #define ATTRIB_SHA __attribute__((__target__("armv8-a,sha2"))) +#else #define ATTRIB_SHA __attribute__((__target__("fpu=crypto-neon-fp-armv8"))) +#endif #endif +#endif #else // _MSC_VER // for arm32 #define _ARM_USE_NEW_NEON_INTRINSICS #endif -#if defined(_MSC_VER) && defined(MY_CPU_ARM64) +#if defined(Z7_MSC_VER_ORIGINAL) && defined(MY_CPU_ARM64) #include #else -#include + +#if defined(__clang__) && __clang_major__ < 16 +#if !defined(__ARM_FEATURE_SHA2) && \ + !defined(__ARM_FEATURE_CRYPTO) +// #pragma message("=== we set __ARM_FEATURE_CRYPTO 1 === ") + Z7_DIAGNOSTIC_IGNORE_BEGIN_RESERVED_MACRO_IDENTIFIER + #define Z7_ARM_FEATURE_CRYPTO_WAS_SET 1 +// #if defined(__clang__) && __clang_major__ < 13 + #define __ARM_FEATURE_CRYPTO 1 +// #else + #define __ARM_FEATURE_SHA2 1 +// #endif + Z7_DIAGNOSTIC_IGNORE_END_RESERVED_MACRO_IDENTIFIER #endif +#endif // clang + +#if defined(__clang__) + +#if defined(__ARM_ARCH) && __ARM_ARCH < 8 + Z7_DIAGNOSTIC_IGNORE_BEGIN_RESERVED_MACRO_IDENTIFIER +// #pragma message("#define __ARM_ARCH 8") + #undef __ARM_ARCH + #define __ARM_ARCH 8 + Z7_DIAGNOSTIC_IGNORE_END_RESERVED_MACRO_IDENTIFIER +#endif + +#endif // clang + +#include + +#if defined(Z7_ARM_FEATURE_CRYPTO_WAS_SET) && \ + defined(__ARM_FEATURE_CRYPTO) && \ + defined(__ARM_FEATURE_SHA2) +Z7_DIAGNOSTIC_IGNORE_BEGIN_RESERVED_MACRO_IDENTIFIER + #undef __ARM_FEATURE_CRYPTO + #undef __ARM_FEATURE_SHA2 + #undef Z7_ARM_FEATURE_CRYPTO_WAS_SET +Z7_DIAGNOSTIC_IGNORE_END_RESERVED_MACRO_IDENTIFIER +// #pragma message("=== we undefine __ARM_FEATURE_CRYPTO === ") +#endif + +#endif // Z7_MSC_VER_ORIGINAL typedef uint32x4_t v128; // typedef __n128 v128; // MSVC #ifdef MY_CPU_BE - #define MY_rev32_for_LE(x) + #define MY_rev32_for_LE(x) x #else - #define MY_rev32_for_LE(x) x = vreinterpretq_u32_u8(vrev32q_u8(vreinterpretq_u8_u32(x))) + #define MY_rev32_for_LE(x) vrev32q_u8(x) #endif -#define LOAD_128(_p) (*(const v128 *)(const void *)(_p)) -#define STORE_128(_p, _v) *(v128 *)(void *)(_p) = (_v) +#if 1 // 0 for debug +// for arm32: it works slower by some reason than direct code +/* +for arm32 it generates: +MSVC-2022, GCC-9: + vld1.32 {d18,d19}, [r10] + vst1.32 {d4,d5}, [r3] + vld1.8 {d20-d21}, [r4] +there is no align hint (like [r10:128]). So instruction allows unaligned access +*/ +#define LOAD_128_32(_p) vld1q_u32(_p) +#define LOAD_128_8(_p) vld1q_u8 (_p) +#define STORE_128_32(_p, _v) vst1q_u32(_p, _v) +#else +/* +for arm32: +MSVC-2022: + vldm r10,{d18,d19} + vstm r3,{d4,d5} + does it require strict alignment? +GCC-9: + vld1.64 {d30-d31}, [r0:64] + vldr d28, [r0, #16] + vldr d29, [r0, #24] + vst1.64 {d30-d31}, [r0:64] + vstr d28, [r0, #16] + vstr d29, [r0, #24] +there is hint [r0:64], so does it requires 64-bit alignment. +*/ +#define LOAD_128_32(_p) (*(const v128 *)(const void *)(_p)) +#define LOAD_128_8(_p) vreinterpretq_u8_u32(*(const v128 *)(const void *)(_p)) +#define STORE_128_32(_p, _v) *(v128 *)(void *)(_p) = (_v) +#endif #define LOAD_SHUFFLE(m, k) \ - m = LOAD_128((data + (k) * 16)); \ - MY_rev32_for_LE(m); \ + m = vreinterpretq_u32_u8( \ + MY_rev32_for_LE( \ + LOAD_128_8(data + (k) * 16))); \ // K array must be aligned for 16-bytes at least. extern MY_ALIGN(64) const UInt32 SHA256_K_ARRAY[64]; - #define K SHA256_K_ARRAY - #define SHA256_SU0(dest, src) dest = vsha256su0q_u32(dest, src); -#define SHA25G_SU1(dest, src2, src3) dest = vsha256su1q_u32(dest, src2, src3); +#define SHA256_SU1(dest, src2, src3) dest = vsha256su1q_u32(dest, src2, src3); -#define SM1(g0, g1, g2, g3) SHA256_SU0(g3, g0) -#define SM2(g0, g1, g2, g3) SHA25G_SU1(g2, g0, g1) -#define NNN(g0, g1, g2, g3) +#define SM1(m0, m1, m2, m3) SHA256_SU0(m3, m0) +#define SM2(m0, m1, m2, m3) SHA256_SU1(m2, m0, m1) +#define NNN(m0, m1, m2, m3) - -#define R4(k, g0, g1, g2, g3, OP0, OP1) \ - msg = vaddq_u32(g0, *(const v128 *) (const void *) &K[(k) * 4]); \ +#define R4(k, m0, m1, m2, m3, OP0, OP1) \ + msg = vaddq_u32(m0, *(const v128 *) (const void *) &K[(k) * 4]); \ tmp = state0; \ state0 = vsha256hq_u32( state0, state1, msg ); \ state1 = vsha256h2q_u32( state1, tmp, msg ); \ - OP0(g0, g1, g2, g3); \ - OP1(g0, g1, g2, g3); \ + OP0(m0, m1, m2, m3); \ + OP1(m0, m1, m2, m3); \ #define R16(k, OP0, OP1, OP2, OP3, OP4, OP5, OP6, OP7) \ @@ -298,19 +355,19 @@ const UInt32 SHA256_K_ARRAY[64]; R4 ( (k)*4+3, m3, m0, m1, m2, OP6, OP7 ) \ -void MY_FAST_CALL Sha256_UpdateBlocks_HW(UInt32 state[8], const Byte *data, size_t numBlocks); +void Z7_FASTCALL Sha256_UpdateBlocks_HW(UInt32 state[8], const Byte *data, size_t numBlocks); #ifdef ATTRIB_SHA ATTRIB_SHA #endif -void MY_FAST_CALL Sha256_UpdateBlocks_HW(UInt32 state[8], const Byte *data, size_t numBlocks) +void Z7_FASTCALL Sha256_UpdateBlocks_HW(UInt32 state[8], const Byte *data, size_t numBlocks) { v128 state0, state1; if (numBlocks == 0) return; - state0 = LOAD_128(&state[0]); - state1 = LOAD_128(&state[4]); + state0 = LOAD_128_32(&state[0]); + state1 = LOAD_128_32(&state[4]); do { @@ -326,10 +383,10 @@ void MY_FAST_CALL Sha256_UpdateBlocks_HW(UInt32 state[8], const Byte *data, size LOAD_SHUFFLE (m2, 2) LOAD_SHUFFLE (m3, 3) - R16 ( 0, NNN, NNN, SM1, NNN, SM1, SM2, SM1, SM2 ); - R16 ( 1, SM1, SM2, SM1, SM2, SM1, SM2, SM1, SM2 ); - R16 ( 2, SM1, SM2, SM1, SM2, SM1, SM2, SM1, SM2 ); - R16 ( 3, SM1, SM2, NNN, SM2, NNN, NNN, NNN, NNN ); + R16 ( 0, NNN, NNN, SM1, NNN, SM1, SM2, SM1, SM2 ) + R16 ( 1, SM1, SM2, SM1, SM2, SM1, SM2, SM1, SM2 ) + R16 ( 2, SM1, SM2, SM1, SM2, SM1, SM2, SM1, SM2 ) + R16 ( 3, SM1, SM2, NNN, SM2, NNN, NNN, NNN, NNN ) state0 = vaddq_u32(state0, state0_save); state1 = vaddq_u32(state1, state1_save); @@ -338,8 +395,8 @@ void MY_FAST_CALL Sha256_UpdateBlocks_HW(UInt32 state[8], const Byte *data, size } while (--numBlocks); - STORE_128(&state[0], state0); - STORE_128(&state[4], state1); + STORE_128_32(&state[0], state0); + STORE_128_32(&state[4], state1); } #endif // USE_HW_SHA @@ -347,18 +404,19 @@ void MY_FAST_CALL Sha256_UpdateBlocks_HW(UInt32 state[8], const Byte *data, size #endif // MY_CPU_ARM_OR_ARM64 -#ifndef USE_HW_SHA - +#if !defined(USE_HW_SHA) && defined(Z7_USE_HW_SHA_STUB) // #error Stop_Compiling_UNSUPPORTED_SHA // #include - +// We can compile this file with another C compiler, +// or we can compile asm version. +// So we can generate real code instead of this stub function. // #include "Sha256.h" -void MY_FAST_CALL Sha256_UpdateBlocks(UInt32 state[8], const Byte *data, size_t numBlocks); - +// #if defined(_MSC_VER) #pragma message("Sha256 HW-SW stub was used") - -void MY_FAST_CALL Sha256_UpdateBlocks_HW(UInt32 state[8], const Byte *data, size_t numBlocks); -void MY_FAST_CALL Sha256_UpdateBlocks_HW(UInt32 state[8], const Byte *data, size_t numBlocks) +// #endif +void Z7_FASTCALL Sha256_UpdateBlocks (UInt32 state[8], const Byte *data, size_t numBlocks); +void Z7_FASTCALL Sha256_UpdateBlocks_HW(UInt32 state[8], const Byte *data, size_t numBlocks); +void Z7_FASTCALL Sha256_UpdateBlocks_HW(UInt32 state[8], const Byte *data, size_t numBlocks) { Sha256_UpdateBlocks(state, data, numBlocks); /* @@ -369,5 +427,25 @@ void MY_FAST_CALL Sha256_UpdateBlocks_HW(UInt32 state[8], const Byte *data, size return; */ } - #endif + + +#undef K +#undef RND2 +#undef MY_rev32_for_LE + +#undef NNN +#undef LOAD_128 +#undef STORE_128 +#undef LOAD_SHUFFLE +#undef SM1 +#undef SM2 + + +#undef R4 +#undef R16 +#undef PREPARE_STATE +#undef USE_HW_SHA +#undef ATTRIB_SHA +#undef USE_VER_MIN +#undef Z7_USE_HW_SHA_STUB diff --git a/deps/LZMA-SDK/C/Sort.h b/deps/LZMA-SDK/C/Sort.h index 2e2963a23..1817b652f 100644 --- a/deps/LZMA-SDK/C/Sort.h +++ b/deps/LZMA-SDK/C/Sort.h @@ -1,8 +1,8 @@ /* Sort.h -- Sort functions -2014-04-05 : Igor Pavlov : Public domain */ +2023-03-05 : Igor Pavlov : Public domain */ -#ifndef __7Z_SORT_H -#define __7Z_SORT_H +#ifndef ZIP7_INC_SORT_H +#define ZIP7_INC_SORT_H #include "7zTypes.h" diff --git a/deps/LZMA-SDK/C/SwapBytes.c b/deps/LZMA-SDK/C/SwapBytes.c new file mode 100644 index 000000000..9290592b7 --- /dev/null +++ b/deps/LZMA-SDK/C/SwapBytes.c @@ -0,0 +1,835 @@ +/* SwapBytes.c -- Byte Swap conversion filter +2024-03-01 : Igor Pavlov : Public domain */ + +#include "Precomp.h" + +#include "Compiler.h" +#include "CpuArch.h" +#include "RotateDefs.h" +#include "SwapBytes.h" + +typedef UInt16 CSwapUInt16; +typedef UInt32 CSwapUInt32; + +// #define k_SwapBytes_Mode_BASE 0 + +#ifdef MY_CPU_X86_OR_AMD64 + +#define k_SwapBytes_Mode_SSE2 1 +#define k_SwapBytes_Mode_SSSE3 2 +#define k_SwapBytes_Mode_AVX2 3 + + // #if defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 1900) + #if defined(__clang__) && (__clang_major__ >= 4) \ + || defined(Z7_GCC_VERSION) && (Z7_GCC_VERSION >= 40701) + #define k_SwapBytes_Mode_MAX k_SwapBytes_Mode_AVX2 + #define SWAP_ATTRIB_SSE2 __attribute__((__target__("sse2"))) + #define SWAP_ATTRIB_SSSE3 __attribute__((__target__("ssse3"))) + #define SWAP_ATTRIB_AVX2 __attribute__((__target__("avx2"))) + #elif defined(_MSC_VER) + #if (_MSC_VER == 1900) + #pragma warning(disable : 4752) // found Intel(R) Advanced Vector Extensions; consider using /arch:AVX + #endif + #if (_MSC_VER >= 1900) + #define k_SwapBytes_Mode_MAX k_SwapBytes_Mode_AVX2 + #elif (_MSC_VER >= 1500) // (VS2008) + #define k_SwapBytes_Mode_MAX k_SwapBytes_Mode_SSSE3 + #elif (_MSC_VER >= 1310) // (VS2003) + #define k_SwapBytes_Mode_MAX k_SwapBytes_Mode_SSE2 + #endif + #endif // _MSC_VER + +/* +// for debug +#ifdef k_SwapBytes_Mode_MAX +#undef k_SwapBytes_Mode_MAX +#endif +*/ + +#ifndef k_SwapBytes_Mode_MAX +#define k_SwapBytes_Mode_MAX 0 +#endif + +#if (k_SwapBytes_Mode_MAX != 0) && defined(MY_CPU_AMD64) + #define k_SwapBytes_Mode_MIN k_SwapBytes_Mode_SSE2 +#else + #define k_SwapBytes_Mode_MIN 0 +#endif + +#if (k_SwapBytes_Mode_MAX >= k_SwapBytes_Mode_AVX2) + #define USE_SWAP_AVX2 +#endif +#if (k_SwapBytes_Mode_MAX >= k_SwapBytes_Mode_SSSE3) + #define USE_SWAP_SSSE3 +#endif +#if (k_SwapBytes_Mode_MAX >= k_SwapBytes_Mode_SSE2) + #define USE_SWAP_128 +#endif + +#if k_SwapBytes_Mode_MAX <= k_SwapBytes_Mode_MIN || !defined(USE_SWAP_128) +#define FORCE_SWAP_MODE +#endif + + +#ifdef USE_SWAP_128 +/* + MMX + SSE + SSE2 + SSE3 + SSSE3 + SSE4.1 + SSE4.2 + SSE4A + AES + AVX, AVX2, FMA +*/ + +#include // sse2 +// typedef __m128i v128; + +#define SWAP2_128(i) { \ + const __m128i v = *(const __m128i *)(const void *)(items + (i) * 8); \ + *( __m128i *)( void *)(items + (i) * 8) = \ + _mm_or_si128( \ + _mm_slli_epi16(v, 8), \ + _mm_srli_epi16(v, 8)); } +// _mm_or_si128() has more ports to execute than _mm_add_epi16(). + +static +#ifdef SWAP_ATTRIB_SSE2 +SWAP_ATTRIB_SSE2 +#endif +void +Z7_FASTCALL +SwapBytes2_128(CSwapUInt16 *items, const CSwapUInt16 *lim) +{ + Z7_PRAGMA_OPT_DISABLE_LOOP_UNROLL_VECTORIZE + do + { + SWAP2_128(0) SWAP2_128(1) items += 2 * 8; + SWAP2_128(0) SWAP2_128(1) items += 2 * 8; + } + while (items != lim); +} + +/* +// sse2 +#define SWAP4_128_pack(i) { \ + __m128i v = *(const __m128i *)(const void *)(items + (i) * 4); \ + __m128i v0 = _mm_unpacklo_epi8(v, mask); \ + __m128i v1 = _mm_unpackhi_epi8(v, mask); \ + v0 = _mm_shufflelo_epi16(v0, 0x1b); \ + v1 = _mm_shufflelo_epi16(v1, 0x1b); \ + v0 = _mm_shufflehi_epi16(v0, 0x1b); \ + v1 = _mm_shufflehi_epi16(v1, 0x1b); \ + *(__m128i *)(void *)(items + (i) * 4) = _mm_packus_epi16(v0, v1); } + +static +#ifdef SWAP_ATTRIB_SSE2 +SWAP_ATTRIB_SSE2 +#endif +void +Z7_FASTCALL +SwapBytes4_128_pack(CSwapUInt32 *items, const CSwapUInt32 *lim) +{ + const __m128i mask = _mm_setzero_si128(); + // const __m128i mask = _mm_set_epi16(0, 0, 0, 0, 0, 0, 0, 0); + Z7_PRAGMA_OPT_DISABLE_LOOP_UNROLL_VECTORIZE + do + { + SWAP4_128_pack(0); items += 1 * 4; + // SWAP4_128_pack(0); SWAP4_128_pack(1); items += 2 * 4; + } + while (items != lim); +} + +// sse2 +#define SWAP4_128_shift(i) { \ + __m128i v = *(const __m128i *)(const void *)(items + (i) * 4); \ + __m128i v2; \ + v2 = _mm_or_si128( \ + _mm_slli_si128(_mm_and_si128(v, mask), 1), \ + _mm_and_si128(_mm_srli_si128(v, 1), mask)); \ + v = _mm_or_si128( \ + _mm_slli_epi32(v, 24), \ + _mm_srli_epi32(v, 24)); \ + *(__m128i *)(void *)(items + (i) * 4) = _mm_or_si128(v2, v); } + +static +#ifdef SWAP_ATTRIB_SSE2 +SWAP_ATTRIB_SSE2 +#endif +void +Z7_FASTCALL +SwapBytes4_128_shift(CSwapUInt32 *items, const CSwapUInt32 *lim) +{ + #define M1 0xff00 + const __m128i mask = _mm_set_epi32(M1, M1, M1, M1); + Z7_PRAGMA_OPT_DISABLE_LOOP_UNROLL_VECTORIZE + do + { + // SWAP4_128_shift(0) SWAP4_128_shift(1) items += 2 * 4; + // SWAP4_128_shift(0) SWAP4_128_shift(1) items += 2 * 4; + SWAP4_128_shift(0); items += 1 * 4; + } + while (items != lim); +} +*/ + + +#if defined(USE_SWAP_SSSE3) || defined(USE_SWAP_AVX2) + +#define SWAP_SHUF_REV_SEQ_2_VALS(v) (v)+1, (v) +#define SWAP_SHUF_REV_SEQ_4_VALS(v) (v)+3, (v)+2, (v)+1, (v) + +#define SWAP2_SHUF_MASK_16_BYTES \ + SWAP_SHUF_REV_SEQ_2_VALS (0 * 2), \ + SWAP_SHUF_REV_SEQ_2_VALS (1 * 2), \ + SWAP_SHUF_REV_SEQ_2_VALS (2 * 2), \ + SWAP_SHUF_REV_SEQ_2_VALS (3 * 2), \ + SWAP_SHUF_REV_SEQ_2_VALS (4 * 2), \ + SWAP_SHUF_REV_SEQ_2_VALS (5 * 2), \ + SWAP_SHUF_REV_SEQ_2_VALS (6 * 2), \ + SWAP_SHUF_REV_SEQ_2_VALS (7 * 2) + +#define SWAP4_SHUF_MASK_16_BYTES \ + SWAP_SHUF_REV_SEQ_4_VALS (0 * 4), \ + SWAP_SHUF_REV_SEQ_4_VALS (1 * 4), \ + SWAP_SHUF_REV_SEQ_4_VALS (2 * 4), \ + SWAP_SHUF_REV_SEQ_4_VALS (3 * 4) + +#if defined(USE_SWAP_AVX2) +/* if we use 256_BIT_INIT_MASK, each static array mask will be larger for 16 bytes */ +// #define SWAP_USE_256_BIT_INIT_MASK +#endif + +#if defined(SWAP_USE_256_BIT_INIT_MASK) && defined(USE_SWAP_AVX2) +#define SWAP_MASK_INIT_SIZE 32 +#else +#define SWAP_MASK_INIT_SIZE 16 +#endif + +MY_ALIGN(SWAP_MASK_INIT_SIZE) +static const Byte k_ShufMask_Swap2[] = +{ + SWAP2_SHUF_MASK_16_BYTES + #if SWAP_MASK_INIT_SIZE > 16 + , SWAP2_SHUF_MASK_16_BYTES + #endif +}; + +MY_ALIGN(SWAP_MASK_INIT_SIZE) +static const Byte k_ShufMask_Swap4[] = +{ + SWAP4_SHUF_MASK_16_BYTES + #if SWAP_MASK_INIT_SIZE > 16 + , SWAP4_SHUF_MASK_16_BYTES + #endif +}; + + +#ifdef USE_SWAP_SSSE3 + +#include // ssse3 + +#define SHUF_128(i) *(items + (i)) = \ + _mm_shuffle_epi8(*(items + (i)), mask); // SSSE3 + +// Z7_NO_INLINE +static +#ifdef SWAP_ATTRIB_SSSE3 +SWAP_ATTRIB_SSSE3 +#endif +Z7_ATTRIB_NO_VECTORIZE +void +Z7_FASTCALL +ShufBytes_128(void *items8, const void *lim8, const void *mask128_ptr) +{ + __m128i *items = (__m128i *)items8; + const __m128i *lim = (const __m128i *)lim8; + // const __m128i mask = _mm_set_epi8(SHUF_SWAP2_MASK_16_VALS); + // const __m128i mask = _mm_set_epi8(SHUF_SWAP4_MASK_16_VALS); + // const __m128i mask = _mm_load_si128((const __m128i *)(const void *)&(k_ShufMask_Swap4[0])); + // const __m128i mask = _mm_load_si128((const __m128i *)(const void *)&(k_ShufMask_Swap4[0])); + // const __m128i mask = *(const __m128i *)(const void *)&(k_ShufMask_Swap4[0]); + const __m128i mask = *(const __m128i *)mask128_ptr; + Z7_PRAGMA_OPT_DISABLE_LOOP_UNROLL_VECTORIZE + do + { + SHUF_128(0) SHUF_128(1) items += 2; + SHUF_128(0) SHUF_128(1) items += 2; + } + while (items != lim); +} + +#endif // USE_SWAP_SSSE3 + + + +#ifdef USE_SWAP_AVX2 + +#include // avx, avx2 +#if defined(__clang__) +#include +#include +#endif + +#define SHUF_256(i) *(items + (i)) = \ + _mm256_shuffle_epi8(*(items + (i)), mask); // AVX2 + +// Z7_NO_INLINE +static +#ifdef SWAP_ATTRIB_AVX2 +SWAP_ATTRIB_AVX2 +#endif +Z7_ATTRIB_NO_VECTORIZE +void +Z7_FASTCALL +ShufBytes_256(void *items8, const void *lim8, const void *mask128_ptr) +{ + __m256i *items = (__m256i *)items8; + const __m256i *lim = (const __m256i *)lim8; + /* + UNUSED_VAR(mask128_ptr) + __m256i mask = + for Swap4: _mm256_setr_epi8(SWAP4_SHUF_MASK_16_BYTES, SWAP4_SHUF_MASK_16_BYTES); + for Swap2: _mm256_setr_epi8(SWAP2_SHUF_MASK_16_BYTES, SWAP2_SHUF_MASK_16_BYTES); + */ + const __m256i mask = + #if SWAP_MASK_INIT_SIZE > 16 + *(const __m256i *)(const void *)mask128_ptr; + #else + /* msvc: broadcastsi128() version reserves the stack for no reason + msvc 19.29-: _mm256_insertf128_si256() / _mm256_set_m128i)) versions use non-avx movdqu xmm0,XMMWORD PTR [r8] + msvc 19.30+ (VS2022): replaces _mm256_set_m128i(m,m) to vbroadcastf128(m) as we want + */ + // _mm256_broadcastsi128_si256(*mask128_ptr); +#if defined(Z7_GCC_VERSION) && (Z7_GCC_VERSION < 80000) + #define MY_mm256_set_m128i(hi, lo) _mm256_insertf128_si256(_mm256_castsi128_si256(lo), (hi), 1) +#else + #define MY_mm256_set_m128i _mm256_set_m128i +#endif + MY_mm256_set_m128i( + *(const __m128i *)mask128_ptr, + *(const __m128i *)mask128_ptr); + #endif + + Z7_PRAGMA_OPT_DISABLE_LOOP_UNROLL_VECTORIZE + do + { + SHUF_256(0) SHUF_256(1) items += 2; + SHUF_256(0) SHUF_256(1) items += 2; + } + while (items != lim); +} + +#endif // USE_SWAP_AVX2 +#endif // USE_SWAP_SSSE3 || USE_SWAP_AVX2 +#endif // USE_SWAP_128 + + + +// compile message "NEON intrinsics not available with the soft-float ABI" +#elif defined(MY_CPU_ARM_OR_ARM64) \ + && defined(MY_CPU_LE) \ + && !defined(Z7_DISABLE_ARM_NEON) + + #if defined(__clang__) && (__clang_major__ >= 8) \ + || defined(__GNUC__) && (__GNUC__ >= 6) + #if defined(__ARM_FP) + #if (defined(__ARM_ARCH) && (__ARM_ARCH >= 4)) \ + || defined(MY_CPU_ARM64) + #if defined(MY_CPU_ARM64) \ + || !defined(Z7_CLANG_VERSION) \ + || defined(__ARM_NEON) + #define USE_SWAP_128 + #ifdef MY_CPU_ARM64 + // #define SWAP_ATTRIB_NEON __attribute__((__target__(""))) + #else +#if defined(Z7_CLANG_VERSION) + // #define SWAP_ATTRIB_NEON __attribute__((__target__("neon"))) +#else + // #pragma message("SWAP_ATTRIB_NEON __attribute__((__target__(fpu=neon))") + #define SWAP_ATTRIB_NEON __attribute__((__target__("fpu=neon"))) +#endif + #endif // MY_CPU_ARM64 + #endif // __ARM_NEON + #endif // __ARM_ARCH + #endif // __ARM_FP + + #elif defined(_MSC_VER) + #if (_MSC_VER >= 1910) + #define USE_SWAP_128 + #endif + #endif + + #ifdef USE_SWAP_128 + #if defined(Z7_MSC_VER_ORIGINAL) && defined(MY_CPU_ARM64) + #include + #else + +/* +#if !defined(__ARM_NEON) +#if defined(Z7_GCC_VERSION) && (__GNUC__ < 5) \ + || defined(Z7_GCC_VERSION) && (__GNUC__ == 5) && (Z7_GCC_VERSION < 90201) \ + || defined(Z7_GCC_VERSION) && (__GNUC__ == 5) && (Z7_GCC_VERSION < 100100) +Z7_DIAGNOSTIC_IGNORE_BEGIN_RESERVED_MACRO_IDENTIFIER +#pragma message("#define __ARM_NEON 1") +// #define __ARM_NEON 1 +Z7_DIAGNOSTIC_IGNORE_END_RESERVED_MACRO_IDENTIFIER +#endif +#endif +*/ + #include + #endif + #endif + +#ifndef USE_SWAP_128 + #define FORCE_SWAP_MODE +#else + +#ifdef MY_CPU_ARM64 + // for debug : comment it + #define FORCE_SWAP_MODE +#else + #define k_SwapBytes_Mode_NEON 1 +#endif +// typedef uint8x16_t v128; +#define SWAP2_128(i) *(uint8x16_t *) (void *)(items + (i) * 8) = \ + vrev16q_u8(*(const uint8x16_t *)(const void *)(items + (i) * 8)); +#define SWAP4_128(i) *(uint8x16_t *) (void *)(items + (i) * 4) = \ + vrev32q_u8(*(const uint8x16_t *)(const void *)(items + (i) * 4)); + +// Z7_NO_INLINE +static +#ifdef SWAP_ATTRIB_NEON +SWAP_ATTRIB_NEON +#endif +Z7_ATTRIB_NO_VECTORIZE +void +Z7_FASTCALL +SwapBytes2_128(CSwapUInt16 *items, const CSwapUInt16 *lim) +{ + Z7_PRAGMA_OPT_DISABLE_LOOP_UNROLL_VECTORIZE + do + { + SWAP2_128(0) SWAP2_128(1) items += 2 * 8; + SWAP2_128(0) SWAP2_128(1) items += 2 * 8; + } + while (items != lim); +} + +// Z7_NO_INLINE +static +#ifdef SWAP_ATTRIB_NEON +SWAP_ATTRIB_NEON +#endif +Z7_ATTRIB_NO_VECTORIZE +void +Z7_FASTCALL +SwapBytes4_128(CSwapUInt32 *items, const CSwapUInt32 *lim) +{ + Z7_PRAGMA_OPT_DISABLE_LOOP_UNROLL_VECTORIZE + do + { + SWAP4_128(0) SWAP4_128(1) items += 2 * 4; + SWAP4_128(0) SWAP4_128(1) items += 2 * 4; + } + while (items != lim); +} + +#endif // USE_SWAP_128 + +#else // MY_CPU_ARM_OR_ARM64 +#define FORCE_SWAP_MODE +#endif // MY_CPU_ARM_OR_ARM64 + + + + + + +#if defined(Z7_MSC_VER_ORIGINAL) && defined(MY_CPU_X86) + /* _byteswap_ushort() in MSVC x86 32-bit works via slow { mov dh, al; mov dl, ah } + So we use own versions of byteswap function */ + #if (_MSC_VER < 1400 ) // old MSVC-X86 without _rotr16() support + #define SWAP2_16(i) { UInt32 v = items[i]; v += (v << 16); v >>= 8; items[i] = (CSwapUInt16)v; } + #else // is new MSVC-X86 with fast _rotr16() + #include + #define SWAP2_16(i) { items[i] = _rotr16(items[i], 8); } + #endif +#else // is not MSVC-X86 + #define SWAP2_16(i) { CSwapUInt16 v = items[i]; items[i] = Z7_BSWAP16(v); } +#endif // MSVC-X86 + +#if defined(Z7_CPU_FAST_BSWAP_SUPPORTED) + #define SWAP4_32(i) { CSwapUInt32 v = items[i]; items[i] = Z7_BSWAP32(v); } +#else + #define SWAP4_32(i) \ + { UInt32 v = items[i]; \ + v = ((v & 0xff00ff) << 8) + ((v >> 8) & 0xff00ff); \ + v = rotlFixed(v, 16); \ + items[i] = v; } +#endif + + + + +#if defined(FORCE_SWAP_MODE) && defined(USE_SWAP_128) + #define DEFAULT_Swap2 SwapBytes2_128 + #if !defined(MY_CPU_X86_OR_AMD64) + #define DEFAULT_Swap4 SwapBytes4_128 + #endif +#endif + +#if !defined(DEFAULT_Swap2) || !defined(DEFAULT_Swap4) + +#define SWAP_BASE_FUNCS_PREFIXES \ +Z7_FORCE_INLINE \ +static \ +Z7_ATTRIB_NO_VECTOR \ +void Z7_FASTCALL + + +#if defined(MY_CPU_ARM_OR_ARM64) +#if defined(__clang__) +#pragma GCC diagnostic ignored "-Wlanguage-extension-token" +#endif +#endif + + +#ifdef MY_CPU_64BIT + +#if defined(MY_CPU_ARM64) \ + && defined(__ARM_ARCH) && (__ARM_ARCH >= 8) \ + && ( (defined(__GNUC__) && (__GNUC__ >= 4)) \ + || (defined(__clang__) && (__clang_major__ >= 4))) + + #define SWAP2_64_VAR(v) asm ("rev16 %x0,%x0" : "+r" (v)); + #define SWAP4_64_VAR(v) asm ("rev32 %x0,%x0" : "+r" (v)); + +#else // is not ARM64-GNU + +#if !defined(MY_CPU_X86_OR_AMD64) || (k_SwapBytes_Mode_MIN == 0) || !defined(USE_SWAP_128) + #define SWAP2_64_VAR(v) \ + v = ( 0x00ff00ff00ff00ff & (v >> 8)) \ + + ((0x00ff00ff00ff00ff & v) << 8); + /* plus gives faster code in MSVC */ +#endif + +#ifdef Z7_CPU_FAST_BSWAP_SUPPORTED + #define SWAP4_64_VAR(v) \ + v = Z7_BSWAP64(v); \ + v = Z7_ROTL64(v, 32); +#else + #define SWAP4_64_VAR(v) \ + v = ( 0x000000ff000000ff & (v >> 24)) \ + + ((0x000000ff000000ff & v) << 24 ) \ + + ( 0x0000ff000000ff00 & (v >> 8)) \ + + ((0x0000ff000000ff00 & v) << 8 ) \ + ; +#endif + +#endif // ARM64-GNU + + +#ifdef SWAP2_64_VAR + +#define SWAP2_64(i) { \ + UInt64 v = *(const UInt64 *)(const void *)(items + (i) * 4); \ + SWAP2_64_VAR(v) \ + *(UInt64 *)(void *)(items + (i) * 4) = v; } + +SWAP_BASE_FUNCS_PREFIXES +SwapBytes2_64(CSwapUInt16 *items, const CSwapUInt16 *lim) +{ + Z7_PRAGMA_OPT_DISABLE_LOOP_UNROLL_VECTORIZE + do + { + SWAP2_64(0) SWAP2_64(1) items += 2 * 4; + SWAP2_64(0) SWAP2_64(1) items += 2 * 4; + } + while (items != lim); +} + + #define DEFAULT_Swap2 SwapBytes2_64 + #if !defined(FORCE_SWAP_MODE) + #define SWAP2_DEFAULT_MODE 0 + #endif +#else // !defined(SWAP2_64_VAR) + #define DEFAULT_Swap2 SwapBytes2_128 + #if !defined(FORCE_SWAP_MODE) + #define SWAP2_DEFAULT_MODE 1 + #endif +#endif // SWAP2_64_VAR + + +#define SWAP4_64(i) { \ + UInt64 v = *(const UInt64 *)(const void *)(items + (i) * 2); \ + SWAP4_64_VAR(v) \ + *(UInt64 *)(void *)(items + (i) * 2) = v; } + +SWAP_BASE_FUNCS_PREFIXES +SwapBytes4_64(CSwapUInt32 *items, const CSwapUInt32 *lim) +{ + Z7_PRAGMA_OPT_DISABLE_LOOP_UNROLL_VECTORIZE + do + { + SWAP4_64(0) SWAP4_64(1) items += 2 * 2; + SWAP4_64(0) SWAP4_64(1) items += 2 * 2; + } + while (items != lim); +} + +#define DEFAULT_Swap4 SwapBytes4_64 + +#else // is not 64BIT + + +#if defined(MY_CPU_ARM_OR_ARM64) \ + && defined(__ARM_ARCH) && (__ARM_ARCH >= 6) \ + && ( (defined(__GNUC__) && (__GNUC__ >= 4)) \ + || (defined(__clang__) && (__clang_major__ >= 4))) + +#ifdef MY_CPU_64BIT + #define SWAP2_32_VAR(v) asm ("rev16 %w0,%w0" : "+r" (v)); +#else + #define SWAP2_32_VAR(v) asm ("rev16 %0,%0" : "+r" (v)); // for clang/gcc + // asm ("rev16 %r0,%r0" : "+r" (a)); // for gcc +#endif + +#elif defined(_MSC_VER) && (_MSC_VER < 1300) && defined(MY_CPU_X86) \ + || !defined(Z7_CPU_FAST_BSWAP_SUPPORTED) \ + || !defined(Z7_CPU_FAST_ROTATE_SUPPORTED) + // old msvc doesn't support _byteswap_ulong() + #define SWAP2_32_VAR(v) \ + v = ((v & 0xff00ff) << 8) + ((v >> 8) & 0xff00ff); + +#else // is not ARM and is not old-MSVC-X86 and fast BSWAP/ROTATE are supported + #define SWAP2_32_VAR(v) \ + v = Z7_BSWAP32(v); \ + v = rotlFixed(v, 16); + +#endif // GNU-ARM* + +#define SWAP2_32(i) { \ + UInt32 v = *(const UInt32 *)(const void *)(items + (i) * 2); \ + SWAP2_32_VAR(v); \ + *(UInt32 *)(void *)(items + (i) * 2) = v; } + + +SWAP_BASE_FUNCS_PREFIXES +SwapBytes2_32(CSwapUInt16 *items, const CSwapUInt16 *lim) +{ + Z7_PRAGMA_OPT_DISABLE_LOOP_UNROLL_VECTORIZE + do + { + SWAP2_32(0) SWAP2_32(1) items += 2 * 2; + SWAP2_32(0) SWAP2_32(1) items += 2 * 2; + } + while (items != lim); +} + + +SWAP_BASE_FUNCS_PREFIXES +SwapBytes4_32(CSwapUInt32 *items, const CSwapUInt32 *lim) +{ + Z7_PRAGMA_OPT_DISABLE_LOOP_UNROLL_VECTORIZE + do + { + SWAP4_32(0) SWAP4_32(1) items += 2; + SWAP4_32(0) SWAP4_32(1) items += 2; + } + while (items != lim); +} + +#define DEFAULT_Swap2 SwapBytes2_32 +#define DEFAULT_Swap4 SwapBytes4_32 +#if !defined(FORCE_SWAP_MODE) + #define SWAP2_DEFAULT_MODE 0 +#endif + +#endif // MY_CPU_64BIT +#endif // if !defined(DEFAULT_Swap2) || !defined(DEFAULT_Swap4) + + + +#if !defined(FORCE_SWAP_MODE) +static unsigned g_SwapBytes_Mode; +#endif + +/* size of largest unrolled loop iteration: 128 bytes = 4 * 32 bytes (AVX). */ +#define SWAP_ITERATION_BLOCK_SIZE_MAX (1 << 7) + +// 32 bytes for (AVX) or 2 * 16-bytes for NEON. +#define SWAP_VECTOR_ALIGN_SIZE (1 << 5) + +Z7_NO_INLINE +void z7_SwapBytes2(CSwapUInt16 *items, size_t numItems) +{ + Z7_PRAGMA_OPT_DISABLE_LOOP_UNROLL_VECTORIZE + for (; numItems != 0 && ((unsigned)(ptrdiff_t)items & (SWAP_VECTOR_ALIGN_SIZE - 1)) != 0; numItems--) + { + SWAP2_16(0) + items++; + } + { + const size_t k_Align_Mask = SWAP_ITERATION_BLOCK_SIZE_MAX / sizeof(CSwapUInt16) - 1; + size_t numItems2 = numItems; + CSwapUInt16 *lim; + numItems &= k_Align_Mask; + numItems2 &= ~(size_t)k_Align_Mask; + lim = items + numItems2; + if (numItems2 != 0) + { + #if !defined(FORCE_SWAP_MODE) + #ifdef MY_CPU_X86_OR_AMD64 + #ifdef USE_SWAP_AVX2 + if (g_SwapBytes_Mode > k_SwapBytes_Mode_SSSE3) + ShufBytes_256((__m256i *)(void *)items, + (const __m256i *)(const void *)lim, + (const __m128i *)(const void *)&(k_ShufMask_Swap2[0])); + else + #endif + #ifdef USE_SWAP_SSSE3 + if (g_SwapBytes_Mode >= k_SwapBytes_Mode_SSSE3) + ShufBytes_128((__m128i *)(void *)items, + (const __m128i *)(const void *)lim, + (const __m128i *)(const void *)&(k_ShufMask_Swap2[0])); + else + #endif + #endif // MY_CPU_X86_OR_AMD64 + #if SWAP2_DEFAULT_MODE == 0 + if (g_SwapBytes_Mode != 0) + SwapBytes2_128(items, lim); + else + #endif + #endif // FORCE_SWAP_MODE + DEFAULT_Swap2(items, lim); + } + items = lim; + } + Z7_PRAGMA_OPT_DISABLE_LOOP_UNROLL_VECTORIZE + for (; numItems != 0; numItems--) + { + SWAP2_16(0) + items++; + } +} + + +Z7_NO_INLINE +void z7_SwapBytes4(CSwapUInt32 *items, size_t numItems) +{ + Z7_PRAGMA_OPT_DISABLE_LOOP_UNROLL_VECTORIZE + for (; numItems != 0 && ((unsigned)(ptrdiff_t)items & (SWAP_VECTOR_ALIGN_SIZE - 1)) != 0; numItems--) + { + SWAP4_32(0) + items++; + } + { + const size_t k_Align_Mask = SWAP_ITERATION_BLOCK_SIZE_MAX / sizeof(CSwapUInt32) - 1; + size_t numItems2 = numItems; + CSwapUInt32 *lim; + numItems &= k_Align_Mask; + numItems2 &= ~(size_t)k_Align_Mask; + lim = items + numItems2; + if (numItems2 != 0) + { + #if !defined(FORCE_SWAP_MODE) + #ifdef MY_CPU_X86_OR_AMD64 + #ifdef USE_SWAP_AVX2 + if (g_SwapBytes_Mode > k_SwapBytes_Mode_SSSE3) + ShufBytes_256((__m256i *)(void *)items, + (const __m256i *)(const void *)lim, + (const __m128i *)(const void *)&(k_ShufMask_Swap4[0])); + else + #endif + #ifdef USE_SWAP_SSSE3 + if (g_SwapBytes_Mode >= k_SwapBytes_Mode_SSSE3) + ShufBytes_128((__m128i *)(void *)items, + (const __m128i *)(const void *)lim, + (const __m128i *)(const void *)&(k_ShufMask_Swap4[0])); + else + #endif + #else // MY_CPU_X86_OR_AMD64 + + if (g_SwapBytes_Mode != 0) + SwapBytes4_128(items, lim); + else + #endif // MY_CPU_X86_OR_AMD64 + #endif // FORCE_SWAP_MODE + DEFAULT_Swap4(items, lim); + } + items = lim; + } + Z7_PRAGMA_OPT_DISABLE_LOOP_UNROLL_VECTORIZE + for (; numItems != 0; numItems--) + { + SWAP4_32(0) + items++; + } +} + + +// #define SHOW_HW_STATUS + +#ifdef SHOW_HW_STATUS +#include +#define PRF(x) x +#else +#define PRF(x) +#endif + +void z7_SwapBytesPrepare(void) +{ +#ifndef FORCE_SWAP_MODE + unsigned mode = 0; // k_SwapBytes_Mode_BASE; + +#ifdef MY_CPU_ARM_OR_ARM64 + { + if (CPU_IsSupported_NEON()) + { + // #pragma message ("=== SwapBytes NEON") + PRF(printf("\n=== SwapBytes NEON\n");) + mode = k_SwapBytes_Mode_NEON; + } + } +#else // MY_CPU_ARM_OR_ARM64 + { + #ifdef USE_SWAP_AVX2 + if (CPU_IsSupported_AVX2()) + { + // #pragma message ("=== SwapBytes AVX2") + PRF(printf("\n=== SwapBytes AVX2\n");) + mode = k_SwapBytes_Mode_AVX2; + } + else + #endif + #ifdef USE_SWAP_SSSE3 + if (CPU_IsSupported_SSSE3()) + { + // #pragma message ("=== SwapBytes SSSE3") + PRF(printf("\n=== SwapBytes SSSE3\n");) + mode = k_SwapBytes_Mode_SSSE3; + } + else + #endif + #if !defined(MY_CPU_AMD64) + if (CPU_IsSupported_SSE2()) + #endif + { + // #pragma message ("=== SwapBytes SSE2") + PRF(printf("\n=== SwapBytes SSE2\n");) + mode = k_SwapBytes_Mode_SSE2; + } + } +#endif // MY_CPU_ARM_OR_ARM64 + g_SwapBytes_Mode = mode; + // g_SwapBytes_Mode = 0; // for debug +#endif // FORCE_SWAP_MODE + PRF(printf("\n=== SwapBytesPrepare\n");) +} + +#undef PRF diff --git a/deps/LZMA-SDK/C/SwapBytes.h b/deps/LZMA-SDK/C/SwapBytes.h new file mode 100644 index 000000000..d44246738 --- /dev/null +++ b/deps/LZMA-SDK/C/SwapBytes.h @@ -0,0 +1,17 @@ +/* SwapBytes.h -- Byte Swap conversion filter +2023-04-02 : Igor Pavlov : Public domain */ + +#ifndef ZIP7_INC_SWAP_BYTES_H +#define ZIP7_INC_SWAP_BYTES_H + +#include "7zTypes.h" + +EXTERN_C_BEGIN + +void z7_SwapBytes2(UInt16 *data, size_t numItems); +void z7_SwapBytes4(UInt32 *data, size_t numItems); +void z7_SwapBytesPrepare(void); + +EXTERN_C_END + +#endif diff --git a/deps/LZMA-SDK/C/Threads.c b/deps/LZMA-SDK/C/Threads.c index 58eb90ffa..464efeca4 100644 --- a/deps/LZMA-SDK/C/Threads.c +++ b/deps/LZMA-SDK/C/Threads.c @@ -1,5 +1,5 @@ /* Threads.c -- multithreading library -2021-12-21 : Igor Pavlov : Public domain */ +2024-03-28 : Igor Pavlov : Public domain */ #include "Precomp.h" @@ -11,9 +11,9 @@ #include "Threads.h" -static WRes GetError() +static WRes GetError(void) { - DWORD res = GetLastError(); + const DWORD res = GetLastError(); return res ? (WRes)res : 1; } @@ -173,6 +173,9 @@ WRes CriticalSection_Init(CCriticalSection *p) Windows XP, 2003 : can raise a STATUS_NO_MEMORY exception Windows Vista+ : no exceptions */ #ifdef _MSC_VER + #ifdef __clang__ + #pragma GCC diagnostic ignored "-Wlanguage-extension-token" + #endif __try #endif { @@ -192,19 +195,26 @@ WRes CriticalSection_Init(CCriticalSection *p) // ---------- POSIX ---------- -#ifndef __APPLE__ -#ifndef _7ZIP_AFFINITY_DISABLE +#if defined(__linux__) && !defined(__APPLE__) && !defined(_AIX) && !defined(__ANDROID__) +#ifndef Z7_AFFINITY_DISABLE // _GNU_SOURCE can be required for pthread_setaffinity_np() / CPU_ZERO / CPU_SET -#define _GNU_SOURCE -#endif -#endif +// clang < 3.6 : unknown warning group '-Wreserved-id-macro' +// clang 3.6 - 12.01 : gives warning "macro name is a reserved identifier" +// clang >= 13 : do not give warning +#if !defined(_GNU_SOURCE) +Z7_DIAGNOSTIC_IGNORE_BEGIN_RESERVED_MACRO_IDENTIFIER +// #define _GNU_SOURCE +Z7_DIAGNOSTIC_IGNORE_END_RESERVED_MACRO_IDENTIFIER +#endif // !defined(_GNU_SOURCE) +#endif // Z7_AFFINITY_DISABLE +#endif // __linux__ #include "Threads.h" #include #include #include -#ifdef _7ZIP_AFFINITY_SUPPORTED +#ifdef Z7_AFFINITY_SUPPORTED // #include #endif @@ -212,15 +222,12 @@ WRes CriticalSection_Init(CCriticalSection *p) // #include // #define PRF(p) p #define PRF(p) - -#define Print(s) PRF(printf("\n%s\n", s)) - -// #include +#define Print(s) PRF(printf("\n%s\n", s);) WRes Thread_Create_With_CpuSet(CThread *p, THREAD_FUNC_TYPE func, LPVOID param, const CCpuSet *cpuSet) { // new thread in Posix probably inherits affinity from parrent thread - Print("Thread_Create_With_CpuSet"); + Print("Thread_Create_With_CpuSet") pthread_attr_t attr; int ret; @@ -228,7 +235,7 @@ WRes Thread_Create_With_CpuSet(CThread *p, THREAD_FUNC_TYPE func, LPVOID param, p->_created = 0; - RINOK(pthread_attr_init(&attr)); + RINOK(pthread_attr_init(&attr)) ret = pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE); @@ -236,8 +243,9 @@ WRes Thread_Create_With_CpuSet(CThread *p, THREAD_FUNC_TYPE func, LPVOID param, { if (cpuSet) { - #ifdef _7ZIP_AFFINITY_SUPPORTED - + // pthread_attr_setaffinity_np() is not supported for MUSL compile. + // so we check for __GLIBC__ here +#if defined(Z7_AFFINITY_SUPPORTED) && defined( __GLIBC__) /* printf("\n affinity :"); unsigned i; @@ -259,7 +267,7 @@ WRes Thread_Create_With_CpuSet(CThread *p, THREAD_FUNC_TYPE func, LPVOID param, // ret2 = pthread_attr_setaffinity_np(&attr, sizeof(*cpuSet), cpuSet); // if (ret2) ret = ret2; - #endif +#endif } ret = pthread_create(&p->_tid, &attr, func, param); @@ -292,7 +300,7 @@ WRes Thread_Create(CThread *p, THREAD_FUNC_TYPE func, LPVOID param) WRes Thread_Create_With_Affinity(CThread *p, THREAD_FUNC_TYPE func, LPVOID param, CAffinityMask affinity) { - Print("Thread_Create_WithAffinity"); + Print("Thread_Create_WithAffinity") CCpuSet cs; unsigned i; CpuSet_Zero(&cs); @@ -312,7 +320,7 @@ WRes Thread_Create_With_Affinity(CThread *p, THREAD_FUNC_TYPE func, LPVOID param WRes Thread_Close(CThread *p) { - // Print("Thread_Close"); + // Print("Thread_Close") int ret; if (!p->_created) return 0; @@ -326,7 +334,7 @@ WRes Thread_Close(CThread *p) WRes Thread_Wait_Close(CThread *p) { - // Print("Thread_Wait_Close"); + // Print("Thread_Wait_Close") void *thread_return; int ret; if (!p->_created) @@ -343,8 +351,8 @@ WRes Thread_Wait_Close(CThread *p) static WRes Event_Create(CEvent *p, int manualReset, int signaled) { - RINOK(pthread_mutex_init(&p->_mutex, NULL)); - RINOK(pthread_cond_init(&p->_cond, NULL)); + RINOK(pthread_mutex_init(&p->_mutex, NULL)) + RINOK(pthread_cond_init(&p->_cond, NULL)) p->_manual_reset = manualReset; p->_state = (signaled ? True : False); p->_created = 1; @@ -361,25 +369,32 @@ WRes AutoResetEvent_CreateNotSignaled(CAutoResetEvent *p) { return AutoResetEvent_Create(p, 0); } +#if defined(Z7_LLVM_CLANG_VERSION) && (__clang_major__ == 13) +// freebsd: +#pragma GCC diagnostic ignored "-Wthread-safety-analysis" +#endif + WRes Event_Set(CEvent *p) { - RINOK(pthread_mutex_lock(&p->_mutex)); + RINOK(pthread_mutex_lock(&p->_mutex)) p->_state = True; - int res1 = pthread_cond_broadcast(&p->_cond); - int res2 = pthread_mutex_unlock(&p->_mutex); - return (res2 ? res2 : res1); + { + const int res1 = pthread_cond_broadcast(&p->_cond); + const int res2 = pthread_mutex_unlock(&p->_mutex); + return (res2 ? res2 : res1); + } } WRes Event_Reset(CEvent *p) { - RINOK(pthread_mutex_lock(&p->_mutex)); + RINOK(pthread_mutex_lock(&p->_mutex)) p->_state = False; return pthread_mutex_unlock(&p->_mutex); } WRes Event_Wait(CEvent *p) { - RINOK(pthread_mutex_lock(&p->_mutex)); + RINOK(pthread_mutex_lock(&p->_mutex)) while (p->_state == False) { // ETIMEDOUT @@ -400,8 +415,8 @@ WRes Event_Close(CEvent *p) return 0; p->_created = 0; { - int res1 = pthread_mutex_destroy(&p->_mutex); - int res2 = pthread_cond_destroy(&p->_cond); + const int res1 = pthread_mutex_destroy(&p->_mutex); + const int res2 = pthread_cond_destroy(&p->_cond); return (res1 ? res1 : res2); } } @@ -411,8 +426,8 @@ WRes Semaphore_Create(CSemaphore *p, UInt32 initCount, UInt32 maxCount) { if (initCount > maxCount || maxCount < 1) return EINVAL; - RINOK(pthread_mutex_init(&p->_mutex, NULL)); - RINOK(pthread_cond_init(&p->_cond, NULL)); + RINOK(pthread_mutex_init(&p->_mutex, NULL)) + RINOK(pthread_cond_init(&p->_cond, NULL)) p->_count = initCount; p->_maxCount = maxCount; p->_created = 1; @@ -448,7 +463,7 @@ WRes Semaphore_ReleaseN(CSemaphore *p, UInt32 releaseCount) if (releaseCount < 1) return EINVAL; - RINOK(pthread_mutex_lock(&p->_mutex)); + RINOK(pthread_mutex_lock(&p->_mutex)) newCount = p->_count + releaseCount; if (newCount > p->_maxCount) @@ -458,13 +473,13 @@ WRes Semaphore_ReleaseN(CSemaphore *p, UInt32 releaseCount) p->_count = newCount; ret = pthread_cond_broadcast(&p->_cond); } - RINOK(pthread_mutex_unlock(&p->_mutex)); + RINOK(pthread_mutex_unlock(&p->_mutex)) return ret; } WRes Semaphore_Wait(CSemaphore *p) { - RINOK(pthread_mutex_lock(&p->_mutex)); + RINOK(pthread_mutex_lock(&p->_mutex)) while (p->_count < 1) { pthread_cond_wait(&p->_cond, &p->_mutex); @@ -479,8 +494,8 @@ WRes Semaphore_Close(CSemaphore *p) return 0; p->_created = 0; { - int res1 = pthread_mutex_destroy(&p->_mutex); - int res2 = pthread_cond_destroy(&p->_cond); + const int res1 = pthread_mutex_destroy(&p->_mutex); + const int res2 = pthread_cond_destroy(&p->_cond); return (res1 ? res1 : res2); } } @@ -489,7 +504,7 @@ WRes Semaphore_Close(CSemaphore *p) WRes CriticalSection_Init(CCriticalSection *p) { - // Print("CriticalSection_Init"); + // Print("CriticalSection_Init") if (!p) return EINTR; return pthread_mutex_init(&p->_mutex, NULL); @@ -497,7 +512,7 @@ WRes CriticalSection_Init(CCriticalSection *p) void CriticalSection_Enter(CCriticalSection *p) { - // Print("CriticalSection_Enter"); + // Print("CriticalSection_Enter") if (p) { // int ret = @@ -507,7 +522,7 @@ void CriticalSection_Enter(CCriticalSection *p) void CriticalSection_Leave(CCriticalSection *p) { - // Print("CriticalSection_Leave"); + // Print("CriticalSection_Leave") if (p) { // int ret = @@ -517,7 +532,7 @@ void CriticalSection_Leave(CCriticalSection *p) void CriticalSection_Delete(CCriticalSection *p) { - // Print("CriticalSection_Delete"); + // Print("CriticalSection_Delete") if (p) { // int ret = @@ -527,14 +542,40 @@ void CriticalSection_Delete(CCriticalSection *p) LONG InterlockedIncrement(LONG volatile *addend) { - // Print("InterlockedIncrement"); + // Print("InterlockedIncrement") #ifdef USE_HACK_UNSAFE_ATOMIC LONG val = *addend + 1; *addend = val; return val; #else + + #if defined(__clang__) && (__clang_major__ >= 8) + #pragma GCC diagnostic ignored "-Watomic-implicit-seq-cst" + #endif return __sync_add_and_fetch(addend, 1); #endif } +LONG InterlockedDecrement(LONG volatile *addend) +{ + // Print("InterlockedDecrement") + #ifdef USE_HACK_UNSAFE_ATOMIC + LONG val = *addend - 1; + *addend = val; + return val; + #else + return __sync_sub_and_fetch(addend, 1); + #endif +} + #endif // _WIN32 + +WRes AutoResetEvent_OptCreate_And_Reset(CAutoResetEvent *p) +{ + if (Event_IsCreated(p)) + return Event_Reset(p); + return AutoResetEvent_CreateNotSignaled(p); +} + +#undef PRF +#undef Print diff --git a/deps/LZMA-SDK/C/Threads.h b/deps/LZMA-SDK/C/Threads.h index ceb844a23..c1484a277 100644 --- a/deps/LZMA-SDK/C/Threads.h +++ b/deps/LZMA-SDK/C/Threads.h @@ -1,19 +1,29 @@ /* Threads.h -- multithreading library -2021-12-21 : Igor Pavlov : Public domain */ +2024-03-28 : Igor Pavlov : Public domain */ -#ifndef __7Z_THREADS_H -#define __7Z_THREADS_H +#ifndef ZIP7_INC_THREADS_H +#define ZIP7_INC_THREADS_H #ifdef _WIN32 -#include +#include "7zWindows.h" + #else +#include "Compiler.h" + +// #define Z7_AFFINITY_DISABLE #if defined(__linux__) #if !defined(__APPLE__) && !defined(_AIX) && !defined(__ANDROID__) -#ifndef _7ZIP_AFFINITY_DISABLE -#define _7ZIP_AFFINITY_SUPPORTED -// #pragma message(" ==== _7ZIP_AFFINITY_SUPPORTED") -// #define _GNU_SOURCE +#ifndef Z7_AFFINITY_DISABLE +#define Z7_AFFINITY_SUPPORTED +// #pragma message(" ==== Z7_AFFINITY_SUPPORTED") +#if !defined(_GNU_SOURCE) +// #pragma message(" ==== _GNU_SOURCE set") +// we need _GNU_SOURCE for cpu_set_t, if we compile for MUSL +Z7_DIAGNOSTIC_IGNORE_BEGIN_RESERVED_MACRO_IDENTIFIER +#define _GNU_SOURCE +Z7_DIAGNOSTIC_IGNORE_END_RESERVED_MACRO_IDENTIFIER +#endif #endif #endif #endif @@ -33,7 +43,7 @@ WRes Handle_WaitObject(HANDLE h); typedef HANDLE CThread; -#define Thread_Construct(p) { *(p) = NULL; } +#define Thread_CONSTRUCT(p) { *(p) = NULL; } #define Thread_WasCreated(p) (*(p) != NULL) #define Thread_Close(p) HandlePtr_Close(p) // #define Thread_Wait(p) Handle_WaitObject(*(p)) @@ -52,42 +62,46 @@ typedef #endif THREAD_FUNC_RET_TYPE; +#define THREAD_FUNC_RET_ZERO 0 + typedef DWORD_PTR CAffinityMask; typedef DWORD_PTR CCpuSet; -#define CpuSet_Zero(p) { *(p) = 0; } -#define CpuSet_Set(p, cpu) { *(p) |= ((DWORD_PTR)1 << (cpu)); } +#define CpuSet_Zero(p) *(p) = (0) +#define CpuSet_Set(p, cpu) *(p) |= ((DWORD_PTR)1 << (cpu)) #else // _WIN32 -typedef struct _CThread +typedef struct { pthread_t _tid; int _created; } CThread; -#define Thread_Construct(p) { (p)->_tid = 0; (p)->_created = 0; } -#define Thread_WasCreated(p) ((p)->_created != 0) +#define Thread_CONSTRUCT(p) { (p)->_tid = 0; (p)->_created = 0; } +#define Thread_WasCreated(p) ((p)->_created != 0) WRes Thread_Close(CThread *p); // #define Thread_Wait Thread_Wait_Close typedef void * THREAD_FUNC_RET_TYPE; +#define THREAD_FUNC_RET_ZERO NULL + typedef UInt64 CAffinityMask; -#ifdef _7ZIP_AFFINITY_SUPPORTED +#ifdef Z7_AFFINITY_SUPPORTED typedef cpu_set_t CCpuSet; -#define CpuSet_Zero(p) CPU_ZERO(p) -#define CpuSet_Set(p, cpu) CPU_SET(cpu, p) -#define CpuSet_IsSet(p, cpu) CPU_ISSET(cpu, p) +#define CpuSet_Zero(p) CPU_ZERO(p) +#define CpuSet_Set(p, cpu) CPU_SET(cpu, p) +#define CpuSet_IsSet(p, cpu) CPU_ISSET(cpu, p) #else typedef UInt64 CCpuSet; -#define CpuSet_Zero(p) { *(p) = 0; } -#define CpuSet_Set(p, cpu) { *(p) |= ((UInt64)1 << (cpu)); } -#define CpuSet_IsSet(p, cpu) ((*(p) & ((UInt64)1 << (cpu))) != 0) +#define CpuSet_Zero(p) *(p) = (0) +#define CpuSet_Set(p, cpu) *(p) |= ((UInt64)1 << (cpu)) +#define CpuSet_IsSet(p, cpu) ((*(p) & ((UInt64)1 << (cpu))) != 0) #endif @@ -95,7 +109,7 @@ typedef UInt64 CCpuSet; #endif // _WIN32 -#define THREAD_FUNC_CALL_TYPE MY_STD_CALL +#define THREAD_FUNC_CALL_TYPE Z7_STDCALL #if defined(_WIN32) && defined(__GNUC__) /* GCC compiler for x86 32-bit uses the rule: @@ -168,7 +182,7 @@ WRes CriticalSection_Init(CCriticalSection *p); #else // _WIN32 -typedef struct _CEvent +typedef struct { int _created; int _manual_reset; @@ -187,13 +201,14 @@ WRes ManualResetEvent_Create(CManualResetEvent *p, int signaled); WRes ManualResetEvent_CreateNotSignaled(CManualResetEvent *p); WRes AutoResetEvent_Create(CAutoResetEvent *p, int signaled); WRes AutoResetEvent_CreateNotSignaled(CAutoResetEvent *p); + WRes Event_Set(CEvent *p); WRes Event_Reset(CEvent *p); WRes Event_Wait(CEvent *p); WRes Event_Close(CEvent *p); -typedef struct _CSemaphore +typedef struct { int _created; UInt32 _count; @@ -213,7 +228,7 @@ WRes Semaphore_Wait(CSemaphore *p); WRes Semaphore_Close(CSemaphore *p); -typedef struct _CCriticalSection +typedef struct { pthread_mutex_t _mutex; } CCriticalSection; @@ -224,9 +239,12 @@ void CriticalSection_Enter(CCriticalSection *cs); void CriticalSection_Leave(CCriticalSection *cs); LONG InterlockedIncrement(LONG volatile *addend); +LONG InterlockedDecrement(LONG volatile *addend); #endif // _WIN32 +WRes AutoResetEvent_OptCreate_And_Reset(CAutoResetEvent *p); + EXTERN_C_END #endif diff --git a/deps/LZMA-SDK/C/Util/7z/7z.dsp b/deps/LZMA-SDK/C/Util/7z/7z.dsp index be0f0a743..019913e5b 100644 --- a/deps/LZMA-SDK/C/Util/7z/7z.dsp +++ b/deps/LZMA-SDK/C/Util/7z/7z.dsp @@ -1,241 +1,249 @@ -# Microsoft Developer Studio Project File - Name="7z" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=7z - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "7z.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "7z.mak" CFG="7z - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "7z - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "7z - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "7z - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MD /W4 /WX /GX /O2 /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /FAcs /Yu"Precomp.h" /FD /c -# ADD BASE RSC /l 0x419 /d "NDEBUG" -# ADD RSC /l 0x419 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"c:\util\7zDec.exe" /opt:NOWIN98 -# SUBTRACT LINK32 /pdb:none - -!ELSEIF "$(CFG)" == "7z - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W4 /WX /Gm /GX /ZI /Od /D "_DEBUG" /D "_SZ_ALLOC_DEBUG2" /D "_SZ_NO_INT_64_A" /D "WIN32" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /Yu"Precomp.h" /FD /GZ /c -# ADD BASE RSC /l 0x419 /d "_DEBUG" -# ADD RSC /l 0x419 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /out:"c:\util\7zDec.exe" /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "7z - Win32 Release" -# Name "7z - Win32 Debug" -# Begin Group "Common" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=..\..\7z.h -# End Source File -# Begin Source File - -SOURCE=..\..\7zAlloc.c -# End Source File -# Begin Source File - -SOURCE=..\..\7zAlloc.h -# End Source File -# Begin Source File - -SOURCE=..\..\7zArcIn.c -# End Source File -# Begin Source File - -SOURCE=..\..\7zBuf.c -# End Source File -# Begin Source File - -SOURCE=..\..\7zBuf.h -# End Source File -# Begin Source File - -SOURCE=..\..\7zCrc.c -# End Source File -# Begin Source File - -SOURCE=..\..\7zCrc.h -# End Source File -# Begin Source File - -SOURCE=..\..\7zCrcOpt.c -# End Source File -# Begin Source File - -SOURCE=..\..\7zDec.c -# ADD CPP /D "_7ZIP_PPMD_SUPPPORT" -# End Source File -# Begin Source File - -SOURCE=..\..\7zFile.c -# End Source File -# Begin Source File - -SOURCE=..\..\7zFile.h -# End Source File -# Begin Source File - -SOURCE=..\..\7zStream.c -# End Source File -# Begin Source File - -SOURCE=..\..\7zTypes.h -# End Source File -# Begin Source File - -SOURCE=..\..\Bcj2.c -# End Source File -# Begin Source File - -SOURCE=..\..\Bcj2.h -# End Source File -# Begin Source File - -SOURCE=..\..\Bra.c -# End Source File -# Begin Source File - -SOURCE=..\..\Bra.h -# End Source File -# Begin Source File - -SOURCE=..\..\Bra86.c -# End Source File -# Begin Source File - -SOURCE=..\..\BraIA64.c -# End Source File -# Begin Source File - -SOURCE=..\..\CpuArch.c -# End Source File -# Begin Source File - -SOURCE=..\..\CpuArch.h -# End Source File -# Begin Source File - -SOURCE=..\..\Delta.c -# End Source File -# Begin Source File - -SOURCE=..\..\Delta.h -# End Source File -# Begin Source File - -SOURCE=..\..\Lzma2Dec.c -# End Source File -# Begin Source File - -SOURCE=..\..\Lzma2Dec.h -# End Source File -# Begin Source File - -SOURCE=..\..\LzmaDec.c -# End Source File -# Begin Source File - -SOURCE=..\..\LzmaDec.h -# End Source File -# Begin Source File - -SOURCE=..\..\Ppmd.h -# End Source File -# Begin Source File - -SOURCE=..\..\Ppmd7.c -# End Source File -# Begin Source File - -SOURCE=..\..\Ppmd7.h -# End Source File -# Begin Source File - -SOURCE=..\..\Ppmd7Dec.c -# End Source File -# End Group -# Begin Group "Spec" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=..\..\Compiler.h -# End Source File -# Begin Source File - -SOURCE=.\Precomp.c -# ADD CPP /Yc"Precomp.h" -# End Source File -# Begin Source File - -SOURCE=.\Precomp.h -# End Source File -# End Group -# Begin Source File - -SOURCE=.\7zMain.c -# End Source File -# End Target -# End Project +# Microsoft Developer Studio Project File - Name="7z" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=7z - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "7z.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "7z.mak" CFG="7z - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "7z - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "7z - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "7z - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MD /W4 /WX /GX /O2 /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /D "Z7_PPMD_SUPPORT" /D "Z7_EXTRACT_ONLY" /FAcs /Yu"Precomp.h" /FD /c +# ADD BASE RSC /l 0x419 /d "NDEBUG" +# ADD RSC /l 0x419 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"c:\util\7zDec.exe" /opt:NOWIN98 +# SUBTRACT LINK32 /pdb:none + +!ELSEIF "$(CFG)" == "7z - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD CPP /nologo /W4 /WX /Gm /GX /ZI /Od /D "_DEBUG" /D "_SZ_ALLOC_DEBUG2" /D "_SZ_NO_INT_64_A" /D "WIN32" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /D "Z7_PPMD_SUPPORT" /D "Z7_EXTRACT_ONLY" /Yu"Precomp.h" /FD /GZ /c +# ADD BASE RSC /l 0x419 /d "_DEBUG" +# ADD RSC /l 0x419 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /out:"c:\util\7zDec.exe" /pdbtype:sept + +!ENDIF + +# Begin Target + +# Name "7z - Win32 Release" +# Name "7z - Win32 Debug" +# Begin Group "Common" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\7z.h +# End Source File +# Begin Source File + +SOURCE=..\..\7zAlloc.c +# End Source File +# Begin Source File + +SOURCE=..\..\7zAlloc.h +# End Source File +# Begin Source File + +SOURCE=..\..\7zArcIn.c +# End Source File +# Begin Source File + +SOURCE=..\..\7zBuf.c +# End Source File +# Begin Source File + +SOURCE=..\..\7zBuf.h +# End Source File +# Begin Source File + +SOURCE=..\..\7zCrc.c +# End Source File +# Begin Source File + +SOURCE=..\..\7zCrc.h +# End Source File +# Begin Source File + +SOURCE=..\..\7zCrcOpt.c +# End Source File +# Begin Source File + +SOURCE=..\..\7zDec.c +# ADD CPP /D "_7ZIP_PPMD_SUPPPORT" +# End Source File +# Begin Source File + +SOURCE=..\..\7zFile.c +# End Source File +# Begin Source File + +SOURCE=..\..\7zFile.h +# End Source File +# Begin Source File + +SOURCE=..\..\7zStream.c +# End Source File +# Begin Source File + +SOURCE=..\..\7zTypes.h +# End Source File +# Begin Source File + +SOURCE=..\..\7zWindows.h +# End Source File +# Begin Source File + +SOURCE=..\..\Bcj2.c +# End Source File +# Begin Source File + +SOURCE=..\..\Bcj2.h +# End Source File +# Begin Source File + +SOURCE=..\..\Bra.c +# End Source File +# Begin Source File + +SOURCE=..\..\Bra.h +# End Source File +# Begin Source File + +SOURCE=..\..\Bra86.c +# End Source File +# Begin Source File + +SOURCE=..\..\BraIA64.c +# End Source File +# Begin Source File + +SOURCE=..\..\CpuArch.c +# End Source File +# Begin Source File + +SOURCE=..\..\CpuArch.h +# End Source File +# Begin Source File + +SOURCE=..\..\Delta.c +# End Source File +# Begin Source File + +SOURCE=..\..\Delta.h +# End Source File +# Begin Source File + +SOURCE=..\..\Lzma2Dec.c +# End Source File +# Begin Source File + +SOURCE=..\..\Lzma2Dec.h +# End Source File +# Begin Source File + +SOURCE=..\..\LzmaDec.c +# End Source File +# Begin Source File + +SOURCE=..\..\LzmaDec.h +# End Source File +# Begin Source File + +SOURCE=..\..\Ppmd.h +# End Source File +# Begin Source File + +SOURCE=..\..\Ppmd7.c +# End Source File +# Begin Source File + +SOURCE=..\..\Ppmd7.h +# End Source File +# Begin Source File + +SOURCE=..\..\Ppmd7Dec.c +# End Source File +# End Group +# Begin Group "Spec" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\Compiler.h +# End Source File +# Begin Source File + +SOURCE=.\Precomp.c +# ADD CPP /Yc"Precomp.h" +# End Source File +# Begin Source File + +SOURCE=..\..\Precomp.h +# End Source File +# Begin Source File + +SOURCE=.\Precomp.h +# End Source File +# End Group +# Begin Source File + +SOURCE=.\7zMain.c +# End Source File +# End Target +# End Project diff --git a/deps/LZMA-SDK/C/Util/7z/7z.dsw b/deps/LZMA-SDK/C/Util/7z/7z.dsw index 848d13cb1..23089fb79 100644 --- a/deps/LZMA-SDK/C/Util/7z/7z.dsw +++ b/deps/LZMA-SDK/C/Util/7z/7z.dsw @@ -1,29 +1,29 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "7z"=.\7z.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "7z"=.\7z.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/deps/LZMA-SDK/C/Util/7z/7zMain.c b/deps/LZMA-SDK/C/Util/7z/7zMain.c index 9d555098e..8ae9180d5 100644 --- a/deps/LZMA-SDK/C/Util/7z/7zMain.c +++ b/deps/LZMA-SDK/C/Util/7z/7zMain.c @@ -1,887 +1,889 @@ -/* 7zMain.c - Test application for 7z Decoder -2021-04-29 : Igor Pavlov : Public domain */ - -#include "Precomp.h" - -#include -#include - -#include "../../CpuArch.h" - -#include "../../7z.h" -#include "../../7zAlloc.h" -#include "../../7zBuf.h" -#include "../../7zCrc.h" -#include "../../7zFile.h" -#include "../../7zVersion.h" - -#ifndef USE_WINDOWS_FILE -/* for mkdir */ -#ifdef _WIN32 -#include -#else -#include -#include -#ifdef __GNUC__ -#include -#endif -#include -// #include -#include -#include -#endif -#endif - - -#define kInputBufSize ((size_t)1 << 18) - -static const ISzAlloc g_Alloc = { SzAlloc, SzFree }; - - -static void Print(const char *s) -{ - fputs(s, stdout); -} - - -static int Buf_EnsureSize(CBuf *dest, size_t size) -{ - if (dest->size >= size) - return 1; - Buf_Free(dest, &g_Alloc); - return Buf_Create(dest, size, &g_Alloc); -} - -#ifndef _WIN32 -#define _USE_UTF8 -#endif - -/* #define _USE_UTF8 */ - -#ifdef _USE_UTF8 - -#define _UTF8_START(n) (0x100 - (1 << (7 - (n)))) - -#define _UTF8_RANGE(n) (((UInt32)1) << ((n) * 5 + 6)) - -#define _UTF8_HEAD(n, val) ((Byte)(_UTF8_START(n) + (val >> (6 * (n))))) -#define _UTF8_CHAR(n, val) ((Byte)(0x80 + (((val) >> (6 * (n))) & 0x3F))) - -static size_t Utf16_To_Utf8_Calc(const UInt16 *src, const UInt16 *srcLim) -{ - size_t size = 0; - for (;;) - { - UInt32 val; - if (src == srcLim) - return size; - - size++; - val = *src++; - - if (val < 0x80) - continue; - - if (val < _UTF8_RANGE(1)) - { - size++; - continue; - } - - if (val >= 0xD800 && val < 0xDC00 && src != srcLim) - { - UInt32 c2 = *src; - if (c2 >= 0xDC00 && c2 < 0xE000) - { - src++; - size += 3; - continue; - } - } - - size += 2; - } -} - -static Byte *Utf16_To_Utf8(Byte *dest, const UInt16 *src, const UInt16 *srcLim) -{ - for (;;) - { - UInt32 val; - if (src == srcLim) - return dest; - - val = *src++; - - if (val < 0x80) - { - *dest++ = (Byte)val; - continue; - } - - if (val < _UTF8_RANGE(1)) - { - dest[0] = _UTF8_HEAD(1, val); - dest[1] = _UTF8_CHAR(0, val); - dest += 2; - continue; - } - - if (val >= 0xD800 && val < 0xDC00 && src != srcLim) - { - UInt32 c2 = *src; - if (c2 >= 0xDC00 && c2 < 0xE000) - { - src++; - val = (((val - 0xD800) << 10) | (c2 - 0xDC00)) + 0x10000; - dest[0] = _UTF8_HEAD(3, val); - dest[1] = _UTF8_CHAR(2, val); - dest[2] = _UTF8_CHAR(1, val); - dest[3] = _UTF8_CHAR(0, val); - dest += 4; - continue; - } - } - - dest[0] = _UTF8_HEAD(2, val); - dest[1] = _UTF8_CHAR(1, val); - dest[2] = _UTF8_CHAR(0, val); - dest += 3; - } -} - -static SRes Utf16_To_Utf8Buf(CBuf *dest, const UInt16 *src, size_t srcLen) -{ - size_t destLen = Utf16_To_Utf8_Calc(src, src + srcLen); - destLen += 1; - if (!Buf_EnsureSize(dest, destLen)) - return SZ_ERROR_MEM; - *Utf16_To_Utf8(dest->data, src, src + srcLen) = 0; - return SZ_OK; -} - -#endif - -static SRes Utf16_To_Char(CBuf *buf, const UInt16 *s - #ifndef _USE_UTF8 - , UINT codePage - #endif - ) -{ - unsigned len = 0; - for (len = 0; s[len] != 0; len++) {} - - #ifndef _USE_UTF8 - { - const unsigned size = len * 3 + 100; - if (!Buf_EnsureSize(buf, size)) - return SZ_ERROR_MEM; - { - buf->data[0] = 0; - if (len != 0) - { - const char defaultChar = '_'; - BOOL defUsed; - const unsigned numChars = (unsigned)WideCharToMultiByte( - codePage, 0, (LPCWSTR)s, (int)len, (char *)buf->data, (int)size, &defaultChar, &defUsed); - if (numChars == 0 || numChars >= size) - return SZ_ERROR_FAIL; - buf->data[numChars] = 0; - } - return SZ_OK; - } - } - #else - return Utf16_To_Utf8Buf(buf, s, len); - #endif -} - -#ifdef _WIN32 - #ifndef USE_WINDOWS_FILE - static UINT g_FileCodePage = CP_ACP; - #define MY_FILE_CODE_PAGE_PARAM ,g_FileCodePage - #endif -#else - #define MY_FILE_CODE_PAGE_PARAM -#endif - -static WRes MyCreateDir(const UInt16 *name) -{ - #ifdef USE_WINDOWS_FILE - - return CreateDirectoryW((LPCWSTR)name, NULL) ? 0 : GetLastError(); - - #else - - CBuf buf; - WRes res; - Buf_Init(&buf); - RINOK(Utf16_To_Char(&buf, name MY_FILE_CODE_PAGE_PARAM)); - - res = - #ifdef _WIN32 - _mkdir((const char *)buf.data) - #else - mkdir((const char *)buf.data, 0777) - #endif - == 0 ? 0 : errno; - Buf_Free(&buf, &g_Alloc); - return res; - - #endif -} - -static WRes OutFile_OpenUtf16(CSzFile *p, const UInt16 *name) -{ - #ifdef USE_WINDOWS_FILE - return OutFile_OpenW(p, (LPCWSTR)name); - #else - CBuf buf; - WRes res; - Buf_Init(&buf); - RINOK(Utf16_To_Char(&buf, name MY_FILE_CODE_PAGE_PARAM)); - res = OutFile_Open(p, (const char *)buf.data); - Buf_Free(&buf, &g_Alloc); - return res; - #endif -} - - -static SRes PrintString(const UInt16 *s) -{ - CBuf buf; - SRes res; - Buf_Init(&buf); - res = Utf16_To_Char(&buf, s - #ifndef _USE_UTF8 - , CP_OEMCP - #endif - ); - if (res == SZ_OK) - Print((const char *)buf.data); - Buf_Free(&buf, &g_Alloc); - return res; -} - -static void UInt64ToStr(UInt64 value, char *s, int numDigits) -{ - char temp[32]; - int pos = 0; - do - { - temp[pos++] = (char)('0' + (unsigned)(value % 10)); - value /= 10; - } - while (value != 0); - - for (numDigits -= pos; numDigits > 0; numDigits--) - *s++ = ' '; - - do - *s++ = temp[--pos]; - while (pos); - *s = '\0'; -} - -static char *UIntToStr(char *s, unsigned value, int numDigits) -{ - char temp[16]; - int pos = 0; - do - temp[pos++] = (char)('0' + (value % 10)); - while (value /= 10); - - for (numDigits -= pos; numDigits > 0; numDigits--) - *s++ = '0'; - - do - *s++ = temp[--pos]; - while (pos); - *s = '\0'; - return s; -} - -static void UIntToStr_2(char *s, unsigned value) -{ - s[0] = (char)('0' + (value / 10)); - s[1] = (char)('0' + (value % 10)); -} - - -#define PERIOD_4 (4 * 365 + 1) -#define PERIOD_100 (PERIOD_4 * 25 - 1) -#define PERIOD_400 (PERIOD_100 * 4 + 1) - - - -#ifndef _WIN32 - -// MS uses long for BOOL, but long is 32-bit in MS. So we use int. -// typedef long BOOL; -typedef int BOOL; - -typedef struct _FILETIME -{ - DWORD dwLowDateTime; - DWORD dwHighDateTime; -} FILETIME; - -static LONG TIME_GetBias() -{ - time_t utc = time(NULL); - struct tm *ptm = localtime(&utc); - int localdaylight = ptm->tm_isdst; /* daylight for local timezone */ - ptm = gmtime(&utc); - ptm->tm_isdst = localdaylight; /* use local daylight, not that of Greenwich */ - LONG bias = (int)(mktime(ptm)-utc); - return bias; -} - -#define TICKS_PER_SEC 10000000 - -#define GET_TIME_64(pft) ((pft)->dwLowDateTime | ((UInt64)(pft)->dwHighDateTime << 32)) - -#define SET_FILETIME(ft, v64) \ - (ft)->dwLowDateTime = (DWORD)v64; \ - (ft)->dwHighDateTime = (DWORD)(v64 >> 32); - -#define WINAPI -#define TRUE 1 - -static BOOL WINAPI FileTimeToLocalFileTime(const FILETIME *fileTime, FILETIME *localFileTime) -{ - UInt64 v = GET_TIME_64(fileTime); - v = (UInt64)((Int64)v - (Int64)TIME_GetBias() * TICKS_PER_SEC); - SET_FILETIME(localFileTime, v); - return TRUE; -} - -static const UInt32 kNumTimeQuantumsInSecond = 10000000; -static const UInt32 kFileTimeStartYear = 1601; -static const UInt32 kUnixTimeStartYear = 1970; -static const UInt64 kUnixTimeOffset = - (UInt64)60 * 60 * 24 * (89 + 365 * (kUnixTimeStartYear - kFileTimeStartYear)); - -static Int64 Time_FileTimeToUnixTime64(const FILETIME *ft) -{ - UInt64 winTime = GET_TIME_64(ft); - return (Int64)(winTime / kNumTimeQuantumsInSecond) - (Int64)kUnixTimeOffset; -} - -#if defined(_AIX) - #define MY_ST_TIMESPEC st_timespec -#else - #define MY_ST_TIMESPEC timespec -#endif - -static void FILETIME_To_timespec(const FILETIME *ft, struct MY_ST_TIMESPEC *ts) -{ - if (ft) - { - const Int64 sec = Time_FileTimeToUnixTime64(ft); - // time_t is long - const time_t sec2 = (time_t)sec; - if (sec2 == sec) - { - ts->tv_sec = sec2; - UInt64 winTime = GET_TIME_64(ft); - ts->tv_nsec = (long)((winTime % 10000000) * 100);; - return; - } - } - // else - { - ts->tv_sec = 0; - // ts.tv_nsec = UTIME_NOW; // set to the current time - ts->tv_nsec = UTIME_OMIT; // keep old timesptamp - } -} - -static WRes Set_File_FILETIME(const UInt16 *name, const FILETIME *mTime) -{ - struct timespec times[2]; - - const int flags = 0; // follow link - // = AT_SYMLINK_NOFOLLOW; // don't follow link - - CBuf buf; - int res; - Buf_Init(&buf); - RINOK(Utf16_To_Char(&buf, name MY_FILE_CODE_PAGE_PARAM)); - FILETIME_To_timespec(NULL, ×[0]); - FILETIME_To_timespec(mTime, ×[1]); - res = utimensat(AT_FDCWD, (const char *)buf.data, times, flags); - Buf_Free(&buf, &g_Alloc); - if (res == 0) - return 0; - return errno; -} - -#endif - -static void NtfsFileTime_to_FILETIME(const CNtfsFileTime *t, FILETIME *ft) -{ - ft->dwLowDateTime = (DWORD)(t->Low); - ft->dwHighDateTime = (DWORD)(t->High); -} - -static void ConvertFileTimeToString(const CNtfsFileTime *nTime, char *s) -{ - unsigned year, mon, hour, min, sec; - Byte ms[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; - unsigned t; - UInt32 v; - // UInt64 v64 = nt->Low | ((UInt64)nt->High << 32); - UInt64 v64; - { - FILETIME fileTime, locTime; - NtfsFileTime_to_FILETIME(nTime, &fileTime); - if (!FileTimeToLocalFileTime(&fileTime, &locTime)) - { - locTime.dwHighDateTime = - locTime.dwLowDateTime = 0; - } - v64 = locTime.dwLowDateTime | ((UInt64)locTime.dwHighDateTime << 32); - } - v64 /= 10000000; - sec = (unsigned)(v64 % 60); v64 /= 60; - min = (unsigned)(v64 % 60); v64 /= 60; - hour = (unsigned)(v64 % 24); v64 /= 24; - - v = (UInt32)v64; - - year = (unsigned)(1601 + v / PERIOD_400 * 400); - v %= PERIOD_400; - - t = v / PERIOD_100; if (t == 4) t = 3; year += t * 100; v -= t * PERIOD_100; - t = v / PERIOD_4; if (t == 25) t = 24; year += t * 4; v -= t * PERIOD_4; - t = v / 365; if (t == 4) t = 3; year += t; v -= t * 365; - - if (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)) - ms[1] = 29; - for (mon = 0;; mon++) - { - unsigned d = ms[mon]; - if (v < d) - break; - v -= d; - } - s = UIntToStr(s, year, 4); *s++ = '-'; - UIntToStr_2(s, mon + 1); s[2] = '-'; s += 3; - UIntToStr_2(s, (unsigned)v + 1); s[2] = ' '; s += 3; - UIntToStr_2(s, hour); s[2] = ':'; s += 3; - UIntToStr_2(s, min); s[2] = ':'; s += 3; - UIntToStr_2(s, sec); s[2] = 0; -} - -static void PrintLF() -{ - Print("\n"); -} - -static void PrintError(char *s) -{ - Print("\nERROR: "); - Print(s); - PrintLF(); -} - -static void PrintError_WRes(const char *message, WRes wres) -{ - Print("\nERROR: "); - Print(message); - PrintLF(); - { - char s[32]; - UIntToStr(s, (unsigned)wres, 1); - Print("System error code: "); - Print(s); - } - // sprintf(buffer + strlen(buffer), "\nSystem error code: %d", (unsigned)wres); - #ifdef _WIN32 - { - char *s = NULL; - if (FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER | - FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, - NULL, wres, 0, (LPSTR) &s, 0, NULL) != 0 && s) - { - Print(" : "); - Print(s); - LocalFree(s); - } - } - #else - { - const char *s = strerror(wres); - if (s) - { - Print(" : "); - Print(s); - } - } - #endif - PrintLF(); -} - -static void GetAttribString(UInt32 wa, BoolInt isDir, char *s) -{ - #ifdef USE_WINDOWS_FILE - s[0] = (char)(((wa & FILE_ATTRIBUTE_DIRECTORY) != 0 || isDir) ? 'D' : '.'); - s[1] = (char)(((wa & FILE_ATTRIBUTE_READONLY ) != 0) ? 'R': '.'); - s[2] = (char)(((wa & FILE_ATTRIBUTE_HIDDEN ) != 0) ? 'H': '.'); - s[3] = (char)(((wa & FILE_ATTRIBUTE_SYSTEM ) != 0) ? 'S': '.'); - s[4] = (char)(((wa & FILE_ATTRIBUTE_ARCHIVE ) != 0) ? 'A': '.'); - s[5] = 0; - #else - s[0] = (char)(((wa & (1 << 4)) != 0 || isDir) ? 'D' : '.'); - s[1] = 0; - #endif -} - - -// #define NUM_PARENTS_MAX 128 - -int MY_CDECL main(int numargs, char *args[]) -{ - ISzAlloc allocImp; - ISzAlloc allocTempImp; - - CFileInStream archiveStream; - CLookToRead2 lookStream; - CSzArEx db; - SRes res; - UInt16 *temp = NULL; - size_t tempSize = 0; - // UInt32 parents[NUM_PARENTS_MAX]; - - Print("\n7z Decoder " MY_VERSION_CPU " : " MY_COPYRIGHT_DATE "\n\n"); - - if (numargs == 1) - { - Print( - "Usage: 7zDec \n\n" - "\n" - " e: Extract files from archive (without using directory names)\n" - " l: List contents of archive\n" - " t: Test integrity of archive\n" - " x: eXtract files with full paths\n"); - return 0; - } - - if (numargs < 3) - { - PrintError("incorrect command"); - return 1; - } - - #if defined(_WIN32) && !defined(USE_WINDOWS_FILE) && !defined(UNDER_CE) - g_FileCodePage = AreFileApisANSI() ? CP_ACP : CP_OEMCP; - #endif - - - allocImp = g_Alloc; - allocTempImp = g_Alloc; - - { - WRes wres = - #ifdef UNDER_CE - InFile_OpenW(&archiveStream.file, L"\test.7z"); // change it - #else - InFile_Open(&archiveStream.file, args[2]); - #endif - if (wres != 0) - { - PrintError_WRes("cannot open input file", wres); - return 1; - } - } - - FileInStream_CreateVTable(&archiveStream); - archiveStream.wres = 0; - LookToRead2_CreateVTable(&lookStream, False); - lookStream.buf = NULL; - - res = SZ_OK; - - { - lookStream.buf = (Byte *)ISzAlloc_Alloc(&allocImp, kInputBufSize); - if (!lookStream.buf) - res = SZ_ERROR_MEM; - else - { - lookStream.bufSize = kInputBufSize; - lookStream.realStream = &archiveStream.vt; - LookToRead2_Init(&lookStream); - } - } - - CrcGenerateTable(); - - SzArEx_Init(&db); - - if (res == SZ_OK) - { - res = SzArEx_Open(&db, &lookStream.vt, &allocImp, &allocTempImp); - } - - if (res == SZ_OK) - { - char *command = args[1]; - int listCommand = 0, testCommand = 0, fullPaths = 0; - - if (strcmp(command, "l") == 0) listCommand = 1; - else if (strcmp(command, "t") == 0) testCommand = 1; - else if (strcmp(command, "e") == 0) { } - else if (strcmp(command, "x") == 0) { fullPaths = 1; } - else - { - PrintError("incorrect command"); - res = SZ_ERROR_FAIL; - } - - if (res == SZ_OK) - { - UInt32 i; - - /* - if you need cache, use these 3 variables. - if you use external function, you can make these variable as static. - */ - UInt32 blockIndex = 0xFFFFFFFF; /* it can have any value before first call (if outBuffer = 0) */ - Byte *outBuffer = 0; /* it must be 0 before first call for each new archive. */ - size_t outBufferSize = 0; /* it can have any value before first call (if outBuffer = 0) */ - - for (i = 0; i < db.NumFiles; i++) - { - size_t offset = 0; - size_t outSizeProcessed = 0; - // const CSzFileItem *f = db.Files + i; - size_t len; - const BoolInt isDir = SzArEx_IsDir(&db, i); - if (listCommand == 0 && isDir && !fullPaths) - continue; - len = SzArEx_GetFileNameUtf16(&db, i, NULL); - // len = SzArEx_GetFullNameLen(&db, i); - - if (len > tempSize) - { - SzFree(NULL, temp); - tempSize = len; - temp = (UInt16 *)SzAlloc(NULL, tempSize * sizeof(temp[0])); - if (!temp) - { - res = SZ_ERROR_MEM; - break; - } - } - - SzArEx_GetFileNameUtf16(&db, i, temp); - /* - if (SzArEx_GetFullNameUtf16_Back(&db, i, temp + len) != temp) - { - res = SZ_ERROR_FAIL; - break; - } - */ - - if (listCommand) - { - char attr[8], s[32], t[32]; - UInt64 fileSize; - - GetAttribString(SzBitWithVals_Check(&db.Attribs, i) ? db.Attribs.Vals[i] : 0, isDir, attr); - - fileSize = SzArEx_GetFileSize(&db, i); - UInt64ToStr(fileSize, s, 10); - - if (SzBitWithVals_Check(&db.MTime, i)) - ConvertFileTimeToString(&db.MTime.Vals[i], t); - else - { - size_t j; - for (j = 0; j < 19; j++) - t[j] = ' '; - t[j] = '\0'; - } - - Print(t); - Print(" "); - Print(attr); - Print(" "); - Print(s); - Print(" "); - res = PrintString(temp); - if (res != SZ_OK) - break; - if (isDir) - Print("/"); - PrintLF(); - continue; - } - - Print(testCommand ? - "T ": - "- "); - res = PrintString(temp); - if (res != SZ_OK) - break; - - if (isDir) - Print("/"); - else - { - res = SzArEx_Extract(&db, &lookStream.vt, i, - &blockIndex, &outBuffer, &outBufferSize, - &offset, &outSizeProcessed, - &allocImp, &allocTempImp); - if (res != SZ_OK) - break; - } - - if (!testCommand) - { - CSzFile outFile; - size_t processedSize; - size_t j; - UInt16 *name = (UInt16 *)temp; - const UInt16 *destPath = (const UInt16 *)name; - - for (j = 0; name[j] != 0; j++) - if (name[j] == '/') - { - if (fullPaths) - { - name[j] = 0; - MyCreateDir(name); - name[j] = CHAR_PATH_SEPARATOR; - } - else - destPath = name + j + 1; - } - - if (isDir) - { - MyCreateDir(destPath); - PrintLF(); - continue; - } - else - { - WRes wres = OutFile_OpenUtf16(&outFile, destPath); - if (wres != 0) - { - PrintError_WRes("cannot open output file", wres); - res = SZ_ERROR_FAIL; - break; - } - } - - processedSize = outSizeProcessed; - - { - WRes wres = File_Write(&outFile, outBuffer + offset, &processedSize); - if (wres != 0 || processedSize != outSizeProcessed) - { - PrintError_WRes("cannot write output file", wres); - res = SZ_ERROR_FAIL; - break; - } - } - - { - FILETIME mtime; - FILETIME *mtimePtr = NULL; - - #ifdef USE_WINDOWS_FILE - FILETIME ctime; - FILETIME *ctimePtr = NULL; - #endif - - if (SzBitWithVals_Check(&db.MTime, i)) - { - const CNtfsFileTime *t = &db.MTime.Vals[i]; - mtime.dwLowDateTime = (DWORD)(t->Low); - mtime.dwHighDateTime = (DWORD)(t->High); - mtimePtr = &mtime; - } - - #ifdef USE_WINDOWS_FILE - if (SzBitWithVals_Check(&db.CTime, i)) - { - const CNtfsFileTime *t = &db.CTime.Vals[i]; - ctime.dwLowDateTime = (DWORD)(t->Low); - ctime.dwHighDateTime = (DWORD)(t->High); - ctimePtr = &ctime; - } - - if (mtimePtr || ctimePtr) - SetFileTime(outFile.handle, ctimePtr, NULL, mtimePtr); - #endif - - { - WRes wres = File_Close(&outFile); - if (wres != 0) - { - PrintError_WRes("cannot close output file", wres); - res = SZ_ERROR_FAIL; - break; - } - } - - #ifndef USE_WINDOWS_FILE - #ifdef _WIN32 - mtimePtr = mtimePtr; - #else - if (mtimePtr) - Set_File_FILETIME(destPath, mtimePtr); - #endif - #endif - } - - #ifdef USE_WINDOWS_FILE - if (SzBitWithVals_Check(&db.Attribs, i)) - { - UInt32 attrib = db.Attribs.Vals[i]; - /* p7zip stores posix attributes in high 16 bits and adds 0x8000 as marker. - We remove posix bits, if we detect posix mode field */ - if ((attrib & 0xF0000000) != 0) - attrib &= 0x7FFF; - SetFileAttributesW((LPCWSTR)destPath, attrib); - } - #endif - } - PrintLF(); - } - ISzAlloc_Free(&allocImp, outBuffer); - } - } - - SzFree(NULL, temp); - SzArEx_Free(&db, &allocImp); - ISzAlloc_Free(&allocImp, lookStream.buf); - - File_Close(&archiveStream.file); - - if (res == SZ_OK) - { - Print("\nEverything is Ok\n"); - return 0; - } - - if (res == SZ_ERROR_UNSUPPORTED) - PrintError("decoder doesn't support this archive"); - else if (res == SZ_ERROR_MEM) - PrintError("cannot allocate memory"); - else if (res == SZ_ERROR_CRC) - PrintError("CRC error"); - else if (res == SZ_ERROR_READ /* || archiveStream.Res != 0 */) - PrintError_WRes("Read Error", archiveStream.wres); - else - { - char s[32]; - UInt64ToStr((unsigned)res, s, 0); - PrintError(s); - } - - return 1; -} +/* 7zMain.c - Test application for 7z Decoder +2024-02-28 : Igor Pavlov : Public domain */ + +#include "Precomp.h" + +#include +#include + +#ifndef USE_WINDOWS_FILE +/* for mkdir */ +#ifdef _WIN32 +#include +#else +#include +#include +#ifdef __GNUC__ +#include +#endif +#include +// #include +#include +#include +#endif +#endif + +#include "../../7zFile.h" +#include "../../7z.h" +#include "../../7zAlloc.h" +#include "../../7zBuf.h" +#include "../../7zCrc.h" +#include "../../7zVersion.h" + +#include "../../CpuArch.h" + +#define kInputBufSize ((size_t)1 << 18) + +static const ISzAlloc g_Alloc = { SzAlloc, SzFree }; +// static const ISzAlloc g_Alloc_temp = { SzAllocTemp, SzFreeTemp }; + + +static void Print(const char *s) +{ + fputs(s, stdout); +} + + +static int Buf_EnsureSize(CBuf *dest, size_t size) +{ + if (dest->size >= size) + return 1; + Buf_Free(dest, &g_Alloc); + return Buf_Create(dest, size, &g_Alloc); +} + +#ifndef _WIN32 +#define MY_USE_UTF8 +#endif + +/* #define MY_USE_UTF8 */ + +#ifdef MY_USE_UTF8 + +#define MY_UTF8_START(n) (0x100 - (1 << (7 - (n)))) + +#define MY_UTF8_RANGE(n) (((UInt32)1) << ((n) * 5 + 6)) + +#define MY_UTF8_HEAD(n, val) ((Byte)(MY_UTF8_START(n) + (val >> (6 * (n))))) +#define MY_UTF8_CHAR(n, val) ((Byte)(0x80 + (((val) >> (6 * (n))) & 0x3F))) + +static size_t Utf16_To_Utf8_Calc(const UInt16 *src, const UInt16 *srcLim) +{ + size_t size = 0; + for (;;) + { + UInt32 val; + if (src == srcLim) + return size; + + size++; + val = *src++; + + if (val < 0x80) + continue; + + if (val < MY_UTF8_RANGE(1)) + { + size++; + continue; + } + + if (val >= 0xD800 && val < 0xDC00 && src != srcLim) + { + const UInt32 c2 = *src; + if (c2 >= 0xDC00 && c2 < 0xE000) + { + src++; + size += 3; + continue; + } + } + + size += 2; + } +} + +static Byte *Utf16_To_Utf8(Byte *dest, const UInt16 *src, const UInt16 *srcLim) +{ + for (;;) + { + UInt32 val; + if (src == srcLim) + return dest; + + val = *src++; + + if (val < 0x80) + { + *dest++ = (Byte)val; + continue; + } + + if (val < MY_UTF8_RANGE(1)) + { + dest[0] = MY_UTF8_HEAD(1, val); + dest[1] = MY_UTF8_CHAR(0, val); + dest += 2; + continue; + } + + if (val >= 0xD800 && val < 0xDC00 && src != srcLim) + { + const UInt32 c2 = *src; + if (c2 >= 0xDC00 && c2 < 0xE000) + { + src++; + val = (((val - 0xD800) << 10) | (c2 - 0xDC00)) + 0x10000; + dest[0] = MY_UTF8_HEAD(3, val); + dest[1] = MY_UTF8_CHAR(2, val); + dest[2] = MY_UTF8_CHAR(1, val); + dest[3] = MY_UTF8_CHAR(0, val); + dest += 4; + continue; + } + } + + dest[0] = MY_UTF8_HEAD(2, val); + dest[1] = MY_UTF8_CHAR(1, val); + dest[2] = MY_UTF8_CHAR(0, val); + dest += 3; + } +} + +static SRes Utf16_To_Utf8Buf(CBuf *dest, const UInt16 *src, size_t srcLen) +{ + size_t destLen = Utf16_To_Utf8_Calc(src, src + srcLen); + destLen += 1; + if (!Buf_EnsureSize(dest, destLen)) + return SZ_ERROR_MEM; + *Utf16_To_Utf8(dest->data, src, src + srcLen) = 0; + return SZ_OK; +} + +#endif + +static SRes Utf16_To_Char(CBuf *buf, const UInt16 *s + #ifndef MY_USE_UTF8 + , UINT codePage + #endif + ) +{ + size_t len = 0; + for (len = 0; s[len] != 0; len++) {} + + #ifndef MY_USE_UTF8 + { + const size_t size = len * 3 + 100; + if (!Buf_EnsureSize(buf, size)) + return SZ_ERROR_MEM; + { + buf->data[0] = 0; + if (len != 0) + { + const char defaultChar = '_'; + BOOL defUsed; + const unsigned numChars = (unsigned)WideCharToMultiByte( + codePage, 0, (LPCWSTR)s, (int)len, (char *)buf->data, (int)size, &defaultChar, &defUsed); + if (numChars == 0 || numChars >= size) + return SZ_ERROR_FAIL; + buf->data[numChars] = 0; + } + return SZ_OK; + } + } + #else + return Utf16_To_Utf8Buf(buf, s, len); + #endif +} + +#ifdef _WIN32 + #ifndef USE_WINDOWS_FILE + static UINT g_FileCodePage = CP_ACP; + #define MY_FILE_CODE_PAGE_PARAM ,g_FileCodePage + #endif +#else + #define MY_FILE_CODE_PAGE_PARAM +#endif + +static WRes MyCreateDir(const UInt16 *name) +{ + #ifdef USE_WINDOWS_FILE + + return CreateDirectoryW((LPCWSTR)name, NULL) ? 0 : GetLastError(); + + #else + + CBuf buf; + WRes res; + Buf_Init(&buf); + RINOK(Utf16_To_Char(&buf, name MY_FILE_CODE_PAGE_PARAM)) + + res = + #ifdef _WIN32 + _mkdir((const char *)buf.data) + #else + mkdir((const char *)buf.data, 0777) + #endif + == 0 ? 0 : errno; + Buf_Free(&buf, &g_Alloc); + return res; + + #endif +} + +static WRes OutFile_OpenUtf16(CSzFile *p, const UInt16 *name) +{ + #ifdef USE_WINDOWS_FILE + return OutFile_OpenW(p, (LPCWSTR)name); + #else + CBuf buf; + WRes res; + Buf_Init(&buf); + RINOK(Utf16_To_Char(&buf, name MY_FILE_CODE_PAGE_PARAM)) + res = OutFile_Open(p, (const char *)buf.data); + Buf_Free(&buf, &g_Alloc); + return res; + #endif +} + + +static SRes PrintString(const UInt16 *s) +{ + CBuf buf; + SRes res; + Buf_Init(&buf); + res = Utf16_To_Char(&buf, s + #ifndef MY_USE_UTF8 + , CP_OEMCP + #endif + ); + if (res == SZ_OK) + Print((const char *)buf.data); + Buf_Free(&buf, &g_Alloc); + return res; +} + +static void UInt64ToStr(UInt64 value, char *s, int numDigits) +{ + char temp[32]; + int pos = 0; + do + { + temp[pos++] = (char)('0' + (unsigned)(value % 10)); + value /= 10; + } + while (value != 0); + + for (numDigits -= pos; numDigits > 0; numDigits--) + *s++ = ' '; + + do + *s++ = temp[--pos]; + while (pos); + *s = '\0'; +} + +static char *UIntToStr(char *s, unsigned value, int numDigits) +{ + char temp[16]; + int pos = 0; + do + temp[pos++] = (char)('0' + (value % 10)); + while (value /= 10); + + for (numDigits -= pos; numDigits > 0; numDigits--) + *s++ = '0'; + + do + *s++ = temp[--pos]; + while (pos); + *s = '\0'; + return s; +} + +static void UIntToStr_2(char *s, unsigned value) +{ + s[0] = (char)('0' + (value / 10)); + s[1] = (char)('0' + (value % 10)); +} + + +#define PERIOD_4 (4 * 365 + 1) +#define PERIOD_100 (PERIOD_4 * 25 - 1) +#define PERIOD_400 (PERIOD_100 * 4 + 1) + + + +#ifndef _WIN32 + +// MS uses long for BOOL, but long is 32-bit in MS. So we use int. +// typedef long BOOL; +typedef int BOOL; + +typedef struct +{ + DWORD dwLowDateTime; + DWORD dwHighDateTime; +} FILETIME; + +static LONG TIME_GetBias(void) +{ + const time_t utc = time(NULL); + struct tm *ptm = localtime(&utc); + const int localdaylight = ptm->tm_isdst; /* daylight for local timezone */ + ptm = gmtime(&utc); + ptm->tm_isdst = localdaylight; /* use local daylight, not that of Greenwich */ + return (int)(mktime(ptm) - utc); +} + +#define TICKS_PER_SEC 10000000 + +#define GET_TIME_64(pft) ((pft)->dwLowDateTime | ((UInt64)(pft)->dwHighDateTime << 32)) + +#define SET_FILETIME(ft, v64) \ + (ft)->dwLowDateTime = (DWORD)v64; \ + (ft)->dwHighDateTime = (DWORD)(v64 >> 32); + +#define WINAPI +#define TRUE 1 + +static BOOL WINAPI FileTimeToLocalFileTime(const FILETIME *fileTime, FILETIME *localFileTime) +{ + UInt64 v = GET_TIME_64(fileTime); + v = (UInt64)((Int64)v - (Int64)TIME_GetBias() * TICKS_PER_SEC); + SET_FILETIME(localFileTime, v) + return TRUE; +} + +static const UInt32 kNumTimeQuantumsInSecond = 10000000; +static const UInt32 kFileTimeStartYear = 1601; +static const UInt32 kUnixTimeStartYear = 1970; + +static Int64 Time_FileTimeToUnixTime64(const FILETIME *ft) +{ + const UInt64 kUnixTimeOffset = + (UInt64)60 * 60 * 24 * (89 + 365 * (kUnixTimeStartYear - kFileTimeStartYear)); + const UInt64 winTime = GET_TIME_64(ft); + return (Int64)(winTime / kNumTimeQuantumsInSecond) - (Int64)kUnixTimeOffset; +} + +#if defined(_AIX) + #define MY_ST_TIMESPEC st_timespec +#else + #define MY_ST_TIMESPEC timespec +#endif + +static void FILETIME_To_timespec(const FILETIME *ft, struct MY_ST_TIMESPEC *ts) +{ + if (ft) + { + const Int64 sec = Time_FileTimeToUnixTime64(ft); + // time_t is long + const time_t sec2 = (time_t)sec; + if (sec2 == sec) + { + ts->tv_sec = sec2; + { + const UInt64 winTime = GET_TIME_64(ft); + ts->tv_nsec = (long)((winTime % 10000000) * 100); + } + return; + } + } + // else + { + ts->tv_sec = 0; + // ts.tv_nsec = UTIME_NOW; // set to the current time + ts->tv_nsec = UTIME_OMIT; // keep old timesptamp + } +} + +static WRes Set_File_FILETIME(const UInt16 *name, const FILETIME *mTime) +{ + struct timespec times[2]; + + const int flags = 0; // follow link + // = AT_SYMLINK_NOFOLLOW; // don't follow link + + CBuf buf; + int res; + Buf_Init(&buf); + RINOK(Utf16_To_Char(&buf, name MY_FILE_CODE_PAGE_PARAM)) + FILETIME_To_timespec(NULL, ×[0]); + FILETIME_To_timespec(mTime, ×[1]); + res = utimensat(AT_FDCWD, (const char *)buf.data, times, flags); + Buf_Free(&buf, &g_Alloc); + if (res == 0) + return 0; + return errno; +} + +#endif + +static void NtfsFileTime_to_FILETIME(const CNtfsFileTime *t, FILETIME *ft) +{ + ft->dwLowDateTime = (DWORD)(t->Low); + ft->dwHighDateTime = (DWORD)(t->High); +} + +static void ConvertFileTimeToString(const CNtfsFileTime *nTime, char *s) +{ + unsigned year, mon, hour, min, sec; + Byte ms[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; + UInt32 t; + UInt32 v; + // UInt64 v64 = nt->Low | ((UInt64)nt->High << 32); + UInt64 v64; + { + FILETIME fileTime, locTime; + NtfsFileTime_to_FILETIME(nTime, &fileTime); + if (!FileTimeToLocalFileTime(&fileTime, &locTime)) + { + locTime.dwHighDateTime = + locTime.dwLowDateTime = 0; + } + v64 = locTime.dwLowDateTime | ((UInt64)locTime.dwHighDateTime << 32); + } + v64 /= 10000000; + sec = (unsigned)(v64 % 60); v64 /= 60; + min = (unsigned)(v64 % 60); v64 /= 60; + hour = (unsigned)(v64 % 24); v64 /= 24; + + v = (UInt32)v64; + + year = (unsigned)(1601 + v / PERIOD_400 * 400); + v %= PERIOD_400; + + t = v / PERIOD_100; if (t == 4) t = 3; year += t * 100; v -= t * PERIOD_100; + t = v / PERIOD_4; if (t == 25) t = 24; year += t * 4; v -= t * PERIOD_4; + t = v / 365; if (t == 4) t = 3; year += t; v -= t * 365; + + if (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)) + ms[1] = 29; + for (mon = 0;; mon++) + { + const UInt32 d = ms[mon]; + if (v < d) + break; + v -= d; + } + s = UIntToStr(s, year, 4); *s++ = '-'; + UIntToStr_2(s, mon + 1); s[2] = '-'; s += 3; + UIntToStr_2(s, (unsigned)v + 1); s[2] = ' '; s += 3; + UIntToStr_2(s, hour); s[2] = ':'; s += 3; + UIntToStr_2(s, min); s[2] = ':'; s += 3; + UIntToStr_2(s, sec); s[2] = 0; +} + +static void PrintLF(void) +{ + Print("\n"); +} + +static void PrintError(char *s) +{ + Print("\nERROR: "); + Print(s); + PrintLF(); +} + +static void PrintError_WRes(const char *message, WRes wres) +{ + Print("\nERROR: "); + Print(message); + PrintLF(); + { + char s[32]; + UIntToStr(s, (unsigned)wres, 1); + Print("System error code: "); + Print(s); + } + // sprintf(buffer + strlen(buffer), "\nSystem error code: %d", (unsigned)wres); + #ifdef _WIN32 + { + char *s = NULL; + if (FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER | + FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, + NULL, wres, 0, (LPSTR) &s, 0, NULL) != 0 && s) + { + Print(" : "); + Print(s); + LocalFree(s); + } + } + #else + { + const char *s = strerror(wres); + if (s) + { + Print(" : "); + Print(s); + } + } + #endif + PrintLF(); +} + +static void GetAttribString(UInt32 wa, BoolInt isDir, char *s) +{ + #ifdef USE_WINDOWS_FILE + s[0] = (char)(((wa & FILE_ATTRIBUTE_DIRECTORY) != 0 || isDir) ? 'D' : '.'); + s[1] = (char)(((wa & FILE_ATTRIBUTE_READONLY ) != 0) ? 'R': '.'); + s[2] = (char)(((wa & FILE_ATTRIBUTE_HIDDEN ) != 0) ? 'H': '.'); + s[3] = (char)(((wa & FILE_ATTRIBUTE_SYSTEM ) != 0) ? 'S': '.'); + s[4] = (char)(((wa & FILE_ATTRIBUTE_ARCHIVE ) != 0) ? 'A': '.'); + s[5] = 0; + #else + s[0] = (char)(((wa & (1 << 4)) != 0 || isDir) ? 'D' : '.'); + s[1] = 0; + #endif +} + + +// #define NUM_PARENTS_MAX 128 + +int Z7_CDECL main(int numargs, char *args[]) +{ + ISzAlloc allocImp; + ISzAlloc allocTempImp; + + CFileInStream archiveStream; + CLookToRead2 lookStream; + CSzArEx db; + SRes res; + UInt16 *temp = NULL; + size_t tempSize = 0; + // UInt32 parents[NUM_PARENTS_MAX]; + + Print("\n7z Decoder " MY_VERSION_CPU " : " MY_COPYRIGHT_DATE "\n\n"); + + if (numargs == 1) + { + Print( + "Usage: 7zDec \n\n" + "\n" + " e: Extract files from archive (without using directory names)\n" + " l: List contents of archive\n" + " t: Test integrity of archive\n" + " x: eXtract files with full paths\n"); + return 0; + } + + if (numargs < 3) + { + PrintError("incorrect command"); + return 1; + } + + #if defined(_WIN32) && !defined(USE_WINDOWS_FILE) && !defined(UNDER_CE) + g_FileCodePage = AreFileApisANSI() ? CP_ACP : CP_OEMCP; + #endif + + + allocImp = g_Alloc; + allocTempImp = g_Alloc; + // allocTempImp = g_Alloc_temp; + + { + WRes wres = + #ifdef UNDER_CE + InFile_OpenW(&archiveStream.file, L"\test.7z"); // change it + #else + InFile_Open(&archiveStream.file, args[2]); + #endif + if (wres != 0) + { + PrintError_WRes("cannot open input file", wres); + return 1; + } + } + + FileInStream_CreateVTable(&archiveStream); + archiveStream.wres = 0; + LookToRead2_CreateVTable(&lookStream, False); + lookStream.buf = NULL; + + res = SZ_OK; + + { + lookStream.buf = (Byte *)ISzAlloc_Alloc(&allocImp, kInputBufSize); + if (!lookStream.buf) + res = SZ_ERROR_MEM; + else + { + lookStream.bufSize = kInputBufSize; + lookStream.realStream = &archiveStream.vt; + LookToRead2_INIT(&lookStream) + } + } + + CrcGenerateTable(); + + SzArEx_Init(&db); + + if (res == SZ_OK) + { + res = SzArEx_Open(&db, &lookStream.vt, &allocImp, &allocTempImp); + } + + if (res == SZ_OK) + { + char *command = args[1]; + int listCommand = 0, testCommand = 0, fullPaths = 0; + + if (strcmp(command, "l") == 0) listCommand = 1; + else if (strcmp(command, "t") == 0) testCommand = 1; + else if (strcmp(command, "e") == 0) { } + else if (strcmp(command, "x") == 0) { fullPaths = 1; } + else + { + PrintError("incorrect command"); + res = SZ_ERROR_FAIL; + } + + if (res == SZ_OK) + { + UInt32 i; + + /* + if you need cache, use these 3 variables. + if you use external function, you can make these variable as static. + */ + UInt32 blockIndex = 0xFFFFFFFF; /* it can have any value before first call (if outBuffer = 0) */ + Byte *outBuffer = 0; /* it must be 0 before first call for each new archive. */ + size_t outBufferSize = 0; /* it can have any value before first call (if outBuffer = 0) */ + + for (i = 0; i < db.NumFiles; i++) + { + size_t offset = 0; + size_t outSizeProcessed = 0; + // const CSzFileItem *f = db.Files + i; + size_t len; + const BoolInt isDir = SzArEx_IsDir(&db, i); + if (listCommand == 0 && isDir && !fullPaths) + continue; + len = SzArEx_GetFileNameUtf16(&db, i, NULL); + // len = SzArEx_GetFullNameLen(&db, i); + + if (len > tempSize) + { + SzFree(NULL, temp); + tempSize = len; + temp = (UInt16 *)SzAlloc(NULL, tempSize * sizeof(temp[0])); + if (!temp) + { + res = SZ_ERROR_MEM; + break; + } + } + + SzArEx_GetFileNameUtf16(&db, i, temp); + /* + if (SzArEx_GetFullNameUtf16_Back(&db, i, temp + len) != temp) + { + res = SZ_ERROR_FAIL; + break; + } + */ + + if (listCommand) + { + char attr[8], s[32], t[32]; + UInt64 fileSize; + + GetAttribString(SzBitWithVals_Check(&db.Attribs, i) ? db.Attribs.Vals[i] : 0, isDir, attr); + + fileSize = SzArEx_GetFileSize(&db, i); + UInt64ToStr(fileSize, s, 10); + + if (SzBitWithVals_Check(&db.MTime, i)) + ConvertFileTimeToString(&db.MTime.Vals[i], t); + else + { + size_t j; + for (j = 0; j < 19; j++) + t[j] = ' '; + t[j] = '\0'; + } + + Print(t); + Print(" "); + Print(attr); + Print(" "); + Print(s); + Print(" "); + res = PrintString(temp); + if (res != SZ_OK) + break; + if (isDir) + Print("/"); + PrintLF(); + continue; + } + + Print(testCommand ? + "T ": + "- "); + res = PrintString(temp); + if (res != SZ_OK) + break; + + if (isDir) + Print("/"); + else + { + res = SzArEx_Extract(&db, &lookStream.vt, i, + &blockIndex, &outBuffer, &outBufferSize, + &offset, &outSizeProcessed, + &allocImp, &allocTempImp); + if (res != SZ_OK) + break; + } + + if (!testCommand) + { + CSzFile outFile; + size_t processedSize; + size_t j; + UInt16 *name = (UInt16 *)temp; + const UInt16 *destPath = (const UInt16 *)name; + + for (j = 0; name[j] != 0; j++) + if (name[j] == '/') + { + if (fullPaths) + { + name[j] = 0; + MyCreateDir(name); + name[j] = CHAR_PATH_SEPARATOR; + } + else + destPath = name + j + 1; + } + + if (isDir) + { + MyCreateDir(destPath); + PrintLF(); + continue; + } + else + { + const WRes wres = OutFile_OpenUtf16(&outFile, destPath); + if (wres != 0) + { + PrintError_WRes("cannot open output file", wres); + res = SZ_ERROR_FAIL; + break; + } + } + + processedSize = outSizeProcessed; + + { + const WRes wres = File_Write(&outFile, outBuffer + offset, &processedSize); + if (wres != 0 || processedSize != outSizeProcessed) + { + PrintError_WRes("cannot write output file", wres); + res = SZ_ERROR_FAIL; + break; + } + } + + { + FILETIME mtime; + FILETIME *mtimePtr = NULL; + + #ifdef USE_WINDOWS_FILE + FILETIME ctime; + FILETIME *ctimePtr = NULL; + #endif + + if (SzBitWithVals_Check(&db.MTime, i)) + { + const CNtfsFileTime *t = &db.MTime.Vals[i]; + mtime.dwLowDateTime = (DWORD)(t->Low); + mtime.dwHighDateTime = (DWORD)(t->High); + mtimePtr = &mtime; + } + + #ifdef USE_WINDOWS_FILE + if (SzBitWithVals_Check(&db.CTime, i)) + { + const CNtfsFileTime *t = &db.CTime.Vals[i]; + ctime.dwLowDateTime = (DWORD)(t->Low); + ctime.dwHighDateTime = (DWORD)(t->High); + ctimePtr = &ctime; + } + + if (mtimePtr || ctimePtr) + SetFileTime(outFile.handle, ctimePtr, NULL, mtimePtr); + #endif + + { + const WRes wres = File_Close(&outFile); + if (wres != 0) + { + PrintError_WRes("cannot close output file", wres); + res = SZ_ERROR_FAIL; + break; + } + } + + #ifndef USE_WINDOWS_FILE + #ifdef _WIN32 + mtimePtr = mtimePtr; + #else + if (mtimePtr) + Set_File_FILETIME(destPath, mtimePtr); + #endif + #endif + } + + #ifdef USE_WINDOWS_FILE + if (SzBitWithVals_Check(&db.Attribs, i)) + { + UInt32 attrib = db.Attribs.Vals[i]; + /* p7zip stores posix attributes in high 16 bits and adds 0x8000 as marker. + We remove posix bits, if we detect posix mode field */ + if ((attrib & 0xF0000000) != 0) + attrib &= 0x7FFF; + SetFileAttributesW((LPCWSTR)destPath, attrib); + } + #endif + } + PrintLF(); + } + ISzAlloc_Free(&allocImp, outBuffer); + } + } + + SzFree(NULL, temp); + SzArEx_Free(&db, &allocImp); + ISzAlloc_Free(&allocImp, lookStream.buf); + + File_Close(&archiveStream.file); + + if (res == SZ_OK) + { + Print("\nEverything is Ok\n"); + return 0; + } + + if (res == SZ_ERROR_UNSUPPORTED) + PrintError("decoder doesn't support this archive"); + else if (res == SZ_ERROR_MEM) + PrintError("cannot allocate memory"); + else if (res == SZ_ERROR_CRC) + PrintError("CRC error"); + else if (res == SZ_ERROR_READ /* || archiveStream.Res != 0 */) + PrintError_WRes("Read Error", archiveStream.wres); + else + { + char s[32]; + UInt64ToStr((unsigned)res, s, 0); + PrintError(s); + } + + return 1; +} diff --git a/deps/LZMA-SDK/C/Util/7z/Precomp.c b/deps/LZMA-SDK/C/Util/7z/Precomp.c index 01605e3c2..34b60f8fc 100644 --- a/deps/LZMA-SDK/C/Util/7z/Precomp.c +++ b/deps/LZMA-SDK/C/Util/7z/Precomp.c @@ -1,4 +1,4 @@ -/* Precomp.c -- StdAfx -2013-01-21 : Igor Pavlov : Public domain */ - -#include "Precomp.h" +/* Precomp.c -- StdAfx +2013-01-21 : Igor Pavlov : Public domain */ + +#include "Precomp.h" diff --git a/deps/LZMA-SDK/C/Util/7z/Precomp.h b/deps/LZMA-SDK/C/Util/7z/Precomp.h index 588a66f7e..52b87ea64 100644 --- a/deps/LZMA-SDK/C/Util/7z/Precomp.h +++ b/deps/LZMA-SDK/C/Util/7z/Precomp.h @@ -1,10 +1,13 @@ -/* Precomp.h -- StdAfx -2013-06-16 : Igor Pavlov : Public domain */ - -#ifndef __7Z_PRECOMP_H -#define __7Z_PRECOMP_H - -#include "../../Compiler.h" -#include "../../7zTypes.h" - -#endif +/* Precomp.h -- Precomp +2024-01-23 : Igor Pavlov : Public domain */ + +// #ifndef ZIP7_INC_PRECOMP_LOC_H +// #define ZIP7_INC_PRECOMP_LOC_H + +#if defined(_MSC_VER) && _MSC_VER >= 1800 +#pragma warning(disable : 4464) // relative include path contains '..' +#endif + +#include "../../Precomp.h" + +// #endif diff --git a/deps/LZMA-SDK/C/Util/7z/makefile b/deps/LZMA-SDK/C/Util/7z/makefile index 9a49fd515..168a6d14b 100644 --- a/deps/LZMA-SDK/C/Util/7z/makefile +++ b/deps/LZMA-SDK/C/Util/7z/makefile @@ -1,40 +1,44 @@ -CFLAGS = $(CFLAGS) -D_7ZIP_PPMD_SUPPPORT - -PROG = 7zDec.exe - -C_OBJS = \ - $O\7zAlloc.obj \ - $O\7zBuf.obj \ - $O\7zCrc.obj \ - $O\7zCrcOpt.obj \ - $O\7zFile.obj \ - $O\7zDec.obj \ - $O\7zArcIn.obj \ - $O\7zStream.obj \ - $O\Bcj2.obj \ - $O\Bra.obj \ - $O\Bra86.obj \ - $O\BraIA64.obj \ - $O\CpuArch.obj \ - $O\Delta.obj \ - $O\Lzma2Dec.obj \ - $O\LzmaDec.obj \ - $O\Ppmd7.obj \ - $O\Ppmd7Dec.obj \ - -7Z_OBJS = \ - $O\7zMain.obj \ - -OBJS = \ - $O\Precomp.obj \ - $(7Z_OBJS) \ - $(C_OBJS) \ - -!include "../../../CPP/Build.mak" - -$(7Z_OBJS): $(*B).c - $(CCOMPL_USE) -$(C_OBJS): ../../$(*B).c - $(CCOMPL_USE) -$O\Precomp.obj: Precomp.c - $(CCOMPL_PCH) +CFLAGS = $(CFLAGS) -DZ7_PPMD_SUPPORT -DZ7_EXTRACT_ONLY + +PROG = 7zDec.exe + +C_OBJS = \ + $O\7zAlloc.obj \ + $O\7zBuf.obj \ + $O\7zFile.obj \ + $O\7zDec.obj \ + $O\7zArcIn.obj \ + $O\7zStream.obj \ + $O\Bcj2.obj \ + $O\Bra.obj \ + $O\Bra86.obj \ + $O\BraIA64.obj \ + $O\CpuArch.obj \ + $O\Delta.obj \ + $O\Lzma2Dec.obj \ + $O\LzmaDec.obj \ + $O\Ppmd7.obj \ + $O\Ppmd7Dec.obj \ + +7Z_OBJS = \ + $O\7zMain.obj \ + +!include "../../../CPP/7zip/Crc.mak" +!include "../../../CPP/7zip/LzmaDec.mak" + +OBJS = \ + $O\Precomp.obj \ + $(7Z_OBJS) \ + $(C_OBJS) \ + $(ASM_OBJS) \ + +!include "../../../CPP/Build.mak" + +$(7Z_OBJS): $(*B).c + $(CCOMPL_USE) +$(C_OBJS): ../../$(*B).c + $(CCOMPL_USE) +$O\Precomp.obj: Precomp.c + $(CCOMPL_PCH) + +!include "../../Asm_c.mak" diff --git a/deps/LZMA-SDK/C/Util/7z/makefile.gcc b/deps/LZMA-SDK/C/Util/7z/makefile.gcc index 4263d6755..0b8b713c7 100644 --- a/deps/LZMA-SDK/C/Util/7z/makefile.gcc +++ b/deps/LZMA-SDK/C/Util/7z/makefile.gcc @@ -1,34 +1,32 @@ -PROG = 7zdec - -LOCAL_FLAGS = -D_7ZIP_PPMD_SUPPPORT - -include ../../../CPP/7zip/LzmaDec_gcc.mak - - -OBJS = \ - $(LZMA_DEC_OPT_OBJS) \ - $O/Bcj2.o \ - $O/Bra.o \ - $O/Bra86.o \ - $O/BraIA64.o \ - $O/CpuArch.o \ - $O/Delta.o \ - $O/Lzma2Dec.o \ - $O/LzmaDec.o \ - $O/Ppmd7.o \ - $O/Ppmd7Dec.o \ - $O/7zCrc.o \ - $O/7zCrcOpt.o \ - $O/Sha256.o \ - $O/Sha256Opt.o \ - $O/7zAlloc.o \ - $O/7zArcIn.o \ - $O/7zBuf.o \ - $O/7zBuf2.o \ - $O/7zDec.o \ - $O/7zMain.o \ - $O/7zFile.o \ - $O/7zStream.o \ - - -include ../../7zip_gcc_c.mak +PROG = 7zdec + +LOCAL_FLAGS = -DZ7_PPMD_SUPPORT -DZ7_EXTRACT_ONLY + +include ../../../CPP/7zip/LzmaDec_gcc.mak + + +OBJS = \ + $(LZMA_DEC_OPT_OBJS) \ + $O/Bcj2.o \ + $O/Bra.o \ + $O/Bra86.o \ + $O/BraIA64.o \ + $O/CpuArch.o \ + $O/Delta.o \ + $O/Lzma2Dec.o \ + $O/LzmaDec.o \ + $O/Ppmd7.o \ + $O/Ppmd7Dec.o \ + $O/7zCrc.o \ + $O/7zCrcOpt.o \ + $O/7zAlloc.o \ + $O/7zArcIn.o \ + $O/7zBuf.o \ + $O/7zBuf2.o \ + $O/7zDec.o \ + $O/7zMain.o \ + $O/7zFile.o \ + $O/7zStream.o \ + + +include ../../7zip_gcc_c.mak diff --git a/deps/LZMA-SDK/C/Util/Lzma/LzmaUtil.c b/deps/LZMA-SDK/C/Util/Lzma/LzmaUtil.c index 62a59079f..2c8208551 100644 --- a/deps/LZMA-SDK/C/Util/Lzma/LzmaUtil.c +++ b/deps/LZMA-SDK/C/Util/Lzma/LzmaUtil.c @@ -1,286 +1,313 @@ -/* LzmaUtil.c -- Test application for LZMA compression -2021-11-01 : Igor Pavlov : Public domain */ - -#include "../../Precomp.h" - -#include -#include -#include - -#include "../../CpuArch.h" - -#include "../../Alloc.h" -#include "../../7zFile.h" -#include "../../7zVersion.h" -#include "../../LzFind.h" -#include "../../LzmaDec.h" -#include "../../LzmaEnc.h" - -static const char * const kCantReadMessage = "Cannot read input file"; -static const char * const kCantWriteMessage = "Cannot write output file"; -static const char * const kCantAllocateMessage = "Cannot allocate memory"; -static const char * const kDataErrorMessage = "Data error"; - -static void PrintHelp(char *buffer) -{ - strcat(buffer, - "\nLZMA-C " MY_VERSION_CPU " : " MY_COPYRIGHT_DATE "\n\n" - "Usage: lzma inputFile outputFile\n" - " e: encode file\n" - " d: decode file\n"); -} - -static int PrintError(char *buffer, const char *message) -{ - strcat(buffer, "\nError: "); - strcat(buffer, message); - strcat(buffer, "\n"); - return 1; -} - -static int PrintError_WRes(char *buffer, const char *message, WRes wres) -{ - strcat(buffer, "\nError: "); - strcat(buffer, message); - sprintf(buffer + strlen(buffer), "\nSystem error code: %d", (unsigned)wres); - #ifndef _WIN32 - { - const char *s = strerror(wres); - if (s) - sprintf(buffer + strlen(buffer), " : %s", s); - } - #endif - strcat(buffer, "\n"); - return 1; -} - -static int PrintErrorNumber(char *buffer, SRes val) -{ - sprintf(buffer + strlen(buffer), "\n7-Zip error code: %d\n", (unsigned)val); - return 1; -} - -static int PrintUserError(char *buffer) -{ - return PrintError(buffer, "Incorrect command"); -} - - -#define IN_BUF_SIZE (1 << 16) -#define OUT_BUF_SIZE (1 << 16) - - -static SRes Decode2(CLzmaDec *state, ISeqOutStream *outStream, ISeqInStream *inStream, - UInt64 unpackSize) -{ - int thereIsSize = (unpackSize != (UInt64)(Int64)-1); - Byte inBuf[IN_BUF_SIZE]; - Byte outBuf[OUT_BUF_SIZE]; - size_t inPos = 0, inSize = 0, outPos = 0; - LzmaDec_Init(state); - for (;;) - { - if (inPos == inSize) - { - inSize = IN_BUF_SIZE; - RINOK(inStream->Read(inStream, inBuf, &inSize)); - inPos = 0; - } - { - SRes res; - SizeT inProcessed = inSize - inPos; - SizeT outProcessed = OUT_BUF_SIZE - outPos; - ELzmaFinishMode finishMode = LZMA_FINISH_ANY; - ELzmaStatus status; - if (thereIsSize && outProcessed > unpackSize) - { - outProcessed = (SizeT)unpackSize; - finishMode = LZMA_FINISH_END; - } - - res = LzmaDec_DecodeToBuf(state, outBuf + outPos, &outProcessed, - inBuf + inPos, &inProcessed, finishMode, &status); - inPos += inProcessed; - outPos += outProcessed; - unpackSize -= outProcessed; - - if (outStream) - if (outStream->Write(outStream, outBuf, outPos) != outPos) - return SZ_ERROR_WRITE; - - outPos = 0; - - if (res != SZ_OK || (thereIsSize && unpackSize == 0)) - return res; - - if (inProcessed == 0 && outProcessed == 0) - { - if (thereIsSize || status != LZMA_STATUS_FINISHED_WITH_MARK) - return SZ_ERROR_DATA; - return res; - } - } - } -} - - -static SRes Decode(ISeqOutStream *outStream, ISeqInStream *inStream) -{ - UInt64 unpackSize; - int i; - SRes res = 0; - - CLzmaDec state; - - /* header: 5 bytes of LZMA properties and 8 bytes of uncompressed size */ - unsigned char header[LZMA_PROPS_SIZE + 8]; - - /* Read and parse header */ - - RINOK(SeqInStream_Read(inStream, header, sizeof(header))); - - unpackSize = 0; - for (i = 0; i < 8; i++) - unpackSize += (UInt64)header[LZMA_PROPS_SIZE + i] << (i * 8); - - LzmaDec_Construct(&state); - RINOK(LzmaDec_Allocate(&state, header, LZMA_PROPS_SIZE, &g_Alloc)); - res = Decode2(&state, outStream, inStream, unpackSize); - LzmaDec_Free(&state, &g_Alloc); - return res; -} - -static SRes Encode(ISeqOutStream *outStream, ISeqInStream *inStream, UInt64 fileSize, char *rs) -{ - CLzmaEncHandle enc; - SRes res; - CLzmaEncProps props; - - UNUSED_VAR(rs); - - enc = LzmaEnc_Create(&g_Alloc); - if (enc == 0) - return SZ_ERROR_MEM; - - LzmaEncProps_Init(&props); - res = LzmaEnc_SetProps(enc, &props); - - if (res == SZ_OK) - { - Byte header[LZMA_PROPS_SIZE + 8]; - size_t headerSize = LZMA_PROPS_SIZE; - int i; - - res = LzmaEnc_WriteProperties(enc, header, &headerSize); - for (i = 0; i < 8; i++) - header[headerSize++] = (Byte)(fileSize >> (8 * i)); - if (outStream->Write(outStream, header, headerSize) != headerSize) - res = SZ_ERROR_WRITE; - else - { - if (res == SZ_OK) - res = LzmaEnc_Encode(enc, outStream, inStream, NULL, &g_Alloc, &g_Alloc); - } - } - LzmaEnc_Destroy(enc, &g_Alloc, &g_Alloc); - return res; -} - - -static int main2(int numArgs, const char *args[], char *rs) -{ - CFileSeqInStream inStream; - CFileOutStream outStream; - char c; - int res; - int encodeMode; - BoolInt useOutFile = False; - - LzFindPrepare(); - - FileSeqInStream_CreateVTable(&inStream); - File_Construct(&inStream.file); - inStream.wres = 0; - - FileOutStream_CreateVTable(&outStream); - File_Construct(&outStream.file); - outStream.wres = 0; - - if (numArgs == 1) - { - PrintHelp(rs); - return 0; - } - - if (numArgs < 3 || numArgs > 4 || strlen(args[1]) != 1) - return PrintUserError(rs); - - c = args[1][0]; - encodeMode = (c == 'e' || c == 'E'); - if (!encodeMode && c != 'd' && c != 'D') - return PrintUserError(rs); - - { - size_t t4 = sizeof(UInt32); - size_t t8 = sizeof(UInt64); - if (t4 != 4 || t8 != 8) - return PrintError(rs, "Incorrect UInt32 or UInt64"); - } - - { - WRes wres = InFile_Open(&inStream.file, args[2]); - if (wres != 0) - return PrintError_WRes(rs, "Cannot open input file", wres); - } - - if (numArgs > 3) - { - WRes wres; - useOutFile = True; - wres = OutFile_Open(&outStream.file, args[3]); - if (wres != 0) - return PrintError_WRes(rs, "Cannot open output file", wres); - } - else if (encodeMode) - PrintUserError(rs); - - if (encodeMode) - { - UInt64 fileSize; - WRes wres = File_GetLength(&inStream.file, &fileSize); - if (wres != 0) - return PrintError_WRes(rs, "Cannot get file length", wres); - res = Encode(&outStream.vt, &inStream.vt, fileSize, rs); - } - else - { - res = Decode(&outStream.vt, useOutFile ? &inStream.vt : NULL); - } - - if (useOutFile) - File_Close(&outStream.file); - File_Close(&inStream.file); - - if (res != SZ_OK) - { - if (res == SZ_ERROR_MEM) - return PrintError(rs, kCantAllocateMessage); - else if (res == SZ_ERROR_DATA) - return PrintError(rs, kDataErrorMessage); - else if (res == SZ_ERROR_WRITE) - return PrintError_WRes(rs, kCantWriteMessage, outStream.wres); - else if (res == SZ_ERROR_READ) - return PrintError_WRes(rs, kCantReadMessage, inStream.wres); - return PrintErrorNumber(rs, res); - } - return 0; -} - - -int MY_CDECL main(int numArgs, const char *args[]) -{ - char rs[1000] = { 0 }; - int res = main2(numArgs, args, rs); - fputs(rs, stdout); - return res; -} +/* LzmaUtil.c -- Test application for LZMA compression +2023-03-07 : Igor Pavlov : Public domain */ + +#include "Precomp.h" + +#include +#include +#include + +#include "../../CpuArch.h" + +#include "../../Alloc.h" +#include "../../7zFile.h" +#include "../../7zVersion.h" +#include "../../LzFind.h" +#include "../../LzmaDec.h" +#include "../../LzmaEnc.h" + +static const char * const kCantReadMessage = "Cannot read input file"; +static const char * const kCantWriteMessage = "Cannot write output file"; +static const char * const kCantAllocateMessage = "Cannot allocate memory"; +static const char * const kDataErrorMessage = "Data error"; + +static void Print(const char *s) +{ + fputs(s, stdout); +} + +static void PrintHelp(void) +{ + Print( + "\n" "LZMA-C " MY_VERSION_CPU " : " MY_COPYRIGHT_DATE + "\n" + "\n" "Usage: lzma inputFile outputFile" + "\n" " e: encode file" + "\n" " d: decode file" + "\n"); +} + +static int PrintError(const char *message) +{ + Print("\nError: "); + Print(message); + Print("\n"); + return 1; +} + +#define CONVERT_INT_TO_STR(charType, tempSize) \ + unsigned char temp[tempSize]; unsigned i = 0; \ + while (val >= 10) { temp[i++] = (unsigned char)('0' + (unsigned)(val % 10)); val /= 10; } \ + *s++ = (charType)('0' + (unsigned)val); \ + while (i != 0) { i--; *s++ = (charType)temp[i]; } \ + *s = 0; \ + return s; + +static char * Convert_unsigned_To_str(unsigned val, char *s) +{ + CONVERT_INT_TO_STR(char, 32) +} + +static void Print_unsigned(unsigned code) +{ + char str[32]; + Convert_unsigned_To_str(code, str); + Print(str); +} + +static int PrintError_WRes(const char *message, WRes wres) +{ + PrintError(message); + Print("\nSystem error code: "); + Print_unsigned((unsigned)wres); + #ifndef _WIN32 + { + const char *s = strerror(wres); + if (s) + { + Print(" : "); + Print(s); + } + } + #endif + Print("\n"); + return 1; +} + +static int PrintErrorNumber(SRes val) +{ + Print("\n7-Zip error code: "); + Print_unsigned((unsigned)val); + Print("\n"); + return 1; +} + +static int PrintUserError(void) +{ + return PrintError("Incorrect command"); +} + + +#define IN_BUF_SIZE (1 << 16) +#define OUT_BUF_SIZE (1 << 16) + + +static SRes Decode2(CLzmaDec *state, ISeqOutStreamPtr outStream, ISeqInStreamPtr inStream, + UInt64 unpackSize) +{ + const int thereIsSize = (unpackSize != (UInt64)(Int64)-1); + Byte inBuf[IN_BUF_SIZE]; + Byte outBuf[OUT_BUF_SIZE]; + size_t inPos = 0, inSize = 0, outPos = 0; + LzmaDec_Init(state); + for (;;) + { + if (inPos == inSize) + { + inSize = IN_BUF_SIZE; + RINOK(inStream->Read(inStream, inBuf, &inSize)) + inPos = 0; + } + { + SRes res; + SizeT inProcessed = inSize - inPos; + SizeT outProcessed = OUT_BUF_SIZE - outPos; + ELzmaFinishMode finishMode = LZMA_FINISH_ANY; + ELzmaStatus status; + if (thereIsSize && outProcessed > unpackSize) + { + outProcessed = (SizeT)unpackSize; + finishMode = LZMA_FINISH_END; + } + + res = LzmaDec_DecodeToBuf(state, outBuf + outPos, &outProcessed, + inBuf + inPos, &inProcessed, finishMode, &status); + inPos += inProcessed; + outPos += outProcessed; + unpackSize -= outProcessed; + + if (outStream) + if (outStream->Write(outStream, outBuf, outPos) != outPos) + return SZ_ERROR_WRITE; + + outPos = 0; + + if (res != SZ_OK || (thereIsSize && unpackSize == 0)) + return res; + + if (inProcessed == 0 && outProcessed == 0) + { + if (thereIsSize || status != LZMA_STATUS_FINISHED_WITH_MARK) + return SZ_ERROR_DATA; + return res; + } + } + } +} + + +static SRes Decode(ISeqOutStreamPtr outStream, ISeqInStreamPtr inStream) +{ + UInt64 unpackSize; + int i; + SRes res = 0; + + CLzmaDec state; + + /* header: 5 bytes of LZMA properties and 8 bytes of uncompressed size */ + unsigned char header[LZMA_PROPS_SIZE + 8]; + + /* Read and parse header */ + + { + size_t size = sizeof(header); + RINOK(SeqInStream_ReadMax(inStream, header, &size)) + if (size != sizeof(header)) + return SZ_ERROR_INPUT_EOF; + } + unpackSize = 0; + for (i = 0; i < 8; i++) + unpackSize += (UInt64)header[LZMA_PROPS_SIZE + i] << (i * 8); + + LzmaDec_CONSTRUCT(&state) + RINOK(LzmaDec_Allocate(&state, header, LZMA_PROPS_SIZE, &g_Alloc)) + res = Decode2(&state, outStream, inStream, unpackSize); + LzmaDec_Free(&state, &g_Alloc); + return res; +} + +static SRes Encode(ISeqOutStreamPtr outStream, ISeqInStreamPtr inStream, UInt64 fileSize) +{ + CLzmaEncHandle enc; + SRes res; + CLzmaEncProps props; + + enc = LzmaEnc_Create(&g_Alloc); + if (enc == 0) + return SZ_ERROR_MEM; + + LzmaEncProps_Init(&props); + res = LzmaEnc_SetProps(enc, &props); + + if (res == SZ_OK) + { + Byte header[LZMA_PROPS_SIZE + 8]; + size_t headerSize = LZMA_PROPS_SIZE; + int i; + + res = LzmaEnc_WriteProperties(enc, header, &headerSize); + for (i = 0; i < 8; i++) + header[headerSize++] = (Byte)(fileSize >> (8 * i)); + if (outStream->Write(outStream, header, headerSize) != headerSize) + res = SZ_ERROR_WRITE; + else + { + if (res == SZ_OK) + res = LzmaEnc_Encode(enc, outStream, inStream, NULL, &g_Alloc, &g_Alloc); + } + } + LzmaEnc_Destroy(enc, &g_Alloc, &g_Alloc); + return res; +} + + +int Z7_CDECL main(int numArgs, const char *args[]) +{ + CFileSeqInStream inStream; + CFileOutStream outStream; + char c; + int res; + int encodeMode; + BoolInt useOutFile = False; + + LzFindPrepare(); + + FileSeqInStream_CreateVTable(&inStream); + File_Construct(&inStream.file); + inStream.wres = 0; + + FileOutStream_CreateVTable(&outStream); + File_Construct(&outStream.file); + outStream.wres = 0; + + if (numArgs == 1) + { + PrintHelp(); + return 0; + } + + if (numArgs < 3 || numArgs > 4 || strlen(args[1]) != 1) + return PrintUserError(); + + c = args[1][0]; + encodeMode = (c == 'e' || c == 'E'); + if (!encodeMode && c != 'd' && c != 'D') + return PrintUserError(); + + /* + { + size_t t4 = sizeof(UInt32); + size_t t8 = sizeof(UInt64); + if (t4 != 4 || t8 != 8) + return PrintError("Incorrect UInt32 or UInt64"); + } + */ + + { + const WRes wres = InFile_Open(&inStream.file, args[2]); + if (wres != 0) + return PrintError_WRes("Cannot open input file", wres); + } + + if (numArgs > 3) + { + WRes wres; + useOutFile = True; + wres = OutFile_Open(&outStream.file, args[3]); + if (wres != 0) + return PrintError_WRes("Cannot open output file", wres); + } + else if (encodeMode) + PrintUserError(); + + if (encodeMode) + { + UInt64 fileSize; + const WRes wres = File_GetLength(&inStream.file, &fileSize); + if (wres != 0) + return PrintError_WRes("Cannot get file length", wres); + res = Encode(&outStream.vt, &inStream.vt, fileSize); + } + else + { + res = Decode(&outStream.vt, useOutFile ? &inStream.vt : NULL); + } + + if (useOutFile) + File_Close(&outStream.file); + File_Close(&inStream.file); + + if (res != SZ_OK) + { + if (res == SZ_ERROR_MEM) + return PrintError(kCantAllocateMessage); + else if (res == SZ_ERROR_DATA) + return PrintError(kDataErrorMessage); + else if (res == SZ_ERROR_WRITE) + return PrintError_WRes(kCantWriteMessage, outStream.wres); + else if (res == SZ_ERROR_READ) + return PrintError_WRes(kCantReadMessage, inStream.wres); + return PrintErrorNumber(res); + } + return 0; +} diff --git a/deps/LZMA-SDK/C/Util/Lzma/LzmaUtil.dsp b/deps/LZMA-SDK/C/Util/Lzma/LzmaUtil.dsp index 4e38e4a65..0815eb56c 100644 --- a/deps/LZMA-SDK/C/Util/Lzma/LzmaUtil.dsp +++ b/deps/LZMA-SDK/C/Util/Lzma/LzmaUtil.dsp @@ -1,172 +1,188 @@ -# Microsoft Developer Studio Project File - Name="LzmaUtil" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=LzmaUtil - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "LzmaUtil.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "LzmaUtil.mak" CFG="LzmaUtil - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "LzmaUtil - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "LzmaUtil - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "LzmaUtil - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MT /W4 /WX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x419 /d "NDEBUG" -# ADD RSC /l 0x419 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"c:\util\7lzma.exe" - -!ELSEIF "$(CFG)" == "LzmaUtil - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /MTd /W4 /WX /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /GZ /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x419 /d "_DEBUG" -# ADD RSC /l 0x419 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /out:"c:\util\7lzma.exe" /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "LzmaUtil - Win32 Release" -# Name "LzmaUtil - Win32 Debug" -# Begin Source File - -SOURCE=..\..\7zFile.c -# End Source File -# Begin Source File - -SOURCE=..\..\7zFile.h -# End Source File -# Begin Source File - -SOURCE=..\..\7zStream.c -# End Source File -# Begin Source File - -SOURCE=..\..\7zTypes.h -# End Source File -# Begin Source File - -SOURCE=..\..\7zVersion.h -# End Source File -# Begin Source File - -SOURCE=..\..\Alloc.c -# End Source File -# Begin Source File - -SOURCE=..\..\Alloc.h -# End Source File -# Begin Source File - -SOURCE=..\..\CpuArch.h -# End Source File -# Begin Source File - -SOURCE=..\..\LzFind.c -# End Source File -# Begin Source File - -SOURCE=..\..\LzFind.h -# End Source File -# Begin Source File - -SOURCE=..\..\LzFindMt.c -# End Source File -# Begin Source File - -SOURCE=..\..\LzFindMt.h -# End Source File -# Begin Source File - -SOURCE=..\..\LzFindOpt.c -# End Source File -# Begin Source File - -SOURCE=..\..\LzHash.h -# End Source File -# Begin Source File - -SOURCE=..\..\LzmaDec.c -# End Source File -# Begin Source File - -SOURCE=..\..\LzmaDec.h -# End Source File -# Begin Source File - -SOURCE=..\..\LzmaEnc.c -# End Source File -# Begin Source File - -SOURCE=..\..\LzmaEnc.h -# End Source File -# Begin Source File - -SOURCE=.\LzmaUtil.c -# End Source File -# Begin Source File - -SOURCE=..\..\Threads.c -# End Source File -# Begin Source File - -SOURCE=..\..\Threads.h -# End Source File -# End Target -# End Project +# Microsoft Developer Studio Project File - Name="LzmaUtil" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=LzmaUtil - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "LzmaUtil.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "LzmaUtil.mak" CFG="LzmaUtil - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "LzmaUtil - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "LzmaUtil - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "LzmaUtil - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MT /W4 /WX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c +# SUBTRACT CPP /YX +# ADD BASE RSC /l 0x419 /d "NDEBUG" +# ADD RSC /l 0x419 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"c:\util\7lzma.exe" + +!ELSEIF "$(CFG)" == "LzmaUtil - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD CPP /nologo /MTd /W4 /WX /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /GZ /c +# SUBTRACT CPP /YX +# ADD BASE RSC /l 0x419 /d "_DEBUG" +# ADD RSC /l 0x419 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /out:"c:\util\7lzma.exe" /pdbtype:sept + +!ENDIF + +# Begin Target + +# Name "LzmaUtil - Win32 Release" +# Name "LzmaUtil - Win32 Debug" +# Begin Source File + +SOURCE=..\..\7zFile.c +# End Source File +# Begin Source File + +SOURCE=..\..\7zFile.h +# End Source File +# Begin Source File + +SOURCE=..\..\7zStream.c +# End Source File +# Begin Source File + +SOURCE=..\..\7zTypes.h +# End Source File +# Begin Source File + +SOURCE=..\..\7zVersion.h +# End Source File +# Begin Source File + +SOURCE=..\..\7zWindows.h +# End Source File +# Begin Source File + +SOURCE=..\..\Alloc.c +# End Source File +# Begin Source File + +SOURCE=..\..\Alloc.h +# End Source File +# Begin Source File + +SOURCE=..\..\Compiler.h +# End Source File +# Begin Source File + +SOURCE=..\..\CpuArch.h +# End Source File +# Begin Source File + +SOURCE=..\..\LzFind.c +# End Source File +# Begin Source File + +SOURCE=..\..\LzFind.h +# End Source File +# Begin Source File + +SOURCE=..\..\LzFindMt.c +# End Source File +# Begin Source File + +SOURCE=..\..\LzFindMt.h +# End Source File +# Begin Source File + +SOURCE=..\..\LzFindOpt.c +# End Source File +# Begin Source File + +SOURCE=..\..\LzHash.h +# End Source File +# Begin Source File + +SOURCE=..\..\LzmaDec.c +# End Source File +# Begin Source File + +SOURCE=..\..\LzmaDec.h +# End Source File +# Begin Source File + +SOURCE=..\..\LzmaEnc.c +# End Source File +# Begin Source File + +SOURCE=..\..\LzmaEnc.h +# End Source File +# Begin Source File + +SOURCE=.\LzmaUtil.c +# End Source File +# Begin Source File + +SOURCE=..\..\Precomp.h +# End Source File +# Begin Source File + +SOURCE=.\Precomp.h +# End Source File +# Begin Source File + +SOURCE=..\..\Threads.c +# End Source File +# Begin Source File + +SOURCE=..\..\Threads.h +# End Source File +# End Target +# End Project diff --git a/deps/LZMA-SDK/C/Util/Lzma/LzmaUtil.dsw b/deps/LZMA-SDK/C/Util/Lzma/LzmaUtil.dsw index c52eaf6d0..f43548752 100644 --- a/deps/LZMA-SDK/C/Util/Lzma/LzmaUtil.dsw +++ b/deps/LZMA-SDK/C/Util/Lzma/LzmaUtil.dsw @@ -1,29 +1,29 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "LzmaUtil"=.\LzmaUtil.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "LzmaUtil"=.\LzmaUtil.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/deps/LZMA-SDK/C/Util/Lzma/Precomp.h b/deps/LZMA-SDK/C/Util/Lzma/Precomp.h new file mode 100644 index 000000000..52b87ea64 --- /dev/null +++ b/deps/LZMA-SDK/C/Util/Lzma/Precomp.h @@ -0,0 +1,13 @@ +/* Precomp.h -- Precomp +2024-01-23 : Igor Pavlov : Public domain */ + +// #ifndef ZIP7_INC_PRECOMP_LOC_H +// #define ZIP7_INC_PRECOMP_LOC_H + +#if defined(_MSC_VER) && _MSC_VER >= 1800 +#pragma warning(disable : 4464) // relative include path contains '..' +#endif + +#include "../../Precomp.h" + +// #endif diff --git a/deps/LZMA-SDK/C/Util/Lzma/makefile b/deps/LZMA-SDK/C/Util/Lzma/makefile index 7813bdb05..9d971f666 100644 --- a/deps/LZMA-SDK/C/Util/Lzma/makefile +++ b/deps/LZMA-SDK/C/Util/Lzma/makefile @@ -1,30 +1,30 @@ -# MY_STATIC_LINK=1 -PROG = LZMAc.exe - -CFLAGS = $(CFLAGS) \ - -LIB_OBJS = \ - $O\LzmaUtil.obj \ - -C_OBJS = \ - $O\Alloc.obj \ - $O\CpuArch.obj \ - $O\LzFind.obj \ - $O\LzFindMt.obj \ - $O\LzFindOpt.obj \ - $O\LzmaDec.obj \ - $O\LzmaEnc.obj \ - $O\7zFile.obj \ - $O\7zStream.obj \ - $O\Threads.obj \ - -OBJS = \ - $(LIB_OBJS) \ - $(C_OBJS) \ - -!include "../../../CPP/Build.mak" - -$(LIB_OBJS): $(*B).c - $(COMPL_O2) -$(C_OBJS): ../../$(*B).c - $(COMPL_O2) +# MY_STATIC_LINK=1 +PROG = LZMAc.exe + +CFLAGS = $(CFLAGS) \ + +LIB_OBJS = \ + $O\LzmaUtil.obj \ + +C_OBJS = \ + $O\Alloc.obj \ + $O\CpuArch.obj \ + $O\LzFind.obj \ + $O\LzFindMt.obj \ + $O\LzFindOpt.obj \ + $O\LzmaDec.obj \ + $O\LzmaEnc.obj \ + $O\7zFile.obj \ + $O\7zStream.obj \ + $O\Threads.obj \ + +OBJS = \ + $(LIB_OBJS) \ + $(C_OBJS) \ + +!include "../../../CPP/Build.mak" + +$(LIB_OBJS): $(*B).c + $(COMPL_O2) +$(C_OBJS): ../../$(*B).c + $(COMPL_O2) diff --git a/deps/LZMA-SDK/C/Util/Lzma/makefile.gcc b/deps/LZMA-SDK/C/Util/Lzma/makefile.gcc index 2acb0b808..6ce77a0f2 100644 --- a/deps/LZMA-SDK/C/Util/Lzma/makefile.gcc +++ b/deps/LZMA-SDK/C/Util/Lzma/makefile.gcc @@ -1,21 +1,21 @@ -PROG = 7lzma - -include ../../../CPP/7zip/LzmaDec_gcc.mak - - -OBJS = \ - $(LZMA_DEC_OPT_OBJS) \ - $O/7zFile.o \ - $O/7zStream.o \ - $O/Alloc.o \ - $O/CpuArch.o \ - $O/LzFind.o \ - $O/LzFindMt.o \ - $O/LzFindOpt.o \ - $O/LzmaDec.o \ - $O/LzmaEnc.o \ - $O/LzmaUtil.o \ - $O/Threads.o \ - - -include ../../7zip_gcc_c.mak +PROG = 7lzma + +include ../../../CPP/7zip/LzmaDec_gcc.mak + + +OBJS = \ + $(LZMA_DEC_OPT_OBJS) \ + $O/7zFile.o \ + $O/7zStream.o \ + $O/Alloc.o \ + $O/CpuArch.o \ + $O/LzFind.o \ + $O/LzFindMt.o \ + $O/LzFindOpt.o \ + $O/LzmaDec.o \ + $O/LzmaEnc.o \ + $O/LzmaUtil.o \ + $O/Threads.o \ + + +include ../../7zip_gcc_c.mak diff --git a/deps/LZMA-SDK/C/Util/LzmaLib/LzmaLib.def b/deps/LZMA-SDK/C/Util/LzmaLib/LzmaLib.def index 8bc6add93..43b959778 100644 --- a/deps/LZMA-SDK/C/Util/LzmaLib/LzmaLib.def +++ b/deps/LZMA-SDK/C/Util/LzmaLib/LzmaLib.def @@ -1,4 +1,4 @@ -EXPORTS - LzmaCompress - LzmaUncompress - +EXPORTS + LzmaCompress + LzmaUncompress + diff --git a/deps/LZMA-SDK/C/Util/LzmaLib/LzmaLib.dsp b/deps/LZMA-SDK/C/Util/LzmaLib/LzmaLib.dsp index 6ce91dcd2..431c0241b 100644 --- a/deps/LZMA-SDK/C/Util/LzmaLib/LzmaLib.dsp +++ b/deps/LZMA-SDK/C/Util/LzmaLib/LzmaLib.dsp @@ -1,182 +1,202 @@ -# Microsoft Developer Studio Project File - Name="LzmaLib" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=LzmaLib - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "LzmaLib.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "LzmaLib.mak" CFG="LzmaLib - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "LzmaLib - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "LzmaLib - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "LzmaLib - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LZMALIB_EXPORTS" /YX /FD /c -# ADD CPP /nologo /Gr /MT /W3 /O2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LZMALIB_EXPORTS" /FD /c -# SUBTRACT CPP /YX -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x419 /d "NDEBUG" -# ADD RSC /l 0x419 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 /out:"C:\Util\LZMA.dll" /opt:NOWIN98 -# SUBTRACT LINK32 /pdb:none - -!ELSEIF "$(CFG)" == "LzmaLib - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LZMALIB_EXPORTS" /YX /FD /GZ /c -# ADD CPP /nologo /MTd /W3 /Gm /ZI /Od /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LZMALIB_EXPORTS" /D "COMPRESS_MF_MT" /FD /GZ /c -# SUBTRACT CPP /YX -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x419 /d "_DEBUG" -# ADD RSC /l 0x419 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /out:"C:\Util\LZMA.dll" /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "LzmaLib - Win32 Release" -# Name "LzmaLib - Win32 Debug" -# Begin Group "Spec" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=.\LzmaLib.def -# End Source File -# Begin Source File - -SOURCE=.\LzmaLibExports.c -# End Source File -# End Group -# Begin Source File - -SOURCE=..\..\7zTypes.h -# End Source File -# Begin Source File - -SOURCE=..\..\Alloc.c -# End Source File -# Begin Source File - -SOURCE=..\..\Alloc.h -# End Source File -# Begin Source File - -SOURCE=..\..\IStream.h -# End Source File -# Begin Source File - -SOURCE=..\..\LzFind.c -# End Source File -# Begin Source File - -SOURCE=..\..\LzFind.h -# End Source File -# Begin Source File - -SOURCE=..\..\LzFindMt.c -# End Source File -# Begin Source File - -SOURCE=..\..\LzFindMt.h -# End Source File -# Begin Source File - -SOURCE=..\..\LzFindOpt.c -# End Source File -# Begin Source File - -SOURCE=..\..\LzHash.h -# End Source File -# Begin Source File - -SOURCE=..\..\LzmaDec.c -# End Source File -# Begin Source File - -SOURCE=..\..\LzmaDec.h -# End Source File -# Begin Source File - -SOURCE=..\..\LzmaEnc.c -# End Source File -# Begin Source File - -SOURCE=..\..\LzmaEnc.h -# End Source File -# Begin Source File - -SOURCE=..\..\LzmaLib.c -# End Source File -# Begin Source File - -SOURCE=..\..\LzmaLib.h -# End Source File -# Begin Source File - -SOURCE=.\resource.rc -# End Source File -# Begin Source File - -SOURCE=..\..\Threads.c -# End Source File -# Begin Source File - -SOURCE=..\..\Threads.h -# End Source File -# End Target -# End Project +# Microsoft Developer Studio Project File - Name="LzmaLib" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 + +CFG=LzmaLib - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "LzmaLib.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "LzmaLib.mak" CFG="LzmaLib - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "LzmaLib - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "LzmaLib - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "LzmaLib - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LZMALIB_EXPORTS" /YX /FD /c +# ADD CPP /nologo /Gr /MT /W3 /O2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LZMALIB_EXPORTS" /FD /c +# SUBTRACT CPP /YX +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x419 /d "NDEBUG" +# ADD RSC /l 0x419 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 /out:"C:\Util\LZMA.dll" /opt:NOWIN98 +# SUBTRACT LINK32 /pdb:none + +!ELSEIF "$(CFG)" == "LzmaLib - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LZMALIB_EXPORTS" /YX /FD /GZ /c +# ADD CPP /nologo /MTd /W3 /Gm /ZI /Od /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LZMALIB_EXPORTS" /D "COMPRESS_MF_MT" /FD /GZ /c +# SUBTRACT CPP /YX +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x419 /d "_DEBUG" +# ADD RSC /l 0x419 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /out:"C:\Util\LZMA.dll" /pdbtype:sept + +!ENDIF + +# Begin Target + +# Name "LzmaLib - Win32 Release" +# Name "LzmaLib - Win32 Debug" +# Begin Group "Spec" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=.\LzmaLib.def +# End Source File +# Begin Source File + +SOURCE=.\LzmaLibExports.c +# End Source File +# Begin Source File + +SOURCE=.\Precomp.h +# End Source File +# End Group +# Begin Source File + +SOURCE=..\..\7zTypes.h +# End Source File +# Begin Source File + +SOURCE=..\..\7zWindows.h +# End Source File +# Begin Source File + +SOURCE=..\..\Alloc.c +# End Source File +# Begin Source File + +SOURCE=..\..\Alloc.h +# End Source File +# Begin Source File + +SOURCE=..\..\Compiler.h +# End Source File +# Begin Source File + +SOURCE=..\..\CpuArch.h +# End Source File +# Begin Source File + +SOURCE=..\..\IStream.h +# End Source File +# Begin Source File + +SOURCE=..\..\LzFind.c +# End Source File +# Begin Source File + +SOURCE=..\..\LzFind.h +# End Source File +# Begin Source File + +SOURCE=..\..\LzFindMt.c +# End Source File +# Begin Source File + +SOURCE=..\..\LzFindMt.h +# End Source File +# Begin Source File + +SOURCE=..\..\LzFindOpt.c +# End Source File +# Begin Source File + +SOURCE=..\..\LzHash.h +# End Source File +# Begin Source File + +SOURCE=..\..\LzmaDec.c +# End Source File +# Begin Source File + +SOURCE=..\..\LzmaDec.h +# End Source File +# Begin Source File + +SOURCE=..\..\LzmaEnc.c +# End Source File +# Begin Source File + +SOURCE=..\..\LzmaEnc.h +# End Source File +# Begin Source File + +SOURCE=..\..\LzmaLib.c +# End Source File +# Begin Source File + +SOURCE=..\..\LzmaLib.h +# End Source File +# Begin Source File + +SOURCE=..\..\Precomp.h +# End Source File +# Begin Source File + +SOURCE=.\resource.rc +# End Source File +# Begin Source File + +SOURCE=..\..\Threads.c +# End Source File +# Begin Source File + +SOURCE=..\..\Threads.h +# End Source File +# End Target +# End Project diff --git a/deps/LZMA-SDK/C/Util/LzmaLib/LzmaLib.dsw b/deps/LZMA-SDK/C/Util/LzmaLib/LzmaLib.dsw index 6faf33365..f6c55593f 100644 --- a/deps/LZMA-SDK/C/Util/LzmaLib/LzmaLib.dsw +++ b/deps/LZMA-SDK/C/Util/LzmaLib/LzmaLib.dsw @@ -1,29 +1,29 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "LzmaLib"=.\LzmaLib.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "LzmaLib"=.\LzmaLib.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/deps/LZMA-SDK/C/Util/LzmaLib/LzmaLibExports.c b/deps/LZMA-SDK/C/Util/LzmaLib/LzmaLibExports.c index 4a28a9a6b..10318eb45 100644 --- a/deps/LZMA-SDK/C/Util/LzmaLib/LzmaLibExports.c +++ b/deps/LZMA-SDK/C/Util/LzmaLib/LzmaLibExports.c @@ -1,14 +1,15 @@ -/* LzmaLibExports.c -- LZMA library DLL Entry point -2015-11-08 : Igor Pavlov : Public domain */ - -#include "../../Precomp.h" - -#include - -BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved) -{ - UNUSED_VAR(hInstance); - UNUSED_VAR(dwReason); - UNUSED_VAR(lpReserved); - return TRUE; -} +/* LzmaLibExports.c -- LZMA library DLL Entry point +2023-03-05 : Igor Pavlov : Public domain */ + +#include "Precomp.h" + +#include "../../7zWindows.h" + +BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved); +BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved) +{ + UNUSED_VAR(hInstance) + UNUSED_VAR(dwReason) + UNUSED_VAR(lpReserved) + return TRUE; +} diff --git a/deps/LZMA-SDK/C/Util/LzmaLib/Precomp.c b/deps/LZMA-SDK/C/Util/LzmaLib/Precomp.c new file mode 100644 index 000000000..34b60f8fc --- /dev/null +++ b/deps/LZMA-SDK/C/Util/LzmaLib/Precomp.c @@ -0,0 +1,4 @@ +/* Precomp.c -- StdAfx +2013-01-21 : Igor Pavlov : Public domain */ + +#include "Precomp.h" diff --git a/deps/LZMA-SDK/C/Util/LzmaLib/Precomp.h b/deps/LZMA-SDK/C/Util/LzmaLib/Precomp.h new file mode 100644 index 000000000..52b87ea64 --- /dev/null +++ b/deps/LZMA-SDK/C/Util/LzmaLib/Precomp.h @@ -0,0 +1,13 @@ +/* Precomp.h -- Precomp +2024-01-23 : Igor Pavlov : Public domain */ + +// #ifndef ZIP7_INC_PRECOMP_LOC_H +// #define ZIP7_INC_PRECOMP_LOC_H + +#if defined(_MSC_VER) && _MSC_VER >= 1800 +#pragma warning(disable : 4464) // relative include path contains '..' +#endif + +#include "../../Precomp.h" + +// #endif diff --git a/deps/LZMA-SDK/C/Util/LzmaLib/makefile b/deps/LZMA-SDK/C/Util/LzmaLib/makefile index b36f1de09..df56c113d 100644 --- a/deps/LZMA-SDK/C/Util/LzmaLib/makefile +++ b/deps/LZMA-SDK/C/Util/LzmaLib/makefile @@ -1,36 +1,59 @@ -MY_STATIC_LINK=1 -SLIB = sLZMA.lib -PROG = LZMA.dll -SLIBPATH = $O\$(SLIB) - -DEF_FILE = LzmaLib.def -CFLAGS = $(CFLAGS) \ - -LIB_OBJS = \ - $O\LzmaLibExports.obj \ - -C_OBJS = \ - $O\Alloc.obj \ - $O\CpuArch.obj \ - $O\LzFind.obj \ - $O\LzFindMt.obj \ - $O\LzFindOpt.obj \ - $O\LzmaDec.obj \ - $O\LzmaEnc.obj \ - $O\LzmaLib.obj \ - $O\Threads.obj \ - -OBJS = \ - $(LIB_OBJS) \ - $(C_OBJS) \ - $O\resource.res - -!include "../../../CPP/Build.mak" - -$(SLIBPATH): $O $(OBJS) - lib -out:$(SLIBPATH) $(OBJS) $(LIBS) - -$(LIB_OBJS): $(*B).c - $(COMPL_O2) -$(C_OBJS): ../../$(*B).c - $(COMPL_O2) +MY_STATIC_LINK=1 +SLIB = sLZMA.lib +PROG = LZMA.dll +SLIBPATH = $O\$(SLIB) + +DEF_FILE = LzmaLib.def +CFLAGS = $(CFLAGS) \ + +LIB_OBJS = \ + $O\LzmaLibExports.obj \ + +C_OBJS = \ + $O\Alloc.obj \ + $O\CpuArch.obj \ + $O\LzFind.obj \ + $O\LzFindMt.obj \ + $O\LzmaDec.obj \ + $O\LzmaEnc.obj \ + $O\LzmaLib.obj \ + $O\Threads.obj \ + +!include "../../../CPP/7zip/LzFindOpt.mak" +!include "../../../CPP/7zip/LzmaDec.mak" + +OBJS = \ + $O\Precomp.obj \ + $(LIB_OBJS) \ + $(C_OBJS) \ + $(ASM_OBJS) \ + $O\resource.res + +!include "../../../CPP/Build.mak" + +$(SLIBPATH): $O $(OBJS) + lib -out:$(SLIBPATH) $(OBJS) $(LIBS) + + +MAK_SINGLE_FILE = 1 + +$O\Precomp.obj: Precomp.c + $(CCOMPL_PCH) + +!IFDEF MAK_SINGLE_FILE + +$(LIB_OBJS): $(*B).c + $(CCOMPL_USE) +$(C_OBJS): ../../$(*B).c + $(CCOMPL_USE) + +!ELSE + +{.}.c{$O}.obj:: + $(CCOMPLB_USE) +{../../../C}.c{$O}.obj:: + $(CCOMPLB_USE) + +!ENDIF + +!include "../../Asm_c.mak" diff --git a/deps/LZMA-SDK/C/Util/LzmaLib/resource.rc b/deps/LZMA-SDK/C/Util/LzmaLib/resource.rc index 674832e05..d95e3f358 100644 --- a/deps/LZMA-SDK/C/Util/LzmaLib/resource.rc +++ b/deps/LZMA-SDK/C/Util/LzmaLib/resource.rc @@ -1,3 +1,3 @@ -#include "../../7zVersion.rc" - -MY_VERSION_INFO_DLL("LZMA library", "LZMA") +#include "../../7zVersion.rc" + +MY_VERSION_INFO_DLL("LZMA library", "LZMA") diff --git a/deps/LZMA-SDK/C/Util/SfxSetup/Precomp.c b/deps/LZMA-SDK/C/Util/SfxSetup/Precomp.c index 01605e3c2..34b60f8fc 100644 --- a/deps/LZMA-SDK/C/Util/SfxSetup/Precomp.c +++ b/deps/LZMA-SDK/C/Util/SfxSetup/Precomp.c @@ -1,4 +1,4 @@ -/* Precomp.c -- StdAfx -2013-01-21 : Igor Pavlov : Public domain */ - -#include "Precomp.h" +/* Precomp.c -- StdAfx +2013-01-21 : Igor Pavlov : Public domain */ + +#include "Precomp.h" diff --git a/deps/LZMA-SDK/C/Util/SfxSetup/Precomp.h b/deps/LZMA-SDK/C/Util/SfxSetup/Precomp.h index 588a66f7e..52b87ea64 100644 --- a/deps/LZMA-SDK/C/Util/SfxSetup/Precomp.h +++ b/deps/LZMA-SDK/C/Util/SfxSetup/Precomp.h @@ -1,10 +1,13 @@ -/* Precomp.h -- StdAfx -2013-06-16 : Igor Pavlov : Public domain */ - -#ifndef __7Z_PRECOMP_H -#define __7Z_PRECOMP_H - -#include "../../Compiler.h" -#include "../../7zTypes.h" - -#endif +/* Precomp.h -- Precomp +2024-01-23 : Igor Pavlov : Public domain */ + +// #ifndef ZIP7_INC_PRECOMP_LOC_H +// #define ZIP7_INC_PRECOMP_LOC_H + +#if defined(_MSC_VER) && _MSC_VER >= 1800 +#pragma warning(disable : 4464) // relative include path contains '..' +#endif + +#include "../../Precomp.h" + +// #endif diff --git a/deps/LZMA-SDK/C/Util/SfxSetup/SfxSetup.c b/deps/LZMA-SDK/C/Util/SfxSetup/SfxSetup.c index ef19aeac5..11af9a06c 100644 --- a/deps/LZMA-SDK/C/Util/SfxSetup/SfxSetup.c +++ b/deps/LZMA-SDK/C/Util/SfxSetup/SfxSetup.c @@ -1,640 +1,657 @@ -/* SfxSetup.c - 7z SFX Setup -2019-02-02 : Igor Pavlov : Public domain */ - -#include "Precomp.h" - -#ifndef UNICODE -#define UNICODE -#endif - -#ifndef _UNICODE -#define _UNICODE -#endif - -#ifdef _CONSOLE -#include -#endif - -#include "../../7z.h" -#include "../../7zAlloc.h" -#include "../../7zCrc.h" -#include "../../7zFile.h" -#include "../../CpuArch.h" -#include "../../DllSecur.h" - -#define k_EXE_ExtIndex 2 - -#define kInputBufSize ((size_t)1 << 18) - -static const char * const kExts[] = -{ - "bat" - , "cmd" - , "exe" - , "inf" - , "msi" - #ifdef UNDER_CE - , "cab" - #endif - , "html" - , "htm" -}; - -static const char * const kNames[] = -{ - "setup" - , "install" - , "run" - , "start" -}; - -static unsigned FindExt(const wchar_t *s, unsigned *extLen) -{ - unsigned len = (unsigned)wcslen(s); - unsigned i; - for (i = len; i > 0; i--) - { - if (s[i - 1] == '.') - { - *extLen = len - i; - return i - 1; - } - } - *extLen = 0; - return len; -} - -#define MAKE_CHAR_UPPER(c) ((((c) >= 'a' && (c) <= 'z') ? (c) -= 0x20 : (c))) - -static unsigned FindItem(const char * const *items, unsigned num, const wchar_t *s, unsigned len) -{ - unsigned i; - for (i = 0; i < num; i++) - { - const char *item = items[i]; - unsigned itemLen = (unsigned)strlen(item); - unsigned j; - if (len != itemLen) - continue; - for (j = 0; j < len; j++) - { - unsigned c = (Byte)item[j]; - if (c != s[j] && MAKE_CHAR_UPPER(c) != s[j]) - break; - } - if (j == len) - return i; - } - return i; -} - -#ifdef _CONSOLE -static BOOL WINAPI HandlerRoutine(DWORD ctrlType) -{ - UNUSED_VAR(ctrlType); - return TRUE; -} -#endif - -static void PrintErrorMessage(const char *message) -{ - #ifdef _CONSOLE - printf("\n7-Zip Error: %s\n", message); - #else - #ifdef UNDER_CE - WCHAR messageW[256 + 4]; - unsigned i; - for (i = 0; i < 256 && message[i] != 0; i++) - messageW[i] = message[i]; - messageW[i] = 0; - MessageBoxW(0, messageW, L"7-Zip Error", MB_ICONERROR); - #else - MessageBoxA(0, message, "7-Zip Error", MB_ICONERROR); - #endif - #endif -} - -static WRes MyCreateDir(const WCHAR *name) -{ - return CreateDirectoryW(name, NULL) ? 0 : GetLastError(); -} - -#ifdef UNDER_CE -#define kBufferSize (1 << 13) -#else -#define kBufferSize (1 << 15) -#endif - -#define kSignatureSearchLimit (1 << 22) - -static BoolInt FindSignature(CSzFile *stream, UInt64 *resPos) -{ - Byte buf[kBufferSize]; - size_t numPrevBytes = 0; - *resPos = 0; - for (;;) - { - size_t processed, pos; - if (*resPos > kSignatureSearchLimit) - return False; - processed = kBufferSize - numPrevBytes; - if (File_Read(stream, buf + numPrevBytes, &processed) != 0) - return False; - processed += numPrevBytes; - if (processed < k7zStartHeaderSize || - (processed == k7zStartHeaderSize && numPrevBytes != 0)) - return False; - processed -= k7zStartHeaderSize; - for (pos = 0; pos <= processed; pos++) - { - for (; pos <= processed && buf[pos] != '7'; pos++); - if (pos > processed) - break; - if (memcmp(buf + pos, k7zSignature, k7zSignatureSize) == 0) - if (CrcCalc(buf + pos + 12, 20) == GetUi32(buf + pos + 8)) - { - *resPos += pos; - return True; - } - } - *resPos += processed; - numPrevBytes = k7zStartHeaderSize; - memmove(buf, buf + processed, k7zStartHeaderSize); - } -} - -static BoolInt DoesFileOrDirExist(const WCHAR *path) -{ - WIN32_FIND_DATAW fd; - HANDLE handle; - handle = FindFirstFileW(path, &fd); - if (handle == INVALID_HANDLE_VALUE) - return False; - FindClose(handle); - return True; -} - -static WRes RemoveDirWithSubItems(WCHAR *path) -{ - WIN32_FIND_DATAW fd; - HANDLE handle; - WRes res = 0; - size_t len = wcslen(path); - wcscpy(path + len, L"*"); - handle = FindFirstFileW(path, &fd); - path[len] = L'\0'; - if (handle == INVALID_HANDLE_VALUE) - return GetLastError(); - - for (;;) - { - if (wcscmp(fd.cFileName, L".") != 0 && - wcscmp(fd.cFileName, L"..") != 0) - { - wcscpy(path + len, fd.cFileName); - if ((fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0) - { - wcscat(path, WSTRING_PATH_SEPARATOR); - res = RemoveDirWithSubItems(path); - } - else - { - SetFileAttributesW(path, 0); - if (DeleteFileW(path) == 0) - res = GetLastError(); - } - - if (res != 0) - break; - } - - if (!FindNextFileW(handle, &fd)) - { - res = GetLastError(); - if (res == ERROR_NO_MORE_FILES) - res = 0; - break; - } - } - - path[len] = L'\0'; - FindClose(handle); - if (res == 0) - { - if (!RemoveDirectoryW(path)) - res = GetLastError(); - } - return res; -} - -#ifdef _CONSOLE -int MY_CDECL main() -#else -int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, - #ifdef UNDER_CE - LPWSTR - #else - LPSTR - #endif - lpCmdLine, int nCmdShow) -#endif -{ - CFileInStream archiveStream; - CLookToRead2 lookStream; - CSzArEx db; - SRes res = SZ_OK; - ISzAlloc allocImp; - ISzAlloc allocTempImp; - WCHAR sfxPath[MAX_PATH + 2]; - WCHAR path[MAX_PATH * 3 + 2]; - #ifndef UNDER_CE - WCHAR workCurDir[MAX_PATH + 32]; - #endif - size_t pathLen; - DWORD winRes; - const wchar_t *cmdLineParams; - const char *errorMessage = NULL; - BoolInt useShellExecute = True; - DWORD exitCode = 0; - - LoadSecurityDlls(); - - #ifdef _CONSOLE - SetConsoleCtrlHandler(HandlerRoutine, TRUE); - #else - UNUSED_VAR(hInstance); - UNUSED_VAR(hPrevInstance); - UNUSED_VAR(lpCmdLine); - UNUSED_VAR(nCmdShow); - #endif - - CrcGenerateTable(); - - allocImp.Alloc = SzAlloc; - allocImp.Free = SzFree; - - allocTempImp.Alloc = SzAllocTemp; - allocTempImp.Free = SzFreeTemp; - - FileInStream_CreateVTable(&archiveStream); - LookToRead2_CreateVTable(&lookStream, False); - lookStream.buf = NULL; - - winRes = GetModuleFileNameW(NULL, sfxPath, MAX_PATH); - if (winRes == 0 || winRes > MAX_PATH) - return 1; - { - cmdLineParams = GetCommandLineW(); - #ifndef UNDER_CE - { - BoolInt quoteMode = False; - for (;; cmdLineParams++) - { - wchar_t c = *cmdLineParams; - if (c == L'\"') - quoteMode = !quoteMode; - else if (c == 0 || (c == L' ' && !quoteMode)) - break; - } - } - #endif - } - - { - unsigned i; - DWORD d; - winRes = GetTempPathW(MAX_PATH, path); - if (winRes == 0 || winRes > MAX_PATH) - return 1; - pathLen = wcslen(path); - d = (GetTickCount() << 12) ^ (GetCurrentThreadId() << 14) ^ GetCurrentProcessId(); - - for (i = 0;; i++, d += GetTickCount()) - { - if (i >= 100) - { - res = SZ_ERROR_FAIL; - break; - } - wcscpy(path + pathLen, L"7z"); - - { - wchar_t *s = path + wcslen(path); - UInt32 value = d; - unsigned k; - for (k = 0; k < 8; k++) - { - unsigned t = value & 0xF; - value >>= 4; - s[7 - k] = (wchar_t)((t < 10) ? ('0' + t) : ('A' + (t - 10))); - } - s[k] = '\0'; - } - - if (DoesFileOrDirExist(path)) - continue; - if (CreateDirectoryW(path, NULL)) - { - wcscat(path, WSTRING_PATH_SEPARATOR); - pathLen = wcslen(path); - break; - } - if (GetLastError() != ERROR_ALREADY_EXISTS) - { - res = SZ_ERROR_FAIL; - break; - } - } - - #ifndef UNDER_CE - wcscpy(workCurDir, path); - #endif - if (res != SZ_OK) - errorMessage = "Can't create temp folder"; - } - - if (res != SZ_OK) - { - if (!errorMessage) - errorMessage = "Error"; - PrintErrorMessage(errorMessage); - return 1; - } - - if (InFile_OpenW(&archiveStream.file, sfxPath) != 0) - { - errorMessage = "can not open input file"; - res = SZ_ERROR_FAIL; - } - else - { - UInt64 pos = 0; - if (!FindSignature(&archiveStream.file, &pos)) - res = SZ_ERROR_FAIL; - else if (File_Seek(&archiveStream.file, (Int64 *)&pos, SZ_SEEK_SET) != 0) - res = SZ_ERROR_FAIL; - if (res != 0) - errorMessage = "Can't find 7z archive"; - } - - if (res == SZ_OK) - { - lookStream.buf = (Byte *)ISzAlloc_Alloc(&allocImp, kInputBufSize); - if (!lookStream.buf) - res = SZ_ERROR_MEM; - else - { - lookStream.bufSize = kInputBufSize; - lookStream.realStream = &archiveStream.vt; - LookToRead2_Init(&lookStream); - } - } - - SzArEx_Init(&db); - - if (res == SZ_OK) - { - res = SzArEx_Open(&db, &lookStream.vt, &allocImp, &allocTempImp); - } - - if (res == SZ_OK) - { - UInt32 executeFileIndex = (UInt32)(Int32)-1; - UInt32 minPrice = 1 << 30; - UInt32 i; - UInt32 blockIndex = 0xFFFFFFFF; /* it can have any value before first call (if outBuffer = 0) */ - Byte *outBuffer = 0; /* it must be 0 before first call for each new archive. */ - size_t outBufferSize = 0; /* it can have any value before first call (if outBuffer = 0) */ - - for (i = 0; i < db.NumFiles; i++) - { - size_t offset = 0; - size_t outSizeProcessed = 0; - WCHAR *temp; - - if (SzArEx_GetFileNameUtf16(&db, i, NULL) >= MAX_PATH) - { - res = SZ_ERROR_FAIL; - break; - } - - temp = path + pathLen; - - SzArEx_GetFileNameUtf16(&db, i, (UInt16 *)temp); - { - res = SzArEx_Extract(&db, &lookStream.vt, i, - &blockIndex, &outBuffer, &outBufferSize, - &offset, &outSizeProcessed, - &allocImp, &allocTempImp); - if (res != SZ_OK) - break; - } - { - CSzFile outFile; - size_t processedSize; - size_t j; - size_t nameStartPos = 0; - for (j = 0; temp[j] != 0; j++) - { - if (temp[j] == '/') - { - temp[j] = 0; - MyCreateDir(path); - temp[j] = CHAR_PATH_SEPARATOR; - nameStartPos = j + 1; - } - } - - if (SzArEx_IsDir(&db, i)) - { - MyCreateDir(path); - continue; - } - else - { - unsigned extLen; - const WCHAR *name = temp + nameStartPos; - unsigned len = (unsigned)wcslen(name); - unsigned nameLen = FindExt(temp + nameStartPos, &extLen); - unsigned extPrice = FindItem(kExts, sizeof(kExts) / sizeof(kExts[0]), name + len - extLen, extLen); - unsigned namePrice = FindItem(kNames, sizeof(kNames) / sizeof(kNames[0]), name, nameLen); - - unsigned price = namePrice + extPrice * 64 + (nameStartPos == 0 ? 0 : (1 << 12)); - if (minPrice > price) - { - minPrice = price; - executeFileIndex = i; - useShellExecute = (extPrice != k_EXE_ExtIndex); - } - - if (DoesFileOrDirExist(path)) - { - errorMessage = "Duplicate file"; - res = SZ_ERROR_FAIL; - break; - } - if (OutFile_OpenW(&outFile, path)) - { - errorMessage = "Can't open output file"; - res = SZ_ERROR_FAIL; - break; - } - } - - processedSize = outSizeProcessed; - if (File_Write(&outFile, outBuffer + offset, &processedSize) != 0 || processedSize != outSizeProcessed) - { - errorMessage = "Can't write output file"; - res = SZ_ERROR_FAIL; - } - - #ifdef USE_WINDOWS_FILE - if (SzBitWithVals_Check(&db.MTime, i)) - { - const CNtfsFileTime *t = db.MTime.Vals + i; - FILETIME mTime; - mTime.dwLowDateTime = t->Low; - mTime.dwHighDateTime = t->High; - SetFileTime(outFile.handle, NULL, NULL, &mTime); - } - #endif - - { - SRes res2 = File_Close(&outFile); - if (res != SZ_OK) - break; - if (res2 != SZ_OK) - { - res = res2; - break; - } - } - #ifdef USE_WINDOWS_FILE - if (SzBitWithVals_Check(&db.Attribs, i)) - SetFileAttributesW(path, db.Attribs.Vals[i]); - #endif - } - } - - if (res == SZ_OK) - { - if (executeFileIndex == (UInt32)(Int32)-1) - { - errorMessage = "There is no file to execute"; - res = SZ_ERROR_FAIL; - } - else - { - WCHAR *temp = path + pathLen; - UInt32 j; - SzArEx_GetFileNameUtf16(&db, executeFileIndex, (UInt16 *)temp); - for (j = 0; temp[j] != 0; j++) - if (temp[j] == '/') - temp[j] = CHAR_PATH_SEPARATOR; - } - } - ISzAlloc_Free(&allocImp, outBuffer); - } - - SzArEx_Free(&db, &allocImp); - - ISzAlloc_Free(&allocImp, lookStream.buf); - - File_Close(&archiveStream.file); - - if (res == SZ_OK) - { - HANDLE hProcess = 0; - - #ifndef UNDER_CE - WCHAR oldCurDir[MAX_PATH + 2]; - oldCurDir[0] = 0; - { - DWORD needLen = GetCurrentDirectory(MAX_PATH + 1, oldCurDir); - if (needLen == 0 || needLen > MAX_PATH) - oldCurDir[0] = 0; - SetCurrentDirectory(workCurDir); - } - #endif - - if (useShellExecute) - { - SHELLEXECUTEINFO ei; - UINT32 executeRes; - BOOL success; - - memset(&ei, 0, sizeof(ei)); - ei.cbSize = sizeof(ei); - ei.lpFile = path; - ei.fMask = SEE_MASK_NOCLOSEPROCESS - #ifndef UNDER_CE - | SEE_MASK_FLAG_DDEWAIT - #endif - /* | SEE_MASK_NO_CONSOLE */ - ; - if (wcslen(cmdLineParams) != 0) - ei.lpParameters = cmdLineParams; - ei.nShow = SW_SHOWNORMAL; /* SW_HIDE; */ - success = ShellExecuteEx(&ei); - executeRes = (UINT32)(UINT_PTR)ei.hInstApp; - if (!success || (executeRes <= 32 && executeRes != 0)) /* executeRes = 0 in Windows CE */ - res = SZ_ERROR_FAIL; - else - hProcess = ei.hProcess; - } - else - { - STARTUPINFOW si; - PROCESS_INFORMATION pi; - WCHAR cmdLine[MAX_PATH * 3]; - - wcscpy(cmdLine, path); - wcscat(cmdLine, cmdLineParams); - memset(&si, 0, sizeof(si)); - si.cb = sizeof(si); - if (CreateProcessW(NULL, cmdLine, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi) == 0) - res = SZ_ERROR_FAIL; - else - { - CloseHandle(pi.hThread); - hProcess = pi.hProcess; - } - } - - if (hProcess != 0) - { - WaitForSingleObject(hProcess, INFINITE); - if (!GetExitCodeProcess(hProcess, &exitCode)) - exitCode = 1; - CloseHandle(hProcess); - } - - #ifndef UNDER_CE - SetCurrentDirectory(oldCurDir); - #endif - } - - path[pathLen] = L'\0'; - RemoveDirWithSubItems(path); - - if (res == SZ_OK) - return (int)exitCode; - - { - if (res == SZ_ERROR_UNSUPPORTED) - errorMessage = "Decoder doesn't support this archive"; - else if (res == SZ_ERROR_MEM) - errorMessage = "Can't allocate required memory"; - else if (res == SZ_ERROR_CRC) - errorMessage = "CRC error"; - else - { - if (!errorMessage) - errorMessage = "ERROR"; - } - - if (errorMessage) - PrintErrorMessage(errorMessage); - } - return 1; -} +/* SfxSetup.c - 7z SFX Setup +2024-01-24 : Igor Pavlov : Public domain */ + +#include "Precomp.h" + +#ifndef UNICODE +#define UNICODE +#endif + +#ifndef _UNICODE +#define _UNICODE +#endif + +#ifdef _CONSOLE +#include +#endif + +#include "../../7z.h" +#include "../../7zAlloc.h" +#include "../../7zCrc.h" +#include "../../7zFile.h" +#include "../../CpuArch.h" +#include "../../DllSecur.h" + +#define k_EXE_ExtIndex 2 + +#define kInputBufSize ((size_t)1 << 18) + + +#define wcscat lstrcatW +#define wcslen (size_t)lstrlenW +#define wcscpy lstrcpyW +// wcsncpy() and lstrcpynW() work differently. We don't use them. + +static const char * const kExts[] = +{ + "bat" + , "cmd" + , "exe" + , "inf" + , "msi" + #ifdef UNDER_CE + , "cab" + #endif + , "html" + , "htm" +}; + +static const char * const kNames[] = +{ + "setup" + , "install" + , "run" + , "start" +}; + +static unsigned FindExt(const wchar_t *s, unsigned *extLen) +{ + unsigned len = (unsigned)wcslen(s); + unsigned i; + for (i = len; i > 0; i--) + { + if (s[i - 1] == '.') + { + *extLen = len - i; + return i - 1; + } + } + *extLen = 0; + return len; +} + +#define MAKE_CHAR_UPPER(c) ((((c) >= 'a' && (c) <= 'z') ? (c) - 0x20 : (c))) + +static unsigned FindItem(const char * const *items, unsigned num, const wchar_t *s, unsigned len) +{ + unsigned i; + for (i = 0; i < num; i++) + { + const char *item = items[i]; + const unsigned itemLen = (unsigned)strlen(item); + unsigned j; + if (len != itemLen) + continue; + for (j = 0; j < len; j++) + { + const unsigned c = (Byte)item[j]; + if (c != s[j] && MAKE_CHAR_UPPER(c) != s[j]) + break; + } + if (j == len) + return i; + } + return i; +} + +#ifdef _CONSOLE +static BOOL WINAPI HandlerRoutine(DWORD ctrlType) +{ + UNUSED_VAR(ctrlType); + return TRUE; +} +#endif + + +#ifdef _CONSOLE +static void PrintStr(const char *s) +{ + fputs(s, stdout); +} +#endif + +static void PrintErrorMessage(const char *message) +{ + #ifdef _CONSOLE + PrintStr("\n7-Zip Error: "); + PrintStr(message); + PrintStr("\n"); + #else + #ifdef UNDER_CE + WCHAR messageW[256 + 4]; + unsigned i; + for (i = 0; i < 256 && message[i] != 0; i++) + messageW[i] = message[i]; + messageW[i] = 0; + MessageBoxW(0, messageW, L"7-Zip Error", MB_ICONERROR); + #else + MessageBoxA(0, message, "7-Zip Error", MB_ICONERROR); + #endif + #endif +} + +static WRes MyCreateDir(const WCHAR *name) +{ + return CreateDirectoryW(name, NULL) ? 0 : GetLastError(); +} + +#ifdef UNDER_CE +#define kBufferSize (1 << 13) +#else +#define kBufferSize (1 << 15) +#endif + +#define kSignatureSearchLimit (1 << 22) + +static BoolInt FindSignature(CSzFile *stream, UInt64 *resPos) +{ + Byte buf[kBufferSize]; + size_t numPrevBytes = 0; + *resPos = 0; + for (;;) + { + size_t processed, pos; + if (*resPos > kSignatureSearchLimit) + return False; + processed = kBufferSize - numPrevBytes; + if (File_Read(stream, buf + numPrevBytes, &processed) != 0) + return False; + processed += numPrevBytes; + if (processed < k7zStartHeaderSize || + (processed == k7zStartHeaderSize && numPrevBytes != 0)) + return False; + processed -= k7zStartHeaderSize; + for (pos = 0; pos <= processed; pos++) + { + for (; pos <= processed && buf[pos] != '7'; pos++); + if (pos > processed) + break; + if (memcmp(buf + pos, k7zSignature, k7zSignatureSize) == 0) + if (CrcCalc(buf + pos + 12, 20) == GetUi32(buf + pos + 8)) + { + *resPos += pos; + return True; + } + } + *resPos += processed; + numPrevBytes = k7zStartHeaderSize; + memmove(buf, buf + processed, k7zStartHeaderSize); + } +} + +static BoolInt DoesFileOrDirExist(const WCHAR *path) +{ + WIN32_FIND_DATAW fd; + HANDLE handle; + handle = FindFirstFileW(path, &fd); + if (handle == INVALID_HANDLE_VALUE) + return False; + FindClose(handle); + return True; +} + +static WRes RemoveDirWithSubItems(WCHAR *path) +{ + WIN32_FIND_DATAW fd; + HANDLE handle; + WRes res = 0; + const size_t len = wcslen(path); + wcscpy(path + len, L"*"); + handle = FindFirstFileW(path, &fd); + path[len] = L'\0'; + if (handle == INVALID_HANDLE_VALUE) + return GetLastError(); + + for (;;) + { + if (wcscmp(fd.cFileName, L".") != 0 && + wcscmp(fd.cFileName, L"..") != 0) + { + wcscpy(path + len, fd.cFileName); + if ((fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0) + { + wcscat(path, WSTRING_PATH_SEPARATOR); + res = RemoveDirWithSubItems(path); + } + else + { + SetFileAttributesW(path, 0); + if (DeleteFileW(path) == 0) + res = GetLastError(); + } + + if (res != 0) + break; + } + + if (!FindNextFileW(handle, &fd)) + { + res = GetLastError(); + if (res == ERROR_NO_MORE_FILES) + res = 0; + break; + } + } + + path[len] = L'\0'; + FindClose(handle); + if (res == 0) + { + if (!RemoveDirectoryW(path)) + res = GetLastError(); + } + return res; +} + +#ifdef _CONSOLE +int Z7_CDECL main(void) +#else +int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, + #ifdef UNDER_CE + LPWSTR + #else + LPSTR + #endif + lpCmdLine, int nCmdShow) +#endif +{ + CFileInStream archiveStream; + CLookToRead2 lookStream; + CSzArEx db; + SRes res = SZ_OK; + ISzAlloc allocImp; + ISzAlloc allocTempImp; + WCHAR sfxPath[MAX_PATH + 2]; + WCHAR path[MAX_PATH * 3 + 2]; + #ifndef UNDER_CE + WCHAR workCurDir[MAX_PATH + 32]; + #endif + size_t pathLen; + DWORD winRes; + const wchar_t *cmdLineParams; + const char *errorMessage = NULL; + BoolInt useShellExecute = True; + DWORD exitCode = 0; + + LoadSecurityDlls(); + + #ifdef _CONSOLE + SetConsoleCtrlHandler(HandlerRoutine, TRUE); + #else + UNUSED_VAR(hInstance) + UNUSED_VAR(hPrevInstance) + UNUSED_VAR(lpCmdLine) + UNUSED_VAR(nCmdShow) + #endif + + CrcGenerateTable(); + + allocImp.Alloc = SzAlloc; + allocImp.Free = SzFree; + + allocTempImp.Alloc = SzAllocTemp; + allocTempImp.Free = SzFreeTemp; + + FileInStream_CreateVTable(&archiveStream); + LookToRead2_CreateVTable(&lookStream, False); + lookStream.buf = NULL; + + winRes = GetModuleFileNameW(NULL, sfxPath, MAX_PATH); + if (winRes == 0 || winRes > MAX_PATH) + return 1; + { + cmdLineParams = GetCommandLineW(); + #ifndef UNDER_CE + { + BoolInt quoteMode = False; + for (;; cmdLineParams++) + { + const wchar_t c = *cmdLineParams; + if (c == L'\"') + quoteMode = !quoteMode; + else if (c == 0 || (c == L' ' && !quoteMode)) + break; + } + } + #endif + } + + { + unsigned i; + DWORD d; + winRes = GetTempPathW(MAX_PATH, path); + if (winRes == 0 || winRes > MAX_PATH) + return 1; + pathLen = wcslen(path); + d = (GetTickCount() << 12) ^ (GetCurrentThreadId() << 14) ^ GetCurrentProcessId(); + + for (i = 0;; i++, d += GetTickCount()) + { + if (i >= 100) + { + res = SZ_ERROR_FAIL; + break; + } + wcscpy(path + pathLen, L"7z"); + + { + wchar_t *s = path + wcslen(path); + UInt32 value = d; + unsigned k; + for (k = 0; k < 8; k++) + { + const unsigned t = value & 0xF; + value >>= 4; + s[7 - k] = (wchar_t)((t < 10) ? ('0' + t) : ('A' + (t - 10))); + } + s[k] = '\0'; + } + + if (DoesFileOrDirExist(path)) + continue; + if (CreateDirectoryW(path, NULL)) + { + wcscat(path, WSTRING_PATH_SEPARATOR); + pathLen = wcslen(path); + break; + } + if (GetLastError() != ERROR_ALREADY_EXISTS) + { + res = SZ_ERROR_FAIL; + break; + } + } + + #ifndef UNDER_CE + wcscpy(workCurDir, path); + #endif + if (res != SZ_OK) + errorMessage = "Can't create temp folder"; + } + + if (res != SZ_OK) + { + if (!errorMessage) + errorMessage = "Error"; + PrintErrorMessage(errorMessage); + return 1; + } + + if (InFile_OpenW(&archiveStream.file, sfxPath) != 0) + { + errorMessage = "can not open input file"; + res = SZ_ERROR_FAIL; + } + else + { + UInt64 pos = 0; + if (!FindSignature(&archiveStream.file, &pos)) + res = SZ_ERROR_FAIL; + else if (File_Seek(&archiveStream.file, (Int64 *)&pos, SZ_SEEK_SET) != 0) + res = SZ_ERROR_FAIL; + if (res != 0) + errorMessage = "Can't find 7z archive"; + } + + if (res == SZ_OK) + { + lookStream.buf = (Byte *)ISzAlloc_Alloc(&allocImp, kInputBufSize); + if (!lookStream.buf) + res = SZ_ERROR_MEM; + else + { + lookStream.bufSize = kInputBufSize; + lookStream.realStream = &archiveStream.vt; + LookToRead2_INIT(&lookStream) + } + } + + SzArEx_Init(&db); + + if (res == SZ_OK) + { + res = SzArEx_Open(&db, &lookStream.vt, &allocImp, &allocTempImp); + } + + if (res == SZ_OK) + { + UInt32 executeFileIndex = (UInt32)(Int32)-1; + UInt32 minPrice = 1 << 30; + UInt32 i; + UInt32 blockIndex = 0xFFFFFFFF; /* it can have any value before first call (if outBuffer = 0) */ + Byte *outBuffer = 0; /* it must be 0 before first call for each new archive. */ + size_t outBufferSize = 0; /* it can have any value before first call (if outBuffer = 0) */ + + for (i = 0; i < db.NumFiles; i++) + { + size_t offset = 0; + size_t outSizeProcessed = 0; + WCHAR *temp; + + if (SzArEx_GetFileNameUtf16(&db, i, NULL) >= MAX_PATH) + { + res = SZ_ERROR_FAIL; + break; + } + + temp = path + pathLen; + + SzArEx_GetFileNameUtf16(&db, i, (UInt16 *)temp); + { + res = SzArEx_Extract(&db, &lookStream.vt, i, + &blockIndex, &outBuffer, &outBufferSize, + &offset, &outSizeProcessed, + &allocImp, &allocTempImp); + if (res != SZ_OK) + break; + } + { + CSzFile outFile; + size_t processedSize; + size_t j; + size_t nameStartPos = 0; + for (j = 0; temp[j] != 0; j++) + { + if (temp[j] == '/') + { + temp[j] = 0; + MyCreateDir(path); + temp[j] = CHAR_PATH_SEPARATOR; + nameStartPos = j + 1; + } + } + + if (SzArEx_IsDir(&db, i)) + { + MyCreateDir(path); + continue; + } + else + { + unsigned extLen; + const WCHAR *name = temp + nameStartPos; + unsigned len = (unsigned)wcslen(name); + const unsigned nameLen = FindExt(temp + nameStartPos, &extLen); + const unsigned extPrice = FindItem(kExts, sizeof(kExts) / sizeof(kExts[0]), name + len - extLen, extLen); + const unsigned namePrice = FindItem(kNames, sizeof(kNames) / sizeof(kNames[0]), name, nameLen); + + const unsigned price = namePrice + extPrice * 64 + (nameStartPos == 0 ? 0 : (1 << 12)); + if (minPrice > price) + { + minPrice = price; + executeFileIndex = i; + useShellExecute = (extPrice != k_EXE_ExtIndex); + } + + if (DoesFileOrDirExist(path)) + { + errorMessage = "Duplicate file"; + res = SZ_ERROR_FAIL; + break; + } + if (OutFile_OpenW(&outFile, path)) + { + errorMessage = "Can't open output file"; + res = SZ_ERROR_FAIL; + break; + } + } + + processedSize = outSizeProcessed; + if (File_Write(&outFile, outBuffer + offset, &processedSize) != 0 || processedSize != outSizeProcessed) + { + errorMessage = "Can't write output file"; + res = SZ_ERROR_FAIL; + } + + #ifdef USE_WINDOWS_FILE + if (SzBitWithVals_Check(&db.MTime, i)) + { + const CNtfsFileTime *t = db.MTime.Vals + i; + FILETIME mTime; + mTime.dwLowDateTime = t->Low; + mTime.dwHighDateTime = t->High; + SetFileTime(outFile.handle, NULL, NULL, &mTime); + } + #endif + + { + const WRes res2 = File_Close(&outFile); + if (res != SZ_OK) + break; + if (res2 != 0) + { + errorMessage = "Can't close output file"; + res = SZ_ERROR_FAIL; + break; + } + } + #ifdef USE_WINDOWS_FILE + if (SzBitWithVals_Check(&db.Attribs, i)) + SetFileAttributesW(path, db.Attribs.Vals[i]); + #endif + } + } + + if (res == SZ_OK) + { + if (executeFileIndex == (UInt32)(Int32)-1) + { + errorMessage = "There is no file to execute"; + res = SZ_ERROR_FAIL; + } + else + { + WCHAR *temp = path + pathLen; + UInt32 j; + SzArEx_GetFileNameUtf16(&db, executeFileIndex, (UInt16 *)temp); + for (j = 0; temp[j] != 0; j++) + if (temp[j] == '/') + temp[j] = CHAR_PATH_SEPARATOR; + } + } + ISzAlloc_Free(&allocImp, outBuffer); + } + + SzArEx_Free(&db, &allocImp); + + ISzAlloc_Free(&allocImp, lookStream.buf); + + File_Close(&archiveStream.file); + + if (res == SZ_OK) + { + HANDLE hProcess = 0; + + #ifndef UNDER_CE + WCHAR oldCurDir[MAX_PATH + 2]; + oldCurDir[0] = 0; + { + const DWORD needLen = GetCurrentDirectory(MAX_PATH + 1, oldCurDir); + if (needLen == 0 || needLen > MAX_PATH) + oldCurDir[0] = 0; + SetCurrentDirectory(workCurDir); + } + #endif + + if (useShellExecute) + { + SHELLEXECUTEINFO ei; + UINT32 executeRes; + BOOL success; + + memset(&ei, 0, sizeof(ei)); + ei.cbSize = sizeof(ei); + ei.lpFile = path; + ei.fMask = SEE_MASK_NOCLOSEPROCESS + #ifndef UNDER_CE + | SEE_MASK_FLAG_DDEWAIT + #endif + /* | SEE_MASK_NO_CONSOLE */ + ; + if (wcslen(cmdLineParams) != 0) + ei.lpParameters = cmdLineParams; + ei.nShow = SW_SHOWNORMAL; /* SW_HIDE; */ + success = ShellExecuteEx(&ei); + executeRes = (UINT32)(UINT_PTR)ei.hInstApp; + if (!success || (executeRes <= 32 && executeRes != 0)) /* executeRes = 0 in Windows CE */ + res = SZ_ERROR_FAIL; + else + hProcess = ei.hProcess; + } + else + { + STARTUPINFOW si; + PROCESS_INFORMATION pi; + WCHAR cmdLine[MAX_PATH * 3]; + + wcscpy(cmdLine, path); + wcscat(cmdLine, cmdLineParams); + memset(&si, 0, sizeof(si)); + si.cb = sizeof(si); + if (CreateProcessW(NULL, cmdLine, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi) == 0) + res = SZ_ERROR_FAIL; + else + { + CloseHandle(pi.hThread); + hProcess = pi.hProcess; + } + } + + if (hProcess != 0) + { + WaitForSingleObject(hProcess, INFINITE); + if (!GetExitCodeProcess(hProcess, &exitCode)) + exitCode = 1; + CloseHandle(hProcess); + } + + #ifndef UNDER_CE + SetCurrentDirectory(oldCurDir); + #endif + } + + path[pathLen] = L'\0'; + RemoveDirWithSubItems(path); + + if (res == SZ_OK) + return (int)exitCode; + + { + if (res == SZ_ERROR_UNSUPPORTED) + errorMessage = "Decoder doesn't support this archive"; + else if (res == SZ_ERROR_MEM) + errorMessage = "Can't allocate required memory"; + else if (res == SZ_ERROR_CRC) + errorMessage = "CRC error"; + else + { + if (!errorMessage) + errorMessage = "ERROR"; + } + + if (errorMessage) + PrintErrorMessage(errorMessage); + } + return 1; +} diff --git a/deps/LZMA-SDK/C/Util/SfxSetup/SfxSetup.dsp b/deps/LZMA-SDK/C/Util/SfxSetup/SfxSetup.dsp index 60439a6f7..be9de6dec 100644 --- a/deps/LZMA-SDK/C/Util/SfxSetup/SfxSetup.dsp +++ b/deps/LZMA-SDK/C/Util/SfxSetup/SfxSetup.dsp @@ -1,231 +1,231 @@ -# Microsoft Developer Studio Project File - Name="SfxSetup" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Application" 0x0101 - -CFG=SfxSetup - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "SfxSetup.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "SfxSetup.mak" CFG="SfxSetup - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "SfxSetup - Win32 Release" (based on "Win32 (x86) Application") -!MESSAGE "SfxSetup - Win32 Debug" (based on "Win32 (x86) Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "SfxSetup - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W4 /WX /GX /O2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_UNICODE" /D "UNICODE" /Yu"Precomp.h" /FD /c -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x419 /d "NDEBUG" -# ADD RSC /l 0x419 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386 - -!ELSEIF "$(CFG)" == "SfxSetup - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W4 /WX /Gm /GX /ZI /Od /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_UNICODE" /D "UNICODE" /Yu"Precomp.h" /FD /GZ /c -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x419 /d "_DEBUG" -# ADD RSC /l 0x419 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "SfxSetup - Win32 Release" -# Name "SfxSetup - Win32 Debug" -# Begin Group "Common" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=..\..\7z.h -# End Source File -# Begin Source File - -SOURCE=..\..\7zAlloc.c -# End Source File -# Begin Source File - -SOURCE=..\..\7zAlloc.h -# End Source File -# Begin Source File - -SOURCE=..\..\7zArcIn.c -# End Source File -# Begin Source File - -SOURCE=..\..\7zBuf.c -# End Source File -# Begin Source File - -SOURCE=..\..\7zBuf.h -# End Source File -# Begin Source File - -SOURCE=..\..\7zCrc.c -# End Source File -# Begin Source File - -SOURCE=..\..\7zCrc.h -# End Source File -# Begin Source File - -SOURCE=..\..\7zCrcOpt.c -# End Source File -# Begin Source File - -SOURCE=..\..\7zDec.c -# End Source File -# Begin Source File - -SOURCE=..\..\7zFile.c -# End Source File -# Begin Source File - -SOURCE=..\..\7zFile.h -# End Source File -# Begin Source File - -SOURCE=..\..\7zStream.c -# End Source File -# Begin Source File - -SOURCE=..\..\7zTypes.h -# End Source File -# Begin Source File - -SOURCE=..\..\Bcj2.c -# End Source File -# Begin Source File - -SOURCE=..\..\Bcj2.h -# End Source File -# Begin Source File - -SOURCE=..\..\Bra.c -# End Source File -# Begin Source File - -SOURCE=..\..\Bra.h -# End Source File -# Begin Source File - -SOURCE=..\..\Bra86.c -# End Source File -# Begin Source File - -SOURCE=..\..\BraIA64.c -# End Source File -# Begin Source File - -SOURCE=..\..\CpuArch.c -# End Source File -# Begin Source File - -SOURCE=..\..\CpuArch.h -# End Source File -# Begin Source File - -SOURCE=..\..\Delta.c -# End Source File -# Begin Source File - -SOURCE=..\..\Delta.h -# End Source File -# Begin Source File - -SOURCE=..\..\DllSecur.c -# End Source File -# Begin Source File - -SOURCE=..\..\DllSecur.h -# End Source File -# Begin Source File - -SOURCE=..\..\Lzma2Dec.c -# End Source File -# Begin Source File - -SOURCE=..\..\Lzma2Dec.h -# End Source File -# Begin Source File - -SOURCE=..\..\LzmaDec.c -# End Source File -# Begin Source File - -SOURCE=..\..\LzmaDec.h -# End Source File -# End Group -# Begin Group "Spec" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=.\Precomp.c -# ADD CPP /Yc"Precomp.h" -# End Source File -# Begin Source File - -SOURCE=.\Precomp.h -# End Source File -# End Group -# Begin Source File - -SOURCE=.\SfxSetup.c -# End Source File -# End Target -# End Project +# Microsoft Developer Studio Project File - Name="SfxSetup" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Application" 0x0101 + +CFG=SfxSetup - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "SfxSetup.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "SfxSetup.mak" CFG="SfxSetup - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "SfxSetup - Win32 Release" (based on "Win32 (x86) Application") +!MESSAGE "SfxSetup - Win32 Debug" (based on "Win32 (x86) Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "SfxSetup - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W4 /WX /GX /O2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_UNICODE" /D "UNICODE" /Yu"Precomp.h" /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x419 /d "NDEBUG" +# ADD RSC /l 0x419 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386 + +!ELSEIF "$(CFG)" == "SfxSetup - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c +# ADD CPP /nologo /W4 /WX /Gm /GX /ZI /Od /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_UNICODE" /D "UNICODE" /Yu"Precomp.h" /FD /GZ /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x419 /d "_DEBUG" +# ADD RSC /l 0x419 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept + +!ENDIF + +# Begin Target + +# Name "SfxSetup - Win32 Release" +# Name "SfxSetup - Win32 Debug" +# Begin Group "Common" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\7z.h +# End Source File +# Begin Source File + +SOURCE=..\..\7zAlloc.c +# End Source File +# Begin Source File + +SOURCE=..\..\7zAlloc.h +# End Source File +# Begin Source File + +SOURCE=..\..\7zArcIn.c +# End Source File +# Begin Source File + +SOURCE=..\..\7zBuf.c +# End Source File +# Begin Source File + +SOURCE=..\..\7zBuf.h +# End Source File +# Begin Source File + +SOURCE=..\..\7zCrc.c +# End Source File +# Begin Source File + +SOURCE=..\..\7zCrc.h +# End Source File +# Begin Source File + +SOURCE=..\..\7zCrcOpt.c +# End Source File +# Begin Source File + +SOURCE=..\..\7zDec.c +# End Source File +# Begin Source File + +SOURCE=..\..\7zFile.c +# End Source File +# Begin Source File + +SOURCE=..\..\7zFile.h +# End Source File +# Begin Source File + +SOURCE=..\..\7zStream.c +# End Source File +# Begin Source File + +SOURCE=..\..\7zTypes.h +# End Source File +# Begin Source File + +SOURCE=..\..\Bcj2.c +# End Source File +# Begin Source File + +SOURCE=..\..\Bcj2.h +# End Source File +# Begin Source File + +SOURCE=..\..\Bra.c +# End Source File +# Begin Source File + +SOURCE=..\..\Bra.h +# End Source File +# Begin Source File + +SOURCE=..\..\Bra86.c +# End Source File +# Begin Source File + +SOURCE=..\..\BraIA64.c +# End Source File +# Begin Source File + +SOURCE=..\..\CpuArch.c +# End Source File +# Begin Source File + +SOURCE=..\..\CpuArch.h +# End Source File +# Begin Source File + +SOURCE=..\..\Delta.c +# End Source File +# Begin Source File + +SOURCE=..\..\Delta.h +# End Source File +# Begin Source File + +SOURCE=..\..\DllSecur.c +# End Source File +# Begin Source File + +SOURCE=..\..\DllSecur.h +# End Source File +# Begin Source File + +SOURCE=..\..\Lzma2Dec.c +# End Source File +# Begin Source File + +SOURCE=..\..\Lzma2Dec.h +# End Source File +# Begin Source File + +SOURCE=..\..\LzmaDec.c +# End Source File +# Begin Source File + +SOURCE=..\..\LzmaDec.h +# End Source File +# End Group +# Begin Group "Spec" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=.\Precomp.c +# ADD CPP /Yc"Precomp.h" +# End Source File +# Begin Source File + +SOURCE=.\Precomp.h +# End Source File +# End Group +# Begin Source File + +SOURCE=.\SfxSetup.c +# End Source File +# End Target +# End Project diff --git a/deps/LZMA-SDK/C/Util/SfxSetup/SfxSetup.dsw b/deps/LZMA-SDK/C/Util/SfxSetup/SfxSetup.dsw index ea2311129..128fcdd3e 100644 --- a/deps/LZMA-SDK/C/Util/SfxSetup/SfxSetup.dsw +++ b/deps/LZMA-SDK/C/Util/SfxSetup/SfxSetup.dsw @@ -1,29 +1,29 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "SfxSetup"=.\SfxSetup.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "SfxSetup"=.\SfxSetup.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/deps/LZMA-SDK/C/Util/SfxSetup/makefile b/deps/LZMA-SDK/C/Util/SfxSetup/makefile index 544da67df..88bb2b65e 100644 --- a/deps/LZMA-SDK/C/Util/SfxSetup/makefile +++ b/deps/LZMA-SDK/C/Util/SfxSetup/makefile @@ -1,37 +1,44 @@ -PROG = 7zS2.sfx -MY_FIXED = 1 - -C_OBJS = \ - $O\7zAlloc.obj \ - $O\7zArcIn.obj \ - $O\7zBuf.obj \ - $O\7zBuf2.obj \ - $O\7zCrc.obj \ - $O\7zCrcOpt.obj \ - $O\7zFile.obj \ - $O\7zDec.obj \ - $O\7zStream.obj \ - $O\Bcj2.obj \ - $O\Bra.obj \ - $O\Bra86.obj \ - $O\BraIA64.obj \ - $O\CpuArch.obj \ - $O\Delta.obj \ - $O\DllSecur.obj \ - $O\Lzma2Dec.obj \ - $O\LzmaDec.obj \ - -7Z_OBJS = \ - $O\SfxSetup.obj \ - -OBJS = \ - $(7Z_OBJS) \ - $(C_OBJS) \ - $O\resource.res - -!include "../../../CPP/Build.mak" - -$(7Z_OBJS): $(*B).c - $(COMPL_O1) -$(C_OBJS): ../../$(*B).c - $(COMPL_O1) +PROG = 7zS2.sfx +MY_FIXED = 1 + +CFLAGS = $(CFLAGS) \ + -DZ7_EXTRACT_ONLY \ + +C_OBJS = \ + $O\7zAlloc.obj \ + $O\7zArcIn.obj \ + $O\7zBuf.obj \ + $O\7zBuf2.obj \ + $O\7zFile.obj \ + $O\7zDec.obj \ + $O\7zStream.obj \ + $O\Bcj2.obj \ + $O\Bra.obj \ + $O\Bra86.obj \ + $O\BraIA64.obj \ + $O\CpuArch.obj \ + $O\Delta.obj \ + $O\DllSecur.obj \ + $O\Lzma2Dec.obj \ + $O\LzmaDec.obj \ + +7Z_OBJS = \ + $O\SfxSetup.obj \ + +!include "../../../CPP/7zip/Crc.mak" +# !include "../../../CPP/7zip/LzmaDec.mak" + +OBJS = \ + $(7Z_OBJS) \ + $(C_OBJS) \ + $(ASM_OBJS) \ + $O\resource.res + +!include "../../../CPP/Build.mak" + +$(7Z_OBJS): $(*B).c + $(COMPL_O1) +$(C_OBJS): ../../$(*B).c + $(COMPL_O1) + +!include "../../Asm_c.mak" diff --git a/deps/LZMA-SDK/C/Util/SfxSetup/makefile_con b/deps/LZMA-SDK/C/Util/SfxSetup/makefile_con index d0f835254..2111006a5 100644 --- a/deps/LZMA-SDK/C/Util/SfxSetup/makefile_con +++ b/deps/LZMA-SDK/C/Util/SfxSetup/makefile_con @@ -1,38 +1,40 @@ -PROG = 7zS2con.sfx -MY_FIXED = 1 -CFLAGS = $(CFLAGS) -D_CONSOLE - -C_OBJS = \ - $O\7zAlloc.obj \ - $O\7zArcIn.obj \ - $O\7zBuf.obj \ - $O\7zBuf2.obj \ - $O\7zCrc.obj \ - $O\7zCrcOpt.obj \ - $O\7zFile.obj \ - $O\7zDec.obj \ - $O\7zStream.obj \ - $O\Bcj2.obj \ - $O\Bra.obj \ - $O\Bra86.obj \ - $O\BraIA64.obj \ - $O\CpuArch.obj \ - $O\Delta.obj \ - $O\DllSecur.obj \ - $O\Lzma2Dec.obj \ - $O\LzmaDec.obj \ - -7Z_OBJS = \ - $O\SfxSetup.obj \ - -OBJS = \ - $(7Z_OBJS) \ - $(C_OBJS) \ - $O\resource.res - -!include "../../../CPP/Build.mak" - -$(7Z_OBJS): $(*B).c - $(COMPL_O1) -$(C_OBJS): ../../$(*B).c - $(COMPL_O1) +PROG = 7zS2con.sfx +MY_FIXED = 1 + +CFLAGS = $(CFLAGS) -D_CONSOLE \ + -DZ7_EXTRACT_ONLY \ + +C_OBJS = \ + $O\7zAlloc.obj \ + $O\7zArcIn.obj \ + $O\7zBuf.obj \ + $O\7zBuf2.obj \ + $O\7zCrc.obj \ + $O\7zCrcOpt.obj \ + $O\7zFile.obj \ + $O\7zDec.obj \ + $O\7zStream.obj \ + $O\Bcj2.obj \ + $O\Bra.obj \ + $O\Bra86.obj \ + $O\BraIA64.obj \ + $O\CpuArch.obj \ + $O\Delta.obj \ + $O\DllSecur.obj \ + $O\Lzma2Dec.obj \ + $O\LzmaDec.obj \ + +7Z_OBJS = \ + $O\SfxSetup.obj \ + +OBJS = \ + $(7Z_OBJS) \ + $(C_OBJS) \ + $O\resource.res + +!include "../../../CPP/Build.mak" + +$(7Z_OBJS): $(*B).c + $(COMPL_O1) +$(C_OBJS): ../../$(*B).c + $(COMPL_O1) diff --git a/deps/LZMA-SDK/C/Util/SfxSetup/resource.rc b/deps/LZMA-SDK/C/Util/SfxSetup/resource.rc index 0c1637f23..64f4e2ce7 100644 --- a/deps/LZMA-SDK/C/Util/SfxSetup/resource.rc +++ b/deps/LZMA-SDK/C/Util/SfxSetup/resource.rc @@ -1,5 +1,5 @@ -#include "../../7zVersion.rc" - -MY_VERSION_INFO_APP("7z Setup SFX small", "7zS2.sfx") - -1 ICON "setup.ico" +#include "../../7zVersion.rc" + +MY_VERSION_INFO_APP("7z Setup SFX small", "7zS2.sfx") + +1 ICON "setup.ico" diff --git a/deps/LZMA-SDK/C/Xz.c b/deps/LZMA-SDK/C/Xz.c index 7c53b6007..d07550d09 100644 --- a/deps/LZMA-SDK/C/Xz.c +++ b/deps/LZMA-SDK/C/Xz.c @@ -1,5 +1,5 @@ /* Xz.c - Xz -2021-02-09 : Igor Pavlov : Public domain */ +2024-03-01 : Igor Pavlov : Public domain */ #include "Precomp.h" @@ -52,6 +52,7 @@ void XzCheck_Init(CXzCheck *p, unsigned mode) case XZ_CHECK_CRC32: p->crc = CRC_INIT_VAL; break; case XZ_CHECK_CRC64: p->crc64 = CRC64_INIT_VAL; break; case XZ_CHECK_SHA256: Sha256_Init(&p->sha); break; + default: break; } } @@ -62,6 +63,7 @@ void XzCheck_Update(CXzCheck *p, const void *data, size_t size) case XZ_CHECK_CRC32: p->crc = CrcUpdate(p->crc, data, size); break; case XZ_CHECK_CRC64: p->crc64 = Crc64Update(p->crc64, data, size); break; case XZ_CHECK_SHA256: Sha256_Update(&p->sha, (const Byte *)data, size); break; + default: break; } } @@ -70,7 +72,7 @@ int XzCheck_Final(CXzCheck *p, Byte *digest) switch (p->mode) { case XZ_CHECK_CRC32: - SetUi32(digest, CRC_GET_DIGEST(p->crc)); + SetUi32(digest, CRC_GET_DIGEST(p->crc)) break; case XZ_CHECK_CRC64: { diff --git a/deps/LZMA-SDK/C/Xz.h b/deps/LZMA-SDK/C/Xz.h index 849b944bf..42bc68534 100644 --- a/deps/LZMA-SDK/C/Xz.h +++ b/deps/LZMA-SDK/C/Xz.h @@ -1,21 +1,24 @@ /* Xz.h - Xz interface -2021-04-01 : Igor Pavlov : Public domain */ +2024-01-26 : Igor Pavlov : Public domain */ -#ifndef __XZ_H -#define __XZ_H +#ifndef ZIP7_INC_XZ_H +#define ZIP7_INC_XZ_H #include "Sha256.h" +#include "Delta.h" EXTERN_C_BEGIN #define XZ_ID_Subblock 1 #define XZ_ID_Delta 3 -#define XZ_ID_X86 4 -#define XZ_ID_PPC 5 -#define XZ_ID_IA64 6 -#define XZ_ID_ARM 7 -#define XZ_ID_ARMT 8 +#define XZ_ID_X86 4 +#define XZ_ID_PPC 5 +#define XZ_ID_IA64 6 +#define XZ_ID_ARM 7 +#define XZ_ID_ARMT 8 #define XZ_ID_SPARC 9 +#define XZ_ID_ARM64 0xa +#define XZ_ID_RISCV 0xb #define XZ_ID_LZMA2 0x21 unsigned Xz_ReadVarInt(const Byte *p, size_t maxSize, UInt64 *value); @@ -53,7 +56,7 @@ typedef struct #define XzBlock_HasUnsupportedFlags(p) (((p)->flags & ~(XZ_BF_NUM_FILTERS_MASK | XZ_BF_PACK_SIZE | XZ_BF_UNPACK_SIZE)) != 0) SRes XzBlock_Parse(CXzBlock *p, const Byte *header); -SRes XzBlock_ReadHeader(CXzBlock *p, ISeqInStream *inStream, BoolInt *isIndex, UInt32 *headerSizeRes); +SRes XzBlock_ReadHeader(CXzBlock *p, ISeqInStreamPtr inStream, BoolInt *isIndex, UInt32 *headerSizeRes); /* ---------- xz stream ---------- */ @@ -101,7 +104,7 @@ typedef UInt16 CXzStreamFlags; unsigned XzFlags_GetCheckSize(CXzStreamFlags f); SRes Xz_ParseHeader(CXzStreamFlags *p, const Byte *buf); -SRes Xz_ReadHeader(CXzStreamFlags *p, ISeqInStream *inStream); +SRes Xz_ReadHeader(CXzStreamFlags *p, ISeqInStreamPtr inStream); typedef struct { @@ -112,6 +115,7 @@ typedef struct typedef struct { CXzStreamFlags flags; + // Byte _pad[6]; size_t numBlocks; CXzBlockSizes *blocks; UInt64 startOffset; @@ -134,7 +138,7 @@ typedef struct void Xzs_Construct(CXzs *p); void Xzs_Free(CXzs *p, ISzAllocPtr alloc); -SRes Xzs_ReadBackward(CXzs *p, ILookInStream *inStream, Int64 *startOffset, ICompressProgress *progress, ISzAllocPtr alloc); +SRes Xzs_ReadBackward(CXzs *p, ILookInStreamPtr inStream, Int64 *startOffset, ICompressProgressPtr progress, ISzAllocPtr alloc); UInt64 Xzs_GetNumBlocks(const CXzs *p); UInt64 Xzs_GetUnpackSize(const CXzs *p); @@ -160,9 +164,9 @@ typedef enum } ECoderFinishMode; -typedef struct _IStateCoder +typedef struct { - void *p; + void *p; // state object; void (*Free)(void *p, ISzAllocPtr alloc); SRes (*SetProps)(void *p, const Byte *props, size_t propSize, ISzAllocPtr alloc); void (*Init)(void *p); @@ -174,6 +178,20 @@ typedef struct _IStateCoder } IStateCoder; +typedef struct +{ + UInt32 methodId; + UInt32 delta; + UInt32 ip; + UInt32 X86_State; + Byte delta_State[DELTA_STATE_SIZE]; +} CXzBcFilterStateBase; + +typedef SizeT (*Xz_Func_BcFilterStateBase_Filter)(CXzBcFilterStateBase *p, Byte *data, SizeT size); + +SRes Xz_StateCoder_Bc_SetFromMethod_Func(IStateCoder *p, UInt64 id, + Xz_Func_BcFilterStateBase_Filter func, ISzAllocPtr alloc); + #define MIXCODER_NUM_FILTERS_MAX 4 @@ -216,13 +234,13 @@ typedef enum typedef struct { EXzState state; - UInt32 pos; + unsigned pos; unsigned alignPos; unsigned indexPreSize; CXzStreamFlags streamFlags; - UInt32 blockHeaderSize; + unsigned blockHeaderSize; UInt64 packSize; UInt64 unpackSize; @@ -422,7 +440,7 @@ typedef struct size_t outStep_ST; // size of output buffer for Single-Thread decoding BoolInt ignoreErrors; // if set to 1, the decoder can ignore some errors and it skips broken parts of data. - #ifndef _7ZIP_ST + #ifndef Z7_ST unsigned numThreads; // the number of threads for Multi-Thread decoding. if (umThreads == 1) it will use Single-thread decoding size_t inBufSize_MT; // size of small input data buffers for Multi-Thread decoding. Big number of such small buffers can be created size_t memUseMax; // the limit of total memory usage for Multi-Thread decoding. @@ -432,8 +450,9 @@ typedef struct void XzDecMtProps_Init(CXzDecMtProps *p); - -typedef void * CXzDecMtHandle; +typedef struct CXzDecMt CXzDecMt; +typedef CXzDecMt * CXzDecMtHandle; +// Z7_DECLARE_HANDLE(CXzDecMtHandle) /* alloc : XzDecMt uses CAlignOffsetAlloc internally for addresses allocated by (alloc). @@ -503,14 +522,14 @@ SRes XzDecMt_Decode(CXzDecMtHandle p, const CXzDecMtProps *props, const UInt64 *outDataSize, // NULL means undefined int finishMode, // 0 - partial unpacking is allowed, 1 - xz stream(s) must be finished - ISeqOutStream *outStream, + ISeqOutStreamPtr outStream, // Byte *outBuf, size_t *outBufSize, - ISeqInStream *inStream, + ISeqInStreamPtr inStream, // const Byte *inData, size_t inDataSize, CXzStatInfo *stat, // out: decoding results and statistics int *isMT, // out: 0 means that ST (Single-Thread) version was used // 1 means that MT (Multi-Thread) version was used - ICompressProgress *progress); + ICompressProgressPtr progress); EXTERN_C_END diff --git a/deps/LZMA-SDK/C/XzCrc64.c b/deps/LZMA-SDK/C/XzCrc64.c index b6d02cbeb..94fc1afb3 100644 --- a/deps/LZMA-SDK/C/XzCrc64.c +++ b/deps/LZMA-SDK/C/XzCrc64.c @@ -1,5 +1,5 @@ /* XzCrc64.c -- CRC64 calculation -2017-05-23 : Igor Pavlov : Public domain */ +2023-12-08 : Igor Pavlov : Public domain */ #include "Precomp.h" @@ -8,45 +8,76 @@ #define kCrc64Poly UINT64_CONST(0xC96C5795D7870F42) -#ifdef MY_CPU_LE - #define CRC64_NUM_TABLES 4 -#else - #define CRC64_NUM_TABLES 5 - #define CRC_UINT64_SWAP(v) \ - ((v >> 56) \ - | ((v >> 40) & ((UInt64)0xFF << 8)) \ - | ((v >> 24) & ((UInt64)0xFF << 16)) \ - | ((v >> 8) & ((UInt64)0xFF << 24)) \ - | ((v << 8) & ((UInt64)0xFF << 32)) \ - | ((v << 24) & ((UInt64)0xFF << 40)) \ - | ((v << 40) & ((UInt64)0xFF << 48)) \ - | ((v << 56))) - - UInt64 MY_FAST_CALL XzCrc64UpdateT1_BeT4(UInt64 v, const void *data, size_t size, const UInt64 *table); +// for debug only : define Z7_CRC64_DEBUG_BE to test big-endian code in little-endian cpu +// #define Z7_CRC64_DEBUG_BE +#ifdef Z7_CRC64_DEBUG_BE +#undef MY_CPU_LE +#define MY_CPU_BE #endif +#ifdef Z7_CRC64_NUM_TABLES + #define Z7_CRC64_NUM_TABLES_USE Z7_CRC64_NUM_TABLES +#else + #define Z7_CRC64_NUM_TABLES_USE 12 +#endif + +#if Z7_CRC64_NUM_TABLES_USE < 1 + #error Stop_Compiling_Bad_Z7_CRC_NUM_TABLES +#endif + + +#if Z7_CRC64_NUM_TABLES_USE != 1 + #ifndef MY_CPU_BE - UInt64 MY_FAST_CALL XzCrc64UpdateT4(UInt64 v, const void *data, size_t size, const UInt64 *table); + #define FUNC_NAME_LE_2(s) XzCrc64UpdateT ## s + #define FUNC_NAME_LE_1(s) FUNC_NAME_LE_2(s) + #define FUNC_NAME_LE FUNC_NAME_LE_1(Z7_CRC64_NUM_TABLES_USE) + UInt64 Z7_FASTCALL FUNC_NAME_LE (UInt64 v, const void *data, size_t size, const UInt64 *table); +#endif +#ifndef MY_CPU_LE + #define FUNC_NAME_BE_2(s) XzCrc64UpdateBeT ## s + #define FUNC_NAME_BE_1(s) FUNC_NAME_BE_2(s) + #define FUNC_NAME_BE FUNC_NAME_BE_1(Z7_CRC64_NUM_TABLES_USE) + UInt64 Z7_FASTCALL FUNC_NAME_BE (UInt64 v, const void *data, size_t size, const UInt64 *table); #endif -typedef UInt64 (MY_FAST_CALL *CRC64_FUNC)(UInt64 v, const void *data, size_t size, const UInt64 *table); +#if defined(MY_CPU_LE) + #define FUNC_REF FUNC_NAME_LE +#elif defined(MY_CPU_BE) + #define FUNC_REF FUNC_NAME_BE +#else + #define FUNC_REF g_Crc64Update + static UInt64 (Z7_FASTCALL *FUNC_REF)(UInt64 v, const void *data, size_t size, const UInt64 *table); +#endif -static CRC64_FUNC g_Crc64Update; -UInt64 g_Crc64Table[256 * CRC64_NUM_TABLES]; +#endif -UInt64 MY_FAST_CALL Crc64Update(UInt64 v, const void *data, size_t size) + +MY_ALIGN(64) +static UInt64 g_Crc64Table[256 * Z7_CRC64_NUM_TABLES_USE]; + + +UInt64 Z7_FASTCALL Crc64Update(UInt64 v, const void *data, size_t size) { - return g_Crc64Update(v, data, size, g_Crc64Table); +#if Z7_CRC64_NUM_TABLES_USE == 1 + #define CRC64_UPDATE_BYTE_2(crc, b) (table[((crc) ^ (b)) & 0xFF] ^ ((crc) >> 8)) + const UInt64 *table = g_Crc64Table; + const Byte *p = (const Byte *)data; + const Byte *lim = p + size; + for (; p != lim; p++) + v = CRC64_UPDATE_BYTE_2(v, *p); + return v; + #undef CRC64_UPDATE_BYTE_2 +#else + return FUNC_REF (v, data, size, g_Crc64Table); +#endif } -UInt64 MY_FAST_CALL Crc64Calc(const void *data, size_t size) -{ - return g_Crc64Update(CRC64_INIT_VAL, data, size, g_Crc64Table) ^ CRC64_INIT_VAL; -} -void MY_FAST_CALL Crc64GenerateTable() +Z7_NO_INLINE +void Z7_FASTCALL Crc64GenerateTable(void) { - UInt32 i; + unsigned i; for (i = 0; i < 256; i++) { UInt64 r = i; @@ -55,32 +86,55 @@ void MY_FAST_CALL Crc64GenerateTable() r = (r >> 1) ^ (kCrc64Poly & ((UInt64)0 - (r & 1))); g_Crc64Table[i] = r; } - for (i = 256; i < 256 * CRC64_NUM_TABLES; i++) + +#if Z7_CRC64_NUM_TABLES_USE != 1 +#if 1 || 1 && defined(MY_CPU_X86) // low register count + for (i = 0; i < 256 * (Z7_CRC64_NUM_TABLES_USE - 1); i++) { - UInt64 r = g_Crc64Table[(size_t)i - 256]; - g_Crc64Table[i] = g_Crc64Table[r & 0xFF] ^ (r >> 8); + const UInt64 r0 = g_Crc64Table[(size_t)i]; + g_Crc64Table[(size_t)i + 256] = g_Crc64Table[(Byte)r0] ^ (r0 >> 8); } - - #ifdef MY_CPU_LE - - g_Crc64Update = XzCrc64UpdateT4; - - #else +#else + for (i = 0; i < 256 * (Z7_CRC64_NUM_TABLES_USE - 1); i += 2) { - #ifndef MY_CPU_BE + UInt64 r0 = g_Crc64Table[(size_t)(i) ]; + UInt64 r1 = g_Crc64Table[(size_t)(i) + 1]; + r0 = g_Crc64Table[(Byte)r0] ^ (r0 >> 8); + r1 = g_Crc64Table[(Byte)r1] ^ (r1 >> 8); + g_Crc64Table[(size_t)i + 256 ] = r0; + g_Crc64Table[(size_t)i + 256 + 1] = r1; + } +#endif + +#ifndef MY_CPU_LE + { +#ifndef MY_CPU_BE UInt32 k = 1; if (*(const Byte *)&k == 1) - g_Crc64Update = XzCrc64UpdateT4; + FUNC_REF = FUNC_NAME_LE; else - #endif +#endif { - for (i = 256 * CRC64_NUM_TABLES - 1; i >= 256; i--) +#ifndef MY_CPU_BE + FUNC_REF = FUNC_NAME_BE; +#endif + for (i = 0; i < 256 * Z7_CRC64_NUM_TABLES_USE; i++) { - UInt64 x = g_Crc64Table[(size_t)i - 256]; - g_Crc64Table[i] = CRC_UINT64_SWAP(x); + const UInt64 x = g_Crc64Table[i]; + g_Crc64Table[i] = Z7_BSWAP64(x); } - g_Crc64Update = XzCrc64UpdateT1_BeT4; } } - #endif +#endif // ndef MY_CPU_LE +#endif // Z7_CRC64_NUM_TABLES_USE != 1 } + +#undef kCrc64Poly +#undef Z7_CRC64_NUM_TABLES_USE +#undef FUNC_REF +#undef FUNC_NAME_LE_2 +#undef FUNC_NAME_LE_1 +#undef FUNC_NAME_LE +#undef FUNC_NAME_BE_2 +#undef FUNC_NAME_BE_1 +#undef FUNC_NAME_BE diff --git a/deps/LZMA-SDK/C/XzCrc64.h b/deps/LZMA-SDK/C/XzCrc64.h index 08dbc330c..04f8153df 100644 --- a/deps/LZMA-SDK/C/XzCrc64.h +++ b/deps/LZMA-SDK/C/XzCrc64.h @@ -1,8 +1,8 @@ /* XzCrc64.h -- CRC64 calculation -2013-01-18 : Igor Pavlov : Public domain */ +2023-12-08 : Igor Pavlov : Public domain */ -#ifndef __XZ_CRC64_H -#define __XZ_CRC64_H +#ifndef ZIP7_INC_XZ_CRC64_H +#define ZIP7_INC_XZ_CRC64_H #include @@ -10,16 +10,16 @@ EXTERN_C_BEGIN -extern UInt64 g_Crc64Table[]; +// extern UInt64 g_Crc64Table[]; -void MY_FAST_CALL Crc64GenerateTable(void); +void Z7_FASTCALL Crc64GenerateTable(void); #define CRC64_INIT_VAL UINT64_CONST(0xFFFFFFFFFFFFFFFF) #define CRC64_GET_DIGEST(crc) ((crc) ^ CRC64_INIT_VAL) -#define CRC64_UPDATE_BYTE(crc, b) (g_Crc64Table[((crc) ^ (b)) & 0xFF] ^ ((crc) >> 8)) +// #define CRC64_UPDATE_BYTE(crc, b) (g_Crc64Table[((crc) ^ (b)) & 0xFF] ^ ((crc) >> 8)) -UInt64 MY_FAST_CALL Crc64Update(UInt64 crc, const void *data, size_t size); -UInt64 MY_FAST_CALL Crc64Calc(const void *data, size_t size); +UInt64 Z7_FASTCALL Crc64Update(UInt64 crc, const void *data, size_t size); +// UInt64 Z7_FASTCALL Crc64Calc(const void *data, size_t size); EXTERN_C_END diff --git a/deps/LZMA-SDK/C/XzCrc64Opt.c b/deps/LZMA-SDK/C/XzCrc64Opt.c index 93a9ffff5..0c1fc2ffe 100644 --- a/deps/LZMA-SDK/C/XzCrc64Opt.c +++ b/deps/LZMA-SDK/C/XzCrc64Opt.c @@ -1,71 +1,261 @@ -/* XzCrc64Opt.c -- CRC64 calculation -2021-02-09 : Igor Pavlov : Public domain */ +/* XzCrc64Opt.c -- CRC64 calculation (optimized functions) +2023-12-08 : Igor Pavlov : Public domain */ #include "Precomp.h" #include "CpuArch.h" +#if !defined(Z7_CRC64_NUM_TABLES) || Z7_CRC64_NUM_TABLES > 1 + +// for debug only : define Z7_CRC64_DEBUG_BE to test big-endian code in little-endian cpu +// #define Z7_CRC64_DEBUG_BE +#ifdef Z7_CRC64_DEBUG_BE +#undef MY_CPU_LE +#define MY_CPU_BE +#endif + +#if defined(MY_CPU_64BIT) +#define Z7_CRC64_USE_64BIT +#endif + +// the value Z7_CRC64_NUM_TABLES_USE must be defined to same value as in XzCrc64.c +#ifdef Z7_CRC64_NUM_TABLES +#define Z7_CRC64_NUM_TABLES_USE Z7_CRC64_NUM_TABLES +#else +#define Z7_CRC64_NUM_TABLES_USE 12 +#endif + +#if Z7_CRC64_NUM_TABLES_USE % 4 || \ + Z7_CRC64_NUM_TABLES_USE < 4 || \ + Z7_CRC64_NUM_TABLES_USE > 4 * 4 + #error Stop_Compiling_Bad_CRC64_NUM_TABLES +#endif + + #ifndef MY_CPU_BE -#define CRC64_UPDATE_BYTE_2(crc, b) (table[((crc) ^ (b)) & 0xFF] ^ ((crc) >> 8)) +#define CRC64_UPDATE_BYTE_2(crc, b) (table[((crc) ^ (b)) & 0xFF] ^ ((crc) >> 8)) -UInt64 MY_FAST_CALL XzCrc64UpdateT4(UInt64 v, const void *data, size_t size, const UInt64 *table); -UInt64 MY_FAST_CALL XzCrc64UpdateT4(UInt64 v, const void *data, size_t size, const UInt64 *table) +#if defined(Z7_CRC64_USE_64BIT) && (Z7_CRC64_NUM_TABLES_USE % 8 == 0) + +#define Q64LE(n, d) \ + ( (table + ((n) * 8 + 7) * 0x100)[((d) ) & 0xFF] \ + ^ (table + ((n) * 8 + 6) * 0x100)[((d) >> 1 * 8) & 0xFF] \ + ^ (table + ((n) * 8 + 5) * 0x100)[((d) >> 2 * 8) & 0xFF] \ + ^ (table + ((n) * 8 + 4) * 0x100)[((d) >> 3 * 8) & 0xFF] \ + ^ (table + ((n) * 8 + 3) * 0x100)[((d) >> 4 * 8) & 0xFF] \ + ^ (table + ((n) * 8 + 2) * 0x100)[((d) >> 5 * 8) & 0xFF] \ + ^ (table + ((n) * 8 + 1) * 0x100)[((d) >> 6 * 8) & 0xFF] \ + ^ (table + ((n) * 8 + 0) * 0x100)[((d) >> 7 * 8)] ) + +#define R64(a) *((const UInt64 *)(const void *)p + (a)) + +#else + +#define Q32LE(n, d) \ + ( (table + ((n) * 4 + 3) * 0x100)[((d) ) & 0xFF] \ + ^ (table + ((n) * 4 + 2) * 0x100)[((d) >> 1 * 8) & 0xFF] \ + ^ (table + ((n) * 4 + 1) * 0x100)[((d) >> 2 * 8) & 0xFF] \ + ^ (table + ((n) * 4 + 0) * 0x100)[((d) >> 3 * 8)] ) + +#define R32(a) *((const UInt32 *)(const void *)p + (a)) + +#endif + + +#define CRC64_FUNC_PRE_LE2(step) \ +UInt64 Z7_FASTCALL XzCrc64UpdateT ## step (UInt64 v, const void *data, size_t size, const UInt64 *table) + +#define CRC64_FUNC_PRE_LE(step) \ + CRC64_FUNC_PRE_LE2(step); \ + CRC64_FUNC_PRE_LE2(step) + +CRC64_FUNC_PRE_LE(Z7_CRC64_NUM_TABLES_USE) { const Byte *p = (const Byte *)data; - for (; size > 0 && ((unsigned)(ptrdiff_t)p & 3) != 0; size--, p++) + const Byte *lim; + for (; size && ((unsigned)(ptrdiff_t)p & (7 - (Z7_CRC64_NUM_TABLES_USE & 4))) != 0; size--, p++) v = CRC64_UPDATE_BYTE_2(v, *p); - for (; size >= 4; size -= 4, p += 4) + lim = p + size; + if (size >= Z7_CRC64_NUM_TABLES_USE) { - UInt32 d = (UInt32)v ^ *(const UInt32 *)(const void *)p; - v = (v >> 32) - ^ (table + 0x300)[((d ) & 0xFF)] - ^ (table + 0x200)[((d >> 8) & 0xFF)] - ^ (table + 0x100)[((d >> 16) & 0xFF)] - ^ (table + 0x000)[((d >> 24))]; + lim -= Z7_CRC64_NUM_TABLES_USE; + do + { +#if Z7_CRC64_NUM_TABLES_USE == 4 + const UInt32 d = (UInt32)v ^ R32(0); + v = (v >> 32) ^ Q32LE(0, d); +#elif Z7_CRC64_NUM_TABLES_USE == 8 +#ifdef Z7_CRC64_USE_64BIT + v ^= R64(0); + v = Q64LE(0, v); +#else + UInt32 v0, v1; + v0 = (UInt32)v ^ R32(0); + v1 = (UInt32)(v >> 32) ^ R32(1); + v = Q32LE(1, v0) ^ Q32LE(0, v1); +#endif +#elif Z7_CRC64_NUM_TABLES_USE == 12 + UInt32 w; + UInt32 v0, v1; + v0 = (UInt32)v ^ R32(0); + v1 = (UInt32)(v >> 32) ^ R32(1); + w = R32(2); + v = Q32LE(0, w); + v ^= Q32LE(2, v0) ^ Q32LE(1, v1); +#elif Z7_CRC64_NUM_TABLES_USE == 16 +#ifdef Z7_CRC64_USE_64BIT + UInt64 w; + UInt64 x; + w = R64(1); x = Q64LE(0, w); + v ^= R64(0); v = x ^ Q64LE(1, v); +#else + UInt32 v0, v1; + UInt32 r0, r1; + v0 = (UInt32)v ^ R32(0); + v1 = (UInt32)(v >> 32) ^ R32(1); + r0 = R32(2); + r1 = R32(3); + v = Q32LE(1, r0) ^ Q32LE(0, r1); + v ^= Q32LE(3, v0) ^ Q32LE(2, v1); +#endif +#else +#error Stop_Compiling_Bad_CRC64_NUM_TABLES +#endif + p += Z7_CRC64_NUM_TABLES_USE; + } + while (p <= lim); + lim += Z7_CRC64_NUM_TABLES_USE; } - for (; size > 0; size--, p++) + for (; p < lim; p++) v = CRC64_UPDATE_BYTE_2(v, *p); return v; } +#undef CRC64_UPDATE_BYTE_2 +#undef R32 +#undef R64 +#undef Q32LE +#undef Q64LE +#undef CRC64_FUNC_PRE_LE +#undef CRC64_FUNC_PRE_LE2 + #endif + + #ifndef MY_CPU_LE -#define CRC_UINT64_SWAP(v) \ - ((v >> 56) \ - | ((v >> 40) & ((UInt64)0xFF << 8)) \ - | ((v >> 24) & ((UInt64)0xFF << 16)) \ - | ((v >> 8) & ((UInt64)0xFF << 24)) \ - | ((v << 8) & ((UInt64)0xFF << 32)) \ - | ((v << 24) & ((UInt64)0xFF << 40)) \ - | ((v << 40) & ((UInt64)0xFF << 48)) \ - | ((v << 56))) +#define CRC64_UPDATE_BYTE_2_BE(crc, b) (table[((crc) >> 56) ^ (b)] ^ ((crc) << 8)) -#define CRC64_UPDATE_BYTE_2_BE(crc, b) (table[(Byte)((crc) >> 56) ^ (b)] ^ ((crc) << 8)) +#if defined(Z7_CRC64_USE_64BIT) && (Z7_CRC64_NUM_TABLES_USE % 8 == 0) -UInt64 MY_FAST_CALL XzCrc64UpdateT1_BeT4(UInt64 v, const void *data, size_t size, const UInt64 *table); -UInt64 MY_FAST_CALL XzCrc64UpdateT1_BeT4(UInt64 v, const void *data, size_t size, const UInt64 *table) -{ - const Byte *p = (const Byte *)data; - table += 0x100; - v = CRC_UINT64_SWAP(v); - for (; size > 0 && ((unsigned)(ptrdiff_t)p & 3) != 0; size--, p++) - v = CRC64_UPDATE_BYTE_2_BE(v, *p); - for (; size >= 4; size -= 4, p += 4) - { - UInt32 d = (UInt32)(v >> 32) ^ *(const UInt32 *)(const void *)p; - v = (v << 32) - ^ (table + 0x000)[((d ) & 0xFF)] - ^ (table + 0x100)[((d >> 8) & 0xFF)] - ^ (table + 0x200)[((d >> 16) & 0xFF)] - ^ (table + 0x300)[((d >> 24))]; - } - for (; size > 0; size--, p++) - v = CRC64_UPDATE_BYTE_2_BE(v, *p); - return CRC_UINT64_SWAP(v); -} +#define Q64BE(n, d) \ + ( (table + ((n) * 8 + 0) * 0x100)[(Byte)(d)] \ + ^ (table + ((n) * 8 + 1) * 0x100)[((d) >> 1 * 8) & 0xFF] \ + ^ (table + ((n) * 8 + 2) * 0x100)[((d) >> 2 * 8) & 0xFF] \ + ^ (table + ((n) * 8 + 3) * 0x100)[((d) >> 3 * 8) & 0xFF] \ + ^ (table + ((n) * 8 + 4) * 0x100)[((d) >> 4 * 8) & 0xFF] \ + ^ (table + ((n) * 8 + 5) * 0x100)[((d) >> 5 * 8) & 0xFF] \ + ^ (table + ((n) * 8 + 6) * 0x100)[((d) >> 6 * 8) & 0xFF] \ + ^ (table + ((n) * 8 + 7) * 0x100)[((d) >> 7 * 8)] ) + +#ifdef Z7_CRC64_DEBUG_BE + #define R64BE(a) GetBe64a((const UInt64 *)(const void *)p + (a)) +#else + #define R64BE(a) *((const UInt64 *)(const void *)p + (a)) +#endif + +#else + +#define Q32BE(n, d) \ + ( (table + ((n) * 4 + 0) * 0x100)[(Byte)(d)] \ + ^ (table + ((n) * 4 + 1) * 0x100)[((d) >> 1 * 8) & 0xFF] \ + ^ (table + ((n) * 4 + 2) * 0x100)[((d) >> 2 * 8) & 0xFF] \ + ^ (table + ((n) * 4 + 3) * 0x100)[((d) >> 3 * 8)] ) + +#ifdef Z7_CRC64_DEBUG_BE + #define R32BE(a) GetBe32a((const UInt32 *)(const void *)p + (a)) +#else + #define R32BE(a) *((const UInt32 *)(const void *)p + (a)) +#endif #endif + +#define CRC64_FUNC_PRE_BE2(step) \ +UInt64 Z7_FASTCALL XzCrc64UpdateBeT ## step (UInt64 v, const void *data, size_t size, const UInt64 *table) + +#define CRC64_FUNC_PRE_BE(step) \ + CRC64_FUNC_PRE_BE2(step); \ + CRC64_FUNC_PRE_BE2(step) + +CRC64_FUNC_PRE_BE(Z7_CRC64_NUM_TABLES_USE) +{ + const Byte *p = (const Byte *)data; + const Byte *lim; + v = Z7_BSWAP64(v); + for (; size && ((unsigned)(ptrdiff_t)p & (7 - (Z7_CRC64_NUM_TABLES_USE & 4))) != 0; size--, p++) + v = CRC64_UPDATE_BYTE_2_BE(v, *p); + lim = p + size; + if (size >= Z7_CRC64_NUM_TABLES_USE) + { + lim -= Z7_CRC64_NUM_TABLES_USE; + do + { +#if Z7_CRC64_NUM_TABLES_USE == 4 + const UInt32 d = (UInt32)(v >> 32) ^ R32BE(0); + v = (v << 32) ^ Q32BE(0, d); +#elif Z7_CRC64_NUM_TABLES_USE == 12 + const UInt32 d1 = (UInt32)(v >> 32) ^ R32BE(0); + const UInt32 d0 = (UInt32)(v ) ^ R32BE(1); + const UInt32 w = R32BE(2); + v = Q32BE(0, w); + v ^= Q32BE(2, d1) ^ Q32BE(1, d0); + +#elif Z7_CRC64_NUM_TABLES_USE == 8 + #ifdef Z7_CRC64_USE_64BIT + v ^= R64BE(0); + v = Q64BE(0, v); + #else + const UInt32 d1 = (UInt32)(v >> 32) ^ R32BE(0); + const UInt32 d0 = (UInt32)(v ) ^ R32BE(1); + v = Q32BE(1, d1) ^ Q32BE(0, d0); + #endif +#elif Z7_CRC64_NUM_TABLES_USE == 16 + #ifdef Z7_CRC64_USE_64BIT + const UInt64 w = R64BE(1); + v ^= R64BE(0); + v = Q64BE(0, w) ^ Q64BE(1, v); + #else + const UInt32 d1 = (UInt32)(v >> 32) ^ R32BE(0); + const UInt32 d0 = (UInt32)(v ) ^ R32BE(1); + const UInt32 w1 = R32BE(2); + const UInt32 w0 = R32BE(3); + v = Q32BE(1, w1) ^ Q32BE(0, w0); + v ^= Q32BE(3, d1) ^ Q32BE(2, d0); + #endif +#elif +#error Stop_Compiling_Bad_CRC64_NUM_TABLES +#endif + p += Z7_CRC64_NUM_TABLES_USE; + } + while (p <= lim); + lim += Z7_CRC64_NUM_TABLES_USE; + } + for (; p < lim; p++) + v = CRC64_UPDATE_BYTE_2_BE(v, *p); + return Z7_BSWAP64(v); +} + +#undef CRC64_UPDATE_BYTE_2_BE +#undef R32BE +#undef R64BE +#undef Q32BE +#undef Q64BE +#undef CRC64_FUNC_PRE_BE +#undef CRC64_FUNC_PRE_BE2 + +#endif +#undef Z7_CRC64_NUM_TABLES_USE +#endif diff --git a/deps/LZMA-SDK/C/XzDec.c b/deps/LZMA-SDK/C/XzDec.c index 3f96a37f9..3d1c98e63 100644 --- a/deps/LZMA-SDK/C/XzDec.c +++ b/deps/LZMA-SDK/C/XzDec.c @@ -1,5 +1,5 @@ /* XzDec.c -- Xz Decode -2021-09-04 : Igor Pavlov : Public domain */ +2024-03-01 : Igor Pavlov : Public domain */ #include "Precomp.h" @@ -67,7 +67,8 @@ unsigned Xz_ReadVarInt(const Byte *p, size_t maxSize, UInt64 *value) return 0; } -/* ---------- BraState ---------- */ + +/* ---------- XzBcFilterState ---------- */ #define BRA_BUF_SIZE (1 << 14) @@ -76,55 +77,60 @@ typedef struct size_t bufPos; size_t bufConv; size_t bufTotal; + Byte *buf; // must be aligned for 4 bytes + Xz_Func_BcFilterStateBase_Filter filter_func; + // int encodeMode; + CXzBcFilterStateBase base; + // Byte buf[BRA_BUF_SIZE]; +} CXzBcFilterState; - int encodeMode; - UInt32 methodId; - UInt32 delta; - UInt32 ip; - UInt32 x86State; - Byte deltaState[DELTA_STATE_SIZE]; - - Byte buf[BRA_BUF_SIZE]; -} CBraState; - -static void BraState_Free(void *pp, ISzAllocPtr alloc) +static void XzBcFilterState_Free(void *pp, ISzAllocPtr alloc) { - ISzAlloc_Free(alloc, pp); + if (pp) + { + CXzBcFilterState *p = ((CXzBcFilterState *)pp); + ISzAlloc_Free(alloc, p->buf); + ISzAlloc_Free(alloc, pp); + } } -static SRes BraState_SetProps(void *pp, const Byte *props, size_t propSize, ISzAllocPtr alloc) + +static SRes XzBcFilterState_SetProps(void *pp, const Byte *props, size_t propSize, ISzAllocPtr alloc) { - CBraState *p = ((CBraState *)pp); - UNUSED_VAR(alloc); + CXzBcFilterStateBase *p = &((CXzBcFilterState *)pp)->base; + UNUSED_VAR(alloc) p->ip = 0; if (p->methodId == XZ_ID_Delta) { if (propSize != 1) return SZ_ERROR_UNSUPPORTED; - p->delta = (unsigned)props[0] + 1; + p->delta = (UInt32)props[0] + 1; } else { if (propSize == 4) { - UInt32 v = GetUi32(props); + const UInt32 v = GetUi32(props); switch (p->methodId) { case XZ_ID_PPC: case XZ_ID_ARM: case XZ_ID_SPARC: - if ((v & 3) != 0) + case XZ_ID_ARM64: + if (v & 3) return SZ_ERROR_UNSUPPORTED; break; case XZ_ID_ARMT: - if ((v & 1) != 0) + case XZ_ID_RISCV: + if (v & 1) return SZ_ERROR_UNSUPPORTED; break; case XZ_ID_IA64: - if ((v & 0xF) != 0) + if (v & 0xf) return SZ_ERROR_UNSUPPORTED; break; + default: break; } p->ip = v; } @@ -134,73 +140,91 @@ static SRes BraState_SetProps(void *pp, const Byte *props, size_t propSize, ISzA return SZ_OK; } -static void BraState_Init(void *pp) + +static void XzBcFilterState_Init(void *pp) { - CBraState *p = ((CBraState *)pp); + CXzBcFilterState *p = ((CXzBcFilterState *)pp); p->bufPos = p->bufConv = p->bufTotal = 0; - x86_Convert_Init(p->x86State); - if (p->methodId == XZ_ID_Delta) - Delta_Init(p->deltaState); + p->base.X86_State = Z7_BRANCH_CONV_ST_X86_STATE_INIT_VAL; + if (p->base.methodId == XZ_ID_Delta) + Delta_Init(p->base.delta_State); } -#define CASE_BRA_CONV(isa) case XZ_ID_ ## isa: size = isa ## _Convert(data, size, p->ip, p->encodeMode); break; - -static SizeT BraState_Filter(void *pp, Byte *data, SizeT size) +static const z7_Func_BranchConv g_Funcs_BranchConv_RISC_Dec[] = +{ + Z7_BRANCH_CONV_DEC_2 (BranchConv_PPC), + Z7_BRANCH_CONV_DEC_2 (BranchConv_IA64), + Z7_BRANCH_CONV_DEC_2 (BranchConv_ARM), + Z7_BRANCH_CONV_DEC_2 (BranchConv_ARMT), + Z7_BRANCH_CONV_DEC_2 (BranchConv_SPARC), + Z7_BRANCH_CONV_DEC_2 (BranchConv_ARM64), + Z7_BRANCH_CONV_DEC_2 (BranchConv_RISCV) +}; + +static SizeT XzBcFilterStateBase_Filter_Dec(CXzBcFilterStateBase *p, Byte *data, SizeT size) { - CBraState *p = ((CBraState *)pp); switch (p->methodId) { case XZ_ID_Delta: - if (p->encodeMode) - Delta_Encode(p->deltaState, p->delta, data, size); - else - Delta_Decode(p->deltaState, p->delta, data, size); + Delta_Decode(p->delta_State, p->delta, data, size); break; case XZ_ID_X86: - size = x86_Convert(data, size, p->ip, &p->x86State, p->encodeMode); + size = (SizeT)(z7_BranchConvSt_X86_Dec(data, size, p->ip, &p->X86_State) - data); + break; + default: + if (p->methodId >= XZ_ID_PPC) + { + const UInt32 i = p->methodId - XZ_ID_PPC; + if (i < Z7_ARRAY_SIZE(g_Funcs_BranchConv_RISC_Dec)) + size = (SizeT)(g_Funcs_BranchConv_RISC_Dec[i](data, size, p->ip) - data); + } break; - CASE_BRA_CONV(PPC) - CASE_BRA_CONV(IA64) - CASE_BRA_CONV(ARM) - CASE_BRA_CONV(ARMT) - CASE_BRA_CONV(SPARC) } p->ip += (UInt32)size; return size; } -static SRes BraState_Code2(void *pp, +static SizeT XzBcFilterState_Filter(void *pp, Byte *data, SizeT size) +{ + CXzBcFilterState *p = ((CXzBcFilterState *)pp); + return p->filter_func(&p->base, data, size); +} + + +static SRes XzBcFilterState_Code2(void *pp, Byte *dest, SizeT *destLen, const Byte *src, SizeT *srcLen, int srcWasFinished, ECoderFinishMode finishMode, // int *wasFinished ECoderStatus *status) { - CBraState *p = ((CBraState *)pp); + CXzBcFilterState *p = ((CXzBcFilterState *)pp); SizeT destRem = *destLen; SizeT srcRem = *srcLen; - UNUSED_VAR(finishMode); + UNUSED_VAR(finishMode) *destLen = 0; *srcLen = 0; // *wasFinished = False; *status = CODER_STATUS_NOT_FINISHED; - while (destRem > 0) + while (destRem != 0) { - if (p->bufPos != p->bufConv) { size_t size = p->bufConv - p->bufPos; - if (size > destRem) - size = destRem; - memcpy(dest, p->buf + p->bufPos, size); - p->bufPos += size; - *destLen += size; - dest += size; - destRem -= size; - continue; + if (size) + { + if (size > destRem) + size = destRem; + memcpy(dest, p->buf + p->bufPos, size); + p->bufPos += size; + *destLen += size; + dest += size; + destRem -= size; + continue; + } } p->bufTotal -= p->bufPos; @@ -220,7 +244,7 @@ static SRes BraState_Code2(void *pp, if (p->bufTotal == 0) break; - p->bufConv = BraState_Filter(pp, p->buf, p->bufTotal); + p->bufConv = p->filter_func(&p->base, p->buf, p->bufTotal); if (p->bufConv == 0) { @@ -240,27 +264,37 @@ static SRes BraState_Code2(void *pp, } -SRes BraState_SetFromMethod(IStateCoder *p, UInt64 id, int encodeMode, ISzAllocPtr alloc); -SRes BraState_SetFromMethod(IStateCoder *p, UInt64 id, int encodeMode, ISzAllocPtr alloc) +#define XZ_IS_SUPPORTED_FILTER_ID(id) \ + ((id) >= XZ_ID_Delta && (id) <= XZ_ID_RISCV) + +SRes Xz_StateCoder_Bc_SetFromMethod_Func(IStateCoder *p, UInt64 id, + Xz_Func_BcFilterStateBase_Filter func, ISzAllocPtr alloc) { - CBraState *decoder; - if (id < XZ_ID_Delta || id > XZ_ID_SPARC) + CXzBcFilterState *decoder; + if (!XZ_IS_SUPPORTED_FILTER_ID(id)) return SZ_ERROR_UNSUPPORTED; - decoder = (CBraState *)p->p; + decoder = (CXzBcFilterState *)p->p; if (!decoder) { - decoder = (CBraState *)ISzAlloc_Alloc(alloc, sizeof(CBraState)); + decoder = (CXzBcFilterState *)ISzAlloc_Alloc(alloc, sizeof(CXzBcFilterState)); if (!decoder) return SZ_ERROR_MEM; + decoder->buf = ISzAlloc_Alloc(alloc, BRA_BUF_SIZE); + if (!decoder->buf) + { + ISzAlloc_Free(alloc, decoder); + return SZ_ERROR_MEM; + } p->p = decoder; - p->Free = BraState_Free; - p->SetProps = BraState_SetProps; - p->Init = BraState_Init; - p->Code2 = BraState_Code2; - p->Filter = BraState_Filter; + p->Free = XzBcFilterState_Free; + p->SetProps = XzBcFilterState_SetProps; + p->Init = XzBcFilterState_Init; + p->Code2 = XzBcFilterState_Code2; + p->Filter = XzBcFilterState_Filter; + decoder->filter_func = func; } - decoder->methodId = (UInt32)id; - decoder->encodeMode = encodeMode; + decoder->base.methodId = (UInt32)id; + // decoder->encodeMode = encodeMode; return SZ_OK; } @@ -279,9 +313,9 @@ static void SbState_Free(void *pp, ISzAllocPtr alloc) static SRes SbState_SetProps(void *pp, const Byte *props, size_t propSize, ISzAllocPtr alloc) { - UNUSED_VAR(pp); - UNUSED_VAR(props); - UNUSED_VAR(alloc); + UNUSED_VAR(pp) + UNUSED_VAR(props) + UNUSED_VAR(alloc) return (propSize == 0) ? SZ_OK : SZ_ERROR_UNSUPPORTED; } @@ -297,7 +331,7 @@ static SRes SbState_Code2(void *pp, Byte *dest, SizeT *destLen, const Byte *src, { CSbDec *p = (CSbDec *)pp; SRes res; - UNUSED_VAR(srcWasFinished); + UNUSED_VAR(srcWasFinished) p->dest = dest; p->destLen = *destLen; p->src = src; @@ -389,7 +423,7 @@ static SRes Lzma2State_Code2(void *pp, Byte *dest, SizeT *destLen, const Byte *s ELzmaStatus status2; /* ELzmaFinishMode fm = (finishMode == LZMA_FINISH_ANY) ? LZMA_FINISH_ANY : LZMA_FINISH_END; */ SRes res; - UNUSED_VAR(srcWasFinished); + UNUSED_VAR(srcWasFinished) if (spec->outBufMode) { SizeT dicPos = spec->decoder.decoder.dicPos; @@ -420,7 +454,7 @@ static SRes Lzma2State_SetFromMethod(IStateCoder *p, Byte *outBuf, size_t outBuf p->Init = Lzma2State_Init; p->Code2 = Lzma2State_Code2; p->Filter = NULL; - Lzma2Dec_Construct(&spec->decoder); + Lzma2Dec_CONSTRUCT(&spec->decoder) } spec->outBufMode = False; if (outBuf) @@ -510,26 +544,24 @@ static SRes MixCoder_SetFromMethod(CMixCoder *p, unsigned coderIndex, UInt64 met { IStateCoder *sc = &p->coders[coderIndex]; p->ids[coderIndex] = methodId; - switch (methodId) - { - case XZ_ID_LZMA2: return Lzma2State_SetFromMethod(sc, outBuf, outBufSize, p->alloc); - #ifdef USE_SUBBLOCK - case XZ_ID_Subblock: return SbState_SetFromMethod(sc, p->alloc); - #endif - } + if (methodId == XZ_ID_LZMA2) + return Lzma2State_SetFromMethod(sc, outBuf, outBufSize, p->alloc); +#ifdef USE_SUBBLOCK + if (methodId == XZ_ID_Subblock) + return SbState_SetFromMethod(sc, p->alloc); +#endif if (coderIndex == 0) return SZ_ERROR_UNSUPPORTED; - return BraState_SetFromMethod(sc, methodId, 0, p->alloc); + return Xz_StateCoder_Bc_SetFromMethod_Func(sc, methodId, + XzBcFilterStateBase_Filter_Dec, p->alloc); } static SRes MixCoder_ResetFromMethod(CMixCoder *p, unsigned coderIndex, UInt64 methodId, Byte *outBuf, size_t outBufSize) { IStateCoder *sc = &p->coders[coderIndex]; - switch (methodId) - { - case XZ_ID_LZMA2: return Lzma2State_ResetOutBuf(sc, outBuf, outBufSize); - } + if (methodId == XZ_ID_LZMA2) + return Lzma2State_ResetOutBuf(sc, outBuf, outBufSize); return SZ_ERROR_UNSUPPORTED; } @@ -568,7 +600,7 @@ static SRes MixCoder_Code(CMixCoder *p, SizeT destLen2, srcLen2; int wasFinished; - PRF_STR("------- MixCoder Single ----------"); + PRF_STR("------- MixCoder Single ----------") srcLen2 = srcLenOrig; destLen2 = destLenOrig; @@ -615,14 +647,14 @@ static SRes MixCoder_Code(CMixCoder *p, processed = coder->Filter(coder->p, p->outBuf, processed); if (wasFinished || (destFinish && p->outWritten == destLenOrig)) processed = p->outWritten; - PRF_STR_INT("filter", i); + PRF_STR_INT("filter", i) } *destLen = processed; } return res; } - PRF_STR("standard mix"); + PRF_STR("standard mix") if (p->numCoders != 1) { @@ -772,14 +804,14 @@ static BoolInt Xz_CheckFooter(CXzStreamFlags flags, UInt64 indexSize, const Byte } #define READ_VARINT_AND_CHECK(buf, pos, size, res) \ - { unsigned s = Xz_ReadVarInt(buf + pos, size - pos, res); \ + { const unsigned s = Xz_ReadVarInt(buf + pos, size - pos, res); \ if (s == 0) return SZ_ERROR_ARCHIVE; \ pos += s; } static BoolInt XzBlock_AreSupportedFilters(const CXzBlock *p) { - unsigned numFilters = XzBlock_GetNumFilters(p) - 1; + const unsigned numFilters = XzBlock_GetNumFilters(p) - 1; unsigned i; { const CXzFilter *f = &p->filters[numFilters]; @@ -795,8 +827,7 @@ static BoolInt XzBlock_AreSupportedFilters(const CXzBlock *p) if (f->propsSize != 1) return False; } - else if (f->id < XZ_ID_Delta - || f->id > XZ_ID_SPARC + else if (!XZ_IS_SUPPORTED_FILTER_ID(f->id) || (f->propsSize != 0 && f->propsSize != 4)) return False; } @@ -821,22 +852,24 @@ SRes XzBlock_Parse(CXzBlock *p, const Byte *header) p->packSize = (UInt64)(Int64)-1; if (XzBlock_HasPackSize(p)) { - READ_VARINT_AND_CHECK(header, pos, headerSize, &p->packSize); + READ_VARINT_AND_CHECK(header, pos, headerSize, &p->packSize) if (p->packSize == 0 || p->packSize + headerSize >= (UInt64)1 << 63) return SZ_ERROR_ARCHIVE; } p->unpackSize = (UInt64)(Int64)-1; if (XzBlock_HasUnpackSize(p)) - READ_VARINT_AND_CHECK(header, pos, headerSize, &p->unpackSize); + { + READ_VARINT_AND_CHECK(header, pos, headerSize, &p->unpackSize) + } numFilters = XzBlock_GetNumFilters(p); for (i = 0; i < numFilters; i++) { CXzFilter *filter = p->filters + i; UInt64 size; - READ_VARINT_AND_CHECK(header, pos, headerSize, &filter->id); - READ_VARINT_AND_CHECK(header, pos, headerSize, &size); + READ_VARINT_AND_CHECK(header, pos, headerSize, &filter->id) + READ_VARINT_AND_CHECK(header, pos, headerSize, &size) if (size > headerSize - pos || size > XZ_FILTER_PROPS_SIZE_MAX) return SZ_ERROR_ARCHIVE; filter->propsSize = (UInt32)size; @@ -894,20 +927,20 @@ static SRes XzDecMix_Init(CMixCoder *p, const CXzBlock *block, Byte *outBuf, siz MixCoder_Free(p); for (i = 0; i < numFilters; i++) { - RINOK(MixCoder_SetFromMethod(p, i, block->filters[numFilters - 1 - i].id, outBuf, outBufSize)); + RINOK(MixCoder_SetFromMethod(p, i, block->filters[numFilters - 1 - i].id, outBuf, outBufSize)) } p->numCoders = numFilters; } else { - RINOK(MixCoder_ResetFromMethod(p, 0, block->filters[numFilters - 1].id, outBuf, outBufSize)); + RINOK(MixCoder_ResetFromMethod(p, 0, block->filters[numFilters - 1].id, outBuf, outBufSize)) } for (i = 0; i < numFilters; i++) { const CXzFilter *f = &block->filters[numFilters - 1 - i]; IStateCoder *sc = &p->coders[i]; - RINOK(sc->SetProps(sc->p, f->props, f->propsSize, p->alloc)); + RINOK(sc->SetProps(sc->p, f->props, f->propsSize, p->alloc)) } MixCoder_Init(p); @@ -1001,7 +1034,7 @@ SRes XzUnpacker_Code(CXzUnpacker *p, Byte *dest, SizeT *destLen, SRes res; ECoderFinishMode finishMode2 = finishMode; - BoolInt srcFinished2 = srcFinished; + BoolInt srcFinished2 = (BoolInt)srcFinished; BoolInt destFinish = False; if (p->block.packSize != (UInt64)(Int64)-1) @@ -1054,14 +1087,14 @@ SRes XzUnpacker_Code(CXzUnpacker *p, Byte *dest, SizeT *destLen, (*destLen) += destLen2; p->unpackSize += destLen2; - RINOK(res); + RINOK(res) if (*status != CODER_STATUS_FINISHED_WITH_MARK) { if (p->block.packSize == p->packSize && *status == CODER_STATUS_NEEDS_MORE_INPUT) { - PRF_STR("CODER_STATUS_NEEDS_MORE_INPUT"); + PRF_STR("CODER_STATUS_NEEDS_MORE_INPUT") *status = CODER_STATUS_NOT_SPECIFIED; return SZ_ERROR_DATA; } @@ -1078,7 +1111,7 @@ SRes XzUnpacker_Code(CXzUnpacker *p, Byte *dest, SizeT *destLen, if ((p->block.packSize != (UInt64)(Int64)-1 && p->block.packSize != p->packSize) || (p->block.unpackSize != (UInt64)(Int64)-1 && p->block.unpackSize != p->unpackSize)) { - PRF_STR("ERROR: block.size mismatch"); + PRF_STR("ERROR: block.size mismatch") return SZ_ERROR_DATA; } } @@ -1094,7 +1127,7 @@ SRes XzUnpacker_Code(CXzUnpacker *p, Byte *dest, SizeT *destLen, return SZ_OK; } - switch (p->state) + switch ((int)p->state) { case XZ_STATE_STREAM_HEADER: { @@ -1109,7 +1142,7 @@ SRes XzUnpacker_Code(CXzUnpacker *p, Byte *dest, SizeT *destLen, } else { - RINOK(Xz_ParseHeader(&p->streamFlags, p->buf)); + RINOK(Xz_ParseHeader(&p->streamFlags, p->buf)) p->numStartedStreams++; p->indexSize = 0; p->numBlocks = 0; @@ -1139,15 +1172,15 @@ SRes XzUnpacker_Code(CXzUnpacker *p, Byte *dest, SizeT *destLen, p->state = XZ_STATE_STREAM_INDEX; break; } - p->blockHeaderSize = ((UInt32)p->buf[0] << 2) + 4; + p->blockHeaderSize = ((unsigned)p->buf[0] << 2) + 4; break; } if (p->pos != p->blockHeaderSize) { - UInt32 cur = p->blockHeaderSize - p->pos; + unsigned cur = p->blockHeaderSize - p->pos; if (cur > srcRem) - cur = (UInt32)srcRem; + cur = (unsigned)srcRem; memcpy(p->buf + p->pos, src, cur); p->pos += cur; (*srcLen) += cur; @@ -1155,7 +1188,7 @@ SRes XzUnpacker_Code(CXzUnpacker *p, Byte *dest, SizeT *destLen, } else { - RINOK(XzBlock_Parse(&p->block, p->buf)); + RINOK(XzBlock_Parse(&p->block, p->buf)) if (!XzBlock_AreSupportedFilters(&p->block)) return SZ_ERROR_UNSUPPORTED; p->numTotalBlocks++; @@ -1168,7 +1201,7 @@ SRes XzUnpacker_Code(CXzUnpacker *p, Byte *dest, SizeT *destLen, p->headerParsedOk = True; return SZ_OK; } - RINOK(XzDecMix_Init(&p->decoder, &p->block, p->outBuf, p->outBufSize)); + RINOK(XzDecMix_Init(&p->decoder, &p->block, p->outBuf, p->outBufSize)) } break; } @@ -1189,8 +1222,8 @@ SRes XzUnpacker_Code(CXzUnpacker *p, Byte *dest, SizeT *destLen, } else { - UInt32 checkSize = XzFlags_GetCheckSize(p->streamFlags); - UInt32 cur = checkSize - p->pos; + const unsigned checkSize = XzFlags_GetCheckSize(p->streamFlags); + unsigned cur = checkSize - p->pos; if (cur != 0) { if (srcRem == 0) @@ -1199,7 +1232,7 @@ SRes XzUnpacker_Code(CXzUnpacker *p, Byte *dest, SizeT *destLen, return SZ_OK; } if (cur > srcRem) - cur = (UInt32)srcRem; + cur = (unsigned)srcRem; memcpy(p->buf + p->pos, src, cur); p->pos += cur; (*srcLen) += cur; @@ -1288,9 +1321,9 @@ SRes XzUnpacker_Code(CXzUnpacker *p, Byte *dest, SizeT *destLen, case XZ_STATE_STREAM_FOOTER: { - UInt32 cur = XZ_STREAM_FOOTER_SIZE - p->pos; + unsigned cur = XZ_STREAM_FOOTER_SIZE - p->pos; if (cur > srcRem) - cur = (UInt32)srcRem; + cur = (unsigned)srcRem; memcpy(p->buf + p->pos, src, cur); p->pos += cur; (*srcLen) += cur; @@ -1325,6 +1358,8 @@ SRes XzUnpacker_Code(CXzUnpacker *p, Byte *dest, SizeT *destLen, } case XZ_STATE_BLOCK: break; /* to disable GCC warning */ + + default: return SZ_ERROR_FAIL; } } /* @@ -1389,7 +1424,7 @@ UInt64 XzUnpacker_GetExtraSize(const CXzUnpacker *p) -#ifndef _7ZIP_ST +#ifndef Z7_ST #include "MtDec.h" #endif @@ -1400,7 +1435,7 @@ void XzDecMtProps_Init(CXzDecMtProps *p) p->outStep_ST = 1 << 20; p->ignoreErrors = False; - #ifndef _7ZIP_ST + #ifndef Z7_ST p->numThreads = 1; p->inBufSize_MT = 1 << 18; p->memUseMax = sizeof(size_t) << 28; @@ -1409,7 +1444,7 @@ void XzDecMtProps_Init(CXzDecMtProps *p) -#ifndef _7ZIP_ST +#ifndef Z7_ST /* ---------- CXzDecMtThread ---------- */ @@ -1448,7 +1483,7 @@ typedef struct /* ---------- CXzDecMt ---------- */ -typedef struct +struct CXzDecMt { CAlignOffsetAlloc alignOffsetAlloc; ISzAllocPtr allocMid; @@ -1456,9 +1491,9 @@ typedef struct CXzDecMtProps props; size_t unpackBlockMaxSize; - ISeqInStream *inStream; - ISeqOutStream *outStream; - ICompressProgress *progress; + ISeqInStreamPtr inStream; + ISeqOutStreamPtr outStream; + ICompressProgressPtr progress; BoolInt finishMode; BoolInt outSize_Defined; @@ -1481,7 +1516,7 @@ typedef struct ECoderStatus status; SRes codeRes; - #ifndef _7ZIP_ST + #ifndef Z7_ST BoolInt mainDecoderWasCalled; // int statErrorDefined; int finishedDecoderIndex; @@ -1504,10 +1539,9 @@ typedef struct BoolInt mtc_WasConstructed; CMtDec mtc; - CXzDecMtThread coders[MTDEC__THREADS_MAX]; + CXzDecMtThread coders[MTDEC_THREADS_MAX]; #endif - -} CXzDecMt; +}; @@ -1535,11 +1569,11 @@ CXzDecMtHandle XzDecMt_Create(ISzAllocPtr alloc, ISzAllocPtr allocMid) XzDecMtProps_Init(&p->props); - #ifndef _7ZIP_ST + #ifndef Z7_ST p->mtc_WasConstructed = False; { unsigned i; - for (i = 0; i < MTDEC__THREADS_MAX; i++) + for (i = 0; i < MTDEC_THREADS_MAX; i++) { CXzDecMtThread *coder = &p->coders[i]; coder->dec_created = False; @@ -1549,16 +1583,16 @@ CXzDecMtHandle XzDecMt_Create(ISzAllocPtr alloc, ISzAllocPtr allocMid) } #endif - return p; + return (CXzDecMtHandle)p; } -#ifndef _7ZIP_ST +#ifndef Z7_ST static void XzDecMt_FreeOutBufs(CXzDecMt *p) { unsigned i; - for (i = 0; i < MTDEC__THREADS_MAX; i++) + for (i = 0; i < MTDEC_THREADS_MAX; i++) { CXzDecMtThread *coder = &p->coders[i]; if (coder->outBuf) @@ -1595,13 +1629,15 @@ static void XzDecMt_FreeSt(CXzDecMt *p) } -void XzDecMt_Destroy(CXzDecMtHandle pp) +// #define GET_CXzDecMt_p CXzDecMt *p = pp; + +void XzDecMt_Destroy(CXzDecMtHandle p) { - CXzDecMt *p = (CXzDecMt *)pp; + // GET_CXzDecMt_p XzDecMt_FreeSt(p); - #ifndef _7ZIP_ST + #ifndef Z7_ST if (p->mtc_WasConstructed) { @@ -1610,7 +1646,7 @@ void XzDecMt_Destroy(CXzDecMtHandle pp) } { unsigned i; - for (i = 0; i < MTDEC__THREADS_MAX; i++) + for (i = 0; i < MTDEC_THREADS_MAX; i++) { CXzDecMtThread *t = &p->coders[i]; if (t->dec_created) @@ -1625,12 +1661,12 @@ void XzDecMt_Destroy(CXzDecMtHandle pp) #endif - ISzAlloc_Free(p->alignOffsetAlloc.baseAlloc, pp); + ISzAlloc_Free(p->alignOffsetAlloc.baseAlloc, p); } -#ifndef _7ZIP_ST +#ifndef Z7_ST static void XzDecMt_Callback_Parse(void *obj, unsigned coderIndex, CMtDecCallbackInfo *cc) { @@ -1696,7 +1732,7 @@ static void XzDecMt_Callback_Parse(void *obj, unsigned coderIndex, CMtDecCallbac coder->dec.parseMode = True; coder->dec.headerParsedOk = False; - PRF_STR_INT("Parse", srcSize2); + PRF_STR_INT("Parse", srcSize2) res = XzUnpacker_Code(&coder->dec, NULL, &destSize, @@ -1739,10 +1775,10 @@ static void XzDecMt_Callback_Parse(void *obj, unsigned coderIndex, CMtDecCallbac } } { - UInt64 packSize = block->packSize; - UInt64 packSizeAligned = packSize + ((0 - (unsigned)packSize) & 3); - UInt32 checkSize = XzFlags_GetCheckSize(coder->dec.streamFlags); - UInt64 blockPackSum = coder->inPreSize + packSizeAligned + checkSize; + const UInt64 packSize = block->packSize; + const UInt64 packSizeAligned = packSize + ((0 - (unsigned)packSize) & 3); + const unsigned checkSize = XzFlags_GetCheckSize(coder->dec.streamFlags); + const UInt64 blockPackSum = coder->inPreSize + packSizeAligned + checkSize; // if (blockPackSum <= me->props.inBlockMax) // unpackBlockMaxSize { @@ -2071,7 +2107,7 @@ static SRes XzDecMt_Callback_Write(void *pp, unsigned coderIndex, } data += cur; size -= cur; - // PRF_STR_INT("Written size =", size); + // PRF_STR_INT("Written size =", size) if (size == 0) break; res = MtProgress_ProgressAdd(&me->mtc.mtProgress, 0, 0); @@ -2087,7 +2123,7 @@ static SRes XzDecMt_Callback_Write(void *pp, unsigned coderIndex, return res; } - RINOK(res); + RINOK(res) if (coder->inPreSize != coder->inCodeSize || coder->blockPackTotal != coder->inCodeSize) @@ -2106,13 +2142,13 @@ static SRes XzDecMt_Callback_Write(void *pp, unsigned coderIndex, // (coder->state == MTDEC_PARSE_END) means that there are no other working threads // so we can use mtc variables without lock - PRF_STR_INT("Write MTDEC_PARSE_END", me->mtc.inProcessed); + PRF_STR_INT("Write MTDEC_PARSE_END", me->mtc.inProcessed) me->mtc.mtProgress.totalInSize = me->mtc.inProcessed; { CXzUnpacker *dec = &me->dec; - PRF_STR_INT("PostSingle", srcSize); + PRF_STR_INT("PostSingle", srcSize) { size_t srcProcessed = srcSize; @@ -2186,7 +2222,7 @@ static SRes XzDecMt_Callback_Write(void *pp, unsigned coderIndex, me->mtc.crossEnd = srcSize; } - PRF_STR_INT("XZ_STATE_STREAM_HEADER crossEnd = ", (unsigned)me->mtc.crossEnd); + PRF_STR_INT("XZ_STATE_STREAM_HEADER crossEnd = ", (unsigned)me->mtc.crossEnd) return SZ_OK; } @@ -2277,7 +2313,7 @@ static SRes XzDecMt_Callback_Write(void *pp, unsigned coderIndex, UInt64 inDelta = me->mtc.inProcessed - inProgressPrev; if (inDelta >= (1 << 22)) { - RINOK(MtProgress_Progress_ST(&me->mtc.mtProgress)); + RINOK(MtProgress_Progress_ST(&me->mtc.mtProgress)) inProgressPrev = me->mtc.inProcessed; } } @@ -2331,7 +2367,7 @@ void XzStatInfo_Clear(CXzStatInfo *p) */ static SRes XzDecMt_Decode_ST(CXzDecMt *p - #ifndef _7ZIP_ST + #ifndef Z7_ST , BoolInt tMode #endif , CXzStatInfo *stat) @@ -2343,11 +2379,11 @@ static SRes XzDecMt_Decode_ST(CXzDecMt *p CXzUnpacker *dec; - #ifndef _7ZIP_ST + #ifndef Z7_ST if (tMode) { XzDecMt_FreeOutBufs(p); - tMode = MtDec_PrepareRead(&p->mtc); + tMode = (BoolInt)MtDec_PrepareRead(&p->mtc); } #endif @@ -2400,7 +2436,7 @@ static SRes XzDecMt_Decode_ST(CXzDecMt *p if (inPos == inLim) { - #ifndef _7ZIP_ST + #ifndef Z7_ST if (tMode) { inData = MtDec_Read(&p->mtc, &inLim); @@ -2577,19 +2613,19 @@ static void XzStatInfo_SetStat(const CXzUnpacker *dec, -SRes XzDecMt_Decode(CXzDecMtHandle pp, +SRes XzDecMt_Decode(CXzDecMtHandle p, const CXzDecMtProps *props, const UInt64 *outDataSize, int finishMode, - ISeqOutStream *outStream, + ISeqOutStreamPtr outStream, // Byte *outBuf, size_t *outBufSize, - ISeqInStream *inStream, + ISeqInStreamPtr inStream, // const Byte *inData, size_t inDataSize, CXzStatInfo *stat, int *isMT, - ICompressProgress *progress) + ICompressProgressPtr progress) { - CXzDecMt *p = (CXzDecMt *)pp; - #ifndef _7ZIP_ST + // GET_CXzDecMt_p + #ifndef Z7_ST BoolInt tMode; #endif @@ -2610,7 +2646,7 @@ SRes XzDecMt_Decode(CXzDecMtHandle pp, p->outSize = *outDataSize; } - p->finishMode = finishMode; + p->finishMode = (BoolInt)finishMode; // p->outSize = 457; p->outSize_Defined = True; p->finishMode = False; // for test @@ -2640,7 +2676,7 @@ SRes XzDecMt_Decode(CXzDecMtHandle pp, */ - #ifndef _7ZIP_ST + #ifndef Z7_ST p->isBlockHeaderState_Parse = False; p->isBlockHeaderState_Write = False; @@ -2782,7 +2818,7 @@ SRes XzDecMt_Decode(CXzDecMtHandle pp, return res; } - PRF_STR("----- decoding ST -----"); + PRF_STR("----- decoding ST -----") } #endif @@ -2792,13 +2828,13 @@ SRes XzDecMt_Decode(CXzDecMtHandle pp, { SRes res = XzDecMt_Decode_ST(p - #ifndef _7ZIP_ST + #ifndef Z7_ST , tMode #endif , stat ); - #ifndef _7ZIP_ST + #ifndef Z7_ST // we must set error code from MT decoding at first if (p->mainErrorCode != SZ_OK) stat->DecodeRes = p->mainErrorCode; @@ -2835,3 +2871,7 @@ SRes XzDecMt_Decode(CXzDecMtHandle pp, return res; } } + +#undef PRF +#undef PRF_STR +#undef PRF_STR_INT_2 diff --git a/deps/LZMA-SDK/C/XzEnc.c b/deps/LZMA-SDK/C/XzEnc.c index be174cccf..c1affadfa 100644 --- a/deps/LZMA-SDK/C/XzEnc.c +++ b/deps/LZMA-SDK/C/XzEnc.c @@ -1,5 +1,5 @@ /* XzEnc.c -- Xz Encode -2021-04-01 : Igor Pavlov : Public domain */ +2024-03-01 : Igor Pavlov : Public domain */ #include "Precomp.h" @@ -18,42 +18,43 @@ #include "XzEnc.h" -// #define _7ZIP_ST +// #define Z7_ST -#ifndef _7ZIP_ST +#ifndef Z7_ST #include "MtCoder.h" #else -#define MTCODER__THREADS_MAX 1 -#define MTCODER__BLOCKS_MAX 1 +#define MTCODER_THREADS_MAX 1 +#define MTCODER_BLOCKS_MAX 1 #endif #define XZ_GET_PAD_SIZE(dataSize) ((4 - ((unsigned)(dataSize) & 3)) & 3) -/* max pack size for LZMA2 block + check-64bytrs: */ -#define XZ_GET_MAX_BLOCK_PACK_SIZE(unpackSize) ((unpackSize) + ((unpackSize) >> 10) + 16 + 64) +#define XZ_CHECK_SIZE_MAX 64 +/* max pack size for LZMA2 block + pad4 + check_size: */ +#define XZ_GET_MAX_BLOCK_PACK_SIZE(unpackSize) ((unpackSize) + ((unpackSize) >> 10) + 16 + XZ_CHECK_SIZE_MAX) #define XZ_GET_ESTIMATED_BLOCK_TOTAL_PACK_SIZE(unpackSize) (XZ_BLOCK_HEADER_SIZE_MAX + XZ_GET_MAX_BLOCK_PACK_SIZE(unpackSize)) -#define XzBlock_ClearFlags(p) (p)->flags = 0; -#define XzBlock_SetNumFilters(p, n) (p)->flags = (Byte)((p)->flags | ((n) - 1)); +// #define XzBlock_ClearFlags(p) (p)->flags = 0; +#define XzBlock_ClearFlags_SetNumFilters(p, n) (p)->flags = (Byte)((n) - 1); #define XzBlock_SetHasPackSize(p) (p)->flags |= XZ_BF_PACK_SIZE; #define XzBlock_SetHasUnpackSize(p) (p)->flags |= XZ_BF_UNPACK_SIZE; -static SRes WriteBytes(ISeqOutStream *s, const void *buf, size_t size) +static SRes WriteBytes(ISeqOutStreamPtr s, const void *buf, size_t size) { return (ISeqOutStream_Write(s, buf, size) == size) ? SZ_OK : SZ_ERROR_WRITE; } -static SRes WriteBytesUpdateCrc(ISeqOutStream *s, const void *buf, size_t size, UInt32 *crc) +static SRes WriteBytes_UpdateCrc(ISeqOutStreamPtr s, const void *buf, size_t size, UInt32 *crc) { *crc = CrcUpdate(*crc, buf, size); return WriteBytes(s, buf, size); } -static SRes Xz_WriteHeader(CXzStreamFlags f, ISeqOutStream *s) +static SRes Xz_WriteHeader(CXzStreamFlags f, ISeqOutStreamPtr s) { UInt32 crc; Byte header[XZ_STREAM_HEADER_SIZE]; @@ -61,12 +62,12 @@ static SRes Xz_WriteHeader(CXzStreamFlags f, ISeqOutStream *s) header[XZ_SIG_SIZE] = (Byte)(f >> 8); header[XZ_SIG_SIZE + 1] = (Byte)(f & 0xFF); crc = CrcCalc(header + XZ_SIG_SIZE, XZ_STREAM_FLAGS_SIZE); - SetUi32(header + XZ_SIG_SIZE + XZ_STREAM_FLAGS_SIZE, crc); + SetUi32(header + XZ_SIG_SIZE + XZ_STREAM_FLAGS_SIZE, crc) return WriteBytes(s, header, XZ_STREAM_HEADER_SIZE); } -static SRes XzBlock_WriteHeader(const CXzBlock *p, ISeqOutStream *s) +static SRes XzBlock_WriteHeader(const CXzBlock *p, ISeqOutStreamPtr s) { Byte header[XZ_BLOCK_HEADER_SIZE_MAX]; @@ -91,7 +92,7 @@ static SRes XzBlock_WriteHeader(const CXzBlock *p, ISeqOutStream *s) header[pos++] = 0; header[0] = (Byte)(pos >> 2); - SetUi32(header + pos, CrcCalc(header, pos)); + SetUi32(header + pos, CrcCalc(header, pos)) return WriteBytes(s, header, pos + 4); } @@ -182,7 +183,7 @@ static SRes XzEncIndex_AddIndexRecord(CXzEncIndex *p, UInt64 unpackSize, UInt64 size_t newSize = p->allocated * 2 + 16 * 2; if (newSize < p->size + pos) return SZ_ERROR_MEM; - RINOK(XzEncIndex_ReAlloc(p, newSize, alloc)); + RINOK(XzEncIndex_ReAlloc(p, newSize, alloc)) } memcpy(p->blocks + p->size, buf, pos); p->size += pos; @@ -191,7 +192,7 @@ static SRes XzEncIndex_AddIndexRecord(CXzEncIndex *p, UInt64 unpackSize, UInt64 } -static SRes XzEncIndex_WriteFooter(const CXzEncIndex *p, CXzStreamFlags flags, ISeqOutStream *s) +static SRes XzEncIndex_WriteFooter(const CXzEncIndex *p, CXzStreamFlags flags, ISeqOutStreamPtr s) { Byte buf[32]; UInt64 globalPos; @@ -200,8 +201,8 @@ static SRes XzEncIndex_WriteFooter(const CXzEncIndex *p, CXzStreamFlags flags, I globalPos = pos; buf[0] = 0; - RINOK(WriteBytesUpdateCrc(s, buf, pos, &crc)); - RINOK(WriteBytesUpdateCrc(s, p->blocks, p->size, &crc)); + RINOK(WriteBytes_UpdateCrc(s, buf, pos, &crc)) + RINOK(WriteBytes_UpdateCrc(s, p->blocks, p->size, &crc)) globalPos += p->size; pos = XZ_GET_PAD_SIZE(globalPos); @@ -211,12 +212,12 @@ static SRes XzEncIndex_WriteFooter(const CXzEncIndex *p, CXzStreamFlags flags, I globalPos += pos; crc = CrcUpdate(crc, buf + 4 - pos, pos); - SetUi32(buf + 4, CRC_GET_DIGEST(crc)); + SetUi32(buf + 4, CRC_GET_DIGEST(crc)) - SetUi32(buf + 8 + 4, (UInt32)(globalPos >> 2)); + SetUi32(buf + 8 + 4, (UInt32)(globalPos >> 2)) buf[8 + 8] = (Byte)(flags >> 8); buf[8 + 9] = (Byte)(flags & 0xFF); - SetUi32(buf + 8, CrcCalc(buf + 8 + 4, 6)); + SetUi32(buf + 8, CrcCalc(buf + 8 + 4, 6)) buf[8 + 10] = XZ_FOOTER_SIG_0; buf[8 + 11] = XZ_FOOTER_SIG_1; @@ -230,7 +231,7 @@ static SRes XzEncIndex_WriteFooter(const CXzEncIndex *p, CXzStreamFlags flags, I typedef struct { ISeqInStream vt; - ISeqInStream *realStream; + ISeqInStreamPtr realStream; const Byte *data; UInt64 limit; UInt64 processed; @@ -251,9 +252,9 @@ static void SeqCheckInStream_GetDigest(CSeqCheckInStream *p, Byte *digest) XzCheck_Final(&p->check, digest); } -static SRes SeqCheckInStream_Read(const ISeqInStream *pp, void *data, size_t *size) +static SRes SeqCheckInStream_Read(ISeqInStreamPtr pp, void *data, size_t *size) { - CSeqCheckInStream *p = CONTAINER_FROM_VTBL(pp, CSeqCheckInStream, vt); + Z7_CONTAINER_FROM_VTBL_TO_DECL_VAR_pp_vt_p(CSeqCheckInStream) size_t size2 = *size; SRes res = SZ_OK; @@ -285,15 +286,15 @@ static SRes SeqCheckInStream_Read(const ISeqInStream *pp, void *data, size_t *si typedef struct { ISeqOutStream vt; - ISeqOutStream *realStream; + ISeqOutStreamPtr realStream; Byte *outBuf; size_t outBufLimit; UInt64 processed; } CSeqSizeOutStream; -static size_t SeqSizeOutStream_Write(const ISeqOutStream *pp, const void *data, size_t size) +static size_t SeqSizeOutStream_Write(ISeqOutStreamPtr pp, const void *data, size_t size) { - CSeqSizeOutStream *p = CONTAINER_FROM_VTBL(pp, CSeqSizeOutStream, vt); + Z7_CONTAINER_FROM_VTBL_TO_DECL_VAR_pp_vt_p(CSeqSizeOutStream) if (p->realStream) size = ISeqOutStream_Write(p->realStream, data, size); else @@ -313,8 +314,8 @@ static size_t SeqSizeOutStream_Write(const ISeqOutStream *pp, const void *data, typedef struct { - ISeqInStream p; - ISeqInStream *realStream; + ISeqInStream vt; + ISeqInStreamPtr realStream; IStateCoder StateCoder; Byte *buf; size_t curPos; @@ -323,7 +324,40 @@ typedef struct } CSeqInFilter; -SRes BraState_SetFromMethod(IStateCoder *p, UInt64 id, int encodeMode, ISzAllocPtr alloc); +static const z7_Func_BranchConv g_Funcs_BranchConv_RISC_Enc[] = +{ + Z7_BRANCH_CONV_ENC_2 (BranchConv_PPC), + Z7_BRANCH_CONV_ENC_2 (BranchConv_IA64), + Z7_BRANCH_CONV_ENC_2 (BranchConv_ARM), + Z7_BRANCH_CONV_ENC_2 (BranchConv_ARMT), + Z7_BRANCH_CONV_ENC_2 (BranchConv_SPARC), + Z7_BRANCH_CONV_ENC_2 (BranchConv_ARM64), + Z7_BRANCH_CONV_ENC_2 (BranchConv_RISCV) +}; + +static SizeT XzBcFilterStateBase_Filter_Enc(CXzBcFilterStateBase *p, Byte *data, SizeT size) +{ + switch (p->methodId) + { + case XZ_ID_Delta: + Delta_Encode(p->delta_State, p->delta, data, size); + break; + case XZ_ID_X86: + size = (SizeT)(z7_BranchConvSt_X86_Enc(data, size, p->ip, &p->X86_State) - data); + break; + default: + if (p->methodId >= XZ_ID_PPC) + { + const UInt32 i = p->methodId - XZ_ID_PPC; + if (i < Z7_ARRAY_SIZE(g_Funcs_BranchConv_RISC_Enc)) + size = (SizeT)(g_Funcs_BranchConv_RISC_Enc[i](data, size, p->ip) - data); + } + break; + } + p->ip += (UInt32)size; + return size; +} + static SRes SeqInFilter_Init(CSeqInFilter *p, const CXzFilter *props, ISzAllocPtr alloc) { @@ -335,17 +369,17 @@ static SRes SeqInFilter_Init(CSeqInFilter *p, const CXzFilter *props, ISzAllocPt } p->curPos = p->endPos = 0; p->srcWasFinished = 0; - RINOK(BraState_SetFromMethod(&p->StateCoder, props->id, 1, alloc)); - RINOK(p->StateCoder.SetProps(p->StateCoder.p, props->props, props->propsSize, alloc)); + RINOK(Xz_StateCoder_Bc_SetFromMethod_Func(&p->StateCoder, props->id, XzBcFilterStateBase_Filter_Enc, alloc)) + RINOK(p->StateCoder.SetProps(p->StateCoder.p, props->props, props->propsSize, alloc)) p->StateCoder.Init(p->StateCoder.p); return SZ_OK; } -static SRes SeqInFilter_Read(const ISeqInStream *pp, void *data, size_t *size) +static SRes SeqInFilter_Read(ISeqInStreamPtr pp, void *data, size_t *size) { - CSeqInFilter *p = CONTAINER_FROM_VTBL(pp, CSeqInFilter, p); - size_t sizeOriginal = *size; + Z7_CONTAINER_FROM_VTBL_TO_DECL_VAR_pp_vt_p(CSeqInFilter) + const size_t sizeOriginal = *size; if (sizeOriginal == 0) return SZ_OK; *size = 0; @@ -356,7 +390,7 @@ static SRes SeqInFilter_Read(const ISeqInStream *pp, void *data, size_t *size) { p->curPos = 0; p->endPos = FILTER_BUF_SIZE; - RINOK(ISeqInStream_Read(p->realStream, p->buf, &p->endPos)); + RINOK(ISeqInStream_Read(p->realStream, p->buf, &p->endPos)) if (p->endPos == 0) p->srcWasFinished = 1; } @@ -381,7 +415,7 @@ static void SeqInFilter_Construct(CSeqInFilter *p) { p->buf = NULL; p->StateCoder.p = NULL; - p->p.Read = SeqInFilter_Read; + p->vt.Read = SeqInFilter_Read; } static void SeqInFilter_Free(CSeqInFilter *p, ISzAllocPtr alloc) @@ -406,13 +440,13 @@ static void SeqInFilter_Free(CSeqInFilter *p, ISzAllocPtr alloc) typedef struct { ISeqInStream vt; - ISeqInStream *inStream; + ISeqInStreamPtr inStream; CSbEnc enc; } CSbEncInStream; -static SRes SbEncInStream_Read(const ISeqInStream *pp, void *data, size_t *size) +static SRes SbEncInStream_Read(ISeqInStreamPtr pp, void *data, size_t *size) { - CSbEncInStream *p = CONTAINER_FROM_VTBL(pp, CSbEncInStream, vt); + CSbEncInStream *p = Z7_CONTAINER_FROM_VTBL(pp, CSbEncInStream, vt); size_t sizeOriginal = *size; if (sizeOriginal == 0) return SZ_OK; @@ -422,7 +456,7 @@ static SRes SbEncInStream_Read(const ISeqInStream *pp, void *data, size_t *size) if (p->enc.needRead && !p->enc.readWasFinished) { size_t processed = p->enc.needReadSizeMax; - RINOK(p->inStream->Read(p->inStream, p->enc.buf + p->enc.readPos, &processed)); + RINOK(p->inStream->Read(p->inStream, p->enc.buf + p->enc.readPos, &processed)) p->enc.readPos += processed; if (processed == 0) { @@ -433,7 +467,7 @@ static SRes SbEncInStream_Read(const ISeqInStream *pp, void *data, size_t *size) } *size = sizeOriginal; - RINOK(SbEnc_Read(&p->enc, data, size)); + RINOK(SbEnc_Read(&p->enc, data, size)) if (*size != 0 || !p->enc.needRead) return SZ_OK; } @@ -473,7 +507,7 @@ void XzFilterProps_Init(CXzFilterProps *p) void XzProps_Init(CXzProps *p) { p->checkId = XZ_CHECK_CRC32; - p->blockSize = XZ_PROPS__BLOCK_SIZE__AUTO; + p->blockSize = XZ_PROPS_BLOCK_SIZE_AUTO; p->numBlockThreads_Reduced = -1; p->numBlockThreads_Max = -1; p->numTotalThreads = -1; @@ -502,8 +536,8 @@ static void XzEncProps_Normalize_Fixed(CXzProps *p) t2 = p->numBlockThreads_Max; t3 = p->numTotalThreads; - if (t2 > MTCODER__THREADS_MAX) - t2 = MTCODER__THREADS_MAX; + if (t2 > MTCODER_THREADS_MAX) + t2 = MTCODER_THREADS_MAX; if (t3 <= 0) { @@ -519,8 +553,8 @@ static void XzEncProps_Normalize_Fixed(CXzProps *p) t1 = 1; t2 = t3; } - if (t2 > MTCODER__THREADS_MAX) - t2 = MTCODER__THREADS_MAX; + if (t2 > MTCODER_THREADS_MAX) + t2 = MTCODER_THREADS_MAX; } else if (t1 <= 0) { @@ -571,7 +605,7 @@ static void XzProps_Normalize(CXzProps *p) /* we normalize xzProps properties, but we normalize only some of CXzProps::lzma2Props properties. Lzma2Enc_SetProps() will normalize lzma2Props later. */ - if (p->blockSize == XZ_PROPS__BLOCK_SIZE__SOLID) + if (p->blockSize == XZ_PROPS_BLOCK_SIZE_SOLID) { p->lzma2Props.lzmaProps.reduceSize = p->reduceSize; p->numBlockThreads_Reduced = 1; @@ -583,15 +617,15 @@ static void XzProps_Normalize(CXzProps *p) else { CLzma2EncProps *lzma2 = &p->lzma2Props; - if (p->blockSize == LZMA2_ENC_PROPS__BLOCK_SIZE__AUTO) + if (p->blockSize == LZMA2_ENC_PROPS_BLOCK_SIZE_AUTO) { // xz-auto p->lzma2Props.lzmaProps.reduceSize = p->reduceSize; - if (lzma2->blockSize == LZMA2_ENC_PROPS__BLOCK_SIZE__SOLID) + if (lzma2->blockSize == LZMA2_ENC_PROPS_BLOCK_SIZE_SOLID) { // if (xz-auto && lzma2-solid) - we use solid for both - p->blockSize = XZ_PROPS__BLOCK_SIZE__SOLID; + p->blockSize = XZ_PROPS_BLOCK_SIZE_SOLID; p->numBlockThreads_Reduced = 1; p->numBlockThreads_Max = 1; if (p->lzma2Props.numTotalThreads <= 0) @@ -610,9 +644,9 @@ static void XzProps_Normalize(CXzProps *p) p->blockSize = tp.blockSize; // fixed or solid p->numBlockThreads_Reduced = tp.numBlockThreads_Reduced; p->numBlockThreads_Max = tp.numBlockThreads_Max; - if (lzma2->blockSize == LZMA2_ENC_PROPS__BLOCK_SIZE__AUTO) - lzma2->blockSize = tp.blockSize; // fixed or solid, LZMA2_ENC_PROPS__BLOCK_SIZE__SOLID - if (lzma2->lzmaProps.reduceSize > tp.blockSize && tp.blockSize != LZMA2_ENC_PROPS__BLOCK_SIZE__SOLID) + if (lzma2->blockSize == LZMA2_ENC_PROPS_BLOCK_SIZE_AUTO) + lzma2->blockSize = tp.blockSize; // fixed or solid, LZMA2_ENC_PROPS_BLOCK_SIZE_SOLID + if (lzma2->lzmaProps.reduceSize > tp.blockSize && tp.blockSize != LZMA2_ENC_PROPS_BLOCK_SIZE_SOLID) lzma2->lzmaProps.reduceSize = tp.blockSize; lzma2->numBlockThreads_Reduced = 1; lzma2->numBlockThreads_Max = 1; @@ -631,9 +665,9 @@ static void XzProps_Normalize(CXzProps *p) r = p->blockSize; lzma2->lzmaProps.reduceSize = r; } - if (lzma2->blockSize == LZMA2_ENC_PROPS__BLOCK_SIZE__AUTO) - lzma2->blockSize = LZMA2_ENC_PROPS__BLOCK_SIZE__SOLID; - else if (lzma2->blockSize > p->blockSize && lzma2->blockSize != LZMA2_ENC_PROPS__BLOCK_SIZE__SOLID) + if (lzma2->blockSize == LZMA2_ENC_PROPS_BLOCK_SIZE_AUTO) + lzma2->blockSize = LZMA2_ENC_PROPS_BLOCK_SIZE_SOLID; + else if (lzma2->blockSize > p->blockSize && lzma2->blockSize != LZMA2_ENC_PROPS_BLOCK_SIZE_SOLID) lzma2->blockSize = p->blockSize; XzEncProps_Normalize_Fixed(p); @@ -704,17 +738,17 @@ typedef struct static SRes Xz_CompressBlock( CLzma2WithFilters *lzmaf, - ISeqOutStream *outStream, + ISeqOutStreamPtr outStream, Byte *outBufHeader, Byte *outBufData, size_t outBufDataLimit, - ISeqInStream *inStream, + ISeqInStreamPtr inStream, // UInt64 expectedSize, const Byte *inBuf, // used if (!inStream) size_t inBufSize, // used if (!inStream), it's block size, props->blockSize is ignored const CXzProps *props, - ICompressProgress *progress, + ICompressProgressPtr progress, int *inStreamFinished, /* only for inStream version */ CXzEncBlockInfo *blockSizes, ISzAllocPtr alloc, @@ -731,12 +765,12 @@ static SRes Xz_CompressBlock( *inStreamFinished = False; - RINOK(Lzma2WithFilters_Create(lzmaf, alloc, allocBig)); + RINOK(Lzma2WithFilters_Create(lzmaf, alloc, allocBig)) - RINOK(Lzma2Enc_SetProps(lzmaf->lzma2, &props->lzma2Props)); + RINOK(Lzma2Enc_SetProps(lzmaf->lzma2, &props->lzma2Props)) - XzBlock_ClearFlags(&block); - XzBlock_SetNumFilters(&block, 1 + (fp ? 1 : 0)); + // XzBlock_ClearFlags(&block) + XzBlock_ClearFlags_SetNumFilters(&block, 1 + (fp ? 1 : 0)) if (fp) { @@ -752,7 +786,7 @@ static SRes Xz_CompressBlock( else if (fp->ipDefined) { Byte *ptr = filter->props; - SetUi32(ptr, fp->ip); + SetUi32(ptr, fp->ip) filter->propsSize = 4; } } @@ -777,13 +811,13 @@ static SRes Xz_CompressBlock( if (props->blockSize != (UInt64)(Int64)-1) if (expectedSize > props->blockSize) block.unpackSize = props->blockSize; - XzBlock_SetHasUnpackSize(&block); + XzBlock_SetHasUnpackSize(&block) } */ if (outStream) { - RINOK(XzBlock_WriteHeader(&block, &seqSizeOutStream.vt)); + RINOK(XzBlock_WriteHeader(&block, &seqSizeOutStream.vt)) } checkInStream.vt.Read = SeqCheckInStream_Read; @@ -801,13 +835,13 @@ static SRes Xz_CompressBlock( if (fp->id == XZ_ID_Subblock) { lzmaf->sb.inStream = &checkInStream.vt; - RINOK(SbEncInStream_Init(&lzmaf->sb)); + RINOK(SbEncInStream_Init(&lzmaf->sb)) } else #endif { lzmaf->filter.realStream = &checkInStream.vt; - RINOK(SeqInFilter_Init(&lzmaf->filter, filter, alloc)); + RINOK(SeqInFilter_Init(&lzmaf->filter, filter, alloc)) } } @@ -841,7 +875,7 @@ static SRes Xz_CompressBlock( #ifdef USE_SUBBLOCK (fp->id == XZ_ID_Subblock) ? &lzmaf->sb.vt: #endif - &lzmaf->filter.p) : + &lzmaf->filter.vt) : &checkInStream.vt) : NULL, useStream ? NULL : inBuf, @@ -852,13 +886,13 @@ static SRes Xz_CompressBlock( if (outBuf) seqSizeOutStream.processed += outSize; - RINOK(res); + RINOK(res) blockSizes->unpackSize = checkInStream.processed; } { - Byte buf[4 + 64]; - unsigned padSize = XZ_GET_PAD_SIZE(seqSizeOutStream.processed); - UInt64 packSize = seqSizeOutStream.processed; + Byte buf[4 + XZ_CHECK_SIZE_MAX]; + const unsigned padSize = XZ_GET_PAD_SIZE(seqSizeOutStream.processed); + const UInt64 packSize = seqSizeOutStream.processed; buf[0] = 0; buf[1] = 0; @@ -866,7 +900,8 @@ static SRes Xz_CompressBlock( buf[3] = 0; SeqCheckInStream_GetDigest(&checkInStream, buf + 4); - RINOK(WriteBytes(&seqSizeOutStream.vt, buf + (4 - padSize), padSize + XzFlags_GetCheckSize((CXzStreamFlags)props->checkId))); + RINOK(WriteBytes(&seqSizeOutStream.vt, buf + (4 - padSize), + padSize + XzFlags_GetCheckSize((CXzStreamFlags)props->checkId))) blockSizes->totalSize = seqSizeOutStream.processed - padSize; @@ -877,12 +912,12 @@ static SRes Xz_CompressBlock( seqSizeOutStream.processed = 0; block.unpackSize = blockSizes->unpackSize; - XzBlock_SetHasUnpackSize(&block); + XzBlock_SetHasUnpackSize(&block) block.packSize = packSize; - XzBlock_SetHasPackSize(&block); + XzBlock_SetHasPackSize(&block) - RINOK(XzBlock_WriteHeader(&block, &seqSizeOutStream.vt)); + RINOK(XzBlock_WriteHeader(&block, &seqSizeOutStream.vt)) blockSizes->headerSize = (size_t)seqSizeOutStream.processed; blockSizes->totalSize += seqSizeOutStream.processed; @@ -906,15 +941,15 @@ static SRes Xz_CompressBlock( typedef struct { ICompressProgress vt; - ICompressProgress *progress; + ICompressProgressPtr progress; UInt64 inOffset; UInt64 outOffset; } CCompressProgress_XzEncOffset; -static SRes CompressProgress_XzEncOffset_Progress(const ICompressProgress *pp, UInt64 inSize, UInt64 outSize) +static SRes CompressProgress_XzEncOffset_Progress(ICompressProgressPtr pp, UInt64 inSize, UInt64 outSize) { - const CCompressProgress_XzEncOffset *p = CONTAINER_FROM_VTBL(pp, CCompressProgress_XzEncOffset, vt); + const CCompressProgress_XzEncOffset *p = Z7_CONTAINER_FROM_VTBL_CONST(pp, CCompressProgress_XzEncOffset, vt); inSize += p->inOffset; outSize += p->outOffset; return ICompressProgress_Progress(p->progress, inSize, outSize); @@ -923,7 +958,7 @@ static SRes CompressProgress_XzEncOffset_Progress(const ICompressProgress *pp, U -typedef struct +struct CXzEnc { ISzAllocPtr alloc; ISzAllocPtr allocBig; @@ -933,20 +968,19 @@ typedef struct CXzEncIndex xzIndex; - CLzma2WithFilters lzmaf_Items[MTCODER__THREADS_MAX]; + CLzma2WithFilters lzmaf_Items[MTCODER_THREADS_MAX]; size_t outBufSize; /* size of allocated outBufs[i] */ - Byte *outBufs[MTCODER__BLOCKS_MAX]; + Byte *outBufs[MTCODER_BLOCKS_MAX]; - #ifndef _7ZIP_ST + #ifndef Z7_ST unsigned checkType; - ISeqOutStream *outStream; + ISeqOutStreamPtr outStream; BoolInt mtCoder_WasConstructed; CMtCoder mtCoder; - CXzEncBlockInfo EncBlocks[MTCODER__BLOCKS_MAX]; + CXzEncBlockInfo EncBlocks[MTCODER_BLOCKS_MAX]; #endif - -} CXzEnc; +}; static void XzEnc_Construct(CXzEnc *p) @@ -955,13 +989,13 @@ static void XzEnc_Construct(CXzEnc *p) XzEncIndex_Construct(&p->xzIndex); - for (i = 0; i < MTCODER__THREADS_MAX; i++) + for (i = 0; i < MTCODER_THREADS_MAX; i++) Lzma2WithFilters_Construct(&p->lzmaf_Items[i]); - #ifndef _7ZIP_ST + #ifndef Z7_ST p->mtCoder_WasConstructed = False; { - for (i = 0; i < MTCODER__BLOCKS_MAX; i++) + for (i = 0; i < MTCODER_BLOCKS_MAX; i++) p->outBufs[i] = NULL; p->outBufSize = 0; } @@ -972,7 +1006,7 @@ static void XzEnc_Construct(CXzEnc *p) static void XzEnc_FreeOutBufs(CXzEnc *p) { unsigned i; - for (i = 0; i < MTCODER__BLOCKS_MAX; i++) + for (i = 0; i < MTCODER_BLOCKS_MAX; i++) if (p->outBufs[i]) { ISzAlloc_Free(p->alloc, p->outBufs[i]); @@ -988,10 +1022,10 @@ static void XzEnc_Free(CXzEnc *p, ISzAllocPtr alloc) XzEncIndex_Free(&p->xzIndex, alloc); - for (i = 0; i < MTCODER__THREADS_MAX; i++) + for (i = 0; i < MTCODER_THREADS_MAX; i++) Lzma2WithFilters_Free(&p->lzmaf_Items[i], alloc); - #ifndef _7ZIP_ST + #ifndef Z7_ST if (p->mtCoder_WasConstructed) { MtCoder_Destruct(&p->mtCoder); @@ -1013,37 +1047,38 @@ CXzEncHandle XzEnc_Create(ISzAllocPtr alloc, ISzAllocPtr allocBig) p->expectedDataSize = (UInt64)(Int64)-1; p->alloc = alloc; p->allocBig = allocBig; - return p; + return (CXzEncHandle)p; } +// #define GET_CXzEnc_p CXzEnc *p = (CXzEnc *)(void *)pp; -void XzEnc_Destroy(CXzEncHandle pp) +void XzEnc_Destroy(CXzEncHandle p) { - CXzEnc *p = (CXzEnc *)pp; + // GET_CXzEnc_p XzEnc_Free(p, p->alloc); ISzAlloc_Free(p->alloc, p); } -SRes XzEnc_SetProps(CXzEncHandle pp, const CXzProps *props) +SRes XzEnc_SetProps(CXzEncHandle p, const CXzProps *props) { - CXzEnc *p = (CXzEnc *)pp; + // GET_CXzEnc_p p->xzProps = *props; XzProps_Normalize(&p->xzProps); return SZ_OK; } -void XzEnc_SetDataSize(CXzEncHandle pp, UInt64 expectedDataSiize) +void XzEnc_SetDataSize(CXzEncHandle p, UInt64 expectedDataSiize) { - CXzEnc *p = (CXzEnc *)pp; + // GET_CXzEnc_p p->expectedDataSize = expectedDataSiize; } -#ifndef _7ZIP_ST +#ifndef Z7_ST static SRes XzEnc_MtCallback_Code(void *pp, unsigned coderIndex, unsigned outBufIndex, const Byte *src, size_t srcSize, int finished) @@ -1051,18 +1086,19 @@ static SRes XzEnc_MtCallback_Code(void *pp, unsigned coderIndex, unsigned outBuf CXzEnc *me = (CXzEnc *)pp; SRes res; CMtProgressThunk progressThunk; - - Byte *dest = me->outBufs[outBufIndex]; - + Byte *dest; UNUSED_VAR(finished) - { CXzEncBlockInfo *bInfo = &me->EncBlocks[outBufIndex]; bInfo->totalSize = 0; bInfo->unpackSize = 0; bInfo->headerSize = 0; + // v23.02: we don't compress empty blocks + // also we must ignore that empty block in XzEnc_MtCallback_Write() + if (srcSize == 0) + return SZ_OK; } - + dest = me->outBufs[outBufIndex]; if (!dest) { dest = (Byte *)ISzAlloc_Alloc(me->alloc, me->outBufSize); @@ -1073,7 +1109,7 @@ static SRes XzEnc_MtCallback_Code(void *pp, unsigned coderIndex, unsigned outBuf MtProgressThunk_CreateVTable(&progressThunk); progressThunk.mtProgress = &me->mtCoder.mtProgress; - MtProgressThunk_Init(&progressThunk); + MtProgressThunk_INIT(&progressThunk) { CXzEncBlockInfo blockSizes; @@ -1108,27 +1144,29 @@ static SRes XzEnc_MtCallback_Code(void *pp, unsigned coderIndex, unsigned outBuf static SRes XzEnc_MtCallback_Write(void *pp, unsigned outBufIndex) { CXzEnc *me = (CXzEnc *)pp; - const CXzEncBlockInfo *bInfo = &me->EncBlocks[outBufIndex]; - const Byte *data = me->outBufs[outBufIndex]; - - RINOK(WriteBytes(me->outStream, data, bInfo->headerSize)); - + // v23.02: we don't write empty blocks + // note: if (bInfo->unpackSize == 0) then there is no compressed data of block + if (bInfo->unpackSize == 0) + return SZ_OK; { - UInt64 totalPackFull = bInfo->totalSize + XZ_GET_PAD_SIZE(bInfo->totalSize); - RINOK(WriteBytes(me->outStream, data + XZ_BLOCK_HEADER_SIZE_MAX, (size_t)totalPackFull - bInfo->headerSize)); + const Byte *data = me->outBufs[outBufIndex]; + RINOK(WriteBytes(me->outStream, data, bInfo->headerSize)) + { + const UInt64 totalPackFull = bInfo->totalSize + XZ_GET_PAD_SIZE(bInfo->totalSize); + RINOK(WriteBytes(me->outStream, data + XZ_BLOCK_HEADER_SIZE_MAX, (size_t)totalPackFull - bInfo->headerSize)) + } + return XzEncIndex_AddIndexRecord(&me->xzIndex, bInfo->unpackSize, bInfo->totalSize, me->alloc); } - - return XzEncIndex_AddIndexRecord(&me->xzIndex, bInfo->unpackSize, bInfo->totalSize, me->alloc); } #endif -SRes XzEnc_Encode(CXzEncHandle pp, ISeqOutStream *outStream, ISeqInStream *inStream, ICompressProgress *progress) +SRes XzEnc_Encode(CXzEncHandle p, ISeqOutStreamPtr outStream, ISeqInStreamPtr inStream, ICompressProgressPtr progress) { - CXzEnc *p = (CXzEnc *)pp; + // GET_CXzEnc_p const CXzProps *props = &p->xzProps; @@ -1137,7 +1175,7 @@ SRes XzEnc_Encode(CXzEncHandle pp, ISeqOutStream *outStream, ISeqInStream *inStr UInt64 numBlocks = 1; UInt64 blockSize = props->blockSize; - if (blockSize != XZ_PROPS__BLOCK_SIZE__SOLID + if (blockSize != XZ_PROPS_BLOCK_SIZE_SOLID && props->reduceSize != (UInt64)(Int64)-1) { numBlocks = props->reduceSize / blockSize; @@ -1147,13 +1185,13 @@ SRes XzEnc_Encode(CXzEncHandle pp, ISeqOutStream *outStream, ISeqInStream *inStr else blockSize = (UInt64)1 << 62; - RINOK(XzEncIndex_PreAlloc(&p->xzIndex, numBlocks, blockSize, XZ_GET_ESTIMATED_BLOCK_TOTAL_PACK_SIZE(blockSize), p->alloc)); + RINOK(XzEncIndex_PreAlloc(&p->xzIndex, numBlocks, blockSize, XZ_GET_ESTIMATED_BLOCK_TOTAL_PACK_SIZE(blockSize), p->alloc)) } - RINOK(Xz_WriteHeader((CXzStreamFlags)props->checkId, outStream)); + RINOK(Xz_WriteHeader((CXzStreamFlags)props->checkId, outStream)) - #ifndef _7ZIP_ST + #ifndef Z7_ST if (props->numBlockThreads_Reduced > 1) { IMtCoderCallback2 vt; @@ -1180,8 +1218,8 @@ SRes XzEnc_Encode(CXzEncHandle pp, ISeqOutStream *outStream, ISeqInStream *inStr p->mtCoder.mtCallback = &vt; p->mtCoder.mtCallbackObject = p; - if ( props->blockSize == XZ_PROPS__BLOCK_SIZE__SOLID - || props->blockSize == XZ_PROPS__BLOCK_SIZE__AUTO) + if ( props->blockSize == XZ_PROPS_BLOCK_SIZE_SOLID + || props->blockSize == XZ_PROPS_BLOCK_SIZE_AUTO) return SZ_ERROR_FAIL; p->mtCoder.blockSize = (size_t)props->blockSize; @@ -1200,7 +1238,7 @@ SRes XzEnc_Encode(CXzEncHandle pp, ISeqOutStream *outStream, ISeqInStream *inStr p->mtCoder.numThreadsMax = (unsigned)props->numBlockThreads_Max; p->mtCoder.expectedDataSize = p->expectedDataSize; - RINOK(MtCoder_Code(&p->mtCoder)); + RINOK(MtCoder_Code(&p->mtCoder)) } else #endif @@ -1217,7 +1255,7 @@ SRes XzEnc_Encode(CXzEncHandle pp, ISeqOutStream *outStream, ISeqInStream *inStr writeStartSizes = 0; - if (props->blockSize != XZ_PROPS__BLOCK_SIZE__SOLID) + if (props->blockSize != XZ_PROPS_BLOCK_SIZE_SOLID) { writeStartSizes = (props->forceWriteSizesInHeader > 0); @@ -1274,18 +1312,18 @@ SRes XzEnc_Encode(CXzEncHandle pp, ISeqOutStream *outStream, ISeqInStream *inStr &inStreamFinished, &blockSizes, p->alloc, - p->allocBig)); + p->allocBig)) { UInt64 totalPackFull = blockSizes.totalSize + XZ_GET_PAD_SIZE(blockSizes.totalSize); if (writeStartSizes) { - RINOK(WriteBytes(outStream, p->outBufs[0], blockSizes.headerSize)); - RINOK(WriteBytes(outStream, bufData, (size_t)totalPackFull - blockSizes.headerSize)); + RINOK(WriteBytes(outStream, p->outBufs[0], blockSizes.headerSize)) + RINOK(WriteBytes(outStream, bufData, (size_t)totalPackFull - blockSizes.headerSize)) } - RINOK(XzEncIndex_AddIndexRecord(&p->xzIndex, blockSizes.unpackSize, blockSizes.totalSize, p->alloc)); + RINOK(XzEncIndex_AddIndexRecord(&p->xzIndex, blockSizes.unpackSize, blockSizes.totalSize, p->alloc)) progress2.inOffset += blockSizes.unpackSize; progress2.outOffset += totalPackFull; @@ -1302,8 +1340,8 @@ SRes XzEnc_Encode(CXzEncHandle pp, ISeqOutStream *outStream, ISeqInStream *inStr #include "Alloc.h" -SRes Xz_Encode(ISeqOutStream *outStream, ISeqInStream *inStream, - const CXzProps *props, ICompressProgress *progress) +SRes Xz_Encode(ISeqOutStreamPtr outStream, ISeqInStreamPtr inStream, + const CXzProps *props, ICompressProgressPtr progress) { SRes res; CXzEncHandle xz = XzEnc_Create(&g_Alloc, &g_BigAlloc); @@ -1317,7 +1355,7 @@ SRes Xz_Encode(ISeqOutStream *outStream, ISeqInStream *inStream, } -SRes Xz_EncodeEmpty(ISeqOutStream *outStream) +SRes Xz_EncodeEmpty(ISeqOutStreamPtr outStream) { SRes res; CXzEncIndex xzIndex; diff --git a/deps/LZMA-SDK/C/XzEnc.h b/deps/LZMA-SDK/C/XzEnc.h index 0c29e7e1e..77b78c014 100644 --- a/deps/LZMA-SDK/C/XzEnc.h +++ b/deps/LZMA-SDK/C/XzEnc.h @@ -1,8 +1,8 @@ /* XzEnc.h -- Xz Encode -2017-06-27 : Igor Pavlov : Public domain */ +2023-04-13 : Igor Pavlov : Public domain */ -#ifndef __XZ_ENC_H -#define __XZ_ENC_H +#ifndef ZIP7_INC_XZ_ENC_H +#define ZIP7_INC_XZ_ENC_H #include "Lzma2Enc.h" @@ -11,8 +11,8 @@ EXTERN_C_BEGIN -#define XZ_PROPS__BLOCK_SIZE__AUTO LZMA2_ENC_PROPS__BLOCK_SIZE__AUTO -#define XZ_PROPS__BLOCK_SIZE__SOLID LZMA2_ENC_PROPS__BLOCK_SIZE__SOLID +#define XZ_PROPS_BLOCK_SIZE_AUTO LZMA2_ENC_PROPS_BLOCK_SIZE_AUTO +#define XZ_PROPS_BLOCK_SIZE_SOLID LZMA2_ENC_PROPS_BLOCK_SIZE_SOLID typedef struct @@ -41,19 +41,20 @@ typedef struct void XzProps_Init(CXzProps *p); - -typedef void * CXzEncHandle; +typedef struct CXzEnc CXzEnc; +typedef CXzEnc * CXzEncHandle; +// Z7_DECLARE_HANDLE(CXzEncHandle) CXzEncHandle XzEnc_Create(ISzAllocPtr alloc, ISzAllocPtr allocBig); void XzEnc_Destroy(CXzEncHandle p); SRes XzEnc_SetProps(CXzEncHandle p, const CXzProps *props); void XzEnc_SetDataSize(CXzEncHandle p, UInt64 expectedDataSiize); -SRes XzEnc_Encode(CXzEncHandle p, ISeqOutStream *outStream, ISeqInStream *inStream, ICompressProgress *progress); +SRes XzEnc_Encode(CXzEncHandle p, ISeqOutStreamPtr outStream, ISeqInStreamPtr inStream, ICompressProgressPtr progress); -SRes Xz_Encode(ISeqOutStream *outStream, ISeqInStream *inStream, - const CXzProps *props, ICompressProgress *progress); +SRes Xz_Encode(ISeqOutStreamPtr outStream, ISeqInStreamPtr inStream, + const CXzProps *props, ICompressProgressPtr progress); -SRes Xz_EncodeEmpty(ISeqOutStream *outStream); +SRes Xz_EncodeEmpty(ISeqOutStreamPtr outStream); EXTERN_C_END diff --git a/deps/LZMA-SDK/C/XzIn.c b/deps/LZMA-SDK/C/XzIn.c index 84f868ec6..b68af965c 100644 --- a/deps/LZMA-SDK/C/XzIn.c +++ b/deps/LZMA-SDK/C/XzIn.c @@ -1,5 +1,5 @@ /* XzIn.c - Xz input -2021-09-04 : Igor Pavlov : Public domain */ +2023-09-07 : Igor Pavlov : Public domain */ #include "Precomp.h" @@ -15,27 +15,29 @@ #define XZ_FOOTER_SIG_CHECK(p) ((p)[0] == XZ_FOOTER_SIG_0 && (p)[1] == XZ_FOOTER_SIG_1) -SRes Xz_ReadHeader(CXzStreamFlags *p, ISeqInStream *inStream) +SRes Xz_ReadHeader(CXzStreamFlags *p, ISeqInStreamPtr inStream) { Byte sig[XZ_STREAM_HEADER_SIZE]; - RINOK(SeqInStream_Read2(inStream, sig, XZ_STREAM_HEADER_SIZE, SZ_ERROR_NO_ARCHIVE)); - if (memcmp(sig, XZ_SIG, XZ_SIG_SIZE) != 0) + size_t processedSize = XZ_STREAM_HEADER_SIZE; + RINOK(SeqInStream_ReadMax(inStream, sig, &processedSize)) + if (processedSize != XZ_STREAM_HEADER_SIZE + || memcmp(sig, XZ_SIG, XZ_SIG_SIZE) != 0) return SZ_ERROR_NO_ARCHIVE; return Xz_ParseHeader(p, sig); } #define READ_VARINT_AND_CHECK(buf, pos, size, res) \ - { unsigned s = Xz_ReadVarInt(buf + pos, size - pos, res); \ + { const unsigned s = Xz_ReadVarInt(buf + pos, size - pos, res); \ if (s == 0) return SZ_ERROR_ARCHIVE; \ pos += s; } -SRes XzBlock_ReadHeader(CXzBlock *p, ISeqInStream *inStream, BoolInt *isIndex, UInt32 *headerSizeRes) +SRes XzBlock_ReadHeader(CXzBlock *p, ISeqInStreamPtr inStream, BoolInt *isIndex, UInt32 *headerSizeRes) { Byte header[XZ_BLOCK_HEADER_SIZE_MAX]; unsigned headerSize; *headerSizeRes = 0; - RINOK(SeqInStream_ReadByte(inStream, &header[0])); - headerSize = (unsigned)header[0]; + RINOK(SeqInStream_ReadByte(inStream, &header[0])) + headerSize = header[0]; if (headerSize == 0) { *headerSizeRes = 1; @@ -45,20 +47,27 @@ SRes XzBlock_ReadHeader(CXzBlock *p, ISeqInStream *inStream, BoolInt *isIndex, U *isIndex = False; headerSize = (headerSize << 2) + 4; - *headerSizeRes = headerSize; - RINOK(SeqInStream_Read(inStream, header + 1, headerSize - 1)); + *headerSizeRes = (UInt32)headerSize; + { + size_t processedSize = headerSize - 1; + RINOK(SeqInStream_ReadMax(inStream, header + 1, &processedSize)) + if (processedSize != headerSize - 1) + return SZ_ERROR_INPUT_EOF; + } return XzBlock_Parse(p, header); } #define ADD_SIZE_CHECK(size, val) \ - { UInt64 newSize = size + (val); if (newSize < size) return XZ_SIZE_OVERFLOW; size = newSize; } + { const UInt64 newSize = size + (val); if (newSize < size) return XZ_SIZE_OVERFLOW; size = newSize; } UInt64 Xz_GetUnpackSize(const CXzStream *p) { UInt64 size = 0; size_t i; for (i = 0; i < p->numBlocks; i++) - ADD_SIZE_CHECK(size, p->blocks[i].unpackSize); + { + ADD_SIZE_CHECK(size, p->blocks[i].unpackSize) + } return size; } @@ -67,12 +76,14 @@ UInt64 Xz_GetPackSize(const CXzStream *p) UInt64 size = 0; size_t i; for (i = 0; i < p->numBlocks; i++) - ADD_SIZE_CHECK(size, (p->blocks[i].totalSize + 3) & ~(UInt64)3); + { + ADD_SIZE_CHECK(size, (p->blocks[i].totalSize + 3) & ~(UInt64)3) + } return size; } /* -SRes XzBlock_ReadFooter(CXzBlock *p, CXzStreamFlags f, ISeqInStream *inStream) +SRes XzBlock_ReadFooter(CXzBlock *p, CXzStreamFlags f, ISeqInStreamPtr inStream) { return SeqInStream_Read(inStream, p->check, XzFlags_GetCheckSize(f)); } @@ -93,7 +104,7 @@ static SRes Xz_ReadIndex2(CXzStream *p, const Byte *buf, size_t size, ISzAllocPt { UInt64 numBlocks64; - READ_VARINT_AND_CHECK(buf, pos, size, &numBlocks64); + READ_VARINT_AND_CHECK(buf, pos, size, &numBlocks64) numBlocks = (size_t)numBlocks64; if (numBlocks != numBlocks64 || numBlocks * 2 > size) return SZ_ERROR_ARCHIVE; @@ -110,8 +121,8 @@ static SRes Xz_ReadIndex2(CXzStream *p, const Byte *buf, size_t size, ISzAllocPt for (i = 0; i < numBlocks; i++) { CXzBlockSizes *block = &p->blocks[i]; - READ_VARINT_AND_CHECK(buf, pos, size, &block->totalSize); - READ_VARINT_AND_CHECK(buf, pos, size, &block->unpackSize); + READ_VARINT_AND_CHECK(buf, pos, size, &block->totalSize) + READ_VARINT_AND_CHECK(buf, pos, size, &block->unpackSize) if (block->totalSize == 0) return SZ_ERROR_ARCHIVE; } @@ -122,7 +133,7 @@ static SRes Xz_ReadIndex2(CXzStream *p, const Byte *buf, size_t size, ISzAllocPt return (pos == size) ? SZ_OK : SZ_ERROR_ARCHIVE; } -static SRes Xz_ReadIndex(CXzStream *p, ILookInStream *stream, UInt64 indexSize, ISzAllocPtr alloc) +static SRes Xz_ReadIndex(CXzStream *p, ILookInStreamPtr stream, UInt64 indexSize, ISzAllocPtr alloc) { SRes res; size_t size; @@ -142,14 +153,14 @@ static SRes Xz_ReadIndex(CXzStream *p, ILookInStream *stream, UInt64 indexSize, return res; } -static SRes LookInStream_SeekRead_ForArc(ILookInStream *stream, UInt64 offset, void *buf, size_t size) +static SRes LookInStream_SeekRead_ForArc(ILookInStreamPtr stream, UInt64 offset, void *buf, size_t size) { - RINOK(LookInStream_SeekTo(stream, offset)); + RINOK(LookInStream_SeekTo(stream, offset)) return LookInStream_Read(stream, buf, size); /* return LookInStream_Read2(stream, buf, size, SZ_ERROR_NO_ARCHIVE); */ } -static SRes Xz_ReadBackward(CXzStream *p, ILookInStream *stream, Int64 *startOffset, ISzAllocPtr alloc) +static SRes Xz_ReadBackward(CXzStream *p, ILookInStreamPtr stream, Int64 *startOffset, ISzAllocPtr alloc) { UInt64 indexSize; Byte buf[XZ_STREAM_FOOTER_SIZE]; @@ -159,7 +170,7 @@ static SRes Xz_ReadBackward(CXzStream *p, ILookInStream *stream, Int64 *startOff return SZ_ERROR_NO_ARCHIVE; pos -= XZ_STREAM_FOOTER_SIZE; - RINOK(LookInStream_SeekRead_ForArc(stream, pos, buf, XZ_STREAM_FOOTER_SIZE)); + RINOK(LookInStream_SeekRead_ForArc(stream, pos, buf, XZ_STREAM_FOOTER_SIZE)) if (!XZ_FOOTER_SIG_CHECK(buf + 10)) { @@ -174,7 +185,7 @@ static SRes Xz_ReadBackward(CXzStream *p, ILookInStream *stream, Int64 *startOff i = (pos > TEMP_BUF_SIZE) ? TEMP_BUF_SIZE : (size_t)pos; pos -= i; - RINOK(LookInStream_SeekRead_ForArc(stream, pos, temp, i)); + RINOK(LookInStream_SeekRead_ForArc(stream, pos, temp, i)) total += (UInt32)i; for (; i != 0; i--) if (temp[i - 1] != 0) @@ -193,7 +204,7 @@ static SRes Xz_ReadBackward(CXzStream *p, ILookInStream *stream, Int64 *startOff if (pos < XZ_STREAM_FOOTER_SIZE) return SZ_ERROR_NO_ARCHIVE; pos -= XZ_STREAM_FOOTER_SIZE; - RINOK(LookInStream_SeekRead_ForArc(stream, pos, buf, XZ_STREAM_FOOTER_SIZE)); + RINOK(LookInStream_SeekRead_ForArc(stream, pos, buf, XZ_STREAM_FOOTER_SIZE)) if (!XZ_FOOTER_SIG_CHECK(buf + 10)) return SZ_ERROR_NO_ARCHIVE; } @@ -217,8 +228,8 @@ static SRes Xz_ReadBackward(CXzStream *p, ILookInStream *stream, Int64 *startOff return SZ_ERROR_ARCHIVE; pos -= indexSize; - RINOK(LookInStream_SeekTo(stream, pos)); - RINOK(Xz_ReadIndex(p, stream, indexSize, alloc)); + RINOK(LookInStream_SeekTo(stream, pos)) + RINOK(Xz_ReadIndex(p, stream, indexSize, alloc)) { UInt64 totalSize = Xz_GetPackSize(p); @@ -227,7 +238,7 @@ static SRes Xz_ReadBackward(CXzStream *p, ILookInStream *stream, Int64 *startOff || pos < totalSize + XZ_STREAM_HEADER_SIZE) return SZ_ERROR_ARCHIVE; pos -= (totalSize + XZ_STREAM_HEADER_SIZE); - RINOK(LookInStream_SeekTo(stream, pos)); + RINOK(LookInStream_SeekTo(stream, pos)) *startOffset = (Int64)pos; } { @@ -236,7 +247,7 @@ static SRes Xz_ReadBackward(CXzStream *p, ILookInStream *stream, Int64 *startOff SecToRead_CreateVTable(&secToRead); secToRead.realStream = stream; - RINOK(Xz_ReadHeader(&headerFlags, &secToRead.vt)); + RINOK(Xz_ReadHeader(&headerFlags, &secToRead.vt)) return (p->flags == headerFlags) ? SZ_OK : SZ_ERROR_ARCHIVE; } } @@ -274,7 +285,9 @@ UInt64 Xzs_GetUnpackSize(const CXzs *p) UInt64 size = 0; size_t i; for (i = 0; i < p->num; i++) - ADD_SIZE_CHECK(size, Xz_GetUnpackSize(&p->streams[i])); + { + ADD_SIZE_CHECK(size, Xz_GetUnpackSize(&p->streams[i])) + } return size; } @@ -284,15 +297,17 @@ UInt64 Xzs_GetPackSize(const CXzs *p) UInt64 size = 0; size_t i; for (i = 0; i < p->num; i++) - ADD_SIZE_CHECK(size, Xz_GetTotalSize(&p->streams[i])); + { + ADD_SIZE_CHECK(size, Xz_GetTotalSize(&p->streams[i])) + } return size; } */ -SRes Xzs_ReadBackward(CXzs *p, ILookInStream *stream, Int64 *startOffset, ICompressProgress *progress, ISzAllocPtr alloc) +SRes Xzs_ReadBackward(CXzs *p, ILookInStreamPtr stream, Int64 *startOffset, ICompressProgressPtr progress, ISzAllocPtr alloc) { Int64 endOffset = 0; - RINOK(ILookInStream_Seek(stream, &endOffset, SZ_SEEK_END)); + RINOK(ILookInStream_Seek(stream, &endOffset, SZ_SEEK_END)) *startOffset = endOffset; for (;;) { @@ -301,7 +316,7 @@ SRes Xzs_ReadBackward(CXzs *p, ILookInStream *stream, Int64 *startOffset, ICompr Xz_Construct(&st); res = Xz_ReadBackward(&st, stream, startOffset, alloc); st.startOffset = (UInt64)*startOffset; - RINOK(res); + RINOK(res) if (p->num == p->numAllocated) { const size_t newNum = p->num + p->num / 4 + 1; @@ -317,7 +332,7 @@ SRes Xzs_ReadBackward(CXzs *p, ILookInStream *stream, Int64 *startOffset, ICompr p->streams[p->num++] = st; if (*startOffset == 0) break; - RINOK(LookInStream_SeekTo(stream, (UInt64)*startOffset)); + RINOK(LookInStream_SeekTo(stream, (UInt64)*startOffset)) if (progress && ICompressProgress_Progress(progress, (UInt64)(endOffset - *startOffset), (UInt64)(Int64)-1) != SZ_OK) return SZ_ERROR_PROGRESS; } diff --git a/deps/LZMA-SDK/C/var_clang_arm64.mak b/deps/LZMA-SDK/C/var_clang_arm64.mak index 4b3540969..971101a04 100644 --- a/deps/LZMA-SDK/C/var_clang_arm64.mak +++ b/deps/LZMA-SDK/C/var_clang_arm64.mak @@ -6,6 +6,7 @@ IS_ARM64=1 CROSS_COMPILE= MY_ARCH= USE_ASM=1 +ASM_FLAGS=-Wno-unused-macros CC=$(CROSS_COMPILE)clang CXX=$(CROSS_COMPILE)clang++ USE_CLANG=1 diff --git a/deps/LZMA-SDK/C/warn_clang.mak b/deps/LZMA-SDK/C/warn_clang.mak index ed4f908f6..0d6446d21 100644 --- a/deps/LZMA-SDK/C/warn_clang.mak +++ b/deps/LZMA-SDK/C/warn_clang.mak @@ -1,37 +1 @@ -CFLAGS_WARN_CLANG_3_8_UNIQ = \ - -Wno-reserved-id-macro \ - -Wno-old-style-cast \ - -Wno-c++11-long-long \ - -Wno-unused-macros \ - -CFLAGS_WARN_CLANG_3_8 = \ - $(CFLAGS_WARN_CLANG_3_8_UNIQ) \ - -Weverything \ - -Wno-extra-semi \ - -Wno-sign-conversion \ - -Wno-language-extension-token \ - -Wno-global-constructors \ - -Wno-non-virtual-dtor \ - -Wno-switch-enum \ - -Wno-covered-switch-default \ - -Wno-cast-qual \ - -Wno-padded \ - -Wno-exit-time-destructors \ - -Wno-weak-vtables \ - -CFLAGS_WARN_CLANG_12= $(CFLAGS_WARN_CLANG_3_8) \ - -Wno-extra-semi-stmt \ - -Wno-zero-as-null-pointer-constant \ - -Wno-deprecated-dynamic-exception-spec \ - -Wno-c++98-compat-pedantic \ - -Wno-atomic-implicit-seq-cst \ - -Wconversion \ - -Wno-sign-conversion \ - -CFLAGS_WARN_1 = \ - -Wno-deprecated-copy-dtor \ - - - - -CFLAGS_WARN = $(CFLAGS_WARN_CLANG_12) $(CFLAGS_WARN_1) +CFLAGS_WARN = -Weverything -Wfatal-errors diff --git a/deps/LZMA-SDK/C/warn_clang_mac.mak b/deps/LZMA-SDK/C/warn_clang_mac.mak index 41044a2ce..44afc5374 100644 --- a/deps/LZMA-SDK/C/warn_clang_mac.mak +++ b/deps/LZMA-SDK/C/warn_clang_mac.mak @@ -1,37 +1 @@ -CFLAGS_WARN_CLANG_3_8_UNIQ = \ - -Wno-reserved-id-macro \ - -Wno-old-style-cast \ - -Wno-c++11-long-long \ - -Wno-unused-macros \ - -CFLAGS_WARN_CLANG_3_8 = \ - $(CFLAGS_WARN_CLANG_3_8_UNIQ) \ - -Weverything \ - -Wno-extra-semi \ - -Wno-sign-conversion \ - -Wno-language-extension-token \ - -Wno-global-constructors \ - -Wno-non-virtual-dtor \ - -Wno-switch-enum \ - -Wno-covered-switch-default \ - -Wno-cast-qual \ - -Wno-padded \ - -Wno-exit-time-destructors \ - -Wno-weak-vtables \ - -CFLAGS_WARN_CLANG_12= $(CFLAGS_WARN_CLANG_3_8) \ - -Wno-extra-semi-stmt \ - -Wno-zero-as-null-pointer-constant \ - -Wno-deprecated-dynamic-exception-spec \ - -Wno-c++98-compat-pedantic \ - -Wno-atomic-implicit-seq-cst \ - -Wconversion \ - -Wno-sign-conversion \ - -CFLAGS_WARN_MAC = \ - -Wno-poison-system-directories \ - -Wno-c++11-long-long \ - -Wno-atomic-implicit-seq-cst \ - - -CFLAGS_WARN = $(CFLAGS_WARN_CLANG_12) $(CFLAGS_WARN_MAC) +CFLAGS_WARN = -Weverything -Wfatal-errors -Wno-poison-system-directories diff --git a/deps/LZMA-SDK/DOC/7zC.txt b/deps/LZMA-SDK/DOC/7zC.txt index 939b720f9..49276787f 100644 --- a/deps/LZMA-SDK/DOC/7zC.txt +++ b/deps/LZMA-SDK/DOC/7zC.txt @@ -1,187 +1,187 @@ -7z ANSI-C Decoder 9.35 ----------------------- - -7z ANSI-C provides 7z/LZMA decoding. -7z ANSI-C version is simplified version ported from C++ code. - -LZMA is default and general compression method of 7z format -in 7-Zip compression program (www.7-zip.org). LZMA provides high -compression ratio and very fast decompression. - - -LICENSE -------- - -7z ANSI-C Decoder is part of the LZMA SDK. -LZMA SDK is written and placed in the public domain by Igor Pavlov. - -Files ---------------------- - -7zDecode.* - Low level 7z decoding -7zExtract.* - High level 7z decoding -7zHeader.* - .7z format constants -7zIn.* - .7z archive opening -7zItem.* - .7z structures -7zMain.c - Test application - - -How To Use ----------- - -You can create .7z archive with 7z.exe, 7za.exe or 7zr.exe: - - 7z.exe a archive.7z *.htm -r -mx -m0fb=255 - -If you have big number of files in archive, and you need fast extracting, -you can use partly-solid archives: - - 7za.exe a archive.7z *.htm -ms=512K -r -mx -m0fb=255 -m0d=512K - -In that example 7-Zip will use 512KB solid blocks. So it needs to decompress only -512KB for extracting one file from such archive. - - -Limitations of current version of 7z ANSI-C Decoder ---------------------------------------------------- - - - It reads only "FileName", "Size", "LastWriteTime" and "CRC" information for each file in archive. - - It supports only LZMA and Copy (no compression) methods with BCJ or BCJ2 filters. - - It converts original UTF-16 Unicode file names to UTF-8 Unicode file names. - -These limitations will be fixed in future versions. - - -Using 7z ANSI-C Decoder Test application: ------------------------------------------ - -Usage: 7zDec - -: - e: Extract files from archive - l: List contents of archive - t: Test integrity of archive - -Example: - - 7zDec l archive.7z - -lists contents of archive.7z - - 7zDec e archive.7z - -extracts files from archive.7z to current folder. - - -How to use .7z Decoder ----------------------- - -Memory allocation -~~~~~~~~~~~~~~~~~ - -7z Decoder uses two memory pools: -1) Temporary pool -2) Main pool -Such scheme can allow you to avoid fragmentation of allocated blocks. - - -Steps for using 7z decoder --------------------------- - -Use code at 7zMain.c as example. - -1) Declare variables: - inStream /* implements ILookInStream interface */ - CSzArEx db; /* 7z archive database structure */ - ISzAlloc allocImp; /* memory functions for main pool */ - ISzAlloc allocTempImp; /* memory functions for temporary pool */ - -2) call CrcGenerateTable(); function to initialize CRC structures. - -3) call SzArEx_Init(&db); function to initialize db structures. - -4) call SzArEx_Open(&db, inStream, &allocMain, &allocTemp) to open archive - -This function opens archive "inStream" and reads headers to "db". -All items in "db" will be allocated with "allocMain" functions. -SzArEx_Open function allocates and frees temporary structures by "allocTemp" functions. - -5) List items or Extract items - - Listing code: - ~~~~~~~~~~~~~ - - Use SzArEx_GetFileNameUtf16 function. Look example code in C\Util\7z\7zMain.c file. - - - Extracting code: - ~~~~~~~~~~~~~~~~ - - SZ_RESULT SzAr_Extract( - CArchiveDatabaseEx *db, - ILookInStream *inStream, - UInt32 fileIndex, /* index of file */ - UInt32 *blockIndex, /* index of solid block */ - Byte **outBuffer, /* pointer to pointer to output buffer (allocated with allocMain) */ - size_t *outBufferSize, /* buffer size for output buffer */ - size_t *offset, /* offset of stream for required file in *outBuffer */ - size_t *outSizeProcessed, /* size of file in *outBuffer */ - ISzAlloc *allocMain, - ISzAlloc *allocTemp); - - If you need to decompress more than one file, you can send these values from previous call: - blockIndex, - outBuffer, - outBufferSize, - You can consider "outBuffer" as cache of solid block. If your archive is solid, - it will increase decompression speed. - - After decompressing you must free "outBuffer": - allocImp.Free(outBuffer); - -6) call SzArEx_Free(&db, allocImp.Free) to free allocated items in "db". - - - - -Memory requirements for .7z decoding ------------------------------------- - -Memory usage for Archive opening: - - Temporary pool: - - Memory for uncompressed .7z headers - - some other temporary blocks - - Main pool: - - Memory for database: - Estimated size of one file structures in solid archive: - - Size (4 or 8 Bytes) - - CRC32 (4 bytes) - - LastWriteTime (8 bytes) - - Some file information (4 bytes) - - File Name (variable length) + pointer + allocation structures - -Memory usage for archive Decompressing: - - Temporary pool: - - Memory for LZMA decompressing structures - - Main pool: - - Memory for decompressed solid block - - Memory for temprorary buffers, if BCJ2 fileter is used. Usually these - temprorary buffers can be about 15% of solid block size. - - -7z Decoder doesn't allocate memory for compressed blocks. -Instead of this, you must allocate buffer with desired -size before calling 7z Decoder. Use 7zMain.c as example. - - -Defines -------- - -_SZ_ALLOC_DEBUG - define it if you want to debug alloc/free operations to stderr. - - ---- - -http://www.7-zip.org -http://www.7-zip.org/sdk.html -http://www.7-zip.org/support.html +7z ANSI-C Decoder 9.35 +---------------------- + +7z ANSI-C provides 7z/LZMA decoding. +7z ANSI-C version is simplified version ported from C++ code. + +LZMA is default and general compression method of 7z format +in 7-Zip compression program (www.7-zip.org). LZMA provides high +compression ratio and very fast decompression. + + +LICENSE +------- + +7z ANSI-C Decoder is part of the LZMA SDK. +LZMA SDK is written and placed in the public domain by Igor Pavlov. + +Files +--------------------- + +7zDecode.* - Low level 7z decoding +7zExtract.* - High level 7z decoding +7zHeader.* - .7z format constants +7zIn.* - .7z archive opening +7zItem.* - .7z structures +7zMain.c - Test application + + +How To Use +---------- + +You can create .7z archive with 7z.exe, 7za.exe or 7zr.exe: + + 7z.exe a archive.7z *.htm -r -mx -m0fb=255 + +If you have big number of files in archive, and you need fast extracting, +you can use partly-solid archives: + + 7za.exe a archive.7z *.htm -ms=512K -r -mx -m0fb=255 -m0d=512K + +In that example 7-Zip will use 512KB solid blocks. So it needs to decompress only +512KB for extracting one file from such archive. + + +Limitations of current version of 7z ANSI-C Decoder +--------------------------------------------------- + + - It reads only "FileName", "Size", "LastWriteTime" and "CRC" information for each file in archive. + - It supports only LZMA and Copy (no compression) methods with BCJ or BCJ2 filters. + - It converts original UTF-16 Unicode file names to UTF-8 Unicode file names. + +These limitations will be fixed in future versions. + + +Using 7z ANSI-C Decoder Test application: +----------------------------------------- + +Usage: 7zDec + +: + e: Extract files from archive + l: List contents of archive + t: Test integrity of archive + +Example: + + 7zDec l archive.7z + +lists contents of archive.7z + + 7zDec e archive.7z + +extracts files from archive.7z to current folder. + + +How to use .7z Decoder +---------------------- + +Memory allocation +~~~~~~~~~~~~~~~~~ + +7z Decoder uses two memory pools: +1) Temporary pool +2) Main pool +Such scheme can allow you to avoid fragmentation of allocated blocks. + + +Steps for using 7z decoder +-------------------------- + +Use code at 7zMain.c as example. + +1) Declare variables: + inStream /* implements ILookInStream interface */ + CSzArEx db; /* 7z archive database structure */ + ISzAlloc allocImp; /* memory functions for main pool */ + ISzAlloc allocTempImp; /* memory functions for temporary pool */ + +2) call CrcGenerateTable(); function to initialize CRC structures. + +3) call SzArEx_Init(&db); function to initialize db structures. + +4) call SzArEx_Open(&db, inStream, &allocMain, &allocTemp) to open archive + +This function opens archive "inStream" and reads headers to "db". +All items in "db" will be allocated with "allocMain" functions. +SzArEx_Open function allocates and frees temporary structures by "allocTemp" functions. + +5) List items or Extract items + + Listing code: + ~~~~~~~~~~~~~ + + Use SzArEx_GetFileNameUtf16 function. Look example code in C\Util\7z\7zMain.c file. + + + Extracting code: + ~~~~~~~~~~~~~~~~ + + SZ_RESULT SzAr_Extract( + CArchiveDatabaseEx *db, + ILookInStream *inStream, + UInt32 fileIndex, /* index of file */ + UInt32 *blockIndex, /* index of solid block */ + Byte **outBuffer, /* pointer to pointer to output buffer (allocated with allocMain) */ + size_t *outBufferSize, /* buffer size for output buffer */ + size_t *offset, /* offset of stream for required file in *outBuffer */ + size_t *outSizeProcessed, /* size of file in *outBuffer */ + ISzAlloc *allocMain, + ISzAlloc *allocTemp); + + If you need to decompress more than one file, you can send these values from previous call: + blockIndex, + outBuffer, + outBufferSize, + You can consider "outBuffer" as cache of solid block. If your archive is solid, + it will increase decompression speed. + + After decompressing you must free "outBuffer": + allocImp.Free(outBuffer); + +6) call SzArEx_Free(&db, allocImp.Free) to free allocated items in "db". + + + + +Memory requirements for .7z decoding +------------------------------------ + +Memory usage for Archive opening: + - Temporary pool: + - Memory for uncompressed .7z headers + - some other temporary blocks + - Main pool: + - Memory for database: + Estimated size of one file structures in solid archive: + - Size (4 or 8 Bytes) + - CRC32 (4 bytes) + - LastWriteTime (8 bytes) + - Some file information (4 bytes) + - File Name (variable length) + pointer + allocation structures + +Memory usage for archive Decompressing: + - Temporary pool: + - Memory for LZMA decompressing structures + - Main pool: + - Memory for decompressed solid block + - Memory for temprorary buffers, if BCJ2 fileter is used. Usually these + temprorary buffers can be about 15% of solid block size. + + +7z Decoder doesn't allocate memory for compressed blocks. +Instead of this, you must allocate buffer with desired +size before calling 7z Decoder. Use 7zMain.c as example. + + +Defines +------- + +_SZ_ALLOC_DEBUG - define it if you want to debug alloc/free operations to stderr. + + +--- + +http://www.7-zip.org +http://www.7-zip.org/sdk.html +http://www.7-zip.org/support.html diff --git a/deps/LZMA-SDK/DOC/7zFormat.txt b/deps/LZMA-SDK/DOC/7zFormat.txt index 74cdfa418..9239e9355 100644 --- a/deps/LZMA-SDK/DOC/7zFormat.txt +++ b/deps/LZMA-SDK/DOC/7zFormat.txt @@ -1,469 +1,469 @@ -7z Format description (18.06) ----------------------------- - -This file contains description of 7z archive format. -7z archive can contain files compressed with any method. -See "Methods.txt" for description for defined compressing methods. - - -Format structure Overview -------------------------- - -Some fields can be optional. - -Archive structure -~~~~~~~~~~~~~~~~~ -SignatureHeader -[PackedStreams] -[PackedStreamsForHeaders] -[ - Header - or - { - Packed Header - HeaderInfo - } -] - - - -Header structure -~~~~~~~~~~~~~~~~ -{ - ArchiveProperties - AdditionalStreams - { - PackInfo - { - PackPos - NumPackStreams - Sizes[NumPackStreams] - CRCs[NumPackStreams] - } - CodersInfo - { - NumFolders - Folders[NumFolders] - { - NumCoders - CodersInfo[NumCoders] - { - ID - NumInStreams; - NumOutStreams; - PropertiesSize - Properties[PropertiesSize] - } - NumBindPairs - BindPairsInfo[NumBindPairs] - { - InIndex; - OutIndex; - } - PackedIndices - } - UnPackSize[Folders][Folders.NumOutstreams] - CRCs[NumFolders] - } - SubStreamsInfo - { - NumUnPackStreamsInFolders[NumFolders]; - UnPackSizes[] - CRCs[] - } - } - MainStreamsInfo - { - (Same as in AdditionalStreams) - } - FilesInfo - { - NumFiles - Properties[] - { - ID - Size - Data - } - } -} - -HeaderInfo structure -~~~~~~~~~~~~~~~~~~~~ -{ - (Same as in AdditionalStreams) -} - - - -Notes about Notation and encoding ---------------------------------- - -7z uses little endian encoding. - -7z archive format has optional headers that are marked as -[] -Header -[] - -REAL_UINT64 means real UINT64. - -UINT64 means real UINT64 encoded with the following scheme: - - Size of encoding sequence depends from first byte: - First_Byte Extra_Bytes Value - (binary) - 0xxxxxxx : ( xxxxxxx ) - 10xxxxxx BYTE y[1] : ( xxxxxx << (8 * 1)) + y - 110xxxxx BYTE y[2] : ( xxxxx << (8 * 2)) + y - ... - 1111110x BYTE y[6] : ( x << (8 * 6)) + y - 11111110 BYTE y[7] : y - 11111111 BYTE y[8] : y - - - -Property IDs ------------- - -0x00 = kEnd - -0x01 = kHeader - -0x02 = kArchiveProperties - -0x03 = kAdditionalStreamsInfo -0x04 = kMainStreamsInfo -0x05 = kFilesInfo - -0x06 = kPackInfo -0x07 = kUnPackInfo -0x08 = kSubStreamsInfo - -0x09 = kSize -0x0A = kCRC - -0x0B = kFolder - -0x0C = kCodersUnPackSize -0x0D = kNumUnPackStream - -0x0E = kEmptyStream -0x0F = kEmptyFile -0x10 = kAnti - -0x11 = kName -0x12 = kCTime -0x13 = kATime -0x14 = kMTime -0x15 = kWinAttributes -0x16 = kComment - -0x17 = kEncodedHeader - -0x18 = kStartPos -0x19 = kDummy - - -7z format headers ------------------ - -SignatureHeader -~~~~~~~~~~~~~~~ - BYTE kSignature[6] = {'7', 'z', 0xBC, 0xAF, 0x27, 0x1C}; - - ArchiveVersion - { - BYTE Major; // now = 0 - BYTE Minor; // now = 4 - }; - - UINT32 StartHeaderCRC; - - StartHeader - { - REAL_UINT64 NextHeaderOffset - REAL_UINT64 NextHeaderSize - UINT32 NextHeaderCRC - } - - -........................... - - -ArchiveProperties -~~~~~~~~~~~~~~~~~ -BYTE NID::kArchiveProperties (0x02) -for (;;) -{ - BYTE PropertyType; - if (aType == 0) - break; - UINT64 PropertySize; - BYTE PropertyData[PropertySize]; -} - - -Digests (NumStreams) -~~~~~~~~~~~~~~~~~~~~~ - BYTE AllAreDefined - if (AllAreDefined == 0) - { - for(NumStreams) - BIT Defined - } - UINT32 CRCs[NumDefined] - - -PackInfo -~~~~~~~~~~~~ - BYTE NID::kPackInfo (0x06) - UINT64 PackPos - UINT64 NumPackStreams - - [] - BYTE NID::kSize (0x09) - UINT64 PackSizes[NumPackStreams] - [] - - [] - BYTE NID::kCRC (0x0A) - PackStreamDigests[NumPackStreams] - [] - - BYTE NID::kEnd - - -Folder -~~~~~~ - UINT64 NumCoders; - for (NumCoders) - { - BYTE - { - 0:3 CodecIdSize - 4: Is Complex Coder - 5: There Are Attributes - 6: Reserved - 7: There are more alternative methods. (Not used anymore, must be 0). - } - BYTE CodecId[CodecIdSize] - if (Is Complex Coder) - { - UINT64 NumInStreams; - UINT64 NumOutStreams; - } - if (There Are Attributes) - { - UINT64 PropertiesSize - BYTE Properties[PropertiesSize] - } - } - - NumBindPairs = NumOutStreamsTotal - 1; - - for (NumBindPairs) - { - UINT64 InIndex; - UINT64 OutIndex; - } - - NumPackedStreams = NumInStreamsTotal - NumBindPairs; - if (NumPackedStreams > 1) - for(NumPackedStreams) - { - UINT64 Index; - }; - - - - -Coders Info -~~~~~~~~~~~ - - BYTE NID::kUnPackInfo (0x07) - - - BYTE NID::kFolder (0x0B) - UINT64 NumFolders - BYTE External - switch(External) - { - case 0: - Folders[NumFolders] - case 1: - UINT64 DataStreamIndex - } - - - BYTE ID::kCodersUnPackSize (0x0C) - for(Folders) - for(Folder.NumOutStreams) - UINT64 UnPackSize; - - - [] - BYTE NID::kCRC (0x0A) - UnPackDigests[NumFolders] - [] - - - - BYTE NID::kEnd - - - -SubStreams Info -~~~~~~~~~~~~~~ - BYTE NID::kSubStreamsInfo; (0x08) - - [] - BYTE NID::kNumUnPackStream; (0x0D) - UINT64 NumUnPackStreamsInFolders[NumFolders]; - [] - - - [] - BYTE NID::kSize (0x09) - UINT64 UnPackSizes[] - [] - - - [] - BYTE NID::kCRC (0x0A) - Digests[Number of streams with unknown CRC] - [] - - - BYTE NID::kEnd - - -Streams Info -~~~~~~~~~~~~ - - [] - PackInfo - [] - - - [] - CodersInfo - [] - - - [] - SubStreamsInfo - [] - - BYTE NID::kEnd - - -FilesInfo -~~~~~~~~~ - BYTE NID::kFilesInfo; (0x05) - UINT64 NumFiles - - for (;;) - { - BYTE PropertyType; - if (aType == 0) - break; - - UINT64 Size; - - switch(PropertyType) - { - kEmptyStream: (0x0E) - for(NumFiles) - BIT IsEmptyStream - - kEmptyFile: (0x0F) - for(EmptyStreams) - BIT IsEmptyFile - - kAnti: (0x10) - for(EmptyStreams) - BIT IsAntiFile - - case kCTime: (0x12) - case kATime: (0x13) - case kMTime: (0x14) - BYTE AllAreDefined - if (AllAreDefined == 0) - { - for(NumFiles) - BIT TimeDefined - } - BYTE External; - if(External != 0) - UINT64 DataIndex - [] - for(Definded Items) - REAL_UINT64 Time - [] - - kNames: (0x11) - BYTE External; - if(External != 0) - UINT64 DataIndex - [] - for(Files) - { - wchar_t Names[NameSize]; - wchar_t 0; - } - [] - - kAttributes: (0x15) - BYTE AllAreDefined - if (AllAreDefined == 0) - { - for(NumFiles) - BIT AttributesAreDefined - } - BYTE External; - if(External != 0) - UINT64 DataIndex - [] - for(Definded Attributes) - UINT32 Attributes - [] - } - } - - -Header -~~~~~~ - BYTE NID::kHeader (0x01) - - [] - ArchiveProperties - [] - - [] - BYTE NID::kAdditionalStreamsInfo; (0x03) - StreamsInfo - [] - - [] - BYTE NID::kMainStreamsInfo; (0x04) - StreamsInfo - [] - - [] - FilesInfo - [] - - BYTE NID::kEnd - - -HeaderInfo -~~~~~~~~~~ - [] - BYTE NID::kEncodedHeader; (0x17) - StreamsInfo for Encoded Header - [] - - ---- -End of document +7z Format description (18.06) +---------------------------- + +This file contains description of 7z archive format. +7z archive can contain files compressed with any method. +See "Methods.txt" for description for defined compressing methods. + + +Format structure Overview +------------------------- + +Some fields can be optional. + +Archive structure +~~~~~~~~~~~~~~~~~ +SignatureHeader +[PackedStreams] +[PackedStreamsForHeaders] +[ + Header + or + { + Packed Header + HeaderInfo + } +] + + + +Header structure +~~~~~~~~~~~~~~~~ +{ + ArchiveProperties + AdditionalStreams + { + PackInfo + { + PackPos + NumPackStreams + Sizes[NumPackStreams] + CRCs[NumPackStreams] + } + CodersInfo + { + NumFolders + Folders[NumFolders] + { + NumCoders + CodersInfo[NumCoders] + { + ID + NumInStreams; + NumOutStreams; + PropertiesSize + Properties[PropertiesSize] + } + NumBindPairs + BindPairsInfo[NumBindPairs] + { + InIndex; + OutIndex; + } + PackedIndices + } + UnPackSize[Folders][Folders.NumOutstreams] + CRCs[NumFolders] + } + SubStreamsInfo + { + NumUnPackStreamsInFolders[NumFolders]; + UnPackSizes[] + CRCs[] + } + } + MainStreamsInfo + { + (Same as in AdditionalStreams) + } + FilesInfo + { + NumFiles + Properties[] + { + ID + Size + Data + } + } +} + +HeaderInfo structure +~~~~~~~~~~~~~~~~~~~~ +{ + (Same as in AdditionalStreams) +} + + + +Notes about Notation and encoding +--------------------------------- + +7z uses little endian encoding. + +7z archive format has optional headers that are marked as +[] +Header +[] + +REAL_UINT64 means real UINT64. + +UINT64 means real UINT64 encoded with the following scheme: + + Size of encoding sequence depends from first byte: + First_Byte Extra_Bytes Value + (binary) + 0xxxxxxx : ( xxxxxxx ) + 10xxxxxx BYTE y[1] : ( xxxxxx << (8 * 1)) + y + 110xxxxx BYTE y[2] : ( xxxxx << (8 * 2)) + y + ... + 1111110x BYTE y[6] : ( x << (8 * 6)) + y + 11111110 BYTE y[7] : y + 11111111 BYTE y[8] : y + + + +Property IDs +------------ + +0x00 = kEnd + +0x01 = kHeader + +0x02 = kArchiveProperties + +0x03 = kAdditionalStreamsInfo +0x04 = kMainStreamsInfo +0x05 = kFilesInfo + +0x06 = kPackInfo +0x07 = kUnPackInfo +0x08 = kSubStreamsInfo + +0x09 = kSize +0x0A = kCRC + +0x0B = kFolder + +0x0C = kCodersUnPackSize +0x0D = kNumUnPackStream + +0x0E = kEmptyStream +0x0F = kEmptyFile +0x10 = kAnti + +0x11 = kName +0x12 = kCTime +0x13 = kATime +0x14 = kMTime +0x15 = kWinAttributes +0x16 = kComment + +0x17 = kEncodedHeader + +0x18 = kStartPos +0x19 = kDummy + + +7z format headers +----------------- + +SignatureHeader +~~~~~~~~~~~~~~~ + BYTE kSignature[6] = {'7', 'z', 0xBC, 0xAF, 0x27, 0x1C}; + + ArchiveVersion + { + BYTE Major; // now = 0 + BYTE Minor; // now = 4 + }; + + UINT32 StartHeaderCRC; + + StartHeader + { + REAL_UINT64 NextHeaderOffset + REAL_UINT64 NextHeaderSize + UINT32 NextHeaderCRC + } + + +........................... + + +ArchiveProperties +~~~~~~~~~~~~~~~~~ +BYTE NID::kArchiveProperties (0x02) +for (;;) +{ + BYTE PropertyType; + if (aType == 0) + break; + UINT64 PropertySize; + BYTE PropertyData[PropertySize]; +} + + +Digests (NumStreams) +~~~~~~~~~~~~~~~~~~~~~ + BYTE AllAreDefined + if (AllAreDefined == 0) + { + for(NumStreams) + BIT Defined + } + UINT32 CRCs[NumDefined] + + +PackInfo +~~~~~~~~~~~~ + BYTE NID::kPackInfo (0x06) + UINT64 PackPos + UINT64 NumPackStreams + + [] + BYTE NID::kSize (0x09) + UINT64 PackSizes[NumPackStreams] + [] + + [] + BYTE NID::kCRC (0x0A) + PackStreamDigests[NumPackStreams] + [] + + BYTE NID::kEnd + + +Folder +~~~~~~ + UINT64 NumCoders; + for (NumCoders) + { + BYTE + { + 0:3 CodecIdSize + 4: Is Complex Coder + 5: There Are Attributes + 6: Reserved + 7: There are more alternative methods. (Not used anymore, must be 0). + } + BYTE CodecId[CodecIdSize] + if (Is Complex Coder) + { + UINT64 NumInStreams; + UINT64 NumOutStreams; + } + if (There Are Attributes) + { + UINT64 PropertiesSize + BYTE Properties[PropertiesSize] + } + } + + NumBindPairs = NumOutStreamsTotal - 1; + + for (NumBindPairs) + { + UINT64 InIndex; + UINT64 OutIndex; + } + + NumPackedStreams = NumInStreamsTotal - NumBindPairs; + if (NumPackedStreams > 1) + for(NumPackedStreams) + { + UINT64 Index; + }; + + + + +Coders Info +~~~~~~~~~~~ + + BYTE NID::kUnPackInfo (0x07) + + + BYTE NID::kFolder (0x0B) + UINT64 NumFolders + BYTE External + switch(External) + { + case 0: + Folders[NumFolders] + case 1: + UINT64 DataStreamIndex + } + + + BYTE ID::kCodersUnPackSize (0x0C) + for(Folders) + for(Folder.NumOutStreams) + UINT64 UnPackSize; + + + [] + BYTE NID::kCRC (0x0A) + UnPackDigests[NumFolders] + [] + + + + BYTE NID::kEnd + + + +SubStreams Info +~~~~~~~~~~~~~~ + BYTE NID::kSubStreamsInfo; (0x08) + + [] + BYTE NID::kNumUnPackStream; (0x0D) + UINT64 NumUnPackStreamsInFolders[NumFolders]; + [] + + + [] + BYTE NID::kSize (0x09) + UINT64 UnPackSizes[] + [] + + + [] + BYTE NID::kCRC (0x0A) + Digests[Number of streams with unknown CRC] + [] + + + BYTE NID::kEnd + + +Streams Info +~~~~~~~~~~~~ + + [] + PackInfo + [] + + + [] + CodersInfo + [] + + + [] + SubStreamsInfo + [] + + BYTE NID::kEnd + + +FilesInfo +~~~~~~~~~ + BYTE NID::kFilesInfo; (0x05) + UINT64 NumFiles + + for (;;) + { + BYTE PropertyType; + if (aType == 0) + break; + + UINT64 Size; + + switch(PropertyType) + { + kEmptyStream: (0x0E) + for(NumFiles) + BIT IsEmptyStream + + kEmptyFile: (0x0F) + for(EmptyStreams) + BIT IsEmptyFile + + kAnti: (0x10) + for(EmptyStreams) + BIT IsAntiFile + + case kCTime: (0x12) + case kATime: (0x13) + case kMTime: (0x14) + BYTE AllAreDefined + if (AllAreDefined == 0) + { + for(NumFiles) + BIT TimeDefined + } + BYTE External; + if(External != 0) + UINT64 DataIndex + [] + for(Definded Items) + REAL_UINT64 Time + [] + + kNames: (0x11) + BYTE External; + if(External != 0) + UINT64 DataIndex + [] + for(Files) + { + wchar_t Names[NameSize]; + wchar_t 0; + } + [] + + kAttributes: (0x15) + BYTE AllAreDefined + if (AllAreDefined == 0) + { + for(NumFiles) + BIT AttributesAreDefined + } + BYTE External; + if(External != 0) + UINT64 DataIndex + [] + for(Definded Attributes) + UINT32 Attributes + [] + } + } + + +Header +~~~~~~ + BYTE NID::kHeader (0x01) + + [] + ArchiveProperties + [] + + [] + BYTE NID::kAdditionalStreamsInfo; (0x03) + StreamsInfo + [] + + [] + BYTE NID::kMainStreamsInfo; (0x04) + StreamsInfo + [] + + [] + FilesInfo + [] + + BYTE NID::kEnd + + +HeaderInfo +~~~~~~~~~~ + [] + BYTE NID::kEncodedHeader; (0x17) + StreamsInfo for Encoded Header + [] + + +--- +End of document diff --git a/deps/LZMA-SDK/DOC/Methods.txt b/deps/LZMA-SDK/DOC/Methods.txt index d4a1b1dd4..b840b55d2 100644 --- a/deps/LZMA-SDK/DOC/Methods.txt +++ b/deps/LZMA-SDK/DOC/Methods.txt @@ -1,173 +1,177 @@ -7-Zip method IDs for 7z and xz archives ---------------------------------------- - -Version: 18.06 -Date: 2018-06-30 - -Each compression or crypto method in 7z is associated with unique binary value (ID). -The length of ID in bytes is arbitrary but it can not exceed 63 bits (8 bytes). - -xz and 7z formats use same ID map. - -If you want to add some new ID, you have two ways: - 1) Write request for allocating IDs to 7-Zip developers. - 2) Generate 8-bytes ID: - - 3F ZZ ZZ ZZ ZZ ZZ MM MM - - 3F - Prefix for random IDs (1 byte) - ZZ ZZ ZZ ZZ ZZ - Developer ID (5 bytes). Use real random bytes. - - MM MM - Method ID (2 bytes) - - You can notify 7-Zip developers about your Developer ID / Method ID. - - Note: Use new ID, if old codec can not decode data encoded with new version. - - -List of defined IDs -------------------- - -00 - Copy - -03 - Delta -04 - BCJ (x86) -05 - PPC (big-endian) -06 - IA64 -07 - ARM (little-endian) -08 - ARMT (little-endian) -09 - SPARC - -21 - LZMA2 - -02.. - Common - 03 [Swap] - - 2 Swap2 - - 4 Swap4 - -03.. - 7z - 01 - - 01 - LZMA - - 03 - [Branch Codecs] - 01 - [x86 Codecs] - 03 - BCJ - 1B - BCJ2 (4 packed streams) - 02 - - 05 - PPC (big-endian) - 03 - - 01 - Alpha - 04 - - 01 - IA64 - 05 - - 01 - ARM (little-endian) - 06 - - 05 - M68 (big-endian) - 07 - - 01 - ARMT (little-endian) - 08 - - 05 - SPARC - - 04 - - 01 - PPMD - - 7F - - 01 - experimental method. - - -04.. - Misc codecs - - 00 - Reserved - - 01 - [Zip] - 00 - Copy (not used. Use {00} instead) - 01 - Shrink - 06 - Implode - 08 - Deflate - 09 - Deflate64 - 0A - Imploding - 0C - BZip2 (not used. Use {040202} instead) - 0E - LZMA (LZMA-zip) - 5F - xz - 60 - Jpeg - 61 - WavPack - 62 - PPMd (PPMd-zip) - 63 - wzAES - - 02 - - 02 - BZip2 - - 03 - [Rar] - 01 - Rar1 - 02 - Rar2 - 03 - Rar3 - 05 - Rar5 - - 04 - [Arj] - 01 - Arj(1,2,3) - 02 - Arj4 - - 05 - [Z] - - 06 - [Lzh] - - 07 - Reserved for 7z - - 08 - [Cab] - - 09 - [NSIS] - 01 - DeflateNSIS - 02 - BZip2NSIS - - F7 - External codecs (that are not included to 7-Zip) - - 0x xx - reserved - - 10 xx - reserved (LZHAM) - 01 - LZHAM - - 11 xx - reserved (Tino Reichardt) - 01 - ZSTD - 02 - BROTLI - 04 - LZ4 - 05 - LZ5 - 06 - LIZARD - - 12 xx - reserverd (Denis Anisimov) - - 01 - WavPack2 - FE - eSplitter - FF - RawSplitter - - -06.. - Crypto - - F0 - Ciphers without hashing algo - - 01 - [AES] - 0x - AES-128 - 4x - AES-192 - 8x - AES-256 - Cx - AES - - x0 - ECB - x1 - CBC - x2 - CFB - x3 - OFB - x4 - CTR - - F1 - Combine Ciphers - - 01 - [Zip] - 01 - ZipCrypto (Main Zip crypto algo) - - 03 - [RAR] - 02 - - 03 - Rar29AES (AES-128 + modified SHA-1) - - 07 - [7z] - 01 - 7zAES (AES-256 + SHA-256) - - ---- -End of document +7-Zip method IDs for 7z and xz archives +--------------------------------------- + +Version: 24.02 +Date: 2024-03-22 + +Each compression or crypto method in 7z is associated with unique binary value (ID). +The length of ID in bytes is arbitrary but it can not exceed 63 bits (8 bytes). + +xz and 7z formats use same ID map. + +If you want to add some new ID, you have two ways: + 1) Write request for allocating IDs to 7-Zip developers. + 2) Generate 8-bytes ID: + + 3F ZZ ZZ ZZ ZZ ZZ MM MM + + 3F - Prefix for random IDs (1 byte) + ZZ ZZ ZZ ZZ ZZ - Developer ID (5 bytes). Use real random bytes. + + MM MM - Method ID (2 bytes) + + You can notify 7-Zip developers about your Developer ID / Method ID. + + Note: Use new ID, if old codec can not decode data encoded with new version. + + +List of defined IDs +------------------- + +00 - Copy + +03 - Delta +04 - BCJ (x86) +05 - PPC (big-endian) +06 - IA64 +07 - ARM (little-endian) +08 - ARMT (little-endian) +09 - SPARC +0A - ARM64 +0B - RISCV + +21 - LZMA2 + +02.. - Common + 03 [Swap] + - 2 Swap2 + - 4 Swap4 + +03.. - 7z + 01 - + 01 - LZMA + + 03 - [Branch Codecs] + 01 - [x86 Codecs] + 03 - BCJ + 1B - BCJ2 (4 packed streams) + 02 - + 05 - PPC (big-endian) + 03 - + 01 - Alpha + 04 - + 01 - IA64 + 05 - + 01 - ARM (little-endian) + 06 - + 05 - M68 (big-endian) + 07 - + 01 - ARMT (little-endian) + 08 - + 05 - SPARC + + 04 - + 01 - PPMD + + 7F - + 01 - experimental method. + + +04.. - Misc codecs + + 00 - Reserved + + 01 - [Zip] + 00 - Copy (not used. Use {00} instead) + 01 - Shrink + 06 - Implode + 08 - Deflate + 09 - Deflate64 + 0A - Imploding + 0C - BZip2 (not used. Use {040202} instead) + 0E - LZMA (LZMA-zip) + + 5D - ZSTD + 5F - xz + 60 - Jpeg + 61 - WavPack + 62 - PPMd (PPMd-zip) + 63 - wzAES + + 02 - + 02 - BZip2 + + 03 - [Rar] + 01 - Rar1 + 02 - Rar2 + 03 - Rar3 + 05 - Rar5 + + 04 - [Arj] + 01 - Arj(1,2,3) + 02 - Arj4 + + 05 - [Z] + + 06 - [Lzh] + + 07 - Reserved for 7z + + 08 - [Cab] + + 09 - [NSIS] + 01 - DeflateNSIS + 02 - BZip2NSIS + + F7 - External codecs (that are not included to 7-Zip) + + 0x xx - reserved + + 10 xx - reserved (LZHAM) + 01 - LZHAM + + 11 xx - reserved (Tino Reichardt) + 01 - ZSTD + 02 - BROTLI + 04 - LZ4 + 05 - LZ5 + 06 - LIZARD + + 12 xx - reserverd (Denis Anisimov) + + 01 - WavPack2 + FE - eSplitter + FF - RawSplitter + + +06.. - Crypto + + F0 - Ciphers without hashing algo + + 01 - [AES] + 0x - AES-128 + 4x - AES-192 + 8x - AES-256 + Cx - AES + + x0 - ECB + x1 - CBC + x2 - CFB + x3 - OFB + x4 - CTR + + F1 - Combine Ciphers + + 01 - [Zip] + 01 - ZipCrypto (Main Zip crypto algo) + + 03 - [RAR] + 02 - + 03 - Rar29AES (AES-128 + modified SHA-1) + + 07 - [7z] + 01 - 7zAES (AES-256 + SHA-256) + + +--- +End of document diff --git a/deps/LZMA-SDK/DOC/installer.txt b/deps/LZMA-SDK/DOC/installer.txt index b99d21d24..70ad7dc6a 100644 --- a/deps/LZMA-SDK/DOC/installer.txt +++ b/deps/LZMA-SDK/DOC/installer.txt @@ -1,166 +1,166 @@ -7-Zip for installers 9.38 -------------------------- - -7-Zip is a file archiver for Windows NT/2000/2003/2008/XP/Vista/7/8/10. - -7-Zip for installers is part of LZMA SDK. -LZMA SDK is written and placed in the public domain by Igor Pavlov. - -It's allowed to join 7-Zip SFX module with another software. -It's allowed to change resources of 7-Zip's SFX modules. - - -HOW to use ------------ - -7zr.exe is reduced version of 7za.exe of 7-Zip. -7zr.exe supports only format with these codecs: LZMA, LZMA2, BCJ, BCJ2, ARM, Copy. - -Example of compressing command for installation packages: - -7zr a archive.7z files - -7zSD.sfx is SFX module for installers. 7zSD.sfx uses msvcrt.dll. - -SFX modules for installers allow to create installation program. -Such module extracts archive to temp folder and then runs specified program and removes -temp files after program finishing. Self-extract archive for installers must be created -as joining 3 files: SFX_Module, Installer_Config, 7z_Archive. -Installer_Config is optional file. You can use the following command to create installer -self-extract archive: - -copy /b 7zSD.sfx + config.txt + archive.7z archive.exe - -The smallest installation package size can be achieved, if installation files was -uncompressed before including to 7z archive. - --y switch for installer module (at runtime) specifies quiet mode for extracting. - -Installer Config file format -~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Config file contains commands for Installer. File begins from string -;!@Install@!UTF-8! and ends with ;!@InstallEnd@!. File must be written -in UTF-8 encoding. File contains string pairs: - -ID_String="Value" - -ID_String Description - -Title Title for messages -BeginPrompt Begin Prompt message -Progress Value can be "yes" or "no". Default value is "yes". -RunProgram Command for executing. Default value is "setup.exe". - Substring %%T will be replaced with path to temporary - folder, where files were extracted -Directory Directory prefix for "RunProgram". Default value is ".\\" -ExecuteFile Name of file for executing -ExecuteParameters Parameters for "ExecuteFile" - - -You can omit any string pair. - -There are two ways to run program: RunProgram and ExecuteFile. -Use RunProgram, if you want to run some program from .7z archive. -Use ExecuteFile, if you want to open some document from .7z archive or -if you want to execute some command from Windows. - -If you use RunProgram and if you specify empty directory prefix: Directory="", -the system searches for the executable file in the following sequence: - -1. The directory from which the application (installer) loaded. -2. The temporary folder, where files were extracted. -3. The Windows system directory. - - -Config file Examples -~~~~~~~~~~~~~~~~~~~~ - -;!@Install@!UTF-8! -Title="7-Zip 4.00" -BeginPrompt="Do you want to install the 7-Zip 4.00?" -RunProgram="setup.exe" -;!@InstallEnd@! - - - -;!@Install@!UTF-8! -Title="7-Zip 4.00" -BeginPrompt="Do you want to install the 7-Zip 4.00?" -ExecuteFile="7zip.msi" -;!@InstallEnd@! - - - -;!@Install@!UTF-8! -Title="7-Zip 4.01 Update" -BeginPrompt="Do you want to install the 7-Zip 4.01 Update?" -ExecuteFile="msiexec.exe" -ExecuteParameters="/i 7zip.msi REINSTALL=ALL REINSTALLMODE=vomus" -;!@InstallEnd@! - - - -Small SFX modules for installers --------------------------------- - -7zS2.sfx - small SFX module (GUI version) -7zS2con.sfx - small SFX module (Console version) - -Small SFX modules support this codecs: LZMA, LZMA2, BCJ, BCJ2, ARM, COPY - -Small SFX module is similar to common SFX module for installers. -The difference (what's new in small version): - - Smaller size (30 KB vs 100 KB) - - C source code instead of ++ - - No installer Configuration file - - No extracting progress window - - It decompresses solid 7z blocks (it can be whole 7z archive) to RAM. - So user that calls SFX installer must have free RAM of size of largest - solid 7z block (size of 7z archive at simplest case). - -How to use ----------- - -copy /b 7zS2.sfx + archive.7z sfx.exe - -When you run installer sfx module (sfx.exe) -1) It creates "7zNNNNNNNN" temp folder in system temp folder. -2) It extracts .7z archive to that folder -3) It executes one file from "7zNNNNNNNN" temp folder. -4) It removes "7zNNNNNNNN" temp folder - -You can send parameters to installer, and installer will transfer them to extracted .exe file. - -Small SFX uses 3 levels of priorities to select file to execute: - - 1) Files in root folder have higher priority than files in subfolders. - 2) File extension priorities (from high to low priority order): - bat, cmd, exe, inf, msi, cab (under Windows CE), html, htm - 3) File name priorities (from high to low priority order): - setup, install, run, start - -Windows CE (ARM) version of 7zS2.sfx is included to 7-Zip for Windows Mobile package. - - -Examples --------- - -1) To create compressed console 7-Zip: - -7zr a c.7z 7z.exe 7z.dll -mx -copy /b 7zS2con.sfx + c.7z 7zCompr.exe -7zCompr.exe b -md22 - - -2) To create compressed GUI 7-Zip: - -7zr a g.7z 7zg.exe 7z.dll -mx -copy /b 7zS2.sfx + g.7z 7zgCompr.exe -7zgCompr.exe b -md22 - - -3) To open some file: - -7zr a h.7z readme.txt -mx -copy /b 7zS2.sfx + h.7z 7zTxt.exe -7zTxt.exe +7-Zip for installers 9.38 +------------------------- + +7-Zip is a file archiver for Windows NT/2000/2003/2008/XP/Vista/7/8/10. + +7-Zip for installers is part of LZMA SDK. +LZMA SDK is written and placed in the public domain by Igor Pavlov. + +It's allowed to join 7-Zip SFX module with another software. +It's allowed to change resources of 7-Zip's SFX modules. + + +HOW to use +----------- + +7zr.exe is reduced version of 7za.exe of 7-Zip. +7zr.exe supports only format with these codecs: LZMA, LZMA2, BCJ, BCJ2, ARM, Copy. + +Example of compressing command for installation packages: + +7zr a archive.7z files + +7zSD.sfx is SFX module for installers. 7zSD.sfx uses msvcrt.dll. + +SFX modules for installers allow to create installation program. +Such module extracts archive to temp folder and then runs specified program and removes +temp files after program finishing. Self-extract archive for installers must be created +as joining 3 files: SFX_Module, Installer_Config, 7z_Archive. +Installer_Config is optional file. You can use the following command to create installer +self-extract archive: + +copy /b 7zSD.sfx + config.txt + archive.7z archive.exe + +The smallest installation package size can be achieved, if installation files was +uncompressed before including to 7z archive. + +-y switch for installer module (at runtime) specifies quiet mode for extracting. + +Installer Config file format +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Config file contains commands for Installer. File begins from string +;!@Install@!UTF-8! and ends with ;!@InstallEnd@!. File must be written +in UTF-8 encoding. File contains string pairs: + +ID_String="Value" + +ID_String Description + +Title Title for messages +BeginPrompt Begin Prompt message +Progress Value can be "yes" or "no". Default value is "yes". +RunProgram Command for executing. Default value is "setup.exe". + Substring %%T will be replaced with path to temporary + folder, where files were extracted +Directory Directory prefix for "RunProgram". Default value is ".\\" +ExecuteFile Name of file for executing +ExecuteParameters Parameters for "ExecuteFile" + + +You can omit any string pair. + +There are two ways to run program: RunProgram and ExecuteFile. +Use RunProgram, if you want to run some program from .7z archive. +Use ExecuteFile, if you want to open some document from .7z archive or +if you want to execute some command from Windows. + +If you use RunProgram and if you specify empty directory prefix: Directory="", +the system searches for the executable file in the following sequence: + +1. The directory from which the application (installer) loaded. +2. The temporary folder, where files were extracted. +3. The Windows system directory. + + +Config file Examples +~~~~~~~~~~~~~~~~~~~~ + +;!@Install@!UTF-8! +Title="7-Zip 4.00" +BeginPrompt="Do you want to install the 7-Zip 4.00?" +RunProgram="setup.exe" +;!@InstallEnd@! + + + +;!@Install@!UTF-8! +Title="7-Zip 4.00" +BeginPrompt="Do you want to install the 7-Zip 4.00?" +ExecuteFile="7zip.msi" +;!@InstallEnd@! + + + +;!@Install@!UTF-8! +Title="7-Zip 4.01 Update" +BeginPrompt="Do you want to install the 7-Zip 4.01 Update?" +ExecuteFile="msiexec.exe" +ExecuteParameters="/i 7zip.msi REINSTALL=ALL REINSTALLMODE=vomus" +;!@InstallEnd@! + + + +Small SFX modules for installers +-------------------------------- + +7zS2.sfx - small SFX module (GUI version) +7zS2con.sfx - small SFX module (Console version) + +Small SFX modules support this codecs: LZMA, LZMA2, BCJ, BCJ2, ARM, COPY + +Small SFX module is similar to common SFX module for installers. +The difference (what's new in small version): + - Smaller size (30 KB vs 100 KB) + - C source code instead of ++ + - No installer Configuration file + - No extracting progress window + - It decompresses solid 7z blocks (it can be whole 7z archive) to RAM. + So user that calls SFX installer must have free RAM of size of largest + solid 7z block (size of 7z archive at simplest case). + +How to use +---------- + +copy /b 7zS2.sfx + archive.7z sfx.exe + +When you run installer sfx module (sfx.exe) +1) It creates "7zNNNNNNNN" temp folder in system temp folder. +2) It extracts .7z archive to that folder +3) It executes one file from "7zNNNNNNNN" temp folder. +4) It removes "7zNNNNNNNN" temp folder + +You can send parameters to installer, and installer will transfer them to extracted .exe file. + +Small SFX uses 3 levels of priorities to select file to execute: + + 1) Files in root folder have higher priority than files in subfolders. + 2) File extension priorities (from high to low priority order): + bat, cmd, exe, inf, msi, cab (under Windows CE), html, htm + 3) File name priorities (from high to low priority order): + setup, install, run, start + +Windows CE (ARM) version of 7zS2.sfx is included to 7-Zip for Windows Mobile package. + + +Examples +-------- + +1) To create compressed console 7-Zip: + +7zr a c.7z 7z.exe 7z.dll -mx +copy /b 7zS2con.sfx + c.7z 7zCompr.exe +7zCompr.exe b -md22 + + +2) To create compressed GUI 7-Zip: + +7zr a g.7z 7zg.exe 7z.dll -mx +copy /b 7zS2.sfx + g.7z 7zgCompr.exe +7zgCompr.exe b -md22 + + +3) To open some file: + +7zr a h.7z readme.txt -mx +copy /b 7zS2.sfx + h.7z 7zTxt.exe +7zTxt.exe diff --git a/deps/LZMA-SDK/DOC/lzma-history.txt b/deps/LZMA-SDK/DOC/lzma-history.txt index 0963c7bf7..e7b689f4e 100644 --- a/deps/LZMA-SDK/DOC/lzma-history.txt +++ b/deps/LZMA-SDK/DOC/lzma-history.txt @@ -1,520 +1,634 @@ -HISTORY of the LZMA SDK ------------------------ - -21.07 2021-12-26 -------------------------- -- New switches: -spm and -im!{file_path} to exclude directories from processing - for specified paths that don't contain path separator character at the end of path. -- The sorting order of files in archives was slightly changed to be more consistent - for cases where the name of some directory is the same as the prefix part of the name - of another directory or file. - - -21.06 2021-11-24 -------------------------- -- Bug in LZMA encoder in file LzmaEnc.c was fixed: - LzmaEnc_MemEncode(), LzmaEncode() and LzmaCompress() could work incorrectly, - if size value for output buffer is smaller than size required for all compressed data. - LzmaEnc_Encode() could work incorrectly, - if callback ISeqOutStream::Write() doesn't write all compressed data. - NCompress::NLzma::CEncoder::Code() could work incorrectly, - if callback ISequentialOutStream::Write() returns error code. -- Bug in versions 21.00-21.05 was fixed: - 7-Zip didn't set attributes of directories during archive extracting. - - -21.04 beta 2021-11-02 -------------------------- -- 7-Zip now reduces the number of working CPU threads for compression, - if RAM size is not enough for compression with big LZMA2 dictionary. -- 7-Zip now can create and check "file.sha256" text files that contain the list - of file names and SHA-256 checksums in format compatible with sha256sum program. - - -21.03 beta 2021-07-20 -------------------------- -- The maximum dictionary size for LZMA/LZMA2 compressing was increased to 4 GB (3840 MiB). -- Minor speed optimizations in LZMA/LZMA2 compressing. - - -21.02 alpha 2021-05-06 -------------------------- -- The command line version of 7-Zip for macOS was released. -- The speed for LZMA and LZMA2 decompression in arm64 versions for macOS and Linux - was increased by 20%-60%. - - -21.01 alpha 2021-03-09 -------------------------- -- The command line version of 7-Zip for Linux was released. -- The improvements for speed of ARM64 version using hardware CPU instructions - for AES, CRC-32, SHA-1 and SHA-256. -- Some bugs were fixed. - - -20.02 alpha 2020-08-08 -------------------------- -- The default number of LZMA2 chunks per solid block in 7z archive was increased to 64. - It allows to increase the compression speed for big 7z archives, if there is a big number - of CPU cores and threads. -- The speed of PPMd compressing/decompressing was increased for 7z archives. -- The new -ssp switch. If the switch -ssp is specified, 7-Zip doesn't allow the system - to modify "Last Access Time" property of source files for archiving and hashing operations. -- Some bugs were fixed. - - -20.00 alpha 2020-02-06 -------------------------- -- 7-Zip now supports new optional match finders for LZMA/LZMA2 compression: bt5 and hc5, - that can work faster than bt4 and hc4 match finders for the data with big redundancy. -- The compression ratio was improved for Fast and Fastest compression levels with the - following default settings: - - Fastest level (-mx1) : hc5 match finder with 256 KB dictionary. - - Fast level (-mx3) : hc5 match finder with 4 MB dictionary. -- Minor speed optimizations in multithreaded LZMA/LZMA2 compression for Normal/Maximum/Ultra - compression levels. - - -19.00 2019-02-21 -------------------------- -- Encryption strength for 7z archives was increased: - the size of random initialization vector was increased from 64-bit to 128-bit, - and the pseudo-random number generator was improved. -- The bug in 7zIn.c code was fixed. - - -18.06 2018-12-30 -------------------------- -- The speed for LZMA/LZMA2 compressing was increased by 3-10%, - and there are minor changes in compression ratio. -- Some bugs were fixed. -- The bug in 7-Zip 18.02-18.05 was fixed: - There was memory leak in multithreading xz decoder - XzDecMt_Decode(), - if xz stream contains only one block. -- The changes for MSVS compiler makefiles: - - the makefiles now use "PLATFORM" macroname with values (x64, x86, arm64) - instead of "CPU" macroname with values (AMD64, ARM64). - - the makefiles by default now use static version of the run-time library. - - -18.05 2018-04-30 -------------------------- -- The speed for LZMA/LZMA2 compressing was increased - by 8% for fastest/fast compression levels and - by 3% for normal/maximum compression levels. -- Previous versions of 7-Zip could work incorrectly in "Large memory pages" mode in - Windows 10 because of some BUG with "Large Pages" in Windows 10. - Now 7-Zip doesn't use "Large Pages" on Windows 10 up to revision 1709 (16299). -- The BUG was fixed in Lzma2Enc.c - Lzma2Enc_Encode2() function worked incorretly, - if (inStream == NULL) and the number of block threads is more than 1. - - -18.03 beta 2018-03-04 -------------------------- -- Asm\x86\LzmaDecOpt.asm: new optimized LZMA decoder written in asm - for x64 with about 30% higher speed than main version of LZMA decoder written in C. -- The speed for single-thread LZMA/LZMA2 decoder written in C was increased by 3%. -- 7-Zip now can use multi-threading for 7z/LZMA2 decoding, - if there are multiple independent data chunks in LZMA2 stream. -- 7-Zip now can use multi-threading for xz decoding, - if there are multiple blocks in xz stream. - - -18.01 2019-01-28 -------------------------- -- The BUG in 17.01 - 18.00 beta was fixed: - XzDec.c : random block unpacking and XzUnpacker_IsBlockFinished() - didn't work correctly for xz archives without checksum (CRC). - - -18.00 beta 2019-01-10 -------------------------- -- The BUG in xz encoder was fixed: - There was memory leak of 16 KB for each file compressed with - xz compression method, if additional filter was used. - - -17.01 beta 2017-08-28 -------------------------- -- Minor speed optimization for LZMA2 (xz and 7z) multi-threading compression. - 7-Zip now uses additional memory buffers for multi-block LZMA2 compression. - CPU utilization was slightly improved. -- 7-zip now creates multi-block xz archives by default. Block size can be - specified with -ms[Size]{m|g} switch. -- xz decoder now can unpack random block from multi-block xz archives. -- 7-Zip command line: @listfile now doesn't work after -- switch. - Use -i@listfile before -- switch instead. -- The BUGs were fixed: - 7-Zip 17.00 beta crashed for commands that write anti-item to 7z archive. - - -17.00 beta 2017-04-29 -------------------------- -- NewHandler.h / NewHandler.cpp: - now it redefines operator new() only for old MSVC compilers (_MSC_VER < 1900). -- C/7zTypes.h : the names of variables in interface structures were changed (vt). -- Some bugs were fixed. 7-Zip could crash in some cases. -- Some internal changes in code. - - -16.04 2016-10-04 -------------------------- -- The bug was fixed in DllSecur.c. - - -16.03 2016-09-28 -------------------------- -- SFX modules now use some protection against DLL preloading attack. -- Some bugs in 7z code were fixed. - - -16.02 2016-05-21 -------------------------- -- The BUG in 16.00 - 16.01 was fixed: - Split Handler (SplitHandler.cpp) returned incorrect - total size value (kpidSize) for split archives. - - -16.01 2016-05-19 -------------------------- -- Some internal changes to reduce the number of compiler warnings. - - -16.00 2016-05-10 -------------------------- -- Some bugs were fixed. - - -15.12 2015-11-19 -------------------------- -- The BUG in C version of 7z decoder was fixed: - 7zDec.c : SzDecodeLzma2() - 7z decoder could mistakenly report about decoding error for some 7z archives - that use LZMA2 compression method. - The probability to get that mistaken decoding error report was about - one error per 16384 solid blocks for solid blocks larger than 16 KB (compressed size). -- The BUG (in 9.26-15.11) in C version of 7z decoder was fixed: - 7zArcIn.c : SzReadHeader2() - 7z decoder worked incorrectly for 7z archives that contain - empty solid blocks, that can be placed to 7z archive, if some file is - unavailable for reading during archive creation. - - -15.09 beta 2015-10-16 -------------------------- -- The BUG in LZMA / LZMA2 encoding code was fixed. - The BUG in LzFind.c::MatchFinder_ReadBlock() function. - If input data size is larger than (4 GiB - dictionary_size), - the following code worked incorrectly: - - LZMA : LzmaEnc_MemEncode(), LzmaEncode() : LZMA encoding functions - for compressing from memory to memory. - That BUG is not related to LZMA encoder version that works via streams. - - LZMA2 : multi-threaded version of LZMA2 encoder worked incorrectly, if - default value of chunk size (CLzma2EncProps::blockSize) is changed - to value larger than (4 GiB - dictionary_size). - - -9.38 beta 2015-01-03 -------------------------- -- The BUG in 9.31-9.37 was fixed: - IArchiveGetRawProps interface was disabled for 7z archives. -- The BUG in 9.26-9.36 was fixed: - Some code in CPP\7zip\Archive\7z\ worked correctly only under Windows. - - -9.36 beta 2014-12-26 -------------------------- -- The BUG in command line version was fixed: - 7-Zip created temporary archive in current folder during update archive - operation, if -w{Path} switch was not specified. - The fixed 7-Zip creates temporary archive in folder that contains updated archive. -- The BUG in 9.33-9.35 was fixed: - 7-Zip silently ignored file reading errors during 7z or gz archive creation, - and the created archive contained only part of file that was read before error. - The fixed 7-Zip stops archive creation and it reports about error. - - -9.35 beta 2014-12-07 -------------------------- -- 7zr.exe now support AES encryption. -- SFX mudules were added to LZMA SDK -- Some bugs were fixed. - - -9.21 beta 2011-04-11 -------------------------- -- New class FString for file names at file systems. -- Speed optimization in CRC code for big-endian CPUs. -- The BUG in Lzma2Dec.c was fixed: - Lzma2Decode function didn't work. - - -9.18 beta 2010-11-02 -------------------------- -- New small SFX module for installers (SfxSetup). - - -9.12 beta 2010-03-24 -------------------------- -- The BUG in LZMA SDK 9.* was fixed: LZMA2 codec didn't work, - if more than 10 threads were used (or more than 20 threads in some modes). - - -9.11 beta 2010-03-15 -------------------------- -- PPMd compression method support - - -9.09 2009-12-12 -------------------------- -- The bug was fixed: - Utf16_To_Utf8 funstions in UTFConvert.cpp and 7zMain.c - incorrectly converted surrogate characters (the code >= 0x10000) to UTF-8. -- Some bugs were fixed - - -9.06 2009-08-17 -------------------------- -- Some changes in ANSI-C 7z Decoder interfaces. - - -9.04 2009-05-30 -------------------------- -- LZMA2 compression method support -- xz format support - - -4.65 2009-02-03 -------------------------- -- Some minor fixes - - -4.63 2008-12-31 -------------------------- -- Some minor fixes - - -4.61 beta 2008-11-23 -------------------------- -- The bug in ANSI-C LZMA Decoder was fixed: - If encoded stream was corrupted, decoder could access memory - outside of allocated range. -- Some changes in ANSI-C 7z Decoder interfaces. -- LZMA SDK is placed in the public domain. - - -4.60 beta 2008-08-19 -------------------------- -- Some minor fixes. - - -4.59 beta 2008-08-13 -------------------------- -- The bug was fixed: - LZMA Encoder in fast compression mode could access memory outside of - allocated range in some rare cases. - - -4.58 beta 2008-05-05 -------------------------- -- ANSI-C LZMA Decoder was rewritten for speed optimizations. -- ANSI-C LZMA Encoder was included to LZMA SDK. -- C++ LZMA code now is just wrapper over ANSI-C code. - - -4.57 2007-12-12 -------------------------- -- Speed optimizations in ++ LZMA Decoder. -- Small changes for more compatibility with some C/C++ compilers. - - -4.49 beta 2007-07-05 -------------------------- -- .7z ANSI-C Decoder: - - now it supports BCJ and BCJ2 filters - - now it supports files larger than 4 GB. - - now it supports "Last Write Time" field for files. -- C++ code for .7z archives compressing/decompressing from 7-zip - was included to LZMA SDK. - - -4.43 2006-06-04 -------------------------- -- Small changes for more compatibility with some C/C++ compilers. - - -4.42 2006-05-15 -------------------------- -- Small changes in .h files in ANSI-C version. - - -4.39 beta 2006-04-14 -------------------------- -- The bug in versions 4.33b:4.38b was fixed: - C++ version of LZMA encoder could not correctly compress - files larger than 2 GB with HC4 match finder (-mfhc4). - - -4.37 beta 2005-04-06 -------------------------- -- Fixes in C++ code: code could no be compiled if _NO_EXCEPTIONS was defined. - - -4.35 beta 2005-03-02 -------------------------- -- The bug was fixed in C++ version of LZMA Decoder: - If encoded stream was corrupted, decoder could access memory - outside of allocated range. - - -4.34 beta 2006-02-27 -------------------------- -- Compressing speed and memory requirements for compressing were increased -- LZMA now can use only these match finders: HC4, BT2, BT3, BT4 - - -4.32 2005-12-09 -------------------------- -- Java version of LZMA SDK was included - - -4.30 2005-11-20 -------------------------- -- Compression ratio was improved in -a2 mode -- Speed optimizations for compressing in -a2 mode -- -fb switch now supports values up to 273 -- The bug in 7z_C (7zIn.c) was fixed: - It used Alloc/Free functions from different memory pools. - So if program used two memory pools, it worked incorrectly. -- 7z_C: .7z format supporting was improved -- LZMA# SDK (C#.NET version) was included - - -4.27 (Updated) 2005-09-21 -------------------------- -- Some GUIDs/interfaces in C++ were changed. - IStream.h: - ISequentialInStream::Read now works as old ReadPart - ISequentialOutStream::Write now works as old WritePart - - -4.27 2005-08-07 -------------------------- -- The bug in LzmaDecodeSize.c was fixed: - if _LZMA_IN_CB and _LZMA_OUT_READ were defined, - decompressing worked incorrectly. - - -4.26 2005-08-05 -------------------------- -- Fixes in 7z_C code and LzmaTest.c: - previous versions could work incorrectly, - if malloc(0) returns 0 - - -4.23 2005-06-29 -------------------------- -- Small fixes in C++ code - - -4.22 2005-06-10 -------------------------- -- Small fixes - - -4.21 2005-06-08 -------------------------- -- Interfaces for ANSI-C LZMA Decoder (LzmaDecode.c) were changed -- New additional version of ANSI-C LZMA Decoder with zlib-like interface: - - LzmaStateDecode.h - - LzmaStateDecode.c - - LzmaStateTest.c -- ANSI-C LZMA Decoder now can decompress files larger than 4 GB - - -4.17 2005-04-18 -------------------------- -- New example for RAM->RAM compressing/decompressing: - LZMA + BCJ (filter for x86 code): - - LzmaRam.h - - LzmaRam.cpp - - LzmaRamDecode.h - - LzmaRamDecode.c - - -f86 switch for lzma.exe - - -4.16 2005-03-29 -------------------------- -- The bug was fixed in LzmaDecode.c (ANSI-C LZMA Decoder): - If _LZMA_OUT_READ was defined, and if encoded stream was corrupted, - decoder could access memory outside of allocated range. -- Speed optimization of ANSI-C LZMA Decoder (now it's about 20% faster). - Old version of LZMA Decoder now is in file LzmaDecodeSize.c. - LzmaDecodeSize.c can provide slightly smaller code than LzmaDecode.c -- Small speed optimization in LZMA C++ code -- filter for SPARC's code was added -- Simplified version of .7z ANSI-C Decoder was included - - -4.06 2004-09-05 -------------------------- -- The bug in v4.05 was fixed: - LZMA-Encoder didn't release output stream in some cases. - - -4.05 2004-08-25 -------------------------- -- Source code of filters for x86, IA-64, ARM, ARM-Thumb - and PowerPC code was included to SDK -- Some internal minor changes - - -4.04 2004-07-28 -------------------------- -- More compatibility with some C++ compilers - - -4.03 2004-06-18 -------------------------- -- "Benchmark" command was added. It measures compressing - and decompressing speed and shows rating values. - Also it checks hardware errors. - - -4.02 2004-06-10 -------------------------- -- C++ LZMA Encoder/Decoder code now is more portable - and it can be compiled by GCC on Linux. - - -4.01 2004-02-15 -------------------------- -- Some detection of data corruption was enabled. - LzmaDecode.c / RangeDecoderReadByte - ..... - { - rd->ExtraBytes = 1; - return 0xFF; - } - - -4.00 2004-02-13 -------------------------- -- Original version of LZMA SDK - - - -HISTORY of the LZMA -------------------- - 2001-2008: Improvements to LZMA compressing/decompressing code, - keeping compatibility with original LZMA format - 1996-2001: Development of LZMA compression format - - Some milestones: - - 2001-08-30: LZMA compression was added to 7-Zip - 1999-01-02: First version of 7-Zip was released - - -End of document +HISTORY of the LZMA SDK +----------------------- + +24.09 2024-11-29 +------------------------- +- The default dictionary size values for LZMA/LZMA2 compression methods were increased: + dictionary size compression level + v24.08 v24.09 v24.09 + 32-bit 64-bit + 8 MB 16 MB 16 MB -mx4 + 16 MB 32 MB 32 MB -mx5 : Normal + 32 MB 64 MB 64 MB -mx6 + 32 MB 64 MB 128 MB -mx7 : Maximum + 64 MB 64 MB 256 MB -mx8 + 64 MB 64 MB 256 MB -mx9 : Ultra + The default dictionary size values for 32-bit versions of LZMA/LZMA2 don't exceed 64 MB. +- If an archive update operation uses a temporary archive folder and + the archive is moved to the destination folder, 7-Zip shows the progress of moving + the archive file, as this operation can take a long time if the archive is large. +- Some bugs were fixed. + + +24.07 2024-06-19 +------------------------- +- Changes in files: + Asm/x86/Sha256Opt.asm + Now it uses "READONLY" flag for constant array segment. + It fixes an issue where ".rodata" section in 7-Zip for x86/x64 Linux had a "WRITE" attribute. + + +24.05 2024-05-14 +------------------------- +- New switch -myv={MMNN} to set decoder compatibility version for 7z archive creating. + {MMNN} is 4-digit number that represents the version of 7-Zip without a dot. + If -myv={MMNN} switch is specified, 7-Zip will only use compression methods that can + be decoded by the specified version {MMNN} of 7-Zip and newer versions. + If -myv={MMNN} switch is not specified, -myv=2300 is used, and 7-Zip will only + use compression methods that can be decoded by 7-Zip 23.00 and newer versions. +- New switch -myfa={FilterID} to allow 7-Zip to use the specified filter method for 7z archive creating. +- New switch -myfd={FilterID} to disallow 7-Zip to use the specified filter method for 7z archive creating. + + +24.03 2024-03-23 +------------------------- +- 7-Zip now can use new RISCV filter for compression to 7z and xz archives. + RISCV filter can increase compression ratio for data containing executable + files compiled for RISC-V architecture. +- The speed for LZMA and LZMA2 decompression in ARM64 version for Windows + was increased by 20%-60%. + It uses arm64 assembler code, and clang-cl is required for arm64 assembler code compiling. +- -slmu switch : to show timestamps as UTC instead of LOCAL TIME. +- -slsl switch : in console 7-Zip for Windows : to show file paths with + linux path separator slash '/' instead of backslash separator '\'. +- 7-Zip supports .sha256 files that use backslash path separator '\'. +- Some bugs were fixed. + + +24.01 2024-01-31 +------------------------- +- 7-Zip uses file C/Precomp.h that is included to all c and c++ files. + CPP/Common/Common.h also includes C/Precomp.h. + C/Precomp.h defines the following macros (if _WIN32 is defined): + Z7_LARGE_PAGES 1 + Z7_LONG_PATH 1 + Z7_WIN32_WINNT_MIN 0x0500 (or higher) + _WIN32_WINNT 0x0500 (or higher) + WINVER _WIN32_WINNT + UNICODE 1 + _UNICODE 1 + if _WIN32_WINNT is defined already, C/Precomp.h doesn't redefine it. + +- Speed optimizations for hash caclulation: CRC-32, CRC-64. +- The bug was fixed: 7-Zip for Linux could fail for multivolume creation in some cases. +- 7zr.exe for arm64 is included to LZMA SDK package. +- Some bugs were fixed. + + +23.01 2023-06-20 +------------------------- +- 7-Zip now can use new ARM64 filter for compression to 7z and xz archives. + ARM64 filter can increase compression ratio for data containing executable + files compiled for ARM64 (AArch64) architecture. + Also 7-Zip now parses executable files (that have exe and dll filename extensions) + before compressing, and it selects appropriate filter for each parsed file: + - BCJ or BCJ2 filter for x86 executable files, + - ARM64 filter for ARM64 executable files. + Previous versions by default used x86 filter BCJ or BCJ2 for all exe/dll files. +- Default section size for BCJ2 filter was changed from 64 MiB to 240 MiB. + It can increase compression ratio for executable files larger than 64 MiB. +- Some optimizations in filters code: BCJ, BCJ2, Swap* and opthers. +- If 7-Zip uses BCJ2 filter for big datasets compressing, it can use additional temp + files in system's TEMP folder. 7-Zip uses temp file for additional compressed + data stream, if size of such compressed stream is larger than predefined limit: + 16 MiB in 32-bit version, 4 GiB in 64-bit version. +- When new 7-Zip creates multivolume archive, 7-Zip keeps in open state + only volumes that still can be changed. Previous versions kept all volumes + in open state until the end of the archive creation. +- 7-Zip for Linux and macOS now can reduce the number of simultaneously open files, + when 7-Zip opens, extracts or creates multivolume archive. It allows to avoid + the failures for cases with big number of volumes, bacause there is a limitation + for number of open files allowed for a single program in Linux and macOS. +- Some bugs were fixed. +- Source code changes: +- All external macros for compiling C/C++ code of 7-Zip now have Z7_ prefix. +- 7-Zip COM interfaces now use new macros that allow to declare and implement COM interface. +- The code has been modified to compile with the maximum diagnostic warning level: + -Wall in MSVC and -Weverything in CLANG. + And some warning types are disabled in 2 files: + - C/Compiler.h for C/C++ code warnings. + - CPP/Common/Common.h for C++ code warnings. +- Linux/macOS versions of 7-Zip: IUnknown interface in new code doesn't use + virtual destructor that was used in previous 7-Zip and p7zip: + // virtual ~IUnknown() {} + So 7-Zip's dynamically linked shared libraries (codecs) are not compatible + between new 7-Zip for Linux/macOS and old 7-Zip (and p7zip). + + +21.07 2021-12-26 +------------------------- +- New switches: -spm and -im!{file_path} to exclude directories from processing + for specified paths that don't contain path separator character at the end of path. +- The sorting order of files in archives was slightly changed to be more consistent + for cases where the name of some directory is the same as the prefix part of the name + of another directory or file. + + +21.06 2021-11-24 +------------------------- +- Bug in LZMA encoder in file LzmaEnc.c was fixed: + LzmaEnc_MemEncode(), LzmaEncode() and LzmaCompress() could work incorrectly, + if size value for output buffer is smaller than size required for all compressed data. + LzmaEnc_Encode() could work incorrectly, + if callback ISeqOutStream::Write() doesn't write all compressed data. + NCompress::NLzma::CEncoder::Code() could work incorrectly, + if callback ISequentialOutStream::Write() returns error code. +- Bug in versions 21.00-21.05 was fixed: + 7-Zip didn't set attributes of directories during archive extracting. + + +21.04 beta 2021-11-02 +------------------------- +- 7-Zip now reduces the number of working CPU threads for compression, + if RAM size is not enough for compression with big LZMA2 dictionary. +- 7-Zip now can create and check "file.sha256" text files that contain the list + of file names and SHA-256 checksums in format compatible with sha256sum program. + + +21.03 beta 2021-07-20 +------------------------- +- The maximum dictionary size for LZMA/LZMA2 compressing was increased to 4 GB (3840 MiB). +- Minor speed optimizations in LZMA/LZMA2 compressing. + + +21.02 alpha 2021-05-06 +------------------------- +- The command line version of 7-Zip for macOS was released. +- The speed for LZMA and LZMA2 decompression in arm64 versions for macOS and Linux + was increased by 20%-60%. + + +21.01 alpha 2021-03-09 +------------------------- +- The command line version of 7-Zip for Linux was released. +- The improvements for speed of ARM64 version using hardware CPU instructions + for AES, CRC-32, SHA-1 and SHA-256. +- Some bugs were fixed. + + +20.02 alpha 2020-08-08 +------------------------- +- The default number of LZMA2 chunks per solid block in 7z archive was increased to 64. + It allows to increase the compression speed for big 7z archives, if there is a big number + of CPU cores and threads. +- The speed of PPMd compressing/decompressing was increased for 7z archives. +- The new -ssp switch. If the switch -ssp is specified, 7-Zip doesn't allow the system + to modify "Last Access Time" property of source files for archiving and hashing operations. +- Some bugs were fixed. + + +20.00 alpha 2020-02-06 +------------------------- +- 7-Zip now supports new optional match finders for LZMA/LZMA2 compression: bt5 and hc5, + that can work faster than bt4 and hc4 match finders for the data with big redundancy. +- The compression ratio was improved for Fast and Fastest compression levels with the + following default settings: + - Fastest level (-mx1) : hc5 match finder with 256 KB dictionary. + - Fast level (-mx3) : hc5 match finder with 4 MB dictionary. +- Minor speed optimizations in multithreaded LZMA/LZMA2 compression for Normal/Maximum/Ultra + compression levels. + + +19.00 2019-02-21 +------------------------- +- Encryption strength for 7z archives was increased: + the size of random initialization vector was increased from 64-bit to 128-bit, + and the pseudo-random number generator was improved. +- The bug in 7zIn.c code was fixed. + + +18.06 2018-12-30 +------------------------- +- The speed for LZMA/LZMA2 compressing was increased by 3-10%, + and there are minor changes in compression ratio. +- Some bugs were fixed. +- The bug in 7-Zip 18.02-18.05 was fixed: + There was memory leak in multithreading xz decoder - XzDecMt_Decode(), + if xz stream contains only one block. +- The changes for MSVS compiler makefiles: + - the makefiles now use "PLATFORM" macroname with values (x64, x86, arm64) + instead of "CPU" macroname with values (AMD64, ARM64). + - the makefiles by default now use static version of the run-time library. + + +18.05 2018-04-30 +------------------------- +- The speed for LZMA/LZMA2 compressing was increased + by 8% for fastest/fast compression levels and + by 3% for normal/maximum compression levels. +- Previous versions of 7-Zip could work incorrectly in "Large memory pages" mode in + Windows 10 because of some BUG with "Large Pages" in Windows 10. + Now 7-Zip doesn't use "Large Pages" on Windows 10 up to revision 1709 (16299). +- The BUG was fixed in Lzma2Enc.c + Lzma2Enc_Encode2() function worked incorretly, + if (inStream == NULL) and the number of block threads is more than 1. + + +18.03 beta 2018-03-04 +------------------------- +- Asm\x86\LzmaDecOpt.asm: new optimized LZMA decoder written in asm + for x64 with about 30% higher speed than main version of LZMA decoder written in C. +- The speed for single-thread LZMA/LZMA2 decoder written in C was increased by 3%. +- 7-Zip now can use multi-threading for 7z/LZMA2 decoding, + if there are multiple independent data chunks in LZMA2 stream. +- 7-Zip now can use multi-threading for xz decoding, + if there are multiple blocks in xz stream. + + +18.01 2019-01-28 +------------------------- +- The BUG in 17.01 - 18.00 beta was fixed: + XzDec.c : random block unpacking and XzUnpacker_IsBlockFinished() + didn't work correctly for xz archives without checksum (CRC). + + +18.00 beta 2019-01-10 +------------------------- +- The BUG in xz encoder was fixed: + There was memory leak of 16 KB for each file compressed with + xz compression method, if additional filter was used. + + +17.01 beta 2017-08-28 +------------------------- +- Minor speed optimization for LZMA2 (xz and 7z) multi-threading compression. + 7-Zip now uses additional memory buffers for multi-block LZMA2 compression. + CPU utilization was slightly improved. +- 7-zip now creates multi-block xz archives by default. Block size can be + specified with -ms[Size]{m|g} switch. +- xz decoder now can unpack random block from multi-block xz archives. +- 7-Zip command line: @listfile now doesn't work after -- switch. + Use -i@listfile before -- switch instead. +- The BUGs were fixed: + 7-Zip 17.00 beta crashed for commands that write anti-item to 7z archive. + + +17.00 beta 2017-04-29 +------------------------- +- NewHandler.h / NewHandler.cpp: + now it redefines operator new() only for old MSVC compilers (_MSC_VER < 1900). +- C/7zTypes.h : the names of variables in interface structures were changed (vt). +- Some bugs were fixed. 7-Zip could crash in some cases. +- Some internal changes in code. + + +16.04 2016-10-04 +------------------------- +- The bug was fixed in DllSecur.c. + + +16.03 2016-09-28 +------------------------- +- SFX modules now use some protection against DLL preloading attack. +- Some bugs in 7z code were fixed. + + +16.02 2016-05-21 +------------------------- +- The BUG in 16.00 - 16.01 was fixed: + Split Handler (SplitHandler.cpp) returned incorrect + total size value (kpidSize) for split archives. + + +16.01 2016-05-19 +------------------------- +- Some internal changes to reduce the number of compiler warnings. + + +16.00 2016-05-10 +------------------------- +- Some bugs were fixed. + + +15.12 2015-11-19 +------------------------- +- The BUG in C version of 7z decoder was fixed: + 7zDec.c : SzDecodeLzma2() + 7z decoder could mistakenly report about decoding error for some 7z archives + that use LZMA2 compression method. + The probability to get that mistaken decoding error report was about + one error per 16384 solid blocks for solid blocks larger than 16 KB (compressed size). +- The BUG (in 9.26-15.11) in C version of 7z decoder was fixed: + 7zArcIn.c : SzReadHeader2() + 7z decoder worked incorrectly for 7z archives that contain + empty solid blocks, that can be placed to 7z archive, if some file is + unavailable for reading during archive creation. + + +15.09 beta 2015-10-16 +------------------------- +- The BUG in LZMA / LZMA2 encoding code was fixed. + The BUG in LzFind.c::MatchFinder_ReadBlock() function. + If input data size is larger than (4 GiB - dictionary_size), + the following code worked incorrectly: + - LZMA : LzmaEnc_MemEncode(), LzmaEncode() : LZMA encoding functions + for compressing from memory to memory. + That BUG is not related to LZMA encoder version that works via streams. + - LZMA2 : multi-threaded version of LZMA2 encoder worked incorrectly, if + default value of chunk size (CLzma2EncProps::blockSize) is changed + to value larger than (4 GiB - dictionary_size). + + +9.38 beta 2015-01-03 +------------------------- +- The BUG in 9.31-9.37 was fixed: + IArchiveGetRawProps interface was disabled for 7z archives. +- The BUG in 9.26-9.36 was fixed: + Some code in CPP\7zip\Archive\7z\ worked correctly only under Windows. + + +9.36 beta 2014-12-26 +------------------------- +- The BUG in command line version was fixed: + 7-Zip created temporary archive in current folder during update archive + operation, if -w{Path} switch was not specified. + The fixed 7-Zip creates temporary archive in folder that contains updated archive. +- The BUG in 9.33-9.35 was fixed: + 7-Zip silently ignored file reading errors during 7z or gz archive creation, + and the created archive contained only part of file that was read before error. + The fixed 7-Zip stops archive creation and it reports about error. + + +9.35 beta 2014-12-07 +------------------------- +- 7zr.exe now support AES encryption. +- SFX mudules were added to LZMA SDK +- Some bugs were fixed. + + +9.21 beta 2011-04-11 +------------------------- +- New class FString for file names at file systems. +- Speed optimization in CRC code for big-endian CPUs. +- The BUG in Lzma2Dec.c was fixed: + Lzma2Decode function didn't work. + + +9.18 beta 2010-11-02 +------------------------- +- New small SFX module for installers (SfxSetup). + + +9.12 beta 2010-03-24 +------------------------- +- The BUG in LZMA SDK 9.* was fixed: LZMA2 codec didn't work, + if more than 10 threads were used (or more than 20 threads in some modes). + + +9.11 beta 2010-03-15 +------------------------- +- PPMd compression method support + + +9.09 2009-12-12 +------------------------- +- The bug was fixed: + Utf16_To_Utf8 funstions in UTFConvert.cpp and 7zMain.c + incorrectly converted surrogate characters (the code >= 0x10000) to UTF-8. +- Some bugs were fixed + + +9.06 2009-08-17 +------------------------- +- Some changes in ANSI-C 7z Decoder interfaces. + + +9.04 2009-05-30 +------------------------- +- LZMA2 compression method support +- xz format support + + +4.65 2009-02-03 +------------------------- +- Some minor fixes + + +4.63 2008-12-31 +------------------------- +- Some minor fixes + + +4.61 beta 2008-11-23 +------------------------- +- The bug in ANSI-C LZMA Decoder was fixed: + If encoded stream was corrupted, decoder could access memory + outside of allocated range. +- Some changes in ANSI-C 7z Decoder interfaces. +- LZMA SDK is placed in the public domain. + + +4.60 beta 2008-08-19 +------------------------- +- Some minor fixes. + + +4.59 beta 2008-08-13 +------------------------- +- The bug was fixed: + LZMA Encoder in fast compression mode could access memory outside of + allocated range in some rare cases. + + +4.58 beta 2008-05-05 +------------------------- +- ANSI-C LZMA Decoder was rewritten for speed optimizations. +- ANSI-C LZMA Encoder was included to LZMA SDK. +- C++ LZMA code now is just wrapper over ANSI-C code. + + +4.57 2007-12-12 +------------------------- +- Speed optimizations in ++ LZMA Decoder. +- Small changes for more compatibility with some C/C++ compilers. + + +4.49 beta 2007-07-05 +------------------------- +- .7z ANSI-C Decoder: + - now it supports BCJ and BCJ2 filters + - now it supports files larger than 4 GB. + - now it supports "Last Write Time" field for files. +- C++ code for .7z archives compressing/decompressing from 7-zip + was included to LZMA SDK. + + +4.43 2006-06-04 +------------------------- +- Small changes for more compatibility with some C/C++ compilers. + + +4.42 2006-05-15 +------------------------- +- Small changes in .h files in ANSI-C version. + + +4.39 beta 2006-04-14 +------------------------- +- The bug in versions 4.33b:4.38b was fixed: + C++ version of LZMA encoder could not correctly compress + files larger than 2 GB with HC4 match finder (-mfhc4). + + +4.37 beta 2005-04-06 +------------------------- +- Fixes in C++ code: code could no be compiled if _NO_EXCEPTIONS was defined. + + +4.35 beta 2005-03-02 +------------------------- +- The bug was fixed in C++ version of LZMA Decoder: + If encoded stream was corrupted, decoder could access memory + outside of allocated range. + + +4.34 beta 2006-02-27 +------------------------- +- Compressing speed and memory requirements for compressing were increased +- LZMA now can use only these match finders: HC4, BT2, BT3, BT4 + + +4.32 2005-12-09 +------------------------- +- Java version of LZMA SDK was included + + +4.30 2005-11-20 +------------------------- +- Compression ratio was improved in -a2 mode +- Speed optimizations for compressing in -a2 mode +- -fb switch now supports values up to 273 +- The bug in 7z_C (7zIn.c) was fixed: + It used Alloc/Free functions from different memory pools. + So if program used two memory pools, it worked incorrectly. +- 7z_C: .7z format supporting was improved +- LZMA# SDK (C#.NET version) was included + + +4.27 (Updated) 2005-09-21 +------------------------- +- Some GUIDs/interfaces in C++ were changed. + IStream.h: + ISequentialInStream::Read now works as old ReadPart + ISequentialOutStream::Write now works as old WritePart + + +4.27 2005-08-07 +------------------------- +- The bug in LzmaDecodeSize.c was fixed: + if _LZMA_IN_CB and _LZMA_OUT_READ were defined, + decompressing worked incorrectly. + + +4.26 2005-08-05 +------------------------- +- Fixes in 7z_C code and LzmaTest.c: + previous versions could work incorrectly, + if malloc(0) returns 0 + + +4.23 2005-06-29 +------------------------- +- Small fixes in C++ code + + +4.22 2005-06-10 +------------------------- +- Small fixes + + +4.21 2005-06-08 +------------------------- +- Interfaces for ANSI-C LZMA Decoder (LzmaDecode.c) were changed +- New additional version of ANSI-C LZMA Decoder with zlib-like interface: + - LzmaStateDecode.h + - LzmaStateDecode.c + - LzmaStateTest.c +- ANSI-C LZMA Decoder now can decompress files larger than 4 GB + + +4.17 2005-04-18 +------------------------- +- New example for RAM->RAM compressing/decompressing: + LZMA + BCJ (filter for x86 code): + - LzmaRam.h + - LzmaRam.cpp + - LzmaRamDecode.h + - LzmaRamDecode.c + - -f86 switch for lzma.exe + + +4.16 2005-03-29 +------------------------- +- The bug was fixed in LzmaDecode.c (ANSI-C LZMA Decoder): + If _LZMA_OUT_READ was defined, and if encoded stream was corrupted, + decoder could access memory outside of allocated range. +- Speed optimization of ANSI-C LZMA Decoder (now it's about 20% faster). + Old version of LZMA Decoder now is in file LzmaDecodeSize.c. + LzmaDecodeSize.c can provide slightly smaller code than LzmaDecode.c +- Small speed optimization in LZMA C++ code +- filter for SPARC's code was added +- Simplified version of .7z ANSI-C Decoder was included + + +4.06 2004-09-05 +------------------------- +- The bug in v4.05 was fixed: + LZMA-Encoder didn't release output stream in some cases. + + +4.05 2004-08-25 +------------------------- +- Source code of filters for x86, IA-64, ARM, ARM-Thumb + and PowerPC code was included to SDK +- Some internal minor changes + + +4.04 2004-07-28 +------------------------- +- More compatibility with some C++ compilers + + +4.03 2004-06-18 +------------------------- +- "Benchmark" command was added. It measures compressing + and decompressing speed and shows rating values. + Also it checks hardware errors. + + +4.02 2004-06-10 +------------------------- +- C++ LZMA Encoder/Decoder code now is more portable + and it can be compiled by GCC on Linux. + + +4.01 2004-02-15 +------------------------- +- Some detection of data corruption was enabled. + LzmaDecode.c / RangeDecoderReadByte + ..... + { + rd->ExtraBytes = 1; + return 0xFF; + } + + +4.00 2004-02-13 +------------------------- +- Original version of LZMA SDK + + + +HISTORY of the LZMA +------------------- + 2001-2008: Improvements to LZMA compressing/decompressing code, + keeping compatibility with original LZMA format + 1996-2001: Development of LZMA compression format + + Some milestones: + + 2001-08-30: LZMA compression was added to 7-Zip + 1999-01-02: First version of 7-Zip was released + + +End of document diff --git a/deps/LZMA-SDK/DOC/lzma-sdk.txt b/deps/LZMA-SDK/DOC/lzma-sdk.txt index ed1a431ee..822cddf99 100644 --- a/deps/LZMA-SDK/DOC/lzma-sdk.txt +++ b/deps/LZMA-SDK/DOC/lzma-sdk.txt @@ -1,404 +1,409 @@ -LZMA SDK 22.01 --------------- - -LZMA SDK provides the documentation, samples, header files, -libraries, and tools you need to develop applications that -use 7z / LZMA / LZMA2 / XZ compression. - -LZMA is an improved version of famous LZ77 compression algorithm. -It was improved in way of maximum increasing of compression ratio, -keeping high decompression speed and low memory requirements for -decompressing. - -LZMA2 is a LZMA based compression method. LZMA2 provides better -multithreading support for compression than LZMA and some other improvements. - -7z is a file format for data compression and file archiving. -7z is a main file format for 7-Zip compression program (www.7-zip.org). -7z format supports different compression methods: LZMA, LZMA2 and others. -7z also supports AES-256 based encryption. - -XZ is a file format for data compression that uses LZMA2 compression. -XZ format provides additional features: SHA/CRC check, filters for -improved compression ratio, splitting to blocks and streams, - - - -LICENSE -------- - -LZMA SDK is written and placed in the public domain by Igor Pavlov. - -Some code in LZMA SDK is based on public domain code from another developers: - 1) PPMd var.H (2001): Dmitry Shkarin - 2) SHA-256: Wei Dai (Crypto++ library) - -Anyone is free to copy, modify, publish, use, compile, sell, or distribute the -original LZMA SDK code, either in source code form or as a compiled binary, for -any purpose, commercial or non-commercial, and by any means. - -LZMA SDK code is compatible with open source licenses, for example, you can -include it to GNU GPL or GNU LGPL code. - - -LZMA SDK Contents ------------------ - - Source code: - - - C / C++ / C# / Java - LZMA compression and decompression - - C / C++ - LZMA2 compression and decompression - - C / C++ - XZ compression and decompression - - C - 7z decompression - - C++ - 7z compression and decompression - - C - small SFXs for installers (7z decompression) - - C++ - SFXs and SFXs for installers (7z decompression) - - Precomiled binaries: - - - console programs for lzma / 7z / xz compression and decompression - - SFX modules for installers. - - -UNIX/Linux version ------------------- -There are several otpions to compile 7-Zip with different compilers: gcc and clang. -Also 7-Zip code contains two versions for some critical parts of code: in C and in Assembeler. -So if you compile the version with Assembeler code, you will get faster 7-Zip binary. - -7-Zip's assembler code uses the following syntax for different platforms: - -1) x86 and x86-64 (AMD64): MASM syntax. - There are 2 programs that supports MASM syntax in Linux. -' 'Asmc Macro Assembler and JWasm. But JWasm now doesn't support some - cpu instructions used in 7-Zip. - So you must install Asmc Macro Assembler in Linux, if you want to compile fastest version - of 7-Zip x86 and x86-64: - https://github.com/nidud/asmc - -2) arm64: GNU assembler for ARM64 with preprocessor. - That systax of that arm64 assembler code in 7-Zip is supported by GCC and CLANG for ARM64. - -There are different binaries that can be compiled from 7-Zip source. -There are 2 main files in folder for compiling: - makefile - that can be used for compiling Windows version of 7-Zip with nmake command - makefile.gcc - that can be used for compiling Linux/macOS versions of 7-Zip with make command - -At first you must change the current folder to folder that contains `makefile.gcc`: - - cd CPP/7zip/Bundles/Alone7z - -Then you can compile `makefile.gcc` with the command: - - make -j -f makefile.gcc - -Also there are additional "*.mak" files in folder "CPP/7zip/" that can be used to compile -7-Zip binaries with optimized code and optimzing options. - -To compile with GCC without assembler: - cd CPP/7zip/Bundles/Alone7z - make -j -f ../../cmpl_gcc.mak - -To compile with CLANG without assembler: - make -j -f ../../cmpl_clang.mak - -To compile 7-Zip for x86-64 with asmc assembler: - make -j -f ../../cmpl_gcc_x64.mak - -To compile 7-Zip for arm64 with assembler: - make -j -f ../../cmpl_gcc_arm64.mak - -To compile 7-Zip for arm64 for macOS: - make -j -f ../../cmpl_mac_arm64.mak - -Also you can change some compiler options in the mak files: - cmpl_gcc.mak - var_gcc.mak - warn_gcc.mak - - - -Also you can use p7zip (port of 7-Zip for POSIX systems like Unix or Linux): - - http://p7zip.sourceforge.net/ - - -Files ------ - -DOC/7zC.txt - 7z ANSI-C Decoder description -DOC/7zFormat.txt - 7z Format description -DOC/installer.txt - information about 7-Zip for installers -DOC/lzma.txt - LZMA compression description -DOC/lzma-sdk.txt - LZMA SDK description (this file) -DOC/lzma-history.txt - history of LZMA SDK -DOC/lzma-specification.txt - Specification of LZMA -DOC/Methods.txt - Compression method IDs for .7z - -bin/installer/ - example script to create installer that uses SFX module, - -bin/7zdec.exe - simplified 7z archive decoder -bin/7zr.exe - 7-Zip console program (reduced version) -bin/x64/7zr.exe - 7-Zip console program (reduced version) (x64 version) -bin/lzma.exe - file->file LZMA encoder/decoder for Windows -bin/7zS2.sfx - small SFX module for installers (GUI version) -bin/7zS2con.sfx - small SFX module for installers (Console version) -bin/7zSD.sfx - SFX module for installers. - - -7zDec.exe ---------- -7zDec.exe is simplified 7z archive decoder. -It supports only LZMA, LZMA2, and PPMd methods. -7zDec decodes whole solid block from 7z archive to RAM. -The RAM consumption can be high. - - - - -Source code structure ---------------------- - - -Asm/ - asm files (optimized code for CRC calculation and Intel-AES encryption) - -C/ - C files (compression / decompression and other) - Util/ - 7z - 7z decoder program (decoding 7z files) - Lzma - LZMA program (file->file LZMA encoder/decoder). - LzmaLib - LZMA library (.DLL for Windows) - SfxSetup - small SFX module for installers - -CPP/ -- CPP files - - Common - common files for C++ projects - Windows - common files for Windows related code - - 7zip - files related to 7-Zip - - Archive - files related to archiving - - Common - common files for archive handling - 7z - 7z C++ Encoder/Decoder - - Bundles - Modules that are bundles of other modules (files) - - Alone7z - 7zr.exe: Standalone 7-Zip console program (reduced version) - Format7zExtractR - 7zxr.dll: Reduced version of 7z DLL: extracting from 7z/LZMA/BCJ/BCJ2. - Format7zR - 7zr.dll: Reduced version of 7z DLL: extracting/compressing to 7z/LZMA/BCJ/BCJ2 - LzmaCon - lzma.exe: LZMA compression/decompression - LzmaSpec - example code for LZMA Specification - SFXCon - 7zCon.sfx: Console 7z SFX module - SFXSetup - 7zS.sfx: 7z SFX module for installers - SFXWin - 7z.sfx: GUI 7z SFX module - - Common - common files for 7-Zip - - Compress - files for compression/decompression - - Crypto - files for encryption / decompression - - UI - User Interface files - - Client7z - Test application for 7za.dll, 7zr.dll, 7zxr.dll - Common - Common UI files - Console - Code for console program (7z.exe) - Explorer - Some code from 7-Zip Shell extension - FileManager - Some GUI code from 7-Zip File Manager - GUI - Some GUI code from 7-Zip - - -CS/ - C# files - 7zip - Common - some common files for 7-Zip - Compress - files related to compression/decompression - LZ - files related to LZ (Lempel-Ziv) compression algorithm - LZMA - LZMA compression/decompression - LzmaAlone - file->file LZMA compression/decompression - RangeCoder - Range Coder (special code of compression/decompression) - -Java/ - Java files - SevenZip - Compression - files related to compression/decompression - LZ - files related to LZ (Lempel-Ziv) compression algorithm - LZMA - LZMA compression/decompression - RangeCoder - Range Coder (special code of compression/decompression) - - -Note: - Asm / C / C++ source code of LZMA SDK is part of 7-Zip's source code. - 7-Zip's source code can be downloaded from 7-Zip's SourceForge page: - - http://sourceforge.net/projects/sevenzip/ - - - -LZMA features -------------- - - Variable dictionary size (up to 1 GB) - - Estimated compressing speed: about 2 MB/s on 2 GHz CPU - - Estimated decompressing speed: - - 20-30 MB/s on modern 2 GHz cpu - - 1-2 MB/s on 200 MHz simple RISC cpu: (ARM, MIPS, PowerPC) - - Small memory requirements for decompressing (16 KB + DictionarySize) - - Small code size for decompressing: 5-8 KB - -LZMA decoder uses only integer operations and can be -implemented in any modern 32-bit CPU (or on 16-bit CPU with some conditions). - -Some critical operations that affect the speed of LZMA decompression: - 1) 32*16 bit integer multiply - 2) Mispredicted branches (penalty mostly depends from pipeline length) - 3) 32-bit shift and arithmetic operations - -The speed of LZMA decompressing mostly depends from CPU speed. -Memory speed has no big meaning. But if your CPU has small data cache, -overall weight of memory speed will slightly increase. - - -How To Use ----------- - -Using LZMA encoder/decoder executable --------------------------------------- - -Usage: LZMA inputFile outputFile [...] - - e: encode file - - d: decode file - - b: Benchmark. There are two tests: compressing and decompressing - with LZMA method. Benchmark shows rating in MIPS (million - instructions per second). Rating value is calculated from - measured speed and it is normalized with Intel's Core 2 results. - Also Benchmark checks possible hardware errors (RAM - errors in most cases). Benchmark uses these settings: - (-a1, -d21, -fb32, -mfbt4). You can change only -d parameter. - Also you can change the number of iterations. Example for 30 iterations: - LZMA b 30 - Default number of iterations is 10. - - - - - -a{N}: set compression mode 0 = fast, 1 = normal - default: 1 (normal) - - d{N}: Sets Dictionary size - [0, 30], default: 23 (8MB) - The maximum value for dictionary size is 1 GB = 2^30 bytes. - Dictionary size is calculated as DictionarySize = 2^N bytes. - For decompressing file compressed by LZMA method with dictionary - size D = 2^N you need about D bytes of memory (RAM). - - -fb{N}: set number of fast bytes - [5, 273], default: 128 - Usually big number gives a little bit better compression ratio - and slower compression process. - - -lc{N}: set number of literal context bits - [0, 8], default: 3 - Sometimes lc=4 gives gain for big files. - - -lp{N}: set number of literal pos bits - [0, 4], default: 0 - lp switch is intended for periodical data when period is - equal 2^N. For example, for 32-bit (4 bytes) - periodical data you can use lp=2. Often it's better to set lc0, - if you change lp switch. - - -pb{N}: set number of pos bits - [0, 4], default: 2 - pb switch is intended for periodical data - when period is equal 2^N. - - -mf{MF_ID}: set Match Finder. Default: bt4. - Algorithms from hc* group doesn't provide good compression - ratio, but they often works pretty fast in combination with - fast mode (-a0). - - Memory requirements depend from dictionary size - (parameter "d" in table below). - - MF_ID Memory Description - - bt2 d * 9.5 + 4MB Binary Tree with 2 bytes hashing. - bt3 d * 11.5 + 4MB Binary Tree with 3 bytes hashing. - bt4 d * 11.5 + 4MB Binary Tree with 4 bytes hashing. - hc4 d * 7.5 + 4MB Hash Chain with 4 bytes hashing. - - -eos: write End Of Stream marker. By default LZMA doesn't write - eos marker, since LZMA decoder knows uncompressed size - stored in .lzma file header. - - -si: Read data from stdin (it will write End Of Stream marker). - -so: Write data to stdout - - -Examples: - -1) LZMA e file.bin file.lzma -d16 -lc0 - -compresses file.bin to file.lzma with 64 KB dictionary (2^16=64K) -and 0 literal context bits. -lc0 allows to reduce memory requirements -for decompression. - - -2) LZMA e file.bin file.lzma -lc0 -lp2 - -compresses file.bin to file.lzma with settings suitable -for 32-bit periodical data (for example, ARM or MIPS code). - -3) LZMA d file.lzma file.bin - -decompresses file.lzma to file.bin. - - -Compression ratio hints ------------------------ - -Recommendations ---------------- - -To increase the compression ratio for LZMA compressing it's desirable -to have aligned data (if it's possible) and also it's desirable to locate -data in such order, where code is grouped in one place and data is -grouped in other place (it's better than such mixing: code, data, code, -data, ...). - - -Filters -------- -You can increase the compression ratio for some data types, using -special filters before compressing. For example, it's possible to -increase the compression ratio on 5-10% for code for those CPU ISAs: -x86, IA-64, ARM, ARM-Thumb, PowerPC, SPARC. - -You can find C source code of such filters in C/Bra*.* files - -You can check the compression ratio gain of these filters with such -7-Zip commands (example for ARM code): -No filter: - 7z a a1.7z a.bin -m0=lzma - -With filter for little-endian ARM code: - 7z a a2.7z a.bin -m0=arm -m1=lzma - -It works in such manner: -Compressing = Filter_encoding + LZMA_encoding -Decompressing = LZMA_decoding + Filter_decoding - -Compressing and decompressing speed of such filters is very high, -so it will not increase decompressing time too much. -Moreover, it reduces decompression time for LZMA_decoding, -since compression ratio with filtering is higher. - -These filters convert CALL (calling procedure) instructions -from relative offsets to absolute addresses, so such data becomes more -compressible. - -For some ISAs (for example, for MIPS) it's impossible to get gain from such filter. - - - ---- - -http://www.7-zip.org -http://www.7-zip.org/sdk.html -http://www.7-zip.org/support.html +LZMA SDK 24.09 +-------------- + +LZMA SDK provides the documentation, samples, header files, +libraries, and tools you need to develop applications that +use 7z / LZMA / LZMA2 / XZ compression. + +LZMA is an improved version of famous LZ77 compression algorithm. +It was improved in way of maximum increasing of compression ratio, +keeping high decompression speed and low memory requirements for +decompressing. + +LZMA2 is a LZMA based compression method. LZMA2 provides better +multithreading support for compression than LZMA and some other improvements. + +7z is a file format for data compression and file archiving. +7z is a main file format for 7-Zip compression program (www.7-zip.org). +7z format supports different compression methods: LZMA, LZMA2 and others. +7z also supports AES-256 based encryption. + +XZ is a file format for data compression that uses LZMA2 compression. +XZ format provides additional features: SHA/CRC check, filters for +improved compression ratio, splitting to blocks and streams, + + + +LICENSE +------- + +LZMA SDK is written and placed in the public domain by Igor Pavlov. + +Some code in LZMA SDK is based on public domain code from another developers: + 1) PPMd var.H (2001): Dmitry Shkarin + 2) SHA-256: Wei Dai (Crypto++ library) + +Anyone is free to copy, modify, publish, use, compile, sell, or distribute the +original LZMA SDK code, either in source code form or as a compiled binary, for +any purpose, commercial or non-commercial, and by any means. + +LZMA SDK code is compatible with open source licenses, for example, you can +include it to GNU GPL or GNU LGPL code. + + +LZMA SDK Contents +----------------- + + Source code: + + - C / C++ / C# / Java - LZMA compression and decompression + - C / C++ - LZMA2 compression and decompression + - C / C++ - XZ compression and decompression + - C - 7z decompression + - C++ - 7z compression and decompression + - C - small SFXs for installers (7z decompression) + - C++ - SFXs and SFXs for installers (7z decompression) + + Precomiled binaries: + + - console programs for lzma / 7z / xz compression and decompression + - SFX modules for installers. + + +UNIX/Linux version +------------------ +There are several otpions to compile 7-Zip with different compilers: gcc and clang. +Also 7-Zip code contains two versions for some critical parts of code: in C and in Assembeler. +So if you compile the version with Assembeler code, you will get faster 7-Zip binary. + +7-Zip's assembler code uses the following syntax for different platforms: + +1) x86 and x86-64 (AMD64): MASM syntax. + There are 2 programs that supports MASM syntax in Linux. +' 'Asmc Macro Assembler and JWasm. But JWasm now doesn't support some + cpu instructions used in 7-Zip. + So you must install Asmc Macro Assembler in Linux, if you want to compile fastest version + of 7-Zip x86 and x86-64: + https://github.com/nidud/asmc + +2) arm64: GNU assembler for ARM64 with preprocessor. + That systax of that arm64 assembler code in 7-Zip is supported by GCC and CLANG for ARM64. + +There are different binaries that can be compiled from 7-Zip source. +There are 2 main files in folder for compiling: + makefile - that can be used for compiling Windows version of 7-Zip with nmake command + makefile.gcc - that can be used for compiling Linux/macOS versions of 7-Zip with make command + +At first you must change the current folder to folder that contains `makefile.gcc`: + + cd CPP/7zip/Bundles/Alone7z + +Then you can compile `makefile.gcc` with the command: + + make -j -f makefile.gcc + +Also there are additional "*.mak" files in folder "CPP/7zip/" that can be used to compile +7-Zip binaries with optimized code and optimzing options. + +To compile with GCC without assembler: + cd CPP/7zip/Bundles/Alone7z + make -j -f ../../cmpl_gcc.mak + +To compile with CLANG without assembler: + make -j -f ../../cmpl_clang.mak + +To compile 7-Zip for x86-64 with asmc assembler: + make -j -f ../../cmpl_gcc_x64.mak + +To compile 7-Zip for arm64 with assembler: + make -j -f ../../cmpl_gcc_arm64.mak + +To compile 7-Zip for arm64 for macOS: + make -j -f ../../cmpl_mac_arm64.mak + +Also you can change some compiler options in the mak files: + cmpl_gcc.mak + var_gcc.mak + warn_gcc.mak + + + +Also you can use p7zip (port of 7-Zip for POSIX systems like Unix or Linux): + + http://p7zip.sourceforge.net/ + + +Files +----- + +DOC/7zC.txt - 7z ANSI-C Decoder description +DOC/7zFormat.txt - 7z Format description +DOC/installer.txt - information about 7-Zip for installers +DOC/lzma.txt - LZMA compression description +DOC/lzma-sdk.txt - LZMA SDK description (this file) +DOC/lzma-history.txt - history of LZMA SDK +DOC/lzma-specification.txt - Specification of LZMA +DOC/Methods.txt - Compression method IDs for .7z + +bin/installer/ - example script to create installer that uses SFX module, + +bin/7zdec.exe - simplified 7z archive decoder (x86 32-bit version) +bin/7zr.exe - 7-Zip console program (reduced version) (x86 32-bit version) +bin/x64/7zr.exe - 7-Zip console program (reduced version) (x64 version) +bin/x64/7zdec.exe - simplified 7z archive decoder (x64 version) +bin/arm64/7zr.exe - 7-Zip console program (reduced version) (arm64 version) +bin/arm64/7zdec.exe - simplified 7z archive decoder (arm64 version) +bin/lzma.exe - file->file LZMA encoder/decoder for Windows +bin/7zS2.sfx - small SFX module for installers (GUI version) +bin/7zS2con.sfx - small SFX module for installers (Console version) +bin/7zSD.sfx - SFX module for installers. + + +7zDec.exe +--------- +7zDec.exe is simplified 7z archive decoder. +It supports only LZMA, LZMA2, and PPMd methods. +7zDec decodes whole solid block from 7z archive to RAM. +The RAM consumption can be high. + + + + +Source code structure +--------------------- + + +Asm/ - asm files (optimized code for CRC calculation and Intel-AES encryption) + +C/ - C files (compression / decompression and other) + Util/ + 7z - 7z decoder program (decoding 7z files) + Lzma - LZMA program (file->file LZMA encoder/decoder). + LzmaLib - LZMA library (.DLL for Windows) + SfxSetup - small SFX module for installers + +CPP/ -- CPP files + + Common - common files for C++ projects + Windows - common files for Windows related code + + 7zip - files related to 7-Zip + + Archive - files related to archiving + + Common - common files for archive handling + 7z - 7z C++ Encoder/Decoder + + Bundles - Modules that are bundles of other modules (files) + + Alone7z - 7zr.exe: Standalone 7-Zip console program (reduced version) + Format7zExtractR - 7zxr.dll: Reduced version of 7z DLL: extracting from 7z/LZMA/BCJ/BCJ2. + Format7zR - 7zr.dll: Reduced version of 7z DLL: extracting/compressing to 7z/LZMA/BCJ/BCJ2 + LzmaCon - lzma.exe: LZMA compression/decompression + LzmaSpec - example code for LZMA Specification + SFXCon - 7zCon.sfx: Console 7z SFX module + SFXSetup - 7zS.sfx: 7z SFX module for installers + SFXWin - 7z.sfx: GUI 7z SFX module + + Common - common files for 7-Zip + + Compress - files for compression/decompression + + Crypto - files for encryption / decompression + + UI - User Interface files + + Client7z - Test application for 7za.dll, 7zr.dll, 7zxr.dll + Common - Common UI files + Console - Code for console program (7z.exe) + Explorer - Some code from 7-Zip Shell extension + FileManager - Some GUI code from 7-Zip File Manager + GUI - Some GUI code from 7-Zip + + +CS/ - C# files + 7zip + Common - some common files for 7-Zip + Compress - files related to compression/decompression + LZ - files related to LZ (Lempel-Ziv) compression algorithm + LZMA - LZMA compression/decompression + LzmaAlone - file->file LZMA compression/decompression + RangeCoder - Range Coder (special code of compression/decompression) + +Java/ - Java files + SevenZip + Compression - files related to compression/decompression + LZ - files related to LZ (Lempel-Ziv) compression algorithm + LZMA - LZMA compression/decompression + RangeCoder - Range Coder (special code of compression/decompression) + + +Note: + Asm / C / C++ source code of LZMA SDK is part of 7-Zip's source code. + 7-Zip's source code can be downloaded from 7-Zip's SourceForge page: + + http://sourceforge.net/projects/sevenzip/ + + + +LZMA features +------------- + - Variable dictionary size (up to 4 GB) + - Estimated compressing speed: about 2 MB/s on 2 GHz CPU + - Estimated decompressing speed: + - 20-30 MB/s on modern 2 GHz cpu + - 1-2 MB/s on 200 MHz simple RISC cpu: (ARM, MIPS, PowerPC) + - Small memory requirements for decompressing (16 KB + DictionarySize) + - Small code size for decompressing: 5-8 KB + +LZMA decoder uses only integer operations and can be +implemented in any modern 32-bit CPU (or on 16-bit CPU with some conditions). + +Some critical operations that affect the speed of LZMA decompression: + 1) 32*16 bit integer multiply + 2) Mispredicted branches (penalty mostly depends from pipeline length) + 3) 32-bit shift and arithmetic operations + +The speed of LZMA decompressing mostly depends from CPU speed. +Memory speed has no big meaning. But if your CPU has small data cache, +overall weight of memory speed will slightly increase. + + +How To Use +---------- + +Using LZMA encoder/decoder executable +-------------------------------------- + +Usage: LZMA inputFile outputFile [...] + + e: encode file + + d: decode file + + b: Benchmark. There are two tests: compressing and decompressing + with LZMA method. Benchmark shows rating in MIPS (million + instructions per second). Rating value is calculated from + measured speed and it is normalized with Intel's Core 2 results. + Also Benchmark checks possible hardware errors (RAM + errors in most cases). Benchmark uses these settings: + (-a1, -d21, -fb32, -mfbt4). You can change only -d parameter. + Also you can change the number of iterations. Example for 30 iterations: + LZMA b 30 + Default number of iterations is 10. + + + + + -a{N}: set compression mode 0 = fast, 1 = normal + default: 1 (normal) + + d{N}: Sets Dictionary size - [0, 31], default: N=24 (32 MB) + The maximum value for dictionary size is N=31 (2 GB). + Dictionary size is calculated as DictionarySize = 2^N bytes. + For decompressing file compressed by LZMA method with dictionary + size D = 2^N you need about D bytes of memory (RAM). + + -fb{N}: set number of fast bytes - [5, 273], default: 128 + Usually big number gives a little bit better compression ratio + and slower compression process. + + -lc{N}: set number of literal context bits - [0, 8], default: 3 + Sometimes lc=4 gives gain for big files. + + -lp{N}: set number of literal pos bits - [0, 4], default: 0 + lp switch is intended for periodical data when period is + equal 2^N. For example, for 32-bit (4 bytes) + periodical data you can use lp=2. Often it's better to set lc0, + if you change lp switch. + + -pb{N}: set number of pos bits - [0, 4], default: 2 + pb switch is intended for periodical data + when period is equal 2^N. + + -mf{MF_ID}: set Match Finder. Default: bt4. + Algorithms from hc* group doesn't provide good compression + ratio, but they often works pretty fast in combination with + fast mode (-a0). + + Memory requirements depend from dictionary size + (parameter "d" in table below). + + MF_ID Memory Description + + bt2 d * 9.5 + 4MB Binary Tree with 2 bytes hashing. + bt3 d * 11.5 + 4MB Binary Tree with 3 bytes hashing. + bt4 d * 11.5 + 4MB Binary Tree with 4 bytes hashing. + bt5 d * 11.5 + 4MB Binary Tree with 5 bytes hashing. + hc4 d * 7.5 + 4MB Hash Chain with 4 bytes hashing. + hc5 d * 7.5 + 4MB Hash Chain with 5 bytes hashing. + + -eos: write End Of Stream marker. By default LZMA doesn't write + eos marker, since LZMA decoder knows uncompressed size + stored in .lzma file header. + + -si: Read data from stdin (it will write End Of Stream marker). + -so: Write data to stdout + + +Examples: + +1) LZMA e file.bin file.lzma -d16 -lc0 + +compresses file.bin to file.lzma with 64 KB dictionary (2^16=64K) +and 0 literal context bits. -lc0 allows to reduce memory requirements +for decompression. + + +2) LZMA e file.bin file.lzma -lc0 -lp2 + +compresses file.bin to file.lzma with settings suitable +for 32-bit periodical data (for example, ARM or MIPS code). + +3) LZMA d file.lzma file.bin + +decompresses file.lzma to file.bin. + + +Compression ratio hints +----------------------- + +Recommendations +--------------- + +To increase the compression ratio for LZMA compressing it's desirable +to have aligned data (if it's possible) and also it's desirable to locate +data in such order, where code is grouped in one place and data is +grouped in other place (it's better than such mixing: code, data, code, +data, ...). + + +Filters +------- +You can increase the compression ratio for some data types, using +special filters before compressing. For example, it's possible to +increase the compression ratio on 5-10% for code for those CPU ISAs: +x86, IA-64, ARM, ARM-Thumb, PowerPC, SPARC. + +You can find C source code of such filters in C/Bra*.* files + +You can check the compression ratio gain of these filters with such +7-Zip commands (example for ARM code): +No filter: + 7z a a1.7z a.bin -m0=lzma + +With filter for little-endian ARM code: + 7z a a2.7z a.bin -m0=arm -m1=lzma + +It works in such manner: +Compressing = Filter_encoding + LZMA_encoding +Decompressing = LZMA_decoding + Filter_decoding + +Compressing and decompressing speed of such filters is very high, +so it will not increase decompressing time too much. +Moreover, it reduces decompression time for LZMA_decoding, +since compression ratio with filtering is higher. + +These filters convert CALL (calling procedure) instructions +from relative offsets to absolute addresses, so such data becomes more +compressible. + +For some ISAs (for example, for MIPS) it's impossible to get gain from such filter. + + + +--- + +http://www.7-zip.org +http://www.7-zip.org/sdk.html +http://www.7-zip.org/support.html diff --git a/deps/LZMA-SDK/DOC/lzma-specification.txt b/deps/LZMA-SDK/DOC/lzma-specification.txt index ac0cce76a..b6796df75 100644 --- a/deps/LZMA-SDK/DOC/lzma-specification.txt +++ b/deps/LZMA-SDK/DOC/lzma-specification.txt @@ -1,1176 +1,1176 @@ -LZMA specification (DRAFT version) ----------------------------------- - -Author: Igor Pavlov -Date: 2015-06-14 - -This specification defines the format of LZMA compressed data and lzma file format. - -Notation --------- - -We use the syntax of C++ programming language. -We use the following types in C++ code: - unsigned - unsigned integer, at least 16 bits in size - int - signed integer, at least 16 bits in size - UInt64 - 64-bit unsigned integer - UInt32 - 32-bit unsigned integer - UInt16 - 16-bit unsigned integer - Byte - 8-bit unsigned integer - bool - boolean type with two possible values: false, true - - -lzma file format -================ - -The lzma file contains the raw LZMA stream and the header with related properties. - -The files in that format use ".lzma" extension. - -The lzma file format layout: - -Offset Size Description - - 0 1 LZMA model properties (lc, lp, pb) in encoded form - 1 4 Dictionary size (32-bit unsigned integer, little-endian) - 5 8 Uncompressed size (64-bit unsigned integer, little-endian) - 13 Compressed data (LZMA stream) - -LZMA properties: - - name Range Description - - lc [0, 8] the number of "literal context" bits - lp [0, 4] the number of "literal pos" bits - pb [0, 4] the number of "pos" bits -dictSize [0, 2^32 - 1] the dictionary size - -The following code encodes LZMA properties: - -void EncodeProperties(Byte *properties) -{ - properties[0] = (Byte)((pb * 5 + lp) * 9 + lc); - Set_UInt32_LittleEndian(properties + 1, dictSize); -} - -If the value of dictionary size in properties is smaller than (1 << 12), -the LZMA decoder must set the dictionary size variable to (1 << 12). - -#define LZMA_DIC_MIN (1 << 12) - - unsigned lc, pb, lp; - UInt32 dictSize; - UInt32 dictSizeInProperties; - - void DecodeProperties(const Byte *properties) - { - unsigned d = properties[0]; - if (d >= (9 * 5 * 5)) - throw "Incorrect LZMA properties"; - lc = d % 9; - d /= 9; - pb = d / 5; - lp = d % 5; - dictSizeInProperties = 0; - for (int i = 0; i < 4; i++) - dictSizeInProperties |= (UInt32)properties[i + 1] << (8 * i); - dictSize = dictSizeInProperties; - if (dictSize < LZMA_DIC_MIN) - dictSize = LZMA_DIC_MIN; - } - -If "Uncompressed size" field contains ones in all 64 bits, it means that -uncompressed size is unknown and there is the "end marker" in stream, -that indicates the end of decoding point. -In opposite case, if the value from "Uncompressed size" field is not -equal to ((2^64) - 1), the LZMA stream decoding must be finished after -specified number of bytes (Uncompressed size) is decoded. And if there -is the "end marker", the LZMA decoder must read that marker also. - - -The new scheme to encode LZMA properties ----------------------------------------- - -If LZMA compression is used for some another format, it's recommended to -use a new improved scheme to encode LZMA properties. That new scheme was -used in xz format that uses the LZMA2 compression algorithm. -The LZMA2 is a new compression algorithm that is based on the LZMA algorithm. - -The dictionary size in LZMA2 is encoded with just one byte and LZMA2 supports -only reduced set of dictionary sizes: - (2 << 11), (3 << 11), - (2 << 12), (3 << 12), - ... - (2 << 30), (3 << 30), - (2 << 31) - 1 - -The dictionary size can be extracted from encoded value with the following code: - - dictSize = (p == 40) ? 0xFFFFFFFF : (((UInt32)2 | ((p) & 1)) << ((p) / 2 + 11)); - -Also there is additional limitation (lc + lp <= 4) in LZMA2 for values of -"lc" and "lp" properties: - - if (lc + lp > 4) - throw "Unsupported properties: (lc + lp) > 4"; - -There are some advantages for LZMA decoder with such (lc + lp) value -limitation. It reduces the maximum size of tables allocated by decoder. -And it reduces the complexity of initialization procedure, that can be -important to keep high speed of decoding of big number of small LZMA streams. - -It's recommended to use that limitation (lc + lp <= 4) for any new format -that uses LZMA compression. Note that the combinations of "lc" and "lp" -parameters, where (lc + lp > 4), can provide significant improvement in -compression ratio only in some rare cases. - -The LZMA properties can be encoded into two bytes in new scheme: - -Offset Size Description - - 0 1 The dictionary size encoded with LZMA2 scheme - 1 1 LZMA model properties (lc, lp, pb) in encoded form - - -The RAM usage -============= - -The RAM usage for LZMA decoder is determined by the following parts: - -1) The Sliding Window (from 4 KiB to 4 GiB). -2) The probability model counter arrays (arrays of 16-bit variables). -3) Some additional state variables (about 10 variables of 32-bit integers). - - -The RAM usage for Sliding Window --------------------------------- - -There are two main scenarios of decoding: - -1) The decoding of full stream to one RAM buffer. - - If we decode full LZMA stream to one output buffer in RAM, the decoder - can use that output buffer as sliding window. So the decoder doesn't - need additional buffer allocated for sliding window. - -2) The decoding to some external storage. - - If we decode LZMA stream to external storage, the decoder must allocate - the buffer for sliding window. The size of that buffer must be equal - or larger than the value of dictionary size from properties of LZMA stream. - -In this specification we describe the code for decoding to some external -storage. The optimized version of code for decoding of full stream to one -output RAM buffer can require some minor changes in code. - - -The RAM usage for the probability model counters ------------------------------------------------- - -The size of the probability model counter arrays is calculated with the -following formula: - -size_of_prob_arrays = 1846 + 768 * (1 << (lp + lc)) - -Each probability model counter is 11-bit unsigned integer. -If we use 16-bit integer variables (2-byte integers) for these probability -model counters, the RAM usage required by probability model counter arrays -can be estimated with the following formula: - - RAM = 4 KiB + 1.5 KiB * (1 << (lp + lc)) - -For example, for default LZMA parameters (lp = 0 and lc = 3), the RAM usage is - - RAM_lc3_lp0 = 4 KiB + 1.5 KiB * 8 = 16 KiB - -The maximum RAM state usage is required for decoding the stream with lp = 4 -and lc = 8: - - RAM_lc8_lp4 = 4 KiB + 1.5 KiB * 4096 = 6148 KiB - -If the decoder uses LZMA2's limited property condition -(lc + lp <= 4), the RAM usage will be not larger than - - RAM_lc_lp_4 = 4 KiB + 1.5 KiB * 16 = 28 KiB - - -The RAM usage for encoder -------------------------- - -There are many variants for LZMA encoding code. -These variants have different values for memory consumption. -Note that memory consumption for LZMA Encoder can not be -smaller than memory consumption of LZMA Decoder for same stream. - -The RAM usage required by modern effective implementation of -LZMA Encoder can be estimated with the following formula: - - Encoder_RAM_Usage = 4 MiB + 11 * dictionarySize. - -But there are some modes of the encoder that require less memory. - - -LZMA Decoding -============= - -The LZMA compression algorithm uses LZ-based compression with Sliding Window -and Range Encoding as entropy coding method. - - -Sliding Window --------------- - -LZMA uses Sliding Window compression similar to LZ77 algorithm. - -LZMA stream must be decoded to the sequence that consists -of MATCHES and LITERALS: - - - a LITERAL is a 8-bit character (one byte). - The decoder just puts that LITERAL to the uncompressed stream. - - - a MATCH is a pair of two numbers (DISTANCE-LENGTH pair). - The decoder takes one byte exactly "DISTANCE" characters behind - current position in the uncompressed stream and puts it to - uncompressed stream. The decoder must repeat it "LENGTH" times. - -The "DISTANCE" can not be larger than dictionary size. -And the "DISTANCE" can not be larger than the number of bytes in -the uncompressed stream that were decoded before that match. - -In this specification we use cyclic buffer to implement Sliding Window -for LZMA decoder: - -class COutWindow -{ - Byte *Buf; - UInt32 Pos; - UInt32 Size; - bool IsFull; - -public: - unsigned TotalPos; - COutStream OutStream; - - COutWindow(): Buf(NULL) {} - ~COutWindow() { delete []Buf; } - - void Create(UInt32 dictSize) - { - Buf = new Byte[dictSize]; - Pos = 0; - Size = dictSize; - IsFull = false; - TotalPos = 0; - } - - void PutByte(Byte b) - { - TotalPos++; - Buf[Pos++] = b; - if (Pos == Size) - { - Pos = 0; - IsFull = true; - } - OutStream.WriteByte(b); - } - - Byte GetByte(UInt32 dist) const - { - return Buf[dist <= Pos ? Pos - dist : Size - dist + Pos]; - } - - void CopyMatch(UInt32 dist, unsigned len) - { - for (; len > 0; len--) - PutByte(GetByte(dist)); - } - - bool CheckDistance(UInt32 dist) const - { - return dist <= Pos || IsFull; - } - - bool IsEmpty() const - { - return Pos == 0 && !IsFull; - } -}; - - -In another implementation it's possible to use one buffer that contains -Sliding Window and the whole data stream after uncompressing. - - -Range Decoder -------------- - -LZMA algorithm uses Range Encoding (1) as entropy coding method. - -LZMA stream contains just one very big number in big-endian encoding. -LZMA decoder uses the Range Decoder to extract a sequence of binary -symbols from that big number. - -The state of the Range Decoder: - -struct CRangeDecoder -{ - UInt32 Range; - UInt32 Code; - InputStream *InStream; - - bool Corrupted; -} - -The notes about UInt32 type for the "Range" and "Code" variables: - - It's possible to use 64-bit (unsigned or signed) integer type - for the "Range" and the "Code" variables instead of 32-bit unsigned, - but some additional code must be used to truncate the values to - low 32-bits after some operations. - - If the programming language does not support 32-bit unsigned integer type - (like in case of JAVA language), it's possible to use 32-bit signed integer, - but some code must be changed. For example, it's required to change the code - that uses comparison operations for UInt32 variables in this specification. - -The Range Decoder can be in some states that can be treated as -"Corruption" in LZMA stream. The Range Decoder uses the variable "Corrupted": - - (Corrupted == false), if the Range Decoder has not detected any corruption. - (Corrupted == true), if the Range Decoder has detected some corruption. - -The reference LZMA Decoder ignores the value of the "Corrupted" variable. -So it continues to decode the stream, even if the corruption can be detected -in the Range Decoder. To provide the full compatibility with output of the -reference LZMA Decoder, another LZMA Decoder implementations must also -ignore the value of the "Corrupted" variable. - -The LZMA Encoder is required to create only such LZMA streams, that will not -lead the Range Decoder to states, where the "Corrupted" variable is set to true. - -The Range Decoder reads first 5 bytes from input stream to initialize -the state: - -bool CRangeDecoder::Init() -{ - Corrupted = false; - Range = 0xFFFFFFFF; - Code = 0; - - Byte b = InStream->ReadByte(); - - for (int i = 0; i < 4; i++) - Code = (Code << 8) | InStream->ReadByte(); - - if (b != 0 || Code == Range) - Corrupted = true; - return b == 0; -} - -The LZMA Encoder always writes ZERO in initial byte of compressed stream. -That scheme allows to simplify the code of the Range Encoder in the -LZMA Encoder. If initial byte is not equal to ZERO, the LZMA Decoder must -stop decoding and report error. - -After the last bit of data was decoded by Range Decoder, the value of the -"Code" variable must be equal to 0. The LZMA Decoder must check it by -calling the IsFinishedOK() function: - - bool IsFinishedOK() const { return Code == 0; } - -If there is corruption in data stream, there is big probability that -the "Code" value will be not equal to 0 in the Finish() function. So that -check in the IsFinishedOK() function provides very good feature for -corruption detection. - -The value of the "Range" variable before each bit decoding can not be smaller -than ((UInt32)1 << 24). The Normalize() function keeps the "Range" value in -described range. - -#define kTopValue ((UInt32)1 << 24) - -void CRangeDecoder::Normalize() -{ - if (Range < kTopValue) - { - Range <<= 8; - Code = (Code << 8) | InStream->ReadByte(); - } -} - -Notes: if the size of the "Code" variable is larger than 32 bits, it's -required to keep only low 32 bits of the "Code" variable after the change -in Normalize() function. - -If the LZMA Stream is not corrupted, the value of the "Code" variable is -always smaller than value of the "Range" variable. -But the Range Decoder ignores some types of corruptions, so the value of -the "Code" variable can be equal or larger than value of the "Range" variable -for some "Corrupted" archives. - - -LZMA uses Range Encoding only with binary symbols of two types: - 1) binary symbols with fixed and equal probabilities (direct bits) - 2) binary symbols with predicted probabilities - -The DecodeDirectBits() function decodes the sequence of direct bits: - -UInt32 CRangeDecoder::DecodeDirectBits(unsigned numBits) -{ - UInt32 res = 0; - do - { - Range >>= 1; - Code -= Range; - UInt32 t = 0 - ((UInt32)Code >> 31); - Code += Range & t; - - if (Code == Range) - Corrupted = true; - - Normalize(); - res <<= 1; - res += t + 1; - } - while (--numBits); - return res; -} - - -The Bit Decoding with Probability Model ---------------------------------------- - -The task of Bit Probability Model is to estimate probabilities of binary -symbols. And then it provides the Range Decoder with that information. -The better prediction provides better compression ratio. -The Bit Probability Model uses statistical data of previous decoded -symbols. - -That estimated probability is presented as 11-bit unsigned integer value -that represents the probability of symbol "0". - -#define kNumBitModelTotalBits 11 - -Mathematical probabilities can be presented with the following formulas: - probability(symbol_0) = prob / 2048. - probability(symbol_1) = 1 - Probability(symbol_0) = - = 1 - prob / 2048 = - = (2048 - prob) / 2048 -where the "prob" variable contains 11-bit integer probability counter. - -It's recommended to use 16-bit unsigned integer type, to store these 11-bit -probability values: - -typedef UInt16 CProb; - -Each probability value must be initialized with value ((1 << 11) / 2), -that represents the state, where probabilities of symbols 0 and 1 -are equal to 0.5: - -#define PROB_INIT_VAL ((1 << kNumBitModelTotalBits) / 2) - -The INIT_PROBS macro is used to initialize the array of CProb variables: - -#define INIT_PROBS(p) \ - { for (unsigned i = 0; i < sizeof(p) / sizeof(p[0]); i++) p[i] = PROB_INIT_VAL; } - - -The DecodeBit() function decodes one bit. -The LZMA decoder provides the pointer to CProb variable that contains -information about estimated probability for symbol 0 and the Range Decoder -updates that CProb variable after decoding. The Range Decoder increases -estimated probability of the symbol that was decoded: - -#define kNumMoveBits 5 - -unsigned CRangeDecoder::DecodeBit(CProb *prob) -{ - unsigned v = *prob; - UInt32 bound = (Range >> kNumBitModelTotalBits) * v; - unsigned symbol; - if (Code < bound) - { - v += ((1 << kNumBitModelTotalBits) - v) >> kNumMoveBits; - Range = bound; - symbol = 0; - } - else - { - v -= v >> kNumMoveBits; - Code -= bound; - Range -= bound; - symbol = 1; - } - *prob = (CProb)v; - Normalize(); - return symbol; -} - - -The Binary Tree of bit model counters -------------------------------------- - -LZMA uses a tree of Bit model variables to decode symbol that needs -several bits for storing. There are two versions of such trees in LZMA: - 1) the tree that decodes bits from high bit to low bit (the normal scheme). - 2) the tree that decodes bits from low bit to high bit (the reverse scheme). - -Each binary tree structure supports different size of decoded symbol -(the size of binary sequence that contains value of symbol). -If that size of decoded symbol is "NumBits" bits, the tree structure -uses the array of (2 << NumBits) counters of CProb type. -But only ((2 << NumBits) - 1) items are used by encoder and decoder. -The first item (the item with index equal to 0) in array is unused. -That scheme with unused array's item allows to simplify the code. - -unsigned BitTreeReverseDecode(CProb *probs, unsigned numBits, CRangeDecoder *rc) -{ - unsigned m = 1; - unsigned symbol = 0; - for (unsigned i = 0; i < numBits; i++) - { - unsigned bit = rc->DecodeBit(&probs[m]); - m <<= 1; - m += bit; - symbol |= (bit << i); - } - return symbol; -} - -template -class CBitTreeDecoder -{ - CProb Probs[(unsigned)1 << NumBits]; - -public: - - void Init() - { - INIT_PROBS(Probs); - } - - unsigned Decode(CRangeDecoder *rc) - { - unsigned m = 1; - for (unsigned i = 0; i < NumBits; i++) - m = (m << 1) + rc->DecodeBit(&Probs[m]); - return m - ((unsigned)1 << NumBits); - } - - unsigned ReverseDecode(CRangeDecoder *rc) - { - return BitTreeReverseDecode(Probs, NumBits, rc); - } -}; - - -LZ part of LZMA ---------------- - -LZ part of LZMA describes details about the decoding of MATCHES and LITERALS. - - -The Literal Decoding --------------------- - -The LZMA Decoder uses (1 << (lc + lp)) tables with CProb values, where -each table contains 0x300 CProb values: - - CProb *LitProbs; - - void CreateLiterals() - { - LitProbs = new CProb[(UInt32)0x300 << (lc + lp)]; - } - - void InitLiterals() - { - UInt32 num = (UInt32)0x300 << (lc + lp); - for (UInt32 i = 0; i < num; i++) - LitProbs[i] = PROB_INIT_VAL; - } - -To select the table for decoding it uses the context that consists of -(lc) high bits from previous literal and (lp) low bits from value that -represents current position in outputStream. - -If (State > 7), the Literal Decoder also uses "matchByte" that represents -the byte in OutputStream at position the is the DISTANCE bytes before -current position, where the DISTANCE is the distance in DISTANCE-LENGTH pair -of latest decoded match. - -The following code decodes one literal and puts it to Sliding Window buffer: - - void DecodeLiteral(unsigned state, UInt32 rep0) - { - unsigned prevByte = 0; - if (!OutWindow.IsEmpty()) - prevByte = OutWindow.GetByte(1); - - unsigned symbol = 1; - unsigned litState = ((OutWindow.TotalPos & ((1 << lp) - 1)) << lc) + (prevByte >> (8 - lc)); - CProb *probs = &LitProbs[(UInt32)0x300 * litState]; - - if (state >= 7) - { - unsigned matchByte = OutWindow.GetByte(rep0 + 1); - do - { - unsigned matchBit = (matchByte >> 7) & 1; - matchByte <<= 1; - unsigned bit = RangeDec.DecodeBit(&probs[((1 + matchBit) << 8) + symbol]); - symbol = (symbol << 1) | bit; - if (matchBit != bit) - break; - } - while (symbol < 0x100); - } - while (symbol < 0x100) - symbol = (symbol << 1) | RangeDec.DecodeBit(&probs[symbol]); - OutWindow.PutByte((Byte)(symbol - 0x100)); - } - - -The match length decoding -------------------------- - -The match length decoder returns normalized (zero-based value) -length of match. That value can be converted to real length of the match -with the following code: - -#define kMatchMinLen 2 - - matchLen = len + kMatchMinLen; - -The match length decoder can return the values from 0 to 271. -And the corresponded real match length values can be in the range -from 2 to 273. - -The following scheme is used for the match length encoding: - - Binary encoding Binary Tree structure Zero-based match length - sequence (binary + decimal): - - 0 xxx LowCoder[posState] xxx - 1 0 yyy MidCoder[posState] yyy + 8 - 1 1 zzzzzzzz HighCoder zzzzzzzz + 16 - -LZMA uses bit model variable "Choice" to decode the first selection bit. - -If the first selection bit is equal to 0, the decoder uses binary tree - LowCoder[posState] to decode 3-bit zero-based match length (xxx). - -If the first selection bit is equal to 1, the decoder uses bit model - variable "Choice2" to decode the second selection bit. - - If the second selection bit is equal to 0, the decoder uses binary tree - MidCoder[posState] to decode 3-bit "yyy" value, and zero-based match - length is equal to (yyy + 8). - - If the second selection bit is equal to 1, the decoder uses binary tree - HighCoder to decode 8-bit "zzzzzzzz" value, and zero-based - match length is equal to (zzzzzzzz + 16). - -LZMA uses "posState" value as context to select the binary tree -from LowCoder and MidCoder binary tree arrays: - - unsigned posState = OutWindow.TotalPos & ((1 << pb) - 1); - -The full code of the length decoder: - -class CLenDecoder -{ - CProb Choice; - CProb Choice2; - CBitTreeDecoder<3> LowCoder[1 << kNumPosBitsMax]; - CBitTreeDecoder<3> MidCoder[1 << kNumPosBitsMax]; - CBitTreeDecoder<8> HighCoder; - -public: - - void Init() - { - Choice = PROB_INIT_VAL; - Choice2 = PROB_INIT_VAL; - HighCoder.Init(); - for (unsigned i = 0; i < (1 << kNumPosBitsMax); i++) - { - LowCoder[i].Init(); - MidCoder[i].Init(); - } - } - - unsigned Decode(CRangeDecoder *rc, unsigned posState) - { - if (rc->DecodeBit(&Choice) == 0) - return LowCoder[posState].Decode(rc); - if (rc->DecodeBit(&Choice2) == 0) - return 8 + MidCoder[posState].Decode(rc); - return 16 + HighCoder.Decode(rc); - } -}; - -The LZMA decoder uses two instances of CLenDecoder class. -The first instance is for the matches of "Simple Match" type, -and the second instance is for the matches of "Rep Match" type: - - CLenDecoder LenDecoder; - CLenDecoder RepLenDecoder; - - -The match distance decoding ---------------------------- - -LZMA supports dictionary sizes up to 4 GiB minus 1. -The value of match distance (decoded by distance decoder) can be -from 1 to 2^32. But the distance value that is equal to 2^32 is used to -indicate the "End of stream" marker. So real largest match distance -that is used for LZ-window match is (2^32 - 1). - -LZMA uses normalized match length (zero-based length) -to calculate the context state "lenState" do decode the distance value: - -#define kNumLenToPosStates 4 - - unsigned lenState = len; - if (lenState > kNumLenToPosStates - 1) - lenState = kNumLenToPosStates - 1; - -The distance decoder returns the "dist" value that is zero-based value -of match distance. The real match distance can be calculated with the -following code: - - matchDistance = dist + 1; - -The state of the distance decoder and the initialization code: - - #define kEndPosModelIndex 14 - #define kNumFullDistances (1 << (kEndPosModelIndex >> 1)) - #define kNumAlignBits 4 - - CBitTreeDecoder<6> PosSlotDecoder[kNumLenToPosStates]; - CProb PosDecoders[1 + kNumFullDistances - kEndPosModelIndex]; - CBitTreeDecoder AlignDecoder; - - void InitDist() - { - for (unsigned i = 0; i < kNumLenToPosStates; i++) - PosSlotDecoder[i].Init(); - AlignDecoder.Init(); - INIT_PROBS(PosDecoders); - } - -At first stage the distance decoder decodes 6-bit "posSlot" value with bit -tree decoder from PosSlotDecoder array. It's possible to get 2^6=64 different -"posSlot" values. - - unsigned posSlot = PosSlotDecoder[lenState].Decode(&RangeDec); - -The encoding scheme for distance value is shown in the following table: - -posSlot (decimal) / - zero-based distance (binary) - 0 0 - 1 1 - 2 10 - 3 11 - - 4 10 x - 5 11 x - 6 10 xx - 7 11 xx - 8 10 xxx - 9 11 xxx -10 10 xxxx -11 11 xxxx -12 10 xxxxx -13 11 xxxxx - -14 10 yy zzzz -15 11 yy zzzz -16 10 yyy zzzz -17 11 yyy zzzz -... -62 10 yyyyyyyyyyyyyyyyyyyyyyyyyy zzzz -63 11 yyyyyyyyyyyyyyyyyyyyyyyyyy zzzz - -where - "x ... x" means the sequence of binary symbols encoded with binary tree and - "Reverse" scheme. It uses separated binary tree for each posSlot from 4 to 13. - "y" means direct bit encoded with range coder. - "zzzz" means the sequence of four binary symbols encoded with binary - tree with "Reverse" scheme, where one common binary tree "AlignDecoder" - is used for all posSlot values. - -If (posSlot < 4), the "dist" value is equal to posSlot value. - -If (posSlot >= 4), the decoder uses "posSlot" value to calculate the value of - the high bits of "dist" value and the number of the low bits. - - If (4 <= posSlot < kEndPosModelIndex), the decoder uses bit tree decoders. - (one separated bit tree decoder per one posSlot value) and "Reverse" scheme. - In this implementation we use one CProb array "PosDecoders" that contains - all CProb variables for all these bit decoders. - - if (posSlot >= kEndPosModelIndex), the middle bits are decoded as direct - bits from RangeDecoder and the low 4 bits are decoded with a bit tree - decoder "AlignDecoder" with "Reverse" scheme. - -The code to decode zero-based match distance: - - unsigned DecodeDistance(unsigned len) - { - unsigned lenState = len; - if (lenState > kNumLenToPosStates - 1) - lenState = kNumLenToPosStates - 1; - - unsigned posSlot = PosSlotDecoder[lenState].Decode(&RangeDec); - if (posSlot < 4) - return posSlot; - - unsigned numDirectBits = (unsigned)((posSlot >> 1) - 1); - UInt32 dist = ((2 | (posSlot & 1)) << numDirectBits); - if (posSlot < kEndPosModelIndex) - dist += BitTreeReverseDecode(PosDecoders + dist - posSlot, numDirectBits, &RangeDec); - else - { - dist += RangeDec.DecodeDirectBits(numDirectBits - kNumAlignBits) << kNumAlignBits; - dist += AlignDecoder.ReverseDecode(&RangeDec); - } - return dist; - } - - - -LZMA Decoding modes -------------------- - -There are 2 types of LZMA streams: - -1) The stream with "End of stream" marker. -2) The stream without "End of stream" marker. - -And the LZMA Decoder supports 3 modes of decoding: - -1) The unpack size is undefined. The LZMA decoder stops decoding after - getting "End of stream" marker. - The input variables for that case: - - markerIsMandatory = true - unpackSizeDefined = false - unpackSize contains any value - -2) The unpack size is defined and LZMA decoder supports both variants, - where the stream can contain "End of stream" marker or the stream is - finished without "End of stream" marker. The LZMA decoder must detect - any of these situations. - The input variables for that case: - - markerIsMandatory = false - unpackSizeDefined = true - unpackSize contains unpack size - -3) The unpack size is defined and the LZMA stream must contain - "End of stream" marker - The input variables for that case: - - markerIsMandatory = true - unpackSizeDefined = true - unpackSize contains unpack size - - -The main loop of decoder ------------------------- - -The main loop of LZMA decoder: - -Initialize the LZMA state. -loop -{ - // begin of loop - Check "end of stream" conditions. - Decode Type of MATCH / LITERAL. - If it's LITERAL, decode LITERAL value and put the LITERAL to Window. - If it's MATCH, decode the length of match and the match distance. - Check error conditions, check end of stream conditions and copy - the sequence of match bytes from sliding window to current position - in window. - Go to begin of loop -} - -The reference implementation of LZMA decoder uses "unpackSize" variable -to keep the number of remaining bytes in output stream. So it reduces -"unpackSize" value after each decoded LITERAL or MATCH. - -The following code contains the "end of stream" condition check at the start -of the loop: - - if (unpackSizeDefined && unpackSize == 0 && !markerIsMandatory) - if (RangeDec.IsFinishedOK()) - return LZMA_RES_FINISHED_WITHOUT_MARKER; - -LZMA uses three types of matches: - -1) "Simple Match" - the match with distance value encoded with bit models. - -2) "Rep Match" - the match that uses the distance from distance - history table. - -3) "Short Rep Match" - the match of single byte length, that uses the latest - distance from distance history table. - -The LZMA decoder keeps the history of latest 4 match distances that were used -by decoder. That set of 4 variables contains zero-based match distances and -these variables are initialized with zero values: - - UInt32 rep0 = 0, rep1 = 0, rep2 = 0, rep3 = 0; - -The LZMA decoder uses binary model variables to select type of MATCH or LITERAL: - -#define kNumStates 12 -#define kNumPosBitsMax 4 - - CProb IsMatch[kNumStates << kNumPosBitsMax]; - CProb IsRep[kNumStates]; - CProb IsRepG0[kNumStates]; - CProb IsRepG1[kNumStates]; - CProb IsRepG2[kNumStates]; - CProb IsRep0Long[kNumStates << kNumPosBitsMax]; - -The decoder uses "state" variable value to select exact variable -from "IsRep", "IsRepG0", "IsRepG1" and "IsRepG2" arrays. -The "state" variable can get the value from 0 to 11. -Initial value for "state" variable is zero: - - unsigned state = 0; - -The "state" variable is updated after each LITERAL or MATCH with one of the -following functions: - -unsigned UpdateState_Literal(unsigned state) -{ - if (state < 4) return 0; - else if (state < 10) return state - 3; - else return state - 6; -} -unsigned UpdateState_Match (unsigned state) { return state < 7 ? 7 : 10; } -unsigned UpdateState_Rep (unsigned state) { return state < 7 ? 8 : 11; } -unsigned UpdateState_ShortRep(unsigned state) { return state < 7 ? 9 : 11; } - -The decoder calculates "state2" variable value to select exact variable from -"IsMatch" and "IsRep0Long" arrays: - -unsigned posState = OutWindow.TotalPos & ((1 << pb) - 1); -unsigned state2 = (state << kNumPosBitsMax) + posState; - -The decoder uses the following code flow scheme to select exact -type of LITERAL or MATCH: - -IsMatch[state2] decode - 0 - the Literal - 1 - the Match - IsRep[state] decode - 0 - Simple Match - 1 - Rep Match - IsRepG0[state] decode - 0 - the distance is rep0 - IsRep0Long[state2] decode - 0 - Short Rep Match - 1 - Rep Match 0 - 1 - - IsRepG1[state] decode - 0 - Rep Match 1 - 1 - - IsRepG2[state] decode - 0 - Rep Match 2 - 1 - Rep Match 3 - - -LITERAL symbol --------------- -If the value "0" was decoded with IsMatch[state2] decoding, we have "LITERAL" type. - -At first the LZMA decoder must check that it doesn't exceed -specified uncompressed size: - - if (unpackSizeDefined && unpackSize == 0) - return LZMA_RES_ERROR; - -Then it decodes literal value and puts it to sliding window: - - DecodeLiteral(state, rep0); - -Then the decoder must update the "state" value and "unpackSize" value; - - state = UpdateState_Literal(state); - unpackSize--; - -Then the decoder must go to the begin of main loop to decode next Match or Literal. - - -Simple Match ------------- - -If the value "1" was decoded with IsMatch[state2] decoding, -we have the "Simple Match" type. - -The distance history table is updated with the following scheme: - - rep3 = rep2; - rep2 = rep1; - rep1 = rep0; - -The zero-based length is decoded with "LenDecoder": - - len = LenDecoder.Decode(&RangeDec, posState); - -The state is update with UpdateState_Match function: - - state = UpdateState_Match(state); - -and the new "rep0" value is decoded with DecodeDistance: - - rep0 = DecodeDistance(len); - -That "rep0" will be used as zero-based distance for current match. - -If the value of "rep0" is equal to 0xFFFFFFFF, it means that we have -"End of stream" marker, so we can stop decoding and check finishing -condition in Range Decoder: - - if (rep0 == 0xFFFFFFFF) - return RangeDec.IsFinishedOK() ? - LZMA_RES_FINISHED_WITH_MARKER : - LZMA_RES_ERROR; - -If uncompressed size is defined, LZMA decoder must check that it doesn't -exceed that specified uncompressed size: - - if (unpackSizeDefined && unpackSize == 0) - return LZMA_RES_ERROR; - -Also the decoder must check that "rep0" value is not larger than dictionary size -and is not larger than the number of already decoded bytes: - - if (rep0 >= dictSize || !OutWindow.CheckDistance(rep0)) - return LZMA_RES_ERROR; - -Then the decoder must copy match bytes as described in -"The match symbols copying" section. - - -Rep Match ---------- - -If the LZMA decoder has decoded the value "1" with IsRep[state] variable, -we have "Rep Match" type. - -At first the LZMA decoder must check that it doesn't exceed -specified uncompressed size: - - if (unpackSizeDefined && unpackSize == 0) - return LZMA_RES_ERROR; - -Also the decoder must return error, if the LZ window is empty: - - if (OutWindow.IsEmpty()) - return LZMA_RES_ERROR; - -If the match type is "Rep Match", the decoder uses one of the 4 variables of -distance history table to get the value of distance for current match. -And there are 4 corresponding ways of decoding flow. - -The decoder updates the distance history with the following scheme -depending from type of match: - -- "Rep Match 0" or "Short Rep Match": - ; LZMA doesn't update the distance history - -- "Rep Match 1": - UInt32 dist = rep1; - rep1 = rep0; - rep0 = dist; - -- "Rep Match 2": - UInt32 dist = rep2; - rep2 = rep1; - rep1 = rep0; - rep0 = dist; - -- "Rep Match 3": - UInt32 dist = rep3; - rep3 = rep2; - rep2 = rep1; - rep1 = rep0; - rep0 = dist; - -Then the decoder decodes exact subtype of "Rep Match" using "IsRepG0", "IsRep0Long", -"IsRepG1", "IsRepG2". - -If the subtype is "Short Rep Match", the decoder updates the state, puts -the one byte from window to current position in window and goes to next -MATCH/LITERAL symbol (the begin of main loop): - - state = UpdateState_ShortRep(state); - OutWindow.PutByte(OutWindow.GetByte(rep0 + 1)); - unpackSize--; - continue; - -In other cases (Rep Match 0/1/2/3), it decodes the zero-based -length of match with "RepLenDecoder" decoder: - - len = RepLenDecoder.Decode(&RangeDec, posState); - -Then it updates the state: - - state = UpdateState_Rep(state); - -Then the decoder must copy match bytes as described in -"The Match symbols copying" section. - - -The match symbols copying -------------------------- - -If we have the match (Simple Match or Rep Match 0/1/2/3), the decoder must -copy the sequence of bytes with calculated match distance and match length. -If uncompressed size is defined, LZMA decoder must check that it doesn't -exceed that specified uncompressed size: - - len += kMatchMinLen; - bool isError = false; - if (unpackSizeDefined && unpackSize < len) - { - len = (unsigned)unpackSize; - isError = true; - } - OutWindow.CopyMatch(rep0 + 1, len); - unpackSize -= len; - if (isError) - return LZMA_RES_ERROR; - -Then the decoder must go to the begin of main loop to decode next MATCH or LITERAL. - - - -NOTES ------ - -This specification doesn't describe the variant of decoder implementation -that supports partial decoding. Such partial decoding case can require some -changes in "end of stream" condition checks code. Also such code -can use additional status codes, returned by decoder. - -This specification uses C++ code with templates to simplify describing. -The optimized version of LZMA decoder doesn't need templates. -Such optimized version can use just two arrays of CProb variables: - 1) The dynamic array of CProb variables allocated for the Literal Decoder. - 2) The one common array that contains all other CProb variables. - - -References: - -1. G. N. N. Martin, Range encoding: an algorithm for removing redundancy - from a digitized message, Video & Data Recording Conference, - Southampton, UK, July 24-27, 1979. +LZMA specification (DRAFT version) +---------------------------------- + +Author: Igor Pavlov +Date: 2015-06-14 + +This specification defines the format of LZMA compressed data and lzma file format. + +Notation +-------- + +We use the syntax of C++ programming language. +We use the following types in C++ code: + unsigned - unsigned integer, at least 16 bits in size + int - signed integer, at least 16 bits in size + UInt64 - 64-bit unsigned integer + UInt32 - 32-bit unsigned integer + UInt16 - 16-bit unsigned integer + Byte - 8-bit unsigned integer + bool - boolean type with two possible values: false, true + + +lzma file format +================ + +The lzma file contains the raw LZMA stream and the header with related properties. + +The files in that format use ".lzma" extension. + +The lzma file format layout: + +Offset Size Description + + 0 1 LZMA model properties (lc, lp, pb) in encoded form + 1 4 Dictionary size (32-bit unsigned integer, little-endian) + 5 8 Uncompressed size (64-bit unsigned integer, little-endian) + 13 Compressed data (LZMA stream) + +LZMA properties: + + name Range Description + + lc [0, 8] the number of "literal context" bits + lp [0, 4] the number of "literal pos" bits + pb [0, 4] the number of "pos" bits +dictSize [0, 2^32 - 1] the dictionary size + +The following code encodes LZMA properties: + +void EncodeProperties(Byte *properties) +{ + properties[0] = (Byte)((pb * 5 + lp) * 9 + lc); + Set_UInt32_LittleEndian(properties + 1, dictSize); +} + +If the value of dictionary size in properties is smaller than (1 << 12), +the LZMA decoder must set the dictionary size variable to (1 << 12). + +#define LZMA_DIC_MIN (1 << 12) + + unsigned lc, pb, lp; + UInt32 dictSize; + UInt32 dictSizeInProperties; + + void DecodeProperties(const Byte *properties) + { + unsigned d = properties[0]; + if (d >= (9 * 5 * 5)) + throw "Incorrect LZMA properties"; + lc = d % 9; + d /= 9; + pb = d / 5; + lp = d % 5; + dictSizeInProperties = 0; + for (int i = 0; i < 4; i++) + dictSizeInProperties |= (UInt32)properties[i + 1] << (8 * i); + dictSize = dictSizeInProperties; + if (dictSize < LZMA_DIC_MIN) + dictSize = LZMA_DIC_MIN; + } + +If "Uncompressed size" field contains ones in all 64 bits, it means that +uncompressed size is unknown and there is the "end marker" in stream, +that indicates the end of decoding point. +In opposite case, if the value from "Uncompressed size" field is not +equal to ((2^64) - 1), the LZMA stream decoding must be finished after +specified number of bytes (Uncompressed size) is decoded. And if there +is the "end marker", the LZMA decoder must read that marker also. + + +The new scheme to encode LZMA properties +---------------------------------------- + +If LZMA compression is used for some another format, it's recommended to +use a new improved scheme to encode LZMA properties. That new scheme was +used in xz format that uses the LZMA2 compression algorithm. +The LZMA2 is a new compression algorithm that is based on the LZMA algorithm. + +The dictionary size in LZMA2 is encoded with just one byte and LZMA2 supports +only reduced set of dictionary sizes: + (2 << 11), (3 << 11), + (2 << 12), (3 << 12), + ... + (2 << 30), (3 << 30), + (2 << 31) - 1 + +The dictionary size can be extracted from encoded value with the following code: + + dictSize = (p == 40) ? 0xFFFFFFFF : (((UInt32)2 | ((p) & 1)) << ((p) / 2 + 11)); + +Also there is additional limitation (lc + lp <= 4) in LZMA2 for values of +"lc" and "lp" properties: + + if (lc + lp > 4) + throw "Unsupported properties: (lc + lp) > 4"; + +There are some advantages for LZMA decoder with such (lc + lp) value +limitation. It reduces the maximum size of tables allocated by decoder. +And it reduces the complexity of initialization procedure, that can be +important to keep high speed of decoding of big number of small LZMA streams. + +It's recommended to use that limitation (lc + lp <= 4) for any new format +that uses LZMA compression. Note that the combinations of "lc" and "lp" +parameters, where (lc + lp > 4), can provide significant improvement in +compression ratio only in some rare cases. + +The LZMA properties can be encoded into two bytes in new scheme: + +Offset Size Description + + 0 1 The dictionary size encoded with LZMA2 scheme + 1 1 LZMA model properties (lc, lp, pb) in encoded form + + +The RAM usage +============= + +The RAM usage for LZMA decoder is determined by the following parts: + +1) The Sliding Window (from 4 KiB to 4 GiB). +2) The probability model counter arrays (arrays of 16-bit variables). +3) Some additional state variables (about 10 variables of 32-bit integers). + + +The RAM usage for Sliding Window +-------------------------------- + +There are two main scenarios of decoding: + +1) The decoding of full stream to one RAM buffer. + + If we decode full LZMA stream to one output buffer in RAM, the decoder + can use that output buffer as sliding window. So the decoder doesn't + need additional buffer allocated for sliding window. + +2) The decoding to some external storage. + + If we decode LZMA stream to external storage, the decoder must allocate + the buffer for sliding window. The size of that buffer must be equal + or larger than the value of dictionary size from properties of LZMA stream. + +In this specification we describe the code for decoding to some external +storage. The optimized version of code for decoding of full stream to one +output RAM buffer can require some minor changes in code. + + +The RAM usage for the probability model counters +------------------------------------------------ + +The size of the probability model counter arrays is calculated with the +following formula: + +size_of_prob_arrays = 1846 + 768 * (1 << (lp + lc)) + +Each probability model counter is 11-bit unsigned integer. +If we use 16-bit integer variables (2-byte integers) for these probability +model counters, the RAM usage required by probability model counter arrays +can be estimated with the following formula: + + RAM = 4 KiB + 1.5 KiB * (1 << (lp + lc)) + +For example, for default LZMA parameters (lp = 0 and lc = 3), the RAM usage is + + RAM_lc3_lp0 = 4 KiB + 1.5 KiB * 8 = 16 KiB + +The maximum RAM state usage is required for decoding the stream with lp = 4 +and lc = 8: + + RAM_lc8_lp4 = 4 KiB + 1.5 KiB * 4096 = 6148 KiB + +If the decoder uses LZMA2's limited property condition +(lc + lp <= 4), the RAM usage will be not larger than + + RAM_lc_lp_4 = 4 KiB + 1.5 KiB * 16 = 28 KiB + + +The RAM usage for encoder +------------------------- + +There are many variants for LZMA encoding code. +These variants have different values for memory consumption. +Note that memory consumption for LZMA Encoder can not be +smaller than memory consumption of LZMA Decoder for same stream. + +The RAM usage required by modern effective implementation of +LZMA Encoder can be estimated with the following formula: + + Encoder_RAM_Usage = 4 MiB + 11 * dictionarySize. + +But there are some modes of the encoder that require less memory. + + +LZMA Decoding +============= + +The LZMA compression algorithm uses LZ-based compression with Sliding Window +and Range Encoding as entropy coding method. + + +Sliding Window +-------------- + +LZMA uses Sliding Window compression similar to LZ77 algorithm. + +LZMA stream must be decoded to the sequence that consists +of MATCHES and LITERALS: + + - a LITERAL is a 8-bit character (one byte). + The decoder just puts that LITERAL to the uncompressed stream. + + - a MATCH is a pair of two numbers (DISTANCE-LENGTH pair). + The decoder takes one byte exactly "DISTANCE" characters behind + current position in the uncompressed stream and puts it to + uncompressed stream. The decoder must repeat it "LENGTH" times. + +The "DISTANCE" can not be larger than dictionary size. +And the "DISTANCE" can not be larger than the number of bytes in +the uncompressed stream that were decoded before that match. + +In this specification we use cyclic buffer to implement Sliding Window +for LZMA decoder: + +class COutWindow +{ + Byte *Buf; + UInt32 Pos; + UInt32 Size; + bool IsFull; + +public: + unsigned TotalPos; + COutStream OutStream; + + COutWindow(): Buf(NULL) {} + ~COutWindow() { delete []Buf; } + + void Create(UInt32 dictSize) + { + Buf = new Byte[dictSize]; + Pos = 0; + Size = dictSize; + IsFull = false; + TotalPos = 0; + } + + void PutByte(Byte b) + { + TotalPos++; + Buf[Pos++] = b; + if (Pos == Size) + { + Pos = 0; + IsFull = true; + } + OutStream.WriteByte(b); + } + + Byte GetByte(UInt32 dist) const + { + return Buf[dist <= Pos ? Pos - dist : Size - dist + Pos]; + } + + void CopyMatch(UInt32 dist, unsigned len) + { + for (; len > 0; len--) + PutByte(GetByte(dist)); + } + + bool CheckDistance(UInt32 dist) const + { + return dist <= Pos || IsFull; + } + + bool IsEmpty() const + { + return Pos == 0 && !IsFull; + } +}; + + +In another implementation it's possible to use one buffer that contains +Sliding Window and the whole data stream after uncompressing. + + +Range Decoder +------------- + +LZMA algorithm uses Range Encoding (1) as entropy coding method. + +LZMA stream contains just one very big number in big-endian encoding. +LZMA decoder uses the Range Decoder to extract a sequence of binary +symbols from that big number. + +The state of the Range Decoder: + +struct CRangeDecoder +{ + UInt32 Range; + UInt32 Code; + InputStream *InStream; + + bool Corrupted; +} + +The notes about UInt32 type for the "Range" and "Code" variables: + + It's possible to use 64-bit (unsigned or signed) integer type + for the "Range" and the "Code" variables instead of 32-bit unsigned, + but some additional code must be used to truncate the values to + low 32-bits after some operations. + + If the programming language does not support 32-bit unsigned integer type + (like in case of JAVA language), it's possible to use 32-bit signed integer, + but some code must be changed. For example, it's required to change the code + that uses comparison operations for UInt32 variables in this specification. + +The Range Decoder can be in some states that can be treated as +"Corruption" in LZMA stream. The Range Decoder uses the variable "Corrupted": + + (Corrupted == false), if the Range Decoder has not detected any corruption. + (Corrupted == true), if the Range Decoder has detected some corruption. + +The reference LZMA Decoder ignores the value of the "Corrupted" variable. +So it continues to decode the stream, even if the corruption can be detected +in the Range Decoder. To provide the full compatibility with output of the +reference LZMA Decoder, another LZMA Decoder implementations must also +ignore the value of the "Corrupted" variable. + +The LZMA Encoder is required to create only such LZMA streams, that will not +lead the Range Decoder to states, where the "Corrupted" variable is set to true. + +The Range Decoder reads first 5 bytes from input stream to initialize +the state: + +bool CRangeDecoder::Init() +{ + Corrupted = false; + Range = 0xFFFFFFFF; + Code = 0; + + Byte b = InStream->ReadByte(); + + for (int i = 0; i < 4; i++) + Code = (Code << 8) | InStream->ReadByte(); + + if (b != 0 || Code == Range) + Corrupted = true; + return b == 0; +} + +The LZMA Encoder always writes ZERO in initial byte of compressed stream. +That scheme allows to simplify the code of the Range Encoder in the +LZMA Encoder. If initial byte is not equal to ZERO, the LZMA Decoder must +stop decoding and report error. + +After the last bit of data was decoded by Range Decoder, the value of the +"Code" variable must be equal to 0. The LZMA Decoder must check it by +calling the IsFinishedOK() function: + + bool IsFinishedOK() const { return Code == 0; } + +If there is corruption in data stream, there is big probability that +the "Code" value will be not equal to 0 in the Finish() function. So that +check in the IsFinishedOK() function provides very good feature for +corruption detection. + +The value of the "Range" variable before each bit decoding can not be smaller +than ((UInt32)1 << 24). The Normalize() function keeps the "Range" value in +described range. + +#define kTopValue ((UInt32)1 << 24) + +void CRangeDecoder::Normalize() +{ + if (Range < kTopValue) + { + Range <<= 8; + Code = (Code << 8) | InStream->ReadByte(); + } +} + +Notes: if the size of the "Code" variable is larger than 32 bits, it's +required to keep only low 32 bits of the "Code" variable after the change +in Normalize() function. + +If the LZMA Stream is not corrupted, the value of the "Code" variable is +always smaller than value of the "Range" variable. +But the Range Decoder ignores some types of corruptions, so the value of +the "Code" variable can be equal or larger than value of the "Range" variable +for some "Corrupted" archives. + + +LZMA uses Range Encoding only with binary symbols of two types: + 1) binary symbols with fixed and equal probabilities (direct bits) + 2) binary symbols with predicted probabilities + +The DecodeDirectBits() function decodes the sequence of direct bits: + +UInt32 CRangeDecoder::DecodeDirectBits(unsigned numBits) +{ + UInt32 res = 0; + do + { + Range >>= 1; + Code -= Range; + UInt32 t = 0 - ((UInt32)Code >> 31); + Code += Range & t; + + if (Code == Range) + Corrupted = true; + + Normalize(); + res <<= 1; + res += t + 1; + } + while (--numBits); + return res; +} + + +The Bit Decoding with Probability Model +--------------------------------------- + +The task of Bit Probability Model is to estimate probabilities of binary +symbols. And then it provides the Range Decoder with that information. +The better prediction provides better compression ratio. +The Bit Probability Model uses statistical data of previous decoded +symbols. + +That estimated probability is presented as 11-bit unsigned integer value +that represents the probability of symbol "0". + +#define kNumBitModelTotalBits 11 + +Mathematical probabilities can be presented with the following formulas: + probability(symbol_0) = prob / 2048. + probability(symbol_1) = 1 - Probability(symbol_0) = + = 1 - prob / 2048 = + = (2048 - prob) / 2048 +where the "prob" variable contains 11-bit integer probability counter. + +It's recommended to use 16-bit unsigned integer type, to store these 11-bit +probability values: + +typedef UInt16 CProb; + +Each probability value must be initialized with value ((1 << 11) / 2), +that represents the state, where probabilities of symbols 0 and 1 +are equal to 0.5: + +#define PROB_INIT_VAL ((1 << kNumBitModelTotalBits) / 2) + +The INIT_PROBS macro is used to initialize the array of CProb variables: + +#define INIT_PROBS(p) \ + { for (unsigned i = 0; i < sizeof(p) / sizeof(p[0]); i++) p[i] = PROB_INIT_VAL; } + + +The DecodeBit() function decodes one bit. +The LZMA decoder provides the pointer to CProb variable that contains +information about estimated probability for symbol 0 and the Range Decoder +updates that CProb variable after decoding. The Range Decoder increases +estimated probability of the symbol that was decoded: + +#define kNumMoveBits 5 + +unsigned CRangeDecoder::DecodeBit(CProb *prob) +{ + unsigned v = *prob; + UInt32 bound = (Range >> kNumBitModelTotalBits) * v; + unsigned symbol; + if (Code < bound) + { + v += ((1 << kNumBitModelTotalBits) - v) >> kNumMoveBits; + Range = bound; + symbol = 0; + } + else + { + v -= v >> kNumMoveBits; + Code -= bound; + Range -= bound; + symbol = 1; + } + *prob = (CProb)v; + Normalize(); + return symbol; +} + + +The Binary Tree of bit model counters +------------------------------------- + +LZMA uses a tree of Bit model variables to decode symbol that needs +several bits for storing. There are two versions of such trees in LZMA: + 1) the tree that decodes bits from high bit to low bit (the normal scheme). + 2) the tree that decodes bits from low bit to high bit (the reverse scheme). + +Each binary tree structure supports different size of decoded symbol +(the size of binary sequence that contains value of symbol). +If that size of decoded symbol is "NumBits" bits, the tree structure +uses the array of (2 << NumBits) counters of CProb type. +But only ((2 << NumBits) - 1) items are used by encoder and decoder. +The first item (the item with index equal to 0) in array is unused. +That scheme with unused array's item allows to simplify the code. + +unsigned BitTreeReverseDecode(CProb *probs, unsigned numBits, CRangeDecoder *rc) +{ + unsigned m = 1; + unsigned symbol = 0; + for (unsigned i = 0; i < numBits; i++) + { + unsigned bit = rc->DecodeBit(&probs[m]); + m <<= 1; + m += bit; + symbol |= (bit << i); + } + return symbol; +} + +template +class CBitTreeDecoder +{ + CProb Probs[(unsigned)1 << NumBits]; + +public: + + void Init() + { + INIT_PROBS(Probs); + } + + unsigned Decode(CRangeDecoder *rc) + { + unsigned m = 1; + for (unsigned i = 0; i < NumBits; i++) + m = (m << 1) + rc->DecodeBit(&Probs[m]); + return m - ((unsigned)1 << NumBits); + } + + unsigned ReverseDecode(CRangeDecoder *rc) + { + return BitTreeReverseDecode(Probs, NumBits, rc); + } +}; + + +LZ part of LZMA +--------------- + +LZ part of LZMA describes details about the decoding of MATCHES and LITERALS. + + +The Literal Decoding +-------------------- + +The LZMA Decoder uses (1 << (lc + lp)) tables with CProb values, where +each table contains 0x300 CProb values: + + CProb *LitProbs; + + void CreateLiterals() + { + LitProbs = new CProb[(UInt32)0x300 << (lc + lp)]; + } + + void InitLiterals() + { + UInt32 num = (UInt32)0x300 << (lc + lp); + for (UInt32 i = 0; i < num; i++) + LitProbs[i] = PROB_INIT_VAL; + } + +To select the table for decoding it uses the context that consists of +(lc) high bits from previous literal and (lp) low bits from value that +represents current position in outputStream. + +If (State > 7), the Literal Decoder also uses "matchByte" that represents +the byte in OutputStream at position the is the DISTANCE bytes before +current position, where the DISTANCE is the distance in DISTANCE-LENGTH pair +of latest decoded match. + +The following code decodes one literal and puts it to Sliding Window buffer: + + void DecodeLiteral(unsigned state, UInt32 rep0) + { + unsigned prevByte = 0; + if (!OutWindow.IsEmpty()) + prevByte = OutWindow.GetByte(1); + + unsigned symbol = 1; + unsigned litState = ((OutWindow.TotalPos & ((1 << lp) - 1)) << lc) + (prevByte >> (8 - lc)); + CProb *probs = &LitProbs[(UInt32)0x300 * litState]; + + if (state >= 7) + { + unsigned matchByte = OutWindow.GetByte(rep0 + 1); + do + { + unsigned matchBit = (matchByte >> 7) & 1; + matchByte <<= 1; + unsigned bit = RangeDec.DecodeBit(&probs[((1 + matchBit) << 8) + symbol]); + symbol = (symbol << 1) | bit; + if (matchBit != bit) + break; + } + while (symbol < 0x100); + } + while (symbol < 0x100) + symbol = (symbol << 1) | RangeDec.DecodeBit(&probs[symbol]); + OutWindow.PutByte((Byte)(symbol - 0x100)); + } + + +The match length decoding +------------------------- + +The match length decoder returns normalized (zero-based value) +length of match. That value can be converted to real length of the match +with the following code: + +#define kMatchMinLen 2 + + matchLen = len + kMatchMinLen; + +The match length decoder can return the values from 0 to 271. +And the corresponded real match length values can be in the range +from 2 to 273. + +The following scheme is used for the match length encoding: + + Binary encoding Binary Tree structure Zero-based match length + sequence (binary + decimal): + + 0 xxx LowCoder[posState] xxx + 1 0 yyy MidCoder[posState] yyy + 8 + 1 1 zzzzzzzz HighCoder zzzzzzzz + 16 + +LZMA uses bit model variable "Choice" to decode the first selection bit. + +If the first selection bit is equal to 0, the decoder uses binary tree + LowCoder[posState] to decode 3-bit zero-based match length (xxx). + +If the first selection bit is equal to 1, the decoder uses bit model + variable "Choice2" to decode the second selection bit. + + If the second selection bit is equal to 0, the decoder uses binary tree + MidCoder[posState] to decode 3-bit "yyy" value, and zero-based match + length is equal to (yyy + 8). + + If the second selection bit is equal to 1, the decoder uses binary tree + HighCoder to decode 8-bit "zzzzzzzz" value, and zero-based + match length is equal to (zzzzzzzz + 16). + +LZMA uses "posState" value as context to select the binary tree +from LowCoder and MidCoder binary tree arrays: + + unsigned posState = OutWindow.TotalPos & ((1 << pb) - 1); + +The full code of the length decoder: + +class CLenDecoder +{ + CProb Choice; + CProb Choice2; + CBitTreeDecoder<3> LowCoder[1 << kNumPosBitsMax]; + CBitTreeDecoder<3> MidCoder[1 << kNumPosBitsMax]; + CBitTreeDecoder<8> HighCoder; + +public: + + void Init() + { + Choice = PROB_INIT_VAL; + Choice2 = PROB_INIT_VAL; + HighCoder.Init(); + for (unsigned i = 0; i < (1 << kNumPosBitsMax); i++) + { + LowCoder[i].Init(); + MidCoder[i].Init(); + } + } + + unsigned Decode(CRangeDecoder *rc, unsigned posState) + { + if (rc->DecodeBit(&Choice) == 0) + return LowCoder[posState].Decode(rc); + if (rc->DecodeBit(&Choice2) == 0) + return 8 + MidCoder[posState].Decode(rc); + return 16 + HighCoder.Decode(rc); + } +}; + +The LZMA decoder uses two instances of CLenDecoder class. +The first instance is for the matches of "Simple Match" type, +and the second instance is for the matches of "Rep Match" type: + + CLenDecoder LenDecoder; + CLenDecoder RepLenDecoder; + + +The match distance decoding +--------------------------- + +LZMA supports dictionary sizes up to 4 GiB minus 1. +The value of match distance (decoded by distance decoder) can be +from 1 to 2^32. But the distance value that is equal to 2^32 is used to +indicate the "End of stream" marker. So real largest match distance +that is used for LZ-window match is (2^32 - 1). + +LZMA uses normalized match length (zero-based length) +to calculate the context state "lenState" do decode the distance value: + +#define kNumLenToPosStates 4 + + unsigned lenState = len; + if (lenState > kNumLenToPosStates - 1) + lenState = kNumLenToPosStates - 1; + +The distance decoder returns the "dist" value that is zero-based value +of match distance. The real match distance can be calculated with the +following code: + + matchDistance = dist + 1; + +The state of the distance decoder and the initialization code: + + #define kEndPosModelIndex 14 + #define kNumFullDistances (1 << (kEndPosModelIndex >> 1)) + #define kNumAlignBits 4 + + CBitTreeDecoder<6> PosSlotDecoder[kNumLenToPosStates]; + CProb PosDecoders[1 + kNumFullDistances - kEndPosModelIndex]; + CBitTreeDecoder AlignDecoder; + + void InitDist() + { + for (unsigned i = 0; i < kNumLenToPosStates; i++) + PosSlotDecoder[i].Init(); + AlignDecoder.Init(); + INIT_PROBS(PosDecoders); + } + +At first stage the distance decoder decodes 6-bit "posSlot" value with bit +tree decoder from PosSlotDecoder array. It's possible to get 2^6=64 different +"posSlot" values. + + unsigned posSlot = PosSlotDecoder[lenState].Decode(&RangeDec); + +The encoding scheme for distance value is shown in the following table: + +posSlot (decimal) / + zero-based distance (binary) + 0 0 + 1 1 + 2 10 + 3 11 + + 4 10 x + 5 11 x + 6 10 xx + 7 11 xx + 8 10 xxx + 9 11 xxx +10 10 xxxx +11 11 xxxx +12 10 xxxxx +13 11 xxxxx + +14 10 yy zzzz +15 11 yy zzzz +16 10 yyy zzzz +17 11 yyy zzzz +... +62 10 yyyyyyyyyyyyyyyyyyyyyyyyyy zzzz +63 11 yyyyyyyyyyyyyyyyyyyyyyyyyy zzzz + +where + "x ... x" means the sequence of binary symbols encoded with binary tree and + "Reverse" scheme. It uses separated binary tree for each posSlot from 4 to 13. + "y" means direct bit encoded with range coder. + "zzzz" means the sequence of four binary symbols encoded with binary + tree with "Reverse" scheme, where one common binary tree "AlignDecoder" + is used for all posSlot values. + +If (posSlot < 4), the "dist" value is equal to posSlot value. + +If (posSlot >= 4), the decoder uses "posSlot" value to calculate the value of + the high bits of "dist" value and the number of the low bits. + + If (4 <= posSlot < kEndPosModelIndex), the decoder uses bit tree decoders. + (one separated bit tree decoder per one posSlot value) and "Reverse" scheme. + In this implementation we use one CProb array "PosDecoders" that contains + all CProb variables for all these bit decoders. + + if (posSlot >= kEndPosModelIndex), the middle bits are decoded as direct + bits from RangeDecoder and the low 4 bits are decoded with a bit tree + decoder "AlignDecoder" with "Reverse" scheme. + +The code to decode zero-based match distance: + + unsigned DecodeDistance(unsigned len) + { + unsigned lenState = len; + if (lenState > kNumLenToPosStates - 1) + lenState = kNumLenToPosStates - 1; + + unsigned posSlot = PosSlotDecoder[lenState].Decode(&RangeDec); + if (posSlot < 4) + return posSlot; + + unsigned numDirectBits = (unsigned)((posSlot >> 1) - 1); + UInt32 dist = ((2 | (posSlot & 1)) << numDirectBits); + if (posSlot < kEndPosModelIndex) + dist += BitTreeReverseDecode(PosDecoders + dist - posSlot, numDirectBits, &RangeDec); + else + { + dist += RangeDec.DecodeDirectBits(numDirectBits - kNumAlignBits) << kNumAlignBits; + dist += AlignDecoder.ReverseDecode(&RangeDec); + } + return dist; + } + + + +LZMA Decoding modes +------------------- + +There are 2 types of LZMA streams: + +1) The stream with "End of stream" marker. +2) The stream without "End of stream" marker. + +And the LZMA Decoder supports 3 modes of decoding: + +1) The unpack size is undefined. The LZMA decoder stops decoding after + getting "End of stream" marker. + The input variables for that case: + + markerIsMandatory = true + unpackSizeDefined = false + unpackSize contains any value + +2) The unpack size is defined and LZMA decoder supports both variants, + where the stream can contain "End of stream" marker or the stream is + finished without "End of stream" marker. The LZMA decoder must detect + any of these situations. + The input variables for that case: + + markerIsMandatory = false + unpackSizeDefined = true + unpackSize contains unpack size + +3) The unpack size is defined and the LZMA stream must contain + "End of stream" marker + The input variables for that case: + + markerIsMandatory = true + unpackSizeDefined = true + unpackSize contains unpack size + + +The main loop of decoder +------------------------ + +The main loop of LZMA decoder: + +Initialize the LZMA state. +loop +{ + // begin of loop + Check "end of stream" conditions. + Decode Type of MATCH / LITERAL. + If it's LITERAL, decode LITERAL value and put the LITERAL to Window. + If it's MATCH, decode the length of match and the match distance. + Check error conditions, check end of stream conditions and copy + the sequence of match bytes from sliding window to current position + in window. + Go to begin of loop +} + +The reference implementation of LZMA decoder uses "unpackSize" variable +to keep the number of remaining bytes in output stream. So it reduces +"unpackSize" value after each decoded LITERAL or MATCH. + +The following code contains the "end of stream" condition check at the start +of the loop: + + if (unpackSizeDefined && unpackSize == 0 && !markerIsMandatory) + if (RangeDec.IsFinishedOK()) + return LZMA_RES_FINISHED_WITHOUT_MARKER; + +LZMA uses three types of matches: + +1) "Simple Match" - the match with distance value encoded with bit models. + +2) "Rep Match" - the match that uses the distance from distance + history table. + +3) "Short Rep Match" - the match of single byte length, that uses the latest + distance from distance history table. + +The LZMA decoder keeps the history of latest 4 match distances that were used +by decoder. That set of 4 variables contains zero-based match distances and +these variables are initialized with zero values: + + UInt32 rep0 = 0, rep1 = 0, rep2 = 0, rep3 = 0; + +The LZMA decoder uses binary model variables to select type of MATCH or LITERAL: + +#define kNumStates 12 +#define kNumPosBitsMax 4 + + CProb IsMatch[kNumStates << kNumPosBitsMax]; + CProb IsRep[kNumStates]; + CProb IsRepG0[kNumStates]; + CProb IsRepG1[kNumStates]; + CProb IsRepG2[kNumStates]; + CProb IsRep0Long[kNumStates << kNumPosBitsMax]; + +The decoder uses "state" variable value to select exact variable +from "IsRep", "IsRepG0", "IsRepG1" and "IsRepG2" arrays. +The "state" variable can get the value from 0 to 11. +Initial value for "state" variable is zero: + + unsigned state = 0; + +The "state" variable is updated after each LITERAL or MATCH with one of the +following functions: + +unsigned UpdateState_Literal(unsigned state) +{ + if (state < 4) return 0; + else if (state < 10) return state - 3; + else return state - 6; +} +unsigned UpdateState_Match (unsigned state) { return state < 7 ? 7 : 10; } +unsigned UpdateState_Rep (unsigned state) { return state < 7 ? 8 : 11; } +unsigned UpdateState_ShortRep(unsigned state) { return state < 7 ? 9 : 11; } + +The decoder calculates "state2" variable value to select exact variable from +"IsMatch" and "IsRep0Long" arrays: + +unsigned posState = OutWindow.TotalPos & ((1 << pb) - 1); +unsigned state2 = (state << kNumPosBitsMax) + posState; + +The decoder uses the following code flow scheme to select exact +type of LITERAL or MATCH: + +IsMatch[state2] decode + 0 - the Literal + 1 - the Match + IsRep[state] decode + 0 - Simple Match + 1 - Rep Match + IsRepG0[state] decode + 0 - the distance is rep0 + IsRep0Long[state2] decode + 0 - Short Rep Match + 1 - Rep Match 0 + 1 - + IsRepG1[state] decode + 0 - Rep Match 1 + 1 - + IsRepG2[state] decode + 0 - Rep Match 2 + 1 - Rep Match 3 + + +LITERAL symbol +-------------- +If the value "0" was decoded with IsMatch[state2] decoding, we have "LITERAL" type. + +At first the LZMA decoder must check that it doesn't exceed +specified uncompressed size: + + if (unpackSizeDefined && unpackSize == 0) + return LZMA_RES_ERROR; + +Then it decodes literal value and puts it to sliding window: + + DecodeLiteral(state, rep0); + +Then the decoder must update the "state" value and "unpackSize" value; + + state = UpdateState_Literal(state); + unpackSize--; + +Then the decoder must go to the begin of main loop to decode next Match or Literal. + + +Simple Match +------------ + +If the value "1" was decoded with IsMatch[state2] decoding, +we have the "Simple Match" type. + +The distance history table is updated with the following scheme: + + rep3 = rep2; + rep2 = rep1; + rep1 = rep0; + +The zero-based length is decoded with "LenDecoder": + + len = LenDecoder.Decode(&RangeDec, posState); + +The state is update with UpdateState_Match function: + + state = UpdateState_Match(state); + +and the new "rep0" value is decoded with DecodeDistance: + + rep0 = DecodeDistance(len); + +That "rep0" will be used as zero-based distance for current match. + +If the value of "rep0" is equal to 0xFFFFFFFF, it means that we have +"End of stream" marker, so we can stop decoding and check finishing +condition in Range Decoder: + + if (rep0 == 0xFFFFFFFF) + return RangeDec.IsFinishedOK() ? + LZMA_RES_FINISHED_WITH_MARKER : + LZMA_RES_ERROR; + +If uncompressed size is defined, LZMA decoder must check that it doesn't +exceed that specified uncompressed size: + + if (unpackSizeDefined && unpackSize == 0) + return LZMA_RES_ERROR; + +Also the decoder must check that "rep0" value is not larger than dictionary size +and is not larger than the number of already decoded bytes: + + if (rep0 >= dictSize || !OutWindow.CheckDistance(rep0)) + return LZMA_RES_ERROR; + +Then the decoder must copy match bytes as described in +"The match symbols copying" section. + + +Rep Match +--------- + +If the LZMA decoder has decoded the value "1" with IsRep[state] variable, +we have "Rep Match" type. + +At first the LZMA decoder must check that it doesn't exceed +specified uncompressed size: + + if (unpackSizeDefined && unpackSize == 0) + return LZMA_RES_ERROR; + +Also the decoder must return error, if the LZ window is empty: + + if (OutWindow.IsEmpty()) + return LZMA_RES_ERROR; + +If the match type is "Rep Match", the decoder uses one of the 4 variables of +distance history table to get the value of distance for current match. +And there are 4 corresponding ways of decoding flow. + +The decoder updates the distance history with the following scheme +depending from type of match: + +- "Rep Match 0" or "Short Rep Match": + ; LZMA doesn't update the distance history + +- "Rep Match 1": + UInt32 dist = rep1; + rep1 = rep0; + rep0 = dist; + +- "Rep Match 2": + UInt32 dist = rep2; + rep2 = rep1; + rep1 = rep0; + rep0 = dist; + +- "Rep Match 3": + UInt32 dist = rep3; + rep3 = rep2; + rep2 = rep1; + rep1 = rep0; + rep0 = dist; + +Then the decoder decodes exact subtype of "Rep Match" using "IsRepG0", "IsRep0Long", +"IsRepG1", "IsRepG2". + +If the subtype is "Short Rep Match", the decoder updates the state, puts +the one byte from window to current position in window and goes to next +MATCH/LITERAL symbol (the begin of main loop): + + state = UpdateState_ShortRep(state); + OutWindow.PutByte(OutWindow.GetByte(rep0 + 1)); + unpackSize--; + continue; + +In other cases (Rep Match 0/1/2/3), it decodes the zero-based +length of match with "RepLenDecoder" decoder: + + len = RepLenDecoder.Decode(&RangeDec, posState); + +Then it updates the state: + + state = UpdateState_Rep(state); + +Then the decoder must copy match bytes as described in +"The Match symbols copying" section. + + +The match symbols copying +------------------------- + +If we have the match (Simple Match or Rep Match 0/1/2/3), the decoder must +copy the sequence of bytes with calculated match distance and match length. +If uncompressed size is defined, LZMA decoder must check that it doesn't +exceed that specified uncompressed size: + + len += kMatchMinLen; + bool isError = false; + if (unpackSizeDefined && unpackSize < len) + { + len = (unsigned)unpackSize; + isError = true; + } + OutWindow.CopyMatch(rep0 + 1, len); + unpackSize -= len; + if (isError) + return LZMA_RES_ERROR; + +Then the decoder must go to the begin of main loop to decode next MATCH or LITERAL. + + + +NOTES +----- + +This specification doesn't describe the variant of decoder implementation +that supports partial decoding. Such partial decoding case can require some +changes in "end of stream" condition checks code. Also such code +can use additional status codes, returned by decoder. + +This specification uses C++ code with templates to simplify describing. +The optimized version of LZMA decoder doesn't need templates. +Such optimized version can use just two arrays of CProb variables: + 1) The dynamic array of CProb variables allocated for the Literal Decoder. + 2) The one common array that contains all other CProb variables. + + +References: + +1. G. N. N. Martin, Range encoding: an algorithm for removing redundancy + from a digitized message, Video & Data Recording Conference, + Southampton, UK, July 24-27, 1979. diff --git a/deps/LZMA-SDK/DOC/lzma.txt b/deps/LZMA-SDK/DOC/lzma.txt index a65988fe0..62cf09455 100644 --- a/deps/LZMA-SDK/DOC/lzma.txt +++ b/deps/LZMA-SDK/DOC/lzma.txt @@ -1,328 +1,345 @@ -LZMA compression ----------------- -Version: 9.35 - -This file describes LZMA encoding and decoding functions written in C language. - -LZMA is an improved version of famous LZ77 compression algorithm. -It was improved in way of maximum increasing of compression ratio, -keeping high decompression speed and low memory requirements for -decompressing. - -Note: you can read also LZMA Specification (lzma-specification.txt from LZMA SDK) - -Also you can look source code for LZMA encoding and decoding: - C/Util/Lzma/LzmaUtil.c - - -LZMA compressed file format ---------------------------- -Offset Size Description - 0 1 Special LZMA properties (lc,lp, pb in encoded form) - 1 4 Dictionary size (little endian) - 5 8 Uncompressed size (little endian). -1 means unknown size - 13 Compressed data - - - -ANSI-C LZMA Decoder -~~~~~~~~~~~~~~~~~~~ - -Please note that interfaces for ANSI-C code were changed in LZMA SDK 4.58. -If you want to use old interfaces you can download previous version of LZMA SDK -from sourceforge.net site. - -To use ANSI-C LZMA Decoder you need the following files: -1) LzmaDec.h + LzmaDec.c + 7zTypes.h + Precomp.h + Compiler.h - -Look example code: - C/Util/Lzma/LzmaUtil.c - - -Memory requirements for LZMA decoding -------------------------------------- - -Stack usage of LZMA decoding function for local variables is not -larger than 200-400 bytes. - -LZMA Decoder uses dictionary buffer and internal state structure. -Internal state structure consumes - state_size = (4 + (1.5 << (lc + lp))) KB -by default (lc=3, lp=0), state_size = 16 KB. - - -How To decompress data ----------------------- - -LZMA Decoder (ANSI-C version) now supports 2 interfaces: -1) Single-call Decompressing -2) Multi-call State Decompressing (zlib-like interface) - -You must use external allocator: -Example: -void *SzAlloc(void *p, size_t size) { p = p; return malloc(size); } -void SzFree(void *p, void *address) { p = p; free(address); } -ISzAlloc alloc = { SzAlloc, SzFree }; - -You can use p = p; operator to disable compiler warnings. - - -Single-call Decompressing -------------------------- -When to use: RAM->RAM decompressing -Compile files: LzmaDec.h + LzmaDec.c + 7zTypes.h -Compile defines: no defines -Memory Requirements: - - Input buffer: compressed size - - Output buffer: uncompressed size - - LZMA Internal Structures: state_size (16 KB for default settings) - -Interface: - int LzmaDecode(Byte *dest, SizeT *destLen, const Byte *src, SizeT *srcLen, - const Byte *propData, unsigned propSize, ELzmaFinishMode finishMode, - ELzmaStatus *status, ISzAlloc *alloc); - In: - dest - output data - destLen - output data size - src - input data - srcLen - input data size - propData - LZMA properties (5 bytes) - propSize - size of propData buffer (5 bytes) - finishMode - It has meaning only if the decoding reaches output limit (*destLen). - LZMA_FINISH_ANY - Decode just destLen bytes. - LZMA_FINISH_END - Stream must be finished after (*destLen). - You can use LZMA_FINISH_END, when you know that - current output buffer covers last bytes of stream. - alloc - Memory allocator. - - Out: - destLen - processed output size - srcLen - processed input size - - Output: - SZ_OK - status: - LZMA_STATUS_FINISHED_WITH_MARK - LZMA_STATUS_NOT_FINISHED - LZMA_STATUS_MAYBE_FINISHED_WITHOUT_MARK - SZ_ERROR_DATA - Data error - SZ_ERROR_MEM - Memory allocation error - SZ_ERROR_UNSUPPORTED - Unsupported properties - SZ_ERROR_INPUT_EOF - It needs more bytes in input buffer (src). - - If LZMA decoder sees end_marker before reaching output limit, it returns OK result, - and output value of destLen will be less than output buffer size limit. - - You can use multiple checks to test data integrity after full decompression: - 1) Check Result and "status" variable. - 2) Check that output(destLen) = uncompressedSize, if you know real uncompressedSize. - 3) Check that output(srcLen) = compressedSize, if you know real compressedSize. - You must use correct finish mode in that case. */ - - -Multi-call State Decompressing (zlib-like interface) ----------------------------------------------------- - -When to use: file->file decompressing -Compile files: LzmaDec.h + LzmaDec.c + 7zTypes.h - -Memory Requirements: - - Buffer for input stream: any size (for example, 16 KB) - - Buffer for output stream: any size (for example, 16 KB) - - LZMA Internal Structures: state_size (16 KB for default settings) - - LZMA dictionary (dictionary size is encoded in LZMA properties header) - -1) read LZMA properties (5 bytes) and uncompressed size (8 bytes, little-endian) to header: - unsigned char header[LZMA_PROPS_SIZE + 8]; - ReadFile(inFile, header, sizeof(header) - -2) Allocate CLzmaDec structures (state + dictionary) using LZMA properties - - CLzmaDec state; - LzmaDec_Constr(&state); - res = LzmaDec_Allocate(&state, header, LZMA_PROPS_SIZE, &g_Alloc); - if (res != SZ_OK) - return res; - -3) Init LzmaDec structure before any new LZMA stream. And call LzmaDec_DecodeToBuf in loop - - LzmaDec_Init(&state); - for (;;) - { - ... - int res = LzmaDec_DecodeToBuf(CLzmaDec *p, Byte *dest, SizeT *destLen, - const Byte *src, SizeT *srcLen, ELzmaFinishMode finishMode); - ... - } - - -4) Free all allocated structures - LzmaDec_Free(&state, &g_Alloc); - -Look example code: - C/Util/Lzma/LzmaUtil.c - - -How To compress data --------------------- - -Compile files: - 7zTypes.h - Threads.h - LzmaEnc.h - LzmaEnc.c - LzFind.h - LzFind.c - LzFindMt.h - LzFindMt.c - LzHash.h - -Memory Requirements: - - (dictSize * 11.5 + 6 MB) + state_size - -Lzma Encoder can use two memory allocators: -1) alloc - for small arrays. -2) allocBig - for big arrays. - -For example, you can use Large RAM Pages (2 MB) in allocBig allocator for -better compression speed. Note that Windows has bad implementation for -Large RAM Pages. -It's OK to use same allocator for alloc and allocBig. - - -Single-call Compression with callbacks --------------------------------------- - -Look example code: - C/Util/Lzma/LzmaUtil.c - -When to use: file->file compressing - -1) you must implement callback structures for interfaces: -ISeqInStream -ISeqOutStream -ICompressProgress -ISzAlloc - -static void *SzAlloc(void *p, size_t size) { p = p; return MyAlloc(size); } -static void SzFree(void *p, void *address) { p = p; MyFree(address); } -static ISzAlloc g_Alloc = { SzAlloc, SzFree }; - - CFileSeqInStream inStream; - CFileSeqOutStream outStream; - - inStream.funcTable.Read = MyRead; - inStream.file = inFile; - outStream.funcTable.Write = MyWrite; - outStream.file = outFile; - - -2) Create CLzmaEncHandle object; - - CLzmaEncHandle enc; - - enc = LzmaEnc_Create(&g_Alloc); - if (enc == 0) - return SZ_ERROR_MEM; - - -3) initialize CLzmaEncProps properties; - - LzmaEncProps_Init(&props); - - Then you can change some properties in that structure. - -4) Send LZMA properties to LZMA Encoder - - res = LzmaEnc_SetProps(enc, &props); - -5) Write encoded properties to header - - Byte header[LZMA_PROPS_SIZE + 8]; - size_t headerSize = LZMA_PROPS_SIZE; - UInt64 fileSize; - int i; - - res = LzmaEnc_WriteProperties(enc, header, &headerSize); - fileSize = MyGetFileLength(inFile); - for (i = 0; i < 8; i++) - header[headerSize++] = (Byte)(fileSize >> (8 * i)); - MyWriteFileAndCheck(outFile, header, headerSize) - -6) Call encoding function: - res = LzmaEnc_Encode(enc, &outStream.funcTable, &inStream.funcTable, - NULL, &g_Alloc, &g_Alloc); - -7) Destroy LZMA Encoder Object - LzmaEnc_Destroy(enc, &g_Alloc, &g_Alloc); - - -If callback function return some error code, LzmaEnc_Encode also returns that code -or it can return the code like SZ_ERROR_READ, SZ_ERROR_WRITE or SZ_ERROR_PROGRESS. - - -Single-call RAM->RAM Compression --------------------------------- - -Single-call RAM->RAM Compression is similar to Compression with callbacks, -but you provide pointers to buffers instead of pointers to stream callbacks: - -SRes LzmaEncode(Byte *dest, SizeT *destLen, const Byte *src, SizeT srcLen, - const CLzmaEncProps *props, Byte *propsEncoded, SizeT *propsSize, int writeEndMark, - ICompressProgress *progress, ISzAlloc *alloc, ISzAlloc *allocBig); - -Return code: - SZ_OK - OK - SZ_ERROR_MEM - Memory allocation error - SZ_ERROR_PARAM - Incorrect paramater - SZ_ERROR_OUTPUT_EOF - output buffer overflow - SZ_ERROR_THREAD - errors in multithreading functions (only for Mt version) - - - -Defines -------- - -_LZMA_SIZE_OPT - Enable some optimizations in LZMA Decoder to get smaller executable code. - -_LZMA_PROB32 - It can increase the speed on some 32-bit CPUs, but memory usage for - some structures will be doubled in that case. - -_LZMA_UINT32_IS_ULONG - Define it if int is 16-bit on your compiler and long is 32-bit. - -_LZMA_NO_SYSTEM_SIZE_T - Define it if you don't want to use size_t type. - - -_7ZIP_PPMD_SUPPPORT - Define it if you don't want to support PPMD method in AMSI-C .7z decoder. - - -C++ LZMA Encoder/Decoder -~~~~~~~~~~~~~~~~~~~~~~~~ -C++ LZMA code use COM-like interfaces. So if you want to use it, -you can study basics of COM/OLE. -C++ LZMA code is just wrapper over ANSI-C code. - - -C++ Notes -~~~~~~~~~~~~~~~~~~~~~~~~ -If you use some C++ code folders in 7-Zip (for example, C++ code for .7z handling), -you must check that you correctly work with "new" operator. -7-Zip can be compiled with MSVC 6.0 that doesn't throw "exception" from "new" operator. -So 7-Zip uses "CPP\Common\NewHandler.cpp" that redefines "new" operator: -operator new(size_t size) -{ - void *p = ::malloc(size); - if (p == 0) - throw CNewException(); - return p; -} -If you use MSCV that throws exception for "new" operator, you can compile without -"NewHandler.cpp". So standard exception will be used. Actually some code of -7-Zip catches any exception in internal code and converts it to HRESULT code. -So you don't need to catch CNewException, if you call COM interfaces of 7-Zip. - ---- - -http://www.7-zip.org -http://www.7-zip.org/sdk.html -http://www.7-zip.org/support.html +LZMA compression +---------------- +Version: 24.07 + +This file describes LZMA encoding and decoding functions written in C language. + +LZMA is an improved version of famous LZ77 compression algorithm. +It was improved in way of maximum increasing of compression ratio, +keeping high decompression speed and low memory requirements for +decompressing. + +Note: you can read also LZMA Specification (lzma-specification.txt from LZMA SDK) + +Also you can look source code for LZMA encoding and decoding: + C/Util/Lzma/LzmaUtil.c + + +LZMA compressed file format +--------------------------- +Offset Size Description + 0 1 Special LZMA properties (lc,lp, pb in encoded form) + 1 4 Dictionary size (little endian) + 5 8 Uncompressed size (little endian). -1 means unknown size + 13 Compressed data + + + +ANSI-C LZMA Decoder +~~~~~~~~~~~~~~~~~~~ + +Please note that interfaces for ANSI-C code were changed in LZMA SDK 4.58. +If you want to use old interfaces you can download previous version of LZMA SDK +from sourceforge.net site. + +To use ANSI-C LZMA Decoder you need the following files: +1) LzmaDec.h + LzmaDec.c + 7zTypes.h + Precomp.h + Compiler.h + +Look example code: + C/Util/Lzma/LzmaUtil.c + + +Memory requirements for LZMA decoding +------------------------------------- + +Stack usage of LZMA decoding function for local variables is not +larger than 200-400 bytes. + +LZMA Decoder uses dictionary buffer and internal state structure. +Internal state structure consumes + state_size = (4 + (1.5 << (lc + lp))) KB +by default (lc=3, lp=0), state_size = 16 KB. + + +How To decompress data +---------------------- + +LZMA Decoder (ANSI-C version) now supports 2 interfaces: +1) Single-call Decompressing +2) Multi-call State Decompressing (zlib-like interface) + +You must use external allocator: +Example: +void *SzAlloc(void *p, size_t size) { p = p; return malloc(size); } +void SzFree(void *p, void *address) { p = p; free(address); } +ISzAlloc alloc = { SzAlloc, SzFree }; + +You can use p = p; operator to disable compiler warnings. + + +Single-call Decompressing +------------------------- +When to use: RAM->RAM decompressing +Compile files: LzmaDec.h + LzmaDec.c + 7zTypes.h +Compile defines: no defines +Memory Requirements: + - Input buffer: compressed size + - Output buffer: uncompressed size + - LZMA Internal Structures: state_size (16 KB for default settings) + +Interface: + int LzmaDecode(Byte *dest, SizeT *destLen, const Byte *src, SizeT *srcLen, + const Byte *propData, unsigned propSize, ELzmaFinishMode finishMode, + ELzmaStatus *status, ISzAlloc *alloc); + In: + dest - output data + destLen - output data size + src - input data + srcLen - input data size + propData - LZMA properties (5 bytes) + propSize - size of propData buffer (5 bytes) + finishMode - It has meaning only if the decoding reaches output limit (*destLen). + LZMA_FINISH_ANY - Decode just destLen bytes. + LZMA_FINISH_END - Stream must be finished after (*destLen). + You can use LZMA_FINISH_END, when you know that + current output buffer covers last bytes of stream. + alloc - Memory allocator. + + Out: + destLen - processed output size + srcLen - processed input size + + Output: + SZ_OK + status: + LZMA_STATUS_FINISHED_WITH_MARK + LZMA_STATUS_NOT_FINISHED + LZMA_STATUS_MAYBE_FINISHED_WITHOUT_MARK + SZ_ERROR_DATA - Data error + SZ_ERROR_MEM - Memory allocation error + SZ_ERROR_UNSUPPORTED - Unsupported properties + SZ_ERROR_INPUT_EOF - It needs more bytes in input buffer (src). + + If LZMA decoder sees end_marker before reaching output limit, it returns OK result, + and output value of destLen will be less than output buffer size limit. + + You can use multiple checks to test data integrity after full decompression: + 1) Check Result and "status" variable. + 2) Check that output(destLen) = uncompressedSize, if you know real uncompressedSize. + 3) Check that output(srcLen) = compressedSize, if you know real compressedSize. + You must use correct finish mode in that case. */ + + +Multi-call State Decompressing (zlib-like interface) +---------------------------------------------------- + +When to use: file->file decompressing +Compile files: LzmaDec.h + LzmaDec.c + 7zTypes.h + +Memory Requirements: + - Buffer for input stream: any size (for example, 16 KB) + - Buffer for output stream: any size (for example, 16 KB) + - LZMA Internal Structures: state_size (16 KB for default settings) + - LZMA dictionary (dictionary size is encoded in LZMA properties header) + +1) read LZMA properties (5 bytes) and uncompressed size (8 bytes, little-endian) to header: + unsigned char header[LZMA_PROPS_SIZE + 8]; + ReadFile(inFile, header, sizeof(header) + +2) Allocate CLzmaDec structures (state + dictionary) using LZMA properties + + CLzmaDec state; + LzmaDec_Constr(&state); + res = LzmaDec_Allocate(&state, header, LZMA_PROPS_SIZE, &g_Alloc); + if (res != SZ_OK) + return res; + +3) Init LzmaDec structure before any new LZMA stream. And call LzmaDec_DecodeToBuf in loop + + LzmaDec_Init(&state); + for (;;) + { + ... + int res = LzmaDec_DecodeToBuf(CLzmaDec *p, Byte *dest, SizeT *destLen, + const Byte *src, SizeT *srcLen, ELzmaFinishMode finishMode); + ... + } + + +4) Free all allocated structures + LzmaDec_Free(&state, &g_Alloc); + +Look example code: + C/Util/Lzma/LzmaUtil.c + + +How To compress data +-------------------- + +Compile files: + 7zTypes.h + Threads.h + Threads.c + LzmaEnc.h + LzmaEnc.c + LzFind.h + LzFind.c + LzFindMt.h + LzFindMt.c + LzFindOpt.c + LzHash.h + +Memory Requirements: + - (dictSize * 11.5 + 6 MB) + state_size + +Lzma Encoder can use two memory allocators: +1) alloc - for small arrays. +2) allocBig - for big arrays. + +For example, you can use Large RAM Pages (2 MB) in allocBig allocator for +better compression speed. Note that Windows has bad implementation for +Large RAM Pages. +It's OK to use same allocator for alloc and allocBig. + + +Single-call Compression with callbacks +-------------------------------------- + +Look example code: + C/Util/Lzma/LzmaUtil.c + +When to use: file->file compressing + +1) you must implement callback structures for interfaces: +ISeqInStream +ISeqOutStream +ICompressProgress +ISzAlloc + +static void *SzAlloc(void *p, size_t size) { p = p; return MyAlloc(size); } +static void SzFree(void *p, void *address) { p = p; MyFree(address); } +static ISzAlloc g_Alloc = { SzAlloc, SzFree }; + + CFileSeqInStream inStream; + CFileSeqOutStream outStream; + + inStream.funcTable.Read = MyRead; + inStream.file = inFile; + outStream.funcTable.Write = MyWrite; + outStream.file = outFile; + + +2) Create CLzmaEncHandle object; + + CLzmaEncHandle enc; + + enc = LzmaEnc_Create(&g_Alloc); + if (enc == 0) + return SZ_ERROR_MEM; + + +3) initialize CLzmaEncProps properties; + + LzmaEncProps_Init(&props); + + Then you can change some properties in that structure. + +4) Send LZMA properties to LZMA Encoder + + res = LzmaEnc_SetProps(enc, &props); + +5) Write encoded properties to header + + Byte header[LZMA_PROPS_SIZE + 8]; + size_t headerSize = LZMA_PROPS_SIZE; + UInt64 fileSize; + int i; + + res = LzmaEnc_WriteProperties(enc, header, &headerSize); + fileSize = MyGetFileLength(inFile); + for (i = 0; i < 8; i++) + header[headerSize++] = (Byte)(fileSize >> (8 * i)); + MyWriteFileAndCheck(outFile, header, headerSize) + +6) Call encoding function: + res = LzmaEnc_Encode(enc, &outStream.funcTable, &inStream.funcTable, + NULL, &g_Alloc, &g_Alloc); + +7) Destroy LZMA Encoder Object + LzmaEnc_Destroy(enc, &g_Alloc, &g_Alloc); + + +If callback function return some error code, LzmaEnc_Encode also returns that code +or it can return the code like SZ_ERROR_READ, SZ_ERROR_WRITE or SZ_ERROR_PROGRESS. + + +Single-call RAM->RAM Compression +-------------------------------- + +Single-call RAM->RAM Compression is similar to Compression with callbacks, +but you provide pointers to buffers instead of pointers to stream callbacks: + +SRes LzmaEncode(Byte *dest, SizeT *destLen, const Byte *src, SizeT srcLen, + const CLzmaEncProps *props, Byte *propsEncoded, SizeT *propsSize, int writeEndMark, + ICompressProgress *progress, ISzAlloc *alloc, ISzAlloc *allocBig); + +Return code: + SZ_OK - OK + SZ_ERROR_MEM - Memory allocation error + SZ_ERROR_PARAM - Incorrect paramater + SZ_ERROR_OUTPUT_EOF - output buffer overflow + SZ_ERROR_THREAD - errors in multithreading functions (only for Mt version) + + + +Defines +------- + +Z7_LZMA_SIZE_OPT - Enable some code size optimizations in LZMA Decoder to get smaller executable code. + +Z7_LZMA_PROB32 - It can increase the speed on some 32-bit CPUs, but memory usage for + some structures will be doubled in that case. + +Z7_DECL_Int32_AS_long - Define it if int is 16-bit on your compiler and long is 32-bit. + +Z7_DECL_SizeT_AS_unsigned_int - Define it if you don't want to use size_t type. + + +Defines for 7z decoder written in C +----------------------------------- +These defines are for 7zDec.c only (the decoder in C). +C++ 7z decoder doesn't uses these macros. + +Z7_PPMD_SUPPORT - define it if you need PPMD method support. +Z7_NO_METHODS_FILTERS - do not use filters (except of BCJ2 filter). +Z7_USE_NATIVE_BRANCH_FILTER - use filter for native ISA: + use x86 filter, if compiled to x86 executable, + use arm64 filter, if compiled to arm64 executable. + + +C++ LZMA Encoder/Decoder +~~~~~~~~~~~~~~~~~~~~~~~~ +C++ LZMA code use COM-like interfaces. So if you want to use it, +you can study basics of COM/OLE. +C++ LZMA code is just wrapper over ANSI-C code. + + +C++ Notes +~~~~~~~~~~~~~~~~~~~~~~~~ +If you use some C++ code folders in 7-Zip (for example, C++ code for 7z archive handling), +you must check that you correctly work with "new" operator. +7-Zip can be compiled with MSVC 6.0 that doesn't throw "exception" from "new" operator. +So 7-Zip uses "CPP\Common\NewHandler.cpp" that redefines "new" operator, +if compiled by old MSVC compilers (MSVC before version VS 2010): + +operator new(size_t size) +{ + void *p = ::malloc(size); + if (!p) + throw CNewException(); + return p; +} + +If the compiler is VS 2010 or newer, NewHandler.cpp doesn't redefine "new" operator. +Sp if you use new compiler (VS 2010 or newer), you still can include "NewHandler.cpp" +to compilation, and it will not redefine operator new. +Also you can compile without "NewHandler.cpp" with new compilers. +If 7-zip doesn't redefine operator "new", standard exception will be used instead of CNewException. +Some code of 7-Zip catches any exception in internal code and converts it to HRESULT code. +So you don't need to catch CNewException, if you call COM interfaces of 7-Zip. + +--- + +http://www.7-zip.org +http://www.7-zip.org/sdk.html +http://www.7-zip.org/support.html diff --git a/deps/OpenCL-Headers/CL/cl.h b/deps/OpenCL-Headers/CL/cl.h index c2cdb4008..792e20cc8 100644 --- a/deps/OpenCL-Headers/CL/cl.h +++ b/deps/OpenCL-Headers/CL/cl.h @@ -112,9 +112,9 @@ typedef cl_uint cl_kernel_exec_info; typedef cl_bitfield cl_device_atomic_capabilities; typedef cl_bitfield cl_device_device_enqueue_capabilities; typedef cl_uint cl_khronos_vendor_id; -typedef cl_properties cl_mem_properties; -typedef cl_uint cl_version; +typedef cl_properties cl_mem_properties; #endif +typedef cl_uint cl_version; typedef struct _cl_image_format { cl_channel_order image_channel_order; @@ -569,11 +569,8 @@ typedef struct _cl_name_version { #define CL_RGx 0x10BB #define CL_RGBx 0x10BC #endif -#ifdef CL_VERSION_1_2 -#define CL_DEPTH 0x10BD -#define CL_DEPTH_STENCIL 0x10BE -#endif #ifdef CL_VERSION_2_0 +#define CL_DEPTH 0x10BD #define CL_sRGB 0x10BF #define CL_sRGBx 0x10C0 #define CL_sRGBA 0x10C1 @@ -597,9 +594,6 @@ typedef struct _cl_name_version { #define CL_UNSIGNED_INT32 0x10DC #define CL_HALF_FLOAT 0x10DD #define CL_FLOAT 0x10DE -#ifdef CL_VERSION_1_2 -#define CL_UNORM_INT24 0x10DF -#endif #ifdef CL_VERSION_2_1 #define CL_UNORM_INT_101010_2 0x10E0 #endif @@ -920,8 +914,6 @@ typedef struct _cl_name_version { /* cl_khronos_vendor_id */ #define CL_KHRONOS_VENDOR_ID_CODEPLAY 0x10004 -#ifdef CL_VERSION_3_0 - /* cl_version */ #define CL_VERSION_MAJOR_BITS (10) #define CL_VERSION_MINOR_BITS (10) @@ -945,8 +937,6 @@ typedef struct _cl_name_version { (((minor) & CL_VERSION_MINOR_MASK) << CL_VERSION_PATCH_BITS) | \ ((patch) & CL_VERSION_PATCH_MASK)) -#endif - /********************************************************************************************************/ /* CL_NO_PROTOTYPES implies CL_NO_CORE_PROTOTYPES: */ diff --git a/deps/OpenCL-Headers/CL/cl_d3d10.h b/deps/OpenCL-Headers/CL/cl_d3d10.h index 3d8fe1312..6b56c775b 100644 --- a/deps/OpenCL-Headers/CL/cl_d3d10.h +++ b/deps/OpenCL-Headers/CL/cl_d3d10.h @@ -65,6 +65,9 @@ extern "C" { #define CL_KHR_D3D10_SHARING_EXTENSION_NAME \ "cl_khr_d3d10_sharing" + +#define CL_KHR_D3D10_SHARING_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + typedef cl_uint cl_d3d10_device_source_khr; typedef cl_uint cl_d3d10_device_set_khr; @@ -97,56 +100,74 @@ typedef cl_uint cl_d3d10_device_set_khr; #define CL_COMMAND_RELEASE_D3D10_OBJECTS_KHR 0x4018 -typedef cl_int (CL_API_CALL * -clGetDeviceIDsFromD3D10KHR_fn)( +typedef cl_int CL_API_CALL +clGetDeviceIDsFromD3D10KHR_t( cl_platform_id platform, cl_d3d10_device_source_khr d3d_device_source, void* d3d_object, cl_d3d10_device_set_khr d3d_device_set, cl_uint num_entries, cl_device_id* devices, - cl_uint* num_devices) CL_API_SUFFIX__VERSION_1_0; + cl_uint* num_devices); -typedef cl_mem (CL_API_CALL * -clCreateFromD3D10BufferKHR_fn)( +typedef clGetDeviceIDsFromD3D10KHR_t * +clGetDeviceIDsFromD3D10KHR_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_mem CL_API_CALL +clCreateFromD3D10BufferKHR_t( cl_context context, cl_mem_flags flags, ID3D10Buffer* resource, - cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0; + cl_int* errcode_ret); -typedef cl_mem (CL_API_CALL * -clCreateFromD3D10Texture2DKHR_fn)( +typedef clCreateFromD3D10BufferKHR_t * +clCreateFromD3D10BufferKHR_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_mem CL_API_CALL +clCreateFromD3D10Texture2DKHR_t( cl_context context, cl_mem_flags flags, ID3D10Texture2D* resource, UINT subresource, - cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0; + cl_int* errcode_ret); -typedef cl_mem (CL_API_CALL * -clCreateFromD3D10Texture3DKHR_fn)( +typedef clCreateFromD3D10Texture2DKHR_t * +clCreateFromD3D10Texture2DKHR_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_mem CL_API_CALL +clCreateFromD3D10Texture3DKHR_t( cl_context context, cl_mem_flags flags, ID3D10Texture3D* resource, UINT subresource, - cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0; + cl_int* errcode_ret); -typedef cl_int (CL_API_CALL * -clEnqueueAcquireD3D10ObjectsKHR_fn)( +typedef clCreateFromD3D10Texture3DKHR_t * +clCreateFromD3D10Texture3DKHR_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_int CL_API_CALL +clEnqueueAcquireD3D10ObjectsKHR_t( cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, cl_uint num_events_in_wait_list, const cl_event* event_wait_list, - cl_event* event) CL_API_SUFFIX__VERSION_1_0; + cl_event* event); -typedef cl_int (CL_API_CALL * -clEnqueueReleaseD3D10ObjectsKHR_fn)( +typedef clEnqueueAcquireD3D10ObjectsKHR_t * +clEnqueueAcquireD3D10ObjectsKHR_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_int CL_API_CALL +clEnqueueReleaseD3D10ObjectsKHR_t( cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, cl_uint num_events_in_wait_list, const cl_event* event_wait_list, - cl_event* event) CL_API_SUFFIX__VERSION_1_0; + cl_event* event); + +typedef clEnqueueReleaseD3D10ObjectsKHR_t * +clEnqueueReleaseD3D10ObjectsKHR_fn CL_API_SUFFIX__VERSION_1_0; #if !defined(CL_NO_ICD_DISPATCH_EXTENSION_PROTOTYPES) @@ -210,16 +231,22 @@ clEnqueueReleaseD3D10ObjectsKHR( #define CL_INTEL_SHARING_FORMAT_QUERY_D3D10_EXTENSION_NAME \ "cl_intel_sharing_format_query_d3d10" + +#define CL_INTEL_SHARING_FORMAT_QUERY_D3D10_EXTENSION_VERSION CL_MAKE_VERSION(0, 0, 0) + /* when cl_khr_d3d10_sharing is supported */ -typedef cl_int (CL_API_CALL * -clGetSupportedD3D10TextureFormatsINTEL_fn)( +typedef cl_int CL_API_CALL +clGetSupportedD3D10TextureFormatsINTEL_t( cl_context context, cl_mem_flags flags, cl_mem_object_type image_type, cl_uint num_entries, DXGI_FORMAT* d3d10_formats, - cl_uint* num_texture_formats) ; + cl_uint* num_texture_formats); + +typedef clGetSupportedD3D10TextureFormatsINTEL_t * +clGetSupportedD3D10TextureFormatsINTEL_fn ; #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) diff --git a/deps/OpenCL-Headers/CL/cl_d3d11.h b/deps/OpenCL-Headers/CL/cl_d3d11.h index 6a6af21dc..384c8f428 100644 --- a/deps/OpenCL-Headers/CL/cl_d3d11.h +++ b/deps/OpenCL-Headers/CL/cl_d3d11.h @@ -65,6 +65,9 @@ extern "C" { #define CL_KHR_D3D11_SHARING_EXTENSION_NAME \ "cl_khr_d3d11_sharing" + +#define CL_KHR_D3D11_SHARING_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + typedef cl_uint cl_d3d11_device_source_khr; typedef cl_uint cl_d3d11_device_set_khr; @@ -97,56 +100,74 @@ typedef cl_uint cl_d3d11_device_set_khr; #define CL_COMMAND_RELEASE_D3D11_OBJECTS_KHR 0x4021 -typedef cl_int (CL_API_CALL * -clGetDeviceIDsFromD3D11KHR_fn)( +typedef cl_int CL_API_CALL +clGetDeviceIDsFromD3D11KHR_t( cl_platform_id platform, cl_d3d11_device_source_khr d3d_device_source, void* d3d_object, cl_d3d11_device_set_khr d3d_device_set, cl_uint num_entries, cl_device_id* devices, - cl_uint* num_devices) CL_API_SUFFIX__VERSION_1_2; + cl_uint* num_devices); -typedef cl_mem (CL_API_CALL * -clCreateFromD3D11BufferKHR_fn)( +typedef clGetDeviceIDsFromD3D11KHR_t * +clGetDeviceIDsFromD3D11KHR_fn CL_API_SUFFIX__VERSION_1_2; + +typedef cl_mem CL_API_CALL +clCreateFromD3D11BufferKHR_t( cl_context context, cl_mem_flags flags, ID3D11Buffer* resource, - cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2; + cl_int* errcode_ret); -typedef cl_mem (CL_API_CALL * -clCreateFromD3D11Texture2DKHR_fn)( +typedef clCreateFromD3D11BufferKHR_t * +clCreateFromD3D11BufferKHR_fn CL_API_SUFFIX__VERSION_1_2; + +typedef cl_mem CL_API_CALL +clCreateFromD3D11Texture2DKHR_t( cl_context context, cl_mem_flags flags, ID3D11Texture2D* resource, UINT subresource, - cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2; + cl_int* errcode_ret); -typedef cl_mem (CL_API_CALL * -clCreateFromD3D11Texture3DKHR_fn)( +typedef clCreateFromD3D11Texture2DKHR_t * +clCreateFromD3D11Texture2DKHR_fn CL_API_SUFFIX__VERSION_1_2; + +typedef cl_mem CL_API_CALL +clCreateFromD3D11Texture3DKHR_t( cl_context context, cl_mem_flags flags, ID3D11Texture3D* resource, UINT subresource, - cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2; + cl_int* errcode_ret); -typedef cl_int (CL_API_CALL * -clEnqueueAcquireD3D11ObjectsKHR_fn)( +typedef clCreateFromD3D11Texture3DKHR_t * +clCreateFromD3D11Texture3DKHR_fn CL_API_SUFFIX__VERSION_1_2; + +typedef cl_int CL_API_CALL +clEnqueueAcquireD3D11ObjectsKHR_t( cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, cl_uint num_events_in_wait_list, const cl_event* event_wait_list, - cl_event* event) CL_API_SUFFIX__VERSION_1_2; + cl_event* event); -typedef cl_int (CL_API_CALL * -clEnqueueReleaseD3D11ObjectsKHR_fn)( +typedef clEnqueueAcquireD3D11ObjectsKHR_t * +clEnqueueAcquireD3D11ObjectsKHR_fn CL_API_SUFFIX__VERSION_1_2; + +typedef cl_int CL_API_CALL +clEnqueueReleaseD3D11ObjectsKHR_t( cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, cl_uint num_events_in_wait_list, const cl_event* event_wait_list, - cl_event* event) CL_API_SUFFIX__VERSION_1_2; + cl_event* event); + +typedef clEnqueueReleaseD3D11ObjectsKHR_t * +clEnqueueReleaseD3D11ObjectsKHR_fn CL_API_SUFFIX__VERSION_1_2; #if !defined(CL_NO_ICD_DISPATCH_EXTENSION_PROTOTYPES) @@ -210,17 +231,23 @@ clEnqueueReleaseD3D11ObjectsKHR( #define CL_INTEL_SHARING_FORMAT_QUERY_D3D11_EXTENSION_NAME \ "cl_intel_sharing_format_query_d3d11" + +#define CL_INTEL_SHARING_FORMAT_QUERY_D3D11_EXTENSION_VERSION CL_MAKE_VERSION(0, 0, 0) + /* when cl_khr_d3d11_sharing is supported */ -typedef cl_int (CL_API_CALL * -clGetSupportedD3D11TextureFormatsINTEL_fn)( +typedef cl_int CL_API_CALL +clGetSupportedD3D11TextureFormatsINTEL_t( cl_context context, cl_mem_flags flags, cl_mem_object_type image_type, cl_uint plane, cl_uint num_entries, DXGI_FORMAT* d3d11_formats, - cl_uint* num_texture_formats) ; + cl_uint* num_texture_formats); + +typedef clGetSupportedD3D11TextureFormatsINTEL_t * +clGetSupportedD3D11TextureFormatsINTEL_fn ; #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) diff --git a/deps/OpenCL-Headers/CL/cl_dx9_media_sharing.h b/deps/OpenCL-Headers/CL/cl_dx9_media_sharing.h index e7f8c452e..b079379d0 100644 --- a/deps/OpenCL-Headers/CL/cl_dx9_media_sharing.h +++ b/deps/OpenCL-Headers/CL/cl_dx9_media_sharing.h @@ -67,6 +67,9 @@ extern "C" { #define CL_KHR_DX9_MEDIA_SHARING_EXTENSION_NAME \ "cl_khr_dx9_media_sharing" + +#define CL_KHR_DX9_MEDIA_SHARING_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + typedef cl_uint cl_dx9_media_adapter_type_khr; typedef cl_uint cl_dx9_media_adapter_set_khr; @@ -110,8 +113,8 @@ typedef struct _cl_dx9_surface_info_khr { #define CL_COMMAND_RELEASE_DX9_MEDIA_SURFACES_KHR 0x202C -typedef cl_int (CL_API_CALL * -clGetDeviceIDsFromDX9MediaAdapterKHR_fn)( +typedef cl_int CL_API_CALL +clGetDeviceIDsFromDX9MediaAdapterKHR_t( cl_platform_id platform, cl_uint num_media_adapters, cl_dx9_media_adapter_type_khr* media_adapter_type, @@ -119,34 +122,46 @@ clGetDeviceIDsFromDX9MediaAdapterKHR_fn)( cl_dx9_media_adapter_set_khr media_adapter_set, cl_uint num_entries, cl_device_id* devices, - cl_uint* num_devices) CL_API_SUFFIX__VERSION_1_2; + cl_uint* num_devices); -typedef cl_mem (CL_API_CALL * -clCreateFromDX9MediaSurfaceKHR_fn)( +typedef clGetDeviceIDsFromDX9MediaAdapterKHR_t * +clGetDeviceIDsFromDX9MediaAdapterKHR_fn CL_API_SUFFIX__VERSION_1_2; + +typedef cl_mem CL_API_CALL +clCreateFromDX9MediaSurfaceKHR_t( cl_context context, cl_mem_flags flags, cl_dx9_media_adapter_type_khr adapter_type, void* surface_info, cl_uint plane, - cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2; + cl_int* errcode_ret); -typedef cl_int (CL_API_CALL * -clEnqueueAcquireDX9MediaSurfacesKHR_fn)( +typedef clCreateFromDX9MediaSurfaceKHR_t * +clCreateFromDX9MediaSurfaceKHR_fn CL_API_SUFFIX__VERSION_1_2; + +typedef cl_int CL_API_CALL +clEnqueueAcquireDX9MediaSurfacesKHR_t( cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, cl_uint num_events_in_wait_list, const cl_event* event_wait_list, - cl_event* event) CL_API_SUFFIX__VERSION_1_2; + cl_event* event); -typedef cl_int (CL_API_CALL * -clEnqueueReleaseDX9MediaSurfacesKHR_fn)( +typedef clEnqueueAcquireDX9MediaSurfacesKHR_t * +clEnqueueAcquireDX9MediaSurfacesKHR_fn CL_API_SUFFIX__VERSION_1_2; + +typedef cl_int CL_API_CALL +clEnqueueReleaseDX9MediaSurfacesKHR_t( cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, cl_uint num_events_in_wait_list, const cl_event* event_wait_list, - cl_event* event) CL_API_SUFFIX__VERSION_1_2; + cl_event* event); + +typedef clEnqueueReleaseDX9MediaSurfacesKHR_t * +clEnqueueReleaseDX9MediaSurfacesKHR_fn CL_API_SUFFIX__VERSION_1_2; #if !defined(CL_NO_ICD_DISPATCH_EXTENSION_PROTOTYPES) @@ -197,6 +212,9 @@ clEnqueueReleaseDX9MediaSurfacesKHR( #define CL_INTEL_DX9_MEDIA_SHARING_EXTENSION_NAME \ "cl_intel_dx9_media_sharing" + +#define CL_INTEL_DX9_MEDIA_SHARING_EXTENSION_VERSION CL_MAKE_VERSION(0, 0, 0) + typedef cl_uint cl_dx9_device_source_intel; typedef cl_uint cl_dx9_device_set_intel; @@ -232,42 +250,54 @@ typedef cl_uint cl_dx9_device_set_intel; #define CL_COMMAND_RELEASE_DX9_OBJECTS_INTEL 0x402B -typedef cl_int (CL_API_CALL * -clGetDeviceIDsFromDX9INTEL_fn)( +typedef cl_int CL_API_CALL +clGetDeviceIDsFromDX9INTEL_t( cl_platform_id platform, cl_dx9_device_source_intel dx9_device_source, void* dx9_object, cl_dx9_device_set_intel dx9_device_set, cl_uint num_entries, cl_device_id* devices, - cl_uint* num_devices) CL_API_SUFFIX__VERSION_1_1; + cl_uint* num_devices); -typedef cl_mem (CL_API_CALL * -clCreateFromDX9MediaSurfaceINTEL_fn)( +typedef clGetDeviceIDsFromDX9INTEL_t * +clGetDeviceIDsFromDX9INTEL_fn CL_API_SUFFIX__VERSION_1_1; + +typedef cl_mem CL_API_CALL +clCreateFromDX9MediaSurfaceINTEL_t( cl_context context, cl_mem_flags flags, IDirect3DSurface9* resource, HANDLE sharedHandle, UINT plane, - cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_1; + cl_int* errcode_ret); -typedef cl_int (CL_API_CALL * -clEnqueueAcquireDX9ObjectsINTEL_fn)( +typedef clCreateFromDX9MediaSurfaceINTEL_t * +clCreateFromDX9MediaSurfaceINTEL_fn CL_API_SUFFIX__VERSION_1_1; + +typedef cl_int CL_API_CALL +clEnqueueAcquireDX9ObjectsINTEL_t( cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, cl_uint num_events_in_wait_list, const cl_event* event_wait_list, - cl_event* event) CL_API_SUFFIX__VERSION_1_1; + cl_event* event); -typedef cl_int (CL_API_CALL * -clEnqueueReleaseDX9ObjectsINTEL_fn)( +typedef clEnqueueAcquireDX9ObjectsINTEL_t * +clEnqueueAcquireDX9ObjectsINTEL_fn CL_API_SUFFIX__VERSION_1_1; + +typedef cl_int CL_API_CALL +clEnqueueReleaseDX9ObjectsINTEL_t( cl_command_queue command_queue, cl_uint num_objects, cl_mem* mem_objects, cl_uint num_events_in_wait_list, const cl_event* event_wait_list, - cl_event* event) CL_API_SUFFIX__VERSION_1_1; + cl_event* event); + +typedef clEnqueueReleaseDX9ObjectsINTEL_t * +clEnqueueReleaseDX9ObjectsINTEL_fn CL_API_SUFFIX__VERSION_1_1; #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) @@ -317,17 +347,23 @@ clEnqueueReleaseDX9ObjectsINTEL( #define CL_INTEL_SHARING_FORMAT_QUERY_DX9_EXTENSION_NAME \ "cl_intel_sharing_format_query_dx9" + +#define CL_INTEL_SHARING_FORMAT_QUERY_DX9_EXTENSION_VERSION CL_MAKE_VERSION(0, 0, 0) + /* when cl_khr_dx9_media_sharing or cl_intel_dx9_media_sharing is supported */ -typedef cl_int (CL_API_CALL * -clGetSupportedDX9MediaSurfaceFormatsINTEL_fn)( +typedef cl_int CL_API_CALL +clGetSupportedDX9MediaSurfaceFormatsINTEL_t( cl_context context, cl_mem_flags flags, cl_mem_object_type image_type, cl_uint plane, cl_uint num_entries, D3DFORMAT* dx9_formats, - cl_uint* num_surface_formats) ; + cl_uint* num_surface_formats); + +typedef clGetSupportedDX9MediaSurfaceFormatsINTEL_t * +clGetSupportedDX9MediaSurfaceFormatsINTEL_fn ; #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) diff --git a/deps/OpenCL-Headers/CL/cl_egl.h b/deps/OpenCL-Headers/CL/cl_egl.h index e2db9025d..68aefec76 100644 --- a/deps/OpenCL-Headers/CL/cl_egl.h +++ b/deps/OpenCL-Headers/CL/cl_egl.h @@ -51,6 +51,9 @@ extern "C" { #define CL_KHR_EGL_IMAGE_EXTENSION_NAME \ "cl_khr_egl_image" + +#define CL_KHR_EGL_IMAGE_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + /* Command type for events created with clEnqueueAcquireEGLObjectsKHR */ #define CL_COMMAND_EGL_FENCE_SYNC_OBJECT_KHR 0x202F #define CL_COMMAND_ACQUIRE_EGL_OBJECTS_KHR 0x202D @@ -70,32 +73,41 @@ typedef void* CLeglDisplayKHR; typedef intptr_t cl_egl_image_properties_khr; -typedef cl_mem (CL_API_CALL * -clCreateFromEGLImageKHR_fn)( +typedef cl_mem CL_API_CALL +clCreateFromEGLImageKHR_t( cl_context context, CLeglDisplayKHR egldisplay, CLeglImageKHR eglimage, cl_mem_flags flags, const cl_egl_image_properties_khr* properties, - cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0; + cl_int* errcode_ret); -typedef cl_int (CL_API_CALL * -clEnqueueAcquireEGLObjectsKHR_fn)( +typedef clCreateFromEGLImageKHR_t * +clCreateFromEGLImageKHR_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_int CL_API_CALL +clEnqueueAcquireEGLObjectsKHR_t( cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, cl_uint num_events_in_wait_list, const cl_event* event_wait_list, - cl_event* event) CL_API_SUFFIX__VERSION_1_0; + cl_event* event); -typedef cl_int (CL_API_CALL * -clEnqueueReleaseEGLObjectsKHR_fn)( +typedef clEnqueueAcquireEGLObjectsKHR_t * +clEnqueueAcquireEGLObjectsKHR_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_int CL_API_CALL +clEnqueueReleaseEGLObjectsKHR_t( cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, cl_uint num_events_in_wait_list, const cl_event* event_wait_list, - cl_event* event) CL_API_SUFFIX__VERSION_1_0; + cl_event* event); + +typedef clEnqueueReleaseEGLObjectsKHR_t * +clEnqueueReleaseEGLObjectsKHR_fn CL_API_SUFFIX__VERSION_1_0; #if !defined(CL_NO_ICD_DISPATCH_EXTENSION_PROTOTYPES) @@ -135,6 +147,9 @@ clEnqueueReleaseEGLObjectsKHR( #define CL_KHR_EGL_EVENT_EXTENSION_NAME \ "cl_khr_egl_event" + +#define CL_KHR_EGL_EVENT_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + /* CLeglDisplayKHR is an opaque handle to an EGLDisplay */ /* type CLeglDisplayKHR */ @@ -142,12 +157,15 @@ clEnqueueReleaseEGLObjectsKHR( typedef void* CLeglSyncKHR; -typedef cl_event (CL_API_CALL * -clCreateEventFromEGLSyncKHR_fn)( +typedef cl_event CL_API_CALL +clCreateEventFromEGLSyncKHR_t( cl_context context, CLeglSyncKHR sync, CLeglDisplayKHR display, - cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0; + cl_int* errcode_ret); + +typedef clCreateEventFromEGLSyncKHR_t * +clCreateEventFromEGLSyncKHR_fn CL_API_SUFFIX__VERSION_1_0; #if !defined(CL_NO_ICD_DISPATCH_EXTENSION_PROTOTYPES) diff --git a/deps/OpenCL-Headers/CL/cl_ext.h b/deps/OpenCL-Headers/CL/cl_ext.h index 12ebd0437..ffefe075c 100644 --- a/deps/OpenCL-Headers/CL/cl_ext.h +++ b/deps/OpenCL-Headers/CL/cl_ext.h @@ -45,12 +45,17 @@ extern "C" { #endif /*************************************************************** -* cl_khr_command_buffer +* cl_khr_command_buffer (beta) ***************************************************************/ +#if defined(CL_ENABLE_BETA_EXTENSIONS) + #define cl_khr_command_buffer 1 #define CL_KHR_COMMAND_BUFFER_EXTENSION_NAME \ "cl_khr_command_buffer" + +#define CL_KHR_COMMAND_BUFFER_EXTENSION_VERSION CL_MAKE_VERSION(0, 9, 7) + typedef cl_bitfield cl_device_command_buffer_capabilities_khr; typedef struct _cl_command_buffer_khr* cl_command_buffer_khr; typedef cl_uint cl_sync_point_khr; @@ -58,18 +63,18 @@ typedef cl_uint cl_command_buffer_info_khr; typedef cl_uint cl_command_buffer_state_khr; typedef cl_properties cl_command_buffer_properties_khr; typedef cl_bitfield cl_command_buffer_flags_khr; -typedef cl_properties cl_ndrange_kernel_command_properties_khr; +typedef cl_properties cl_command_properties_khr; typedef struct _cl_mutable_command_khr* cl_mutable_command_khr; /* cl_device_info */ #define CL_DEVICE_COMMAND_BUFFER_CAPABILITIES_KHR 0x12A9 +#define CL_DEVICE_COMMAND_BUFFER_SUPPORTED_QUEUE_PROPERTIES_KHR 0x129A #define CL_DEVICE_COMMAND_BUFFER_REQUIRED_QUEUE_PROPERTIES_KHR 0x12AA /* cl_device_command_buffer_capabilities_khr - bitfield */ #define CL_COMMAND_BUFFER_CAPABILITY_KERNEL_PRINTF_KHR (1 << 0) #define CL_COMMAND_BUFFER_CAPABILITY_DEVICE_SIDE_ENQUEUE_KHR (1 << 1) #define CL_COMMAND_BUFFER_CAPABILITY_SIMULTANEOUS_USE_KHR (1 << 2) -#define CL_COMMAND_BUFFER_CAPABILITY_OUT_OF_ORDER_KHR (1 << 3) /* cl_command_buffer_properties_khr */ #define CL_COMMAND_BUFFER_FLAGS_KHR 0x1293 @@ -94,53 +99,72 @@ typedef struct _cl_mutable_command_khr* cl_mutable_command_khr; #define CL_COMMAND_BUFFER_STATE_RECORDING_KHR 0 #define CL_COMMAND_BUFFER_STATE_EXECUTABLE_KHR 1 #define CL_COMMAND_BUFFER_STATE_PENDING_KHR 2 -#define CL_COMMAND_BUFFER_STATE_INVALID_KHR 3 /* cl_command_type */ #define CL_COMMAND_COMMAND_BUFFER_KHR 0x12A8 -typedef cl_command_buffer_khr (CL_API_CALL * -clCreateCommandBufferKHR_fn)( +typedef cl_command_buffer_khr CL_API_CALL +clCreateCommandBufferKHR_t( cl_uint num_queues, const cl_command_queue* queues, const cl_command_buffer_properties_khr* properties, - cl_int* errcode_ret) ; + cl_int* errcode_ret); -typedef cl_int (CL_API_CALL * -clFinalizeCommandBufferKHR_fn)( - cl_command_buffer_khr command_buffer) ; +typedef clCreateCommandBufferKHR_t * +clCreateCommandBufferKHR_fn ; -typedef cl_int (CL_API_CALL * -clRetainCommandBufferKHR_fn)( - cl_command_buffer_khr command_buffer) ; +typedef cl_int CL_API_CALL +clFinalizeCommandBufferKHR_t( + cl_command_buffer_khr command_buffer); -typedef cl_int (CL_API_CALL * -clReleaseCommandBufferKHR_fn)( - cl_command_buffer_khr command_buffer) ; +typedef clFinalizeCommandBufferKHR_t * +clFinalizeCommandBufferKHR_fn ; -typedef cl_int (CL_API_CALL * -clEnqueueCommandBufferKHR_fn)( +typedef cl_int CL_API_CALL +clRetainCommandBufferKHR_t( + cl_command_buffer_khr command_buffer); + +typedef clRetainCommandBufferKHR_t * +clRetainCommandBufferKHR_fn ; + +typedef cl_int CL_API_CALL +clReleaseCommandBufferKHR_t( + cl_command_buffer_khr command_buffer); + +typedef clReleaseCommandBufferKHR_t * +clReleaseCommandBufferKHR_fn ; + +typedef cl_int CL_API_CALL +clEnqueueCommandBufferKHR_t( cl_uint num_queues, cl_command_queue* queues, cl_command_buffer_khr command_buffer, cl_uint num_events_in_wait_list, const cl_event* event_wait_list, - cl_event* event) ; + cl_event* event); -typedef cl_int (CL_API_CALL * -clCommandBarrierWithWaitListKHR_fn)( +typedef clEnqueueCommandBufferKHR_t * +clEnqueueCommandBufferKHR_fn ; + +typedef cl_int CL_API_CALL +clCommandBarrierWithWaitListKHR_t( cl_command_buffer_khr command_buffer, cl_command_queue command_queue, + const cl_command_properties_khr* properties, cl_uint num_sync_points_in_wait_list, const cl_sync_point_khr* sync_point_wait_list, cl_sync_point_khr* sync_point, - cl_mutable_command_khr* mutable_handle) ; + cl_mutable_command_khr* mutable_handle); -typedef cl_int (CL_API_CALL * -clCommandCopyBufferKHR_fn)( +typedef clCommandBarrierWithWaitListKHR_t * +clCommandBarrierWithWaitListKHR_fn ; + +typedef cl_int CL_API_CALL +clCommandCopyBufferKHR_t( cl_command_buffer_khr command_buffer, cl_command_queue command_queue, + const cl_command_properties_khr* properties, cl_mem src_buffer, cl_mem dst_buffer, size_t src_offset, @@ -149,12 +173,16 @@ clCommandCopyBufferKHR_fn)( cl_uint num_sync_points_in_wait_list, const cl_sync_point_khr* sync_point_wait_list, cl_sync_point_khr* sync_point, - cl_mutable_command_khr* mutable_handle) ; + cl_mutable_command_khr* mutable_handle); -typedef cl_int (CL_API_CALL * -clCommandCopyBufferRectKHR_fn)( +typedef clCommandCopyBufferKHR_t * +clCommandCopyBufferKHR_fn ; + +typedef cl_int CL_API_CALL +clCommandCopyBufferRectKHR_t( cl_command_buffer_khr command_buffer, cl_command_queue command_queue, + const cl_command_properties_khr* properties, cl_mem src_buffer, cl_mem dst_buffer, const size_t* src_origin, @@ -167,12 +195,16 @@ clCommandCopyBufferRectKHR_fn)( cl_uint num_sync_points_in_wait_list, const cl_sync_point_khr* sync_point_wait_list, cl_sync_point_khr* sync_point, - cl_mutable_command_khr* mutable_handle) ; + cl_mutable_command_khr* mutable_handle); -typedef cl_int (CL_API_CALL * -clCommandCopyBufferToImageKHR_fn)( +typedef clCommandCopyBufferRectKHR_t * +clCommandCopyBufferRectKHR_fn ; + +typedef cl_int CL_API_CALL +clCommandCopyBufferToImageKHR_t( cl_command_buffer_khr command_buffer, cl_command_queue command_queue, + const cl_command_properties_khr* properties, cl_mem src_buffer, cl_mem dst_image, size_t src_offset, @@ -181,12 +213,16 @@ clCommandCopyBufferToImageKHR_fn)( cl_uint num_sync_points_in_wait_list, const cl_sync_point_khr* sync_point_wait_list, cl_sync_point_khr* sync_point, - cl_mutable_command_khr* mutable_handle) ; + cl_mutable_command_khr* mutable_handle); -typedef cl_int (CL_API_CALL * -clCommandCopyImageKHR_fn)( +typedef clCommandCopyBufferToImageKHR_t * +clCommandCopyBufferToImageKHR_fn ; + +typedef cl_int CL_API_CALL +clCommandCopyImageKHR_t( cl_command_buffer_khr command_buffer, cl_command_queue command_queue, + const cl_command_properties_khr* properties, cl_mem src_image, cl_mem dst_image, const size_t* src_origin, @@ -195,12 +231,16 @@ clCommandCopyImageKHR_fn)( cl_uint num_sync_points_in_wait_list, const cl_sync_point_khr* sync_point_wait_list, cl_sync_point_khr* sync_point, - cl_mutable_command_khr* mutable_handle) ; + cl_mutable_command_khr* mutable_handle); -typedef cl_int (CL_API_CALL * -clCommandCopyImageToBufferKHR_fn)( +typedef clCommandCopyImageKHR_t * +clCommandCopyImageKHR_fn ; + +typedef cl_int CL_API_CALL +clCommandCopyImageToBufferKHR_t( cl_command_buffer_khr command_buffer, cl_command_queue command_queue, + const cl_command_properties_khr* properties, cl_mem src_image, cl_mem dst_buffer, const size_t* src_origin, @@ -209,12 +249,16 @@ clCommandCopyImageToBufferKHR_fn)( cl_uint num_sync_points_in_wait_list, const cl_sync_point_khr* sync_point_wait_list, cl_sync_point_khr* sync_point, - cl_mutable_command_khr* mutable_handle) ; + cl_mutable_command_khr* mutable_handle); -typedef cl_int (CL_API_CALL * -clCommandFillBufferKHR_fn)( +typedef clCommandCopyImageToBufferKHR_t * +clCommandCopyImageToBufferKHR_fn ; + +typedef cl_int CL_API_CALL +clCommandFillBufferKHR_t( cl_command_buffer_khr command_buffer, cl_command_queue command_queue, + const cl_command_properties_khr* properties, cl_mem buffer, const void* pattern, size_t pattern_size, @@ -223,12 +267,16 @@ clCommandFillBufferKHR_fn)( cl_uint num_sync_points_in_wait_list, const cl_sync_point_khr* sync_point_wait_list, cl_sync_point_khr* sync_point, - cl_mutable_command_khr* mutable_handle) ; + cl_mutable_command_khr* mutable_handle); -typedef cl_int (CL_API_CALL * -clCommandFillImageKHR_fn)( +typedef clCommandFillBufferKHR_t * +clCommandFillBufferKHR_fn ; + +typedef cl_int CL_API_CALL +clCommandFillImageKHR_t( cl_command_buffer_khr command_buffer, cl_command_queue command_queue, + const cl_command_properties_khr* properties, cl_mem image, const void* fill_color, const size_t* origin, @@ -236,13 +284,16 @@ clCommandFillImageKHR_fn)( cl_uint num_sync_points_in_wait_list, const cl_sync_point_khr* sync_point_wait_list, cl_sync_point_khr* sync_point, - cl_mutable_command_khr* mutable_handle) ; + cl_mutable_command_khr* mutable_handle); -typedef cl_int (CL_API_CALL * -clCommandNDRangeKernelKHR_fn)( +typedef clCommandFillImageKHR_t * +clCommandFillImageKHR_fn ; + +typedef cl_int CL_API_CALL +clCommandNDRangeKernelKHR_t( cl_command_buffer_khr command_buffer, cl_command_queue command_queue, - const cl_ndrange_kernel_command_properties_khr* properties, + const cl_command_properties_khr* properties, cl_kernel kernel, cl_uint work_dim, const size_t* global_work_offset, @@ -251,15 +302,21 @@ clCommandNDRangeKernelKHR_fn)( cl_uint num_sync_points_in_wait_list, const cl_sync_point_khr* sync_point_wait_list, cl_sync_point_khr* sync_point, - cl_mutable_command_khr* mutable_handle) ; + cl_mutable_command_khr* mutable_handle); -typedef cl_int (CL_API_CALL * -clGetCommandBufferInfoKHR_fn)( +typedef clCommandNDRangeKernelKHR_t * +clCommandNDRangeKernelKHR_fn ; + +typedef cl_int CL_API_CALL +clGetCommandBufferInfoKHR_t( cl_command_buffer_khr command_buffer, cl_command_buffer_info_khr param_name, size_t param_value_size, void* param_value, - size_t* param_value_size_ret) ; + size_t* param_value_size_ret); + +typedef clGetCommandBufferInfoKHR_t * +clGetCommandBufferInfoKHR_fn ; #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) @@ -295,6 +352,7 @@ extern CL_API_ENTRY cl_int CL_API_CALL clCommandBarrierWithWaitListKHR( cl_command_buffer_khr command_buffer, cl_command_queue command_queue, + const cl_command_properties_khr* properties, cl_uint num_sync_points_in_wait_list, const cl_sync_point_khr* sync_point_wait_list, cl_sync_point_khr* sync_point, @@ -304,6 +362,7 @@ extern CL_API_ENTRY cl_int CL_API_CALL clCommandCopyBufferKHR( cl_command_buffer_khr command_buffer, cl_command_queue command_queue, + const cl_command_properties_khr* properties, cl_mem src_buffer, cl_mem dst_buffer, size_t src_offset, @@ -318,6 +377,7 @@ extern CL_API_ENTRY cl_int CL_API_CALL clCommandCopyBufferRectKHR( cl_command_buffer_khr command_buffer, cl_command_queue command_queue, + const cl_command_properties_khr* properties, cl_mem src_buffer, cl_mem dst_buffer, const size_t* src_origin, @@ -336,6 +396,7 @@ extern CL_API_ENTRY cl_int CL_API_CALL clCommandCopyBufferToImageKHR( cl_command_buffer_khr command_buffer, cl_command_queue command_queue, + const cl_command_properties_khr* properties, cl_mem src_buffer, cl_mem dst_image, size_t src_offset, @@ -350,6 +411,7 @@ extern CL_API_ENTRY cl_int CL_API_CALL clCommandCopyImageKHR( cl_command_buffer_khr command_buffer, cl_command_queue command_queue, + const cl_command_properties_khr* properties, cl_mem src_image, cl_mem dst_image, const size_t* src_origin, @@ -364,6 +426,7 @@ extern CL_API_ENTRY cl_int CL_API_CALL clCommandCopyImageToBufferKHR( cl_command_buffer_khr command_buffer, cl_command_queue command_queue, + const cl_command_properties_khr* properties, cl_mem src_image, cl_mem dst_buffer, const size_t* src_origin, @@ -378,6 +441,7 @@ extern CL_API_ENTRY cl_int CL_API_CALL clCommandFillBufferKHR( cl_command_buffer_khr command_buffer, cl_command_queue command_queue, + const cl_command_properties_khr* properties, cl_mem buffer, const void* pattern, size_t pattern_size, @@ -392,6 +456,7 @@ extern CL_API_ENTRY cl_int CL_API_CALL clCommandFillImageKHR( cl_command_buffer_khr command_buffer, cl_command_queue command_queue, + const cl_command_properties_khr* properties, cl_mem image, const void* fill_color, const size_t* origin, @@ -405,7 +470,7 @@ extern CL_API_ENTRY cl_int CL_API_CALL clCommandNDRangeKernelKHR( cl_command_buffer_khr command_buffer, cl_command_queue command_queue, - const cl_ndrange_kernel_command_properties_khr* properties, + const cl_command_properties_khr* properties, cl_kernel kernel, cl_uint work_dim, const size_t* global_work_offset, @@ -426,13 +491,86 @@ clGetCommandBufferInfoKHR( #endif /* !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) */ +/* From version 0.9.4 of the extension */ + +typedef cl_int CL_API_CALL +clCommandSVMMemcpyKHR_t( + cl_command_buffer_khr command_buffer, + cl_command_queue command_queue, + const cl_command_properties_khr* properties, + void* dst_ptr, + const void* src_ptr, + size_t size, + cl_uint num_sync_points_in_wait_list, + const cl_sync_point_khr* sync_point_wait_list, + cl_sync_point_khr* sync_point, + cl_mutable_command_khr* mutable_handle); + +typedef clCommandSVMMemcpyKHR_t * +clCommandSVMMemcpyKHR_fn CL_API_SUFFIX__VERSION_2_0; + +typedef cl_int CL_API_CALL +clCommandSVMMemFillKHR_t( + cl_command_buffer_khr command_buffer, + cl_command_queue command_queue, + const cl_command_properties_khr* properties, + void* svm_ptr, + const void* pattern, + size_t pattern_size, + size_t size, + cl_uint num_sync_points_in_wait_list, + const cl_sync_point_khr* sync_point_wait_list, + cl_sync_point_khr* sync_point, + cl_mutable_command_khr* mutable_handle); + +typedef clCommandSVMMemFillKHR_t * +clCommandSVMMemFillKHR_fn CL_API_SUFFIX__VERSION_2_0; + +#if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) + +extern CL_API_ENTRY cl_int CL_API_CALL +clCommandSVMMemcpyKHR( + cl_command_buffer_khr command_buffer, + cl_command_queue command_queue, + const cl_command_properties_khr* properties, + void* dst_ptr, + const void* src_ptr, + size_t size, + cl_uint num_sync_points_in_wait_list, + const cl_sync_point_khr* sync_point_wait_list, + cl_sync_point_khr* sync_point, + cl_mutable_command_khr* mutable_handle) CL_API_SUFFIX__VERSION_2_0; + +extern CL_API_ENTRY cl_int CL_API_CALL +clCommandSVMMemFillKHR( + cl_command_buffer_khr command_buffer, + cl_command_queue command_queue, + const cl_command_properties_khr* properties, + void* svm_ptr, + const void* pattern, + size_t pattern_size, + size_t size, + cl_uint num_sync_points_in_wait_list, + const cl_sync_point_khr* sync_point_wait_list, + cl_sync_point_khr* sync_point, + cl_mutable_command_khr* mutable_handle) CL_API_SUFFIX__VERSION_2_0; + +#endif /* !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) */ + +#endif /* defined(CL_ENABLE_BETA_EXTENSIONS) */ + /*************************************************************** -* cl_khr_command_buffer_multi_device +* cl_khr_command_buffer_multi_device (beta) ***************************************************************/ +#if defined(CL_ENABLE_BETA_EXTENSIONS) + #define cl_khr_command_buffer_multi_device 1 #define CL_KHR_COMMAND_BUFFER_MULTI_DEVICE_EXTENSION_NAME \ "cl_khr_command_buffer_multi_device" + +#define CL_KHR_COMMAND_BUFFER_MULTI_DEVICE_EXTENSION_VERSION CL_MAKE_VERSION(0, 9, 2) + typedef cl_bitfield cl_platform_command_buffer_capabilities_khr; /* cl_platform_info */ @@ -454,8 +592,8 @@ typedef cl_bitfield cl_platform_command_buffer_capabilities_khr; #define CL_COMMAND_BUFFER_DEVICE_SIDE_SYNC_KHR (1 << 2) -typedef cl_command_buffer_khr (CL_API_CALL * -clRemapCommandBufferKHR_fn)( +typedef cl_command_buffer_khr CL_API_CALL +clRemapCommandBufferKHR_t( cl_command_buffer_khr command_buffer, cl_bool automatic, cl_uint num_queues, @@ -463,7 +601,10 @@ clRemapCommandBufferKHR_fn)( cl_uint num_handles, const cl_mutable_command_khr* handles, cl_mutable_command_khr* handles_ret, - cl_int* errcode_ret) ; + cl_int* errcode_ret); + +typedef clRemapCommandBufferKHR_t * +clRemapCommandBufferKHR_fn ; #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) @@ -480,14 +621,21 @@ clRemapCommandBufferKHR( #endif /* !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) */ +#endif /* defined(CL_ENABLE_BETA_EXTENSIONS) */ + /*************************************************************** -* cl_khr_command_buffer_mutable_dispatch +* cl_khr_command_buffer_mutable_dispatch (beta) ***************************************************************/ +#if defined(CL_ENABLE_BETA_EXTENSIONS) + #define cl_khr_command_buffer_mutable_dispatch 1 #define CL_KHR_COMMAND_BUFFER_MUTABLE_DISPATCH_EXTENSION_NAME \ "cl_khr_command_buffer_mutable_dispatch" -typedef cl_uint cl_command_buffer_structure_type_khr; + +#define CL_KHR_COMMAND_BUFFER_MUTABLE_DISPATCH_EXTENSION_VERSION CL_MAKE_VERSION(0, 9, 3) + +typedef cl_uint cl_command_buffer_update_type_khr; typedef cl_bitfield cl_mutable_dispatch_fields_khr; typedef cl_uint cl_mutable_command_info_khr; typedef struct _cl_mutable_dispatch_arg_khr { @@ -501,8 +649,6 @@ typedef struct _cl_mutable_dispatch_exec_info_khr { const void* param_value; } cl_mutable_dispatch_exec_info_khr; typedef struct _cl_mutable_dispatch_config_khr { - cl_command_buffer_structure_type_khr type; - const void* next; cl_mutable_command_khr command; cl_uint num_args; cl_uint num_svm_args; @@ -515,12 +661,7 @@ typedef struct _cl_mutable_dispatch_config_khr { const size_t* global_work_size; const size_t* local_work_size; } cl_mutable_dispatch_config_khr; -typedef struct _cl_mutable_base_config_khr { - cl_command_buffer_structure_type_khr type; - const void* next; - cl_uint num_mutable_dispatch; - const cl_mutable_dispatch_config_khr* mutable_dispatch_list; -} cl_mutable_base_config_khr; +typedef cl_bitfield cl_mutable_dispatch_asserts_khr; /* cl_command_buffer_flags_khr - bitfield */ #define CL_COMMAND_BUFFER_MUTABLE_KHR (1 << 1) @@ -531,7 +672,7 @@ typedef struct _cl_mutable_base_config_khr { /* cl_device_info */ #define CL_DEVICE_MUTABLE_DISPATCH_CAPABILITIES_KHR 0x12B0 -/* cl_ndrange_kernel_command_properties_khr */ +/* cl_command_properties_khr */ #define CL_MUTABLE_DISPATCH_UPDATABLE_FIELDS_KHR 0x12B1 /* cl_mutable_dispatch_fields_khr - bitfield */ @@ -545,37 +686,55 @@ typedef struct _cl_mutable_base_config_khr { #define CL_MUTABLE_COMMAND_COMMAND_QUEUE_KHR 0x12A0 #define CL_MUTABLE_COMMAND_COMMAND_BUFFER_KHR 0x12A1 #define CL_MUTABLE_COMMAND_COMMAND_TYPE_KHR 0x12AD -#define CL_MUTABLE_DISPATCH_PROPERTIES_ARRAY_KHR 0x12A2 +#define CL_MUTABLE_COMMAND_PROPERTIES_ARRAY_KHR 0x12A2 #define CL_MUTABLE_DISPATCH_KERNEL_KHR 0x12A3 #define CL_MUTABLE_DISPATCH_DIMENSIONS_KHR 0x12A4 #define CL_MUTABLE_DISPATCH_GLOBAL_WORK_OFFSET_KHR 0x12A5 #define CL_MUTABLE_DISPATCH_GLOBAL_WORK_SIZE_KHR 0x12A6 #define CL_MUTABLE_DISPATCH_LOCAL_WORK_SIZE_KHR 0x12A7 -/* cl_command_buffer_structure_type_khr */ -#define CL_STRUCTURE_TYPE_MUTABLE_BASE_CONFIG_KHR 0 -#define CL_STRUCTURE_TYPE_MUTABLE_DISPATCH_CONFIG_KHR 1 +/* cl_command_buffer_update_type_khr */ +#define CL_STRUCTURE_TYPE_MUTABLE_DISPATCH_CONFIG_KHR 0 + +/* cl_command_buffer_properties_khr */ +#define CL_COMMAND_BUFFER_MUTABLE_DISPATCH_ASSERTS_KHR 0x12B7 + +/* cl_command_properties_khr */ +#define CL_MUTABLE_DISPATCH_ASSERTS_KHR 0x12B8 + +/* cl_mutable_dispatch_asserts_khr - bitfield */ +#define CL_MUTABLE_DISPATCH_ASSERT_NO_ADDITIONAL_WORK_GROUPS_KHR (1 << 0) -typedef cl_int (CL_API_CALL * -clUpdateMutableCommandsKHR_fn)( +typedef cl_int CL_API_CALL +clUpdateMutableCommandsKHR_t( cl_command_buffer_khr command_buffer, - const cl_mutable_base_config_khr* mutable_config) ; + cl_uint num_configs, + const cl_command_buffer_update_type_khr* config_types, + const void** configs); -typedef cl_int (CL_API_CALL * -clGetMutableCommandInfoKHR_fn)( +typedef clUpdateMutableCommandsKHR_t * +clUpdateMutableCommandsKHR_fn ; + +typedef cl_int CL_API_CALL +clGetMutableCommandInfoKHR_t( cl_mutable_command_khr command, cl_mutable_command_info_khr param_name, size_t param_value_size, void* param_value, - size_t* param_value_size_ret) ; + size_t* param_value_size_ret); + +typedef clGetMutableCommandInfoKHR_t * +clGetMutableCommandInfoKHR_fn ; #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) extern CL_API_ENTRY cl_int CL_API_CALL clUpdateMutableCommandsKHR( cl_command_buffer_khr command_buffer, - const cl_mutable_base_config_khr* mutable_config) ; + cl_uint num_configs, + const cl_command_buffer_update_type_khr* config_types, + const void** configs) ; extern CL_API_ENTRY cl_int CL_API_CALL clGetMutableCommandInfoKHR( @@ -587,6 +746,8 @@ clGetMutableCommandInfoKHR( #endif /* !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) */ +#endif /* defined(CL_ENABLE_BETA_EXTENSIONS) */ + /*************************************************************** * cl_khr_fp64 ***************************************************************/ @@ -594,6 +755,9 @@ clGetMutableCommandInfoKHR( #define CL_KHR_FP64_EXTENSION_NAME \ "cl_khr_fp64" + +#define CL_KHR_FP64_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + #if !defined(CL_VERSION_1_2) /* cl_device_info - defined in CL.h for OpenCL 1.2 and newer */ #define CL_DEVICE_DOUBLE_FP_CONFIG 0x1032 @@ -607,6 +771,9 @@ clGetMutableCommandInfoKHR( #define CL_KHR_FP16_EXTENSION_NAME \ "cl_khr_fp16" + +#define CL_KHR_FP16_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + /* cl_device_info */ #define CL_DEVICE_HALF_FP_CONFIG 0x1033 @@ -618,11 +785,17 @@ clGetMutableCommandInfoKHR( "cl_APPLE_SetMemObjectDestructor" -typedef cl_int (CL_API_CALL * -clSetMemObjectDestructorAPPLE_fn)( +#define CL_APPLE_SETMEMOBJECTDESTRUCTOR_EXTENSION_VERSION CL_MAKE_VERSION(0, 0, 0) + + +typedef cl_int CL_API_CALL +clSetMemObjectDestructorAPPLE_t( cl_mem memobj, void (CL_CALLBACK* pfn_notify)(cl_mem memobj, void* user_data), - void* user_data) CL_API_SUFFIX__VERSION_1_0; + void* user_data); + +typedef clSetMemObjectDestructorAPPLE_t * +clSetMemObjectDestructorAPPLE_fn CL_API_SUFFIX__VERSION_1_0; #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) @@ -642,26 +815,38 @@ clSetMemObjectDestructorAPPLE( "cl_APPLE_ContextLoggingFunctions" -typedef void (CL_API_CALL * -clLogMessagesToSystemLogAPPLE_fn)( - const char* errstr, - const void* private_info, - size_t cb, - void* user_data) CL_API_SUFFIX__VERSION_1_0; +#define CL_APPLE_CONTEXTLOGGINGFUNCTIONS_EXTENSION_VERSION CL_MAKE_VERSION(0, 0, 0) -typedef void (CL_API_CALL * -clLogMessagesToStdoutAPPLE_fn)( - const char* errstr, - const void* private_info, - size_t cb, - void* user_data) CL_API_SUFFIX__VERSION_1_0; -typedef void (CL_API_CALL * -clLogMessagesToStderrAPPLE_fn)( +typedef void CL_API_CALL +clLogMessagesToSystemLogAPPLE_t( const char* errstr, const void* private_info, size_t cb, - void* user_data) CL_API_SUFFIX__VERSION_1_0; + void* user_data); + +typedef clLogMessagesToSystemLogAPPLE_t * +clLogMessagesToSystemLogAPPLE_fn CL_API_SUFFIX__VERSION_1_0; + +typedef void CL_API_CALL +clLogMessagesToStdoutAPPLE_t( + const char* errstr, + const void* private_info, + size_t cb, + void* user_data); + +typedef clLogMessagesToStdoutAPPLE_t * +clLogMessagesToStdoutAPPLE_fn CL_API_SUFFIX__VERSION_1_0; + +typedef void CL_API_CALL +clLogMessagesToStderrAPPLE_t( + const char* errstr, + const void* private_info, + size_t cb, + void* user_data); + +typedef clLogMessagesToStderrAPPLE_t * +clLogMessagesToStderrAPPLE_fn CL_API_SUFFIX__VERSION_1_0; #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) @@ -695,18 +880,47 @@ clLogMessagesToStderrAPPLE( #define CL_KHR_ICD_EXTENSION_NAME \ "cl_khr_icd" + +#define CL_KHR_ICD_EXTENSION_VERSION CL_MAKE_VERSION(2, 0, 0) + /* cl_platform_info */ #define CL_PLATFORM_ICD_SUFFIX_KHR 0x0920 /* Error codes */ #define CL_PLATFORM_NOT_FOUND_KHR -1001 +/* ICD 2 tag value */ +#if INTPTR_MAX == INT32_MAX +#define CL_ICD2_TAG_KHR ((intptr_t)0x434C3331) +#else +#define CL_ICD2_TAG_KHR ((intptr_t)0x4F50454E434C3331) +#endif -typedef cl_int (CL_API_CALL * -clIcdGetPlatformIDsKHR_fn)( + +typedef cl_int CL_API_CALL +clIcdGetPlatformIDsKHR_t( cl_uint num_entries, cl_platform_id* platforms, - cl_uint* num_platforms) ; + cl_uint* num_platforms); + +typedef clIcdGetPlatformIDsKHR_t * +clIcdGetPlatformIDsKHR_fn ; + +typedef void* CL_API_CALL +clIcdGetFunctionAddressForPlatformKHR_t( + cl_platform_id platform, + const char* func_name); + +typedef clIcdGetFunctionAddressForPlatformKHR_t * +clIcdGetFunctionAddressForPlatformKHR_fn ; + +typedef cl_int CL_API_CALL +clIcdSetPlatformDispatchDataKHR_t( + cl_platform_id platform, + void* dispatch_data); + +typedef clIcdSetPlatformDispatchDataKHR_t * +clIcdSetPlatformDispatchDataKHR_fn ; #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) @@ -716,6 +930,16 @@ clIcdGetPlatformIDsKHR( cl_platform_id* platforms, cl_uint* num_platforms) ; +extern CL_API_ENTRY void* CL_API_CALL +clIcdGetFunctionAddressForPlatformKHR( + cl_platform_id platform, + const char* func_name) ; + +extern CL_API_ENTRY cl_int CL_API_CALL +clIcdSetPlatformDispatchDataKHR( + cl_platform_id platform, + void* dispatch_data) ; + #endif /* !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) */ /*************************************************************** @@ -725,6 +949,9 @@ clIcdGetPlatformIDsKHR( #define CL_KHR_IL_PROGRAM_EXTENSION_NAME \ "cl_khr_il_program" + +#define CL_KHR_IL_PROGRAM_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + /* cl_device_info */ #define CL_DEVICE_IL_VERSION_KHR 0x105B @@ -732,12 +959,15 @@ clIcdGetPlatformIDsKHR( #define CL_PROGRAM_IL_KHR 0x1169 -typedef cl_program (CL_API_CALL * -clCreateProgramWithILKHR_fn)( +typedef cl_program CL_API_CALL +clCreateProgramWithILKHR_t( cl_context context, const void* il, size_t length, - cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2; + cl_int* errcode_ret); + +typedef clCreateProgramWithILKHR_t * +clCreateProgramWithILKHR_fn CL_API_SUFFIX__VERSION_1_2; #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) @@ -757,6 +987,9 @@ clCreateProgramWithILKHR( #define CL_KHR_IMAGE2D_FROM_BUFFER_EXTENSION_NAME \ "cl_khr_image2d_from_buffer" + +#define CL_KHR_IMAGE2D_FROM_BUFFER_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + /* cl_device_info */ #define CL_DEVICE_IMAGE_PITCH_ALIGNMENT_KHR 0x104A #define CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT_KHR 0x104B @@ -768,9 +1001,18 @@ clCreateProgramWithILKHR( #define CL_KHR_INITIALIZE_MEMORY_EXTENSION_NAME \ "cl_khr_initialize_memory" -/* Interop tokens */ + +#define CL_KHR_INITIALIZE_MEMORY_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + +typedef cl_bitfield cl_context_memory_initialize_khr; + +/* cl_context_properties */ #define CL_CONTEXT_MEMORY_INITIALIZE_KHR 0x2030 +/* cl_context_memory_initialize_khr */ +#define CL_CONTEXT_MEMORY_INITIALIZE_LOCAL_KHR (1 << 0) +#define CL_CONTEXT_MEMORY_INITIALIZE_PRIVATE_KHR (1 << 1) + /*************************************************************** * cl_khr_terminate_context ***************************************************************/ @@ -778,6 +1020,9 @@ clCreateProgramWithILKHR( #define CL_KHR_TERMINATE_CONTEXT_EXTENSION_NAME \ "cl_khr_terminate_context" + +#define CL_KHR_TERMINATE_CONTEXT_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + typedef cl_bitfield cl_device_terminate_capability_khr; /* cl_device_info */ @@ -793,9 +1038,12 @@ typedef cl_bitfield cl_device_terminate_capability_khr; #define CL_CONTEXT_TERMINATED_KHR -1121 -typedef cl_int (CL_API_CALL * -clTerminateContextKHR_fn)( - cl_context context) CL_API_SUFFIX__VERSION_1_2; +typedef cl_int CL_API_CALL +clTerminateContextKHR_t( + cl_context context); + +typedef clTerminateContextKHR_t * +clTerminateContextKHR_fn CL_API_SUFFIX__VERSION_1_2; #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) @@ -812,6 +1060,9 @@ clTerminateContextKHR( #define CL_KHR_SPIR_EXTENSION_NAME \ "cl_khr_spir" + +#define CL_KHR_SPIR_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + /* cl_device_info */ #define CL_DEVICE_SPIR_VERSIONS 0x40E0 @@ -825,15 +1076,21 @@ clTerminateContextKHR( #define CL_KHR_CREATE_COMMAND_QUEUE_EXTENSION_NAME \ "cl_khr_create_command_queue" + +#define CL_KHR_CREATE_COMMAND_QUEUE_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + typedef cl_properties cl_queue_properties_khr; -typedef cl_command_queue (CL_API_CALL * -clCreateCommandQueueWithPropertiesKHR_fn)( +typedef cl_command_queue CL_API_CALL +clCreateCommandQueueWithPropertiesKHR_t( cl_context context, cl_device_id device, const cl_queue_properties_khr* properties, - cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2; + cl_int* errcode_ret); + +typedef clCreateCommandQueueWithPropertiesKHR_t * +clCreateCommandQueueWithPropertiesKHR_fn CL_API_SUFFIX__VERSION_1_2; #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) @@ -853,6 +1110,9 @@ clCreateCommandQueueWithPropertiesKHR( #define CL_NV_DEVICE_ATTRIBUTE_QUERY_EXTENSION_NAME \ "cl_nv_device_attribute_query" + +#define CL_NV_DEVICE_ATTRIBUTE_QUERY_EXTENSION_VERSION CL_MAKE_VERSION(0, 0, 0) + /* cl_device_info */ #define CL_DEVICE_COMPUTE_CAPABILITY_MAJOR_NV 0x4000 #define CL_DEVICE_COMPUTE_CAPABILITY_MINOR_NV 0x4001 @@ -869,6 +1129,9 @@ clCreateCommandQueueWithPropertiesKHR( #define CL_AMD_DEVICE_ATTRIBUTE_QUERY_EXTENSION_NAME \ "cl_amd_device_attribute_query" + +#define CL_AMD_DEVICE_ATTRIBUTE_QUERY_EXTENSION_VERSION CL_MAKE_VERSION(0, 0, 0) + /* cl_device_info */ #define CL_DEVICE_PROFILING_TIMER_OFFSET_AMD 0x4036 #define CL_DEVICE_TOPOLOGY_AMD 0x4037 @@ -899,6 +1162,9 @@ clCreateCommandQueueWithPropertiesKHR( #define CL_ARM_PRINTF_EXTENSION_NAME \ "cl_arm_printf" + +#define CL_ARM_PRINTF_EXTENSION_VERSION CL_MAKE_VERSION(0, 0, 0) + /* cl_context_properties */ #define CL_PRINTF_CALLBACK_ARM 0x40B0 #define CL_PRINTF_BUFFERSIZE_ARM 0x40B1 @@ -910,6 +1176,9 @@ clCreateCommandQueueWithPropertiesKHR( #define CL_EXT_DEVICE_FISSION_EXTENSION_NAME \ "cl_ext_device_fission" + +#define CL_EXT_DEVICE_FISSION_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + typedef cl_ulong cl_device_partition_property_ext; /* Error codes */ @@ -944,21 +1213,30 @@ typedef cl_ulong cl_device_partition_property_ext; #define CL_PARTITION_BY_NAMES_LIST_END_EXT ((cl_device_partition_property_ext)0 - 1) -typedef cl_int (CL_API_CALL * -clReleaseDeviceEXT_fn)( - cl_device_id device) CL_API_SUFFIX__VERSION_1_1; +typedef cl_int CL_API_CALL +clReleaseDeviceEXT_t( + cl_device_id device); -typedef cl_int (CL_API_CALL * -clRetainDeviceEXT_fn)( - cl_device_id device) CL_API_SUFFIX__VERSION_1_1; +typedef clReleaseDeviceEXT_t * +clReleaseDeviceEXT_fn CL_API_SUFFIX__VERSION_1_1; -typedef cl_int (CL_API_CALL * -clCreateSubDevicesEXT_fn)( +typedef cl_int CL_API_CALL +clRetainDeviceEXT_t( + cl_device_id device); + +typedef clRetainDeviceEXT_t * +clRetainDeviceEXT_fn CL_API_SUFFIX__VERSION_1_1; + +typedef cl_int CL_API_CALL +clCreateSubDevicesEXT_t( cl_device_id in_device, const cl_device_partition_property_ext* properties, cl_uint num_entries, cl_device_id* out_devices, - cl_uint* num_devices) CL_API_SUFFIX__VERSION_1_1; + cl_uint* num_devices); + +typedef clCreateSubDevicesEXT_t * +clCreateSubDevicesEXT_fn CL_API_SUFFIX__VERSION_1_1; #if !defined(CL_NO_ICD_DISPATCH_EXTENSION_PROTOTYPES) @@ -987,6 +1265,9 @@ clCreateSubDevicesEXT( #define CL_EXT_MIGRATE_MEMOBJECT_EXTENSION_NAME \ "cl_ext_migrate_memobject" + +#define CL_EXT_MIGRATE_MEMOBJECT_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + typedef cl_bitfield cl_mem_migration_flags_ext; /* cl_mem_migration_flags_ext */ @@ -996,15 +1277,18 @@ typedef cl_bitfield cl_mem_migration_flags_ext; #define CL_COMMAND_MIGRATE_MEM_OBJECT_EXT 0x4040 -typedef cl_int (CL_API_CALL * -clEnqueueMigrateMemObjectEXT_fn)( +typedef cl_int CL_API_CALL +clEnqueueMigrateMemObjectEXT_t( cl_command_queue command_queue, cl_uint num_mem_objects, const cl_mem* mem_objects, cl_mem_migration_flags_ext flags, cl_uint num_events_in_wait_list, const cl_event* event_wait_list, - cl_event* event) ; + cl_event* event); + +typedef clEnqueueMigrateMemObjectEXT_t * +clEnqueueMigrateMemObjectEXT_fn ; #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) @@ -1027,6 +1311,9 @@ clEnqueueMigrateMemObjectEXT( #define CL_EXT_CXX_FOR_OPENCL_EXTENSION_NAME \ "cl_ext_cxx_for_opencl" + +#define CL_EXT_CXX_FOR_OPENCL_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + /* cl_device_info */ #define CL_DEVICE_CXX_FOR_OPENCL_NUMERIC_VERSION_EXT 0x4230 @@ -1037,6 +1324,9 @@ clEnqueueMigrateMemObjectEXT( #define CL_QCOM_EXT_HOST_PTR_EXTENSION_NAME \ "cl_qcom_ext_host_ptr" + +#define CL_QCOM_EXT_HOST_PTR_EXTENSION_VERSION CL_MAKE_VERSION(0, 0, 0) + typedef cl_uint cl_image_pitch_info_qcom; typedef struct _cl_mem_ext_host_ptr { cl_uint allocation_type; @@ -1061,8 +1351,8 @@ typedef struct _cl_mem_ext_host_ptr { #define CL_MEM_HOST_WRITE_COMBINING_QCOM 0x40A7 -typedef cl_int (CL_API_CALL * -clGetDeviceImageInfoQCOM_fn)( +typedef cl_int CL_API_CALL +clGetDeviceImageInfoQCOM_t( cl_device_id device, size_t image_width, size_t image_height, @@ -1070,7 +1360,10 @@ clGetDeviceImageInfoQCOM_fn)( cl_image_pitch_info_qcom param_name, size_t param_value_size, void* param_value, - size_t* param_value_size_ret) ; + size_t* param_value_size_ret); + +typedef clGetDeviceImageInfoQCOM_t * +clGetDeviceImageInfoQCOM_fn ; #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) @@ -1094,6 +1387,9 @@ clGetDeviceImageInfoQCOM( #define CL_QCOM_EXT_HOST_PTR_IOCOHERENT_EXTENSION_NAME \ "cl_qcom_ext_host_ptr_iocoherent" + +#define CL_QCOM_EXT_HOST_PTR_IOCOHERENT_EXTENSION_VERSION CL_MAKE_VERSION(0, 0, 0) + /* cl_uint host_cache_policy */ #define CL_MEM_HOST_IOCOHERENT_QCOM 0x40A9 @@ -1104,6 +1400,9 @@ clGetDeviceImageInfoQCOM( #define CL_QCOM_ION_HOST_PTR_EXTENSION_NAME \ "cl_qcom_ion_host_ptr" + +#define CL_QCOM_ION_HOST_PTR_EXTENSION_VERSION CL_MAKE_VERSION(0, 0, 0) + /* type cl_mem_ext_host_ptr */ typedef struct _cl_mem_ion_host_ptr { cl_mem_ext_host_ptr ext_host_ptr; @@ -1121,6 +1420,9 @@ typedef struct _cl_mem_ion_host_ptr { #define CL_QCOM_ANDROID_NATIVE_BUFFER_HOST_PTR_EXTENSION_NAME \ "cl_qcom_android_native_buffer_host_ptr" + +#define CL_QCOM_ANDROID_NATIVE_BUFFER_HOST_PTR_EXTENSION_VERSION CL_MAKE_VERSION(0, 0, 0) + /* type cl_mem_ext_host_ptr */ typedef struct _cl_mem_android_native_buffer_host_ptr { cl_mem_ext_host_ptr ext_host_ptr; @@ -1137,6 +1439,9 @@ typedef struct _cl_mem_android_native_buffer_host_ptr { #define CL_IMG_YUV_IMAGE_EXTENSION_NAME \ "cl_img_yuv_image" + +#define CL_IMG_YUV_IMAGE_EXTENSION_VERSION CL_MAKE_VERSION(0, 0, 0) + /* cl_channel_order */ #define CL_NV21_IMG 0x40D0 #define CL_YV12_IMG 0x40D1 @@ -1148,6 +1453,9 @@ typedef struct _cl_mem_android_native_buffer_host_ptr { #define CL_IMG_CACHED_ALLOCATIONS_EXTENSION_NAME \ "cl_img_cached_allocations" + +#define CL_IMG_CACHED_ALLOCATIONS_EXTENSION_VERSION CL_MAKE_VERSION(0, 0, 0) + /* cl_mem_flags */ #define CL_MEM_USE_UNCACHED_CPU_MEMORY_IMG (1 << 26) #define CL_MEM_USE_CACHED_CPU_MEMORY_IMG (1 << 27) @@ -1159,6 +1467,9 @@ typedef struct _cl_mem_android_native_buffer_host_ptr { #define CL_IMG_USE_GRALLOC_PTR_EXTENSION_NAME \ "cl_img_use_gralloc_ptr" + +#define CL_IMG_USE_GRALLOC_PTR_EXTENSION_VERSION CL_MAKE_VERSION(0, 0, 0) + /* Error codes */ #define CL_GRALLOC_RESOURCE_NOT_ACQUIRED_IMG 0x40D4 #define CL_INVALID_GRALLOC_OBJECT_IMG 0x40D5 @@ -1171,23 +1482,29 @@ typedef struct _cl_mem_android_native_buffer_host_ptr { #define CL_COMMAND_RELEASE_GRALLOC_OBJECTS_IMG 0x40D3 -typedef cl_int (CL_API_CALL * -clEnqueueAcquireGrallocObjectsIMG_fn)( +typedef cl_int CL_API_CALL +clEnqueueAcquireGrallocObjectsIMG_t( cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, cl_uint num_events_in_wait_list, const cl_event* event_wait_list, - cl_event* event) CL_API_SUFFIX__VERSION_1_2; + cl_event* event); -typedef cl_int (CL_API_CALL * -clEnqueueReleaseGrallocObjectsIMG_fn)( +typedef clEnqueueAcquireGrallocObjectsIMG_t * +clEnqueueAcquireGrallocObjectsIMG_fn CL_API_SUFFIX__VERSION_1_2; + +typedef cl_int CL_API_CALL +clEnqueueReleaseGrallocObjectsIMG_t( cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, cl_uint num_events_in_wait_list, const cl_event* event_wait_list, - cl_event* event) CL_API_SUFFIX__VERSION_1_2; + cl_event* event); + +typedef clEnqueueReleaseGrallocObjectsIMG_t * +clEnqueueReleaseGrallocObjectsIMG_fn CL_API_SUFFIX__VERSION_1_2; #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) @@ -1218,6 +1535,9 @@ clEnqueueReleaseGrallocObjectsIMG( #define CL_IMG_GENERATE_MIPMAP_EXTENSION_NAME \ "cl_img_generate_mipmap" + +#define CL_IMG_GENERATE_MIPMAP_EXTENSION_VERSION CL_MAKE_VERSION(0, 0, 0) + typedef cl_uint cl_mipmap_filter_mode_img; /* cl_mipmap_filter_mode_img */ @@ -1228,8 +1548,8 @@ typedef cl_uint cl_mipmap_filter_mode_img; #define CL_COMMAND_GENERATE_MIPMAP_IMG 0x40D6 -typedef cl_int (CL_API_CALL * -clEnqueueGenerateMipmapIMG_fn)( +typedef cl_int CL_API_CALL +clEnqueueGenerateMipmapIMG_t( cl_command_queue command_queue, cl_mem src_image, cl_mem dst_image, @@ -1238,7 +1558,10 @@ clEnqueueGenerateMipmapIMG_fn)( const size_t* mip_region, cl_uint num_events_in_wait_list, const cl_event* event_wait_list, - cl_event* event) CL_API_SUFFIX__VERSION_1_2; + cl_event* event); + +typedef clEnqueueGenerateMipmapIMG_t * +clEnqueueGenerateMipmapIMG_fn CL_API_SUFFIX__VERSION_1_2; #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) @@ -1263,11 +1586,22 @@ clEnqueueGenerateMipmapIMG( #define CL_IMG_MEM_PROPERTIES_EXTENSION_NAME \ "cl_img_mem_properties" + +#define CL_IMG_MEM_PROPERTIES_EXTENSION_VERSION CL_MAKE_VERSION(0, 0, 0) + /* cl_mem_properties */ #define CL_MEM_ALLOC_FLAGS_IMG 0x40D7 /* cl_mem_alloc_flags_img */ #define CL_MEM_ALLOC_RELAX_REQUIREMENTS_IMG (1 << 0) +#define CL_MEM_ALLOC_GPU_WRITE_COMBINE_IMG (1 << 1) +#define CL_MEM_ALLOC_GPU_CACHED_IMG (1 << 2) +#define CL_MEM_ALLOC_CPU_LOCAL_IMG (1 << 3) +#define CL_MEM_ALLOC_GPU_LOCAL_IMG (1 << 4) +#define CL_MEM_ALLOC_GPU_PRIVATE_IMG (1 << 5) + +/* cl_device_info */ +#define CL_DEVICE_MEMORY_CAPABILITIES_IMG 0x40D8 /*************************************************************** * cl_khr_subgroups @@ -1276,6 +1610,9 @@ clEnqueueGenerateMipmapIMG( #define CL_KHR_SUBGROUPS_EXTENSION_NAME \ "cl_khr_subgroups" + +#define CL_KHR_SUBGROUPS_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + #if !defined(CL_VERSION_2_1) /* defined in CL.h for OpenCL 2.1 and newer */ typedef cl_uint cl_kernel_sub_group_info; @@ -1287,8 +1624,8 @@ typedef cl_uint cl_kernel_sub_group_info; #define CL_KERNEL_SUB_GROUP_COUNT_FOR_NDRANGE_KHR 0x2034 -typedef cl_int (CL_API_CALL * -clGetKernelSubGroupInfoKHR_fn)( +typedef cl_int CL_API_CALL +clGetKernelSubGroupInfoKHR_t( cl_kernel in_kernel, cl_device_id in_device, cl_kernel_sub_group_info param_name, @@ -1296,7 +1633,10 @@ clGetKernelSubGroupInfoKHR_fn)( const void* input_value, size_t param_value_size, void* param_value, - size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_2_0_DEPRECATED; + size_t* param_value_size_ret); + +typedef clGetKernelSubGroupInfoKHR_t * +clGetKernelSubGroupInfoKHR_fn CL_API_SUFFIX__VERSION_2_0_DEPRECATED; #if !defined(CL_NO_ICD_DISPATCH_EXTENSION_PROTOTYPES) @@ -1320,6 +1660,9 @@ clGetKernelSubGroupInfoKHR( #define CL_KHR_MIPMAP_IMAGE_EXTENSION_NAME \ "cl_khr_mipmap_image" + +#define CL_KHR_MIPMAP_IMAGE_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + /* cl_sampler_properties */ #define CL_SAMPLER_MIP_FILTER_MODE_KHR 0x1155 #define CL_SAMPLER_LOD_MIN_KHR 0x1156 @@ -1332,6 +1675,9 @@ clGetKernelSubGroupInfoKHR( #define CL_KHR_PRIORITY_HINTS_EXTENSION_NAME \ "cl_khr_priority_hints" + +#define CL_KHR_PRIORITY_HINTS_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + /* To be used by clGetEventInfo */ typedef cl_uint cl_queue_priority_khr; @@ -1350,6 +1696,9 @@ typedef cl_uint cl_queue_priority_khr; #define CL_KHR_THROTTLE_HINTS_EXTENSION_NAME \ "cl_khr_throttle_hints" + +#define CL_KHR_THROTTLE_HINTS_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + /* To be used by clGetEventInfo */ typedef cl_uint cl_queue_throttle_khr; @@ -1368,6 +1717,9 @@ typedef cl_uint cl_queue_throttle_khr; #define CL_KHR_SUBGROUP_NAMED_BARRIER_EXTENSION_NAME \ "cl_khr_subgroup_named_barrier" + +#define CL_KHR_SUBGROUP_NAMED_BARRIER_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + /* cl_device_info */ #define CL_DEVICE_MAX_NAMED_BARRIER_COUNT_KHR 0x2035 @@ -1378,6 +1730,9 @@ typedef cl_uint cl_queue_throttle_khr; #define CL_KHR_EXTENDED_VERSIONING_EXTENSION_NAME \ "cl_khr_extended_versioning" + +#define CL_KHR_EXTENDED_VERSIONING_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + #define CL_VERSION_MAJOR_BITS_KHR 10 #define CL_VERSION_MINOR_BITS_KHR 10 #define CL_VERSION_PATCH_BITS_KHR 12 @@ -1421,6 +1776,9 @@ typedef struct _cl_name_version_khr { #define CL_KHR_DEVICE_UUID_EXTENSION_NAME \ "cl_khr_device_uuid" + +#define CL_KHR_DEVICE_UUID_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + /* Size Constants */ #define CL_UUID_SIZE_KHR 16 #define CL_LUID_SIZE_KHR 8 @@ -1439,6 +1797,9 @@ typedef struct _cl_name_version_khr { #define CL_KHR_PCI_BUS_INFO_EXTENSION_NAME \ "cl_khr_pci_bus_info" + +#define CL_KHR_PCI_BUS_INFO_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + typedef struct _cl_device_pci_bus_info_khr { cl_uint pci_domain; cl_uint pci_bus; @@ -1457,14 +1818,20 @@ typedef struct _cl_device_pci_bus_info_khr { "cl_khr_suggested_local_work_size" -typedef cl_int (CL_API_CALL * -clGetKernelSuggestedLocalWorkSizeKHR_fn)( +#define CL_KHR_SUGGESTED_LOCAL_WORK_SIZE_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + + +typedef cl_int CL_API_CALL +clGetKernelSuggestedLocalWorkSizeKHR_t( cl_command_queue command_queue, cl_kernel kernel, cl_uint work_dim, const size_t* global_work_offset, const size_t* global_work_size, - size_t* suggested_local_work_size) CL_API_SUFFIX__VERSION_3_0; + size_t* suggested_local_work_size); + +typedef clGetKernelSuggestedLocalWorkSizeKHR_t * +clGetKernelSuggestedLocalWorkSizeKHR_fn CL_API_SUFFIX__VERSION_3_0; #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) @@ -1486,6 +1853,9 @@ clGetKernelSuggestedLocalWorkSizeKHR( #define CL_KHR_INTEGER_DOT_PRODUCT_EXTENSION_NAME \ "cl_khr_integer_dot_product" + +#define CL_KHR_INTEGER_DOT_PRODUCT_EXTENSION_VERSION CL_MAKE_VERSION(2, 0, 0) + typedef cl_bitfield cl_device_integer_dot_product_capabilities_khr; typedef struct _cl_device_integer_dot_product_acceleration_properties_khr { cl_bool signed_accelerated; @@ -1512,6 +1882,9 @@ typedef struct _cl_device_integer_dot_product_acceleration_properties_khr { #define CL_KHR_EXTERNAL_MEMORY_EXTENSION_NAME \ "cl_khr_external_memory" + +#define CL_KHR_EXTERNAL_MEMORY_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 1) + typedef cl_uint cl_external_memory_handle_type_khr; /* cl_platform_info */ @@ -1519,33 +1892,40 @@ typedef cl_uint cl_external_memory_handle_type_khr; /* cl_device_info */ #define CL_DEVICE_EXTERNAL_MEMORY_IMPORT_HANDLE_TYPES_KHR 0x204F +#define CL_DEVICE_EXTERNAL_MEMORY_IMPORT_ASSUME_LINEAR_IMAGES_HANDLE_TYPES_KHR 0x2052 /* cl_mem_properties */ -#define CL_DEVICE_HANDLE_LIST_KHR 0x2051 -#define CL_DEVICE_HANDLE_LIST_END_KHR 0 +#define CL_MEM_DEVICE_HANDLE_LIST_KHR 0x2051 +#define CL_MEM_DEVICE_HANDLE_LIST_END_KHR 0 /* cl_command_type */ #define CL_COMMAND_ACQUIRE_EXTERNAL_MEM_OBJECTS_KHR 0x2047 #define CL_COMMAND_RELEASE_EXTERNAL_MEM_OBJECTS_KHR 0x2048 -typedef cl_int (CL_API_CALL * -clEnqueueAcquireExternalMemObjectsKHR_fn)( +typedef cl_int CL_API_CALL +clEnqueueAcquireExternalMemObjectsKHR_t( cl_command_queue command_queue, cl_uint num_mem_objects, const cl_mem* mem_objects, cl_uint num_events_in_wait_list, const cl_event* event_wait_list, - cl_event* event) CL_API_SUFFIX__VERSION_3_0; + cl_event* event); -typedef cl_int (CL_API_CALL * -clEnqueueReleaseExternalMemObjectsKHR_fn)( +typedef clEnqueueAcquireExternalMemObjectsKHR_t * +clEnqueueAcquireExternalMemObjectsKHR_fn CL_API_SUFFIX__VERSION_3_0; + +typedef cl_int CL_API_CALL +clEnqueueReleaseExternalMemObjectsKHR_t( cl_command_queue command_queue, cl_uint num_mem_objects, const cl_mem* mem_objects, cl_uint num_events_in_wait_list, const cl_event* event_wait_list, - cl_event* event) CL_API_SUFFIX__VERSION_3_0; + cl_event* event); + +typedef clEnqueueReleaseExternalMemObjectsKHR_t * +clEnqueueReleaseExternalMemObjectsKHR_fn CL_API_SUFFIX__VERSION_3_0; #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) @@ -1576,22 +1956,12 @@ clEnqueueReleaseExternalMemObjectsKHR( #define CL_KHR_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME \ "cl_khr_external_memory_dma_buf" + +#define CL_KHR_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + /* cl_external_memory_handle_type_khr */ #define CL_EXTERNAL_MEMORY_HANDLE_DMA_BUF_KHR 0x2067 -/*************************************************************** -* cl_khr_external_memory_dx -***************************************************************/ -#define cl_khr_external_memory_dx 1 -#define CL_KHR_EXTERNAL_MEMORY_DX_EXTENSION_NAME \ - "cl_khr_external_memory_dx" - -/* cl_external_memory_handle_type_khr */ -#define CL_EXTERNAL_MEMORY_HANDLE_D3D11_TEXTURE_KHR 0x2063 -#define CL_EXTERNAL_MEMORY_HANDLE_D3D11_TEXTURE_KMT_KHR 0x2064 -#define CL_EXTERNAL_MEMORY_HANDLE_D3D12_HEAP_KHR 0x2065 -#define CL_EXTERNAL_MEMORY_HANDLE_D3D12_RESOURCE_KHR 0x2066 - /*************************************************************** * cl_khr_external_memory_opaque_fd ***************************************************************/ @@ -1599,6 +1969,9 @@ clEnqueueReleaseExternalMemObjectsKHR( #define CL_KHR_EXTERNAL_MEMORY_OPAQUE_FD_EXTENSION_NAME \ "cl_khr_external_memory_opaque_fd" + +#define CL_KHR_EXTERNAL_MEMORY_OPAQUE_FD_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + /* cl_external_memory_handle_type_khr */ #define CL_EXTERNAL_MEMORY_HANDLE_OPAQUE_FD_KHR 0x2060 @@ -1609,9 +1982,13 @@ clEnqueueReleaseExternalMemObjectsKHR( #define CL_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME \ "cl_khr_external_memory_win32" + +#define CL_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_VERSION CL_MAKE_VERSION(1, 1, 0) + /* cl_external_memory_handle_type_khr */ #define CL_EXTERNAL_MEMORY_HANDLE_OPAQUE_WIN32_KHR 0x2061 #define CL_EXTERNAL_MEMORY_HANDLE_OPAQUE_WIN32_KMT_KHR 0x2062 +#define CL_EXTERNAL_MEMORY_HANDLE_OPAQUE_WIN32_NAME_KHR 0x2069 /*************************************************************** * cl_khr_external_semaphore @@ -1620,6 +1997,9 @@ clEnqueueReleaseExternalMemObjectsKHR( #define CL_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME \ "cl_khr_external_semaphore" + +#define CL_KHR_EXTERNAL_SEMAPHORE_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 1) + typedef struct _cl_semaphore_khr * cl_semaphore_khr; typedef cl_uint cl_external_semaphore_handle_type_khr; @@ -1635,15 +2015,21 @@ typedef cl_uint cl_external_semaphore_handle_type_khr; #define CL_SEMAPHORE_EXPORT_HANDLE_TYPES_KHR 0x203F #define CL_SEMAPHORE_EXPORT_HANDLE_TYPES_LIST_END_KHR 0 +/* cl_semaphore_info_khr */ +#define CL_SEMAPHORE_EXPORTABLE_KHR 0x2054 -typedef cl_int (CL_API_CALL * -clGetSemaphoreHandleForTypeKHR_fn)( + +typedef cl_int CL_API_CALL +clGetSemaphoreHandleForTypeKHR_t( cl_semaphore_khr sema_object, cl_device_id device, cl_external_semaphore_handle_type_khr handle_type, size_t handle_size, void* handle_ptr, - size_t* handle_size_ret) CL_API_SUFFIX__VERSION_1_2; + size_t* handle_size_ret); + +typedef clGetSemaphoreHandleForTypeKHR_t * +clGetSemaphoreHandleForTypeKHR_fn CL_API_SUFFIX__VERSION_1_2; #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) @@ -1658,16 +2044,6 @@ clGetSemaphoreHandleForTypeKHR( #endif /* !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) */ -/*************************************************************** -* cl_khr_external_semaphore_dx_fence -***************************************************************/ -#define cl_khr_external_semaphore_dx_fence 1 -#define CL_KHR_EXTERNAL_SEMAPHORE_DX_FENCE_EXTENSION_NAME \ - "cl_khr_external_semaphore_dx_fence" - -/* cl_external_semaphore_handle_type_khr */ -#define CL_SEMAPHORE_HANDLE_D3D12_FENCE_KHR 0x2059 - /*************************************************************** * cl_khr_external_semaphore_opaque_fd ***************************************************************/ @@ -1675,6 +2051,9 @@ clGetSemaphoreHandleForTypeKHR( #define CL_KHR_EXTERNAL_SEMAPHORE_OPAQUE_FD_EXTENSION_NAME \ "cl_khr_external_semaphore_opaque_fd" + +#define CL_KHR_EXTERNAL_SEMAPHORE_OPAQUE_FD_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + /* cl_external_semaphore_handle_type_khr */ #define CL_SEMAPHORE_HANDLE_OPAQUE_FD_KHR 0x2055 @@ -1685,19 +2064,52 @@ clGetSemaphoreHandleForTypeKHR( #define CL_KHR_EXTERNAL_SEMAPHORE_SYNC_FD_EXTENSION_NAME \ "cl_khr_external_semaphore_sync_fd" + +#define CL_KHR_EXTERNAL_SEMAPHORE_SYNC_FD_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + +typedef cl_properties cl_semaphore_reimport_properties_khr; + /* cl_external_semaphore_handle_type_khr */ #define CL_SEMAPHORE_HANDLE_SYNC_FD_KHR 0x2058 + +typedef cl_int CL_API_CALL +clReImportSemaphoreSyncFdKHR_t( + cl_semaphore_khr sema_object, + cl_semaphore_reimport_properties_khr* reimport_props, + int fd); + +typedef clReImportSemaphoreSyncFdKHR_t * +clReImportSemaphoreSyncFdKHR_fn CL_API_SUFFIX__VERSION_3_0; + +#if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) + +extern CL_API_ENTRY cl_int CL_API_CALL +clReImportSemaphoreSyncFdKHR( + cl_semaphore_khr sema_object, + cl_semaphore_reimport_properties_khr* reimport_props, + int fd) CL_API_SUFFIX__VERSION_3_0; + +#endif /* !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) */ + /*************************************************************** -* cl_khr_external_semaphore_win32 +* cl_khr_external_semaphore_win32 (beta) ***************************************************************/ +#if defined(CL_ENABLE_BETA_EXTENSIONS) + #define cl_khr_external_semaphore_win32 1 #define CL_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME \ "cl_khr_external_semaphore_win32" + +#define CL_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_VERSION CL_MAKE_VERSION(0, 9, 1) + /* cl_external_semaphore_handle_type_khr */ #define CL_SEMAPHORE_HANDLE_OPAQUE_WIN32_KHR 0x2056 #define CL_SEMAPHORE_HANDLE_OPAQUE_WIN32_KMT_KHR 0x2057 +#define CL_SEMAPHORE_HANDLE_OPAQUE_WIN32_NAME_KHR 0x2068 + +#endif /* defined(CL_ENABLE_BETA_EXTENSIONS) */ /*************************************************************** * cl_khr_semaphore @@ -1706,6 +2118,9 @@ clGetSemaphoreHandleForTypeKHR( #define CL_KHR_SEMAPHORE_EXTENSION_NAME \ "cl_khr_semaphore" + +#define CL_KHR_SEMAPHORE_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + /* type cl_semaphore_khr */ typedef cl_properties cl_semaphore_properties_khr; typedef cl_uint cl_semaphore_info_khr; @@ -1729,8 +2144,8 @@ typedef cl_ulong cl_semaphore_payload_khr; /* cl_semaphore_info_khr or cl_semaphore_properties_khr */ #define CL_SEMAPHORE_TYPE_KHR 0x203D -/* enum CL_DEVICE_HANDLE_LIST_KHR */ -/* enum CL_DEVICE_HANDLE_LIST_END_KHR */ +#define CL_SEMAPHORE_DEVICE_HANDLE_LIST_KHR 0x2053 +#define CL_SEMAPHORE_DEVICE_HANDLE_LIST_END_KHR 0 /* cl_command_type */ #define CL_COMMAND_SEMAPHORE_WAIT_KHR 0x2042 @@ -1740,47 +2155,65 @@ typedef cl_ulong cl_semaphore_payload_khr; #define CL_INVALID_SEMAPHORE_KHR -1142 -typedef cl_semaphore_khr (CL_API_CALL * -clCreateSemaphoreWithPropertiesKHR_fn)( +typedef cl_semaphore_khr CL_API_CALL +clCreateSemaphoreWithPropertiesKHR_t( cl_context context, const cl_semaphore_properties_khr* sema_props, - cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2; + cl_int* errcode_ret); -typedef cl_int (CL_API_CALL * -clEnqueueWaitSemaphoresKHR_fn)( +typedef clCreateSemaphoreWithPropertiesKHR_t * +clCreateSemaphoreWithPropertiesKHR_fn CL_API_SUFFIX__VERSION_1_2; + +typedef cl_int CL_API_CALL +clEnqueueWaitSemaphoresKHR_t( cl_command_queue command_queue, cl_uint num_sema_objects, const cl_semaphore_khr* sema_objects, const cl_semaphore_payload_khr* sema_payload_list, cl_uint num_events_in_wait_list, const cl_event* event_wait_list, - cl_event* event) CL_API_SUFFIX__VERSION_1_2; + cl_event* event); -typedef cl_int (CL_API_CALL * -clEnqueueSignalSemaphoresKHR_fn)( +typedef clEnqueueWaitSemaphoresKHR_t * +clEnqueueWaitSemaphoresKHR_fn CL_API_SUFFIX__VERSION_1_2; + +typedef cl_int CL_API_CALL +clEnqueueSignalSemaphoresKHR_t( cl_command_queue command_queue, cl_uint num_sema_objects, const cl_semaphore_khr* sema_objects, const cl_semaphore_payload_khr* sema_payload_list, cl_uint num_events_in_wait_list, const cl_event* event_wait_list, - cl_event* event) CL_API_SUFFIX__VERSION_1_2; + cl_event* event); -typedef cl_int (CL_API_CALL * -clGetSemaphoreInfoKHR_fn)( +typedef clEnqueueSignalSemaphoresKHR_t * +clEnqueueSignalSemaphoresKHR_fn CL_API_SUFFIX__VERSION_1_2; + +typedef cl_int CL_API_CALL +clGetSemaphoreInfoKHR_t( cl_semaphore_khr sema_object, cl_semaphore_info_khr param_name, size_t param_value_size, void* param_value, - size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_2; + size_t* param_value_size_ret); -typedef cl_int (CL_API_CALL * -clReleaseSemaphoreKHR_fn)( - cl_semaphore_khr sema_object) CL_API_SUFFIX__VERSION_1_2; +typedef clGetSemaphoreInfoKHR_t * +clGetSemaphoreInfoKHR_fn CL_API_SUFFIX__VERSION_1_2; -typedef cl_int (CL_API_CALL * -clRetainSemaphoreKHR_fn)( - cl_semaphore_khr sema_object) CL_API_SUFFIX__VERSION_1_2; +typedef cl_int CL_API_CALL +clReleaseSemaphoreKHR_t( + cl_semaphore_khr sema_object); + +typedef clReleaseSemaphoreKHR_t * +clReleaseSemaphoreKHR_fn CL_API_SUFFIX__VERSION_1_2; + +typedef cl_int CL_API_CALL +clRetainSemaphoreKHR_t( + cl_semaphore_khr sema_object); + +typedef clRetainSemaphoreKHR_t * +clRetainSemaphoreKHR_fn CL_API_SUFFIX__VERSION_1_2; #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) @@ -1835,6 +2268,9 @@ clRetainSemaphoreKHR( #define CL_ARM_IMPORT_MEMORY_EXTENSION_NAME \ "cl_arm_import_memory" + +#define CL_ARM_IMPORT_MEMORY_EXTENSION_VERSION CL_MAKE_VERSION(0, 0, 0) + typedef intptr_t cl_import_properties_arm; /* cl_import_properties_arm */ @@ -1849,14 +2285,17 @@ typedef intptr_t cl_import_properties_arm; #define CL_IMPORT_ANDROID_HARDWARE_BUFFER_LAYER_INDEX_ARM 0x41F0 -typedef cl_mem (CL_API_CALL * -clImportMemoryARM_fn)( +typedef cl_mem CL_API_CALL +clImportMemoryARM_t( cl_context context, cl_mem_flags flags, const cl_import_properties_arm* properties, void* memory, size_t size, - cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0; + cl_int* errcode_ret); + +typedef clImportMemoryARM_t * +clImportMemoryARM_fn CL_API_SUFFIX__VERSION_1_0; #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) @@ -1878,6 +2317,9 @@ clImportMemoryARM( #define CL_ARM_SHARED_VIRTUAL_MEMORY_EXTENSION_NAME \ "cl_arm_shared_virtual_memory" + +#define CL_ARM_SHARED_VIRTUAL_MEMORY_EXTENSION_VERSION CL_MAKE_VERSION(0, 0, 0) + typedef cl_bitfield cl_svm_mem_flags_arm; typedef cl_uint cl_kernel_exec_info_arm; typedef cl_bitfield cl_device_svm_capabilities_arm; @@ -1910,20 +2352,26 @@ typedef cl_bitfield cl_device_svm_capabilities_arm; #define CL_MEM_SVM_ATOMICS_ARM (1 << 11) -typedef void* (CL_API_CALL * -clSVMAllocARM_fn)( +typedef void* CL_API_CALL +clSVMAllocARM_t( cl_context context, cl_svm_mem_flags_arm flags, size_t size, - cl_uint alignment) CL_API_SUFFIX__VERSION_1_2; + cl_uint alignment); -typedef void (CL_API_CALL * -clSVMFreeARM_fn)( +typedef clSVMAllocARM_t * +clSVMAllocARM_fn CL_API_SUFFIX__VERSION_1_2; + +typedef void CL_API_CALL +clSVMFreeARM_t( cl_context context, - void* svm_pointer) CL_API_SUFFIX__VERSION_1_2; + void* svm_pointer); -typedef cl_int (CL_API_CALL * -clEnqueueSVMFreeARM_fn)( +typedef clSVMFreeARM_t * +clSVMFreeARM_fn CL_API_SUFFIX__VERSION_1_2; + +typedef cl_int CL_API_CALL +clEnqueueSVMFreeARM_t( cl_command_queue command_queue, cl_uint num_svm_pointers, void* svm_pointers[], @@ -1931,10 +2379,13 @@ clEnqueueSVMFreeARM_fn)( void* user_data, cl_uint num_events_in_wait_list, const cl_event* event_wait_list, - cl_event* event) CL_API_SUFFIX__VERSION_1_2; + cl_event* event); -typedef cl_int (CL_API_CALL * -clEnqueueSVMMemcpyARM_fn)( +typedef clEnqueueSVMFreeARM_t * +clEnqueueSVMFreeARM_fn CL_API_SUFFIX__VERSION_1_2; + +typedef cl_int CL_API_CALL +clEnqueueSVMMemcpyARM_t( cl_command_queue command_queue, cl_bool blocking_copy, void* dst_ptr, @@ -1942,10 +2393,13 @@ clEnqueueSVMMemcpyARM_fn)( size_t size, cl_uint num_events_in_wait_list, const cl_event* event_wait_list, - cl_event* event) CL_API_SUFFIX__VERSION_1_2; + cl_event* event); -typedef cl_int (CL_API_CALL * -clEnqueueSVMMemFillARM_fn)( +typedef clEnqueueSVMMemcpyARM_t * +clEnqueueSVMMemcpyARM_fn CL_API_SUFFIX__VERSION_1_2; + +typedef cl_int CL_API_CALL +clEnqueueSVMMemFillARM_t( cl_command_queue command_queue, void* svm_ptr, const void* pattern, @@ -1953,10 +2407,13 @@ clEnqueueSVMMemFillARM_fn)( size_t size, cl_uint num_events_in_wait_list, const cl_event* event_wait_list, - cl_event* event) CL_API_SUFFIX__VERSION_1_2; + cl_event* event); -typedef cl_int (CL_API_CALL * -clEnqueueSVMMapARM_fn)( +typedef clEnqueueSVMMemFillARM_t * +clEnqueueSVMMemFillARM_fn CL_API_SUFFIX__VERSION_1_2; + +typedef cl_int CL_API_CALL +clEnqueueSVMMapARM_t( cl_command_queue command_queue, cl_bool blocking_map, cl_map_flags flags, @@ -1964,28 +2421,40 @@ clEnqueueSVMMapARM_fn)( size_t size, cl_uint num_events_in_wait_list, const cl_event* event_wait_list, - cl_event* event) CL_API_SUFFIX__VERSION_1_2; + cl_event* event); -typedef cl_int (CL_API_CALL * -clEnqueueSVMUnmapARM_fn)( +typedef clEnqueueSVMMapARM_t * +clEnqueueSVMMapARM_fn CL_API_SUFFIX__VERSION_1_2; + +typedef cl_int CL_API_CALL +clEnqueueSVMUnmapARM_t( cl_command_queue command_queue, void* svm_ptr, cl_uint num_events_in_wait_list, const cl_event* event_wait_list, - cl_event* event) CL_API_SUFFIX__VERSION_1_2; + cl_event* event); -typedef cl_int (CL_API_CALL * -clSetKernelArgSVMPointerARM_fn)( +typedef clEnqueueSVMUnmapARM_t * +clEnqueueSVMUnmapARM_fn CL_API_SUFFIX__VERSION_1_2; + +typedef cl_int CL_API_CALL +clSetKernelArgSVMPointerARM_t( cl_kernel kernel, cl_uint arg_index, - const void* arg_value) CL_API_SUFFIX__VERSION_1_2; + const void* arg_value); -typedef cl_int (CL_API_CALL * -clSetKernelExecInfoARM_fn)( +typedef clSetKernelArgSVMPointerARM_t * +clSetKernelArgSVMPointerARM_fn CL_API_SUFFIX__VERSION_1_2; + +typedef cl_int CL_API_CALL +clSetKernelExecInfoARM_t( cl_kernel kernel, cl_kernel_exec_info_arm param_name, size_t param_value_size, - const void* param_value) CL_API_SUFFIX__VERSION_1_2; + const void* param_value); + +typedef clSetKernelExecInfoARM_t * +clSetKernelExecInfoARM_fn CL_API_SUFFIX__VERSION_1_2; #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) @@ -2077,6 +2546,9 @@ clSetKernelExecInfoARM( #define CL_ARM_GET_CORE_ID_EXTENSION_NAME \ "cl_arm_get_core_id" + +#define CL_ARM_GET_CORE_ID_EXTENSION_VERSION CL_MAKE_VERSION(0, 0, 0) + /* cl_device_info */ #define CL_DEVICE_COMPUTE_UNITS_BITFIELD_ARM 0x40BF @@ -2089,6 +2561,9 @@ clSetKernelExecInfoARM( #define CL_ARM_JOB_SLOT_SELECTION_EXTENSION_NAME \ "cl_arm_job_slot_selection" + +#define CL_ARM_JOB_SLOT_SELECTION_EXTENSION_VERSION CL_MAKE_VERSION(0, 0, 0) + /* cl_device_info */ #define CL_DEVICE_JOB_SLOTS_ARM 0x41E0 @@ -2102,6 +2577,9 @@ clSetKernelExecInfoARM( #define CL_ARM_SCHEDULING_CONTROLS_EXTENSION_NAME \ "cl_arm_scheduling_controls" + +#define CL_ARM_SCHEDULING_CONTROLS_EXTENSION_VERSION CL_MAKE_VERSION(0, 0, 0) + /* Types */ typedef cl_bitfield cl_device_scheduling_controls_capabilities_arm; @@ -2113,6 +2591,7 @@ typedef cl_bitfield cl_device_scheduling_controls_capabilities_arm; #define CL_DEVICE_SCHEDULING_REGISTER_ALLOCATION_ARM (1 << 4) #define CL_DEVICE_SCHEDULING_WARP_THROTTLING_ARM (1 << 5) #define CL_DEVICE_SCHEDULING_COMPUTE_UNIT_BATCH_QUEUE_SIZE_ARM (1 << 6) +#define CL_DEVICE_SCHEDULING_COMPUTE_UNIT_LIMIT_ARM (1 << 7) /* cl_device_info */ #define CL_DEVICE_SCHEDULING_CONTROLS_CAPABILITIES_ARM 0x41E4 @@ -2131,6 +2610,7 @@ typedef cl_bitfield cl_device_scheduling_controls_capabilities_arm; /* cl_queue_properties */ #define CL_QUEUE_KERNEL_BATCHING_ARM 0x41E7 #define CL_QUEUE_DEFERRED_FLUSH_ARM 0x41EC +#define CL_QUEUE_COMPUTE_UNIT_LIMIT_ARM 0x41F3 /*************************************************************** * cl_arm_controlled_kernel_termination @@ -2139,6 +2619,9 @@ typedef cl_bitfield cl_device_scheduling_controls_capabilities_arm; #define CL_ARM_CONTROLLED_KERNEL_TERMINATION_EXTENSION_NAME \ "cl_arm_controlled_kernel_termination" + +#define CL_ARM_CONTROLLED_KERNEL_TERMINATION_EXTENSION_VERSION CL_MAKE_VERSION(0, 0, 0) + /* Types */ typedef cl_bitfield cl_device_controlled_termination_capabilities_arm; @@ -2169,6 +2652,9 @@ typedef cl_bitfield cl_device_controlled_termination_capabilities_arm; #define CL_ARM_PROTECTED_MEMORY_ALLOCATION_EXTENSION_NAME \ "cl_arm_protected_memory_allocation" + +#define CL_ARM_PROTECTED_MEMORY_ALLOCATION_EXTENSION_VERSION CL_MAKE_VERSION(0, 0, 0) + #define CL_MEM_PROTECTED_ALLOC_ARM ((cl_bitfield)1 << 36) /*************************************************************** @@ -2178,6 +2664,9 @@ typedef cl_bitfield cl_device_controlled_termination_capabilities_arm; #define CL_INTEL_EXEC_BY_LOCAL_THREAD_EXTENSION_NAME \ "cl_intel_exec_by_local_thread" + +#define CL_INTEL_EXEC_BY_LOCAL_THREAD_EXTENSION_VERSION CL_MAKE_VERSION(0, 0, 0) + /* cl_command_queue_properties - bitfield */ #define CL_QUEUE_THREAD_LOCAL_EXEC_ENABLE_INTEL ((cl_bitfield)1 << 31) @@ -2188,6 +2677,9 @@ typedef cl_bitfield cl_device_controlled_termination_capabilities_arm; #define CL_INTEL_DEVICE_ATTRIBUTE_QUERY_EXTENSION_NAME \ "cl_intel_device_attribute_query" + +#define CL_INTEL_DEVICE_ATTRIBUTE_QUERY_EXTENSION_VERSION CL_MAKE_VERSION(0, 0, 0) + typedef cl_bitfield cl_device_feature_capabilities_intel; /* cl_device_feature_capabilities_intel */ @@ -2210,6 +2702,9 @@ typedef cl_bitfield cl_device_feature_capabilities_intel; #define CL_INTEL_DEVICE_PARTITION_BY_NAMES_EXTENSION_NAME \ "cl_intel_device_partition_by_names" + +#define CL_INTEL_DEVICE_PARTITION_BY_NAMES_EXTENSION_VERSION CL_MAKE_VERSION(0, 0, 0) + #define CL_DEVICE_PARTITION_BY_NAMES_INTEL 0x4052 #define CL_PARTITION_BY_NAMES_LIST_END_INTEL -1 @@ -2220,6 +2715,9 @@ typedef cl_bitfield cl_device_feature_capabilities_intel; #define CL_INTEL_ACCELERATOR_EXTENSION_NAME \ "cl_intel_accelerator" + +#define CL_INTEL_ACCELERATOR_EXTENSION_VERSION CL_MAKE_VERSION(0, 0, 0) + typedef struct _cl_accelerator_intel* cl_accelerator_intel; typedef cl_uint cl_accelerator_type_intel; typedef cl_uint cl_accelerator_info_intel; @@ -2237,29 +2735,41 @@ typedef cl_uint cl_accelerator_info_intel; #define CL_ACCELERATOR_TYPE_NOT_SUPPORTED_INTEL -1097 -typedef cl_accelerator_intel (CL_API_CALL * -clCreateAcceleratorINTEL_fn)( +typedef cl_accelerator_intel CL_API_CALL +clCreateAcceleratorINTEL_t( cl_context context, cl_accelerator_type_intel accelerator_type, size_t descriptor_size, const void* descriptor, - cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2; + cl_int* errcode_ret); -typedef cl_int (CL_API_CALL * -clGetAcceleratorInfoINTEL_fn)( +typedef clCreateAcceleratorINTEL_t * +clCreateAcceleratorINTEL_fn CL_API_SUFFIX__VERSION_1_2; + +typedef cl_int CL_API_CALL +clGetAcceleratorInfoINTEL_t( cl_accelerator_intel accelerator, cl_accelerator_info_intel param_name, size_t param_value_size, void* param_value, - size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_2; + size_t* param_value_size_ret); -typedef cl_int (CL_API_CALL * -clRetainAcceleratorINTEL_fn)( - cl_accelerator_intel accelerator) CL_API_SUFFIX__VERSION_1_2; +typedef clGetAcceleratorInfoINTEL_t * +clGetAcceleratorInfoINTEL_fn CL_API_SUFFIX__VERSION_1_2; -typedef cl_int (CL_API_CALL * -clReleaseAcceleratorINTEL_fn)( - cl_accelerator_intel accelerator) CL_API_SUFFIX__VERSION_1_2; +typedef cl_int CL_API_CALL +clRetainAcceleratorINTEL_t( + cl_accelerator_intel accelerator); + +typedef clRetainAcceleratorINTEL_t * +clRetainAcceleratorINTEL_fn CL_API_SUFFIX__VERSION_1_2; + +typedef cl_int CL_API_CALL +clReleaseAcceleratorINTEL_t( + cl_accelerator_intel accelerator); + +typedef clReleaseAcceleratorINTEL_t * +clReleaseAcceleratorINTEL_fn CL_API_SUFFIX__VERSION_1_2; #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) @@ -2296,6 +2806,9 @@ clReleaseAcceleratorINTEL( #define CL_INTEL_MOTION_ESTIMATION_EXTENSION_NAME \ "cl_intel_motion_estimation" + +#define CL_INTEL_MOTION_ESTIMATION_EXTENSION_VERSION CL_MAKE_VERSION(0, 0, 0) + typedef struct _cl_motion_estimation_desc_intel { cl_uint mb_block_type; cl_uint subpixel_mode; @@ -2332,6 +2845,9 @@ typedef struct _cl_motion_estimation_desc_intel { #define CL_INTEL_ADVANCED_MOTION_ESTIMATION_EXTENSION_NAME \ "cl_intel_advanced_motion_estimation" + +#define CL_INTEL_ADVANCED_MOTION_ESTIMATION_EXTENSION_VERSION CL_MAKE_VERSION(0, 0, 0) + /* cl_device_info */ #define CL_DEVICE_ME_VERSION_INTEL 0x407E @@ -2343,7 +2859,7 @@ typedef struct _cl_motion_estimation_desc_intel { #define CL_ME_LUMA_INTRA_PREDICT_ENABLED_INTEL 0x2 #define CL_ME_SKIP_BLOCK_TYPE_16x16_INTEL 0x0 -#define CL_ME_SKIP_BLOCK_TYPE_8x8_INTEL 0x1 +#define CL_ME_SKIP_BLOCK_TYPE_8x8_INTEL 0x4 #define CL_ME_COST_PENALTY_NONE_INTEL 0x0 #define CL_ME_COST_PENALTY_LOW_INTEL 0x1 @@ -2388,6 +2904,9 @@ typedef struct _cl_motion_estimation_desc_intel { #define CL_INTEL_SIMULTANEOUS_SHARING_EXTENSION_NAME \ "cl_intel_simultaneous_sharing" + +#define CL_INTEL_SIMULTANEOUS_SHARING_EXTENSION_VERSION CL_MAKE_VERSION(0, 0, 0) + /* cl_device_info */ #define CL_DEVICE_SIMULTANEOUS_INTEROPS_INTEL 0x4104 #define CL_DEVICE_NUM_SIMULTANEOUS_INTEROPS_INTEL 0x4105 @@ -2399,6 +2918,9 @@ typedef struct _cl_motion_estimation_desc_intel { #define CL_INTEL_EGL_IMAGE_YUV_EXTENSION_NAME \ "cl_intel_egl_image_yuv" + +#define CL_INTEL_EGL_IMAGE_YUV_EXTENSION_VERSION CL_MAKE_VERSION(0, 0, 0) + /* cl_egl_image_properties_khr */ #define CL_EGL_YUV_PLANE_INTEL 0x4107 @@ -2409,6 +2931,9 @@ typedef struct _cl_motion_estimation_desc_intel { #define CL_INTEL_PACKED_YUV_EXTENSION_NAME \ "cl_intel_packed_yuv" + +#define CL_INTEL_PACKED_YUV_EXTENSION_VERSION CL_MAKE_VERSION(0, 0, 0) + /* cl_channel_order */ #define CL_YUYV_INTEL 0x4076 #define CL_UYVY_INTEL 0x4077 @@ -2422,6 +2947,9 @@ typedef struct _cl_motion_estimation_desc_intel { #define CL_INTEL_REQUIRED_SUBGROUP_SIZE_EXTENSION_NAME \ "cl_intel_required_subgroup_size" + +#define CL_INTEL_REQUIRED_SUBGROUP_SIZE_EXTENSION_VERSION CL_MAKE_VERSION(0, 0, 0) + /* cl_device_info */ #define CL_DEVICE_SUB_GROUP_SIZES_INTEL 0x4108 @@ -2438,10 +2966,15 @@ typedef struct _cl_motion_estimation_desc_intel { #define CL_INTEL_DRIVER_DIAGNOSTICS_EXTENSION_NAME \ "cl_intel_driver_diagnostics" -typedef cl_uint cl_diagnostics_verbose_level; + +#define CL_INTEL_DRIVER_DIAGNOSTICS_EXTENSION_VERSION CL_MAKE_VERSION(0, 0, 0) + +typedef cl_bitfield cl_diagnostic_verbose_level_intel; /* cl_context_properties */ #define CL_CONTEXT_SHOW_DIAGNOSTICS_INTEL 0x4106 + +/* cl_diagnostic_verbose_level_intel */ #define CL_CONTEXT_DIAGNOSTICS_LEVEL_ALL_INTEL 0xff #define CL_CONTEXT_DIAGNOSTICS_LEVEL_GOOD_INTEL (1 << 0) #define CL_CONTEXT_DIAGNOSTICS_LEVEL_BAD_INTEL (1 << 1) @@ -2454,6 +2987,9 @@ typedef cl_uint cl_diagnostics_verbose_level; #define CL_INTEL_PLANAR_YUV_EXTENSION_NAME \ "cl_intel_planar_yuv" + +#define CL_INTEL_PLANAR_YUV_EXTENSION_VERSION CL_MAKE_VERSION(0, 0, 0) + /* cl_channel_order */ #define CL_NV12_INTEL 0x410E @@ -2472,6 +3008,9 @@ typedef cl_uint cl_diagnostics_verbose_level; #define CL_INTEL_DEVICE_SIDE_AVC_MOTION_ESTIMATION_EXTENSION_NAME \ "cl_intel_device_side_avc_motion_estimation" + +#define CL_INTEL_DEVICE_SIDE_AVC_MOTION_ESTIMATION_EXTENSION_VERSION CL_MAKE_VERSION(0, 0, 0) + /* cl_device_info */ #define CL_DEVICE_AVC_ME_VERSION_INTEL 0x410B #define CL_DEVICE_AVC_ME_SUPPORTS_TEXTURE_SAMPLER_USE_INTEL 0x410C @@ -2629,6 +3168,9 @@ typedef cl_uint cl_diagnostics_verbose_level; #define CL_INTEL_UNIFIED_SHARED_MEMORY_EXTENSION_NAME \ "cl_intel_unified_shared_memory" + +#define CL_INTEL_UNIFIED_SHARED_MEMORY_EXTENSION_VERSION CL_MAKE_VERSION(0, 0, 0) + typedef cl_bitfield cl_device_unified_shared_memory_capabilities_intel; typedef cl_properties cl_mem_properties_intel; typedef cl_bitfield cl_mem_alloc_flags_intel; @@ -2682,59 +3224,80 @@ typedef cl_uint cl_mem_advice_intel; #define CL_COMMAND_MEMADVISE_INTEL 0x4207 -typedef void* (CL_API_CALL * -clHostMemAllocINTEL_fn)( +typedef void* CL_API_CALL +clHostMemAllocINTEL_t( cl_context context, const cl_mem_properties_intel* properties, size_t size, cl_uint alignment, - cl_int* errcode_ret) ; + cl_int* errcode_ret); -typedef void* (CL_API_CALL * -clDeviceMemAllocINTEL_fn)( +typedef clHostMemAllocINTEL_t * +clHostMemAllocINTEL_fn ; + +typedef void* CL_API_CALL +clDeviceMemAllocINTEL_t( cl_context context, cl_device_id device, const cl_mem_properties_intel* properties, size_t size, cl_uint alignment, - cl_int* errcode_ret) ; + cl_int* errcode_ret); -typedef void* (CL_API_CALL * -clSharedMemAllocINTEL_fn)( +typedef clDeviceMemAllocINTEL_t * +clDeviceMemAllocINTEL_fn ; + +typedef void* CL_API_CALL +clSharedMemAllocINTEL_t( cl_context context, cl_device_id device, const cl_mem_properties_intel* properties, size_t size, cl_uint alignment, - cl_int* errcode_ret) ; + cl_int* errcode_ret); -typedef cl_int (CL_API_CALL * -clMemFreeINTEL_fn)( +typedef clSharedMemAllocINTEL_t * +clSharedMemAllocINTEL_fn ; + +typedef cl_int CL_API_CALL +clMemFreeINTEL_t( cl_context context, - void* ptr) ; + void* ptr); -typedef cl_int (CL_API_CALL * -clMemBlockingFreeINTEL_fn)( +typedef clMemFreeINTEL_t * +clMemFreeINTEL_fn ; + +typedef cl_int CL_API_CALL +clMemBlockingFreeINTEL_t( cl_context context, - void* ptr) ; + void* ptr); -typedef cl_int (CL_API_CALL * -clGetMemAllocInfoINTEL_fn)( +typedef clMemBlockingFreeINTEL_t * +clMemBlockingFreeINTEL_fn ; + +typedef cl_int CL_API_CALL +clGetMemAllocInfoINTEL_t( cl_context context, const void* ptr, cl_mem_info_intel param_name, size_t param_value_size, void* param_value, - size_t* param_value_size_ret) ; + size_t* param_value_size_ret); -typedef cl_int (CL_API_CALL * -clSetKernelArgMemPointerINTEL_fn)( +typedef clGetMemAllocInfoINTEL_t * +clGetMemAllocInfoINTEL_fn ; + +typedef cl_int CL_API_CALL +clSetKernelArgMemPointerINTEL_t( cl_kernel kernel, cl_uint arg_index, - const void* arg_value) ; + const void* arg_value); -typedef cl_int (CL_API_CALL * -clEnqueueMemFillINTEL_fn)( +typedef clSetKernelArgMemPointerINTEL_t * +clSetKernelArgMemPointerINTEL_fn ; + +typedef cl_int CL_API_CALL +clEnqueueMemFillINTEL_t( cl_command_queue command_queue, void* dst_ptr, const void* pattern, @@ -2742,10 +3305,13 @@ clEnqueueMemFillINTEL_fn)( size_t size, cl_uint num_events_in_wait_list, const cl_event* event_wait_list, - cl_event* event) ; + cl_event* event); -typedef cl_int (CL_API_CALL * -clEnqueueMemcpyINTEL_fn)( +typedef clEnqueueMemFillINTEL_t * +clEnqueueMemFillINTEL_fn ; + +typedef cl_int CL_API_CALL +clEnqueueMemcpyINTEL_t( cl_command_queue command_queue, cl_bool blocking, void* dst_ptr, @@ -2753,17 +3319,23 @@ clEnqueueMemcpyINTEL_fn)( size_t size, cl_uint num_events_in_wait_list, const cl_event* event_wait_list, - cl_event* event) ; + cl_event* event); -typedef cl_int (CL_API_CALL * -clEnqueueMemAdviseINTEL_fn)( +typedef clEnqueueMemcpyINTEL_t * +clEnqueueMemcpyINTEL_fn ; + +typedef cl_int CL_API_CALL +clEnqueueMemAdviseINTEL_t( cl_command_queue command_queue, const void* ptr, size_t size, cl_mem_advice_intel advice, cl_uint num_events_in_wait_list, const cl_event* event_wait_list, - cl_event* event) ; + cl_event* event); + +typedef clEnqueueMemAdviseINTEL_t * +clEnqueueMemAdviseINTEL_fn ; #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) @@ -2855,15 +3427,18 @@ clEnqueueMemAdviseINTEL( #if defined(CL_VERSION_1_2) /* Requires OpenCL 1.2 for cl_mem_migration_flags: */ -typedef cl_int (CL_API_CALL * -clEnqueueMigrateMemINTEL_fn)( +typedef cl_int CL_API_CALL +clEnqueueMigrateMemINTEL_t( cl_command_queue command_queue, const void* ptr, size_t size, cl_mem_migration_flags flags, cl_uint num_events_in_wait_list, const cl_event* event_wait_list, - cl_event* event) ; + cl_event* event); + +typedef clEnqueueMigrateMemINTEL_t * +clEnqueueMigrateMemINTEL_fn ; #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) @@ -2883,15 +3458,18 @@ clEnqueueMigrateMemINTEL( /* deprecated, use clEnqueueMemFillINTEL instead */ -typedef cl_int (CL_API_CALL * -clEnqueueMemsetINTEL_fn)( +typedef cl_int CL_API_CALL +clEnqueueMemsetINTEL_t( cl_command_queue command_queue, void* dst_ptr, cl_int value, size_t size, cl_uint num_events_in_wait_list, const cl_event* event_wait_list, - cl_event* event) ; + cl_event* event); + +typedef clEnqueueMemsetINTEL_t * +clEnqueueMemsetINTEL_fn ; #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) @@ -2914,6 +3492,9 @@ clEnqueueMemsetINTEL( #define CL_INTEL_MEM_ALLOC_BUFFER_LOCATION_EXTENSION_NAME \ "cl_intel_mem_alloc_buffer_location" + +#define CL_INTEL_MEM_ALLOC_BUFFER_LOCATION_EXTENSION_VERSION CL_MAKE_VERSION(0, 0, 0) + /* cl_mem_properties_intel */ #define CL_MEM_ALLOC_BUFFER_LOCATION_INTEL 0x419E @@ -2927,17 +3508,23 @@ clEnqueueMemsetINTEL( #define CL_INTEL_CREATE_BUFFER_WITH_PROPERTIES_EXTENSION_NAME \ "cl_intel_create_buffer_with_properties" + +#define CL_INTEL_CREATE_BUFFER_WITH_PROPERTIES_EXTENSION_VERSION CL_MAKE_VERSION(0, 0, 0) + /* type cl_mem_properties_intel */ -typedef cl_mem (CL_API_CALL * -clCreateBufferWithPropertiesINTEL_fn)( +typedef cl_mem CL_API_CALL +clCreateBufferWithPropertiesINTEL_t( cl_context context, const cl_mem_properties_intel* properties, cl_mem_flags flags, size_t size, void* host_ptr, - cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0; + cl_int* errcode_ret); + +typedef clCreateBufferWithPropertiesINTEL_t * +clCreateBufferWithPropertiesINTEL_fn CL_API_SUFFIX__VERSION_1_0; #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) @@ -2959,6 +3546,9 @@ clCreateBufferWithPropertiesINTEL( #define CL_INTEL_PROGRAM_SCOPE_HOST_PIPE_EXTENSION_NAME \ "cl_intel_program_scope_host_pipe" + +#define CL_INTEL_PROGRAM_SCOPE_HOST_PIPE_EXTENSION_VERSION CL_MAKE_VERSION(0, 0, 0) + /* clGetEventInfo response when param_name is CL_EVENT_COMMAND_TYPE */ #define CL_COMMAND_READ_HOST_PIPE_INTEL 0x4214 #define CL_COMMAND_WRITE_HOST_PIPE_INTEL 0x4215 @@ -2968,8 +3558,8 @@ clCreateBufferWithPropertiesINTEL( #define CL_PROGRAM_HOST_PIPE_NAMES_INTEL 0x4217 -typedef cl_int (CL_API_CALL * -clEnqueueReadHostPipeINTEL_fn)( +typedef cl_int CL_API_CALL +clEnqueueReadHostPipeINTEL_t( cl_command_queue command_queue, cl_program program, const char* pipe_symbol, @@ -2978,10 +3568,13 @@ clEnqueueReadHostPipeINTEL_fn)( size_t size, cl_uint num_events_in_wait_list, const cl_event* event_wait_list, - cl_event* event) CL_API_SUFFIX__VERSION_1_0; + cl_event* event); -typedef cl_int (CL_API_CALL * -clEnqueueWriteHostPipeINTEL_fn)( +typedef clEnqueueReadHostPipeINTEL_t * +clEnqueueReadHostPipeINTEL_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_int CL_API_CALL +clEnqueueWriteHostPipeINTEL_t( cl_command_queue command_queue, cl_program program, const char* pipe_symbol, @@ -2990,7 +3583,10 @@ clEnqueueWriteHostPipeINTEL_fn)( size_t size, cl_uint num_events_in_wait_list, const cl_event* event_wait_list, - cl_event* event) CL_API_SUFFIX__VERSION_1_0; + cl_event* event); + +typedef clEnqueueWriteHostPipeINTEL_t * +clEnqueueWriteHostPipeINTEL_fn CL_API_SUFFIX__VERSION_1_0; #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) @@ -3027,6 +3623,9 @@ clEnqueueWriteHostPipeINTEL( #define CL_INTEL_MEM_CHANNEL_PROPERTY_EXTENSION_NAME \ "cl_intel_mem_channel_property" + +#define CL_INTEL_MEM_CHANNEL_PROPERTY_EXTENSION_VERSION CL_MAKE_VERSION(0, 0, 0) + /* cl_mem_properties_intel */ #define CL_MEM_CHANNEL_INTEL 0x4213 @@ -3037,6 +3636,9 @@ clEnqueueWriteHostPipeINTEL( #define CL_INTEL_MEM_FORCE_HOST_MEMORY_EXTENSION_NAME \ "cl_intel_mem_force_host_memory" + +#define CL_INTEL_MEM_FORCE_HOST_MEMORY_EXTENSION_VERSION CL_MAKE_VERSION(0, 0, 0) + /* cl_mem_flags */ #define CL_MEM_FORCE_HOST_MEMORY_INTEL (1 << 20) @@ -3047,6 +3649,9 @@ clEnqueueWriteHostPipeINTEL( #define CL_INTEL_COMMAND_QUEUE_FAMILIES_EXTENSION_NAME \ "cl_intel_command_queue_families" + +#define CL_INTEL_COMMAND_QUEUE_FAMILIES_EXTENSION_VERSION CL_MAKE_VERSION(0, 0, 0) + typedef cl_bitfield cl_command_queue_capabilities_intel; #define CL_QUEUE_FAMILY_MAX_NAME_SIZE_INTEL 64 @@ -3091,6 +3696,9 @@ typedef struct _cl_queue_family_properties_intel { #define CL_INTEL_QUEUE_NO_SYNC_OPERATIONS_EXTENSION_NAME \ "cl_intel_queue_no_sync_operations" + +#define CL_INTEL_QUEUE_NO_SYNC_OPERATIONS_EXTENSION_VERSION CL_MAKE_VERSION(0, 0, 0) + /* cl_command_queue_properties */ #define CL_QUEUE_NO_SYNC_OPERATIONS_INTEL (1 << 29) @@ -3101,6 +3709,9 @@ typedef struct _cl_queue_family_properties_intel { #define CL_INTEL_SHARING_FORMAT_QUERY_EXTENSION_NAME \ "cl_intel_sharing_format_query" + +#define CL_INTEL_SHARING_FORMAT_QUERY_EXTENSION_VERSION CL_MAKE_VERSION(0, 0, 0) + /*************************************************************** * cl_ext_image_requirements_info ***************************************************************/ @@ -3110,6 +3721,9 @@ typedef struct _cl_queue_family_properties_intel { #define CL_EXT_IMAGE_REQUIREMENTS_INFO_EXTENSION_NAME \ "cl_ext_image_requirements_info" + +#define CL_EXT_IMAGE_REQUIREMENTS_INFO_EXTENSION_VERSION CL_MAKE_VERSION(0, 5, 0) + /* Types */ typedef cl_uint cl_image_requirements_info_ext; @@ -3124,8 +3738,8 @@ typedef cl_uint cl_image_requirements_info_ext; /* Enqueued Commands APIs */ -typedef cl_int (CL_API_CALL * -clGetImageRequirementsInfoEXT_fn)( +typedef cl_int CL_API_CALL +clGetImageRequirementsInfoEXT_t( cl_context context, const cl_mem_properties* properties, cl_mem_flags flags, @@ -3134,7 +3748,10 @@ clGetImageRequirementsInfoEXT_fn)( cl_image_requirements_info_ext param_name, size_t param_value_size, void* param_value, - size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_3_0; + size_t* param_value_size_ret); + +typedef clGetImageRequirementsInfoEXT_t * +clGetImageRequirementsInfoEXT_fn CL_API_SUFFIX__VERSION_3_0; #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) @@ -3163,6 +3780,9 @@ clGetImageRequirementsInfoEXT( #define CL_EXT_IMAGE_FROM_BUFFER_EXTENSION_NAME \ "cl_ext_image_from_buffer" + +#define CL_EXT_IMAGE_FROM_BUFFER_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + /* cl_image_requirements_info_ext */ #define CL_IMAGE_REQUIREMENTS_SLICE_PITCH_ALIGNMENT_EXT 0x1291 @@ -3175,6 +3795,9 @@ clGetImageRequirementsInfoEXT( #define CL_LOADER_INFO_EXTENSION_NAME \ "cl_loader_info" + +#define CL_LOADER_INFO_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + typedef cl_uint cl_icdl_info; /* cl_icdl_info */ @@ -3184,12 +3807,15 @@ typedef cl_uint cl_icdl_info; #define CL_ICDL_VENDOR 4 -typedef cl_int (CL_API_CALL * -clGetICDLoaderInfoOCLICD_fn)( +typedef cl_int CL_API_CALL +clGetICDLoaderInfoOCLICD_t( cl_icdl_info param_name, size_t param_value_size, void* param_value, - size_t* param_value_size_ret) ; + size_t* param_value_size_ret); + +typedef clGetICDLoaderInfoOCLICD_t * +clGetICDLoaderInfoOCLICD_fn ; #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) @@ -3209,11 +3835,14 @@ clGetICDLoaderInfoOCLICD( #define CL_KHR_DEPTH_IMAGES_EXTENSION_NAME \ "cl_khr_depth_images" -#if !defined(CL_VERSION_1_2) -/* cl_channel_order - defined in CL.h for OpenCL 1.2 (?) and newer */ + +#define CL_KHR_DEPTH_IMAGES_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + +#if !defined(CL_VERSION_2_0) +/* cl_channel_order - defined in CL.h for OpenCL 2.0 and newer */ #define CL_DEPTH 0x10BD -#endif /* !defined(CL_VERSION_1_2) */ +#endif /* !defined(CL_VERSION_2_0) */ /*************************************************************** * cl_ext_float_atomics @@ -3222,6 +3851,9 @@ clGetICDLoaderInfoOCLICD( #define CL_EXT_FLOAT_ATOMICS_EXTENSION_NAME \ "cl_ext_float_atomics" + +#define CL_EXT_FLOAT_ATOMICS_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + typedef cl_bitfield cl_device_fp_atomic_capabilities_ext; /* cl_device_fp_atomic_capabilities_ext */ @@ -3244,6 +3876,9 @@ typedef cl_bitfield cl_device_fp_atomic_capabilities_ext; #define CL_INTEL_CREATE_MEM_OBJECT_PROPERTIES_EXTENSION_NAME \ "cl_intel_create_mem_object_properties" + +#define CL_INTEL_CREATE_MEM_OBJECT_PROPERTIES_EXTENSION_VERSION CL_MAKE_VERSION(0, 0, 0) + /* cl_mem_properties */ #define CL_MEM_LOCALLY_UNCACHED_RESOURCE_INTEL 0x4218 #define CL_MEM_DEVICE_ID_INTEL 0x4219 @@ -3256,10 +3891,16 @@ typedef cl_bitfield cl_device_fp_atomic_capabilities_ext; "cl_pocl_content_size" -typedef cl_int (CL_API_CALL * -clSetContentSizeBufferPoCL_fn)( +#define CL_POCL_CONTENT_SIZE_EXTENSION_VERSION CL_MAKE_VERSION(0, 0, 0) + + +typedef cl_int CL_API_CALL +clSetContentSizeBufferPoCL_t( cl_mem buffer, - cl_mem content_size_buffer) CL_API_SUFFIX__VERSION_1_0; + cl_mem content_size_buffer); + +typedef clSetContentSizeBufferPoCL_t * +clSetContentSizeBufferPoCL_fn CL_API_SUFFIX__VERSION_1_0; #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) @@ -3270,6 +3911,460 @@ clSetContentSizeBufferPoCL( #endif /* !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) */ +/*************************************************************** +* cl_ext_image_raw10_raw12 +***************************************************************/ +#define cl_ext_image_raw10_raw12 1 +#define CL_EXT_IMAGE_RAW10_RAW12_EXTENSION_NAME \ + "cl_ext_image_raw10_raw12" + + +#define CL_EXT_IMAGE_RAW10_RAW12_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + +/* cl_channel_type */ +#define CL_UNSIGNED_INT_RAW10_EXT 0x10E3 +#define CL_UNSIGNED_INT_RAW12_EXT 0x10E4 + +/*************************************************************** +* cl_khr_3d_image_writes +***************************************************************/ +#define cl_khr_3d_image_writes 1 +#define CL_KHR_3D_IMAGE_WRITES_EXTENSION_NAME \ + "cl_khr_3d_image_writes" + + +#define CL_KHR_3D_IMAGE_WRITES_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + +/*************************************************************** +* cl_khr_async_work_group_copy_fence +***************************************************************/ +#define cl_khr_async_work_group_copy_fence 1 +#define CL_KHR_ASYNC_WORK_GROUP_COPY_FENCE_EXTENSION_NAME \ + "cl_khr_async_work_group_copy_fence" + + +#define CL_KHR_ASYNC_WORK_GROUP_COPY_FENCE_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + +/*************************************************************** +* cl_khr_byte_addressable_store +***************************************************************/ +#define cl_khr_byte_addressable_store 1 +#define CL_KHR_BYTE_ADDRESSABLE_STORE_EXTENSION_NAME \ + "cl_khr_byte_addressable_store" + + +#define CL_KHR_BYTE_ADDRESSABLE_STORE_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + +/*************************************************************** +* cl_khr_device_enqueue_local_arg_types +***************************************************************/ +#define cl_khr_device_enqueue_local_arg_types 1 +#define CL_KHR_DEVICE_ENQUEUE_LOCAL_ARG_TYPES_EXTENSION_NAME \ + "cl_khr_device_enqueue_local_arg_types" + + +#define CL_KHR_DEVICE_ENQUEUE_LOCAL_ARG_TYPES_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + +/*************************************************************** +* cl_khr_expect_assume +***************************************************************/ +#define cl_khr_expect_assume 1 +#define CL_KHR_EXPECT_ASSUME_EXTENSION_NAME \ + "cl_khr_expect_assume" + + +#define CL_KHR_EXPECT_ASSUME_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + +/*************************************************************** +* cl_khr_extended_async_copies +***************************************************************/ +#define cl_khr_extended_async_copies 1 +#define CL_KHR_EXTENDED_ASYNC_COPIES_EXTENSION_NAME \ + "cl_khr_extended_async_copies" + + +#define CL_KHR_EXTENDED_ASYNC_COPIES_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + +/*************************************************************** +* cl_khr_extended_bit_ops +***************************************************************/ +#define cl_khr_extended_bit_ops 1 +#define CL_KHR_EXTENDED_BIT_OPS_EXTENSION_NAME \ + "cl_khr_extended_bit_ops" + + +#define CL_KHR_EXTENDED_BIT_OPS_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + +/*************************************************************** +* cl_khr_global_int32_base_atomics +***************************************************************/ +#define cl_khr_global_int32_base_atomics 1 +#define CL_KHR_GLOBAL_INT32_BASE_ATOMICS_EXTENSION_NAME \ + "cl_khr_global_int32_base_atomics" + + +#define CL_KHR_GLOBAL_INT32_BASE_ATOMICS_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + +/*************************************************************** +* cl_khr_global_int32_extended_atomics +***************************************************************/ +#define cl_khr_global_int32_extended_atomics 1 +#define CL_KHR_GLOBAL_INT32_EXTENDED_ATOMICS_EXTENSION_NAME \ + "cl_khr_global_int32_extended_atomics" + + +#define CL_KHR_GLOBAL_INT32_EXTENDED_ATOMICS_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + +/*************************************************************** +* cl_khr_int64_base_atomics +***************************************************************/ +#define cl_khr_int64_base_atomics 1 +#define CL_KHR_INT64_BASE_ATOMICS_EXTENSION_NAME \ + "cl_khr_int64_base_atomics" + + +#define CL_KHR_INT64_BASE_ATOMICS_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + +/*************************************************************** +* cl_khr_int64_extended_atomics +***************************************************************/ +#define cl_khr_int64_extended_atomics 1 +#define CL_KHR_INT64_EXTENDED_ATOMICS_EXTENSION_NAME \ + "cl_khr_int64_extended_atomics" + + +#define CL_KHR_INT64_EXTENDED_ATOMICS_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + +/*************************************************************** +* cl_khr_kernel_clock (beta) +***************************************************************/ +#if defined(CL_ENABLE_BETA_EXTENSIONS) + +#define cl_khr_kernel_clock 1 +#define CL_KHR_KERNEL_CLOCK_EXTENSION_NAME \ + "cl_khr_kernel_clock" + + +#define CL_KHR_KERNEL_CLOCK_EXTENSION_VERSION CL_MAKE_VERSION(0, 9, 0) + +/* cl_device_info */ +#define CL_DEVICE_KERNEL_CLOCK_CAPABILITIES_KHR 0x1076 + +typedef cl_bitfield cl_device_kernel_clock_capabilities_khr; + +/* cl_device_kernel_clock_capabilities_khr */ +#define CL_DEVICE_KERNEL_CLOCK_SCOPE_DEVICE_KHR (1 << 0) +#define CL_DEVICE_KERNEL_CLOCK_SCOPE_WORK_GROUP_KHR (1 << 1) +#define CL_DEVICE_KERNEL_CLOCK_SCOPE_SUB_GROUP_KHR (1 << 2) + +#endif /* defined(CL_ENABLE_BETA_EXTENSIONS) */ + +/*************************************************************** +* cl_khr_local_int32_base_atomics +***************************************************************/ +#define cl_khr_local_int32_base_atomics 1 +#define CL_KHR_LOCAL_INT32_BASE_ATOMICS_EXTENSION_NAME \ + "cl_khr_local_int32_base_atomics" + + +#define CL_KHR_LOCAL_INT32_BASE_ATOMICS_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + +/*************************************************************** +* cl_khr_local_int32_extended_atomics +***************************************************************/ +#define cl_khr_local_int32_extended_atomics 1 +#define CL_KHR_LOCAL_INT32_EXTENDED_ATOMICS_EXTENSION_NAME \ + "cl_khr_local_int32_extended_atomics" + + +#define CL_KHR_LOCAL_INT32_EXTENDED_ATOMICS_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + +/*************************************************************** +* cl_khr_mipmap_image_writes +***************************************************************/ +#define cl_khr_mipmap_image_writes 1 +#define CL_KHR_MIPMAP_IMAGE_WRITES_EXTENSION_NAME \ + "cl_khr_mipmap_image_writes" + + +#define CL_KHR_MIPMAP_IMAGE_WRITES_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + +/*************************************************************** +* cl_khr_select_fprounding_mode +***************************************************************/ +#define cl_khr_select_fprounding_mode 1 +#define CL_KHR_SELECT_FPROUNDING_MODE_EXTENSION_NAME \ + "cl_khr_select_fprounding_mode" + + +#define CL_KHR_SELECT_FPROUNDING_MODE_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + +/*************************************************************** +* cl_khr_spirv_extended_debug_info +***************************************************************/ +#define cl_khr_spirv_extended_debug_info 1 +#define CL_KHR_SPIRV_EXTENDED_DEBUG_INFO_EXTENSION_NAME \ + "cl_khr_spirv_extended_debug_info" + + +#define CL_KHR_SPIRV_EXTENDED_DEBUG_INFO_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + +/*************************************************************** +* cl_khr_spirv_linkonce_odr +***************************************************************/ +#define cl_khr_spirv_linkonce_odr 1 +#define CL_KHR_SPIRV_LINKONCE_ODR_EXTENSION_NAME \ + "cl_khr_spirv_linkonce_odr" + + +#define CL_KHR_SPIRV_LINKONCE_ODR_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + +/*************************************************************** +* cl_khr_spirv_no_integer_wrap_decoration +***************************************************************/ +#define cl_khr_spirv_no_integer_wrap_decoration 1 +#define CL_KHR_SPIRV_NO_INTEGER_WRAP_DECORATION_EXTENSION_NAME \ + "cl_khr_spirv_no_integer_wrap_decoration" + + +#define CL_KHR_SPIRV_NO_INTEGER_WRAP_DECORATION_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + +/*************************************************************** +* cl_khr_srgb_image_writes +***************************************************************/ +#define cl_khr_srgb_image_writes 1 +#define CL_KHR_SRGB_IMAGE_WRITES_EXTENSION_NAME \ + "cl_khr_srgb_image_writes" + + +#define CL_KHR_SRGB_IMAGE_WRITES_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + +/*************************************************************** +* cl_khr_subgroup_ballot +***************************************************************/ +#define cl_khr_subgroup_ballot 1 +#define CL_KHR_SUBGROUP_BALLOT_EXTENSION_NAME \ + "cl_khr_subgroup_ballot" + + +#define CL_KHR_SUBGROUP_BALLOT_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + +/*************************************************************** +* cl_khr_subgroup_clustered_reduce +***************************************************************/ +#define cl_khr_subgroup_clustered_reduce 1 +#define CL_KHR_SUBGROUP_CLUSTERED_REDUCE_EXTENSION_NAME \ + "cl_khr_subgroup_clustered_reduce" + + +#define CL_KHR_SUBGROUP_CLUSTERED_REDUCE_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + +/*************************************************************** +* cl_khr_subgroup_extended_types +***************************************************************/ +#define cl_khr_subgroup_extended_types 1 +#define CL_KHR_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME \ + "cl_khr_subgroup_extended_types" + + +#define CL_KHR_SUBGROUP_EXTENDED_TYPES_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + +/*************************************************************** +* cl_khr_subgroup_non_uniform_arithmetic +***************************************************************/ +#define cl_khr_subgroup_non_uniform_arithmetic 1 +#define CL_KHR_SUBGROUP_NON_UNIFORM_ARITHMETIC_EXTENSION_NAME \ + "cl_khr_subgroup_non_uniform_arithmetic" + + +#define CL_KHR_SUBGROUP_NON_UNIFORM_ARITHMETIC_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + +/*************************************************************** +* cl_khr_subgroup_non_uniform_vote +***************************************************************/ +#define cl_khr_subgroup_non_uniform_vote 1 +#define CL_KHR_SUBGROUP_NON_UNIFORM_VOTE_EXTENSION_NAME \ + "cl_khr_subgroup_non_uniform_vote" + + +#define CL_KHR_SUBGROUP_NON_UNIFORM_VOTE_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + +/*************************************************************** +* cl_khr_subgroup_rotate +***************************************************************/ +#define cl_khr_subgroup_rotate 1 +#define CL_KHR_SUBGROUP_ROTATE_EXTENSION_NAME \ + "cl_khr_subgroup_rotate" + + +#define CL_KHR_SUBGROUP_ROTATE_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + +/*************************************************************** +* cl_khr_subgroup_shuffle +***************************************************************/ +#define cl_khr_subgroup_shuffle 1 +#define CL_KHR_SUBGROUP_SHUFFLE_EXTENSION_NAME \ + "cl_khr_subgroup_shuffle" + + +#define CL_KHR_SUBGROUP_SHUFFLE_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + +/*************************************************************** +* cl_khr_subgroup_shuffle_relative +***************************************************************/ +#define cl_khr_subgroup_shuffle_relative 1 +#define CL_KHR_SUBGROUP_SHUFFLE_RELATIVE_EXTENSION_NAME \ + "cl_khr_subgroup_shuffle_relative" + + +#define CL_KHR_SUBGROUP_SHUFFLE_RELATIVE_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + +/*************************************************************** +* cl_khr_work_group_uniform_arithmetic +***************************************************************/ +#define cl_khr_work_group_uniform_arithmetic 1 +#define CL_KHR_WORK_GROUP_UNIFORM_ARITHMETIC_EXTENSION_NAME \ + "cl_khr_work_group_uniform_arithmetic" + + +#define CL_KHR_WORK_GROUP_UNIFORM_ARITHMETIC_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + +/*************************************************************** +* cl_ext_buffer_device_address +***************************************************************/ +#define cl_ext_buffer_device_address 1 +#define CL_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME \ + "cl_ext_buffer_device_address" + + +#define CL_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 2) + +typedef cl_ulong cl_mem_device_address_ext; + + +typedef cl_int CL_API_CALL +clSetKernelArgDevicePointerEXT_t( + cl_kernel kernel, + cl_uint arg_index, + cl_mem_device_address_ext arg_value); + +typedef clSetKernelArgDevicePointerEXT_t * +clSetKernelArgDevicePointerEXT_fn CL_API_SUFFIX__VERSION_3_0; + +#if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) + +extern CL_API_ENTRY cl_int CL_API_CALL +clSetKernelArgDevicePointerEXT( + cl_kernel kernel, + cl_uint arg_index, + cl_mem_device_address_ext arg_value) CL_API_SUFFIX__VERSION_3_0; + +#endif /* !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) */ + +/* cl_mem_properties */ +#define CL_MEM_DEVICE_PRIVATE_ADDRESS_EXT 0x5000 + +/* cl_mem_info */ +#define CL_MEM_DEVICE_ADDRESS_EXT 0x5001 + +/* cl_kernel_exec_info */ +#define CL_KERNEL_EXEC_INFO_DEVICE_PTRS_EXT 0x5002 + +/*************************************************************** +* cl_ext_image_unorm_int_2_101010 +***************************************************************/ +#define cl_ext_image_unorm_int_2_101010 1 +#define CL_EXT_IMAGE_UNORM_INT_2_101010_EXTENSION_NAME \ + "cl_ext_image_unorm_int_2_101010" + + +#define CL_EXT_IMAGE_UNORM_INT_2_101010_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + +/* cl_channel_type */ +#define CL_UNORM_INT_2_101010_EXT 0x10E5 + +/*************************************************************** +* cl_ext_immutable_memory_objects +***************************************************************/ +#define cl_ext_immutable_memory_objects 1 +#define CL_EXT_IMMUTABLE_MEMORY_OBJECTS_EXTENSION_NAME \ + "cl_ext_immutable_memory_objects" + + +#define CL_EXT_IMMUTABLE_MEMORY_OBJECTS_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + +/* cl_mem_flags */ +#define CL_MEM_IMMUTABLE_EXT (1 << 6) + +/*************************************************************** +* cl_img_cancel_command +***************************************************************/ +#define cl_img_cancel_command 1 +#define CL_IMG_CANCEL_COMMAND_EXTENSION_NAME \ + "cl_img_cancel_command" + + +#define CL_IMG_CANCEL_COMMAND_EXTENSION_VERSION CL_MAKE_VERSION(0, 0, 0) + +/* Error codes */ +#define CL_CANCELLED_IMG -1126 + + +typedef cl_int CL_API_CALL +clCancelCommandsIMG_t( + const cl_event* event_list, + size_t num_events_in_list); + +typedef clCancelCommandsIMG_t * +clCancelCommandsIMG_fn ; + +#if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) + +extern CL_API_ENTRY cl_int CL_API_CALL +clCancelCommandsIMG( + const cl_event* event_list, + size_t num_events_in_list) ; + +#endif /* !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) */ + +/*************************************************************** +* cl_qcom_perf_hint +***************************************************************/ +#define cl_qcom_perf_hint 1 +#define CL_QCOM_PERF_HINT_EXTENSION_NAME \ + "cl_qcom_perf_hint" + + +#define CL_QCOM_PERF_HINT_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 5) + +typedef cl_uint cl_perf_hint_qcom; + +/* cl_perf_hint_qcom */ +#define CL_PERF_HINT_HIGH_QCOM 0x40C3 +#define CL_PERF_HINT_NORMAL_QCOM 0x40C4 +#define CL_PERF_HINT_LOW_QCOM 0x40C5 + +/* cl_context_info */ +#define CL_CONTEXT_PERF_HINT_QCOM 0x40C2 + + +typedef cl_int CL_API_CALL +clSetPerfHintQCOM_t( + cl_context context, + cl_perf_hint_qcom perf_hint); + +typedef clSetPerfHintQCOM_t * +clSetPerfHintQCOM_fn ; + +#if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) + +extern CL_API_ENTRY cl_int CL_API_CALL +clSetPerfHintQCOM( + cl_context context, + cl_perf_hint_qcom perf_hint) ; + +#endif /* !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) */ + #ifdef __cplusplus } #endif diff --git a/deps/OpenCL-Headers/CL/cl_function_types.h b/deps/OpenCL-Headers/CL/cl_function_types.h new file mode 100644 index 000000000..124f53ba7 --- /dev/null +++ b/deps/OpenCL-Headers/CL/cl_function_types.h @@ -0,0 +1,1184 @@ +/* + * Copyright (c) 2023 The Khronos Group Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * OpenCL is a trademark of Apple Inc. used under license by Khronos. + */ + +#ifndef OPENCL_CL_FUNCTION_TYPES_H_ +#define OPENCL_CL_FUNCTION_TYPES_H_ + +#include + +typedef cl_int CL_API_CALL clGetPlatformIDs_t( + cl_uint num_entries, + cl_platform_id* platforms, + cl_uint* num_platforms); + +typedef clGetPlatformIDs_t * +clGetPlatformIDs_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_int CL_API_CALL clGetPlatformInfo_t( + cl_platform_id platform, + cl_platform_info param_name, + size_t param_value_size, + void* param_value, + size_t* param_value_size_ret); + +typedef clGetPlatformInfo_t * +clGetPlatformInfo_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_int CL_API_CALL clGetDeviceIDs_t( + cl_platform_id platform, + cl_device_type device_type, + cl_uint num_entries, + cl_device_id* devices, + cl_uint* num_devices); + +typedef clGetDeviceIDs_t * +clGetDeviceIDs_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_int CL_API_CALL clGetDeviceInfo_t( + cl_device_id device, + cl_device_info param_name, + size_t param_value_size, + void* param_value, + size_t* param_value_size_ret); + +typedef clGetDeviceInfo_t * +clGetDeviceInfo_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_context CL_API_CALL clCreateContext_t( + const cl_context_properties* properties, + cl_uint num_devices, + const cl_device_id* devices, + void (CL_CALLBACK* pfn_notify)(const char* errinfo, const void* private_info, size_t cb, void* user_data), + void* user_data, + cl_int* errcode_ret); + +typedef clCreateContext_t * +clCreateContext_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_context CL_API_CALL clCreateContextFromType_t( + const cl_context_properties* properties, + cl_device_type device_type, + void (CL_CALLBACK* pfn_notify)(const char* errinfo, const void* private_info, size_t cb, void* user_data), + void* user_data, + cl_int* errcode_ret); + +typedef clCreateContextFromType_t * +clCreateContextFromType_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_int CL_API_CALL clRetainContext_t( + cl_context context); + +typedef clRetainContext_t * +clRetainContext_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_int CL_API_CALL clReleaseContext_t( + cl_context context); + +typedef clReleaseContext_t * +clReleaseContext_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_int CL_API_CALL clGetContextInfo_t( + cl_context context, + cl_context_info param_name, + size_t param_value_size, + void* param_value, + size_t* param_value_size_ret); + +typedef clGetContextInfo_t * +clGetContextInfo_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_int CL_API_CALL clRetainCommandQueue_t( + cl_command_queue command_queue); + +typedef clRetainCommandQueue_t * +clRetainCommandQueue_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_int CL_API_CALL clReleaseCommandQueue_t( + cl_command_queue command_queue); + +typedef clReleaseCommandQueue_t * +clReleaseCommandQueue_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_int CL_API_CALL clGetCommandQueueInfo_t( + cl_command_queue command_queue, + cl_command_queue_info param_name, + size_t param_value_size, + void* param_value, + size_t* param_value_size_ret); + +typedef clGetCommandQueueInfo_t * +clGetCommandQueueInfo_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_mem CL_API_CALL clCreateBuffer_t( + cl_context context, + cl_mem_flags flags, + size_t size, + void* host_ptr, + cl_int* errcode_ret); + +typedef clCreateBuffer_t * +clCreateBuffer_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_int CL_API_CALL clRetainMemObject_t( + cl_mem memobj); + +typedef clRetainMemObject_t * +clRetainMemObject_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_int CL_API_CALL clReleaseMemObject_t( + cl_mem memobj); + +typedef clReleaseMemObject_t * +clReleaseMemObject_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_int CL_API_CALL clGetSupportedImageFormats_t( + cl_context context, + cl_mem_flags flags, + cl_mem_object_type image_type, + cl_uint num_entries, + cl_image_format* image_formats, + cl_uint* num_image_formats); + +typedef clGetSupportedImageFormats_t * +clGetSupportedImageFormats_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_int CL_API_CALL clGetMemObjectInfo_t( + cl_mem memobj, + cl_mem_info param_name, + size_t param_value_size, + void* param_value, + size_t* param_value_size_ret); + +typedef clGetMemObjectInfo_t * +clGetMemObjectInfo_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_int CL_API_CALL clGetImageInfo_t( + cl_mem image, + cl_image_info param_name, + size_t param_value_size, + void* param_value, + size_t* param_value_size_ret); + +typedef clGetImageInfo_t * +clGetImageInfo_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_int CL_API_CALL clRetainSampler_t( + cl_sampler sampler); + +typedef clRetainSampler_t * +clRetainSampler_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_int CL_API_CALL clReleaseSampler_t( + cl_sampler sampler); + +typedef clReleaseSampler_t * +clReleaseSampler_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_int CL_API_CALL clGetSamplerInfo_t( + cl_sampler sampler, + cl_sampler_info param_name, + size_t param_value_size, + void* param_value, + size_t* param_value_size_ret); + +typedef clGetSamplerInfo_t * +clGetSamplerInfo_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_program CL_API_CALL clCreateProgramWithSource_t( + cl_context context, + cl_uint count, + const char** strings, + const size_t* lengths, + cl_int* errcode_ret); + +typedef clCreateProgramWithSource_t * +clCreateProgramWithSource_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_program CL_API_CALL clCreateProgramWithBinary_t( + cl_context context, + cl_uint num_devices, + const cl_device_id* device_list, + const size_t* lengths, + const unsigned char** binaries, + cl_int* binary_status, + cl_int* errcode_ret); + +typedef clCreateProgramWithBinary_t * +clCreateProgramWithBinary_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_int CL_API_CALL clRetainProgram_t( + cl_program program); + +typedef clRetainProgram_t * +clRetainProgram_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_int CL_API_CALL clReleaseProgram_t( + cl_program program); + +typedef clReleaseProgram_t * +clReleaseProgram_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_int CL_API_CALL clBuildProgram_t( + cl_program program, + cl_uint num_devices, + const cl_device_id* device_list, + const char* options, + void (CL_CALLBACK* pfn_notify)(cl_program program, void* user_data), + void* user_data); + +typedef clBuildProgram_t * +clBuildProgram_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_int CL_API_CALL clGetProgramInfo_t( + cl_program program, + cl_program_info param_name, + size_t param_value_size, + void* param_value, + size_t* param_value_size_ret); + +typedef clGetProgramInfo_t * +clGetProgramInfo_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_int CL_API_CALL clGetProgramBuildInfo_t( + cl_program program, + cl_device_id device, + cl_program_build_info param_name, + size_t param_value_size, + void* param_value, + size_t* param_value_size_ret); + +typedef clGetProgramBuildInfo_t * +clGetProgramBuildInfo_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_kernel CL_API_CALL clCreateKernel_t( + cl_program program, + const char* kernel_name, + cl_int* errcode_ret); + +typedef clCreateKernel_t * +clCreateKernel_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_int CL_API_CALL clCreateKernelsInProgram_t( + cl_program program, + cl_uint num_kernels, + cl_kernel* kernels, + cl_uint* num_kernels_ret); + +typedef clCreateKernelsInProgram_t * +clCreateKernelsInProgram_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_int CL_API_CALL clRetainKernel_t( + cl_kernel kernel); + +typedef clRetainKernel_t * +clRetainKernel_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_int CL_API_CALL clReleaseKernel_t( + cl_kernel kernel); + +typedef clReleaseKernel_t * +clReleaseKernel_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_int CL_API_CALL clSetKernelArg_t( + cl_kernel kernel, + cl_uint arg_index, + size_t arg_size, + const void* arg_value); + +typedef clSetKernelArg_t * +clSetKernelArg_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_int CL_API_CALL clGetKernelInfo_t( + cl_kernel kernel, + cl_kernel_info param_name, + size_t param_value_size, + void* param_value, + size_t* param_value_size_ret); + +typedef clGetKernelInfo_t * +clGetKernelInfo_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_int CL_API_CALL clGetKernelWorkGroupInfo_t( + cl_kernel kernel, + cl_device_id device, + cl_kernel_work_group_info param_name, + size_t param_value_size, + void* param_value, + size_t* param_value_size_ret); + +typedef clGetKernelWorkGroupInfo_t * +clGetKernelWorkGroupInfo_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_int CL_API_CALL clWaitForEvents_t( + cl_uint num_events, + const cl_event* event_list); + +typedef clWaitForEvents_t * +clWaitForEvents_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_int CL_API_CALL clGetEventInfo_t( + cl_event event, + cl_event_info param_name, + size_t param_value_size, + void* param_value, + size_t* param_value_size_ret); + +typedef clGetEventInfo_t * +clGetEventInfo_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_int CL_API_CALL clRetainEvent_t( + cl_event event); + +typedef clRetainEvent_t * +clRetainEvent_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_int CL_API_CALL clReleaseEvent_t( + cl_event event); + +typedef clReleaseEvent_t * +clReleaseEvent_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_int CL_API_CALL clGetEventProfilingInfo_t( + cl_event event, + cl_profiling_info param_name, + size_t param_value_size, + void* param_value, + size_t* param_value_size_ret); + +typedef clGetEventProfilingInfo_t * +clGetEventProfilingInfo_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_int CL_API_CALL clFlush_t( + cl_command_queue command_queue); + +typedef clFlush_t * +clFlush_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_int CL_API_CALL clFinish_t( + cl_command_queue command_queue); + +typedef clFinish_t * +clFinish_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_int CL_API_CALL clEnqueueReadBuffer_t( + cl_command_queue command_queue, + cl_mem buffer, + cl_bool blocking_read, + size_t offset, + size_t size, + void* ptr, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event); + +typedef clEnqueueReadBuffer_t * +clEnqueueReadBuffer_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_int CL_API_CALL clEnqueueWriteBuffer_t( + cl_command_queue command_queue, + cl_mem buffer, + cl_bool blocking_write, + size_t offset, + size_t size, + const void* ptr, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event); + +typedef clEnqueueWriteBuffer_t * +clEnqueueWriteBuffer_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_int CL_API_CALL clEnqueueCopyBuffer_t( + cl_command_queue command_queue, + cl_mem src_buffer, + cl_mem dst_buffer, + size_t src_offset, + size_t dst_offset, + size_t size, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event); + +typedef clEnqueueCopyBuffer_t * +clEnqueueCopyBuffer_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_int CL_API_CALL clEnqueueReadImage_t( + cl_command_queue command_queue, + cl_mem image, + cl_bool blocking_read, + const size_t* origin, + const size_t* region, + size_t row_pitch, + size_t slice_pitch, + void* ptr, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event); + +typedef clEnqueueReadImage_t * +clEnqueueReadImage_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_int CL_API_CALL clEnqueueWriteImage_t( + cl_command_queue command_queue, + cl_mem image, + cl_bool blocking_write, + const size_t* origin, + const size_t* region, + size_t input_row_pitch, + size_t input_slice_pitch, + const void* ptr, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event); + +typedef clEnqueueWriteImage_t * +clEnqueueWriteImage_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_int CL_API_CALL clEnqueueCopyImage_t( + cl_command_queue command_queue, + cl_mem src_image, + cl_mem dst_image, + const size_t* src_origin, + const size_t* dst_origin, + const size_t* region, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event); + +typedef clEnqueueCopyImage_t * +clEnqueueCopyImage_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_int CL_API_CALL clEnqueueCopyImageToBuffer_t( + cl_command_queue command_queue, + cl_mem src_image, + cl_mem dst_buffer, + const size_t* src_origin, + const size_t* region, + size_t dst_offset, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event); + +typedef clEnqueueCopyImageToBuffer_t * +clEnqueueCopyImageToBuffer_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_int CL_API_CALL clEnqueueCopyBufferToImage_t( + cl_command_queue command_queue, + cl_mem src_buffer, + cl_mem dst_image, + size_t src_offset, + const size_t* dst_origin, + const size_t* region, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event); + +typedef clEnqueueCopyBufferToImage_t * +clEnqueueCopyBufferToImage_fn CL_API_SUFFIX__VERSION_1_0; + +typedef void* CL_API_CALL clEnqueueMapBuffer_t( + cl_command_queue command_queue, + cl_mem buffer, + cl_bool blocking_map, + cl_map_flags map_flags, + size_t offset, + size_t size, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event, + cl_int* errcode_ret); + +typedef clEnqueueMapBuffer_t * +clEnqueueMapBuffer_fn CL_API_SUFFIX__VERSION_1_0; + +typedef void* CL_API_CALL clEnqueueMapImage_t( + cl_command_queue command_queue, + cl_mem image, + cl_bool blocking_map, + cl_map_flags map_flags, + const size_t* origin, + const size_t* region, + size_t* image_row_pitch, + size_t* image_slice_pitch, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event, + cl_int* errcode_ret); + +typedef clEnqueueMapImage_t * +clEnqueueMapImage_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_int CL_API_CALL clEnqueueUnmapMemObject_t( + cl_command_queue command_queue, + cl_mem memobj, + void* mapped_ptr, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event); + +typedef clEnqueueUnmapMemObject_t * +clEnqueueUnmapMemObject_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_int CL_API_CALL clEnqueueNDRangeKernel_t( + cl_command_queue command_queue, + cl_kernel kernel, + cl_uint work_dim, + const size_t* global_work_offset, + const size_t* global_work_size, + const size_t* local_work_size, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event); + +typedef clEnqueueNDRangeKernel_t * +clEnqueueNDRangeKernel_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_int CL_API_CALL clEnqueueNativeKernel_t( + cl_command_queue command_queue, + void (CL_CALLBACK* user_func)(void*), + void* args, + size_t cb_args, + cl_uint num_mem_objects, + const cl_mem* mem_list, + const void** args_mem_loc, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event); + +typedef clEnqueueNativeKernel_t * +clEnqueueNativeKernel_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_int CL_API_CALL clSetCommandQueueProperty_t( + cl_command_queue command_queue, + cl_command_queue_properties properties, + cl_bool enable, + cl_command_queue_properties* old_properties); + +typedef clSetCommandQueueProperty_t * +clSetCommandQueueProperty_fn CL_API_SUFFIX__VERSION_1_0_DEPRECATED; + +typedef cl_mem CL_API_CALL clCreateImage2D_t( + cl_context context, + cl_mem_flags flags, + const cl_image_format* image_format, + size_t image_width, + size_t image_height, + size_t image_row_pitch, + void* host_ptr, + cl_int* errcode_ret); + +typedef clCreateImage2D_t * +clCreateImage2D_fn CL_API_SUFFIX__VERSION_1_1_DEPRECATED; + +typedef cl_mem CL_API_CALL clCreateImage3D_t( + cl_context context, + cl_mem_flags flags, + const cl_image_format* image_format, + size_t image_width, + size_t image_height, + size_t image_depth, + size_t image_row_pitch, + size_t image_slice_pitch, + void* host_ptr, + cl_int* errcode_ret); + +typedef clCreateImage3D_t * +clCreateImage3D_fn CL_API_SUFFIX__VERSION_1_1_DEPRECATED; + +typedef cl_int CL_API_CALL clEnqueueMarker_t( + cl_command_queue command_queue, + cl_event* event); + +typedef clEnqueueMarker_t * +clEnqueueMarker_fn CL_API_SUFFIX__VERSION_1_1_DEPRECATED; + +typedef cl_int CL_API_CALL clEnqueueWaitForEvents_t( + cl_command_queue command_queue, + cl_uint num_events, + const cl_event* event_list); + +typedef clEnqueueWaitForEvents_t * +clEnqueueWaitForEvents_fn CL_API_SUFFIX__VERSION_1_1_DEPRECATED; + +typedef cl_int CL_API_CALL clEnqueueBarrier_t( + cl_command_queue command_queue); + +typedef clEnqueueBarrier_t * +clEnqueueBarrier_fn CL_API_SUFFIX__VERSION_1_1_DEPRECATED; + +typedef cl_int CL_API_CALL clUnloadCompiler_t( + void ); + +typedef clUnloadCompiler_t * +clUnloadCompiler_fn CL_API_SUFFIX__VERSION_1_1_DEPRECATED; + +typedef void* CL_API_CALL clGetExtensionFunctionAddress_t( + const char* func_name); + +typedef clGetExtensionFunctionAddress_t * +clGetExtensionFunctionAddress_fn CL_API_SUFFIX__VERSION_1_1_DEPRECATED; + +typedef cl_command_queue CL_API_CALL clCreateCommandQueue_t( + cl_context context, + cl_device_id device, + cl_command_queue_properties properties, + cl_int* errcode_ret); + +typedef clCreateCommandQueue_t * +clCreateCommandQueue_fn CL_API_SUFFIX__VERSION_1_2_DEPRECATED; + +typedef cl_sampler CL_API_CALL clCreateSampler_t( + cl_context context, + cl_bool normalized_coords, + cl_addressing_mode addressing_mode, + cl_filter_mode filter_mode, + cl_int* errcode_ret); + +typedef clCreateSampler_t * +clCreateSampler_fn CL_API_SUFFIX__VERSION_1_2_DEPRECATED; + +typedef cl_int CL_API_CALL clEnqueueTask_t( + cl_command_queue command_queue, + cl_kernel kernel, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event); + +typedef clEnqueueTask_t * +clEnqueueTask_fn CL_API_SUFFIX__VERSION_1_2_DEPRECATED; + +#ifdef CL_VERSION_1_1 + +typedef cl_mem CL_API_CALL clCreateSubBuffer_t( + cl_mem buffer, + cl_mem_flags flags, + cl_buffer_create_type buffer_create_type, + const void* buffer_create_info, + cl_int* errcode_ret); + +typedef clCreateSubBuffer_t * +clCreateSubBuffer_fn CL_API_SUFFIX__VERSION_1_1; + +typedef cl_int CL_API_CALL clSetMemObjectDestructorCallback_t( + cl_mem memobj, + void (CL_CALLBACK* pfn_notify)(cl_mem memobj, void* user_data), + void* user_data); + +typedef clSetMemObjectDestructorCallback_t * +clSetMemObjectDestructorCallback_fn CL_API_SUFFIX__VERSION_1_1; + +typedef cl_event CL_API_CALL clCreateUserEvent_t( + cl_context context, + cl_int* errcode_ret); + +typedef clCreateUserEvent_t * +clCreateUserEvent_fn CL_API_SUFFIX__VERSION_1_1; + +typedef cl_int CL_API_CALL clSetUserEventStatus_t( + cl_event event, + cl_int execution_status); + +typedef clSetUserEventStatus_t * +clSetUserEventStatus_fn CL_API_SUFFIX__VERSION_1_1; + +typedef cl_int CL_API_CALL clSetEventCallback_t( + cl_event event, + cl_int command_exec_callback_type, + void (CL_CALLBACK* pfn_notify)(cl_event event, cl_int event_command_status, void *user_data), + void* user_data); + +typedef clSetEventCallback_t * +clSetEventCallback_fn CL_API_SUFFIX__VERSION_1_1; + +typedef cl_int CL_API_CALL clEnqueueReadBufferRect_t( + cl_command_queue command_queue, + cl_mem buffer, + cl_bool blocking_read, + const size_t* buffer_origin, + const size_t* host_origin, + const size_t* region, + size_t buffer_row_pitch, + size_t buffer_slice_pitch, + size_t host_row_pitch, + size_t host_slice_pitch, + void* ptr, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event); + +typedef clEnqueueReadBufferRect_t * +clEnqueueReadBufferRect_fn CL_API_SUFFIX__VERSION_1_1; + +typedef cl_int CL_API_CALL clEnqueueWriteBufferRect_t( + cl_command_queue command_queue, + cl_mem buffer, + cl_bool blocking_write, + const size_t* buffer_origin, + const size_t* host_origin, + const size_t* region, + size_t buffer_row_pitch, + size_t buffer_slice_pitch, + size_t host_row_pitch, + size_t host_slice_pitch, + const void* ptr, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event); + +typedef clEnqueueWriteBufferRect_t * +clEnqueueWriteBufferRect_fn CL_API_SUFFIX__VERSION_1_1; + +typedef cl_int CL_API_CALL clEnqueueCopyBufferRect_t( + cl_command_queue command_queue, + cl_mem src_buffer, + cl_mem dst_buffer, + const size_t* src_origin, + const size_t* dst_origin, + const size_t* region, + size_t src_row_pitch, + size_t src_slice_pitch, + size_t dst_row_pitch, + size_t dst_slice_pitch, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event); + +typedef clEnqueueCopyBufferRect_t * +clEnqueueCopyBufferRect_fn CL_API_SUFFIX__VERSION_1_1; + +#endif /* CL_VERSION_1_1 */ + +#ifdef CL_VERSION_1_2 + +typedef cl_int CL_API_CALL clCreateSubDevices_t( + cl_device_id in_device, + const cl_device_partition_property* properties, + cl_uint num_devices, + cl_device_id* out_devices, + cl_uint* num_devices_ret); + +typedef clCreateSubDevices_t * +clCreateSubDevices_fn CL_API_SUFFIX__VERSION_1_2; + +typedef cl_int CL_API_CALL clRetainDevice_t( + cl_device_id device); + +typedef clRetainDevice_t * +clRetainDevice_fn CL_API_SUFFIX__VERSION_1_2; + +typedef cl_int CL_API_CALL clReleaseDevice_t( + cl_device_id device); + +typedef clReleaseDevice_t * +clReleaseDevice_fn CL_API_SUFFIX__VERSION_1_2; + +typedef cl_mem CL_API_CALL clCreateImage_t( + cl_context context, + cl_mem_flags flags, + const cl_image_format* image_format, + const cl_image_desc* image_desc, + void* host_ptr, + cl_int* errcode_ret); + +typedef clCreateImage_t * +clCreateImage_fn CL_API_SUFFIX__VERSION_1_2; + +typedef cl_program CL_API_CALL clCreateProgramWithBuiltInKernels_t( + cl_context context, + cl_uint num_devices, + const cl_device_id* device_list, + const char* kernel_names, + cl_int* errcode_ret); + +typedef clCreateProgramWithBuiltInKernels_t * +clCreateProgramWithBuiltInKernels_fn CL_API_SUFFIX__VERSION_1_2; + +typedef cl_int CL_API_CALL clCompileProgram_t( + cl_program program, + cl_uint num_devices, + const cl_device_id* device_list, + const char* options, + cl_uint num_input_headers, + const cl_program* input_headers, + const char** header_include_names, + void (CL_CALLBACK* pfn_notify)(cl_program program, void* user_data), + void* user_data); + +typedef clCompileProgram_t * +clCompileProgram_fn CL_API_SUFFIX__VERSION_1_2; + +typedef cl_program CL_API_CALL clLinkProgram_t( + cl_context context, + cl_uint num_devices, + const cl_device_id* device_list, + const char* options, + cl_uint num_input_programs, + const cl_program* input_programs, + void (CL_CALLBACK* pfn_notify)(cl_program program, void* user_data), + void* user_data, + cl_int* errcode_ret); + +typedef clLinkProgram_t * +clLinkProgram_fn CL_API_SUFFIX__VERSION_1_2; + +typedef cl_int CL_API_CALL clUnloadPlatformCompiler_t( + cl_platform_id platform); + +typedef clUnloadPlatformCompiler_t * +clUnloadPlatformCompiler_fn CL_API_SUFFIX__VERSION_1_2; + +typedef cl_int CL_API_CALL clGetKernelArgInfo_t( + cl_kernel kernel, + cl_uint arg_index, + cl_kernel_arg_info param_name, + size_t param_value_size, + void* param_value, + size_t* param_value_size_ret); + +typedef clGetKernelArgInfo_t * +clGetKernelArgInfo_fn CL_API_SUFFIX__VERSION_1_2; + +typedef cl_int CL_API_CALL clEnqueueFillBuffer_t( + cl_command_queue command_queue, + cl_mem buffer, + const void* pattern, + size_t pattern_size, + size_t offset, + size_t size, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event); + +typedef clEnqueueFillBuffer_t * +clEnqueueFillBuffer_fn CL_API_SUFFIX__VERSION_1_2; + +typedef cl_int CL_API_CALL clEnqueueFillImage_t( + cl_command_queue command_queue, + cl_mem image, + const void* fill_color, + const size_t* origin, + const size_t* region, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event); + +typedef clEnqueueFillImage_t * +clEnqueueFillImage_fn CL_API_SUFFIX__VERSION_1_2; + +typedef cl_int CL_API_CALL clEnqueueMigrateMemObjects_t( + cl_command_queue command_queue, + cl_uint num_mem_objects, + const cl_mem* mem_objects, + cl_mem_migration_flags flags, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event); + +typedef clEnqueueMigrateMemObjects_t * +clEnqueueMigrateMemObjects_fn CL_API_SUFFIX__VERSION_1_2; + +typedef cl_int CL_API_CALL clEnqueueMarkerWithWaitList_t( + cl_command_queue command_queue, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event); + +typedef clEnqueueMarkerWithWaitList_t * +clEnqueueMarkerWithWaitList_fn CL_API_SUFFIX__VERSION_1_2; + +typedef cl_int CL_API_CALL clEnqueueBarrierWithWaitList_t( + cl_command_queue command_queue, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event); + +typedef clEnqueueBarrierWithWaitList_t * +clEnqueueBarrierWithWaitList_fn CL_API_SUFFIX__VERSION_1_2; + +typedef void* CL_API_CALL clGetExtensionFunctionAddressForPlatform_t( + cl_platform_id platform, + const char* func_name); + +typedef clGetExtensionFunctionAddressForPlatform_t * +clGetExtensionFunctionAddressForPlatform_fn CL_API_SUFFIX__VERSION_1_2; + +#endif /* CL_VERSION_1_2 */ + +#ifdef CL_VERSION_2_0 + +typedef cl_command_queue CL_API_CALL clCreateCommandQueueWithProperties_t( + cl_context context, + cl_device_id device, + const cl_queue_properties* properties, + cl_int* errcode_ret); + +typedef clCreateCommandQueueWithProperties_t * +clCreateCommandQueueWithProperties_fn CL_API_SUFFIX__VERSION_2_0; + +typedef cl_mem CL_API_CALL clCreatePipe_t( + cl_context context, + cl_mem_flags flags, + cl_uint pipe_packet_size, + cl_uint pipe_max_packets, + const cl_pipe_properties* properties, + cl_int* errcode_ret); + +typedef clCreatePipe_t * +clCreatePipe_fn CL_API_SUFFIX__VERSION_2_0; + +typedef cl_int CL_API_CALL clGetPipeInfo_t( + cl_mem pipe, + cl_pipe_info param_name, + size_t param_value_size, + void* param_value, + size_t* param_value_size_ret); + +typedef clGetPipeInfo_t * +clGetPipeInfo_fn CL_API_SUFFIX__VERSION_2_0; + +typedef void* CL_API_CALL clSVMAlloc_t( + cl_context context, + cl_svm_mem_flags flags, + size_t size, + cl_uint alignment); + +typedef clSVMAlloc_t * +clSVMAlloc_fn CL_API_SUFFIX__VERSION_2_0; + +typedef void CL_API_CALL clSVMFree_t( + cl_context context, + void* svm_pointer); + +typedef clSVMFree_t * +clSVMFree_fn CL_API_SUFFIX__VERSION_2_0; + +typedef cl_sampler CL_API_CALL clCreateSamplerWithProperties_t( + cl_context context, + const cl_sampler_properties* sampler_properties, + cl_int* errcode_ret); + +typedef clCreateSamplerWithProperties_t * +clCreateSamplerWithProperties_fn CL_API_SUFFIX__VERSION_2_0; + +typedef cl_int CL_API_CALL clSetKernelArgSVMPointer_t( + cl_kernel kernel, + cl_uint arg_index, + const void* arg_value); + +typedef clSetKernelArgSVMPointer_t * +clSetKernelArgSVMPointer_fn CL_API_SUFFIX__VERSION_2_0; + +typedef cl_int CL_API_CALL clSetKernelExecInfo_t( + cl_kernel kernel, + cl_kernel_exec_info param_name, + size_t param_value_size, + const void* param_value); + +typedef clSetKernelExecInfo_t * +clSetKernelExecInfo_fn CL_API_SUFFIX__VERSION_2_0; + +typedef cl_int CL_API_CALL clEnqueueSVMFree_t( + cl_command_queue command_queue, + cl_uint num_svm_pointers, + void* svm_pointers[], + void (CL_CALLBACK* pfn_free_func)(cl_command_queue queue, cl_uint num_svm_pointers, void* svm_pointers[], void* user_data), + void* user_data, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event); + +typedef clEnqueueSVMFree_t * +clEnqueueSVMFree_fn CL_API_SUFFIX__VERSION_2_0; + +typedef cl_int CL_API_CALL clEnqueueSVMMemcpy_t( + cl_command_queue command_queue, + cl_bool blocking_copy, + void* dst_ptr, + const void* src_ptr, + size_t size, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event); + +typedef clEnqueueSVMMemcpy_t * +clEnqueueSVMMemcpy_fn CL_API_SUFFIX__VERSION_2_0; + +typedef cl_int CL_API_CALL clEnqueueSVMMemFill_t( + cl_command_queue command_queue, + void* svm_ptr, + const void* pattern, + size_t pattern_size, + size_t size, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event); + +typedef clEnqueueSVMMemFill_t * +clEnqueueSVMMemFill_fn CL_API_SUFFIX__VERSION_2_0; + +typedef cl_int CL_API_CALL clEnqueueSVMMap_t( + cl_command_queue command_queue, + cl_bool blocking_map, + cl_map_flags flags, + void* svm_ptr, + size_t size, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event); + +typedef clEnqueueSVMMap_t * +clEnqueueSVMMap_fn CL_API_SUFFIX__VERSION_2_0; + +typedef cl_int CL_API_CALL clEnqueueSVMUnmap_t( + cl_command_queue command_queue, + void* svm_ptr, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event); + +typedef clEnqueueSVMUnmap_t * +clEnqueueSVMUnmap_fn CL_API_SUFFIX__VERSION_2_0; + +#endif /* CL_VERSION_2_0 */ + +#ifdef CL_VERSION_2_1 + +typedef cl_int CL_API_CALL clSetDefaultDeviceCommandQueue_t( + cl_context context, + cl_device_id device, + cl_command_queue command_queue); + +typedef clSetDefaultDeviceCommandQueue_t * +clSetDefaultDeviceCommandQueue_fn CL_API_SUFFIX__VERSION_2_1; + +typedef cl_int CL_API_CALL clGetDeviceAndHostTimer_t( + cl_device_id device, + cl_ulong* device_timestamp, + cl_ulong* host_timestamp); + +typedef clGetDeviceAndHostTimer_t * +clGetDeviceAndHostTimer_fn CL_API_SUFFIX__VERSION_2_1; + +typedef cl_int CL_API_CALL clGetHostTimer_t( + cl_device_id device, + cl_ulong* host_timestamp); + +typedef clGetHostTimer_t * +clGetHostTimer_fn CL_API_SUFFIX__VERSION_2_1; + +typedef cl_program CL_API_CALL clCreateProgramWithIL_t( + cl_context context, + const void* il, + size_t length, + cl_int* errcode_ret); + +typedef clCreateProgramWithIL_t * +clCreateProgramWithIL_fn CL_API_SUFFIX__VERSION_2_1; + +typedef cl_kernel CL_API_CALL clCloneKernel_t( + cl_kernel source_kernel, + cl_int* errcode_ret); + +typedef clCloneKernel_t * +clCloneKernel_fn CL_API_SUFFIX__VERSION_2_1; + +typedef cl_int CL_API_CALL clGetKernelSubGroupInfo_t( + cl_kernel kernel, + cl_device_id device, + cl_kernel_sub_group_info param_name, + size_t input_value_size, + const void* input_value, + size_t param_value_size, + void* param_value, + size_t* param_value_size_ret); + +typedef clGetKernelSubGroupInfo_t * +clGetKernelSubGroupInfo_fn CL_API_SUFFIX__VERSION_2_1; + +typedef cl_int CL_API_CALL clEnqueueSVMMigrateMem_t( + cl_command_queue command_queue, + cl_uint num_svm_pointers, + const void** svm_pointers, + const size_t* sizes, + cl_mem_migration_flags flags, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event); + +typedef clEnqueueSVMMigrateMem_t * +clEnqueueSVMMigrateMem_fn CL_API_SUFFIX__VERSION_2_1; + +#endif /* CL_VERSION_2_1 */ + +#ifdef CL_VERSION_2_2 + +typedef cl_int CL_API_CALL clSetProgramSpecializationConstant_t( + cl_program program, + cl_uint spec_id, + size_t spec_size, + const void* spec_value); + +typedef clSetProgramSpecializationConstant_t * +clSetProgramSpecializationConstant_fn CL_API_SUFFIX__VERSION_2_2; + +typedef cl_int CL_API_CALL clSetProgramReleaseCallback_t( + cl_program program, + void (CL_CALLBACK* pfn_notify)(cl_program program, void* user_data), + void* user_data); + +typedef clSetProgramReleaseCallback_t * +clSetProgramReleaseCallback_fn CL_API_SUFFIX__VERSION_2_2_DEPRECATED; + +#endif /* CL_VERSION_2_2 */ + +#ifdef CL_VERSION_3_0 + +typedef cl_int CL_API_CALL clSetContextDestructorCallback_t( + cl_context context, + void (CL_CALLBACK* pfn_notify)(cl_context context, void* user_data), + void* user_data); + +typedef clSetContextDestructorCallback_t * +clSetContextDestructorCallback_fn CL_API_SUFFIX__VERSION_3_0; + +typedef cl_mem CL_API_CALL clCreateBufferWithProperties_t( + cl_context context, + const cl_mem_properties* properties, + cl_mem_flags flags, + size_t size, + void* host_ptr, + cl_int* errcode_ret); + +typedef clCreateBufferWithProperties_t * +clCreateBufferWithProperties_fn CL_API_SUFFIX__VERSION_3_0; + +typedef cl_mem CL_API_CALL clCreateImageWithProperties_t( + cl_context context, + const cl_mem_properties* properties, + cl_mem_flags flags, + const cl_image_format* image_format, + const cl_image_desc* image_desc, + void* host_ptr, + cl_int* errcode_ret); + +typedef clCreateImageWithProperties_t * +clCreateImageWithProperties_fn CL_API_SUFFIX__VERSION_3_0; + +#endif /* CL_VERSION_3_0 */ + +#endif /* OPENCL_CL_FUNCTION_TYPES_H_ */ diff --git a/deps/OpenCL-Headers/CL/cl_gl.h b/deps/OpenCL-Headers/CL/cl_gl.h index f88348e25..552560f71 100644 --- a/deps/OpenCL-Headers/CL/cl_gl.h +++ b/deps/OpenCL-Headers/CL/cl_gl.h @@ -51,6 +51,13 @@ extern "C" { #define CL_KHR_GL_SHARING_EXTENSION_NAME \ "cl_khr_gl_sharing" + +#define CL_KHR_GL_SHARING_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + +typedef int cl_GLint; +typedef unsigned int cl_GLenum; +typedef unsigned int cl_GLuint; + typedef cl_uint cl_gl_context_info; /* Error codes */ @@ -91,20 +98,26 @@ typedef cl_uint cl_gl_platform_info; #define CL_GL_MIPMAP_LEVEL 0x2005 -typedef cl_int (CL_API_CALL * -clGetGLContextInfoKHR_fn)( +typedef cl_int CL_API_CALL +clGetGLContextInfoKHR_t( const cl_context_properties* properties, cl_gl_context_info param_name, size_t param_value_size, void* param_value, - size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; + size_t* param_value_size_ret); -typedef cl_mem (CL_API_CALL * -clCreateFromGLBuffer_fn)( +typedef clGetGLContextInfoKHR_t * +clGetGLContextInfoKHR_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_mem CL_API_CALL +clCreateFromGLBuffer_t( cl_context context, cl_mem_flags flags, cl_GLuint bufobj, - cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0; + cl_int* errcode_ret); + +typedef clCreateFromGLBuffer_t * +clCreateFromGLBuffer_fn CL_API_SUFFIX__VERSION_1_0; #if !defined(CL_NO_ICD_DISPATCH_EXTENSION_PROTOTYPES) @@ -127,14 +140,17 @@ clCreateFromGLBuffer( #if defined(CL_VERSION_1_2) -typedef cl_mem (CL_API_CALL * -clCreateFromGLTexture_fn)( +typedef cl_mem CL_API_CALL +clCreateFromGLTexture_t( cl_context context, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel, cl_GLuint texture, - cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2; + cl_int* errcode_ret); + +typedef clCreateFromGLTexture_t * +clCreateFromGLTexture_fn CL_API_SUFFIX__VERSION_1_2; #if !defined(CL_NO_ICD_DISPATCH_EXTENSION_PROTOTYPES) @@ -152,44 +168,59 @@ clCreateFromGLTexture( #endif /* defined(CL_VERSION_1_2) */ -typedef cl_mem (CL_API_CALL * -clCreateFromGLRenderbuffer_fn)( +typedef cl_mem CL_API_CALL +clCreateFromGLRenderbuffer_t( cl_context context, cl_mem_flags flags, cl_GLuint renderbuffer, - cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0; + cl_int* errcode_ret); -typedef cl_int (CL_API_CALL * -clGetGLObjectInfo_fn)( +typedef clCreateFromGLRenderbuffer_t * +clCreateFromGLRenderbuffer_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_int CL_API_CALL +clGetGLObjectInfo_t( cl_mem memobj, cl_gl_object_type* gl_object_type, - cl_GLuint* gl_object_name) CL_API_SUFFIX__VERSION_1_0; + cl_GLuint* gl_object_name); -typedef cl_int (CL_API_CALL * -clGetGLTextureInfo_fn)( +typedef clGetGLObjectInfo_t * +clGetGLObjectInfo_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_int CL_API_CALL +clGetGLTextureInfo_t( cl_mem memobj, cl_gl_texture_info param_name, size_t param_value_size, void* param_value, - size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; + size_t* param_value_size_ret); -typedef cl_int (CL_API_CALL * -clEnqueueAcquireGLObjects_fn)( +typedef clGetGLTextureInfo_t * +clGetGLTextureInfo_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_int CL_API_CALL +clEnqueueAcquireGLObjects_t( cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, cl_uint num_events_in_wait_list, const cl_event* event_wait_list, - cl_event* event) CL_API_SUFFIX__VERSION_1_0; + cl_event* event); -typedef cl_int (CL_API_CALL * -clEnqueueReleaseGLObjects_fn)( +typedef clEnqueueAcquireGLObjects_t * +clEnqueueAcquireGLObjects_fn CL_API_SUFFIX__VERSION_1_0; + +typedef cl_int CL_API_CALL +clEnqueueReleaseGLObjects_t( cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, cl_uint num_events_in_wait_list, const cl_event* event_wait_list, - cl_event* event) CL_API_SUFFIX__VERSION_1_0; + cl_event* event); + +typedef clEnqueueReleaseGLObjects_t * +clEnqueueReleaseGLObjects_fn CL_API_SUFFIX__VERSION_1_0; #if !defined(CL_NO_ICD_DISPATCH_EXTENSION_PROTOTYPES) @@ -236,23 +267,29 @@ clEnqueueReleaseGLObjects( /* OpenCL 1.0 APIs that were deprecated in OpenCL 1.2 */ -typedef cl_mem (CL_API_CALL * -clCreateFromGLTexture2D_fn)( +typedef cl_mem CL_API_CALL +clCreateFromGLTexture2D_t( cl_context context, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel, cl_GLuint texture, - cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_1_DEPRECATED; + cl_int* errcode_ret); -typedef cl_mem (CL_API_CALL * -clCreateFromGLTexture3D_fn)( +typedef clCreateFromGLTexture2D_t * +clCreateFromGLTexture2D_fn CL_API_SUFFIX__VERSION_1_1_DEPRECATED; + +typedef cl_mem CL_API_CALL +clCreateFromGLTexture3D_t( cl_context context, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel, cl_GLuint texture, - cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_1_DEPRECATED; + cl_int* errcode_ret); + +typedef clCreateFromGLTexture3D_t * +clCreateFromGLTexture3D_fn CL_API_SUFFIX__VERSION_1_1_DEPRECATED; #if !defined(CL_NO_ICD_DISPATCH_EXTENSION_PROTOTYPES) @@ -283,17 +320,23 @@ clCreateFromGLTexture3D( #define CL_KHR_GL_EVENT_EXTENSION_NAME \ "cl_khr_gl_event" + +#define CL_KHR_GL_EVENT_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + typedef struct __GLsync * cl_GLsync; /* cl_command_type */ #define CL_COMMAND_GL_FENCE_SYNC_OBJECT_KHR 0x200D -typedef cl_event (CL_API_CALL * -clCreateEventFromGLsyncKHR_fn)( +typedef cl_event CL_API_CALL +clCreateEventFromGLsyncKHR_t( cl_context context, cl_GLsync sync, - cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_1; + cl_int* errcode_ret); + +typedef clCreateEventFromGLsyncKHR_t * +clCreateEventFromGLsyncKHR_fn CL_API_SUFFIX__VERSION_1_1; #if !defined(CL_NO_ICD_DISPATCH_EXTENSION_PROTOTYPES) @@ -312,18 +355,15 @@ clCreateEventFromGLsyncKHR( #define CL_KHR_GL_DEPTH_IMAGES_EXTENSION_NAME \ "cl_khr_gl_depth_images" -#if !defined(CL_VERSION_1_2) -/* cl_channel_order - defined in CL.h for OpenCL 1.2 and newer */ + +#define CL_KHR_GL_DEPTH_IMAGES_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + +/* cl_channel_order */ #define CL_DEPTH_STENCIL 0x10BE -#endif /* !defined(CL_VERSION_1_2) */ - -#if !defined(CL_VERSION_1_2) -/* cl_channel_type - defined in CL.h for OpenCL 1.2 and newer */ +/* cl_channel_type */ #define CL_UNORM_INT24 0x10DF -#endif /* !defined(CL_VERSION_1_2) */ - /*************************************************************** * cl_khr_gl_msaa_sharing ***************************************************************/ @@ -331,6 +371,9 @@ clCreateEventFromGLsyncKHR( #define CL_KHR_GL_MSAA_SHARING_EXTENSION_NAME \ "cl_khr_gl_msaa_sharing" + +#define CL_KHR_GL_MSAA_SHARING_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + /* cl_gl_texture_info */ #define CL_GL_NUM_SAMPLES 0x2012 @@ -341,16 +384,22 @@ clCreateEventFromGLsyncKHR( #define CL_INTEL_SHARING_FORMAT_QUERY_GL_EXTENSION_NAME \ "cl_intel_sharing_format_query_gl" + +#define CL_INTEL_SHARING_FORMAT_QUERY_GL_EXTENSION_VERSION CL_MAKE_VERSION(0, 0, 0) + /* when cl_khr_gl_sharing is supported */ -typedef cl_int (CL_API_CALL * -clGetSupportedGLTextureFormatsINTEL_fn)( +typedef cl_int CL_API_CALL +clGetSupportedGLTextureFormatsINTEL_t( cl_context context, cl_mem_flags flags, cl_mem_object_type image_type, cl_uint num_entries, cl_GLenum* gl_formats, - cl_uint* num_texture_formats) ; + cl_uint* num_texture_formats); + +typedef clGetSupportedGLTextureFormatsINTEL_t * +clGetSupportedGLTextureFormatsINTEL_fn ; #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) diff --git a/deps/OpenCL-Headers/CL/cl_icd.h b/deps/OpenCL-Headers/CL/cl_icd.h index 360b87030..435ad4832 100644 --- a/deps/OpenCL-Headers/CL/cl_icd.h +++ b/deps/OpenCL-Headers/CL/cl_icd.h @@ -18,6 +18,7 @@ #define OPENCL_CL_ICD_H #include +#include #include #include #include @@ -32,1258 +33,278 @@ extern "C" { #endif -/* - * This file contains pointer type definitions for each of the CL API calls as - * well as a type definition for the dispatch table used by the Khronos ICD - * loader (see cl_khr_icd extension specification for background). - */ - -/* API function pointer definitions */ - -// Platform APIs -typedef cl_int(CL_API_CALL *cl_api_clGetPlatformIDs)( - cl_uint num_entries, cl_platform_id *platforms, - cl_uint *num_platforms) CL_API_SUFFIX__VERSION_1_0; - -typedef cl_int(CL_API_CALL *cl_api_clGetPlatformInfo)( - cl_platform_id platform, cl_platform_info param_name, - size_t param_value_size, void *param_value, - size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; - -// Device APIs -typedef cl_int(CL_API_CALL *cl_api_clGetDeviceIDs)( - cl_platform_id platform, cl_device_type device_type, cl_uint num_entries, - cl_device_id *devices, cl_uint *num_devices) CL_API_SUFFIX__VERSION_1_0; - -typedef cl_int(CL_API_CALL *cl_api_clGetDeviceInfo)( - cl_device_id device, cl_device_info param_name, size_t param_value_size, - void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; - -#ifdef CL_VERSION_1_2 - -typedef cl_int(CL_API_CALL *cl_api_clCreateSubDevices)( - cl_device_id in_device, - const cl_device_partition_property *partition_properties, - cl_uint num_entries, cl_device_id *out_devices, cl_uint *num_devices); - -typedef cl_int(CL_API_CALL *cl_api_clRetainDevice)( - cl_device_id device) CL_API_SUFFIX__VERSION_1_2; - -typedef cl_int(CL_API_CALL *cl_api_clReleaseDevice)( - cl_device_id device) CL_API_SUFFIX__VERSION_1_2; - -#else - -typedef void *cl_api_clCreateSubDevices; -typedef void *cl_api_clRetainDevice; -typedef void *cl_api_clReleaseDevice; - -#endif - -// Context APIs -typedef cl_context(CL_API_CALL *cl_api_clCreateContext)( - const cl_context_properties *properties, cl_uint num_devices, - const cl_device_id *devices, - void(CL_CALLBACK *pfn_notify)(const char *, const void *, size_t, void *), - void *user_data, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0; - -typedef cl_context(CL_API_CALL *cl_api_clCreateContextFromType)( - const cl_context_properties *properties, cl_device_type device_type, - void(CL_CALLBACK *pfn_notify)(const char *, const void *, size_t, void *), - void *user_data, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0; - -typedef cl_int(CL_API_CALL *cl_api_clRetainContext)( - cl_context context) CL_API_SUFFIX__VERSION_1_0; - -typedef cl_int(CL_API_CALL *cl_api_clReleaseContext)( - cl_context context) CL_API_SUFFIX__VERSION_1_0; - -typedef cl_int(CL_API_CALL *cl_api_clGetContextInfo)( - cl_context context, cl_context_info param_name, size_t param_value_size, - void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; - -// Command Queue APIs -typedef cl_command_queue(CL_API_CALL *cl_api_clCreateCommandQueue)( - cl_context context, cl_device_id device, - cl_command_queue_properties properties, - cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0; - -#ifdef CL_VERSION_2_0 - -typedef -cl_command_queue(CL_API_CALL *cl_api_clCreateCommandQueueWithProperties)( - cl_context /* context */, cl_device_id /* device */, - const cl_queue_properties * /* properties */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_2_0; - -#else - -typedef void *cl_api_clCreateCommandQueueWithProperties; - -#endif - -typedef cl_int(CL_API_CALL *cl_api_clRetainCommandQueue)( - cl_command_queue command_queue) CL_API_SUFFIX__VERSION_1_0; - -typedef cl_int(CL_API_CALL *cl_api_clReleaseCommandQueue)( - cl_command_queue command_queue) CL_API_SUFFIX__VERSION_1_0; - -typedef cl_int(CL_API_CALL *cl_api_clGetCommandQueueInfo)( - cl_command_queue command_queue, cl_command_queue_info param_name, - size_t param_value_size, void *param_value, - size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; - -// Memory Object APIs -typedef cl_mem(CL_API_CALL *cl_api_clCreateBuffer)( - cl_context context, cl_mem_flags flags, size_t size, void *host_ptr, - cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0; - -#ifdef CL_VERSION_1_2 - -typedef cl_mem(CL_API_CALL *cl_api_clCreateImage)( - cl_context context, cl_mem_flags flags, const cl_image_format *image_format, - const cl_image_desc *image_desc, void *host_ptr, - cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_2; - -#else - -typedef void *cl_api_clCreateImage; - -#endif - -#ifdef CL_VERSION_3_0 - -typedef cl_mem(CL_API_CALL *cl_api_clCreateBufferWithProperties)( - cl_context context, const cl_mem_properties *properties, cl_mem_flags flags, - size_t size, void *host_ptr, - cl_int *errcode_ret) CL_API_SUFFIX__VERSION_3_0; - -typedef cl_mem(CL_API_CALL *cl_api_clCreateImageWithProperties)( - cl_context context, const cl_mem_properties *properties, cl_mem_flags flags, - const cl_image_format *image_format, const cl_image_desc *image_desc, - void *host_ptr, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_3_0; - -typedef cl_int(CL_API_CALL* cl_api_clSetContextDestructorCallback)( - cl_context context, - void(CL_CALLBACK* pfn_notify)(cl_context context, void* user_data), - void* user_data) CL_API_SUFFIX__VERSION_3_0; - -#else - -typedef void *cl_api_clCreateBufferWithProperties; -typedef void *cl_api_clCreateImageWithProperties; -typedef void *cl_api_clSetContextDestructorCallback; - -#endif - -typedef cl_int(CL_API_CALL *cl_api_clRetainMemObject)( - cl_mem memobj) CL_API_SUFFIX__VERSION_1_0; - -typedef cl_int(CL_API_CALL *cl_api_clReleaseMemObject)( - cl_mem memobj) CL_API_SUFFIX__VERSION_1_0; - -typedef cl_int(CL_API_CALL *cl_api_clGetSupportedImageFormats)( - cl_context context, cl_mem_flags flags, cl_mem_object_type image_type, - cl_uint num_entries, cl_image_format *image_formats, - cl_uint *num_image_formats) CL_API_SUFFIX__VERSION_1_0; - -typedef cl_int(CL_API_CALL *cl_api_clGetMemObjectInfo)( - cl_mem memobj, cl_mem_info param_name, size_t param_value_size, - void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; - -typedef cl_int(CL_API_CALL *cl_api_clGetImageInfo)( - cl_mem image, cl_image_info param_name, size_t param_value_size, - void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; - -#ifdef CL_VERSION_2_0 - -typedef cl_mem(CL_API_CALL *cl_api_clCreatePipe)( - cl_context /* context */, cl_mem_flags /* flags */, - cl_uint /* pipe_packet_size */, cl_uint /* pipe_max_packets */, - const cl_pipe_properties * /* properties */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_2_0; - -typedef cl_int(CL_API_CALL *cl_api_clGetPipeInfo)( - cl_mem /* pipe */, cl_pipe_info /* param_name */, - size_t /* param_value_size */, void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_2_0; - -typedef void *(CL_API_CALL *cl_api_clSVMAlloc)( - cl_context /* context */, cl_svm_mem_flags /* flags */, size_t /* size */, - unsigned int /* alignment */)CL_API_SUFFIX__VERSION_2_0; - -typedef void(CL_API_CALL *cl_api_clSVMFree)( - cl_context /* context */, - void * /* svm_pointer */) CL_API_SUFFIX__VERSION_2_0; - -#else - -typedef void *cl_api_clCreatePipe; -typedef void *cl_api_clGetPipeInfo; -typedef void *cl_api_clSVMAlloc; -typedef void *cl_api_clSVMFree; - -#endif - -// Sampler APIs -typedef cl_sampler(CL_API_CALL *cl_api_clCreateSampler)( - cl_context context, cl_bool normalized_coords, - cl_addressing_mode addressing_mode, cl_filter_mode filter_mode, - cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0; - -typedef cl_int(CL_API_CALL *cl_api_clRetainSampler)( - cl_sampler sampler) CL_API_SUFFIX__VERSION_1_0; - -typedef cl_int(CL_API_CALL *cl_api_clReleaseSampler)( - cl_sampler sampler) CL_API_SUFFIX__VERSION_1_0; - -typedef cl_int(CL_API_CALL *cl_api_clGetSamplerInfo)( - cl_sampler sampler, cl_sampler_info param_name, size_t param_value_size, - void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; - -#ifdef CL_VERSION_2_0 - -typedef -cl_sampler(CL_API_CALL *cl_api_clCreateSamplerWithProperties)( - cl_context /* context */, - const cl_sampler_properties * /* sampler_properties */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_2_0; - -#else - -typedef void *cl_api_clCreateSamplerWithProperties; - -#endif - -// Program Object APIs -typedef cl_program(CL_API_CALL *cl_api_clCreateProgramWithSource)( - cl_context context, cl_uint count, const char **strings, - const size_t *lengths, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0; - -typedef cl_program(CL_API_CALL *cl_api_clCreateProgramWithBinary)( - cl_context context, cl_uint num_devices, const cl_device_id *device_list, - const size_t *lengths, const unsigned char **binaries, - cl_int *binary_status, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0; - -#ifdef CL_VERSION_1_2 - -typedef -cl_program(CL_API_CALL *cl_api_clCreateProgramWithBuiltInKernels)( - cl_context context, cl_uint num_devices, const cl_device_id *device_list, - const char *kernel_names, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_2; - -#else - -typedef void *cl_api_clCreateProgramWithBuiltInKernels; - -#endif - -typedef cl_int(CL_API_CALL *cl_api_clRetainProgram)( - cl_program program) CL_API_SUFFIX__VERSION_1_0; - -typedef cl_int(CL_API_CALL *cl_api_clReleaseProgram)( - cl_program program) CL_API_SUFFIX__VERSION_1_0; - -typedef cl_int(CL_API_CALL *cl_api_clBuildProgram)( - cl_program program, cl_uint num_devices, const cl_device_id *device_list, - const char *options, - void(CL_CALLBACK *pfn_notify)(cl_program program, void *user_data), - void *user_data) CL_API_SUFFIX__VERSION_1_0; - -#ifdef CL_VERSION_1_2 - -typedef cl_int(CL_API_CALL *cl_api_clCompileProgram)( - cl_program program, cl_uint num_devices, const cl_device_id *device_list, - const char *options, cl_uint num_input_headers, - const cl_program *input_headers, const char **header_include_names, - void(CL_CALLBACK *pfn_notify)(cl_program program, void *user_data), - void *user_data) CL_API_SUFFIX__VERSION_1_2; - -typedef cl_program(CL_API_CALL *cl_api_clLinkProgram)( - cl_context context, cl_uint num_devices, const cl_device_id *device_list, - const char *options, cl_uint num_input_programs, - const cl_program *input_programs, - void(CL_CALLBACK *pfn_notify)(cl_program program, void *user_data), - void *user_data, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_2; - -#else - -typedef void *cl_api_clCompileProgram; -typedef void *cl_api_clLinkProgram; - -#endif - -#ifdef CL_VERSION_2_2 - -typedef -cl_int(CL_API_CALL *cl_api_clSetProgramSpecializationConstant)( - cl_program program, cl_uint spec_id, size_t spec_size, - const void *spec_value) CL_API_SUFFIX__VERSION_2_2; - -typedef cl_int(CL_API_CALL *cl_api_clSetProgramReleaseCallback)( - cl_program program, - void(CL_CALLBACK *pfn_notify)(cl_program program, void *user_data), - void *user_data) CL_API_SUFFIX__VERSION_2_2; - -#else - -typedef void *cl_api_clSetProgramSpecializationConstant; -typedef void *cl_api_clSetProgramReleaseCallback; - -#endif - -#ifdef CL_VERSION_1_2 - -typedef cl_int(CL_API_CALL *cl_api_clUnloadPlatformCompiler)( - cl_platform_id platform) CL_API_SUFFIX__VERSION_1_2; - -#else - -typedef void *cl_api_clUnloadPlatformCompiler; - -#endif - -typedef cl_int(CL_API_CALL *cl_api_clGetProgramInfo)( - cl_program program, cl_program_info param_name, size_t param_value_size, - void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; - -typedef cl_int(CL_API_CALL *cl_api_clGetProgramBuildInfo)( - cl_program program, cl_device_id device, cl_program_build_info param_name, - size_t param_value_size, void *param_value, - size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; - -// Kernel Object APIs -typedef cl_kernel(CL_API_CALL *cl_api_clCreateKernel)( - cl_program program, const char *kernel_name, - cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0; - -typedef cl_int(CL_API_CALL *cl_api_clCreateKernelsInProgram)( - cl_program program, cl_uint num_kernels, cl_kernel *kernels, - cl_uint *num_kernels_ret) CL_API_SUFFIX__VERSION_1_0; - -typedef cl_int(CL_API_CALL *cl_api_clRetainKernel)( - cl_kernel kernel) CL_API_SUFFIX__VERSION_1_0; - -typedef cl_int(CL_API_CALL *cl_api_clReleaseKernel)( - cl_kernel kernel) CL_API_SUFFIX__VERSION_1_0; - -typedef cl_int(CL_API_CALL *cl_api_clSetKernelArg)( - cl_kernel kernel, cl_uint arg_index, size_t arg_size, - const void *arg_value) CL_API_SUFFIX__VERSION_1_0; - -typedef cl_int(CL_API_CALL *cl_api_clGetKernelInfo)( - cl_kernel kernel, cl_kernel_info param_name, size_t param_value_size, - void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; - -#ifdef CL_VERSION_1_2 - -typedef cl_int(CL_API_CALL *cl_api_clGetKernelArgInfo)( - cl_kernel kernel, cl_uint arg_indx, cl_kernel_arg_info param_name, - size_t param_value_size, void *param_value, - size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_2; - -#else - -typedef void *cl_api_clGetKernelArgInfo; - -#endif - -typedef cl_int(CL_API_CALL *cl_api_clGetKernelWorkGroupInfo)( - cl_kernel kernel, cl_device_id device, cl_kernel_work_group_info param_name, - size_t param_value_size, void *param_value, - size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; - -#ifdef CL_VERSION_2_0 - -typedef cl_int(CL_API_CALL *cl_api_clSetKernelArgSVMPointer)( - cl_kernel /* kernel */, cl_uint /* arg_index */, - const void * /* arg_value */) CL_API_SUFFIX__VERSION_2_0; - -typedef cl_int(CL_API_CALL *cl_api_clSetKernelExecInfo)( - cl_kernel /* kernel */, cl_kernel_exec_info /* param_name */, - size_t /* param_value_size */, - const void * /* param_value */) CL_API_SUFFIX__VERSION_2_0; - -typedef cl_int(CL_API_CALL *cl_api_clGetKernelSubGroupInfoKHR)( - cl_kernel /* in_kernel */, cl_device_id /*in_device*/, - cl_kernel_sub_group_info /* param_name */, size_t /*input_value_size*/, - const void * /*input_value*/, size_t /*param_value_size*/, - void * /*param_value*/, - size_t * /*param_value_size_ret*/) CL_API_SUFFIX__VERSION_2_0; - -#else - -typedef void *cl_api_clSetKernelArgSVMPointer; -typedef void *cl_api_clSetKernelExecInfo; -typedef void *cl_api_clGetKernelSubGroupInfoKHR; - -#endif - -// Event Object APIs -typedef cl_int(CL_API_CALL *cl_api_clWaitForEvents)( - cl_uint num_events, const cl_event *event_list) CL_API_SUFFIX__VERSION_1_0; - -typedef cl_int(CL_API_CALL *cl_api_clGetEventInfo)( - cl_event event, cl_event_info param_name, size_t param_value_size, - void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; - -typedef cl_int(CL_API_CALL *cl_api_clRetainEvent)(cl_event event) - CL_API_SUFFIX__VERSION_1_0; - -typedef cl_int(CL_API_CALL *cl_api_clReleaseEvent)(cl_event event) - CL_API_SUFFIX__VERSION_1_0; - -// Profiling APIs -typedef cl_int(CL_API_CALL *cl_api_clGetEventProfilingInfo)( - cl_event event, cl_profiling_info param_name, size_t param_value_size, - void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; - -// Flush and Finish APIs -typedef cl_int(CL_API_CALL *cl_api_clFlush)( - cl_command_queue command_queue) CL_API_SUFFIX__VERSION_1_0; - -typedef cl_int(CL_API_CALL *cl_api_clFinish)( - cl_command_queue command_queue) CL_API_SUFFIX__VERSION_1_0; - -// Enqueued Commands APIs -typedef cl_int(CL_API_CALL *cl_api_clEnqueueReadBuffer)( - cl_command_queue command_queue, cl_mem buffer, cl_bool blocking_read, - size_t offset, size_t cb, void *ptr, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, - cl_event *event) CL_API_SUFFIX__VERSION_1_0; - -#ifdef CL_VERSION_1_1 - -typedef cl_int(CL_API_CALL *cl_api_clEnqueueReadBufferRect)( - cl_command_queue command_queue, cl_mem buffer, cl_bool blocking_read, - const size_t *buffer_origin, const size_t *host_origin, - const size_t *region, size_t buffer_row_pitch, size_t buffer_slice_pitch, - size_t host_row_pitch, size_t host_slice_pitch, void *ptr, - cl_uint num_events_in_wait_list, const cl_event *event_wait_list, - cl_event *event) CL_API_SUFFIX__VERSION_1_1; - -#else - -typedef void *cl_api_clEnqueueReadBufferRect; - -#endif - -typedef cl_int(CL_API_CALL *cl_api_clEnqueueWriteBuffer)( - cl_command_queue command_queue, cl_mem buffer, cl_bool blocking_write, - size_t offset, size_t cb, const void *ptr, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, - cl_event *event) CL_API_SUFFIX__VERSION_1_0; - -#ifdef CL_VERSION_1_1 - -typedef cl_int(CL_API_CALL *cl_api_clEnqueueWriteBufferRect)( - cl_command_queue command_queue, cl_mem buffer, cl_bool blocking_read, - const size_t *buffer_origin, const size_t *host_origin, - const size_t *region, size_t buffer_row_pitch, size_t buffer_slice_pitch, - size_t host_row_pitch, size_t host_slice_pitch, const void *ptr, - cl_uint num_events_in_wait_list, const cl_event *event_wait_list, - cl_event *event) CL_API_SUFFIX__VERSION_1_1; - -#else - -typedef void *cl_api_clEnqueueWriteBufferRect; - -#endif - -#ifdef CL_VERSION_1_2 - -typedef cl_int(CL_API_CALL *cl_api_clEnqueueFillBuffer)( - cl_command_queue command_queue, cl_mem buffer, const void *pattern, - size_t pattern_size, size_t offset, size_t cb, - cl_uint num_events_in_wait_list, const cl_event *event_wait_list, - cl_event *event) CL_API_SUFFIX__VERSION_1_2; - -#else - -typedef void *cl_api_clEnqueueFillBuffer; - -#endif - -typedef cl_int(CL_API_CALL *cl_api_clEnqueueCopyBuffer)( - cl_command_queue command_queue, cl_mem src_buffer, cl_mem dst_buffer, - size_t src_offset, size_t dst_offset, size_t cb, - cl_uint num_events_in_wait_list, const cl_event *event_wait_list, - cl_event *event) CL_API_SUFFIX__VERSION_1_0; - -#ifdef CL_VERSION_1_1 - -typedef cl_int(CL_API_CALL *cl_api_clEnqueueCopyBufferRect)( - cl_command_queue command_queue, cl_mem src_buffer, cl_mem dst_buffer, - const size_t *src_origin, const size_t *dst_origin, const size_t *region, - size_t src_row_pitch, size_t src_slice_pitch, size_t dst_row_pitch, - size_t dst_slice_pitch, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, - cl_event *event) CL_API_SUFFIX__VERSION_1_1; - -#else - -typedef void *cl_api_clEnqueueCopyBufferRect; - -#endif - -typedef cl_int(CL_API_CALL *cl_api_clEnqueueReadImage)( - cl_command_queue command_queue, cl_mem image, cl_bool blocking_read, - const size_t *origin, const size_t *region, size_t row_pitch, - size_t slice_pitch, void *ptr, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, - cl_event *event) CL_API_SUFFIX__VERSION_1_0; - -typedef cl_int(CL_API_CALL *cl_api_clEnqueueWriteImage)( - cl_command_queue command_queue, cl_mem image, cl_bool blocking_write, - const size_t *origin, const size_t *region, size_t input_row_pitch, - size_t input_slice_pitch, const void *ptr, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, - cl_event *event) CL_API_SUFFIX__VERSION_1_0; - -#ifdef CL_VERSION_1_2 - -typedef cl_int(CL_API_CALL *cl_api_clEnqueueFillImage)( - cl_command_queue command_queue, cl_mem image, const void *fill_color, - const size_t origin[3], const size_t region[3], - cl_uint num_events_in_wait_list, const cl_event *event_wait_list, - cl_event *event) CL_API_SUFFIX__VERSION_1_2; - -#else - -typedef void *cl_api_clEnqueueFillImage; - -#endif - -typedef cl_int(CL_API_CALL *cl_api_clEnqueueCopyImage)( - cl_command_queue command_queue, cl_mem src_image, cl_mem dst_image, - const size_t *src_origin, const size_t *dst_origin, const size_t *region, - cl_uint num_events_in_wait_list, const cl_event *event_wait_list, - cl_event *event) CL_API_SUFFIX__VERSION_1_0; - -typedef cl_int(CL_API_CALL *cl_api_clEnqueueCopyImageToBuffer)( - cl_command_queue command_queue, cl_mem src_image, cl_mem dst_buffer, - const size_t *src_origin, const size_t *region, size_t dst_offset, - cl_uint num_events_in_wait_list, const cl_event *event_wait_list, - cl_event *event) CL_API_SUFFIX__VERSION_1_0; - -typedef cl_int(CL_API_CALL *cl_api_clEnqueueCopyBufferToImage)( - cl_command_queue command_queue, cl_mem src_buffer, cl_mem dst_image, - size_t src_offset, const size_t *dst_origin, const size_t *region, - cl_uint num_events_in_wait_list, const cl_event *event_wait_list, - cl_event *event) CL_API_SUFFIX__VERSION_1_0; - -typedef void *(CL_API_CALL *cl_api_clEnqueueMapBuffer)( - cl_command_queue command_queue, cl_mem buffer, cl_bool blocking_map, - cl_map_flags map_flags, size_t offset, size_t cb, - cl_uint num_events_in_wait_list, const cl_event *event_wait_list, - cl_event *event, cl_int *errcode_ret)CL_API_SUFFIX__VERSION_1_0; - -typedef void *(CL_API_CALL *cl_api_clEnqueueMapImage)( - cl_command_queue command_queue, cl_mem image, cl_bool blocking_map, - cl_map_flags map_flags, const size_t *origin, const size_t *region, - size_t *image_row_pitch, size_t *image_slice_pitch, - cl_uint num_events_in_wait_list, const cl_event *event_wait_list, - cl_event *event, cl_int *errcode_ret)CL_API_SUFFIX__VERSION_1_0; - -typedef cl_int(CL_API_CALL *cl_api_clEnqueueUnmapMemObject)( - cl_command_queue command_queue, cl_mem memobj, void *mapped_ptr, - cl_uint num_events_in_wait_list, const cl_event *event_wait_list, - cl_event *event) CL_API_SUFFIX__VERSION_1_0; - -#ifdef CL_VERSION_1_2 - -typedef cl_int(CL_API_CALL *cl_api_clEnqueueMigrateMemObjects)( - cl_command_queue command_queue, cl_uint num_mem_objects, - const cl_mem *mem_objects, cl_mem_migration_flags flags, - cl_uint num_events_in_wait_list, const cl_event *event_wait_list, - cl_event *event) CL_API_SUFFIX__VERSION_1_2; - -#else - -typedef void *cl_api_clEnqueueMigrateMemObjects; - -#endif - -typedef cl_int(CL_API_CALL *cl_api_clEnqueueNDRangeKernel)( - cl_command_queue command_queue, cl_kernel kernel, cl_uint work_dim, - const size_t *global_work_offset, const size_t *global_work_size, - const size_t *local_work_size, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, - cl_event *event) CL_API_SUFFIX__VERSION_1_0; - -typedef cl_int(CL_API_CALL *cl_api_clEnqueueTask)( - cl_command_queue command_queue, cl_kernel kernel, - cl_uint num_events_in_wait_list, const cl_event *event_wait_list, - cl_event *event) CL_API_SUFFIX__VERSION_1_0; - -typedef cl_int(CL_API_CALL *cl_api_clEnqueueNativeKernel)( - cl_command_queue command_queue, void(CL_CALLBACK *user_func)(void *), - void *args, size_t cb_args, cl_uint num_mem_objects, const cl_mem *mem_list, - const void **args_mem_loc, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, - cl_event *event) CL_API_SUFFIX__VERSION_1_0; - -#ifdef CL_VERSION_1_2 - -typedef cl_int(CL_API_CALL *cl_api_clEnqueueMarkerWithWaitList)( - cl_command_queue command_queue, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, - cl_event *event) CL_API_SUFFIX__VERSION_1_2; - -typedef cl_int(CL_API_CALL *cl_api_clEnqueueBarrierWithWaitList)( - cl_command_queue command_queue, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, - cl_event *event) CL_API_SUFFIX__VERSION_1_2; - -typedef void *( - CL_API_CALL *cl_api_clGetExtensionFunctionAddressForPlatform)( - cl_platform_id platform, - const char *function_name)CL_API_SUFFIX__VERSION_1_2; - -#else - -typedef void *cl_api_clEnqueueMarkerWithWaitList; -typedef void *cl_api_clEnqueueBarrierWithWaitList; -typedef void *cl_api_clGetExtensionFunctionAddressForPlatform; - -#endif - -// Shared Virtual Memory APIs - -#ifdef CL_VERSION_2_0 - -typedef cl_int(CL_API_CALL *cl_api_clEnqueueSVMFree)( - cl_command_queue /* command_queue */, cl_uint /* num_svm_pointers */, - void ** /* svm_pointers */, - void(CL_CALLBACK *pfn_free_func)(cl_command_queue /* queue */, - cl_uint /* num_svm_pointers */, - void ** /* svm_pointers[] */, - void * /* user_data */), - void * /* user_data */, cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_2_0; - -typedef cl_int(CL_API_CALL *cl_api_clEnqueueSVMMemcpy)( - cl_command_queue /* command_queue */, cl_bool /* blocking_copy */, - void * /* dst_ptr */, const void * /* src_ptr */, size_t /* size */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_2_0; - -typedef cl_int(CL_API_CALL *cl_api_clEnqueueSVMMemFill)( - cl_command_queue /* command_queue */, void * /* svm_ptr */, - const void * /* pattern */, size_t /* pattern_size */, size_t /* size */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_2_0; - -typedef cl_int(CL_API_CALL *cl_api_clEnqueueSVMMap)( - cl_command_queue /* command_queue */, cl_bool /* blocking_map */, - cl_map_flags /* map_flags */, void * /* svm_ptr */, size_t /* size */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_2_0; - -typedef cl_int(CL_API_CALL *cl_api_clEnqueueSVMUnmap)( - cl_command_queue /* command_queue */, void * /* svm_ptr */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_2_0; - -#else - -typedef void *cl_api_clEnqueueSVMFree; -typedef void *cl_api_clEnqueueSVMMemcpy; -typedef void *cl_api_clEnqueueSVMMemFill; -typedef void *cl_api_clEnqueueSVMMap; -typedef void *cl_api_clEnqueueSVMUnmap; - -#endif - -// Deprecated APIs -typedef cl_int(CL_API_CALL *cl_api_clSetCommandQueueProperty)( - cl_command_queue command_queue, cl_command_queue_properties properties, - cl_bool enable, cl_command_queue_properties *old_properties) - CL_API_SUFFIX__VERSION_1_0_DEPRECATED; - -typedef cl_mem(CL_API_CALL *cl_api_clCreateImage2D)( - cl_context context, cl_mem_flags flags, const cl_image_format *image_format, - size_t image_width, size_t image_height, size_t image_row_pitch, - void *host_ptr, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_1_DEPRECATED; - -typedef cl_mem(CL_API_CALL *cl_api_clCreateImage3D)( - cl_context context, cl_mem_flags flags, const cl_image_format *image_format, - size_t image_width, size_t image_height, size_t image_depth, - size_t image_row_pitch, size_t image_slice_pitch, void *host_ptr, - cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_1_DEPRECATED; - -typedef cl_int(CL_API_CALL *cl_api_clUnloadCompiler)(void) - CL_API_SUFFIX__VERSION_1_1_DEPRECATED; - -typedef cl_int(CL_API_CALL *cl_api_clEnqueueMarker)( - cl_command_queue command_queue, - cl_event *event) CL_API_SUFFIX__VERSION_1_1_DEPRECATED; - -typedef cl_int(CL_API_CALL *cl_api_clEnqueueWaitForEvents)( - cl_command_queue command_queue, cl_uint num_events, - const cl_event *event_list) CL_API_SUFFIX__VERSION_1_1_DEPRECATED; - -typedef cl_int(CL_API_CALL *cl_api_clEnqueueBarrier)( - cl_command_queue command_queue) CL_API_SUFFIX__VERSION_1_1_DEPRECATED; - -typedef void *(CL_API_CALL *cl_api_clGetExtensionFunctionAddress)( - const char *function_name)CL_API_SUFFIX__VERSION_1_1_DEPRECATED; - -// GL and other APIs -typedef cl_mem(CL_API_CALL *cl_api_clCreateFromGLBuffer)( - cl_context context, cl_mem_flags flags, cl_GLuint bufobj, - int *errcode_ret) CL_API_SUFFIX__VERSION_1_0; - -typedef cl_mem(CL_API_CALL *cl_api_clCreateFromGLTexture)( - cl_context context, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel, - cl_GLuint texture, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_2; - -typedef cl_mem(CL_API_CALL *cl_api_clCreateFromGLTexture2D)( - cl_context context, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel, - cl_GLuint texture, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0; - -typedef cl_mem(CL_API_CALL *cl_api_clCreateFromGLTexture3D)( - cl_context context, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel, - cl_GLuint texture, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0; - -typedef cl_mem(CL_API_CALL *cl_api_clCreateFromGLRenderbuffer)( - cl_context context, cl_mem_flags flags, cl_GLuint renderbuffer, - cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0; - -typedef cl_int(CL_API_CALL *cl_api_clGetGLObjectInfo)( - cl_mem memobj, cl_gl_object_type *gl_object_type, - cl_GLuint *gl_object_name) CL_API_SUFFIX__VERSION_1_0; - -typedef cl_int(CL_API_CALL *cl_api_clGetGLTextureInfo)( - cl_mem memobj, cl_gl_texture_info param_name, size_t param_value_size, - void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; - -typedef cl_int(CL_API_CALL *cl_api_clEnqueueAcquireGLObjects)( - cl_command_queue command_queue, cl_uint num_objects, - const cl_mem *mem_objects, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, - cl_event *event) CL_API_SUFFIX__VERSION_1_0; - -typedef cl_int(CL_API_CALL *cl_api_clEnqueueReleaseGLObjects)( - cl_command_queue command_queue, cl_uint num_objects, - const cl_mem *mem_objects, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, - cl_event *event) CL_API_SUFFIX__VERSION_1_0; - -/* cl_khr_gl_sharing */ -typedef cl_int(CL_API_CALL *cl_api_clGetGLContextInfoKHR)( - const cl_context_properties *properties, cl_gl_context_info param_name, - size_t param_value_size, void *param_value, size_t *param_value_size_ret); - -/* cl_khr_gl_event */ -typedef cl_event(CL_API_CALL *cl_api_clCreateEventFromGLsyncKHR)( - cl_context context, cl_GLsync sync, cl_int *errcode_ret); - -#if defined(_WIN32) - -/* cl_khr_d3d10_sharing */ - -typedef cl_int(CL_API_CALL *cl_api_clGetDeviceIDsFromD3D10KHR)( - cl_platform_id platform, cl_d3d10_device_source_khr d3d_device_source, - void *d3d_object, cl_d3d10_device_set_khr d3d_device_set, - cl_uint num_entries, cl_device_id *devices, - cl_uint *num_devices) CL_API_SUFFIX__VERSION_1_0; - -typedef cl_mem(CL_API_CALL *cl_api_clCreateFromD3D10BufferKHR)( - cl_context context, cl_mem_flags flags, ID3D10Buffer *resource, - cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0; - -typedef cl_mem(CL_API_CALL *cl_api_clCreateFromD3D10Texture2DKHR)( - cl_context context, cl_mem_flags flags, ID3D10Texture2D *resource, - UINT subresource, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0; - -typedef cl_mem(CL_API_CALL *cl_api_clCreateFromD3D10Texture3DKHR)( - cl_context context, cl_mem_flags flags, ID3D10Texture3D *resource, - UINT subresource, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0; - -typedef -cl_int(CL_API_CALL *cl_api_clEnqueueAcquireD3D10ObjectsKHR)( - cl_command_queue command_queue, cl_uint num_objects, - const cl_mem *mem_objects, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, - cl_event *event) CL_API_SUFFIX__VERSION_1_0; - -typedef -cl_int(CL_API_CALL *cl_api_clEnqueueReleaseD3D10ObjectsKHR)( - cl_command_queue command_queue, cl_uint num_objects, - const cl_mem *mem_objects, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, - cl_event *event) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL clGetDeviceIDsFromD3D10KHR( - cl_platform_id platform, cl_d3d10_device_source_khr d3d_device_source, - void *d3d_object, cl_d3d10_device_set_khr d3d_device_set, - cl_uint num_entries, cl_device_id *devices, cl_uint *num_devices); - -extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateFromD3D10BufferKHR(cl_context context, cl_mem_flags flags, - ID3D10Buffer *resource, cl_int *errcode_ret); - -extern CL_API_ENTRY cl_mem CL_API_CALL clCreateFromD3D10Texture2DKHR( - cl_context context, cl_mem_flags flags, ID3D10Texture2D *resource, - UINT subresource, cl_int *errcode_ret); - -extern CL_API_ENTRY cl_mem CL_API_CALL clCreateFromD3D10Texture3DKHR( - cl_context context, cl_mem_flags flags, ID3D10Texture3D *resource, - UINT subresource, cl_int *errcode_ret); - -extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueAcquireD3D10ObjectsKHR( - cl_command_queue command_queue, cl_uint num_objects, - const cl_mem *mem_objects, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, cl_event *event); - -extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueReleaseD3D10ObjectsKHR( - cl_command_queue command_queue, cl_uint num_objects, - const cl_mem *mem_objects, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, cl_event *event); - -/* cl_khr_d3d11_sharing */ -typedef cl_int(CL_API_CALL *cl_api_clGetDeviceIDsFromD3D11KHR)( - cl_platform_id platform, cl_d3d11_device_source_khr d3d_device_source, - void *d3d_object, cl_d3d11_device_set_khr d3d_device_set, - cl_uint num_entries, cl_device_id *devices, - cl_uint *num_devices) CL_API_SUFFIX__VERSION_1_2; - -typedef cl_mem(CL_API_CALL *cl_api_clCreateFromD3D11BufferKHR)( - cl_context context, cl_mem_flags flags, ID3D11Buffer *resource, - cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_2; - -typedef cl_mem(CL_API_CALL *cl_api_clCreateFromD3D11Texture2DKHR)( - cl_context context, cl_mem_flags flags, ID3D11Texture2D *resource, - UINT subresource, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_2; - -typedef cl_mem(CL_API_CALL *cl_api_clCreateFromD3D11Texture3DKHR)( - cl_context context, cl_mem_flags flags, ID3D11Texture3D *resource, - UINT subresource, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_2; - -typedef -cl_int(CL_API_CALL *cl_api_clEnqueueAcquireD3D11ObjectsKHR)( - cl_command_queue command_queue, cl_uint num_objects, - const cl_mem *mem_objects, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, - cl_event *event) CL_API_SUFFIX__VERSION_1_2; - -typedef -cl_int(CL_API_CALL *cl_api_clEnqueueReleaseD3D11ObjectsKHR)( - cl_command_queue command_queue, cl_uint num_objects, - const cl_mem *mem_objects, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, - cl_event *event) CL_API_SUFFIX__VERSION_1_2; - -/* cl_khr_dx9_media_sharing */ -typedef -cl_int(CL_API_CALL *cl_api_clGetDeviceIDsFromDX9MediaAdapterKHR)( - cl_platform_id platform, cl_uint num_media_adapters, - cl_dx9_media_adapter_type_khr *media_adapters_type, void *media_adapters, - cl_dx9_media_adapter_set_khr media_adapter_set, cl_uint num_entries, - cl_device_id *devices, cl_uint *num_devices) CL_API_SUFFIX__VERSION_1_2; - -typedef cl_mem(CL_API_CALL *cl_api_clCreateFromDX9MediaSurfaceKHR)( - cl_context context, cl_mem_flags flags, - cl_dx9_media_adapter_type_khr adapter_type, void *surface_info, - cl_uint plane, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_2; - -typedef -cl_int(CL_API_CALL *cl_api_clEnqueueAcquireDX9MediaSurfacesKHR)( - cl_command_queue command_queue, cl_uint num_objects, - const cl_mem *mem_objects, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, - cl_event *event) CL_API_SUFFIX__VERSION_1_2; - -typedef -cl_int(CL_API_CALL *cl_api_clEnqueueReleaseDX9MediaSurfacesKHR)( - cl_command_queue command_queue, cl_uint num_objects, - const cl_mem *mem_objects, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, - cl_event *event) CL_API_SUFFIX__VERSION_1_2; - -/* cl_khr_d3d11_sharing */ -extern CL_API_ENTRY cl_int CL_API_CALL clGetDeviceIDsFromD3D11KHR( - cl_platform_id platform, cl_d3d11_device_source_khr d3d_device_source, - void *d3d_object, cl_d3d11_device_set_khr d3d_device_set, - cl_uint num_entries, cl_device_id *devices, cl_uint *num_devices); - -extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateFromD3D11BufferKHR(cl_context context, cl_mem_flags flags, - ID3D11Buffer *resource, cl_int *errcode_ret); - -extern CL_API_ENTRY cl_mem CL_API_CALL clCreateFromD3D11Texture2DKHR( - cl_context context, cl_mem_flags flags, ID3D11Texture2D *resource, - UINT subresource, cl_int *errcode_ret); - -extern CL_API_ENTRY cl_mem CL_API_CALL clCreateFromD3D11Texture3DKHR( - cl_context context, cl_mem_flags flags, ID3D11Texture3D *resource, - UINT subresource, cl_int *errcode_ret); - -extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueAcquireD3D11ObjectsKHR( - cl_command_queue command_queue, cl_uint num_objects, - const cl_mem *mem_objects, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, cl_event *event); - -extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueReleaseD3D11ObjectsKHR( - cl_command_queue command_queue, cl_uint num_objects, - const cl_mem *mem_objects, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, cl_event *event); - -/* cl_khr_dx9_media_sharing */ -extern CL_API_ENTRY cl_int CL_API_CALL clGetDeviceIDsFromDX9MediaAdapterKHR( - cl_platform_id platform, cl_uint num_media_adapters, - cl_dx9_media_adapter_type_khr *media_adapter_type, void *media_adapters, - cl_dx9_media_adapter_set_khr media_adapter_set, cl_uint num_entries, - cl_device_id *devices, cl_uint *num_devices); - -extern CL_API_ENTRY cl_mem CL_API_CALL clCreateFromDX9MediaSurfaceKHR( - cl_context context, cl_mem_flags flags, - cl_dx9_media_adapter_type_khr adapter_type, void *surface_info, - cl_uint plane, cl_int *errcode_ret); - -extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueAcquireDX9MediaSurfacesKHR( - cl_command_queue command_queue, cl_uint num_objects, - const cl_mem *mem_objects, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, cl_event *event); - -extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueReleaseDX9MediaSurfacesKHR( - cl_command_queue command_queue, cl_uint num_objects, - const cl_mem *mem_objects, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, cl_event *event); - -#else - -/* cl_khr_d3d10_sharing */ -typedef void *cl_api_clGetDeviceIDsFromD3D10KHR; -typedef void *cl_api_clCreateFromD3D10BufferKHR; -typedef void *cl_api_clCreateFromD3D10Texture2DKHR; -typedef void *cl_api_clCreateFromD3D10Texture3DKHR; -typedef void *cl_api_clEnqueueAcquireD3D10ObjectsKHR; -typedef void *cl_api_clEnqueueReleaseD3D10ObjectsKHR; - -/* cl_khr_d3d11_sharing */ -typedef void *cl_api_clGetDeviceIDsFromD3D11KHR; -typedef void *cl_api_clCreateFromD3D11BufferKHR; -typedef void *cl_api_clCreateFromD3D11Texture2DKHR; -typedef void *cl_api_clCreateFromD3D11Texture3DKHR; -typedef void *cl_api_clEnqueueAcquireD3D11ObjectsKHR; -typedef void *cl_api_clEnqueueReleaseD3D11ObjectsKHR; - -/* cl_khr_dx9_media_sharing */ -typedef void *cl_api_clCreateFromDX9MediaSurfaceKHR; -typedef void *cl_api_clEnqueueAcquireDX9MediaSurfacesKHR; -typedef void *cl_api_clEnqueueReleaseDX9MediaSurfacesKHR; -typedef void *cl_api_clGetDeviceIDsFromDX9MediaAdapterKHR; - -#endif - -/* OpenCL 1.1 */ - -#ifdef CL_VERSION_1_1 - -typedef cl_int(CL_API_CALL *cl_api_clSetEventCallback)( - cl_event /* event */, cl_int /* command_exec_callback_type */, - void(CL_CALLBACK * /* pfn_notify */)(cl_event, cl_int, void *), - void * /* user_data */) CL_API_SUFFIX__VERSION_1_1; - -typedef cl_mem(CL_API_CALL *cl_api_clCreateSubBuffer)( - cl_mem /* buffer */, cl_mem_flags /* flags */, - cl_buffer_create_type /* buffer_create_type */, - const void * /* buffer_create_info */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_1; - -typedef -cl_int(CL_API_CALL *cl_api_clSetMemObjectDestructorCallback)( - cl_mem /* memobj */, - void(CL_CALLBACK * /*pfn_notify*/)(cl_mem /* memobj */, - void * /*user_data*/), - void * /*user_data */) CL_API_SUFFIX__VERSION_1_1; - -typedef cl_event(CL_API_CALL *cl_api_clCreateUserEvent)( - cl_context /* context */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_1; - -typedef cl_int(CL_API_CALL *cl_api_clSetUserEventStatus)( - cl_event /* event */, - cl_int /* execution_status */) CL_API_SUFFIX__VERSION_1_1; - -#else - -typedef void *cl_api_clSetEventCallback; -typedef void *cl_api_clCreateSubBuffer; -typedef void *cl_api_clSetMemObjectDestructorCallback; -typedef void *cl_api_clCreateUserEvent; -typedef void *cl_api_clSetUserEventStatus; - -#endif - -typedef cl_int(CL_API_CALL *cl_api_clCreateSubDevicesEXT)( - cl_device_id in_device, - const cl_device_partition_property_ext *partition_properties, - cl_uint num_entries, cl_device_id *out_devices, cl_uint *num_devices); - -typedef cl_int(CL_API_CALL *cl_api_clRetainDeviceEXT)( - cl_device_id device) CL_API_SUFFIX__VERSION_1_0; - -typedef cl_int(CL_API_CALL *cl_api_clReleaseDeviceEXT)( - cl_device_id device) CL_API_SUFFIX__VERSION_1_0; - -/* cl_khr_egl_image */ -typedef cl_mem(CL_API_CALL *cl_api_clCreateFromEGLImageKHR)( - cl_context context, CLeglDisplayKHR display, CLeglImageKHR image, - cl_mem_flags flags, const cl_egl_image_properties_khr *properties, - cl_int *errcode_ret); - -typedef cl_int(CL_API_CALL *cl_api_clEnqueueAcquireEGLObjectsKHR)( - cl_command_queue command_queue, cl_uint num_objects, - const cl_mem *mem_objects, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, cl_event *event); - -typedef cl_int(CL_API_CALL *cl_api_clEnqueueReleaseEGLObjectsKHR)( - cl_command_queue command_queue, cl_uint num_objects, - const cl_mem *mem_objects, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, cl_event *event); - -/* cl_khr_egl_event */ -typedef cl_event(CL_API_CALL *cl_api_clCreateEventFromEGLSyncKHR)( - cl_context context, CLeglSyncKHR sync, CLeglDisplayKHR display, - cl_int *errcode_ret); - -#ifdef CL_VERSION_2_1 - -typedef cl_int(CL_API_CALL *cl_api_clSetDefaultDeviceCommandQueue)( - cl_context context, cl_device_id device, - cl_command_queue command_queue) CL_API_SUFFIX__VERSION_2_1; - -typedef cl_program(CL_API_CALL *cl_api_clCreateProgramWithIL)( - cl_context context, const void *il, size_t length, - cl_int *errcode_ret) CL_API_SUFFIX__VERSION_2_1; - -typedef cl_int(CL_API_CALL *cl_api_clGetKernelSubGroupInfo)( - cl_kernel kernel, cl_device_id device, cl_kernel_sub_group_info param_name, - size_t input_value_size, const void *input_value, size_t param_value_size, - void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_2_1; - -typedef cl_kernel(CL_API_CALL *cl_api_clCloneKernel)( - cl_kernel source_kernel, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_2_1; - -typedef cl_int(CL_API_CALL *cl_api_clEnqueueSVMMigrateMem)( - cl_command_queue command_queue, cl_uint num_svm_pointers, - const void **svm_pointers, const size_t *sizes, - cl_mem_migration_flags flags, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, - cl_event *event) CL_API_SUFFIX__VERSION_2_1; - -typedef cl_int(CL_API_CALL *cl_api_clGetDeviceAndHostTimer)( - cl_device_id device, cl_ulong *device_timestamp, - cl_ulong *host_timestamp) CL_API_SUFFIX__VERSION_2_1; - -typedef cl_int(CL_API_CALL *cl_api_clGetHostTimer)( - cl_device_id device, cl_ulong *host_timestamp) CL_API_SUFFIX__VERSION_2_1; - -#else - -typedef void *cl_api_clSetDefaultDeviceCommandQueue; -typedef void *cl_api_clCreateProgramWithIL; -typedef void *cl_api_clGetKernelSubGroupInfo; -typedef void *cl_api_clCloneKernel; -typedef void *cl_api_clEnqueueSVMMigrateMem; -typedef void *cl_api_clGetDeviceAndHostTimer; -typedef void *cl_api_clGetHostTimer; - -#endif - /* Vendor dispatch table structure */ typedef struct _cl_icd_dispatch { /* OpenCL 1.0 */ - cl_api_clGetPlatformIDs clGetPlatformIDs; - cl_api_clGetPlatformInfo clGetPlatformInfo; - cl_api_clGetDeviceIDs clGetDeviceIDs; - cl_api_clGetDeviceInfo clGetDeviceInfo; - cl_api_clCreateContext clCreateContext; - cl_api_clCreateContextFromType clCreateContextFromType; - cl_api_clRetainContext clRetainContext; - cl_api_clReleaseContext clReleaseContext; - cl_api_clGetContextInfo clGetContextInfo; - cl_api_clCreateCommandQueue clCreateCommandQueue; - cl_api_clRetainCommandQueue clRetainCommandQueue; - cl_api_clReleaseCommandQueue clReleaseCommandQueue; - cl_api_clGetCommandQueueInfo clGetCommandQueueInfo; - cl_api_clSetCommandQueueProperty clSetCommandQueueProperty; - cl_api_clCreateBuffer clCreateBuffer; - cl_api_clCreateImage2D clCreateImage2D; - cl_api_clCreateImage3D clCreateImage3D; - cl_api_clRetainMemObject clRetainMemObject; - cl_api_clReleaseMemObject clReleaseMemObject; - cl_api_clGetSupportedImageFormats clGetSupportedImageFormats; - cl_api_clGetMemObjectInfo clGetMemObjectInfo; - cl_api_clGetImageInfo clGetImageInfo; - cl_api_clCreateSampler clCreateSampler; - cl_api_clRetainSampler clRetainSampler; - cl_api_clReleaseSampler clReleaseSampler; - cl_api_clGetSamplerInfo clGetSamplerInfo; - cl_api_clCreateProgramWithSource clCreateProgramWithSource; - cl_api_clCreateProgramWithBinary clCreateProgramWithBinary; - cl_api_clRetainProgram clRetainProgram; - cl_api_clReleaseProgram clReleaseProgram; - cl_api_clBuildProgram clBuildProgram; - cl_api_clUnloadCompiler clUnloadCompiler; - cl_api_clGetProgramInfo clGetProgramInfo; - cl_api_clGetProgramBuildInfo clGetProgramBuildInfo; - cl_api_clCreateKernel clCreateKernel; - cl_api_clCreateKernelsInProgram clCreateKernelsInProgram; - cl_api_clRetainKernel clRetainKernel; - cl_api_clReleaseKernel clReleaseKernel; - cl_api_clSetKernelArg clSetKernelArg; - cl_api_clGetKernelInfo clGetKernelInfo; - cl_api_clGetKernelWorkGroupInfo clGetKernelWorkGroupInfo; - cl_api_clWaitForEvents clWaitForEvents; - cl_api_clGetEventInfo clGetEventInfo; - cl_api_clRetainEvent clRetainEvent; - cl_api_clReleaseEvent clReleaseEvent; - cl_api_clGetEventProfilingInfo clGetEventProfilingInfo; - cl_api_clFlush clFlush; - cl_api_clFinish clFinish; - cl_api_clEnqueueReadBuffer clEnqueueReadBuffer; - cl_api_clEnqueueWriteBuffer clEnqueueWriteBuffer; - cl_api_clEnqueueCopyBuffer clEnqueueCopyBuffer; - cl_api_clEnqueueReadImage clEnqueueReadImage; - cl_api_clEnqueueWriteImage clEnqueueWriteImage; - cl_api_clEnqueueCopyImage clEnqueueCopyImage; - cl_api_clEnqueueCopyImageToBuffer clEnqueueCopyImageToBuffer; - cl_api_clEnqueueCopyBufferToImage clEnqueueCopyBufferToImage; - cl_api_clEnqueueMapBuffer clEnqueueMapBuffer; - cl_api_clEnqueueMapImage clEnqueueMapImage; - cl_api_clEnqueueUnmapMemObject clEnqueueUnmapMemObject; - cl_api_clEnqueueNDRangeKernel clEnqueueNDRangeKernel; - cl_api_clEnqueueTask clEnqueueTask; - cl_api_clEnqueueNativeKernel clEnqueueNativeKernel; - cl_api_clEnqueueMarker clEnqueueMarker; - cl_api_clEnqueueWaitForEvents clEnqueueWaitForEvents; - cl_api_clEnqueueBarrier clEnqueueBarrier; - cl_api_clGetExtensionFunctionAddress clGetExtensionFunctionAddress; - cl_api_clCreateFromGLBuffer clCreateFromGLBuffer; - cl_api_clCreateFromGLTexture2D clCreateFromGLTexture2D; - cl_api_clCreateFromGLTexture3D clCreateFromGLTexture3D; - cl_api_clCreateFromGLRenderbuffer clCreateFromGLRenderbuffer; - cl_api_clGetGLObjectInfo clGetGLObjectInfo; - cl_api_clGetGLTextureInfo clGetGLTextureInfo; - cl_api_clEnqueueAcquireGLObjects clEnqueueAcquireGLObjects; - cl_api_clEnqueueReleaseGLObjects clEnqueueReleaseGLObjects; - cl_api_clGetGLContextInfoKHR clGetGLContextInfoKHR; + clGetPlatformIDs_t *clGetPlatformIDs; + clGetPlatformInfo_t *clGetPlatformInfo; + clGetDeviceIDs_t *clGetDeviceIDs; + clGetDeviceInfo_t *clGetDeviceInfo; + clCreateContext_t *clCreateContext; + clCreateContextFromType_t *clCreateContextFromType; + clRetainContext_t *clRetainContext; + clReleaseContext_t *clReleaseContext; + clGetContextInfo_t *clGetContextInfo; + clCreateCommandQueue_t *clCreateCommandQueue; + clRetainCommandQueue_t *clRetainCommandQueue; + clReleaseCommandQueue_t *clReleaseCommandQueue; + clGetCommandQueueInfo_t *clGetCommandQueueInfo; + clSetCommandQueueProperty_t *clSetCommandQueueProperty; + clCreateBuffer_t *clCreateBuffer; + clCreateImage2D_t *clCreateImage2D; + clCreateImage3D_t *clCreateImage3D; + clRetainMemObject_t *clRetainMemObject; + clReleaseMemObject_t *clReleaseMemObject; + clGetSupportedImageFormats_t *clGetSupportedImageFormats; + clGetMemObjectInfo_t *clGetMemObjectInfo; + clGetImageInfo_t *clGetImageInfo; + clCreateSampler_t *clCreateSampler; + clRetainSampler_t *clRetainSampler; + clReleaseSampler_t *clReleaseSampler; + clGetSamplerInfo_t *clGetSamplerInfo; + clCreateProgramWithSource_t *clCreateProgramWithSource; + clCreateProgramWithBinary_t *clCreateProgramWithBinary; + clRetainProgram_t *clRetainProgram; + clReleaseProgram_t *clReleaseProgram; + clBuildProgram_t *clBuildProgram; + clUnloadCompiler_t *clUnloadCompiler; + clGetProgramInfo_t *clGetProgramInfo; + clGetProgramBuildInfo_t *clGetProgramBuildInfo; + clCreateKernel_t *clCreateKernel; + clCreateKernelsInProgram_t *clCreateKernelsInProgram; + clRetainKernel_t *clRetainKernel; + clReleaseKernel_t *clReleaseKernel; + clSetKernelArg_t *clSetKernelArg; + clGetKernelInfo_t *clGetKernelInfo; + clGetKernelWorkGroupInfo_t *clGetKernelWorkGroupInfo; + clWaitForEvents_t *clWaitForEvents; + clGetEventInfo_t *clGetEventInfo; + clRetainEvent_t *clRetainEvent; + clReleaseEvent_t *clReleaseEvent; + clGetEventProfilingInfo_t *clGetEventProfilingInfo; + clFlush_t *clFlush; + clFinish_t *clFinish; + clEnqueueReadBuffer_t *clEnqueueReadBuffer; + clEnqueueWriteBuffer_t *clEnqueueWriteBuffer; + clEnqueueCopyBuffer_t *clEnqueueCopyBuffer; + clEnqueueReadImage_t *clEnqueueReadImage; + clEnqueueWriteImage_t *clEnqueueWriteImage; + clEnqueueCopyImage_t *clEnqueueCopyImage; + clEnqueueCopyImageToBuffer_t *clEnqueueCopyImageToBuffer; + clEnqueueCopyBufferToImage_t *clEnqueueCopyBufferToImage; + clEnqueueMapBuffer_t *clEnqueueMapBuffer; + clEnqueueMapImage_t *clEnqueueMapImage; + clEnqueueUnmapMemObject_t *clEnqueueUnmapMemObject; + clEnqueueNDRangeKernel_t *clEnqueueNDRangeKernel; + clEnqueueTask_t *clEnqueueTask; + clEnqueueNativeKernel_t *clEnqueueNativeKernel; + clEnqueueMarker_t *clEnqueueMarker; + clEnqueueWaitForEvents_t *clEnqueueWaitForEvents; + clEnqueueBarrier_t *clEnqueueBarrier; + clGetExtensionFunctionAddress_t *clGetExtensionFunctionAddress; + clCreateFromGLBuffer_t *clCreateFromGLBuffer; + clCreateFromGLTexture2D_t *clCreateFromGLTexture2D; + clCreateFromGLTexture3D_t *clCreateFromGLTexture3D; + clCreateFromGLRenderbuffer_t *clCreateFromGLRenderbuffer; + clGetGLObjectInfo_t *clGetGLObjectInfo; + clGetGLTextureInfo_t *clGetGLTextureInfo; + clEnqueueAcquireGLObjects_t *clEnqueueAcquireGLObjects; + clEnqueueReleaseGLObjects_t *clEnqueueReleaseGLObjects; + clGetGLContextInfoKHR_t *clGetGLContextInfoKHR; /* cl_khr_d3d10_sharing */ - cl_api_clGetDeviceIDsFromD3D10KHR clGetDeviceIDsFromD3D10KHR; - cl_api_clCreateFromD3D10BufferKHR clCreateFromD3D10BufferKHR; - cl_api_clCreateFromD3D10Texture2DKHR clCreateFromD3D10Texture2DKHR; - cl_api_clCreateFromD3D10Texture3DKHR clCreateFromD3D10Texture3DKHR; - cl_api_clEnqueueAcquireD3D10ObjectsKHR clEnqueueAcquireD3D10ObjectsKHR; - cl_api_clEnqueueReleaseD3D10ObjectsKHR clEnqueueReleaseD3D10ObjectsKHR; +#ifdef _WIN32 + clGetDeviceIDsFromD3D10KHR_t *clGetDeviceIDsFromD3D10KHR; + clCreateFromD3D10BufferKHR_t *clCreateFromD3D10BufferKHR; + clCreateFromD3D10Texture2DKHR_t *clCreateFromD3D10Texture2DKHR; + clCreateFromD3D10Texture3DKHR_t *clCreateFromD3D10Texture3DKHR; + clEnqueueAcquireD3D10ObjectsKHR_t *clEnqueueAcquireD3D10ObjectsKHR; + clEnqueueReleaseD3D10ObjectsKHR_t *clEnqueueReleaseD3D10ObjectsKHR; +#else + void *clGetDeviceIDsFromD3D10KHR; + void *clCreateFromD3D10BufferKHR; + void *clCreateFromD3D10Texture2DKHR; + void *clCreateFromD3D10Texture3DKHR; + void *clEnqueueAcquireD3D10ObjectsKHR; + void *clEnqueueReleaseD3D10ObjectsKHR; +#endif /* OpenCL 1.1 */ - cl_api_clSetEventCallback clSetEventCallback; - cl_api_clCreateSubBuffer clCreateSubBuffer; - cl_api_clSetMemObjectDestructorCallback clSetMemObjectDestructorCallback; - cl_api_clCreateUserEvent clCreateUserEvent; - cl_api_clSetUserEventStatus clSetUserEventStatus; - cl_api_clEnqueueReadBufferRect clEnqueueReadBufferRect; - cl_api_clEnqueueWriteBufferRect clEnqueueWriteBufferRect; - cl_api_clEnqueueCopyBufferRect clEnqueueCopyBufferRect; +#ifdef CL_VERSION_1_1 + clSetEventCallback_t *clSetEventCallback; + clCreateSubBuffer_t *clCreateSubBuffer; + clSetMemObjectDestructorCallback_t *clSetMemObjectDestructorCallback; + clCreateUserEvent_t *clCreateUserEvent; + clSetUserEventStatus_t *clSetUserEventStatus; + clEnqueueReadBufferRect_t *clEnqueueReadBufferRect; + clEnqueueWriteBufferRect_t *clEnqueueWriteBufferRect; + clEnqueueCopyBufferRect_t *clEnqueueCopyBufferRect; +#else + void *clSetEventCallback; + void *clCreateSubBuffer; + void *clSetMemObjectDestructorCallback; + void *clCreateUserEvent; + void *clSetUserEventStatus; + void *clEnqueueReadBufferRect; + void *clEnqueueWriteBufferRect; + void *clEnqueueCopyBufferRect; +#endif /* cl_ext_device_fission */ - cl_api_clCreateSubDevicesEXT clCreateSubDevicesEXT; - cl_api_clRetainDeviceEXT clRetainDeviceEXT; - cl_api_clReleaseDeviceEXT clReleaseDeviceEXT; + clCreateSubDevicesEXT_t *clCreateSubDevicesEXT; + clRetainDeviceEXT_t *clRetainDeviceEXT; + clReleaseDeviceEXT_t *clReleaseDeviceEXT; /* cl_khr_gl_event */ - cl_api_clCreateEventFromGLsyncKHR clCreateEventFromGLsyncKHR; + clCreateEventFromGLsyncKHR_t *clCreateEventFromGLsyncKHR; /* OpenCL 1.2 */ - cl_api_clCreateSubDevices clCreateSubDevices; - cl_api_clRetainDevice clRetainDevice; - cl_api_clReleaseDevice clReleaseDevice; - cl_api_clCreateImage clCreateImage; - cl_api_clCreateProgramWithBuiltInKernels clCreateProgramWithBuiltInKernels; - cl_api_clCompileProgram clCompileProgram; - cl_api_clLinkProgram clLinkProgram; - cl_api_clUnloadPlatformCompiler clUnloadPlatformCompiler; - cl_api_clGetKernelArgInfo clGetKernelArgInfo; - cl_api_clEnqueueFillBuffer clEnqueueFillBuffer; - cl_api_clEnqueueFillImage clEnqueueFillImage; - cl_api_clEnqueueMigrateMemObjects clEnqueueMigrateMemObjects; - cl_api_clEnqueueMarkerWithWaitList clEnqueueMarkerWithWaitList; - cl_api_clEnqueueBarrierWithWaitList clEnqueueBarrierWithWaitList; - cl_api_clGetExtensionFunctionAddressForPlatform +#ifdef CL_VERSION_1_2 + clCreateSubDevices_t *clCreateSubDevices; + clRetainDevice_t *clRetainDevice; + clReleaseDevice_t *clReleaseDevice; + clCreateImage_t *clCreateImage; + clCreateProgramWithBuiltInKernels_t *clCreateProgramWithBuiltInKernels; + clCompileProgram_t *clCompileProgram; + clLinkProgram_t *clLinkProgram; + clUnloadPlatformCompiler_t *clUnloadPlatformCompiler; + clGetKernelArgInfo_t *clGetKernelArgInfo; + clEnqueueFillBuffer_t *clEnqueueFillBuffer; + clEnqueueFillImage_t *clEnqueueFillImage; + clEnqueueMigrateMemObjects_t *clEnqueueMigrateMemObjects; + clEnqueueMarkerWithWaitList_t *clEnqueueMarkerWithWaitList; + clEnqueueBarrierWithWaitList_t *clEnqueueBarrierWithWaitList; + clGetExtensionFunctionAddressForPlatform_t * clGetExtensionFunctionAddressForPlatform; - cl_api_clCreateFromGLTexture clCreateFromGLTexture; + clCreateFromGLTexture_t *clCreateFromGLTexture; +#else + void *clCreateSubDevices; + void *clRetainDevice; + void *clReleaseDevice; + void *clCreateImage; + void *clCreateProgramWithBuiltInKernels; + void *clCompileProgram; + void *clLinkProgram; + void *clUnloadPlatformCompiler; + void *clGetKernelArgInfo; + void *clEnqueueFillBuffer; + void *clEnqueueFillImage; + void *clEnqueueMigrateMemObjects; + void *clEnqueueMarkerWithWaitList; + void *clEnqueueBarrierWithWaitList; + void *clGetExtensionFunctionAddressForPlatform; + void *clCreateFromGLTexture; +#endif - /* cl_khr_d3d11_sharing */ - cl_api_clGetDeviceIDsFromD3D11KHR clGetDeviceIDsFromD3D11KHR; - cl_api_clCreateFromD3D11BufferKHR clCreateFromD3D11BufferKHR; - cl_api_clCreateFromD3D11Texture2DKHR clCreateFromD3D11Texture2DKHR; - cl_api_clCreateFromD3D11Texture3DKHR clCreateFromD3D11Texture3DKHR; - cl_api_clCreateFromDX9MediaSurfaceKHR clCreateFromDX9MediaSurfaceKHR; - cl_api_clEnqueueAcquireD3D11ObjectsKHR clEnqueueAcquireD3D11ObjectsKHR; - cl_api_clEnqueueReleaseD3D11ObjectsKHR clEnqueueReleaseD3D11ObjectsKHR; - - /* cl_khr_dx9_media_sharing */ - cl_api_clGetDeviceIDsFromDX9MediaAdapterKHR + /* cl_khr_d3d11_sharing and cl_khr_dx9_media_sharing */ +#ifdef _WIN32 + clGetDeviceIDsFromD3D11KHR_t *clGetDeviceIDsFromD3D11KHR; + clCreateFromD3D11BufferKHR_t *clCreateFromD3D11BufferKHR; + clCreateFromD3D11Texture2DKHR_t *clCreateFromD3D11Texture2DKHR; + clCreateFromD3D11Texture3DKHR_t *clCreateFromD3D11Texture3DKHR; + clCreateFromDX9MediaSurfaceKHR_t *clCreateFromDX9MediaSurfaceKHR; + clEnqueueAcquireD3D11ObjectsKHR_t *clEnqueueAcquireD3D11ObjectsKHR; + clEnqueueReleaseD3D11ObjectsKHR_t *clEnqueueReleaseD3D11ObjectsKHR; + clGetDeviceIDsFromDX9MediaAdapterKHR_t * clGetDeviceIDsFromDX9MediaAdapterKHR; - cl_api_clEnqueueAcquireDX9MediaSurfacesKHR + clEnqueueAcquireDX9MediaSurfacesKHR_t * clEnqueueAcquireDX9MediaSurfacesKHR; - cl_api_clEnqueueReleaseDX9MediaSurfacesKHR + clEnqueueReleaseDX9MediaSurfacesKHR_t * clEnqueueReleaseDX9MediaSurfacesKHR; +#else + void *clGetDeviceIDsFromD3D11KHR; + void *clCreateFromD3D11BufferKHR; + void *clCreateFromD3D11Texture2DKHR; + void *clCreateFromD3D11Texture3DKHR; + void *clCreateFromDX9MediaSurfaceKHR; + void *clEnqueueAcquireD3D11ObjectsKHR; + void *clEnqueueReleaseD3D11ObjectsKHR; + void *clGetDeviceIDsFromDX9MediaAdapterKHR; + void *clEnqueueAcquireDX9MediaSurfacesKHR; + void *clEnqueueReleaseDX9MediaSurfacesKHR; +#endif /* cl_khr_egl_image */ - cl_api_clCreateFromEGLImageKHR clCreateFromEGLImageKHR; - cl_api_clEnqueueAcquireEGLObjectsKHR clEnqueueAcquireEGLObjectsKHR; - cl_api_clEnqueueReleaseEGLObjectsKHR clEnqueueReleaseEGLObjectsKHR; + clCreateFromEGLImageKHR_t *clCreateFromEGLImageKHR; + clEnqueueAcquireEGLObjectsKHR_t *clEnqueueAcquireEGLObjectsKHR; + clEnqueueReleaseEGLObjectsKHR_t *clEnqueueReleaseEGLObjectsKHR; /* cl_khr_egl_event */ - cl_api_clCreateEventFromEGLSyncKHR clCreateEventFromEGLSyncKHR; + clCreateEventFromEGLSyncKHR_t *clCreateEventFromEGLSyncKHR; /* OpenCL 2.0 */ - cl_api_clCreateCommandQueueWithProperties clCreateCommandQueueWithProperties; - cl_api_clCreatePipe clCreatePipe; - cl_api_clGetPipeInfo clGetPipeInfo; - cl_api_clSVMAlloc clSVMAlloc; - cl_api_clSVMFree clSVMFree; - cl_api_clEnqueueSVMFree clEnqueueSVMFree; - cl_api_clEnqueueSVMMemcpy clEnqueueSVMMemcpy; - cl_api_clEnqueueSVMMemFill clEnqueueSVMMemFill; - cl_api_clEnqueueSVMMap clEnqueueSVMMap; - cl_api_clEnqueueSVMUnmap clEnqueueSVMUnmap; - cl_api_clCreateSamplerWithProperties clCreateSamplerWithProperties; - cl_api_clSetKernelArgSVMPointer clSetKernelArgSVMPointer; - cl_api_clSetKernelExecInfo clSetKernelExecInfo; +#ifdef CL_VERSION_2_0 + clCreateCommandQueueWithProperties_t *clCreateCommandQueueWithProperties; + clCreatePipe_t *clCreatePipe; + clGetPipeInfo_t *clGetPipeInfo; + clSVMAlloc_t *clSVMAlloc; + clSVMFree_t *clSVMFree; + clEnqueueSVMFree_t *clEnqueueSVMFree; + clEnqueueSVMMemcpy_t *clEnqueueSVMMemcpy; + clEnqueueSVMMemFill_t *clEnqueueSVMMemFill; + clEnqueueSVMMap_t *clEnqueueSVMMap; + clEnqueueSVMUnmap_t *clEnqueueSVMUnmap; + clCreateSamplerWithProperties_t *clCreateSamplerWithProperties; + clSetKernelArgSVMPointer_t *clSetKernelArgSVMPointer; + clSetKernelExecInfo_t *clSetKernelExecInfo; +#else + void *clCreateCommandQueueWithProperties; + void *clCreatePipe; + void *clGetPipeInfo; + void *clSVMAlloc; + void *clSVMFree; + void *clEnqueueSVMFree; + void *clEnqueueSVMMemcpy; + void *clEnqueueSVMMemFill; + void *clEnqueueSVMMap; + void *clEnqueueSVMUnmap; + void *clCreateSamplerWithProperties; + void *clSetKernelArgSVMPointer; + void *clSetKernelExecInfo; +#endif /* cl_khr_sub_groups */ - cl_api_clGetKernelSubGroupInfoKHR clGetKernelSubGroupInfoKHR; + clGetKernelSubGroupInfoKHR_t *clGetKernelSubGroupInfoKHR; /* OpenCL 2.1 */ - cl_api_clCloneKernel clCloneKernel; - cl_api_clCreateProgramWithIL clCreateProgramWithIL; - cl_api_clEnqueueSVMMigrateMem clEnqueueSVMMigrateMem; - cl_api_clGetDeviceAndHostTimer clGetDeviceAndHostTimer; - cl_api_clGetHostTimer clGetHostTimer; - cl_api_clGetKernelSubGroupInfo clGetKernelSubGroupInfo; - cl_api_clSetDefaultDeviceCommandQueue clSetDefaultDeviceCommandQueue; +#ifdef CL_VERSION_2_1 + clCloneKernel_t *clCloneKernel; + clCreateProgramWithIL_t *clCreateProgramWithIL; + clEnqueueSVMMigrateMem_t *clEnqueueSVMMigrateMem; + clGetDeviceAndHostTimer_t *clGetDeviceAndHostTimer; + clGetHostTimer_t *clGetHostTimer; + clGetKernelSubGroupInfo_t *clGetKernelSubGroupInfo; + clSetDefaultDeviceCommandQueue_t *clSetDefaultDeviceCommandQueue; +#else + void *clCloneKernel; + void *clCreateProgramWithIL; + void *clEnqueueSVMMigrateMem; + void *clGetDeviceAndHostTimer; + void *clGetHostTimer; + void *clGetKernelSubGroupInfo; + void *clSetDefaultDeviceCommandQueue; +#endif /* OpenCL 2.2 */ - cl_api_clSetProgramReleaseCallback clSetProgramReleaseCallback; - cl_api_clSetProgramSpecializationConstant clSetProgramSpecializationConstant; +#ifdef CL_VERSION_2_2 + clSetProgramReleaseCallback_t *clSetProgramReleaseCallback; + clSetProgramSpecializationConstant_t *clSetProgramSpecializationConstant; +#else + void *clSetProgramReleaseCallback; + void *clSetProgramSpecializationConstant; +#endif /* OpenCL 3.0 */ - cl_api_clCreateBufferWithProperties clCreateBufferWithProperties; - cl_api_clCreateImageWithProperties clCreateImageWithProperties; - cl_api_clSetContextDestructorCallback clSetContextDestructorCallback; +#ifdef CL_VERSION_3_0 + clCreateBufferWithProperties_t *clCreateBufferWithProperties; + clCreateImageWithProperties_t *clCreateImageWithProperties; + clSetContextDestructorCallback_t *clSetContextDestructorCallback; +#else + void *clCreateBufferWithProperties; + void *clCreateImageWithProperties; + void *clSetContextDestructorCallback; +#endif } cl_icd_dispatch; diff --git a/deps/OpenCL-Headers/CL/cl_layer.h b/deps/OpenCL-Headers/CL/cl_layer.h index acaa6c2a5..245f7b532 100644 --- a/deps/OpenCL-Headers/CL/cl_layer.h +++ b/deps/OpenCL-Headers/CL/cl_layer.h @@ -53,6 +53,9 @@ extern "C" { #define CL_LOADER_LAYERS_EXTENSION_NAME \ "cl_loader_layers" + +#define CL_LOADER_LAYERS_EXTENSION_VERSION CL_MAKE_VERSION(1, 0, 0) + typedef cl_uint cl_layer_info; typedef cl_uint cl_layer_api_version; @@ -64,19 +67,25 @@ typedef cl_uint cl_layer_api_version; #define CL_LAYER_API_VERSION_100 100 -typedef cl_int (CL_API_CALL * -clGetLayerInfo_fn)( +typedef cl_int CL_API_CALL +clGetLayerInfo_t( cl_layer_info param_name, size_t param_value_size, void* param_value, - size_t* param_value_size_ret) ; + size_t* param_value_size_ret); -typedef cl_int (CL_API_CALL * -clInitLayer_fn)( +typedef clGetLayerInfo_t * +clGetLayerInfo_fn ; + +typedef cl_int CL_API_CALL +clInitLayer_t( cl_uint num_entries, const cl_icd_dispatch* target_dispatch, cl_uint* num_entries_ret, - const cl_icd_dispatch** layer_dispatch_ret) ; + const cl_icd_dispatch** layer_dispatch_ret); + +typedef clInitLayer_t * +clInitLayer_fn ; /* ** The function pointer typedefs prefixed with "pfn_" are provided for @@ -85,19 +94,11 @@ clInitLayer_fn)( ** "_fn" instead, for consistency. */ -typedef cl_int (CL_API_CALL * -pfn_clGetLayerInfo)( - cl_layer_info param_name, - size_t param_value_size, - void* param_value, - size_t* param_value_size_ret) ; +typedef clGetLayerInfo_t * +pfn_clGetLayerInfo ; -typedef cl_int (CL_API_CALL * -pfn_clInitLayer)( - cl_uint num_entries, - const cl_icd_dispatch* target_dispatch, - cl_uint* num_entries_ret, - const cl_icd_dispatch** layer_dispatch_ret) ; +typedef clInitLayer_t * +pfn_clInitLayer ; #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) diff --git a/deps/OpenCL-Headers/CL/cl_platform.h b/deps/OpenCL-Headers/CL/cl_platform.h index e7a0d6f47..5f92d6faa 100644 --- a/deps/OpenCL-Headers/CL/cl_platform.h +++ b/deps/OpenCL-Headers/CL/cl_platform.h @@ -77,7 +77,7 @@ extern "C" { #ifdef __GNUC__ #define CL_API_SUFFIX_DEPRECATED __attribute__((deprecated)) #define CL_API_PREFIX_DEPRECATED -#elif defined(_WIN32) +#elif defined(_MSC_VER) && !defined(__clang__) #define CL_API_SUFFIX_DEPRECATED #define CL_API_PREFIX_DEPRECATED __declspec(deprecated) #else @@ -361,11 +361,6 @@ typedef double cl_double; #include -/* Mirror types to GL types. Mirror types allow us to avoid deciding which 87s to load based on whether we are using GL or GLES here. */ -typedef unsigned int cl_GLuint; -typedef int cl_GLint; -typedef unsigned int cl_GLenum; - /* * Vector types * diff --git a/deps/OpenCL-Headers/CL/cl_va_api_media_sharing_intel.h b/deps/OpenCL-Headers/CL/cl_va_api_media_sharing_intel.h index 767da05fc..9fb8863f2 100644 --- a/deps/OpenCL-Headers/CL/cl_va_api_media_sharing_intel.h +++ b/deps/OpenCL-Headers/CL/cl_va_api_media_sharing_intel.h @@ -53,17 +53,23 @@ extern "C" { #define CL_INTEL_SHARING_FORMAT_QUERY_VA_API_EXTENSION_NAME \ "cl_intel_sharing_format_query_va_api" + +#define CL_INTEL_SHARING_FORMAT_QUERY_VA_API_EXTENSION_VERSION CL_MAKE_VERSION(0, 0, 0) + /* when cl_intel_va_api_media_sharing is supported */ -typedef cl_int (CL_API_CALL * -clGetSupportedVA_APIMediaSurfaceFormatsINTEL_fn)( +typedef cl_int CL_API_CALL +clGetSupportedVA_APIMediaSurfaceFormatsINTEL_t( cl_context context, cl_mem_flags flags, cl_mem_object_type image_type, cl_uint plane, cl_uint num_entries, VAImageFormat* va_api_formats, - cl_uint* num_surface_formats) ; + cl_uint* num_surface_formats); + +typedef clGetSupportedVA_APIMediaSurfaceFormatsINTEL_t * +clGetSupportedVA_APIMediaSurfaceFormatsINTEL_fn ; #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) @@ -86,6 +92,9 @@ clGetSupportedVA_APIMediaSurfaceFormatsINTEL( #define CL_INTEL_VA_API_MEDIA_SHARING_EXTENSION_NAME \ "cl_intel_va_api_media_sharing" + +#define CL_INTEL_VA_API_MEDIA_SHARING_EXTENSION_VERSION CL_MAKE_VERSION(0, 0, 0) + typedef cl_uint cl_va_api_device_source_intel; typedef cl_uint cl_va_api_device_set_intel; @@ -116,41 +125,53 @@ typedef cl_uint cl_va_api_device_set_intel; #define CL_COMMAND_RELEASE_VA_API_MEDIA_SURFACES_INTEL 0x409B -typedef cl_int (CL_API_CALL * -clGetDeviceIDsFromVA_APIMediaAdapterINTEL_fn)( +typedef cl_int CL_API_CALL +clGetDeviceIDsFromVA_APIMediaAdapterINTEL_t( cl_platform_id platform, cl_va_api_device_source_intel media_adapter_type, void* media_adapter, cl_va_api_device_set_intel media_adapter_set, cl_uint num_entries, cl_device_id* devices, - cl_uint* num_devices) CL_API_SUFFIX__VERSION_1_2; + cl_uint* num_devices); -typedef cl_mem (CL_API_CALL * -clCreateFromVA_APIMediaSurfaceINTEL_fn)( +typedef clGetDeviceIDsFromVA_APIMediaAdapterINTEL_t * +clGetDeviceIDsFromVA_APIMediaAdapterINTEL_fn CL_API_SUFFIX__VERSION_1_2; + +typedef cl_mem CL_API_CALL +clCreateFromVA_APIMediaSurfaceINTEL_t( cl_context context, cl_mem_flags flags, VASurfaceID* surface, cl_uint plane, - cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2; + cl_int* errcode_ret); -typedef cl_int (CL_API_CALL * -clEnqueueAcquireVA_APIMediaSurfacesINTEL_fn)( +typedef clCreateFromVA_APIMediaSurfaceINTEL_t * +clCreateFromVA_APIMediaSurfaceINTEL_fn CL_API_SUFFIX__VERSION_1_2; + +typedef cl_int CL_API_CALL +clEnqueueAcquireVA_APIMediaSurfacesINTEL_t( cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, cl_uint num_events_in_wait_list, const cl_event* event_wait_list, - cl_event* event) CL_API_SUFFIX__VERSION_1_2; + cl_event* event); -typedef cl_int (CL_API_CALL * -clEnqueueReleaseVA_APIMediaSurfacesINTEL_fn)( +typedef clEnqueueAcquireVA_APIMediaSurfacesINTEL_t * +clEnqueueAcquireVA_APIMediaSurfacesINTEL_fn CL_API_SUFFIX__VERSION_1_2; + +typedef cl_int CL_API_CALL +clEnqueueReleaseVA_APIMediaSurfacesINTEL_t( cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, cl_uint num_events_in_wait_list, const cl_event* event_wait_list, - cl_event* event) CL_API_SUFFIX__VERSION_1_2; + cl_event* event); + +typedef clEnqueueReleaseVA_APIMediaSurfacesINTEL_t * +clEnqueueReleaseVA_APIMediaSurfacesINTEL_fn CL_API_SUFFIX__VERSION_1_2; #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) diff --git a/deps/OpenCL-Headers/README.md b/deps/OpenCL-Headers/README.md index 89a3ea999..62934b1c6 100644 --- a/deps/OpenCL-Headers/README.md +++ b/deps/OpenCL-Headers/README.md @@ -98,14 +98,55 @@ may include the OpenCL API headers as follows: #include ``` +## Compatibility Notes + +OpenCL values backward compatibility and in most cases an application using an +older version of the OpenCL API headers can seamlessly update to a newer version +of the OpenCL API headers. In rare cases, though, the OpenCL API headers may +break backward compatibility: + +* Very rarely, there may be bugs or other issues in the OpenCL API headers that + cannot be fixed without breaking compatibility. +* The OpenCL API headers for beta features or beta extensions may + be changed in a way that breaks compatibility. + +Applications or libraries that require stable OpenCL API headers are encouraged +to use tagged or released OpenCL API headers. We will do our best to document +any breaking changes in the description of each release. The OpenCL API headers +are tagged at least as often as each OpenCL specification release. + +## Beta Extensions + +Beta extensions are extensions that are still in development and are +hence subject to change. To further improve compatibility for applications that +do not use beta features, support for beta extensions must be +explicitly enabled. Support for beta extensions is controlled by the +`CL_ENABLE_BETA_EXTENSIONS` preprocessor define. + +For example, to enable support for OpenCL 3.0 APIs and all extensions, including +beta extensions, you may include the OpenCL API headers as follows: + +```c +#define CL_TARGET_OPENCL_VERSION 300 +#define CL_ENABLE_BETA_EXTENSIONS +#include +``` + ## Directory Structure ``` README.md This file LICENSE Source license for the OpenCL API headers CL/ Unified OpenCL API headers tree +scripts/ Scripts for generating OpenCL extension headers +tests/ OpenCL API header tests ``` +## Packaging + +For packaging instructions, see [RELEASE.md](https://github.com/KhronosGroup/OpenCL-SDK/blob/main/docs/RELEASE.md) +in the OpenCL SDK repository. + ## License See [LICENSE](LICENSE). diff --git a/deps/phc-winner-argon2-20190702/Argon2.sln b/deps/phc-winner-argon2-20190702/Argon2.sln new file mode 100644 index 000000000..b16cda080 --- /dev/null +++ b/deps/phc-winner-argon2-20190702/Argon2.sln @@ -0,0 +1,158 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Argon2OptTestCI", "vs2015\Argon2OptTestCI\Argon2OptTestCI.vcxproj", "{12956597-5E42-433A-93F3-D4EFF50AA207}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Argon2RefTestCI", "vs2015\Argon2RefTestCI\Argon2RefTestCI.vcxproj", "{8A1F7F84-34AF-4DB2-9D58-D4823DFE79E9}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Argon2OptGenKAT", "vs2015\Argon2OptGenKAT\Argon2OptGenKAT.vcxproj", "{DBBAAAE6-4560-4D11-8280-30A6650A82EF}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Argon2RefGenKAT", "vs2015\Argon2RefGenKAT\Argon2RefGenKAT.vcxproj", "{71921B4C-A795-4A37-95A3-99D600E01211}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Argon2Opt", "vs2015\Argon2Opt\Argon2Opt.vcxproj", "{CAA75C57-998C-494E-B8A5-5894EF0FC528}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Argon2Ref", "vs2015\Argon2Ref\Argon2Ref.vcxproj", "{B9CAC9CE-9F0D-4F52-8D67-FDBBAFCD0DE2}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Argon2OptBench", "vs2015\Argon2OptBench\Argon2OptBench.vcxproj", "{B3A0FB44-0C1C-4EC3-B155-8B39371F8EE4}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Argon2RefBench", "vs2015\Argon2RefBench\Argon2RefBench.vcxproj", "{99203F6A-6E8C-42FC-8C7C-C07E8913D539}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Argon2OptDll", "vs2015\Argon2OptDll\Argon2OptDll.vcxproj", "{3A898DD8-ACAE-4269-ADFE-EB7260D71583}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Argon2RefDll", "vs2015\Argon2RefDll\Argon2RefDll.vcxproj", "{19D911A1-533C-4475-B313-F372481A35D4}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + ReleaseStatic|x64 = ReleaseStatic|x64 + ReleaseStatic|x86 = ReleaseStatic|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {12956597-5E42-433A-93F3-D4EFF50AA207}.Debug|x64.ActiveCfg = Debug|x64 + {12956597-5E42-433A-93F3-D4EFF50AA207}.Debug|x64.Build.0 = Debug|x64 + {12956597-5E42-433A-93F3-D4EFF50AA207}.Debug|x86.ActiveCfg = Debug|Win32 + {12956597-5E42-433A-93F3-D4EFF50AA207}.Debug|x86.Build.0 = Debug|Win32 + {12956597-5E42-433A-93F3-D4EFF50AA207}.Release|x64.ActiveCfg = Release|x64 + {12956597-5E42-433A-93F3-D4EFF50AA207}.Release|x64.Build.0 = Release|x64 + {12956597-5E42-433A-93F3-D4EFF50AA207}.Release|x86.ActiveCfg = Release|Win32 + {12956597-5E42-433A-93F3-D4EFF50AA207}.Release|x86.Build.0 = Release|Win32 + {12956597-5E42-433A-93F3-D4EFF50AA207}.ReleaseStatic|x64.ActiveCfg = ReleaseStatic|x64 + {12956597-5E42-433A-93F3-D4EFF50AA207}.ReleaseStatic|x64.Build.0 = ReleaseStatic|x64 + {12956597-5E42-433A-93F3-D4EFF50AA207}.ReleaseStatic|x86.ActiveCfg = ReleaseStatic|Win32 + {12956597-5E42-433A-93F3-D4EFF50AA207}.ReleaseStatic|x86.Build.0 = ReleaseStatic|Win32 + {8A1F7F84-34AF-4DB2-9D58-D4823DFE79E9}.Debug|x64.ActiveCfg = Debug|x64 + {8A1F7F84-34AF-4DB2-9D58-D4823DFE79E9}.Debug|x64.Build.0 = Debug|x64 + {8A1F7F84-34AF-4DB2-9D58-D4823DFE79E9}.Debug|x86.ActiveCfg = Debug|Win32 + {8A1F7F84-34AF-4DB2-9D58-D4823DFE79E9}.Debug|x86.Build.0 = Debug|Win32 + {8A1F7F84-34AF-4DB2-9D58-D4823DFE79E9}.Release|x64.ActiveCfg = Release|x64 + {8A1F7F84-34AF-4DB2-9D58-D4823DFE79E9}.Release|x64.Build.0 = Release|x64 + {8A1F7F84-34AF-4DB2-9D58-D4823DFE79E9}.Release|x86.ActiveCfg = Release|Win32 + {8A1F7F84-34AF-4DB2-9D58-D4823DFE79E9}.Release|x86.Build.0 = Release|Win32 + {8A1F7F84-34AF-4DB2-9D58-D4823DFE79E9}.ReleaseStatic|x64.ActiveCfg = ReleaseStatic|x64 + {8A1F7F84-34AF-4DB2-9D58-D4823DFE79E9}.ReleaseStatic|x64.Build.0 = ReleaseStatic|x64 + {8A1F7F84-34AF-4DB2-9D58-D4823DFE79E9}.ReleaseStatic|x86.ActiveCfg = ReleaseStatic|Win32 + {8A1F7F84-34AF-4DB2-9D58-D4823DFE79E9}.ReleaseStatic|x86.Build.0 = ReleaseStatic|Win32 + {DBBAAAE6-4560-4D11-8280-30A6650A82EF}.Debug|x64.ActiveCfg = Debug|x64 + {DBBAAAE6-4560-4D11-8280-30A6650A82EF}.Debug|x64.Build.0 = Debug|x64 + {DBBAAAE6-4560-4D11-8280-30A6650A82EF}.Debug|x86.ActiveCfg = Debug|Win32 + {DBBAAAE6-4560-4D11-8280-30A6650A82EF}.Debug|x86.Build.0 = Debug|Win32 + {DBBAAAE6-4560-4D11-8280-30A6650A82EF}.Release|x64.ActiveCfg = Release|x64 + {DBBAAAE6-4560-4D11-8280-30A6650A82EF}.Release|x64.Build.0 = Release|x64 + {DBBAAAE6-4560-4D11-8280-30A6650A82EF}.Release|x86.ActiveCfg = Release|Win32 + {DBBAAAE6-4560-4D11-8280-30A6650A82EF}.Release|x86.Build.0 = Release|Win32 + {DBBAAAE6-4560-4D11-8280-30A6650A82EF}.ReleaseStatic|x64.ActiveCfg = ReleaseStatic|x64 + {DBBAAAE6-4560-4D11-8280-30A6650A82EF}.ReleaseStatic|x64.Build.0 = ReleaseStatic|x64 + {DBBAAAE6-4560-4D11-8280-30A6650A82EF}.ReleaseStatic|x86.ActiveCfg = ReleaseStatic|Win32 + {DBBAAAE6-4560-4D11-8280-30A6650A82EF}.ReleaseStatic|x86.Build.0 = ReleaseStatic|Win32 + {71921B4C-A795-4A37-95A3-99D600E01211}.Debug|x64.ActiveCfg = Debug|x64 + {71921B4C-A795-4A37-95A3-99D600E01211}.Debug|x64.Build.0 = Debug|x64 + {71921B4C-A795-4A37-95A3-99D600E01211}.Debug|x86.ActiveCfg = Debug|Win32 + {71921B4C-A795-4A37-95A3-99D600E01211}.Debug|x86.Build.0 = Debug|Win32 + {71921B4C-A795-4A37-95A3-99D600E01211}.Release|x64.ActiveCfg = Release|x64 + {71921B4C-A795-4A37-95A3-99D600E01211}.Release|x64.Build.0 = Release|x64 + {71921B4C-A795-4A37-95A3-99D600E01211}.Release|x86.ActiveCfg = Release|Win32 + {71921B4C-A795-4A37-95A3-99D600E01211}.Release|x86.Build.0 = Release|Win32 + {71921B4C-A795-4A37-95A3-99D600E01211}.ReleaseStatic|x64.ActiveCfg = ReleaseStatic|x64 + {71921B4C-A795-4A37-95A3-99D600E01211}.ReleaseStatic|x64.Build.0 = ReleaseStatic|x64 + {71921B4C-A795-4A37-95A3-99D600E01211}.ReleaseStatic|x86.ActiveCfg = ReleaseStatic|Win32 + {71921B4C-A795-4A37-95A3-99D600E01211}.ReleaseStatic|x86.Build.0 = ReleaseStatic|Win32 + {CAA75C57-998C-494E-B8A5-5894EF0FC528}.Debug|x64.ActiveCfg = Debug|x64 + {CAA75C57-998C-494E-B8A5-5894EF0FC528}.Debug|x64.Build.0 = Debug|x64 + {CAA75C57-998C-494E-B8A5-5894EF0FC528}.Debug|x86.ActiveCfg = Debug|Win32 + {CAA75C57-998C-494E-B8A5-5894EF0FC528}.Debug|x86.Build.0 = Debug|Win32 + {CAA75C57-998C-494E-B8A5-5894EF0FC528}.Release|x64.ActiveCfg = Release|x64 + {CAA75C57-998C-494E-B8A5-5894EF0FC528}.Release|x64.Build.0 = Release|x64 + {CAA75C57-998C-494E-B8A5-5894EF0FC528}.Release|x86.ActiveCfg = Release|Win32 + {CAA75C57-998C-494E-B8A5-5894EF0FC528}.Release|x86.Build.0 = Release|Win32 + {CAA75C57-998C-494E-B8A5-5894EF0FC528}.ReleaseStatic|x64.ActiveCfg = ReleaseStatic|x64 + {CAA75C57-998C-494E-B8A5-5894EF0FC528}.ReleaseStatic|x64.Build.0 = ReleaseStatic|x64 + {CAA75C57-998C-494E-B8A5-5894EF0FC528}.ReleaseStatic|x86.ActiveCfg = ReleaseStatic|Win32 + {CAA75C57-998C-494E-B8A5-5894EF0FC528}.ReleaseStatic|x86.Build.0 = ReleaseStatic|Win32 + {B9CAC9CE-9F0D-4F52-8D67-FDBBAFCD0DE2}.Debug|x64.ActiveCfg = Debug|x64 + {B9CAC9CE-9F0D-4F52-8D67-FDBBAFCD0DE2}.Debug|x64.Build.0 = Debug|x64 + {B9CAC9CE-9F0D-4F52-8D67-FDBBAFCD0DE2}.Debug|x86.ActiveCfg = Debug|Win32 + {B9CAC9CE-9F0D-4F52-8D67-FDBBAFCD0DE2}.Debug|x86.Build.0 = Debug|Win32 + {B9CAC9CE-9F0D-4F52-8D67-FDBBAFCD0DE2}.Release|x64.ActiveCfg = Release|x64 + {B9CAC9CE-9F0D-4F52-8D67-FDBBAFCD0DE2}.Release|x64.Build.0 = Release|x64 + {B9CAC9CE-9F0D-4F52-8D67-FDBBAFCD0DE2}.Release|x86.ActiveCfg = Release|Win32 + {B9CAC9CE-9F0D-4F52-8D67-FDBBAFCD0DE2}.Release|x86.Build.0 = Release|Win32 + {B9CAC9CE-9F0D-4F52-8D67-FDBBAFCD0DE2}.ReleaseStatic|x64.ActiveCfg = ReleaseStatic|x64 + {B9CAC9CE-9F0D-4F52-8D67-FDBBAFCD0DE2}.ReleaseStatic|x64.Build.0 = ReleaseStatic|x64 + {B9CAC9CE-9F0D-4F52-8D67-FDBBAFCD0DE2}.ReleaseStatic|x86.ActiveCfg = ReleaseStatic|Win32 + {B9CAC9CE-9F0D-4F52-8D67-FDBBAFCD0DE2}.ReleaseStatic|x86.Build.0 = ReleaseStatic|Win32 + {B3A0FB44-0C1C-4EC3-B155-8B39371F8EE4}.Debug|x64.ActiveCfg = Debug|x64 + {B3A0FB44-0C1C-4EC3-B155-8B39371F8EE4}.Debug|x64.Build.0 = Debug|x64 + {B3A0FB44-0C1C-4EC3-B155-8B39371F8EE4}.Debug|x86.ActiveCfg = Debug|Win32 + {B3A0FB44-0C1C-4EC3-B155-8B39371F8EE4}.Debug|x86.Build.0 = Debug|Win32 + {B3A0FB44-0C1C-4EC3-B155-8B39371F8EE4}.Release|x64.ActiveCfg = Release|x64 + {B3A0FB44-0C1C-4EC3-B155-8B39371F8EE4}.Release|x64.Build.0 = Release|x64 + {B3A0FB44-0C1C-4EC3-B155-8B39371F8EE4}.Release|x86.ActiveCfg = Release|Win32 + {B3A0FB44-0C1C-4EC3-B155-8B39371F8EE4}.Release|x86.Build.0 = Release|Win32 + {B3A0FB44-0C1C-4EC3-B155-8B39371F8EE4}.ReleaseStatic|x64.ActiveCfg = ReleaseStatic|x64 + {B3A0FB44-0C1C-4EC3-B155-8B39371F8EE4}.ReleaseStatic|x64.Build.0 = ReleaseStatic|x64 + {B3A0FB44-0C1C-4EC3-B155-8B39371F8EE4}.ReleaseStatic|x86.ActiveCfg = ReleaseStatic|Win32 + {B3A0FB44-0C1C-4EC3-B155-8B39371F8EE4}.ReleaseStatic|x86.Build.0 = ReleaseStatic|Win32 + {99203F6A-6E8C-42FC-8C7C-C07E8913D539}.Debug|x64.ActiveCfg = Debug|x64 + {99203F6A-6E8C-42FC-8C7C-C07E8913D539}.Debug|x64.Build.0 = Debug|x64 + {99203F6A-6E8C-42FC-8C7C-C07E8913D539}.Debug|x86.ActiveCfg = Debug|Win32 + {99203F6A-6E8C-42FC-8C7C-C07E8913D539}.Debug|x86.Build.0 = Debug|Win32 + {99203F6A-6E8C-42FC-8C7C-C07E8913D539}.Release|x64.ActiveCfg = Release|x64 + {99203F6A-6E8C-42FC-8C7C-C07E8913D539}.Release|x64.Build.0 = Release|x64 + {99203F6A-6E8C-42FC-8C7C-C07E8913D539}.Release|x86.ActiveCfg = Release|Win32 + {99203F6A-6E8C-42FC-8C7C-C07E8913D539}.Release|x86.Build.0 = Release|Win32 + {99203F6A-6E8C-42FC-8C7C-C07E8913D539}.ReleaseStatic|x64.ActiveCfg = ReleaseStatic|x64 + {99203F6A-6E8C-42FC-8C7C-C07E8913D539}.ReleaseStatic|x64.Build.0 = ReleaseStatic|x64 + {99203F6A-6E8C-42FC-8C7C-C07E8913D539}.ReleaseStatic|x86.ActiveCfg = ReleaseStatic|Win32 + {99203F6A-6E8C-42FC-8C7C-C07E8913D539}.ReleaseStatic|x86.Build.0 = ReleaseStatic|Win32 + {3A898DD8-ACAE-4269-ADFE-EB7260D71583}.Debug|x64.ActiveCfg = Debug|x64 + {3A898DD8-ACAE-4269-ADFE-EB7260D71583}.Debug|x64.Build.0 = Debug|x64 + {3A898DD8-ACAE-4269-ADFE-EB7260D71583}.Debug|x86.ActiveCfg = Debug|Win32 + {3A898DD8-ACAE-4269-ADFE-EB7260D71583}.Debug|x86.Build.0 = Debug|Win32 + {3A898DD8-ACAE-4269-ADFE-EB7260D71583}.Release|x64.ActiveCfg = Release|x64 + {3A898DD8-ACAE-4269-ADFE-EB7260D71583}.Release|x64.Build.0 = Release|x64 + {3A898DD8-ACAE-4269-ADFE-EB7260D71583}.Release|x86.ActiveCfg = Release|Win32 + {3A898DD8-ACAE-4269-ADFE-EB7260D71583}.Release|x86.Build.0 = Release|Win32 + {3A898DD8-ACAE-4269-ADFE-EB7260D71583}.ReleaseStatic|x64.ActiveCfg = ReleaseStatic|x64 + {3A898DD8-ACAE-4269-ADFE-EB7260D71583}.ReleaseStatic|x64.Build.0 = ReleaseStatic|x64 + {3A898DD8-ACAE-4269-ADFE-EB7260D71583}.ReleaseStatic|x86.ActiveCfg = ReleaseStatic|Win32 + {3A898DD8-ACAE-4269-ADFE-EB7260D71583}.ReleaseStatic|x86.Build.0 = ReleaseStatic|Win32 + {19D911A1-533C-4475-B313-F372481A35D4}.Debug|x64.ActiveCfg = Debug|x64 + {19D911A1-533C-4475-B313-F372481A35D4}.Debug|x64.Build.0 = Debug|x64 + {19D911A1-533C-4475-B313-F372481A35D4}.Debug|x86.ActiveCfg = Debug|Win32 + {19D911A1-533C-4475-B313-F372481A35D4}.Debug|x86.Build.0 = Debug|Win32 + {19D911A1-533C-4475-B313-F372481A35D4}.Release|x64.ActiveCfg = Release|x64 + {19D911A1-533C-4475-B313-F372481A35D4}.Release|x64.Build.0 = Release|x64 + {19D911A1-533C-4475-B313-F372481A35D4}.Release|x86.ActiveCfg = Release|Win32 + {19D911A1-533C-4475-B313-F372481A35D4}.Release|x86.Build.0 = Release|Win32 + {19D911A1-533C-4475-B313-F372481A35D4}.ReleaseStatic|x64.ActiveCfg = ReleaseStatic|x64 + {19D911A1-533C-4475-B313-F372481A35D4}.ReleaseStatic|x64.Build.0 = ReleaseStatic|x64 + {19D911A1-533C-4475-B313-F372481A35D4}.ReleaseStatic|x86.ActiveCfg = ReleaseStatic|Win32 + {19D911A1-533C-4475-B313-F372481A35D4}.ReleaseStatic|x86.Build.0 = ReleaseStatic|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/deps/phc-winner-argon2-20190702/CHANGELOG.md b/deps/phc-winner-argon2-20190702/CHANGELOG.md new file mode 100644 index 000000000..0578fde27 --- /dev/null +++ b/deps/phc-winner-argon2-20190702/CHANGELOG.md @@ -0,0 +1,32 @@ +# 20171227 +* Added ABI version number +* AVX2/AVX-512F optimizations of BLAMKA +* Set Argon2 version number from the command line +* New bindings +* Minor bug and warning fixes (no security issue) + +# 20161029 + +* Argon2id added +* Better documentation +* Dual licensing CC0 / Apache 2.0 +* Minor bug fixes (no security issue) + +# 20160406 + +* Version 1.3 of Argon2 +* Version number in encoded hash +* Refactored low-level API +* Visibility control for library symbols +* Microsoft Visual Studio solution +* New bindings +* Minor bug and warning fixes (no security issue) + + +# 20151206 + +* Python bindings +* Password read from stdin, instead of being an argument +* Compatibility FreeBSD, NetBSD, OpenBSD +* Constant-time verification +* Minor bug and warning fixes (no security issue) diff --git a/deps/phc-winner-argon2-20190702/LICENSE b/deps/phc-winner-argon2-20190702/LICENSE new file mode 100644 index 000000000..fa611f7ac --- /dev/null +++ b/deps/phc-winner-argon2-20190702/LICENSE @@ -0,0 +1,314 @@ +Argon2 reference source code package - reference C implementations + +Copyright 2015 +Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves + +You may use this work under the terms of a Creative Commons CC0 1.0 +License/Waiver or the Apache Public License 2.0, at your option. The terms of +these licenses can be found at: + +- CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0 +- Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0 + +The terms of the licenses are reproduced below. + +-------------------------------------------------------------------------------- + +Creative Commons Legal Code + +CC0 1.0 Universal + + CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE + LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN + ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS + INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES + REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS + PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM + THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED + HEREUNDER. + +Statement of Purpose + +The laws of most jurisdictions throughout the world automatically confer +exclusive Copyright and Related Rights (defined below) upon the creator +and subsequent owner(s) (each and all, an "owner") of an original work of +authorship and/or a database (each, a "Work"). + +Certain owners wish to permanently relinquish those rights to a Work for +the purpose of contributing to a commons of creative, cultural and +scientific works ("Commons") that the public can reliably and without fear +of later claims of infringement build upon, modify, incorporate in other +works, reuse and redistribute as freely as possible in any form whatsoever +and for any purposes, including without limitation commercial purposes. +These owners may contribute to the Commons to promote the ideal of a free +culture and the further production of creative, cultural and scientific +works, or to gain reputation or greater distribution for their Work in +part through the use and efforts of others. + +For these and/or other purposes and motivations, and without any +expectation of additional consideration or compensation, the person +associating CC0 with a Work (the "Affirmer"), to the extent that he or she +is an owner of Copyright and Related Rights in the Work, voluntarily +elects to apply CC0 to the Work and publicly distribute the Work under its +terms, with knowledge of his or her Copyright and Related Rights in the +Work and the meaning and intended legal effect of CC0 on those rights. + +1. Copyright and Related Rights. A Work made available under CC0 may be +protected by copyright and related or neighboring rights ("Copyright and +Related Rights"). Copyright and Related Rights include, but are not +limited to, the following: + + i. the right to reproduce, adapt, distribute, perform, display, + communicate, and translate a Work; + ii. moral rights retained by the original author(s) and/or performer(s); +iii. publicity and privacy rights pertaining to a person's image or + likeness depicted in a Work; + iv. rights protecting against unfair competition in regards to a Work, + subject to the limitations in paragraph 4(a), below; + v. rights protecting the extraction, dissemination, use and reuse of data + in a Work; + vi. database rights (such as those arising under Directive 96/9/EC of the + European Parliament and of the Council of 11 March 1996 on the legal + protection of databases, and under any national implementation + thereof, including any amended or successor version of such + directive); and +vii. other similar, equivalent or corresponding rights throughout the + world based on applicable law or treaty, and any national + implementations thereof. + +2. Waiver. To the greatest extent permitted by, but not in contravention +of, applicable law, Affirmer hereby overtly, fully, permanently, +irrevocably and unconditionally waives, abandons, and surrenders all of +Affirmer's Copyright and Related Rights and associated claims and causes +of action, whether now known or unknown (including existing as well as +future claims and causes of action), in the Work (i) in all territories +worldwide, (ii) for the maximum duration provided by applicable law or +treaty (including future time extensions), (iii) in any current or future +medium and for any number of copies, and (iv) for any purpose whatsoever, +including without limitation commercial, advertising or promotional +purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each +member of the public at large and to the detriment of Affirmer's heirs and +successors, fully intending that such Waiver shall not be subject to +revocation, rescission, cancellation, termination, or any other legal or +equitable action to disrupt the quiet enjoyment of the Work by the public +as contemplated by Affirmer's express Statement of Purpose. + +3. Public License Fallback. Should any part of the Waiver for any reason +be judged legally invalid or ineffective under applicable law, then the +Waiver shall be preserved to the maximum extent permitted taking into +account Affirmer's express Statement of Purpose. In addition, to the +extent the Waiver is so judged Affirmer hereby grants to each affected +person a royalty-free, non transferable, non sublicensable, non exclusive, +irrevocable and unconditional license to exercise Affirmer's Copyright and +Related Rights in the Work (i) in all territories worldwide, (ii) for the +maximum duration provided by applicable law or treaty (including future +time extensions), (iii) in any current or future medium and for any number +of copies, and (iv) for any purpose whatsoever, including without +limitation commercial, advertising or promotional purposes (the +"License"). The License shall be deemed effective as of the date CC0 was +applied by Affirmer to the Work. Should any part of the License for any +reason be judged legally invalid or ineffective under applicable law, such +partial invalidity or ineffectiveness shall not invalidate the remainder +of the License, and in such case Affirmer hereby affirms that he or she +will not (i) exercise any of his or her remaining Copyright and Related +Rights in the Work or (ii) assert any associated claims and causes of +action with respect to the Work, in either case contrary to Affirmer's +express Statement of Purpose. + +4. Limitations and Disclaimers. + + a. No trademark or patent rights held by Affirmer are waived, abandoned, + surrendered, licensed or otherwise affected by this document. + b. Affirmer offers the Work as-is and makes no representations or + warranties of any kind concerning the Work, express, implied, + statutory or otherwise, including without limitation warranties of + title, merchantability, fitness for a particular purpose, non + infringement, or the absence of latent or other defects, accuracy, or + the present or absence of errors, whether or not discoverable, all to + the greatest extent permissible under applicable law. + c. Affirmer disclaims responsibility for clearing rights of other persons + that may apply to the Work or any use thereof, including without + limitation any person's Copyright and Related Rights in the Work. + Further, Affirmer disclaims responsibility for obtaining any necessary + consents, permissions or other rights required for any use of the + Work. + d. Affirmer understands and acknowledges that Creative Commons is not a + party to this document and has no duty or obligation with respect to + this CC0 or use of the Work. + +-------------------------------------------------------------------------------- + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. diff --git a/deps/phc-winner-argon2-20190702/Makefile b/deps/phc-winner-argon2-20190702/Makefile new file mode 100644 index 000000000..837e7f7f3 --- /dev/null +++ b/deps/phc-winner-argon2-20190702/Makefile @@ -0,0 +1,253 @@ +# +# Argon2 reference source code package - reference C implementations +# +# Copyright 2015 +# Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves +# +# You may use this work under the terms of a Creative Commons CC0 1.0 +# License/Waiver or the Apache Public License 2.0, at your option. The terms of +# these licenses can be found at: +# +# - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0 +# - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0 +# +# You should have received a copy of both of these licenses along with this +# software. If not, they may be obtained at the above URLs. +# + +RUN = argon2 +BENCH = bench +GENKAT = genkat +ARGON2_VERSION ?= ZERO + +# installation parameters for staging area and final installation path +# Note; if Linux and not Debian/Ubuntu version also add lib override to make command-line +# for RedHat/Fedora, add: LIBRARY_REL=lib64 +DESTDIR ?= +PREFIX ?= /usr + +# Increment on an ABI breaking change +ABI_VERSION = 1 + +DIST = phc-winner-argon2 + +SRC = src/argon2.c src/core.c src/blake2/blake2b.c src/thread.c src/encoding.c +SRC_RUN = src/run.c +SRC_BENCH = src/bench.c +SRC_GENKAT = src/genkat.c +OBJ = $(SRC:.c=.o) + +CFLAGS += -std=c89 -O3 -Wall -g -Iinclude -Isrc + +ifeq ($(NO_THREADS), 1) +CFLAGS += -DARGON2_NO_THREADS +else +CFLAGS += -pthread +endif + +CI_CFLAGS := $(CFLAGS) -Werror=declaration-after-statement -D_FORTIFY_SOURCE=2 \ + -Wextra -Wno-type-limits -Werror -coverage -DTEST_LARGE_RAM + +OPTTARGET ?= native +OPTTEST := $(shell $(CC) -Iinclude -Isrc -march=$(OPTTARGET) src/opt.c -c \ + -o /dev/null 2>/dev/null; echo $$?) +# Detect compatible platform +ifneq ($(OPTTEST), 0) +$(info Building without optimizations) + SRC += src/ref.c +else +$(info Building with optimizations for $(OPTTARGET)) + CFLAGS += -march=$(OPTTARGET) + SRC += src/opt.c +endif + +BUILD_PATH := $(shell pwd) +KERNEL_NAME := $(shell uname -s) +MACHINE_NAME := $(shell uname -m) + +LIB_NAME = argon2 +PC_NAME = lib$(LIB_NAME).pc +PC_SRC = $(PC_NAME).in + +ifeq ($(KERNEL_NAME), Linux) + LIB_EXT := so.$(ABI_VERSION) + LIB_CFLAGS := -shared -fPIC -fvisibility=hidden -DA2_VISCTL=1 + SO_LDFLAGS := -Wl,-soname,lib$(LIB_NAME).$(LIB_EXT) + LINKED_LIB_EXT := so + PC_EXTRA_LIBS ?= -lrt -ldl +endif +ifeq ($(KERNEL_NAME), $(filter $(KERNEL_NAME),DragonFly FreeBSD NetBSD OpenBSD)) + LIB_EXT := so + LIB_CFLAGS := -shared -fPIC + PC_EXTRA_LIBS ?= +endif +ifeq ($(KERNEL_NAME), Darwin) + LIB_EXT := $(ABI_VERSION).dylib + LIB_CFLAGS := -dynamiclib -install_name @rpath/lib$(LIB_NAME).$(LIB_EXT) + LINKED_LIB_EXT := dylib + PC_EXTRA_LIBS ?= +endif +ifeq ($(findstring CYGWIN, $(KERNEL_NAME)), CYGWIN) + LIB_EXT := dll + LIB_CFLAGS := -shared -Wl,--out-implib,lib$(LIB_NAME).$(LIB_EXT).a + PC_EXTRA_LIBS ?= +endif +ifeq ($(findstring MINGW, $(KERNEL_NAME)), MINGW) + LIB_EXT := dll + LIB_CFLAGS := -shared -Wl,--out-implib,lib$(LIB_NAME).$(LIB_EXT).a + PC_EXTRA_LIBS ?= +endif +ifeq ($(findstring MSYS, $(KERNEL_NAME)), MSYS) + LIB_EXT := dll + LIB_CFLAGS := -shared -Wl,--out-implib,lib$(LIB_NAME).$(LIB_EXT).a + PC_EXTRA_LIBS ?= +endif +ifeq ($(KERNEL_NAME), SunOS) + CC := gcc + CFLAGS += -D_REENTRANT + LIB_EXT := so + LIB_CFLAGS := -shared -fPIC + PC_EXTRA_LIBS ?= +endif + +ifeq ($(KERNEL_NAME), Linux) +ifeq ($(CC), clang) + CI_CFLAGS += -fsanitize=address -fsanitize=undefined +endif +endif + +LIB_SH := lib$(LIB_NAME).$(LIB_EXT) +LIB_ST := lib$(LIB_NAME).a + +ifdef LINKED_LIB_EXT +LINKED_LIB_SH := lib$(LIB_NAME).$(LINKED_LIB_EXT) +endif + + +LIBRARIES = $(LIB_SH) $(LIB_ST) +HEADERS = include/argon2.h + +INSTALL = install + +# relative paths for different OS +ifeq ($(KERNEL_NAME), $(filter $(KERNEL_NAME),DragonFly FreeBSD)) + +# default for FreeBSD +BINARY_REL ?= bin +INCLUDE_REL ?= include +LIBRARY_REL ?= lib +PKGCONFIG_REL ?= libdata + +else ifeq ($(KERNEL_NAME)-$(MACHINE_NAME), Linux-x86_64) + +# default for Debian/Ubuntu x86_64 +BINARY_REL ?= bin +INCLUDE_REL ?= include +LIBRARY_REL ?= lib/x86_64-linux-gnu +PKGCONFIG_REL ?= $(LIBRARY_REL) + +else + +# NetBSD, ... and Linux64/Linux32 variants that use plain lib directory +BINARY_REL ?= bin +INCLUDE_REL ?= include +LIBRARY_REL ?= lib +PKGCONFIG_REL ?= $(LIBRARY_REL) + +endif + +# absolute paths to staging area +INST_INCLUDE = $(DESTDIR)$(PREFIX)/$(INCLUDE_REL) +INST_LIBRARY = $(DESTDIR)$(PREFIX)/$(LIBRARY_REL) +INST_BINARY = $(DESTDIR)$(PREFIX)/$(BINARY_REL) +INST_PKGCONFIG = $(DESTDIR)$(PREFIX)/$(PKGCONFIG_REL)/pkgconfig + +# main target +.PHONY: all +all: $(RUN) libs + +.PHONY: libs +libs: $(LIBRARIES) $(PC_NAME) + +$(RUN): $(SRC) $(SRC_RUN) + $(CC) $(CFLAGS) $(LDFLAGS) $^ -o $@ + +$(BENCH): $(SRC) $(SRC_BENCH) + $(CC) $(CFLAGS) $^ -o $@ + +$(GENKAT): $(SRC) $(SRC_GENKAT) + $(CC) $(CFLAGS) $^ -o $@ -DGENKAT + +$(LIB_SH): $(SRC) + $(CC) $(CFLAGS) $(LIB_CFLAGS) $(LDFLAGS) $(SO_LDFLAGS) $^ -o $@ + +$(LIB_ST): $(OBJ) + ar rcs $@ $^ + +.PHONY: clean +clean: + rm -f '$(RUN)' '$(BENCH)' '$(GENKAT)' + rm -f '$(LIB_SH)' '$(LIB_ST)' kat-argon2* '$(PC_NAME)' + rm -f testcase + rm -rf *.dSYM + cd src/ && rm -f *.o + cd src/blake2/ && rm -f *.o + cd kats/ && rm -f kat-* diff* run_* make_* + + +# all substitutions to pc template +SED_COMMANDS = /^\#\#.*$$/d; +SED_COMMANDS += s\#@PREFIX@\#$(PREFIX)\#g; +SED_COMMANDS += s\#@EXTRA_LIBS@\#$(PC_EXTRA_LIBS)\#g; +SED_COMMANDS += s\#@UPSTREAM_VER@\#$(ARGON2_VERSION)\#g; +SED_COMMANDS += s\#@HOST_MULTIARCH@\#$(LIBRARY_REL)\#g; +SED_COMMANDS += s\#@INCLUDE@\#$(INCLUDE_REL)\#g; + +# substitute PREFIX and PC_EXTRA_LIBS into pkgconfig pc file +$(PC_NAME): $(PC_SRC) + sed '$(SED_COMMANDS)' < '$(PC_SRC)' > '$@' + + +.PHONY: dist +dist: + cd ..; \ + tar -c --exclude='.??*' -z -f $(DIST)-`date "+%Y%m%d"`.tgz $(DIST)/* + +.PHONY: test +test: $(SRC) src/test.c + $(CC) $(CFLAGS) -Wextra -Wno-type-limits $^ -o testcase + @sh kats/test.sh + ./testcase + +.PHONY: testci +testci: $(SRC) src/test.c + $(CC) $(CI_CFLAGS) $^ -o testcase + @sh kats/test.sh + ./testcase + + +.PHONY: format +format: + clang-format -style="{BasedOnStyle: llvm, IndentWidth: 4}" \ + -i include/*.h src/*.c src/*.h src/blake2/*.c src/blake2/*.h + +.PHONY: install +install: $(RUN) libs + $(INSTALL) -d $(INST_INCLUDE) + $(INSTALL) -m 0644 $(HEADERS) $(INST_INCLUDE) + $(INSTALL) -d $(INST_LIBRARY) + $(INSTALL) -m 0644 $(LIBRARIES) $(INST_LIBRARY) +ifdef LINKED_LIB_SH + cd $(INST_LIBRARY) && ln -s $(notdir $(LIB_SH) $(LINKED_LIB_SH)) +endif + $(INSTALL) -d $(INST_BINARY) + $(INSTALL) $(RUN) $(INST_BINARY) + $(INSTALL) -d $(INST_PKGCONFIG) + $(INSTALL) -m 0644 $(PC_NAME) $(INST_PKGCONFIG) + +.PHONY: uninstall +uninstall: + cd $(INST_INCLUDE) && rm -f $(notdir $(HEADERS)) + cd $(INST_LIBRARY) && rm -f $(notdir $(LIBRARIES) $(LINKED_LIB_SH)) + cd $(INST_BINARY) && rm -f $(notdir $(RUN)) + cd $(INST_PKG_CONFIG) && rm -f $(notdir $(PC_NAME)) diff --git a/deps/phc-winner-argon2-20190702/README.md b/deps/phc-winner-argon2-20190702/README.md new file mode 100644 index 000000000..9f2d17c37 --- /dev/null +++ b/deps/phc-winner-argon2-20190702/README.md @@ -0,0 +1,297 @@ +# Argon2 + +[![Build Status](https://travis-ci.org/P-H-C/phc-winner-argon2.svg?branch=master)](https://travis-ci.org/P-H-C/phc-winner-argon2) +[![Build status](https://ci.appveyor.com/api/projects/status/8nfwuwq55sgfkele?svg=true)](https://ci.appveyor.com/project/P-H-C/phc-winner-argon2) +[![codecov.io](https://codecov.io/github/P-H-C/phc-winner-argon2/coverage.svg?branch=master)](https://codecov.io/github/P-H-C/phc-winner-argon2?branch=master) + +This is the reference C implementation of Argon2, the password-hashing +function that won the [Password Hashing Competition +(PHC)](https://password-hashing.net). + +Argon2 is a password-hashing function that summarizes the state of the +art in the design of memory-hard functions and can be used to hash +passwords for credential storage, key derivation, or other applications. + +It has a simple design aimed at the highest memory filling rate and +effective use of multiple computing units, while still providing defense +against tradeoff attacks (by exploiting the cache and memory organization +of the recent processors). + +Argon2 has three variants: Argon2i, Argon2d, and Argon2id. Argon2d is faster +and uses data-depending memory access, which makes it highly resistant +against GPU cracking attacks and suitable for applications with no threats +from side-channel timing attacks (eg. cryptocurrencies). Argon2i instead +uses data-independent memory access, which is preferred for password +hashing and password-based key derivation, but it is slower as it makes +more passes over the memory to protect from tradeoff attacks. Argon2id is a +hybrid of Argon2i and Argon2d, using a combination of data-depending and +data-independent memory accesses, which gives some of Argon2i's resistance to +side-channel cache timing attacks and much of Argon2d's resistance to GPU +cracking attacks. + +Argon2i, Argon2d, and Argon2id are parametrized by: + +* A **time** cost, which defines the amount of computation realized and + therefore the execution time, given in number of iterations +* A **memory** cost, which defines the memory usage, given in kibibytes +* A **parallelism** degree, which defines the number of parallel threads + +The [Argon2 document](argon2-specs.pdf) gives detailed specs and design +rationale. + +Please report bugs as issues on this repository. + +## Usage + +`make` builds the executable `argon2`, the static library `libargon2.a`, +and the shared library `libargon2.so` (or `libargon2.dylib` on OSX). +Make sure to run `make test` to verify that your build produces valid +results. `make install PREFIX=/usr` installs it to your system. + +### Command-line utility + +`argon2` is a command-line utility to test specific Argon2 instances +on your system. To show usage instructions, run +`./argon2 -h` as +``` +Usage: ./argon2 [-h] salt [-i|-d|-id] [-t iterations] [-m memory] [-p parallelism] [-l hash length] [-e|-r] [-v (10|13)] + Password is read from stdin +Parameters: + salt The salt to use, at least 8 characters + -i Use Argon2i (this is the default) + -d Use Argon2d instead of Argon2i + -id Use Argon2id instead of Argon2i + -t N Sets the number of iterations to N (default = 3) + -m N Sets the memory usage of 2^N KiB (default 12) + -p N Sets parallelism to N threads (default 1) + -l N Sets hash output length to N bytes (default 32) + -e Output only encoded hash + -r Output only the raw bytes of the hash + -v (10|13) Argon2 version (defaults to the most recent version, currently 13) + -h Print argon2 usage +``` +For example, to hash "password" using "somesalt" as a salt and doing 2 +iterations, consuming 64 MiB, using four parallel threads and an output hash +of 24 bytes +``` +$ echo -n "password" | ./argon2 somesalt -t 2 -m 16 -p 4 -l 24 +Type: Argon2i +Iterations: 2 +Memory: 65536 KiB +Parallelism: 4 +Hash: 45d7ac72e76f242b20b77b9bf9bf9d5915894e669a24e6c6 +Encoded: $argon2i$v=19$m=65536,t=2,p=4$c29tZXNhbHQ$RdescudvJCsgt3ub+b+dWRWJTmaaJObG +0.188 seconds +Verification ok +``` + +### Library + +`libargon2` provides an API to both low-level and high-level functions +for using Argon2. + +The example program below hashes the string "password" with Argon2i +using the high-level API and then using the low-level API. While the +high-level API takes the three cost parameters (time, memory, and +parallelism), the password input buffer, the salt input buffer, and the +output buffers, the low-level API takes in these and additional parameters +, as defined in [`include/argon2.h`](include/argon2.h). + +There are many additional parameters, but we will highlight three of them here. + +1. The `secret` parameter, which is used for [keyed hashing]( + https://en.wikipedia.org/wiki/Hash-based_message_authentication_code). + This allows a secret key to be input at hashing time (from some external + location) and be folded into the value of the hash. This means that even if + your salts and hashes are compromized, an attacker cannot brute-force to find + the password without the key. + +2. The `ad` parameter, which is used to fold any additional data into the hash + value. Functionally, this behaves almost exactly like the `secret` or `salt` + parameters; the `ad` parameter is folding into the value of the hash. + However, this parameter is used for different data. The `salt` should be a + random string stored alongside your password. The `secret` should be a random + key only usable at hashing time. The `ad` is for any other data. + +3. The `flags` parameter, which determines which memory should be securely + erased. This is useful if you want to securly delete the `pwd` or `secret` + fields right after they are used. To do this set `flags` to either + `ARGON2_FLAG_CLEAR_PASSWORD` or `ARGON2_FLAG_CLEAR_SECRET`. To change how + internal memory is cleared, change the global flag + `FLAG_clear_internal_memory` (defaults to clearing internal memory). + +Here the time cost `t_cost` is set to 2 iterations, the +memory cost `m_cost` is set to 216 kibibytes (64 mebibytes), +and parallelism is set to 1 (single-thread). + +Compile for example as `gcc test.c libargon2.a -Isrc -o test`, if the program +below is named `test.c` and placed in the project's root directory. + +```c +#include "argon2.h" +#include +#include +#include + +#define HASHLEN 32 +#define SALTLEN 16 +#define PWD "password" + +int main(void) +{ + uint8_t hash1[HASHLEN]; + uint8_t hash2[HASHLEN]; + + uint8_t salt[SALTLEN]; + memset( salt, 0x00, SALTLEN ); + + uint8_t *pwd = (uint8_t *)strdup(PWD); + uint32_t pwdlen = strlen((char *)pwd); + + uint32_t t_cost = 2; // 1-pass computation + uint32_t m_cost = (1<<16); // 64 mebibytes memory usage + uint32_t parallelism = 1; // number of threads and lanes + + // high-level API + argon2i_hash_raw(t_cost, m_cost, parallelism, pwd, pwdlen, salt, SALTLEN, hash1, HASHLEN); + + // low-level API + argon2_context context = { + hash2, /* output array, at least HASHLEN in size */ + HASHLEN, /* digest length */ + pwd, /* password array */ + pwdlen, /* password length */ + salt, /* salt array */ + SALTLEN, /* salt length */ + NULL, 0, /* optional secret data */ + NULL, 0, /* optional associated data */ + t_cost, m_cost, parallelism, parallelism, + ARGON2_VERSION_13, /* algorithm version */ + NULL, NULL, /* custom memory allocation / deallocation functions */ + /* by default only internal memory is cleared (pwd is not wiped) */ + ARGON2_DEFAULT_FLAGS + }; + + int rc = argon2i_ctx( &context ); + if(ARGON2_OK != rc) { + printf("Error: %s\n", argon2_error_message(rc)); + exit(1); + } + free(pwd); + + for( int i=0; i +#include +#include + +#include "argon2.h" +#include "core.h" + + + +int argon2_ctx(argon2_context *context, argon2_type type) { + /* 1. Validate all inputs */ + + uint32_t memory_blocks, segment_length; + argon2_instance_t instance; + + /* 2. Align memory size */ + /* Minimum memory_blocks = 8L blocks, where L is the number of lanes */ + memory_blocks = context->m_cost; + + if (memory_blocks < 2 * ARGON2_SYNC_POINTS * context->lanes) { + memory_blocks = 2 * ARGON2_SYNC_POINTS * context->lanes; + } + + segment_length = memory_blocks / (context->lanes * ARGON2_SYNC_POINTS); + /* Ensure that all segments have equal length */ + memory_blocks = segment_length * (context->lanes * ARGON2_SYNC_POINTS); + + instance.version = context->version; + instance.memory = NULL; + instance.passes = context->t_cost; + instance.memory_blocks = memory_blocks; + instance.segment_length = segment_length; + instance.lane_length = segment_length * ARGON2_SYNC_POINTS; + instance.lanes = context->lanes; + instance.threads = context->threads; + instance.type = type; + + if (instance.threads > instance.lanes) { + instance.threads = instance.lanes; + } + + /* 3. Initialization: Hashing inputs, allocating memory, filling first + * blocks + */ + initialize(&instance, context); + + /* 4. Filling memory */ + fill_memory_blocks(&instance); + + /* 5. Finalization */ + finalize(context, &instance); + + return ARGON2_OK; +} diff --git a/deps/phc-winner-argon2-20190702/_hashcat/argon2.h b/deps/phc-winner-argon2-20190702/_hashcat/argon2.h new file mode 100644 index 000000000..fdc251040 --- /dev/null +++ b/deps/phc-winner-argon2-20190702/_hashcat/argon2.h @@ -0,0 +1,440 @@ +/* + * Argon2 reference source code package - reference C implementations + * + * Copyright 2015 + * Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves + * + * You may use this work under the terms of a Creative Commons CC0 1.0 + * License/Waiver or the Apache Public License 2.0, at your option. The terms of + * these licenses can be found at: + * + * - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0 + * - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0 + * + * You should have received a copy of both of these licenses along with this + * software. If not, they may be obtained at the above URLs. + */ + +#ifndef ARGON2_H +#define ARGON2_H + +#include +#include +#include + +#if defined(__cplusplus) +extern "C" { +#endif + +/* Symbols visibility control */ +#ifdef A2_VISCTL +#define ARGON2_PUBLIC __attribute__((visibility("default"))) +#define ARGON2_LOCAL __attribute__ ((visibility ("hidden"))) +#elif _MSC_VER +#define ARGON2_PUBLIC __declspec(dllexport) +#define ARGON2_LOCAL +#else +#define ARGON2_PUBLIC +#define ARGON2_LOCAL +#endif + +/* + * Argon2 input parameter restrictions + */ + +/* Minimum and maximum number of lanes (degree of parallelism) */ +#define ARGON2_MIN_LANES UINT32_C(1) +#define ARGON2_MAX_LANES UINT32_C(0xFFFFFF) + +/* Minimum and maximum number of threads */ +#define ARGON2_MIN_THREADS UINT32_C(1) +#define ARGON2_MAX_THREADS UINT32_C(0xFFFFFF) + +/* Number of synchronization points between lanes per pass */ +#define ARGON2_SYNC_POINTS UINT32_C(4) + +/* Minimum and maximum digest size in bytes */ +#define ARGON2_MIN_OUTLEN UINT32_C(4) +#define ARGON2_MAX_OUTLEN UINT32_C(0xFFFFFFFF) + +/* Minimum and maximum number of memory blocks (each of BLOCK_SIZE bytes) */ +#define ARGON2_MIN_MEMORY (2 * ARGON2_SYNC_POINTS) /* 2 blocks per slice */ + +#define ARGON2_MIN(a, b) ((a) < (b) ? (a) : (b)) +/* Max memory size is addressing-space/2, topping at 2^32 blocks (4 TB) */ +#define ARGON2_MAX_MEMORY_BITS \ + ARGON2_MIN(UINT32_C(32), (sizeof(void *) * CHAR_BIT - 10 - 1)) +#define ARGON2_MAX_MEMORY \ + ARGON2_MIN(UINT32_C(0xFFFFFFFF), UINT64_C(1) << ARGON2_MAX_MEMORY_BITS) + +/* Minimum and maximum number of passes */ +#define ARGON2_MIN_TIME UINT32_C(1) +#define ARGON2_MAX_TIME UINT32_C(0xFFFFFFFF) + +/* Minimum and maximum password length in bytes */ +#define ARGON2_MIN_PWD_LENGTH UINT32_C(0) +#define ARGON2_MAX_PWD_LENGTH UINT32_C(0xFFFFFFFF) + +/* Minimum and maximum associated data length in bytes */ +#define ARGON2_MIN_AD_LENGTH UINT32_C(0) +#define ARGON2_MAX_AD_LENGTH UINT32_C(0xFFFFFFFF) + +/* Minimum and maximum salt length in bytes */ +#define ARGON2_MIN_SALT_LENGTH UINT32_C(8) +#define ARGON2_MAX_SALT_LENGTH UINT32_C(0xFFFFFFFF) + +/* Minimum and maximum key length in bytes */ +#define ARGON2_MIN_SECRET UINT32_C(0) +#define ARGON2_MAX_SECRET UINT32_C(0xFFFFFFFF) + +/* Flags to determine which fields are securely wiped (default = no wipe). */ +#define ARGON2_DEFAULT_FLAGS UINT32_C(0) +#define ARGON2_FLAG_CLEAR_PASSWORD (UINT32_C(1) << 0) +#define ARGON2_FLAG_CLEAR_SECRET (UINT32_C(1) << 1) + +/* Global flag to determine if we are wiping internal memory buffers. This flag + * is defined in core.c and defaults to 1 (wipe internal memory). */ +extern int FLAG_clear_internal_memory; + +/* Error codes */ +typedef enum Argon2_ErrorCodes { + ARGON2_OK = 0, + + ARGON2_OUTPUT_PTR_NULL = -1, + + ARGON2_OUTPUT_TOO_SHORT = -2, + ARGON2_OUTPUT_TOO_LONG = -3, + + ARGON2_PWD_TOO_SHORT = -4, + ARGON2_PWD_TOO_LONG = -5, + + ARGON2_SALT_TOO_SHORT = -6, + ARGON2_SALT_TOO_LONG = -7, + + ARGON2_AD_TOO_SHORT = -8, + ARGON2_AD_TOO_LONG = -9, + + ARGON2_SECRET_TOO_SHORT = -10, + ARGON2_SECRET_TOO_LONG = -11, + + ARGON2_TIME_TOO_SMALL = -12, + ARGON2_TIME_TOO_LARGE = -13, + + ARGON2_MEMORY_TOO_LITTLE = -14, + ARGON2_MEMORY_TOO_MUCH = -15, + + ARGON2_LANES_TOO_FEW = -16, + ARGON2_LANES_TOO_MANY = -17, + + ARGON2_PWD_PTR_MISMATCH = -18, /* NULL ptr with non-zero length */ + ARGON2_SALT_PTR_MISMATCH = -19, /* NULL ptr with non-zero length */ + ARGON2_SECRET_PTR_MISMATCH = -20, /* NULL ptr with non-zero length */ + ARGON2_AD_PTR_MISMATCH = -21, /* NULL ptr with non-zero length */ + + ARGON2_MEMORY_ALLOCATION_ERROR = -22, + + ARGON2_FREE_MEMORY_CBK_NULL = -23, + ARGON2_ALLOCATE_MEMORY_CBK_NULL = -24, + + ARGON2_INCORRECT_PARAMETER = -25, + ARGON2_INCORRECT_TYPE = -26, + + ARGON2_OUT_PTR_MISMATCH = -27, + + ARGON2_THREADS_TOO_FEW = -28, + ARGON2_THREADS_TOO_MANY = -29, + + ARGON2_MISSING_ARGS = -30, + + ARGON2_ENCODING_FAIL = -31, + + ARGON2_DECODING_FAIL = -32, + + ARGON2_THREAD_FAIL = -33, + + ARGON2_DECODING_LENGTH_FAIL = -34, + + ARGON2_VERIFY_MISMATCH = -35 +} argon2_error_codes; + +/* Memory allocator types --- for external allocation */ +typedef int (*allocate_fptr)(uint8_t **memory, size_t bytes_to_allocate); +typedef void (*deallocate_fptr)(uint8_t *memory, size_t bytes_to_allocate); + +/* Argon2 external data structures */ + +/* + ***** + * Context: structure to hold Argon2 inputs: + * output array and its length, + * password and its length, + * salt and its length, + * secret and its length, + * associated data and its length, + * number of passes, amount of used memory (in KBytes, can be rounded up a bit) + * number of parallel threads that will be run. + * All the parameters above affect the output hash value. + * Additionally, two function pointers can be provided to allocate and + * deallocate the memory (if NULL, memory will be allocated internally). + * Also, three flags indicate whether to erase password, secret as soon as they + * are pre-hashed (and thus not needed anymore), and the entire memory + ***** + * Simplest situation: you have output array out[8], password is stored in + * pwd[32], salt is stored in salt[16], you do not have keys nor associated + * data. You need to spend 1 GB of RAM and you run 5 passes of Argon2d with + * 4 parallel lanes. + * You want to erase the password, but you're OK with last pass not being + * erased. You want to use the default memory allocator. + * Then you initialize: + Argon2_Context(out,8,pwd,32,salt,16,NULL,0,NULL,0,5,1<<20,4,4,NULL,NULL,true,false,false,false) + */ +typedef struct Argon2_Context { + uint8_t *out; /* output array */ + uint32_t outlen; /* digest length */ + + uint8_t *pwd; /* password array */ + uint32_t pwdlen; /* password length */ + + uint8_t *salt; /* salt array */ + uint32_t saltlen; /* salt length */ + + uint8_t *secret; /* key array */ + uint32_t secretlen; /* key length */ + + uint8_t *ad; /* associated data array */ + uint32_t adlen; /* associated data length */ + + uint32_t t_cost; /* number of passes */ + uint32_t m_cost; /* amount of memory requested (KB) */ + uint32_t lanes; /* number of lanes */ + uint32_t threads; /* maximum number of threads */ + + uint32_t version; /* version number */ + + allocate_fptr allocate_cbk; /* pointer to memory allocator */ + deallocate_fptr free_cbk; /* pointer to memory deallocator */ + + uint32_t flags; /* array of bool options */ + + void *memory; + +} argon2_context; + +/* Argon2 primitive type */ +typedef enum Argon2_type { + Argon2_d = 0, + Argon2_i = 1, + Argon2_id = 2 +} argon2_type; + +/* Version of the algorithm */ +typedef enum Argon2_version { + ARGON2_VERSION_10 = 0x10, + ARGON2_VERSION_13 = 0x13, + ARGON2_VERSION_NUMBER = ARGON2_VERSION_13 +} argon2_version; + +/* + * Function that gives the string representation of an argon2_type. + * @param type The argon2_type that we want the string for + * @param uppercase Whether the string should have the first letter uppercase + * @return NULL if invalid type, otherwise the string representation. + */ +ARGON2_PUBLIC const char *argon2_type2string(argon2_type type, int uppercase); + +/* + * Function that performs memory-hard hashing with certain degree of parallelism + * @param context Pointer to the Argon2 internal structure + * @return Error code if smth is wrong, ARGON2_OK otherwise + */ +ARGON2_PUBLIC int argon2_ctx(argon2_context *context, argon2_type type); + +/** + * Hashes a password with Argon2i, producing an encoded hash + * @param t_cost Number of iterations + * @param m_cost Sets memory usage to m_cost kibibytes + * @param parallelism Number of threads and compute lanes + * @param pwd Pointer to password + * @param pwdlen Password size in bytes + * @param salt Pointer to salt + * @param saltlen Salt size in bytes + * @param hashlen Desired length of the hash in bytes + * @param encoded Buffer where to write the encoded hash + * @param encodedlen Size of the buffer (thus max size of the encoded hash) + * @pre Different parallelism levels will give different results + * @pre Returns ARGON2_OK if successful + */ +ARGON2_PUBLIC int argon2i_hash_encoded(const uint32_t t_cost, + const uint32_t m_cost, + const uint32_t parallelism, + const void *pwd, const size_t pwdlen, + const void *salt, const size_t saltlen, + const size_t hashlen, char *encoded, + const size_t encodedlen); + +/** + * Hashes a password with Argon2i, producing a raw hash at @hash + * @param t_cost Number of iterations + * @param m_cost Sets memory usage to m_cost kibibytes + * @param parallelism Number of threads and compute lanes + * @param pwd Pointer to password + * @param pwdlen Password size in bytes + * @param salt Pointer to salt + * @param saltlen Salt size in bytes + * @param hash Buffer where to write the raw hash - updated by the function + * @param hashlen Desired length of the hash in bytes + * @pre Different parallelism levels will give different results + * @pre Returns ARGON2_OK if successful + */ +ARGON2_PUBLIC int argon2i_hash_raw(const uint32_t t_cost, const uint32_t m_cost, + const uint32_t parallelism, const void *pwd, + const size_t pwdlen, const void *salt, + const size_t saltlen, void *hash, + const size_t hashlen); + +ARGON2_PUBLIC int argon2d_hash_encoded(const uint32_t t_cost, + const uint32_t m_cost, + const uint32_t parallelism, + const void *pwd, const size_t pwdlen, + const void *salt, const size_t saltlen, + const size_t hashlen, char *encoded, + const size_t encodedlen); + +ARGON2_PUBLIC int argon2d_hash_raw(const uint32_t t_cost, const uint32_t m_cost, + const uint32_t parallelism, const void *pwd, + const size_t pwdlen, const void *salt, + const size_t saltlen, void *hash, + const size_t hashlen); + +ARGON2_PUBLIC int argon2id_hash_encoded(const uint32_t t_cost, + const uint32_t m_cost, + const uint32_t parallelism, + const void *pwd, const size_t pwdlen, + const void *salt, const size_t saltlen, + const size_t hashlen, char *encoded, + const size_t encodedlen); + +ARGON2_PUBLIC int argon2id_hash_raw(const uint32_t t_cost, + const uint32_t m_cost, + const uint32_t parallelism, const void *pwd, + const size_t pwdlen, const void *salt, + const size_t saltlen, void *hash, + const size_t hashlen); + +/* generic function underlying the above ones */ +ARGON2_PUBLIC int argon2_hash(const uint32_t t_cost, const uint32_t m_cost, + const uint32_t parallelism, const void *pwd, + const size_t pwdlen, const void *salt, + const size_t saltlen, void *hash, + const size_t hashlen, char *encoded, + const size_t encodedlen, argon2_type type, + const uint32_t version); + +/** + * Verifies a password against an encoded string + * Encoded string is restricted as in validate_inputs() + * @param encoded String encoding parameters, salt, hash + * @param pwd Pointer to password + * @pre Returns ARGON2_OK if successful + */ +ARGON2_PUBLIC int argon2i_verify(const char *encoded, const void *pwd, + const size_t pwdlen); + +ARGON2_PUBLIC int argon2d_verify(const char *encoded, const void *pwd, + const size_t pwdlen); + +ARGON2_PUBLIC int argon2id_verify(const char *encoded, const void *pwd, + const size_t pwdlen); + +/* generic function underlying the above ones */ +ARGON2_PUBLIC int argon2_verify(const char *encoded, const void *pwd, + const size_t pwdlen, argon2_type type); + +/** + * Argon2d: Version of Argon2 that picks memory blocks depending + * on the password and salt. Only for side-channel-free + * environment!! + ***** + * @param context Pointer to current Argon2 context + * @return Zero if successful, a non zero error code otherwise + */ +ARGON2_PUBLIC int argon2d_ctx(argon2_context *context); + +/** + * Argon2i: Version of Argon2 that picks memory blocks + * independent on the password and salt. Good for side-channels, + * but worse w.r.t. tradeoff attacks if only one pass is used. + ***** + * @param context Pointer to current Argon2 context + * @return Zero if successful, a non zero error code otherwise + */ +ARGON2_PUBLIC int argon2i_ctx(argon2_context *context); + +/** + * Argon2id: Version of Argon2 where the first half-pass over memory is + * password-independent, the rest are password-dependent (on the password and + * salt). OK against side channels (they reduce to 1/2-pass Argon2i), and + * better with w.r.t. tradeoff attacks (similar to Argon2d). + ***** + * @param context Pointer to current Argon2 context + * @return Zero if successful, a non zero error code otherwise + */ +ARGON2_PUBLIC int argon2id_ctx(argon2_context *context); + +/** + * Verify if a given password is correct for Argon2d hashing + * @param context Pointer to current Argon2 context + * @param hash The password hash to verify. The length of the hash is + * specified by the context outlen member + * @return Zero if successful, a non zero error code otherwise + */ +ARGON2_PUBLIC int argon2d_verify_ctx(argon2_context *context, const char *hash); + +/** + * Verify if a given password is correct for Argon2i hashing + * @param context Pointer to current Argon2 context + * @param hash The password hash to verify. The length of the hash is + * specified by the context outlen member + * @return Zero if successful, a non zero error code otherwise + */ +ARGON2_PUBLIC int argon2i_verify_ctx(argon2_context *context, const char *hash); + +/** + * Verify if a given password is correct for Argon2id hashing + * @param context Pointer to current Argon2 context + * @param hash The password hash to verify. The length of the hash is + * specified by the context outlen member + * @return Zero if successful, a non zero error code otherwise + */ +ARGON2_PUBLIC int argon2id_verify_ctx(argon2_context *context, + const char *hash); + +/* generic function underlying the above ones */ +ARGON2_PUBLIC int argon2_verify_ctx(argon2_context *context, const char *hash, + argon2_type type); + +/** + * Get the associated error message for given error code + * @return The error message associated with the given error code + */ +ARGON2_PUBLIC const char *argon2_error_message(int error_code); + +/** + * Returns the encoded hash length for the given input parameters + * @param t_cost Number of iterations + * @param m_cost Memory usage in kibibytes + * @param parallelism Number of threads; used to compute lanes + * @param saltlen Salt size in bytes + * @param hashlen Hash size in bytes + * @param type The argon2_type that we want the encoded length for + * @return The encoded hash length in bytes + */ +ARGON2_PUBLIC size_t argon2_encodedlen(uint32_t t_cost, uint32_t m_cost, + uint32_t parallelism, uint32_t saltlen, + uint32_t hashlen, argon2_type type); + +#if defined(__cplusplus) +} +#endif + +#endif diff --git a/deps/phc-winner-argon2-20190702/_hashcat/blake2/blake2-impl.h b/deps/phc-winner-argon2-20190702/_hashcat/blake2/blake2-impl.h new file mode 100644 index 000000000..241f0beb3 --- /dev/null +++ b/deps/phc-winner-argon2-20190702/_hashcat/blake2/blake2-impl.h @@ -0,0 +1,156 @@ +/* + * Argon2 reference source code package - reference C implementations + * + * Copyright 2015 + * Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves + * + * You may use this work under the terms of a Creative Commons CC0 1.0 + * License/Waiver or the Apache Public License 2.0, at your option. The terms of + * these licenses can be found at: + * + * - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0 + * - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0 + * + * You should have received a copy of both of these licenses along with this + * software. If not, they may be obtained at the above URLs. + */ + +#ifndef PORTABLE_BLAKE2_IMPL_H +#define PORTABLE_BLAKE2_IMPL_H + +#include +#include + +#if defined(_MSC_VER) +#define BLAKE2_INLINE __inline +#elif defined(__GNUC__) || defined(__clang__) +#define BLAKE2_INLINE __inline__ +#else +#define BLAKE2_INLINE +#endif + +/* Argon2 Team - Begin Code */ +/* + Not an exhaustive list, but should cover the majority of modern platforms + Additionally, the code will always be correct---this is only a performance + tweak. +*/ +#if (defined(__BYTE_ORDER__) && \ + (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)) || \ + defined(__LITTLE_ENDIAN__) || defined(__ARMEL__) || defined(__MIPSEL__) || \ + defined(__AARCH64EL__) || defined(__amd64__) || defined(__i386__) || \ + defined(_M_IX86) || defined(_M_X64) || defined(_M_AMD64) || \ + defined(_M_ARM) +#define NATIVE_LITTLE_ENDIAN +#endif +/* Argon2 Team - End Code */ + +static BLAKE2_INLINE uint32_t load32(const void *src) { +#if defined(NATIVE_LITTLE_ENDIAN) + uint32_t w; + memcpy(&w, src, sizeof w); + return w; +#else + const uint8_t *p = (const uint8_t *)src; + uint32_t w = *p++; + w |= (uint32_t)(*p++) << 8; + w |= (uint32_t)(*p++) << 16; + w |= (uint32_t)(*p++) << 24; + return w; +#endif +} + +static BLAKE2_INLINE uint64_t load64(const void *src) { +#if defined(NATIVE_LITTLE_ENDIAN) + uint64_t w; + memcpy(&w, src, sizeof w); + return w; +#else + const uint8_t *p = (const uint8_t *)src; + uint64_t w = *p++; + w |= (uint64_t)(*p++) << 8; + w |= (uint64_t)(*p++) << 16; + w |= (uint64_t)(*p++) << 24; + w |= (uint64_t)(*p++) << 32; + w |= (uint64_t)(*p++) << 40; + w |= (uint64_t)(*p++) << 48; + w |= (uint64_t)(*p++) << 56; + return w; +#endif +} + +static BLAKE2_INLINE void store32(void *dst, uint32_t w) { +#if defined(NATIVE_LITTLE_ENDIAN) + memcpy(dst, &w, sizeof w); +#else + uint8_t *p = (uint8_t *)dst; + *p++ = (uint8_t)w; + w >>= 8; + *p++ = (uint8_t)w; + w >>= 8; + *p++ = (uint8_t)w; + w >>= 8; + *p++ = (uint8_t)w; +#endif +} + +static BLAKE2_INLINE void store64(void *dst, uint64_t w) { +#if defined(NATIVE_LITTLE_ENDIAN) + memcpy(dst, &w, sizeof w); +#else + uint8_t *p = (uint8_t *)dst; + *p++ = (uint8_t)w; + w >>= 8; + *p++ = (uint8_t)w; + w >>= 8; + *p++ = (uint8_t)w; + w >>= 8; + *p++ = (uint8_t)w; + w >>= 8; + *p++ = (uint8_t)w; + w >>= 8; + *p++ = (uint8_t)w; + w >>= 8; + *p++ = (uint8_t)w; + w >>= 8; + *p++ = (uint8_t)w; +#endif +} + +static BLAKE2_INLINE uint64_t load48(const void *src) { + const uint8_t *p = (const uint8_t *)src; + uint64_t w = *p++; + w |= (uint64_t)(*p++) << 8; + w |= (uint64_t)(*p++) << 16; + w |= (uint64_t)(*p++) << 24; + w |= (uint64_t)(*p++) << 32; + w |= (uint64_t)(*p++) << 40; + return w; +} + +static BLAKE2_INLINE void store48(void *dst, uint64_t w) { + uint8_t *p = (uint8_t *)dst; + *p++ = (uint8_t)w; + w >>= 8; + *p++ = (uint8_t)w; + w >>= 8; + *p++ = (uint8_t)w; + w >>= 8; + *p++ = (uint8_t)w; + w >>= 8; + *p++ = (uint8_t)w; + w >>= 8; + *p++ = (uint8_t)w; +} + +static BLAKE2_INLINE uint32_t rotr32(const uint32_t w, const unsigned c) { + return (w >> c) | (w << (32 - c)); +} + +static BLAKE2_INLINE uint64_t rotr64(const uint64_t w, const unsigned c) { + return (w >> c) | (w << (64 - c)); +} + +void clear_internal_memory(void *v, size_t n); + +#endif diff --git a/deps/phc-winner-argon2-20190702/_hashcat/blake2/blake2.h b/deps/phc-winner-argon2-20190702/_hashcat/blake2/blake2.h new file mode 100644 index 000000000..eeb45bedf --- /dev/null +++ b/deps/phc-winner-argon2-20190702/_hashcat/blake2/blake2.h @@ -0,0 +1,87 @@ +/* + * Argon2 reference source code package - reference C implementations + * + * Copyright 2015 + * Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves + * + * You may use this work under the terms of a Creative Commons CC0 1.0 + * License/Waiver or the Apache Public License 2.0, at your option. The terms of + * these licenses can be found at: + * + * - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0 + * - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0 + * + * You should have received a copy of both of these licenses along with this + * software. If not, they may be obtained at the above URLs. + */ + +#ifndef PORTABLE_BLAKE2_H +#define PORTABLE_BLAKE2_H + +#if defined(__cplusplus) +extern "C" { +#endif + +enum blake2b_constant { + BLAKE2B_BLOCKBYTES = 128, + BLAKE2B_OUTBYTES = 64, + BLAKE2B_KEYBYTES = 64, + BLAKE2B_SALTBYTES = 16, + BLAKE2B_PERSONALBYTES = 16 +}; + +#pragma pack(push, 1) +typedef struct __blake2b_param { + uint8_t digest_length; /* 1 */ + uint8_t key_length; /* 2 */ + uint8_t fanout; /* 3 */ + uint8_t depth; /* 4 */ + uint32_t leaf_length; /* 8 */ + uint64_t node_offset; /* 16 */ + uint8_t node_depth; /* 17 */ + uint8_t inner_length; /* 18 */ + uint8_t reserved[14]; /* 32 */ + uint8_t salt[BLAKE2B_SALTBYTES]; /* 48 */ + uint8_t personal[BLAKE2B_PERSONALBYTES]; /* 64 */ +} blake2b_param; +#pragma pack(pop) + +typedef struct __blake2b_state { + uint64_t h[8]; + uint64_t t[2]; + uint64_t f[2]; + uint8_t buf[BLAKE2B_BLOCKBYTES]; + unsigned buflen; + unsigned outlen; + uint8_t last_node; +} blake2b_state; + +/* Ensure param structs have not been wrongly padded */ +/* Poor man's static_assert */ +enum { + blake2_size_check_0 = 1 / !!(CHAR_BIT == 8), + blake2_size_check_2 = + 1 / !!(sizeof(blake2b_param) == sizeof(uint64_t) * CHAR_BIT) +}; + +/* Streaming API */ +ARGON2_LOCAL int blake2b_init(blake2b_state *S, size_t outlen); +ARGON2_LOCAL int blake2b_init_key(blake2b_state *S, size_t outlen, const void *key, + size_t keylen); +ARGON2_LOCAL int blake2b_init_param(blake2b_state *S, const blake2b_param *P); +ARGON2_LOCAL int blake2b_update(blake2b_state *S, const void *in, size_t inlen); +ARGON2_LOCAL int blake2b_final(blake2b_state *S, void *out, size_t outlen); + +/* Simple API */ +ARGON2_LOCAL int blake2b(void *out, size_t outlen, const void *in, size_t inlen, + const void *key, size_t keylen); + +/* Argon2 Team - Begin Code */ +ARGON2_LOCAL int blake2b_long(void *out, size_t outlen, const void *in, size_t inlen); +/* Argon2 Team - End Code */ + +#if defined(__cplusplus) +} +#endif + +#endif diff --git a/deps/phc-winner-argon2-20190702/_hashcat/blake2/blake2b.c b/deps/phc-winner-argon2-20190702/_hashcat/blake2/blake2b.c new file mode 100644 index 000000000..370eccf8d --- /dev/null +++ b/deps/phc-winner-argon2-20190702/_hashcat/blake2/blake2b.c @@ -0,0 +1,390 @@ +/* + * Argon2 reference source code package - reference C implementations + * + * Copyright 2015 + * Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves + * + * You may use this work under the terms of a Creative Commons CC0 1.0 + * License/Waiver or the Apache Public License 2.0, at your option. The terms of + * these licenses can be found at: + * + * - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0 + * - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0 + * + * You should have received a copy of both of these licenses along with this + * software. If not, they may be obtained at the above URLs. + */ + +#include +#include +#include + +#include "blake2.h" +#include "blake2-impl.h" + +static const uint64_t blake2b_IV[8] = { + UINT64_C(0x6a09e667f3bcc908), UINT64_C(0xbb67ae8584caa73b), + UINT64_C(0x3c6ef372fe94f82b), UINT64_C(0xa54ff53a5f1d36f1), + UINT64_C(0x510e527fade682d1), UINT64_C(0x9b05688c2b3e6c1f), + UINT64_C(0x1f83d9abfb41bd6b), UINT64_C(0x5be0cd19137e2179)}; + +static const unsigned int blake2b_sigma[12][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}, +}; + +static BLAKE2_INLINE void blake2b_set_lastnode(blake2b_state *S) { + S->f[1] = (uint64_t)-1; +} + +static BLAKE2_INLINE void blake2b_set_lastblock(blake2b_state *S) { + if (S->last_node) { + blake2b_set_lastnode(S); + } + S->f[0] = (uint64_t)-1; +} + +static BLAKE2_INLINE void blake2b_increment_counter(blake2b_state *S, + uint64_t inc) { + S->t[0] += inc; + S->t[1] += (S->t[0] < inc); +} + +static BLAKE2_INLINE void blake2b_invalidate_state(blake2b_state *S) { +// clear_internal_memory(S, sizeof(*S)); /* wipe */ + blake2b_set_lastblock(S); /* invalidate for further use */ +} + +static BLAKE2_INLINE void blake2b_init0(blake2b_state *S) { + memset(S, 0, sizeof(*S)); + memcpy(S->h, blake2b_IV, sizeof(S->h)); +} + +int blake2b_init_param(blake2b_state *S, const blake2b_param *P) { + const unsigned char *p = (const unsigned char *)P; + unsigned int i; + + if (NULL == P || NULL == S) { + return -1; + } + + blake2b_init0(S); + /* IV XOR Parameter Block */ + for (i = 0; i < 8; ++i) { + S->h[i] ^= load64(&p[i * sizeof(S->h[i])]); + } + S->outlen = P->digest_length; + return 0; +} + +/* Sequential blake2b initialization */ +int blake2b_init(blake2b_state *S, size_t outlen) { + blake2b_param P; + + if (S == NULL) { + return -1; + } + + if ((outlen == 0) || (outlen > BLAKE2B_OUTBYTES)) { + blake2b_invalidate_state(S); + return -1; + } + + /* Setup Parameter Block for unkeyed BLAKE2 */ + P.digest_length = (uint8_t)outlen; + P.key_length = 0; + P.fanout = 1; + P.depth = 1; + P.leaf_length = 0; + P.node_offset = 0; + P.node_depth = 0; + P.inner_length = 0; + memset(P.reserved, 0, sizeof(P.reserved)); + memset(P.salt, 0, sizeof(P.salt)); + memset(P.personal, 0, sizeof(P.personal)); + + return blake2b_init_param(S, &P); +} + +int blake2b_init_key(blake2b_state *S, size_t outlen, const void *key, + size_t keylen) { + blake2b_param P; + + if (S == NULL) { + return -1; + } + + if ((outlen == 0) || (outlen > BLAKE2B_OUTBYTES)) { + blake2b_invalidate_state(S); + return -1; + } + + if ((key == 0) || (keylen == 0) || (keylen > BLAKE2B_KEYBYTES)) { + blake2b_invalidate_state(S); + return -1; + } + + /* Setup Parameter Block for keyed BLAKE2 */ + P.digest_length = (uint8_t)outlen; + P.key_length = (uint8_t)keylen; + P.fanout = 1; + P.depth = 1; + P.leaf_length = 0; + P.node_offset = 0; + P.node_depth = 0; + P.inner_length = 0; + memset(P.reserved, 0, sizeof(P.reserved)); + memset(P.salt, 0, sizeof(P.salt)); + memset(P.personal, 0, sizeof(P.personal)); + + if (blake2b_init_param(S, &P) < 0) { + blake2b_invalidate_state(S); + return -1; + } + + { + uint8_t block[BLAKE2B_BLOCKBYTES]; + memset(block, 0, BLAKE2B_BLOCKBYTES); + memcpy(block, key, keylen); + blake2b_update(S, block, BLAKE2B_BLOCKBYTES); + /* Burn the key from stack */ +// clear_internal_memory(block, BLAKE2B_BLOCKBYTES); + } + return 0; +} + +static void blake2b_compress(blake2b_state *S, const uint8_t *block) { + uint64_t m[16]; + uint64_t v[16]; + unsigned int i, r; + + for (i = 0; i < 16; ++i) { + m[i] = load64(block + i * sizeof(m[i])); + } + + for (i = 0; i < 8; ++i) { + v[i] = S->h[i]; + } + + v[8] = blake2b_IV[0]; + v[9] = blake2b_IV[1]; + v[10] = blake2b_IV[2]; + v[11] = blake2b_IV[3]; + v[12] = blake2b_IV[4] ^ S->t[0]; + v[13] = blake2b_IV[5] ^ S->t[1]; + v[14] = blake2b_IV[6] ^ S->f[0]; + v[15] = blake2b_IV[7] ^ S->f[1]; + +#define G(r, i, a, b, c, d) \ + do { \ + a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \ + d = rotr64(d ^ a, 32); \ + c = c + d; \ + b = rotr64(b ^ c, 24); \ + a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \ + d = rotr64(d ^ a, 16); \ + c = c + d; \ + b = rotr64(b ^ c, 63); \ + } while ((void)0, 0) + +#define ROUND(r) \ + do { \ + G(r, 0, v[0], v[4], v[8], v[12]); \ + G(r, 1, v[1], v[5], v[9], v[13]); \ + G(r, 2, v[2], v[6], v[10], v[14]); \ + G(r, 3, v[3], v[7], v[11], v[15]); \ + G(r, 4, v[0], v[5], v[10], v[15]); \ + G(r, 5, v[1], v[6], v[11], v[12]); \ + G(r, 6, v[2], v[7], v[8], v[13]); \ + G(r, 7, v[3], v[4], v[9], v[14]); \ + } while ((void)0, 0) + + for (r = 0; r < 12; ++r) { + ROUND(r); + } + + for (i = 0; i < 8; ++i) { + S->h[i] = S->h[i] ^ v[i] ^ v[i + 8]; + } + +#undef G +#undef ROUND +} + +int blake2b_update(blake2b_state *S, const void *in, size_t inlen) { + const uint8_t *pin = (const uint8_t *)in; + + if (inlen == 0) { + return 0; + } + + /* Sanity check */ + if (S == NULL || in == NULL) { + return -1; + } + + /* Is this a reused state? */ + if (S->f[0] != 0) { + return -1; + } + + if (S->buflen + inlen > BLAKE2B_BLOCKBYTES) { + /* Complete current block */ + size_t left = S->buflen; + size_t fill = BLAKE2B_BLOCKBYTES - left; + memcpy(&S->buf[left], pin, fill); + blake2b_increment_counter(S, BLAKE2B_BLOCKBYTES); + blake2b_compress(S, S->buf); + S->buflen = 0; + inlen -= fill; + pin += fill; + /* Avoid buffer copies when possible */ + while (inlen > BLAKE2B_BLOCKBYTES) { + blake2b_increment_counter(S, BLAKE2B_BLOCKBYTES); + blake2b_compress(S, pin); + inlen -= BLAKE2B_BLOCKBYTES; + pin += BLAKE2B_BLOCKBYTES; + } + } + memcpy(&S->buf[S->buflen], pin, inlen); + S->buflen += (unsigned int)inlen; + return 0; +} + +int blake2b_final(blake2b_state *S, void *out, size_t outlen) { + uint8_t buffer[BLAKE2B_OUTBYTES] = {0}; + unsigned int i; + + /* Sanity checks */ + if (S == NULL || out == NULL || outlen < S->outlen) { + return -1; + } + + /* Is this a reused state? */ + if (S->f[0] != 0) { + return -1; + } + + blake2b_increment_counter(S, S->buflen); + blake2b_set_lastblock(S); + memset(&S->buf[S->buflen], 0, BLAKE2B_BLOCKBYTES - S->buflen); /* Padding */ + blake2b_compress(S, S->buf); + + for (i = 0; i < 8; ++i) { /* Output full hash to temp buffer */ + store64(buffer + sizeof(S->h[i]) * i, S->h[i]); + } + + memcpy(out, buffer, S->outlen); +// clear_internal_memory(buffer, sizeof(buffer)); +// clear_internal_memory(S->buf, sizeof(S->buf)); +// clear_internal_memory(S->h, sizeof(S->h)); + return 0; +} + +int blake2b(void *out, size_t outlen, const void *in, size_t inlen, + const void *key, size_t keylen) { + blake2b_state S; + int ret = -1; + + /* Verify parameters */ + if (NULL == in && inlen > 0) { + goto fail; + } + + if (NULL == out || outlen == 0 || outlen > BLAKE2B_OUTBYTES) { + goto fail; + } + + if ((NULL == key && keylen > 0) || keylen > BLAKE2B_KEYBYTES) { + goto fail; + } + + if (keylen > 0) { + if (blake2b_init_key(&S, outlen, key, keylen) < 0) { + goto fail; + } + } else { + if (blake2b_init(&S, outlen) < 0) { + goto fail; + } + } + + if (blake2b_update(&S, in, inlen) < 0) { + goto fail; + } + ret = blake2b_final(&S, out, outlen); + +fail: +// clear_internal_memory(&S, sizeof(S)); + return ret; +} + +/* Argon2 Team - Begin Code */ +int blake2b_long(void *pout, size_t outlen, const void *in, size_t inlen) { + uint8_t *out = (uint8_t *)pout; + blake2b_state blake_state; + uint8_t outlen_bytes[sizeof(uint32_t)] = {0}; + int ret = -1; + + if (outlen > UINT32_MAX) { + goto fail; + } + + /* Ensure little-endian byte order! */ + store32(outlen_bytes, (uint32_t)outlen); + +#define TRY(statement) \ + do { \ + ret = statement; \ + if (ret < 0) { \ + goto fail; \ + } \ + } while ((void)0, 0) + + if (outlen <= BLAKE2B_OUTBYTES) { + TRY(blake2b_init(&blake_state, outlen)); + TRY(blake2b_update(&blake_state, outlen_bytes, sizeof(outlen_bytes))); + TRY(blake2b_update(&blake_state, in, inlen)); + TRY(blake2b_final(&blake_state, out, outlen)); + } else { + uint32_t toproduce; + uint8_t out_buffer[BLAKE2B_OUTBYTES]; + uint8_t in_buffer[BLAKE2B_OUTBYTES]; + TRY(blake2b_init(&blake_state, BLAKE2B_OUTBYTES)); + TRY(blake2b_update(&blake_state, outlen_bytes, sizeof(outlen_bytes))); + TRY(blake2b_update(&blake_state, in, inlen)); + TRY(blake2b_final(&blake_state, out_buffer, BLAKE2B_OUTBYTES)); + memcpy(out, out_buffer, BLAKE2B_OUTBYTES / 2); + out += BLAKE2B_OUTBYTES / 2; + toproduce = (uint32_t)outlen - BLAKE2B_OUTBYTES / 2; + + while (toproduce > BLAKE2B_OUTBYTES) { + memcpy(in_buffer, out_buffer, BLAKE2B_OUTBYTES); + TRY(blake2b(out_buffer, BLAKE2B_OUTBYTES, in_buffer, + BLAKE2B_OUTBYTES, NULL, 0)); + memcpy(out, out_buffer, BLAKE2B_OUTBYTES / 2); + out += BLAKE2B_OUTBYTES / 2; + toproduce -= BLAKE2B_OUTBYTES / 2; + } + + memcpy(in_buffer, out_buffer, BLAKE2B_OUTBYTES); + TRY(blake2b(out_buffer, toproduce, in_buffer, BLAKE2B_OUTBYTES, NULL, + 0)); + memcpy(out, out_buffer, toproduce); + } +fail: +// clear_internal_memory(&blake_state, sizeof(blake_state)); + return ret; +#undef TRY +} +/* Argon2 Team - End Code */ diff --git a/deps/phc-winner-argon2-20190702/_hashcat/blake2/blamka-round-opt.h b/deps/phc-winner-argon2-20190702/_hashcat/blake2/blamka-round-opt.h new file mode 100644 index 000000000..37a9e7eb2 --- /dev/null +++ b/deps/phc-winner-argon2-20190702/_hashcat/blake2/blamka-round-opt.h @@ -0,0 +1,476 @@ +/* + * Argon2 reference source code package - reference C implementations + * + * Copyright 2015 + * Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves + * + * You may use this work under the terms of a Creative Commons CC0 1.0 + * License/Waiver or the Apache Public License 2.0, at your option. The terms of + * these licenses can be found at: + * + * - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0 + * - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0 + * + * You should have received a copy of both of these licenses along with this + * software. If not, they may be obtained at the above URLs. + */ + +#ifndef BLAKE_ROUND_MKA_OPT_H +#define BLAKE_ROUND_MKA_OPT_H + +#include "blake2-impl.h" + +#if defined(__x86_64__) || defined(_M_X64) || defined(__i386__) || defined(_M_IX86) +#include +#elif defined(__aarch64__) +#include +#endif + +#if defined(__SSSE3__) +#include /* for _mm_shuffle_epi8 and _mm_alignr_epi8 */ +#endif + +#if defined(__XOP__) && (defined(__GNUC__) || defined(__clang__)) +#include +#endif + +#if !defined(__AVX512F__) +#if !defined(__AVX2__) +#if !defined(__XOP__) +#if defined(__SSSE3__) +#define r16 \ + (_mm_setr_epi8(2, 3, 4, 5, 6, 7, 0, 1, 10, 11, 12, 13, 14, 15, 8, 9)) +#define r24 \ + (_mm_setr_epi8(3, 4, 5, 6, 7, 0, 1, 2, 11, 12, 13, 14, 15, 8, 9, 10)) +#define _mm_roti_epi64(x, c) \ + (-(c) == 32) \ + ? _mm_shuffle_epi32((x), _MM_SHUFFLE(2, 3, 0, 1)) \ + : (-(c) == 24) \ + ? _mm_shuffle_epi8((x), r24) \ + : (-(c) == 16) \ + ? _mm_shuffle_epi8((x), r16) \ + : (-(c) == 63) \ + ? _mm_xor_si128(_mm_srli_epi64((x), -(c)), \ + _mm_add_epi64((x), (x))) \ + : _mm_xor_si128(_mm_srli_epi64((x), -(c)), \ + _mm_slli_epi64((x), 64 - (-(c)))) +#else /* defined(__SSE2__) */ +#define _mm_roti_epi64(r, c) \ + _mm_xor_si128(_mm_srli_epi64((r), -(c)), _mm_slli_epi64((r), 64 - (-(c)))) +#endif +#else +#endif + +static BLAKE2_INLINE __m128i fBlaMka(__m128i x, __m128i y) { + const __m128i z = _mm_mul_epu32(x, y); + return _mm_add_epi64(_mm_add_epi64(x, y), _mm_add_epi64(z, z)); +} + +#define G1(A0, B0, C0, D0, A1, B1, C1, D1) \ + do { \ + A0 = fBlaMka(A0, B0); \ + A1 = fBlaMka(A1, B1); \ + \ + D0 = _mm_xor_si128(D0, A0); \ + D1 = _mm_xor_si128(D1, A1); \ + \ + D0 = _mm_roti_epi64(D0, -32); \ + D1 = _mm_roti_epi64(D1, -32); \ + \ + C0 = fBlaMka(C0, D0); \ + C1 = fBlaMka(C1, D1); \ + \ + B0 = _mm_xor_si128(B0, C0); \ + B1 = _mm_xor_si128(B1, C1); \ + \ + B0 = _mm_roti_epi64(B0, -24); \ + B1 = _mm_roti_epi64(B1, -24); \ + } while ((void)0, 0) + +#define G2(A0, B0, C0, D0, A1, B1, C1, D1) \ + do { \ + A0 = fBlaMka(A0, B0); \ + A1 = fBlaMka(A1, B1); \ + \ + D0 = _mm_xor_si128(D0, A0); \ + D1 = _mm_xor_si128(D1, A1); \ + \ + D0 = _mm_roti_epi64(D0, -16); \ + D1 = _mm_roti_epi64(D1, -16); \ + \ + C0 = fBlaMka(C0, D0); \ + C1 = fBlaMka(C1, D1); \ + \ + B0 = _mm_xor_si128(B0, C0); \ + B1 = _mm_xor_si128(B1, C1); \ + \ + B0 = _mm_roti_epi64(B0, -63); \ + B1 = _mm_roti_epi64(B1, -63); \ + } while ((void)0, 0) + +#if defined(__SSSE3__) +#define DIAGONALIZE(A0, B0, C0, D0, A1, B1, C1, D1) \ + do { \ + __m128i t0 = _mm_alignr_epi8(B1, B0, 8); \ + __m128i t1 = _mm_alignr_epi8(B0, B1, 8); \ + B0 = t0; \ + B1 = t1; \ + \ + t0 = C0; \ + C0 = C1; \ + C1 = t0; \ + \ + t0 = _mm_alignr_epi8(D1, D0, 8); \ + t1 = _mm_alignr_epi8(D0, D1, 8); \ + D0 = t1; \ + D1 = t0; \ + } while ((void)0, 0) + +#define UNDIAGONALIZE(A0, B0, C0, D0, A1, B1, C1, D1) \ + do { \ + __m128i t0 = _mm_alignr_epi8(B0, B1, 8); \ + __m128i t1 = _mm_alignr_epi8(B1, B0, 8); \ + B0 = t0; \ + B1 = t1; \ + \ + t0 = C0; \ + C0 = C1; \ + C1 = t0; \ + \ + t0 = _mm_alignr_epi8(D0, D1, 8); \ + t1 = _mm_alignr_epi8(D1, D0, 8); \ + D0 = t1; \ + D1 = t0; \ + } while ((void)0, 0) +#else /* SSE2 */ +#define DIAGONALIZE(A0, B0, C0, D0, A1, B1, C1, D1) \ + do { \ + __m128i t0 = D0; \ + __m128i t1 = B0; \ + D0 = C0; \ + C0 = C1; \ + C1 = D0; \ + D0 = _mm_unpackhi_epi64(D1, _mm_unpacklo_epi64(t0, t0)); \ + D1 = _mm_unpackhi_epi64(t0, _mm_unpacklo_epi64(D1, D1)); \ + B0 = _mm_unpackhi_epi64(B0, _mm_unpacklo_epi64(B1, B1)); \ + B1 = _mm_unpackhi_epi64(B1, _mm_unpacklo_epi64(t1, t1)); \ + } while ((void)0, 0) + +#define UNDIAGONALIZE(A0, B0, C0, D0, A1, B1, C1, D1) \ + do { \ + __m128i t0, t1; \ + t0 = C0; \ + C0 = C1; \ + C1 = t0; \ + t0 = B0; \ + t1 = D0; \ + B0 = _mm_unpackhi_epi64(B1, _mm_unpacklo_epi64(B0, B0)); \ + B1 = _mm_unpackhi_epi64(t0, _mm_unpacklo_epi64(B1, B1)); \ + D0 = _mm_unpackhi_epi64(D0, _mm_unpacklo_epi64(D1, D1)); \ + D1 = _mm_unpackhi_epi64(D1, _mm_unpacklo_epi64(t1, t1)); \ + } while ((void)0, 0) +#endif + +#define BLAKE2_ROUND(A0, A1, B0, B1, C0, C1, D0, D1) \ + do { \ + G1(A0, B0, C0, D0, A1, B1, C1, D1); \ + G2(A0, B0, C0, D0, A1, B1, C1, D1); \ + \ + DIAGONALIZE(A0, B0, C0, D0, A1, B1, C1, D1); \ + \ + G1(A0, B0, C0, D0, A1, B1, C1, D1); \ + G2(A0, B0, C0, D0, A1, B1, C1, D1); \ + \ + UNDIAGONALIZE(A0, B0, C0, D0, A1, B1, C1, D1); \ + } while ((void)0, 0) +#else /* __AVX2__ */ + +#include + +#define rotr32(x) _mm256_shuffle_epi32(x, _MM_SHUFFLE(2, 3, 0, 1)) +#define rotr24(x) _mm256_shuffle_epi8(x, _mm256_setr_epi8(3, 4, 5, 6, 7, 0, 1, 2, 11, 12, 13, 14, 15, 8, 9, 10, 3, 4, 5, 6, 7, 0, 1, 2, 11, 12, 13, 14, 15, 8, 9, 10)) +#define rotr16(x) _mm256_shuffle_epi8(x, _mm256_setr_epi8(2, 3, 4, 5, 6, 7, 0, 1, 10, 11, 12, 13, 14, 15, 8, 9, 2, 3, 4, 5, 6, 7, 0, 1, 10, 11, 12, 13, 14, 15, 8, 9)) +#define rotr63(x) _mm256_xor_si256(_mm256_srli_epi64((x), 63), _mm256_add_epi64((x), (x))) + +#define G1_AVX2(A0, A1, B0, B1, C0, C1, D0, D1) \ + do { \ + __m256i ml = _mm256_mul_epu32(A0, B0); \ + ml = _mm256_add_epi64(ml, ml); \ + A0 = _mm256_add_epi64(A0, _mm256_add_epi64(B0, ml)); \ + D0 = _mm256_xor_si256(D0, A0); \ + D0 = rotr32(D0); \ + \ + ml = _mm256_mul_epu32(C0, D0); \ + ml = _mm256_add_epi64(ml, ml); \ + C0 = _mm256_add_epi64(C0, _mm256_add_epi64(D0, ml)); \ + \ + B0 = _mm256_xor_si256(B0, C0); \ + B0 = rotr24(B0); \ + \ + ml = _mm256_mul_epu32(A1, B1); \ + ml = _mm256_add_epi64(ml, ml); \ + A1 = _mm256_add_epi64(A1, _mm256_add_epi64(B1, ml)); \ + D1 = _mm256_xor_si256(D1, A1); \ + D1 = rotr32(D1); \ + \ + ml = _mm256_mul_epu32(C1, D1); \ + ml = _mm256_add_epi64(ml, ml); \ + C1 = _mm256_add_epi64(C1, _mm256_add_epi64(D1, ml)); \ + \ + B1 = _mm256_xor_si256(B1, C1); \ + B1 = rotr24(B1); \ + } while((void)0, 0); + +#define G2_AVX2(A0, A1, B0, B1, C0, C1, D0, D1) \ + do { \ + __m256i ml = _mm256_mul_epu32(A0, B0); \ + ml = _mm256_add_epi64(ml, ml); \ + A0 = _mm256_add_epi64(A0, _mm256_add_epi64(B0, ml)); \ + D0 = _mm256_xor_si256(D0, A0); \ + D0 = rotr16(D0); \ + \ + ml = _mm256_mul_epu32(C0, D0); \ + ml = _mm256_add_epi64(ml, ml); \ + C0 = _mm256_add_epi64(C0, _mm256_add_epi64(D0, ml)); \ + B0 = _mm256_xor_si256(B0, C0); \ + B0 = rotr63(B0); \ + \ + ml = _mm256_mul_epu32(A1, B1); \ + ml = _mm256_add_epi64(ml, ml); \ + A1 = _mm256_add_epi64(A1, _mm256_add_epi64(B1, ml)); \ + D1 = _mm256_xor_si256(D1, A1); \ + D1 = rotr16(D1); \ + \ + ml = _mm256_mul_epu32(C1, D1); \ + ml = _mm256_add_epi64(ml, ml); \ + C1 = _mm256_add_epi64(C1, _mm256_add_epi64(D1, ml)); \ + B1 = _mm256_xor_si256(B1, C1); \ + B1 = rotr63(B1); \ + } while((void)0, 0); + +#define DIAGONALIZE_1(A0, B0, C0, D0, A1, B1, C1, D1) \ + do { \ + B0 = _mm256_permute4x64_epi64(B0, _MM_SHUFFLE(0, 3, 2, 1)); \ + C0 = _mm256_permute4x64_epi64(C0, _MM_SHUFFLE(1, 0, 3, 2)); \ + D0 = _mm256_permute4x64_epi64(D0, _MM_SHUFFLE(2, 1, 0, 3)); \ + \ + B1 = _mm256_permute4x64_epi64(B1, _MM_SHUFFLE(0, 3, 2, 1)); \ + C1 = _mm256_permute4x64_epi64(C1, _MM_SHUFFLE(1, 0, 3, 2)); \ + D1 = _mm256_permute4x64_epi64(D1, _MM_SHUFFLE(2, 1, 0, 3)); \ + } while((void)0, 0); + +#define DIAGONALIZE_2(A0, A1, B0, B1, C0, C1, D0, D1) \ + do { \ + __m256i tmp1 = _mm256_blend_epi32(B0, B1, 0xCC); \ + __m256i tmp2 = _mm256_blend_epi32(B0, B1, 0x33); \ + B1 = _mm256_permute4x64_epi64(tmp1, _MM_SHUFFLE(2,3,0,1)); \ + B0 = _mm256_permute4x64_epi64(tmp2, _MM_SHUFFLE(2,3,0,1)); \ + \ + tmp1 = C0; \ + C0 = C1; \ + C1 = tmp1; \ + \ + tmp1 = _mm256_blend_epi32(D0, D1, 0xCC); \ + tmp2 = _mm256_blend_epi32(D0, D1, 0x33); \ + D0 = _mm256_permute4x64_epi64(tmp1, _MM_SHUFFLE(2,3,0,1)); \ + D1 = _mm256_permute4x64_epi64(tmp2, _MM_SHUFFLE(2,3,0,1)); \ + } while(0); + +#define UNDIAGONALIZE_1(A0, B0, C0, D0, A1, B1, C1, D1) \ + do { \ + B0 = _mm256_permute4x64_epi64(B0, _MM_SHUFFLE(2, 1, 0, 3)); \ + C0 = _mm256_permute4x64_epi64(C0, _MM_SHUFFLE(1, 0, 3, 2)); \ + D0 = _mm256_permute4x64_epi64(D0, _MM_SHUFFLE(0, 3, 2, 1)); \ + \ + B1 = _mm256_permute4x64_epi64(B1, _MM_SHUFFLE(2, 1, 0, 3)); \ + C1 = _mm256_permute4x64_epi64(C1, _MM_SHUFFLE(1, 0, 3, 2)); \ + D1 = _mm256_permute4x64_epi64(D1, _MM_SHUFFLE(0, 3, 2, 1)); \ + } while((void)0, 0); + +#define UNDIAGONALIZE_2(A0, A1, B0, B1, C0, C1, D0, D1) \ + do { \ + __m256i tmp1 = _mm256_blend_epi32(B0, B1, 0xCC); \ + __m256i tmp2 = _mm256_blend_epi32(B0, B1, 0x33); \ + B0 = _mm256_permute4x64_epi64(tmp1, _MM_SHUFFLE(2,3,0,1)); \ + B1 = _mm256_permute4x64_epi64(tmp2, _MM_SHUFFLE(2,3,0,1)); \ + \ + tmp1 = C0; \ + C0 = C1; \ + C1 = tmp1; \ + \ + tmp1 = _mm256_blend_epi32(D0, D1, 0x33); \ + tmp2 = _mm256_blend_epi32(D0, D1, 0xCC); \ + D0 = _mm256_permute4x64_epi64(tmp1, _MM_SHUFFLE(2,3,0,1)); \ + D1 = _mm256_permute4x64_epi64(tmp2, _MM_SHUFFLE(2,3,0,1)); \ + } while((void)0, 0); + +#define BLAKE2_ROUND_1(A0, A1, B0, B1, C0, C1, D0, D1) \ + do{ \ + G1_AVX2(A0, A1, B0, B1, C0, C1, D0, D1) \ + G2_AVX2(A0, A1, B0, B1, C0, C1, D0, D1) \ + \ + DIAGONALIZE_1(A0, B0, C0, D0, A1, B1, C1, D1) \ + \ + G1_AVX2(A0, A1, B0, B1, C0, C1, D0, D1) \ + G2_AVX2(A0, A1, B0, B1, C0, C1, D0, D1) \ + \ + UNDIAGONALIZE_1(A0, B0, C0, D0, A1, B1, C1, D1) \ + } while((void)0, 0); + +#define BLAKE2_ROUND_2(A0, A1, B0, B1, C0, C1, D0, D1) \ + do{ \ + G1_AVX2(A0, A1, B0, B1, C0, C1, D0, D1) \ + G2_AVX2(A0, A1, B0, B1, C0, C1, D0, D1) \ + \ + DIAGONALIZE_2(A0, A1, B0, B1, C0, C1, D0, D1) \ + \ + G1_AVX2(A0, A1, B0, B1, C0, C1, D0, D1) \ + G2_AVX2(A0, A1, B0, B1, C0, C1, D0, D1) \ + \ + UNDIAGONALIZE_2(A0, A1, B0, B1, C0, C1, D0, D1) \ + } while((void)0, 0); + +#endif /* __AVX2__ */ + +#else /* __AVX512F__ */ + +#include + +#define ror64(x, n) _mm512_ror_epi64((x), (n)) + +static __m512i muladd(__m512i x, __m512i y) +{ + __m512i z = _mm512_mul_epu32(x, y); + return _mm512_add_epi64(_mm512_add_epi64(x, y), _mm512_add_epi64(z, z)); +} + +#define G1(A0, B0, C0, D0, A1, B1, C1, D1) \ + do { \ + A0 = muladd(A0, B0); \ + A1 = muladd(A1, B1); \ +\ + D0 = _mm512_xor_si512(D0, A0); \ + D1 = _mm512_xor_si512(D1, A1); \ +\ + D0 = ror64(D0, 32); \ + D1 = ror64(D1, 32); \ +\ + C0 = muladd(C0, D0); \ + C1 = muladd(C1, D1); \ +\ + B0 = _mm512_xor_si512(B0, C0); \ + B1 = _mm512_xor_si512(B1, C1); \ +\ + B0 = ror64(B0, 24); \ + B1 = ror64(B1, 24); \ + } while ((void)0, 0) + +#define G2(A0, B0, C0, D0, A1, B1, C1, D1) \ + do { \ + A0 = muladd(A0, B0); \ + A1 = muladd(A1, B1); \ +\ + D0 = _mm512_xor_si512(D0, A0); \ + D1 = _mm512_xor_si512(D1, A1); \ +\ + D0 = ror64(D0, 16); \ + D1 = ror64(D1, 16); \ +\ + C0 = muladd(C0, D0); \ + C1 = muladd(C1, D1); \ +\ + B0 = _mm512_xor_si512(B0, C0); \ + B1 = _mm512_xor_si512(B1, C1); \ +\ + B0 = ror64(B0, 63); \ + B1 = ror64(B1, 63); \ + } while ((void)0, 0) + +#define DIAGONALIZE(A0, B0, C0, D0, A1, B1, C1, D1) \ + do { \ + B0 = _mm512_permutex_epi64(B0, _MM_SHUFFLE(0, 3, 2, 1)); \ + B1 = _mm512_permutex_epi64(B1, _MM_SHUFFLE(0, 3, 2, 1)); \ +\ + C0 = _mm512_permutex_epi64(C0, _MM_SHUFFLE(1, 0, 3, 2)); \ + C1 = _mm512_permutex_epi64(C1, _MM_SHUFFLE(1, 0, 3, 2)); \ +\ + D0 = _mm512_permutex_epi64(D0, _MM_SHUFFLE(2, 1, 0, 3)); \ + D1 = _mm512_permutex_epi64(D1, _MM_SHUFFLE(2, 1, 0, 3)); \ + } while ((void)0, 0) + +#define UNDIAGONALIZE(A0, B0, C0, D0, A1, B1, C1, D1) \ + do { \ + B0 = _mm512_permutex_epi64(B0, _MM_SHUFFLE(2, 1, 0, 3)); \ + B1 = _mm512_permutex_epi64(B1, _MM_SHUFFLE(2, 1, 0, 3)); \ +\ + C0 = _mm512_permutex_epi64(C0, _MM_SHUFFLE(1, 0, 3, 2)); \ + C1 = _mm512_permutex_epi64(C1, _MM_SHUFFLE(1, 0, 3, 2)); \ +\ + D0 = _mm512_permutex_epi64(D0, _MM_SHUFFLE(0, 3, 2, 1)); \ + D1 = _mm512_permutex_epi64(D1, _MM_SHUFFLE(0, 3, 2, 1)); \ + } while ((void)0, 0) + +#define BLAKE2_ROUND(A0, B0, C0, D0, A1, B1, C1, D1) \ + do { \ + G1(A0, B0, C0, D0, A1, B1, C1, D1); \ + G2(A0, B0, C0, D0, A1, B1, C1, D1); \ +\ + DIAGONALIZE(A0, B0, C0, D0, A1, B1, C1, D1); \ +\ + G1(A0, B0, C0, D0, A1, B1, C1, D1); \ + G2(A0, B0, C0, D0, A1, B1, C1, D1); \ +\ + UNDIAGONALIZE(A0, B0, C0, D0, A1, B1, C1, D1); \ + } while ((void)0, 0) + +#define SWAP_HALVES(A0, A1) \ + do { \ + __m512i t0, t1; \ + t0 = _mm512_shuffle_i64x2(A0, A1, _MM_SHUFFLE(1, 0, 1, 0)); \ + t1 = _mm512_shuffle_i64x2(A0, A1, _MM_SHUFFLE(3, 2, 3, 2)); \ + A0 = t0; \ + A1 = t1; \ + } while((void)0, 0) + +#define SWAP_QUARTERS(A0, A1) \ + do { \ + SWAP_HALVES(A0, A1); \ + A0 = _mm512_permutexvar_epi64(_mm512_setr_epi64(0, 1, 4, 5, 2, 3, 6, 7), A0); \ + A1 = _mm512_permutexvar_epi64(_mm512_setr_epi64(0, 1, 4, 5, 2, 3, 6, 7), A1); \ + } while((void)0, 0) + +#define UNSWAP_QUARTERS(A0, A1) \ + do { \ + A0 = _mm512_permutexvar_epi64(_mm512_setr_epi64(0, 1, 4, 5, 2, 3, 6, 7), A0); \ + A1 = _mm512_permutexvar_epi64(_mm512_setr_epi64(0, 1, 4, 5, 2, 3, 6, 7), A1); \ + SWAP_HALVES(A0, A1); \ + } while((void)0, 0) + +#define BLAKE2_ROUND_1(A0, C0, B0, D0, A1, C1, B1, D1) \ + do { \ + SWAP_HALVES(A0, B0); \ + SWAP_HALVES(C0, D0); \ + SWAP_HALVES(A1, B1); \ + SWAP_HALVES(C1, D1); \ + BLAKE2_ROUND(A0, B0, C0, D0, A1, B1, C1, D1); \ + SWAP_HALVES(A0, B0); \ + SWAP_HALVES(C0, D0); \ + SWAP_HALVES(A1, B1); \ + SWAP_HALVES(C1, D1); \ + } while ((void)0, 0) + +#define BLAKE2_ROUND_2(A0, A1, B0, B1, C0, C1, D0, D1) \ + do { \ + SWAP_QUARTERS(A0, A1); \ + SWAP_QUARTERS(B0, B1); \ + SWAP_QUARTERS(C0, C1); \ + SWAP_QUARTERS(D0, D1); \ + BLAKE2_ROUND(A0, B0, C0, D0, A1, B1, C1, D1); \ + UNSWAP_QUARTERS(A0, A1); \ + UNSWAP_QUARTERS(B0, B1); \ + UNSWAP_QUARTERS(C0, C1); \ + UNSWAP_QUARTERS(D0, D1); \ + } while ((void)0, 0) + +#endif /* __AVX512F__ */ +#endif /* BLAKE_ROUND_MKA_OPT_H */ diff --git a/deps/phc-winner-argon2-20190702/_hashcat/core.c b/deps/phc-winner-argon2-20190702/_hashcat/core.c new file mode 100644 index 000000000..456a78e6f --- /dev/null +++ b/deps/phc-winner-argon2-20190702/_hashcat/core.c @@ -0,0 +1,320 @@ +/* + * Argon2 reference source code package - reference C implementations + * + * Copyright 2015 + * Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves + * + * You may use this work under the terms of a Creative Commons CC0 1.0 + * License/Waiver or the Apache Public License 2.0, at your option. The terms of + * these licenses can be found at: + * + * - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0 + * - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0 + * + * You should have received a copy of both of these licenses along with this + * software. If not, they may be obtained at the above URLs. + */ + +/*For memory wiping*/ +#ifdef _MSC_VER +#include +#include /* For SecureZeroMemory */ +#endif +#if defined __STDC_LIB_EXT1__ +#define __STDC_WANT_LIB_EXT1__ 1 +#endif +#define VC_GE_2005(version) (version >= 1400) + +/* for explicit_bzero() on glibc */ +#define _DEFAULT_SOURCE + +#include +#include +#include + +#include "core.h" + +#include "blake2/blake2.h" +#include "blake2/blake2-impl.h" + + + +#if defined(__clang__) +#if __has_attribute(optnone) +#define NOT_OPTIMIZED __attribute__((optnone)) +#endif +#elif defined(__GNUC__) +#define GCC_VERSION \ + (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) +#if GCC_VERSION >= 40400 +#define NOT_OPTIMIZED __attribute__((optimize("O0"))) +#endif +#endif +#ifndef NOT_OPTIMIZED +#define NOT_OPTIMIZED +#endif + +/***************Instance and Position constructors**********/ +void init_block_value(block *b, uint8_t in) { memset(b->v, in, sizeof(b->v)); } + +void copy_block(block *dst, const block *src) { + memcpy(dst->v, src->v, sizeof(uint64_t) * ARGON2_QWORDS_IN_BLOCK); +} + +void xor_block(block *dst, const block *src) { + int i; + for (i = 0; i < ARGON2_QWORDS_IN_BLOCK; ++i) { + dst->v[i] ^= src->v[i]; + } +} + +static void load_block(block *dst, const void *input) { + unsigned i; + for (i = 0; i < ARGON2_QWORDS_IN_BLOCK; ++i) { + dst->v[i] = load64((const uint8_t *)input + i * sizeof(dst->v[i])); + } +} + +static void store_block(void *output, const block *src) { + unsigned i; + for (i = 0; i < ARGON2_QWORDS_IN_BLOCK; ++i) { + store64((uint8_t *)output + i * sizeof(src->v[i]), src->v[i]); + } +} + +/***************Memory functions*****************/ + + + +void finalize(const argon2_context *context, argon2_instance_t *instance) { + if (context != NULL && instance != NULL) { + block blockhash; + uint32_t l; + + copy_block(&blockhash, instance->memory + instance->lane_length - 1); + + /* XOR the last blocks */ + for (l = 1; l < instance->lanes; ++l) { + uint32_t last_block_in_lane = + l * instance->lane_length + (instance->lane_length - 1); + xor_block(&blockhash, instance->memory + last_block_in_lane); + } + + /* Hash the result */ + { + uint8_t blockhash_bytes[ARGON2_BLOCK_SIZE]; + store_block(blockhash_bytes, &blockhash); + blake2b_long(context->out, context->outlen, blockhash_bytes, + ARGON2_BLOCK_SIZE); + + } + + + } +} + +uint32_t index_alpha(const argon2_instance_t *instance, + const argon2_position_t *position, uint32_t pseudo_rand, + int same_lane) { + /* + * Pass 0: + * This lane : all already finished segments plus already constructed + * blocks in this segment + * Other lanes : all already finished segments + * Pass 1+: + * This lane : (SYNC_POINTS - 1) last segments plus already constructed + * blocks in this segment + * Other lanes : (SYNC_POINTS - 1) last segments + */ + uint32_t reference_area_size; + uint64_t relative_position; + uint32_t start_position, absolute_position; + + if (0 == position->pass) { + /* First pass */ + if (0 == position->slice) { + /* First slice */ + reference_area_size = + position->index - 1; /* all but the previous */ + } else { + if (same_lane) { + /* The same lane => add current segment */ + reference_area_size = + position->slice * instance->segment_length + + position->index - 1; + } else { + reference_area_size = + position->slice * instance->segment_length + + ((position->index == 0) ? (-1) : 0); + } + } + } else { + /* Second pass */ + if (same_lane) { + reference_area_size = instance->lane_length - + instance->segment_length + position->index - + 1; + } else { + reference_area_size = instance->lane_length - + instance->segment_length + + ((position->index == 0) ? (-1) : 0); + } + } + + /* 1.2.4. Mapping pseudo_rand to 0.. and produce + * relative position */ + relative_position = pseudo_rand; + relative_position = relative_position * relative_position >> 32; + relative_position = reference_area_size - 1 - + (reference_area_size * relative_position >> 32); + + /* 1.2.5 Computing starting position */ + start_position = 0; + + if (0 != position->pass) { + start_position = (position->slice == ARGON2_SYNC_POINTS - 1) + ? 0 + : (position->slice + 1) * instance->segment_length; + } + + /* 1.2.6. Computing absolute position */ + absolute_position = (start_position + relative_position) % + instance->lane_length; /* absolute position */ + return absolute_position; +} + +/* Single-threaded version for p=1 case */ +int fill_memory_blocks(argon2_instance_t *instance) { + uint32_t r, s, l; + + for (r = 0; r < instance->passes; ++r) { + for (s = 0; s < ARGON2_SYNC_POINTS; ++s) { + for (l = 0; l < instance->lanes; ++l) { + argon2_position_t position = {r, l, (uint8_t)s, 0}; + fill_segment(instance, position); + } + } + + } + return ARGON2_OK; +} + + + +void fill_first_blocks(uint8_t *blockhash, const argon2_instance_t *instance) { + uint32_t l; + /* Make the first and second block in each lane as G(H0||0||i) or + G(H0||1||i) */ + uint8_t blockhash_bytes[ARGON2_BLOCK_SIZE]; + for (l = 0; l < instance->lanes; ++l) { + + store32(blockhash + ARGON2_PREHASH_DIGEST_LENGTH, 0); + store32(blockhash + ARGON2_PREHASH_DIGEST_LENGTH + 4, l); + blake2b_long(blockhash_bytes, ARGON2_BLOCK_SIZE, blockhash, + ARGON2_PREHASH_SEED_LENGTH); + load_block(&instance->memory[l * instance->lane_length + 0], + blockhash_bytes); + + store32(blockhash + ARGON2_PREHASH_DIGEST_LENGTH, 1); + blake2b_long(blockhash_bytes, ARGON2_BLOCK_SIZE, blockhash, + ARGON2_PREHASH_SEED_LENGTH); + load_block(&instance->memory[l * instance->lane_length + 1], + blockhash_bytes); + } + +} + +void initial_hash(uint8_t *blockhash, argon2_context *context, + argon2_type type) { + blake2b_state BlakeHash; + uint8_t value[sizeof(uint32_t)]; + + if (NULL == context || NULL == blockhash) { + return; + } + + blake2b_init(&BlakeHash, ARGON2_PREHASH_DIGEST_LENGTH); + + store32(&value, context->lanes); + blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value)); + + store32(&value, context->outlen); + blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value)); + + store32(&value, context->m_cost); + blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value)); + + store32(&value, context->t_cost); + blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value)); + + store32(&value, context->version); + blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value)); + + store32(&value, (uint32_t)type); + blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value)); + + store32(&value, context->pwdlen); + blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value)); + + if (context->pwd != NULL) { + blake2b_update(&BlakeHash, (const uint8_t *)context->pwd, + context->pwdlen); + + + } + + store32(&value, context->saltlen); + blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value)); + + if (context->salt != NULL) { + blake2b_update(&BlakeHash, (const uint8_t *)context->salt, + context->saltlen); + } + + store32(&value, context->secretlen); + blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value)); + + if (context->secret != NULL) { + blake2b_update(&BlakeHash, (const uint8_t *)context->secret, + context->secretlen); + + + } + + store32(&value, context->adlen); + blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value)); + + if (context->ad != NULL) { + blake2b_update(&BlakeHash, (const uint8_t *)context->ad, + context->adlen); + } + + blake2b_final(&BlakeHash, blockhash, ARGON2_PREHASH_DIGEST_LENGTH); +} + +int initialize(argon2_instance_t *instance, argon2_context *context) { + uint8_t blockhash[ARGON2_PREHASH_SEED_LENGTH]; + + + + instance->context_ptr = context; + + /* 1. Memory allocation */ + + instance->memory = context->memory; + + + /* 2. Initial hashing */ + /* H_0 + 8 extra bytes to produce the first blocks */ + /* uint8_t blockhash[ARGON2_PREHASH_SEED_LENGTH]; */ + /* Hashing all inputs */ + initial_hash(blockhash, context, instance->type); + /* Zeroing 8 extra bytes */ + + + /* 3. Creating first blocks, we always have at least two blocks in a slice + */ + fill_first_blocks(blockhash, instance); + + return ARGON2_OK; +} diff --git a/deps/phc-winner-argon2-20190702/_hashcat/core.h b/deps/phc-winner-argon2-20190702/_hashcat/core.h new file mode 100644 index 000000000..78000ba9e --- /dev/null +++ b/deps/phc-winner-argon2-20190702/_hashcat/core.h @@ -0,0 +1,228 @@ +/* + * Argon2 reference source code package - reference C implementations + * + * Copyright 2015 + * Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves + * + * You may use this work under the terms of a Creative Commons CC0 1.0 + * License/Waiver or the Apache Public License 2.0, at your option. The terms of + * these licenses can be found at: + * + * - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0 + * - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0 + * + * You should have received a copy of both of these licenses along with this + * software. If not, they may be obtained at the above URLs. + */ + +#ifndef ARGON2_CORE_H +#define ARGON2_CORE_H + +#include "argon2.h" + +#define CONST_CAST(x) (x)(uintptr_t) + +/**********************Argon2 internal constants*******************************/ + +enum argon2_core_constants { + /* Memory block size in bytes */ + ARGON2_BLOCK_SIZE = 1024, + ARGON2_QWORDS_IN_BLOCK = ARGON2_BLOCK_SIZE / 8, + ARGON2_OWORDS_IN_BLOCK = ARGON2_BLOCK_SIZE / 16, + ARGON2_HWORDS_IN_BLOCK = ARGON2_BLOCK_SIZE / 32, + ARGON2_512BIT_WORDS_IN_BLOCK = ARGON2_BLOCK_SIZE / 64, + + /* Number of pseudo-random values generated by one call to Blake in Argon2i + to + generate reference block positions */ + ARGON2_ADDRESSES_IN_BLOCK = 128, + + /* Pre-hashing digest length and its extension*/ + ARGON2_PREHASH_DIGEST_LENGTH = 64, + ARGON2_PREHASH_SEED_LENGTH = 72 +}; + +/*************************Argon2 internal data types***********************/ + +/* + * Structure for the (1KB) memory block implemented as 128 64-bit words. + * Memory blocks can be copied, XORed. Internal words can be accessed by [] (no + * bounds checking). + */ +typedef struct block_ { uint64_t v[ARGON2_QWORDS_IN_BLOCK]; } block; + +/*****************Functions that work with the block******************/ + +/* Initialize each byte of the block with @in */ +void init_block_value(block *b, uint8_t in); + +/* Copy block @src to block @dst */ +void copy_block(block *dst, const block *src); + +/* XOR @src onto @dst bytewise */ +void xor_block(block *dst, const block *src); + +/* + * Argon2 instance: memory pointer, number of passes, amount of memory, type, + * and derived values. + * Used to evaluate the number and location of blocks to construct in each + * thread + */ +typedef struct Argon2_instance_t { + block *memory; /* Memory pointer */ + uint32_t version; + uint32_t passes; /* Number of passes */ + uint32_t memory_blocks; /* Number of blocks in memory */ + uint32_t segment_length; + uint32_t lane_length; + uint32_t lanes; + uint32_t threads; + argon2_type type; + int print_internals; /* whether to print the memory blocks */ + argon2_context *context_ptr; /* points back to original context */ +} argon2_instance_t; + +/* + * Argon2 position: where we construct the block right now. Used to distribute + * work between threads. + */ +typedef struct Argon2_position_t { + uint32_t pass; + uint32_t lane; + uint8_t slice; + uint32_t index; +} argon2_position_t; + +/*Struct that holds the inputs for thread handling FillSegment*/ +typedef struct Argon2_thread_data { + argon2_instance_t *instance_ptr; + argon2_position_t pos; +} argon2_thread_data; + +/*************************Argon2 core functions********************************/ + +/* Allocates memory to the given pointer, uses the appropriate allocator as + * specified in the context. Total allocated memory is num*size. + * @param context argon2_context which specifies the allocator + * @param memory pointer to the pointer to the memory + * @param size the size in bytes for each element to be allocated + * @param num the number of elements to be allocated + * @return ARGON2_OK if @memory is a valid pointer and memory is allocated + */ +int allocate_memory(const argon2_context *context, uint8_t **memory, + size_t num, size_t size); + +/* + * Frees memory at the given pointer, uses the appropriate deallocator as + * specified in the context. Also cleans the memory using clear_internal_memory. + * @param context argon2_context which specifies the deallocator + * @param memory pointer to buffer to be freed + * @param size the size in bytes for each element to be deallocated + * @param num the number of elements to be deallocated + */ +void free_memory(const argon2_context *context, uint8_t *memory, + size_t num, size_t size); + +/* Function that securely cleans the memory. This ignores any flags set + * regarding clearing memory. Usually one just calls clear_internal_memory. + * @param mem Pointer to the memory + * @param s Memory size in bytes + */ +void secure_wipe_memory(void *v, size_t n); + +/* Function that securely clears the memory if FLAG_clear_internal_memory is + * set. If the flag isn't set, this function does nothing. + * @param mem Pointer to the memory + * @param s Memory size in bytes + */ +void clear_internal_memory(void *v, size_t n); + +/* + * Computes absolute position of reference block in the lane following a skewed + * distribution and using a pseudo-random value as input + * @param instance Pointer to the current instance + * @param position Pointer to the current position + * @param pseudo_rand 32-bit pseudo-random value used to determine the position + * @param same_lane Indicates if the block will be taken from the current lane. + * If so we can reference the current segment + * @pre All pointers must be valid + */ +uint32_t index_alpha(const argon2_instance_t *instance, + const argon2_position_t *position, uint32_t pseudo_rand, + int same_lane); + +/* + * Function that validates all inputs against predefined restrictions and return + * an error code + * @param context Pointer to current Argon2 context + * @return ARGON2_OK if everything is all right, otherwise one of error codes + * (all defined in + */ +int validate_inputs(const argon2_context *context); + +/* + * Hashes all the inputs into @a blockhash[PREHASH_DIGEST_LENGTH], clears + * password and secret if needed + * @param context Pointer to the Argon2 internal structure containing memory + * pointer, and parameters for time and space requirements. + * @param blockhash Buffer for pre-hashing digest + * @param type Argon2 type + * @pre @a blockhash must have at least @a PREHASH_DIGEST_LENGTH bytes + * allocated + */ +void initial_hash(uint8_t *blockhash, argon2_context *context, + argon2_type type); + +/* + * Function creates first 2 blocks per lane + * @param instance Pointer to the current instance + * @param blockhash Pointer to the pre-hashing digest + * @pre blockhash must point to @a PREHASH_SEED_LENGTH allocated values + */ +void fill_first_blocks(uint8_t *blockhash, const argon2_instance_t *instance); + +/* + * Function allocates memory, hashes the inputs with Blake, and creates first + * two blocks. Returns the pointer to the main memory with 2 blocks per lane + * initialized + * @param context Pointer to the Argon2 internal structure containing memory + * pointer, and parameters for time and space requirements. + * @param instance Current Argon2 instance + * @return Zero if successful, -1 if memory failed to allocate. @context->state + * will be modified if successful. + */ +int initialize(argon2_instance_t *instance, argon2_context *context); + +/* + * XORing the last block of each lane, hashing it, making the tag. Deallocates + * the memory. + * @param context Pointer to current Argon2 context (use only the out parameters + * from it) + * @param instance Pointer to current instance of Argon2 + * @pre instance->state must point to necessary amount of memory + * @pre context->out must point to outlen bytes of memory + * @pre if context->free_cbk is not NULL, it should point to a function that + * deallocates memory + */ +void finalize(const argon2_context *context, argon2_instance_t *instance); + +/* + * Function that fills the segment using previous segments also from other + * threads + * @param context current context + * @param instance Pointer to the current instance + * @param position Current position + * @pre all block pointers must be valid + */ +void fill_segment(const argon2_instance_t *instance, + argon2_position_t position); + +/* + * Function that fills the entire memory t_cost times based on the first two + * blocks in each lane + * @param instance Pointer to the current instance + * @return ARGON2_OK if successful, @context->state + */ +int fill_memory_blocks(argon2_instance_t *instance); + +#endif diff --git a/deps/phc-winner-argon2-20190702/_hashcat/opt.c b/deps/phc-winner-argon2-20190702/_hashcat/opt.c new file mode 100644 index 000000000..f6c20528e --- /dev/null +++ b/deps/phc-winner-argon2-20190702/_hashcat/opt.c @@ -0,0 +1,283 @@ +/* + * Argon2 reference source code package - reference C implementations + * + * Copyright 2015 + * Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves + * + * You may use this work under the terms of a Creative Commons CC0 1.0 + * License/Waiver or the Apache Public License 2.0, at your option. The terms of + * these licenses can be found at: + * + * - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0 + * - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0 + * + * You should have received a copy of both of these licenses along with this + * software. If not, they may be obtained at the above URLs. + */ + +#include +#include +#include + +#include "argon2.h" +#include "core.h" + +#include "blake2/blake2.h" +#include "blake2/blamka-round-opt.h" + +/* + * Function fills a new memory block and optionally XORs the old block over the new one. + * Memory must be initialized. + * @param state Pointer to the just produced block. Content will be updated(!) + * @param ref_block Pointer to the reference block + * @param next_block Pointer to the block to be XORed over. May coincide with @ref_block + * @param with_xor Whether to XOR into the new block (1) or just overwrite (0) + * @pre all block pointers must be valid + */ +#if defined(__AVX512F__) +static void fill_block(__m512i *state, const block *ref_block, + block *next_block, int with_xor) { + __m512i block_XY[ARGON2_512BIT_WORDS_IN_BLOCK]; + unsigned int i; + + if (with_xor) { + for (i = 0; i < ARGON2_512BIT_WORDS_IN_BLOCK; i++) { + state[i] = _mm512_xor_si512( + state[i], _mm512_loadu_si512((const __m512i *)ref_block->v + i)); + block_XY[i] = _mm512_xor_si512( + state[i], _mm512_loadu_si512((const __m512i *)next_block->v + i)); + } + } else { + for (i = 0; i < ARGON2_512BIT_WORDS_IN_BLOCK; i++) { + block_XY[i] = state[i] = _mm512_xor_si512( + state[i], _mm512_loadu_si512((const __m512i *)ref_block->v + i)); + } + } + + for (i = 0; i < 2; ++i) { + BLAKE2_ROUND_1( + state[8 * i + 0], state[8 * i + 1], state[8 * i + 2], state[8 * i + 3], + state[8 * i + 4], state[8 * i + 5], state[8 * i + 6], state[8 * i + 7]); + } + + for (i = 0; i < 2; ++i) { + BLAKE2_ROUND_2( + state[2 * 0 + i], state[2 * 1 + i], state[2 * 2 + i], state[2 * 3 + i], + state[2 * 4 + i], state[2 * 5 + i], state[2 * 6 + i], state[2 * 7 + i]); + } + + for (i = 0; i < ARGON2_512BIT_WORDS_IN_BLOCK; i++) { + state[i] = _mm512_xor_si512(state[i], block_XY[i]); + _mm512_storeu_si512((__m512i *)next_block->v + i, state[i]); + } +} +#elif defined(__AVX2__) +static void fill_block(__m256i *state, const block *ref_block, + block *next_block, int with_xor) { + __m256i block_XY[ARGON2_HWORDS_IN_BLOCK]; + unsigned int i; + + if (with_xor) { + for (i = 0; i < ARGON2_HWORDS_IN_BLOCK; i++) { + state[i] = _mm256_xor_si256( + state[i], _mm256_loadu_si256((const __m256i *)ref_block->v + i)); + block_XY[i] = _mm256_xor_si256( + state[i], _mm256_loadu_si256((const __m256i *)next_block->v + i)); + } + } else { + for (i = 0; i < ARGON2_HWORDS_IN_BLOCK; i++) { + block_XY[i] = state[i] = _mm256_xor_si256( + state[i], _mm256_loadu_si256((const __m256i *)ref_block->v + i)); + } + } + + for (i = 0; i < 4; ++i) { + BLAKE2_ROUND_1(state[8 * i + 0], state[8 * i + 4], state[8 * i + 1], state[8 * i + 5], + state[8 * i + 2], state[8 * i + 6], state[8 * i + 3], state[8 * i + 7]); + } + + for (i = 0; i < 4; ++i) { + BLAKE2_ROUND_2(state[ 0 + i], state[ 4 + i], state[ 8 + i], state[12 + i], + state[16 + i], state[20 + i], state[24 + i], state[28 + i]); + } + + for (i = 0; i < ARGON2_HWORDS_IN_BLOCK; i++) { + state[i] = _mm256_xor_si256(state[i], block_XY[i]); + _mm256_storeu_si256((__m256i *)next_block->v + i, state[i]); + } +} +#else +static void fill_block(__m128i *state, const block *ref_block, + block *next_block, int with_xor) { + __m128i block_XY[ARGON2_OWORDS_IN_BLOCK]; + unsigned int i; + + if (with_xor) { + for (i = 0; i < ARGON2_OWORDS_IN_BLOCK; i++) { + state[i] = _mm_xor_si128( + state[i], _mm_loadu_si128((const __m128i *)ref_block->v + i)); + block_XY[i] = _mm_xor_si128( + state[i], _mm_loadu_si128((const __m128i *)next_block->v + i)); + } + } else { + for (i = 0; i < ARGON2_OWORDS_IN_BLOCK; i++) { + block_XY[i] = state[i] = _mm_xor_si128( + state[i], _mm_loadu_si128((const __m128i *)ref_block->v + i)); + } + } + + for (i = 0; i < 8; ++i) { + BLAKE2_ROUND(state[8 * i + 0], state[8 * i + 1], state[8 * i + 2], + state[8 * i + 3], state[8 * i + 4], state[8 * i + 5], + state[8 * i + 6], state[8 * i + 7]); + } + + for (i = 0; i < 8; ++i) { + BLAKE2_ROUND(state[8 * 0 + i], state[8 * 1 + i], state[8 * 2 + i], + state[8 * 3 + i], state[8 * 4 + i], state[8 * 5 + i], + state[8 * 6 + i], state[8 * 7 + i]); + } + + for (i = 0; i < ARGON2_OWORDS_IN_BLOCK; i++) { + state[i] = _mm_xor_si128(state[i], block_XY[i]); + _mm_storeu_si128((__m128i *)next_block->v + i, state[i]); + } +} +#endif + +static void next_addresses(block *address_block, block *input_block) { + /*Temporary zero-initialized blocks*/ +#if defined(__AVX512F__) + __m512i zero_block[ARGON2_512BIT_WORDS_IN_BLOCK]; + __m512i zero2_block[ARGON2_512BIT_WORDS_IN_BLOCK]; +#elif defined(__AVX2__) + __m256i zero_block[ARGON2_HWORDS_IN_BLOCK]; + __m256i zero2_block[ARGON2_HWORDS_IN_BLOCK]; +#else + __m128i zero_block[ARGON2_OWORDS_IN_BLOCK]; + __m128i zero2_block[ARGON2_OWORDS_IN_BLOCK]; +#endif + + memset(zero_block, 0, sizeof(zero_block)); + memset(zero2_block, 0, sizeof(zero2_block)); + + /*Increasing index counter*/ + input_block->v[6]++; + + /*First iteration of G*/ + fill_block(zero_block, input_block, address_block, 0); + + /*Second iteration of G*/ + fill_block(zero2_block, address_block, address_block, 0); +} + +void fill_segment(const argon2_instance_t *instance, + argon2_position_t position) { + block *ref_block = NULL, *curr_block = NULL; + block address_block, input_block; + uint64_t pseudo_rand, ref_index, ref_lane; + uint32_t prev_offset, curr_offset; + uint32_t starting_index, i; +#if defined(__AVX512F__) + __m512i state[ARGON2_512BIT_WORDS_IN_BLOCK]; +#elif defined(__AVX2__) + __m256i state[ARGON2_HWORDS_IN_BLOCK]; +#else + __m128i state[ARGON2_OWORDS_IN_BLOCK]; +#endif + int data_independent_addressing; + + if (instance == NULL) { + return; + } + + data_independent_addressing = + (instance->type == Argon2_i) || + (instance->type == Argon2_id && (position.pass == 0) && + (position.slice < ARGON2_SYNC_POINTS / 2)); + + if (data_independent_addressing) { + init_block_value(&input_block, 0); + + input_block.v[0] = position.pass; + input_block.v[1] = position.lane; + input_block.v[2] = position.slice; + input_block.v[3] = instance->memory_blocks; + input_block.v[4] = instance->passes; + input_block.v[5] = instance->type; + } + + starting_index = 0; + + if ((0 == position.pass) && (0 == position.slice)) { + starting_index = 2; /* we have already generated the first two blocks */ + + /* Don't forget to generate the first block of addresses: */ + if (data_independent_addressing) { + next_addresses(&address_block, &input_block); + } + } + + /* Offset of the current block */ + curr_offset = position.lane * instance->lane_length + + position.slice * instance->segment_length + starting_index; + + if (0 == curr_offset % instance->lane_length) { + /* Last block in this lane */ + prev_offset = curr_offset + instance->lane_length - 1; + } else { + /* Previous block */ + prev_offset = curr_offset - 1; + } + + memcpy(state, ((instance->memory + prev_offset)->v), ARGON2_BLOCK_SIZE); + + for (i = starting_index; i < instance->segment_length; + ++i, ++curr_offset, ++prev_offset) { + /*1.1 Rotating prev_offset if needed */ + if (curr_offset % instance->lane_length == 1) { + prev_offset = curr_offset - 1; + } + + /* 1.2 Computing the index of the reference block */ + /* 1.2.1 Taking pseudo-random value from the previous block */ + if (data_independent_addressing) { + if (i % ARGON2_ADDRESSES_IN_BLOCK == 0) { + next_addresses(&address_block, &input_block); + } + pseudo_rand = address_block.v[i % ARGON2_ADDRESSES_IN_BLOCK]; + } else { + pseudo_rand = instance->memory[prev_offset].v[0]; + } + + /* 1.2.2 Computing the lane of the reference block */ + ref_lane = ((pseudo_rand >> 32)) % instance->lanes; + + if ((position.pass == 0) && (position.slice == 0)) { + /* Can not reference other lanes yet */ + ref_lane = position.lane; + } + + /* 1.2.3 Computing the number of possible reference block within the + * lane. + */ + position.index = i; + ref_index = index_alpha(instance, &position, pseudo_rand & 0xFFFFFFFF, + ref_lane == position.lane); + + /* 2 Creating a new block */ + ref_block = + instance->memory + instance->lane_length * ref_lane + ref_index; + curr_block = instance->memory + curr_offset; + if (ARGON2_VERSION_10 == instance->version) { + /* version 1.2.1 and earlier: overwrite, not XOR */ + fill_block(state, ref_block, curr_block, 0); + } else { + if(0 == position.pass) { + fill_block(state, ref_block, curr_block, 0); + } else { + fill_block(state, ref_block, curr_block, 1); + } + } + } +} diff --git a/deps/phc-winner-argon2-20190702/argon2-specs.pdf b/deps/phc-winner-argon2-20190702/argon2-specs.pdf new file mode 100644 index 000000000..220b3f8df --- /dev/null +++ b/deps/phc-winner-argon2-20190702/argon2-specs.pdf @@ -0,0 +1,1366 @@ +Argon2: the memory-hard function for password hashing and other + applications + + Designers: Alex Biryukov, Daniel Dinu, and Dmitry Khovratovich + University of Luxembourg, Luxembourg + + alex.biryukov@uni.lu, dumitru-daniel.dinu@uni.lu, khovratovich@gmail.com + + https://www.cryptolux.org/index.php/Argon2 + https://github.com/P-H-C/phc-winner-argon2 + + https://github.com/khovratovich/Argon2 + + Version 1.3 of Argon2: PHC release + March 24, 2017 + +Contents + +1 Introduction 2 + +2 Definitions 3 + +2.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 + +2.2 Model for memory-hard functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 + +3 Specification of Argon2 4 + +3.1 Inputs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 + +3.2 Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 + +3.3 Indexing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 + +3.4 Compression function G . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 + +4 Features 8 + +4.1 Available features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 + +4.2 Possible future extensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 + +5 Security analysis 9 + +5.1 Ranking tradeoff attack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 + +5.2 Memory optimization attack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 + +5.3 Attack on iterative compression function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 + +5.4 Security of Argon2 to generic attacks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 + +5.5 Security of Argon2 to ranking tradeoff attacks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 + +5.6 Security of Argon2i to generic tradeoff attacks on random graphs . . . . . . . . . . . . . . . . . . 12 + +5.7 Summary of tradeoff attacks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 + +6 Design rationale 12 + +6.1 Indexing function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 + +6.2 Implementing parallelism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 + +6.3 Compression function design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 + +6.3.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 + +6.3.2 Design criteria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 + +6.4 User-controlled parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 + +7 Performance 16 + +7.1 x86 architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 + +8 Applications 16 + + 1 + 9 Recommended parameters 17 + +10 Conclusion 17 + +A Permutation P 18 + +B Additional functionality 19 + +C Change log 20 + +C.1 v.1.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 + +C.2 v1.2.1 – February 1st, 2016 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 + +C.3 v1.2 – 21th June, 2015 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 + +C.4 v1.1 – 6th February, 2015 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 + +1 Introduction + +Passwords, despite all their drawbacks, remain the primary form of authentication on various web-services. +Passwords are usually stored in a hashed form in a server’s database. These databases are quite often captured +by the adversaries, who then apply dictionary attacks since passwords tend to have low entropy. Protocol +designers use a number of tricks to mitigate these issues. Starting from the late 70’s, a password is hashed +together with a random salt value to prevent detection of identical passwords across different users and services. +The hash function computations, which became faster and faster due to Moore’s law have been called multiple +times to increase the cost of password trial for the attacker. + + In the meanwhile, the password crackers migrated to new architectures, such as FPGAs, multiple-core GPUs +and dedicated ASIC modules, where the amortized cost of a multiple-iterated hash function is much lower. It +was quickly noted that these new environments are great when the computation is almost memoryless, but they +experience difficulties when operating on a large amount of memory. The defenders responded by designing +memory-hard functions, which require a large amount of memory to be computed, and impose computational +penalties if less memory is used. The password hashing scheme scrypt [15] is an instance of such function. + + Memory-hard schemes also have other applications. They can be used for key derivation from low-entropy +sources. Memory-hard schemes are also welcome in cryptocurrency designs [13] if a creator wants to demotivate +the use of GPUs and ASICs for mining and promote the use of standard desktops. + +Problems of existing schemes A trivial solution for password hashing is a keyed hash function such as +HMAC. If the protocol designer prefers hashing without secret keys to avoid all the problems with key generation, +storage, and update, then he has few alternatives: the generic mode PBKDF2, the Blowfish-based bcrypt, and +scrypt. Among those, only scrypt aims for high memory, but the existence of a trivial time-memory tradeoff [8] +allows compact implementations with the same energy cost. + + Design of a memory-hard function proved to be a tough problem. Since early 80’s it has been known +that many cryptographic problems that seemingly require large memory actually allow for a time-memory +tradeoff [11], where the adversary can trade memory for time and do his job on fast hardware with low memory. +In application to password-hashing schemes, this means that the password crackers can still be implemented on +a dedicated hardware even though at some additional cost. + + Another problem with the existing schemes is their complexity. The same scrypt calls a stack of subproce- +dures, whose design rationale has not been fully motivated (e.g, scrypt calls SMix, which calls ROMix, which +calls BlockMix, which calls Salsa20/8 etc.). It is hard to analyze and, moreover, hard to achieve confidence. +Finally, it is not flexible in separating time and memory costs. At the same time, the story of cryptographic +competitions [14, 17] has demonstrated that the most secure designs come with simplicity, where every element +is well motivated and a cryptanalyst has as few entry points as possible. + + The Password Hashing Competition, which started in 2014, highlighted the following problems: + + • Should the memory addressing (indexing functions) be input-independent or input-dependent, or hybrid? + The first type of schemes, where the memory read location are known in advance, is immediately vulnerable + to time-space tradeoff attacks, since an adversary can precompute the missing block by the time it is + needed [4]. In turn, the input-dependent schemes are vulnerable to side-channel attacks [16], as the + timing information allows for much faster password search. + + • Is it better to fill more memory but suffer from time-space tradeoffs, or make more passes over the memory + to be more robust? This question was quite difficult to answer due to absence of generic tradeoff tools, + which would analyze the security against tradeoff attacks, and the absence of unified metric to measure + adversary’s costs. + + 2 + • How should the input-independent addresses be computed? Several seemingly secure options have been + attacked [4]. + + • How large a single memory block should be? Reading smaller random-placed blocks is slower (in cycles + per byte) due to the spacial locality principle of the CPU cache. In turn, larger blocks are difficult to + process due to the limited number of long registers. + + • If the block is large, how to choose the internal compression function? Should it be cryptographically + secure or more lightweight, providing only basic mixing of the inputs? Many candidates simply proposed + an iterative construction and argued against cryptographically strong transformations. + + • How to exploit multiple cores of modern CPUs, when they are available? Parallelizing calls to the hashing + function without any interaction is subject to simple tradeoff attacks. + +Our solution We offer a hashing scheme called Argon2. Argon2 summarizes the state of the art in the design +of memory-hard functions. It is a streamlined and simple design. It aims at the highest memory filling rate +and effective use of multiple computing units, while still providing defense against tradeoff attacks. Argon2 +is optimized for the x86 architecture and exploits the cache and memory organization of the recent Intel and +AMD processors. Argon2 has two variants: Argon2d and Argon2i. Argon2d is faster and uses data-depending +memory access, which makes it suitable for cryptocurrencies and applications with no threats from side-channel +timing attacks. Argon2i uses data-independent memory access, which is preferred for password hashing and +password-based key derivation. Argon2i is slower as it makes more passes over the memory to protect from +tradeoff attacks. + + We recommend Argon2 for the applications that aim for high performance. Both versions of Argon2 allow +to fill 1 GB of RAM in a fraction of second, and smaller amounts even faster. It scales easily to the arbitrary +number of parallel computing units. Its design is also optimized for clarity to ease analysis and implementation. + + Our scheme provides more features and better tradeoff resilience than pre-PHC designs and equals in per- +formance with the PHC finalists [5]. + +2 Definitions + +2.1 Motivation + +We aim to maximize the cost of password cracking on ASICs. There can be different approaches to measure +this cost, but we turn to one of the most popular – the time-area product [3, 18]. We assume that the password +P is hashed with salt S but without secret keys, and the hashes may leak to the adversaries together with salts: + + Tag ← H(P, S); + Cracker ← {(Tagi, Si)}. + +In the case of the password hashing, we suppose that the defender allocates certain amount of time (e.g., 1 + +second) per password and a certain number of CPU cores (e.g., 4 cores). Then he hashes the password using the + +maximum amount M of memory. This memory size translates to certain ASIC area A. The running ASIC time + +T is determined by the length of the longest computational chain and by the ASIC memory latency. Therefore, + +we maximize the value AT . The other usecases follow a similar procedure. + +Suppose that an ASIC designer that wants to reduce the memory and thus the area wants to compute H + +using αM memory only for some α < 1. Using some tradeoff specific to H, he has to spend C(α) times as much + +computation and his running time increases by at least the factor D(α). Therefore, the maximum possible gain + +E in the time-area product is + + Emax = max 1 . + αD(α) + α + +The hash function is called memory-hard if D(α) > 1/α as α → 0. Clearly, in this case the time-area product +does not decrease. Moreover, the following aspects may further increase it: + +• Computing cores needed to implement the C(α) penalty may occupy significant area. + +• If the tradeoff requires significant communication between the computing cores, the memory bandwidth + limits may impose additional restrictions on the running time. + + In the following text, we will not attempt to estimate time and area with large precision. However, an +interested reader may use the following implementations as reference: + + • The 50-nm DRAM implementation [9] takes 550 mm2 per GByte; + + 3 + • The Blake2b implementation in the 65-nm process should take about 0.1 mm2 (using Blake-512 imple- + mentation in [10]); + +• The maximum memory bandwidth achieved by modern GPUs is around 400 GB/sec. + +2.2 Model for memory-hard functions + +The memory-hard functions that we explore use the following mode of operation. The memory array B[] is +filled with the compression function G: + +B[0] = H(P, S); + +for j from 1 to t (1) + +B[j] = G B[φ1(j)], B[φ2(j)], · · · , B[φk(j)] , + +where φi() are some indexing functions. + We distinguish two types of indexing functions: + +• Independent of the password and salt, but possibly dependent on other public parameters (thus called + data-independent). The addresses can be calculated by the memory-saving adversaries. We suppose that + the dedicated hardware can handle parallel memory access, so that the cracker can prefetch the data + from the memory. Moreover, if she implements a time-space tradeoff, then the missing blocks can be also + precomputed without losing time. Let the single G core occupy the area equivalent to the β of the entire + memory. Then if we use αM memory, then the gain in the time-area product is + + E (α) = α + 1 . + C (α)β + +• Dependent on the password (data-dependent), in our case: φ(j) = g(B[j − 1]). This choice prevents the + adversary from prefetching and precomputing missing data. The adversary figures out what he has to + recompute only at the time the element is needed. If an element is recomputed as a tree of F calls of + average depth D, then the total processing time is multiplied by D. The gain in the time-area product is + +E (α) = (α + 1 . + C (α)β )D(α) + + The maximum bandwidth Bwmax is a hypothetical upper bound on the memory bandwidth on the adver- +sary’s architecture. Suppose that for each call to G an adversary has to load R(α) blocks from the memory on +average. Therefore, the adversary can keep the execution time the same as long as + + R(α)Bw ≤ Bwmax, + +where Bw is the bandwidth achieved by a full-space implementation. In the tradeoff attacks that we apply the +following holds: + + R(α) = C(α). + +3 Specification of Argon2 + +There are two flavors of Argon2 – Argon2d and Argon2i. The former one uses data-dependent memory access to +thwart tradeoff attacks. However, this makes it vulnerable for side-channel attacks, so Argon2d is recommended +primarily for cryptocurrencies and backend servers. Argon2i uses data-independent memory access, which is +recommended for password hashing and password-based key derivation. + +3.1 Inputs + +Argon2 has two types of inputs: primary inputs and secondary inputs, or parameters. Primary inputs are +message P and nonce S, which are password and salt, respectively, for the password hashing. Primary inputs +must always be given by the user such that + + • Message P may have any length from 0 to 232 − 1 bytes; + • Nonce S may have any length from 8 to 232 − 1 bytes (16 bytes is recommended for password hashing). + +Secondary inputs have the following restrictions: + + 4 + • Degree of parallelism p determines how many independent (but synchronizing) computational chains can + be run. It may take any integer value from 1 to 224 − 1. + + • Tag length τ may be any integer number of bytes from 4 to 232 − 1. + + • Memory size m can be any integer number of kilobytes from 8p to 232 − 1. The actual number of blocks + is m , which is m rounded down to the nearest multiple of 4p. + + • Number of iterations t (used to tune the running time independently of the memory size) can be any + integer number from 1 to 232 − 1; + + • Version number v is one byte 0x13; + + • Secret value K (serves as key if necessary, but we do not assume any key use by default) may have any + length from 0 to 232 − 1 bytes. + + • Associated data X may have any length from 0 to 232 − 1 bytes. + + • Type y of Argon2: 0 for Argon2d, 1 for Argon2i, 2 for Argon2id. + + Argon2 uses internal compression function G with two 1024-byte inputs and a 1024-byte output, and internal +hash function H. Here H is the Blake2b hash function, and G is based on its internal permutation. The mode +of operation of Argon2 is quite simple when no parallelism is used: function G is iterated m times. At step i a +block with index φ(i) < i is taken from the memory (Figure 1), where φ(i) is either determined by the previous +block in Argon2d, or is a fixed value in Argon2i. + + G G G + + φ(i) φ(i + 1) i−1 i i+1 + + Figure 1: Argon2 mode of operation with no parallelism. + +3.2 Operation + +Argon2 follows the extract-then-expand concept. First, it extracts entropy from message and nonce by hashing +it. All the other parameters are also added to the input. The variable length inputs P, S, K, X are prepended +with their lengths: + + H0 = H(p, τ, m, t, v, y, P , P, S , S, K , K, X , X). + +Here H0 is 64-byte value, and the parameters p, τ, m, t, v, y, P , S , K , X are treated as little-endian 32-bit + +integers. + +Argon2 then fills the memory with m = m · 4p 1024-byte blocks. For tunable parallelism with p threads, + 4p + +the memory is organized in a matrix B[i][j] of blocks with p rows (lanes) and q = m /p columns. We denote + +the block produced in pass t by Bt[i][j], t > 0. Blocks are computed as follows: + + B1[i][0] = H (H0|| 0 || i ), 0 ≤ i < p; + + 4 bytes 4 bytes + + B1[i][1] = H (H0|| 1 || i ), 0 ≤ i < p; + + 4 bytes 4 bytes + + B1[i][j] = G(B1[i][j − 1], B1[i ][j ]), 0 ≤ i < p, 2 ≤ j < q. + +where block index [i ][j ] is determined differently for Argon2d/2ds and Argon2i, G is the compression function, +and H is a variable-length hash function built upon H. Both G and H will be fully defined in the further text. + + 5 + If t > 1, we repeat the procedure, but we XOR the new blocks to the old ones instead of overwriting them. + + Bt[i][0] = G(Bt−1[i][q − 1], B[i ][j ]) ⊕ Bt−1[i][0]; + Bt[i][j] = G(Bt[i][j − 1], B[i ][j ]) ⊕ Bt−1[i][j]. + +Here the block B[i ][j ] may be either Bt[i ][j ] for j < j or Bt−1[i ][j ] for j > j . + After we have done T iterations over the memory, we compute the final block Bfinal as the XOR of the last + +column: + Bfinal = BT [0][q − 1] ⊕ BT [1][q − 1] ⊕ · · · ⊕ BT [p − 1][q − 1]. + +Then we apply H to Bfinal to get the output tag. + + Tag ← H (Bfinal). + +Variable-length hash function. Let Hx be a hash function with x-byte output (in our case Hx is Blake2b, + +which supports 1 ≤ x ≤ 64). We define H as follows. Let Vi be a 64-byte block, and Ai be its first 32 bytes, +and τ < 232 be the 32-bit tag length (viewed little-endian) in bytes. Then we define + + if τ ≤ 64 H (X) d=ef Hτ (τ ||X). + else + r = τ /32 − 2; + V1 ← H64(τ ||X); + V2 ← H64(V1); + ··· + Vr ← H64(Vr−1), + Vr+1 ← Hτ−32r(Vr). + H (X) d=ef A1||A2|| . . . Ar||Vr+1. + + 4 slices + + B[0][0] p lanes + H + message + nonce + +parameters + + B[p − 1][0] + + H H H + + Tag + + Figure 2: Single-pass Argon2 with p lanes and 4 slices. + +3.3 Indexing + +To enable parallel block computation, we further partition the memory matrix into S = 4 vertical slices. The +intersection of a slice and a lane is a segment of length q/S. Segments of the same slice are computed in +parallel, and may not reference blocks from each other. All other blocks can be referenced, and now we explain +the procedure in detail. + +Getting two 32-bit values. In Argon2d we select the first 32 bits of block B[i][j − 1] and denote this value +by J1. Then we take the next 32 bits of B[i][j − 1] and denote this value by J2. In Argon2i we run G2 — the +2-round compression function G — in the counter mode, where the first input is all-zero block, and the second +input is constructed as + + ( r || l || s || m || t || x || i || 0 ), + + 8 bytes 8 bytes 8 bytes 8 bytes 8 bytes 8 bytes 8 bytes 968 bytes + +where + + 6 + • r is the pass number; + • l is the lane number; + • s is the slice number; + • m is the total number of memory blocks; + • t is the total number of passes; + • x is the type of the Argon function (equals 1 for Argon2i); + • i is the counter starting in each segment from 1. +All the numbers are put as little-endian. We increase the counter so that each application of G2 gives 128 64-bit +values J1||J2. + +Mapping J1, J2 to the reference block index The value l = J2 mod p determines the index of the lane +from which the block will be taken. If we work with the first slice and the first pass (r = s = 0), then l is set +to the current lane index. + + Then we determine the set of indices R that can be referenced for given [i][j] according to the following +rules: + +1. If l is the current lane, then R includes all blocks computed in this lane, that are not overwritten yet, + excluding B[i][j − 1]. + +2. If l is not the current lane, then R includes all blocks in the last S − 1 = 3 segments computed and finished + in lane l. If B[i][j] is the first block of a segment, then the very last block from R is excluded. + +We are going to take a block from R with a non-uniform distribution over [0..|R|): + +J1 ∈ [0..232) → |R| 1 − (J1)2 . + 264 + +To avoid floating-point computation, we use the following integer approximation: + +x = (J1)2/232; +y = (|R| ∗ x)/232; +z = |R| − 1 − y. + +Then we enumerate the blocks in R in the order of construction and select z-th block from it as the reference +block. + +3.4 Compression function G + +Compression function G is built upon the Blake2b round function P (fully defined in Section A). P operates +on the 128-byte input, which can be viewed as 8 16-byte registers (see details below): + + P(A0, A1, . . . , A7) = (B0, B1, . . . , B7). + + Compression function G(X, Y ) operates on two 1024-byte blocks X and Y . It first computes R = X ⊕ Y . +Then R is viewed as a 8 × 8-matrix of 16-byte registers R0, R1, . . . , R63. Then P is first applied rowwise, and +then columnwise to get Z: + + (Q0, Q1, . . . , Q7) ← P(R0, R1, . . . , R7); + (Q8, Q9, . . . , Q15) ← P(R8, R9, . . . , R15); + + ... + (Q56, Q57, . . . , Q63) ← P(R56, R57, . . . , R63); + + (Z0, Z8, Z16, . . . , Z56) ← P(Q0, Q8, Q16, . . . , Q56); + (Z1, Z9, Z17, . . . , Z57) ← P(Q1, Q9, Q17, . . . , Q57); + + ... + (Z7, Z15, Z23, . . . , Z63) ← P(Q7, Q15, Q23, . . . , Q63). + +Finally, G outputs Z ⊕ R: + + G : (X, Y ) → R = X ⊕ Y −P→ Q −P→ Z → Z ⊕ R. + +7 + X Y + + R + + P Blake2b + round + + P + + P + + Q + + PP P + + Z + + Figure 3: Argon2 compression function G. + +4 Features + +Argon2 is a multi-purpose family of hashing schemes, which is suitable for password hashing, key derivation, +cryptocurrencies and other applications that require provably high memory use. Argon2 is optimized for the x86 +architecture, but it does not slow much on older processors. The key feature of Argon2 is its performance and +the ability to use multiple computational cores in a way that prohibits time-memory tradeoffs. Several features +are not included into this version, but can be easily added later. + +4.1 Available features + +Now we provide an extensive list of features of Argon2. + Performance. Argon2 fills memory very fast, thus increasing the area multiplier in the time-area product + +for ASIC-equipped adversaries. Data-independent version Argon2i securely fills the memory spending about 2 +CPU cycles per byte, and Argon2d is three times as fast. This makes it suitable for applications that need +memory-hardness but can not allow much CPU time, like cryptocurrency peer software. + + Tradeoff resilience. Despite high performance, Argon2 provides reasonable level of tradeoff resilience. Our +tradeoff attacks previously applied to Catena and Lyra2 show the following. With default number of passes over +memory (1 for Argon2d, 3 for Argon2i, an ASIC-equipped adversary can not decrease the time-area product if +the memory is reduced by the factor of 4 or more. Much higher penalties apply if more passes over the memory +are made. + + Scalability. Argon2 is scalable both in time and memory dimensions. Both parameters can be changed +independently provided that a certain amount of time is always needed to fill the memory. + + Parallelism. Argon2 may use up to 224 threads in parallel, although in our experiments 8 threads already +exhaust the available bandwidth and computing power of the machine. + + GPU/FPGA/ASIC-unfriendly. Argon2 is heavily optimized for the x86 architecture, so that imple- +menting it on dedicated cracking hardware should be neither cheaper nor faster. Even specialized ASICs would +require significant area and would not allow reduction in the time-area product. + + Additional input support. Argon2 supports additional input, which is syntactically separated from the +message and nonce, such as secret key, environment parameters, user data, etc.. + + 8 + 4.2 Possible future extensions + +Argon2 can be rather easily tuned to support other compression functions, hash functions and block sizes. ROM +can be easily integrated into Argon2 by simply including it into the area where the blocks are referenced from. + +5 Security analysis + +All the attacks detailed below apply to one-lane version of Argon2, but can be carried to the multi-lane version +with the same efficiency. + +5.1 Ranking tradeoff attack + +To figure out the costs of the ASIC-equipped adversary, we first need to calculate the time-space tradeoffs for +Argon2. To the best of our knowledge, the first generic tradeoffs attacks were reported in [4], and they apply to +both data-dependent and data-independent schemes. The idea of the ranking method [4] is as follows. When +we generate a memory block B[l], we make a decision, to store it or not. If we do not store it, we calculate the +access complexity of this block — the number of calls to F needed to compute the block, which is based on the +access complexity of B[l − 1] and B[φ(l)]. The detailed strategy is as follows: + + 1. Select an integer q (for the sake of simplicity let q divide T ). + + 2. Store B[kq] for all k; + + 3. Store all ri and all access complexities; + + 4. Store the T /q highest access complexities. If B[i] refers to a vertex from this top, we store B[i]. + +The memory reduction is a probabilistic function of q. We applied the algorithm to the indexing function of +Argon2 and obtained the results in Table 1. Each recomputation is a tree of certain depth, also given in the +table. + + We conclude that for data-dependent one-pass schemes the adversary is always able to reduce the memory +by the factor of 3 and still keep the time-area product the same. + + α 1 1 1 1 1 1 +C (α) +D(α) 2 3 4 5 6 7 + + 1.5 4 20.2 344 4660 218 + + 1.5 2.8 5.5 10.3 17 27 + +Table 1: Time and computation penalties for the ranking tradeoff attack for the Argon2 indexing function. + +5.2 Memory optimization attack + +As reported in [6], it is possible to optimize the memory use in the earlier version 1.2.1 of Argon2, concretely for + +Argon2i. The memory blocks produced in the version 1.2.1 at second and later passes replaced, not overwrote +the blocks at earlier passes. Therefore, for each block B[i] there is a time gap (let us call it a no-use gap) +between the moment the block is used for the last time (as a reference or as a fresh new block) and the moment +it is overwritten. We formalize this issue as follows. Let us denote by φr(i) the reference block index for block +B r [i]. + +• For t-pass Argon2i the block Br[i], r < t is not used between step lir = max i, maxφ(jr)=i j and step i of + pass r + 1, where it is overwritten. + +• For t-pass Argon2i the block Bt[i] is not used between step lit = max i, maxφ(jr)=i j and step m of pass + t, where it is discarded. + + Since addresses li can be precomputed, an attacker can figure out for each block Br[i] when it can be +discarded. A separate data structure will be needed though to keep the address of newly produced blocks as +they land up at pseudo-random locations at the memory. + + This saving strategy uses the fraction + + Lt = 1 − lit + m + i + + 9 + of memory for the last pass, and + + Lr = m + i − lir + m + i + +for the previous passes. Our experiments show that in 1-pass Argon2i L1 ≈ 0.15, i.e. on average 1/7-th of +memory is used. Since in the straightforward application on average 1/2 of memory is used, the advantage in +the time-area product is about 3.5. For t > 1 this strategy uses 0.25 of memory on average, so the time-area +product advantage is close to 4. If we use the peak memory amount in the time-area calculations, then the +advantage would be 5 and 2.7, respectively. + + The version 1.3 of Argon2 replaces overwriting operation with the XOR. This gives minimal overhead on the +performance: for memory requirements of 8 MB and higher the performance difference is between 5% and 15% +depending on the operating system and hardware. For instance, the highest speed of 3-pass Argon2d v.1.2.1 on +1.8 GHz CPU with Ubuntu is 1.61 cycles per byte, whereas for v.1.3 it is 1.7 cpb (both measured for 2 GB of +RAM, 4 threads). + + In the version 1.3 this saving strategy applies to the one-pass Argon2i only, where it brings the same time- +area product advantage. The multi-pass versions are safe as all the blocks have to be kept in memory till the +overwrite. + +5.3 Attack on iterative compression function + +Let us consider the following structure of the compression function F (X, Y ), where X and Y are input blocks: + + • The input blocks of size t are divided into shorter subblocks of length t (for instance, 128 bits) X0, X1, + X2, . . . and Y0, Y1, Y2, . . .. + + • The output block Z is computed subblockwise: + + Z0 = G(X0, Y0); + Zi = G(Xi, Yi, Zi−1), i > 0. + +This scheme resembles the duplex authenticated encryption mode, which is secure under certain assumptions + +on G. However, it is totally insecure against tradeoff adversaries, as shown below. + Suppose that an adversary computes Z = F (X, Y ) but Y is not stored. Suppose that Y is a tree function + +of stored elements of depth D. The adversary starts with computing Z0, which requires only Y0. In turn, +Y0 = G(X0, Y0 ) for some X , Y . Therefore, the adversary computes the tree of the same depth D, but with +the function G instead of F . Z1 is then a tree function of depth D + 1, Z2 of depth D + 2, etc. In total, +the recomputation takes (D + s)LG time, where s is the number of subblocks and LG is the latency of G. +This should be compared to the full-space implementation, which takes time sLG. Therefore, if the memory is +reduced by the factor q, then the time-area product is changed as + + ATnew = D(q) + s AT. + sq + +Therefore, if + + D(q) ≤ s(q − 1), (2) + +the adversary wins. + One may think of using the Zm−1[l−1] as input to computing Z0[l]. Clearly, this changes little in adversary’s + +strategy, who could simply store all Zm−1, which is feasible for large m. In concrete proposals, s can be 64, +128, 256 and even larger. + + We conclude that F with an iterative structure is insecure. We note that this attack applies also to other +PHC candidates with iterative compression function. + +5.4 Security of Argon2 to generic attacks + +Now we consider preimage and collision resistance of both versions of Argon2. Variable-length inputs are +prepended with their lengths, which shall ensure the absence of equal input strings. Inputs are processed by a +cryptographic hash function, so no collisions should occur at this stage. + + 10 + Internal collision resistance. The compression function G is not claimed to be collision resistant, so it may +happen that distinct inputs produce identical outputs. Recall that G works as follows: + + G(X, Y ) = P (Z) ⊕ (Z), Z = X ⊕ Y. + +where P is a permutation based on the 2-round Blake2b permutation. Let us prove that all Z are different +under certain assumptions. + +Theorem 1. Let Π be Argon2d or Argon2i with d lanes, s slices, and t passes over memory. Assume that + + • P (Z) ⊕ Z is collision-resistant, i.e. it is hard to find a, b such that P (a) ⊕ a = P (b) ⊕ b. + + • P (Z) ⊕ Z is 4-generalized-birthday-resistant, i.e. it is hard to find distinct a, b, c, d such that P (a) ⊕ P (b) ⊕ + P (c) ⊕ P (d) = a ⊕ b ⊕ c ⊕ d. + +Then all the blocks B[i] generated in those t passes are different. + +Proof. By specification, the value of Z is different for the first two blocks of each segment in the first slice in +the first pass. Consider the other blocks. + + Let us enumerate the blocks according to the moment they are computed. Within a slice, where segments +can be computed in parallel, we enumerate lane 0 fully first, then lane 1, etc.. Slices are then computed and +enumerated sequentially. Suppose the proposition is wrong, and let (B[x], B[y]) be a block collision such that +x < y and y is the smallest among all such collisions. As F (Z) ⊕ Z is collision resistant, the collision occurs in +Z, i.e. + + Zx = Zy. +Let rx, ry be reference block indices for B[x] and B[y], respectively, and let px, py be previous block indices for +B[x], B[y]. Then we get + + B[rx] ⊕ B[px] = B[ry] ⊕ B[py]. + +As we assume 4-generalized-birthday-resistance, some arguments are equal. Consider three cases: + + • rx = px. This is forbidden by the rule 3 in Section 3.3. + + • rx = ry. We get B[px] = B[py]. As px, py < y, and y is the smallest yielding such a collision, we get + px = py. However, by construction px = py for x = y. + + • rx = py. Then we get B[ry] = B[px]. As ry < y and px < x < y, we obtain ry = px. Since py = rx < x < y, + we get that x and y are in the same slice, we have two options: + + – py is the last block of a segment. Then y is the first block of a segment in the next slice. Since rx + is the last block of a segment, and x < y, x must be in the same slice as y, and x can not be the + first block in a segment by the rule 4 in Section 3.3. Therefore, ry = px = x − 1. However, this is + impossible, as ry can not belong to the same slice as y. + + – py is not the last block of a segment. Then rx = py = y − 1, which implies that rx ≥ x. The latter + is forbidden. + +Thus we get a contradiction in all cases. This ends the proof. + + The compression function G is not claimed to be collision resistant nor preimage-resistant. However, as the +attacker has no control over its input, the collisions are highly unlikely. We only take care that the starting +blocks are not identical by producing the first two blocks with a counter and forbidding to reference from the +memory the last block as (pseudo)random. + + Argon2d does not overwrite the memory, hence it is vulnerable to garbage-collector attacks and similar ones, +and is not recommended to use in the setting where these threats are possible. Argon2i with 3 passes overwrites +the memory twice, thus thwarting the memory-leak attacks. Even if the entire working memory of Argon2i is +leaked after the hash is computed, the adversary would have to compute two passes over the memory to try the +password. + +5.5 Security of Argon2 to ranking tradeoff attacks + +Time and computational penalties for 1-pass Argon2d are given in Table 1. It suggests that the adversary can +reduce memory by the factor of 3 at most while keeping the time-area product the same. + + Argon2i is more vulnerable to tradeoff attacks due to its data-independent addressing scheme. We applied +the ranking algorithm to 3-pass Argon2i to calculate time and computational penalties. We found out that the +memory reduction by the factor of 3 already gives the computational penalty of around 214. The 214 Blake2b +cores would take more area than 1 GB of RAM (Section 2.1), thus prohibiting the adversary to further reduce +the time-area product. We conclude that the time-area product cost for Argon2i can be reduced by 3 at best. + + 11 + 5.6 Security of Argon2i to generic tradeoff attacks on random graphs + +The recent paper by Alwen and Blocki [1] reports an improved attack on Argon2i (all versions) as an instance +of hash functions based on random graphs. + + For t-pass Argon2i, Alwen and Blocki explicitly construct a set of O(T 3/4) nodes so that removing these +nodes from the computation graph yields the so called sandwich graph with O(T 1/4) layers and O(T 1/2) depth +and size. The computation proceeds as follows: + + • Mark certain v = O(T 3/4) blocks as to be stored. + + • For every segment of length T 3/4: + + – Compute the reference blocks of the segment blocks in parallel. + + – Compute the segment blocks consecutively, store blocks that needs storing. + +Using O(T 1/2) cores, the segment computation takes time O(T 3/4) and the total time is O(T ). The cores are +used only for O(T 1/2) time, so it is possible to amortize costs computing O(T 1/4) instances using these cores +in the round-robin fashion. The memory complexity of each step is about to T log T . + + A precise formula for the time-area complexity using this tradeoff strategy is given in Corollary1 5.6 of [1]: + + ATnew = 2T 7/4 5 + t + ln T , + 8 + +Since the memory consumption in the standard implementation is M = T /t, the standard AT value is T 2/t and +the time-area advantage of the Alwen-Blocki attack is + +E = AT = T 1/4 ln T ) ≤ 2t3/4(5 + M 1/4 + 0.125 ln M ) . + ATnew 2t(5 + (ln t)/2 + 8 0.625 ln t + +For t ≥ 3 we get that E ≤ M 1/4/36. Therefore, for M up to 220 (1 GB) the advantage is smaller than 1 (i.e. the +attack is not beneficial to the adversary at all), and for M up to 224 (16 GB) it is smaller than 2. Therefore, +this approach is not better than the ranking attack. However, it is a subject of active research and we’ll update + +this documents if improvements appear. + +5.7 Summary of tradeoff attacks + +The best attack on the 1- and 2-pass Argon2i (v.1.3) is the low-storage attack from [6], which reduces the +time-area product (using the peak memory value) by the factor of 5. + + The best attack for t-pass (t > 2) Argon2i is the ranking tradeoff attack, which reduces the time-area product +by the factor of 3. + + The best attack on the t-pass Argon2d is the ranking tradeoff attack, which reduces the time-area product +by the factor 1.33. + +6 Design rationale + +Argon2 was designed with the following primary goal: to maximize the cost of exhaustive search on non-x86 +architectures, so that the switch even to dedicated ASICs would not give significant advantage over doing the +exhaustive search on defender’s machine. + +6.1 Indexing function + +The basic scheme (1) was extended to implement: + + • Tunable parallelism; + + • Several passes over memory. + + For the data-dependent addressing we set φ(l) = g(B[l]), where g simply truncates the block and takes the +result modulo l − 1. We considered taking the address not from the block B[l − 1] but from the block B[l − 2], +which should have allowed to prefetch the block earlier. However, not only the gain in our implementations is +limited, but also this benefit can be exploited by the adversary. Indeed, the efficient depth D(q) is now reduced +to D(q) − 1, since the adversary has one extra timeslot. Table 1 implies that then the adversary would be able + + 1the authors denote the total number of blocks by n and the number of passes by k. + + 12 + to reduce the memory by the factor of 5 without increasing the time-area product (which is a 25% increase in +the reduction factor compared to the standard approach). + + For the data-independent addressing we use a simple PRNG, in particular the compression function G in the +counter mode. Due to its long output, one call (or two consecutive calls) would produce hundreds of addresses, +thus minimizing the overhead. This approach does not give provable tradeoff bounds, but instead allows the +analysis with the tradeoff algorithms suited for data-dependent addressing. + +Motivation for our indexing functions Initially, we considered uniform selection of referenced blocks, but +then we considered a more generic case: + + φ ← (264 − (J1)γ ) · |Rl|/264 + + We tried to choose the γ which would maximize the adversary’s costs if he applies the tradeoff based on +the ranking method. We also attempted to make the reference block distribution close to uniform, so that each +memory block is referenced similar number of times. + + For each 1 ≤ γ ≤ 5 with step 0.1 we applied the ranking method with sliding window and selected the +best available tradeoffs. We obtained a set of time penalties {Dγ(α)} and computational penalties {Cγ(α)} for +0.01 < α < 1. We also calculated the reference block distribution for all possible γ. We considered two possible +metrics: + +1. Minimum time-area product + + ATγ = min{α · Dγ (α)}. + + α + +2. Maximum memory reduction which reduces the time-area product compared to the original: + + αγ = min{α | Dγ(α) < α}. + + α + +3. The goodness-of-fit value of the reference block distribution w.r.t. the uniform distribution with n bins: + + χ2 = (pi − 1 )2 , + n + 1 + + i n + +where pi is the average probability of the block from i-th bin to be referenced. For example, if p3 = +0.2, n = 10 and there are 1000 blocks, then blocks from 201 to 300 are referenced 1000 · 0.2 = 200 times + +throughout the computation. + +We got the following results for n = 10: + + γ ATγ αγ χ2 + 1 0.78 3.95 0.89 + 2 0.72 3.2 0.35 + 3 0.67 3.48 0.2 + 4 0.63 3.9 0.13 + 5 0.59 4.38 0.09 + +We conclude that the time-area product achievable by the attacker slowly decreases as γ grows. However, the +difference between γ = 1 and γ = 5 is only the factor of 1.3. We also see that the time-area product can be +kept below the original up to q = 3.2 for γ = 2, whereas for γ = 4 and γ = 1 such q is close to 4. To avoid +floating-point computations, we restrict to integer γ. Thus the optimal values are γ = 2 and γ = 3, where the + +former is slightly better in the first two metrics. + + However, if we consider the reference block uniformity, the situation favors larger γ considerably. We see +that the χ2 value is decreased by the factor of 2.5 when going from γ = 1 to γ = 2, and by the factor of 1.8 +further to γ = 3. In concrete probabilities (see also Figure 4), the first 20% of blocks accumulate 40% of all +reference hits for γ = 2 and 32% for γ = 3 (23.8% vs 19.3% hit for the first 10% of blocks). + + To summarize, γ = 2 and γ = 3 both are better against one specific attacker and slightly worse against the +other. We take γ = 2 as the value that minimizes the AT gain, as we consider this metric more important. + +6.2 Implementing parallelism + +As modern CPUs have several cores possibly available for hashing, it is tempting to use these cores to increase +the bandwidth, the amount of filled memory, and the CPU load. The cores of the recent Intel CPU share +the L3 cache and the entire memory, which both have large latencies (100 cycles and more). Therefore, the +inter-processor communication should be minimal to avoid delays. + + 13 + Memory fraction (1/q) 1 1 1 1 1 + γ=1 + γ=2 2 3 4 5 6 + γ=3 + 1.6 2.9 7.3 16.4 59 + + 1.5 4 20.2 344 4700 + + 1.4 4.3 28.1 1040 217 + +Table 2: Computational penalties for the ranking tradeoff attack with a sliding window, 1 pass. + + Memory fraction (1/q) 1 1 1 1 1 + γ=1 + γ=2 2 3 4 5 6 + γ=3 + 1.6 2.5 4 5.8 8.7 + + 1.5 2.6 5.4 10.7 17 + + 1.3 2.5 5.3 10.1 18 + + Table 3: Depth penalties for the ranking tradeoff attack with a sliding window, 1 pass. + +The simplest way to use p parallel cores is to compute and XOR p independent calls to H: + + H (P, S) = H(P, S, 0) ⊕ H(P, S, 1) ⊕ · · · ⊕ H(P, S, p − 1). + +If a single call uses m memory units, then p calls use pm units. However, this method admits a trivial tradeoff: +an adversary just makes p sequential calls to H using only m memory in total, which keeps the time-area +product constant. + + We suggest the following solution for p cores: the entire memory is split into p lanes of l equal slices each, +which can be viewed as elements of a (p × l)-matrix Q[i][j]. Consider the class of schemes given by Equation (1). +We modify it as follows: + +• p invocations to H run in parallel on the first column Q[∗][0] of the memory matrix. Their indexing + functions refer to their own slices only; + +• For each column j > 0, l invocations to H continue to run in parallel, but the indexing functions now may + refer not only to their own slice, but also to all jp slices of previous columns Q[∗][0], Q[∗][1], . . . , Q[∗][j −1]. + +• The last blocks produced in each slice of the last column are XORed. + +This idea is easily implemented in software with p threads and l joining points. It is easy to see that the adversary + +can use less memory when computing the last column, for instance by computing the slices sequentially and + +storing only the slice which is currently computed. Then his time is multiplied by (1 + p−1 ), whereas the + l + p−1 +memory use is multiplied by (1 − pl ), so the time-area product is modified as + + ATnew = AT 1 − p − 1 p−1 . + pl 1+ l + +For 2 ≤ p, l ≤ 10 this value is always between 1.05 and 3. We have selected l = 4 as this value gives low +synchronisation overhead while imposing time-area penalties on the adversary who reduces the memory even +by the factor 3/4. We note that values l = 8 or l = 16 could be chosen. + + If the compression function is collision-resistant, then one may easily prove that block collisions are highly +unlikely. However, we employ a weaker compression function, for which the following holds: + + G(X, Y ) = F (X ⊕ Y ), + +Figure 4: Access frequency for different memory segments (10%-buckets) and different exponents (from γ = 1 +to γ = 5) in the indexing functions. + + 14 + which is invariant to swap of inputs and is not collision-free. We take special care to ensure that the mode of +operation does not allow such collisions by introducing additional rule: + + • First block of a segment can not refer to the last block of any segment in the previous slice. +We prove that block collisions are unlikely under reasonable conditions on F in Section 5.4. + +6.3 Compression function design + +6.3.1 Overview + +In contrast to attacks on regular hash functions, the adversary does not control inputs to the compression +function G in our scheme. Intuitively, this should relax the cryptographic properties required from the compres- +sion function and allow for a faster primitive. To avoid being the bottleneck, the compression function ideally +should be on par with the performance of memcpy() or similar function, which may run at 0.1 cycle per byte +or even faster. This much faster than ordinary stream ciphers or hash functions, but we might not need strong +properties of those primitives. + + However, we first have to determine the optimal block size. When we request a block from a random location +in the memory, we most likely get a cache miss. The first bytes would arrive at the CPU from RAM within +at best 10 ns, which accounts for 30 cycles. In practice, the latency of a single load instruction may reach 100 +cycles and more. However, this number can be amortized if we request a large block of sequentially stored bytes. +When the first bytes are requested, the CPU stores the next ones in the L1 cache, automatically or using the +prefetch instruction. The data from the L1 cache can be loaded as fast as 64 bytes per cycle on the Haswell +architecture, though we did not manage to reach this speed in our application. + + Therefore, the larger the block is, the higher the throughput is. We have made a series of experiments with +a non-cryptographic compression function, which does little beyond simple XOR of its inputs, and achieved the +performance of around 0.7 cycles per byte per core with block sizes of 1024 bits and larger. + +6.3.2 Design criteria + +It was demonstrated that a compression function with a large block size may be vulnerable to tradeoff attacks +if it has a simple iterative structure, like modes of operation for a blockcipher [4] (some details in Section 5.3). + + Thus we formulate the following design criteria: + + • The compression function must require about t bits of storage (excluding inputs) to compute any output + bit. + +• Each output byte of F must be a nonlinear function of all input bytes, so that the function has differential + +probability below certain level, for example 1 . + 4 + +These criteria ensure that the attacker is unable to compute an output bit using only a few input bits or a few + +stored bits. Moreover, the output bits should not be (almost) linear functions of input bits, as otherwise the + +function tree would collapse. + +We have not found any generic design strategy for such large-block compression functions. It is difficult to + +maintain diffusion on large memory blocks due to the lack of CPU instructions that interleave many registers + +at once. A naive approach would be to apply a linear transformation with certain branch number. However, +even if we operate on 16-byte registers, a 1024-byte block would consist of 64 elements. A 64 × 64-matrix would + +require 32 XORs per register to implement, which gives a penalty about 2 cycles per byte. + +Instead, we propose to build the compression function on the top of a transformation P that already mixes + +several registers. We apply P in parallel (having a P-box), then shuffle the output registers and apply it again. +If P handles p registers, then the compression function may transform a block of p2 registers with 2 rounds of + +P-boxes. We do not have to manually shuffle the data, we just change the inputs to P-boxes. As an example, + +an implementation of the Blake2b [2] permutation processes 8 128-bit registers, so with 2 rounds of Blake2b we + +can design a compression function that mixes the 8192-bit block. We stress that this approach is not possible + +with dedicated AES instructions. Even though they are very fast, they apply only to the 128-bit block, and we + +still have to diffuse its content across other blocks. + +We replace the original Blake2b round function with its modification BlaMka [12], where the modular + +additions in G are combined with 32-bit multiplications. Our motivation was to increase the circuit depth (and + +thus the running time) of a potential ASIC implementation while having roughly the same running time on CPU + +thanks to parallelism and pipelining. Extra multiplications in the scheme serve well, as the best addition-based + +circuits for multiplication have latency about 4-5 times the addition latency for 32-bit multiplication (or roughly + +logn for n-bit multiplication). + As a result, any output 64-bit word of P is implemented by a chain of additions, multiplications, XORs, and + +rotations. The shortest possible chain for the 1 KB-block (e.g, from v0 to v0) consists of 12 MULs, 12 XORs, +and 12 rotations. + + 15 + Argon2d (1 pass) Argon2i (3 passes) + +Processor Threads Cycles/Byte Bandwidth Cycles/Byte Bandwidth + + (GB/s) (GB/s) + +i7-4500U 1 1.3 2.5 4.7 2.6 + +i7-4500U 2 0.9 3.8 2.8 4.5 + +i7-4500U 4 0.6 5.4 2 5.4 + +i7-4500U 8 0.6 5.4 1.9 5.8 + +Table 4: Speed and memory bandwidth of Argon2(d/i) measured on 1 GB memory filled. Core i7-4500U — +Intel Haswell 1.8 GHz, 4 cores + +6.4 User-controlled parameters + +We have made a number of design choices, which we consider optimal for a wide range of applications. Some +parameters can be altered, some should be kept as is. We give a user full control over: + + • Amount M of memory filled by algorithm. This value, evidently, depends on the application and the + environment. There is no ”insecure” value for this parameter, though clearly the more memory the + better. + + • Number T of passes over the memory. The running time depends linearly on this parameter. We expect + that the user chooses this number according to the time constraints on the application. Again, there is + no ”insecure value” for T . + + • Degree d of parallelism. This number determines the number of threads used by an optimized implemen- + tation of Argon2. We expect that the user is restricted by a number of CPU cores (or half-cores) that can + be devoted to the hash function, and chooses d accordingly (double the number of cores). + + • Length of password/message, salt/nonce, and tag (except for some low, insecure values for salt and tag + lengths). + + We allow to choose another compression function G, hash function H, block size b, and number of slices l. +However, we do not provide this flexibility in a reference implementation as we guess that the vast majority of +the users would prefer as few parameters as possible. + +7 Performance + +7.1 x86 architecture + +To optimize the data load and store from/to memory, the memory that will be processed has to be alligned on +16-byte boundary when loaded/stored into/from 128-bit registers and on 32-byte boundary when loaded/stored +into/from 256-bit registers. If the memory is not aligned on the specified boundaries, then each memory +operation may take one extra CPU cycle, which may cause consistent penalties for many memory accesses. + + The results presented are obtained using the gcc 4.8.2 compiler with the following options: -m64 -mavx +-std=c++11 -pthread -O3. The cycle count value was measured using the rdtscp Intel intrinsics C function +which inlines the RDTSCP assembly instruction that returns the 64-bit Time Stamp Counter (TSC) value. The +instruction waits for prevoius instruction to finish and then is executed, but meanwhile the next instructions may +begin before the value is read. Although this shortcoming, we used this method because it is the most realiable +handy method to measure the execution time and also it is widely used in other cryptographic operations +benchmarking. + +8 Applications + +Argon2d is optimized for settings where the adversary does not get regular access to system memory or CPU, +i.e. he can not run side-channel attacks based on the timing information, nor he can recover the password much +faster using garbage collection [7]. These settings are more typical for backend servers and cryptocurrency +minings. For practice we suggest the following settings: + + • Cryptocurrency mining, that takes 0.1 seconds on a 2 Ghz CPU using 1 core — Argon2d with 2 lanes and + 250 MB of RAM; + + 16 + • Backend server authentication, that takes 0.5 seconds on a 2 GHz CPU using 4 cores — Argon2d with 8 + lanes and 4 GB of RAM. + + Argon2i is optimized for more dangerous settings, where the adversary possibly can access the same machine, +use its CPU or mount cold-boot attacks. We use three passes to get rid entirely of the password in the memory. +We suggest the following settings: + + • Key derivation for hard-drive encryption, that takes 3 seconds on a 2 GHz CPU using 2 cores — Argon2i + with 4 lanes and 6 GB of RAM; + + • Frontend server authentication, that takes 0.5 seconds on a 2 GHz CPU using 2 cores — Argon2i with 4 + lanes and 1 GB of RAM. + +9 Recommended parameters + +We recommend the following procedure to select the type and the parameters for practical use of Argon2: + 1. Select the type y. If you do not know the difference between them or you consider side-channel attacks + as viable threat, choose Argon2i. Otherwise any choice is fine, including optional types. + 2. Figure out the maximum number h of threads that can be initiated by each call to Argon2. + 3. Figure out the maximum amount m of memory that each call can afford. + 4. Figure out the maximum amount x of time (in seconds) that each call can afford. + + 5. Select the salt length. 128 bits is sufficient for all applications, but can be reduced to 64 bits in the case + of space constraints. + + 6. Select the tag length. 128 bits is sufficient for most applications, including key derivation. If longer keys + are needed, select longer tags. + + 7. If side-channel attacks is a viable threat, enable the memory wiping option in the library call. + 8. Run the scheme of type y, memory m and h lanes and threads, using different number of passes t. Figure + + out the maximum t such that the running time does not exceed x. If it exceeds x even for t = 1, reduce + m accordingly. + 9. Hash all the passwords with the just determined values m, h, and t. + +10 Conclusion + +We presented the memory-hard function Argon2, which maximizes the ASIC implementation costs for given +CPU computing time. We aimed to make the design clear and compact, so that any feature and operation has +certain rationale. The clarity and brevity of the Argon2 design has been confirmed by its eventual selection as +the PHC winner. + + Further development of tradeoff attacks with dedication to Argon2 is the subject of future work. It also +remains to be seen how Argon2 withstands GPU cracking with low memory requirements. + +References + + [1] J. Alwen and J. Blocki, “Efficiently computing data-independent memory-hard functions,” IACR Cryptol- + ogy ePrint Archive, vol. 2016, p. 115, 2016. + + [2] J. Aumasson, S. Neves, Z. Wilcox-O’Hearn, and C. Winnerlein, “BLAKE2: simpler, smaller, fast as MD5,” + in ACNS’13, ser. Lecture Notes in Computer Science, vol. 7954. Springer, 2013, pp. 119–135. + + [3] D. J. Bernstein and T. Lange, “Non-uniform cracks in the concrete: The power of free precomputation,” + in ASIACRYPT’13, ser. Lecture Notes in Computer Science, vol. 8270. Springer, 2013, pp. 321–340. + + [4] A. Biryukov and D. Khovratovich, “Tradeoff cryptanalysis of memory-hard functions,” in Advances in + Cryptology - ASIACRYPT 2015, ser. Lecture Notes in Computer Science, T. Iwata and J. H. Cheon, Eds., + vol. 9453. Springer, 2015, pp. 633–657. + + 17 + [5] M. Broz, “Phc benchmarks,” 2015, https://github.com/mbroz/PHCtest/blob/master/output/phc round2. + pdf . + + [6] H. Corrigan-Gibbs, D. Boneh, and S. E. Schechter, “Balloon hashing: Provably space-hard hash functions + with data-independent access patterns,” IACR Cryptology ePrint Archive, vol. 2016, p. 27, 2016. + + [7] C. Forler, E. List, S. Lucks, and J. Wenzel, “Overview of the candidates for the password hashing competi- + tion - and their resistance against garbage-collector attacks,” Cryptology ePrint Archive, Report 2014/881, + 2014, http://eprint.iacr.org/. + + [8] C. Forler, S. Lucks, and J. Wenzel, “Memory-demanding password scrambling,” in ASIACRYPT’14, ser. + Lecture Notes in Computer Science, vol. 8874. Springer, 2014, pp. 289–305, tweaked version of [?]. + + [9] B. Giridhar, M. Cieslak, D. Duggal, R. G. Dreslinski, H. M. Chen, R. Patti, B. Hold, C. Chakrabarti, T. N. + Mudge, and D. Blaauw, “Exploring DRAM organizations for energy-efficient and resilient exascale mem- + ories,” in International Conference for High Performance Computing, Networking, Storage and Analysis + (SC 2013). ACM, 2013, pp. 23–35. + +[10] F. Gu¨rkaynak, K. Gaj, B. Muheim, E. Homsirikamol, C. Keller, M. Rogawski, H. Kaeslin, and J.-P. Kaps, + “Lessons learned from designing a 65nm ASIC for evaluating third round SHA-3 candidates,” in Third + SHA-3 Candidate Conference, Mar. 2012. + +[11] M. E. Hellman, “A cryptanalytic time-memory trade-off,” Information Theory, IEEE Transactions on, + vol. 26, no. 4, pp. 401–406, 1980. + +[12] M. A. S. Jr., L. C. Almeida, E. R. Andrade, P. C. F. dos Santos, and P. S. L. M. Barreto, “Lyra2: + Password hashing scheme with improved security against time-memory trade-offs,” Cryptology ePrint + Archive, Report 2015/136, 2015, http://eprint.iacr.org/. + +[13] C. Lee, “Litecoin - open source p2p digital currency,” https://bitcointalk.org/index.php?topic=47417.0, + 2011, https://litecoin.org/. + +[14] NIST, SHA-3 competition, 2007, http://csrc.nist.gov/groups/ST/hash/sha-3/index.html. + +[15] C. Percival, “Stronger key derivation via sequential memory-hard functions,” 2009, http://www.tarsnap. + com/scrypt/scrypt.pdf . + +[16] T. Ristenpart, E. Tromer, H. Shacham, and S. Savage, “Hey, you, get off of my cloud: exploring information + leakage in third-party compute clouds,” in ACM CCS’09, 2009, pp. 199–212. + +[17] M. Robshaw and O. Billet, New stream cipher designs: the eSTREAM finalists. Springer, 2008, vol. 4986. + +[18] C. D. Thompson, “Area-time complexity for VLSI,” in STOC’79. ACM, 1979, pp. 81–88. + +A Permutation P + +Permutation P is based on the round function of Blake2b and works as follows. Its 8 16-byte inputs S0, S1, . . . , S7 +are viewed as a 4 × 4-matrix of 64-bit words, where Si = (v2i+1||v2i): + +  v0 v1 v2 v3  + +  v4 v5 v6 v7  + +  v8 v9 v10 v11 +  + + v12 v13 v14 v15 + +Then we do + + G(v0, v4, v8, v12) G(v1, v5, v9, v13) + G(v2, v6, v10, v14) G(v3, v7, v11, v15) + G(v0, v5, v10, v15) G(v1, v6, v11, v12) + + G(v2, v7, v8, v13) G(v3, v4, v9, v14), + + 18 + where G applies to (a, b, c, d) as follows: + + a ← a + b + 2 ∗ aL ∗ bL; + d ← (d ⊕ a) ≫ 32; + c ← c + d + 2 ∗ cL ∗ dL; + b ← (b ⊕ c) ≫ 24; + + (3) + a ← a + b + 2 ∗ aL ∗ bL; + d ← (d ⊕ a) ≫ 16; + c ← c + d + 2 ∗ cL ∗ dL; + b ← (b ⊕ c) ≫ 63; + +Here + are additions modulo 264 and ≫ are 64-bit rotations to the right. xL is the 64-bit integer x truncated +to the 32 least significant bits. The modular additions in G are combined with 64-bit multiplications (that is +the only difference to the original Blake2 design). + + Our motivation in adding multiplications is to increase the circuit depth (and thus the running time) of +a potential ASIC implementation while having roughly the same running time on CPU thanks to parallelism +and pipelining. Extra multiplications in the scheme serve well, as the best addition-based circuits for multi- +plication have latency about 4-5 times the addition latency for 32-bit multiplication (or roughly logn for n-bit +multiplication). + + As a result, any output 64-bit word of P is implemented by a chain of additions, multiplications, XORs, and +rotations. The shortest possible chain for the 1 KB-block (e.g, from v0 to v0) consists of 12 MULs, 12 XORs, +and 12 rotations. + +B Additional functionality + +The following functionality is enabled in the extended implementation2 but is not officially included in the PHC +release3: + + • Hybrid construction Argon2id, which has type y = 2 (used in the pre-hashing and address generation). + In the first two slices of the first pass it generates reference addresses data-independently as in Argon2i, + whereas in later slices and next passes it generates them data-dependently as in Argon2d. + + • Sbox-hardened version Argon2ds, which has type y = 4. In this version the compression function G + includes the 64-bit transformation T , which is a chain of S-boxes, multiplications, and additions. In terms + of Section 3.4, we additionally compute + + W = LSB64(R0 ⊕ R63); + Z0+ = T (W ); + Z63+ = T (W ) 32. + + The transformation T , on the 64-bit word W is defined as follows: + + – Repeat 96 times: + 1. y ← S[W [8 : 0]]; + 2. z ← S[512 + W [40 : 32]]; + 3. W ← ((W [31 : 0] ◦ W [63 : 32]) + y) ⊕ z. + + – T (W ) ← W . + + All the operations are performed modulo 264. ◦ is the 64-bit multiplication, S[] is the Sbox (lookup table) + that maps 10-bit indices to 64-bit values. W [i : j] is the subset of bits of W from i to j inclusive. + The S-box is generated in the start of every pass in the following procedure. In total we specify 210 · 8 + bytes, or 8 KBytes. We take block B[0][0] and apply F (the core of G) to it 16 times. After each two + iterations we use the entire 1024-byte value and initialize 128 lookup values. + The properties of T and its initialization procedure is subject to change. + + 2https://github.com/khovratovich/Argon2 + 3https://github.com/P-H-C/phc-winner-argon2 + + 19 + C Change log + +C.1 v.1.3 + + • The blocks are XORed with, not overwritten in the second pass and later; + • The version number byte is now 0x13. + +C.2 v1.2.1 – February 1st, 2016 + + • The total number of blocks can reach 232 − 1; + • The reference block index now requires 64 bits; the lane number is computed separately. + • New modes Argon2id and Argon2ds are added as optional. +The specification of v1.2.1 released on 26th August, 2015, had incorrect description of the first block generation. +The version released on 2d September, 2015, had incorrect description of the counter used in generating addresses +for Argon2i. The version released on September 8th, 2015, lacked the ”Recommended parameters” section. The +version released on October 1st, 2015, had the maximal parallelism level of 255 lanes. The version released on +November 3d, 2015, had a typo. The versions released on November 5th and December 26th, had incorrect +description of the first block generation and the variable-length hash function. + +C.3 v1.2 – 21th June, 2015 + +Non-uniform indexing rule, the compression function gets multiplications. + +C.4 v1.1 – 6th February, 2015 + + • New indexing rule added to avoid collision with a proof. + • New rule to generate first two blocks in each lane. + • Non-zero constant added to the input block used to generate addresses in Argon2i. + + 20 + \ No newline at end of file diff --git a/deps/phc-winner-argon2-20190702/include/argon2.h b/deps/phc-winner-argon2-20190702/include/argon2.h new file mode 100644 index 000000000..fc8682c2d --- /dev/null +++ b/deps/phc-winner-argon2-20190702/include/argon2.h @@ -0,0 +1,437 @@ +/* + * Argon2 reference source code package - reference C implementations + * + * Copyright 2015 + * Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves + * + * You may use this work under the terms of a Creative Commons CC0 1.0 + * License/Waiver or the Apache Public License 2.0, at your option. The terms of + * these licenses can be found at: + * + * - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0 + * - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0 + * + * You should have received a copy of both of these licenses along with this + * software. If not, they may be obtained at the above URLs. + */ + +#ifndef ARGON2_H +#define ARGON2_H + +#include +#include +#include + +#if defined(__cplusplus) +extern "C" { +#endif + +/* Symbols visibility control */ +#ifdef A2_VISCTL +#define ARGON2_PUBLIC __attribute__((visibility("default"))) +#define ARGON2_LOCAL __attribute__ ((visibility ("hidden"))) +#elif _MSC_VER +#define ARGON2_PUBLIC __declspec(dllexport) +#define ARGON2_LOCAL +#else +#define ARGON2_PUBLIC +#define ARGON2_LOCAL +#endif + +/* + * Argon2 input parameter restrictions + */ + +/* Minimum and maximum number of lanes (degree of parallelism) */ +#define ARGON2_MIN_LANES UINT32_C(1) +#define ARGON2_MAX_LANES UINT32_C(0xFFFFFF) + +/* Minimum and maximum number of threads */ +#define ARGON2_MIN_THREADS UINT32_C(1) +#define ARGON2_MAX_THREADS UINT32_C(0xFFFFFF) + +/* Number of synchronization points between lanes per pass */ +#define ARGON2_SYNC_POINTS UINT32_C(4) + +/* Minimum and maximum digest size in bytes */ +#define ARGON2_MIN_OUTLEN UINT32_C(4) +#define ARGON2_MAX_OUTLEN UINT32_C(0xFFFFFFFF) + +/* Minimum and maximum number of memory blocks (each of BLOCK_SIZE bytes) */ +#define ARGON2_MIN_MEMORY (2 * ARGON2_SYNC_POINTS) /* 2 blocks per slice */ + +#define ARGON2_MIN(a, b) ((a) < (b) ? (a) : (b)) +/* Max memory size is addressing-space/2, topping at 2^32 blocks (4 TB) */ +#define ARGON2_MAX_MEMORY_BITS \ + ARGON2_MIN(UINT32_C(32), (sizeof(void *) * CHAR_BIT - 10 - 1)) +#define ARGON2_MAX_MEMORY \ + ARGON2_MIN(UINT32_C(0xFFFFFFFF), UINT64_C(1) << ARGON2_MAX_MEMORY_BITS) + +/* Minimum and maximum number of passes */ +#define ARGON2_MIN_TIME UINT32_C(1) +#define ARGON2_MAX_TIME UINT32_C(0xFFFFFFFF) + +/* Minimum and maximum password length in bytes */ +#define ARGON2_MIN_PWD_LENGTH UINT32_C(0) +#define ARGON2_MAX_PWD_LENGTH UINT32_C(0xFFFFFFFF) + +/* Minimum and maximum associated data length in bytes */ +#define ARGON2_MIN_AD_LENGTH UINT32_C(0) +#define ARGON2_MAX_AD_LENGTH UINT32_C(0xFFFFFFFF) + +/* Minimum and maximum salt length in bytes */ +#define ARGON2_MIN_SALT_LENGTH UINT32_C(8) +#define ARGON2_MAX_SALT_LENGTH UINT32_C(0xFFFFFFFF) + +/* Minimum and maximum key length in bytes */ +#define ARGON2_MIN_SECRET UINT32_C(0) +#define ARGON2_MAX_SECRET UINT32_C(0xFFFFFFFF) + +/* Flags to determine which fields are securely wiped (default = no wipe). */ +#define ARGON2_DEFAULT_FLAGS UINT32_C(0) +#define ARGON2_FLAG_CLEAR_PASSWORD (UINT32_C(1) << 0) +#define ARGON2_FLAG_CLEAR_SECRET (UINT32_C(1) << 1) + +/* Global flag to determine if we are wiping internal memory buffers. This flag + * is defined in core.c and defaults to 1 (wipe internal memory). */ +extern int FLAG_clear_internal_memory; + +/* Error codes */ +typedef enum Argon2_ErrorCodes { + ARGON2_OK = 0, + + ARGON2_OUTPUT_PTR_NULL = -1, + + ARGON2_OUTPUT_TOO_SHORT = -2, + ARGON2_OUTPUT_TOO_LONG = -3, + + ARGON2_PWD_TOO_SHORT = -4, + ARGON2_PWD_TOO_LONG = -5, + + ARGON2_SALT_TOO_SHORT = -6, + ARGON2_SALT_TOO_LONG = -7, + + ARGON2_AD_TOO_SHORT = -8, + ARGON2_AD_TOO_LONG = -9, + + ARGON2_SECRET_TOO_SHORT = -10, + ARGON2_SECRET_TOO_LONG = -11, + + ARGON2_TIME_TOO_SMALL = -12, + ARGON2_TIME_TOO_LARGE = -13, + + ARGON2_MEMORY_TOO_LITTLE = -14, + ARGON2_MEMORY_TOO_MUCH = -15, + + ARGON2_LANES_TOO_FEW = -16, + ARGON2_LANES_TOO_MANY = -17, + + ARGON2_PWD_PTR_MISMATCH = -18, /* NULL ptr with non-zero length */ + ARGON2_SALT_PTR_MISMATCH = -19, /* NULL ptr with non-zero length */ + ARGON2_SECRET_PTR_MISMATCH = -20, /* NULL ptr with non-zero length */ + ARGON2_AD_PTR_MISMATCH = -21, /* NULL ptr with non-zero length */ + + ARGON2_MEMORY_ALLOCATION_ERROR = -22, + + ARGON2_FREE_MEMORY_CBK_NULL = -23, + ARGON2_ALLOCATE_MEMORY_CBK_NULL = -24, + + ARGON2_INCORRECT_PARAMETER = -25, + ARGON2_INCORRECT_TYPE = -26, + + ARGON2_OUT_PTR_MISMATCH = -27, + + ARGON2_THREADS_TOO_FEW = -28, + ARGON2_THREADS_TOO_MANY = -29, + + ARGON2_MISSING_ARGS = -30, + + ARGON2_ENCODING_FAIL = -31, + + ARGON2_DECODING_FAIL = -32, + + ARGON2_THREAD_FAIL = -33, + + ARGON2_DECODING_LENGTH_FAIL = -34, + + ARGON2_VERIFY_MISMATCH = -35 +} argon2_error_codes; + +/* Memory allocator types --- for external allocation */ +typedef int (*allocate_fptr)(uint8_t **memory, size_t bytes_to_allocate); +typedef void (*deallocate_fptr)(uint8_t *memory, size_t bytes_to_allocate); + +/* Argon2 external data structures */ + +/* + ***** + * Context: structure to hold Argon2 inputs: + * output array and its length, + * password and its length, + * salt and its length, + * secret and its length, + * associated data and its length, + * number of passes, amount of used memory (in KBytes, can be rounded up a bit) + * number of parallel threads that will be run. + * All the parameters above affect the output hash value. + * Additionally, two function pointers can be provided to allocate and + * deallocate the memory (if NULL, memory will be allocated internally). + * Also, three flags indicate whether to erase password, secret as soon as they + * are pre-hashed (and thus not needed anymore), and the entire memory + ***** + * Simplest situation: you have output array out[8], password is stored in + * pwd[32], salt is stored in salt[16], you do not have keys nor associated + * data. You need to spend 1 GB of RAM and you run 5 passes of Argon2d with + * 4 parallel lanes. + * You want to erase the password, but you're OK with last pass not being + * erased. You want to use the default memory allocator. + * Then you initialize: + Argon2_Context(out,8,pwd,32,salt,16,NULL,0,NULL,0,5,1<<20,4,4,NULL,NULL,true,false,false,false) + */ +typedef struct Argon2_Context { + uint8_t *out; /* output array */ + uint32_t outlen; /* digest length */ + + uint8_t *pwd; /* password array */ + uint32_t pwdlen; /* password length */ + + uint8_t *salt; /* salt array */ + uint32_t saltlen; /* salt length */ + + uint8_t *secret; /* key array */ + uint32_t secretlen; /* key length */ + + uint8_t *ad; /* associated data array */ + uint32_t adlen; /* associated data length */ + + uint32_t t_cost; /* number of passes */ + uint32_t m_cost; /* amount of memory requested (KB) */ + uint32_t lanes; /* number of lanes */ + uint32_t threads; /* maximum number of threads */ + + uint32_t version; /* version number */ + + allocate_fptr allocate_cbk; /* pointer to memory allocator */ + deallocate_fptr free_cbk; /* pointer to memory deallocator */ + + uint32_t flags; /* array of bool options */ +} argon2_context; + +/* Argon2 primitive type */ +typedef enum Argon2_type { + Argon2_d = 0, + Argon2_i = 1, + Argon2_id = 2 +} argon2_type; + +/* Version of the algorithm */ +typedef enum Argon2_version { + ARGON2_VERSION_10 = 0x10, + ARGON2_VERSION_13 = 0x13, + ARGON2_VERSION_NUMBER = ARGON2_VERSION_13 +} argon2_version; + +/* + * Function that gives the string representation of an argon2_type. + * @param type The argon2_type that we want the string for + * @param uppercase Whether the string should have the first letter uppercase + * @return NULL if invalid type, otherwise the string representation. + */ +ARGON2_PUBLIC const char *argon2_type2string(argon2_type type, int uppercase); + +/* + * Function that performs memory-hard hashing with certain degree of parallelism + * @param context Pointer to the Argon2 internal structure + * @return Error code if smth is wrong, ARGON2_OK otherwise + */ +ARGON2_PUBLIC int argon2_ctx(argon2_context *context, argon2_type type); + +/** + * Hashes a password with Argon2i, producing an encoded hash + * @param t_cost Number of iterations + * @param m_cost Sets memory usage to m_cost kibibytes + * @param parallelism Number of threads and compute lanes + * @param pwd Pointer to password + * @param pwdlen Password size in bytes + * @param salt Pointer to salt + * @param saltlen Salt size in bytes + * @param hashlen Desired length of the hash in bytes + * @param encoded Buffer where to write the encoded hash + * @param encodedlen Size of the buffer (thus max size of the encoded hash) + * @pre Different parallelism levels will give different results + * @pre Returns ARGON2_OK if successful + */ +ARGON2_PUBLIC int argon2i_hash_encoded(const uint32_t t_cost, + const uint32_t m_cost, + const uint32_t parallelism, + const void *pwd, const size_t pwdlen, + const void *salt, const size_t saltlen, + const size_t hashlen, char *encoded, + const size_t encodedlen); + +/** + * Hashes a password with Argon2i, producing a raw hash at @hash + * @param t_cost Number of iterations + * @param m_cost Sets memory usage to m_cost kibibytes + * @param parallelism Number of threads and compute lanes + * @param pwd Pointer to password + * @param pwdlen Password size in bytes + * @param salt Pointer to salt + * @param saltlen Salt size in bytes + * @param hash Buffer where to write the raw hash - updated by the function + * @param hashlen Desired length of the hash in bytes + * @pre Different parallelism levels will give different results + * @pre Returns ARGON2_OK if successful + */ +ARGON2_PUBLIC int argon2i_hash_raw(const uint32_t t_cost, const uint32_t m_cost, + const uint32_t parallelism, const void *pwd, + const size_t pwdlen, const void *salt, + const size_t saltlen, void *hash, + const size_t hashlen); + +ARGON2_PUBLIC int argon2d_hash_encoded(const uint32_t t_cost, + const uint32_t m_cost, + const uint32_t parallelism, + const void *pwd, const size_t pwdlen, + const void *salt, const size_t saltlen, + const size_t hashlen, char *encoded, + const size_t encodedlen); + +ARGON2_PUBLIC int argon2d_hash_raw(const uint32_t t_cost, const uint32_t m_cost, + const uint32_t parallelism, const void *pwd, + const size_t pwdlen, const void *salt, + const size_t saltlen, void *hash, + const size_t hashlen); + +ARGON2_PUBLIC int argon2id_hash_encoded(const uint32_t t_cost, + const uint32_t m_cost, + const uint32_t parallelism, + const void *pwd, const size_t pwdlen, + const void *salt, const size_t saltlen, + const size_t hashlen, char *encoded, + const size_t encodedlen); + +ARGON2_PUBLIC int argon2id_hash_raw(const uint32_t t_cost, + const uint32_t m_cost, + const uint32_t parallelism, const void *pwd, + const size_t pwdlen, const void *salt, + const size_t saltlen, void *hash, + const size_t hashlen); + +/* generic function underlying the above ones */ +ARGON2_PUBLIC int argon2_hash(const uint32_t t_cost, const uint32_t m_cost, + const uint32_t parallelism, const void *pwd, + const size_t pwdlen, const void *salt, + const size_t saltlen, void *hash, + const size_t hashlen, char *encoded, + const size_t encodedlen, argon2_type type, + const uint32_t version); + +/** + * Verifies a password against an encoded string + * Encoded string is restricted as in validate_inputs() + * @param encoded String encoding parameters, salt, hash + * @param pwd Pointer to password + * @pre Returns ARGON2_OK if successful + */ +ARGON2_PUBLIC int argon2i_verify(const char *encoded, const void *pwd, + const size_t pwdlen); + +ARGON2_PUBLIC int argon2d_verify(const char *encoded, const void *pwd, + const size_t pwdlen); + +ARGON2_PUBLIC int argon2id_verify(const char *encoded, const void *pwd, + const size_t pwdlen); + +/* generic function underlying the above ones */ +ARGON2_PUBLIC int argon2_verify(const char *encoded, const void *pwd, + const size_t pwdlen, argon2_type type); + +/** + * Argon2d: Version of Argon2 that picks memory blocks depending + * on the password and salt. Only for side-channel-free + * environment!! + ***** + * @param context Pointer to current Argon2 context + * @return Zero if successful, a non zero error code otherwise + */ +ARGON2_PUBLIC int argon2d_ctx(argon2_context *context); + +/** + * Argon2i: Version of Argon2 that picks memory blocks + * independent on the password and salt. Good for side-channels, + * but worse w.r.t. tradeoff attacks if only one pass is used. + ***** + * @param context Pointer to current Argon2 context + * @return Zero if successful, a non zero error code otherwise + */ +ARGON2_PUBLIC int argon2i_ctx(argon2_context *context); + +/** + * Argon2id: Version of Argon2 where the first half-pass over memory is + * password-independent, the rest are password-dependent (on the password and + * salt). OK against side channels (they reduce to 1/2-pass Argon2i), and + * better with w.r.t. tradeoff attacks (similar to Argon2d). + ***** + * @param context Pointer to current Argon2 context + * @return Zero if successful, a non zero error code otherwise + */ +ARGON2_PUBLIC int argon2id_ctx(argon2_context *context); + +/** + * Verify if a given password is correct for Argon2d hashing + * @param context Pointer to current Argon2 context + * @param hash The password hash to verify. The length of the hash is + * specified by the context outlen member + * @return Zero if successful, a non zero error code otherwise + */ +ARGON2_PUBLIC int argon2d_verify_ctx(argon2_context *context, const char *hash); + +/** + * Verify if a given password is correct for Argon2i hashing + * @param context Pointer to current Argon2 context + * @param hash The password hash to verify. The length of the hash is + * specified by the context outlen member + * @return Zero if successful, a non zero error code otherwise + */ +ARGON2_PUBLIC int argon2i_verify_ctx(argon2_context *context, const char *hash); + +/** + * Verify if a given password is correct for Argon2id hashing + * @param context Pointer to current Argon2 context + * @param hash The password hash to verify. The length of the hash is + * specified by the context outlen member + * @return Zero if successful, a non zero error code otherwise + */ +ARGON2_PUBLIC int argon2id_verify_ctx(argon2_context *context, + const char *hash); + +/* generic function underlying the above ones */ +ARGON2_PUBLIC int argon2_verify_ctx(argon2_context *context, const char *hash, + argon2_type type); + +/** + * Get the associated error message for given error code + * @return The error message associated with the given error code + */ +ARGON2_PUBLIC const char *argon2_error_message(int error_code); + +/** + * Returns the encoded hash length for the given input parameters + * @param t_cost Number of iterations + * @param m_cost Memory usage in kibibytes + * @param parallelism Number of threads; used to compute lanes + * @param saltlen Salt size in bytes + * @param hashlen Hash size in bytes + * @param type The argon2_type that we want the encoded length for + * @return The encoded hash length in bytes + */ +ARGON2_PUBLIC size_t argon2_encodedlen(uint32_t t_cost, uint32_t m_cost, + uint32_t parallelism, uint32_t saltlen, + uint32_t hashlen, argon2_type type); + +#if defined(__cplusplus) +} +#endif + +#endif diff --git a/deps/phc-winner-argon2-20190702/kats/argon2d b/deps/phc-winner-argon2-20190702/kats/argon2d new file mode 100644 index 000000000..760cd3154 --- /dev/null +++ b/deps/phc-winner-argon2-20190702/kats/argon2d @@ -0,0 +1,12304 @@ +======================================= +Argon2d version number 19 +======================================= +Memory: 32 KiB, Iterations: 3, Parallelism: 4 lanes, Tag length: 32 bytes +Password[32]: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 +Salt[16]: 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 +Secret[8]: 03 03 03 03 03 03 03 03 +Associated data[12]: 04 04 04 04 04 04 04 04 04 04 04 04 +Pre-hashing digest: b8 81 97 91 a0 35 96 60 bb 77 09 c8 5f a4 8f 04 d5 d8 2c 05 c5 f2 15 cc db 88 54 91 71 7c f7 57 08 2c 28 b9 51 be 38 14 10 b5 fc 2e b7 27 40 33 b9 fd c7 ae 67 2b ca ac 5d 17 90 97 a4 af 31 09 + + After pass 0: +Block 0000 [ 0]: db2fea6b2c6f5c8a +Block 0000 [ 1]: 719413be00f82634 +Block 0000 [ 2]: a1e3f6dd42aa25cc +Block 0000 [ 3]: 3ea8efd4d55ac0d1 +Block 0000 [ 4]: 1278849d789aa327 +Block 0000 [ 5]: 54ec500e01cb4887 +Block 0000 [ 6]: 96c5956594a99199 +Block 0000 [ 7]: 54ef81c17e9b4b85 +Block 0000 [ 8]: baed2f6297b02ec0 +Block 0000 [ 9]: 4aaabe9242c77d92 +Block 0000 [ 10]: 77ee20571b300aba +Block 0000 [ 11]: f3eb71a1198a6329 +Block 0000 [ 12]: 426d5f6ae87a9437 +Block 0000 [ 13]: 6da602fb6e9da76f +Block 0000 [ 14]: 6cd3a4c30d15d1c8 +Block 0000 [ 15]: 5d2b71f0503a6081 +Block 0000 [ 16]: 5546d897e9ff2979 +Block 0000 [ 17]: 3f4dfa67e5766a1e +Block 0000 [ 18]: 4124d05b5a90526c +Block 0000 [ 19]: 7fdf2f081232cf92 +Block 0000 [ 20]: 5966a32b400ba845 +Block 0000 [ 21]: 1bc8d3001e30b570 +Block 0000 [ 22]: ab4f59b1db7de22c +Block 0000 [ 23]: c8c3b695f2999d99 +Block 0000 [ 24]: ed809c6fb5b3e08b +Block 0000 [ 25]: a35525b5cdb05508 +Block 0000 [ 26]: be72096c694a09a5 +Block 0000 [ 27]: e64fb95af6124cdb +Block 0000 [ 28]: 1283aca69967b329 +Block 0000 [ 29]: 573a3c93e1c4d2d0 +Block 0000 [ 30]: 4fe159afa866e46a +Block 0000 [ 31]: e1613f8cea969fb2 +Block 0000 [ 32]: 337f483e3cc6d5ff +Block 0000 [ 33]: 3434681c54e6162b +Block 0000 [ 34]: a02a65f1c3451133 +Block 0000 [ 35]: 9b5f838814d81637 +Block 0000 [ 36]: 52327c997c05bd67 +Block 0000 [ 37]: 49ceb51f96966824 +Block 0000 [ 38]: 589749ef2ded3cef +Block 0000 [ 39]: 369a0a5a280aceef +Block 0000 [ 40]: 53d2c8db35d546df +Block 0000 [ 41]: 437a8603e4c91a8b +Block 0000 [ 42]: 4a4642967b88dcda +Block 0000 [ 43]: 4b67d8a64d98ce65 +Block 0000 [ 44]: 7a51353e30a4d18c +Block 0000 [ 45]: ecfb8e818ddb5e3a +Block 0000 [ 46]: 687554e011af89b3 +Block 0000 [ 47]: 754ef2b08241903f +Block 0000 [ 48]: 898ed0d448d9bf80 +Block 0000 [ 49]: f98e7b29f668f39d +Block 0000 [ 50]: 1593baefbd91bcef +Block 0000 [ 51]: 9f48d75f063a4247 +Block 0000 [ 52]: b44c4730eb25dbde +Block 0000 [ 53]: ab1984298888f3be +Block 0000 [ 54]: 99636cee27f6ff9c +Block 0000 [ 55]: d771122043a2bcf5 +Block 0000 [ 56]: 99b7cdcb1768b8fc +Block 0000 [ 57]: c784bfc27e55790d +Block 0000 [ 58]: 587a90b47c57f0ee +Block 0000 [ 59]: c114a05eba21ff32 +Block 0000 [ 60]: 7fdceebe6889d888 +Block 0000 [ 61]: 1cbcf477efde21b7 +Block 0000 [ 62]: 4d9c10146cc32cc1 +Block 0000 [ 63]: 6fd032cd8f4bad32 +Block 0000 [ 64]: 05d46657a397048c +Block 0000 [ 65]: 5b4d561105d0db07 +Block 0000 [ 66]: c97ac2acc721fc88 +Block 0000 [ 67]: 93320ace2a54681d +Block 0000 [ 68]: 43dae71f04080ccf +Block 0000 [ 69]: 39f3a8dcbfa87912 +Block 0000 [ 70]: 27425b8b6f328d71 +Block 0000 [ 71]: 514b4457fe7aba28 +Block 0000 [ 72]: 258a430d30f0bc9f +Block 0000 [ 73]: 8d02b571f1c44624 +Block 0000 [ 74]: 296d7de559b099b0 +Block 0000 [ 75]: dbf8f772a054c3c1 +Block 0000 [ 76]: 19ec7cacf3967d0b +Block 0000 [ 77]: a40ba6bb7cbde791 +Block 0000 [ 78]: 43e99ec3f241aab7 +Block 0000 [ 79]: 12201cfde1128feb +Block 0000 [ 80]: 08b7689bb28fbeb7 +Block 0000 [ 81]: 2e96cc1546add647 +Block 0000 [ 82]: 65f12262aec7f677 +Block 0000 [ 83]: 462f640439ce4d40 +Block 0000 [ 84]: f2bc0d2e1b36d570 +Block 0000 [ 85]: 768cc6c87b6301e0 +Block 0000 [ 86]: bc4723908e88ff53 +Block 0000 [ 87]: 7887e378709a8b42 +Block 0000 [ 88]: de34544f59b8c144 +Block 0000 [ 89]: 84f7bb9129ea343a +Block 0000 [ 90]: f375bae1f1471e11 +Block 0000 [ 91]: 05c203052706f0dc +Block 0000 [ 92]: 627c32574d945282 +Block 0000 [ 93]: 5ff520c44d1cca7e +Block 0000 [ 94]: 06488dc3ccb24791 +Block 0000 [ 95]: 380fd531ccc2bc8d +Block 0000 [ 96]: 44d564d042d8a8e1 +Block 0000 [ 97]: ed01c6baed1cfd77 +Block 0000 [ 98]: 09e03973e4c4e8d0 +Block 0000 [ 99]: 0e814a59b8165a88 +Block 0000 [100]: 3ecd0fbe0196bb77 +Block 0000 [101]: 7fc4b520e11e8e47 +Block 0000 [102]: b77b6f2a5d754c6a +Block 0000 [103]: cd7869cb41b4e93d +Block 0000 [104]: b33588ab98af17a7 +Block 0000 [105]: 4667595e8112205d +Block 0000 [106]: 7fb587f723c62728 +Block 0000 [107]: e1f5311b30106b58 +Block 0000 [108]: f289ca11b2e3df4f +Block 0000 [109]: d50eab9479264fcc +Block 0000 [110]: 320bd31fa0ae830e +Block 0000 [111]: 458d7359106a0631 +Block 0000 [112]: c579ebd5456d59ea +Block 0000 [113]: 7de55d003eaaa255 +Block 0000 [114]: 7177eaaf395d9c67 +Block 0000 [115]: 9714192984bce397 +Block 0000 [116]: 16facb8107b05308 +Block 0000 [117]: 21d794cd54c9b151 +Block 0000 [118]: c9f71fa973d25883 +Block 0000 [119]: fdf9f60a11255ce8 +Block 0000 [120]: ae921043f61ba204 +Block 0000 [121]: 5636e1c68a2db5a5 +Block 0000 [122]: 6359770f48a1970f +Block 0000 [123]: e5ccffd488d54ca1 +Block 0000 [124]: 89e89ce9a892a965 +Block 0000 [125]: 11a1d552040e9f67 +Block 0000 [126]: 921a0dd7aead4224 +Block 0000 [127]: 8b298b5c367f7b39 +Block 0001 [ 0]: f7180a33ba9d571c +Block 0001 [ 1]: a34284b17ff613ff +Block 0001 [ 2]: 88fb62505306e91b +Block 0001 [ 3]: 99182c1bbe35a905 +Block 0001 [ 4]: b22b57179b3b38cb +Block 0001 [ 5]: 7dd134b46391e700 +Block 0001 [ 6]: cfa78494d6edc163 +Block 0001 [ 7]: d6e11db6febc3b53 +Block 0001 [ 8]: 3a1182fff056748a +Block 0001 [ 9]: 4a546d640288712c +Block 0001 [ 10]: 2574029c58ef3efd +Block 0001 [ 11]: 34c73cddabec3e98 +Block 0001 [ 12]: ed1138549ca015b4 +Block 0001 [ 13]: af132ca0de9e5e4d +Block 0001 [ 14]: c3800df9c81a2654 +Block 0001 [ 15]: b07f5cac8decb77e +Block 0001 [ 16]: 3bf88cbd16fac9a5 +Block 0001 [ 17]: 01e8b1c2acde7da5 +Block 0001 [ 18]: 5cc42f01d1ca339b +Block 0001 [ 19]: e808119da64d5035 +Block 0001 [ 20]: 27f2dc395d740631 +Block 0001 [ 21]: 3435bb42bcf41e3f +Block 0001 [ 22]: efd51e8fd8f75262 +Block 0001 [ 23]: 0218cd8cb64d7666 +Block 0001 [ 24]: 8751a679668aaaa0 +Block 0001 [ 25]: df274353f81f7884 +Block 0001 [ 26]: a0b214e15caa0ad5 +Block 0001 [ 27]: b6fdbdee571b01b4 +Block 0001 [ 28]: 72246eb1622ec154 +Block 0001 [ 29]: 4c1c25982d6f2dab +Block 0001 [ 30]: 05b9f3e0ad168986 +Block 0001 [ 31]: 27bff0a68798a1d0 +Block 0001 [ 32]: 1f44db82c1c7e7fe +Block 0001 [ 33]: ffb3bdab65bc7d2c +Block 0001 [ 34]: 450d02c9a8dd071d +Block 0001 [ 35]: a88d77a0da1d2dd9 +Block 0001 [ 36]: 50c6a8c821450618 +Block 0001 [ 37]: 5fb848148850ad38 +Block 0001 [ 38]: a192eab246a0d110 +Block 0001 [ 39]: 22b17b7a5626f975 +Block 0001 [ 40]: fb31ad45afb66ba4 +Block 0001 [ 41]: a7ec0feb0c44495e +Block 0001 [ 42]: 3405f81d4bbf5aef +Block 0001 [ 43]: b00e2aae495a4bc4 +Block 0001 [ 44]: b15206a8c175cb1f +Block 0001 [ 45]: 8096bb72edfd1cfd +Block 0001 [ 46]: 2deb7c3265f94a3a +Block 0001 [ 47]: 3248bbee1e385785 +Block 0001 [ 48]: 96697465d6c51a2d +Block 0001 [ 49]: f46460debf517212 +Block 0001 [ 50]: 8194fc09854dd60b +Block 0001 [ 51]: 66a7a5738655b4d8 +Block 0001 [ 52]: 04148cf4680acf01 +Block 0001 [ 53]: 8fdee6c9070506cb +Block 0001 [ 54]: 456e54d5edc02b52 +Block 0001 [ 55]: d3c3e074fa5c58d6 +Block 0001 [ 56]: 9144d1c46832b26c +Block 0001 [ 57]: 765be92b893ee7a6 +Block 0001 [ 58]: d3639b2617c63271 +Block 0001 [ 59]: 34dbc7ed83967845 +Block 0001 [ 60]: 59f7b9d2e55f9ad8 +Block 0001 [ 61]: e861b20bbc3bc7cc +Block 0001 [ 62]: 69ef1a8b7352058f +Block 0001 [ 63]: 1c4557528f2ff680 +Block 0001 [ 64]: f1272b295306297c +Block 0001 [ 65]: be1b32fdcdac3f89 +Block 0001 [ 66]: bfff0baee51735ac +Block 0001 [ 67]: badb585f9cacf724 +Block 0001 [ 68]: ba38493300e4c942 +Block 0001 [ 69]: 430dff3571065a0a +Block 0001 [ 70]: af2a00e52bd7ec7e +Block 0001 [ 71]: 675229a78358e776 +Block 0001 [ 72]: a81efa39233ddd81 +Block 0001 [ 73]: 32f0b4679eb2dbdd +Block 0001 [ 74]: e1b46c89f5a2691e +Block 0001 [ 75]: a81885bd728f95fd +Block 0001 [ 76]: b1e8fc4fac462cf9 +Block 0001 [ 77]: be28523020ce0b37 +Block 0001 [ 78]: 2b9b38ffae3df39f +Block 0001 [ 79]: d2e3a40120592659 +Block 0001 [ 80]: 083ae5a798856693 +Block 0001 [ 81]: 14fefaad3bbe20b1 +Block 0001 [ 82]: 7ccac041eca182df +Block 0001 [ 83]: 8e876b4533ba59a1 +Block 0001 [ 84]: 5050743b0198dcc4 +Block 0001 [ 85]: 6425fc13b0a6cb97 +Block 0001 [ 86]: edde0a4351adcbe9 +Block 0001 [ 87]: 643dc67ddccebeb8 +Block 0001 [ 88]: 1d06ff28237de139 +Block 0001 [ 89]: 695b7cfdb1cc33e8 +Block 0001 [ 90]: e5d1775842a51de5 +Block 0001 [ 91]: dd8925515ad2950b +Block 0001 [ 92]: 389f14e2e2ab7033 +Block 0001 [ 93]: 41f3a503fb7a542f +Block 0001 [ 94]: 29f6e2d8120e935d +Block 0001 [ 95]: 5ecee71853759564 +Block 0001 [ 96]: 0d2c0e7325f39d1d +Block 0001 [ 97]: 79549a2458b19519 +Block 0001 [ 98]: 595af605c0a319ea +Block 0001 [ 99]: 3fdad667164a1aeb +Block 0001 [100]: c0664af6ef191a7c +Block 0001 [101]: a5ba28896955c8b8 +Block 0001 [102]: da00aa274bdb05ec +Block 0001 [103]: 3e15c6cbcb67b2be +Block 0001 [104]: 85f2be2974588e9d +Block 0001 [105]: d9f37bb0e736a36f +Block 0001 [106]: dce4bc3edd830140 +Block 0001 [107]: 6151537aaa93f696 +Block 0001 [108]: 42beb3252800334a +Block 0001 [109]: 3b58a554b8973b60 +Block 0001 [110]: 6ef0f8dda98652ef +Block 0001 [111]: 2fadd0a1930dd7c3 +Block 0001 [112]: 06b2ce7bc4b8b503 +Block 0001 [113]: 66e4e2c48bcbf641 +Block 0001 [114]: d24e0268ad250901 +Block 0001 [115]: 7d4595caf0fa8581 +Block 0001 [116]: 2be6d7e0c8869901 +Block 0001 [117]: f75aec50f13b97fe +Block 0001 [118]: 2e090b419d1d2ff3 +Block 0001 [119]: 99ef2bbc132c7155 +Block 0001 [120]: 5f9196f038304a92 +Block 0001 [121]: 7152b4c3f11df557 +Block 0001 [122]: 03df91b1ddc97e7f +Block 0001 [123]: bb0e53bdfc8fb73c +Block 0001 [124]: cba896c6ecc4bee5 +Block 0001 [125]: fecc10891efb9caf +Block 0001 [126]: ec052df7554e2e7b +Block 0001 [127]: 4924c3dc10d8fd85 +Block 0002 [ 0]: dd269d6d1fe274bd +Block 0002 [ 1]: eaf87fd713312aeb +Block 0002 [ 2]: 8d4ba63951096c16 +Block 0002 [ 3]: 426a1231958f05d5 +Block 0002 [ 4]: 3b8b0f1949550baa +Block 0002 [ 5]: 8f61aad93507eb55 +Block 0002 [ 6]: 677e1f8f34ce88f2 +Block 0002 [ 7]: c4b1c172380afc85 +Block 0002 [ 8]: 6e3aa0bfda9f3090 +Block 0002 [ 9]: 7cab00b1179c425b +Block 0002 [ 10]: f97da6d4297c917d +Block 0002 [ 11]: ac4a2bca1203dc84 +Block 0002 [ 12]: bb3163556d3ecc3e +Block 0002 [ 13]: 3458c59f278ef520 +Block 0002 [ 14]: 4549b4a48a89f736 +Block 0002 [ 15]: 9c3356014b48be9d +Block 0002 [ 16]: a92c3171216be701 +Block 0002 [ 17]: b7c00ce80fb29dae +Block 0002 [ 18]: da49b7a803cfd49b +Block 0002 [ 19]: d6565369d2052776 +Block 0002 [ 20]: 6cfe1feda4d9c1fd +Block 0002 [ 21]: 8c8913c30028cc74 +Block 0002 [ 22]: bb866e6957a36aef +Block 0002 [ 23]: 5cb63399402b4668 +Block 0002 [ 24]: 1b5456d4cb6636de +Block 0002 [ 25]: c8fa9edf08541cef +Block 0002 [ 26]: 58832e65eda9309d +Block 0002 [ 27]: 143fde9eaacfc468 +Block 0002 [ 28]: 1ea0be670283ac5e +Block 0002 [ 29]: db0aa713e7be541b +Block 0002 [ 30]: 4c5fa13cec7b9957 +Block 0002 [ 31]: e40be01efef834fc +Block 0002 [ 32]: ee247ad65634a5d3 +Block 0002 [ 33]: 3dbb2e31d2ccfa7d +Block 0002 [ 34]: 0a910887da788607 +Block 0002 [ 35]: 94afaa1f565ad409 +Block 0002 [ 36]: de8c385415b7c6e9 +Block 0002 [ 37]: 9d70874bf5eba118 +Block 0002 [ 38]: 6c07b9fa57d5bc8f +Block 0002 [ 39]: 86c2e0eb098d1eba +Block 0002 [ 40]: 2e9cad031109ec88 +Block 0002 [ 41]: 54e83cba6599e437 +Block 0002 [ 42]: 16f1cd22843661be +Block 0002 [ 43]: d628ed0e9ee3d343 +Block 0002 [ 44]: fa8d3b772d22f922 +Block 0002 [ 45]: e4ea1efae60bb099 +Block 0002 [ 46]: 3f8abd4f93844c49 +Block 0002 [ 47]: 72e39e393fc65f19 +Block 0002 [ 48]: 70b3c48abd5ebefe +Block 0002 [ 49]: a251c297f3c9f146 +Block 0002 [ 50]: b6e8da00c83218fb +Block 0002 [ 51]: 502a5e772bac9098 +Block 0002 [ 52]: c717742be58356a3 +Block 0002 [ 53]: afca5b096967d6ab +Block 0002 [ 54]: e97c55d4c7dad2a1 +Block 0002 [ 55]: 452751179df9ea88 +Block 0002 [ 56]: 0789c627ffdbb196 +Block 0002 [ 57]: afa3e13bc2d20692 +Block 0002 [ 58]: c4a9f186650522d8 +Block 0002 [ 59]: a639b0ac85816a68 +Block 0002 [ 60]: a7e813fdfcdb17e0 +Block 0002 [ 61]: 6b9072999b6c766b +Block 0002 [ 62]: c8723a14860af1bc +Block 0002 [ 63]: 175f7fcaf3e3efad +Block 0002 [ 64]: b5dff4ca01082962 +Block 0002 [ 65]: ebf7904697e3e152 +Block 0002 [ 66]: 238a9ceb07db6e94 +Block 0002 [ 67]: dc6c845e0fb7b398 +Block 0002 [ 68]: b5c6122ec3ad1ced +Block 0002 [ 69]: 18f1239a9c6258b6 +Block 0002 [ 70]: 889553b3e5186020 +Block 0002 [ 71]: e46d535f909cff62 +Block 0002 [ 72]: 782fc6a6da899195 +Block 0002 [ 73]: d66602106655e56f +Block 0002 [ 74]: 92b3cea5bda0d657 +Block 0002 [ 75]: ceeac95de2189f8b +Block 0002 [ 76]: cf7d9de3742c540a +Block 0002 [ 77]: 709e7e293a012642 +Block 0002 [ 78]: a07915b0f1ebe100 +Block 0002 [ 79]: b07e80cc2b5dd3e3 +Block 0002 [ 80]: 20ac6fdb448fa0b2 +Block 0002 [ 81]: 94b9942695cbcbb8 +Block 0002 [ 82]: 311f8aaad789bf73 +Block 0002 [ 83]: caf04e5284e0c654 +Block 0002 [ 84]: 9300c30779fe56e4 +Block 0002 [ 85]: f8522aa857490cb1 +Block 0002 [ 86]: 4541922c719d65b4 +Block 0002 [ 87]: a8fe52948c78bea0 +Block 0002 [ 88]: 05c64d5df890f39a +Block 0002 [ 89]: 616ed72012588251 +Block 0002 [ 90]: e0b43de5aaa660e6 +Block 0002 [ 91]: d3531c2cc462424d +Block 0002 [ 92]: 8925e663e8112ab0 +Block 0002 [ 93]: 6e0c51f4b5123b69 +Block 0002 [ 94]: b9a46e0bbaf718c6 +Block 0002 [ 95]: 354c84845c1ea679 +Block 0002 [ 96]: f938f8aeb1dac4aa +Block 0002 [ 97]: 9ce45e15a40dabc0 +Block 0002 [ 98]: 05a443a6d5c0070d +Block 0002 [ 99]: 58de4d3dd78a1f71 +Block 0002 [100]: 7f46561d7b1884b4 +Block 0002 [101]: 3afa62f2f1882385 +Block 0002 [102]: a8242521b2a2dd09 +Block 0002 [103]: e9dd6211f0edc6b1 +Block 0002 [104]: 3684ae9600a661ee +Block 0002 [105]: 3c493b527698fa4a +Block 0002 [106]: acdf8c0ae547bf39 +Block 0002 [107]: cced5db75028ec30 +Block 0002 [108]: e592a369b0df07a2 +Block 0002 [109]: 1447b2d76a0d8b57 +Block 0002 [110]: 8d47814289002e20 +Block 0002 [111]: 8a6cebabe4bfa78c +Block 0002 [112]: b8d5c24d475de52d +Block 0002 [113]: b43ad32ce94d37dc +Block 0002 [114]: 21eca5ff11480da7 +Block 0002 [115]: 13fd97e3efa96b0d +Block 0002 [116]: 8a12187717976abd +Block 0002 [117]: 1a2bc270ca0f2856 +Block 0002 [118]: b836d6475e15f2e2 +Block 0002 [119]: 04f88dfdfd8b2a72 +Block 0002 [120]: ff9c5c6d0d288ad7 +Block 0002 [121]: e177fc6eef6599d8 +Block 0002 [122]: 6b4cb722482ae069 +Block 0002 [123]: aa3b58c166564292 +Block 0002 [124]: 75284d7db7495afa +Block 0002 [125]: a2223c5243a84893 +Block 0002 [126]: e980aaf0fc08301c +Block 0002 [127]: 07e96a224564f561 +Block 0003 [ 0]: 4a5f33e4aa0f4b24 +Block 0003 [ 1]: 74b1599a751a0e40 +Block 0003 [ 2]: 7648bcbafa8fde0e +Block 0003 [ 3]: 472fbc3e7f818be3 +Block 0003 [ 4]: 56a81d1eb0f4e388 +Block 0003 [ 5]: 822b3f5e6b6b1730 +Block 0003 [ 6]: ba45580cb101f4cc +Block 0003 [ 7]: 290754d62e6cce7a +Block 0003 [ 8]: 948f647900b662a2 +Block 0003 [ 9]: 57cfc6df71cf71a0 +Block 0003 [ 10]: 1722ac5aa4429df7 +Block 0003 [ 11]: 2bd56131730893d5 +Block 0003 [ 12]: 3b0fac05fe49310f +Block 0003 [ 13]: 59b94558676c1875 +Block 0003 [ 14]: 712fbccf992c1cfd +Block 0003 [ 15]: ab4c1e67173c95b7 +Block 0003 [ 16]: ca78ac3f3ec05fe1 +Block 0003 [ 17]: 4329991ad1d32531 +Block 0003 [ 18]: 67a577f45b95df88 +Block 0003 [ 19]: 2620b3d3889afff5 +Block 0003 [ 20]: b62732e9b207855c +Block 0003 [ 21]: ec4bac9eff014e78 +Block 0003 [ 22]: d936c2876fc1d56f +Block 0003 [ 23]: 41b37f7919dafd36 +Block 0003 [ 24]: 34f5bfc510b6f1bd +Block 0003 [ 25]: 700780640ab9aa78 +Block 0003 [ 26]: d16e7c95b49d7362 +Block 0003 [ 27]: 6544429cd2615175 +Block 0003 [ 28]: dabf343588eaf771 +Block 0003 [ 29]: d72449a5b3ab5873 +Block 0003 [ 30]: d9b9ca7d55747d23 +Block 0003 [ 31]: 2ece4be1cf5a2e99 +Block 0003 [ 32]: c6cdbc8cd725a922 +Block 0003 [ 33]: b139079c53fcbfd0 +Block 0003 [ 34]: 1e88db198f64fbd3 +Block 0003 [ 35]: 125b55f14ba51789 +Block 0003 [ 36]: 6f96b80b90a7fa45 +Block 0003 [ 37]: 406198e24a0ba096 +Block 0003 [ 38]: a29105896050b5e0 +Block 0003 [ 39]: 945d9788677d3391 +Block 0003 [ 40]: 802e7d305cd63255 +Block 0003 [ 41]: daacbbd0c7393898 +Block 0003 [ 42]: 2610a8d13ebdbe60 +Block 0003 [ 43]: d5953fef56fcf812 +Block 0003 [ 44]: f711a340a8c0c1f2 +Block 0003 [ 45]: d9c066e38168c679 +Block 0003 [ 46]: 6517a2cf0f0ea78c +Block 0003 [ 47]: 48985cd46ec3b306 +Block 0003 [ 48]: 6dc9a39170160a16 +Block 0003 [ 49]: f647600f302a0941 +Block 0003 [ 50]: 04102af1501b521b +Block 0003 [ 51]: 28c50bb275ef128c +Block 0003 [ 52]: c3e7d482090ce9e2 +Block 0003 [ 53]: b6879bee4977d1cf +Block 0003 [ 54]: 8b9d6ef567071bee +Block 0003 [ 55]: 2b02981d3c7fce71 +Block 0003 [ 56]: 1ada3aea276be7af +Block 0003 [ 57]: dd145aeadac33204 +Block 0003 [ 58]: ab18e04356a208a0 +Block 0003 [ 59]: d6e184c97d4b3864 +Block 0003 [ 60]: 3a7507d44c2d6917 +Block 0003 [ 61]: 64bd5b00012136ce +Block 0003 [ 62]: ed77dbf556e054a6 +Block 0003 [ 63]: dca248d800bc89ba +Block 0003 [ 64]: 8f74a5e29933e192 +Block 0003 [ 65]: 59b0460e3583e5ab +Block 0003 [ 66]: ed815fb3133ec6c7 +Block 0003 [ 67]: 151bdbadc9630fc2 +Block 0003 [ 68]: 6096f9a38b0bfdc6 +Block 0003 [ 69]: eaf65100a3cf5c50 +Block 0003 [ 70]: a9f4151b1b900586 +Block 0003 [ 71]: a695457135b20cd3 +Block 0003 [ 72]: ef6c6aac3a3a5497 +Block 0003 [ 73]: e0bb4329cc078888 +Block 0003 [ 74]: 1891f398b5d96011 +Block 0003 [ 75]: fa649c2bca16084d +Block 0003 [ 76]: 1c67e25f5fc82933 +Block 0003 [ 77]: 40b9806b0dee3332 +Block 0003 [ 78]: d91d9eab04d8e05b +Block 0003 [ 79]: 4bfca65c71cae454 +Block 0003 [ 80]: b276a2157bab9cbb +Block 0003 [ 81]: b87f21190c7825f6 +Block 0003 [ 82]: 5d1c99da2395a803 +Block 0003 [ 83]: e456839908106a2e +Block 0003 [ 84]: 42a7a74f484e7b88 +Block 0003 [ 85]: 6547ab46ab3f8e5b +Block 0003 [ 86]: 8e987511f85ca889 +Block 0003 [ 87]: 695238f363bf6cd2 +Block 0003 [ 88]: c6dcf17f6cb7bbc3 +Block 0003 [ 89]: c9f8509c8e84637a +Block 0003 [ 90]: eb517ec83c056f8a +Block 0003 [ 91]: 15b9cdb7f1dfdcae +Block 0003 [ 92]: 2e1194e754a4a2be +Block 0003 [ 93]: 3f6a3a58140e0f45 +Block 0003 [ 94]: 10b1cc31af190c0a +Block 0003 [ 95]: cf73be0f8afd8412 +Block 0003 [ 96]: 9766ec755228c4b2 +Block 0003 [ 97]: 637c3c5b06ca31f6 +Block 0003 [ 98]: 905da5bd011ddc3e +Block 0003 [ 99]: 410f3899cce9eaa5 +Block 0003 [100]: 59150e9b04b4a69d +Block 0003 [101]: bf512fb2757b16e2 +Block 0003 [102]: 94b12f119da458aa +Block 0003 [103]: a1a44cd6b831666d +Block 0003 [104]: a830ff1cee8f2557 +Block 0003 [105]: 2e881fd489a3f707 +Block 0003 [106]: a5868b29b028b67e +Block 0003 [107]: b0d8af6c48ce2cb6 +Block 0003 [108]: d85eecd25d77c1ad +Block 0003 [109]: cbc4a44882e12480 +Block 0003 [110]: 544dbc39292f2f33 +Block 0003 [111]: 8001372dd8c0854d +Block 0003 [112]: cd8de45f5e68497f +Block 0003 [113]: 42800cfa8e9de3b0 +Block 0003 [114]: 4b8db48b1bafa9c5 +Block 0003 [115]: 59c5db08b1255705 +Block 0003 [116]: a7f2bde359a2f516 +Block 0003 [117]: ef96aa9ed9da4791 +Block 0003 [118]: 599f81ad309e3794 +Block 0003 [119]: dbad21c8881f076f +Block 0003 [120]: 31f4ea7cad26f00b +Block 0003 [121]: 33c751b29e8ba961 +Block 0003 [122]: 120e5ac357fde45c +Block 0003 [123]: 5889c87f995ef82e +Block 0003 [124]: d06930cc570bb484 +Block 0003 [125]: 1314f624551afa5d +Block 0003 [126]: 49bccae63ff3135a +Block 0003 [127]: 68aeb82ef612c90b +Block 0004 [ 0]: 75cf7f435057da05 +Block 0004 [ 1]: 5fa9a015edecc3b1 +Block 0004 [ 2]: b3325174a5d45f4b +Block 0004 [ 3]: ac045dd7aa070547 +Block 0004 [ 4]: 760a3bde801efd61 +Block 0004 [ 5]: 29ba53ce7573d56c +Block 0004 [ 6]: 24d2101f7bf4f639 +Block 0004 [ 7]: 83f3556e5e8eb43f +Block 0004 [ 8]: 3cc66877e8d5016a +Block 0004 [ 9]: eb1c35540d8e9906 +Block 0004 [ 10]: f00b55c5c1e06e26 +Block 0004 [ 11]: d6a5165b6c1885a3 +Block 0004 [ 12]: d2811b93f9ab834f +Block 0004 [ 13]: 9d0557258f61edb2 +Block 0004 [ 14]: 07f8255621fc9618 +Block 0004 [ 15]: ae4b586c014f9ec6 +Block 0004 [ 16]: ec3836014f77e3c2 +Block 0004 [ 17]: b9911ef80161aa64 +Block 0004 [ 18]: 9ca62c3dcbc62020 +Block 0004 [ 19]: 3ffb28d86e7ec0e0 +Block 0004 [ 20]: 175679fa7fea816f +Block 0004 [ 21]: 30a6b89d44c8edbb +Block 0004 [ 22]: 48819b0e7f2bcd59 +Block 0004 [ 23]: 525858f7772e2bdb +Block 0004 [ 24]: ef5901d7b18b36a4 +Block 0004 [ 25]: 63bd442f2b3d6340 +Block 0004 [ 26]: 7a6f3878cbb89d56 +Block 0004 [ 27]: ad89aa9f7bf232cc +Block 0004 [ 28]: eeb77b64dcf9a009 +Block 0004 [ 29]: bc7e56339fced56f +Block 0004 [ 30]: 492fe116aefe8020 +Block 0004 [ 31]: 40ef14c0c916f44a +Block 0004 [ 32]: 27c6316e378a82a7 +Block 0004 [ 33]: ce5c0b7e763703a9 +Block 0004 [ 34]: 92c81bd10b1e008d +Block 0004 [ 35]: f6960dd9b508a3ad +Block 0004 [ 36]: 7401e08c33c802b5 +Block 0004 [ 37]: 018100c9dc56b87f +Block 0004 [ 38]: 150a5f6f10b10f8b +Block 0004 [ 39]: 1c284e29c18d225b +Block 0004 [ 40]: a27e542d5db0c667 +Block 0004 [ 41]: ee90318a26046e6c +Block 0004 [ 42]: d765ead85a540399 +Block 0004 [ 43]: 56533db96e0e1eb8 +Block 0004 [ 44]: 58ed5ee5629b9090 +Block 0004 [ 45]: 42e8ab0e460b8d17 +Block 0004 [ 46]: 11213401090ad8bd +Block 0004 [ 47]: bfc4823efc51914b +Block 0004 [ 48]: 134d198b80ce5571 +Block 0004 [ 49]: 6787fd9123ad4f2a +Block 0004 [ 50]: 42d6db3fbbab62cf +Block 0004 [ 51]: 56d6ac42819c8c1c +Block 0004 [ 52]: aea2608b849e88df +Block 0004 [ 53]: 984d22e7422a30db +Block 0004 [ 54]: 52efb62155fb0da7 +Block 0004 [ 55]: 370039ea938625bd +Block 0004 [ 56]: bd24fc01e0675a4b +Block 0004 [ 57]: 42404e268d028fe7 +Block 0004 [ 58]: 67f160abebebfa1d +Block 0004 [ 59]: 94a7b3eee4fb9f4e +Block 0004 [ 60]: f850f2a4d4db2b49 +Block 0004 [ 61]: 22a358c6251e3899 +Block 0004 [ 62]: 96eecea0930a4af7 +Block 0004 [ 63]: d75bce7e1bcaca47 +Block 0004 [ 64]: b80fedcc87eadb1b +Block 0004 [ 65]: 54b96798da68bd16 +Block 0004 [ 66]: b05b9a6dd3622c50 +Block 0004 [ 67]: e58fd5a7cc70ad72 +Block 0004 [ 68]: 1939f6f737bb007a +Block 0004 [ 69]: 08b8ed3e75fd711d +Block 0004 [ 70]: b6bfae0c877fe824 +Block 0004 [ 71]: d9d9e942c5dac552 +Block 0004 [ 72]: 542d87997ff6ab9c +Block 0004 [ 73]: 7f538deeb9e80b2d +Block 0004 [ 74]: 0a937577adc459e3 +Block 0004 [ 75]: 000509503fd7cf32 +Block 0004 [ 76]: f3a1eed284977fde +Block 0004 [ 77]: a8c91bac6a2c33a4 +Block 0004 [ 78]: 5932cd606b8c8e3c +Block 0004 [ 79]: cbd972f41417be96 +Block 0004 [ 80]: e0a5c3151fa6a03c +Block 0004 [ 81]: 10f4fb5b0458fe8a +Block 0004 [ 82]: 61023811aa937552 +Block 0004 [ 83]: d9fee5af6772fec0 +Block 0004 [ 84]: 40de55b55e4fcd16 +Block 0004 [ 85]: 6602ad68ac923126 +Block 0004 [ 86]: 8dd7e22e25f8fade +Block 0004 [ 87]: bdb66972663f2300 +Block 0004 [ 88]: 239ef85d83b8be0c +Block 0004 [ 89]: ae1d7173584d48d8 +Block 0004 [ 90]: 7b8b13ce97966729 +Block 0004 [ 91]: 44e87ba0b1f03d38 +Block 0004 [ 92]: b301ef27465f07ce +Block 0004 [ 93]: d67f6c2b925fc93a +Block 0004 [ 94]: 242668515882aa48 +Block 0004 [ 95]: 22c97753b467a139 +Block 0004 [ 96]: 7997dffb6ad65417 +Block 0004 [ 97]: ea18a9f6c2ed6336 +Block 0004 [ 98]: a73fff3e769afbd8 +Block 0004 [ 99]: e72f037a4d012e3b +Block 0004 [100]: dca1070c025d75a2 +Block 0004 [101]: d7fbf671f67dabb0 +Block 0004 [102]: 8240cb9987def406 +Block 0004 [103]: b5b655582720e251 +Block 0004 [104]: 95f052307724a402 +Block 0004 [105]: 898f694ec2f5d350 +Block 0004 [106]: 13d5949336179f40 +Block 0004 [107]: ab68ce11e05463b3 +Block 0004 [108]: 2a2a87ef1105b426 +Block 0004 [109]: a4a08a1950eb41f3 +Block 0004 [110]: 8d71e5193558fcbd +Block 0004 [111]: 75cbf21dfd1e84a0 +Block 0004 [112]: ba73cfd523a4d584 +Block 0004 [113]: d1468e7bff3d9dcb +Block 0004 [114]: f5b94e5888e3d071 +Block 0004 [115]: b5518abe5e84b654 +Block 0004 [116]: 826fda2d333407cf +Block 0004 [117]: 782db37d070a46b3 +Block 0004 [118]: e44c94bb1a87918e +Block 0004 [119]: ff802d7ff84fd6ac +Block 0004 [120]: ef0b4f377b6ffb0d +Block 0004 [121]: 5f7b900b8e883994 +Block 0004 [122]: d4a14d45b09f8a82 +Block 0004 [123]: 0285e5ddea5b8895 +Block 0004 [124]: 654d6b7867a3338e +Block 0004 [125]: 2df4c15c765b0038 +Block 0004 [126]: eda9ab30d67e4d72 +Block 0004 [127]: 828ee8d236f3dd62 +Block 0005 [ 0]: ce0d36af5fbd6f68 +Block 0005 [ 1]: d77f31b3a4e7f26a +Block 0005 [ 2]: bc8f82dc032a61b1 +Block 0005 [ 3]: 185c441b32babe3a +Block 0005 [ 4]: 1b0a2f90bb29c71c +Block 0005 [ 5]: 1ba919a1a30c9f76 +Block 0005 [ 6]: 2ab39ce0fe493b79 +Block 0005 [ 7]: aee4dc7120a2eecc +Block 0005 [ 8]: 0aa0166037779c01 +Block 0005 [ 9]: 5a242262af9161c4 +Block 0005 [ 10]: 3842cee480356cc8 +Block 0005 [ 11]: ace5c18c115a0327 +Block 0005 [ 12]: 1b242b83c275eb74 +Block 0005 [ 13]: eca18f8e399b2a1b +Block 0005 [ 14]: 9b9767106ea36294 +Block 0005 [ 15]: affd307d6c599270 +Block 0005 [ 16]: ab908e05a95ea728 +Block 0005 [ 17]: 020dcb8c9cad6b76 +Block 0005 [ 18]: 3f29b44c94eeb378 +Block 0005 [ 19]: c74e4becadf080e1 +Block 0005 [ 20]: 3d8a0c09cd8f4063 +Block 0005 [ 21]: 098a3627cc110c01 +Block 0005 [ 22]: 09e91371c95fa227 +Block 0005 [ 23]: d432d7e00528de20 +Block 0005 [ 24]: 4e1b531b205d00e5 +Block 0005 [ 25]: da647659ea08a347 +Block 0005 [ 26]: 75b817075757f562 +Block 0005 [ 27]: 14b2f6fd9ac456ed +Block 0005 [ 28]: e6e6582ad4b42a53 +Block 0005 [ 29]: fa73557a5e1f5a62 +Block 0005 [ 30]: a0ce5eac87b98730 +Block 0005 [ 31]: 5a8ebbf9c6c089b2 +Block 0005 [ 32]: db1b26c427ac7c7e +Block 0005 [ 33]: d9975deef1b77f4b +Block 0005 [ 34]: 0d346a2c877d9431 +Block 0005 [ 35]: d7fdc6e8f9f3b134 +Block 0005 [ 36]: 9430657f2d4551b9 +Block 0005 [ 37]: 7007133cb4cdd3e5 +Block 0005 [ 38]: 707fb7ed2ae55c59 +Block 0005 [ 39]: 93294988cc295c48 +Block 0005 [ 40]: e9bf4db5fbc1cea2 +Block 0005 [ 41]: 1ecb55c4f21a53ea +Block 0005 [ 42]: 9a4a75f979e2dd00 +Block 0005 [ 43]: 2a8e365046889bdc +Block 0005 [ 44]: 0fcfb36e8eb4ab8e +Block 0005 [ 45]: db5d5172030eee7b +Block 0005 [ 46]: ce170097bdb89426 +Block 0005 [ 47]: 56b169d594b09c15 +Block 0005 [ 48]: 225f10a91cdb02c6 +Block 0005 [ 49]: c39861e986249fcf +Block 0005 [ 50]: 7ae7c8c9932bac9b +Block 0005 [ 51]: de703a7cc7ef319b +Block 0005 [ 52]: 03874a532f07feed +Block 0005 [ 53]: a0c2e485d54df77c +Block 0005 [ 54]: b6fc72e0b5716a87 +Block 0005 [ 55]: 0cd89797a6753d97 +Block 0005 [ 56]: 475e735510d86da4 +Block 0005 [ 57]: 39a48e77b0b648d2 +Block 0005 [ 58]: 1bae8bad0cdbc64d +Block 0005 [ 59]: 060b290ffba35f12 +Block 0005 [ 60]: f586c88e2346baaa +Block 0005 [ 61]: 5f689663126ba25f +Block 0005 [ 62]: efe488f8ad30f968 +Block 0005 [ 63]: 653a3374e8cdb567 +Block 0005 [ 64]: 2412dd4b6fcf38fe +Block 0005 [ 65]: 43fdc2554c479aa3 +Block 0005 [ 66]: 4e4ccf4932b4e036 +Block 0005 [ 67]: b91582ee3161d432 +Block 0005 [ 68]: fcd95071b5e8fe01 +Block 0005 [ 69]: cd7523a9dc26c4c7 +Block 0005 [ 70]: 58bf47eadbe043b1 +Block 0005 [ 71]: c493a84069e6d701 +Block 0005 [ 72]: 1310593696022ce3 +Block 0005 [ 73]: a2d3749808a27627 +Block 0005 [ 74]: 4aa81c8265e45a75 +Block 0005 [ 75]: 1d9f43b9c5f2fdd4 +Block 0005 [ 76]: b2d53b7ba81b8c22 +Block 0005 [ 77]: ec6dec5fa3e97412 +Block 0005 [ 78]: ff11b2aa790499a6 +Block 0005 [ 79]: a5d7d7b3d0441fd2 +Block 0005 [ 80]: 92edbafa959a6550 +Block 0005 [ 81]: eb4e74ea7830d355 +Block 0005 [ 82]: 10b0f97c699177ad +Block 0005 [ 83]: 6e774e8e3b84c655 +Block 0005 [ 84]: 884612bf751ae947 +Block 0005 [ 85]: d8844041305209e2 +Block 0005 [ 86]: 4f5519c0b806f42c +Block 0005 [ 87]: ef4f16ef4caca11a +Block 0005 [ 88]: ce1d2390a9426430 +Block 0005 [ 89]: 4a282050ec3e0201 +Block 0005 [ 90]: ffd19c1157afa0c6 +Block 0005 [ 91]: 8fe0b8c890c386fe +Block 0005 [ 92]: 96e12bf8b1f76726 +Block 0005 [ 93]: 7fdd3df6053fb344 +Block 0005 [ 94]: 54abc965a92ee4ac +Block 0005 [ 95]: f02f6ea5f10b439a +Block 0005 [ 96]: 88b14772e5215a3f +Block 0005 [ 97]: 0c9e496f79c5e17a +Block 0005 [ 98]: bc99c4bc45caf42d +Block 0005 [ 99]: 1a7705997987c8a8 +Block 0005 [100]: 474ef0af0b85dfc8 +Block 0005 [101]: 69440fdaeed68cfa +Block 0005 [102]: a119edce664da081 +Block 0005 [103]: 942460fce9bc6f67 +Block 0005 [104]: 56edd7c43e735395 +Block 0005 [105]: e556ef2efa442d4f +Block 0005 [106]: 0ce0161e7944bb2a +Block 0005 [107]: 4a71159f4725f2a2 +Block 0005 [108]: 943a5a97403b8b7e +Block 0005 [109]: e9934b98a50821b1 +Block 0005 [110]: f6f93c625e714a0f +Block 0005 [111]: 0358af71f5f3d707 +Block 0005 [112]: 6513df4363dcd708 +Block 0005 [113]: 45cf7fb3ab28f915 +Block 0005 [114]: f0ecc3fabcbd07e3 +Block 0005 [115]: cf4de4bdad049eaf +Block 0005 [116]: 35594a058df4b18e +Block 0005 [117]: 2b25c1cd2a176af2 +Block 0005 [118]: 45a71cfa08b35c00 +Block 0005 [119]: 6ccb7f53cca788c7 +Block 0005 [120]: 25cb96798577f4dd +Block 0005 [121]: 913c54b058ab1709 +Block 0005 [122]: 2e324b5d5b7df67a +Block 0005 [123]: 6133fac505d62790 +Block 0005 [124]: 1fba4d2401f9870f +Block 0005 [125]: 002139471981c5f4 +Block 0005 [126]: c352642eea37f541 +Block 0005 [127]: dfe6bd2e638fa315 +Block 0006 [ 0]: afc3cb5d24d78ee8 +Block 0006 [ 1]: 659554bb4ec96f7b +Block 0006 [ 2]: a5d0225b10a29e3b +Block 0006 [ 3]: 7c637d0f2afb6e27 +Block 0006 [ 4]: 588aea062939b944 +Block 0006 [ 5]: 38c8afd4744672bc +Block 0006 [ 6]: dab595d8bb4cdffb +Block 0006 [ 7]: bbbef393ca71f32f +Block 0006 [ 8]: f5d45f05109d63d7 +Block 0006 [ 9]: 7a5c3d262c526c0b +Block 0006 [ 10]: da8bafd35e5069b6 +Block 0006 [ 11]: 918297d17ee797fb +Block 0006 [ 12]: 39320d32cf8d4ec6 +Block 0006 [ 13]: 1b70f9daf8e8f854 +Block 0006 [ 14]: 0bd5ef35f6de0a17 +Block 0006 [ 15]: e3723be9854d2946 +Block 0006 [ 16]: dc1939a2b8ddf140 +Block 0006 [ 17]: 08decf3387f67396 +Block 0006 [ 18]: c9627e4527095c6a +Block 0006 [ 19]: b7bea9f784c9c990 +Block 0006 [ 20]: 41e7f8e6b01ba679 +Block 0006 [ 21]: b0e5feb867d6deeb +Block 0006 [ 22]: d7df0a6deb6d443f +Block 0006 [ 23]: 61d7ac33ba0ae2a0 +Block 0006 [ 24]: 93ac174a57b2a517 +Block 0006 [ 25]: 1f3f6b66ae964272 +Block 0006 [ 26]: 2e305f0a1d1518b1 +Block 0006 [ 27]: 823ec4233a6317b1 +Block 0006 [ 28]: 2d43f0617675db3f +Block 0006 [ 29]: aa5cee5075e7aafb +Block 0006 [ 30]: 3451358e5b428d20 +Block 0006 [ 31]: 2e9c26ff065a27ec +Block 0006 [ 32]: 076e96e4f57cb9c4 +Block 0006 [ 33]: d24834ee48497064 +Block 0006 [ 34]: 7619dc9233d449b5 +Block 0006 [ 35]: 85b7ffae30372874 +Block 0006 [ 36]: 3f5c51e637cc3154 +Block 0006 [ 37]: b13ca9971d205e65 +Block 0006 [ 38]: 8947882913f53f2f +Block 0006 [ 39]: 97a68cde46209cae +Block 0006 [ 40]: a74855b63f7fbc78 +Block 0006 [ 41]: 44587edf73bcdf03 +Block 0006 [ 42]: d4135ee125b0d171 +Block 0006 [ 43]: 02306d041dd8846d +Block 0006 [ 44]: 60556ffadf0bea48 +Block 0006 [ 45]: 906d716ee211ead0 +Block 0006 [ 46]: 260d15cb9df34b8d +Block 0006 [ 47]: 13f2447cbbc686e6 +Block 0006 [ 48]: d7b0d80bd9444cee +Block 0006 [ 49]: fe37f87b31ed9190 +Block 0006 [ 50]: c8ffc3ccf7ea129e +Block 0006 [ 51]: 4299090758524b05 +Block 0006 [ 52]: 8b1e449c8aa11c60 +Block 0006 [ 53]: 01205e1c45ae3419 +Block 0006 [ 54]: cc59437963d7ae9b +Block 0006 [ 55]: 5ef5f570555fef01 +Block 0006 [ 56]: 299db72b400c78a5 +Block 0006 [ 57]: c895058e40b1fff2 +Block 0006 [ 58]: c4646d110490c1e9 +Block 0006 [ 59]: 391fc3b24f0db416 +Block 0006 [ 60]: d2f1e8d1b167a8bf +Block 0006 [ 61]: 591fb9b0fa5a1f7c +Block 0006 [ 62]: 313fab10223645fa +Block 0006 [ 63]: 7af43d95e6a1d595 +Block 0006 [ 64]: fe2ca7ee3dbc077b +Block 0006 [ 65]: 21387e44601ec9f9 +Block 0006 [ 66]: 1e00d189c00480cb +Block 0006 [ 67]: dba0f1b11cbe3c7f +Block 0006 [ 68]: 159f5c62e20ac794 +Block 0006 [ 69]: 843053d4f1876f95 +Block 0006 [ 70]: ac74ea56574f4461 +Block 0006 [ 71]: 0cbba62c01911fdf +Block 0006 [ 72]: 9ea785e198bb40d0 +Block 0006 [ 73]: e7e1b5ebde02baf7 +Block 0006 [ 74]: 9093879586663275 +Block 0006 [ 75]: 595241bc3ecebd8a +Block 0006 [ 76]: 3661789351fc4808 +Block 0006 [ 77]: 384847b49b26a1bb +Block 0006 [ 78]: cba3e34a38b91022 +Block 0006 [ 79]: 282e394edb58cc8c +Block 0006 [ 80]: 5ea53580559e126f +Block 0006 [ 81]: dbf2425682255163 +Block 0006 [ 82]: be2fd91a7dbd236c +Block 0006 [ 83]: 2787d4789ad70026 +Block 0006 [ 84]: 9985c2acadfd5b92 +Block 0006 [ 85]: af63c3ed508d8a17 +Block 0006 [ 86]: 900947553bec9649 +Block 0006 [ 87]: 41e3845ffc2ee3fb +Block 0006 [ 88]: f5f2d613417c6091 +Block 0006 [ 89]: 652a905d54d23008 +Block 0006 [ 90]: 696dcba75a422c33 +Block 0006 [ 91]: fbae4a9e644a972b +Block 0006 [ 92]: 56377880c80b7b98 +Block 0006 [ 93]: cdd849ac3456c35d +Block 0006 [ 94]: 06f0c0ea2066d717 +Block 0006 [ 95]: 664c6e9621fe116b +Block 0006 [ 96]: af7aea28925e0b1b +Block 0006 [ 97]: 26e2bfa2ecb4fa8b +Block 0006 [ 98]: 4f2762b4774c8ecf +Block 0006 [ 99]: 9d73f8f4bef65087 +Block 0006 [100]: 90a67f5dc176c8af +Block 0006 [101]: 826ab7e61a3d3bd3 +Block 0006 [102]: 31a4c60bcdbc3a49 +Block 0006 [103]: 58f8320c580548b5 +Block 0006 [104]: 5cd5fb246ce9e50d +Block 0006 [105]: 10e35b24687425ba +Block 0006 [106]: 8b063cb4f7c5f477 +Block 0006 [107]: ac102106f4f45fdb +Block 0006 [108]: a5ced9abd4084b5a +Block 0006 [109]: 14daf22aeed1864f +Block 0006 [110]: 2e6700b8254ed26a +Block 0006 [111]: 58f36abe5aaf3857 +Block 0006 [112]: 8e2fa216babf4555 +Block 0006 [113]: fbfc95b5816ac03f +Block 0006 [114]: c3cf9c67383fb870 +Block 0006 [115]: 099596b7b2291d51 +Block 0006 [116]: 41a2d68d62b26966 +Block 0006 [117]: 371d37c69b85757a +Block 0006 [118]: d6aa71abd42733c0 +Block 0006 [119]: 7695f0121903fa3d +Block 0006 [120]: f99b75a67ba99543 +Block 0006 [121]: febdd604f0037284 +Block 0006 [122]: 68f0e100a0f45435 +Block 0006 [123]: 540f71cbd6879829 +Block 0006 [124]: 3686fecabc98739c +Block 0006 [125]: 9d677f7cbc7f0d15 +Block 0006 [126]: f2d9ba6f91ea7db9 +Block 0006 [127]: 2e97a12d80d19209 +Block 0007 [ 0]: 313f8267b05460dc +Block 0007 [ 1]: a5944cec2d194084 +Block 0007 [ 2]: c46e817919e6c81d +Block 0007 [ 3]: 97473d5f834f53a6 +Block 0007 [ 4]: 2a0723d18d904edd +Block 0007 [ 5]: 00bd2b0cd3ab0226 +Block 0007 [ 6]: 21dfd141814191bb +Block 0007 [ 7]: 90e3842b2e821913 +Block 0007 [ 8]: 552fa8e34c66cd9e +Block 0007 [ 9]: 065ffdbe87182934 +Block 0007 [ 10]: 7da305f47d8112a8 +Block 0007 [ 11]: b93da7a36c47e48b +Block 0007 [ 12]: 423aeb9cd7fcdaeb +Block 0007 [ 13]: 9ff079b2504337ac +Block 0007 [ 14]: 8c300fd256c14597 +Block 0007 [ 15]: 3d2c1c9072e07d2c +Block 0007 [ 16]: 44be13fb2abf1073 +Block 0007 [ 17]: a29c794f375e3bb7 +Block 0007 [ 18]: 49968e31e443d5b9 +Block 0007 [ 19]: 639cc152b7609b35 +Block 0007 [ 20]: 14f8ecb663683555 +Block 0007 [ 21]: 416426eb03dff4f9 +Block 0007 [ 22]: cb0355359f15364e +Block 0007 [ 23]: 14ad1c0b2df92f7b +Block 0007 [ 24]: e9550350c3d61952 +Block 0007 [ 25]: 1f63f70ab40027d7 +Block 0007 [ 26]: 2d43fd0c34cb5b16 +Block 0007 [ 27]: 870999cf969d244a +Block 0007 [ 28]: d63f27cb25e40145 +Block 0007 [ 29]: 1a68af16c9be8706 +Block 0007 [ 30]: 409fb5a60bdf3f5d +Block 0007 [ 31]: 94b232386d591829 +Block 0007 [ 32]: 6319fce6d8a2e6b9 +Block 0007 [ 33]: 97a7b7d0cc7c702d +Block 0007 [ 34]: f0d42918d62b6b78 +Block 0007 [ 35]: 7f95fa2cb797d904 +Block 0007 [ 36]: 209d161fac787ffd +Block 0007 [ 37]: 02161ec72c97ff65 +Block 0007 [ 38]: 5e7491e14b169df3 +Block 0007 [ 39]: 563374e7d14a8f27 +Block 0007 [ 40]: 5cb922cc003e7056 +Block 0007 [ 41]: 83cb96ed64ec843b +Block 0007 [ 42]: ec234b3079e44cc8 +Block 0007 [ 43]: adcb5ba59126d544 +Block 0007 [ 44]: 17d147dd97d4e23e +Block 0007 [ 45]: 800991ca73676481 +Block 0007 [ 46]: ea217a52d19952de +Block 0007 [ 47]: 54e18406e4cc7a8b +Block 0007 [ 48]: 05a862e2e7c772e8 +Block 0007 [ 49]: ad5338c9b9f048b6 +Block 0007 [ 50]: 03e7e379bddb0b14 +Block 0007 [ 51]: 7664afc5d7182dab +Block 0007 [ 52]: 5889d9abb800ee03 +Block 0007 [ 53]: 270c52be464c969d +Block 0007 [ 54]: b03ea59a36910cf6 +Block 0007 [ 55]: 84490f20cf223065 +Block 0007 [ 56]: ee81c65507c78efc +Block 0007 [ 57]: e43da10193dc297e +Block 0007 [ 58]: dd30e335cf68d444 +Block 0007 [ 59]: 69914459c3a59be3 +Block 0007 [ 60]: d7266930c9431f0b +Block 0007 [ 61]: e5ec3e6ea6fa86d7 +Block 0007 [ 62]: 07514caf186ffcba +Block 0007 [ 63]: 7db93dd390ddd186 +Block 0007 [ 64]: a09363d83dee989a +Block 0007 [ 65]: 03df627b1d06fbb0 +Block 0007 [ 66]: 8789a381901384a8 +Block 0007 [ 67]: 08b1ae57f82eae0a +Block 0007 [ 68]: 17f8a362efd8fabb +Block 0007 [ 69]: 0688a79b5d0518ed +Block 0007 [ 70]: 563715746b7cb426 +Block 0007 [ 71]: ab4e46660c304515 +Block 0007 [ 72]: a5f8b5462c4f2a35 +Block 0007 [ 73]: 10e109ba109355ad +Block 0007 [ 74]: f6060f3af89fbe5a +Block 0007 [ 75]: f4d782b55ef091ec +Block 0007 [ 76]: 12be85979c4a838f +Block 0007 [ 77]: ae34eba057515205 +Block 0007 [ 78]: cc0f83c65aa0aa33 +Block 0007 [ 79]: 0633ad5fa544f189 +Block 0007 [ 80]: acced57d705d2199 +Block 0007 [ 81]: 7b35f04f46cac58b +Block 0007 [ 82]: 416d7d82a9bdda0b +Block 0007 [ 83]: c318e3316990307b +Block 0007 [ 84]: c6d55f8e8c00bb70 +Block 0007 [ 85]: 686a412a85992ee4 +Block 0007 [ 86]: 073a5260e237b1f4 +Block 0007 [ 87]: 798249a43be5ef1d +Block 0007 [ 88]: 42aa6e6192ae7cc2 +Block 0007 [ 89]: c360216deaacd3bf +Block 0007 [ 90]: 52c8ab5f0fe4d5c0 +Block 0007 [ 91]: 5a9ee91c1e177a41 +Block 0007 [ 92]: e0b07ff5ce08eb69 +Block 0007 [ 93]: a6d4dd4bcfaafb16 +Block 0007 [ 94]: 1163452af40450b3 +Block 0007 [ 95]: 4e704596475cb453 +Block 0007 [ 96]: ca0f153a0686e2d3 +Block 0007 [ 97]: 882c0b2a380c36ec +Block 0007 [ 98]: 7c29c813bcf409b3 +Block 0007 [ 99]: e4e2b640cfe0d86b +Block 0007 [100]: dbc2cfae7a3a4231 +Block 0007 [101]: fa731843d27f5080 +Block 0007 [102]: 816ad332d19cd0f3 +Block 0007 [103]: db09ce87e9ceb166 +Block 0007 [104]: d2b7b680d5032a8b +Block 0007 [105]: 3adb05a1ccf7ef1c +Block 0007 [106]: 25d8504aee3430bf +Block 0007 [107]: d659f93f8db423ac +Block 0007 [108]: d9aa66776bbdcfc4 +Block 0007 [109]: 8b14098e6561628e +Block 0007 [110]: 69fb649b5db962b1 +Block 0007 [111]: 7665d436fb3b4f77 +Block 0007 [112]: 782c9789e833c68d +Block 0007 [113]: 4817adea4076d69f +Block 0007 [114]: 73e8e6cc802bf100 +Block 0007 [115]: d40c51e9c159a5fc +Block 0007 [116]: 630a7a4dfd286539 +Block 0007 [117]: dc6f3f63c56c265e +Block 0007 [118]: 9a0085dca381888f +Block 0007 [119]: 97b4ff695cbaab3c +Block 0007 [120]: abf4698a130ff8b4 +Block 0007 [121]: 3e226eb60f065ea3 +Block 0007 [122]: faf78a890f83a873 +Block 0007 [123]: c6a292eb570af3c3 +Block 0007 [124]: 7b2d2fa8016553bf +Block 0007 [125]: ae6a78024fc32785 +Block 0007 [126]: 948ba97e8fd28478 +Block 0007 [127]: a7e6438070fcdf5c +Block 0008 [ 0]: 2e9cc9c3e6b135b3 +Block 0008 [ 1]: d20ed84956a6ee5b +Block 0008 [ 2]: 824a4f18130361bd +Block 0008 [ 3]: 2720ec65b42dc705 +Block 0008 [ 4]: 55cf668c6a6858dc +Block 0008 [ 5]: e4edaa3e7f4c0ae5 +Block 0008 [ 6]: b3690f0b517be35d +Block 0008 [ 7]: aab603dab5401cd5 +Block 0008 [ 8]: 9734fd526765de8e +Block 0008 [ 9]: f8a7c8e208c74505 +Block 0008 [ 10]: 3bff0939b8ba936f +Block 0008 [ 11]: 0497f8f783147616 +Block 0008 [ 12]: 35b88fca5c5e8d6f +Block 0008 [ 13]: e63ed3a90c4651d3 +Block 0008 [ 14]: b7c80fdad434b54a +Block 0008 [ 15]: 84036657d5cfbb7c +Block 0008 [ 16]: c5d725fc3f6b8c1e +Block 0008 [ 17]: 17a6efe7658421c6 +Block 0008 [ 18]: f9887ee4c64ade59 +Block 0008 [ 19]: 299efe5dc6bc3dc9 +Block 0008 [ 20]: 389b0a0b9022f882 +Block 0008 [ 21]: 35611ff88c03a5ae +Block 0008 [ 22]: e1a07d24aff18d97 +Block 0008 [ 23]: 4c0bb87a929863dd +Block 0008 [ 24]: 6bc6dbabe096f75f +Block 0008 [ 25]: 9530f345d9303e2e +Block 0008 [ 26]: 088d5ece04da7145 +Block 0008 [ 27]: e8d38ebb18126f0a +Block 0008 [ 28]: b8bd223ef1931cbe +Block 0008 [ 29]: 4978886f78fbea5c +Block 0008 [ 30]: 3bf1ef2947a7252a +Block 0008 [ 31]: 3d1020e7790b3852 +Block 0008 [ 32]: 862a689a33fd5bb7 +Block 0008 [ 33]: 528ecc556a8f8b8c +Block 0008 [ 34]: 92176be498db9417 +Block 0008 [ 35]: 5e8a2a7380544773 +Block 0008 [ 36]: 494309297e14ebc5 +Block 0008 [ 37]: a5713c39d411a1d5 +Block 0008 [ 38]: 7106f6b61968c8ef +Block 0008 [ 39]: 90ffdb92e45e4271 +Block 0008 [ 40]: 6835a84ca857d06c +Block 0008 [ 41]: 7d739c7fca38d272 +Block 0008 [ 42]: a992806a13fb22fc +Block 0008 [ 43]: cecfa6cb668369c9 +Block 0008 [ 44]: 65aa1b4a582bc615 +Block 0008 [ 45]: bbeb50f2709e1070 +Block 0008 [ 46]: a6201dff1dc19643 +Block 0008 [ 47]: bf451423a2dbf1ea +Block 0008 [ 48]: 8836e2fc20b1da97 +Block 0008 [ 49]: 5bcc7001abab5b2c +Block 0008 [ 50]: 6cbff3d65dfdf5b1 +Block 0008 [ 51]: d1dc33283811de18 +Block 0008 [ 52]: 7af1be34e2641ab4 +Block 0008 [ 53]: 3c1ba04e93be61b9 +Block 0008 [ 54]: d4273abf36466331 +Block 0008 [ 55]: 8b35892319de5443 +Block 0008 [ 56]: f9d3ebbdb63cc92f +Block 0008 [ 57]: 5b7e5ef5bddb3c4f +Block 0008 [ 58]: 5259a3dd695c7c6c +Block 0008 [ 59]: db7d68d97cd1b706 +Block 0008 [ 60]: 04fa49a377111938 +Block 0008 [ 61]: 0529a32ae4f9f7fb +Block 0008 [ 62]: b259b442507c105d +Block 0008 [ 63]: 4603efd5764f9460 +Block 0008 [ 64]: 8d25e825f8d56ede +Block 0008 [ 65]: 186e7e8e08895229 +Block 0008 [ 66]: 1d3d7c07ed3b419c +Block 0008 [ 67]: 326baad7ed02fd0d +Block 0008 [ 68]: d8dac3bb50bf67ff +Block 0008 [ 69]: f770b9cab9866625 +Block 0008 [ 70]: 47c3a771429039fb +Block 0008 [ 71]: aac9a678cc80f2c6 +Block 0008 [ 72]: b942f416e5bc48e5 +Block 0008 [ 73]: 2a2d0b0958417b30 +Block 0008 [ 74]: 842d6cf63b07316f +Block 0008 [ 75]: 854f397563c6bdbf +Block 0008 [ 76]: 5d44be1127880a5a +Block 0008 [ 77]: 1766a2b7ffea324c +Block 0008 [ 78]: 61c6bcf062aa12e1 +Block 0008 [ 79]: db9130986d8233fa +Block 0008 [ 80]: 3cae9e52f7517619 +Block 0008 [ 81]: 6bc06914ce32e1cd +Block 0008 [ 82]: 3fc450fdbe333575 +Block 0008 [ 83]: 27a458fd8b358a5f +Block 0008 [ 84]: 8a7f7426828352b8 +Block 0008 [ 85]: bb0c8daac96bc54a +Block 0008 [ 86]: e51721bf776f4385 +Block 0008 [ 87]: c27c103839a47828 +Block 0008 [ 88]: 615902453eae7e54 +Block 0008 [ 89]: 065769df53b50ae9 +Block 0008 [ 90]: e2cdb8c440cd666c +Block 0008 [ 91]: 0a9e983f8bb2c395 +Block 0008 [ 92]: a8ed136a220ffba2 +Block 0008 [ 93]: 4c2104b8a3106274 +Block 0008 [ 94]: f79cd4843458b671 +Block 0008 [ 95]: ca3ab237d1bcd885 +Block 0008 [ 96]: 9208ca5b017118f6 +Block 0008 [ 97]: 542d8219fe025cb5 +Block 0008 [ 98]: ea8b039748259027 +Block 0008 [ 99]: 3ae845cde600d61c +Block 0008 [100]: b97f83cf358075b3 +Block 0008 [101]: 43a916fe6ec08054 +Block 0008 [102]: 955ad4f7f4678783 +Block 0008 [103]: d0b88886cc986d6d +Block 0008 [104]: 7bb2acbb38bfe037 +Block 0008 [105]: eae9e9899b5ddd82 +Block 0008 [106]: cde20f402a22050d +Block 0008 [107]: d72b190fc5bfe98c +Block 0008 [108]: 3b735764df8431ac +Block 0008 [109]: 2ad92f81f927f307 +Block 0008 [110]: 4637052793914f43 +Block 0008 [111]: 7c36bb6fd25addfa +Block 0008 [112]: 826cfbda99be0b03 +Block 0008 [113]: ddf3ced5fc302d83 +Block 0008 [114]: fb8c8449e0910102 +Block 0008 [115]: 8463ff3f92a3292a +Block 0008 [116]: 05bf45d8d32c0aa3 +Block 0008 [117]: 1cf076a04b88d512 +Block 0008 [118]: 6e2d7b51e84ee979 +Block 0008 [119]: a302ddea68252da2 +Block 0008 [120]: 9abde3e462398515 +Block 0008 [121]: e64d3cc9f21b3bbe +Block 0008 [122]: 3dace2ec24cc0c2b +Block 0008 [123]: 88483a20ea38dd8f +Block 0008 [124]: 620ae53ee928d46b +Block 0008 [125]: c7fa0fd20b9ee233 +Block 0008 [126]: cf0b70565fa8d1c0 +Block 0008 [127]: dde107597004f663 +Block 0009 [ 0]: 209a347fd29977e2 +Block 0009 [ 1]: c061a9725908f6cf +Block 0009 [ 2]: 81353c3151dfb6d6 +Block 0009 [ 3]: 926ce448a5ce1128 +Block 0009 [ 4]: 72ef7d779de2768b +Block 0009 [ 5]: cc2e3e7abb982d1c +Block 0009 [ 6]: 6f7bcf77b7858e5c +Block 0009 [ 7]: 4c07d89badf8b0c6 +Block 0009 [ 8]: 0e2098ba415db491 +Block 0009 [ 9]: ba5aab87359547ec +Block 0009 [ 10]: 9f39ce7624c3fa13 +Block 0009 [ 11]: b94ed628f9a619e6 +Block 0009 [ 12]: a96ec7cad41eb137 +Block 0009 [ 13]: 4d7365b0dcac29a9 +Block 0009 [ 14]: 93db4a5f9510ea21 +Block 0009 [ 15]: c2182ccd6366da14 +Block 0009 [ 16]: df49f804b43e7999 +Block 0009 [ 17]: cabc390bd13b9bc8 +Block 0009 [ 18]: b186f52b3846ab6d +Block 0009 [ 19]: ded1bcd95e907934 +Block 0009 [ 20]: 38bf831c2af9e788 +Block 0009 [ 21]: 5346d0899e8a8fca +Block 0009 [ 22]: 16ee9287d6cddb15 +Block 0009 [ 23]: 3f7e53e659f5e0d2 +Block 0009 [ 24]: 4c44d3fac07ced70 +Block 0009 [ 25]: d2839ed10e988d59 +Block 0009 [ 26]: e2276469f6c2c7c5 +Block 0009 [ 27]: f757916ef5395c35 +Block 0009 [ 28]: 6586225cc5ef9ffd +Block 0009 [ 29]: cdee0721f56ae49f +Block 0009 [ 30]: 51cf5ef7a119b1df +Block 0009 [ 31]: 859e7e63b5a143d0 +Block 0009 [ 32]: ae99a2c00c9161b1 +Block 0009 [ 33]: fa3823d62a0374a5 +Block 0009 [ 34]: 3d3c5017570dbf86 +Block 0009 [ 35]: 92639ce301f1b81f +Block 0009 [ 36]: 5523d0e458c01d63 +Block 0009 [ 37]: cb8ddedc266abc88 +Block 0009 [ 38]: 1c7d9f9322dcccf2 +Block 0009 [ 39]: 1c03d8e6b11d883d +Block 0009 [ 40]: 32e030be8b96956b +Block 0009 [ 41]: c840202ff4c8471b +Block 0009 [ 42]: c6730e4209cb0592 +Block 0009 [ 43]: 987560f61edc458e +Block 0009 [ 44]: 54654778d2957045 +Block 0009 [ 45]: 34a83c65a88871e5 +Block 0009 [ 46]: a09e9bbb2df3eb9f +Block 0009 [ 47]: 74490e2824445378 +Block 0009 [ 48]: fe3e62b849649981 +Block 0009 [ 49]: 043556a6df5185b7 +Block 0009 [ 50]: b571d3e4d2e56472 +Block 0009 [ 51]: 43d7d84fbb688f5b +Block 0009 [ 52]: c0a7901239238809 +Block 0009 [ 53]: d6e84ae5d888446f +Block 0009 [ 54]: 15c3cce6a4cccb0c +Block 0009 [ 55]: 6373f9fca0709283 +Block 0009 [ 56]: 51b9bbba928409de +Block 0009 [ 57]: bd7804ec7b8b9b4f +Block 0009 [ 58]: 6e9d64dc2121f5da +Block 0009 [ 59]: f49cddfc3833f51c +Block 0009 [ 60]: a9ebbe0c83c98f3b +Block 0009 [ 61]: dc3efed4e44c0e24 +Block 0009 [ 62]: f16bf46a8082429e +Block 0009 [ 63]: 27b9b38f767ba4c8 +Block 0009 [ 64]: 03ee25cd3f3189d1 +Block 0009 [ 65]: 592af46a525096c8 +Block 0009 [ 66]: e0f410df25491dae +Block 0009 [ 67]: bd2be5e6fb441dc5 +Block 0009 [ 68]: abf8b268d7024d16 +Block 0009 [ 69]: 0fc232b72879a229 +Block 0009 [ 70]: 02ae0ba2bce5cdb1 +Block 0009 [ 71]: 295723bd5f13bf22 +Block 0009 [ 72]: 31c65623d3437798 +Block 0009 [ 73]: 790854810b9f981f +Block 0009 [ 74]: 46ea67f43d9d3b3a +Block 0009 [ 75]: f52a39d525541d8a +Block 0009 [ 76]: 99c295f0ee707df0 +Block 0009 [ 77]: 34fb0aa05c400015 +Block 0009 [ 78]: 97a7e3a1aa073e56 +Block 0009 [ 79]: ea0011e85f251e9a +Block 0009 [ 80]: 93866a3475fd84e9 +Block 0009 [ 81]: bb1b0f3e6c6b3fb0 +Block 0009 [ 82]: 6d29acab032d43f7 +Block 0009 [ 83]: 121cbf273badebae +Block 0009 [ 84]: 58ded818809f6630 +Block 0009 [ 85]: e578892283ff24f1 +Block 0009 [ 86]: 219235a5d502224c +Block 0009 [ 87]: a139fc5f39ac8d65 +Block 0009 [ 88]: 6ec265516ae92429 +Block 0009 [ 89]: b302315a209bae25 +Block 0009 [ 90]: 3f9d17f0357f3139 +Block 0009 [ 91]: 0466be553530b887 +Block 0009 [ 92]: ef804d6297e6b404 +Block 0009 [ 93]: 27049c1938ef9fd9 +Block 0009 [ 94]: f74f27e6a0f7169b +Block 0009 [ 95]: e97a5a3036228ec3 +Block 0009 [ 96]: c1bc91ae9ed2b008 +Block 0009 [ 97]: f00bf18399d36951 +Block 0009 [ 98]: 600cb47d4e4a55ad +Block 0009 [ 99]: 934299f5e7a3d825 +Block 0009 [100]: 4787e7d716a3d9b5 +Block 0009 [101]: e9bcaf5f2d451670 +Block 0009 [102]: ad5e13ee0b217a5a +Block 0009 [103]: dac4ae25e1c6cf3c +Block 0009 [104]: 18e1559471376622 +Block 0009 [105]: 234197f39be8711b +Block 0009 [106]: 0a2b9482ba98ca71 +Block 0009 [107]: b7eddfebd7b2ce53 +Block 0009 [108]: e60c8b75e72b1569 +Block 0009 [109]: ab8b6471bd07c0d9 +Block 0009 [110]: 4d29ef0b49b6b176 +Block 0009 [111]: 87e02204f0af0d6d +Block 0009 [112]: 6da9d35faa1a0990 +Block 0009 [113]: f9b5f5d5f03c1a49 +Block 0009 [114]: a81da4419bd23c36 +Block 0009 [115]: e270cfa27ae3703c +Block 0009 [116]: 6d0a394cab7bc4b5 +Block 0009 [117]: 34785b08faace8c3 +Block 0009 [118]: 20185431d252ad2e +Block 0009 [119]: 66d44ae9078a1741 +Block 0009 [120]: e3e6295ad1bca0d1 +Block 0009 [121]: 33b0dbaa494681d7 +Block 0009 [122]: 61f5dab90b66f2d9 +Block 0009 [123]: 43a6e3bed2cc71e7 +Block 0009 [124]: bf75bc3f9bb5bb02 +Block 0009 [125]: 0d2e74e50ff9f296 +Block 0009 [126]: 5973b5959b00ea90 +Block 0009 [127]: 52a775ae400e714b +Block 0010 [ 0]: 10b705da8395f04c +Block 0010 [ 1]: 3a64c95eb697fc3c +Block 0010 [ 2]: 7586175e549038e1 +Block 0010 [ 3]: 56de6895cef27b26 +Block 0010 [ 4]: e702d37714afa28d +Block 0010 [ 5]: 1629970faf4bfbd5 +Block 0010 [ 6]: 028d51b5e7ca4680 +Block 0010 [ 7]: f9a6b66093100143 +Block 0010 [ 8]: b15dd726704428dd +Block 0010 [ 9]: 4582611de10e16da +Block 0010 [ 10]: e040ed664fd0cd3a +Block 0010 [ 11]: 8bf64cbab6fcf4a0 +Block 0010 [ 12]: 837daa67d2904ba2 +Block 0010 [ 13]: 8045a33944a1fd35 +Block 0010 [ 14]: d4dbd734ec2aa4a6 +Block 0010 [ 15]: 362cbe03aab89d82 +Block 0010 [ 16]: 02d30b08962cde66 +Block 0010 [ 17]: 77602b3de395dd11 +Block 0010 [ 18]: 9d92a45283ff4ca3 +Block 0010 [ 19]: 1e49ca4b9d7df723 +Block 0010 [ 20]: 0c55389b0df259f4 +Block 0010 [ 21]: ffc74e25199d26ba +Block 0010 [ 22]: 646f73d902384812 +Block 0010 [ 23]: 1571d94c86994393 +Block 0010 [ 24]: a640762502fe113b +Block 0010 [ 25]: 6861536ff90a4f1d +Block 0010 [ 26]: 35d5c406d0c930a3 +Block 0010 [ 27]: a4da70145cd20828 +Block 0010 [ 28]: 8e4b4a16c16fc390 +Block 0010 [ 29]: 50d9c0355fa52b2b +Block 0010 [ 30]: 52ca5b52bddfc8ad +Block 0010 [ 31]: c5e896e214b9e11b +Block 0010 [ 32]: e117033bcd9625ef +Block 0010 [ 33]: 100e49c8268d8f2f +Block 0010 [ 34]: 2a958d58b325efdc +Block 0010 [ 35]: a2395a37949ff556 +Block 0010 [ 36]: 4c1e874bca55d04c +Block 0010 [ 37]: 5f1bc5262644b343 +Block 0010 [ 38]: ad11e453e038deaa +Block 0010 [ 39]: 287b94b109d7df97 +Block 0010 [ 40]: 0c424aca407f8984 +Block 0010 [ 41]: 62079d33ca943d72 +Block 0010 [ 42]: e4530fa28668e2d5 +Block 0010 [ 43]: e6daf6dd8a6be133 +Block 0010 [ 44]: a1a3dfd0125ede58 +Block 0010 [ 45]: 760feb30830ae154 +Block 0010 [ 46]: 077ef34a416f5886 +Block 0010 [ 47]: 31687239a635eae0 +Block 0010 [ 48]: 95fd0087afc7c838 +Block 0010 [ 49]: 87ca60d36dd7df36 +Block 0010 [ 50]: dffda96d886a96f4 +Block 0010 [ 51]: f8ad397459b0ad94 +Block 0010 [ 52]: 58097d9ddc18e114 +Block 0010 [ 53]: 0ef111b195052ba1 +Block 0010 [ 54]: 01f720c2f276a54a +Block 0010 [ 55]: 6e1f1243af57995a +Block 0010 [ 56]: 3eb65ece378c1197 +Block 0010 [ 57]: d6fff89c6d4f6bee +Block 0010 [ 58]: 1ee850f36749e874 +Block 0010 [ 59]: 44a84ef91de9cc29 +Block 0010 [ 60]: d4228cc0a1ded059 +Block 0010 [ 61]: 8265ec768f3c31cb +Block 0010 [ 62]: 52d0a6c81f7d7e25 +Block 0010 [ 63]: 60f8f34e0ee51912 +Block 0010 [ 64]: 7e296a5588063666 +Block 0010 [ 65]: d7c340360acfb706 +Block 0010 [ 66]: 5c38e604a7d84d65 +Block 0010 [ 67]: 9394c554e95ef046 +Block 0010 [ 68]: 2ebb479ae3059c4b +Block 0010 [ 69]: 079e88c1483363ca +Block 0010 [ 70]: 720ac22598be7958 +Block 0010 [ 71]: 794417526d2982b5 +Block 0010 [ 72]: 752252a5603ec066 +Block 0010 [ 73]: d62d4cc0b661537d +Block 0010 [ 74]: 8687304a5ce5183c +Block 0010 [ 75]: 8ca8c10b032e3fa8 +Block 0010 [ 76]: c29c11ff6853939c +Block 0010 [ 77]: cae1bae35ceaf6c5 +Block 0010 [ 78]: b2584a08cbf87502 +Block 0010 [ 79]: 1a07c00c94b6e96d +Block 0010 [ 80]: 5ba02dc60341bb67 +Block 0010 [ 81]: 5f3c3c068ff5925a +Block 0010 [ 82]: 310a1f867714e882 +Block 0010 [ 83]: e27e7e95a6030227 +Block 0010 [ 84]: 7eae41077b7cfa57 +Block 0010 [ 85]: e6f885645efb251c +Block 0010 [ 86]: 4afcdde9189673a5 +Block 0010 [ 87]: a8359776d73a509c +Block 0010 [ 88]: 53fbc97624693850 +Block 0010 [ 89]: c5cb54d8681267bd +Block 0010 [ 90]: 94a91156c3ad818c +Block 0010 [ 91]: 486788a97f9eed9c +Block 0010 [ 92]: f1e80bd47e1bead9 +Block 0010 [ 93]: 6c0c8789e7ae2b7f +Block 0010 [ 94]: 2e9fcba124e00bb7 +Block 0010 [ 95]: 14ab4120e959cbb0 +Block 0010 [ 96]: e886072019cdb34b +Block 0010 [ 97]: a5e7dd581c669d1e +Block 0010 [ 98]: c3020e7807e0b773 +Block 0010 [ 99]: d20e054b8604e5af +Block 0010 [100]: fbf072c54ee3a4bd +Block 0010 [101]: f32a5a150b1703e5 +Block 0010 [102]: 25c471f04a072cec +Block 0010 [103]: a59dedf5884094e5 +Block 0010 [104]: 6210d174ecf94984 +Block 0010 [105]: f0c39b9f4040914e +Block 0010 [106]: 210f2b657dd53eda +Block 0010 [107]: 8632ff56c33e7b87 +Block 0010 [108]: 7239c0bbdadfe813 +Block 0010 [109]: 32ec7541d19960d5 +Block 0010 [110]: d85ff9b490aeb9b1 +Block 0010 [111]: 2416348a4822a40a +Block 0010 [112]: e4baef241d563a56 +Block 0010 [113]: 7b378fbc2beb24ba +Block 0010 [114]: a7c65c31bb5bb666 +Block 0010 [115]: d46629a61124fc0b +Block 0010 [116]: d49c3abb0210183d +Block 0010 [117]: d1974949b75ccc07 +Block 0010 [118]: 19329244871efd55 +Block 0010 [119]: c45e9eb14a2eb1ec +Block 0010 [120]: e870bcf4d438375d +Block 0010 [121]: 0359d1c2cb62f251 +Block 0010 [122]: e12903a40147d90e +Block 0010 [123]: c549cd1a1f8a229d +Block 0010 [124]: 3a85f379d1c5f7fe +Block 0010 [125]: 11221154382972bc +Block 0010 [126]: e655c58b7b41b104 +Block 0010 [127]: 22846d513c8c4c61 +Block 0011 [ 0]: 087c4a60f7fdcc8a +Block 0011 [ 1]: a16751907a1c9062 +Block 0011 [ 2]: e5307c613784d75e +Block 0011 [ 3]: 642c9cc06f4e67d4 +Block 0011 [ 4]: c8da783b1213b284 +Block 0011 [ 5]: cc6fb6a6d80b3797 +Block 0011 [ 6]: 3f1398684def9ae4 +Block 0011 [ 7]: 24260a2da339bccf +Block 0011 [ 8]: 8dd645b474415c70 +Block 0011 [ 9]: acfa4ba58a001598 +Block 0011 [ 10]: 9c0b110f98c3afb6 +Block 0011 [ 11]: abbecf2c6893ec40 +Block 0011 [ 12]: 77c8c41012fc9a92 +Block 0011 [ 13]: 610f88076839c41c +Block 0011 [ 14]: 6f082b5261f7e38e +Block 0011 [ 15]: c75e62720817a4d4 +Block 0011 [ 16]: a49ab7174523b5b2 +Block 0011 [ 17]: 63393cc05061577d +Block 0011 [ 18]: ff624379436a6cb2 +Block 0011 [ 19]: a71b7407b4ec74b1 +Block 0011 [ 20]: 044a0eb1dc46b867 +Block 0011 [ 21]: 95ee8cab74458e8b +Block 0011 [ 22]: 1ae75464926aee1b +Block 0011 [ 23]: b0449f73ce98b3a4 +Block 0011 [ 24]: 925483abc8bd86f0 +Block 0011 [ 25]: cc0a60e8210b1eee +Block 0011 [ 26]: 21736abdade24267 +Block 0011 [ 27]: 39bed01022945311 +Block 0011 [ 28]: 273eb86173f1b0ba +Block 0011 [ 29]: 4e74e045d26408a6 +Block 0011 [ 30]: 9bd1d32674b4418b +Block 0011 [ 31]: 5f2db619452b3e6c +Block 0011 [ 32]: 2d2b1b7dc990bcab +Block 0011 [ 33]: 6975d2169d1e64a0 +Block 0011 [ 34]: ac08dec82fb69f97 +Block 0011 [ 35]: 8d86ab2cb64b5743 +Block 0011 [ 36]: 6e52666b53ebb4e1 +Block 0011 [ 37]: 05d9ed8353359686 +Block 0011 [ 38]: 4d8e726410069c75 +Block 0011 [ 39]: 3047edc384cd7ad0 +Block 0011 [ 40]: 5927a66a3693b292 +Block 0011 [ 41]: ec4ddaa0d1062c01 +Block 0011 [ 42]: 56a76e0424f3431b +Block 0011 [ 43]: ff180425a253e617 +Block 0011 [ 44]: aef38fa44093c20f +Block 0011 [ 45]: d9ea2788a5f4b33f +Block 0011 [ 46]: c5ee5f8214eeadd3 +Block 0011 [ 47]: ae26aa6379355549 +Block 0011 [ 48]: 342cf009717a3cf9 +Block 0011 [ 49]: b249d52df9974c94 +Block 0011 [ 50]: daca199ea5162793 +Block 0011 [ 51]: 504440e9f34f2ea4 +Block 0011 [ 52]: 6e4a0ee45733522f +Block 0011 [ 53]: bc002a2d103dafb9 +Block 0011 [ 54]: 21453d25757b20ab +Block 0011 [ 55]: 6de3ec6e8c583fc4 +Block 0011 [ 56]: ba35f66cd858aac1 +Block 0011 [ 57]: cab68224bb07850e +Block 0011 [ 58]: ffd62d859483fbf5 +Block 0011 [ 59]: bddf886f53ae98af +Block 0011 [ 60]: c9c9db7f51294b61 +Block 0011 [ 61]: 2f17b8ac8f19838d +Block 0011 [ 62]: bea386a3c0f2b883 +Block 0011 [ 63]: 5cc8a9bc30b44f60 +Block 0011 [ 64]: f6b8420f06031880 +Block 0011 [ 65]: 6e550e89ed69a4f2 +Block 0011 [ 66]: 0f20af55db3a61f5 +Block 0011 [ 67]: 13d66a8892f20f94 +Block 0011 [ 68]: eca0cb483c58a3c9 +Block 0011 [ 69]: 39f79cfa748dfacb +Block 0011 [ 70]: d30c012a7af33e12 +Block 0011 [ 71]: 082c1ca2b8130ecc +Block 0011 [ 72]: c85e54db0d0637a7 +Block 0011 [ 73]: 01041626ef5c7864 +Block 0011 [ 74]: 8227dfea66b11bf6 +Block 0011 [ 75]: b7d475e79564f7ce +Block 0011 [ 76]: dbd9e472d5cb5511 +Block 0011 [ 77]: 3974a73be4c3e651 +Block 0011 [ 78]: a0dc6811417a4ddf +Block 0011 [ 79]: 91dd84cea94e45e8 +Block 0011 [ 80]: 70b31d33b3591da6 +Block 0011 [ 81]: 08687f898128f78e +Block 0011 [ 82]: 1ba4f787284e0c64 +Block 0011 [ 83]: fc3605e8516c988f +Block 0011 [ 84]: 9e33611951c7459b +Block 0011 [ 85]: e26fbc9ca703c2f3 +Block 0011 [ 86]: ddc8a9b6c1d5b390 +Block 0011 [ 87]: 21b21e9b65a0f690 +Block 0011 [ 88]: 27446f75da28067b +Block 0011 [ 89]: 0320b4243ea5cd7c +Block 0011 [ 90]: 98ddcc6855ee3b8a +Block 0011 [ 91]: 99d70a73cb919721 +Block 0011 [ 92]: c9a802b4526d366a +Block 0011 [ 93]: 9ed10168b49b54ba +Block 0011 [ 94]: f49780fa64c29aa9 +Block 0011 [ 95]: fc8f149967071a63 +Block 0011 [ 96]: 242033b18a01351e +Block 0011 [ 97]: d5d20ee36d53a3a5 +Block 0011 [ 98]: 0def71eae139449c +Block 0011 [ 99]: f48b3ab19e312f27 +Block 0011 [100]: 04d14ab2e4c96da2 +Block 0011 [101]: caf020d484d724e3 +Block 0011 [102]: 3b47556e5f91133a +Block 0011 [103]: 06a6e66d4024926c +Block 0011 [104]: 26b4a90b3a7babff +Block 0011 [105]: da6deb49c640617e +Block 0011 [106]: a0f431571ce0cdf4 +Block 0011 [107]: a7f4018c8028af61 +Block 0011 [108]: 2b9be19108c53caa +Block 0011 [109]: 37dc3ef56277ecf3 +Block 0011 [110]: cb1f1519f7f6409a +Block 0011 [111]: b673f3aa13b9c3bb +Block 0011 [112]: bbf051ef2ef41554 +Block 0011 [113]: 779a335c4687271a +Block 0011 [114]: fcb5e2d10d07cc1e +Block 0011 [115]: 409c972b93d2f0b5 +Block 0011 [116]: 4e1221d61d60556b +Block 0011 [117]: a7171d38abb1b56c +Block 0011 [118]: 22c1e97d366a0242 +Block 0011 [119]: e2d3e159746843b7 +Block 0011 [120]: 4d591a5e23730cc3 +Block 0011 [121]: 903a4842eb68247a +Block 0011 [122]: c4aa3fa64636ef53 +Block 0011 [123]: 7f92f99f0aa91b22 +Block 0011 [124]: 873f5c9e82cfbdf0 +Block 0011 [125]: ac3b0c40f4317688 +Block 0011 [126]: 830675a89d335e0e +Block 0011 [127]: d93df64ab91dfdc9 +Block 0012 [ 0]: 1ad345df4db50eb2 +Block 0012 [ 1]: 7f2a991f509130e9 +Block 0012 [ 2]: 5b11b82461502f75 +Block 0012 [ 3]: d2502b2312475a91 +Block 0012 [ 4]: 235a1b1b8fbaaca7 +Block 0012 [ 5]: 54300afb3c272e47 +Block 0012 [ 6]: c83d4ed5e93d04ea +Block 0012 [ 7]: 92c7e0dab1b161a0 +Block 0012 [ 8]: e391fef7324fedb2 +Block 0012 [ 9]: da51ed473e82976b +Block 0012 [ 10]: da7cf42297440604 +Block 0012 [ 11]: 39c532ece6e4c67e +Block 0012 [ 12]: 2e8ec6fba2b43181 +Block 0012 [ 13]: e4c0272e6a3a7b2b +Block 0012 [ 14]: 61e5121d987d4bfb +Block 0012 [ 15]: 1efc1de2eb195832 +Block 0012 [ 16]: 83ea202c2677629d +Block 0012 [ 17]: 4d553ee685791054 +Block 0012 [ 18]: 9908af39367d6f42 +Block 0012 [ 19]: 0ed9a6e98a863475 +Block 0012 [ 20]: 4fd7b7f0611df61b +Block 0012 [ 21]: 1a215453a7773bab +Block 0012 [ 22]: ca5f63603c63523b +Block 0012 [ 23]: 2e0ca98c896f42b6 +Block 0012 [ 24]: ef33ee178de5e931 +Block 0012 [ 25]: 78a3d15a99e7c46d +Block 0012 [ 26]: 986097342bb0b51b +Block 0012 [ 27]: b79d38b577ef3bd0 +Block 0012 [ 28]: 4c04efe735ee9aa3 +Block 0012 [ 29]: 4408ee8ac6cc9b03 +Block 0012 [ 30]: a964e18a98feebca +Block 0012 [ 31]: e9980c96d51d78a4 +Block 0012 [ 32]: b030a343e1fed12f +Block 0012 [ 33]: af98cd31d6e5f2ae +Block 0012 [ 34]: 37c3268c71d35630 +Block 0012 [ 35]: bdfb0ad9f749f0ba +Block 0012 [ 36]: 4f3e2bf11096123f +Block 0012 [ 37]: 17879701cb4a1a6a +Block 0012 [ 38]: ee36d707bb272a6d +Block 0012 [ 39]: bc80e260e49601e9 +Block 0012 [ 40]: 7864867c5fbcaca2 +Block 0012 [ 41]: 5de9d72cc44e465e +Block 0012 [ 42]: c0610768400af1f7 +Block 0012 [ 43]: d3bfe5033cedf36d +Block 0012 [ 44]: 734de7e52fbc8edf +Block 0012 [ 45]: aca5cdb35f89215c +Block 0012 [ 46]: d9f8cc9d80ad3f5e +Block 0012 [ 47]: a62a68de189b641c +Block 0012 [ 48]: 7c7ca4dadf0d3e57 +Block 0012 [ 49]: 6e5abd429ad14d50 +Block 0012 [ 50]: 02719e587143939b +Block 0012 [ 51]: 00ceef42af11c7e0 +Block 0012 [ 52]: f1c5f4ed527a2440 +Block 0012 [ 53]: eeb79837ce3a0e21 +Block 0012 [ 54]: ad2d4df530faa7f5 +Block 0012 [ 55]: 13687cab0e868fc9 +Block 0012 [ 56]: d22f8dfc671eeae7 +Block 0012 [ 57]: 70e6519287e17172 +Block 0012 [ 58]: 64f0bcd93ce1195c +Block 0012 [ 59]: e863a76e5b71fb30 +Block 0012 [ 60]: 4395c0d11c924dcb +Block 0012 [ 61]: 9f56bb6bf9506f7a +Block 0012 [ 62]: 2afdf7d2ef3c22fb +Block 0012 [ 63]: e77a668d06f5f5f9 +Block 0012 [ 64]: 952ae073e7174ccf +Block 0012 [ 65]: 6c68dd56660ac7ca +Block 0012 [ 66]: 2ff187f2cebb916d +Block 0012 [ 67]: b5381748e6c0350d +Block 0012 [ 68]: 257094c2b57bf7ee +Block 0012 [ 69]: e2e15bc30698034b +Block 0012 [ 70]: c0a07bdbab7b6861 +Block 0012 [ 71]: fc6965990b7123e4 +Block 0012 [ 72]: 1a09c34714985d6c +Block 0012 [ 73]: 66c61d78f3fa0901 +Block 0012 [ 74]: 45b8bd1699612eaf +Block 0012 [ 75]: 6337d206d8f6a1c6 +Block 0012 [ 76]: 1c6e6a883a316d7b +Block 0012 [ 77]: 8e2520966a3f5393 +Block 0012 [ 78]: 28328a2d7ffbd5d8 +Block 0012 [ 79]: 7a13afae5090f487 +Block 0012 [ 80]: dc9e54d596385074 +Block 0012 [ 81]: 7b2a19c9b048959c +Block 0012 [ 82]: 6fa578ecc65e441a +Block 0012 [ 83]: 0e05de01a70a6559 +Block 0012 [ 84]: fe202d50eb104a91 +Block 0012 [ 85]: 7564eb93f410f212 +Block 0012 [ 86]: f242236f542072cb +Block 0012 [ 87]: 262a216932431387 +Block 0012 [ 88]: 269636433d40f862 +Block 0012 [ 89]: 1c297b358273dcea +Block 0012 [ 90]: e4d99ff9affa34c6 +Block 0012 [ 91]: 8aaea2d759ab7f9c +Block 0012 [ 92]: 527932b0e8b922f8 +Block 0012 [ 93]: 3366937699d3cdbe +Block 0012 [ 94]: d80974a91ac0a0b4 +Block 0012 [ 95]: db086bfd83ddf51f +Block 0012 [ 96]: 604078a09efb7a74 +Block 0012 [ 97]: 5785dc0086b89269 +Block 0012 [ 98]: 859596be9c142de9 +Block 0012 [ 99]: 492ca15c36f63554 +Block 0012 [100]: eab20093faab6936 +Block 0012 [101]: 65b2e8dd2926e710 +Block 0012 [102]: d9afd0da91abcf83 +Block 0012 [103]: 2b1ea3e0f35d8b3c +Block 0012 [104]: 8c1cfa61d92384de +Block 0012 [105]: 076752406e32e99c +Block 0012 [106]: 5bb249c53a792191 +Block 0012 [107]: fc8cee3fa34790e5 +Block 0012 [108]: 8549d1fea8dd8798 +Block 0012 [109]: e06853678f64e142 +Block 0012 [110]: f63402296b31f24a +Block 0012 [111]: 26ea2832acb17e48 +Block 0012 [112]: f1a60fdef2a3e415 +Block 0012 [113]: 1326bd0d6192ed1c +Block 0012 [114]: 1b99169d3bf2e65a +Block 0012 [115]: d8f4c1a60f882992 +Block 0012 [116]: 7b02d30fc580dd08 +Block 0012 [117]: 9f56c86fea37b1c5 +Block 0012 [118]: ff8f6119deb1d6b2 +Block 0012 [119]: 9f7d344af36658b9 +Block 0012 [120]: 635732acba33b90c +Block 0012 [121]: bf44366219c55c4a +Block 0012 [122]: 15bbff300adcf605 +Block 0012 [123]: 2bcde7efb0fa12a1 +Block 0012 [124]: 4823d0fc36dc9fa3 +Block 0012 [125]: 61d737e414cbdb5a +Block 0012 [126]: d0ad0e2902139a09 +Block 0012 [127]: 707eb8916b627127 +Block 0013 [ 0]: f5b25a4acd8eac85 +Block 0013 [ 1]: ee959cf39d3c4644 +Block 0013 [ 2]: 78d7bfa8de372b87 +Block 0013 [ 3]: 31d07e82e6e9e4a6 +Block 0013 [ 4]: 53317a8b03edbd30 +Block 0013 [ 5]: 4df04dc0850df577 +Block 0013 [ 6]: 489794583f20cb0b +Block 0013 [ 7]: 15b684ebce4f4fc8 +Block 0013 [ 8]: 493f8ddb94fc6f8e +Block 0013 [ 9]: 5c28a522d742021d +Block 0013 [ 10]: 9ae7e6a23a8f400d +Block 0013 [ 11]: 11454491ba4a02f4 +Block 0013 [ 12]: 87b5a0821f6a8e20 +Block 0013 [ 13]: 220ba016407d5c90 +Block 0013 [ 14]: 153e626fd2d674a7 +Block 0013 [ 15]: 622ff968c50d21ef +Block 0013 [ 16]: 47fde8ffcbe1f793 +Block 0013 [ 17]: 7b503a6b4527e62f +Block 0013 [ 18]: ecd0b784fd42ee2d +Block 0013 [ 19]: e9f295e0c9618983 +Block 0013 [ 20]: d60bd7403ca015d9 +Block 0013 [ 21]: 88edd56f2c209ba1 +Block 0013 [ 22]: 9c0db046364ac775 +Block 0013 [ 23]: f1b38a5f55895ebc +Block 0013 [ 24]: 3fb1e9fb4ce2a19b +Block 0013 [ 25]: e185c2ed252ff095 +Block 0013 [ 26]: 583c36eb1c2895e6 +Block 0013 [ 27]: d496049eea1f17ee +Block 0013 [ 28]: d2388fc090f49393 +Block 0013 [ 29]: e8643bf2a54cccbf +Block 0013 [ 30]: cdeac9a1398b57a2 +Block 0013 [ 31]: 839a73661c2872c0 +Block 0013 [ 32]: 09cc4949586308ba +Block 0013 [ 33]: 24dee87aceef390c +Block 0013 [ 34]: beab4e57f06e1427 +Block 0013 [ 35]: 00204629e891b870 +Block 0013 [ 36]: 657ee461e9159696 +Block 0013 [ 37]: be041415db73f231 +Block 0013 [ 38]: 247f4b5377d4ca7c +Block 0013 [ 39]: 70d415da5bb36bea +Block 0013 [ 40]: 313a1179f617093b +Block 0013 [ 41]: 41bcffd8350e1754 +Block 0013 [ 42]: 2c4f76024e43f645 +Block 0013 [ 43]: 1994dbd3c51e1c31 +Block 0013 [ 44]: 221ad24959953a4c +Block 0013 [ 45]: aa40bbd20a4016c6 +Block 0013 [ 46]: d6bf58116a751602 +Block 0013 [ 47]: 24734bf7a5d389bf +Block 0013 [ 48]: 928f777444bd7d68 +Block 0013 [ 49]: 465cf35d4417a49d +Block 0013 [ 50]: 2f3c687a1bbdaf2f +Block 0013 [ 51]: fd2eb5b5a73f1419 +Block 0013 [ 52]: 5a2cc27e60b1798d +Block 0013 [ 53]: d93a4af5c2492231 +Block 0013 [ 54]: c7a4258fd56c5df3 +Block 0013 [ 55]: e83d9db8ea4ba71d +Block 0013 [ 56]: d7752996d109d14a +Block 0013 [ 57]: ef45b6603c9edf8a +Block 0013 [ 58]: 0efbb174225721de +Block 0013 [ 59]: d2642ac42b528890 +Block 0013 [ 60]: bc6040869673b79b +Block 0013 [ 61]: fc4b0c4ee58ad868 +Block 0013 [ 62]: ded3ebbf16f440da +Block 0013 [ 63]: 75625237408a7862 +Block 0013 [ 64]: 601d8af508992764 +Block 0013 [ 65]: 2132ec3f36fd592b +Block 0013 [ 66]: 4990b4750222cfd0 +Block 0013 [ 67]: c9abaa67cbe284b3 +Block 0013 [ 68]: 597dee2f5ea8ccfd +Block 0013 [ 69]: 7679ae1f07cdfc36 +Block 0013 [ 70]: 1c13c154abf5cb34 +Block 0013 [ 71]: ebe9cc030f0b1a9b +Block 0013 [ 72]: 71cae6255cf82411 +Block 0013 [ 73]: 83708a47b6689ebb +Block 0013 [ 74]: d7cb99b8d8bfe518 +Block 0013 [ 75]: b98021e9f611c058 +Block 0013 [ 76]: fb37596c497e3c88 +Block 0013 [ 77]: a16ac0a883ced256 +Block 0013 [ 78]: b29aaf06bf1d2469 +Block 0013 [ 79]: 1dc488b3457a3f32 +Block 0013 [ 80]: 46402961371a034e +Block 0013 [ 81]: 7877d9505be77805 +Block 0013 [ 82]: 5078ade761e50cfa +Block 0013 [ 83]: 7ec4cd853f9b0335 +Block 0013 [ 84]: a14b957a670d405f +Block 0013 [ 85]: 1722084e87827637 +Block 0013 [ 86]: 15e8e2e3159dccc7 +Block 0013 [ 87]: 0ac1283e5aaada10 +Block 0013 [ 88]: 38a0e878c2a1ce0a +Block 0013 [ 89]: 566bc9d400a99ff4 +Block 0013 [ 90]: 509edd600055f6c3 +Block 0013 [ 91]: a57c5b4f94d5728b +Block 0013 [ 92]: c4b0df787e20289d +Block 0013 [ 93]: 24b30c1d65cf2d27 +Block 0013 [ 94]: 21a6c6fa045f0f88 +Block 0013 [ 95]: 3dd681b3a08f3773 +Block 0013 [ 96]: 725eeb9947bfcd95 +Block 0013 [ 97]: ad56a88e51d68125 +Block 0013 [ 98]: 35caf5c18f20a731 +Block 0013 [ 99]: 2ddd6ec2de7b9fd8 +Block 0013 [100]: 6295f275afd2977a +Block 0013 [101]: e85d4045aa9da6f0 +Block 0013 [102]: 473cc44a01350486 +Block 0013 [103]: 80d86fa1fc760a9a +Block 0013 [104]: 0b7e4a76a6b30ca3 +Block 0013 [105]: 9b0c415641abb4ad +Block 0013 [106]: a58f46926db36f37 +Block 0013 [107]: 9558bb81a088fbf8 +Block 0013 [108]: 20ab2645bfcd5707 +Block 0013 [109]: 41459b186702a0a2 +Block 0013 [110]: f01bcb9dd08ef05e +Block 0013 [111]: 91613230b930f3d7 +Block 0013 [112]: bd0c9a81312cf8bf +Block 0013 [113]: 3b521db4eda40f02 +Block 0013 [114]: 5f99993d710e0150 +Block 0013 [115]: 2efe9490a78cd199 +Block 0013 [116]: c29b3bc4d52109cc +Block 0013 [117]: cc9a7182f55cd6ab +Block 0013 [118]: fc674176b0dc3548 +Block 0013 [119]: d33b6146b3f1ab1a +Block 0013 [120]: 5531827ddf03bf29 +Block 0013 [121]: a301b4d782e7f83d +Block 0013 [122]: 8fe1e8d8657cd51c +Block 0013 [123]: abdecfdafada2c2e +Block 0013 [124]: e94378ab518f1d8a +Block 0013 [125]: 18c0089c7d48b989 +Block 0013 [126]: 91aefb6654bfba5c +Block 0013 [127]: 727fe8bdc1d2a601 +Block 0014 [ 0]: 10b1676c40244bb4 +Block 0014 [ 1]: 0ab039140f617e39 +Block 0014 [ 2]: dd79402081be7e8a +Block 0014 [ 3]: 79cee37643926e99 +Block 0014 [ 4]: f195ac2b27bae925 +Block 0014 [ 5]: f2a52f91848f0b1a +Block 0014 [ 6]: 55874c67614a346c +Block 0014 [ 7]: 0365bb7b50200a78 +Block 0014 [ 8]: 06421ea996b48809 +Block 0014 [ 9]: 2c28753bde627a8e +Block 0014 [ 10]: 2bf761bc6e2851be +Block 0014 [ 11]: e61da0f18228ce08 +Block 0014 [ 12]: 1c909989f8ff4a0c +Block 0014 [ 13]: b4c9f8b096bd52e1 +Block 0014 [ 14]: e0a3710feca1e3cc +Block 0014 [ 15]: acd36c867bedbb5b +Block 0014 [ 16]: 06bb06ddcd6997c3 +Block 0014 [ 17]: 5049d60c6e65e147 +Block 0014 [ 18]: 59a58a1ccff02b1a +Block 0014 [ 19]: 2d813ae8f5e627b8 +Block 0014 [ 20]: f7a3b8e855dfeb31 +Block 0014 [ 21]: 95a144f33b8d6865 +Block 0014 [ 22]: 48608e431db16dff +Block 0014 [ 23]: 5603d21bea9814e1 +Block 0014 [ 24]: 29a0395b87dfa45f +Block 0014 [ 25]: 94ba29202947a04a +Block 0014 [ 26]: add8292182af9466 +Block 0014 [ 27]: 3133c1ea696e1492 +Block 0014 [ 28]: fc4c66d16b34541a +Block 0014 [ 29]: d07d4bd572129296 +Block 0014 [ 30]: 21fabcc60cd7579b +Block 0014 [ 31]: 108a4ec2c3736878 +Block 0014 [ 32]: 1a7c4bd5f871ee74 +Block 0014 [ 33]: 59de5a617bf3f1db +Block 0014 [ 34]: 6d42b9e076aa6f5b +Block 0014 [ 35]: 4f44e6b995e08524 +Block 0014 [ 36]: 884b59cf9e61d728 +Block 0014 [ 37]: b63870e49d382a8e +Block 0014 [ 38]: e9f2a844db92cd51 +Block 0014 [ 39]: 7b47ba589406327c +Block 0014 [ 40]: 889bde34d1a312d2 +Block 0014 [ 41]: 0afbd1c0acc0fc19 +Block 0014 [ 42]: 7fc655169f230234 +Block 0014 [ 43]: 52c31ef06c1bef89 +Block 0014 [ 44]: 3fda04354e8054bc +Block 0014 [ 45]: 6060cdf695c598b4 +Block 0014 [ 46]: 07717cf2e169176e +Block 0014 [ 47]: 8e20cddb52f2cce8 +Block 0014 [ 48]: 88c93460aa78072d +Block 0014 [ 49]: 919f9fe662867b98 +Block 0014 [ 50]: b0a0f9f25b168bb8 +Block 0014 [ 51]: aa62d17fc6d9e630 +Block 0014 [ 52]: b5c64f4551eeeb17 +Block 0014 [ 53]: 451de645c0be63d8 +Block 0014 [ 54]: 16a451d91dc56ce6 +Block 0014 [ 55]: d47a79d435d0c6b3 +Block 0014 [ 56]: d36e1bc27b66b211 +Block 0014 [ 57]: 5a0412bcba3f0648 +Block 0014 [ 58]: d63998a31aa4403d +Block 0014 [ 59]: 0b6890275cd12195 +Block 0014 [ 60]: f41dc35ba2ee18dd +Block 0014 [ 61]: e52134ebb9407340 +Block 0014 [ 62]: e30e8684808a8207 +Block 0014 [ 63]: 6873a33cd17b1d42 +Block 0014 [ 64]: 2f6d2bc803375757 +Block 0014 [ 65]: 4c865ecb4981f520 +Block 0014 [ 66]: a4c88995838907d1 +Block 0014 [ 67]: a7c3e8d3c26c8a7e +Block 0014 [ 68]: 0f9f7be519c491b5 +Block 0014 [ 69]: ff2778b2dbb8b68d +Block 0014 [ 70]: 40c257be8af04112 +Block 0014 [ 71]: 4774c5f446e5ec29 +Block 0014 [ 72]: 16b8e4ea48ce6762 +Block 0014 [ 73]: 1b8bf07b5c72d62f +Block 0014 [ 74]: f957fbafcf0203f1 +Block 0014 [ 75]: 280aba1ffcf5548c +Block 0014 [ 76]: 78c193e68f2279fe +Block 0014 [ 77]: 32ad8f36dca6bc0a +Block 0014 [ 78]: 99df6ce337faa989 +Block 0014 [ 79]: 9c7b79fc62ed39bf +Block 0014 [ 80]: 5c48affa90dc91d6 +Block 0014 [ 81]: d902824f2de78b36 +Block 0014 [ 82]: ca800b35c6c4a3d7 +Block 0014 [ 83]: a2a0e389d67b2219 +Block 0014 [ 84]: 84abe64d24cda2fa +Block 0014 [ 85]: 3b8fee610918ae1c +Block 0014 [ 86]: 4807e19d49d2620e +Block 0014 [ 87]: 8a4daac02dd5a1f1 +Block 0014 [ 88]: 84193ecf9397a8ac +Block 0014 [ 89]: 3a878d3c7143626d +Block 0014 [ 90]: fefa2fea15776bed +Block 0014 [ 91]: b5b3aff0e3764326 +Block 0014 [ 92]: bb6cf890ad7bdd93 +Block 0014 [ 93]: 05db7bbb378d5b4a +Block 0014 [ 94]: ef536b5401914b3c +Block 0014 [ 95]: 1669cea05508ca6d +Block 0014 [ 96]: c6fa5dcd69b2289c +Block 0014 [ 97]: 81c4f6e588e88828 +Block 0014 [ 98]: f79df208f6a28f72 +Block 0014 [ 99]: eff01bd909548eaa +Block 0014 [100]: f3aadefe5fa688f7 +Block 0014 [101]: 5eb8f34faad19615 +Block 0014 [102]: 76e2160b0f8a3be3 +Block 0014 [103]: 384d6f6d12bf33dd +Block 0014 [104]: e19b1a15721e64ec +Block 0014 [105]: 56fe02cb2dd6bff7 +Block 0014 [106]: ea4740f275b38022 +Block 0014 [107]: 22c0fe908d71be63 +Block 0014 [108]: bbbb17d83f8ceaac +Block 0014 [109]: b4131310f114b478 +Block 0014 [110]: a30b7094283ce815 +Block 0014 [111]: f37b55dab3f0111a +Block 0014 [112]: 50b86270bad3f5cd +Block 0014 [113]: d8712d30644285da +Block 0014 [114]: 6a98fade890e4928 +Block 0014 [115]: 7ea0752485687df3 +Block 0014 [116]: dee516c8e6167ea6 +Block 0014 [117]: d6d6fdf505410090 +Block 0014 [118]: b32bc9d8ca917423 +Block 0014 [119]: 2d9f32b5bbdb1ccf +Block 0014 [120]: 35da94c8a2408b96 +Block 0014 [121]: f65500bffa03086c +Block 0014 [122]: 88b0596f10ff559e +Block 0014 [123]: 5cb9a2dedceb1a38 +Block 0014 [124]: 72360e96f822afd8 +Block 0014 [125]: 395b93cc58ec538a +Block 0014 [126]: 8d974a371c3f3083 +Block 0014 [127]: bca4da67b8208cca +Block 0015 [ 0]: f189eac80b130e98 +Block 0015 [ 1]: 33f6733a94d003dd +Block 0015 [ 2]: a6ac8be5d69abb9c +Block 0015 [ 3]: 9284f0e1ff25fa3e +Block 0015 [ 4]: 974c173009f23b54 +Block 0015 [ 5]: f039f84eac6c7176 +Block 0015 [ 6]: 6eeb055e842f01a6 +Block 0015 [ 7]: f4b998946c13fd7e +Block 0015 [ 8]: f9a6bd32f6917a3f +Block 0015 [ 9]: 123d884226b23a95 +Block 0015 [ 10]: dbcfa8deb02bde7a +Block 0015 [ 11]: 19e40500041dff85 +Block 0015 [ 12]: 98a779869b36095b +Block 0015 [ 13]: f1a4665aa48df2aa +Block 0015 [ 14]: f12aee1bbe71e754 +Block 0015 [ 15]: 2832355f0859ae9f +Block 0015 [ 16]: e36f3ac620b21342 +Block 0015 [ 17]: 18d5d719e771ef0a +Block 0015 [ 18]: 7071360728fb35b8 +Block 0015 [ 19]: 7f0d4cd2b1a2dbfc +Block 0015 [ 20]: e66f2beca141c0c2 +Block 0015 [ 21]: 633620378d948360 +Block 0015 [ 22]: 09bf7ab13b7b8113 +Block 0015 [ 23]: cb30b7662b21ab38 +Block 0015 [ 24]: 2edc4731d2308a7e +Block 0015 [ 25]: 4e49a895a5ef98f6 +Block 0015 [ 26]: db34f4043edc554c +Block 0015 [ 27]: 30697edc4c093bfb +Block 0015 [ 28]: 5797f671e7bc95f7 +Block 0015 [ 29]: d74bd8d2d1a1e1b0 +Block 0015 [ 30]: f583913e4ff8009e +Block 0015 [ 31]: 10281ef2dca1f23d +Block 0015 [ 32]: 8127bd68bf85332f +Block 0015 [ 33]: e6ff6cbc20158925 +Block 0015 [ 34]: 98ab39f4f1d48bef +Block 0015 [ 35]: e25a5306cb2675a8 +Block 0015 [ 36]: 2b2562295968c33c +Block 0015 [ 37]: 6358a7dfcf36d573 +Block 0015 [ 38]: 8cbd7034d97fd867 +Block 0015 [ 39]: f06ab20be6ace852 +Block 0015 [ 40]: 53b92749e6daba84 +Block 0015 [ 41]: 13a93af10eb8a565 +Block 0015 [ 42]: 84d658b873d03cc4 +Block 0015 [ 43]: b02815931e125a52 +Block 0015 [ 44]: fffc1b1cdf95d195 +Block 0015 [ 45]: ee73a37dadb40b39 +Block 0015 [ 46]: 9e4e88a2ae5dc686 +Block 0015 [ 47]: 1385cd88e6425087 +Block 0015 [ 48]: 4d772741406ee491 +Block 0015 [ 49]: 6e9e9271fb4edf7a +Block 0015 [ 50]: 5b02a5717a3acaf7 +Block 0015 [ 51]: 24882157db0dcda3 +Block 0015 [ 52]: 4a1688e4d711fd76 +Block 0015 [ 53]: ad144c4d2eea708a +Block 0015 [ 54]: 8aa4f446306360c7 +Block 0015 [ 55]: bf677939988d20e0 +Block 0015 [ 56]: c664e88326639846 +Block 0015 [ 57]: 97b47955a332e498 +Block 0015 [ 58]: 43b7457f3a89c803 +Block 0015 [ 59]: 15f108424f133523 +Block 0015 [ 60]: 60ef61eab9430dc0 +Block 0015 [ 61]: 41978abdc34630ca +Block 0015 [ 62]: 80fdee0a502c933a +Block 0015 [ 63]: 40aeb6bcf72a83dd +Block 0015 [ 64]: c34873b79f92feda +Block 0015 [ 65]: 93b287cc7f2d6576 +Block 0015 [ 66]: a5e423046b37f7b5 +Block 0015 [ 67]: 3e45cc879804f363 +Block 0015 [ 68]: 8089be076d83ec63 +Block 0015 [ 69]: 7f942e9341bfef64 +Block 0015 [ 70]: fc36f40b2c23727c +Block 0015 [ 71]: 88f59f1b7aab23f6 +Block 0015 [ 72]: 6cd961e20b46cf04 +Block 0015 [ 73]: af8daa17307ece9f +Block 0015 [ 74]: 55c8a732a5024405 +Block 0015 [ 75]: 493351c9d90f5dca +Block 0015 [ 76]: e383eb9d2b702083 +Block 0015 [ 77]: 3531d76a907ff09b +Block 0015 [ 78]: 8b948c1f1adf708c +Block 0015 [ 79]: f60219e3c20f81bf +Block 0015 [ 80]: fdef7e1d0096ae36 +Block 0015 [ 81]: 0023848ed3244880 +Block 0015 [ 82]: ae70ea7e1e56bf11 +Block 0015 [ 83]: 6e32bdb76fe2ca3c +Block 0015 [ 84]: 269abe8ddbe52a74 +Block 0015 [ 85]: 2850442d72280b43 +Block 0015 [ 86]: 22d905fb996b5ab9 +Block 0015 [ 87]: 287e2018200cad12 +Block 0015 [ 88]: 6a1fe428bd732e3f +Block 0015 [ 89]: 4eb723cfea7bb304 +Block 0015 [ 90]: 530dbd634dd3efe3 +Block 0015 [ 91]: 74800758ff2daba1 +Block 0015 [ 92]: 90e457d82488bb2f +Block 0015 [ 93]: 1830be721f3ef8f8 +Block 0015 [ 94]: 5ccb3fab432a940a +Block 0015 [ 95]: b6ea244a748381a3 +Block 0015 [ 96]: b52aa1d526514b32 +Block 0015 [ 97]: 56337c73fe59a3bd +Block 0015 [ 98]: 823e910e9955c22f +Block 0015 [ 99]: 828b237a8aca3c43 +Block 0015 [100]: 805565bdb4eaf460 +Block 0015 [101]: 68cd5ca7e6a0f2fc +Block 0015 [102]: 2932126750b1bf54 +Block 0015 [103]: d96142902c6521c5 +Block 0015 [104]: bdba35f039f09c7d +Block 0015 [105]: d90d774b89e2fa8c +Block 0015 [106]: af4b578a109f3cbb +Block 0015 [107]: e7780dd887a4e339 +Block 0015 [108]: 1fd0a50762a32802 +Block 0015 [109]: 50daa087e523e884 +Block 0015 [110]: 3e94bce39aaeefbf +Block 0015 [111]: 99807216aaa83931 +Block 0015 [112]: 7fe25144749c8f9f +Block 0015 [113]: abbada9b71d20f73 +Block 0015 [114]: a6c6d5de3a4c4eab +Block 0015 [115]: 4238c5b727ddab36 +Block 0015 [116]: 65013e9f62f9c1e2 +Block 0015 [117]: 2e3ba5a1d874ac1c +Block 0015 [118]: 14b6ead39de6c35d +Block 0015 [119]: a59f40506f9bfde1 +Block 0015 [120]: 12d16d162b0cb94c +Block 0015 [121]: 87beca102f670103 +Block 0015 [122]: 84f177dddbb32ccf +Block 0015 [123]: fb7aed944a854935 +Block 0015 [124]: 70eb5f312639686f +Block 0015 [125]: 303f408c14c9e843 +Block 0015 [126]: fb6ba597191585b2 +Block 0015 [127]: 1e824a1b47167883 +Block 0016 [ 0]: e1ddeb06fb830a30 +Block 0016 [ 1]: d9ceeeb4dc057082 +Block 0016 [ 2]: 464dfdb178004fc9 +Block 0016 [ 3]: 98bccedb76dddac2 +Block 0016 [ 4]: da66667814cbf9c2 +Block 0016 [ 5]: b5f24d697ddbd51f +Block 0016 [ 6]: 54ef6a4c43dba9a8 +Block 0016 [ 7]: 1e525968c22632cb +Block 0016 [ 8]: 8bef045bd2e18cf4 +Block 0016 [ 9]: b592f422d19ec71e +Block 0016 [ 10]: 7690ed8e96aced5b +Block 0016 [ 11]: 6126a2deb2a336f1 +Block 0016 [ 12]: a3fa671528218d61 +Block 0016 [ 13]: 41c3390dc61f4dd2 +Block 0016 [ 14]: cdae2748aa147504 +Block 0016 [ 15]: 0dee773c929709ea +Block 0016 [ 16]: 413ae9680850dcd0 +Block 0016 [ 17]: 7ed328cf552481d4 +Block 0016 [ 18]: b66e178fb368811a +Block 0016 [ 19]: 251b75d20032bf7a +Block 0016 [ 20]: 545e1f4ef50e1fd8 +Block 0016 [ 21]: 2c91fc1f70cbdf5d +Block 0016 [ 22]: fc950316eb56d1a5 +Block 0016 [ 23]: 57f2ac7ad2d8e7c4 +Block 0016 [ 24]: 254bc347e7938b20 +Block 0016 [ 25]: 241ac053e0b11fac +Block 0016 [ 26]: 54fe9568bdb48368 +Block 0016 [ 27]: 5b1df834c305aaab +Block 0016 [ 28]: 0b6677fe6f663d73 +Block 0016 [ 29]: 2a58d4e0d23987bf +Block 0016 [ 30]: eed5f52ba9cfbeee +Block 0016 [ 31]: e901a61d3ac59b61 +Block 0016 [ 32]: a1b047e2d37cd3b1 +Block 0016 [ 33]: b1932b38a69fd47e +Block 0016 [ 34]: 67a1438ad6a91e4c +Block 0016 [ 35]: 47747d87352a5176 +Block 0016 [ 36]: 89b3e43ee9466ab2 +Block 0016 [ 37]: 7d1bf0dad3286e44 +Block 0016 [ 38]: ff2505d940b11463 +Block 0016 [ 39]: 08da9591c67460e2 +Block 0016 [ 40]: 66f29fc0597f157f +Block 0016 [ 41]: 4819aff7a4691283 +Block 0016 [ 42]: 5a8b617bacc4ad46 +Block 0016 [ 43]: ebefc29bd65b838f +Block 0016 [ 44]: 05ff5dd1e5b3ab2e +Block 0016 [ 45]: 626c0f1ec1e47007 +Block 0016 [ 46]: 7a7b03b162769bec +Block 0016 [ 47]: 2e34537f239786fe +Block 0016 [ 48]: cb19fa94cc202fe2 +Block 0016 [ 49]: 31434f64bee338d2 +Block 0016 [ 50]: ba1eb78fb1b860fe +Block 0016 [ 51]: af72f1fe3ca7be85 +Block 0016 [ 52]: e5707ea32838fa1f +Block 0016 [ 53]: 69370e3f3c439886 +Block 0016 [ 54]: 373aa92fe81eff81 +Block 0016 [ 55]: 4f19d93514ca2f6d +Block 0016 [ 56]: c45314514c999c2c +Block 0016 [ 57]: 48636e71fbb8e2e2 +Block 0016 [ 58]: 6fd04c75f37d7cf5 +Block 0016 [ 59]: 535fffc75b2845af +Block 0016 [ 60]: 116f083a20faf1ea +Block 0016 [ 61]: a6b9cb30c10f4d7d +Block 0016 [ 62]: f65f50637963ed64 +Block 0016 [ 63]: ef45e24b1895a1e0 +Block 0016 [ 64]: 3cf86c8f7c86c83c +Block 0016 [ 65]: 7bb329c554448bc9 +Block 0016 [ 66]: b654af05945ffba9 +Block 0016 [ 67]: 05d3a07ecf3e821b +Block 0016 [ 68]: 2df71ff3f80362a7 +Block 0016 [ 69]: 79127958922bcbb3 +Block 0016 [ 70]: 622d190346b38432 +Block 0016 [ 71]: bf2dc65337296ccd +Block 0016 [ 72]: d6def66a26196560 +Block 0016 [ 73]: 122c98a535332c4d +Block 0016 [ 74]: 3b1169fcbf2e9411 +Block 0016 [ 75]: 9db2f647a52b8fe1 +Block 0016 [ 76]: f37e7eaf346c6c92 +Block 0016 [ 77]: 4aec23b4617cbd25 +Block 0016 [ 78]: 12cc694713dcd514 +Block 0016 [ 79]: 15a22d24f142459b +Block 0016 [ 80]: 8ec4e9db5dd2a88e +Block 0016 [ 81]: a4451dc90a8d2b75 +Block 0016 [ 82]: f92f552a4edc9084 +Block 0016 [ 83]: 233e0e15607eede6 +Block 0016 [ 84]: 3856b3e05a6c9904 +Block 0016 [ 85]: e3f46537f77c0332 +Block 0016 [ 86]: 24bc337ec13085f5 +Block 0016 [ 87]: 8ccdb10b7dd2de17 +Block 0016 [ 88]: 151b7ae5357d3e4b +Block 0016 [ 89]: f19457cb407fe87d +Block 0016 [ 90]: 6ea7efee69876066 +Block 0016 [ 91]: 51bb185a42a9ceb1 +Block 0016 [ 92]: 014c91e31f516f65 +Block 0016 [ 93]: 321202000b51bffd +Block 0016 [ 94]: 0b70e28615347b98 +Block 0016 [ 95]: ea6794917d1a9560 +Block 0016 [ 96]: fdd5631f8f8f3323 +Block 0016 [ 97]: d51704a4a308cfe2 +Block 0016 [ 98]: 65c17ee053a0e313 +Block 0016 [ 99]: 1ecd108d43490cdc +Block 0016 [100]: 8f6b57024c6aa782 +Block 0016 [101]: 161a22a97dbf0ad4 +Block 0016 [102]: 774aff9e1b3f6cdd +Block 0016 [103]: e588f347ad869391 +Block 0016 [104]: 4c2eee9fb6c6c0fc +Block 0016 [105]: 5834b8b51e701a47 +Block 0016 [106]: d4526cbb4d9bf681 +Block 0016 [107]: 0cadec8e56b0c70a +Block 0016 [108]: e1419c694af58241 +Block 0016 [109]: 2b51d757e16bb60b +Block 0016 [110]: a709cc9e3ac3cba5 +Block 0016 [111]: d500ae924ab9d656 +Block 0016 [112]: 4ef55d95efef9c67 +Block 0016 [113]: f4928cc63b92c4f7 +Block 0016 [114]: 201936d80b3bd3c2 +Block 0016 [115]: 367bfa07ca4c2aa8 +Block 0016 [116]: 7dcf97e3f616bfea +Block 0016 [117]: 09a9c5b8fbba724a +Block 0016 [118]: 4be5048497c65e6b +Block 0016 [119]: a38719b4833e8880 +Block 0016 [120]: 6fbb2b72f13bb81e +Block 0016 [121]: c0373061dbe0377e +Block 0016 [122]: 2c963162f790bbd5 +Block 0016 [123]: dfd2bc34bb295f3f +Block 0016 [124]: 4ccef74b9fab3a08 +Block 0016 [125]: d1bdf49c5e2397e5 +Block 0016 [126]: 43fc92247bddea27 +Block 0016 [127]: e3e79824dace601e +Block 0017 [ 0]: f8c0d8dbd83c6a93 +Block 0017 [ 1]: cbd22848e9e04bef +Block 0017 [ 2]: 8df51e47313583dd +Block 0017 [ 3]: 4e8920fa638fb77d +Block 0017 [ 4]: d5eb6e73d621f8ec +Block 0017 [ 5]: 8118af023e35d71c +Block 0017 [ 6]: 23ccdde7874145db +Block 0017 [ 7]: 33fbe77067316647 +Block 0017 [ 8]: 3554a4f1579eb0e1 +Block 0017 [ 9]: 9b783e2c31916c6d +Block 0017 [ 10]: 749b91c44deb5b1d +Block 0017 [ 11]: 8f34a76a9abfde3b +Block 0017 [ 12]: f288d5114f2cdd30 +Block 0017 [ 13]: b0eaa31bf934816a +Block 0017 [ 14]: 45dc0133186af561 +Block 0017 [ 15]: bee61e5d7de2b407 +Block 0017 [ 16]: 9cd877b670a9f7dc +Block 0017 [ 17]: 3d799d42cbcdabd8 +Block 0017 [ 18]: 2adc8fa64b275533 +Block 0017 [ 19]: 5a8555c5a474b462 +Block 0017 [ 20]: 294f076d4ae34d2d +Block 0017 [ 21]: e8765e154b60b76e +Block 0017 [ 22]: fced1cb25770df34 +Block 0017 [ 23]: 3f5eddfa13d36537 +Block 0017 [ 24]: f09d5a7587f1f135 +Block 0017 [ 25]: 94a43ea2088173e4 +Block 0017 [ 26]: f4647c28a56d3def +Block 0017 [ 27]: 8cbca4eb5f78d8fd +Block 0017 [ 28]: 9f24ca461a660dbd +Block 0017 [ 29]: 2f11b3dc4b162b34 +Block 0017 [ 30]: 15be4b6787f72d78 +Block 0017 [ 31]: 689415a8565fc6a3 +Block 0017 [ 32]: ba16470d503687a4 +Block 0017 [ 33]: b05c65f6b504dc3d +Block 0017 [ 34]: 202bc24f335a9aad +Block 0017 [ 35]: 1f93f1c5745c3fa2 +Block 0017 [ 36]: 308f4467e0ef4c7c +Block 0017 [ 37]: 987f2c7f7741543a +Block 0017 [ 38]: 0cb3223416b7e971 +Block 0017 [ 39]: 030c8741b1db2412 +Block 0017 [ 40]: 420d90a459271a6c +Block 0017 [ 41]: a3ee8a93febbd0ce +Block 0017 [ 42]: 8e1a9f2aad5ddf4b +Block 0017 [ 43]: e31ef7e016d6e5d4 +Block 0017 [ 44]: 69817e2130fa7bf9 +Block 0017 [ 45]: 42ecdc96fe63f7f7 +Block 0017 [ 46]: 75f217a3d588f719 +Block 0017 [ 47]: ea1110e25bab55aa +Block 0017 [ 48]: 17d6eee2bfd1fc92 +Block 0017 [ 49]: 770ba296808b3d1f +Block 0017 [ 50]: ebe66bd4b4e209d9 +Block 0017 [ 51]: 2856c4111e42c984 +Block 0017 [ 52]: 4f3a2c8cb161439c +Block 0017 [ 53]: 931c9fab713a4362 +Block 0017 [ 54]: 59bcd09f39ee5245 +Block 0017 [ 55]: 2f72987bc8cb90ac +Block 0017 [ 56]: a94531dc789bf64b +Block 0017 [ 57]: d556a056d5eca922 +Block 0017 [ 58]: 1c8c8e2607265fbf +Block 0017 [ 59]: ce05b759e48d786a +Block 0017 [ 60]: 0cf70e6b71b6b087 +Block 0017 [ 61]: 3905b0f10c5753e5 +Block 0017 [ 62]: 204c0e23f983b729 +Block 0017 [ 63]: eea30fffb591692a +Block 0017 [ 64]: 2092e319f719acf4 +Block 0017 [ 65]: 303114a5662660ae +Block 0017 [ 66]: 0aa60806230aaea5 +Block 0017 [ 67]: 5daaf906c740ef37 +Block 0017 [ 68]: 43174da93c1899bd +Block 0017 [ 69]: 55eefb2ffa06c6d1 +Block 0017 [ 70]: e3f36fdfe0ec5692 +Block 0017 [ 71]: 13c15a1a05e1a107 +Block 0017 [ 72]: e051fabc5e0d43f8 +Block 0017 [ 73]: 7df93f40edd1fa91 +Block 0017 [ 74]: e55805cce70493d0 +Block 0017 [ 75]: 07c1351fd7576c60 +Block 0017 [ 76]: d053915e4a55bba5 +Block 0017 [ 77]: 9b8d03ca70afa1b6 +Block 0017 [ 78]: dc9aa7a607b68164 +Block 0017 [ 79]: ec3abd6f5fcb70f3 +Block 0017 [ 80]: 5fded738f31f9b5f +Block 0017 [ 81]: daadb148ef52da6b +Block 0017 [ 82]: 2931a672df2e5e9c +Block 0017 [ 83]: bddd0d5d7a314df0 +Block 0017 [ 84]: a962d2f797da997f +Block 0017 [ 85]: aaaec1c3a4e7402f +Block 0017 [ 86]: 2a069d415ba940f7 +Block 0017 [ 87]: 5c1915a6dd37a3fb +Block 0017 [ 88]: af295da329360919 +Block 0017 [ 89]: 2704a39402efad8c +Block 0017 [ 90]: 81d3c2b0ea7230d4 +Block 0017 [ 91]: a90a2b8791cf17a2 +Block 0017 [ 92]: 7bca0e2cb4532c12 +Block 0017 [ 93]: 286e51161ff47347 +Block 0017 [ 94]: dce682ef46ce8926 +Block 0017 [ 95]: deaa896bfaf85484 +Block 0017 [ 96]: 84b8dfd1e71d76dd +Block 0017 [ 97]: eefd07b5eab683c0 +Block 0017 [ 98]: 9f3c8e987d506cf9 +Block 0017 [ 99]: 129112d058177710 +Block 0017 [100]: 85c12d6275744ae3 +Block 0017 [101]: 1a32ce9834a94da9 +Block 0017 [102]: 55c47e8dd9e026df +Block 0017 [103]: 5d40e159b07e97a2 +Block 0017 [104]: 834c6bd420bab8fe +Block 0017 [105]: 0a53f14dd39d8ebb +Block 0017 [106]: 48fdb70b92100de9 +Block 0017 [107]: 82dbac2e655058bd +Block 0017 [108]: 59772c79fdc45cc0 +Block 0017 [109]: ee7b3f05d26ed6fc +Block 0017 [110]: 9ad113092d4e2f6c +Block 0017 [111]: f9959f9f69a733d8 +Block 0017 [112]: 4eacd5578cc7b2b9 +Block 0017 [113]: 107381cd15b9f5db +Block 0017 [114]: 62ab4703795a6f01 +Block 0017 [115]: 05e6fc31906fba7a +Block 0017 [116]: 88258c5f311e914a +Block 0017 [117]: 9288c816aa7c111e +Block 0017 [118]: 3624485540cc2cf4 +Block 0017 [119]: 94af9fe90ae22a71 +Block 0017 [120]: 0bcdc699892b3fa7 +Block 0017 [121]: cb5c6c5298ccc4d4 +Block 0017 [122]: 2648f01cf5322a4d +Block 0017 [123]: 6d6e80d62493a5ec +Block 0017 [124]: cb46cc606d710890 +Block 0017 [125]: fa63666adfb0c7d8 +Block 0017 [126]: 9d7a5d6d313966a3 +Block 0017 [127]: 9dca2d40ecf3caf9 +Block 0018 [ 0]: 41d8eba2b27e8ffb +Block 0018 [ 1]: ddff1e14d97eafc5 +Block 0018 [ 2]: d6521ada6762a59a +Block 0018 [ 3]: 75ec7d924ed612fe +Block 0018 [ 4]: a5e33611406ed95e +Block 0018 [ 5]: 23a98ec1e96ae57c +Block 0018 [ 6]: 5f9fd3d229c24c83 +Block 0018 [ 7]: 76fa60f7d8c8998f +Block 0018 [ 8]: 5c030f75c22fcd89 +Block 0018 [ 9]: 534ac5f50eb44fca +Block 0018 [ 10]: a739bd10713b8b97 +Block 0018 [ 11]: 4e6f87176e72e398 +Block 0018 [ 12]: 6e0d2a49f9aa5dc3 +Block 0018 [ 13]: 6cbc16f8383af2c9 +Block 0018 [ 14]: 8f5a5cce393406ad +Block 0018 [ 15]: b7b0df795df78383 +Block 0018 [ 16]: 32ac85c1b3afb835 +Block 0018 [ 17]: 5322dfb0eb9caf98 +Block 0018 [ 18]: 7a1de529f2f636f5 +Block 0018 [ 19]: 5b9ace630dc336df +Block 0018 [ 20]: 29d91addab9bdff3 +Block 0018 [ 21]: 1f84a68592a1862c +Block 0018 [ 22]: a3fc3835fe84d8af +Block 0018 [ 23]: ea35a61b06b43d45 +Block 0018 [ 24]: 5f41f2b0836bfab8 +Block 0018 [ 25]: 769f922caed6e9f0 +Block 0018 [ 26]: 8ef2cc29fbbc35b6 +Block 0018 [ 27]: d1ec004e64b184bd +Block 0018 [ 28]: e30664f43e049be0 +Block 0018 [ 29]: 2ca44a1dc6d8d4a3 +Block 0018 [ 30]: 8f59369926d5e973 +Block 0018 [ 31]: 26399ac675daed1e +Block 0018 [ 32]: c9ecf425a6f8ea3a +Block 0018 [ 33]: b108f214f96adfad +Block 0018 [ 34]: 25fbe09109ed920f +Block 0018 [ 35]: 14c5a9e69e48beeb +Block 0018 [ 36]: 03a28f26f088774e +Block 0018 [ 37]: 242853b73545ab1f +Block 0018 [ 38]: edf3c093f44adc92 +Block 0018 [ 39]: b64b1e909d8ae53e +Block 0018 [ 40]: e6cebbd27a8a1823 +Block 0018 [ 41]: a5f0395142c18539 +Block 0018 [ 42]: e0f5d5665927e888 +Block 0018 [ 43]: 7a683bbac488c694 +Block 0018 [ 44]: 3534c4247936f396 +Block 0018 [ 45]: 20eeb0deffa9b7d8 +Block 0018 [ 46]: 76f68bd31fc40cc3 +Block 0018 [ 47]: 56d5211ed2076486 +Block 0018 [ 48]: 3ae860a16080d1e5 +Block 0018 [ 49]: 9bb9aeaf8ff539de +Block 0018 [ 50]: 92bbd2ed06a94dd6 +Block 0018 [ 51]: b670108883c32507 +Block 0018 [ 52]: 043ac5bc24bd7023 +Block 0018 [ 53]: 9a26fd657901d39b +Block 0018 [ 54]: 001505488513a271 +Block 0018 [ 55]: e0f52e9ee43d5acb +Block 0018 [ 56]: 207c9951a27e8d42 +Block 0018 [ 57]: d1a024de5a287d4d +Block 0018 [ 58]: 7339d8810c9752ad +Block 0018 [ 59]: 50c291efea09790e +Block 0018 [ 60]: 413952cfc7f4d524 +Block 0018 [ 61]: 97a796f4ba686a1e +Block 0018 [ 62]: a5d3b36326136c79 +Block 0018 [ 63]: c83d34934cff9bce +Block 0018 [ 64]: d647ed0ab4f70fb0 +Block 0018 [ 65]: cb3b129980d593c5 +Block 0018 [ 66]: 2daeeb3b7a32c464 +Block 0018 [ 67]: 3d11ca2eaa3129dc +Block 0018 [ 68]: 69918f90199141fc +Block 0018 [ 69]: 4a966b9201c121aa +Block 0018 [ 70]: fcd187be4ddd30ec +Block 0018 [ 71]: a9ffdcf157639d51 +Block 0018 [ 72]: 57c44134d9ede65e +Block 0018 [ 73]: 2969a0b45033e193 +Block 0018 [ 74]: 578504557677f544 +Block 0018 [ 75]: c72f9a3106f1840d +Block 0018 [ 76]: 1817a772dac99295 +Block 0018 [ 77]: a7c3e3c25780f8f1 +Block 0018 [ 78]: 25088cced1cecb19 +Block 0018 [ 79]: fb0f74cfbeb475a7 +Block 0018 [ 80]: 7521f5a566fbc53b +Block 0018 [ 81]: eb43e619fe7627be +Block 0018 [ 82]: bfc0451e97bb2c09 +Block 0018 [ 83]: 2a9a8e551e19412d +Block 0018 [ 84]: 72c355f26e74cdf9 +Block 0018 [ 85]: 812b95f0e42905c3 +Block 0018 [ 86]: e47fbc58e7a23e8e +Block 0018 [ 87]: 8287cfa4dbf6b4f1 +Block 0018 [ 88]: edd351257983dcc7 +Block 0018 [ 89]: 6f2d7e6268c46c70 +Block 0018 [ 90]: 8873e4d627217a6c +Block 0018 [ 91]: dadb6fb73483f950 +Block 0018 [ 92]: 96c0f1f56ef916cf +Block 0018 [ 93]: 8ae137ba396c5b51 +Block 0018 [ 94]: c5623d376dc44ff0 +Block 0018 [ 95]: 468744eec4787edb +Block 0018 [ 96]: 541c9a809d09ad87 +Block 0018 [ 97]: 12c06624677a34c0 +Block 0018 [ 98]: 65a9f78b9721ab68 +Block 0018 [ 99]: c0fce7c5f3c14e4b +Block 0018 [100]: 220ff8d8bc2c9aa8 +Block 0018 [101]: d8b873796ec7c116 +Block 0018 [102]: 0270437041c8097c +Block 0018 [103]: adf5866d0ab4d935 +Block 0018 [104]: bf01ece42754ef4c +Block 0018 [105]: e2c36d1246558b3b +Block 0018 [106]: b65d2e98ef5cd6bf +Block 0018 [107]: 9b93da55732f8f35 +Block 0018 [108]: 0074ddefd19ad665 +Block 0018 [109]: 4a3e02e5f328c4fb +Block 0018 [110]: 9ac2195c1da0dca1 +Block 0018 [111]: 475dcad3d814a6b1 +Block 0018 [112]: 6988288e956f5c14 +Block 0018 [113]: fc836a01bb8ca4a3 +Block 0018 [114]: b8d217fa56dad448 +Block 0018 [115]: 06727706c59a4a6a +Block 0018 [116]: 94cc16f7239d205e +Block 0018 [117]: b9c84c3c7718ea3e +Block 0018 [118]: b2304a46173492bc +Block 0018 [119]: 1c0f38ecb6f1cd07 +Block 0018 [120]: 3722bd0642232c72 +Block 0018 [121]: bc4f0e23d2022839 +Block 0018 [122]: 4cf310c54cfee088 +Block 0018 [123]: dd4dcee5f70e9a6e +Block 0018 [124]: 4c3d4fbd3aa75015 +Block 0018 [125]: 87ba959de0f63169 +Block 0018 [126]: 5c1e8fd799894a1c +Block 0018 [127]: 865447d77e4b2e13 +Block 0019 [ 0]: eabae49e13df33ac +Block 0019 [ 1]: 386269d795a8f899 +Block 0019 [ 2]: 1a1d30373d0c4905 +Block 0019 [ 3]: abbe30aec1ac09dc +Block 0019 [ 4]: f67470f8729cc26b +Block 0019 [ 5]: db68c7d8a44b4d5f +Block 0019 [ 6]: 3d513341faae4e19 +Block 0019 [ 7]: dcf3e0974e76be86 +Block 0019 [ 8]: a3c5a352c9fbf4d0 +Block 0019 [ 9]: e4e34f59a33d54e6 +Block 0019 [ 10]: 81470205f725bc1d +Block 0019 [ 11]: 743bb43a01c90b8f +Block 0019 [ 12]: ac231cbb51f86d7f +Block 0019 [ 13]: 76a54de1db9a2d49 +Block 0019 [ 14]: ce92d6a9fa205255 +Block 0019 [ 15]: be195b17682d7ba3 +Block 0019 [ 16]: fba4f7b8cb7cb499 +Block 0019 [ 17]: d6df894fabf3682f +Block 0019 [ 18]: 8b54ace58eba1262 +Block 0019 [ 19]: 30247e3c460bce00 +Block 0019 [ 20]: f6b7e6b2938e97d4 +Block 0019 [ 21]: 5d68ef5ec31b8518 +Block 0019 [ 22]: 2abcae4d72aeddfe +Block 0019 [ 23]: 57141fa0f14c98a5 +Block 0019 [ 24]: 293cec5f696540ff +Block 0019 [ 25]: b57fd404b2bbc3e6 +Block 0019 [ 26]: 1b1fe64e4d2e5982 +Block 0019 [ 27]: bb7c3161fe94c152 +Block 0019 [ 28]: cdfe146e99217225 +Block 0019 [ 29]: 53b945e98283d4e5 +Block 0019 [ 30]: 07406d1f09e99c7c +Block 0019 [ 31]: 9420f9136e228ce3 +Block 0019 [ 32]: 7bb1709ddccf5482 +Block 0019 [ 33]: 5be06e97ad22b8ec +Block 0019 [ 34]: 8fd822c429336371 +Block 0019 [ 35]: 708ff63d3cdee345 +Block 0019 [ 36]: 3be6b50763010552 +Block 0019 [ 37]: 3b5b31627020868f +Block 0019 [ 38]: ed8e108725e4a36a +Block 0019 [ 39]: c9e00b22f7ee55a0 +Block 0019 [ 40]: ab10cc8e2124e3b0 +Block 0019 [ 41]: 680b39f254c17357 +Block 0019 [ 42]: bb3f25cf9dec09bf +Block 0019 [ 43]: 9cded1b385da5a5c +Block 0019 [ 44]: a8824f4dde37cae2 +Block 0019 [ 45]: 640741dc69e5d6f6 +Block 0019 [ 46]: 3943126660d3ab0b +Block 0019 [ 47]: d035bafd210ac487 +Block 0019 [ 48]: 1329d8bc8de0280a +Block 0019 [ 49]: 294ee403668a24a4 +Block 0019 [ 50]: b9371e440144702d +Block 0019 [ 51]: 4d83f8a6a76e04e5 +Block 0019 [ 52]: f0ecca30f442c18b +Block 0019 [ 53]: 1b05e7da5a2a7708 +Block 0019 [ 54]: 206b24859e3b7817 +Block 0019 [ 55]: 3f48f4fba18a722a +Block 0019 [ 56]: f6b9ea739daec77d +Block 0019 [ 57]: e0646a6e2f3d7888 +Block 0019 [ 58]: b16c17c22375a7d6 +Block 0019 [ 59]: 89fc35a3719b82ed +Block 0019 [ 60]: c1b372d596d55826 +Block 0019 [ 61]: 122c39ffa8304b19 +Block 0019 [ 62]: d59a7a685c911edf +Block 0019 [ 63]: 0d9530abb61832ef +Block 0019 [ 64]: ac58dca00e9fce01 +Block 0019 [ 65]: f5962c53929d8c31 +Block 0019 [ 66]: 0d78b7ff701fe901 +Block 0019 [ 67]: a0f021b918b06bb3 +Block 0019 [ 68]: 9c5d043e9d746ae8 +Block 0019 [ 69]: 3f5e29d072761db1 +Block 0019 [ 70]: c3ee3470217337bf +Block 0019 [ 71]: 4125236e2528aa90 +Block 0019 [ 72]: 40c3a08d6c07650b +Block 0019 [ 73]: 71ad98ff1278387a +Block 0019 [ 74]: ab60b3e13af4a91b +Block 0019 [ 75]: 2014763714f5a399 +Block 0019 [ 76]: 1311f2de0099b0d4 +Block 0019 [ 77]: c740e9ed79e3adcf +Block 0019 [ 78]: fae29a8949a373b2 +Block 0019 [ 79]: 9656ccc5932cf87f +Block 0019 [ 80]: 80e5d6fd6d78ecc7 +Block 0019 [ 81]: 63881ea17dbd6af8 +Block 0019 [ 82]: 27031c2db85a88c9 +Block 0019 [ 83]: 225fcd42ace4217d +Block 0019 [ 84]: 630d473ffe3ea3fa +Block 0019 [ 85]: b930183e630ee15a +Block 0019 [ 86]: 99b0a373d0700de4 +Block 0019 [ 87]: ac67d86ade7a0ff3 +Block 0019 [ 88]: 960346c43a4274b0 +Block 0019 [ 89]: 07bd044bcccec75a +Block 0019 [ 90]: ec1032137ca21709 +Block 0019 [ 91]: 46bf9749f28f7d1a +Block 0019 [ 92]: 9b1c7277bb9d5ab1 +Block 0019 [ 93]: e0c200f2bc1ddb26 +Block 0019 [ 94]: e31376b9283d63ed +Block 0019 [ 95]: 26dfa5fe7517caab +Block 0019 [ 96]: eb6f2eb775379ad0 +Block 0019 [ 97]: ee0f910cf9f8f31a +Block 0019 [ 98]: 06b5103d17d2989d +Block 0019 [ 99]: a9008a2572950c2b +Block 0019 [100]: 62d96078e0e320a6 +Block 0019 [101]: df7bf4070f3a1530 +Block 0019 [102]: 892d3bdbd986be5d +Block 0019 [103]: e64a5e43fb9f6b4a +Block 0019 [104]: 620297da0ccae536 +Block 0019 [105]: ea388ef4cbd46326 +Block 0019 [106]: 70a971c66a94fadc +Block 0019 [107]: 30d6ed877a5d8484 +Block 0019 [108]: 90066a6e95d77f87 +Block 0019 [109]: 46170065f3945fcc +Block 0019 [110]: 5eec3c145bcc73ad +Block 0019 [111]: 9ed9b4503bd9bd18 +Block 0019 [112]: b7b6bdfed4116990 +Block 0019 [113]: 418511a8dda758e3 +Block 0019 [114]: 8e79e8268e4f28b4 +Block 0019 [115]: cd76ba2354acc3f7 +Block 0019 [116]: c2ea82d31473fbad +Block 0019 [117]: 44f19f11aa6c6eec +Block 0019 [118]: 5317b3b060485c0c +Block 0019 [119]: 1a8cf52343a2f35f +Block 0019 [120]: 54245b8759ac29f8 +Block 0019 [121]: 1d446c77f484be94 +Block 0019 [122]: 30b3ce2ea67ccda1 +Block 0019 [123]: 7f86cadfd8d2e406 +Block 0019 [124]: 03a748ad48712800 +Block 0019 [125]: 98e39c608dce89b7 +Block 0019 [126]: 89467383917bcab9 +Block 0019 [127]: 679a4a7f7a32645b +Block 0020 [ 0]: 269b4f54d5b6ea86 +Block 0020 [ 1]: 3e8f0e7bfa7f9b18 +Block 0020 [ 2]: 3c24ba9a51fae5a4 +Block 0020 [ 3]: 710ea18a16c6b046 +Block 0020 [ 4]: 68e94ffbde56ad2f +Block 0020 [ 5]: 86da1a6a88291d99 +Block 0020 [ 6]: 8cfaac3fe27fc668 +Block 0020 [ 7]: eed4b933fab3a449 +Block 0020 [ 8]: f71c3da612229377 +Block 0020 [ 9]: 3368fca33417690e +Block 0020 [ 10]: 0122102ca85016da +Block 0020 [ 11]: 787753a175ccb6e9 +Block 0020 [ 12]: be72a2fb1a353c25 +Block 0020 [ 13]: 04141fca4af1d143 +Block 0020 [ 14]: d5ff0e4f8bf7083b +Block 0020 [ 15]: c9414c9628e8b42a +Block 0020 [ 16]: 2c715fb098bccba6 +Block 0020 [ 17]: 4f503c04dc96c4a7 +Block 0020 [ 18]: 410e1febb9942559 +Block 0020 [ 19]: 1cf639f21af783da +Block 0020 [ 20]: 1c1435c8a6f82db2 +Block 0020 [ 21]: f1cd6ac7f46302f0 +Block 0020 [ 22]: 642393e4685039cd +Block 0020 [ 23]: 337e7cdd34a96b5d +Block 0020 [ 24]: 69d74b6ed0058f4c +Block 0020 [ 25]: 5a7f2ae1c692eaaf +Block 0020 [ 26]: 4492c035073d26af +Block 0020 [ 27]: e8a02ecc89abe328 +Block 0020 [ 28]: 3bc9c8c5dadda071 +Block 0020 [ 29]: cdfb2fcf7e0cd089 +Block 0020 [ 30]: 2e6cae86d961e86a +Block 0020 [ 31]: bb4c8da8c790e028 +Block 0020 [ 32]: ad0eeb7a7acbfb5f +Block 0020 [ 33]: e87a8fb9e2adbb04 +Block 0020 [ 34]: 6321586882426a05 +Block 0020 [ 35]: 74f28496cb02d128 +Block 0020 [ 36]: 1eb5bfd4db4a9a6c +Block 0020 [ 37]: 2ac3a783b8d8270f +Block 0020 [ 38]: a0d668f390021153 +Block 0020 [ 39]: c24108c03011b66d +Block 0020 [ 40]: 051fdb3e3f3aed34 +Block 0020 [ 41]: 484bc346942d1cbc +Block 0020 [ 42]: 9872e0ba4d324643 +Block 0020 [ 43]: 634e78730386b24b +Block 0020 [ 44]: 0d45f77882cac20a +Block 0020 [ 45]: 2563d91cdc8769ee +Block 0020 [ 46]: d15ce3d51e52a2a7 +Block 0020 [ 47]: a2fe0729f7ac8808 +Block 0020 [ 48]: 8e25f4fe2233ece5 +Block 0020 [ 49]: 39ed8579f13d1a19 +Block 0020 [ 50]: dd377af4aea398aa +Block 0020 [ 51]: 7515ba75210832ff +Block 0020 [ 52]: 0575630fd37e1f53 +Block 0020 [ 53]: 6f9912cf58d98dc6 +Block 0020 [ 54]: ef86cc11eb440d76 +Block 0020 [ 55]: ca50b1e8f855acf7 +Block 0020 [ 56]: 893c938d4e382afa +Block 0020 [ 57]: 7ca5580e9832a0bc +Block 0020 [ 58]: b375c7ea7d45fb66 +Block 0020 [ 59]: 836875f69d7226b0 +Block 0020 [ 60]: ffe41d0d91068504 +Block 0020 [ 61]: 989828f2ea37d7e1 +Block 0020 [ 62]: 43dd0fef0eb1ec0b +Block 0020 [ 63]: 77f86256c1d7b23b +Block 0020 [ 64]: 46b433077021cc67 +Block 0020 [ 65]: 7f7e8e5b69c96716 +Block 0020 [ 66]: 4165168edff2204c +Block 0020 [ 67]: 08c41002eed0d2d1 +Block 0020 [ 68]: f1cb8faed68a26f0 +Block 0020 [ 69]: 0065ca90c981a82f +Block 0020 [ 70]: 3ba799f102db0422 +Block 0020 [ 71]: e820f5f562ea5ef4 +Block 0020 [ 72]: 8f43af626790b9f1 +Block 0020 [ 73]: a6a51921588adc5c +Block 0020 [ 74]: cbeb139bd0a91bb2 +Block 0020 [ 75]: d82f0cf77c8e41b7 +Block 0020 [ 76]: 3d06e68f63323b5f +Block 0020 [ 77]: 91b6755b9db0d038 +Block 0020 [ 78]: e8c6f6c0cc63a663 +Block 0020 [ 79]: 7d94ea6a2ee23a2f +Block 0020 [ 80]: c245f840027ccbd2 +Block 0020 [ 81]: 46ff208f126d520d +Block 0020 [ 82]: 01f8167f979679d9 +Block 0020 [ 83]: 2a9d18db600ec858 +Block 0020 [ 84]: 11bbdca37897fcad +Block 0020 [ 85]: 141a41ff68571e1f +Block 0020 [ 86]: 390c617bb94bea7e +Block 0020 [ 87]: 556aa8fed6a96cf1 +Block 0020 [ 88]: fc21092d05f38a09 +Block 0020 [ 89]: e56ef53df73a4f96 +Block 0020 [ 90]: da9cbd854a3cffc9 +Block 0020 [ 91]: 5cf4c3ad805e9f91 +Block 0020 [ 92]: 431bf9648a49612c +Block 0020 [ 93]: 2663d89c48654b6e +Block 0020 [ 94]: e79521d0d32cdf99 +Block 0020 [ 95]: 4f1ceca1c344f7bf +Block 0020 [ 96]: 89330e4f55dbf4fc +Block 0020 [ 97]: f4338c691915e196 +Block 0020 [ 98]: 26b1101246f9bcdc +Block 0020 [ 99]: f8432055e31fc4a8 +Block 0020 [100]: 3266a7a5c4dad24c +Block 0020 [101]: 94c854dd76241f0d +Block 0020 [102]: 99bee1ce63474a15 +Block 0020 [103]: 74bb4aa98d4eb3a1 +Block 0020 [104]: 3cfc2ac312e1c45c +Block 0020 [105]: 6b883da6c5ddc9c4 +Block 0020 [106]: 0743f1fdce6a56ee +Block 0020 [107]: 7c69a5e1a0dcf03e +Block 0020 [108]: fa66426c585f3464 +Block 0020 [109]: 99a8ec507bc26e0d +Block 0020 [110]: 7a28ca634a80f5fe +Block 0020 [111]: 600fba11d691a99c +Block 0020 [112]: d67094eac4f48e31 +Block 0020 [113]: 80376da2f9893c8e +Block 0020 [114]: 8d13887a2e6e16f7 +Block 0020 [115]: 64edf8096260ecec +Block 0020 [116]: 36c2885b38e52b20 +Block 0020 [117]: 459b84990d0598e5 +Block 0020 [118]: 3db3b437866cfec5 +Block 0020 [119]: 294035be518d3bbb +Block 0020 [120]: b9dfc1c086e87c0a +Block 0020 [121]: 510eaff39735d8bc +Block 0020 [122]: ab9ced4efc23c16d +Block 0020 [123]: ed0985c99ce8f77d +Block 0020 [124]: e862b3f058619ddd +Block 0020 [125]: 457d0d4ceca5cb31 +Block 0020 [126]: 1bb73497b80c8610 +Block 0020 [127]: 1156041f667292ff +Block 0021 [ 0]: 17b4c2abe86f2897 +Block 0021 [ 1]: cbb482190938ccd8 +Block 0021 [ 2]: 09e6454421255c7b +Block 0021 [ 3]: 34ea66797350bbf4 +Block 0021 [ 4]: b08b039be403c4fb +Block 0021 [ 5]: c12bb73dac7934ae +Block 0021 [ 6]: 3fd05c8a944dfebc +Block 0021 [ 7]: 7d9e0e6c0c0c1c46 +Block 0021 [ 8]: ca45c30e190203b8 +Block 0021 [ 9]: a50382d342a306f4 +Block 0021 [ 10]: 304f0a3f51cee32a +Block 0021 [ 11]: 9bd7ec4d41224ebc +Block 0021 [ 12]: 3644bd6b37a9c65e +Block 0021 [ 13]: 318da00f1ed8c6e6 +Block 0021 [ 14]: da2d235e81557df5 +Block 0021 [ 15]: b78edb91572aaac6 +Block 0021 [ 16]: 74a9d0e5cb2001bf +Block 0021 [ 17]: d92bf9e32a07b0fc +Block 0021 [ 18]: 52dffb55b33e624a +Block 0021 [ 19]: 490e48183d213f68 +Block 0021 [ 20]: e28ec7a2771feebc +Block 0021 [ 21]: 9fb9637f8be653dc +Block 0021 [ 22]: c99bbc6df1e6c0a7 +Block 0021 [ 23]: ba1e24ed83829bd8 +Block 0021 [ 24]: 8abe8cd81b291831 +Block 0021 [ 25]: a5d3f6aebf6cd859 +Block 0021 [ 26]: 98dda64e3d33c005 +Block 0021 [ 27]: 97be589257c84bf5 +Block 0021 [ 28]: e27a06b1ff130d3a +Block 0021 [ 29]: 6ec7117cea210b36 +Block 0021 [ 30]: 111acd56ac355eba +Block 0021 [ 31]: a8eef71b826e7eab +Block 0021 [ 32]: 4ec68125a7cfb615 +Block 0021 [ 33]: 932bd9ca8390c775 +Block 0021 [ 34]: 51b4107894563221 +Block 0021 [ 35]: 4f9bd56272c5d569 +Block 0021 [ 36]: 1124c4abc2802bd7 +Block 0021 [ 37]: ab9d5b19efca80bc +Block 0021 [ 38]: be9e5035c3d260a1 +Block 0021 [ 39]: 27e7df352e918662 +Block 0021 [ 40]: d18118afc14e3bd3 +Block 0021 [ 41]: 4f1ba18852decdd1 +Block 0021 [ 42]: 7cf79363017d4911 +Block 0021 [ 43]: 17a5cc740117b5a1 +Block 0021 [ 44]: d2477f7f3d5d028b +Block 0021 [ 45]: 4ca5cd043721ebde +Block 0021 [ 46]: fddbb22550b51849 +Block 0021 [ 47]: 97ae58c4799ca750 +Block 0021 [ 48]: 452df8cca9a156bd +Block 0021 [ 49]: fb11d84264de9b30 +Block 0021 [ 50]: fd3b057638165488 +Block 0021 [ 51]: 0d813d621a3366c9 +Block 0021 [ 52]: 4756062fd3bd46f8 +Block 0021 [ 53]: 696bca682db5bb74 +Block 0021 [ 54]: 32d80dfe2be958d3 +Block 0021 [ 55]: 1f6c4037c090c687 +Block 0021 [ 56]: 9139c4d021534fac +Block 0021 [ 57]: 43311d46e08c4c88 +Block 0021 [ 58]: e0f4a375ef393912 +Block 0021 [ 59]: bf1db582f22ffc4f +Block 0021 [ 60]: 0a71ec4c54667179 +Block 0021 [ 61]: 6eb26d0a6f9d40d9 +Block 0021 [ 62]: 022f4fc9d70b674b +Block 0021 [ 63]: 366694b68ac94113 +Block 0021 [ 64]: 87c49c593c614f27 +Block 0021 [ 65]: cb7691ade7b4e3db +Block 0021 [ 66]: 9ab50d350f3b76c5 +Block 0021 [ 67]: 963e8b4ba65faf26 +Block 0021 [ 68]: c8b6caeaadec21b0 +Block 0021 [ 69]: f39f45a19bd109e8 +Block 0021 [ 70]: 2366f4f4cde23673 +Block 0021 [ 71]: 757a9d6c2cac7ca8 +Block 0021 [ 72]: 2096a46aca98ef6f +Block 0021 [ 73]: 5c8928a3be29c46e +Block 0021 [ 74]: a8658d5f9bb9ac48 +Block 0021 [ 75]: a2f678d6c78f2bea +Block 0021 [ 76]: b5ca9f573fd46c28 +Block 0021 [ 77]: 1c4c588ffeaa7304 +Block 0021 [ 78]: 22fe1ea2e21f58dd +Block 0021 [ 79]: 0383af29fc89c577 +Block 0021 [ 80]: 4cd4d3d68dde2827 +Block 0021 [ 81]: d50342ac6da4265c +Block 0021 [ 82]: 4ef2fc0217047481 +Block 0021 [ 83]: 9b4abfcae05f45ec +Block 0021 [ 84]: 65aa951feacbd437 +Block 0021 [ 85]: 86c133b88597ed58 +Block 0021 [ 86]: 3b363bce9f4ee3ec +Block 0021 [ 87]: 7acbee487ed5446b +Block 0021 [ 88]: 942b1703ff00610f +Block 0021 [ 89]: b105c6a5ed4196b5 +Block 0021 [ 90]: d70d811c3f30d240 +Block 0021 [ 91]: 29ddada97ea6101b +Block 0021 [ 92]: 99819a3ffdbd958a +Block 0021 [ 93]: e023fb3f4d4ad3d6 +Block 0021 [ 94]: baab5aef9e588c17 +Block 0021 [ 95]: dce51988a7418b79 +Block 0021 [ 96]: 48fdadbac5a11a65 +Block 0021 [ 97]: 42b7b66efffb8f5e +Block 0021 [ 98]: c7c8f3f6f7bc5d85 +Block 0021 [ 99]: 0a7738cd6a5fad47 +Block 0021 [100]: 8b3a03f8fb566033 +Block 0021 [101]: 49723e452bb29a70 +Block 0021 [102]: 98e32b7a5f4f8471 +Block 0021 [103]: 1696713cf1cfeca5 +Block 0021 [104]: 42c3ba036c3e764f +Block 0021 [105]: 0907d697be28fdbf +Block 0021 [106]: b172dcbf1332c5f6 +Block 0021 [107]: bc90c713f8d177ab +Block 0021 [108]: c74b2b83df4a3fb4 +Block 0021 [109]: 806796945f7970ee +Block 0021 [110]: 50996835394d4221 +Block 0021 [111]: 02476eb09a0a98dc +Block 0021 [112]: 5f9af4ebce5aab37 +Block 0021 [113]: 60c1de13240a58d0 +Block 0021 [114]: 332cb5d422cf7df9 +Block 0021 [115]: 2c210191386ec581 +Block 0021 [116]: a38b29631d4127a4 +Block 0021 [117]: c4b6459d55cfb424 +Block 0021 [118]: a925a87f6510e076 +Block 0021 [119]: 6d39268556f0a2c7 +Block 0021 [120]: 716f35a0f2749fa7 +Block 0021 [121]: aa80e7f9ebf68e6d +Block 0021 [122]: 57ab564f64cd5fac +Block 0021 [123]: 58019bb64c24d659 +Block 0021 [124]: b86acb9911e8e025 +Block 0021 [125]: a8aee8d75e91cc71 +Block 0021 [126]: 6ab7210d4ddcf8b2 +Block 0021 [127]: 4311b77316be2c79 +Block 0022 [ 0]: 61a6ff51085e1dfe +Block 0022 [ 1]: 1f5bf5edca141a25 +Block 0022 [ 2]: 0eb22ca5c3fc8bfd +Block 0022 [ 3]: 096be76c523a2ca8 +Block 0022 [ 4]: e9fe3f7d5ac67faf +Block 0022 [ 5]: 5acadc120ef7884d +Block 0022 [ 6]: ec49fda5c88742b3 +Block 0022 [ 7]: 902b13afbb4107be +Block 0022 [ 8]: 744d2922934d0beb +Block 0022 [ 9]: e6d72c7f5d1c532a +Block 0022 [ 10]: ec6356952d67f6dd +Block 0022 [ 11]: 3d4aa12d18e8352e +Block 0022 [ 12]: ff896a193a375011 +Block 0022 [ 13]: b3b4883dccf68953 +Block 0022 [ 14]: 4a620343cf266a7c +Block 0022 [ 15]: 5404bc64195b1f4f +Block 0022 [ 16]: 69494f69154fcb1d +Block 0022 [ 17]: 947db329bbdb4cd8 +Block 0022 [ 18]: 486a729f03eab8df +Block 0022 [ 19]: 9c570aa48dbdd34b +Block 0022 [ 20]: c71e71a0b0f41441 +Block 0022 [ 21]: d09d043418ee3ecd +Block 0022 [ 22]: 73fe1423a65144c3 +Block 0022 [ 23]: fbd495d2d82df0aa +Block 0022 [ 24]: ed4617c1bc87968c +Block 0022 [ 25]: 5ec6eaf86871340e +Block 0022 [ 26]: 97329b3572e7f3ba +Block 0022 [ 27]: 08fe3a910411f8e8 +Block 0022 [ 28]: d2d92688687f769f +Block 0022 [ 29]: 0572673de37c3623 +Block 0022 [ 30]: 6baeb3fad387399a +Block 0022 [ 31]: 03b6857fbade033b +Block 0022 [ 32]: dec7d2fb4389a1f4 +Block 0022 [ 33]: 62bf9de8caeef073 +Block 0022 [ 34]: 3535db8501d42797 +Block 0022 [ 35]: 426148dffb8b6c6c +Block 0022 [ 36]: cfdbf603331aa1ba +Block 0022 [ 37]: d526ff87d8bbf7d8 +Block 0022 [ 38]: ec27978a3066ffa8 +Block 0022 [ 39]: 07c5d9f1ac3504eb +Block 0022 [ 40]: 03e4290511b51612 +Block 0022 [ 41]: 65709c94ef2664ca +Block 0022 [ 42]: 4c2794cee1ca9dea +Block 0022 [ 43]: b3f53335e16434aa +Block 0022 [ 44]: ce63271edf85caf7 +Block 0022 [ 45]: 459b724ef24ef009 +Block 0022 [ 46]: 1c5e9e9668b3ba6a +Block 0022 [ 47]: 3d76a5f2e85365af +Block 0022 [ 48]: bbff41578ebc089a +Block 0022 [ 49]: 8c3e3d9e30f82118 +Block 0022 [ 50]: 154541c874a970d5 +Block 0022 [ 51]: e28b76c2f1255dfe +Block 0022 [ 52]: 857d0590f8d33c50 +Block 0022 [ 53]: d631fe61e5af784a +Block 0022 [ 54]: 7b45c83168fd3457 +Block 0022 [ 55]: af5e354071395c20 +Block 0022 [ 56]: d6e032527c5e42ae +Block 0022 [ 57]: 209888f062668f8e +Block 0022 [ 58]: b8d138d8fcb57269 +Block 0022 [ 59]: 22a9ab6cc0c1a912 +Block 0022 [ 60]: 704a6260aebf0689 +Block 0022 [ 61]: 65819c67058eeedb +Block 0022 [ 62]: 1156016eaaa2c028 +Block 0022 [ 63]: 07ab5e27a7ee85f1 +Block 0022 [ 64]: ca06f6545486bc04 +Block 0022 [ 65]: 6d5e5e4685da6424 +Block 0022 [ 66]: 2d8b6e05f2e649f4 +Block 0022 [ 67]: e1bb5e3165663da1 +Block 0022 [ 68]: cfae06b12eb26241 +Block 0022 [ 69]: 30368e8c03d0f6cb +Block 0022 [ 70]: ea9e4e5a1a15220b +Block 0022 [ 71]: 0ced69387046c774 +Block 0022 [ 72]: 32bd0f765f6d2e90 +Block 0022 [ 73]: a537a0cf7a48de71 +Block 0022 [ 74]: 40f7ad34f549721d +Block 0022 [ 75]: 16f48f8c860c255c +Block 0022 [ 76]: 9aaddbc5643bf9fd +Block 0022 [ 77]: 4fc5670d938c4060 +Block 0022 [ 78]: d9930f3b78aa29d0 +Block 0022 [ 79]: d4e43d6280ab3b51 +Block 0022 [ 80]: da10e01944beb383 +Block 0022 [ 81]: f08884432d877b53 +Block 0022 [ 82]: ec57f639f4d371b9 +Block 0022 [ 83]: 904a2ea3a5d0307c +Block 0022 [ 84]: 2d49f8d9f9b6dce1 +Block 0022 [ 85]: e6da1ba672b7bcef +Block 0022 [ 86]: b2d22296480d6b8f +Block 0022 [ 87]: f78b659c7b32b534 +Block 0022 [ 88]: be564c07566930fb +Block 0022 [ 89]: 16d4223b5cbadf2f +Block 0022 [ 90]: 06d18d9da6c73ee6 +Block 0022 [ 91]: 3e44dcfd7da27d18 +Block 0022 [ 92]: 217bc24e2bae57f7 +Block 0022 [ 93]: 49a8a3f1152c7037 +Block 0022 [ 94]: b63c0c5729d5261b +Block 0022 [ 95]: 317ad8dec554eb1e +Block 0022 [ 96]: 1cd40e3803488528 +Block 0022 [ 97]: e93ffc3a78bedcb7 +Block 0022 [ 98]: f28c842c550d2ab1 +Block 0022 [ 99]: 4d311be4c8a29098 +Block 0022 [100]: 9c5cf9159c8eb3fc +Block 0022 [101]: 1e58e5b4bb1b28a9 +Block 0022 [102]: 27337340376d8e81 +Block 0022 [103]: 6ced8f7b00504dc5 +Block 0022 [104]: c3e20cdbe90d1d09 +Block 0022 [105]: fa4436423628b433 +Block 0022 [106]: 5574d238558a591e +Block 0022 [107]: ebddbd36bdb1415b +Block 0022 [108]: df5cda5812a18e7c +Block 0022 [109]: 9f9aade1bb756c3a +Block 0022 [110]: 33d27b3747e16282 +Block 0022 [111]: ffb19eeed77e0f70 +Block 0022 [112]: 7e06ba7933616246 +Block 0022 [113]: 94b313c4b145defb +Block 0022 [114]: 8df180f62502dd74 +Block 0022 [115]: 5181f971e6917593 +Block 0022 [116]: 16c113e1c1b916a7 +Block 0022 [117]: 915bfbe0cea5c438 +Block 0022 [118]: 9195ba860ffd4924 +Block 0022 [119]: 084b15c7884b460b +Block 0022 [120]: b85902697f1fbf9d +Block 0022 [121]: b9a66a8ac079ab07 +Block 0022 [122]: 5a715fed9ba3ebf2 +Block 0022 [123]: 42ce627af9462ed0 +Block 0022 [124]: e49799409e744ba0 +Block 0022 [125]: 9f54148151c32bae +Block 0022 [126]: 6532db4062d5cae5 +Block 0022 [127]: 1c6ae63866aca622 +Block 0023 [ 0]: 71b6b6aca18b78a6 +Block 0023 [ 1]: 00ba35d5c7a24fe8 +Block 0023 [ 2]: 23b225256d68661e +Block 0023 [ 3]: 49648a8cac7875c8 +Block 0023 [ 4]: 052e7d601ff9c1f8 +Block 0023 [ 5]: 7fba093144801e1f +Block 0023 [ 6]: 7927b854cfd88de7 +Block 0023 [ 7]: a11ea2bc81caf36b +Block 0023 [ 8]: b7e7ae76ae03126d +Block 0023 [ 9]: 60d0807e48e5db71 +Block 0023 [ 10]: ddf1d2beef8a2dee +Block 0023 [ 11]: b9924481df9d2cd3 +Block 0023 [ 12]: d0b26e2edeadd78e +Block 0023 [ 13]: 6913abfc0351b6b4 +Block 0023 [ 14]: cad416dcaf5dd5fb +Block 0023 [ 15]: a43f1deada1a802b +Block 0023 [ 16]: 2150535e28518ddc +Block 0023 [ 17]: 9ab467acbf91fd64 +Block 0023 [ 18]: 9afb5ba8ebaa158b +Block 0023 [ 19]: 743713b59576c89f +Block 0023 [ 20]: 40a9b9dfd096ed85 +Block 0023 [ 21]: b0563463bb53de6e +Block 0023 [ 22]: a2a02b23689dca10 +Block 0023 [ 23]: 7fabf80d6e78eed6 +Block 0023 [ 24]: 0fa6d2177a605bc0 +Block 0023 [ 25]: ed6766d412cf1e54 +Block 0023 [ 26]: bb0480e3b472ba6b +Block 0023 [ 27]: da084b05e5454f0f +Block 0023 [ 28]: 83a895c52c11834f +Block 0023 [ 29]: 07a7edef2841be43 +Block 0023 [ 30]: d612d8cee619b42d +Block 0023 [ 31]: d9b8fe0ca5898f99 +Block 0023 [ 32]: 70f2724814542a4a +Block 0023 [ 33]: 5920b6bc3b6b3caa +Block 0023 [ 34]: 144b26a1e650a6d4 +Block 0023 [ 35]: d91a86c85aa62ca4 +Block 0023 [ 36]: 8d99b9be60c56aec +Block 0023 [ 37]: 227e477f539aeb59 +Block 0023 [ 38]: d364dd616cc3b90f +Block 0023 [ 39]: 38f9643fb6637388 +Block 0023 [ 40]: 1d394841225a0066 +Block 0023 [ 41]: ec35e6b57868aa4f +Block 0023 [ 42]: 8ff8e59354814fa3 +Block 0023 [ 43]: 75d87416cd0225db +Block 0023 [ 44]: f16a8d875e127f26 +Block 0023 [ 45]: e92a4d13dc6b4d72 +Block 0023 [ 46]: a8ad1696cea7b54a +Block 0023 [ 47]: 8b3f716ce03aa77f +Block 0023 [ 48]: f6e70eb1fb494101 +Block 0023 [ 49]: 58e27c7dc8a70aa5 +Block 0023 [ 50]: 493f01c81a9b6b27 +Block 0023 [ 51]: 023efca7911d5bc7 +Block 0023 [ 52]: e33e448c98a97f10 +Block 0023 [ 53]: b0261944d98e2c31 +Block 0023 [ 54]: 9593200f81e7972f +Block 0023 [ 55]: 4f66e5a211c0ebce +Block 0023 [ 56]: 54ba34f05b2d3546 +Block 0023 [ 57]: dfd889d802536436 +Block 0023 [ 58]: 9abd4e9759d11d54 +Block 0023 [ 59]: b4752150d4f62535 +Block 0023 [ 60]: f1e9f64b7b3b60df +Block 0023 [ 61]: 81d184500bfa18c6 +Block 0023 [ 62]: bcd72f47ef6b9fe0 +Block 0023 [ 63]: 140c4f355bc6b553 +Block 0023 [ 64]: 8d4f7f8418330c7c +Block 0023 [ 65]: 6e3afc414724d608 +Block 0023 [ 66]: bc267a035071bc1a +Block 0023 [ 67]: 156fae6c712c065b +Block 0023 [ 68]: f9c57277382a1f89 +Block 0023 [ 69]: 0299652c21ba7eae +Block 0023 [ 70]: 3cb2859906a40ced +Block 0023 [ 71]: 53f71c9235df76b5 +Block 0023 [ 72]: 2df91f772efc52c4 +Block 0023 [ 73]: c796cad57787e135 +Block 0023 [ 74]: 9f578feb31fd77d6 +Block 0023 [ 75]: c09bd264239bc205 +Block 0023 [ 76]: cb44da110cb5b368 +Block 0023 [ 77]: 3bff59dfcccb50a4 +Block 0023 [ 78]: 0ab31a2ef1b93b29 +Block 0023 [ 79]: aa27612628dc4b4f +Block 0023 [ 80]: 641a26e82e94dd36 +Block 0023 [ 81]: 7e078b59d2827af7 +Block 0023 [ 82]: 3b5010c0fffb9674 +Block 0023 [ 83]: 7a7cfbcf82144d03 +Block 0023 [ 84]: e1f531fe11ae9627 +Block 0023 [ 85]: 4ee64eb4df28757a +Block 0023 [ 86]: ed0f36bcc988bd97 +Block 0023 [ 87]: 60dc8c5ae0338b1d +Block 0023 [ 88]: 5c4371dc7476482c +Block 0023 [ 89]: 2e1477181780fb98 +Block 0023 [ 90]: 33032e2d91f913af +Block 0023 [ 91]: 73ae22f0311ba5d8 +Block 0023 [ 92]: 83d30b9409e6b567 +Block 0023 [ 93]: a22134803a423a9a +Block 0023 [ 94]: 2546765a58acab4a +Block 0023 [ 95]: 45140ea710d5b1eb +Block 0023 [ 96]: 3fefc60626708193 +Block 0023 [ 97]: c49989661e0967cc +Block 0023 [ 98]: 956cb9090041edf0 +Block 0023 [ 99]: 85ce994e449272b1 +Block 0023 [100]: 77cbb274fd8546a3 +Block 0023 [101]: 820222b05ac04e86 +Block 0023 [102]: 9de2fb4747dd05cc +Block 0023 [103]: e47f6957d7bd52b5 +Block 0023 [104]: 453b5ebf33f91b87 +Block 0023 [105]: 666fd007ad7896f9 +Block 0023 [106]: 2786f30e5c14a822 +Block 0023 [107]: 161a849e41872871 +Block 0023 [108]: 79b0cfded556359e +Block 0023 [109]: 7c2f3eda92ba20d3 +Block 0023 [110]: 1440b52c7e60d1f8 +Block 0023 [111]: dc8134fc1139d38d +Block 0023 [112]: 99f47f609a2842c6 +Block 0023 [113]: cf71b12956787955 +Block 0023 [114]: 923f3c21d2b602eb +Block 0023 [115]: ef0eb85a0f0044d0 +Block 0023 [116]: d2d7cd413a3734a7 +Block 0023 [117]: 52c792c0299769ef +Block 0023 [118]: 87cfe0b332479275 +Block 0023 [119]: 09ae791666a1e1d7 +Block 0023 [120]: 5c6fe74964c18a98 +Block 0023 [121]: 65fc39dad202ef2a +Block 0023 [122]: d238f7673a7fc116 +Block 0023 [123]: 2c59c0ee6153643b +Block 0023 [124]: c808636d1c65d472 +Block 0023 [125]: 519346986007bb4e +Block 0023 [126]: 927c3fa1ea477d77 +Block 0023 [127]: 37c224071d594e0d +Block 0024 [ 0]: 9956a13b1b49a85e +Block 0024 [ 1]: eb4f6e16f84345b4 +Block 0024 [ 2]: 34f6ca61e8c33636 +Block 0024 [ 3]: 6619df465c5f5c38 +Block 0024 [ 4]: 26bee849a293cd26 +Block 0024 [ 5]: d935f8ce2a13010a +Block 0024 [ 6]: 520924f2c511c492 +Block 0024 [ 7]: 05c9abfd72f2ca8a +Block 0024 [ 8]: 734bd3d20a147017 +Block 0024 [ 9]: 680c0da85f1852db +Block 0024 [ 10]: 113faf1a430babd9 +Block 0024 [ 11]: 15e983b8123560c2 +Block 0024 [ 12]: bf5688b1cd7981a7 +Block 0024 [ 13]: 5db814aafe1ed2bf +Block 0024 [ 14]: 14cd28c8b2cf7803 +Block 0024 [ 15]: dcc18e8bd28e55d5 +Block 0024 [ 16]: 46e43400f0591055 +Block 0024 [ 17]: 2841dc8cb0d8cf95 +Block 0024 [ 18]: 58158a74bb3c194c +Block 0024 [ 19]: d0306f7ad12acb75 +Block 0024 [ 20]: 8dd0ccd0618c6944 +Block 0024 [ 21]: e292b0011d5d135d +Block 0024 [ 22]: c5ec0e7363dfb996 +Block 0024 [ 23]: 76d0e59bae0dcaa6 +Block 0024 [ 24]: b3582ae0d8f07720 +Block 0024 [ 25]: f08264f0e63f22ec +Block 0024 [ 26]: e5e831ae374d05d5 +Block 0024 [ 27]: 5a2e612598c01d0d +Block 0024 [ 28]: 3fba5724c4b5b898 +Block 0024 [ 29]: e833e8d79e08d5b7 +Block 0024 [ 30]: f427b869f5c1f3fc +Block 0024 [ 31]: 4b7d2b43fedf05de +Block 0024 [ 32]: a5e8d8d68f802ecd +Block 0024 [ 33]: 005f86378c842d77 +Block 0024 [ 34]: a4110ab6ae4dbdb4 +Block 0024 [ 35]: 0ad3d04b3a846de7 +Block 0024 [ 36]: 66f3472239cf48fa +Block 0024 [ 37]: 225ee0eb863c5474 +Block 0024 [ 38]: 7464f3987d5d780e +Block 0024 [ 39]: f02a6163175bdcc8 +Block 0024 [ 40]: 06e837a1ac826f07 +Block 0024 [ 41]: 63759540df7a5a2a +Block 0024 [ 42]: d804b31c5f48feda +Block 0024 [ 43]: 15390632d3e458c6 +Block 0024 [ 44]: 83c4211a657fa871 +Block 0024 [ 45]: e5b2232c95dbca6f +Block 0024 [ 46]: 3e99d6d6151e5169 +Block 0024 [ 47]: 80d9d65d4a9fc135 +Block 0024 [ 48]: 81ef675d5a8d33d7 +Block 0024 [ 49]: d791ecaf1a8c00b8 +Block 0024 [ 50]: 6d237b0014b9f4f3 +Block 0024 [ 51]: e2e8796d6cc66289 +Block 0024 [ 52]: d8f6d1f343c2aaaa +Block 0024 [ 53]: 7385abc47311c98d +Block 0024 [ 54]: ca72576fbe6eaea2 +Block 0024 [ 55]: 2d5f7c84c051a65a +Block 0024 [ 56]: a752e21c12698852 +Block 0024 [ 57]: f781ab22ef0001df +Block 0024 [ 58]: a5c09dfb70ee58d5 +Block 0024 [ 59]: b861372d101ff470 +Block 0024 [ 60]: 5da08c8421df97ab +Block 0024 [ 61]: 76c2459521edf83a +Block 0024 [ 62]: 7ea6c0dbac13c4e4 +Block 0024 [ 63]: 8f669c059c89658f +Block 0024 [ 64]: 901e1cb70e5bdada +Block 0024 [ 65]: 595e1291e3cbab62 +Block 0024 [ 66]: 4201eaf65a5494b4 +Block 0024 [ 67]: 6bfdb634efea5e73 +Block 0024 [ 68]: d4cce6cfd93349c7 +Block 0024 [ 69]: 3f3bf90f1ccf7d43 +Block 0024 [ 70]: d57d37b02100a068 +Block 0024 [ 71]: ec9a67f508dd0a5b +Block 0024 [ 72]: f353c388db97240a +Block 0024 [ 73]: b54d96369fd7e18f +Block 0024 [ 74]: 7cf8073613299bc6 +Block 0024 [ 75]: d34b71de098a5c34 +Block 0024 [ 76]: 8896dc90580c9acb +Block 0024 [ 77]: f3d2e7edc21e6d17 +Block 0024 [ 78]: 0aa32dff469c42f4 +Block 0024 [ 79]: d84d6bd84a3f5704 +Block 0024 [ 80]: 592d29696aa1611b +Block 0024 [ 81]: 4c769b1a91910e3c +Block 0024 [ 82]: d9181ac139052fa7 +Block 0024 [ 83]: 7bf07944f4e78370 +Block 0024 [ 84]: a13c3bb0f9367b49 +Block 0024 [ 85]: 3c4bf4c3b33b4414 +Block 0024 [ 86]: 9408f64ba6cbb2af +Block 0024 [ 87]: 9e572c0ab8a66682 +Block 0024 [ 88]: 05146fe0279cc63a +Block 0024 [ 89]: 392e3a7f2ff4c0af +Block 0024 [ 90]: 6cb1b4abc10f26a8 +Block 0024 [ 91]: a97380cef9f9c1d7 +Block 0024 [ 92]: a39611d6f966761d +Block 0024 [ 93]: a1be82dfbebdc6f6 +Block 0024 [ 94]: ab962e96f1066c7d +Block 0024 [ 95]: 427b91b8b9a1f976 +Block 0024 [ 96]: 3c6fb8f326956c60 +Block 0024 [ 97]: 52263ae65140b3c5 +Block 0024 [ 98]: 4b21f82c2026b56d +Block 0024 [ 99]: 9b6689849e05f482 +Block 0024 [100]: 1898c9348c12d11a +Block 0024 [101]: 95da7290a7784974 +Block 0024 [102]: 0f025fba1a081ef6 +Block 0024 [103]: d2212444055affa3 +Block 0024 [104]: 3d0b9a0e26ba4c60 +Block 0024 [105]: a96f202adbb1dcc0 +Block 0024 [106]: 5f2d801ffbe742a8 +Block 0024 [107]: 398b83e5c3b82ec6 +Block 0024 [108]: 9bb98a30513045e0 +Block 0024 [109]: 9e49507f75e0e273 +Block 0024 [110]: b6167732adb9ace3 +Block 0024 [111]: 14c51dd25c3b0711 +Block 0024 [112]: d23719bfb63c813f +Block 0024 [113]: 466f1d49562849ea +Block 0024 [114]: 5f65af04730f1d3d +Block 0024 [115]: 4ae36efe0c348731 +Block 0024 [116]: 3b1cf728f294dcc1 +Block 0024 [117]: 8afc9d93b01daac7 +Block 0024 [118]: fb5387bac10ba1fe +Block 0024 [119]: 5600926e4360daf7 +Block 0024 [120]: 910a656b9b23d68b +Block 0024 [121]: 400469d9842f7c37 +Block 0024 [122]: ae81a2f8022e7b9a +Block 0024 [123]: 55124c8da08f7aab +Block 0024 [124]: d792973dc799ad1a +Block 0024 [125]: 46a5fbef3053ef4d +Block 0024 [126]: 54dd3ef21014e501 +Block 0024 [127]: 874e921013f3b13d +Block 0025 [ 0]: f40ac8f5845def30 +Block 0025 [ 1]: 1f4296441bbd6779 +Block 0025 [ 2]: 65f2730864a5a27c +Block 0025 [ 3]: 41cee44733d6a4eb +Block 0025 [ 4]: 37972b4e9c1337f0 +Block 0025 [ 5]: 0da94ac748ecfccc +Block 0025 [ 6]: d00ec56bd42ab356 +Block 0025 [ 7]: 9995be2379853fce +Block 0025 [ 8]: 5e133846cb0874c8 +Block 0025 [ 9]: d6aa81a7f7fe4116 +Block 0025 [ 10]: 5c23e4d73838297b +Block 0025 [ 11]: de4046378b228598 +Block 0025 [ 12]: 82033a1812a810b7 +Block 0025 [ 13]: 36d19a02b1197e62 +Block 0025 [ 14]: 27847cf3eb8fed8c +Block 0025 [ 15]: ca441892fd7a3298 +Block 0025 [ 16]: e7d1ee4610813059 +Block 0025 [ 17]: e95b1311a07e4d59 +Block 0025 [ 18]: 9a74bbad3499e48b +Block 0025 [ 19]: 3fa0ce3260f1c2a2 +Block 0025 [ 20]: 2c02959f4e1baf3c +Block 0025 [ 21]: c681e7d24a07ed41 +Block 0025 [ 22]: 865fde98d28f65c6 +Block 0025 [ 23]: cd7ecc6a328adea8 +Block 0025 [ 24]: 7a84b37001af50da +Block 0025 [ 25]: 49e511ec6f403431 +Block 0025 [ 26]: 5a69a0ddbf783485 +Block 0025 [ 27]: 578f49f8c13f2d16 +Block 0025 [ 28]: 5695e8d9cb8d4a0d +Block 0025 [ 29]: 85a7a121175fc91b +Block 0025 [ 30]: e437059a8c03b9e2 +Block 0025 [ 31]: bab846561467bc3e +Block 0025 [ 32]: c281376ed6bc4f21 +Block 0025 [ 33]: 7cd34007c72e99a7 +Block 0025 [ 34]: 969adb28d883462c +Block 0025 [ 35]: 71763c3e19cfd5b7 +Block 0025 [ 36]: 8388042bbb291add +Block 0025 [ 37]: a29b5a461d706d9a +Block 0025 [ 38]: b4f60478fad36637 +Block 0025 [ 39]: 260fd795fa3fac08 +Block 0025 [ 40]: 73c8ef82f97dacec +Block 0025 [ 41]: d26b5e8add1ec2ac +Block 0025 [ 42]: 3d6f281924c49974 +Block 0025 [ 43]: 99a45ea9a1da887a +Block 0025 [ 44]: 1eb184eb695585c8 +Block 0025 [ 45]: 510c194fb94a8610 +Block 0025 [ 46]: acc7ebcd8b3819d9 +Block 0025 [ 47]: 4fe39efc1efe8096 +Block 0025 [ 48]: 1066a79624bc93b7 +Block 0025 [ 49]: a6d83c9fbbcde211 +Block 0025 [ 50]: a0078f9f08d55000 +Block 0025 [ 51]: 3a51a4ad52307cfd +Block 0025 [ 52]: 7650dc6bf608bb68 +Block 0025 [ 53]: 6bf46dd79e2e379f +Block 0025 [ 54]: b3c98c3f49ebdea6 +Block 0025 [ 55]: 4634c08aff58b2cb +Block 0025 [ 56]: 66b7637206c1241d +Block 0025 [ 57]: 97c04418a19c7a10 +Block 0025 [ 58]: 572a0c8d5e97bc3d +Block 0025 [ 59]: 2c0c4bcc9a8b913f +Block 0025 [ 60]: 2d42eb8a5c89595e +Block 0025 [ 61]: a490f7f31b5a32f2 +Block 0025 [ 62]: 3456ab2f7b9f5153 +Block 0025 [ 63]: a90cf3f0015e90e3 +Block 0025 [ 64]: 4081d7690d2b09f4 +Block 0025 [ 65]: 8170b2e0f6724b15 +Block 0025 [ 66]: bfa2c86fcf51d13d +Block 0025 [ 67]: cf4026c87fc36b50 +Block 0025 [ 68]: a19eeb309e0ed951 +Block 0025 [ 69]: 94968a68e780bb82 +Block 0025 [ 70]: fd06b14cb0e244d3 +Block 0025 [ 71]: 1a5df1d3bd1da7bd +Block 0025 [ 72]: cf92c12d5501b592 +Block 0025 [ 73]: 33dfcade68dcf782 +Block 0025 [ 74]: 3c34c8de434cd8a0 +Block 0025 [ 75]: 583fd5fa9cdc334b +Block 0025 [ 76]: a561a5771600760d +Block 0025 [ 77]: 5bfff03f2074662c +Block 0025 [ 78]: 9a3cab09c49296a2 +Block 0025 [ 79]: c56e377afb6b9ac7 +Block 0025 [ 80]: 98e2570ecb9f0e9a +Block 0025 [ 81]: cc934d5b70c73d3e +Block 0025 [ 82]: e69d1e00bb93731e +Block 0025 [ 83]: 8fc0c795dc74ebb9 +Block 0025 [ 84]: 220b46e546584007 +Block 0025 [ 85]: c74519effd86d175 +Block 0025 [ 86]: 5ab87fef552bc8e3 +Block 0025 [ 87]: cc959be70d739717 +Block 0025 [ 88]: 17f1b7bc5d39f702 +Block 0025 [ 89]: 762ebc3e921b84ee +Block 0025 [ 90]: 888a1d4dc4c3380f +Block 0025 [ 91]: db8f9235f7204500 +Block 0025 [ 92]: 503d9ddadb99fd67 +Block 0025 [ 93]: 62409e9cde17fe73 +Block 0025 [ 94]: e9ca642a2880194a +Block 0025 [ 95]: 6f4c703d8fd584f9 +Block 0025 [ 96]: b10fc66cf1416e64 +Block 0025 [ 97]: 91e9eba3834f82e9 +Block 0025 [ 98]: 20ab216a2cc0113a +Block 0025 [ 99]: bd621abe0b12ccb8 +Block 0025 [100]: 0c1c7cd2b30bfd1c +Block 0025 [101]: 200b79e1e90ee82b +Block 0025 [102]: 6a6287dc3b913eff +Block 0025 [103]: fc0b87e1ad118bc3 +Block 0025 [104]: 9a6b87099c4706ed +Block 0025 [105]: 373fabb9b76bf6ed +Block 0025 [106]: 536e17be7870998e +Block 0025 [107]: 2c18f19b85c54d1c +Block 0025 [108]: 5169df225240c0be +Block 0025 [109]: e653baf950d6b0b5 +Block 0025 [110]: 3d7977cb7e63fa91 +Block 0025 [111]: b3ffcdd7e3d15e58 +Block 0025 [112]: 00d16dcf47a61b68 +Block 0025 [113]: 8d1c4f35e4354ea8 +Block 0025 [114]: 5b7920f6270c732e +Block 0025 [115]: 6da654051829a7f3 +Block 0025 [116]: fc7ec3060f200354 +Block 0025 [117]: 7bc527041bc699aa +Block 0025 [118]: 36e804a3bce47567 +Block 0025 [119]: 5078a05b3689ccb0 +Block 0025 [120]: cd36db69ab1452d0 +Block 0025 [121]: 2ffbb1267bda416f +Block 0025 [122]: 5afe4953b0b8abec +Block 0025 [123]: 62e953030ae41e09 +Block 0025 [124]: 59c2d3acda8e7210 +Block 0025 [125]: b3148cae31588dda +Block 0025 [126]: 7d3d2d2a62e66584 +Block 0025 [127]: 7d1bc1dd3f23304f +Block 0026 [ 0]: aa12cd00fc19aa98 +Block 0026 [ 1]: 4baa3e2f0d2d9965 +Block 0026 [ 2]: cccc9d36f2b22bd7 +Block 0026 [ 3]: 66262feec7d5ca74 +Block 0026 [ 4]: 5ca622cdf216866e +Block 0026 [ 5]: 30811834a878128e +Block 0026 [ 6]: 1831ac788a613c33 +Block 0026 [ 7]: 7c5431da91e89887 +Block 0026 [ 8]: 002b8a6bfcca3171 +Block 0026 [ 9]: 563ea3cefeb34181 +Block 0026 [ 10]: 27b5d3695d8acea2 +Block 0026 [ 11]: bfefe32924482e29 +Block 0026 [ 12]: dbb1691432b6f222 +Block 0026 [ 13]: 5cdd96afe1e34f32 +Block 0026 [ 14]: 6d7e8399851e95f4 +Block 0026 [ 15]: 43294203e112bcb9 +Block 0026 [ 16]: 8337ce689d3e9caa +Block 0026 [ 17]: 7c26a7ef08e470d7 +Block 0026 [ 18]: 759a31d3fa1e8236 +Block 0026 [ 19]: 2149cc4365689b19 +Block 0026 [ 20]: 3b6bb146c1904fce +Block 0026 [ 21]: c3f0fa1dd9bbd53d +Block 0026 [ 22]: 337b92787d57be4c +Block 0026 [ 23]: 5402836eede6ed17 +Block 0026 [ 24]: 7c297b0511fc2afe +Block 0026 [ 25]: 30cc08a100c263a4 +Block 0026 [ 26]: 3be7c204b7169815 +Block 0026 [ 27]: e506d93b81a75733 +Block 0026 [ 28]: 1a36cf3c96c7000a +Block 0026 [ 29]: abf78cb4e62a9c9d +Block 0026 [ 30]: bfe1d6bc3d4ad847 +Block 0026 [ 31]: a9b8d174fb0a5b58 +Block 0026 [ 32]: 7c01f62ac035bfb3 +Block 0026 [ 33]: 792b16e8761a2231 +Block 0026 [ 34]: e33ae23d15dd49ff +Block 0026 [ 35]: 81e01c580bb42aa4 +Block 0026 [ 36]: 0b7854b34b42b26e +Block 0026 [ 37]: e5f3890795c8fd3f +Block 0026 [ 38]: 1d32f3cd092c011d +Block 0026 [ 39]: bb846e08144af8c9 +Block 0026 [ 40]: 529c328a0fd6be1c +Block 0026 [ 41]: 1838e4cc3b1e1bee +Block 0026 [ 42]: 0f8daadca7ece815 +Block 0026 [ 43]: e6744a102f363ba5 +Block 0026 [ 44]: ec0180f97f8dc01a +Block 0026 [ 45]: b7875db887d8fa98 +Block 0026 [ 46]: 0e14703884e20016 +Block 0026 [ 47]: 51e7d6f8f33eb75e +Block 0026 [ 48]: e4996dbaa2737503 +Block 0026 [ 49]: cadb50fe0ae56e79 +Block 0026 [ 50]: 572aa6d3ed950c8e +Block 0026 [ 51]: 9b8c0a7a8dbc04d3 +Block 0026 [ 52]: 6059cb549441ca18 +Block 0026 [ 53]: 9500848c02cd176a +Block 0026 [ 54]: 5db9764a7ced5cdb +Block 0026 [ 55]: 325d4e51b05d23fb +Block 0026 [ 56]: f9884df02768f572 +Block 0026 [ 57]: 0aa40c7b5503989e +Block 0026 [ 58]: d817a371209c118b +Block 0026 [ 59]: e22bf07992f26ca9 +Block 0026 [ 60]: 690d3e6005735450 +Block 0026 [ 61]: 0070329e2156498a +Block 0026 [ 62]: 04f5e9b53490b84c +Block 0026 [ 63]: dc854d01c6d9638d +Block 0026 [ 64]: e3fc2193160c9c54 +Block 0026 [ 65]: 1d8550c266bb484b +Block 0026 [ 66]: b42ad34afd366dbb +Block 0026 [ 67]: 9744998468bc6ac9 +Block 0026 [ 68]: 3a5f729463a09383 +Block 0026 [ 69]: eca7bd87f12a5180 +Block 0026 [ 70]: 6122ed0517cc3b62 +Block 0026 [ 71]: cc72077761614624 +Block 0026 [ 72]: d88a25deabb1eea7 +Block 0026 [ 73]: 1028ffb6d1792abe +Block 0026 [ 74]: 92d03b7f00202965 +Block 0026 [ 75]: 02214bddf45887be +Block 0026 [ 76]: 946fa7bd3f16134e +Block 0026 [ 77]: 3bb05c80eb7b9e13 +Block 0026 [ 78]: 3fa6da973455eef9 +Block 0026 [ 79]: 77fd6d705dc5eae9 +Block 0026 [ 80]: 590461cd09e0b05c +Block 0026 [ 81]: a41d33a709dac06d +Block 0026 [ 82]: f51cc50323f5dd76 +Block 0026 [ 83]: 691aedf3966aec4c +Block 0026 [ 84]: 28128ef432e02aa2 +Block 0026 [ 85]: 197d1d0322f6b647 +Block 0026 [ 86]: c455c6c29400221b +Block 0026 [ 87]: 9fd4cd9eda0a1ef4 +Block 0026 [ 88]: a52e7e396e31ea48 +Block 0026 [ 89]: 10e4dfc62a716c6d +Block 0026 [ 90]: 1cea0672ccab61ba +Block 0026 [ 91]: 083c605e2d85fb34 +Block 0026 [ 92]: 369d098dde8ae9e0 +Block 0026 [ 93]: aad473e6d8dd7bd5 +Block 0026 [ 94]: b96bc5b048b796af +Block 0026 [ 95]: 11ed0ca89be26340 +Block 0026 [ 96]: 1599fc597339eb3a +Block 0026 [ 97]: 468fae3ebe64843b +Block 0026 [ 98]: efcc60fa3d14c8ee +Block 0026 [ 99]: 65a32ce3a18bdcf3 +Block 0026 [100]: af9208773e96aab2 +Block 0026 [101]: 8e1af05387165864 +Block 0026 [102]: 5ddff1b588aa14c9 +Block 0026 [103]: f8639e1aba07adda +Block 0026 [104]: e5395cd2d12320aa +Block 0026 [105]: 7759c07513d7f662 +Block 0026 [106]: 48377f83e29b778d +Block 0026 [107]: 19e70cfcfc8c2607 +Block 0026 [108]: 886bac7d24ca1f81 +Block 0026 [109]: e4e3f70544723cf7 +Block 0026 [110]: 6ca3eb985bb1ec17 +Block 0026 [111]: b8b4e578e5eb7856 +Block 0026 [112]: 3b3b7c449c27a4dd +Block 0026 [113]: defe515fcc6e2cc7 +Block 0026 [114]: 8a373232c3f9efa4 +Block 0026 [115]: 17a870a8636beec7 +Block 0026 [116]: 7d8903416c9f1320 +Block 0026 [117]: ecc207884b932101 +Block 0026 [118]: 18bf11e41267b18a +Block 0026 [119]: b4b347da9a7cb8ac +Block 0026 [120]: aecfcd3642ffea30 +Block 0026 [121]: 5122a78e0ca8816b +Block 0026 [122]: 6bbfce230920d8b3 +Block 0026 [123]: 161a2c5ea15a0e0b +Block 0026 [124]: c2d4801fb452e4ac +Block 0026 [125]: 82fd4d7b2d2fe2e8 +Block 0026 [126]: 854257a01b287eba +Block 0026 [127]: 334a677fd1ec9fda +Block 0027 [ 0]: 5be3fe13bdce08c7 +Block 0027 [ 1]: b0a7a8a8ade045e3 +Block 0027 [ 2]: 06df886512fe5392 +Block 0027 [ 3]: 9af2bf3676906d07 +Block 0027 [ 4]: 88e2cc40b8a4e76f +Block 0027 [ 5]: de37cbf63f3a44bc +Block 0027 [ 6]: a35ba64d6ddc8be7 +Block 0027 [ 7]: 511a834bc9aa1cc2 +Block 0027 [ 8]: f4e669ed4f8cb89d +Block 0027 [ 9]: d07308fc0ed46a4f +Block 0027 [ 10]: 7491f695a47aa04a +Block 0027 [ 11]: 31a11a9b71441773 +Block 0027 [ 12]: f0503c89f24fa682 +Block 0027 [ 13]: 75c12f9832ced304 +Block 0027 [ 14]: 54bde80d94f2cf24 +Block 0027 [ 15]: 550375f77d8be0af +Block 0027 [ 16]: 5696378300c055d2 +Block 0027 [ 17]: f2779fe23b85677a +Block 0027 [ 18]: 073405dcbbf97024 +Block 0027 [ 19]: 9013e7655de698aa +Block 0027 [ 20]: 2d44241faee0b9ef +Block 0027 [ 21]: ec51c8714f062da1 +Block 0027 [ 22]: 23d915c0aaaceb88 +Block 0027 [ 23]: d165697c18914924 +Block 0027 [ 24]: 24e554f22f933aa4 +Block 0027 [ 25]: 60d0782fc7ee202e +Block 0027 [ 26]: 63618eed5b6db134 +Block 0027 [ 27]: fd50ebe0567c4e6a +Block 0027 [ 28]: 95cb587105016157 +Block 0027 [ 29]: 6906ac0146770772 +Block 0027 [ 30]: 86031f68bbcbcf07 +Block 0027 [ 31]: 237b74293c87ed16 +Block 0027 [ 32]: 28b1d41aec829c34 +Block 0027 [ 33]: d84033367d075335 +Block 0027 [ 34]: c1b1440ee98abbfc +Block 0027 [ 35]: b338f834ceb27aa7 +Block 0027 [ 36]: cba740aed97e8d1d +Block 0027 [ 37]: a542c6a851d2a483 +Block 0027 [ 38]: 0799a8e55015b1f7 +Block 0027 [ 39]: c819a6146209f768 +Block 0027 [ 40]: cf8f88793592c941 +Block 0027 [ 41]: b822c49796097152 +Block 0027 [ 42]: 1fc839bfaf3e2f0c +Block 0027 [ 43]: 94cf66e5cacb5150 +Block 0027 [ 44]: 023c2713d277b7da +Block 0027 [ 45]: 42c9af54b7467477 +Block 0027 [ 46]: 06c87780cd1390fe +Block 0027 [ 47]: 4df89f800ac57ce4 +Block 0027 [ 48]: da72cf9ca4d8bf76 +Block 0027 [ 49]: 31bbd9520371297c +Block 0027 [ 50]: 5d99b61c5c43683d +Block 0027 [ 51]: 10bf4476116ac309 +Block 0027 [ 52]: c7abf37c2087b657 +Block 0027 [ 53]: 813a4a75afa0e07f +Block 0027 [ 54]: 06f8edc535913caa +Block 0027 [ 55]: 0e4836f75e413c0d +Block 0027 [ 56]: fbdc28f079ab6844 +Block 0027 [ 57]: ae5e53895c5e7a1a +Block 0027 [ 58]: 9712100247309cfe +Block 0027 [ 59]: 0be03ed03e7eb934 +Block 0027 [ 60]: 96104af9ad7e935f +Block 0027 [ 61]: b6ac1142ab06b5cc +Block 0027 [ 62]: c9e4cb50733efba1 +Block 0027 [ 63]: 74ea5251be8ca509 +Block 0027 [ 64]: f83778625640b346 +Block 0027 [ 65]: 11215e4e29240901 +Block 0027 [ 66]: d8f9a392f74ab538 +Block 0027 [ 67]: d0ac6f59d243531d +Block 0027 [ 68]: 8d63dd236aa37568 +Block 0027 [ 69]: 03bf34c4868d649e +Block 0027 [ 70]: df8e57df569aa85d +Block 0027 [ 71]: 71dfb145215c570b +Block 0027 [ 72]: 88d8eda9ee1a1ccb +Block 0027 [ 73]: 775f02960e9c8f91 +Block 0027 [ 74]: 42848838d08ab650 +Block 0027 [ 75]: 050183f31a1958ea +Block 0027 [ 76]: 134ca64846003950 +Block 0027 [ 77]: 1e2f30784e021a33 +Block 0027 [ 78]: 5fd720a5f4a10263 +Block 0027 [ 79]: 70c2c08cc82c6e5d +Block 0027 [ 80]: 68d0124851ad816c +Block 0027 [ 81]: 5930bd7ddc05735b +Block 0027 [ 82]: b8df3438977d79e5 +Block 0027 [ 83]: 7158f5c748d0dd09 +Block 0027 [ 84]: 60e53a3cfb9a75e5 +Block 0027 [ 85]: fb0cc38694941195 +Block 0027 [ 86]: 5536cf36b8ed3ba8 +Block 0027 [ 87]: 5aaae223caec9458 +Block 0027 [ 88]: fcd688ba2023d937 +Block 0027 [ 89]: 2b23815894329792 +Block 0027 [ 90]: edef6c1e61c71e64 +Block 0027 [ 91]: 0e57b6aac7894345 +Block 0027 [ 92]: 14ebf95eec26c84d +Block 0027 [ 93]: 1a748bb411e49be8 +Block 0027 [ 94]: dbd73d86a6520c4a +Block 0027 [ 95]: 38436185c244b69d +Block 0027 [ 96]: 3712f093d0292f34 +Block 0027 [ 97]: 32813df121b4155d +Block 0027 [ 98]: 6ad496d0b7522951 +Block 0027 [ 99]: 851fe36a165d38f7 +Block 0027 [100]: 145751d01f5fe0b5 +Block 0027 [101]: 2eff47cf3e629eb1 +Block 0027 [102]: 811a787ec3369198 +Block 0027 [103]: 563945cc33943766 +Block 0027 [104]: a6abe4655beb1d8b +Block 0027 [105]: dafd2224158188a5 +Block 0027 [106]: 18c78fb93d7eb7f8 +Block 0027 [107]: 0cd57cc01b3a80f0 +Block 0027 [108]: 04d2ec2408194328 +Block 0027 [109]: 44a6ccf18a1db45e +Block 0027 [110]: 5561ffd2d09051af +Block 0027 [111]: 52d51f6943763516 +Block 0027 [112]: 52f1b6ccc089f896 +Block 0027 [113]: f83184008f9b70b1 +Block 0027 [114]: 47d67a0849c7fde3 +Block 0027 [115]: 7e9f8078e4be0c14 +Block 0027 [116]: 1c4a3cdd84be40c0 +Block 0027 [117]: f9916cedc43bd59b +Block 0027 [118]: 9bc4380d0351e854 +Block 0027 [119]: 00cfbceb39e15f88 +Block 0027 [120]: 7f5f41a71976be18 +Block 0027 [121]: 5c6b7b42ec0a93ee +Block 0027 [122]: eac2b68d34c73688 +Block 0027 [123]: a7ddbf2bfc4be3ef +Block 0027 [124]: 49d47531d67094a9 +Block 0027 [125]: a6eaf85645fb6eae +Block 0027 [126]: 77a99a8bd0ea288d +Block 0027 [127]: d54c07bcb55f92d7 +Block 0028 [ 0]: ea035ea2040b86fa +Block 0028 [ 1]: 2e16a6ff91268b3e +Block 0028 [ 2]: c33278f3f2568bcd +Block 0028 [ 3]: 4e7a49242419fea0 +Block 0028 [ 4]: 6762092f26336892 +Block 0028 [ 5]: a346752d8aaf6445 +Block 0028 [ 6]: 397328788712c7c7 +Block 0028 [ 7]: 340ec72f35291f80 +Block 0028 [ 8]: 9b9a3f1443fdf705 +Block 0028 [ 9]: b642da5d981d9f96 +Block 0028 [ 10]: 78bb8d36eadc7cd6 +Block 0028 [ 11]: daf5dcf74717e45c +Block 0028 [ 12]: b2ad870532880376 +Block 0028 [ 13]: 3567026ef751358a +Block 0028 [ 14]: 93d5566d1fe4ec35 +Block 0028 [ 15]: afdee647c2fca6f4 +Block 0028 [ 16]: 7016d9708eb7df00 +Block 0028 [ 17]: 201c3ad2a8a7c3c6 +Block 0028 [ 18]: 25d14750df3d239b +Block 0028 [ 19]: 70bafb70600a8c04 +Block 0028 [ 20]: 46ce039305fb1a7b +Block 0028 [ 21]: 7984538abbfadcd6 +Block 0028 [ 22]: 64aecb8107d681bf +Block 0028 [ 23]: 496cf0f56bff4df1 +Block 0028 [ 24]: f065187755f8cb53 +Block 0028 [ 25]: b3ea311b5f67abbc +Block 0028 [ 26]: 2a828b7595500d4b +Block 0028 [ 27]: 34f0a68a4e6119f5 +Block 0028 [ 28]: 004c38fd036b5024 +Block 0028 [ 29]: aa526730ee10da64 +Block 0028 [ 30]: d39d0fac773bafcb +Block 0028 [ 31]: b11607e91b9f5a00 +Block 0028 [ 32]: c7f3de33f5f4cf6a +Block 0028 [ 33]: 266f646f53cbea7c +Block 0028 [ 34]: cd80be78d7225cb8 +Block 0028 [ 35]: 3ab994a40c96cd3f +Block 0028 [ 36]: 946f570038bb1774 +Block 0028 [ 37]: 348efca8d38658cf +Block 0028 [ 38]: dd737ec2d7011280 +Block 0028 [ 39]: a9670f393e9bc143 +Block 0028 [ 40]: 7487a7eee9bc3abb +Block 0028 [ 41]: af350b815c13205b +Block 0028 [ 42]: af5d5d6b18eeb661 +Block 0028 [ 43]: df325329eb54cc34 +Block 0028 [ 44]: 95eea5b85bf729f1 +Block 0028 [ 45]: 8cc4861ad9ae97c2 +Block 0028 [ 46]: d8fa96de59d1c36d +Block 0028 [ 47]: d83a13b1285ba019 +Block 0028 [ 48]: 06f15b3e227b12e2 +Block 0028 [ 49]: 89eff8ca5feb5b54 +Block 0028 [ 50]: 2965b0ae039dc693 +Block 0028 [ 51]: b053ce0a9639b9e2 +Block 0028 [ 52]: 6b1294b3b911d087 +Block 0028 [ 53]: cb8ed5a39f69a591 +Block 0028 [ 54]: f401f0d2325dc6f0 +Block 0028 [ 55]: 52702e2f4fd6cc0f +Block 0028 [ 56]: 552fafd12d308c6d +Block 0028 [ 57]: fc3930e1e07015b0 +Block 0028 [ 58]: ded4395a07ef93d5 +Block 0028 [ 59]: 352d277d5f9aa883 +Block 0028 [ 60]: f1e65e32dfda026e +Block 0028 [ 61]: d06fa1b780055d65 +Block 0028 [ 62]: 3d91dedd8322ab05 +Block 0028 [ 63]: 6c54b369bd42086d +Block 0028 [ 64]: b63e977354277451 +Block 0028 [ 65]: e51466e99f6cc354 +Block 0028 [ 66]: 5fa67b6b41447bbb +Block 0028 [ 67]: 733e4305ce6154db +Block 0028 [ 68]: 1421bedf364b1955 +Block 0028 [ 69]: 38a036084d175daf +Block 0028 [ 70]: 4dc377e4411fd24f +Block 0028 [ 71]: abb4fda7705ed57f +Block 0028 [ 72]: 3844dec4d4f399fc +Block 0028 [ 73]: 44d53f09c35e3822 +Block 0028 [ 74]: d2bcd61705007948 +Block 0028 [ 75]: 39cd9df9f7e059bc +Block 0028 [ 76]: f0ac2ab3385517d4 +Block 0028 [ 77]: b8c0a4141d077e38 +Block 0028 [ 78]: b83aaaddc5ead1cf +Block 0028 [ 79]: 56c73f9d8cf69fef +Block 0028 [ 80]: 979d31a4ed576dd6 +Block 0028 [ 81]: 9a8d33932d334fcb +Block 0028 [ 82]: 5943ca7be3e1a9ab +Block 0028 [ 83]: 8aeeee3a3e71e088 +Block 0028 [ 84]: b304d443b00f4aa6 +Block 0028 [ 85]: 16882d4404bd747d +Block 0028 [ 86]: 8af608fd07a6a83a +Block 0028 [ 87]: 22bb9dfc7f464419 +Block 0028 [ 88]: 0754bb3c27a00864 +Block 0028 [ 89]: 8cee6891c9c53736 +Block 0028 [ 90]: fadd02c16c0e8a2c +Block 0028 [ 91]: 3a6029c10bd05df1 +Block 0028 [ 92]: e87d999067440344 +Block 0028 [ 93]: 861b32010d72a2d4 +Block 0028 [ 94]: 7a05572de09a1c5a +Block 0028 [ 95]: cabea168c4a214c5 +Block 0028 [ 96]: 3cff347defdadd78 +Block 0028 [ 97]: 2843cb0790f9e480 +Block 0028 [ 98]: b0df9bce712bbf4d +Block 0028 [ 99]: f6a2c8e92ebebd7f +Block 0028 [100]: 4f0a9e32dc2630ae +Block 0028 [101]: 294af970066eae49 +Block 0028 [102]: 5325be741ea3470d +Block 0028 [103]: 9c7f2e03fe4a5b58 +Block 0028 [104]: c2d8f4da0903a91f +Block 0028 [105]: 9b70790583419a59 +Block 0028 [106]: a6d9d7c679a4d90a +Block 0028 [107]: fa61e1d94dae1846 +Block 0028 [108]: 818fde1c5b259df4 +Block 0028 [109]: f6fb171cd4d98e0f +Block 0028 [110]: b43ad75705f2ef0f +Block 0028 [111]: 59a5eb3f9a5fe96f +Block 0028 [112]: 08b6d1cc904187ae +Block 0028 [113]: c8218eae71884346 +Block 0028 [114]: e17951439c57259b +Block 0028 [115]: 669f4548595914ff +Block 0028 [116]: 982e95a55f69f9a4 +Block 0028 [117]: e228afc8f89d45fb +Block 0028 [118]: 47099aed1a722d5a +Block 0028 [119]: f83cefa338551daa +Block 0028 [120]: 2c21f9a015a8a516 +Block 0028 [121]: d2ec752a4d981f6b +Block 0028 [122]: 146521d7a2f009a2 +Block 0028 [123]: 071014e51af69e26 +Block 0028 [124]: 5f82eae58d2972a5 +Block 0028 [125]: 966eb97f7e0f60a1 +Block 0028 [126]: 308ce93e852a62bc +Block 0028 [127]: efc36d7416e66af6 +Block 0029 [ 0]: 3bdabd48605c830d +Block 0029 [ 1]: 301ed6564cd8adec +Block 0029 [ 2]: df374c730df57a03 +Block 0029 [ 3]: fad6e7bdacbbcf17 +Block 0029 [ 4]: e92e32543552cbe4 +Block 0029 [ 5]: 29447af54f3ee354 +Block 0029 [ 6]: 452121662a1e7130 +Block 0029 [ 7]: e7e398737b41d189 +Block 0029 [ 8]: a1117ca5f5c3c5fa +Block 0029 [ 9]: d76ab9d95a081eec +Block 0029 [ 10]: 5301a2721f0df1eb +Block 0029 [ 11]: 95200fbff6ad0d78 +Block 0029 [ 12]: 195f9faddea81f3e +Block 0029 [ 13]: bd7534410b5bd10d +Block 0029 [ 14]: 6327d0b34d6a447a +Block 0029 [ 15]: db196f244badd93d +Block 0029 [ 16]: 7d62585524f47b6b +Block 0029 [ 17]: 2013c6d5df94b708 +Block 0029 [ 18]: d5e8d62b1af8df38 +Block 0029 [ 19]: f89f1563c6372121 +Block 0029 [ 20]: 50b7efa2fbdfdd40 +Block 0029 [ 21]: 656eef73963c5266 +Block 0029 [ 22]: 3da1eacc8baf2460 +Block 0029 [ 23]: 390a9769d20ddf52 +Block 0029 [ 24]: 23d923f21eed6aa5 +Block 0029 [ 25]: 173dc145e6d0171f +Block 0029 [ 26]: 6c72b0739a4ee6c0 +Block 0029 [ 27]: 0f1acedbf79b41b4 +Block 0029 [ 28]: 40b950241d55ce76 +Block 0029 [ 29]: b59e3bd42c1e5a78 +Block 0029 [ 30]: e6be2f76812aa447 +Block 0029 [ 31]: f37036ff225bbbda +Block 0029 [ 32]: 351f3c43a983b318 +Block 0029 [ 33]: 3c63ce438fa5e84f +Block 0029 [ 34]: e0a56205e09aa574 +Block 0029 [ 35]: b50f7850346b47d6 +Block 0029 [ 36]: b0a19b67c2ed5b8e +Block 0029 [ 37]: 8f50feafdaea26ec +Block 0029 [ 38]: cdc0bc350397fde4 +Block 0029 [ 39]: b824e50d70d878b8 +Block 0029 [ 40]: 20c2852ed5fc9e9b +Block 0029 [ 41]: d260cc25828b18cc +Block 0029 [ 42]: 97f0a84ee15612ea +Block 0029 [ 43]: 48afdb506f6251df +Block 0029 [ 44]: 461c26175b8ae4ef +Block 0029 [ 45]: 216dbe3ccbb14768 +Block 0029 [ 46]: 594bbcb744f7b638 +Block 0029 [ 47]: c9af82003c6890bb +Block 0029 [ 48]: 62536e8df9755acf +Block 0029 [ 49]: b7ef0918894031d2 +Block 0029 [ 50]: 7a453d700fbb40cd +Block 0029 [ 51]: 71ad7f2a5729d489 +Block 0029 [ 52]: 20691da8478b2dde +Block 0029 [ 53]: 9f0a0c8183f30200 +Block 0029 [ 54]: a6d136280e231439 +Block 0029 [ 55]: ba8aaf65340929ec +Block 0029 [ 56]: c80f137c575e21a0 +Block 0029 [ 57]: b9a819a536b2975b +Block 0029 [ 58]: 5d767f30e753f9cb +Block 0029 [ 59]: c5c8b4e9285ab45f +Block 0029 [ 60]: 104063c24eda0f34 +Block 0029 [ 61]: fb3993aa2b39c1cb +Block 0029 [ 62]: 47d27cc72c649216 +Block 0029 [ 63]: b1e6d9348be399b3 +Block 0029 [ 64]: a6d723637e610f54 +Block 0029 [ 65]: 5a122ebb3829ce5d +Block 0029 [ 66]: b0686b38d9c9dd43 +Block 0029 [ 67]: 47c31e82b95419b9 +Block 0029 [ 68]: 9f05eca085d6e86e +Block 0029 [ 69]: 7e13c02e53b4e999 +Block 0029 [ 70]: f02db46b55a65df6 +Block 0029 [ 71]: 77896aea6c63fa83 +Block 0029 [ 72]: 8b9f53272e5b2ee1 +Block 0029 [ 73]: ac843be226b3579c +Block 0029 [ 74]: 82b7b66c3fa114a9 +Block 0029 [ 75]: 72fee33e9be86f50 +Block 0029 [ 76]: dc27b4a5de1906c8 +Block 0029 [ 77]: e3c2039d4303a548 +Block 0029 [ 78]: 15e3b3a7892b0d8f +Block 0029 [ 79]: 61d89048357716ce +Block 0029 [ 80]: 0e7ccb48edb01b41 +Block 0029 [ 81]: 31fa10f63f19067c +Block 0029 [ 82]: 6e12ca8d56c07bdf +Block 0029 [ 83]: c96238b43ce281a7 +Block 0029 [ 84]: ea92aabec561c97c +Block 0029 [ 85]: 5b30055449d1b10a +Block 0029 [ 86]: 6bc365c220fa363a +Block 0029 [ 87]: e80070c1d31570ae +Block 0029 [ 88]: f000f70cb7f68723 +Block 0029 [ 89]: 616e9af618594d1f +Block 0029 [ 90]: acbf4d18a682c25c +Block 0029 [ 91]: 14cdcd57ca47433d +Block 0029 [ 92]: a428accbefb4d001 +Block 0029 [ 93]: 895c764190262d06 +Block 0029 [ 94]: 64b93e0add42e93f +Block 0029 [ 95]: 26235c89252710a9 +Block 0029 [ 96]: e743ecadafb28d0c +Block 0029 [ 97]: 0c8bb00bbbe17d45 +Block 0029 [ 98]: bdb9e60a72a82689 +Block 0029 [ 99]: 59ac39145a7ae1c1 +Block 0029 [100]: cb5419e28b5f6009 +Block 0029 [101]: 8a9b807b28c6b546 +Block 0029 [102]: 13f5c91565058303 +Block 0029 [103]: 630b1263788776e1 +Block 0029 [104]: f89193742379c81e +Block 0029 [105]: 9b3fb899f09b4cb1 +Block 0029 [106]: 40fd48829eb77bd7 +Block 0029 [107]: 477d964d41c8d9d0 +Block 0029 [108]: 2a797b8d5a2f0702 +Block 0029 [109]: 366689716914f34d +Block 0029 [110]: 4d0c98ad9d485725 +Block 0029 [111]: 4fcca43a76ba9ea2 +Block 0029 [112]: d8b9ebf080d6b155 +Block 0029 [113]: b6b9b9bed4dc8ecd +Block 0029 [114]: 84c306ea62699a25 +Block 0029 [115]: 0de49041213208e6 +Block 0029 [116]: ef61d4ee82187557 +Block 0029 [117]: 0a8f1d03285d95ec +Block 0029 [118]: c25f5ffb0f4df0a9 +Block 0029 [119]: ade24bb8321c6aa1 +Block 0029 [120]: 674fd09cc02b1746 +Block 0029 [121]: 251cd54c44f9e1ce +Block 0029 [122]: fa4e3ef002c99ebd +Block 0029 [123]: 7f9595eccb3636cf +Block 0029 [124]: 4ac562e87d01c37d +Block 0029 [125]: b48318bac585fbc2 +Block 0029 [126]: 42b91d62b469afec +Block 0029 [127]: adf8ebc72e5180ce +Block 0030 [ 0]: 78ebb0cc500cfd23 +Block 0030 [ 1]: c460a52a939b100f +Block 0030 [ 2]: 413797d113559097 +Block 0030 [ 3]: 24097f4a72aa4d7a +Block 0030 [ 4]: 7fd192dc686f9dd1 +Block 0030 [ 5]: 1403f9433f94c680 +Block 0030 [ 6]: 2888ddca7026222f +Block 0030 [ 7]: d8de309eb8eea83a +Block 0030 [ 8]: 7ddbc393ee013ca4 +Block 0030 [ 9]: eab9f37fc71f9c64 +Block 0030 [ 10]: d67184afa449b483 +Block 0030 [ 11]: b34365013ef6f697 +Block 0030 [ 12]: 7d3c26cc8eed80f6 +Block 0030 [ 13]: 8cdd8df5db037fe7 +Block 0030 [ 14]: 0ac112d54d43168e +Block 0030 [ 15]: 74e4494bcc9636a3 +Block 0030 [ 16]: 0edf89b34fad5868 +Block 0030 [ 17]: b1e24de77dccf693 +Block 0030 [ 18]: d92f485e04babc84 +Block 0030 [ 19]: 8c91873ed76e45d7 +Block 0030 [ 20]: fa777c8e222f5d7b +Block 0030 [ 21]: fdac371cbe360dbb +Block 0030 [ 22]: db06c1b81b37310d +Block 0030 [ 23]: 839d563b33c36c0c +Block 0030 [ 24]: c6b15e0f746c4c94 +Block 0030 [ 25]: 2891ba5e8b3fdf6f +Block 0030 [ 26]: 838e406c57fd4d90 +Block 0030 [ 27]: 8247d5267df0762e +Block 0030 [ 28]: 7cc4c5a7cf99d0ea +Block 0030 [ 29]: 1bc549cdfdb8f404 +Block 0030 [ 30]: a749161c3abfbd15 +Block 0030 [ 31]: 634640ab3dba42e9 +Block 0030 [ 32]: 4f66bff1a5599b37 +Block 0030 [ 33]: 77fca844c066144b +Block 0030 [ 34]: 73174973c64ba79a +Block 0030 [ 35]: 47ce5a1c3de46611 +Block 0030 [ 36]: 0b2417e4adbb9c4a +Block 0030 [ 37]: 56f91835257a8ab2 +Block 0030 [ 38]: a947a800c9ae0adc +Block 0030 [ 39]: dfba4ce0ca8a9022 +Block 0030 [ 40]: 7fd0c982518c8bc3 +Block 0030 [ 41]: 0e38079a66f607c9 +Block 0030 [ 42]: bb13ce39ce7c838d +Block 0030 [ 43]: 301a331b613c173f +Block 0030 [ 44]: 6de35dd0db47a4a4 +Block 0030 [ 45]: f4061faea81daff5 +Block 0030 [ 46]: fa1b99d63c7b81d0 +Block 0030 [ 47]: ebbc817d664c3b5d +Block 0030 [ 48]: ed08b9868c781530 +Block 0030 [ 49]: 7ebc4ab09b5f9f8c +Block 0030 [ 50]: 428f35ba0da0fb8d +Block 0030 [ 51]: 3cc4dd39deb4b916 +Block 0030 [ 52]: ef85cca2918123aa +Block 0030 [ 53]: e9b923891414adb5 +Block 0030 [ 54]: 990078e6307bf03d +Block 0030 [ 55]: 46293fa01ab6eba6 +Block 0030 [ 56]: 88c1973464f2a740 +Block 0030 [ 57]: 29f30f34cbdb32f9 +Block 0030 [ 58]: 6e0c364377a98b5a +Block 0030 [ 59]: 4a608ade6a63b04b +Block 0030 [ 60]: c4d07ec581c6e110 +Block 0030 [ 61]: c6e38c532d112754 +Block 0030 [ 62]: c7404f3f4c5ca81d +Block 0030 [ 63]: b2399b4108208e93 +Block 0030 [ 64]: 6cf803e9c511a589 +Block 0030 [ 65]: 21bede8cc081d6cb +Block 0030 [ 66]: 0f31881b96348c43 +Block 0030 [ 67]: 208a6a3f6b5a6aea +Block 0030 [ 68]: d96f9a9b3d38498a +Block 0030 [ 69]: fe12c848b152f88b +Block 0030 [ 70]: ba37377989634bbe +Block 0030 [ 71]: f87f306d4e55fc58 +Block 0030 [ 72]: 6e3af73d61e5acb6 +Block 0030 [ 73]: 01ebb62867ae7346 +Block 0030 [ 74]: 34f9f3f14540d8a0 +Block 0030 [ 75]: a0530a04a4fed871 +Block 0030 [ 76]: 8aab51aa2699c2d7 +Block 0030 [ 77]: 8cc1c112302e9c0a +Block 0030 [ 78]: 66d2c4c1b0f369ca +Block 0030 [ 79]: 5881e8885f7618aa +Block 0030 [ 80]: ece8ee07d5a526c8 +Block 0030 [ 81]: 5b8be9aec2f46490 +Block 0030 [ 82]: aacfa3b578ffc40b +Block 0030 [ 83]: 90b2be8bbc0b5982 +Block 0030 [ 84]: e7baaa8858cc81ff +Block 0030 [ 85]: f7995581dc6bcb96 +Block 0030 [ 86]: 624c813678edc943 +Block 0030 [ 87]: 2275455d12b12b0b +Block 0030 [ 88]: eb45b6b9fe5718a9 +Block 0030 [ 89]: 0df81b2d8f23c101 +Block 0030 [ 90]: a6cf10ca19e15f80 +Block 0030 [ 91]: 405a403a54f6ea58 +Block 0030 [ 92]: e07f299250a4083b +Block 0030 [ 93]: a3b82fe32687fced +Block 0030 [ 94]: bfd23f20d69d4dc6 +Block 0030 [ 95]: 2a476b8e3de7b369 +Block 0030 [ 96]: 20826b265857d295 +Block 0030 [ 97]: 1c347a083c6d2644 +Block 0030 [ 98]: fe1e1d3de266875c +Block 0030 [ 99]: 3332fe21e25d8b24 +Block 0030 [100]: 809711549430ae58 +Block 0030 [101]: d384c8613f965dd7 +Block 0030 [102]: 7a3ece3e88c6e242 +Block 0030 [103]: ca520dd2aaff2c07 +Block 0030 [104]: 5ed1157c64803562 +Block 0030 [105]: ab10c5653f8a0834 +Block 0030 [106]: e673d52089c309c3 +Block 0030 [107]: f8337353fe6934f6 +Block 0030 [108]: 294de71aba166af5 +Block 0030 [109]: feec046f98dbb7f7 +Block 0030 [110]: d217e0685afd51f5 +Block 0030 [111]: 675996cc4f1738e3 +Block 0030 [112]: f19f120722f24321 +Block 0030 [113]: d64b4a71899b2cc0 +Block 0030 [114]: b7e02717d1dad185 +Block 0030 [115]: 9aec98d8ecfaf56a +Block 0030 [116]: d1b145c263d02309 +Block 0030 [117]: bc5338fbc3d7782d +Block 0030 [118]: 335b5ad99aeb80df +Block 0030 [119]: a68c507da4296764 +Block 0030 [120]: b68e6e3cb8332116 +Block 0030 [121]: aabcdc1e36e7aab6 +Block 0030 [122]: 7059fdcb44c4449e +Block 0030 [123]: d0a07c2ae3431bae +Block 0030 [124]: ad3824b96e5d8871 +Block 0030 [125]: 4a08dc8d052e9081 +Block 0030 [126]: 27bef794993fe81b +Block 0030 [127]: 5bba260ee5d913ce +Block 0031 [ 0]: 8056a89f8ad77396 +Block 0031 [ 1]: 0acbf994ee770d14 +Block 0031 [ 2]: d72a158734769c8a +Block 0031 [ 3]: 96616da2ec8ed518 +Block 0031 [ 4]: d26d683efb269aba +Block 0031 [ 5]: 9e77187292137456 +Block 0031 [ 6]: d3c5abc61cfba5f0 +Block 0031 [ 7]: da2c4be29800e8d4 +Block 0031 [ 8]: 1424a710054dbaff +Block 0031 [ 9]: e5960c0dd23f2e1a +Block 0031 [ 10]: 2cadcb97d3fe1953 +Block 0031 [ 11]: 0ccd24845599050a +Block 0031 [ 12]: 7320274c7126640a +Block 0031 [ 13]: 7cd8472ac2aaaddd +Block 0031 [ 14]: e5bacffb3c811f52 +Block 0031 [ 15]: 10fbda16e9eeb4ce +Block 0031 [ 16]: 1500a7ea6b4a94d2 +Block 0031 [ 17]: a1ba7e4b8aa528e9 +Block 0031 [ 18]: db1a5f54d44181fc +Block 0031 [ 19]: 1fd19ef893ef2e0a +Block 0031 [ 20]: 62040393e33ade1d +Block 0031 [ 21]: 31e3ec9bf63dfcb9 +Block 0031 [ 22]: c1992e801e8345c8 +Block 0031 [ 23]: 950b6603fce64375 +Block 0031 [ 24]: a658a546d46a6dd5 +Block 0031 [ 25]: 99ba119e73bf2451 +Block 0031 [ 26]: ca77d7ef039f066c +Block 0031 [ 27]: 0f87eecf64bde053 +Block 0031 [ 28]: cdb9d6e10e55a108 +Block 0031 [ 29]: d21eedb708db5c2f +Block 0031 [ 30]: 20d14163de3ea6e6 +Block 0031 [ 31]: 993f46dd66cf0e88 +Block 0031 [ 32]: c3546c4fccc13367 +Block 0031 [ 33]: 0484e711add96774 +Block 0031 [ 34]: a1a1debc1c40712b +Block 0031 [ 35]: 096825b113b5d71c +Block 0031 [ 36]: c95554f8f54b1b48 +Block 0031 [ 37]: 26a1af38ace06794 +Block 0031 [ 38]: 66df71657d902bf6 +Block 0031 [ 39]: bbd767041fc32fac +Block 0031 [ 40]: 3ece0676c3ae967e +Block 0031 [ 41]: 6d1bf9cfbe754e01 +Block 0031 [ 42]: 72203d494509b05e +Block 0031 [ 43]: af6cd4272b298bcc +Block 0031 [ 44]: 40317a0ca1d316bb +Block 0031 [ 45]: fec590ce7045da13 +Block 0031 [ 46]: ce9ea146364d5e3f +Block 0031 [ 47]: 3c2cce0a903c1b26 +Block 0031 [ 48]: 6f3dbc07470ccc2f +Block 0031 [ 49]: 6351893a222bd8cf +Block 0031 [ 50]: 0cd4d72b32b918e8 +Block 0031 [ 51]: 29cd14a678355e28 +Block 0031 [ 52]: a10bef462977255b +Block 0031 [ 53]: 6ebfb703429b51e8 +Block 0031 [ 54]: 9943623f765c7658 +Block 0031 [ 55]: 90638f6e666bead3 +Block 0031 [ 56]: da55186b2cb868bf +Block 0031 [ 57]: c0a953f05ca97440 +Block 0031 [ 58]: 991e5450713fa2d0 +Block 0031 [ 59]: 9f1117bc7a25c8ab +Block 0031 [ 60]: b1cab74a81011a00 +Block 0031 [ 61]: 24717ae307ffa148 +Block 0031 [ 62]: 49778268b7e5b98c +Block 0031 [ 63]: 1082ca8e9d07a245 +Block 0031 [ 64]: 4cecb2326330d454 +Block 0031 [ 65]: e116f69e48d7663d +Block 0031 [ 66]: dd6fc7fb20eeed81 +Block 0031 [ 67]: 467086efaa6c70a5 +Block 0031 [ 68]: 06374063912b5d23 +Block 0031 [ 69]: d15fbd1c5b678f13 +Block 0031 [ 70]: f8c29343528d1ec7 +Block 0031 [ 71]: 76089db7b8607221 +Block 0031 [ 72]: 711c36ee0a3bfc0d +Block 0031 [ 73]: 2c04c97ec81d3aeb +Block 0031 [ 74]: 47d14e368861ca0c +Block 0031 [ 75]: 8b77572fe7c02210 +Block 0031 [ 76]: 3a93283ad7ec4394 +Block 0031 [ 77]: bf65a5f5dcdf5a7c +Block 0031 [ 78]: 02e56c288b5e017a +Block 0031 [ 79]: 7a130bec028a12a2 +Block 0031 [ 80]: 4373299ae5c00617 +Block 0031 [ 81]: fe15f92f01ae432e +Block 0031 [ 82]: c385eacaba89938d +Block 0031 [ 83]: b3dc4616fd72c200 +Block 0031 [ 84]: e453bb3534da09bf +Block 0031 [ 85]: b00fec3805b83138 +Block 0031 [ 86]: 95c96ef7d22e4ad9 +Block 0031 [ 87]: 93f8f5bbc6a8c31f +Block 0031 [ 88]: 06bfe5c4d32f03bc +Block 0031 [ 89]: f3e2d02a807ed7f2 +Block 0031 [ 90]: 883c84bfb046e7fd +Block 0031 [ 91]: b9f1c7ad0a7b4b9b +Block 0031 [ 92]: 77ccbca2abcc81fb +Block 0031 [ 93]: 3bb00a769cf2ebcc +Block 0031 [ 94]: 8f178ea513f83875 +Block 0031 [ 95]: 07e289f5760a5695 +Block 0031 [ 96]: 7d447ccb68d68fec +Block 0031 [ 97]: b1d4e8e9888d051e +Block 0031 [ 98]: 447e71ca682102e9 +Block 0031 [ 99]: f590ffeb8bef018f +Block 0031 [100]: d54559d0ab3b6afc +Block 0031 [101]: caf7649dbe8fde6a +Block 0031 [102]: c39efa41c6fb669f +Block 0031 [103]: 5b796db29d271d39 +Block 0031 [104]: dabaecc9fa05b4ad +Block 0031 [105]: 3cc6c412e203762b +Block 0031 [106]: 999eaf1a774d5a56 +Block 0031 [107]: 66ccd06d248b67c4 +Block 0031 [108]: 940273840c36b61e +Block 0031 [109]: 60845cfb3553ce08 +Block 0031 [110]: 499847123467e401 +Block 0031 [111]: c3e46f4ac502aba6 +Block 0031 [112]: 1a416510f69fc5b4 +Block 0031 [113]: 4a4786d118b23383 +Block 0031 [114]: ad4d126ee991f3ad +Block 0031 [115]: 59281ed002081934 +Block 0031 [116]: 1ccae3345cb54ae8 +Block 0031 [117]: 773e9b04ce3a1f7e +Block 0031 [118]: 3259c02c69346830 +Block 0031 [119]: 03d2e98b455ee4e9 +Block 0031 [120]: 0ab0c6a934464e66 +Block 0031 [121]: 7963df0df1398154 +Block 0031 [122]: af67b262a61c36b5 +Block 0031 [123]: 32bca7aa219f2e78 +Block 0031 [124]: 28d17914aea9734c +Block 0031 [125]: 6a4622176522e398 +Block 0031 [126]: 951aa08aeecb2c05 +Block 0031 [127]: 6a6c49d2cb75d5b6 + + After pass 1: +Block 0000 [ 0]: d3801200410f8c0d +Block 0000 [ 1]: 0bf9e8a6e442ba6d +Block 0000 [ 2]: e2ca92fe9c541fcc +Block 0000 [ 3]: 6269fe6db177a388 +Block 0000 [ 4]: 54697b2f25faeed4 +Block 0000 [ 5]: ca4dcbdcd4eefcae +Block 0000 [ 6]: 869f43f14f6ae784 +Block 0000 [ 7]: 6b157abf5710f387 +Block 0000 [ 8]: dccc9f665cc70060 +Block 0000 [ 9]: 0c5edcc99fa61403 +Block 0000 [ 10]: f29303c301980249 +Block 0000 [ 11]: 5988c1bbd30d834c +Block 0000 [ 12]: 39e364b591bdfe22 +Block 0000 [ 13]: 416a7a66289539fe +Block 0000 [ 14]: aeac3509f8c8e956 +Block 0000 [ 15]: bbc521663bf6a8e2 +Block 0000 [ 16]: bef194b164ce3e99 +Block 0000 [ 17]: fd49e154856ac494 +Block 0000 [ 18]: 4ce1a25b28624fde +Block 0000 [ 19]: 0ceb5695cf3204b4 +Block 0000 [ 20]: 5401064c72926583 +Block 0000 [ 21]: c1ae83b9ffa27e61 +Block 0000 [ 22]: 16eaaa854054e945 +Block 0000 [ 23]: c17a5724ee8d1bb1 +Block 0000 [ 24]: 4bf3658090d191f3 +Block 0000 [ 25]: b4d5b6e3db79c5e0 +Block 0000 [ 26]: d4e0b7e7a3688394 +Block 0000 [ 27]: 4bd8b5a50ccef493 +Block 0000 [ 28]: 4142a58a18979b33 +Block 0000 [ 29]: c14bb56255a035e6 +Block 0000 [ 30]: ce21b973b1c42d32 +Block 0000 [ 31]: e5882618965206a1 +Block 0000 [ 32]: 289232b90dfc00a7 +Block 0000 [ 33]: f6eb11683430d228 +Block 0000 [ 34]: e31a02277106ef3e +Block 0000 [ 35]: d80de6836272b387 +Block 0000 [ 36]: 5c09d4e606638b96 +Block 0000 [ 37]: 58895feb876e41ab +Block 0000 [ 38]: 5cf9d44568297c87 +Block 0000 [ 39]: eed0050361734627 +Block 0000 [ 40]: 4ea00fe53450879a +Block 0000 [ 41]: b3064d067f9f262e +Block 0000 [ 42]: ca87f9054518759f +Block 0000 [ 43]: b2608daa5232463a +Block 0000 [ 44]: ca741245ec6e2b97 +Block 0000 [ 45]: a9f1625a9355e35f +Block 0000 [ 46]: 77f2764d0f0dc02b +Block 0000 [ 47]: 9a5e8e24f351f5a8 +Block 0000 [ 48]: 016be699c579a7be +Block 0000 [ 49]: 93398aca060014c5 +Block 0000 [ 50]: 0d47df3cafd4d82e +Block 0000 [ 51]: 395a20bf86d0abed +Block 0000 [ 52]: 75b7482c7b8e5671 +Block 0000 [ 53]: 1ff48f393668b7a4 +Block 0000 [ 54]: d49085c4afe25a0e +Block 0000 [ 55]: 136fde4497f52b21 +Block 0000 [ 56]: 3b370889aa35ed71 +Block 0000 [ 57]: cc8c190f1c472520 +Block 0000 [ 58]: 3693124a7e8386d9 +Block 0000 [ 59]: 297d10d970645437 +Block 0000 [ 60]: 993a29d9e20d578a +Block 0000 [ 61]: be2a4c09ff56ddf9 +Block 0000 [ 62]: 5d419a2b8f618cf0 +Block 0000 [ 63]: e040f440ec86b82d +Block 0000 [ 64]: 07774dfca51e71ad +Block 0000 [ 65]: 4976a68a18d53aef +Block 0000 [ 66]: ab97b1a63c81a71d +Block 0000 [ 67]: bd73fa31f2bb5ebd +Block 0000 [ 68]: a52da172b97961d0 +Block 0000 [ 69]: 3d2ced1687fca2ac +Block 0000 [ 70]: c79a95caa247ebe5 +Block 0000 [ 71]: 65300100024c12d3 +Block 0000 [ 72]: 20f12fa6508f8063 +Block 0000 [ 73]: 267c109454fbc217 +Block 0000 [ 74]: fe9568ba884d417b +Block 0000 [ 75]: bfde126a9ba3a56a +Block 0000 [ 76]: 601281f62f846c59 +Block 0000 [ 77]: 2bac2b0e29765653 +Block 0000 [ 78]: 9e7b7041901f6621 +Block 0000 [ 79]: d9163f3a5a6d65d8 +Block 0000 [ 80]: a3ffed8a7445715c +Block 0000 [ 81]: e06888305780966c +Block 0000 [ 82]: 7f500d7bdf4912e3 +Block 0000 [ 83]: 00004ac96e78ef85 +Block 0000 [ 84]: ff02aabd39208163 +Block 0000 [ 85]: da2ddc922d9c7de3 +Block 0000 [ 86]: 6dc4aa44c0f6444f +Block 0000 [ 87]: 53c918eceabb95b2 +Block 0000 [ 88]: 2d86fbf1d0d4f513 +Block 0000 [ 89]: 755a0e402d9f2ef3 +Block 0000 [ 90]: 266280dc98e6bee1 +Block 0000 [ 91]: 82efb4e4b9ef9703 +Block 0000 [ 92]: d0fa8b78e7c3511d +Block 0000 [ 93]: a93cad157a39bd8e +Block 0000 [ 94]: a0f66af8bffe6691 +Block 0000 [ 95]: 87b9cfcdac11cacd +Block 0000 [ 96]: 7c62fe7cb7ab47cf +Block 0000 [ 97]: 7081003ec1e06f77 +Block 0000 [ 98]: 64154c14edc0996f +Block 0000 [ 99]: 58bfa58059732347 +Block 0000 [100]: 42dd823b7b3d9d3e +Block 0000 [101]: 57fd57d0ce388b8b +Block 0000 [102]: 7d562a38ef9e3fbb +Block 0000 [103]: f99001a3ad511bd3 +Block 0000 [104]: 5b61a9ac870c859b +Block 0000 [105]: 8f099adec5730a51 +Block 0000 [106]: d80dbca4c6846746 +Block 0000 [107]: 00678617d7cee9a1 +Block 0000 [108]: 207fe5ad05cc1e50 +Block 0000 [109]: 3adee7a9a8c821cb +Block 0000 [110]: 01f1e835d06f9c01 +Block 0000 [111]: 237cdc3267368609 +Block 0000 [112]: 6f872d1adc8473a3 +Block 0000 [113]: c8ea6cae26f32a04 +Block 0000 [114]: f641027f4ff79c7f +Block 0000 [115]: 0acba686f655d7d3 +Block 0000 [116]: d2d3613a0eb5a76c +Block 0000 [117]: 44b37e72dca1ef1c +Block 0000 [118]: f026dca86e752f36 +Block 0000 [119]: b1c2cddd938aed8a +Block 0000 [120]: b8abac934f3180aa +Block 0000 [121]: cd8d3861ca00c527 +Block 0000 [122]: 4efb238110b5fb03 +Block 0000 [123]: b99922a3d81cb223 +Block 0000 [124]: fada8c89e3243fd3 +Block 0000 [125]: 13d87d5f1a2654bf +Block 0000 [126]: aac80c5e2476391a +Block 0000 [127]: e52f1c839b7e7263 +Block 0001 [ 0]: 1945bd92227552e0 +Block 0001 [ 1]: 3fe9fff6337fd477 +Block 0001 [ 2]: a731a2d7c491e874 +Block 0001 [ 3]: 3f9009bc4b0a32d8 +Block 0001 [ 4]: 1d5401dab8c8d9c0 +Block 0001 [ 5]: 430468ea6cf08e6f +Block 0001 [ 6]: 0616282f31428559 +Block 0001 [ 7]: d288d4efb6ad143b +Block 0001 [ 8]: a6b4019d2075bdff +Block 0001 [ 9]: f9ebc4b5f9ce2914 +Block 0001 [ 10]: 5341c6e85c21fca3 +Block 0001 [ 11]: c8ed550770e49a23 +Block 0001 [ 12]: 4627d43a4ac34db1 +Block 0001 [ 13]: 566a676e9510f48b +Block 0001 [ 14]: 78122727319284ab +Block 0001 [ 15]: a978f1042a8863c7 +Block 0001 [ 16]: c83efaf192023550 +Block 0001 [ 17]: 0d28a82f3db7bc03 +Block 0001 [ 18]: 1f8f3377c446ecda +Block 0001 [ 19]: 54d175c08b8d9eda +Block 0001 [ 20]: e0767ab01740a973 +Block 0001 [ 21]: e80f906cfbd20ee5 +Block 0001 [ 22]: faee549cd23e1c39 +Block 0001 [ 23]: 7779da9131534517 +Block 0001 [ 24]: d264688eb5eb4330 +Block 0001 [ 25]: a8afe053886f0bfc +Block 0001 [ 26]: a50b8e2503af3118 +Block 0001 [ 27]: d2d69c9234ecb4f0 +Block 0001 [ 28]: 14be320d2ae7813e +Block 0001 [ 29]: e2fb5f4eeb9dd171 +Block 0001 [ 30]: f8f5deccc87825eb +Block 0001 [ 31]: 582e0e0d97aefade +Block 0001 [ 32]: bd3cfbc46403045e +Block 0001 [ 33]: 0c67956254623ad2 +Block 0001 [ 34]: 5f90bde837bdeaab +Block 0001 [ 35]: d70cda7b6fe733b0 +Block 0001 [ 36]: 56eca4b0ace51877 +Block 0001 [ 37]: d92b6b6f3023fa7c +Block 0001 [ 38]: c21b2b9b865910a6 +Block 0001 [ 39]: 9863c770c0c38e0e +Block 0001 [ 40]: 656751169a661bbd +Block 0001 [ 41]: 97bf4f460e616ee0 +Block 0001 [ 42]: 2f98d464de04bb49 +Block 0001 [ 43]: c13647628f0acb3b +Block 0001 [ 44]: 92a96fa4ca62be7c +Block 0001 [ 45]: 92e69ce54fb41d93 +Block 0001 [ 46]: 06158c62c277c079 +Block 0001 [ 47]: 090f39247ffd50b7 +Block 0001 [ 48]: a0e56ea21f34f0a8 +Block 0001 [ 49]: ed1ef87602a07da6 +Block 0001 [ 50]: 497c9c19f2e34039 +Block 0001 [ 51]: 92f5cdb6e0ffc12b +Block 0001 [ 52]: 22b5b9756f3eef75 +Block 0001 [ 53]: f25efed27d000764 +Block 0001 [ 54]: bf9fb608b6e8e627 +Block 0001 [ 55]: 6cbf05cce0bdaf97 +Block 0001 [ 56]: 123c2a4d0b848602 +Block 0001 [ 57]: 52f9e2d84442b089 +Block 0001 [ 58]: e976ff506e1a80f9 +Block 0001 [ 59]: 8bf09d1b927c2d76 +Block 0001 [ 60]: b87219fd5c8ee8a0 +Block 0001 [ 61]: 713bd1d4eb7d8973 +Block 0001 [ 62]: 8492d5a39e7259ff +Block 0001 [ 63]: 5f5edf1d3c733f98 +Block 0001 [ 64]: 0246a25b84769963 +Block 0001 [ 65]: 286741bf3049d3c8 +Block 0001 [ 66]: 1636132789273cd3 +Block 0001 [ 67]: 9c613f569067aa59 +Block 0001 [ 68]: f5898e3a316a42f6 +Block 0001 [ 69]: 5b4c8006a01b9c06 +Block 0001 [ 70]: 66552db224c38815 +Block 0001 [ 71]: cf9749c91c42aa45 +Block 0001 [ 72]: ce7c98b8f4af9ffc +Block 0001 [ 73]: 68cf6a2b40f09c3b +Block 0001 [ 74]: 0905f46812a05b3f +Block 0001 [ 75]: 015cbead12bc8397 +Block 0001 [ 76]: 6d418c8d90ab5614 +Block 0001 [ 77]: d0b15b9a1ac9d73a +Block 0001 [ 78]: 887a93b384c035c7 +Block 0001 [ 79]: a29bcd852552c96d +Block 0001 [ 80]: 1d05609538a8b284 +Block 0001 [ 81]: 87662540dde6a878 +Block 0001 [ 82]: 6b1ae84769074ea0 +Block 0001 [ 83]: 6fbb58e7443b5f6f +Block 0001 [ 84]: 40fa72222a87e13a +Block 0001 [ 85]: b1e8a120d2800327 +Block 0001 [ 86]: a5476fd807667282 +Block 0001 [ 87]: ba68e2e45c8c0419 +Block 0001 [ 88]: 2e805d7dd9f3e7cd +Block 0001 [ 89]: 6c84b78c64307ecc +Block 0001 [ 90]: 2eaf6655fbf22f5d +Block 0001 [ 91]: 66602192bb412f8a +Block 0001 [ 92]: e34baf74015205ca +Block 0001 [ 93]: 39202b9ffa5c994f +Block 0001 [ 94]: 6d16e568327a9c2f +Block 0001 [ 95]: 085fae46b4269f70 +Block 0001 [ 96]: 999ad58b0a117bc4 +Block 0001 [ 97]: ce15de3d2e5826b8 +Block 0001 [ 98]: c03c2d06ffb5b99f +Block 0001 [ 99]: 84c6ba4f13458353 +Block 0001 [100]: beb6c09a3a5194cc +Block 0001 [101]: 34394fa0ff1091ab +Block 0001 [102]: fa11be98a4e8ee53 +Block 0001 [103]: b62f437abb79b7fe +Block 0001 [104]: 561bff03009cddfd +Block 0001 [105]: 171359698cc75e4a +Block 0001 [106]: 4c24145a2adc9229 +Block 0001 [107]: 8992e622258ef17e +Block 0001 [108]: 3a909d2299d4593e +Block 0001 [109]: c9965a227170be63 +Block 0001 [110]: 17741a4490c4af3c +Block 0001 [111]: 170c431f5463ee9f +Block 0001 [112]: 0df53bf18ea7ce09 +Block 0001 [113]: 4ccd25b38f8839e6 +Block 0001 [114]: b9c84384dadc8dd2 +Block 0001 [115]: e446ab27c623ecba +Block 0001 [116]: c4698296ed168df1 +Block 0001 [117]: ce98040ace2e51f3 +Block 0001 [118]: 2a305189d1de6c40 +Block 0001 [119]: 604bda6551a184dd +Block 0001 [120]: ce73633f7037c144 +Block 0001 [121]: 9e26b774ac1bdeff +Block 0001 [122]: e402d8dc15d6e1f7 +Block 0001 [123]: 72aaab45896934bc +Block 0001 [124]: f3ce458f876b08a7 +Block 0001 [125]: e4cbd63c9cb6522f +Block 0001 [126]: 0b499bbe86150fd8 +Block 0001 [127]: d13c062f33d4c833 +Block 0002 [ 0]: ba91b55bbcc9c44b +Block 0002 [ 1]: ef4e99f999dae035 +Block 0002 [ 2]: d8aa1c505b46ab7d +Block 0002 [ 3]: 161365f459855e5b +Block 0002 [ 4]: b59ce6a7276c0313 +Block 0002 [ 5]: b6bbfbe6c3a4ccd9 +Block 0002 [ 6]: 592972bf9bf98c94 +Block 0002 [ 7]: 5da354b04f15f821 +Block 0002 [ 8]: fa1006fa6a96df9b +Block 0002 [ 9]: 6263146aa513f00d +Block 0002 [ 10]: 0d811087fb7afb0e +Block 0002 [ 11]: 7e6e21016a92a8c2 +Block 0002 [ 12]: 45f09b0f30befd10 +Block 0002 [ 13]: 87a59e630c107ff3 +Block 0002 [ 14]: b723de6f0f63977b +Block 0002 [ 15]: 338d3e44d5e16d0b +Block 0002 [ 16]: 5ef7898fa708e2c4 +Block 0002 [ 17]: a6cbc1bab7a2544f +Block 0002 [ 18]: 8a036c0f36e22fe8 +Block 0002 [ 19]: 7cd77b1a3ad76405 +Block 0002 [ 20]: 07cf084d96f9e8ce +Block 0002 [ 21]: 19eecfa89fd77725 +Block 0002 [ 22]: b0c19b5d40941581 +Block 0002 [ 23]: 827182feebd76922 +Block 0002 [ 24]: 40ee3d84069c3a31 +Block 0002 [ 25]: c0489f64169a76ec +Block 0002 [ 26]: 53c889b64969b287 +Block 0002 [ 27]: adfbbb1914ca4759 +Block 0002 [ 28]: 2ba3aea68b7e970a +Block 0002 [ 29]: ca9d0cb6c1d00d60 +Block 0002 [ 30]: 72a72acc38c1fc7d +Block 0002 [ 31]: f8f027e04b16ade3 +Block 0002 [ 32]: ca75618529c9562b +Block 0002 [ 33]: fb8aff1638783021 +Block 0002 [ 34]: c6d05939d2f83537 +Block 0002 [ 35]: e0e251f3454d020f +Block 0002 [ 36]: c79a6f14d3dd3974 +Block 0002 [ 37]: 6493ede738fab09b +Block 0002 [ 38]: 210487350fa557c0 +Block 0002 [ 39]: d2dcede8fcd00251 +Block 0002 [ 40]: b88578fb1e583c32 +Block 0002 [ 41]: 460f7c6f933a805b +Block 0002 [ 42]: b48a1953360954f3 +Block 0002 [ 43]: c0f9d6d5f451df28 +Block 0002 [ 44]: d89207b92d8f9ba7 +Block 0002 [ 45]: e69a38a67a54f5c8 +Block 0002 [ 46]: 11f75a0109d257db +Block 0002 [ 47]: 19bd04eacdcfaafe +Block 0002 [ 48]: 8d4d532b061fceb1 +Block 0002 [ 49]: a0a79bc1d110c780 +Block 0002 [ 50]: a8e94cac065b310f +Block 0002 [ 51]: 97e43b3770c87ad3 +Block 0002 [ 52]: d0a77f2b7bc888eb +Block 0002 [ 53]: fdf7376f17f6b5e2 +Block 0002 [ 54]: 11f502100246cef9 +Block 0002 [ 55]: ad1a13d0aa5acd01 +Block 0002 [ 56]: d68613c11793b88f +Block 0002 [ 57]: 2ac95bcd120c8c32 +Block 0002 [ 58]: 935adb1cc9b686ab +Block 0002 [ 59]: 2d79c88d33ca29dc +Block 0002 [ 60]: 726453fd936c6ef4 +Block 0002 [ 61]: 990570ccb4919d9e +Block 0002 [ 62]: 69d0b6440d8e3183 +Block 0002 [ 63]: 6712b294bba95869 +Block 0002 [ 64]: 1eb00d8d33b41a7f +Block 0002 [ 65]: 2ee451e9ff0e71b3 +Block 0002 [ 66]: f9ffd27bee51d5b2 +Block 0002 [ 67]: 4d15fc6e5f3e5dae +Block 0002 [ 68]: a6899eff879f2a74 +Block 0002 [ 69]: 0806eb87bbee41a4 +Block 0002 [ 70]: 1c9f8648ec062246 +Block 0002 [ 71]: 56c2b32194d047b3 +Block 0002 [ 72]: 1f1a5896372ccbb6 +Block 0002 [ 73]: 1435a02c33ad89df +Block 0002 [ 74]: 9f938145231a369a +Block 0002 [ 75]: 3d72686ac66459b2 +Block 0002 [ 76]: 2e0222a2f9916308 +Block 0002 [ 77]: 9ed37e9132a8b19a +Block 0002 [ 78]: c24917158db12ce7 +Block 0002 [ 79]: 103588d94fc7757d +Block 0002 [ 80]: 2caf0fe9acf3ec0b +Block 0002 [ 81]: b61c96f3a96426d8 +Block 0002 [ 82]: 05de68a8c3ee42f1 +Block 0002 [ 83]: ec1f82f8af1d903b +Block 0002 [ 84]: 253fadbd87952312 +Block 0002 [ 85]: 1de5945b574001f0 +Block 0002 [ 86]: 03872fb2d6941330 +Block 0002 [ 87]: 32358ba499959926 +Block 0002 [ 88]: 9b28ce180b92a1a7 +Block 0002 [ 89]: a229f2616047a544 +Block 0002 [ 90]: 3c874b9946795967 +Block 0002 [ 91]: b8a26bd8e577f4a9 +Block 0002 [ 92]: e798d879adf569c8 +Block 0002 [ 93]: 6e23b3170dc7a258 +Block 0002 [ 94]: a0076913112ec88f +Block 0002 [ 95]: dda7a83d40ef7d5c +Block 0002 [ 96]: 1611deda81abcac5 +Block 0002 [ 97]: 074ccadbeea42d4a +Block 0002 [ 98]: 6ea2c5707adb8f45 +Block 0002 [ 99]: 80da00c20d4bb11e +Block 0002 [100]: dc96adbec42f44a7 +Block 0002 [101]: 5da32b2f6f13baa0 +Block 0002 [102]: ca8e52f587863a8b +Block 0002 [103]: 865a1d8964d6a636 +Block 0002 [104]: 729c4b71bc3f9ba4 +Block 0002 [105]: 38f394888711ad72 +Block 0002 [106]: 0e091de912e1a945 +Block 0002 [107]: 75ca35d28beaf076 +Block 0002 [108]: 798bdabc47914a36 +Block 0002 [109]: 1cb78eae0084f6e5 +Block 0002 [110]: 869c5d43fac72e43 +Block 0002 [111]: 7124df3e72e5055c +Block 0002 [112]: d9d6dee51ac44d5b +Block 0002 [113]: ef1f60c3aef1eb52 +Block 0002 [114]: deb93e3180de04f2 +Block 0002 [115]: e6f805543d0bce6e +Block 0002 [116]: 894cba70645c746f +Block 0002 [117]: 2fa8dfad858cfb19 +Block 0002 [118]: 43f65744789bd8fa +Block 0002 [119]: c43f4efa7614c598 +Block 0002 [120]: 2aa22dd068fe3e8c +Block 0002 [121]: 9c18388f5b00cbae +Block 0002 [122]: a9105c8405b24c5e +Block 0002 [123]: bae5b6ce43c5a9df +Block 0002 [124]: 0819dc402397abb4 +Block 0002 [125]: ead7908e2e7b1ead +Block 0002 [126]: 7c49e028000bef0a +Block 0002 [127]: 22cd0e710d3607f1 +Block 0003 [ 0]: dcc0ded548f10ae1 +Block 0003 [ 1]: 1d2e18366b7da0ca +Block 0003 [ 2]: e2de5a320056a6c4 +Block 0003 [ 3]: f9462a22af7c11e4 +Block 0003 [ 4]: af27d3d2b8650e71 +Block 0003 [ 5]: 532a58a92dd0f8f2 +Block 0003 [ 6]: b56b0087681d06fe +Block 0003 [ 7]: 78bbf2dd701c058e +Block 0003 [ 8]: 1dbddf25cec077ee +Block 0003 [ 9]: c812af1bdd8e26c6 +Block 0003 [ 10]: 177996cf3f1f819a +Block 0003 [ 11]: 6cd659e433485c29 +Block 0003 [ 12]: ac5ec15d9920127f +Block 0003 [ 13]: facf6ce5cb2d959f +Block 0003 [ 14]: cb487aaf1811e764 +Block 0003 [ 15]: 062071fcb5ffe047 +Block 0003 [ 16]: 71e3503a0e6df8a1 +Block 0003 [ 17]: 24775f27efc9ba78 +Block 0003 [ 18]: c6f1fb1f6b771d35 +Block 0003 [ 19]: 734fd5b47aaa319f +Block 0003 [ 20]: 2d8a40514d0f2027 +Block 0003 [ 21]: 6eb0e0c6562ecbf1 +Block 0003 [ 22]: beb6d3a66bdd7159 +Block 0003 [ 23]: 46d2e4eb9b3e5a34 +Block 0003 [ 24]: dc4c8bce2ca70df5 +Block 0003 [ 25]: 68d7472e72ce3eef +Block 0003 [ 26]: 18c267da346f3dc5 +Block 0003 [ 27]: a3fb91802385fc4d +Block 0003 [ 28]: 16e151f8930c0dc4 +Block 0003 [ 29]: 60585b77a71f4a7b +Block 0003 [ 30]: 620480b715921164 +Block 0003 [ 31]: 4609561ad34203f3 +Block 0003 [ 32]: d6970f63f27ed566 +Block 0003 [ 33]: 2516ff93960c7fe1 +Block 0003 [ 34]: e941af020fbf31c9 +Block 0003 [ 35]: f96d31e5bc2f9316 +Block 0003 [ 36]: 5585f2cbaf1b86af +Block 0003 [ 37]: f64a713997c5e5d0 +Block 0003 [ 38]: 7b32d6946b093c50 +Block 0003 [ 39]: 4b218a214ddc2548 +Block 0003 [ 40]: a679a8e777d60ef9 +Block 0003 [ 41]: dcec0857f3037b8a +Block 0003 [ 42]: 8ecde17ce4c21efb +Block 0003 [ 43]: ac79fed000ea2ced +Block 0003 [ 44]: f7663aeefdc36bed +Block 0003 [ 45]: 70c85d47ef60d769 +Block 0003 [ 46]: b73a6f9aa78acb29 +Block 0003 [ 47]: aaf447cfa5d92a7b +Block 0003 [ 48]: 7643418bfb8a731c +Block 0003 [ 49]: 4ebb46031677c4dc +Block 0003 [ 50]: 94d54d967c54291c +Block 0003 [ 51]: 76828c28b720d958 +Block 0003 [ 52]: c8b1025ca0206cda +Block 0003 [ 53]: 419c457ab3179aa9 +Block 0003 [ 54]: fdb0e83a8981ed63 +Block 0003 [ 55]: a48511be8c943210 +Block 0003 [ 56]: fa4a08568d0b2622 +Block 0003 [ 57]: 5ad1b56c9a8f97a4 +Block 0003 [ 58]: 16eb45c9c3c514c4 +Block 0003 [ 59]: 2735ab930271e048 +Block 0003 [ 60]: 00f8788ccc61d627 +Block 0003 [ 61]: a25d45d035893152 +Block 0003 [ 62]: 17f47f46131f888c +Block 0003 [ 63]: 9743f2b2ff11465f +Block 0003 [ 64]: 61f750aaf9c5026d +Block 0003 [ 65]: df0f25aaf5b74f1a +Block 0003 [ 66]: 0547223f8179b53a +Block 0003 [ 67]: a6a8dcabb1b433fb +Block 0003 [ 68]: 8a7e4041f55d8df2 +Block 0003 [ 69]: 76b1422ea39d47ef +Block 0003 [ 70]: 7c079885eddc7b66 +Block 0003 [ 71]: e3caf2a31d4946b6 +Block 0003 [ 72]: 09feca87c0fb72aa +Block 0003 [ 73]: e23465b2f7e56deb +Block 0003 [ 74]: ace65aeef77d812a +Block 0003 [ 75]: 8a8b2c97e8d229ba +Block 0003 [ 76]: f300a0a7f213a50c +Block 0003 [ 77]: 714bd30614b4bf2b +Block 0003 [ 78]: 38e78a67080d973c +Block 0003 [ 79]: c44ffe682b0b92e1 +Block 0003 [ 80]: 0a0dc7ad40a8cb31 +Block 0003 [ 81]: 328ad7a9c6aa3b94 +Block 0003 [ 82]: 722f8491e660bf19 +Block 0003 [ 83]: a947d1a8682da13f +Block 0003 [ 84]: 6625e609734bda42 +Block 0003 [ 85]: 374f7df0f39cac38 +Block 0003 [ 86]: 23118aea1aea8558 +Block 0003 [ 87]: 795944fa000fc32e +Block 0003 [ 88]: 5c0cc56ec4d36876 +Block 0003 [ 89]: b9a1a09c507a2f15 +Block 0003 [ 90]: a557c2b1be1df79f +Block 0003 [ 91]: b9b900f964885aee +Block 0003 [ 92]: 70d410b5dccc0cb6 +Block 0003 [ 93]: 2dfbdfb73da5cd7b +Block 0003 [ 94]: d64cb3edc647361e +Block 0003 [ 95]: e77cb0e072deb80b +Block 0003 [ 96]: 14b3f216a2e67b3d +Block 0003 [ 97]: 574fc539722db295 +Block 0003 [ 98]: 7a16f80eca5e7e11 +Block 0003 [ 99]: 76c8fea99b70aaa6 +Block 0003 [100]: fe0300268d802b45 +Block 0003 [101]: 86035e342b596a22 +Block 0003 [102]: eb5b48ad2d79cf70 +Block 0003 [103]: 424330100a9bc87c +Block 0003 [104]: d3ae2fa20e07bd7e +Block 0003 [105]: 357f0e5a5ebca41f +Block 0003 [106]: 4c86d4b417f49e3d +Block 0003 [107]: 86b060563b328b08 +Block 0003 [108]: 98e9754e35c1b4b6 +Block 0003 [109]: 8a4916af20b73399 +Block 0003 [110]: 63b6ca9dbe064f8b +Block 0003 [111]: 1ce064c5c3257af6 +Block 0003 [112]: c5ddc58ad0d6c4f3 +Block 0003 [113]: a06a361f0a442eef +Block 0003 [114]: 79256fae0347e4fe +Block 0003 [115]: 4fa9aef5835679ba +Block 0003 [116]: f0a58f6646413011 +Block 0003 [117]: 46b532af9df91ac9 +Block 0003 [118]: 1280b739029c7543 +Block 0003 [119]: 5d88e4ea2058889f +Block 0003 [120]: 3719c1706570dec9 +Block 0003 [121]: afa81e2d57d77489 +Block 0003 [122]: 18b3b64205efae40 +Block 0003 [123]: ee5fa7f06db1a8f7 +Block 0003 [124]: 83688896c9a489c7 +Block 0003 [125]: d9b1bbde14d95efe +Block 0003 [126]: f2259de115d64f0f +Block 0003 [127]: 710ec82f945eaadf +Block 0004 [ 0]: ea1fe2ab7a7036b2 +Block 0004 [ 1]: 85c6477a85f91236 +Block 0004 [ 2]: 05c5a08666d2931b +Block 0004 [ 3]: 41a7c68f43da7c7d +Block 0004 [ 4]: 0defb4961f1694da +Block 0004 [ 5]: d0304b7d3063a446 +Block 0004 [ 6]: 8c46ea68904e29d3 +Block 0004 [ 7]: d38da6c07cacb5ce +Block 0004 [ 8]: a603b0c600e9f236 +Block 0004 [ 9]: 5fc25b4c401b835c +Block 0004 [ 10]: 9bb577e3984fe6f9 +Block 0004 [ 11]: 021984c7e342b9e3 +Block 0004 [ 12]: cba1d5481629e4cf +Block 0004 [ 13]: 43fc94ea9a713a11 +Block 0004 [ 14]: e6af00ea4d897083 +Block 0004 [ 15]: b401ed470c0e1a4f +Block 0004 [ 16]: 231856f0c98b75b5 +Block 0004 [ 17]: 509380f041608001 +Block 0004 [ 18]: 7ddb7b55c3f7a32c +Block 0004 [ 19]: ab538267f69eb583 +Block 0004 [ 20]: fbc7aefaa0564964 +Block 0004 [ 21]: 7f158c8a60784aeb +Block 0004 [ 22]: 4648999ce4911e3c +Block 0004 [ 23]: 980beec1366efcba +Block 0004 [ 24]: 8759ff4a7082eae0 +Block 0004 [ 25]: 18a37bc4e3593613 +Block 0004 [ 26]: 9e0c3ab54634e89f +Block 0004 [ 27]: 0756ddc71ba6e41b +Block 0004 [ 28]: ce331883216a9055 +Block 0004 [ 29]: cbb90e3c5d30711c +Block 0004 [ 30]: 4a3391e02cb7e881 +Block 0004 [ 31]: 6b3a78414d4ab4df +Block 0004 [ 32]: 499ad48ed83fc044 +Block 0004 [ 33]: 72a9b10916d398c3 +Block 0004 [ 34]: ae72073814b44109 +Block 0004 [ 35]: bee50180bc61074a +Block 0004 [ 36]: 1690a81ebd7559d0 +Block 0004 [ 37]: 71085e55a036400a +Block 0004 [ 38]: 92fe8eec29736019 +Block 0004 [ 39]: cf735a813a92080a +Block 0004 [ 40]: 88252967ae06ad1b +Block 0004 [ 41]: 4150b41ba673b2e1 +Block 0004 [ 42]: 6889e1a8078d6d67 +Block 0004 [ 43]: dcebc07ddf63aba6 +Block 0004 [ 44]: e22b522bae7679fc +Block 0004 [ 45]: 52fc15ac981c648b +Block 0004 [ 46]: 4802cdc7906fe4cf +Block 0004 [ 47]: 19d42d9ff6b6d21a +Block 0004 [ 48]: 5ca85a0807f9dd5e +Block 0004 [ 49]: 8f48ad6e6ee76c50 +Block 0004 [ 50]: e2a894bc918e6f69 +Block 0004 [ 51]: d1fffa8c4c48fde2 +Block 0004 [ 52]: e627611dfdfb333f +Block 0004 [ 53]: c6c349ab4fdbc238 +Block 0004 [ 54]: 7da9f80b464ef8ea +Block 0004 [ 55]: 067d55581ee7e3c2 +Block 0004 [ 56]: fbe9b0ee4bf31aaf +Block 0004 [ 57]: a44b7b7efdd0e193 +Block 0004 [ 58]: 5e0db34b73b8ef2b +Block 0004 [ 59]: 88c8f30f1acc503e +Block 0004 [ 60]: e2cac47ce0fb4347 +Block 0004 [ 61]: a16f6d7841887932 +Block 0004 [ 62]: 219778816b0aa3f8 +Block 0004 [ 63]: a932db70e4feb4f4 +Block 0004 [ 64]: 075c7ef6126bc9a3 +Block 0004 [ 65]: 08245933a277dbe1 +Block 0004 [ 66]: eda3c6f55d8dec61 +Block 0004 [ 67]: c5e72f83f91d9ef0 +Block 0004 [ 68]: e6d401a4acb97d8f +Block 0004 [ 69]: f499338f8e2a6f25 +Block 0004 [ 70]: 5725ea1e9a7c9a40 +Block 0004 [ 71]: 78015cf40fd43146 +Block 0004 [ 72]: 8e53780ce8cc04b9 +Block 0004 [ 73]: 1a1c458d1d05af9e +Block 0004 [ 74]: 7a576ff157948c64 +Block 0004 [ 75]: 7c9f6f165d136062 +Block 0004 [ 76]: a038ea9b75a1f436 +Block 0004 [ 77]: 858043a7ad2aa121 +Block 0004 [ 78]: bfc610d9724d4325 +Block 0004 [ 79]: 659d18f29c4f7995 +Block 0004 [ 80]: 18049b3c80c77175 +Block 0004 [ 81]: 8060c37bc1f03a74 +Block 0004 [ 82]: bbc7c274ecf6a8d6 +Block 0004 [ 83]: a487c7e4734d3b39 +Block 0004 [ 84]: 681167693061d9a7 +Block 0004 [ 85]: ff6f7a17112ffb87 +Block 0004 [ 86]: 83df04decd05742a +Block 0004 [ 87]: 086f57c9ffc40003 +Block 0004 [ 88]: d9e31cb73edac6e7 +Block 0004 [ 89]: 93a8cf45366a874c +Block 0004 [ 90]: cee20eb0ca470904 +Block 0004 [ 91]: e7e0ace92d9b3d61 +Block 0004 [ 92]: b3ae86ff91d9f0fb +Block 0004 [ 93]: 6f227e57ae9e4c80 +Block 0004 [ 94]: 8a01ab3a4678eb6f +Block 0004 [ 95]: 80da3c6a719c0209 +Block 0004 [ 96]: a91c8edea57913af +Block 0004 [ 97]: ea6ab28a0e2f37f7 +Block 0004 [ 98]: 3f795b47ebeead2a +Block 0004 [ 99]: 5e1505078f12cff1 +Block 0004 [100]: ecba75be892e25ef +Block 0004 [101]: 6d3feef41567ae8a +Block 0004 [102]: 4517a0804df1ecc0 +Block 0004 [103]: 58bc996afd6c0712 +Block 0004 [104]: ba12c78acd45132e +Block 0004 [105]: 7ee89654818197a7 +Block 0004 [106]: 514ecbc9845bd37c +Block 0004 [107]: 11d29359991ee6ff +Block 0004 [108]: fe713242d737c3a3 +Block 0004 [109]: 32f84914ce2fdaf9 +Block 0004 [110]: 974ecb6b51e80ae7 +Block 0004 [111]: ed9c92603ca0e403 +Block 0004 [112]: a5058b1cdf5edd52 +Block 0004 [113]: 45ad7579118ccbfd +Block 0004 [114]: 964fc1432cf81d8e +Block 0004 [115]: a862bd5e512696af +Block 0004 [116]: 9b49f72e01622b4c +Block 0004 [117]: e72a25dad57c482a +Block 0004 [118]: 61e0eba167cca8f9 +Block 0004 [119]: 366294652d3cf919 +Block 0004 [120]: 5e58ea40ddbd5196 +Block 0004 [121]: 8aa2db0a693790b2 +Block 0004 [122]: c31566392c57c1ec +Block 0004 [123]: 8394c122b6d01178 +Block 0004 [124]: fb42ac99a450a533 +Block 0004 [125]: e6a9cff5060f1e82 +Block 0004 [126]: 60e2a713bde568b6 +Block 0004 [127]: 83e1282e71de5848 +Block 0005 [ 0]: c8a00942e6fab217 +Block 0005 [ 1]: 5f3900cc396002cb +Block 0005 [ 2]: c2098b6274dcc746 +Block 0005 [ 3]: 663ce4aa4874678f +Block 0005 [ 4]: 5792103890802ed5 +Block 0005 [ 5]: 93fa06bdc66fe195 +Block 0005 [ 6]: e0d6c790decb7cc5 +Block 0005 [ 7]: 0a81879d52836a92 +Block 0005 [ 8]: 0e52d7de3cde3cbb +Block 0005 [ 9]: 105ff6f967a4f460 +Block 0005 [ 10]: 40c3229e477af434 +Block 0005 [ 11]: b3c5128c5940310f +Block 0005 [ 12]: 139836a039ff17fd +Block 0005 [ 13]: bc1bf0e49c651fa7 +Block 0005 [ 14]: f1d26434c506cc0c +Block 0005 [ 15]: 0b02fbf0a0471f31 +Block 0005 [ 16]: 4ccdacb55b294a21 +Block 0005 [ 17]: 1ee8df23ccf5342a +Block 0005 [ 18]: 0e9456d3e7903d56 +Block 0005 [ 19]: b3f6794f08b15886 +Block 0005 [ 20]: fd65389bd69c17e2 +Block 0005 [ 21]: 9c26848be1617f55 +Block 0005 [ 22]: 78bc8f5c4a21097d +Block 0005 [ 23]: ff93a642f914134b +Block 0005 [ 24]: 39ea6e448d04d4ea +Block 0005 [ 25]: 708148a8d39a0745 +Block 0005 [ 26]: 0fbf4da1da80b844 +Block 0005 [ 27]: 61ae114a155d5ae4 +Block 0005 [ 28]: 0ef079afd2959963 +Block 0005 [ 29]: 54abcd41a84c0a5c +Block 0005 [ 30]: 9db495b2a6f908f3 +Block 0005 [ 31]: 9ce42afa31af3158 +Block 0005 [ 32]: 1eade628e9b7172c +Block 0005 [ 33]: 3439ac345c0e50f9 +Block 0005 [ 34]: 53d4b4a87da6c3cb +Block 0005 [ 35]: be412590435a41b3 +Block 0005 [ 36]: 2b72d2c74275ca6c +Block 0005 [ 37]: 64bdba533fc452f6 +Block 0005 [ 38]: 6b78aef20e0afdda +Block 0005 [ 39]: 0676838cbbf73829 +Block 0005 [ 40]: 78b240089f718c68 +Block 0005 [ 41]: 0a6bcb165c8ca245 +Block 0005 [ 42]: 5cbfbf1a7b7ceb7b +Block 0005 [ 43]: 1f5b4c47ce730d9d +Block 0005 [ 44]: 029cee169ab2033f +Block 0005 [ 45]: 4bf62feafb239c79 +Block 0005 [ 46]: ecb412518681a909 +Block 0005 [ 47]: 3aa3bb1e4f34c2fa +Block 0005 [ 48]: 27cc3db9b21b7193 +Block 0005 [ 49]: 189d495529dc5853 +Block 0005 [ 50]: 1b96e2533620e1ca +Block 0005 [ 51]: 00caee4e87e09b8a +Block 0005 [ 52]: 473818a7322b984c +Block 0005 [ 53]: 4edd73d65bbc1721 +Block 0005 [ 54]: 0ffede59ded70af0 +Block 0005 [ 55]: 49dc058fd59587bf +Block 0005 [ 56]: e86b8c9fc4e64fd7 +Block 0005 [ 57]: 16bb898549ee3a82 +Block 0005 [ 58]: 1f858fcea6c3cb44 +Block 0005 [ 59]: 56b71eaac6ded63a +Block 0005 [ 60]: 5d1be7993b9e5d43 +Block 0005 [ 61]: 6eea32343ea4be5b +Block 0005 [ 62]: 7a8a3e23abafbd1e +Block 0005 [ 63]: db0a8eff9415fab7 +Block 0005 [ 64]: 514e5db61cedb6bc +Block 0005 [ 65]: fa2f4ddb28d56882 +Block 0005 [ 66]: 9eb643cf6be83890 +Block 0005 [ 67]: 9ef39e62be287dad +Block 0005 [ 68]: 114a029159dd0e77 +Block 0005 [ 69]: c3c6258532250025 +Block 0005 [ 70]: 182987e1a9f9c56f +Block 0005 [ 71]: 7ae2aa48e9595ccb +Block 0005 [ 72]: c5b4a0f5c6297318 +Block 0005 [ 73]: 76b5455e463ac9b6 +Block 0005 [ 74]: abbdb2271a03b410 +Block 0005 [ 75]: 77d3c85d31fb0a50 +Block 0005 [ 76]: 4b37d5a3a36b5c2f +Block 0005 [ 77]: 45e4cb2d76d87e68 +Block 0005 [ 78]: 9da1636691c616a0 +Block 0005 [ 79]: d9f77c6c249f650e +Block 0005 [ 80]: 72d7afbfe8262971 +Block 0005 [ 81]: 3b35df52da5feabe +Block 0005 [ 82]: 7696b93b21273e02 +Block 0005 [ 83]: db4fc3efd9e8c0b5 +Block 0005 [ 84]: 78fb9a87cfc22f47 +Block 0005 [ 85]: 95dfe8b7f66af8ce +Block 0005 [ 86]: a489ea3ec00d689e +Block 0005 [ 87]: 7b428b52d1e5a706 +Block 0005 [ 88]: 1dc435d48476bbae +Block 0005 [ 89]: 9601f814fd53536f +Block 0005 [ 90]: ddc3b64730bb0dd6 +Block 0005 [ 91]: d5f14040203b4b69 +Block 0005 [ 92]: a35b17db080c898a +Block 0005 [ 93]: 9a42d2cc0cabd88d +Block 0005 [ 94]: d2ad2bc6b4cc79fd +Block 0005 [ 95]: 5a438d9a2d8060e7 +Block 0005 [ 96]: 19c6a90f24108aeb +Block 0005 [ 97]: a67eb012ba11cd90 +Block 0005 [ 98]: a6a96f8cebd4ad0d +Block 0005 [ 99]: e14f7c290a284bc1 +Block 0005 [100]: 7a08c29453764b2d +Block 0005 [101]: d06f68f4751b5e34 +Block 0005 [102]: 8e80c5dbbaf8ffe8 +Block 0005 [103]: 6b1e41c36c114373 +Block 0005 [104]: 49d830c4906de0fe +Block 0005 [105]: b0ee513791cad520 +Block 0005 [106]: ab9e60e0968d3a0a +Block 0005 [107]: 2284da3cb1f7c309 +Block 0005 [108]: 17a689e78674644d +Block 0005 [109]: bd9e41f8e2f85fce +Block 0005 [110]: 1c98dec77ed6cfc7 +Block 0005 [111]: 69f9539b6e1938cc +Block 0005 [112]: 2413ed5967171c23 +Block 0005 [113]: f52bb67788b17c5d +Block 0005 [114]: 9c58d36c1a0e4d9c +Block 0005 [115]: 986158f9bc6da22a +Block 0005 [116]: 6668746a8ab7701f +Block 0005 [117]: 395c1277a648bfcd +Block 0005 [118]: aa1f79834a1cd936 +Block 0005 [119]: d8888d13fd202ad5 +Block 0005 [120]: 925e9a3c90e002ca +Block 0005 [121]: fd773ff418bfd642 +Block 0005 [122]: 30253479ba10d167 +Block 0005 [123]: 90075643c6a2cdb3 +Block 0005 [124]: 65ce7cd429906ce3 +Block 0005 [125]: d045c0f7cc934b3a +Block 0005 [126]: 15610c6b2e28b0ff +Block 0005 [127]: 4e39efce679d8906 +Block 0006 [ 0]: 1e325ed2212387d1 +Block 0006 [ 1]: 3d0e385b3df2f34c +Block 0006 [ 2]: f5e9da41d473a50c +Block 0006 [ 3]: 6c41f75b09633114 +Block 0006 [ 4]: e5c40b0a5c3c3d3c +Block 0006 [ 5]: 70390c2060d02d5b +Block 0006 [ 6]: 13cfcc8f3a87a4e8 +Block 0006 [ 7]: 694cc08eb1cc357a +Block 0006 [ 8]: 066bd7778e34c240 +Block 0006 [ 9]: 02546d4e08d48cf1 +Block 0006 [ 10]: 667ac555c19f4fd9 +Block 0006 [ 11]: e2f0f49161bba1a1 +Block 0006 [ 12]: 46bcd9c803861439 +Block 0006 [ 13]: 6cf465b0d8236f95 +Block 0006 [ 14]: 12ace71d5959aad3 +Block 0006 [ 15]: aeeb352782be85af +Block 0006 [ 16]: 5a021e2205f64f63 +Block 0006 [ 17]: 3fbdb9434dc71254 +Block 0006 [ 18]: 8234a650879d7645 +Block 0006 [ 19]: 070f81fae6f2be5a +Block 0006 [ 20]: 1fd9b2c5f14d41d4 +Block 0006 [ 21]: 159455a467f28d58 +Block 0006 [ 22]: a0bddae8748dcd60 +Block 0006 [ 23]: 343aded618ecffcd +Block 0006 [ 24]: 97bff7d40fdcab71 +Block 0006 [ 25]: 32dc2e9bd0365fd1 +Block 0006 [ 26]: 4aa3dc7bb9c27451 +Block 0006 [ 27]: be3c25443096c335 +Block 0006 [ 28]: d73fae835d16832f +Block 0006 [ 29]: 82c5fe5db9b50422 +Block 0006 [ 30]: 5c822dec966da5d9 +Block 0006 [ 31]: d3cd392b9ce27b79 +Block 0006 [ 32]: c8baed6dabb7aef4 +Block 0006 [ 33]: 048770c6881afd15 +Block 0006 [ 34]: f122e8cfe8f76764 +Block 0006 [ 35]: 107168691e3f9738 +Block 0006 [ 36]: d65b69f4799b6db0 +Block 0006 [ 37]: 974445327044eebc +Block 0006 [ 38]: 50467387ff2d4696 +Block 0006 [ 39]: 838c29b0b0d34e28 +Block 0006 [ 40]: 436cd94c81c96b56 +Block 0006 [ 41]: 996ab1aa9f53b25c +Block 0006 [ 42]: cb76b9da4e401489 +Block 0006 [ 43]: 1f63bf42233b63ca +Block 0006 [ 44]: 6f123ceaa4ead5c6 +Block 0006 [ 45]: 2f4c070f4618f760 +Block 0006 [ 46]: 97ab4ea49e241fc4 +Block 0006 [ 47]: 37801e0034f0c0dd +Block 0006 [ 48]: b7161fda13bcd2da +Block 0006 [ 49]: ebe6cbe0e9b75f52 +Block 0006 [ 50]: b1ceca181c16a480 +Block 0006 [ 51]: e806183b1bf6b766 +Block 0006 [ 52]: 5880a473e2ac3d17 +Block 0006 [ 53]: 68c7e161cddca8ef +Block 0006 [ 54]: 21ce049e22ee28e4 +Block 0006 [ 55]: 94a98f294503b9b2 +Block 0006 [ 56]: 0f193763b7ad5b27 +Block 0006 [ 57]: 2d0702f236454417 +Block 0006 [ 58]: d40d19c0290b48bf +Block 0006 [ 59]: 42e5ab63638e87ad +Block 0006 [ 60]: 18120e37f9af0de5 +Block 0006 [ 61]: 14c510336c1373d1 +Block 0006 [ 62]: c6407562b0bbf1b9 +Block 0006 [ 63]: f1c2f7fa6181d9dd +Block 0006 [ 64]: bae064f2705158b4 +Block 0006 [ 65]: fcdc22a1aad7bf8c +Block 0006 [ 66]: b4f7dfd2a6ef95f8 +Block 0006 [ 67]: 15da42f7b3828d9e +Block 0006 [ 68]: 63861e4623edd926 +Block 0006 [ 69]: 0c9fb5d206786c38 +Block 0006 [ 70]: cc9197e49df2d79c +Block 0006 [ 71]: dd7237d89fb311e2 +Block 0006 [ 72]: b18667c1f5f22fd1 +Block 0006 [ 73]: 36a6df076e50f7fc +Block 0006 [ 74]: 3aabee6b302d1288 +Block 0006 [ 75]: 8892f49ba624e8fe +Block 0006 [ 76]: 4a2ced3a274ec188 +Block 0006 [ 77]: 187f7da5461e9b81 +Block 0006 [ 78]: fac3f4ca90050a52 +Block 0006 [ 79]: 2ffd193f6716cdef +Block 0006 [ 80]: 11cc9006d842b575 +Block 0006 [ 81]: e44268924819c35c +Block 0006 [ 82]: 725257733df64b91 +Block 0006 [ 83]: f7fdb2b0649f4a80 +Block 0006 [ 84]: 9087d12ba4d0c2bd +Block 0006 [ 85]: a494ade254d09b36 +Block 0006 [ 86]: 7ec3b1fc9e451974 +Block 0006 [ 87]: accba2d0e221af9c +Block 0006 [ 88]: c519f5c987806dc3 +Block 0006 [ 89]: 2f010a3439a00b8c +Block 0006 [ 90]: d48826af110704a7 +Block 0006 [ 91]: 5232aad8b79c6af4 +Block 0006 [ 92]: ca5d0256e2b35d0b +Block 0006 [ 93]: 10c295f5c2e46f19 +Block 0006 [ 94]: 8281197973bb9bb4 +Block 0006 [ 95]: df9f65ae49b5f93c +Block 0006 [ 96]: 7dfe5b4fa339d915 +Block 0006 [ 97]: 7965a0eafe0305bc +Block 0006 [ 98]: 7e734063819b7ca5 +Block 0006 [ 99]: 87005587175739ed +Block 0006 [100]: 985b7218bbd1e0df +Block 0006 [101]: a5c4aaad731e9e52 +Block 0006 [102]: 94f8576241e6a93e +Block 0006 [103]: e76117d948600c60 +Block 0006 [104]: 5fe8da4b25406121 +Block 0006 [105]: 14ee0178a8daba6b +Block 0006 [106]: 53226d7eab9099d9 +Block 0006 [107]: 9e6a09e237cff17f +Block 0006 [108]: bc7879f71ef775a9 +Block 0006 [109]: 04e5eb3b91e265d2 +Block 0006 [110]: dcfc2adf3b5553b6 +Block 0006 [111]: 7e4063b07d077a2f +Block 0006 [112]: fee54d9875bceac1 +Block 0006 [113]: c100d4e93dd98cca +Block 0006 [114]: 89f574f2e045e6ee +Block 0006 [115]: 03ed7984ab4ab699 +Block 0006 [116]: edb7c889baea7dce +Block 0006 [117]: 6b8250649f5b1668 +Block 0006 [118]: d41c7ee32201babf +Block 0006 [119]: d2922482c1e04578 +Block 0006 [120]: fcf0c6413ae4722b +Block 0006 [121]: b3b784a4c136f5c6 +Block 0006 [122]: 24e170a067979de6 +Block 0006 [123]: 4ef268adf91d6949 +Block 0006 [124]: 491e4adbc870f18b +Block 0006 [125]: e71f2fb4840b8c21 +Block 0006 [126]: bb0f5afaa1613284 +Block 0006 [127]: 4dd594b381688dc7 +Block 0007 [ 0]: 02054cdda9ac52e9 +Block 0007 [ 1]: 74c8c9e85b5e02f4 +Block 0007 [ 2]: 792716474cd648e9 +Block 0007 [ 3]: f6823e73b2025209 +Block 0007 [ 4]: abc2801a85f23f90 +Block 0007 [ 5]: fd6a18603579e622 +Block 0007 [ 6]: 0796b3f23d0f0cbb +Block 0007 [ 7]: af154a25aeb75835 +Block 0007 [ 8]: 172767f4ab83b39c +Block 0007 [ 9]: 1820af02c9f8c438 +Block 0007 [ 10]: 71b304192b469ba4 +Block 0007 [ 11]: 0733625d1f0b07ae +Block 0007 [ 12]: 5f3fb92e7b81e28f +Block 0007 [ 13]: 7f51f85692c08278 +Block 0007 [ 14]: e04d383c8d9e3cb4 +Block 0007 [ 15]: a808e2901eda05e8 +Block 0007 [ 16]: 95d18dffcd956e3f +Block 0007 [ 17]: c495bf92cc1eb2c3 +Block 0007 [ 18]: e4b5068e15c6237d +Block 0007 [ 19]: 038ebdd28a2f5e1f +Block 0007 [ 20]: e8a78fec794b374f +Block 0007 [ 21]: 49cf5128ad356c6c +Block 0007 [ 22]: 3a81503f52bb1d32 +Block 0007 [ 23]: b5e7a0c5e054f041 +Block 0007 [ 24]: f03d87e4f633fea8 +Block 0007 [ 25]: 35c905a45ed6f147 +Block 0007 [ 26]: 778b682178f753b0 +Block 0007 [ 27]: c11bd927fa19d8bf +Block 0007 [ 28]: 6f55f1e70164debb +Block 0007 [ 29]: 5b25d7d0ebae2719 +Block 0007 [ 30]: 4334711eeb4e61f0 +Block 0007 [ 31]: 8f25b6e85f26f5a5 +Block 0007 [ 32]: 99a59b735700c91c +Block 0007 [ 33]: ecbde758ee3d44a9 +Block 0007 [ 34]: 8beb7e8b0796896e +Block 0007 [ 35]: c776e92c6eace265 +Block 0007 [ 36]: 7b482447cdbb7923 +Block 0007 [ 37]: d066cf62481bd85d +Block 0007 [ 38]: 3760107b555f164d +Block 0007 [ 39]: bd2ed42b3469118a +Block 0007 [ 40]: b3b93ec089fa9570 +Block 0007 [ 41]: a3b83ac726cebc90 +Block 0007 [ 42]: f5a5f6ba7520d94c +Block 0007 [ 43]: 669acf3b099d0044 +Block 0007 [ 44]: 0c17fbece76f2cdb +Block 0007 [ 45]: 20c269cc5957f277 +Block 0007 [ 46]: 1cedb1bdfe8fd7b5 +Block 0007 [ 47]: 668576fe733972f0 +Block 0007 [ 48]: eb8ecef9caa76a30 +Block 0007 [ 49]: 545f45145682a434 +Block 0007 [ 50]: fd6d43e9e4053104 +Block 0007 [ 51]: 191be545a61fa7f5 +Block 0007 [ 52]: f55a49467b6d56bc +Block 0007 [ 53]: d16adb69a1271e48 +Block 0007 [ 54]: 135a7ad9f44cf075 +Block 0007 [ 55]: a6ee7d2c5de58c94 +Block 0007 [ 56]: 30629407d7baf044 +Block 0007 [ 57]: fd609a1f539a7ded +Block 0007 [ 58]: b2bd283aa38b095c +Block 0007 [ 59]: 63d7c3ebc0d760eb +Block 0007 [ 60]: f5985ffcbfdd3499 +Block 0007 [ 61]: aaf55572963fba6e +Block 0007 [ 62]: 3c9832957188c10e +Block 0007 [ 63]: c68df92e57b25f71 +Block 0007 [ 64]: 919fba1782add59b +Block 0007 [ 65]: 0af703d15bdafd30 +Block 0007 [ 66]: 56af9ba05fb32915 +Block 0007 [ 67]: 69504d9eef0b609e +Block 0007 [ 68]: 2c56d65a473495d7 +Block 0007 [ 69]: b799808d50d74b7e +Block 0007 [ 70]: 40face41b3f9b58b +Block 0007 [ 71]: 68f24c272359346d +Block 0007 [ 72]: 43371f1865cf7c3d +Block 0007 [ 73]: 94bbb9681e012ca5 +Block 0007 [ 74]: 99cf6f595e669bcd +Block 0007 [ 75]: b4eb393b2032bf37 +Block 0007 [ 76]: 2a609a846f0b45d1 +Block 0007 [ 77]: 00d3614b72e4e9e4 +Block 0007 [ 78]: 687d33b89c4af490 +Block 0007 [ 79]: 03801094658884a6 +Block 0007 [ 80]: aeac1d0951d7ac95 +Block 0007 [ 81]: 515de863fd8c5ae2 +Block 0007 [ 82]: e0b567e683019ee6 +Block 0007 [ 83]: 158ad01affa22539 +Block 0007 [ 84]: 80198398eadd3d4d +Block 0007 [ 85]: 30d23f755c4bdd55 +Block 0007 [ 86]: 707473e977a255b8 +Block 0007 [ 87]: ab3bf25f1921ebc9 +Block 0007 [ 88]: 87714bfba3c105bc +Block 0007 [ 89]: 07801fab91f7ead0 +Block 0007 [ 90]: e7a2ab5b12011c2e +Block 0007 [ 91]: 985187b1fe217d3a +Block 0007 [ 92]: 3c06fe12f45194c0 +Block 0007 [ 93]: 906b2d6ae3e5d42a +Block 0007 [ 94]: 7b4da55d949793fa +Block 0007 [ 95]: 496565ae57757dc3 +Block 0007 [ 96]: 2464c2638aa0dae9 +Block 0007 [ 97]: be41ced962625b10 +Block 0007 [ 98]: 1c0785d7518b9398 +Block 0007 [ 99]: 5621b3bde815f5fc +Block 0007 [100]: a24047d86c344073 +Block 0007 [101]: 440ec2f91f946f60 +Block 0007 [102]: c96a0decfc8fa5f7 +Block 0007 [103]: d1b64811d448ba49 +Block 0007 [104]: 48cb56cbd461f112 +Block 0007 [105]: 418a7ecf1da71421 +Block 0007 [106]: 0fc7bb85c55dde6f +Block 0007 [107]: 3e69bb8a9a749ec4 +Block 0007 [108]: 2cd764dd85558988 +Block 0007 [109]: 086a9a71dcc47efc +Block 0007 [110]: 8c633ed6465c6cb1 +Block 0007 [111]: aef902ed6cf036c7 +Block 0007 [112]: 435cd6832c6e226f +Block 0007 [113]: cf6da02414411184 +Block 0007 [114]: 3ac15ddfa8ccaf45 +Block 0007 [115]: 9bedcfc4d61d8144 +Block 0007 [116]: 9cfdb2843dec6e4c +Block 0007 [117]: 3789d674e283e722 +Block 0007 [118]: 7df19105095e5bba +Block 0007 [119]: 4838d5ba7017a5f2 +Block 0007 [120]: ecde583dff0051d7 +Block 0007 [121]: 39956b97b9fa4c14 +Block 0007 [122]: 5ea6bf784ecb1b42 +Block 0007 [123]: 198f7d4505405412 +Block 0007 [124]: 01bcf2435403b8f6 +Block 0007 [125]: e448fd363f0771ea +Block 0007 [126]: f2398b53dd97db61 +Block 0007 [127]: 54ff44b6be8d86a7 +Block 0008 [ 0]: 00ddd74226547ee8 +Block 0008 [ 1]: 24159266aff1280e +Block 0008 [ 2]: 8eadb32d57990290 +Block 0008 [ 3]: cf1b40ac0c8a5c8c +Block 0008 [ 4]: b7cf03c731e5b992 +Block 0008 [ 5]: f2dac041171f38bb +Block 0008 [ 6]: 69076dcccfb46ea3 +Block 0008 [ 7]: 5651dbed1100bfde +Block 0008 [ 8]: 53dceb417238cbc1 +Block 0008 [ 9]: 0b0744892b164cf3 +Block 0008 [ 10]: e35a3105fb950399 +Block 0008 [ 11]: 0dd91d7e71c2183e +Block 0008 [ 12]: 612d867f2effaab8 +Block 0008 [ 13]: 3080d3b0f71bb081 +Block 0008 [ 14]: 6d2bd684c1b15ede +Block 0008 [ 15]: 38420dfdc7bde3a5 +Block 0008 [ 16]: 509a5aec595434ae +Block 0008 [ 17]: 8fe411bf400f0853 +Block 0008 [ 18]: a4e7ef66ee576adf +Block 0008 [ 19]: f95c6ca90cfe8c0d +Block 0008 [ 20]: b8293e4db0f1ab2c +Block 0008 [ 21]: 92415d9ceeb88885 +Block 0008 [ 22]: 33201e020f8f673d +Block 0008 [ 23]: 225de785d2ad17bb +Block 0008 [ 24]: eb51e2cddb968254 +Block 0008 [ 25]: abcedb7f11da17d2 +Block 0008 [ 26]: 048be2d856275271 +Block 0008 [ 27]: 81c4b42d8e334881 +Block 0008 [ 28]: 20f23fba874aa617 +Block 0008 [ 29]: 554d738888d0c78a +Block 0008 [ 30]: 1e04ac9bdd6e31f2 +Block 0008 [ 31]: aa1eb35d3815a484 +Block 0008 [ 32]: 462c5af1abcc9cff +Block 0008 [ 33]: 57e47b4ef3f56bce +Block 0008 [ 34]: 91fd0882fb9f93ee +Block 0008 [ 35]: 75d4d9890062a2ae +Block 0008 [ 36]: 35d3aaaecdca0d36 +Block 0008 [ 37]: b20cb6d0461d42e2 +Block 0008 [ 38]: ea6a187ef41badd5 +Block 0008 [ 39]: 3a437dccfcb3b3f7 +Block 0008 [ 40]: ef7f28c8865b58ec +Block 0008 [ 41]: 43f1f573a75017a7 +Block 0008 [ 42]: f5124a1edbdf4cb9 +Block 0008 [ 43]: db8b81c93502b6fc +Block 0008 [ 44]: 19efaa7f870b165f +Block 0008 [ 45]: bdacffd1774061b1 +Block 0008 [ 46]: cbf97601989fc422 +Block 0008 [ 47]: dbdf79c7cb4e49e0 +Block 0008 [ 48]: 42565c17ab4572aa +Block 0008 [ 49]: 5a9516fed8a4eea5 +Block 0008 [ 50]: 40ad887a8ab8b545 +Block 0008 [ 51]: 4ae0d7ad030b2fb1 +Block 0008 [ 52]: dab076f1a9cf3cc2 +Block 0008 [ 53]: d0b1f467452016e2 +Block 0008 [ 54]: 8b10a4bb5d001dd5 +Block 0008 [ 55]: 9d44cb7201468d39 +Block 0008 [ 56]: fa24a3bebbb521eb +Block 0008 [ 57]: 144327403d115894 +Block 0008 [ 58]: ee982acd08e54537 +Block 0008 [ 59]: acc789d4f7e62797 +Block 0008 [ 60]: eae6f48d56b37821 +Block 0008 [ 61]: 2bff8aa7a8499a95 +Block 0008 [ 62]: 257e7a09e4176354 +Block 0008 [ 63]: dbb72295972e9ac9 +Block 0008 [ 64]: ea0b8135e233bcb3 +Block 0008 [ 65]: ff9c535a76808ac3 +Block 0008 [ 66]: 1c703b1b4c728f8c +Block 0008 [ 67]: 4ae21bc7002f7893 +Block 0008 [ 68]: c40b1fd090b0e033 +Block 0008 [ 69]: c35fc5717bbaffba +Block 0008 [ 70]: 0868adcb35c16d4a +Block 0008 [ 71]: cd17ecfca6479f03 +Block 0008 [ 72]: 46648f40bd72d80d +Block 0008 [ 73]: 77f2fad0fc87b479 +Block 0008 [ 74]: 31f2b2ba0b7ccfa5 +Block 0008 [ 75]: 5b85cd1c91ee5f74 +Block 0008 [ 76]: 0fec78845097ce3f +Block 0008 [ 77]: 088adaac9e7dc5cd +Block 0008 [ 78]: dccc6c3a857a4ba9 +Block 0008 [ 79]: 5a19f83b98b444cf +Block 0008 [ 80]: 9b5124cfed3ce26f +Block 0008 [ 81]: 38ddc9403b6d081d +Block 0008 [ 82]: da528afe93f665ef +Block 0008 [ 83]: 68845aca943ea5ea +Block 0008 [ 84]: 64847160c5dcc4ef +Block 0008 [ 85]: 8b4bee768926418c +Block 0008 [ 86]: 9cff834458860832 +Block 0008 [ 87]: 29193c32427c8a8b +Block 0008 [ 88]: 033acac495ed117e +Block 0008 [ 89]: 4a4172c01aef8ea6 +Block 0008 [ 90]: e14551ad4f04ca04 +Block 0008 [ 91]: 2da9c7411b038405 +Block 0008 [ 92]: fe6fdb9a710ad45e +Block 0008 [ 93]: ad63b771789e3e5c +Block 0008 [ 94]: 8ac32bef70c99599 +Block 0008 [ 95]: 6f507ae99b983a6e +Block 0008 [ 96]: ba5628d85986c214 +Block 0008 [ 97]: 725d58c7f6c6c1ce +Block 0008 [ 98]: 1a8214c75a42dba6 +Block 0008 [ 99]: 545d28f9455fc511 +Block 0008 [100]: 7b64a2e365a1d275 +Block 0008 [101]: 63fe760a1c262dd4 +Block 0008 [102]: c0b03d9d02ad5fcd +Block 0008 [103]: 901db491ff2f9d56 +Block 0008 [104]: d63c43b99276870d +Block 0008 [105]: 4cea375449b08481 +Block 0008 [106]: 8f32d81540fbca4a +Block 0008 [107]: f70a8336ac731f08 +Block 0008 [108]: 20508e588bde2fea +Block 0008 [109]: fa33830f6aca3567 +Block 0008 [110]: 51467149c89a20df +Block 0008 [111]: 2a33e0af1afb0909 +Block 0008 [112]: 44b0dd9cf07a759f +Block 0008 [113]: 4ae0823ba2849505 +Block 0008 [114]: 0e7000eba4682c1b +Block 0008 [115]: 0601a32520c29e86 +Block 0008 [116]: 1acef2bfed1a2490 +Block 0008 [117]: f56433c4b77ba5fd +Block 0008 [118]: 249169f9ebac36b3 +Block 0008 [119]: 3dff8073c16c9ddd +Block 0008 [120]: 2d3fa1047c8481af +Block 0008 [121]: a8da96ca08141a8b +Block 0008 [122]: 93da560820064f1e +Block 0008 [123]: 8394940dc494de93 +Block 0008 [124]: af1b5d8150fe7d3b +Block 0008 [125]: 9e57bfe48024e642 +Block 0008 [126]: 84193e6ca6daccc5 +Block 0008 [127]: 825d98f10fbae8e5 +Block 0009 [ 0]: 6116f146783633c9 +Block 0009 [ 1]: 8935acf007f9a42f +Block 0009 [ 2]: 363327a94a365cda +Block 0009 [ 3]: 40145736eab8bdcf +Block 0009 [ 4]: 63a805bfdac5881a +Block 0009 [ 5]: 56469b1c1503b144 +Block 0009 [ 6]: a68f19d26e9641a4 +Block 0009 [ 7]: 9a2ad1cfa5a780d2 +Block 0009 [ 8]: 94314d76f0e5e4cf +Block 0009 [ 9]: 4f53793011ffa6c0 +Block 0009 [ 10]: b29d9b3204ffb826 +Block 0009 [ 11]: 7f610c5d2a235cde +Block 0009 [ 12]: 192f89d97731c461 +Block 0009 [ 13]: 8fe626843baebd22 +Block 0009 [ 14]: 89880c978f68a70c +Block 0009 [ 15]: b6ae708839d63a02 +Block 0009 [ 16]: 3e693ff12084a6b0 +Block 0009 [ 17]: 171f108f0848032d +Block 0009 [ 18]: 6a0f5bafd20043f4 +Block 0009 [ 19]: 4b6de51ba2a9d7cf +Block 0009 [ 20]: 6895a0816b97bceb +Block 0009 [ 21]: 9abf256ba172eb74 +Block 0009 [ 22]: 88bf934006c0f404 +Block 0009 [ 23]: 23d290612e4455a3 +Block 0009 [ 24]: 57f6883f4db1f04d +Block 0009 [ 25]: 9988574cb4c3bc93 +Block 0009 [ 26]: 032ae161e8a24562 +Block 0009 [ 27]: 61b10a42786c20cb +Block 0009 [ 28]: 78c77004760ee74d +Block 0009 [ 29]: 8480f5a9ff0cad99 +Block 0009 [ 30]: 351f1f1f476c01a6 +Block 0009 [ 31]: 53020a75e59b9f0a +Block 0009 [ 32]: 06bd0455ae0f3a87 +Block 0009 [ 33]: 512dde0965bc4a52 +Block 0009 [ 34]: e4999a84b0df4686 +Block 0009 [ 35]: 1a9c16b4710e9310 +Block 0009 [ 36]: cc499906b76f2b9b +Block 0009 [ 37]: f983199dfc547586 +Block 0009 [ 38]: 10cd35c318c8b898 +Block 0009 [ 39]: fe08ee0f007d4bd5 +Block 0009 [ 40]: 50d7d98ac62b0ecc +Block 0009 [ 41]: 04f80f9b011117e6 +Block 0009 [ 42]: d99f3a076e400edd +Block 0009 [ 43]: d5bf5a4b773344e9 +Block 0009 [ 44]: be8168893cd26b55 +Block 0009 [ 45]: 1952cf7c98b3134f +Block 0009 [ 46]: a918b9de5d2e8664 +Block 0009 [ 47]: 853ccc7da2424092 +Block 0009 [ 48]: 2ec713fbf107b8fb +Block 0009 [ 49]: 2d119d176cc4ccf6 +Block 0009 [ 50]: ad257df871b099ce +Block 0009 [ 51]: 33b8904b2ca92680 +Block 0009 [ 52]: bbf1814327b90017 +Block 0009 [ 53]: 2fcfe327f39b8b1c +Block 0009 [ 54]: 5986f6465a96540d +Block 0009 [ 55]: a252fa4d75a1d09e +Block 0009 [ 56]: a8042efac888810b +Block 0009 [ 57]: 4d62fbc776a24f76 +Block 0009 [ 58]: d1066a2a4ec27d26 +Block 0009 [ 59]: 3420e65ecf597b18 +Block 0009 [ 60]: ff251e6526185035 +Block 0009 [ 61]: 6f19e43f1628cac9 +Block 0009 [ 62]: b24d9869cf6c2f90 +Block 0009 [ 63]: 6e37a79565716f96 +Block 0009 [ 64]: 3d94a95786eb2014 +Block 0009 [ 65]: 73086d129e94e92d +Block 0009 [ 66]: cbee49880781e87b +Block 0009 [ 67]: 61371356af82274f +Block 0009 [ 68]: 29b8c37cd53ad57a +Block 0009 [ 69]: 324733f2b5cdfa62 +Block 0009 [ 70]: ea13180259aa70a4 +Block 0009 [ 71]: e505a2f059c46d54 +Block 0009 [ 72]: 8110a82788ecaab9 +Block 0009 [ 73]: 2f85dc978a4929d3 +Block 0009 [ 74]: 9f1d14a079a20fcb +Block 0009 [ 75]: 54d18ce87ef37756 +Block 0009 [ 76]: f708cb5851c5d102 +Block 0009 [ 77]: 8fa3eb7e87e6619c +Block 0009 [ 78]: f93fd1f75756e8d4 +Block 0009 [ 79]: a6f3b595905af386 +Block 0009 [ 80]: 25efb720353451c1 +Block 0009 [ 81]: 80f8094683879e59 +Block 0009 [ 82]: 072ff09d395c9640 +Block 0009 [ 83]: f2f63b7020693ae5 +Block 0009 [ 84]: 6a42ab0c39e29403 +Block 0009 [ 85]: 27a9334f38dd7bad +Block 0009 [ 86]: 4fd11b325797f410 +Block 0009 [ 87]: cc2020b56cd3c7a4 +Block 0009 [ 88]: c54140df15111cd0 +Block 0009 [ 89]: a8a2482dadd5ff2c +Block 0009 [ 90]: 7f9d62d9890db82b +Block 0009 [ 91]: 4c3bb8918fef6957 +Block 0009 [ 92]: 739da007f3401e45 +Block 0009 [ 93]: 014441b4fc664f16 +Block 0009 [ 94]: ae2d8cdbec8a5b61 +Block 0009 [ 95]: 2546bd681965ce57 +Block 0009 [ 96]: c8dd35fbba2daeaa +Block 0009 [ 97]: 00ecc682b149ffa5 +Block 0009 [ 98]: 761a96f6d52275d3 +Block 0009 [ 99]: c881827304e78734 +Block 0009 [100]: 2a9dd8664f879242 +Block 0009 [101]: 715b472bf254b68d +Block 0009 [102]: 6ceff5a995f00cec +Block 0009 [103]: ec55ef14d6b8a520 +Block 0009 [104]: d314bc12ccb8b902 +Block 0009 [105]: 9b863e7e00226537 +Block 0009 [106]: c52fbf34d7e75d59 +Block 0009 [107]: e849c03be5b2da05 +Block 0009 [108]: b38e0205f0528189 +Block 0009 [109]: 7c97db54a80221f9 +Block 0009 [110]: c546349847005e72 +Block 0009 [111]: 376ec10d06843bda +Block 0009 [112]: c5cbd62cf9e43405 +Block 0009 [113]: e6cc6877ce17773f +Block 0009 [114]: 7613897fcd047e34 +Block 0009 [115]: ec48eae7984efc9c +Block 0009 [116]: eaa7f881f7f7c89c +Block 0009 [117]: 256fc2ebe98ef0da +Block 0009 [118]: 29dd9bd56a02a843 +Block 0009 [119]: f1d5b4e674d8c52f +Block 0009 [120]: fdc4eac9b3d350ef +Block 0009 [121]: 7261f2450e8f66a5 +Block 0009 [122]: efad51924a77e9d3 +Block 0009 [123]: fa96bf4dcb96faac +Block 0009 [124]: 4f6330cdbb2cc9b8 +Block 0009 [125]: 8da60af9c7d48e56 +Block 0009 [126]: ee4d25f5d0731762 +Block 0009 [127]: b034c742e982a237 +Block 0010 [ 0]: 1581550dad35e99a +Block 0010 [ 1]: 05d9fb5dd139072e +Block 0010 [ 2]: 4a750673a7a39cd8 +Block 0010 [ 3]: 5dd25947128cb63e +Block 0010 [ 4]: 3c70a199d2289f50 +Block 0010 [ 5]: cb5b05d366cac5cf +Block 0010 [ 6]: 6ec9d18e4f699e96 +Block 0010 [ 7]: 7ef94df9822d067e +Block 0010 [ 8]: cc0154b55089ed53 +Block 0010 [ 9]: 6cdff108c72c740b +Block 0010 [ 10]: 1922a63692a7ad69 +Block 0010 [ 11]: c5e57600387ec72d +Block 0010 [ 12]: ba8606b14cbf7795 +Block 0010 [ 13]: e8149dc812f3f495 +Block 0010 [ 14]: 1b7cd4786cdb1489 +Block 0010 [ 15]: 54b072f64b65506f +Block 0010 [ 16]: e468892cabab73b4 +Block 0010 [ 17]: 8c23f8b762b983d1 +Block 0010 [ 18]: 3379165a16599e67 +Block 0010 [ 19]: 251d4a02152ab9cd +Block 0010 [ 20]: 3ae70d9f24fd7f7b +Block 0010 [ 21]: 9031d6c71cc1df7a +Block 0010 [ 22]: 74ee35696178dbb1 +Block 0010 [ 23]: 74e72d75ca52359b +Block 0010 [ 24]: a084ac9759f74dba +Block 0010 [ 25]: 9023bbb7b6dad75f +Block 0010 [ 26]: 2cd8b7a9d6a0d0bf +Block 0010 [ 27]: 43632bfc53fef602 +Block 0010 [ 28]: 932c3ce043b9d5a5 +Block 0010 [ 29]: dd424acccc7f3426 +Block 0010 [ 30]: 6a00dafeb648d626 +Block 0010 [ 31]: 559e29b3670ae181 +Block 0010 [ 32]: 7cdb59d67e7b0847 +Block 0010 [ 33]: 9112fc484c1856ef +Block 0010 [ 34]: 6330d32dac31fc9c +Block 0010 [ 35]: f4cc8b585269d45b +Block 0010 [ 36]: 3ed4bad64f8d15b6 +Block 0010 [ 37]: 7d28923e599082d3 +Block 0010 [ 38]: 489779a0484a8a87 +Block 0010 [ 39]: 29f5ad3ea2de0e03 +Block 0010 [ 40]: 9e71cab15323b5ec +Block 0010 [ 41]: c778e291423650ee +Block 0010 [ 42]: d9fab25b79472568 +Block 0010 [ 43]: be31604f2b51db18 +Block 0010 [ 44]: 2c6b307dcd80a198 +Block 0010 [ 45]: dc4972e5fa1a6b8e +Block 0010 [ 46]: 1c9c9151b237a79f +Block 0010 [ 47]: d296b9c11e54dc49 +Block 0010 [ 48]: 061a87b483254066 +Block 0010 [ 49]: 9181748c91e61093 +Block 0010 [ 50]: 7f0245daa712fca3 +Block 0010 [ 51]: c31cd3af5e3c325a +Block 0010 [ 52]: 883f4f752fc1ed6a +Block 0010 [ 53]: 8e8a6b2ad2e9f78b +Block 0010 [ 54]: a6828c7b9ae69793 +Block 0010 [ 55]: 5fd21d7e09c07e76 +Block 0010 [ 56]: d46460dc13aea5d6 +Block 0010 [ 57]: 7837284a5f7fa560 +Block 0010 [ 58]: a67d348980d25e9e +Block 0010 [ 59]: 7105db7bc3a185eb +Block 0010 [ 60]: b640219f27d0a87d +Block 0010 [ 61]: 1cdbf6e6bcb96342 +Block 0010 [ 62]: 518a9db055b4caf6 +Block 0010 [ 63]: 6d9580534ef590f5 +Block 0010 [ 64]: c62f771deb9c4d44 +Block 0010 [ 65]: 86500c646cfe0cb7 +Block 0010 [ 66]: c5b986115fada57a +Block 0010 [ 67]: 8754d87c1c255f00 +Block 0010 [ 68]: a007aff8deb8ce6e +Block 0010 [ 69]: 19c17a24d62c3670 +Block 0010 [ 70]: 53051a43f12bcbd5 +Block 0010 [ 71]: 347d012a37ca3b7d +Block 0010 [ 72]: 0f26ed5326fe4a2f +Block 0010 [ 73]: 48d50db051744ec6 +Block 0010 [ 74]: e47219b32d675659 +Block 0010 [ 75]: 494134100b4fb7b6 +Block 0010 [ 76]: cd4e658c5c461b92 +Block 0010 [ 77]: 869f79190a5435eb +Block 0010 [ 78]: 935b606d09833496 +Block 0010 [ 79]: df9e265f08a00697 +Block 0010 [ 80]: c8fd59cd5b8a8b0e +Block 0010 [ 81]: 81281454bf7a1b4a +Block 0010 [ 82]: f0e94eefcdd74473 +Block 0010 [ 83]: 557c0ee5cfadfaed +Block 0010 [ 84]: c1e76d9b70f5085c +Block 0010 [ 85]: f326a4044566e114 +Block 0010 [ 86]: 2a3487f29b575895 +Block 0010 [ 87]: 47508a14bd6769ce +Block 0010 [ 88]: 161645c30267ebf9 +Block 0010 [ 89]: be3385c7c63566a0 +Block 0010 [ 90]: 52efbda144902dba +Block 0010 [ 91]: bd3ef2a4b859e30a +Block 0010 [ 92]: edd3aeea5b7b0d76 +Block 0010 [ 93]: f3742851032d0706 +Block 0010 [ 94]: 065c8a5ca189571a +Block 0010 [ 95]: 38073ab2b43d4fc5 +Block 0010 [ 96]: fff19498f099d9d8 +Block 0010 [ 97]: 76eb0ebbbfa4b030 +Block 0010 [ 98]: 2b467d2766ae5093 +Block 0010 [ 99]: e0d0fcf033eb16e2 +Block 0010 [100]: 455941faca082d2e +Block 0010 [101]: eb0ebc8001c0ee88 +Block 0010 [102]: 014ef8e92fdf1609 +Block 0010 [103]: a45754ecab977f21 +Block 0010 [104]: 8851e7729875e24c +Block 0010 [105]: 24eb03f9f64bd274 +Block 0010 [106]: 0ae3cce50b82f30b +Block 0010 [107]: 7d568c148cb4c4d8 +Block 0010 [108]: 29c6b592b88c18b3 +Block 0010 [109]: e6e17ec5b18be1d2 +Block 0010 [110]: f9454e53c4c0d899 +Block 0010 [111]: bca482e99dbc8b54 +Block 0010 [112]: bf43d5b658c4d900 +Block 0010 [113]: c1a5fa13cfdb425e +Block 0010 [114]: 514f21e92dd1bb69 +Block 0010 [115]: 605acc73c7d5d8bb +Block 0010 [116]: bb8057c50072ab70 +Block 0010 [117]: 1f9ffdab48f0ca58 +Block 0010 [118]: d535f7d811f5b7a7 +Block 0010 [119]: 98bd18ecc347eefc +Block 0010 [120]: 1e69ba6f3a7f4fd0 +Block 0010 [121]: e1e2a7af5e7e361a +Block 0010 [122]: 3df786477ee6f7f7 +Block 0010 [123]: c2f3d9ea7feb0ec3 +Block 0010 [124]: 50bd7d5499aaca90 +Block 0010 [125]: e38fb4acdcf1b6ac +Block 0010 [126]: 4f92cefd6ebb0794 +Block 0010 [127]: f275a4842c740714 +Block 0011 [ 0]: f9d07509503819bd +Block 0011 [ 1]: 7ce6341ac752d873 +Block 0011 [ 2]: cf4550cbedff3a5e +Block 0011 [ 3]: 8768db6544d9c977 +Block 0011 [ 4]: 4fbd5c2b0a7036c1 +Block 0011 [ 5]: ee474ae73d0e3156 +Block 0011 [ 6]: 478b517b17c70aee +Block 0011 [ 7]: d67f67db907587b7 +Block 0011 [ 8]: 98623377f34cc9fa +Block 0011 [ 9]: 517221fb649687ff +Block 0011 [ 10]: 035cc4b9754f3cea +Block 0011 [ 11]: d172d1d16e842534 +Block 0011 [ 12]: 126ba6d66dc03c10 +Block 0011 [ 13]: ef2bff64caeafb53 +Block 0011 [ 14]: a8d87ec45b71adef +Block 0011 [ 15]: c0fc912f4cb97dbb +Block 0011 [ 16]: d461a1fe274d00ea +Block 0011 [ 17]: b3c91d2c2b561f50 +Block 0011 [ 18]: d9d15e51315c1662 +Block 0011 [ 19]: 237314480e44d2f6 +Block 0011 [ 20]: cd1666524d9908be +Block 0011 [ 21]: 399c98b7b390fc51 +Block 0011 [ 22]: 711e961e04711c5a +Block 0011 [ 23]: 4039879c114b23c1 +Block 0011 [ 24]: a5fbd0eb93a342fe +Block 0011 [ 25]: 3f859f3ddc5e8819 +Block 0011 [ 26]: 93dcfe098f9de5aa +Block 0011 [ 27]: f3d3afe76a718bd6 +Block 0011 [ 28]: 752df2d429465e81 +Block 0011 [ 29]: bd4a4f26d19791f4 +Block 0011 [ 30]: 4c57242e5f0b55aa +Block 0011 [ 31]: 01275075e4f8a4e1 +Block 0011 [ 32]: 3a37199950dce330 +Block 0011 [ 33]: 2e41aafd16cf1b05 +Block 0011 [ 34]: 92243d071386ab20 +Block 0011 [ 35]: d869ba9a984d4bde +Block 0011 [ 36]: 6be491e7a3be8d9f +Block 0011 [ 37]: acef9890cec1a375 +Block 0011 [ 38]: e232f0287c136279 +Block 0011 [ 39]: d95325c0d7ab9a82 +Block 0011 [ 40]: 90d8b5b0c8c6afa1 +Block 0011 [ 41]: 5bb67f83bf5f1a83 +Block 0011 [ 42]: 75affbe23953fd5b +Block 0011 [ 43]: d43a2db1ac58dec5 +Block 0011 [ 44]: 0af8868fbcd3ebe0 +Block 0011 [ 45]: 6f0cf6609fbc2a32 +Block 0011 [ 46]: 1b4a24795691fda7 +Block 0011 [ 47]: e6e032b6720d0903 +Block 0011 [ 48]: 8b4a5e1ac40c6d53 +Block 0011 [ 49]: f09c4457e757d976 +Block 0011 [ 50]: d5eb3b17dbbf75e2 +Block 0011 [ 51]: 74ee41b96ce4915d +Block 0011 [ 52]: f5a6c444f6c7dab4 +Block 0011 [ 53]: a6dd992782c12a9b +Block 0011 [ 54]: 82ab2f6c6abd9c4b +Block 0011 [ 55]: 24dbb03795c538e2 +Block 0011 [ 56]: b703785f0aa21442 +Block 0011 [ 57]: 1911ce525bff5d72 +Block 0011 [ 58]: edc77bb56a4ab0c1 +Block 0011 [ 59]: 84ad7caa4e66e14c +Block 0011 [ 60]: 660aa6a2745246a4 +Block 0011 [ 61]: d0531eb0c94d2835 +Block 0011 [ 62]: e07ea2345379ad0d +Block 0011 [ 63]: 499700d903192292 +Block 0011 [ 64]: 595e9750f70bbf3f +Block 0011 [ 65]: 3ec2b0d5546008ce +Block 0011 [ 66]: 1e9afbafb3fe7892 +Block 0011 [ 67]: 051889a2e3b3c12e +Block 0011 [ 68]: a47cf414a9c2e3ee +Block 0011 [ 69]: ad75a5ec9388091b +Block 0011 [ 70]: e6c48f94041c6d16 +Block 0011 [ 71]: ac4d0e7ad884428c +Block 0011 [ 72]: 222e82f8af709648 +Block 0011 [ 73]: 33b376379cc8d21e +Block 0011 [ 74]: 97ed5f80b3ab3a65 +Block 0011 [ 75]: ca903f8faa0a9f3a +Block 0011 [ 76]: 766d650d4f88ad10 +Block 0011 [ 77]: 49004a3e3d5a0cec +Block 0011 [ 78]: 80fe987f05769c43 +Block 0011 [ 79]: e7ab3340c8480b4f +Block 0011 [ 80]: eb4b06163cbd2966 +Block 0011 [ 81]: 18256d0b24389063 +Block 0011 [ 82]: c39c1550f3fda74e +Block 0011 [ 83]: 254f94232ffc456f +Block 0011 [ 84]: 7a07379880f898c1 +Block 0011 [ 85]: 10bcbb1e56036b64 +Block 0011 [ 86]: aa13e477412afb1b +Block 0011 [ 87]: c9efe5bd72b75944 +Block 0011 [ 88]: e721be1923769258 +Block 0011 [ 89]: 2d85f117a10321c9 +Block 0011 [ 90]: 6830c4cbc6b34147 +Block 0011 [ 91]: 407cb2e8b2e35046 +Block 0011 [ 92]: 610d429a7aa7bc01 +Block 0011 [ 93]: a87b6f3066bd4f95 +Block 0011 [ 94]: 15c058703f06b644 +Block 0011 [ 95]: 4e3bdd301ec7a0f1 +Block 0011 [ 96]: 5e726da6a1338bba +Block 0011 [ 97]: ce3bc3a123db3655 +Block 0011 [ 98]: 77225e3ff6f31055 +Block 0011 [ 99]: 0656971d13d67e7c +Block 0011 [100]: 7c05554b1068393c +Block 0011 [101]: 4810197934d77904 +Block 0011 [102]: 349cc06be7997ef9 +Block 0011 [103]: d00b3ded2d522f5e +Block 0011 [104]: 227acc01f569ca9e +Block 0011 [105]: 977c0a71d22f2cd7 +Block 0011 [106]: 8017ecfa54e3d7a8 +Block 0011 [107]: 3d1aaf609a4a527b +Block 0011 [108]: a62db92347317e92 +Block 0011 [109]: 063b9b695ce07f42 +Block 0011 [110]: 7e6c285a42777ae4 +Block 0011 [111]: 57c8f2a7a0fb2918 +Block 0011 [112]: 920ee3f0d6bc0111 +Block 0011 [113]: 9c3aa6dad4a6741c +Block 0011 [114]: 858bcf22afea1c1f +Block 0011 [115]: efde8bec8729ea86 +Block 0011 [116]: fb858be9ffe79d1f +Block 0011 [117]: df4d290f94188e6b +Block 0011 [118]: d15a924c44977496 +Block 0011 [119]: 96b0d68c74b98b21 +Block 0011 [120]: 45123713a09a64ce +Block 0011 [121]: 7adb89ae11063d09 +Block 0011 [122]: 3957bcb1cadfb4db +Block 0011 [123]: 86e2fb643a1f1b25 +Block 0011 [124]: 70ccb8e27170d6d2 +Block 0011 [125]: 72b9f822beed7313 +Block 0011 [126]: d3a930c21c4a2956 +Block 0011 [127]: 8273bb90c3b5600e +Block 0012 [ 0]: 8806f36d35c1423b +Block 0012 [ 1]: 14653c73ccf5bc88 +Block 0012 [ 2]: 4207fc5b55d55fda +Block 0012 [ 3]: efbdfa4d752b6918 +Block 0012 [ 4]: a4a2d8f6065b95d5 +Block 0012 [ 5]: 97ae0bd93615b75e +Block 0012 [ 6]: ea30d4b1d695e231 +Block 0012 [ 7]: 0f0ca5ca8152e942 +Block 0012 [ 8]: 383566c45510b12b +Block 0012 [ 9]: a0ae9a21d1a1df6b +Block 0012 [ 10]: 71353b98020fb2f4 +Block 0012 [ 11]: 14defb047ecd1cfc +Block 0012 [ 12]: 6f8d61281e48d8d3 +Block 0012 [ 13]: 4e68a4a4107f1cbf +Block 0012 [ 14]: 82ac58dc69bed136 +Block 0012 [ 15]: 082cf1a328c9d60a +Block 0012 [ 16]: cd7c6c4269625174 +Block 0012 [ 17]: dc4e7de5e2132891 +Block 0012 [ 18]: 605722ef953732bb +Block 0012 [ 19]: ef28c8050fb1ffbb +Block 0012 [ 20]: 8b6d0fab9e173cd4 +Block 0012 [ 21]: a9f69ac0b87c3248 +Block 0012 [ 22]: b00898c9abd03a75 +Block 0012 [ 23]: 743e6179354ef1d4 +Block 0012 [ 24]: ecc061362554bb3d +Block 0012 [ 25]: 9ac900bdfe1342cb +Block 0012 [ 26]: 39a9deeb4bd618ac +Block 0012 [ 27]: ea98a8de1ba57756 +Block 0012 [ 28]: d72d9b53c6e21291 +Block 0012 [ 29]: e711b901b297e96e +Block 0012 [ 30]: 9762d95e177c4f1f +Block 0012 [ 31]: c55051fa55ba56b3 +Block 0012 [ 32]: 5d73ae3e34932185 +Block 0012 [ 33]: 248c4c499a5d1382 +Block 0012 [ 34]: 1bde77252efbe61f +Block 0012 [ 35]: da398389113e48ac +Block 0012 [ 36]: 251b9f0f957ff7bb +Block 0012 [ 37]: 9ecc553346dcd262 +Block 0012 [ 38]: 9cb0cb2499323e09 +Block 0012 [ 39]: 196608d377614970 +Block 0012 [ 40]: ad301f3b39eab9eb +Block 0012 [ 41]: 07292fb5039b5a0c +Block 0012 [ 42]: b8c242fde0656a78 +Block 0012 [ 43]: de2ffbe33e4255f4 +Block 0012 [ 44]: ef88307c4af2465f +Block 0012 [ 45]: 8130e319111c7e12 +Block 0012 [ 46]: d30446203591a7f0 +Block 0012 [ 47]: 92d9a9c97962de12 +Block 0012 [ 48]: 81ffb8785be950b8 +Block 0012 [ 49]: dd7a8f4f4f1be7fc +Block 0012 [ 50]: ae16a8611e2fab24 +Block 0012 [ 51]: 274ae59677ed5cde +Block 0012 [ 52]: 9ee2a215fc45877d +Block 0012 [ 53]: 44c02472b9d4865e +Block 0012 [ 54]: 7a99faae6ce71424 +Block 0012 [ 55]: 9f14ec3364b617b5 +Block 0012 [ 56]: 4e5f21c0f9fa5cdb +Block 0012 [ 57]: 8581be6ff99ff6e9 +Block 0012 [ 58]: 286a475c94d8531b +Block 0012 [ 59]: 5829a37f5059aba7 +Block 0012 [ 60]: 63966f77f572f1fa +Block 0012 [ 61]: 2b385db8fdd63b29 +Block 0012 [ 62]: 7f19c5dfa2d51b19 +Block 0012 [ 63]: e6c7faac63fd8be9 +Block 0012 [ 64]: 20978fded5ed200c +Block 0012 [ 65]: 3d7f27000be3bf33 +Block 0012 [ 66]: 424c8604e3439841 +Block 0012 [ 67]: c7c17415eea225fd +Block 0012 [ 68]: 119ad57ef17db880 +Block 0012 [ 69]: 7c5ec22d1e8246f4 +Block 0012 [ 70]: 02aaff890ed6a0d8 +Block 0012 [ 71]: 38885a315c9cb170 +Block 0012 [ 72]: 9bdea427f4331556 +Block 0012 [ 73]: 0b9d377ac4a053ee +Block 0012 [ 74]: ae093cbad8ebfd1f +Block 0012 [ 75]: da9a129e658ed6d5 +Block 0012 [ 76]: 5fc18fb4ede1183c +Block 0012 [ 77]: 03ac6cc465a317d6 +Block 0012 [ 78]: 90216f4e34b94195 +Block 0012 [ 79]: 7374632b8bfa4ed2 +Block 0012 [ 80]: 3f01f0d5c1d11263 +Block 0012 [ 81]: ce97cb17f8470c45 +Block 0012 [ 82]: 48446e58576c981b +Block 0012 [ 83]: 3af83ee98ee746f7 +Block 0012 [ 84]: e036c677e9d4f210 +Block 0012 [ 85]: 15e75b241dadf152 +Block 0012 [ 86]: 6414a2ac0b3d0934 +Block 0012 [ 87]: 3e2bbf6a7f90858e +Block 0012 [ 88]: a8db21963b8e39f3 +Block 0012 [ 89]: fd73cb703b0ac5ce +Block 0012 [ 90]: 2f34ee7be12306e7 +Block 0012 [ 91]: c24f9ac5f72fd067 +Block 0012 [ 92]: cc2171bb74a68e15 +Block 0012 [ 93]: 80834464ea81f238 +Block 0012 [ 94]: d2344c88383cfd55 +Block 0012 [ 95]: e8241e72f2d88c34 +Block 0012 [ 96]: 7510928f8266427e +Block 0012 [ 97]: fb57a7823a65cb28 +Block 0012 [ 98]: d30dd5b6d6bfc46a +Block 0012 [ 99]: 1350828149e5ee7d +Block 0012 [100]: 944087103d17187e +Block 0012 [101]: 72c9e02ae3037f35 +Block 0012 [102]: aae68c10254df726 +Block 0012 [103]: 3c72bcac4a61afae +Block 0012 [104]: ce0501cd931819df +Block 0012 [105]: 426e32d58167fbfb +Block 0012 [106]: 9e5dc832972aa924 +Block 0012 [107]: 848b3f39861c3eb5 +Block 0012 [108]: ed871992cfd6e2e3 +Block 0012 [109]: 1843a4cebb0d19ac +Block 0012 [110]: 6b59416e812adc5b +Block 0012 [111]: ff7753e7dd87cb07 +Block 0012 [112]: d85a0a1902640928 +Block 0012 [113]: 5a770deeb225fbce +Block 0012 [114]: 7246a7c49bf20941 +Block 0012 [115]: c0e9edc2c5b87ffa +Block 0012 [116]: fae6521ac53f5836 +Block 0012 [117]: 9eca1d246c821c14 +Block 0012 [118]: 6ec6ced3960fef2c +Block 0012 [119]: 9af70f8caf586a52 +Block 0012 [120]: 5f30942072110be3 +Block 0012 [121]: bfc7df63c519ee08 +Block 0012 [122]: 012890af79b89e65 +Block 0012 [123]: 17c6a29fd7ea0fca +Block 0012 [124]: 9284e78adc31e53b +Block 0012 [125]: 56d34c2e48b5e556 +Block 0012 [126]: 6f7c8fa37870b55e +Block 0012 [127]: 64d5549f6eb29b2f +Block 0013 [ 0]: e72efbcee6e1fcc2 +Block 0013 [ 1]: 41c9fa08bec04f71 +Block 0013 [ 2]: afdff9477d9dd990 +Block 0013 [ 3]: 847e1b15aee75dd3 +Block 0013 [ 4]: 51a5faf1e49312e4 +Block 0013 [ 5]: 98bcc5a1b36fcb8d +Block 0013 [ 6]: d4d840de4f9c632b +Block 0013 [ 7]: 5c9caaea2214b8ad +Block 0013 [ 8]: dfb03ae68b0b3a54 +Block 0013 [ 9]: 1d791e93ae70eff7 +Block 0013 [ 10]: 9924c218180bca12 +Block 0013 [ 11]: 5cabe42dcc8eceb6 +Block 0013 [ 12]: 3aadd556303df415 +Block 0013 [ 13]: a2e90919b4a888ff +Block 0013 [ 14]: ea9096263ccf5466 +Block 0013 [ 15]: 230bcadd55c5d8cf +Block 0013 [ 16]: 72b74072cfd88278 +Block 0013 [ 17]: 99287c1741b988a4 +Block 0013 [ 18]: 9261d65b6402547a +Block 0013 [ 19]: 95fd4b54d8291fd5 +Block 0013 [ 20]: fbf7d4b4962449ba +Block 0013 [ 21]: bd89c24c92cdabd6 +Block 0013 [ 22]: 1773376e4f1cb495 +Block 0013 [ 23]: f196d1f575cfef2e +Block 0013 [ 24]: 5d443966d2508d3c +Block 0013 [ 25]: df929f9765749018 +Block 0013 [ 26]: 4e98bda4c9aa91d6 +Block 0013 [ 27]: 3b74998d38c6f9a9 +Block 0013 [ 28]: a69472986a031370 +Block 0013 [ 29]: 55999e6cbb50ffe9 +Block 0013 [ 30]: df955f1fc8cebba6 +Block 0013 [ 31]: 7f9090b065d11439 +Block 0013 [ 32]: f522cab9b83ca10e +Block 0013 [ 33]: 27644ea4cb350062 +Block 0013 [ 34]: ff6d1db5e34d9eee +Block 0013 [ 35]: 0a03ae8f8fde0222 +Block 0013 [ 36]: 8d71db40f234b291 +Block 0013 [ 37]: 93dc4ec94a65e856 +Block 0013 [ 38]: 23169228ab00ccb9 +Block 0013 [ 39]: 92f2b127f4ffa819 +Block 0013 [ 40]: 36260a0ad39d896a +Block 0013 [ 41]: cb46dfcf38f9487d +Block 0013 [ 42]: 71351268c905ab11 +Block 0013 [ 43]: 8a726ed65034f3dd +Block 0013 [ 44]: 6ff7b9cd220b4b25 +Block 0013 [ 45]: d09bb2bbdadda776 +Block 0013 [ 46]: 14f63b5e2576d304 +Block 0013 [ 47]: 2012e78d9f11d05f +Block 0013 [ 48]: 84c4c6327aba9915 +Block 0013 [ 49]: 64bd4339a6f4730e +Block 0013 [ 50]: e8db6637f982ba64 +Block 0013 [ 51]: 80426b505ab9b659 +Block 0013 [ 52]: 7b183c8d992d6e89 +Block 0013 [ 53]: 27be6d49797c8929 +Block 0013 [ 54]: c2ce4c1f3bc4bc85 +Block 0013 [ 55]: 10f597203eb06167 +Block 0013 [ 56]: b337d265c1ffbae5 +Block 0013 [ 57]: 2cb28d5998618cb2 +Block 0013 [ 58]: 3694423e3dce42ee +Block 0013 [ 59]: a4f273033178e7c3 +Block 0013 [ 60]: c3046ec981137bb3 +Block 0013 [ 61]: 1009e948b01acf67 +Block 0013 [ 62]: cf8ff3786b295ab4 +Block 0013 [ 63]: c326444756ddd088 +Block 0013 [ 64]: e6319be1c3024f8d +Block 0013 [ 65]: 7ea1cdbcab9d1e37 +Block 0013 [ 66]: 5a278a8c214dffc3 +Block 0013 [ 67]: e1e3096f9467c652 +Block 0013 [ 68]: 5ca93fb559033a8f +Block 0013 [ 69]: 6e94c69f7f3833be +Block 0013 [ 70]: 0f28fd96ca3fbe9d +Block 0013 [ 71]: f45a753a250f8885 +Block 0013 [ 72]: 85596b79d2b69dc5 +Block 0013 [ 73]: 668a8092d5936a81 +Block 0013 [ 74]: ca8f2365d51addcf +Block 0013 [ 75]: b6d7f0efd51024da +Block 0013 [ 76]: eae27ca92101b01d +Block 0013 [ 77]: 41a31214dff85a05 +Block 0013 [ 78]: cefc4a5bc9e160b6 +Block 0013 [ 79]: b2ec3b0af6d0cfad +Block 0013 [ 80]: eaf8ccbae405a96a +Block 0013 [ 81]: bf80f0cb8290672b +Block 0013 [ 82]: 1d354282bfb867b0 +Block 0013 [ 83]: defd9743a6ed5ec4 +Block 0013 [ 84]: b9f7e89081a83de9 +Block 0013 [ 85]: 475a016e71f52c7b +Block 0013 [ 86]: 9200fa2b3e510c1c +Block 0013 [ 87]: 722dbf069e3bb00a +Block 0013 [ 88]: 4456a0288267d739 +Block 0013 [ 89]: 9bb0deec79a73b28 +Block 0013 [ 90]: 5668f034f9593324 +Block 0013 [ 91]: 716f5609d579186c +Block 0013 [ 92]: d3885db0ca291647 +Block 0013 [ 93]: 7362a661049f019a +Block 0013 [ 94]: 2a3af104bfdf5f9d +Block 0013 [ 95]: 12e8f6e36733c9b1 +Block 0013 [ 96]: 771fb14c5e514301 +Block 0013 [ 97]: 7253c7e989875dc3 +Block 0013 [ 98]: 0169faf6582e95ad +Block 0013 [ 99]: a78686d559d37864 +Block 0013 [100]: 3ed327acc1ca2d97 +Block 0013 [101]: d4df3ae4a05987c6 +Block 0013 [102]: 734086ace6f3ba89 +Block 0013 [103]: c014cbeb31bd5fe5 +Block 0013 [104]: 8773bbe012dc88b4 +Block 0013 [105]: a4364d36a4a0ec5c +Block 0013 [106]: c3080f5baa28264d +Block 0013 [107]: c74122c7d560f312 +Block 0013 [108]: df4eebdca740a2e1 +Block 0013 [109]: 415708c10d8419a5 +Block 0013 [110]: d2e8f4acb6c9229b +Block 0013 [111]: 31405c89ee5f9078 +Block 0013 [112]: dcb5a58709568836 +Block 0013 [113]: f9adc209054ca3cd +Block 0013 [114]: 8f54dd7f1e576e69 +Block 0013 [115]: 90200596f5f31919 +Block 0013 [116]: a51bb22209110112 +Block 0013 [117]: 395c30fc016b08fa +Block 0013 [118]: 984e30e11239af0e +Block 0013 [119]: 0c01cf9e1b6c375e +Block 0013 [120]: 1dc8cb664c66b463 +Block 0013 [121]: 42e8e6591fa02520 +Block 0013 [122]: 1556177ba9cfe1b5 +Block 0013 [123]: 7c8383f4db999495 +Block 0013 [124]: 0b4446b852033798 +Block 0013 [125]: e364b9e50c65e807 +Block 0013 [126]: 22c2b338400fa40e +Block 0013 [127]: 197b3e06a9b9b35d +Block 0014 [ 0]: 8d14eda116d8b174 +Block 0014 [ 1]: f0ed99cc6e9bad1f +Block 0014 [ 2]: aa681b19cb2aa856 +Block 0014 [ 3]: 51b9371d6db9a704 +Block 0014 [ 4]: fd4e067c50a82bf1 +Block 0014 [ 5]: b84fe88cef8f8ce1 +Block 0014 [ 6]: e005bbdea12c5cce +Block 0014 [ 7]: 8921662cb47324d5 +Block 0014 [ 8]: 19b0df7e73fedfb0 +Block 0014 [ 9]: eb2e94f27c2c08d6 +Block 0014 [ 10]: c6c93a91e4ff2395 +Block 0014 [ 11]: 78ca8005a838af79 +Block 0014 [ 12]: 832134055a083e60 +Block 0014 [ 13]: e2baab535beeaca9 +Block 0014 [ 14]: 6cb6415b356f9c6b +Block 0014 [ 15]: 4d188011ab14c17a +Block 0014 [ 16]: 4eb9bbf6642e83fe +Block 0014 [ 17]: b11101eb0f96d3c3 +Block 0014 [ 18]: 49bd14abcacc79c2 +Block 0014 [ 19]: 908454e7efcf67aa +Block 0014 [ 20]: 0c6bd3e1d0d1a801 +Block 0014 [ 21]: a6fd600f4d316505 +Block 0014 [ 22]: c6b3b58a099b0132 +Block 0014 [ 23]: 1fd168a48e08af81 +Block 0014 [ 24]: 7d0abf0de858e6c9 +Block 0014 [ 25]: e1c1ec6fccf881b0 +Block 0014 [ 26]: 66c26e61d80a5717 +Block 0014 [ 27]: 30d88fc6f4fcfb1c +Block 0014 [ 28]: f4bef017c2aa3d69 +Block 0014 [ 29]: 54ec842d96c65623 +Block 0014 [ 30]: 3dd02da54acc953e +Block 0014 [ 31]: 6c9a5523129d0a12 +Block 0014 [ 32]: e80101c9a3eb28af +Block 0014 [ 33]: 5e5012733c54de06 +Block 0014 [ 34]: 14a6fc541b76f2c4 +Block 0014 [ 35]: ae2aaa5d9de0a5a8 +Block 0014 [ 36]: d0e66232ba166660 +Block 0014 [ 37]: fb5ce73d6e6f73a0 +Block 0014 [ 38]: 1d430c477c21b0a4 +Block 0014 [ 39]: a047b3225665765b +Block 0014 [ 40]: 6629b699bffc7016 +Block 0014 [ 41]: 986241e23222e465 +Block 0014 [ 42]: 67f53ba71892b9f3 +Block 0014 [ 43]: cca9cd5a1b010cca +Block 0014 [ 44]: d963121f56ae7d48 +Block 0014 [ 45]: 314021d79e98d3a9 +Block 0014 [ 46]: c33fb6dba4174783 +Block 0014 [ 47]: c50d1c6765478c78 +Block 0014 [ 48]: e83173786e25b7ec +Block 0014 [ 49]: 1bea0e1d495317ad +Block 0014 [ 50]: ea5c6380f39600f8 +Block 0014 [ 51]: 5e4ae1400406c36e +Block 0014 [ 52]: 1755aea74cf69384 +Block 0014 [ 53]: 2571f5cb87a57586 +Block 0014 [ 54]: cd88b273efb66357 +Block 0014 [ 55]: fd404e9cdcd9c9fe +Block 0014 [ 56]: 15031c81ff4f7d59 +Block 0014 [ 57]: 67c01cb57dc56faa +Block 0014 [ 58]: 8fc3faf1a58630fc +Block 0014 [ 59]: 4a2fea71ed6905fa +Block 0014 [ 60]: 4176ea688e1a9bff +Block 0014 [ 61]: 0baf1e600ebba90f +Block 0014 [ 62]: d4c62bedc6c17c5a +Block 0014 [ 63]: fe82cc4b18777fbb +Block 0014 [ 64]: 8c94dd054153a818 +Block 0014 [ 65]: aa31581716fef7e5 +Block 0014 [ 66]: b42153e50e973f5a +Block 0014 [ 67]: d652f8ae8b6207f3 +Block 0014 [ 68]: e06432d955b0ab86 +Block 0014 [ 69]: f92dbd0e338f8ccb +Block 0014 [ 70]: 562ba0d2b04549ef +Block 0014 [ 71]: 29a231a4c57a3de1 +Block 0014 [ 72]: 7e2145921fee5493 +Block 0014 [ 73]: 20a340d5895bcd9a +Block 0014 [ 74]: e2e354ca5272b509 +Block 0014 [ 75]: abcdee5c5bb2cfa3 +Block 0014 [ 76]: d371f81a8be84f1d +Block 0014 [ 77]: 8220ea4b6cbe82fc +Block 0014 [ 78]: a58ce51218a79494 +Block 0014 [ 79]: f635a38fce84fed0 +Block 0014 [ 80]: 0b408788ad40eba1 +Block 0014 [ 81]: 30d60016156bd242 +Block 0014 [ 82]: 81d0c5358dddce93 +Block 0014 [ 83]: 4f7908a5cb8bb7d5 +Block 0014 [ 84]: 14b529212b6530c4 +Block 0014 [ 85]: 33044b35a9337d9a +Block 0014 [ 86]: c8fde54e83feb1c5 +Block 0014 [ 87]: 3be5432e49aec1bb +Block 0014 [ 88]: f98a1e3a999a4f79 +Block 0014 [ 89]: 75045dbaa4dca89e +Block 0014 [ 90]: 294bddf0db98b8ac +Block 0014 [ 91]: a7d8b2a1daaecbc7 +Block 0014 [ 92]: c2abce3a81f24c50 +Block 0014 [ 93]: f76054fadd7e4cfe +Block 0014 [ 94]: 86af8192d73f1e4c +Block 0014 [ 95]: ae1e37842e18f6d7 +Block 0014 [ 96]: f771f980b278b4d5 +Block 0014 [ 97]: 1c5bf21c38eee556 +Block 0014 [ 98]: e62a9a43d1945340 +Block 0014 [ 99]: 9cb9a94b5edcdfa3 +Block 0014 [100]: 2ef34979f56f344b +Block 0014 [101]: 31dbbd3b49048f01 +Block 0014 [102]: c39b10dfc2141dcc +Block 0014 [103]: ede638cecaa47945 +Block 0014 [104]: 47a56d23f46fb7c1 +Block 0014 [105]: 72b848fd7517cd75 +Block 0014 [106]: 321312e6606d202b +Block 0014 [107]: fccb2896a973930e +Block 0014 [108]: a95b5677fe9bb5e7 +Block 0014 [109]: cc196e39010d655b +Block 0014 [110]: 92836ef9898b94ca +Block 0014 [111]: dbe8aeb97154968b +Block 0014 [112]: ec80ac4ed462dd58 +Block 0014 [113]: f1899ab7707e7d66 +Block 0014 [114]: 537c431765423717 +Block 0014 [115]: 2577e7bc01750f96 +Block 0014 [116]: f70bb7875341ccba +Block 0014 [117]: 17fd2d1068f6f10f +Block 0014 [118]: 9092c995c5a598da +Block 0014 [119]: 3c4712e895e00263 +Block 0014 [120]: 81302387429d318b +Block 0014 [121]: 0ad80f67bfc1effa +Block 0014 [122]: 715791caef2d1725 +Block 0014 [123]: e19080e37dedbba4 +Block 0014 [124]: faef540798e35c43 +Block 0014 [125]: 4ab3f59b7018e628 +Block 0014 [126]: 054b4d0e9c328acf +Block 0014 [127]: 61b4b091403df82c +Block 0015 [ 0]: 779fdc9d92242706 +Block 0015 [ 1]: 9a258d936a6fad08 +Block 0015 [ 2]: 6c393c4981d158b7 +Block 0015 [ 3]: c15ab151d5d4c946 +Block 0015 [ 4]: 4a202feb1c0ccf11 +Block 0015 [ 5]: dd2665b2c7d60c1c +Block 0015 [ 6]: 3d4ccf48ef10e923 +Block 0015 [ 7]: 9c5a9c7cbf6e3401 +Block 0015 [ 8]: 65ce6f9d46877ee2 +Block 0015 [ 9]: 81f60dd9637a027c +Block 0015 [ 10]: 26028b3cbb08ed0b +Block 0015 [ 11]: 14eba36c0d9d3afc +Block 0015 [ 12]: c17a2d030b8b69ba +Block 0015 [ 13]: b7e3fcba56fd92b4 +Block 0015 [ 14]: 55590ed2d6873531 +Block 0015 [ 15]: 1dd55802c3af0284 +Block 0015 [ 16]: 627b98d51e7d1a7c +Block 0015 [ 17]: e29afac9fbac4919 +Block 0015 [ 18]: bbf2da6ff5909bb1 +Block 0015 [ 19]: 3b32e7edbe95f4b8 +Block 0015 [ 20]: cb079b6aab21f5f6 +Block 0015 [ 21]: 249766d55216f91b +Block 0015 [ 22]: 73f12b90f2141fb4 +Block 0015 [ 23]: 9bce2173ff2c4648 +Block 0015 [ 24]: b8c9fc1983ce5225 +Block 0015 [ 25]: 518bd4b370df77d1 +Block 0015 [ 26]: fe3ef246f24fbe85 +Block 0015 [ 27]: 2a55a2c25d1e8092 +Block 0015 [ 28]: 3175467c6b826aad +Block 0015 [ 29]: 542eecc9f9329ddc +Block 0015 [ 30]: 6d578ceeffd6443f +Block 0015 [ 31]: 36957998d6304ca0 +Block 0015 [ 32]: f38e5b60db371ba3 +Block 0015 [ 33]: adcd63e573d6d1d6 +Block 0015 [ 34]: e0b3241d8998c718 +Block 0015 [ 35]: e975d85c9ed509b1 +Block 0015 [ 36]: 43400dc263942f07 +Block 0015 [ 37]: bbd70c7d2d975ff6 +Block 0015 [ 38]: 08f6a406873f1c3d +Block 0015 [ 39]: 2c2c43a20f7094b8 +Block 0015 [ 40]: 2fc707898b9c426e +Block 0015 [ 41]: cc26a970aeb682f6 +Block 0015 [ 42]: 3200da0a96adedf8 +Block 0015 [ 43]: 10472bb55cef7373 +Block 0015 [ 44]: 7a434a0b29b2840f +Block 0015 [ 45]: f4cbd065866cd338 +Block 0015 [ 46]: 6d4a6cec78e4060e +Block 0015 [ 47]: d2cb64f0f26bd67c +Block 0015 [ 48]: 61944777d05d951e +Block 0015 [ 49]: f26d818850c7677c +Block 0015 [ 50]: 40d774d58b5bd2bd +Block 0015 [ 51]: 06de2e113d247652 +Block 0015 [ 52]: d65d143565d2a655 +Block 0015 [ 53]: 415bf9a3fbcd058c +Block 0015 [ 54]: c7c8463a62c2f5c1 +Block 0015 [ 55]: 1f28341958af298b +Block 0015 [ 56]: 815d6569ad4d8ad3 +Block 0015 [ 57]: 65572ea3e5ad177d +Block 0015 [ 58]: cd2e5a09bec730bf +Block 0015 [ 59]: c34b3aa86255aba8 +Block 0015 [ 60]: 6562cf377b9a4afb +Block 0015 [ 61]: 4617ea9bbd4958fa +Block 0015 [ 62]: 2495d4cbf49e49de +Block 0015 [ 63]: 630506139887c342 +Block 0015 [ 64]: 7625ad38357a61d2 +Block 0015 [ 65]: bb8190ead706d07e +Block 0015 [ 66]: 9bdc83c71765309e +Block 0015 [ 67]: a7d137f733a27b67 +Block 0015 [ 68]: 54fafb19769caaa1 +Block 0015 [ 69]: c19c792f768ca925 +Block 0015 [ 70]: d8bea44c81c7658f +Block 0015 [ 71]: a6eb6215c6a59748 +Block 0015 [ 72]: fd15d732c1b31ebf +Block 0015 [ 73]: dfdb5b469b911033 +Block 0015 [ 74]: c66c55a55b87dd6a +Block 0015 [ 75]: e0d409cd710f43c1 +Block 0015 [ 76]: c4b643585e9e14f2 +Block 0015 [ 77]: 30265a5a01666abe +Block 0015 [ 78]: b822366f9b7f61fd +Block 0015 [ 79]: 5f6805b698a28154 +Block 0015 [ 80]: a5097b0cb31eff3e +Block 0015 [ 81]: 1dd47a154c05ea75 +Block 0015 [ 82]: 36d0a7a0a3ebe6de +Block 0015 [ 83]: ceae8ceb45cba297 +Block 0015 [ 84]: 1bace6b5856e12c9 +Block 0015 [ 85]: 36c73df6ddf75167 +Block 0015 [ 86]: f7d174736c6e676a +Block 0015 [ 87]: e60790c5d7e71a98 +Block 0015 [ 88]: dfe970afb98d7efe +Block 0015 [ 89]: 11192bffd60dc4ab +Block 0015 [ 90]: 7779c3b5819f97bf +Block 0015 [ 91]: 5cb53f840af6bdcd +Block 0015 [ 92]: 44ae27f6098c1f9e +Block 0015 [ 93]: 62835545eee575fd +Block 0015 [ 94]: 68fc7b52043d33a3 +Block 0015 [ 95]: 6212f393295bf32b +Block 0015 [ 96]: 956cf671200d8e76 +Block 0015 [ 97]: d535cf9a699971a6 +Block 0015 [ 98]: 6ea0dd8db2cd5795 +Block 0015 [ 99]: be774dbb1d3f838b +Block 0015 [100]: 603318927cc24df5 +Block 0015 [101]: 4306aeba83fa65c2 +Block 0015 [102]: 971f4603b634e6a4 +Block 0015 [103]: 08df12318be15bd4 +Block 0015 [104]: 78c916bc9c8af835 +Block 0015 [105]: 7a79893be28af6e3 +Block 0015 [106]: aa1565cf39e71f57 +Block 0015 [107]: a2518fef8f40884a +Block 0015 [108]: 4f50a2512b883063 +Block 0015 [109]: 224db521097e45b0 +Block 0015 [110]: ad2090c5df88b115 +Block 0015 [111]: 914c7ae4bb49a7ad +Block 0015 [112]: 13afbd9f5140d4a8 +Block 0015 [113]: e67f553ff5c7ffe6 +Block 0015 [114]: e0ea9cb29843527d +Block 0015 [115]: 4bcbc626e3ce3149 +Block 0015 [116]: 79e87f100ff4065e +Block 0015 [117]: 8091cbbfedea39a7 +Block 0015 [118]: 1ca3fa2f4899954c +Block 0015 [119]: aab5b8c150686443 +Block 0015 [120]: 64b7688a862fd4da +Block 0015 [121]: b6eb832a658ebd2a +Block 0015 [122]: 17979d3dcb358c74 +Block 0015 [123]: 6c7321e6ad62d763 +Block 0015 [124]: 454a5b778dad5e71 +Block 0015 [125]: 06f95cb760f63eac +Block 0015 [126]: cc520a4b29a88c88 +Block 0015 [127]: fe4b8f09014dff9f +Block 0016 [ 0]: 6b6b8299b7544ec8 +Block 0016 [ 1]: 2dbb57599a674be3 +Block 0016 [ 2]: 159b18bbb6ecc6a3 +Block 0016 [ 3]: 660a4a24394333c7 +Block 0016 [ 4]: d4601f439a2be46c +Block 0016 [ 5]: ecd216468c5463eb +Block 0016 [ 6]: fd9ce03453659fb6 +Block 0016 [ 7]: 78df3460997ba0e5 +Block 0016 [ 8]: b4c5d2709bb12a53 +Block 0016 [ 9]: 828fdfaeed6df627 +Block 0016 [ 10]: 09f6b577c2837324 +Block 0016 [ 11]: c66268994523b9bc +Block 0016 [ 12]: ccf7c3dc16831a70 +Block 0016 [ 13]: 209e46cce63b0dd5 +Block 0016 [ 14]: 22d9cfc02bab8310 +Block 0016 [ 15]: 731881b7af38c587 +Block 0016 [ 16]: fd47a81306380ccd +Block 0016 [ 17]: 0c0b9997a6796403 +Block 0016 [ 18]: 7c6cb0650780c844 +Block 0016 [ 19]: 4bc29837890a4f0f +Block 0016 [ 20]: 16b02858d67a4009 +Block 0016 [ 21]: a3794b3d0ee899af +Block 0016 [ 22]: 8564e1126ff91d30 +Block 0016 [ 23]: 09a4d961e7f0607e +Block 0016 [ 24]: 7d12bc7afbdfe937 +Block 0016 [ 25]: dbbf0fb80558efa3 +Block 0016 [ 26]: 3c73c66093bef941 +Block 0016 [ 27]: 6ee549f6c199bca2 +Block 0016 [ 28]: 5ac1d438db0194d6 +Block 0016 [ 29]: 7d2ed2b822df8076 +Block 0016 [ 30]: 7926528f7a19cf79 +Block 0016 [ 31]: 77ab595784cf2d3e +Block 0016 [ 32]: 74508b5b98db1802 +Block 0016 [ 33]: 5ad6e824297985d3 +Block 0016 [ 34]: a68a904fe8e766b9 +Block 0016 [ 35]: 2bc4f691c9348864 +Block 0016 [ 36]: 35223aef0a5cc8f2 +Block 0016 [ 37]: 3555eead6e8818fc +Block 0016 [ 38]: d842744228cb5744 +Block 0016 [ 39]: b4ab1d1a94e7f2f3 +Block 0016 [ 40]: 9a91ba199294fcb2 +Block 0016 [ 41]: b5cebefdf0f53e3b +Block 0016 [ 42]: b922a39e9ebbb6f2 +Block 0016 [ 43]: 017622ef687cf8c8 +Block 0016 [ 44]: e1946a2b6dd4a289 +Block 0016 [ 45]: 89f5ecc8a5bc50c2 +Block 0016 [ 46]: 5e44eabe9a78220f +Block 0016 [ 47]: af7dad98882c8ea5 +Block 0016 [ 48]: cded7b67851ac70a +Block 0016 [ 49]: 8f0a5d94c2bf7581 +Block 0016 [ 50]: cf759794cf82f5c4 +Block 0016 [ 51]: 52ec8b0b7930341b +Block 0016 [ 52]: b7f5f830b5041631 +Block 0016 [ 53]: 40557ff24816836b +Block 0016 [ 54]: 4924cc34b3c38777 +Block 0016 [ 55]: fb183663b0910a7a +Block 0016 [ 56]: 5688b0ed5a3694c5 +Block 0016 [ 57]: 4e6b6866ff7be69f +Block 0016 [ 58]: a5bbdda0972ef80b +Block 0016 [ 59]: 7f9602dc2786130b +Block 0016 [ 60]: 6f90952e6fd32e9e +Block 0016 [ 61]: 2976c5d47709830a +Block 0016 [ 62]: 369242fc7db856c6 +Block 0016 [ 63]: badcb263ff876336 +Block 0016 [ 64]: 5e1ae252cf7c660a +Block 0016 [ 65]: a6659303195743dc +Block 0016 [ 66]: 856f50f369e04d85 +Block 0016 [ 67]: b87f07258403769a +Block 0016 [ 68]: 33992b9b25d692bd +Block 0016 [ 69]: 4a0b5d6218a41006 +Block 0016 [ 70]: 3c37317fe37662bf +Block 0016 [ 71]: 1baba6fed257c4c8 +Block 0016 [ 72]: f0cd28f6bb911cf8 +Block 0016 [ 73]: e5761b0cc3f4a001 +Block 0016 [ 74]: 768b71c52a70eab0 +Block 0016 [ 75]: 7db5ed7f4c1ef039 +Block 0016 [ 76]: 78d38d1a4d9f6010 +Block 0016 [ 77]: 42149147a519d29f +Block 0016 [ 78]: 10274d8b80ef4a84 +Block 0016 [ 79]: 1bcb4169f9f5eca5 +Block 0016 [ 80]: 8080874425722c0f +Block 0016 [ 81]: d30f56e184749fbf +Block 0016 [ 82]: 13c9ec5c3d4211f5 +Block 0016 [ 83]: 336b9f7a4e19b359 +Block 0016 [ 84]: d117bda81fcf17ab +Block 0016 [ 85]: 55857cb4924b5bb5 +Block 0016 [ 86]: 7b00db4bcf2ace67 +Block 0016 [ 87]: efa6e895257c9dd7 +Block 0016 [ 88]: 5139fb4c4b935b24 +Block 0016 [ 89]: 2feaf6f70f9fc604 +Block 0016 [ 90]: ee9c2dd9c238232a +Block 0016 [ 91]: a85201b5e8ef1918 +Block 0016 [ 92]: b05201dfaf17a564 +Block 0016 [ 93]: 878cc2037453c301 +Block 0016 [ 94]: 98ecda8b2afe34e5 +Block 0016 [ 95]: 6262816e83d8dc79 +Block 0016 [ 96]: 7d77e2bceb694e30 +Block 0016 [ 97]: ad3b4a848289b4ab +Block 0016 [ 98]: 712fd94ed41ce643 +Block 0016 [ 99]: 35297c592ee58baf +Block 0016 [100]: d36c6b3c14a64c28 +Block 0016 [101]: e95d95c3720d633f +Block 0016 [102]: 89b8341d64e6cc30 +Block 0016 [103]: 628d4402248e242d +Block 0016 [104]: cf352f1abb75d74b +Block 0016 [105]: 111c71103148d99e +Block 0016 [106]: 0ae63ebb34a344f1 +Block 0016 [107]: 14aaed20bd8b8291 +Block 0016 [108]: aab94fc361a452b7 +Block 0016 [109]: f331f918ab5ee676 +Block 0016 [110]: 4b642391284c6ed8 +Block 0016 [111]: 42e1197aee18fb4f +Block 0016 [112]: 976b5714f428a15b +Block 0016 [113]: c520ddb7da18def8 +Block 0016 [114]: 07f7f2acea09e1d8 +Block 0016 [115]: fb2d08080e33afbb +Block 0016 [116]: cf65922568a8119a +Block 0016 [117]: 4eb17eca9ba107d0 +Block 0016 [118]: b0375b3187f0a9b0 +Block 0016 [119]: 6c7041bef30e3b40 +Block 0016 [120]: 308f7fd4baf2a106 +Block 0016 [121]: 51d5c01ce50b57df +Block 0016 [122]: 2d9965e67ef469e8 +Block 0016 [123]: 50bca96e25dc1e94 +Block 0016 [124]: fc66e8f3903164ee +Block 0016 [125]: f2c7dcf89787e187 +Block 0016 [126]: 663bba6642f4329a +Block 0016 [127]: d3c267a2da821e5a +Block 0017 [ 0]: fcfdc3df1c946197 +Block 0017 [ 1]: 6d3a7f8b138b68b7 +Block 0017 [ 2]: e8c5fd655d0f8fb7 +Block 0017 [ 3]: 0240b93cca7ec55f +Block 0017 [ 4]: e78c58c267172d23 +Block 0017 [ 5]: 3fe304db80db7083 +Block 0017 [ 6]: fa3860b74b1868e9 +Block 0017 [ 7]: 0d784d59a6fa4f0e +Block 0017 [ 8]: c1e151c95455076a +Block 0017 [ 9]: 5feb20e609a58be8 +Block 0017 [ 10]: 8093301a607a4b84 +Block 0017 [ 11]: 1667dae45ba06926 +Block 0017 [ 12]: b416d57b17811d86 +Block 0017 [ 13]: acbce71ff949098d +Block 0017 [ 14]: 77a0cd27521206f2 +Block 0017 [ 15]: e5a9f80eda0e2d6c +Block 0017 [ 16]: b4d7a75fee54f8e5 +Block 0017 [ 17]: fe86b8dcca89692d +Block 0017 [ 18]: 8361819f8e48814b +Block 0017 [ 19]: 996dcd01c5ddea4e +Block 0017 [ 20]: 8fd62784132a601a +Block 0017 [ 21]: 38ba7e7ac1c175ed +Block 0017 [ 22]: dfb306c54cf71426 +Block 0017 [ 23]: 00967a5af80d646c +Block 0017 [ 24]: a255c76fea4d0609 +Block 0017 [ 25]: 462b07780caa6d81 +Block 0017 [ 26]: 84b08d3b74ff87ca +Block 0017 [ 27]: d0562df36fd7c6d2 +Block 0017 [ 28]: 6d1a47eed84ddb02 +Block 0017 [ 29]: 6238a05d0116d9a2 +Block 0017 [ 30]: 6d29b2173a807c05 +Block 0017 [ 31]: fd87f368e8965a70 +Block 0017 [ 32]: 90f3e8279034ac89 +Block 0017 [ 33]: 8497a7b5e99eae27 +Block 0017 [ 34]: ae40662b4abc0132 +Block 0017 [ 35]: 6885d2f92cacfebe +Block 0017 [ 36]: d86eac1dba8b2822 +Block 0017 [ 37]: 64da53ae09100afd +Block 0017 [ 38]: 671f21aac24550f9 +Block 0017 [ 39]: 27258e7d1f12748a +Block 0017 [ 40]: 64bcd532eca9903c +Block 0017 [ 41]: c43d4f5d599a450e +Block 0017 [ 42]: b4e2b1ffaee50dba +Block 0017 [ 43]: 190338b27bfca99f +Block 0017 [ 44]: 64528d8b69004613 +Block 0017 [ 45]: d48293de39ac0e6e +Block 0017 [ 46]: 25c238dde29f05a0 +Block 0017 [ 47]: ccddfeea898b0b31 +Block 0017 [ 48]: ea1c6839dd274cdf +Block 0017 [ 49]: 2fa7e6ddccc9c005 +Block 0017 [ 50]: 7d2d05e2d93e6e37 +Block 0017 [ 51]: 2f0ffc8c74ed3fc6 +Block 0017 [ 52]: 996c6e452180fa46 +Block 0017 [ 53]: e877e033c2758860 +Block 0017 [ 54]: 6bfd51bac35e1dc4 +Block 0017 [ 55]: a06551f72fe3a0e7 +Block 0017 [ 56]: cfbfb75ea65b4774 +Block 0017 [ 57]: daa545f34527a9f1 +Block 0017 [ 58]: a56f2c7bb59fd56a +Block 0017 [ 59]: 0865420cffd781c2 +Block 0017 [ 60]: cd0d74d18e97ef59 +Block 0017 [ 61]: 2d1b5a4a080a4a04 +Block 0017 [ 62]: 0323cb2335ad4259 +Block 0017 [ 63]: cfe0ef15e403e696 +Block 0017 [ 64]: cda2bf85e5c1d3c3 +Block 0017 [ 65]: e35648924e2e166e +Block 0017 [ 66]: c18265bbb84c09ea +Block 0017 [ 67]: 26fbc2832f7742a7 +Block 0017 [ 68]: fc91a5047cbe7065 +Block 0017 [ 69]: 06ac77aba6a36972 +Block 0017 [ 70]: a54b48b2c521529c +Block 0017 [ 71]: bff56e3103927512 +Block 0017 [ 72]: aa56df749934c277 +Block 0017 [ 73]: e4cbc3eb16580852 +Block 0017 [ 74]: 605985b507b8a17c +Block 0017 [ 75]: 5b49a190ef882cde +Block 0017 [ 76]: 9556eedf7b110989 +Block 0017 [ 77]: 5a837ddf8991603d +Block 0017 [ 78]: 62f928de75fbb9e2 +Block 0017 [ 79]: 87ccfff3728e7e4f +Block 0017 [ 80]: cd0081aa3eef7d91 +Block 0017 [ 81]: 3e1f7753627235c2 +Block 0017 [ 82]: ee7eead4d40598d4 +Block 0017 [ 83]: fd2ad86ece0e4d93 +Block 0017 [ 84]: 7511e10b5b4abe92 +Block 0017 [ 85]: 7cc7b0493ce49e28 +Block 0017 [ 86]: 9b0caf208e867909 +Block 0017 [ 87]: ec70b4e586a3dce4 +Block 0017 [ 88]: 7461b2471fde9e63 +Block 0017 [ 89]: 52dc1872c33e2273 +Block 0017 [ 90]: 5a793766c52e8c82 +Block 0017 [ 91]: f42cf278970327f5 +Block 0017 [ 92]: beb03ae0d86eb797 +Block 0017 [ 93]: e4e73466fb304d15 +Block 0017 [ 94]: e9658ed6be6f6081 +Block 0017 [ 95]: e12fa6cca1cc02fd +Block 0017 [ 96]: 9f57cae8c852f2d1 +Block 0017 [ 97]: 123c5896fa6814db +Block 0017 [ 98]: b0c9148dfbed76a2 +Block 0017 [ 99]: 46410406d1af9473 +Block 0017 [100]: fae3e7941e5beb9f +Block 0017 [101]: edb066d11372355f +Block 0017 [102]: 6a6cb2ce8df9fa25 +Block 0017 [103]: 283e06e02cee0bc6 +Block 0017 [104]: d7105a3c22517163 +Block 0017 [105]: 911a160616853a57 +Block 0017 [106]: 5989406740b373cb +Block 0017 [107]: 4c9483a19b057503 +Block 0017 [108]: ebb7b709242d8fac +Block 0017 [109]: c0a6f69ce7099f04 +Block 0017 [110]: 191a7a033cb52c1b +Block 0017 [111]: 91f9b8e107f40569 +Block 0017 [112]: 9f1b4416b2b3e3bb +Block 0017 [113]: 79cad712977dc9a5 +Block 0017 [114]: b073ef8ce6768e7c +Block 0017 [115]: 45ec92a6d569c94f +Block 0017 [116]: faf83f399b5188cf +Block 0017 [117]: d67394ddcc90be8b +Block 0017 [118]: 4a0ccd308297588e +Block 0017 [119]: 65afc3485290a1ae +Block 0017 [120]: 875bf5efb8c4135b +Block 0017 [121]: 0325974e7c089ce9 +Block 0017 [122]: 833655a2a7093406 +Block 0017 [123]: 60e8577d82cdfcfc +Block 0017 [124]: 4047226b5fea5e12 +Block 0017 [125]: e4f2c4185dce67dc +Block 0017 [126]: 8dc296b99cd157ed +Block 0017 [127]: d06c5a12cc83f875 +Block 0018 [ 0]: 506b9dff8f66dfc9 +Block 0018 [ 1]: 77ebc8f2b790b075 +Block 0018 [ 2]: 5f6b43fa7674a697 +Block 0018 [ 3]: 2c5180ec36e6e9f9 +Block 0018 [ 4]: eea72969852a0b14 +Block 0018 [ 5]: 5b9ba92ef08a91ca +Block 0018 [ 6]: e44afbd53674fa86 +Block 0018 [ 7]: c751b97cd72874d0 +Block 0018 [ 8]: 98e2cfceaaf5b987 +Block 0018 [ 9]: 59e7c20104d52b86 +Block 0018 [ 10]: fe9783d8f50e8564 +Block 0018 [ 11]: ec2ff6e16517d28c +Block 0018 [ 12]: 2ccc3bad6621a17d +Block 0018 [ 13]: a177b2be6b2fecdb +Block 0018 [ 14]: 703922963cc27392 +Block 0018 [ 15]: 466f05721fe0afb5 +Block 0018 [ 16]: 66aaeb6b2b42733b +Block 0018 [ 17]: ba33703147105331 +Block 0018 [ 18]: 67946b26659261f0 +Block 0018 [ 19]: 82e8278754222efb +Block 0018 [ 20]: e508acd54b0b5386 +Block 0018 [ 21]: 835d1e501fa5c24b +Block 0018 [ 22]: fb337e256303eeb5 +Block 0018 [ 23]: 01a9432585bbcb92 +Block 0018 [ 24]: e714b55e218ec12b +Block 0018 [ 25]: 26f6d3b38162143f +Block 0018 [ 26]: 52c4b662a35d8518 +Block 0018 [ 27]: e591f3bd01a0f260 +Block 0018 [ 28]: be97dfe523580591 +Block 0018 [ 29]: e87de0ecafea4e2b +Block 0018 [ 30]: 8c50573e84c5dbac +Block 0018 [ 31]: a104c4fa704fef54 +Block 0018 [ 32]: b31e99ab31889f9b +Block 0018 [ 33]: 2a5bae12c632ed66 +Block 0018 [ 34]: 3131689530cb91f8 +Block 0018 [ 35]: 86ecc03640aec2f2 +Block 0018 [ 36]: 360d5c87abde1d98 +Block 0018 [ 37]: 87628cc7a9c7e439 +Block 0018 [ 38]: bdec97daaf4fbed1 +Block 0018 [ 39]: cb135fa0dd1401b6 +Block 0018 [ 40]: 5d3498e58bd5cdaf +Block 0018 [ 41]: b21a2e740b18d3f3 +Block 0018 [ 42]: 04a56c431529e670 +Block 0018 [ 43]: 6dfc2e1b8a624915 +Block 0018 [ 44]: 4807e0a62fa02d8f +Block 0018 [ 45]: 045d5ee489190cbf +Block 0018 [ 46]: de6f7133d497b091 +Block 0018 [ 47]: 0d29ac253d7cf301 +Block 0018 [ 48]: 5d017136a4bf6d4b +Block 0018 [ 49]: 273bea5c28ef2afa +Block 0018 [ 50]: aa3380fd789085b7 +Block 0018 [ 51]: 06184d12fb6e646f +Block 0018 [ 52]: 9e8e7be60ce7be29 +Block 0018 [ 53]: da4b77cac5e3a44a +Block 0018 [ 54]: f18f7d0282e3ff2f +Block 0018 [ 55]: ffdf17f661f5a782 +Block 0018 [ 56]: baee89cd6027332d +Block 0018 [ 57]: e750340705b997f0 +Block 0018 [ 58]: 8d6d0c0638a27b0d +Block 0018 [ 59]: 8370de31338de210 +Block 0018 [ 60]: d19afe6daf1f6c6a +Block 0018 [ 61]: 6ca9730711d17695 +Block 0018 [ 62]: 28b287d8094da73d +Block 0018 [ 63]: d53cfc855e567583 +Block 0018 [ 64]: 0528fa8214051972 +Block 0018 [ 65]: e4326c77e19bc8e3 +Block 0018 [ 66]: 566e44790f3ff080 +Block 0018 [ 67]: 7a5fecedb6ac443e +Block 0018 [ 68]: f8d783bf81737ea2 +Block 0018 [ 69]: f328ef1493e09ad4 +Block 0018 [ 70]: 014d01edb2f1fec2 +Block 0018 [ 71]: 56090da3432688f0 +Block 0018 [ 72]: 756a65d5d144e7ab +Block 0018 [ 73]: b0387d690442e8ca +Block 0018 [ 74]: bcdc99a6c9701d94 +Block 0018 [ 75]: eb07a08cbfa32e3d +Block 0018 [ 76]: bea66981aba9da32 +Block 0018 [ 77]: 53437e3ee89e8180 +Block 0018 [ 78]: 1216da56618bf2a0 +Block 0018 [ 79]: 02dcbade81e80fef +Block 0018 [ 80]: fa9c42aa06f8dc27 +Block 0018 [ 81]: 143b6085501c079b +Block 0018 [ 82]: 3a7d6e1fbe910f7b +Block 0018 [ 83]: 84c10aa8f298dff1 +Block 0018 [ 84]: 6e7b1471d59c528b +Block 0018 [ 85]: bef312137a52bb94 +Block 0018 [ 86]: ef0fd8e81e404951 +Block 0018 [ 87]: 09d61611c24f84bf +Block 0018 [ 88]: f4bc2dc495584550 +Block 0018 [ 89]: eca233aae56be950 +Block 0018 [ 90]: 7c99caec1b8fbdfb +Block 0018 [ 91]: 28fe5488cc443c00 +Block 0018 [ 92]: f6987d2cb9da913e +Block 0018 [ 93]: 182e7544698569a9 +Block 0018 [ 94]: 80dbf54b72f5becb +Block 0018 [ 95]: 79a6c4c1318f7efb +Block 0018 [ 96]: 1dbff052ca33d753 +Block 0018 [ 97]: 4882194ca6f60741 +Block 0018 [ 98]: 770609181b43290f +Block 0018 [ 99]: fc262452312f6f79 +Block 0018 [100]: a4bcf7f51f733216 +Block 0018 [101]: c0ce7300a630e981 +Block 0018 [102]: f70d856b7f98cb0b +Block 0018 [103]: d287a4e4efc61485 +Block 0018 [104]: ad1be4004f9b4d90 +Block 0018 [105]: cafbf67a7a6c972f +Block 0018 [106]: 348471e3fe197c24 +Block 0018 [107]: ff5e95a969c83de6 +Block 0018 [108]: 409e12a717ca4b5a +Block 0018 [109]: 44cba534a035fbe9 +Block 0018 [110]: e97071f5b82453bc +Block 0018 [111]: b81fffd5e3411461 +Block 0018 [112]: fc18781ee372ab3f +Block 0018 [113]: b0693a61adddcbbd +Block 0018 [114]: 195c25844390b153 +Block 0018 [115]: 8f3e3ca6db496b51 +Block 0018 [116]: 69e2431f8f101f99 +Block 0018 [117]: 9228889034350cca +Block 0018 [118]: ebb7804d727feb62 +Block 0018 [119]: 498247e41ed29b72 +Block 0018 [120]: 32a24f0ac18beca9 +Block 0018 [121]: 09a432090643383b +Block 0018 [122]: 53e59d3caece1007 +Block 0018 [123]: 7b921f24930ac8dc +Block 0018 [124]: 17429db79612b532 +Block 0018 [125]: 32e4ccf3a816a341 +Block 0018 [126]: 53b02b523e641324 +Block 0018 [127]: 0929ccfcd333ef75 +Block 0019 [ 0]: 33e8d34b96a01194 +Block 0019 [ 1]: 456c32397eb0894c +Block 0019 [ 2]: 65f01bdf2b710523 +Block 0019 [ 3]: 1dc93d65920c5bab +Block 0019 [ 4]: 42c36f92c0ffd279 +Block 0019 [ 5]: a10d02d32c435128 +Block 0019 [ 6]: daa8fd35e22e7b0d +Block 0019 [ 7]: b3ef2ff8a04c3286 +Block 0019 [ 8]: 49496b0690707e8c +Block 0019 [ 9]: 8cae1bddf0b87419 +Block 0019 [ 10]: 34af6f0f333b6a73 +Block 0019 [ 11]: 9bc57b3ca9ad1aae +Block 0019 [ 12]: 4a84296458f08564 +Block 0019 [ 13]: 0382cdf60c0d61e6 +Block 0019 [ 14]: 383ffd993ca3a949 +Block 0019 [ 15]: d63f97665f89336b +Block 0019 [ 16]: 7770de57cc5c502d +Block 0019 [ 17]: 463aa97d108ea115 +Block 0019 [ 18]: 207e1c3c04d2f1c5 +Block 0019 [ 19]: 044e34d20ee5533d +Block 0019 [ 20]: 2d97f42d289e2be7 +Block 0019 [ 21]: 4c9ffb0c99dbd232 +Block 0019 [ 22]: 360d6c2d9242376b +Block 0019 [ 23]: d1a2d9f5c38b2196 +Block 0019 [ 24]: d59b5ecb66fa715d +Block 0019 [ 25]: d891f9b36c4cd181 +Block 0019 [ 26]: 9233c0d197b1e01b +Block 0019 [ 27]: 880e6ab061a568bf +Block 0019 [ 28]: 751bf0b45c77097c +Block 0019 [ 29]: f5efc6d5aed55271 +Block 0019 [ 30]: afef1f697de4cc72 +Block 0019 [ 31]: 47bc3efeacfb1d8d +Block 0019 [ 32]: 452c5045d2f478ab +Block 0019 [ 33]: ef0e422a51a4df0a +Block 0019 [ 34]: d5820f7da222bf7c +Block 0019 [ 35]: 1a33e2dbc09e14b8 +Block 0019 [ 36]: 182abf3da51c3790 +Block 0019 [ 37]: eb43140f75787e50 +Block 0019 [ 38]: 83ee465fb1646fd7 +Block 0019 [ 39]: b0974362ea612ca8 +Block 0019 [ 40]: 6ecf1aed4945275b +Block 0019 [ 41]: b2b61e5feffc7da5 +Block 0019 [ 42]: 256afa7a9e79a9e7 +Block 0019 [ 43]: b8700d5519ea31b9 +Block 0019 [ 44]: f9705c5c75795590 +Block 0019 [ 45]: c985bdee35ef9975 +Block 0019 [ 46]: 2704e5851930ef96 +Block 0019 [ 47]: 1a0fab98a8eeb146 +Block 0019 [ 48]: 2b3f8e80c613ab04 +Block 0019 [ 49]: 50eb91eab2776883 +Block 0019 [ 50]: 5e84a7b8972ac0b9 +Block 0019 [ 51]: 912f4062a68db567 +Block 0019 [ 52]: 18d2895a53a5921a +Block 0019 [ 53]: 72b6255c917acc9d +Block 0019 [ 54]: ca6cbff869322dd0 +Block 0019 [ 55]: eef952be691a20f5 +Block 0019 [ 56]: 6f705f130dfb1557 +Block 0019 [ 57]: bf412cc1f48530d8 +Block 0019 [ 58]: 058cc43ca302c665 +Block 0019 [ 59]: 632f5f954bc426bc +Block 0019 [ 60]: 216b8ee983257087 +Block 0019 [ 61]: 729d14711002bfba +Block 0019 [ 62]: 8cb7a6c5b30b023f +Block 0019 [ 63]: eb895614190db8e6 +Block 0019 [ 64]: 00f6b51593d0001c +Block 0019 [ 65]: c9c6c2f0de55bd01 +Block 0019 [ 66]: 90930dbe0fd64cb7 +Block 0019 [ 67]: 23259875ae38f2cf +Block 0019 [ 68]: 0ba1b821cbdaf400 +Block 0019 [ 69]: 512916bec94d30f5 +Block 0019 [ 70]: 4cbe59d184551f56 +Block 0019 [ 71]: 1b4758db954f1af2 +Block 0019 [ 72]: 428689d6d6e69a0e +Block 0019 [ 73]: 52551a4b2d531690 +Block 0019 [ 74]: 6f77b382d7139995 +Block 0019 [ 75]: d56cc7dc1d2a8ebe +Block 0019 [ 76]: d188bc8c7e0976b6 +Block 0019 [ 77]: 04d67c02573fe79b +Block 0019 [ 78]: 8b87e81756afe094 +Block 0019 [ 79]: 6406121e3bce2c3a +Block 0019 [ 80]: d23e625bbb09019c +Block 0019 [ 81]: 1bee10418eb08329 +Block 0019 [ 82]: 7be1dc14844c01e7 +Block 0019 [ 83]: 91962c941bd83082 +Block 0019 [ 84]: 640a363630d4772b +Block 0019 [ 85]: f63c927e04a4ba60 +Block 0019 [ 86]: eb69466de921d59c +Block 0019 [ 87]: ed7b4721c81f09e2 +Block 0019 [ 88]: c80be87f1549bd5f +Block 0019 [ 89]: a14a421ac5647f3b +Block 0019 [ 90]: 0b5a9db32d7fe7b1 +Block 0019 [ 91]: c00d02fa54401973 +Block 0019 [ 92]: 6c39bdb781e2a2fb +Block 0019 [ 93]: 36cec55cd30d0f07 +Block 0019 [ 94]: 2cf36013bcd3c69c +Block 0019 [ 95]: 5e4f2edb6657692c +Block 0019 [ 96]: 091ea4bc2a7b809b +Block 0019 [ 97]: f3cb77b9e1af72d1 +Block 0019 [ 98]: ee5ff9dc0fd47a05 +Block 0019 [ 99]: dfcd6c3dc2bfcc56 +Block 0019 [100]: f144bf7c7971f6cb +Block 0019 [101]: c3bc32b647c6116b +Block 0019 [102]: da51fbd339bb8629 +Block 0019 [103]: e0f5104e1e073f52 +Block 0019 [104]: 80eabe1f52fac945 +Block 0019 [105]: b3e50ec9dd215058 +Block 0019 [106]: 841fb9a746f218b5 +Block 0019 [107]: 97b5ab9e6340c839 +Block 0019 [108]: 0f58c48d1c8dfc7d +Block 0019 [109]: e775d0923861572f +Block 0019 [110]: f6a445b60873fd29 +Block 0019 [111]: 321d5c299f3a792a +Block 0019 [112]: 167f87905283f049 +Block 0019 [113]: d3a020474f4fb545 +Block 0019 [114]: bab29108eb5c88d3 +Block 0019 [115]: 3a20e0370a1b8925 +Block 0019 [116]: 798fe12f9b6900aa +Block 0019 [117]: ab6c723abdfce5eb +Block 0019 [118]: 02ca78dfbdd788fb +Block 0019 [119]: 4bb50c93fc01969f +Block 0019 [120]: b2370576435c57b9 +Block 0019 [121]: 487a9abad653352f +Block 0019 [122]: bce2e11433162789 +Block 0019 [123]: 803a8adad602226f +Block 0019 [124]: 4e7fb4ec6b000d6f +Block 0019 [125]: c2fe3f7c260f6f0d +Block 0019 [126]: 21ff5ba529b232ee +Block 0019 [127]: 13400b66c4f76b82 +Block 0020 [ 0]: 89e2081ab56e78b2 +Block 0020 [ 1]: 9d963e394a7fb51b +Block 0020 [ 2]: c70adaee1eea37a9 +Block 0020 [ 3]: 69a9c964557a3b79 +Block 0020 [ 4]: c9f94cb30f3f58e2 +Block 0020 [ 5]: f0b2b2f23b6a6e85 +Block 0020 [ 6]: 42a4ab31999785bd +Block 0020 [ 7]: 8e9c274e43e9b45e +Block 0020 [ 8]: de3e2ceae9a6fe03 +Block 0020 [ 9]: da1b6677984cdfe8 +Block 0020 [ 10]: f48a0d27047fb866 +Block 0020 [ 11]: fc08a550adc9d9de +Block 0020 [ 12]: abf2c0384cbb0323 +Block 0020 [ 13]: 293cd3700767b4be +Block 0020 [ 14]: fc5d6f6596e7c186 +Block 0020 [ 15]: 8803591e7d0dbf4e +Block 0020 [ 16]: f97659a838f29b36 +Block 0020 [ 17]: d972e1b0be0d4aab +Block 0020 [ 18]: 4b2b7dfe0b815a55 +Block 0020 [ 19]: dc27f9ee2b42d875 +Block 0020 [ 20]: b3cba9ebfff5b2c9 +Block 0020 [ 21]: aa62216b5929178e +Block 0020 [ 22]: 84f2c8289ad8f965 +Block 0020 [ 23]: 9e7b7d736f2ac92d +Block 0020 [ 24]: fbefb819d94b2750 +Block 0020 [ 25]: df3f3904db85a3ff +Block 0020 [ 26]: 8016900bfb6445da +Block 0020 [ 27]: c16dece77f8c7e00 +Block 0020 [ 28]: a330a89ec3a5567f +Block 0020 [ 29]: a59a7c9114a83803 +Block 0020 [ 30]: 26fa6bdaca72d62b +Block 0020 [ 31]: ffcedf85d5126dd4 +Block 0020 [ 32]: 1cd608003aeac1e5 +Block 0020 [ 33]: c10289c6d8f9d74e +Block 0020 [ 34]: 554a650031d37d60 +Block 0020 [ 35]: e49707264df0b4b0 +Block 0020 [ 36]: 9c9b855d35883c29 +Block 0020 [ 37]: 7639c20cdf1a73fc +Block 0020 [ 38]: c7b98180b14d8b44 +Block 0020 [ 39]: bcca9a6a5ff0e814 +Block 0020 [ 40]: 934da896cc350c97 +Block 0020 [ 41]: 4a7fd6c54c483639 +Block 0020 [ 42]: 03c35c2d2f3d1bb9 +Block 0020 [ 43]: 91aefa9f69fca3f6 +Block 0020 [ 44]: a6b57e87ac0557bc +Block 0020 [ 45]: c734e8728042bf42 +Block 0020 [ 46]: ce8619b03a4fc81b +Block 0020 [ 47]: 1b2e4653286bd5a2 +Block 0020 [ 48]: 566a7ec3ffc55b63 +Block 0020 [ 49]: 3095290ad086d2ab +Block 0020 [ 50]: b7b900312f0d43ff +Block 0020 [ 51]: 4e59f9f7952cc456 +Block 0020 [ 52]: 2ae68fbd3c6898dd +Block 0020 [ 53]: f61aa0d9522ba762 +Block 0020 [ 54]: 908d6dc5774d9795 +Block 0020 [ 55]: 34a6f69f331e26ec +Block 0020 [ 56]: 1e358c8e233d737a +Block 0020 [ 57]: ef28c27583088746 +Block 0020 [ 58]: 8c0c1c359e4cf564 +Block 0020 [ 59]: e92e6baae855892e +Block 0020 [ 60]: 601707524fce7966 +Block 0020 [ 61]: ef1c20a0839a335f +Block 0020 [ 62]: bfa44ce166bbf8c9 +Block 0020 [ 63]: 75778fd2c93656ef +Block 0020 [ 64]: 4c9a92d24230b4e3 +Block 0020 [ 65]: 7393ba1c3f34f583 +Block 0020 [ 66]: def43e4128851116 +Block 0020 [ 67]: 1d0343325dd9afda +Block 0020 [ 68]: 77a184c56dd2daf1 +Block 0020 [ 69]: fa52d0755ef66fd6 +Block 0020 [ 70]: 19b6bfb6fc17b332 +Block 0020 [ 71]: 6023968314c86cf1 +Block 0020 [ 72]: e6ae971aa6ec62cf +Block 0020 [ 73]: 85c7ad07e1a21687 +Block 0020 [ 74]: 626397687c030509 +Block 0020 [ 75]: 423282a89b49ac4f +Block 0020 [ 76]: e37c8c15c1eaed62 +Block 0020 [ 77]: 3a40363589cb1bcb +Block 0020 [ 78]: 38896537a90b4de3 +Block 0020 [ 79]: a9453dd305d96c0c +Block 0020 [ 80]: e39cae1ab2e1286b +Block 0020 [ 81]: 3841a9433a6efbf3 +Block 0020 [ 82]: 6cc65c960c0d9c45 +Block 0020 [ 83]: 8241839366333155 +Block 0020 [ 84]: 928eff87a269246d +Block 0020 [ 85]: 732878e0f9bad41e +Block 0020 [ 86]: d6a1bfa526acb7a1 +Block 0020 [ 87]: 8ab9f839b3c056b0 +Block 0020 [ 88]: c4e6fbad32d6205d +Block 0020 [ 89]: 92ee8c80415b2c23 +Block 0020 [ 90]: d2298d8920afcf84 +Block 0020 [ 91]: b7663bbf35af559f +Block 0020 [ 92]: 24182e3fb8239f5f +Block 0020 [ 93]: 17b6bbbd54d66105 +Block 0020 [ 94]: d0dc543bd229a489 +Block 0020 [ 95]: a87c8ddf7e5eccc9 +Block 0020 [ 96]: f4ccea782545035d +Block 0020 [ 97]: 31b2c512d0e9b274 +Block 0020 [ 98]: 5ab11954f1112d4a +Block 0020 [ 99]: 36dd53c7b85c3853 +Block 0020 [100]: 0cdf8048a452cd87 +Block 0020 [101]: bcbe5c1dfc5ea36d +Block 0020 [102]: 8ed3c84091965d94 +Block 0020 [103]: 84a7ac74afd99f64 +Block 0020 [104]: cea3b16c8e688a0d +Block 0020 [105]: bab4db3705dc5573 +Block 0020 [106]: 679ba8e94cb1c0ee +Block 0020 [107]: 6ef5f18ba4f0e3ff +Block 0020 [108]: 8c4984673fc2ce2f +Block 0020 [109]: 60530f588bd74c30 +Block 0020 [110]: 48cb0a9a28b64c84 +Block 0020 [111]: 3c10b3d5beb4a79c +Block 0020 [112]: 7ff26d639992cf37 +Block 0020 [113]: 720aec460b083524 +Block 0020 [114]: 1e09d19b0e1a00dd +Block 0020 [115]: 8fe278ba6d1a9b20 +Block 0020 [116]: 68baf4f5d15623aa +Block 0020 [117]: 63bfc00118aad83a +Block 0020 [118]: 9d25e1848491d360 +Block 0020 [119]: 6cb99c493aefb52e +Block 0020 [120]: e2eee4f83fe4f010 +Block 0020 [121]: e5e0cef422585a9f +Block 0020 [122]: a19e517ec6959e25 +Block 0020 [123]: abf4475aa22fc3ce +Block 0020 [124]: bcad2f12feb07911 +Block 0020 [125]: 453c5d52011365de +Block 0020 [126]: 69897cc10d44fcaf +Block 0020 [127]: b95f9117d2fa4bfc +Block 0021 [ 0]: 2e53af0ffcf72453 +Block 0021 [ 1]: f4d2ee09bf6e68fa +Block 0021 [ 2]: 0309586ec4f1b841 +Block 0021 [ 3]: 04a6ee34c1719365 +Block 0021 [ 4]: ad8c7240f5745491 +Block 0021 [ 5]: cfadccd354d621e8 +Block 0021 [ 6]: 1fb50aa51f24373a +Block 0021 [ 7]: a0eaa951533cdbfc +Block 0021 [ 8]: 88e80be14fb09e20 +Block 0021 [ 9]: 5956e4b9a89aec1e +Block 0021 [ 10]: f23b6614d091d565 +Block 0021 [ 11]: a8d6810b1fd7b35b +Block 0021 [ 12]: d48796a1dcb92c52 +Block 0021 [ 13]: 3e38c2720cf8d123 +Block 0021 [ 14]: 497df05177535211 +Block 0021 [ 15]: 6987feb6811a5d13 +Block 0021 [ 16]: 40ffa042f1343f14 +Block 0021 [ 17]: cd8423bb29575e16 +Block 0021 [ 18]: b2f2250cadf6ee42 +Block 0021 [ 19]: cd9436ad7a906a5b +Block 0021 [ 20]: a4caba8291763463 +Block 0021 [ 21]: c0450b96a40e1d6f +Block 0021 [ 22]: 922df81edfc8672c +Block 0021 [ 23]: 19fd391d5149a693 +Block 0021 [ 24]: 274659cf928be9ac +Block 0021 [ 25]: f13f9c76b5e1e8b9 +Block 0021 [ 26]: 462a09302c07589f +Block 0021 [ 27]: 6233cce4bcb9604c +Block 0021 [ 28]: 5ada3f773b0a022e +Block 0021 [ 29]: d9824f52f60414bb +Block 0021 [ 30]: fd7d2b394bc7f935 +Block 0021 [ 31]: c652630acaa12963 +Block 0021 [ 32]: b87a925784883817 +Block 0021 [ 33]: 871730bf13fa35e3 +Block 0021 [ 34]: 75d410f433cf9075 +Block 0021 [ 35]: fc9d0f2388fb0755 +Block 0021 [ 36]: 637c2fbdc29699b3 +Block 0021 [ 37]: dcfc58f0240aab69 +Block 0021 [ 38]: 47f63e317ae148a8 +Block 0021 [ 39]: 6e85d5c81fabb692 +Block 0021 [ 40]: 6bbd7a0d80dceece +Block 0021 [ 41]: 5e8763c6ba1dfb3f +Block 0021 [ 42]: 2b67b9b1ee74cae6 +Block 0021 [ 43]: 44556e23b6a12a9c +Block 0021 [ 44]: da67accd90528c8e +Block 0021 [ 45]: c8d64e5987dbf1b8 +Block 0021 [ 46]: a4d299e996095736 +Block 0021 [ 47]: 45cecf89612ed432 +Block 0021 [ 48]: a9e0104756d4ed0a +Block 0021 [ 49]: 96bd5b592d58f449 +Block 0021 [ 50]: a1d4d76c43899d99 +Block 0021 [ 51]: ac92a47c2c3bb722 +Block 0021 [ 52]: a4b54abd56bef9ac +Block 0021 [ 53]: 145584fd48b6e654 +Block 0021 [ 54]: e2b2b5a236df9e1a +Block 0021 [ 55]: 78f71ca730c345f5 +Block 0021 [ 56]: c6653be2c128b6fc +Block 0021 [ 57]: 2b02761b0c1fa9f0 +Block 0021 [ 58]: d7d0ccaf5b6a4ef1 +Block 0021 [ 59]: 4eddcaf6ae19c5d6 +Block 0021 [ 60]: 986f18a1622df37e +Block 0021 [ 61]: 63fe2eafcfaa88ed +Block 0021 [ 62]: 697bb686eb310b15 +Block 0021 [ 63]: 4d36cbe576e44e76 +Block 0021 [ 64]: ecace5129f458bda +Block 0021 [ 65]: f8111733fa1c8bdb +Block 0021 [ 66]: c1b84cac574f86bb +Block 0021 [ 67]: d3c632fa66f74c20 +Block 0021 [ 68]: 3f443c021f0ccb3d +Block 0021 [ 69]: 68e6932baf806b66 +Block 0021 [ 70]: 58cddbf112d26752 +Block 0021 [ 71]: 540b5a73ebf324de +Block 0021 [ 72]: a6f78cb47fa04966 +Block 0021 [ 73]: 05dbc3e897e88dbb +Block 0021 [ 74]: 5400e9f8c028c0d1 +Block 0021 [ 75]: 3c70a7f46bd02139 +Block 0021 [ 76]: 110c4ae844cddb35 +Block 0021 [ 77]: bfa7d83241c23818 +Block 0021 [ 78]: edcaad25b8daf0a8 +Block 0021 [ 79]: 4e25f39c672fd3dd +Block 0021 [ 80]: f73c7d57898cbf89 +Block 0021 [ 81]: 68188c1c0cf25a53 +Block 0021 [ 82]: 2a9faf31cf04b569 +Block 0021 [ 83]: f9431287814fe37e +Block 0021 [ 84]: 243be3b90b38ba25 +Block 0021 [ 85]: 2ff865d3aabd376f +Block 0021 [ 86]: 517977a3c9ab4721 +Block 0021 [ 87]: 1344eb09e10d836d +Block 0021 [ 88]: 22352ab596708b45 +Block 0021 [ 89]: 70318e312b45713b +Block 0021 [ 90]: f1776ae5cdbb977c +Block 0021 [ 91]: 98ecf492f39168d7 +Block 0021 [ 92]: bd6eee889a309d69 +Block 0021 [ 93]: 42c87318994b9192 +Block 0021 [ 94]: e75487bdc5d5fc17 +Block 0021 [ 95]: f56246095cd3d83c +Block 0021 [ 96]: 95d38b3a2bee0e00 +Block 0021 [ 97]: eb854d1b0ae99bfa +Block 0021 [ 98]: 882415de5094207f +Block 0021 [ 99]: e7d79d750bb5a919 +Block 0021 [100]: ce6fac74067139d9 +Block 0021 [101]: 2e1e4eb6ba0bff7f +Block 0021 [102]: 6fd197b1fc11fbb7 +Block 0021 [103]: b50b9c7241ea857f +Block 0021 [104]: c5055a1cc6627673 +Block 0021 [105]: d10ef73892c24811 +Block 0021 [106]: 5fdece9bf5a0922c +Block 0021 [107]: d72210546b9ed17e +Block 0021 [108]: 67bc46392660cb91 +Block 0021 [109]: b9e5e47d1700a0a5 +Block 0021 [110]: 3cfc03ee00186042 +Block 0021 [111]: 79c5e50b190fef69 +Block 0021 [112]: ef4c795b859d9da3 +Block 0021 [113]: 2d35cec5c1107fe7 +Block 0021 [114]: c5af4ae73a397b8b +Block 0021 [115]: 991371cf40815432 +Block 0021 [116]: 14eb4ce84a65d07b +Block 0021 [117]: d59def0e00fdf27e +Block 0021 [118]: bf6a452ac1bdcaa9 +Block 0021 [119]: 2c8c674766f0864e +Block 0021 [120]: 5aacb9ad7aae4664 +Block 0021 [121]: e3bb57f7b3fdc1ef +Block 0021 [122]: 63ff45b42def5846 +Block 0021 [123]: 1fd1958c4fd3db2a +Block 0021 [124]: 1cc4429b52fe74f4 +Block 0021 [125]: 177bc5006d309d61 +Block 0021 [126]: df06b53a2374935f +Block 0021 [127]: 846f56c0e0199b09 +Block 0022 [ 0]: f0055544a8a66da3 +Block 0022 [ 1]: cdacd919de93783e +Block 0022 [ 2]: 97f4db38d37eeb63 +Block 0022 [ 3]: bbc6005afe3b391f +Block 0022 [ 4]: 39453f1a16a99f6e +Block 0022 [ 5]: de60a9e4640d8d2a +Block 0022 [ 6]: 62458a8a90a3d3cb +Block 0022 [ 7]: e1a0a8dddfd694e3 +Block 0022 [ 8]: f1910aa3624bd380 +Block 0022 [ 9]: be922abb3b4e3611 +Block 0022 [ 10]: 80c904701bfd133a +Block 0022 [ 11]: 3928fead5a645d9e +Block 0022 [ 12]: 4cc74f7f222d03ed +Block 0022 [ 13]: d0bc3853685a26f1 +Block 0022 [ 14]: 2f0fe1f6a7f76173 +Block 0022 [ 15]: dbcf422aa98d10d7 +Block 0022 [ 16]: 90e21ad1620963bb +Block 0022 [ 17]: db51c68d42dba8a1 +Block 0022 [ 18]: fafbae7409259cb2 +Block 0022 [ 19]: 52b69193864cc071 +Block 0022 [ 20]: 469d7827ed811032 +Block 0022 [ 21]: 14b2829c68b218b5 +Block 0022 [ 22]: 988892a5cb23313e +Block 0022 [ 23]: 7c5dca957c103b98 +Block 0022 [ 24]: df4bbc097a837981 +Block 0022 [ 25]: 2011417f5d39bd07 +Block 0022 [ 26]: eb9431f73df35f3d +Block 0022 [ 27]: 2009d2e8ac8ef52f +Block 0022 [ 28]: 8dab9e07d07f1b42 +Block 0022 [ 29]: 8e6a29c7f42c8637 +Block 0022 [ 30]: 3d1190f642641e80 +Block 0022 [ 31]: fced87abd38c315d +Block 0022 [ 32]: 04c4a8db5579b4fe +Block 0022 [ 33]: ea0cb649d964d9d7 +Block 0022 [ 34]: 70dd1c19230a475f +Block 0022 [ 35]: df22428fcc8f233e +Block 0022 [ 36]: 67cc6440482ef9a4 +Block 0022 [ 37]: ab95961940393dea +Block 0022 [ 38]: 7254b13ee0a68318 +Block 0022 [ 39]: f7b9c47a884d55cb +Block 0022 [ 40]: 189fbf3c55d2e89b +Block 0022 [ 41]: 9bd08c8067c10b08 +Block 0022 [ 42]: 597b3fbb3b1acb52 +Block 0022 [ 43]: 9f26e9bf7054c44c +Block 0022 [ 44]: ba90c0be3b113827 +Block 0022 [ 45]: 7ccf834cd647176a +Block 0022 [ 46]: f5e7f7c012401b91 +Block 0022 [ 47]: fb8bb2c9f8ee3a18 +Block 0022 [ 48]: bf00c504ea2160de +Block 0022 [ 49]: a9b185b64b2d534b +Block 0022 [ 50]: f9de1b7d13834000 +Block 0022 [ 51]: cc1b7969b3e035e0 +Block 0022 [ 52]: e6217156fbab7f7f +Block 0022 [ 53]: 286de6b5d5201f7f +Block 0022 [ 54]: cf012128fb6319ff +Block 0022 [ 55]: 76666fd989324c40 +Block 0022 [ 56]: 4ea7259afae53efb +Block 0022 [ 57]: 87a5ed4f0a8fff9b +Block 0022 [ 58]: 587c0fcfaad8121d +Block 0022 [ 59]: b97d07e01372cb75 +Block 0022 [ 60]: f2427574f2bd08a4 +Block 0022 [ 61]: c73ed9aa0a72f689 +Block 0022 [ 62]: 0e5b7d2cbd12bf6f +Block 0022 [ 63]: 257263442e299978 +Block 0022 [ 64]: 46c0b8d4fdbab0ee +Block 0022 [ 65]: 53a37a6e716a6747 +Block 0022 [ 66]: 7148161554525e66 +Block 0022 [ 67]: e29136a0ef2fca6c +Block 0022 [ 68]: b2495652b43df870 +Block 0022 [ 69]: d328dcac872d5623 +Block 0022 [ 70]: f025f96d1fe7181c +Block 0022 [ 71]: d857f1856f5821a9 +Block 0022 [ 72]: d0d1f3a0a6a3bfd2 +Block 0022 [ 73]: a394175356089b4a +Block 0022 [ 74]: dcb547e12b9f51dd +Block 0022 [ 75]: 03e89f2d8832bcd0 +Block 0022 [ 76]: 3fcf81ea646ffdec +Block 0022 [ 77]: 9811080c51ed8898 +Block 0022 [ 78]: 7f1955428a5ab71c +Block 0022 [ 79]: 904c1d262f4697fe +Block 0022 [ 80]: 71e299786f4153af +Block 0022 [ 81]: 03bf7656a59378d0 +Block 0022 [ 82]: 134e3117146b0ec3 +Block 0022 [ 83]: b5a105a68f0e0285 +Block 0022 [ 84]: 8e332c18345792c0 +Block 0022 [ 85]: 1c8a1b9311af8035 +Block 0022 [ 86]: da7ba0f9ddfe3ca6 +Block 0022 [ 87]: 7b3f169f787ad5fd +Block 0022 [ 88]: 1eee01d5233b877d +Block 0022 [ 89]: bdad3fa8e33afa81 +Block 0022 [ 90]: 9bbc15b8f5fb7063 +Block 0022 [ 91]: 432f6b4d1905ec3f +Block 0022 [ 92]: f2d2365eca7ba1b9 +Block 0022 [ 93]: 97e2f5a82b925ba0 +Block 0022 [ 94]: fbc0fadc13d4564a +Block 0022 [ 95]: b2ad0bee976cc199 +Block 0022 [ 96]: 17f8c2b7bdbb67ff +Block 0022 [ 97]: be69957d7a56dbe9 +Block 0022 [ 98]: 79ea684556110c84 +Block 0022 [ 99]: 907836169c0a3ed0 +Block 0022 [100]: 529cfcde28e86278 +Block 0022 [101]: ec6c52c7c521e753 +Block 0022 [102]: 6d4b0089b66db0f7 +Block 0022 [103]: 8f52889ca92d1ca1 +Block 0022 [104]: 712b763cf1461916 +Block 0022 [105]: c2f0e7bcab362673 +Block 0022 [106]: 7e37c9354c58c3c6 +Block 0022 [107]: e92e77e0fb03dd9c +Block 0022 [108]: af01ae66d8933069 +Block 0022 [109]: c177af2038666fb7 +Block 0022 [110]: ef8d51bd9f8fc316 +Block 0022 [111]: 8fc7ad7cd464e4db +Block 0022 [112]: 77b2c5d08e22e032 +Block 0022 [113]: 45b7b9a307de1b30 +Block 0022 [114]: 799e4a09a2567d1b +Block 0022 [115]: 48aefad5c1d4b969 +Block 0022 [116]: 81bd46d517aa797f +Block 0022 [117]: 863d3836c0c64d38 +Block 0022 [118]: a80930810c4b2661 +Block 0022 [119]: bb01f4029f69250a +Block 0022 [120]: 0886cc90560770cc +Block 0022 [121]: 42f0f28407b02147 +Block 0022 [122]: bbeb300621e965a5 +Block 0022 [123]: dc517baac3ca7837 +Block 0022 [124]: ea2d75283572876b +Block 0022 [125]: acc64495739e7ca9 +Block 0022 [126]: 549e0c6ecc48dbb2 +Block 0022 [127]: 5116a7094206d198 +Block 0023 [ 0]: 35a67e548212b65a +Block 0023 [ 1]: 47a597dd7729d580 +Block 0023 [ 2]: 4f4d6c3d73cd4492 +Block 0023 [ 3]: 6fea5e56611b0a46 +Block 0023 [ 4]: a0dba662fd6b63eb +Block 0023 [ 5]: 0f01e27d84bee3dc +Block 0023 [ 6]: 4870943c3036e680 +Block 0023 [ 7]: 20b20c677c15275c +Block 0023 [ 8]: 6f01bc825322649f +Block 0023 [ 9]: 4110d224d880ec5c +Block 0023 [ 10]: d7973558f1e07cb4 +Block 0023 [ 11]: 511e22e748073a68 +Block 0023 [ 12]: b7bc8abedf5d7251 +Block 0023 [ 13]: 4f64508c05105c35 +Block 0023 [ 14]: 62bbf36b6d1ff161 +Block 0023 [ 15]: 4bde3ecb4471ae65 +Block 0023 [ 16]: ead26f76d51554b6 +Block 0023 [ 17]: 7b3458dff62b800f +Block 0023 [ 18]: a084ba6ce74c1eb9 +Block 0023 [ 19]: df609dbb8ab6265d +Block 0023 [ 20]: d2ae1cdce8efdf99 +Block 0023 [ 21]: d806c82cfc649816 +Block 0023 [ 22]: c3ed6017e8689558 +Block 0023 [ 23]: 2a415ef2d37108f9 +Block 0023 [ 24]: 2175b37e3691c307 +Block 0023 [ 25]: 73b750467289ce4c +Block 0023 [ 26]: 2f839c6ddaacbdf5 +Block 0023 [ 27]: 011e1736ccb05edc +Block 0023 [ 28]: ab899953fb5935c7 +Block 0023 [ 29]: d8ffcb98d41f8f2f +Block 0023 [ 30]: f0f9066153f1709b +Block 0023 [ 31]: 8b37d3c770e07bed +Block 0023 [ 32]: 617653ad907f68c2 +Block 0023 [ 33]: 9f2e89d721331c2f +Block 0023 [ 34]: b3fdbe13e5c5475b +Block 0023 [ 35]: 5014a37260ef1027 +Block 0023 [ 36]: 44ebc51f31d5648f +Block 0023 [ 37]: cf1e345a2278c411 +Block 0023 [ 38]: 9527cdb440d9d570 +Block 0023 [ 39]: fc1c61d0d22f0234 +Block 0023 [ 40]: dc170707a41d02bc +Block 0023 [ 41]: 4f20a8a6b536d6a6 +Block 0023 [ 42]: c9d1d992c5177320 +Block 0023 [ 43]: b2d08f4e16e0ead0 +Block 0023 [ 44]: 644e66e97d0a76a7 +Block 0023 [ 45]: 932b1d6b4bf97250 +Block 0023 [ 46]: 8553d2e3f36287ab +Block 0023 [ 47]: e66ee506aeff7310 +Block 0023 [ 48]: e2df446fadcc1bbc +Block 0023 [ 49]: 4e68292d5e271c1e +Block 0023 [ 50]: 82d3a1669e44216b +Block 0023 [ 51]: 7fe477b396245eaa +Block 0023 [ 52]: d64caf9f56a25d4f +Block 0023 [ 53]: 168cad48469c2814 +Block 0023 [ 54]: cf80d1426fd4d12f +Block 0023 [ 55]: 438c56732fb88f97 +Block 0023 [ 56]: 95be9d4df9078f11 +Block 0023 [ 57]: 2c324be70809d4b0 +Block 0023 [ 58]: 6526998522b6a01e +Block 0023 [ 59]: e2bd9aa42195e196 +Block 0023 [ 60]: b40d71d74220de38 +Block 0023 [ 61]: d6e5b4ab8bd94e50 +Block 0023 [ 62]: ed4fae73a1bcfcd8 +Block 0023 [ 63]: b00f6d5d13555317 +Block 0023 [ 64]: 99740378ef630c6d +Block 0023 [ 65]: f6a7e5b72e6aa9ec +Block 0023 [ 66]: 4c5048997311b874 +Block 0023 [ 67]: 62da86a8e0bc516c +Block 0023 [ 68]: 3ef48da188d9c901 +Block 0023 [ 69]: 8eb3ac3b10af96f0 +Block 0023 [ 70]: d4a7c9a80237d4fa +Block 0023 [ 71]: 2a92923febbe2b1e +Block 0023 [ 72]: 957330d6817f55bb +Block 0023 [ 73]: bcd4fee916ef8197 +Block 0023 [ 74]: 92b3dae57a69e496 +Block 0023 [ 75]: 44ce49a2c22b1985 +Block 0023 [ 76]: 10a8624ca831fe9a +Block 0023 [ 77]: ac59a462bc479f25 +Block 0023 [ 78]: 06e0f2b14d9de57d +Block 0023 [ 79]: f7ebe6eb30b76c91 +Block 0023 [ 80]: a290cc65e72977b8 +Block 0023 [ 81]: c53025ea87d0d76d +Block 0023 [ 82]: 8b1d31e588f27e7e +Block 0023 [ 83]: 85e3b5998e045553 +Block 0023 [ 84]: e5ef1b6888c1ede3 +Block 0023 [ 85]: d3682fe7748090c6 +Block 0023 [ 86]: 18121bcf94337603 +Block 0023 [ 87]: c0f5aa67be8bdd90 +Block 0023 [ 88]: 0f97bb8a07aa0937 +Block 0023 [ 89]: 98aca43aae3d20a3 +Block 0023 [ 90]: 6daeb804404c39a2 +Block 0023 [ 91]: 2373de1540bba42a +Block 0023 [ 92]: 8d9d3261981ecae3 +Block 0023 [ 93]: af3e00f0032cc72e +Block 0023 [ 94]: 4ce3496aa0fb8655 +Block 0023 [ 95]: ad07c56975938caf +Block 0023 [ 96]: 88e0b8c9d2b54f50 +Block 0023 [ 97]: c427840539ee5821 +Block 0023 [ 98]: 6717c698b370aec4 +Block 0023 [ 99]: d1e341823d56df4c +Block 0023 [100]: 82c29686c67b57ab +Block 0023 [101]: 7819999440faf2c7 +Block 0023 [102]: 4bc4c03f6165ed12 +Block 0023 [103]: ec6aeb644e48ddaa +Block 0023 [104]: 5a008d97e36f737d +Block 0023 [105]: 428d8b4bd1b95382 +Block 0023 [106]: f3221d2ae6f23867 +Block 0023 [107]: d92f795d6158a7e4 +Block 0023 [108]: eda1169cacd46e8e +Block 0023 [109]: 275acbab7e64c866 +Block 0023 [110]: cb4ecb99b9940ea1 +Block 0023 [111]: c3c77f0efcf1e959 +Block 0023 [112]: 41928e20fb40d811 +Block 0023 [113]: e08e5064a84575e0 +Block 0023 [114]: aec4b3870e8be76b +Block 0023 [115]: 3530333223726e1f +Block 0023 [116]: f8d3bf85e583ffde +Block 0023 [117]: 0171584e95f38c8e +Block 0023 [118]: 5d06a52835a771bd +Block 0023 [119]: e97b95f46a318115 +Block 0023 [120]: 08fcd8dbb4b5dc88 +Block 0023 [121]: 684999374c097e8f +Block 0023 [122]: 35ea6d01484a577d +Block 0023 [123]: fb01d73e1d552919 +Block 0023 [124]: a1490ccf830745c5 +Block 0023 [125]: b0bbef60d9833111 +Block 0023 [126]: 477c02fd95e838d6 +Block 0023 [127]: 8baa884f5ed6c02b +Block 0024 [ 0]: d061ed936e1a32d3 +Block 0024 [ 1]: 541a30c0b95ffea7 +Block 0024 [ 2]: 1928de5e1f440c51 +Block 0024 [ 3]: c9f14c74dac24ab2 +Block 0024 [ 4]: fe4f84507d62789a +Block 0024 [ 5]: c331d363c2c8c0a9 +Block 0024 [ 6]: e747c23cec188011 +Block 0024 [ 7]: b78f6b4cbbdd4934 +Block 0024 [ 8]: 28581eafaca26cba +Block 0024 [ 9]: 44b5ae30d6118faa +Block 0024 [ 10]: 7bcf55d440d2688a +Block 0024 [ 11]: 51ca3b4d6b156519 +Block 0024 [ 12]: e5666e5b1b35e022 +Block 0024 [ 13]: dfddbfab40c9ff3a +Block 0024 [ 14]: 188654eef14df41c +Block 0024 [ 15]: 55600accb5cac797 +Block 0024 [ 16]: 4fc9cc2498403e32 +Block 0024 [ 17]: 00e5021cbb66d69d +Block 0024 [ 18]: 364c7398079d7de6 +Block 0024 [ 19]: 849b9218651c4338 +Block 0024 [ 20]: ac1740598af70ad2 +Block 0024 [ 21]: 0799297570e3afa3 +Block 0024 [ 22]: 2732b513a96712de +Block 0024 [ 23]: dc13860cf73ff7b3 +Block 0024 [ 24]: 45b81cea5644bbe4 +Block 0024 [ 25]: 2bac4d9df968b6d7 +Block 0024 [ 26]: 1c2c19f0a424895d +Block 0024 [ 27]: 743629acd72ee78f +Block 0024 [ 28]: 6938084dd1a25f3c +Block 0024 [ 29]: 5d8fdef799f3a7a7 +Block 0024 [ 30]: 32c9dd570ee7f229 +Block 0024 [ 31]: 635275210d4dcc60 +Block 0024 [ 32]: 0b6a30a0f9d8cd62 +Block 0024 [ 33]: 325b6147f91b93d2 +Block 0024 [ 34]: 5693c3b83d29486d +Block 0024 [ 35]: 9ae916389575f4dc +Block 0024 [ 36]: a9ac27bdf4920386 +Block 0024 [ 37]: fb2b943c71b1f651 +Block 0024 [ 38]: b3439452a404a424 +Block 0024 [ 39]: d7ca3d322ddd0d34 +Block 0024 [ 40]: cfb81600244f133f +Block 0024 [ 41]: c4fc0f63568bc898 +Block 0024 [ 42]: 40e4716f08a63a3b +Block 0024 [ 43]: c0e487f16e9e4031 +Block 0024 [ 44]: 240146e7c19878bf +Block 0024 [ 45]: 0e41626ba08e23a5 +Block 0024 [ 46]: 9f195c84461c825b +Block 0024 [ 47]: 9c3f6c6a2966f0a8 +Block 0024 [ 48]: 45853ff7c0b93daf +Block 0024 [ 49]: 7db484a6bfbe0427 +Block 0024 [ 50]: ae168d723e3413fd +Block 0024 [ 51]: 070dd51541ac7eea +Block 0024 [ 52]: d52cdead741239e7 +Block 0024 [ 53]: b0fcd63276cb4aea +Block 0024 [ 54]: 8c967ddb1d15730f +Block 0024 [ 55]: dd469e509bd1432e +Block 0024 [ 56]: 624a5f0f28028f6e +Block 0024 [ 57]: 2d4963cd135783d7 +Block 0024 [ 58]: 459365718bb4c0df +Block 0024 [ 59]: 9ee458e2ebfb4331 +Block 0024 [ 60]: 774ab6c8d85d0c23 +Block 0024 [ 61]: 9386c117e41e29b7 +Block 0024 [ 62]: 45cce696de9d97e8 +Block 0024 [ 63]: b678a357a46dbd0c +Block 0024 [ 64]: 2d0923ed6e8904ef +Block 0024 [ 65]: ff4b8d2913c5114e +Block 0024 [ 66]: dc05ff473012b91b +Block 0024 [ 67]: b817c71405fa2b47 +Block 0024 [ 68]: c1b8451cc37ca669 +Block 0024 [ 69]: b53274d2bc303d21 +Block 0024 [ 70]: 0b585e8da0c28ec0 +Block 0024 [ 71]: 96d1c3f9b6316fd0 +Block 0024 [ 72]: 9d751e17ddb84b92 +Block 0024 [ 73]: 15cd8f9877d08621 +Block 0024 [ 74]: 31427e152ae1f228 +Block 0024 [ 75]: 58c308b9049a1a35 +Block 0024 [ 76]: a7c6d337bea4cd79 +Block 0024 [ 77]: c74a3612bb6c2920 +Block 0024 [ 78]: bcd995a490138eca +Block 0024 [ 79]: 3ab8aa80102b731c +Block 0024 [ 80]: 12ca895d089a075d +Block 0024 [ 81]: 90ca0070cac5d46c +Block 0024 [ 82]: 79cf2adead63539a +Block 0024 [ 83]: aa2b9edc6e245007 +Block 0024 [ 84]: b85174b8df690554 +Block 0024 [ 85]: a714f0d57ded76c1 +Block 0024 [ 86]: eee45ed25c8026a0 +Block 0024 [ 87]: 7ffceacdb23db6d5 +Block 0024 [ 88]: d081599d922b548e +Block 0024 [ 89]: bdc6c423c6dfbd46 +Block 0024 [ 90]: ac97234b39a66ea0 +Block 0024 [ 91]: 8354643289ab2777 +Block 0024 [ 92]: 7768471ee706bcfc +Block 0024 [ 93]: d5d5558b0f65d5e8 +Block 0024 [ 94]: 4fcccd6440c9993f +Block 0024 [ 95]: e2349553b73474a8 +Block 0024 [ 96]: 2298b2c517299e44 +Block 0024 [ 97]: 5c71ae34b1646e7c +Block 0024 [ 98]: bb2f21e33ef80226 +Block 0024 [ 99]: c1d6744c0daa4ec1 +Block 0024 [100]: d1c2045ba1c82a86 +Block 0024 [101]: d827935d52f05a26 +Block 0024 [102]: 641bc1718fbdd804 +Block 0024 [103]: 1e93f35ba580c78d +Block 0024 [104]: 38dcd866d4ba60b0 +Block 0024 [105]: c569e6c978d6370f +Block 0024 [106]: 665b6de1b84e4d1e +Block 0024 [107]: 59e8c6d2e0ef07b3 +Block 0024 [108]: 1019324ba6f47ddf +Block 0024 [109]: bf453a53194efe17 +Block 0024 [110]: 740c895bd04b3212 +Block 0024 [111]: 279d7d4e8a17205a +Block 0024 [112]: bf0562156ec46599 +Block 0024 [113]: f4cfe480afee6fd0 +Block 0024 [114]: 6dc65fde295bc25c +Block 0024 [115]: 608aa55b507597a1 +Block 0024 [116]: 10bad16db28743f2 +Block 0024 [117]: 16b24343b9778d3f +Block 0024 [118]: f94e6c6b43502e95 +Block 0024 [119]: 048837063d6a0f2f +Block 0024 [120]: 6010c23f59e2b3be +Block 0024 [121]: 33051c610ff7a8e3 +Block 0024 [122]: 456dd3fb90581e01 +Block 0024 [123]: 61f13604e9cba016 +Block 0024 [124]: 5abbea569a465d20 +Block 0024 [125]: e099ef641551a3b3 +Block 0024 [126]: 34f9bda1ee9bdb9f +Block 0024 [127]: cbe1f2c55812a488 +Block 0025 [ 0]: 70ebd121a7257a28 +Block 0025 [ 1]: ee4c2ac9909ac584 +Block 0025 [ 2]: adfaf99676dc4eff +Block 0025 [ 3]: 5bb604144163d732 +Block 0025 [ 4]: 04ba77fee44bca6d +Block 0025 [ 5]: 117632540e9a1351 +Block 0025 [ 6]: 821fd24564be611b +Block 0025 [ 7]: ee6d3854f8aa8e6a +Block 0025 [ 8]: bd5d0386e54bf100 +Block 0025 [ 9]: 5fd6ff010f7ffccf +Block 0025 [ 10]: 6280ead5f8ce3ce8 +Block 0025 [ 11]: 8fefeea8a3ecfeea +Block 0025 [ 12]: 568373e8752d762d +Block 0025 [ 13]: c7aeb28c1a22213f +Block 0025 [ 14]: 135ac6f83c51250a +Block 0025 [ 15]: e0351d9290e44c26 +Block 0025 [ 16]: 721d1f259e59b608 +Block 0025 [ 17]: 9e75d7f84f0bc4d8 +Block 0025 [ 18]: 77f1351a7349e3de +Block 0025 [ 19]: bd90c3924bafa69f +Block 0025 [ 20]: 894a4d6baa341ef8 +Block 0025 [ 21]: e9507179545ecad6 +Block 0025 [ 22]: 71d116328734e1af +Block 0025 [ 23]: d8098eaea09439a8 +Block 0025 [ 24]: 5d991df3c678bb33 +Block 0025 [ 25]: 667e9c87829af175 +Block 0025 [ 26]: f1f640695d856a45 +Block 0025 [ 27]: ea5c53d6c2c5ee2c +Block 0025 [ 28]: a0ac38bbb6105a03 +Block 0025 [ 29]: 312001c836009739 +Block 0025 [ 30]: 626988741f041169 +Block 0025 [ 31]: c04eb57fcdc6dc28 +Block 0025 [ 32]: 8631d3c1eae8d8a1 +Block 0025 [ 33]: b86a0341a6aace14 +Block 0025 [ 34]: c1ee46fe54acb220 +Block 0025 [ 35]: e010f93accc68429 +Block 0025 [ 36]: 3059b9d96afd0981 +Block 0025 [ 37]: 55107999b1e215cd +Block 0025 [ 38]: 6f8efceccadf69ca +Block 0025 [ 39]: f949524531c51bbc +Block 0025 [ 40]: 7d72a929f74af045 +Block 0025 [ 41]: 7672dc7082c41bab +Block 0025 [ 42]: f3def1f446699d0a +Block 0025 [ 43]: d4814bce24153b17 +Block 0025 [ 44]: e216945683f065f7 +Block 0025 [ 45]: 576411a7012ca38d +Block 0025 [ 46]: 723090d9c993b2ee +Block 0025 [ 47]: 4d823fefc8f9035c +Block 0025 [ 48]: cf0f4589118758a4 +Block 0025 [ 49]: b1d4460fa64aa621 +Block 0025 [ 50]: 94e82983b5173949 +Block 0025 [ 51]: ee5d570d4e61dcb1 +Block 0025 [ 52]: 357d37a1ae5df910 +Block 0025 [ 53]: 11f0a3fb6b7421c8 +Block 0025 [ 54]: 0aca0f137cfa300a +Block 0025 [ 55]: dd6d6f5bec942848 +Block 0025 [ 56]: 66d79c4704c0c2cf +Block 0025 [ 57]: ffe19bb80d92656a +Block 0025 [ 58]: c1bd6d50fa655462 +Block 0025 [ 59]: 4839837755a6182c +Block 0025 [ 60]: c20dfc55eaa2b63d +Block 0025 [ 61]: aefdf12048445e78 +Block 0025 [ 62]: 732fde83bd73a479 +Block 0025 [ 63]: db9e3a074d14bc35 +Block 0025 [ 64]: 5086f3fe923e5c95 +Block 0025 [ 65]: d12d3f7ff1b1447a +Block 0025 [ 66]: a6b5e44c58356eb0 +Block 0025 [ 67]: 472b0aa28e7d6b9b +Block 0025 [ 68]: 0f8dd423906ccf22 +Block 0025 [ 69]: a8295f1a3a00bcca +Block 0025 [ 70]: 76c5f59eea1920b0 +Block 0025 [ 71]: 5ae795cdbf364338 +Block 0025 [ 72]: 23952cc743c68ba3 +Block 0025 [ 73]: 5810730a92bfd13f +Block 0025 [ 74]: f956febc1edb9e2f +Block 0025 [ 75]: 55e31c195108a36f +Block 0025 [ 76]: e02b758b63004a43 +Block 0025 [ 77]: 60497305b0cd869d +Block 0025 [ 78]: b18c2987b2938143 +Block 0025 [ 79]: a49174eb08fa5d31 +Block 0025 [ 80]: e3b098abb1b7ecc7 +Block 0025 [ 81]: 0f057184a4fa53d4 +Block 0025 [ 82]: 57b34bf21444321c +Block 0025 [ 83]: 607c182ca523340b +Block 0025 [ 84]: 804edac2f1b00605 +Block 0025 [ 85]: 101a6b49ceaca684 +Block 0025 [ 86]: 447a34a4fb951403 +Block 0025 [ 87]: dbc1eb36865c36a2 +Block 0025 [ 88]: af4abc94ba557920 +Block 0025 [ 89]: 1d698533ab769326 +Block 0025 [ 90]: 5c3426b817abb8f0 +Block 0025 [ 91]: f38cecd553c531d2 +Block 0025 [ 92]: ef3694fcc3d99451 +Block 0025 [ 93]: 53bfda338a59ab41 +Block 0025 [ 94]: c6f5fb7b6029de2d +Block 0025 [ 95]: e3fc04c1f36144a8 +Block 0025 [ 96]: 820737f3b4eacb98 +Block 0025 [ 97]: 85cec89abce81975 +Block 0025 [ 98]: 745271c6bc864740 +Block 0025 [ 99]: 1c0811cf1c431e19 +Block 0025 [100]: 4d99ff91c0c64d1a +Block 0025 [101]: 979cb0118168a9fb +Block 0025 [102]: d53fa0291a3d76e0 +Block 0025 [103]: 1ce5fbd785ad370a +Block 0025 [104]: 6d7049f9344ec655 +Block 0025 [105]: 53f7839ff27c66c7 +Block 0025 [106]: fc9a2098d2211301 +Block 0025 [107]: f5f926c8bd4c4d01 +Block 0025 [108]: 3b058a18e77f9bb1 +Block 0025 [109]: ca320ef75bca7535 +Block 0025 [110]: 79339df3ec05b866 +Block 0025 [111]: c816026a714092bd +Block 0025 [112]: b82d81735606531e +Block 0025 [113]: d8268ae55a6131ce +Block 0025 [114]: 4f268372782968b5 +Block 0025 [115]: a3062a5aeb9384dd +Block 0025 [116]: 65dcc349c62b4191 +Block 0025 [117]: 85f5779531f46af1 +Block 0025 [118]: 43787b67d0c1778c +Block 0025 [119]: 73f5ed29f3e61e5d +Block 0025 [120]: 449b111b7e54e5e0 +Block 0025 [121]: 8f880be186dee777 +Block 0025 [122]: 3ab3a6d0e2493169 +Block 0025 [123]: 95852a5bee3d5164 +Block 0025 [124]: 90b38d7051960232 +Block 0025 [125]: 936e413aeae9d225 +Block 0025 [126]: 54774428cd567644 +Block 0025 [127]: 14be833fb3c1ac88 +Block 0026 [ 0]: fb487be18df7eb8d +Block 0026 [ 1]: 2412501be404fb4e +Block 0026 [ 2]: d7b2c081d9131080 +Block 0026 [ 3]: 0a581196251f1831 +Block 0026 [ 4]: bded1e5259f76500 +Block 0026 [ 5]: 6016730d78d0bc53 +Block 0026 [ 6]: 52f90543516e0fb9 +Block 0026 [ 7]: d02d45cd3f1a17b5 +Block 0026 [ 8]: a0d5c083921cbaa6 +Block 0026 [ 9]: eb736849ae0115bb +Block 0026 [ 10]: 38499c85645ea09f +Block 0026 [ 11]: 073a5dba363f3553 +Block 0026 [ 12]: 59b34c2590679624 +Block 0026 [ 13]: 5e2de51bca2407a9 +Block 0026 [ 14]: aac20d25a2b2ed15 +Block 0026 [ 15]: 244859ec8edc3cbb +Block 0026 [ 16]: 618a3558f289a76f +Block 0026 [ 17]: 40f3419b8ed0524d +Block 0026 [ 18]: d868a3a6e0a5d7df +Block 0026 [ 19]: 6f96de68338ea557 +Block 0026 [ 20]: 870fb44e701b4404 +Block 0026 [ 21]: 61c567f8db2a6ce5 +Block 0026 [ 22]: 169cdd5f6449f530 +Block 0026 [ 23]: e9810f4bcc425020 +Block 0026 [ 24]: 3152e7edc348cf7a +Block 0026 [ 25]: 9eac974a1e5b0350 +Block 0026 [ 26]: 99c7a8f313578337 +Block 0026 [ 27]: c724d4256fc1241a +Block 0026 [ 28]: 3ee0245454922982 +Block 0026 [ 29]: c6441c8af990ced6 +Block 0026 [ 30]: dbac5d89ef4f3e2a +Block 0026 [ 31]: 414aa7cd0f754e55 +Block 0026 [ 32]: 489bc0760eda7b07 +Block 0026 [ 33]: fd383b765fb81891 +Block 0026 [ 34]: 4d852ceed348635c +Block 0026 [ 35]: 811cb9f91082156e +Block 0026 [ 36]: aa7fcfdf2c355044 +Block 0026 [ 37]: 9f35f2708fd615b6 +Block 0026 [ 38]: 3321a64e9ed24a5f +Block 0026 [ 39]: 4fe9684a31256a87 +Block 0026 [ 40]: 0f583fe70d6982a0 +Block 0026 [ 41]: a6755d33ea305335 +Block 0026 [ 42]: 2263c8affb70cd87 +Block 0026 [ 43]: 6d582e490d23613d +Block 0026 [ 44]: d3f6775090e90406 +Block 0026 [ 45]: 8cf43fe930e2f86e +Block 0026 [ 46]: fe4542378bbd625c +Block 0026 [ 47]: 8d660ec74c5a6c6e +Block 0026 [ 48]: 9f7c3ff4997a8c11 +Block 0026 [ 49]: 44256d91adf7b314 +Block 0026 [ 50]: 857e5e379b306054 +Block 0026 [ 51]: 28a4891ccbd52570 +Block 0026 [ 52]: fa3ee9dad4f01df4 +Block 0026 [ 53]: 18f98918c7f237b9 +Block 0026 [ 54]: 294fd5c947a31bab +Block 0026 [ 55]: 06295a7262a12b86 +Block 0026 [ 56]: 5a5a7a7eba41739d +Block 0026 [ 57]: 4d98727eb9f6bcf9 +Block 0026 [ 58]: 49e3cb6ab07fec0e +Block 0026 [ 59]: 962e2140c0a21b25 +Block 0026 [ 60]: 86069730a4abf3ed +Block 0026 [ 61]: fc22af18ec18d2c4 +Block 0026 [ 62]: 5fa009f2eaad07c6 +Block 0026 [ 63]: 08c58faf884a793f +Block 0026 [ 64]: 986adc48582ffb12 +Block 0026 [ 65]: dc77fa6a85a5e76d +Block 0026 [ 66]: c29359fe2f1ee366 +Block 0026 [ 67]: 23087c88088978ca +Block 0026 [ 68]: 7c1c4bb1f4297c1e +Block 0026 [ 69]: ef501ae32f369047 +Block 0026 [ 70]: 8a79d9699334e928 +Block 0026 [ 71]: aab7b483178735ff +Block 0026 [ 72]: 622ec4e95fbe36bd +Block 0026 [ 73]: eb0bf85db3bc78a8 +Block 0026 [ 74]: f44be5060f166f98 +Block 0026 [ 75]: 6255bfff5f971965 +Block 0026 [ 76]: 52f61bc236ac1b65 +Block 0026 [ 77]: f23b70892420cefe +Block 0026 [ 78]: 6e8f53f9674910e6 +Block 0026 [ 79]: d7132b9c00a6ad7c +Block 0026 [ 80]: 020bc2685469901d +Block 0026 [ 81]: 108cd38e30f23200 +Block 0026 [ 82]: f450098cfe218776 +Block 0026 [ 83]: 4f67e9fc7039a747 +Block 0026 [ 84]: 37eba43f2fa0d31b +Block 0026 [ 85]: f0f42e8fe6ac612f +Block 0026 [ 86]: 1f376340d44ab901 +Block 0026 [ 87]: d77f62728aca121d +Block 0026 [ 88]: ac1072995fc2ff37 +Block 0026 [ 89]: e7069948a84a3977 +Block 0026 [ 90]: b33c06e54ab93729 +Block 0026 [ 91]: 39e0af0be89603dd +Block 0026 [ 92]: d22f84dfd99dcc8a +Block 0026 [ 93]: 88ac4c95d7937a2a +Block 0026 [ 94]: 0cf2539c4243d967 +Block 0026 [ 95]: 34e8d12e0b92aaea +Block 0026 [ 96]: e15df1069c6ef442 +Block 0026 [ 97]: 40f35bc356fc0c3d +Block 0026 [ 98]: 0e071590cf2db74a +Block 0026 [ 99]: e387d14f6bdd296b +Block 0026 [100]: 73fb9acc7733fab5 +Block 0026 [101]: 4266f8cc2efa280b +Block 0026 [102]: b3d909ebafc201c9 +Block 0026 [103]: e5412fc8412e7fc9 +Block 0026 [104]: 02210cc87412d5a3 +Block 0026 [105]: 54f130c0554c6ac3 +Block 0026 [106]: 68a7b73bc65cf9e4 +Block 0026 [107]: 307263b13f5b963a +Block 0026 [108]: 7596dd4e7d1db393 +Block 0026 [109]: 6f139dfd1be30627 +Block 0026 [110]: 1d3ef50a50ceaed6 +Block 0026 [111]: eb88fda3b09b1296 +Block 0026 [112]: 4c3b8e2b4ca2e1f7 +Block 0026 [113]: 57ce38c178027833 +Block 0026 [114]: ce45c95b2532bbdd +Block 0026 [115]: bf634de9141dfe76 +Block 0026 [116]: 1ba389024f54f36b +Block 0026 [117]: 3ac1f8ae10577c81 +Block 0026 [118]: 814252a3e5652404 +Block 0026 [119]: 3322ff859d6b20d5 +Block 0026 [120]: bf7ee00ef0fe69b3 +Block 0026 [121]: b3ef0667ff20b60f +Block 0026 [122]: 79fe044ee99570bb +Block 0026 [123]: 5c03a6ffb98c6c3d +Block 0026 [124]: fc3e251d52c216ea +Block 0026 [125]: 274c5148e90c511b +Block 0026 [126]: 3eafcafba246f626 +Block 0026 [127]: 935a2ec2b3396f23 +Block 0027 [ 0]: 159e40334396333d +Block 0027 [ 1]: 35debd9f9e959a3b +Block 0027 [ 2]: e1fbc7a924a625fe +Block 0027 [ 3]: 90ad1340b58c1e89 +Block 0027 [ 4]: 67b4cd3e612f9c38 +Block 0027 [ 5]: 61a7596c0b4d1b21 +Block 0027 [ 6]: 587fcd006c063e9f +Block 0027 [ 7]: b0f4588fbe2fe388 +Block 0027 [ 8]: 5047302d958a2dbe +Block 0027 [ 9]: 959582f80834b214 +Block 0027 [ 10]: e4b8921bcf7453d3 +Block 0027 [ 11]: cef065b8fe85471f +Block 0027 [ 12]: 4c28967e6e845806 +Block 0027 [ 13]: 95097bd7a3f1b357 +Block 0027 [ 14]: 4cc838f128fdb9a5 +Block 0027 [ 15]: e763538ff7bf6905 +Block 0027 [ 16]: e8bc164923715cd5 +Block 0027 [ 17]: 1aab15c51709863d +Block 0027 [ 18]: f916024c0fd94f60 +Block 0027 [ 19]: bb805c2ff026f601 +Block 0027 [ 20]: 39a4e6570eea2e20 +Block 0027 [ 21]: 356a1aba03e1d831 +Block 0027 [ 22]: c74e8ec0aa6532b8 +Block 0027 [ 23]: ba610ecdf6d64405 +Block 0027 [ 24]: 9e70622f149a89b9 +Block 0027 [ 25]: 345b1a805f2b69c6 +Block 0027 [ 26]: ab9cac31ce78f811 +Block 0027 [ 27]: 95dc637304bfd01e +Block 0027 [ 28]: c3c85afe6db662b6 +Block 0027 [ 29]: 1147079a0ee70d38 +Block 0027 [ 30]: 9aa8571b4c12ab3a +Block 0027 [ 31]: 0c5bc0316ffbb5da +Block 0027 [ 32]: 8e6d03850ebf0c6b +Block 0027 [ 33]: 16d56a59f5c9d9ed +Block 0027 [ 34]: 6c9d8fc35506be7b +Block 0027 [ 35]: 1b1bb9e6da78719d +Block 0027 [ 36]: b6adeb5a05127a11 +Block 0027 [ 37]: 6f8b8e355e4940dd +Block 0027 [ 38]: e1c3e8f1a0f554b6 +Block 0027 [ 39]: c5eb3dff6c043572 +Block 0027 [ 40]: 9a86baac2419994e +Block 0027 [ 41]: c9c44c781da2e1c3 +Block 0027 [ 42]: 639000af64968df2 +Block 0027 [ 43]: 1c4c7ec41762744a +Block 0027 [ 44]: e768397942510cf9 +Block 0027 [ 45]: 434bbca62243dab6 +Block 0027 [ 46]: 786480067546a5f6 +Block 0027 [ 47]: d749591161b87446 +Block 0027 [ 48]: e1563d5a486c87c3 +Block 0027 [ 49]: 9f0c7700273b813e +Block 0027 [ 50]: 304836e556914ec0 +Block 0027 [ 51]: f65ef06f782ba50f +Block 0027 [ 52]: 5b965ee1f01ef44f +Block 0027 [ 53]: 6338cc24f6ea3230 +Block 0027 [ 54]: 593a3771c1e7a207 +Block 0027 [ 55]: 5ab77e5059a9a160 +Block 0027 [ 56]: 49e72d762260501c +Block 0027 [ 57]: 4ae2e5a7a667142a +Block 0027 [ 58]: b64d7c61f720ba52 +Block 0027 [ 59]: 5c04d5b69f09ddee +Block 0027 [ 60]: 6424491f6cbe7e74 +Block 0027 [ 61]: 34edd83bf282bb4c +Block 0027 [ 62]: ba7d59f9fe2cb25c +Block 0027 [ 63]: c24cb5e01a00ef27 +Block 0027 [ 64]: 2a3a486c959977c1 +Block 0027 [ 65]: ed0da6827836de25 +Block 0027 [ 66]: 7042248ab660371d +Block 0027 [ 67]: afd8cf2fa335245c +Block 0027 [ 68]: 1b4e226a51d82d6a +Block 0027 [ 69]: dd05266199543763 +Block 0027 [ 70]: 689c0b986a2d93d8 +Block 0027 [ 71]: 0a8271d7de2878a7 +Block 0027 [ 72]: 9f44d2816b1b50df +Block 0027 [ 73]: 1719aea0e7e3eaa9 +Block 0027 [ 74]: e106c5709673b01f +Block 0027 [ 75]: b04fcb886a18ae63 +Block 0027 [ 76]: e8f3d9b2308eef93 +Block 0027 [ 77]: db65d3dd6473325a +Block 0027 [ 78]: c659d81491aed1e9 +Block 0027 [ 79]: e12cff0492e843c0 +Block 0027 [ 80]: 7403b7de484abbd7 +Block 0027 [ 81]: 1fbaa3c23d8f4b7c +Block 0027 [ 82]: a854cdf30488f6a9 +Block 0027 [ 83]: eccdd64e58074056 +Block 0027 [ 84]: d65f8859f44ff969 +Block 0027 [ 85]: a230cd84cd2588a0 +Block 0027 [ 86]: ff2bc0e01e574048 +Block 0027 [ 87]: a56bb59d3ddc7e38 +Block 0027 [ 88]: db383d2ea5f60f4a +Block 0027 [ 89]: 02f70a87053f54b9 +Block 0027 [ 90]: 106c65eb3d0a0ef7 +Block 0027 [ 91]: 779a3d3e70076a46 +Block 0027 [ 92]: ab63c42176583636 +Block 0027 [ 93]: cfd08c6d8ebb1703 +Block 0027 [ 94]: b7bb88525417a838 +Block 0027 [ 95]: eb118a9673be378e +Block 0027 [ 96]: 39ed8faae4710682 +Block 0027 [ 97]: d4ba3147a41ba3d2 +Block 0027 [ 98]: a0a701460ad6804d +Block 0027 [ 99]: 3a67a2c71a8cce3b +Block 0027 [100]: 0102b5ef646994b2 +Block 0027 [101]: 19dcffd9c433deef +Block 0027 [102]: f0939e375d416a48 +Block 0027 [103]: a26a910720ceb122 +Block 0027 [104]: c377d599215ce2b5 +Block 0027 [105]: 7e30dc33a90a37b1 +Block 0027 [106]: fc335a52fe857c07 +Block 0027 [107]: 3b5d0455b3860a76 +Block 0027 [108]: cec5a9162e644993 +Block 0027 [109]: 2cfe25839dd15ab7 +Block 0027 [110]: 9b156e7837236a75 +Block 0027 [111]: d6eb2e3a281a5cdb +Block 0027 [112]: 42c6565b34cba6af +Block 0027 [113]: d66060382243dc0b +Block 0027 [114]: 486d5bc00554a4b1 +Block 0027 [115]: 458ad595a0269bc7 +Block 0027 [116]: 2968c320d059d4cd +Block 0027 [117]: bd84bd47e559db51 +Block 0027 [118]: 3c4e312783b9859a +Block 0027 [119]: 6e49857079e4c504 +Block 0027 [120]: a7777b7394e65639 +Block 0027 [121]: 230be5f469a8b638 +Block 0027 [122]: 0728f719aa188543 +Block 0027 [123]: ff9963971241708c +Block 0027 [124]: 0ace11603796535c +Block 0027 [125]: cd2788157711e0a8 +Block 0027 [126]: 375f1148708a76c0 +Block 0027 [127]: 7a825f3267910e33 +Block 0028 [ 0]: 0849f26117e82e69 +Block 0028 [ 1]: d5f71170afc0cd99 +Block 0028 [ 2]: 337cf42a1f9aa6ed +Block 0028 [ 3]: 8b3ee65b0fa2ee71 +Block 0028 [ 4]: 08e5f029da386cf5 +Block 0028 [ 5]: 56faaaa1bd86acb1 +Block 0028 [ 6]: c5b50eef97e1aaf2 +Block 0028 [ 7]: 44fb3096543f68b5 +Block 0028 [ 8]: a49b5724cabeaade +Block 0028 [ 9]: c9984984f42d456d +Block 0028 [ 10]: 86087eb21aa86362 +Block 0028 [ 11]: 7c26cd8835fe070a +Block 0028 [ 12]: df7893c4c3184f26 +Block 0028 [ 13]: 213ef3aff6a570d1 +Block 0028 [ 14]: 2e6d52b63938f7b2 +Block 0028 [ 15]: 2d40ede261919ac2 +Block 0028 [ 16]: 3a5db1e8c3d48c18 +Block 0028 [ 17]: bd96321cef252f19 +Block 0028 [ 18]: 5fa45329ce5fe729 +Block 0028 [ 19]: 3108fa03894aa4e6 +Block 0028 [ 20]: e3760737d9e8436f +Block 0028 [ 21]: 22f767c73cfb6d1a +Block 0028 [ 22]: d3752b7eccedb8bf +Block 0028 [ 23]: 90151508c3540bcb +Block 0028 [ 24]: e42592301a636512 +Block 0028 [ 25]: e70ee12d7216f4e9 +Block 0028 [ 26]: aad05fb9c5894f49 +Block 0028 [ 27]: 0bee7b256f071ab4 +Block 0028 [ 28]: 92ce045f4138a3be +Block 0028 [ 29]: 7f7065c75a435f24 +Block 0028 [ 30]: a431b3b6e0c59cae +Block 0028 [ 31]: ef20bc3f22350a04 +Block 0028 [ 32]: b275f5fa1e04cb09 +Block 0028 [ 33]: 370630d3d9a41d2b +Block 0028 [ 34]: 4dafe30055bdb07e +Block 0028 [ 35]: 834f9a112778a3a7 +Block 0028 [ 36]: 4f3f222636687ea1 +Block 0028 [ 37]: 5d56952ee08e0a6a +Block 0028 [ 38]: 26a59314ae105696 +Block 0028 [ 39]: d16327fc3f66f2ca +Block 0028 [ 40]: 1a14f45ff2619475 +Block 0028 [ 41]: afb1cd011f1d190a +Block 0028 [ 42]: 4b193be4e955e2d9 +Block 0028 [ 43]: 112011bd408e324f +Block 0028 [ 44]: 982c98964b0baca7 +Block 0028 [ 45]: 7d93cc6551a4fd9d +Block 0028 [ 46]: ee58c96acfc8c064 +Block 0028 [ 47]: 68c962a88a2a51c9 +Block 0028 [ 48]: 905d84e0e7b066c0 +Block 0028 [ 49]: 8e2a80dbf5dadd98 +Block 0028 [ 50]: ba8e81f0dce0c3d3 +Block 0028 [ 51]: c0eeaf524cdc1a9a +Block 0028 [ 52]: e2f2b0a38d8bb527 +Block 0028 [ 53]: 30ca19c0bcc47ce5 +Block 0028 [ 54]: a51213f07e89eee5 +Block 0028 [ 55]: 96f72b7410c329bd +Block 0028 [ 56]: b97493bbe5136439 +Block 0028 [ 57]: 89717556a6753782 +Block 0028 [ 58]: d4cfb003fc67c9f5 +Block 0028 [ 59]: 541dc2a89c9e400e +Block 0028 [ 60]: 4251b6717b98dc3d +Block 0028 [ 61]: 1cfab5fc275fa115 +Block 0028 [ 62]: 814f8d19cb4fbb3a +Block 0028 [ 63]: 132f7ef88079c208 +Block 0028 [ 64]: 833cd31cacb85c65 +Block 0028 [ 65]: d4bb68949f3df570 +Block 0028 [ 66]: 92bcae2eac5e7765 +Block 0028 [ 67]: c7f23e8397ddaf35 +Block 0028 [ 68]: b566b8e8adff82e7 +Block 0028 [ 69]: 0a2162802341b685 +Block 0028 [ 70]: 73bce590f290184f +Block 0028 [ 71]: 8ff6a187a4def08c +Block 0028 [ 72]: 584577ed0490bc21 +Block 0028 [ 73]: ac4406c4137dfee9 +Block 0028 [ 74]: f4fbf4110f495a81 +Block 0028 [ 75]: 08f5780ba9cc43d9 +Block 0028 [ 76]: 75c168632ff3dfce +Block 0028 [ 77]: 3dee16456c07ebcd +Block 0028 [ 78]: 036c0730b8f60056 +Block 0028 [ 79]: 6b9d6a60d9cc1975 +Block 0028 [ 80]: 6f374b04e4e75fe5 +Block 0028 [ 81]: 01da5a909d9e0d78 +Block 0028 [ 82]: 0c6fbe7746f25058 +Block 0028 [ 83]: bd91552984f5ac9f +Block 0028 [ 84]: f385b64acabaa0c6 +Block 0028 [ 85]: 0eee4367c6323e93 +Block 0028 [ 86]: 702ecb0bde5c9096 +Block 0028 [ 87]: 040a6edea15014bd +Block 0028 [ 88]: 09409b7a46a09515 +Block 0028 [ 89]: 593ffbb45922881e +Block 0028 [ 90]: 93d1b8eddbeb3779 +Block 0028 [ 91]: 20e543ddff978938 +Block 0028 [ 92]: ab067161ec9a6b01 +Block 0028 [ 93]: b3ba38bc824538ee +Block 0028 [ 94]: 9c56eb38eb4431f6 +Block 0028 [ 95]: 3fb4fcd01732e6da +Block 0028 [ 96]: d78ce9b0a9fbdad2 +Block 0028 [ 97]: 156975f6f8233d48 +Block 0028 [ 98]: f436a80f86e2cb90 +Block 0028 [ 99]: d0f1e1209cf6049f +Block 0028 [100]: f32f5e2f8024c792 +Block 0028 [101]: 29b30130eaf52b55 +Block 0028 [102]: 37e560fe3a1696c8 +Block 0028 [103]: c331eadc24d9beca +Block 0028 [104]: d5b8368f1a774c9b +Block 0028 [105]: 03f3c0bd89abcadb +Block 0028 [106]: f455906baa4fb0ba +Block 0028 [107]: e80fe133ffbab8bd +Block 0028 [108]: 577157827c027d91 +Block 0028 [109]: 4a08fe8ba548fa0b +Block 0028 [110]: 0b66ee4cb9c7ea4e +Block 0028 [111]: 8fdbed3184ee5d52 +Block 0028 [112]: ddd779a1731696ee +Block 0028 [113]: d96141b193a21297 +Block 0028 [114]: 6a81beb51328863d +Block 0028 [115]: db461e53677de07c +Block 0028 [116]: f2f8671327ceeb4c +Block 0028 [117]: 7c904037691f33ba +Block 0028 [118]: 96fb37b562e4c9b8 +Block 0028 [119]: 05fcd6da00353939 +Block 0028 [120]: 0f596ac66bc611c0 +Block 0028 [121]: af26b7fa3530572f +Block 0028 [122]: 18c3afbee2dd6326 +Block 0028 [123]: 5385c318968ff79c +Block 0028 [124]: 74ff24b87493af07 +Block 0028 [125]: 5c194c0a50cb046e +Block 0028 [126]: 73022d716b6a6d1b +Block 0028 [127]: caa125ca87182882 +Block 0029 [ 0]: fc0960a67b7ec1a8 +Block 0029 [ 1]: 6d7bd2f98e6a5ffe +Block 0029 [ 2]: d9ecf72f70549a6a +Block 0029 [ 3]: 47805459f5c4fbd6 +Block 0029 [ 4]: 72fecd2e969f8bb8 +Block 0029 [ 5]: 726a7d27060c41f6 +Block 0029 [ 6]: 2876b25d393f7e10 +Block 0029 [ 7]: 3b1bc55ae5474c0d +Block 0029 [ 8]: 61edce506daea986 +Block 0029 [ 9]: 3e8a6bc466ff959d +Block 0029 [ 10]: 19a6c7d4ac26c129 +Block 0029 [ 11]: 16ad302ec06d236b +Block 0029 [ 12]: 0f34685a73e16ceb +Block 0029 [ 13]: c782e2fd258b4df3 +Block 0029 [ 14]: 35971b0d4ec5b3e2 +Block 0029 [ 15]: c76d6c071c4f0b16 +Block 0029 [ 16]: 6b74e316b38c6bd2 +Block 0029 [ 17]: da9a635a7a35e375 +Block 0029 [ 18]: eedcd0af08112474 +Block 0029 [ 19]: c4e3c5b62f518d59 +Block 0029 [ 20]: 07a9045032534a34 +Block 0029 [ 21]: 8e86baf9d908a2b5 +Block 0029 [ 22]: a12823e5e8d33cc6 +Block 0029 [ 23]: aecdaed64f20ce64 +Block 0029 [ 24]: cf81e3c1bd174f2a +Block 0029 [ 25]: 9b66257654f67fb7 +Block 0029 [ 26]: f3d9816877c71ade +Block 0029 [ 27]: 5e5d7109eb946b0f +Block 0029 [ 28]: cfabf5385167b3e7 +Block 0029 [ 29]: f10e7285325a928d +Block 0029 [ 30]: 179038a47687b7fa +Block 0029 [ 31]: 1209ab7eaf12118d +Block 0029 [ 32]: 2770efce7650bfa0 +Block 0029 [ 33]: 0d8622cfc8311eb0 +Block 0029 [ 34]: 4c83e4b1401e10ee +Block 0029 [ 35]: e7a9bf81a99de5e4 +Block 0029 [ 36]: 3bc5037d75e60ea5 +Block 0029 [ 37]: 9661e829b7a7ba4a +Block 0029 [ 38]: 9d33f0ff44e5bf07 +Block 0029 [ 39]: 522cd22f151397cc +Block 0029 [ 40]: 6b6272068e7fcbfc +Block 0029 [ 41]: fd58176e4a1bbd63 +Block 0029 [ 42]: 8daa234502905ad3 +Block 0029 [ 43]: 3efa160297920c1e +Block 0029 [ 44]: 25effc8c223c842e +Block 0029 [ 45]: 33bc726de3e9e93b +Block 0029 [ 46]: b9e9a801c48e3e99 +Block 0029 [ 47]: 2bc381b9ef4d5a2f +Block 0029 [ 48]: 6837fa8901fdc454 +Block 0029 [ 49]: f23ba3cee006be2b +Block 0029 [ 50]: 0255aaa71fec0b30 +Block 0029 [ 51]: 93ff41644f070fed +Block 0029 [ 52]: 1c1bc44a784a3ed4 +Block 0029 [ 53]: c430d3f39922e831 +Block 0029 [ 54]: 0923d42873597fc9 +Block 0029 [ 55]: cceb977535285fb3 +Block 0029 [ 56]: 8ca0c8994ffc8298 +Block 0029 [ 57]: 24c5d796e0394e74 +Block 0029 [ 58]: 2379800cd30f75d0 +Block 0029 [ 59]: 0f5eaf10e0976ac1 +Block 0029 [ 60]: 76c68cecfee565b8 +Block 0029 [ 61]: 0b647de2dd4f60eb +Block 0029 [ 62]: b9d97be8b9d383a1 +Block 0029 [ 63]: f904b1c9eccef85e +Block 0029 [ 64]: cca9c2c31c4231be +Block 0029 [ 65]: 5e48ce618e385e9f +Block 0029 [ 66]: 9c06a0eebfebca2f +Block 0029 [ 67]: 8180caaa86a0e64a +Block 0029 [ 68]: 5cf18413a32f2966 +Block 0029 [ 69]: c59a9dda2ba89f4d +Block 0029 [ 70]: 69338caebbfb57ec +Block 0029 [ 71]: b2209df6c60fd644 +Block 0029 [ 72]: 2ae1fd8436562fcd +Block 0029 [ 73]: e9bd61cae08d2451 +Block 0029 [ 74]: a4b3defce71b8b2c +Block 0029 [ 75]: 7f1d2047b6298ae2 +Block 0029 [ 76]: cdb72c0cd885af3b +Block 0029 [ 77]: 01d3fd9d4a69b3a4 +Block 0029 [ 78]: 43302b20f168c76c +Block 0029 [ 79]: 1580f91718fbd7c3 +Block 0029 [ 80]: 0f094d8bda5145ed +Block 0029 [ 81]: 4431891cc01a6d4f +Block 0029 [ 82]: c81674848264747c +Block 0029 [ 83]: de3b7800eb2e952a +Block 0029 [ 84]: 285f74d9190aa9e4 +Block 0029 [ 85]: 2cd143aff3fcec91 +Block 0029 [ 86]: 5579ad6b7db95d5a +Block 0029 [ 87]: 21749b437208eae9 +Block 0029 [ 88]: 7ef65a417893a6a9 +Block 0029 [ 89]: b4ceb7fa75463c39 +Block 0029 [ 90]: 3331cf19e3458714 +Block 0029 [ 91]: 6535e001a8a19f13 +Block 0029 [ 92]: aa68097aa9ff3e76 +Block 0029 [ 93]: 74eb5b4fdbe6f9a0 +Block 0029 [ 94]: d05996b9585d7a1d +Block 0029 [ 95]: 5601726c8d72a7ed +Block 0029 [ 96]: dfce7f302b2f05ff +Block 0029 [ 97]: 7dd1f91852f35728 +Block 0029 [ 98]: 1f8698b22c96ed8a +Block 0029 [ 99]: fca4b98cac2e9ece +Block 0029 [100]: 7fb9b24de99a5e85 +Block 0029 [101]: 2f8e30a8ce7c2e01 +Block 0029 [102]: ce1e83f07b07e303 +Block 0029 [103]: b134093842c631ac +Block 0029 [104]: 2c34cfdf69eb3afc +Block 0029 [105]: 4a9877b224c738af +Block 0029 [106]: 34af8d0d9f0f1ff3 +Block 0029 [107]: 2895793c87c52173 +Block 0029 [108]: 1dd6e52d77529937 +Block 0029 [109]: a05ece635779c143 +Block 0029 [110]: d262438d4c71f022 +Block 0029 [111]: 095bfd122b580ac3 +Block 0029 [112]: 24756361b5a5153a +Block 0029 [113]: e6ceee958b68a91d +Block 0029 [114]: cd728e6ee76a6551 +Block 0029 [115]: 8de4480de3e706dc +Block 0029 [116]: 58d1e5aaadaa81ea +Block 0029 [117]: 5bd443fcb025a311 +Block 0029 [118]: 2447b45da523cd5b +Block 0029 [119]: 770d3f8864efbbdb +Block 0029 [120]: bc11cfa12135a788 +Block 0029 [121]: cbf9d333493841c2 +Block 0029 [122]: 78ee18e0ce8f6acb +Block 0029 [123]: fd65bce63ab57899 +Block 0029 [124]: 18c1e72c8b937615 +Block 0029 [125]: 0315f5261511b26a +Block 0029 [126]: 2b3dab20a993a7d1 +Block 0029 [127]: 0b9feaeeee468d2f +Block 0030 [ 0]: b2052ef0dd8f768a +Block 0030 [ 1]: b2b2234ce1973cc3 +Block 0030 [ 2]: 143d19226de29046 +Block 0030 [ 3]: e97211989dedab2e +Block 0030 [ 4]: 2422d9d75bb5bb2c +Block 0030 [ 5]: 305d57c1db2a6865 +Block 0030 [ 6]: e24070b4a268131a +Block 0030 [ 7]: c195f3bc8374f60f +Block 0030 [ 8]: d22ec1870be3b450 +Block 0030 [ 9]: 4559d92ad988b95a +Block 0030 [ 10]: b048f80baa657118 +Block 0030 [ 11]: 0e528a71fad655a3 +Block 0030 [ 12]: 511d78d7d4fc0f33 +Block 0030 [ 13]: 27d7316835672471 +Block 0030 [ 14]: 8cf3ac78da4f354d +Block 0030 [ 15]: b14bb0436ba7bde1 +Block 0030 [ 16]: 8c1bcffac0305930 +Block 0030 [ 17]: a48e003e06294fab +Block 0030 [ 18]: 1c4b57890adaf5e6 +Block 0030 [ 19]: be8aacd556831ec0 +Block 0030 [ 20]: 9a31b07f36eee8ef +Block 0030 [ 21]: 7e290e793e182e2f +Block 0030 [ 22]: 34f7a70e1c71e3ee +Block 0030 [ 23]: ea7bd765e8889914 +Block 0030 [ 24]: 73bb2edb8aade3d4 +Block 0030 [ 25]: cc489b76677d6524 +Block 0030 [ 26]: ace427159176b2b6 +Block 0030 [ 27]: c7ba07529cafa00d +Block 0030 [ 28]: 92ba84640725a577 +Block 0030 [ 29]: 53db5e65e62f40eb +Block 0030 [ 30]: 997c21e63f59c0be +Block 0030 [ 31]: 21a008e41804b69a +Block 0030 [ 32]: 17565f5deec66b24 +Block 0030 [ 33]: a4aecbe8d7e6c344 +Block 0030 [ 34]: 77322670bb8d123d +Block 0030 [ 35]: ff8796a180f48928 +Block 0030 [ 36]: 21d4f5b662279278 +Block 0030 [ 37]: e2203839dab8f281 +Block 0030 [ 38]: 2038dc2c363f8b6a +Block 0030 [ 39]: 1d5a096ca3d83a43 +Block 0030 [ 40]: ceab1bcb187e1696 +Block 0030 [ 41]: bcc01d99df65815b +Block 0030 [ 42]: e1c41fc7fbe1733f +Block 0030 [ 43]: ba7bd22a99fbfc93 +Block 0030 [ 44]: 3bf9adbca3d5aa1e +Block 0030 [ 45]: 5f306633205050cd +Block 0030 [ 46]: 2f352fc9dc50c917 +Block 0030 [ 47]: d7e450f208ba7fed +Block 0030 [ 48]: 44b89f076c0a8e32 +Block 0030 [ 49]: 0222879a3652e295 +Block 0030 [ 50]: 758a6bdb8c865426 +Block 0030 [ 51]: f4cbb242a24e88a0 +Block 0030 [ 52]: c9b5bc6c1d0aa4e8 +Block 0030 [ 53]: cb7a79143dd740f4 +Block 0030 [ 54]: 26b7dda4e33fa82a +Block 0030 [ 55]: b265116b6b7f5fdc +Block 0030 [ 56]: 9d98fa4388b3b1d2 +Block 0030 [ 57]: 63613dd863ffad59 +Block 0030 [ 58]: 5d260e364270c1b5 +Block 0030 [ 59]: 7926ce139af5724f +Block 0030 [ 60]: d491f878ace5751d +Block 0030 [ 61]: cb3e3414137aacf3 +Block 0030 [ 62]: 062ce6f69e6855f9 +Block 0030 [ 63]: 0062e1c94c9fe256 +Block 0030 [ 64]: 92caa34b0ef94118 +Block 0030 [ 65]: dbc5f3073dc30f08 +Block 0030 [ 66]: be3d40036d538186 +Block 0030 [ 67]: 4fbcd8cd79b5052a +Block 0030 [ 68]: 2335944f5b2bf43f +Block 0030 [ 69]: d3a81c3cf09ec276 +Block 0030 [ 70]: 3c82254099597e83 +Block 0030 [ 71]: 60ed028842e9c82b +Block 0030 [ 72]: e10eec69b48c3384 +Block 0030 [ 73]: 1c70f1994eae3be1 +Block 0030 [ 74]: ad67e9cbb7398a34 +Block 0030 [ 75]: dacf3aa8a4a0ba0c +Block 0030 [ 76]: f93343c03119b360 +Block 0030 [ 77]: 667246ada6958ce2 +Block 0030 [ 78]: b3edc34acaf5bbd2 +Block 0030 [ 79]: 3a0309b96bc4f5b6 +Block 0030 [ 80]: 07cfe170c526dfed +Block 0030 [ 81]: a7ea925aa63371f8 +Block 0030 [ 82]: 71f7658e621ebfb7 +Block 0030 [ 83]: 3912f92e486900cd +Block 0030 [ 84]: aedf0645dccfdb9f +Block 0030 [ 85]: 5fd59b9193f61ffc +Block 0030 [ 86]: 1d1885d2ee2a09ea +Block 0030 [ 87]: 54525cea48c434d4 +Block 0030 [ 88]: fde50a79628501e3 +Block 0030 [ 89]: d2bdb7791728bc8c +Block 0030 [ 90]: f47623128330618a +Block 0030 [ 91]: d386f78c8135ba7f +Block 0030 [ 92]: 83508d04d7acdbb2 +Block 0030 [ 93]: d72bec03760e0396 +Block 0030 [ 94]: 797e03273a488905 +Block 0030 [ 95]: 4436818cd7d1722a +Block 0030 [ 96]: 3f7b2a6b2c71efa7 +Block 0030 [ 97]: df843ca2b4d35c43 +Block 0030 [ 98]: bb8b8dcfd2b319dc +Block 0030 [ 99]: 37036a2b2eedf738 +Block 0030 [100]: b090f8e2d304969d +Block 0030 [101]: 650cccfd275c64b6 +Block 0030 [102]: dcfee0436658a01e +Block 0030 [103]: a551a617a6b6a03b +Block 0030 [104]: 12658c3efa5b96f0 +Block 0030 [105]: 4bf8704cdadb4120 +Block 0030 [106]: 91f163a47f8f6d0c +Block 0030 [107]: d67877cafce702cd +Block 0030 [108]: 3c9cf393dfd17fc3 +Block 0030 [109]: 503f28c42762fb95 +Block 0030 [110]: f2c82fa39d46da89 +Block 0030 [111]: 037acff46f38e827 +Block 0030 [112]: 7d6edb0bb6ed18b0 +Block 0030 [113]: 0ae509fab7d47c9b +Block 0030 [114]: 82f725b5acdecd8e +Block 0030 [115]: 9a30b79e16b1477f +Block 0030 [116]: 87d77f42cdeb213c +Block 0030 [117]: b18c6f2b9c1919d2 +Block 0030 [118]: b915794dffc5501f +Block 0030 [119]: 0c6b77c723ca40cf +Block 0030 [120]: 19ca061467c3b5c2 +Block 0030 [121]: 9eb33654b6244029 +Block 0030 [122]: 8583a9d82347931c +Block 0030 [123]: c04fa36a94647b18 +Block 0030 [124]: f886d82796d3d215 +Block 0030 [125]: 25d68dbad584ebe4 +Block 0030 [126]: 1d1de84c4e7bb0e0 +Block 0030 [127]: 12964c6a8e3c24c5 +Block 0031 [ 0]: 1a2c8c1bcaabe68b +Block 0031 [ 1]: b7fd776c18f9b862 +Block 0031 [ 2]: f45b25d204f536c6 +Block 0031 [ 3]: 0e1ec1d884b332ec +Block 0031 [ 4]: 85ba1f4bdbad8499 +Block 0031 [ 5]: 0f32370a51cd3bc1 +Block 0031 [ 6]: f9a8d18784762055 +Block 0031 [ 7]: 6033bc1c026256ae +Block 0031 [ 8]: 7c2ecce01d0d64c9 +Block 0031 [ 9]: 651628e8f822d4f6 +Block 0031 [ 10]: 93b7ce3adf7b86d2 +Block 0031 [ 11]: 95f87ed6efb293db +Block 0031 [ 12]: c5432aefa2fd457f +Block 0031 [ 13]: 00c5907d79fa6b5e +Block 0031 [ 14]: 330562160036c2c1 +Block 0031 [ 15]: 9095bbddb1b6e02e +Block 0031 [ 16]: 37336fa02074432c +Block 0031 [ 17]: 2f74cc26c2050fe7 +Block 0031 [ 18]: 06e2b942aa0b29a3 +Block 0031 [ 19]: c1b41019bdc69a34 +Block 0031 [ 20]: de7010f1e1e1313f +Block 0031 [ 21]: eb0fc0f48840d290 +Block 0031 [ 22]: bdbd37932788c629 +Block 0031 [ 23]: 1d42b93ecf1c2bbd +Block 0031 [ 24]: e42e70e9cb70832b +Block 0031 [ 25]: e652991b2aa76029 +Block 0031 [ 26]: 23fb258e4e7fee36 +Block 0031 [ 27]: 674d3ac465bddc12 +Block 0031 [ 28]: 56a17a87b3e7fdc4 +Block 0031 [ 29]: b10fafba31785f46 +Block 0031 [ 30]: bd16e3f7c623e5fb +Block 0031 [ 31]: 50dffab4fa9ff60e +Block 0031 [ 32]: 94d9b2ce9a522f3f +Block 0031 [ 33]: 80c610c5aec3601e +Block 0031 [ 34]: 40209cc4c5430d7c +Block 0031 [ 35]: 11af15192ea2bac0 +Block 0031 [ 36]: ccbd3b3c53528d22 +Block 0031 [ 37]: 29c6b992555c2df7 +Block 0031 [ 38]: 7a3d9aec341eb2d2 +Block 0031 [ 39]: 7cf7e40e94efc19a +Block 0031 [ 40]: ffcbeb96f181a60c +Block 0031 [ 41]: a9e7fc1c04eaaf72 +Block 0031 [ 42]: 7a11028ec5f57bd3 +Block 0031 [ 43]: ac50d9103f4a38a7 +Block 0031 [ 44]: 62c2ab00c9050c55 +Block 0031 [ 45]: 19ace5b13e02ef92 +Block 0031 [ 46]: 15805e1aa8d6d234 +Block 0031 [ 47]: a83da175fd667938 +Block 0031 [ 48]: 599544fe52cccc3c +Block 0031 [ 49]: 7328d9fa3a03bdd2 +Block 0031 [ 50]: e99f9beec2239b0e +Block 0031 [ 51]: e2665d5afd9bf4cd +Block 0031 [ 52]: f18fdbec632ad538 +Block 0031 [ 53]: c0f2934c37d59988 +Block 0031 [ 54]: 063d57b42ce3fe55 +Block 0031 [ 55]: 59cef85aa100303c +Block 0031 [ 56]: b804c6444c2a37fd +Block 0031 [ 57]: a0a46c89999cce7d +Block 0031 [ 58]: bd02136cdd2729b0 +Block 0031 [ 59]: 47895d4bc230b5b2 +Block 0031 [ 60]: 72dcd1e60d596ace +Block 0031 [ 61]: d3de8808628f18db +Block 0031 [ 62]: f5314a77dc38704e +Block 0031 [ 63]: ddd68c71a56ef2fc +Block 0031 [ 64]: 467bc2e5455c1ae7 +Block 0031 [ 65]: c9ea376dbeb55719 +Block 0031 [ 66]: e5034a450818a9cc +Block 0031 [ 67]: 1cfe70d8e73160fe +Block 0031 [ 68]: 81bd4568141b1161 +Block 0031 [ 69]: 52e25159c99a81e1 +Block 0031 [ 70]: 7b0584c6185b2ca7 +Block 0031 [ 71]: bcaa6093048ce033 +Block 0031 [ 72]: d3e27332ed086c0d +Block 0031 [ 73]: 9c93d42ba384372d +Block 0031 [ 74]: e7f690faa06d23d2 +Block 0031 [ 75]: 4cdd9f1007f7021b +Block 0031 [ 76]: 6be8fb6a4861435f +Block 0031 [ 77]: 048206d822bb042f +Block 0031 [ 78]: fd158dcb8c5ffda6 +Block 0031 [ 79]: 751d0f0b4a45bf77 +Block 0031 [ 80]: 862179d699217e2a +Block 0031 [ 81]: 7137c108e8207ff4 +Block 0031 [ 82]: 9849386ad51ebd49 +Block 0031 [ 83]: 2b1dc6fd29b4de8c +Block 0031 [ 84]: e9572bf08ff72695 +Block 0031 [ 85]: 595505301c056fe7 +Block 0031 [ 86]: 01adcab40f77fe14 +Block 0031 [ 87]: 9192080456546a10 +Block 0031 [ 88]: afceb66af9c8b1ad +Block 0031 [ 89]: ca3828fa65c64bb9 +Block 0031 [ 90]: fecd07d3146ea570 +Block 0031 [ 91]: b3066118394c1441 +Block 0031 [ 92]: 54d3a1d691bc0001 +Block 0031 [ 93]: f9117f8477ab3070 +Block 0031 [ 94]: 6cf7675acdbf390a +Block 0031 [ 95]: 1a24b03a02cc2cc1 +Block 0031 [ 96]: 9665f44bcee15e0c +Block 0031 [ 97]: ee19c0e5b5dadc4e +Block 0031 [ 98]: 0f14abfed1b8a0a5 +Block 0031 [ 99]: a4767e7d6c36a1aa +Block 0031 [100]: f53b35d3fc79f49b +Block 0031 [101]: 91a1f89fbd7bb719 +Block 0031 [102]: e960e8c3c6bf7be5 +Block 0031 [103]: b9a6f3159aa3bf7b +Block 0031 [104]: 58864d1643b857f7 +Block 0031 [105]: 4b6cdc649b45b4a2 +Block 0031 [106]: 84a895724ac0a7b5 +Block 0031 [107]: dde4c935479d6403 +Block 0031 [108]: 903dd11f8c11cf0c +Block 0031 [109]: 9f58c04ce66c1b7f +Block 0031 [110]: 62f18bed8942b0d0 +Block 0031 [111]: 205921ed45b35441 +Block 0031 [112]: 975afa8726547dd7 +Block 0031 [113]: 44b535af11791774 +Block 0031 [114]: 91344f7802210472 +Block 0031 [115]: 3209a717e8b8a883 +Block 0031 [116]: 0d970f1c82784832 +Block 0031 [117]: 450ab7ef353a856e +Block 0031 [118]: d8268f9ea2dc02f6 +Block 0031 [119]: f986c5ffcb996a13 +Block 0031 [120]: e34469a95b305c6b +Block 0031 [121]: d246ee673527bddb +Block 0031 [122]: e28ab4d42c75568e +Block 0031 [123]: 645ed1164314f06c +Block 0031 [124]: 9eacfcfbdb3ce0fc +Block 0031 [125]: 07dedaeb0aee71ac +Block 0031 [126]: 074435fad91548f4 +Block 0031 [127]: 2dbfff23f31b5883 + + After pass 2: +Block 0000 [ 0]: 5f047b575c5ff4d2 +Block 0000 [ 1]: f06985dbf11c91a8 +Block 0000 [ 2]: 89efb2759f9a8964 +Block 0000 [ 3]: 7486a73f62f9b142 +Block 0000 [ 4]: 04510925420c66ee +Block 0000 [ 5]: 02ec38228c37c5c1 +Block 0000 [ 6]: e6ab2b457912bab8 +Block 0000 [ 7]: 7a7302160f813d0b +Block 0000 [ 8]: 85196983c6a99c88 +Block 0000 [ 9]: 793919b5d4d2fe3f +Block 0000 [ 10]: 4174ca650bf22cbf +Block 0000 [ 11]: 73d33705a47001a6 +Block 0000 [ 12]: 10eb4382afcc83c8 +Block 0000 [ 13]: 52fed27577f0d80f +Block 0000 [ 14]: 36d1c95b87f653da +Block 0000 [ 15]: 6f9e5acbdb49a453 +Block 0000 [ 16]: b8262734f13b4a90 +Block 0000 [ 17]: a8f02f5e522cc67c +Block 0000 [ 18]: fff3ae5438debcf9 +Block 0000 [ 19]: e60bf91cdef498bc +Block 0000 [ 20]: 92ec94d4802a8bf1 +Block 0000 [ 21]: 0a2d24b6e655dc7d +Block 0000 [ 22]: 7d1d0fb920dd0459 +Block 0000 [ 23]: dedd69551c04b7c1 +Block 0000 [ 24]: 3511aededd90af82 +Block 0000 [ 25]: a1c6ec50f1a3ee01 +Block 0000 [ 26]: 28740d043e641129 +Block 0000 [ 27]: b28aa3b94d3c62eb +Block 0000 [ 28]: 953f8ce4563fefc9 +Block 0000 [ 29]: 64480ac4c555dc1c +Block 0000 [ 30]: 30948d009ba6d9d0 +Block 0000 [ 31]: b12e34f4768d5ab1 +Block 0000 [ 32]: ea79366a5c411c94 +Block 0000 [ 33]: 3820909417b535b2 +Block 0000 [ 34]: a60b56c5d8e47c14 +Block 0000 [ 35]: 6d64419df3c1657b +Block 0000 [ 36]: 4e60fe0e68fdc370 +Block 0000 [ 37]: 6b34d1e7ffd1f58f +Block 0000 [ 38]: a2618e2a71782401 +Block 0000 [ 39]: 2e0ebd59471df5f1 +Block 0000 [ 40]: afca46f9e6c7a3a8 +Block 0000 [ 41]: 0afc976edd5eef13 +Block 0000 [ 42]: 8d57326fca2940a7 +Block 0000 [ 43]: 4b0896a7e28a8009 +Block 0000 [ 44]: ba9b97a085d9944f +Block 0000 [ 45]: 86dc7b027eb5239d +Block 0000 [ 46]: a1adb7eea4de8f4b +Block 0000 [ 47]: e14b47fb17ee94a0 +Block 0000 [ 48]: 0673a2ded047d48a +Block 0000 [ 49]: 8018a5b24996b8b8 +Block 0000 [ 50]: 550adaf7002459f4 +Block 0000 [ 51]: 619740442a82e646 +Block 0000 [ 52]: 841d26f23222d87e +Block 0000 [ 53]: a5bda4a6c6ebef40 +Block 0000 [ 54]: 1d35886ff0994a0a +Block 0000 [ 55]: 9f2efe245a9a0f6d +Block 0000 [ 56]: da834952d4054492 +Block 0000 [ 57]: 79b44cfc747e6e35 +Block 0000 [ 58]: 454f45b843148ea7 +Block 0000 [ 59]: fe4e7e8d6ee284d4 +Block 0000 [ 60]: 81bfeb6930e92f50 +Block 0000 [ 61]: c5a8c22323c3329e +Block 0000 [ 62]: b7a4075886e814f7 +Block 0000 [ 63]: 38485da04db198a4 +Block 0000 [ 64]: fffa92db07389636 +Block 0000 [ 65]: 4079321de7a249f7 +Block 0000 [ 66]: 9150351d5a078294 +Block 0000 [ 67]: fe6da74e90e55b56 +Block 0000 [ 68]: d151fdb37e488be9 +Block 0000 [ 69]: 222fcdcaa2951d4a +Block 0000 [ 70]: cf7466f1e72ce6a6 +Block 0000 [ 71]: 270d3da26dca1c5b +Block 0000 [ 72]: 567e57efd070a016 +Block 0000 [ 73]: 2786865e1820fb18 +Block 0000 [ 74]: adabab3af194dcc3 +Block 0000 [ 75]: 9b41d5ba67787de2 +Block 0000 [ 76]: 931f4d8a86aca9e1 +Block 0000 [ 77]: d9bca2e97b0d4c9e +Block 0000 [ 78]: 62f0c0bb37535905 +Block 0000 [ 79]: 5776709c1ead9801 +Block 0000 [ 80]: 6ee4546f7151d0e3 +Block 0000 [ 81]: f6884c2886809927 +Block 0000 [ 82]: 2137d2b78baa5334 +Block 0000 [ 83]: 52861e17e6b0be52 +Block 0000 [ 84]: 3c7331786635fddc +Block 0000 [ 85]: 25d2804d3b22f999 +Block 0000 [ 86]: ef36e6d7d49fbb86 +Block 0000 [ 87]: afe8278e58dce088 +Block 0000 [ 88]: 9922e9f924c3588c +Block 0000 [ 89]: 0171a37fc1ef9c4d +Block 0000 [ 90]: a7841e6d2dfa7d6a +Block 0000 [ 91]: e1f0fdfae60f66ba +Block 0000 [ 92]: 29009786b06cd61b +Block 0000 [ 93]: 9c4dfe4cc81fc529 +Block 0000 [ 94]: 35d9e9d3af62794f +Block 0000 [ 95]: 34b057c385eb4fa3 +Block 0000 [ 96]: b3064864a0abf7a0 +Block 0000 [ 97]: e8fbd585908f564a +Block 0000 [ 98]: 5dadf05c04c6e76f +Block 0000 [ 99]: ad0e98068b35bf8b +Block 0000 [100]: e3256c1b7cd320ff +Block 0000 [101]: 8e7673b95838317e +Block 0000 [102]: d8e8331b4fd1f648 +Block 0000 [103]: 2bb6651719c89e56 +Block 0000 [104]: 6110bfa919d8c5ef +Block 0000 [105]: aad86681411c2ac7 +Block 0000 [106]: afbd14609f1d924b +Block 0000 [107]: d568c327bd96e968 +Block 0000 [108]: 8d810ddc42ede14c +Block 0000 [109]: a70d18be3ce495e6 +Block 0000 [110]: 1e38926e13748064 +Block 0000 [111]: ee37b89b52fc73fd +Block 0000 [112]: 96157ab6dc1e04dc +Block 0000 [113]: bb0a05f04288cc31 +Block 0000 [114]: 7134bfe5ce3962a3 +Block 0000 [115]: b25e1793c8803d91 +Block 0000 [116]: 2dffadb73a9c092a +Block 0000 [117]: 934b6dccfa3f7461 +Block 0000 [118]: 509ac15213826b45 +Block 0000 [119]: 21bb0bd5cc719fe5 +Block 0000 [120]: 150184fdbddd607f +Block 0000 [121]: 7d177f7f6b568b47 +Block 0000 [122]: cf69c346b4077ed5 +Block 0000 [123]: 1646908bd3cfd3a7 +Block 0000 [124]: d3198f31d64ab429 +Block 0000 [125]: ea0fd99cc5edcf8f +Block 0000 [126]: b008b065b82a72bc +Block 0000 [127]: 505fd35d1e4ccef7 +Block 0001 [ 0]: e23fe02dfece0288 +Block 0001 [ 1]: 7a7047500e615340 +Block 0001 [ 2]: afd8a4beaf7eecbe +Block 0001 [ 3]: 3853b52881b4d557 +Block 0001 [ 4]: 3a0726b2611e576c +Block 0001 [ 5]: 164de228aef03411 +Block 0001 [ 6]: e0ef04f35c1b90bf +Block 0001 [ 7]: 8a24c8c277606abb +Block 0001 [ 8]: 15a9a3833a46cd66 +Block 0001 [ 9]: 3479e3154cbd781b +Block 0001 [ 10]: cee2576a3ea0a445 +Block 0001 [ 11]: 71c742512ce7dfe7 +Block 0001 [ 12]: 374bb75c47786552 +Block 0001 [ 13]: 630b3b5d99fcd3e7 +Block 0001 [ 14]: 846e9694385dcb34 +Block 0001 [ 15]: 5be2868061e80aa0 +Block 0001 [ 16]: 0e16b6de661c36fc +Block 0001 [ 17]: 0e0d73e8f72a85cf +Block 0001 [ 18]: 662e527420484106 +Block 0001 [ 19]: fcbe0420b0c32a2f +Block 0001 [ 20]: 89e98ddc25ef2d06 +Block 0001 [ 21]: 5caa597bcb7ba3e7 +Block 0001 [ 22]: 8e03cf25508e979f +Block 0001 [ 23]: 363bd2a52521a8f2 +Block 0001 [ 24]: c1f3534d80f3aeeb +Block 0001 [ 25]: b3eb770ff7cb18db +Block 0001 [ 26]: 2c7aa5f0da8ac2e7 +Block 0001 [ 27]: 15e9bdb364864ddc +Block 0001 [ 28]: 255c874b1c6a9018 +Block 0001 [ 29]: b5ba03b749263dbf +Block 0001 [ 30]: e2ed6f93e61f5697 +Block 0001 [ 31]: a78394dcc822edab +Block 0001 [ 32]: c08c2ac9e1443d09 +Block 0001 [ 33]: b88b9991ebef2207 +Block 0001 [ 34]: fcd15d6715225a8f +Block 0001 [ 35]: a9133bf21b326cd9 +Block 0001 [ 36]: eb9e37c6a7389f4a +Block 0001 [ 37]: e512d3c8e4461442 +Block 0001 [ 38]: 43ea6edbdfee43da +Block 0001 [ 39]: 7732be0a715b4fe1 +Block 0001 [ 40]: b7f665f9497beedf +Block 0001 [ 41]: dec2cc2b22055132 +Block 0001 [ 42]: c453e83a35577b22 +Block 0001 [ 43]: 0bec3a763bd104fe +Block 0001 [ 44]: 8b3bae725e3cd134 +Block 0001 [ 45]: ee59014b976308ab +Block 0001 [ 46]: f87ad095fb5c97cf +Block 0001 [ 47]: 0ae0eaceb2778e2f +Block 0001 [ 48]: 723bd2b7767936c5 +Block 0001 [ 49]: f49d4c733715ef4e +Block 0001 [ 50]: d3c7f66d314946ea +Block 0001 [ 51]: b4d09df6006617bd +Block 0001 [ 52]: 7cacc786cae67a7f +Block 0001 [ 53]: cb7c92aa113c6456 +Block 0001 [ 54]: 00beca54428b7dfc +Block 0001 [ 55]: 411b91c93166751e +Block 0001 [ 56]: db3db21fad2ef261 +Block 0001 [ 57]: 4c7fdda23adee093 +Block 0001 [ 58]: 9aa9d0309fe56528 +Block 0001 [ 59]: 7ac95d0e833e8229 +Block 0001 [ 60]: b866b5cac808e923 +Block 0001 [ 61]: ec33c77566bd6359 +Block 0001 [ 62]: b2eebb43d735ee1d +Block 0001 [ 63]: 118649041c59e2a7 +Block 0001 [ 64]: af20206ba5a1d752 +Block 0001 [ 65]: ba2ffe7788aae99a +Block 0001 [ 66]: a7b7298d3894db9f +Block 0001 [ 67]: 672ca76708483292 +Block 0001 [ 68]: aff4782c897c1a19 +Block 0001 [ 69]: 538d023ad96755df +Block 0001 [ 70]: 7ed7c497cab08355 +Block 0001 [ 71]: 884b34285863cb15 +Block 0001 [ 72]: ad1074a607136bf4 +Block 0001 [ 73]: 2ce505de99c23839 +Block 0001 [ 74]: b5604fab94c774ce +Block 0001 [ 75]: 109c4bd7c942078d +Block 0001 [ 76]: 3162ee468266a0bb +Block 0001 [ 77]: 6c3fc918ea50144b +Block 0001 [ 78]: 78f48ec6e1935763 +Block 0001 [ 79]: 40d6723006b90439 +Block 0001 [ 80]: 949a1c0ada5735dc +Block 0001 [ 81]: dc267afd286782f0 +Block 0001 [ 82]: 8804bd6d72a09d6d +Block 0001 [ 83]: bf39223e7a69770f +Block 0001 [ 84]: eb9d92cf56dff8d4 +Block 0001 [ 85]: 9ba7e9818f3e2b83 +Block 0001 [ 86]: accc832478308d87 +Block 0001 [ 87]: 71426e5757b74cf5 +Block 0001 [ 88]: 86a2ce89cd883f48 +Block 0001 [ 89]: d51f5d0a02790eb0 +Block 0001 [ 90]: 69e80c29297bedba +Block 0001 [ 91]: b3ec930fd404c55f +Block 0001 [ 92]: f24a1b23b7fedd1b +Block 0001 [ 93]: df5eccd58d6e4d6d +Block 0001 [ 94]: df40d0c69d78d9e8 +Block 0001 [ 95]: 3f8deaad8715ac9e +Block 0001 [ 96]: 1420be79644c1361 +Block 0001 [ 97]: 7e419bbb9bb9c864 +Block 0001 [ 98]: 013bf5d9ff74a285 +Block 0001 [ 99]: 581cd3a635a82691 +Block 0001 [100]: 199060c3ec5749a7 +Block 0001 [101]: d2fb1f9a243f098e +Block 0001 [102]: 37e1d71ee09bf2ea +Block 0001 [103]: 8c6955f9c37d373d +Block 0001 [104]: 0198d6d56e79086c +Block 0001 [105]: 129bfc2713ea2f9b +Block 0001 [106]: 8a967e53ac7c5692 +Block 0001 [107]: 75c7da7d357d5081 +Block 0001 [108]: 2dd6000b05d59968 +Block 0001 [109]: 06d0f5a683d1d03d +Block 0001 [110]: ebe5918726260f2f +Block 0001 [111]: 6930dac6aed65ff2 +Block 0001 [112]: e6df29645dd40e27 +Block 0001 [113]: 7b194cdaa168bcbe +Block 0001 [114]: 4a6cf8603ba55ee7 +Block 0001 [115]: 810f83dfc5dba615 +Block 0001 [116]: 07309feafb67199a +Block 0001 [117]: f6935d2b7c348c42 +Block 0001 [118]: 03c9c420a3e2eb7e +Block 0001 [119]: 8fe083617e5113eb +Block 0001 [120]: 28646389371863dc +Block 0001 [121]: 9d2d5c7776640f98 +Block 0001 [122]: 50494930c9be4284 +Block 0001 [123]: ef8058bf7ff7bde1 +Block 0001 [124]: be1b94279c25e46c +Block 0001 [125]: dcf4a14db25c1256 +Block 0001 [126]: ca8ef78ff53a0810 +Block 0001 [127]: 60f3728e2974e872 +Block 0002 [ 0]: 39369bd574bae1e2 +Block 0002 [ 1]: 03c14c225a42f602 +Block 0002 [ 2]: 59451ab02d6097c4 +Block 0002 [ 3]: 6201036724302781 +Block 0002 [ 4]: 7df52ebbc54327fb +Block 0002 [ 5]: 02cfe5c5677df54c +Block 0002 [ 6]: 383b7ca84b2fe67b +Block 0002 [ 7]: 935af47cb7e61e8e +Block 0002 [ 8]: 2986c34f785bf3ce +Block 0002 [ 9]: 7fba12b74db5a3ea +Block 0002 [ 10]: 0ff431215ac1f459 +Block 0002 [ 11]: 43a4cb7337fcd315 +Block 0002 [ 12]: 814d8fe45d6cecae +Block 0002 [ 13]: 7b902f70ed347f57 +Block 0002 [ 14]: 29fe23d166395653 +Block 0002 [ 15]: eef4afe6df3f28f3 +Block 0002 [ 16]: 127e45c900e2c848 +Block 0002 [ 17]: 3306010e528593e7 +Block 0002 [ 18]: b8c02ac97a845931 +Block 0002 [ 19]: 46b64e9d8859791c +Block 0002 [ 20]: 7c4593f720b8abfc +Block 0002 [ 21]: e671739a7fa910c8 +Block 0002 [ 22]: 3c0ca2e596d4c5d7 +Block 0002 [ 23]: e5cc2e4ca17ee077 +Block 0002 [ 24]: 701b7a9777c5b49a +Block 0002 [ 25]: 9131b8f9e8d63e08 +Block 0002 [ 26]: 2b7337f76bc9eacd +Block 0002 [ 27]: 2239c65e34ca42fb +Block 0002 [ 28]: 745f147facd4c359 +Block 0002 [ 29]: 82719af98b72fd9d +Block 0002 [ 30]: cd2848b4284fde78 +Block 0002 [ 31]: ca255cad0f479018 +Block 0002 [ 32]: db7ec3db4fa79052 +Block 0002 [ 33]: 2a3a0842efecbdd6 +Block 0002 [ 34]: e6f8d36519338fa6 +Block 0002 [ 35]: 54bb7617ed5b435e +Block 0002 [ 36]: 3b2807d9b536ad4a +Block 0002 [ 37]: fc84c316852ec1fa +Block 0002 [ 38]: 26b77f4eb9432021 +Block 0002 [ 39]: d789c86e89425b09 +Block 0002 [ 40]: f8be2d5484b0516a +Block 0002 [ 41]: 2bfeda2bb3b7e808 +Block 0002 [ 42]: d3bafc5d0646a46f +Block 0002 [ 43]: 3d0952ab4da0d97d +Block 0002 [ 44]: 7464b8d709366c81 +Block 0002 [ 45]: 36d1b42cde123306 +Block 0002 [ 46]: 8004e517e8316a81 +Block 0002 [ 47]: 7c90747d7b078051 +Block 0002 [ 48]: 199d6dfc53aa8200 +Block 0002 [ 49]: 259280428b473b5a +Block 0002 [ 50]: b8f07b7ef895a5e0 +Block 0002 [ 51]: e1d51665927f76bd +Block 0002 [ 52]: a8eb08f4e73b8cdd +Block 0002 [ 53]: ee82681cc6052db9 +Block 0002 [ 54]: e5826081a53a17f6 +Block 0002 [ 55]: ff40c3b7dd042602 +Block 0002 [ 56]: 57dd3f387a60b728 +Block 0002 [ 57]: 807a505c9f389331 +Block 0002 [ 58]: 67f2d7a33e606167 +Block 0002 [ 59]: 2d45965aa7e282f9 +Block 0002 [ 60]: 5624e92fb2dc4f4b +Block 0002 [ 61]: a1538a72c67d49b8 +Block 0002 [ 62]: a69b48d6b0e95ba7 +Block 0002 [ 63]: 4da8014e6a26f616 +Block 0002 [ 64]: 5d6b7d6ab6ebc703 +Block 0002 [ 65]: aeb74a3c5d7f4e27 +Block 0002 [ 66]: e67f12f71042997d +Block 0002 [ 67]: 8b4e258db674c59b +Block 0002 [ 68]: 095994a8f629afa1 +Block 0002 [ 69]: cefe061777f2b9ba +Block 0002 [ 70]: 3111c90d014dfd20 +Block 0002 [ 71]: 9326129a0010bd4c +Block 0002 [ 72]: ac17c28df5603581 +Block 0002 [ 73]: ad9e792b2600856b +Block 0002 [ 74]: 7b52afe6653f1cbc +Block 0002 [ 75]: 4a3e1516bfaf4925 +Block 0002 [ 76]: 8a082f41cca1c7de +Block 0002 [ 77]: 5e078a2d9634808e +Block 0002 [ 78]: 24951ed4ec5dea22 +Block 0002 [ 79]: 3091f28343d7c8b3 +Block 0002 [ 80]: dd18c8476dee4378 +Block 0002 [ 81]: fb421e171aac32be +Block 0002 [ 82]: 76bfb4022d16cfdb +Block 0002 [ 83]: 8f11eff2545455b4 +Block 0002 [ 84]: 8a2caf8661e95761 +Block 0002 [ 85]: 978e70edf1fafd80 +Block 0002 [ 86]: db4c587ad8767542 +Block 0002 [ 87]: 048172243ee062ab +Block 0002 [ 88]: ad90fc7b6b091293 +Block 0002 [ 89]: 2cc72efbd1e1fc8a +Block 0002 [ 90]: 639149af926c30ee +Block 0002 [ 91]: 7f942b868a1e86c5 +Block 0002 [ 92]: 8dd06eb5391596bc +Block 0002 [ 93]: e06cd833c21c3452 +Block 0002 [ 94]: f6f1f3faaa49b90c +Block 0002 [ 95]: b69c11f167588766 +Block 0002 [ 96]: 33eba8a816984e87 +Block 0002 [ 97]: 75c80eebb391fd0d +Block 0002 [ 98]: f9fdf867aa40219f +Block 0002 [ 99]: 73d3352396231a1e +Block 0002 [100]: 1c4bacf442c7da1e +Block 0002 [101]: b6b7fe2213ed030c +Block 0002 [102]: 8d0c685cb7c66ed9 +Block 0002 [103]: 1a96ac2110dd72bb +Block 0002 [104]: 244427570cb404eb +Block 0002 [105]: 8ae727d6c5d3518d +Block 0002 [106]: 97b104542790620e +Block 0002 [107]: 622dfdd36156eeca +Block 0002 [108]: a681e9d1ddda8db1 +Block 0002 [109]: f83107b93461b7f7 +Block 0002 [110]: cac3d7435c8b7450 +Block 0002 [111]: 876b185293c2ca77 +Block 0002 [112]: 2e1062849912cca8 +Block 0002 [113]: 467cf6b5ac5de0d5 +Block 0002 [114]: 6f44c747864760d5 +Block 0002 [115]: 7c686cf9c11360c3 +Block 0002 [116]: 3ed0e4a95c138496 +Block 0002 [117]: 6993c2bc63d9ac3d +Block 0002 [118]: 0fb471c25e0c41f8 +Block 0002 [119]: b7b0a9f7f9f49c2f +Block 0002 [120]: b8f3f293846684d6 +Block 0002 [121]: d5e6beb9078d4fd5 +Block 0002 [122]: dd647833684bd281 +Block 0002 [123]: 9978cc549f5c517e +Block 0002 [124]: d2c6b09d7235366d +Block 0002 [125]: 42dd43d586384fb5 +Block 0002 [126]: 1e54c27c01e78a0a +Block 0002 [127]: 08a37dbd2e2c584c +Block 0003 [ 0]: f654555f71650eb5 +Block 0003 [ 1]: 3311cb058032eb5e +Block 0003 [ 2]: fc42c737ea9c6945 +Block 0003 [ 3]: e21292d9164f2490 +Block 0003 [ 4]: 27d5b895386b5566 +Block 0003 [ 5]: 33f63d927b58fc26 +Block 0003 [ 6]: 32174cdb2bdc697a +Block 0003 [ 7]: 1631ec0d811e1d44 +Block 0003 [ 8]: 5ff386aeb5b7bbc9 +Block 0003 [ 9]: 286d219ba13605b2 +Block 0003 [ 10]: 0eafeddd1a0e0ef1 +Block 0003 [ 11]: 2ba6e0082d1218ae +Block 0003 [ 12]: 6956be8e800c160c +Block 0003 [ 13]: fded8de7903d4593 +Block 0003 [ 14]: edcac78e6073c155 +Block 0003 [ 15]: 273bc8ae910e209f +Block 0003 [ 16]: 4936f51d1793db47 +Block 0003 [ 17]: abfd6cef979f9dc7 +Block 0003 [ 18]: 85f80f74df948f05 +Block 0003 [ 19]: facb8f407834cdbf +Block 0003 [ 20]: f17ef84c91fefb2e +Block 0003 [ 21]: 0bc71a9ff8563aa5 +Block 0003 [ 22]: 5f00784cdffd8521 +Block 0003 [ 23]: c3efad6fcbbc8a06 +Block 0003 [ 24]: 9490284fad1de8b8 +Block 0003 [ 25]: 14d654aedea41317 +Block 0003 [ 26]: c6d4efd8354e0949 +Block 0003 [ 27]: b9d56d742808a1c6 +Block 0003 [ 28]: 93c4b288ef9737e2 +Block 0003 [ 29]: da912a5517927945 +Block 0003 [ 30]: 153b0fd5456cea9f +Block 0003 [ 31]: 88ff1e555463a130 +Block 0003 [ 32]: 29a555f4cd5b9da0 +Block 0003 [ 33]: 14c51a88b06a0773 +Block 0003 [ 34]: 127711470296f408 +Block 0003 [ 35]: b77c859a87ddd4b2 +Block 0003 [ 36]: 55989192f96f7c3d +Block 0003 [ 37]: b8cd6fa583cf4447 +Block 0003 [ 38]: 30e4137e4fe0b6a3 +Block 0003 [ 39]: d193e8dcb686123f +Block 0003 [ 40]: ae11628e6951ccc9 +Block 0003 [ 41]: 87c07ce234d715ed +Block 0003 [ 42]: 48512af01ece52c6 +Block 0003 [ 43]: ac5bd0db212ea1c2 +Block 0003 [ 44]: fc27495856d80c64 +Block 0003 [ 45]: d52ad551af985ed5 +Block 0003 [ 46]: 0f61ba492b8ea576 +Block 0003 [ 47]: 16f7d80e585074f7 +Block 0003 [ 48]: 1168c339be2be781 +Block 0003 [ 49]: 5491fea8c46927b3 +Block 0003 [ 50]: aa61457274175666 +Block 0003 [ 51]: 3a4cf2ecfa768b01 +Block 0003 [ 52]: 0b02dfde40ed6dd9 +Block 0003 [ 53]: 3aef92409270803d +Block 0003 [ 54]: 7d9b3b46d5f370b3 +Block 0003 [ 55]: 8bfe8cea00744a99 +Block 0003 [ 56]: c3ddc5c8c41dfb8c +Block 0003 [ 57]: 65d9708ed44e7df6 +Block 0003 [ 58]: 6ffdcee0a3f57453 +Block 0003 [ 59]: a8c006aca6c7f351 +Block 0003 [ 60]: 9fcb17f2691e1b55 +Block 0003 [ 61]: 0d090bf265f19bc5 +Block 0003 [ 62]: 21ad8443d491f5d1 +Block 0003 [ 63]: 916906b4f23224a3 +Block 0003 [ 64]: 10326b632749767c +Block 0003 [ 65]: f98c66a67c554352 +Block 0003 [ 66]: 9d1db4e901aec7a7 +Block 0003 [ 67]: f4a9961aba0cce0b +Block 0003 [ 68]: 90838c0c8fbee672 +Block 0003 [ 69]: a629e641159afbce +Block 0003 [ 70]: 0243ef1605b73782 +Block 0003 [ 71]: f4da62fa164f1744 +Block 0003 [ 72]: ba1ab52f4c558313 +Block 0003 [ 73]: 3382bbdd5f4d4288 +Block 0003 [ 74]: c87f9ec6d052b361 +Block 0003 [ 75]: 8c2de6ea01c4b855 +Block 0003 [ 76]: aef8c1c0bc852867 +Block 0003 [ 77]: a15792470e7625f7 +Block 0003 [ 78]: eb1499c0c6cb078b +Block 0003 [ 79]: 798694ae75cdcb8b +Block 0003 [ 80]: 93fffae472430115 +Block 0003 [ 81]: 282640d3575746c7 +Block 0003 [ 82]: ae00e8190db94ff8 +Block 0003 [ 83]: 947bc0354b75208e +Block 0003 [ 84]: ea8105cefa4cfcc4 +Block 0003 [ 85]: afe4ec955e6566d2 +Block 0003 [ 86]: b981cf985be10ec2 +Block 0003 [ 87]: 49434b094d1ae22b +Block 0003 [ 88]: 556e09e96107d1af +Block 0003 [ 89]: f62123222b386d5e +Block 0003 [ 90]: 6d178b5dd97aaf24 +Block 0003 [ 91]: 692bc5ab5b4ae925 +Block 0003 [ 92]: 3eebac8e2943d15f +Block 0003 [ 93]: d4c6171da55b6eac +Block 0003 [ 94]: dc546cd17f8219b7 +Block 0003 [ 95]: b933681a382fee47 +Block 0003 [ 96]: 4db5fa3ce780954d +Block 0003 [ 97]: 15229c91cb28bd08 +Block 0003 [ 98]: f740ddedafb71fc7 +Block 0003 [ 99]: d913d87686827178 +Block 0003 [100]: 563ab13b43e54c66 +Block 0003 [101]: f6ff4f6d55021cbf +Block 0003 [102]: 6d98731ba4459fe4 +Block 0003 [103]: fbef87bfb8f3b748 +Block 0003 [104]: 266b4c4a60074b3e +Block 0003 [105]: 0350f01dae1431b2 +Block 0003 [106]: 13a6a89350b1ee9f +Block 0003 [107]: 0326c88be0d895ea +Block 0003 [108]: 4ebefeafac42a5f4 +Block 0003 [109]: 71892e75bdc60352 +Block 0003 [110]: b7d3b5ecb45e0c8d +Block 0003 [111]: 860a73b1dd642684 +Block 0003 [112]: fd84fba35e10a99d +Block 0003 [113]: 7a8410820891078b +Block 0003 [114]: 86425f3ff9294b51 +Block 0003 [115]: d5fb33f90967ce7f +Block 0003 [116]: 53f65da243c0178d +Block 0003 [117]: 62029d3cce2945c2 +Block 0003 [118]: 4b1e0f57d816419f +Block 0003 [119]: 51eb3849aaffbaac +Block 0003 [120]: e05d248edb287da8 +Block 0003 [121]: 9615afc8dbd4ff70 +Block 0003 [122]: ff3e6685c8335e56 +Block 0003 [123]: 4394ae3741da402d +Block 0003 [124]: 62b8900ae6d45ec7 +Block 0003 [125]: 1e0e3b150ac1b8e6 +Block 0003 [126]: 46406a5dbdb3f471 +Block 0003 [127]: 4f2f51287c0533c5 +Block 0004 [ 0]: 6db3c512b201002a +Block 0004 [ 1]: a4893e550c6e847d +Block 0004 [ 2]: d738c01c6a4163cf +Block 0004 [ 3]: 3964a940c68c7672 +Block 0004 [ 4]: 008607d363313b1e +Block 0004 [ 5]: 09ac4c012f8a9f73 +Block 0004 [ 6]: 30407682ac696ad5 +Block 0004 [ 7]: d11878678fd15c5e +Block 0004 [ 8]: 2c97e49a7c535568 +Block 0004 [ 9]: c657dc0e64f3bada +Block 0004 [ 10]: 71d6d5d67c0e69c0 +Block 0004 [ 11]: 113f757922c12d80 +Block 0004 [ 12]: dff40f405affada0 +Block 0004 [ 13]: 7c770d074afdccbe +Block 0004 [ 14]: 02178564a28476ca +Block 0004 [ 15]: db9f8e2d04cb05d0 +Block 0004 [ 16]: 28dcb359ce250e08 +Block 0004 [ 17]: 1a551496399d2942 +Block 0004 [ 18]: e88e14ab890ff5ef +Block 0004 [ 19]: 488747a7703b9e7e +Block 0004 [ 20]: c31d161b0cc89570 +Block 0004 [ 21]: 4565c4b429ba6e1b +Block 0004 [ 22]: 0dfc72c087e1e08d +Block 0004 [ 23]: c92bf55e556097f8 +Block 0004 [ 24]: c4e7fe3a2a6e24ae +Block 0004 [ 25]: 581c2a385043aa51 +Block 0004 [ 26]: 35aef500b5f3eeae +Block 0004 [ 27]: 7f0e1d27c86cd926 +Block 0004 [ 28]: d557943ed1408c41 +Block 0004 [ 29]: 4af1b776a3298be5 +Block 0004 [ 30]: 8fd70fb3204a5114 +Block 0004 [ 31]: cd384f9fe3618f69 +Block 0004 [ 32]: 7c1c3fda22ce27c7 +Block 0004 [ 33]: dafd9ca79b351f86 +Block 0004 [ 34]: d44cb4fe10e44d5a +Block 0004 [ 35]: e9b2864c088d109e +Block 0004 [ 36]: 48e804a44fcc8a52 +Block 0004 [ 37]: daf3c5093302dc6b +Block 0004 [ 38]: a5be11b060ed5242 +Block 0004 [ 39]: e9140882ceeca69e +Block 0004 [ 40]: cc52836dc00f5bc7 +Block 0004 [ 41]: a60c4dd162e9ff75 +Block 0004 [ 42]: 48583d5cc8289c3e +Block 0004 [ 43]: 7f054592fdc38b14 +Block 0004 [ 44]: 132a9aa37870e575 +Block 0004 [ 45]: 73190cf53e288776 +Block 0004 [ 46]: ce8fde7a06993a1c +Block 0004 [ 47]: ed6199768f24b208 +Block 0004 [ 48]: 3ce97da1f9764400 +Block 0004 [ 49]: 23ecfa6cada7dd08 +Block 0004 [ 50]: 742ac86a22594f47 +Block 0004 [ 51]: 97676b7e0ae47bfa +Block 0004 [ 52]: ca78eecf87b2c0ef +Block 0004 [ 53]: dbff89c5a1ebad88 +Block 0004 [ 54]: 5533435d722aa535 +Block 0004 [ 55]: d51f7db2b23c1fcc +Block 0004 [ 56]: 65945d416121db78 +Block 0004 [ 57]: 2dc4f63b23ade57c +Block 0004 [ 58]: 22918d3b5b563b9d +Block 0004 [ 59]: 586ecd2e7df54ab2 +Block 0004 [ 60]: 1ac158a954866416 +Block 0004 [ 61]: 58d7ffbda6c857ff +Block 0004 [ 62]: 05a5b1765440b5d4 +Block 0004 [ 63]: f5593d391d483ae6 +Block 0004 [ 64]: b63afd052e7947cb +Block 0004 [ 65]: e9f1f92af8a2691d +Block 0004 [ 66]: 60fc54dfe8069a35 +Block 0004 [ 67]: fd2d4ccef3df5227 +Block 0004 [ 68]: 865b629d66d54066 +Block 0004 [ 69]: 062e9dab817e9e93 +Block 0004 [ 70]: 01671e76195217b0 +Block 0004 [ 71]: db554319cc55bbc6 +Block 0004 [ 72]: 33767aa620c6b9b4 +Block 0004 [ 73]: eb3070747ce8cd7a +Block 0004 [ 74]: 04a8f94c1f278eb8 +Block 0004 [ 75]: e37bd2e6fd74ac2d +Block 0004 [ 76]: 51954636db769391 +Block 0004 [ 77]: 62c924aef3d3a00b +Block 0004 [ 78]: 6be2ac1f4372e6bd +Block 0004 [ 79]: 6da5ea764aca7b86 +Block 0004 [ 80]: 7e98e9bb49fd5555 +Block 0004 [ 81]: 240a6bbea9499bf4 +Block 0004 [ 82]: ddae77704bd95091 +Block 0004 [ 83]: f20301a1e60a6388 +Block 0004 [ 84]: 843a97d690d125be +Block 0004 [ 85]: 0b22b9279728e0e4 +Block 0004 [ 86]: a68682bfef9cab88 +Block 0004 [ 87]: 54c152c5f6aa3347 +Block 0004 [ 88]: 3808ff4b61eb729e +Block 0004 [ 89]: eefb42a45db2b6df +Block 0004 [ 90]: 1057807d974ab8ba +Block 0004 [ 91]: f8b3a10c3c4ff30c +Block 0004 [ 92]: 50a10480d2c50642 +Block 0004 [ 93]: 9346af5b676d53d8 +Block 0004 [ 94]: fb4f3d3d2071a72c +Block 0004 [ 95]: 34ba748255e95958 +Block 0004 [ 96]: 1d55802ac5c6fbdd +Block 0004 [ 97]: 6e9bf639f96a71f7 +Block 0004 [ 98]: 2865022a7dca1fb3 +Block 0004 [ 99]: 051f576aa5462e73 +Block 0004 [100]: d7d06ece195f2115 +Block 0004 [101]: d198cfcdb221649a +Block 0004 [102]: d29774868386b41a +Block 0004 [103]: ed82361d873ab22c +Block 0004 [104]: a183f13bbdb3604d +Block 0004 [105]: 0d090eafafb9360d +Block 0004 [106]: c332ad53dca32795 +Block 0004 [107]: fca986dd4c58e868 +Block 0004 [108]: 7b049c4605c543ae +Block 0004 [109]: 59001a287ee5eb5a +Block 0004 [110]: ec48fff4d2bf19bc +Block 0004 [111]: 1ffbfa763d246fb2 +Block 0004 [112]: 77d442d05e756c41 +Block 0004 [113]: 7303708414279f9f +Block 0004 [114]: 1af6d103ba844721 +Block 0004 [115]: bf3af22c312f879f +Block 0004 [116]: 1974673bd6eace85 +Block 0004 [117]: 3c09fe80692acf97 +Block 0004 [118]: 69b5ceffe923242e +Block 0004 [119]: 5250d18f4e18d38f +Block 0004 [120]: 775d04feeecac653 +Block 0004 [121]: 3158b3eebf7cbfa1 +Block 0004 [122]: c9eb36370d6b31fa +Block 0004 [123]: 1c8d0a60062f4870 +Block 0004 [124]: 0536d25cf8ac9a2d +Block 0004 [125]: 2bbdd54340de4566 +Block 0004 [126]: 83a3bb8032d4444e +Block 0004 [127]: 49472858871210ef +Block 0005 [ 0]: b4676f8440d3dd72 +Block 0005 [ 1]: 543dc9478bcae8a8 +Block 0005 [ 2]: 0a1b2608dad7d093 +Block 0005 [ 3]: 158d884310bf64b9 +Block 0005 [ 4]: 0c39f463ae7e1f98 +Block 0005 [ 5]: 0f484a93597079e2 +Block 0005 [ 6]: 22008b41a1cae988 +Block 0005 [ 7]: 39fb86f28f9a72a9 +Block 0005 [ 8]: 0580218b147847ec +Block 0005 [ 9]: 45050f209731847b +Block 0005 [ 10]: a74df9c792a856ad +Block 0005 [ 11]: 59f9d055bf19b4b4 +Block 0005 [ 12]: 580d97d3550b9001 +Block 0005 [ 13]: 99394acf81072667 +Block 0005 [ 14]: 93bbd5b7531eada8 +Block 0005 [ 15]: 1fecebd996a84649 +Block 0005 [ 16]: 6a17fbcdbcde10f9 +Block 0005 [ 17]: 5276ce784b77e366 +Block 0005 [ 18]: 8a44853a1744c6c0 +Block 0005 [ 19]: 4760a36dfe24f187 +Block 0005 [ 20]: 7820ef1c716bc110 +Block 0005 [ 21]: 6ef7d4f420895751 +Block 0005 [ 22]: 605216e6d4a25a6a +Block 0005 [ 23]: 4b5acecae3fc8137 +Block 0005 [ 24]: 8df97b41aa216f3e +Block 0005 [ 25]: dcf8b51afa021170 +Block 0005 [ 26]: 72f57e5d1198747e +Block 0005 [ 27]: 7ab38114f0c3bfa0 +Block 0005 [ 28]: f515e2ba68a87769 +Block 0005 [ 29]: f422c9c76c9eb8cb +Block 0005 [ 30]: 9c9891e7d3c223d4 +Block 0005 [ 31]: ce6f99e5c48a2663 +Block 0005 [ 32]: d29a3e3cd369dc81 +Block 0005 [ 33]: 40d164ddb9622371 +Block 0005 [ 34]: acb980475786ab78 +Block 0005 [ 35]: f01def3e29ade749 +Block 0005 [ 36]: 85c0aca46da00807 +Block 0005 [ 37]: 6d6d6499dff5bc9b +Block 0005 [ 38]: f1a27605d1fe54ab +Block 0005 [ 39]: 592b2bc9bed0c745 +Block 0005 [ 40]: b9b8f3626ae6869f +Block 0005 [ 41]: 928331757d8b0ad0 +Block 0005 [ 42]: 0122bca4dd95e8fa +Block 0005 [ 43]: 25deae32523e74d9 +Block 0005 [ 44]: f8504d6710fa925b +Block 0005 [ 45]: 9d1b3bfa72ae59c5 +Block 0005 [ 46]: 3bba17b4dd2869d1 +Block 0005 [ 47]: e37edf9156e83204 +Block 0005 [ 48]: 104bd93e079e7426 +Block 0005 [ 49]: 82ccac92ea08c463 +Block 0005 [ 50]: 4f9fbf43f625dff8 +Block 0005 [ 51]: ef452ce3634d96d6 +Block 0005 [ 52]: 6ca846373c25297b +Block 0005 [ 53]: 20f669afc7c5af53 +Block 0005 [ 54]: 3cb2ad71a1c3a85b +Block 0005 [ 55]: 8e62f61109c2a232 +Block 0005 [ 56]: 944e5054bdca864e +Block 0005 [ 57]: 449c32f8480c83eb +Block 0005 [ 58]: e72123d7320f8a5c +Block 0005 [ 59]: ea19e7d53fc6fdc8 +Block 0005 [ 60]: 7a0bce3cc157ed97 +Block 0005 [ 61]: b931c70ee2259840 +Block 0005 [ 62]: bb95f4ea8eb1f929 +Block 0005 [ 63]: baaff204920aec3b +Block 0005 [ 64]: d53b7d052d5fe9eb +Block 0005 [ 65]: 846fa7db54e2b603 +Block 0005 [ 66]: d58ecfb72f270009 +Block 0005 [ 67]: 2e2e2e0ed43881b1 +Block 0005 [ 68]: 37e5fa1b47043b18 +Block 0005 [ 69]: 2d2fc7ac1c4e27b4 +Block 0005 [ 70]: 41bdf2f0b4343a48 +Block 0005 [ 71]: d6c50cf3cbd28f69 +Block 0005 [ 72]: 4f15d88744e935a3 +Block 0005 [ 73]: d2d070023d316db8 +Block 0005 [ 74]: 65d9ddede0875a36 +Block 0005 [ 75]: a85314d0b5bbb492 +Block 0005 [ 76]: 9621385a2f5571ba +Block 0005 [ 77]: d8b64682e9e633e3 +Block 0005 [ 78]: 34625b7ac1add871 +Block 0005 [ 79]: 0bd132a3ff51918b +Block 0005 [ 80]: 0bb1a7820a7db02f +Block 0005 [ 81]: 5416bc0ac394fe0b +Block 0005 [ 82]: e4a245f3f2ef7307 +Block 0005 [ 83]: f32a9098d6413d91 +Block 0005 [ 84]: be5f1d656b05bb45 +Block 0005 [ 85]: cb5d82099937e4ef +Block 0005 [ 86]: 6ccb388fa51e044f +Block 0005 [ 87]: fb325dce97a5669d +Block 0005 [ 88]: a997c10efa786b25 +Block 0005 [ 89]: 69efe80c86c535aa +Block 0005 [ 90]: 62acfc9e2e0cdc71 +Block 0005 [ 91]: 5ca162ddc15667a2 +Block 0005 [ 92]: 6bf05b3e8df7591b +Block 0005 [ 93]: f2cc19d04fc4678f +Block 0005 [ 94]: cc85393eb2f131c6 +Block 0005 [ 95]: 4bd2459fa6ac74dc +Block 0005 [ 96]: 794aa76fcece2af1 +Block 0005 [ 97]: a66e09232668e617 +Block 0005 [ 98]: 33e95cf3618e4e63 +Block 0005 [ 99]: ebf0af1432a8d2d4 +Block 0005 [100]: 3bd654a90acf89b5 +Block 0005 [101]: db3b1e828e36e540 +Block 0005 [102]: c2edec0973b1f22b +Block 0005 [103]: 29e916a5983dcf50 +Block 0005 [104]: 679e56d49d4fb9ad +Block 0005 [105]: 5339d09cda2b4cc0 +Block 0005 [106]: df3f7016c2fc771e +Block 0005 [107]: 94af855801dd680f +Block 0005 [108]: 38f0e2ee03acce8b +Block 0005 [109]: ca815a0c41218568 +Block 0005 [110]: ae44de789a0125e0 +Block 0005 [111]: b9cf3947f5aa75f9 +Block 0005 [112]: ef601c65b86c2a39 +Block 0005 [113]: ef17112febe7e477 +Block 0005 [114]: 44974a2a50bd092f +Block 0005 [115]: 0c30352ce2e2284b +Block 0005 [116]: 120566988befae10 +Block 0005 [117]: 396d4337fbe810d9 +Block 0005 [118]: 772684b56b646145 +Block 0005 [119]: 771e20d7bc7ae85c +Block 0005 [120]: b3d55b22de13f793 +Block 0005 [121]: 8f6403353849ee33 +Block 0005 [122]: 90eae65b5bc8e530 +Block 0005 [123]: aff5d5566e449a9b +Block 0005 [124]: bf7f8fba7ae06be1 +Block 0005 [125]: 293aec5b82c5fdbf +Block 0005 [126]: 440e20ef46f7ecbf +Block 0005 [127]: d662bde9b1cc1f76 +Block 0006 [ 0]: 14b82b49b0e25e71 +Block 0006 [ 1]: e937c4f6a43a3a5c +Block 0006 [ 2]: 065b9b36f123727a +Block 0006 [ 3]: a074456c731b7c9d +Block 0006 [ 4]: 8e0b0ee249b35b85 +Block 0006 [ 5]: ee5efbaaaedc6382 +Block 0006 [ 6]: 372ef432529a19dd +Block 0006 [ 7]: 0c39971923fd7ee3 +Block 0006 [ 8]: ab56b63dcb823bc2 +Block 0006 [ 9]: e3e30eba2c887545 +Block 0006 [ 10]: b1c1cf7f034fcab9 +Block 0006 [ 11]: 5a37ae1a9aba41ba +Block 0006 [ 12]: 90417da3eb65e3c6 +Block 0006 [ 13]: 9715c7adf7d48bd9 +Block 0006 [ 14]: a665424a5fa14b29 +Block 0006 [ 15]: 75e72489bda8111f +Block 0006 [ 16]: b497ab6e2575a894 +Block 0006 [ 17]: 10e82458b6431842 +Block 0006 [ 18]: 9c4fe9b5b4fa60b5 +Block 0006 [ 19]: cc0d3fc1fa5be33a +Block 0006 [ 20]: 4016c756a496d9d4 +Block 0006 [ 21]: 20d97fa72058f7d4 +Block 0006 [ 22]: 3a636962e222ebab +Block 0006 [ 23]: 2edbcf4ee4bd517c +Block 0006 [ 24]: e8d7fba7a86bddb4 +Block 0006 [ 25]: cf6180086cac6d0a +Block 0006 [ 26]: e3f8824092b4260f +Block 0006 [ 27]: f056ef7493b06cca +Block 0006 [ 28]: fac82c5c43b31478 +Block 0006 [ 29]: e660f484bafd3c93 +Block 0006 [ 30]: 95d236ab04727c88 +Block 0006 [ 31]: b9a61e8878952e45 +Block 0006 [ 32]: 689a578392b86703 +Block 0006 [ 33]: eb8522fc4bf33672 +Block 0006 [ 34]: 93f45c0020ea773a +Block 0006 [ 35]: 2fdf8e4d359075bc +Block 0006 [ 36]: ab571ba7bc6ec2fd +Block 0006 [ 37]: dda3dcbe917aaff8 +Block 0006 [ 38]: 9eb95a1e8ead794e +Block 0006 [ 39]: 6fedd57de55d273c +Block 0006 [ 40]: b1e982229232f1ad +Block 0006 [ 41]: 4fe42603c8a9fb69 +Block 0006 [ 42]: d659310e16205de3 +Block 0006 [ 43]: 20d78a53b3eb58aa +Block 0006 [ 44]: 38f5fdd6dc865e40 +Block 0006 [ 45]: d15b5699f7697b8e +Block 0006 [ 46]: 49ab382b1b33423c +Block 0006 [ 47]: 1d6efabc9ce41282 +Block 0006 [ 48]: 2961d5538a38da76 +Block 0006 [ 49]: 73aafddd34985b8c +Block 0006 [ 50]: 06b22e6994377ac5 +Block 0006 [ 51]: adae03a3e7842760 +Block 0006 [ 52]: 5e87d802acbe15c6 +Block 0006 [ 53]: 5cbb54f89ca40959 +Block 0006 [ 54]: e5b25cb912455ee4 +Block 0006 [ 55]: 4c6341f2bf67640c +Block 0006 [ 56]: 514c70013c6e98e7 +Block 0006 [ 57]: 5d6ac5092f7084bf +Block 0006 [ 58]: 3e8aba33150418bf +Block 0006 [ 59]: a30cf862735d162b +Block 0006 [ 60]: 6318ca3cd9772bd1 +Block 0006 [ 61]: d9ec0d7f1dbca7cd +Block 0006 [ 62]: b59787682be88aff +Block 0006 [ 63]: a064dca241a15e2c +Block 0006 [ 64]: 9e8c9708fc584c31 +Block 0006 [ 65]: f38b9cec2f104837 +Block 0006 [ 66]: aab3c7ad54444c98 +Block 0006 [ 67]: 1930cdbb75108f35 +Block 0006 [ 68]: e975c9867aceab39 +Block 0006 [ 69]: f96191489d892c54 +Block 0006 [ 70]: c8e1674971e0648f +Block 0006 [ 71]: b907513bcf5625a0 +Block 0006 [ 72]: ac104180b8a3fde9 +Block 0006 [ 73]: 013292e60a55a6d0 +Block 0006 [ 74]: f0423e702fc2c4ed +Block 0006 [ 75]: 61e8d0990582c55a +Block 0006 [ 76]: 4cbe0cb788314bed +Block 0006 [ 77]: 8c6280a475751998 +Block 0006 [ 78]: 29f7cc903c7c9634 +Block 0006 [ 79]: 57137bb43725f3d6 +Block 0006 [ 80]: 7a3e0bb3b04cb289 +Block 0006 [ 81]: c319cc5e6bb8d7d4 +Block 0006 [ 82]: 71b8459072558920 +Block 0006 [ 83]: 35316d0f774e5804 +Block 0006 [ 84]: deffee844b2ac25c +Block 0006 [ 85]: a52cce030fa44ca2 +Block 0006 [ 86]: c6921938401e2665 +Block 0006 [ 87]: 2b5a7a4619b39322 +Block 0006 [ 88]: c638cb6047ad7f73 +Block 0006 [ 89]: a22c9b0e4064cce3 +Block 0006 [ 90]: 69ec00c7c380d2b9 +Block 0006 [ 91]: dfd92cc8a4282ae2 +Block 0006 [ 92]: 3065f4657ee7867e +Block 0006 [ 93]: 2560cad440b434e5 +Block 0006 [ 94]: ac8bdaf8b273716f +Block 0006 [ 95]: 7326ef4e982b2e03 +Block 0006 [ 96]: f028bef637e8f480 +Block 0006 [ 97]: 4d5d126fc092a061 +Block 0006 [ 98]: 73ab780da60b5719 +Block 0006 [ 99]: 6119c713f2fc328b +Block 0006 [100]: 891e7a9911c5e6d9 +Block 0006 [101]: d40521ec37610f40 +Block 0006 [102]: a3fc256443a27d79 +Block 0006 [103]: 6b602f608c0e3af2 +Block 0006 [104]: dce03c74fd50362a +Block 0006 [105]: f779685936b26eba +Block 0006 [106]: d2534193125bcb00 +Block 0006 [107]: 12ca834d6b1eedb0 +Block 0006 [108]: 073d19e3c4f1bfe9 +Block 0006 [109]: 31935c96b465d0e1 +Block 0006 [110]: 13432f5bd1879a52 +Block 0006 [111]: b9e2cef15789ddd8 +Block 0006 [112]: 534f0d54cebe0592 +Block 0006 [113]: 761601a3a63b69e3 +Block 0006 [114]: 748b16ca57aaa7ab +Block 0006 [115]: aa677d0a7b68e486 +Block 0006 [116]: b2215d7cdecdf1b2 +Block 0006 [117]: 7ba8d9f400b2407b +Block 0006 [118]: 17682787fc9c8fc6 +Block 0006 [119]: e0d866a02b93fd02 +Block 0006 [120]: 8354c7153bc15c88 +Block 0006 [121]: 4df0d563bdab7ed9 +Block 0006 [122]: 468547092b155225 +Block 0006 [123]: 0e25c4e3903193f9 +Block 0006 [124]: 946f87745d6dc6ab +Block 0006 [125]: 636b2ba44cf3a26c +Block 0006 [126]: 7f2ed8b4cbd37294 +Block 0006 [127]: 1666f0a8a45f67e2 +Block 0007 [ 0]: 89bc5991b66a4f9a +Block 0007 [ 1]: 244f9a50eede4a24 +Block 0007 [ 2]: 83976af8c3a0a861 +Block 0007 [ 3]: 38ea76e0f71cc313 +Block 0007 [ 4]: c6e1867e6fa2278f +Block 0007 [ 5]: 27e79ac27c615f48 +Block 0007 [ 6]: 832d73e2c2f0c4fa +Block 0007 [ 7]: 0c4ee0490467a033 +Block 0007 [ 8]: e75eeac5cf1d7adc +Block 0007 [ 9]: 8c8a45c6946c950d +Block 0007 [ 10]: b5baad053f9ca7bd +Block 0007 [ 11]: 46fc8205c42f5a5f +Block 0007 [ 12]: 7c76404757f0454d +Block 0007 [ 13]: d9695eaedce9a870 +Block 0007 [ 14]: 9a5f14c4a42e1fe0 +Block 0007 [ 15]: 4003794a258c067f +Block 0007 [ 16]: cd9de2f71394f07e +Block 0007 [ 17]: 5dbbfdbe775cb191 +Block 0007 [ 18]: 9305fd724ef6ca78 +Block 0007 [ 19]: 9d4ea857a7e98879 +Block 0007 [ 20]: 3ef8dbba9be3b0d2 +Block 0007 [ 21]: cdcb7d8d4937c74d +Block 0007 [ 22]: 2b413663beab789c +Block 0007 [ 23]: 8c2022398a6f105f +Block 0007 [ 24]: fbc6564054e0c5ae +Block 0007 [ 25]: 29bc64cd100368b3 +Block 0007 [ 26]: 5b49e63514ce07ad +Block 0007 [ 27]: ee09dd8044e2993a +Block 0007 [ 28]: 0ef1a2e5536719e1 +Block 0007 [ 29]: a73127758047003a +Block 0007 [ 30]: 6ffb968f03445b73 +Block 0007 [ 31]: 1d6110a090f74e3e +Block 0007 [ 32]: 151ba2612e331780 +Block 0007 [ 33]: fbfc128b382d4c05 +Block 0007 [ 34]: f27fe4a8a1bc79e7 +Block 0007 [ 35]: 3484f508a5a56d2e +Block 0007 [ 36]: 414b6c4370ac4a9a +Block 0007 [ 37]: 1febb1feff45a2b8 +Block 0007 [ 38]: 0c9c9427da10327b +Block 0007 [ 39]: 9b4ebc3732023d56 +Block 0007 [ 40]: 9d74e0967d5b224d +Block 0007 [ 41]: d048577dc40fdb8d +Block 0007 [ 42]: 3879b17a30b0b978 +Block 0007 [ 43]: fb3f18a76754800f +Block 0007 [ 44]: 50559d8df5580475 +Block 0007 [ 45]: 9111d08c239370c7 +Block 0007 [ 46]: d766091af4b45a4b +Block 0007 [ 47]: 62aee41c1d8674a3 +Block 0007 [ 48]: a2930820ec8b2505 +Block 0007 [ 49]: fbd3b0a6e3565791 +Block 0007 [ 50]: aaa953c5471dbb17 +Block 0007 [ 51]: 49d5b5f4e86f9247 +Block 0007 [ 52]: 4b2b84aa2aabf8db +Block 0007 [ 53]: 5af1810ce84263f0 +Block 0007 [ 54]: 8fb74dc06e2c75b2 +Block 0007 [ 55]: df299055074a521f +Block 0007 [ 56]: 6f79200c0ae6493c +Block 0007 [ 57]: 8f8bfab88a8bc57b +Block 0007 [ 58]: 5723fc0b3895145c +Block 0007 [ 59]: ab919fe3268ceefb +Block 0007 [ 60]: 306be7b7d686339f +Block 0007 [ 61]: 43014813fb7fffa0 +Block 0007 [ 62]: 8428dec31fb0c09c +Block 0007 [ 63]: d8f65c034c59d7c2 +Block 0007 [ 64]: e6d5ea8a06c52ec8 +Block 0007 [ 65]: 2872ea29527eac1b +Block 0007 [ 66]: be4d066da29ec0e6 +Block 0007 [ 67]: 4665ebd5d344c313 +Block 0007 [ 68]: 50d6e23aea3e760b +Block 0007 [ 69]: 5e0e3e5f3534d811 +Block 0007 [ 70]: 1ee7dba867effc30 +Block 0007 [ 71]: c222516a167eb883 +Block 0007 [ 72]: f1d1e74cbf8ae6e9 +Block 0007 [ 73]: e106eb6f8bdca40a +Block 0007 [ 74]: b1b70e885bca3a77 +Block 0007 [ 75]: 0f64afa7c1004b06 +Block 0007 [ 76]: 2ea15d6201b8d307 +Block 0007 [ 77]: cd5c49ca4ed9b1c3 +Block 0007 [ 78]: bc0ddc91b4213b76 +Block 0007 [ 79]: 61cf167ea124ffdc +Block 0007 [ 80]: 8806befdffa43b77 +Block 0007 [ 81]: bcc6a6a392620c69 +Block 0007 [ 82]: 1434f9acecacaebe +Block 0007 [ 83]: 7c6af7c2f1d3a016 +Block 0007 [ 84]: 115556eb3d8d23bc +Block 0007 [ 85]: e3eafc2dda0aa391 +Block 0007 [ 86]: 5750369e0d454865 +Block 0007 [ 87]: a7c6fd735d535569 +Block 0007 [ 88]: 29e6ad4a5e5dfd52 +Block 0007 [ 89]: 1de107ad6c220b0f +Block 0007 [ 90]: 9c47398621cee82b +Block 0007 [ 91]: 7dfabceacb90433a +Block 0007 [ 92]: dd080065f92db5f8 +Block 0007 [ 93]: 808fb2ca8f9855fc +Block 0007 [ 94]: 9b37d0255ca874d9 +Block 0007 [ 95]: a29945156f5e78e0 +Block 0007 [ 96]: 7ebb17b54f99cc52 +Block 0007 [ 97]: 86a2c533d65321ec +Block 0007 [ 98]: e5fb0d5fa7cd9535 +Block 0007 [ 99]: 6c207d4bfaf49f7b +Block 0007 [100]: 44eb34b160e8f527 +Block 0007 [101]: 71ef01526ddb2885 +Block 0007 [102]: 915c082d99d95fd7 +Block 0007 [103]: bfcad755fc1307af +Block 0007 [104]: dfdb5ac657037222 +Block 0007 [105]: 08da606ac7d1602b +Block 0007 [106]: 95c0b0e9ebd7e4a0 +Block 0007 [107]: e77addfab259b972 +Block 0007 [108]: e3010379e9ad41d3 +Block 0007 [109]: 0f64d0ba35d2b8e5 +Block 0007 [110]: 2fad709e13c7b6f3 +Block 0007 [111]: 8fca48fc169624c9 +Block 0007 [112]: 05f2f0e60d335cb2 +Block 0007 [113]: cb7a2cd2340b3bfe +Block 0007 [114]: 6e058f453af0ccb6 +Block 0007 [115]: 3f445b7cc7839d27 +Block 0007 [116]: 619bfe60221d6100 +Block 0007 [117]: e5049d9c35782378 +Block 0007 [118]: acea85d52eb0c9f5 +Block 0007 [119]: 0b4f88ff01eb6c9c +Block 0007 [120]: 53bd40631c73d79b +Block 0007 [121]: 6a8e9acb96295031 +Block 0007 [122]: d1d48bed6b85937e +Block 0007 [123]: 9a4ce896116b82d8 +Block 0007 [124]: d580d4b5de6c3e9e +Block 0007 [125]: 812089540331bbaa +Block 0007 [126]: 6b9b3242b2fb8b9c +Block 0007 [127]: 2a402a6b13a8c267 +Block 0008 [ 0]: b7ab95721117d35e +Block 0008 [ 1]: 22efa2b9e5e159b2 +Block 0008 [ 2]: 964d836e880b8f89 +Block 0008 [ 3]: 465893367077dde0 +Block 0008 [ 4]: 04b86461613ddecf +Block 0008 [ 5]: faad3b55b362d764 +Block 0008 [ 6]: 9bfb8fdf7a2d2749 +Block 0008 [ 7]: 2514d8487b2f337e +Block 0008 [ 8]: 76b0368ad20aaf0e +Block 0008 [ 9]: 2e73c820427627ab +Block 0008 [ 10]: d6710dc04fd71cf7 +Block 0008 [ 11]: 05f1214cf754fe9c +Block 0008 [ 12]: 1b9226ebb176545d +Block 0008 [ 13]: d09950e8d137b218 +Block 0008 [ 14]: a556442aaa5a4704 +Block 0008 [ 15]: 22a558765f5b708c +Block 0008 [ 16]: 5a956898ea8655bb +Block 0008 [ 17]: d00c0f9a64cf54f8 +Block 0008 [ 18]: 1924450be9d7d7d3 +Block 0008 [ 19]: 4b2093cc1dba44d9 +Block 0008 [ 20]: 40e06f4fe9d9f193 +Block 0008 [ 21]: 9f669102987d4b33 +Block 0008 [ 22]: 25773e4784493e3e +Block 0008 [ 23]: f28659e531958e97 +Block 0008 [ 24]: 6946e4820d222c77 +Block 0008 [ 25]: 4681223f5565478d +Block 0008 [ 26]: 2e4d5f19e61816c4 +Block 0008 [ 27]: c96da5ff44d7b204 +Block 0008 [ 28]: 83582dd48b6fde2a +Block 0008 [ 29]: c7964d848c2cb4e1 +Block 0008 [ 30]: c0fbd722926446a8 +Block 0008 [ 31]: f7f224036da1b50b +Block 0008 [ 32]: 794c427ca82715f9 +Block 0008 [ 33]: 8a2b97b3013583b7 +Block 0008 [ 34]: 3244ee89081e7460 +Block 0008 [ 35]: f5e2a548eb51f3e4 +Block 0008 [ 36]: d1f2917f33c9beef +Block 0008 [ 37]: 4be72bd00cf526aa +Block 0008 [ 38]: c4783ba6b1a63baa +Block 0008 [ 39]: aa6c043d2a2b24b9 +Block 0008 [ 40]: 9770847719e53708 +Block 0008 [ 41]: 9062cef0c0d7b719 +Block 0008 [ 42]: 03bbe219e7b92dd6 +Block 0008 [ 43]: 60e53b185d155c18 +Block 0008 [ 44]: 1d6ba06581c7d26f +Block 0008 [ 45]: 8622eba9ec8d607b +Block 0008 [ 46]: d970b275e9b38475 +Block 0008 [ 47]: cd054ad4f06c85df +Block 0008 [ 48]: f326e9cf128b309b +Block 0008 [ 49]: 26e3d59d0f1514db +Block 0008 [ 50]: 957d99899c37ddb5 +Block 0008 [ 51]: 496914dbd6936795 +Block 0008 [ 52]: 5b297ef27bd7e1df +Block 0008 [ 53]: 6d0197c85b350e0c +Block 0008 [ 54]: 85d0ece1e8500251 +Block 0008 [ 55]: 480487de2170b8c1 +Block 0008 [ 56]: a015392335b28618 +Block 0008 [ 57]: 7f57a60af4f33b0f +Block 0008 [ 58]: 851a927b8c624cad +Block 0008 [ 59]: 89c747c64caab2a6 +Block 0008 [ 60]: 477cfa9b1918256a +Block 0008 [ 61]: d98e9f90a8bfb1bc +Block 0008 [ 62]: 30ff60298156ba3c +Block 0008 [ 63]: 3c7761e58ec0e095 +Block 0008 [ 64]: 8f679b883e408880 +Block 0008 [ 65]: 257ef71da8d77b46 +Block 0008 [ 66]: 4b7ad321efc75f0c +Block 0008 [ 67]: 1f6a32b542eebc6b +Block 0008 [ 68]: 0a0967b0f7acd6db +Block 0008 [ 69]: 54163535e5d00f3a +Block 0008 [ 70]: 7fdec43e6b6b4930 +Block 0008 [ 71]: c1c53843bd4aaab0 +Block 0008 [ 72]: 07016805847a07d8 +Block 0008 [ 73]: 10fb712c92c61c4b +Block 0008 [ 74]: 015e817683d154e8 +Block 0008 [ 75]: fe47daf5171bfc13 +Block 0008 [ 76]: c4827a7bfd8ce2d9 +Block 0008 [ 77]: 230c9209805eb318 +Block 0008 [ 78]: e63a7fa09253432f +Block 0008 [ 79]: 389ec0abe21e0ae7 +Block 0008 [ 80]: d905cce5cbd8176c +Block 0008 [ 81]: a422de2b3bb9a792 +Block 0008 [ 82]: e697168d4153dbcf +Block 0008 [ 83]: 23eb13f63115c465 +Block 0008 [ 84]: cf22e9ff2140d01e +Block 0008 [ 85]: 8a04ab6f7c64bdf4 +Block 0008 [ 86]: dc485082ce16fc73 +Block 0008 [ 87]: 4683333477cc0b97 +Block 0008 [ 88]: 863db556e1caaf30 +Block 0008 [ 89]: 50bd44001676b011 +Block 0008 [ 90]: 6a11db826217b8a8 +Block 0008 [ 91]: 3d2760322a5a5f6b +Block 0008 [ 92]: 5173a7ced46cafd3 +Block 0008 [ 93]: 990529a5161d0b95 +Block 0008 [ 94]: ca880dbb12f980d2 +Block 0008 [ 95]: f302c5e44f59329a +Block 0008 [ 96]: 983e583ac8e8e523 +Block 0008 [ 97]: 846f0c63282b5bbf +Block 0008 [ 98]: 08a4b7b9c5d791b8 +Block 0008 [ 99]: 86a7abed532c43b8 +Block 0008 [100]: 59fe6cf801a30e6d +Block 0008 [101]: f5764116d593fc3b +Block 0008 [102]: c0697b3cbd3001ab +Block 0008 [103]: 45e42c5ffb139e80 +Block 0008 [104]: d7ed91668c402ce0 +Block 0008 [105]: 6397bdd0d8527ae4 +Block 0008 [106]: 12880cb013fe58fc +Block 0008 [107]: 971fe855ed549949 +Block 0008 [108]: d1e0e639eb31c572 +Block 0008 [109]: 6e335ec1cf8de464 +Block 0008 [110]: da20beebc9ed0af9 +Block 0008 [111]: df0955ee5e18d4ef +Block 0008 [112]: 70eb91b051b35a76 +Block 0008 [113]: 7548e2994282c4d6 +Block 0008 [114]: 489a1b29c4a99af6 +Block 0008 [115]: 94cad03afaaa3898 +Block 0008 [116]: 37cbca7c85c8491d +Block 0008 [117]: 30faa00e59a713f6 +Block 0008 [118]: 35cc78464d8e0da4 +Block 0008 [119]: 7057afb2dd623ac4 +Block 0008 [120]: 6b1a9205926fc23c +Block 0008 [121]: e9e200e9ffd25f94 +Block 0008 [122]: 877f0fcc2e621a2e +Block 0008 [123]: 64535122e6a3edde +Block 0008 [124]: ae387cd847ebe238 +Block 0008 [125]: 059fc807fc322613 +Block 0008 [126]: c3b01aa192b0a0e9 +Block 0008 [127]: 77191027156712cc +Block 0009 [ 0]: 8e732c2c500d1bcf +Block 0009 [ 1]: e9f582c285d839fb +Block 0009 [ 2]: 2fc5142d3a7a7654 +Block 0009 [ 3]: 9095c31471464fe1 +Block 0009 [ 4]: 8e991a3caf2a3052 +Block 0009 [ 5]: 37702ba2be1e7b0a +Block 0009 [ 6]: 835c109a4a30f143 +Block 0009 [ 7]: 0eb4ae9d12f396c7 +Block 0009 [ 8]: 88f2953817eddb54 +Block 0009 [ 9]: 1cecd3d0a1e201c9 +Block 0009 [ 10]: deafac03b504e11d +Block 0009 [ 11]: 8157bf20b970b8e5 +Block 0009 [ 12]: 50b3e5bf1e48eb70 +Block 0009 [ 13]: 9d7efd0bff2d2e83 +Block 0009 [ 14]: 2a792a8f2b0982c2 +Block 0009 [ 15]: f18c1232d73408db +Block 0009 [ 16]: f5a62d2f9de07c74 +Block 0009 [ 17]: 8204c3aacca9edbb +Block 0009 [ 18]: b5baa1f4e095eef1 +Block 0009 [ 19]: 13235a4064138ef2 +Block 0009 [ 20]: a142635c58c634d7 +Block 0009 [ 21]: b7ddf6f55ab349a6 +Block 0009 [ 22]: f71717df61515bbf +Block 0009 [ 23]: 1890a0eeeed4ec12 +Block 0009 [ 24]: 2521df3d057602b1 +Block 0009 [ 25]: f425966f41a3cbae +Block 0009 [ 26]: 517dbeacc6a8e886 +Block 0009 [ 27]: 4e6782d7bfc248b0 +Block 0009 [ 28]: 077d169e58f83834 +Block 0009 [ 29]: 566f54c60623e8dd +Block 0009 [ 30]: 9282e16be5d00504 +Block 0009 [ 31]: 43e00854ca66714e +Block 0009 [ 32]: 28774e5b81f76aaa +Block 0009 [ 33]: 8950b8ae23d4faf1 +Block 0009 [ 34]: 09e4d38b92711e7c +Block 0009 [ 35]: 9a2eb57e82bc2afa +Block 0009 [ 36]: 506099a8d3aa3d16 +Block 0009 [ 37]: c3e99f028c752146 +Block 0009 [ 38]: 7ec9eb85c13ff100 +Block 0009 [ 39]: 718db4822eaf3c3f +Block 0009 [ 40]: 6e8cf355d00578c4 +Block 0009 [ 41]: a96f23d2042ed081 +Block 0009 [ 42]: b1efa003a52051a2 +Block 0009 [ 43]: 083cd3f3afeaac19 +Block 0009 [ 44]: 0d69d9676b1259fa +Block 0009 [ 45]: 08c3761ad4b25440 +Block 0009 [ 46]: 0c406de866ecbc24 +Block 0009 [ 47]: 5cb289de573f01cc +Block 0009 [ 48]: 02893bb82c671ed6 +Block 0009 [ 49]: c081209aca5d643e +Block 0009 [ 50]: 9a51ca107935abeb +Block 0009 [ 51]: 354aed6cc4970cb0 +Block 0009 [ 52]: fbd56117a58309b6 +Block 0009 [ 53]: daae519e820f1e5e +Block 0009 [ 54]: 48162d9e0c40b513 +Block 0009 [ 55]: 93b9f51a284d2e22 +Block 0009 [ 56]: b91de3ce3b32c35f +Block 0009 [ 57]: a2692cb72cd2f4bd +Block 0009 [ 58]: b34187d3ec2443e9 +Block 0009 [ 59]: 69c8d1d6b9141ab6 +Block 0009 [ 60]: 96e4e5ac6fc7de7d +Block 0009 [ 61]: 6edb6ef2a2c9524a +Block 0009 [ 62]: f2c41d9cfa6140a6 +Block 0009 [ 63]: 01d6b829b5a0478b +Block 0009 [ 64]: bebfd01f651b8408 +Block 0009 [ 65]: 2550cc3cdae04d67 +Block 0009 [ 66]: 15595a3d607dfbda +Block 0009 [ 67]: b46e32730ca3295f +Block 0009 [ 68]: 9ec5f85084cef798 +Block 0009 [ 69]: 2f404ab4feeb707f +Block 0009 [ 70]: fd41201b15012abe +Block 0009 [ 71]: 6ca913e4f0fd8fee +Block 0009 [ 72]: 709d15d4a5c351ca +Block 0009 [ 73]: 0ff417d5fb37ebe7 +Block 0009 [ 74]: 802e11d62972e3bd +Block 0009 [ 75]: bc2c232ea9b2159e +Block 0009 [ 76]: 69e7678104f56c09 +Block 0009 [ 77]: cde317f9f0a761f7 +Block 0009 [ 78]: daa884e6383a0c9b +Block 0009 [ 79]: 624e467ea037d7fc +Block 0009 [ 80]: da29125f93d7e351 +Block 0009 [ 81]: 7b8a251d7d757a20 +Block 0009 [ 82]: 123b966cfc4bdbe2 +Block 0009 [ 83]: e4b764a11ec7b794 +Block 0009 [ 84]: 61465f002fd37b96 +Block 0009 [ 85]: 519d444057d1d1bc +Block 0009 [ 86]: 17ca9449f5f2b619 +Block 0009 [ 87]: 20e1968729b8cbd3 +Block 0009 [ 88]: e07232d4ec01eec7 +Block 0009 [ 89]: 292fe0de615d0448 +Block 0009 [ 90]: 6d447d417ac58b7f +Block 0009 [ 91]: 213085ba89c1a0e6 +Block 0009 [ 92]: 279218ed0f586188 +Block 0009 [ 93]: 85432b291b14ae92 +Block 0009 [ 94]: d3811f53e9fb02b6 +Block 0009 [ 95]: 14b83bd6e46eaed6 +Block 0009 [ 96]: 622711519314f9f4 +Block 0009 [ 97]: ed92baab649ec78f +Block 0009 [ 98]: c72c72d7b0848cfe +Block 0009 [ 99]: de53a491c6295c22 +Block 0009 [100]: 2be4a0b8b5e43cbc +Block 0009 [101]: e6f22ceac7bccd1f +Block 0009 [102]: 05b12ebec17c187e +Block 0009 [103]: 52f341e886242a28 +Block 0009 [104]: e30c872494dae813 +Block 0009 [105]: bdad94979f6995a5 +Block 0009 [106]: bc9e4d10f9e5f606 +Block 0009 [107]: acb2275cf353d8e0 +Block 0009 [108]: 051c08df05a430a4 +Block 0009 [109]: ea68d850dbea3577 +Block 0009 [110]: d170a2ad236d937f +Block 0009 [111]: d15f44a6debf6691 +Block 0009 [112]: 155fb21a0411d4e6 +Block 0009 [113]: 7ef7eeb7ac21cf4b +Block 0009 [114]: 92edc47cbac6c4a6 +Block 0009 [115]: 510544dbaa033367 +Block 0009 [116]: 46a67011096e757c +Block 0009 [117]: 3a1a9464956028f7 +Block 0009 [118]: 38c1dea1570c12b9 +Block 0009 [119]: 0e1db1c9aa4e6e8a +Block 0009 [120]: e565a8750f24205c +Block 0009 [121]: 722413539d2ad804 +Block 0009 [122]: b9f8daba5bb18eec +Block 0009 [123]: 1e5be1da6957bcac +Block 0009 [124]: 8057de9f3f373a31 +Block 0009 [125]: ff03efbd16744e8c +Block 0009 [126]: 9424bb60b0df4407 +Block 0009 [127]: 13460e85e31e66d1 +Block 0010 [ 0]: 543b940990095875 +Block 0010 [ 1]: 18eaeb3f2173cdd7 +Block 0010 [ 2]: 0d08db9d1badfb0b +Block 0010 [ 3]: 67644ff573140c3a +Block 0010 [ 4]: 295ab880314f0f85 +Block 0010 [ 5]: 112edbb91c2a8fd7 +Block 0010 [ 6]: c038e70916f72cde +Block 0010 [ 7]: 4f9c910aa9899d1c +Block 0010 [ 8]: dada45d5af22d56c +Block 0010 [ 9]: e8b476a0c6350fbc +Block 0010 [ 10]: 870bc5fad488facf +Block 0010 [ 11]: 6b7dbbc32595f4c7 +Block 0010 [ 12]: a964783636eb2e97 +Block 0010 [ 13]: d145b572544eae6d +Block 0010 [ 14]: fe8ef676787818cb +Block 0010 [ 15]: 20e375197aa04ab2 +Block 0010 [ 16]: d011f89244a3d4df +Block 0010 [ 17]: 759e5d451dae6e92 +Block 0010 [ 18]: bec7d0751f0ab01e +Block 0010 [ 19]: 149251274eb89159 +Block 0010 [ 20]: f91432fc0eb92ec6 +Block 0010 [ 21]: 72e8c6ddcc930a13 +Block 0010 [ 22]: 8452c113f7fa9b56 +Block 0010 [ 23]: 4f5daba6e08b86c9 +Block 0010 [ 24]: 0e2d8b734f0bcf74 +Block 0010 [ 25]: 1a6c20125994331d +Block 0010 [ 26]: a87e4eed3891e466 +Block 0010 [ 27]: 3d00c4836245c1b3 +Block 0010 [ 28]: 189483b92b00a86d +Block 0010 [ 29]: 06d49ab12bbf1f15 +Block 0010 [ 30]: 20b348e5ead7bf24 +Block 0010 [ 31]: 506ba7e964fea6b4 +Block 0010 [ 32]: e8f23d6e2ea9f924 +Block 0010 [ 33]: f6d0d2bd74d90737 +Block 0010 [ 34]: 8fb226cbf1ce49c9 +Block 0010 [ 35]: 6815c3e3f8f4ef0b +Block 0010 [ 36]: abb3e01f3fce839b +Block 0010 [ 37]: e92757b13b57b915 +Block 0010 [ 38]: 5aeb88f6b7d1cb0b +Block 0010 [ 39]: bb1650328a3a14aa +Block 0010 [ 40]: f0728fb2ff0c8666 +Block 0010 [ 41]: 3e84a83c151639a7 +Block 0010 [ 42]: 9b0f4d15d9cf179f +Block 0010 [ 43]: dbb8c5716afd021c +Block 0010 [ 44]: e8bfc3df051ed951 +Block 0010 [ 45]: 2e0dfba45843e305 +Block 0010 [ 46]: a01b3aeb323b6409 +Block 0010 [ 47]: c9111b107b5297e7 +Block 0010 [ 48]: e2ff0a84b8ec6add +Block 0010 [ 49]: a1a71d29c99ea301 +Block 0010 [ 50]: 63bfcaad0e326961 +Block 0010 [ 51]: 9615e8c180b752fb +Block 0010 [ 52]: 7e5abed116da961d +Block 0010 [ 53]: 74ef9fa68f55818e +Block 0010 [ 54]: dc792d50364b460c +Block 0010 [ 55]: 45914d8df39e6635 +Block 0010 [ 56]: fa6b6755e5d333df +Block 0010 [ 57]: 6dd4c60cfa704cc7 +Block 0010 [ 58]: 3741ce484f6a142e +Block 0010 [ 59]: ad6e491cc36c0a3b +Block 0010 [ 60]: 62bb1c10e00e80d4 +Block 0010 [ 61]: ec9a80476840f855 +Block 0010 [ 62]: a6ee55d533895c55 +Block 0010 [ 63]: 6b0ca397060e3b98 +Block 0010 [ 64]: 0ad956334279e43a +Block 0010 [ 65]: b87d52c2a2c90ec3 +Block 0010 [ 66]: 50ff46a35d7842cc +Block 0010 [ 67]: c3d9a0d2d55ea9c1 +Block 0010 [ 68]: dfa49e5406a2e725 +Block 0010 [ 69]: 541dd28aa2563e8f +Block 0010 [ 70]: 53ad650ffc8e5958 +Block 0010 [ 71]: 3a5adad382c04c27 +Block 0010 [ 72]: 44943c194a99a8f2 +Block 0010 [ 73]: 3e1098d058fd17d8 +Block 0010 [ 74]: e12c8eb2e985e97d +Block 0010 [ 75]: f020c6b429ca33fb +Block 0010 [ 76]: 87d2223bd0ebcd78 +Block 0010 [ 77]: 459b25a71ba6b614 +Block 0010 [ 78]: 41da41285d0667ee +Block 0010 [ 79]: 09e80349cac41549 +Block 0010 [ 80]: ffc52232e58aeead +Block 0010 [ 81]: d8e66f8b2f80bbd1 +Block 0010 [ 82]: e04ae31c590646fa +Block 0010 [ 83]: ba8ad218ce90618d +Block 0010 [ 84]: bfe77439e9fe02f0 +Block 0010 [ 85]: 59eb9a5bb1936564 +Block 0010 [ 86]: f0a2471f9add76d7 +Block 0010 [ 87]: 9f8793e60fe20141 +Block 0010 [ 88]: f9b307023c67d822 +Block 0010 [ 89]: d0aeca62f1cf526e +Block 0010 [ 90]: 765d93ce65c4fa16 +Block 0010 [ 91]: b113f2b94c8726e7 +Block 0010 [ 92]: 38a889e531ea46bd +Block 0010 [ 93]: 6d5d5be952f68d15 +Block 0010 [ 94]: 6a9bdfe362d0869a +Block 0010 [ 95]: 7e659ff724978315 +Block 0010 [ 96]: 42ccdc3db17d27d7 +Block 0010 [ 97]: faec96f2411fd748 +Block 0010 [ 98]: fedf541027365e36 +Block 0010 [ 99]: 05aa427cbfa8c197 +Block 0010 [100]: 09db0e1c73dd017f +Block 0010 [101]: 051154d397ab8eb5 +Block 0010 [102]: c14899d6cfd6db92 +Block 0010 [103]: 76eba202872418f0 +Block 0010 [104]: 7de93ad989b7fa63 +Block 0010 [105]: 79b9781eb6d08a83 +Block 0010 [106]: 18c7e233870ab87e +Block 0010 [107]: a2f24fac2ccfaa05 +Block 0010 [108]: aa0329bd328e07aa +Block 0010 [109]: 6d568e267df6cbd8 +Block 0010 [110]: 0cdec16e4b3af9df +Block 0010 [111]: 516a6543fd378d95 +Block 0010 [112]: 044353035e8ed9e2 +Block 0010 [113]: 8cce3633089e9ef6 +Block 0010 [114]: 241ca0819199c35f +Block 0010 [115]: b84e6be91f3ba29c +Block 0010 [116]: 7681dba7d67b853d +Block 0010 [117]: cfaa8457e94a2ca3 +Block 0010 [118]: 4f55fddfa61e1c14 +Block 0010 [119]: 4ae2c0df0be7bdd2 +Block 0010 [120]: adf064db6f41b2d0 +Block 0010 [121]: 66e36ed60db08e78 +Block 0010 [122]: 9db421efe09b5dc9 +Block 0010 [123]: 25eab21b2878e5ba +Block 0010 [124]: f4ceb1a0e178b084 +Block 0010 [125]: f117d1fb52d7f0a1 +Block 0010 [126]: 7a2ac65a075a7e0f +Block 0010 [127]: 810954fbb31fdf1a +Block 0011 [ 0]: 0e29d95fe511e04d +Block 0011 [ 1]: 13c9ef6946e59fb2 +Block 0011 [ 2]: b9edf0e8e52a2e21 +Block 0011 [ 3]: 953124c3fc0130f4 +Block 0011 [ 4]: f9e368d2ce6e9f2b +Block 0011 [ 5]: 2c013e6d64bfac16 +Block 0011 [ 6]: 85ee494ff677546c +Block 0011 [ 7]: 7e5e241249696384 +Block 0011 [ 8]: f1bd19de6eb2b578 +Block 0011 [ 9]: fd7dff90cd127146 +Block 0011 [ 10]: b0276a8590517308 +Block 0011 [ 11]: 1997e6961cd4172b +Block 0011 [ 12]: e970bf5937e8ba67 +Block 0011 [ 13]: 997a801c2be3d65e +Block 0011 [ 14]: f251b1ac7c259652 +Block 0011 [ 15]: c65c431013920d9c +Block 0011 [ 16]: 8d77564d250306b4 +Block 0011 [ 17]: d9c99ace927fb203 +Block 0011 [ 18]: 615208697c3e89d7 +Block 0011 [ 19]: a657575ec6603056 +Block 0011 [ 20]: ffcfaad18c7e709f +Block 0011 [ 21]: c4236e6fbbd3e654 +Block 0011 [ 22]: 9912a1c921f60b6d +Block 0011 [ 23]: 0591dbfe857cbf25 +Block 0011 [ 24]: 37dca3835abf08ef +Block 0011 [ 25]: fe86e8c90fb2c5bd +Block 0011 [ 26]: f13d31fb9e188a0b +Block 0011 [ 27]: 52f558bae211b69a +Block 0011 [ 28]: 850898653a80ccf0 +Block 0011 [ 29]: d26bb731a29067f5 +Block 0011 [ 30]: 86457f7e5895d7f1 +Block 0011 [ 31]: 1b3349076ae1892e +Block 0011 [ 32]: 6409935520ced717 +Block 0011 [ 33]: ca0fcf02eca75105 +Block 0011 [ 34]: 5223f92b3919c403 +Block 0011 [ 35]: f15ff36a0dbc9a19 +Block 0011 [ 36]: 9d7776e6c269f58f +Block 0011 [ 37]: c04ee2bedbdc990f +Block 0011 [ 38]: ae936612661d3076 +Block 0011 [ 39]: d937f92bee9e6ca0 +Block 0011 [ 40]: fb6d834ac2a2ce56 +Block 0011 [ 41]: 804e4e605ac67a64 +Block 0011 [ 42]: de073c7c0740efd0 +Block 0011 [ 43]: 19fabb72e5670a8f +Block 0011 [ 44]: 4700769583220e60 +Block 0011 [ 45]: a3cc907f36e1fd94 +Block 0011 [ 46]: 13186c0243a98246 +Block 0011 [ 47]: 3fb2722223782206 +Block 0011 [ 48]: 0bae6ef325ea98df +Block 0011 [ 49]: bfa458d7bbc10e07 +Block 0011 [ 50]: e5af71034751f4dc +Block 0011 [ 51]: 60b296e6b629d7fd +Block 0011 [ 52]: f21c933bca848abc +Block 0011 [ 53]: f51be91c0e69b9b6 +Block 0011 [ 54]: cd47910b75abd177 +Block 0011 [ 55]: fde3573dc408cb71 +Block 0011 [ 56]: 9cd8f9089d99653b +Block 0011 [ 57]: 4bb5a1a43a0d5438 +Block 0011 [ 58]: 75d318af98df4e40 +Block 0011 [ 59]: 98bb9cfbf3051166 +Block 0011 [ 60]: 50f2c44750bf6bf5 +Block 0011 [ 61]: b417a6096ea6c619 +Block 0011 [ 62]: 773ab817c6b1d5d2 +Block 0011 [ 63]: d22a9eacb5a3d7f7 +Block 0011 [ 64]: 8cb6a5559d6fbcee +Block 0011 [ 65]: 0452f75d265fa348 +Block 0011 [ 66]: 193e6c5e124077c5 +Block 0011 [ 67]: 6642e04fe60a48c2 +Block 0011 [ 68]: daae3e4a5e745967 +Block 0011 [ 69]: 9843e3c8dda09afb +Block 0011 [ 70]: 67c8a319c4ac1922 +Block 0011 [ 71]: eacabb0f75114aac +Block 0011 [ 72]: 860ebbee0faf1cce +Block 0011 [ 73]: 7bf16fc76a8b56f5 +Block 0011 [ 74]: 5516fca385608bd1 +Block 0011 [ 75]: c3810f023ac43b84 +Block 0011 [ 76]: 2ec2a2053b9d16ab +Block 0011 [ 77]: 03b1d1d164395fce +Block 0011 [ 78]: 4a5569a698107fe4 +Block 0011 [ 79]: eeebc9893a8833da +Block 0011 [ 80]: baae7d25bb1718e3 +Block 0011 [ 81]: e0bd0e82ec8f8e56 +Block 0011 [ 82]: 00a3f878303000de +Block 0011 [ 83]: 81b15606e01d1853 +Block 0011 [ 84]: 4b68d808f18264f2 +Block 0011 [ 85]: cfbc30166b95a051 +Block 0011 [ 86]: 7ccf8c6fbe594d1a +Block 0011 [ 87]: 8fb7f6125de8a4b8 +Block 0011 [ 88]: 9874ab2e71425803 +Block 0011 [ 89]: 89836faa299c3612 +Block 0011 [ 90]: 18848a63fe32ac03 +Block 0011 [ 91]: 80c4fa2d0fa06de0 +Block 0011 [ 92]: 8f96900b1f819c8d +Block 0011 [ 93]: 25b5543a08d55450 +Block 0011 [ 94]: 93030b656f492ed6 +Block 0011 [ 95]: b27a28206ff52c96 +Block 0011 [ 96]: 7f6e7f6e09cf2d75 +Block 0011 [ 97]: 959272d1c52f6e68 +Block 0011 [ 98]: 1ada4e3a2de6c66e +Block 0011 [ 99]: d6569dfc7529f763 +Block 0011 [100]: 038cca522a11ac0f +Block 0011 [101]: 454db675e85984c8 +Block 0011 [102]: 58df9a938bdb8c55 +Block 0011 [103]: 0eedcc2512ddc387 +Block 0011 [104]: 936c4a2daa8ccb10 +Block 0011 [105]: b521e399d33e4d89 +Block 0011 [106]: 012c38f3584346f1 +Block 0011 [107]: 9771b339121cde79 +Block 0011 [108]: 909df00f57e0f0d8 +Block 0011 [109]: 231678b808c5f790 +Block 0011 [110]: 1301e2a6fe312dd4 +Block 0011 [111]: 9657e8e3084d6e89 +Block 0011 [112]: 7e83773b9757c9a9 +Block 0011 [113]: e569bf33a0b83346 +Block 0011 [114]: a442e925d7063b16 +Block 0011 [115]: f91f8be4eeb9e9d3 +Block 0011 [116]: 13b2253dc99c5078 +Block 0011 [117]: bf73b2bbb0f7feea +Block 0011 [118]: 7913497f784f9c00 +Block 0011 [119]: c135b851de9ca1f9 +Block 0011 [120]: 10d4ac102075f58c +Block 0011 [121]: 3e894baf2d480e04 +Block 0011 [122]: d2669db4d2abf1ae +Block 0011 [123]: b5b3a56a014be498 +Block 0011 [124]: 02059fe631e30976 +Block 0011 [125]: 2af8b8d2a9373534 +Block 0011 [126]: b7c31b0d57ea305e +Block 0011 [127]: 1c01db8d2984e3c3 +Block 0012 [ 0]: f0a10e805d6a3d42 +Block 0012 [ 1]: 793f18c15e3a812b +Block 0012 [ 2]: cd71670532fc3879 +Block 0012 [ 3]: 52026378e6aff4f4 +Block 0012 [ 4]: 18271d36c62e4b05 +Block 0012 [ 5]: fa6930a37b56ec6c +Block 0012 [ 6]: 583be84a02ec6ffe +Block 0012 [ 7]: 4b11ca6fb2f9097a +Block 0012 [ 8]: a1bbd58c4ae15ee9 +Block 0012 [ 9]: dbee5a087bbecbbb +Block 0012 [ 10]: 882bf5a9101613ce +Block 0012 [ 11]: bb3dde2797ef3263 +Block 0012 [ 12]: cbf13cfa9034a08b +Block 0012 [ 13]: 811814c390f8bfea +Block 0012 [ 14]: fcfe41d624f6b8ea +Block 0012 [ 15]: 68e3856880355b6f +Block 0012 [ 16]: 1236f5c74c7bf903 +Block 0012 [ 17]: d180385f9fb9a21c +Block 0012 [ 18]: 7499349f22b9555a +Block 0012 [ 19]: 5fb57d55eb9fbf15 +Block 0012 [ 20]: 5110de9baffaeabf +Block 0012 [ 21]: 793e08a617682e55 +Block 0012 [ 22]: 493b642d49020517 +Block 0012 [ 23]: 94df9b09283d2489 +Block 0012 [ 24]: fd2d581994173c8f +Block 0012 [ 25]: e07bf0dd445094a7 +Block 0012 [ 26]: f0ad829a158735b0 +Block 0012 [ 27]: d704ed42147e4768 +Block 0012 [ 28]: 94e8dd6c664e9b7a +Block 0012 [ 29]: 2e639aadb2538f91 +Block 0012 [ 30]: e2e9b6be2b7b4bd6 +Block 0012 [ 31]: 8eea81002f9ed55d +Block 0012 [ 32]: fda7705421c952b1 +Block 0012 [ 33]: c7fb8ff8a46f9bfd +Block 0012 [ 34]: 1633518f427b4076 +Block 0012 [ 35]: b61d459f7bdca710 +Block 0012 [ 36]: a1e87287e279fb03 +Block 0012 [ 37]: d5950378d37f53f9 +Block 0012 [ 38]: a2594348f93f1bea +Block 0012 [ 39]: a618cc5ac0dfe096 +Block 0012 [ 40]: 9266c0f94217c115 +Block 0012 [ 41]: 96d61a622b19ce38 +Block 0012 [ 42]: f63a027f9aca11df +Block 0012 [ 43]: 55729809d54915e1 +Block 0012 [ 44]: cbd491cb52e43cae +Block 0012 [ 45]: b481994150fd14ed +Block 0012 [ 46]: f83a7f15934b47cb +Block 0012 [ 47]: d3e1e10e23c2da2a +Block 0012 [ 48]: 372244cf798883ba +Block 0012 [ 49]: e8794123bacdf1e4 +Block 0012 [ 50]: 062ff79705430499 +Block 0012 [ 51]: 0fddc01417f4f219 +Block 0012 [ 52]: 740c3f09be649563 +Block 0012 [ 53]: 417915d57dc5e333 +Block 0012 [ 54]: f4ee80593bd8e5e8 +Block 0012 [ 55]: 1aee1eb265897cf7 +Block 0012 [ 56]: 0b9ad0f240ba5b24 +Block 0012 [ 57]: 02305b2b03979574 +Block 0012 [ 58]: 472d3640594de091 +Block 0012 [ 59]: 23fbf913420fcc2e +Block 0012 [ 60]: 6ca81dbbb5d512ce +Block 0012 [ 61]: e0520559706bc438 +Block 0012 [ 62]: fc33c33b8963da2c +Block 0012 [ 63]: 2aff701acb05547b +Block 0012 [ 64]: 5a3d42e91e578fc4 +Block 0012 [ 65]: 59758063adf92785 +Block 0012 [ 66]: 6e951b562c76432a +Block 0012 [ 67]: 51fff0413fb1aa59 +Block 0012 [ 68]: d727046b8866df8a +Block 0012 [ 69]: 6b4ebd88ac923a21 +Block 0012 [ 70]: 3c7e55e1d711a11d +Block 0012 [ 71]: 514608cba1330771 +Block 0012 [ 72]: ccb3fbfc634d067c +Block 0012 [ 73]: 68060b3d512ebbe3 +Block 0012 [ 74]: 5f78d84f461f23a6 +Block 0012 [ 75]: 0e0aef3906cb0db3 +Block 0012 [ 76]: 0ef3f0a509d24321 +Block 0012 [ 77]: 272fe65195e2de31 +Block 0012 [ 78]: 5da29cd98a1a39d6 +Block 0012 [ 79]: befb7a2c57c841dc +Block 0012 [ 80]: 8aae609c4e5dfef2 +Block 0012 [ 81]: 4d9b10b5e6ca0d55 +Block 0012 [ 82]: 66757b1cc499a8fd +Block 0012 [ 83]: c59eea79d9ae02c6 +Block 0012 [ 84]: deb05636105f0577 +Block 0012 [ 85]: 8f910d9f13862dcd +Block 0012 [ 86]: 8bbf0b58f2bfcae4 +Block 0012 [ 87]: 1dc80a5af6216876 +Block 0012 [ 88]: f0c7f38f688d275c +Block 0012 [ 89]: 02403970ee4c0e2e +Block 0012 [ 90]: 9bf3b1f16309c29d +Block 0012 [ 91]: a4af59c84060dc96 +Block 0012 [ 92]: c3e3fc9cf27457c6 +Block 0012 [ 93]: 220546fb39e69bfa +Block 0012 [ 94]: bc219a5e82fd01f9 +Block 0012 [ 95]: 893586e7f24bbbbb +Block 0012 [ 96]: 5ae5a74274584644 +Block 0012 [ 97]: a3d9b022bdb17043 +Block 0012 [ 98]: 44f0bbe60e366459 +Block 0012 [ 99]: 88f5771b41071c50 +Block 0012 [100]: d03e3dd3ff2884d7 +Block 0012 [101]: df42e00141a4c89c +Block 0012 [102]: 5aaaa0a2ae8cf52f +Block 0012 [103]: 3d81539d33d9b161 +Block 0012 [104]: 115e34c07ae62a81 +Block 0012 [105]: 94e9221ff8a546a1 +Block 0012 [106]: 8ece3db10b15f445 +Block 0012 [107]: 032849a37be21edb +Block 0012 [108]: 92714bca0b25c3eb +Block 0012 [109]: 721aa5702abcc45c +Block 0012 [110]: 01617ba1be353c8c +Block 0012 [111]: bc2fe091715fcb5a +Block 0012 [112]: 7043ec541e986c7a +Block 0012 [113]: bd57d71922db1672 +Block 0012 [114]: f0c92f03d437e05e +Block 0012 [115]: 9634e655a6d37386 +Block 0012 [116]: 3566fd3ebdaf03f4 +Block 0012 [117]: 85f6da1bc86fea33 +Block 0012 [118]: 1805b65c7746103a +Block 0012 [119]: eb0a6900ef07ca4a +Block 0012 [120]: 8f594a63644580fd +Block 0012 [121]: bfe1dd1be8d6cac2 +Block 0012 [122]: abc26813b3c0d475 +Block 0012 [123]: dbb6fb0dc45d5336 +Block 0012 [124]: abd7de0d061bc830 +Block 0012 [125]: 4f2d1a573c90037a +Block 0012 [126]: 3b9864dd28daf6ea +Block 0012 [127]: 9a7f1f97327c21fa +Block 0013 [ 0]: 110f27a1aef9087f +Block 0013 [ 1]: c0cfc9adf0c80b95 +Block 0013 [ 2]: 915b2854a9b6b139 +Block 0013 [ 3]: 705cd3389ad868f9 +Block 0013 [ 4]: 7ffa3e9cf5dc0143 +Block 0013 [ 5]: add08043ba2eb292 +Block 0013 [ 6]: b997dc82acbc56b3 +Block 0013 [ 7]: 29f9142ed8e3e203 +Block 0013 [ 8]: 050d803719d5d047 +Block 0013 [ 9]: be408d73e0383a54 +Block 0013 [ 10]: 0043e17848f8a16c +Block 0013 [ 11]: 7ab8058b78922cd3 +Block 0013 [ 12]: a97d9693d58a402d +Block 0013 [ 13]: d28560c5cf09156b +Block 0013 [ 14]: ea3cb0a06ba7e158 +Block 0013 [ 15]: fa0fa4343d04cece +Block 0013 [ 16]: 5b183466bb0e7d09 +Block 0013 [ 17]: 120ce02546fb925d +Block 0013 [ 18]: e7fc63058f17cdc3 +Block 0013 [ 19]: 1fae37ddb0408070 +Block 0013 [ 20]: 40c7079b90e2e848 +Block 0013 [ 21]: 7a9c8911517f1e87 +Block 0013 [ 22]: 63029b2b67fb12c9 +Block 0013 [ 23]: 4d800e4f7ba91f7f +Block 0013 [ 24]: b434650ee99c2251 +Block 0013 [ 25]: 74407b19bc5486db +Block 0013 [ 26]: b67c9a18dadf965a +Block 0013 [ 27]: d98744b3b1bb6d09 +Block 0013 [ 28]: 2d8c34b0cbcd7a6f +Block 0013 [ 29]: fd0afc73cc572177 +Block 0013 [ 30]: 07b09f0e5653ce17 +Block 0013 [ 31]: cab97eb257f691db +Block 0013 [ 32]: 9f11eae0f39f21a8 +Block 0013 [ 33]: 15d19b49b7e02c6c +Block 0013 [ 34]: 46da6e970f66b6c8 +Block 0013 [ 35]: 49a17e8263eec903 +Block 0013 [ 36]: c9de78f4bc6aa868 +Block 0013 [ 37]: 1d8dfea55f5b6796 +Block 0013 [ 38]: 175316a8f61b2587 +Block 0013 [ 39]: 25efcc429557ec7e +Block 0013 [ 40]: a9384ef695b7bc06 +Block 0013 [ 41]: 56f2662a3bacbdf6 +Block 0013 [ 42]: e69affaafe48fb24 +Block 0013 [ 43]: e3136ec9687b8b85 +Block 0013 [ 44]: 02d1dc27aac26fd1 +Block 0013 [ 45]: e7e6e588167ec3c9 +Block 0013 [ 46]: 652fe019d9c046cf +Block 0013 [ 47]: e3942dadc5eece24 +Block 0013 [ 48]: 6d93b00de46cf751 +Block 0013 [ 49]: fa8dd8fb0f6a895b +Block 0013 [ 50]: a086d03df0190e1c +Block 0013 [ 51]: 3494cede809724c7 +Block 0013 [ 52]: 0e391a8be24b0c61 +Block 0013 [ 53]: 63b504727b8f421d +Block 0013 [ 54]: f589dc5bb5b3bb05 +Block 0013 [ 55]: 2d907b105dc21167 +Block 0013 [ 56]: 80d67a062dc94ed8 +Block 0013 [ 57]: 7062e09641789f6a +Block 0013 [ 58]: e7a0e21c50810817 +Block 0013 [ 59]: f4c561d19debae21 +Block 0013 [ 60]: bcb9d85144bb0ec4 +Block 0013 [ 61]: 901b4b59386d1079 +Block 0013 [ 62]: 958c2c24f57698e3 +Block 0013 [ 63]: 378994aadd67b8bb +Block 0013 [ 64]: af646ae2a18aa18c +Block 0013 [ 65]: 98cf82fa8cad9367 +Block 0013 [ 66]: 34acd9fb664da41b +Block 0013 [ 67]: cb0c55d6a06a36d1 +Block 0013 [ 68]: 596cac0f464dccf5 +Block 0013 [ 69]: e0b7e5b458bf7e65 +Block 0013 [ 70]: 9d4153213429e381 +Block 0013 [ 71]: bd175bd05ad89ddc +Block 0013 [ 72]: 3a32b790edeb3b50 +Block 0013 [ 73]: 76181582b4bb6db4 +Block 0013 [ 74]: 3bacbf9a5c6bc5d2 +Block 0013 [ 75]: 52025dd1e69fe955 +Block 0013 [ 76]: 24766a27757868e1 +Block 0013 [ 77]: ea254628c57d6565 +Block 0013 [ 78]: 4dffd3946e2391c9 +Block 0013 [ 79]: a3f0ec19131b2c74 +Block 0013 [ 80]: aabf1ebb453cad3f +Block 0013 [ 81]: 5ce4d4039ae51784 +Block 0013 [ 82]: 063b31568aaa2b58 +Block 0013 [ 83]: b2edb1f3fd849ce2 +Block 0013 [ 84]: e1c635d7781384ab +Block 0013 [ 85]: 434ca168921233af +Block 0013 [ 86]: 5a4cd5d7f2893065 +Block 0013 [ 87]: dbab9cbae3521a69 +Block 0013 [ 88]: 73eba126bc1bd0ec +Block 0013 [ 89]: 036d4e6e1a1bd19a +Block 0013 [ 90]: 1bbcd74a6795d7b7 +Block 0013 [ 91]: d1dcfe677aa57f4d +Block 0013 [ 92]: 502f4df14adefb98 +Block 0013 [ 93]: 9cf907ea8095e86d +Block 0013 [ 94]: 68952d15ce5ffec0 +Block 0013 [ 95]: 51ef41bd9953cf0d +Block 0013 [ 96]: c75de12576679af2 +Block 0013 [ 97]: 3a1245ca4b59d991 +Block 0013 [ 98]: 58da406deda0a2be +Block 0013 [ 99]: ed1d359b0924fc6a +Block 0013 [100]: 88b53326e7c95d86 +Block 0013 [101]: bf63c58402be96e1 +Block 0013 [102]: 27e94f0a9fc33bd4 +Block 0013 [103]: 0941976229a26011 +Block 0013 [104]: f393524504acfc53 +Block 0013 [105]: 9d12db1e3a8fdd72 +Block 0013 [106]: 65f94d0cf0f79d71 +Block 0013 [107]: eb80341772fd94f3 +Block 0013 [108]: 50d0e71609e35d14 +Block 0013 [109]: d6e1428d1a900f1d +Block 0013 [110]: c0438ecdf9ee424e +Block 0013 [111]: fb220c418b818629 +Block 0013 [112]: 7c792913ed892332 +Block 0013 [113]: 0699f2d790569f7b +Block 0013 [114]: b3637f2e9d09356d +Block 0013 [115]: fc6e80e108607a84 +Block 0013 [116]: 93101242fdc3284c +Block 0013 [117]: 0f65daea4d92cc13 +Block 0013 [118]: aeb01cf68d144bb2 +Block 0013 [119]: d3132f63adac679c +Block 0013 [120]: 9956ffa4821ade14 +Block 0013 [121]: 45d10cd12b08a7f7 +Block 0013 [122]: 87df8b5647c8d31a +Block 0013 [123]: 42c90f381e6c64f3 +Block 0013 [124]: 530fde3cc6aa2cd9 +Block 0013 [125]: a7b34dbb301080f1 +Block 0013 [126]: 790189cfcbe04e38 +Block 0013 [127]: b448bd06eabfa98b +Block 0014 [ 0]: 9f1cd0689f53b9b6 +Block 0014 [ 1]: e35b168966e80b90 +Block 0014 [ 2]: b5a0942914a9db2c +Block 0014 [ 3]: 7231649171873f3d +Block 0014 [ 4]: 2c0a81ffc170207e +Block 0014 [ 5]: 168b9363fd1e8c79 +Block 0014 [ 6]: 0b7f5f346840af27 +Block 0014 [ 7]: f1e08d27b9de4794 +Block 0014 [ 8]: 90c4838daaa18f3c +Block 0014 [ 9]: c2d426a11ddfff84 +Block 0014 [ 10]: 6a2e7d5722f53302 +Block 0014 [ 11]: 2da4baa266ac48ac +Block 0014 [ 12]: 222cb59e7384d5bb +Block 0014 [ 13]: 9cc616e7b6e09d64 +Block 0014 [ 14]: d832f28ddee93b3c +Block 0014 [ 15]: 512ed55d654e52c4 +Block 0014 [ 16]: f8b9a8f05fad25eb +Block 0014 [ 17]: 58da11fa5bb50a7a +Block 0014 [ 18]: b16d7729e5485ed2 +Block 0014 [ 19]: 4762f37ae7b70419 +Block 0014 [ 20]: ce877c5117af06e1 +Block 0014 [ 21]: a264cfa6af1399cb +Block 0014 [ 22]: 1c713c633a43e490 +Block 0014 [ 23]: 605294b6d0d3e1e3 +Block 0014 [ 24]: e6699e6c92b1605f +Block 0014 [ 25]: 77283eeb32daee4f +Block 0014 [ 26]: d8d610cda9e3c069 +Block 0014 [ 27]: 59d3bddf6621cc2b +Block 0014 [ 28]: e8bbf2f7b451e342 +Block 0014 [ 29]: 9ca3895b73353bbe +Block 0014 [ 30]: d3ed63a85178af46 +Block 0014 [ 31]: 3de2f2b674cd7ec0 +Block 0014 [ 32]: 887ad16072a7cf85 +Block 0014 [ 33]: c062593e55dc4740 +Block 0014 [ 34]: b3eeaf3026f24201 +Block 0014 [ 35]: d404cb5e83d3e5d7 +Block 0014 [ 36]: 1f46223eb204e335 +Block 0014 [ 37]: 2f387000b96c0af9 +Block 0014 [ 38]: 52dc1b965363315d +Block 0014 [ 39]: 5dbab2ff30334937 +Block 0014 [ 40]: 827077350ef835ea +Block 0014 [ 41]: a5bb8eafd57608cd +Block 0014 [ 42]: bc37683bce72b276 +Block 0014 [ 43]: 489ec1943b6efce6 +Block 0014 [ 44]: 28c9a58821ed6adb +Block 0014 [ 45]: 663397bd43ea5ecf +Block 0014 [ 46]: 54980827a023f04f +Block 0014 [ 47]: 706eb7a6be4cdd9f +Block 0014 [ 48]: 4e6b5ecf1a232fe5 +Block 0014 [ 49]: 2c47b454de1dcafa +Block 0014 [ 50]: 5e1d313c65f0c1f9 +Block 0014 [ 51]: b0cadb11ec6bd339 +Block 0014 [ 52]: 5dd3a637173d8857 +Block 0014 [ 53]: a33f8ddff280b343 +Block 0014 [ 54]: c9da85614cb6590e +Block 0014 [ 55]: 7b568d8c124f7072 +Block 0014 [ 56]: 6f5ff6b532b5a348 +Block 0014 [ 57]: 60d2ead8531affff +Block 0014 [ 58]: 877b1a71f3346e8a +Block 0014 [ 59]: 242e688117a0b8d2 +Block 0014 [ 60]: 19b6fafc9a26c636 +Block 0014 [ 61]: 3d79c909792e2519 +Block 0014 [ 62]: 731417532be4bd67 +Block 0014 [ 63]: e2986d03c73c3b21 +Block 0014 [ 64]: f1668b930bf7d92e +Block 0014 [ 65]: 726901a66463d300 +Block 0014 [ 66]: 052f2baa09531e23 +Block 0014 [ 67]: 9ee57ada74595090 +Block 0014 [ 68]: b1d683625fbbe541 +Block 0014 [ 69]: 2ca43737ff0a5718 +Block 0014 [ 70]: 1721e2e1e9985f54 +Block 0014 [ 71]: d50e276b2aa551d2 +Block 0014 [ 72]: a799e3018b5e9184 +Block 0014 [ 73]: 4f277f05bdc10280 +Block 0014 [ 74]: 00a99d452e6e2fce +Block 0014 [ 75]: 9cd4b73c0081c1d3 +Block 0014 [ 76]: 2536bbd5d2e4a47e +Block 0014 [ 77]: e9cf0d3b2c3030b6 +Block 0014 [ 78]: 656e91bcfc0e222a +Block 0014 [ 79]: a6da444ba9091ea8 +Block 0014 [ 80]: e0afe24cdb91b8c3 +Block 0014 [ 81]: 97f078a7948b822e +Block 0014 [ 82]: 5ca27019b4d2028e +Block 0014 [ 83]: f9fd77cb1f46983a +Block 0014 [ 84]: d13fe437a13cc54e +Block 0014 [ 85]: 006dc58126a3680a +Block 0014 [ 86]: cd8216267cc53592 +Block 0014 [ 87]: e5b6c5d75cd47a7b +Block 0014 [ 88]: 8ec249b6f585da10 +Block 0014 [ 89]: 3d299fcdcebfd8a0 +Block 0014 [ 90]: 921e8f4085db462b +Block 0014 [ 91]: 4179567387eacae7 +Block 0014 [ 92]: e7f8371d18e577fc +Block 0014 [ 93]: 301a74658b8a2b21 +Block 0014 [ 94]: 64454eb02213d764 +Block 0014 [ 95]: 6053b14fdf4ed719 +Block 0014 [ 96]: df018d7367b07151 +Block 0014 [ 97]: d50a9c2eecf3f057 +Block 0014 [ 98]: c486b8ccbd41e401 +Block 0014 [ 99]: fa8978518353c015 +Block 0014 [100]: 18c4ad2167895d88 +Block 0014 [101]: a5c38befc8633165 +Block 0014 [102]: ea798f7e1bb559c6 +Block 0014 [103]: 668cc3c01b2fbc8f +Block 0014 [104]: de2267386c58da11 +Block 0014 [105]: d6b83abd71a31208 +Block 0014 [106]: 38ab9df0a5d6b2c6 +Block 0014 [107]: c70ff46aa3c2c60d +Block 0014 [108]: 7d45101acb53cfcd +Block 0014 [109]: 094b173ab1ae9e2d +Block 0014 [110]: a4c3c60b822ef6aa +Block 0014 [111]: be99a740b86c90af +Block 0014 [112]: a068c651c7bee61d +Block 0014 [113]: a5bd2b2ab61dd25a +Block 0014 [114]: 94831b9b6f0ffaef +Block 0014 [115]: ffdce9d64741f054 +Block 0014 [116]: a1bc5fb0b5b8161a +Block 0014 [117]: 2fc4d76a12e81c91 +Block 0014 [118]: aff984f2849e9279 +Block 0014 [119]: 75cebdf31da0ac2a +Block 0014 [120]: 488570167b20be47 +Block 0014 [121]: bbd10c9260824085 +Block 0014 [122]: 0057c389ecaa85f0 +Block 0014 [123]: 40d8491601f433d6 +Block 0014 [124]: b5be2fefe01b5d0b +Block 0014 [125]: f7518252c19f76da +Block 0014 [126]: 985d37680c4cf0a6 +Block 0014 [127]: 9a2867c2c0e609ba +Block 0015 [ 0]: 13910b6bc3664aa0 +Block 0015 [ 1]: 810c299005aceed3 +Block 0015 [ 2]: ed0b536ccefd2bf4 +Block 0015 [ 3]: 90e9118b3fba9a29 +Block 0015 [ 4]: f245832f7121268b +Block 0015 [ 5]: 1b9f85dbb96ea6ac +Block 0015 [ 6]: c42d0fdd5387a138 +Block 0015 [ 7]: dc60c5abb673cbd6 +Block 0015 [ 8]: c7705bbbda6bdaa3 +Block 0015 [ 9]: 6e17017b53f92aef +Block 0015 [ 10]: a0ba6415a40d1b1e +Block 0015 [ 11]: fa9e111e339104c5 +Block 0015 [ 12]: 8275b953b8f61384 +Block 0015 [ 13]: 01525585e0f3a8ff +Block 0015 [ 14]: 8e48915135123c0c +Block 0015 [ 15]: e449243c3be44c24 +Block 0015 [ 16]: 5e71f56cb5817b37 +Block 0015 [ 17]: 824e99b239ea043b +Block 0015 [ 18]: 20277a3732ba698f +Block 0015 [ 19]: 601b1a32059f9125 +Block 0015 [ 20]: 8c8a2f8094592d46 +Block 0015 [ 21]: e39f3ee523a2ea39 +Block 0015 [ 22]: 0b230a73c13a63bd +Block 0015 [ 23]: 274b81e73393d329 +Block 0015 [ 24]: 837dfd3bd0357519 +Block 0015 [ 25]: 195546d2218bcb43 +Block 0015 [ 26]: 532217c28434a94c +Block 0015 [ 27]: e29ef7168db35357 +Block 0015 [ 28]: dfa65c0f5ea36613 +Block 0015 [ 29]: f5ea1b2477ea5019 +Block 0015 [ 30]: eea2a212d4724c06 +Block 0015 [ 31]: 82ddd5df70bce0e3 +Block 0015 [ 32]: bed114d0172c9188 +Block 0015 [ 33]: 5c2327d38576b4a9 +Block 0015 [ 34]: 967cd759b4ac6a33 +Block 0015 [ 35]: 0f2562866c3454cc +Block 0015 [ 36]: af96dfb88fdca575 +Block 0015 [ 37]: 7dbb9f11564be976 +Block 0015 [ 38]: 0aa59b9e7bf7f48f +Block 0015 [ 39]: e81eb3014bac9fa7 +Block 0015 [ 40]: 0680394a1d912913 +Block 0015 [ 41]: 357ed036e65c33a5 +Block 0015 [ 42]: 75ae6371adf01990 +Block 0015 [ 43]: a2ace9bf2a013566 +Block 0015 [ 44]: 6d5ef6c3440afb82 +Block 0015 [ 45]: 37b072042495a57a +Block 0015 [ 46]: e6aa7dd55fcb12c2 +Block 0015 [ 47]: 7bdde78e351cbd8d +Block 0015 [ 48]: a188855b01202e2f +Block 0015 [ 49]: 0d159146d76e7f2b +Block 0015 [ 50]: 0cf5f48a18081329 +Block 0015 [ 51]: 389ab774f9126d73 +Block 0015 [ 52]: e51476adeaf90275 +Block 0015 [ 53]: b4d89924dc05ff5b +Block 0015 [ 54]: 09b69ba48ff39335 +Block 0015 [ 55]: 19e99309184f742b +Block 0015 [ 56]: 333b1a54ac0c3688 +Block 0015 [ 57]: 008c9b8d51233e6a +Block 0015 [ 58]: 92078aa2c4fd6d0d +Block 0015 [ 59]: 9445ce5fb44d94fc +Block 0015 [ 60]: 799dceafe1118445 +Block 0015 [ 61]: 54b47c19ad881f4f +Block 0015 [ 62]: 5fa8ace3817a0179 +Block 0015 [ 63]: c3a420b1843a745b +Block 0015 [ 64]: 44afad54500c9837 +Block 0015 [ 65]: 4ecbbd1225b43e5e +Block 0015 [ 66]: 66c9b32f899631c5 +Block 0015 [ 67]: e7d81299bacd2082 +Block 0015 [ 68]: 30d9d63610b0ffe3 +Block 0015 [ 69]: 9d8cfc4c8844d513 +Block 0015 [ 70]: b7c084178b4137a0 +Block 0015 [ 71]: f83e5d17062eb8b9 +Block 0015 [ 72]: 0d0b6549369d8f9d +Block 0015 [ 73]: b1124c8f15e76634 +Block 0015 [ 74]: 059926f89443c09e +Block 0015 [ 75]: 045a096f41a09c73 +Block 0015 [ 76]: 044c28c7194d8ad3 +Block 0015 [ 77]: e6df09e32fe8a94b +Block 0015 [ 78]: ab76ab78da161bbf +Block 0015 [ 79]: 316b39fc15505896 +Block 0015 [ 80]: 3fbe2060a5b8f55c +Block 0015 [ 81]: eb190ddebb4b6807 +Block 0015 [ 82]: af0456440e6ab638 +Block 0015 [ 83]: be0dab7d08cbc76a +Block 0015 [ 84]: abafe12ea41d5fe6 +Block 0015 [ 85]: 3b0cf7d7111bcfab +Block 0015 [ 86]: 7616a546c8ee4745 +Block 0015 [ 87]: b538bae6bf7ab536 +Block 0015 [ 88]: 81fd8f8b12a77f3b +Block 0015 [ 89]: 39a27b1569437440 +Block 0015 [ 90]: ae9964bb3cdff849 +Block 0015 [ 91]: e3a4132cdba67906 +Block 0015 [ 92]: d158cd59ea9f9034 +Block 0015 [ 93]: 2bf2511afb694d05 +Block 0015 [ 94]: 58838b0cd79d44b6 +Block 0015 [ 95]: 64064c613bf2e3f1 +Block 0015 [ 96]: 1fdfa3bf5446c792 +Block 0015 [ 97]: 2ca19444da846a6f +Block 0015 [ 98]: 695657edf5467ed8 +Block 0015 [ 99]: 920f468266e669d3 +Block 0015 [100]: 8730b7895b7f558a +Block 0015 [101]: 04fe6d8e53bcaa1b +Block 0015 [102]: 7c71b094b720ab4a +Block 0015 [103]: cadc9d7ab9b10062 +Block 0015 [104]: d1f55e2ad6398ebb +Block 0015 [105]: 59cf88c99120351e +Block 0015 [106]: 7b98146dab48ec98 +Block 0015 [107]: c13c99b8e717db1b +Block 0015 [108]: 80d0d51210e327f6 +Block 0015 [109]: 6ba3a2ba66a637fe +Block 0015 [110]: bf1937951c46acdd +Block 0015 [111]: a9366cd100f1fc79 +Block 0015 [112]: 341a0fe4906324d7 +Block 0015 [113]: 9913c4d902b0f3ee +Block 0015 [114]: ad09b2f566324f03 +Block 0015 [115]: 9f6f5f4349ee7f1e +Block 0015 [116]: 8b1948a1a8bf9fa1 +Block 0015 [117]: 178f7d8ceabf9cd5 +Block 0015 [118]: fdf3473cd9eeb149 +Block 0015 [119]: 552b82c798528d52 +Block 0015 [120]: b336c3211cfc3415 +Block 0015 [121]: 1461cf354137ecee +Block 0015 [122]: a584771e2094c871 +Block 0015 [123]: ff6e940e11f094db +Block 0015 [124]: 65e837b609d53c15 +Block 0015 [125]: ada005f93180c3b0 +Block 0015 [126]: ac8ebdb88c35c1a7 +Block 0015 [127]: ed3abf44c47ac005 +Block 0016 [ 0]: 9a0bb8d093596be9 +Block 0016 [ 1]: e1bfdc05ee03fd0d +Block 0016 [ 2]: 4a7b8afd32898b11 +Block 0016 [ 3]: 263bf05080975928 +Block 0016 [ 4]: 0563f113f91d5a5a +Block 0016 [ 5]: e862a00d92f15cc2 +Block 0016 [ 6]: e089bd9ccc09bea9 +Block 0016 [ 7]: ebe9f60e8c7a0e65 +Block 0016 [ 8]: 7f48279b30898131 +Block 0016 [ 9]: 17de2db04f052abf +Block 0016 [ 10]: 2cc5414dc6ad2c64 +Block 0016 [ 11]: 86d060b19d2f3be6 +Block 0016 [ 12]: 26e6b473a55b01d0 +Block 0016 [ 13]: d15c82850170d2ab +Block 0016 [ 14]: 3afa12012cf636de +Block 0016 [ 15]: 8280e9b3c7b94ae7 +Block 0016 [ 16]: 3b75e9ab4b6363c0 +Block 0016 [ 17]: 08773ef3f0850ae6 +Block 0016 [ 18]: 010c22444c34b6ee +Block 0016 [ 19]: 58961c39c35db529 +Block 0016 [ 20]: 8306e410937d0760 +Block 0016 [ 21]: 563b892ed86b6c0e +Block 0016 [ 22]: 636d5b97a0c83748 +Block 0016 [ 23]: 3d2dbcf4bb47154d +Block 0016 [ 24]: 9fa80ade851efc6c +Block 0016 [ 25]: 602c1d73bf843f33 +Block 0016 [ 26]: b3f7583703712055 +Block 0016 [ 27]: cebd7a463a65108c +Block 0016 [ 28]: 8abc836cdc9a09dd +Block 0016 [ 29]: 926f6766ee4b4e4a +Block 0016 [ 30]: 69f36ed4fe16e884 +Block 0016 [ 31]: 0391acd1b8d5875c +Block 0016 [ 32]: d200bbf9f45f84a3 +Block 0016 [ 33]: 3540b92d47171fb3 +Block 0016 [ 34]: e0fb94d4da9f4257 +Block 0016 [ 35]: ef32cf22f5a01cb3 +Block 0016 [ 36]: df1e8e16f3556b3f +Block 0016 [ 37]: b1fa8d466cdfa033 +Block 0016 [ 38]: 16f43f463a72d9cf +Block 0016 [ 39]: d31c53228c3c607c +Block 0016 [ 40]: 5f4875332e0a7a3c +Block 0016 [ 41]: 66c32d33164cdd0b +Block 0016 [ 42]: 6bc342588808610d +Block 0016 [ 43]: 75722f4c4d895bc3 +Block 0016 [ 44]: de5ead39fe3adf2f +Block 0016 [ 45]: 2d76d5a3c958f392 +Block 0016 [ 46]: 91cc2c795b0ea82e +Block 0016 [ 47]: f84b957da44e0f33 +Block 0016 [ 48]: 50049c6e6d1be204 +Block 0016 [ 49]: 0f84d4f7a4f4623f +Block 0016 [ 50]: c483afeac90c583b +Block 0016 [ 51]: 5241f5b4718b1996 +Block 0016 [ 52]: 189c1ae8662a63c7 +Block 0016 [ 53]: 5889d3e318c05e53 +Block 0016 [ 54]: 5861e11e8a35c858 +Block 0016 [ 55]: 48e5b948f6c3c526 +Block 0016 [ 56]: dadaab651667f7e6 +Block 0016 [ 57]: 82b7e7fb9150020a +Block 0016 [ 58]: da5e055412c7486d +Block 0016 [ 59]: dfd7090ff83f2156 +Block 0016 [ 60]: 63e3609787b041d8 +Block 0016 [ 61]: e4adb17b0082436f +Block 0016 [ 62]: e90c704102ce9df0 +Block 0016 [ 63]: f7f2b4a1c2fb125c +Block 0016 [ 64]: 618e7ec96f20d5e8 +Block 0016 [ 65]: 76fc2dbdcaf8bbf2 +Block 0016 [ 66]: ec96562071ce660d +Block 0016 [ 67]: 2a2213e85db607aa +Block 0016 [ 68]: 3fc2f6739556310f +Block 0016 [ 69]: 256ac5562ea7de43 +Block 0016 [ 70]: d542ad70ca615a20 +Block 0016 [ 71]: fc6d8c2817a34ea9 +Block 0016 [ 72]: 3c8f3ed7b7c6b9df +Block 0016 [ 73]: c791195df2a66f44 +Block 0016 [ 74]: 2c0d711503dbd28d +Block 0016 [ 75]: c4e7a179e25cf184 +Block 0016 [ 76]: b1d267c1a4f4beb9 +Block 0016 [ 77]: 2f4ef773b00980ba +Block 0016 [ 78]: 845a3577578f7664 +Block 0016 [ 79]: 1329b906846966f7 +Block 0016 [ 80]: 9ce86824f02b1a97 +Block 0016 [ 81]: 5c1b8630f6b3ffd8 +Block 0016 [ 82]: c56403dfff373b13 +Block 0016 [ 83]: 449de31b81ed40d0 +Block 0016 [ 84]: da5d86f1d4859c40 +Block 0016 [ 85]: af68984af506de62 +Block 0016 [ 86]: af0a30caa06ea84a +Block 0016 [ 87]: 66a71b0fd1eea1a7 +Block 0016 [ 88]: 91a458c8179efc09 +Block 0016 [ 89]: 324a160de3980429 +Block 0016 [ 90]: b4ef6da86a04fca6 +Block 0016 [ 91]: 87509873a5e21aa2 +Block 0016 [ 92]: 8fe6cceaab2ea6e8 +Block 0016 [ 93]: f51c3860ffce0184 +Block 0016 [ 94]: e16694975bfac692 +Block 0016 [ 95]: 95793e832e74d3a2 +Block 0016 [ 96]: 0605b8359c162493 +Block 0016 [ 97]: b54cd3949d30e152 +Block 0016 [ 98]: eb36361d9a8cef2e +Block 0016 [ 99]: f25eec2dc7386a06 +Block 0016 [100]: d19ba04ffc53b6ba +Block 0016 [101]: 3816f7769f6bd0fd +Block 0016 [102]: effbd7aa623d98ae +Block 0016 [103]: fc1bbfc3fb63741e +Block 0016 [104]: db3ec9d71c9b6955 +Block 0016 [105]: 49eb5111ec17d14a +Block 0016 [106]: 94117297793212f0 +Block 0016 [107]: 0ec9abf1e13bbe99 +Block 0016 [108]: 3a4273167ecc5265 +Block 0016 [109]: 852857524a04c4ce +Block 0016 [110]: 4178c75b2edd173e +Block 0016 [111]: c90afac8bc77aad7 +Block 0016 [112]: 6c92e96d83ccb468 +Block 0016 [113]: 9dbf8877c737acc7 +Block 0016 [114]: 5808636bf5dfec55 +Block 0016 [115]: b5d700579728717b +Block 0016 [116]: 9c9a0bdb324f4ec5 +Block 0016 [117]: 11bddc88463a56d3 +Block 0016 [118]: f5cf8247b6af1ff6 +Block 0016 [119]: cd2463cce0e4c423 +Block 0016 [120]: d78e5dc71540157e +Block 0016 [121]: 045815154efbdecc +Block 0016 [122]: b9cb3f0e83d30af0 +Block 0016 [123]: 803fd63d9ff39d87 +Block 0016 [124]: 372cad617ab2e088 +Block 0016 [125]: 9fc7449aef3171c6 +Block 0016 [126]: 949f1546def1e4e5 +Block 0016 [127]: 7ff68880ad3e4171 +Block 0017 [ 0]: 17bc51246a97bfe8 +Block 0017 [ 1]: 7c307392a89164be +Block 0017 [ 2]: 3bd25ce4dd817fdd +Block 0017 [ 3]: 060ac5b552a17caf +Block 0017 [ 4]: f4e5cb5ec952721c +Block 0017 [ 5]: f40a02b23dacf1ed +Block 0017 [ 6]: cc7916b0003b7715 +Block 0017 [ 7]: fc024a28346e29d2 +Block 0017 [ 8]: 853a0213a4bba254 +Block 0017 [ 9]: 86458aa39e26fb79 +Block 0017 [ 10]: d0c5986ee2a8b77c +Block 0017 [ 11]: b7e9a2067e41b9dc +Block 0017 [ 12]: 1480f8731540a9a5 +Block 0017 [ 13]: a611565fa40d4e17 +Block 0017 [ 14]: ed2165f337d3254f +Block 0017 [ 15]: 9a2ca8e3b872f068 +Block 0017 [ 16]: 2a8dcea98d5ca8e1 +Block 0017 [ 17]: 46588793c6ee55b7 +Block 0017 [ 18]: ce760091c665de69 +Block 0017 [ 19]: 4df6fd4c724c3c02 +Block 0017 [ 20]: e3d5e35e793d4938 +Block 0017 [ 21]: cbc479714ea420e4 +Block 0017 [ 22]: ca4cf169361fc3ae +Block 0017 [ 23]: 6e0ff7647dbee083 +Block 0017 [ 24]: 2a77fbb07ea0868b +Block 0017 [ 25]: e2269c613372f038 +Block 0017 [ 26]: d5c9a67fb1bd36cf +Block 0017 [ 27]: 94e6f478c6bad422 +Block 0017 [ 28]: 73d510ad54eab733 +Block 0017 [ 29]: f407ddfecc8746da +Block 0017 [ 30]: 39d0482ea9dad35d +Block 0017 [ 31]: 734ce00d891aa7ec +Block 0017 [ 32]: 1a6c74ee238502c1 +Block 0017 [ 33]: 0fcc8fa05bcc224e +Block 0017 [ 34]: ad32b509d3d19c3d +Block 0017 [ 35]: bb9b95df60ffb63d +Block 0017 [ 36]: 8bffc2455c34f2c0 +Block 0017 [ 37]: d6f5ef776360eee9 +Block 0017 [ 38]: 21659782e3299c20 +Block 0017 [ 39]: ec7ac42b913b8806 +Block 0017 [ 40]: 9314f0c2971f9ec0 +Block 0017 [ 41]: 5340aba1b3895424 +Block 0017 [ 42]: d4724e17d3e2e403 +Block 0017 [ 43]: dcfe96954d356b40 +Block 0017 [ 44]: d5262bbc7d9d9e42 +Block 0017 [ 45]: a983ed3013d9715b +Block 0017 [ 46]: 1d6ac87ef06ee57d +Block 0017 [ 47]: 8416641ced13f76e +Block 0017 [ 48]: 1e72c0a977c6f809 +Block 0017 [ 49]: a6c0a7b48524e94a +Block 0017 [ 50]: a8d4d8f0b5b1ee56 +Block 0017 [ 51]: 06951457a0cde01f +Block 0017 [ 52]: 17a8f30ddab4fe10 +Block 0017 [ 53]: 41a5c0de05cb6849 +Block 0017 [ 54]: 7d6e61695eb13641 +Block 0017 [ 55]: aef78a53d6f9c52e +Block 0017 [ 56]: d0a9b02db118488a +Block 0017 [ 57]: f9f3148df06e460f +Block 0017 [ 58]: ba54c9d7da37026c +Block 0017 [ 59]: 813043bb6263b64a +Block 0017 [ 60]: 01e8ed3940b3a653 +Block 0017 [ 61]: 95600d5f7b6e4d77 +Block 0017 [ 62]: 51b3fc67c6a0ea2a +Block 0017 [ 63]: a4bb04ccc8265b11 +Block 0017 [ 64]: 0ab034f465cc0813 +Block 0017 [ 65]: e405436951fc79ab +Block 0017 [ 66]: 3ffbc05b9fcdeb7a +Block 0017 [ 67]: 28a0287c2941a2fc +Block 0017 [ 68]: 5bf655516a93e471 +Block 0017 [ 69]: a52095c9bd7237c3 +Block 0017 [ 70]: 7bb4ba223bee1011 +Block 0017 [ 71]: 50948fc7c91590af +Block 0017 [ 72]: 6ca4a3345a4f0106 +Block 0017 [ 73]: fae756af4dda49f6 +Block 0017 [ 74]: c39806c4c73bf1f1 +Block 0017 [ 75]: b9b643d55df8b682 +Block 0017 [ 76]: eea591b9d94795b0 +Block 0017 [ 77]: 88f24f15d82df6c0 +Block 0017 [ 78]: 1d35dc2e5f49fb41 +Block 0017 [ 79]: 5916da9d7b572428 +Block 0017 [ 80]: 180ba1758293cd85 +Block 0017 [ 81]: 5a6735d12f2982fe +Block 0017 [ 82]: dd921fc0eee69756 +Block 0017 [ 83]: e0771b3f026dbabf +Block 0017 [ 84]: 6df839ab1ce96516 +Block 0017 [ 85]: 72ec1c04a9fdc1a2 +Block 0017 [ 86]: e0c95b2b94db0792 +Block 0017 [ 87]: a8642ff38ac9e870 +Block 0017 [ 88]: b110669b3d07ea33 +Block 0017 [ 89]: 2d8aa2a78f93c49f +Block 0017 [ 90]: b5a40d81a59f5ef8 +Block 0017 [ 91]: 70d2112c6066451f +Block 0017 [ 92]: 8417e0871fac12c6 +Block 0017 [ 93]: c38c9899e8edcdf8 +Block 0017 [ 94]: ce9590f30ff53347 +Block 0017 [ 95]: 6895d4878d62caf9 +Block 0017 [ 96]: 262535b134187242 +Block 0017 [ 97]: a0deecfbbbe86396 +Block 0017 [ 98]: 1ee3e87369ad6e5c +Block 0017 [ 99]: eb6d2adec6c431cd +Block 0017 [100]: 76d98fffc6de3f84 +Block 0017 [101]: f47b69b4f56db042 +Block 0017 [102]: f0123fbf21b74be5 +Block 0017 [103]: e82156d144a42e08 +Block 0017 [104]: b96dfd6e82865304 +Block 0017 [105]: 2b65b6f8bf85aa49 +Block 0017 [106]: 43784bb1d195eadd +Block 0017 [107]: 8e65dd65aca567b8 +Block 0017 [108]: ea9c8c9e75172184 +Block 0017 [109]: 8aadae18a51aadd6 +Block 0017 [110]: ad11911ba95b3a14 +Block 0017 [111]: e3244be33fcbb3a7 +Block 0017 [112]: 80fbed869132d4ff +Block 0017 [113]: 4156c7bdac7fb574 +Block 0017 [114]: 4a5e0ebfdc6185d5 +Block 0017 [115]: 808ffed756ed20ff +Block 0017 [116]: 423276097e8ee14f +Block 0017 [117]: 26a7de2148a76179 +Block 0017 [118]: b02275a467bca390 +Block 0017 [119]: 7646106b9071629a +Block 0017 [120]: 5b6c21a823ff65de +Block 0017 [121]: 3add52a1b76d989a +Block 0017 [122]: df9f28f504111275 +Block 0017 [123]: 7cac15fedd243ed5 +Block 0017 [124]: eb26ae42cf401b70 +Block 0017 [125]: 59ee7e4ee4833712 +Block 0017 [126]: a1e2bc7f1348749c +Block 0017 [127]: 98dca4163fdca5c8 +Block 0018 [ 0]: d084772fe184585c +Block 0018 [ 1]: b7a71a5c80ee84e4 +Block 0018 [ 2]: a483de7b04caaa0b +Block 0018 [ 3]: ccf118ab7d75e9b9 +Block 0018 [ 4]: 77853b81dbf3be54 +Block 0018 [ 5]: 5c20332b42ade752 +Block 0018 [ 6]: 1b732b6811dcea0a +Block 0018 [ 7]: 4a3d6efac28e3d78 +Block 0018 [ 8]: d14a43c694fc46ee +Block 0018 [ 9]: b3d3dabbb3287e12 +Block 0018 [ 10]: 358d5c7f1c7eec24 +Block 0018 [ 11]: 12b8d5a8c5df0034 +Block 0018 [ 12]: 131ff3fe443d313b +Block 0018 [ 13]: 00acf1cff6c323cf +Block 0018 [ 14]: 8838c79d58713e79 +Block 0018 [ 15]: 1aefe3b69e1ccf27 +Block 0018 [ 16]: 8fc035f26b129484 +Block 0018 [ 17]: febf943bfe6b4f27 +Block 0018 [ 18]: 17763060ae755bfa +Block 0018 [ 19]: 928cd6c24615587e +Block 0018 [ 20]: d05d9f8434053cc9 +Block 0018 [ 21]: 6b2ca6e171e4ed5b +Block 0018 [ 22]: 0572ce2d3cf14a9d +Block 0018 [ 23]: 7a61ce4a2c246662 +Block 0018 [ 24]: 605742a341eb3985 +Block 0018 [ 25]: a753887d0eb40761 +Block 0018 [ 26]: bd0f8da298d9c1b7 +Block 0018 [ 27]: 00596e2557f7f475 +Block 0018 [ 28]: 22a1329d12efeb77 +Block 0018 [ 29]: 0e626cb6fbfb5970 +Block 0018 [ 30]: dc8d9697877c7c19 +Block 0018 [ 31]: 005a226a1279357f +Block 0018 [ 32]: c4e5947af0e6deca +Block 0018 [ 33]: 94d569d17b1e6f67 +Block 0018 [ 34]: de386d45c5f3224d +Block 0018 [ 35]: 01403b1912e12590 +Block 0018 [ 36]: 00326afc95f0821c +Block 0018 [ 37]: 43dd6cae3a1686cf +Block 0018 [ 38]: 57ad2a4169aff5f6 +Block 0018 [ 39]: f0d13dbcf2539637 +Block 0018 [ 40]: 2af4dee0883f6264 +Block 0018 [ 41]: c372bb4b2347b981 +Block 0018 [ 42]: f8355df82fd6e1e5 +Block 0018 [ 43]: 62f87bd55f1766fb +Block 0018 [ 44]: 7d09765dc41d0f6c +Block 0018 [ 45]: b4ef9dff26945262 +Block 0018 [ 46]: 30c988904e8f9bc7 +Block 0018 [ 47]: 778b20a07139015a +Block 0018 [ 48]: 57337400114a4f22 +Block 0018 [ 49]: 607be229edbde71b +Block 0018 [ 50]: 0b40abc4ed7d31e9 +Block 0018 [ 51]: 8b7fed47f43ebb51 +Block 0018 [ 52]: a7e464184f6c95d9 +Block 0018 [ 53]: c6231982c1921464 +Block 0018 [ 54]: 5e758c90ff72fd07 +Block 0018 [ 55]: 37b5cc5e18198231 +Block 0018 [ 56]: 21528056165f24af +Block 0018 [ 57]: c74644315731a372 +Block 0018 [ 58]: 503f171f2ea0db88 +Block 0018 [ 59]: 0f584869dd54f31e +Block 0018 [ 60]: c10466c393cc5be7 +Block 0018 [ 61]: 24e7a034f6ad5fe0 +Block 0018 [ 62]: 0196a0f69cdae74e +Block 0018 [ 63]: 3c271b723ff0c33c +Block 0018 [ 64]: 36577195709ea2ec +Block 0018 [ 65]: e0951bce093b31ba +Block 0018 [ 66]: 6c0a54fa572e54da +Block 0018 [ 67]: 448a72ac125c2e9f +Block 0018 [ 68]: 4613c81ca1d46bcb +Block 0018 [ 69]: bee31e192f200f01 +Block 0018 [ 70]: a6cf318b6393bc81 +Block 0018 [ 71]: 7628622d5df2a701 +Block 0018 [ 72]: 04015c4ecfcf9bfe +Block 0018 [ 73]: 2071eebdf355667b +Block 0018 [ 74]: 86610a505283627d +Block 0018 [ 75]: 2b2a880964250e32 +Block 0018 [ 76]: 7121473b76166136 +Block 0018 [ 77]: 09d4a66876d0e7a0 +Block 0018 [ 78]: e4743e35c5c2eaab +Block 0018 [ 79]: 646868b26a9c4594 +Block 0018 [ 80]: 8dac159f6186bf69 +Block 0018 [ 81]: 380546891bd4c666 +Block 0018 [ 82]: 1720354bc9f61fc6 +Block 0018 [ 83]: 98e09f5f28637dd2 +Block 0018 [ 84]: 0420311ec175f586 +Block 0018 [ 85]: 516caaad13a66966 +Block 0018 [ 86]: 84e653e235fd0ffc +Block 0018 [ 87]: 2c1e232cfceb2e15 +Block 0018 [ 88]: 8822ab2668064755 +Block 0018 [ 89]: c7a99e8a5ff6bca0 +Block 0018 [ 90]: d98d6bb5829a56c6 +Block 0018 [ 91]: 19ae3576f64a5fff +Block 0018 [ 92]: effb8092b1f6f935 +Block 0018 [ 93]: 09ec59b5392d58d0 +Block 0018 [ 94]: 3a4ae1a0c6b596f4 +Block 0018 [ 95]: 86945defe7b4c6bf +Block 0018 [ 96]: 6bef6ff460e42e62 +Block 0018 [ 97]: c49b80acbc65b852 +Block 0018 [ 98]: 8b2d1c4baf8c075f +Block 0018 [ 99]: 7e3f7bf10f525d6f +Block 0018 [100]: ee9d6f757d30a1aa +Block 0018 [101]: 589a2046727cc440 +Block 0018 [102]: 53491fc1647a4e0a +Block 0018 [103]: ce68ea7fb20ead43 +Block 0018 [104]: 4dd0de9bfad115f3 +Block 0018 [105]: 6b0f8b8425f2b5a0 +Block 0018 [106]: c44db4c514acfc14 +Block 0018 [107]: e6dd1022bf14c48d +Block 0018 [108]: d8711234f656ce8a +Block 0018 [109]: 08bf8dec13ff93d2 +Block 0018 [110]: 0ff665e0275941d6 +Block 0018 [111]: 01e8c370456c3eb1 +Block 0018 [112]: eca303a81bc07867 +Block 0018 [113]: 6c1f9fd5e1cf7c28 +Block 0018 [114]: cecf8cd3e55e50ca +Block 0018 [115]: 6d791fb10089b0d7 +Block 0018 [116]: ba1c16d4628c8ac2 +Block 0018 [117]: 0add2f746a15fde5 +Block 0018 [118]: b8b1c169cec54425 +Block 0018 [119]: 2118f7b75c8eec10 +Block 0018 [120]: 62a698a86fdbea7c +Block 0018 [121]: d1f445354accf76f +Block 0018 [122]: 54a5ad09cfff950e +Block 0018 [123]: 321b3438f579b51e +Block 0018 [124]: 84fab9c8f11370d6 +Block 0018 [125]: 5362ef92ccee2146 +Block 0018 [126]: 7177d9edb1502f96 +Block 0018 [127]: 69d163f02c4974ed +Block 0019 [ 0]: 3d0916ed9e833207 +Block 0019 [ 1]: 246916dfc2448d0e +Block 0019 [ 2]: 1802a650dc4cc6a7 +Block 0019 [ 3]: 11945e0300016f36 +Block 0019 [ 4]: e65fe8dc14d54a2c +Block 0019 [ 5]: 8628137392bf8e5f +Block 0019 [ 6]: a45fbfdaf581c97f +Block 0019 [ 7]: a506ce7a102c6fb3 +Block 0019 [ 8]: c364b39bbbe2accc +Block 0019 [ 9]: 47a304654d05f7a4 +Block 0019 [ 10]: e39b8615c4e06e74 +Block 0019 [ 11]: 34907f8fd543151d +Block 0019 [ 12]: 4a1759c5e83a1206 +Block 0019 [ 13]: 6778a6195c965d45 +Block 0019 [ 14]: 9af9889bcb643739 +Block 0019 [ 15]: d756d62aa2e25a04 +Block 0019 [ 16]: 827dba7101e28106 +Block 0019 [ 17]: 3b0e46ba9b3c39cf +Block 0019 [ 18]: f1f38f90e67e5fe3 +Block 0019 [ 19]: 2c6cf41c1873dc3d +Block 0019 [ 20]: 48d9dc8fc1fd0d05 +Block 0019 [ 21]: 984cfb30aee058f7 +Block 0019 [ 22]: dba6c35650569ef6 +Block 0019 [ 23]: 05758ff526281ff8 +Block 0019 [ 24]: dea551321b133c9b +Block 0019 [ 25]: 2d2febfe90cc21c8 +Block 0019 [ 26]: 2a5ab9b4cf66466b +Block 0019 [ 27]: e8c8736b1118fe0f +Block 0019 [ 28]: 906569f6cebdd903 +Block 0019 [ 29]: 48977b0e03cc7acd +Block 0019 [ 30]: 392c1604e5e25847 +Block 0019 [ 31]: 0f3a782d67e75dc0 +Block 0019 [ 32]: 72ace7605024c74f +Block 0019 [ 33]: a1b1ecc0efb8d5ee +Block 0019 [ 34]: ea272ed7f31981bd +Block 0019 [ 35]: 92cde2b4d0a00a22 +Block 0019 [ 36]: 4de44e29a20cc050 +Block 0019 [ 37]: a14abcc63ff548c1 +Block 0019 [ 38]: 86af7968efed7819 +Block 0019 [ 39]: fa7b27ea7592d525 +Block 0019 [ 40]: 88386f081e59a92b +Block 0019 [ 41]: 2dbf4cae55ea74af +Block 0019 [ 42]: a7c4d6d44b7779db +Block 0019 [ 43]: 8fcceeab46f56dff +Block 0019 [ 44]: bf2701da005989d8 +Block 0019 [ 45]: 3885da5bfebc498f +Block 0019 [ 46]: 886c978a342d26ff +Block 0019 [ 47]: 5627e56d96e81ac6 +Block 0019 [ 48]: ae4e19022c09db70 +Block 0019 [ 49]: 8385a5556e4f951b +Block 0019 [ 50]: 2942868c20dff7ab +Block 0019 [ 51]: 7119533db3aedbf2 +Block 0019 [ 52]: 5707c74688cee744 +Block 0019 [ 53]: 511343dee334a23d +Block 0019 [ 54]: 6cd09da27c938bdc +Block 0019 [ 55]: c77e4714dcf668d3 +Block 0019 [ 56]: 767c11648d06b8f6 +Block 0019 [ 57]: deccdf769bef9089 +Block 0019 [ 58]: 455a5f824ffbc916 +Block 0019 [ 59]: 6c0fa714f83aec15 +Block 0019 [ 60]: cea560f5e6dc9218 +Block 0019 [ 61]: 87615693e82231f7 +Block 0019 [ 62]: 7abb05196b159d93 +Block 0019 [ 63]: f1968b8b3ac9bd54 +Block 0019 [ 64]: 0f5b76884a66ac19 +Block 0019 [ 65]: 593634c801741fb6 +Block 0019 [ 66]: 36fe94fdcac45f59 +Block 0019 [ 67]: 1260f8fe84cd160d +Block 0019 [ 68]: 63da6183ad0a643a +Block 0019 [ 69]: 5b27fbbda96e7ab4 +Block 0019 [ 70]: da3fec81f2e9218b +Block 0019 [ 71]: 5097727f0becde66 +Block 0019 [ 72]: 188d05de76951b8f +Block 0019 [ 73]: d654e94ccbd8d0ec +Block 0019 [ 74]: c1ea500224a941e0 +Block 0019 [ 75]: 1adc6cc4b1c7654f +Block 0019 [ 76]: 723738ebddeeda77 +Block 0019 [ 77]: 258540fd5b39a123 +Block 0019 [ 78]: bf8e0e3022f84c86 +Block 0019 [ 79]: d5d7e843a792f503 +Block 0019 [ 80]: 861c3f6650784c73 +Block 0019 [ 81]: ec58f0a9f36f6bf2 +Block 0019 [ 82]: 9fed771a57dd20cd +Block 0019 [ 83]: 79228975a1ad1a4b +Block 0019 [ 84]: 2f9d09811d3349db +Block 0019 [ 85]: 796ad44e7586692d +Block 0019 [ 86]: ab1191e9410f68fb +Block 0019 [ 87]: 1128ee882c6af04a +Block 0019 [ 88]: 73f57bf6cf9dc609 +Block 0019 [ 89]: dff741812d32401b +Block 0019 [ 90]: ea12d97dc9dc03fd +Block 0019 [ 91]: f50f4ad7c6e7abc6 +Block 0019 [ 92]: 688d13caa19ef5fe +Block 0019 [ 93]: 1dbaaf3ff5ad791b +Block 0019 [ 94]: 2884de8faece0a70 +Block 0019 [ 95]: 0c38bf887f4d311a +Block 0019 [ 96]: 95b004d9b0337a97 +Block 0019 [ 97]: 0ce5642f30645a2d +Block 0019 [ 98]: 8c7b39377deaadb4 +Block 0019 [ 99]: adce80468faaf392 +Block 0019 [100]: b7dc1859f20cbbc7 +Block 0019 [101]: 382d7f0d3d6cfe40 +Block 0019 [102]: abf0c8ef57ecb5d1 +Block 0019 [103]: 2b966db4075b3bf4 +Block 0019 [104]: c3868f4576df0661 +Block 0019 [105]: a56bc51175ea255c +Block 0019 [106]: 432656f6cf6ab332 +Block 0019 [107]: ec96141cdf52aa98 +Block 0019 [108]: 26e75ed39252d5ad +Block 0019 [109]: 1e6b75aaa66dab60 +Block 0019 [110]: 5fc14959a0021118 +Block 0019 [111]: 2832c47a618f6549 +Block 0019 [112]: ba03b67a60002625 +Block 0019 [113]: 200f5ce345022e08 +Block 0019 [114]: 0d82c4c459db15f2 +Block 0019 [115]: 344074f5390b7ddc +Block 0019 [116]: c320f898546a4174 +Block 0019 [117]: 430d1e2d1be316b2 +Block 0019 [118]: 8dceddf10c9e569a +Block 0019 [119]: 8122ec86dc334421 +Block 0019 [120]: e2758de2b61ec590 +Block 0019 [121]: c68f8b9d8c8cc491 +Block 0019 [122]: 42685a32054bd9b3 +Block 0019 [123]: e53de9a8050a4ad6 +Block 0019 [124]: 6330cbef475c6b1a +Block 0019 [125]: eccf64a43197e265 +Block 0019 [126]: 7c0b1667cb1e0562 +Block 0019 [127]: 141bb29376e7011d +Block 0020 [ 0]: f9c9c5dda18a6965 +Block 0020 [ 1]: b690a36c14cbd868 +Block 0020 [ 2]: 163c4705e87b13b6 +Block 0020 [ 3]: 929a86fe2df99e80 +Block 0020 [ 4]: 28e33d0ff638ceb0 +Block 0020 [ 5]: ab48f32887082c70 +Block 0020 [ 6]: b59ab6eb7f42f485 +Block 0020 [ 7]: e2622758fd7c67e6 +Block 0020 [ 8]: a4a71160bfb71c73 +Block 0020 [ 9]: 9b4925d44839e634 +Block 0020 [ 10]: 0340e91a9f6c3090 +Block 0020 [ 11]: b1a00bfc86641292 +Block 0020 [ 12]: 4759310f15b591b7 +Block 0020 [ 13]: 9091b33e75707188 +Block 0020 [ 14]: 81a4d0d991e6cd4d +Block 0020 [ 15]: 0efc2412ca9c947b +Block 0020 [ 16]: 8d26b3f7dce089b2 +Block 0020 [ 17]: f1da8900bcf32fa4 +Block 0020 [ 18]: 5ec8949e5eba513e +Block 0020 [ 19]: 4bff9e41de6e8843 +Block 0020 [ 20]: 515ce37f89dc28dc +Block 0020 [ 21]: e7ba4aee5acb5cd3 +Block 0020 [ 22]: c1d8c42c9fc6892b +Block 0020 [ 23]: 8b4011f6641bd2f6 +Block 0020 [ 24]: 9ab0113ecbf2a1a7 +Block 0020 [ 25]: 993cd18ecb74bcc1 +Block 0020 [ 26]: c335d78612d4a36c +Block 0020 [ 27]: eefc0b1d1a926985 +Block 0020 [ 28]: f875802c6f495962 +Block 0020 [ 29]: e4223bfc4a2b65dd +Block 0020 [ 30]: 08880db04b44e9ee +Block 0020 [ 31]: a332263240c1cac8 +Block 0020 [ 32]: 9fa737c30707186b +Block 0020 [ 33]: 595227e9b79d9a88 +Block 0020 [ 34]: 57a2008021d20e48 +Block 0020 [ 35]: a58eab22c505e4bf +Block 0020 [ 36]: f0109b2e88f6fb85 +Block 0020 [ 37]: c75d08e197165e56 +Block 0020 [ 38]: ec954f3f90eec8f0 +Block 0020 [ 39]: dbc876da2eb7cb3a +Block 0020 [ 40]: 5bbf9ea8ab943e25 +Block 0020 [ 41]: 20940bc2fa5e8391 +Block 0020 [ 42]: e7c829fca1e7f482 +Block 0020 [ 43]: d3ebf89ce06b9252 +Block 0020 [ 44]: 8a47b9736b1182fe +Block 0020 [ 45]: c729ce9f350718a9 +Block 0020 [ 46]: cdd723f353a00bca +Block 0020 [ 47]: 54dfa84d908b15a9 +Block 0020 [ 48]: 7fa23409fbe36687 +Block 0020 [ 49]: 5976fc7c4ae89b79 +Block 0020 [ 50]: c3bfee4f92c6dea4 +Block 0020 [ 51]: 70d69740726f23eb +Block 0020 [ 52]: e18c2b2e22c7e5c9 +Block 0020 [ 53]: 5ea08ab2df6f8a2b +Block 0020 [ 54]: 7063ae1ab581e206 +Block 0020 [ 55]: a5d6adfdfc22dda9 +Block 0020 [ 56]: 2d89c11429ccfdbc +Block 0020 [ 57]: 37db3754f2a57c26 +Block 0020 [ 58]: 1340fac6eb112a2c +Block 0020 [ 59]: 30189af6af800d0d +Block 0020 [ 60]: 6d611bd46ad93afc +Block 0020 [ 61]: 65ece3082d0a0bf7 +Block 0020 [ 62]: 155d2cb0a797a797 +Block 0020 [ 63]: 290f6f5c75189bdb +Block 0020 [ 64]: 2c9e04cc29a5f253 +Block 0020 [ 65]: 199eb8571717b01a +Block 0020 [ 66]: 8b22891284d0caa1 +Block 0020 [ 67]: 0a3c890819a97540 +Block 0020 [ 68]: 560bd8306af411b2 +Block 0020 [ 69]: 2fc338aa51fc1060 +Block 0020 [ 70]: 864a9eb237755447 +Block 0020 [ 71]: deb4c74af8f2eb0e +Block 0020 [ 72]: 0bf2c92928b99c42 +Block 0020 [ 73]: 4962cd509c4f2c3b +Block 0020 [ 74]: c89be72654913596 +Block 0020 [ 75]: a60eadb82746d5af +Block 0020 [ 76]: b3326e39ca57e78c +Block 0020 [ 77]: e6a6a9bebedcc84d +Block 0020 [ 78]: b667858af3138308 +Block 0020 [ 79]: dfeda5d85bbdcfee +Block 0020 [ 80]: d919b7578b76d74e +Block 0020 [ 81]: 850284e391722b19 +Block 0020 [ 82]: b03d2baa35837efa +Block 0020 [ 83]: a209abae24213ed5 +Block 0020 [ 84]: 49d5ac9f0fb11d32 +Block 0020 [ 85]: 69ea2a245f5c1813 +Block 0020 [ 86]: b11db3d63ceec6a9 +Block 0020 [ 87]: 8ef660c90b176663 +Block 0020 [ 88]: f26147a27dda57e2 +Block 0020 [ 89]: ed2b6911130346ac +Block 0020 [ 90]: b7a6fb331da0dab5 +Block 0020 [ 91]: 43c39f32728e46ae +Block 0020 [ 92]: 27eff7a0e2eff334 +Block 0020 [ 93]: 58714734110f1ed5 +Block 0020 [ 94]: 8e9501c8857d00fa +Block 0020 [ 95]: a09bed917512854d +Block 0020 [ 96]: a55609989993a5cf +Block 0020 [ 97]: a742b1aac4f486b3 +Block 0020 [ 98]: 1b64f3fbf7325e76 +Block 0020 [ 99]: 7116e730adff7f4f +Block 0020 [100]: 0c51d67ee841778f +Block 0020 [101]: 3bf13731bb2d6bf7 +Block 0020 [102]: 4a9352b8d776d47d +Block 0020 [103]: f6d78f9788bec749 +Block 0020 [104]: 8f1287aba7db6f4a +Block 0020 [105]: 0f10efdc8298ef68 +Block 0020 [106]: fae8d4b151fc557a +Block 0020 [107]: 8c5d238cd00d1e84 +Block 0020 [108]: ae1fba74cc6295c3 +Block 0020 [109]: 62ccae0639dc4631 +Block 0020 [110]: 6763e3e83f9959f3 +Block 0020 [111]: 813fb0a090e8d241 +Block 0020 [112]: 16d2ba6082843b5a +Block 0020 [113]: cf81b8308f4180b8 +Block 0020 [114]: 5bfbf79b1cc15285 +Block 0020 [115]: 7a64046d593d0c69 +Block 0020 [116]: fbf6a2343475bf5e +Block 0020 [117]: c0369ef57773309f +Block 0020 [118]: 18989bc4213e408c +Block 0020 [119]: 0538d61079e129a1 +Block 0020 [120]: c9ac59192ce92126 +Block 0020 [121]: 5556cce49cdc8ca3 +Block 0020 [122]: 17582f4977b56e48 +Block 0020 [123]: ea46273c59909883 +Block 0020 [124]: c1d1028489caba25 +Block 0020 [125]: a03a95f0ca25aefd +Block 0020 [126]: 05248c8fad679a3b +Block 0020 [127]: c460ffc0cdb31374 +Block 0021 [ 0]: 56e3d6cdc1058695 +Block 0021 [ 1]: 84d273510bffaa1d +Block 0021 [ 2]: 3ee27baf0003ffac +Block 0021 [ 3]: 17a56cc4ce43d1ad +Block 0021 [ 4]: eada1378b12c5b88 +Block 0021 [ 5]: bc5f12ec4fe0b98d +Block 0021 [ 6]: 863a9703fada5f2e +Block 0021 [ 7]: 4b74ea1dadc6e075 +Block 0021 [ 8]: 4df4976a127b8c34 +Block 0021 [ 9]: 2a589bae3f2f325f +Block 0021 [ 10]: ede299cc94e319c2 +Block 0021 [ 11]: 399d90f13a456d69 +Block 0021 [ 12]: 130c6e1fe2abf0f0 +Block 0021 [ 13]: d1229c11837a9c4e +Block 0021 [ 14]: d6847938c2a676eb +Block 0021 [ 15]: 677b2013e7dca300 +Block 0021 [ 16]: e9dd6c608bdd778b +Block 0021 [ 17]: 1b7147ac56de72f2 +Block 0021 [ 18]: 89e826683c323bf7 +Block 0021 [ 19]: 9b717e27007eeadb +Block 0021 [ 20]: f6e2a5be9bdc79f4 +Block 0021 [ 21]: 8a0b776dfbf2e02d +Block 0021 [ 22]: 6a961a882c9f1687 +Block 0021 [ 23]: 6f88a8233e259f64 +Block 0021 [ 24]: ead97b9ca691db31 +Block 0021 [ 25]: faaeeb04aa749d17 +Block 0021 [ 26]: c193caf83958f1a7 +Block 0021 [ 27]: 66ab1fc224c3b601 +Block 0021 [ 28]: bb43dc26d220b518 +Block 0021 [ 29]: e6dfc133b81dd628 +Block 0021 [ 30]: 6412a2acc78546d3 +Block 0021 [ 31]: 5caeeb9893888a44 +Block 0021 [ 32]: c8ad13c366fd6925 +Block 0021 [ 33]: 46474cc5bcbbad2b +Block 0021 [ 34]: 4d2012ac62d01d1a +Block 0021 [ 35]: 02202cc48c295cd8 +Block 0021 [ 36]: e5bd0cf27cc1a946 +Block 0021 [ 37]: 11fc8ea2f1af1294 +Block 0021 [ 38]: 5a1b503fe205d2c6 +Block 0021 [ 39]: 7dcfd7e8d37da7ff +Block 0021 [ 40]: daa02c5de85539ca +Block 0021 [ 41]: 2ef385aa290e2ffe +Block 0021 [ 42]: ec75f049b0c8bdd5 +Block 0021 [ 43]: 55086dcd60af2011 +Block 0021 [ 44]: 75bd4d45c5e74ae5 +Block 0021 [ 45]: 965897eb57f8eb5c +Block 0021 [ 46]: 427a52c3117476a5 +Block 0021 [ 47]: 2bb17fb421557439 +Block 0021 [ 48]: 613b7590b307f22f +Block 0021 [ 49]: 6b495b70ddaa6da9 +Block 0021 [ 50]: 8e035b4816af8019 +Block 0021 [ 51]: c22c82ddd9307ca1 +Block 0021 [ 52]: f2b817657210a745 +Block 0021 [ 53]: c35a72e9a6988cff +Block 0021 [ 54]: 49f30739d3b82d52 +Block 0021 [ 55]: 0a17decbc52dff3a +Block 0021 [ 56]: 9f09e1919fd18160 +Block 0021 [ 57]: f0133f28990d7c4a +Block 0021 [ 58]: 419824662919cae7 +Block 0021 [ 59]: e7025ec193302b60 +Block 0021 [ 60]: c36526923f11a314 +Block 0021 [ 61]: 0c79d97e27b889fe +Block 0021 [ 62]: 25a2c335ba84ada1 +Block 0021 [ 63]: ef4599d4390f42fb +Block 0021 [ 64]: 6a692ab692937aea +Block 0021 [ 65]: 8e92553f9bd587cc +Block 0021 [ 66]: c264f7ce2573326c +Block 0021 [ 67]: 1e110f26b0f028ca +Block 0021 [ 68]: 84feb398a69d30bc +Block 0021 [ 69]: 57066cdb0dd73bce +Block 0021 [ 70]: 131362f400566a4c +Block 0021 [ 71]: 1315c6beb6c3bf4b +Block 0021 [ 72]: 26aaaefc0ebff4d1 +Block 0021 [ 73]: a358eb15b2793ed2 +Block 0021 [ 74]: 02528da64402b96a +Block 0021 [ 75]: 7873f04aaaf20566 +Block 0021 [ 76]: 18848e03d5666413 +Block 0021 [ 77]: 03810f21b747d2da +Block 0021 [ 78]: 07a3bdd3385164db +Block 0021 [ 79]: e22ceea12176eab8 +Block 0021 [ 80]: 0b11b5e67cb86402 +Block 0021 [ 81]: fdbbb3e8d2d3c03a +Block 0021 [ 82]: 8c46ebdc1827bae5 +Block 0021 [ 83]: ebccc5f84e5bff07 +Block 0021 [ 84]: af9bb087253c48ec +Block 0021 [ 85]: bc858f152ef33f92 +Block 0021 [ 86]: d2f1ac013a227a55 +Block 0021 [ 87]: 3c20350c794aa4f6 +Block 0021 [ 88]: fdf399df49e450c4 +Block 0021 [ 89]: f37fb06fd2dd4c22 +Block 0021 [ 90]: fea8ab9a0a146a3e +Block 0021 [ 91]: 17355110050bddd3 +Block 0021 [ 92]: 422b1207f671670a +Block 0021 [ 93]: 530ddc77b6d64cc8 +Block 0021 [ 94]: ecba5ec654e4c582 +Block 0021 [ 95]: 54e0209c70a11ffe +Block 0021 [ 96]: 5c4cd04463205db2 +Block 0021 [ 97]: bcc35736a824f54b +Block 0021 [ 98]: dc43c322ec2d8a84 +Block 0021 [ 99]: f5613764992f37dd +Block 0021 [100]: e0a6ceb0583eef8f +Block 0021 [101]: 804eacf20c63f8a4 +Block 0021 [102]: 6e3806866f273a61 +Block 0021 [103]: b0c227e201485667 +Block 0021 [104]: f9fc0f92f9bedcac +Block 0021 [105]: fccafd379e9f12ef +Block 0021 [106]: 05ae07dec96f9eb0 +Block 0021 [107]: fd15d9577c4ea8e4 +Block 0021 [108]: 1a4e61a28ff11004 +Block 0021 [109]: a4872d13a69a0b4c +Block 0021 [110]: 8aa4ec2f2d437813 +Block 0021 [111]: 819bfdfeaaa63f48 +Block 0021 [112]: ed5a68b009e360c4 +Block 0021 [113]: e0e8b4a7cb576db0 +Block 0021 [114]: b59c4f32dd03da00 +Block 0021 [115]: b2ad853f8f069f41 +Block 0021 [116]: ca994d65093a74bb +Block 0021 [117]: d6a367644126ff76 +Block 0021 [118]: 474bcb62a5a32578 +Block 0021 [119]: afe92b0c4a373a90 +Block 0021 [120]: 2441672629527279 +Block 0021 [121]: d48d70a936bc1f6a +Block 0021 [122]: 06c0a578a5be8cff +Block 0021 [123]: bc465df8825e63b8 +Block 0021 [124]: 009832fb2593ed52 +Block 0021 [125]: 240ea37a5b3c0898 +Block 0021 [126]: a5e6792687d94efd +Block 0021 [127]: 016f2a1a3938b59d +Block 0022 [ 0]: f28208ecaf7daa39 +Block 0022 [ 1]: 53aa8bfdd2c7a82e +Block 0022 [ 2]: 040c51ebe7130e9b +Block 0022 [ 3]: c53745bc099f0a10 +Block 0022 [ 4]: 994c0f76e52c4e70 +Block 0022 [ 5]: d10f139c2035a83f +Block 0022 [ 6]: f45c9a03e7124b1c +Block 0022 [ 7]: 509df037e7cbcdc9 +Block 0022 [ 8]: f2e5559090115b70 +Block 0022 [ 9]: 920cca40b2d82562 +Block 0022 [ 10]: ce7fd5163ff910a1 +Block 0022 [ 11]: fe32d902cb033902 +Block 0022 [ 12]: 53a99b4671e1bd64 +Block 0022 [ 13]: 3a0a6b6ee19a017d +Block 0022 [ 14]: 6db107dc01c49333 +Block 0022 [ 15]: 714519d0c9dd6df6 +Block 0022 [ 16]: 0294a739ffac2767 +Block 0022 [ 17]: be852872da6c9909 +Block 0022 [ 18]: c689b81da8b6cc7b +Block 0022 [ 19]: 5b14400973fb7d4e +Block 0022 [ 20]: 94a2733e6461bf20 +Block 0022 [ 21]: f2b7d10b078450bf +Block 0022 [ 22]: 69f891c8b44849fa +Block 0022 [ 23]: adcc4aa0504c18e8 +Block 0022 [ 24]: bf56349a07bc26e6 +Block 0022 [ 25]: 1693eb4a1a011bab +Block 0022 [ 26]: 6b918c066f8c9886 +Block 0022 [ 27]: 7c74b51fd5003283 +Block 0022 [ 28]: cd33fc82717ef356 +Block 0022 [ 29]: 9be3279650ef3317 +Block 0022 [ 30]: 1636d1c49d3d8bb8 +Block 0022 [ 31]: d4c61b5e73e94a51 +Block 0022 [ 32]: d3834f906c63ae8a +Block 0022 [ 33]: 0729d1c26cd9665e +Block 0022 [ 34]: 0a8161ec2c96e248 +Block 0022 [ 35]: c83174338be92fde +Block 0022 [ 36]: 0431c9b4e21fa8f4 +Block 0022 [ 37]: 5e0a8a900923b805 +Block 0022 [ 38]: 8291af7cc00969ab +Block 0022 [ 39]: 11112b26e731e5a7 +Block 0022 [ 40]: e06428d5143e1bd6 +Block 0022 [ 41]: 2c12d27d4339701b +Block 0022 [ 42]: 072bfc5abe95f12e +Block 0022 [ 43]: 495f489c8045a96c +Block 0022 [ 44]: ef037b259d652793 +Block 0022 [ 45]: 76e13c91d34dd109 +Block 0022 [ 46]: 27c82183818246c5 +Block 0022 [ 47]: f767637242bee843 +Block 0022 [ 48]: f901c0738c648b8e +Block 0022 [ 49]: 96a2184fb86c7895 +Block 0022 [ 50]: bd7fb979f668146f +Block 0022 [ 51]: 36dd269c0380ed7c +Block 0022 [ 52]: 24511c91ad9e13b6 +Block 0022 [ 53]: 70e978c71bc99f9a +Block 0022 [ 54]: 5ea1a65b5cebc7c9 +Block 0022 [ 55]: edc11a6b51c5cd1e +Block 0022 [ 56]: 780ada000e671454 +Block 0022 [ 57]: 119cd1b73129ac78 +Block 0022 [ 58]: 3178d12be1db151e +Block 0022 [ 59]: ce6742aa5b3f70be +Block 0022 [ 60]: 4fc9591f439bba56 +Block 0022 [ 61]: d422a0643532cca6 +Block 0022 [ 62]: 1852782dcc6ab49b +Block 0022 [ 63]: caad088aeb0fc18b +Block 0022 [ 64]: b305da56b3fc0e06 +Block 0022 [ 65]: 809d79c7bf612db4 +Block 0022 [ 66]: 37082bf7a806431a +Block 0022 [ 67]: 63a7d2e4d19e97bd +Block 0022 [ 68]: b5962ee6c2321441 +Block 0022 [ 69]: db1776121fa5afe6 +Block 0022 [ 70]: 1c53ad44ab3643b6 +Block 0022 [ 71]: 5f873f6632e08c98 +Block 0022 [ 72]: 4c20777b04117596 +Block 0022 [ 73]: ba04e67acfa757cf +Block 0022 [ 74]: c1dbca772fe70d02 +Block 0022 [ 75]: 94ade1780a3edf02 +Block 0022 [ 76]: 288d7b3743d4e61f +Block 0022 [ 77]: 9b055d1193eb5291 +Block 0022 [ 78]: 0ec0e7c91a4aaa92 +Block 0022 [ 79]: a34de8d02873eb79 +Block 0022 [ 80]: 180f8fbdb0a4cc53 +Block 0022 [ 81]: 899c5bcc0ab9f829 +Block 0022 [ 82]: 641dc8e4a42347d8 +Block 0022 [ 83]: 37397c3696b512d2 +Block 0022 [ 84]: 171da4bc79dd8334 +Block 0022 [ 85]: e778f4ce24bdcc9a +Block 0022 [ 86]: 07ed3b0c74a1cff6 +Block 0022 [ 87]: eb774f9bd5d3a786 +Block 0022 [ 88]: 7ecc8df8de9b010e +Block 0022 [ 89]: 4bc8ff96cb6c1075 +Block 0022 [ 90]: 4e87e8d5b103a61c +Block 0022 [ 91]: 6970f27c0119652b +Block 0022 [ 92]: 4dd0ec5ee21849e5 +Block 0022 [ 93]: c1605b97fb688038 +Block 0022 [ 94]: 628a8cd70fbc14ec +Block 0022 [ 95]: fcf1558cb6d49aba +Block 0022 [ 96]: bda88d1a7603641f +Block 0022 [ 97]: c57e868e6e0b3eb5 +Block 0022 [ 98]: d6209eb6dc713428 +Block 0022 [ 99]: 1941dbe12465838f +Block 0022 [100]: d93ade4fa7c6ed41 +Block 0022 [101]: c9035a14343aa4c3 +Block 0022 [102]: 3916d1588daaa456 +Block 0022 [103]: 7f2220f99db61237 +Block 0022 [104]: 170fc02232581fb8 +Block 0022 [105]: ed832e589ccc12f7 +Block 0022 [106]: 83304d94de7f62c3 +Block 0022 [107]: d668470108f6fe2d +Block 0022 [108]: d25bc5e58f55894f +Block 0022 [109]: 40844e9c014682e2 +Block 0022 [110]: aecd9fee20958744 +Block 0022 [111]: b6ce492e71f31e6b +Block 0022 [112]: 456975f1da0a7502 +Block 0022 [113]: 7fe09228d49664bb +Block 0022 [114]: 004c96474ee60f41 +Block 0022 [115]: 6e727e5c490ea0fb +Block 0022 [116]: e2d8a78f06ec4e3e +Block 0022 [117]: 35e193e5480740e4 +Block 0022 [118]: dae2a930e3764785 +Block 0022 [119]: 4e034457389b8366 +Block 0022 [120]: 19a58f91fcb3ddff +Block 0022 [121]: 3a62f251e411e180 +Block 0022 [122]: 5c669a8f9a95a0e6 +Block 0022 [123]: ee7deb9f94a0865e +Block 0022 [124]: c8d5b909868f1e4e +Block 0022 [125]: 7d0bfb7632800a9b +Block 0022 [126]: 1a88e866ade9002b +Block 0022 [127]: 079029262e56f903 +Block 0023 [ 0]: c15a8fc42b27f642 +Block 0023 [ 1]: e03a8e8631d2b5bb +Block 0023 [ 2]: 60676b51a501fd20 +Block 0023 [ 3]: 70363f1f5d0982e7 +Block 0023 [ 4]: 6e64ad1dba37c597 +Block 0023 [ 5]: 077ec82bd054088a +Block 0023 [ 6]: 5b7c4ddd1228e337 +Block 0023 [ 7]: e2447d5fe98ef4a1 +Block 0023 [ 8]: a9272395f698506e +Block 0023 [ 9]: 19674a3d25dd1c41 +Block 0023 [ 10]: 3615d79951e1ee4b +Block 0023 [ 11]: b8779be91637ea3d +Block 0023 [ 12]: 8bfd401b59f0b40b +Block 0023 [ 13]: 63d27f0efb1fbecd +Block 0023 [ 14]: 0c92f5146c1000d8 +Block 0023 [ 15]: 0b82cd63e4a90488 +Block 0023 [ 16]: f36d845ed88968e8 +Block 0023 [ 17]: e55c4a5888669a9c +Block 0023 [ 18]: e2859d86961336e7 +Block 0023 [ 19]: 09cce3cb91692d8c +Block 0023 [ 20]: d831491e7a744a7f +Block 0023 [ 21]: 845e21c8789fbe20 +Block 0023 [ 22]: 7471f20a31c0f11b +Block 0023 [ 23]: f4a98b968bbe508a +Block 0023 [ 24]: c8b373278654bd2d +Block 0023 [ 25]: f5b7753a582847fd +Block 0023 [ 26]: c6c6833fa454822b +Block 0023 [ 27]: 60a96d2b60ff8110 +Block 0023 [ 28]: 740095523a202d0d +Block 0023 [ 29]: ccd5618264c2c7d7 +Block 0023 [ 30]: 26acdbd4c51053bc +Block 0023 [ 31]: 00cee5634151956e +Block 0023 [ 32]: 6468ca3bbf126e1e +Block 0023 [ 33]: 4e0ecb735bac1923 +Block 0023 [ 34]: 058fd5d9faa97acb +Block 0023 [ 35]: b985441f8cd0aea2 +Block 0023 [ 36]: 98db7e03c4b4fa5f +Block 0023 [ 37]: fce6c028c40d31d1 +Block 0023 [ 38]: bd46a1812c2d9989 +Block 0023 [ 39]: b7b16f5a4e5a4e46 +Block 0023 [ 40]: 1620f3704a2646dc +Block 0023 [ 41]: ef6c5ecffbba17d2 +Block 0023 [ 42]: 3ad6d21b5820df63 +Block 0023 [ 43]: 5513dac83bbb0253 +Block 0023 [ 44]: c3a976704657237a +Block 0023 [ 45]: d237eb3dc895af8d +Block 0023 [ 46]: 6889cf8777a35680 +Block 0023 [ 47]: 16634fd85637e778 +Block 0023 [ 48]: f16e9eec717fc4a9 +Block 0023 [ 49]: 4e317adaefc26b67 +Block 0023 [ 50]: 85971efb7c005aed +Block 0023 [ 51]: 88bb12c5e3d8cf61 +Block 0023 [ 52]: 677ab5233b01fba4 +Block 0023 [ 53]: b0010729c7615307 +Block 0023 [ 54]: 20b7ecf44ac319a9 +Block 0023 [ 55]: eef793b98a7e61fd +Block 0023 [ 56]: 85b60099f6d0bfa5 +Block 0023 [ 57]: 9ef45c3df475e8da +Block 0023 [ 58]: a0c4e30b646b34f2 +Block 0023 [ 59]: b74229c3f8f8f116 +Block 0023 [ 60]: 6b64b642b55f4b77 +Block 0023 [ 61]: 084ff048b1ab04d3 +Block 0023 [ 62]: d375965de7bbff82 +Block 0023 [ 63]: 57786d15edce08a2 +Block 0023 [ 64]: ce78982e90708e15 +Block 0023 [ 65]: b0e39ed6c7402cc2 +Block 0023 [ 66]: 3586998fe0495f3c +Block 0023 [ 67]: 60fdadfb02cb9a8f +Block 0023 [ 68]: bb58aa898c65a14d +Block 0023 [ 69]: f17213260e0fad9a +Block 0023 [ 70]: b42b62935550b400 +Block 0023 [ 71]: 5543e77410120d07 +Block 0023 [ 72]: 8d486269dd536011 +Block 0023 [ 73]: bd4f1af4698e9cc7 +Block 0023 [ 74]: 78abd3f2e0ad6851 +Block 0023 [ 75]: 0f382abc61fd54b8 +Block 0023 [ 76]: c9fcaa40dd997fb5 +Block 0023 [ 77]: 2818fe972f636137 +Block 0023 [ 78]: dee6cde471d08bf0 +Block 0023 [ 79]: 61e74d63ce506e93 +Block 0023 [ 80]: 4119c8d5cc111e68 +Block 0023 [ 81]: b6460571b021c77a +Block 0023 [ 82]: 3682f1268469be47 +Block 0023 [ 83]: da1041b9b821500f +Block 0023 [ 84]: 42c3f149c0939593 +Block 0023 [ 85]: 2eb6fe95cd7f8f7e +Block 0023 [ 86]: 30a28f6884baf140 +Block 0023 [ 87]: fb4517a8f6f314f0 +Block 0023 [ 88]: 159d8c247a4e0906 +Block 0023 [ 89]: 91843a594cfe15cd +Block 0023 [ 90]: 9a3f9e8078b72dc3 +Block 0023 [ 91]: dbe9713f47902a9a +Block 0023 [ 92]: aa2b6e73ba3c3d0c +Block 0023 [ 93]: 451ceb1b888cbe16 +Block 0023 [ 94]: 4db42dc635c0bb34 +Block 0023 [ 95]: 1828653d95f4341b +Block 0023 [ 96]: c1299eff4a5f8047 +Block 0023 [ 97]: f897b2a772822f5b +Block 0023 [ 98]: 33fd9d8a58670737 +Block 0023 [ 99]: ce47236b3e468a36 +Block 0023 [100]: 34cd0caf09c05c00 +Block 0023 [101]: 8c91a2667a59ef7a +Block 0023 [102]: 7c89fea7f780a662 +Block 0023 [103]: dbfd76736779b2c3 +Block 0023 [104]: 1f861037bd0abc1b +Block 0023 [105]: e5d868458e43dbce +Block 0023 [106]: 1703c8c3c5f122eb +Block 0023 [107]: 47168a277b482e6f +Block 0023 [108]: 239421a6e9376e4b +Block 0023 [109]: fab879b198eac843 +Block 0023 [110]: acc5f29c207f96c3 +Block 0023 [111]: 5e0459b6cad2017d +Block 0023 [112]: d03eeb4f2ce559ec +Block 0023 [113]: e74ff3674d169a0b +Block 0023 [114]: 26076994b57ff424 +Block 0023 [115]: 38dbf73a4d1fe5a8 +Block 0023 [116]: a3b7dc4a267c7521 +Block 0023 [117]: 583d4e15f7e10c9f +Block 0023 [118]: 38cb311dbc767883 +Block 0023 [119]: d67412648b62d999 +Block 0023 [120]: a132b14a24350528 +Block 0023 [121]: 8dc4bf4893d3a381 +Block 0023 [122]: 07254e51d81a9dc0 +Block 0023 [123]: 694e27e2bca68da0 +Block 0023 [124]: 2733cbe18458a93e +Block 0023 [125]: 17133c2fc328d2d8 +Block 0023 [126]: dcc6852dbac50cdc +Block 0023 [127]: d9989bf3ec285e44 +Block 0024 [ 0]: bafc20be127345f7 +Block 0024 [ 1]: a0e105b58755375b +Block 0024 [ 2]: 1d6a71416ff67391 +Block 0024 [ 3]: 9e839dfce45172b1 +Block 0024 [ 4]: d33112aaed4852e1 +Block 0024 [ 5]: 0622aee69fcb9e97 +Block 0024 [ 6]: 5e88992880040a2f +Block 0024 [ 7]: 852b8867310e3211 +Block 0024 [ 8]: e428be753777967d +Block 0024 [ 9]: ddeef681b468aad6 +Block 0024 [ 10]: b847fd00ea092021 +Block 0024 [ 11]: fdf2d32288baece4 +Block 0024 [ 12]: bb1ecc42e2fc594c +Block 0024 [ 13]: b610bf428a5bee66 +Block 0024 [ 14]: 48683a33fe4e565b +Block 0024 [ 15]: 67416c79b45c527f +Block 0024 [ 16]: d54025dca586097a +Block 0024 [ 17]: 6903b9074305a44a +Block 0024 [ 18]: 515a74f3004d1a83 +Block 0024 [ 19]: 5e247be7152ab011 +Block 0024 [ 20]: f89524bfacae7eb7 +Block 0024 [ 21]: bf1419b938b3ebc2 +Block 0024 [ 22]: ac612be97e2535b7 +Block 0024 [ 23]: 8b4b7e35ed62efed +Block 0024 [ 24]: c4db0666691de89c +Block 0024 [ 25]: da746bb3a0ea9036 +Block 0024 [ 26]: 648e0d474d9d5edf +Block 0024 [ 27]: d6cc1c7b9481a978 +Block 0024 [ 28]: c03ead602a6f125c +Block 0024 [ 29]: 52d1e2fba64a4c05 +Block 0024 [ 30]: beac5772e0792903 +Block 0024 [ 31]: 1a0fce7643d06795 +Block 0024 [ 32]: 9cf9c86abc978ef6 +Block 0024 [ 33]: 14edb2fb446834ea +Block 0024 [ 34]: 1aff2b0a0561082e +Block 0024 [ 35]: 1bdc3688d8a49501 +Block 0024 [ 36]: 25aa17332f0a1d54 +Block 0024 [ 37]: 493d2af91f4de279 +Block 0024 [ 38]: 93911a09eab9d742 +Block 0024 [ 39]: 76b476f9d874e180 +Block 0024 [ 40]: 1adb25a2cec03ab4 +Block 0024 [ 41]: 8527203b85b693c3 +Block 0024 [ 42]: 79f3cb77c155e8c2 +Block 0024 [ 43]: 0574b0c4b99985c6 +Block 0024 [ 44]: af18733188176aeb +Block 0024 [ 45]: b42cc646d1fe6639 +Block 0024 [ 46]: 6e4ddc05a0aaaf15 +Block 0024 [ 47]: bc4478c9716532b7 +Block 0024 [ 48]: 4fcbc6dc5f29f830 +Block 0024 [ 49]: ec47edc42c40a226 +Block 0024 [ 50]: 92da9c7bd9b3241f +Block 0024 [ 51]: 8aa095b9fab99b90 +Block 0024 [ 52]: 9cf9d0b635369605 +Block 0024 [ 53]: 8c94a54ec3d3d9db +Block 0024 [ 54]: d51d82e1e5647069 +Block 0024 [ 55]: f5c340c32eeb76f7 +Block 0024 [ 56]: fa5902c7acdc4f3b +Block 0024 [ 57]: f46b2cf8e9d44be0 +Block 0024 [ 58]: 6706a878e07af770 +Block 0024 [ 59]: 6da1f034bef87d13 +Block 0024 [ 60]: 799e0a83fd490d4c +Block 0024 [ 61]: a354e01a2ad75bcd +Block 0024 [ 62]: c27358c4ac491b7d +Block 0024 [ 63]: 18ba545379367429 +Block 0024 [ 64]: 1c1c5042b0d7a965 +Block 0024 [ 65]: 6d92f7e87e591c69 +Block 0024 [ 66]: ad72b6c6fbae77a8 +Block 0024 [ 67]: 20cc0e1d83937562 +Block 0024 [ 68]: b1c5e36ea64465d8 +Block 0024 [ 69]: aef9474384eae537 +Block 0024 [ 70]: 96c55972051f16bd +Block 0024 [ 71]: f6b9fbd4c1770049 +Block 0024 [ 72]: 00063b28ba569959 +Block 0024 [ 73]: 15034e11892d2b53 +Block 0024 [ 74]: 49c65e51d1c77d3e +Block 0024 [ 75]: c6cbe3c13677dbb9 +Block 0024 [ 76]: c9278514eb23f973 +Block 0024 [ 77]: 0418e33c3d1d1d67 +Block 0024 [ 78]: eaa9823ac8ef9f1d +Block 0024 [ 79]: b808887eee920d4b +Block 0024 [ 80]: 2762abdb3a826d18 +Block 0024 [ 81]: f6bd043987950f92 +Block 0024 [ 82]: 5e953a434ff2db87 +Block 0024 [ 83]: 5357c86ca298191a +Block 0024 [ 84]: 9516f3592e6e9c8a +Block 0024 [ 85]: 8f9689fc2c705eca +Block 0024 [ 86]: 41c091bd3bed62a9 +Block 0024 [ 87]: 8f5b0f2f7bdbf769 +Block 0024 [ 88]: 728639c0f6ef9b1d +Block 0024 [ 89]: 08aede8636e79efd +Block 0024 [ 90]: a9fe4536a61be7c9 +Block 0024 [ 91]: 014e422b37f869dd +Block 0024 [ 92]: 64d1e18d22d2928f +Block 0024 [ 93]: f0106d49826a34bd +Block 0024 [ 94]: 864bb5eda4a35c1f +Block 0024 [ 95]: bb8a9778ba354712 +Block 0024 [ 96]: d7875d3c0b0ab74e +Block 0024 [ 97]: 69038303e1460b09 +Block 0024 [ 98]: a6ca05dd54aef2ee +Block 0024 [ 99]: 728d835ab505d6bc +Block 0024 [100]: f1be387c80c03e4b +Block 0024 [101]: 2aac86175bda747c +Block 0024 [102]: d288c4d7161502bc +Block 0024 [103]: b0e42aa7ecbd6572 +Block 0024 [104]: 52e77db04ece14f7 +Block 0024 [105]: 6adb74b3d56f09a8 +Block 0024 [106]: 2a6452c901b43573 +Block 0024 [107]: 1056bf56e286e0b7 +Block 0024 [108]: c928aeb275c4b7fa +Block 0024 [109]: 389b14bde4c4d382 +Block 0024 [110]: 9965960db1954391 +Block 0024 [111]: b058a195f70320b4 +Block 0024 [112]: 7619ac5501f4432c +Block 0024 [113]: 586c2db0440f1c83 +Block 0024 [114]: 29e5c6289766490f +Block 0024 [115]: c53c12c1b8dd4d7a +Block 0024 [116]: 1e41341416298856 +Block 0024 [117]: d0a7ae5578f472ce +Block 0024 [118]: b65da50b01d5b8a5 +Block 0024 [119]: 83ec23e27b3eec21 +Block 0024 [120]: ddb5cbc028b735cb +Block 0024 [121]: 4884c6452683f7d5 +Block 0024 [122]: 6cd0174e00017e97 +Block 0024 [123]: fd24844d4d331560 +Block 0024 [124]: 816482d8427a8e64 +Block 0024 [125]: fed0e63ad09481e2 +Block 0024 [126]: 18b61579f735a700 +Block 0024 [127]: fee0bb721ee1ecbb +Block 0025 [ 0]: 218f7d49738f92c6 +Block 0025 [ 1]: 7c43c89d034788a4 +Block 0025 [ 2]: f5d1f2d8a8920f06 +Block 0025 [ 3]: 299f14e7ed5496cc +Block 0025 [ 4]: 1cbea1c1b52d4256 +Block 0025 [ 5]: b2592bd426bc03e0 +Block 0025 [ 6]: ca33a1cc73e76dc3 +Block 0025 [ 7]: 15b633ac2cd4b284 +Block 0025 [ 8]: 7b346972a603745c +Block 0025 [ 9]: ae49e15247e0539c +Block 0025 [ 10]: c39719dde95ec973 +Block 0025 [ 11]: 791d01640218069e +Block 0025 [ 12]: 9e12cde9bc52bbe4 +Block 0025 [ 13]: c86c7f806ea55df1 +Block 0025 [ 14]: 6b61f785e2d65f69 +Block 0025 [ 15]: cb37008fc82db79e +Block 0025 [ 16]: 6a60abdb40faf82a +Block 0025 [ 17]: 8cf923b935d9bcf5 +Block 0025 [ 18]: 76825bb43adce337 +Block 0025 [ 19]: babbde01d9655fb1 +Block 0025 [ 20]: f3d78eb5ad275d05 +Block 0025 [ 21]: d2870cf57340c55e +Block 0025 [ 22]: 91af1fc8c89689fc +Block 0025 [ 23]: 1a5433e50b5e05a8 +Block 0025 [ 24]: f457295bfa093ddc +Block 0025 [ 25]: 1957226241d244e1 +Block 0025 [ 26]: 36cc9305fd37b4e3 +Block 0025 [ 27]: 4aa1aac99f568863 +Block 0025 [ 28]: 941674cf76af7190 +Block 0025 [ 29]: 1b2c8add189d17ee +Block 0025 [ 30]: 562fd164598ba90c +Block 0025 [ 31]: 90d89a9e2623318f +Block 0025 [ 32]: 9ff0a6747fc96454 +Block 0025 [ 33]: 44b54df3ab1aead2 +Block 0025 [ 34]: 509e4c640941d270 +Block 0025 [ 35]: d9b30bff5ed623b2 +Block 0025 [ 36]: b716592c68837232 +Block 0025 [ 37]: cd8a95452b6aa6e1 +Block 0025 [ 38]: df5a3d86c0052718 +Block 0025 [ 39]: 2cae0d438b45a92b +Block 0025 [ 40]: 9bb50165d3b673e9 +Block 0025 [ 41]: 090a71cc136ec229 +Block 0025 [ 42]: 3bfc57430d7d2475 +Block 0025 [ 43]: b21d732e80efc1e1 +Block 0025 [ 44]: 569d99152241f5cb +Block 0025 [ 45]: 5bee8181547575e7 +Block 0025 [ 46]: 360a0f24e67e378b +Block 0025 [ 47]: 0a444cb4f1287e92 +Block 0025 [ 48]: f8fe73d971ad4e15 +Block 0025 [ 49]: 7809a6c41558690c +Block 0025 [ 50]: 14c554cbb8d87a9f +Block 0025 [ 51]: 4bf94d2f59a1b885 +Block 0025 [ 52]: d819171c43d2c448 +Block 0025 [ 53]: b9bad5c60bfa27b5 +Block 0025 [ 54]: 2f4ec140540ba3cc +Block 0025 [ 55]: 5e0b06feb534cb6b +Block 0025 [ 56]: 55eef994d053a92b +Block 0025 [ 57]: 3c3efb4ca90f9aa2 +Block 0025 [ 58]: 4ac1b476371364e9 +Block 0025 [ 59]: cfb1ac1ffb41f16f +Block 0025 [ 60]: 2e47b513102c6e6e +Block 0025 [ 61]: baf2a3f185deefc1 +Block 0025 [ 62]: 9688648864cb8ddb +Block 0025 [ 63]: 0726d0615a1a85b5 +Block 0025 [ 64]: 3d7383c8adfb85a7 +Block 0025 [ 65]: dac839ce44c2b275 +Block 0025 [ 66]: 0954eed70bd6fda5 +Block 0025 [ 67]: b347e872bdcd43da +Block 0025 [ 68]: cc040228c23d0e6e +Block 0025 [ 69]: 0de8b3f517319c2a +Block 0025 [ 70]: 50eff13db15ff965 +Block 0025 [ 71]: 5b5e495005b6e3a4 +Block 0025 [ 72]: ea83a832b036de55 +Block 0025 [ 73]: 4b92d114ff4c8a85 +Block 0025 [ 74]: 352986db66e2c6f2 +Block 0025 [ 75]: 5a5b775b10bd3414 +Block 0025 [ 76]: 7840ea80a027bde7 +Block 0025 [ 77]: f4365b7239cf5007 +Block 0025 [ 78]: 24fda471b099ae21 +Block 0025 [ 79]: 72b184a1ddc10267 +Block 0025 [ 80]: 362aa580b6b44a23 +Block 0025 [ 81]: 2249ca6bb3512afa +Block 0025 [ 82]: 9d86d882d57b1214 +Block 0025 [ 83]: 09cd175d74396827 +Block 0025 [ 84]: e9b1152be6185310 +Block 0025 [ 85]: b6fa99c7d3f6e258 +Block 0025 [ 86]: bb1157a075afefb8 +Block 0025 [ 87]: ecfad80c123ddcf4 +Block 0025 [ 88]: f4c5f6049360c7ed +Block 0025 [ 89]: 9b4a4dcb7b95af93 +Block 0025 [ 90]: 6af0da4d6ea78de5 +Block 0025 [ 91]: d486be8a57928782 +Block 0025 [ 92]: 2d3747216952a042 +Block 0025 [ 93]: 7480bdbc4fc25e99 +Block 0025 [ 94]: 7caea647a8b0f52b +Block 0025 [ 95]: a759ceef02e325d2 +Block 0025 [ 96]: a2f14256abd2a57f +Block 0025 [ 97]: 101ddae96091e57e +Block 0025 [ 98]: e810140f913206f3 +Block 0025 [ 99]: edb6506015ec4e5e +Block 0025 [100]: 114dc2565158243a +Block 0025 [101]: 4e9d15bdf88ad4e4 +Block 0025 [102]: ece4b8ff68cea6a2 +Block 0025 [103]: f0ebe4d86b4b9316 +Block 0025 [104]: 8355940d8efe6fc4 +Block 0025 [105]: ea8a6355cca5d9d3 +Block 0025 [106]: 65aca3bcc4d4a292 +Block 0025 [107]: b4ad427852001777 +Block 0025 [108]: 85639d301162a27f +Block 0025 [109]: 759e87e84b2f7c42 +Block 0025 [110]: ee1d3820c4f58ee3 +Block 0025 [111]: 88688a321ffa4610 +Block 0025 [112]: 9d4e4c09d07e6414 +Block 0025 [113]: 21cc042a64f6f219 +Block 0025 [114]: 934eb23f70839cdc +Block 0025 [115]: 52b37f2b7eef3a7a +Block 0025 [116]: 5f6642d0bcc72f28 +Block 0025 [117]: 7bc04881f38f6a04 +Block 0025 [118]: 37fdffd62c6fe429 +Block 0025 [119]: eb893917d8365d52 +Block 0025 [120]: 7bff88282c1cc77f +Block 0025 [121]: 1a877bda6afc8cee +Block 0025 [122]: f6261537899eb64f +Block 0025 [123]: 0631a65eda39a9cb +Block 0025 [124]: 4ef993405ba60811 +Block 0025 [125]: 62400e9a554324eb +Block 0025 [126]: 46a1f4e5f7d44185 +Block 0025 [127]: 98628c54e42825e7 +Block 0026 [ 0]: 3c6983afbba804d5 +Block 0026 [ 1]: 6711c9d79fddc321 +Block 0026 [ 2]: 2391ab06e29b8e47 +Block 0026 [ 3]: 357cda706f696cf8 +Block 0026 [ 4]: 7de77eb985e3e694 +Block 0026 [ 5]: 0b1cca5039a0bcf2 +Block 0026 [ 6]: 02b63e6bf9d96807 +Block 0026 [ 7]: 19d9ca3eb6108b20 +Block 0026 [ 8]: fa46aba3dcc57351 +Block 0026 [ 9]: 261914f924334ffb +Block 0026 [ 10]: aa184f31ff808f1f +Block 0026 [ 11]: f70c6320224698db +Block 0026 [ 12]: 20afaddd294fb3ec +Block 0026 [ 13]: 826874f33b12c683 +Block 0026 [ 14]: 036a6550f020d424 +Block 0026 [ 15]: f64caa528536a1b7 +Block 0026 [ 16]: eff5a71792f55f01 +Block 0026 [ 17]: 48f7424b0df5c46f +Block 0026 [ 18]: 01c1ade0611d07f1 +Block 0026 [ 19]: c89280c83156add8 +Block 0026 [ 20]: 258f1b61fc7f6b11 +Block 0026 [ 21]: ed5c950819eace58 +Block 0026 [ 22]: 2eeb9d215f9e1d41 +Block 0026 [ 23]: fae0b2678e3c8a67 +Block 0026 [ 24]: 739195ac32a0e262 +Block 0026 [ 25]: 6d71718902f627aa +Block 0026 [ 26]: a8cd44e2ec39edae +Block 0026 [ 27]: d8cc82a9d8334dee +Block 0026 [ 28]: 3e0bbab36c2d4b13 +Block 0026 [ 29]: 7173f42e8fb7d186 +Block 0026 [ 30]: aa49cc111f609407 +Block 0026 [ 31]: 86b5d32d57254d39 +Block 0026 [ 32]: c1c3ef5753af595a +Block 0026 [ 33]: 136cb058821065a2 +Block 0026 [ 34]: 0974f4cf5a77a026 +Block 0026 [ 35]: c5e39f3305aab8b1 +Block 0026 [ 36]: 10821d1445291cba +Block 0026 [ 37]: 81d371c00c1b4c08 +Block 0026 [ 38]: 85c8c719277f3965 +Block 0026 [ 39]: c590db7df5a36675 +Block 0026 [ 40]: 545f3dff15b55c1e +Block 0026 [ 41]: e980768ad45c12ef +Block 0026 [ 42]: 3be75af231bac2ca +Block 0026 [ 43]: 95ec39119f1250f2 +Block 0026 [ 44]: bbff859c5c9f89bb +Block 0026 [ 45]: 142a0680ef5b5f16 +Block 0026 [ 46]: 27facd74fffda870 +Block 0026 [ 47]: 55dd1b22cc90f735 +Block 0026 [ 48]: a12d88ec60c512fd +Block 0026 [ 49]: a135793f811d6111 +Block 0026 [ 50]: 34c6fa055bdc63e9 +Block 0026 [ 51]: cb40ef918c0a282f +Block 0026 [ 52]: 0a9042c429b52e20 +Block 0026 [ 53]: 8025ec3592aaac36 +Block 0026 [ 54]: e6fe903a66fe4e3f +Block 0026 [ 55]: e31655f738fd1ce8 +Block 0026 [ 56]: 9ee25a076d5f41cf +Block 0026 [ 57]: cde79d1536830e67 +Block 0026 [ 58]: 7721d1919a0ff9b9 +Block 0026 [ 59]: cc495c11c8639a44 +Block 0026 [ 60]: 5b6291631d8b1728 +Block 0026 [ 61]: 3f5037b0c8cbc91e +Block 0026 [ 62]: b9b6d9c18539e66a +Block 0026 [ 63]: 366ed0f240bf7120 +Block 0026 [ 64]: 9b201c10a4353d2f +Block 0026 [ 65]: 359c2842aa330468 +Block 0026 [ 66]: a3fb5a76d20bacd3 +Block 0026 [ 67]: a18496fc163bc0e9 +Block 0026 [ 68]: bbf9ca616287297c +Block 0026 [ 69]: 939beb6456f35b3c +Block 0026 [ 70]: 4e0f82cc86bfd22b +Block 0026 [ 71]: e966d50cc7df0f87 +Block 0026 [ 72]: e517c5470cea1c0c +Block 0026 [ 73]: c112ddf352579302 +Block 0026 [ 74]: a63420c0997f61e3 +Block 0026 [ 75]: 3926f92cdfc55124 +Block 0026 [ 76]: 88ec54e147108123 +Block 0026 [ 77]: 7e828e3c0fc07af4 +Block 0026 [ 78]: bdfe6fad95995ffd +Block 0026 [ 79]: b4919dca6d54d29b +Block 0026 [ 80]: 2a405f1adf13a606 +Block 0026 [ 81]: 404cc4b6e4adf8df +Block 0026 [ 82]: 15bf36bdcab5acb9 +Block 0026 [ 83]: cb0884b41dd7cbf2 +Block 0026 [ 84]: 96af5406db7d487c +Block 0026 [ 85]: c8074d30dd0c86ba +Block 0026 [ 86]: 7d1c52344ed5ecf2 +Block 0026 [ 87]: 5826b80aaa041c09 +Block 0026 [ 88]: aac72ffdfc5b0024 +Block 0026 [ 89]: 2077fe5a631f42a6 +Block 0026 [ 90]: 9fd9e717bcc0dfb8 +Block 0026 [ 91]: 69de97e2bd116811 +Block 0026 [ 92]: ed51dcd989772100 +Block 0026 [ 93]: 88c57a4fd02c9c4e +Block 0026 [ 94]: f5162652fd844d77 +Block 0026 [ 95]: d645ec63828fb2cb +Block 0026 [ 96]: f8bac28ed154957d +Block 0026 [ 97]: 9290f00d8a17bdb2 +Block 0026 [ 98]: e9833bb57c692f55 +Block 0026 [ 99]: db21a9b32401012a +Block 0026 [100]: 162b6d8c35201524 +Block 0026 [101]: 75ade54377c77238 +Block 0026 [102]: b8d7284df781f3d0 +Block 0026 [103]: 303bd658599f0e6c +Block 0026 [104]: 0232876bafc7bfd9 +Block 0026 [105]: 920c9811b0077634 +Block 0026 [106]: fcab0361efef9ff2 +Block 0026 [107]: ab8519c253a00f4a +Block 0026 [108]: da9867be15d00f19 +Block 0026 [109]: c82b7fe39d4017f2 +Block 0026 [110]: 583847c2f8775b22 +Block 0026 [111]: a303262ed2cd1159 +Block 0026 [112]: ccaf60e46589054f +Block 0026 [113]: 5bbb7b1b4cb3111c +Block 0026 [114]: 29eb66dd0bf01df5 +Block 0026 [115]: e8cf9b1056366920 +Block 0026 [116]: 0399042b521c3626 +Block 0026 [117]: c37fb9108d6c0d0a +Block 0026 [118]: 913c845e777489f5 +Block 0026 [119]: 918d92d0b7809530 +Block 0026 [120]: 0c36ee266601a21b +Block 0026 [121]: f2d1cd576aed1bb5 +Block 0026 [122]: 7b58b466d3fee7df +Block 0026 [123]: d5158fb67955e952 +Block 0026 [124]: 6ef3cfa7180c9bc1 +Block 0026 [125]: fa9acd56b8400839 +Block 0026 [126]: bc82d8d53d9ecfda +Block 0026 [127]: 5761bdea1282864c +Block 0027 [ 0]: 7d3c9a0ec3269b48 +Block 0027 [ 1]: 6686eb93fbda0d77 +Block 0027 [ 2]: cb7ee69fe719e3b4 +Block 0027 [ 3]: 54ae42cd9118070c +Block 0027 [ 4]: 62164ca70764a185 +Block 0027 [ 5]: 185e261947601d34 +Block 0027 [ 6]: 092bb74b591bd0ca +Block 0027 [ 7]: 1279028f9bf6f93d +Block 0027 [ 8]: 916e719df2543a93 +Block 0027 [ 9]: 3d38f8078087f328 +Block 0027 [ 10]: 09087bfdf5ba3af2 +Block 0027 [ 11]: de613c261f43a1ad +Block 0027 [ 12]: dd194937c3e7c7c7 +Block 0027 [ 13]: a354a8be75a53c84 +Block 0027 [ 14]: 58e61315e8799749 +Block 0027 [ 15]: 3790f1889691087d +Block 0027 [ 16]: 9c109cbb13bd0946 +Block 0027 [ 17]: 69d2a3cb24d725da +Block 0027 [ 18]: 66edb597ec53292d +Block 0027 [ 19]: a9be38befecc0584 +Block 0027 [ 20]: 96d0731c9f242696 +Block 0027 [ 21]: e3ba1585a32dce68 +Block 0027 [ 22]: 5a0484ed5038971b +Block 0027 [ 23]: 78bcdb43bf93d164 +Block 0027 [ 24]: 744576d9c3c30082 +Block 0027 [ 25]: 64f778f3189c1cff +Block 0027 [ 26]: f8eb15da12c637e1 +Block 0027 [ 27]: fcbebcbe50a21695 +Block 0027 [ 28]: 970e19c4f0521beb +Block 0027 [ 29]: bb5af6ec3a7ed2d1 +Block 0027 [ 30]: 096904e407e41cb7 +Block 0027 [ 31]: 796ef5112b7a1edd +Block 0027 [ 32]: db1a153e66ae58ea +Block 0027 [ 33]: b1f77c17cee5e733 +Block 0027 [ 34]: 20285245122afb59 +Block 0027 [ 35]: 4df42e52389d2aff +Block 0027 [ 36]: 201f9602a2014992 +Block 0027 [ 37]: 65f0cf04f5981313 +Block 0027 [ 38]: 0943da03f0840c17 +Block 0027 [ 39]: 2eced3376b8d7e95 +Block 0027 [ 40]: 5d2c25c04a6527e3 +Block 0027 [ 41]: 9d8e3bb1b210e5b4 +Block 0027 [ 42]: 1d552706ac628676 +Block 0027 [ 43]: d24b7fbd453c47b9 +Block 0027 [ 44]: 94a3efedba376d46 +Block 0027 [ 45]: c6cfaf61c5738603 +Block 0027 [ 46]: 6dc7dd999626802f +Block 0027 [ 47]: 679a0a330366aa5f +Block 0027 [ 48]: a588a97355f0b410 +Block 0027 [ 49]: a53c8e0722c1f2a3 +Block 0027 [ 50]: 5aaee7d200469b7b +Block 0027 [ 51]: 3aed0d73099c2bbb +Block 0027 [ 52]: 78b7a36c5ca25608 +Block 0027 [ 53]: e6b432160dcce680 +Block 0027 [ 54]: 1ba1aeff2677be69 +Block 0027 [ 55]: 3a73d1cbafe00bee +Block 0027 [ 56]: 44847a38e4ef1636 +Block 0027 [ 57]: 817c2c94824200ef +Block 0027 [ 58]: 028f8e5775dfaed1 +Block 0027 [ 59]: 0cbc774a55ab5843 +Block 0027 [ 60]: aeb5aacf73e0eb39 +Block 0027 [ 61]: 0b8433622bea4382 +Block 0027 [ 62]: 79769c5b649f1261 +Block 0027 [ 63]: 0c829d21a3e179b1 +Block 0027 [ 64]: 813f3231bba22a33 +Block 0027 [ 65]: a2416e7899d6fe8a +Block 0027 [ 66]: b6e98b7cfa6bd74b +Block 0027 [ 67]: 41bc3948470a0b96 +Block 0027 [ 68]: 69ea8fd9e284aea6 +Block 0027 [ 69]: def3afe35abbe28b +Block 0027 [ 70]: b68ea4c646fb6573 +Block 0027 [ 71]: 4fa9b31650260ae6 +Block 0027 [ 72]: 7e01fc0f2a7429d6 +Block 0027 [ 73]: 627b93dbd343caeb +Block 0027 [ 74]: f3eeae8deb82e242 +Block 0027 [ 75]: 1e851591772c1bb5 +Block 0027 [ 76]: 3c2e59c09ef5b878 +Block 0027 [ 77]: ad49c7f75f437548 +Block 0027 [ 78]: 46f34b1e7a607915 +Block 0027 [ 79]: aacf30a2e549bb4a +Block 0027 [ 80]: 5a19914c8fff5e96 +Block 0027 [ 81]: f415490e00fb30b9 +Block 0027 [ 82]: 9846376d7adcf814 +Block 0027 [ 83]: 78bbe891c9abfe1d +Block 0027 [ 84]: 7c4a0979fea67b38 +Block 0027 [ 85]: 59e586690f942554 +Block 0027 [ 86]: 0acca76f34a6d794 +Block 0027 [ 87]: 2f7b55cb6fe9390f +Block 0027 [ 88]: 7635a592209d0a11 +Block 0027 [ 89]: 7e83394274d76e07 +Block 0027 [ 90]: 6a7dc7b77fcd9ee7 +Block 0027 [ 91]: 2b97fb8c36950a71 +Block 0027 [ 92]: 1fd5a884ef569a60 +Block 0027 [ 93]: e910b6544d71b381 +Block 0027 [ 94]: de5c857dd603fd6a +Block 0027 [ 95]: 5417634f369d5986 +Block 0027 [ 96]: ba1ae13eb3352d9f +Block 0027 [ 97]: 402e1be1915906fa +Block 0027 [ 98]: 3e45c339df96d224 +Block 0027 [ 99]: a2a0c19bc60f28e2 +Block 0027 [100]: 14b5aa263f6b02ac +Block 0027 [101]: 455b8ce5effd82f1 +Block 0027 [102]: f9067ed819bfe040 +Block 0027 [103]: 34ee1496df2e9258 +Block 0027 [104]: 85132137bfd83071 +Block 0027 [105]: 274902202877e214 +Block 0027 [106]: 4df3027bdf10659e +Block 0027 [107]: 50e85dae17476d58 +Block 0027 [108]: ebd15a07c578a603 +Block 0027 [109]: 73539de46fd213d6 +Block 0027 [110]: aabf6dcb01dc066a +Block 0027 [111]: a742de72f634eecb +Block 0027 [112]: bd3e9d53c38cccbc +Block 0027 [113]: 0c6aee347a62283a +Block 0027 [114]: e8218a191cdfeba3 +Block 0027 [115]: 850cfae86fd4a736 +Block 0027 [116]: 2e9647c876dcf630 +Block 0027 [117]: 786b0a5bf8f8ed00 +Block 0027 [118]: 7d52cebe4d24c525 +Block 0027 [119]: 8dbd8532181f83a0 +Block 0027 [120]: e2003436c78933f2 +Block 0027 [121]: 6196d5c9274650f8 +Block 0027 [122]: 50e0015a9708e2c2 +Block 0027 [123]: 0df7db3f56521de7 +Block 0027 [124]: 41c4e4d30977c324 +Block 0027 [125]: fe90ec673b2a3ed5 +Block 0027 [126]: 8b894913484a96cd +Block 0027 [127]: b3ce79c030832f8b +Block 0028 [ 0]: 8001ef270631eb46 +Block 0028 [ 1]: 83416ab52ade6a20 +Block 0028 [ 2]: 2c2c2d8a6e19d701 +Block 0028 [ 3]: d8876e22d1e005e7 +Block 0028 [ 4]: 39ec3701311b6f21 +Block 0028 [ 5]: e27d91be0b0f01ea +Block 0028 [ 6]: 3a468a9921bd57d6 +Block 0028 [ 7]: e979f5210101a334 +Block 0028 [ 8]: 0fe50b2f6002dd2f +Block 0028 [ 9]: e93dccdb8c30683f +Block 0028 [ 10]: a39f7bb93d2527d7 +Block 0028 [ 11]: 43131f328e9f3257 +Block 0028 [ 12]: 3916bad309c754f5 +Block 0028 [ 13]: 01f6c6295e8f726a +Block 0028 [ 14]: 2980801f3d4d3c54 +Block 0028 [ 15]: a901be2b20bca6d9 +Block 0028 [ 16]: bd35a7f931c1bded +Block 0028 [ 17]: 27409429f88c477b +Block 0028 [ 18]: 8036cce294e86513 +Block 0028 [ 19]: 857a2229c5afedf8 +Block 0028 [ 20]: d3373ab3af5873a8 +Block 0028 [ 21]: 4066441cd77d44ed +Block 0028 [ 22]: 48f2ef97141ddf21 +Block 0028 [ 23]: 476609786badb439 +Block 0028 [ 24]: 98fe66b30b5fa4bf +Block 0028 [ 25]: 14ec3f588d97430d +Block 0028 [ 26]: 6067ae97295f88a2 +Block 0028 [ 27]: 7472170c692fec72 +Block 0028 [ 28]: abca04dcc1646c6a +Block 0028 [ 29]: 593abb9ad2fb4754 +Block 0028 [ 30]: d383c2cec2319674 +Block 0028 [ 31]: 383d630e75d111ce +Block 0028 [ 32]: aade349d6aa54022 +Block 0028 [ 33]: 6a005af570ce8a1d +Block 0028 [ 34]: f7b1a835dca0178f +Block 0028 [ 35]: 87fcdd328f68b675 +Block 0028 [ 36]: 08caa798697afc12 +Block 0028 [ 37]: dbf8280ba26bfac4 +Block 0028 [ 38]: 87ebbcd95eb62676 +Block 0028 [ 39]: 0e3c59cd8c020fdb +Block 0028 [ 40]: 2df7176c8b1ab6fd +Block 0028 [ 41]: 575bad97b70c3e66 +Block 0028 [ 42]: 323c319d2d524b44 +Block 0028 [ 43]: 368bb20d0637def3 +Block 0028 [ 44]: c4638388f45266ee +Block 0028 [ 45]: 3e437f36851a630c +Block 0028 [ 46]: 2779419dd62bdc82 +Block 0028 [ 47]: 6b8ad3cd205e4ad0 +Block 0028 [ 48]: a90e6cad3c5c2b0a +Block 0028 [ 49]: f8ae347a60d74f84 +Block 0028 [ 50]: c6c0926217b23c45 +Block 0028 [ 51]: fff3fa7d093cbb84 +Block 0028 [ 52]: 70fafbbdcb4a7ac9 +Block 0028 [ 53]: 8ab582b972cb8700 +Block 0028 [ 54]: e1fe38cfe02a0b27 +Block 0028 [ 55]: 6861f64be54a0dfc +Block 0028 [ 56]: 8e888789a129f02f +Block 0028 [ 57]: f46cd73182cd385f +Block 0028 [ 58]: e88c0c118ad7b6f3 +Block 0028 [ 59]: ca6a2cadf443f63e +Block 0028 [ 60]: 1bd7984c082c1ef6 +Block 0028 [ 61]: 49b2cc8e2d76a30f +Block 0028 [ 62]: 4eeaba2f6a5802b3 +Block 0028 [ 63]: 0c8cd49bc7463e4b +Block 0028 [ 64]: 8e97970259c37934 +Block 0028 [ 65]: 5b51d47446ba7d59 +Block 0028 [ 66]: 209bd2bfbad9f3a5 +Block 0028 [ 67]: 4933bc3073cce49a +Block 0028 [ 68]: 499abb45745240c9 +Block 0028 [ 69]: 686dec33783f389f +Block 0028 [ 70]: db53075850fa6621 +Block 0028 [ 71]: 8e2e332d929ac8fe +Block 0028 [ 72]: 12188a5b7a3191fd +Block 0028 [ 73]: b5224394b27de504 +Block 0028 [ 74]: 0a4637a76f5ceddc +Block 0028 [ 75]: 2512376fe7ac236d +Block 0028 [ 76]: d0409eee03676e53 +Block 0028 [ 77]: cf10ff014ec1119e +Block 0028 [ 78]: 8b31f8267b762c34 +Block 0028 [ 79]: c746da7b7446448f +Block 0028 [ 80]: ce5afecb66c7ea9a +Block 0028 [ 81]: dc50af46efdce716 +Block 0028 [ 82]: 8ef9fe564ce372bf +Block 0028 [ 83]: 9386004b96f3d07b +Block 0028 [ 84]: 931edb230d806873 +Block 0028 [ 85]: 463972892751ca7c +Block 0028 [ 86]: ea39b6b40936d859 +Block 0028 [ 87]: 5c58eb39f0c08539 +Block 0028 [ 88]: 6610cc54cd07c0c9 +Block 0028 [ 89]: e4c0ce16afd786cd +Block 0028 [ 90]: e25114fbc70f82ad +Block 0028 [ 91]: 6e47602eed12ae23 +Block 0028 [ 92]: 025c64b56a765d41 +Block 0028 [ 93]: 3dffc43a35be1657 +Block 0028 [ 94]: f9b04b0c7094b53d +Block 0028 [ 95]: 4389da938709bc9d +Block 0028 [ 96]: 4f946796bde00fdb +Block 0028 [ 97]: cd435c40d8746458 +Block 0028 [ 98]: 9a70f9e6a7d23334 +Block 0028 [ 99]: 7fe9132e580b2145 +Block 0028 [100]: e05b3c6c2eb2e055 +Block 0028 [101]: f230bd45be19ed50 +Block 0028 [102]: 98a17f9086217896 +Block 0028 [103]: 5a19b54398eb0f1e +Block 0028 [104]: 81805b218b4d7acc +Block 0028 [105]: 53cc0888db15d952 +Block 0028 [106]: 0a455db0253eeab5 +Block 0028 [107]: 427b99b3709a9278 +Block 0028 [108]: 309f67cf226c6dad +Block 0028 [109]: 04cc7e2268c9f8cb +Block 0028 [110]: b50cdbe6cd24ebd0 +Block 0028 [111]: 3b6ec1744022ce3a +Block 0028 [112]: 1c7bde9e2444594b +Block 0028 [113]: 8d2fdda47d1280df +Block 0028 [114]: dd593b7ef7cbc160 +Block 0028 [115]: 603425f28180ce0a +Block 0028 [116]: 36de44b577684c20 +Block 0028 [117]: b6e6174afd7cb6f0 +Block 0028 [118]: 26c361be1a85382b +Block 0028 [119]: 52093e7af6fb04c3 +Block 0028 [120]: 6b7bad5bdedbb60e +Block 0028 [121]: e01bcc7c7bc736b6 +Block 0028 [122]: cc0df433cf949b9c +Block 0028 [123]: 6ce89651fe24f50b +Block 0028 [124]: 2f65d14ec85d1d2f +Block 0028 [125]: f03036c3706caa76 +Block 0028 [126]: 468d03ccf8153f05 +Block 0028 [127]: 967dbda43084d3f3 +Block 0029 [ 0]: f7658b7617623350 +Block 0029 [ 1]: e03903fb99c2f364 +Block 0029 [ 2]: fa5e598d449bc7c1 +Block 0029 [ 3]: 64440941ca0286d0 +Block 0029 [ 4]: c4f04649929e715a +Block 0029 [ 5]: fc8b4e25df9a43a4 +Block 0029 [ 6]: 53aa104be4478ec1 +Block 0029 [ 7]: 18e8a7702998cfed +Block 0029 [ 8]: c38282b83a2bbf8d +Block 0029 [ 9]: d224c762f65e99f9 +Block 0029 [ 10]: 0182e8439fd508d9 +Block 0029 [ 11]: 55012ed0e1ddba0d +Block 0029 [ 12]: e788c80f0597f6c3 +Block 0029 [ 13]: 37da30953d61166d +Block 0029 [ 14]: 6a961813a7033b89 +Block 0029 [ 15]: 3c62e34b3e27b1c1 +Block 0029 [ 16]: e46a91515a994a98 +Block 0029 [ 17]: f3015c41b62f357a +Block 0029 [ 18]: ffc74dd046d74be8 +Block 0029 [ 19]: 0e58a388145cd6b2 +Block 0029 [ 20]: c25f2be79b76308b +Block 0029 [ 21]: b94035810d2020cb +Block 0029 [ 22]: e0f3d82a929ce754 +Block 0029 [ 23]: cde9659f5fce847e +Block 0029 [ 24]: 9e139ca8f03b3023 +Block 0029 [ 25]: 2eabec9e991c81e1 +Block 0029 [ 26]: 441ac0c3033ab565 +Block 0029 [ 27]: 31f7a287c5388a1f +Block 0029 [ 28]: 960a2014148ec008 +Block 0029 [ 29]: 512481b4ac76ea85 +Block 0029 [ 30]: 41e4e64d8adf69e9 +Block 0029 [ 31]: b73914f0091513d9 +Block 0029 [ 32]: 0b6b5f496c1cf4bb +Block 0029 [ 33]: de5f6aedafd3bd92 +Block 0029 [ 34]: c6d64010bf68ea8a +Block 0029 [ 35]: 0cc383a9e718ebd4 +Block 0029 [ 36]: 37c23e0c7722b7e6 +Block 0029 [ 37]: e5a48c2204d0b7a6 +Block 0029 [ 38]: cb05f8b51984a566 +Block 0029 [ 39]: b8c601d4357892cd +Block 0029 [ 40]: cc9cf4d83353f878 +Block 0029 [ 41]: 382e5b2d1692bc06 +Block 0029 [ 42]: c539774a206fce40 +Block 0029 [ 43]: 11f48ac74223311d +Block 0029 [ 44]: afe26e5a3fd54c79 +Block 0029 [ 45]: d3ae9fef26be1b6c +Block 0029 [ 46]: 541f3624089b54f8 +Block 0029 [ 47]: e04c07c4f89494c8 +Block 0029 [ 48]: 50be2647fea6aa3e +Block 0029 [ 49]: 100db5b5428a6916 +Block 0029 [ 50]: 32128747f3ea25cd +Block 0029 [ 51]: fff567fd0fb38972 +Block 0029 [ 52]: 0ac0a01a5357027e +Block 0029 [ 53]: 2b3c731c47903254 +Block 0029 [ 54]: fb73b7724da0a212 +Block 0029 [ 55]: cf83d5083f766a27 +Block 0029 [ 56]: 76ba8624d21308cc +Block 0029 [ 57]: fda64090fdaebdc7 +Block 0029 [ 58]: ce1db32a30eebabc +Block 0029 [ 59]: 554ad2d4f7b1a909 +Block 0029 [ 60]: 628bfb79f526d389 +Block 0029 [ 61]: fc722985e7ee67f8 +Block 0029 [ 62]: d04c65e8e57a99fe +Block 0029 [ 63]: a3196755e7f7c584 +Block 0029 [ 64]: cd330610beee5fe6 +Block 0029 [ 65]: f155296fc87aa152 +Block 0029 [ 66]: 44785555beba5f04 +Block 0029 [ 67]: f21d20529e52bc15 +Block 0029 [ 68]: 26bf65ef544e8ae8 +Block 0029 [ 69]: b0a20d786ec319dd +Block 0029 [ 70]: 87b001a1ddbc6ce4 +Block 0029 [ 71]: 6d86f2cfcbee56f8 +Block 0029 [ 72]: 9546ff8a0cf7f664 +Block 0029 [ 73]: 742e0cba36127004 +Block 0029 [ 74]: 68d8c05fd335d672 +Block 0029 [ 75]: 36859f6866bbc4ef +Block 0029 [ 76]: 04e86efcfc6155e8 +Block 0029 [ 77]: f0f74fcc82eaae4c +Block 0029 [ 78]: d5fbc145a2038e9b +Block 0029 [ 79]: c97dd73bdef94d85 +Block 0029 [ 80]: 46641a0d5e74d7cf +Block 0029 [ 81]: ef0685b5097b5e67 +Block 0029 [ 82]: 1d5fd9ee302a79b0 +Block 0029 [ 83]: cd863c3f6985ab13 +Block 0029 [ 84]: 4ca7738aeebb1b3d +Block 0029 [ 85]: 1ba380e7f9c6d41a +Block 0029 [ 86]: 053be3f43d0815d0 +Block 0029 [ 87]: 4531b35560fa4649 +Block 0029 [ 88]: 71170fcb9f881969 +Block 0029 [ 89]: 1d6539470e53caba +Block 0029 [ 90]: c811cd3a099745dd +Block 0029 [ 91]: d24e5a4cab1f6097 +Block 0029 [ 92]: bf49c3c36ce953e7 +Block 0029 [ 93]: 7ec2b167b48bb25c +Block 0029 [ 94]: 7f8f22149ea593c1 +Block 0029 [ 95]: 41045c4656526da0 +Block 0029 [ 96]: 0a62016ef6fe2d6f +Block 0029 [ 97]: dcc506a2314d1ab6 +Block 0029 [ 98]: 84fd724119b1778e +Block 0029 [ 99]: 6c7d5b3b446a1fd1 +Block 0029 [100]: 9b0f033862438e18 +Block 0029 [101]: 978b0aaed61203a4 +Block 0029 [102]: 218befc3d5b5aefb +Block 0029 [103]: 450431d34382b3a3 +Block 0029 [104]: 3e2d2c92065cd146 +Block 0029 [105]: 3c7e61ae4a8f0279 +Block 0029 [106]: d051b0de2d324355 +Block 0029 [107]: d7644e4a6b72da80 +Block 0029 [108]: 91133f252f076c21 +Block 0029 [109]: 173e52b3d1ab5ba8 +Block 0029 [110]: c86e504f324de992 +Block 0029 [111]: 4ddf966c7242fed3 +Block 0029 [112]: 18a29093e7e2bb3a +Block 0029 [113]: 36dafe385f2c2b10 +Block 0029 [114]: 2b6fe7ef1813672d +Block 0029 [115]: 9939a4bf68bba9d8 +Block 0029 [116]: 0adab70daef4deed +Block 0029 [117]: 5a735581b8a18158 +Block 0029 [118]: f6f3c9bc7ad697dd +Block 0029 [119]: a4deeac9deecda6e +Block 0029 [120]: 72d888dd86ec2222 +Block 0029 [121]: 81014cfe6416656b +Block 0029 [122]: 3ad075b693516c76 +Block 0029 [123]: 7ddd2aa89adb05be +Block 0029 [124]: 5ca65be828845c91 +Block 0029 [125]: 86117ec0186de07f +Block 0029 [126]: cafa675111211ca4 +Block 0029 [127]: 4a92b1c01c991dc7 +Block 0030 [ 0]: 3a4e77baaceeda4f +Block 0030 [ 1]: 7a9ee225ee9d9639 +Block 0030 [ 2]: be87707cf63597d6 +Block 0030 [ 3]: 4cc45af01e0c3d38 +Block 0030 [ 4]: 61eb5cb37a5db980 +Block 0030 [ 5]: a21053715936dbd4 +Block 0030 [ 6]: 2e2a60f4b776a427 +Block 0030 [ 7]: c3160614bf7b6e67 +Block 0030 [ 8]: 2c09de08c8702cd2 +Block 0030 [ 9]: 42075967917bfa70 +Block 0030 [ 10]: c3a601e6c4af7352 +Block 0030 [ 11]: 7da95db7a912839a +Block 0030 [ 12]: 7b91b6daf74df3d1 +Block 0030 [ 13]: 7e68f0c963c11656 +Block 0030 [ 14]: 292bf228471ea592 +Block 0030 [ 15]: 28297197c4237221 +Block 0030 [ 16]: c011080c1138e15b +Block 0030 [ 17]: 649689340374f6b2 +Block 0030 [ 18]: 22c4f943de3c6691 +Block 0030 [ 19]: 13dcc60a6e166690 +Block 0030 [ 20]: fa7b5a54f3fcd738 +Block 0030 [ 21]: 6795de2cac74fd73 +Block 0030 [ 22]: 970f60d8918882aa +Block 0030 [ 23]: ac1f731a31df5499 +Block 0030 [ 24]: 13e34af1c65e7b29 +Block 0030 [ 25]: 4bb39dae73b770f4 +Block 0030 [ 26]: e0df37aabf0a24f6 +Block 0030 [ 27]: 6353983bf4cfaf43 +Block 0030 [ 28]: 86149b53a770fdcb +Block 0030 [ 29]: 0a8047c119b1ea18 +Block 0030 [ 30]: ec84dee6813b98c1 +Block 0030 [ 31]: 68d4b8e0ccd7b622 +Block 0030 [ 32]: 4f5636008654d419 +Block 0030 [ 33]: eda05631c9161315 +Block 0030 [ 34]: eebb69dc293f8497 +Block 0030 [ 35]: 22c93868ebc40dce +Block 0030 [ 36]: c8b4d47f3480051e +Block 0030 [ 37]: 3e12b38ee5dac831 +Block 0030 [ 38]: 1c0c6618fd0b1a03 +Block 0030 [ 39]: edf8afbbdc630d8f +Block 0030 [ 40]: 74db17078f3381b5 +Block 0030 [ 41]: 1f3ef7f652def5d1 +Block 0030 [ 42]: 823081fa577de1cb +Block 0030 [ 43]: bab3df9f63e2474a +Block 0030 [ 44]: 5f8943ad9630ce55 +Block 0030 [ 45]: 49986b0a5fd83bb7 +Block 0030 [ 46]: 5a5d0b2f0fc4f2fa +Block 0030 [ 47]: ff63d169f9b3ee72 +Block 0030 [ 48]: d375bb8f1fbdddd6 +Block 0030 [ 49]: 52c165386bb256e3 +Block 0030 [ 50]: 1a925b2d08860b41 +Block 0030 [ 51]: 2a7211d563ae55a0 +Block 0030 [ 52]: 944d8a32a0f620cf +Block 0030 [ 53]: c221ab1dfc88b935 +Block 0030 [ 54]: 167bbd3c0073900c +Block 0030 [ 55]: 0db633dc8f2c1fd7 +Block 0030 [ 56]: f3c9215754dd8f0c +Block 0030 [ 57]: d104919d3adcc42b +Block 0030 [ 58]: c3d815aa1b927c67 +Block 0030 [ 59]: d91f5b17a46bb7fd +Block 0030 [ 60]: 6d1d86a418781821 +Block 0030 [ 61]: 3f0960ab45883d83 +Block 0030 [ 62]: ffb4730d3ec55144 +Block 0030 [ 63]: b127ee8cb7bf977b +Block 0030 [ 64]: c6838a7e889e1588 +Block 0030 [ 65]: 7ffedaf44973699a +Block 0030 [ 66]: 008ff4b9472cf2dc +Block 0030 [ 67]: 2c2e9d5ed75d138f +Block 0030 [ 68]: 329c478d8bfc8eab +Block 0030 [ 69]: a4b5d417ca5cad57 +Block 0030 [ 70]: 757f87821b6cc4ac +Block 0030 [ 71]: b82ba42df02d75f0 +Block 0030 [ 72]: c887e666f40bc6bb +Block 0030 [ 73]: ae6e53a5c3048169 +Block 0030 [ 74]: 4d296c09642f6d91 +Block 0030 [ 75]: 4fd264c1d18f900a +Block 0030 [ 76]: 1c15dc236ad7d489 +Block 0030 [ 77]: 57c630419d7fa503 +Block 0030 [ 78]: a5ec2b38561864cf +Block 0030 [ 79]: 51056353bcccaaea +Block 0030 [ 80]: da73a3459a97b928 +Block 0030 [ 81]: bd3279d2117f0962 +Block 0030 [ 82]: 42fc1367b4296b8b +Block 0030 [ 83]: 4de989cf50579856 +Block 0030 [ 84]: 9c11f82833791e40 +Block 0030 [ 85]: 6be709cb596edf6c +Block 0030 [ 86]: fb68b38c53e92279 +Block 0030 [ 87]: 68f1a49c0cb2311c +Block 0030 [ 88]: 50a4612fd938d89e +Block 0030 [ 89]: d58eee675fa3a41f +Block 0030 [ 90]: 870ed05ee6350067 +Block 0030 [ 91]: 8c53bd46aba7beec +Block 0030 [ 92]: e546cea63e89529c +Block 0030 [ 93]: 85bb7096cc9b51e2 +Block 0030 [ 94]: 9b151d482e5f737f +Block 0030 [ 95]: 3e02ee4e48d40847 +Block 0030 [ 96]: 143794b3b806c105 +Block 0030 [ 97]: 740138578a4412e3 +Block 0030 [ 98]: d6e1430d236fbd8d +Block 0030 [ 99]: c93ff2afac930718 +Block 0030 [100]: 0ee3fc474f99b65c +Block 0030 [101]: 7bc02766f6986262 +Block 0030 [102]: bc4687933c275a94 +Block 0030 [103]: e2ec1bc66998dfcd +Block 0030 [104]: 0f3137a4c7c39136 +Block 0030 [105]: 6640cc5a47acc8da +Block 0030 [106]: e2e2b4ddd0b254e1 +Block 0030 [107]: 2851fdb6ecbb9717 +Block 0030 [108]: 3bfdbefaee7b1d3b +Block 0030 [109]: 0b20c582f9b86a9a +Block 0030 [110]: dc058e810c81fc5f +Block 0030 [111]: dc1ad509e96d5af4 +Block 0030 [112]: ea2b48353d92a0c8 +Block 0030 [113]: 4f0fbd9411f1aefe +Block 0030 [114]: df2ee5a34ef9892b +Block 0030 [115]: 88d91adc176ece1b +Block 0030 [116]: e493018de47fbbf3 +Block 0030 [117]: 0bc0d0efc7465b23 +Block 0030 [118]: 616c33128632676c +Block 0030 [119]: 3c17e6a96769a2dc +Block 0030 [120]: 2eb32b1f6f7ee404 +Block 0030 [121]: 3b9bd65bcf653b07 +Block 0030 [122]: a23aec57c56882ec +Block 0030 [123]: 805e394d2b515733 +Block 0030 [124]: 3445d77be8923ddf +Block 0030 [125]: 20d3726bef9ac7b4 +Block 0030 [126]: 8f781753caa7d491 +Block 0030 [127]: 6b0ec3c5e1d47486 +Block 0031 [ 0]: 8306f7c967b395c3 +Block 0031 [ 1]: ffbda0ec347706b6 +Block 0031 [ 2]: 6b538b8f54fde01d +Block 0031 [ 3]: 92cddba06a854e63 +Block 0031 [ 4]: e99652ed7a685653 +Block 0031 [ 5]: 06285bf3d2c84177 +Block 0031 [ 6]: 4fd4db438b0a25c6 +Block 0031 [ 7]: 3d593b9d18304741 +Block 0031 [ 8]: e2a49f385a3ec381 +Block 0031 [ 9]: 9ea8d9ec4a6ebacf +Block 0031 [ 10]: b0013cf98afbadbf +Block 0031 [ 11]: dbdcc22dac267551 +Block 0031 [ 12]: 379d1119cb488e8a +Block 0031 [ 13]: 67c4a226cae340d2 +Block 0031 [ 14]: 61bb2a63fbf188d4 +Block 0031 [ 15]: 0f817bb25ea1b0a4 +Block 0031 [ 16]: 0f94ca725ccccba3 +Block 0031 [ 17]: a632e0f21c8f58b8 +Block 0031 [ 18]: 1d79a5e778c40ab6 +Block 0031 [ 19]: 79e3dc533eebfc58 +Block 0031 [ 20]: 1a2a047311c1b025 +Block 0031 [ 21]: 73489e4eedbaec14 +Block 0031 [ 22]: 318ba718b36de770 +Block 0031 [ 23]: 2ccaebfbe880e7ee +Block 0031 [ 24]: aa65a3cf94a7cc82 +Block 0031 [ 25]: 96f862a3645089a4 +Block 0031 [ 26]: 45456f474da39292 +Block 0031 [ 27]: 293b382f5b70f9d4 +Block 0031 [ 28]: 6837e6047dc46312 +Block 0031 [ 29]: 5f0491803d570380 +Block 0031 [ 30]: 77d19869608ac4f1 +Block 0031 [ 31]: d7f936ed6a30c940 +Block 0031 [ 32]: 2c94e8b715017145 +Block 0031 [ 33]: 3db8ea9151bf639e +Block 0031 [ 34]: 04d98fc999448e08 +Block 0031 [ 35]: 1e30799273f79847 +Block 0031 [ 36]: ed4a299ddef0824c +Block 0031 [ 37]: 53059a92df99a968 +Block 0031 [ 38]: 6317980fda9bd7ac +Block 0031 [ 39]: 531c258c22b37111 +Block 0031 [ 40]: 3e144cb617d753e5 +Block 0031 [ 41]: 0ad1b6cc800fad97 +Block 0031 [ 42]: 485de075ce354cf7 +Block 0031 [ 43]: 3e939cbdcbe8d38b +Block 0031 [ 44]: 0997fe08f57f0688 +Block 0031 [ 45]: 0c29cbb8ff0520a0 +Block 0031 [ 46]: 9013fa5da1f9d57e +Block 0031 [ 47]: 36eb3989037992db +Block 0031 [ 48]: d28c2374d860cc20 +Block 0031 [ 49]: 79cc56225c2ebc97 +Block 0031 [ 50]: 80ee579977e66ce9 +Block 0031 [ 51]: ef37303706d4c739 +Block 0031 [ 52]: c12bb9458ec378b3 +Block 0031 [ 53]: ab8b1475ca99dee1 +Block 0031 [ 54]: e01ccdb1c01665f5 +Block 0031 [ 55]: e9103674ac072d8e +Block 0031 [ 56]: 1bd24ece78517070 +Block 0031 [ 57]: 44438d3d8f2a34ac +Block 0031 [ 58]: 5a662ad1c9bb32ad +Block 0031 [ 59]: 60ea59c0ec8b19fb +Block 0031 [ 60]: ed360f0271f6e226 +Block 0031 [ 61]: ff6fe136d8939f79 +Block 0031 [ 62]: 3aae328e3bcf3077 +Block 0031 [ 63]: 7a1009c1813ebb07 +Block 0031 [ 64]: f7fa7ff6b5cff9dc +Block 0031 [ 65]: 6aafbdc262751941 +Block 0031 [ 66]: 318323a996e7a435 +Block 0031 [ 67]: daaba3ad743cbb49 +Block 0031 [ 68]: a0993c7c36cbbf10 +Block 0031 [ 69]: 263840e836b8c805 +Block 0031 [ 70]: 8bedb868059ad2e8 +Block 0031 [ 71]: 61a1155c5a5a0d77 +Block 0031 [ 72]: 7ed07df38823f7d6 +Block 0031 [ 73]: deaf2fe38de9a9b1 +Block 0031 [ 74]: 13c1471961aa3032 +Block 0031 [ 75]: 865379c27a3afe33 +Block 0031 [ 76]: 10f2c731e3471ff8 +Block 0031 [ 77]: d11ec955b352ea34 +Block 0031 [ 78]: 1bae54b12af0ee66 +Block 0031 [ 79]: 6d2191bc118b5106 +Block 0031 [ 80]: 2ca4a296fae792c1 +Block 0031 [ 81]: ba0a2f5e9545eb65 +Block 0031 [ 82]: b02a49851af4f76f +Block 0031 [ 83]: c214f20bac978c16 +Block 0031 [ 84]: 811c3e9926388f27 +Block 0031 [ 85]: a211b6e9a6d66463 +Block 0031 [ 86]: 01e5b225c481858a +Block 0031 [ 87]: 39d92f1aec39be76 +Block 0031 [ 88]: 79c9f3ee5bbd64c8 +Block 0031 [ 89]: a451d0ee456f1ad7 +Block 0031 [ 90]: f210d043b918cc7e +Block 0031 [ 91]: fd385af25e8eb5d4 +Block 0031 [ 92]: 4c1297afd1f15d9b +Block 0031 [ 93]: 31c395a3a375c5b7 +Block 0031 [ 94]: 34a9b2385663c299 +Block 0031 [ 95]: 3d99bcd6d489beeb +Block 0031 [ 96]: a6e71b785c66ae8d +Block 0031 [ 97]: 601e41b8f3311735 +Block 0031 [ 98]: b95597e39654bb80 +Block 0031 [ 99]: 2ba68c443b1388cd +Block 0031 [100]: c2eb6ec1890299d0 +Block 0031 [101]: 450921c9d7985bd0 +Block 0031 [102]: 51432dd07403de26 +Block 0031 [103]: e9c807d29d00abef +Block 0031 [104]: 69f4eac4ce9ece4f +Block 0031 [105]: e9e1977d0ec7b38f +Block 0031 [106]: 5ba243615e820eaa +Block 0031 [107]: 32f5d778185e5134 +Block 0031 [108]: 4052e09b2628a83e +Block 0031 [109]: cc8997055934d815 +Block 0031 [110]: 82037f7a6beef794 +Block 0031 [111]: 28943b7f1c12e2a3 +Block 0031 [112]: 23cccf5ec328d527 +Block 0031 [113]: 44d9465be2cf4352 +Block 0031 [114]: f7753906b77a4eed +Block 0031 [115]: 6aaf7384c73c1dc5 +Block 0031 [116]: 148aa0ed8ab6ee20 +Block 0031 [117]: f6b34a35560f84fe +Block 0031 [118]: 5958fa89d0ed311d +Block 0031 [119]: e229f574b84ba2d8 +Block 0031 [120]: 6e9a4188a3f6756a +Block 0031 [121]: ec28503a0854e61a +Block 0031 [122]: 57cd455e58f6f8b0 +Block 0031 [123]: 1a3541b15feb7f05 +Block 0031 [124]: 57cfb9d20479da49 +Block 0031 [125]: 4099654bc6607f69 +Block 0031 [126]: f142a1126075a5c8 +Block 0031 [127]: c341b3ca45c10da5 +Tag: 51 2b 39 1b 6f 11 62 97 53 71 d3 09 19 73 42 94 f8 68 e3 be 39 84 f3 c1 a1 3a 4d b9 fa be 4a cb diff --git a/deps/phc-winner-argon2-20190702/kats/argon2d.shasum b/deps/phc-winner-argon2-20190702/kats/argon2d.shasum new file mode 100644 index 000000000..b1b045d1b --- /dev/null +++ b/deps/phc-winner-argon2-20190702/kats/argon2d.shasum @@ -0,0 +1 @@ +73619cfe0f35e52fdd1ca2595ffaa359879467407f98b61f4969c2861cc329ce argon2d diff --git a/deps/phc-winner-argon2-20190702/kats/argon2d_v16 b/deps/phc-winner-argon2-20190702/kats/argon2d_v16 new file mode 100644 index 000000000..d35bd4269 --- /dev/null +++ b/deps/phc-winner-argon2-20190702/kats/argon2d_v16 @@ -0,0 +1,12304 @@ +======================================= +Argon2d version number 16 +======================================= +Memory: 32 KiB, Iterations: 3, Parallelism: 4 lanes, Tag length: 32 bytes +Password[32]: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 +Salt[16]: 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 +Secret[8]: 03 03 03 03 03 03 03 03 +Associated data[12]: 04 04 04 04 04 04 04 04 04 04 04 04 +Pre-hashing digest: ec dc 26 dc 6b dd 21 56 19 68 97 aa 8c c9 a0 4c 03 ed 07 cd 12 92 67 c5 3c a6 ae f7 76 a4 30 89 6a 09 80 54 e4 de c3 e0 2e cd 82 c4 7f 56 2c a2 73 d2 f6 97 8a 5c 05 41 1a 0c d0 9d 47 7b 7b 06 + + After pass 0: +Block 0000 [ 0]: b0470f8400af9a3e +Block 0000 [ 1]: 73761d3efffb3c57 +Block 0000 [ 2]: 369f09e4da0c49b4 +Block 0000 [ 3]: f0ae6399a00bba82 +Block 0000 [ 4]: eee79cd2f0460d60 +Block 0000 [ 5]: 297b71501a8f338e +Block 0000 [ 6]: 9b61176d407909c3 +Block 0000 [ 7]: 66ff2a7fa45fae7e +Block 0000 [ 8]: c25d34462fb86e28 +Block 0000 [ 9]: 1722d2592c6d2ee9 +Block 0000 [ 10]: 4e53ae3da056ed0b +Block 0000 [ 11]: 07fe2bba6b66c178 +Block 0000 [ 12]: 5ec4cde6415931a2 +Block 0000 [ 13]: 35f1752594c09eb6 +Block 0000 [ 14]: 440d7f2b2fcfc0b2 +Block 0000 [ 15]: 9bd8f0a5b3ddedcc +Block 0000 [ 16]: 45577256f4ed31f1 +Block 0000 [ 17]: 722c5080dcb4b97a +Block 0000 [ 18]: e00041f0806886e4 +Block 0000 [ 19]: fe05098342a9d3fb +Block 0000 [ 20]: a8ab223d3d042e8b +Block 0000 [ 21]: 503fbc822817e86a +Block 0000 [ 22]: 05cc6a2089cc5d48 +Block 0000 [ 23]: eb3ada41307fc6ca +Block 0000 [ 24]: 83e52b2ff5b82787 +Block 0000 [ 25]: 310678685cead533 +Block 0000 [ 26]: 3a30a891a9347881 +Block 0000 [ 27]: 8a0bd25d5560dd7b +Block 0000 [ 28]: 263a1a16487c9dcd +Block 0000 [ 29]: 9b2c75e65c7aeb33 +Block 0000 [ 30]: 9a2d2e8e60a7ee9e +Block 0000 [ 31]: 18d5e488e8f929b2 +Block 0000 [ 32]: 53e264db9a04474f +Block 0000 [ 33]: c777f5c8fbc2b4c8 +Block 0000 [ 34]: 017246c703bdf7b0 +Block 0000 [ 35]: 30a5cbd790558b68 +Block 0000 [ 36]: 33a1b499675bcbeb +Block 0000 [ 37]: 23ddf458c2cb3da4 +Block 0000 [ 38]: 608a7b074a001e4a +Block 0000 [ 39]: 2f467b32c96b96bf +Block 0000 [ 40]: 7747313d71e791b2 +Block 0000 [ 41]: 485d66811d2f3814 +Block 0000 [ 42]: ba99a9bd1e43be30 +Block 0000 [ 43]: 53f0cd6ae19f0f0d +Block 0000 [ 44]: 59137981bd54937b +Block 0000 [ 45]: c5f473a3df6b9855 +Block 0000 [ 46]: 2ae6dcdbeaab3163 +Block 0000 [ 47]: a4fdb3388c42acc0 +Block 0000 [ 48]: 7bfab3c558e71ba4 +Block 0000 [ 49]: fca67432297d1cc4 +Block 0000 [ 50]: 57eced62c617b8ee +Block 0000 [ 51]: ead2fcf6b9865e75 +Block 0000 [ 52]: 1e0415b7d63186ae +Block 0000 [ 53]: 48ab90d7e3446023 +Block 0000 [ 54]: 6cb87870278b3f88 +Block 0000 [ 55]: 92d7d7605ae82850 +Block 0000 [ 56]: 2c00219bee6cace9 +Block 0000 [ 57]: 3986013bf8aa5be9 +Block 0000 [ 58]: 0f37c1ace5344089 +Block 0000 [ 59]: 398a91714ecd2c80 +Block 0000 [ 60]: 8adf42359d4c68aa +Block 0000 [ 61]: 1546fb42e3581df7 +Block 0000 [ 62]: f37a594c954bc404 +Block 0000 [ 63]: 2002d1097c0ce1c9 +Block 0000 [ 64]: 44d379e56798d98b +Block 0000 [ 65]: 8fd7eca2c1ba9bf1 +Block 0000 [ 66]: d7692a1ebae09a8f +Block 0000 [ 67]: 9dd054b950c447c2 +Block 0000 [ 68]: 8bd1f021f9e66f28 +Block 0000 [ 69]: 1abc5cab26fe2b45 +Block 0000 [ 70]: 9437187b1b2374f2 +Block 0000 [ 71]: 036fa42f4670a4cd +Block 0000 [ 72]: 3cda85705397c20c +Block 0000 [ 73]: 61d94f7670dc5745 +Block 0000 [ 74]: 48472cc130ec3dee +Block 0000 [ 75]: 7c375245b55f305e +Block 0000 [ 76]: 6630e68e114bdd1c +Block 0000 [ 77]: 79c8e7a1fd0b6d4e +Block 0000 [ 78]: f298c7419222a6a4 +Block 0000 [ 79]: f4659ba158b5934f +Block 0000 [ 80]: 972162604d305712 +Block 0000 [ 81]: a35a2238c97be97a +Block 0000 [ 82]: 7e79114089c65562 +Block 0000 [ 83]: bb789be2751a1de1 +Block 0000 [ 84]: 8efbfadc522fcfdb +Block 0000 [ 85]: 780d4e1a6fd7c6b5 +Block 0000 [ 86]: 6b9cfe77e601e7eb +Block 0000 [ 87]: 4f5537e3a224f600 +Block 0000 [ 88]: c5dfbee166944e3b +Block 0000 [ 89]: f42877c75d6a7ef2 +Block 0000 [ 90]: a7d34acad6a5a97f +Block 0000 [ 91]: 50d4dd96e00368bd +Block 0000 [ 92]: 092272774f2216d5 +Block 0000 [ 93]: 0a635f82303e1c4f +Block 0000 [ 94]: 9b9d405490f6a720 +Block 0000 [ 95]: 586ae3294ed8c291 +Block 0000 [ 96]: 3003bbca0021b5b0 +Block 0000 [ 97]: 68669eba07ae39f4 +Block 0000 [ 98]: 01715b14a9d26ef1 +Block 0000 [ 99]: 283673720c02984d +Block 0000 [100]: 930f81c178e5cb14 +Block 0000 [101]: a0a5edb1f31eba1c +Block 0000 [102]: 7aaee5640b99640b +Block 0000 [103]: 2e99d18246f5f4d9 +Block 0000 [104]: 6ea36e6869f1ac2f +Block 0000 [105]: 3581f1d1a2b126d7 +Block 0000 [106]: 0c8a55beefe5d92f +Block 0000 [107]: c9025ffe0d55429e +Block 0000 [108]: e9c2d55dd56a1b49 +Block 0000 [109]: e1449008d709b955 +Block 0000 [110]: 9d83305392cd07fa +Block 0000 [111]: 9c67f71d0d966cd0 +Block 0000 [112]: 6ac22b04295d8c0a +Block 0000 [113]: 5883e67617dde560 +Block 0000 [114]: 0901b89c026d313f +Block 0000 [115]: 11558f2456435166 +Block 0000 [116]: 99cfd4734a726790 +Block 0000 [117]: 407a21fa4523dbcd +Block 0000 [118]: f484b24dd1f08c68 +Block 0000 [119]: 31cb0c527a35975d +Block 0000 [120]: 65a55c3e82335f9f +Block 0000 [121]: 2a6f20c9818beb78 +Block 0000 [122]: 2d46e2c60c8e9d03 +Block 0000 [123]: 010bf8d357d74314 +Block 0000 [124]: 9920b8105a72ca59 +Block 0000 [125]: 5ba81a39878a8d89 +Block 0000 [126]: 5536fb2357880f88 +Block 0000 [127]: 8d41d5c05bb02c76 +Block 0001 [ 0]: 7c4dea0e2d60f524 +Block 0001 [ 1]: aa2a00de14b18b07 +Block 0001 [ 2]: 21096c8af065b38f +Block 0001 [ 3]: 497933239d8a973a +Block 0001 [ 4]: a142a7f757f8fc7e +Block 0001 [ 5]: d40e8a8d9a21e249 +Block 0001 [ 6]: b1ec7f19913afc1f +Block 0001 [ 7]: a338cff2cc8bc4ac +Block 0001 [ 8]: aac0b85583bf7289 +Block 0001 [ 9]: 690d5a54662e6410 +Block 0001 [ 10]: ac468078f037f0d6 +Block 0001 [ 11]: 384841ffe93d19e5 +Block 0001 [ 12]: 720f69aeff671d51 +Block 0001 [ 13]: d198555d8468ae2b +Block 0001 [ 14]: 7ffeefca4c978232 +Block 0001 [ 15]: 3360f4dfdf6895b5 +Block 0001 [ 16]: db53bd1b7e54520a +Block 0001 [ 17]: ea9f149f6212a583 +Block 0001 [ 18]: 020b78f177d94965 +Block 0001 [ 19]: 8ce06021e66d0bf2 +Block 0001 [ 20]: 5466008802bef56e +Block 0001 [ 21]: d8a227d38b6f358c +Block 0001 [ 22]: 296734d9cfe0d11e +Block 0001 [ 23]: 3e2eeb4342eb2262 +Block 0001 [ 24]: 46a62cb525e796c1 +Block 0001 [ 25]: 1824b1bd628b2847 +Block 0001 [ 26]: cc813a25271149a9 +Block 0001 [ 27]: fb0fcbe1fca6e76a +Block 0001 [ 28]: f5efd2568201f4da +Block 0001 [ 29]: 905670995124373a +Block 0001 [ 30]: d7b0ba4c678a83cc +Block 0001 [ 31]: 1c3c260b14d880ab +Block 0001 [ 32]: 56efe59ab054f179 +Block 0001 [ 33]: c695b1e57cb7af58 +Block 0001 [ 34]: 97885a5f0d1674a2 +Block 0001 [ 35]: a629559911b65eef +Block 0001 [ 36]: c2f2e5fc0c03a7c0 +Block 0001 [ 37]: 2dee9f43d23c80b2 +Block 0001 [ 38]: 5f68bda41bfcfa3d +Block 0001 [ 39]: fc7855b664b3caf8 +Block 0001 [ 40]: 66e223e79d9624bf +Block 0001 [ 41]: bfcac21a1f58b978 +Block 0001 [ 42]: 373154530d4e9cfe +Block 0001 [ 43]: 42a83b6b5a95a8f9 +Block 0001 [ 44]: dec51468eec2db12 +Block 0001 [ 45]: 52ca0501bc82cc25 +Block 0001 [ 46]: d2aae011fe9ef8e7 +Block 0001 [ 47]: 16602dccb9ceb742 +Block 0001 [ 48]: 573651bd7f1e70e4 +Block 0001 [ 49]: 92ca272adcc5f65d +Block 0001 [ 50]: fe1f0568275b66fc +Block 0001 [ 51]: d961aa493d1530f1 +Block 0001 [ 52]: d7d276d4745ebfb7 +Block 0001 [ 53]: adacd9d6986d03e6 +Block 0001 [ 54]: e3c5674a50aa9abc +Block 0001 [ 55]: 0cf2efe898a18bf7 +Block 0001 [ 56]: 7797339171b236d2 +Block 0001 [ 57]: bbe52e123b2df8e0 +Block 0001 [ 58]: eb1b7fba9e7589aa +Block 0001 [ 59]: 840badae7501c2be +Block 0001 [ 60]: 06deeda1ce2988d7 +Block 0001 [ 61]: 140a8210912f6372 +Block 0001 [ 62]: bcce0defcfaf3ff0 +Block 0001 [ 63]: bd8bbe3a5b7357c5 +Block 0001 [ 64]: 49637a6af40bb8e3 +Block 0001 [ 65]: fd75ad0b367affa6 +Block 0001 [ 66]: 69add785f11074df +Block 0001 [ 67]: 8454b757336e64a5 +Block 0001 [ 68]: 386ab1f621ab6142 +Block 0001 [ 69]: c2cd42d349dce6b6 +Block 0001 [ 70]: e32969ca5db538b4 +Block 0001 [ 71]: 74480a0d6ac3bf3f +Block 0001 [ 72]: 571082cf3b01e4c5 +Block 0001 [ 73]: 6bb06bd9260dea72 +Block 0001 [ 74]: d15a6b862bc7a814 +Block 0001 [ 75]: 558c4bd2255f8037 +Block 0001 [ 76]: 64b6c7b26cab95ce +Block 0001 [ 77]: 9a09637d8a22fc29 +Block 0001 [ 78]: 3df548df02d4b16c +Block 0001 [ 79]: 829be92eb1e213d5 +Block 0001 [ 80]: e6738c64ece294c0 +Block 0001 [ 81]: 66462b0b89f83f59 +Block 0001 [ 82]: e5013615a05a323e +Block 0001 [ 83]: 7cdfc7bdba04a275 +Block 0001 [ 84]: d0b9783aa00824f8 +Block 0001 [ 85]: 0f7febc5cf63d48b +Block 0001 [ 86]: ac3b53f9b1e8fff0 +Block 0001 [ 87]: fb6f0353cc6266ed +Block 0001 [ 88]: 70389279c1af15da +Block 0001 [ 89]: 5feb883aa01dac56 +Block 0001 [ 90]: 62c86cb126dd7e0a +Block 0001 [ 91]: 77dc24689be31b73 +Block 0001 [ 92]: 7591fa8815fee297 +Block 0001 [ 93]: a31a34a642aeee28 +Block 0001 [ 94]: 3cd8b4e84083f0bc +Block 0001 [ 95]: 88d90cc76c011122 +Block 0001 [ 96]: fc5548d89ff93615 +Block 0001 [ 97]: 4d0c9885517a4d90 +Block 0001 [ 98]: 10c21d0b82cd815e +Block 0001 [ 99]: 36978c5f64e948da +Block 0001 [100]: 93d37e62eb63da10 +Block 0001 [101]: c2063e399f8e0681 +Block 0001 [102]: 9f3ad235b61e3d64 +Block 0001 [103]: d0b5897523f036ce +Block 0001 [104]: 3d4bc104da4058eb +Block 0001 [105]: cab22022accf99e7 +Block 0001 [106]: 0a196df3f344aff8 +Block 0001 [107]: 7f2b12300165aee0 +Block 0001 [108]: fd653635d914158b +Block 0001 [109]: fb21692a6c1366a6 +Block 0001 [110]: edd6c2d040094961 +Block 0001 [111]: c79280e9941ec27a +Block 0001 [112]: 280fbce8e5cd6960 +Block 0001 [113]: 7cc512600d40f97b +Block 0001 [114]: 113b17fcc8deb868 +Block 0001 [115]: bc46307516881707 +Block 0001 [116]: c0aff8d55ea5a700 +Block 0001 [117]: d4c1d8dcbf1ecee8 +Block 0001 [118]: 3f09e229a0cf497f +Block 0001 [119]: 1def3afaac33feaf +Block 0001 [120]: cc2096dcd2211d73 +Block 0001 [121]: dfa75a456a313e59 +Block 0001 [122]: 3fe11ef2c04e65eb +Block 0001 [123]: ba1b015c57ab3dc5 +Block 0001 [124]: d4a1ca9073a23c77 +Block 0001 [125]: 51ac68a0fb4e1cb0 +Block 0001 [126]: ef182d66a08362fc +Block 0001 [127]: 699c95881a1b1060 +Block 0002 [ 0]: 71b8ec93e3f732c5 +Block 0002 [ 1]: 2921408aba7a6ee8 +Block 0002 [ 2]: c3025490c26543cd +Block 0002 [ 3]: 2e30a512c2b6484d +Block 0002 [ 4]: 162f85d06406e065 +Block 0002 [ 5]: 099550c9a0775360 +Block 0002 [ 6]: 826cd9cc4508ced2 +Block 0002 [ 7]: 8b50e67c9e390589 +Block 0002 [ 8]: 3f65b5a83ab16eeb +Block 0002 [ 9]: 17a13cfedda02c46 +Block 0002 [ 10]: caffc1c212eaf6da +Block 0002 [ 11]: 70544d093dae2eff +Block 0002 [ 12]: 75f87da3c49ef5cd +Block 0002 [ 13]: 3908fe7447cb509d +Block 0002 [ 14]: 2c13ce7102738447 +Block 0002 [ 15]: e7621f9479588459 +Block 0002 [ 16]: 89dd43987c830d89 +Block 0002 [ 17]: 4be2c7d1536f7afa +Block 0002 [ 18]: 60268880e79480d9 +Block 0002 [ 19]: 1ed06be1eecb34d7 +Block 0002 [ 20]: 2882a4262d1541c6 +Block 0002 [ 21]: bddd95b9db563f26 +Block 0002 [ 22]: fced5f7ad7b81f12 +Block 0002 [ 23]: c04469c639662e04 +Block 0002 [ 24]: 460754262f521e05 +Block 0002 [ 25]: 21c7d27cc5452fdd +Block 0002 [ 26]: 1310befaa07e57bc +Block 0002 [ 27]: ee7c3e228022978d +Block 0002 [ 28]: 64e2cf6ca5a6fdd8 +Block 0002 [ 29]: 5cbc6ef1df9cd675 +Block 0002 [ 30]: d6e3caee351230ba +Block 0002 [ 31]: 61546e25e5983aa1 +Block 0002 [ 32]: d41c9423345965f0 +Block 0002 [ 33]: 407791f4576a3aa8 +Block 0002 [ 34]: 46db5a0bcd5c846f +Block 0002 [ 35]: 8a95ee17bfe0ec08 +Block 0002 [ 36]: 5876f92dfc84ba7c +Block 0002 [ 37]: 8da713191be496b1 +Block 0002 [ 38]: f4c8167930dffef9 +Block 0002 [ 39]: 9781a08d32a0b1cf +Block 0002 [ 40]: 2037493b5f57d782 +Block 0002 [ 41]: 7e5354a5a79301a6 +Block 0002 [ 42]: ca1c80a7d3c25855 +Block 0002 [ 43]: 7c16b889b05d5d15 +Block 0002 [ 44]: cc8d72fcfa904393 +Block 0002 [ 45]: e69be7ed9d4a4b9b +Block 0002 [ 46]: 5b83edd2dc756478 +Block 0002 [ 47]: f06469381ce4b98c +Block 0002 [ 48]: 2cbb142fe5a0e8b1 +Block 0002 [ 49]: 25a7cc27085c2fa0 +Block 0002 [ 50]: 39bca88c1a5b175e +Block 0002 [ 51]: 2349a999fc48b56e +Block 0002 [ 52]: c498911f0fccf069 +Block 0002 [ 53]: fcc68ab56005de17 +Block 0002 [ 54]: c6ad828542abea0d +Block 0002 [ 55]: c8af3d891cbb47c8 +Block 0002 [ 56]: 3b95683722fcc593 +Block 0002 [ 57]: 418bd5f4f9ca062d +Block 0002 [ 58]: 111a6b7f103d805c +Block 0002 [ 59]: 319537bd4bb50060 +Block 0002 [ 60]: b431772961ad550b +Block 0002 [ 61]: cdd54e4909e4f5d6 +Block 0002 [ 62]: 4825697dcafe9f1a +Block 0002 [ 63]: b22fdd05afa7dcb2 +Block 0002 [ 64]: d740558c3e22b6b7 +Block 0002 [ 65]: 1a6700ef884972b8 +Block 0002 [ 66]: e1ddada589d6769e +Block 0002 [ 67]: 16e7d46c2f308c57 +Block 0002 [ 68]: a805a5577cabb7ac +Block 0002 [ 69]: e3190cb63ff4cea2 +Block 0002 [ 70]: d1d59749b12e2218 +Block 0002 [ 71]: aa05daeb0365bb35 +Block 0002 [ 72]: 53219e14d6ffd549 +Block 0002 [ 73]: 7f404b81efa8bcd8 +Block 0002 [ 74]: 3174a66d45b4c8ca +Block 0002 [ 75]: 6f4ece4db00d016b +Block 0002 [ 76]: 72609905da2763aa +Block 0002 [ 77]: b4df27508135bc32 +Block 0002 [ 78]: 2a1af06212e7ab05 +Block 0002 [ 79]: 83a250b2fc0dd162 +Block 0002 [ 80]: af2eb57044690474 +Block 0002 [ 81]: e308e6cd64304bab +Block 0002 [ 82]: 305c0c0a99e443ab +Block 0002 [ 83]: bc6b254c9b761c71 +Block 0002 [ 84]: 2eeb658cd9a94706 +Block 0002 [ 85]: 8b2e74a5947310b3 +Block 0002 [ 86]: 7eb34be2120cf80a +Block 0002 [ 87]: dff3f71f4898493b +Block 0002 [ 88]: c8cef85d3f0d5b4c +Block 0002 [ 89]: 664806ac6dade916 +Block 0002 [ 90]: bb65d599c8c080df +Block 0002 [ 91]: c54b8e93dbc7ded9 +Block 0002 [ 92]: 50a030ce6618ee8c +Block 0002 [ 93]: 45f54cb2aaa89e65 +Block 0002 [ 94]: 267b21b4235d7346 +Block 0002 [ 95]: 1bf408ed4e75b1dc +Block 0002 [ 96]: 0e8f1edbd4bbd0c8 +Block 0002 [ 97]: a1adb6d652b48eba +Block 0002 [ 98]: 09d7a628b284f260 +Block 0002 [ 99]: 2eb568f917e0a238 +Block 0002 [100]: 12067efa542954da +Block 0002 [101]: fed335dcd6c0d327 +Block 0002 [102]: 0ef0658af19df88c +Block 0002 [103]: 79772b8c71426f57 +Block 0002 [104]: a3fa41213ac1f06f +Block 0002 [105]: c1121c7f277a0413 +Block 0002 [106]: 69417dc62124eba2 +Block 0002 [107]: e5f073d09cc97483 +Block 0002 [108]: 6d4b689e3050ffeb +Block 0002 [109]: 8460b46071ee44e6 +Block 0002 [110]: 4f086191e05c2da3 +Block 0002 [111]: 0354280e4d44d36f +Block 0002 [112]: 790c8aa9173258fb +Block 0002 [113]: 60ed51d0eb2bb310 +Block 0002 [114]: da8ca7fcaab8acb4 +Block 0002 [115]: c6999b51539b1dea +Block 0002 [116]: 362b9d5fa7b5ebd5 +Block 0002 [117]: ef482e43f06ce25c +Block 0002 [118]: 6dc1ee2e3359b2d0 +Block 0002 [119]: 25afa5d76d54d610 +Block 0002 [120]: 878969f20bf69cd5 +Block 0002 [121]: 924a37340899c61f +Block 0002 [122]: 7ed02ee734978796 +Block 0002 [123]: 40fc63ad985ec23f +Block 0002 [124]: 3928395a5dd1a2bc +Block 0002 [125]: 9abb635194848088 +Block 0002 [126]: 4a5d219cac1ab9e7 +Block 0002 [127]: 3194b42ac43716a7 +Block 0003 [ 0]: ed9b018cf73119d4 +Block 0003 [ 1]: 676d7e00d2b3d934 +Block 0003 [ 2]: 24ed504cf99b75a2 +Block 0003 [ 3]: d9c68fa321957471 +Block 0003 [ 4]: c7dc7aeff1353f1e +Block 0003 [ 5]: 9a0b969f89ed418a +Block 0003 [ 6]: 043cfd3c93718f01 +Block 0003 [ 7]: e55c9f988adc8507 +Block 0003 [ 8]: d57fa23652f38e2f +Block 0003 [ 9]: 709d8bc2f7dd84f7 +Block 0003 [ 10]: ada563f3de793c91 +Block 0003 [ 11]: e27691545c44cc18 +Block 0003 [ 12]: 2fe9ca2b832c6714 +Block 0003 [ 13]: 747c2cab2953c670 +Block 0003 [ 14]: 6703532445d3915c +Block 0003 [ 15]: dfd77bc90722f024 +Block 0003 [ 16]: 16435ba9fbeb075d +Block 0003 [ 17]: 476d334c3dca8bfa +Block 0003 [ 18]: cde2fd89449eb0d5 +Block 0003 [ 19]: bd60a48ef022b66b +Block 0003 [ 20]: a2b9d31cb2bcc0ea +Block 0003 [ 21]: b5ea599c25604703 +Block 0003 [ 22]: 4120850f7df2620b +Block 0003 [ 23]: a0ecdb519966f5ee +Block 0003 [ 24]: 6463ec02a83f114d +Block 0003 [ 25]: 077ef4a147bf4cf4 +Block 0003 [ 26]: ceb96b986f2b6938 +Block 0003 [ 27]: 42dd9f1be3d42686 +Block 0003 [ 28]: d63add83abf847fd +Block 0003 [ 29]: 14798f3c6a47385c +Block 0003 [ 30]: 81a7c676faeff12f +Block 0003 [ 31]: 8007634d756d7974 +Block 0003 [ 32]: e530dd0f316b30e3 +Block 0003 [ 33]: 60537c75bc4e58f4 +Block 0003 [ 34]: 8c58c4b07d61a3c2 +Block 0003 [ 35]: 7314d4b84f29db19 +Block 0003 [ 36]: b1a8510d99f95311 +Block 0003 [ 37]: 77aec34e430a2ef3 +Block 0003 [ 38]: be9352608d95554c +Block 0003 [ 39]: afbdecc23c77e71a +Block 0003 [ 40]: ee9038b82427c8c6 +Block 0003 [ 41]: 3e7fe31ff4244515 +Block 0003 [ 42]: 9a19698f515d3421 +Block 0003 [ 43]: 6f8ff3c4f4815b14 +Block 0003 [ 44]: 761014fe861048a7 +Block 0003 [ 45]: 1f45dc9a00dc4d41 +Block 0003 [ 46]: 0b8b32add02a90bd +Block 0003 [ 47]: 7a009a892a306723 +Block 0003 [ 48]: 42cce6cfa293666e +Block 0003 [ 49]: b652771a017d6014 +Block 0003 [ 50]: a121c1f96f26c035 +Block 0003 [ 51]: d4ec5a9f263e50f3 +Block 0003 [ 52]: 6d2a4c8b05ef8267 +Block 0003 [ 53]: f61cf97cc03049fd +Block 0003 [ 54]: cc8397dd2288f295 +Block 0003 [ 55]: a77557382f89e947 +Block 0003 [ 56]: 403fb02df66263b8 +Block 0003 [ 57]: b76f07afa1117612 +Block 0003 [ 58]: 67c4c28018281163 +Block 0003 [ 59]: 092d53a36a29aa29 +Block 0003 [ 60]: 2f276cc30cb2d64a +Block 0003 [ 61]: 09b079ccc7d34bb5 +Block 0003 [ 62]: dec9a5b166f0ec7f +Block 0003 [ 63]: 7a88ad9e18177537 +Block 0003 [ 64]: 21a6a68a52e17069 +Block 0003 [ 65]: 97e42522e13bb917 +Block 0003 [ 66]: 49a945cf664ad2e3 +Block 0003 [ 67]: 7c90c7238fab3dc0 +Block 0003 [ 68]: f6847cbb9fc1dcf9 +Block 0003 [ 69]: 613b69f2ba41a4d6 +Block 0003 [ 70]: cd59fef52d150563 +Block 0003 [ 71]: b23fb8c47fc95d8e +Block 0003 [ 72]: 4eb21cc522448370 +Block 0003 [ 73]: be2a1cae856b6920 +Block 0003 [ 74]: 3598905d25c18c85 +Block 0003 [ 75]: 73b4c4eee6198073 +Block 0003 [ 76]: 16c26bcbac3bdf2c +Block 0003 [ 77]: f8ac9f5d95065fbe +Block 0003 [ 78]: 65648fc6460c45bf +Block 0003 [ 79]: a380fff8646f6293 +Block 0003 [ 80]: 3db7f55dcec13491 +Block 0003 [ 81]: 073383663b073614 +Block 0003 [ 82]: 79b12d0d0c82cb40 +Block 0003 [ 83]: 086a4b6b0fc2256a +Block 0003 [ 84]: ce61a9b255e7f76a +Block 0003 [ 85]: 30aacf6ee481f877 +Block 0003 [ 86]: c1035ed72ecf5286 +Block 0003 [ 87]: 8d7c39140fae6ef7 +Block 0003 [ 88]: d5a479c1cb9aba85 +Block 0003 [ 89]: f0a10cd2d8bb5f99 +Block 0003 [ 90]: b01948d3e6b8e3ea +Block 0003 [ 91]: dbbf70c01fac6be5 +Block 0003 [ 92]: 636ab4bdc5ca0716 +Block 0003 [ 93]: 61e4955bb3e60859 +Block 0003 [ 94]: d056e739fbb78902 +Block 0003 [ 95]: ad7bdf23e2d3c0e4 +Block 0003 [ 96]: 68b2dafb66a5c70d +Block 0003 [ 97]: aeb52729d6f0213f +Block 0003 [ 98]: d22801e34a52020e +Block 0003 [ 99]: 3e5f3f27cbb5c16b +Block 0003 [100]: c3dac10d2ee9a3b7 +Block 0003 [101]: 943bef903b65b36a +Block 0003 [102]: acdbd6a2e74a6d2e +Block 0003 [103]: 223fc07fb15b3c2e +Block 0003 [104]: 4cc21098fc36f7e9 +Block 0003 [105]: 6c4742940ea08300 +Block 0003 [106]: a318d8cbc50f01ce +Block 0003 [107]: a1223a4b89fe758c +Block 0003 [108]: 7df4cb5a8696ca03 +Block 0003 [109]: 27637f388536a4a9 +Block 0003 [110]: 1c563e66b7c61df7 +Block 0003 [111]: 4d92572792bd3787 +Block 0003 [112]: a3a589f00137e6bd +Block 0003 [113]: 480ae4ee49a1045b +Block 0003 [114]: 32e1a4543563d81a +Block 0003 [115]: caf283982a76d442 +Block 0003 [116]: f13be5d11aa516fe +Block 0003 [117]: e8a1dbd6fc937744 +Block 0003 [118]: 8c6aee1b9d7866f3 +Block 0003 [119]: cce7053af9f1aaa0 +Block 0003 [120]: eade4e2857a1a201 +Block 0003 [121]: fde12acd969b09b7 +Block 0003 [122]: 22d756c288c83344 +Block 0003 [123]: 02f684d861b7ca1f +Block 0003 [124]: 1fa704bee1681316 +Block 0003 [125]: 8df154c2ae1d9075 +Block 0003 [126]: 8c6c02319f35a7bf +Block 0003 [127]: 1766d7e719c829d3 +Block 0004 [ 0]: 90d839630181a712 +Block 0004 [ 1]: 31d40561345ccafe +Block 0004 [ 2]: ed3bb1ec934eb32a +Block 0004 [ 3]: 5158d93e82035417 +Block 0004 [ 4]: 628176e2ce74e373 +Block 0004 [ 5]: 2be8dd104a093ba5 +Block 0004 [ 6]: 5453f9a6c44d3631 +Block 0004 [ 7]: f8ea14f4bae9c0b7 +Block 0004 [ 8]: 95812642baad81ab +Block 0004 [ 9]: 5dfcb2fb77201eec +Block 0004 [ 10]: f79d47a8fb49794f +Block 0004 [ 11]: b2feee7f8f445b8e +Block 0004 [ 12]: 19b1d3ff0c53cf11 +Block 0004 [ 13]: 28f2554b95410c7d +Block 0004 [ 14]: cdfa040f869838b0 +Block 0004 [ 15]: a6f647991b3cb6ab +Block 0004 [ 16]: 91fc048145229e4c +Block 0004 [ 17]: ad19c42e4772ec1d +Block 0004 [ 18]: a1c37bbabe144901 +Block 0004 [ 19]: 89bd26a605f77b5b +Block 0004 [ 20]: 7794732d75f63a08 +Block 0004 [ 21]: f678f8f5e9c39808 +Block 0004 [ 22]: 5381a28c3ca44c6c +Block 0004 [ 23]: 8ae5e76c1e1122be +Block 0004 [ 24]: eee5585bab1a102f +Block 0004 [ 25]: 5e1f1fde2dbf1193 +Block 0004 [ 26]: 6b533d9727cc50fe +Block 0004 [ 27]: 87dafb6e3fbdc398 +Block 0004 [ 28]: 36f76d8fafcae2d0 +Block 0004 [ 29]: 15288254e14e5c2d +Block 0004 [ 30]: 496c6c8f8623621d +Block 0004 [ 31]: 28d16b519704b395 +Block 0004 [ 32]: e712775b8bb142a1 +Block 0004 [ 33]: 6a869b2a212c4e31 +Block 0004 [ 34]: 8524f52b679fd180 +Block 0004 [ 35]: 045b00049350acd7 +Block 0004 [ 36]: b66de5cc34a53bb8 +Block 0004 [ 37]: a0cfbc2274974caf +Block 0004 [ 38]: 56c94fb7d70e67cd +Block 0004 [ 39]: 006ce5dd55c8c12a +Block 0004 [ 40]: 60ef5183fe831ac5 +Block 0004 [ 41]: d89d487934705042 +Block 0004 [ 42]: 3b2acc4cbff1b2ba +Block 0004 [ 43]: 7bf6c5188eefdbb8 +Block 0004 [ 44]: 8c3b2593646988a8 +Block 0004 [ 45]: 28aa328e1a3e5b4b +Block 0004 [ 46]: 74fbb3c3b45b6637 +Block 0004 [ 47]: b20f255f1ce5a949 +Block 0004 [ 48]: 0358047b7364172e +Block 0004 [ 49]: 162c6c06f5bb0ea8 +Block 0004 [ 50]: 65ca6a515f0ee61a +Block 0004 [ 51]: 5f1cfa1e60f277c5 +Block 0004 [ 52]: 05e8c0ad94b7bc34 +Block 0004 [ 53]: f832de7a4bd3ac2f +Block 0004 [ 54]: 9eea74a6901b91a4 +Block 0004 [ 55]: 1f367789fc44140e +Block 0004 [ 56]: 695b670f7bc01632 +Block 0004 [ 57]: 3e7d34e670023872 +Block 0004 [ 58]: c989195f9b616264 +Block 0004 [ 59]: a21c5f971308c13a +Block 0004 [ 60]: 58b87503c8635980 +Block 0004 [ 61]: 3245610b4d97d82d +Block 0004 [ 62]: e34a0f2d155360b1 +Block 0004 [ 63]: baf280cbc7fffb87 +Block 0004 [ 64]: 58510f97a6f2e4fc +Block 0004 [ 65]: c3366abaa8b7eab1 +Block 0004 [ 66]: 893caba7b9600db0 +Block 0004 [ 67]: 37c367da3446b904 +Block 0004 [ 68]: 84167169b47affbc +Block 0004 [ 69]: 9dc74c47cc8d7f78 +Block 0004 [ 70]: aa6925dcf92952c7 +Block 0004 [ 71]: 59f66d9a13ca1062 +Block 0004 [ 72]: de96a08f9c99c2f3 +Block 0004 [ 73]: 30b98fc65d399fda +Block 0004 [ 74]: 950542d7df476453 +Block 0004 [ 75]: cb7fb37d21104379 +Block 0004 [ 76]: 2bea7104cd1c5ef3 +Block 0004 [ 77]: c54453a78f0101f7 +Block 0004 [ 78]: 93ff56dd2ba89557 +Block 0004 [ 79]: b838fe564d46e7f3 +Block 0004 [ 80]: 8960183d8596dfdc +Block 0004 [ 81]: f9b0885a7c7d64d9 +Block 0004 [ 82]: 6a44f97f4714b2b1 +Block 0004 [ 83]: fc9528da99669c4e +Block 0004 [ 84]: d8b7d4ca2567129d +Block 0004 [ 85]: 1720d486d7e638ce +Block 0004 [ 86]: 7a95ddcf453b2e08 +Block 0004 [ 87]: 9da746f32e51288f +Block 0004 [ 88]: f93accc446e95fb9 +Block 0004 [ 89]: 2d1de132a48664dd +Block 0004 [ 90]: 39583bba3d9fbb08 +Block 0004 [ 91]: 9a3da40a9dd5d893 +Block 0004 [ 92]: 3439fe746eb1d98b +Block 0004 [ 93]: b2854012ccc088fe +Block 0004 [ 94]: 0bd26ec0fbef03a6 +Block 0004 [ 95]: 412b9c3c62e87da1 +Block 0004 [ 96]: f2b20003dd729349 +Block 0004 [ 97]: 5096494607d466b0 +Block 0004 [ 98]: 9df5f7537e761192 +Block 0004 [ 99]: cba43f26b1a5934f +Block 0004 [100]: ffe6f2a661c64ddd +Block 0004 [101]: 42f416be423dd904 +Block 0004 [102]: 5c8a2a6a229e88aa +Block 0004 [103]: 45b7de400eddb52e +Block 0004 [104]: 61f0b2212a2560ca +Block 0004 [105]: a158ceb5c0937b7d +Block 0004 [106]: 62f686b1e4a7de10 +Block 0004 [107]: 45f6eba38f22f491 +Block 0004 [108]: 43b50d660b6c2fc5 +Block 0004 [109]: 2fce08a13cda1519 +Block 0004 [110]: 169c1a9c683cb235 +Block 0004 [111]: a5d2facdeffdde02 +Block 0004 [112]: 2ab227e7a7f5849d +Block 0004 [113]: efde35e81d357f68 +Block 0004 [114]: 4d5f2d83c52fce90 +Block 0004 [115]: 241c77003a456d44 +Block 0004 [116]: b5add1f38714d889 +Block 0004 [117]: 41666f254082da28 +Block 0004 [118]: 6d12a9213c48cbdb +Block 0004 [119]: 0bf9b91e0ed22fc7 +Block 0004 [120]: 02373fa7a4e3e90c +Block 0004 [121]: b1c086a91f0485dc +Block 0004 [122]: 1167003ca5e99357 +Block 0004 [123]: 141e5480972f7bfd +Block 0004 [124]: 63daa7474f351787 +Block 0004 [125]: 332052c9298085bb +Block 0004 [126]: 733ea09c23cb071d +Block 0004 [127]: fa41e42ec3d39e7f +Block 0005 [ 0]: 5e7846318659b41b +Block 0005 [ 1]: 5498eccba3733c30 +Block 0005 [ 2]: 3babdb1fb5d41161 +Block 0005 [ 3]: 36f2b33bdc764f24 +Block 0005 [ 4]: 3f221dda7d6d34bb +Block 0005 [ 5]: 77176ae7b153eadd +Block 0005 [ 6]: 342e2e8794a8af6e +Block 0005 [ 7]: 20dea27fc8fae486 +Block 0005 [ 8]: 15323b3e533f0c7a +Block 0005 [ 9]: 0193254289eb31e3 +Block 0005 [ 10]: 4a81fd81fb7d90b0 +Block 0005 [ 11]: 8f287ad488427dfe +Block 0005 [ 12]: d7eb8dedcc6cd803 +Block 0005 [ 13]: d9b6de0e50372560 +Block 0005 [ 14]: 324222fe078be0da +Block 0005 [ 15]: 6a948a5b4ebdbd71 +Block 0005 [ 16]: 52a1e7302ec5d8be +Block 0005 [ 17]: 6af1222211cb1b0d +Block 0005 [ 18]: b1d9f1ddb03d7da0 +Block 0005 [ 19]: 2d9bb8070b62cf15 +Block 0005 [ 20]: 5a87a430cd6f9f81 +Block 0005 [ 21]: 340bcc02b9ad15c9 +Block 0005 [ 22]: 98db72f822dd6a1b +Block 0005 [ 23]: f9305db39a479727 +Block 0005 [ 24]: 78c68f205955a9f3 +Block 0005 [ 25]: baadd583ec827375 +Block 0005 [ 26]: 291e96dda338f722 +Block 0005 [ 27]: ca2fd96c45f08d2b +Block 0005 [ 28]: 66295ca71d284284 +Block 0005 [ 29]: cf6aefc8074ed121 +Block 0005 [ 30]: 205c887346749eaf +Block 0005 [ 31]: d1a818c4cb17d88f +Block 0005 [ 32]: d28404b27af6d3de +Block 0005 [ 33]: 68f38514db6ce691 +Block 0005 [ 34]: 9810855101734602 +Block 0005 [ 35]: 334ed4ce0bbaa7d1 +Block 0005 [ 36]: 1769d56aad14c3da +Block 0005 [ 37]: 5040635b0964ca75 +Block 0005 [ 38]: 0d2d406dcd0da21e +Block 0005 [ 39]: 3f0d5711e7d95959 +Block 0005 [ 40]: b9648e9ccd94997e +Block 0005 [ 41]: cdbcdbd0291121a2 +Block 0005 [ 42]: c2c776e399fb1502 +Block 0005 [ 43]: 10d7b02208474647 +Block 0005 [ 44]: 8dd2cae279f20ec7 +Block 0005 [ 45]: e2a4911895890527 +Block 0005 [ 46]: d5ddc4bf372c2f32 +Block 0005 [ 47]: a7d9d7c0e24d0291 +Block 0005 [ 48]: b05f408614e904c0 +Block 0005 [ 49]: bbd0c036e048df41 +Block 0005 [ 50]: 8eed1406ddf119a0 +Block 0005 [ 51]: da90ba3dcac5e24a +Block 0005 [ 52]: b1c9d509e7c4e991 +Block 0005 [ 53]: eafc798f9b854437 +Block 0005 [ 54]: 83350b23cf076d28 +Block 0005 [ 55]: b904c82269abbf30 +Block 0005 [ 56]: 4f9470766db9f036 +Block 0005 [ 57]: 8d94d3b34697e7e9 +Block 0005 [ 58]: 9110bc556a9e4405 +Block 0005 [ 59]: 65851e38116eee1a +Block 0005 [ 60]: d7990c5616c3310b +Block 0005 [ 61]: f44a043870e946fe +Block 0005 [ 62]: 497d20f5a83a43bb +Block 0005 [ 63]: cf47efb899f32d07 +Block 0005 [ 64]: 9ed434cd932fd840 +Block 0005 [ 65]: c33f7501c8c7104e +Block 0005 [ 66]: 72894f99ad784543 +Block 0005 [ 67]: 520dbb68dac9d894 +Block 0005 [ 68]: 39a98546fe09e803 +Block 0005 [ 69]: 8bf75e44b18c4dc5 +Block 0005 [ 70]: b0e11b03cad79f54 +Block 0005 [ 71]: 785d01a461667158 +Block 0005 [ 72]: 2464d3fc7be6e14a +Block 0005 [ 73]: 3c56497d32689298 +Block 0005 [ 74]: de2986b940d32487 +Block 0005 [ 75]: d9d5cfb103f6cea4 +Block 0005 [ 76]: 832e8c4d909d7b97 +Block 0005 [ 77]: 903d7d62755ae704 +Block 0005 [ 78]: a54cef3105844550 +Block 0005 [ 79]: f5b738152f173e09 +Block 0005 [ 80]: fdf02e4e100e3460 +Block 0005 [ 81]: 5a71685373a067eb +Block 0005 [ 82]: 2dc6f153213ac8bb +Block 0005 [ 83]: 227d2d6a16d74573 +Block 0005 [ 84]: 4703d6e40d6de4b2 +Block 0005 [ 85]: 9297e5c7c78805f2 +Block 0005 [ 86]: d13bb39fa6cf15b7 +Block 0005 [ 87]: b4e86661abb79f78 +Block 0005 [ 88]: 5f62a96a771a79c9 +Block 0005 [ 89]: 7f5fdb426c93deff +Block 0005 [ 90]: 8ec5bec7a7be07bb +Block 0005 [ 91]: 6c4a44e9b8e262bb +Block 0005 [ 92]: 69d02ed7903ae98a +Block 0005 [ 93]: 9d93c3a8515505ec +Block 0005 [ 94]: b2f8780a5241a542 +Block 0005 [ 95]: 1903e7ee2ad04c3e +Block 0005 [ 96]: 57c98601e7623a24 +Block 0005 [ 97]: eb032d6dab553367 +Block 0005 [ 98]: a717a3fa9ca5e346 +Block 0005 [ 99]: 088edeae54d9b6f4 +Block 0005 [100]: f7bab20588a9ee70 +Block 0005 [101]: 32c0ed6315b77431 +Block 0005 [102]: 037db77faeccc301 +Block 0005 [103]: edebe8ca2930df7b +Block 0005 [104]: 975d89059e4c5930 +Block 0005 [105]: 1e90aa88a537676f +Block 0005 [106]: ad5d5855d8b8ee4a +Block 0005 [107]: 3e4a4cbb750e652a +Block 0005 [108]: 4d9150310e7a9ec9 +Block 0005 [109]: f2750b962f399a59 +Block 0005 [110]: 5b7bf09e4a0ba5d7 +Block 0005 [111]: dafc4f656d94b7a8 +Block 0005 [112]: 641bee8cef5ae340 +Block 0005 [113]: 9b62ae31301e1379 +Block 0005 [114]: c8ab9073ae12bbe7 +Block 0005 [115]: bcfc6272d1012f69 +Block 0005 [116]: 22f31f6ac36a18e3 +Block 0005 [117]: 75437f21353a161b +Block 0005 [118]: 85ee0a8925de3c14 +Block 0005 [119]: 93dbf2879401c798 +Block 0005 [120]: dc20b9024f9ca22a +Block 0005 [121]: 67d1055a09faf352 +Block 0005 [122]: 16610e8af8545564 +Block 0005 [123]: 612fe25e6478e6a8 +Block 0005 [124]: d9a92e44a145ae37 +Block 0005 [125]: 783f29b7380227d6 +Block 0005 [126]: 1870326b162dc6c8 +Block 0005 [127]: 6f485b82113bc2a5 +Block 0006 [ 0]: 0417e8d2c09771fa +Block 0006 [ 1]: a726fdcd1ac3a31a +Block 0006 [ 2]: 84d14b41bb6059ea +Block 0006 [ 3]: 3f53c23b60df7038 +Block 0006 [ 4]: 19239c627a485bc5 +Block 0006 [ 5]: fb4aabd5defe2f47 +Block 0006 [ 6]: f9f1e77d2e9e514c +Block 0006 [ 7]: 7956e820153bfb8f +Block 0006 [ 8]: 95470e1a550e5d09 +Block 0006 [ 9]: 2df5c82514ab9a06 +Block 0006 [ 10]: 18fd74e083ae8ceb +Block 0006 [ 11]: 4e7434e120c54b8a +Block 0006 [ 12]: f91a96890a2d4ac0 +Block 0006 [ 13]: 232d40c217b875ce +Block 0006 [ 14]: 762f49fc25fcd3a0 +Block 0006 [ 15]: 35d5437c8b64405e +Block 0006 [ 16]: 0b422d304c0ed838 +Block 0006 [ 17]: 85a3333bf921879e +Block 0006 [ 18]: f3914d23823a2d06 +Block 0006 [ 19]: cc231b9f95233733 +Block 0006 [ 20]: 95a45fed71b29b0a +Block 0006 [ 21]: 11b8f5bc39821ade +Block 0006 [ 22]: beed6d07ff11c69c +Block 0006 [ 23]: de3fcab576d24290 +Block 0006 [ 24]: cb31ef7a9d8002ed +Block 0006 [ 25]: e60798c0537c5cbe +Block 0006 [ 26]: 25dbc252460cf848 +Block 0006 [ 27]: da174e23673492ae +Block 0006 [ 28]: 5aa2fc50a36cce3d +Block 0006 [ 29]: 78642ee4e8259afb +Block 0006 [ 30]: ad9a1811a189ce80 +Block 0006 [ 31]: 2f1afb8e0386b092 +Block 0006 [ 32]: 777789abcad25560 +Block 0006 [ 33]: 127feff5537b2332 +Block 0006 [ 34]: 4205ad01c2be853e +Block 0006 [ 35]: 988ae5fd34f0c7c7 +Block 0006 [ 36]: 0b9f67850f84e5f2 +Block 0006 [ 37]: e1eef8199b93426e +Block 0006 [ 38]: 99e06d1c35c00831 +Block 0006 [ 39]: 59d99a6c99d0c6fa +Block 0006 [ 40]: bd5dceb6e37ef712 +Block 0006 [ 41]: 688e2a2779c7dc71 +Block 0006 [ 42]: 0bcba0f31e421c97 +Block 0006 [ 43]: 950a987e49b4a192 +Block 0006 [ 44]: 97a6320062a8ecad +Block 0006 [ 45]: ec9f00a9d09d89ba +Block 0006 [ 46]: 4117681b09f99aba +Block 0006 [ 47]: d8467026dda87eb2 +Block 0006 [ 48]: 8eae6e49ce6a479a +Block 0006 [ 49]: 543f4baf8ae08462 +Block 0006 [ 50]: d55c072b00a22ac2 +Block 0006 [ 51]: 54aa10083de6905b +Block 0006 [ 52]: 85b5c10b32ff7623 +Block 0006 [ 53]: 17f117b0a28bfc9a +Block 0006 [ 54]: 37ac27e7c6bc3a0c +Block 0006 [ 55]: dd9068b75c93bbd1 +Block 0006 [ 56]: 69f1a8ad964fa784 +Block 0006 [ 57]: fcb52326d3c515eb +Block 0006 [ 58]: 2c6ddb220f385957 +Block 0006 [ 59]: c5714a72aec686d3 +Block 0006 [ 60]: 66b376281e03b4dc +Block 0006 [ 61]: 28877c7f3213b260 +Block 0006 [ 62]: e579ce747b053fdd +Block 0006 [ 63]: 8727815de424a4cb +Block 0006 [ 64]: bc6d9c0d3179a1ef +Block 0006 [ 65]: ac4f154a1d761539 +Block 0006 [ 66]: 55fbaeec6dc7ca86 +Block 0006 [ 67]: a6f0af31cfe67f15 +Block 0006 [ 68]: 3922b3d031a2129b +Block 0006 [ 69]: 4453b2cb3aec5c2f +Block 0006 [ 70]: e380387d90a5e924 +Block 0006 [ 71]: 35e776afaf39e0b2 +Block 0006 [ 72]: b9f397c3611ec050 +Block 0006 [ 73]: 96df5c83a6df4140 +Block 0006 [ 74]: 695ff5340eec5ec5 +Block 0006 [ 75]: 987f9703bd026e3d +Block 0006 [ 76]: 0f4348c35038b1dc +Block 0006 [ 77]: 3d268153f9b16a2c +Block 0006 [ 78]: dc1cf419721a2453 +Block 0006 [ 79]: 1607e5d6ed685375 +Block 0006 [ 80]: 9a3d76a4963d8e34 +Block 0006 [ 81]: e9a1d2e0a80513c6 +Block 0006 [ 82]: 9fb6e4802f6e7169 +Block 0006 [ 83]: 01b29ef13e829bb4 +Block 0006 [ 84]: 66844c827d52bc55 +Block 0006 [ 85]: d07d0c3cbfdf7d5e +Block 0006 [ 86]: cf944367025e3ec7 +Block 0006 [ 87]: d90c8c514fcfc4b8 +Block 0006 [ 88]: 524c86be0fb92f8c +Block 0006 [ 89]: ce0a4bdd95819f54 +Block 0006 [ 90]: 89294a0f3414ae13 +Block 0006 [ 91]: d8cd430c02e6f74b +Block 0006 [ 92]: de46e3d9261a7b0f +Block 0006 [ 93]: 18e8320c1be34393 +Block 0006 [ 94]: f4bb7e71f45c46e7 +Block 0006 [ 95]: 3f0b6d6dd0e0c0fb +Block 0006 [ 96]: a64be31a62119da2 +Block 0006 [ 97]: 6972060764978fb8 +Block 0006 [ 98]: f3710a7be0ad2de5 +Block 0006 [ 99]: d6b80dd54b07c537 +Block 0006 [100]: d6051fc8b86b24b9 +Block 0006 [101]: d904afa89bbef2f5 +Block 0006 [102]: 2079fb23f3e3c75b +Block 0006 [103]: b594448695102524 +Block 0006 [104]: 7f6cfa7cea3593d8 +Block 0006 [105]: dd5fd43fdaaae533 +Block 0006 [106]: f30c2659a9142b1d +Block 0006 [107]: 3aa159403dced7a4 +Block 0006 [108]: 5962f9bf5160d458 +Block 0006 [109]: b8a982f7bb6fc161 +Block 0006 [110]: 5b5d15c13166d1d8 +Block 0006 [111]: 58aad2b0da7f6023 +Block 0006 [112]: 75421389e4139da8 +Block 0006 [113]: 91bc8b067014c464 +Block 0006 [114]: 7f91fd554a29cb3f +Block 0006 [115]: 54865eb5f6f4a935 +Block 0006 [116]: 1bbf6187700f04cb +Block 0006 [117]: fd95668e86d46407 +Block 0006 [118]: c1771c1acf358dc7 +Block 0006 [119]: 240ef33e1f0f5692 +Block 0006 [120]: 37f5f7a3d3dc98b3 +Block 0006 [121]: 0fdbc5425b41a182 +Block 0006 [122]: 8d029071e47bc518 +Block 0006 [123]: e33d5ba83bdbc7c5 +Block 0006 [124]: 9dfd7a2e63d545b9 +Block 0006 [125]: 74b00cf4ccf77152 +Block 0006 [126]: f02776461acb55a7 +Block 0006 [127]: a17599995e42dc1d +Block 0007 [ 0]: b790a46d763c1f8a +Block 0007 [ 1]: 88372edc47d473a5 +Block 0007 [ 2]: fdbf5895c75de68f +Block 0007 [ 3]: b576d710dc6934a9 +Block 0007 [ 4]: 261dbe511e84920e +Block 0007 [ 5]: 23ccb49198ef407e +Block 0007 [ 6]: dc7a607fcfdebbbb +Block 0007 [ 7]: c40f7909c8b74565 +Block 0007 [ 8]: bcb70d8b8c5ad62a +Block 0007 [ 9]: b407de45ef00203d +Block 0007 [ 10]: 1c9216113fbd2c5b +Block 0007 [ 11]: 77275accdb669b8a +Block 0007 [ 12]: 4fdcc4d247eaecbf +Block 0007 [ 13]: 3c9c6f9c725a8147 +Block 0007 [ 14]: 5896c77481a605a0 +Block 0007 [ 15]: e1a48bfa6f467b28 +Block 0007 [ 16]: dbf9935ebb5e2b89 +Block 0007 [ 17]: 14dab3f72d5e2176 +Block 0007 [ 18]: a154a24fe73fd778 +Block 0007 [ 19]: e6924d0f65899b84 +Block 0007 [ 20]: 4e62f41e7d33cb81 +Block 0007 [ 21]: 57aeacf64ee17eb9 +Block 0007 [ 22]: 2d1099c984394239 +Block 0007 [ 23]: a982e5e228a3385f +Block 0007 [ 24]: ca6d134a2b475bba +Block 0007 [ 25]: 3ef8c9ba2748bf6e +Block 0007 [ 26]: c6340e266c4c7758 +Block 0007 [ 27]: 805e6103e708427a +Block 0007 [ 28]: 83400bd566dc6d15 +Block 0007 [ 29]: 047f958c710d7217 +Block 0007 [ 30]: 281963f6a7372405 +Block 0007 [ 31]: 056cc5a85889d3d1 +Block 0007 [ 32]: 9752a6c3ff0ba9e3 +Block 0007 [ 33]: 092282962e219d5d +Block 0007 [ 34]: a453dd749ce5e0d2 +Block 0007 [ 35]: 88cb7090e75dfd2b +Block 0007 [ 36]: 9045ad926c38a180 +Block 0007 [ 37]: 637fd1abe93970e8 +Block 0007 [ 38]: 7a2bdbc77ba5a2a1 +Block 0007 [ 39]: 0d58dc850c38de96 +Block 0007 [ 40]: 9b8fb72271a76f9e +Block 0007 [ 41]: 82ce9be13cea48f8 +Block 0007 [ 42]: b24e764f68f217de +Block 0007 [ 43]: 9f7627a126af1bfb +Block 0007 [ 44]: 57163e7e745632fd +Block 0007 [ 45]: d282b8d0620d8261 +Block 0007 [ 46]: 807477780495b097 +Block 0007 [ 47]: 0f8f13b3edf03a12 +Block 0007 [ 48]: 899a059ba9a3840b +Block 0007 [ 49]: 8ed2c0cf3dc1f9c7 +Block 0007 [ 50]: cabc04edf2d6b2d2 +Block 0007 [ 51]: 1f4dd4cf9f078444 +Block 0007 [ 52]: 2927a20e27700649 +Block 0007 [ 53]: de52aaa1375b33bd +Block 0007 [ 54]: f1e8ea93f19d218c +Block 0007 [ 55]: 1550af4fa2fd9f2f +Block 0007 [ 56]: 55c59620ae537114 +Block 0007 [ 57]: cf489cd74a05e814 +Block 0007 [ 58]: c4c315c3cf39d416 +Block 0007 [ 59]: e59752fe467b5b96 +Block 0007 [ 60]: 997e1d12fb346c7b +Block 0007 [ 61]: 0a37442715377f32 +Block 0007 [ 62]: ebbe365a0e1bacfd +Block 0007 [ 63]: 8fcbbc39ecb89c4c +Block 0007 [ 64]: b38bd0764cde9d82 +Block 0007 [ 65]: 6f16527d4267b0a3 +Block 0007 [ 66]: 4ae5dea02d5fd9d9 +Block 0007 [ 67]: d6034ae87122afd7 +Block 0007 [ 68]: 12cc1f806cbc9d7c +Block 0007 [ 69]: ab9d9811c91588bb +Block 0007 [ 70]: e69c0a53a793ec61 +Block 0007 [ 71]: 4244a7184b2def54 +Block 0007 [ 72]: e05a4b9bcf35a10f +Block 0007 [ 73]: 83b4c5a14acf620b +Block 0007 [ 74]: 5c395967dd494072 +Block 0007 [ 75]: 9cc99d42a15cf863 +Block 0007 [ 76]: 651313f6ce56ac54 +Block 0007 [ 77]: 2d624d3b5e267495 +Block 0007 [ 78]: e5c5edce3caceb3a +Block 0007 [ 79]: 9e6a73a49cb1e138 +Block 0007 [ 80]: b63ce259bde73249 +Block 0007 [ 81]: 73ecd229001d48f9 +Block 0007 [ 82]: f596d98b783df7a9 +Block 0007 [ 83]: 7353862898dd9389 +Block 0007 [ 84]: 57063423fb02c599 +Block 0007 [ 85]: f5c261d8635cea29 +Block 0007 [ 86]: 506b486faca9af11 +Block 0007 [ 87]: ac0751d372f6ee49 +Block 0007 [ 88]: 5cb470a4a19ce898 +Block 0007 [ 89]: 45dfc8900981c9f8 +Block 0007 [ 90]: 2fdc79a1de246e99 +Block 0007 [ 91]: 63a7108d4264ef3f +Block 0007 [ 92]: 9089aae68dc0d946 +Block 0007 [ 93]: fbf2426d313a38ce +Block 0007 [ 94]: 4d737aa292130361 +Block 0007 [ 95]: c1eb918fba4db728 +Block 0007 [ 96]: 19c7bb8ed8bdd039 +Block 0007 [ 97]: 29cc46fb1db3081a +Block 0007 [ 98]: 6af7ead3aa61c786 +Block 0007 [ 99]: cdb8b00b8880bfb6 +Block 0007 [100]: b34176cd8343ba10 +Block 0007 [101]: b5a302876a9a9a2d +Block 0007 [102]: b766d763b9e23e61 +Block 0007 [103]: 3efd17036bb6ca0b +Block 0007 [104]: feeaae24f4c47ed1 +Block 0007 [105]: bebd53ac00c1c2a0 +Block 0007 [106]: babb3ef27e187adc +Block 0007 [107]: 981eeecfb50ac179 +Block 0007 [108]: 59188d843b69adfa +Block 0007 [109]: f4d2f0c370640543 +Block 0007 [110]: f725433a397d9b7e +Block 0007 [111]: 7505a3b205552a64 +Block 0007 [112]: a19ae22e984b2833 +Block 0007 [113]: fef5ba7a4a4de67d +Block 0007 [114]: 7dd338034b955296 +Block 0007 [115]: 60380e2b6e8b5651 +Block 0007 [116]: 1bf12c38cfaa4ccd +Block 0007 [117]: d8d9d8865e4da277 +Block 0007 [118]: 87ab45b1c1b2a472 +Block 0007 [119]: ac42c04e86a00b57 +Block 0007 [120]: f6f3afa0bfc7ee1a +Block 0007 [121]: a9d327166f257b5e +Block 0007 [122]: 8369e41dd8e7f1dc +Block 0007 [123]: b2541d86369b89c6 +Block 0007 [124]: 0c2e1060ad2cfb4d +Block 0007 [125]: f2d1ca5669641434 +Block 0007 [126]: a2f6616cc5520f24 +Block 0007 [127]: 1a5e4817b7ad354f +Block 0008 [ 0]: b9c7c2532b67d22b +Block 0008 [ 1]: 077ce77061aa2ff0 +Block 0008 [ 2]: 87adc5012fcc6d17 +Block 0008 [ 3]: 9d9bea1474b767e4 +Block 0008 [ 4]: cebe16566a953f30 +Block 0008 [ 5]: 9ad7069976e86c26 +Block 0008 [ 6]: ac1cd6d7c3be9fd5 +Block 0008 [ 7]: a0af6592942d74e6 +Block 0008 [ 8]: 62c54bb2125a6e98 +Block 0008 [ 9]: c98a354b32588b91 +Block 0008 [ 10]: f3b596fd6cf1e8bd +Block 0008 [ 11]: a8d5fb4cef80096c +Block 0008 [ 12]: 3d681d3f79cd27bc +Block 0008 [ 13]: df8fbea460aee1c4 +Block 0008 [ 14]: 5c75c3b402008252 +Block 0008 [ 15]: 580a6f636ab15434 +Block 0008 [ 16]: 208a7b74815ed1c3 +Block 0008 [ 17]: 1fb9abd67e26253e +Block 0008 [ 18]: e2b912f1b2e83e90 +Block 0008 [ 19]: e2e8a873d27242ab +Block 0008 [ 20]: 07f0cd5d2b520e6a +Block 0008 [ 21]: ad42bad9cbf997a7 +Block 0008 [ 22]: 833b071d6f74a63f +Block 0008 [ 23]: 48cef23c752c885e +Block 0008 [ 24]: 39f842734be8c8fd +Block 0008 [ 25]: 107782af44b5177a +Block 0008 [ 26]: 04439164e4963ec3 +Block 0008 [ 27]: 000c4a7af3d87aad +Block 0008 [ 28]: 1d853884ad7c35d1 +Block 0008 [ 29]: 7b898e1a009ae92b +Block 0008 [ 30]: 019a1f557de1c3b1 +Block 0008 [ 31]: 7587ba1dde02c979 +Block 0008 [ 32]: ac9a50a01d24a32f +Block 0008 [ 33]: d654c8db0fde8224 +Block 0008 [ 34]: da93df7fa2eb912a +Block 0008 [ 35]: 3d96657e8a3b7857 +Block 0008 [ 36]: f5c827e6634974f2 +Block 0008 [ 37]: e24f4f704a0d9606 +Block 0008 [ 38]: 4822ea21f1536e66 +Block 0008 [ 39]: 5f2d56075ce92649 +Block 0008 [ 40]: 7cf7365eec2c003e +Block 0008 [ 41]: d2072ae424d198a9 +Block 0008 [ 42]: bc0f44f4960bfeda +Block 0008 [ 43]: b9cf51e48deda197 +Block 0008 [ 44]: e1eeea36715a244b +Block 0008 [ 45]: c225441be8108083 +Block 0008 [ 46]: e31bce8554868b34 +Block 0008 [ 47]: c95ab4fc24c39772 +Block 0008 [ 48]: dec6166495e4ed32 +Block 0008 [ 49]: 9b923dbc7ca53682 +Block 0008 [ 50]: cbe461b15013d38a +Block 0008 [ 51]: 765cd1afecb13d26 +Block 0008 [ 52]: 6362c36a7d163513 +Block 0008 [ 53]: 72adc9a1f3a48bf8 +Block 0008 [ 54]: f5f68421f2f34166 +Block 0008 [ 55]: ea61e7179fe82d20 +Block 0008 [ 56]: 01662f9615ecdd3a +Block 0008 [ 57]: 17f61d1fc63ec481 +Block 0008 [ 58]: 0fe4fe28ef6821c5 +Block 0008 [ 59]: e681ba127361b647 +Block 0008 [ 60]: b191928ed0ed6e27 +Block 0008 [ 61]: ee67b65013c1a02e +Block 0008 [ 62]: 7376f8837774d67e +Block 0008 [ 63]: da60f51b24fa5db6 +Block 0008 [ 64]: da97f5dae1fb50bd +Block 0008 [ 65]: 3d897acc250ad297 +Block 0008 [ 66]: fc7eefc17b6e4d8f +Block 0008 [ 67]: d5a702a6e4bc4c77 +Block 0008 [ 68]: e680b62cfdbf407a +Block 0008 [ 69]: f01a14d0703e6713 +Block 0008 [ 70]: a50ab2984f01da78 +Block 0008 [ 71]: c81a6f7f9f0ff6b3 +Block 0008 [ 72]: 6af882b4197f35be +Block 0008 [ 73]: da153ae3f295e48d +Block 0008 [ 74]: 2144c2b8826db407 +Block 0008 [ 75]: 34a6080b38a6ffa8 +Block 0008 [ 76]: 4fba023c2961f20b +Block 0008 [ 77]: bf863224ec20a811 +Block 0008 [ 78]: 20c5125e6c39cfc9 +Block 0008 [ 79]: 0f5e74f9eb179b9a +Block 0008 [ 80]: 50dda8efcc4d1e77 +Block 0008 [ 81]: 6ea326dcb9006352 +Block 0008 [ 82]: 0389c30094ff80e0 +Block 0008 [ 83]: 7a7b9280301047f5 +Block 0008 [ 84]: c306819d8dc0c57b +Block 0008 [ 85]: 2c2d25d8a3b87926 +Block 0008 [ 86]: 3268d42a19fce381 +Block 0008 [ 87]: 65bb2ed5af98cb0d +Block 0008 [ 88]: 5db461cdec83a707 +Block 0008 [ 89]: 07eabe068ae1a576 +Block 0008 [ 90]: ca542c1db2c41368 +Block 0008 [ 91]: c0f6c2f19d388b31 +Block 0008 [ 92]: 67df7325f41a345e +Block 0008 [ 93]: 9f4a855eee802af2 +Block 0008 [ 94]: d308ac5aac84d191 +Block 0008 [ 95]: ab8e77fbb517080e +Block 0008 [ 96]: 050506ad63fc077d +Block 0008 [ 97]: ac2f98f6cf49f961 +Block 0008 [ 98]: 0998004b75a10f9f +Block 0008 [ 99]: 288a0cd29f0efb43 +Block 0008 [100]: 056f8ed8bad8f621 +Block 0008 [101]: 8f5774a97742bd65 +Block 0008 [102]: 8b8ab2e31359c1c5 +Block 0008 [103]: 852b384f17a635b2 +Block 0008 [104]: 2490e65cfacf7d22 +Block 0008 [105]: 2b15baa7e28aae41 +Block 0008 [106]: ed3c1c7ad7ac5646 +Block 0008 [107]: 24cf55a144ce1496 +Block 0008 [108]: a1c455ce9fe0dfb9 +Block 0008 [109]: f387f3a16d5cb9be +Block 0008 [110]: 8b48f8d6d65ea8d0 +Block 0008 [111]: 57eb999061ffc1da +Block 0008 [112]: 9163fc4867f0a9c5 +Block 0008 [113]: 6c0abdae81bdca0c +Block 0008 [114]: 38af67ebfaaf9b35 +Block 0008 [115]: 87b9ba3610e8c6b0 +Block 0008 [116]: 6b6f7fe3d7a42823 +Block 0008 [117]: cf7283ecbb972e62 +Block 0008 [118]: f006feb0d78c58e5 +Block 0008 [119]: 90bdf281b84ef947 +Block 0008 [120]: 8076948a0639e8dd +Block 0008 [121]: a911542a23ad3a85 +Block 0008 [122]: ae90a2f32e210a66 +Block 0008 [123]: bbced4d0627ead7f +Block 0008 [124]: 34c7c5f4f8da73f1 +Block 0008 [125]: 2029aae2afbc78dc +Block 0008 [126]: 7a1ab65f99792819 +Block 0008 [127]: 1c338df72ffafb0d +Block 0009 [ 0]: 90f63b41acfd2e3f +Block 0009 [ 1]: 2df1e2e603f91b0f +Block 0009 [ 2]: 5084f932783615e5 +Block 0009 [ 3]: a3710c3bfaf40ed0 +Block 0009 [ 4]: 13d4d81d5135df0f +Block 0009 [ 5]: 5dfeb4b8b74b2312 +Block 0009 [ 6]: 445e3a8c63053092 +Block 0009 [ 7]: b053c2140b29ad21 +Block 0009 [ 8]: 30a3517a523a9c9d +Block 0009 [ 9]: 3ee26153e2ef5731 +Block 0009 [ 10]: e3d9715f1c98d0d4 +Block 0009 [ 11]: 5cb14f3d7938ea32 +Block 0009 [ 12]: e0a2d15a050345df +Block 0009 [ 13]: b653b62615d0c5c0 +Block 0009 [ 14]: 0a13ebbb02227645 +Block 0009 [ 15]: fb27584fd730feae +Block 0009 [ 16]: 9de7027a352fc818 +Block 0009 [ 17]: 7ae68d9daadced50 +Block 0009 [ 18]: a7e012161f463b0f +Block 0009 [ 19]: d36322fbd9de50e8 +Block 0009 [ 20]: 33cee18a7b695d07 +Block 0009 [ 21]: a0a668e0d1079520 +Block 0009 [ 22]: 118beb776a2dab01 +Block 0009 [ 23]: cae16884e955da26 +Block 0009 [ 24]: f3ecd50fbb69b366 +Block 0009 [ 25]: f83690aecc4f84e1 +Block 0009 [ 26]: 2ebaeddbcdeb73ac +Block 0009 [ 27]: 361ec0b0acfffc17 +Block 0009 [ 28]: 5f49f0d5bf30edc9 +Block 0009 [ 29]: b07e1cfec13fdbcb +Block 0009 [ 30]: e9fb2ecc77c28262 +Block 0009 [ 31]: 7b47036980551052 +Block 0009 [ 32]: 2e804703942e3250 +Block 0009 [ 33]: 85c07d3d4bb3ceb3 +Block 0009 [ 34]: b310f1225e0bb382 +Block 0009 [ 35]: 9d13dfe845126a23 +Block 0009 [ 36]: 715274518ecb3edd +Block 0009 [ 37]: 7dbafe91429982f2 +Block 0009 [ 38]: bb103004f4b01569 +Block 0009 [ 39]: 37bebf44b2290105 +Block 0009 [ 40]: 3066f2347c59ae01 +Block 0009 [ 41]: 3622dad29d563c0d +Block 0009 [ 42]: af6200ec04529c2d +Block 0009 [ 43]: 6aaef2c134cc26cd +Block 0009 [ 44]: 15a1d9b32d636d66 +Block 0009 [ 45]: 66c47adabccb2e37 +Block 0009 [ 46]: 6b0a3a4f05bd126c +Block 0009 [ 47]: 2ef6b8d9fd0ac2c1 +Block 0009 [ 48]: 30d2dddb9c6fd9ae +Block 0009 [ 49]: 32b752b1d8d0f825 +Block 0009 [ 50]: 15f2273324185e41 +Block 0009 [ 51]: 2fc7cfaa0007f735 +Block 0009 [ 52]: 5bb0cb3e7a98dc42 +Block 0009 [ 53]: d4ba1caee83bd718 +Block 0009 [ 54]: d58bca8365593feb +Block 0009 [ 55]: 1caaa560f824f823 +Block 0009 [ 56]: 06d66004eef81ec8 +Block 0009 [ 57]: e62be588eb71c6e3 +Block 0009 [ 58]: 028af83ba978c75a +Block 0009 [ 59]: 455d36e5a57838c2 +Block 0009 [ 60]: 2271f285b39b417f +Block 0009 [ 61]: 19b9d33317ec5ce0 +Block 0009 [ 62]: 62a66573c00d9f1b +Block 0009 [ 63]: 1857e18294b8f3dd +Block 0009 [ 64]: 7926c357c015c014 +Block 0009 [ 65]: a57ad006cd650064 +Block 0009 [ 66]: f132763de2164979 +Block 0009 [ 67]: 1a6b884bf664c0ce +Block 0009 [ 68]: 4c7a58a1c301b62f +Block 0009 [ 69]: ca9ea9c9bb7ee4d5 +Block 0009 [ 70]: fda794c88609587f +Block 0009 [ 71]: 9113554d7df707b8 +Block 0009 [ 72]: dc15bdf224dd0352 +Block 0009 [ 73]: 6921c623544303e8 +Block 0009 [ 74]: b35a0a99d7d443ee +Block 0009 [ 75]: cc2a220c616c5049 +Block 0009 [ 76]: 7671e209b5318ee5 +Block 0009 [ 77]: a5e864ad143f8d39 +Block 0009 [ 78]: b06abe5900bffbba +Block 0009 [ 79]: 158d9421b8c0f9e4 +Block 0009 [ 80]: 2da152014cab559b +Block 0009 [ 81]: b8c17e04ad93e8f8 +Block 0009 [ 82]: 52eac4a8a411ba69 +Block 0009 [ 83]: 7a8f00a44b79615d +Block 0009 [ 84]: e1cdfaaeb0d07db2 +Block 0009 [ 85]: e78c69027b4403bd +Block 0009 [ 86]: 8d0ace0a9de358ef +Block 0009 [ 87]: 259e17069c1985ef +Block 0009 [ 88]: 2bbcf3de532871f8 +Block 0009 [ 89]: 0f0b5a3dc838ebed +Block 0009 [ 90]: 9039b06f29793ff1 +Block 0009 [ 91]: e3cdfa84c5e825b6 +Block 0009 [ 92]: 48d5c902a1d7445e +Block 0009 [ 93]: d323aabdadda5174 +Block 0009 [ 94]: bd286464b4d67c67 +Block 0009 [ 95]: b0c54c030c7afa1e +Block 0009 [ 96]: 3baa0122d9b14320 +Block 0009 [ 97]: aab0ea19711df1ba +Block 0009 [ 98]: 9469d4ce54a3fced +Block 0009 [ 99]: b1c72afddc74f4d0 +Block 0009 [100]: c29670cebb2988c1 +Block 0009 [101]: bf02191c60bfa561 +Block 0009 [102]: cf357b9034136a10 +Block 0009 [103]: c23d5df417f88814 +Block 0009 [104]: 83114ef35de168f2 +Block 0009 [105]: 058f7dc566f6f951 +Block 0009 [106]: b6ff38f14922933b +Block 0009 [107]: 0be1429882f0911e +Block 0009 [108]: f5efae1c14b31f47 +Block 0009 [109]: f8b4df8a360a01a5 +Block 0009 [110]: 43e67a6ccd951ba0 +Block 0009 [111]: ed95ded23d5b20b6 +Block 0009 [112]: 22b130913c60e481 +Block 0009 [113]: cb5a40e52e1e1104 +Block 0009 [114]: 7011efed737ae691 +Block 0009 [115]: 8a59bf8464200afb +Block 0009 [116]: b2d8f9050d97513c +Block 0009 [117]: d57f69030504491e +Block 0009 [118]: 2403848983113b0b +Block 0009 [119]: 22db081455729811 +Block 0009 [120]: d0db5aefd0419fd5 +Block 0009 [121]: e41070df7b2fd51b +Block 0009 [122]: 0fce0e7ffb3d7840 +Block 0009 [123]: 43fbaec79d79039a +Block 0009 [124]: 1d71fb266791c825 +Block 0009 [125]: aedf742f89a5b302 +Block 0009 [126]: 41c0f73c931dbe24 +Block 0009 [127]: 1c8cba64e64e34f2 +Block 0010 [ 0]: 03162a3d2fb31a25 +Block 0010 [ 1]: 95d94a611da86488 +Block 0010 [ 2]: a04524d51f43fbfe +Block 0010 [ 3]: b5fbf83fe35e1742 +Block 0010 [ 4]: 1702d9d1540b5e0e +Block 0010 [ 5]: a9cb1fc14db76b1c +Block 0010 [ 6]: 482da64056af648d +Block 0010 [ 7]: c5c6e169209aa2d1 +Block 0010 [ 8]: 5ff81bbb23cfa875 +Block 0010 [ 9]: 0a760c8cb3fff112 +Block 0010 [ 10]: a2af68f0049ca01d +Block 0010 [ 11]: 8b612089307f6546 +Block 0010 [ 12]: 7fc69ebacf75d649 +Block 0010 [ 13]: 72305888dff67bdc +Block 0010 [ 14]: 8801e7b401c32102 +Block 0010 [ 15]: 2222112df4517523 +Block 0010 [ 16]: 4ae3745fe43db23b +Block 0010 [ 17]: 0ae88e2a493b9a1f +Block 0010 [ 18]: a9cc47ea89a7bf49 +Block 0010 [ 19]: cbbe32c2f6b863b9 +Block 0010 [ 20]: 2f06cab4c8f4888f +Block 0010 [ 21]: 3b144622e62f7e5a +Block 0010 [ 22]: a859a6ec7da1e596 +Block 0010 [ 23]: 5fb8968a8d04c7ef +Block 0010 [ 24]: 5aaac0a73b6928e1 +Block 0010 [ 25]: 68cd864b58e58b1f +Block 0010 [ 26]: f0d9dfbf38e75ea1 +Block 0010 [ 27]: b92936821414ca29 +Block 0010 [ 28]: 19fc4f8375dbbd8e +Block 0010 [ 29]: ff51aec8104e45e6 +Block 0010 [ 30]: ad4518cca50dc645 +Block 0010 [ 31]: 42bbffddbf9af0b9 +Block 0010 [ 32]: b8568cf87046e23b +Block 0010 [ 33]: 28e5aca86ce23c97 +Block 0010 [ 34]: df69b5becf4306ee +Block 0010 [ 35]: a7e30b2fb0abf323 +Block 0010 [ 36]: f1e4b8b603ee5497 +Block 0010 [ 37]: 8937c677fb8ecdbd +Block 0010 [ 38]: f0cbce948a4fd7c5 +Block 0010 [ 39]: de19ec873867caf8 +Block 0010 [ 40]: 457f4d3348476483 +Block 0010 [ 41]: e19a51d9c78b78b3 +Block 0010 [ 42]: 97bebd6958586035 +Block 0010 [ 43]: 22a862ee6959c5d9 +Block 0010 [ 44]: eb6e508abb1c4e05 +Block 0010 [ 45]: 14234c65a136a786 +Block 0010 [ 46]: af12338c1ca6ad2e +Block 0010 [ 47]: 03d183bef690445e +Block 0010 [ 48]: 326ec9c641ea0ecf +Block 0010 [ 49]: ce787971555c98f4 +Block 0010 [ 50]: 0aa538a409c2cecc +Block 0010 [ 51]: e5ad409a55648f06 +Block 0010 [ 52]: 3b3c3e48dfbcf089 +Block 0010 [ 53]: 0be74cbe5ab3bda8 +Block 0010 [ 54]: 52c78e15e5b2adcd +Block 0010 [ 55]: a6acd621e94df26d +Block 0010 [ 56]: 19b3601aad02118b +Block 0010 [ 57]: ea86b5c50e080ee9 +Block 0010 [ 58]: e30b54d9ae2a555e +Block 0010 [ 59]: 0dd1c1abcaa0bf79 +Block 0010 [ 60]: da3dc56d55130978 +Block 0010 [ 61]: 87c97e8e8187d127 +Block 0010 [ 62]: 4720ff4be1fe0973 +Block 0010 [ 63]: 8ffa4974698469b8 +Block 0010 [ 64]: b74f20d179b01198 +Block 0010 [ 65]: 1cf9956c0b469776 +Block 0010 [ 66]: 0a4c0c1e2d98dd4e +Block 0010 [ 67]: 30ad0a024b0059dd +Block 0010 [ 68]: 0753951043b731c4 +Block 0010 [ 69]: c54d897d6a39226d +Block 0010 [ 70]: 7fce081f2122b0f0 +Block 0010 [ 71]: 5e003b5cbcc0aba4 +Block 0010 [ 72]: b584571f879d7593 +Block 0010 [ 73]: c0d22747a0873a89 +Block 0010 [ 74]: 096b1ab7cc3cd779 +Block 0010 [ 75]: 2104787f82456800 +Block 0010 [ 76]: 87ffeb72fb25ca92 +Block 0010 [ 77]: a6d45632612c75f9 +Block 0010 [ 78]: d84a222c579ad8a7 +Block 0010 [ 79]: 260e49a3917db014 +Block 0010 [ 80]: ddc70aef5f5f1289 +Block 0010 [ 81]: ce75db71f8307c39 +Block 0010 [ 82]: 988669c21d68b798 +Block 0010 [ 83]: bc253d44309e988d +Block 0010 [ 84]: 133b2d34fb862fb4 +Block 0010 [ 85]: 337fcded4be0ef7f +Block 0010 [ 86]: dba1a8dc49b65f56 +Block 0010 [ 87]: 70d4d2cc01651078 +Block 0010 [ 88]: 83d6646e37f6e2b6 +Block 0010 [ 89]: 27503f337a53e990 +Block 0010 [ 90]: 44aafbae9a1c5514 +Block 0010 [ 91]: 7539a36b19544cc7 +Block 0010 [ 92]: 5d0623d16de3b93e +Block 0010 [ 93]: 623e6fa8cf8dc502 +Block 0010 [ 94]: 084ac30cc5095a42 +Block 0010 [ 95]: bf6a2b9d4438871e +Block 0010 [ 96]: 6742f0a4e7b224f8 +Block 0010 [ 97]: 00e3179dc5145dfb +Block 0010 [ 98]: 3809bbecac742553 +Block 0010 [ 99]: 0de0efc339600332 +Block 0010 [100]: b86f4cda47b795f1 +Block 0010 [101]: ebb9583575c70f47 +Block 0010 [102]: 6601cf1f14855e00 +Block 0010 [103]: 54a19f47266bae3d +Block 0010 [104]: 2b30afe1ffff7bbe +Block 0010 [105]: e7186358f45ec150 +Block 0010 [106]: 2f3fc0f4ec78188b +Block 0010 [107]: dfb03a09423769a0 +Block 0010 [108]: c92df3af123f69a5 +Block 0010 [109]: f61f79e3b60ad2ae +Block 0010 [110]: 62155dab043e8e17 +Block 0010 [111]: 72b1b9b0ab48243a +Block 0010 [112]: 167a89196e5e3cb2 +Block 0010 [113]: 3f601eeec23df9d4 +Block 0010 [114]: 965d8400a3a092b2 +Block 0010 [115]: 611dc2ebbbb43701 +Block 0010 [116]: 27bb3105406300f7 +Block 0010 [117]: 435783800ec13a83 +Block 0010 [118]: eb7bb000b8de1dcc +Block 0010 [119]: 0b91a3a50360b857 +Block 0010 [120]: 431dc1068099cb7f +Block 0010 [121]: 63640dba63f66b02 +Block 0010 [122]: c175a55bb8195031 +Block 0010 [123]: cc39c58d7546d7e5 +Block 0010 [124]: 5130c4ed8e0d553e +Block 0010 [125]: 481a68ccccccb7ba +Block 0010 [126]: a31c3f8ea54032c0 +Block 0010 [127]: bc790a78ad15e281 +Block 0011 [ 0]: cd289066739699b7 +Block 0011 [ 1]: ef6f08e83b2279cc +Block 0011 [ 2]: bfe116223a67eac7 +Block 0011 [ 3]: 5ed9e51a2f3fa756 +Block 0011 [ 4]: d091e01529a66c68 +Block 0011 [ 5]: 6c00296717dc4db4 +Block 0011 [ 6]: 8e1a0e28f76b7b3a +Block 0011 [ 7]: ae25fb50b09ed824 +Block 0011 [ 8]: 93d73babe4143961 +Block 0011 [ 9]: 0da1f4d09c94370f +Block 0011 [ 10]: 30f77c7c452d7ce4 +Block 0011 [ 11]: 788024e40ab22171 +Block 0011 [ 12]: 26ccd25ef63a2f11 +Block 0011 [ 13]: d1c07c37e293eac0 +Block 0011 [ 14]: c0aa81d79ad9a8a6 +Block 0011 [ 15]: 6ec7214f553d8c69 +Block 0011 [ 16]: 893d6226e03c6bd1 +Block 0011 [ 17]: 962ed1779a6573bc +Block 0011 [ 18]: 7300c734c3c57e79 +Block 0011 [ 19]: 0834fd221492ebd2 +Block 0011 [ 20]: eab8cb092d44c594 +Block 0011 [ 21]: d85bc9e0605c61c9 +Block 0011 [ 22]: 0f10bcda5cc091d6 +Block 0011 [ 23]: 5dd2835a198b8ac3 +Block 0011 [ 24]: 414c25271a38a161 +Block 0011 [ 25]: 1d0c907d6caab7f5 +Block 0011 [ 26]: f6100897ed6eed1e +Block 0011 [ 27]: cd54dfefe46f6a86 +Block 0011 [ 28]: 9208e77496c06a3a +Block 0011 [ 29]: 296237fd89703010 +Block 0011 [ 30]: 03c11023e62bcf5f +Block 0011 [ 31]: 8851fb5b68678dcd +Block 0011 [ 32]: 40ff9e933fb5d757 +Block 0011 [ 33]: 18859d7030dd523c +Block 0011 [ 34]: c8cb6d5521ef7e7b +Block 0011 [ 35]: 88166acdfb046b45 +Block 0011 [ 36]: 2647d84ea607a84d +Block 0011 [ 37]: 9de18c9dcc05463a +Block 0011 [ 38]: 58e3a7730182d15c +Block 0011 [ 39]: b66213fb6a76642d +Block 0011 [ 40]: ec44e39215a9ac17 +Block 0011 [ 41]: 994c8fd34794739f +Block 0011 [ 42]: bc07c6d306bf6538 +Block 0011 [ 43]: 334dd171cfbf7e0d +Block 0011 [ 44]: 6ca8cf56b84e8066 +Block 0011 [ 45]: 269115bbc80e6bda +Block 0011 [ 46]: 7a58d538e5fd4fd7 +Block 0011 [ 47]: 10c69a27de84b7ce +Block 0011 [ 48]: 588946878009a2df +Block 0011 [ 49]: aab803acae234714 +Block 0011 [ 50]: 0db30430f182d18b +Block 0011 [ 51]: 374488ebafbd6f8d +Block 0011 [ 52]: 51bea2536583c798 +Block 0011 [ 53]: 5349f72cc9d30415 +Block 0011 [ 54]: 17e62cbd6fccce76 +Block 0011 [ 55]: f6ca270555d78986 +Block 0011 [ 56]: bd9f558733940b5b +Block 0011 [ 57]: 310c6473cf1f3eb5 +Block 0011 [ 58]: aaf61ebeb7b59d94 +Block 0011 [ 59]: c9ba9470ca8d94c5 +Block 0011 [ 60]: a7ee2542ad140b41 +Block 0011 [ 61]: 37d3fbf1ea5e25ce +Block 0011 [ 62]: df5c2e87a48fcf7a +Block 0011 [ 63]: 96ea0a40093da6bc +Block 0011 [ 64]: 1832e3d9420b9254 +Block 0011 [ 65]: 26d02a9dd32e1691 +Block 0011 [ 66]: 42ae4f33f51cbb54 +Block 0011 [ 67]: f8cd3a46c99d6bc8 +Block 0011 [ 68]: ae0e89024a1a7111 +Block 0011 [ 69]: 54127d1e8d5dd168 +Block 0011 [ 70]: 01fde931daffd7f4 +Block 0011 [ 71]: 350c6e16723fdd1c +Block 0011 [ 72]: df22c95585648b1a +Block 0011 [ 73]: e1f0024942478c76 +Block 0011 [ 74]: 70335cf2f4de5df2 +Block 0011 [ 75]: cdbe12e0abb4823c +Block 0011 [ 76]: fde59debfdbaac10 +Block 0011 [ 77]: 0bff220a8928c2dc +Block 0011 [ 78]: 0461fa55d303407a +Block 0011 [ 79]: 1634a41d6c9a5f1a +Block 0011 [ 80]: 6e6e4cd6db594d4f +Block 0011 [ 81]: dd18e467511a09ee +Block 0011 [ 82]: 9bdf9e3b17fd4342 +Block 0011 [ 83]: 8609696d927795b9 +Block 0011 [ 84]: d6d3fbf43587b11e +Block 0011 [ 85]: 6991a74f5a870d29 +Block 0011 [ 86]: d9cd608fee2e6721 +Block 0011 [ 87]: 6170131c10cc2374 +Block 0011 [ 88]: b0ab65f7594f8cc5 +Block 0011 [ 89]: d7185a9e216c4c1e +Block 0011 [ 90]: dde483d99f7e02a1 +Block 0011 [ 91]: e083b70b71230d2f +Block 0011 [ 92]: 1af2c5c2bd1e6dfe +Block 0011 [ 93]: c21b1fe7adc10d54 +Block 0011 [ 94]: bad581e4fbd50269 +Block 0011 [ 95]: 2d635c846e09fa3b +Block 0011 [ 96]: c093b53ede074fc2 +Block 0011 [ 97]: 41d4e984f8ad23d8 +Block 0011 [ 98]: 8a2bce31da109bce +Block 0011 [ 99]: 9725a483e6c34623 +Block 0011 [100]: 13089cdee7c3f5f2 +Block 0011 [101]: 3d4419b6807b8bfb +Block 0011 [102]: 2b609b191757fa48 +Block 0011 [103]: b171e65fdc7a27d9 +Block 0011 [104]: 69b8c8e5323e729b +Block 0011 [105]: 82357f1cfbdf2208 +Block 0011 [106]: e68036deb4d37145 +Block 0011 [107]: 6eecd0042852d038 +Block 0011 [108]: bb449cc49f3b4219 +Block 0011 [109]: 53e78414e3c3fa7f +Block 0011 [110]: f26d647fda1a1903 +Block 0011 [111]: c7788d7a05cb74d4 +Block 0011 [112]: f91960b42f1ea818 +Block 0011 [113]: 4fffd18f0deae9fb +Block 0011 [114]: 5ac77014671515e8 +Block 0011 [115]: d01d29217b293089 +Block 0011 [116]: c987835d3b2757b1 +Block 0011 [117]: 1b9d12290c75783b +Block 0011 [118]: 1b609eb672703181 +Block 0011 [119]: f0d7bed8ef5544fe +Block 0011 [120]: fd908aa2b4d52443 +Block 0011 [121]: 03ac288fa342e752 +Block 0011 [122]: 3e131ef012aef122 +Block 0011 [123]: acbb9427eb6c4095 +Block 0011 [124]: 65779c01fd20ff68 +Block 0011 [125]: ce2a60b7bbb1e01e +Block 0011 [126]: 5774720a372271f5 +Block 0011 [127]: ea30c4ce0712381b +Block 0012 [ 0]: 1c2a63bac7c154c1 +Block 0012 [ 1]: 42508ad075a16b3a +Block 0012 [ 2]: 791f280551d06f3e +Block 0012 [ 3]: 348a853e2533a525 +Block 0012 [ 4]: 3df830f0a023d57f +Block 0012 [ 5]: 009821b9b5259d3b +Block 0012 [ 6]: 0473a5252522f400 +Block 0012 [ 7]: a4cc17e35e27a5d3 +Block 0012 [ 8]: 3cec4c0926ed9a1d +Block 0012 [ 9]: 92e1ebf0f81b264d +Block 0012 [ 10]: 043aac8959c4f50e +Block 0012 [ 11]: 8216989f36994386 +Block 0012 [ 12]: 6c7a46ec0f593b4a +Block 0012 [ 13]: 615d9bc53c8aafd4 +Block 0012 [ 14]: e69671624cf39231 +Block 0012 [ 15]: de31127ba2643136 +Block 0012 [ 16]: 2645ccbeb9cc81e6 +Block 0012 [ 17]: 7872e0f680327659 +Block 0012 [ 18]: 9db25e0c68ddf8f9 +Block 0012 [ 19]: 6f27907812ee7d29 +Block 0012 [ 20]: b656b4af253ea7e0 +Block 0012 [ 21]: 2178637bdfcf46b3 +Block 0012 [ 22]: 1035f16577c1ba85 +Block 0012 [ 23]: 8cbeee81e32da9a2 +Block 0012 [ 24]: 475ae5e8a1a7fd03 +Block 0012 [ 25]: cd32872310c4cf5b +Block 0012 [ 26]: 1300b982803803d2 +Block 0012 [ 27]: 07f8ba5cd1184097 +Block 0012 [ 28]: 76d7fca7033112cf +Block 0012 [ 29]: acc28de2c427f438 +Block 0012 [ 30]: 6828aef30f3ef56e +Block 0012 [ 31]: 4da395dae574e44c +Block 0012 [ 32]: 827494c27d25fb51 +Block 0012 [ 33]: c9b5d7e7cc3eec16 +Block 0012 [ 34]: e068185515567a4c +Block 0012 [ 35]: ed2d26c2c0ea4970 +Block 0012 [ 36]: 1780aea878a1a49c +Block 0012 [ 37]: c04af2793f6c3d3a +Block 0012 [ 38]: 13494fccd3d844b8 +Block 0012 [ 39]: 1dbe9064ca0da769 +Block 0012 [ 40]: 6c4938243bf4e221 +Block 0012 [ 41]: 49aeca73f743075f +Block 0012 [ 42]: 684b4dc878fb5a2a +Block 0012 [ 43]: 4d8c36434eccb40d +Block 0012 [ 44]: a5ab9e20d5b38fd0 +Block 0012 [ 45]: b46dcc6a69e362c7 +Block 0012 [ 46]: 625077c4ab8f7e5b +Block 0012 [ 47]: 2f2b6451831786fa +Block 0012 [ 48]: 29bd2a796a638e84 +Block 0012 [ 49]: 9e5f8787ba2edfed +Block 0012 [ 50]: 16ec9a39d20182ac +Block 0012 [ 51]: abe01ec3ab8b71e9 +Block 0012 [ 52]: 145e8d1c67bf159f +Block 0012 [ 53]: 50a981c572813f38 +Block 0012 [ 54]: 87977fd04b380373 +Block 0012 [ 55]: 6e72ee7f8a5f195c +Block 0012 [ 56]: 55298c77c6435c8c +Block 0012 [ 57]: d1ea5008f239e8bc +Block 0012 [ 58]: 2d2b1d358bea1c27 +Block 0012 [ 59]: 9d293b3e70505688 +Block 0012 [ 60]: 1f57a815b02dd03f +Block 0012 [ 61]: 5bd99c9650ebed7d +Block 0012 [ 62]: be52d8ff71651ed3 +Block 0012 [ 63]: 35f3a2d423c0edc9 +Block 0012 [ 64]: d43ec0fbc3dbed4e +Block 0012 [ 65]: eb53cea0ec093139 +Block 0012 [ 66]: c200c6a5337f3c77 +Block 0012 [ 67]: c0e16f0190ef51f8 +Block 0012 [ 68]: 6c0c98019fa49148 +Block 0012 [ 69]: 15906d5647aaea5c +Block 0012 [ 70]: 712a775873db7424 +Block 0012 [ 71]: 2eac1964eabdcae4 +Block 0012 [ 72]: e71e32396b0ad27b +Block 0012 [ 73]: bef6323dbbc3818c +Block 0012 [ 74]: a9dd5cfdb6630790 +Block 0012 [ 75]: f064029a11a00acd +Block 0012 [ 76]: 696332e154302e67 +Block 0012 [ 77]: e2582460cd2816ef +Block 0012 [ 78]: e59950b4cfaa467d +Block 0012 [ 79]: 5991d99e5d1bacef +Block 0012 [ 80]: 16d23dd64096e1ed +Block 0012 [ 81]: 984eb0ed25ed2394 +Block 0012 [ 82]: 2f755244e1fc2598 +Block 0012 [ 83]: cb708970664b867c +Block 0012 [ 84]: 2ef6c4c2da67430d +Block 0012 [ 85]: d7c59053f2ba40b8 +Block 0012 [ 86]: df85654b59aaab8f +Block 0012 [ 87]: 6fc5e4f54a421593 +Block 0012 [ 88]: a8ba9d179663aa0e +Block 0012 [ 89]: c5da879ae66728a6 +Block 0012 [ 90]: e220fbd3cee2b2fe +Block 0012 [ 91]: f8b1b1e10aeec07b +Block 0012 [ 92]: d7175c31f480cd3e +Block 0012 [ 93]: 3a79224610a8642b +Block 0012 [ 94]: 270b4264c407cd08 +Block 0012 [ 95]: 738f6bb7f9abbb48 +Block 0012 [ 96]: e7a11c9a50808fce +Block 0012 [ 97]: 8663ca2db53e308f +Block 0012 [ 98]: 92bfd65af2b01a33 +Block 0012 [ 99]: 67205230b49bc74c +Block 0012 [100]: 5b4a4df4a812b2e3 +Block 0012 [101]: 8d1454ccca03b57f +Block 0012 [102]: 269156b9cadc71d9 +Block 0012 [103]: 4f9606502988716f +Block 0012 [104]: 5afbbff2b0d632d1 +Block 0012 [105]: c4ff98688046c0fb +Block 0012 [106]: df1d7b1d65f4c708 +Block 0012 [107]: a5ded21243ff9887 +Block 0012 [108]: c1ed83564bac320c +Block 0012 [109]: 87644000cf3b6328 +Block 0012 [110]: 03eddf451f4582ad +Block 0012 [111]: 4e99bfef863aefe3 +Block 0012 [112]: f4c5c9a281af9741 +Block 0012 [113]: f00a08a68c220c3c +Block 0012 [114]: b7c633c54afc5771 +Block 0012 [115]: ecde6342173832d9 +Block 0012 [116]: 25290781e957d9b5 +Block 0012 [117]: 1885d88000e584ad +Block 0012 [118]: 03b8e9a7748e4481 +Block 0012 [119]: f207874f5d14dbc3 +Block 0012 [120]: 39c8600104de16cd +Block 0012 [121]: 90c31d4b18011207 +Block 0012 [122]: 11c96fb4b8548f7a +Block 0012 [123]: 1548cae3f9a6fee0 +Block 0012 [124]: e46b97ed40e220d7 +Block 0012 [125]: 59cd30aea307e20f +Block 0012 [126]: 7e774fa0cf2e25e4 +Block 0012 [127]: 368f296b22ac7048 +Block 0013 [ 0]: 690c233779fcd1a5 +Block 0013 [ 1]: 164d19b92fd845e5 +Block 0013 [ 2]: 4a60478f329d03d1 +Block 0013 [ 3]: f6e7a353dc1d8509 +Block 0013 [ 4]: 8c6c26e9bce3999c +Block 0013 [ 5]: 73d1dba4d13a7fa1 +Block 0013 [ 6]: de62d56f692c8b88 +Block 0013 [ 7]: 4029a641b255e05b +Block 0013 [ 8]: e849c487d21a109d +Block 0013 [ 9]: b3752eb956b5a28c +Block 0013 [ 10]: 43b04c0f444343df +Block 0013 [ 11]: da8b8019e3177dcf +Block 0013 [ 12]: 4e4512fa70430746 +Block 0013 [ 13]: 68d6ceb3dbcf3abb +Block 0013 [ 14]: a54ff7cacea91ee1 +Block 0013 [ 15]: f6f265399b8e3390 +Block 0013 [ 16]: 77a159a100d38741 +Block 0013 [ 17]: d2b1cca843b0244b +Block 0013 [ 18]: 562e3eeba500ed4a +Block 0013 [ 19]: fb0f37bdcece65db +Block 0013 [ 20]: 698b10976e3f51d2 +Block 0013 [ 21]: 88d07ea552c403e6 +Block 0013 [ 22]: 65d5ab4c88a0c847 +Block 0013 [ 23]: e0c49b553e82b0c2 +Block 0013 [ 24]: a85aa2f95bed56f2 +Block 0013 [ 25]: 8920d955defe3c8a +Block 0013 [ 26]: d62b529a0274d319 +Block 0013 [ 27]: fee24b797049ae16 +Block 0013 [ 28]: 16710bb090bc2451 +Block 0013 [ 29]: 41a2a3df035869da +Block 0013 [ 30]: 2e8a999878b3c0be +Block 0013 [ 31]: afa17424460f43a3 +Block 0013 [ 32]: 3ab13cd5fe21b763 +Block 0013 [ 33]: 6409ae0b067e5573 +Block 0013 [ 34]: 54add50ef70c3e80 +Block 0013 [ 35]: 778cae26c9dbabf1 +Block 0013 [ 36]: 1ad4e56c961eeeed +Block 0013 [ 37]: c74678ca700e7048 +Block 0013 [ 38]: a5014f9ba1895d62 +Block 0013 [ 39]: d5909f7f417177a1 +Block 0013 [ 40]: eba69c817c3aefb5 +Block 0013 [ 41]: 63d57343f3fabf6f +Block 0013 [ 42]: 0a2b03f5fbf2010c +Block 0013 [ 43]: c5ba82905af74eda +Block 0013 [ 44]: 983ce80682e205ea +Block 0013 [ 45]: 7b89eb6563073133 +Block 0013 [ 46]: 030427ac1d91dc06 +Block 0013 [ 47]: 2e5454dd24ed6d24 +Block 0013 [ 48]: 48c692282390170c +Block 0013 [ 49]: 6182b733e5fcda88 +Block 0013 [ 50]: 29be37f56c231a16 +Block 0013 [ 51]: 9863267f76bb14ac +Block 0013 [ 52]: dff4f3f9230b833f +Block 0013 [ 53]: f10677d82116f55e +Block 0013 [ 54]: c6e3bcdc02c40157 +Block 0013 [ 55]: 0e356fa761c71a5f +Block 0013 [ 56]: 267b619a0368396b +Block 0013 [ 57]: 323b19403de6fa35 +Block 0013 [ 58]: 4b4927454270439c +Block 0013 [ 59]: 56b4024ff5fa70b1 +Block 0013 [ 60]: 78aa7bf906495eea +Block 0013 [ 61]: 981cb071b1d932bb +Block 0013 [ 62]: 0119f99b266444ad +Block 0013 [ 63]: a63f7e923977a02d +Block 0013 [ 64]: ff44a639740dc6e0 +Block 0013 [ 65]: 6e78313d8ee1b7f0 +Block 0013 [ 66]: ebd4e567ff5d0bd4 +Block 0013 [ 67]: 04fc7e127f1363d5 +Block 0013 [ 68]: 9f854557dc7cdc2a +Block 0013 [ 69]: 123a85765004f761 +Block 0013 [ 70]: 25987189fdc1c199 +Block 0013 [ 71]: 7645eec6d56596eb +Block 0013 [ 72]: de3d640e12f4a2e4 +Block 0013 [ 73]: a7088a305483aafa +Block 0013 [ 74]: 69f5c4f93a37c42c +Block 0013 [ 75]: 5a86c47ac539bfcd +Block 0013 [ 76]: 7cf4ce6c9207945c +Block 0013 [ 77]: 0cf8a991245eda31 +Block 0013 [ 78]: bacb196f26dba8ec +Block 0013 [ 79]: 1990ff657d9e0653 +Block 0013 [ 80]: 5eef63b1d0fb79e9 +Block 0013 [ 81]: 693d7795607687c5 +Block 0013 [ 82]: 2f0e3e3df3258209 +Block 0013 [ 83]: e5821367c959a292 +Block 0013 [ 84]: bc6eb31a2247bc03 +Block 0013 [ 85]: 6c82f7f810850d1b +Block 0013 [ 86]: 465322d01d969ea6 +Block 0013 [ 87]: 0dd07730117537b3 +Block 0013 [ 88]: 5d99807522c99cfa +Block 0013 [ 89]: c22a3ee8bf8419e6 +Block 0013 [ 90]: 4751bb03660f437b +Block 0013 [ 91]: 951e7871e44de80f +Block 0013 [ 92]: 8f4b787a3bc1a4ac +Block 0013 [ 93]: 437f765c7c45ac61 +Block 0013 [ 94]: d6283c5b3a90ad12 +Block 0013 [ 95]: 54099af4833a840c +Block 0013 [ 96]: 89ae56f7a1608fe9 +Block 0013 [ 97]: 680a073db29a30ac +Block 0013 [ 98]: f4518f7e14a2fbf4 +Block 0013 [ 99]: 94858d8127d3fbf0 +Block 0013 [100]: 9964c0749ef69904 +Block 0013 [101]: dfbb7bf3bcc80371 +Block 0013 [102]: 2b177b792a857f68 +Block 0013 [103]: fb7575b39037ef56 +Block 0013 [104]: b1047efa3fcad858 +Block 0013 [105]: c53c4c7aad92dfad +Block 0013 [106]: a68bd64b9f9a8e32 +Block 0013 [107]: a1ffa9474cd19e6d +Block 0013 [108]: 51f0cf2b00ef294b +Block 0013 [109]: ad54422b421ba9b7 +Block 0013 [110]: b33b2166933e82cf +Block 0013 [111]: d998e290753b0c2e +Block 0013 [112]: d5b55ce657f61ff4 +Block 0013 [113]: 1a2ff90cc7ac584e +Block 0013 [114]: e85ee2492584f982 +Block 0013 [115]: 9c1cf32314ee8aeb +Block 0013 [116]: f1fa688c871d1bf9 +Block 0013 [117]: 169d32554781beaa +Block 0013 [118]: 523aed8c7d307c93 +Block 0013 [119]: 2b7b881cb3c586b7 +Block 0013 [120]: 394a238db0bf1022 +Block 0013 [121]: d89139f29d14d6db +Block 0013 [122]: 71ef3f099cd3352f +Block 0013 [123]: b420e528391858bf +Block 0013 [124]: 6ebce924b5f8b524 +Block 0013 [125]: 8df56ab35b4dc343 +Block 0013 [126]: fe60f549720c38e5 +Block 0013 [127]: 52b2844a8ad07c19 +Block 0014 [ 0]: 42f9a2216ea60ceb +Block 0014 [ 1]: f4be235f9165be42 +Block 0014 [ 2]: e789f9d5fa754b79 +Block 0014 [ 3]: 022854d55d727111 +Block 0014 [ 4]: 812eb2f323f74d88 +Block 0014 [ 5]: fbcf65d73d76eaac +Block 0014 [ 6]: a4fac1040fb1be3c +Block 0014 [ 7]: 9a540a2bc0a1aa09 +Block 0014 [ 8]: fa65ffe434f56fb5 +Block 0014 [ 9]: 4b065f486f802cb1 +Block 0014 [ 10]: 5879b735d57c9adb +Block 0014 [ 11]: 7b7917daf59c28d7 +Block 0014 [ 12]: 17200f95067efd16 +Block 0014 [ 13]: 5d205d348a48db4d +Block 0014 [ 14]: 42100e93335dca01 +Block 0014 [ 15]: 69618baff0475d71 +Block 0014 [ 16]: ead862e0e6687f0d +Block 0014 [ 17]: 653c798b5dc34141 +Block 0014 [ 18]: c53378cd5de69d1b +Block 0014 [ 19]: a86b278f7d653ce2 +Block 0014 [ 20]: 5ba4121570a62068 +Block 0014 [ 21]: ae1ef5ab3f8b769b +Block 0014 [ 22]: 0227f65cc1231b76 +Block 0014 [ 23]: a8e28a1702dbb594 +Block 0014 [ 24]: 03e66ff4e4a2b18f +Block 0014 [ 25]: 101a43cad5c5fe60 +Block 0014 [ 26]: 98eb2eb0a56028a0 +Block 0014 [ 27]: 5877b7de89886613 +Block 0014 [ 28]: cfd4e8cca45b1790 +Block 0014 [ 29]: e4b35e3874b9e876 +Block 0014 [ 30]: 14541160c6b3ee02 +Block 0014 [ 31]: dd81bacea364da1d +Block 0014 [ 32]: 36fb0d5cbbb8dae3 +Block 0014 [ 33]: a5e78dbb96f499fe +Block 0014 [ 34]: cb9e478672e4fca6 +Block 0014 [ 35]: 2fb70e58b6f44554 +Block 0014 [ 36]: 229f985536cfbdc5 +Block 0014 [ 37]: 4777ce4b21b955dc +Block 0014 [ 38]: 35bedadfd4af9b10 +Block 0014 [ 39]: f0eb52f55c675a29 +Block 0014 [ 40]: 6ff3abb4b0918527 +Block 0014 [ 41]: a5fca11483c388bc +Block 0014 [ 42]: d253b0c295c6fbf8 +Block 0014 [ 43]: df39a28a23b4f038 +Block 0014 [ 44]: d163372bfb6af489 +Block 0014 [ 45]: 1e1804bf5afe3fa8 +Block 0014 [ 46]: dab4f6f07c2bebf2 +Block 0014 [ 47]: 07b8936bc3533670 +Block 0014 [ 48]: c70835706442a1a7 +Block 0014 [ 49]: c60f346aa6eca9ad +Block 0014 [ 50]: 97a0ce931e61716f +Block 0014 [ 51]: 60a2ba4b96edb79c +Block 0014 [ 52]: b055188f8aba284a +Block 0014 [ 53]: a6043aa3ad7bec78 +Block 0014 [ 54]: f4c35bfce3ace67d +Block 0014 [ 55]: 319ccada848cdee2 +Block 0014 [ 56]: d0795590ea34a8b8 +Block 0014 [ 57]: e87a7307f237f419 +Block 0014 [ 58]: ae12cee379d66302 +Block 0014 [ 59]: 86b85724e1286c79 +Block 0014 [ 60]: 7894b054641720aa +Block 0014 [ 61]: 49e32fbda0747886 +Block 0014 [ 62]: a16876726931b8c0 +Block 0014 [ 63]: 95a87d1556254491 +Block 0014 [ 64]: 1b7359bdd4645944 +Block 0014 [ 65]: f177fc737aebc782 +Block 0014 [ 66]: 9e72721109423695 +Block 0014 [ 67]: b5fccf24cb0ea7d3 +Block 0014 [ 68]: 80a6b33ddc9b5720 +Block 0014 [ 69]: 9e2e62146504301b +Block 0014 [ 70]: 18f348c546a48b21 +Block 0014 [ 71]: e9c4c72be6bdbcc2 +Block 0014 [ 72]: ff301b1c853cd28f +Block 0014 [ 73]: b86477b7bfd084c2 +Block 0014 [ 74]: c74db1d1144db45b +Block 0014 [ 75]: 1555cafa0c364252 +Block 0014 [ 76]: 7282bf96c973f185 +Block 0014 [ 77]: 16fcda0df22d0d0a +Block 0014 [ 78]: bde4d5ba20822c22 +Block 0014 [ 79]: c27d9a170dfa7344 +Block 0014 [ 80]: bd663b25e9bd3e90 +Block 0014 [ 81]: 06995c1ac6b3f2c6 +Block 0014 [ 82]: 0ff746c47c5feafa +Block 0014 [ 83]: 370f75aa1c2aaacf +Block 0014 [ 84]: 1de1a575bba86945 +Block 0014 [ 85]: 9a1954a4c45cc63e +Block 0014 [ 86]: a2e4824e3e170256 +Block 0014 [ 87]: 1d435c8cf13aa8f5 +Block 0014 [ 88]: 47773d9a5c4e3b77 +Block 0014 [ 89]: b97ed8dc09f6d1fd +Block 0014 [ 90]: 2492b160c74c94b6 +Block 0014 [ 91]: 377877a2f5d232a7 +Block 0014 [ 92]: 19813e25319f5d5b +Block 0014 [ 93]: 2981dcd02bd36023 +Block 0014 [ 94]: 9c51ced5edc2f88a +Block 0014 [ 95]: bdfcc0f92340b53b +Block 0014 [ 96]: ca3f8d8ea0028190 +Block 0014 [ 97]: 6083dd598898d0df +Block 0014 [ 98]: b7c2764a629af855 +Block 0014 [ 99]: cb7b51f275a23764 +Block 0014 [100]: 0999e69569ff8654 +Block 0014 [101]: 75d419e7e4034cf1 +Block 0014 [102]: 9926c163ccf6fbc0 +Block 0014 [103]: 6f6fbfbc4634b106 +Block 0014 [104]: 99aab02824ac6428 +Block 0014 [105]: 755070d1503322d0 +Block 0014 [106]: 794e25994c009ffd +Block 0014 [107]: 86c42e4262d68dab +Block 0014 [108]: 36a474da4489ddbb +Block 0014 [109]: ea205d9048c07756 +Block 0014 [110]: b3b00cb88461299c +Block 0014 [111]: abd0616d54bf1f27 +Block 0014 [112]: 298326ff8b16010b +Block 0014 [113]: 736d092013ecf8e7 +Block 0014 [114]: c80706fa402b55cc +Block 0014 [115]: 643f6ca3cd72bb76 +Block 0014 [116]: 1e43fab3e955c081 +Block 0014 [117]: f81da96e09233646 +Block 0014 [118]: 63db4670f362122e +Block 0014 [119]: ffe8fa6827833188 +Block 0014 [120]: a19d0f8c1f840a05 +Block 0014 [121]: a330e308ccb789fe +Block 0014 [122]: 4af172102042a852 +Block 0014 [123]: 78fe11656db11997 +Block 0014 [124]: ffd3f265c3bcad3b +Block 0014 [125]: 40939ffec182cb0f +Block 0014 [126]: f2e10f47cfed9d45 +Block 0014 [127]: 0db682170c37d732 +Block 0015 [ 0]: 5c60ebf343964379 +Block 0015 [ 1]: c844eb5bb2f5d7ee +Block 0015 [ 2]: 8c18a6010c78383f +Block 0015 [ 3]: fc52029ab145346b +Block 0015 [ 4]: 05f78944f5618755 +Block 0015 [ 5]: 6833faa1b7925ec6 +Block 0015 [ 6]: 142dcb8cdbcf985f +Block 0015 [ 7]: 1eec4fe13e3eb436 +Block 0015 [ 8]: 093270287ff6c154 +Block 0015 [ 9]: af0492e23c6948c4 +Block 0015 [ 10]: 2d6209d2e3bb36c9 +Block 0015 [ 11]: 5dc0d600021d81cb +Block 0015 [ 12]: 2efc1d348d9dfd50 +Block 0015 [ 13]: 80d5311f1b323f28 +Block 0015 [ 14]: 65b6b8c85e49651d +Block 0015 [ 15]: dd83f1aaa29f2b5c +Block 0015 [ 16]: dd0caea719886d54 +Block 0015 [ 17]: bd0737cfb15066fa +Block 0015 [ 18]: 4ee7af30812dba7a +Block 0015 [ 19]: 592e32c4663cf43b +Block 0015 [ 20]: 8115137c067d43c0 +Block 0015 [ 21]: 2bc8f96f7bd33335 +Block 0015 [ 22]: b42162e04c360f71 +Block 0015 [ 23]: 4c93a2bbbefa40c1 +Block 0015 [ 24]: b670eef90f8a3b4b +Block 0015 [ 25]: 2f0133f2465e20d9 +Block 0015 [ 26]: 6f5b35c7183bbb58 +Block 0015 [ 27]: 54863424d1104479 +Block 0015 [ 28]: c110593d9561e19e +Block 0015 [ 29]: 85915bdf108cfb8d +Block 0015 [ 30]: 564c2c9d12a17c32 +Block 0015 [ 31]: ae51b6cd7d8dba85 +Block 0015 [ 32]: 86801cbdd9edf13c +Block 0015 [ 33]: 4627159cacf299f6 +Block 0015 [ 34]: fcec5f216cbc609b +Block 0015 [ 35]: 92da6375678dca6d +Block 0015 [ 36]: 23237b4aca3e3087 +Block 0015 [ 37]: 778ced58723f4db7 +Block 0015 [ 38]: f8b8ac5c0c11a6db +Block 0015 [ 39]: ca5a9cfa51fb092b +Block 0015 [ 40]: ad9c36454a7b4555 +Block 0015 [ 41]: c2ec64eaed0476e2 +Block 0015 [ 42]: 9e42f0a6d2ecedf4 +Block 0015 [ 43]: 5ec5baacc56984a4 +Block 0015 [ 44]: 48cc00c537ad73f2 +Block 0015 [ 45]: 0e1950a5b40721b5 +Block 0015 [ 46]: 2219b901e1de2332 +Block 0015 [ 47]: 54da4a3f5776bb19 +Block 0015 [ 48]: 605cd0995671b863 +Block 0015 [ 49]: 6f565b0337c7940a +Block 0015 [ 50]: b6f7c44fa6ddde1c +Block 0015 [ 51]: b9bdbd9710ee5e3d +Block 0015 [ 52]: 233f90f4ae9a2661 +Block 0015 [ 53]: 0ad62c6866e21f0e +Block 0015 [ 54]: 21f27ed906fda36b +Block 0015 [ 55]: 8f1a7c3d6e92ab09 +Block 0015 [ 56]: 9b9188cec8960b71 +Block 0015 [ 57]: e81af96c30aa9ea0 +Block 0015 [ 58]: e10ba0b8ce762d3b +Block 0015 [ 59]: f6f1842458770d66 +Block 0015 [ 60]: b0ea72e76bb8b2c0 +Block 0015 [ 61]: 48735c0b7a684c9b +Block 0015 [ 62]: 3700939516de0b9f +Block 0015 [ 63]: 99ffb1b3c77a5911 +Block 0015 [ 64]: 3b0bea89f2d75973 +Block 0015 [ 65]: 7284d5a6e4ca73fa +Block 0015 [ 66]: fc2980004fa1d6fd +Block 0015 [ 67]: 85204a0328b701df +Block 0015 [ 68]: 951945bef9422e4b +Block 0015 [ 69]: 27fd0976cbd1aae8 +Block 0015 [ 70]: d6884a6d8c94694f +Block 0015 [ 71]: 097442b7e5f413b1 +Block 0015 [ 72]: 1c8239a020d0d2ed +Block 0015 [ 73]: 26e32bdf5c5f287a +Block 0015 [ 74]: 8eec296926a32040 +Block 0015 [ 75]: 40925c65e41f704c +Block 0015 [ 76]: 6dfc1b6036ac83f1 +Block 0015 [ 77]: 4372772306842f15 +Block 0015 [ 78]: 85d08be9df2914df +Block 0015 [ 79]: b6a217b37bd41e7c +Block 0015 [ 80]: 0c179dd3a6f1d8c3 +Block 0015 [ 81]: 83acfb8c99e2915f +Block 0015 [ 82]: f67b69c627380be8 +Block 0015 [ 83]: eb83f410554ab2d4 +Block 0015 [ 84]: a9b1da448e9c0e18 +Block 0015 [ 85]: c62a104866a6899f +Block 0015 [ 86]: b512109239c786e9 +Block 0015 [ 87]: d3d30893c8ef2d5b +Block 0015 [ 88]: 185fb60f6d5b6fd0 +Block 0015 [ 89]: 20b710b22ec06809 +Block 0015 [ 90]: 9ea3919f273b086c +Block 0015 [ 91]: fb4d1bba70e26bc3 +Block 0015 [ 92]: e237ab18824c0f9e +Block 0015 [ 93]: 4fa18dbf16693282 +Block 0015 [ 94]: 5f515456d7cf884b +Block 0015 [ 95]: dd01c2e260558f84 +Block 0015 [ 96]: b851d646c4273226 +Block 0015 [ 97]: 153ff9a1c2fad967 +Block 0015 [ 98]: efb1a8348b2034c0 +Block 0015 [ 99]: 39321e6706e1ca32 +Block 0015 [100]: 71f73d91cd992df2 +Block 0015 [101]: 47b532cfb7d073be +Block 0015 [102]: f9dabbfb4e3dd13f +Block 0015 [103]: b70c10269560f42a +Block 0015 [104]: 5980fa7986b2174a +Block 0015 [105]: bd9ecb17969cb07d +Block 0015 [106]: f05da06e851b53bc +Block 0015 [107]: 433e3504d76870af +Block 0015 [108]: cb5a0c78eab9e338 +Block 0015 [109]: e652db008f460a5d +Block 0015 [110]: cbbbc86cb666048b +Block 0015 [111]: 81ff315c2fc6c975 +Block 0015 [112]: 8399e727faa22a09 +Block 0015 [113]: eb0b9969885f2309 +Block 0015 [114]: 3b327c3fe4446450 +Block 0015 [115]: b3c0c30bd7a48a78 +Block 0015 [116]: 33d547fef50f583a +Block 0015 [117]: 9862ae613d5f6a05 +Block 0015 [118]: f77ba6cef1eef1b9 +Block 0015 [119]: 74ecf3320c1d18f5 +Block 0015 [120]: 04f27b3d8db404fa +Block 0015 [121]: e7c42ef35dbe1e69 +Block 0015 [122]: 9f722564ad1f94ca +Block 0015 [123]: 3808033cc8a6264a +Block 0015 [124]: 1948446042580abc +Block 0015 [125]: 025eb81c6f5bd44c +Block 0015 [126]: d2cdfcab1c7cc163 +Block 0015 [127]: deb4ea7420a60a38 +Block 0016 [ 0]: 8ef71222e25e33a7 +Block 0016 [ 1]: 5b788bacd4a161d2 +Block 0016 [ 2]: 4c085a5d4b387162 +Block 0016 [ 3]: fb00f740c0bff138 +Block 0016 [ 4]: 45f63e1874e69080 +Block 0016 [ 5]: 78a2f2d260a54dde +Block 0016 [ 6]: 8cb461cb1355137a +Block 0016 [ 7]: 7b7e3cd55639f758 +Block 0016 [ 8]: ba7f598ebc7d0a24 +Block 0016 [ 9]: 9cd3d7fa9b61dfba +Block 0016 [ 10]: 0f4bfda84f8bdbae +Block 0016 [ 11]: 43d53060d71491f4 +Block 0016 [ 12]: 7b4a2d3825164639 +Block 0016 [ 13]: 509a1b3858bd2bed +Block 0016 [ 14]: 792e1edbc1ea84b1 +Block 0016 [ 15]: be636d230f55cf24 +Block 0016 [ 16]: f4ce5fe0d5f89ea6 +Block 0016 [ 17]: d3bec22193b9fa85 +Block 0016 [ 18]: c50401a757676486 +Block 0016 [ 19]: 3801152878206e10 +Block 0016 [ 20]: a6f32c77460a68ca +Block 0016 [ 21]: 5be9be1aa491771f +Block 0016 [ 22]: b8d681e557a6b464 +Block 0016 [ 23]: b3d7a221ff57bdbd +Block 0016 [ 24]: 88c49fc0e90d2982 +Block 0016 [ 25]: ff22dc20add2096e +Block 0016 [ 26]: 6688f9c931036c83 +Block 0016 [ 27]: fbf4a2f65116f128 +Block 0016 [ 28]: 708dfca5957923bd +Block 0016 [ 29]: 5cab6655f730ead8 +Block 0016 [ 30]: 652c868b4e0973c6 +Block 0016 [ 31]: 7faf39e6e68db8f4 +Block 0016 [ 32]: 5ed3b7e45168776e +Block 0016 [ 33]: 3233f0afc73f8fc9 +Block 0016 [ 34]: 4f61d181ed54920e +Block 0016 [ 35]: 45af51628268a386 +Block 0016 [ 36]: b81809f7405da7c2 +Block 0016 [ 37]: 7f04e166e18f898e +Block 0016 [ 38]: 9461d15e80360ddf +Block 0016 [ 39]: bf0279fe577f4a56 +Block 0016 [ 40]: 68eebc0b0f81a4f6 +Block 0016 [ 41]: 16a7d9859c25a3b8 +Block 0016 [ 42]: aad09c771d7c5046 +Block 0016 [ 43]: 2e83257346b21f51 +Block 0016 [ 44]: 212616f504644c05 +Block 0016 [ 45]: 25b6ee612334f735 +Block 0016 [ 46]: d0f8fc39fabf5258 +Block 0016 [ 47]: c231ff70ac3bb48c +Block 0016 [ 48]: e5a4d9bdc0325012 +Block 0016 [ 49]: 7b3fc5655f613956 +Block 0016 [ 50]: ec5b647ca9a4b333 +Block 0016 [ 51]: 8975b8bbfa7b5b64 +Block 0016 [ 52]: c9afd74a277d31f9 +Block 0016 [ 53]: d6109dfb79b3199e +Block 0016 [ 54]: 503a79cbe90d1000 +Block 0016 [ 55]: 6b96e1111aa5b4a6 +Block 0016 [ 56]: 62e48b5640dc72bb +Block 0016 [ 57]: 0323e21f38eb7a85 +Block 0016 [ 58]: c2b3329aa089ea80 +Block 0016 [ 59]: 7e6de45346324c73 +Block 0016 [ 60]: 30d34ff4baf1ad6b +Block 0016 [ 61]: e70b1ecb101c7a8f +Block 0016 [ 62]: f6f4c4815d5c6443 +Block 0016 [ 63]: 84ddf532213ee089 +Block 0016 [ 64]: 3383dc784306f5c5 +Block 0016 [ 65]: d410866c9820fb80 +Block 0016 [ 66]: 9ad1a811918ae747 +Block 0016 [ 67]: 99cccd5f357e9e45 +Block 0016 [ 68]: d4bcab0da4749c7f +Block 0016 [ 69]: ca36322b45b520d3 +Block 0016 [ 70]: 9bbe0827e6440146 +Block 0016 [ 71]: 5ea0191d0bd9d6bc +Block 0016 [ 72]: b6b1d7c9f8b3b365 +Block 0016 [ 73]: 7b14bfce8ce14778 +Block 0016 [ 74]: 15733305ad30a8b0 +Block 0016 [ 75]: 3b3b8bbef4e20874 +Block 0016 [ 76]: 007b2c2770bbce68 +Block 0016 [ 77]: 9580dbbc49161c87 +Block 0016 [ 78]: e996e4a0fb606ff5 +Block 0016 [ 79]: 8166385b61c551c9 +Block 0016 [ 80]: 905b3a4586c9628f +Block 0016 [ 81]: 6c3538319960701a +Block 0016 [ 82]: 726852503e929623 +Block 0016 [ 83]: 0d1370de52be24ca +Block 0016 [ 84]: 137c4cd293095677 +Block 0016 [ 85]: e1a533c284ade63e +Block 0016 [ 86]: aa03ff8f2d48e0e8 +Block 0016 [ 87]: 8070a0ca0533d5e9 +Block 0016 [ 88]: de4f9b80be79236b +Block 0016 [ 89]: f61dd73e6ff6cb28 +Block 0016 [ 90]: b6d6b411c7d73e90 +Block 0016 [ 91]: 02675d6dda93734b +Block 0016 [ 92]: 52b5fe33ff0edf12 +Block 0016 [ 93]: 139bc3df49f3b211 +Block 0016 [ 94]: cfe9120dd35237a8 +Block 0016 [ 95]: f7d4041b2c512498 +Block 0016 [ 96]: ec5e66bb264d3022 +Block 0016 [ 97]: 57417ff639782925 +Block 0016 [ 98]: 7593670d37a496db +Block 0016 [ 99]: feab9e35be512f28 +Block 0016 [100]: cb506d5764fed86b +Block 0016 [101]: 6aec183ee8e3745f +Block 0016 [102]: ec2dd19767a5734d +Block 0016 [103]: 7b6358cc3b32a264 +Block 0016 [104]: d04380da36957c7f +Block 0016 [105]: 9ba5769ddfaa6a3d +Block 0016 [106]: 3aeb202ee3f852fd +Block 0016 [107]: 6ad40cabdb80aaf4 +Block 0016 [108]: a6c3dac45ee8a5c1 +Block 0016 [109]: e9cb6215b9882b7c +Block 0016 [110]: 625f58ff78a5786e +Block 0016 [111]: 2cef23f4a3b5387e +Block 0016 [112]: 1aba2156c5cc14ed +Block 0016 [113]: 70778bb6caf8e015 +Block 0016 [114]: b79817079fa67733 +Block 0016 [115]: 2040c00a18883d6f +Block 0016 [116]: 412e281fbfde7312 +Block 0016 [117]: 130fb0debdad3f8e +Block 0016 [118]: ce30ca55fc0c9a38 +Block 0016 [119]: 45010a54f0da2809 +Block 0016 [120]: b1f29bcd5a661b0d +Block 0016 [121]: f5461d4639986c9f +Block 0016 [122]: 79839bdaa491069e +Block 0016 [123]: eb8c090fbf0d2957 +Block 0016 [124]: f7a83b1156b6ffe4 +Block 0016 [125]: aaed1d193830d24e +Block 0016 [126]: b224c4377f85bc52 +Block 0016 [127]: 33f5586f84573cea +Block 0017 [ 0]: 02fe7e853ebe0d0f +Block 0017 [ 1]: e67e2c7ef9905707 +Block 0017 [ 2]: bd081291079d349f +Block 0017 [ 3]: ce214e31c447258f +Block 0017 [ 4]: 69f77c776aef74ac +Block 0017 [ 5]: 3ef5b6d0c3112146 +Block 0017 [ 6]: 09e582516b1c1946 +Block 0017 [ 7]: 5435e0c7d1062de4 +Block 0017 [ 8]: df4b0f596e780cc0 +Block 0017 [ 9]: 0b0d0a7707db157a +Block 0017 [ 10]: ca853fdaf1f30538 +Block 0017 [ 11]: dbc61bec8a0a7bcd +Block 0017 [ 12]: bbf288024ff1b4bd +Block 0017 [ 13]: 8faf22bafbdda20a +Block 0017 [ 14]: 2de1c40ca884f4f8 +Block 0017 [ 15]: ef1a6ab15a6bc297 +Block 0017 [ 16]: 8e7e3775b6e620ef +Block 0017 [ 17]: b73ee4a9b5447bd8 +Block 0017 [ 18]: a7c9c64002e7de6c +Block 0017 [ 19]: 856743efdc51e1f2 +Block 0017 [ 20]: 86c9fae9e825e51d +Block 0017 [ 21]: b46144dc2d2bd13e +Block 0017 [ 22]: bb5fc5f58afe9f3d +Block 0017 [ 23]: 72565138c0c0de3f +Block 0017 [ 24]: d84fe0d08aeec7f4 +Block 0017 [ 25]: d82d1fe736931013 +Block 0017 [ 26]: 553ccfd5d897edd3 +Block 0017 [ 27]: 1946897a258ceea8 +Block 0017 [ 28]: 478f4e0bb4d26feb +Block 0017 [ 29]: e5d7b422fce1d6ef +Block 0017 [ 30]: d20534b5858c1f2e +Block 0017 [ 31]: 2d337040a6af6b92 +Block 0017 [ 32]: 54b35c906bfc0254 +Block 0017 [ 33]: c576354c4fed88e2 +Block 0017 [ 34]: 855ef7a03ddc9780 +Block 0017 [ 35]: 02ae016abd455038 +Block 0017 [ 36]: 5b08b4330a0f36b9 +Block 0017 [ 37]: e701a20db187fa01 +Block 0017 [ 38]: 69f8c2535b667d31 +Block 0017 [ 39]: 0583ad87707f1166 +Block 0017 [ 40]: 6c264bad170d16a1 +Block 0017 [ 41]: 564e696401b54e74 +Block 0017 [ 42]: 8e1acd3b5a0ad13d +Block 0017 [ 43]: ce1e5f83383e7882 +Block 0017 [ 44]: 177d21beb37812d0 +Block 0017 [ 45]: 4676715efd422319 +Block 0017 [ 46]: 780a06261172d470 +Block 0017 [ 47]: d9632d7e70419064 +Block 0017 [ 48]: 02b3db83a3af41c3 +Block 0017 [ 49]: a6e65a316272a79c +Block 0017 [ 50]: a594b0086e916d24 +Block 0017 [ 51]: 0b064fce44a2a76e +Block 0017 [ 52]: 2432d7db8b6f7667 +Block 0017 [ 53]: 6b2be3b92c8db847 +Block 0017 [ 54]: 1bbce28d4fb4dda3 +Block 0017 [ 55]: 0a5c3648ed841873 +Block 0017 [ 56]: 4b4c24e1bfaa0eac +Block 0017 [ 57]: 215b198b57484d44 +Block 0017 [ 58]: 7e28db06c4967f06 +Block 0017 [ 59]: 39e94d6e13a8808d +Block 0017 [ 60]: a50a0f8831791cb8 +Block 0017 [ 61]: 206ae656ceea22ef +Block 0017 [ 62]: eb9e7198a871b113 +Block 0017 [ 63]: f787d735bd1a533a +Block 0017 [ 64]: 095f66cb5f1c248c +Block 0017 [ 65]: 80fc162065b052c9 +Block 0017 [ 66]: 153b6e9c7c97401c +Block 0017 [ 67]: f4a9643d056f0a72 +Block 0017 [ 68]: bc049b48bbfce9a1 +Block 0017 [ 69]: 36ed38a3b7ea84ad +Block 0017 [ 70]: cb6f51ee30ecd90a +Block 0017 [ 71]: ac3a5ca12a82be94 +Block 0017 [ 72]: 468d587d7ba0a88f +Block 0017 [ 73]: 6f907170b9e7aa5b +Block 0017 [ 74]: a9fd5366ca960483 +Block 0017 [ 75]: fbb9bc4c359f1468 +Block 0017 [ 76]: f226fad7fc553d60 +Block 0017 [ 77]: 048d6944e0ca29fb +Block 0017 [ 78]: bb318db94c95df18 +Block 0017 [ 79]: 105509a613c5abd8 +Block 0017 [ 80]: e332fdec7d180a2d +Block 0017 [ 81]: 0eee4c4474ae8711 +Block 0017 [ 82]: 6ab584eaec00b13d +Block 0017 [ 83]: a83bd159c1e167a6 +Block 0017 [ 84]: 9c34d31dd5cacd55 +Block 0017 [ 85]: 7293faa10f50cb2f +Block 0017 [ 86]: 762dd1ef8251fad0 +Block 0017 [ 87]: 2811a9f56bd43318 +Block 0017 [ 88]: 07519086e22d47c0 +Block 0017 [ 89]: 86f9d58e400448d8 +Block 0017 [ 90]: e232d4b04455bb74 +Block 0017 [ 91]: cf556841d4f2a45d +Block 0017 [ 92]: 491b78ca34525eda +Block 0017 [ 93]: 6a082b3b72e71133 +Block 0017 [ 94]: 4e1647256eb998ee +Block 0017 [ 95]: 08a31dcfd48be9bb +Block 0017 [ 96]: 8a4e4a5b57cdf1aa +Block 0017 [ 97]: 5b7bd8bf7ec28733 +Block 0017 [ 98]: b9c55f7917141bc2 +Block 0017 [ 99]: 980b698d90b954b8 +Block 0017 [100]: baa10262b146c465 +Block 0017 [101]: 44d9ccb900b6f193 +Block 0017 [102]: 4fc6aa48bb32c460 +Block 0017 [103]: c28c6acbc1be8628 +Block 0017 [104]: 54cc0cb3ddbae117 +Block 0017 [105]: 1720fbfe18c9b3ef +Block 0017 [106]: bfab05e66a69aaa0 +Block 0017 [107]: a71a908f786c34a9 +Block 0017 [108]: 5ee97817c670b28c +Block 0017 [109]: 535cc2a0664dd333 +Block 0017 [110]: db8351e905bddff4 +Block 0017 [111]: 1a2e45990fd03ab8 +Block 0017 [112]: ad73b205252daa73 +Block 0017 [113]: 8e12bdbe877b55f8 +Block 0017 [114]: e4b688e3c50dbec2 +Block 0017 [115]: e1bcb0ee231819b0 +Block 0017 [116]: ce3c23e03b3ef2e2 +Block 0017 [117]: 6432e7536ae6ccad +Block 0017 [118]: 20f0e04af94a13b5 +Block 0017 [119]: 7736490bd70914ae +Block 0017 [120]: 7024a116d4af3b76 +Block 0017 [121]: ab9e8c2f372ff436 +Block 0017 [122]: 1d545892a1065e03 +Block 0017 [123]: b0f4f3c0dfaeb2cc +Block 0017 [124]: 74de51d4e9f3d9f6 +Block 0017 [125]: a0b38d15ed7bf487 +Block 0017 [126]: 33a46ece14805c89 +Block 0017 [127]: 834fa9ef3ef24bcb +Block 0018 [ 0]: 1a242ce230997d9b +Block 0018 [ 1]: 27975054b29babe8 +Block 0018 [ 2]: 18762553e598c29f +Block 0018 [ 3]: db01e8d1a2ab9376 +Block 0018 [ 4]: 7bb81b4dd6cc2115 +Block 0018 [ 5]: 02cc7040043a1d92 +Block 0018 [ 6]: ae9f9edf3b6fce7f +Block 0018 [ 7]: c423921b660990a1 +Block 0018 [ 8]: 281a011bcbeece96 +Block 0018 [ 9]: 2983c2b72941eaa8 +Block 0018 [ 10]: 183e1e12a8798776 +Block 0018 [ 11]: 6d09aaa1212c44c3 +Block 0018 [ 12]: d4fe7f0108acac6c +Block 0018 [ 13]: e8c816784b6ef0f6 +Block 0018 [ 14]: b78c7e808a211ac5 +Block 0018 [ 15]: 31c20264a10ba60f +Block 0018 [ 16]: b08a505efef753d3 +Block 0018 [ 17]: 3e942daa0e5f1ea5 +Block 0018 [ 18]: 9b45f7e39e5ac395 +Block 0018 [ 19]: f94807bef7c72762 +Block 0018 [ 20]: aab80003ae994d98 +Block 0018 [ 21]: 15aec49efb7568c1 +Block 0018 [ 22]: cb17490b118d47d4 +Block 0018 [ 23]: abedd85d337b6148 +Block 0018 [ 24]: e4b422270e181995 +Block 0018 [ 25]: a60a9d9e401cb171 +Block 0018 [ 26]: 9e3d0787cf999dba +Block 0018 [ 27]: 47c6e6f979d72e4d +Block 0018 [ 28]: 0120cf5c8d5d8d29 +Block 0018 [ 29]: 5914b6ac500cabe0 +Block 0018 [ 30]: d4844b8e42b295bf +Block 0018 [ 31]: d11cb644b0aa6b16 +Block 0018 [ 32]: 34a280f5c6861b00 +Block 0018 [ 33]: 941fdabe32af2a3e +Block 0018 [ 34]: ed5f13ac3dfa8b17 +Block 0018 [ 35]: e40211257d153bb5 +Block 0018 [ 36]: 3ebecfce85fddabc +Block 0018 [ 37]: b058f2daa35d0659 +Block 0018 [ 38]: 6e81776227dc1de4 +Block 0018 [ 39]: 903cdd86ab044958 +Block 0018 [ 40]: db80e50ca568989e +Block 0018 [ 41]: b3a2667bf1afb19d +Block 0018 [ 42]: 2fb3b686e259b527 +Block 0018 [ 43]: 9d502c5be8f047e9 +Block 0018 [ 44]: 5ebe6a9c788aa7c3 +Block 0018 [ 45]: 0129219b3ab99be5 +Block 0018 [ 46]: 76fe8083ac5bc860 +Block 0018 [ 47]: b25a5c9803e15174 +Block 0018 [ 48]: 8e41588d22498da3 +Block 0018 [ 49]: 535d49cbcce974ee +Block 0018 [ 50]: 5ea7114ad5badab0 +Block 0018 [ 51]: eb274b50e0dd9f1a +Block 0018 [ 52]: ab155492a5c70b5f +Block 0018 [ 53]: e258df1ff509eef8 +Block 0018 [ 54]: 5a695278ef55ceab +Block 0018 [ 55]: 9e161114a82e15ef +Block 0018 [ 56]: 170045e4e9954260 +Block 0018 [ 57]: a56a50835b800700 +Block 0018 [ 58]: a23ce122ac1279da +Block 0018 [ 59]: f575b95bee91b087 +Block 0018 [ 60]: 8fc0e92bdd552538 +Block 0018 [ 61]: 288931bff9509197 +Block 0018 [ 62]: c387b8567a16558e +Block 0018 [ 63]: 5dfe7026d392410e +Block 0018 [ 64]: 77031b0bc52274b4 +Block 0018 [ 65]: 9768e068ba0a897f +Block 0018 [ 66]: 838fe9b83e9f8539 +Block 0018 [ 67]: 8223f105c1d0479b +Block 0018 [ 68]: 7b75e46b05d940c8 +Block 0018 [ 69]: c4588f5474a26ae8 +Block 0018 [ 70]: 1951941657f37da6 +Block 0018 [ 71]: 23f8893a1575ec0d +Block 0018 [ 72]: b2fd7ad7278072df +Block 0018 [ 73]: 4a4c3e999cfc173c +Block 0018 [ 74]: bd7589d499563076 +Block 0018 [ 75]: ae61c35742a7b0f9 +Block 0018 [ 76]: 3322400c35475fb9 +Block 0018 [ 77]: 65718a454c86e9d7 +Block 0018 [ 78]: 95c19f7fe564841f +Block 0018 [ 79]: c0afa7b93be8a16e +Block 0018 [ 80]: 610392365382be84 +Block 0018 [ 81]: 3d8894c43775de2e +Block 0018 [ 82]: a3c3a715cabe7fea +Block 0018 [ 83]: 065ab25ffcef32e7 +Block 0018 [ 84]: 33981a456b7eacd5 +Block 0018 [ 85]: 8beb1382748f3cb5 +Block 0018 [ 86]: 5dea419f8f0ee480 +Block 0018 [ 87]: d17e8c3ce9bed985 +Block 0018 [ 88]: 80e3414b6a1d33e8 +Block 0018 [ 89]: fe3e4f8b5de4d95c +Block 0018 [ 90]: 0eb88acb805e30a4 +Block 0018 [ 91]: caa8daa0063324c6 +Block 0018 [ 92]: 8a84c2e5487490c6 +Block 0018 [ 93]: 92c0919cce8933e0 +Block 0018 [ 94]: 95e40747a89ec3f8 +Block 0018 [ 95]: c94a85345a36fb98 +Block 0018 [ 96]: 4884a40550574ea6 +Block 0018 [ 97]: 98aef193a0b4195c +Block 0018 [ 98]: 547605d40d5874b5 +Block 0018 [ 99]: bcf2921c10084e3b +Block 0018 [100]: 2ae0acda27100af9 +Block 0018 [101]: b838891a6385a123 +Block 0018 [102]: d4ceec21e572c544 +Block 0018 [103]: 02d799fd3a0d43a8 +Block 0018 [104]: 874c74cf56e66a28 +Block 0018 [105]: 455ec04f0c6f644b +Block 0018 [106]: 794d622cefeb3142 +Block 0018 [107]: 397cc3fb58f243fd +Block 0018 [108]: bfce9c65d6e547dc +Block 0018 [109]: 3fc535b6747dda96 +Block 0018 [110]: b232041172c61955 +Block 0018 [111]: d0866b7afc724904 +Block 0018 [112]: 1bd0e861a1832f90 +Block 0018 [113]: a5b46e83ec65fccf +Block 0018 [114]: 14bf4cfaf58434ac +Block 0018 [115]: c6722ca70b88aec5 +Block 0018 [116]: 43f4f75ed575746b +Block 0018 [117]: 318dee187f44b2ef +Block 0018 [118]: 7718e9e01d747b67 +Block 0018 [119]: eabe624668bfdf10 +Block 0018 [120]: 86b91fdc534cd49b +Block 0018 [121]: de0d5d5ad7e1bd04 +Block 0018 [122]: 470fdb1caec64506 +Block 0018 [123]: 5ad95fcaef3c3781 +Block 0018 [124]: f3da0001aa2f20a5 +Block 0018 [125]: ea4df80b5c7b274f +Block 0018 [126]: 5e422b2276b364e3 +Block 0018 [127]: 2daba476dc742f98 +Block 0019 [ 0]: 5292bf204d008798 +Block 0019 [ 1]: 7ebaeba170dc400b +Block 0019 [ 2]: c8878105fd55f1b2 +Block 0019 [ 3]: a245621c86d0a8e3 +Block 0019 [ 4]: 636ca9abda535b34 +Block 0019 [ 5]: fd6e38f15d0d651f +Block 0019 [ 6]: 8b9def75cef5e50f +Block 0019 [ 7]: 0b23ac908432ea37 +Block 0019 [ 8]: b039c7c46ac081e9 +Block 0019 [ 9]: 3ca943597d747790 +Block 0019 [ 10]: 9e8849ca90b39e95 +Block 0019 [ 11]: e45654ea0a38a7f9 +Block 0019 [ 12]: 9f4c310ed74d5d09 +Block 0019 [ 13]: e29417a8eb9b0064 +Block 0019 [ 14]: 7f6b0ee1b68de286 +Block 0019 [ 15]: f871922b573a0e94 +Block 0019 [ 16]: 4f40a6cf457ef1fd +Block 0019 [ 17]: a7ced1866505a14b +Block 0019 [ 18]: 1c266357ac946c5c +Block 0019 [ 19]: 52fc52cc033b0ea3 +Block 0019 [ 20]: ebf88c70993e3715 +Block 0019 [ 21]: f19fb0dc686bd492 +Block 0019 [ 22]: 1da1a221153ee7f9 +Block 0019 [ 23]: 4ac6a02ae545485f +Block 0019 [ 24]: 5eed7871fbd8b74d +Block 0019 [ 25]: 930228abdbbcec23 +Block 0019 [ 26]: 856ae86b5eaa828b +Block 0019 [ 27]: 034fe05023dd4d48 +Block 0019 [ 28]: c26d7f4c8b06ef17 +Block 0019 [ 29]: c9de1f992e2271b0 +Block 0019 [ 30]: 875d1a7e35ab78ca +Block 0019 [ 31]: 47ae3b6799be5a90 +Block 0019 [ 32]: acd7d3791262cf96 +Block 0019 [ 33]: 656cb43289c97db8 +Block 0019 [ 34]: 8066231473820839 +Block 0019 [ 35]: 230d998ade75e245 +Block 0019 [ 36]: ee23d7552097aaa4 +Block 0019 [ 37]: c545ef4eb6d12dff +Block 0019 [ 38]: ae2e4952f240f07f +Block 0019 [ 39]: 922ad44ed38552c0 +Block 0019 [ 40]: b2fbff55158c04c2 +Block 0019 [ 41]: 3fe9a10ea5aef870 +Block 0019 [ 42]: 6b8cd254eefe733b +Block 0019 [ 43]: 7c99c409d5bdd715 +Block 0019 [ 44]: da8dacd2c0ed0281 +Block 0019 [ 45]: dcea85cffde78e15 +Block 0019 [ 46]: 0e709509407f3866 +Block 0019 [ 47]: 9331b3925ac0914c +Block 0019 [ 48]: 19d3d18adc5dbc63 +Block 0019 [ 49]: 5dfd33332c89d190 +Block 0019 [ 50]: c61a6a352b9227bc +Block 0019 [ 51]: c4e5c7b0a3785d94 +Block 0019 [ 52]: 6f74bae4e2174723 +Block 0019 [ 53]: 63dbe046cc100f82 +Block 0019 [ 54]: d882d08c1b6cc810 +Block 0019 [ 55]: 050374613b45e9af +Block 0019 [ 56]: 5cd129e5e2430a26 +Block 0019 [ 57]: 08ff1a2d09e10475 +Block 0019 [ 58]: 4ab63c621e814a29 +Block 0019 [ 59]: 717be236db19de8e +Block 0019 [ 60]: b69702badc215404 +Block 0019 [ 61]: 0f938810792db042 +Block 0019 [ 62]: 9cd896b3683874e4 +Block 0019 [ 63]: e5a2b94e27ae70d8 +Block 0019 [ 64]: 99a106c84e5a5eb2 +Block 0019 [ 65]: 363341869679ec8d +Block 0019 [ 66]: ee1153712c35345e +Block 0019 [ 67]: a7c8a5d924760fe9 +Block 0019 [ 68]: 32beac8da9d2fe0f +Block 0019 [ 69]: c0b40564b99ac08c +Block 0019 [ 70]: 21c6f279089d8d67 +Block 0019 [ 71]: c17eb4e9657c7d38 +Block 0019 [ 72]: 82119d42ee7383ee +Block 0019 [ 73]: 839a5ba4ad33e320 +Block 0019 [ 74]: dca3fbd6b621523b +Block 0019 [ 75]: 831be6174d1b7bfe +Block 0019 [ 76]: 3f9e8bfe785fef8b +Block 0019 [ 77]: 6ad962a245dc4541 +Block 0019 [ 78]: 3bcab76901720eeb +Block 0019 [ 79]: 220a3352d04b525b +Block 0019 [ 80]: 179aecb646a78ad3 +Block 0019 [ 81]: 0e37e2692c841cac +Block 0019 [ 82]: 5b9f397a9fc9914a +Block 0019 [ 83]: f6a7673df3a257f5 +Block 0019 [ 84]: 615685fffa2fe235 +Block 0019 [ 85]: 5e237db301dba24c +Block 0019 [ 86]: 81535ef20914d77f +Block 0019 [ 87]: e12cdcfe47093097 +Block 0019 [ 88]: 48c4b926c428a68c +Block 0019 [ 89]: fd308f9af27493ad +Block 0019 [ 90]: 2cd8f4bf32095907 +Block 0019 [ 91]: 77e525fe7a8e416d +Block 0019 [ 92]: 132e99f6e13c81da +Block 0019 [ 93]: 3f4b9f866fb660a4 +Block 0019 [ 94]: b0e935906dac73db +Block 0019 [ 95]: d7f22b090e9905e7 +Block 0019 [ 96]: cb11d90136f020f9 +Block 0019 [ 97]: c96be13880b6cd43 +Block 0019 [ 98]: 1712c855b6a0e9a7 +Block 0019 [ 99]: 06c2322f35f2c656 +Block 0019 [100]: 3959da36a56e8319 +Block 0019 [101]: 00395e9c332612d6 +Block 0019 [102]: 6ae26df19284f3b2 +Block 0019 [103]: 1e2691a6e0d129df +Block 0019 [104]: fc73f98a93270339 +Block 0019 [105]: 6cd684812beff818 +Block 0019 [106]: 7f6afcc089780856 +Block 0019 [107]: 41ba7228f41b01d8 +Block 0019 [108]: 8e2fcf2ea124d9c9 +Block 0019 [109]: ebc64f65ee2aee4f +Block 0019 [110]: 43369a8e316a948e +Block 0019 [111]: b3ff2df0c7f10202 +Block 0019 [112]: 0d03d4023e9810a0 +Block 0019 [113]: 873b2ed4d5aa7898 +Block 0019 [114]: 9780b00f14da8b14 +Block 0019 [115]: cd9995c99e10bf5a +Block 0019 [116]: e158368cbe15dbf5 +Block 0019 [117]: c2340418c755b209 +Block 0019 [118]: 9d6a8efa736d3c45 +Block 0019 [119]: 589d9b1963690d48 +Block 0019 [120]: 88a35d4ed48dd42a +Block 0019 [121]: bd08c9ff2cb27f60 +Block 0019 [122]: 57055384720f2845 +Block 0019 [123]: a21217b4da0a9fc5 +Block 0019 [124]: 744fa33320036cbc +Block 0019 [125]: 4e57db9bfa06c2a3 +Block 0019 [126]: 490b17fdfbcb169e +Block 0019 [127]: 084a615be1a9e4d9 +Block 0020 [ 0]: 5d57ca47136f780e +Block 0020 [ 1]: f7e6a489158047e0 +Block 0020 [ 2]: 43afd73ca20617e2 +Block 0020 [ 3]: f330892dcc219aec +Block 0020 [ 4]: 69ddcc169837eaca +Block 0020 [ 5]: 76276b1b9f66128a +Block 0020 [ 6]: 4a3c15e11e71cd34 +Block 0020 [ 7]: d136f0129e70d740 +Block 0020 [ 8]: bed3273b28f942a7 +Block 0020 [ 9]: 5666679b22a0e825 +Block 0020 [ 10]: 3cc5122dc80159bc +Block 0020 [ 11]: 1f9762b33b33aba5 +Block 0020 [ 12]: 62fdd7c730a65160 +Block 0020 [ 13]: c482f5bf34979c2f +Block 0020 [ 14]: 4f2349b0ecfeefb8 +Block 0020 [ 15]: 155b8ad94c89cbb6 +Block 0020 [ 16]: 1b9f6770ca2aedf4 +Block 0020 [ 17]: 192416f1c8c95ac1 +Block 0020 [ 18]: e9dd5be037cb364a +Block 0020 [ 19]: 0f090a08cd9aba13 +Block 0020 [ 20]: 31e9b657221639b3 +Block 0020 [ 21]: 87b363aa553befd0 +Block 0020 [ 22]: 4477b840ca7905ba +Block 0020 [ 23]: 05cc227f7f6d9b75 +Block 0020 [ 24]: 3a8c7320409d5d26 +Block 0020 [ 25]: 31ad20d85c763a6c +Block 0020 [ 26]: 4e73aa89e8725561 +Block 0020 [ 27]: 9a7b37f6c4ce09d5 +Block 0020 [ 28]: 98d1d425577e1801 +Block 0020 [ 29]: 89f69be4232297c6 +Block 0020 [ 30]: 792d3563c3bf9e98 +Block 0020 [ 31]: 2512ad23f53284c7 +Block 0020 [ 32]: c2981553ed8736f2 +Block 0020 [ 33]: f0e20cbfb5609433 +Block 0020 [ 34]: f8d948e6e651fa86 +Block 0020 [ 35]: 3149268c4aac6990 +Block 0020 [ 36]: 2658045704d43b96 +Block 0020 [ 37]: f2a949e2ac83b68b +Block 0020 [ 38]: 8f58f6bdd819b9c6 +Block 0020 [ 39]: 48d427bf2c2c0400 +Block 0020 [ 40]: dcf52ff4b5056b04 +Block 0020 [ 41]: 9360854e262cbd13 +Block 0020 [ 42]: 46228619dec396e7 +Block 0020 [ 43]: a5c0c9024eb34b51 +Block 0020 [ 44]: 80a4ff3799ffaa55 +Block 0020 [ 45]: ec44c47fe6760771 +Block 0020 [ 46]: 1c10b973bc0b4e65 +Block 0020 [ 47]: a10cfd79a24c6966 +Block 0020 [ 48]: a5d1d59a2470be40 +Block 0020 [ 49]: f32d79247a4b459b +Block 0020 [ 50]: ae7733eb4ece186d +Block 0020 [ 51]: 7fdf2ba9666fff99 +Block 0020 [ 52]: 5324ac97a90fda85 +Block 0020 [ 53]: c93ce65f7f8d362b +Block 0020 [ 54]: 1a8c3a78f89292f8 +Block 0020 [ 55]: 3b14b0cf8f636730 +Block 0020 [ 56]: e58c0d49afbbd7f6 +Block 0020 [ 57]: 0c7b4cf0cfeebbb7 +Block 0020 [ 58]: 2b2e13b6943f1a39 +Block 0020 [ 59]: a0b73361ed004dcf +Block 0020 [ 60]: 93eba2ea0ae14829 +Block 0020 [ 61]: 4b2f44fe71cf5fc3 +Block 0020 [ 62]: 3ed8260985628995 +Block 0020 [ 63]: ccc751ccb582a8c6 +Block 0020 [ 64]: addb305fb77183b9 +Block 0020 [ 65]: 6ae008af5ca19b9a +Block 0020 [ 66]: 6a2b6da53d8c5e9b +Block 0020 [ 67]: 684a936687acf847 +Block 0020 [ 68]: 95ddec6659b9826f +Block 0020 [ 69]: 568b6ada0abf36bb +Block 0020 [ 70]: 7dab587621d25117 +Block 0020 [ 71]: 719c14b211475577 +Block 0020 [ 72]: 6d6cfb1a289476e3 +Block 0020 [ 73]: 11bb65adb073bf84 +Block 0020 [ 74]: e8564c9ab3287123 +Block 0020 [ 75]: 055c00f96aba87ee +Block 0020 [ 76]: 2ce8391c91ff17ef +Block 0020 [ 77]: 712b4f15acccf00f +Block 0020 [ 78]: a557001a2a542828 +Block 0020 [ 79]: 8aa5fcd18d9be6c4 +Block 0020 [ 80]: a064fa473db20fe3 +Block 0020 [ 81]: 1ab5e78858bf2061 +Block 0020 [ 82]: c8408a0601756a2a +Block 0020 [ 83]: 8ebd7b0fa610e267 +Block 0020 [ 84]: 4737a8848fa8756e +Block 0020 [ 85]: 084383af4e6a6a33 +Block 0020 [ 86]: ee2aa19d3d4f1e0c +Block 0020 [ 87]: a425205d5b3c0e44 +Block 0020 [ 88]: a9b7d132ab432afe +Block 0020 [ 89]: cb3d70781cde1f01 +Block 0020 [ 90]: 13b46a9cc6036627 +Block 0020 [ 91]: f3cb9cf1013a522b +Block 0020 [ 92]: f04b6ae327081e12 +Block 0020 [ 93]: a00b16fc80f1fa79 +Block 0020 [ 94]: b7291598fc44947d +Block 0020 [ 95]: 5b0def4014962dfe +Block 0020 [ 96]: 889b67aae30ca681 +Block 0020 [ 97]: 38b9629ce8c21a58 +Block 0020 [ 98]: e31fa547764f1192 +Block 0020 [ 99]: 6c9fd99cb27b91eb +Block 0020 [100]: 729a48be4128351d +Block 0020 [101]: c9ef08e71850a66a +Block 0020 [102]: 222bb5d86b7f734a +Block 0020 [103]: 8d73e0e8f544544e +Block 0020 [104]: b90d08c81440cf69 +Block 0020 [105]: dd9fcc9d6e1c2a7c +Block 0020 [106]: 88360967c8ba6163 +Block 0020 [107]: 084ee06004657e4b +Block 0020 [108]: 4808ed26e383a9fd +Block 0020 [109]: 99216d7d19ebd14f +Block 0020 [110]: 86804f939794a1a0 +Block 0020 [111]: 79808541b501f7e1 +Block 0020 [112]: 87d9ced7805ba881 +Block 0020 [113]: 3cecd150f641b6ae +Block 0020 [114]: 48818425086f97d0 +Block 0020 [115]: 259ed59ef6f4eab9 +Block 0020 [116]: eeefaa0d117276db +Block 0020 [117]: b345010d4cff1602 +Block 0020 [118]: b2ebc77b9784db1a +Block 0020 [119]: b0fccb9ee2146d44 +Block 0020 [120]: 12efff78f820153e +Block 0020 [121]: f055073327d18f03 +Block 0020 [122]: ce7854ab4ef4adf0 +Block 0020 [123]: 06d17b027037f0fd +Block 0020 [124]: 92ce711adc04a9a1 +Block 0020 [125]: 66478a9d6396bc0d +Block 0020 [126]: ff1eb65c6ce7ea23 +Block 0020 [127]: 87e96088e607b745 +Block 0021 [ 0]: 976e9f659febc2e8 +Block 0021 [ 1]: a88f1274f70e5647 +Block 0021 [ 2]: 2d1030809e10bdbf +Block 0021 [ 3]: 39fa3a0e6eeb51d9 +Block 0021 [ 4]: a3dccb41bf561eba +Block 0021 [ 5]: 39174042994d9c86 +Block 0021 [ 6]: e653eb04aeba31fd +Block 0021 [ 7]: 1b4bf239f4fc1ae8 +Block 0021 [ 8]: b8ee57434441c67e +Block 0021 [ 9]: 3368705f1cf61836 +Block 0021 [ 10]: 5265f3bee7e8a64d +Block 0021 [ 11]: aee6bdc6c7453a50 +Block 0021 [ 12]: 3baa3a53a511d6d7 +Block 0021 [ 13]: b052f430ef905497 +Block 0021 [ 14]: 15655072b91558fd +Block 0021 [ 15]: d8f5df7a3e047ad8 +Block 0021 [ 16]: 7dc6a612217c1121 +Block 0021 [ 17]: 566076b6a23f9387 +Block 0021 [ 18]: ba4ed88d763b7640 +Block 0021 [ 19]: 9ddcc34d61bda242 +Block 0021 [ 20]: bca43b61b90ef9f0 +Block 0021 [ 21]: 44f372e24cab6c1a +Block 0021 [ 22]: 4a28ccd569072749 +Block 0021 [ 23]: 3bba0847ae0b83ed +Block 0021 [ 24]: 49494038474e4275 +Block 0021 [ 25]: 598fe8b9223c0f33 +Block 0021 [ 26]: ab22b6a0c4f78ab0 +Block 0021 [ 27]: 210db7846a68d8ae +Block 0021 [ 28]: 43282ca03322625e +Block 0021 [ 29]: b3ad67fe8abe1f46 +Block 0021 [ 30]: 989391df47fa1387 +Block 0021 [ 31]: e2cca1cde49182f6 +Block 0021 [ 32]: 2bb23a36ea2afdd7 +Block 0021 [ 33]: 5a7f289f9251fed6 +Block 0021 [ 34]: 5a544243ac7744d7 +Block 0021 [ 35]: cc72df263c6f51ec +Block 0021 [ 36]: c43f009bb3d5c4ff +Block 0021 [ 37]: be57289215b40eda +Block 0021 [ 38]: 6199f895c87b2dcc +Block 0021 [ 39]: 7ae8e2df71099f02 +Block 0021 [ 40]: 94d1ab2ecb1e962d +Block 0021 [ 41]: ac38b599cf400fe3 +Block 0021 [ 42]: e2d04241732ef8a2 +Block 0021 [ 43]: 311f2618f88be20f +Block 0021 [ 44]: bc624ead2ff7931a +Block 0021 [ 45]: 53dce757b2c8a471 +Block 0021 [ 46]: b45e24e9711e96ae +Block 0021 [ 47]: 4449f0d3ee397b7b +Block 0021 [ 48]: 701696b5549d2d6e +Block 0021 [ 49]: abd841c53153facb +Block 0021 [ 50]: 3dc2199505f24e66 +Block 0021 [ 51]: 9774d5a5bfd689f5 +Block 0021 [ 52]: 4d546794b4c18718 +Block 0021 [ 53]: 8dba23eaf3c9d3ae +Block 0021 [ 54]: cb1376d0c0ec06ce +Block 0021 [ 55]: 73cebc8b6066075d +Block 0021 [ 56]: d80e0ddbcd207d04 +Block 0021 [ 57]: 511ee60f7ab4b82d +Block 0021 [ 58]: 55f2ba5663fda61a +Block 0021 [ 59]: 4a1bf598eb874381 +Block 0021 [ 60]: 6d2eea6b4e0e2791 +Block 0021 [ 61]: 91a8d6a65942c0fd +Block 0021 [ 62]: f36cb50cadc4c59a +Block 0021 [ 63]: b51c59122c247d33 +Block 0021 [ 64]: d73e4c0f4ba0b24e +Block 0021 [ 65]: 9d062a74eddb078c +Block 0021 [ 66]: 76e462d56034ba74 +Block 0021 [ 67]: 7f981ba9589c3c86 +Block 0021 [ 68]: f87f9bbf54d53d09 +Block 0021 [ 69]: b58a591bb6d366eb +Block 0021 [ 70]: a5d206cbc7965fc4 +Block 0021 [ 71]: 0737b44abb7b8eb3 +Block 0021 [ 72]: 4eec2ff63f5346a9 +Block 0021 [ 73]: e7aad25813a2551a +Block 0021 [ 74]: a9db0a77fc3a3627 +Block 0021 [ 75]: dd5c26ab99927254 +Block 0021 [ 76]: a7351601b2018b23 +Block 0021 [ 77]: 56e87f62e4bd36a0 +Block 0021 [ 78]: 7579b8aabe7dfa32 +Block 0021 [ 79]: 34fe2f3bc8e03b0c +Block 0021 [ 80]: b6b3ad970eb248b1 +Block 0021 [ 81]: 121d7272bd7ebc93 +Block 0021 [ 82]: c80eb86fb6c50b6b +Block 0021 [ 83]: 8bd485d99bc66730 +Block 0021 [ 84]: cf903a06d42efa64 +Block 0021 [ 85]: a0bf1ea7429d9b66 +Block 0021 [ 86]: 100e7668252d8234 +Block 0021 [ 87]: 5611ac51e0c4aec0 +Block 0021 [ 88]: e0d47dbb54bd4fc2 +Block 0021 [ 89]: 762c3fc263658f83 +Block 0021 [ 90]: 0977a8ac842da06d +Block 0021 [ 91]: ffece2e0fcf82469 +Block 0021 [ 92]: 251d9000edf3560a +Block 0021 [ 93]: f88f20544d4602ab +Block 0021 [ 94]: a32ffc01b4f0fe3c +Block 0021 [ 95]: a24a0e2d9ff22a4b +Block 0021 [ 96]: 69d9855d6212b44a +Block 0021 [ 97]: 05fad3385f71b8be +Block 0021 [ 98]: 3b915fb26c778939 +Block 0021 [ 99]: 81485ec2990b5f1f +Block 0021 [100]: df6bde77b4b90dad +Block 0021 [101]: f54543616da45238 +Block 0021 [102]: 08f27ab408ba9e98 +Block 0021 [103]: 382039b1ac11c85b +Block 0021 [104]: 304799345fb375d8 +Block 0021 [105]: 9aa9d07bc2c653cf +Block 0021 [106]: c01eb96471beb8d2 +Block 0021 [107]: bf028c4a42a5c5b7 +Block 0021 [108]: 6bc2feea37184034 +Block 0021 [109]: 93ae626810c10f9c +Block 0021 [110]: e2185c6ae98e1a60 +Block 0021 [111]: a365bf7029eabc63 +Block 0021 [112]: da1ba6ddd489d60e +Block 0021 [113]: d7114e5abe779e82 +Block 0021 [114]: d62e97914253cc02 +Block 0021 [115]: 2d990cb146dc6ffb +Block 0021 [116]: 9f8dd338cb3d9169 +Block 0021 [117]: 00417fb43b21719f +Block 0021 [118]: c547a1fa25dff537 +Block 0021 [119]: 6649468066baba07 +Block 0021 [120]: aeb4eae2da0f4711 +Block 0021 [121]: b9619918b2b99ded +Block 0021 [122]: 7b3aa37c52219510 +Block 0021 [123]: c67f4ab94d67fdfe +Block 0021 [124]: 8c4d9ae73c0384d7 +Block 0021 [125]: 30fcd267567ade99 +Block 0021 [126]: 8eb4c44af8925b02 +Block 0021 [127]: 91532368b2dd5d98 +Block 0022 [ 0]: 7a7eb778ba137642 +Block 0022 [ 1]: 75fd20cc726c9447 +Block 0022 [ 2]: 377a009ac96c4e5b +Block 0022 [ 3]: 5137193344b6fa8e +Block 0022 [ 4]: fd3c6f316b4b2203 +Block 0022 [ 5]: c8c10e87059b7fcb +Block 0022 [ 6]: c3e984b4f4c19e0f +Block 0022 [ 7]: c1df342507a4239d +Block 0022 [ 8]: f3d84364c81068b5 +Block 0022 [ 9]: a84f4a8e0875f61b +Block 0022 [ 10]: f074dbaf73f5a520 +Block 0022 [ 11]: c917181b46f9e191 +Block 0022 [ 12]: 64da0eff5b833f16 +Block 0022 [ 13]: 8c3a814b666d1a5b +Block 0022 [ 14]: bb5ade7b7db56500 +Block 0022 [ 15]: 0094e518971a127b +Block 0022 [ 16]: 0fad4d30b3cc902d +Block 0022 [ 17]: 94acb7d50ba979f7 +Block 0022 [ 18]: cb1c8994dbbaec67 +Block 0022 [ 19]: db593985ab96d088 +Block 0022 [ 20]: 016cf146031e0455 +Block 0022 [ 21]: dbe4263eae7443a7 +Block 0022 [ 22]: 38b1ed9c3a1e8a0e +Block 0022 [ 23]: 30ccb33155dc79a6 +Block 0022 [ 24]: ab3f38b7fbe9c6a7 +Block 0022 [ 25]: b6ab6339e3b5cd2f +Block 0022 [ 26]: 105fb25c2d53aad2 +Block 0022 [ 27]: 9100d9974a0ebc84 +Block 0022 [ 28]: 05557560d577787d +Block 0022 [ 29]: 0be7aa32a729523c +Block 0022 [ 30]: 987ebbccd2e595ad +Block 0022 [ 31]: d1a61b40e35b65dd +Block 0022 [ 32]: 87edbd02dbb27253 +Block 0022 [ 33]: fd3917fe08ded9e1 +Block 0022 [ 34]: 5154aca7a67f09e6 +Block 0022 [ 35]: 0ac7077b17b0ce6b +Block 0022 [ 36]: 022506e3e68af855 +Block 0022 [ 37]: 477b231cb63085b7 +Block 0022 [ 38]: facbc07678f43b4e +Block 0022 [ 39]: f793ea3f705dbd7e +Block 0022 [ 40]: c9fdc7172747c3f7 +Block 0022 [ 41]: 69b7d2c9df87ef7e +Block 0022 [ 42]: ba896967adafe7ca +Block 0022 [ 43]: 15865ebadfe18b9d +Block 0022 [ 44]: 8a374b6123ccda48 +Block 0022 [ 45]: 1ccfc954e24f0885 +Block 0022 [ 46]: 6eaa9454516dc0c4 +Block 0022 [ 47]: a47cecb2678bca2c +Block 0022 [ 48]: c9d512ee9869639b +Block 0022 [ 49]: f2be8f067e53a2f7 +Block 0022 [ 50]: d12367af680b6f97 +Block 0022 [ 51]: 5b08d27744c63ee7 +Block 0022 [ 52]: 68240e233e3f5df7 +Block 0022 [ 53]: dabb61a4b4489e8a +Block 0022 [ 54]: 58daa56e290df240 +Block 0022 [ 55]: b7668b7b4334ad4b +Block 0022 [ 56]: 9b81324b9195a489 +Block 0022 [ 57]: 5c1b0f7850b4fdba +Block 0022 [ 58]: a19a882d2259b483 +Block 0022 [ 59]: 000144eaa2490219 +Block 0022 [ 60]: b86ade826f9ab064 +Block 0022 [ 61]: 2b30e0be2742140c +Block 0022 [ 62]: 5798c3cfcae5c8c5 +Block 0022 [ 63]: 318050a2867cc321 +Block 0022 [ 64]: 496efff959586146 +Block 0022 [ 65]: 042e2c16b9ce0ba3 +Block 0022 [ 66]: cbf37aba11d55dc2 +Block 0022 [ 67]: fa547c1aee0079cd +Block 0022 [ 68]: 81b1015f9bc428d3 +Block 0022 [ 69]: 5ee624ba1cec9ff4 +Block 0022 [ 70]: cc06875eecff4bfc +Block 0022 [ 71]: 70c5de30f89553ea +Block 0022 [ 72]: 82d6a1825d3e92d7 +Block 0022 [ 73]: 08ae275dc58392cf +Block 0022 [ 74]: ef27eec48a368912 +Block 0022 [ 75]: 413f245be1a350a1 +Block 0022 [ 76]: ac6ed1397cf170b1 +Block 0022 [ 77]: 88f42a66dbffe788 +Block 0022 [ 78]: 3e0dda4b5a02b8fc +Block 0022 [ 79]: 8f8eb68cdb179ae0 +Block 0022 [ 80]: fd018b0bac7799c5 +Block 0022 [ 81]: eba408d26249d044 +Block 0022 [ 82]: d75ac46fc02f7275 +Block 0022 [ 83]: c70a15596671f5d1 +Block 0022 [ 84]: e261a9551e07abc1 +Block 0022 [ 85]: 794892ee911a29de +Block 0022 [ 86]: 95b5b9a11d146624 +Block 0022 [ 87]: 86c21ad27d1543a4 +Block 0022 [ 88]: 1c277baeeff0ce9d +Block 0022 [ 89]: 7bd90b2cd713e638 +Block 0022 [ 90]: 0b2a164ea19e2b78 +Block 0022 [ 91]: 12fb9127ce3b8607 +Block 0022 [ 92]: 6361a6ec49a7b80d +Block 0022 [ 93]: 7cca1af1dce8ce7d +Block 0022 [ 94]: 6800dc2ac217bec3 +Block 0022 [ 95]: ec16cbb822442386 +Block 0022 [ 96]: b061fdcdc50e1e3e +Block 0022 [ 97]: dbd45a3166c80fa1 +Block 0022 [ 98]: 406e39115c27c83c +Block 0022 [ 99]: 4e67e960cc388f46 +Block 0022 [100]: 2a5706bdd0c69408 +Block 0022 [101]: 74720d5a7862a031 +Block 0022 [102]: 99eaa516e72e07a9 +Block 0022 [103]: 0652ebc6a9556b32 +Block 0022 [104]: 22e1c4807ba2d0d8 +Block 0022 [105]: b84684c4fe3cb95c +Block 0022 [106]: c5ae3cc6ff36e4bc +Block 0022 [107]: 7c6356397667c985 +Block 0022 [108]: 85a8a88cdb7088b2 +Block 0022 [109]: baaa4a40b2fe327f +Block 0022 [110]: bb549f69550ac7fe +Block 0022 [111]: 700ce2f1e6a53745 +Block 0022 [112]: fbd53afa58bdb58b +Block 0022 [113]: 59b964fe20508807 +Block 0022 [114]: e57b1917deb499be +Block 0022 [115]: 1ab30b4e53cdba30 +Block 0022 [116]: e97d383251335d8e +Block 0022 [117]: d58b02e4e16d9256 +Block 0022 [118]: 41814117f9badbdb +Block 0022 [119]: f47ac20cd426fc8b +Block 0022 [120]: b550ecef8d0d1bb6 +Block 0022 [121]: 816ae3c96a1e867e +Block 0022 [122]: 1a88cc4c5f601a97 +Block 0022 [123]: fe78b73e3cb347c0 +Block 0022 [124]: ab7c6f0d0fc23560 +Block 0022 [125]: df85ca82509c97aa +Block 0022 [126]: 040cd972f4f4cde0 +Block 0022 [127]: 8cc1f28d8b7a424c +Block 0023 [ 0]: b66bc13398076979 +Block 0023 [ 1]: 43b1f58fdbe5c6d7 +Block 0023 [ 2]: 78cfeb884aa0dcf8 +Block 0023 [ 3]: f6ad7bdbce0fc1f1 +Block 0023 [ 4]: 97bd0555962ab048 +Block 0023 [ 5]: dfeb2974250f3fba +Block 0023 [ 6]: 841d9de38b24c45d +Block 0023 [ 7]: f7ba62597d6b981c +Block 0023 [ 8]: 642acde47945bf0a +Block 0023 [ 9]: ba5998732b6e3a32 +Block 0023 [ 10]: fc5f4f5fa312aabb +Block 0023 [ 11]: 2f890fd5b28f6575 +Block 0023 [ 12]: a019341906f2c75a +Block 0023 [ 13]: 17bdcab50a8b8cad +Block 0023 [ 14]: 4bbd3902ab6ca789 +Block 0023 [ 15]: bd5b5bf197858bd3 +Block 0023 [ 16]: 76b97396716afeac +Block 0023 [ 17]: b5c6b2607a110210 +Block 0023 [ 18]: 3676052713568a3c +Block 0023 [ 19]: 1b243d70337d6a27 +Block 0023 [ 20]: 14a68d15138c679e +Block 0023 [ 21]: 2e5dec69515a9a11 +Block 0023 [ 22]: 89fad0d2ff2b3b0c +Block 0023 [ 23]: 65ffa10e16de42d4 +Block 0023 [ 24]: 2fe475a4468285bd +Block 0023 [ 25]: 598befca0e6acaa1 +Block 0023 [ 26]: bef9208bcce61210 +Block 0023 [ 27]: 497d41b68bf1eb06 +Block 0023 [ 28]: 8d8d7c7e8928d427 +Block 0023 [ 29]: 72dc43efe0c530cf +Block 0023 [ 30]: 50c87715dca1c97f +Block 0023 [ 31]: 97a31b1b001ff7ef +Block 0023 [ 32]: 2a2e6ab678997b48 +Block 0023 [ 33]: 3bcba511e04175e0 +Block 0023 [ 34]: c6ad3b6fd73abd88 +Block 0023 [ 35]: 49c135aede7792a2 +Block 0023 [ 36]: ab10861dfeed0a2a +Block 0023 [ 37]: b350fce5f7e9bfea +Block 0023 [ 38]: d45a436bfb246a48 +Block 0023 [ 39]: 29892cb62a433349 +Block 0023 [ 40]: 603e5902b12e7886 +Block 0023 [ 41]: 7b4ef649559126de +Block 0023 [ 42]: 2b7b48c2bbccc978 +Block 0023 [ 43]: 0f8035fc0a8f24e2 +Block 0023 [ 44]: f722f06c3b244851 +Block 0023 [ 45]: dab2722606c3e666 +Block 0023 [ 46]: 2c55f308a67bbe59 +Block 0023 [ 47]: 269043b9686499a5 +Block 0023 [ 48]: 109deb97c1757859 +Block 0023 [ 49]: cf3164ffce16fbfc +Block 0023 [ 50]: 7a221223e0354820 +Block 0023 [ 51]: 2ffbd3d62c1707fe +Block 0023 [ 52]: d0c6e6b39c3558af +Block 0023 [ 53]: e7fcc877262a87ee +Block 0023 [ 54]: eae055d6a0e7fdd3 +Block 0023 [ 55]: db620e9d037e13b6 +Block 0023 [ 56]: 469935d3b817996d +Block 0023 [ 57]: ee245d8a65759846 +Block 0023 [ 58]: b53d6d62749bba67 +Block 0023 [ 59]: dbf209dc213dfad3 +Block 0023 [ 60]: e36b204b799683ce +Block 0023 [ 61]: 1455b7fc3037401f +Block 0023 [ 62]: 42ce4ef72d07cd55 +Block 0023 [ 63]: 92eb30d2eb66f108 +Block 0023 [ 64]: 8fa86c51ef64302a +Block 0023 [ 65]: 2d0d0d36976fbc53 +Block 0023 [ 66]: 5fc6d2b9917bc624 +Block 0023 [ 67]: 889cf6888dd7bc8a +Block 0023 [ 68]: 992f099b98c3740c +Block 0023 [ 69]: 12fe92fe02ee099a +Block 0023 [ 70]: 23ce13d7948ddd64 +Block 0023 [ 71]: 33ee61ee295d4fa0 +Block 0023 [ 72]: 8283374ec0cce033 +Block 0023 [ 73]: fff2602247882991 +Block 0023 [ 74]: 4b1663575c159028 +Block 0023 [ 75]: bafdb75175f3f801 +Block 0023 [ 76]: 4896dc4bf1314297 +Block 0023 [ 77]: c194e7febcc3f109 +Block 0023 [ 78]: 58479af120c28438 +Block 0023 [ 79]: a4a0a51c58e36277 +Block 0023 [ 80]: 0b3bb203c682dc67 +Block 0023 [ 81]: 746cd2daa1e039dd +Block 0023 [ 82]: 778726fad45bc5c4 +Block 0023 [ 83]: 7032fd18f64ba5f7 +Block 0023 [ 84]: bfc6a54ff3c4b225 +Block 0023 [ 85]: 72b34d7cdd4ce5a0 +Block 0023 [ 86]: a98b6dcc105c6599 +Block 0023 [ 87]: f1e96f02fad3ed0b +Block 0023 [ 88]: 1939fc5e44020b06 +Block 0023 [ 89]: 448dfdd8798a4874 +Block 0023 [ 90]: 98a2c3a040beee9a +Block 0023 [ 91]: 6f2db254dd4b6380 +Block 0023 [ 92]: 08c4e1603c2e6090 +Block 0023 [ 93]: f827733c9a22a2ce +Block 0023 [ 94]: 3d1c8748079a56a3 +Block 0023 [ 95]: 7ae919efdd933131 +Block 0023 [ 96]: c727cf1cb2808cb3 +Block 0023 [ 97]: 7b6def6b630a169e +Block 0023 [ 98]: 6ef5ceefdf3d02bf +Block 0023 [ 99]: d181753664d13703 +Block 0023 [100]: 502f862c989e3fa7 +Block 0023 [101]: bb2f03f33d6ac3ae +Block 0023 [102]: 5c604b717948a33a +Block 0023 [103]: 630988dfb218abe5 +Block 0023 [104]: 5acb7fd208d802db +Block 0023 [105]: ac830527c5e999b1 +Block 0023 [106]: 516fd37d43ae2d1e +Block 0023 [107]: 594c0dc0159c63c6 +Block 0023 [108]: 836bc0c551eded8b +Block 0023 [109]: e0eddf7b8bf4760e +Block 0023 [110]: 47942839c8110b8f +Block 0023 [111]: dcb4aca02099f907 +Block 0023 [112]: ac918e1eb8d52a65 +Block 0023 [113]: 5146539f9438d2a6 +Block 0023 [114]: 922b0f0abfd46794 +Block 0023 [115]: 3fb0f166928220e4 +Block 0023 [116]: e2c9d29dbff352c8 +Block 0023 [117]: 3c949bb615b76a18 +Block 0023 [118]: 09881809f1e367b9 +Block 0023 [119]: d1fe339181b8b543 +Block 0023 [120]: b7fd1e77372bef3f +Block 0023 [121]: 03773182b98b9987 +Block 0023 [122]: 9e840ac0cc8d09ac +Block 0023 [123]: 2f45e7e49be08dfc +Block 0023 [124]: 6fe8bca985b15f5a +Block 0023 [125]: 594084ec59454bea +Block 0023 [126]: 5d0c687a81fc544d +Block 0023 [127]: ee89421c46d7e558 +Block 0024 [ 0]: fa103a94eb8b6e74 +Block 0024 [ 1]: 71cf5ea7430c6609 +Block 0024 [ 2]: 379c6751fee7ae1b +Block 0024 [ 3]: 1f3f70b9027f6e7c +Block 0024 [ 4]: 75d20e9caa8fa717 +Block 0024 [ 5]: 115a61491b07b6cd +Block 0024 [ 6]: 7932288af80cd9bf +Block 0024 [ 7]: 6535b5d2d138f903 +Block 0024 [ 8]: 284d6527a81184ec +Block 0024 [ 9]: 4e70f9959222fcbb +Block 0024 [ 10]: dd2a61a55cdc78e3 +Block 0024 [ 11]: 8365ad7d50f8f015 +Block 0024 [ 12]: ca4972f76a1c0238 +Block 0024 [ 13]: a6c0011066aa15b7 +Block 0024 [ 14]: 9eab0e1c3130d275 +Block 0024 [ 15]: aa76c422fa6b9f84 +Block 0024 [ 16]: 555e0ac5402670f1 +Block 0024 [ 17]: 0e2aa8b082335a73 +Block 0024 [ 18]: fa0aa4e7358150ac +Block 0024 [ 19]: a8f0ae6455d0cc7f +Block 0024 [ 20]: 24f1ee88bf0fabf7 +Block 0024 [ 21]: 38563cb2b3e99490 +Block 0024 [ 22]: 161de2f55406017c +Block 0024 [ 23]: 21c2167cf87df602 +Block 0024 [ 24]: 1cdc9f40d0c13285 +Block 0024 [ 25]: 734995aaa9ae30a4 +Block 0024 [ 26]: 74683a21713b323b +Block 0024 [ 27]: 1b7a14dd0ae8c7b0 +Block 0024 [ 28]: e93ebff9df6564ef +Block 0024 [ 29]: abe93118fe044789 +Block 0024 [ 30]: 41466094f1898728 +Block 0024 [ 31]: ea57b47d087a417a +Block 0024 [ 32]: 4c53c6cbcfd96e90 +Block 0024 [ 33]: 3adea2be4c2966a6 +Block 0024 [ 34]: 1823455650de85f3 +Block 0024 [ 35]: daf707bd14f21c4a +Block 0024 [ 36]: 600ca4b48bcbcf53 +Block 0024 [ 37]: b1af608e1c1acfce +Block 0024 [ 38]: 145d6117eda40e01 +Block 0024 [ 39]: 43bb28822f88806f +Block 0024 [ 40]: 18fd37e5c8359f98 +Block 0024 [ 41]: 7d93b6fae58530cf +Block 0024 [ 42]: 5b4cd795c04b4bf1 +Block 0024 [ 43]: 38dad5655f02d404 +Block 0024 [ 44]: af5f968c1a391d62 +Block 0024 [ 45]: c37bd6023c551d3c +Block 0024 [ 46]: f0c7f2917fbf51fb +Block 0024 [ 47]: c53f7f33cb2cb648 +Block 0024 [ 48]: eb35a7abedeedf32 +Block 0024 [ 49]: dd7fa26ee17cd9fc +Block 0024 [ 50]: f5fcce040a9308fa +Block 0024 [ 51]: a4552572b9348b7f +Block 0024 [ 52]: 7909ee855e91d636 +Block 0024 [ 53]: 94f69b3368d2c478 +Block 0024 [ 54]: 2bf78c27935d13ff +Block 0024 [ 55]: 36b9ed5e69ae9474 +Block 0024 [ 56]: 48fcc8a46a27b79b +Block 0024 [ 57]: b856786098b8bacd +Block 0024 [ 58]: 20dc555f833c4cad +Block 0024 [ 59]: ffdd83a0f20b35d1 +Block 0024 [ 60]: 13cfff8112e27de4 +Block 0024 [ 61]: fc935988d81e3589 +Block 0024 [ 62]: f0eee3a476f22d0c +Block 0024 [ 63]: fdcd5ba6dd44cf97 +Block 0024 [ 64]: e68d31d6f9ef3f8e +Block 0024 [ 65]: 508f9ff8d087e9f4 +Block 0024 [ 66]: f429f0cba38d7842 +Block 0024 [ 67]: 182fb1cac2acc609 +Block 0024 [ 68]: ca9a4568171cde9c +Block 0024 [ 69]: d47e38dba8e537e5 +Block 0024 [ 70]: bd743a39cd59f99c +Block 0024 [ 71]: 495abdd1bd1fc0f2 +Block 0024 [ 72]: 148c5ba07f03a932 +Block 0024 [ 73]: 904c4a6a79abfd96 +Block 0024 [ 74]: deecdf43f7698331 +Block 0024 [ 75]: e4f67a19d7041b1e +Block 0024 [ 76]: 16b5848fd1b24266 +Block 0024 [ 77]: 7d7ac333b809d08f +Block 0024 [ 78]: 35eaa6ae35afd3f1 +Block 0024 [ 79]: 5fca382578f0aba3 +Block 0024 [ 80]: a2250744c418ad53 +Block 0024 [ 81]: fadbb88c2f52c4d9 +Block 0024 [ 82]: d5954ae05fec3428 +Block 0024 [ 83]: d47ef4350d39f8b3 +Block 0024 [ 84]: 63bd863fa81e3d55 +Block 0024 [ 85]: 5b210d8edd4bf343 +Block 0024 [ 86]: 86216a2d781e3aba +Block 0024 [ 87]: 925a75c19797e906 +Block 0024 [ 88]: 0f4879030aa235b8 +Block 0024 [ 89]: 850d9f1d51e61cba +Block 0024 [ 90]: d21cbab6dc6a90f1 +Block 0024 [ 91]: f0288cd7780dd66b +Block 0024 [ 92]: 987f7d6f5e033538 +Block 0024 [ 93]: 339f9acd310bc324 +Block 0024 [ 94]: 3b0c17458702ddd1 +Block 0024 [ 95]: 8e2de118a2df9e6e +Block 0024 [ 96]: 355f5b40341e6a6d +Block 0024 [ 97]: 97b426f12c8ecd0a +Block 0024 [ 98]: 5f6c0bd4f4ad4801 +Block 0024 [ 99]: d83ccd8e06c9b99e +Block 0024 [100]: 0092227b6d6aba22 +Block 0024 [101]: c0d9f079e67bee82 +Block 0024 [102]: ddc0cf6634af2d1c +Block 0024 [103]: 926f01523f7f52c2 +Block 0024 [104]: 55ff254c9117c227 +Block 0024 [105]: 462dcdc07963b99e +Block 0024 [106]: 1d34ff532c8e6510 +Block 0024 [107]: 0fbf72a6de9b69db +Block 0024 [108]: 5e93cb1d7c955aaf +Block 0024 [109]: fa36f19bb7c882a0 +Block 0024 [110]: 6c6f68d785518d9c +Block 0024 [111]: 632bc6c3ce8a5029 +Block 0024 [112]: 31945fc5020e6cf5 +Block 0024 [113]: 1c097aff84bbc77e +Block 0024 [114]: 8649e1bf2f457f18 +Block 0024 [115]: db4da4890b69094a +Block 0024 [116]: 8d542edade32524a +Block 0024 [117]: 4b79711c5f1d24ef +Block 0024 [118]: 18b44b2118a930eb +Block 0024 [119]: 1ad45f28f08be690 +Block 0024 [120]: 305613dbe3e7ae65 +Block 0024 [121]: cc10a15534f46c09 +Block 0024 [122]: 0cd495b83f19a0e9 +Block 0024 [123]: 70b84f26fd32b9c1 +Block 0024 [124]: 059b57532d61ef20 +Block 0024 [125]: 0db5ea4dac04395d +Block 0024 [126]: 84e4b96503cad6e0 +Block 0024 [127]: b22cece0e90325b5 +Block 0025 [ 0]: acadb47787e0e62d +Block 0025 [ 1]: 89db15bfeb35c67c +Block 0025 [ 2]: ed2997a2cd0015a0 +Block 0025 [ 3]: 194671063cd59b39 +Block 0025 [ 4]: bfb10fa28657c239 +Block 0025 [ 5]: a3c9f57c2e492a5a +Block 0025 [ 6]: d2ad1559dc2faa60 +Block 0025 [ 7]: 07b30a013f1f0e8c +Block 0025 [ 8]: 9e24764dd386d411 +Block 0025 [ 9]: 9eecaf179e51d7a6 +Block 0025 [ 10]: 1e3ccb14c450b9fb +Block 0025 [ 11]: a02fbd9c3fdd5cd8 +Block 0025 [ 12]: cae040fffa896b67 +Block 0025 [ 13]: c30348e230fe34e7 +Block 0025 [ 14]: 2bab58f77b702f0c +Block 0025 [ 15]: 458a8b1be3ba75cc +Block 0025 [ 16]: 05f630c5b0fcefce +Block 0025 [ 17]: bbae1e1b7b233558 +Block 0025 [ 18]: a4f3cdc1a95349d6 +Block 0025 [ 19]: 6d48d6fc63a2b369 +Block 0025 [ 20]: 5a58b2e088572a86 +Block 0025 [ 21]: 93021d253a6ca370 +Block 0025 [ 22]: c4669e03aba0e41c +Block 0025 [ 23]: 517c21f6f717beef +Block 0025 [ 24]: ad1ed0842b693990 +Block 0025 [ 25]: 932ea3b600e8fa63 +Block 0025 [ 26]: 94412081fe5d7db6 +Block 0025 [ 27]: 0c9587581ca0676a +Block 0025 [ 28]: f6b804ef2660bb1d +Block 0025 [ 29]: 342294f1c057f5ac +Block 0025 [ 30]: 6cf1635982de5d91 +Block 0025 [ 31]: 26b51a9b4901465c +Block 0025 [ 32]: 47560ef80d00e93d +Block 0025 [ 33]: 1719bdd4357a7f33 +Block 0025 [ 34]: 6478f7b2660c9b93 +Block 0025 [ 35]: bd5209fc80832ddc +Block 0025 [ 36]: f6592e8643238445 +Block 0025 [ 37]: 6f204a61f25e4b12 +Block 0025 [ 38]: 35694628a2ff8abd +Block 0025 [ 39]: fea9ac42aa3ceff1 +Block 0025 [ 40]: 36e352f162c706fd +Block 0025 [ 41]: 8b3a6b5850374e58 +Block 0025 [ 42]: 451d1544d57f7618 +Block 0025 [ 43]: 62e57656237e4b0e +Block 0025 [ 44]: d85e6c03cda3ff01 +Block 0025 [ 45]: e10874aa046d1dfb +Block 0025 [ 46]: b6a0b09d65515347 +Block 0025 [ 47]: 86cbd5f2cb16e8ab +Block 0025 [ 48]: a4a135272607deff +Block 0025 [ 49]: f445fd366d4ff7f2 +Block 0025 [ 50]: dd15c10173acb786 +Block 0025 [ 51]: ed741e791affc000 +Block 0025 [ 52]: 1515bd8fd6a6d28b +Block 0025 [ 53]: d28947fae8e86d43 +Block 0025 [ 54]: 5670b6f88fc2e9ed +Block 0025 [ 55]: bc1776fe1e2a05d2 +Block 0025 [ 56]: b508250a4219c65a +Block 0025 [ 57]: 45f02eda1a48ea03 +Block 0025 [ 58]: 607bcf65c28ccb29 +Block 0025 [ 59]: 111e9405cc0a9c58 +Block 0025 [ 60]: abb33ee022dda838 +Block 0025 [ 61]: b2240c4df99b2d4c +Block 0025 [ 62]: e8c4a136a3eadcf9 +Block 0025 [ 63]: d7ec593b9aef542b +Block 0025 [ 64]: 6f510d1b002ec558 +Block 0025 [ 65]: a01e2071f0eb2e94 +Block 0025 [ 66]: 26f75e619cfb5140 +Block 0025 [ 67]: f1145e65bfdd120f +Block 0025 [ 68]: 5f0620860cd88389 +Block 0025 [ 69]: 52ca8641c7ebc6ac +Block 0025 [ 70]: a3c97e5904a54b1b +Block 0025 [ 71]: 57b37085fd40a46b +Block 0025 [ 72]: 8674f89c371ad57e +Block 0025 [ 73]: d939b68dfa8da895 +Block 0025 [ 74]: a86e84431961783c +Block 0025 [ 75]: 4365b03c8a63133b +Block 0025 [ 76]: a1b358ddc73aaf52 +Block 0025 [ 77]: e697264359e17f7d +Block 0025 [ 78]: 54cd0039bb353cb6 +Block 0025 [ 79]: c607259b67e3ce6f +Block 0025 [ 80]: 4b329cc61bf3eb5a +Block 0025 [ 81]: 2492f1f9bc9a8b5d +Block 0025 [ 82]: 7d4f7b9a4969b0a3 +Block 0025 [ 83]: b30cd7f1eba80723 +Block 0025 [ 84]: 4603bdb7771b5a18 +Block 0025 [ 85]: 22370064c642e39b +Block 0025 [ 86]: 67933471b75cf941 +Block 0025 [ 87]: 707ebb2467979a75 +Block 0025 [ 88]: 71bdbb34998bb883 +Block 0025 [ 89]: 7ca6b42ea9fb26a5 +Block 0025 [ 90]: 350e49361365bf71 +Block 0025 [ 91]: 33349dc1ced81fde +Block 0025 [ 92]: a358ee5e36aaa4c4 +Block 0025 [ 93]: 937b184837c13da3 +Block 0025 [ 94]: bd7a02b7e7b72a62 +Block 0025 [ 95]: d0656b37c7dc422d +Block 0025 [ 96]: fe65fcbe8a0ad440 +Block 0025 [ 97]: 12ed44baba3ebacb +Block 0025 [ 98]: 9a680c17e49ed88a +Block 0025 [ 99]: b839bf85c6d3956b +Block 0025 [100]: 75e6674117502c08 +Block 0025 [101]: d6cb9459957d0e4e +Block 0025 [102]: 2f025b945f2f71b0 +Block 0025 [103]: b15b992ebf46ea26 +Block 0025 [104]: a58186fd4f22c433 +Block 0025 [105]: db2c21ec363674eb +Block 0025 [106]: f88fe356feaaf1ff +Block 0025 [107]: 570f6a4b4849e237 +Block 0025 [108]: 14035bc7f48df466 +Block 0025 [109]: ddb45cdddb15dbdb +Block 0025 [110]: f0572535fe525143 +Block 0025 [111]: 1ce3c0282ea29234 +Block 0025 [112]: d73347c8a9c6df0f +Block 0025 [113]: 721642c7734110aa +Block 0025 [114]: f5b43e20200e678d +Block 0025 [115]: 53652fc6c3886359 +Block 0025 [116]: caa4c48dc6da888d +Block 0025 [117]: 8dbe7af4765ba285 +Block 0025 [118]: e7c34d642ab8379c +Block 0025 [119]: 694eba65c6198cd1 +Block 0025 [120]: 951e0c3a0fc9dac2 +Block 0025 [121]: a9512f0ae3e175bf +Block 0025 [122]: f912282c1fe8850d +Block 0025 [123]: 88ba06847be5780f +Block 0025 [124]: 9cf3b21809173c93 +Block 0025 [125]: 87afd19c5e19a948 +Block 0025 [126]: 990f1184b82f0c59 +Block 0025 [127]: 94d8c54ba08642ab +Block 0026 [ 0]: 50b295833dfb05dd +Block 0026 [ 1]: 567661a5a807fec5 +Block 0026 [ 2]: 03e4375c0677aa6c +Block 0026 [ 3]: 8df882b653a8e546 +Block 0026 [ 4]: 06a1a2e5b4dd1497 +Block 0026 [ 5]: ebf09eb380f1d347 +Block 0026 [ 6]: 8d674162d4d58415 +Block 0026 [ 7]: 8e9640ef1effca77 +Block 0026 [ 8]: 5415ecd367187b2f +Block 0026 [ 9]: f4e96c6f043df6ff +Block 0026 [ 10]: 75f864f3d561d897 +Block 0026 [ 11]: 401d802ccd58cbc2 +Block 0026 [ 12]: a2211178619d5b24 +Block 0026 [ 13]: 39d5bee61d034875 +Block 0026 [ 14]: 52815128485ab93d +Block 0026 [ 15]: 0598d9f55a912669 +Block 0026 [ 16]: 941552dd580575c0 +Block 0026 [ 17]: 8f619028dcc6784f +Block 0026 [ 18]: a6ecb0eb7e1cfba9 +Block 0026 [ 19]: 5e2e43be46ff1cfd +Block 0026 [ 20]: 3c015d055ab6467c +Block 0026 [ 21]: 1340e475f5b92367 +Block 0026 [ 22]: 100575c85d3eefe8 +Block 0026 [ 23]: 25baddd62863a612 +Block 0026 [ 24]: c3d327c5bfd22a3a +Block 0026 [ 25]: fa7a754f2bd820ea +Block 0026 [ 26]: 1d42473fb2d97483 +Block 0026 [ 27]: 3471d76071e9809b +Block 0026 [ 28]: cdb7c4192c5ae660 +Block 0026 [ 29]: 963ed324e1ac1061 +Block 0026 [ 30]: 421d12df283ff52e +Block 0026 [ 31]: 70f87bee5b64efc1 +Block 0026 [ 32]: 0421bc40a8db2f7d +Block 0026 [ 33]: b65a077b1e547d8a +Block 0026 [ 34]: b4dc92b0f61c5029 +Block 0026 [ 35]: 555b623fb30f1237 +Block 0026 [ 36]: 262edb116a2993a6 +Block 0026 [ 37]: 9582ef318a3ee8f9 +Block 0026 [ 38]: 7affb49d286d9632 +Block 0026 [ 39]: 27c704dfb98b3acf +Block 0026 [ 40]: 13e542f23f896758 +Block 0026 [ 41]: c8bbd0d56dfd7638 +Block 0026 [ 42]: eaba65a57471e933 +Block 0026 [ 43]: c98607a547832622 +Block 0026 [ 44]: 1ebd1b8afb0bf886 +Block 0026 [ 45]: f206507bfe115f86 +Block 0026 [ 46]: 326842eacb06c6bb +Block 0026 [ 47]: 95c621502add5dad +Block 0026 [ 48]: 60bcfce88154b796 +Block 0026 [ 49]: 9d0982e683e06e1f +Block 0026 [ 50]: 6e404290e8de2e0a +Block 0026 [ 51]: f7379a896794c18c +Block 0026 [ 52]: 7b2bfcb545e5ce3b +Block 0026 [ 53]: c7ea3b36e261e463 +Block 0026 [ 54]: 087aadf263e814dc +Block 0026 [ 55]: 470e873d7a28d2ea +Block 0026 [ 56]: 9c1de86f22c84905 +Block 0026 [ 57]: 0cb31716564be97d +Block 0026 [ 58]: 57c84f1733b38d11 +Block 0026 [ 59]: 90054ae99b4a469a +Block 0026 [ 60]: 44fc18fd1fbbfdf5 +Block 0026 [ 61]: 896474ccfa2a8abe +Block 0026 [ 62]: 6d1a83c45ab01d07 +Block 0026 [ 63]: 6e1db62335275c0e +Block 0026 [ 64]: f9e1778a7ace16c3 +Block 0026 [ 65]: 1a588e9ded9674b4 +Block 0026 [ 66]: d835296109312572 +Block 0026 [ 67]: 2e647c1fd56d0e9c +Block 0026 [ 68]: 2cfc5d8177130f53 +Block 0026 [ 69]: 48f63500ec356093 +Block 0026 [ 70]: c07082b25b554e7e +Block 0026 [ 71]: 28db93b22107fe9a +Block 0026 [ 72]: 6c8fb3681f1bf160 +Block 0026 [ 73]: 760d701be621a605 +Block 0026 [ 74]: 0cfda0e5c55ec8c7 +Block 0026 [ 75]: 5c6fdbbb2a8f8ff8 +Block 0026 [ 76]: aebfcee72b0950a3 +Block 0026 [ 77]: 9e2cb7decd8c3d48 +Block 0026 [ 78]: 27d55cfcb210dc24 +Block 0026 [ 79]: 55ad71b954f6abaf +Block 0026 [ 80]: be9834ba9ea0ac99 +Block 0026 [ 81]: 57f29d843db85712 +Block 0026 [ 82]: 9479adb08abb161a +Block 0026 [ 83]: 206421c067eb9317 +Block 0026 [ 84]: 7d72ee59b7d4463f +Block 0026 [ 85]: f02df93b0e19851d +Block 0026 [ 86]: 8dfa179b2fc85c50 +Block 0026 [ 87]: 4317539dae930952 +Block 0026 [ 88]: 4dc95947a415e992 +Block 0026 [ 89]: c828a34a403c233c +Block 0026 [ 90]: 44bde65a36130b0c +Block 0026 [ 91]: 43a9331614311fab +Block 0026 [ 92]: e343ad268e0db819 +Block 0026 [ 93]: 3bf80e0968fb4740 +Block 0026 [ 94]: 006f6758fb198787 +Block 0026 [ 95]: 5e4580c97af6364c +Block 0026 [ 96]: 0674fa0e5c5bb448 +Block 0026 [ 97]: 2b9cf6328e071183 +Block 0026 [ 98]: e82012c0f1292107 +Block 0026 [ 99]: 0041eb6c74330b21 +Block 0026 [100]: a0e1d5da140e1559 +Block 0026 [101]: 0cae4836a0580159 +Block 0026 [102]: 083475b819af769b +Block 0026 [103]: 497fcd3f6f96c7a6 +Block 0026 [104]: 1633d9be1cbeba9c +Block 0026 [105]: 431079c20c6dac62 +Block 0026 [106]: 5797684ab5a51658 +Block 0026 [107]: 6c669f583c1269c2 +Block 0026 [108]: a5d4304877962ed9 +Block 0026 [109]: 16abbaf910a907a7 +Block 0026 [110]: 7b80279a7ba988aa +Block 0026 [111]: 0bc8cea2c7084aa9 +Block 0026 [112]: 264cb55c54d5ad27 +Block 0026 [113]: 1a7f8846e62bba9c +Block 0026 [114]: 1c03cc75f7ce74e4 +Block 0026 [115]: 9944571757ddc5fa +Block 0026 [116]: 529e6ae1da16744d +Block 0026 [117]: c5153e8300f6dbed +Block 0026 [118]: abc65417de290d1b +Block 0026 [119]: 1f004424202a1b0a +Block 0026 [120]: cf3e839eeb92b189 +Block 0026 [121]: ef8b63f709186be2 +Block 0026 [122]: 1381a46de4cc9b60 +Block 0026 [123]: 46ef069715fbb521 +Block 0026 [124]: 5c225fbc8021dcc5 +Block 0026 [125]: bef20cb6a61f0826 +Block 0026 [126]: 688df34aa80029c2 +Block 0026 [127]: cd08d3de46464946 +Block 0027 [ 0]: f096dc3185d966c2 +Block 0027 [ 1]: d0ad3ab0d0656bae +Block 0027 [ 2]: 74c2422614d2ec64 +Block 0027 [ 3]: 687c01d102663a96 +Block 0027 [ 4]: a7a23967ca1e4843 +Block 0027 [ 5]: ecebcdc9d292e5bb +Block 0027 [ 6]: 7fa0abe1f526c09f +Block 0027 [ 7]: 37fc299537e25b91 +Block 0027 [ 8]: 99bee1a0a45aac3a +Block 0027 [ 9]: cf15202220272cb2 +Block 0027 [ 10]: eae1fcc2bceafb95 +Block 0027 [ 11]: dd5bd3d9fad9f727 +Block 0027 [ 12]: 80567562dcba64cf +Block 0027 [ 13]: e508747af9686bc4 +Block 0027 [ 14]: 4182eece1c93274a +Block 0027 [ 15]: 7edc10b4a33b2e1b +Block 0027 [ 16]: 7ec5682a947beac0 +Block 0027 [ 17]: 118d651eaa9b0f62 +Block 0027 [ 18]: b61d88641f68ab5d +Block 0027 [ 19]: 35badd2de0889c48 +Block 0027 [ 20]: 2c8f346e6876f454 +Block 0027 [ 21]: 478304ae6349d7e8 +Block 0027 [ 22]: 6d2810500634084e +Block 0027 [ 23]: 96d3d864a7d25fb4 +Block 0027 [ 24]: f29dfe7a753d21e4 +Block 0027 [ 25]: 2d2092e0345b81b4 +Block 0027 [ 26]: d3d4e7b8f30b5b4d +Block 0027 [ 27]: 966cc775e108688d +Block 0027 [ 28]: 92e135470b853dda +Block 0027 [ 29]: 1270493a870aa921 +Block 0027 [ 30]: 919cd6c705466b1d +Block 0027 [ 31]: a2939acdc6e4d066 +Block 0027 [ 32]: a304ab077675c888 +Block 0027 [ 33]: dfb58333a936fe6c +Block 0027 [ 34]: cca98347e639d280 +Block 0027 [ 35]: e0c7751fa0b95207 +Block 0027 [ 36]: 848c0482ff822b16 +Block 0027 [ 37]: 5af01581b7e62b6c +Block 0027 [ 38]: b016464dd3036bca +Block 0027 [ 39]: 1fb2a2ee30dff1a4 +Block 0027 [ 40]: fbf4e0ffa0ad1f2e +Block 0027 [ 41]: edf5f3be5331f61c +Block 0027 [ 42]: 7e5f55881a225643 +Block 0027 [ 43]: 62341c5352c796cb +Block 0027 [ 44]: bf162dc8d61c35ad +Block 0027 [ 45]: eee782d2dfb9f576 +Block 0027 [ 46]: 6b7ba3c07d263005 +Block 0027 [ 47]: e4b04cbfa903cf30 +Block 0027 [ 48]: 062e83f4560a79d8 +Block 0027 [ 49]: 17c1af32aa700e69 +Block 0027 [ 50]: d439638e74b2f66b +Block 0027 [ 51]: 64fd9c61d612a243 +Block 0027 [ 52]: 8dd0336357856c6d +Block 0027 [ 53]: 6d4c9d450b8ffb59 +Block 0027 [ 54]: 077a74414a905dc9 +Block 0027 [ 55]: 8046a314cc058ee5 +Block 0027 [ 56]: d8d54fce2d967c0e +Block 0027 [ 57]: 72035c981b1306f8 +Block 0027 [ 58]: 817343d510a272c3 +Block 0027 [ 59]: f07eb869b912aac8 +Block 0027 [ 60]: 1f57bf346c0b9468 +Block 0027 [ 61]: 84b55995890629ca +Block 0027 [ 62]: dec290057cec9c1b +Block 0027 [ 63]: 539154b989212510 +Block 0027 [ 64]: 58784ed313cd22f7 +Block 0027 [ 65]: 9e38a70af5a7db0b +Block 0027 [ 66]: dab3720f488e7c35 +Block 0027 [ 67]: a507550806424731 +Block 0027 [ 68]: 685b6a98ea7bbe6f +Block 0027 [ 69]: 9e8e21270e505097 +Block 0027 [ 70]: b77daaaf5e0fe51d +Block 0027 [ 71]: 79ef13739388ce3f +Block 0027 [ 72]: fe00eafe45c56be6 +Block 0027 [ 73]: bc7b9c5baff182fb +Block 0027 [ 74]: b35eabd2e8175144 +Block 0027 [ 75]: 99f48f8251f50e27 +Block 0027 [ 76]: ae1de2e512df9a3a +Block 0027 [ 77]: 470ee861030b164a +Block 0027 [ 78]: 5cd8f4c145b8dc2b +Block 0027 [ 79]: 41ad914535bf1043 +Block 0027 [ 80]: c5c20273c2ea694d +Block 0027 [ 81]: 6910400d047274eb +Block 0027 [ 82]: fa23ccc88611ed27 +Block 0027 [ 83]: 3fde5d5785ff6868 +Block 0027 [ 84]: 5ccc668ca420c783 +Block 0027 [ 85]: 21ad91fdb222acab +Block 0027 [ 86]: 16adf902927c8366 +Block 0027 [ 87]: 3cdb6e0c7a52bfe8 +Block 0027 [ 88]: a1bc687942afa21e +Block 0027 [ 89]: 8f54dddce8f7fd5c +Block 0027 [ 90]: 7b098fa4d4b6ab4a +Block 0027 [ 91]: a20634cbbf712aba +Block 0027 [ 92]: dd7777ea8afb70c9 +Block 0027 [ 93]: be05beeef4a4b8ee +Block 0027 [ 94]: e8b1925905bc113d +Block 0027 [ 95]: f0a1d60ea245eb7b +Block 0027 [ 96]: 1772469e07a94532 +Block 0027 [ 97]: 1df3f8439e4aa1ce +Block 0027 [ 98]: 66d5968f758bf1b0 +Block 0027 [ 99]: 5c35f016cfa6930e +Block 0027 [100]: 814ba6154fda28ad +Block 0027 [101]: e3dbf45106e1200d +Block 0027 [102]: ebb117726dab2d87 +Block 0027 [103]: 9e44b77784c653dd +Block 0027 [104]: a407d0952407cbf3 +Block 0027 [105]: 5e2110099e1cd4ea +Block 0027 [106]: 0f18e49033f7dc41 +Block 0027 [107]: c4332aa0c9c3c053 +Block 0027 [108]: 05b77caab4522bce +Block 0027 [109]: 29a3efbc52325114 +Block 0027 [110]: e1c0e2502bfa61af +Block 0027 [111]: f2a63277d6a3862d +Block 0027 [112]: 91b78dd58fc89d92 +Block 0027 [113]: 83a9e84f93692327 +Block 0027 [114]: fb6b7e7168751ec1 +Block 0027 [115]: 842c25ba64d5a3d8 +Block 0027 [116]: a50ebc02ce848a46 +Block 0027 [117]: 7fef4c3fd17127e8 +Block 0027 [118]: d661b87fbf9a2e34 +Block 0027 [119]: 98b71c1163dee85f +Block 0027 [120]: dfcacdd89eaa6e56 +Block 0027 [121]: b9abd457c2d22663 +Block 0027 [122]: 96e2ffbe173bb116 +Block 0027 [123]: f08974b04d026456 +Block 0027 [124]: f837e1862f495cc1 +Block 0027 [125]: 9dc79c703e07b954 +Block 0027 [126]: 0edb3ea5ce47e628 +Block 0027 [127]: bb94cd2b6c52fd2f +Block 0028 [ 0]: 0b8bfa4c5c97692d +Block 0028 [ 1]: 3fa01aeccfbcdebf +Block 0028 [ 2]: 9b19e228c5ffe5ec +Block 0028 [ 3]: 4624ebbea8947c48 +Block 0028 [ 4]: c30d6ed540afa086 +Block 0028 [ 5]: 2a61862b51cc4001 +Block 0028 [ 6]: 986a72ca0d3b275f +Block 0028 [ 7]: 8254f5483e9217c4 +Block 0028 [ 8]: a28f52ee554db367 +Block 0028 [ 9]: 7e03ad05d1743a6f +Block 0028 [ 10]: 5756878036e93a0b +Block 0028 [ 11]: ba168dcebfbe1b24 +Block 0028 [ 12]: 4eca447838c8fcf3 +Block 0028 [ 13]: 5dd09b4e010e7181 +Block 0028 [ 14]: 11aa79e5cfcb306f +Block 0028 [ 15]: 07a7d142ea04b372 +Block 0028 [ 16]: f2af2f7e65bc0d87 +Block 0028 [ 17]: baa9df98896b93a4 +Block 0028 [ 18]: 9c15d421cb8ba455 +Block 0028 [ 19]: fe2be76efa88ed21 +Block 0028 [ 20]: 1b37035070f9cbb9 +Block 0028 [ 21]: bbcbe391e2ce09f6 +Block 0028 [ 22]: 178ac0961508db49 +Block 0028 [ 23]: eff7abc82697e447 +Block 0028 [ 24]: 40f84b5085d1cd45 +Block 0028 [ 25]: 67775e01d463e559 +Block 0028 [ 26]: 8d07e8cdc435f37d +Block 0028 [ 27]: 9934217b91a7d414 +Block 0028 [ 28]: fa385dda3f4b1013 +Block 0028 [ 29]: 395a49ed50e1c9d2 +Block 0028 [ 30]: f329b164e220d024 +Block 0028 [ 31]: c660fbcdc4aa0785 +Block 0028 [ 32]: d6645444da6ace9d +Block 0028 [ 33]: cda566bd2bd27f63 +Block 0028 [ 34]: a282c756f0f20738 +Block 0028 [ 35]: db2ab31cd2a9ed5e +Block 0028 [ 36]: d6fbbe901dc5cb15 +Block 0028 [ 37]: 009aa73089ee763f +Block 0028 [ 38]: c09ecb723ca77bf1 +Block 0028 [ 39]: 79985c69f715a7be +Block 0028 [ 40]: ce8357764e0d204b +Block 0028 [ 41]: 26433dec7d36c631 +Block 0028 [ 42]: 9a70506191b6b793 +Block 0028 [ 43]: 79c2f30246220b39 +Block 0028 [ 44]: 1d2077172eff0607 +Block 0028 [ 45]: a9de9fa916722872 +Block 0028 [ 46]: d89b88b87ca12d3e +Block 0028 [ 47]: 870c847a554f4fef +Block 0028 [ 48]: a3a7a2748bfdb1de +Block 0028 [ 49]: edd069eee7b46d58 +Block 0028 [ 50]: 652602bbf39aaab7 +Block 0028 [ 51]: 2d4f209f3845e1e2 +Block 0028 [ 52]: 21308472e7be9f3a +Block 0028 [ 53]: 6c2db272b2a22b3c +Block 0028 [ 54]: 07a0740492d2359b +Block 0028 [ 55]: 374739683573a339 +Block 0028 [ 56]: 96c6ca6c0416b67e +Block 0028 [ 57]: b55df4f9cd261108 +Block 0028 [ 58]: af862bd549991a2a +Block 0028 [ 59]: 7dad80edf5e8206e +Block 0028 [ 60]: 05c95b6a445cc1dc +Block 0028 [ 61]: aa157bbfbb22d1aa +Block 0028 [ 62]: ca7b3e7ab07c0d70 +Block 0028 [ 63]: 394cd42c5c06a3c0 +Block 0028 [ 64]: 3a4bcdf992fedb45 +Block 0028 [ 65]: bc3a86c8c1a65078 +Block 0028 [ 66]: 5c5aeb0ba453aeaf +Block 0028 [ 67]: f284834b9c12c294 +Block 0028 [ 68]: f40b0d89c6a0441e +Block 0028 [ 69]: a4c885144d2dfd4f +Block 0028 [ 70]: 995ccb8d3d3af7e7 +Block 0028 [ 71]: c04b150b328137e6 +Block 0028 [ 72]: 90e86832780c763b +Block 0028 [ 73]: 4b251c2ffb40fd28 +Block 0028 [ 74]: 6d7bcad44112d76a +Block 0028 [ 75]: 1910e0c9e3b1d838 +Block 0028 [ 76]: 502ce4c4567d9432 +Block 0028 [ 77]: 124b66d5caab14d8 +Block 0028 [ 78]: 3fade26963f7b685 +Block 0028 [ 79]: 706539b9aa256e7b +Block 0028 [ 80]: c60fb2c39aa1b794 +Block 0028 [ 81]: b0211dc59dc646f1 +Block 0028 [ 82]: f34537f1b3e7d8cc +Block 0028 [ 83]: ba3baa631204f008 +Block 0028 [ 84]: 8c70d71cb5a2e75e +Block 0028 [ 85]: 1baa6160eaacb35b +Block 0028 [ 86]: 1d5a7acefa143c97 +Block 0028 [ 87]: 61c5da59873dd000 +Block 0028 [ 88]: 0292ee3bebcb4896 +Block 0028 [ 89]: 78b3fdfedac96082 +Block 0028 [ 90]: 8c53202fc59c6ee0 +Block 0028 [ 91]: c84a57856de4f50d +Block 0028 [ 92]: edd6e10e8954bc69 +Block 0028 [ 93]: ee16b0aeecfb83a6 +Block 0028 [ 94]: f5d2407a655cd4fc +Block 0028 [ 95]: 5582eba4f4f336a4 +Block 0028 [ 96]: 386c6c2b31e071ad +Block 0028 [ 97]: 4b6789f4e9271a28 +Block 0028 [ 98]: 1732ab6cb3b1c80b +Block 0028 [ 99]: 15726eb3db8d583d +Block 0028 [100]: d7e0ceea926cab91 +Block 0028 [101]: 94703084e3bb47e1 +Block 0028 [102]: 75e539dbeb6bc96c +Block 0028 [103]: 2da516bfde306d23 +Block 0028 [104]: 112679a6295082fe +Block 0028 [105]: ed817f8eade76421 +Block 0028 [106]: f39d3920dbc72bcf +Block 0028 [107]: 5a1a9faf59352d55 +Block 0028 [108]: e89a7d450442923f +Block 0028 [109]: ba346fe4087e77e7 +Block 0028 [110]: 35492364250abde6 +Block 0028 [111]: 9832e2b7905992a1 +Block 0028 [112]: 10b9b9b31d3ac35b +Block 0028 [113]: e4b0106fde39639d +Block 0028 [114]: d300caff1b81fc16 +Block 0028 [115]: 4aeee1beed87381b +Block 0028 [116]: 54eede43bd7f508a +Block 0028 [117]: 51ffc1138420db2c +Block 0028 [118]: 5e765bb31b18c0c2 +Block 0028 [119]: 1bf00fb92186e7c2 +Block 0028 [120]: 32d4d8cdb00aff86 +Block 0028 [121]: c1a075505c618c74 +Block 0028 [122]: 2862f96036005511 +Block 0028 [123]: f7e86b9564e716f3 +Block 0028 [124]: a4498d8255501669 +Block 0028 [125]: 771f2428943d3630 +Block 0028 [126]: f4dbed4a8483b5f8 +Block 0028 [127]: 38e0618f70429e7a +Block 0029 [ 0]: 1342aa819759ad55 +Block 0029 [ 1]: 2a58d88b1313ee1d +Block 0029 [ 2]: 04380d2370776def +Block 0029 [ 3]: 2984280394553fa4 +Block 0029 [ 4]: e6e0cbf7515e7614 +Block 0029 [ 5]: 65d3039585de045b +Block 0029 [ 6]: fad2abab2d69eabf +Block 0029 [ 7]: 14f6856b255cc8b0 +Block 0029 [ 8]: cf5e53abb23fde4b +Block 0029 [ 9]: 0f9ed7c99a4186b1 +Block 0029 [ 10]: 5128f73f1c9c476a +Block 0029 [ 11]: daa8ace3701b388b +Block 0029 [ 12]: 528eef2a04f98732 +Block 0029 [ 13]: b2f7800cb0863ba7 +Block 0029 [ 14]: 4c7f9bc145bfca64 +Block 0029 [ 15]: 62cb81be906a7529 +Block 0029 [ 16]: ae6a747e1fe0c590 +Block 0029 [ 17]: 64c36f221ccd38cb +Block 0029 [ 18]: 62e82903b941ce11 +Block 0029 [ 19]: 34abc5adfb0b23c9 +Block 0029 [ 20]: 69ac60e945ade24d +Block 0029 [ 21]: 80642aeab6d7bca9 +Block 0029 [ 22]: 4c8395c9e008dc8a +Block 0029 [ 23]: 0e3fc29352116891 +Block 0029 [ 24]: 78f2c451e68d73f7 +Block 0029 [ 25]: 6a4594a1b3f1c724 +Block 0029 [ 26]: 768002b557fef95e +Block 0029 [ 27]: 7bdcf6b313041bfc +Block 0029 [ 28]: 2e4c3ba77b7dc340 +Block 0029 [ 29]: 73080545a3049a27 +Block 0029 [ 30]: 3b71ab0a0f6b5be0 +Block 0029 [ 31]: 8fb04622b683c1fa +Block 0029 [ 32]: 29367052161c185d +Block 0029 [ 33]: 54c7744f8bd9d6ac +Block 0029 [ 34]: 35bf09e564100364 +Block 0029 [ 35]: 88f3c401223434f8 +Block 0029 [ 36]: 96d01519f6d5f60c +Block 0029 [ 37]: 4872434a3b4be97b +Block 0029 [ 38]: b64455bbe358020f +Block 0029 [ 39]: b455a338bafb3877 +Block 0029 [ 40]: 101974b5b225f62a +Block 0029 [ 41]: bb130e2146078e1d +Block 0029 [ 42]: 08d5d8867a06cdcb +Block 0029 [ 43]: 5188fb4d5e177880 +Block 0029 [ 44]: 1e88286829af2a8b +Block 0029 [ 45]: 1fb55b9f7549c764 +Block 0029 [ 46]: e1b13f2e423836c0 +Block 0029 [ 47]: 21f928ab65ee3682 +Block 0029 [ 48]: dbb430a89dd1a2a0 +Block 0029 [ 49]: caeb04df4c3100b2 +Block 0029 [ 50]: 013548395a133533 +Block 0029 [ 51]: ceb65861a017b5a8 +Block 0029 [ 52]: 3503846ee3882099 +Block 0029 [ 53]: f2b3055f0274c056 +Block 0029 [ 54]: 3c1aaed297fa6a09 +Block 0029 [ 55]: a1b3eaa82adb7138 +Block 0029 [ 56]: 7c98c993986612c7 +Block 0029 [ 57]: 332e0a10cb62caa6 +Block 0029 [ 58]: 7255157123d19354 +Block 0029 [ 59]: 87fada98140da26c +Block 0029 [ 60]: aa8f500aa9b5b4b4 +Block 0029 [ 61]: 5334543eba7805d2 +Block 0029 [ 62]: cda91bedbba419c2 +Block 0029 [ 63]: 8500721d1be41584 +Block 0029 [ 64]: d7d443102fbfbc58 +Block 0029 [ 65]: c8509445b06f2de8 +Block 0029 [ 66]: 41b046af2881f5d4 +Block 0029 [ 67]: 5a3a48952a70c0e9 +Block 0029 [ 68]: 2084ab777d8696fb +Block 0029 [ 69]: 367e4408de9f5e17 +Block 0029 [ 70]: 484f3345ea0f2209 +Block 0029 [ 71]: c3e89ccdec8d22c0 +Block 0029 [ 72]: 0242efdae8284e48 +Block 0029 [ 73]: f42905a84a844efe +Block 0029 [ 74]: 4424a2d4a1197b13 +Block 0029 [ 75]: 1d6d68842f1f3baa +Block 0029 [ 76]: b2edca88f7391dd4 +Block 0029 [ 77]: 07fe96875027d8dd +Block 0029 [ 78]: 26d07af4b56aa62b +Block 0029 [ 79]: 42ed21346aa2e910 +Block 0029 [ 80]: 427767abb9fc5db4 +Block 0029 [ 81]: 0ac5fea84b1c8fea +Block 0029 [ 82]: e27b91cfe888586d +Block 0029 [ 83]: 9068ed91b466cc0d +Block 0029 [ 84]: a55c75d158364b84 +Block 0029 [ 85]: d32d2407084e5174 +Block 0029 [ 86]: ea4f8cd3446c1654 +Block 0029 [ 87]: 52abfadbf462d66e +Block 0029 [ 88]: e670f796c665c750 +Block 0029 [ 89]: acbd1e8a64642e79 +Block 0029 [ 90]: a4c52d4c306fb308 +Block 0029 [ 91]: e7cea689579e0459 +Block 0029 [ 92]: ca6d2536a9c2b9a2 +Block 0029 [ 93]: 976ae0ac10f180e0 +Block 0029 [ 94]: 21f2d2f4a76951c8 +Block 0029 [ 95]: c63af3df30f6c4cf +Block 0029 [ 96]: 7c8d504059d31bde +Block 0029 [ 97]: 199eed54c6d323f4 +Block 0029 [ 98]: 04ef01484192b42a +Block 0029 [ 99]: 1cc19807d3fe0312 +Block 0029 [100]: 076c5b88f99a4766 +Block 0029 [101]: 32d3367c2e6058bf +Block 0029 [102]: 4c1ab23f34450cd4 +Block 0029 [103]: d05a45b002419d95 +Block 0029 [104]: a3e427169cce8c7b +Block 0029 [105]: 41b0beda3e123b31 +Block 0029 [106]: 1fd29ff5325c3021 +Block 0029 [107]: 418d7de5c18e8e7b +Block 0029 [108]: d857b25e57918532 +Block 0029 [109]: f23eab6af4e6f76b +Block 0029 [110]: 40df4093be491248 +Block 0029 [111]: 615b5919b163abc8 +Block 0029 [112]: dcecda207b953e9d +Block 0029 [113]: 612961710ce6358c +Block 0029 [114]: 408d6b85949c58f4 +Block 0029 [115]: d76936ce1d0d13c4 +Block 0029 [116]: f9c53a9492aad041 +Block 0029 [117]: c322c91811f78d3c +Block 0029 [118]: 609092f732b959b9 +Block 0029 [119]: ffe586d098e15630 +Block 0029 [120]: 5ffa0694fecaf5be +Block 0029 [121]: 8e08307f8ce1a92e +Block 0029 [122]: caa97eb3c6a9dfdf +Block 0029 [123]: 16ab5c05cb1bbef2 +Block 0029 [124]: 4651fbe947cda767 +Block 0029 [125]: b96daab8a4836c53 +Block 0029 [126]: 08fef05406742d7f +Block 0029 [127]: fee5545bf12d959f +Block 0030 [ 0]: ecb2b372da831b49 +Block 0030 [ 1]: c709558a41457c0e +Block 0030 [ 2]: f8464ae225358d10 +Block 0030 [ 3]: 565858a0371880b2 +Block 0030 [ 4]: 846f3802baa7d4d5 +Block 0030 [ 5]: 6a2041cf11bdc232 +Block 0030 [ 6]: 7391dac65c6ca396 +Block 0030 [ 7]: 20610c5f3458d103 +Block 0030 [ 8]: cf7dc2c3b5d21218 +Block 0030 [ 9]: b26b81b52310e8be +Block 0030 [ 10]: 1caf5d5acdd8ad0d +Block 0030 [ 11]: 9844351aac7ebd44 +Block 0030 [ 12]: 34b85f9e05026736 +Block 0030 [ 13]: 8d90acaec66ee2c5 +Block 0030 [ 14]: 79ebbbcc314700ea +Block 0030 [ 15]: af9ce295d25e9854 +Block 0030 [ 16]: 4633750c86574511 +Block 0030 [ 17]: 841dd873cf7c9af8 +Block 0030 [ 18]: 30a56a49963d6332 +Block 0030 [ 19]: 8758c43d7f43bc52 +Block 0030 [ 20]: 613500bf86a2472e +Block 0030 [ 21]: b662ccfc37dafc4e +Block 0030 [ 22]: b892dd0b1ed4867d +Block 0030 [ 23]: 55d004e0c22a6fa9 +Block 0030 [ 24]: 01895e286327f069 +Block 0030 [ 25]: 6316e819327f5aac +Block 0030 [ 26]: c17a79dc28221ff2 +Block 0030 [ 27]: fc7217cbe4abcb0f +Block 0030 [ 28]: e0a22abc712fc4ec +Block 0030 [ 29]: fc2ca70ad9656a5d +Block 0030 [ 30]: 78ad17f00e8363f9 +Block 0030 [ 31]: 5b8e9b907b095c13 +Block 0030 [ 32]: 1d0437e94c488a53 +Block 0030 [ 33]: a6c09180446ee448 +Block 0030 [ 34]: 592db16392414b1f +Block 0030 [ 35]: dfceadcd216f1c3b +Block 0030 [ 36]: afd0defb38513b4a +Block 0030 [ 37]: 55fec53c4a852f66 +Block 0030 [ 38]: 97cc98dede0e137a +Block 0030 [ 39]: 1efe8b0285eb0d53 +Block 0030 [ 40]: 0947a3ce98d0b868 +Block 0030 [ 41]: 4d49836cbb9e0f4d +Block 0030 [ 42]: 4464d43166968015 +Block 0030 [ 43]: 703e0898da38b794 +Block 0030 [ 44]: 5b7cfe7a59211f1c +Block 0030 [ 45]: 3c5fdc76342c4cc1 +Block 0030 [ 46]: 7edc3f911984cd71 +Block 0030 [ 47]: 53449b257e33379e +Block 0030 [ 48]: 97d49ba1e50a04fe +Block 0030 [ 49]: ca13017e3f9f4a72 +Block 0030 [ 50]: 86894a3d08a6cb97 +Block 0030 [ 51]: 805c183bd03c0ba8 +Block 0030 [ 52]: 966043770eadc1cf +Block 0030 [ 53]: 24a31a0bd717faa9 +Block 0030 [ 54]: 5a19962dad2bf5df +Block 0030 [ 55]: 3034f2f99495ce20 +Block 0030 [ 56]: 195fc7abd1a5dbe9 +Block 0030 [ 57]: 1f3a814bd85e8d9c +Block 0030 [ 58]: 59d4902d0897791f +Block 0030 [ 59]: 70616ecbae769969 +Block 0030 [ 60]: c0b35fdf7dd011a6 +Block 0030 [ 61]: 6c27eecf0dfaf13f +Block 0030 [ 62]: 04f4f55a838c904b +Block 0030 [ 63]: ee2bfa574b1f004c +Block 0030 [ 64]: 84cb47f17a211553 +Block 0030 [ 65]: 5ac7865a063f9175 +Block 0030 [ 66]: e1ce6460323291c0 +Block 0030 [ 67]: eddc3b6f7afb8969 +Block 0030 [ 68]: 1e1ed3f48592d3dc +Block 0030 [ 69]: c67f038d66ff6f88 +Block 0030 [ 70]: bd781d0261855bc3 +Block 0030 [ 71]: 2e1566dbfb78a892 +Block 0030 [ 72]: 035a4f7d351c8810 +Block 0030 [ 73]: d9301b86641d0837 +Block 0030 [ 74]: 4b4aa1e8bdf77993 +Block 0030 [ 75]: 22d5689c791cc39d +Block 0030 [ 76]: 04b267f305fdd276 +Block 0030 [ 77]: 89753d14693cdb86 +Block 0030 [ 78]: 49fd119b577707e6 +Block 0030 [ 79]: 04d8b03e8f25118c +Block 0030 [ 80]: f6aaf158c98bf608 +Block 0030 [ 81]: 6338c751302a2349 +Block 0030 [ 82]: b7169b8de98723cd +Block 0030 [ 83]: 9876c68d02e8d8da +Block 0030 [ 84]: d8be27b15da3e9c4 +Block 0030 [ 85]: d3c3bd16ce4518a1 +Block 0030 [ 86]: f116e6da60817f05 +Block 0030 [ 87]: 424d9096e5b7b236 +Block 0030 [ 88]: 68d08f23d2e01660 +Block 0030 [ 89]: 8391b1d4ccc96e77 +Block 0030 [ 90]: fa5a0445cb9d4eca +Block 0030 [ 91]: f35dea2991f818b8 +Block 0030 [ 92]: da06fcfbf14caaa3 +Block 0030 [ 93]: 3396473fc9b49d26 +Block 0030 [ 94]: dc0e4607f7047e53 +Block 0030 [ 95]: 88b8af32491bc7af +Block 0030 [ 96]: 2543c3dcba53d6cf +Block 0030 [ 97]: 74ccab446534e9a3 +Block 0030 [ 98]: 0875c246fb99841e +Block 0030 [ 99]: 2f13fcc0817d3543 +Block 0030 [100]: c8ab3c7a4e7260e6 +Block 0030 [101]: c730058d7eeda80d +Block 0030 [102]: de7fb4151297bbaf +Block 0030 [103]: 8b2bad56cd257929 +Block 0030 [104]: a16f121d2c6babeb +Block 0030 [105]: b23aed50a12698f7 +Block 0030 [106]: e6bc74f1c5e53eac +Block 0030 [107]: 2ecf12c6cc28ee0f +Block 0030 [108]: 73265ce24ac7eefa +Block 0030 [109]: c417f95b086f1ec4 +Block 0030 [110]: f5b33108d3254d7d +Block 0030 [111]: 2282b8385a69f71f +Block 0030 [112]: 08a128c65513bfc3 +Block 0030 [113]: dd1a056868bcb22c +Block 0030 [114]: 3711a120d9fe89fc +Block 0030 [115]: f629ebef106760db +Block 0030 [116]: 778784289feeebf6 +Block 0030 [117]: 781afab3042ba6cf +Block 0030 [118]: 69bfc9973c31f543 +Block 0030 [119]: 5a5d3d243c6a8b20 +Block 0030 [120]: d11b7960cf63ec8b +Block 0030 [121]: 6ad4c4cdb53621ce +Block 0030 [122]: 4ac645a6e18a6b16 +Block 0030 [123]: d4475ac4c0dbe40e +Block 0030 [124]: dfe701181b74acef +Block 0030 [125]: d4e308ef3c600531 +Block 0030 [126]: ef51f4965e80d50b +Block 0030 [127]: 2124a91e80b26b68 +Block 0031 [ 0]: 309f6c299d9879f9 +Block 0031 [ 1]: 61375f9b7b14d354 +Block 0031 [ 2]: 40ea625b81391ff8 +Block 0031 [ 3]: f15cbed827226249 +Block 0031 [ 4]: 5ce9b1693a572eda +Block 0031 [ 5]: 65f45c6d4dfa8c12 +Block 0031 [ 6]: 3e67d3cf7da85c8c +Block 0031 [ 7]: b8f8961765faa2c9 +Block 0031 [ 8]: 99f0b83b95d7c0f1 +Block 0031 [ 9]: fb304008030ea3f5 +Block 0031 [ 10]: ae5e2fa3a29075b4 +Block 0031 [ 11]: aa1ae37b327f62f2 +Block 0031 [ 12]: b94bce85e927be6c +Block 0031 [ 13]: c896549ae636df68 +Block 0031 [ 14]: 6952c1358d21b5a2 +Block 0031 [ 15]: 4038f1bbbdf6adde +Block 0031 [ 16]: 97fcf925d6298326 +Block 0031 [ 17]: 3e504f4327bcbdb6 +Block 0031 [ 18]: 024d30c429f5054f +Block 0031 [ 19]: 75318591f6653e81 +Block 0031 [ 20]: 29f7301b7b033e0d +Block 0031 [ 21]: 449cb4cc3a62ea86 +Block 0031 [ 22]: 42394853452068a9 +Block 0031 [ 23]: c87ddfebc72f384a +Block 0031 [ 24]: 47e532412f29d651 +Block 0031 [ 25]: 125959ed7619d763 +Block 0031 [ 26]: 68abeabaac672be4 +Block 0031 [ 27]: 784a08ffe3ea2e41 +Block 0031 [ 28]: 6635e49ca42e4b89 +Block 0031 [ 29]: bfe5d9a0b21ac03a +Block 0031 [ 30]: ee6453c49343c88e +Block 0031 [ 31]: 8665b5fa8f950f2e +Block 0031 [ 32]: f7f69ec71b54b177 +Block 0031 [ 33]: 40c25f95d856ebf5 +Block 0031 [ 34]: 59b9f6a29a90c6ec +Block 0031 [ 35]: 096e5d0f85b170ee +Block 0031 [ 36]: 98ac3365d491ef48 +Block 0031 [ 37]: 6a24ed36ca69234c +Block 0031 [ 38]: 9f4db634e58667b2 +Block 0031 [ 39]: 7f15383988bb1942 +Block 0031 [ 40]: 675e54a4986414dd +Block 0031 [ 41]: 9fb264d03b0bf34b +Block 0031 [ 42]: cc1fe359233a59ca +Block 0031 [ 43]: 06a7b5af161bca13 +Block 0031 [ 44]: d28e1ed596b43cce +Block 0031 [ 45]: d29ca29e051618cb +Block 0031 [ 46]: 9b11d233a9dc1f8b +Block 0031 [ 47]: 05116b39d78d10af +Block 0031 [ 48]: cfe9dc47077bbf75 +Block 0031 [ 49]: d89b8e20b6ddd178 +Block 0031 [ 50]: 2ea00f20ffc093cd +Block 0031 [ 51]: 51a0bd55c1eba699 +Block 0031 [ 52]: 3bf5d4ab777f6481 +Block 0031 [ 53]: 46308de0349ff974 +Block 0031 [ 54]: 677f762cbf01eafb +Block 0031 [ 55]: 148e52d70f13d161 +Block 0031 [ 56]: aac9894a6c0f52d8 +Block 0031 [ 57]: 916fad8177fb1517 +Block 0031 [ 58]: 2c6cb971e8ce24cf +Block 0031 [ 59]: b7f66b84ff3f1c6a +Block 0031 [ 60]: 7f131a58d45e20bf +Block 0031 [ 61]: b6b67bc9e2b162f3 +Block 0031 [ 62]: 224e9472ce3079a7 +Block 0031 [ 63]: bd52673cf1ebbc03 +Block 0031 [ 64]: 44210f114a3a508a +Block 0031 [ 65]: ab3566dfbea655ce +Block 0031 [ 66]: cf56bb4dabf2242b +Block 0031 [ 67]: d5749f3362a12aa9 +Block 0031 [ 68]: 65ebbb72e3ef59aa +Block 0031 [ 69]: f7484897773e242f +Block 0031 [ 70]: d043e243e50c581c +Block 0031 [ 71]: 7d1856ffd1fd2b33 +Block 0031 [ 72]: 723d2b6879dc6233 +Block 0031 [ 73]: 0128bca8e3230729 +Block 0031 [ 74]: e7f2af7f1f7a1162 +Block 0031 [ 75]: fad5c639a11e0a56 +Block 0031 [ 76]: e9bf231c61e72996 +Block 0031 [ 77]: b27143bd911ac35f +Block 0031 [ 78]: 757d9dc8b44d6729 +Block 0031 [ 79]: 0f784c8f9e2c457a +Block 0031 [ 80]: 5296215752af68c3 +Block 0031 [ 81]: fa2a0d6367d5d43a +Block 0031 [ 82]: 1c9d65b53604c9d0 +Block 0031 [ 83]: 1d55fd904fe8220b +Block 0031 [ 84]: ed34cd49c315a03a +Block 0031 [ 85]: 861ea5c5823bd9d5 +Block 0031 [ 86]: 358f58cb124df94c +Block 0031 [ 87]: 0b435adf91a35571 +Block 0031 [ 88]: dae7e1826db85ac4 +Block 0031 [ 89]: e670470c6ab8d9f2 +Block 0031 [ 90]: 30486e741c630a66 +Block 0031 [ 91]: 450d29e8cc3d4a69 +Block 0031 [ 92]: 49cdad6d59ac0add +Block 0031 [ 93]: e2bf968460f6259c +Block 0031 [ 94]: 191ca7f68c89af1e +Block 0031 [ 95]: 4497145b189ebb9a +Block 0031 [ 96]: 8da638358c0172ed +Block 0031 [ 97]: 8605c94d37eda7a0 +Block 0031 [ 98]: 6f2f59e44ef3811c +Block 0031 [ 99]: d5a44e6cc6dbb8b4 +Block 0031 [100]: bde572402e5c7dc2 +Block 0031 [101]: 3cd497d950293385 +Block 0031 [102]: 102be5062c637c5b +Block 0031 [103]: 69eaf3ad1722eb9f +Block 0031 [104]: 731dac2d1a722ca6 +Block 0031 [105]: afdfc9648bbb9b22 +Block 0031 [106]: 4ab06cc5234aef04 +Block 0031 [107]: 1f34f7c1ae7a0fb7 +Block 0031 [108]: 146d394a1d56fd2b +Block 0031 [109]: a71cef66736ea071 +Block 0031 [110]: be4dc0c799a9ab61 +Block 0031 [111]: 8f57dd28099e022e +Block 0031 [112]: bd6e3b1a62c0275b +Block 0031 [113]: fdfe31be37c6a3b8 +Block 0031 [114]: e6a7e6915adba060 +Block 0031 [115]: 95451eace1219c4e +Block 0031 [116]: 897816235b92c932 +Block 0031 [117]: 45e906d8622b85d3 +Block 0031 [118]: b82f4e0aa72d95dd +Block 0031 [119]: f4caee2823606dbb +Block 0031 [120]: 8c82170ba6003b71 +Block 0031 [121]: b9ba587178c53719 +Block 0031 [122]: 8da04337ef20afda +Block 0031 [123]: a863485e73253dc6 +Block 0031 [124]: 86ff3e9a61b6889c +Block 0031 [125]: dd50c7237eb67f05 +Block 0031 [126]: 7f19e13551117d48 +Block 0031 [127]: 67acdea7f4a2c876 + + After pass 1: +Block 0000 [ 0]: eb70c5da71245685 +Block 0000 [ 1]: b9aff8ada10961b8 +Block 0000 [ 2]: 865a10e399244b02 +Block 0000 [ 3]: 3161b9cd7980bda1 +Block 0000 [ 4]: 6bd2564c45042263 +Block 0000 [ 5]: 2b70da92385e4d23 +Block 0000 [ 6]: 98662686decc6e46 +Block 0000 [ 7]: 0de4ef0b5e35c2b4 +Block 0000 [ 8]: f238d4faa61a746f +Block 0000 [ 9]: 811d631e78456381 +Block 0000 [ 10]: 6b819488537c6b98 +Block 0000 [ 11]: 37bed8fffc2982ca +Block 0000 [ 12]: d8d61a26c1e1ab05 +Block 0000 [ 13]: 1568a7dfdae11df3 +Block 0000 [ 14]: b98f088aa645818c +Block 0000 [ 15]: 49aa299e0418469f +Block 0000 [ 16]: 4525a20e6ccba1fa +Block 0000 [ 17]: 937a4c94329365c5 +Block 0000 [ 18]: f0651d65470c89ee +Block 0000 [ 19]: ad9c2258efd5b32f +Block 0000 [ 20]: e95c39b287f061cb +Block 0000 [ 21]: 7105469e5f3b6097 +Block 0000 [ 22]: 52c23bd89c3dbe93 +Block 0000 [ 23]: e8e2706053327645 +Block 0000 [ 24]: 426c93675bfb8bad +Block 0000 [ 25]: 0d7dd3f7765e74c4 +Block 0000 [ 26]: 2c0954cbdd78ae1e +Block 0000 [ 27]: a484f003d25c1e2c +Block 0000 [ 28]: e433f058fdc53484 +Block 0000 [ 29]: 32db9ec16228254d +Block 0000 [ 30]: 8606a609508964c6 +Block 0000 [ 31]: 028fa140a907996a +Block 0000 [ 32]: 3afe54aee0ac53f9 +Block 0000 [ 33]: cc841e8ea9256952 +Block 0000 [ 34]: b27a9e52e5a82a90 +Block 0000 [ 35]: c6952624f6604e7e +Block 0000 [ 36]: 3e5e9a30a46765d1 +Block 0000 [ 37]: cc9f0a8b549ed406 +Block 0000 [ 38]: bfc31a98356d4436 +Block 0000 [ 39]: 89dea935c35aa6fd +Block 0000 [ 40]: 4ad0cb25dcc550db +Block 0000 [ 41]: 90a65cd8468abe7a +Block 0000 [ 42]: e4a2d75fbd35f1f4 +Block 0000 [ 43]: 03dcdcc9f0c3237f +Block 0000 [ 44]: 0e994242e9a98267 +Block 0000 [ 45]: f99ef10d64526f28 +Block 0000 [ 46]: 5fa42b5b906d097b +Block 0000 [ 47]: 3e57b6d1537dea15 +Block 0000 [ 48]: 175fdc8efe4590af +Block 0000 [ 49]: 809ab15fc4a2f68f +Block 0000 [ 50]: a9d11f6794e8d56d +Block 0000 [ 51]: ed6917141657969c +Block 0000 [ 52]: ea1a177cd47cd946 +Block 0000 [ 53]: cd289f074b35107c +Block 0000 [ 54]: 6359c0b519a8c31a +Block 0000 [ 55]: e081ba4316625dbb +Block 0000 [ 56]: de621edd1c166bb0 +Block 0000 [ 57]: 119aae89e2d7ae00 +Block 0000 [ 58]: 9c582b7525e90087 +Block 0000 [ 59]: e8c5df0b317630e5 +Block 0000 [ 60]: 17cb00fd02299703 +Block 0000 [ 61]: e69d92c5b0f3f45f +Block 0000 [ 62]: da58b8821a7dad01 +Block 0000 [ 63]: 596b3101643a1c77 +Block 0000 [ 64]: ee313aa55337b4bb +Block 0000 [ 65]: 06c72d8e8f38ea5d +Block 0000 [ 66]: 750ff687051a770f +Block 0000 [ 67]: 5d62741e42692ce5 +Block 0000 [ 68]: 9aa7b38ac07ff7a9 +Block 0000 [ 69]: df6175baf2fbc7b9 +Block 0000 [ 70]: cb00ce655414438f +Block 0000 [ 71]: af8716443e612d6a +Block 0000 [ 72]: 035b48984d145bc8 +Block 0000 [ 73]: c027c987a5064e5e +Block 0000 [ 74]: 66fb69540d4cca95 +Block 0000 [ 75]: be24d4bbbf3b02d6 +Block 0000 [ 76]: 0d3c404e0eeb547e +Block 0000 [ 77]: 08d96b387dd93a3f +Block 0000 [ 78]: 7d4209513e3c6dcf +Block 0000 [ 79]: 5894561b00c0b399 +Block 0000 [ 80]: f43326c64db2884e +Block 0000 [ 81]: 824e4ce31d9017db +Block 0000 [ 82]: a1d77f6e1368af6b +Block 0000 [ 83]: f733fa8b41d42e35 +Block 0000 [ 84]: 97c1608fcc7fa98d +Block 0000 [ 85]: db39d6b9297fe0ec +Block 0000 [ 86]: 8612f6beecb98441 +Block 0000 [ 87]: e82c1a9b4e205b3b +Block 0000 [ 88]: f91dcdb7188cfee6 +Block 0000 [ 89]: 57c8499d166215d4 +Block 0000 [ 90]: d774d1f7501185a8 +Block 0000 [ 91]: 08c158f7c95c4270 +Block 0000 [ 92]: 14b2df73ec7323c5 +Block 0000 [ 93]: 4e51fe5e5cc36675 +Block 0000 [ 94]: 5246234dc2a65747 +Block 0000 [ 95]: e88225ff9aafe09a +Block 0000 [ 96]: e1bda4b1a686a873 +Block 0000 [ 97]: eceb71893e27e7df +Block 0000 [ 98]: bca712ae5301ab4f +Block 0000 [ 99]: 6db640a15fe58ea4 +Block 0000 [100]: ba8e3fd75b1ae8b5 +Block 0000 [101]: 97ead52de3d8e35a +Block 0000 [102]: 3d4cf8cfc6dcd3c4 +Block 0000 [103]: 365d4258a2a2327e +Block 0000 [104]: 8bf174175fba6d54 +Block 0000 [105]: 3ce2d97f02a42d99 +Block 0000 [106]: 4df564c159e3b688 +Block 0000 [107]: 969691276b698548 +Block 0000 [108]: 2555c88e11430978 +Block 0000 [109]: e8c762e576a1f13c +Block 0000 [110]: 3b73325fdf4dba52 +Block 0000 [111]: 4e14995f0006aa8a +Block 0000 [112]: 822837767bd6da76 +Block 0000 [113]: f3f9d0ae4419aa57 +Block 0000 [114]: 23b9d2a26182eb2c +Block 0000 [115]: accb780b765bb407 +Block 0000 [116]: cca383fad32fafe3 +Block 0000 [117]: 47a02bbaee291a3c +Block 0000 [118]: 7085e3ac8acc427a +Block 0000 [119]: fed8144177ccaa27 +Block 0000 [120]: caa9bbfd51958faa +Block 0000 [121]: 8cb014215f290920 +Block 0000 [122]: 09b9ef1b731adc3d +Block 0000 [123]: d2a34f72092af56a +Block 0000 [124]: 249e39d444310e4b +Block 0000 [125]: 073fd444412cba9d +Block 0000 [126]: 7ca3c58f2c75d8a3 +Block 0000 [127]: 26dbe92fb3f5f00d +Block 0001 [ 0]: 4f728b69452fae31 +Block 0001 [ 1]: 654a59d030defa14 +Block 0001 [ 2]: 5f458f10c59f812a +Block 0001 [ 3]: 2a62954ed18bb93b +Block 0001 [ 4]: 26684fc624027a00 +Block 0001 [ 5]: 0ea0d3102c0485dd +Block 0001 [ 6]: 7ae1bdad4f312a66 +Block 0001 [ 7]: 8fea98a8c478b87e +Block 0001 [ 8]: 6f692ec7e9c54bbb +Block 0001 [ 9]: da9ca98424721bed +Block 0001 [ 10]: 900cbd5ce6fbe7bb +Block 0001 [ 11]: 85dbd49905599fc7 +Block 0001 [ 12]: 92f4addaefd9925b +Block 0001 [ 13]: 09608538561f2ca8 +Block 0001 [ 14]: ed7e94fd75bdd70a +Block 0001 [ 15]: 6d3ae3542fc34e01 +Block 0001 [ 16]: 7e7320c7088bb0e4 +Block 0001 [ 17]: e84d71c8ffbb2e67 +Block 0001 [ 18]: b7186919d8398b85 +Block 0001 [ 19]: e01b6bbe4055a48a +Block 0001 [ 20]: 3fd1d5fef68647d3 +Block 0001 [ 21]: 6300d72e1ffdf28b +Block 0001 [ 22]: b60996e804f36f8a +Block 0001 [ 23]: 2e93284225f6fc7c +Block 0001 [ 24]: a81d205f94650509 +Block 0001 [ 25]: 71f606dd8bebd0be +Block 0001 [ 26]: ee5d60be569efca5 +Block 0001 [ 27]: 4fc7328a0df5fcf4 +Block 0001 [ 28]: 2d961d7cfd357bd2 +Block 0001 [ 29]: 218726fbb9aeefc5 +Block 0001 [ 30]: 63f6f9cba09bb92d +Block 0001 [ 31]: 23973798dd642b97 +Block 0001 [ 32]: 68fe2ef53a26e4d0 +Block 0001 [ 33]: 9c3b84e088170e25 +Block 0001 [ 34]: c45fd09ea0d35688 +Block 0001 [ 35]: f2223ca8a907b99c +Block 0001 [ 36]: 4d85ca6a4e238eb0 +Block 0001 [ 37]: 9887644e7a74709d +Block 0001 [ 38]: 61c05b5b39af1c81 +Block 0001 [ 39]: 168218475794699a +Block 0001 [ 40]: 94fe356de27a61b8 +Block 0001 [ 41]: 08f98c2a5d687d4b +Block 0001 [ 42]: cdd9c1173a7cba9e +Block 0001 [ 43]: 4cbcf597f3cc3741 +Block 0001 [ 44]: e25bbedf15ccd7af +Block 0001 [ 45]: 8edc82479e1021c5 +Block 0001 [ 46]: d6ac7072e5cb40bc +Block 0001 [ 47]: e3dd6a54105d8932 +Block 0001 [ 48]: 581127fb5cb723a1 +Block 0001 [ 49]: 7050d0b24075dd5d +Block 0001 [ 50]: d5d2db339110fecf +Block 0001 [ 51]: ca62dccb416e4ac0 +Block 0001 [ 52]: 0293fe19b2c7a989 +Block 0001 [ 53]: 003ffccf01821aef +Block 0001 [ 54]: a3862c4116af5880 +Block 0001 [ 55]: b32910abbd694633 +Block 0001 [ 56]: 3f1176ab6a7f813f +Block 0001 [ 57]: 2025169a421a1771 +Block 0001 [ 58]: 935e5cc76adda9cb +Block 0001 [ 59]: 7335434849a26c6b +Block 0001 [ 60]: fa8ac0211e6b711a +Block 0001 [ 61]: 67145dbd1fb8001f +Block 0001 [ 62]: 4028012eeb9526ba +Block 0001 [ 63]: 385e0230fdf4f479 +Block 0001 [ 64]: 5a08384e562ccbe4 +Block 0001 [ 65]: 8fb1278b85d0d468 +Block 0001 [ 66]: 510c114748e9813f +Block 0001 [ 67]: d97ae3c8d92fb2d8 +Block 0001 [ 68]: dba513dc70d1bcca +Block 0001 [ 69]: 76df969ae1aa86e7 +Block 0001 [ 70]: 0a8bae02bae5800a +Block 0001 [ 71]: bb2078b61251d404 +Block 0001 [ 72]: b6db3e229806b315 +Block 0001 [ 73]: e60dee1006818f8a +Block 0001 [ 74]: a8e840613f64bf94 +Block 0001 [ 75]: e3d557347e2c6765 +Block 0001 [ 76]: 3cfd647de70de6ca +Block 0001 [ 77]: 2727cb94eacf75c8 +Block 0001 [ 78]: 782e0fd561e7fc1c +Block 0001 [ 79]: aaf6005b1175d39d +Block 0001 [ 80]: 1e38a51a498783fe +Block 0001 [ 81]: 8118e9ad026edfd1 +Block 0001 [ 82]: da1b462bb6ada0d5 +Block 0001 [ 83]: 0e07fd989e0740ec +Block 0001 [ 84]: 167027d0dfe260c4 +Block 0001 [ 85]: 3831c5065879f87a +Block 0001 [ 86]: 9969d6538518bbf0 +Block 0001 [ 87]: f729432491dde5bc +Block 0001 [ 88]: e488ad11f9e8a09b +Block 0001 [ 89]: b0b6bb576e656477 +Block 0001 [ 90]: d107bb0a7281ba2d +Block 0001 [ 91]: 5f83375bb027d15e +Block 0001 [ 92]: f4d94c88a0509f9f +Block 0001 [ 93]: 0d52e6500b11f46d +Block 0001 [ 94]: ff310a86b946253b +Block 0001 [ 95]: f8a4490cf057837e +Block 0001 [ 96]: c3569d9e20c30dde +Block 0001 [ 97]: 63772178aef6a3c2 +Block 0001 [ 98]: 0cd5abad15d3526a +Block 0001 [ 99]: 929f1688256337ec +Block 0001 [100]: fe99116df0ed24f7 +Block 0001 [101]: 6ebd12248fdeed7b +Block 0001 [102]: 724ce2c56c917514 +Block 0001 [103]: 60e91f3260a33db6 +Block 0001 [104]: 2300595ae52bde6b +Block 0001 [105]: 9ed3942bec949ecc +Block 0001 [106]: 35ab67790672ce89 +Block 0001 [107]: bcd97ac09925600f +Block 0001 [108]: 53bd812c1d5b983b +Block 0001 [109]: 9ee217e78798db42 +Block 0001 [110]: 024621d6eaa9dfa6 +Block 0001 [111]: 091d7bbc00b74cac +Block 0001 [112]: 51a3e878a7ec9637 +Block 0001 [113]: 8f1c496da75b71d4 +Block 0001 [114]: c3213542557c95e4 +Block 0001 [115]: 3259db47b00f135d +Block 0001 [116]: 77f0b3f24f6f2748 +Block 0001 [117]: 0a56aaa8a68eecb0 +Block 0001 [118]: 604cd1106c8bd53b +Block 0001 [119]: b17b9ba59c48e0e3 +Block 0001 [120]: 29a79c9ad70ac72f +Block 0001 [121]: efc613d0bde417ce +Block 0001 [122]: 975b3264affc0594 +Block 0001 [123]: 1bddc4bcc71f4ff6 +Block 0001 [124]: 8338248ef8fcfd02 +Block 0001 [125]: 2d566298f391fcc9 +Block 0001 [126]: 83db40ba1ec6e825 +Block 0001 [127]: 9376c28a2100e36a +Block 0002 [ 0]: 6f0aa682ddaa6126 +Block 0002 [ 1]: dab7227193219bb7 +Block 0002 [ 2]: 4de277e66c81dbba +Block 0002 [ 3]: d7721b4e73c47130 +Block 0002 [ 4]: 95b731717c175846 +Block 0002 [ 5]: 65d958e75791c1b8 +Block 0002 [ 6]: 0a49f6ecc98de387 +Block 0002 [ 7]: 72b02922d766a72a +Block 0002 [ 8]: fad2410fe9e386e9 +Block 0002 [ 9]: 9ff80811205f8e40 +Block 0002 [ 10]: bfd83bf7915bd06d +Block 0002 [ 11]: f2241c6bb086373c +Block 0002 [ 12]: f529fec9d07fc5c7 +Block 0002 [ 13]: 45ddf09931b44152 +Block 0002 [ 14]: 216aa6af5774af56 +Block 0002 [ 15]: 1babf510968c3bd0 +Block 0002 [ 16]: 6b3cc25f82bc7bab +Block 0002 [ 17]: a51883837931ec24 +Block 0002 [ 18]: 15d314e761f4f79f +Block 0002 [ 19]: 907ad9d3e6003728 +Block 0002 [ 20]: 8345e83982730ced +Block 0002 [ 21]: a98973f2f323f2fd +Block 0002 [ 22]: 34ceac857bc82192 +Block 0002 [ 23]: 3aff5a16248d61d0 +Block 0002 [ 24]: bf585e02a4ee76b3 +Block 0002 [ 25]: f102da35c3a1d22f +Block 0002 [ 26]: b8e0c5c6dffa8035 +Block 0002 [ 27]: b69a0ff4b7dc4be3 +Block 0002 [ 28]: 58f6befa5b4be20f +Block 0002 [ 29]: 53e17992af4bf567 +Block 0002 [ 30]: 97b6bbbe40e15da8 +Block 0002 [ 31]: b456092c3bbdee3d +Block 0002 [ 32]: 0fe760445435a994 +Block 0002 [ 33]: 8f00ec3d6cd764cf +Block 0002 [ 34]: 27f17691f81dba17 +Block 0002 [ 35]: 3eb25337717caf80 +Block 0002 [ 36]: 1a08dd7b4b987929 +Block 0002 [ 37]: ece8357a308528ea +Block 0002 [ 38]: e53ab5938ff9847d +Block 0002 [ 39]: cac2d4e6c427a151 +Block 0002 [ 40]: c1d3de78f8bcfc97 +Block 0002 [ 41]: 89026bd7fd300175 +Block 0002 [ 42]: c837079cf4b8e7a0 +Block 0002 [ 43]: cc4f01269d869716 +Block 0002 [ 44]: 1ced768b8adf0ca8 +Block 0002 [ 45]: 752ee66cb91592fd +Block 0002 [ 46]: 8d529b4831c2501b +Block 0002 [ 47]: 6898a8031165c701 +Block 0002 [ 48]: ba973e3b66aeab6d +Block 0002 [ 49]: b38b035f75e1f8ae +Block 0002 [ 50]: 8cea05b80f49929b +Block 0002 [ 51]: e0c6eaef11df5798 +Block 0002 [ 52]: edcb7cbb7a6a2838 +Block 0002 [ 53]: bd0954b83250312c +Block 0002 [ 54]: 030d8c4d29a827ab +Block 0002 [ 55]: defeea24becf9c47 +Block 0002 [ 56]: 4f1bd3d64032f88b +Block 0002 [ 57]: 5d559121df3fcf38 +Block 0002 [ 58]: d40333183106d935 +Block 0002 [ 59]: 9a68b1362e4ecdf3 +Block 0002 [ 60]: 8d094f6fe202c2a0 +Block 0002 [ 61]: cf51c0ec8d9a7bd0 +Block 0002 [ 62]: 6fc5ce646d5459b0 +Block 0002 [ 63]: 1355d7414fb8222d +Block 0002 [ 64]: 1d79f24f45055747 +Block 0002 [ 65]: b048cc45283b5ba4 +Block 0002 [ 66]: 9f599fc0d1a9b797 +Block 0002 [ 67]: 837d7802a73fec8c +Block 0002 [ 68]: ee0cac044c356913 +Block 0002 [ 69]: bd01139dc4a0a74d +Block 0002 [ 70]: 9687ac9b90372c6c +Block 0002 [ 71]: 7ad65839bced3728 +Block 0002 [ 72]: 3dc5cbf1b894db1e +Block 0002 [ 73]: 07359d7c76e52a41 +Block 0002 [ 74]: 9821998dcd6f2e0b +Block 0002 [ 75]: 55e08a3a8bf3f31a +Block 0002 [ 76]: 028648d336310757 +Block 0002 [ 77]: 505c49b8e78c72a5 +Block 0002 [ 78]: 847d4ad5e67effa6 +Block 0002 [ 79]: debe088acd5e0c67 +Block 0002 [ 80]: 09baf2a793f6e85a +Block 0002 [ 81]: 74c53ac1c44923c3 +Block 0002 [ 82]: 2d8e2f704dae8e0d +Block 0002 [ 83]: c11096107ecd9a1a +Block 0002 [ 84]: 6e92f0b937267ca4 +Block 0002 [ 85]: eb91961b00b8494a +Block 0002 [ 86]: e445eff84a307891 +Block 0002 [ 87]: 167008ffb848e317 +Block 0002 [ 88]: ffcd081be48824e8 +Block 0002 [ 89]: ae1188ab3620d030 +Block 0002 [ 90]: 7b5154bb3ae4beeb +Block 0002 [ 91]: 66a8189a6e829b4c +Block 0002 [ 92]: 1045478edacef269 +Block 0002 [ 93]: 4214f2b32e58abf7 +Block 0002 [ 94]: 8a0632f79e9a47d2 +Block 0002 [ 95]: 125f2e34aa373f69 +Block 0002 [ 96]: 4bdaf3650b12ff30 +Block 0002 [ 97]: 09a67d21f7c9a4b7 +Block 0002 [ 98]: da257867835c6ad0 +Block 0002 [ 99]: b09a503a1e027c3a +Block 0002 [100]: d82eab74b27e8c9e +Block 0002 [101]: b8ca0c4c1f8a66bb +Block 0002 [102]: 3295141fafa54773 +Block 0002 [103]: a711da3266cda357 +Block 0002 [104]: 8c491f18c12bef34 +Block 0002 [105]: fb3856d95887799b +Block 0002 [106]: 882efa262eba85c7 +Block 0002 [107]: e70e3ed6325ddce9 +Block 0002 [108]: 6cd188d08d8faaab +Block 0002 [109]: 3d8e89890fa8069e +Block 0002 [110]: 1740ded2e9212552 +Block 0002 [111]: 97dbb638e111dbaa +Block 0002 [112]: 591b3ef515441981 +Block 0002 [113]: 47924a68e2f2d931 +Block 0002 [114]: 56f6c3046c63e935 +Block 0002 [115]: 5d9b054b25c3cac7 +Block 0002 [116]: 730e460a6b42888e +Block 0002 [117]: 2a89748c965add5d +Block 0002 [118]: 2e21eda0da280986 +Block 0002 [119]: 8310061edc77f4ab +Block 0002 [120]: 663eccfd5e98f3da +Block 0002 [121]: ef140e3bb971144b +Block 0002 [122]: def56d52b3a2306e +Block 0002 [123]: c4d693020bec1987 +Block 0002 [124]: a3f956918de780b2 +Block 0002 [125]: f7a6e5c929d6a71a +Block 0002 [126]: 657926002bd1b059 +Block 0002 [127]: d87898adc25622e7 +Block 0003 [ 0]: a5098825713de56b +Block 0003 [ 1]: 5abdb2c9a238997c +Block 0003 [ 2]: 0df17021d43634ae +Block 0003 [ 3]: ec32a902ab58e758 +Block 0003 [ 4]: 4c31bf2c0f5a3e20 +Block 0003 [ 5]: 76b348a560871883 +Block 0003 [ 6]: 6b742fcacab4cd9d +Block 0003 [ 7]: 4d7181fe894748dd +Block 0003 [ 8]: a0f9122c42cfa0fa +Block 0003 [ 9]: b77b3a2b3a94836d +Block 0003 [ 10]: b2ec7046aa8e8c6e +Block 0003 [ 11]: f172c7888965cdf6 +Block 0003 [ 12]: d6c24405293e85f2 +Block 0003 [ 13]: 69ca9337912f8f1d +Block 0003 [ 14]: d11fd34b79f60203 +Block 0003 [ 15]: 7a7368c3416d7757 +Block 0003 [ 16]: 8a60c9c442d9a50b +Block 0003 [ 17]: e5003305596ff3f5 +Block 0003 [ 18]: 1f5a977083174168 +Block 0003 [ 19]: 3d2084004885c012 +Block 0003 [ 20]: 0dfcdb66c89fe7f8 +Block 0003 [ 21]: 7a542bc74aa62c61 +Block 0003 [ 22]: bbae5509f2bafa64 +Block 0003 [ 23]: 9c2fbdddab52a811 +Block 0003 [ 24]: 4eb45004f32e646c +Block 0003 [ 25]: 83575377e39c935c +Block 0003 [ 26]: 32c30d2dc888c05d +Block 0003 [ 27]: cf6c2f4e2e886954 +Block 0003 [ 28]: d763036a6ba7467e +Block 0003 [ 29]: 2949a553cb7bfb44 +Block 0003 [ 30]: 39e9a683d74a4a47 +Block 0003 [ 31]: 510b42f86fb01c3c +Block 0003 [ 32]: 1db70a935a24a08a +Block 0003 [ 33]: 37a4c61b5b50f6ce +Block 0003 [ 34]: 2ff60aebaff4c12c +Block 0003 [ 35]: cc43a35d3f92cb2b +Block 0003 [ 36]: e47a246363c0cf53 +Block 0003 [ 37]: 20c725e9838000f0 +Block 0003 [ 38]: 4e9e4630b154de4e +Block 0003 [ 39]: 9d91f5cab8ef6ca3 +Block 0003 [ 40]: c09cd72657c2b2e3 +Block 0003 [ 41]: 00c941ef8d77923a +Block 0003 [ 42]: c4a86260ceaa44c5 +Block 0003 [ 43]: b23cfde52879f0bb +Block 0003 [ 44]: 055a459516341951 +Block 0003 [ 45]: 15b38a4de76a86e3 +Block 0003 [ 46]: 500162d1d85b0734 +Block 0003 [ 47]: e4c121a06eeb8d00 +Block 0003 [ 48]: 59d00180f6bf9cab +Block 0003 [ 49]: 520a19a8621155f7 +Block 0003 [ 50]: b7ac913b05b0cdd7 +Block 0003 [ 51]: 2498e9f4684d695e +Block 0003 [ 52]: 9ff6533b36a439bd +Block 0003 [ 53]: b7e710b1b252173e +Block 0003 [ 54]: cddcdfc9bd2c30cc +Block 0003 [ 55]: 85d624f3b2903c78 +Block 0003 [ 56]: 1e0aebc7e45117e9 +Block 0003 [ 57]: a776b6281cd6b1f9 +Block 0003 [ 58]: 8a06bb51088eb00b +Block 0003 [ 59]: b59c40e38ff6ea03 +Block 0003 [ 60]: afc0cc4b3623e16d +Block 0003 [ 61]: 782c4c3d0474a5cf +Block 0003 [ 62]: 56ce8d13748c3e5b +Block 0003 [ 63]: c977975a1ff7a1f9 +Block 0003 [ 64]: 21546cc77fa04c11 +Block 0003 [ 65]: 23445ab1a31c4fcd +Block 0003 [ 66]: 329b27a58fa9ec0c +Block 0003 [ 67]: 1dd2c06440b93077 +Block 0003 [ 68]: b3be12b007cd0186 +Block 0003 [ 69]: 4a03029fa6a0b54b +Block 0003 [ 70]: a3cc4fdae3a06c28 +Block 0003 [ 71]: ea9497ff15ab73ee +Block 0003 [ 72]: e06aa57b0d93e9e6 +Block 0003 [ 73]: b8f1138ed2b5c2e4 +Block 0003 [ 74]: ca65309d17c912be +Block 0003 [ 75]: a79480072494d1df +Block 0003 [ 76]: a2cc762dc3085ebf +Block 0003 [ 77]: 4d8804b94f150480 +Block 0003 [ 78]: 010bc1d1d2d5e6a9 +Block 0003 [ 79]: 618deb456508ef66 +Block 0003 [ 80]: f4660b0c8ab78a72 +Block 0003 [ 81]: b8cafe97718c4b0c +Block 0003 [ 82]: 9e393ddbe4897c96 +Block 0003 [ 83]: 1941204736b1e333 +Block 0003 [ 84]: 819495456568a0e5 +Block 0003 [ 85]: 069191b00125985b +Block 0003 [ 86]: 8df6f2bc73a8f609 +Block 0003 [ 87]: d02410b0b3af460f +Block 0003 [ 88]: 5ad235682f1a4e6e +Block 0003 [ 89]: 31cc343b49bb3c5c +Block 0003 [ 90]: 1c5f33a9a895121f +Block 0003 [ 91]: dcfadc3f76c2a0db +Block 0003 [ 92]: cb87e12e0347cca2 +Block 0003 [ 93]: c3dadf345a0bf265 +Block 0003 [ 94]: 84c3d44034671090 +Block 0003 [ 95]: e0e9f65f68c7cc0f +Block 0003 [ 96]: 882d861688f924bc +Block 0003 [ 97]: 9cfc66984007086d +Block 0003 [ 98]: 91dc692e2ce706b9 +Block 0003 [ 99]: 86d088cd01e55500 +Block 0003 [100]: aafd183298ff1003 +Block 0003 [101]: aa4d5020b5ebfb5f +Block 0003 [102]: 98a71f8dbbdbf24c +Block 0003 [103]: 640f07762fee838b +Block 0003 [104]: 9bbfdd5f9f23460a +Block 0003 [105]: c1e3157b2e7cea32 +Block 0003 [106]: 205acdbfea7304f5 +Block 0003 [107]: d3903de60ff877fb +Block 0003 [108]: 2ffff2f401c666c2 +Block 0003 [109]: 71d728360ff4d066 +Block 0003 [110]: 1fa9cd9997943d58 +Block 0003 [111]: 37cd8137f9ed1517 +Block 0003 [112]: 4138ff82ec94ce81 +Block 0003 [113]: c5bdc5c497fb5efc +Block 0003 [114]: 765279b71bb1a03d +Block 0003 [115]: d41d5e2e112f0fa8 +Block 0003 [116]: 357a184df3d5a794 +Block 0003 [117]: e81a33a463f91f12 +Block 0003 [118]: 1b5e5040169f5195 +Block 0003 [119]: 65a6ceba06b05e8d +Block 0003 [120]: 238160bc1d2bf802 +Block 0003 [121]: 003f752624f1a8b8 +Block 0003 [122]: 89ee084762af8511 +Block 0003 [123]: 543d6f278a505ed6 +Block 0003 [124]: 14bf434e3d68965e +Block 0003 [125]: 3a8ff0179c0b0acc +Block 0003 [126]: ded1168930b9ebb6 +Block 0003 [127]: 50caf52f839d5504 +Block 0004 [ 0]: af9eced90a3d60a2 +Block 0004 [ 1]: 3458bd6dccdc5a86 +Block 0004 [ 2]: 05f6a062431d2afa +Block 0004 [ 3]: 40e258d40e9c80b6 +Block 0004 [ 4]: 1c6db8b3fd4c0899 +Block 0004 [ 5]: d5216db6d8913af1 +Block 0004 [ 6]: 80778a715660665f +Block 0004 [ 7]: 82db35653611f89f +Block 0004 [ 8]: 5d4bd06fff5fdcdf +Block 0004 [ 9]: 50059e85fca48e27 +Block 0004 [ 10]: a9568cb5426a5236 +Block 0004 [ 11]: 4ff2f5eaab600283 +Block 0004 [ 12]: 4577b19f9ff16d6b +Block 0004 [ 13]: 34d6b1d3fc137020 +Block 0004 [ 14]: a13ba3cc8c9b1783 +Block 0004 [ 15]: 48d97e808f8af599 +Block 0004 [ 16]: 718a8c5091f5c05a +Block 0004 [ 17]: d767e72321690b90 +Block 0004 [ 18]: 10ed05706530391d +Block 0004 [ 19]: a3da1bebae712116 +Block 0004 [ 20]: 3010dad96d0aa1cd +Block 0004 [ 21]: 078eecb48d148ae0 +Block 0004 [ 22]: 74672b83af77f91a +Block 0004 [ 23]: 3fa4fdfb8a92c047 +Block 0004 [ 24]: 96178f425ec4a875 +Block 0004 [ 25]: dd3fd3cce9ceac5e +Block 0004 [ 26]: 049865736c634c55 +Block 0004 [ 27]: bb322ce0a56bac6e +Block 0004 [ 28]: ca961724d6ea8c2d +Block 0004 [ 29]: af33db626bcba7d7 +Block 0004 [ 30]: 539c29974e7730fb +Block 0004 [ 31]: c267909579ef4313 +Block 0004 [ 32]: b9c8059b629272a0 +Block 0004 [ 33]: 3a18f4a5bc8e46e5 +Block 0004 [ 34]: 1888a2e964943b59 +Block 0004 [ 35]: 2380a9dd92f2ec21 +Block 0004 [ 36]: 9fc8021fe3043d67 +Block 0004 [ 37]: 107833c67f457b34 +Block 0004 [ 38]: 3e2ce4a56a45bb77 +Block 0004 [ 39]: 084a7ad0d3ef4922 +Block 0004 [ 40]: 8175a1738e9ce296 +Block 0004 [ 41]: c686afc17b2812e6 +Block 0004 [ 42]: c8e7b3598949ae60 +Block 0004 [ 43]: 667e47836b39bd99 +Block 0004 [ 44]: 3604e1597cc944ad +Block 0004 [ 45]: 7ab71831df29df52 +Block 0004 [ 46]: e889cfc1441d8415 +Block 0004 [ 47]: 762430a2d72ccf81 +Block 0004 [ 48]: 2f9a51b2e3112715 +Block 0004 [ 49]: 20099292f390a970 +Block 0004 [ 50]: 0b6c4d04e9754c82 +Block 0004 [ 51]: 3adc49b980633db3 +Block 0004 [ 52]: 8368e8fa2086f14e +Block 0004 [ 53]: e5369eeda68501e6 +Block 0004 [ 54]: 6fa74ecd57fa72f8 +Block 0004 [ 55]: d71a9415ba8dc920 +Block 0004 [ 56]: eb858d1ca26f6a40 +Block 0004 [ 57]: 28f7cc213b047e4a +Block 0004 [ 58]: c5042731bbd2b6ad +Block 0004 [ 59]: 5e2a0c937bb6adce +Block 0004 [ 60]: 2c1546f5dcd5ea09 +Block 0004 [ 61]: 0a55f02c93bef2f5 +Block 0004 [ 62]: 36439d472e564d9d +Block 0004 [ 63]: 3cf3e188d8724a5c +Block 0004 [ 64]: d20dcc19dfe8ee10 +Block 0004 [ 65]: 1e8ea45c14e22f6e +Block 0004 [ 66]: d9e188a0c2cd7de8 +Block 0004 [ 67]: 69878ffd2d67e813 +Block 0004 [ 68]: ca30fe88eb4a8303 +Block 0004 [ 69]: 3510ecb290818e10 +Block 0004 [ 70]: 577d78d8b0b762d0 +Block 0004 [ 71]: 7a3f510e17a35949 +Block 0004 [ 72]: bc5d883c6e8b23f7 +Block 0004 [ 73]: 1737df43b6c0f384 +Block 0004 [ 74]: a59f90005d06889b +Block 0004 [ 75]: c4f11cb4bece144b +Block 0004 [ 76]: 82b11dd2bd8e1499 +Block 0004 [ 77]: 242adaad084c4281 +Block 0004 [ 78]: ffa6ca17c08e29e7 +Block 0004 [ 79]: 37584bc6cf8344ad +Block 0004 [ 80]: 4062901ff4a9f07d +Block 0004 [ 81]: 20653350117ec63a +Block 0004 [ 82]: 45e642098a74abda +Block 0004 [ 83]: 89bed5a24c62d08d +Block 0004 [ 84]: 6e990f7008adee71 +Block 0004 [ 85]: 3c9126660bd152a9 +Block 0004 [ 86]: ef46fbf3e4fc19d4 +Block 0004 [ 87]: 4a711294a574aadc +Block 0004 [ 88]: d0efcf189dc02bcf +Block 0004 [ 89]: 0b9a48427ec38900 +Block 0004 [ 90]: 98e275b7e095d3f5 +Block 0004 [ 91]: 0353d666b93fb663 +Block 0004 [ 92]: a4646c2d8bfa4d1a +Block 0004 [ 93]: 52d08735a0ea0d9e +Block 0004 [ 94]: e55f869281c22581 +Block 0004 [ 95]: 46e82d4f204f0bad +Block 0004 [ 96]: fd26877918e173a5 +Block 0004 [ 97]: 6fdf6ec2bfa7b0f9 +Block 0004 [ 98]: ea146432e63186c4 +Block 0004 [ 99]: cd50784b0958662c +Block 0004 [100]: c25aff66357e24d1 +Block 0004 [101]: 99d34900b33f60d5 +Block 0004 [102]: 98a063f95e4bb934 +Block 0004 [103]: 4506dedfb4e77e5a +Block 0004 [104]: ad87e672cc7a4644 +Block 0004 [105]: e2965d2b0ae768ca +Block 0004 [106]: 52740c3dd4b833cd +Block 0004 [107]: 86a1f3edefdb6d8b +Block 0004 [108]: c5b1d035b9837203 +Block 0004 [109]: 694652d2340b99d6 +Block 0004 [110]: 2bf6e2963182a8d9 +Block 0004 [111]: 250d6c5d00fc762c +Block 0004 [112]: d2a822c642cbebce +Block 0004 [113]: 1a222412dcde3705 +Block 0004 [114]: f233dad5cdde3b9d +Block 0004 [115]: 7d72f0fac57caf91 +Block 0004 [116]: c2c83c5e69eca9d0 +Block 0004 [117]: 4b6f24ea92332019 +Block 0004 [118]: 80ac4c2f9eb482d6 +Block 0004 [119]: e52624e96ab034f2 +Block 0004 [120]: 273f6f30b19e5149 +Block 0004 [121]: d0a2128e22bb5ab7 +Block 0004 [122]: c6254c37b7c08c52 +Block 0004 [123]: a4e9aef8ecce1b94 +Block 0004 [124]: 333e39a2d3e1ce42 +Block 0004 [125]: c7ece998f84c8a3c +Block 0004 [126]: 702c957ff3364c06 +Block 0004 [127]: 06c2f7892027c350 +Block 0005 [ 0]: 37fb883b3937ac93 +Block 0005 [ 1]: 6acec54a53ba1331 +Block 0005 [ 2]: 4c4d2fd0e811a0b2 +Block 0005 [ 3]: f86ce63134bf480d +Block 0005 [ 4]: 04b31b850ceeff33 +Block 0005 [ 5]: ec4f3972779a5807 +Block 0005 [ 6]: 4a38a3f44fa47814 +Block 0005 [ 7]: bcb1991407ad6c02 +Block 0005 [ 8]: 0f82b1e0ba066aaa +Block 0005 [ 9]: f54bed9000ac6d55 +Block 0005 [ 10]: 481fa35fb39a97ec +Block 0005 [ 11]: 643ae4be056c1fc5 +Block 0005 [ 12]: 8d46d87b02bf389b +Block 0005 [ 13]: 5a7fdc9e765c2590 +Block 0005 [ 14]: a987d4731ceae07f +Block 0005 [ 15]: 83c199f1d90e4967 +Block 0005 [ 16]: 2563b5d5ef1bdddb +Block 0005 [ 17]: cc4a90082adb5576 +Block 0005 [ 18]: ccfbb01c7bdb2a09 +Block 0005 [ 19]: d78e46de3d4b41d4 +Block 0005 [ 20]: afafa14a5460b979 +Block 0005 [ 21]: 3973fa9623ec6c3e +Block 0005 [ 22]: 5425a2b596353a0d +Block 0005 [ 23]: e39d8e6a2702e7da +Block 0005 [ 24]: 665ff8a5fa7395ed +Block 0005 [ 25]: dc8ac092ad76cc8a +Block 0005 [ 26]: b2bad6d483d0f35b +Block 0005 [ 27]: 702b5502bc4d9f0a +Block 0005 [ 28]: 34b68078c136dbbd +Block 0005 [ 29]: c58b0e7c79d3760c +Block 0005 [ 30]: a26c53403f613aa6 +Block 0005 [ 31]: 6c4593e1dfb652c5 +Block 0005 [ 32]: 747ae28048698d2c +Block 0005 [ 33]: 3c30792dce14a383 +Block 0005 [ 34]: 7d4c52934c3c97ea +Block 0005 [ 35]: be9210487bc27afa +Block 0005 [ 36]: b1b0f786bd2ecd14 +Block 0005 [ 37]: 5e1483d330345f76 +Block 0005 [ 38]: b6bd1d623a641c03 +Block 0005 [ 39]: 9c2eef877e56f795 +Block 0005 [ 40]: e7169c587776a221 +Block 0005 [ 41]: cf5441b20cb71c90 +Block 0005 [ 42]: 69431b3b02dfeee6 +Block 0005 [ 43]: 495249d284250f7e +Block 0005 [ 44]: c69d107cd21df04c +Block 0005 [ 45]: 016b358679f15ece +Block 0005 [ 46]: f6ed30c43580ad07 +Block 0005 [ 47]: c8fa50877f0ad8d5 +Block 0005 [ 48]: d654182b26c4db2f +Block 0005 [ 49]: 28249e944de6e463 +Block 0005 [ 50]: fbf815ebca2f424a +Block 0005 [ 51]: d9c3c5996d1a615c +Block 0005 [ 52]: 1ed370fedf078cf4 +Block 0005 [ 53]: 3e8a6e37b9bedf55 +Block 0005 [ 54]: ef3369be5be150a9 +Block 0005 [ 55]: f4f724a2551fa487 +Block 0005 [ 56]: 088b9b009db5fc68 +Block 0005 [ 57]: 2e450de812063bb3 +Block 0005 [ 58]: fd20078b92ad2212 +Block 0005 [ 59]: ada2ab1a6d276600 +Block 0005 [ 60]: 2353d4e8ed05dcc8 +Block 0005 [ 61]: 48980a983637a4d3 +Block 0005 [ 62]: aefa1109f93347e1 +Block 0005 [ 63]: 0ced5850fbb88b4a +Block 0005 [ 64]: 433f25d571fb15c6 +Block 0005 [ 65]: b372ed489fd0a7f8 +Block 0005 [ 66]: d561dfd10da4202c +Block 0005 [ 67]: 4f5380cf14258bf6 +Block 0005 [ 68]: 9700f377438cc2a5 +Block 0005 [ 69]: a1c45cc8da4e3887 +Block 0005 [ 70]: 08b7d3ac75cea15d +Block 0005 [ 71]: 36e03cf3fbd05396 +Block 0005 [ 72]: c3fb7e03ba6f8fbc +Block 0005 [ 73]: 3f29718b41ff57c1 +Block 0005 [ 74]: d09946ec9b27aa37 +Block 0005 [ 75]: 4a0718a8f5616ac5 +Block 0005 [ 76]: e38cc23047827da9 +Block 0005 [ 77]: 002e16cd25071184 +Block 0005 [ 78]: 869182a986a7b7ee +Block 0005 [ 79]: 174a057e0e3b23a1 +Block 0005 [ 80]: 999aa42055b49c03 +Block 0005 [ 81]: c6d5b5d5120af131 +Block 0005 [ 82]: beb10bc4288cb0b7 +Block 0005 [ 83]: 214163d0c27f32e6 +Block 0005 [ 84]: 251a7d51579283e1 +Block 0005 [ 85]: ac0a7173e7268ccd +Block 0005 [ 86]: efabfb39669a0193 +Block 0005 [ 87]: 026de346a9670d9d +Block 0005 [ 88]: 15c15e1754978b30 +Block 0005 [ 89]: 977ebe9542e66de7 +Block 0005 [ 90]: c8fe60d834be0957 +Block 0005 [ 91]: 7e16de91837068a8 +Block 0005 [ 92]: 27785e000961550b +Block 0005 [ 93]: 9a5a8f77b6cba683 +Block 0005 [ 94]: f90378fa99cfd37b +Block 0005 [ 95]: f8c3ccad6676d6fe +Block 0005 [ 96]: c0b658afd44ad15b +Block 0005 [ 97]: b2580e884ffc329d +Block 0005 [ 98]: f79de1cc43658261 +Block 0005 [ 99]: 4536d5eb3f448ee0 +Block 0005 [100]: a4815de2946fe975 +Block 0005 [101]: 2295138fae33b9aa +Block 0005 [102]: 32947ba2cb293586 +Block 0005 [103]: 2c96c493e71235d9 +Block 0005 [104]: 546b634b59350c17 +Block 0005 [105]: bfd82c1e545abf86 +Block 0005 [106]: ede8399895eafe84 +Block 0005 [107]: 9027ddacc2ae573f +Block 0005 [108]: 7da810b9c7bf4af7 +Block 0005 [109]: 7e7de19cb6f96d91 +Block 0005 [110]: 08b249fed8b5cf45 +Block 0005 [111]: 90aae1f0d65f196d +Block 0005 [112]: 0cb847511541ea6b +Block 0005 [113]: 450c0c049ed61d99 +Block 0005 [114]: 8a095dd9c6d54157 +Block 0005 [115]: 82a4fbf93f735094 +Block 0005 [116]: d55fbc420c629102 +Block 0005 [117]: 25c9bf0fe571f5dd +Block 0005 [118]: 80207b546203df4c +Block 0005 [119]: 1cb70dea46305eef +Block 0005 [120]: 890003e8e39ecf29 +Block 0005 [121]: e558c275564dbf38 +Block 0005 [122]: 1d060fe29707d16b +Block 0005 [123]: 5037a90495063117 +Block 0005 [124]: e0d0226c0fce2c3c +Block 0005 [125]: ac55085dea1eef97 +Block 0005 [126]: d0a0f531e14cb58e +Block 0005 [127]: dda1781abb811d29 +Block 0006 [ 0]: a4000cb5a1cc76dd +Block 0006 [ 1]: 0c6a94a4086be124 +Block 0006 [ 2]: 819335f8932114b9 +Block 0006 [ 3]: d857ab033288c788 +Block 0006 [ 4]: f2e4630dbc30fddb +Block 0006 [ 5]: a1e8320af2866db4 +Block 0006 [ 6]: e225b40713f854ee +Block 0006 [ 7]: 088f90ee8bae291d +Block 0006 [ 8]: a43322a0c40abfbc +Block 0006 [ 9]: 83a4793e21d20b58 +Block 0006 [ 10]: 4d96e775f789cea2 +Block 0006 [ 11]: 30bd3620326a7f96 +Block 0006 [ 12]: d09c9035cd910544 +Block 0006 [ 13]: 81d572ae2eeb8006 +Block 0006 [ 14]: ceaf14127b62344b +Block 0006 [ 15]: 4f433cb45b3d6b0d +Block 0006 [ 16]: 31725df5018af041 +Block 0006 [ 17]: 927a1ed74e91cf76 +Block 0006 [ 18]: 555f5323de185080 +Block 0006 [ 19]: 2e303b4ff3920046 +Block 0006 [ 20]: 723ed0de113fa48b +Block 0006 [ 21]: 1d016713b6fff742 +Block 0006 [ 22]: c50a5aa3a0a0cfdb +Block 0006 [ 23]: a7d2e5db07f1475b +Block 0006 [ 24]: cd8324b0a3c0cad5 +Block 0006 [ 25]: 22da45be8cd1ec58 +Block 0006 [ 26]: 3d4f99a20af4ff73 +Block 0006 [ 27]: 5de2f3351e5fb287 +Block 0006 [ 28]: 3fedb44f445c865f +Block 0006 [ 29]: 2dcc364d689235c1 +Block 0006 [ 30]: 8fd3800f89627a4f +Block 0006 [ 31]: d4fd9bd4cc90b65a +Block 0006 [ 32]: d2453a16c4292b6c +Block 0006 [ 33]: d5c78b9e8066bc63 +Block 0006 [ 34]: 3de47a08c1ca30a4 +Block 0006 [ 35]: d226d79350129999 +Block 0006 [ 36]: 94017a9989f909b7 +Block 0006 [ 37]: 973151520b780bc4 +Block 0006 [ 38]: b852007fba960687 +Block 0006 [ 39]: ab0780741ff20149 +Block 0006 [ 40]: a9324a16f54ed9c4 +Block 0006 [ 41]: 393abfca3807175c +Block 0006 [ 42]: 690a91e3d9751ccb +Block 0006 [ 43]: f63676a1df3693a0 +Block 0006 [ 44]: c947250437a22b2f +Block 0006 [ 45]: 783c5571a97b606f +Block 0006 [ 46]: 6d05d793cd281272 +Block 0006 [ 47]: 60f5c5e244e4c08e +Block 0006 [ 48]: ea2ec7dabb54f430 +Block 0006 [ 49]: c6dce5092746fa3d +Block 0006 [ 50]: 973bc36c87c55018 +Block 0006 [ 51]: 0b564299f84975bb +Block 0006 [ 52]: f3ce81c95f39913d +Block 0006 [ 53]: 81357040f6d08a8a +Block 0006 [ 54]: dc40acbc9c27bcd3 +Block 0006 [ 55]: ae401fdd7ee471e6 +Block 0006 [ 56]: 80740241c5495c34 +Block 0006 [ 57]: cdb0a501fcfe4787 +Block 0006 [ 58]: 9f23f2af6531784a +Block 0006 [ 59]: e1c3475e31535d8f +Block 0006 [ 60]: 726770b5755e3324 +Block 0006 [ 61]: a5d7dfd224b844a3 +Block 0006 [ 62]: c7d7309774a868f9 +Block 0006 [ 63]: fde43b69a05ff27a +Block 0006 [ 64]: 78ba6d2fd465062e +Block 0006 [ 65]: ebc28526805859d7 +Block 0006 [ 66]: fd781d5281e8c097 +Block 0006 [ 67]: abe63b415d6c8429 +Block 0006 [ 68]: 73c804af9ac76b22 +Block 0006 [ 69]: c920fa3ad6d82433 +Block 0006 [ 70]: 15baf3d384adcebe +Block 0006 [ 71]: a83ad88c365bb9cd +Block 0006 [ 72]: a4d5ce841d92a276 +Block 0006 [ 73]: 5462f046b839af67 +Block 0006 [ 74]: 5b2edf414b026135 +Block 0006 [ 75]: ab768f985123b080 +Block 0006 [ 76]: f3e05481874d72b3 +Block 0006 [ 77]: ce73c152e3ff2f96 +Block 0006 [ 78]: 78bdc7edc3985401 +Block 0006 [ 79]: 6e3f52fa030d9227 +Block 0006 [ 80]: 69fc3df28dd982b6 +Block 0006 [ 81]: 87214bb7ffc2dc1d +Block 0006 [ 82]: f45a7ba051ba8110 +Block 0006 [ 83]: 2f9ccac16c85693c +Block 0006 [ 84]: f4447e2b8b6edbe6 +Block 0006 [ 85]: 7cad68391b787930 +Block 0006 [ 86]: 538850758753fc1a +Block 0006 [ 87]: fb8ee00e51149914 +Block 0006 [ 88]: c6936b88c520b802 +Block 0006 [ 89]: dca494f588a65fe3 +Block 0006 [ 90]: 7e261e838c252e46 +Block 0006 [ 91]: 8f4a0b941c47c9b6 +Block 0006 [ 92]: 773509cad95e3333 +Block 0006 [ 93]: 1475ee7d56a9da13 +Block 0006 [ 94]: feafdd14849f4089 +Block 0006 [ 95]: 2a1030fc9cae7e7c +Block 0006 [ 96]: d8fc6122c52cccaa +Block 0006 [ 97]: 02b7b807639b4d85 +Block 0006 [ 98]: 61712d9de40c2e87 +Block 0006 [ 99]: 345ace9a8469b06d +Block 0006 [100]: 9dcaa04d2aaa46a4 +Block 0006 [101]: 5c7f906c18c3b569 +Block 0006 [102]: 96cf6a3057491690 +Block 0006 [103]: 92341fd19b9555b4 +Block 0006 [104]: cd7be1cbec00959e +Block 0006 [105]: fbd2fc3c8a3d82e5 +Block 0006 [106]: f8bead38c9ad1356 +Block 0006 [107]: 5b0b7f47c9a71f9e +Block 0006 [108]: 670e7bfc0c037aa1 +Block 0006 [109]: 09a571475b06b55f +Block 0006 [110]: 2aaa535f4b5af572 +Block 0006 [111]: 47c00b90cdf87c08 +Block 0006 [112]: 985306fd8b26771f +Block 0006 [113]: 06b05349f47bfc1a +Block 0006 [114]: ca411ea698000db5 +Block 0006 [115]: cb85ea28dca6abf1 +Block 0006 [116]: 77b17ea121cd0348 +Block 0006 [117]: e5e4aa917ff9a4ba +Block 0006 [118]: 996faa37d20b0cb0 +Block 0006 [119]: f8dc838f2c8f7f3b +Block 0006 [120]: 4da7fed9fc5e3b3a +Block 0006 [121]: c833da16dea13c63 +Block 0006 [122]: efcaca85677958bc +Block 0006 [123]: a64498dca760f872 +Block 0006 [124]: 9a1bbadb8aa68b52 +Block 0006 [125]: a319d574ee5b8c46 +Block 0006 [126]: f4ff528d79cfee8f +Block 0006 [127]: b1af436e7c0b1c92 +Block 0007 [ 0]: e3ca02813668c742 +Block 0007 [ 1]: a7729db1aede304c +Block 0007 [ 2]: 9bb0d397cebc3d49 +Block 0007 [ 3]: 21f5d7dcd2e2fb53 +Block 0007 [ 4]: 2a31d5bdf05b7362 +Block 0007 [ 5]: 69239eb5a0b4bd31 +Block 0007 [ 6]: 48552e28bae9c687 +Block 0007 [ 7]: 23a438f8a232653a +Block 0007 [ 8]: aaaaf7b7895be8a6 +Block 0007 [ 9]: 567017d6a21230c2 +Block 0007 [ 10]: 00e9a00244ddff2a +Block 0007 [ 11]: b39a550c9200aedb +Block 0007 [ 12]: af8eeb528d432076 +Block 0007 [ 13]: e306f8fcfb5e1673 +Block 0007 [ 14]: cb6f324d48ea87de +Block 0007 [ 15]: c9279674b24388bb +Block 0007 [ 16]: 747e27bb51c50f7d +Block 0007 [ 17]: 51c2bb725842f6c2 +Block 0007 [ 18]: 14c56a15a8e3de1c +Block 0007 [ 19]: da3c7cb2760f3a76 +Block 0007 [ 20]: 75db3ede9cdc7ba1 +Block 0007 [ 21]: 4272ea974cdb8c1a +Block 0007 [ 22]: e99d25ca0e6883e9 +Block 0007 [ 23]: ec88b2fb97bb6b1d +Block 0007 [ 24]: aee2d46370e3900f +Block 0007 [ 25]: 3df19ce3caaf9db0 +Block 0007 [ 26]: 3bee45344fa45a62 +Block 0007 [ 27]: 259b38d5bfb723e5 +Block 0007 [ 28]: 782a1894acdd67eb +Block 0007 [ 29]: dd69343d8b2a42b0 +Block 0007 [ 30]: adb49da918224aae +Block 0007 [ 31]: e20ca605df492741 +Block 0007 [ 32]: 5c786e5c5f4a6ba7 +Block 0007 [ 33]: 3df1691d217fc686 +Block 0007 [ 34]: 7da6d378e182ddeb +Block 0007 [ 35]: 24078fd55514fdc0 +Block 0007 [ 36]: 996bed5355b02441 +Block 0007 [ 37]: 0c3a5c248f888609 +Block 0007 [ 38]: 2ec1ed046e161f71 +Block 0007 [ 39]: c1639cff4bf02347 +Block 0007 [ 40]: 87b135dc7f7a8b9a +Block 0007 [ 41]: 43ce7d06f71ffa98 +Block 0007 [ 42]: 7d3798f0664c9059 +Block 0007 [ 43]: e326063f0a25eed9 +Block 0007 [ 44]: 00abf225c2807f91 +Block 0007 [ 45]: b8aac8dccf1c912d +Block 0007 [ 46]: 56bc16c7ba15ef5b +Block 0007 [ 47]: bcd08294729e70f2 +Block 0007 [ 48]: db341d8367232a64 +Block 0007 [ 49]: 0dc9b2b57218845d +Block 0007 [ 50]: 12568bb40ff2045d +Block 0007 [ 51]: 5a62b75c8bb83c21 +Block 0007 [ 52]: c17362581e812f90 +Block 0007 [ 53]: 4580f3b28720b90e +Block 0007 [ 54]: b946d0208b06c214 +Block 0007 [ 55]: c9ef31df9b2d4378 +Block 0007 [ 56]: 6aa97cb883cdf5e4 +Block 0007 [ 57]: 42275d7f7e29da30 +Block 0007 [ 58]: fcc5b7368657d74d +Block 0007 [ 59]: adf37d794e5f9d31 +Block 0007 [ 60]: 97b138514fc74fd8 +Block 0007 [ 61]: 9eb6b55fa47fc297 +Block 0007 [ 62]: 754051ffac48b541 +Block 0007 [ 63]: 1d8b95b09af8fd1a +Block 0007 [ 64]: acd16a127bced27e +Block 0007 [ 65]: ae3382e9f75feac7 +Block 0007 [ 66]: c76a1f20a5c9a347 +Block 0007 [ 67]: dbe7136e2087e8d8 +Block 0007 [ 68]: 577029805d2cfb5d +Block 0007 [ 69]: 78dee0f47b02e323 +Block 0007 [ 70]: eeaa97dc4cb11975 +Block 0007 [ 71]: bdfa8f0f44599323 +Block 0007 [ 72]: 7f1d58af698b5e71 +Block 0007 [ 73]: fc5601043ef0b4e1 +Block 0007 [ 74]: 85eaa5dcd3db9539 +Block 0007 [ 75]: 2f357fa81f4adb91 +Block 0007 [ 76]: e91a41bc924a8ff2 +Block 0007 [ 77]: f70375d6d1380304 +Block 0007 [ 78]: c1bb93a4b3deb5d2 +Block 0007 [ 79]: 6c75ed60f7bd386e +Block 0007 [ 80]: 2a6417c70ca6da09 +Block 0007 [ 81]: 496bc0f2253ee4d6 +Block 0007 [ 82]: 385397524a41a976 +Block 0007 [ 83]: 385e12a008ae8ace +Block 0007 [ 84]: 94ac859b0438f0b6 +Block 0007 [ 85]: 2200d981da6dccad +Block 0007 [ 86]: 6f6f3c5730b2bac1 +Block 0007 [ 87]: 6e4ca80bc0ba5194 +Block 0007 [ 88]: 65a5bd29d8321a5c +Block 0007 [ 89]: b62cc59f27aaad04 +Block 0007 [ 90]: d923fdae147bc40c +Block 0007 [ 91]: 9c616bd57b7e84ae +Block 0007 [ 92]: ab85da331161632c +Block 0007 [ 93]: 1f829ab9e3d82e0f +Block 0007 [ 94]: a1a0cb5d41abd087 +Block 0007 [ 95]: 65d1a44fa4f74d71 +Block 0007 [ 96]: 0fff9f47af53d7bc +Block 0007 [ 97]: a6137e578c90212a +Block 0007 [ 98]: 1952ddf5f0d8559e +Block 0007 [ 99]: 82caa6d17701ce93 +Block 0007 [100]: ce2c4f2caa70d647 +Block 0007 [101]: 43b6f388fc63fceb +Block 0007 [102]: f0ab2a4a5f2401eb +Block 0007 [103]: 73f81ab2ff30012b +Block 0007 [104]: 0d48f1ed17ad305d +Block 0007 [105]: b9e395a5436b964b +Block 0007 [106]: 26ef4df90b6def84 +Block 0007 [107]: e2fe192b2e7fd243 +Block 0007 [108]: 2a1a94bfc3284834 +Block 0007 [109]: 20d972830befddeb +Block 0007 [110]: c4f665c5b4aae334 +Block 0007 [111]: dfc863e717497389 +Block 0007 [112]: c9d20e095e714d4a +Block 0007 [113]: 080e99e41e40ccd2 +Block 0007 [114]: 155244fecd9b4d56 +Block 0007 [115]: 0390aa4affdc169a +Block 0007 [116]: 24fd146729ad23c2 +Block 0007 [117]: 6c1c75d802e768bd +Block 0007 [118]: 18a2e91cc583305c +Block 0007 [119]: 38df18475a423feb +Block 0007 [120]: 5debbde2af61f810 +Block 0007 [121]: aeaca5dee3a59241 +Block 0007 [122]: bcde39331a1ecc97 +Block 0007 [123]: fbb5f3387dc6ee45 +Block 0007 [124]: 3a6761898cf1de67 +Block 0007 [125]: 274e953bd9e0c65a +Block 0007 [126]: 207eee4dbea76ede +Block 0007 [127]: 5ae4c378c10596ed +Block 0008 [ 0]: 7a4558382ec26ffe +Block 0008 [ 1]: bfb3a4220ee33bec +Block 0008 [ 2]: 0bb9abef17c12091 +Block 0008 [ 3]: 2d1a5e78e0315a51 +Block 0008 [ 4]: 5229abb2e02f3c9c +Block 0008 [ 5]: 4bf95fcf42690b6a +Block 0008 [ 6]: 69f9c812e04e0a23 +Block 0008 [ 7]: b9a9776bf9a9ebef +Block 0008 [ 8]: 4c68c489cd6f9f2f +Block 0008 [ 9]: d8aeafa31f1b226f +Block 0008 [ 10]: ab3999523eef3655 +Block 0008 [ 11]: 522930a175b1c971 +Block 0008 [ 12]: 6d854994a052c568 +Block 0008 [ 13]: 4f6a0b0e9ad28cee +Block 0008 [ 14]: 9ccbd1b8073aca10 +Block 0008 [ 15]: 9cb57f7137ccf8e4 +Block 0008 [ 16]: c3b6b259a447ec16 +Block 0008 [ 17]: c7d28a929ba8a4b9 +Block 0008 [ 18]: ef07034d2c437791 +Block 0008 [ 19]: 886507bd0b23dd4a +Block 0008 [ 20]: 439b59baa42dddab +Block 0008 [ 21]: adca3d7066d8c1c9 +Block 0008 [ 22]: 237de3c198c75d7e +Block 0008 [ 23]: 14a12b61a00c27d8 +Block 0008 [ 24]: 21ec3e3b68c03bea +Block 0008 [ 25]: 62f145b5bdfd0265 +Block 0008 [ 26]: 441c29b7ab81e019 +Block 0008 [ 27]: 721250f6ba37cec5 +Block 0008 [ 28]: 4f1d66952a460eac +Block 0008 [ 29]: 36c90c6c08958ba0 +Block 0008 [ 30]: 36e0d6b302c4c43d +Block 0008 [ 31]: a1036de72d3a24c4 +Block 0008 [ 32]: 5eb1b5a99de68da2 +Block 0008 [ 33]: d0f436a3c1bc2ac6 +Block 0008 [ 34]: bde158d75549813d +Block 0008 [ 35]: c747c78b6c871a27 +Block 0008 [ 36]: bf6583d6d6568f05 +Block 0008 [ 37]: 67752ac1e4e6d2a8 +Block 0008 [ 38]: d400789d1a2c99b6 +Block 0008 [ 39]: 4062fc2df7422502 +Block 0008 [ 40]: 16f312161d62c8ca +Block 0008 [ 41]: b73c24e98ec33c57 +Block 0008 [ 42]: a5051349edae2a72 +Block 0008 [ 43]: b79a6d8a2aaec726 +Block 0008 [ 44]: bc2138ff076b8662 +Block 0008 [ 45]: b6572caea7fba1b6 +Block 0008 [ 46]: 602ac98c8a63ace9 +Block 0008 [ 47]: dd7ef06b16122ceb +Block 0008 [ 48]: 80a999eb61bd8d70 +Block 0008 [ 49]: 9b7d45dbc341d857 +Block 0008 [ 50]: ac4e67fabca37aa9 +Block 0008 [ 51]: f9c524809e716091 +Block 0008 [ 52]: 619639e9fb27b57e +Block 0008 [ 53]: 5c1608ab33ed5ed2 +Block 0008 [ 54]: 369589c03d0eafa7 +Block 0008 [ 55]: a7914d392d81cc98 +Block 0008 [ 56]: 83759d9856a94944 +Block 0008 [ 57]: 9cfee9c2a8cb1780 +Block 0008 [ 58]: 30fe1eeac6982f47 +Block 0008 [ 59]: f4548a258a723f75 +Block 0008 [ 60]: 9aa833ecedeb3db1 +Block 0008 [ 61]: 12bad08144aafdfd +Block 0008 [ 62]: ff87f476fa549ee1 +Block 0008 [ 63]: 9bfcd44245b5d2d0 +Block 0008 [ 64]: 3a11a5b0fb4ff669 +Block 0008 [ 65]: ccfb7ba588c3d8fa +Block 0008 [ 66]: d8fd851205d9a244 +Block 0008 [ 67]: 4417f445a9a3d69d +Block 0008 [ 68]: 6721e7f561f6193f +Block 0008 [ 69]: ff39a930ac96214a +Block 0008 [ 70]: f0a33cfe65e8e5a7 +Block 0008 [ 71]: 906c6ae625eba5ef +Block 0008 [ 72]: 9ff110b00db8cf82 +Block 0008 [ 73]: a50a37b4ec50baef +Block 0008 [ 74]: aea63d8d8ab312b8 +Block 0008 [ 75]: 38bcee3687cfd826 +Block 0008 [ 76]: f55e6ebeeb5943f1 +Block 0008 [ 77]: 0cf154b24e0f7114 +Block 0008 [ 78]: 6e6149f3381c77da +Block 0008 [ 79]: d2c808920c78012f +Block 0008 [ 80]: 28375eb951f79538 +Block 0008 [ 81]: f84d4a372c6ac727 +Block 0008 [ 82]: 18e8fd6355ae1e8b +Block 0008 [ 83]: 993b2759755c6511 +Block 0008 [ 84]: fa0ad100b03f4a83 +Block 0008 [ 85]: 26d937298697431b +Block 0008 [ 86]: 2667bcd9fa134517 +Block 0008 [ 87]: 25bf69ea01c9f43b +Block 0008 [ 88]: 651d7711288dfee6 +Block 0008 [ 89]: dbdbc71ad1d3d8e6 +Block 0008 [ 90]: 19a2bc2962073d38 +Block 0008 [ 91]: 6fed17191de5eb87 +Block 0008 [ 92]: d00e7248d67d818f +Block 0008 [ 93]: 552f48b24a3c532d +Block 0008 [ 94]: 92f601c4a12ca656 +Block 0008 [ 95]: 6bd72e8382bab9f4 +Block 0008 [ 96]: 87800dd5e699ffa0 +Block 0008 [ 97]: 62051340716b1174 +Block 0008 [ 98]: cc61f428a6bff2ab +Block 0008 [ 99]: 54a69e44d4ce3a2c +Block 0008 [100]: 6496d5318c1f8a48 +Block 0008 [101]: bb871f31a81fa4a5 +Block 0008 [102]: 6a74236c72414426 +Block 0008 [103]: 15bae3add20aca96 +Block 0008 [104]: c80ea241cd5f97a8 +Block 0008 [105]: c04bdaaefaca448e +Block 0008 [106]: 81e3c2a697fe8f89 +Block 0008 [107]: 3be29e5ef72ea2d2 +Block 0008 [108]: 3f6b73d9c412839a +Block 0008 [109]: a8147b4754e46f0a +Block 0008 [110]: 29a478f91ff30eb8 +Block 0008 [111]: afe171a02f8ab002 +Block 0008 [112]: 14402c72b6ed606a +Block 0008 [113]: 0fc6cf88e4b26b79 +Block 0008 [114]: 1371cfaf137a4a36 +Block 0008 [115]: 3508f7e250e4812b +Block 0008 [116]: 6c0cdce1e3cec82e +Block 0008 [117]: b2e134c697f67e2d +Block 0008 [118]: 059929cfb84c8223 +Block 0008 [119]: 934dd6d510a690af +Block 0008 [120]: 26e3c05f2c8e2eb8 +Block 0008 [121]: 9e05231042675d2f +Block 0008 [122]: f8dfaedd456045cd +Block 0008 [123]: 0504ccf5fc2d1bf3 +Block 0008 [124]: f0345bbcc1d562ce +Block 0008 [125]: 2bdf71543425789a +Block 0008 [126]: 1b2ae340f1eb41a0 +Block 0008 [127]: 6ec035c341932b16 +Block 0009 [ 0]: 76da9663625cefa5 +Block 0009 [ 1]: 14d8f3ea4efe924a +Block 0009 [ 2]: d971d85251e15d77 +Block 0009 [ 3]: 1c25e2e430baeda6 +Block 0009 [ 4]: 0c4de1e3dbbf5aa1 +Block 0009 [ 5]: 6bf912dd75d1ebee +Block 0009 [ 6]: 89c6fd1e272626f6 +Block 0009 [ 7]: 4267979560731667 +Block 0009 [ 8]: bba1c48ef0407566 +Block 0009 [ 9]: bf22ba8f0c8db099 +Block 0009 [ 10]: abf49acd22b68ee7 +Block 0009 [ 11]: 19721b88f46e7b15 +Block 0009 [ 12]: 7b2f6dac68e7509c +Block 0009 [ 13]: d74ad4e90c4b1a0b +Block 0009 [ 14]: b02f8f4b13ee4aed +Block 0009 [ 15]: 3435fb7ceaebaf14 +Block 0009 [ 16]: cb59f285f76ecd91 +Block 0009 [ 17]: 19a98fac16083d0f +Block 0009 [ 18]: a6d6f2e7f0a10405 +Block 0009 [ 19]: b89f8e247760352b +Block 0009 [ 20]: 104507b7b68bfc06 +Block 0009 [ 21]: de351c2819b20286 +Block 0009 [ 22]: 9ec1c7aa3e8073a2 +Block 0009 [ 23]: 7c2c46aa130f6c1b +Block 0009 [ 24]: 5ac3a947e461ab4f +Block 0009 [ 25]: eca30a19e7455c87 +Block 0009 [ 26]: 9640d7b0113b5e71 +Block 0009 [ 27]: c896d6339618e6fb +Block 0009 [ 28]: d52d34642b92723e +Block 0009 [ 29]: 2a55ca129d38038e +Block 0009 [ 30]: 8a6dc3d7ceec85e9 +Block 0009 [ 31]: 7ba681ec3a53db83 +Block 0009 [ 32]: 3b9583434b7b2859 +Block 0009 [ 33]: 88bb320d5478546c +Block 0009 [ 34]: 09fe2e25f91bfd7a +Block 0009 [ 35]: 63c2c517ed701e04 +Block 0009 [ 36]: 61d250293a71cb82 +Block 0009 [ 37]: 32bdc1b64b6104b9 +Block 0009 [ 38]: f70a89b6785a1d41 +Block 0009 [ 39]: fc82d03affdb8016 +Block 0009 [ 40]: 514005dcdaae909a +Block 0009 [ 41]: 9211e089b2f9cda7 +Block 0009 [ 42]: 1416e44e5ae8b972 +Block 0009 [ 43]: 939c49d1b0d529b8 +Block 0009 [ 44]: 1840aede76b35c76 +Block 0009 [ 45]: 310b737a4d04eb51 +Block 0009 [ 46]: d7a2a1b09c71f893 +Block 0009 [ 47]: 3ea296cca93d6bfc +Block 0009 [ 48]: 91d7f03844662ebe +Block 0009 [ 49]: 10ded6ff22ebf906 +Block 0009 [ 50]: d13a2d771145017e +Block 0009 [ 51]: 3108f839bba8758e +Block 0009 [ 52]: c14c4cee0d507f99 +Block 0009 [ 53]: 892d6f69c439966f +Block 0009 [ 54]: 2509cbab89dac3e3 +Block 0009 [ 55]: f3645d2ebd8256cb +Block 0009 [ 56]: ece3b3e870ccc6b0 +Block 0009 [ 57]: 8069fedcc032f7cd +Block 0009 [ 58]: f1f3c7c853ce120c +Block 0009 [ 59]: 0c98b4f251d8b58c +Block 0009 [ 60]: c09d5932ecedc2e5 +Block 0009 [ 61]: d77d7ed390080d2e +Block 0009 [ 62]: 6a22a1fc7572e784 +Block 0009 [ 63]: 278de8d4b1198f48 +Block 0009 [ 64]: 5750b28e6422a7dd +Block 0009 [ 65]: f7d1a934c4c4f05c +Block 0009 [ 66]: af4ec05117ea6427 +Block 0009 [ 67]: 6fb4f6920fc7e676 +Block 0009 [ 68]: f2d83512befbd4b1 +Block 0009 [ 69]: f86687a23209f3aa +Block 0009 [ 70]: c777825f7401eee4 +Block 0009 [ 71]: c662f86b0d3f349c +Block 0009 [ 72]: 382a513dd4753c4b +Block 0009 [ 73]: a048c89447a62b56 +Block 0009 [ 74]: a74aa6b3081d0308 +Block 0009 [ 75]: f13092e648766c28 +Block 0009 [ 76]: 03032bb4913dc1b2 +Block 0009 [ 77]: b6998b0e42c2e209 +Block 0009 [ 78]: ab39805f67bca821 +Block 0009 [ 79]: 2fc2a4955b78cbe7 +Block 0009 [ 80]: 159cba427791e7c3 +Block 0009 [ 81]: 3fe7d23e3c571718 +Block 0009 [ 82]: 5e0d6f1e911c52b3 +Block 0009 [ 83]: 22f7a61b77838204 +Block 0009 [ 84]: d77426be938516bb +Block 0009 [ 85]: f7cb3ce698976d4f +Block 0009 [ 86]: 2cdd848c7d0eae51 +Block 0009 [ 87]: ad6f6dcbf2c0d570 +Block 0009 [ 88]: 817c9ec46f060801 +Block 0009 [ 89]: 4b7f9262adfdacd0 +Block 0009 [ 90]: 9f31812f3e5255a8 +Block 0009 [ 91]: cd174aa2c8c16338 +Block 0009 [ 92]: 8789b5ef6ade172b +Block 0009 [ 93]: 39373711e9a96757 +Block 0009 [ 94]: dff1fb97ccd6a6c2 +Block 0009 [ 95]: d9d4e3179b5f13e8 +Block 0009 [ 96]: 0a304d46e94cca00 +Block 0009 [ 97]: c1209e65a601f90b +Block 0009 [ 98]: 23bc71e75c8c4214 +Block 0009 [ 99]: 712904d565d09b14 +Block 0009 [100]: 97cfd610419e9abb +Block 0009 [101]: 3472ae86e479b578 +Block 0009 [102]: fef9f9f5b4491d49 +Block 0009 [103]: 1237c8b4e9dceb47 +Block 0009 [104]: 8ecddaf0a2588160 +Block 0009 [105]: bb75acd9afe17a30 +Block 0009 [106]: abb9ec4eaaf15acd +Block 0009 [107]: 36ca450d2be94bfc +Block 0009 [108]: a5ba15a2f35969ca +Block 0009 [109]: 5fe9dd04c051aa7f +Block 0009 [110]: 766ae8329fb254a4 +Block 0009 [111]: 5297e1d430ef5b0a +Block 0009 [112]: 38028d4ef043b385 +Block 0009 [113]: 367eae2fee1ecfb3 +Block 0009 [114]: 5244025847818051 +Block 0009 [115]: 5a708274f861d144 +Block 0009 [116]: c47fc6eb23e4815f +Block 0009 [117]: 4237e8b9b1f3cd9d +Block 0009 [118]: dbe1041d34cac4e1 +Block 0009 [119]: 413d2ae2ebf997c0 +Block 0009 [120]: f2e1a0edb6131e83 +Block 0009 [121]: 6017d817162e938e +Block 0009 [122]: e615ec7b7b788ba9 +Block 0009 [123]: 65980da4c019ce57 +Block 0009 [124]: fc0468d8994e41f6 +Block 0009 [125]: b4acf9c210b4c4a8 +Block 0009 [126]: 9d41bf349c2c7d76 +Block 0009 [127]: 692fde9411561af2 +Block 0010 [ 0]: 31b0e0280e2ecc43 +Block 0010 [ 1]: d93ce8f68a0da03e +Block 0010 [ 2]: 905acb624ea42359 +Block 0010 [ 3]: 41db5464be6fd809 +Block 0010 [ 4]: 1e18ca7554a26f96 +Block 0010 [ 5]: 13b7dab161d1fdd8 +Block 0010 [ 6]: 9b66c337f64cd75e +Block 0010 [ 7]: dcd57a568b0aa2eb +Block 0010 [ 8]: bb146ad41505d2f2 +Block 0010 [ 9]: 68b23abdcc2bedd2 +Block 0010 [ 10]: 98ea131811a6ce9d +Block 0010 [ 11]: bd4637f6ebaa8950 +Block 0010 [ 12]: de8a6392c9be3746 +Block 0010 [ 13]: 2877ec90bd19d6b4 +Block 0010 [ 14]: fa7e8f7f7268a613 +Block 0010 [ 15]: 74a12ec6ff3ea15b +Block 0010 [ 16]: 7760e314bb610a69 +Block 0010 [ 17]: c2567a4d1debed82 +Block 0010 [ 18]: 92a09f57410c22c6 +Block 0010 [ 19]: 029cf267e7fe7104 +Block 0010 [ 20]: fbea3477892c0bc9 +Block 0010 [ 21]: b2e3f0e7ef5a7a06 +Block 0010 [ 22]: d79a6b9875552ed8 +Block 0010 [ 23]: bb2af0a80556d78f +Block 0010 [ 24]: cba43070f27af0be +Block 0010 [ 25]: 0916245fd48c1b13 +Block 0010 [ 26]: ee72922b5c95c68b +Block 0010 [ 27]: 8442fa24985ecf3a +Block 0010 [ 28]: cf80392cac06da0c +Block 0010 [ 29]: d0920a00aeec8df8 +Block 0010 [ 30]: 3e24e4a5ceda5c74 +Block 0010 [ 31]: d8bbe4e1b6a62b5b +Block 0010 [ 32]: 54ebe9d0d5e0211e +Block 0010 [ 33]: 91317dbb9e6807b5 +Block 0010 [ 34]: 549c5ffb68d51a73 +Block 0010 [ 35]: 5f82c9335aa3513f +Block 0010 [ 36]: 495addbb2524905b +Block 0010 [ 37]: 64a03dcd91790e8a +Block 0010 [ 38]: d014df8b4bb91da3 +Block 0010 [ 39]: 6bcd8d9c0efa18a8 +Block 0010 [ 40]: 6c0e217ffe91d746 +Block 0010 [ 41]: 392eca2f236e3649 +Block 0010 [ 42]: 153c191538d717fb +Block 0010 [ 43]: c599c0570b6e3b3f +Block 0010 [ 44]: e97a9c1aea767f83 +Block 0010 [ 45]: f94b7ba8ba460a99 +Block 0010 [ 46]: 09947779799a24ff +Block 0010 [ 47]: 907f6f5cfe9a3a15 +Block 0010 [ 48]: 35926d86cc4b6a06 +Block 0010 [ 49]: c6ba133f79a0dbf0 +Block 0010 [ 50]: 004c55c1df4b91fb +Block 0010 [ 51]: dbadadd7d628d9b6 +Block 0010 [ 52]: 86f9e3ccf70cadd8 +Block 0010 [ 53]: e40b6524491e38f7 +Block 0010 [ 54]: 7e8ccdb6aa7ee6c8 +Block 0010 [ 55]: 673e5a85a14411e1 +Block 0010 [ 56]: 83fc3f033b501ec5 +Block 0010 [ 57]: 62ea0d3cc43de771 +Block 0010 [ 58]: eb51849733fa0a69 +Block 0010 [ 59]: ba3a5561891a745a +Block 0010 [ 60]: 508ac863f9ed414d +Block 0010 [ 61]: 7901256c6773a819 +Block 0010 [ 62]: 66128cf9e004a626 +Block 0010 [ 63]: d8f5776a2f46c852 +Block 0010 [ 64]: 22feb1b89d6f2615 +Block 0010 [ 65]: 6e15418dd65e27ed +Block 0010 [ 66]: 6078aac19f8c26a0 +Block 0010 [ 67]: e7f4ce3a286b3289 +Block 0010 [ 68]: d7b784346ed69fad +Block 0010 [ 69]: 3a01ff3f21fd890b +Block 0010 [ 70]: a8e64f89ba8a89e4 +Block 0010 [ 71]: 5faca06ed3155ee9 +Block 0010 [ 72]: db1279ef5d952316 +Block 0010 [ 73]: 7a6f2cca2eb8fd17 +Block 0010 [ 74]: fa350ee18ea4f4ef +Block 0010 [ 75]: fd23540d3ba0ada5 +Block 0010 [ 76]: fe71f0b180fb7a6c +Block 0010 [ 77]: bc1e622145c35033 +Block 0010 [ 78]: 4fc14b7a245c0357 +Block 0010 [ 79]: 0e1e1bdff76aa6a9 +Block 0010 [ 80]: a927389a374a1b32 +Block 0010 [ 81]: aff1a61bfb7d1891 +Block 0010 [ 82]: 72918289c24056b0 +Block 0010 [ 83]: 0833a583e75d1b50 +Block 0010 [ 84]: d13fa3a097554968 +Block 0010 [ 85]: f76322cbf6ae3de4 +Block 0010 [ 86]: d10106a843f3bc6a +Block 0010 [ 87]: 28f603e202e9f6a8 +Block 0010 [ 88]: e46a32b64599b2f1 +Block 0010 [ 89]: 88c6a687989f490d +Block 0010 [ 90]: 1ff23120e10c7e49 +Block 0010 [ 91]: fafb40a0f8529f66 +Block 0010 [ 92]: 3487240fef8bdf47 +Block 0010 [ 93]: 8248d2350c00490c +Block 0010 [ 94]: adc9101f99058a3b +Block 0010 [ 95]: 7d5f41ae871f8547 +Block 0010 [ 96]: 437207a49efdec8a +Block 0010 [ 97]: a4a383635c4c1daf +Block 0010 [ 98]: caf5fe0f57bb5e70 +Block 0010 [ 99]: a8af868ea7caeaf6 +Block 0010 [100]: 95fc901d137f29cf +Block 0010 [101]: e2480d5cec52a4f5 +Block 0010 [102]: 27fcbc1059d0b47a +Block 0010 [103]: 6cac9c61964647b9 +Block 0010 [104]: c80374446458ea9e +Block 0010 [105]: 294cd33eb188fb53 +Block 0010 [106]: aaedf14d09be48e6 +Block 0010 [107]: 54bd2364c64e7129 +Block 0010 [108]: b97dd69e971b74e2 +Block 0010 [109]: 3a913f07ce8383ca +Block 0010 [110]: 03c86810f373931b +Block 0010 [111]: 44affaf2720253ec +Block 0010 [112]: 9e459c99aefc0a66 +Block 0010 [113]: 172156f40a813320 +Block 0010 [114]: 918eb2798a1ec024 +Block 0010 [115]: 4f8c69444bc9b10c +Block 0010 [116]: 2485548f4f2dfafc +Block 0010 [117]: d88b524283e1930b +Block 0010 [118]: 12193f879f60e01f +Block 0010 [119]: d03dfb6ee7cb1e01 +Block 0010 [120]: 67256e0de8d1daf0 +Block 0010 [121]: 5fbce0def71cb5ea +Block 0010 [122]: d536a5ca66d99e5b +Block 0010 [123]: aa293c38c4e50d7c +Block 0010 [124]: 9c96c76ff9329c4b +Block 0010 [125]: 89caec0b4702e34d +Block 0010 [126]: 6bbc4c71d1f9a952 +Block 0010 [127]: 2c4eefa6b29b0a9f +Block 0011 [ 0]: d1e82a4318ce77be +Block 0011 [ 1]: 874f2182f38b5342 +Block 0011 [ 2]: a57e47eab52c45ef +Block 0011 [ 3]: d7868f310ded7eb8 +Block 0011 [ 4]: 2ab5e7aa907db14f +Block 0011 [ 5]: 8f5eb091fca8ae9c +Block 0011 [ 6]: 91a8d5162ebf9145 +Block 0011 [ 7]: e63439256b6c3095 +Block 0011 [ 8]: ba7c299a1f46c2b5 +Block 0011 [ 9]: 5ac255566aed1dcc +Block 0011 [ 10]: b744aeee793dd56b +Block 0011 [ 11]: 40ff3553e445a0a6 +Block 0011 [ 12]: 47cdec6b8fd8e08d +Block 0011 [ 13]: 378a3eaccc571892 +Block 0011 [ 14]: a43bbaacf3b7c831 +Block 0011 [ 15]: 9cf93a8aac9ac5dd +Block 0011 [ 16]: 644a7e1659437ae0 +Block 0011 [ 17]: be7aca7c8eeb7a78 +Block 0011 [ 18]: 5489b83282196cd2 +Block 0011 [ 19]: 12b3c67f31e850ca +Block 0011 [ 20]: 78acadb5952ded66 +Block 0011 [ 21]: 2f5532bf38ed472d +Block 0011 [ 22]: 80b01e9f61ae9217 +Block 0011 [ 23]: 137d9dbb651eeeec +Block 0011 [ 24]: 91fb38a676d620e5 +Block 0011 [ 25]: c6ee49c2b882c3dc +Block 0011 [ 26]: fd857c3247645a71 +Block 0011 [ 27]: e01ccd93bdb5360c +Block 0011 [ 28]: b27916b0936e7083 +Block 0011 [ 29]: ca6bd8cfc6c79705 +Block 0011 [ 30]: 42e029a388a28b08 +Block 0011 [ 31]: 88a6038c5deb05df +Block 0011 [ 32]: d8e7581a960046be +Block 0011 [ 33]: 55db8fad721a8593 +Block 0011 [ 34]: e181ae0982209758 +Block 0011 [ 35]: 9b3f644bc56863bb +Block 0011 [ 36]: 695442459c0b18d5 +Block 0011 [ 37]: 3180bedbeb601294 +Block 0011 [ 38]: 8916a950f0fb1a93 +Block 0011 [ 39]: 09b1af364f196d42 +Block 0011 [ 40]: 5c4d48b1fdb9e4ea +Block 0011 [ 41]: 06bd164d5fe8cd7c +Block 0011 [ 42]: 5d08357823fdd0fe +Block 0011 [ 43]: 871aa81df5297db4 +Block 0011 [ 44]: aea1bb914cc4d3de +Block 0011 [ 45]: 5805bff2f68f3fdd +Block 0011 [ 46]: 05da3d9d7bb42b11 +Block 0011 [ 47]: f0d6cec4ff7576a3 +Block 0011 [ 48]: 586c76e40ae98ec1 +Block 0011 [ 49]: 7df9ba4cccc6f6fc +Block 0011 [ 50]: a12f512bda7cce33 +Block 0011 [ 51]: 097a47bb7afcaf97 +Block 0011 [ 52]: 6cd6cf7ef02230c1 +Block 0011 [ 53]: 1a2dab3aaf33461e +Block 0011 [ 54]: 4d4461daf1edb76e +Block 0011 [ 55]: 4b094e8be464a5e1 +Block 0011 [ 56]: 94b49b52468af12d +Block 0011 [ 57]: e97f29956e4f3f65 +Block 0011 [ 58]: 546a2f30e98fa22f +Block 0011 [ 59]: a6a0a2679d03cbc7 +Block 0011 [ 60]: fb2d7fb78efc80c4 +Block 0011 [ 61]: cecb0c7cfc14d85e +Block 0011 [ 62]: 042dc5f3eb0ad513 +Block 0011 [ 63]: 52515d7e6dc6a8da +Block 0011 [ 64]: 2575cc25e9839a8e +Block 0011 [ 65]: 7f516599f948cb42 +Block 0011 [ 66]: e46f36f1c0818d6b +Block 0011 [ 67]: 5731d012d459c4e9 +Block 0011 [ 68]: 81cff35112704502 +Block 0011 [ 69]: da0bebf564d3dd82 +Block 0011 [ 70]: 6eb0391b93c3d6de +Block 0011 [ 71]: 1923bfbed3be6f3e +Block 0011 [ 72]: b6dfb17deaee4398 +Block 0011 [ 73]: de0be6017872013a +Block 0011 [ 74]: c148acb5b418afa0 +Block 0011 [ 75]: b1ca1e5f9d454327 +Block 0011 [ 76]: 550fbbd0d340ebe0 +Block 0011 [ 77]: 428ad5fcb873e497 +Block 0011 [ 78]: 1ea91704a4d3163a +Block 0011 [ 79]: f5b226019dd7ecdb +Block 0011 [ 80]: e216e4c8c718f95e +Block 0011 [ 81]: fde6918ddab3c6dd +Block 0011 [ 82]: a76475fd1c2cd357 +Block 0011 [ 83]: 536a89d3e96743db +Block 0011 [ 84]: cc10a5c4c126803d +Block 0011 [ 85]: 94ec09d9d7fd1b47 +Block 0011 [ 86]: aadd844c38ae1ad3 +Block 0011 [ 87]: c23192926aae85c1 +Block 0011 [ 88]: 9a3da449c0a5c317 +Block 0011 [ 89]: 965b1bb78c380db6 +Block 0011 [ 90]: c4534716589815d1 +Block 0011 [ 91]: 9ba4fd59e3b8bd34 +Block 0011 [ 92]: b7e7f48548a8b3a9 +Block 0011 [ 93]: 0c8f981ecad3b2cd +Block 0011 [ 94]: 58e0f56cef6e5df4 +Block 0011 [ 95]: 200e65e54ea07964 +Block 0011 [ 96]: e2ea08dd9dcb51ae +Block 0011 [ 97]: a58c5aacf25cd0c3 +Block 0011 [ 98]: 2bbd2393fb09dabc +Block 0011 [ 99]: d7c789974e35f75a +Block 0011 [100]: a5f2cfb27cc81bd4 +Block 0011 [101]: 0dbba0cd49c7fff0 +Block 0011 [102]: 3009e3a888fd14da +Block 0011 [103]: 8bb49cc8a5933291 +Block 0011 [104]: 3ff75be07f6da507 +Block 0011 [105]: 46b952048fae8b54 +Block 0011 [106]: 7d91a4bcc82074a8 +Block 0011 [107]: 3d1d0424d4b61236 +Block 0011 [108]: 2f9e57b172250828 +Block 0011 [109]: 110651a2fb71a9e2 +Block 0011 [110]: b8d52422bd4b24b7 +Block 0011 [111]: ad1285e4bda390bd +Block 0011 [112]: 9914e7817f719d17 +Block 0011 [113]: acfe8f67181ad3ec +Block 0011 [114]: ce07461f18020414 +Block 0011 [115]: bc2c5ea5b825f0ff +Block 0011 [116]: 8f34db8f5ecad7eb +Block 0011 [117]: 94d1a356122a6b15 +Block 0011 [118]: 4ac50fe0e2fcf6dd +Block 0011 [119]: 0e86996b9a244cbf +Block 0011 [120]: ef15e3204c51e486 +Block 0011 [121]: 7c96ce7c8273218c +Block 0011 [122]: 08481880faf9071d +Block 0011 [123]: 1127c3f2a6bf95cb +Block 0011 [124]: c9ba567895d6a66c +Block 0011 [125]: 5e0728ee3527ac2d +Block 0011 [126]: 085a8b3210d29a8e +Block 0011 [127]: b10a923b96936609 +Block 0012 [ 0]: 7ca5c1c23ba6fcf5 +Block 0012 [ 1]: 93896c87071cb700 +Block 0012 [ 2]: 0a7b001ab1d4f108 +Block 0012 [ 3]: f5971749b3290e79 +Block 0012 [ 4]: bbe4b1b8f9ae97cc +Block 0012 [ 5]: f0dc4d86da7101d8 +Block 0012 [ 6]: f44093e88688d153 +Block 0012 [ 7]: 9b57e221f5fa8003 +Block 0012 [ 8]: b9be5cc908dd61d1 +Block 0012 [ 9]: dce02419744f80ff +Block 0012 [ 10]: 590345f83559e7ae +Block 0012 [ 11]: 2b511a0ce02963f0 +Block 0012 [ 12]: cf49704b097c97a8 +Block 0012 [ 13]: 5e617f96beefc078 +Block 0012 [ 14]: 26904c1a263343e3 +Block 0012 [ 15]: d198ed95ed7899e3 +Block 0012 [ 16]: 7fb6c36f83d74440 +Block 0012 [ 17]: 26d6d951affa686a +Block 0012 [ 18]: 429458ed251aa32d +Block 0012 [ 19]: 30564a6502752222 +Block 0012 [ 20]: 083b3593f6437019 +Block 0012 [ 21]: bfb2edf1d3e2f9df +Block 0012 [ 22]: 8ef9a090bd52ba74 +Block 0012 [ 23]: 5960fa5b86350e43 +Block 0012 [ 24]: 87d794a0f5fe8de2 +Block 0012 [ 25]: 1f57ffd067f747bd +Block 0012 [ 26]: a7d821de0a8dedc1 +Block 0012 [ 27]: e1f07bf2a21990e9 +Block 0012 [ 28]: b3eef4b38c12154c +Block 0012 [ 29]: c4116ef122474677 +Block 0012 [ 30]: 6bf969976fae2b7d +Block 0012 [ 31]: 5c9192386d774124 +Block 0012 [ 32]: ea2542ca11476ed1 +Block 0012 [ 33]: 0f6c064701aea6a8 +Block 0012 [ 34]: 2a23cfa48e6bab6f +Block 0012 [ 35]: f9e1a627c2049543 +Block 0012 [ 36]: 498c67b116f61850 +Block 0012 [ 37]: a00d000b36091880 +Block 0012 [ 38]: 98416e75169a8b1d +Block 0012 [ 39]: 739ddcb3ac78772b +Block 0012 [ 40]: f987556d3e7e1df8 +Block 0012 [ 41]: ed080bc2bf785655 +Block 0012 [ 42]: 5f3b5a444e7658b0 +Block 0012 [ 43]: 7f58797e8a5a964a +Block 0012 [ 44]: 17ebd94342ae69ef +Block 0012 [ 45]: a78ce8b8314a838b +Block 0012 [ 46]: 4bf854703175d834 +Block 0012 [ 47]: 80ad519d6ca1dbe7 +Block 0012 [ 48]: 0034082b54ae9a4a +Block 0012 [ 49]: 503c5d03d2ee6f33 +Block 0012 [ 50]: 204944949f5b4a25 +Block 0012 [ 51]: 7ca8d9e4035c02ed +Block 0012 [ 52]: 5f29bf6897d71373 +Block 0012 [ 53]: a98f567680ffe33b +Block 0012 [ 54]: bed6859cef39bc91 +Block 0012 [ 55]: 66a5ed3f8ac0d2f3 +Block 0012 [ 56]: f9992ff178cb62e7 +Block 0012 [ 57]: 519b60c89b4a9e6e +Block 0012 [ 58]: 68cf1d3f38e3282a +Block 0012 [ 59]: 487e0010e144b05c +Block 0012 [ 60]: a6e09dce21d71d56 +Block 0012 [ 61]: 3f430a49042f84d2 +Block 0012 [ 62]: 98b3d6776bff822f +Block 0012 [ 63]: 74d938e0417ae0f7 +Block 0012 [ 64]: a8326370d10eff51 +Block 0012 [ 65]: 08ae557de683d605 +Block 0012 [ 66]: 7ab2fd7755ce48db +Block 0012 [ 67]: d15cc3febefee36d +Block 0012 [ 68]: 11e258f2eaad3bd6 +Block 0012 [ 69]: 3e5bf59ff6de85ef +Block 0012 [ 70]: 28b67261c63ca8c5 +Block 0012 [ 71]: 31ca052e999c45cb +Block 0012 [ 72]: 1faac598530b1f73 +Block 0012 [ 73]: 1a80147ba6b55947 +Block 0012 [ 74]: 02f41d623c86bfbb +Block 0012 [ 75]: 28d352044c3d0332 +Block 0012 [ 76]: 51227bb407e40943 +Block 0012 [ 77]: b191e20bba5ea6fa +Block 0012 [ 78]: 5a312002b2b849e5 +Block 0012 [ 79]: 969250eeadb700df +Block 0012 [ 80]: 2f2b0c204965f63d +Block 0012 [ 81]: 44adafa88612b805 +Block 0012 [ 82]: e61ad5e762b8e7c2 +Block 0012 [ 83]: d02e02a9f7c2893b +Block 0012 [ 84]: 0589f6ab6e0e88a6 +Block 0012 [ 85]: 7bd21a4db5bdc536 +Block 0012 [ 86]: 5e36482a2a3841ff +Block 0012 [ 87]: 7df93b0a71b9ac74 +Block 0012 [ 88]: fef8ca444cf873a3 +Block 0012 [ 89]: 733d37035f85b13a +Block 0012 [ 90]: bd9667eb6c003398 +Block 0012 [ 91]: 86e39720f5a6d34e +Block 0012 [ 92]: 87b59164d4a6bf7b +Block 0012 [ 93]: 927cece859b18d76 +Block 0012 [ 94]: cdc44fe6c8cd0871 +Block 0012 [ 95]: 7fe6340847034e40 +Block 0012 [ 96]: fe1ba94d16fefc2e +Block 0012 [ 97]: 08598f6f400d59a2 +Block 0012 [ 98]: 2e224e7a6b238166 +Block 0012 [ 99]: 4355d3f32647af5e +Block 0012 [100]: abdcf4c292a354cd +Block 0012 [101]: 7767314711558d31 +Block 0012 [102]: f1be6ed3f5d65a32 +Block 0012 [103]: 869911f775ba374d +Block 0012 [104]: e1c96e065e7630d3 +Block 0012 [105]: d43c7b0348047d5a +Block 0012 [106]: 2d3cb7990e56bb98 +Block 0012 [107]: a2b18306ef3ea736 +Block 0012 [108]: 744545559db80b1d +Block 0012 [109]: b0d93df763d7341b +Block 0012 [110]: 27fe604eaeac07f0 +Block 0012 [111]: 91c8e0ce703d48e8 +Block 0012 [112]: 901d510d6e4e50fd +Block 0012 [113]: 2652abf2b7403a3b +Block 0012 [114]: 11fa4ade8dab09c8 +Block 0012 [115]: e2df4a27e429f753 +Block 0012 [116]: dd033575e5f9d6c8 +Block 0012 [117]: f252e3c78e2e6b65 +Block 0012 [118]: 620fe7ce4ab1760e +Block 0012 [119]: c371755dc9851eda +Block 0012 [120]: 0b433ba5ddd97375 +Block 0012 [121]: dfde5cab62b93c63 +Block 0012 [122]: 083d2b596861dc5e +Block 0012 [123]: fd3433f1329ff7f8 +Block 0012 [124]: cabdff76543d1539 +Block 0012 [125]: bc26b3144c0a289d +Block 0012 [126]: 6f4a916e08ff334b +Block 0012 [127]: e5b0a4a8e5240637 +Block 0013 [ 0]: fd7ce244c7475828 +Block 0013 [ 1]: cacbfbd93617f1b8 +Block 0013 [ 2]: fdb0cf48b620586c +Block 0013 [ 3]: 94956780c2e98c6d +Block 0013 [ 4]: 459b6a1652d4486d +Block 0013 [ 5]: 6771131551e25220 +Block 0013 [ 6]: e0f3adab0728de2b +Block 0013 [ 7]: c857c4ef14df60aa +Block 0013 [ 8]: 783c3f264f917e14 +Block 0013 [ 9]: 4acc8ca7db5e61a3 +Block 0013 [ 10]: 6da6df59f8723540 +Block 0013 [ 11]: 71404b58ae33ad1e +Block 0013 [ 12]: 2d262d75c9de8656 +Block 0013 [ 13]: 605867033025d5bf +Block 0013 [ 14]: feed04276187d9d4 +Block 0013 [ 15]: 15ecefec97adbe97 +Block 0013 [ 16]: b3c0ba25f92b6407 +Block 0013 [ 17]: b4d88b79d5f8118e +Block 0013 [ 18]: 07af806302bf4150 +Block 0013 [ 19]: cdbf444301ef2cc4 +Block 0013 [ 20]: a83d0468385b1bf7 +Block 0013 [ 21]: 8cfc125da8f7b77b +Block 0013 [ 22]: 1594a86836460d1d +Block 0013 [ 23]: 3f18f39a56755b9f +Block 0013 [ 24]: ff78b84c9062e743 +Block 0013 [ 25]: 6d0ba651733a82a7 +Block 0013 [ 26]: 274b8e73a9a164ee +Block 0013 [ 27]: 2d3fbd108699a52e +Block 0013 [ 28]: 13680eff7955bae3 +Block 0013 [ 29]: 075258a2e2129a54 +Block 0013 [ 30]: 60a7ac04e29c4aac +Block 0013 [ 31]: 54cc75e4326adef5 +Block 0013 [ 32]: e043bc18332cba15 +Block 0013 [ 33]: a93ec2c04a305e5e +Block 0013 [ 34]: 28bd2e7185ce9911 +Block 0013 [ 35]: 6ede8387462677be +Block 0013 [ 36]: b6f7ae65415a323c +Block 0013 [ 37]: ba1c8d92ee403589 +Block 0013 [ 38]: c0d3bbb3043f10f9 +Block 0013 [ 39]: ec8e1e4344ad6062 +Block 0013 [ 40]: c94ecb937323d618 +Block 0013 [ 41]: 9754f1c11c9a7804 +Block 0013 [ 42]: d8efaa317c06f2b5 +Block 0013 [ 43]: a22b6ed585837d7e +Block 0013 [ 44]: 12c343c5d0e9520e +Block 0013 [ 45]: 6747b0dd0325b557 +Block 0013 [ 46]: 6fbb047d945192c6 +Block 0013 [ 47]: a6045420c6f3771a +Block 0013 [ 48]: df2a352f6214bcd2 +Block 0013 [ 49]: c3a292f001e6b65f +Block 0013 [ 50]: 723caaba605418ff +Block 0013 [ 51]: 6f8e850a165e2c9d +Block 0013 [ 52]: dcb982867ea624b3 +Block 0013 [ 53]: a0bf3e1c3fdc4ab4 +Block 0013 [ 54]: e824433d920a9952 +Block 0013 [ 55]: 98e66aa8596eb9ac +Block 0013 [ 56]: cb89ceb9f4cdfbf7 +Block 0013 [ 57]: e138589c0b1aeffa +Block 0013 [ 58]: 523f0606cffaea25 +Block 0013 [ 59]: 631bd8041e1b3b9b +Block 0013 [ 60]: 65e31ec29e142f85 +Block 0013 [ 61]: aa24720c1cc2595b +Block 0013 [ 62]: f367717328bebeb3 +Block 0013 [ 63]: 9172c6dcb9471144 +Block 0013 [ 64]: bb7fe520bf5b10e9 +Block 0013 [ 65]: 0c448c1b958ba9bb +Block 0013 [ 66]: 3342dea528ba0404 +Block 0013 [ 67]: 38101672d55d514f +Block 0013 [ 68]: 295f68aa6b25072b +Block 0013 [ 69]: 0a23137aacb2ca3f +Block 0013 [ 70]: 06365c4a08d7dc52 +Block 0013 [ 71]: 925a4eb911246ff4 +Block 0013 [ 72]: 79678ba22a5af61f +Block 0013 [ 73]: c6a264d4266d6705 +Block 0013 [ 74]: f83c88ef42aa748e +Block 0013 [ 75]: 71111052820882f3 +Block 0013 [ 76]: 0431e61dc2b6e548 +Block 0013 [ 77]: 11861c8cd487e3c4 +Block 0013 [ 78]: dc7e3139c735152b +Block 0013 [ 79]: 9d4214d83eb5168c +Block 0013 [ 80]: ecfeb1108bd18ae0 +Block 0013 [ 81]: eb6d12f55dc8d27b +Block 0013 [ 82]: 90d76b8da957c074 +Block 0013 [ 83]: 11361e1dcbe17eb6 +Block 0013 [ 84]: 841baacb0c5578a1 +Block 0013 [ 85]: 0b688c3798cc1ec1 +Block 0013 [ 86]: 46577db35ac5b023 +Block 0013 [ 87]: 766ab57bde46ca71 +Block 0013 [ 88]: e173aee80c598c25 +Block 0013 [ 89]: 4c0f26b801014154 +Block 0013 [ 90]: b00674f3807c4cce +Block 0013 [ 91]: c5504a8596323b1d +Block 0013 [ 92]: 0f5c0149b310640e +Block 0013 [ 93]: 74681f161ed43407 +Block 0013 [ 94]: 87f96733ba9a9305 +Block 0013 [ 95]: 5b057120a9eda19e +Block 0013 [ 96]: a879658c469f816f +Block 0013 [ 97]: e8e7a8bd1fee6418 +Block 0013 [ 98]: 374f686f822d71c4 +Block 0013 [ 99]: 67373b96acd04bd6 +Block 0013 [100]: 9a60f9fd85a895c5 +Block 0013 [101]: c558b5cd131c8b0a +Block 0013 [102]: 22dabcedc843d71a +Block 0013 [103]: 7edbb62c2e9b6e61 +Block 0013 [104]: 7fae51b3ec828ce0 +Block 0013 [105]: 1a0de7b941720cc5 +Block 0013 [106]: 5fda761c024f32fe +Block 0013 [107]: d77d00379261498a +Block 0013 [108]: ca3a3c8f18efe862 +Block 0013 [109]: 8c9c4dae15073fe0 +Block 0013 [110]: e7c3d35f790635f1 +Block 0013 [111]: 0db7c40f399e6ca5 +Block 0013 [112]: 368d2f184ee634bc +Block 0013 [113]: cf9c845b2527ad3e +Block 0013 [114]: 5a911598e5731f6d +Block 0013 [115]: b8e698a1d10a45c2 +Block 0013 [116]: f84ff315ba6ce3e9 +Block 0013 [117]: 4f69cb819ada3ff4 +Block 0013 [118]: 1e16b7331e757b2e +Block 0013 [119]: cea4a14373c1dc54 +Block 0013 [120]: 8c09c205a962250d +Block 0013 [121]: 001aa12eddf882b1 +Block 0013 [122]: db55f0f45bbe5c3e +Block 0013 [123]: e0874e9b2b8fd7c5 +Block 0013 [124]: b2c4e4287c43c5b2 +Block 0013 [125]: f16604ac4d68f1b3 +Block 0013 [126]: 7744f22d0a3f760f +Block 0013 [127]: 0a18fb6f2ea680c1 +Block 0014 [ 0]: f2f03d1b04a17cef +Block 0014 [ 1]: 96992a0db12dc452 +Block 0014 [ 2]: c7da5aa80bff1ab9 +Block 0014 [ 3]: be7c01a0e083cda4 +Block 0014 [ 4]: 474108589e0ec82b +Block 0014 [ 5]: ec8892e4f6903c4c +Block 0014 [ 6]: 739f9160edf19f30 +Block 0014 [ 7]: 58cfbefe026c3f53 +Block 0014 [ 8]: 3fadcb006fe1f646 +Block 0014 [ 9]: 4d25defa435a56e6 +Block 0014 [ 10]: 8feb9f57775a61aa +Block 0014 [ 11]: 038df252cf08fe7b +Block 0014 [ 12]: 5a0cdf9786d3d986 +Block 0014 [ 13]: 5be9dc12c5530d3a +Block 0014 [ 14]: 94af01ec9648d74f +Block 0014 [ 15]: 4977da96d56c854b +Block 0014 [ 16]: be4f7249746c253c +Block 0014 [ 17]: c408cc59fd752762 +Block 0014 [ 18]: 086bedc984333962 +Block 0014 [ 19]: 39b3219879079a48 +Block 0014 [ 20]: 90b885202a64f113 +Block 0014 [ 21]: abc0a2ad49b2f704 +Block 0014 [ 22]: 7a2677fdbf428392 +Block 0014 [ 23]: 4668ee34a150ddcd +Block 0014 [ 24]: a8a46a39ad66e435 +Block 0014 [ 25]: da4c56ff993a177a +Block 0014 [ 26]: eccff9b93a55dc50 +Block 0014 [ 27]: cd8657a12ba4e3d4 +Block 0014 [ 28]: 21914e642bc6fdfe +Block 0014 [ 29]: 4480f86b8e9db2d8 +Block 0014 [ 30]: d6a24e5481c56350 +Block 0014 [ 31]: 1a8b840bcfe985be +Block 0014 [ 32]: d23efab915d69ef0 +Block 0014 [ 33]: 697e3d1584c3f8d5 +Block 0014 [ 34]: 1d6bd5c30988e3cf +Block 0014 [ 35]: b8a22e618971d997 +Block 0014 [ 36]: 1fbe49fdddadc888 +Block 0014 [ 37]: 7ceefb8d37e9bfa4 +Block 0014 [ 38]: cbee4bf6ce316222 +Block 0014 [ 39]: d6733e7d86990202 +Block 0014 [ 40]: f85bcd8891002bd4 +Block 0014 [ 41]: bcbac6f06255668c +Block 0014 [ 42]: 55090ef103152488 +Block 0014 [ 43]: 7cd3bf9926e877da +Block 0014 [ 44]: 5cab104e2b8c8b44 +Block 0014 [ 45]: 2a16ffdc1a4a879a +Block 0014 [ 46]: 2867317c152f109e +Block 0014 [ 47]: 76ec5ec6e994b320 +Block 0014 [ 48]: ad77c12ec7c75ba1 +Block 0014 [ 49]: 09b4a81a2e216e77 +Block 0014 [ 50]: 5908fe588be9fd0a +Block 0014 [ 51]: 26ffcc96221c1989 +Block 0014 [ 52]: 3310c69cdd95eef0 +Block 0014 [ 53]: 0432787506b0745c +Block 0014 [ 54]: 7d9d002f2b6f18b1 +Block 0014 [ 55]: 8bd9abcedfa7b4f8 +Block 0014 [ 56]: d758fddd27590f92 +Block 0014 [ 57]: 67e82e109ce16bef +Block 0014 [ 58]: deaa1e3b8fdfe767 +Block 0014 [ 59]: 5119a6bb9208ae19 +Block 0014 [ 60]: 274efdc1006d3a22 +Block 0014 [ 61]: c94f0b13873b7b24 +Block 0014 [ 62]: 357ac407d0b5759c +Block 0014 [ 63]: 3930e5d999b0312e +Block 0014 [ 64]: 33e3e6bd2fe095f8 +Block 0014 [ 65]: 338b9696938d0cc0 +Block 0014 [ 66]: c96b296da856ad27 +Block 0014 [ 67]: 14148dfb090c18c7 +Block 0014 [ 68]: cd7d931e870597e7 +Block 0014 [ 69]: c1cc609ca861a3c4 +Block 0014 [ 70]: 09056c2aa840eef5 +Block 0014 [ 71]: 9d6e78244394c4d4 +Block 0014 [ 72]: 7e2dc358a727d8b0 +Block 0014 [ 73]: a88b992feed4d62a +Block 0014 [ 74]: bd54844166fb0f1d +Block 0014 [ 75]: a696233c40a65b6d +Block 0014 [ 76]: c9e1f184fb491805 +Block 0014 [ 77]: 3d65649659b5bc13 +Block 0014 [ 78]: b8cd773cfd1472c5 +Block 0014 [ 79]: fc75b5985df11340 +Block 0014 [ 80]: b8d937b3f3ff97f3 +Block 0014 [ 81]: abea06296e20efc5 +Block 0014 [ 82]: a7ccb1aadd084873 +Block 0014 [ 83]: be960608efa8f86a +Block 0014 [ 84]: 2235ba471ea6cea9 +Block 0014 [ 85]: 6d5c640b585ed896 +Block 0014 [ 86]: 38f6ed9f38bc9391 +Block 0014 [ 87]: cbedcd648c24df47 +Block 0014 [ 88]: d151aba03768ae3c +Block 0014 [ 89]: 758e544c4f59313a +Block 0014 [ 90]: f3832f4c300332f1 +Block 0014 [ 91]: 8eaac11d100c0c1d +Block 0014 [ 92]: 130a1c5607c584a3 +Block 0014 [ 93]: 0dfb11d24999f348 +Block 0014 [ 94]: 7e317c9700d59f24 +Block 0014 [ 95]: e58a8f116bd3d788 +Block 0014 [ 96]: 6988e8db0ee7fba5 +Block 0014 [ 97]: 8e82951b0136710f +Block 0014 [ 98]: 3d02d910d490375c +Block 0014 [ 99]: faeb97304bb1be0c +Block 0014 [100]: 21e7742bc48de3cd +Block 0014 [101]: 65e8f95e9b3fbc47 +Block 0014 [102]: be63ccf97ce8754b +Block 0014 [103]: 6789594d4bddec50 +Block 0014 [104]: a18c8782e6905365 +Block 0014 [105]: 4436042cd2d01265 +Block 0014 [106]: 2285d882b07ee472 +Block 0014 [107]: 6557c4dac229d174 +Block 0014 [108]: 68b0d678ce7212e2 +Block 0014 [109]: 825e3feeadc63f9a +Block 0014 [110]: 09617c5a98cdc06a +Block 0014 [111]: fefb35a97c41a327 +Block 0014 [112]: 09f9effdaeb72080 +Block 0014 [113]: 65bbb2866f516772 +Block 0014 [114]: f0fc0d1466e91442 +Block 0014 [115]: 57e41d6f7b9a9830 +Block 0014 [116]: ed3dab2c2a606e1f +Block 0014 [117]: 53925f1e10f3d52d +Block 0014 [118]: ff01f703dfecba68 +Block 0014 [119]: 6e049b809c19c293 +Block 0014 [120]: 42add865c70171a8 +Block 0014 [121]: 6a66f6439622b1dd +Block 0014 [122]: 1ad1b3f08aac6977 +Block 0014 [123]: 6f9fcebaba3a8239 +Block 0014 [124]: 349c01c02eb52510 +Block 0014 [125]: d779dd0e5d7578f5 +Block 0014 [126]: bae26cd8f24fc0b4 +Block 0014 [127]: de7a654482ac69f3 +Block 0015 [ 0]: 1255358413a2f1f9 +Block 0015 [ 1]: 751ead88b0364f98 +Block 0015 [ 2]: b30312b425732427 +Block 0015 [ 3]: 4dd5694abdf8e712 +Block 0015 [ 4]: d02e249ca6d3f489 +Block 0015 [ 5]: 71493faca635c5ad +Block 0015 [ 6]: f78982bc7f4ca168 +Block 0015 [ 7]: c633520a9725f4af +Block 0015 [ 8]: 341db6d65fddf672 +Block 0015 [ 9]: 00e78a8c97e7500b +Block 0015 [ 10]: 3c1eddc1acdaf215 +Block 0015 [ 11]: bc5ace37b9d774b5 +Block 0015 [ 12]: 895485b8620a8aee +Block 0015 [ 13]: a4b23e29fcf0582c +Block 0015 [ 14]: dae479e8563081ac +Block 0015 [ 15]: 91ce9ed95308593b +Block 0015 [ 16]: 1f597249ed72d58b +Block 0015 [ 17]: f0037a97ecc07819 +Block 0015 [ 18]: 270262d7c2a2215c +Block 0015 [ 19]: 2c708de0238eef8c +Block 0015 [ 20]: c6056f29b6e4e73d +Block 0015 [ 21]: dcc9a09ea0d6d07f +Block 0015 [ 22]: 42630afe629efd41 +Block 0015 [ 23]: ef89fb3fa093fbee +Block 0015 [ 24]: 907eb2909634cca2 +Block 0015 [ 25]: e1b76abbb4c1e695 +Block 0015 [ 26]: 1aa2fa18102682d2 +Block 0015 [ 27]: bf05c904ff36f1dd +Block 0015 [ 28]: 89fe77d740427896 +Block 0015 [ 29]: ae7c4b328a98651a +Block 0015 [ 30]: aaa34fcf1098df10 +Block 0015 [ 31]: ea7f105cedd5ce17 +Block 0015 [ 32]: e48627ab79a7ccd4 +Block 0015 [ 33]: bf080032bf8c8d3f +Block 0015 [ 34]: 901f4fa87b358010 +Block 0015 [ 35]: 28687f31c48e45c6 +Block 0015 [ 36]: 69a67c4c183d2a09 +Block 0015 [ 37]: cf5d0c0964860a2f +Block 0015 [ 38]: ef7cca75218f27a0 +Block 0015 [ 39]: 755891ba0181c6df +Block 0015 [ 40]: 69fc1f1fb54f7e68 +Block 0015 [ 41]: e1a50bcdd76c01b2 +Block 0015 [ 42]: 8d20bc9e4582d634 +Block 0015 [ 43]: f5bb031864f83c09 +Block 0015 [ 44]: b6a23f45f2367307 +Block 0015 [ 45]: 3e82729a6494e098 +Block 0015 [ 46]: 7791faaac40f4632 +Block 0015 [ 47]: acb9d9be87280aa2 +Block 0015 [ 48]: 0f29ad18d6e83cbc +Block 0015 [ 49]: e1d7ec9ed395ae76 +Block 0015 [ 50]: e8360c0c6b3fcd7c +Block 0015 [ 51]: ad8ccdefc893d72b +Block 0015 [ 52]: 90abd311e2537d6a +Block 0015 [ 53]: a395a4653707425f +Block 0015 [ 54]: a8fa96881bf142a9 +Block 0015 [ 55]: cb80ecdcebcc94a2 +Block 0015 [ 56]: 2855f69a9c3bb4e5 +Block 0015 [ 57]: ab213ef77b3a45db +Block 0015 [ 58]: 5ce4cea1fe393c3d +Block 0015 [ 59]: 3e53f9b07a96f0a9 +Block 0015 [ 60]: c544ee084b9f0309 +Block 0015 [ 61]: b1a2040b934b211c +Block 0015 [ 62]: 5786c6421c449ecd +Block 0015 [ 63]: 026a08e9a3a4cd5d +Block 0015 [ 64]: 49ebf2b8246b3c49 +Block 0015 [ 65]: 131dbb5efced5f87 +Block 0015 [ 66]: e953740868a2dbd3 +Block 0015 [ 67]: cd2b4261d4d98342 +Block 0015 [ 68]: fdb12b71ee28acea +Block 0015 [ 69]: bb19976da7b21eeb +Block 0015 [ 70]: 724cd3d9d2e9d16b +Block 0015 [ 71]: 6696d05c291c1967 +Block 0015 [ 72]: 042b9a5efae770df +Block 0015 [ 73]: 602824b47d02bf47 +Block 0015 [ 74]: 40d0f9eff044a6f0 +Block 0015 [ 75]: 5285b30bdf724adf +Block 0015 [ 76]: 14813c0b2cdc4809 +Block 0015 [ 77]: 6e2e1693ff0fc7f6 +Block 0015 [ 78]: 5a165346997138ce +Block 0015 [ 79]: 1a76bf7aa83132c8 +Block 0015 [ 80]: a6519d9659432a64 +Block 0015 [ 81]: f5f1c2d6b15bce5a +Block 0015 [ 82]: f5b29a131ca0a074 +Block 0015 [ 83]: c5e9a0544b261af0 +Block 0015 [ 84]: 8d9953c2d32b33f9 +Block 0015 [ 85]: c7f21a3e0d0b3bb7 +Block 0015 [ 86]: 75f4a476b8c4b2f9 +Block 0015 [ 87]: 756d6972e7060a75 +Block 0015 [ 88]: 62699ecf6ddbee77 +Block 0015 [ 89]: 7d195f9a4f52b21c +Block 0015 [ 90]: ea4c560cea05cda3 +Block 0015 [ 91]: 0d5589b1e874cd8d +Block 0015 [ 92]: 68c9804bb7ceaded +Block 0015 [ 93]: 64949cd5db3bd11c +Block 0015 [ 94]: 391c3bfe0a230a0e +Block 0015 [ 95]: 5f9584071f0450f0 +Block 0015 [ 96]: 11f7986cd347ffeb +Block 0015 [ 97]: a3d32d4f7c987b46 +Block 0015 [ 98]: 97306e0cb5794d17 +Block 0015 [ 99]: f6600ddb12c2360b +Block 0015 [100]: ee875f8f1e829ed1 +Block 0015 [101]: f8838d4105e9e06d +Block 0015 [102]: 29a64f9ede3483c6 +Block 0015 [103]: 4c8bfa826e1c98ae +Block 0015 [104]: 8b8764597961e33c +Block 0015 [105]: 446734f12cd1e8a5 +Block 0015 [106]: 1575565d48091cbb +Block 0015 [107]: df76d2d4fb41d479 +Block 0015 [108]: 9c731839f9a69055 +Block 0015 [109]: 63a1bcba5e407783 +Block 0015 [110]: 89eee48d0f2af665 +Block 0015 [111]: d435a276381b3f5d +Block 0015 [112]: a15f2a8cf30c8242 +Block 0015 [113]: f3aa49983fee282a +Block 0015 [114]: e582e86f9e8ee653 +Block 0015 [115]: 4c7c33109e0dec66 +Block 0015 [116]: 6fd95057ae162c43 +Block 0015 [117]: 47c054c1102250ba +Block 0015 [118]: 5ca2000678b17d5f +Block 0015 [119]: b7a46465f2f67b9f +Block 0015 [120]: 3be6f3a2fe74eb70 +Block 0015 [121]: 6bd87ed167e85c64 +Block 0015 [122]: 4578998648f615f0 +Block 0015 [123]: 8d6b943f96554611 +Block 0015 [124]: b8f726520775506e +Block 0015 [125]: 2c720aacce22a83f +Block 0015 [126]: 4c74a22df9900c10 +Block 0015 [127]: 677933502ccbb992 +Block 0016 [ 0]: 4db7d68d9601e701 +Block 0016 [ 1]: c22dbfcd31599660 +Block 0016 [ 2]: 5a571361825c35f5 +Block 0016 [ 3]: a6e2abaa12350087 +Block 0016 [ 4]: 8d539b6a04326542 +Block 0016 [ 5]: 13aa4d46af6159d7 +Block 0016 [ 6]: 2b46a2baaa82b799 +Block 0016 [ 7]: 6db1ffe91647adf1 +Block 0016 [ 8]: fa299728b2d664bb +Block 0016 [ 9]: 7106dc0e4de7fb6b +Block 0016 [ 10]: 23bad9c3029d5ed2 +Block 0016 [ 11]: 5b2a068f6fb744da +Block 0016 [ 12]: a09d30ab6242d56c +Block 0016 [ 13]: e57083fbac677790 +Block 0016 [ 14]: 61ea4bfcffccd406 +Block 0016 [ 15]: 66c50e9d8adce355 +Block 0016 [ 16]: 5ac73d2b9e4e38fb +Block 0016 [ 17]: 09e063f4fb7790bb +Block 0016 [ 18]: 46dfd5a0f8d8dec2 +Block 0016 [ 19]: bd925ed692313d4e +Block 0016 [ 20]: 3e5013e04540b07f +Block 0016 [ 21]: 36d13e4cb42ed6ba +Block 0016 [ 22]: 19a6fba6330763c9 +Block 0016 [ 23]: 4b8e8279794a06ea +Block 0016 [ 24]: 669cc88cb6ebf3fd +Block 0016 [ 25]: 5d26b291e22d6f3c +Block 0016 [ 26]: eded220ce598a9b1 +Block 0016 [ 27]: 82bf01afa95b32ac +Block 0016 [ 28]: 9d2d4f8ce3cf4a5a +Block 0016 [ 29]: efb52aa40b14f099 +Block 0016 [ 30]: 303b3d066fa3bb0e +Block 0016 [ 31]: d79142270c27e172 +Block 0016 [ 32]: f8b29998949ab8d5 +Block 0016 [ 33]: 976ec56b65bc1cdb +Block 0016 [ 34]: 00ec9322e0c65283 +Block 0016 [ 35]: 5a682d984b0253db +Block 0016 [ 36]: dfeeb5a0cd007a74 +Block 0016 [ 37]: 6d7ed66839d81317 +Block 0016 [ 38]: 7cbf6ff524df82ea +Block 0016 [ 39]: a402cba8fe4ee222 +Block 0016 [ 40]: 051ce4340605fb49 +Block 0016 [ 41]: db1c5330069c673f +Block 0016 [ 42]: d04ad8bdeb9ee349 +Block 0016 [ 43]: 095a39dfbedeb10f +Block 0016 [ 44]: c8f2764065673d60 +Block 0016 [ 45]: 250f51b581f26844 +Block 0016 [ 46]: 89f8ff131b1e1adf +Block 0016 [ 47]: 8c278f41821d1b65 +Block 0016 [ 48]: 45064aaffb3c6590 +Block 0016 [ 49]: 0ed7d575c479d9e9 +Block 0016 [ 50]: a880e9daeb7a648c +Block 0016 [ 51]: d0fb1bd6daa2e147 +Block 0016 [ 52]: 1f13ac0f49a4d2e8 +Block 0016 [ 53]: e748f547f85b940d +Block 0016 [ 54]: 6f4014e2e1beea5c +Block 0016 [ 55]: 0bf87689a53f2a46 +Block 0016 [ 56]: acd91b7197cf80eb +Block 0016 [ 57]: 9603a84c49ea2b0c +Block 0016 [ 58]: 7674eb49dbcbd228 +Block 0016 [ 59]: 54a8b7d3fcb61a40 +Block 0016 [ 60]: b5f0e12b74727573 +Block 0016 [ 61]: ea7e8ba3eb6af459 +Block 0016 [ 62]: d1b08409c386140e +Block 0016 [ 63]: 3e346330eae2f3c0 +Block 0016 [ 64]: 19594146c1309b3b +Block 0016 [ 65]: 8039aac71029f73e +Block 0016 [ 66]: d1e9ec55bb6e7cf6 +Block 0016 [ 67]: 9252fee592a2d1ce +Block 0016 [ 68]: c8fe275bd8ccc476 +Block 0016 [ 69]: 357d09183e4eea94 +Block 0016 [ 70]: 992d00208d5f5286 +Block 0016 [ 71]: 0c854a63942fa090 +Block 0016 [ 72]: 69dd9ef7ec5397cf +Block 0016 [ 73]: b9afe5e205d6e5c9 +Block 0016 [ 74]: 2371fbb9bf596a93 +Block 0016 [ 75]: d6bec9f826beb54a +Block 0016 [ 76]: 48954f405076ba24 +Block 0016 [ 77]: 327b7a72c294184d +Block 0016 [ 78]: ff3813caf762b02e +Block 0016 [ 79]: 6701af476b138c3e +Block 0016 [ 80]: ff27a00fc63062a3 +Block 0016 [ 81]: ab1ab6bf00205f51 +Block 0016 [ 82]: 7ccddffaf79e0429 +Block 0016 [ 83]: b2e0f5f4b62c8f47 +Block 0016 [ 84]: f1e3cb6a21181e4c +Block 0016 [ 85]: e8ba84317f763bdd +Block 0016 [ 86]: ea2627679ca2629f +Block 0016 [ 87]: 68a29eccab7bdf7e +Block 0016 [ 88]: aa81043849728072 +Block 0016 [ 89]: f03fe30d8cc1750a +Block 0016 [ 90]: e1c8dc0586b6d96a +Block 0016 [ 91]: 9efb4cefbc1f797a +Block 0016 [ 92]: e9614318106bb145 +Block 0016 [ 93]: 6a05a48ce9764b41 +Block 0016 [ 94]: 35d9f3e94e77a4d3 +Block 0016 [ 95]: 1d3d8037ca4c3f94 +Block 0016 [ 96]: b781fb66e6ba85a7 +Block 0016 [ 97]: 82aaa076c2bf43f3 +Block 0016 [ 98]: f922a9c456a4b545 +Block 0016 [ 99]: eee12870754d9bb8 +Block 0016 [100]: b1942602108d6701 +Block 0016 [101]: 43a61f3c92d2d0df +Block 0016 [102]: f49bf18180934b65 +Block 0016 [103]: 79e13c570bdc1a64 +Block 0016 [104]: 79e5a885c8f6a304 +Block 0016 [105]: c193d6341218fc8d +Block 0016 [106]: 9fd3fe537b8da1d8 +Block 0016 [107]: 0cb5defa5667eaa8 +Block 0016 [108]: 4a362119f16ebcee +Block 0016 [109]: 328d6c6fe467f299 +Block 0016 [110]: 1ebe0815be15b551 +Block 0016 [111]: f72344ed513952bb +Block 0016 [112]: 230c62884c7bb1bc +Block 0016 [113]: 0509bf0a7180b231 +Block 0016 [114]: bea5fa3794b76431 +Block 0016 [115]: 58fe11d9e0ac41f2 +Block 0016 [116]: 29ee103be36b97cc +Block 0016 [117]: 9ddb5e6a37034145 +Block 0016 [118]: 36182ee882cb12ef +Block 0016 [119]: 4b6cda7dd1c879a4 +Block 0016 [120]: b36a7852a1576905 +Block 0016 [121]: 69f26e6c7af01c50 +Block 0016 [122]: 51d24eee59eea10e +Block 0016 [123]: 4413829b410310e7 +Block 0016 [124]: 6e400eca296a3eec +Block 0016 [125]: 83dcf4d0698b439e +Block 0016 [126]: c78b6ca7d4e4fa65 +Block 0016 [127]: d9622848b6251236 +Block 0017 [ 0]: c54328d345ca134d +Block 0017 [ 1]: cfa77c1577707f01 +Block 0017 [ 2]: b5aa378403ab29b0 +Block 0017 [ 3]: f20b478caa621ff5 +Block 0017 [ 4]: ab99c9536508c527 +Block 0017 [ 5]: 1f4f3e051eca8e47 +Block 0017 [ 6]: 0e60c96834ac2fc8 +Block 0017 [ 7]: 4cca30658c05da56 +Block 0017 [ 8]: 9198d2faa4c0335d +Block 0017 [ 9]: 100fdd49ef23faa6 +Block 0017 [ 10]: 1ad7bc8ec193d0aa +Block 0017 [ 11]: 383474b87bc77f78 +Block 0017 [ 12]: 7379b1216d9fb400 +Block 0017 [ 13]: d441d1836fef3337 +Block 0017 [ 14]: 5a222157ae4b4ebc +Block 0017 [ 15]: 1c96f190fa25fcdd +Block 0017 [ 16]: d8a3ef1a22b6600a +Block 0017 [ 17]: 19559dd25da63154 +Block 0017 [ 18]: df8d7fc83bdf129b +Block 0017 [ 19]: 57d7d7f2dd9e659f +Block 0017 [ 20]: ac96e1ff1aa1aa95 +Block 0017 [ 21]: 1160e842ccc628f4 +Block 0017 [ 22]: f66aabf8a6679a72 +Block 0017 [ 23]: d413c7452672421b +Block 0017 [ 24]: 9c8553bc9aa9a3ac +Block 0017 [ 25]: aea0b3ad0a8e7b97 +Block 0017 [ 26]: 7d024038e0b25b37 +Block 0017 [ 27]: 25e901ca558b870d +Block 0017 [ 28]: 646311cb35864fdc +Block 0017 [ 29]: 7755180ad31050bb +Block 0017 [ 30]: db45dcbddd267c51 +Block 0017 [ 31]: d7776d1556dae483 +Block 0017 [ 32]: ba57f51d620df982 +Block 0017 [ 33]: 94523d6c3bd0dca6 +Block 0017 [ 34]: e80c237ab5434208 +Block 0017 [ 35]: f8b6582d4d0b28e5 +Block 0017 [ 36]: 1ba4596ef5f23763 +Block 0017 [ 37]: a1b5be3f522e4f18 +Block 0017 [ 38]: f46d15fb9aec82a9 +Block 0017 [ 39]: fc554234bf947ba0 +Block 0017 [ 40]: 81555cb4ba1e65b8 +Block 0017 [ 41]: 51c91682e578b053 +Block 0017 [ 42]: 7523b1d8e0c77245 +Block 0017 [ 43]: 6c16476e5ac5e8bd +Block 0017 [ 44]: 6314944acce18cbc +Block 0017 [ 45]: 6b43cd08397cd457 +Block 0017 [ 46]: a239e3c7d48b9e5a +Block 0017 [ 47]: 69c2376df7b66591 +Block 0017 [ 48]: 826105da3fb96f0c +Block 0017 [ 49]: 5b70d4230b4309f2 +Block 0017 [ 50]: 1d5b84056f0c9427 +Block 0017 [ 51]: 86a6061b9157b530 +Block 0017 [ 52]: c5781a6ee336c6d4 +Block 0017 [ 53]: c83cbfb283f2db87 +Block 0017 [ 54]: 73c3a7ee255b70b4 +Block 0017 [ 55]: e35346cf3c917a18 +Block 0017 [ 56]: 51d17c233753e88c +Block 0017 [ 57]: c708839e0cfe70d8 +Block 0017 [ 58]: db38c49c7deb9110 +Block 0017 [ 59]: a4b316fc65fe56b4 +Block 0017 [ 60]: 278b861666460673 +Block 0017 [ 61]: 8a602bdd360facee +Block 0017 [ 62]: 9187b67f360fb96f +Block 0017 [ 63]: 929eb2819f26f457 +Block 0017 [ 64]: 416e6d297b208f50 +Block 0017 [ 65]: 35995bf5743caa54 +Block 0017 [ 66]: f2c12345798abde2 +Block 0017 [ 67]: 387e8376d981ed5c +Block 0017 [ 68]: d35b2c8fbed5bbf4 +Block 0017 [ 69]: f77d0f68fbc0b8b6 +Block 0017 [ 70]: 6ca736edbb3f688d +Block 0017 [ 71]: ef34ee1747771a6b +Block 0017 [ 72]: eebf0ca5b6311f32 +Block 0017 [ 73]: fa3fa95cb3d67c5e +Block 0017 [ 74]: 2bccc3d9a03e5bf6 +Block 0017 [ 75]: 736b79dfb710023d +Block 0017 [ 76]: c6f4c8d9b79c8b74 +Block 0017 [ 77]: f5c38b8fd5241700 +Block 0017 [ 78]: ffd159c0618bdffc +Block 0017 [ 79]: b7f47549a90bc033 +Block 0017 [ 80]: 9e876174a58ad8db +Block 0017 [ 81]: 77b8427d935b21ab +Block 0017 [ 82]: 4927a28eba796c7f +Block 0017 [ 83]: 78045ac02f89368f +Block 0017 [ 84]: 4b27512bf6edc90f +Block 0017 [ 85]: 40646c4e19dd788e +Block 0017 [ 86]: 68ab9102c1676ed9 +Block 0017 [ 87]: 05c56dfa101e5935 +Block 0017 [ 88]: 186693df865e9407 +Block 0017 [ 89]: 0385811decc5060d +Block 0017 [ 90]: bfe32fafcf161c7a +Block 0017 [ 91]: 12f640466210cc83 +Block 0017 [ 92]: bfee4686d9857686 +Block 0017 [ 93]: 7aef4cba468a9955 +Block 0017 [ 94]: 4c75ab47d5cc3a8a +Block 0017 [ 95]: 2a5eec15181f9b55 +Block 0017 [ 96]: afa922a4970eec4e +Block 0017 [ 97]: b4675389b5a2ac9b +Block 0017 [ 98]: 9cba91a2e292b96d +Block 0017 [ 99]: 0afdeafb943582b8 +Block 0017 [100]: bf25b9f2b10e5efb +Block 0017 [101]: a2d10582b75d78b5 +Block 0017 [102]: 2a441f808bd0333b +Block 0017 [103]: a642e7057149cc1f +Block 0017 [104]: d6bc9ab2fc3dedd4 +Block 0017 [105]: 0a69e038dad8ed99 +Block 0017 [106]: cb6f1e8b33aa7bbf +Block 0017 [107]: 8304861a110a863f +Block 0017 [108]: c64db5cffd1dddc9 +Block 0017 [109]: 21ab4b7d16d24343 +Block 0017 [110]: c70d7531ff41687b +Block 0017 [111]: d9fbf424520de3ab +Block 0017 [112]: 62dbc0c63614a2ca +Block 0017 [113]: fb5ddca5cc9b5ef5 +Block 0017 [114]: 102fb169979dff96 +Block 0017 [115]: 89bb3c6d5273def2 +Block 0017 [116]: 4e8ad330ed9ba987 +Block 0017 [117]: 91f9120badad4fe8 +Block 0017 [118]: 2cba6deb67a93e33 +Block 0017 [119]: 82eb9efbfc3f069c +Block 0017 [120]: 92751db67186e7b8 +Block 0017 [121]: 452989bad621fbd0 +Block 0017 [122]: b55a1956286888a8 +Block 0017 [123]: 9b60dc755f5cc9f3 +Block 0017 [124]: 752866cc50addf99 +Block 0017 [125]: f80c6f88dbaf5618 +Block 0017 [126]: 2dacf26165da310a +Block 0017 [127]: 5a5c1346648cb98f +Block 0018 [ 0]: c041b5404fc14796 +Block 0018 [ 1]: 42c1d1d2d2412a2c +Block 0018 [ 2]: 322612b96dbe404c +Block 0018 [ 3]: 357a1fb8cc729650 +Block 0018 [ 4]: 7a527a5309468dd2 +Block 0018 [ 5]: fb2cb6f6e10e59b3 +Block 0018 [ 6]: 34c83bfa6b96fe14 +Block 0018 [ 7]: 32e5eee98371df6a +Block 0018 [ 8]: 814e7423992dab73 +Block 0018 [ 9]: 4bb91cf61fbf942a +Block 0018 [ 10]: f87274d2287559b3 +Block 0018 [ 11]: fed41160f5deb3ac +Block 0018 [ 12]: 3fe00e7ccb816d8a +Block 0018 [ 13]: e98cff2234abbb10 +Block 0018 [ 14]: 92e7a0367f92a4d3 +Block 0018 [ 15]: d5b51b4d450add95 +Block 0018 [ 16]: dc28b4287e3f9ed7 +Block 0018 [ 17]: da0cb8b59bc77666 +Block 0018 [ 18]: 5a888148a7c23edc +Block 0018 [ 19]: 22630c8872df9a76 +Block 0018 [ 20]: d05adf7c8efc2f5d +Block 0018 [ 21]: 43be90f2e7d8bcf2 +Block 0018 [ 22]: eac412fc14be4be7 +Block 0018 [ 23]: e1e771059e409d40 +Block 0018 [ 24]: e135eb81cecf1833 +Block 0018 [ 25]: 0c01619993e2f658 +Block 0018 [ 26]: c8cd4eb79c5cd6fa +Block 0018 [ 27]: 9b7ffab4b459cfb6 +Block 0018 [ 28]: bb354089eba04584 +Block 0018 [ 29]: 6b3b2a819b790a99 +Block 0018 [ 30]: ea717cdc28bd1e23 +Block 0018 [ 31]: 3736624be21dadff +Block 0018 [ 32]: ac6b859c93b2e762 +Block 0018 [ 33]: 1cb8d4442942a949 +Block 0018 [ 34]: 7fb052284494bded +Block 0018 [ 35]: 6f952e9ec4bd5d81 +Block 0018 [ 36]: 043d4040a33ed417 +Block 0018 [ 37]: 278620a20136dc5e +Block 0018 [ 38]: 4b71f1f93451bf05 +Block 0018 [ 39]: 4939662290575aaf +Block 0018 [ 40]: 313e1346d49191a6 +Block 0018 [ 41]: 6d39db233f342f32 +Block 0018 [ 42]: d2ae94655f710ce3 +Block 0018 [ 43]: c9c047392f281a66 +Block 0018 [ 44]: 80dd26a85e5e796f +Block 0018 [ 45]: f186dd414ce01efb +Block 0018 [ 46]: 051f172d5797a286 +Block 0018 [ 47]: 835513a6ab42e638 +Block 0018 [ 48]: 3226271414bf91ae +Block 0018 [ 49]: 04cb3ebae9b28551 +Block 0018 [ 50]: 83ed429d7eb9b927 +Block 0018 [ 51]: 7095a647334175a9 +Block 0018 [ 52]: 33db074e9991615d +Block 0018 [ 53]: 46d842a09fe53c20 +Block 0018 [ 54]: 557606fc5495a082 +Block 0018 [ 55]: a3ad8552fe15a034 +Block 0018 [ 56]: 078a9456a97efccf +Block 0018 [ 57]: d18f62b6e538775a +Block 0018 [ 58]: f81e4b8ec17d28d4 +Block 0018 [ 59]: 5928661efcc1b8bd +Block 0018 [ 60]: fcf4eac3d546e540 +Block 0018 [ 61]: ddb969004b39ba74 +Block 0018 [ 62]: 20e448cd8be12f7a +Block 0018 [ 63]: a61b19150fafec9d +Block 0018 [ 64]: 748bdc3cf48998a6 +Block 0018 [ 65]: ab65d8df971cbe5a +Block 0018 [ 66]: 8c6f9434a9586b89 +Block 0018 [ 67]: 895ca0446a2c28fa +Block 0018 [ 68]: 904d7791774e17fc +Block 0018 [ 69]: 223b37a2589eb79d +Block 0018 [ 70]: 16fa6b43545df34c +Block 0018 [ 71]: 05053dfbf5963e0c +Block 0018 [ 72]: bf4e015f2b2a8543 +Block 0018 [ 73]: bf18babcf76250c0 +Block 0018 [ 74]: a3b1fdfea3b799c3 +Block 0018 [ 75]: 7b66b5e810bb8ed0 +Block 0018 [ 76]: c31a6e1403261884 +Block 0018 [ 77]: fcc69d0a7dc39120 +Block 0018 [ 78]: fa1226c66d84c99b +Block 0018 [ 79]: 4fc6666d38efd0d2 +Block 0018 [ 80]: 180af3a735556b6c +Block 0018 [ 81]: 257757c7b0d7bd60 +Block 0018 [ 82]: b8cf53a7741f7206 +Block 0018 [ 83]: 36445f0e4fa2ff4f +Block 0018 [ 84]: 84e818bcf7f9c0e7 +Block 0018 [ 85]: aef043adae1fea8a +Block 0018 [ 86]: 1a4b58be1665f6c8 +Block 0018 [ 87]: f05dc6e91bc674b7 +Block 0018 [ 88]: fb774360bac8a6be +Block 0018 [ 89]: b391bc826f20faee +Block 0018 [ 90]: d27202a49375b6a0 +Block 0018 [ 91]: 7f4d317308ed1f24 +Block 0018 [ 92]: 85b0e894700e8c53 +Block 0018 [ 93]: 2dc02256d2e6e25a +Block 0018 [ 94]: f59439776d6f90b3 +Block 0018 [ 95]: 743cb12747d017ae +Block 0018 [ 96]: 3dba91a205dcc769 +Block 0018 [ 97]: 51a7dc73cfe29b8a +Block 0018 [ 98]: 43c46e0312db15f2 +Block 0018 [ 99]: 6405b2d2fe5e79a5 +Block 0018 [100]: 9637fdc2d5644c31 +Block 0018 [101]: ea1f9a3fa19447b3 +Block 0018 [102]: 8844881da9341a88 +Block 0018 [103]: a468100efa203be3 +Block 0018 [104]: 628df4042f4e5768 +Block 0018 [105]: d47d10937d3a46d9 +Block 0018 [106]: 9df989b91d7709e2 +Block 0018 [107]: 017ebdf71eda7aaa +Block 0018 [108]: bd75089946ac2eef +Block 0018 [109]: 978c9a569c3de744 +Block 0018 [110]: bf43f9640ece86d2 +Block 0018 [111]: e6bd892f7b28d4e6 +Block 0018 [112]: 2ff9516b1e19d1c3 +Block 0018 [113]: f0dc1c592e7010b9 +Block 0018 [114]: eb4cce9940eccf06 +Block 0018 [115]: da4d653f57eec00f +Block 0018 [116]: e51ab8d3c4be9827 +Block 0018 [117]: 82a6fc187105d291 +Block 0018 [118]: 5c2917ce70d42dc6 +Block 0018 [119]: 2d13186607f06354 +Block 0018 [120]: 08255748d3544673 +Block 0018 [121]: 38864c085f79994e +Block 0018 [122]: ddb698307723325f +Block 0018 [123]: bfec853f7eba283d +Block 0018 [124]: 29dbde8f56583edb +Block 0018 [125]: 89c8a74d98ca5d87 +Block 0018 [126]: 2568841313d637b8 +Block 0018 [127]: c7c147e011020538 +Block 0019 [ 0]: 5975d074fb2b80ca +Block 0019 [ 1]: d3a0fd982f4ffb97 +Block 0019 [ 2]: f2669a67972dfa35 +Block 0019 [ 3]: 1f574aaa1262c366 +Block 0019 [ 4]: 9c1e3ed5ba77c25e +Block 0019 [ 5]: 88783fba68f8148a +Block 0019 [ 6]: e87d826ed27f9403 +Block 0019 [ 7]: 14ecc52ba1db2fe0 +Block 0019 [ 8]: aae61478ed5259ba +Block 0019 [ 9]: 4b1414084db18e5f +Block 0019 [ 10]: c35f1e0ea6765b4c +Block 0019 [ 11]: 7c17e2cd01b7faef +Block 0019 [ 12]: 31888561748cb1bf +Block 0019 [ 13]: 9c8eef4bb77e3b31 +Block 0019 [ 14]: 65615a5be74205b7 +Block 0019 [ 15]: 834fa75572cc0c16 +Block 0019 [ 16]: ced5b8d8a542ca3e +Block 0019 [ 17]: 63fc5c364db120fe +Block 0019 [ 18]: 03385d133a6b3b8d +Block 0019 [ 19]: 6e9483e026d4c324 +Block 0019 [ 20]: 01c63c1034072162 +Block 0019 [ 21]: 4106addfa2a6c4a4 +Block 0019 [ 22]: 545bb4774f5af6fb +Block 0019 [ 23]: f304cc3ff0149f20 +Block 0019 [ 24]: c432491aeea87c6f +Block 0019 [ 25]: 67b894d2251fcd87 +Block 0019 [ 26]: a8f491ffe7629435 +Block 0019 [ 27]: 0529f1dc08202fe3 +Block 0019 [ 28]: dce32768c571875d +Block 0019 [ 29]: 0ee9629f09082ef6 +Block 0019 [ 30]: cad6d8d9b39f6a0f +Block 0019 [ 31]: b3a689484a015bc0 +Block 0019 [ 32]: 9d8877a13d1c3826 +Block 0019 [ 33]: 238759c6a375b2e4 +Block 0019 [ 34]: 1a0840206d678414 +Block 0019 [ 35]: 5f4f523e2f9bc1db +Block 0019 [ 36]: 86bac81c9f087660 +Block 0019 [ 37]: 2b1fc228b7ce1eae +Block 0019 [ 38]: 272373ba633e502a +Block 0019 [ 39]: 07d1da188de3bd27 +Block 0019 [ 40]: 60f1d7a0cf09bd7d +Block 0019 [ 41]: e8338703ba406ffa +Block 0019 [ 42]: a3126dac248af0ba +Block 0019 [ 43]: b66d1411baeee667 +Block 0019 [ 44]: 7e428cba8e92009a +Block 0019 [ 45]: f433fe4cc97cb0a1 +Block 0019 [ 46]: 6d54be08d676e02f +Block 0019 [ 47]: 5520bcd293855640 +Block 0019 [ 48]: 3f559b48823c0871 +Block 0019 [ 49]: 9c3709178d3c2c73 +Block 0019 [ 50]: dc5d227ca8b0a06c +Block 0019 [ 51]: bd6752dd42d9d747 +Block 0019 [ 52]: 2855f70a04ff378e +Block 0019 [ 53]: 33fdd9e42f309bb6 +Block 0019 [ 54]: bbd3ece6fd7e22d3 +Block 0019 [ 55]: 55dc22237d39f2f0 +Block 0019 [ 56]: 86c379043652eebc +Block 0019 [ 57]: c170577fe3e3559b +Block 0019 [ 58]: 11787c617d9b2ff8 +Block 0019 [ 59]: eb7101cfebc209fb +Block 0019 [ 60]: 802bba4c3656ef15 +Block 0019 [ 61]: 583c2ae983b05494 +Block 0019 [ 62]: a03b6463c9aaa2eb +Block 0019 [ 63]: bde4ae47733fa2e2 +Block 0019 [ 64]: 23ada257cf4c6c7a +Block 0019 [ 65]: ada4e1f5e4344a35 +Block 0019 [ 66]: cc978a0231cfbffe +Block 0019 [ 67]: a371c42dc049887c +Block 0019 [ 68]: 345f8bda6f0df672 +Block 0019 [ 69]: 8650d26948762f48 +Block 0019 [ 70]: f43c2d95e07b072a +Block 0019 [ 71]: 67f61ef3ebbc0f96 +Block 0019 [ 72]: 10e739223f7d96e5 +Block 0019 [ 73]: fd6c29b7a80413a9 +Block 0019 [ 74]: 4e1c3d1da37018bc +Block 0019 [ 75]: b02c4fbb8af4294f +Block 0019 [ 76]: 8b40c90a7c84e1ce +Block 0019 [ 77]: 0f985348b6d734b1 +Block 0019 [ 78]: 7dd931cc8b11632a +Block 0019 [ 79]: 814fe25909879a87 +Block 0019 [ 80]: 76d914493b833e24 +Block 0019 [ 81]: 5b5be017ff49892c +Block 0019 [ 82]: 5d83b46073cfd823 +Block 0019 [ 83]: 290b8fdb7f7fb122 +Block 0019 [ 84]: 0efc2d0bbc0d35ac +Block 0019 [ 85]: fec9e053d1874abc +Block 0019 [ 86]: 6724fad53bb13885 +Block 0019 [ 87]: 5940e1a1676bee41 +Block 0019 [ 88]: ed7f9730e4aa9718 +Block 0019 [ 89]: 0cba50e516fe5321 +Block 0019 [ 90]: 417b1c44ebc37352 +Block 0019 [ 91]: c072e1ef6fdbbbc0 +Block 0019 [ 92]: f59b0ea794221c51 +Block 0019 [ 93]: 8a80635f831b642c +Block 0019 [ 94]: 816090e93f345f93 +Block 0019 [ 95]: 8a60e2d12967aeaa +Block 0019 [ 96]: 6707818a46cde2cc +Block 0019 [ 97]: 75daf2d9dd0846d9 +Block 0019 [ 98]: 506b1cf7d9d6b08e +Block 0019 [ 99]: 65903cee3e8a7f3b +Block 0019 [100]: be2174352527d8ce +Block 0019 [101]: 12e0d0792954a886 +Block 0019 [102]: 7eab60f6de1ce0d9 +Block 0019 [103]: 360ea3fd133fd307 +Block 0019 [104]: 5f7435144945666d +Block 0019 [105]: 243ea63a94f2ad1f +Block 0019 [106]: 2d8e733176d41102 +Block 0019 [107]: 746146ad34837e87 +Block 0019 [108]: 90354e38c8503718 +Block 0019 [109]: 1cd40344cbe92283 +Block 0019 [110]: c668973adf6ca79c +Block 0019 [111]: a7e8b08f16ee0da1 +Block 0019 [112]: 4b0a6b18f0a124b1 +Block 0019 [113]: c587e43c8155c830 +Block 0019 [114]: 58cb61030ee0e295 +Block 0019 [115]: a288723f509a656d +Block 0019 [116]: a234563f4e938bc7 +Block 0019 [117]: 78eae87758c6490c +Block 0019 [118]: 3f725bf6465c17bd +Block 0019 [119]: d906e8489e8bd295 +Block 0019 [120]: 589e8eb2682879ab +Block 0019 [121]: d64af1ef2a74f6b6 +Block 0019 [122]: 8144c43fde1ad585 +Block 0019 [123]: 296883ffd42aaf46 +Block 0019 [124]: a3d1b0b82df571d0 +Block 0019 [125]: b8912fe47cc36af9 +Block 0019 [126]: 785f891f4fcbe2c5 +Block 0019 [127]: dface78ba2552ce9 +Block 0020 [ 0]: bf06b2703ca2687f +Block 0020 [ 1]: 66eeeb3ddf34f8a1 +Block 0020 [ 2]: b95f9f996c1c5488 +Block 0020 [ 3]: 242a8bbb2cba35b1 +Block 0020 [ 4]: d742af34a7687518 +Block 0020 [ 5]: fd49b478c7c35b1e +Block 0020 [ 6]: a9aa82aef77d374c +Block 0020 [ 7]: 931f287f229addfb +Block 0020 [ 8]: aea5556a92b17106 +Block 0020 [ 9]: 3421eb9c547646df +Block 0020 [ 10]: 84902b6557754253 +Block 0020 [ 11]: 0dddc14b4aa9dc2c +Block 0020 [ 12]: 400f9e0e79df61d4 +Block 0020 [ 13]: 17aa6a5b0509dc43 +Block 0020 [ 14]: 4f5c4056326d4a69 +Block 0020 [ 15]: 462ac87fda95d3f4 +Block 0020 [ 16]: 9dc248b452234994 +Block 0020 [ 17]: 9f55bef8c449b3fe +Block 0020 [ 18]: dcb9018c911c9823 +Block 0020 [ 19]: 8b0666361853eb86 +Block 0020 [ 20]: f75bfee1a466f38a +Block 0020 [ 21]: eef004f6622ba3a4 +Block 0020 [ 22]: 5e7542da527fbfc7 +Block 0020 [ 23]: cad27d215519e198 +Block 0020 [ 24]: 543a711a2012c0df +Block 0020 [ 25]: 782439a5cf4c6357 +Block 0020 [ 26]: 626f8cb2f646e336 +Block 0020 [ 27]: 27d63ff2d2f5a069 +Block 0020 [ 28]: 7a8adda616f7f464 +Block 0020 [ 29]: 01481647db7b5bfb +Block 0020 [ 30]: 133f07aa86c8d5fb +Block 0020 [ 31]: fdb9090a47295857 +Block 0020 [ 32]: 2b8af4c3a603a10e +Block 0020 [ 33]: 6893ba15ef708e00 +Block 0020 [ 34]: ae6e506b7231044a +Block 0020 [ 35]: 80a831e434a83282 +Block 0020 [ 36]: e6f31bf7f5ac1013 +Block 0020 [ 37]: 59cb7125f004794d +Block 0020 [ 38]: 909d3baf9e4f87a4 +Block 0020 [ 39]: 424af5e6e79d06b1 +Block 0020 [ 40]: 3fae61df4c245611 +Block 0020 [ 41]: 47910940370dfa1c +Block 0020 [ 42]: 255d8003b2be5289 +Block 0020 [ 43]: af9ef269872b42fe +Block 0020 [ 44]: 6148bb955ee73cfd +Block 0020 [ 45]: 9153a8710241bfa8 +Block 0020 [ 46]: 7f990736fa01991f +Block 0020 [ 47]: b0fd4eef9c02115d +Block 0020 [ 48]: 9dd6f482f4191acf +Block 0020 [ 49]: ca024fbf3db9a740 +Block 0020 [ 50]: df82edd640dc69b1 +Block 0020 [ 51]: 1654b5ae829fbd58 +Block 0020 [ 52]: 761c1b1b18247948 +Block 0020 [ 53]: faca1c68baf59e32 +Block 0020 [ 54]: cc38df5e5e7aa81f +Block 0020 [ 55]: 49f3d3f152d1dc0f +Block 0020 [ 56]: f89018f9c5129515 +Block 0020 [ 57]: dac5b6c8ae9f50ed +Block 0020 [ 58]: 8ba01f9fbe900280 +Block 0020 [ 59]: 10611166a326e7e6 +Block 0020 [ 60]: de55eadd96b3f4df +Block 0020 [ 61]: 42aab6fff6e521cf +Block 0020 [ 62]: 47ec7168714eaece +Block 0020 [ 63]: 904dd019a3ab244a +Block 0020 [ 64]: 7f2df0d8c84f6e34 +Block 0020 [ 65]: 1fb128a8df1f68fd +Block 0020 [ 66]: f36c3853507c46c2 +Block 0020 [ 67]: 4df02816df208152 +Block 0020 [ 68]: a6048fc325ec6135 +Block 0020 [ 69]: 01e3809304a909cc +Block 0020 [ 70]: 5f1aa6c03fe7ffa0 +Block 0020 [ 71]: a71d6fadb3403338 +Block 0020 [ 72]: b05b24740b5059bb +Block 0020 [ 73]: 1e5be332cab4cc96 +Block 0020 [ 74]: eabd4670953d4bcf +Block 0020 [ 75]: 75bb0e890c309e8c +Block 0020 [ 76]: 4ba5f3410211ad2a +Block 0020 [ 77]: 74cf2a9624d12fd4 +Block 0020 [ 78]: 6aea587ee952596d +Block 0020 [ 79]: f6ac7426e0240886 +Block 0020 [ 80]: 1ab879b3a53065db +Block 0020 [ 81]: 4a5beac193536b01 +Block 0020 [ 82]: 5193a8fd2c3c74db +Block 0020 [ 83]: 77616a4f76538cf6 +Block 0020 [ 84]: 495cd739bf10f5c8 +Block 0020 [ 85]: b68f2b22d119f196 +Block 0020 [ 86]: 42cdda3bb05cae1a +Block 0020 [ 87]: bea6a38d6aa87f25 +Block 0020 [ 88]: 76664223b0a34ea7 +Block 0020 [ 89]: 86c583aa440330f4 +Block 0020 [ 90]: 088a72d7ec72de94 +Block 0020 [ 91]: 88460c4824f41ca6 +Block 0020 [ 92]: 633bcdeecbb960ac +Block 0020 [ 93]: 5e75c4663e3d852e +Block 0020 [ 94]: 1ccf9cbc5da47576 +Block 0020 [ 95]: 046dc004ef4923bf +Block 0020 [ 96]: 88eefd45eb5e9eaa +Block 0020 [ 97]: 0e955efe5f8797c1 +Block 0020 [ 98]: 91d9762a0fed8ebb +Block 0020 [ 99]: 52d8ebcdbacb5df7 +Block 0020 [100]: 574cd3e9238e2764 +Block 0020 [101]: a980d494a5100569 +Block 0020 [102]: 86832502488c9aa7 +Block 0020 [103]: 1fc9bdb470956f1f +Block 0020 [104]: 39f8bf49af2c10c1 +Block 0020 [105]: 037f1959a20a2823 +Block 0020 [106]: c9fa2b01347358db +Block 0020 [107]: 2494b5368202ff78 +Block 0020 [108]: 7a61a9b0ee5dc1be +Block 0020 [109]: 8da10663648d024a +Block 0020 [110]: 5ac14216531e239e +Block 0020 [111]: 91c917ab42a14684 +Block 0020 [112]: 80aa0cdb9b0cb881 +Block 0020 [113]: 80353569cd511cb0 +Block 0020 [114]: 334c54fca282870c +Block 0020 [115]: d2fb2e2aa01c2da1 +Block 0020 [116]: 06baca7139225edd +Block 0020 [117]: 4d23ee2ef7aa6c5a +Block 0020 [118]: 85e3b2db336611d3 +Block 0020 [119]: 54e049b532f97e15 +Block 0020 [120]: 9ba8ca6975ee7697 +Block 0020 [121]: dbb4a07ee8e1e1ec +Block 0020 [122]: 08a88026b23a1a8f +Block 0020 [123]: 904a6fb70888cc8e +Block 0020 [124]: 8015003a37c1d2c8 +Block 0020 [125]: 4a0bece1dc802e8a +Block 0020 [126]: e83b5bc5b63254dd +Block 0020 [127]: 315b078379732a55 +Block 0021 [ 0]: d98dacb952d24420 +Block 0021 [ 1]: 6ecefcfe9d2fce83 +Block 0021 [ 2]: 382b10cdcd4992f2 +Block 0021 [ 3]: 7c448939c4bf754d +Block 0021 [ 4]: e952610c3a3def5b +Block 0021 [ 5]: b8530f5459295399 +Block 0021 [ 6]: bbe9e115b1e37624 +Block 0021 [ 7]: 3619cf1d35d29654 +Block 0021 [ 8]: 1623a3887360cc74 +Block 0021 [ 9]: 8d33879e4b8217fd +Block 0021 [ 10]: 6c63b8e106d93d20 +Block 0021 [ 11]: 33a3a79e9cf2a354 +Block 0021 [ 12]: a24c5ba0e3072c87 +Block 0021 [ 13]: dbc11e2218cf95b3 +Block 0021 [ 14]: 1ba86314b90b1788 +Block 0021 [ 15]: 17b0904e5bf6f224 +Block 0021 [ 16]: 1451021dffe4fc93 +Block 0021 [ 17]: fa60d71c5556f9be +Block 0021 [ 18]: a4d8a51e384ab69b +Block 0021 [ 19]: 67d12fd94a2be9f5 +Block 0021 [ 20]: f14bb5b5aac93bc9 +Block 0021 [ 21]: 9378796ef3ba102b +Block 0021 [ 22]: 5e6f488326121b6b +Block 0021 [ 23]: 592621c434b0ce6d +Block 0021 [ 24]: c7424cfff8b3b826 +Block 0021 [ 25]: 04b0b25e87bd42f2 +Block 0021 [ 26]: 69339b43e358f015 +Block 0021 [ 27]: 9c1a659e532ff7c5 +Block 0021 [ 28]: a1d5bd93788dbcac +Block 0021 [ 29]: 9366ff377573f23d +Block 0021 [ 30]: 86d8b9e63bc75e4f +Block 0021 [ 31]: e4a67711b9f4fa29 +Block 0021 [ 32]: 0dad38ae8f5a1e04 +Block 0021 [ 33]: 4fae94319789ee3e +Block 0021 [ 34]: 3cdbdb5dfe5b731b +Block 0021 [ 35]: 4e0ce9a6413c3bcd +Block 0021 [ 36]: 93640d28a17deca2 +Block 0021 [ 37]: 07ed1daa7f314e39 +Block 0021 [ 38]: dde6874f6cb113ab +Block 0021 [ 39]: 84d5e35f62380ed3 +Block 0021 [ 40]: cb9e1fccad5a49a8 +Block 0021 [ 41]: ac4d4db97342a253 +Block 0021 [ 42]: f8116ff018848c4b +Block 0021 [ 43]: a05377f405673668 +Block 0021 [ 44]: 7472fa1ac1fa40dd +Block 0021 [ 45]: 66139b5e4c70780e +Block 0021 [ 46]: 88c21339074cf6c1 +Block 0021 [ 47]: a5148f1e4e76661b +Block 0021 [ 48]: 170a478179733825 +Block 0021 [ 49]: eb143bdecf5dd3ec +Block 0021 [ 50]: d2823463723e066d +Block 0021 [ 51]: b3940bbd94f8bd9c +Block 0021 [ 52]: dc5aacae8113ea16 +Block 0021 [ 53]: 1cfccf1746c31e74 +Block 0021 [ 54]: c0ef593db7d6031a +Block 0021 [ 55]: 332ea71b13a66d46 +Block 0021 [ 56]: 4a64bf8f0edd195b +Block 0021 [ 57]: 865db29b08296b25 +Block 0021 [ 58]: 4910a3014fe2f270 +Block 0021 [ 59]: a358cfd6afbe1a7b +Block 0021 [ 60]: 6986b50badaf443b +Block 0021 [ 61]: 598890f56972ca95 +Block 0021 [ 62]: ec44d5f01c361a8c +Block 0021 [ 63]: f79b2cafc96cd35a +Block 0021 [ 64]: 641067f7e4d0fc30 +Block 0021 [ 65]: b8edd873352f01ef +Block 0021 [ 66]: d1ff92e53c93a46d +Block 0021 [ 67]: 74ede5ca7e19622c +Block 0021 [ 68]: 9efa50c40af182d4 +Block 0021 [ 69]: 1dc41311428d8ed6 +Block 0021 [ 70]: d711fe07a8727a56 +Block 0021 [ 71]: c4d212ff76c97984 +Block 0021 [ 72]: 9d073689ca2ad4fc +Block 0021 [ 73]: 178aa8d197172ee7 +Block 0021 [ 74]: 46a0c28765bb4043 +Block 0021 [ 75]: afa90f2b421dbf1c +Block 0021 [ 76]: 8e7bee6842b6af3a +Block 0021 [ 77]: 79d2f5438af8bcb6 +Block 0021 [ 78]: ea00efd5db7c57de +Block 0021 [ 79]: f0974aa1ec354092 +Block 0021 [ 80]: 6c74b588913d4b1e +Block 0021 [ 81]: e8c90d16b01d747f +Block 0021 [ 82]: 7ef33f5658372999 +Block 0021 [ 83]: 4e0397c1dd16e9a7 +Block 0021 [ 84]: 289e3c980bc5c267 +Block 0021 [ 85]: fdc35d92fb2b138d +Block 0021 [ 86]: 4f60dbb4715f4377 +Block 0021 [ 87]: 038ea7ce4501b429 +Block 0021 [ 88]: f5d6971a39619b5c +Block 0021 [ 89]: 1ee68cb6ad1ad2bf +Block 0021 [ 90]: e7b678892a7ab0d3 +Block 0021 [ 91]: 5296b50abd13f8d8 +Block 0021 [ 92]: 0a0c11eb32bad5d1 +Block 0021 [ 93]: 62a04ab31aca9b85 +Block 0021 [ 94]: 8ee3c8aaafc1c37a +Block 0021 [ 95]: a679930ef4e84767 +Block 0021 [ 96]: b04cffad7dd306f4 +Block 0021 [ 97]: 615bf6a1ce835476 +Block 0021 [ 98]: fded9b06857aaeef +Block 0021 [ 99]: fdbf46d28acab387 +Block 0021 [100]: 58fcf9286a597f27 +Block 0021 [101]: 365e45615e1c06a1 +Block 0021 [102]: d5b5b8783a8f6e94 +Block 0021 [103]: 4f6704326849f6ee +Block 0021 [104]: 4786fb349eeb83d3 +Block 0021 [105]: 6e23749d929458d7 +Block 0021 [106]: 762b35de343c8888 +Block 0021 [107]: 45c0bbe5e881eebb +Block 0021 [108]: 5524af970d7747c2 +Block 0021 [109]: 7642e839a38308ed +Block 0021 [110]: 83116756fae0756d +Block 0021 [111]: dc1310d82834160f +Block 0021 [112]: db164a0b29b09861 +Block 0021 [113]: 297e4577cf659941 +Block 0021 [114]: e7fc84e90aac30ca +Block 0021 [115]: b36c4bea07e566d4 +Block 0021 [116]: 2ab7769287c75732 +Block 0021 [117]: fd931d4cb3c65f6f +Block 0021 [118]: f678f8e63ec79f54 +Block 0021 [119]: db7985eca3d474e9 +Block 0021 [120]: e6f59690114a1d52 +Block 0021 [121]: e3307b0f6212383b +Block 0021 [122]: 0c128521465d65ea +Block 0021 [123]: b798c51553ecfa41 +Block 0021 [124]: 20377296fa088c82 +Block 0021 [125]: bb3e7fe72954d469 +Block 0021 [126]: 0bdd6756a03fc48b +Block 0021 [127]: a59afa783ff40b08 +Block 0022 [ 0]: 894fb10684f63911 +Block 0022 [ 1]: c79e516e27e0eae1 +Block 0022 [ 2]: e4eb70963475aa54 +Block 0022 [ 3]: fa82a9bd92c66730 +Block 0022 [ 4]: 6bac0da0c39340c9 +Block 0022 [ 5]: 8ec6d78db179db48 +Block 0022 [ 6]: feb6da1a2c768038 +Block 0022 [ 7]: 8d8330d86ab0b201 +Block 0022 [ 8]: 782a6b1b6582aa80 +Block 0022 [ 9]: f18bd0c0ac40731f +Block 0022 [ 10]: 876077f975a2610e +Block 0022 [ 11]: ab514d1c8bd52949 +Block 0022 [ 12]: 758a978e57a5cb53 +Block 0022 [ 13]: a3f99b1346fbc817 +Block 0022 [ 14]: b98c66ba86dad2da +Block 0022 [ 15]: 891da0ae5d3c8167 +Block 0022 [ 16]: d5665fcafefc49af +Block 0022 [ 17]: b896b1d29e0478ab +Block 0022 [ 18]: a66a6c204d5e1dac +Block 0022 [ 19]: 991fcd02bdb902a8 +Block 0022 [ 20]: 4a10d59071361da9 +Block 0022 [ 21]: 38ee47da00b3896f +Block 0022 [ 22]: 1b1a81ae9ff8c085 +Block 0022 [ 23]: cb5f18bc3495bfa7 +Block 0022 [ 24]: ab16c36264a70127 +Block 0022 [ 25]: 2c00e90e8650f9a7 +Block 0022 [ 26]: b865eb3c34a4898c +Block 0022 [ 27]: 686164804f2386fd +Block 0022 [ 28]: cdf4f95feaa6880e +Block 0022 [ 29]: de938318bce749ab +Block 0022 [ 30]: 6a8884ad54f8e0c0 +Block 0022 [ 31]: ba17a2eed4edb6a3 +Block 0022 [ 32]: 03565e3f24fc6c53 +Block 0022 [ 33]: a72d60702118177d +Block 0022 [ 34]: 53cc8a0dd84a79ee +Block 0022 [ 35]: d8bc2ff2f8e1e245 +Block 0022 [ 36]: 4664e02b6091aaf7 +Block 0022 [ 37]: 8ce8fbfb6b2c659f +Block 0022 [ 38]: 1d3ff48f828c076e +Block 0022 [ 39]: 2a154a5733380c66 +Block 0022 [ 40]: 97935f5fcf051a92 +Block 0022 [ 41]: 30a082488b0cc18f +Block 0022 [ 42]: b8cec1865510da77 +Block 0022 [ 43]: f69f733d02225eb8 +Block 0022 [ 44]: 5e977e5a7fb48dc9 +Block 0022 [ 45]: c9ac7bbbde9594fe +Block 0022 [ 46]: 38726e01c66a8330 +Block 0022 [ 47]: d0cad8f24e4bf70d +Block 0022 [ 48]: b92f4fb7765df3c3 +Block 0022 [ 49]: 599e65781b30edae +Block 0022 [ 50]: 30371e95d33a8566 +Block 0022 [ 51]: ef8cdbb7b77acf52 +Block 0022 [ 52]: 7e62aa6c33002015 +Block 0022 [ 53]: b79f8344f4aca7d2 +Block 0022 [ 54]: c306c71173828957 +Block 0022 [ 55]: 04ec0a2cea3ca2be +Block 0022 [ 56]: 669ed752935e38de +Block 0022 [ 57]: e41e57dad7e38479 +Block 0022 [ 58]: f68f6869312acf69 +Block 0022 [ 59]: d2e9eef906a6e5da +Block 0022 [ 60]: 3dc8f02bf675a71c +Block 0022 [ 61]: fe05d48e00d632d7 +Block 0022 [ 62]: 7f2dee8ee9900bbe +Block 0022 [ 63]: 7d499069dfe3f84a +Block 0022 [ 64]: efc16839f74bd528 +Block 0022 [ 65]: 85a573fa646a7922 +Block 0022 [ 66]: 739f50e997638d43 +Block 0022 [ 67]: 02d0f0e636f1ead4 +Block 0022 [ 68]: fb0925efa1e52cd4 +Block 0022 [ 69]: c46b1cf1f1a59a8d +Block 0022 [ 70]: 1ffb7a7a2402392b +Block 0022 [ 71]: 95694bedb94e49a4 +Block 0022 [ 72]: bf6b98b553e545c9 +Block 0022 [ 73]: 024b23922c08cbf6 +Block 0022 [ 74]: e942a9619f377d06 +Block 0022 [ 75]: 845346bd3d6ed087 +Block 0022 [ 76]: 811557cc8ed4cdf5 +Block 0022 [ 77]: 2596c4bef0b39380 +Block 0022 [ 78]: 00b3ec347bc265b8 +Block 0022 [ 79]: 3e3f1e7f786c1514 +Block 0022 [ 80]: 40c8998c013651cd +Block 0022 [ 81]: 424ada87053d72ca +Block 0022 [ 82]: 135f12196de93fd1 +Block 0022 [ 83]: 85d71d71a38da084 +Block 0022 [ 84]: b2c2e83ce6bf68be +Block 0022 [ 85]: c00799ccb83f163b +Block 0022 [ 86]: 23d14becef3b11d3 +Block 0022 [ 87]: 436c07c01f94bcd7 +Block 0022 [ 88]: 182e68a627907240 +Block 0022 [ 89]: 3049fbea32141bbb +Block 0022 [ 90]: 6ad0528debcec2bc +Block 0022 [ 91]: 8b49f103c0010c3c +Block 0022 [ 92]: 2ad22e691ed79870 +Block 0022 [ 93]: fca9c54f859e2927 +Block 0022 [ 94]: 11e276466ab8bcfa +Block 0022 [ 95]: 001174f7b1c4f6a5 +Block 0022 [ 96]: e237f3a569ede1c8 +Block 0022 [ 97]: 2199033ff0c87b70 +Block 0022 [ 98]: 46ca834e676152d3 +Block 0022 [ 99]: b90b08ea4b9b1272 +Block 0022 [100]: ddba70ef01abc23b +Block 0022 [101]: 8a7f67c932bfa0c2 +Block 0022 [102]: 6c8e92f6a8b41c30 +Block 0022 [103]: d8de541588bd27cb +Block 0022 [104]: bd72f5b7c21c327f +Block 0022 [105]: 9bbca4fe9883b002 +Block 0022 [106]: 1e17e97459704a3d +Block 0022 [107]: 1b5e1bb4d628e734 +Block 0022 [108]: 4164a672d7f37337 +Block 0022 [109]: 79202876a4e1d434 +Block 0022 [110]: 83a60d1ae8b4d69d +Block 0022 [111]: be992378e10ae871 +Block 0022 [112]: 8ef05f200cc7a9b8 +Block 0022 [113]: 8e3b8ecbd99494f3 +Block 0022 [114]: 8be8f5e9977fb07b +Block 0022 [115]: 6562a43f5eee838a +Block 0022 [116]: 278de9718e90574d +Block 0022 [117]: 09976190662a1bc6 +Block 0022 [118]: f8bc98e4c7f01f71 +Block 0022 [119]: 1f5b6162280592b1 +Block 0022 [120]: 93c35337d2f78dd8 +Block 0022 [121]: fba0e65ae8ad86a8 +Block 0022 [122]: bb080e690d538029 +Block 0022 [123]: cd914b9a50bc983c +Block 0022 [124]: b86bb82fbb02716f +Block 0022 [125]: 69debb138546a813 +Block 0022 [126]: 5573bba3fa50b093 +Block 0022 [127]: e0486d1e7e4ba4d2 +Block 0023 [ 0]: 4c2e8bfde4858256 +Block 0023 [ 1]: 0e27b8df1a7bfd63 +Block 0023 [ 2]: 0ca3b35943cf7423 +Block 0023 [ 3]: b409995a80af9766 +Block 0023 [ 4]: 27cfac08e2e49ad8 +Block 0023 [ 5]: 8a6e4f3e271e25a0 +Block 0023 [ 6]: c71594856a479dac +Block 0023 [ 7]: 506f4270ed9605f4 +Block 0023 [ 8]: 2e7c70c26839396b +Block 0023 [ 9]: 0b20f649d9523165 +Block 0023 [ 10]: 543e217485c0abeb +Block 0023 [ 11]: 0cb1abcc888e01c8 +Block 0023 [ 12]: 9d6360c15dcb2600 +Block 0023 [ 13]: 3f16dbb1f886001a +Block 0023 [ 14]: ec9b7d4980243fca +Block 0023 [ 15]: afdfec256cbf0b7a +Block 0023 [ 16]: 8f584e724b650a88 +Block 0023 [ 17]: c413f1aba32cc4eb +Block 0023 [ 18]: 17d545f8b2e64314 +Block 0023 [ 19]: 9068a6d6ce974e4e +Block 0023 [ 20]: d6b452deab39ca75 +Block 0023 [ 21]: 59218d12cab0af33 +Block 0023 [ 22]: ed19b3667f1fbba8 +Block 0023 [ 23]: 93a226a16d6bb59e +Block 0023 [ 24]: 0de268264746dc53 +Block 0023 [ 25]: 42bec86aa16652c4 +Block 0023 [ 26]: a17a4df361e17dc5 +Block 0023 [ 27]: 2ca05b04344c29f6 +Block 0023 [ 28]: 15ec2ac7c425d01e +Block 0023 [ 29]: 98723a73be5c449d +Block 0023 [ 30]: fac664e9b515c24d +Block 0023 [ 31]: 667c74be9cfbf2de +Block 0023 [ 32]: de3851fc81a42170 +Block 0023 [ 33]: 4d9afc9e7d1dba49 +Block 0023 [ 34]: 8380e0274161b55c +Block 0023 [ 35]: 3b3f74f7b1ffdc7d +Block 0023 [ 36]: af8146b72185e1b1 +Block 0023 [ 37]: 045c8173a0ca5e9b +Block 0023 [ 38]: 6b9462d3a3079ca7 +Block 0023 [ 39]: 91a29181d7aee397 +Block 0023 [ 40]: 1f78f53cba1cfb53 +Block 0023 [ 41]: a4ecd6402fe982b2 +Block 0023 [ 42]: 52290de77a77a30b +Block 0023 [ 43]: 8636b59fdfc2628a +Block 0023 [ 44]: e981e9ef1efd52fa +Block 0023 [ 45]: 2daceec89e9e75d8 +Block 0023 [ 46]: 7553a6b86c1bd3b4 +Block 0023 [ 47]: 8d2703641eaabd8e +Block 0023 [ 48]: a7d768e9c39c2fcd +Block 0023 [ 49]: f1857f0b55b6f379 +Block 0023 [ 50]: db895bb3f18d46d9 +Block 0023 [ 51]: 04a5007ada435091 +Block 0023 [ 52]: 3f70592bbaa98b62 +Block 0023 [ 53]: 8b67d0d8abbe328e +Block 0023 [ 54]: ea7474021a650668 +Block 0023 [ 55]: e90347a7acaf41af +Block 0023 [ 56]: 37c7a4f487483706 +Block 0023 [ 57]: 6f854c4fa348730f +Block 0023 [ 58]: 783761eea411efa2 +Block 0023 [ 59]: d2f84fffdc1c2dab +Block 0023 [ 60]: 15876740b2afeca4 +Block 0023 [ 61]: 42df2017f6cb0cd6 +Block 0023 [ 62]: da2288c5b587b656 +Block 0023 [ 63]: 8fc504318b434fb2 +Block 0023 [ 64]: be72c16924931758 +Block 0023 [ 65]: 5eb26ba68f62fb65 +Block 0023 [ 66]: a026b7c625a26eaa +Block 0023 [ 67]: e37dcfbbd3416388 +Block 0023 [ 68]: dc52d59c0b02448d +Block 0023 [ 69]: 935543a8846025b2 +Block 0023 [ 70]: d60143cd0a4b3cef +Block 0023 [ 71]: 86f7efa204af95ac +Block 0023 [ 72]: 2b6f6816679f91d1 +Block 0023 [ 73]: 94e6182998b96b54 +Block 0023 [ 74]: 93e73bf0f0105569 +Block 0023 [ 75]: da13f18e4c0cb699 +Block 0023 [ 76]: 870448ce3efa8548 +Block 0023 [ 77]: 4a6416a905d86b3e +Block 0023 [ 78]: 1fe58f6a54047cca +Block 0023 [ 79]: f42edddfef0201d4 +Block 0023 [ 80]: f2a9f93e5ea486d2 +Block 0023 [ 81]: b9d1604eb4f52307 +Block 0023 [ 82]: 56c5d663e18af644 +Block 0023 [ 83]: 162302f10139e362 +Block 0023 [ 84]: 0042db324df502f2 +Block 0023 [ 85]: 28495f12c64d8cd5 +Block 0023 [ 86]: e3fe80b267e1b630 +Block 0023 [ 87]: 641544818559128f +Block 0023 [ 88]: ab828451acaf5169 +Block 0023 [ 89]: ec86a3fd707ed0e1 +Block 0023 [ 90]: 3eb5572a1e406ab5 +Block 0023 [ 91]: c6cc09d3d4fb0e82 +Block 0023 [ 92]: 4738b1bb726b069c +Block 0023 [ 93]: 317e2a78a9908215 +Block 0023 [ 94]: a63c7f3cb168d444 +Block 0023 [ 95]: 9b17d567889390ef +Block 0023 [ 96]: 3d4bc23a26789e48 +Block 0023 [ 97]: a43b551c6e1bfc15 +Block 0023 [ 98]: ed2b8686fe6304d9 +Block 0023 [ 99]: 00620e444100bd23 +Block 0023 [100]: a43f1dd9f630d8e3 +Block 0023 [101]: d64b5dcd78d0fa09 +Block 0023 [102]: 870ff475afc7e794 +Block 0023 [103]: 11224ada8d5df827 +Block 0023 [104]: 20c39bc4cd167cb7 +Block 0023 [105]: 88d5cd35be323b5c +Block 0023 [106]: e3b289bb6a505cd3 +Block 0023 [107]: 40c9a2a625417bb5 +Block 0023 [108]: 2878a1103bcb1215 +Block 0023 [109]: 622d767c09fe18f5 +Block 0023 [110]: e00be87cbb6151cd +Block 0023 [111]: 68629d325a0095a8 +Block 0023 [112]: b49cb38fbb6a6518 +Block 0023 [113]: 86c32eebbd93b831 +Block 0023 [114]: 6d490907ad5e39cc +Block 0023 [115]: 610a7fa27d41f3ec +Block 0023 [116]: 491fd646a4be24dc +Block 0023 [117]: d2b3f507e79ddbbf +Block 0023 [118]: 9bafa9c11b16eac1 +Block 0023 [119]: cc2c7a70a9326714 +Block 0023 [120]: da03090b736421a2 +Block 0023 [121]: c78c8bf47b2fa258 +Block 0023 [122]: 6b40c85c5a3ef0b6 +Block 0023 [123]: 039e611fd2f43f50 +Block 0023 [124]: 4d96dc1301e43a45 +Block 0023 [125]: f9390676244bb1b4 +Block 0023 [126]: 541447043f38c5a7 +Block 0023 [127]: 9fa74c869aedb58f +Block 0024 [ 0]: 1b6d97f364ab1346 +Block 0024 [ 1]: 687c08189d7efe5d +Block 0024 [ 2]: 6e2970046223f59a +Block 0024 [ 3]: 201784f74072fc2a +Block 0024 [ 4]: 2d2547403935e57b +Block 0024 [ 5]: 7d853338f6589465 +Block 0024 [ 6]: 9da8aead5eea47d6 +Block 0024 [ 7]: 4cb61307518d7fbe +Block 0024 [ 8]: 0bd6df24105219cb +Block 0024 [ 9]: 9e3c1a1c459a1560 +Block 0024 [ 10]: c4afb9befd5c4615 +Block 0024 [ 11]: 35cc8bb5890e32fd +Block 0024 [ 12]: 42d369e59a7bbf15 +Block 0024 [ 13]: ed7a3c27e46f61d2 +Block 0024 [ 14]: 9ae3d245b38ff4ac +Block 0024 [ 15]: 6606075547aec2c7 +Block 0024 [ 16]: 87cf9c94c0c06f9a +Block 0024 [ 17]: 33cc104c0a1e67cd +Block 0024 [ 18]: 95b65f1410712d0d +Block 0024 [ 19]: e5a685c8d48d8bfe +Block 0024 [ 20]: 6e3f226d46a8825a +Block 0024 [ 21]: 1b040014d7aa884b +Block 0024 [ 22]: ca62adf20dafce90 +Block 0024 [ 23]: 4be470b0fa205479 +Block 0024 [ 24]: 24308ae259e78652 +Block 0024 [ 25]: a22865e6df84c43d +Block 0024 [ 26]: 8a257435179ef5f3 +Block 0024 [ 27]: 7528d2d048b63094 +Block 0024 [ 28]: 52d6b0bbae33dd91 +Block 0024 [ 29]: b786b9bf3f260a14 +Block 0024 [ 30]: 8022252f3494ac9d +Block 0024 [ 31]: f08b21f7dbed0caa +Block 0024 [ 32]: f2746d7321fc2375 +Block 0024 [ 33]: bd6d6dcc95880acc +Block 0024 [ 34]: a19e4304559ba8bf +Block 0024 [ 35]: 10ff706c1856688a +Block 0024 [ 36]: 3f63ed9e8363333f +Block 0024 [ 37]: 1fd49162c4817b52 +Block 0024 [ 38]: ddc70fc91fc43c97 +Block 0024 [ 39]: ae180ca44f1e9390 +Block 0024 [ 40]: a09e0ce6f7ca33e4 +Block 0024 [ 41]: ebc444a5cabb3206 +Block 0024 [ 42]: 5519bd49fa0d4d48 +Block 0024 [ 43]: 4f3ec96c151d6a1d +Block 0024 [ 44]: 2e7e65ad9de4611d +Block 0024 [ 45]: e29c6024528a1481 +Block 0024 [ 46]: e70eaf44fb8dbdac +Block 0024 [ 47]: a20804e6afabfd4a +Block 0024 [ 48]: abec4c52a6ba54f8 +Block 0024 [ 49]: f18776eceb179fc3 +Block 0024 [ 50]: 71c5b59ff02c64d5 +Block 0024 [ 51]: 0eb62ddb7c7b9898 +Block 0024 [ 52]: 78e7cf44557ed070 +Block 0024 [ 53]: dcf3718610a69b15 +Block 0024 [ 54]: d2aee39a8abc74fb +Block 0024 [ 55]: d8eca1f46bc06ae0 +Block 0024 [ 56]: c20ddf556d469215 +Block 0024 [ 57]: 77d2fce63b53504d +Block 0024 [ 58]: ca0f78a6db59b782 +Block 0024 [ 59]: e08630201e93844b +Block 0024 [ 60]: 011b122308a2ad54 +Block 0024 [ 61]: 989563a37aa0250b +Block 0024 [ 62]: 50c69b16e0c3aae4 +Block 0024 [ 63]: 61738db62009e68e +Block 0024 [ 64]: 4fee029f50b9ad21 +Block 0024 [ 65]: 59e8d0db17da305e +Block 0024 [ 66]: b6077aa1ca0d36c6 +Block 0024 [ 67]: f469a0199cb637ea +Block 0024 [ 68]: 6d644a367fed3a78 +Block 0024 [ 69]: 40c2ebf12ced7376 +Block 0024 [ 70]: b0f9f1af56f200d4 +Block 0024 [ 71]: 9c470579f03b27ec +Block 0024 [ 72]: 29ef27bb4e7261df +Block 0024 [ 73]: 3bb0c11596f105a7 +Block 0024 [ 74]: 831e6117a872ef3f +Block 0024 [ 75]: 141586a939871928 +Block 0024 [ 76]: de05c66973c18f61 +Block 0024 [ 77]: bb04e9de901e6e4b +Block 0024 [ 78]: f209934886855554 +Block 0024 [ 79]: f205f3433fc48384 +Block 0024 [ 80]: 1a91e7fc0f8f7add +Block 0024 [ 81]: 2ef9e4a071709634 +Block 0024 [ 82]: 32a6d71c4c162cd8 +Block 0024 [ 83]: 40cd26eb6ff34e7e +Block 0024 [ 84]: 1bf4edf9fe9811f2 +Block 0024 [ 85]: 5bbb164291c455e4 +Block 0024 [ 86]: a3bb18b302a9a9f7 +Block 0024 [ 87]: 7ac7d717cd014cc8 +Block 0024 [ 88]: 3355afbd7da534fd +Block 0024 [ 89]: 0d488eddc9478451 +Block 0024 [ 90]: 2192fd7c8f12f985 +Block 0024 [ 91]: 77cd72d33cf5cf87 +Block 0024 [ 92]: 11c0fadc29eade8b +Block 0024 [ 93]: af3078c91e0e86fc +Block 0024 [ 94]: 857211547a0b3253 +Block 0024 [ 95]: b5600bb399a4fec3 +Block 0024 [ 96]: 57bef31e17560d76 +Block 0024 [ 97]: fc89b941ffcde649 +Block 0024 [ 98]: ad3fbfb2612cc072 +Block 0024 [ 99]: 0768c44e8e79642f +Block 0024 [100]: fa82a7fc94531b44 +Block 0024 [101]: f4c591741e03ce27 +Block 0024 [102]: 601142b021e0d820 +Block 0024 [103]: 1b3a2508c3b26062 +Block 0024 [104]: b987bbaf19cdb37f +Block 0024 [105]: 8b4af1e25c892610 +Block 0024 [106]: 7951909eefee86df +Block 0024 [107]: 2cb36e418dcbe252 +Block 0024 [108]: b51abea53ca30724 +Block 0024 [109]: 14e49911570af91f +Block 0024 [110]: a00c4c240bb7249b +Block 0024 [111]: 451fe680abefa587 +Block 0024 [112]: 5369dfc1b916d153 +Block 0024 [113]: 1761ff4a62d7d45e +Block 0024 [114]: 151c216f3c1944ef +Block 0024 [115]: 7a185bbcdd0531fc +Block 0024 [116]: c700e6047cc7a9ce +Block 0024 [117]: 6ea92ecf27030984 +Block 0024 [118]: ecc7bf426636fcde +Block 0024 [119]: 38b9bd46560f0b1b +Block 0024 [120]: 346e7252c870ee10 +Block 0024 [121]: 3aa8d6c44e60d291 +Block 0024 [122]: f9dd7a421fb3d07c +Block 0024 [123]: ff85282feda3cd60 +Block 0024 [124]: dbfb89e57658dccf +Block 0024 [125]: 5728d16e353ea62b +Block 0024 [126]: 162c91687bbe2588 +Block 0024 [127]: 62180018d170be19 +Block 0025 [ 0]: 9dea98e0f45c8df3 +Block 0025 [ 1]: e718675e0ca9af64 +Block 0025 [ 2]: 2a200f968940a3e6 +Block 0025 [ 3]: 7c56da29d7d510af +Block 0025 [ 4]: 5b519939866bfefc +Block 0025 [ 5]: 134b855183457280 +Block 0025 [ 6]: 170ac5fed0cb9ee0 +Block 0025 [ 7]: d0a9bacf2034d21a +Block 0025 [ 8]: 00fce08c97ef87e0 +Block 0025 [ 9]: 9aa0041eaa7ad61f +Block 0025 [ 10]: 407a94b0a313e995 +Block 0025 [ 11]: b955191be75b7b24 +Block 0025 [ 12]: 316c31961ddff5f3 +Block 0025 [ 13]: 02a21a3bbbc4a5fe +Block 0025 [ 14]: 55fb14c755cd390d +Block 0025 [ 15]: 2a4b331d7df48c4e +Block 0025 [ 16]: 1be3b27043f0361f +Block 0025 [ 17]: f5c84613bd424fbe +Block 0025 [ 18]: e83919e013bef260 +Block 0025 [ 19]: 8fbdd74b3ffd0c32 +Block 0025 [ 20]: 066215f05844ab4d +Block 0025 [ 21]: 7b621ea46579b6bb +Block 0025 [ 22]: f3204a3744956a24 +Block 0025 [ 23]: 21428bee28221146 +Block 0025 [ 24]: 9f3eda1b1cb2a9af +Block 0025 [ 25]: baedddaa0cad8da8 +Block 0025 [ 26]: 6fdda68a32b9d387 +Block 0025 [ 27]: 5f1e005ced3c19e1 +Block 0025 [ 28]: cff1336476a4540b +Block 0025 [ 29]: a6be6f21ed834472 +Block 0025 [ 30]: 54f1db5d11d1874b +Block 0025 [ 31]: e0973ae921ea1ec6 +Block 0025 [ 32]: 54026fec00959adf +Block 0025 [ 33]: f355788737a4226d +Block 0025 [ 34]: 08eb52c06424d35e +Block 0025 [ 35]: 4c51dd52a31b3a25 +Block 0025 [ 36]: 8d6fb8828dc93960 +Block 0025 [ 37]: 9ca7d3414f6be751 +Block 0025 [ 38]: 5536071059f29bd0 +Block 0025 [ 39]: 212d31590dc55ff4 +Block 0025 [ 40]: 00160f22408fe1bf +Block 0025 [ 41]: 2ae2d51e4ef4fc38 +Block 0025 [ 42]: 3197ecb672fd06fb +Block 0025 [ 43]: f1291d96197e5455 +Block 0025 [ 44]: aabd77ecd5f9cf74 +Block 0025 [ 45]: ea21b4064dfcddbf +Block 0025 [ 46]: 7fe4679308b95d5b +Block 0025 [ 47]: 719cae719c25851f +Block 0025 [ 48]: 88cb63475ddd958a +Block 0025 [ 49]: e8def05e2a50961b +Block 0025 [ 50]: 3306b43d445e0c6c +Block 0025 [ 51]: 1a0ee61add088b04 +Block 0025 [ 52]: ebeb156ec51a9240 +Block 0025 [ 53]: 03998909b2b26e65 +Block 0025 [ 54]: 94d90f46e365b989 +Block 0025 [ 55]: fdc410a5ceccff31 +Block 0025 [ 56]: 557cc6b7afa5ae1f +Block 0025 [ 57]: 92045147a4608d29 +Block 0025 [ 58]: f24cd61d05340a80 +Block 0025 [ 59]: e8a771bb3e64ba20 +Block 0025 [ 60]: ea7a859223d8c1be +Block 0025 [ 61]: e0ed40a0864b6654 +Block 0025 [ 62]: cdca027f76da810d +Block 0025 [ 63]: 3e90ca16f87f8c64 +Block 0025 [ 64]: ada45048fa983c11 +Block 0025 [ 65]: 71676d391911b13a +Block 0025 [ 66]: 1d50c778ba2a1e16 +Block 0025 [ 67]: ee2174c9cfc78c55 +Block 0025 [ 68]: 4e649a15999421b4 +Block 0025 [ 69]: 283b514d302de05f +Block 0025 [ 70]: 0e5ffdfdd82c65aa +Block 0025 [ 71]: b05c24c95c134893 +Block 0025 [ 72]: 2d23b161436d607c +Block 0025 [ 73]: d191b4dfbc763bbc +Block 0025 [ 74]: 0fc53094eda325ab +Block 0025 [ 75]: 1e73613359daf5e9 +Block 0025 [ 76]: dadf7d0cd21e9f95 +Block 0025 [ 77]: d738d1a27daecafa +Block 0025 [ 78]: 31f8765d2324fbfb +Block 0025 [ 79]: 4db749e5e1e91ce3 +Block 0025 [ 80]: 312f948729f66ff9 +Block 0025 [ 81]: fe2b219ac8c6af11 +Block 0025 [ 82]: 947e787f9c64e091 +Block 0025 [ 83]: 49378284ecd531d5 +Block 0025 [ 84]: 061fbf2e83dfb196 +Block 0025 [ 85]: e065a3bb91f47c0a +Block 0025 [ 86]: 0bac9c6e8ddad59e +Block 0025 [ 87]: 82458709614459a1 +Block 0025 [ 88]: 184b5ba3476a00d8 +Block 0025 [ 89]: ac35cdb330809819 +Block 0025 [ 90]: 4164015963e94a50 +Block 0025 [ 91]: 5b49db84037e46ca +Block 0025 [ 92]: eccb81844e039636 +Block 0025 [ 93]: 94a259a089ebb6ee +Block 0025 [ 94]: c8365c576d7ca7e4 +Block 0025 [ 95]: 9600a395ee895e92 +Block 0025 [ 96]: d3f2a00d550f507e +Block 0025 [ 97]: 245198c21c2c6ae8 +Block 0025 [ 98]: 057f8dce7f761c0e +Block 0025 [ 99]: 3b88913083dda199 +Block 0025 [100]: c5eb496e745c47cb +Block 0025 [101]: 6a13fe3ee998220d +Block 0025 [102]: e44904f23834ebd5 +Block 0025 [103]: acaf928c769a8852 +Block 0025 [104]: 0866087633969633 +Block 0025 [105]: 8dd5b1dde3b06956 +Block 0025 [106]: 29f3bd382a42c2a5 +Block 0025 [107]: 29ea43a5a960be6b +Block 0025 [108]: 164710ec5da538da +Block 0025 [109]: 4e8d7d1fe9563032 +Block 0025 [110]: a920e54e66141df0 +Block 0025 [111]: 09d93900fd84dbb7 +Block 0025 [112]: 007245b49a574c20 +Block 0025 [113]: 595c4a0e5a8d9914 +Block 0025 [114]: fd3b2741644d6845 +Block 0025 [115]: 97ff3f94b0ac27c7 +Block 0025 [116]: c1c2efb0b9d18aaf +Block 0025 [117]: 22abb5fd2ecc9e62 +Block 0025 [118]: 3c41db1bdead501a +Block 0025 [119]: c0f75a3fdbbd361c +Block 0025 [120]: e36a235924b7cd2b +Block 0025 [121]: 92f3a12daa934ab9 +Block 0025 [122]: c0e1da579eebdbe1 +Block 0025 [123]: b1ac487a725cdb21 +Block 0025 [124]: a39fab7029df3ed7 +Block 0025 [125]: 7b8fe4524db844eb +Block 0025 [126]: b7fdf1a6ca4ff258 +Block 0025 [127]: f68cf7b80de6823a +Block 0026 [ 0]: c1b768e4ab523978 +Block 0026 [ 1]: 5521d67bc3751eeb +Block 0026 [ 2]: a123beff943e992f +Block 0026 [ 3]: a481f25f5c200f65 +Block 0026 [ 4]: ce26d5b7c8bee62f +Block 0026 [ 5]: 7f2072875ee51d8d +Block 0026 [ 6]: caf87e7d0df6e37d +Block 0026 [ 7]: e651b78783205174 +Block 0026 [ 8]: 614321f79276d222 +Block 0026 [ 9]: f9f78652a5bb3bfa +Block 0026 [ 10]: 53d925d442ea4557 +Block 0026 [ 11]: 312a5b33795050b7 +Block 0026 [ 12]: cba5769f359671c5 +Block 0026 [ 13]: 93c2a858f246f896 +Block 0026 [ 14]: 5f3eb206646804d1 +Block 0026 [ 15]: 16e5ecd1c0ad3301 +Block 0026 [ 16]: 8bdf8382b5f2b3ed +Block 0026 [ 17]: 045c403db709d4f0 +Block 0026 [ 18]: ee934246f22072af +Block 0026 [ 19]: 0f70f344e2c9f578 +Block 0026 [ 20]: 0901b57afe2fadc3 +Block 0026 [ 21]: 7dfed2e4a595459d +Block 0026 [ 22]: fc78ee1cda513a1f +Block 0026 [ 23]: deb4abff7339b932 +Block 0026 [ 24]: f6332454f63314a5 +Block 0026 [ 25]: 261c97b58a557f94 +Block 0026 [ 26]: 26bda71112c57f76 +Block 0026 [ 27]: 63c9cdc690144e61 +Block 0026 [ 28]: 228b202353c930f1 +Block 0026 [ 29]: cd5b0960c4c9a6b9 +Block 0026 [ 30]: f4e6d387d6d7d453 +Block 0026 [ 31]: f54ab733b2f25833 +Block 0026 [ 32]: cc6e4118a0ef810b +Block 0026 [ 33]: 03f01fdf18ea4cba +Block 0026 [ 34]: 5cb4f724e790eaff +Block 0026 [ 35]: 5979ac899ca55c44 +Block 0026 [ 36]: c74ef1a91d4deb67 +Block 0026 [ 37]: e0fc99d3c50934c9 +Block 0026 [ 38]: e2df12194bd1fa08 +Block 0026 [ 39]: 12f4b8caf4503184 +Block 0026 [ 40]: cec9dffaa4d18089 +Block 0026 [ 41]: 613ae59272234838 +Block 0026 [ 42]: cd20d01802e789eb +Block 0026 [ 43]: 710c8602eced8907 +Block 0026 [ 44]: 77c6c58846a6b8e5 +Block 0026 [ 45]: b42064e5052fd0c9 +Block 0026 [ 46]: a442a14edaf934f0 +Block 0026 [ 47]: e36aa911fc51365e +Block 0026 [ 48]: 08994423dd52d9e2 +Block 0026 [ 49]: 3af306d20f71a362 +Block 0026 [ 50]: ddd19978ffbfc195 +Block 0026 [ 51]: a98d1c2853b66a7f +Block 0026 [ 52]: bcfa8f96df34ce90 +Block 0026 [ 53]: aac16a4e7790de1f +Block 0026 [ 54]: cb58692620dfdf6e +Block 0026 [ 55]: 0a159b6511e3ef66 +Block 0026 [ 56]: 37e2a3cec5bfa151 +Block 0026 [ 57]: 790c8919db0afb67 +Block 0026 [ 58]: 0db6896dad7786e0 +Block 0026 [ 59]: 1c508ba2eb33c916 +Block 0026 [ 60]: 7813ac676e47bbd0 +Block 0026 [ 61]: c0c1f531f081a1db +Block 0026 [ 62]: cb790687688c62c9 +Block 0026 [ 63]: 63817244e76d9501 +Block 0026 [ 64]: 26bfb652cc6bdedc +Block 0026 [ 65]: e22e045baa9da7f3 +Block 0026 [ 66]: 302ba10d58dea506 +Block 0026 [ 67]: bba2d7cb5a6c5f63 +Block 0026 [ 68]: d0e81de1bcebf888 +Block 0026 [ 69]: 85afaa8d746c4ad2 +Block 0026 [ 70]: 9d4553d7e1930919 +Block 0026 [ 71]: 7928f64d08bca456 +Block 0026 [ 72]: c05167e3574c5123 +Block 0026 [ 73]: 3279ee18661433d2 +Block 0026 [ 74]: e9e16e636967561a +Block 0026 [ 75]: 34b50294012f9026 +Block 0026 [ 76]: a6706d61a88b965b +Block 0026 [ 77]: b194e35bfb3322be +Block 0026 [ 78]: 9eb1502169ed7f53 +Block 0026 [ 79]: 9ffba512e785acc2 +Block 0026 [ 80]: ad74a73d057a68f1 +Block 0026 [ 81]: d13ad830ec250f12 +Block 0026 [ 82]: 89990d03fcda5d40 +Block 0026 [ 83]: 7f41fe42aab938af +Block 0026 [ 84]: e7b12c40b212bedb +Block 0026 [ 85]: 2271c1588b468df4 +Block 0026 [ 86]: 214975ca6aa32f35 +Block 0026 [ 87]: f0c6aa78d1f1c858 +Block 0026 [ 88]: aaabaf4a63267c00 +Block 0026 [ 89]: 03898ff8906d365f +Block 0026 [ 90]: baa52fe008c7c1eb +Block 0026 [ 91]: 5eb08154e5a18442 +Block 0026 [ 92]: 739afe1d946e5da4 +Block 0026 [ 93]: fd3f3c47a107f99b +Block 0026 [ 94]: a0ae9aae60e91db4 +Block 0026 [ 95]: 688a0f505ad71c75 +Block 0026 [ 96]: e400ef9ef47fbc41 +Block 0026 [ 97]: d4d61a48f3ca6b9e +Block 0026 [ 98]: dc46bcdcae323a05 +Block 0026 [ 99]: 70eb928f22f91eb7 +Block 0026 [100]: 3356b17622be880c +Block 0026 [101]: b26b8de5b961f86d +Block 0026 [102]: c88d10e282a6c105 +Block 0026 [103]: d1a4fa0df2642bbc +Block 0026 [104]: 3c2eb1be6a990b63 +Block 0026 [105]: 7698318905e3d24b +Block 0026 [106]: 25069d30ab91d51c +Block 0026 [107]: 00d22156781af202 +Block 0026 [108]: 872c784c0766ef3f +Block 0026 [109]: 59c0caaad7afb6e5 +Block 0026 [110]: f577e87ab65ef4b8 +Block 0026 [111]: 5f6511ad9970b9f6 +Block 0026 [112]: efd260e4b49fb223 +Block 0026 [113]: ecb1c4b543007a9f +Block 0026 [114]: e9ab27fc3b6f5843 +Block 0026 [115]: 202737490e645c2d +Block 0026 [116]: d56b3e3b827021ca +Block 0026 [117]: 64b68ff331ac5aa9 +Block 0026 [118]: 8cbf36f00083ff2a +Block 0026 [119]: 274ea8aa43adcd0a +Block 0026 [120]: b238ae985e018099 +Block 0026 [121]: c333b2c0e3794b74 +Block 0026 [122]: 7c63f863700f6744 +Block 0026 [123]: b01f279d312af042 +Block 0026 [124]: 5450528f718101e2 +Block 0026 [125]: 8e121c1018d5a808 +Block 0026 [126]: 09f735d16f02fd17 +Block 0026 [127]: 30bdbd4ab589600d +Block 0027 [ 0]: dfb1b7b6e19fef45 +Block 0027 [ 1]: 8a7e2af24e969d87 +Block 0027 [ 2]: 6b743c2dece928b4 +Block 0027 [ 3]: 50275017b269ff38 +Block 0027 [ 4]: fb3756653d2a67d3 +Block 0027 [ 5]: 96b0005894cb9c6f +Block 0027 [ 6]: c77260686102fe4b +Block 0027 [ 7]: 7b4db34395d8d4cc +Block 0027 [ 8]: 6cf098719acb748e +Block 0027 [ 9]: 9f8a882796d1ed33 +Block 0027 [ 10]: d41a525bbf224af7 +Block 0027 [ 11]: 5965acbb144b0ffd +Block 0027 [ 12]: bb174761b0489258 +Block 0027 [ 13]: 2c4b9428c0e54b03 +Block 0027 [ 14]: 3a070ae66305b255 +Block 0027 [ 15]: 31a6e4f4060f33f4 +Block 0027 [ 16]: 67d29285c6b81359 +Block 0027 [ 17]: 1d97e1e82c4bb8ec +Block 0027 [ 18]: 9147a224773267be +Block 0027 [ 19]: cada23a7599100e8 +Block 0027 [ 20]: 39f654ca5affb557 +Block 0027 [ 21]: 653e55fb1fe7d98d +Block 0027 [ 22]: 1fe150b6c5e568df +Block 0027 [ 23]: 11b04652c7425426 +Block 0027 [ 24]: 51ed5eab1d250839 +Block 0027 [ 25]: a157a2654e2f31a7 +Block 0027 [ 26]: 5ac42844add3bfd4 +Block 0027 [ 27]: 092ea7ad07912ed6 +Block 0027 [ 28]: 57be83c5dd581252 +Block 0027 [ 29]: a4150638b5232b78 +Block 0027 [ 30]: 91baf1e273f3292b +Block 0027 [ 31]: 279ddb9ae0f59685 +Block 0027 [ 32]: e1ede6b23ac6ce30 +Block 0027 [ 33]: b65d7f1aceaa298b +Block 0027 [ 34]: 1356d0e6ae4203b4 +Block 0027 [ 35]: b162f2dbe36e9099 +Block 0027 [ 36]: d2efeae7e4eb03bf +Block 0027 [ 37]: 10cd45bd5b941710 +Block 0027 [ 38]: 45ee2d5ff2910df1 +Block 0027 [ 39]: 9e31c67dcc63a2f8 +Block 0027 [ 40]: 6d4047eb18b27369 +Block 0027 [ 41]: 319096d6062b8482 +Block 0027 [ 42]: bc1d42249ce2caba +Block 0027 [ 43]: 95e6c2ecdf193df3 +Block 0027 [ 44]: f581c15ed36c2773 +Block 0027 [ 45]: d09f6bdfe41d9deb +Block 0027 [ 46]: 63359723da79b1ec +Block 0027 [ 47]: b014e747082bed32 +Block 0027 [ 48]: d4fcea83c8489367 +Block 0027 [ 49]: 79264c6a13f6d74b +Block 0027 [ 50]: 23a98835209cb37d +Block 0027 [ 51]: 55cf27731bc71b54 +Block 0027 [ 52]: 579d23c3c8f0d874 +Block 0027 [ 53]: c2d9c527760854e5 +Block 0027 [ 54]: b67733a70e32c7a5 +Block 0027 [ 55]: bf3c8adda26c4378 +Block 0027 [ 56]: 9a4e6986727599a7 +Block 0027 [ 57]: 5d23ac243a3758b7 +Block 0027 [ 58]: 98f6bf7a738c86f1 +Block 0027 [ 59]: 9e6727d5968272f9 +Block 0027 [ 60]: cecb900fe87b7449 +Block 0027 [ 61]: 68171bbfeeec88d6 +Block 0027 [ 62]: c8280dab9e0be4f5 +Block 0027 [ 63]: 786dcdfd9f13e110 +Block 0027 [ 64]: 15ac1cc5a67a123f +Block 0027 [ 65]: 8ba78d88911bb074 +Block 0027 [ 66]: 11d81827a8bf57a8 +Block 0027 [ 67]: 293af374772b85e8 +Block 0027 [ 68]: 29043eae6117e07b +Block 0027 [ 69]: 7d8b59384e757a4f +Block 0027 [ 70]: d7eadfa7fa1a057c +Block 0027 [ 71]: 08020d3f2ed7d3e4 +Block 0027 [ 72]: 3ffd01936555240e +Block 0027 [ 73]: 4172d0d76e3a425e +Block 0027 [ 74]: e80b2670c69d0187 +Block 0027 [ 75]: c8b66b9b7589a2c5 +Block 0027 [ 76]: 3da25f6759ac3ced +Block 0027 [ 77]: b8f45a9416f6c2b4 +Block 0027 [ 78]: 6bd3a3df27308217 +Block 0027 [ 79]: 30f61b3b5818ca8e +Block 0027 [ 80]: 563376db56d040f3 +Block 0027 [ 81]: a6123f082a29fe18 +Block 0027 [ 82]: 98361cd23cddfe24 +Block 0027 [ 83]: 0504e44336ddc550 +Block 0027 [ 84]: 12096c9de0473588 +Block 0027 [ 85]: ccb1faa1fc5c3aef +Block 0027 [ 86]: a285d47e4a11135f +Block 0027 [ 87]: 4e3bef96d97d6995 +Block 0027 [ 88]: 28af4e31ac05b822 +Block 0027 [ 89]: 4421ffa284241116 +Block 0027 [ 90]: eff52a0fd5c8d53a +Block 0027 [ 91]: 3c9105b1e792f051 +Block 0027 [ 92]: c6699665bd597fbe +Block 0027 [ 93]: f4e7bf0aa2f4ab6a +Block 0027 [ 94]: 9ea7d6698bcd3d73 +Block 0027 [ 95]: f7070ccfb227cf25 +Block 0027 [ 96]: 0e73f666dea37687 +Block 0027 [ 97]: c14e8d7de7f64630 +Block 0027 [ 98]: 6868515684a2e725 +Block 0027 [ 99]: 206095a669b7650c +Block 0027 [100]: 48dd79ad5aab7562 +Block 0027 [101]: 2b915476af89bedb +Block 0027 [102]: 9c1387f4f1ff6c7d +Block 0027 [103]: a1c3389ebbc7ad3b +Block 0027 [104]: 6cc1fe26cda5ca6e +Block 0027 [105]: 4175a4fbd5406670 +Block 0027 [106]: 2d268ff39496b430 +Block 0027 [107]: f985b90d6a900624 +Block 0027 [108]: da1b3e8a3ee00a3c +Block 0027 [109]: 6dec5419d237ae08 +Block 0027 [110]: 4833bd3dc940c7e2 +Block 0027 [111]: c0b6e96736180b3a +Block 0027 [112]: 764786ef491a21cc +Block 0027 [113]: 6ab8b494951aa58d +Block 0027 [114]: 1654435146879de9 +Block 0027 [115]: 0c7df427e44d2fcb +Block 0027 [116]: ca7a758ad8d8df28 +Block 0027 [117]: e35ce9f1d8f8c51b +Block 0027 [118]: 1ac1d9afec8e66fa +Block 0027 [119]: 57f25346a9fa27e3 +Block 0027 [120]: 2e79157e350d0ac6 +Block 0027 [121]: 92d09dd28f617b33 +Block 0027 [122]: c400341fd1bc382f +Block 0027 [123]: f83172627c338632 +Block 0027 [124]: 6ebf3b078e99f975 +Block 0027 [125]: 76b1b6be911347ce +Block 0027 [126]: f154a593a33de676 +Block 0027 [127]: c4c34f93aa371a57 +Block 0028 [ 0]: 4e2ac80509bca280 +Block 0028 [ 1]: 53717768028a3f68 +Block 0028 [ 2]: e39dc8aca99e6f66 +Block 0028 [ 3]: 53ebffa315286c27 +Block 0028 [ 4]: 705fba0ce74adda1 +Block 0028 [ 5]: 40cf24b7846fbeea +Block 0028 [ 6]: 08e1a9ca69b52556 +Block 0028 [ 7]: 5742721314aa28d7 +Block 0028 [ 8]: a8e7ba94670950ba +Block 0028 [ 9]: d682cbf431183b33 +Block 0028 [ 10]: 6da4c3e4a20f9af4 +Block 0028 [ 11]: 2ee2e501d76c7f47 +Block 0028 [ 12]: 18c76e756851c749 +Block 0028 [ 13]: d7499ec23d51287f +Block 0028 [ 14]: c8a21d3b456ccd9c +Block 0028 [ 15]: e318a0d2dec093f2 +Block 0028 [ 16]: c8387e0d1103811b +Block 0028 [ 17]: cfd9fafc75da3916 +Block 0028 [ 18]: c90d21f4ec27b430 +Block 0028 [ 19]: eb110a88aaf9e8c4 +Block 0028 [ 20]: fe43290e11e97783 +Block 0028 [ 21]: e711badb49e785ae +Block 0028 [ 22]: 47da30f3dfadd77c +Block 0028 [ 23]: 213005e8eaaec1b2 +Block 0028 [ 24]: 0db1337e0939cded +Block 0028 [ 25]: 79402cfac8f41b81 +Block 0028 [ 26]: 8fb206b462d929d3 +Block 0028 [ 27]: 8bf4edccde1b3f5e +Block 0028 [ 28]: 4fb5750fd001ec5f +Block 0028 [ 29]: 6163db3306eb00c3 +Block 0028 [ 30]: cd2ad0bdcba9703a +Block 0028 [ 31]: a989225aa8e9805c +Block 0028 [ 32]: 66af421dbabc751e +Block 0028 [ 33]: 19ca456193827f8e +Block 0028 [ 34]: ae61e6f8e84ea077 +Block 0028 [ 35]: ea6dad1c09cd284e +Block 0028 [ 36]: f958dbaa44014255 +Block 0028 [ 37]: e9c596f3061ad9cf +Block 0028 [ 38]: a743d258c493448e +Block 0028 [ 39]: dfe0ea446e47b64e +Block 0028 [ 40]: 09656df9863a4d0e +Block 0028 [ 41]: 097514eb0e9fdb0b +Block 0028 [ 42]: dd901308afe3324d +Block 0028 [ 43]: 639c721c16fd4955 +Block 0028 [ 44]: 35972be5aa22701b +Block 0028 [ 45]: 351dd3796340bdac +Block 0028 [ 46]: c31bb6ed7ee361e3 +Block 0028 [ 47]: 5163df958fd4e5af +Block 0028 [ 48]: ce6fdf2ae0a10c27 +Block 0028 [ 49]: b8155894b2d469a2 +Block 0028 [ 50]: 2bf15585424c2500 +Block 0028 [ 51]: e3d4b0bf2e7919b5 +Block 0028 [ 52]: 76d4ea66e8e27e9a +Block 0028 [ 53]: 515cd2ae2772ce7b +Block 0028 [ 54]: 679aa73fe2c89064 +Block 0028 [ 55]: 7997086c96c4a813 +Block 0028 [ 56]: 1a7bb444208bd79b +Block 0028 [ 57]: f21833b017a5400e +Block 0028 [ 58]: d266eef93b3490ff +Block 0028 [ 59]: 6f72683f6295d4c8 +Block 0028 [ 60]: caf38a6e397d6771 +Block 0028 [ 61]: ee88b044901a7a00 +Block 0028 [ 62]: cd05fc2e355e9719 +Block 0028 [ 63]: 3eb58642439c07c2 +Block 0028 [ 64]: 37b3c2e8c31b2ac2 +Block 0028 [ 65]: 298497119f560963 +Block 0028 [ 66]: a851e8e9e3d31be3 +Block 0028 [ 67]: 6d2c3bc9bdca1aff +Block 0028 [ 68]: dccbb833daf4fb92 +Block 0028 [ 69]: 5105f182cb32c48a +Block 0028 [ 70]: 7d8fb4b4881034ec +Block 0028 [ 71]: 21ba5176a4d8b744 +Block 0028 [ 72]: ef773853c451d06b +Block 0028 [ 73]: bfcb4fa94cbd866e +Block 0028 [ 74]: 06698214fef5596d +Block 0028 [ 75]: effbd0e63460d9d0 +Block 0028 [ 76]: a3953f6125c44b22 +Block 0028 [ 77]: d7fd87fdb0dc2d43 +Block 0028 [ 78]: 239ea462ebb0534d +Block 0028 [ 79]: 7924c7edc51d7998 +Block 0028 [ 80]: a9a5c86c148c5b83 +Block 0028 [ 81]: 58fa2801a433f66a +Block 0028 [ 82]: 08b6b4a726074921 +Block 0028 [ 83]: 451e8ed1f1c26f8d +Block 0028 [ 84]: 67b6c5ca1214bdad +Block 0028 [ 85]: 68bccd07601599c4 +Block 0028 [ 86]: 44f1d4401f2662f3 +Block 0028 [ 87]: b33dc98b525a1493 +Block 0028 [ 88]: 5d5c6952b912dcc7 +Block 0028 [ 89]: 31679f3139323221 +Block 0028 [ 90]: 052faed9f3a4e084 +Block 0028 [ 91]: 03bc4bb7589a4dfc +Block 0028 [ 92]: a31038ec95934e61 +Block 0028 [ 93]: 097dc529b1217289 +Block 0028 [ 94]: 4be72bc9cc749312 +Block 0028 [ 95]: 4c1f68597848d992 +Block 0028 [ 96]: b444c7254fa8fb61 +Block 0028 [ 97]: c346543ef84e8a59 +Block 0028 [ 98]: 206e055b3f3f3730 +Block 0028 [ 99]: 078d4ce845c6455c +Block 0028 [100]: 655cfd84ba3aabbe +Block 0028 [101]: 7da6829e216aa0bc +Block 0028 [102]: 435efea8611f7c12 +Block 0028 [103]: 6312478ed7893960 +Block 0028 [104]: c79bc333eaecaf10 +Block 0028 [105]: 8cdd24ffa611f409 +Block 0028 [106]: c716631996a6d371 +Block 0028 [107]: cfa3c11f4ae6ca0f +Block 0028 [108]: e371b34cf30063ec +Block 0028 [109]: 1718fd0b77146341 +Block 0028 [110]: d52a6b12f48603ce +Block 0028 [111]: 42b73ab9ffe6a4b3 +Block 0028 [112]: 452a7b610ce7c398 +Block 0028 [113]: d88650bcaad9c965 +Block 0028 [114]: ba7fa59d0ce7bd70 +Block 0028 [115]: f4b59e0f6fb3a8a0 +Block 0028 [116]: 3e1aeeda56a01d9c +Block 0028 [117]: e9279b366a89e250 +Block 0028 [118]: 778ba4ae19a9af6d +Block 0028 [119]: 72fc6f6559bf14c2 +Block 0028 [120]: 3a118ac1bf4871fb +Block 0028 [121]: 70574565eb2cfc81 +Block 0028 [122]: 1983ab178235c534 +Block 0028 [123]: 5604a37353928f70 +Block 0028 [124]: 7fd8d5cce867e1c8 +Block 0028 [125]: 70d7e1ed61847f19 +Block 0028 [126]: 1a3d93af42c2c9e0 +Block 0028 [127]: ed13f2ac7eedcbef +Block 0029 [ 0]: 33cf93e6cce7be2c +Block 0029 [ 1]: 372711da69651ef5 +Block 0029 [ 2]: 5f181b07cee4fd30 +Block 0029 [ 3]: 67535edc41066807 +Block 0029 [ 4]: 30b4aba2d58eeae1 +Block 0029 [ 5]: dca3d06b611e0aae +Block 0029 [ 6]: c769fab6173e6bfe +Block 0029 [ 7]: 10b0480ec9249fa7 +Block 0029 [ 8]: 41fad98a38fb6f67 +Block 0029 [ 9]: 1d15f3f87fb05962 +Block 0029 [ 10]: cd5704702ccd37e9 +Block 0029 [ 11]: 6d5f3e7b74a6640e +Block 0029 [ 12]: 884fa40221d10e15 +Block 0029 [ 13]: 7f18b8d5e79143f0 +Block 0029 [ 14]: 28f11a889ffef7d1 +Block 0029 [ 15]: 28decff387bee808 +Block 0029 [ 16]: 6907e08a57d2f8de +Block 0029 [ 17]: 54816218bce03e77 +Block 0029 [ 18]: c91274596de25c36 +Block 0029 [ 19]: 6d926b9a697f08d0 +Block 0029 [ 20]: 5601cb11e42287ad +Block 0029 [ 21]: e67a9e7239317578 +Block 0029 [ 22]: 3b347aaecb5bb370 +Block 0029 [ 23]: 993f8601c116adb4 +Block 0029 [ 24]: 4bd559876fa2a678 +Block 0029 [ 25]: 56c572647d6b98c0 +Block 0029 [ 26]: 981d52ed292920a3 +Block 0029 [ 27]: f53f2adbcb37b2d9 +Block 0029 [ 28]: c60e801d5ff660bb +Block 0029 [ 29]: 545c53bd9e909cba +Block 0029 [ 30]: a50059730c68333b +Block 0029 [ 31]: f229e0a49de642d6 +Block 0029 [ 32]: 64a92610a4e81764 +Block 0029 [ 33]: 289c40c21a874f0f +Block 0029 [ 34]: 2d20318544d7a828 +Block 0029 [ 35]: 4e776209bf3163a5 +Block 0029 [ 36]: 4e4d880f59f82d31 +Block 0029 [ 37]: e3450815aa32bb05 +Block 0029 [ 38]: 605c3125306f7b9f +Block 0029 [ 39]: a550b122e1ce00c4 +Block 0029 [ 40]: ec2b5a795837a0bc +Block 0029 [ 41]: 119f699a09a13ad5 +Block 0029 [ 42]: 9a340071e76e84e7 +Block 0029 [ 43]: c54ee0cca8723d1d +Block 0029 [ 44]: 6df24d0c6fcf3814 +Block 0029 [ 45]: 58fbebabf998cc37 +Block 0029 [ 46]: bddf26bf6235a216 +Block 0029 [ 47]: 871ed9ba19f3cf4b +Block 0029 [ 48]: 6299baf2f954ec4e +Block 0029 [ 49]: 444ee538008d2ec6 +Block 0029 [ 50]: 026a21131e13b73c +Block 0029 [ 51]: b080b44e6724b4ed +Block 0029 [ 52]: 6c94166dca97de12 +Block 0029 [ 53]: 356ee8e0bd44b94b +Block 0029 [ 54]: 800a52ccc57fbf98 +Block 0029 [ 55]: 68da4be416925eb6 +Block 0029 [ 56]: bdadbd80576b246f +Block 0029 [ 57]: 44b38c548a2cfd19 +Block 0029 [ 58]: be7f2123f69a9ea4 +Block 0029 [ 59]: 1b8f37faec9a6ab1 +Block 0029 [ 60]: e3c4b10ae4ba4e3b +Block 0029 [ 61]: eee4d03c910fe3b5 +Block 0029 [ 62]: 745cf878722aa984 +Block 0029 [ 63]: 8e7085a568dbb61e +Block 0029 [ 64]: 966da2b5386203be +Block 0029 [ 65]: bc6421ec3d4fc07c +Block 0029 [ 66]: 9d470f80efa5c663 +Block 0029 [ 67]: 8c4a9b72f9ef31c2 +Block 0029 [ 68]: 5f6f0abd618f7409 +Block 0029 [ 69]: 76371da61293896d +Block 0029 [ 70]: 0dc2d295a512ce69 +Block 0029 [ 71]: e87771709fbc90f4 +Block 0029 [ 72]: bb6c4d5e2ce22862 +Block 0029 [ 73]: 90e1af93e71818cb +Block 0029 [ 74]: 55b1c9d0d3313531 +Block 0029 [ 75]: 9688b54c43f4547f +Block 0029 [ 76]: f3b43a51cf8379c9 +Block 0029 [ 77]: 3f64ee2df539ccf9 +Block 0029 [ 78]: 0052afb100e3e6d2 +Block 0029 [ 79]: 556f77896150e82f +Block 0029 [ 80]: 0289300035cc07f5 +Block 0029 [ 81]: e6ac3e026d176d28 +Block 0029 [ 82]: d256dd0979870ade +Block 0029 [ 83]: 52f1edf016820998 +Block 0029 [ 84]: 7990c26012425aa5 +Block 0029 [ 85]: b2fdc9cd71716664 +Block 0029 [ 86]: 499eea789dfd8c6c +Block 0029 [ 87]: a33739d6dc44df83 +Block 0029 [ 88]: 5b2473304ff02ba2 +Block 0029 [ 89]: 6221fe99ce18fd6f +Block 0029 [ 90]: 9b88abce601fb555 +Block 0029 [ 91]: d4255810ae3bd298 +Block 0029 [ 92]: 8a3957699742a79c +Block 0029 [ 93]: c1e90c11b21afdca +Block 0029 [ 94]: 2c7531ce3a0f8ae5 +Block 0029 [ 95]: de3570a2b72d8ab4 +Block 0029 [ 96]: 7058926b75183c6d +Block 0029 [ 97]: b036b85be8608da9 +Block 0029 [ 98]: 4908a8d134b324dc +Block 0029 [ 99]: 9ca9c9a119d9865f +Block 0029 [100]: 05efd6adf2af52c7 +Block 0029 [101]: 53c7a35c9c88758c +Block 0029 [102]: cd4ed200fd912eec +Block 0029 [103]: b1044093fbb535af +Block 0029 [104]: cf5e842a5a94efa1 +Block 0029 [105]: 1954b5b8c49d4462 +Block 0029 [106]: 5f3a71fecff0d4f1 +Block 0029 [107]: ed2705757b17552f +Block 0029 [108]: afd077618cefdad9 +Block 0029 [109]: 007303311b2e4fa6 +Block 0029 [110]: da07ecdc7845ad01 +Block 0029 [111]: 33724bb091b3cad0 +Block 0029 [112]: 4f30c96b7bb5a778 +Block 0029 [113]: dd633315a7413454 +Block 0029 [114]: 1215bea5da3b0263 +Block 0029 [115]: a890ad66a77d0fd9 +Block 0029 [116]: 80f7d436ca7c0534 +Block 0029 [117]: 1ff2f3dbe5171bcb +Block 0029 [118]: 1bd78433a2de661d +Block 0029 [119]: 4fd6406d8b56293b +Block 0029 [120]: d35bcaab27db2e2f +Block 0029 [121]: b83da5153feb2ebe +Block 0029 [122]: 2e7e8954d6c25e01 +Block 0029 [123]: bb47ee3b0fff9cc3 +Block 0029 [124]: 272cffa537b8710b +Block 0029 [125]: 57a15d3001de9398 +Block 0029 [126]: 2321da238e044e17 +Block 0029 [127]: a8bd886d88ba8cf4 +Block 0030 [ 0]: 6ecd3a74b8ca272f +Block 0030 [ 1]: b5dbd6ae9917542c +Block 0030 [ 2]: 92796d78d9eb12a5 +Block 0030 [ 3]: ce36aa84848aeb2b +Block 0030 [ 4]: b2fd7b2b1275d646 +Block 0030 [ 5]: 7924e2d5736dcb1f +Block 0030 [ 6]: dedf8fa9f053c3ce +Block 0030 [ 7]: 3704cd36cdc8489f +Block 0030 [ 8]: f439f82ca1402d2c +Block 0030 [ 9]: f0535c5815780519 +Block 0030 [ 10]: 301ee82afbb2f4f0 +Block 0030 [ 11]: c8cf2dbfae87a7b8 +Block 0030 [ 12]: 9788cfc325f465a2 +Block 0030 [ 13]: d16609c0ffedea6b +Block 0030 [ 14]: 2cd87900f24384b2 +Block 0030 [ 15]: bbd3b932af9756d4 +Block 0030 [ 16]: 4726092cb27622e5 +Block 0030 [ 17]: 23e7a536a9abdc04 +Block 0030 [ 18]: b85c68d32b08ac68 +Block 0030 [ 19]: 01c7cd213e0357bc +Block 0030 [ 20]: 520cbe46d040e8fe +Block 0030 [ 21]: 4e18b68037222145 +Block 0030 [ 22]: 9d0533780ec15042 +Block 0030 [ 23]: 6aa0998dfbd1fc5d +Block 0030 [ 24]: 34b8f0f77fb20531 +Block 0030 [ 25]: 4ced999c154dfcb4 +Block 0030 [ 26]: b9a91ee42ece1d4b +Block 0030 [ 27]: a64ca0a2413435a3 +Block 0030 [ 28]: a154c9bfe4dd0880 +Block 0030 [ 29]: a9319f178c7ad588 +Block 0030 [ 30]: 233d887655e00f93 +Block 0030 [ 31]: 0ee0c36c2966e538 +Block 0030 [ 32]: 00a6f9b7fb4cde72 +Block 0030 [ 33]: b6b0777f23d1b2ab +Block 0030 [ 34]: 006222e11286472e +Block 0030 [ 35]: 2fe7e3124ceef0d1 +Block 0030 [ 36]: ff6e89a72dcd81f3 +Block 0030 [ 37]: 2df079639e87e734 +Block 0030 [ 38]: fe888a1af0b870c5 +Block 0030 [ 39]: 77a5dbbea31587ae +Block 0030 [ 40]: 387f86968288fe9b +Block 0030 [ 41]: 262a7864cb6144ed +Block 0030 [ 42]: 077e0a154fa50c43 +Block 0030 [ 43]: 119043b23af44739 +Block 0030 [ 44]: b7aee252cad97cc0 +Block 0030 [ 45]: 711c23dd4c5a1695 +Block 0030 [ 46]: ed051bb2a391b7ce +Block 0030 [ 47]: e973e2a22e396475 +Block 0030 [ 48]: a0bc6bfa849824f3 +Block 0030 [ 49]: e9f7a93f57279b83 +Block 0030 [ 50]: acb04d04db307e5d +Block 0030 [ 51]: e3c2b1944e0aa0c4 +Block 0030 [ 52]: f84e30a19a08949d +Block 0030 [ 53]: aa41b6af0f7682a4 +Block 0030 [ 54]: d53e4ac5eec1401e +Block 0030 [ 55]: 8a4d7682c811c47d +Block 0030 [ 56]: 6b13be440a301a75 +Block 0030 [ 57]: fec09305aa9cb47f +Block 0030 [ 58]: 5b49e2e6139c6af5 +Block 0030 [ 59]: 54b9144ef244c041 +Block 0030 [ 60]: 37d475e4e8c7162f +Block 0030 [ 61]: cea7a663067c9675 +Block 0030 [ 62]: be5354eeb5e8a1e1 +Block 0030 [ 63]: e775a094cc07905a +Block 0030 [ 64]: 291d525c7f6b3a27 +Block 0030 [ 65]: 7bef57e5526868d6 +Block 0030 [ 66]: 6f54b6cdfeb7227f +Block 0030 [ 67]: 93282dd954e1bf49 +Block 0030 [ 68]: 57c18e7631bbc297 +Block 0030 [ 69]: c2d3178a04d2d48c +Block 0030 [ 70]: 44127507cdadbae6 +Block 0030 [ 71]: 1c3c2e2ecbbd89ad +Block 0030 [ 72]: 509c90bc050d19b7 +Block 0030 [ 73]: 464023c2557ea4c4 +Block 0030 [ 74]: d99c16a1de32e6a6 +Block 0030 [ 75]: ae0176330021ff02 +Block 0030 [ 76]: b3fe389546fd5b6c +Block 0030 [ 77]: 8498583a9577b1da +Block 0030 [ 78]: 915d4d61a3b08f7d +Block 0030 [ 79]: 3578b5b049de581b +Block 0030 [ 80]: a80612a42043a474 +Block 0030 [ 81]: a59df7ec56ed0e61 +Block 0030 [ 82]: ba3cf869d25aedc6 +Block 0030 [ 83]: 2049762e0d3ca8fc +Block 0030 [ 84]: 8d771e0161f3a0eb +Block 0030 [ 85]: 98d0872d072574e7 +Block 0030 [ 86]: 4cfe5d48b8c10515 +Block 0030 [ 87]: 50c9043d923a50c7 +Block 0030 [ 88]: 5c910292699c0b89 +Block 0030 [ 89]: 95e4bc9a8f04e102 +Block 0030 [ 90]: 47b404d915b1f09a +Block 0030 [ 91]: f310c30b79c434c5 +Block 0030 [ 92]: a32cfc80bfd999af +Block 0030 [ 93]: ba6fb895832005e7 +Block 0030 [ 94]: c940b07d4bbac8d8 +Block 0030 [ 95]: b927cacd864b8ef4 +Block 0030 [ 96]: 7f86cbec290ce150 +Block 0030 [ 97]: 44019f102bbc346c +Block 0030 [ 98]: f4922e3a79972b25 +Block 0030 [ 99]: 57a11cec2904209b +Block 0030 [100]: ed500a5896662d38 +Block 0030 [101]: 40a1e81c7710aebb +Block 0030 [102]: 0f7c55b652f43c6c +Block 0030 [103]: 76fa83f4935552b0 +Block 0030 [104]: fda0042a566c8419 +Block 0030 [105]: bc669a6b2f036242 +Block 0030 [106]: 5ea211557564cd1e +Block 0030 [107]: e2b66a7d127fb62d +Block 0030 [108]: fb0497bb58905fd3 +Block 0030 [109]: 9bf162918404c986 +Block 0030 [110]: dabc64ecba15c2a5 +Block 0030 [111]: ff69083ee852f81b +Block 0030 [112]: 3739cb3c2a316ae1 +Block 0030 [113]: 0914028c39ec51de +Block 0030 [114]: 38261471477e87eb +Block 0030 [115]: 09681ad936fd9609 +Block 0030 [116]: baba75611ec7f474 +Block 0030 [117]: 5a587814bbc26e41 +Block 0030 [118]: 7929e20b70736dbb +Block 0030 [119]: a1c3fe1ad20fccde +Block 0030 [120]: 40789b143639d83c +Block 0030 [121]: 1f54a0c9767d4704 +Block 0030 [122]: cf2fa83d66dd7b8c +Block 0030 [123]: e8d8978cbe11894d +Block 0030 [124]: 9c75ca73199f324b +Block 0030 [125]: 06818c0d4dd46001 +Block 0030 [126]: 4f10eefc69bd7d4e +Block 0030 [127]: 9c35ccb7d1b407a3 +Block 0031 [ 0]: 7b2c886a0becf8aa +Block 0031 [ 1]: a961a68cd9802059 +Block 0031 [ 2]: c17906242f91d148 +Block 0031 [ 3]: 07b5168a9ba5dc20 +Block 0031 [ 4]: 7aa37588acbb43f7 +Block 0031 [ 5]: 03b0d1e09eb1e873 +Block 0031 [ 6]: c12f280456f1599a +Block 0031 [ 7]: 1b9eb2aa25f4fe4a +Block 0031 [ 8]: 92a506c1c444d06c +Block 0031 [ 9]: ab0a55ef35918793 +Block 0031 [ 10]: af635b968f49a6ca +Block 0031 [ 11]: 314f6856774229fb +Block 0031 [ 12]: 588edd661fab5266 +Block 0031 [ 13]: 3067a959a20de573 +Block 0031 [ 14]: ce8587775df42928 +Block 0031 [ 15]: 998f789c66194f76 +Block 0031 [ 16]: fa5cefe6d2653f8c +Block 0031 [ 17]: c9e69ab9e1cca147 +Block 0031 [ 18]: aa8ea6e905228faa +Block 0031 [ 19]: ffaba13e3b61b88d +Block 0031 [ 20]: db2eaa23530363ea +Block 0031 [ 21]: a64096fddc020f87 +Block 0031 [ 22]: a35c94cbd4f04a9f +Block 0031 [ 23]: e8396a978198ec52 +Block 0031 [ 24]: 5e7a8437b42c9016 +Block 0031 [ 25]: f1c65654317c0508 +Block 0031 [ 26]: 08a818ddbf2a23fd +Block 0031 [ 27]: cb3ef670786fcae9 +Block 0031 [ 28]: e83f4fc405e1d49f +Block 0031 [ 29]: 94b089965afe8871 +Block 0031 [ 30]: 92008c2a75103b5a +Block 0031 [ 31]: c9ce40dcb0ae0fff +Block 0031 [ 32]: 31e7b05a84523cbe +Block 0031 [ 33]: 1b854b7afd4321aa +Block 0031 [ 34]: e611bbf67f403d94 +Block 0031 [ 35]: e7ddb82fcf732908 +Block 0031 [ 36]: 8afea8045337f395 +Block 0031 [ 37]: 5a4b29a0464a87fd +Block 0031 [ 38]: ddc4b39b66d51a4e +Block 0031 [ 39]: 8a962a2a7848e9c7 +Block 0031 [ 40]: c553d559a2dbc2f7 +Block 0031 [ 41]: f0d5b10beb21bccb +Block 0031 [ 42]: 29a8b6322d76864d +Block 0031 [ 43]: 30a6a1d4b043ee12 +Block 0031 [ 44]: 0f8698a6f49cbbf8 +Block 0031 [ 45]: 0271710fca1ae0e6 +Block 0031 [ 46]: 86b474e9cc978929 +Block 0031 [ 47]: 6381d0f8c249ca80 +Block 0031 [ 48]: ae93ff832984a78b +Block 0031 [ 49]: e3806eb3831109ab +Block 0031 [ 50]: c4bb916929ec7540 +Block 0031 [ 51]: 587ce5ea6a14b5af +Block 0031 [ 52]: 81ae14d279dd55ce +Block 0031 [ 53]: b4490e4a095cccc7 +Block 0031 [ 54]: b5b74756d1a47600 +Block 0031 [ 55]: 229f5aa2436f8fd4 +Block 0031 [ 56]: f4dda68045c81478 +Block 0031 [ 57]: d307c85dd48a2344 +Block 0031 [ 58]: 433ad4706e5d90f9 +Block 0031 [ 59]: e74575dbb844a038 +Block 0031 [ 60]: a89f0718e3393ce1 +Block 0031 [ 61]: 588fe47981e7946b +Block 0031 [ 62]: 6518231d42469f4a +Block 0031 [ 63]: 746c07f616058dfc +Block 0031 [ 64]: 3c968cf79bb87403 +Block 0031 [ 65]: 8c4cd47f02979496 +Block 0031 [ 66]: 0303646363f1dbe4 +Block 0031 [ 67]: dcdf94b5679bbdab +Block 0031 [ 68]: 8e92abfffa0073b0 +Block 0031 [ 69]: 712d21d6945e5d7d +Block 0031 [ 70]: 09114fac05fe6744 +Block 0031 [ 71]: 4568bcb4a9fa8b29 +Block 0031 [ 72]: 6608c183890263d6 +Block 0031 [ 73]: 1f74ccf6ab150884 +Block 0031 [ 74]: facdc83fa2c1c817 +Block 0031 [ 75]: 7ae035fa8ed0ce1b +Block 0031 [ 76]: 29f7d651507d76df +Block 0031 [ 77]: e73b4c7efb5671dc +Block 0031 [ 78]: c74deda09b63447d +Block 0031 [ 79]: 629a595aaa37a3c2 +Block 0031 [ 80]: 751fa8d3d07f1156 +Block 0031 [ 81]: 7c8a83446320004d +Block 0031 [ 82]: 993186df8a1ae482 +Block 0031 [ 83]: 6bf5f5c6071b66c1 +Block 0031 [ 84]: d495bb47b2ef1361 +Block 0031 [ 85]: 528404d7247a455f +Block 0031 [ 86]: 8cc33913d6ef8cb6 +Block 0031 [ 87]: 70c0b0ce7fefbd05 +Block 0031 [ 88]: a58a8a3c7c246774 +Block 0031 [ 89]: 2ffda09b4d88cb6b +Block 0031 [ 90]: 3fb07d2cd72192fd +Block 0031 [ 91]: 84689e06eb122836 +Block 0031 [ 92]: e2f659a255c97fc2 +Block 0031 [ 93]: a4e8983f8e3f2363 +Block 0031 [ 94]: f5c06cdf6ac58be1 +Block 0031 [ 95]: cce957feb8dc694e +Block 0031 [ 96]: 955f7bd29f980a3e +Block 0031 [ 97]: 5e6a9b06b958d9eb +Block 0031 [ 98]: 13e2ae511f9fcf95 +Block 0031 [ 99]: 7e90dc5738154a96 +Block 0031 [100]: 2fbff3198bc7dfbb +Block 0031 [101]: 029b171c3879b4e5 +Block 0031 [102]: 6b2e35fc0ec55726 +Block 0031 [103]: 8b7618296c29640b +Block 0031 [104]: aa6da19845af6feb +Block 0031 [105]: af2aab61252a6652 +Block 0031 [106]: 70107491337b1baf +Block 0031 [107]: d01fa41824afe775 +Block 0031 [108]: 2f49d846b7e7fde5 +Block 0031 [109]: 36de3a765cd99df7 +Block 0031 [110]: e1892ef5e7bf72e5 +Block 0031 [111]: cdb4e92f199df6f7 +Block 0031 [112]: ac68f1f63533a059 +Block 0031 [113]: 54d709cf88689da1 +Block 0031 [114]: d22355579e725146 +Block 0031 [115]: f68214076ccce3f6 +Block 0031 [116]: 061f07bc4b3f9526 +Block 0031 [117]: 93ca7252bd067ab8 +Block 0031 [118]: 25fac18a5fb39a86 +Block 0031 [119]: f823ae791d41fe57 +Block 0031 [120]: 5b72f046297886bc +Block 0031 [121]: cbae98da46154192 +Block 0031 [122]: c087b1a1b5ede419 +Block 0031 [123]: 2c05d9fa80a8f2ff +Block 0031 [124]: 3921a5c7788362de +Block 0031 [125]: e0b99140444ee63a +Block 0031 [126]: 9cb08bbd62f6ecb5 +Block 0031 [127]: 7863ba7c31e4780d + + After pass 2: +Block 0000 [ 0]: 074ffcc2d6211662 +Block 0000 [ 1]: 23dc267c4f3d1696 +Block 0000 [ 2]: 067781fb67b4a7cd +Block 0000 [ 3]: 4405600ea87c3236 +Block 0000 [ 4]: 5c7d7668ebdd0f48 +Block 0000 [ 5]: 2c158c83d6a8dfc6 +Block 0000 [ 6]: a51c8b5beac9a07b +Block 0000 [ 7]: 1cae283e1849d908 +Block 0000 [ 8]: 67d9e3f64caa972d +Block 0000 [ 9]: fc6754c829fc7cba +Block 0000 [ 10]: 017dfa540b6c9bc9 +Block 0000 [ 11]: 39b736ea7cdf7b0b +Block 0000 [ 12]: 1f37d704a41cb903 +Block 0000 [ 13]: 3aecddd32b254afa +Block 0000 [ 14]: 4700d23ff95830df +Block 0000 [ 15]: 8d21806d416feb40 +Block 0000 [ 16]: 5053c210b1f3f1a6 +Block 0000 [ 17]: c7cac96030349349 +Block 0000 [ 18]: b980e68ee8d6b5c0 +Block 0000 [ 19]: 02834d681a06cd74 +Block 0000 [ 20]: 02ac55d5bb3f15a2 +Block 0000 [ 21]: e67d07df976b00a1 +Block 0000 [ 22]: a439d570908a6dfc +Block 0000 [ 23]: 50f092cbe300c2fc +Block 0000 [ 24]: befdffab9975f1e4 +Block 0000 [ 25]: f4f4600d82cd417d +Block 0000 [ 26]: 17f6612758926fc5 +Block 0000 [ 27]: dfd8c28f34a09aed +Block 0000 [ 28]: 24584d701e1a84e2 +Block 0000 [ 29]: 47c5add8e8460639 +Block 0000 [ 30]: 0f9c8e1641cf56bb +Block 0000 [ 31]: 9ec95ca5bcff5620 +Block 0000 [ 32]: 97b7cdda0a711063 +Block 0000 [ 33]: 63853fcecb6b6b8a +Block 0000 [ 34]: 5df2cde7e36bafc7 +Block 0000 [ 35]: d7e0e9b81910dd50 +Block 0000 [ 36]: 399ac6865b269713 +Block 0000 [ 37]: 8376d957a91e502e +Block 0000 [ 38]: b9ccdb00eced58d8 +Block 0000 [ 39]: 0ca46bce53d80ec1 +Block 0000 [ 40]: 403e6af6dde5401a +Block 0000 [ 41]: 79041a1ee46d5de5 +Block 0000 [ 42]: 6478018547a45c10 +Block 0000 [ 43]: b586c73694a50ad5 +Block 0000 [ 44]: 19c09a72ffb077c6 +Block 0000 [ 45]: cd4ed30f1950c280 +Block 0000 [ 46]: 30a24c09eb9f26e3 +Block 0000 [ 47]: a5a3e3544f299ca2 +Block 0000 [ 48]: 4daf9512c147bf09 +Block 0000 [ 49]: 566c7455847c148f +Block 0000 [ 50]: 9d1b5569164a3cd2 +Block 0000 [ 51]: 89c678b2ab335957 +Block 0000 [ 52]: 32d2c5727eaa685b +Block 0000 [ 53]: 6cc29cae8d088214 +Block 0000 [ 54]: 217d81e9f0fefbe2 +Block 0000 [ 55]: 639ac623a21feded +Block 0000 [ 56]: 235e78e584141ede +Block 0000 [ 57]: 7919e75c6d3dab69 +Block 0000 [ 58]: 6a876509af846fd1 +Block 0000 [ 59]: 215a62e84a5dda9b +Block 0000 [ 60]: 1be8f91ab4628c1a +Block 0000 [ 61]: 1d6526223d2ce03d +Block 0000 [ 62]: a62350b8d2991ef3 +Block 0000 [ 63]: e3256eebc2e9743d +Block 0000 [ 64]: 7d3c911dde4b729d +Block 0000 [ 65]: bc30bb8cbadaea85 +Block 0000 [ 66]: b7794d58951616b7 +Block 0000 [ 67]: ba9d59b655e8426d +Block 0000 [ 68]: 3e84c80234db69df +Block 0000 [ 69]: 57c75d2442885b3c +Block 0000 [ 70]: 19abdeb8612da37f +Block 0000 [ 71]: ec8efaf2e2d2e65c +Block 0000 [ 72]: 87692796d1f2e210 +Block 0000 [ 73]: f6d623948e49ce7b +Block 0000 [ 74]: 8e96e29c9a2fa442 +Block 0000 [ 75]: 54bb73c34877db70 +Block 0000 [ 76]: 98dad77daadd139d +Block 0000 [ 77]: 0f794bfaf84e29b0 +Block 0000 [ 78]: 2b34a73157d7ef5c +Block 0000 [ 79]: 8ecb005134ac5b8a +Block 0000 [ 80]: 793d55e30eb5485c +Block 0000 [ 81]: de517434bcf0cafa +Block 0000 [ 82]: 7ea4f8ecbc183f32 +Block 0000 [ 83]: 72a35118ac328bce +Block 0000 [ 84]: f4275ff7a034f425 +Block 0000 [ 85]: e95a8c458757ffd0 +Block 0000 [ 86]: 64fd3ce6e85f934e +Block 0000 [ 87]: d9c027d06733c4e6 +Block 0000 [ 88]: 6e7eb7d2f3f4b2a4 +Block 0000 [ 89]: f6b9860481ea6f18 +Block 0000 [ 90]: 9d883d8955179f0c +Block 0000 [ 91]: b1ba223d9186b36f +Block 0000 [ 92]: 1989b62b3c499c02 +Block 0000 [ 93]: a292a87cacf94dc5 +Block 0000 [ 94]: ef8cd9123be7351f +Block 0000 [ 95]: 98c5673b3bb4e050 +Block 0000 [ 96]: 300366627841dc69 +Block 0000 [ 97]: 2834511a487aca0e +Block 0000 [ 98]: 0b4fa280d5e7967c +Block 0000 [ 99]: da97469d8738dfdb +Block 0000 [100]: d00c6e9085aba92a +Block 0000 [101]: 029e1930514f1d49 +Block 0000 [102]: 7749ba0fb768e9ef +Block 0000 [103]: 631f5377678c24ee +Block 0000 [104]: 7997bd3d7d2b3ddb +Block 0000 [105]: 63170d21238ffc00 +Block 0000 [106]: 4bae77aba388d1af +Block 0000 [107]: 9ff14fc9d20615f7 +Block 0000 [108]: 8cc4d7f451e5ea62 +Block 0000 [109]: d317157783a6278a +Block 0000 [110]: 4a0a192d4102224f +Block 0000 [111]: 56bda18173b56c75 +Block 0000 [112]: c194d8f1db07f888 +Block 0000 [113]: e08781cc46e76541 +Block 0000 [114]: d1104ae30639dc72 +Block 0000 [115]: 81f4c81422544029 +Block 0000 [116]: 36c3fbba9c223820 +Block 0000 [117]: fa92e2c95a6ac010 +Block 0000 [118]: 0e5e2a5f620020cc +Block 0000 [119]: b08063b69cd858eb +Block 0000 [120]: 63d32af9ea60f5c7 +Block 0000 [121]: 3815e273927c8b44 +Block 0000 [122]: 01aabcd9163ee1fb +Block 0000 [123]: 332241a4b6dd26a1 +Block 0000 [124]: b801a887e60e88b1 +Block 0000 [125]: 730a4b559c209261 +Block 0000 [126]: 6cef830772dad5c6 +Block 0000 [127]: b1080b96394ceb2b +Block 0001 [ 0]: 35578285c65e90fd +Block 0001 [ 1]: 4bb9cc0c6d2efc55 +Block 0001 [ 2]: 7baa171e89c44f1a +Block 0001 [ 3]: b5248ac1751059d1 +Block 0001 [ 4]: 6bad1484d694d0e0 +Block 0001 [ 5]: f93622b535148cc3 +Block 0001 [ 6]: 751a6fe829a61d29 +Block 0001 [ 7]: e8c3aca31e64ab54 +Block 0001 [ 8]: 93745f7637ef0a30 +Block 0001 [ 9]: a49ed01e2e6e0753 +Block 0001 [ 10]: c04456bd7e5bfd5b +Block 0001 [ 11]: 3a7cb2b5b5fa1bcd +Block 0001 [ 12]: 8ba5050fca0be409 +Block 0001 [ 13]: 0fe0d194cbe241b0 +Block 0001 [ 14]: f767dbead0b52cba +Block 0001 [ 15]: 35e72a7bb50d7144 +Block 0001 [ 16]: 143a86cf490b4b49 +Block 0001 [ 17]: 3ceb93f75eacf023 +Block 0001 [ 18]: 55f78adb9892524b +Block 0001 [ 19]: 97a9c8c671792a2b +Block 0001 [ 20]: bd930f3e27a8e299 +Block 0001 [ 21]: f48dc858d7623a19 +Block 0001 [ 22]: e4dc1f425b078cd9 +Block 0001 [ 23]: 40abe54c27a1df54 +Block 0001 [ 24]: 0f13ecb6b1f801ae +Block 0001 [ 25]: 40e76bbc9e8e0359 +Block 0001 [ 26]: 5a1fba7aa341f9fb +Block 0001 [ 27]: f6cb6c0dc939b786 +Block 0001 [ 28]: 5f3163fc202e2c15 +Block 0001 [ 29]: a060056daefacd6d +Block 0001 [ 30]: 962582e26876c45d +Block 0001 [ 31]: 8f2ae61de120c15c +Block 0001 [ 32]: 1798a6b18d5df0fa +Block 0001 [ 33]: f35379efc89f3185 +Block 0001 [ 34]: 9aa653f4d27037d4 +Block 0001 [ 35]: f55d25a85ef70083 +Block 0001 [ 36]: e0b5fa445529ad98 +Block 0001 [ 37]: 90cd2452561901c0 +Block 0001 [ 38]: e13e29ac39c5c75b +Block 0001 [ 39]: 3b5f3754b72ad946 +Block 0001 [ 40]: 0b74c97f8530631e +Block 0001 [ 41]: f205c031d6eab47a +Block 0001 [ 42]: 0392f102d95bedd0 +Block 0001 [ 43]: df8cc06fd357b932 +Block 0001 [ 44]: adba22945f6ea54b +Block 0001 [ 45]: 245c28eb786846fc +Block 0001 [ 46]: 1374137daa585fa4 +Block 0001 [ 47]: 9bbfdb864d4a44a4 +Block 0001 [ 48]: fa43c6b21ca5e381 +Block 0001 [ 49]: 7fcd01d29f0cf1b5 +Block 0001 [ 50]: 26ed604d9cccb91d +Block 0001 [ 51]: 61f83421bd6c1f23 +Block 0001 [ 52]: 1f8b6d81b8e3e293 +Block 0001 [ 53]: ae720a3cd9e026e1 +Block 0001 [ 54]: 799793cee15b9fcc +Block 0001 [ 55]: 50a2920934111544 +Block 0001 [ 56]: ae98b61798fe4197 +Block 0001 [ 57]: d09b498bcc92caa4 +Block 0001 [ 58]: 626405a3f141ac39 +Block 0001 [ 59]: 3b8fc5a9403eff81 +Block 0001 [ 60]: 26be736898a3d356 +Block 0001 [ 61]: fec9b55fe7400706 +Block 0001 [ 62]: 7b42f7e3dc25495d +Block 0001 [ 63]: 0ad2b5ac04f2455a +Block 0001 [ 64]: f9cee4116bb71092 +Block 0001 [ 65]: 017640c28e88caf5 +Block 0001 [ 66]: 4d9a590bd7959d08 +Block 0001 [ 67]: e0889cdd7e722e2b +Block 0001 [ 68]: b864c81b4f0a72ab +Block 0001 [ 69]: f13be1af5f968168 +Block 0001 [ 70]: a18c60f1bca699b5 +Block 0001 [ 71]: b0d6efd7f979ab4b +Block 0001 [ 72]: 44251fa7bd97a8ec +Block 0001 [ 73]: 80fc637798575c3d +Block 0001 [ 74]: b49d9f0a356332a0 +Block 0001 [ 75]: 577788eb3e3cde4e +Block 0001 [ 76]: 4b0f73f577b3bf93 +Block 0001 [ 77]: 0703cffd01ec20c4 +Block 0001 [ 78]: 57b7fad9a047f157 +Block 0001 [ 79]: 3d4a385b573bf8f4 +Block 0001 [ 80]: 3ec7cd6e9a586917 +Block 0001 [ 81]: 30502a8f0d6b3b3b +Block 0001 [ 82]: 5827740f69f6ed7e +Block 0001 [ 83]: e772f948ef87d9e8 +Block 0001 [ 84]: 113292b8eb726923 +Block 0001 [ 85]: e1a0f99b9b4c7f45 +Block 0001 [ 86]: 849ca6d49a8beb6f +Block 0001 [ 87]: 899e64706cc6cc22 +Block 0001 [ 88]: 762aac2687b27c1e +Block 0001 [ 89]: bec687a1a0ff5f67 +Block 0001 [ 90]: a6d0d4c0dd017184 +Block 0001 [ 91]: 7184b936a5192649 +Block 0001 [ 92]: 8a0b189778c5c2f9 +Block 0001 [ 93]: 388c8aa99414a343 +Block 0001 [ 94]: bfa9e7e8b944a012 +Block 0001 [ 95]: 0bec06d22c5cbc68 +Block 0001 [ 96]: 48cf01fc006a932a +Block 0001 [ 97]: 4eca2a3ce6a9ede5 +Block 0001 [ 98]: 5de361340ad870d4 +Block 0001 [ 99]: 991c300d989769b7 +Block 0001 [100]: e81e6ff5168dea46 +Block 0001 [101]: b80b74c2dea3598b +Block 0001 [102]: 4178c7a329ec33f9 +Block 0001 [103]: 821b69f7ec159cb4 +Block 0001 [104]: 3fbcf7aed8b16057 +Block 0001 [105]: 8ff6fd8c8dbb7d97 +Block 0001 [106]: 00999cc3dfd68ed5 +Block 0001 [107]: 4b1125750e10c124 +Block 0001 [108]: c4faa4346465f470 +Block 0001 [109]: 9228b997dec487a9 +Block 0001 [110]: 7a77a1f7775085a7 +Block 0001 [111]: 76c87a4eb0814378 +Block 0001 [112]: 9d1dc217f8205567 +Block 0001 [113]: 192082947d040aff +Block 0001 [114]: 835a0e7dc57147a4 +Block 0001 [115]: d658d49131e2034f +Block 0001 [116]: 8178295354854b4b +Block 0001 [117]: 546509eed0804fd2 +Block 0001 [118]: dad30f4cad39632f +Block 0001 [119]: 7067a93d88b400b3 +Block 0001 [120]: f208ab50a921620b +Block 0001 [121]: 11d3c5a308076062 +Block 0001 [122]: 66cc7ff9c93e6d86 +Block 0001 [123]: d6d88bbd8f39f66a +Block 0001 [124]: 2267ded47cd0fd58 +Block 0001 [125]: 3f54c246e26607c7 +Block 0001 [126]: 90549bbe29fd6b8b +Block 0001 [127]: 13ee9844392f8eb3 +Block 0002 [ 0]: 73d51d413b4c53d0 +Block 0002 [ 1]: 76ae856cbdb336a0 +Block 0002 [ 2]: af1b19667ebc609b +Block 0002 [ 3]: 79e1597f33187d55 +Block 0002 [ 4]: 6a65de429602a2a3 +Block 0002 [ 5]: f1143254e35f0f75 +Block 0002 [ 6]: e8e367d45b989e55 +Block 0002 [ 7]: 7bcd857863800596 +Block 0002 [ 8]: a849576915058869 +Block 0002 [ 9]: 84e96cfd017f8259 +Block 0002 [ 10]: 5faa617589a4bb6e +Block 0002 [ 11]: 9779d55b049906f4 +Block 0002 [ 12]: bf6b51a7c73464ac +Block 0002 [ 13]: d1362f3e2c38a1fc +Block 0002 [ 14]: 1f009be2c745a955 +Block 0002 [ 15]: a9cf27c109ab7ae6 +Block 0002 [ 16]: 9bae95cb88fd2bfd +Block 0002 [ 17]: aa3fc5e576e3f2e9 +Block 0002 [ 18]: 727a888a9cdf5d82 +Block 0002 [ 19]: e29325278794849d +Block 0002 [ 20]: aa579a642dc5efc0 +Block 0002 [ 21]: e64d2aa10ca93a83 +Block 0002 [ 22]: fbf9a497307c6789 +Block 0002 [ 23]: 63dec585b76b0e36 +Block 0002 [ 24]: 9914fe6ae8f7902e +Block 0002 [ 25]: 9f183f1f898a2eec +Block 0002 [ 26]: 871dd6f0c5ed7391 +Block 0002 [ 27]: 6a998c598e62d632 +Block 0002 [ 28]: ae4fb7d7d044a498 +Block 0002 [ 29]: 45bb02b68c94dabe +Block 0002 [ 30]: 0ee5b5b2a12fedcb +Block 0002 [ 31]: f81100966671170e +Block 0002 [ 32]: bc10a0e55f0581e3 +Block 0002 [ 33]: 59fa2ae5ae73bc1a +Block 0002 [ 34]: 8734ef9fd26b2592 +Block 0002 [ 35]: 8b1125062051701d +Block 0002 [ 36]: b8e68fc7dfe6e175 +Block 0002 [ 37]: 4e350c55108d1b95 +Block 0002 [ 38]: a92a1a6e50453305 +Block 0002 [ 39]: 12ae32bee16cbc4b +Block 0002 [ 40]: e63b524d74f88184 +Block 0002 [ 41]: 1c32b08c95f570e2 +Block 0002 [ 42]: e1f63121e0c49256 +Block 0002 [ 43]: e8908ea1b577e153 +Block 0002 [ 44]: bf670a809c56f86a +Block 0002 [ 45]: 0bd87114ea78aa82 +Block 0002 [ 46]: a5f83d398c0518c8 +Block 0002 [ 47]: caf9fc4fd0d13fac +Block 0002 [ 48]: 87dc556761c3b84e +Block 0002 [ 49]: b271d201d69d87ba +Block 0002 [ 50]: 60afbeeb05e32ce6 +Block 0002 [ 51]: 3f7d0c4c77690400 +Block 0002 [ 52]: 827402ca4c4b7568 +Block 0002 [ 53]: cc1490ac87cae9ab +Block 0002 [ 54]: 5f0c0be02bfee0d6 +Block 0002 [ 55]: ee55646ea303f7ee +Block 0002 [ 56]: 760b0ef4f4be1085 +Block 0002 [ 57]: f6e1dda0ba5aa3ec +Block 0002 [ 58]: 64d813c90f235d07 +Block 0002 [ 59]: 7e243d64c004d7cf +Block 0002 [ 60]: 9ba0e4619f9321b1 +Block 0002 [ 61]: 9af7d15278ce6e9c +Block 0002 [ 62]: 84429fe41e908a5f +Block 0002 [ 63]: 087d31f94451179a +Block 0002 [ 64]: 6bd8e211a6776757 +Block 0002 [ 65]: bce0156f33df21ff +Block 0002 [ 66]: b89d728cb0ea1478 +Block 0002 [ 67]: 1d38586723a2aaf6 +Block 0002 [ 68]: 7fdf415d588153a9 +Block 0002 [ 69]: 784414ab43287466 +Block 0002 [ 70]: 7549c68a0508a290 +Block 0002 [ 71]: fb6e20ff908acfbc +Block 0002 [ 72]: 1b7ea5812d994dd2 +Block 0002 [ 73]: eceb8fb8ecc00544 +Block 0002 [ 74]: 6a1db08dcf131415 +Block 0002 [ 75]: ef12b7be1c98f06d +Block 0002 [ 76]: 4bab0815544ff51c +Block 0002 [ 77]: d7005204797a3a09 +Block 0002 [ 78]: 3a62509e74742fb6 +Block 0002 [ 79]: d299457155448ac2 +Block 0002 [ 80]: 97f4f9620deb14f3 +Block 0002 [ 81]: 569cd97b9e8554b1 +Block 0002 [ 82]: 971aa2f58c986a44 +Block 0002 [ 83]: d2462db7dd1dc03f +Block 0002 [ 84]: f0709d7bc71246be +Block 0002 [ 85]: 0b25b74b0b86e738 +Block 0002 [ 86]: b685b14a81c45aa8 +Block 0002 [ 87]: 1a512dc11da0a043 +Block 0002 [ 88]: 47b0149e3e3ac09c +Block 0002 [ 89]: 675a13653235da5d +Block 0002 [ 90]: 79cd73d9561f7abe +Block 0002 [ 91]: 2b7e85da8095a630 +Block 0002 [ 92]: ea9ee50b427a24f0 +Block 0002 [ 93]: cf3a906fc784dee6 +Block 0002 [ 94]: c5e846fbb3cef89b +Block 0002 [ 95]: d2e00082f5bd5d75 +Block 0002 [ 96]: 311bc46892a29e3f +Block 0002 [ 97]: 5404eee07dffcd46 +Block 0002 [ 98]: 793df68160ff5272 +Block 0002 [ 99]: 9cf21ecd74a09c05 +Block 0002 [100]: 97c651e1b57fe890 +Block 0002 [101]: d21b4652fdaa71aa +Block 0002 [102]: f62616d527da1b00 +Block 0002 [103]: 8111d5ef7eb2fd3d +Block 0002 [104]: 88bc12e37dfb1f51 +Block 0002 [105]: 706b7a1d6384bf60 +Block 0002 [106]: 1bc22344df9219a0 +Block 0002 [107]: 8f7ca7a93c0cc2f3 +Block 0002 [108]: 4f45b8e0a2529942 +Block 0002 [109]: e7b00d653cf2f13c +Block 0002 [110]: 67187d7826c89513 +Block 0002 [111]: 7754f65a9f702ba5 +Block 0002 [112]: 68a5bfea171493cc +Block 0002 [113]: deb3870509d40d3e +Block 0002 [114]: fb3690dee5a3fc15 +Block 0002 [115]: 02f3a66dbad140a3 +Block 0002 [116]: 44b70f1d0eabf627 +Block 0002 [117]: a57ce8e7d9cc1fce +Block 0002 [118]: 6831b2965eebf76f +Block 0002 [119]: 05303f957ebaf718 +Block 0002 [120]: 17a65879d3fb0003 +Block 0002 [121]: 6ab65ffaea096928 +Block 0002 [122]: 2164657f763a5dbe +Block 0002 [123]: 1d8072135dc98a7a +Block 0002 [124]: d2b2f7a5744d25b7 +Block 0002 [125]: 71314040af09b83d +Block 0002 [126]: 2f73ab3da08b6618 +Block 0002 [127]: 801c6c6324986446 +Block 0003 [ 0]: 64732568928f828e +Block 0003 [ 1]: f0e835abec79b14c +Block 0003 [ 2]: 4207566a57dafdc0 +Block 0003 [ 3]: 8c7214adc4de6a5c +Block 0003 [ 4]: 1ba9060d3fdbd2b1 +Block 0003 [ 5]: c283b201aaed5725 +Block 0003 [ 6]: fd7e524200d55194 +Block 0003 [ 7]: 9cad3f8488691d33 +Block 0003 [ 8]: f24250ba766eeea0 +Block 0003 [ 9]: 4dafb4ca2313c16a +Block 0003 [ 10]: fc1b1fdb788694d4 +Block 0003 [ 11]: fa314a001d805b18 +Block 0003 [ 12]: fc9b8a9e15eedbd6 +Block 0003 [ 13]: c1a95d732ea90450 +Block 0003 [ 14]: 747798647d3da8ee +Block 0003 [ 15]: b5486a8fabc5c299 +Block 0003 [ 16]: 23ff76548af23c21 +Block 0003 [ 17]: f662e50172dc06b4 +Block 0003 [ 18]: b99fe04efacbabc9 +Block 0003 [ 19]: 030c683e8be4b57e +Block 0003 [ 20]: c7d04e1e2f7eb1b7 +Block 0003 [ 21]: 06c758882e33c1d4 +Block 0003 [ 22]: 6ea19794559d0bac +Block 0003 [ 23]: 1f80b0b09de7b6cf +Block 0003 [ 24]: d46987c238db6213 +Block 0003 [ 25]: f0f363d487c64c01 +Block 0003 [ 26]: b20cf91dc47ee91c +Block 0003 [ 27]: 48fac840c62f466a +Block 0003 [ 28]: c7104baed50fbd2e +Block 0003 [ 29]: 7a7565f6163eb33e +Block 0003 [ 30]: baf293590025e736 +Block 0003 [ 31]: 638ddb2a0dcf89aa +Block 0003 [ 32]: 0bf1d84cd8c9548f +Block 0003 [ 33]: e173ce50e3ac7125 +Block 0003 [ 34]: 431a7a3b7020cd23 +Block 0003 [ 35]: 7312ca0186fcccac +Block 0003 [ 36]: 9c93dd7716859719 +Block 0003 [ 37]: b53476d68465f248 +Block 0003 [ 38]: 2c8ae3759ff45f6c +Block 0003 [ 39]: 89f858e6b950a51b +Block 0003 [ 40]: c024f8b01f375725 +Block 0003 [ 41]: e17760ffe78506fe +Block 0003 [ 42]: 67f71589fa342748 +Block 0003 [ 43]: c2bfb19181a1b336 +Block 0003 [ 44]: b117ceec5935ffec +Block 0003 [ 45]: 14e0f64aa4d6a5b3 +Block 0003 [ 46]: 5a03026316942429 +Block 0003 [ 47]: 788e7c14dbe17ab5 +Block 0003 [ 48]: 8e0eb445c3d928e8 +Block 0003 [ 49]: 523f883054d18325 +Block 0003 [ 50]: eb0bf194d4800e32 +Block 0003 [ 51]: 777275d6cc00e7fb +Block 0003 [ 52]: dca496f17a00aafe +Block 0003 [ 53]: 9cb2d38eec372050 +Block 0003 [ 54]: 4f93385cf1076d07 +Block 0003 [ 55]: fdc58139d57e6687 +Block 0003 [ 56]: 7e615f13e128b1bc +Block 0003 [ 57]: 4fb44deb8bbf5c5c +Block 0003 [ 58]: 54c6683b193dea25 +Block 0003 [ 59]: ca828ff49ea7ed7b +Block 0003 [ 60]: 23ef27dd6876b365 +Block 0003 [ 61]: 7b76f0bf2bc26e1c +Block 0003 [ 62]: eae5d4ac7f7144bf +Block 0003 [ 63]: b1f9099b11ededcc +Block 0003 [ 64]: 32cc9c81f017ba0e +Block 0003 [ 65]: 5b2444503a200158 +Block 0003 [ 66]: cecc6fc191799aae +Block 0003 [ 67]: d21109299e87add6 +Block 0003 [ 68]: 9a62b1fa3f2a5bb0 +Block 0003 [ 69]: 879d63a256449f83 +Block 0003 [ 70]: c4648ef65d063255 +Block 0003 [ 71]: ed478356d2d62771 +Block 0003 [ 72]: 0e26ca78fe098d30 +Block 0003 [ 73]: 40072329c48e1ec8 +Block 0003 [ 74]: 07e5bd63f3304854 +Block 0003 [ 75]: fb34638a5201ce10 +Block 0003 [ 76]: a951299757c793b0 +Block 0003 [ 77]: e368d57abe74ff7b +Block 0003 [ 78]: 85ec98ccb26290e7 +Block 0003 [ 79]: 53459ad4acf2da65 +Block 0003 [ 80]: c98a78858f14d347 +Block 0003 [ 81]: 9d8b22547d48916b +Block 0003 [ 82]: 80d0e8f5f215b88c +Block 0003 [ 83]: 5edbf7bcd02fd162 +Block 0003 [ 84]: 9954d82dec3ca03a +Block 0003 [ 85]: 444b538378d0a5d6 +Block 0003 [ 86]: 606066967cda56db +Block 0003 [ 87]: d7d491715b473467 +Block 0003 [ 88]: a6d02b9ecc8ff032 +Block 0003 [ 89]: 0595036c7117a22c +Block 0003 [ 90]: 11180cf417129d6d +Block 0003 [ 91]: aea26c1f97481b9c +Block 0003 [ 92]: cc45377f1ae1c8ee +Block 0003 [ 93]: 966793a197ca6057 +Block 0003 [ 94]: 85ac7fe90fb11019 +Block 0003 [ 95]: af2078d3ede0a983 +Block 0003 [ 96]: 7958ec6a4835c1ce +Block 0003 [ 97]: 9c2a859b73a07937 +Block 0003 [ 98]: 8b115dcfc1d79139 +Block 0003 [ 99]: 53094bc763b39413 +Block 0003 [100]: 9750583002d83564 +Block 0003 [101]: a4c554841aa2f5da +Block 0003 [102]: b3917593d039083b +Block 0003 [103]: 06f729fc1fb672ed +Block 0003 [104]: 038cd42a493d0293 +Block 0003 [105]: e20cde867860f38e +Block 0003 [106]: 62690da6b7c25ae7 +Block 0003 [107]: bd660101bac5a274 +Block 0003 [108]: 3523ebeb30ac0d6a +Block 0003 [109]: 76d94c2febc0f225 +Block 0003 [110]: 212d2f1a307cd09b +Block 0003 [111]: cb71474dc2bddc34 +Block 0003 [112]: 0cedb05f7f3999b7 +Block 0003 [113]: 59d49b2bdc5ff79f +Block 0003 [114]: 8f41dad377f98ea4 +Block 0003 [115]: 7e8c4f12f658b1be +Block 0003 [116]: b9ed73dd3c09bc2a +Block 0003 [117]: 4d70b50bf9f67b7c +Block 0003 [118]: b16376113c6b3388 +Block 0003 [119]: 1959de6ed1ea5ef7 +Block 0003 [120]: 2d05696db2182ffe +Block 0003 [121]: 0614bd82fda3c718 +Block 0003 [122]: 992fbd510b5095a3 +Block 0003 [123]: 6064c37e3677f6a8 +Block 0003 [124]: 5400f81ee75febe5 +Block 0003 [125]: e4ea20163ed41feb +Block 0003 [126]: aad145432d99ce84 +Block 0003 [127]: 28ca037ca0c948b5 +Block 0004 [ 0]: 9537a8d571e14dd2 +Block 0004 [ 1]: 4dc0ad51cc92ed8a +Block 0004 [ 2]: 55bd4ba9424aa6ff +Block 0004 [ 3]: a744762b554e1ec3 +Block 0004 [ 4]: d8320c91f51a677a +Block 0004 [ 5]: b2cf00025f31b59d +Block 0004 [ 6]: 01ae36ad13a305d4 +Block 0004 [ 7]: b9b9767808ea9c62 +Block 0004 [ 8]: 713d9125c3306797 +Block 0004 [ 9]: b61665cce9e83699 +Block 0004 [ 10]: 325d6eb6798a8584 +Block 0004 [ 11]: 4f07c3d6a680f5c2 +Block 0004 [ 12]: 0a09f03b8ce46486 +Block 0004 [ 13]: 6286566c595fba0b +Block 0004 [ 14]: e1ebe6e6c31431e8 +Block 0004 [ 15]: ffe04f39685d0461 +Block 0004 [ 16]: 53ca4927ae552083 +Block 0004 [ 17]: bfc0ac7bbfb0a523 +Block 0004 [ 18]: ef7007a863c595fa +Block 0004 [ 19]: 7843cde5fe943990 +Block 0004 [ 20]: bf2f584814389b08 +Block 0004 [ 21]: ed568f494f3b7f31 +Block 0004 [ 22]: 1504344614110bca +Block 0004 [ 23]: 993f1f0f045854bc +Block 0004 [ 24]: 158161730b7a01f5 +Block 0004 [ 25]: cedec86d0c6474f2 +Block 0004 [ 26]: 61277594ce55e9ef +Block 0004 [ 27]: 1ac9623722103320 +Block 0004 [ 28]: e0b1f7ff25d63fca +Block 0004 [ 29]: 561a1d0cfb2f7d0a +Block 0004 [ 30]: 9485584b613ae3fd +Block 0004 [ 31]: 23ef53706164ff5c +Block 0004 [ 32]: d75b09f417d430c0 +Block 0004 [ 33]: ff8b028717907100 +Block 0004 [ 34]: 875111393d253da7 +Block 0004 [ 35]: f458ee5ba05a9b78 +Block 0004 [ 36]: d33a40a8a389fbb5 +Block 0004 [ 37]: 89405e2c0126e397 +Block 0004 [ 38]: f0624eaf3617dd35 +Block 0004 [ 39]: 3339d799ca9fa273 +Block 0004 [ 40]: 7fa3e0e496d8d9b5 +Block 0004 [ 41]: 1cec3be146a79491 +Block 0004 [ 42]: bb4f051657fd1e2b +Block 0004 [ 43]: af33959d559547bc +Block 0004 [ 44]: fb6dd05eee469853 +Block 0004 [ 45]: f8ba2f1392589c80 +Block 0004 [ 46]: 5fc140faa08de7a8 +Block 0004 [ 47]: 4b3fdd5510eac7c7 +Block 0004 [ 48]: 29f31eed05b8526c +Block 0004 [ 49]: e5a75fce6e74c1d6 +Block 0004 [ 50]: 9ebca9c5b0e88888 +Block 0004 [ 51]: 54012deed102f6e8 +Block 0004 [ 52]: dc6aa4029c0feedd +Block 0004 [ 53]: b82cab65e5d81650 +Block 0004 [ 54]: 665ab42e1780c04f +Block 0004 [ 55]: 8336681730e97b0b +Block 0004 [ 56]: d9cc84a4b22d9b68 +Block 0004 [ 57]: b292fc773296606a +Block 0004 [ 58]: 32fadadded74ff6d +Block 0004 [ 59]: 5e255ad5bd09fd79 +Block 0004 [ 60]: 1c5d99287c2d81e4 +Block 0004 [ 61]: b21f3fddabcc79be +Block 0004 [ 62]: c2d4470091d2a399 +Block 0004 [ 63]: 4989fa7d69a80f25 +Block 0004 [ 64]: aa69da87b7db456a +Block 0004 [ 65]: 51fde513e2f7d7ae +Block 0004 [ 66]: 812d57ccc291d970 +Block 0004 [ 67]: 25b973a25beb11c3 +Block 0004 [ 68]: fee862dbadbf76ce +Block 0004 [ 69]: 04dbf43ecbf53aa8 +Block 0004 [ 70]: ccdc2c2b573af1f3 +Block 0004 [ 71]: e4b32bf0e0bfeaa6 +Block 0004 [ 72]: 3a3879ec1c6e004b +Block 0004 [ 73]: 107f4958b25af714 +Block 0004 [ 74]: fa4e0c74a0ee9e83 +Block 0004 [ 75]: 911bccc813b79cf6 +Block 0004 [ 76]: b497c614eb3a8c6c +Block 0004 [ 77]: d7a01e12f35f6e00 +Block 0004 [ 78]: c99ff61e804121dd +Block 0004 [ 79]: e3d05657ff5b4f90 +Block 0004 [ 80]: e48828629f5aed9f +Block 0004 [ 81]: cdc8aff4caa1f315 +Block 0004 [ 82]: 9013a736ab5fa851 +Block 0004 [ 83]: cbb8c9c276816950 +Block 0004 [ 84]: a67ece7c71b7ad02 +Block 0004 [ 85]: a0ed8a4f128f6ecb +Block 0004 [ 86]: fb62d4c0d755d0fc +Block 0004 [ 87]: 1091699fdab67e95 +Block 0004 [ 88]: 901d7aa388933dd5 +Block 0004 [ 89]: ba0ad9b7db68b704 +Block 0004 [ 90]: c8b46edf36578856 +Block 0004 [ 91]: b3d87a4ec5ff3a2d +Block 0004 [ 92]: 9c7d3eea8191b86d +Block 0004 [ 93]: 3f791b6883190899 +Block 0004 [ 94]: b694aa889c99fa7b +Block 0004 [ 95]: c42559f1608034fd +Block 0004 [ 96]: 5557e364bfd0674d +Block 0004 [ 97]: 9dbade36191fd2c0 +Block 0004 [ 98]: 1a47f258bc00bd52 +Block 0004 [ 99]: 56e4f50be8c33e69 +Block 0004 [100]: ee6c8f3e30c52581 +Block 0004 [101]: b6302207b64d8ed2 +Block 0004 [102]: 681bcd0107359d8a +Block 0004 [103]: 738a0384b182ac67 +Block 0004 [104]: 4941db6da14bf8f3 +Block 0004 [105]: 6ddf9e01ffd4cfc6 +Block 0004 [106]: b9fd089568236f38 +Block 0004 [107]: ea9a02ed74d0ce66 +Block 0004 [108]: b7c398164d2cec98 +Block 0004 [109]: 074b120be92e77e2 +Block 0004 [110]: 21554e4a0007f53a +Block 0004 [111]: 40bf8073b9818922 +Block 0004 [112]: af2b47782b6e69aa +Block 0004 [113]: 689a3140a931152c +Block 0004 [114]: ef127931b979b81f +Block 0004 [115]: 333d56e7771fde6d +Block 0004 [116]: d7dac660115eb2fe +Block 0004 [117]: 783f0447b10b0687 +Block 0004 [118]: 839287fa51814963 +Block 0004 [119]: 51fd8c9d26d2cfa6 +Block 0004 [120]: 98096c3229af0623 +Block 0004 [121]: f1e44616cf83a89d +Block 0004 [122]: d7dee4c489526646 +Block 0004 [123]: d1ff564c6e0cd950 +Block 0004 [124]: 4fafa266ced52aa7 +Block 0004 [125]: 22498eba46a04ef8 +Block 0004 [126]: 45b609663e3b7ce3 +Block 0004 [127]: ee22f7dd21561ac8 +Block 0005 [ 0]: 3cd2e94de90ca481 +Block 0005 [ 1]: dfba8ebdd159db11 +Block 0005 [ 2]: d4d9c891fc74618d +Block 0005 [ 3]: ee4a8995ad390d5b +Block 0005 [ 4]: 2dfbe3d914219e1d +Block 0005 [ 5]: 55649cca2df44184 +Block 0005 [ 6]: d08257933ed59497 +Block 0005 [ 7]: eef09b6cde6aa023 +Block 0005 [ 8]: 9470b40a38496b22 +Block 0005 [ 9]: 8b63c69dc20b94f3 +Block 0005 [ 10]: ab67bd14275990f4 +Block 0005 [ 11]: 278328cc9a689607 +Block 0005 [ 12]: 45bd50f8323de809 +Block 0005 [ 13]: e006cfe9893815ff +Block 0005 [ 14]: 7e7f1ea102228e0c +Block 0005 [ 15]: def383cbb711f355 +Block 0005 [ 16]: 375621a2ad73a6cb +Block 0005 [ 17]: 9e84a59a85925193 +Block 0005 [ 18]: 1447a30c4d2aee4a +Block 0005 [ 19]: 6654b312db275611 +Block 0005 [ 20]: d31d748bee47a017 +Block 0005 [ 21]: 510443570050a8f3 +Block 0005 [ 22]: ea626416bd3fa29e +Block 0005 [ 23]: 3c2cd53b276cd524 +Block 0005 [ 24]: 2b2083e1d220c4d8 +Block 0005 [ 25]: d94599d6f3785390 +Block 0005 [ 26]: 67dad7e6c48ebb00 +Block 0005 [ 27]: 6b92998802e30c96 +Block 0005 [ 28]: 645b1010baac196f +Block 0005 [ 29]: cf4282c3a8ef150c +Block 0005 [ 30]: 5cea9998241d0b66 +Block 0005 [ 31]: 1da03fc4761ee079 +Block 0005 [ 32]: 85544e5a0e0a40a7 +Block 0005 [ 33]: 7d2c97e52be32169 +Block 0005 [ 34]: eaa643ad41ed1c8a +Block 0005 [ 35]: 8e3a28e84a0d15b3 +Block 0005 [ 36]: 98ca6c4cde9f092b +Block 0005 [ 37]: c8397eff8a335a64 +Block 0005 [ 38]: bab0e00748aa1acc +Block 0005 [ 39]: 6979089506d97131 +Block 0005 [ 40]: 35fdb48046953cdd +Block 0005 [ 41]: e9329191b9f4586c +Block 0005 [ 42]: d8615adbab425d2f +Block 0005 [ 43]: 272a1a2d7a7e1554 +Block 0005 [ 44]: 74df2fecf4828a47 +Block 0005 [ 45]: 8d18d4efcd6b5999 +Block 0005 [ 46]: 026aa3c4d8365938 +Block 0005 [ 47]: cdc6eb20428ed057 +Block 0005 [ 48]: 587b106898200c89 +Block 0005 [ 49]: e4cbb4cc3292d8e4 +Block 0005 [ 50]: 8cd19eec986586e6 +Block 0005 [ 51]: 2dc92fc62f91f407 +Block 0005 [ 52]: 1995b751c561d8ed +Block 0005 [ 53]: a354a2cb47fb6d52 +Block 0005 [ 54]: 1edbaac5c88a5409 +Block 0005 [ 55]: 0603484ad13feb48 +Block 0005 [ 56]: 055a26aa8ba641be +Block 0005 [ 57]: 84df1bd3ba8e553e +Block 0005 [ 58]: 7b6863e87b5c4889 +Block 0005 [ 59]: 1f2f946a3193a989 +Block 0005 [ 60]: 5c41ad6c9307af04 +Block 0005 [ 61]: 51b014b4202c9e6c +Block 0005 [ 62]: bcd2327d0fc577eb +Block 0005 [ 63]: c707c191c590c79e +Block 0005 [ 64]: 57257237320ff10a +Block 0005 [ 65]: e48199dfc56bb7f0 +Block 0005 [ 66]: a05ab88148b58f38 +Block 0005 [ 67]: a82063473bd88e71 +Block 0005 [ 68]: 7ce490d805eb0802 +Block 0005 [ 69]: da09b404a4fd5d59 +Block 0005 [ 70]: 796b87be5f3ad540 +Block 0005 [ 71]: 832a6d5b275b9736 +Block 0005 [ 72]: e5dc09d9ff333c8f +Block 0005 [ 73]: bd325fae47103b43 +Block 0005 [ 74]: 842cc4b109936d28 +Block 0005 [ 75]: 0288ad46048a598b +Block 0005 [ 76]: 6e6aca4e2f64cc00 +Block 0005 [ 77]: 74531597ecfa1e36 +Block 0005 [ 78]: 413b81c34e0f35fd +Block 0005 [ 79]: 75f045e6159ec582 +Block 0005 [ 80]: 02b7e4158121f50c +Block 0005 [ 81]: facdab0b178e2d0e +Block 0005 [ 82]: 96dfc5937b23fd82 +Block 0005 [ 83]: d70cb31166d20062 +Block 0005 [ 84]: 19f89ce3f2dd58cb +Block 0005 [ 85]: 24982d720b762691 +Block 0005 [ 86]: d523f396f3a6eb3e +Block 0005 [ 87]: 9284f59b96bccaa1 +Block 0005 [ 88]: b8ea93e059626094 +Block 0005 [ 89]: d2ff2f61d0edf52f +Block 0005 [ 90]: 7712bb23fd5e9d3f +Block 0005 [ 91]: 327ccbdff1b9f0f9 +Block 0005 [ 92]: 1f78ae754cd9f907 +Block 0005 [ 93]: 9224a03220ae07a1 +Block 0005 [ 94]: ecd122202fd83f76 +Block 0005 [ 95]: 756f86991892353b +Block 0005 [ 96]: 209acb92814e6097 +Block 0005 [ 97]: f31ea1ea1d038547 +Block 0005 [ 98]: df8383e6e6d46768 +Block 0005 [ 99]: 204eb18e722413bb +Block 0005 [100]: 8272dc586305e4e5 +Block 0005 [101]: 6df368fdc20eecb4 +Block 0005 [102]: bb0d1440d64fa01d +Block 0005 [103]: f9e2b4c2b114be60 +Block 0005 [104]: 7b639d21f1a4c262 +Block 0005 [105]: 8e9e1f91102ef9c1 +Block 0005 [106]: d2872fbb0f21f30b +Block 0005 [107]: 4a9983530a52d87c +Block 0005 [108]: 6880c281e0ebb884 +Block 0005 [109]: 54fd1bf55c2da8d2 +Block 0005 [110]: e0b9f3163ab63d65 +Block 0005 [111]: 783d94c97ea356ff +Block 0005 [112]: 69458be8db9536e9 +Block 0005 [113]: dbcadae9ee38190d +Block 0005 [114]: ab0eb15bddcbf967 +Block 0005 [115]: 2d46dfc393f333b5 +Block 0005 [116]: 88fc92a12c24f8d6 +Block 0005 [117]: 85565f4cd6be55d5 +Block 0005 [118]: 22d83c79b8b18a0f +Block 0005 [119]: 2e333918c4a9abab +Block 0005 [120]: 5c495fc0b97433cd +Block 0005 [121]: 96d29cc3808c059f +Block 0005 [122]: a4cbfb8614fc4478 +Block 0005 [123]: 5f768a83d326cbf9 +Block 0005 [124]: 9e304b29e1a6a0bf +Block 0005 [125]: c022c4ff7eb1ddd5 +Block 0005 [126]: 742349c9da4a5c73 +Block 0005 [127]: 82004e9101493542 +Block 0006 [ 0]: cae85a2ceb8efc02 +Block 0006 [ 1]: 6d93381a5d1d8d86 +Block 0006 [ 2]: 49434e31aab85464 +Block 0006 [ 3]: 596e450733089895 +Block 0006 [ 4]: 7ad5266fb35c9dc6 +Block 0006 [ 5]: f103661c0f84cdcb +Block 0006 [ 6]: bdbe945901233f82 +Block 0006 [ 7]: 7a4fc3fa729bf6a9 +Block 0006 [ 8]: 411d8ecffde9d0bc +Block 0006 [ 9]: 3f3879677ae88a93 +Block 0006 [ 10]: 691d2256d8c12414 +Block 0006 [ 11]: 05404821b655cbdf +Block 0006 [ 12]: dc4a287118bd7a42 +Block 0006 [ 13]: f885e8da9e48d9a4 +Block 0006 [ 14]: ee20557eeca2759a +Block 0006 [ 15]: 9b57b912699d14b8 +Block 0006 [ 16]: 9ec2b555224f5056 +Block 0006 [ 17]: 45f8f99df3076f67 +Block 0006 [ 18]: 75188b4f06146b33 +Block 0006 [ 19]: fa1940bb72d8bfa9 +Block 0006 [ 20]: ee77215b5a6461be +Block 0006 [ 21]: 130e5694a4a657a6 +Block 0006 [ 22]: b6d6240eba5cff31 +Block 0006 [ 23]: 6c263e648845c25d +Block 0006 [ 24]: 010f505761537c16 +Block 0006 [ 25]: 2bcd8e8d78174280 +Block 0006 [ 26]: 09cc439d6038920b +Block 0006 [ 27]: 102e6fcadf8fab25 +Block 0006 [ 28]: 865536493af63e34 +Block 0006 [ 29]: 92ba807f489592c3 +Block 0006 [ 30]: fa63293e6bf3450d +Block 0006 [ 31]: 0ab2b18e20af652f +Block 0006 [ 32]: c98d6491c993727d +Block 0006 [ 33]: b91f68d6f2a0935b +Block 0006 [ 34]: 874208aaac5ea660 +Block 0006 [ 35]: fad07e63f8cdcb80 +Block 0006 [ 36]: 05ac511fa2ad4e9c +Block 0006 [ 37]: 91e2f2bef739eb7a +Block 0006 [ 38]: fa418b08d22535b8 +Block 0006 [ 39]: f3bdafdb79902895 +Block 0006 [ 40]: 4278119248e1374c +Block 0006 [ 41]: 2c15a1216716e84f +Block 0006 [ 42]: 06dc9d2d38aa5d01 +Block 0006 [ 43]: 3305f0e0c4a6bf15 +Block 0006 [ 44]: ee6d12b7dae3c9c0 +Block 0006 [ 45]: 9ce6de35c567a77e +Block 0006 [ 46]: aed4cd9f12f9791c +Block 0006 [ 47]: f544023b7aff183e +Block 0006 [ 48]: e239dd3ca8ea9d3f +Block 0006 [ 49]: 17d93ae3f4526473 +Block 0006 [ 50]: 2856d2082a92b453 +Block 0006 [ 51]: 600c119b6d555873 +Block 0006 [ 52]: 3dafb34abaa13aac +Block 0006 [ 53]: 8b9143da50cd92ef +Block 0006 [ 54]: c768a76c43beb3a7 +Block 0006 [ 55]: b125fa82ae2ef4f4 +Block 0006 [ 56]: c4918a79cc02e24d +Block 0006 [ 57]: 4d08a1876b80affe +Block 0006 [ 58]: c98370851d92e969 +Block 0006 [ 59]: e3db1a89b7c66b82 +Block 0006 [ 60]: a5402a035e74f02c +Block 0006 [ 61]: 7daa9f89a675fa9c +Block 0006 [ 62]: 48704bf794e0da1a +Block 0006 [ 63]: 2680b08618fdf25a +Block 0006 [ 64]: 9d5549d923fa207b +Block 0006 [ 65]: 458f138ffc7aded3 +Block 0006 [ 66]: 3b37e756328b99c6 +Block 0006 [ 67]: 04276fee936e3fba +Block 0006 [ 68]: 13f801049a751510 +Block 0006 [ 69]: 4018cb14f41af756 +Block 0006 [ 70]: 8fa9339cd9a10e80 +Block 0006 [ 71]: 9f7398196bcdb698 +Block 0006 [ 72]: 380d6e5db36b1e76 +Block 0006 [ 73]: 48322289e5744636 +Block 0006 [ 74]: 63c91ee0e2c28cfa +Block 0006 [ 75]: 9bda8b855e06fa54 +Block 0006 [ 76]: d411082aeb0decae +Block 0006 [ 77]: 9a81183d5ceeb7a0 +Block 0006 [ 78]: 5b521ded3990d418 +Block 0006 [ 79]: 34e6f3c32e525b4b +Block 0006 [ 80]: 88409ccd5c81fc37 +Block 0006 [ 81]: b7653a0babcf04d4 +Block 0006 [ 82]: bae435aab4d286f3 +Block 0006 [ 83]: 43732419de6f6d91 +Block 0006 [ 84]: 66371d8bd924e722 +Block 0006 [ 85]: 8f523e494a2ec953 +Block 0006 [ 86]: c2bceda3ed49f414 +Block 0006 [ 87]: ed6a64fa5a07244d +Block 0006 [ 88]: 61a1cf88debb7a05 +Block 0006 [ 89]: 85fdf531bc2c9a43 +Block 0006 [ 90]: 8bf9f05cff8eac65 +Block 0006 [ 91]: 9b52f433a222ff47 +Block 0006 [ 92]: 4ac5392090073723 +Block 0006 [ 93]: 07c0e145df5c2c24 +Block 0006 [ 94]: 28be9407aee2d860 +Block 0006 [ 95]: 7a6bc60d1354c7f0 +Block 0006 [ 96]: c524527490c63e7f +Block 0006 [ 97]: 9f0811bbe6b6a454 +Block 0006 [ 98]: 3f04d9d829c49e04 +Block 0006 [ 99]: c208949b51e67461 +Block 0006 [100]: d9df595fcb66c187 +Block 0006 [101]: d83c0989a89578d2 +Block 0006 [102]: 53eb66cc61df5273 +Block 0006 [103]: 220b69c92abb99f6 +Block 0006 [104]: 0ee4c8c6bfb270b1 +Block 0006 [105]: c402b2a60b9525d6 +Block 0006 [106]: f5b846806988ea0b +Block 0006 [107]: 989420c88849ed91 +Block 0006 [108]: 2e423daea0cd45ab +Block 0006 [109]: fbc8cab48993dc1c +Block 0006 [110]: a81466b266d649d3 +Block 0006 [111]: a1cf72a6980c8dec +Block 0006 [112]: e024e1561c0c0e55 +Block 0006 [113]: f5fa1c1120a3590c +Block 0006 [114]: b518502c3c71694a +Block 0006 [115]: e2ab9448cf43d8c1 +Block 0006 [116]: ffae6e44db873d57 +Block 0006 [117]: 5a0f0a08fd6a38a1 +Block 0006 [118]: 40ddbed30d3d9031 +Block 0006 [119]: 8da59292ddbc0263 +Block 0006 [120]: 10b7aabec6c51827 +Block 0006 [121]: 07f794acdff97a71 +Block 0006 [122]: c59fdc4356994dde +Block 0006 [123]: 4f3307d87776106a +Block 0006 [124]: befd22b455bc0865 +Block 0006 [125]: 701121ca8c9515d3 +Block 0006 [126]: 1ef8d046d0b9a563 +Block 0006 [127]: 39b63a35b9efdb99 +Block 0007 [ 0]: aa96f9e08367c767 +Block 0007 [ 1]: 649f858166f87ed5 +Block 0007 [ 2]: e3a12f109cb8c3d9 +Block 0007 [ 3]: 8812c38cd64c7d94 +Block 0007 [ 4]: 3ad89cea6c879850 +Block 0007 [ 5]: 4ad57f58078de647 +Block 0007 [ 6]: 7c91531334d0d4dc +Block 0007 [ 7]: a0fb2ac5e8b87cff +Block 0007 [ 8]: 484649d71b9d1e43 +Block 0007 [ 9]: 094f7304f8ab4c8a +Block 0007 [ 10]: 6df95fa9e9a3f3f8 +Block 0007 [ 11]: e623e88cef2337d0 +Block 0007 [ 12]: e88d11f6d2ed8a35 +Block 0007 [ 13]: 4432c0595c14f75e +Block 0007 [ 14]: 258bd33ca56c8a19 +Block 0007 [ 15]: 6cc890994f178d88 +Block 0007 [ 16]: 38fd3ad0a8d8d873 +Block 0007 [ 17]: ff00206d6f40d106 +Block 0007 [ 18]: 40c1540922ad3309 +Block 0007 [ 19]: ac62185a61a98e5a +Block 0007 [ 20]: a52969af6f33c5f9 +Block 0007 [ 21]: 07a5ed928429d229 +Block 0007 [ 22]: c050a35ba5c589a6 +Block 0007 [ 23]: 8ca12828ceca882a +Block 0007 [ 24]: b68899a29a8a8409 +Block 0007 [ 25]: 909b0feb3da3956b +Block 0007 [ 26]: e6187a3fde82a3d9 +Block 0007 [ 27]: 2cfbaffc07547b7e +Block 0007 [ 28]: bc87b96179db239c +Block 0007 [ 29]: 15f6a8b3f195469e +Block 0007 [ 30]: 8ccc5a4bad93dd85 +Block 0007 [ 31]: f28389eab823c396 +Block 0007 [ 32]: 5c878a746f493847 +Block 0007 [ 33]: dc630599ea9a7a43 +Block 0007 [ 34]: be8f61cede964c9f +Block 0007 [ 35]: 0a0aed40cd05eeab +Block 0007 [ 36]: 7bee51bc54fa558c +Block 0007 [ 37]: cb4c7f727bb2b0e8 +Block 0007 [ 38]: 3e7f5a7844614578 +Block 0007 [ 39]: 820ef308cc67186e +Block 0007 [ 40]: 4ec109927b4043be +Block 0007 [ 41]: f9e4071f5f488bfb +Block 0007 [ 42]: a94607b9b6b215a0 +Block 0007 [ 43]: 28827d5daa40fc2f +Block 0007 [ 44]: 54f31e9dfab0345c +Block 0007 [ 45]: 887c56da37c6e314 +Block 0007 [ 46]: 1148953965073ce8 +Block 0007 [ 47]: c01ae7f35cd7c0ac +Block 0007 [ 48]: e776abf00711922d +Block 0007 [ 49]: 482b7bbafc9c6b93 +Block 0007 [ 50]: 97e6bf7879562de0 +Block 0007 [ 51]: 23d739237098aa07 +Block 0007 [ 52]: bdc9b4185d94ade7 +Block 0007 [ 53]: c63b815b15f2796b +Block 0007 [ 54]: 8553ac1b6a37be91 +Block 0007 [ 55]: 4fe3e5356b9ed266 +Block 0007 [ 56]: 6b2d180c55f275ec +Block 0007 [ 57]: d4fa4fb13209f598 +Block 0007 [ 58]: 5443aa93e28afa7b +Block 0007 [ 59]: 6b647752d66f57b7 +Block 0007 [ 60]: 9666cff649c996d5 +Block 0007 [ 61]: 7bd692c2d21a5047 +Block 0007 [ 62]: eb7c79815024a53b +Block 0007 [ 63]: 1d5196d7fb6f63a1 +Block 0007 [ 64]: ac79fa1a8b4dc7f8 +Block 0007 [ 65]: a8df09a098c0be84 +Block 0007 [ 66]: a0a54a9d55b0b259 +Block 0007 [ 67]: 9ac055953106d3f9 +Block 0007 [ 68]: cecfbbbd0a75b297 +Block 0007 [ 69]: d8f24f0b6bb69dc5 +Block 0007 [ 70]: 378ebbd76c6e3a90 +Block 0007 [ 71]: acd6e360894ee0a3 +Block 0007 [ 72]: ca2554b43fdb94fd +Block 0007 [ 73]: d3f9cde1e592226f +Block 0007 [ 74]: 0dbfb10f2f1efae9 +Block 0007 [ 75]: c71e2c6c043d4dd6 +Block 0007 [ 76]: 542b5306ef9f6d3d +Block 0007 [ 77]: 76edfa648496c329 +Block 0007 [ 78]: 250612884c4f0b85 +Block 0007 [ 79]: 6075f1ce858b87e6 +Block 0007 [ 80]: 104f24fd6dd36325 +Block 0007 [ 81]: e877c408d7628431 +Block 0007 [ 82]: bfde93ac7c25c4c3 +Block 0007 [ 83]: 5df386f7c1ec1683 +Block 0007 [ 84]: b71ecaddf313cf0e +Block 0007 [ 85]: a12579e2673e01d6 +Block 0007 [ 86]: 2ad19a0604cd5fe9 +Block 0007 [ 87]: 272ea01051cb6358 +Block 0007 [ 88]: a2d7685936a4ceb4 +Block 0007 [ 89]: b3e3249849509375 +Block 0007 [ 90]: 6b8203a8e0c94907 +Block 0007 [ 91]: 1d688c4a3f966428 +Block 0007 [ 92]: 2016b91b50f0f449 +Block 0007 [ 93]: 4d5e3e8b2fd48920 +Block 0007 [ 94]: 9ce0e560887cf9d3 +Block 0007 [ 95]: 8bf1c4fe311f6941 +Block 0007 [ 96]: eea996cf128b79fd +Block 0007 [ 97]: 87d2181997f90c9f +Block 0007 [ 98]: 2e6ff5336274c0b1 +Block 0007 [ 99]: 07bcbc51de405ed5 +Block 0007 [100]: 58528c033854e6c4 +Block 0007 [101]: 1e74bb2c415e259a +Block 0007 [102]: 81257185b52075ed +Block 0007 [103]: f69a6f103e6d90d9 +Block 0007 [104]: 2957fac276b0ecf3 +Block 0007 [105]: 73bf7c5536294f71 +Block 0007 [106]: 9a6275570ed2df1d +Block 0007 [107]: ccf4ba74c777f8ee +Block 0007 [108]: eaff28c6db196040 +Block 0007 [109]: d54fe5cf5874a657 +Block 0007 [110]: c93036465726f57f +Block 0007 [111]: b660605a42952da9 +Block 0007 [112]: d4ab99d7310068cd +Block 0007 [113]: 21f7fb4e319084ce +Block 0007 [114]: 519edf5d36936eb9 +Block 0007 [115]: b2c82d19c105271a +Block 0007 [116]: 718dfcd0eb783bc5 +Block 0007 [117]: b235745fdf50c280 +Block 0007 [118]: b7b333715a491c57 +Block 0007 [119]: 4d1d58bf981fc3ff +Block 0007 [120]: 09142593a9e31264 +Block 0007 [121]: 2ba15f73ae641cdb +Block 0007 [122]: 0dbedd4b8ad66694 +Block 0007 [123]: a2e08ce9a67e410d +Block 0007 [124]: 3c33479a6316a3d4 +Block 0007 [125]: b49dcf61cc1ee0f7 +Block 0007 [126]: 554dd48bd5a57ba3 +Block 0007 [127]: 7f62bde60a68421f +Block 0008 [ 0]: 92f6d6ca261fc8cf +Block 0008 [ 1]: 46231b8ea96831aa +Block 0008 [ 2]: d7b240430ce761e2 +Block 0008 [ 3]: 78bf44b216c84d15 +Block 0008 [ 4]: 233673b6dbc99394 +Block 0008 [ 5]: fef85a6245b2959f +Block 0008 [ 6]: b50611c7b12700a3 +Block 0008 [ 7]: b1d5b20c38fd698b +Block 0008 [ 8]: ed05bdf565eb1670 +Block 0008 [ 9]: c1bd5b774427ee83 +Block 0008 [ 10]: 662366030971d978 +Block 0008 [ 11]: a3672fc5e14d3835 +Block 0008 [ 12]: 396f9f9e5fdc007d +Block 0008 [ 13]: 9c2af96d848a18ec +Block 0008 [ 14]: 17753b738206411c +Block 0008 [ 15]: 1173420c24118788 +Block 0008 [ 16]: 0a6a9f243be7ee99 +Block 0008 [ 17]: 2b7e600ca9aaa924 +Block 0008 [ 18]: c0766db77b8640b6 +Block 0008 [ 19]: 7d32c2e8b617fb00 +Block 0008 [ 20]: 55aeb0119138c0d4 +Block 0008 [ 21]: 0da720da65b9f532 +Block 0008 [ 22]: 9ebd62381d2d5491 +Block 0008 [ 23]: 79cb72a785dde658 +Block 0008 [ 24]: e76297c84f559e80 +Block 0008 [ 25]: a2b36a54e16f0260 +Block 0008 [ 26]: 3c6f3f453a1bd215 +Block 0008 [ 27]: 74330ed8f77ec3f1 +Block 0008 [ 28]: 331dde512c425385 +Block 0008 [ 29]: 9fc0c6ccb30db6e6 +Block 0008 [ 30]: 774aafaf5dcc91b5 +Block 0008 [ 31]: 9b05e8f3b4a8189f +Block 0008 [ 32]: 82e0b0bdd1398b73 +Block 0008 [ 33]: 0cb016fab2a01997 +Block 0008 [ 34]: 3be4263af97114bc +Block 0008 [ 35]: 0d55775808650824 +Block 0008 [ 36]: 8105fea6f9a6deb4 +Block 0008 [ 37]: e6a69e43428e0116 +Block 0008 [ 38]: d1dae82531d7f6a0 +Block 0008 [ 39]: 75f3152168bcef9b +Block 0008 [ 40]: 5324b2ae324a2354 +Block 0008 [ 41]: 33ed57275072eb06 +Block 0008 [ 42]: 7e9e632411ee708d +Block 0008 [ 43]: 9bcce35940c7159c +Block 0008 [ 44]: f5af40b874b2a402 +Block 0008 [ 45]: 110c586d5e1c1188 +Block 0008 [ 46]: 978d2662424a4bac +Block 0008 [ 47]: a656e414d797b095 +Block 0008 [ 48]: 0970f7c8c6075dec +Block 0008 [ 49]: 6ff3e812a7f1aa46 +Block 0008 [ 50]: eee42ac2dbcb5760 +Block 0008 [ 51]: 4e8489009f2a83d5 +Block 0008 [ 52]: fea08093f6f4ed51 +Block 0008 [ 53]: 352247f19ec0e53f +Block 0008 [ 54]: 82d807f61412e2b5 +Block 0008 [ 55]: 3276543fce1e8ba9 +Block 0008 [ 56]: 305629c5c3b64aed +Block 0008 [ 57]: 5b6f8f456b643373 +Block 0008 [ 58]: 9d0f9c2a4c8f060b +Block 0008 [ 59]: 438294ae3de753ce +Block 0008 [ 60]: b0a6e33302a9deff +Block 0008 [ 61]: b10592023513b0b9 +Block 0008 [ 62]: f8c79b71c102905b +Block 0008 [ 63]: 43b4413873a270ba +Block 0008 [ 64]: d34f5c5e0998a1f8 +Block 0008 [ 65]: 19f5df3546045ba8 +Block 0008 [ 66]: dcece1ca7a0dcd19 +Block 0008 [ 67]: bc53d2ae75a68004 +Block 0008 [ 68]: 54f7e9cdaa7e569e +Block 0008 [ 69]: 94aba4e907e3ad17 +Block 0008 [ 70]: 8e09815df38d82ad +Block 0008 [ 71]: 52ebb7d86386430e +Block 0008 [ 72]: adfa72bf58111b6f +Block 0008 [ 73]: 9a97a34d02f35c55 +Block 0008 [ 74]: 88a5f560607896e6 +Block 0008 [ 75]: 30e3deba10a0e2c7 +Block 0008 [ 76]: a88c9001142218f0 +Block 0008 [ 77]: 34443da1afe34ad5 +Block 0008 [ 78]: dff9a8672d9c3c16 +Block 0008 [ 79]: 4c922e79b39902a0 +Block 0008 [ 80]: 8c87abe539b79af1 +Block 0008 [ 81]: c27dd77ff32e7546 +Block 0008 [ 82]: 32394933c3cf5e0c +Block 0008 [ 83]: 579cd4a121e76b03 +Block 0008 [ 84]: d0ddc746442ea314 +Block 0008 [ 85]: 268e280ea0775645 +Block 0008 [ 86]: 255c28d63c7288b4 +Block 0008 [ 87]: 220aba41a338f9e4 +Block 0008 [ 88]: fff7450697217135 +Block 0008 [ 89]: 3c5ef84ee9febcfc +Block 0008 [ 90]: ca1fe3294dc518c7 +Block 0008 [ 91]: a562721d4f6bbf01 +Block 0008 [ 92]: fc33d7633e7dcc7d +Block 0008 [ 93]: cfb8c4bbd4953e6e +Block 0008 [ 94]: 01bbf2c52cac42c2 +Block 0008 [ 95]: b65219c09fd95934 +Block 0008 [ 96]: e96d416d0ccab83d +Block 0008 [ 97]: c4f88891388c48ee +Block 0008 [ 98]: d6a10504939a858e +Block 0008 [ 99]: 713907c339464081 +Block 0008 [100]: 6e1fb4478d2ce08c +Block 0008 [101]: 834969ca83993eef +Block 0008 [102]: fd91b73ae90795e0 +Block 0008 [103]: d9cfa18953aea3f9 +Block 0008 [104]: 1eb6a19221268e59 +Block 0008 [105]: c0ad63c783ac8007 +Block 0008 [106]: 1a2d426c6dc70c86 +Block 0008 [107]: 26d59d50f8388ec8 +Block 0008 [108]: a80437af7437599c +Block 0008 [109]: 6969260f334d5d82 +Block 0008 [110]: 00dfd4895631ef90 +Block 0008 [111]: dfd0efe509122127 +Block 0008 [112]: b52af91406aff929 +Block 0008 [113]: adb32b6ab6fdcbd7 +Block 0008 [114]: 3e89d6ace903a5d8 +Block 0008 [115]: d11fd78a1445e270 +Block 0008 [116]: bdadee3624fbefd4 +Block 0008 [117]: 424ff6da14872281 +Block 0008 [118]: 6dd4cf79eaa5797b +Block 0008 [119]: f176c7ecc2872fb3 +Block 0008 [120]: a79bfc8746f264b9 +Block 0008 [121]: 9625eb7aa57c52eb +Block 0008 [122]: ac854065c1dc3575 +Block 0008 [123]: cf4b92c820e2d280 +Block 0008 [124]: 3c5b29c8ab4c7d21 +Block 0008 [125]: 81a16e1d57a4a742 +Block 0008 [126]: 0a59951bb4a5350b +Block 0008 [127]: 5afbe0d24e05c8a6 +Block 0009 [ 0]: 861d303a02999e8e +Block 0009 [ 1]: 39bff09c822fdbc0 +Block 0009 [ 2]: 622b81abdc3f4a32 +Block 0009 [ 3]: ab9d09e5dfd64194 +Block 0009 [ 4]: 326a874cec237f12 +Block 0009 [ 5]: 8fb67fab8060e98c +Block 0009 [ 6]: d2d74a1c2f83d3d3 +Block 0009 [ 7]: 2f55faf116707ea5 +Block 0009 [ 8]: 79da12d2f0c3e61a +Block 0009 [ 9]: 891d23c5a9412f39 +Block 0009 [ 10]: 6cdd30456923f037 +Block 0009 [ 11]: 14d3ce76187b9c60 +Block 0009 [ 12]: 936f98d58d2218f3 +Block 0009 [ 13]: 628ee9e7c16b3580 +Block 0009 [ 14]: 71f65d809281dd0b +Block 0009 [ 15]: 775d67d622193f7e +Block 0009 [ 16]: 4a22de00a7c3b0c0 +Block 0009 [ 17]: b0ff5e3db98eeed5 +Block 0009 [ 18]: c4ef45496b302eb2 +Block 0009 [ 19]: 4a2c2b6b8a87d99c +Block 0009 [ 20]: cc850382694f8c0e +Block 0009 [ 21]: c022ab6a59ba02b1 +Block 0009 [ 22]: 2b350ffab1420e6f +Block 0009 [ 23]: 97c40487830a1ddd +Block 0009 [ 24]: eb2c092a9a8a5a9a +Block 0009 [ 25]: 6fef1e9dbee32d55 +Block 0009 [ 26]: b9da76a743ce6df8 +Block 0009 [ 27]: 80d9afd64c6c21b0 +Block 0009 [ 28]: 8956b45ae00aa70b +Block 0009 [ 29]: 6802ece7ab96c121 +Block 0009 [ 30]: 00ee32a4a2ca9d90 +Block 0009 [ 31]: 9f0e1f59571a3276 +Block 0009 [ 32]: 8ac3d2cf84ebb6b5 +Block 0009 [ 33]: e2e94ddfeaac1f8b +Block 0009 [ 34]: f9a025b84c989037 +Block 0009 [ 35]: c1f33f3cba4c0ad1 +Block 0009 [ 36]: 198d388d3756c187 +Block 0009 [ 37]: 431ca049992cd38e +Block 0009 [ 38]: d468ada99b30f701 +Block 0009 [ 39]: 2fcd5b0b5dabc78f +Block 0009 [ 40]: 649f86945f38593a +Block 0009 [ 41]: 213ee790f61abd50 +Block 0009 [ 42]: 39b0cb1110006813 +Block 0009 [ 43]: b5703b76384430ad +Block 0009 [ 44]: 3eaeebeb30fcc9f9 +Block 0009 [ 45]: 9a5dd247256ef2c8 +Block 0009 [ 46]: b9985bc60977cda1 +Block 0009 [ 47]: 62cdd6be32a5d84c +Block 0009 [ 48]: af8858bf60bb22fb +Block 0009 [ 49]: 7f5f239c2b2f7ca0 +Block 0009 [ 50]: b71a7a67cf14960f +Block 0009 [ 51]: 7911708c3a71d21b +Block 0009 [ 52]: 4408de99594ba448 +Block 0009 [ 53]: 423fc44df0684f3e +Block 0009 [ 54]: 2e0c36453dd361a0 +Block 0009 [ 55]: 2d7c96f01c7fd189 +Block 0009 [ 56]: ddfdd016b5a9cebe +Block 0009 [ 57]: 2fd26d237640f4e6 +Block 0009 [ 58]: 47f5f2444af6c7cf +Block 0009 [ 59]: 0d3b91052b41c61e +Block 0009 [ 60]: d62f462898904aeb +Block 0009 [ 61]: 4b470aba5f110e6a +Block 0009 [ 62]: ffbe1984153237fb +Block 0009 [ 63]: f9df2c0fcd574baf +Block 0009 [ 64]: 08a6531cd251adfb +Block 0009 [ 65]: 1decd865fc6e0472 +Block 0009 [ 66]: bce66f9ea598171a +Block 0009 [ 67]: f5f88f984a85ee08 +Block 0009 [ 68]: feb94e6b9343480f +Block 0009 [ 69]: 2d611326d643c179 +Block 0009 [ 70]: 40a46d7c231ab873 +Block 0009 [ 71]: 4d406e17273b6c99 +Block 0009 [ 72]: 6b28c89629bcfbb4 +Block 0009 [ 73]: a748f1788d8a8a5c +Block 0009 [ 74]: ffb3b25cb52ea498 +Block 0009 [ 75]: 44817bdbe66a4938 +Block 0009 [ 76]: 9d80db4fc1cddbd9 +Block 0009 [ 77]: a1c9ebbad8bdc094 +Block 0009 [ 78]: b2ce16610b569c06 +Block 0009 [ 79]: e13ef6abd5b78468 +Block 0009 [ 80]: 3593f789c862423b +Block 0009 [ 81]: 756c40de660aab62 +Block 0009 [ 82]: 447a830e3f02dc0b +Block 0009 [ 83]: 9b2816be8209816b +Block 0009 [ 84]: 1a2e31d8cd87e262 +Block 0009 [ 85]: c162dfea41dfbeca +Block 0009 [ 86]: f1f5ae63bf8992f0 +Block 0009 [ 87]: 163c3c7ac5d4a7b0 +Block 0009 [ 88]: 5cc9ba44845532c8 +Block 0009 [ 89]: cc991c2f782193f6 +Block 0009 [ 90]: a657bcd3365b522e +Block 0009 [ 91]: 04a272455d7de47f +Block 0009 [ 92]: 4de4b0911e7d01b6 +Block 0009 [ 93]: 2a64bfd12cef0747 +Block 0009 [ 94]: 4f870d2fe4aa5fc6 +Block 0009 [ 95]: ee8b0743542e9751 +Block 0009 [ 96]: cd64ea70a570d282 +Block 0009 [ 97]: c4ab20bb416c6943 +Block 0009 [ 98]: 841bb1199cb466cd +Block 0009 [ 99]: f60f32b0b68e4f2d +Block 0009 [100]: 1a71dc489bd5c3e1 +Block 0009 [101]: c53b31169829e4bd +Block 0009 [102]: cd2c064dd76b1865 +Block 0009 [103]: 2b4a556a60e999e9 +Block 0009 [104]: 9909c2b0a72e2fa9 +Block 0009 [105]: eae2c80121344389 +Block 0009 [106]: d69778d04e1a09af +Block 0009 [107]: 32f17b7202372cc1 +Block 0009 [108]: 00790b7928166164 +Block 0009 [109]: a3fb0db8a27f0a52 +Block 0009 [110]: 1fd50e78d45abf18 +Block 0009 [111]: ace28638e7964859 +Block 0009 [112]: 365d9776d1d13dd4 +Block 0009 [113]: 466a93251e133b44 +Block 0009 [114]: dba49ff0b3b9fbfa +Block 0009 [115]: 6ea36c0808696c7b +Block 0009 [116]: 19c4e2fe051d08f7 +Block 0009 [117]: d0f9c63843224913 +Block 0009 [118]: ebc7e793b642d70f +Block 0009 [119]: 6de8c83fe37b7836 +Block 0009 [120]: b2b2af5741a01d6a +Block 0009 [121]: 31717aa7407194ac +Block 0009 [122]: eb34348ac46cb928 +Block 0009 [123]: 95e2142661045702 +Block 0009 [124]: 82892ec15063676a +Block 0009 [125]: 0a93ffd5635a838c +Block 0009 [126]: f5054bb7e05f8478 +Block 0009 [127]: f0e32a040eb8d62c +Block 0010 [ 0]: 110297f463d4717e +Block 0010 [ 1]: 3828eb6209d28c20 +Block 0010 [ 2]: 35c1584b1757b98d +Block 0010 [ 3]: 771c3556525c54af +Block 0010 [ 4]: 5226e0fa8b5a97be +Block 0010 [ 5]: d4404af7854f4531 +Block 0010 [ 6]: e91725de137e3987 +Block 0010 [ 7]: d1a77075a0e6bb9d +Block 0010 [ 8]: cd2f8e8fb6d0901b +Block 0010 [ 9]: 7e246e279c85e964 +Block 0010 [ 10]: 0da2a382740fa23f +Block 0010 [ 11]: ddbe4942cc122308 +Block 0010 [ 12]: 7a3d92ac09975af1 +Block 0010 [ 13]: 8d210d589a07defd +Block 0010 [ 14]: d12322eadbed1288 +Block 0010 [ 15]: 626edcd2444b7c78 +Block 0010 [ 16]: e10856c39889ccba +Block 0010 [ 17]: 1e7ce7e9b0d7f793 +Block 0010 [ 18]: 03022c6f8619397c +Block 0010 [ 19]: 61cadf5c6c612d5f +Block 0010 [ 20]: 266a8188eb214c7a +Block 0010 [ 21]: 8f91d5c0bf6f3bbd +Block 0010 [ 22]: 10da2e0b78c9e301 +Block 0010 [ 23]: 46f4a4577e3c3755 +Block 0010 [ 24]: 099b19a75a149e97 +Block 0010 [ 25]: f977352167b9048f +Block 0010 [ 26]: ed87004d3f744f8e +Block 0010 [ 27]: 8980201a571eeaac +Block 0010 [ 28]: f8775f7233d82ef5 +Block 0010 [ 29]: 81ad57684a96a61c +Block 0010 [ 30]: fa0e5b145e36e1c0 +Block 0010 [ 31]: 5da6470b7e51be0a +Block 0010 [ 32]: 5cd1fe96302b8b27 +Block 0010 [ 33]: d38b9cf01a52f2f8 +Block 0010 [ 34]: fa7bfeb316d67b52 +Block 0010 [ 35]: 5173a803996cad74 +Block 0010 [ 36]: 37a46313dc93e2ff +Block 0010 [ 37]: 044735689012d83d +Block 0010 [ 38]: 99cd36a5787006e7 +Block 0010 [ 39]: e2aa7201b180dc9c +Block 0010 [ 40]: 384f6cbd27e96f5d +Block 0010 [ 41]: 33e0f9f86a59665a +Block 0010 [ 42]: 17991cc270086db8 +Block 0010 [ 43]: cf93f6aa37ab95d2 +Block 0010 [ 44]: 1f2728468af489c9 +Block 0010 [ 45]: 804443ff55476398 +Block 0010 [ 46]: 5b7ed05930a6c76c +Block 0010 [ 47]: d97b71273879328a +Block 0010 [ 48]: e6950700c420861d +Block 0010 [ 49]: 2efcb94c032a0a7f +Block 0010 [ 50]: 7f4cf4eb22135d4d +Block 0010 [ 51]: e3b10b4195f7f945 +Block 0010 [ 52]: 006bb903385536a4 +Block 0010 [ 53]: 77ca0b9a29c058db +Block 0010 [ 54]: 9d8a471366bd13cb +Block 0010 [ 55]: 40d9cf15a3986f5f +Block 0010 [ 56]: 50a080ed23996ea3 +Block 0010 [ 57]: 11e420bea0c08fb7 +Block 0010 [ 58]: 2e85b9ddad230198 +Block 0010 [ 59]: f50b554c8bfbb3b7 +Block 0010 [ 60]: 08a7d72d8aa342c6 +Block 0010 [ 61]: 6cc80e83f2c15811 +Block 0010 [ 62]: b3a6e194a6fda8c0 +Block 0010 [ 63]: d7f74e7aa4f4d630 +Block 0010 [ 64]: 2df488549fb0f8dd +Block 0010 [ 65]: 9a5bc68d4474cd5c +Block 0010 [ 66]: d41aca980d1f2603 +Block 0010 [ 67]: df6552b8d6654437 +Block 0010 [ 68]: 983a9339b96cb1b8 +Block 0010 [ 69]: e3071ef62bf10360 +Block 0010 [ 70]: 3eaaa277b6d1bafc +Block 0010 [ 71]: 172345b0d9558fed +Block 0010 [ 72]: 97319c89c731a02c +Block 0010 [ 73]: 8ff07e264876973f +Block 0010 [ 74]: 01c32c0c0d654104 +Block 0010 [ 75]: 5f53661a1ee1b4c6 +Block 0010 [ 76]: a9c3da1ad696a16a +Block 0010 [ 77]: 30fe71394a311283 +Block 0010 [ 78]: 0f430ad1dea89c48 +Block 0010 [ 79]: fff048ac83a64f90 +Block 0010 [ 80]: c972527bf676f382 +Block 0010 [ 81]: ecb9a1ecb1be64c4 +Block 0010 [ 82]: 9c13e375c2ab34fd +Block 0010 [ 83]: 075bc62ae5a021b5 +Block 0010 [ 84]: 3f9b3f22818dd97d +Block 0010 [ 85]: 3eae713ae75fafaa +Block 0010 [ 86]: def4641c47a181f5 +Block 0010 [ 87]: 2ad7ac99f83eb6ef +Block 0010 [ 88]: 8d9bf96f4262d9a1 +Block 0010 [ 89]: 4bf1edb2dc479604 +Block 0010 [ 90]: 406c2f505dabf0a7 +Block 0010 [ 91]: 0776ad101c034fab +Block 0010 [ 92]: 2857c04f873dafca +Block 0010 [ 93]: a552f1e8ffa8ec48 +Block 0010 [ 94]: cd4ac3951c1c7ac8 +Block 0010 [ 95]: 991a387dc304b4d3 +Block 0010 [ 96]: 4a62ae26332cf695 +Block 0010 [ 97]: 99989a5b0ec7afe5 +Block 0010 [ 98]: ab2b76e0fb2e34dd +Block 0010 [ 99]: d3d09e0fa3dc5e77 +Block 0010 [100]: 7414b924a1f4f9fd +Block 0010 [101]: 01081a97e3667c3e +Block 0010 [102]: a879d8ae57621b88 +Block 0010 [103]: b252f12b3a3992d9 +Block 0010 [104]: b239a13aec939a49 +Block 0010 [105]: 029148ded8d39810 +Block 0010 [106]: 0f09288a2e1ad2b8 +Block 0010 [107]: f289a0a95b9d76fc +Block 0010 [108]: bc151f281383fb02 +Block 0010 [109]: f3bfe6a2939a9c5f +Block 0010 [110]: 4951bd53b83739ea +Block 0010 [111]: 20062e7ccefa3c7f +Block 0010 [112]: 20049fbcca6e1276 +Block 0010 [113]: 6554bd2ba666dbdf +Block 0010 [114]: b84b84abc76ff06e +Block 0010 [115]: 2816898ed2d362c1 +Block 0010 [116]: 2cc5d0406a9b8a30 +Block 0010 [117]: 5cb404b772ec2e72 +Block 0010 [118]: 30ff618b95dd0ca4 +Block 0010 [119]: 197e19f88bbb4c54 +Block 0010 [120]: 8efd88b018876d72 +Block 0010 [121]: d16ce6880bb48af0 +Block 0010 [122]: 8279d270c5ae1b3b +Block 0010 [123]: 6f23fa0e7ede09c2 +Block 0010 [124]: dd73f98a2379858e +Block 0010 [125]: 6fe85bbab6b21a5a +Block 0010 [126]: c05d149be2380f54 +Block 0010 [127]: d1ae698a35b02155 +Block 0011 [ 0]: bf619ba9cd33f95c +Block 0011 [ 1]: 0d2ac712c43a258a +Block 0011 [ 2]: d9dd4ee0d026984d +Block 0011 [ 3]: 646f79b969d84848 +Block 0011 [ 4]: 6d70dafdc7603cca +Block 0011 [ 5]: f12d6b70c293bef8 +Block 0011 [ 6]: 489e389aa5a7c24a +Block 0011 [ 7]: 086272b565165ee5 +Block 0011 [ 8]: c9f4fb5a39048c4d +Block 0011 [ 9]: a6f603aa70d9e5d2 +Block 0011 [ 10]: 3bf25a0bb1f7ac38 +Block 0011 [ 11]: 14ddd25c2d5e3596 +Block 0011 [ 12]: faa4e84c465394d8 +Block 0011 [ 13]: f8ef145f6844f82f +Block 0011 [ 14]: f9549b745c33d239 +Block 0011 [ 15]: b396a5075f3d4296 +Block 0011 [ 16]: 3d469a0b36f79da8 +Block 0011 [ 17]: d95f7a181fc9efbc +Block 0011 [ 18]: acf4136c4277bd85 +Block 0011 [ 19]: d77857338a5e203c +Block 0011 [ 20]: 63bf886f0d376e4d +Block 0011 [ 21]: 4afc35e28228b78b +Block 0011 [ 22]: 88ce07494723a779 +Block 0011 [ 23]: ec0a4672f81e2455 +Block 0011 [ 24]: 9b274d635cc92fbf +Block 0011 [ 25]: 8e6d72ea1532273a +Block 0011 [ 26]: b788d44eec8ed38f +Block 0011 [ 27]: ca0b197b4dc4c8e0 +Block 0011 [ 28]: 092230b70e1e4a42 +Block 0011 [ 29]: 5d625d9ac17bde09 +Block 0011 [ 30]: b93db814b66e4291 +Block 0011 [ 31]: 6f52e5601eb894ab +Block 0011 [ 32]: 0b77390efee15e79 +Block 0011 [ 33]: 82f6b168a63fe7f1 +Block 0011 [ 34]: 928a76a455f889d7 +Block 0011 [ 35]: 45c46061f47474d6 +Block 0011 [ 36]: d4065cb48f92aa76 +Block 0011 [ 37]: bf6f8c1b76f13500 +Block 0011 [ 38]: 57e3cbff98403ac9 +Block 0011 [ 39]: 4eb93a3eb96f1bdc +Block 0011 [ 40]: a0d9dac64a63e011 +Block 0011 [ 41]: 80cf457a61239ce5 +Block 0011 [ 42]: 12cbdf7f7b345bdd +Block 0011 [ 43]: 558fca889cbfb6a8 +Block 0011 [ 44]: ada62c7467f789a2 +Block 0011 [ 45]: 847e4323ebbe551a +Block 0011 [ 46]: d86b0fb2d0a54c81 +Block 0011 [ 47]: 2f9f78ce91656503 +Block 0011 [ 48]: 9224c2d9e15272ab +Block 0011 [ 49]: 57f39cdd4dbfbb37 +Block 0011 [ 50]: 5ac28368fd6414e2 +Block 0011 [ 51]: 7fea8df3452d5ff6 +Block 0011 [ 52]: 0ddb457c7ed1693f +Block 0011 [ 53]: d15eafd50e4839e6 +Block 0011 [ 54]: 70b74f4ec868eeed +Block 0011 [ 55]: 1f50fbb8eadedc4d +Block 0011 [ 56]: 2bff0b825beecb9a +Block 0011 [ 57]: f7e23f0fbf8fb5e0 +Block 0011 [ 58]: 169fc6a7da58e7c6 +Block 0011 [ 59]: c759c0fe25fdca4e +Block 0011 [ 60]: a193c01631706ff5 +Block 0011 [ 61]: 8425925525cfb70d +Block 0011 [ 62]: e36d59fa28e117e3 +Block 0011 [ 63]: 021f51f6e924bd1c +Block 0011 [ 64]: 88d912c9de684d7c +Block 0011 [ 65]: b08faaf01463fa22 +Block 0011 [ 66]: dfca8cec70dd1005 +Block 0011 [ 67]: 4518e831507f33a4 +Block 0011 [ 68]: 7265bcabed2a4d1d +Block 0011 [ 69]: 56f8f9a0f20afb0e +Block 0011 [ 70]: 9466d5828edade85 +Block 0011 [ 71]: 4a5990ef5fe1a0a1 +Block 0011 [ 72]: 9e8d71c58adf1850 +Block 0011 [ 73]: 2fce135d3f208a11 +Block 0011 [ 74]: eb02eb1a0e77cf4e +Block 0011 [ 75]: 83b8334bd764ab5f +Block 0011 [ 76]: fc98743a215282e4 +Block 0011 [ 77]: f628862aeb37e3cf +Block 0011 [ 78]: 0e285752ea8b49f6 +Block 0011 [ 79]: 45137ed52e87fc71 +Block 0011 [ 80]: f16667bed93b16e1 +Block 0011 [ 81]: 19ea703c42ba921a +Block 0011 [ 82]: e8fec569d85d1da5 +Block 0011 [ 83]: c582602a4902e2ef +Block 0011 [ 84]: 5118a85f2f85b6d2 +Block 0011 [ 85]: 5254a0abbf3e1bf6 +Block 0011 [ 86]: 864d04b8aeafaba2 +Block 0011 [ 87]: a9157728d3eace94 +Block 0011 [ 88]: 929fff7cd5c8912f +Block 0011 [ 89]: d6b565cdcbfe97a2 +Block 0011 [ 90]: f1cac3f87b2d83b1 +Block 0011 [ 91]: 391784898501b826 +Block 0011 [ 92]: 963fd42330391bb7 +Block 0011 [ 93]: 22f53f44ba19f81b +Block 0011 [ 94]: 849a3c40e7f35a6a +Block 0011 [ 95]: 2621c1353cd8fa5a +Block 0011 [ 96]: bc5b32f805e90323 +Block 0011 [ 97]: 48c9c41acfa6534d +Block 0011 [ 98]: 47e2c3054fe2863f +Block 0011 [ 99]: 61275e63f8f2c157 +Block 0011 [100]: 49cdff8f529dbe70 +Block 0011 [101]: 172135c6ebd89118 +Block 0011 [102]: 94015490366fd71a +Block 0011 [103]: 9e0975de7ab4c2ba +Block 0011 [104]: f87576ecd5896a97 +Block 0011 [105]: 3d241dfeb9eff1bf +Block 0011 [106]: 87ced3201be31c9b +Block 0011 [107]: a1b205a82e4a060b +Block 0011 [108]: 225d1ce3c11da16c +Block 0011 [109]: c07dfe2ce4aabd03 +Block 0011 [110]: 1434ee5041b82175 +Block 0011 [111]: 1c4e1b1c7334a509 +Block 0011 [112]: 60c151bfa5932a93 +Block 0011 [113]: 84d44077ee4c8253 +Block 0011 [114]: 6a4b8d6cd076e254 +Block 0011 [115]: df882989a57a6b51 +Block 0011 [116]: bbe63591d7ab0e4e +Block 0011 [117]: bb46e03a39c54fea +Block 0011 [118]: 14198e736ed8209f +Block 0011 [119]: 73a82d993ddbf317 +Block 0011 [120]: 81be44f6bb106619 +Block 0011 [121]: cb0a5d74cc13275f +Block 0011 [122]: 8abc8fb70c4dc792 +Block 0011 [123]: d47faaceb91155c7 +Block 0011 [124]: 95aa009ba3ac5d98 +Block 0011 [125]: 6d25fc5c774bec47 +Block 0011 [126]: c72751d51103cd58 +Block 0011 [127]: 726aba80485a4db1 +Block 0012 [ 0]: 73ce723169e527f6 +Block 0012 [ 1]: 308bd4738f7976a1 +Block 0012 [ 2]: c355b356d91f24d6 +Block 0012 [ 3]: 09ed9df50d935a67 +Block 0012 [ 4]: 717c7ff7c944689d +Block 0012 [ 5]: 6c5820e5948a5959 +Block 0012 [ 6]: a2cba3426fdeedcd +Block 0012 [ 7]: 0c4f78f7fe2e775f +Block 0012 [ 8]: 198c071d5b3f64ff +Block 0012 [ 9]: caf9aad5d3de5a15 +Block 0012 [ 10]: 0a9d3484d272f3ca +Block 0012 [ 11]: 3f82a2d990cce3c6 +Block 0012 [ 12]: f927453eee587c23 +Block 0012 [ 13]: 5a36887bf9b00b27 +Block 0012 [ 14]: f88bbe6c5bc73f5b +Block 0012 [ 15]: 52da3b1769a613eb +Block 0012 [ 16]: 39840c2892de1cdf +Block 0012 [ 17]: 4b805e1770f4777f +Block 0012 [ 18]: ae59fcacf8ec62a5 +Block 0012 [ 19]: aed76584ef1be382 +Block 0012 [ 20]: 477e1854261d29ae +Block 0012 [ 21]: 00c04e48d1d6438d +Block 0012 [ 22]: e43e846dfa10e2c7 +Block 0012 [ 23]: 54dc1d90c10beec6 +Block 0012 [ 24]: 31eac75291e4f891 +Block 0012 [ 25]: eeabb2fb46c0e7fa +Block 0012 [ 26]: be72d2a02c40e76f +Block 0012 [ 27]: 2c223a1d489e3e53 +Block 0012 [ 28]: 1b842e1c231e577f +Block 0012 [ 29]: 5a560f0f2e6af886 +Block 0012 [ 30]: 658dbf3060d2ed46 +Block 0012 [ 31]: cd4efafc6edde8a3 +Block 0012 [ 32]: 5218beab24ad8820 +Block 0012 [ 33]: fc844dc6d30edc70 +Block 0012 [ 34]: c03e32282b08b833 +Block 0012 [ 35]: f6526556c4c2bc8c +Block 0012 [ 36]: eef40a4c8d3246dc +Block 0012 [ 37]: d395cdddd5dcaded +Block 0012 [ 38]: 5d141c705958116f +Block 0012 [ 39]: bf6eb3d80d70a6d4 +Block 0012 [ 40]: becea1cfbd53daee +Block 0012 [ 41]: 1ffca512f562d1f7 +Block 0012 [ 42]: e8bc5235bf1f0011 +Block 0012 [ 43]: 3ee59d7fef681870 +Block 0012 [ 44]: 8316e6c7ec8d86ac +Block 0012 [ 45]: 00cc2bcfd342063e +Block 0012 [ 46]: 97abc50fdefb7beb +Block 0012 [ 47]: 7c4a3fd61c121c41 +Block 0012 [ 48]: 7eef15597ff45a1e +Block 0012 [ 49]: 2635654685e51a2a +Block 0012 [ 50]: 196d80c0220cf5e9 +Block 0012 [ 51]: 907d81d5db058770 +Block 0012 [ 52]: 5db1d4866657cca1 +Block 0012 [ 53]: 494307edf2063396 +Block 0012 [ 54]: dc19b63a79b917d0 +Block 0012 [ 55]: b9d18ad8d4260be8 +Block 0012 [ 56]: dab1095a4b004abe +Block 0012 [ 57]: e6afd37d77d008ef +Block 0012 [ 58]: 854726fc8461ca89 +Block 0012 [ 59]: a8a69473c59d37c3 +Block 0012 [ 60]: f55724283be2330b +Block 0012 [ 61]: 2dcfd5ea5ad3636a +Block 0012 [ 62]: f3848e715bf6e61b +Block 0012 [ 63]: be4d839c33f14bfd +Block 0012 [ 64]: 397abb336ac92022 +Block 0012 [ 65]: f20cee19e5e388fc +Block 0012 [ 66]: 6edd6d3d0d2323ab +Block 0012 [ 67]: e3b6c5f7c944af17 +Block 0012 [ 68]: 990fcad01d4052f0 +Block 0012 [ 69]: 629c06d809f81f90 +Block 0012 [ 70]: 5c4a5071655f899f +Block 0012 [ 71]: 40d54256be550482 +Block 0012 [ 72]: 4fe1f617c9c672b3 +Block 0012 [ 73]: 3af9e965e25ee169 +Block 0012 [ 74]: 93246b2adad69d87 +Block 0012 [ 75]: 3eb7245c60abfa3a +Block 0012 [ 76]: 411c2a17452fc250 +Block 0012 [ 77]: 5d2af0c77b854c04 +Block 0012 [ 78]: 11218a31a7d3960b +Block 0012 [ 79]: 79b6f5e1d69a33b6 +Block 0012 [ 80]: 81fbaab092b14bf3 +Block 0012 [ 81]: 9f40f1f5344bc391 +Block 0012 [ 82]: 52fd68c595c511d0 +Block 0012 [ 83]: ec28704fb787cbe2 +Block 0012 [ 84]: 2ef764aef58346ae +Block 0012 [ 85]: e76767105c7b8af2 +Block 0012 [ 86]: b7ea621da02c9d03 +Block 0012 [ 87]: 3086a0391498b2e3 +Block 0012 [ 88]: 252329e57c6144c0 +Block 0012 [ 89]: e0d034657ad118b2 +Block 0012 [ 90]: 3d81206435e4cbae +Block 0012 [ 91]: 3b3ca2059dc97c30 +Block 0012 [ 92]: aabcdf9fb844df47 +Block 0012 [ 93]: 3c6b558831ed4b92 +Block 0012 [ 94]: b7bc17b4b0f33c9d +Block 0012 [ 95]: a4a82578872fbc6d +Block 0012 [ 96]: d85124a9b6672389 +Block 0012 [ 97]: 08b17e75139006f6 +Block 0012 [ 98]: 977827cd78088f2a +Block 0012 [ 99]: c20bc30182a91fe1 +Block 0012 [100]: 91bd9bda54db837c +Block 0012 [101]: a56f2ec6fa7ae2a1 +Block 0012 [102]: 75b8aab88e62f2f6 +Block 0012 [103]: e058c358294f6c0d +Block 0012 [104]: 98343c65fbe5e6ba +Block 0012 [105]: 659c225db9887bc8 +Block 0012 [106]: 948fb28011425b40 +Block 0012 [107]: 67cf0ff8cf3e0439 +Block 0012 [108]: 26e5546ece3ef627 +Block 0012 [109]: 72aab058c6c7cbc0 +Block 0012 [110]: ccc489c7bbbcde3a +Block 0012 [111]: 65b2322e9fbb9abe +Block 0012 [112]: 52326cb2a92360aa +Block 0012 [113]: 6eb0f22b356aacda +Block 0012 [114]: 156607f0176d9d5b +Block 0012 [115]: 0e18a589d9c98b2b +Block 0012 [116]: b73ed2b9c3cddad6 +Block 0012 [117]: bb4bac45f760c708 +Block 0012 [118]: f954e80c85c61a21 +Block 0012 [119]: f72b0dea1dbd82ee +Block 0012 [120]: 061e6c6fd5c9af78 +Block 0012 [121]: d8036a836de015bc +Block 0012 [122]: c06b956b2c5944b8 +Block 0012 [123]: d354483d3da39bc5 +Block 0012 [124]: 8042853ccccdf2aa +Block 0012 [125]: cb33ae4bcdbf89f5 +Block 0012 [126]: b36b52f64c953c3e +Block 0012 [127]: 43d5c23cbf60f228 +Block 0013 [ 0]: 18e43ecb466a8968 +Block 0013 [ 1]: de0624bc4603c390 +Block 0013 [ 2]: e47c6900e1e0f9ec +Block 0013 [ 3]: 1f7523e92ceff004 +Block 0013 [ 4]: 90ea827f76ffd035 +Block 0013 [ 5]: e2207e851ad049a1 +Block 0013 [ 6]: 0dadce26fee967e3 +Block 0013 [ 7]: f6c91d95427d2e35 +Block 0013 [ 8]: d163aca31bc02437 +Block 0013 [ 9]: ae11833e1859b9dd +Block 0013 [ 10]: 0085475658b25b37 +Block 0013 [ 11]: a941662fc1bf7290 +Block 0013 [ 12]: 785b6a11ee6cdcf8 +Block 0013 [ 13]: 78ae534c17d037e9 +Block 0013 [ 14]: 5409875d5a7c1f94 +Block 0013 [ 15]: 2e57b97295d14afa +Block 0013 [ 16]: 20f11b28155fdaa0 +Block 0013 [ 17]: 49680370961a80b2 +Block 0013 [ 18]: 506ec8c10dd1ca21 +Block 0013 [ 19]: b323ba42707917f0 +Block 0013 [ 20]: 2c7ac437db4b5bc8 +Block 0013 [ 21]: 7609f06765e28d19 +Block 0013 [ 22]: 09bc9531879ebcff +Block 0013 [ 23]: 6b96f2e996fe0877 +Block 0013 [ 24]: 0be156a465407fe9 +Block 0013 [ 25]: c5c4043a6b9ab6ea +Block 0013 [ 26]: ead52b39166fc1e6 +Block 0013 [ 27]: f40357c33f749e39 +Block 0013 [ 28]: f3d43b525a872a0a +Block 0013 [ 29]: 1e62f830e3519b2e +Block 0013 [ 30]: dffcd1e0532ddf7f +Block 0013 [ 31]: ecdebc7e2df4ca61 +Block 0013 [ 32]: 956e9be0eae88846 +Block 0013 [ 33]: 5f2867f853307359 +Block 0013 [ 34]: 54f0c56e75250fc7 +Block 0013 [ 35]: d821f1a65277b0da +Block 0013 [ 36]: 5a1badcd335982e0 +Block 0013 [ 37]: 2aefcd4c13c5595f +Block 0013 [ 38]: d8cae5e2fd0ecd13 +Block 0013 [ 39]: e111ec2dea668473 +Block 0013 [ 40]: 4f94418823c5fd86 +Block 0013 [ 41]: 6cbfd543b9e6c0f3 +Block 0013 [ 42]: 635b3f358ddebe5d +Block 0013 [ 43]: e1fedaf13a785014 +Block 0013 [ 44]: cb1ecd99b31799d2 +Block 0013 [ 45]: 7a55a2101bc1badd +Block 0013 [ 46]: 3789674f01e71585 +Block 0013 [ 47]: b30e075a7084778a +Block 0013 [ 48]: 68a9b8dba31d54de +Block 0013 [ 49]: 5924e35dad98726d +Block 0013 [ 50]: 54c063d3efd3f781 +Block 0013 [ 51]: 35a5759d0e811a46 +Block 0013 [ 52]: 67f813e40948aa3e +Block 0013 [ 53]: e30f18c6a37e3ef7 +Block 0013 [ 54]: 9fa54fdd007564c4 +Block 0013 [ 55]: c20d517b50bc5f9b +Block 0013 [ 56]: 17bc793afcc2d58f +Block 0013 [ 57]: 8ee17609a1f73d66 +Block 0013 [ 58]: 9512c68643cdbc82 +Block 0013 [ 59]: 93cea37bcad14887 +Block 0013 [ 60]: e82d710423fc7374 +Block 0013 [ 61]: edba70dbc24e1ab5 +Block 0013 [ 62]: 0dbaf4429ad565f8 +Block 0013 [ 63]: fef4942ca08fed0d +Block 0013 [ 64]: ca83d6487de24384 +Block 0013 [ 65]: 9e92dfd67d866a01 +Block 0013 [ 66]: d274d461fa499a68 +Block 0013 [ 67]: 70a2e178171a42ef +Block 0013 [ 68]: 2522a77aa3935a8e +Block 0013 [ 69]: 38fcde56f53a4afb +Block 0013 [ 70]: 5e49c140c03a9923 +Block 0013 [ 71]: 171aa7389918a2e7 +Block 0013 [ 72]: 3a8f18ccd501197b +Block 0013 [ 73]: 76f0992020b3d59c +Block 0013 [ 74]: 3c373d386809a05c +Block 0013 [ 75]: 2a30a1b8155318a4 +Block 0013 [ 76]: a03fa84d01f13453 +Block 0013 [ 77]: 4a872280f5ef1a3b +Block 0013 [ 78]: c22b8619c689c0ef +Block 0013 [ 79]: dd6c265ea30559a6 +Block 0013 [ 80]: c819aafe8db166ed +Block 0013 [ 81]: 46f01e808cfe0a4a +Block 0013 [ 82]: 440f0e8ab090496f +Block 0013 [ 83]: ce51c3ecd3766d6b +Block 0013 [ 84]: 7f0b0ef92deffc64 +Block 0013 [ 85]: 116c821f6c9fdc28 +Block 0013 [ 86]: 9cc813686c478e37 +Block 0013 [ 87]: 1ff9523444a9f731 +Block 0013 [ 88]: bfc9b93360dc52fd +Block 0013 [ 89]: 453d3a0c4d2a6ce8 +Block 0013 [ 90]: e64484db10e4c9ea +Block 0013 [ 91]: f85e66468328fce4 +Block 0013 [ 92]: d3b71ef1d0857bdb +Block 0013 [ 93]: 8fc64459b1b84aa9 +Block 0013 [ 94]: 4ff3785ad108501e +Block 0013 [ 95]: 5db53ddd955530b0 +Block 0013 [ 96]: 0e9db8ed5086f981 +Block 0013 [ 97]: 8ef019feb7b74454 +Block 0013 [ 98]: b13a76096fdd138f +Block 0013 [ 99]: cb7d283fc650d0c0 +Block 0013 [100]: 2e85ae49006df7f5 +Block 0013 [101]: 6bc81aa091850cfc +Block 0013 [102]: c8337747d3a09c23 +Block 0013 [103]: 67b1769f37d721cb +Block 0013 [104]: 6cc2cd4c1bf5bfd5 +Block 0013 [105]: 2f2d8fea231dc9b5 +Block 0013 [106]: d07c5b8da4cefa1c +Block 0013 [107]: 21824639499054fb +Block 0013 [108]: 5aa3d5bd8b14ca72 +Block 0013 [109]: c5897b79d1064a0b +Block 0013 [110]: bac2bb6e9516511b +Block 0013 [111]: 7cf309367e8b306e +Block 0013 [112]: a0abfa3564cb142e +Block 0013 [113]: 0f2b7c41cde3a983 +Block 0013 [114]: 6b77066f440bb86b +Block 0013 [115]: 419b2373a574cb92 +Block 0013 [116]: cb2a2e3d1c092282 +Block 0013 [117]: f3be594d1481879e +Block 0013 [118]: 2e56778ff9740d34 +Block 0013 [119]: 9eb7964504e4b519 +Block 0013 [120]: 4202d23d721d162b +Block 0013 [121]: a1d0610d3bd8fbbb +Block 0013 [122]: 070e2baa1f4b17fe +Block 0013 [123]: d8465bb41a1826e8 +Block 0013 [124]: f2dc327281534bfb +Block 0013 [125]: a8674141208bf59d +Block 0013 [126]: 414187ba004fc431 +Block 0013 [127]: 85664d6cdae69ec7 +Block 0014 [ 0]: 273f89c3c4d02299 +Block 0014 [ 1]: 65cdbad74085012f +Block 0014 [ 2]: 1b209b55833ad98e +Block 0014 [ 3]: ecc8b976b1a67ae9 +Block 0014 [ 4]: cb5166556f87a25b +Block 0014 [ 5]: b7d1f89b87526040 +Block 0014 [ 6]: 373382b4d510dfd3 +Block 0014 [ 7]: 04fbe454c5ea3f3b +Block 0014 [ 8]: 26ee04db4cee85e1 +Block 0014 [ 9]: b49d3ce4b2a068fb +Block 0014 [ 10]: 1e0284184e27ad46 +Block 0014 [ 11]: 9f05fcd205c15aad +Block 0014 [ 12]: 8c84f8290060fef1 +Block 0014 [ 13]: fe0f3f65a0e49203 +Block 0014 [ 14]: f0cfcb1a06f79993 +Block 0014 [ 15]: 453a2a0021034051 +Block 0014 [ 16]: 442c6629ea64dda6 +Block 0014 [ 17]: ce15b0b7ad384fd9 +Block 0014 [ 18]: 039550d4511e19c8 +Block 0014 [ 19]: 54bde38889bb00a5 +Block 0014 [ 20]: 48dda5fe7bd65bc0 +Block 0014 [ 21]: 1f0b7375d9cdd05b +Block 0014 [ 22]: 48df34a0dbf136ba +Block 0014 [ 23]: b20a359e9281ea3b +Block 0014 [ 24]: 431c29ff33a999d3 +Block 0014 [ 25]: 0968e84781dd8bde +Block 0014 [ 26]: 182b2d58441e26ee +Block 0014 [ 27]: fb23c95d4d4abcbe +Block 0014 [ 28]: 25b087fb10a7b02d +Block 0014 [ 29]: 0591464d8c341c3a +Block 0014 [ 30]: 394ed79a62d9c0ae +Block 0014 [ 31]: d9bf954211f9f238 +Block 0014 [ 32]: f3e8633abc0da2c7 +Block 0014 [ 33]: b55d953f9561dc9c +Block 0014 [ 34]: 34b94b3f5a185d38 +Block 0014 [ 35]: 41994961bc5912b4 +Block 0014 [ 36]: 0a49a8f3fa468833 +Block 0014 [ 37]: 3168909e7e87dcd8 +Block 0014 [ 38]: 49a79f694d38b937 +Block 0014 [ 39]: aeca197acd807826 +Block 0014 [ 40]: e78018bda087ed66 +Block 0014 [ 41]: caf0caca076d215a +Block 0014 [ 42]: df57e8aaa56e06e8 +Block 0014 [ 43]: e04757a1866d206f +Block 0014 [ 44]: b14d1f7e87a9b7f4 +Block 0014 [ 45]: 1f2fed83aafb7139 +Block 0014 [ 46]: e62bb58ff3b8e493 +Block 0014 [ 47]: 0f4db670f7d7e617 +Block 0014 [ 48]: 49393771498d5f3d +Block 0014 [ 49]: 40ff217967d0e6b4 +Block 0014 [ 50]: 43361453b3774655 +Block 0014 [ 51]: 798eff0f49dcf729 +Block 0014 [ 52]: 2b52f449561c01d6 +Block 0014 [ 53]: 7f22e3d534852755 +Block 0014 [ 54]: 5c5a01509a2ceaf1 +Block 0014 [ 55]: e723988ef8d43faf +Block 0014 [ 56]: 5cd2a452f32589e3 +Block 0014 [ 57]: 4492d0afff901013 +Block 0014 [ 58]: 5f74c6b8364a8b16 +Block 0014 [ 59]: 531f2fdffbed3c1b +Block 0014 [ 60]: b58c72a19555d9e9 +Block 0014 [ 61]: a2b49eee8d78c6ad +Block 0014 [ 62]: ac5b58636303f51d +Block 0014 [ 63]: bbb04381f89de22b +Block 0014 [ 64]: 310bb057d316746b +Block 0014 [ 65]: df609a73aa6f04c1 +Block 0014 [ 66]: dde1e330db4a2353 +Block 0014 [ 67]: df8bd2c3aa4ed8d5 +Block 0014 [ 68]: a354ff5ec71203d3 +Block 0014 [ 69]: a63bd02607f399dc +Block 0014 [ 70]: f686121f14151e98 +Block 0014 [ 71]: 99b2bb138b954be7 +Block 0014 [ 72]: 308625b4491ccb32 +Block 0014 [ 73]: 297a597e8c04e7c4 +Block 0014 [ 74]: c126cb6c2c547416 +Block 0014 [ 75]: 95466d15799cf5b7 +Block 0014 [ 76]: 363687f488132959 +Block 0014 [ 77]: 1a7824f884e546e5 +Block 0014 [ 78]: 6f2591631287db18 +Block 0014 [ 79]: f4b6521106d317a2 +Block 0014 [ 80]: 7e3835fc300cf076 +Block 0014 [ 81]: 1caac48041fba75f +Block 0014 [ 82]: 8212146ba19b4068 +Block 0014 [ 83]: ba118608fd5f86e0 +Block 0014 [ 84]: d909e703db90c331 +Block 0014 [ 85]: a09b6bfbe24eaf6b +Block 0014 [ 86]: 6996644aa1b4214e +Block 0014 [ 87]: eb02ad1a13fade24 +Block 0014 [ 88]: ad14cb674fdc24fe +Block 0014 [ 89]: 75a579cc9bc86d81 +Block 0014 [ 90]: 11a448208b1bad80 +Block 0014 [ 91]: dd7e817951488ebb +Block 0014 [ 92]: 84319b6e0a938a8e +Block 0014 [ 93]: 601a085543c1f304 +Block 0014 [ 94]: a26ec834a5008ed6 +Block 0014 [ 95]: 065886b182b12de9 +Block 0014 [ 96]: bca693abbc55f94e +Block 0014 [ 97]: d75838f966cd197d +Block 0014 [ 98]: 0fc473ed39950739 +Block 0014 [ 99]: 86b5eeb016c5c09e +Block 0014 [100]: b620889b18b197e4 +Block 0014 [101]: 7bd685894288c621 +Block 0014 [102]: a4fb318772e1f30e +Block 0014 [103]: 75d292c046b66ba8 +Block 0014 [104]: 106da59cc1adc7b9 +Block 0014 [105]: f72257945ad6c61e +Block 0014 [106]: 97f73c5a48c7eb8f +Block 0014 [107]: bbf3c353fe34c7ce +Block 0014 [108]: ba8b83a9f90f632e +Block 0014 [109]: 4747de44c251976d +Block 0014 [110]: f18a8336d5c33cdf +Block 0014 [111]: c94db7537973cc65 +Block 0014 [112]: 11e1046ee6ffa84a +Block 0014 [113]: 61ede68d3dd7a018 +Block 0014 [114]: 840a15e6cdb6615a +Block 0014 [115]: c35bece40424bee4 +Block 0014 [116]: 63d05f3e0c4f1d1e +Block 0014 [117]: e802bb16993cf741 +Block 0014 [118]: 39ee29de862cd4bf +Block 0014 [119]: 6c9e966cba8180ea +Block 0014 [120]: 0f31cfc44385b89a +Block 0014 [121]: 36ab1b02706b383d +Block 0014 [122]: d8e57c05760ab650 +Block 0014 [123]: 0745e27d24cb16b5 +Block 0014 [124]: e588703fb8d7bc20 +Block 0014 [125]: 0644bdce31a77191 +Block 0014 [126]: 1bd0666d9975b8f9 +Block 0014 [127]: 7dc4943f398250a6 +Block 0015 [ 0]: 4e7562e99872522b +Block 0015 [ 1]: 66b8a4b078db303c +Block 0015 [ 2]: 4f9e3d64d3c842cf +Block 0015 [ 3]: c22b2bdbf886ef3c +Block 0015 [ 4]: cdd4df9530916a8d +Block 0015 [ 5]: 23bb0f61caf2b262 +Block 0015 [ 6]: 17c2092fa60f6f45 +Block 0015 [ 7]: 4125dd598e088602 +Block 0015 [ 8]: 8406d6514999d625 +Block 0015 [ 9]: 8467b8c69044a698 +Block 0015 [ 10]: 1418ded13a87f1c1 +Block 0015 [ 11]: ec81553a84582651 +Block 0015 [ 12]: 6d37718ba2e32dc4 +Block 0015 [ 13]: 31119a7d298fedba +Block 0015 [ 14]: 6aec539cbe7a2d82 +Block 0015 [ 15]: 1302e8bf03137898 +Block 0015 [ 16]: 27f7482fd8b4c288 +Block 0015 [ 17]: 211f11d1af0df544 +Block 0015 [ 18]: b610c439809337bc +Block 0015 [ 19]: 51ef516a43d28553 +Block 0015 [ 20]: d6953153439c5df9 +Block 0015 [ 21]: 8bae6253e709b68f +Block 0015 [ 22]: 68065cd35f15374f +Block 0015 [ 23]: 6a238be5cea416af +Block 0015 [ 24]: 977d7259234f6365 +Block 0015 [ 25]: 4cd916b891b0778f +Block 0015 [ 26]: 35116f1080cef277 +Block 0015 [ 27]: 568c31f4ed06dd0d +Block 0015 [ 28]: f3036b593431b2f2 +Block 0015 [ 29]: 734441677e625cd7 +Block 0015 [ 30]: f891ecf5e790d153 +Block 0015 [ 31]: 7b4959ff7cd052ed +Block 0015 [ 32]: 7e90fb5ae04ec9ec +Block 0015 [ 33]: 278bdb2b3068750d +Block 0015 [ 34]: 542970101d9e03b5 +Block 0015 [ 35]: 92613dff6f3cace4 +Block 0015 [ 36]: 0bca0734e50828f7 +Block 0015 [ 37]: 93d8a2694b1228fd +Block 0015 [ 38]: 58f220eede1aee8d +Block 0015 [ 39]: 1296ac6d714977aa +Block 0015 [ 40]: b10bfd20792f958f +Block 0015 [ 41]: e51bb8dafb1cac13 +Block 0015 [ 42]: 0f033677bae35a45 +Block 0015 [ 43]: 8815c9cc589ef617 +Block 0015 [ 44]: 0a7588f5ba0585b3 +Block 0015 [ 45]: 561c9266bf857827 +Block 0015 [ 46]: 1a658bb9854aa89d +Block 0015 [ 47]: 2bc84c130bf82b05 +Block 0015 [ 48]: ab8019ce7e71d1df +Block 0015 [ 49]: 011cfb35e8763a17 +Block 0015 [ 50]: c9173bccc4ca9678 +Block 0015 [ 51]: bbcb9e737c362350 +Block 0015 [ 52]: 09e15c0437a57cdb +Block 0015 [ 53]: 64f684ab037429d6 +Block 0015 [ 54]: 1420435f8cdd5c66 +Block 0015 [ 55]: 36adee091cfc29ee +Block 0015 [ 56]: 1fde9df5dbff0132 +Block 0015 [ 57]: b6a34569f36bc4c7 +Block 0015 [ 58]: 8eb15a83c5d21868 +Block 0015 [ 59]: 660cd0e9c8a1a7d8 +Block 0015 [ 60]: e54badb052c928ee +Block 0015 [ 61]: ac8cc341e0ae1af5 +Block 0015 [ 62]: 5155906cc20e5e77 +Block 0015 [ 63]: d86576106452b0f0 +Block 0015 [ 64]: c66032c9204546e4 +Block 0015 [ 65]: 8332b4874131b9cb +Block 0015 [ 66]: 47ae353d4464335f +Block 0015 [ 67]: fd646e4545794a48 +Block 0015 [ 68]: 9fd0218acae10f24 +Block 0015 [ 69]: f2f6040ffbc6e58f +Block 0015 [ 70]: 388720e8c1d2dc12 +Block 0015 [ 71]: 822980335abb942c +Block 0015 [ 72]: a54e39961e5e6203 +Block 0015 [ 73]: 4f8eea2afae53a05 +Block 0015 [ 74]: ec36590c61711e62 +Block 0015 [ 75]: 1d044f7eb1edbb8e +Block 0015 [ 76]: 020f47bb7c4dc9b0 +Block 0015 [ 77]: dc8cf730af322a2f +Block 0015 [ 78]: 5ba84a051d763d7b +Block 0015 [ 79]: e04e796053d22286 +Block 0015 [ 80]: 1fa5ce52fc8565a6 +Block 0015 [ 81]: b25f1c05d7490304 +Block 0015 [ 82]: a4e0006cce1fa914 +Block 0015 [ 83]: 3279c3cde2c9ecec +Block 0015 [ 84]: 689361e4370c48b6 +Block 0015 [ 85]: 77567214a9d5dd81 +Block 0015 [ 86]: f4877ca9650391cc +Block 0015 [ 87]: 93747ddab39b430a +Block 0015 [ 88]: 2c0b37f027b54360 +Block 0015 [ 89]: 052529d6af326a57 +Block 0015 [ 90]: 91357d945a80cdb8 +Block 0015 [ 91]: 2fda3ba647eac74c +Block 0015 [ 92]: f5c21a8e76fa19d3 +Block 0015 [ 93]: 69c8bf807e40f728 +Block 0015 [ 94]: 7177057f6df7fab8 +Block 0015 [ 95]: 19637448baea9365 +Block 0015 [ 96]: 1bc3c05cd0a7e170 +Block 0015 [ 97]: 8b175f281aa5184c +Block 0015 [ 98]: 22f878ec508d2505 +Block 0015 [ 99]: 02bad20f789cc371 +Block 0015 [100]: df485d396e80da2e +Block 0015 [101]: e1177e38552b3b0f +Block 0015 [102]: cd5d9d315a42b212 +Block 0015 [103]: 4ed4199994fc0503 +Block 0015 [104]: b4556ef1bbf50d9b +Block 0015 [105]: 27ec9c33c2817064 +Block 0015 [106]: 2cb72f64b92601eb +Block 0015 [107]: af35f896991a8829 +Block 0015 [108]: a8a6bed2402f441f +Block 0015 [109]: 92371ee6ee3dd914 +Block 0015 [110]: f01d46477e83f53c +Block 0015 [111]: 157f0bc4848bf4e7 +Block 0015 [112]: b8accc3eadeda0a7 +Block 0015 [113]: d234ef67c125e7ef +Block 0015 [114]: d3ad74bedef4c4fd +Block 0015 [115]: 9d647f2d0f69b7df +Block 0015 [116]: 7508119dee6aeb48 +Block 0015 [117]: 28f0c80b6803f8c8 +Block 0015 [118]: 7f7528ded9487889 +Block 0015 [119]: af444f8e9ad26d92 +Block 0015 [120]: 1e849f3d83b05579 +Block 0015 [121]: 3905d4df49382f60 +Block 0015 [122]: 0579d173ff4e01dd +Block 0015 [123]: 7ad8e9bd97862430 +Block 0015 [124]: 9d9df0ba6442503f +Block 0015 [125]: e83d5bffc3957d64 +Block 0015 [126]: dec92b7cb93eb3d8 +Block 0015 [127]: 132eceec8b789472 +Block 0016 [ 0]: a7c4bd9c8195e5ae +Block 0016 [ 1]: d2e7203b85272ece +Block 0016 [ 2]: c4c57f73c5463166 +Block 0016 [ 3]: 703ab3c8d9c1db19 +Block 0016 [ 4]: 9720fe7c801a431e +Block 0016 [ 5]: 4b9783e71df58bb1 +Block 0016 [ 6]: d100be4423e41516 +Block 0016 [ 7]: 1f5bc28255df4c18 +Block 0016 [ 8]: dc29d9e528350071 +Block 0016 [ 9]: 70e98de92f01c8e8 +Block 0016 [ 10]: 082a279585108603 +Block 0016 [ 11]: 12824a1c6baddbf8 +Block 0016 [ 12]: 299b198d5687861b +Block 0016 [ 13]: d764532121fcb048 +Block 0016 [ 14]: 7ed58a31dc247ca1 +Block 0016 [ 15]: 04974b0e380e190e +Block 0016 [ 16]: 005cd3437ce2b618 +Block 0016 [ 17]: 4d2160b2e9929125 +Block 0016 [ 18]: 4c2f1164bd9572ca +Block 0016 [ 19]: e45ce310e0ab8651 +Block 0016 [ 20]: 4d4ce7e432b5ef92 +Block 0016 [ 21]: 5598f75c0e3ed39e +Block 0016 [ 22]: 74a116c69967d582 +Block 0016 [ 23]: 7a61a7262e89199d +Block 0016 [ 24]: 2a70ca5bd3b70742 +Block 0016 [ 25]: b176ad069e401739 +Block 0016 [ 26]: 08ec43669e715bf5 +Block 0016 [ 27]: 834f52898a5622ed +Block 0016 [ 28]: 69fc86a4ae45b482 +Block 0016 [ 29]: f8f87fb7c99b53c9 +Block 0016 [ 30]: 8b26ba5c4aaaf50d +Block 0016 [ 31]: 257a9e3be7804fd6 +Block 0016 [ 32]: 92b35066abb159db +Block 0016 [ 33]: d5652c3400531043 +Block 0016 [ 34]: 17121e2c27c5243a +Block 0016 [ 35]: bd2429d2c6881bfb +Block 0016 [ 36]: 3fe2e56950c12c7d +Block 0016 [ 37]: 2d4b8a1bf11c6257 +Block 0016 [ 38]: 04aa03aead29ddaf +Block 0016 [ 39]: bca22327be578191 +Block 0016 [ 40]: f75a1c32c133c5a0 +Block 0016 [ 41]: 5789b745ce7deaa6 +Block 0016 [ 42]: 19d1f1f0f0307e01 +Block 0016 [ 43]: a74e6d13a3b0e57b +Block 0016 [ 44]: d427fb2528c9a0a2 +Block 0016 [ 45]: 4e06a13184d4589f +Block 0016 [ 46]: b3a015cb32e2fa41 +Block 0016 [ 47]: 89083dd7a3a7ea7b +Block 0016 [ 48]: 7f8197bba08ae770 +Block 0016 [ 49]: f8173c4a7d9e9a20 +Block 0016 [ 50]: a25ef0122bb3e4fe +Block 0016 [ 51]: a8cfcf2ccb632274 +Block 0016 [ 52]: 4794a1c6e0c6fd3a +Block 0016 [ 53]: 28bfebcf8eba67fd +Block 0016 [ 54]: 548ce35ad71a6de8 +Block 0016 [ 55]: 55e14585214b44ae +Block 0016 [ 56]: 4f2c91227ef2f67e +Block 0016 [ 57]: 1f46ff01df8c7b92 +Block 0016 [ 58]: 176e93db8da1c1aa +Block 0016 [ 59]: c1999f8432873a9a +Block 0016 [ 60]: f253261d5c603127 +Block 0016 [ 61]: 4dc28da5758a3ecc +Block 0016 [ 62]: 9dc6739c55bfe672 +Block 0016 [ 63]: d46ceb9c82cf77f0 +Block 0016 [ 64]: 606ace0c4e59088c +Block 0016 [ 65]: 6a2b1c743bed4464 +Block 0016 [ 66]: a222bb63a9d1dfa4 +Block 0016 [ 67]: 7bf4a973bb0ea950 +Block 0016 [ 68]: b6e4eb111b0f90e9 +Block 0016 [ 69]: 963b4f01ca24e49a +Block 0016 [ 70]: f12a07803f119709 +Block 0016 [ 71]: c9a4bd99c942bb93 +Block 0016 [ 72]: 1b631319178a8b8b +Block 0016 [ 73]: 13dce9b5956e7c62 +Block 0016 [ 74]: af1ab6950e39073a +Block 0016 [ 75]: 2077fc99c62a3629 +Block 0016 [ 76]: 7b17e876bc56d9a1 +Block 0016 [ 77]: 5697e81e5b10b640 +Block 0016 [ 78]: ec1a36a6ba2668c2 +Block 0016 [ 79]: ce3e10c7c721e1aa +Block 0016 [ 80]: d55eb97cd2b697ca +Block 0016 [ 81]: 7d6190610198b4a4 +Block 0016 [ 82]: 6eaf57dbad34d038 +Block 0016 [ 83]: 61e3393f4c4b9a42 +Block 0016 [ 84]: e3c0008bbe5960d7 +Block 0016 [ 85]: c6f809afbee36fea +Block 0016 [ 86]: 4c3d6ed4514efa91 +Block 0016 [ 87]: 0897a22b8fd03be3 +Block 0016 [ 88]: 0103454f10ab0cb1 +Block 0016 [ 89]: a4a40dd908a3e32d +Block 0016 [ 90]: 2865f329d9da074f +Block 0016 [ 91]: 3fc7f288b723d94e +Block 0016 [ 92]: 9f5fe6a83da6c0b3 +Block 0016 [ 93]: d96214e995bc42dc +Block 0016 [ 94]: 4d17727350dc92fb +Block 0016 [ 95]: 99e33bc47e06c103 +Block 0016 [ 96]: 566bd4910d1149e6 +Block 0016 [ 97]: deb495e41515c67c +Block 0016 [ 98]: 9dda393d183ebe5e +Block 0016 [ 99]: 50da7b9bd87c0620 +Block 0016 [100]: 20eaca05f8caecf0 +Block 0016 [101]: 73f201cfabe4e3df +Block 0016 [102]: 8837f8da8260eb0f +Block 0016 [103]: afec76bbd77b1a05 +Block 0016 [104]: 94318f9750f6a554 +Block 0016 [105]: 8fdb5ad4d8f03be0 +Block 0016 [106]: b13106b580105096 +Block 0016 [107]: a3ef3f3a8518a008 +Block 0016 [108]: b85051713552ee6d +Block 0016 [109]: abd559c687293ffd +Block 0016 [110]: c701a56b69c9670f +Block 0016 [111]: 9fe8ce8a418c1029 +Block 0016 [112]: 5131ac1b41dc1db1 +Block 0016 [113]: a8f5622b22294904 +Block 0016 [114]: 99d166b28c228cba +Block 0016 [115]: 4221fa4de0332567 +Block 0016 [116]: 7e5e49691c67a3b0 +Block 0016 [117]: 04c18bdb2bbe716e +Block 0016 [118]: 6c95bba9a6a0066e +Block 0016 [119]: 65913aae6e7f3496 +Block 0016 [120]: 6ccee1cf9135225e +Block 0016 [121]: eea59d57c3c1067b +Block 0016 [122]: bc53b79d836fcd67 +Block 0016 [123]: 005b4b44a8c75488 +Block 0016 [124]: 75a0c228c4925ca1 +Block 0016 [125]: 51db30da0208afa3 +Block 0016 [126]: c3fa22b10c158f11 +Block 0016 [127]: 32f9bfdf3810cffb +Block 0017 [ 0]: 55f864a4bba04b69 +Block 0017 [ 1]: 86688ea3b4c7b570 +Block 0017 [ 2]: 4acb9000c989e990 +Block 0017 [ 3]: a684cce37b3dbecf +Block 0017 [ 4]: 1308047031fd0b09 +Block 0017 [ 5]: 48d0396732b7d297 +Block 0017 [ 6]: e65eab4b35fdc1e8 +Block 0017 [ 7]: f8f55563c27513ad +Block 0017 [ 8]: 43631c52a17d0455 +Block 0017 [ 9]: 7c58534e0153d743 +Block 0017 [ 10]: b680014bde5a5b00 +Block 0017 [ 11]: a98686fa6034fb55 +Block 0017 [ 12]: b40e7cd918e4bb6b +Block 0017 [ 13]: 7a129caa8f7b7ecd +Block 0017 [ 14]: 7a2c5f80068ed988 +Block 0017 [ 15]: 74930f06e7818b64 +Block 0017 [ 16]: 699df22ad1c2b7a7 +Block 0017 [ 17]: 935ab251bd87d363 +Block 0017 [ 18]: 0ae1d9012e3edbe5 +Block 0017 [ 19]: 32ea4d9dd0b8a926 +Block 0017 [ 20]: 547db28a60aa43e5 +Block 0017 [ 21]: 6c9ee0a9de7f1b87 +Block 0017 [ 22]: 905cc8aaf66a86eb +Block 0017 [ 23]: 7d20f5583a60e2f3 +Block 0017 [ 24]: e34f5bbbfa73d678 +Block 0017 [ 25]: d61c1b847c02150f +Block 0017 [ 26]: 41cb644e15d0b052 +Block 0017 [ 27]: e00227734f066173 +Block 0017 [ 28]: d8af76bd1770ab69 +Block 0017 [ 29]: b79d451c214a4bc4 +Block 0017 [ 30]: 2f5402b7495d5cb6 +Block 0017 [ 31]: bebecb6d82b81cab +Block 0017 [ 32]: 840c99b3a37ee1c3 +Block 0017 [ 33]: eee590dc48ce4c28 +Block 0017 [ 34]: 6b75a284765b0d20 +Block 0017 [ 35]: d4d30ec02cef9dd5 +Block 0017 [ 36]: 594fa4b9f2e1f661 +Block 0017 [ 37]: 14d30d5dbcbbf39a +Block 0017 [ 38]: 97f18e14fc209bf3 +Block 0017 [ 39]: ad730f490aa5a7fc +Block 0017 [ 40]: 7cf845139f9df67a +Block 0017 [ 41]: 090a6c6adb749c17 +Block 0017 [ 42]: c66fc330fe7a832d +Block 0017 [ 43]: 7d046a6232b6644e +Block 0017 [ 44]: eccd8b00bb5c89ae +Block 0017 [ 45]: cfa80b3ca9b32666 +Block 0017 [ 46]: cf538995385e0d84 +Block 0017 [ 47]: 5a058bf3cb834267 +Block 0017 [ 48]: 734d6406b7c25f24 +Block 0017 [ 49]: 58f2c405e68c867b +Block 0017 [ 50]: 3dac578d2f388db0 +Block 0017 [ 51]: 00cd551f962e2d02 +Block 0017 [ 52]: 49b13b2924e88a93 +Block 0017 [ 53]: e7743f5443a9d274 +Block 0017 [ 54]: 98dd74f1733f61bc +Block 0017 [ 55]: 711854c53a5a12c2 +Block 0017 [ 56]: 01ba975458f076c1 +Block 0017 [ 57]: 2935ddb4a0a9a780 +Block 0017 [ 58]: 98a3847b5f5a92b1 +Block 0017 [ 59]: f6b51f815727a771 +Block 0017 [ 60]: 83d455831270fa14 +Block 0017 [ 61]: bf01382f3fb5dc3b +Block 0017 [ 62]: 1e40bfb6f2493fe3 +Block 0017 [ 63]: 5a861f123e59c889 +Block 0017 [ 64]: 44569ccf53d43812 +Block 0017 [ 65]: 08e3be00922024dd +Block 0017 [ 66]: b30ea60175ed31b8 +Block 0017 [ 67]: c67ada13ea4ef796 +Block 0017 [ 68]: 6ae9bb2e162e1793 +Block 0017 [ 69]: d16637c04dd7479b +Block 0017 [ 70]: 82d1f83bfa388973 +Block 0017 [ 71]: a6ee8701855d80ad +Block 0017 [ 72]: e6a6f0f9a815394a +Block 0017 [ 73]: b09d9a2c1ba5f6c6 +Block 0017 [ 74]: 29253a5eb8f062ec +Block 0017 [ 75]: 9f2f42051b859c49 +Block 0017 [ 76]: 7a553bd4e61add79 +Block 0017 [ 77]: 49f5b81d6d3da61a +Block 0017 [ 78]: 4a2a6b70585823f2 +Block 0017 [ 79]: e0ba481ebbb314a2 +Block 0017 [ 80]: 2e026a086b59c6e5 +Block 0017 [ 81]: af75fc6519e8292b +Block 0017 [ 82]: 68f34b44c3d6ce1f +Block 0017 [ 83]: 66414b29e763ca01 +Block 0017 [ 84]: 7bb093c4cbee74d9 +Block 0017 [ 85]: 52a4474b0cb7c318 +Block 0017 [ 86]: 0514f43a6f43fa6e +Block 0017 [ 87]: 88678d0d92fc9d04 +Block 0017 [ 88]: 9aca117183c360cf +Block 0017 [ 89]: 22b278c99c1be55f +Block 0017 [ 90]: 734f078cd0c14fe4 +Block 0017 [ 91]: a6c4697929b35037 +Block 0017 [ 92]: 20caff1ac11c6a3b +Block 0017 [ 93]: b7b58e29c410063c +Block 0017 [ 94]: f5f82a0e4ffb425c +Block 0017 [ 95]: 1d1faf6a9e04f749 +Block 0017 [ 96]: f61180a10c47e350 +Block 0017 [ 97]: 90c2d0f116370800 +Block 0017 [ 98]: 245c6a8c032df64e +Block 0017 [ 99]: 72af2e2387729677 +Block 0017 [100]: 255fef7d0f299493 +Block 0017 [101]: 63696cd15a9827db +Block 0017 [102]: 9ff1a677815906e9 +Block 0017 [103]: cfe7645e84fbcc6b +Block 0017 [104]: 7d118f5c1773a380 +Block 0017 [105]: 53c22df34ab0c79d +Block 0017 [106]: e60cafb5a84da024 +Block 0017 [107]: c71b19e25f00eaca +Block 0017 [108]: 70a2599c461d4b5a +Block 0017 [109]: a1defaf5d43782e7 +Block 0017 [110]: 307173d4eb84a5f0 +Block 0017 [111]: b2965ee119aae588 +Block 0017 [112]: aea1214bdc220904 +Block 0017 [113]: af783e47a62e2905 +Block 0017 [114]: c17c6bd0dd07543e +Block 0017 [115]: bc2f4f61b3d4bc42 +Block 0017 [116]: 427af793fe06f68e +Block 0017 [117]: d3ddbc5545d45375 +Block 0017 [118]: 7e8f88721e1d599e +Block 0017 [119]: 2fddf0a0a1d0b8de +Block 0017 [120]: 536c66fe9d3064d4 +Block 0017 [121]: ca596ae712b194c4 +Block 0017 [122]: 2d98514c3a3fc1a3 +Block 0017 [123]: 2099f96fa5525447 +Block 0017 [124]: 3a0da830930120fa +Block 0017 [125]: f65c0f3d4d80ec4d +Block 0017 [126]: b02733acf2e0bd07 +Block 0017 [127]: 9a777043164a9ecb +Block 0018 [ 0]: 9757cc1f8fc67731 +Block 0018 [ 1]: 35bf6c0a07d6151b +Block 0018 [ 2]: 4a562b10d3cb3b5b +Block 0018 [ 3]: 3837df4668b638ff +Block 0018 [ 4]: fd8641b21b4bde24 +Block 0018 [ 5]: 7a4c20b761f213bf +Block 0018 [ 6]: c7fbe70faf6e78ad +Block 0018 [ 7]: a35a01acc5baae2d +Block 0018 [ 8]: ba8375042c16a408 +Block 0018 [ 9]: 2c17a49df0210514 +Block 0018 [ 10]: 54bcfc9c5e61a2df +Block 0018 [ 11]: 20b669a6e9371de8 +Block 0018 [ 12]: 5f60f6fa0ce2b5cf +Block 0018 [ 13]: 8876d888784de54d +Block 0018 [ 14]: 5a14abc68ade70d2 +Block 0018 [ 15]: caf7c3bd9bb8d627 +Block 0018 [ 16]: 6aa9f50c26c864b4 +Block 0018 [ 17]: 42c651a28985bfe1 +Block 0018 [ 18]: 299525de82ccf4b7 +Block 0018 [ 19]: 805093fc25cf4833 +Block 0018 [ 20]: fd71d130eead0c07 +Block 0018 [ 21]: 44e09d7e4e7c79ef +Block 0018 [ 22]: d6c9edddb29687b1 +Block 0018 [ 23]: 9ea7f4af4c6e404c +Block 0018 [ 24]: 44b15a0e484e20a8 +Block 0018 [ 25]: 4c0a4ea8ae119282 +Block 0018 [ 26]: 1625138e2fec19e0 +Block 0018 [ 27]: 8c431896e4c7f89f +Block 0018 [ 28]: 1e391f9440f50bbb +Block 0018 [ 29]: abe564717646535b +Block 0018 [ 30]: bfdd2d6c7a615b0c +Block 0018 [ 31]: a476b4167fe0d71e +Block 0018 [ 32]: 2ee078458a627435 +Block 0018 [ 33]: 0f92479fb6bbe7db +Block 0018 [ 34]: f4910af60181eea0 +Block 0018 [ 35]: bdf2c1d96257032f +Block 0018 [ 36]: aa18a53adae220ea +Block 0018 [ 37]: 4680eb844619121c +Block 0018 [ 38]: b5381e15c57b1f8d +Block 0018 [ 39]: a1adbf1d3fc63488 +Block 0018 [ 40]: 456a44ce404b2e50 +Block 0018 [ 41]: 3d588bcdee76376a +Block 0018 [ 42]: 8a7c2c43a9315512 +Block 0018 [ 43]: fe46734e4c364784 +Block 0018 [ 44]: 10de3b6380dcd058 +Block 0018 [ 45]: 04ce55eadbd266fb +Block 0018 [ 46]: 3114eac782bf5a3f +Block 0018 [ 47]: ef503aec668a2980 +Block 0018 [ 48]: 73b2e046a73cce5e +Block 0018 [ 49]: 06dc65dc97686835 +Block 0018 [ 50]: 9afa20ac608c0c95 +Block 0018 [ 51]: a722124767a49fc1 +Block 0018 [ 52]: 3ca0c4282bb241c1 +Block 0018 [ 53]: e3eb230c04aa6faa +Block 0018 [ 54]: 27a925e841a0081a +Block 0018 [ 55]: 92fa113d0e62b8d1 +Block 0018 [ 56]: e1a23f578ad3b6e2 +Block 0018 [ 57]: f0a40e4f904293cb +Block 0018 [ 58]: 24868ed872e36b84 +Block 0018 [ 59]: 25e7a53a161bfcaf +Block 0018 [ 60]: 26e1c9c12b5939e1 +Block 0018 [ 61]: a13029dc4e435467 +Block 0018 [ 62]: 60dee45dc1d2c33b +Block 0018 [ 63]: e5060012f7e3c08f +Block 0018 [ 64]: d80235bfd51562b4 +Block 0018 [ 65]: 9e65692aa89c51ae +Block 0018 [ 66]: f6189d85d588d4b8 +Block 0018 [ 67]: 6db9500363de22cd +Block 0018 [ 68]: cc5a9622b64f01db +Block 0018 [ 69]: e4c795a27f76dd79 +Block 0018 [ 70]: 3e2371f3bf3bc607 +Block 0018 [ 71]: 91613779534e6f9d +Block 0018 [ 72]: 012e99a50f2ef5af +Block 0018 [ 73]: 0f72353196725129 +Block 0018 [ 74]: 56c1e7f4592babb9 +Block 0018 [ 75]: ffd4fa2bf674ec77 +Block 0018 [ 76]: ae3864b6e39c9804 +Block 0018 [ 77]: 0707d4da655e8e8a +Block 0018 [ 78]: e412ab43d93fe67e +Block 0018 [ 79]: 070aacc9f712091d +Block 0018 [ 80]: 8b7868f2fc6e0f37 +Block 0018 [ 81]: ff7a2b63db626acc +Block 0018 [ 82]: 4ff42dcd52320549 +Block 0018 [ 83]: 914a7a459398aa31 +Block 0018 [ 84]: ee51f62912e4ba33 +Block 0018 [ 85]: 6a9547de7f719ae6 +Block 0018 [ 86]: 515534b4c1a9b96e +Block 0018 [ 87]: af49c87f6cc80cab +Block 0018 [ 88]: 6e4037b2f8a44b6c +Block 0018 [ 89]: 4205d6e29532c56c +Block 0018 [ 90]: 8b4772cc0b174ebc +Block 0018 [ 91]: cb8ebf453087902b +Block 0018 [ 92]: 4725e327afb7bec5 +Block 0018 [ 93]: 20c361231f875f96 +Block 0018 [ 94]: 7b19053aaa2e3d99 +Block 0018 [ 95]: bf249d83ac92e83e +Block 0018 [ 96]: 79fd44ef823bddd6 +Block 0018 [ 97]: c1f1a2089940dbbe +Block 0018 [ 98]: b23109bfc79dd2d0 +Block 0018 [ 99]: 503f7aff2422c84a +Block 0018 [100]: 0e3eae25cd971986 +Block 0018 [101]: 4f55b8acfe8132d7 +Block 0018 [102]: 835190a8cce3d640 +Block 0018 [103]: d3c3e2d6be9bb545 +Block 0018 [104]: 903b4f4716a77729 +Block 0018 [105]: feac8b79414f6615 +Block 0018 [106]: e00e93f66de68aef +Block 0018 [107]: 6ad3b10817355a15 +Block 0018 [108]: 4ed19e42abb08129 +Block 0018 [109]: e7bb8588cc665460 +Block 0018 [110]: 49ef295634a90acf +Block 0018 [111]: e6a7881b69491467 +Block 0018 [112]: ee99ba0eab2c15d4 +Block 0018 [113]: 68c7e2218006e47c +Block 0018 [114]: 73bda829fdab534a +Block 0018 [115]: 1746c6743d7cbe37 +Block 0018 [116]: 47f0145c5b347fe6 +Block 0018 [117]: 6541d303cd230e44 +Block 0018 [118]: 9e2235cd3562fa39 +Block 0018 [119]: 103dd929e08da913 +Block 0018 [120]: e530d486b9c1c3ac +Block 0018 [121]: cdb3beda3d93767d +Block 0018 [122]: 9ffd5b80d6db00d2 +Block 0018 [123]: 1b03c689857a1268 +Block 0018 [124]: b19cbf649b04d17f +Block 0018 [125]: bc949d4214befa50 +Block 0018 [126]: fc9bb6c70f544751 +Block 0018 [127]: 17cb94b26db9fc77 +Block 0019 [ 0]: 4314154c5f8bfb7f +Block 0019 [ 1]: 3960b49759850cc7 +Block 0019 [ 2]: 8976b29aa88ba0e9 +Block 0019 [ 3]: 1961c02cf5bd3641 +Block 0019 [ 4]: 36cd5ad5ba621760 +Block 0019 [ 5]: 2b90507c27f79886 +Block 0019 [ 6]: c18aaa55cccfdb73 +Block 0019 [ 7]: d1c214ff58eb7c03 +Block 0019 [ 8]: 1378de6fc11c6541 +Block 0019 [ 9]: a56ecb0ac3b4af54 +Block 0019 [ 10]: 2d2190fd988dde5d +Block 0019 [ 11]: 84f3ee1af8e2af5b +Block 0019 [ 12]: 6dddf7618d5625be +Block 0019 [ 13]: 979c0ce7f7396465 +Block 0019 [ 14]: 11896471c733b0cc +Block 0019 [ 15]: 30a7692f04c7551b +Block 0019 [ 16]: f9f9f053c712aa09 +Block 0019 [ 17]: 58b44b128159e693 +Block 0019 [ 18]: 37e086353c6296c2 +Block 0019 [ 19]: 557f7c0aa022e101 +Block 0019 [ 20]: 5314aa7234e465e5 +Block 0019 [ 21]: 9d36d7f79f38c0cb +Block 0019 [ 22]: 89a72d1fb523a939 +Block 0019 [ 23]: 458747163d53ba06 +Block 0019 [ 24]: 7703d30593f95a8b +Block 0019 [ 25]: ec8311fbd6fd53f2 +Block 0019 [ 26]: 713c830141066152 +Block 0019 [ 27]: 4a62995d5ffbe602 +Block 0019 [ 28]: 6af0645d48bec0d6 +Block 0019 [ 29]: 27e45b09463f3dff +Block 0019 [ 30]: baa124296071c0fd +Block 0019 [ 31]: d16c5d4d4b1c8d2f +Block 0019 [ 32]: 9ac6176e1ef86aa1 +Block 0019 [ 33]: a47cee4462a9d6fc +Block 0019 [ 34]: 472f0c6fd49768fa +Block 0019 [ 35]: 52c6b14445e43848 +Block 0019 [ 36]: e8d71cf621702683 +Block 0019 [ 37]: 09ada9a60ad9c009 +Block 0019 [ 38]: d2b1449ad7e4b3e0 +Block 0019 [ 39]: 49bb73806621273d +Block 0019 [ 40]: 23171ad9f2922791 +Block 0019 [ 41]: b84891d44abdc33c +Block 0019 [ 42]: 333d7b252c09d8ed +Block 0019 [ 43]: 2b5a825ad59e10a4 +Block 0019 [ 44]: a2b7d87242a47ab6 +Block 0019 [ 45]: 78c603789153920e +Block 0019 [ 46]: c74772f388fe7abf +Block 0019 [ 47]: 6efe8e593bc16925 +Block 0019 [ 48]: 699162891707e631 +Block 0019 [ 49]: d0157fbd2b53030e +Block 0019 [ 50]: 9afa5daed35b7362 +Block 0019 [ 51]: 6793c8bc068da00f +Block 0019 [ 52]: 7e9edbe7feba10ae +Block 0019 [ 53]: 0a20088cd94941cc +Block 0019 [ 54]: aa3d527ab123df69 +Block 0019 [ 55]: ab75f2204a3d0324 +Block 0019 [ 56]: 964c7f893c365ea8 +Block 0019 [ 57]: 483a6808ea8790bc +Block 0019 [ 58]: 29b19f92e91f2f9c +Block 0019 [ 59]: 3a4ca873d9ad1d49 +Block 0019 [ 60]: ffdbd035ce98254c +Block 0019 [ 61]: 1be20771208967bc +Block 0019 [ 62]: 2d8fd4c1a2db84e9 +Block 0019 [ 63]: 7c05013f4e86cf36 +Block 0019 [ 64]: 32a65907c497fecf +Block 0019 [ 65]: 537804b593d1e020 +Block 0019 [ 66]: dad22ee481314e93 +Block 0019 [ 67]: bf616fd3f343980a +Block 0019 [ 68]: 8454052ca6d01d92 +Block 0019 [ 69]: 98382a5905785879 +Block 0019 [ 70]: 5c656a82d3a37c94 +Block 0019 [ 71]: 859ff66ae8019e17 +Block 0019 [ 72]: 1ac9b185efd30d59 +Block 0019 [ 73]: 694701c7f6c151ef +Block 0019 [ 74]: 86035ab5b492d8d7 +Block 0019 [ 75]: 6382b4fa05470299 +Block 0019 [ 76]: 7c0baaf7846825b5 +Block 0019 [ 77]: 55f1fecaf8ade443 +Block 0019 [ 78]: b3eda2e95c094348 +Block 0019 [ 79]: 840e5b37fe246ebd +Block 0019 [ 80]: aa85bd44078f5912 +Block 0019 [ 81]: 4f016b6d1a7508c1 +Block 0019 [ 82]: 1a2f83fd10f571ee +Block 0019 [ 83]: 8b38fceecb329171 +Block 0019 [ 84]: 6b5a8ba2f5afa6cc +Block 0019 [ 85]: b327aa70032e1b62 +Block 0019 [ 86]: 33d803f14f60c47c +Block 0019 [ 87]: 75411f058e6d9c92 +Block 0019 [ 88]: 424013b76efefd3c +Block 0019 [ 89]: 988e31f9985e32b6 +Block 0019 [ 90]: 36a2ecbd086d21e6 +Block 0019 [ 91]: c0cc2d8c896d1c67 +Block 0019 [ 92]: db70f98dbeaebcdd +Block 0019 [ 93]: 1433d6cf2fa2659c +Block 0019 [ 94]: 980f4efcab856f56 +Block 0019 [ 95]: fcc7e7e55faa441c +Block 0019 [ 96]: af22e93ab1b3d6de +Block 0019 [ 97]: e4815feb2c7317b1 +Block 0019 [ 98]: f0c02e5d140958e0 +Block 0019 [ 99]: be559709a94d435d +Block 0019 [100]: 3af7f5ebdadcd7e9 +Block 0019 [101]: 1323a5528cfe9894 +Block 0019 [102]: a0808f334ae43cff +Block 0019 [103]: 8b2c3a75006c0c5a +Block 0019 [104]: 387180249c231ee6 +Block 0019 [105]: 6d6b61885cc1759e +Block 0019 [106]: c703e8d94dcf72d9 +Block 0019 [107]: ad82be834e120dfd +Block 0019 [108]: bc4f3dc566411565 +Block 0019 [109]: 330cd1b8ed68386a +Block 0019 [110]: 1aa8639d72a79c51 +Block 0019 [111]: 5fb694dab1306633 +Block 0019 [112]: 872a2f427b6aaea2 +Block 0019 [113]: 6058670384ca92a8 +Block 0019 [114]: 701ba8e9a43f1fb8 +Block 0019 [115]: ff0589f989f9a9f7 +Block 0019 [116]: bc39e80dbe8946b8 +Block 0019 [117]: de0d6c1534faad54 +Block 0019 [118]: 04ec12783b64d1a6 +Block 0019 [119]: 59cfde4877e8691c +Block 0019 [120]: ce18fd19ef32feb9 +Block 0019 [121]: d734d700036c5912 +Block 0019 [122]: 6d58153be0df3a46 +Block 0019 [123]: 37e7d95f1815c981 +Block 0019 [124]: a543cd85f55168ae +Block 0019 [125]: e47dff1e4ed1ae7e +Block 0019 [126]: 29edc56980fc3dc0 +Block 0019 [127]: f4d7bbc79e4d3caf +Block 0020 [ 0]: 99b54612d5331442 +Block 0020 [ 1]: 1df109b2551f5cff +Block 0020 [ 2]: 8d7f342edf1f1ced +Block 0020 [ 3]: c52ae3d91c062623 +Block 0020 [ 4]: e3a9aa53339e7425 +Block 0020 [ 5]: c1c6de190f3c376a +Block 0020 [ 6]: b01061a26c2b3be5 +Block 0020 [ 7]: 35b7980d9f01a3ec +Block 0020 [ 8]: f36abc3066eeef34 +Block 0020 [ 9]: 6c6a1641be1b68ca +Block 0020 [ 10]: 8e81654080ebb01e +Block 0020 [ 11]: 3102256ba607483a +Block 0020 [ 12]: 8b179c528e84a0ac +Block 0020 [ 13]: a09af43d38700de7 +Block 0020 [ 14]: 57e1c72a076854c7 +Block 0020 [ 15]: 806d9d5bbae63fbc +Block 0020 [ 16]: 78e8baf331882e1f +Block 0020 [ 17]: 2875993187cf01f8 +Block 0020 [ 18]: 1db07ca0c8c1571a +Block 0020 [ 19]: bde598a325fc60d8 +Block 0020 [ 20]: a9b9ea0af0ce7552 +Block 0020 [ 21]: fe9c03e4901de695 +Block 0020 [ 22]: bd21ae857dbbe711 +Block 0020 [ 23]: 4d9f8da024ec27d9 +Block 0020 [ 24]: 3304bdbf57ad64f1 +Block 0020 [ 25]: 3c69c5fc82417a9b +Block 0020 [ 26]: a66d465e11d67c52 +Block 0020 [ 27]: 315070b1e7e7a2d8 +Block 0020 [ 28]: 7689fe180a552186 +Block 0020 [ 29]: a19f92527d77f1ad +Block 0020 [ 30]: 1dec4550e47ded4e +Block 0020 [ 31]: 47e340ee79e1e937 +Block 0020 [ 32]: 8b18ab4d70a89258 +Block 0020 [ 33]: 8b0f557cb2c5d6b0 +Block 0020 [ 34]: 562279f5f801a973 +Block 0020 [ 35]: 4f8ddf383e960f5f +Block 0020 [ 36]: aec60f9e5560e4b3 +Block 0020 [ 37]: 0f95d7160757f116 +Block 0020 [ 38]: 91fb5708a31df4b3 +Block 0020 [ 39]: e21b9fcb6d7ff780 +Block 0020 [ 40]: 36a7a60680d38c08 +Block 0020 [ 41]: 1fcac6fcd32a1d00 +Block 0020 [ 42]: f1026ee196f319b1 +Block 0020 [ 43]: dd8f46ea4886b7b9 +Block 0020 [ 44]: 35c62335537e7cbf +Block 0020 [ 45]: 8c353ab20852e073 +Block 0020 [ 46]: 69a6a3b13a46c746 +Block 0020 [ 47]: a6169fa549169c83 +Block 0020 [ 48]: c6bb5d303ed28f72 +Block 0020 [ 49]: ce4c7f745cde2de8 +Block 0020 [ 50]: 717d92d2a9c842c4 +Block 0020 [ 51]: df649d3a2919ca3c +Block 0020 [ 52]: 3b3f2310b1e47458 +Block 0020 [ 53]: 6f664ab9b206191c +Block 0020 [ 54]: 94b785ee0c5ac9a1 +Block 0020 [ 55]: df92354c9ab1d65f +Block 0020 [ 56]: 1276546bf5321547 +Block 0020 [ 57]: a65b38bf4c4fd99b +Block 0020 [ 58]: 6fa757438ddef903 +Block 0020 [ 59]: 4af3819a7cfd003b +Block 0020 [ 60]: 9f00b83185c90c15 +Block 0020 [ 61]: 72b821506b22be45 +Block 0020 [ 62]: 4baadadb24e5ef4f +Block 0020 [ 63]: dcb9e3d9c2406da1 +Block 0020 [ 64]: 534c7e46dc0da3c7 +Block 0020 [ 65]: c3f79ae0d244cbb9 +Block 0020 [ 66]: c093ed3f909efd22 +Block 0020 [ 67]: 8ec38073bc8c6f16 +Block 0020 [ 68]: b3cad456a6c4943b +Block 0020 [ 69]: bc7f40e766001aff +Block 0020 [ 70]: 35aeacc99092a2b9 +Block 0020 [ 71]: 1754588e2b90e14a +Block 0020 [ 72]: 9e4beabb01216807 +Block 0020 [ 73]: b18d269b6be68c5b +Block 0020 [ 74]: c84476ed288034e9 +Block 0020 [ 75]: e54edd60a9adb04d +Block 0020 [ 76]: 9f1f178bf34f5eb7 +Block 0020 [ 77]: 3ccccb0b6ea19f95 +Block 0020 [ 78]: ec17067b40d70152 +Block 0020 [ 79]: 341fbf6208d5e1fa +Block 0020 [ 80]: 9bcd09c030e71c95 +Block 0020 [ 81]: a004676b00008402 +Block 0020 [ 82]: 7a44d5bba550c975 +Block 0020 [ 83]: 25b45af16d682520 +Block 0020 [ 84]: c1df2912476f1b7a +Block 0020 [ 85]: c5a3651373817558 +Block 0020 [ 86]: e73f947765d51638 +Block 0020 [ 87]: a46887137d124b59 +Block 0020 [ 88]: b9aee454d4e109d1 +Block 0020 [ 89]: 3dff8b985a9ed506 +Block 0020 [ 90]: 137459f4dfa321cc +Block 0020 [ 91]: 76877953eb8dedab +Block 0020 [ 92]: 9bbac2f32b25eaec +Block 0020 [ 93]: b74998965f640906 +Block 0020 [ 94]: acc825a4ad52d287 +Block 0020 [ 95]: d197fdc61372c0cd +Block 0020 [ 96]: 5a4e95595b22a985 +Block 0020 [ 97]: a1fc30dd53054d3b +Block 0020 [ 98]: 22feaadf7b85fa4f +Block 0020 [ 99]: ffa4b7d06f2ee116 +Block 0020 [100]: f8cae02794177009 +Block 0020 [101]: 0c0da064cf078a0e +Block 0020 [102]: 3b4530a03afa5efc +Block 0020 [103]: 426a556b6d45a9ec +Block 0020 [104]: 27953a0a104c326b +Block 0020 [105]: db94f0756b6965cc +Block 0020 [106]: f301360676859492 +Block 0020 [107]: 707a4e21d3d8dc16 +Block 0020 [108]: eb115c2a7c9afe03 +Block 0020 [109]: ac784d0ac04f8f13 +Block 0020 [110]: 39d71ab9ffe878ab +Block 0020 [111]: b1443a770fce6211 +Block 0020 [112]: d10dd0565ff67628 +Block 0020 [113]: e1fb38a21599a693 +Block 0020 [114]: 9ee8e257cf634826 +Block 0020 [115]: d5f6e5170e1da3d8 +Block 0020 [116]: 9a10a7e8d7668df8 +Block 0020 [117]: 12298c1738cf4bc7 +Block 0020 [118]: 505f4a9720725022 +Block 0020 [119]: 20572575149e406b +Block 0020 [120]: b0bdd2ce731aa1cb +Block 0020 [121]: 96cde79047a80bb1 +Block 0020 [122]: ef4b364dd09598d4 +Block 0020 [123]: 4ded87a8b524729d +Block 0020 [124]: ef23734b6b00b198 +Block 0020 [125]: 54af6f6764f54d6d +Block 0020 [126]: c584a13771d952ad +Block 0020 [127]: a43755deb1070142 +Block 0021 [ 0]: eaf22a72257ece3e +Block 0021 [ 1]: bc3db8d75db6ab56 +Block 0021 [ 2]: f6fd83b4066f8478 +Block 0021 [ 3]: 612d22eda0ebe1a9 +Block 0021 [ 4]: 465477c0efeea0a8 +Block 0021 [ 5]: cfa5293a6fef2f5f +Block 0021 [ 6]: 23ea14915d5247dd +Block 0021 [ 7]: a2ed1868435d0781 +Block 0021 [ 8]: 83b20881f9332c81 +Block 0021 [ 9]: e8a61edb2c077a93 +Block 0021 [ 10]: c963e144d48b7872 +Block 0021 [ 11]: 8d4cbaa38c3a9fcc +Block 0021 [ 12]: d69c356de80d6cb7 +Block 0021 [ 13]: 9a433254d972c2a6 +Block 0021 [ 14]: d3a6458db7b5f574 +Block 0021 [ 15]: b152bc0809d76014 +Block 0021 [ 16]: cd80587aad983590 +Block 0021 [ 17]: 714df7d77e1f7471 +Block 0021 [ 18]: e56def8658adc47f +Block 0021 [ 19]: e32056e570f63065 +Block 0021 [ 20]: cfdaba585602ba13 +Block 0021 [ 21]: 691e36443ec4b181 +Block 0021 [ 22]: 93aaeea268573ece +Block 0021 [ 23]: 4312d3fd583bda77 +Block 0021 [ 24]: cee8c693eb1da004 +Block 0021 [ 25]: 0d6e0f419eee0037 +Block 0021 [ 26]: e9e4e113c0d7a023 +Block 0021 [ 27]: 366ee6913e04d0c9 +Block 0021 [ 28]: e5be4eb934faa2db +Block 0021 [ 29]: 5964b39808d5b797 +Block 0021 [ 30]: 42ecda87914bd65a +Block 0021 [ 31]: 5bfb873d10a207d7 +Block 0021 [ 32]: ca66068cf8c41ee3 +Block 0021 [ 33]: 376a2fe75f80be7b +Block 0021 [ 34]: 5ad07cad128d3a78 +Block 0021 [ 35]: 8dcb75e704a01312 +Block 0021 [ 36]: 2d4cdaabafb2011f +Block 0021 [ 37]: 4e4fc05aa0def3ac +Block 0021 [ 38]: 8ad7096e0b1966d4 +Block 0021 [ 39]: ed6086ed6c30399e +Block 0021 [ 40]: 6d6ad65c81e1e574 +Block 0021 [ 41]: 378f39e47b6d5022 +Block 0021 [ 42]: 623a21c9267b9efa +Block 0021 [ 43]: 0610511f07a7f9eb +Block 0021 [ 44]: 5680ce8724225437 +Block 0021 [ 45]: d5eb8daa9d713835 +Block 0021 [ 46]: a0b9f5efa5c9802d +Block 0021 [ 47]: e9333e99222c5aab +Block 0021 [ 48]: 597fbe9522296cd3 +Block 0021 [ 49]: ee7269c78dd9c000 +Block 0021 [ 50]: 03d3a1a6a7039b42 +Block 0021 [ 51]: 6df4eb00d4cebffb +Block 0021 [ 52]: 8295f7ac0ddc80bb +Block 0021 [ 53]: 9f0ead21df6e7856 +Block 0021 [ 54]: 9d48d524fe0d564a +Block 0021 [ 55]: f97a84fa8cf4143a +Block 0021 [ 56]: 5e238cdfb3a37dee +Block 0021 [ 57]: 13dd319d1576ce29 +Block 0021 [ 58]: b4a0b6c870ddd21d +Block 0021 [ 59]: 5ced7d1931881510 +Block 0021 [ 60]: e6362d3752dce714 +Block 0021 [ 61]: 64721226de7f4231 +Block 0021 [ 62]: 5e29523e73f0cb30 +Block 0021 [ 63]: 7e5c701c4a754eb9 +Block 0021 [ 64]: f90f9928575d19c8 +Block 0021 [ 65]: 5a87671b1792bb9e +Block 0021 [ 66]: 1ba1edb579ff5ce1 +Block 0021 [ 67]: d81f8269d698d8af +Block 0021 [ 68]: a95debed7aa19f9e +Block 0021 [ 69]: a7d9265743c5c802 +Block 0021 [ 70]: e6df5edc0823fbd3 +Block 0021 [ 71]: 1b3ef0d4395fbccf +Block 0021 [ 72]: 7f6bde3c73fc513d +Block 0021 [ 73]: 16cda4a056dc3a9d +Block 0021 [ 74]: 36563b6c92443394 +Block 0021 [ 75]: 749536d4491edf2f +Block 0021 [ 76]: ce011359b419b387 +Block 0021 [ 77]: 4c8455044dfc4dd5 +Block 0021 [ 78]: aa4d04037787ae89 +Block 0021 [ 79]: 3480568ed27e30aa +Block 0021 [ 80]: 436ff0c954f70457 +Block 0021 [ 81]: 6c6d781dc1817e60 +Block 0021 [ 82]: dbba7171652bcd3f +Block 0021 [ 83]: 62dea6260849c192 +Block 0021 [ 84]: 3d9d26097d6cc1f3 +Block 0021 [ 85]: 22639329408cc1b2 +Block 0021 [ 86]: 849d9f4bb0604fe3 +Block 0021 [ 87]: 01cc125b244e0ea8 +Block 0021 [ 88]: 7ebbb57a0de64d80 +Block 0021 [ 89]: c37ab535fc7d686e +Block 0021 [ 90]: adb00a142848417f +Block 0021 [ 91]: 3445a90c3e87fcd7 +Block 0021 [ 92]: e34ff72206ff1386 +Block 0021 [ 93]: 11626fc232e4270f +Block 0021 [ 94]: 28bbd829c97758de +Block 0021 [ 95]: 67b017e60ef4a655 +Block 0021 [ 96]: a720681c19c0fb13 +Block 0021 [ 97]: 7e1f2be672dd9c07 +Block 0021 [ 98]: c10afaa9599d6269 +Block 0021 [ 99]: 57bdf94c65106f2b +Block 0021 [100]: dc59da56d4e8c48b +Block 0021 [101]: 5ce2b008062974cd +Block 0021 [102]: d7950df8e7812438 +Block 0021 [103]: 0913b55a9026ff83 +Block 0021 [104]: 4d8311ba0f1a8c0d +Block 0021 [105]: fe53cd482d9a09bf +Block 0021 [106]: 1bdf01edc7da7f10 +Block 0021 [107]: d4391237df17af26 +Block 0021 [108]: 3d694dfcd22c5a91 +Block 0021 [109]: f1b09ca49bc8eec9 +Block 0021 [110]: 09f81a527a65c25e +Block 0021 [111]: cf3b08baf5856dbb +Block 0021 [112]: 12cabc43d1fb108e +Block 0021 [113]: b7c209c2bfde3031 +Block 0021 [114]: 02e0d3d4029e7510 +Block 0021 [115]: 36c7a4f9dcf9cae4 +Block 0021 [116]: 580cab16cc58aa6a +Block 0021 [117]: f502f9c2c13c00d5 +Block 0021 [118]: dbf6bcc189397a5c +Block 0021 [119]: 641d6882bf43781b +Block 0021 [120]: ff471cbbadce8b04 +Block 0021 [121]: 5fb8d2a88e62fa1a +Block 0021 [122]: bf56dea0710e9ef8 +Block 0021 [123]: 68eba851089279e7 +Block 0021 [124]: dee4e1f0a55f11f2 +Block 0021 [125]: 1729abaa6c28f626 +Block 0021 [126]: d1e4360bf9a99709 +Block 0021 [127]: 57cd8306d3c9972c +Block 0022 [ 0]: d9017177a669b6e5 +Block 0022 [ 1]: d2561f290188fbe2 +Block 0022 [ 2]: f5c9c509ab75bf4a +Block 0022 [ 3]: debd7125423ade4c +Block 0022 [ 4]: d89cd562b4dd7a29 +Block 0022 [ 5]: 944b7f8c8169715b +Block 0022 [ 6]: 4d7d25a7bd269bdf +Block 0022 [ 7]: 07e089a684eafbc7 +Block 0022 [ 8]: 9a9a15206e1bd87b +Block 0022 [ 9]: 885062c80f1323e6 +Block 0022 [ 10]: ffa7679520887020 +Block 0022 [ 11]: c29294b8d2736bf5 +Block 0022 [ 12]: 10bf9218eb2046a9 +Block 0022 [ 13]: 39a5fc7ecaf5e87e +Block 0022 [ 14]: a2f0798f897c0857 +Block 0022 [ 15]: 4dba832b267d8e91 +Block 0022 [ 16]: 7438fad141293cba +Block 0022 [ 17]: 3ec92fa015f218f0 +Block 0022 [ 18]: 18071da78366eeca +Block 0022 [ 19]: c8a7112b99128c1e +Block 0022 [ 20]: 04c3dbc620abb9cd +Block 0022 [ 21]: e63c4f3d8e79330b +Block 0022 [ 22]: 318615b27ad7c835 +Block 0022 [ 23]: 6429acacb6d345f7 +Block 0022 [ 24]: 036320dbb7f843e8 +Block 0022 [ 25]: c5221241c3397245 +Block 0022 [ 26]: 961c54c8b1a5bd7b +Block 0022 [ 27]: a3dd266a7d0f434f +Block 0022 [ 28]: e012c881f77fb9a7 +Block 0022 [ 29]: f39867b0dcc0baf9 +Block 0022 [ 30]: b3f236d9551e1fe1 +Block 0022 [ 31]: fea089089ba359a0 +Block 0022 [ 32]: cb3703237146bf20 +Block 0022 [ 33]: 73f0720fcae901a9 +Block 0022 [ 34]: a1c7de63038bd5f6 +Block 0022 [ 35]: 7c157239f4f4b199 +Block 0022 [ 36]: aeb4a9f78eabcdcd +Block 0022 [ 37]: b0f1e62f53e0e463 +Block 0022 [ 38]: 1c3acd6bdfd48f04 +Block 0022 [ 39]: 4c4ac7710afffbe0 +Block 0022 [ 40]: 0243e157d6d847ba +Block 0022 [ 41]: 2aeb704359df1996 +Block 0022 [ 42]: b0662086e5b73c39 +Block 0022 [ 43]: 05d79ef890244df4 +Block 0022 [ 44]: af01278314058d10 +Block 0022 [ 45]: 4372e42f10ef5443 +Block 0022 [ 46]: 438de8d30efd58a2 +Block 0022 [ 47]: 1bd8d75d30df4e7c +Block 0022 [ 48]: e3daf4091eb7097f +Block 0022 [ 49]: c6dbbdc0a6f9a781 +Block 0022 [ 50]: aef97c8fbbfbe25c +Block 0022 [ 51]: 0e6881706cb458a0 +Block 0022 [ 52]: e609f19ae55d5ffc +Block 0022 [ 53]: 17031d4c3738c72b +Block 0022 [ 54]: 5231693d9e2a207d +Block 0022 [ 55]: 50dbae42c1c0806c +Block 0022 [ 56]: cb01a7fd19a411b1 +Block 0022 [ 57]: 6859a8f3cfaa64c9 +Block 0022 [ 58]: 04defed4aaa73495 +Block 0022 [ 59]: f3ae8c7ce1882111 +Block 0022 [ 60]: 553c94b9dab67ae3 +Block 0022 [ 61]: f23f1bab715a7fe5 +Block 0022 [ 62]: 42b8e1e62d9174ff +Block 0022 [ 63]: ad75d5d56e0e0225 +Block 0022 [ 64]: f7460a269e67b3dc +Block 0022 [ 65]: 421c8a8a7d0c9833 +Block 0022 [ 66]: 06a3b172d2175ded +Block 0022 [ 67]: 223564e8a1801481 +Block 0022 [ 68]: c74c488483a39dce +Block 0022 [ 69]: 5c301a5fb7c7bb62 +Block 0022 [ 70]: 6d307c79268412d1 +Block 0022 [ 71]: e11b10b2f300fdc6 +Block 0022 [ 72]: 790a855854675477 +Block 0022 [ 73]: 9ddef4befcea38aa +Block 0022 [ 74]: 8fbc6fbd777cd48e +Block 0022 [ 75]: 3ee49861fb128f70 +Block 0022 [ 76]: 7583637e2397ed12 +Block 0022 [ 77]: ecae2f66700d1a4f +Block 0022 [ 78]: 4a4d4065d20d8349 +Block 0022 [ 79]: 65cf24b9e53a8fb4 +Block 0022 [ 80]: 99dbae8b2d889df2 +Block 0022 [ 81]: b9ac3793aafbd04b +Block 0022 [ 82]: 51c26c283f570544 +Block 0022 [ 83]: d16d8a09a8d47994 +Block 0022 [ 84]: cc57b8302e49656b +Block 0022 [ 85]: ac389ca16ad04216 +Block 0022 [ 86]: 8988e5b3a38d0ccc +Block 0022 [ 87]: 57f2686c27fe305f +Block 0022 [ 88]: 0e762dabcff6c25b +Block 0022 [ 89]: a45da9efeb14129b +Block 0022 [ 90]: 1c222d3f443d81c9 +Block 0022 [ 91]: 8fb5de5479c7a3b4 +Block 0022 [ 92]: a78c7ae1e313f074 +Block 0022 [ 93]: 9f8cb10b4bb4efe0 +Block 0022 [ 94]: 89e094fed9b5d688 +Block 0022 [ 95]: 577b162a6b10cfc0 +Block 0022 [ 96]: e220188a3a495256 +Block 0022 [ 97]: 2462082fd6415c0b +Block 0022 [ 98]: 72b7bd3af5f430a5 +Block 0022 [ 99]: 180e07c5fc6bad72 +Block 0022 [100]: e3738c9b8202dac5 +Block 0022 [101]: 4a253af6aa78901d +Block 0022 [102]: 79c249156bc8b4c9 +Block 0022 [103]: a4c9d12d7a1ca0ae +Block 0022 [104]: 41665c3cc225b69e +Block 0022 [105]: 42b4536ad5c5f09c +Block 0022 [106]: 9949fdb6c75e0fb9 +Block 0022 [107]: d124a71717d1c071 +Block 0022 [108]: d19982096015d9e2 +Block 0022 [109]: b80a05faf21e2911 +Block 0022 [110]: 50669ab3798654a9 +Block 0022 [111]: 05bbf71791adb8ca +Block 0022 [112]: 2b24afdacdbc7570 +Block 0022 [113]: feac8d01ae4b08dc +Block 0022 [114]: 4072a0567202afc5 +Block 0022 [115]: b50e1cb840bf5e3a +Block 0022 [116]: 34c6de5d4b22ffe7 +Block 0022 [117]: b0c05f78400ca0cb +Block 0022 [118]: c873334f15b4e1f7 +Block 0022 [119]: 39ad9d10b5e1d750 +Block 0022 [120]: 88a1ad499aca526f +Block 0022 [121]: aa2bd5a6c1f38caf +Block 0022 [122]: 603557577d75599c +Block 0022 [123]: f361f34f5820dff9 +Block 0022 [124]: 85ed6ef23956eac4 +Block 0022 [125]: bd26eacf31c7a353 +Block 0022 [126]: b2ffd15aa41db4e0 +Block 0022 [127]: e91021ab90f8cc95 +Block 0023 [ 0]: a29ad9956727f9cb +Block 0023 [ 1]: 524b13d7bf20dd27 +Block 0023 [ 2]: 14c0f637bb393dd3 +Block 0023 [ 3]: 29aad246fdada10b +Block 0023 [ 4]: d5b615fcec0c08a1 +Block 0023 [ 5]: 850221d183d0efbd +Block 0023 [ 6]: 13d223815685feac +Block 0023 [ 7]: 87e7c7bf9494f3cf +Block 0023 [ 8]: f2b24763c57bf743 +Block 0023 [ 9]: a955627873df3d9f +Block 0023 [ 10]: eb19072ea79b706e +Block 0023 [ 11]: 554f841bf8289187 +Block 0023 [ 12]: 5b2a7a1be684d10f +Block 0023 [ 13]: fb86695ec08991bc +Block 0023 [ 14]: d570ba9f4043e5a3 +Block 0023 [ 15]: ebc35889e61d4065 +Block 0023 [ 16]: 88328db3b597316e +Block 0023 [ 17]: 2ee2ebe41f9b15ba +Block 0023 [ 18]: 43d6aec812d2f7aa +Block 0023 [ 19]: d4e775fa43332640 +Block 0023 [ 20]: b806bcd4c2a3c968 +Block 0023 [ 21]: ebf8c4c91925ad87 +Block 0023 [ 22]: 57e8556a90240f0c +Block 0023 [ 23]: 8286650e1d23ba45 +Block 0023 [ 24]: ae934251ba4c4150 +Block 0023 [ 25]: d006bccf7f11fc65 +Block 0023 [ 26]: 0f66a89ec37bea84 +Block 0023 [ 27]: 6c4ff6a351250fd3 +Block 0023 [ 28]: bc2ed16b7ccd77da +Block 0023 [ 29]: f8992a75652efd74 +Block 0023 [ 30]: 541a0238d8c87aa4 +Block 0023 [ 31]: 60a419e0abc63204 +Block 0023 [ 32]: 9ab5285ed5a4886a +Block 0023 [ 33]: 70d2cd82c589ca56 +Block 0023 [ 34]: f14e21d1174f7038 +Block 0023 [ 35]: 045a340d0a05c6df +Block 0023 [ 36]: 265a854800392dfa +Block 0023 [ 37]: 1febb38eb7e840f3 +Block 0023 [ 38]: d7da8f296f748474 +Block 0023 [ 39]: 321e5bea25a1c0d3 +Block 0023 [ 40]: dfd8bb4afd35f8b2 +Block 0023 [ 41]: 94b8d2e10841ccbb +Block 0023 [ 42]: 6f114382039a8228 +Block 0023 [ 43]: e9da6a56692fa330 +Block 0023 [ 44]: 5bc2f30da0303c1a +Block 0023 [ 45]: d1bda2513b50bfc3 +Block 0023 [ 46]: 13334d39ee171bcb +Block 0023 [ 47]: ae9ea591b5930fce +Block 0023 [ 48]: 64973a25f91e2a82 +Block 0023 [ 49]: aff456b8d8d34f40 +Block 0023 [ 50]: 164dbfc91f4fa96b +Block 0023 [ 51]: 9dc6292bff5fbc5d +Block 0023 [ 52]: bb191847509ff434 +Block 0023 [ 53]: 10e9a0ad94ef7acc +Block 0023 [ 54]: d9954305d5f16c4f +Block 0023 [ 55]: d0a5957208441157 +Block 0023 [ 56]: 529205ea9738c777 +Block 0023 [ 57]: fe1cb6297e9ace0e +Block 0023 [ 58]: fd8e28400112061f +Block 0023 [ 59]: fb912ca9f8059fd1 +Block 0023 [ 60]: 0c2ea500a95da40b +Block 0023 [ 61]: 8a91a09684952f67 +Block 0023 [ 62]: 5f26b82d0c8417a7 +Block 0023 [ 63]: 2326074c848f0d02 +Block 0023 [ 64]: a23474e62e4744ed +Block 0023 [ 65]: 3ad865e5974f5527 +Block 0023 [ 66]: 3901c8a615c69aaf +Block 0023 [ 67]: 71cd871d7eb67c88 +Block 0023 [ 68]: 9fe70add737e4f1a +Block 0023 [ 69]: 87dcc3e08ad7d9d4 +Block 0023 [ 70]: e5ef3e417b23cb96 +Block 0023 [ 71]: b9373896f18c1e66 +Block 0023 [ 72]: 9e7786adfbce6085 +Block 0023 [ 73]: 3f91a9f344df4df1 +Block 0023 [ 74]: 2d526c15df0c84ff +Block 0023 [ 75]: 9ba7a5b5ee5de5b4 +Block 0023 [ 76]: 3d6ae44c06ab9887 +Block 0023 [ 77]: 4afe7b68d6464748 +Block 0023 [ 78]: 0a866a8c319fa828 +Block 0023 [ 79]: c8f841262c4f60d4 +Block 0023 [ 80]: f83563e151dfc565 +Block 0023 [ 81]: 310bd851ee8f72ee +Block 0023 [ 82]: dd50d4efe4195375 +Block 0023 [ 83]: 5cdff14af1b6be5c +Block 0023 [ 84]: f80f75c43c6374e8 +Block 0023 [ 85]: d17a7017c65a71b6 +Block 0023 [ 86]: 6700c8703fe2dd5b +Block 0023 [ 87]: 803ece8035840bd8 +Block 0023 [ 88]: d2e8da645cc4f0c3 +Block 0023 [ 89]: 4f0e262f60b4a0cd +Block 0023 [ 90]: e6118043496083d2 +Block 0023 [ 91]: d16b6ea9b44ac8d2 +Block 0023 [ 92]: 97d7ea25d23ec420 +Block 0023 [ 93]: 584389ba3e0466f5 +Block 0023 [ 94]: f7e33a38de304d1e +Block 0023 [ 95]: b1a8df3491b0cafa +Block 0023 [ 96]: ba545b5360692a6d +Block 0023 [ 97]: 0ca7cb54eeb9d32d +Block 0023 [ 98]: 617ced7b2c227496 +Block 0023 [ 99]: eefacf3c069f5845 +Block 0023 [100]: 391176458830f910 +Block 0023 [101]: c3fe4a86dc5bae9f +Block 0023 [102]: 6b36ab560852d6a2 +Block 0023 [103]: 207988111cb654f6 +Block 0023 [104]: 7b5e2576e2b3bb8e +Block 0023 [105]: ac267506fd370a46 +Block 0023 [106]: b4ee88ac9fcc6eba +Block 0023 [107]: 510d7b841c6d38d3 +Block 0023 [108]: 235d4e1bd7ffd276 +Block 0023 [109]: 2df8efc35016e0fb +Block 0023 [110]: d2577859f955b1b9 +Block 0023 [111]: c8f962216dc4ffad +Block 0023 [112]: 7846e4fc2ba62cb0 +Block 0023 [113]: 6b851256f5061ef8 +Block 0023 [114]: 497ee81cf6dda322 +Block 0023 [115]: 1620886ee32ef2ca +Block 0023 [116]: ff3079c7656033b9 +Block 0023 [117]: fc1b78a962226c50 +Block 0023 [118]: bf975fd236d5f371 +Block 0023 [119]: 4f7f421e74b21343 +Block 0023 [120]: ab1345b271fdaf8b +Block 0023 [121]: 308b376c1bdb360e +Block 0023 [122]: 6c63beff5d5dbafe +Block 0023 [123]: d0167e4bf9145352 +Block 0023 [124]: 222c497dc9a79c9f +Block 0023 [125]: e8248b9c830f7d58 +Block 0023 [126]: 1de80a68d405c3ef +Block 0023 [127]: d79ad55a65da2664 +Block 0024 [ 0]: 6969f641ffdfe715 +Block 0024 [ 1]: 9258b43ee34e21d9 +Block 0024 [ 2]: d50ffe6a5801f950 +Block 0024 [ 3]: 61b72030cbb4a177 +Block 0024 [ 4]: cafa82549198a73d +Block 0024 [ 5]: d1150c31b668f77e +Block 0024 [ 6]: 1fe77b51c643d8ae +Block 0024 [ 7]: 790bca1b555b9a9a +Block 0024 [ 8]: 7174696da064fe4f +Block 0024 [ 9]: 861deeae3929aec4 +Block 0024 [ 10]: 3a388025f4725473 +Block 0024 [ 11]: 9f2fd193b86e54e6 +Block 0024 [ 12]: 7dcafe338e777ea0 +Block 0024 [ 13]: f224bb7eedbd95b2 +Block 0024 [ 14]: c0b6d2f978ab0dec +Block 0024 [ 15]: 1f1ae23b9628a194 +Block 0024 [ 16]: b9dec21d58d34d8e +Block 0024 [ 17]: eef0ee6370727c70 +Block 0024 [ 18]: bc3ba66b8e252048 +Block 0024 [ 19]: 40d59fbfee193677 +Block 0024 [ 20]: d98ad7ba132685a8 +Block 0024 [ 21]: 16a00dfd8846515b +Block 0024 [ 22]: 0628d2508c84b5d7 +Block 0024 [ 23]: 23523cf2a4c53fb5 +Block 0024 [ 24]: 715d3ab7a9295ef5 +Block 0024 [ 25]: 50fbb85c3d387005 +Block 0024 [ 26]: 7964421278c0de1c +Block 0024 [ 27]: a30df4d76612f3d9 +Block 0024 [ 28]: ac93914885b34586 +Block 0024 [ 29]: a9a6084c17e06e6e +Block 0024 [ 30]: 9a8765c57557cf2f +Block 0024 [ 31]: 9535d5e5b1f0eefc +Block 0024 [ 32]: 160c2c3a863b6758 +Block 0024 [ 33]: 017158926c8902fe +Block 0024 [ 34]: eb0d01d4d1a5f399 +Block 0024 [ 35]: b458e852b548ef2f +Block 0024 [ 36]: 4a9f07351074ff05 +Block 0024 [ 37]: 891636249b931c48 +Block 0024 [ 38]: 1df71c0d7f49eceb +Block 0024 [ 39]: c0c17bf91a9348fa +Block 0024 [ 40]: 0c8ec34f06d0ca8d +Block 0024 [ 41]: c8a64e6518bca6e2 +Block 0024 [ 42]: 32a79e401b2033a1 +Block 0024 [ 43]: 4436a57b1984ebde +Block 0024 [ 44]: c4b635de2118e547 +Block 0024 [ 45]: b46a58c3da799e3d +Block 0024 [ 46]: 809428c1e866ee3c +Block 0024 [ 47]: 6a3fae63cc23b5b5 +Block 0024 [ 48]: 59cb5ddb257ba3f2 +Block 0024 [ 49]: 2cc69453f630e10c +Block 0024 [ 50]: 5b9c483dc73034bc +Block 0024 [ 51]: a77fa6d7baffdaf1 +Block 0024 [ 52]: 53c3624d4b339c82 +Block 0024 [ 53]: 03a2a64f36000e48 +Block 0024 [ 54]: abcdf3f1795c6c69 +Block 0024 [ 55]: 1f466a05d7965d5c +Block 0024 [ 56]: 9b6f8788e01c5381 +Block 0024 [ 57]: bf5e74b5e1c32ef2 +Block 0024 [ 58]: 4758b08aa9afe564 +Block 0024 [ 59]: 48f94e1fffe6438c +Block 0024 [ 60]: 4b4a2892f06818f2 +Block 0024 [ 61]: bceff5a99e47b620 +Block 0024 [ 62]: 3060d08b52af4aa1 +Block 0024 [ 63]: a3d9a165e5c65d79 +Block 0024 [ 64]: 123b231f7bf1be25 +Block 0024 [ 65]: cc1e3ad20d8f2356 +Block 0024 [ 66]: 69852803fcb614c4 +Block 0024 [ 67]: db7480b12650096c +Block 0024 [ 68]: cce190a49a4a96fa +Block 0024 [ 69]: ccc9b26c541113aa +Block 0024 [ 70]: d73544f23c5bd6cc +Block 0024 [ 71]: 55cd4e9884d01240 +Block 0024 [ 72]: b358876752a98151 +Block 0024 [ 73]: c1881eac1a053aad +Block 0024 [ 74]: 4789407f7d033e41 +Block 0024 [ 75]: 3360667505df643c +Block 0024 [ 76]: 579bf698b57c80a6 +Block 0024 [ 77]: 5b47d4d45b4a3f3e +Block 0024 [ 78]: b77d0607040d6c41 +Block 0024 [ 79]: 6884dac57b7f12ac +Block 0024 [ 80]: d3cc1f9fd938bb7e +Block 0024 [ 81]: 73a68dd0528fe5cd +Block 0024 [ 82]: c7859f68ad84be24 +Block 0024 [ 83]: 5b0db28343bbcc56 +Block 0024 [ 84]: ed31bbd129906e60 +Block 0024 [ 85]: 05f40f05ddc90ae9 +Block 0024 [ 86]: 4f4f039c3db15331 +Block 0024 [ 87]: 704e8b3862009b61 +Block 0024 [ 88]: a1edbf57f0b139ca +Block 0024 [ 89]: 78f5af917866a501 +Block 0024 [ 90]: a485e287c34a06b2 +Block 0024 [ 91]: 6cdd76520612e2ce +Block 0024 [ 92]: 39fa227307e0bb4f +Block 0024 [ 93]: 96245312a7935575 +Block 0024 [ 94]: 77f694a7b65e06ce +Block 0024 [ 95]: 0b4c5b0b23a0792a +Block 0024 [ 96]: ad46df6ff95fa686 +Block 0024 [ 97]: 02024ea948b9604b +Block 0024 [ 98]: beb882c124cd1ab8 +Block 0024 [ 99]: db7ec51f4fb2e3b6 +Block 0024 [100]: 148e6c98c2dcff3d +Block 0024 [101]: aa4e5910f5fe7772 +Block 0024 [102]: 665451a76989dba0 +Block 0024 [103]: aab9def1764c01de +Block 0024 [104]: 7187deed9a554c1c +Block 0024 [105]: a5dd3db07fc83d94 +Block 0024 [106]: 77b9f80938269a0a +Block 0024 [107]: a6512b101c9b02cc +Block 0024 [108]: f72ab2ecbcea2450 +Block 0024 [109]: 91b778f0a54da32b +Block 0024 [110]: 0dcb8a95679b55b4 +Block 0024 [111]: 9cd32122fe513e5d +Block 0024 [112]: b075bc86cceb1250 +Block 0024 [113]: 30bbf6f47551705f +Block 0024 [114]: 1d186a57f4818c81 +Block 0024 [115]: 501666ec7907c229 +Block 0024 [116]: cafbe336eb85f78d +Block 0024 [117]: d77bc0f41cf3adfe +Block 0024 [118]: 2d90197cf7095b6c +Block 0024 [119]: e42911f51b42d1d6 +Block 0024 [120]: 5faf35557a21aaf3 +Block 0024 [121]: 85be59bc0dd2201e +Block 0024 [122]: dd9295a14aef5e0e +Block 0024 [123]: b93a47670cf5b680 +Block 0024 [124]: a65ff50fc3bf9fc8 +Block 0024 [125]: 8d951d29aff95fa6 +Block 0024 [126]: 13bbbeeda75b273d +Block 0024 [127]: 98f195d7024186a0 +Block 0025 [ 0]: bba40f5a47d417b9 +Block 0025 [ 1]: 38e25e958235bb82 +Block 0025 [ 2]: 518e6b13a896b70f +Block 0025 [ 3]: 60405fe81faf9b64 +Block 0025 [ 4]: 2ced5f6ef3502bc8 +Block 0025 [ 5]: 79e7be1233ee4f0c +Block 0025 [ 6]: 3b978f674d06920e +Block 0025 [ 7]: 3df44338dbcefa3b +Block 0025 [ 8]: e4a94353df03ed60 +Block 0025 [ 9]: 59390ed09a0f47c9 +Block 0025 [ 10]: 9954694167bc7935 +Block 0025 [ 11]: 45577851e5fcf7a2 +Block 0025 [ 12]: ded46e2b0499a4dd +Block 0025 [ 13]: f00cafff22ac4044 +Block 0025 [ 14]: 511e53d92769a80f +Block 0025 [ 15]: af95973928a31f86 +Block 0025 [ 16]: 99b76728184ff8ac +Block 0025 [ 17]: a57e8f06400e1e2f +Block 0025 [ 18]: daa4835775144800 +Block 0025 [ 19]: 679a78622d3b16c5 +Block 0025 [ 20]: 5692552bd6ab8996 +Block 0025 [ 21]: c24ee7e93c3db671 +Block 0025 [ 22]: 61e434a343652398 +Block 0025 [ 23]: c47346cfd3191661 +Block 0025 [ 24]: f5e6ce91648c3c68 +Block 0025 [ 25]: 279f57679d6f6132 +Block 0025 [ 26]: 37c0a781cf440243 +Block 0025 [ 27]: 5ea5669a328cdf11 +Block 0025 [ 28]: 802d09ab6e7a0868 +Block 0025 [ 29]: 07eb1fa6bca9debb +Block 0025 [ 30]: ef3c12dd091134be +Block 0025 [ 31]: 2567727d448590c1 +Block 0025 [ 32]: e08540f824239b10 +Block 0025 [ 33]: 31c7beba56868274 +Block 0025 [ 34]: 077fc225a960ee90 +Block 0025 [ 35]: 301b82376a7ccae9 +Block 0025 [ 36]: fdd3881fc5fca41d +Block 0025 [ 37]: addce699566df76e +Block 0025 [ 38]: 092d9c03d980d984 +Block 0025 [ 39]: 7d98605e2aa3f4ac +Block 0025 [ 40]: 2608763bed27ec95 +Block 0025 [ 41]: 8782b2dff9b41089 +Block 0025 [ 42]: 3c3afbe5d82dac0d +Block 0025 [ 43]: 6bde148ab758b189 +Block 0025 [ 44]: d6ddd8914ac9cf79 +Block 0025 [ 45]: 52a1e1122baf014a +Block 0025 [ 46]: de57140a5c5aa9fd +Block 0025 [ 47]: 05db47d0e4e02af8 +Block 0025 [ 48]: 41990891d0444d56 +Block 0025 [ 49]: 547ff48a9d700720 +Block 0025 [ 50]: a810a834c1543a71 +Block 0025 [ 51]: 34fcaef0ef5d2f29 +Block 0025 [ 52]: fade3aa85d7cf180 +Block 0025 [ 53]: 1b574b782f1428c7 +Block 0025 [ 54]: e6e74b37b14430d4 +Block 0025 [ 55]: bcc097d24ab98a70 +Block 0025 [ 56]: 9e2954057a3d9414 +Block 0025 [ 57]: 7e6ea29ffbb0f63b +Block 0025 [ 58]: a7cc9ec051b86dad +Block 0025 [ 59]: 6f8274c9d96e52a7 +Block 0025 [ 60]: f447c520e61e4a60 +Block 0025 [ 61]: 27837b7d8014892f +Block 0025 [ 62]: 32c933e68fb44ff6 +Block 0025 [ 63]: df63aca26e3cd24c +Block 0025 [ 64]: bee83c8517f44de6 +Block 0025 [ 65]: 423ce78c74ed7149 +Block 0025 [ 66]: d8994e5735b66f8e +Block 0025 [ 67]: ce621833a2a3961f +Block 0025 [ 68]: b203e8ad73f78c2b +Block 0025 [ 69]: 5d602060b48c9acb +Block 0025 [ 70]: bbfd338d371fcbc8 +Block 0025 [ 71]: f299f99bdd7ba144 +Block 0025 [ 72]: 8324537878431c11 +Block 0025 [ 73]: 387dc9e73b15d8b3 +Block 0025 [ 74]: b943f301cf9f1f3d +Block 0025 [ 75]: cdf888ac99fff4f8 +Block 0025 [ 76]: 0eae3766686c5209 +Block 0025 [ 77]: 5f97d1fba4bcfcb4 +Block 0025 [ 78]: 715884edef0cf617 +Block 0025 [ 79]: e22540f279cc18d4 +Block 0025 [ 80]: f242de5481fd070d +Block 0025 [ 81]: ec292ce495f429a3 +Block 0025 [ 82]: d92a9fdd84a23406 +Block 0025 [ 83]: a7fc57fd55b481a2 +Block 0025 [ 84]: 383ac58faa6a8afa +Block 0025 [ 85]: e15530da8507a5e6 +Block 0025 [ 86]: 27eee21e792ca907 +Block 0025 [ 87]: c5ea9ec8a817e81f +Block 0025 [ 88]: 70008fdb121ecf32 +Block 0025 [ 89]: 978e2f5024aebf1d +Block 0025 [ 90]: 54143c4d79513ca4 +Block 0025 [ 91]: e5753e90346facad +Block 0025 [ 92]: b274b4c10a0161ff +Block 0025 [ 93]: 4f9096920761d015 +Block 0025 [ 94]: ae52b378a843f7d4 +Block 0025 [ 95]: 215f01ff30b7aeb2 +Block 0025 [ 96]: 5690ba842925161e +Block 0025 [ 97]: b7e25a89542e522c +Block 0025 [ 98]: 7644cfc97b40b48a +Block 0025 [ 99]: 4380c85f11f70baa +Block 0025 [100]: 94ba2b2707ebb3f2 +Block 0025 [101]: 89125afa70ed9ba4 +Block 0025 [102]: 5181f2282d281fe1 +Block 0025 [103]: f2f3dbcde02f7b28 +Block 0025 [104]: c0cca5a20a9cef7f +Block 0025 [105]: 6ee895188116cbc4 +Block 0025 [106]: e782e9270cecc673 +Block 0025 [107]: 95793a3c704b4dec +Block 0025 [108]: 5be31429be10f2bb +Block 0025 [109]: 8b2243083615ec15 +Block 0025 [110]: c5ade73601838bb6 +Block 0025 [111]: cc498fab3f9da0ea +Block 0025 [112]: 3fb7ce8e8ff8e31e +Block 0025 [113]: 9007393c51b786ce +Block 0025 [114]: 0d2e3be79e8be99c +Block 0025 [115]: 22a0992219b7d9c1 +Block 0025 [116]: 201a88022a7a5e5e +Block 0025 [117]: a5e413ff26993fa3 +Block 0025 [118]: ed88af659a44ff8e +Block 0025 [119]: a3a95740338b24b9 +Block 0025 [120]: c0c268eb4867d83a +Block 0025 [121]: 6bc5f961c03e2fc1 +Block 0025 [122]: 4707f39a3d5fc77d +Block 0025 [123]: 8aabb099015c1bd8 +Block 0025 [124]: eed1e19d8ca2a204 +Block 0025 [125]: 443a58299ed4223d +Block 0025 [126]: d74770e09dce90bb +Block 0025 [127]: 4b888c18c4236b8f +Block 0026 [ 0]: 7524ecdc95e7c6d7 +Block 0026 [ 1]: b3cb822ba2eceed0 +Block 0026 [ 2]: 7d987ffbecfccf8c +Block 0026 [ 3]: 3a258473aa1fdc9f +Block 0026 [ 4]: 83e61e2c136c00bf +Block 0026 [ 5]: caab98d5a6680f59 +Block 0026 [ 6]: 3908a0934c16862e +Block 0026 [ 7]: cc51e77f565be08f +Block 0026 [ 8]: 50d45dff2ee9795f +Block 0026 [ 9]: a35605e01aacbbc6 +Block 0026 [ 10]: 65c99361e71f2100 +Block 0026 [ 11]: 89a8baffa55ff0e5 +Block 0026 [ 12]: c65bec11667a437b +Block 0026 [ 13]: 090740aa017af145 +Block 0026 [ 14]: fab2e73cfa81f396 +Block 0026 [ 15]: 8679026a13ee01e3 +Block 0026 [ 16]: c05d58a1f3ab7333 +Block 0026 [ 17]: c896937796641e46 +Block 0026 [ 18]: ee27c718c81600aa +Block 0026 [ 19]: 0a3b9a30f844f5d0 +Block 0026 [ 20]: 567ee45f0a0c28d3 +Block 0026 [ 21]: cf3876bf24e2a5e8 +Block 0026 [ 22]: 9a2cafb3f511bf6e +Block 0026 [ 23]: 8487f16264a92081 +Block 0026 [ 24]: 74f04fae8ecf7090 +Block 0026 [ 25]: bd34df8e4e140159 +Block 0026 [ 26]: 24b7139c92dc8525 +Block 0026 [ 27]: 0553db4b337a9f7f +Block 0026 [ 28]: 1c24f59103b3a966 +Block 0026 [ 29]: a5175df227ce8de8 +Block 0026 [ 30]: f3b4ae3a1754e5c0 +Block 0026 [ 31]: 6c704dc1f8c64299 +Block 0026 [ 32]: 4d8a9c79d715519e +Block 0026 [ 33]: 8eaab1487cba16c8 +Block 0026 [ 34]: 528c6d737b994fd5 +Block 0026 [ 35]: fc8acca0cc21c09c +Block 0026 [ 36]: d61bc364f6ebaf18 +Block 0026 [ 37]: 8b94c071976e68a0 +Block 0026 [ 38]: 56ded45d70cd498b +Block 0026 [ 39]: 6a152849b21db2fd +Block 0026 [ 40]: 86bd73f44d45264b +Block 0026 [ 41]: c40ac98438a506ed +Block 0026 [ 42]: 5701ffca1aaad2ec +Block 0026 [ 43]: cff12b9747736945 +Block 0026 [ 44]: f9a6a6323192d3ab +Block 0026 [ 45]: 18c0163c6a7445a9 +Block 0026 [ 46]: ebba754fafbaa806 +Block 0026 [ 47]: da031098c2d192e1 +Block 0026 [ 48]: 2136f081115bb910 +Block 0026 [ 49]: 42cfafd06a770254 +Block 0026 [ 50]: 3cb4fe46c0f36b15 +Block 0026 [ 51]: 497e81c32e8afca4 +Block 0026 [ 52]: 69be4fb9638403d3 +Block 0026 [ 53]: 623d7fc341bb7b36 +Block 0026 [ 54]: 07d4519da1bd73f5 +Block 0026 [ 55]: 39af114fee896a8a +Block 0026 [ 56]: 9d7f584810c79e34 +Block 0026 [ 57]: f322aaa42a4ae198 +Block 0026 [ 58]: fb1aabd77964bde2 +Block 0026 [ 59]: d78ebb3d243f9b2d +Block 0026 [ 60]: 56a651b80a3da854 +Block 0026 [ 61]: edfd1fc542a8a0e6 +Block 0026 [ 62]: 0a46f95d3fae6429 +Block 0026 [ 63]: 3f20f938f650b5b6 +Block 0026 [ 64]: 54d570030c9c4837 +Block 0026 [ 65]: 5a2bef18df0d2e76 +Block 0026 [ 66]: b9e8a41eaba841cb +Block 0026 [ 67]: f5dcbf5174e0cbe2 +Block 0026 [ 68]: 70f5c1b6902e4a6d +Block 0026 [ 69]: 9761e7fb83ccb56f +Block 0026 [ 70]: 5f18b557308f0816 +Block 0026 [ 71]: a11c1e7aa6418541 +Block 0026 [ 72]: c631bafe9232e605 +Block 0026 [ 73]: 8826e45712fce91d +Block 0026 [ 74]: cd7e12f6195a79f9 +Block 0026 [ 75]: 9b8e8d667a3a4d1b +Block 0026 [ 76]: ef7efc9b3ae6f0a5 +Block 0026 [ 77]: 0f4c34f7f2ec4243 +Block 0026 [ 78]: 8f556330f679d973 +Block 0026 [ 79]: df7bda01e284a44e +Block 0026 [ 80]: eeabac8631c766ef +Block 0026 [ 81]: fef44e5ef6a3498c +Block 0026 [ 82]: 2d382ba1d1226d27 +Block 0026 [ 83]: b4f91bd12ec9f39f +Block 0026 [ 84]: 1db321ce939ddc97 +Block 0026 [ 85]: 7a5a0eabeab0078f +Block 0026 [ 86]: 51eb1dda474c86c1 +Block 0026 [ 87]: feb8d76a89319ec8 +Block 0026 [ 88]: d0039a53c43dfa4e +Block 0026 [ 89]: 82e48ec313b1cdea +Block 0026 [ 90]: c767da8cc93f5a1a +Block 0026 [ 91]: bfae99754e21e39c +Block 0026 [ 92]: 63fe97ada5387dbc +Block 0026 [ 93]: 2495c0d09d9f5d0a +Block 0026 [ 94]: bd2bbee826f6f61c +Block 0026 [ 95]: 59e3da689fe1d853 +Block 0026 [ 96]: e0f2181f9021901a +Block 0026 [ 97]: ce0bca4afe4bcdbd +Block 0026 [ 98]: 806ad96f49d275fb +Block 0026 [ 99]: ca66fff815705ad9 +Block 0026 [100]: 5e98c84e2bc4c65d +Block 0026 [101]: 138ce0cd914c7e4b +Block 0026 [102]: 1618685441796cd2 +Block 0026 [103]: 5652d9b9b577c1ca +Block 0026 [104]: fee05c49605b365d +Block 0026 [105]: 3a21df7d902490b6 +Block 0026 [106]: 0e56efb726856293 +Block 0026 [107]: ca9357c7d84aeaf3 +Block 0026 [108]: 814277096e54588a +Block 0026 [109]: ad5782d3e8183ea5 +Block 0026 [110]: 5258092311f7e6f9 +Block 0026 [111]: 16d04ef134231d8a +Block 0026 [112]: 4108069cb7d3c144 +Block 0026 [113]: b9fd8d673423e689 +Block 0026 [114]: 351480ec621ec66c +Block 0026 [115]: e6a6252aacf2671d +Block 0026 [116]: 7d2d586140549db6 +Block 0026 [117]: bfd7061371b05c96 +Block 0026 [118]: cfdcfe617d0483c4 +Block 0026 [119]: d573dd56878888fb +Block 0026 [120]: a040fd126cc375ae +Block 0026 [121]: 2d2c73cb9fe6db48 +Block 0026 [122]: 339570f37059f69e +Block 0026 [123]: 82ef4b1697bacaf7 +Block 0026 [124]: 1955bb40ef1fc395 +Block 0026 [125]: 8ff584d88baa7c9d +Block 0026 [126]: 0ad220eb031acb72 +Block 0026 [127]: 2484f6a33f13f23e +Block 0027 [ 0]: 1fda0c7229c75fdb +Block 0027 [ 1]: 3b057cc942f3cd3f +Block 0027 [ 2]: 31c9c320a5c0376a +Block 0027 [ 3]: cb00a56e4d62b45a +Block 0027 [ 4]: b7572461ea7d6726 +Block 0027 [ 5]: cbc887b494d57efa +Block 0027 [ 6]: cb1b6c6fc2d82eb9 +Block 0027 [ 7]: 33881117fe70f2a6 +Block 0027 [ 8]: 3d1cb35895213d3a +Block 0027 [ 9]: cadf7a6c0022d5f4 +Block 0027 [ 10]: a12c7a7bed011c22 +Block 0027 [ 11]: 536018ae6e9d2647 +Block 0027 [ 12]: 75c4cb0be2473d4d +Block 0027 [ 13]: 9764997b546ebb1a +Block 0027 [ 14]: dda4c694dab76ad4 +Block 0027 [ 15]: 55567a0d8ab9e123 +Block 0027 [ 16]: 2a49c160bb879bce +Block 0027 [ 17]: 5a2403c98b0f8ae8 +Block 0027 [ 18]: a4a92b12cb2b5c51 +Block 0027 [ 19]: ad1798fe3ab20086 +Block 0027 [ 20]: ea98bbeb727fd02e +Block 0027 [ 21]: 43958b17a50e1ec6 +Block 0027 [ 22]: 112a473821660ed4 +Block 0027 [ 23]: 987280b0b5818417 +Block 0027 [ 24]: f7f3543254541625 +Block 0027 [ 25]: 5ab76e1f9126f8ab +Block 0027 [ 26]: 65e55682ea820bdc +Block 0027 [ 27]: 972dc0ebaed288ab +Block 0027 [ 28]: f79b148835c0958d +Block 0027 [ 29]: 3ace78497080a361 +Block 0027 [ 30]: 9969a3d7b1befeaf +Block 0027 [ 31]: bd742e51395a89d3 +Block 0027 [ 32]: baf43c1483db2352 +Block 0027 [ 33]: e84ee2f1a84ece40 +Block 0027 [ 34]: 8f22dc4670472f04 +Block 0027 [ 35]: 2dcf99ef10f86670 +Block 0027 [ 36]: ce14e564c83002bc +Block 0027 [ 37]: 2e32ecc6db0741fa +Block 0027 [ 38]: ad4f625ed99e4383 +Block 0027 [ 39]: e6603fb0f3152626 +Block 0027 [ 40]: 32eaec4ac6c7c398 +Block 0027 [ 41]: 865a9e0a85b188b8 +Block 0027 [ 42]: 560965c1253f5da6 +Block 0027 [ 43]: 2693d2406683e622 +Block 0027 [ 44]: f43c35decf7602d7 +Block 0027 [ 45]: a5fff958abd0eeef +Block 0027 [ 46]: 8a33327b82089453 +Block 0027 [ 47]: 005bef4f733bc2c3 +Block 0027 [ 48]: 97a28713c59f913d +Block 0027 [ 49]: 5cd353bd83cdc6ef +Block 0027 [ 50]: 0aacbc79afddab85 +Block 0027 [ 51]: 4fe6b306da0bfa7d +Block 0027 [ 52]: 282f1a5d2122d391 +Block 0027 [ 53]: f438beb0459123af +Block 0027 [ 54]: 8d9a638b3e3972e1 +Block 0027 [ 55]: c57f98b7f0ebec5f +Block 0027 [ 56]: 493014c1e861a08d +Block 0027 [ 57]: 45dea4bb52398bb4 +Block 0027 [ 58]: 4202e23da13e9241 +Block 0027 [ 59]: 5ca76107962004d4 +Block 0027 [ 60]: 168a3f3fb1162c0c +Block 0027 [ 61]: 10a2c8451d4897d4 +Block 0027 [ 62]: 47be7e7ab8dade9e +Block 0027 [ 63]: 744d7e7a55d4300e +Block 0027 [ 64]: e6443af357da9913 +Block 0027 [ 65]: 385e14bfc8c813d0 +Block 0027 [ 66]: f3f6bbd7ce800d04 +Block 0027 [ 67]: 1e9bec6599344a5b +Block 0027 [ 68]: f58295f409ae0aef +Block 0027 [ 69]: 1fbed74bd118c839 +Block 0027 [ 70]: d5853cab4e59c44e +Block 0027 [ 71]: b94325cf3fbb0cad +Block 0027 [ 72]: 47e21f2b9ea96510 +Block 0027 [ 73]: 9cd1830ba9360d6c +Block 0027 [ 74]: 65f9e4a2bbb6bf7a +Block 0027 [ 75]: 3709eb11e8d6fece +Block 0027 [ 76]: f0faeac468e19460 +Block 0027 [ 77]: c4471652d4912143 +Block 0027 [ 78]: c876c69eccbece1d +Block 0027 [ 79]: 7950940be4fb865e +Block 0027 [ 80]: 1b4f4a1601f2c591 +Block 0027 [ 81]: e5706950d5d8f6b0 +Block 0027 [ 82]: 4042a47ec801379d +Block 0027 [ 83]: 6be04ec20118f578 +Block 0027 [ 84]: 001a180d065bce38 +Block 0027 [ 85]: 80964ddc465ba83d +Block 0027 [ 86]: 415c2aa44481ac91 +Block 0027 [ 87]: aed89f436287d7e3 +Block 0027 [ 88]: 802952efaaf3d094 +Block 0027 [ 89]: 1af0ad9a1610ed91 +Block 0027 [ 90]: 744f0d0bef283a27 +Block 0027 [ 91]: 1b689530c140618e +Block 0027 [ 92]: 4f7f8dc2b1bc8bf4 +Block 0027 [ 93]: 376ee176419f6bcb +Block 0027 [ 94]: 2ee40b0c2b7ffc4f +Block 0027 [ 95]: 7e368f2600d064e3 +Block 0027 [ 96]: 54553339b386dfbc +Block 0027 [ 97]: fd22006cdd6cc1d1 +Block 0027 [ 98]: aeaf9f07ce706f0c +Block 0027 [ 99]: 9a937eed3aaac150 +Block 0027 [100]: 50dbe43b498b11af +Block 0027 [101]: 03a25bcf482de7db +Block 0027 [102]: 1ac83d9c336e1ae5 +Block 0027 [103]: c7f954237ed53c26 +Block 0027 [104]: 7f8d262d30bd8811 +Block 0027 [105]: 9a47671a117cf278 +Block 0027 [106]: a0f96d1f1dbd203b +Block 0027 [107]: c8f89836bcb2ace2 +Block 0027 [108]: 6aa9b91c1cd82772 +Block 0027 [109]: 54445ab2a0e7dc23 +Block 0027 [110]: 66fc9ad87cf140db +Block 0027 [111]: 0159efe6983f9106 +Block 0027 [112]: b6cf18fdd907cf1d +Block 0027 [113]: 7696955344a1d27c +Block 0027 [114]: 1f3dfbd6e87b3d20 +Block 0027 [115]: 299d8c04822e399d +Block 0027 [116]: 0532c0de3a332eef +Block 0027 [117]: 696239a2ac2cbbb5 +Block 0027 [118]: 68f545a0ec2c696c +Block 0027 [119]: 048222d61d6f610d +Block 0027 [120]: 6584663441c18229 +Block 0027 [121]: a830dac83ecbaccd +Block 0027 [122]: 51f2a3e552d6153f +Block 0027 [123]: 7bdc0c6c3384f2b7 +Block 0027 [124]: e803e1fb1417ad70 +Block 0027 [125]: cf0ec4475e1e64fd +Block 0027 [126]: a4e27f7d5dc71200 +Block 0027 [127]: 06d4c361534e9911 +Block 0028 [ 0]: 32c41335ea9210b6 +Block 0028 [ 1]: 2908caade7811d5c +Block 0028 [ 2]: 4b1a563eb5a1d98d +Block 0028 [ 3]: 45cf5b4af41deea0 +Block 0028 [ 4]: 5909a634f94e4646 +Block 0028 [ 5]: ff552e94367fede7 +Block 0028 [ 6]: 8989b674682ab120 +Block 0028 [ 7]: 800dd98f9fa275ab +Block 0028 [ 8]: edffe0b58e9c86fd +Block 0028 [ 9]: c45282004f2814a8 +Block 0028 [ 10]: a521cf9953b68333 +Block 0028 [ 11]: 70abc3e590f22725 +Block 0028 [ 12]: 8f29ae090f8d0773 +Block 0028 [ 13]: e4d540b0329e3fd3 +Block 0028 [ 14]: 77fddd636772d800 +Block 0028 [ 15]: ba078e3c82b5318b +Block 0028 [ 16]: 56d10528600ed38a +Block 0028 [ 17]: 89d098154caa0893 +Block 0028 [ 18]: e4aa0f03e1cb18d5 +Block 0028 [ 19]: fc4cf7eb61cf8f4f +Block 0028 [ 20]: 44dc4ee07a7bfd74 +Block 0028 [ 21]: cb06692efcf18e23 +Block 0028 [ 22]: 5a9d5ebdacfef739 +Block 0028 [ 23]: 9790bad34a423c07 +Block 0028 [ 24]: 3383040615c439a7 +Block 0028 [ 25]: 226fde6e0cb002f1 +Block 0028 [ 26]: 7978d600dd285d8c +Block 0028 [ 27]: 0835c8b042d47a83 +Block 0028 [ 28]: b1a17cbff3060a9f +Block 0028 [ 29]: 4545802efeae6841 +Block 0028 [ 30]: 5367aec249f2b6de +Block 0028 [ 31]: 9a8422a7f6aea5e0 +Block 0028 [ 32]: 94cabf485e66553d +Block 0028 [ 33]: e57981e2b14887a4 +Block 0028 [ 34]: 93905e1e794d2205 +Block 0028 [ 35]: 6a4ff9e27c02848d +Block 0028 [ 36]: 10c8f985566fe580 +Block 0028 [ 37]: b3c3171e95becffa +Block 0028 [ 38]: eec81d0bcede8dd4 +Block 0028 [ 39]: b00be28516aca858 +Block 0028 [ 40]: 6934e88a20ace76c +Block 0028 [ 41]: 47f08f5592350122 +Block 0028 [ 42]: 14e17ffc342eebaf +Block 0028 [ 43]: 863d389922f73a18 +Block 0028 [ 44]: 0ff7df6a4bbf6bcd +Block 0028 [ 45]: 2faba6af4b500401 +Block 0028 [ 46]: 372768258430dfe1 +Block 0028 [ 47]: 01bcbd80ed1de995 +Block 0028 [ 48]: ae5afc3480fb7967 +Block 0028 [ 49]: f250d7a29d4be253 +Block 0028 [ 50]: 872e9136a10d0eb5 +Block 0028 [ 51]: 3564f6703348db6b +Block 0028 [ 52]: cf93aa26857f8ee7 +Block 0028 [ 53]: 1d299906531381e4 +Block 0028 [ 54]: ed7ca859c6d8b326 +Block 0028 [ 55]: 5bbab373efc162e8 +Block 0028 [ 56]: 41b53fef1db146c2 +Block 0028 [ 57]: 9867a1d10a2b388d +Block 0028 [ 58]: a5ad3d460ca549c4 +Block 0028 [ 59]: 8bed29dd5fc55562 +Block 0028 [ 60]: 3dcf490ad631e1a9 +Block 0028 [ 61]: ca435946ccb81dcb +Block 0028 [ 62]: 1b4562bcf9168a82 +Block 0028 [ 63]: 2fd4e872eaa1fe62 +Block 0028 [ 64]: b983dc5232d579d5 +Block 0028 [ 65]: 03c695c140c0edf1 +Block 0028 [ 66]: 12099ea1c402ac91 +Block 0028 [ 67]: e5afa04a89237da7 +Block 0028 [ 68]: a728ae68bd5437fc +Block 0028 [ 69]: b88fd09c300d4a2d +Block 0028 [ 70]: 9914366e0b3c126a +Block 0028 [ 71]: 8364641c737e50d1 +Block 0028 [ 72]: 122e37cb75998698 +Block 0028 [ 73]: 85572ba9771af0fe +Block 0028 [ 74]: a44b9f591f80b58a +Block 0028 [ 75]: 6459da15cb5d272f +Block 0028 [ 76]: ae12e0972e058f17 +Block 0028 [ 77]: a0e841ae6a81805d +Block 0028 [ 78]: 5acd71d74a03b7c9 +Block 0028 [ 79]: c1673f3dffac1f87 +Block 0028 [ 80]: 9683f8d059a3b697 +Block 0028 [ 81]: 15f48a9a018b5479 +Block 0028 [ 82]: e0a92373d66cb331 +Block 0028 [ 83]: b84417d7cb5bd6b3 +Block 0028 [ 84]: 22132d54c2fd5b3f +Block 0028 [ 85]: 785d35635126aacf +Block 0028 [ 86]: d0b53d2c7798ecce +Block 0028 [ 87]: 9b626d1e9b959bff +Block 0028 [ 88]: da50d0911145526d +Block 0028 [ 89]: 75312c2a5cf2e275 +Block 0028 [ 90]: fb3aa5e8a13c4046 +Block 0028 [ 91]: e1c7c3217dd12c33 +Block 0028 [ 92]: 07909d45807dd952 +Block 0028 [ 93]: 110ec96ff2ebdc7f +Block 0028 [ 94]: 7ea07fe9842efe47 +Block 0028 [ 95]: 425c93ed6006230c +Block 0028 [ 96]: b7fb64295a59a93d +Block 0028 [ 97]: 4efcb995d56337c4 +Block 0028 [ 98]: bf377c88a5af6c75 +Block 0028 [ 99]: ce50e122e1079e8e +Block 0028 [100]: 06b62a99c54dd329 +Block 0028 [101]: 5b0a20d8f32a0af9 +Block 0028 [102]: 3dcc3c5ac31473ed +Block 0028 [103]: edcdeeabbecb091c +Block 0028 [104]: 38e14f2ad8ddaef1 +Block 0028 [105]: 3949a00bdfc849d5 +Block 0028 [106]: 3b9f6f89d40e7f3e +Block 0028 [107]: fd7903c040f8ee1b +Block 0028 [108]: 7d2e15f404b0d354 +Block 0028 [109]: 44f182b1f5898001 +Block 0028 [110]: c07e54e736fcfc92 +Block 0028 [111]: 3261288fd6af25bc +Block 0028 [112]: 37eb6fb2c2600a4d +Block 0028 [113]: 5eb2713e33ebc44a +Block 0028 [114]: c1bc5125e04a3cc8 +Block 0028 [115]: 069c8e186b801b0d +Block 0028 [116]: 12cfde575ffb4f28 +Block 0028 [117]: 52c4b308cf636f0f +Block 0028 [118]: d0d7c70301717b1c +Block 0028 [119]: 5e336270c1e4be93 +Block 0028 [120]: bbc5117dafb3e016 +Block 0028 [121]: e92c253e4ff5c789 +Block 0028 [122]: 2fe2ef37a3bad40d +Block 0028 [123]: 5f2b5516992e9a7c +Block 0028 [124]: 751834695924b8b9 +Block 0028 [125]: 1690f02af7b84ea1 +Block 0028 [126]: 532fc595d9512246 +Block 0028 [127]: c61ba9a02850ea46 +Block 0029 [ 0]: add11aa00a1ea4d0 +Block 0029 [ 1]: fefe9582aaec41cd +Block 0029 [ 2]: 5cd4a89c4444635d +Block 0029 [ 3]: bdd0c9350b4a5094 +Block 0029 [ 4]: 5d0a829bca844556 +Block 0029 [ 5]: 186a40fca2ba9ad9 +Block 0029 [ 6]: b6607f2d0e772114 +Block 0029 [ 7]: 8fdad92bdeab4dfc +Block 0029 [ 8]: af5824fae0d6e220 +Block 0029 [ 9]: 1172624a43ce5a27 +Block 0029 [ 10]: 9efa1c98083ea629 +Block 0029 [ 11]: 2057b1f90d21994a +Block 0029 [ 12]: b4a78f175af13055 +Block 0029 [ 13]: a8067c8ecb690f89 +Block 0029 [ 14]: 696808a37d55b720 +Block 0029 [ 15]: 3ac7ac8bcf254afc +Block 0029 [ 16]: 3118370cc0dd00ea +Block 0029 [ 17]: 2076c62ed3b2abc5 +Block 0029 [ 18]: 17bb0bf6de2ddc05 +Block 0029 [ 19]: 25e529d36c8adab3 +Block 0029 [ 20]: 7b3e7cc26479761f +Block 0029 [ 21]: cbd465a0506827a4 +Block 0029 [ 22]: d37d375e0e95a1f5 +Block 0029 [ 23]: 76f8302d75ed5d19 +Block 0029 [ 24]: 2191acabbb23f800 +Block 0029 [ 25]: 3d377fb20887a356 +Block 0029 [ 26]: c7682304541f1323 +Block 0029 [ 27]: ceb43d33e7d3386a +Block 0029 [ 28]: 407add972d722890 +Block 0029 [ 29]: 93a767e25ada3ba7 +Block 0029 [ 30]: 8fed6af3edc7824f +Block 0029 [ 31]: bf01dfabc83a3c4c +Block 0029 [ 32]: fe1ef8d4ce519029 +Block 0029 [ 33]: f1a09603ee5fcdf2 +Block 0029 [ 34]: 67cc66acdff21067 +Block 0029 [ 35]: 1116b86114d72bcb +Block 0029 [ 36]: 56164ccc856823e4 +Block 0029 [ 37]: 3171a29cde173382 +Block 0029 [ 38]: cbf5e8127ef7fb2f +Block 0029 [ 39]: 884573ff59238a7b +Block 0029 [ 40]: 8c3565a5909ba912 +Block 0029 [ 41]: 58e7366a05905181 +Block 0029 [ 42]: dbf13d7043ede744 +Block 0029 [ 43]: de011ea9c7c23e54 +Block 0029 [ 44]: 428cad22d58f193a +Block 0029 [ 45]: 45de623cf58b0c53 +Block 0029 [ 46]: 483fc391de58d241 +Block 0029 [ 47]: e73d32757f024a7b +Block 0029 [ 48]: c835d9a411601ec6 +Block 0029 [ 49]: 4a3af9cc90fa8a69 +Block 0029 [ 50]: b1c327c3b12a12ff +Block 0029 [ 51]: 7fdc8c0ebd7c30b6 +Block 0029 [ 52]: 4b9b92ff0b10341c +Block 0029 [ 53]: 9d8b0c5831e6c994 +Block 0029 [ 54]: d47efb3be63d3e3d +Block 0029 [ 55]: ade765bf86f5df54 +Block 0029 [ 56]: 788fd7782936eeea +Block 0029 [ 57]: 540e48df4db64ada +Block 0029 [ 58]: 2fe776d6bf8d30a4 +Block 0029 [ 59]: 63c88f63651bea29 +Block 0029 [ 60]: 81aea09a44806f4b +Block 0029 [ 61]: d90a0f9ba502ac3f +Block 0029 [ 62]: 4f96462a8497a7c7 +Block 0029 [ 63]: a7ae07aeb861a596 +Block 0029 [ 64]: 3a1b6d5ebcfc303d +Block 0029 [ 65]: 723827adee4a8e15 +Block 0029 [ 66]: 72b52160c47894e1 +Block 0029 [ 67]: 15616dcc3f42f6e3 +Block 0029 [ 68]: de67114cc4170021 +Block 0029 [ 69]: 95ee35dfd896d229 +Block 0029 [ 70]: 7dc3c038cac0bb6a +Block 0029 [ 71]: e114afde3c1de71f +Block 0029 [ 72]: 93ea33127d3ce347 +Block 0029 [ 73]: bdee9a999f9f8214 +Block 0029 [ 74]: 3550c57e4800e4ca +Block 0029 [ 75]: 59bdb97534185fb3 +Block 0029 [ 76]: d4efb828dc1f5ff5 +Block 0029 [ 77]: 711c1f4bacce64ab +Block 0029 [ 78]: 459a1b080ac101c6 +Block 0029 [ 79]: ef8e36116123fc71 +Block 0029 [ 80]: 0d0fae7c0cf5e221 +Block 0029 [ 81]: 3b102939edcc0eae +Block 0029 [ 82]: 2d9b9bf5be11f338 +Block 0029 [ 83]: 271550e5da1f36de +Block 0029 [ 84]: cca29d23e9c467b4 +Block 0029 [ 85]: 744636c4a604ae60 +Block 0029 [ 86]: 89b8ee0f4749a36a +Block 0029 [ 87]: 65220bc4563a257a +Block 0029 [ 88]: b74c05e4eaa7cc4f +Block 0029 [ 89]: 086fd14ecdeb82e8 +Block 0029 [ 90]: 230b4c7e56c1ee7b +Block 0029 [ 91]: bae6c10b660c5111 +Block 0029 [ 92]: 07cd541cc6437cb1 +Block 0029 [ 93]: b5ea0b9f20ad5934 +Block 0029 [ 94]: 18e9b42ec8814d0e +Block 0029 [ 95]: e83fb10b5a09e073 +Block 0029 [ 96]: da5e28b56288ac58 +Block 0029 [ 97]: 174a4b4903b9c5d6 +Block 0029 [ 98]: 82bc2f5b6793b6cc +Block 0029 [ 99]: ac6b5c349715cfbf +Block 0029 [100]: 7a48fed3b0c9f26e +Block 0029 [101]: 4eeb834b011f248a +Block 0029 [102]: 2a1d26ca58e502b1 +Block 0029 [103]: 040c0107e7aaa35e +Block 0029 [104]: 3cdad0dfe1993113 +Block 0029 [105]: 1c49204462db6030 +Block 0029 [106]: 0bb6e36674aef59d +Block 0029 [107]: 78f8a4a051cb7d88 +Block 0029 [108]: a95d9a11b1b56cd1 +Block 0029 [109]: e3664edc847d987f +Block 0029 [110]: 699052c329fcd1c3 +Block 0029 [111]: 8b02281ab5d25587 +Block 0029 [112]: 61fa5bcacc25ec28 +Block 0029 [113]: 382590c5a74307db +Block 0029 [114]: de30a0f8f4c2f320 +Block 0029 [115]: c55f1987ae2aa60a +Block 0029 [116]: 8a724baccfc67cfa +Block 0029 [117]: de0cfef70f80dd8d +Block 0029 [118]: 77beeebf78cc6a32 +Block 0029 [119]: 617da08890f3c0e9 +Block 0029 [120]: 62bb69bb0f1c5160 +Block 0029 [121]: a93377cb766010b5 +Block 0029 [122]: 112da6ac115a74fb +Block 0029 [123]: e3a52beb05168b2b +Block 0029 [124]: f3fd36ecabb3527b +Block 0029 [125]: 64574738ec294c16 +Block 0029 [126]: d5333065268994d7 +Block 0029 [127]: b09bd8e650de9161 +Block 0030 [ 0]: 08dfb5b3fe406306 +Block 0030 [ 1]: c5312272e1f69b52 +Block 0030 [ 2]: cbdd6a284c512f4d +Block 0030 [ 3]: 687538b188f6bf15 +Block 0030 [ 4]: 5aee1a263441db4a +Block 0030 [ 5]: 00e32ad00ade10e7 +Block 0030 [ 6]: bab8788eafa26d22 +Block 0030 [ 7]: 7b843cae9bd7429c +Block 0030 [ 8]: 89ab7c909ce0afcb +Block 0030 [ 9]: 7fb383e1420a5e21 +Block 0030 [ 10]: b26b0cfbee87d48a +Block 0030 [ 11]: 983210f3de9b9047 +Block 0030 [ 12]: fb59126535223142 +Block 0030 [ 13]: db514d95f211c7fb +Block 0030 [ 14]: f515b48c97bd9515 +Block 0030 [ 15]: 7e68254e02cdd184 +Block 0030 [ 16]: c496044d88ab47c0 +Block 0030 [ 17]: 22db0bf93215dd06 +Block 0030 [ 18]: cf46a109f73acc39 +Block 0030 [ 19]: e6a9c9e5962a2bfc +Block 0030 [ 20]: 12797c2591967658 +Block 0030 [ 21]: 1014994c62a70462 +Block 0030 [ 22]: 90a53cae4c9b0e1f +Block 0030 [ 23]: a633d50ff83bcb8d +Block 0030 [ 24]: 70a6e461bd449dbf +Block 0030 [ 25]: 4da0098f9c7a5453 +Block 0030 [ 26]: a09198d0dfe7713b +Block 0030 [ 27]: 6eb90d60a5ba7529 +Block 0030 [ 28]: 81d8c5ebe039a33b +Block 0030 [ 29]: 4e37f98a762ef594 +Block 0030 [ 30]: 1abfad99141701c9 +Block 0030 [ 31]: 67ee74fa668481eb +Block 0030 [ 32]: 7a669dd3cb4cf59e +Block 0030 [ 33]: aea827dc1f7195ca +Block 0030 [ 34]: 5c80866eb9c926eb +Block 0030 [ 35]: 0d5dae78f6f6aa32 +Block 0030 [ 36]: da67e2bf0a9a4b77 +Block 0030 [ 37]: 8a18b58bfcb1cd04 +Block 0030 [ 38]: fa0637bd520b412c +Block 0030 [ 39]: 3d018060fe8aa1e0 +Block 0030 [ 40]: c6c79556dedc0000 +Block 0030 [ 41]: 54265a1bfe4733f9 +Block 0030 [ 42]: dae1c5465ac7ce06 +Block 0030 [ 43]: 91d1e17536504207 +Block 0030 [ 44]: b16901c12fbbcec2 +Block 0030 [ 45]: b0cab54ebbc38c1a +Block 0030 [ 46]: cb177d1c379b6ba5 +Block 0030 [ 47]: 9e89831cd5f7af27 +Block 0030 [ 48]: c58c9ea11044eb08 +Block 0030 [ 49]: 0098fda05b1145c6 +Block 0030 [ 50]: ca02336bd40c4e33 +Block 0030 [ 51]: 77abb03f0e361d83 +Block 0030 [ 52]: bfa6459a28eb2f57 +Block 0030 [ 53]: 54d31d24130925b7 +Block 0030 [ 54]: a12618fe3ca0c681 +Block 0030 [ 55]: a24b0483c9958e0a +Block 0030 [ 56]: 64d5a56781f4d6f4 +Block 0030 [ 57]: e20130a5f6d87d0a +Block 0030 [ 58]: 5f580a9102de8a68 +Block 0030 [ 59]: 502a334100566829 +Block 0030 [ 60]: 797750bf411eb51b +Block 0030 [ 61]: 62a09e380225fc5e +Block 0030 [ 62]: b33ee6ddb9ac36f8 +Block 0030 [ 63]: 9ad1dd87f3ee6417 +Block 0030 [ 64]: c665959960517a13 +Block 0030 [ 65]: 4e5cbc7e627f4e24 +Block 0030 [ 66]: cf059e777b429508 +Block 0030 [ 67]: b9927671cb6d6302 +Block 0030 [ 68]: 19926b6bda53e8fe +Block 0030 [ 69]: 423ba4b5555df12a +Block 0030 [ 70]: d733c68771548188 +Block 0030 [ 71]: 29a6ccd4536f41dc +Block 0030 [ 72]: 5c0d40dfa1a71042 +Block 0030 [ 73]: 181b1f0ff83ca88d +Block 0030 [ 74]: f8d3a324d605f361 +Block 0030 [ 75]: c7ad66be1e571c2e +Block 0030 [ 76]: 2a21a8c1e20120b0 +Block 0030 [ 77]: 02952b2500d1efa2 +Block 0030 [ 78]: adf8c180acee7d49 +Block 0030 [ 79]: 8237b37ed5f21ac5 +Block 0030 [ 80]: bfd242ac3779da36 +Block 0030 [ 81]: d7b855378e7fbdd2 +Block 0030 [ 82]: 170f22ae96fe001f +Block 0030 [ 83]: 8eab780bebebf04a +Block 0030 [ 84]: 477e80264e61af76 +Block 0030 [ 85]: dc69e31592d53b7e +Block 0030 [ 86]: 328fb77f8bae2fcc +Block 0030 [ 87]: c455a0092a29ea78 +Block 0030 [ 88]: 1800e6910efc272b +Block 0030 [ 89]: aafdfa08b9556b15 +Block 0030 [ 90]: ad91adfa49ce7d6b +Block 0030 [ 91]: 877b80cac732ef89 +Block 0030 [ 92]: 44674288a92e8bd9 +Block 0030 [ 93]: 79f4d5eaf13b6f7f +Block 0030 [ 94]: 684b87a9b0d52671 +Block 0030 [ 95]: d9db925848ab10d7 +Block 0030 [ 96]: 0f2b06ba22a78c8f +Block 0030 [ 97]: b243791bc790a685 +Block 0030 [ 98]: 1170616247ef89f1 +Block 0030 [ 99]: 5aeff68c2d24e50e +Block 0030 [100]: 4343a891e18c7467 +Block 0030 [101]: 75d3996a744fa7d5 +Block 0030 [102]: 48914f9a89dbc621 +Block 0030 [103]: 0e2fb9f7e0f8178b +Block 0030 [104]: a4788b9e0fd44e18 +Block 0030 [105]: 591ea8f93e28cff6 +Block 0030 [106]: de9e9a4a5f89f020 +Block 0030 [107]: 1a88133a2a7ad118 +Block 0030 [108]: 115997bfc3fd9306 +Block 0030 [109]: 30a4ad4d9ef28ef6 +Block 0030 [110]: d537b41a77b10f73 +Block 0030 [111]: 3369bdfb413b272b +Block 0030 [112]: 8e34565660c067bb +Block 0030 [113]: 3da1bd4281d3d62f +Block 0030 [114]: 1370fa3a826909b8 +Block 0030 [115]: 656e4e0c713a2771 +Block 0030 [116]: 8ad3b509c8186a57 +Block 0030 [117]: 4acfd4b8dacba1ba +Block 0030 [118]: bb6cfd146f147a75 +Block 0030 [119]: 4ce21db7ebc6bec5 +Block 0030 [120]: 3b037cf3d8980a60 +Block 0030 [121]: 58b03a7d9e6ab6d1 +Block 0030 [122]: ee0d4ee5f201021a +Block 0030 [123]: 6608e0f76e954f0b +Block 0030 [124]: 0a296388dc27b0a5 +Block 0030 [125]: 39436aba3e4b9171 +Block 0030 [126]: 5d9d8588ee7539a8 +Block 0030 [127]: ad10057b7c4da7e0 +Block 0031 [ 0]: b3c48688fc2b713b +Block 0031 [ 1]: 364781fc5f750423 +Block 0031 [ 2]: ea69a118315d23c7 +Block 0031 [ 3]: 4ac9ed2303ec053e +Block 0031 [ 4]: b6c7e3bfcc85a6f7 +Block 0031 [ 5]: 160b6b27cc70d7f1 +Block 0031 [ 6]: d9b57e9cc0aad16d +Block 0031 [ 7]: f51388fa42bd1428 +Block 0031 [ 8]: 8db628f8a2ccbf52 +Block 0031 [ 9]: 0ef96003d0231d89 +Block 0031 [ 10]: a77815f354a8e5b7 +Block 0031 [ 11]: d584a05b6814fdf8 +Block 0031 [ 12]: f74510d8ca59d0bb +Block 0031 [ 13]: 13c0fd32bdd2cc33 +Block 0031 [ 14]: 6b9516534e1e8ee1 +Block 0031 [ 15]: 34a15e4c62a6ab14 +Block 0031 [ 16]: 1882e2eba3ae44e9 +Block 0031 [ 17]: 957874ed3ac0ca45 +Block 0031 [ 18]: a471a22d5c6b42de +Block 0031 [ 19]: c56f33082e512277 +Block 0031 [ 20]: b81484ee71fe466f +Block 0031 [ 21]: 07d24fcbeb680a1e +Block 0031 [ 22]: f320052c7a5e3ca1 +Block 0031 [ 23]: 56a7f75059c8ff64 +Block 0031 [ 24]: 66d9988e90a28fc8 +Block 0031 [ 25]: c52009fa320c94fc +Block 0031 [ 26]: 38998b1a93fa14ed +Block 0031 [ 27]: 40fcfdcca6291c75 +Block 0031 [ 28]: cc025109722879c5 +Block 0031 [ 29]: 9e52089a827f9efd +Block 0031 [ 30]: 78b4b8748c01ddc2 +Block 0031 [ 31]: 5ffe0751b440f784 +Block 0031 [ 32]: 169ce11a3f88a85f +Block 0031 [ 33]: 33c9a0e2de1d0c3a +Block 0031 [ 34]: 85e428ffcd39101f +Block 0031 [ 35]: 3fa0828a33be4bc6 +Block 0031 [ 36]: 78196d7f8e4c8698 +Block 0031 [ 37]: 9f0c886cf76a8f7d +Block 0031 [ 38]: 4eb7c07ae742f382 +Block 0031 [ 39]: 467bb21382b7aa46 +Block 0031 [ 40]: 4bafc9489e5fbe32 +Block 0031 [ 41]: 1fb0fb5c81d35964 +Block 0031 [ 42]: c434eb81393e44f2 +Block 0031 [ 43]: 561f1f4b28c42edd +Block 0031 [ 44]: 277df226f23e81ee +Block 0031 [ 45]: c08d4113b941697a +Block 0031 [ 46]: 829e09624e128f31 +Block 0031 [ 47]: 6283d40b695d8127 +Block 0031 [ 48]: 9655b9e317f39b77 +Block 0031 [ 49]: 7b68f551daff8793 +Block 0031 [ 50]: c7703dbdf2683b4e +Block 0031 [ 51]: 55c627bbe2d149d1 +Block 0031 [ 52]: a3a66eff7c8051ae +Block 0031 [ 53]: a26573784f8e6ab3 +Block 0031 [ 54]: b5f1e85d216f7949 +Block 0031 [ 55]: f4f73a7c4b9aad80 +Block 0031 [ 56]: 7825ab8d82f2e119 +Block 0031 [ 57]: 477b0475d80ecb8c +Block 0031 [ 58]: 55d7e5090c40da89 +Block 0031 [ 59]: f78377f6048ae4f7 +Block 0031 [ 60]: 8cd3f34ad475a8d6 +Block 0031 [ 61]: 4b083d7bdd6a8cba +Block 0031 [ 62]: 95d8abfb240c4814 +Block 0031 [ 63]: a3377ef2f90de6c2 +Block 0031 [ 64]: dbc89827423716f1 +Block 0031 [ 65]: 335e301508ad645f +Block 0031 [ 66]: 651b44508cd7a07b +Block 0031 [ 67]: c6193afb80e62027 +Block 0031 [ 68]: 2a71a83b6e034408 +Block 0031 [ 69]: e434912f53a352bc +Block 0031 [ 70]: f9d50b8fb251136f +Block 0031 [ 71]: f27424b6c6eba780 +Block 0031 [ 72]: b2264f402f8ef79f +Block 0031 [ 73]: 81697a71fc39551d +Block 0031 [ 74]: 00c6a580d7f107b5 +Block 0031 [ 75]: d6c923bcda6464b2 +Block 0031 [ 76]: b94aa22a4d66b346 +Block 0031 [ 77]: f24aa1224c7568ed +Block 0031 [ 78]: f2b2b13c5372ec7e +Block 0031 [ 79]: 02f019342bfd68de +Block 0031 [ 80]: e7c71e7270a9125f +Block 0031 [ 81]: 5d48c3fde040dd13 +Block 0031 [ 82]: f0f48402df38fe5f +Block 0031 [ 83]: 3c181ea41dc2ec3c +Block 0031 [ 84]: 2beb6e97876b88cf +Block 0031 [ 85]: 7ea1174c0dc96fe5 +Block 0031 [ 86]: 1f8a392f03d0c079 +Block 0031 [ 87]: 4701d9fff4897905 +Block 0031 [ 88]: 14161fe99ea020a2 +Block 0031 [ 89]: 2fa89d01e50bfb3c +Block 0031 [ 90]: 909a26187893ff8c +Block 0031 [ 91]: d71a9cde6778796b +Block 0031 [ 92]: dc5c48410d2a711f +Block 0031 [ 93]: 6d157148168c2013 +Block 0031 [ 94]: a9534ea78f37392f +Block 0031 [ 95]: 04fe65b5dcc4223e +Block 0031 [ 96]: 76cdd2997d6eb568 +Block 0031 [ 97]: e1d576333a57d9ba +Block 0031 [ 98]: c1a31217c5f5599d +Block 0031 [ 99]: 4cb52c88e2e00fe8 +Block 0031 [100]: 153cfd925ef21b00 +Block 0031 [101]: 2e4f158d03b58211 +Block 0031 [102]: 639ffe731e811fcc +Block 0031 [103]: 24fb4a3d962e898b +Block 0031 [104]: e0bcc96f713b8ff9 +Block 0031 [105]: 0cf4c44703830b7f +Block 0031 [106]: b32cb05c07886e34 +Block 0031 [107]: ba08b062ccba50d0 +Block 0031 [108]: 91294b4aa9bc5a43 +Block 0031 [109]: 2d400f10c1b6a9be +Block 0031 [110]: 62a147f32799a447 +Block 0031 [111]: d8d5a2fd4fc9bfdf +Block 0031 [112]: 244d3a7fb1fabfec +Block 0031 [113]: c5b919604e91a5fb +Block 0031 [114]: 387d446b9148351b +Block 0031 [115]: afa4faf51d18ceb6 +Block 0031 [116]: 3d185ce015d811db +Block 0031 [117]: 055b8e4f1439bf47 +Block 0031 [118]: 96a004c174932568 +Block 0031 [119]: 7cde3345b6a6a927 +Block 0031 [120]: 3b2cd27114b81fc0 +Block 0031 [121]: 85a734f9649b30b3 +Block 0031 [122]: dbfac3c3ba955bdd +Block 0031 [123]: cbdd3b8c4c271e4f +Block 0031 [124]: be934f0029c83a48 +Block 0031 [125]: db7e4b8f39c91c7d +Block 0031 [126]: 60b2676ff06a944a +Block 0031 [127]: 802b5b8358cf77b4 +Tag: 96 a9 d4 e5 a1 73 40 92 c8 5e 29 f4 10 a4 59 14 a5 dd 1f 5c bf 08 b2 67 0d a6 8a 02 85 ab f3 2b diff --git a/deps/phc-winner-argon2-20190702/kats/argon2d_v16.shasum b/deps/phc-winner-argon2-20190702/kats/argon2d_v16.shasum new file mode 100644 index 000000000..6df69c8de --- /dev/null +++ b/deps/phc-winner-argon2-20190702/kats/argon2d_v16.shasum @@ -0,0 +1 @@ +4ec4569a016c3accc6a25a34252b03a6135939b3c452389917a3f3b65878165b argon2d_v16 diff --git a/deps/phc-winner-argon2-20190702/kats/argon2i b/deps/phc-winner-argon2-20190702/kats/argon2i new file mode 100644 index 000000000..2438db048 --- /dev/null +++ b/deps/phc-winner-argon2-20190702/kats/argon2i @@ -0,0 +1,12304 @@ +======================================= +Argon2i version number 19 +======================================= +Memory: 32 KiB, Iterations: 3, Parallelism: 4 lanes, Tag length: 32 bytes +Password[32]: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 +Salt[16]: 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 +Secret[8]: 03 03 03 03 03 03 03 03 +Associated data[12]: 04 04 04 04 04 04 04 04 04 04 04 04 +Pre-hashing digest: c4 60 65 81 52 76 a0 b3 e7 31 73 1c 90 2f 1f d8 0c f7 76 90 7f bb 7b 6a 5c a7 2e 7b 56 01 1f ee ca 44 6c 86 dd 75 b9 46 9a 5e 68 79 de c4 b7 2d 08 63 fb 93 9b 98 2e 5f 39 7c c7 d1 64 fd da a9 + + After pass 0: +Block 0000 [ 0]: f8f9e84545db08f6 +Block 0000 [ 1]: 9b073a5c87aa2d97 +Block 0000 [ 2]: d1e868d75ca8d8e4 +Block 0000 [ 3]: 349634174e1aebcc +Block 0000 [ 4]: eea679ca0b5f6de1 +Block 0000 [ 5]: 28f43caf97eba539 +Block 0000 [ 6]: 0f7895c9d5b3a714 +Block 0000 [ 7]: 34ee3afb003414a8 +Block 0000 [ 8]: 19e25e3ad0aea4dd +Block 0000 [ 9]: 0621947f5c64686c +Block 0000 [ 10]: f9eb4d3b70a00365 +Block 0000 [ 11]: 29d30205ecdbbfdd +Block 0000 [ 12]: bd82cd842052f713 +Block 0000 [ 13]: e465f1dd3eb4d797 +Block 0000 [ 14]: 56769e2b75d3d2e7 +Block 0000 [ 15]: fa423c1914be7eea +Block 0000 [ 16]: 62c74952efa4962e +Block 0000 [ 17]: 7452bcfeae5ed127 +Block 0000 [ 18]: 9b244b507058a767 +Block 0000 [ 19]: ad381b104b333277 +Block 0000 [ 20]: d74814cfe245d0a8 +Block 0000 [ 21]: 1e502a5c5fae8de4 +Block 0000 [ 22]: facc3eb8b94d3934 +Block 0000 [ 23]: 309a560639f36145 +Block 0000 [ 24]: 97c9414271065971 +Block 0000 [ 25]: 9d2d8e80f0b210fd +Block 0000 [ 26]: 8ad91ada654260d9 +Block 0000 [ 27]: e8f0199dc84ec601 +Block 0000 [ 28]: 259b8023dfe9f620 +Block 0000 [ 29]: a89f710764c84faa +Block 0000 [ 30]: 00ef7d0ed19c9170 +Block 0000 [ 31]: c3365e9be7f8ad9a +Block 0000 [ 32]: 0713eccea1449c39 +Block 0000 [ 33]: 76dfdcbc5418ca19 +Block 0000 [ 34]: 6dae38246899edb4 +Block 0000 [ 35]: d119c2592c32d2fd +Block 0000 [ 36]: 12588a09c09fa985 +Block 0000 [ 37]: fd7de45ad68146e2 +Block 0000 [ 38]: b8b2a32696f86ff5 +Block 0000 [ 39]: 7a8597fe96c79b15 +Block 0000 [ 40]: 0b1c32b869e29e8e +Block 0000 [ 41]: d109376ce2cd296a +Block 0000 [ 42]: 5930033519fbc3ea +Block 0000 [ 43]: 26c0615c70db9a06 +Block 0000 [ 44]: c52e63756eb284d6 +Block 0000 [ 45]: f46353b6fa27de93 +Block 0000 [ 46]: c3f16cd0bf50beb1 +Block 0000 [ 47]: 7cbb5010db6ca163 +Block 0000 [ 48]: 6df6fb9d5477cb8d +Block 0000 [ 49]: f76c9bc2200b9271 +Block 0000 [ 50]: 4307dd8d26190968 +Block 0000 [ 51]: 559d187e7f15ce59 +Block 0000 [ 52]: 3fa3181855fc8fae +Block 0000 [ 53]: 8a5c7a26545c3289 +Block 0000 [ 54]: 6e0dab49fbd175c9 +Block 0000 [ 55]: 162d68393ba63961 +Block 0000 [ 56]: 7e8bf654d150b577 +Block 0000 [ 57]: 245981b04758d084 +Block 0000 [ 58]: b94c1f15f33a00c3 +Block 0000 [ 59]: 09b776c573975316 +Block 0000 [ 60]: e059c7959776505f +Block 0000 [ 61]: c8dec45d870e2428 +Block 0000 [ 62]: 9d05dd926cbe5e24 +Block 0000 [ 63]: 07eadbb03290625e +Block 0000 [ 64]: 1813e236d70246c4 +Block 0000 [ 65]: 6b9e88ab27f282a1 +Block 0000 [ 66]: 8cab57c214d0e51b +Block 0000 [ 67]: 819344c6d98d7949 +Block 0000 [ 68]: 642adef349e0b4c2 +Block 0000 [ 69]: 9147532626665562 +Block 0000 [ 70]: 4ce7940e9759fa18 +Block 0000 [ 71]: 86d723f5cb5bfa23 +Block 0000 [ 72]: 5956a509891d3a19 +Block 0000 [ 73]: fb65eb9452479fe5 +Block 0000 [ 74]: 15600005da769dbc +Block 0000 [ 75]: 0460dfcc45a3df4c +Block 0000 [ 76]: 9aeaf38a4e4a76a9 +Block 0000 [ 77]: a32de9ae286662a0 +Block 0000 [ 78]: 6c77f20cb87d260b +Block 0000 [ 79]: b4ee4f5014fe19b3 +Block 0000 [ 80]: 786e8758451fedc0 +Block 0000 [ 81]: 9f8a3f5a0bea80d5 +Block 0000 [ 82]: 1f5ed85ddaa1bb51 +Block 0000 [ 83]: 431138b634bdf789 +Block 0000 [ 84]: 8fee5e61ed0f3a28 +Block 0000 [ 85]: 3f166d47f662999d +Block 0000 [ 86]: 01825a35d081ba83 +Block 0000 [ 87]: 363beef46f72e254 +Block 0000 [ 88]: c0404cbcaeb8b1e5 +Block 0000 [ 89]: bf01bb3491b46fd2 +Block 0000 [ 90]: a96f73ec77d2ea1b +Block 0000 [ 91]: 7307883b0bb3368c +Block 0000 [ 92]: 180c75845418050e +Block 0000 [ 93]: 9fdd76f0e4c993c1 +Block 0000 [ 94]: d27430c09a31f795 +Block 0000 [ 95]: b16a193a47b44cd5 +Block 0000 [ 96]: 07213b9404ed4cf7 +Block 0000 [ 97]: 71794be1c4c5f86a +Block 0000 [ 98]: 46ac3a39882cffc5 +Block 0000 [ 99]: b607228f89c849b3 +Block 0000 [100]: a686fe80a061b73d +Block 0000 [101]: 5da420bbf2060e84 +Block 0000 [102]: 41d90855f9cfdd8a +Block 0000 [103]: 0bd841213cab1533 +Block 0000 [104]: f2c61ec90b666394 +Block 0000 [105]: 2ccdba05749dfd50 +Block 0000 [106]: 892110f27c3b5cec +Block 0000 [107]: 83a48c906e85ec88 +Block 0000 [108]: 9e47d91d9fd201f6 +Block 0000 [109]: b63a128d51ad43c8 +Block 0000 [110]: b704ba46fcf4e5ff +Block 0000 [111]: b12ae3f3cd72953c +Block 0000 [112]: 757f5ab719072f8f +Block 0000 [113]: 7aa97ff2970a4983 +Block 0000 [114]: 26d6bfd165886039 +Block 0000 [115]: e7adc882d7cb951b +Block 0000 [116]: ada2f6156a676320 +Block 0000 [117]: 171d0b6b8aa5a810 +Block 0000 [118]: 23bed4ea02a196ee +Block 0000 [119]: 02f0188d935ab1ca +Block 0000 [120]: 35587bbaae997e8f +Block 0000 [121]: e019dc02fbbd82c7 +Block 0000 [122]: f6075ab25dbcf553 +Block 0000 [123]: fb9083c228f4a752 +Block 0000 [124]: 9d15acfaa9b10ba4 +Block 0000 [125]: f0a6348c8d1d5414 +Block 0000 [126]: 3677542aa326e00f +Block 0000 [127]: 4243b9abcf3da44a +Block 0001 [ 0]: ef764133b4ca7099 +Block 0001 [ 1]: 620440b335cfe9e1 +Block 0001 [ 2]: 57168a36ebcb7715 +Block 0001 [ 3]: ff3b0b0f3930071d +Block 0001 [ 4]: 45172aba01f6fb3f +Block 0001 [ 5]: 0e1606b528bbcc18 +Block 0001 [ 6]: 45e18c0a19181cfc +Block 0001 [ 7]: 82bfbe0920b6587e +Block 0001 [ 8]: 3bab67fb1c68f77a +Block 0001 [ 9]: 56c49774a6130f3b +Block 0001 [ 10]: 3a6dfe75c9eb7f87 +Block 0001 [ 11]: 73c5e435e706cfe0 +Block 0001 [ 12]: 4c99046a73c091a9 +Block 0001 [ 13]: af7daf0a40e91b94 +Block 0001 [ 14]: 9da14c9e8cbb3ecb +Block 0001 [ 15]: 60440e10556a8e9e +Block 0001 [ 16]: 83353ede182e7349 +Block 0001 [ 17]: 2421e9e19a58a64d +Block 0001 [ 18]: f1eb1a9a17260a7a +Block 0001 [ 19]: a1898333c9e704ba +Block 0001 [ 20]: 159219bddbc57599 +Block 0001 [ 21]: dfbe30755288733b +Block 0001 [ 22]: fe9df8f860580019 +Block 0001 [ 23]: 16a1ca7d3854643e +Block 0001 [ 24]: 485e3ac74e7231ba +Block 0001 [ 25]: beebe23e664c4a95 +Block 0001 [ 26]: c9049347422d9e0d +Block 0001 [ 27]: 4d88f3373c446af7 +Block 0001 [ 28]: b83c654f54013a30 +Block 0001 [ 29]: 75b41709be2283c4 +Block 0001 [ 30]: 83f2efbed5b0d3f0 +Block 0001 [ 31]: 04629de997b1b2b0 +Block 0001 [ 32]: 583c5766265c50fe +Block 0001 [ 33]: e0306a89eb326efd +Block 0001 [ 34]: 5c1f148541f18e2c +Block 0001 [ 35]: 0462bd80b505f544 +Block 0001 [ 36]: afa70cd1847e14ba +Block 0001 [ 37]: 4a107dc0330d7392 +Block 0001 [ 38]: a41d234f92da5fef +Block 0001 [ 39]: 5c1f1ef242e817ac +Block 0001 [ 40]: 4c21ded5b41e4094 +Block 0001 [ 41]: 5382efd3508c2e0c +Block 0001 [ 42]: f99d3383b9f79cd4 +Block 0001 [ 43]: c59cf9cca42b6c3c +Block 0001 [ 44]: c1073a16b4609c9e +Block 0001 [ 45]: eeb0741015c0bec1 +Block 0001 [ 46]: 59fdebef1fa66310 +Block 0001 [ 47]: ac6041a2f43ddf7e +Block 0001 [ 48]: 1dfa0e2d9bf3acf9 +Block 0001 [ 49]: d424856738a27879 +Block 0001 [ 50]: a00c23feea1774f4 +Block 0001 [ 51]: 89aa283bcb83e2ea +Block 0001 [ 52]: d5c467511139648b +Block 0001 [ 53]: 736a35cbe2be51a7 +Block 0001 [ 54]: 2a9a116684b668a6 +Block 0001 [ 55]: 6c97a9ae3f327f6e +Block 0001 [ 56]: 7a37d7d11fa226a1 +Block 0001 [ 57]: e933955bb195f86f +Block 0001 [ 58]: 33e0ba8e788c608b +Block 0001 [ 59]: b191c25233ce5744 +Block 0001 [ 60]: a47cbd502d3d657d +Block 0001 [ 61]: 9373f7d43329517c +Block 0001 [ 62]: 69c08268cd250f03 +Block 0001 [ 63]: 64806d4cebc49823 +Block 0001 [ 64]: 51b7c4d051e70e05 +Block 0001 [ 65]: 91598eb48764ed2c +Block 0001 [ 66]: b9be7ab1d422d2c3 +Block 0001 [ 67]: eb4243989b24e6da +Block 0001 [ 68]: 0df9fb33ec5a2734 +Block 0001 [ 69]: db21c080fd6a4f45 +Block 0001 [ 70]: b33850abcfdd0713 +Block 0001 [ 71]: 7dad7d9d0be16da2 +Block 0001 [ 72]: ae3ccab55493d758 +Block 0001 [ 73]: d0d752f17120f636 +Block 0001 [ 74]: bc9d875ca9a5617b +Block 0001 [ 75]: f71b4218c11d1de7 +Block 0001 [ 76]: b71c8b9ad12f8574 +Block 0001 [ 77]: 1f47cd7880ee5f60 +Block 0001 [ 78]: 7e94dcef68d5437b +Block 0001 [ 79]: 5212acee74773cd5 +Block 0001 [ 80]: 447fe1f91d18984b +Block 0001 [ 81]: 42b651bbf71123bf +Block 0001 [ 82]: a36cbec05af8a16e +Block 0001 [ 83]: f0062604e61b9562 +Block 0001 [ 84]: 8de69b3901f9beed +Block 0001 [ 85]: 0ef87138213d49bb +Block 0001 [ 86]: ac23b588ee62df85 +Block 0001 [ 87]: 214784f404183fc6 +Block 0001 [ 88]: 80bd01721550b847 +Block 0001 [ 89]: 477d6c0b7cde2cbe +Block 0001 [ 90]: 52854d28f1c327ef +Block 0001 [ 91]: 6d023ae28c3aa0b8 +Block 0001 [ 92]: ad28349b9fb94455 +Block 0001 [ 93]: 9f03641c1e41fd77 +Block 0001 [ 94]: b7f2c676f362a9eb +Block 0001 [ 95]: 66974a6cf91ef0f3 +Block 0001 [ 96]: 767da5d9fc567f54 +Block 0001 [ 97]: 43b4c5bd3a112b5f +Block 0001 [ 98]: d14f0ebe0a796ebe +Block 0001 [ 99]: e4a7ade650871550 +Block 0001 [100]: 8841858fab3bbc24 +Block 0001 [101]: 9bf02ae3876cee46 +Block 0001 [102]: fb3d03e3030580de +Block 0001 [103]: 3cd714a5f553c6ae +Block 0001 [104]: 7301e5f821f928da +Block 0001 [105]: c2fc74e88d5b7cff +Block 0001 [106]: 6161d5101e4fd223 +Block 0001 [107]: 45cf0588a9a55a41 +Block 0001 [108]: 77902bd3439bf89d +Block 0001 [109]: 6fa5269812f867d1 +Block 0001 [110]: 2caa21dbd02ea223 +Block 0001 [111]: b776e0d326f8bf2b +Block 0001 [112]: 3f3959f6cf241888 +Block 0001 [113]: e2ad2d05b2095775 +Block 0001 [114]: 08403c042f8bfe87 +Block 0001 [115]: 2ee327dcc9e04a69 +Block 0001 [116]: 6031d492c05b0970 +Block 0001 [117]: 9b6f35141994e4a4 +Block 0001 [118]: 24427c298a09f2a6 +Block 0001 [119]: 3325ce5ef7c363fe +Block 0001 [120]: 5821f16b64830335 +Block 0001 [121]: 18d3c2a72d220c00 +Block 0001 [122]: 60c684f8541cdb39 +Block 0001 [123]: 53e20b76bdc07a15 +Block 0001 [124]: 396fd953e51a57f7 +Block 0001 [125]: 6c45c1dd68804fbb +Block 0001 [126]: 386e57e7fe152c87 +Block 0001 [127]: 2b8ab7d454b17187 +Block 0002 [ 0]: f800892a7954baa5 +Block 0002 [ 1]: bb211f064d193505 +Block 0002 [ 2]: 2c406a2eb271e25e +Block 0002 [ 3]: fa438cb81ec6e36f +Block 0002 [ 4]: 9735e9adcf04badc +Block 0002 [ 5]: 197193e9f53e6c35 +Block 0002 [ 6]: 260ee704b27a33d5 +Block 0002 [ 7]: fc9e533fe0595718 +Block 0002 [ 8]: 0a5b5d636945ddc1 +Block 0002 [ 9]: 2b8c865b8c7cbbc9 +Block 0002 [ 10]: 407b524588d22887 +Block 0002 [ 11]: 5bf322dd7ed3f320 +Block 0002 [ 12]: 68b0ac8fcd51f09e +Block 0002 [ 13]: e573f760dbeab339 +Block 0002 [ 14]: 8f9bbb1aa92d30df +Block 0002 [ 15]: de70db7a94f48763 +Block 0002 [ 16]: c7343a9920a08774 +Block 0002 [ 17]: 04a16cc553ccfd91 +Block 0002 [ 18]: ba758a5bcf1ceee1 +Block 0002 [ 19]: 302d7a2500b04827 +Block 0002 [ 20]: fab42113e7a58400 +Block 0002 [ 21]: 774d2f3fb3ebac54 +Block 0002 [ 22]: 039fb1f8b4bd0ae6 +Block 0002 [ 23]: a0062ed5dc741bfb +Block 0002 [ 24]: c1f8b84daf845788 +Block 0002 [ 25]: 676d9d836a19800a +Block 0002 [ 26]: a38f6fd865ac4848 +Block 0002 [ 27]: caeb787c80d60dd8 +Block 0002 [ 28]: c0ef86db1ef7dc8c +Block 0002 [ 29]: 2ab8f9a9e8e5c11d +Block 0002 [ 30]: a4541aee68c4eb23 +Block 0002 [ 31]: e95fe5830c6b8ba0 +Block 0002 [ 32]: 15b15aae605b133c +Block 0002 [ 33]: 96b0a14a369ec241 +Block 0002 [ 34]: ef41fbe7867703a6 +Block 0002 [ 35]: efd04ef060083c4e +Block 0002 [ 36]: 6989e447eb83bdc2 +Block 0002 [ 37]: 9a36016905584a79 +Block 0002 [ 38]: 0d13b26ce0ff9d05 +Block 0002 [ 39]: b4d7e57e14069ece +Block 0002 [ 40]: 1f0e4c518f1c8c1e +Block 0002 [ 41]: 8b78a9808d9690d2 +Block 0002 [ 42]: 90c2d89b2aed8a6b +Block 0002 [ 43]: ff2e5c3beb3a1815 +Block 0002 [ 44]: d496191f32068f3a +Block 0002 [ 45]: b8dfe21cb707da28 +Block 0002 [ 46]: d79319d5f2e41fab +Block 0002 [ 47]: 9a46839bc093121e +Block 0002 [ 48]: 5bac63652a33f3ec +Block 0002 [ 49]: 02c37aa9ae4990e8 +Block 0002 [ 50]: 1398f6f1dbb7af0f +Block 0002 [ 51]: 7eb5484d7affbb12 +Block 0002 [ 52]: 78660ba371fea159 +Block 0002 [ 53]: 98e4d1399d2362c8 +Block 0002 [ 54]: 8568b763f41a812d +Block 0002 [ 55]: b9bbbefe59138b97 +Block 0002 [ 56]: 86039e4a97b3f9c1 +Block 0002 [ 57]: 23f89f528c03a7d7 +Block 0002 [ 58]: 34602582e567cc92 +Block 0002 [ 59]: a85188de86a572bd +Block 0002 [ 60]: 8a73a6b3119b4089 +Block 0002 [ 61]: 7bc9311caf998892 +Block 0002 [ 62]: 938f52a89c882cc7 +Block 0002 [ 63]: 3caa06a9012cb757 +Block 0002 [ 64]: 54b797ab02e20770 +Block 0002 [ 65]: f96f77af4acc75c9 +Block 0002 [ 66]: fbfea542d5e8050e +Block 0002 [ 67]: d34858f9f7c0509e +Block 0002 [ 68]: 770353666b8d6d6d +Block 0002 [ 69]: 876cfcb815cb1825 +Block 0002 [ 70]: d5794151cc1d4b6b +Block 0002 [ 71]: c94613ec9e726d59 +Block 0002 [ 72]: b386eddf504649b4 +Block 0002 [ 73]: 048945fcd8814cd2 +Block 0002 [ 74]: 1ca2c95c74bda800 +Block 0002 [ 75]: c881bb4a4c047e6f +Block 0002 [ 76]: 7d0311c7ffc91e51 +Block 0002 [ 77]: fde167d6295385f8 +Block 0002 [ 78]: 25decd8821d31214 +Block 0002 [ 79]: 67dbf17c5a3615be +Block 0002 [ 80]: 235fce4fbbaf1b91 +Block 0002 [ 81]: f8cf3fe7dc09dd19 +Block 0002 [ 82]: 1047453126c4e863 +Block 0002 [ 83]: 8845e5b3deb21c6c +Block 0002 [ 84]: 4cbcfb62e7732ecb +Block 0002 [ 85]: f673aca506549a4a +Block 0002 [ 86]: 9273d099a3df174f +Block 0002 [ 87]: 08ffdc9464e5292b +Block 0002 [ 88]: c8ca072e21db9bba +Block 0002 [ 89]: 3c2610eb1e17098f +Block 0002 [ 90]: fe447430a6ac29a2 +Block 0002 [ 91]: 021f607556d333bf +Block 0002 [ 92]: 42f7f71e90b08b96 +Block 0002 [ 93]: c2e25d7dfaefc9bc +Block 0002 [ 94]: cc372cea39d95dea +Block 0002 [ 95]: c7bb1a34bce7deb7 +Block 0002 [ 96]: 3699605b8efc1d72 +Block 0002 [ 97]: b9d1203e5e5a9f93 +Block 0002 [ 98]: e0ac8c626778c5b9 +Block 0002 [ 99]: e8f0abe5bfffc759 +Block 0002 [100]: a0ddef1454f012c4 +Block 0002 [101]: c35b7e6bb3c129ef +Block 0002 [102]: c495ece8dffaa61f +Block 0002 [103]: 9f303d56213c5213 +Block 0002 [104]: c15b627a5137b819 +Block 0002 [105]: c767b5cdb34e6640 +Block 0002 [106]: 63970c306c5456b3 +Block 0002 [107]: 3c5d22fed3a34b4b +Block 0002 [108]: 77fcecc4982e6e5d +Block 0002 [109]: ad1612003aca1745 +Block 0002 [110]: e1952b3ba36fb7ad +Block 0002 [111]: bc654d244a26361a +Block 0002 [112]: 996cba723c6dee9f +Block 0002 [113]: abfd371026ffc462 +Block 0002 [114]: 2aca5170a54baf57 +Block 0002 [115]: fe5af00451aa2448 +Block 0002 [116]: adcc756aad83c72c +Block 0002 [117]: ea0b0fd40b596cb2 +Block 0002 [118]: e553a4d72df13b74 +Block 0002 [119]: 43d6b8d77a537397 +Block 0002 [120]: cdfd86bdf959205a +Block 0002 [121]: cb0e847adf1b1a21 +Block 0002 [122]: 7daf47cb8acefa5d +Block 0002 [123]: f473a1dc75308090 +Block 0002 [124]: b5c963edba8f5b31 +Block 0002 [125]: 977fe5978311b717 +Block 0002 [126]: 508d8a5d678bdce3 +Block 0002 [127]: a9fc0d3300c8acc0 +Block 0003 [ 0]: f29f5ee7dde3e2fa +Block 0003 [ 1]: a69ac3ce1bfbe156 +Block 0003 [ 2]: f20cd315e3237ea6 +Block 0003 [ 3]: f65add2c10041390 +Block 0003 [ 4]: 224a2f1d2d0cb714 +Block 0003 [ 5]: 852d30cc9e7667b2 +Block 0003 [ 6]: 5bae034c9ae55292 +Block 0003 [ 7]: 3693e7e73fcb7211 +Block 0003 [ 8]: 1bc540987729dad0 +Block 0003 [ 9]: 61bc9fef7ee05b1e +Block 0003 [ 10]: c349dbc3fbdd2373 +Block 0003 [ 11]: b9943f5eedfec4e6 +Block 0003 [ 12]: 78070afd731fad12 +Block 0003 [ 13]: 5bd3aab17f6b9d8c +Block 0003 [ 14]: a6b24b01005d202c +Block 0003 [ 15]: 333fe2532820ff48 +Block 0003 [ 16]: 1f4f7e472e2b8fb3 +Block 0003 [ 17]: f176be488974611a +Block 0003 [ 18]: 1e9f6f9231c09908 +Block 0003 [ 19]: 5d54c79477328673 +Block 0003 [ 20]: 3e7969bf3766cf2d +Block 0003 [ 21]: b4dcc50e5b21245b +Block 0003 [ 22]: 7a53bfcd6e7fc1b8 +Block 0003 [ 23]: 7212aeab8eccdb9b +Block 0003 [ 24]: 909aa8c6929eca7c +Block 0003 [ 25]: ff8a4ee4e6e07f69 +Block 0003 [ 26]: 5d189711c4cbf159 +Block 0003 [ 27]: 6e16fb8216c3341d +Block 0003 [ 28]: 74b7cf5d99f50dd9 +Block 0003 [ 29]: a3e420ff6430892f +Block 0003 [ 30]: 32bcd10ef54c9025 +Block 0003 [ 31]: 4040565062b0c14a +Block 0003 [ 32]: 48e8d06ee166f230 +Block 0003 [ 33]: a7941b7ef30da38b +Block 0003 [ 34]: dc303d0535fb39c0 +Block 0003 [ 35]: 704564c8a42f5387 +Block 0003 [ 36]: 995ae4804047a33c +Block 0003 [ 37]: c9aaed214935c044 +Block 0003 [ 38]: a1ddf242e51be1e1 +Block 0003 [ 39]: 509629b7401dae92 +Block 0003 [ 40]: aa08ce0caa96268c +Block 0003 [ 41]: 916ade45d30f4159 +Block 0003 [ 42]: 689738eedf7ebff5 +Block 0003 [ 43]: 1a7addd2b677db5f +Block 0003 [ 44]: fb5bb4c97d66b670 +Block 0003 [ 45]: 41a52657afbe3147 +Block 0003 [ 46]: 3883bc90bc1169d8 +Block 0003 [ 47]: ec52333d647d5b85 +Block 0003 [ 48]: 5a444fd37a3c4f27 +Block 0003 [ 49]: 8c32816c9d713368 +Block 0003 [ 50]: 5d5224766dd5d5db +Block 0003 [ 51]: 4904f3da1d5dcae4 +Block 0003 [ 52]: ce1a724bd5858367 +Block 0003 [ 53]: 8eccc94bf8659467 +Block 0003 [ 54]: f452f0b9278f115d +Block 0003 [ 55]: f0cbb770de867a30 +Block 0003 [ 56]: 7e52ecf3a381577c +Block 0003 [ 57]: 2b1228c2a7ba6127 +Block 0003 [ 58]: 5e826b4c3d378b86 +Block 0003 [ 59]: 2479e83e33f483eb +Block 0003 [ 60]: b98b54b722038d21 +Block 0003 [ 61]: f9e4729b6e07e4af +Block 0003 [ 62]: ac3e565b4b0d5c61 +Block 0003 [ 63]: 20f2acbd2702c2b0 +Block 0003 [ 64]: 2806b9b55ae9f42a +Block 0003 [ 65]: 3b0ff28da85596ff +Block 0003 [ 66]: 67de27987796c904 +Block 0003 [ 67]: 7cad0f6f1c0baf7d +Block 0003 [ 68]: 87394f6d9e6387a2 +Block 0003 [ 69]: e684ab37a27ffa95 +Block 0003 [ 70]: 40044ced68c8fcf8 +Block 0003 [ 71]: c3cd8c8d3a92a151 +Block 0003 [ 72]: 586fc6e2612b29d9 +Block 0003 [ 73]: 0a05e7e439049499 +Block 0003 [ 74]: a2e36bc85145c34c +Block 0003 [ 75]: ebdffd4eee30c7d0 +Block 0003 [ 76]: eb4bf0c46b2fd17d +Block 0003 [ 77]: a6247f3ec7467b0d +Block 0003 [ 78]: d35d387770f7b130 +Block 0003 [ 79]: 6587143e81164304 +Block 0003 [ 80]: 87a0d7265bb58016 +Block 0003 [ 81]: a0e8b7ed5337329a +Block 0003 [ 82]: 20bffc3919b2f8ee +Block 0003 [ 83]: 5bae72ac7bc9e98e +Block 0003 [ 84]: f0720b89617c114c +Block 0003 [ 85]: d458007dd3ad396d +Block 0003 [ 86]: f6a77609442e6dbc +Block 0003 [ 87]: 6927f28f9f2b3931 +Block 0003 [ 88]: 9dd53d1ba8546814 +Block 0003 [ 89]: 375b50984dd3215f +Block 0003 [ 90]: d916bca2077a3dfc +Block 0003 [ 91]: fddd15ac8ec81f25 +Block 0003 [ 92]: 5f7fc3b451ef209a +Block 0003 [ 93]: 04500f0944cfb165 +Block 0003 [ 94]: 55e97e7a0286d396 +Block 0003 [ 95]: 21a9d670b0d460d6 +Block 0003 [ 96]: 4b5ef30861dd497d +Block 0003 [ 97]: 05868fe9bee1b79a +Block 0003 [ 98]: 4090c8b98223f86a +Block 0003 [ 99]: 952446e47335d4cf +Block 0003 [100]: 8ce87f53a456595d +Block 0003 [101]: 2e337ac5f6c713ff +Block 0003 [102]: 14c0320208b056f7 +Block 0003 [103]: 4b62cfe312451641 +Block 0003 [104]: b84242c858a3c472 +Block 0003 [105]: 224c1df89e776cc7 +Block 0003 [106]: 4b87c369fba56549 +Block 0003 [107]: 7fc4979047128a2d +Block 0003 [108]: 1656d958d82950e4 +Block 0003 [109]: dfedfbee1e7e1006 +Block 0003 [110]: d682028ee41f8844 +Block 0003 [111]: 53f64e8bb452c43c +Block 0003 [112]: 3a0f16fa65ccd87f +Block 0003 [113]: b1563cdcd9ffa4a1 +Block 0003 [114]: 67fa21f7b286a798 +Block 0003 [115]: 0baa99c3ad450dc5 +Block 0003 [116]: e9bd5f54023ce367 +Block 0003 [117]: d08137ab3255eee1 +Block 0003 [118]: eb904d633401c297 +Block 0003 [119]: 3332a4249f22ad11 +Block 0003 [120]: a8f06f44894e1b5e +Block 0003 [121]: c8255151ffc2df5b +Block 0003 [122]: 8e4a109353c6adaf +Block 0003 [123]: 9b28b15b5d3174f4 +Block 0003 [124]: c6d904a8edee34c6 +Block 0003 [125]: 87375410235cbcd9 +Block 0003 [126]: 55bf929868fc10c3 +Block 0003 [127]: 127c01e4eb0a2de7 +Block 0004 [ 0]: c5669884e05e1054 +Block 0004 [ 1]: 3f94ff6ebc2b2554 +Block 0004 [ 2]: 8fbc379431b56422 +Block 0004 [ 3]: f88c86f1f1270af0 +Block 0004 [ 4]: 26b6ae60cef93b49 +Block 0004 [ 5]: 72b0b121127be7b5 +Block 0004 [ 6]: dab1be76dc74af93 +Block 0004 [ 7]: a03e9cfcc4ac8a05 +Block 0004 [ 8]: d8c9e3b84f55f063 +Block 0004 [ 9]: ffa26c3a57c34ad2 +Block 0004 [ 10]: bd74c5a8a2127eb8 +Block 0004 [ 11]: cea1dc181f6f2a21 +Block 0004 [ 12]: 4843f0f8551328b3 +Block 0004 [ 13]: 47b8b38b1acdb67a +Block 0004 [ 14]: 781232b450232fdd +Block 0004 [ 15]: 9e2377879037b3e2 +Block 0004 [ 16]: 85a04f0ffa72a07c +Block 0004 [ 17]: 39451ddefe9fc9d8 +Block 0004 [ 18]: 173704443ef64f6b +Block 0004 [ 19]: 84f4b473532ad2a1 +Block 0004 [ 20]: 3089cff815b0f3b8 +Block 0004 [ 21]: 233f0730c04ea4da +Block 0004 [ 22]: 6fec989fd9ca3751 +Block 0004 [ 23]: 950ca59da61af60d +Block 0004 [ 24]: 64ed9179567b182c +Block 0004 [ 25]: 5dc48b9fe1d0a171 +Block 0004 [ 26]: 2f66b2eb0ee38875 +Block 0004 [ 27]: d175513a90dd451a +Block 0004 [ 28]: 4206e0c724377abd +Block 0004 [ 29]: cc13835a191fa67b +Block 0004 [ 30]: 3053614f4145274f +Block 0004 [ 31]: 1ca6125149cac629 +Block 0004 [ 32]: 1ec4eb1d931fcec5 +Block 0004 [ 33]: b48d876f2c3b85d9 +Block 0004 [ 34]: e94ce07477ca43e9 +Block 0004 [ 35]: 700c79cbe93b4394 +Block 0004 [ 36]: e89e17b0489867ff +Block 0004 [ 37]: 3cd01ed6b3858f52 +Block 0004 [ 38]: 474dad41679d199b +Block 0004 [ 39]: 5b255cc1d055e5df +Block 0004 [ 40]: 4ccade7e3293957a +Block 0004 [ 41]: 4d73c3ed8f0f9dce +Block 0004 [ 42]: 682e559fef82408c +Block 0004 [ 43]: 55a3398f6c8ad9f0 +Block 0004 [ 44]: a38c1d494d186dc9 +Block 0004 [ 45]: d4d9cb29dda4e9a9 +Block 0004 [ 46]: 5a881e243e65800f +Block 0004 [ 47]: 3245ba87e34e6a01 +Block 0004 [ 48]: f8301e184fc6cda0 +Block 0004 [ 49]: 4c349af6614bdf35 +Block 0004 [ 50]: 38983beb42cabfa6 +Block 0004 [ 51]: 471b2b7d59aaf4c0 +Block 0004 [ 52]: 200340ed6848065c +Block 0004 [ 53]: fe5fa422a8539342 +Block 0004 [ 54]: 19db85340e85a4c7 +Block 0004 [ 55]: 764b873844fe5dc8 +Block 0004 [ 56]: f95b70aba7297760 +Block 0004 [ 57]: 28b74a30e88c25a4 +Block 0004 [ 58]: ff6052d1b7dc11b8 +Block 0004 [ 59]: 359fc7217f7b5ea3 +Block 0004 [ 60]: 7343b307e5077ab9 +Block 0004 [ 61]: 8150cdffb05bd766 +Block 0004 [ 62]: cc7c8dc0e4ab8231 +Block 0004 [ 63]: 16934251c5404298 +Block 0004 [ 64]: 5b8b9b3abdf59f9e +Block 0004 [ 65]: e9111f573f4630ab +Block 0004 [ 66]: 382795e34b2ec716 +Block 0004 [ 67]: fcc921aa39a2cff8 +Block 0004 [ 68]: 6705644ecca72318 +Block 0004 [ 69]: 43f91b74943af5ed +Block 0004 [ 70]: 4d7d1da11f036218 +Block 0004 [ 71]: e1c228cdfcd89e96 +Block 0004 [ 72]: 090f00dea2cc93be +Block 0004 [ 73]: b387db043b11e668 +Block 0004 [ 74]: 0da3856a53e7ca99 +Block 0004 [ 75]: af74d7028d88f1f6 +Block 0004 [ 76]: 0e0abae1e9a6f9f9 +Block 0004 [ 77]: 693fa44317e4a292 +Block 0004 [ 78]: 5db30f5a60e69d24 +Block 0004 [ 79]: 11c85a24b61982a9 +Block 0004 [ 80]: 799ce38a9797a637 +Block 0004 [ 81]: 22be541165077550 +Block 0004 [ 82]: 3e9d7987ed7393f2 +Block 0004 [ 83]: 346fc635e2423532 +Block 0004 [ 84]: c329869d6c743739 +Block 0004 [ 85]: 7e1776ce3430a617 +Block 0004 [ 86]: 4879c918b591a3d5 +Block 0004 [ 87]: df686348aa1bcc9d +Block 0004 [ 88]: 4c292b6cb6451b23 +Block 0004 [ 89]: 64a0a9e46c7f4944 +Block 0004 [ 90]: 0e66aa435ab0d3c2 +Block 0004 [ 91]: da8620defbe33208 +Block 0004 [ 92]: 65a8aebdc3b995f7 +Block 0004 [ 93]: f446a1293537c2a3 +Block 0004 [ 94]: a5c2b153c90dafbd +Block 0004 [ 95]: aee2502b1b7b6454 +Block 0004 [ 96]: f77055f60f6ded0f +Block 0004 [ 97]: 4c99ab5ec6d6cc51 +Block 0004 [ 98]: 8b0570e7d0993e6e +Block 0004 [ 99]: a57d13448847ab2e +Block 0004 [100]: 2e25763d3f1f8860 +Block 0004 [101]: 9438798b77b4c74c +Block 0004 [102]: 88e65057c688ebe4 +Block 0004 [103]: 23d18ba2061e692b +Block 0004 [104]: fa2590a606cb24bf +Block 0004 [105]: 959e41d5895359f9 +Block 0004 [106]: b2d9c8c2ea35b321 +Block 0004 [107]: 4ae5dd4861388fc1 +Block 0004 [108]: 7047bf4db43193ea +Block 0004 [109]: dc6a89e8e3031a84 +Block 0004 [110]: 49df122c84348347 +Block 0004 [111]: b9eaaf9df38dfa72 +Block 0004 [112]: a5eadb80efc9f742 +Block 0004 [113]: 6e289d7490d5e8df +Block 0004 [114]: 1d8dfa94f6a71ddd +Block 0004 [115]: 05d642c2d9accca5 +Block 0004 [116]: e2fa51b62d827843 +Block 0004 [117]: cc351a7fbc1d6c57 +Block 0004 [118]: 08483dae0fb2a6e7 +Block 0004 [119]: 1377a9b14e8a170a +Block 0004 [120]: 18dd33ecc8497fc6 +Block 0004 [121]: cc1bf6adee26abb2 +Block 0004 [122]: 1b0f9fa6148fdcb8 +Block 0004 [123]: d85c6b6f66af28d2 +Block 0004 [124]: edb28ef7c9fd8989 +Block 0004 [125]: 3482825859e2fc7f +Block 0004 [126]: 7aafe644d7847c19 +Block 0004 [127]: 2066cdb758166cd6 +Block 0005 [ 0]: c69d96a7bb15ad7c +Block 0005 [ 1]: cd7d7ed48d3cd0c5 +Block 0005 [ 2]: b9b77be8c3a6d644 +Block 0005 [ 3]: 5c090535da2bdf7e +Block 0005 [ 4]: 468ba6b3adecc383 +Block 0005 [ 5]: 9bdc6c810fb047b6 +Block 0005 [ 6]: 59fa24c0e4629f41 +Block 0005 [ 7]: 2671328033fbac24 +Block 0005 [ 8]: c52bf1f5c071984d +Block 0005 [ 9]: 941e98216ad7ba45 +Block 0005 [ 10]: 4512e358a8f202e9 +Block 0005 [ 11]: e04b6e394dc8fcbf +Block 0005 [ 12]: edeee98a26d2ed10 +Block 0005 [ 13]: acfa10bcafede436 +Block 0005 [ 14]: 0327e4dccfda0df3 +Block 0005 [ 15]: 1517590ce6508a53 +Block 0005 [ 16]: 93be06e857f828b0 +Block 0005 [ 17]: 9e334a17efeacf2d +Block 0005 [ 18]: 0abb1c185c360c66 +Block 0005 [ 19]: 6e8ba87a521c988f +Block 0005 [ 20]: e1ce03229d851942 +Block 0005 [ 21]: b3a2f4339372bea0 +Block 0005 [ 22]: aee33f6f38262588 +Block 0005 [ 23]: 18538d1dbff00c4b +Block 0005 [ 24]: 560b17ae3900a4ca +Block 0005 [ 25]: 4f59a85a546527ba +Block 0005 [ 26]: f04efb8b9aa3ed24 +Block 0005 [ 27]: 7bb31fa85be906fd +Block 0005 [ 28]: 02b6a569c025f548 +Block 0005 [ 29]: 02f5100db86384ca +Block 0005 [ 30]: 218bf5af0629d6ac +Block 0005 [ 31]: cfe334b46e5562e6 +Block 0005 [ 32]: dcc54852060e5f15 +Block 0005 [ 33]: 3225b16290cc6003 +Block 0005 [ 34]: e2424de76ed2e45b +Block 0005 [ 35]: ad15394489787731 +Block 0005 [ 36]: 7d05d61506fad68e +Block 0005 [ 37]: 2c0c1d672f2f9b1f +Block 0005 [ 38]: 3ea3a2c1e10a1dfa +Block 0005 [ 39]: 4b2d09219829c0b4 +Block 0005 [ 40]: 240d9cc9af661f07 +Block 0005 [ 41]: bc8d390ba8011edb +Block 0005 [ 42]: 9bb0be348cde4a4a +Block 0005 [ 43]: 647c882ae02f2a4f +Block 0005 [ 44]: 5dbd001ec7676d38 +Block 0005 [ 45]: 73ab60a147b1c181 +Block 0005 [ 46]: 84fea05444fa2a85 +Block 0005 [ 47]: aef881d5d95c0df1 +Block 0005 [ 48]: 5a692fe61bda2856 +Block 0005 [ 49]: fe3ecd15fcb2c13a +Block 0005 [ 50]: fa10984aec1d1382 +Block 0005 [ 51]: e9aee1ccb6b4965c +Block 0005 [ 52]: 4d2e18d82faf8c3e +Block 0005 [ 53]: 1c4ece926941a8e9 +Block 0005 [ 54]: 386b5528970270e1 +Block 0005 [ 55]: 823551ce67827ec7 +Block 0005 [ 56]: 87d81a2f1a8047fb +Block 0005 [ 57]: ba373060adbed505 +Block 0005 [ 58]: 8578052221d6ae46 +Block 0005 [ 59]: 1f168936c739c3a4 +Block 0005 [ 60]: 0bcca09786e83d87 +Block 0005 [ 61]: 5753de51288adfc2 +Block 0005 [ 62]: 8ad3bcca43f40be1 +Block 0005 [ 63]: 4f1b9617f9c86c30 +Block 0005 [ 64]: e4d837570a26318b +Block 0005 [ 65]: 067d4cb0d49a3121 +Block 0005 [ 66]: 91b77927a207b848 +Block 0005 [ 67]: 5dbc721e332e2bc4 +Block 0005 [ 68]: 2316410cbb3610b1 +Block 0005 [ 69]: 673181681ae22a67 +Block 0005 [ 70]: 8067fe815c96c23f +Block 0005 [ 71]: 80cc56dfebe3ddda +Block 0005 [ 72]: 14609d5fa6ce23c1 +Block 0005 [ 73]: 73cbea41966a7142 +Block 0005 [ 74]: 119ab1b5f53ba3ca +Block 0005 [ 75]: 9a6852050ece2e4a +Block 0005 [ 76]: bc3654b7fa5b0c6b +Block 0005 [ 77]: 4c69d15d64efcb85 +Block 0005 [ 78]: 5b09d250e32e8259 +Block 0005 [ 79]: c3e9baf9b11b3152 +Block 0005 [ 80]: 53e0b2ec68d041b4 +Block 0005 [ 81]: 0b98b646fc0fce16 +Block 0005 [ 82]: d25838c84d8cce12 +Block 0005 [ 83]: 1f7939000f470cb9 +Block 0005 [ 84]: ac4aacacba06092f +Block 0005 [ 85]: acfadfca8de0ff05 +Block 0005 [ 86]: bf09f53231d87750 +Block 0005 [ 87]: 79d905956e0f3889 +Block 0005 [ 88]: e14f247f4d5e216a +Block 0005 [ 89]: 212d91fda8e22bbb +Block 0005 [ 90]: 0e4c4aa22d20b934 +Block 0005 [ 91]: d0e46af19abc1ad2 +Block 0005 [ 92]: 2c7ea87d03e3d09b +Block 0005 [ 93]: 7164b75cc1953042 +Block 0005 [ 94]: 7b659a27384d82fb +Block 0005 [ 95]: 8bc42d8b31cebe7f +Block 0005 [ 96]: 7b06a683d868bc51 +Block 0005 [ 97]: 319e2ea63d699167 +Block 0005 [ 98]: 1ab697198262eb44 +Block 0005 [ 99]: 5b49959d8f4ca9c8 +Block 0005 [100]: 4f35c23e17f05819 +Block 0005 [101]: 26d5aaa4f087ae8f +Block 0005 [102]: b78fea4d6f1d7732 +Block 0005 [103]: 3f3e6f841d48add2 +Block 0005 [104]: ef24bee225179b89 +Block 0005 [105]: bed586e853daf5c7 +Block 0005 [106]: bc26d99c49cf9a6c +Block 0005 [107]: d909da65d4c11556 +Block 0005 [108]: ed12711f224cef83 +Block 0005 [109]: 2b9607d0e5e900a7 +Block 0005 [110]: fc43b421ce701587 +Block 0005 [111]: af7ac9f1a69d5e02 +Block 0005 [112]: d0fdb554f3165990 +Block 0005 [113]: 91aaac41e7f9ea3a +Block 0005 [114]: d217a6555996c34c +Block 0005 [115]: 54b2726ee172aaf7 +Block 0005 [116]: bc60721ff605e001 +Block 0005 [117]: 2a5c053049c31e68 +Block 0005 [118]: eb66aa545b46853b +Block 0005 [119]: da32c94d6ac845df +Block 0005 [120]: d3c36a7387623c03 +Block 0005 [121]: a5e37961367e911a +Block 0005 [122]: ed0223c8f80f0f62 +Block 0005 [123]: c9577e0c09c50399 +Block 0005 [124]: 0042484883108146 +Block 0005 [125]: 490c07c2c85c00d8 +Block 0005 [126]: cff6918e0df215d4 +Block 0005 [127]: 5e5dca04d2dd1563 +Block 0006 [ 0]: 06e575606df88e3b +Block 0006 [ 1]: 71a7464b72fd64a7 +Block 0006 [ 2]: 468923168d541632 +Block 0006 [ 3]: f3583b7ff4adbe56 +Block 0006 [ 4]: e87b42b4b254cde7 +Block 0006 [ 5]: 3548c94a108f6c4c +Block 0006 [ 6]: a56ac305d8f4bc99 +Block 0006 [ 7]: 8378293152189352 +Block 0006 [ 8]: c1dbba854c7c7f6e +Block 0006 [ 9]: 5d9fb7867d240ed6 +Block 0006 [ 10]: fdbd8b16b16c7494 +Block 0006 [ 11]: 7ad763ffba6200e8 +Block 0006 [ 12]: 77c8ebde2abb1d53 +Block 0006 [ 13]: ceabcc21195a1c4b +Block 0006 [ 14]: 20736ee04af8ae96 +Block 0006 [ 15]: 6161d5f1a7b82e44 +Block 0006 [ 16]: 7e35690bb164e16e +Block 0006 [ 17]: d0de4831d5825765 +Block 0006 [ 18]: f4b613fe1dad1e3c +Block 0006 [ 19]: e26741b0625f688b +Block 0006 [ 20]: b0d4b503e2229c7c +Block 0006 [ 21]: 819ff61fd8c3546a +Block 0006 [ 22]: e2252c69b5c0e012 +Block 0006 [ 23]: e6ac62b49e6aba20 +Block 0006 [ 24]: 5793fcaf58202c2a +Block 0006 [ 25]: b06a3c14e96ed572 +Block 0006 [ 26]: 036e41058b08b42c +Block 0006 [ 27]: 14989720933e50ad +Block 0006 [ 28]: 44ad4d4c252d6d1f +Block 0006 [ 29]: d3e00c49991c01b0 +Block 0006 [ 30]: 2615381daaed34ff +Block 0006 [ 31]: 0d645551e1597e3c +Block 0006 [ 32]: 2b11ec26203fd73b +Block 0006 [ 33]: 0e766f7080fe92d6 +Block 0006 [ 34]: 47b2ba5db10cfc3a +Block 0006 [ 35]: 6ad29e44a0f3be62 +Block 0006 [ 36]: da842a34d581ad7f +Block 0006 [ 37]: fb3c375543afd6a8 +Block 0006 [ 38]: ed9de9c706c068a6 +Block 0006 [ 39]: 1fb7693b385233b7 +Block 0006 [ 40]: 49eda29d7136fc7d +Block 0006 [ 41]: ab6e18616433333a +Block 0006 [ 42]: 72df17bf0a5580c7 +Block 0006 [ 43]: 0082bba3466cd5ea +Block 0006 [ 44]: e9a4c1e542244a87 +Block 0006 [ 45]: c2d9cf7758b923e3 +Block 0006 [ 46]: bee180f733988dbf +Block 0006 [ 47]: 59a2da4ab34ee654 +Block 0006 [ 48]: cc56314eb2fa23e6 +Block 0006 [ 49]: 0f087137ac0a1c7a +Block 0006 [ 50]: 8067c1e34852b917 +Block 0006 [ 51]: 90a8915d42ae5075 +Block 0006 [ 52]: d5a11fa31dcd190a +Block 0006 [ 53]: 441518b90ef57a2b +Block 0006 [ 54]: 5b9fa34fb393336d +Block 0006 [ 55]: 6cd5798454fa4a12 +Block 0006 [ 56]: e9e5be8a0a850ca8 +Block 0006 [ 57]: 9e557468d5e3f9a6 +Block 0006 [ 58]: 3be40b13014c63af +Block 0006 [ 59]: e5db3589ece2fa5d +Block 0006 [ 60]: a7db7905add3ccbc +Block 0006 [ 61]: fdb1a2121e3ee9b9 +Block 0006 [ 62]: 87b16d82fd2baf1e +Block 0006 [ 63]: 596798be5427ad24 +Block 0006 [ 64]: bbc45faa52e1c3b5 +Block 0006 [ 65]: e0c382fd816cedee +Block 0006 [ 66]: 278a382948535926 +Block 0006 [ 67]: e796002cdda2daf4 +Block 0006 [ 68]: 8927e6a03f549fca +Block 0006 [ 69]: 31b3180c654b4ddb +Block 0006 [ 70]: 18dce7f5bbf32bfa +Block 0006 [ 71]: ae6b15ff97e0c1d4 +Block 0006 [ 72]: 9c22613ba008bc2c +Block 0006 [ 73]: 39ecb7c2397ca17d +Block 0006 [ 74]: fbbed8367164594a +Block 0006 [ 75]: d7cb5457059e32d5 +Block 0006 [ 76]: b06eac3578f74d1c +Block 0006 [ 77]: 882fdacd5035687f +Block 0006 [ 78]: 595c5747ab50a560 +Block 0006 [ 79]: 9000f76a4aa7e370 +Block 0006 [ 80]: ca6b97e8b24d933c +Block 0006 [ 81]: b1c524d71db5ecb1 +Block 0006 [ 82]: 63f4933374b5e5e2 +Block 0006 [ 83]: 84a48cc12b57dc0d +Block 0006 [ 84]: 785a2a1c88a63522 +Block 0006 [ 85]: f86705d1a24f35ca +Block 0006 [ 86]: f6e7ca822fa200cf +Block 0006 [ 87]: ca207bf6bdee4a69 +Block 0006 [ 88]: d701d641fd420f68 +Block 0006 [ 89]: 1c4f598bff32340f +Block 0006 [ 90]: 3bbb6d14037f8e85 +Block 0006 [ 91]: 0ac8f692c37dbdf1 +Block 0006 [ 92]: e17256aaa2c6417b +Block 0006 [ 93]: 130aabc282078fe6 +Block 0006 [ 94]: 72c4cb749d0eec25 +Block 0006 [ 95]: ffe89caac8c5946d +Block 0006 [ 96]: 2f2d8c60afaf2c94 +Block 0006 [ 97]: 7db481c19f5fb1ba +Block 0006 [ 98]: 0508153944853486 +Block 0006 [ 99]: 37a9635cb7261716 +Block 0006 [100]: f60fdd2341537e3b +Block 0006 [101]: abe87965feb6c714 +Block 0006 [102]: 0f2cb41fe88f9686 +Block 0006 [103]: 5f7d5faa3191545c +Block 0006 [104]: 9870bcbd2c7d0fbf +Block 0006 [105]: 1980d28854804501 +Block 0006 [106]: 882c0e69b0d1cab3 +Block 0006 [107]: 181723d7663999d9 +Block 0006 [108]: ac3af38a6b5919b2 +Block 0006 [109]: f3c7b5014ca21a1d +Block 0006 [110]: 82d98fc9d3c26c7b +Block 0006 [111]: cd63896a773ee2f2 +Block 0006 [112]: 8ca6b1bc8e639c17 +Block 0006 [113]: dc643e71fa5ba0d4 +Block 0006 [114]: 826997cd621ce6c6 +Block 0006 [115]: 60d2ab15f86ccda7 +Block 0006 [116]: 736900641a1df82f +Block 0006 [117]: 74b7a10a22330c0f +Block 0006 [118]: 21faa45375e80c38 +Block 0006 [119]: 4b8c2f8bbb148222 +Block 0006 [120]: 586d669cc9dc46aa +Block 0006 [121]: 582cc814f6edde20 +Block 0006 [122]: a6171da287a072ee +Block 0006 [123]: 9dfafee0098dc6ba +Block 0006 [124]: 280efcd252cb68a8 +Block 0006 [125]: fb26ef59ef4d8505 +Block 0006 [126]: 1d5e477cb30e513c +Block 0006 [127]: 87dc7ecab98fe69c +Block 0007 [ 0]: 272d06fade6d331a +Block 0007 [ 1]: c625b4d1a098ff17 +Block 0007 [ 2]: b9a65a7b82e0c9c9 +Block 0007 [ 3]: a7301af123895781 +Block 0007 [ 4]: 05cc626884232f6b +Block 0007 [ 5]: cc1cb1d4830da55d +Block 0007 [ 6]: 7ad27fd0ebbbc641 +Block 0007 [ 7]: 1bdabd0730624045 +Block 0007 [ 8]: 8a796cb38f76bef5 +Block 0007 [ 9]: 955a31ecd6a3e9f3 +Block 0007 [ 10]: 8e614cbf6c83ed5b +Block 0007 [ 11]: 7cfee51609058b60 +Block 0007 [ 12]: c1a76d5bbfd35b39 +Block 0007 [ 13]: 12661d52aed610ed +Block 0007 [ 14]: 19ddb4706a02b6c4 +Block 0007 [ 15]: 512029583ae902a2 +Block 0007 [ 16]: 2a22ec2229b71abe +Block 0007 [ 17]: f35d343177e1a239 +Block 0007 [ 18]: a4b78e999c59f71d +Block 0007 [ 19]: 00121cf1bded93ee +Block 0007 [ 20]: 7f492bad6a0792ed +Block 0007 [ 21]: 5b2224cd6fbc8b30 +Block 0007 [ 22]: dc3b63b33575ed25 +Block 0007 [ 23]: af84aa371c386c6b +Block 0007 [ 24]: 174995fa235d8e0c +Block 0007 [ 25]: b1c7d3904bf63ed2 +Block 0007 [ 26]: a43938085a786223 +Block 0007 [ 27]: 6928a779ebd0acbe +Block 0007 [ 28]: 00649d7e17e68bf0 +Block 0007 [ 29]: 7ff8c78339c135e3 +Block 0007 [ 30]: d2cc3195e2f4a6fa +Block 0007 [ 31]: 87d7db26ff9c4839 +Block 0007 [ 32]: 170ff45d245abc95 +Block 0007 [ 33]: ca0de5afa7bc179b +Block 0007 [ 34]: 47f87e00ca4a5bd7 +Block 0007 [ 35]: 42c9e956ce7b830d +Block 0007 [ 36]: e2d68ca2fe26cbae +Block 0007 [ 37]: 31facbd28e4ff423 +Block 0007 [ 38]: 816dee4fde572108 +Block 0007 [ 39]: 24aabace105ecf93 +Block 0007 [ 40]: beac4f8a0eca1d5f +Block 0007 [ 41]: 228c9957808ed0e5 +Block 0007 [ 42]: 31ab6b20240ceb32 +Block 0007 [ 43]: 3079d7aa4522c927 +Block 0007 [ 44]: d9437ac020401bf7 +Block 0007 [ 45]: 2dbf3ec6847975f0 +Block 0007 [ 46]: 1c677f6d76964cc5 +Block 0007 [ 47]: 56e9aecea3bc1b26 +Block 0007 [ 48]: 2837465c37fb812d +Block 0007 [ 49]: 0c306513f38f378d +Block 0007 [ 50]: 0c37fd80799a554f +Block 0007 [ 51]: 7b39bbcd780ce2b7 +Block 0007 [ 52]: 37607a623990fa10 +Block 0007 [ 53]: 439b6ae755ff0868 +Block 0007 [ 54]: 352644a9cc59b330 +Block 0007 [ 55]: f2533ac8d81ba695 +Block 0007 [ 56]: b56c25657ac775cd +Block 0007 [ 57]: 69bcc975eb9cfda8 +Block 0007 [ 58]: e965849c9c4ecf32 +Block 0007 [ 59]: e1e5e54302307fca +Block 0007 [ 60]: 2ff11a374a3f367c +Block 0007 [ 61]: ef3347a4e2a55d88 +Block 0007 [ 62]: d4c092ae6aa73d35 +Block 0007 [ 63]: cd90b21e590d3b7f +Block 0007 [ 64]: 7f47d6288f261862 +Block 0007 [ 65]: e595765a549a7456 +Block 0007 [ 66]: 9b46d372f817fad0 +Block 0007 [ 67]: 0ef73e99671ced02 +Block 0007 [ 68]: 068c1456cffd15f2 +Block 0007 [ 69]: 0450108481b2aec3 +Block 0007 [ 70]: 9a51541fca67cef7 +Block 0007 [ 71]: 344a07ee5c0a9781 +Block 0007 [ 72]: b8e2b12cb684e206 +Block 0007 [ 73]: 73aa863c2cec0580 +Block 0007 [ 74]: 56fba126410a6204 +Block 0007 [ 75]: 803deaed4fcf5750 +Block 0007 [ 76]: 02bcfae2d70280fb +Block 0007 [ 77]: b8ab8a5874e27d6f +Block 0007 [ 78]: d74bc0568607a2f1 +Block 0007 [ 79]: 8dfc1a8581f4797d +Block 0007 [ 80]: 7d5e362d1f502015 +Block 0007 [ 81]: fd494de723c9e751 +Block 0007 [ 82]: c1205d413f2fce7b +Block 0007 [ 83]: eee662d69c3a0011 +Block 0007 [ 84]: 9b902b3931050f40 +Block 0007 [ 85]: bd830f0036694cd4 +Block 0007 [ 86]: e9420bf5b18f8b4f +Block 0007 [ 87]: aa0f2c68410ae330 +Block 0007 [ 88]: 47d4132eb7dade03 +Block 0007 [ 89]: 0c05c6af851968e5 +Block 0007 [ 90]: c5b535d388a53d78 +Block 0007 [ 91]: ac97ce6b41d6c7d5 +Block 0007 [ 92]: 112052d13f30e8c1 +Block 0007 [ 93]: cc560af42f595097 +Block 0007 [ 94]: ad7abf51469c4f83 +Block 0007 [ 95]: 5dd9175d9fff36f6 +Block 0007 [ 96]: 14ab61988879261d +Block 0007 [ 97]: 4726e1f0236e01ad +Block 0007 [ 98]: 7309705c333c73b6 +Block 0007 [ 99]: 4ba518ea29172f7f +Block 0007 [100]: ecdff9f4dc349e2c +Block 0007 [101]: 2e0b9def72ef1912 +Block 0007 [102]: 78a468fc70c7075c +Block 0007 [103]: d705b64d14bfbd7c +Block 0007 [104]: 67a2b7162aee3bd3 +Block 0007 [105]: 5978e84637288123 +Block 0007 [106]: 5153bcaf415ee20f +Block 0007 [107]: e3a999e7921a7722 +Block 0007 [108]: 1defb1f37bb6df78 +Block 0007 [109]: 4396889ae5329428 +Block 0007 [110]: 1f5304f6d3f4c5eb +Block 0007 [111]: 7ad70f5d1b72c11b +Block 0007 [112]: 2a497b553a83863d +Block 0007 [113]: afaa70491f8139a8 +Block 0007 [114]: b41152f3eea230d9 +Block 0007 [115]: 27b29c968c0e02eb +Block 0007 [116]: 380544bbc10304c2 +Block 0007 [117]: f32188d2a43f24de +Block 0007 [118]: 6e2b22fb4ed9b3d8 +Block 0007 [119]: 927e2d31cbfdfb51 +Block 0007 [120]: 15be340149804f89 +Block 0007 [121]: fe8e654001ec9dc3 +Block 0007 [122]: 0952688acce880d9 +Block 0007 [123]: bfd9caca8b3c2ed7 +Block 0007 [124]: 57489b9341cc60b9 +Block 0007 [125]: 5c290f757cb97be6 +Block 0007 [126]: dea6a955364f7879 +Block 0007 [127]: 2734980c24943229 +Block 0008 [ 0]: dc6b6d1adf13ba10 +Block 0008 [ 1]: b91d17ea5fd061fa +Block 0008 [ 2]: aeb5e95e05f28465 +Block 0008 [ 3]: aae5d4364c1ac7e2 +Block 0008 [ 4]: 531c8c4860b55657 +Block 0008 [ 5]: 546f378ddacf7d44 +Block 0008 [ 6]: 1fbdab2cab565be2 +Block 0008 [ 7]: 3907d1b6b09a1762 +Block 0008 [ 8]: 2eeef614ecbd720d +Block 0008 [ 9]: 46e5e7efd4525bd9 +Block 0008 [ 10]: f4d0acbf1bed6c87 +Block 0008 [ 11]: 83cc80d830e03068 +Block 0008 [ 12]: bb67c441b80c8604 +Block 0008 [ 13]: 9dcc40be341714ac +Block 0008 [ 14]: 18abaf3eb1a7890c +Block 0008 [ 15]: 1990d7f3ac301693 +Block 0008 [ 16]: d0e8b3bdfeec80fd +Block 0008 [ 17]: d88b6939c62d2b0d +Block 0008 [ 18]: 917249fcba34089f +Block 0008 [ 19]: f970f8b97f892d13 +Block 0008 [ 20]: 5d3cf4f4665e8025 +Block 0008 [ 21]: 7fbc8fc1719a00e0 +Block 0008 [ 22]: 3b94c22e3e2725b5 +Block 0008 [ 23]: d4ce1e6309916de6 +Block 0008 [ 24]: 87fbacd4e43dd068 +Block 0008 [ 25]: 200cff600856dafe +Block 0008 [ 26]: 23ba6b39c79cb5ef +Block 0008 [ 27]: b1f46be594d43c95 +Block 0008 [ 28]: ff35e0beed2ea235 +Block 0008 [ 29]: bef54f0cad51bdf4 +Block 0008 [ 30]: d06e6a34d97cd464 +Block 0008 [ 31]: 85e39b5b21902dca +Block 0008 [ 32]: 6bc1d2871274396e +Block 0008 [ 33]: d7d23981830ab34f +Block 0008 [ 34]: fb7fefb74c559aed +Block 0008 [ 35]: 06e363f9a51f4783 +Block 0008 [ 36]: 3115e623e62aaa41 +Block 0008 [ 37]: 72e98c5a2f6ce676 +Block 0008 [ 38]: 9215b69396270668 +Block 0008 [ 39]: e0844ff4b74ba824 +Block 0008 [ 40]: 29954c50a989f002 +Block 0008 [ 41]: 82eb6370e89c3eb1 +Block 0008 [ 42]: 62ce9194a114645f +Block 0008 [ 43]: d7af7eef56703e93 +Block 0008 [ 44]: fcebd0463c2bbcff +Block 0008 [ 45]: 3f9ec1849914b05c +Block 0008 [ 46]: 6c9970e2a5698e8b +Block 0008 [ 47]: 9862a324eb161be6 +Block 0008 [ 48]: 32334ea7036383a4 +Block 0008 [ 49]: 7e64ecf8ad38de47 +Block 0008 [ 50]: ccf52cfd8dd5208f +Block 0008 [ 51]: 7058c1e23eca4bd2 +Block 0008 [ 52]: ad66da4882be2b72 +Block 0008 [ 53]: 6f95725de653f188 +Block 0008 [ 54]: 659e89de1828405e +Block 0008 [ 55]: 451d65f554be4ee6 +Block 0008 [ 56]: 84d337c6f49641df +Block 0008 [ 57]: a869207e69d5299f +Block 0008 [ 58]: 0078bd60849acc64 +Block 0008 [ 59]: 606f256c808ffbd0 +Block 0008 [ 60]: e96aed2a2b6073a6 +Block 0008 [ 61]: d2dc35007b056e00 +Block 0008 [ 62]: e1af5e8c6239ca8a +Block 0008 [ 63]: c13c556f4eb60ff2 +Block 0008 [ 64]: 0d383da1a0b22a3c +Block 0008 [ 65]: 85ae949a305ef696 +Block 0008 [ 66]: f59d0e46d51c54c5 +Block 0008 [ 67]: 0c7301c96a56b539 +Block 0008 [ 68]: 65dd44ab0979d798 +Block 0008 [ 69]: 61cfa43ce06ded75 +Block 0008 [ 70]: d1099cc2ce7dc5d0 +Block 0008 [ 71]: 4b51cbcc97c72879 +Block 0008 [ 72]: c4c96ed0aeb5be58 +Block 0008 [ 73]: cd4d3ad40727e0df +Block 0008 [ 74]: 9ac84675bd4eb1fa +Block 0008 [ 75]: 3873937250526178 +Block 0008 [ 76]: c695538e394b84f3 +Block 0008 [ 77]: e26ad59a4b45df18 +Block 0008 [ 78]: 3ccf1fc37ae30577 +Block 0008 [ 79]: 1da81eaf501a98bf +Block 0008 [ 80]: f5bde1fdb6c61688 +Block 0008 [ 81]: 48a236a088e9bc96 +Block 0008 [ 82]: 2e54ed7d3b0505bc +Block 0008 [ 83]: f756483978ec1b71 +Block 0008 [ 84]: 949c4fe87b7d67a9 +Block 0008 [ 85]: b788279c6674c956 +Block 0008 [ 86]: b96bfdc0c59a7cc3 +Block 0008 [ 87]: 37152d7aac6f5aad +Block 0008 [ 88]: 17128b43250a0624 +Block 0008 [ 89]: caaefd58274022e6 +Block 0008 [ 90]: 3e6af46acda01234 +Block 0008 [ 91]: 43091b598aecff38 +Block 0008 [ 92]: 1070375d7d2c8988 +Block 0008 [ 93]: 54ca7be036dc1816 +Block 0008 [ 94]: b631d974db91a390 +Block 0008 [ 95]: efc15bb9abc2cfad +Block 0008 [ 96]: 2b1c41ece54418ab +Block 0008 [ 97]: d7882b30049b13d5 +Block 0008 [ 98]: 4dc546209f942114 +Block 0008 [ 99]: 4da30a306bb48db6 +Block 0008 [100]: 3e78eacda997f0a3 +Block 0008 [101]: 42f92bc6bf89e191 +Block 0008 [102]: aef3a035402b18a9 +Block 0008 [103]: 7418b3827a08136b +Block 0008 [104]: 82f2bd22342aadd9 +Block 0008 [105]: 928bb61702b4cc95 +Block 0008 [106]: 779a5cae529e6d13 +Block 0008 [107]: e14bf3cdeefeb3fa +Block 0008 [108]: 34075120b790f68b +Block 0008 [109]: 2aa17b3a36b46677 +Block 0008 [110]: e96b0ffccb42f8d1 +Block 0008 [111]: c895ba8dd04aa4b7 +Block 0008 [112]: 26ffd120da78eb7e +Block 0008 [113]: aa2421483a0f6984 +Block 0008 [114]: aead9757c1108bc6 +Block 0008 [115]: 59a09752c2e4954b +Block 0008 [116]: 1275c2fb3e2f7d66 +Block 0008 [117]: 24f14bf43c8b3438 +Block 0008 [118]: 898abe2e8e0e1065 +Block 0008 [119]: 7c7c5df695255005 +Block 0008 [120]: 6801c208f9ac6f4f +Block 0008 [121]: 7df45962a612c76e +Block 0008 [122]: 2756812f921cb052 +Block 0008 [123]: 06a5fb01f2ba4e28 +Block 0008 [124]: 72617963057f1c4c +Block 0008 [125]: 3470685b81ac58a0 +Block 0008 [126]: 783c1a85437acb5c +Block 0008 [127]: 3bd80ab09cfb1139 +Block 0009 [ 0]: c87e47b1c3772012 +Block 0009 [ 1]: 53ef67895ef0ba16 +Block 0009 [ 2]: 51e4861563608c9d +Block 0009 [ 3]: 3cfcbc281c9ebdd6 +Block 0009 [ 4]: feaf7c32fee96066 +Block 0009 [ 5]: 1127f68fe2e0ef2b +Block 0009 [ 6]: d2b9348e169c5429 +Block 0009 [ 7]: 01def6b91eb75bad +Block 0009 [ 8]: f868acc084b74873 +Block 0009 [ 9]: b73c0d66f77e6e65 +Block 0009 [ 10]: 5dcf631cc3261744 +Block 0009 [ 11]: 5c063f0e7dc4ddc9 +Block 0009 [ 12]: d88ec186ab575517 +Block 0009 [ 13]: b49d4fd9265055fa +Block 0009 [ 14]: af9c253d9ec60147 +Block 0009 [ 15]: c133040684f7f94b +Block 0009 [ 16]: 7c9fd7f6bba1b216 +Block 0009 [ 17]: d9c687ce5c476a65 +Block 0009 [ 18]: 0005a29d070297c7 +Block 0009 [ 19]: dc897d2c175e3c02 +Block 0009 [ 20]: e942dfe4ccf40d40 +Block 0009 [ 21]: 6caa0532e5669a76 +Block 0009 [ 22]: 5baf9399bd1e8f8a +Block 0009 [ 23]: b3deb6ab6a5a1d4b +Block 0009 [ 24]: 3d454ed17ed9d6d4 +Block 0009 [ 25]: 4bbb1c5031ba97f1 +Block 0009 [ 26]: c2f1c71e39dad8ce +Block 0009 [ 27]: 6691d661c29e7010 +Block 0009 [ 28]: 6759aa49c1fc9154 +Block 0009 [ 29]: c9cc86dc186f4518 +Block 0009 [ 30]: b746e661d8353a8e +Block 0009 [ 31]: d238bafb93f0025a +Block 0009 [ 32]: 41e346bfb0d34e5b +Block 0009 [ 33]: eafafc3b447bccb4 +Block 0009 [ 34]: ceb113c031914223 +Block 0009 [ 35]: caf4e78e1cd53f5f +Block 0009 [ 36]: 78351504f8a33c16 +Block 0009 [ 37]: 7575acf932b356c8 +Block 0009 [ 38]: c09617cd3a1a1627 +Block 0009 [ 39]: cb07cf989cc4caf2 +Block 0009 [ 40]: 8cc189366d9b26f5 +Block 0009 [ 41]: 449beb3368a3877e +Block 0009 [ 42]: e8f5818a7858db70 +Block 0009 [ 43]: c793ebf3d301198f +Block 0009 [ 44]: 3aa508c80633437f +Block 0009 [ 45]: d3b867a3cbaf08f6 +Block 0009 [ 46]: fbde37db7e33e4fc +Block 0009 [ 47]: dc548c7f368e6497 +Block 0009 [ 48]: 4c1c0211c7516b79 +Block 0009 [ 49]: 75dbc72a82d41883 +Block 0009 [ 50]: 530487899a550ada +Block 0009 [ 51]: 27e20eb8330d18d7 +Block 0009 [ 52]: f5b0ea85baf15669 +Block 0009 [ 53]: ac9c2708dbe29cec +Block 0009 [ 54]: 102df235d45e0fe8 +Block 0009 [ 55]: 1ec27724b22275b8 +Block 0009 [ 56]: 7ff048771596e3d6 +Block 0009 [ 57]: 401be2cc8914cbb7 +Block 0009 [ 58]: 127969310e85020f +Block 0009 [ 59]: 668aa409ee1e22ab +Block 0009 [ 60]: 4ea69cd6b1727439 +Block 0009 [ 61]: 3da31ac5eefe1d0a +Block 0009 [ 62]: 7eeadbaf86a9e3fb +Block 0009 [ 63]: 7fd960e6520c2179 +Block 0009 [ 64]: 1e778bfc99b12598 +Block 0009 [ 65]: 737729bf678749fd +Block 0009 [ 66]: 25e9e1f65be274b9 +Block 0009 [ 67]: 1190348847839e7c +Block 0009 [ 68]: da6903502fbb1d6a +Block 0009 [ 69]: 8febd989e10caf6e +Block 0009 [ 70]: 5bec284c097f0f56 +Block 0009 [ 71]: 0ad7e582f0f3ca14 +Block 0009 [ 72]: ac3d0111de95633c +Block 0009 [ 73]: b03374b9fdf0165f +Block 0009 [ 74]: df6408de8b5d06e9 +Block 0009 [ 75]: 6545ea0295ffd8e2 +Block 0009 [ 76]: e7a37676dfb5330c +Block 0009 [ 77]: e97777e4dab1e386 +Block 0009 [ 78]: 23aad2be96ef0dbe +Block 0009 [ 79]: 67a3c60819619ed2 +Block 0009 [ 80]: cc5bf52ea2cb1323 +Block 0009 [ 81]: 3d1e3e79c7dcd249 +Block 0009 [ 82]: bd78f50ff24a14c1 +Block 0009 [ 83]: 24ebc5de9a24b1f1 +Block 0009 [ 84]: 35d2ad9a11fd08e7 +Block 0009 [ 85]: d5d586e87776af28 +Block 0009 [ 86]: 0a29e47fcd7bb004 +Block 0009 [ 87]: 5be280ff4eae5d10 +Block 0009 [ 88]: e9efc91da33b4f70 +Block 0009 [ 89]: 98ddf317551d1e13 +Block 0009 [ 90]: 9ed9fb074b0a2315 +Block 0009 [ 91]: 385474dcc69460b0 +Block 0009 [ 92]: edf4b8f53ee65fa3 +Block 0009 [ 93]: e55a8ee53447e358 +Block 0009 [ 94]: e5d77c0d5d0d447a +Block 0009 [ 95]: 9b8d0f0579b33fe2 +Block 0009 [ 96]: c38407b72241aa34 +Block 0009 [ 97]: ee6b13f12b3d99ef +Block 0009 [ 98]: 8dc888f6831b572e +Block 0009 [ 99]: decf4825f7a4524c +Block 0009 [100]: a3e3b8af2b57dd62 +Block 0009 [101]: 6acc58b90c361016 +Block 0009 [102]: 40a0794b70468084 +Block 0009 [103]: 2e8a1bf968e971f6 +Block 0009 [104]: 1572b5471c1e0893 +Block 0009 [105]: 741bc6497a2dc4a8 +Block 0009 [106]: 8846d56dae324d63 +Block 0009 [107]: 4864229bbb77532b +Block 0009 [108]: c5f6478ebca01d36 +Block 0009 [109]: 3c8d06e4e9ae61ae +Block 0009 [110]: 8b84b6a6ec874319 +Block 0009 [111]: b73a861c04f8d0ba +Block 0009 [112]: 21bf2816040b2d99 +Block 0009 [113]: e5e3954579481c8e +Block 0009 [114]: 6df21d01fc4ec2c0 +Block 0009 [115]: d85fe0be3c317775 +Block 0009 [116]: 6785100343e96142 +Block 0009 [117]: 60c1585dd04ec099 +Block 0009 [118]: 9035b1e5912bb6ad +Block 0009 [119]: 6447bc2528ad95d3 +Block 0009 [120]: f5f4a497dea40726 +Block 0009 [121]: df1c9adc1dd0354c +Block 0009 [122]: e30cee24d3114e16 +Block 0009 [123]: 3c16415b0b3e36d2 +Block 0009 [124]: ddc2d3d67ba5aa90 +Block 0009 [125]: 4e8b75fd86fc44aa +Block 0009 [126]: 43c133389abe42fa +Block 0009 [127]: 1f0163071d1c2fd1 +Block 0010 [ 0]: befa5b8772684bf6 +Block 0010 [ 1]: 085c709ecbb1163e +Block 0010 [ 2]: c9952c634b7d47f7 +Block 0010 [ 3]: a9f2b1b34abb7255 +Block 0010 [ 4]: be1e81439a7a7527 +Block 0010 [ 5]: c759115839e61b79 +Block 0010 [ 6]: 90cdc1d1dde970eb +Block 0010 [ 7]: 4280a622460f8f81 +Block 0010 [ 8]: 95fa2520e5ea2640 +Block 0010 [ 9]: 3ef882089894d918 +Block 0010 [ 10]: 0707aea599fcd04d +Block 0010 [ 11]: 263da9476e267dab +Block 0010 [ 12]: 0243d341cce26088 +Block 0010 [ 13]: a0baddf8da89da95 +Block 0010 [ 14]: 15a0b306f9705ef5 +Block 0010 [ 15]: 3ca3647aafd77025 +Block 0010 [ 16]: fee96d8bf3dd1a25 +Block 0010 [ 17]: cf2c6b7a5ece296a +Block 0010 [ 18]: 1607217149c09a31 +Block 0010 [ 19]: 7e01c277d0ef54c4 +Block 0010 [ 20]: 207f8b6971f3ae28 +Block 0010 [ 21]: 3dbb5683d75695e0 +Block 0010 [ 22]: a368fd19c839e578 +Block 0010 [ 23]: e60a3067d5d5693b +Block 0010 [ 24]: 405be0c196638dc5 +Block 0010 [ 25]: dd6b58f4cbb38216 +Block 0010 [ 26]: 67f9d42959a2f41d +Block 0010 [ 27]: 740cb740b3e2dfbc +Block 0010 [ 28]: e34b6c6d0a49657f +Block 0010 [ 29]: 685d381724c365a6 +Block 0010 [ 30]: b5d7fd05fa5304dd +Block 0010 [ 31]: 291426b0884ca7c0 +Block 0010 [ 32]: fc26d49c0b7307f6 +Block 0010 [ 33]: 1ce47f53948cba58 +Block 0010 [ 34]: c7873387db218bad +Block 0010 [ 35]: ef0e4ec79d349a29 +Block 0010 [ 36]: 7f42c4685301d3e1 +Block 0010 [ 37]: 646965e52f86b620 +Block 0010 [ 38]: 3b24fae553a213fa +Block 0010 [ 39]: b58c7bf6b48d4969 +Block 0010 [ 40]: df53292c9ffd2d03 +Block 0010 [ 41]: fcb36b01a3a98243 +Block 0010 [ 42]: 7e53d4ce327d8cb4 +Block 0010 [ 43]: 135711f8b9c07b15 +Block 0010 [ 44]: d78adac7fcaaf2f4 +Block 0010 [ 45]: f607b6b937105259 +Block 0010 [ 46]: bb3dc4c6e46379ca +Block 0010 [ 47]: eefaac476ee9ab7c +Block 0010 [ 48]: 468f2a5b91ee25f4 +Block 0010 [ 49]: fe6835bf15208fd4 +Block 0010 [ 50]: 8affa55b80d80c40 +Block 0010 [ 51]: 8fffb69a0a6bc68c +Block 0010 [ 52]: 891fc625a7a996f2 +Block 0010 [ 53]: 0d0685282c901497 +Block 0010 [ 54]: 2b954fbc63f376ae +Block 0010 [ 55]: 0bf1c04c7b66a429 +Block 0010 [ 56]: 57cfab3494e5a87b +Block 0010 [ 57]: 9c7cba71413b4420 +Block 0010 [ 58]: b6067ace22788323 +Block 0010 [ 59]: 88cc4cadb0ef6327 +Block 0010 [ 60]: 335e981c1139ea8c +Block 0010 [ 61]: 1891fde6348d4fc8 +Block 0010 [ 62]: b381eed13dc2b78d +Block 0010 [ 63]: f2a7eec805d51aae +Block 0010 [ 64]: cc135639e5e00188 +Block 0010 [ 65]: a69d976a329936b6 +Block 0010 [ 66]: 711efe69efaf4466 +Block 0010 [ 67]: 77457b10caf144d4 +Block 0010 [ 68]: 8aa80f5b398b0ba1 +Block 0010 [ 69]: 0462168a20ff98fd +Block 0010 [ 70]: 289476e527ad0471 +Block 0010 [ 71]: 0d16c9f256fd3fcf +Block 0010 [ 72]: 217f514f3cd70a35 +Block 0010 [ 73]: 2614c68433606c51 +Block 0010 [ 74]: 7ab84319913ed734 +Block 0010 [ 75]: dd5f5f5c9aaecbd9 +Block 0010 [ 76]: 702cd4909bdc11c0 +Block 0010 [ 77]: 72a4e082cbc8137b +Block 0010 [ 78]: 653aa0dd3bd208fd +Block 0010 [ 79]: e9f932f6da625eb3 +Block 0010 [ 80]: f509bb018f18cfaf +Block 0010 [ 81]: 99a9e8543ca215f5 +Block 0010 [ 82]: 4708e89ae1b1188e +Block 0010 [ 83]: 51891a2708bc5d49 +Block 0010 [ 84]: dad30d258b95dfeb +Block 0010 [ 85]: 484cb6452492d4b3 +Block 0010 [ 86]: 24e97876b8de8ad5 +Block 0010 [ 87]: 497aed5cc31eabe9 +Block 0010 [ 88]: 534be98534a52cd4 +Block 0010 [ 89]: 0fab7b40d1cc4b6b +Block 0010 [ 90]: 757ae5b5eae855b2 +Block 0010 [ 91]: 41e89502499a68f7 +Block 0010 [ 92]: 692503814db75985 +Block 0010 [ 93]: 880611b34e91bedd +Block 0010 [ 94]: ab7786085ad98a6e +Block 0010 [ 95]: b79e239e6ad63dc1 +Block 0010 [ 96]: 61776e383070a25e +Block 0010 [ 97]: f29cbc2b3acfb0c7 +Block 0010 [ 98]: 996441bfce221ced +Block 0010 [ 99]: 6f5ead13c143577d +Block 0010 [100]: aaaa31be402b27b4 +Block 0010 [101]: bf83e7a5e9ceaa42 +Block 0010 [102]: d7c70f2a03c8aafe +Block 0010 [103]: f208e9600f6eaf8f +Block 0010 [104]: a86e7647599dc845 +Block 0010 [105]: b7bd43ee9c81e4ae +Block 0010 [106]: b1040a7ff84bf978 +Block 0010 [107]: c1da4cab128267ac +Block 0010 [108]: 92663063b6bc8da6 +Block 0010 [109]: bbc3e4dff7e3a55c +Block 0010 [110]: e0064c5f0e09d73c +Block 0010 [111]: 49f643c676dc2772 +Block 0010 [112]: a3be74551a7e1e36 +Block 0010 [113]: abb7fe1b3fe50c56 +Block 0010 [114]: 526f984c4ab11df6 +Block 0010 [115]: b9eb4cf82a7a11de +Block 0010 [116]: aaa8b1c1d2be2069 +Block 0010 [117]: 0e35c1a3e51f6a46 +Block 0010 [118]: 07686089eebde1ab +Block 0010 [119]: 5263d0261569a314 +Block 0010 [120]: 1688ceb9338a4b31 +Block 0010 [121]: 5aaab77de3987dd8 +Block 0010 [122]: b56f428cb894f0a1 +Block 0010 [123]: 3cf7890c2f0ae0f3 +Block 0010 [124]: eccbb53963cfe1da +Block 0010 [125]: bb84140c85b73e58 +Block 0010 [126]: 16473f1cdafe7c7a +Block 0010 [127]: c402ee74ab2ac05c +Block 0011 [ 0]: c653e884a645cdaa +Block 0011 [ 1]: 1a80a4a9129c76af +Block 0011 [ 2]: ad20d6b7a20d3352 +Block 0011 [ 3]: 917837cc2a442b26 +Block 0011 [ 4]: 41d5764a042d0163 +Block 0011 [ 5]: f51dab48664317ff +Block 0011 [ 6]: 3b779caf5b8277da +Block 0011 [ 7]: b8c5828991b426ac +Block 0011 [ 8]: 47ab06236d61a15f +Block 0011 [ 9]: 0a0a476c1d875005 +Block 0011 [ 10]: d72be69d44f4ccb4 +Block 0011 [ 11]: d95a306e7bcc2d96 +Block 0011 [ 12]: 985203c137206ae1 +Block 0011 [ 13]: e07fadc68088ffeb +Block 0011 [ 14]: 1890161f30cc007d +Block 0011 [ 15]: 932d310e7cbc5ca4 +Block 0011 [ 16]: dfd306dea8fc3e87 +Block 0011 [ 17]: 39637a2bdd5dfee7 +Block 0011 [ 18]: 93db7797472ffa83 +Block 0011 [ 19]: 0cfe6f1f456731d8 +Block 0011 [ 20]: fddf2caa3d0cf657 +Block 0011 [ 21]: a49abbc39b10e22c +Block 0011 [ 22]: d0c6c58a83e7e52d +Block 0011 [ 23]: 2e4ef7d71b8465f4 +Block 0011 [ 24]: fe82bc09e95b6cc1 +Block 0011 [ 25]: b627e2fe87f7ad69 +Block 0011 [ 26]: 0fe85e68705aad64 +Block 0011 [ 27]: 6725c0fc669a2949 +Block 0011 [ 28]: 00af03bf439b3e92 +Block 0011 [ 29]: c55fcbcd0874aa11 +Block 0011 [ 30]: a6354e7265de96b0 +Block 0011 [ 31]: 6ab1657e8e5523cc +Block 0011 [ 32]: ffbbb07dda2378d6 +Block 0011 [ 33]: 91cdd7eacf43a1c4 +Block 0011 [ 34]: fda16e5ed4b758f9 +Block 0011 [ 35]: 75b36a93f61d0042 +Block 0011 [ 36]: 80621463273f5094 +Block 0011 [ 37]: 8c749b031564fdef +Block 0011 [ 38]: 1a26abfb041795ca +Block 0011 [ 39]: 92c69cdeb75efde3 +Block 0011 [ 40]: 64362ce5e598c487 +Block 0011 [ 41]: b65bc723e932f76b +Block 0011 [ 42]: f43ebd68f6e9c432 +Block 0011 [ 43]: de5de5c1f36a45ba +Block 0011 [ 44]: 2f8d0d9b95f74e80 +Block 0011 [ 45]: 5469c5dd541fa533 +Block 0011 [ 46]: d03b064b3c284dd5 +Block 0011 [ 47]: e95b01a5b9d29e3f +Block 0011 [ 48]: 622ca8c0ae5d930e +Block 0011 [ 49]: 69448a5aa5ace55f +Block 0011 [ 50]: c989a9e575455ebc +Block 0011 [ 51]: 0476db62a6886efd +Block 0011 [ 52]: a4832dec608aca4f +Block 0011 [ 53]: 86b177320faf452f +Block 0011 [ 54]: fbeafa6566deffcf +Block 0011 [ 55]: a0c875dd077aab2b +Block 0011 [ 56]: 09d79bbadb920be5 +Block 0011 [ 57]: dfa71d47055b1ae1 +Block 0011 [ 58]: 491e72e2c0b45b1b +Block 0011 [ 59]: 9d5d759a04605ff9 +Block 0011 [ 60]: 0995e9f221f5f944 +Block 0011 [ 61]: df4e0b7afd7ead75 +Block 0011 [ 62]: 61141a94ba73a087 +Block 0011 [ 63]: f9d6151cb6988393 +Block 0011 [ 64]: 66f098f5c572ddd2 +Block 0011 [ 65]: 1940bf2f30fa28ad +Block 0011 [ 66]: c0827cf0ddfff6f2 +Block 0011 [ 67]: 73f8fb11d825a338 +Block 0011 [ 68]: 10fe21234998f744 +Block 0011 [ 69]: f8efc010e321247f +Block 0011 [ 70]: 2db04992d9220e61 +Block 0011 [ 71]: d00a64e77a8220c9 +Block 0011 [ 72]: 3d27f291da5fd89c +Block 0011 [ 73]: 1650ea233a65a6d9 +Block 0011 [ 74]: d32faf1133b296bf +Block 0011 [ 75]: 025f216987806954 +Block 0011 [ 76]: 00c9f933047627f9 +Block 0011 [ 77]: 2ce59ffdbcc25feb +Block 0011 [ 78]: 9e5d95d5f5e1665f +Block 0011 [ 79]: 8e9aa2d6c5f4fb8f +Block 0011 [ 80]: f29a4f3b1df3f2f4 +Block 0011 [ 81]: 163e77046784203d +Block 0011 [ 82]: d3475f23d0bcbb68 +Block 0011 [ 83]: fb5c4cfddac2c802 +Block 0011 [ 84]: bb6d887a81266342 +Block 0011 [ 85]: ab2b93751d7057ee +Block 0011 [ 86]: e79b4ec1b629ee53 +Block 0011 [ 87]: e50213e5fc957257 +Block 0011 [ 88]: f35a4d4a55ee15ec +Block 0011 [ 89]: c3bc9d6d1181c300 +Block 0011 [ 90]: a9f97892e7819b52 +Block 0011 [ 91]: 7a81ab2502821be8 +Block 0011 [ 92]: 57a98531b6c8e311 +Block 0011 [ 93]: fbab2dbf19f01294 +Block 0011 [ 94]: 402824c6dbe777ee +Block 0011 [ 95]: 59509aa8448aac6c +Block 0011 [ 96]: 9bcf16665a0a953a +Block 0011 [ 97]: 2172cb256715c249 +Block 0011 [ 98]: 54d6bbe2385b704a +Block 0011 [ 99]: dc288a2ff4a31f21 +Block 0011 [100]: 33e3c4d905aa1584 +Block 0011 [101]: f87bcfbbc106fe52 +Block 0011 [102]: 7dee45d72215096d +Block 0011 [103]: b798a129a56a498d +Block 0011 [104]: 639de22338bdfb22 +Block 0011 [105]: 4f1b0e209be36402 +Block 0011 [106]: ecfbf8eed84dda98 +Block 0011 [107]: d737114d3c05d061 +Block 0011 [108]: 987eadfcab4ec3c9 +Block 0011 [109]: c7cd9308d517c07a +Block 0011 [110]: 8b8637368781bc8d +Block 0011 [111]: 032f8375d3ac536e +Block 0011 [112]: 7da4a1808bb34e88 +Block 0011 [113]: 1761824e178e9d2f +Block 0011 [114]: 9ce6a9d604b50b6d +Block 0011 [115]: 69cfb48f60aa6b37 +Block 0011 [116]: d10088c389c01e7c +Block 0011 [117]: 01039dabd810204e +Block 0011 [118]: 02473cbb6d6e86e7 +Block 0011 [119]: 783710a70144d0d7 +Block 0011 [120]: c2081f9cbd0809bc +Block 0011 [121]: 60ecdee8cfba90c0 +Block 0011 [122]: 6068a3dce6a26929 +Block 0011 [123]: 67f4c0a3db81d9a6 +Block 0011 [124]: 62271723a9aa8451 +Block 0011 [125]: 1de12a522b1eb996 +Block 0011 [126]: 7da35ad6ff1aeaaf +Block 0011 [127]: 80d7af237c2acafa +Block 0012 [ 0]: bd6fecfb82bc40a9 +Block 0012 [ 1]: 83336a93ab307b70 +Block 0012 [ 2]: 8b23f98b36e3f85d +Block 0012 [ 3]: b765a38c83edc5d2 +Block 0012 [ 4]: 9c0952608e9e1b40 +Block 0012 [ 5]: c6b0b813dd3ff03f +Block 0012 [ 6]: 4e2f62beefb4ae56 +Block 0012 [ 7]: b5a4a8eebcf9d58e +Block 0012 [ 8]: ae17f59b432b6d88 +Block 0012 [ 9]: 32819dd91d5739f4 +Block 0012 [ 10]: aaf0a8106472cfdf +Block 0012 [ 11]: b19f65ec5f51d84e +Block 0012 [ 12]: 159148c18cb66a09 +Block 0012 [ 13]: 9d2b434c6c1553ac +Block 0012 [ 14]: a5cce2701e867af0 +Block 0012 [ 15]: a55e1618aca4da98 +Block 0012 [ 16]: 81da9e768512baca +Block 0012 [ 17]: 1292f9b1473da8ac +Block 0012 [ 18]: a49f71e94a278e39 +Block 0012 [ 19]: 7fbb53543ca895ef +Block 0012 [ 20]: 00301a0afcd2be7a +Block 0012 [ 21]: e28304111c2c7648 +Block 0012 [ 22]: cf67a24ec647f5ed +Block 0012 [ 23]: bbc3b2b582a87d95 +Block 0012 [ 24]: f452cd934124cc65 +Block 0012 [ 25]: 1d378de963be2060 +Block 0012 [ 26]: 5990d862ea81af34 +Block 0012 [ 27]: 76147c9b39f87a13 +Block 0012 [ 28]: c25f4d3aa4d724b4 +Block 0012 [ 29]: 8a2b3d742203141b +Block 0012 [ 30]: e79ce7830b1839a6 +Block 0012 [ 31]: 77fcf2032765debf +Block 0012 [ 32]: aac37411ed2339c7 +Block 0012 [ 33]: b9269cb3fa20e7c1 +Block 0012 [ 34]: bfe8f0953b80457d +Block 0012 [ 35]: b8d693d0a724ebde +Block 0012 [ 36]: 6f81188db5f1dd62 +Block 0012 [ 37]: 2809cc7ca199f651 +Block 0012 [ 38]: 9cfbf8589f28d12e +Block 0012 [ 39]: 2cf2ccfac3dc9548 +Block 0012 [ 40]: 46a60eae36e52610 +Block 0012 [ 41]: 8371bc8f910afac3 +Block 0012 [ 42]: c8ed9127942d2db9 +Block 0012 [ 43]: 2d1c0bb32a76a732 +Block 0012 [ 44]: 6d082794caa06a07 +Block 0012 [ 45]: 2a600fd1301dfb8d +Block 0012 [ 46]: 0546619fe6018911 +Block 0012 [ 47]: 3dfaf84e4bdbc93c +Block 0012 [ 48]: f351151625eb1c56 +Block 0012 [ 49]: 65ca506fc1b2b211 +Block 0012 [ 50]: f22083d6e4593f8c +Block 0012 [ 51]: 38a532e405c9cc85 +Block 0012 [ 52]: 130358836e4ab549 +Block 0012 [ 53]: b5da86cbccf9964a +Block 0012 [ 54]: 1a9bb7ccbe06b579 +Block 0012 [ 55]: 490244cc3d3ee5e7 +Block 0012 [ 56]: 05d16e1931499413 +Block 0012 [ 57]: c0f16d5307625a9c +Block 0012 [ 58]: dd5b60f8d3b6c265 +Block 0012 [ 59]: 5ffe40efc39b43d9 +Block 0012 [ 60]: 8a46a99cb2986022 +Block 0012 [ 61]: 59038865f9fa8ad6 +Block 0012 [ 62]: 07ee51e4a12d312b +Block 0012 [ 63]: 8c26838791d078b5 +Block 0012 [ 64]: e8f3197cfd8946a7 +Block 0012 [ 65]: 8cd3de9ec42e8dca +Block 0012 [ 66]: 0e2ed85ed54aa7a5 +Block 0012 [ 67]: b6db0d7dc497200e +Block 0012 [ 68]: d32cbf9e9d2ce91e +Block 0012 [ 69]: de0fd572d12a1bb3 +Block 0012 [ 70]: 0fd7b72104abff6d +Block 0012 [ 71]: f77a43e60b67290f +Block 0012 [ 72]: 3400c1aa61958019 +Block 0012 [ 73]: b15adcc92694b70b +Block 0012 [ 74]: fd03d78fa44ac635 +Block 0012 [ 75]: 6cbfe20764d6dee2 +Block 0012 [ 76]: 182992629853ad1d +Block 0012 [ 77]: 400a9ebcf07d8420 +Block 0012 [ 78]: 326a1b23b215ae73 +Block 0012 [ 79]: 21bcc4c98c55b193 +Block 0012 [ 80]: c8b40befa3dbfb04 +Block 0012 [ 81]: 9d21f41a2cdd84d3 +Block 0012 [ 82]: 0b544356ce4d4441 +Block 0012 [ 83]: bdd72d812505c333 +Block 0012 [ 84]: bb579d11cc3fbc7e +Block 0012 [ 85]: f3993400276d22c0 +Block 0012 [ 86]: 7f72b9c256b482e6 +Block 0012 [ 87]: 6a96d43928b6b630 +Block 0012 [ 88]: 6ae39cf21c9dab65 +Block 0012 [ 89]: a71321114a321bbc +Block 0012 [ 90]: 66252673668e98c8 +Block 0012 [ 91]: 545ae6fc8e6869ee +Block 0012 [ 92]: 6aa1d357b3bea674 +Block 0012 [ 93]: 0305780721fc75b9 +Block 0012 [ 94]: 9b43ff8046dfd073 +Block 0012 [ 95]: 1f8406fcab692e3a +Block 0012 [ 96]: 87b7db6bd68117bf +Block 0012 [ 97]: 0fed7932df8a7c02 +Block 0012 [ 98]: a2480d823634a1cb +Block 0012 [ 99]: 599396eb3193929d +Block 0012 [100]: aa9daa60b3ee560a +Block 0012 [101]: 412dce8bf4f87d2c +Block 0012 [102]: 3e36a5398694573f +Block 0012 [103]: d7fb28a0679bae3a +Block 0012 [104]: 3d74fea861251b70 +Block 0012 [105]: 516254cd2865cee0 +Block 0012 [106]: 9ce59d8bef9b81f0 +Block 0012 [107]: 97edabc40b358a34 +Block 0012 [108]: c1da8b2dcb42b386 +Block 0012 [109]: 979a59bb41a1c6f9 +Block 0012 [110]: 7f2ce7c8350d6481 +Block 0012 [111]: 01f6f97f063f3cfb +Block 0012 [112]: 93d99359d44b5995 +Block 0012 [113]: 6fda1427ad9ffed2 +Block 0012 [114]: 1f94a1f1e8ac2548 +Block 0012 [115]: 9ce14a580a564fc5 +Block 0012 [116]: 5cd702995eafaab5 +Block 0012 [117]: 13cddde717fe137c +Block 0012 [118]: 32bbc3e14f19743c +Block 0012 [119]: 18b8fee621b29a66 +Block 0012 [120]: 6d324f4418d8d341 +Block 0012 [121]: 1af85a9d05911cb7 +Block 0012 [122]: e58c08b75a16ef4e +Block 0012 [123]: 7eed498732243b2a +Block 0012 [124]: 85ddb6c93b244e3a +Block 0012 [125]: 04c79ec3b6abdacd +Block 0012 [126]: d6ace9220597ec2d +Block 0012 [127]: c58e5433f48ee38f +Block 0013 [ 0]: 469b89bf35144e2d +Block 0013 [ 1]: f1bb807bcbd5492b +Block 0013 [ 2]: 91b9c93c749f507e +Block 0013 [ 3]: c680ccabc457bed4 +Block 0013 [ 4]: a479230d83618dc8 +Block 0013 [ 5]: 3a608e4b91e578c8 +Block 0013 [ 6]: f82f5fb88c62c45f +Block 0013 [ 7]: 9c0c70469edc71a8 +Block 0013 [ 8]: 109f3d2e62f8507e +Block 0013 [ 9]: be32a740c6fbf047 +Block 0013 [ 10]: d3c4eb40218c412c +Block 0013 [ 11]: fd85ca2ebb4cb9cf +Block 0013 [ 12]: f51fa3e9aff33cb3 +Block 0013 [ 13]: c4a86dbc5b4c4e04 +Block 0013 [ 14]: c9b4794615050c61 +Block 0013 [ 15]: 4e0a7930c1e9d6f6 +Block 0013 [ 16]: 41c663d90a0b34f8 +Block 0013 [ 17]: 117a51022de13b30 +Block 0013 [ 18]: e7fc0de7e64d2538 +Block 0013 [ 19]: 2d52025217802c22 +Block 0013 [ 20]: 4318fc8296bced59 +Block 0013 [ 21]: 9d48c41ffd81ceff +Block 0013 [ 22]: 667b1c99880199ed +Block 0013 [ 23]: 5b990dcfcbaaf93b +Block 0013 [ 24]: f37f472db4b6f7e8 +Block 0013 [ 25]: cc1008a071e70d81 +Block 0013 [ 26]: 75b3f963a92d01d4 +Block 0013 [ 27]: 47f644f4261bbcd2 +Block 0013 [ 28]: b48fc438ace2ec49 +Block 0013 [ 29]: 82306b345782219c +Block 0013 [ 30]: 3ba907903f025346 +Block 0013 [ 31]: 7a18eec36db22089 +Block 0013 [ 32]: 6e55e2b6898aaa84 +Block 0013 [ 33]: e730cd439b6e94b1 +Block 0013 [ 34]: 4fec54842c67cb85 +Block 0013 [ 35]: 5deadada3303fa9f +Block 0013 [ 36]: 176d6e6e4d0f3488 +Block 0013 [ 37]: 8725266fd29e99ab +Block 0013 [ 38]: 9f125355c004d01c +Block 0013 [ 39]: dc36f29aa027f5a6 +Block 0013 [ 40]: 525bf4bf8fb5bec4 +Block 0013 [ 41]: 8557409bab69aa67 +Block 0013 [ 42]: 3008d95b6835faab +Block 0013 [ 43]: 2fa1b7395cde8d4e +Block 0013 [ 44]: 8c23ee445af43f01 +Block 0013 [ 45]: 0e34c44d2c3c956e +Block 0013 [ 46]: f3ff515c41428f14 +Block 0013 [ 47]: 4bbd10994aa53ade +Block 0013 [ 48]: 70897165253d8ef9 +Block 0013 [ 49]: e4aa8b7916923cf9 +Block 0013 [ 50]: 46e24ef1ac6bfff1 +Block 0013 [ 51]: bc5d31a2b82f30dd +Block 0013 [ 52]: f57c5c12eed9c220 +Block 0013 [ 53]: 099affa1a90bc96f +Block 0013 [ 54]: 50d24186a40277a2 +Block 0013 [ 55]: bdf6cb0a23ab150a +Block 0013 [ 56]: c6550fbbb31eea4f +Block 0013 [ 57]: f2eb00dbbf2f741b +Block 0013 [ 58]: 705d493f35a221eb +Block 0013 [ 59]: 18c759f8d7372759 +Block 0013 [ 60]: cd53295156bbdaf7 +Block 0013 [ 61]: 55fcd365dffd3f54 +Block 0013 [ 62]: 5d1acc769fa1de1f +Block 0013 [ 63]: 2cd1a56d595cd38f +Block 0013 [ 64]: 781c267f2589cee0 +Block 0013 [ 65]: ee1c09ef98a5a1f1 +Block 0013 [ 66]: 7a1bfb603c4dba63 +Block 0013 [ 67]: 34514bf06f413a08 +Block 0013 [ 68]: f0ab7003938a1476 +Block 0013 [ 69]: 8192f273377b379b +Block 0013 [ 70]: 47728ee5081aef9a +Block 0013 [ 71]: 3a401ef54a86e805 +Block 0013 [ 72]: 09a3e8653cf89a9c +Block 0013 [ 73]: de57c3623c7c6716 +Block 0013 [ 74]: 531ccbe06178e4b7 +Block 0013 [ 75]: 9e7ab5d7f66c58c0 +Block 0013 [ 76]: 41ee6347824a9aec +Block 0013 [ 77]: 802ba21600951c51 +Block 0013 [ 78]: 8405a2255deae3cf +Block 0013 [ 79]: c03511dda328b340 +Block 0013 [ 80]: c28d190bbf5cf177 +Block 0013 [ 81]: 73871fd8db5c3f7b +Block 0013 [ 82]: 9c334dd4281aab96 +Block 0013 [ 83]: 292f2dda3329e449 +Block 0013 [ 84]: 2f541a89b08cf4ba +Block 0013 [ 85]: a2ab80002dcca405 +Block 0013 [ 86]: db676901ecd0fa45 +Block 0013 [ 87]: 096dfe473e13e96f +Block 0013 [ 88]: 53968abdbe6e4572 +Block 0013 [ 89]: c6e7b422616906dd +Block 0013 [ 90]: edc199a6e9f6778a +Block 0013 [ 91]: 8ae900b4c954e50d +Block 0013 [ 92]: f9ee03ef99ef37b4 +Block 0013 [ 93]: 8a20e8e614c05e8e +Block 0013 [ 94]: ad858cea0b6610cf +Block 0013 [ 95]: 48501c603e178f3e +Block 0013 [ 96]: 8ac0979a7338a41b +Block 0013 [ 97]: 89d0a41b5373145e +Block 0013 [ 98]: ba71436efa6b897d +Block 0013 [ 99]: 56f2a1a0ca08e284 +Block 0013 [100]: 760e5e43697efd46 +Block 0013 [101]: bae77c1a65bef07e +Block 0013 [102]: 25e18714ea68d2a2 +Block 0013 [103]: b8ca56d1a6018956 +Block 0013 [104]: 342258dccc6a6d80 +Block 0013 [105]: d1a935f161a883de +Block 0013 [106]: 223aa5ec5f1311dd +Block 0013 [107]: fc66376a80e78e43 +Block 0013 [108]: b465c3b8933975b9 +Block 0013 [109]: 2b805a1aa85636c2 +Block 0013 [110]: 3bdbd379782a4213 +Block 0013 [111]: b3443e45eaeed777 +Block 0013 [112]: 48a458478a4e1fd5 +Block 0013 [113]: ce95d563b9d2580c +Block 0013 [114]: ba1750aa2c93bb7a +Block 0013 [115]: c0a849e80ac219c1 +Block 0013 [116]: f7df4f1ee48f8e2e +Block 0013 [117]: 0c80dc43de98a7d2 +Block 0013 [118]: 2659164c58c94cc5 +Block 0013 [119]: 4add333f8e5b70b4 +Block 0013 [120]: 7ef8625419224a9f +Block 0013 [121]: 9438a803327d4709 +Block 0013 [122]: e52835e1e39dd129 +Block 0013 [123]: f703ee0b9232369c +Block 0013 [124]: ec1e4f18f2f11ef6 +Block 0013 [125]: a46901c0035eedd2 +Block 0013 [126]: 0cd3fcc9c81a85be +Block 0013 [127]: 1ebc5566d5fc58f6 +Block 0014 [ 0]: a6fd444da23d6e1c +Block 0014 [ 1]: 27d5f1f2edfa9804 +Block 0014 [ 2]: 049fe0712c2aabc8 +Block 0014 [ 3]: 83379947d2bd63e1 +Block 0014 [ 4]: 8c54d252f69aafae +Block 0014 [ 5]: e008c186c409521d +Block 0014 [ 6]: 8a4dd58902b9065d +Block 0014 [ 7]: 171da5b5d4ca2c54 +Block 0014 [ 8]: 47d296bbaffac7ca +Block 0014 [ 9]: 4245e46959d2ba01 +Block 0014 [ 10]: 0cd6fd7bed88782a +Block 0014 [ 11]: 789f688d25adb3ba +Block 0014 [ 12]: cfa2969bd35cdb01 +Block 0014 [ 13]: 8147baf43054c3c3 +Block 0014 [ 14]: f28980a5b7a66642 +Block 0014 [ 15]: 379842f855193f71 +Block 0014 [ 16]: 167618251bf12e1a +Block 0014 [ 17]: 3de4a36244acda65 +Block 0014 [ 18]: ff9e1b243a00498e +Block 0014 [ 19]: da067a939b699e93 +Block 0014 [ 20]: fafa959c3af548a9 +Block 0014 [ 21]: cd7fb142db37d651 +Block 0014 [ 22]: 57a08b06b92fe762 +Block 0014 [ 23]: f8f217cf85858346 +Block 0014 [ 24]: c633ded2a0a87279 +Block 0014 [ 25]: e9ae9e18c6a2185b +Block 0014 [ 26]: 7798a758f4c08d73 +Block 0014 [ 27]: 4dac706917b3a0e0 +Block 0014 [ 28]: 17f25c21df6f6ad8 +Block 0014 [ 29]: 72b898b7b31cf4d2 +Block 0014 [ 30]: 0fcdc820916a5f0d +Block 0014 [ 31]: f04a3dd5a97dec99 +Block 0014 [ 32]: 9266960d1846ae17 +Block 0014 [ 33]: 67bdcd5d02ce1ec5 +Block 0014 [ 34]: edc1a704aadbfce9 +Block 0014 [ 35]: 60605d2cf5826657 +Block 0014 [ 36]: 66a1abe201545d43 +Block 0014 [ 37]: c416a25c6add6379 +Block 0014 [ 38]: 14edd341150ffe0f +Block 0014 [ 39]: eb0a69d9692d422e +Block 0014 [ 40]: 5edc64141f3fe535 +Block 0014 [ 41]: 5517f8af8e63cfb0 +Block 0014 [ 42]: 6496e3427f0b72b4 +Block 0014 [ 43]: 533584b066c29739 +Block 0014 [ 44]: 5ef672ef52028670 +Block 0014 [ 45]: a3a73a265b5b4c68 +Block 0014 [ 46]: c317a90bed56f97f +Block 0014 [ 47]: b25eaa412e6826bf +Block 0014 [ 48]: c33ca6840a8f4a20 +Block 0014 [ 49]: 22ba3746a5d7c617 +Block 0014 [ 50]: f8d75f32795a920c +Block 0014 [ 51]: de36310091fe3fc4 +Block 0014 [ 52]: 8cd740bf21c74f09 +Block 0014 [ 53]: 1b06579f7fcc666c +Block 0014 [ 54]: 8ccc6d4c75062885 +Block 0014 [ 55]: 43fd4b36fb0f01e5 +Block 0014 [ 56]: f8a2253f4de60237 +Block 0014 [ 57]: a3a34bec7464896d +Block 0014 [ 58]: c7263f2c186fe862 +Block 0014 [ 59]: 52dbd94463c3e89d +Block 0014 [ 60]: 1bfb2ad7a5da2dcb +Block 0014 [ 61]: 242b1455089cb5e3 +Block 0014 [ 62]: 537f4c68e83e9592 +Block 0014 [ 63]: aa12ee9c267fbf0f +Block 0014 [ 64]: e1c90243ff1558fc +Block 0014 [ 65]: a3ec1df790d1dd94 +Block 0014 [ 66]: 839102ed6415bdcc +Block 0014 [ 67]: 41a1eb33046c79b4 +Block 0014 [ 68]: 70162541518db319 +Block 0014 [ 69]: 9e4a9ff2379777d2 +Block 0014 [ 70]: cd976546ac02b98c +Block 0014 [ 71]: e4d3c3e4d7bafa9c +Block 0014 [ 72]: 3006682d1102cd1e +Block 0014 [ 73]: 2dda21061d60eeb0 +Block 0014 [ 74]: be8a8a034b76bea0 +Block 0014 [ 75]: 41d84a746d71ab65 +Block 0014 [ 76]: 207ce30627e15f10 +Block 0014 [ 77]: fdf84363bc87a648 +Block 0014 [ 78]: c936d95a70ffc7e5 +Block 0014 [ 79]: b3827987cc12c8e0 +Block 0014 [ 80]: 1c9e093a8100d421 +Block 0014 [ 81]: cb08d8230707442f +Block 0014 [ 82]: a5030a8c92aa863e +Block 0014 [ 83]: aae38d609e0109b2 +Block 0014 [ 84]: 5eceb17f9447a99c +Block 0014 [ 85]: dbd9d5ee531b610b +Block 0014 [ 86]: 99711e89db1680b1 +Block 0014 [ 87]: 4f7a10b757cb608f +Block 0014 [ 88]: 68658d34dc7e94fb +Block 0014 [ 89]: 440eeb626787c17e +Block 0014 [ 90]: dc279af3228c0353 +Block 0014 [ 91]: 1dac0a35211d14ef +Block 0014 [ 92]: 33bfe237745a88be +Block 0014 [ 93]: f30c62a742b86288 +Block 0014 [ 94]: 343cfd6104f75999 +Block 0014 [ 95]: 931344dad6051583 +Block 0014 [ 96]: 1ce3c8aba7af78e3 +Block 0014 [ 97]: 27a53fdba01abe2f +Block 0014 [ 98]: 6b3a5a9d94b13792 +Block 0014 [ 99]: f2255279896284a1 +Block 0014 [100]: db937dc3e2711431 +Block 0014 [101]: 4320a35809367826 +Block 0014 [102]: 0b7cc7006e18961b +Block 0014 [103]: 498eedf7ae16de25 +Block 0014 [104]: 9ed3fd7b3616d7c5 +Block 0014 [105]: 2f215d99735d5724 +Block 0014 [106]: 3846a13d7f2189da +Block 0014 [107]: f0911c31c8b28468 +Block 0014 [108]: 6f905c811b277595 +Block 0014 [109]: 5b6b45083eecca78 +Block 0014 [110]: 30b9c29f7c5fa245 +Block 0014 [111]: ac8f586b04386777 +Block 0014 [112]: a774d9b1a99dff6e +Block 0014 [113]: 4e1aade50867b4df +Block 0014 [114]: 05056826da07617e +Block 0014 [115]: cfd596b007b261a1 +Block 0014 [116]: 2fb87c6b4b19e672 +Block 0014 [117]: dc7a50615db0941f +Block 0014 [118]: 5ad371dd8bbb2d82 +Block 0014 [119]: 7a0a4565560fcf8e +Block 0014 [120]: 8edfdbb2246844e5 +Block 0014 [121]: 78cba762a604171c +Block 0014 [122]: d4d5140c608e25fd +Block 0014 [123]: e9b7a0f411af0178 +Block 0014 [124]: 495579fde5795935 +Block 0014 [125]: 98e91ae67903df3a +Block 0014 [126]: fb858d0ce6815c77 +Block 0014 [127]: abf9a3b4783b95b9 +Block 0015 [ 0]: 48f1ac950cf3881c +Block 0015 [ 1]: eaf883ea6cf90acd +Block 0015 [ 2]: b2abd6966dde13e6 +Block 0015 [ 3]: 1c1dbd963e509e80 +Block 0015 [ 4]: 99bfefb56bcc8b5b +Block 0015 [ 5]: 91b695442100a299 +Block 0015 [ 6]: d83bece1229baf44 +Block 0015 [ 7]: fbce75e4f69616ef +Block 0015 [ 8]: 8c4c204a54ea028d +Block 0015 [ 9]: 6e6afa1b87e5a778 +Block 0015 [ 10]: 32a41c52296d6509 +Block 0015 [ 11]: d76d7f53b02b548b +Block 0015 [ 12]: 317a97a4e29484ae +Block 0015 [ 13]: 49b5a36d87c27964 +Block 0015 [ 14]: 39ea0bdaf61f37c3 +Block 0015 [ 15]: 9e9152c38d3e5f91 +Block 0015 [ 16]: 71416bda681eb455 +Block 0015 [ 17]: d0a7c1a1d26677c7 +Block 0015 [ 18]: e663c0641e7f5e4e +Block 0015 [ 19]: 4553876046389bb4 +Block 0015 [ 20]: 3cde6995f45a4871 +Block 0015 [ 21]: 52de8d0ebc9f2d28 +Block 0015 [ 22]: 60cd90051fb84a8c +Block 0015 [ 23]: e185ea6d7388200b +Block 0015 [ 24]: 8d7d7020905d621a +Block 0015 [ 25]: 900bec536616cc0f +Block 0015 [ 26]: 283f8b890d0ae676 +Block 0015 [ 27]: 680bb488f2b0c5ba +Block 0015 [ 28]: 605284785bf2f48f +Block 0015 [ 29]: 66f88983aa442e96 +Block 0015 [ 30]: 335863bf15240c60 +Block 0015 [ 31]: 75e73ea0b669185d +Block 0015 [ 32]: 5afe255a49284d18 +Block 0015 [ 33]: 42d132c12033b815 +Block 0015 [ 34]: 768745082542997a +Block 0015 [ 35]: 3eaaadd309f971dc +Block 0015 [ 36]: 60063eab924ef931 +Block 0015 [ 37]: f64bdc7714548239 +Block 0015 [ 38]: b72beb1f7a4047bc +Block 0015 [ 39]: a0180a0fe772d833 +Block 0015 [ 40]: 555207f87100a775 +Block 0015 [ 41]: 348ac5544e3e12c2 +Block 0015 [ 42]: c549140299b026c3 +Block 0015 [ 43]: f3658936873c5eba +Block 0015 [ 44]: 49ff7a8cd84acebc +Block 0015 [ 45]: fe9706b4679eae94 +Block 0015 [ 46]: 0abfa68ea8bc7995 +Block 0015 [ 47]: e04df13b96469667 +Block 0015 [ 48]: d2509b6a6f172a1e +Block 0015 [ 49]: 3f98700992a85d42 +Block 0015 [ 50]: 37d15e6350f1fcf2 +Block 0015 [ 51]: 6a4bedc47ff0824d +Block 0015 [ 52]: 70f4fe2199d457ff +Block 0015 [ 53]: 2c352f913ad00226 +Block 0015 [ 54]: 80ec73821a01a1b7 +Block 0015 [ 55]: 52f144a2b92a0b8b +Block 0015 [ 56]: 8cb51546d7a50169 +Block 0015 [ 57]: b11c13a15ec5255d +Block 0015 [ 58]: deaccaa72dfd73e6 +Block 0015 [ 59]: c0d8ff50d1a70a84 +Block 0015 [ 60]: 063070a7a03bf4c5 +Block 0015 [ 61]: 90aa76c10d2f3dcd +Block 0015 [ 62]: b3ea5c879e1b8f69 +Block 0015 [ 63]: 06d58d40b299fff5 +Block 0015 [ 64]: f0906a0cbb014658 +Block 0015 [ 65]: 03fb6e4c776e4e6b +Block 0015 [ 66]: 341efc293b930c6a +Block 0015 [ 67]: 8c3495057d757b46 +Block 0015 [ 68]: af0b9102cb848408 +Block 0015 [ 69]: 4a61c0921fbfdb02 +Block 0015 [ 70]: d3a97a49364fcc87 +Block 0015 [ 71]: d89c0d1eaef9131c +Block 0015 [ 72]: f4ee9aa2027b0a0e +Block 0015 [ 73]: 7af4d9b428349614 +Block 0015 [ 74]: 71ff65de539e5a82 +Block 0015 [ 75]: 8f83a497e1669ac7 +Block 0015 [ 76]: 825661a2b539797e +Block 0015 [ 77]: 391f3e236e22d860 +Block 0015 [ 78]: 5bd028a09b96c6b8 +Block 0015 [ 79]: d03b3abd6c7bd98b +Block 0015 [ 80]: b218c3cff8ca229a +Block 0015 [ 81]: 449e748579dd114a +Block 0015 [ 82]: e75e5765ec0ef4eb +Block 0015 [ 83]: 927a53763eb52763 +Block 0015 [ 84]: eb31bea6ac58be13 +Block 0015 [ 85]: 3f9e0b6243e43d9c +Block 0015 [ 86]: 7d36ccb527d2f47c +Block 0015 [ 87]: 2e6737d2ac42f8a4 +Block 0015 [ 88]: 6be4965ce76dcf99 +Block 0015 [ 89]: 5266eb13b7c0fb67 +Block 0015 [ 90]: bc4a02952a5c891e +Block 0015 [ 91]: 652f04e1955a0cb2 +Block 0015 [ 92]: 94a422e3d810af83 +Block 0015 [ 93]: 00952c083000917f +Block 0015 [ 94]: 14a67f3032a00925 +Block 0015 [ 95]: 69f7e91255059cd0 +Block 0015 [ 96]: 5a708dd19514a98f +Block 0015 [ 97]: 91316fabb0d60317 +Block 0015 [ 98]: 687b66014c5a7015 +Block 0015 [ 99]: 8ad7ed6406b0f002 +Block 0015 [100]: 1dfbff523447315d +Block 0015 [101]: 4c896e08bd7477bd +Block 0015 [102]: 1665790a010701f7 +Block 0015 [103]: 2dc97780c92719db +Block 0015 [104]: 404cc7858d36f9f1 +Block 0015 [105]: ca5feabd4fd0c204 +Block 0015 [106]: 2cabce3fa772a19d +Block 0015 [107]: b877c257103bf937 +Block 0015 [108]: 5f9ea2426ce35573 +Block 0015 [109]: e6845f8d690e983d +Block 0015 [110]: de3d1d493abb9fbd +Block 0015 [111]: 82371cfa0ff53dd6 +Block 0015 [112]: 3336ba8f5026315f +Block 0015 [113]: 8110fe8c4a0ec071 +Block 0015 [114]: abefc53ff83604ed +Block 0015 [115]: 432543ba9c4c5317 +Block 0015 [116]: 1c9ffaa7191280d0 +Block 0015 [117]: b822a777b82ae96e +Block 0015 [118]: 3c0200fd356b34a8 +Block 0015 [119]: 78702afdbecd0848 +Block 0015 [120]: ceb5463bb7e4c860 +Block 0015 [121]: d779daa42cbece71 +Block 0015 [122]: 0f648209e29f3ee7 +Block 0015 [123]: 7ae6b67331d4cd58 +Block 0015 [124]: 5ec5eff47f3c7ded +Block 0015 [125]: c0f9dd6c59ff0521 +Block 0015 [126]: 6dbda1415a779a2f +Block 0015 [127]: 6fae8d18b407e040 +Block 0016 [ 0]: 710cfaf0bee662a5 +Block 0016 [ 1]: 6912d7353809b4ec +Block 0016 [ 2]: f75afc8a20e77848 +Block 0016 [ 3]: ad2ce00df7907bc6 +Block 0016 [ 4]: d8609558c4656b32 +Block 0016 [ 5]: df01d7192f02d6ad +Block 0016 [ 6]: 352b6d394b14dcd7 +Block 0016 [ 7]: 8c2959de89207bbe +Block 0016 [ 8]: 23dfe7c79c0babe3 +Block 0016 [ 9]: 681ddaa5b4076422 +Block 0016 [ 10]: 97a39739ef278fa6 +Block 0016 [ 11]: f595186e3f7cfb95 +Block 0016 [ 12]: fd8237458bedd057 +Block 0016 [ 13]: 5af3ccf518f8a6a9 +Block 0016 [ 14]: b4e2d70622b28ad2 +Block 0016 [ 15]: 9c9d445d0fc67760 +Block 0016 [ 16]: fe51b49a33018412 +Block 0016 [ 17]: a64f16fe32b4663c +Block 0016 [ 18]: 8e00e12bdb7129df +Block 0016 [ 19]: f7ff04584b60c14f +Block 0016 [ 20]: 974549315b64ae56 +Block 0016 [ 21]: d2e2f3bad2f3c964 +Block 0016 [ 22]: 2ad09f40f62e916c +Block 0016 [ 23]: 834c123230fda32f +Block 0016 [ 24]: da3f268010f0ae2d +Block 0016 [ 25]: af77c72c041a267a +Block 0016 [ 26]: 0da0f22e2ab41b36 +Block 0016 [ 27]: ac4bb65a75a868ed +Block 0016 [ 28]: c07e1215f30f9b25 +Block 0016 [ 29]: fe9c83043786499d +Block 0016 [ 30]: 4156d45c9c90cda3 +Block 0016 [ 31]: a8ec3559f62350e4 +Block 0016 [ 32]: 7f30e5cb02bfe5fa +Block 0016 [ 33]: 0f6c1b3fdbaaf663 +Block 0016 [ 34]: b997ddb2b173d5eb +Block 0016 [ 35]: 19127cee6480525a +Block 0016 [ 36]: 397a7b2b5255dc3a +Block 0016 [ 37]: f605ad9c1aaa7ed5 +Block 0016 [ 38]: 05d03ece38045455 +Block 0016 [ 39]: d4d5d65162bcca6e +Block 0016 [ 40]: 3cb61f380c80a889 +Block 0016 [ 41]: 17d299f871ec5ea4 +Block 0016 [ 42]: 693b37025942dfd6 +Block 0016 [ 43]: c6c05c5b0dc9e3e8 +Block 0016 [ 44]: 4303937541762ac5 +Block 0016 [ 45]: 3abafd38ef6245ee +Block 0016 [ 46]: 4bc1936e70418b04 +Block 0016 [ 47]: 25f7c72049559b67 +Block 0016 [ 48]: a977bc3194d89a91 +Block 0016 [ 49]: 471fac0934c45a12 +Block 0016 [ 50]: 78804b9bc54e8573 +Block 0016 [ 51]: 295f435d98ee06f9 +Block 0016 [ 52]: 6a32dc0811626e3b +Block 0016 [ 53]: c4db418d2dc47928 +Block 0016 [ 54]: 577ba22ecf5d231a +Block 0016 [ 55]: 28482d1a3153e0f4 +Block 0016 [ 56]: b42b7f05d45a65e8 +Block 0016 [ 57]: 1e242452db0744f4 +Block 0016 [ 58]: d97329be8474cd63 +Block 0016 [ 59]: 7cf9eff8edd07327 +Block 0016 [ 60]: 9f13cceab620d429 +Block 0016 [ 61]: f28a3026dd1db08f +Block 0016 [ 62]: 1c856cac60b6ab53 +Block 0016 [ 63]: a65279bd15d7f9a9 +Block 0016 [ 64]: 803fefc16404a710 +Block 0016 [ 65]: abe288e325cb7802 +Block 0016 [ 66]: d805bdfcc44040ae +Block 0016 [ 67]: 3ddeb139a7a0ed25 +Block 0016 [ 68]: f70cf79756da13a3 +Block 0016 [ 69]: 973f68ed071dbb8a +Block 0016 [ 70]: f3a939066cd21bc9 +Block 0016 [ 71]: b88d5fa30a1bab23 +Block 0016 [ 72]: 72227642f90106d4 +Block 0016 [ 73]: 7881a0e385380ebd +Block 0016 [ 74]: 04fc2c77bab1f4e7 +Block 0016 [ 75]: 9bebb3381fd536e3 +Block 0016 [ 76]: ef66d65a4a6050ab +Block 0016 [ 77]: a0c9b8785e782343 +Block 0016 [ 78]: a47023641507e262 +Block 0016 [ 79]: 465731861624687d +Block 0016 [ 80]: 2ae9549efc699fa5 +Block 0016 [ 81]: 6a15176ff48c36e5 +Block 0016 [ 82]: 82b481f1af0802e4 +Block 0016 [ 83]: b8c2d24bef0b79e5 +Block 0016 [ 84]: 269962820b63ad6b +Block 0016 [ 85]: e8d57e0ce2d8fa9b +Block 0016 [ 86]: d7fa415b4526ff7d +Block 0016 [ 87]: fafefe6b65041c41 +Block 0016 [ 88]: bfdef0334b2045a2 +Block 0016 [ 89]: feedd024bc36e30f +Block 0016 [ 90]: 20f45c92eb155f9c +Block 0016 [ 91]: 871efb3f3f90dbcd +Block 0016 [ 92]: 521a292c3cb15113 +Block 0016 [ 93]: 38662f1474beb8c1 +Block 0016 [ 94]: 69b8e7fc0ac12eed +Block 0016 [ 95]: 6ccfa59f401331ea +Block 0016 [ 96]: db7ad7c040889c92 +Block 0016 [ 97]: e0b3515aef70da17 +Block 0016 [ 98]: 529d53c2147f38f6 +Block 0016 [ 99]: 22c0f0ab0f5153d9 +Block 0016 [100]: e3a1e05598ad1072 +Block 0016 [101]: e0b0d28ad8a3e7eb +Block 0016 [102]: 7f68b2c84d2af77b +Block 0016 [103]: 466cc2bb5864b911 +Block 0016 [104]: ee63ea577f1f4e3f +Block 0016 [105]: 41ccb035b33684e4 +Block 0016 [106]: d90e6188131d652c +Block 0016 [107]: b13d24b082aca657 +Block 0016 [108]: 286d91f7dae701f6 +Block 0016 [109]: 7ddff979b2863b0d +Block 0016 [110]: 29b0f3577ed4f54d +Block 0016 [111]: e7b2fc6f93e22cd4 +Block 0016 [112]: 481aa7ea963c8277 +Block 0016 [113]: 5bbfd2c5c401194a +Block 0016 [114]: 773fa381b1d58f24 +Block 0016 [115]: fcdd4ac68cf673f4 +Block 0016 [116]: c2e5d48aee88b451 +Block 0016 [117]: 96ee1b09d99bac93 +Block 0016 [118]: f594138e33640e81 +Block 0016 [119]: e33f50e896cbcddb +Block 0016 [120]: d81f98bb8eecfdaf +Block 0016 [121]: ec31d99173fb77a4 +Block 0016 [122]: f2acc3b6fb255414 +Block 0016 [123]: bfef242337128b14 +Block 0016 [124]: bb663dc0e3338f7b +Block 0016 [125]: f49c51621d4201cb +Block 0016 [126]: e53c1fedd3052913 +Block 0016 [127]: ed6a6fe4f31cecdf +Block 0017 [ 0]: 952aece0f16fb3b6 +Block 0017 [ 1]: c94589dd7551b542 +Block 0017 [ 2]: be3fd2c66132daa4 +Block 0017 [ 3]: 81c48a0b3f2de2bc +Block 0017 [ 4]: 9ac5a66a083de3a1 +Block 0017 [ 5]: 17ec452a15738cf9 +Block 0017 [ 6]: 56671b153c50b567 +Block 0017 [ 7]: a738f66fc6633cd6 +Block 0017 [ 8]: e2f5b4c00b04b715 +Block 0017 [ 9]: 3cb7271c9e33787a +Block 0017 [ 10]: 4afb98c129a9ba81 +Block 0017 [ 11]: 401f1034d0cdcef6 +Block 0017 [ 12]: b3efedcb63fd0b52 +Block 0017 [ 13]: 4ca2a7602ee2abc3 +Block 0017 [ 14]: 7e220a5a8e56f8f4 +Block 0017 [ 15]: 627b16f115ab64b3 +Block 0017 [ 16]: 9005adb61ec4d578 +Block 0017 [ 17]: a40878f747dc0488 +Block 0017 [ 18]: 716efca0eefef3fb +Block 0017 [ 19]: 267e4dd2ce4a37d4 +Block 0017 [ 20]: 1852a3b61229cd4b +Block 0017 [ 21]: d9e05bec5abb0cfb +Block 0017 [ 22]: 809000e0ce09670a +Block 0017 [ 23]: f63651bc886e9b53 +Block 0017 [ 24]: 6618b2ab81b879b1 +Block 0017 [ 25]: 1c47da92a5d1c8c9 +Block 0017 [ 26]: 783113941e83d8da +Block 0017 [ 27]: 78201466eedd7fe9 +Block 0017 [ 28]: 89d3b3aa0c047056 +Block 0017 [ 29]: ddd16957defe030d +Block 0017 [ 30]: db81dbb7545aacfc +Block 0017 [ 31]: 80932e26f6ac5e56 +Block 0017 [ 32]: d590d512dec1e8bc +Block 0017 [ 33]: 22d20bd8220c4073 +Block 0017 [ 34]: 7f7993cab07534c6 +Block 0017 [ 35]: d738bd5c4c396610 +Block 0017 [ 36]: 15f88e3db0cd588f +Block 0017 [ 37]: b297a18e99f05f81 +Block 0017 [ 38]: d2fcbe03ca586a9f +Block 0017 [ 39]: da08c038b2aa3bef +Block 0017 [ 40]: 5a190360d985b628 +Block 0017 [ 41]: 41b215e0ed7bb415 +Block 0017 [ 42]: b38b27298d8dd9da +Block 0017 [ 43]: 011f566449fdc64c +Block 0017 [ 44]: 70367da514bde68d +Block 0017 [ 45]: 663e8093c3095c2d +Block 0017 [ 46]: 4872581648e38cf3 +Block 0017 [ 47]: a24469e0e2bb9daa +Block 0017 [ 48]: 95f032b49673e322 +Block 0017 [ 49]: ac1b38e53d2fb7c9 +Block 0017 [ 50]: 9179c042a54419a1 +Block 0017 [ 51]: f754d6e4ba540299 +Block 0017 [ 52]: fd2c6f8f49d6b42d +Block 0017 [ 53]: 5afa29c2f36e9a2f +Block 0017 [ 54]: ac740f84ffaca274 +Block 0017 [ 55]: 7e0fd8c31320c792 +Block 0017 [ 56]: 9b16d4d7fc190110 +Block 0017 [ 57]: a49b6f07283e4e86 +Block 0017 [ 58]: 040b686ee5047205 +Block 0017 [ 59]: 8aed40cb6e27e3eb +Block 0017 [ 60]: 4ca31b9fd4606d5f +Block 0017 [ 61]: 74c87970a65f8356 +Block 0017 [ 62]: 1eb1d933307076b2 +Block 0017 [ 63]: 304aa86fa95d0ee4 +Block 0017 [ 64]: cfb6cbac1b17beee +Block 0017 [ 65]: 2661f3e0b33a5a4d +Block 0017 [ 66]: 18e500d1ef4fd8bc +Block 0017 [ 67]: 9afec62590f199db +Block 0017 [ 68]: 26e4843c77db29e4 +Block 0017 [ 69]: 91603b76ec35253b +Block 0017 [ 70]: 1756708a5280549d +Block 0017 [ 71]: ca5eaeed94c69c73 +Block 0017 [ 72]: 2ca3c6040c38b167 +Block 0017 [ 73]: 3013413ecde7db9a +Block 0017 [ 74]: a0691438772206c4 +Block 0017 [ 75]: 06561b5f445b5b51 +Block 0017 [ 76]: 0d197b9980a81b16 +Block 0017 [ 77]: e71cd08afa96a69c +Block 0017 [ 78]: 71d606b12ccac9c4 +Block 0017 [ 79]: 8b80d848ff657dbc +Block 0017 [ 80]: 1ef4e7aa2eb67ca1 +Block 0017 [ 81]: fd3cbb5c194e156a +Block 0017 [ 82]: 943b8a9eea7c81d8 +Block 0017 [ 83]: fdba08a52c123357 +Block 0017 [ 84]: 282d371eace2eca3 +Block 0017 [ 85]: 44ddb3bc4d49b335 +Block 0017 [ 86]: a86a22dd6190e990 +Block 0017 [ 87]: 85a33224357364fa +Block 0017 [ 88]: ed80d83fc228f476 +Block 0017 [ 89]: ac8539c903ad25ae +Block 0017 [ 90]: 2face77d2e2c1eb8 +Block 0017 [ 91]: 4aed4cbac77719fd +Block 0017 [ 92]: 89ae974f79cf3813 +Block 0017 [ 93]: 6cd3ac7cab276e7f +Block 0017 [ 94]: d32cf45b417879f7 +Block 0017 [ 95]: 1b5e429dc8b9b907 +Block 0017 [ 96]: 6bf3ebfe54c463d6 +Block 0017 [ 97]: 92b310b3afe0e8b8 +Block 0017 [ 98]: 39f4fb9b656899c6 +Block 0017 [ 99]: 5235703fecb3f167 +Block 0017 [100]: 9ea64cd88ba4357b +Block 0017 [101]: ea54ed9dbe94c8ff +Block 0017 [102]: c5cea8ee03f01ecb +Block 0017 [103]: 0f3640c69fedd57d +Block 0017 [104]: 36aefd6f034c6728 +Block 0017 [105]: b44915a3339efeb6 +Block 0017 [106]: d0bb17f934bc2700 +Block 0017 [107]: 983ad4dd718a532e +Block 0017 [108]: 35be08b039710fb5 +Block 0017 [109]: 38acd5446171ca7d +Block 0017 [110]: ec2ecb38c65e8336 +Block 0017 [111]: ef3da5eac5cc16bb +Block 0017 [112]: bfef6c86c428166d +Block 0017 [113]: 7d7f878381f100da +Block 0017 [114]: 36537e58dbe2ef59 +Block 0017 [115]: 53a2a7328158b0b0 +Block 0017 [116]: e5a265a5833444c0 +Block 0017 [117]: a523477bb35aed86 +Block 0017 [118]: 820aead8675755b4 +Block 0017 [119]: 1599320a5cd31db5 +Block 0017 [120]: 1e2832448cafe90e +Block 0017 [121]: fc80c971ff3a0716 +Block 0017 [122]: 05c122688dc31dc4 +Block 0017 [123]: 7e1d0c1c98f81cb3 +Block 0017 [124]: 8931b0cb5450a64b +Block 0017 [125]: 8f1db3816e6d618b +Block 0017 [126]: 0ed498b9dd789b3c +Block 0017 [127]: c125a3023d2920de +Block 0018 [ 0]: 8fabded4e0f2a1e4 +Block 0018 [ 1]: 68d45e22ed92b46d +Block 0018 [ 2]: c71a5ed100fc0449 +Block 0018 [ 3]: 7280db58709e201d +Block 0018 [ 4]: 9bbba222ee9a909b +Block 0018 [ 5]: d104738019223045 +Block 0018 [ 6]: e79cf9aecc636fd5 +Block 0018 [ 7]: 0c3e482363104c2e +Block 0018 [ 8]: 168dea4b19461c22 +Block 0018 [ 9]: 0a430224f27650db +Block 0018 [ 10]: 5876a9465dff7324 +Block 0018 [ 11]: cd5bdc51f16cdc6a +Block 0018 [ 12]: f7485bceab705b14 +Block 0018 [ 13]: 0194df9b6c93fdee +Block 0018 [ 14]: 64c4504f4cad09b6 +Block 0018 [ 15]: 39cb64e258fc4c55 +Block 0018 [ 16]: b6be51ba477832fb +Block 0018 [ 17]: a67ce79038849bc7 +Block 0018 [ 18]: 3fe1784e2a94738f +Block 0018 [ 19]: c3a849b6a92cfcfa +Block 0018 [ 20]: fcc82176f80498c2 +Block 0018 [ 21]: 263341b189902b6e +Block 0018 [ 22]: 417defc8c7f8f3c9 +Block 0018 [ 23]: f6644368b34df787 +Block 0018 [ 24]: ec2a2afb635a3784 +Block 0018 [ 25]: 0b701ff950a6425a +Block 0018 [ 26]: 9050f2cf14974fc1 +Block 0018 [ 27]: eabdb9008b5d7451 +Block 0018 [ 28]: 87294049cce968f8 +Block 0018 [ 29]: 3229fd9d6e0208d4 +Block 0018 [ 30]: 2711963d8828f89d +Block 0018 [ 31]: a36db7b573f46447 +Block 0018 [ 32]: adb0af4d022fde58 +Block 0018 [ 33]: 1ae6dfe87b9c72d0 +Block 0018 [ 34]: a84b81e0c9d4b3a3 +Block 0018 [ 35]: 2b938f9ba0f08d63 +Block 0018 [ 36]: 3636e2dbc0451bc0 +Block 0018 [ 37]: 4296eb63bdc8dbed +Block 0018 [ 38]: 55b9f09671453ea8 +Block 0018 [ 39]: ff7c0de03e212c77 +Block 0018 [ 40]: 4fe5bc2a5b762094 +Block 0018 [ 41]: aea3348becc82a97 +Block 0018 [ 42]: a0a6f19496037fd6 +Block 0018 [ 43]: 08f83b9ee8b1aec9 +Block 0018 [ 44]: c603a7b74d79d52d +Block 0018 [ 45]: 25bc006f70c29714 +Block 0018 [ 46]: 781425263a5ee427 +Block 0018 [ 47]: da4a74361607728d +Block 0018 [ 48]: dc6e928f3fcecee9 +Block 0018 [ 49]: a4e0922764d6f97f +Block 0018 [ 50]: 230b19a966032ca7 +Block 0018 [ 51]: e11298c93942a1f0 +Block 0018 [ 52]: 15a770dff2136cb8 +Block 0018 [ 53]: b99ec484f91812de +Block 0018 [ 54]: a2f500db72ef0d4e +Block 0018 [ 55]: c452e832489cccd3 +Block 0018 [ 56]: b55fbd3ae1cd35d4 +Block 0018 [ 57]: c74f7c32d7acb75f +Block 0018 [ 58]: 164e2f10659a683f +Block 0018 [ 59]: 9eb1438025013929 +Block 0018 [ 60]: 7899f290de335c1f +Block 0018 [ 61]: 18901b574e91a434 +Block 0018 [ 62]: a2a6f1685e526f95 +Block 0018 [ 63]: 077130043c8eda1b +Block 0018 [ 64]: cde5f3f6fb439b5a +Block 0018 [ 65]: b2e556df38615dc4 +Block 0018 [ 66]: b15ac399f94a6ff6 +Block 0018 [ 67]: c9647f6c2465eb54 +Block 0018 [ 68]: 3dfa14a29e41088d +Block 0018 [ 69]: 5e9712b7ec261592 +Block 0018 [ 70]: 9bbd51d4b33f949a +Block 0018 [ 71]: 10ac40fab5131993 +Block 0018 [ 72]: 91d646159065a62d +Block 0018 [ 73]: 3fbc0be21b7cedf9 +Block 0018 [ 74]: d6693caf5b42f0e4 +Block 0018 [ 75]: ae9de9793e268970 +Block 0018 [ 76]: 3c53254b71f4fa2d +Block 0018 [ 77]: 55b9ba93b4d18f36 +Block 0018 [ 78]: 2bb3e1e9c076965b +Block 0018 [ 79]: 45d215bb3c731484 +Block 0018 [ 80]: c3944831932612a0 +Block 0018 [ 81]: 7fd4c8b7fa48ffaa +Block 0018 [ 82]: ec86027bbdf08fe2 +Block 0018 [ 83]: c8a4d2c4a28d0b45 +Block 0018 [ 84]: 795c2d1e57a61e77 +Block 0018 [ 85]: 92bf81b1f4d87b5a +Block 0018 [ 86]: 1ef911d4a9425b17 +Block 0018 [ 87]: 6d25fa4b3185b9d4 +Block 0018 [ 88]: a93f54aa4124c757 +Block 0018 [ 89]: 48af4d4768aecbee +Block 0018 [ 90]: 35d4abed720841ed +Block 0018 [ 91]: 665b3ac85fc4ee43 +Block 0018 [ 92]: 7ab4ca6ce7050e88 +Block 0018 [ 93]: 5c153804cce23a8e +Block 0018 [ 94]: 08a7790b6ae73d7e +Block 0018 [ 95]: 783cf66f52f2e00f +Block 0018 [ 96]: f7b816646210de2b +Block 0018 [ 97]: 09b82cc60113ef18 +Block 0018 [ 98]: f01c85f079ba8c5d +Block 0018 [ 99]: a6b659870e6f818c +Block 0018 [100]: 3455c90f45c36368 +Block 0018 [101]: 4aaff880c2bf4336 +Block 0018 [102]: 3ca38b4514afaf7b +Block 0018 [103]: ae6baefa48127298 +Block 0018 [104]: 56c02afca5fa1ee6 +Block 0018 [105]: 276b9dc16980b90f +Block 0018 [106]: 3b7059c3608de518 +Block 0018 [107]: daafa75eb308f5d4 +Block 0018 [108]: 5106f5a61bf578e2 +Block 0018 [109]: 61298f9f09494838 +Block 0018 [110]: 898ce468450ba934 +Block 0018 [111]: 4603cddb732f5d23 +Block 0018 [112]: 4f992f8582a5558d +Block 0018 [113]: c04fa5bcc8962b01 +Block 0018 [114]: e7a91e75d0fb9d85 +Block 0018 [115]: 0d8618021c04f84f +Block 0018 [116]: 44805dbf1d4e2f5f +Block 0018 [117]: 1e3e39a6076048c9 +Block 0018 [118]: dce41a86d7fb8643 +Block 0018 [119]: 70645bbe501fe7a4 +Block 0018 [120]: 4e47b5e159be52ce +Block 0018 [121]: 87f87906a56eb933 +Block 0018 [122]: e3d1788b0c2aba8b +Block 0018 [123]: 33be685aa22ab3ee +Block 0018 [124]: 8ced6b6f38143c6c +Block 0018 [125]: 7423f8ec9a516e00 +Block 0018 [126]: d7f7c1ff44c6d67d +Block 0018 [127]: f23b8867d4dd6fe1 +Block 0019 [ 0]: e68c94b2460ec841 +Block 0019 [ 1]: 99aaac0b34f4f8b7 +Block 0019 [ 2]: 3c66c650488686ee +Block 0019 [ 3]: 006374c400feb21d +Block 0019 [ 4]: eea0a1659a2c98e5 +Block 0019 [ 5]: 780c33d6870d93a5 +Block 0019 [ 6]: 2194f53780f57e6d +Block 0019 [ 7]: 151aadf89b99214b +Block 0019 [ 8]: 8e2994935a4ace33 +Block 0019 [ 9]: 3fea9a95dd889748 +Block 0019 [ 10]: 25bda6a6de6c9a02 +Block 0019 [ 11]: e2e31f2388fb26bb +Block 0019 [ 12]: e67486341d841440 +Block 0019 [ 13]: 633ac48051c0a0f1 +Block 0019 [ 14]: 62ebe294b85f42bf +Block 0019 [ 15]: 4ae4d2d157c1aa18 +Block 0019 [ 16]: 82e4215bf4d93f58 +Block 0019 [ 17]: a2ca18667bd8f7ff +Block 0019 [ 18]: 3037c66438e88973 +Block 0019 [ 19]: da18a6f3fef45119 +Block 0019 [ 20]: 3437a3d396527380 +Block 0019 [ 21]: 13cee0476a7e3f5f +Block 0019 [ 22]: 8ec5610e05e28f37 +Block 0019 [ 23]: 4d48ec3452f91e7b +Block 0019 [ 24]: 3a793c6dde0c489d +Block 0019 [ 25]: 7b79a433882146fd +Block 0019 [ 26]: 6e8562d28af6c353 +Block 0019 [ 27]: 9a0b815272ab6b2d +Block 0019 [ 28]: 989089e323496f7e +Block 0019 [ 29]: 30df1bdc4aea0225 +Block 0019 [ 30]: 6a3a564f55f4b3dd +Block 0019 [ 31]: fc50dc83bceb546c +Block 0019 [ 32]: 447e4405aa759904 +Block 0019 [ 33]: 58266b1f78f2ac2e +Block 0019 [ 34]: 31dd27bf51d0d63a +Block 0019 [ 35]: 735e46b955e39717 +Block 0019 [ 36]: 1137bbe17d3b419b +Block 0019 [ 37]: ce95092221294cf2 +Block 0019 [ 38]: b6d43f6023590ef7 +Block 0019 [ 39]: b9d3ffdc98719c65 +Block 0019 [ 40]: ff3be96758e36733 +Block 0019 [ 41]: a12599993003b4a9 +Block 0019 [ 42]: 5223772f965c4f8e +Block 0019 [ 43]: a78299a08abeb803 +Block 0019 [ 44]: e90d78a70c0e8e0f +Block 0019 [ 45]: 74ecc0d57a293296 +Block 0019 [ 46]: d4ca0fa2a509d91e +Block 0019 [ 47]: 86618f44fa0a98d8 +Block 0019 [ 48]: daffa696aa145a98 +Block 0019 [ 49]: f80e1bbe12db884f +Block 0019 [ 50]: ebe33c1b5affb1fd +Block 0019 [ 51]: 44d448690ffbe1c9 +Block 0019 [ 52]: 9ca41894f7191203 +Block 0019 [ 53]: 1d2a66481d0d7db1 +Block 0019 [ 54]: 76920c05c68f5a3e +Block 0019 [ 55]: 0324f0278705d5af +Block 0019 [ 56]: 3452c35f0f075a17 +Block 0019 [ 57]: cde1816fe56e2fbe +Block 0019 [ 58]: 61abb618c5c0121c +Block 0019 [ 59]: f38bbdf15d765970 +Block 0019 [ 60]: 64706d4efadddf8f +Block 0019 [ 61]: 668bacefb840fa45 +Block 0019 [ 62]: 81231b2e6d5a7228 +Block 0019 [ 63]: e0d93a1b5bcd2131 +Block 0019 [ 64]: 0bacf6789927c3e9 +Block 0019 [ 65]: 7450e8b30f92531e +Block 0019 [ 66]: 05870796723598e7 +Block 0019 [ 67]: 50387864aef7f3a6 +Block 0019 [ 68]: 2a5cc79b01e2d90b +Block 0019 [ 69]: d51ae1a77c1dd0c4 +Block 0019 [ 70]: d79de203232c010b +Block 0019 [ 71]: 4f9bdd24343d3330 +Block 0019 [ 72]: c1aaa24ff29cfcdf +Block 0019 [ 73]: c84dbb8f6f12e921 +Block 0019 [ 74]: dc444657b3bf3c81 +Block 0019 [ 75]: 18267cb2799f6008 +Block 0019 [ 76]: d9f2cb8a341fe77f +Block 0019 [ 77]: e291cf5c2060b212 +Block 0019 [ 78]: 46cb0528271d6244 +Block 0019 [ 79]: b734aca21de50d61 +Block 0019 [ 80]: 5a5de201bf6a2673 +Block 0019 [ 81]: 19a117528479480c +Block 0019 [ 82]: e79b301c2d155dd0 +Block 0019 [ 83]: 0be0429e25f3d73f +Block 0019 [ 84]: cf50115c5a8756f4 +Block 0019 [ 85]: ee9df0785e86b82c +Block 0019 [ 86]: 867ee8925e4a829f +Block 0019 [ 87]: db6994d375cd1c5d +Block 0019 [ 88]: 613424ffe028a72b +Block 0019 [ 89]: cf2819132c6b90fb +Block 0019 [ 90]: ae7c354a78ceefa7 +Block 0019 [ 91]: 6ee261ad0d0a6524 +Block 0019 [ 92]: e063d7b6752108d8 +Block 0019 [ 93]: d400d60801ad65fe +Block 0019 [ 94]: 056813fbb4b32958 +Block 0019 [ 95]: da6538dd2c171c1e +Block 0019 [ 96]: f5620f8890c1353e +Block 0019 [ 97]: c3915a2bedda38fc +Block 0019 [ 98]: f28944cea0d819ed +Block 0019 [ 99]: 07e0317ad31d983a +Block 0019 [100]: 54bdd629f270f9db +Block 0019 [101]: 96936d62fda5b903 +Block 0019 [102]: ca7bf41d8b5afa41 +Block 0019 [103]: 4930a62f8787eef7 +Block 0019 [104]: 055401e28cace080 +Block 0019 [105]: b22d6a0368a17683 +Block 0019 [106]: 8153868647380d50 +Block 0019 [107]: 72e5c3f1ec2ccb24 +Block 0019 [108]: 5ef04cea652960ab +Block 0019 [109]: d1c491afee065791 +Block 0019 [110]: 9123e3d65be41ef6 +Block 0019 [111]: 5e573c21771a6e0f +Block 0019 [112]: 4c233c6896ad2bd8 +Block 0019 [113]: 0917fac4bef0e86a +Block 0019 [114]: d5eba161cdd4b19c +Block 0019 [115]: 231e08de94edb6a1 +Block 0019 [116]: 4238a5d0b6fee732 +Block 0019 [117]: 2ec30accc4214752 +Block 0019 [118]: 08adfd6dbb5c724f +Block 0019 [119]: 2bba105466e32b7c +Block 0019 [120]: e55defcb46625080 +Block 0019 [121]: 855a7f9b856df6b7 +Block 0019 [122]: 1a800bd9d8f62493 +Block 0019 [123]: 5c5a069470c15cc2 +Block 0019 [124]: fcc3739e177a54e1 +Block 0019 [125]: 76a1b592006e7414 +Block 0019 [126]: 5e597cdfa3b799a0 +Block 0019 [127]: c57e11887fcf795c +Block 0020 [ 0]: c54d3e2cb71bdcb3 +Block 0020 [ 1]: 045b75b5a325da89 +Block 0020 [ 2]: b9e14f31c00c36a4 +Block 0020 [ 3]: 966cda36e60c59d2 +Block 0020 [ 4]: 1f2fed12ae03196a +Block 0020 [ 5]: 394d0e3f47889ec9 +Block 0020 [ 6]: 1dfa30485d24f092 +Block 0020 [ 7]: 85fc989151ff8366 +Block 0020 [ 8]: 178abd2a02a4a8e9 +Block 0020 [ 9]: 0f95d8d8b4b33b17 +Block 0020 [ 10]: 7ce14c39ea336a61 +Block 0020 [ 11]: 8588e56ba55173b4 +Block 0020 [ 12]: 7c9f9fef0393618e +Block 0020 [ 13]: 3981488aa716fff4 +Block 0020 [ 14]: 2de3fcfec310f1f7 +Block 0020 [ 15]: 64c8abbb27c8ccb6 +Block 0020 [ 16]: a71a061b8aad5f01 +Block 0020 [ 17]: 4a8299be564abd67 +Block 0020 [ 18]: 928630af5033c132 +Block 0020 [ 19]: 35c2cf541f2c3539 +Block 0020 [ 20]: 934b011ac1d5f33f +Block 0020 [ 21]: f0261dfa4a0b84ff +Block 0020 [ 22]: a88a1ff2595f7ae4 +Block 0020 [ 23]: a03126345067fa76 +Block 0020 [ 24]: 3df3835b2c16eb32 +Block 0020 [ 25]: 60b4166b25329b80 +Block 0020 [ 26]: a8d471f7d45ff5ba +Block 0020 [ 27]: 2e6fe056562554d2 +Block 0020 [ 28]: 3d07f858142c2fe3 +Block 0020 [ 29]: dddfeca432ccd3ba +Block 0020 [ 30]: 8400fb66a8db5b16 +Block 0020 [ 31]: a748bca7d7302b54 +Block 0020 [ 32]: f925832d18b51065 +Block 0020 [ 33]: 77cb3f75fde4d890 +Block 0020 [ 34]: f35d2422522de8c3 +Block 0020 [ 35]: dfa7fde45521747b +Block 0020 [ 36]: df0695c8e0139c4d +Block 0020 [ 37]: 51047eb7b5dd8aba +Block 0020 [ 38]: 7c44efc45de0bcfd +Block 0020 [ 39]: 1491c82e92645137 +Block 0020 [ 40]: 6e6ecc04f4212e26 +Block 0020 [ 41]: 9d5b9ebb54f1e541 +Block 0020 [ 42]: 598e7f273d8a08ee +Block 0020 [ 43]: 3b6e27abfb649a5a +Block 0020 [ 44]: d0c6518b5a6a4791 +Block 0020 [ 45]: 2cbcf2c3c944b133 +Block 0020 [ 46]: ac7f945b5e493475 +Block 0020 [ 47]: 028cefefd0a89765 +Block 0020 [ 48]: de50ac74cb3dfc57 +Block 0020 [ 49]: c1f212cb7ff0e154 +Block 0020 [ 50]: 6c12225df148f8c9 +Block 0020 [ 51]: a531d30641fb8f3e +Block 0020 [ 52]: feb48fd4409e38ea +Block 0020 [ 53]: 7d97606342d70db7 +Block 0020 [ 54]: 25e4dc7a78a45ed1 +Block 0020 [ 55]: 213b0ad8218be4b2 +Block 0020 [ 56]: 907b03533fe689f6 +Block 0020 [ 57]: 0254dbaa7b4d1cb4 +Block 0020 [ 58]: fa2127039a17e414 +Block 0020 [ 59]: 8e42e9379fc70e9a +Block 0020 [ 60]: 7d6fcd35dfdc3df8 +Block 0020 [ 61]: 7c117c259b7f677b +Block 0020 [ 62]: ced9a88d8b6d21b9 +Block 0020 [ 63]: 3cd93f07ac90b6dd +Block 0020 [ 64]: 3f64026f2f2d5d21 +Block 0020 [ 65]: 918da82771c98e07 +Block 0020 [ 66]: fa0bcaa023b52934 +Block 0020 [ 67]: d254161d884dab65 +Block 0020 [ 68]: 0ab9fb2e38f39aa0 +Block 0020 [ 69]: 9b0ad40ca7a7e53d +Block 0020 [ 70]: a59718f79af53441 +Block 0020 [ 71]: 61dd123c0753cd8b +Block 0020 [ 72]: 9be36512f98bf123 +Block 0020 [ 73]: 1b10f5701374b409 +Block 0020 [ 74]: d2a9ecd263a43767 +Block 0020 [ 75]: 5588fcb390d08fc6 +Block 0020 [ 76]: 48c7d0ccbd865afa +Block 0020 [ 77]: baf1f14150d0c6ac +Block 0020 [ 78]: a513e811bed260aa +Block 0020 [ 79]: e2256898e554eabe +Block 0020 [ 80]: 245d08410ddc2073 +Block 0020 [ 81]: cac07dbc1480586f +Block 0020 [ 82]: 7af04b8310ad0ece +Block 0020 [ 83]: 5a12c12021d4c398 +Block 0020 [ 84]: 6e6771bb7a6146d5 +Block 0020 [ 85]: 3fec7cc7d0f05f06 +Block 0020 [ 86]: dac5d20d4a7f0558 +Block 0020 [ 87]: 36e29accf65b0fbf +Block 0020 [ 88]: 17f4cafd73b22af1 +Block 0020 [ 89]: bc3daf981eae353f +Block 0020 [ 90]: 9ea48362e9375a28 +Block 0020 [ 91]: dfe05001142b3662 +Block 0020 [ 92]: 66a26ef9cb3c9a62 +Block 0020 [ 93]: 7d9fece4c8e9060d +Block 0020 [ 94]: 67a9a26a7af4d68f +Block 0020 [ 95]: 0c73007e1b65eeb4 +Block 0020 [ 96]: bb0815188f59f189 +Block 0020 [ 97]: 532b8112c89fb754 +Block 0020 [ 98]: fe870b6acefedf44 +Block 0020 [ 99]: 87ffc30535a4e771 +Block 0020 [100]: 3065fc324181dea9 +Block 0020 [101]: bb66f0d2a87bebb6 +Block 0020 [102]: ec737a39dcfc4886 +Block 0020 [103]: a790b38df1cd0369 +Block 0020 [104]: fde7bcafccb7dec9 +Block 0020 [105]: fab95e7a5e1e9896 +Block 0020 [106]: 8fa2fb1044142009 +Block 0020 [107]: 13369c517008a55a +Block 0020 [108]: 51ebff2547ca9d7d +Block 0020 [109]: b4fec36f856ee016 +Block 0020 [110]: 522b8ce6e5135485 +Block 0020 [111]: 875bae25f8ac8cb3 +Block 0020 [112]: eff897d039cdc9b9 +Block 0020 [113]: 99758f2baea77a83 +Block 0020 [114]: d58ad76dd94db6e5 +Block 0020 [115]: 9b328f1e84364f75 +Block 0020 [116]: 4243923d22b1457d +Block 0020 [117]: 96de22ee64f80846 +Block 0020 [118]: 9663e19dc0808f0e +Block 0020 [119]: a31787db1626f171 +Block 0020 [120]: fe941f17981bedc3 +Block 0020 [121]: 24925bbf73d23de8 +Block 0020 [122]: d87e2a9df7952d66 +Block 0020 [123]: 163a92313113e2b6 +Block 0020 [124]: 8fcde73c94fb861b +Block 0020 [125]: 599d993568adde24 +Block 0020 [126]: ef53a06b7dc3ab34 +Block 0020 [127]: 6164df011b9803ce +Block 0021 [ 0]: b4359aafad15cb66 +Block 0021 [ 1]: 7ce75a4dc9d24ad5 +Block 0021 [ 2]: 80628ac68feba208 +Block 0021 [ 3]: 647a73904f76cf42 +Block 0021 [ 4]: 054f3fa5406f291c +Block 0021 [ 5]: 2a8a0ce8ca579a6c +Block 0021 [ 6]: 241db1a3fca580d8 +Block 0021 [ 7]: 53be796a6148af72 +Block 0021 [ 8]: 2c3f7ef0d9fa0fa6 +Block 0021 [ 9]: 232118c9bc2c1821 +Block 0021 [ 10]: 4732801687b6ad99 +Block 0021 [ 11]: 091eede831c70741 +Block 0021 [ 12]: 390b7bad92e5aad4 +Block 0021 [ 13]: 0e3bd13e7b8cf2b2 +Block 0021 [ 14]: a5d92db9aad5ebcb +Block 0021 [ 15]: 33096e82e7d9a193 +Block 0021 [ 16]: 345a736d05b8ae2e +Block 0021 [ 17]: 3cf0b101b23e68e3 +Block 0021 [ 18]: 3f206123e8289d5e +Block 0021 [ 19]: b3b82744857e6420 +Block 0021 [ 20]: 09fe2ef20ed5f50e +Block 0021 [ 21]: 309b9c0a7ebde4b3 +Block 0021 [ 22]: 110b6319f949d6d6 +Block 0021 [ 23]: 33afd02b5efd01cb +Block 0021 [ 24]: 1c64e2a0bf49aa3b +Block 0021 [ 25]: 91f7d6182f04c9e0 +Block 0021 [ 26]: f838cbeb18e1c36a +Block 0021 [ 27]: 83b0dbfaa26dd968 +Block 0021 [ 28]: b4bd77cde2e42069 +Block 0021 [ 29]: 92fb33478ed213fc +Block 0021 [ 30]: bd155dc19753e426 +Block 0021 [ 31]: b3baebd3c6baecac +Block 0021 [ 32]: 5503e71b97973de3 +Block 0021 [ 33]: 36191e2eb2082f5a +Block 0021 [ 34]: ee885969b22aad9c +Block 0021 [ 35]: 2134f58df159795c +Block 0021 [ 36]: dcf3454302715c0c +Block 0021 [ 37]: 96d6f6d96728028f +Block 0021 [ 38]: a6c2214609c42c1b +Block 0021 [ 39]: b4c9277ac8edc055 +Block 0021 [ 40]: 5ee3a94d1fbb0c98 +Block 0021 [ 41]: 5c6cc1572251a5df +Block 0021 [ 42]: 65460fd6055384d0 +Block 0021 [ 43]: 53046124ab0bb1ce +Block 0021 [ 44]: c1588ca311f6229b +Block 0021 [ 45]: af4c3450fd49bde2 +Block 0021 [ 46]: d8bd84abebca4b44 +Block 0021 [ 47]: 0dbd468e2ce4c736 +Block 0021 [ 48]: a05732cb618fb3d2 +Block 0021 [ 49]: 4285ee522591c15a +Block 0021 [ 50]: 226f73bbeb355b3d +Block 0021 [ 51]: 71eaaa9babe05328 +Block 0021 [ 52]: 34e517122258eb4f +Block 0021 [ 53]: 8db93c1689432f17 +Block 0021 [ 54]: cc042f252799cbdc +Block 0021 [ 55]: eb7bc92c56f1a160 +Block 0021 [ 56]: 93e3f8caf83238ff +Block 0021 [ 57]: 3d09fe62b2cec6ee +Block 0021 [ 58]: 0b3506ec7cc5c28b +Block 0021 [ 59]: 593b5033fc8e18eb +Block 0021 [ 60]: 09082196bc215c48 +Block 0021 [ 61]: 653aac366e202636 +Block 0021 [ 62]: d7c8fc4e7aff96b2 +Block 0021 [ 63]: 091ebda3ffbaba3e +Block 0021 [ 64]: d3b37b144c8d36ef +Block 0021 [ 65]: 88a95e9be1dc5dc8 +Block 0021 [ 66]: 083c1a074ea5a5e9 +Block 0021 [ 67]: 34a11d71b4925a91 +Block 0021 [ 68]: ac3f2081b74276e1 +Block 0021 [ 69]: e178dc364e9ce587 +Block 0021 [ 70]: fc358da58b918d09 +Block 0021 [ 71]: c98f6b556d55d177 +Block 0021 [ 72]: aef7971cfa9ff37d +Block 0021 [ 73]: b5d411fd662c5fba +Block 0021 [ 74]: 4e2562e0dbfdcbcb +Block 0021 [ 75]: b03ab288ba43ac82 +Block 0021 [ 76]: 9b7cd3120b8eecce +Block 0021 [ 77]: d311e41b9b961a2c +Block 0021 [ 78]: d74f38c1f470407b +Block 0021 [ 79]: b436ea598c38c2e8 +Block 0021 [ 80]: be7c8e0d99fcfa5b +Block 0021 [ 81]: 277bb5b7d604b0f3 +Block 0021 [ 82]: 95aa4567c7c08ced +Block 0021 [ 83]: b983c108c9552cc5 +Block 0021 [ 84]: dad3e1c67fc6291e +Block 0021 [ 85]: eea86a2a4fa30ee2 +Block 0021 [ 86]: 8e5e499491ad8d27 +Block 0021 [ 87]: c16da828dbb58de5 +Block 0021 [ 88]: aa1c634f7b67da81 +Block 0021 [ 89]: f6880237a2459b29 +Block 0021 [ 90]: 2cfc0b5833399be9 +Block 0021 [ 91]: 3714e3f38337f68a +Block 0021 [ 92]: 31d6460f7d0e5979 +Block 0021 [ 93]: 2caa43efea4389c2 +Block 0021 [ 94]: 4386b7afe0d31674 +Block 0021 [ 95]: 85fb37a557a28138 +Block 0021 [ 96]: 9cbbd44c38af6793 +Block 0021 [ 97]: bee341aebbcfe36c +Block 0021 [ 98]: 674ce8f742369cbb +Block 0021 [ 99]: 856b0b350bae5187 +Block 0021 [100]: 02a68a5823e3b954 +Block 0021 [101]: 6704e91be87c9ea0 +Block 0021 [102]: d92888c4a8c08134 +Block 0021 [103]: 87472fbfbc2fcfd5 +Block 0021 [104]: a50169e2fa648772 +Block 0021 [105]: 4feb188466f7e52d +Block 0021 [106]: 0d79238c73a589fa +Block 0021 [107]: 6332ffb33d56c49c +Block 0021 [108]: 68607184ed0754b1 +Block 0021 [109]: f272d2e8b08e7a34 +Block 0021 [110]: a968fd194564013f +Block 0021 [111]: 60e08b245657d2b2 +Block 0021 [112]: b473337ba3a572da +Block 0021 [113]: bdb28b111b33fcc1 +Block 0021 [114]: 7e4fc761ee70caf0 +Block 0021 [115]: b3fa3d33d9bf2517 +Block 0021 [116]: 93d97291bed8d833 +Block 0021 [117]: d8ee5c9a49a96764 +Block 0021 [118]: bb2bce5f4a8040e0 +Block 0021 [119]: 266fd5ba94493f99 +Block 0021 [120]: ea3e1b720fc5638a +Block 0021 [121]: 7ec3443cf459c697 +Block 0021 [122]: 670b59b62d2c1552 +Block 0021 [123]: 7ea24423e5485f69 +Block 0021 [124]: 86a381d3e697ec37 +Block 0021 [125]: 7ef381fd980cd373 +Block 0021 [126]: 4d97d8f2f15a08fd +Block 0021 [127]: f241c79c4336e5ee +Block 0022 [ 0]: 813e36b57f736f0e +Block 0022 [ 1]: 345edbccfd655060 +Block 0022 [ 2]: 45f4ada44a2382e7 +Block 0022 [ 3]: 62cd805ccbcf63e1 +Block 0022 [ 4]: 2609d71d9286f6d5 +Block 0022 [ 5]: 39eb81718e588a4c +Block 0022 [ 6]: 20b478f3eb7e3cc2 +Block 0022 [ 7]: 253c29e9bedcefc1 +Block 0022 [ 8]: 08004243908f4f1d +Block 0022 [ 9]: b7a67c83f293d403 +Block 0022 [ 10]: 1911fd2dda85e2f8 +Block 0022 [ 11]: 70f5f853b83b5dd7 +Block 0022 [ 12]: a67f4eba9920c6e3 +Block 0022 [ 13]: 56f13344621a0e61 +Block 0022 [ 14]: 971f77f862b273dc +Block 0022 [ 15]: e12eefe0abcc5b4e +Block 0022 [ 16]: 59b4f8f1a60fed17 +Block 0022 [ 17]: 2051dbd0c486d542 +Block 0022 [ 18]: 7f6423db1c459ead +Block 0022 [ 19]: 85293e221fc0b143 +Block 0022 [ 20]: d96e5034170a075a +Block 0022 [ 21]: c7c39f32dcaf4a9f +Block 0022 [ 22]: 2a880940c67864c4 +Block 0022 [ 23]: a54c6f2d14dd1e7e +Block 0022 [ 24]: 6dfc7feebdf6b0c7 +Block 0022 [ 25]: 716b53a52f1ca01e +Block 0022 [ 26]: ee494ea0dcd25617 +Block 0022 [ 27]: 9da47bea3267169d +Block 0022 [ 28]: 9b1cedca1279315e +Block 0022 [ 29]: a05e91f4da37ba4b +Block 0022 [ 30]: 3f9012c056d9ea0a +Block 0022 [ 31]: 9eafd586517cf956 +Block 0022 [ 32]: 33fc7e8fb52d11ce +Block 0022 [ 33]: 360c77ad386602e1 +Block 0022 [ 34]: 239bc09dbae396f3 +Block 0022 [ 35]: db564062b886e0db +Block 0022 [ 36]: 5b99052adc7fb1f4 +Block 0022 [ 37]: afbba2175808419a +Block 0022 [ 38]: 8584484a2cf421f3 +Block 0022 [ 39]: df26603c940349d7 +Block 0022 [ 40]: d44ba11ddfaa77d3 +Block 0022 [ 41]: ff903fbd137aa9b3 +Block 0022 [ 42]: e92191a967f00fe5 +Block 0022 [ 43]: eeacdc65c294236a +Block 0022 [ 44]: 8efaeac4c8bfc2c6 +Block 0022 [ 45]: 65842ccf54771329 +Block 0022 [ 46]: ff0a8a16832baa5f +Block 0022 [ 47]: dc2d92bd7ea194c3 +Block 0022 [ 48]: bb6baaa1316affbc +Block 0022 [ 49]: 9dba26c40d1f4c5c +Block 0022 [ 50]: 5c5dcaf5cc029b7b +Block 0022 [ 51]: 76dde8e5937ed9fa +Block 0022 [ 52]: 8c6912cf71d1b0f7 +Block 0022 [ 53]: c291157fa8faf585 +Block 0022 [ 54]: 846626675908e472 +Block 0022 [ 55]: 703c628a4b8160db +Block 0022 [ 56]: ba20a5ac7c56f3c8 +Block 0022 [ 57]: aeeda4e5faf9bd4f +Block 0022 [ 58]: 66a610879006072d +Block 0022 [ 59]: 056d180bd4f6af2f +Block 0022 [ 60]: 7505b0cdb9c93e64 +Block 0022 [ 61]: 0293ba0f95b4517e +Block 0022 [ 62]: befb683208444571 +Block 0022 [ 63]: 69035d1ab4c773c5 +Block 0022 [ 64]: 6b53ad1a6b633732 +Block 0022 [ 65]: 7942fdfc3c8d30fd +Block 0022 [ 66]: f631898c080bd8cf +Block 0022 [ 67]: 16eca90577600ed0 +Block 0022 [ 68]: 7029d3f17b6914d0 +Block 0022 [ 69]: 4779698217fce0c1 +Block 0022 [ 70]: 2a8b2a94619361dd +Block 0022 [ 71]: 280f6adcac49f9b9 +Block 0022 [ 72]: 42771780bbf292ed +Block 0022 [ 73]: 486b0fb39b59fd26 +Block 0022 [ 74]: ea95b24743c40e47 +Block 0022 [ 75]: 75dd1f2a65fc4348 +Block 0022 [ 76]: 9dcfc10e5d7d78f6 +Block 0022 [ 77]: 2cb8a82aafe24993 +Block 0022 [ 78]: 57e2a0c1b90752a5 +Block 0022 [ 79]: 6ec85892729bb3e9 +Block 0022 [ 80]: d7656c1d56dbcecf +Block 0022 [ 81]: 8f73225a3350f820 +Block 0022 [ 82]: 477edcbc02afc238 +Block 0022 [ 83]: e4275a1b9aa7e943 +Block 0022 [ 84]: 3ae96dad9513e87b +Block 0022 [ 85]: fb7fa4b503184cbd +Block 0022 [ 86]: 3ef220b5ca9bd822 +Block 0022 [ 87]: 6cc1b23ce216063c +Block 0022 [ 88]: a8bfec1577b858b5 +Block 0022 [ 89]: bc88a540cf4ccea0 +Block 0022 [ 90]: 8ef8ff6f9d2b187b +Block 0022 [ 91]: 87c6df841301e4fe +Block 0022 [ 92]: 63403f90699e4971 +Block 0022 [ 93]: 172ccd9b90911d01 +Block 0022 [ 94]: 627145555f3ca629 +Block 0022 [ 95]: 9598aa5a5d03ad85 +Block 0022 [ 96]: d1a9fd862eaad482 +Block 0022 [ 97]: eb84b9bd1db4e5f9 +Block 0022 [ 98]: a4e82f816e247783 +Block 0022 [ 99]: fdb966659f11201c +Block 0022 [100]: 54f4ceecbb73d1fd +Block 0022 [101]: 31237b6a155ac335 +Block 0022 [102]: ed9cdd6bc0440c99 +Block 0022 [103]: 5df61b5eafba2445 +Block 0022 [104]: c2e8a0b81e9f2861 +Block 0022 [105]: 50d50587c5ccf4d4 +Block 0022 [106]: 9f798cca5d417467 +Block 0022 [107]: e1a40ba6506cd7d9 +Block 0022 [108]: 14f6fbba5f8381b9 +Block 0022 [109]: 1507d17ae17e99e5 +Block 0022 [110]: 5b6a8344c3bf8a4e +Block 0022 [111]: 3a4b5da9f312b9e7 +Block 0022 [112]: 980d402ac279c4a1 +Block 0022 [113]: 4a83e58717bfdf2e +Block 0022 [114]: edfda956f994881e +Block 0022 [115]: dd928d191f2bad0f +Block 0022 [116]: 32f2b58f81e9db2e +Block 0022 [117]: 795786215883c510 +Block 0022 [118]: 2ea35a3be27dc59a +Block 0022 [119]: 696cb31e49444600 +Block 0022 [120]: d37ca87ae65fe96b +Block 0022 [121]: 7db487549599b66e +Block 0022 [122]: 02a9a74bad372257 +Block 0022 [123]: 81c7c8d7e3864a39 +Block 0022 [124]: dcb6a7a05eeafd74 +Block 0022 [125]: 899c2040fa48c0dd +Block 0022 [126]: 1ba5009a290db5af +Block 0022 [127]: 90f532941e285313 +Block 0023 [ 0]: d92feaf9ce8f832f +Block 0023 [ 1]: 3de3b81d2dab8116 +Block 0023 [ 2]: cf1e8cca6963628c +Block 0023 [ 3]: 07cb29d6ba973354 +Block 0023 [ 4]: c348b52ae94fbd89 +Block 0023 [ 5]: 61ce2eecdec8a31b +Block 0023 [ 6]: 82a2130eaea128dc +Block 0023 [ 7]: 4f8aa3e0d7d6710c +Block 0023 [ 8]: bcd653f901fb9f3b +Block 0023 [ 9]: 3bb0a8d09248a0e1 +Block 0023 [ 10]: 310899a7c559e07d +Block 0023 [ 11]: 621fb1b749c89c1d +Block 0023 [ 12]: e5dd90a69a7c2088 +Block 0023 [ 13]: df25ff336f01b4f3 +Block 0023 [ 14]: e82704f1da52db54 +Block 0023 [ 15]: 6cf8eaf00efd333b +Block 0023 [ 16]: 656e8a75c9990167 +Block 0023 [ 17]: 2495bd9a4e94b6ff +Block 0023 [ 18]: dc75566d181ba85d +Block 0023 [ 19]: 4b41a1f74adca60e +Block 0023 [ 20]: 7e2a74ac28620381 +Block 0023 [ 21]: ae2c8230deddc7ca +Block 0023 [ 22]: db57b6833bd71c5c +Block 0023 [ 23]: b98fe4728a732634 +Block 0023 [ 24]: ec0bdcfb62bf1944 +Block 0023 [ 25]: f118264665f3c202 +Block 0023 [ 26]: cbb5a036c33319fe +Block 0023 [ 27]: f327b9bae21d24fe +Block 0023 [ 28]: 4478291d73a3bf0d +Block 0023 [ 29]: e5fb606769ddfb31 +Block 0023 [ 30]: f523956060e94a9a +Block 0023 [ 31]: 8c32c1450c832977 +Block 0023 [ 32]: 430f30e003942c3b +Block 0023 [ 33]: 5b8dacd457d7041a +Block 0023 [ 34]: 512765b9187e2778 +Block 0023 [ 35]: 34683aff41f7d9d6 +Block 0023 [ 36]: 16ded03fb6edc604 +Block 0023 [ 37]: 60f18b90ca5ccbce +Block 0023 [ 38]: 26afa948ec150fdd +Block 0023 [ 39]: f1572bab289539ae +Block 0023 [ 40]: 54c85f3574d44104 +Block 0023 [ 41]: d7ae5531e526625c +Block 0023 [ 42]: 48ceb1160c16bc68 +Block 0023 [ 43]: a7f5980b2fef07ed +Block 0023 [ 44]: b0e154d525eab517 +Block 0023 [ 45]: 354c61f188ac9c85 +Block 0023 [ 46]: 1735825e0dcbb3c8 +Block 0023 [ 47]: 6c85a29988884a89 +Block 0023 [ 48]: 183d32c1c7b75210 +Block 0023 [ 49]: 1c61dd508c241991 +Block 0023 [ 50]: 5c1749abe0f7f0e1 +Block 0023 [ 51]: dfd50644c2722393 +Block 0023 [ 52]: a32f6e257045aa4f +Block 0023 [ 53]: 5f0d63a2fa6b9db5 +Block 0023 [ 54]: 8137c4a1649ff49e +Block 0023 [ 55]: 0361fd084a8429b4 +Block 0023 [ 56]: 2fff5a3d5978327d +Block 0023 [ 57]: 647412ac4a4a5db8 +Block 0023 [ 58]: 7c538866533b8084 +Block 0023 [ 59]: 9bd01c9630abd6e4 +Block 0023 [ 60]: 49d58e98765e7062 +Block 0023 [ 61]: d28099be1bebcfda +Block 0023 [ 62]: 4a299a576da2a4c5 +Block 0023 [ 63]: f3189872d6fb849f +Block 0023 [ 64]: 7dda31d38325b7e9 +Block 0023 [ 65]: 0f4c97f756b82ae3 +Block 0023 [ 66]: 6bb0608531658ea5 +Block 0023 [ 67]: 15eadad675329af7 +Block 0023 [ 68]: 27808f4042c4396c +Block 0023 [ 69]: 46ed46f38dd41e57 +Block 0023 [ 70]: ecf63b28dbc424ca +Block 0023 [ 71]: d39f3e9fd8c74f10 +Block 0023 [ 72]: 09bc3876def81567 +Block 0023 [ 73]: 712a20a8ac895b22 +Block 0023 [ 74]: 4d4110dc7b315e87 +Block 0023 [ 75]: 5ca2290813579508 +Block 0023 [ 76]: ca993d8a3e8fe80b +Block 0023 [ 77]: 8fa2d7afd58c99fb +Block 0023 [ 78]: 871df3e6bdd85cf8 +Block 0023 [ 79]: bd87aa5c46bcd0a5 +Block 0023 [ 80]: 29bc11f4b6940ae4 +Block 0023 [ 81]: 0f0cc784b683f458 +Block 0023 [ 82]: 3173391b65289758 +Block 0023 [ 83]: 80b49ee12ff0ea70 +Block 0023 [ 84]: ad29a311a9ac5e0c +Block 0023 [ 85]: fa4bce3853385cfd +Block 0023 [ 86]: 5ba5787462f7a889 +Block 0023 [ 87]: 8f881e91d93bb917 +Block 0023 [ 88]: 44e7b45101b23012 +Block 0023 [ 89]: 3700c0182238d7e7 +Block 0023 [ 90]: 25b2fcddc913a952 +Block 0023 [ 91]: b6187c757f862577 +Block 0023 [ 92]: 6fd30e484383d75d +Block 0023 [ 93]: 12e9bb3086090629 +Block 0023 [ 94]: 2d5019d6344d9351 +Block 0023 [ 95]: 4c5fc7108e6c87b3 +Block 0023 [ 96]: 16b1525a3b280956 +Block 0023 [ 97]: 98987e0229057d3d +Block 0023 [ 98]: fd8b47ca62cafec7 +Block 0023 [ 99]: 69fd38fae9a7c741 +Block 0023 [100]: 8c2e4f14813d552b +Block 0023 [101]: 2e9a7c9a55d324ff +Block 0023 [102]: 9b345c3bcbefe217 +Block 0023 [103]: 52962171fbaea0b7 +Block 0023 [104]: 856e0e7ac867e1ac +Block 0023 [105]: c0ebd9d4b59f5031 +Block 0023 [106]: eb5c94df7be654d7 +Block 0023 [107]: 0725acfb389c822e +Block 0023 [108]: 2ae46cf5dc01fb3d +Block 0023 [109]: 4c8c87d24c4c396d +Block 0023 [110]: 8e37af365f796e24 +Block 0023 [111]: cb454318ca6dd824 +Block 0023 [112]: 6669edae28765b15 +Block 0023 [113]: ecc90a6c75263179 +Block 0023 [114]: 91ae80ee00e213b2 +Block 0023 [115]: e4f6ae47598bd7c8 +Block 0023 [116]: d4d306030ee62936 +Block 0023 [117]: 7caa0f1a1bbb26ed +Block 0023 [118]: 2ae6972e42774638 +Block 0023 [119]: 4ecaf984d41d9d63 +Block 0023 [120]: 2d6aab1800387fb6 +Block 0023 [121]: 0a7a2961cc0f0e8c +Block 0023 [122]: 46e5b112f06ad739 +Block 0023 [123]: 44c5ad17398f4bc0 +Block 0023 [124]: 64be1d1b9194f92e +Block 0023 [125]: 3046768d16c6d93f +Block 0023 [126]: 59ac6bb60f2c9c85 +Block 0023 [127]: 95595e52b7f2152f +Block 0024 [ 0]: 421df20d08fd899e +Block 0024 [ 1]: 06490f067ca5f4c0 +Block 0024 [ 2]: 4b7bab14d2317386 +Block 0024 [ 3]: 928cb31a919ac9e0 +Block 0024 [ 4]: 8eeb69c9bf35ca26 +Block 0024 [ 5]: 3b871b2affbf59cb +Block 0024 [ 6]: 9a44775f57d70b0c +Block 0024 [ 7]: d1753e76fd4cd2f5 +Block 0024 [ 8]: 23beccd32f5a538c +Block 0024 [ 9]: 26cb1bfdc1bfe467 +Block 0024 [ 10]: d27541618bf4a7a7 +Block 0024 [ 11]: 0aa0a42080544478 +Block 0024 [ 12]: bc8f20da1a6e40e4 +Block 0024 [ 13]: e875b5a98a112900 +Block 0024 [ 14]: ca61219887cb4959 +Block 0024 [ 15]: e2493c2da5dc45cc +Block 0024 [ 16]: 376be64ae523a96d +Block 0024 [ 17]: bc26c2991a963b5d +Block 0024 [ 18]: d507fa831eb0b11c +Block 0024 [ 19]: cbb1fae2e8a7724d +Block 0024 [ 20]: 0d57265e72b6fcaf +Block 0024 [ 21]: 57bda72893b0ba2c +Block 0024 [ 22]: b1dfd60192386ed2 +Block 0024 [ 23]: dcfe908cf1bed33c +Block 0024 [ 24]: 3cf2ae1e6ba2f37b +Block 0024 [ 25]: c26c60ad1b72cec6 +Block 0024 [ 26]: 227b729e4be43c89 +Block 0024 [ 27]: f1698cc673f4b33d +Block 0024 [ 28]: 6d6a36ee935bd1be +Block 0024 [ 29]: e044d40fe77c96fd +Block 0024 [ 30]: 51f025fc9570d3b1 +Block 0024 [ 31]: 9047ccdcadfba8f3 +Block 0024 [ 32]: 4fbfd7f34c1fc530 +Block 0024 [ 33]: a21db2877a70cffe +Block 0024 [ 34]: 6779dd725caffcfa +Block 0024 [ 35]: abd46d03ab30e7e8 +Block 0024 [ 36]: 3df9ce3d3f9b8d77 +Block 0024 [ 37]: 79c4e82b1d66f2b2 +Block 0024 [ 38]: f6e56a9befd85521 +Block 0024 [ 39]: 63effa4aac8c722f +Block 0024 [ 40]: 5d95c78b470b652b +Block 0024 [ 41]: 0d49b3bd5c53de96 +Block 0024 [ 42]: 677fdc7ac25e2963 +Block 0024 [ 43]: 64cf061a259c532e +Block 0024 [ 44]: 2f9da934b23e75a0 +Block 0024 [ 45]: b8889059afbcd633 +Block 0024 [ 46]: 87268a47bdacb91a +Block 0024 [ 47]: bdd1d344a00442ce +Block 0024 [ 48]: ed2fb8fcfcccfd0f +Block 0024 [ 49]: 9702e80222aaa0a2 +Block 0024 [ 50]: b59fd3607c6f4a99 +Block 0024 [ 51]: b5a3abe17118d3f5 +Block 0024 [ 52]: b36e4548145308e8 +Block 0024 [ 53]: 9f58a90d739baeb2 +Block 0024 [ 54]: 949e5504da615608 +Block 0024 [ 55]: 8be00e3ae5fe9cae +Block 0024 [ 56]: 32c6269ff1f417d3 +Block 0024 [ 57]: a0fd7a40f50436bc +Block 0024 [ 58]: 804eddf125b05db8 +Block 0024 [ 59]: e412fa3b09805e30 +Block 0024 [ 60]: ee38f256fefee213 +Block 0024 [ 61]: 4700102c10caca7b +Block 0024 [ 62]: 7c72c70089dfa961 +Block 0024 [ 63]: bab72c9336d9b835 +Block 0024 [ 64]: 2146a5760b289949 +Block 0024 [ 65]: 9d3846479be2a556 +Block 0024 [ 66]: 6a81e0b707146bbc +Block 0024 [ 67]: 7648f0711580ddfe +Block 0024 [ 68]: aab8aee50021b344 +Block 0024 [ 69]: 38f296313d23ec72 +Block 0024 [ 70]: 04b4905eaec03ac5 +Block 0024 [ 71]: fe0f55aaeb91559f +Block 0024 [ 72]: 5fb453a232b4a989 +Block 0024 [ 73]: daa1ab85149235e2 +Block 0024 [ 74]: c825ee74fa3cfa1b +Block 0024 [ 75]: 6113b7f6fa3aa5fa +Block 0024 [ 76]: 9f3e6aea3b3be4d5 +Block 0024 [ 77]: f7d471f5f8ae3ce3 +Block 0024 [ 78]: c68f97bfab689e30 +Block 0024 [ 79]: b7c234060a797abf +Block 0024 [ 80]: 6041520f55b95a30 +Block 0024 [ 81]: 56ea11838e34faab +Block 0024 [ 82]: e2fa113ac34a4e76 +Block 0024 [ 83]: 952a842f6f1f0ea6 +Block 0024 [ 84]: 2bcdfb5279443993 +Block 0024 [ 85]: 10946fdd29e96316 +Block 0024 [ 86]: 5f908e7a28f81708 +Block 0024 [ 87]: d289b647f332fbe9 +Block 0024 [ 88]: f16d8e959f359c08 +Block 0024 [ 89]: 18601d046daf6b9f +Block 0024 [ 90]: 66214e8c17b7a365 +Block 0024 [ 91]: c6c7b0aeef79013c +Block 0024 [ 92]: dc20cc64d5a79a4c +Block 0024 [ 93]: 5187e9a6ff899eb1 +Block 0024 [ 94]: 730cac806359e63c +Block 0024 [ 95]: 9691bae04c4bbd94 +Block 0024 [ 96]: 0fa7b3a871abe79d +Block 0024 [ 97]: b3a3883ad7a4e928 +Block 0024 [ 98]: f1b2d895589851d8 +Block 0024 [ 99]: 6f905a6249a50eae +Block 0024 [100]: 4cf1840c45bca0d9 +Block 0024 [101]: 782e7ffb69c668aa +Block 0024 [102]: fe55c440f0227790 +Block 0024 [103]: dec111756b979cbc +Block 0024 [104]: 9e1621f10dc6142e +Block 0024 [105]: af92a355e0758599 +Block 0024 [106]: 1f85ba4b4b00884b +Block 0024 [107]: aff87e8f36e044cf +Block 0024 [108]: 87667d6990985f08 +Block 0024 [109]: 5e7d62dd0e2b654a +Block 0024 [110]: 984eeff01ce256d9 +Block 0024 [111]: 5d76c092a79bca15 +Block 0024 [112]: cb2ff31e3e9de68d +Block 0024 [113]: a4a6cc101833f846 +Block 0024 [114]: 0eeb05c1eac92920 +Block 0024 [115]: 3795d878dfbaaa3c +Block 0024 [116]: a363bb42a0bf4fd4 +Block 0024 [117]: 212c42d91a79e145 +Block 0024 [118]: 844305ca7ebe404e +Block 0024 [119]: c23c2a10a961d67c +Block 0024 [120]: 2038404d2ceadec9 +Block 0024 [121]: 71f48b5bff5b4c03 +Block 0024 [122]: 00d97ddde74a8b18 +Block 0024 [123]: d4a629a0f481c37b +Block 0024 [124]: a31ac02725842396 +Block 0024 [125]: 26c90ede186fd85f +Block 0024 [126]: 32d3c3f0385d16a2 +Block 0024 [127]: a58053f744dc93ad +Block 0025 [ 0]: 75e219ce652f9e9b +Block 0025 [ 1]: 5192d14a2c29f461 +Block 0025 [ 2]: ecadcc07806d90a7 +Block 0025 [ 3]: cb8f9debaf8159b8 +Block 0025 [ 4]: 922fd6b8cb6a2641 +Block 0025 [ 5]: fc1677aa64a158b1 +Block 0025 [ 6]: 0c24c2820ef42f14 +Block 0025 [ 7]: b3cd3deb0443f694 +Block 0025 [ 8]: 52b0ac996c835048 +Block 0025 [ 9]: 7b69b5d070589932 +Block 0025 [ 10]: 0381d9fcdb0803a1 +Block 0025 [ 11]: d7cf49bf4207a833 +Block 0025 [ 12]: 64bc64f604b3f54e +Block 0025 [ 13]: b37bfc379b820700 +Block 0025 [ 14]: f6fcf8867e9ed30a +Block 0025 [ 15]: 2cf52fe2e641e6cd +Block 0025 [ 16]: d9b5d1d957265528 +Block 0025 [ 17]: 456c76fd493723d9 +Block 0025 [ 18]: d09ec25592ba65e1 +Block 0025 [ 19]: 74ead8f490ea2724 +Block 0025 [ 20]: 1fcd94f345103418 +Block 0025 [ 21]: 28191af193f3b4a8 +Block 0025 [ 22]: 00ba309bea6bc75e +Block 0025 [ 23]: f820f928e042b770 +Block 0025 [ 24]: 0096864fb4a6195a +Block 0025 [ 25]: 1deb4dd4d925fc05 +Block 0025 [ 26]: 28e822e800e1f326 +Block 0025 [ 27]: 8a9e61f3ff3536f6 +Block 0025 [ 28]: 7bd53608d022cc05 +Block 0025 [ 29]: dc1da98bfbf23a80 +Block 0025 [ 30]: 335ec2757c72f04a +Block 0025 [ 31]: c699727d298109d9 +Block 0025 [ 32]: 5c4f4efb6a24011c +Block 0025 [ 33]: 45abc8326a1c11a6 +Block 0025 [ 34]: ea1ec080a5afa957 +Block 0025 [ 35]: c710f53a3016e4cf +Block 0025 [ 36]: 48bc8eae571960ee +Block 0025 [ 37]: 9717942f28632927 +Block 0025 [ 38]: baefc76649ee961b +Block 0025 [ 39]: 913d6a3d5cbebe92 +Block 0025 [ 40]: 3d486447ff8cdeb9 +Block 0025 [ 41]: 738e311c3606c310 +Block 0025 [ 42]: 752814a9b8a98007 +Block 0025 [ 43]: ea80a6739c87925e +Block 0025 [ 44]: d05607c48043b531 +Block 0025 [ 45]: 4e8077320bcb121a +Block 0025 [ 46]: db134a8b3ce51f86 +Block 0025 [ 47]: a3b62a8db4d931cb +Block 0025 [ 48]: 479838f512a07a3c +Block 0025 [ 49]: ad416f96a9c1dc62 +Block 0025 [ 50]: 2ce8d6c41e022354 +Block 0025 [ 51]: 02e88e689bb3c9bc +Block 0025 [ 52]: 4c4fa4dfd77f1efc +Block 0025 [ 53]: e481206da484d670 +Block 0025 [ 54]: 43a91e27c52cb0de +Block 0025 [ 55]: 9a3863141390c605 +Block 0025 [ 56]: db07004e00d8628d +Block 0025 [ 57]: b05ad69ed0d8db58 +Block 0025 [ 58]: aa78c6f41ae31f4c +Block 0025 [ 59]: 372bc9ff8debf9a9 +Block 0025 [ 60]: 832af3443b613cd2 +Block 0025 [ 61]: 10176ea29c715def +Block 0025 [ 62]: f1ae3f51da186219 +Block 0025 [ 63]: eb93e663b63849a0 +Block 0025 [ 64]: 0a10808e97df2cc8 +Block 0025 [ 65]: 0a8b16edfe0a46d6 +Block 0025 [ 66]: 25ee9dabd8559f47 +Block 0025 [ 67]: aae095f6613e07f8 +Block 0025 [ 68]: 6dee9a39650d583a +Block 0025 [ 69]: c8da4f9ba5efc464 +Block 0025 [ 70]: 2057651e6272cecf +Block 0025 [ 71]: 5bcf7937a601500b +Block 0025 [ 72]: 8c3097be523605ec +Block 0025 [ 73]: 12008ec70fc55a6b +Block 0025 [ 74]: 1dc40873a708a3a0 +Block 0025 [ 75]: 8550840bfb0b2a74 +Block 0025 [ 76]: 71b76f86ed93b236 +Block 0025 [ 77]: ada3b0d78299d2f3 +Block 0025 [ 78]: 196bbca1dd53c6ba +Block 0025 [ 79]: 25ae9a9b7a909ffd +Block 0025 [ 80]: 8332bc00f837a920 +Block 0025 [ 81]: bb13e06b3dcd6274 +Block 0025 [ 82]: 724e07a3c76bdcd3 +Block 0025 [ 83]: c11a941aa4678ac6 +Block 0025 [ 84]: d69d1f13fabb164e +Block 0025 [ 85]: 2d518e00e58c92ea +Block 0025 [ 86]: 698ecf7437bf07dc +Block 0025 [ 87]: c5758b279f98a217 +Block 0025 [ 88]: 4ace1d8069fb04c7 +Block 0025 [ 89]: 3a6848ca135c48a1 +Block 0025 [ 90]: 1284342c28b552e4 +Block 0025 [ 91]: a7bf09a8fb448bce +Block 0025 [ 92]: 23652822eef77d5b +Block 0025 [ 93]: ede7aa7d9975c43e +Block 0025 [ 94]: ec8d6127d93a7b37 +Block 0025 [ 95]: 38f50b3d0f17f5c9 +Block 0025 [ 96]: 91a10d4b7fe9f30b +Block 0025 [ 97]: 63112ee0f40a6241 +Block 0025 [ 98]: fad7e72daa8ad18d +Block 0025 [ 99]: 07e0f4d64d5744cc +Block 0025 [100]: aafbd22997d5cb7c +Block 0025 [101]: 76e6e220725528df +Block 0025 [102]: d540860ca129a3d4 +Block 0025 [103]: c652f20d7f2dafc6 +Block 0025 [104]: 39619c788de5f720 +Block 0025 [105]: b1153fbf6bc05c68 +Block 0025 [106]: 7936d6405a7745b0 +Block 0025 [107]: 69e1ea5b7dddab89 +Block 0025 [108]: a535615b5285f419 +Block 0025 [109]: c7039ed18206a233 +Block 0025 [110]: 0edf3cf1262dcd26 +Block 0025 [111]: 1f0b4499b2b9e8b2 +Block 0025 [112]: 671bed1ce2de5052 +Block 0025 [113]: 0e8b79824c58ca80 +Block 0025 [114]: 874458d3d760dd5a +Block 0025 [115]: 249f129d67cf59a5 +Block 0025 [116]: bc6962f83ec41f7d +Block 0025 [117]: 3b5b2bf5dbba3f76 +Block 0025 [118]: bc3213efa967e1e2 +Block 0025 [119]: 6a9208a3b0e96a13 +Block 0025 [120]: 4cc594a949c15018 +Block 0025 [121]: edc4f2d74b9ed106 +Block 0025 [122]: 17189edb9d25be84 +Block 0025 [123]: 335cacc975861bdb +Block 0025 [124]: 4e40d19267f33144 +Block 0025 [125]: fe8b5e16f077d4dd +Block 0025 [126]: eef70082d8d8ca4d +Block 0025 [127]: 0e35a18383368440 +Block 0026 [ 0]: f5fb505370677e73 +Block 0026 [ 1]: 3d8aab3e00026248 +Block 0026 [ 2]: 039ea2f2dc076a2b +Block 0026 [ 3]: 39c8d87ab919d22d +Block 0026 [ 4]: 5e4289e8494d7e21 +Block 0026 [ 5]: b62799988c90ffa4 +Block 0026 [ 6]: e4bbf6d54ec025a4 +Block 0026 [ 7]: d4906bcf299eb95f +Block 0026 [ 8]: 65430d2f59e217cf +Block 0026 [ 9]: 82d0ebd6510efa74 +Block 0026 [ 10]: 7631d5fc46073cb9 +Block 0026 [ 11]: 37293f77752fbc98 +Block 0026 [ 12]: cce2024931226a4e +Block 0026 [ 13]: 0b3e54fd2ae0b3ce +Block 0026 [ 14]: 35e2af0be586cf66 +Block 0026 [ 15]: f94a5a46a427b24c +Block 0026 [ 16]: 4030eb43a50f4bc6 +Block 0026 [ 17]: e5e817c211ffd536 +Block 0026 [ 18]: ce4d39f262d8906f +Block 0026 [ 19]: e109bca81d06ea97 +Block 0026 [ 20]: a52c2ea963311247 +Block 0026 [ 21]: ea1050b3679d3f68 +Block 0026 [ 22]: c9dae9c84e36b885 +Block 0026 [ 23]: 1e6a0ef172a58c1f +Block 0026 [ 24]: a1cdd2e6d157f211 +Block 0026 [ 25]: c2b28b17582588b2 +Block 0026 [ 26]: a2269ef1361a34d1 +Block 0026 [ 27]: 6f4108d0009a0a4a +Block 0026 [ 28]: 67e945bdf88e3a45 +Block 0026 [ 29]: 2734e1edf6b6d1ff +Block 0026 [ 30]: 64003857fe488908 +Block 0026 [ 31]: 23097d34ae04fdaa +Block 0026 [ 32]: 9f0ea9d7bac5f1ee +Block 0026 [ 33]: 16f9ff9a693423f8 +Block 0026 [ 34]: e8d94b5ad2280a5d +Block 0026 [ 35]: e08e8d1fddc32380 +Block 0026 [ 36]: a1ac08a8060bcaab +Block 0026 [ 37]: 437c08cbae28e67f +Block 0026 [ 38]: 3d269e57e32cecd0 +Block 0026 [ 39]: 8337155690848c62 +Block 0026 [ 40]: a868cc5d9c97cc04 +Block 0026 [ 41]: 9f719a13b79ba555 +Block 0026 [ 42]: c06df5e22c349b6d +Block 0026 [ 43]: 8fcbaad237433b6a +Block 0026 [ 44]: fc34c1b9d2bdd5f4 +Block 0026 [ 45]: b9bb08869920d24b +Block 0026 [ 46]: baf85dcd7f37fa00 +Block 0026 [ 47]: 35a40e91760a75c1 +Block 0026 [ 48]: 6e93320f5d477425 +Block 0026 [ 49]: 826a134a9801cb0b +Block 0026 [ 50]: 910033d07a75c521 +Block 0026 [ 51]: 755b3bc8251407db +Block 0026 [ 52]: 8dd64b25a605b6b8 +Block 0026 [ 53]: b950fbb99e155c2b +Block 0026 [ 54]: e87b27b31068f5b0 +Block 0026 [ 55]: ba423858cdff8905 +Block 0026 [ 56]: 642636c58acba031 +Block 0026 [ 57]: 017a0449dd896efd +Block 0026 [ 58]: 7620fc91870c63e7 +Block 0026 [ 59]: 3b757db72cc7c3e0 +Block 0026 [ 60]: 52c6505f35dea770 +Block 0026 [ 61]: bd6ed47f26715259 +Block 0026 [ 62]: f0d6f2d380f155fd +Block 0026 [ 63]: c6c8518a64cac880 +Block 0026 [ 64]: 53f09f11d506562c +Block 0026 [ 65]: c51aac6790e918c7 +Block 0026 [ 66]: 93a2ca9a510fb338 +Block 0026 [ 67]: f4974aa31138dd1f +Block 0026 [ 68]: ea548f592104df60 +Block 0026 [ 69]: d099d955bc104c10 +Block 0026 [ 70]: 8feaf5ad3acbeead +Block 0026 [ 71]: d774bca52aa40db1 +Block 0026 [ 72]: 631b8c8e5206ef96 +Block 0026 [ 73]: c2467f34313a2f1a +Block 0026 [ 74]: fbe46c13ef4734a9 +Block 0026 [ 75]: 84277835d9d323b2 +Block 0026 [ 76]: 2e4d98f1a671683d +Block 0026 [ 77]: e86bcdfafe1c9704 +Block 0026 [ 78]: 858d689f5447874c +Block 0026 [ 79]: 34c11778bae7a605 +Block 0026 [ 80]: c63373727a5b4951 +Block 0026 [ 81]: 2b6ee36647dbeab0 +Block 0026 [ 82]: 593c1210e15b9a2e +Block 0026 [ 83]: 7cbabf2d6a7f60dd +Block 0026 [ 84]: f6286c13a4054115 +Block 0026 [ 85]: d504d66401d19f08 +Block 0026 [ 86]: 4377a456061e4ba4 +Block 0026 [ 87]: bedc6a171c2c9f7d +Block 0026 [ 88]: daaa4c2b70e89d78 +Block 0026 [ 89]: b43f52f216b02a80 +Block 0026 [ 90]: b5938ee138c6bc1c +Block 0026 [ 91]: 0877679273c8f0c6 +Block 0026 [ 92]: f6fe77bd04c9e7a1 +Block 0026 [ 93]: 851cbda45a28add1 +Block 0026 [ 94]: 5fe2bc3b7c34160f +Block 0026 [ 95]: 7e04cfbb08fbfec3 +Block 0026 [ 96]: 560e3def15d51f49 +Block 0026 [ 97]: aa9dd5cd812de83c +Block 0026 [ 98]: fb96e9ac7eb362fb +Block 0026 [ 99]: 77a97e7fe8461cc4 +Block 0026 [100]: 49d6ef7afeabf9df +Block 0026 [101]: 2db33b3eab3c3e74 +Block 0026 [102]: 22ee497b98aff5a0 +Block 0026 [103]: daa8c64262e0e084 +Block 0026 [104]: ac2047b2a642b5f6 +Block 0026 [105]: c6a1bdbe1afafe7a +Block 0026 [106]: 40cc38524f5589f7 +Block 0026 [107]: 981613d268c3c78f +Block 0026 [108]: 9db3258cd0588b72 +Block 0026 [109]: ec987d516209c1d3 +Block 0026 [110]: e186f53aa49c1c16 +Block 0026 [111]: e21f193c314f6914 +Block 0026 [112]: 8b8f04c5e30d6a65 +Block 0026 [113]: 32f0379b3e282763 +Block 0026 [114]: 74611ed89926c85b +Block 0026 [115]: 82cb876074150f22 +Block 0026 [116]: b4e8636aa8d530e4 +Block 0026 [117]: 98c5cb9f36e3ca0e +Block 0026 [118]: 562de3e3a60b6377 +Block 0026 [119]: 6a9abbd609e9a77b +Block 0026 [120]: 963e356cec311d7b +Block 0026 [121]: 7075034174072426 +Block 0026 [122]: f58b94caf83bbb5c +Block 0026 [123]: 3d6e98f918fc35fc +Block 0026 [124]: c5408b21805a47a6 +Block 0026 [125]: b708ec7ca7019412 +Block 0026 [126]: b092d3938ed92f30 +Block 0026 [127]: cff8bf31a57540ef +Block 0027 [ 0]: 3833936ed309a40e +Block 0027 [ 1]: aa12aa94d9454a14 +Block 0027 [ 2]: 72c4a5b5e0eeb799 +Block 0027 [ 3]: 4024ffdb54eef730 +Block 0027 [ 4]: cd7bf4160fba3fff +Block 0027 [ 5]: 167d04d9139c38c7 +Block 0027 [ 6]: 570f0841b540745e +Block 0027 [ 7]: af34a7133cd2a7eb +Block 0027 [ 8]: 8e02eb212ba5d1e4 +Block 0027 [ 9]: 84756a529a924066 +Block 0027 [ 10]: fe2a7294d8395683 +Block 0027 [ 11]: 227ea6f39aa2db15 +Block 0027 [ 12]: 35891d0ffa4e156f +Block 0027 [ 13]: 73602a9a8749e196 +Block 0027 [ 14]: 4a85f3a4d4d8da72 +Block 0027 [ 15]: 334564cd39f78db5 +Block 0027 [ 16]: bb50ff365ec10d5b +Block 0027 [ 17]: 15af66399cd11253 +Block 0027 [ 18]: a7cf019ed9b1246b +Block 0027 [ 19]: fe94c3e001243205 +Block 0027 [ 20]: 9778185b3cad932f +Block 0027 [ 21]: 7f1bd55772064b0b +Block 0027 [ 22]: 9e13e24cbfc382ca +Block 0027 [ 23]: dbd4d1bbc191d0f7 +Block 0027 [ 24]: 7dd89184bbe49fd5 +Block 0027 [ 25]: 5af27c9e566eac9c +Block 0027 [ 26]: ed57cf89c8c5f4a7 +Block 0027 [ 27]: 836c0c093002e5f3 +Block 0027 [ 28]: dff3d9f1eb535dc4 +Block 0027 [ 29]: 327d67fc2049f8fb +Block 0027 [ 30]: 605fd14694fa9449 +Block 0027 [ 31]: 66822ee641a6ca0c +Block 0027 [ 32]: bc7c177b547a9299 +Block 0027 [ 33]: b228d67439803c1d +Block 0027 [ 34]: e80660f6a38d8930 +Block 0027 [ 35]: 48465638b515839e +Block 0027 [ 36]: f59aa28a2b5dfb4d +Block 0027 [ 37]: 451ed876660c6810 +Block 0027 [ 38]: 29ebbdcc493a13e4 +Block 0027 [ 39]: 9ad95963564f5e59 +Block 0027 [ 40]: d9f513c58466e6e4 +Block 0027 [ 41]: e8502393e51b4216 +Block 0027 [ 42]: 55410a20946569e7 +Block 0027 [ 43]: ac2e16e37e14263e +Block 0027 [ 44]: 8cc37d82b6dd99d5 +Block 0027 [ 45]: 018bb84f0209f5ce +Block 0027 [ 46]: af3e3d76394cb3e7 +Block 0027 [ 47]: ab519dd479103c56 +Block 0027 [ 48]: ec37868d55b82a51 +Block 0027 [ 49]: 0bd60f8790e408f8 +Block 0027 [ 50]: ca67177c3f31c96b +Block 0027 [ 51]: f6b20d690e55b321 +Block 0027 [ 52]: cb607a912230f0eb +Block 0027 [ 53]: 7c7c06a2d370ef3b +Block 0027 [ 54]: a5398513af3fed38 +Block 0027 [ 55]: a8e6ec3c16cda63f +Block 0027 [ 56]: a7288864d44f667b +Block 0027 [ 57]: 360e196a67d37b9e +Block 0027 [ 58]: ec06a0c378b7b1cc +Block 0027 [ 59]: f826d0f0aca8de3d +Block 0027 [ 60]: c8d1345bd495ce06 +Block 0027 [ 61]: c8cb738599268128 +Block 0027 [ 62]: 0f077e43a8105e05 +Block 0027 [ 63]: 5949111094f84982 +Block 0027 [ 64]: caab31a8dce41c8e +Block 0027 [ 65]: 14ec39b16f79a72c +Block 0027 [ 66]: 30f52ced8af85cbf +Block 0027 [ 67]: e7ecff9e0e0e5770 +Block 0027 [ 68]: bade9fd9644f14fc +Block 0027 [ 69]: f070e6746d4f632b +Block 0027 [ 70]: 928f8d1f8a137183 +Block 0027 [ 71]: fa7d998ddba748bb +Block 0027 [ 72]: 844b46d51416c7d8 +Block 0027 [ 73]: a8ce3dccbf849300 +Block 0027 [ 74]: 40b5bf59fac37079 +Block 0027 [ 75]: e693d904e51eef2d +Block 0027 [ 76]: 90fef2b130484972 +Block 0027 [ 77]: ad5b43c0ad1315fb +Block 0027 [ 78]: f5c51886d9fd50ee +Block 0027 [ 79]: 804c2aa34fba3aee +Block 0027 [ 80]: 4108d414e6218b42 +Block 0027 [ 81]: a055d4fb2e34d89f +Block 0027 [ 82]: d2341e113762009e +Block 0027 [ 83]: b0fc9752a454da10 +Block 0027 [ 84]: d1288c476704b25b +Block 0027 [ 85]: d3c4c572d91465ac +Block 0027 [ 86]: 2f8069a8289e7aca +Block 0027 [ 87]: 71f3b6a4b26995d6 +Block 0027 [ 88]: 4441ff6c4000ce3c +Block 0027 [ 89]: d3c96f999b30851e +Block 0027 [ 90]: 009122df0b16cfdf +Block 0027 [ 91]: bcdd32311dca65de +Block 0027 [ 92]: d1eb48772ad5d526 +Block 0027 [ 93]: 23906d56ebf95940 +Block 0027 [ 94]: 3d320da7906f09ca +Block 0027 [ 95]: 806162060635d7cf +Block 0027 [ 96]: a65c264228f152ef +Block 0027 [ 97]: 8402f96b258bbb89 +Block 0027 [ 98]: 49a04047c237edd3 +Block 0027 [ 99]: 3042a8a4678be559 +Block 0027 [100]: d3f7d3340ec80df8 +Block 0027 [101]: 1d17540fc5c633d1 +Block 0027 [102]: 4ad144abcec46b9c +Block 0027 [103]: 3a6805112b3af97e +Block 0027 [104]: a6772ba931271c65 +Block 0027 [105]: 24807675ebbd48e4 +Block 0027 [106]: d58fbed9e7350632 +Block 0027 [107]: 52454dc82c274360 +Block 0027 [108]: b12793e27b3e12f6 +Block 0027 [109]: 9269abbd3d9d1ae1 +Block 0027 [110]: 7b980387ddcb0e90 +Block 0027 [111]: 3338569394aa1806 +Block 0027 [112]: 1c985037c4308c4c +Block 0027 [113]: 3740dd5683d775d5 +Block 0027 [114]: acec65817bd7ba6c +Block 0027 [115]: 41ab62f1c98e3bfb +Block 0027 [116]: 973525758db70ade +Block 0027 [117]: d8d9076c0fe5513b +Block 0027 [118]: b9dda9b5d7a00cc6 +Block 0027 [119]: 85c1543f46708ec5 +Block 0027 [120]: 72bd1954fc92405c +Block 0027 [121]: 00f76076b61ace34 +Block 0027 [122]: a98d6335766bf76f +Block 0027 [123]: 1fbd089ee7c6f748 +Block 0027 [124]: 10136fb34cf6aaa2 +Block 0027 [125]: 50c5846e44fbc975 +Block 0027 [126]: 977ddbb793a83311 +Block 0027 [127]: d501160dda0add24 +Block 0028 [ 0]: b3f74da78e4bb4d1 +Block 0028 [ 1]: 0068b2500f8b2107 +Block 0028 [ 2]: acf96291acfb9feb +Block 0028 [ 3]: 43200819c384e18f +Block 0028 [ 4]: 54dccb52bc0ed9d4 +Block 0028 [ 5]: dd7d449eb8389b6d +Block 0028 [ 6]: 4c47575882bed005 +Block 0028 [ 7]: dccf5ec02f7b653e +Block 0028 [ 8]: 81d84bb23c0c4d99 +Block 0028 [ 9]: 3cc8ff7f6b1670dc +Block 0028 [ 10]: eb5447dc01331f1b +Block 0028 [ 11]: e6c5f694f1638081 +Block 0028 [ 12]: 5cfa9e9831bfd598 +Block 0028 [ 13]: 2cf881d2dfb3bb2e +Block 0028 [ 14]: 6e80b12a71cdf77b +Block 0028 [ 15]: 8379ddd89673f35e +Block 0028 [ 16]: ce5154ab9a574b72 +Block 0028 [ 17]: 41ea66748e335062 +Block 0028 [ 18]: 657679fce01a5d7d +Block 0028 [ 19]: 3896c88c2e5baabc +Block 0028 [ 20]: 315589187590cf3d +Block 0028 [ 21]: 0d39974eeae411ab +Block 0028 [ 22]: 84d402703dbdb892 +Block 0028 [ 23]: ba96e74e1919a832 +Block 0028 [ 24]: 30b7a76e90011125 +Block 0028 [ 25]: 28f312dc69ad2ffb +Block 0028 [ 26]: 81700effa6f96864 +Block 0028 [ 27]: 92c92ea93e3095e2 +Block 0028 [ 28]: 371c9bd565a0debc +Block 0028 [ 29]: f9337cdf06c282f3 +Block 0028 [ 30]: 27217fa566a5bbce +Block 0028 [ 31]: 10c312681c3491c5 +Block 0028 [ 32]: e7cdf437453ca28d +Block 0028 [ 33]: 4530c7ee1fd2677a +Block 0028 [ 34]: d16c39d8950b1db1 +Block 0028 [ 35]: 5ee3b113a97369c0 +Block 0028 [ 36]: f96a3796450f218d +Block 0028 [ 37]: 9dbbf0bbb9c7affc +Block 0028 [ 38]: 9367894b04cb7525 +Block 0028 [ 39]: 63d505005ca97afc +Block 0028 [ 40]: 755fba7c0546dab4 +Block 0028 [ 41]: 2c94e4f1ea898b9f +Block 0028 [ 42]: aaa9b9248181e1c3 +Block 0028 [ 43]: ba827f64a01f2b84 +Block 0028 [ 44]: 36e310230e22e0cf +Block 0028 [ 45]: d76f7cb6c31c910f +Block 0028 [ 46]: 7f55c08ca24c175f +Block 0028 [ 47]: 70d59843f362422b +Block 0028 [ 48]: fb2cc00b52176c97 +Block 0028 [ 49]: 9e91c272a354ccf9 +Block 0028 [ 50]: fedfa3bbfd084038 +Block 0028 [ 51]: 66c268e3d3471545 +Block 0028 [ 52]: cdcd7168925ae4eb +Block 0028 [ 53]: 1816c7d21f19a754 +Block 0028 [ 54]: 9e3100dd7798b55f +Block 0028 [ 55]: da2ef9205dcf4b82 +Block 0028 [ 56]: 372619bb220cf87c +Block 0028 [ 57]: 22a4413ecb6e4f99 +Block 0028 [ 58]: 03717cf0bfe1503d +Block 0028 [ 59]: 3caaa69489d9b6fb +Block 0028 [ 60]: cb98f0775973e3df +Block 0028 [ 61]: 1d888ba44c947535 +Block 0028 [ 62]: fc0d0ddb3ec24d7b +Block 0028 [ 63]: 1bc085ba44559e11 +Block 0028 [ 64]: 8953975b8539d843 +Block 0028 [ 65]: f96aea013628b82c +Block 0028 [ 66]: b419370dd5c74690 +Block 0028 [ 67]: fb6c6aa70aee9799 +Block 0028 [ 68]: 85c3aaeb348e6555 +Block 0028 [ 69]: 59dc27ad4cb80f88 +Block 0028 [ 70]: ed7afeffdf385af3 +Block 0028 [ 71]: 0f0dfd4dc6230c52 +Block 0028 [ 72]: 4636832c11781396 +Block 0028 [ 73]: 2c33a5a47579ca10 +Block 0028 [ 74]: ad88de9061a25e88 +Block 0028 [ 75]: d1224222eeedd591 +Block 0028 [ 76]: 69bc46adc65fa8ad +Block 0028 [ 77]: 1ee3233180d64833 +Block 0028 [ 78]: 11948dbb66ed6a04 +Block 0028 [ 79]: 31488740e7c9662d +Block 0028 [ 80]: 16df31894039b685 +Block 0028 [ 81]: af4f60facedaede6 +Block 0028 [ 82]: d683f45a39bb4306 +Block 0028 [ 83]: 13c961bf8ba5a0ec +Block 0028 [ 84]: 03530369d1cf43d4 +Block 0028 [ 85]: 71d91b318967084c +Block 0028 [ 86]: 32274b144bac8237 +Block 0028 [ 87]: d6d8eaac469832c5 +Block 0028 [ 88]: 3fefc193c0e9bbae +Block 0028 [ 89]: 54c4d65a3dbc724e +Block 0028 [ 90]: 9f5f3ada21ba189f +Block 0028 [ 91]: c6f754427c4d6fbc +Block 0028 [ 92]: aa2578e45b353de0 +Block 0028 [ 93]: a189e64da4c5edee +Block 0028 [ 94]: d8925737d18ba6cf +Block 0028 [ 95]: 19e7541d4bb078e6 +Block 0028 [ 96]: 6257ce84db6a0585 +Block 0028 [ 97]: c28fd38e38d259f5 +Block 0028 [ 98]: 21e5bbd6bc911d42 +Block 0028 [ 99]: 9e7ff827f7a6aa0b +Block 0028 [100]: 87b9d2b325e2d51e +Block 0028 [101]: 063d74eb3465a8f1 +Block 0028 [102]: fa4ce27126d960c1 +Block 0028 [103]: 6cf8a01df2a65fb7 +Block 0028 [104]: d3dd5981fd75d786 +Block 0028 [105]: 1d2aeee33712ebd9 +Block 0028 [106]: aef7d538f83bd76a +Block 0028 [107]: bc930cdb8705578e +Block 0028 [108]: 7cadc7439eb2940a +Block 0028 [109]: 169745940d7e1948 +Block 0028 [110]: 7d8665a74288db3c +Block 0028 [111]: b748b1cd8d96ba2a +Block 0028 [112]: defaba3d0b9aec81 +Block 0028 [113]: 7a5caf35df223c73 +Block 0028 [114]: b4a74e84a51b11fa +Block 0028 [115]: ebf12950c6f34a6e +Block 0028 [116]: 05683a715cc17966 +Block 0028 [117]: df2e9871efcc643d +Block 0028 [118]: 1b66b82b99320384 +Block 0028 [119]: 997df1a8e8e9244a +Block 0028 [120]: 20263014f76f78e8 +Block 0028 [121]: 42769a9211f735e5 +Block 0028 [122]: e8cc76e32520ff1b +Block 0028 [123]: 0a9130ff5bb61092 +Block 0028 [124]: 1bac198c40fb6a57 +Block 0028 [125]: fa685df2fe727bb3 +Block 0028 [126]: b3e7bcfd42ffe2d7 +Block 0028 [127]: 66be499624073e2d +Block 0029 [ 0]: 1178d0480551dfc6 +Block 0029 [ 1]: 5187eed47212089f +Block 0029 [ 2]: 42898321caf5af34 +Block 0029 [ 3]: 1e0565d05fb9f254 +Block 0029 [ 4]: 68d1cf52778d2feb +Block 0029 [ 5]: 2fc1c91be6b25822 +Block 0029 [ 6]: 9e616744ca1cd585 +Block 0029 [ 7]: cb52d5be9e180b62 +Block 0029 [ 8]: ca2217ead26e1eab +Block 0029 [ 9]: 75f749c30dfb9fab +Block 0029 [ 10]: 7ee7fba56c86c33b +Block 0029 [ 11]: 6d5b689f4f800858 +Block 0029 [ 12]: 28a17498950b879a +Block 0029 [ 13]: cb81340219891240 +Block 0029 [ 14]: c273841814b1e916 +Block 0029 [ 15]: f1674554a51e9b34 +Block 0029 [ 16]: b8edcf4f61113467 +Block 0029 [ 17]: 4c9fed95227d3220 +Block 0029 [ 18]: ea2560287408d60b +Block 0029 [ 19]: 910e6ebd0d760e08 +Block 0029 [ 20]: 7249b66d9458152d +Block 0029 [ 21]: 5bbbafb398ebe2af +Block 0029 [ 22]: d14cca3302065ae9 +Block 0029 [ 23]: 2381a24f70d7461f +Block 0029 [ 24]: 4610f2b3c45aaa48 +Block 0029 [ 25]: 0770c2aafa948d59 +Block 0029 [ 26]: 4b88fdc8aa300ec9 +Block 0029 [ 27]: 8be083716fb9ec8a +Block 0029 [ 28]: 57fc57bbf62aea8f +Block 0029 [ 29]: bdfcd3491ba8f1ff +Block 0029 [ 30]: 0aeed63235663fd9 +Block 0029 [ 31]: 191012cb4aa161e1 +Block 0029 [ 32]: 60678d765589fd1d +Block 0029 [ 33]: 223281bdd84345cb +Block 0029 [ 34]: 1a3f94b2164cc584 +Block 0029 [ 35]: 15e66f71f0544969 +Block 0029 [ 36]: a1b51a96bf12eb48 +Block 0029 [ 37]: 8b0a8a65b688eb0d +Block 0029 [ 38]: 6b0b58dd2d36652a +Block 0029 [ 39]: e5539a59cfcdefe7 +Block 0029 [ 40]: f2008d87b7556a7c +Block 0029 [ 41]: 84110ef2f60a53ee +Block 0029 [ 42]: b733f4f75f4b849d +Block 0029 [ 43]: a47f8945a6faebc6 +Block 0029 [ 44]: 3d5d650d8bb93088 +Block 0029 [ 45]: f5fc955ad93ab98a +Block 0029 [ 46]: 8af341c08d45dee8 +Block 0029 [ 47]: 7d07c8d014e9163f +Block 0029 [ 48]: 887a2fca5f135987 +Block 0029 [ 49]: ab251174f76ad2b9 +Block 0029 [ 50]: 404602ca6bcd80df +Block 0029 [ 51]: b4c2749a49e85a7d +Block 0029 [ 52]: 0d5d67e561f20bf6 +Block 0029 [ 53]: 53db11a315a12a0f +Block 0029 [ 54]: d802cc1dd33b595b +Block 0029 [ 55]: 68afa26bb1bc8087 +Block 0029 [ 56]: 9fa3a9eeee65c849 +Block 0029 [ 57]: 166ad5e90e1fb34a +Block 0029 [ 58]: 111cbb03483c7948 +Block 0029 [ 59]: d1a00ee3bc309870 +Block 0029 [ 60]: c26b7662c5117bcc +Block 0029 [ 61]: 02fd9550715a76b9 +Block 0029 [ 62]: 3bd94c9f496d061b +Block 0029 [ 63]: bd8c34d3de23173b +Block 0029 [ 64]: 73903c5a6130726c +Block 0029 [ 65]: 14e7ae74063b1c41 +Block 0029 [ 66]: 880c6cab2bf1f166 +Block 0029 [ 67]: f9766e9ef9d5bfd9 +Block 0029 [ 68]: addb32c388d90782 +Block 0029 [ 69]: 6554423048bedf74 +Block 0029 [ 70]: 51c6576b5281b903 +Block 0029 [ 71]: eeecd5b168b9b5bf +Block 0029 [ 72]: 062dca803c473ec9 +Block 0029 [ 73]: fb84d11eb83a1f48 +Block 0029 [ 74]: 9163949866a646c6 +Block 0029 [ 75]: ae458ee2c4aa38b0 +Block 0029 [ 76]: ba7b37a0fe308791 +Block 0029 [ 77]: 23bdb9b915739e12 +Block 0029 [ 78]: cebef87ee8e00146 +Block 0029 [ 79]: 1ff5050825cb849a +Block 0029 [ 80]: dcaf4b96d9369968 +Block 0029 [ 81]: cbd9923d4a25e778 +Block 0029 [ 82]: fda760b9bcce8309 +Block 0029 [ 83]: 9ba39fcea41dea54 +Block 0029 [ 84]: ff89703e444c7d03 +Block 0029 [ 85]: c1528bfd6f82fb85 +Block 0029 [ 86]: 04d4c35cba24af07 +Block 0029 [ 87]: 5d34229c32c2f458 +Block 0029 [ 88]: 8d07eb7d2dc56870 +Block 0029 [ 89]: 6dd6ea0c611eb1b5 +Block 0029 [ 90]: bac1f9799d2ab54e +Block 0029 [ 91]: 173b5b2a973bdaaf +Block 0029 [ 92]: b1a4d48e7ee1a46f +Block 0029 [ 93]: 0fb36719adc8e91c +Block 0029 [ 94]: faefc2753cb6cdb7 +Block 0029 [ 95]: 3427dee22c050a26 +Block 0029 [ 96]: 648629655322c85e +Block 0029 [ 97]: da6a37e23216fe1e +Block 0029 [ 98]: dac40e7d38f3ada2 +Block 0029 [ 99]: 1f9e046da29bcca6 +Block 0029 [100]: b0fa2e7b8f53a3ad +Block 0029 [101]: 4b7971342bd55433 +Block 0029 [102]: 14101d41f2afb513 +Block 0029 [103]: 1f0363b9b7c93230 +Block 0029 [104]: c26b7dc1abe4c074 +Block 0029 [105]: 511202c932605bc3 +Block 0029 [106]: 506f446b14c2fa0d +Block 0029 [107]: 9e5d0d754af3c04b +Block 0029 [108]: 2e79bcb2c0a7e061 +Block 0029 [109]: 5ce8a45905514efd +Block 0029 [110]: bb21b252b1c6abce +Block 0029 [111]: 27a6a502660183c1 +Block 0029 [112]: 3b27a572ce4e05c6 +Block 0029 [113]: a0e0c0768b022220 +Block 0029 [114]: 4873709f797c3e92 +Block 0029 [115]: 3fa74bae85c78557 +Block 0029 [116]: 330626653f791311 +Block 0029 [117]: 4e3401cd1d1f092e +Block 0029 [118]: f4ab84a94f25d989 +Block 0029 [119]: c1f9db3453d949e2 +Block 0029 [120]: d00d0eae1c6b4941 +Block 0029 [121]: 2f72341a47394d0f +Block 0029 [122]: 9faf011956ae9b44 +Block 0029 [123]: 6d5af027411369bf +Block 0029 [124]: 3ba9db1f0e087f5c +Block 0029 [125]: ff5f35b92c04605d +Block 0029 [126]: 6b522baa870cd062 +Block 0029 [127]: 116c95d872b06470 +Block 0030 [ 0]: a497707d907bdbb5 +Block 0030 [ 1]: 1387b1d7e2de9fb2 +Block 0030 [ 2]: e9b7a5ae2c3911c3 +Block 0030 [ 3]: 2304e30b4abe1342 +Block 0030 [ 4]: 6569e5e7e495cac3 +Block 0030 [ 5]: e781abd4b3be3fa2 +Block 0030 [ 6]: cec45944649475fe +Block 0030 [ 7]: e3fd8069db7556ca +Block 0030 [ 8]: 12aad9e722e95123 +Block 0030 [ 9]: f63c54f3569a0288 +Block 0030 [ 10]: 602202c9a3326c48 +Block 0030 [ 11]: 034a4bb4f502d541 +Block 0030 [ 12]: 906032657dd97cfa +Block 0030 [ 13]: b5a1edcb89d7eeae +Block 0030 [ 14]: b40c965b3a0ec87e +Block 0030 [ 15]: 19beb1de7d74c858 +Block 0030 [ 16]: 84d9844f4f30b2cd +Block 0030 [ 17]: 2de7df0d9270a720 +Block 0030 [ 18]: 987353a68f551dfe +Block 0030 [ 19]: 87231e01671d5682 +Block 0030 [ 20]: 95e08d7d4d13e893 +Block 0030 [ 21]: c9d54121b1cbe05a +Block 0030 [ 22]: 9173beb279257e2f +Block 0030 [ 23]: 6c0b47361287718b +Block 0030 [ 24]: d815836edde64e0d +Block 0030 [ 25]: 3aab70f8ef8acd58 +Block 0030 [ 26]: 3d4eacbb303b8942 +Block 0030 [ 27]: 47074d7a499f1b4d +Block 0030 [ 28]: 6b77d29cc5814f8e +Block 0030 [ 29]: 4a22120fe4303e54 +Block 0030 [ 30]: 788b37c81c090145 +Block 0030 [ 31]: 944d5943a04e0b67 +Block 0030 [ 32]: b3581ddd1331a125 +Block 0030 [ 33]: 9f34510aa2b7d72d +Block 0030 [ 34]: 1c612fbaac10b0c4 +Block 0030 [ 35]: ed62acd73a0b0d39 +Block 0030 [ 36]: 1eb6b7c4c3b33953 +Block 0030 [ 37]: 9598308b94b5e7d8 +Block 0030 [ 38]: c28392bfb3e48aff +Block 0030 [ 39]: 86833aec5beb2fd1 +Block 0030 [ 40]: be199029fcd63ac9 +Block 0030 [ 41]: 146e2a07296b54bc +Block 0030 [ 42]: 1b42bea1f2fffb84 +Block 0030 [ 43]: 4e01f060efa7f0dd +Block 0030 [ 44]: dfc3a66f34fdc191 +Block 0030 [ 45]: aaba1fb5f896bb29 +Block 0030 [ 46]: 3297ba5c2b77908a +Block 0030 [ 47]: dbb1641509d7d204 +Block 0030 [ 48]: 2a8a4be0b611de11 +Block 0030 [ 49]: 5abb85518f96f0ce +Block 0030 [ 50]: 23eec337eedea731 +Block 0030 [ 51]: f581a8d567be23b7 +Block 0030 [ 52]: 877c88e984fc6794 +Block 0030 [ 53]: fdf883e49b5450ae +Block 0030 [ 54]: 81ad8e2532db6a2b +Block 0030 [ 55]: a6d3644b428394df +Block 0030 [ 56]: ade7c3614a7f3454 +Block 0030 [ 57]: 4789c2d8ffd935b2 +Block 0030 [ 58]: 09571ee74ecdaeb9 +Block 0030 [ 59]: 5ec25b62459cd7df +Block 0030 [ 60]: ae9063222cebedd0 +Block 0030 [ 61]: 838691ff044dac26 +Block 0030 [ 62]: 9c2b1ff5d82f5c48 +Block 0030 [ 63]: 4ed661d83f838188 +Block 0030 [ 64]: da11ffe4f89a98bf +Block 0030 [ 65]: 026102a18ff640c3 +Block 0030 [ 66]: b40d27b026bd55a3 +Block 0030 [ 67]: 65dd56b86986b85f +Block 0030 [ 68]: b5f744df59d5cf0b +Block 0030 [ 69]: a9d05b38d431021e +Block 0030 [ 70]: 7aa376509a108cbb +Block 0030 [ 71]: 7e0cae8ca01a7ba2 +Block 0030 [ 72]: f257fb68679f2ba5 +Block 0030 [ 73]: a027a9a021201e96 +Block 0030 [ 74]: 8ff39ab8e46c65db +Block 0030 [ 75]: 1f61e97c20b1922b +Block 0030 [ 76]: 2e8f687076b3cbaf +Block 0030 [ 77]: 7d8107a7e3840cd5 +Block 0030 [ 78]: 2f65babde65d296f +Block 0030 [ 79]: 1897c1b8df8db90f +Block 0030 [ 80]: 7d431f0d0229c28d +Block 0030 [ 81]: a1f1c590f3ac726c +Block 0030 [ 82]: 5868070e74cecb5a +Block 0030 [ 83]: 6fca45ad6efdcb57 +Block 0030 [ 84]: ececbb1ddd986c18 +Block 0030 [ 85]: bb4f79fa8793727b +Block 0030 [ 86]: e9ccb85cba576ede +Block 0030 [ 87]: cad0e15d66710c9e +Block 0030 [ 88]: 47339a449ddf32bc +Block 0030 [ 89]: 9d82700ead343ae7 +Block 0030 [ 90]: 48d7c02a64d34fdd +Block 0030 [ 91]: a47baf96226a594f +Block 0030 [ 92]: c1bd47b224ffaa1b +Block 0030 [ 93]: 280edfb69fd7ea1a +Block 0030 [ 94]: 64417df4d9700c3e +Block 0030 [ 95]: a559eb16ca1690aa +Block 0030 [ 96]: 7a4cfedb4e665af8 +Block 0030 [ 97]: e9635d0de30f731a +Block 0030 [ 98]: 5e40ef66b6a35488 +Block 0030 [ 99]: a6c5a440428cae6b +Block 0030 [100]: 464bbed452e49552 +Block 0030 [101]: 2cd703be6cb48289 +Block 0030 [102]: 19814217d930cbb8 +Block 0030 [103]: 9ca6007e94343418 +Block 0030 [104]: 83628a532ebee52b +Block 0030 [105]: b96a42109d9b7797 +Block 0030 [106]: ccc287509dc3a229 +Block 0030 [107]: bcb1714a388e28ab +Block 0030 [108]: 7c0210e4bc243b95 +Block 0030 [109]: 0701316191270f44 +Block 0030 [110]: fe186f16bf6a4331 +Block 0030 [111]: ca565a897bcd7ef8 +Block 0030 [112]: fe5a66451bdf69f5 +Block 0030 [113]: 076858ec4a523860 +Block 0030 [114]: efe04a084a633f98 +Block 0030 [115]: be0a2c63541771bb +Block 0030 [116]: f32d430350e88858 +Block 0030 [117]: 7817ff971e7f4810 +Block 0030 [118]: b6f18c6e97c66e6b +Block 0030 [119]: ad4804cbb61673f5 +Block 0030 [120]: 4001049c9d5a4a69 +Block 0030 [121]: 7d04aa55446e6096 +Block 0030 [122]: 3bd9c63472650ea6 +Block 0030 [123]: c7b3e0272cfcd957 +Block 0030 [124]: 2dc05b7529c3166d +Block 0030 [125]: 7eb2b09e8b11d32e +Block 0030 [126]: d91455278416d563 +Block 0030 [127]: 66d637a2a2b6c5cc +Block 0031 [ 0]: 944a7ec736864f24 +Block 0031 [ 1]: 62207f9b144f6041 +Block 0031 [ 2]: 1b91de707e936258 +Block 0031 [ 3]: b11599a08b417d8b +Block 0031 [ 4]: 89ee0ff3f7266b4e +Block 0031 [ 5]: 36fb1c44fefd9e7f +Block 0031 [ 6]: 5cd146a84de48497 +Block 0031 [ 7]: d729287c49dba1ee +Block 0031 [ 8]: f63844866eab1228 +Block 0031 [ 9]: a28a6b71ea46f38a +Block 0031 [ 10]: 9aec7730893dbc33 +Block 0031 [ 11]: 8ef663a07b64cc7d +Block 0031 [ 12]: 05cc88303838c4be +Block 0031 [ 13]: 462bd3ab56e8a6a6 +Block 0031 [ 14]: 4f3d76237943927f +Block 0031 [ 15]: f6b6653932fe9ef0 +Block 0031 [ 16]: 6d7b4d2aa239c737 +Block 0031 [ 17]: caae7db69aa59aa7 +Block 0031 [ 18]: 1e31c6f143d9952a +Block 0031 [ 19]: 6b60a98e290ca696 +Block 0031 [ 20]: 940ca1bbcd3f7463 +Block 0031 [ 21]: e2018e95efea6502 +Block 0031 [ 22]: 723653c1f8b8b5aa +Block 0031 [ 23]: 44e8613497d80985 +Block 0031 [ 24]: 47fc4079d7548605 +Block 0031 [ 25]: 12c033e65ead5787 +Block 0031 [ 26]: 7e35d99dd937027d +Block 0031 [ 27]: db08418fcf1de9e2 +Block 0031 [ 28]: 962efd855a0c9915 +Block 0031 [ 29]: 49a9432586bd141c +Block 0031 [ 30]: 3e934ae2d20d3bf4 +Block 0031 [ 31]: ca3878557731e31b +Block 0031 [ 32]: 5a2e3f7af5fd99fc +Block 0031 [ 33]: d4cdb70de69868a7 +Block 0031 [ 34]: 2e466841a0631c49 +Block 0031 [ 35]: ad2cce77b3eaac9b +Block 0031 [ 36]: d7457681c1d3b8d1 +Block 0031 [ 37]: 21f8b6b030430d7e +Block 0031 [ 38]: 52e8e9ef6f17868d +Block 0031 [ 39]: 74643040276b49e0 +Block 0031 [ 40]: fa0fc64652a88bbe +Block 0031 [ 41]: b85368143ee3fc44 +Block 0031 [ 42]: ceb7bf6f9163bf98 +Block 0031 [ 43]: 014748d0c2530c89 +Block 0031 [ 44]: f08c8d17798594a5 +Block 0031 [ 45]: 300302703d482fb6 +Block 0031 [ 46]: f6c702c1f364984a +Block 0031 [ 47]: 88e96d54da28c933 +Block 0031 [ 48]: 600731f1d5e30200 +Block 0031 [ 49]: 3fafb57df73906ee +Block 0031 [ 50]: 50676df27723e8dc +Block 0031 [ 51]: 35276a345eafaa5b +Block 0031 [ 52]: 6836ff29f04060fb +Block 0031 [ 53]: f836a93b5a0e07b5 +Block 0031 [ 54]: 7ff0ec0945b7555f +Block 0031 [ 55]: 9a978bbe613eee43 +Block 0031 [ 56]: 0cb6317840199246 +Block 0031 [ 57]: 9ac40873681cb4f3 +Block 0031 [ 58]: ef3ab4e1f58c04cb +Block 0031 [ 59]: cf511bdcbbaab45a +Block 0031 [ 60]: ac604c91d14a4a8b +Block 0031 [ 61]: 5d9a3364c9cfe64a +Block 0031 [ 62]: 8f3c791a7e3997cd +Block 0031 [ 63]: af6786e36a555a52 +Block 0031 [ 64]: aa4c4498263bd24a +Block 0031 [ 65]: 17bb504c406e501c +Block 0031 [ 66]: 5605458618bb7567 +Block 0031 [ 67]: 23dba58aeaf90514 +Block 0031 [ 68]: ddf47fc505d368f3 +Block 0031 [ 69]: d020a357a81d8f2a +Block 0031 [ 70]: 5a8105998d6289cc +Block 0031 [ 71]: cc09c874e9ad7fb4 +Block 0031 [ 72]: 6e0e7a023893dea4 +Block 0031 [ 73]: 9bb514c8b1d2d2bd +Block 0031 [ 74]: 9afbba056d6b02db +Block 0031 [ 75]: 567639eeb1c4f4f3 +Block 0031 [ 76]: b23981b08a43352d +Block 0031 [ 77]: 8a99b8cb4cf52afd +Block 0031 [ 78]: 4c9ae1dcc386ba60 +Block 0031 [ 79]: 5877d8ffcee47c72 +Block 0031 [ 80]: 08ec719cd344b3d9 +Block 0031 [ 81]: 5fed35d31f385127 +Block 0031 [ 82]: a98b4f7dcb2fb022 +Block 0031 [ 83]: bed0b0d8eeb49d83 +Block 0031 [ 84]: 353088c2e9bffc0c +Block 0031 [ 85]: 621cd0ea9f951e5e +Block 0031 [ 86]: 15b6e21e7fe5cff1 +Block 0031 [ 87]: fb256930ba770de1 +Block 0031 [ 88]: 58153034cf988f39 +Block 0031 [ 89]: b135d6b52572443a +Block 0031 [ 90]: b46c8c25d02e20e1 +Block 0031 [ 91]: cdf31cdd2a5e6c86 +Block 0031 [ 92]: e5df8b1870d0fa5f +Block 0031 [ 93]: ff58e219eb2aaef9 +Block 0031 [ 94]: 7b7bf59a19bf4b82 +Block 0031 [ 95]: a83c4eddca7251b7 +Block 0031 [ 96]: e6846c08a364b23b +Block 0031 [ 97]: ce1e0e3990a0b85c +Block 0031 [ 98]: 4805db1de087560c +Block 0031 [ 99]: 65510d9d724717cf +Block 0031 [100]: a5083efef98e595a +Block 0031 [101]: eff774bbf800218d +Block 0031 [102]: fda9598516b2db5d +Block 0031 [103]: 4c1a7ec2bfbca7b7 +Block 0031 [104]: 805250bd4ac405ed +Block 0031 [105]: f11b412261ec3b87 +Block 0031 [106]: e08f40d87a900ff8 +Block 0031 [107]: 99b8fbca386979b6 +Block 0031 [108]: 07aa22432c786a5a +Block 0031 [109]: 585b41d00bc71127 +Block 0031 [110]: 0b03483ac6511c99 +Block 0031 [111]: 6d4cc89b3af28b23 +Block 0031 [112]: 6970451c183ee79a +Block 0031 [113]: f5580761f2eccdc7 +Block 0031 [114]: 0424ccc22b9d54f9 +Block 0031 [115]: 9c48d9de801d0bf0 +Block 0031 [116]: 54fa4f6346f39b22 +Block 0031 [117]: 1ece637d6f675279 +Block 0031 [118]: 260b9ebb18ab1078 +Block 0031 [119]: 4ec528bb24040a3f +Block 0031 [120]: 383fd565da93d8cd +Block 0031 [121]: 6935146f0387f41a +Block 0031 [122]: ae152b1a7f1d5c85 +Block 0031 [123]: d6269b14a3203dcc +Block 0031 [124]: 975f596583745e30 +Block 0031 [125]: e349bdd7edeb3092 +Block 0031 [126]: b751a689b7a83659 +Block 0031 [127]: c570f2ab2a86cf00 + + After pass 1: +Block 0000 [ 0]: b2e4ddfcf76dc85a +Block 0000 [ 1]: 4ffd0626c89a2327 +Block 0000 [ 2]: 4af1440fff212980 +Block 0000 [ 3]: 1e77299c7408505b +Block 0000 [ 4]: 7e672fb78ae3238d +Block 0000 [ 5]: e1cd67bfe18df2a1 +Block 0000 [ 6]: a8c04ae868f9e203 +Block 0000 [ 7]: 37a422ec2be1e14a +Block 0000 [ 8]: ea9c1ad5c2eb5a3c +Block 0000 [ 9]: 3c3424244acf65b3 +Block 0000 [ 10]: 989f059deef06d0e +Block 0000 [ 11]: da5804817b974b81 +Block 0000 [ 12]: 568bf960dcd66161 +Block 0000 [ 13]: c7e121cade4f297b +Block 0000 [ 14]: 27137ecb75c49a3f +Block 0000 [ 15]: 2dcd6d8f395ca8e2 +Block 0000 [ 16]: f54545a15ff00e31 +Block 0000 [ 17]: 3a7c1498b8d66c10 +Block 0000 [ 18]: 4a2d2bb85113a135 +Block 0000 [ 19]: 78b94e1def66f354 +Block 0000 [ 20]: e2c64ed507262087 +Block 0000 [ 21]: e6ca912ac501b306 +Block 0000 [ 22]: c0550c72d9d27c6f +Block 0000 [ 23]: 0a989bf18f3d182f +Block 0000 [ 24]: 03021933aeecca55 +Block 0000 [ 25]: a2c5723fd06c1245 +Block 0000 [ 26]: 29deb6fc754291db +Block 0000 [ 27]: 01e5e4663bd45e9b +Block 0000 [ 28]: 42df9217bad5bad4 +Block 0000 [ 29]: cbce9a4ee35f8a19 +Block 0000 [ 30]: 5e3da2d83d8eb369 +Block 0000 [ 31]: 4aa815e870f6d260 +Block 0000 [ 32]: 9fb5792a7cacd0dd +Block 0000 [ 33]: 537c357f3389887d +Block 0000 [ 34]: 85ab6defa2a243a6 +Block 0000 [ 35]: 9a0d93d5abead9c9 +Block 0000 [ 36]: 8db03096016980a9 +Block 0000 [ 37]: 8136c1a3dd0bb522 +Block 0000 [ 38]: 8cf8da44ab7d86b7 +Block 0000 [ 39]: e6f2cf5e26222f47 +Block 0000 [ 40]: fb2c472f85b81433 +Block 0000 [ 41]: 86e420d43e669e99 +Block 0000 [ 42]: a94125c90c4e51eb +Block 0000 [ 43]: f0cdfc7f5d9661d5 +Block 0000 [ 44]: f35814a7d0533f8e +Block 0000 [ 45]: eaee32abeeb1d71d +Block 0000 [ 46]: 5a19ad61e8018c3b +Block 0000 [ 47]: 42dc03945b12adb0 +Block 0000 [ 48]: 0efc60abd50a2629 +Block 0000 [ 49]: 71682cdb7a674bcc +Block 0000 [ 50]: b91c1757438caaa3 +Block 0000 [ 51]: 456a17580d4264d0 +Block 0000 [ 52]: e2830a456e3be8d1 +Block 0000 [ 53]: 6984a07c7eb39daa +Block 0000 [ 54]: 129d6a66f99e7c51 +Block 0000 [ 55]: 49cd04749c85f25d +Block 0000 [ 56]: cf5e1f90e3ccacea +Block 0000 [ 57]: e00d2db8929c2342 +Block 0000 [ 58]: 4a50a98f75a4d23a +Block 0000 [ 59]: 06f3a32ee178e8a3 +Block 0000 [ 60]: e34113ed208c810e +Block 0000 [ 61]: 2ded060db2eebe26 +Block 0000 [ 62]: dd60eb35ca0c7625 +Block 0000 [ 63]: ad1d92d562b0d222 +Block 0000 [ 64]: 047447517d666518 +Block 0000 [ 65]: 613ce6bb0ff26d08 +Block 0000 [ 66]: 5521788de49616b7 +Block 0000 [ 67]: 3a5056474730596e +Block 0000 [ 68]: d5cbdad593ff2517 +Block 0000 [ 69]: 61fa2a8e714695c1 +Block 0000 [ 70]: 23baaccba2490eb5 +Block 0000 [ 71]: 655cfc83b1a82fc5 +Block 0000 [ 72]: a5c66c25b7fc4ebf +Block 0000 [ 73]: 95f66ee973a5b6e3 +Block 0000 [ 74]: 082e286bdaa2cd49 +Block 0000 [ 75]: 849a992344f431c8 +Block 0000 [ 76]: 9bbc20fce1f8e3fc +Block 0000 [ 77]: 1b7586e5ce69f2b5 +Block 0000 [ 78]: 9a263f9fdd4628fc +Block 0000 [ 79]: 7cd5ff4d7eb3c224 +Block 0000 [ 80]: 76dd41d1fc458a1f +Block 0000 [ 81]: e7db382f1cb0c2c9 +Block 0000 [ 82]: 837e7a11ad6033c2 +Block 0000 [ 83]: eaf7ed04d62b47a7 +Block 0000 [ 84]: 7f3e93feae950543 +Block 0000 [ 85]: f43dce98db930c6c +Block 0000 [ 86]: 034085278bfb1aaf +Block 0000 [ 87]: 047c628b27d21682 +Block 0000 [ 88]: ff6f46a71535f39d +Block 0000 [ 89]: cf8b2ec8ea64daa0 +Block 0000 [ 90]: 7798fea1844fc894 +Block 0000 [ 91]: e5a89e1eaa8c2be8 +Block 0000 [ 92]: 7da8c3309f71a9c4 +Block 0000 [ 93]: 126aa1334fabc285 +Block 0000 [ 94]: a31b8a6990dff9ea +Block 0000 [ 95]: b6f753045da7efcb +Block 0000 [ 96]: d5f7ae86280997fb +Block 0000 [ 97]: 4ac781ee5a227dc2 +Block 0000 [ 98]: 90bf68c528de1614 +Block 0000 [ 99]: f2b948077c97bb31 +Block 0000 [100]: ed9869cd2fcc01d6 +Block 0000 [101]: dd757dd9bb87c485 +Block 0000 [102]: 401e6dfaeb98fdc1 +Block 0000 [103]: ce46cebd1c998df8 +Block 0000 [104]: 2c96b3649229238c +Block 0000 [105]: d73d3649246a34e8 +Block 0000 [106]: f8c09d8ed3624653 +Block 0000 [107]: 4b00e20ec3ef6334 +Block 0000 [108]: fc612e9aea430b66 +Block 0000 [109]: 082cb1bffd463327 +Block 0000 [110]: 708afd583f223878 +Block 0000 [111]: bacc8830cdfb689a +Block 0000 [112]: 51c543c47d97a5e5 +Block 0000 [113]: 088ddff206e1af93 +Block 0000 [114]: 14ba0bf68723ea38 +Block 0000 [115]: 60cec002007482d7 +Block 0000 [116]: cc35a0963e1e318e +Block 0000 [117]: e49f60771b29722a +Block 0000 [118]: 571920b4c7fc0351 +Block 0000 [119]: fb7800322db6813b +Block 0000 [120]: d6ee0ab287858786 +Block 0000 [121]: 8a78e72d193027b9 +Block 0000 [122]: 6e5c870b4156f14e +Block 0000 [123]: 940e690ff9bd0e4b +Block 0000 [124]: e4ceee2788ca1338 +Block 0000 [125]: 107efa0a04948bea +Block 0000 [126]: 54169c55f786c3de +Block 0000 [127]: 27f4ddbe3b4bfb29 +Block 0001 [ 0]: 7c7e4e842a102e2d +Block 0001 [ 1]: d97fb43fe330bc52 +Block 0001 [ 2]: dbb3531f03bfaed0 +Block 0001 [ 3]: 379d167ac7eb5f37 +Block 0001 [ 4]: bcac160bbdff1487 +Block 0001 [ 5]: a2ddda9500ea90be +Block 0001 [ 6]: 1d7966fb7d9f62f3 +Block 0001 [ 7]: f015be978fbcd6e9 +Block 0001 [ 8]: 6f6b9177dbf23924 +Block 0001 [ 9]: cd3d5950128429bc +Block 0001 [ 10]: 6002e39a85144740 +Block 0001 [ 11]: 9af2c013af0db2a5 +Block 0001 [ 12]: 32d56e0705ddb5d4 +Block 0001 [ 13]: f8ed5a41bf619926 +Block 0001 [ 14]: a48b07b10a30d3f0 +Block 0001 [ 15]: 30c347cbeac2dba4 +Block 0001 [ 16]: 0705452f5690858e +Block 0001 [ 17]: 91214114cad3fbb2 +Block 0001 [ 18]: c3c528bbc2f2b866 +Block 0001 [ 19]: 8449f042c4edcb84 +Block 0001 [ 20]: b4f8190f05d2860b +Block 0001 [ 21]: ff0e2dbbc88c0452 +Block 0001 [ 22]: d063b4424c6fabf3 +Block 0001 [ 23]: 79785bfe15e572e9 +Block 0001 [ 24]: 8b9cf846aeb1ad6e +Block 0001 [ 25]: 06384456c23106a8 +Block 0001 [ 26]: f67379d12f8af09c +Block 0001 [ 27]: d557757d96eb9d12 +Block 0001 [ 28]: b153ed5e9e18c9f8 +Block 0001 [ 29]: 9e865cefbd445b3a +Block 0001 [ 30]: 84a87d3cf1d42139 +Block 0001 [ 31]: 98eff782bd9f7acf +Block 0001 [ 32]: baa280b8075cae9b +Block 0001 [ 33]: 64ac022bf3b0cf64 +Block 0001 [ 34]: e445bbadf36fea9f +Block 0001 [ 35]: 7a638052234cecc5 +Block 0001 [ 36]: d1561f72f4db01a3 +Block 0001 [ 37]: c0ee406b5dab7a6c +Block 0001 [ 38]: 03999c6c700e7e52 +Block 0001 [ 39]: c2adb31c6e041da3 +Block 0001 [ 40]: fca2270651bb2959 +Block 0001 [ 41]: 5ee8f5be5975c4d7 +Block 0001 [ 42]: abe285efbc633b22 +Block 0001 [ 43]: 1232e79db37874d7 +Block 0001 [ 44]: 6f8b937469210023 +Block 0001 [ 45]: b6771199336d27d2 +Block 0001 [ 46]: 68261151e67ef112 +Block 0001 [ 47]: a3d3c5385acb39f3 +Block 0001 [ 48]: e13cc3158a887bad +Block 0001 [ 49]: 6e49bbe54dcdd6e1 +Block 0001 [ 50]: 7b53792348cebf03 +Block 0001 [ 51]: 2bad526dc40fd5ed +Block 0001 [ 52]: 4fc378646d4f270e +Block 0001 [ 53]: 7e1238268cb3c608 +Block 0001 [ 54]: 3e6bef59b00ed662 +Block 0001 [ 55]: 6cbc24d59c79bf65 +Block 0001 [ 56]: 93bf6f73eaaa18d3 +Block 0001 [ 57]: 3086062a47b65381 +Block 0001 [ 58]: 0a573df850f72ca7 +Block 0001 [ 59]: a34505f05cd9b423 +Block 0001 [ 60]: 73dc824fcfcd196e +Block 0001 [ 61]: ca8eb6deca473c6d +Block 0001 [ 62]: 6c750f133ae71a99 +Block 0001 [ 63]: 88c12f0eab06a0b1 +Block 0001 [ 64]: 1a0db5c1522ab263 +Block 0001 [ 65]: 99da78e8b8ff09d5 +Block 0001 [ 66]: fb8842c7292ca975 +Block 0001 [ 67]: 1ddb8ed4f63a9f47 +Block 0001 [ 68]: 70f53652df585383 +Block 0001 [ 69]: bf24132118dc24b4 +Block 0001 [ 70]: 937839e1f511fb44 +Block 0001 [ 71]: 65dc97b180f7d8df +Block 0001 [ 72]: f98385784dd99067 +Block 0001 [ 73]: aee167d39d525b8b +Block 0001 [ 74]: 11eb5ba83feaff09 +Block 0001 [ 75]: 3113331bd4fe5849 +Block 0001 [ 76]: c087bac03cc593eb +Block 0001 [ 77]: 911541803860d5ad +Block 0001 [ 78]: 972796bde9d1c42e +Block 0001 [ 79]: c8cd6935d63f999a +Block 0001 [ 80]: 4eb3a3310ac0652b +Block 0001 [ 81]: 5faa0e3ba17495cc +Block 0001 [ 82]: 54538022fe6f9c31 +Block 0001 [ 83]: 85ad4868c2fdd47a +Block 0001 [ 84]: 2e7bd3ad0d2a35b0 +Block 0001 [ 85]: 35087db302505af5 +Block 0001 [ 86]: 7b06c9fb29e26df2 +Block 0001 [ 87]: 9df831ef57448e1c +Block 0001 [ 88]: 1d908722a58fa4c6 +Block 0001 [ 89]: 9cfe0815564ca490 +Block 0001 [ 90]: 1b3cdb61b5feaa18 +Block 0001 [ 91]: e37917c95e8105a1 +Block 0001 [ 92]: 5704635a0737b2be +Block 0001 [ 93]: 734708322a4f163f +Block 0001 [ 94]: 65c5c56111e21f7b +Block 0001 [ 95]: 48a7e79585c82ac8 +Block 0001 [ 96]: 90b83ac17e185667 +Block 0001 [ 97]: 1e2d69687bb0f277 +Block 0001 [ 98]: 551effebbb0677cf +Block 0001 [ 99]: 7c7e64cb0b4a9dfb +Block 0001 [100]: b6e6a9e294ae2aef +Block 0001 [101]: c772befaa7b7d5a2 +Block 0001 [102]: 705a0ae7722982bd +Block 0001 [103]: 487550a7ae562b33 +Block 0001 [104]: c978ab00275b329b +Block 0001 [105]: ef22ed8e7ca24204 +Block 0001 [106]: c80b4bc89eab8590 +Block 0001 [107]: f02f2945d3db6813 +Block 0001 [108]: 1258ee15004331a1 +Block 0001 [109]: 12a45ca546f3f203 +Block 0001 [110]: 7eb5ba10595ab1bd +Block 0001 [111]: 83c50861b087e83b +Block 0001 [112]: e5c3369514f76c3b +Block 0001 [113]: b6f0b3be44be16bb +Block 0001 [114]: d90429b12ea6a18e +Block 0001 [115]: ce343138c9908c54 +Block 0001 [116]: f5b8874f958cca3b +Block 0001 [117]: 0e90768218b2827f +Block 0001 [118]: d10d62333598e847 +Block 0001 [119]: b7adbe6b921354b9 +Block 0001 [120]: f867bae8bff66bc4 +Block 0001 [121]: ec4fc408964ee14a +Block 0001 [122]: db1e5b94bf1a6ba9 +Block 0001 [123]: 4427a9a3b206a22e +Block 0001 [124]: f680b8152ab38fe3 +Block 0001 [125]: 57e82afc40c6bdb3 +Block 0001 [126]: 62669624fa9f150e +Block 0001 [127]: 3e2b78aca9af3e85 +Block 0002 [ 0]: 86efaf80eac2ed5e +Block 0002 [ 1]: 6cbb794e606e30fa +Block 0002 [ 2]: 58ba8f651613a62f +Block 0002 [ 3]: 39e6c82450a725ef +Block 0002 [ 4]: f7c274a22d6358b2 +Block 0002 [ 5]: 540c17b677071a38 +Block 0002 [ 6]: d5e18b9c175e9391 +Block 0002 [ 7]: 84142a92ecfb7e48 +Block 0002 [ 8]: 98fb5a0b8f3b87d5 +Block 0002 [ 9]: 1bac756bfe70762c +Block 0002 [ 10]: 426e9fdea7694bd7 +Block 0002 [ 11]: 2b2bc7b298230b84 +Block 0002 [ 12]: 2ba0f4d8cd3744e7 +Block 0002 [ 13]: c16dc3f56fefbe36 +Block 0002 [ 14]: 9456970ece1ae4f5 +Block 0002 [ 15]: dc71b76d67640fbd +Block 0002 [ 16]: 6a51483c1bcbd225 +Block 0002 [ 17]: ca5a32517132a4a7 +Block 0002 [ 18]: ba7b715053f1efd6 +Block 0002 [ 19]: a8c07fef13c81b75 +Block 0002 [ 20]: d08df79370575fa9 +Block 0002 [ 21]: 461e63a5da271692 +Block 0002 [ 22]: d13f39e35427319e +Block 0002 [ 23]: 727864f49a85bc04 +Block 0002 [ 24]: 229ef524b7660d7b +Block 0002 [ 25]: f2f4edb42bf81a78 +Block 0002 [ 26]: 2752e760c33b9a2b +Block 0002 [ 27]: 8c9a11a95b09715c +Block 0002 [ 28]: d0e9e5f5f517a199 +Block 0002 [ 29]: 9dad9e62f67e8afc +Block 0002 [ 30]: b8e5565ca41ee587 +Block 0002 [ 31]: 4bd71f8bcb062846 +Block 0002 [ 32]: 5e8a7c70a0cf04be +Block 0002 [ 33]: c26facf6fc442e2e +Block 0002 [ 34]: 8242539af817aec3 +Block 0002 [ 35]: 5c756cf641282347 +Block 0002 [ 36]: 209cf98052588aba +Block 0002 [ 37]: b1d35f1ccd13c627 +Block 0002 [ 38]: 66071ccee68fe1ba +Block 0002 [ 39]: c3221a5092ac879b +Block 0002 [ 40]: 789f48d15ef8de9e +Block 0002 [ 41]: ee6b857cb4aa1847 +Block 0002 [ 42]: 15c376adfaa40762 +Block 0002 [ 43]: eb0f698827d47eb1 +Block 0002 [ 44]: a394d2ea11fc10c2 +Block 0002 [ 45]: d67cf8f561e9a481 +Block 0002 [ 46]: a7acf11f6419b8e2 +Block 0002 [ 47]: e2612a660bb29fd8 +Block 0002 [ 48]: cf40e044fd3406b9 +Block 0002 [ 49]: f181e86d1eb929e5 +Block 0002 [ 50]: b730f4a0313a0f9d +Block 0002 [ 51]: ad12579bcb46430f +Block 0002 [ 52]: 65cf23444e237272 +Block 0002 [ 53]: 0c1f74ebcc48766a +Block 0002 [ 54]: c481845a7c971d93 +Block 0002 [ 55]: 4681c7fad6c494db +Block 0002 [ 56]: b7c59834dcc299b6 +Block 0002 [ 57]: 00d2679dca310ece +Block 0002 [ 58]: 186b0718dcbce10b +Block 0002 [ 59]: cdac40832d0120df +Block 0002 [ 60]: 2f74751ad7d219d3 +Block 0002 [ 61]: 36e9506170140101 +Block 0002 [ 62]: 63a29d721621df3a +Block 0002 [ 63]: f2bbb30328991022 +Block 0002 [ 64]: cf784e1f178183cb +Block 0002 [ 65]: c551388392a229d4 +Block 0002 [ 66]: e43c737c16a2998c +Block 0002 [ 67]: edba1c64023e06a8 +Block 0002 [ 68]: d30148725b097c00 +Block 0002 [ 69]: 2f7aacc907a0a410 +Block 0002 [ 70]: 0529807f7bfc11fb +Block 0002 [ 71]: 9c1fdcd641d1a7da +Block 0002 [ 72]: 432594adb3c7420b +Block 0002 [ 73]: a672c3e18f45886e +Block 0002 [ 74]: 9fdf014ee62a9a15 +Block 0002 [ 75]: 1eb438533674ead2 +Block 0002 [ 76]: 1667a75fdd2f08a4 +Block 0002 [ 77]: 88ef55710e08a035 +Block 0002 [ 78]: 2ed94808e5cbbc40 +Block 0002 [ 79]: 9e6c492a9369ab82 +Block 0002 [ 80]: 241d77bfa45b6e7a +Block 0002 [ 81]: 72b39a71964e5854 +Block 0002 [ 82]: 84de18604265df39 +Block 0002 [ 83]: 7c3edb10801b0d48 +Block 0002 [ 84]: 42f315c78dd33bb2 +Block 0002 [ 85]: 02d84c0fcc17dcde +Block 0002 [ 86]: 4361ab015f3f710b +Block 0002 [ 87]: 3f61db1d858a6be6 +Block 0002 [ 88]: 4f9efe1458258efa +Block 0002 [ 89]: 9245fc3739c44c2f +Block 0002 [ 90]: 60ceab1c851628c0 +Block 0002 [ 91]: 5e15d09383818a4c +Block 0002 [ 92]: 679f64a7cca20698 +Block 0002 [ 93]: b69349974a5e49ed +Block 0002 [ 94]: ac12e9258f2d6e04 +Block 0002 [ 95]: 489d9fd811795ec7 +Block 0002 [ 96]: 2e8296f89c6838c7 +Block 0002 [ 97]: c11755f2925691a7 +Block 0002 [ 98]: 41dbe65271283b39 +Block 0002 [ 99]: 409c1cf3e5788ed3 +Block 0002 [100]: 3e54cdb0b3fce3c4 +Block 0002 [101]: 955c3fb2dcb5810a +Block 0002 [102]: 16ae1a9795a45a40 +Block 0002 [103]: 715877d9f3b5b47e +Block 0002 [104]: 8e738b5a56e7fbdb +Block 0002 [105]: 3d2921bb972e0556 +Block 0002 [106]: 0085d78ec42ba7ff +Block 0002 [107]: 07f45baf4bcef049 +Block 0002 [108]: 6d775cc56a00f99f +Block 0002 [109]: 39217ea705c54f90 +Block 0002 [110]: 3881e3250797c790 +Block 0002 [111]: b055d6d9879ab68e +Block 0002 [112]: d947b16d523ab838 +Block 0002 [113]: 46e931e12f2d9197 +Block 0002 [114]: 85593910a8e77820 +Block 0002 [115]: d437375c655d1e9b +Block 0002 [116]: 952ba7cb1d8f446e +Block 0002 [117]: f5db5b403f667c07 +Block 0002 [118]: a72ced86fedf6fbd +Block 0002 [119]: e40062d8c9b929b1 +Block 0002 [120]: 18ab405d561e23e6 +Block 0002 [121]: db3f1f52d33e8521 +Block 0002 [122]: 526fc65c3d4198ce +Block 0002 [123]: 1c02368aedb009a0 +Block 0002 [124]: f0193b1322fea1eb +Block 0002 [125]: 08160def3ed589ba +Block 0002 [126]: c3d02084ef29e3a8 +Block 0002 [127]: 9e3c26c84794b742 +Block 0003 [ 0]: 47e4b55ca3a68849 +Block 0003 [ 1]: ce3677e651b75c83 +Block 0003 [ 2]: 93052446e287428b +Block 0003 [ 3]: 0f05057bdc434eb2 +Block 0003 [ 4]: 36bf9cdd1805985d +Block 0003 [ 5]: b9d6973b140575af +Block 0003 [ 6]: 536655215a96fc07 +Block 0003 [ 7]: 9f2c073205f1eefb +Block 0003 [ 8]: 49035726d5561411 +Block 0003 [ 9]: b19c87fa5805385d +Block 0003 [ 10]: c2048432848d1599 +Block 0003 [ 11]: 452a4980262dde88 +Block 0003 [ 12]: 6c2ff858fdd69274 +Block 0003 [ 13]: a9edd1d47c90287a +Block 0003 [ 14]: e52a0eab7afc24ef +Block 0003 [ 15]: 25eee1c982f06bba +Block 0003 [ 16]: 90bd4e021a66270e +Block 0003 [ 17]: 327bfcebf1d1c9cf +Block 0003 [ 18]: a6f77c2fcb3b40ea +Block 0003 [ 19]: cbd7b68a0d625e45 +Block 0003 [ 20]: 6a4943f1ff2876c2 +Block 0003 [ 21]: 7633be8700da0f98 +Block 0003 [ 22]: e3ec9e32f16a2da8 +Block 0003 [ 23]: fc7d59dcf497c0f5 +Block 0003 [ 24]: 5edb6a169eafd532 +Block 0003 [ 25]: d0e3c0cc94079a25 +Block 0003 [ 26]: 6f0c0ea1da6b3d56 +Block 0003 [ 27]: 0410e06dffe05b11 +Block 0003 [ 28]: a3b230d46679e317 +Block 0003 [ 29]: 5b18d07ed650f566 +Block 0003 [ 30]: 3ad4a7d10e729f78 +Block 0003 [ 31]: 1c6faf65c5e7880d +Block 0003 [ 32]: 28b6cb21416f151a +Block 0003 [ 33]: 21f23de1fb58bc00 +Block 0003 [ 34]: dba935f0876504d0 +Block 0003 [ 35]: 1b422804c8124bdb +Block 0003 [ 36]: d459afe5f9cad581 +Block 0003 [ 37]: df451308c78343c9 +Block 0003 [ 38]: 67752625a5ef6a7b +Block 0003 [ 39]: dfa0c32b55c7990b +Block 0003 [ 40]: dfa65d3cb4eff6f4 +Block 0003 [ 41]: 9d44a5a4583abc39 +Block 0003 [ 42]: 81221f10ce31c4cf +Block 0003 [ 43]: 2c75eaf2aae12a92 +Block 0003 [ 44]: 5c73ea9099605ec4 +Block 0003 [ 45]: e38ce91cc6fb0c88 +Block 0003 [ 46]: 59607ea7ed2cf60c +Block 0003 [ 47]: dc478047f6b71620 +Block 0003 [ 48]: 5857e51b6d638f28 +Block 0003 [ 49]: 280fbc8107a5c239 +Block 0003 [ 50]: 32ba01e4cffbd141 +Block 0003 [ 51]: 2052dd85024e1869 +Block 0003 [ 52]: 812f491bd5de07bb +Block 0003 [ 53]: dc80c11853ab55ff +Block 0003 [ 54]: 0be2e2faca6cd724 +Block 0003 [ 55]: 3de4a64cad66aff2 +Block 0003 [ 56]: dd39f6170b7ebb97 +Block 0003 [ 57]: 5deefd62fa73991d +Block 0003 [ 58]: 4d81ea48d0879d8d +Block 0003 [ 59]: 5e287e11a01fa8cc +Block 0003 [ 60]: 1750e9cdaa57979d +Block 0003 [ 61]: d44bc2a6bb5e0c1d +Block 0003 [ 62]: 3eb6172aa93f7235 +Block 0003 [ 63]: 625851b0f51453cd +Block 0003 [ 64]: 787aa08312b800c2 +Block 0003 [ 65]: 926dd8711de0aa81 +Block 0003 [ 66]: f92c3b44a3930a99 +Block 0003 [ 67]: 202321fd495bc4dd +Block 0003 [ 68]: 8ba8059f755bc587 +Block 0003 [ 69]: 912c62454af1486b +Block 0003 [ 70]: abc58ea3d020e71c +Block 0003 [ 71]: 019f064393246e8e +Block 0003 [ 72]: 447d2b297c5c0a60 +Block 0003 [ 73]: 8b10703382e5d0c2 +Block 0003 [ 74]: 1d3bc2052bace4dd +Block 0003 [ 75]: d840e74802a71b30 +Block 0003 [ 76]: 9860620a312cd5e1 +Block 0003 [ 77]: e02377a18ac65e65 +Block 0003 [ 78]: 11871fd45a03d051 +Block 0003 [ 79]: feaa331ec85d2e65 +Block 0003 [ 80]: 54b602f1cec5a912 +Block 0003 [ 81]: d03a5a9d3de97d60 +Block 0003 [ 82]: bcb99e1b95b67044 +Block 0003 [ 83]: 35976d9cac311fc1 +Block 0003 [ 84]: a838d7c9595d830d +Block 0003 [ 85]: ca8276cafa72e5be +Block 0003 [ 86]: 76b9769123938b18 +Block 0003 [ 87]: 3bb48f4670306aa0 +Block 0003 [ 88]: fbd323102d37a4cc +Block 0003 [ 89]: 7a787b482ae5c679 +Block 0003 [ 90]: 41759fa5a6c77e1d +Block 0003 [ 91]: 5eba576416c98141 +Block 0003 [ 92]: 0a4420853cd2220b +Block 0003 [ 93]: 764c40c685f1ad35 +Block 0003 [ 94]: b9c859e929596367 +Block 0003 [ 95]: c49f156da3049e06 +Block 0003 [ 96]: 0601b22007d45a9d +Block 0003 [ 97]: 7342d9112bdf462f +Block 0003 [ 98]: 57a4ea145c8dfd59 +Block 0003 [ 99]: 6713f392d28f454b +Block 0003 [100]: 54769b84908fe40a +Block 0003 [101]: 18ee40ca2547674d +Block 0003 [102]: 2e9b828597481407 +Block 0003 [103]: 7fcc3d5791033ac8 +Block 0003 [104]: 74163ca2e9f91de5 +Block 0003 [105]: 916299261106d2ee +Block 0003 [106]: c5c5798b20f0f813 +Block 0003 [107]: b98bfea35c51037c +Block 0003 [108]: e8907314d75807c4 +Block 0003 [109]: fc5ab15c031499db +Block 0003 [110]: a1ffdca0b3446d30 +Block 0003 [111]: f084211b0c5e43b2 +Block 0003 [112]: 52e7554b5df72092 +Block 0003 [113]: e55a86c0b8f08a81 +Block 0003 [114]: 9f021f191a8bef77 +Block 0003 [115]: b45e6d2a520505ac +Block 0003 [116]: 9bf1e40036d9fbee +Block 0003 [117]: 8df547b45358d289 +Block 0003 [118]: 543f8dac24f4841a +Block 0003 [119]: 33e7a353ca697ef7 +Block 0003 [120]: e8f81c6070ff2b86 +Block 0003 [121]: 05a0a6c1a44952d8 +Block 0003 [122]: dc1f07f38de6e460 +Block 0003 [123]: 381b8afc1b6d7bf6 +Block 0003 [124]: 8f92a8605ccc67e7 +Block 0003 [125]: e2a38a24d6c52813 +Block 0003 [126]: 8f69eb2814952c79 +Block 0003 [127]: 62a72909082d270e +Block 0004 [ 0]: 871209abdcbd4665 +Block 0004 [ 1]: 6ab1ca5cd5ecef94 +Block 0004 [ 2]: 1fea45956063895b +Block 0004 [ 3]: ee58d6590d1676bb +Block 0004 [ 4]: 3dc00f189dc5c3fa +Block 0004 [ 5]: a5b8ce1a1f4e7020 +Block 0004 [ 6]: 7b1f6d1a4a686357 +Block 0004 [ 7]: 8b1edaacca4590b2 +Block 0004 [ 8]: 60fedc7502cc9fa5 +Block 0004 [ 9]: b68e2a1d1dd5dfd9 +Block 0004 [ 10]: ad3a8268c1e90b40 +Block 0004 [ 11]: 84b4724c4bd5fc51 +Block 0004 [ 12]: 968da98760d2c519 +Block 0004 [ 13]: 7e20bddeea2c88c5 +Block 0004 [ 14]: 35cf39e20d289cb8 +Block 0004 [ 15]: c17a80a2c0a9250d +Block 0004 [ 16]: 801d2fe51918e490 +Block 0004 [ 17]: 334599dfe6468fcb +Block 0004 [ 18]: 05e2044464c256dc +Block 0004 [ 19]: 506830970d8ae416 +Block 0004 [ 20]: 97acbf19c3efd58b +Block 0004 [ 21]: 2dbf1feb30fa28c8 +Block 0004 [ 22]: 7d79f356d1d44674 +Block 0004 [ 23]: 40812a1b85e1aae2 +Block 0004 [ 24]: e4a94f755dfb89de +Block 0004 [ 25]: a683e248949966dc +Block 0004 [ 26]: 33f3a86f657124ef +Block 0004 [ 27]: fabc367ac27942c3 +Block 0004 [ 28]: b99e431918cc7c59 +Block 0004 [ 29]: 6d033fc5e284994e +Block 0004 [ 30]: b07e2fa321621b2c +Block 0004 [ 31]: f7535b1505615d74 +Block 0004 [ 32]: 68bb97943fa339cf +Block 0004 [ 33]: 91672a586f73085e +Block 0004 [ 34]: 7c3b401568284ce5 +Block 0004 [ 35]: fbc4adc821140d2d +Block 0004 [ 36]: ca5599b6de915aca +Block 0004 [ 37]: b3b6a518685f440b +Block 0004 [ 38]: a03850795b7c782e +Block 0004 [ 39]: 75020b29baf49164 +Block 0004 [ 40]: 86f193633b5f37af +Block 0004 [ 41]: fe3460ff365fd099 +Block 0004 [ 42]: db4921a0057c5560 +Block 0004 [ 43]: a9cbc706024dfa2b +Block 0004 [ 44]: 31d16202356d73a3 +Block 0004 [ 45]: 30e16b62c4099af6 +Block 0004 [ 46]: a6c9b1183dcd19f7 +Block 0004 [ 47]: 4d9e959d8d6b3754 +Block 0004 [ 48]: 61b83b597030b1c8 +Block 0004 [ 49]: ae6fcee3be93f61e +Block 0004 [ 50]: 50fc16f00eba0f19 +Block 0004 [ 51]: 0a64962755c66c4f +Block 0004 [ 52]: 6ccf1966f53437c9 +Block 0004 [ 53]: 3f5226c05a50ca43 +Block 0004 [ 54]: acaa53ac8359b625 +Block 0004 [ 55]: 938f69e09741ac2c +Block 0004 [ 56]: 0f0ac9cc7eb41bb3 +Block 0004 [ 57]: b5969b3c1fe6b866 +Block 0004 [ 58]: 07ca5b9db7f95807 +Block 0004 [ 59]: b063da491eb1c31e +Block 0004 [ 60]: 65ff8c77bead17f7 +Block 0004 [ 61]: ed8040671c8d7f81 +Block 0004 [ 62]: 464389f4113f5e88 +Block 0004 [ 63]: 7c48c61726449223 +Block 0004 [ 64]: 9f7b6bf8527d1d1f +Block 0004 [ 65]: e709423c16c82110 +Block 0004 [ 66]: 337f9777fa88c26c +Block 0004 [ 67]: 02d89d338ed99ff6 +Block 0004 [ 68]: d35b61d714e2159c +Block 0004 [ 69]: ef0065d8a46d091d +Block 0004 [ 70]: 21bbb304a6c274ce +Block 0004 [ 71]: 9754ea69566260de +Block 0004 [ 72]: 15af436883827327 +Block 0004 [ 73]: 294ebef6568a9143 +Block 0004 [ 74]: 216c83e9fb7bfefc +Block 0004 [ 75]: 6ea0a345816ae474 +Block 0004 [ 76]: 0d877976466f0287 +Block 0004 [ 77]: 455498ff52f8a84a +Block 0004 [ 78]: 4a048b3ee88673e7 +Block 0004 [ 79]: 3660bd8483ac2d36 +Block 0004 [ 80]: 391af29c8b695622 +Block 0004 [ 81]: 4f62ea7ffbe0a95c +Block 0004 [ 82]: 9b2b3f4d04352770 +Block 0004 [ 83]: 44c1cff0e51499b3 +Block 0004 [ 84]: a1e531f8cf6edf18 +Block 0004 [ 85]: 39419f0074881536 +Block 0004 [ 86]: cef4024632610741 +Block 0004 [ 87]: 11049ca17737c32c +Block 0004 [ 88]: 0a10c0cd7a189f1b +Block 0004 [ 89]: 687c690e01cd83cd +Block 0004 [ 90]: f06a0133bfce8cdc +Block 0004 [ 91]: 66df6a2e23c8944b +Block 0004 [ 92]: fbcff4b3ed651268 +Block 0004 [ 93]: 8ad5f038e3123bb7 +Block 0004 [ 94]: 6bb487bb9c8d8cd0 +Block 0004 [ 95]: 93cf69fc27d4689a +Block 0004 [ 96]: 2afec0f26e5bf277 +Block 0004 [ 97]: 31134929d344d951 +Block 0004 [ 98]: ffd87f78eb17b89c +Block 0004 [ 99]: faa9ec74ce7f8e49 +Block 0004 [100]: b3259d1d6c5be3e2 +Block 0004 [101]: 45b02bd8b76389f9 +Block 0004 [102]: bec627f348f56a93 +Block 0004 [103]: cbcae4615e596978 +Block 0004 [104]: 80c9283195da7520 +Block 0004 [105]: e8e6d067602f52a8 +Block 0004 [106]: 48a563e2f8a17c40 +Block 0004 [107]: 2d7194ce9e175b97 +Block 0004 [108]: f3bada1842a83c8d +Block 0004 [109]: 10a24148069fb4d0 +Block 0004 [110]: 87b4ac62310e3055 +Block 0004 [111]: 70b8e8adc9d8d6a9 +Block 0004 [112]: 988c39066b575815 +Block 0004 [113]: adaea6def4975f21 +Block 0004 [114]: e09dcaf815dd8dac +Block 0004 [115]: 790523ec82c9ba99 +Block 0004 [116]: 4e4f599373a63715 +Block 0004 [117]: e5d6a1032a0bbfcd +Block 0004 [118]: a87032ec60719b7e +Block 0004 [119]: 5522154a317e43a4 +Block 0004 [120]: 8c2420ea268cf592 +Block 0004 [121]: 50ca5df1c96c8b97 +Block 0004 [122]: 9361eceab543a181 +Block 0004 [123]: bce9db3fb691ac63 +Block 0004 [124]: bbaebb394c9fe4af +Block 0004 [125]: ed63ee581ce22d7e +Block 0004 [126]: 94ae21616c5b3094 +Block 0004 [127]: d95da019e0999430 +Block 0005 [ 0]: 155ccff39341aa6f +Block 0005 [ 1]: 54a69c64dcb493ca +Block 0005 [ 2]: eef63d3a6926f8d9 +Block 0005 [ 3]: e9ca019f8c490de2 +Block 0005 [ 4]: ef5fe2e9fe1cfda3 +Block 0005 [ 5]: e06a975887aa3e04 +Block 0005 [ 6]: 7f838117d20e0aee +Block 0005 [ 7]: f06651485d09f94b +Block 0005 [ 8]: ad01c8ce33481657 +Block 0005 [ 9]: f148a24f675e9076 +Block 0005 [ 10]: bf2b9ec0049a032b +Block 0005 [ 11]: 79852b9bfb6698d7 +Block 0005 [ 12]: 6bd08e133c925b5d +Block 0005 [ 13]: 27447ed323030ef8 +Block 0005 [ 14]: 7895b4059a429434 +Block 0005 [ 15]: 017379983bc697eb +Block 0005 [ 16]: 28633004c9c92418 +Block 0005 [ 17]: 49fe67b1a66ba90e +Block 0005 [ 18]: 46420673b44352d3 +Block 0005 [ 19]: 174a91fd26893166 +Block 0005 [ 20]: 7ccbf4705560e6d8 +Block 0005 [ 21]: cca42142125d19e2 +Block 0005 [ 22]: 2be2e05c33484649 +Block 0005 [ 23]: 06b455f3384c102b +Block 0005 [ 24]: d91ee93c8e0a32c8 +Block 0005 [ 25]: b8b3676e186c199a +Block 0005 [ 26]: 5318de0cac98b443 +Block 0005 [ 27]: cf2f2eafd31ecb65 +Block 0005 [ 28]: aa2c13d8af3ac49c +Block 0005 [ 29]: f13e38159c731e1d +Block 0005 [ 30]: bfb273d30db0ea8b +Block 0005 [ 31]: e9ee2ed512ec4707 +Block 0005 [ 32]: 536e64c7cd9be92d +Block 0005 [ 33]: 32d61c4f2eb9be8b +Block 0005 [ 34]: d1c1f55c0da42e83 +Block 0005 [ 35]: 5fe40d60e4f9a806 +Block 0005 [ 36]: 1bd9c2a64123ffe8 +Block 0005 [ 37]: d8c68b4b6755892c +Block 0005 [ 38]: 224f6d01f3b8dc87 +Block 0005 [ 39]: 95987eb6fd5f46fa +Block 0005 [ 40]: 09fb258b50b2b264 +Block 0005 [ 41]: 34f3e6a34baf8636 +Block 0005 [ 42]: 5663b55c7b79c10e +Block 0005 [ 43]: 264e60d189cd2be0 +Block 0005 [ 44]: a1aad8cc73e60800 +Block 0005 [ 45]: 87343e7c26f33a7a +Block 0005 [ 46]: f4c06e87f63e3ae3 +Block 0005 [ 47]: ef2a9f44d99cdc77 +Block 0005 [ 48]: 0c37d5b69521bdd3 +Block 0005 [ 49]: bf1a13fedd395420 +Block 0005 [ 50]: 5b555201c45b3bde +Block 0005 [ 51]: d697bb37c4d40ad5 +Block 0005 [ 52]: e05a26e4b9f4ccc5 +Block 0005 [ 53]: 0ec56bfea415df1f +Block 0005 [ 54]: 7a75ac9069cd78ef +Block 0005 [ 55]: 246d2c2beaa6c1b0 +Block 0005 [ 56]: 6140b1bda15aab8f +Block 0005 [ 57]: 7b8ef6f99539bf8c +Block 0005 [ 58]: fb5e418d315c83b3 +Block 0005 [ 59]: d6fe3bddeee33757 +Block 0005 [ 60]: 325bc7c925602628 +Block 0005 [ 61]: 43516cffe54b3b0a +Block 0005 [ 62]: 384035fcf36ccb13 +Block 0005 [ 63]: 3c9539555b7f3987 +Block 0005 [ 64]: 22b1ac749010da2c +Block 0005 [ 65]: 031eaeb8a8f08b92 +Block 0005 [ 66]: 6a63b6c7815d478e +Block 0005 [ 67]: dd27ffc33860c497 +Block 0005 [ 68]: 99126b88405bf412 +Block 0005 [ 69]: abccb2bd8cf0704b +Block 0005 [ 70]: 2b1bfcd0f9d379b3 +Block 0005 [ 71]: 3551021bf0ad8ee0 +Block 0005 [ 72]: 3aa0cb329547f7db +Block 0005 [ 73]: c780c336227e34f2 +Block 0005 [ 74]: caf8eacb9a26c871 +Block 0005 [ 75]: b3134f664b9dd172 +Block 0005 [ 76]: 8b23138df8a9fd40 +Block 0005 [ 77]: da12b22060a68654 +Block 0005 [ 78]: 266cb3df2a3e1018 +Block 0005 [ 79]: 492187e0415be49e +Block 0005 [ 80]: 312347210bf47feb +Block 0005 [ 81]: affa92d1b4555ad1 +Block 0005 [ 82]: 70328f688d12367b +Block 0005 [ 83]: 58818080e3e91734 +Block 0005 [ 84]: e36e9321b2429731 +Block 0005 [ 85]: 86b75de040abcef0 +Block 0005 [ 86]: 3306f439957b9731 +Block 0005 [ 87]: 06e0997abfb5d79f +Block 0005 [ 88]: a77295a2f4538305 +Block 0005 [ 89]: 6c0a3e8b55c9e35b +Block 0005 [ 90]: 568bae7e7d1b9abd +Block 0005 [ 91]: 1d3b9385bd55d372 +Block 0005 [ 92]: 4f536880c060d963 +Block 0005 [ 93]: 606521fc00a08c7f +Block 0005 [ 94]: ca173b52b80a7952 +Block 0005 [ 95]: 01c0457196c7269b +Block 0005 [ 96]: ac7a2712fb33911f +Block 0005 [ 97]: 77feb9e9ccf48ecf +Block 0005 [ 98]: b1c088252562dee0 +Block 0005 [ 99]: 5523c9d087069aaf +Block 0005 [100]: e878930aefaddd43 +Block 0005 [101]: 7487a72baff492ef +Block 0005 [102]: 6891437d8a389bd5 +Block 0005 [103]: bfa3113471fd5d18 +Block 0005 [104]: 0d3ddbe17f9e084e +Block 0005 [105]: 2cc1c5a314f6e837 +Block 0005 [106]: 03e0d06131142837 +Block 0005 [107]: 28537aa176e020fc +Block 0005 [108]: e410025b3345934b +Block 0005 [109]: 62c4883861dfd8ae +Block 0005 [110]: 12b80d8ab0a37f1a +Block 0005 [111]: 82b705019cec0fb3 +Block 0005 [112]: ec1ca9634dbffe5b +Block 0005 [113]: 72feedad093bb4b0 +Block 0005 [114]: 6abee7fca315e0d4 +Block 0005 [115]: 5d75e6744aef9203 +Block 0005 [116]: 6be017c75c642aa1 +Block 0005 [117]: 7e172e238794d952 +Block 0005 [118]: 142a6d2f23e2eb72 +Block 0005 [119]: 6c39eb4627fdce76 +Block 0005 [120]: 0f61eb951bb9a8c7 +Block 0005 [121]: f51a98b0335ee217 +Block 0005 [122]: 89f7533015d3b6c5 +Block 0005 [123]: 7c5f4947988a52bc +Block 0005 [124]: 737c5304fdea7426 +Block 0005 [125]: 34f53ef7e17fc1f4 +Block 0005 [126]: 62c66398981ea1e2 +Block 0005 [127]: 39c9a16aee082d52 +Block 0006 [ 0]: c3bcb1abd61815c0 +Block 0006 [ 1]: 83b7950cbd0c5c0e +Block 0006 [ 2]: 3f4b1eb8ca73ddd7 +Block 0006 [ 3]: 4941802796861b2f +Block 0006 [ 4]: d2423564817e9c63 +Block 0006 [ 5]: 30d3554169a39bc3 +Block 0006 [ 6]: 79325b66f3c62418 +Block 0006 [ 7]: a292650ed9851d8b +Block 0006 [ 8]: 5966a6a6a6b98159 +Block 0006 [ 9]: d3d0f7de1865efe1 +Block 0006 [ 10]: f806353da999c88c +Block 0006 [ 11]: 2596be1606155ac3 +Block 0006 [ 12]: 44f7e2410fdade67 +Block 0006 [ 13]: 3ae822a453e5df49 +Block 0006 [ 14]: c709635132fb5232 +Block 0006 [ 15]: 22f02a7d54e8c5ac +Block 0006 [ 16]: cb9702971b3c0666 +Block 0006 [ 17]: 83997e32defcc4f6 +Block 0006 [ 18]: 512837aa821221ac +Block 0006 [ 19]: 9b6396869872661c +Block 0006 [ 20]: 2fe121552172eddd +Block 0006 [ 21]: 946a4d7435354818 +Block 0006 [ 22]: 87b54129576c4a9c +Block 0006 [ 23]: 28b86e840a4064d9 +Block 0006 [ 24]: f9f1822ce98f3ca0 +Block 0006 [ 25]: 344e3c556a58cc14 +Block 0006 [ 26]: 883035b52362e185 +Block 0006 [ 27]: f36ba02aa3454e68 +Block 0006 [ 28]: 048750f15e3ffd00 +Block 0006 [ 29]: 51caa2d99e8a24ab +Block 0006 [ 30]: 7811c3a5ede085db +Block 0006 [ 31]: 191cd21a6481418d +Block 0006 [ 32]: af23c99585efa784 +Block 0006 [ 33]: 009b765496773741 +Block 0006 [ 34]: 6b2f4fc088cd7915 +Block 0006 [ 35]: 2f47f7ffb875f613 +Block 0006 [ 36]: 4d4bc03237a6f45d +Block 0006 [ 37]: 05a194b584b3e4f3 +Block 0006 [ 38]: 876c8e1c406258a9 +Block 0006 [ 39]: 094c4a65daf31597 +Block 0006 [ 40]: 71979d2c94876815 +Block 0006 [ 41]: d95fbb18cdde807b +Block 0006 [ 42]: 56873c3c6a77ea27 +Block 0006 [ 43]: 0e8ee552d3dbb73c +Block 0006 [ 44]: 354914b53c56f3cf +Block 0006 [ 45]: 3af03f752ae6d89f +Block 0006 [ 46]: 9cf11128e09615c1 +Block 0006 [ 47]: 2b1793be04e3d175 +Block 0006 [ 48]: 152c18eb08686b4e +Block 0006 [ 49]: ea062b401a839631 +Block 0006 [ 50]: aee5f2f751f1c24a +Block 0006 [ 51]: 174e16304bc95ced +Block 0006 [ 52]: 31afd4326e143511 +Block 0006 [ 53]: 3e6bb44a56e9adff +Block 0006 [ 54]: a9ab2ae4f513489b +Block 0006 [ 55]: e8b59bb6b3ed5627 +Block 0006 [ 56]: 1a0098009a7d2d2f +Block 0006 [ 57]: f768c69efa1d67b4 +Block 0006 [ 58]: bf24fd4213be81d2 +Block 0006 [ 59]: 26707139bbe1b40d +Block 0006 [ 60]: b0664adea7357dd7 +Block 0006 [ 61]: 048453a9909258e6 +Block 0006 [ 62]: b69cdb041e2b2de0 +Block 0006 [ 63]: 5430e7650ccd9852 +Block 0006 [ 64]: 019f7e73ee6525ac +Block 0006 [ 65]: 1bb5a8b0938dd82c +Block 0006 [ 66]: 5091e79b43e23f21 +Block 0006 [ 67]: f2da3be4a013db03 +Block 0006 [ 68]: 98b2008447c0b8ac +Block 0006 [ 69]: 8846b0e94373ea1f +Block 0006 [ 70]: fbe04b9847c48704 +Block 0006 [ 71]: d1cf382289dc3c2f +Block 0006 [ 72]: 3a29efe90d33f696 +Block 0006 [ 73]: f22903e77daf981e +Block 0006 [ 74]: e6db7a462ee8c50b +Block 0006 [ 75]: c0509059ce0d3cff +Block 0006 [ 76]: 1f46c664bba8807d +Block 0006 [ 77]: 6379a85f3aa0f184 +Block 0006 [ 78]: cc4ba6f32664b4fc +Block 0006 [ 79]: 4c915b1a7bee1063 +Block 0006 [ 80]: b9212960b6c24468 +Block 0006 [ 81]: 79b4f92e0c689f7a +Block 0006 [ 82]: c0f3af7508f81d94 +Block 0006 [ 83]: 58d580eb8f6cab7e +Block 0006 [ 84]: bab9252d091f5a2a +Block 0006 [ 85]: de577666a2048bc7 +Block 0006 [ 86]: 33632662d8715400 +Block 0006 [ 87]: 6d0ea1c72b931660 +Block 0006 [ 88]: a3da78066b27764c +Block 0006 [ 89]: a278a6ddc80a80df +Block 0006 [ 90]: 3c2c1591ff0ff037 +Block 0006 [ 91]: a0e81559825b745b +Block 0006 [ 92]: 7a39c65250040b17 +Block 0006 [ 93]: effd385d0bbfbd5c +Block 0006 [ 94]: a690fb0e8ffc9158 +Block 0006 [ 95]: 142669d9ce44d588 +Block 0006 [ 96]: 90af245b7597b010 +Block 0006 [ 97]: 7f81e10489d3f752 +Block 0006 [ 98]: 98d6bf0d23b826f9 +Block 0006 [ 99]: ff2b06359fa73091 +Block 0006 [100]: b9891d8a4e86a7d1 +Block 0006 [101]: 2f76cd97393807b0 +Block 0006 [102]: a6e08dbea22fdbb4 +Block 0006 [103]: 5e438ed85d0c539a +Block 0006 [104]: adbe1afcb407cd9d +Block 0006 [105]: f8c35e7209ae8fc2 +Block 0006 [106]: f01786a381e5f75d +Block 0006 [107]: a0fd8d9144d2038e +Block 0006 [108]: 559367e9de9364f0 +Block 0006 [109]: 2ccf232c8f6ca882 +Block 0006 [110]: 0e1db01c3b4c62f0 +Block 0006 [111]: 8113e8478672ec59 +Block 0006 [112]: f1ea0ae15d78c389 +Block 0006 [113]: c33cf9e67f720c6d +Block 0006 [114]: 2824d46afa608c48 +Block 0006 [115]: e9ede0276710d159 +Block 0006 [116]: 93e0433df7fc77f6 +Block 0006 [117]: 7d69e3993c1460f3 +Block 0006 [118]: 72abf66864ec87a3 +Block 0006 [119]: 605deff9007bc0ce +Block 0006 [120]: 21b78f4f4ea41262 +Block 0006 [121]: 93e4596f4d325cd0 +Block 0006 [122]: 9b7dee7ba08c21f6 +Block 0006 [123]: eaf1b9c52f63d89a +Block 0006 [124]: 89c423612f0c9ffd +Block 0006 [125]: 9418a0e8c1e851a7 +Block 0006 [126]: 69955c65a7490b33 +Block 0006 [127]: 3173a0c424292d3d +Block 0007 [ 0]: 6ba8496b38841197 +Block 0007 [ 1]: ff6a2e6d337b1531 +Block 0007 [ 2]: fec2383a55d6d0d3 +Block 0007 [ 3]: 822585037db7b999 +Block 0007 [ 4]: 6834a1dab9935597 +Block 0007 [ 5]: 3313c569327449d3 +Block 0007 [ 6]: 53e24b910c22985b +Block 0007 [ 7]: 1e8b33d9e05abd81 +Block 0007 [ 8]: 6670313249886b9e +Block 0007 [ 9]: 207e04ab88f7cf12 +Block 0007 [ 10]: 8a6f5bd892a41752 +Block 0007 [ 11]: b84a87556a3e88e3 +Block 0007 [ 12]: 21b205650be73cf2 +Block 0007 [ 13]: 1eb1561c9672c294 +Block 0007 [ 14]: 3e9a33b36d56b481 +Block 0007 [ 15]: f6ca32e7178da473 +Block 0007 [ 16]: e1ac00984e2fdf66 +Block 0007 [ 17]: e1f213beb00420fe +Block 0007 [ 18]: 70c93c4772003b75 +Block 0007 [ 19]: 2178696de08e8af6 +Block 0007 [ 20]: 0bffb4fc05ac46e1 +Block 0007 [ 21]: 49d5777efd5c299c +Block 0007 [ 22]: 4acec3e85211a3d1 +Block 0007 [ 23]: de3d57be5a2f1031 +Block 0007 [ 24]: 85044f690b7477ce +Block 0007 [ 25]: cd0d85379c56058f +Block 0007 [ 26]: 1c71b6be61c6b3b7 +Block 0007 [ 27]: 31190408aac590f1 +Block 0007 [ 28]: ce49aa0929d8a6ea +Block 0007 [ 29]: d9e6a8f41ec97ed4 +Block 0007 [ 30]: e50cc28d487bcddf +Block 0007 [ 31]: 6e68852e0fb4ea28 +Block 0007 [ 32]: adb9ee01a0fffb02 +Block 0007 [ 33]: 51dba1925c8aa63f +Block 0007 [ 34]: 6e92ab6f38465397 +Block 0007 [ 35]: c2ec2bcdf128653b +Block 0007 [ 36]: b25694a246c4592f +Block 0007 [ 37]: 66410b37f06c626d +Block 0007 [ 38]: 2ccad97a38b8a60d +Block 0007 [ 39]: e80513476e773cb6 +Block 0007 [ 40]: a766c53f0ad112c9 +Block 0007 [ 41]: 4427c130a94fe37a +Block 0007 [ 42]: 2060b67375f3ad3d +Block 0007 [ 43]: 74a58556cc0e6489 +Block 0007 [ 44]: c58074434fddc554 +Block 0007 [ 45]: 858a27583a085017 +Block 0007 [ 46]: f88a99df8f73b570 +Block 0007 [ 47]: c21bb09e329ac925 +Block 0007 [ 48]: 29ea872c5e08034c +Block 0007 [ 49]: bbd71198f12c71df +Block 0007 [ 50]: f6404ea4ef1d6f2e +Block 0007 [ 51]: 145386a7ced124d6 +Block 0007 [ 52]: 69cbf3fc4068f8d6 +Block 0007 [ 53]: d7b7cc641a2170bb +Block 0007 [ 54]: b83c95965b03faed +Block 0007 [ 55]: a4157cf188bb4117 +Block 0007 [ 56]: 7172143717acef86 +Block 0007 [ 57]: cdb6489f49711464 +Block 0007 [ 58]: 1b21f5488c062af2 +Block 0007 [ 59]: 281e751e504dbf68 +Block 0007 [ 60]: 60d0f12dc5e74185 +Block 0007 [ 61]: b08294081e8249ef +Block 0007 [ 62]: 4e5b7b8e64f09128 +Block 0007 [ 63]: 66add7f61b5c0e95 +Block 0007 [ 64]: 675debc5d747afae +Block 0007 [ 65]: 794d5d3f683068a8 +Block 0007 [ 66]: 36e8710f090ebac1 +Block 0007 [ 67]: 13529fc886acb59c +Block 0007 [ 68]: 1d3c5a8f79042ef6 +Block 0007 [ 69]: 3b0927181306d5e0 +Block 0007 [ 70]: 4873c12d854f2927 +Block 0007 [ 71]: a8ef6fb5a498fefc +Block 0007 [ 72]: 8e55a9e91f278162 +Block 0007 [ 73]: f5629f3cd20af0c5 +Block 0007 [ 74]: ae75e9f6c80cf778 +Block 0007 [ 75]: 38fa5d2caefb359b +Block 0007 [ 76]: 1fcfb6d2bbf23517 +Block 0007 [ 77]: 372d4e12820e8f5e +Block 0007 [ 78]: ac9dd03841fc2c41 +Block 0007 [ 79]: 76b002cdba27d3e0 +Block 0007 [ 80]: 1bf59879b1e30e6e +Block 0007 [ 81]: 8a68990cf2a5a8f5 +Block 0007 [ 82]: 632afa5231f6d3d4 +Block 0007 [ 83]: bbf44429a770bb79 +Block 0007 [ 84]: 746687e36209f07b +Block 0007 [ 85]: fad5bc64f3274572 +Block 0007 [ 86]: a018eb23b8814708 +Block 0007 [ 87]: b41cb61d4ad7753e +Block 0007 [ 88]: 580314d1a213d60b +Block 0007 [ 89]: 4e427e87fdc6d92d +Block 0007 [ 90]: 1cb485f5924de8fd +Block 0007 [ 91]: 687fdb6bb6ac98a9 +Block 0007 [ 92]: 04e069dd82a73b0b +Block 0007 [ 93]: 8925a70571fb554e +Block 0007 [ 94]: 14860dde567eb785 +Block 0007 [ 95]: 2426e70c2283d948 +Block 0007 [ 96]: 505e230457a88d97 +Block 0007 [ 97]: 1078e11353e9cfad +Block 0007 [ 98]: 9c29e7f7217ca11c +Block 0007 [ 99]: 3d22a8e0d5b6c73b +Block 0007 [100]: 0e9a6cfffddba9ae +Block 0007 [101]: 038737d6db808e1e +Block 0007 [102]: 76106281d3f52bad +Block 0007 [103]: 433a57c1931117b4 +Block 0007 [104]: 3195542f3f970037 +Block 0007 [105]: f390555bc1c142e8 +Block 0007 [106]: 6e393054580d5c77 +Block 0007 [107]: b59995f826e3ea8a +Block 0007 [108]: 8b67b02c62482a00 +Block 0007 [109]: fc571f50017bf799 +Block 0007 [110]: be5aea8814966996 +Block 0007 [111]: 0806343d7b049900 +Block 0007 [112]: e185db328360b1f7 +Block 0007 [113]: f592ab2705a7630c +Block 0007 [114]: 19a218f17ffaf619 +Block 0007 [115]: 11243b99852c5781 +Block 0007 [116]: e491ffdd746b6f91 +Block 0007 [117]: 2bb1bbc794389f18 +Block 0007 [118]: 05545e1dfa2952e1 +Block 0007 [119]: fae4b68ab089c759 +Block 0007 [120]: 2406bc9a7d295f89 +Block 0007 [121]: 4d14821942c2c37a +Block 0007 [122]: 9455321b00e5824b +Block 0007 [123]: c12b3a7316ccd0ad +Block 0007 [124]: 962ae5fed17351e4 +Block 0007 [125]: b4e0b6e97f44972b +Block 0007 [126]: 4b452df74ac1020e +Block 0007 [127]: 7e0d387b75c20cf5 +Block 0008 [ 0]: 5259ca6d3a36b313 +Block 0008 [ 1]: 1d6d1ead6f5edbf9 +Block 0008 [ 2]: 3e626075da15b3c4 +Block 0008 [ 3]: 159304bf818a9646 +Block 0008 [ 4]: 40f28de5b742a00d +Block 0008 [ 5]: fd764500ccda300a +Block 0008 [ 6]: 93c1a2d82fcfe062 +Block 0008 [ 7]: 891b24e3f7120153 +Block 0008 [ 8]: 27f332ccb78f83d4 +Block 0008 [ 9]: d3df53656df5e84a +Block 0008 [ 10]: b3e520d550fa7e1c +Block 0008 [ 11]: b1018a57bdd1e9f3 +Block 0008 [ 12]: 61b86a7179c4f80d +Block 0008 [ 13]: 4a03abac5da9f1ca +Block 0008 [ 14]: 8fda17eda1a0a156 +Block 0008 [ 15]: 1addce7e73437ac2 +Block 0008 [ 16]: fea9bedf8bb82502 +Block 0008 [ 17]: 4c5840bef9c83e56 +Block 0008 [ 18]: a5b218fc4e41c532 +Block 0008 [ 19]: 5ec230403ad39835 +Block 0008 [ 20]: c7f49b16c6102a74 +Block 0008 [ 21]: 9b2602c9f497a960 +Block 0008 [ 22]: 9b2d5fe555b3465f +Block 0008 [ 23]: 47122c2f575c13c1 +Block 0008 [ 24]: 50a4d6db14d04ddc +Block 0008 [ 25]: 410dc8958a5e2e93 +Block 0008 [ 26]: 20f5192234fac4b5 +Block 0008 [ 27]: b4c41f2c0051c250 +Block 0008 [ 28]: 4ba7da28b90c27e0 +Block 0008 [ 29]: 6c6b3db5578529b8 +Block 0008 [ 30]: 1108be2d43f32bf7 +Block 0008 [ 31]: 6c77b6100babf0a2 +Block 0008 [ 32]: 830dba5dc317b352 +Block 0008 [ 33]: 03da88c747d12d8c +Block 0008 [ 34]: 34dd0664bda16e49 +Block 0008 [ 35]: b78e41567969e6d6 +Block 0008 [ 36]: 92ee7dcaf0366a9e +Block 0008 [ 37]: e61fe366d2213950 +Block 0008 [ 38]: e8ddfcdef2070068 +Block 0008 [ 39]: a525d18a51ef42bf +Block 0008 [ 40]: 2914e74d1937b200 +Block 0008 [ 41]: 828e147751e87a58 +Block 0008 [ 42]: 6678f5b97860ff7e +Block 0008 [ 43]: b92df23d8cd7cf61 +Block 0008 [ 44]: 6249bd3a4dc38950 +Block 0008 [ 45]: 9cf718b68e6260af +Block 0008 [ 46]: 355b1eb992fff80e +Block 0008 [ 47]: fa39bf26a986146e +Block 0008 [ 48]: 4d50d1700b363539 +Block 0008 [ 49]: b576745005e28e0c +Block 0008 [ 50]: 4103cf637375435b +Block 0008 [ 51]: d73e3ce76a4a54a0 +Block 0008 [ 52]: 3afb76f130d0b780 +Block 0008 [ 53]: c107de104e9f2dd5 +Block 0008 [ 54]: 73cb0720c2240f50 +Block 0008 [ 55]: 1bf896e70d6c2083 +Block 0008 [ 56]: a45e07f0cff18009 +Block 0008 [ 57]: 4d7612f5a121ea61 +Block 0008 [ 58]: 893f75beaddfc367 +Block 0008 [ 59]: e370e0dfde0d5d99 +Block 0008 [ 60]: 0c6c3872aa92803d +Block 0008 [ 61]: 29af23c163072580 +Block 0008 [ 62]: e1932b09eba1f3f9 +Block 0008 [ 63]: 85f51b011b100456 +Block 0008 [ 64]: 00a9e1bc03e8991f +Block 0008 [ 65]: d09e12552ef1c5d1 +Block 0008 [ 66]: cc824029d72b7bdc +Block 0008 [ 67]: 05a5cd6e9b167495 +Block 0008 [ 68]: 6d4dcb4d9f5445a8 +Block 0008 [ 69]: cc98c830e7008817 +Block 0008 [ 70]: 814a7125a194beca +Block 0008 [ 71]: 5808972b2747fe67 +Block 0008 [ 72]: 7a81cd0866c59672 +Block 0008 [ 73]: 9d9f58c494142020 +Block 0008 [ 74]: 9b4faa9e4ada6403 +Block 0008 [ 75]: bb43d73d368406b5 +Block 0008 [ 76]: a975c8724e5db21e +Block 0008 [ 77]: 3f7a667f5f787811 +Block 0008 [ 78]: e4a9d2d0fb77087f +Block 0008 [ 79]: 739edaaa0e25def1 +Block 0008 [ 80]: d582427ee94572e7 +Block 0008 [ 81]: 3c8c45c831998bd6 +Block 0008 [ 82]: 4c344b54c0ccaf0c +Block 0008 [ 83]: cf7dd330084c741a +Block 0008 [ 84]: 953fa1dcf74a93e5 +Block 0008 [ 85]: 8084832af5b9a52d +Block 0008 [ 86]: 55baac78297fc151 +Block 0008 [ 87]: fae1b46c08dbc171 +Block 0008 [ 88]: a3d0bdb749a194e0 +Block 0008 [ 89]: e87d1b2638d34859 +Block 0008 [ 90]: 2b9f364c44ab2eb9 +Block 0008 [ 91]: d8262a2360ce0759 +Block 0008 [ 92]: 346bb034f119271c +Block 0008 [ 93]: c94b9fb51412a621 +Block 0008 [ 94]: 4225b9cde4fc86ac +Block 0008 [ 95]: 4e8e3c64415b1ee4 +Block 0008 [ 96]: 60009e56552c6993 +Block 0008 [ 97]: d1abc108a143c4e2 +Block 0008 [ 98]: ce5bdcb7836aa2ca +Block 0008 [ 99]: 1a010f4ef1d0b16c +Block 0008 [100]: 7c3a56be69587764 +Block 0008 [101]: 7369edd379ab8b63 +Block 0008 [102]: eb059375e9d81e38 +Block 0008 [103]: ae49a0bebd2c2ac9 +Block 0008 [104]: 8add79962ff22ad5 +Block 0008 [105]: 2dfb46381509ec52 +Block 0008 [106]: 04de7d1dae36bc35 +Block 0008 [107]: 99e3ae5cacf38f66 +Block 0008 [108]: 5b4db397ff6f28f8 +Block 0008 [109]: 89abdd89178308c5 +Block 0008 [110]: e54007bba21fe65d +Block 0008 [111]: c0e9fdadf5e1e527 +Block 0008 [112]: 3d0f9bbae6d4610a +Block 0008 [113]: df4b0e09deee4fe4 +Block 0008 [114]: 08cf08a9a18f088a +Block 0008 [115]: 58c8f1ae000a0d79 +Block 0008 [116]: 7744856a25d26d97 +Block 0008 [117]: f246a2fab3db25d9 +Block 0008 [118]: 54cf019234a9b36e +Block 0008 [119]: c793d0b47c8dbd37 +Block 0008 [120]: e8c663169cb43d49 +Block 0008 [121]: 19b18b1eb53f8254 +Block 0008 [122]: 483a04f336087aca +Block 0008 [123]: 97493df4888c1ba2 +Block 0008 [124]: e446534935ffa48b +Block 0008 [125]: ad8fa4e6f8cb4598 +Block 0008 [126]: dff80c58fb8dcf69 +Block 0008 [127]: 9615048467e85223 +Block 0009 [ 0]: 8d963957a536997f +Block 0009 [ 1]: c4a6ad17a4903963 +Block 0009 [ 2]: 3ee60a10fade64bd +Block 0009 [ 3]: 918230770a0bda88 +Block 0009 [ 4]: 4dad1f4d8f17a928 +Block 0009 [ 5]: 870a1122e272b9c3 +Block 0009 [ 6]: 899e307819c85ebc +Block 0009 [ 7]: 5641cd3d43fdfaa0 +Block 0009 [ 8]: 69c1d89c1ba02780 +Block 0009 [ 9]: 128b497198c1865c +Block 0009 [ 10]: 4160861b315ab2ee +Block 0009 [ 11]: 784697c277a6072e +Block 0009 [ 12]: 5d62d29bec87100c +Block 0009 [ 13]: 2e6e695196fc9121 +Block 0009 [ 14]: 86a30cd6b0741842 +Block 0009 [ 15]: 1e18a364e5529621 +Block 0009 [ 16]: a311f98926327790 +Block 0009 [ 17]: e32d9b217b876772 +Block 0009 [ 18]: 4582229ca541e0a1 +Block 0009 [ 19]: 8ddbf5257cd31eeb +Block 0009 [ 20]: 42b4f8b1484aac1b +Block 0009 [ 21]: b6c08be2826d7c43 +Block 0009 [ 22]: 848ef012c2332b6c +Block 0009 [ 23]: 4858f635c0303546 +Block 0009 [ 24]: eaed088be0c2a16c +Block 0009 [ 25]: bb4c1b64e3521fc1 +Block 0009 [ 26]: 67cba8006304295c +Block 0009 [ 27]: 95ed7e2dc98c07de +Block 0009 [ 28]: 4f0b541907b7ab11 +Block 0009 [ 29]: 7aaf4aadb5919b8a +Block 0009 [ 30]: 65c3144eacb5e21c +Block 0009 [ 31]: b870063bb1c29683 +Block 0009 [ 32]: d1fccbcb6ac869a8 +Block 0009 [ 33]: e19c542080c1037a +Block 0009 [ 34]: b782df41419c71b7 +Block 0009 [ 35]: 4a15b9dcf0f2914a +Block 0009 [ 36]: 5da3c185b1920dbc +Block 0009 [ 37]: 1e4f4ca00f51a8da +Block 0009 [ 38]: 4540b427d7986a06 +Block 0009 [ 39]: fafd493c29276799 +Block 0009 [ 40]: 6ed26c50e7f2f666 +Block 0009 [ 41]: 65aff4e3d3229085 +Block 0009 [ 42]: c9e8ba24fd75136c +Block 0009 [ 43]: 663fa64fa9fe42f7 +Block 0009 [ 44]: c7544b471dae4d4d +Block 0009 [ 45]: 517114e5034b0c26 +Block 0009 [ 46]: f24e844f304a3465 +Block 0009 [ 47]: 6e5db83b787cb0f8 +Block 0009 [ 48]: 723ec7e828d038fc +Block 0009 [ 49]: 0db3e649393b0c13 +Block 0009 [ 50]: 970b65347ed76a0b +Block 0009 [ 51]: 67b8830d910eb7d8 +Block 0009 [ 52]: cf84ec1f4b8d86eb +Block 0009 [ 53]: be876b2a347b2cfa +Block 0009 [ 54]: 81bb175f13040617 +Block 0009 [ 55]: 29674b23bc32c06a +Block 0009 [ 56]: 034979be2e66bd20 +Block 0009 [ 57]: 16616446a32d1454 +Block 0009 [ 58]: 4c3b6001cf1aa63f +Block 0009 [ 59]: c16597bd1140e5f8 +Block 0009 [ 60]: 4915156867633734 +Block 0009 [ 61]: c58d3c905365d036 +Block 0009 [ 62]: a1a58f8411565ab5 +Block 0009 [ 63]: e0b468700d2b3969 +Block 0009 [ 64]: af4e54cfdabd7edb +Block 0009 [ 65]: 8b634eecb5a46d85 +Block 0009 [ 66]: 5c923be735f6b858 +Block 0009 [ 67]: c0f362cb40cfd94e +Block 0009 [ 68]: c67c2ba34bda20ec +Block 0009 [ 69]: a3413ddc6029885f +Block 0009 [ 70]: cc207f19ab7e5f18 +Block 0009 [ 71]: c73bfd337bf0f0b1 +Block 0009 [ 72]: ee284443d5ced8cf +Block 0009 [ 73]: 1b9232b01fad047e +Block 0009 [ 74]: 703688554bee2ae4 +Block 0009 [ 75]: f597ac898a79680c +Block 0009 [ 76]: 5325576a2e5adbaf +Block 0009 [ 77]: b2781327e24f8204 +Block 0009 [ 78]: c6840aa28b3e3b9a +Block 0009 [ 79]: b80c00e463ce419e +Block 0009 [ 80]: 08c14af5fd669746 +Block 0009 [ 81]: cbf2715a3e703b03 +Block 0009 [ 82]: 5c5252edfcefc3fe +Block 0009 [ 83]: c48bbd0ba30fd38c +Block 0009 [ 84]: 0355e5b24d75ccb0 +Block 0009 [ 85]: 95339e461d24b225 +Block 0009 [ 86]: b9d5a4b5eb19ce67 +Block 0009 [ 87]: 7781e7c609adb4ba +Block 0009 [ 88]: fdef794fbe63f3a6 +Block 0009 [ 89]: bb85bdfff07b8070 +Block 0009 [ 90]: c1564b6b30544c8b +Block 0009 [ 91]: ca50d06573e145b8 +Block 0009 [ 92]: c8b9a64f3c9dcdfe +Block 0009 [ 93]: 96384a8d0c02ed62 +Block 0009 [ 94]: a3e0251da1846848 +Block 0009 [ 95]: 9e46f28821fcd8a3 +Block 0009 [ 96]: d511566c1b2a611a +Block 0009 [ 97]: b3f0b3d1d6decdf6 +Block 0009 [ 98]: b356cc84ab1dd563 +Block 0009 [ 99]: 79385780cdc22aa6 +Block 0009 [100]: 8e54d0f99da0ba48 +Block 0009 [101]: eeb4bbc030ecb64f +Block 0009 [102]: aa65a55cb2217b98 +Block 0009 [103]: 74c0f4b18cb18580 +Block 0009 [104]: 8800a12932cafd8d +Block 0009 [105]: dc3f1cafe3ef4169 +Block 0009 [106]: e22f0b7715086a3a +Block 0009 [107]: 23e7ff371f808fab +Block 0009 [108]: 2722c0cd8303729a +Block 0009 [109]: 2e19a354daddf68e +Block 0009 [110]: bf066010ca4d2470 +Block 0009 [111]: 93bf7152d6c01024 +Block 0009 [112]: bf0e9c8587beeeea +Block 0009 [113]: bdcd171d0af4f8c8 +Block 0009 [114]: 50d615372d928f8a +Block 0009 [115]: e6e1a1f298ead702 +Block 0009 [116]: 688961c8eef31af0 +Block 0009 [117]: 6286463479291f80 +Block 0009 [118]: 2326971a8e438ca8 +Block 0009 [119]: cfabc762664132ba +Block 0009 [120]: 453e4d9874f8c7d2 +Block 0009 [121]: 252f5639b54d91c1 +Block 0009 [122]: bdfadba3e20d0814 +Block 0009 [123]: c7e2ea1a068ac5fc +Block 0009 [124]: 60b0c61c569a38a9 +Block 0009 [125]: 23697167f4e5bca5 +Block 0009 [126]: f0f6d6ba1b088fc4 +Block 0009 [127]: 45c7753fff713126 +Block 0010 [ 0]: a155295b01ac4d30 +Block 0010 [ 1]: 68ab16c5843df6cb +Block 0010 [ 2]: ed7098da0bd1ff3b +Block 0010 [ 3]: 0db2099cb481af2f +Block 0010 [ 4]: a52db650e07ce567 +Block 0010 [ 5]: 2750f845c384504b +Block 0010 [ 6]: 0a83bf1dae23e4c3 +Block 0010 [ 7]: de8d504a2708cdf3 +Block 0010 [ 8]: f93265ef617dff1d +Block 0010 [ 9]: aeeff126f1e4567c +Block 0010 [ 10]: be36af22f2341833 +Block 0010 [ 11]: e237aa380f006bde +Block 0010 [ 12]: 2841c97e30c36218 +Block 0010 [ 13]: 184af4aea8cd5e3d +Block 0010 [ 14]: 876a611ed9d49bdf +Block 0010 [ 15]: 88dcffa6fdff7e0f +Block 0010 [ 16]: e868b86f79e7c8e5 +Block 0010 [ 17]: fc48a515f1f1fc7a +Block 0010 [ 18]: 4de6909906d51551 +Block 0010 [ 19]: f405e8ed00ab8bcb +Block 0010 [ 20]: 303ec10c8f448bfc +Block 0010 [ 21]: 356c758cb6c5a6e1 +Block 0010 [ 22]: 81c1c60cbfe526f3 +Block 0010 [ 23]: 67769a6e5c0614a4 +Block 0010 [ 24]: 808c3f810c6ae10a +Block 0010 [ 25]: 1311e7194ea63ca3 +Block 0010 [ 26]: 51d884b09a5f06c9 +Block 0010 [ 27]: 31f59e84e05466e3 +Block 0010 [ 28]: bbec4b3666df4af1 +Block 0010 [ 29]: 7cf8ac6e32ec9c9b +Block 0010 [ 30]: 6df4b0777ac0d800 +Block 0010 [ 31]: c044519371be85bd +Block 0010 [ 32]: c904303d438b2327 +Block 0010 [ 33]: d37cc11f5a390efe +Block 0010 [ 34]: a442a081b209a435 +Block 0010 [ 35]: ea5fd8c62a00f630 +Block 0010 [ 36]: f29acbd22fe24aba +Block 0010 [ 37]: 58250563d6e9d821 +Block 0010 [ 38]: b6aa81f0386d4805 +Block 0010 [ 39]: 2959dfb28bbfdc1d +Block 0010 [ 40]: afb376911753d340 +Block 0010 [ 41]: ff93ed94cac1679a +Block 0010 [ 42]: 255a7e056235ca61 +Block 0010 [ 43]: c53082cfa7444f13 +Block 0010 [ 44]: 85c5e2c1da5750c9 +Block 0010 [ 45]: 3d830e2c63bb654c +Block 0010 [ 46]: 38d498ed77856052 +Block 0010 [ 47]: 9f5bfa824372f0b0 +Block 0010 [ 48]: fa2a179bd8996d69 +Block 0010 [ 49]: 40f27a5bd12cf513 +Block 0010 [ 50]: 0e2770ef9875c3fd +Block 0010 [ 51]: 0b0605ce69236666 +Block 0010 [ 52]: e300caa5339b66d9 +Block 0010 [ 53]: ea15eb73ed763d9f +Block 0010 [ 54]: aca1d069a5b673ed +Block 0010 [ 55]: eb1582e734dca43b +Block 0010 [ 56]: ae1f595784c7a0d1 +Block 0010 [ 57]: 11773c35e07ad36e +Block 0010 [ 58]: ade39ad32aa382df +Block 0010 [ 59]: a0cd5005220bf1d2 +Block 0010 [ 60]: 4cd54612e5ae3ab1 +Block 0010 [ 61]: 718c32e1f0f4d42d +Block 0010 [ 62]: ed1f4959e2732ab9 +Block 0010 [ 63]: 56a9fd7a2779ec0d +Block 0010 [ 64]: 6c26e13421fc4adf +Block 0010 [ 65]: 2aef67967429131f +Block 0010 [ 66]: 98a3c0c68368bd99 +Block 0010 [ 67]: a26987ead29cc55d +Block 0010 [ 68]: 52488b2265b5c01b +Block 0010 [ 69]: 151cf48de1fe8f67 +Block 0010 [ 70]: 8ca385421622de8f +Block 0010 [ 71]: 030a4ed9cdbac297 +Block 0010 [ 72]: 648302f6f37362dd +Block 0010 [ 73]: 100a968b3ee2cbf2 +Block 0010 [ 74]: eedf1aef6c2dd804 +Block 0010 [ 75]: 0d715cdd579b672a +Block 0010 [ 76]: 0a5ea66e059bae9e +Block 0010 [ 77]: ef9f5ac4fbc451da +Block 0010 [ 78]: 845ea8478e73a043 +Block 0010 [ 79]: a77ccaf8cdd52b7f +Block 0010 [ 80]: 91ea5e5d11aef2cf +Block 0010 [ 81]: ff048e6f903d4a54 +Block 0010 [ 82]: 822305d17b8f1f91 +Block 0010 [ 83]: d73824354065568c +Block 0010 [ 84]: 2b44d0d77e59f310 +Block 0010 [ 85]: ec92eab7de901b36 +Block 0010 [ 86]: 6e08016fa0d063c3 +Block 0010 [ 87]: 4bf9004837e9583b +Block 0010 [ 88]: 3e90cf88cd76ef51 +Block 0010 [ 89]: 922de6420db4e9ad +Block 0010 [ 90]: 061881dfad24119a +Block 0010 [ 91]: 8f6a872a98be535b +Block 0010 [ 92]: 22ae2709eec244b2 +Block 0010 [ 93]: f236154cda27421c +Block 0010 [ 94]: 518cd738e05da247 +Block 0010 [ 95]: fc03cebe3057d920 +Block 0010 [ 96]: bb23eb6eb9e60b8e +Block 0010 [ 97]: 6193477b593d97fe +Block 0010 [ 98]: 40f082b0b3d57018 +Block 0010 [ 99]: 096790e49d224334 +Block 0010 [100]: d2dafff37dbffd43 +Block 0010 [101]: 3574fcbfe52e8b8c +Block 0010 [102]: 6ec82c308a5e69c1 +Block 0010 [103]: 583434560a091635 +Block 0010 [104]: 06829557ec535cfb +Block 0010 [105]: f4043f12018d3761 +Block 0010 [106]: 8e388c730ec84362 +Block 0010 [107]: 2a6e35d51235dbb2 +Block 0010 [108]: 1b9442bc195397f4 +Block 0010 [109]: 0936c2e76ce5a0df +Block 0010 [110]: 8d684e8befbbd5c7 +Block 0010 [111]: 0a1240e8def43989 +Block 0010 [112]: bfb4b54653ff9af3 +Block 0010 [113]: 25ae9402aa130a0d +Block 0010 [114]: 7d276ec556940d88 +Block 0010 [115]: cda890baf010f915 +Block 0010 [116]: 56f9901e7075728b +Block 0010 [117]: 6b73d35e23ddba2c +Block 0010 [118]: a89df666576093f2 +Block 0010 [119]: 8f65a1ede29fbd78 +Block 0010 [120]: a68506cdaef8c905 +Block 0010 [121]: a1470990c4b30b1a +Block 0010 [122]: 0eb09895d515d9b1 +Block 0010 [123]: bf69f75cdd17fcfa +Block 0010 [124]: eb84a10c20614087 +Block 0010 [125]: 96379c54d0c2023b +Block 0010 [126]: a7477d567fd71950 +Block 0010 [127]: f037e9b031a97504 +Block 0011 [ 0]: 16d5da761e2acf6f +Block 0011 [ 1]: 6ad87f540d41f387 +Block 0011 [ 2]: 6f820405b2971af5 +Block 0011 [ 3]: 17b25af4c1c16f5e +Block 0011 [ 4]: 2ee33eb0bfaa58f9 +Block 0011 [ 5]: b7485047f793e807 +Block 0011 [ 6]: e52fab8ca2aaf375 +Block 0011 [ 7]: d6acc6a7c567b85c +Block 0011 [ 8]: b9ab663e0824a963 +Block 0011 [ 9]: 3ed7c09ce01c8ad6 +Block 0011 [ 10]: 837443ede4f8bed6 +Block 0011 [ 11]: 8353cf5e1459756d +Block 0011 [ 12]: 01c08edcae2527d6 +Block 0011 [ 13]: db388b3e6b962544 +Block 0011 [ 14]: c113c7ed15543703 +Block 0011 [ 15]: 0bc986fa7737339d +Block 0011 [ 16]: e17dd29e93c96a73 +Block 0011 [ 17]: 7d4e5d3027092ecb +Block 0011 [ 18]: 8c165d43a9b74c65 +Block 0011 [ 19]: 11d3bb05f3c2dca0 +Block 0011 [ 20]: 8b12c7a8b3767321 +Block 0011 [ 21]: 24cce4a0f3500b45 +Block 0011 [ 22]: 7d6eaa8f935fe7fd +Block 0011 [ 23]: 149d30539dfa5940 +Block 0011 [ 24]: 23d0f122c7c0cbcf +Block 0011 [ 25]: d899562ed181b04e +Block 0011 [ 26]: dbc100cb4edfc990 +Block 0011 [ 27]: 177854a7449272f6 +Block 0011 [ 28]: 44d3ff8214a0f0c3 +Block 0011 [ 29]: 233f4fab487f5942 +Block 0011 [ 30]: c94a38017b4d0e24 +Block 0011 [ 31]: 14907f985d2d0332 +Block 0011 [ 32]: 3521d2a02c50eada +Block 0011 [ 33]: 329f4202c68dc27a +Block 0011 [ 34]: 5648323f8456bd6c +Block 0011 [ 35]: 9381cfcfb0b9a3da +Block 0011 [ 36]: 7420d4017e432c52 +Block 0011 [ 37]: 74ea06fcaf152880 +Block 0011 [ 38]: 7b44ce911f823401 +Block 0011 [ 39]: b923ee926f87622c +Block 0011 [ 40]: 0283c7a1f167499b +Block 0011 [ 41]: e1737ba82a19c571 +Block 0011 [ 42]: f9b63927e53a45f6 +Block 0011 [ 43]: 9550a830500a3210 +Block 0011 [ 44]: 05c7a35d07ade74f +Block 0011 [ 45]: ed1a289ffb3f305e +Block 0011 [ 46]: 2c8d598ad77f601b +Block 0011 [ 47]: 25e4baff52399210 +Block 0011 [ 48]: e74b1e3b49e9a78b +Block 0011 [ 49]: 18b4b3f39c90f7c7 +Block 0011 [ 50]: 329822ea868b1fd7 +Block 0011 [ 51]: 6411cb3574b64ade +Block 0011 [ 52]: 947891798fd01f8d +Block 0011 [ 53]: 3dd08d795b8c02c2 +Block 0011 [ 54]: 478fd0d43a7fa288 +Block 0011 [ 55]: 88a9b9dc0ae9c7a9 +Block 0011 [ 56]: b9583b9e42ba1802 +Block 0011 [ 57]: e1e9bc1d711c8f22 +Block 0011 [ 58]: 15881e0659ceda04 +Block 0011 [ 59]: d1501a760d3d4a33 +Block 0011 [ 60]: 038c4699f07c1fc5 +Block 0011 [ 61]: 89a0f133277bf367 +Block 0011 [ 62]: 67129d0a742b771b +Block 0011 [ 63]: d55736ca7e7d5c13 +Block 0011 [ 64]: 66d17ba5ebb98138 +Block 0011 [ 65]: 905043e0102e5136 +Block 0011 [ 66]: 5ce42fae82caeeb5 +Block 0011 [ 67]: eee0b24c626ccfb2 +Block 0011 [ 68]: f13b34cfa160faa6 +Block 0011 [ 69]: d152913d8434e565 +Block 0011 [ 70]: 46f08fa361436ed8 +Block 0011 [ 71]: 476fe95a3eb25b18 +Block 0011 [ 72]: d0821f62c54f4b63 +Block 0011 [ 73]: af1912c68f81b8b5 +Block 0011 [ 74]: 7d0aed1b7cfe9215 +Block 0011 [ 75]: f7013ad16ab17ac1 +Block 0011 [ 76]: bdea73e717e5e9c7 +Block 0011 [ 77]: 36d8d670c31182db +Block 0011 [ 78]: 50f5bbe3f051fcd9 +Block 0011 [ 79]: 5d410ac5d4379955 +Block 0011 [ 80]: 4b9720ccfbe61a3d +Block 0011 [ 81]: 6c63bd26273ad3d8 +Block 0011 [ 82]: 9909be9a65ef8aae +Block 0011 [ 83]: 47d7660487d79065 +Block 0011 [ 84]: 9b65b7f5ca6f10f7 +Block 0011 [ 85]: 5c30891026346e3a +Block 0011 [ 86]: 0955df9ce73a911a +Block 0011 [ 87]: 235c4f3afaac52f4 +Block 0011 [ 88]: d3fa46a611e7ae27 +Block 0011 [ 89]: 89c0db05c5f3024f +Block 0011 [ 90]: dbcb01a6c0e4050b +Block 0011 [ 91]: abca89b857e99e18 +Block 0011 [ 92]: eb31d6fb723e632a +Block 0011 [ 93]: 031c7b76283804d5 +Block 0011 [ 94]: 30ccac15e32a08ed +Block 0011 [ 95]: 242f2b13e7fe0266 +Block 0011 [ 96]: 0b1b51fdcaab6bb8 +Block 0011 [ 97]: 9d336dfd23b236a3 +Block 0011 [ 98]: 4eeaf99bcf0c1173 +Block 0011 [ 99]: 9294e337605f02d2 +Block 0011 [100]: b7391a42963d8a3f +Block 0011 [101]: 8c7f9f625e1c4ffb +Block 0011 [102]: 7c202d63402ffb12 +Block 0011 [103]: 465d394021fba944 +Block 0011 [104]: b70e74918fcf4e79 +Block 0011 [105]: a02932280e957875 +Block 0011 [106]: b82709862601c6e7 +Block 0011 [107]: 4dcd278efa73b84f +Block 0011 [108]: c989a31b52fe9ea3 +Block 0011 [109]: 3e67e65ed7d255b1 +Block 0011 [110]: 5bd18bc29536ccc3 +Block 0011 [111]: b23efe04420321f9 +Block 0011 [112]: c57b1b093eabd7a7 +Block 0011 [113]: bdefbdc6c8803be8 +Block 0011 [114]: cae880e44d925961 +Block 0011 [115]: 7cf1bf54e78c13ba +Block 0011 [116]: aafa3cf4189ae522 +Block 0011 [117]: 41b52b96d7aa2e0c +Block 0011 [118]: 9f67eff23fffc6e1 +Block 0011 [119]: 9eef0c2059cc2b4e +Block 0011 [120]: d0014fdd3e2eaaa9 +Block 0011 [121]: d6dc04699625b658 +Block 0011 [122]: ee5b509a8fec397d +Block 0011 [123]: e99b5a5b20642de4 +Block 0011 [124]: 1853735329636fde +Block 0011 [125]: 6249b557a6fb93d9 +Block 0011 [126]: 2502ceca006bcbef +Block 0011 [127]: 691208dd510b74b4 +Block 0012 [ 0]: 479bed6dde74697b +Block 0012 [ 1]: c837d8d60d2214a3 +Block 0012 [ 2]: 2cce7a5664653b4e +Block 0012 [ 3]: d5f47908104f9dfe +Block 0012 [ 4]: 8f33f1a3401ce873 +Block 0012 [ 5]: 6318d20c310aa3f3 +Block 0012 [ 6]: 9a8c1067e646cf2f +Block 0012 [ 7]: da0411c4f0b9d646 +Block 0012 [ 8]: 4f1a128c6195af3e +Block 0012 [ 9]: f66c9e56cb5f4ff4 +Block 0012 [ 10]: bb192d9a6e711985 +Block 0012 [ 11]: 57136bae517fc91d +Block 0012 [ 12]: a4b51776c440f3ae +Block 0012 [ 13]: 9948574e322d3dd9 +Block 0012 [ 14]: 9ea814ec6cbb9955 +Block 0012 [ 15]: 55b4234e06276f01 +Block 0012 [ 16]: 384ba30dd3183608 +Block 0012 [ 17]: dcc76d5af8b9f6e1 +Block 0012 [ 18]: 80d439b91f04b10f +Block 0012 [ 19]: b72f956fb72c081b +Block 0012 [ 20]: 78cc14d32f4f1cdc +Block 0012 [ 21]: ad99b2f9a74185f2 +Block 0012 [ 22]: 987dc5012ae1a664 +Block 0012 [ 23]: ebc1098f16346958 +Block 0012 [ 24]: 7cf6fb6601ad0cff +Block 0012 [ 25]: d53828e896e30068 +Block 0012 [ 26]: 80f07625663e91e9 +Block 0012 [ 27]: da9aa3dcebf93e45 +Block 0012 [ 28]: 5f7d20f04cfa78c6 +Block 0012 [ 29]: f880f90b6a602855 +Block 0012 [ 30]: 5e52e35b8b9910c5 +Block 0012 [ 31]: 6edaa56bdea58a09 +Block 0012 [ 32]: bd3bf1ccf3b938b5 +Block 0012 [ 33]: a72a4a89ab2fdc74 +Block 0012 [ 34]: 080d919b24f87a04 +Block 0012 [ 35]: 27e7d16d439111d6 +Block 0012 [ 36]: aa9674480df2c6e0 +Block 0012 [ 37]: 2f69d96019e10cdd +Block 0012 [ 38]: 522951c9583f8368 +Block 0012 [ 39]: e443adf29afac5f2 +Block 0012 [ 40]: 748efa26a7b9f7b4 +Block 0012 [ 41]: c1d82ff00f41a415 +Block 0012 [ 42]: 93b12a65b481644c +Block 0012 [ 43]: 3a9361a1a24fb8fe +Block 0012 [ 44]: 9fa9db4674c4ae0b +Block 0012 [ 45]: 6c09c898703d18dd +Block 0012 [ 46]: a2364154f4aa1c76 +Block 0012 [ 47]: 0317e1ab68529d62 +Block 0012 [ 48]: 82a51ec093f4e4ac +Block 0012 [ 49]: 7e1b86bae00f0341 +Block 0012 [ 50]: 4d9e742cc0951668 +Block 0012 [ 51]: d1bd11f39b511da6 +Block 0012 [ 52]: eb509302c5ed1b65 +Block 0012 [ 53]: e3a4db785c5e6419 +Block 0012 [ 54]: 5b43dc7bce9ac02c +Block 0012 [ 55]: 8fb29954e608f2fd +Block 0012 [ 56]: 2cf4847ccfd29810 +Block 0012 [ 57]: 7054dfa1e24ea4a1 +Block 0012 [ 58]: 413d54995b4a3847 +Block 0012 [ 59]: 0ca94a54d1234516 +Block 0012 [ 60]: e3f21986e65a1276 +Block 0012 [ 61]: 9d30023f2b0de00d +Block 0012 [ 62]: c57c67ac34de2acb +Block 0012 [ 63]: cea1c131b2e6f6f1 +Block 0012 [ 64]: 44d107c62c763d74 +Block 0012 [ 65]: c4b1203184ceac4a +Block 0012 [ 66]: 7726c5e222f77f87 +Block 0012 [ 67]: 96b88e59365ac05c +Block 0012 [ 68]: 94b969b2c696dc77 +Block 0012 [ 69]: 37b575acdafcdcbc +Block 0012 [ 70]: cb8e3c2b408d264d +Block 0012 [ 71]: 36e779fd95a9693c +Block 0012 [ 72]: d7e90f25f0da03d4 +Block 0012 [ 73]: e4975c96652101fe +Block 0012 [ 74]: 249694d8ba8080c7 +Block 0012 [ 75]: 078fbed98e73cf86 +Block 0012 [ 76]: 3dfa5218e5f22b77 +Block 0012 [ 77]: 9b3a6a1272d472dc +Block 0012 [ 78]: e3c6ce5493d39837 +Block 0012 [ 79]: 53518b494be87ca8 +Block 0012 [ 80]: cb9b6888c60d8336 +Block 0012 [ 81]: c73e313c1f688a9e +Block 0012 [ 82]: b732289be782b0dc +Block 0012 [ 83]: a23853027cf2a452 +Block 0012 [ 84]: 6203d97675096015 +Block 0012 [ 85]: 8cd7d53aeb740717 +Block 0012 [ 86]: 57d24cb2a31b5720 +Block 0012 [ 87]: b1b20f5f0cdfbc58 +Block 0012 [ 88]: 5e7adb7681cffb5c +Block 0012 [ 89]: 2ecba812756d30ab +Block 0012 [ 90]: 3ee2f6f4691fc2ee +Block 0012 [ 91]: 7ad83ed55ea1e4de +Block 0012 [ 92]: 8145b77b8bb02543 +Block 0012 [ 93]: 12ba71f86b801c88 +Block 0012 [ 94]: d742db3bb16c11ef +Block 0012 [ 95]: b6f3487e39bbbfea +Block 0012 [ 96]: 3c807e44e0f76419 +Block 0012 [ 97]: 2b67cb709daaba44 +Block 0012 [ 98]: 854e279d27594d9d +Block 0012 [ 99]: c6c5fc086e450097 +Block 0012 [100]: 60c96c36a34f567e +Block 0012 [101]: 320b1a20620c6a52 +Block 0012 [102]: e261aef2b4735167 +Block 0012 [103]: 38c79e39edd260f8 +Block 0012 [104]: 80d057ab61c1c373 +Block 0012 [105]: 3d843068498eaa9d +Block 0012 [106]: f7200a89d0b53ec2 +Block 0012 [107]: 208a5da69d2804cd +Block 0012 [108]: cdc8eb2dd5303721 +Block 0012 [109]: d553e50ff2dc23ad +Block 0012 [110]: b8a284c5390a6677 +Block 0012 [111]: 2e8337fb6b5a8068 +Block 0012 [112]: 8aa4ee1b63809c68 +Block 0012 [113]: cb2d7ce6f22bfe1c +Block 0012 [114]: 45884652a6502a3d +Block 0012 [115]: b70308e7a301b39a +Block 0012 [116]: 5e0fbc5229a687fb +Block 0012 [117]: e6090e6b6d4afdce +Block 0012 [118]: 283f22d8fb804f61 +Block 0012 [119]: 0140e2e41a6c1064 +Block 0012 [120]: 3bc6a2c13687a35e +Block 0012 [121]: 709c8a7b7787060a +Block 0012 [122]: 395451d23660c97e +Block 0012 [123]: 9de1b10411494865 +Block 0012 [124]: c7901a854d4b2ac0 +Block 0012 [125]: 36c185f932b47622 +Block 0012 [126]: 8da1cc1943d6651d +Block 0012 [127]: 84a6607c1b0506c9 +Block 0013 [ 0]: 869de2c4be545941 +Block 0013 [ 1]: 4e3e2310099f6efc +Block 0013 [ 2]: 53cf9c3ba87811c0 +Block 0013 [ 3]: 45ba8f270479088c +Block 0013 [ 4]: cbc47bdb4bfb9512 +Block 0013 [ 5]: 705f37996c447d25 +Block 0013 [ 6]: 64f985dd3edfb36a +Block 0013 [ 7]: 30dc1cccd7a15a67 +Block 0013 [ 8]: 9d64ca45397a3987 +Block 0013 [ 9]: 643c9f78432b9e83 +Block 0013 [ 10]: 59bb13fda190b187 +Block 0013 [ 11]: 9c133bb3453ed3c4 +Block 0013 [ 12]: 632fc9efd5701891 +Block 0013 [ 13]: 12849ab202ce82fb +Block 0013 [ 14]: 1ef1705beb9facec +Block 0013 [ 15]: 18c2856c7f1ffd53 +Block 0013 [ 16]: ec08f1d3139e748f +Block 0013 [ 17]: 6a9555f38829e066 +Block 0013 [ 18]: a266ec1c4d6a0914 +Block 0013 [ 19]: 9da85111fa971270 +Block 0013 [ 20]: d2703c03675b4d56 +Block 0013 [ 21]: 052169e2a88da447 +Block 0013 [ 22]: 4df8ea75293ef8eb +Block 0013 [ 23]: 98a67dffd7bf1584 +Block 0013 [ 24]: 9e0ea048198f4e6b +Block 0013 [ 25]: c0ced52ac8776fc1 +Block 0013 [ 26]: 5dc759a20859e47f +Block 0013 [ 27]: 3eaa91ec50be0842 +Block 0013 [ 28]: e01f425fff0d5ccd +Block 0013 [ 29]: 5bc54a37268f877d +Block 0013 [ 30]: d70aaf26f46b54ca +Block 0013 [ 31]: 38cc404e371a5fa3 +Block 0013 [ 32]: 8caf2d6497da9dd7 +Block 0013 [ 33]: 0f59968a70e65c73 +Block 0013 [ 34]: 5df8b31703ac512a +Block 0013 [ 35]: 6a282d3ccc9974d9 +Block 0013 [ 36]: 7e1f19160264cc76 +Block 0013 [ 37]: 31384a7c8ddbe02c +Block 0013 [ 38]: cc2366252232f299 +Block 0013 [ 39]: 3edae45774890aca +Block 0013 [ 40]: 0d68e6d5ab8a3789 +Block 0013 [ 41]: 0a6311497373525e +Block 0013 [ 42]: 392f2b5968e6da1d +Block 0013 [ 43]: f51bfde00fd8ae12 +Block 0013 [ 44]: f745dd5d22f2389f +Block 0013 [ 45]: 8a29d9d8e38d6abd +Block 0013 [ 46]: 43dfa80fbaee264f +Block 0013 [ 47]: 41c8f46d33dbc1df +Block 0013 [ 48]: 38e4ffeac09c1559 +Block 0013 [ 49]: 35e68675c46dd316 +Block 0013 [ 50]: cf7dd905cbcdfc71 +Block 0013 [ 51]: 0ecb3be43721b94f +Block 0013 [ 52]: d2df07056860f6bf +Block 0013 [ 53]: 4375012359501fab +Block 0013 [ 54]: 5f0f024635f27998 +Block 0013 [ 55]: 605253df9c015df1 +Block 0013 [ 56]: 52ef0714a0978174 +Block 0013 [ 57]: 1e0cbe08d115392d +Block 0013 [ 58]: b0861399e44a6671 +Block 0013 [ 59]: 12f06ce67cb65a63 +Block 0013 [ 60]: 88e2b2f4d5aa270c +Block 0013 [ 61]: b416ae8495cdb1dd +Block 0013 [ 62]: 476eb9a14827f2d6 +Block 0013 [ 63]: 3fe106fdc31e49b7 +Block 0013 [ 64]: f65c055ed52486ec +Block 0013 [ 65]: 520ce94b1bdf56fc +Block 0013 [ 66]: cb665701c023670b +Block 0013 [ 67]: efffd466a44a6ecc +Block 0013 [ 68]: 5d4016d66b7428c0 +Block 0013 [ 69]: 21dc31325439d1f1 +Block 0013 [ 70]: 09269f65d8343f6c +Block 0013 [ 71]: b8911cbf45e6e91e +Block 0013 [ 72]: 57917b9b8f857336 +Block 0013 [ 73]: d5936dc55b3b8dfa +Block 0013 [ 74]: 6bbcfb958f006d1b +Block 0013 [ 75]: 3eee9ffc6db62eaa +Block 0013 [ 76]: 0c27000175b7c256 +Block 0013 [ 77]: 7b57e54e0f284814 +Block 0013 [ 78]: ce5c71ad657a0f9e +Block 0013 [ 79]: 113fd1f5a39d12ab +Block 0013 [ 80]: 5d310f2e39a4ebf9 +Block 0013 [ 81]: caef54f2ee5bc4af +Block 0013 [ 82]: 74d02a51575f9d89 +Block 0013 [ 83]: cbe8c9b293f234a3 +Block 0013 [ 84]: 97664e656bdf7a18 +Block 0013 [ 85]: 50cadc8443995bfe +Block 0013 [ 86]: c5bc3dbcd40bfb84 +Block 0013 [ 87]: 4f182b51402a7fdd +Block 0013 [ 88]: 82e5cb9b38d5147d +Block 0013 [ 89]: 9f96d4d29ad743bb +Block 0013 [ 90]: 9df98bdaf7111234 +Block 0013 [ 91]: fa101598dbefaff3 +Block 0013 [ 92]: 0a9112ed1833295d +Block 0013 [ 93]: 5a1819c534c75f6e +Block 0013 [ 94]: 863b85ee5f040587 +Block 0013 [ 95]: 536a68ab78ce76db +Block 0013 [ 96]: e63773caba37d0d7 +Block 0013 [ 97]: 3019b9bcbc3f7f0c +Block 0013 [ 98]: c1dfb09fe2d9ed0b +Block 0013 [ 99]: ebe8e7e4e4d0bf5c +Block 0013 [100]: 55af1a98cd9c8eaf +Block 0013 [101]: 5a491d1c5210d0b7 +Block 0013 [102]: 36b51725274f3586 +Block 0013 [103]: d479ff760a6da201 +Block 0013 [104]: 5502a0a5abd69dc5 +Block 0013 [105]: cc7e981900143bb3 +Block 0013 [106]: 08262d89452d89bb +Block 0013 [107]: 2ade91d1358ef400 +Block 0013 [108]: 45a1bf547d66f5ad +Block 0013 [109]: f8534c4b19fdec11 +Block 0013 [110]: c2dc68df97f00da1 +Block 0013 [111]: 9a67651f64fc054c +Block 0013 [112]: 51cbcbb7f2388fc1 +Block 0013 [113]: b22586297e8d659b +Block 0013 [114]: 111c205af275e222 +Block 0013 [115]: a1b63b89156d22d0 +Block 0013 [116]: f00bc4173610a284 +Block 0013 [117]: 807f16cfa68d7daf +Block 0013 [118]: 131e2a15d73586be +Block 0013 [119]: 99c188d88b8b19f8 +Block 0013 [120]: b191a1d6a7f7025f +Block 0013 [121]: f9901cf222b01b1b +Block 0013 [122]: 64bcf834a02188bc +Block 0013 [123]: 268289b3f602d318 +Block 0013 [124]: d77bc155075f3301 +Block 0013 [125]: 3db1c22c96a653fe +Block 0013 [126]: ae5bfce1a9f3044e +Block 0013 [127]: 78d5aaf71c2a77d7 +Block 0014 [ 0]: 00c86bd24802ea9d +Block 0014 [ 1]: 70eaa8e2d857454e +Block 0014 [ 2]: b8461f74bdaeebea +Block 0014 [ 3]: 5b0fbdada15fa94d +Block 0014 [ 4]: 4e1c6a1b0d24fb70 +Block 0014 [ 5]: 6356e350ec69a25a +Block 0014 [ 6]: 9082450c3aed4839 +Block 0014 [ 7]: 5ce7c454002a4f90 +Block 0014 [ 8]: 41761904fd5e0795 +Block 0014 [ 9]: a51251eab300a4fe +Block 0014 [ 10]: 993abaa3ca0ef769 +Block 0014 [ 11]: a06ff7ca3a082cc8 +Block 0014 [ 12]: 32e0401836b47569 +Block 0014 [ 13]: 2d275468ec43edc1 +Block 0014 [ 14]: add41de9575a0742 +Block 0014 [ 15]: 106c2c271f1d5489 +Block 0014 [ 16]: 0484e39a05e6a3d9 +Block 0014 [ 17]: d1f40dc02a507f75 +Block 0014 [ 18]: 50f7834440e25b0e +Block 0014 [ 19]: 2fc995af1911e6a6 +Block 0014 [ 20]: ced0b1d1001c1dc0 +Block 0014 [ 21]: 8ba00763ea1a115d +Block 0014 [ 22]: 7a434535db10fa25 +Block 0014 [ 23]: dc56a10a894c332d +Block 0014 [ 24]: 87491bfa1203b506 +Block 0014 [ 25]: 96e8a73d3e8e437a +Block 0014 [ 26]: 713d91ffc723b560 +Block 0014 [ 27]: ae4ccde8b1e2f38b +Block 0014 [ 28]: c5ccc7ae6f2be8f9 +Block 0014 [ 29]: 79fca3dfceb34b7e +Block 0014 [ 30]: 549551fa994d9055 +Block 0014 [ 31]: a2629606bfb6448c +Block 0014 [ 32]: f1676c661be1fbd7 +Block 0014 [ 33]: 38d4e94c23878d90 +Block 0014 [ 34]: 36d2170e5cdfdcc5 +Block 0014 [ 35]: 201d50c4600eafac +Block 0014 [ 36]: 4e8a7a0f4774f2e1 +Block 0014 [ 37]: 56f3c307d20765eb +Block 0014 [ 38]: dafb7f11ad7730a2 +Block 0014 [ 39]: be6722b2fadb6160 +Block 0014 [ 40]: c8d96d73c11db8ce +Block 0014 [ 41]: f6ecadc3bd4ecf5b +Block 0014 [ 42]: 7beedae27ab13341 +Block 0014 [ 43]: 56f3ede80c8750c8 +Block 0014 [ 44]: ad31b1489aca9fc5 +Block 0014 [ 45]: cede55663da2fc9e +Block 0014 [ 46]: 6dd2af6408693a2c +Block 0014 [ 47]: 04d961d026175067 +Block 0014 [ 48]: 7c6fd82af1d6e8cf +Block 0014 [ 49]: 95397dbf1f7a6c38 +Block 0014 [ 50]: bdae428ffc7de7e7 +Block 0014 [ 51]: 84b8ef4eeb1d144b +Block 0014 [ 52]: 71f06279ec183109 +Block 0014 [ 53]: 7e2d2144e3364773 +Block 0014 [ 54]: 0ea7b5505ec554d4 +Block 0014 [ 55]: e43d0b3a8714b1b0 +Block 0014 [ 56]: 9e34e938edc4832a +Block 0014 [ 57]: 623e7858c67c1456 +Block 0014 [ 58]: ce8cbfa434ed6ab3 +Block 0014 [ 59]: 1bff169a2dd33fd1 +Block 0014 [ 60]: 5114fd75790e1723 +Block 0014 [ 61]: 2866e974f1feed4c +Block 0014 [ 62]: a8e955affe2235a9 +Block 0014 [ 63]: 3b57591f37fd14cd +Block 0014 [ 64]: 7b218b6b041d1a0a +Block 0014 [ 65]: f0f792a5970adb06 +Block 0014 [ 66]: 96885001e6238bbb +Block 0014 [ 67]: 7307175080bda5d8 +Block 0014 [ 68]: 8dcec3b6bc0a928a +Block 0014 [ 69]: 8edf3697e22d9995 +Block 0014 [ 70]: 5a6069964e3ad92c +Block 0014 [ 71]: c3075b22691aee95 +Block 0014 [ 72]: d0cde2edb64c8ca8 +Block 0014 [ 73]: 60e9d510f0d624c2 +Block 0014 [ 74]: 9d7c5975380b0389 +Block 0014 [ 75]: 4e361fe607121311 +Block 0014 [ 76]: b934e471d7f25770 +Block 0014 [ 77]: 3cc1b0b276a87957 +Block 0014 [ 78]: 36c3c3ccafbd940c +Block 0014 [ 79]: cdbacd401c0d26ac +Block 0014 [ 80]: e8cf26f9266243bc +Block 0014 [ 81]: 3e494b39746897f8 +Block 0014 [ 82]: 76f70f73a95d5040 +Block 0014 [ 83]: 9fcf6d04848799fc +Block 0014 [ 84]: 420adba2d5a0ffd8 +Block 0014 [ 85]: 7d3179bf1094ac98 +Block 0014 [ 86]: bf1c368e3f8db189 +Block 0014 [ 87]: 555766187874c3ba +Block 0014 [ 88]: 947d88cf25d2e292 +Block 0014 [ 89]: b3ad799755e3bdf4 +Block 0014 [ 90]: 329adf355bdb795b +Block 0014 [ 91]: a20dabdff81c9d7f +Block 0014 [ 92]: 102479e949df8a5a +Block 0014 [ 93]: 6eaf90100f244259 +Block 0014 [ 94]: 847dabe1ca858f90 +Block 0014 [ 95]: a996b83fe8181714 +Block 0014 [ 96]: ba3d4069779e6e66 +Block 0014 [ 97]: 9419a60629bd868c +Block 0014 [ 98]: 86babe464aeb9d25 +Block 0014 [ 99]: 3a1d5a4844a955f3 +Block 0014 [100]: 5c8e5dc4986e5d34 +Block 0014 [101]: a146bff2dd80ffc0 +Block 0014 [102]: 14f526ae0bf9f335 +Block 0014 [103]: 7068780723340465 +Block 0014 [104]: 8f05ac83e14eea15 +Block 0014 [105]: 6e977e15d10e6f06 +Block 0014 [106]: aabe0b897bedbac4 +Block 0014 [107]: ac46c22beea3cd31 +Block 0014 [108]: c2d1847c1152e335 +Block 0014 [109]: bd1ca29ae5b34d5b +Block 0014 [110]: 496331e4757ab303 +Block 0014 [111]: 9c79b215bf4472af +Block 0014 [112]: 36c603bf5809aa33 +Block 0014 [113]: 3bada4e0890a89eb +Block 0014 [114]: de41b684fe909f5c +Block 0014 [115]: 77acbca5c6cf32cf +Block 0014 [116]: 0a537ea31cb3da7f +Block 0014 [117]: 1cdcec02169ec735 +Block 0014 [118]: 802d3fdb8d8849b4 +Block 0014 [119]: faee1668d1e776b8 +Block 0014 [120]: 57981790a57fac50 +Block 0014 [121]: e4791f7d957ccf0e +Block 0014 [122]: b7ee4984decb37ec +Block 0014 [123]: 95264b7a43318d79 +Block 0014 [124]: 52a8fdf5c03e06d0 +Block 0014 [125]: e569b4bf5c4574d2 +Block 0014 [126]: a36df387d9cc8f37 +Block 0014 [127]: 57068ca334d423d0 +Block 0015 [ 0]: d75972ef03571f4c +Block 0015 [ 1]: 5e5e8b05d98f3896 +Block 0015 [ 2]: b04e1c546ce6d8e3 +Block 0015 [ 3]: 53f2adda47a9cc25 +Block 0015 [ 4]: 3eac52ee5a2cb38e +Block 0015 [ 5]: 7b694a48e0d2819e +Block 0015 [ 6]: c241e4ea0bd4ebab +Block 0015 [ 7]: d0375209fb4ee4b3 +Block 0015 [ 8]: 34cfe8cb52316010 +Block 0015 [ 9]: 149b360c2e1998a4 +Block 0015 [ 10]: 79be196992f3e9cf +Block 0015 [ 11]: 58bf824ecf470a1b +Block 0015 [ 12]: 81889fe16317e424 +Block 0015 [ 13]: 204b5157bbbae499 +Block 0015 [ 14]: a816fa2fe32c2baf +Block 0015 [ 15]: d3e6f71c565b77c3 +Block 0015 [ 16]: 441439ca5abafa8d +Block 0015 [ 17]: 7c203cbd869c4977 +Block 0015 [ 18]: 8ffef24d751f61da +Block 0015 [ 19]: 8700964313db8a34 +Block 0015 [ 20]: 7eb15ce9dce6d5e6 +Block 0015 [ 21]: a8ea8be42ba1aedb +Block 0015 [ 22]: 68e0cdf37d17d392 +Block 0015 [ 23]: c29c6cc7611a110b +Block 0015 [ 24]: 953e2e65492a624d +Block 0015 [ 25]: 885259398da320e3 +Block 0015 [ 26]: 83e966e8a38610d4 +Block 0015 [ 27]: 83ea8061ea029504 +Block 0015 [ 28]: 34b9a1d0d654badb +Block 0015 [ 29]: 5577f100ceb1ab30 +Block 0015 [ 30]: a4415f554a54f985 +Block 0015 [ 31]: f41f0445612657d3 +Block 0015 [ 32]: 4e6632178ddeebc7 +Block 0015 [ 33]: 8ed0150b5f742a90 +Block 0015 [ 34]: a0e50dc6f98027d6 +Block 0015 [ 35]: 9c2e0784a086a19d +Block 0015 [ 36]: f1250326cfeecf5f +Block 0015 [ 37]: f26f569ac0c27156 +Block 0015 [ 38]: d8b7aa1999e7bcf2 +Block 0015 [ 39]: 21afc665eef7f8f6 +Block 0015 [ 40]: 79c5529b8dbbfdce +Block 0015 [ 41]: d694d8c3fb45b159 +Block 0015 [ 42]: c87437dd97abd34c +Block 0015 [ 43]: 22a0fe0c8b91c357 +Block 0015 [ 44]: cdfe2967d8eca54b +Block 0015 [ 45]: b6637f2c58b8962a +Block 0015 [ 46]: fffe389ff9e282f8 +Block 0015 [ 47]: 01037b1735f05742 +Block 0015 [ 48]: fc0c711b36244e13 +Block 0015 [ 49]: 5a5cadf6259259e4 +Block 0015 [ 50]: 5b25a4892c1bbf2a +Block 0015 [ 51]: 0970a7cddc1a7638 +Block 0015 [ 52]: f1836959c9326f9d +Block 0015 [ 53]: 3cfc6246151da4d1 +Block 0015 [ 54]: 8021e484b484b98e +Block 0015 [ 55]: 09452842146e5091 +Block 0015 [ 56]: 92df9ea332551b95 +Block 0015 [ 57]: 708084655fe8fbdf +Block 0015 [ 58]: c5514438a489ff6d +Block 0015 [ 59]: 633d707db2ca6b0f +Block 0015 [ 60]: 503042eb463ed026 +Block 0015 [ 61]: 9047897e1216e5c1 +Block 0015 [ 62]: c5decb95009acd93 +Block 0015 [ 63]: 86a70312b794373b +Block 0015 [ 64]: 40543a7d1ff593eb +Block 0015 [ 65]: cde3c0e472895075 +Block 0015 [ 66]: bb4f1933fd49e35a +Block 0015 [ 67]: 8b07d06d62e39575 +Block 0015 [ 68]: fc7bd9dbb50d5b5d +Block 0015 [ 69]: 5385e3f433ad4c7d +Block 0015 [ 70]: d9e08a5968386621 +Block 0015 [ 71]: 1a8034bdf1d062a7 +Block 0015 [ 72]: d71633748f0984a6 +Block 0015 [ 73]: 30db9941ccca4edf +Block 0015 [ 74]: 1a07d24906730427 +Block 0015 [ 75]: 3713bff74517517b +Block 0015 [ 76]: c9fee35405dadbc1 +Block 0015 [ 77]: 31c5bbd7159c97d2 +Block 0015 [ 78]: 6963f0bd077b6b28 +Block 0015 [ 79]: 6e348b2cdbb823a0 +Block 0015 [ 80]: 7b57b1ff3d8ff3a5 +Block 0015 [ 81]: 6e2b1699acf177ae +Block 0015 [ 82]: 8678cbbc62f66658 +Block 0015 [ 83]: 40600816986324ff +Block 0015 [ 84]: 7c8cb0e28a6f28ae +Block 0015 [ 85]: a8cff1d4f445c4ee +Block 0015 [ 86]: 341612ac59cc7847 +Block 0015 [ 87]: d1deacb53809d7fd +Block 0015 [ 88]: 9b50a6ee5d7d1948 +Block 0015 [ 89]: 9d15c478f7dcc4b9 +Block 0015 [ 90]: 59d7263057f177ea +Block 0015 [ 91]: 289f4fc690f576c2 +Block 0015 [ 92]: 902d29652c8d7a5f +Block 0015 [ 93]: ebb6de4f2680ad2e +Block 0015 [ 94]: aebe09766aae6aed +Block 0015 [ 95]: a010352a4a466549 +Block 0015 [ 96]: 6d01abc20434cf28 +Block 0015 [ 97]: ef5490c26c7160db +Block 0015 [ 98]: c8967bdad6fec7d4 +Block 0015 [ 99]: 1f3f3b7d011a59ac +Block 0015 [100]: 14649f16126e9144 +Block 0015 [101]: 7514a5b367741bd2 +Block 0015 [102]: f3048e4c58fa961d +Block 0015 [103]: b2029cf4babc2ece +Block 0015 [104]: 57d3d365f470df82 +Block 0015 [105]: f26caa1e504b2cee +Block 0015 [106]: 4e14ee1162f1aba0 +Block 0015 [107]: 8b404c1894a6cd7e +Block 0015 [108]: 7e59e9ad0315edb9 +Block 0015 [109]: 2982da0a40e3c999 +Block 0015 [110]: 5ee7b95068be9b9d +Block 0015 [111]: 2189fd2f1977ba4e +Block 0015 [112]: 9ce806b536243b71 +Block 0015 [113]: d9111bcc2d73ef11 +Block 0015 [114]: a1ec7c389432f66b +Block 0015 [115]: ebc58ec09735e09e +Block 0015 [116]: a6a66414ae766b22 +Block 0015 [117]: c0c662760fcb1852 +Block 0015 [118]: 04b77f032d2d29fb +Block 0015 [119]: 8dfac7b3bc22a617 +Block 0015 [120]: b0c1f84766e79592 +Block 0015 [121]: d97f09302ba87684 +Block 0015 [122]: 8961b89bb1dd5ada +Block 0015 [123]: 0d5c705785872c8c +Block 0015 [124]: ba3e87aaaa1a8399 +Block 0015 [125]: 6a2d50a64a414a9e +Block 0015 [126]: 3e921708eacebd87 +Block 0015 [127]: a57e9e6d210d9d86 +Block 0016 [ 0]: df185dd78c1f2b78 +Block 0016 [ 1]: 49f9a99335a422c3 +Block 0016 [ 2]: 02f5635e3b743a97 +Block 0016 [ 3]: 55f4724e5adf72c0 +Block 0016 [ 4]: e30716783fee2adb +Block 0016 [ 5]: 39dfe7810c7dd4e6 +Block 0016 [ 6]: 1dc5bb0e8e136978 +Block 0016 [ 7]: d13e3eaa24203ad3 +Block 0016 [ 8]: 4339943877cf7d96 +Block 0016 [ 9]: b918c90f4188fa29 +Block 0016 [ 10]: 907d0ff73d281017 +Block 0016 [ 11]: 425fce389b70a999 +Block 0016 [ 12]: c3baf4d09f9ec2ad +Block 0016 [ 13]: 69d75dbceb4b915d +Block 0016 [ 14]: a29ffd628df96321 +Block 0016 [ 15]: cf88189cf78fdfb6 +Block 0016 [ 16]: ef07b5d1da111948 +Block 0016 [ 17]: 4a3a74f1376d0d9e +Block 0016 [ 18]: 1b01accbc747837f +Block 0016 [ 19]: b48871a477381e4b +Block 0016 [ 20]: c7b3494dcf85abbd +Block 0016 [ 21]: 8aee4be839ba50cb +Block 0016 [ 22]: e6a4fc4ea169d857 +Block 0016 [ 23]: edfb8357401cb614 +Block 0016 [ 24]: f9dc1ba46003757c +Block 0016 [ 25]: ec9c465391eaeea3 +Block 0016 [ 26]: 1e1402a3ab178ad0 +Block 0016 [ 27]: 5a5810524c1f782b +Block 0016 [ 28]: 475df04282096019 +Block 0016 [ 29]: be53861dcdf717aa +Block 0016 [ 30]: 517ee91e28c1e49b +Block 0016 [ 31]: 4f6e9f32312fe2b8 +Block 0016 [ 32]: 374a8ff4124c3ba5 +Block 0016 [ 33]: 0a9add0bf6378093 +Block 0016 [ 34]: a17a2a5d0e3ff0d0 +Block 0016 [ 35]: 833253687ab236c9 +Block 0016 [ 36]: 10f5c2b5789316ca +Block 0016 [ 37]: c4055ea79dc80e81 +Block 0016 [ 38]: 333e55f91ae29671 +Block 0016 [ 39]: 150e8674d536a0a0 +Block 0016 [ 40]: 28c66be816ffcaa1 +Block 0016 [ 41]: 592a94f3b1459cab +Block 0016 [ 42]: eea6ec4cba337888 +Block 0016 [ 43]: 8600219ec14cde04 +Block 0016 [ 44]: 3a9b5cdd3568b325 +Block 0016 [ 45]: aad6128a2a76c958 +Block 0016 [ 46]: bfb8cade0905c962 +Block 0016 [ 47]: dda1376b4299b18a +Block 0016 [ 48]: bd0078b78f05094a +Block 0016 [ 49]: ab94838730040fb3 +Block 0016 [ 50]: 8891b571e9e2336e +Block 0016 [ 51]: 5c18d22f60a1a657 +Block 0016 [ 52]: b4615a5fb8572c23 +Block 0016 [ 53]: d3cbac3c3adecd23 +Block 0016 [ 54]: 71cf3196d24159dd +Block 0016 [ 55]: e5b0c73bdb337098 +Block 0016 [ 56]: 8849fdd41969d56e +Block 0016 [ 57]: c24297d105b05808 +Block 0016 [ 58]: 3d206c5fe6f6289d +Block 0016 [ 59]: a9a8333d832b2199 +Block 0016 [ 60]: e66ec8f0873f231b +Block 0016 [ 61]: ca9905c770bfe992 +Block 0016 [ 62]: f63c14054d5124e9 +Block 0016 [ 63]: d58d91fd3ee2b1a1 +Block 0016 [ 64]: 6ff32629231dc72b +Block 0016 [ 65]: 255d68cb56d3fa47 +Block 0016 [ 66]: 6b0af8028d7ca3a3 +Block 0016 [ 67]: 736d0fe6f9f80d52 +Block 0016 [ 68]: 90d1bde757cd5e96 +Block 0016 [ 69]: 07db8b6e1b4d5c34 +Block 0016 [ 70]: 791b2ff7ef295bd7 +Block 0016 [ 71]: fae425b3e1da0fd8 +Block 0016 [ 72]: 9f19178f83fe4783 +Block 0016 [ 73]: 1167f6d05e9820f4 +Block 0016 [ 74]: 7df7b36d7debf250 +Block 0016 [ 75]: 82113bee719dd1b5 +Block 0016 [ 76]: 5e798b4976c90140 +Block 0016 [ 77]: 3290bcc2692f2fc9 +Block 0016 [ 78]: 79ca6777cbe0ae0a +Block 0016 [ 79]: 32a54689489dc4ea +Block 0016 [ 80]: ea95bbfbeec60577 +Block 0016 [ 81]: ef12d7710711faae +Block 0016 [ 82]: 7866976349319235 +Block 0016 [ 83]: b321f8967d8fe701 +Block 0016 [ 84]: 0edcf290c5c241b3 +Block 0016 [ 85]: 92cfa62cadaef334 +Block 0016 [ 86]: c0c4c0077068d155 +Block 0016 [ 87]: ee895ccf8a30ce54 +Block 0016 [ 88]: f71204e73361a729 +Block 0016 [ 89]: 157afabb278e2f75 +Block 0016 [ 90]: f44173218e7734b5 +Block 0016 [ 91]: 8ce162e3111fe98d +Block 0016 [ 92]: 3f5f5a4acbc10d7e +Block 0016 [ 93]: 8fec68852d8995ab +Block 0016 [ 94]: ff2eed0c3d136a66 +Block 0016 [ 95]: 431218a26b23c2cf +Block 0016 [ 96]: 01264b38f47d5244 +Block 0016 [ 97]: 92bc9bd098e8c02a +Block 0016 [ 98]: bb4d45a1401c21f3 +Block 0016 [ 99]: c98791ab390af0a3 +Block 0016 [100]: 8fe6c5109d119811 +Block 0016 [101]: c00cf15abf0089cb +Block 0016 [102]: 57038fc4a333e7b5 +Block 0016 [103]: 82b257d90a52da30 +Block 0016 [104]: b9cc96cce73c1c99 +Block 0016 [105]: dacefe330d03e9e2 +Block 0016 [106]: e811034d6fe46bb0 +Block 0016 [107]: 96cb3e04aa68af22 +Block 0016 [108]: d6c949273c0f6012 +Block 0016 [109]: edb20985c7cc041b +Block 0016 [110]: 8569c84b201e2722 +Block 0016 [111]: 37b8fbe2e91d4cce +Block 0016 [112]: 4f25db3dad602ad2 +Block 0016 [113]: ad25504f1f0029f8 +Block 0016 [114]: 55d05138e5fc67ea +Block 0016 [115]: 8abba493f0b14307 +Block 0016 [116]: dbda5a77b570203c +Block 0016 [117]: 6c0e73d8df2a5cbf +Block 0016 [118]: ab1675a4c073aa1b +Block 0016 [119]: c28837a4d5785148 +Block 0016 [120]: 6be217b67e87d0cd +Block 0016 [121]: 96b6f0aada351d55 +Block 0016 [122]: d7b08772796b0ca3 +Block 0016 [123]: b0b5beb384738224 +Block 0016 [124]: 2766dfdc8eebb835 +Block 0016 [125]: 6fbe781c87b91676 +Block 0016 [126]: ef9dae4fda31bf35 +Block 0016 [127]: 41ce4b9bfdcd494c +Block 0017 [ 0]: c255f12517b5f528 +Block 0017 [ 1]: 1a7c91d6a62de6c6 +Block 0017 [ 2]: 6042723b63c8b725 +Block 0017 [ 3]: edc1e525aace3c4d +Block 0017 [ 4]: 9083bb02e70719bf +Block 0017 [ 5]: dff2e711c263aad0 +Block 0017 [ 6]: 643e8a1676401ac9 +Block 0017 [ 7]: 67ee406626e2af5b +Block 0017 [ 8]: 2ca94c000c31762e +Block 0017 [ 9]: e3975e35e2eb5398 +Block 0017 [ 10]: 2088403155c03d95 +Block 0017 [ 11]: 1146ad509ae7d17e +Block 0017 [ 12]: ebf6b18eb6274f96 +Block 0017 [ 13]: 74c2258314569745 +Block 0017 [ 14]: d1a25a287f9acbc0 +Block 0017 [ 15]: 306846f42d1db68f +Block 0017 [ 16]: 4d07dc025ac6f493 +Block 0017 [ 17]: d014df675b0095b9 +Block 0017 [ 18]: 0cac62bf06a23332 +Block 0017 [ 19]: 6c579b8f790fc721 +Block 0017 [ 20]: 5aff18b8d7750ee6 +Block 0017 [ 21]: 5c41322f23c3d21b +Block 0017 [ 22]: cd64bb030c6d4c14 +Block 0017 [ 23]: d6abf4f11955fba4 +Block 0017 [ 24]: f08e1d8bb5aa745e +Block 0017 [ 25]: 51f0dd60784369cf +Block 0017 [ 26]: d3eea3880a74e837 +Block 0017 [ 27]: 027fb4558c227054 +Block 0017 [ 28]: 69705de9eb976c9e +Block 0017 [ 29]: 029ed81f3b8083fe +Block 0017 [ 30]: 6174a0327bbb3513 +Block 0017 [ 31]: f0865510be03373f +Block 0017 [ 32]: c06d8ae72cb28b64 +Block 0017 [ 33]: 619282b2915316e8 +Block 0017 [ 34]: 9544171bca5aba07 +Block 0017 [ 35]: 2bb07513d70af873 +Block 0017 [ 36]: 4a0649f9bcd697c1 +Block 0017 [ 37]: 569952b056a02d6a +Block 0017 [ 38]: ecc1a448e97ec334 +Block 0017 [ 39]: 3a3f886128900cb6 +Block 0017 [ 40]: 59ab40a31e998543 +Block 0017 [ 41]: 464c956704a1522f +Block 0017 [ 42]: 0a88e34421502b80 +Block 0017 [ 43]: 11f29238c24ca7ae +Block 0017 [ 44]: 4c4ed3acdc97d6c7 +Block 0017 [ 45]: b3dd9cbf8e290895 +Block 0017 [ 46]: 58597d61f7166115 +Block 0017 [ 47]: 0a3668475c207ac0 +Block 0017 [ 48]: 16bf61e088c6a552 +Block 0017 [ 49]: fb03ea187661dbbb +Block 0017 [ 50]: 936a42f8220b9daf +Block 0017 [ 51]: 8e534cb1de16ae4a +Block 0017 [ 52]: 10ce6cb9da19db43 +Block 0017 [ 53]: 440a033c0cbcfb97 +Block 0017 [ 54]: 8e1d18c6fe8879b2 +Block 0017 [ 55]: 9f8c3b96301f169d +Block 0017 [ 56]: 7aad3cbcacc015db +Block 0017 [ 57]: 7129d8ac7b3ac45b +Block 0017 [ 58]: 6459133e511c248d +Block 0017 [ 59]: afcaf25b44ac2cc0 +Block 0017 [ 60]: 5e50b5ab3bf43e66 +Block 0017 [ 61]: 6ead49151f1d1b6f +Block 0017 [ 62]: 84105ac703c1d668 +Block 0017 [ 63]: fe6ea623494ad5df +Block 0017 [ 64]: c0f2820a0784bcea +Block 0017 [ 65]: 6192b3775d188c4e +Block 0017 [ 66]: b80f2e5d98cb4314 +Block 0017 [ 67]: 62e6d5758eef3792 +Block 0017 [ 68]: 51e207f92257bdf8 +Block 0017 [ 69]: 871b10b5dcbd15fb +Block 0017 [ 70]: c293d554a47db14a +Block 0017 [ 71]: b01ccdc84de5763a +Block 0017 [ 72]: 5b7beabd11951254 +Block 0017 [ 73]: 3059926a0f099e08 +Block 0017 [ 74]: 9caf0ff4887cc6c1 +Block 0017 [ 75]: 3bc6b264d764258e +Block 0017 [ 76]: 790512ed0dd294c9 +Block 0017 [ 77]: 72ef920edb63ec2c +Block 0017 [ 78]: 394da25fd4f9e123 +Block 0017 [ 79]: aa54ec6877648eb7 +Block 0017 [ 80]: 44e1b077b8a7565b +Block 0017 [ 81]: 45857d0b5ad9479a +Block 0017 [ 82]: f062f65b5d503323 +Block 0017 [ 83]: a168acb912f125be +Block 0017 [ 84]: 15630c565fab9475 +Block 0017 [ 85]: 11455ef696ae101e +Block 0017 [ 86]: 86763895b6fe2b49 +Block 0017 [ 87]: 654cead6b7d65bba +Block 0017 [ 88]: 7632b64be27554b3 +Block 0017 [ 89]: ac562a4331bdf6b2 +Block 0017 [ 90]: 70438f6240517dcb +Block 0017 [ 91]: e5b1bbdd81883384 +Block 0017 [ 92]: e5406e221cfcc990 +Block 0017 [ 93]: 694c710d4750bc8d +Block 0017 [ 94]: dd1729bf7e0b12d3 +Block 0017 [ 95]: 55886f912b344cd3 +Block 0017 [ 96]: c902a53f97ba19a0 +Block 0017 [ 97]: b66c74cd9e7a20c1 +Block 0017 [ 98]: 2308e5b036079da4 +Block 0017 [ 99]: cdc526b983a98cfc +Block 0017 [100]: 9868dc35af76d88e +Block 0017 [101]: 1166ed598c534c7e +Block 0017 [102]: 66ed886b20c6ae61 +Block 0017 [103]: 804b12b774cb411d +Block 0017 [104]: a8e1de357f7444b5 +Block 0017 [105]: 7375b1c693cb1e59 +Block 0017 [106]: fdea379b45e1d482 +Block 0017 [107]: a7ae259328e505e1 +Block 0017 [108]: 4a498055e9c7a4e5 +Block 0017 [109]: fdb7762264b16d42 +Block 0017 [110]: b0afc809e1b4d93e +Block 0017 [111]: 4143e78d76c21ae8 +Block 0017 [112]: ede783054972535d +Block 0017 [113]: a30b50251b9a735c +Block 0017 [114]: bfdc3808fef4acd5 +Block 0017 [115]: af990dac9a2314f7 +Block 0017 [116]: 44e37b021779c6d1 +Block 0017 [117]: d846b03cfc7637b1 +Block 0017 [118]: a7c373274faff42e +Block 0017 [119]: bc9c3a5ab89c8aaa +Block 0017 [120]: 3b5a5fa7262355f3 +Block 0017 [121]: 1bc2d9f69829a86a +Block 0017 [122]: 3546ed470b5a8723 +Block 0017 [123]: 97f881b5aff970d3 +Block 0017 [124]: 1ac3821269c2ee8f +Block 0017 [125]: 1d24698d02c09cca +Block 0017 [126]: e968c1d7e6f7f983 +Block 0017 [127]: 615ae91ba244796e +Block 0018 [ 0]: c56353865706e01e +Block 0018 [ 1]: 2008deada2479371 +Block 0018 [ 2]: 6bf9640afa0be017 +Block 0018 [ 3]: cbff064315b5c969 +Block 0018 [ 4]: 73c6647d9e81768f +Block 0018 [ 5]: 54c35767415dcc0f +Block 0018 [ 6]: 85789ed843f63faa +Block 0018 [ 7]: a29e6d2bad36be72 +Block 0018 [ 8]: b301ef96181f4af9 +Block 0018 [ 9]: 623461467a1d50b8 +Block 0018 [ 10]: 779c081d5dd2a8d8 +Block 0018 [ 11]: 97d9bfcc4d7c1bf0 +Block 0018 [ 12]: a1d72012d47fa27c +Block 0018 [ 13]: 0d3641842d3e8f4e +Block 0018 [ 14]: 7b0c3ed769c28a37 +Block 0018 [ 15]: a16e60ca97b4983f +Block 0018 [ 16]: 2bcb4545dfdfa02f +Block 0018 [ 17]: 2852a84faf0688da +Block 0018 [ 18]: e4cf9192f6f7df0f +Block 0018 [ 19]: d79e3702087b824d +Block 0018 [ 20]: a3b87e0702914795 +Block 0018 [ 21]: e2f14145b5897d88 +Block 0018 [ 22]: 9fbb5bbc9089bc9b +Block 0018 [ 23]: d1a2d108b965ee75 +Block 0018 [ 24]: d3965baad215bdae +Block 0018 [ 25]: 5146559ceb1203f7 +Block 0018 [ 26]: 438229a438f64d84 +Block 0018 [ 27]: d52ea8df05362ef2 +Block 0018 [ 28]: f65849b93cac0fbc +Block 0018 [ 29]: 91d10136de976abc +Block 0018 [ 30]: a6e405c4cc904a3b +Block 0018 [ 31]: 680b6f21abd89675 +Block 0018 [ 32]: a71ce0ee26d18c2e +Block 0018 [ 33]: ce26ebecb85e8737 +Block 0018 [ 34]: 142f9a78e5c1538b +Block 0018 [ 35]: d05611f217f38322 +Block 0018 [ 36]: 831121ec0775df8d +Block 0018 [ 37]: fde91d847c51ecdd +Block 0018 [ 38]: 3ad5f8d0ccb56e6f +Block 0018 [ 39]: 9fcd5e80613b6c23 +Block 0018 [ 40]: cfc5db7486fd0e95 +Block 0018 [ 41]: e5a1867214869654 +Block 0018 [ 42]: acb382ffbe5139e6 +Block 0018 [ 43]: 1ed3941d890bb088 +Block 0018 [ 44]: a4145acf9ec95a86 +Block 0018 [ 45]: 78da7311f5416211 +Block 0018 [ 46]: 939b875265496872 +Block 0018 [ 47]: e1bb9c5c2220f3ff +Block 0018 [ 48]: 1c24f60c4ce3bae3 +Block 0018 [ 49]: 414f56e67af2736c +Block 0018 [ 50]: f1a5fd7110bda591 +Block 0018 [ 51]: ebd71b667376a60c +Block 0018 [ 52]: e6cd6e0aa97da042 +Block 0018 [ 53]: 653f9b43d66fd80e +Block 0018 [ 54]: 52db371819ad4bbe +Block 0018 [ 55]: 20b98ebd399caa7e +Block 0018 [ 56]: c3cba3ea8af37c61 +Block 0018 [ 57]: 20340256ad3a6278 +Block 0018 [ 58]: e9bba7cc05e901e8 +Block 0018 [ 59]: ef99a3e5e269af3f +Block 0018 [ 60]: 4ec9e41d99c9c61b +Block 0018 [ 61]: e737c793049f51fd +Block 0018 [ 62]: 735095de5b23f4af +Block 0018 [ 63]: 68702e4e0d7a42c4 +Block 0018 [ 64]: e74de4a633120e8b +Block 0018 [ 65]: 6dae24a779a30904 +Block 0018 [ 66]: c6a469551c191227 +Block 0018 [ 67]: b7967b46207c2c5c +Block 0018 [ 68]: 71379f1e1b5162b0 +Block 0018 [ 69]: 5ab11e0f2cc5802a +Block 0018 [ 70]: 55643f358e6e9381 +Block 0018 [ 71]: afb36c68f8206119 +Block 0018 [ 72]: 7d179088c52f6798 +Block 0018 [ 73]: 551634a47e4951ad +Block 0018 [ 74]: 752eda55f86b960f +Block 0018 [ 75]: a73594a6d81887f9 +Block 0018 [ 76]: 246794e4638b41e6 +Block 0018 [ 77]: 409b195249a51f5a +Block 0018 [ 78]: f7bd3026e193d18c +Block 0018 [ 79]: 4be5161c5bdd6e8b +Block 0018 [ 80]: de96cd3c413a8be9 +Block 0018 [ 81]: aba764ceb1adb102 +Block 0018 [ 82]: b7842636bd5aa117 +Block 0018 [ 83]: a9c14fdc42872e40 +Block 0018 [ 84]: a15963f20588b09c +Block 0018 [ 85]: 368cecfa2963a40d +Block 0018 [ 86]: 053d9f8602aa5b63 +Block 0018 [ 87]: 760fba8205ffcb02 +Block 0018 [ 88]: 38a771fa1838dc59 +Block 0018 [ 89]: c99bfa719cb66fe5 +Block 0018 [ 90]: b073ace471a2021e +Block 0018 [ 91]: fd7e19c27d2f7eca +Block 0018 [ 92]: 38fc7cb22e67dbf3 +Block 0018 [ 93]: 9a03652a320f0213 +Block 0018 [ 94]: f1cc4b1493b3703f +Block 0018 [ 95]: 1b3306a2f3865325 +Block 0018 [ 96]: 2595f7949a755f71 +Block 0018 [ 97]: 78e9fa382d0927d3 +Block 0018 [ 98]: 8b85e76f7f397022 +Block 0018 [ 99]: a19f6dd3b8dca52d +Block 0018 [100]: 00e82e5576b941e6 +Block 0018 [101]: a7fa7ae6faddf0d9 +Block 0018 [102]: d99ff748568de1f9 +Block 0018 [103]: 4e2675753ff9d242 +Block 0018 [104]: d0cd9788bfee8164 +Block 0018 [105]: f2da4d54b004e796 +Block 0018 [106]: 5b1a0f55a7d95023 +Block 0018 [107]: e4ef7b231962072e +Block 0018 [108]: 729cf2df66d37c30 +Block 0018 [109]: 40c7b786a7aed4b0 +Block 0018 [110]: 3ac08ac29d39223d +Block 0018 [111]: 203dc268677ed0e9 +Block 0018 [112]: 52c84d8337fd4d66 +Block 0018 [113]: 139e5667061027e1 +Block 0018 [114]: 6c078c85ee42c4aa +Block 0018 [115]: 63833db031595429 +Block 0018 [116]: d447ec89081e5689 +Block 0018 [117]: 840de94326fb0d5c +Block 0018 [118]: 410e13a5634eae20 +Block 0018 [119]: d7b756d4a7b1697f +Block 0018 [120]: 1050513a1e7b7326 +Block 0018 [121]: 08a14292e030a2a3 +Block 0018 [122]: 30d6edcc44ef12f2 +Block 0018 [123]: 77d8788d3cf22d4b +Block 0018 [124]: 9066b21a6c79f00e +Block 0018 [125]: c3eab9a459f9fcb8 +Block 0018 [126]: 3bdd440ce2e5e1f4 +Block 0018 [127]: 8f973dff57dbd378 +Block 0019 [ 0]: 01fb129cc5b77b4f +Block 0019 [ 1]: d97f57425162ea3e +Block 0019 [ 2]: e8276a92492039e6 +Block 0019 [ 3]: 3608e78e794a18a4 +Block 0019 [ 4]: 4b11369193064da4 +Block 0019 [ 5]: b0de35a83d3f72e4 +Block 0019 [ 6]: d2a6b44f3df673a8 +Block 0019 [ 7]: 2ac37c9b9bd04ab3 +Block 0019 [ 8]: 488c7cd49282a0a0 +Block 0019 [ 9]: 8c380c95963e6b4f +Block 0019 [ 10]: 81d5c1c378d59641 +Block 0019 [ 11]: 2d857e93286b67ae +Block 0019 [ 12]: 6a58c08de951b4d0 +Block 0019 [ 13]: 6ab7d4bee5b738d3 +Block 0019 [ 14]: 88bf6dc38b506d3b +Block 0019 [ 15]: 009b889d679b8497 +Block 0019 [ 16]: 59b1f1f74efb2322 +Block 0019 [ 17]: 52ceaeb9154ca50c +Block 0019 [ 18]: 28c0cd203b6b6fc9 +Block 0019 [ 19]: aad7e207dff3cec6 +Block 0019 [ 20]: 9ffd1e22884b708b +Block 0019 [ 21]: 06e86279cd514c88 +Block 0019 [ 22]: cb899f826746fe5d +Block 0019 [ 23]: 10b5ecf199c8d34d +Block 0019 [ 24]: faae19be3f1a73b1 +Block 0019 [ 25]: c05fa929156bb2b8 +Block 0019 [ 26]: 966ee6906bcc9ca0 +Block 0019 [ 27]: 910f75707b22bbeb +Block 0019 [ 28]: 05bea73cdcad1abe +Block 0019 [ 29]: 2a217ca21b87f4ea +Block 0019 [ 30]: 9803db62cd649fdb +Block 0019 [ 31]: e41f40690f0acedb +Block 0019 [ 32]: 2704ac203dbf666a +Block 0019 [ 33]: de3867742cda737b +Block 0019 [ 34]: 5e891ddbc0ebf80f +Block 0019 [ 35]: a26084633cbc25c6 +Block 0019 [ 36]: e324a914bb6ee989 +Block 0019 [ 37]: 12af57e4ebd54cfc +Block 0019 [ 38]: 7326a4ef7bb3ce72 +Block 0019 [ 39]: 96ebd2aacd9ea28a +Block 0019 [ 40]: 177b393db4a26bd8 +Block 0019 [ 41]: 1885addd7e6227f2 +Block 0019 [ 42]: 707cc6e9254dd0e5 +Block 0019 [ 43]: fbafea1c9cac4810 +Block 0019 [ 44]: f650d8ca36a2cc92 +Block 0019 [ 45]: df88d3699c7fd4ff +Block 0019 [ 46]: d01a174fa16b4df5 +Block 0019 [ 47]: e8c9e9b1426c2e01 +Block 0019 [ 48]: 13ca5016746e7cc2 +Block 0019 [ 49]: fa7bb4c75626d3b2 +Block 0019 [ 50]: 0f844dd13a6eedf9 +Block 0019 [ 51]: 2bdf7095dddb0eca +Block 0019 [ 52]: 70020701e7728c78 +Block 0019 [ 53]: 1b7cc5becedf1a6e +Block 0019 [ 54]: 4402873b468a684c +Block 0019 [ 55]: 9c7cbbb1df70289c +Block 0019 [ 56]: bd1d0dd77aa7b618 +Block 0019 [ 57]: 750c4d82f4c0978e +Block 0019 [ 58]: dbdc7edc1833b96b +Block 0019 [ 59]: bb7dba594b1c100f +Block 0019 [ 60]: ece11ceaa82d9904 +Block 0019 [ 61]: 7b808930d82a9020 +Block 0019 [ 62]: b06d85c1d2424bdd +Block 0019 [ 63]: 64ffd652a760ed2c +Block 0019 [ 64]: 4562d6f8e3b5dccb +Block 0019 [ 65]: 87e6d56d65c283c6 +Block 0019 [ 66]: 9fe94fc027c21a00 +Block 0019 [ 67]: 8dc400478b9f1163 +Block 0019 [ 68]: 029c14bce5524f9e +Block 0019 [ 69]: 423deec939785c44 +Block 0019 [ 70]: a969d7c12fea9a28 +Block 0019 [ 71]: cec54cf9731902f2 +Block 0019 [ 72]: 6cac7755e0231ce0 +Block 0019 [ 73]: 3ed2da7f7fdfa17c +Block 0019 [ 74]: 6469eff8bafbf4c0 +Block 0019 [ 75]: 5619e6ce49fea452 +Block 0019 [ 76]: 5ff711a1d157e9c6 +Block 0019 [ 77]: bbbb1e51b7c0fa8d +Block 0019 [ 78]: ff6020f896d4aa0a +Block 0019 [ 79]: 7793af1f4cb28be8 +Block 0019 [ 80]: d4119423ff81e99a +Block 0019 [ 81]: 87071a0fe6f1fdb2 +Block 0019 [ 82]: fe52ad7fc16253e8 +Block 0019 [ 83]: 7f5f03545de2fefc +Block 0019 [ 84]: 7b38fc2bb6260261 +Block 0019 [ 85]: da971613e240efe7 +Block 0019 [ 86]: 7a86717ff3583bc9 +Block 0019 [ 87]: 41e9e68bbc8d3459 +Block 0019 [ 88]: 352101524d076bdf +Block 0019 [ 89]: 56bc810db202a661 +Block 0019 [ 90]: 724895de53780184 +Block 0019 [ 91]: 472995ae2902dc14 +Block 0019 [ 92]: e26c34719dc75f33 +Block 0019 [ 93]: 284575a822951dee +Block 0019 [ 94]: 3c34de13fbf1fd82 +Block 0019 [ 95]: b7dd994c13edd4d0 +Block 0019 [ 96]: 8811e94ca8eabca9 +Block 0019 [ 97]: 02ea332997305ef9 +Block 0019 [ 98]: ade80b60a9a5e79e +Block 0019 [ 99]: 66077ba1b5565540 +Block 0019 [100]: 7388da600272d9d3 +Block 0019 [101]: def87e32345358d6 +Block 0019 [102]: e71436c27aa3f5e4 +Block 0019 [103]: a6c69a8fbb9110c0 +Block 0019 [104]: 48000a8ca2db151d +Block 0019 [105]: b2f16745a08b53c3 +Block 0019 [106]: a9bd83427a1fb1b2 +Block 0019 [107]: 3b5eaf5351dad3d7 +Block 0019 [108]: f6b94b7083aefcc2 +Block 0019 [109]: b460241c7ab61f9b +Block 0019 [110]: c239335eb5ed5785 +Block 0019 [111]: b73d576203875b21 +Block 0019 [112]: 0513d7728b6dabaa +Block 0019 [113]: 1be1815371f2da1a +Block 0019 [114]: 80af69b2bb1f5078 +Block 0019 [115]: 4ca38ab5b8309e95 +Block 0019 [116]: 330b528faad28a90 +Block 0019 [117]: 71ad5e378ee67af2 +Block 0019 [118]: 0c600c1d3b739681 +Block 0019 [119]: cec06a6b8cec5726 +Block 0019 [120]: 9f24740e13ae7b5e +Block 0019 [121]: bad1bf8dd52977b4 +Block 0019 [122]: 6a6858419908532f +Block 0019 [123]: d81b57f836be3478 +Block 0019 [124]: 20f707578f0627bb +Block 0019 [125]: eac9fa947830264d +Block 0019 [126]: d3bda8399e5f7b2f +Block 0019 [127]: a0c476401ade3caa +Block 0020 [ 0]: 2904d477754f1182 +Block 0020 [ 1]: c7817f8c904876aa +Block 0020 [ 2]: ef630ae6c82fdd4b +Block 0020 [ 3]: 2b90f2f26913e67e +Block 0020 [ 4]: 4a00e183ac3b02f2 +Block 0020 [ 5]: d36d5d6dd25c2444 +Block 0020 [ 6]: 2f6ff1b1a0d64a92 +Block 0020 [ 7]: fbaa201fda84ce01 +Block 0020 [ 8]: 4b29cc7f03ce8132 +Block 0020 [ 9]: baf31290c098e42d +Block 0020 [ 10]: fe21fd15da24aadf +Block 0020 [ 11]: b46774f27b1b06a9 +Block 0020 [ 12]: 7fd84d48a8f2dc8a +Block 0020 [ 13]: 42a97fe50cdce3cb +Block 0020 [ 14]: c597b37c0fbbdf6d +Block 0020 [ 15]: cefba6997f40e239 +Block 0020 [ 16]: ba63b0a3b6a92f33 +Block 0020 [ 17]: 3d2c8dc2af6de650 +Block 0020 [ 18]: 0416456efe02d663 +Block 0020 [ 19]: 8bb54ac882e37ad3 +Block 0020 [ 20]: 90873df0d3d9cdf2 +Block 0020 [ 21]: 27c896216f937720 +Block 0020 [ 22]: ae591b750081df20 +Block 0020 [ 23]: a1d13beb52615120 +Block 0020 [ 24]: 58242fd330b617fe +Block 0020 [ 25]: cea097568f1d910c +Block 0020 [ 26]: 06d3145ceb011b4c +Block 0020 [ 27]: c0907ede1d338bed +Block 0020 [ 28]: 5d647e9063e3a000 +Block 0020 [ 29]: fb2bc9ff8eb0da2b +Block 0020 [ 30]: cafc25218c1854f4 +Block 0020 [ 31]: 9494568ebe7b081f +Block 0020 [ 32]: 2fce8d55463d09b0 +Block 0020 [ 33]: 8bdf4e97534ee12c +Block 0020 [ 34]: 0f07aa1a0fcc4e9f +Block 0020 [ 35]: 084dc457956a6a0e +Block 0020 [ 36]: 232705d7f0cab526 +Block 0020 [ 37]: d448fb450c080da5 +Block 0020 [ 38]: 48b7912f7fe83b1e +Block 0020 [ 39]: 6489d462f6978400 +Block 0020 [ 40]: fad910fea0c872f7 +Block 0020 [ 41]: a2bc6a2472d0de22 +Block 0020 [ 42]: 1da8c7cc8c2a0ead +Block 0020 [ 43]: bda44d0c59102810 +Block 0020 [ 44]: bed9ec721abf77bd +Block 0020 [ 45]: 5eb04509a4efa5fe +Block 0020 [ 46]: 147abfb14b55ff4d +Block 0020 [ 47]: 464db5cb2ab081e4 +Block 0020 [ 48]: 347a42f1646122f7 +Block 0020 [ 49]: 6c60a9d4d4809c39 +Block 0020 [ 50]: 0faa4393af952836 +Block 0020 [ 51]: e96e650e09870d44 +Block 0020 [ 52]: f2fbbf0ea59259f6 +Block 0020 [ 53]: f9d39cf808465afa +Block 0020 [ 54]: 4f41c740452f42d8 +Block 0020 [ 55]: ccd0940ced56b760 +Block 0020 [ 56]: cfc2c111d630bb14 +Block 0020 [ 57]: 00bb0851dabe0d80 +Block 0020 [ 58]: 0db0f1293ff7fe6b +Block 0020 [ 59]: 6021268000713de0 +Block 0020 [ 60]: 8dd8a5cd7c133a5a +Block 0020 [ 61]: e2603e8416c2dcfc +Block 0020 [ 62]: aeece433db673608 +Block 0020 [ 63]: 06411431eb04ce7b +Block 0020 [ 64]: b4cde9369fd8fedd +Block 0020 [ 65]: ead8fa31d96ead7d +Block 0020 [ 66]: f1498c4b282142fc +Block 0020 [ 67]: 9a6bf2a2920dcc07 +Block 0020 [ 68]: ef19df470784a666 +Block 0020 [ 69]: 7b19ef45403eb2aa +Block 0020 [ 70]: 7f87efe8bb1347b9 +Block 0020 [ 71]: 966b6c76676b7cb2 +Block 0020 [ 72]: ddfde750a3792957 +Block 0020 [ 73]: af435d6f749595f3 +Block 0020 [ 74]: 6b66903f330cb882 +Block 0020 [ 75]: 2f5d5734383ab9b2 +Block 0020 [ 76]: 16c84ef3653ec28d +Block 0020 [ 77]: ed267393d64b8ca9 +Block 0020 [ 78]: 37617f3ef3cc84a2 +Block 0020 [ 79]: 0392cc1ddb7741bd +Block 0020 [ 80]: 3e4cd2bd5d298731 +Block 0020 [ 81]: fad5bfe2a757e129 +Block 0020 [ 82]: 77200759f5610f93 +Block 0020 [ 83]: c4a3a70476b47735 +Block 0020 [ 84]: 67d711646fe329a3 +Block 0020 [ 85]: a297b952e77fb1a5 +Block 0020 [ 86]: 6667da2228cad03d +Block 0020 [ 87]: 61e9958285b43f16 +Block 0020 [ 88]: 9ed6b30497286eee +Block 0020 [ 89]: a1390ee861b2ab3a +Block 0020 [ 90]: 4ed79e20591d2fd6 +Block 0020 [ 91]: d48ed0be2c925b76 +Block 0020 [ 92]: c822e029ac094eb3 +Block 0020 [ 93]: ba2d8c8a4a67e483 +Block 0020 [ 94]: ccb998f8886aa893 +Block 0020 [ 95]: 280cc0b728b73fad +Block 0020 [ 96]: 277e12cadbf7798d +Block 0020 [ 97]: 7f57143f08c86d28 +Block 0020 [ 98]: 1ca6f11a4b1e25ff +Block 0020 [ 99]: b2db91c288ed40cd +Block 0020 [100]: f2c6434730b685b2 +Block 0020 [101]: 0f9a24dd1275f7b9 +Block 0020 [102]: 9bd27d8fcac17d47 +Block 0020 [103]: af38fcf1b8cb26da +Block 0020 [104]: 16a1f451c0e83e8b +Block 0020 [105]: a8c2fb8a2cd2a9af +Block 0020 [106]: 686efdc520934059 +Block 0020 [107]: 23cb0295bad5928e +Block 0020 [108]: 22e331a0e82ae918 +Block 0020 [109]: b246bdcdcb1b3dc8 +Block 0020 [110]: e706d48f7b4be38b +Block 0020 [111]: f6b8e33579072361 +Block 0020 [112]: d093370d12803e37 +Block 0020 [113]: f5ee3f6bbe485f0c +Block 0020 [114]: ff26642a6224ef14 +Block 0020 [115]: 8e060f75459b1591 +Block 0020 [116]: 92d11d49029def67 +Block 0020 [117]: 83686769d908640a +Block 0020 [118]: 982d2d9cc1892c1a +Block 0020 [119]: d182c0a05d04be1f +Block 0020 [120]: 085b197d2ae051ef +Block 0020 [121]: 6a9f23d9345da493 +Block 0020 [122]: f1de02d627b8e3ad +Block 0020 [123]: 274aabf0e728e979 +Block 0020 [124]: f296c23bfd3ddd40 +Block 0020 [125]: d2d634b5e3eb437f +Block 0020 [126]: 28a830d2b2a53ae3 +Block 0020 [127]: 0204d4ecf900d9fd +Block 0021 [ 0]: c12cc1a7630ab20c +Block 0021 [ 1]: 7d843f9d1bb57449 +Block 0021 [ 2]: 4ec1c00fb99466b5 +Block 0021 [ 3]: 76f7b0ad0b006ffe +Block 0021 [ 4]: f8c75bd78486fcd5 +Block 0021 [ 5]: 31b3c8708d155fe3 +Block 0021 [ 6]: 20c16f1e186a23e4 +Block 0021 [ 7]: a878075c67e6146e +Block 0021 [ 8]: c448dd6ff4914bf2 +Block 0021 [ 9]: f26dc8f66622ff67 +Block 0021 [ 10]: 42913728606ca3b4 +Block 0021 [ 11]: 08df8268d1ab2dea +Block 0021 [ 12]: 62d6424701b0d763 +Block 0021 [ 13]: 74c12644770da62b +Block 0021 [ 14]: 57fed96b12c80890 +Block 0021 [ 15]: 48d7d8d34fa4a950 +Block 0021 [ 16]: 6d572991f37958e3 +Block 0021 [ 17]: 63f5eafb7cd7efbc +Block 0021 [ 18]: 291c0fa67d95097d +Block 0021 [ 19]: d745f3585cae2a23 +Block 0021 [ 20]: 5b098367274119eb +Block 0021 [ 21]: eeb0b972239d67c3 +Block 0021 [ 22]: 6f8d5d30a3290b2d +Block 0021 [ 23]: 1cd930f80f508fed +Block 0021 [ 24]: 13252320a59f1add +Block 0021 [ 25]: c0bd534bb0880794 +Block 0021 [ 26]: 2ae82368d37658b1 +Block 0021 [ 27]: 0767e3162640b624 +Block 0021 [ 28]: 97a163f101921954 +Block 0021 [ 29]: 240e2369e5df1c54 +Block 0021 [ 30]: 796dc4405b1058ce +Block 0021 [ 31]: e32a4b28380c93fc +Block 0021 [ 32]: fe45b1a7bc753ed2 +Block 0021 [ 33]: 9e036ac9e7500849 +Block 0021 [ 34]: 4ccffa21cc335fb9 +Block 0021 [ 35]: a98d9e57a864f8be +Block 0021 [ 36]: c821969719d0b4ee +Block 0021 [ 37]: ea18b297cddc70f2 +Block 0021 [ 38]: f2c76c0b5f9f4096 +Block 0021 [ 39]: 54e08c67e0685193 +Block 0021 [ 40]: a75405fdc2ae7c40 +Block 0021 [ 41]: 8e7132965e9d271d +Block 0021 [ 42]: 998217fcf11ac2f2 +Block 0021 [ 43]: 3defa4721885a50e +Block 0021 [ 44]: 70699c4abc689fba +Block 0021 [ 45]: d746bef4daf4bcea +Block 0021 [ 46]: 600fdc290ee2027d +Block 0021 [ 47]: 67be6a9bd1e606bc +Block 0021 [ 48]: af28be9adba758ed +Block 0021 [ 49]: ad583090bd70d41c +Block 0021 [ 50]: 9f4b3857054b108d +Block 0021 [ 51]: 5310a2ea584dea4e +Block 0021 [ 52]: 1e6b0959fae98af3 +Block 0021 [ 53]: a13a136d93c676a6 +Block 0021 [ 54]: 137ecb0ff39d3409 +Block 0021 [ 55]: 7ca34f346ffe4eb0 +Block 0021 [ 56]: b31d811d53e9fd89 +Block 0021 [ 57]: 33e9ee66616eefa5 +Block 0021 [ 58]: 036a3a60147520c5 +Block 0021 [ 59]: e5e6b915e03d02e1 +Block 0021 [ 60]: f2b85ab4bee057cc +Block 0021 [ 61]: f020edf1cfa20c62 +Block 0021 [ 62]: 560116c2cd4749a5 +Block 0021 [ 63]: fee85e86bbcec42d +Block 0021 [ 64]: fd24d86bfbf48a4b +Block 0021 [ 65]: daa1ca90040ea1ec +Block 0021 [ 66]: c113e6c001bda230 +Block 0021 [ 67]: 06c9e40ff5c0514f +Block 0021 [ 68]: ad6e82c68f64cf0c +Block 0021 [ 69]: a92062c5f8ecf9a3 +Block 0021 [ 70]: f446d44ccd988cdb +Block 0021 [ 71]: 2665503730a90b3f +Block 0021 [ 72]: 0d5b91cb0378ac0a +Block 0021 [ 73]: 9e37095869eb5713 +Block 0021 [ 74]: 2321ce41dd8da5a3 +Block 0021 [ 75]: 64614f3ce5ebaf1e +Block 0021 [ 76]: 99b437d318b3fd65 +Block 0021 [ 77]: 8da370c7b0a99bd1 +Block 0021 [ 78]: b88f5071e7b1ff22 +Block 0021 [ 79]: e385367b7446a5d8 +Block 0021 [ 80]: 7fd00d9988d6298b +Block 0021 [ 81]: 6dacadf00512c4c7 +Block 0021 [ 82]: a79fafc4c62f47e0 +Block 0021 [ 83]: bec3c28b98e09481 +Block 0021 [ 84]: 59658b57a179c94d +Block 0021 [ 85]: 9b5655e529c865bb +Block 0021 [ 86]: 446468a9aef42973 +Block 0021 [ 87]: 8b17d0792b62b959 +Block 0021 [ 88]: 946928416f827f66 +Block 0021 [ 89]: bf1e4e1cf11e4d13 +Block 0021 [ 90]: ed26651a9cc1cf4c +Block 0021 [ 91]: 1999ecb0492dbf6d +Block 0021 [ 92]: 5ae6127f4aff6568 +Block 0021 [ 93]: d44ed717054f9942 +Block 0021 [ 94]: 5437b56726a956ed +Block 0021 [ 95]: 6f6befe7e5b92675 +Block 0021 [ 96]: 6417eb27b53301bb +Block 0021 [ 97]: 620f7d9b1e2c90b6 +Block 0021 [ 98]: ebb1aaf241321a4e +Block 0021 [ 99]: 5afdb7a0b59befa7 +Block 0021 [100]: fae040ea8eee04f4 +Block 0021 [101]: 88d12acc0b99fece +Block 0021 [102]: b5e1e7175ac7fc22 +Block 0021 [103]: 4c7bd92ede0a3303 +Block 0021 [104]: 8c9e433bd43d540d +Block 0021 [105]: b41d516eba7eb06f +Block 0021 [106]: 2d7c6d31687048be +Block 0021 [107]: f3ed5c6303fe8930 +Block 0021 [108]: 63adb43e1eb1c2b0 +Block 0021 [109]: 0fd88f6d8c134194 +Block 0021 [110]: 96e5248b15869af1 +Block 0021 [111]: 2b2214a414b91922 +Block 0021 [112]: ec49cf29cd39bcb0 +Block 0021 [113]: 30a080de12274f79 +Block 0021 [114]: fdda4ce0c746632f +Block 0021 [115]: 95e428f16be30440 +Block 0021 [116]: 517bd14be65778c5 +Block 0021 [117]: 8047066c240bf71f +Block 0021 [118]: 76e99bbe489edc17 +Block 0021 [119]: e38bbfc1500917cd +Block 0021 [120]: 47b495ea51ddde99 +Block 0021 [121]: a7f465121e6866d6 +Block 0021 [122]: bcad55441d717cf4 +Block 0021 [123]: c01b4ccf3af42871 +Block 0021 [124]: a2fac53753be25d4 +Block 0021 [125]: ecf463167e33c65f +Block 0021 [126]: b59ec66d36b26358 +Block 0021 [127]: 3c69b335560021a7 +Block 0022 [ 0]: ab16b3a56c5075d9 +Block 0022 [ 1]: bf6e87316986ed91 +Block 0022 [ 2]: 3706dc9baa34f072 +Block 0022 [ 3]: d000956d44f7d1a1 +Block 0022 [ 4]: b9042077b3ba870e +Block 0022 [ 5]: 23f4954484f46834 +Block 0022 [ 6]: 7f00ea023bd08390 +Block 0022 [ 7]: 6d36d08a66d30fc7 +Block 0022 [ 8]: 90b1d92efe744358 +Block 0022 [ 9]: 43148be233395484 +Block 0022 [ 10]: 529f606afdabaea5 +Block 0022 [ 11]: 0840d08dfdc8cf40 +Block 0022 [ 12]: d2d110baa6ed66df +Block 0022 [ 13]: d94d5feceb8b6693 +Block 0022 [ 14]: 9d5f3588931f8d56 +Block 0022 [ 15]: 5909bb597b2548db +Block 0022 [ 16]: 4ef8519c35d03e3b +Block 0022 [ 17]: 3c963b75c7aa5cfb +Block 0022 [ 18]: 262fb246be170e59 +Block 0022 [ 19]: d440145519b7ad26 +Block 0022 [ 20]: 73ab50c82577acdd +Block 0022 [ 21]: a898aeed8a2d8301 +Block 0022 [ 22]: 0f12e4d69e8ff588 +Block 0022 [ 23]: 42de1e1610bf5ac0 +Block 0022 [ 24]: c9d77bd96186c22b +Block 0022 [ 25]: 48224c45c85d1a7e +Block 0022 [ 26]: eb605118f55496a7 +Block 0022 [ 27]: eae4f2d623f09f0c +Block 0022 [ 28]: 1bc8533a22ade72e +Block 0022 [ 29]: c5d5d068055194ba +Block 0022 [ 30]: dc8091ca4b23c5c9 +Block 0022 [ 31]: 4f6ab36707a798d1 +Block 0022 [ 32]: f5661f644f082a87 +Block 0022 [ 33]: 89906ef40c28c45c +Block 0022 [ 34]: 8245084f1e623ca3 +Block 0022 [ 35]: eb80dabbf146dfd1 +Block 0022 [ 36]: 21597abb85a09601 +Block 0022 [ 37]: 911883ff4eaad8ce +Block 0022 [ 38]: 37a30fcfd4e7e78e +Block 0022 [ 39]: a0e80cdfa662c635 +Block 0022 [ 40]: 8eab544a96438380 +Block 0022 [ 41]: 82c38c4f95d1ae3f +Block 0022 [ 42]: 29fd6fd0a6903703 +Block 0022 [ 43]: b6a8e2cda01ed83e +Block 0022 [ 44]: f90b7e33a0165041 +Block 0022 [ 45]: 977f2a7ac3eaf97e +Block 0022 [ 46]: 1942327dddd81546 +Block 0022 [ 47]: 517c90126edcaaa0 +Block 0022 [ 48]: c5ffce11d9f5fd31 +Block 0022 [ 49]: e7bcbb02539969cf +Block 0022 [ 50]: a4657d205059500a +Block 0022 [ 51]: 61e75294e0c5a7dd +Block 0022 [ 52]: 4b2297b821bf9d6c +Block 0022 [ 53]: f5d35f75b3efe34f +Block 0022 [ 54]: 3069214b0c198625 +Block 0022 [ 55]: 58dc0964970a7436 +Block 0022 [ 56]: 5ab8e583fcf8cc8a +Block 0022 [ 57]: d3f90e125dc63769 +Block 0022 [ 58]: d99fdc3e92d27d41 +Block 0022 [ 59]: 59c8a73d0a38ef89 +Block 0022 [ 60]: 7cfee5d258168e40 +Block 0022 [ 61]: 7f9531f36c2b78d2 +Block 0022 [ 62]: 5fa407b6ae15296b +Block 0022 [ 63]: b52c77c541797d42 +Block 0022 [ 64]: 1ac5d4233901339e +Block 0022 [ 65]: b29e6f85131997a2 +Block 0022 [ 66]: 87147a9a6dc9db3c +Block 0022 [ 67]: 033f96b424f5af0d +Block 0022 [ 68]: ec33cf847ef40a18 +Block 0022 [ 69]: 0f8f314e8c3a0bec +Block 0022 [ 70]: d6c21ea4ba3358a0 +Block 0022 [ 71]: ac3d0f1c487d577b +Block 0022 [ 72]: 11937f11fc59a840 +Block 0022 [ 73]: 61674f505fd229ae +Block 0022 [ 74]: 5a00e6607ec78934 +Block 0022 [ 75]: e249c6cd3f887bff +Block 0022 [ 76]: 716deb4f18e87fba +Block 0022 [ 77]: 92dd5e6b87ae487d +Block 0022 [ 78]: d45ae78ffed12c55 +Block 0022 [ 79]: 2c5bfc277658f3a1 +Block 0022 [ 80]: db971b0168ea4745 +Block 0022 [ 81]: 46e39abd9f685214 +Block 0022 [ 82]: 93ee55707d51ac38 +Block 0022 [ 83]: 3764e134d7bc5e1e +Block 0022 [ 84]: c867ee52271ef46c +Block 0022 [ 85]: d41958c6c6cdd2fd +Block 0022 [ 86]: 21a4c738e6b32bbb +Block 0022 [ 87]: 9182f1362fbe103f +Block 0022 [ 88]: d4fc051a73c0ba4f +Block 0022 [ 89]: 4b3b78d41e673f1b +Block 0022 [ 90]: de8859d43a77db34 +Block 0022 [ 91]: 702f0530d93babe9 +Block 0022 [ 92]: b67f17c55e7f9629 +Block 0022 [ 93]: 04584cb783e39923 +Block 0022 [ 94]: fd138c6fabea3a81 +Block 0022 [ 95]: 43658bec8f80a41d +Block 0022 [ 96]: 0440da4de750eaab +Block 0022 [ 97]: 4b7702f3d6554710 +Block 0022 [ 98]: d68d5f3de84d37ca +Block 0022 [ 99]: 18ca44373c453767 +Block 0022 [100]: d1fdbbe79c392c87 +Block 0022 [101]: 9dae17d1f4740b9b +Block 0022 [102]: a9c52e3c1eb100ad +Block 0022 [103]: 8bd7475cfb22956c +Block 0022 [104]: 85eb6b76a6d2a8c8 +Block 0022 [105]: 198bec106136c9ce +Block 0022 [106]: 9b81158c4c3d0e51 +Block 0022 [107]: 2022774adeafe355 +Block 0022 [108]: 7a1b3f58e921bfd0 +Block 0022 [109]: 906523ea688ebb1b +Block 0022 [110]: 74472376d97f71b8 +Block 0022 [111]: e2a6b16fe40d2a75 +Block 0022 [112]: 9abc505f14c1dd63 +Block 0022 [113]: d0fa9c766f6d104c +Block 0022 [114]: adefe0e0ae4bb777 +Block 0022 [115]: a5d379758af224e6 +Block 0022 [116]: dc29361b4c8ebc7d +Block 0022 [117]: 5c091ed940780a84 +Block 0022 [118]: 7ffc0e4038e28779 +Block 0022 [119]: 80b312993291f81e +Block 0022 [120]: 39608712b2445c46 +Block 0022 [121]: bf879dc1b80ae860 +Block 0022 [122]: 514c6ab3ff330561 +Block 0022 [123]: 55370d7c118dd1fb +Block 0022 [124]: 846f03da6bfa17f1 +Block 0022 [125]: 87948df888a4cbf2 +Block 0022 [126]: 89ccbff86501eb61 +Block 0022 [127]: 6aa3800ea4c30a6d +Block 0023 [ 0]: 556721f6dc987249 +Block 0023 [ 1]: 99b4dfec9c302f7d +Block 0023 [ 2]: 1117e2bb2476093b +Block 0023 [ 3]: 1b2f958fa1e0291a +Block 0023 [ 4]: d2ec858fef0236e7 +Block 0023 [ 5]: c3b8b8774e30fa01 +Block 0023 [ 6]: fec88aa56118cd0b +Block 0023 [ 7]: 7482e9a6e06d2726 +Block 0023 [ 8]: 803534fe2cf0f98e +Block 0023 [ 9]: ff6d8c8018ede5a7 +Block 0023 [ 10]: 87d7eff1d657f2ac +Block 0023 [ 11]: 819c06f8a94ddad7 +Block 0023 [ 12]: 6341df572ace94c6 +Block 0023 [ 13]: 2f45f9db86cf0797 +Block 0023 [ 14]: 6555d7ef0a6fa787 +Block 0023 [ 15]: 9db255c7658fe518 +Block 0023 [ 16]: b34faa5c72edf4ad +Block 0023 [ 17]: ba7bd4028c089f1a +Block 0023 [ 18]: 09602adb7e3c7b36 +Block 0023 [ 19]: 1209106421591752 +Block 0023 [ 20]: 5819306a403cd8e4 +Block 0023 [ 21]: 53197970bb5fa1f9 +Block 0023 [ 22]: 16e8bbc10bec7ef8 +Block 0023 [ 23]: 6b01c4dd49a87999 +Block 0023 [ 24]: 7495246fdc5193b5 +Block 0023 [ 25]: b3a8f9152786463b +Block 0023 [ 26]: 23c964909608bb59 +Block 0023 [ 27]: d48cb6d946414714 +Block 0023 [ 28]: 0bf19bb18fbe8fd4 +Block 0023 [ 29]: 776e3968ded52066 +Block 0023 [ 30]: cb51fe52d0717809 +Block 0023 [ 31]: 51a4f168ef8c6df2 +Block 0023 [ 32]: 828e73597ba1ffb4 +Block 0023 [ 33]: 775664a0a94d9a38 +Block 0023 [ 34]: aa8d077ca94bd294 +Block 0023 [ 35]: 0f8d196531249306 +Block 0023 [ 36]: 18bdafa6230e7c58 +Block 0023 [ 37]: 828062267b0d6fd3 +Block 0023 [ 38]: a3bdf8db2fe6cf2f +Block 0023 [ 39]: b0733ce01f2b0704 +Block 0023 [ 40]: d1c49348c163ffd0 +Block 0023 [ 41]: 9ceaa71c0412483e +Block 0023 [ 42]: 270728a894443699 +Block 0023 [ 43]: 31e0b34e8a211d4b +Block 0023 [ 44]: 065f68d65aa2ce32 +Block 0023 [ 45]: b3a0f4c50ba17262 +Block 0023 [ 46]: 6e4a884360dc6018 +Block 0023 [ 47]: 0229bb9b7f74e2e3 +Block 0023 [ 48]: a0e2d3bb2aa6f992 +Block 0023 [ 49]: 51816f912c836575 +Block 0023 [ 50]: e0b825bbc0d3e078 +Block 0023 [ 51]: 4c479c9963e79cf4 +Block 0023 [ 52]: 73dca92a9169307e +Block 0023 [ 53]: b429a5f8c46bd932 +Block 0023 [ 54]: b0b7fb8ef64c1b04 +Block 0023 [ 55]: 8169f07c085d8b2a +Block 0023 [ 56]: 0e8394c61e8979cc +Block 0023 [ 57]: 09692e621ebe9fbe +Block 0023 [ 58]: 307da2a38a26abf7 +Block 0023 [ 59]: db57d2225640b395 +Block 0023 [ 60]: 764b4447978991f1 +Block 0023 [ 61]: 6ff6a890fce95daf +Block 0023 [ 62]: c3e624ade7d96d9c +Block 0023 [ 63]: 2b5053bfb7ef35c8 +Block 0023 [ 64]: 2e8a62d6bb119e7b +Block 0023 [ 65]: 8cac526cc4a7a645 +Block 0023 [ 66]: 8fbb0601586486ce +Block 0023 [ 67]: 8044ffb0401b4041 +Block 0023 [ 68]: 8798e3677b488295 +Block 0023 [ 69]: 7433a887af3dd05a +Block 0023 [ 70]: 3a7189e6fb1014a1 +Block 0023 [ 71]: 32d00c4bbcaac4a9 +Block 0023 [ 72]: a77359f3d6c159b6 +Block 0023 [ 73]: 74f343d44052937d +Block 0023 [ 74]: 0c66f82b096e4a8c +Block 0023 [ 75]: 986205cf0d8ddfd5 +Block 0023 [ 76]: 4505e8e3ff1955c7 +Block 0023 [ 77]: bdfdb8e10137d89c +Block 0023 [ 78]: 3cfab16a6e505749 +Block 0023 [ 79]: 0c9e89e21030cda5 +Block 0023 [ 80]: 9b39ebca2638fa57 +Block 0023 [ 81]: a39a852d538cc65a +Block 0023 [ 82]: 417ac20a52b358c5 +Block 0023 [ 83]: 57bb86093eb9779e +Block 0023 [ 84]: 6104a01c0efb313a +Block 0023 [ 85]: 9a76e197a2daaaa4 +Block 0023 [ 86]: 0ba50f40599759b0 +Block 0023 [ 87]: 82d2f09e12c993e1 +Block 0023 [ 88]: 8213a0d0c050aaf5 +Block 0023 [ 89]: 7850e59315f640ec +Block 0023 [ 90]: 742b954ff07ec512 +Block 0023 [ 91]: 1cc7b7a76ddb5908 +Block 0023 [ 92]: 90175fb8e3f50c78 +Block 0023 [ 93]: a9bb387ad0caedfb +Block 0023 [ 94]: 687bb45cc5c9cc4c +Block 0023 [ 95]: d452dfa463e6cb6a +Block 0023 [ 96]: 77f1cc9138028d48 +Block 0023 [ 97]: f8d09a3ea40682a7 +Block 0023 [ 98]: a5a831cab641262d +Block 0023 [ 99]: 131636b6651e56f4 +Block 0023 [100]: 540331e6bd311bc3 +Block 0023 [101]: 29392009473107a3 +Block 0023 [102]: 9171ce46a6d71344 +Block 0023 [103]: ece3a2c971e5d580 +Block 0023 [104]: 7a90cdaa7553b5a8 +Block 0023 [105]: ef302aa8ca894274 +Block 0023 [106]: 9f92c44cbc91bc72 +Block 0023 [107]: 0e85df7e88220c16 +Block 0023 [108]: b59f9d637a0f1de4 +Block 0023 [109]: 365dedbc87eb2698 +Block 0023 [110]: 14b1e9d4bd03ed33 +Block 0023 [111]: 6894880ded846900 +Block 0023 [112]: 4019b80ea900fce9 +Block 0023 [113]: bb9eaa2c25a5e283 +Block 0023 [114]: b02f512376bfd802 +Block 0023 [115]: f44a5e0fd7134db4 +Block 0023 [116]: 5385593b6cf69c33 +Block 0023 [117]: 651d8a75b4f5d8cd +Block 0023 [118]: d9fa29584a6b0b21 +Block 0023 [119]: b2c2fca9073c3882 +Block 0023 [120]: 810511ff5d9e8807 +Block 0023 [121]: f160852a94f55308 +Block 0023 [122]: 2f741d93d26befbc +Block 0023 [123]: 0504623ef78331ec +Block 0023 [124]: 73feb604a4e6f0f5 +Block 0023 [125]: 4ad832c77a9891bd +Block 0023 [126]: b5e45edc4e847c4b +Block 0023 [127]: 6ffd61b212eb8ea2 +Block 0024 [ 0]: d88284f50713c31b +Block 0024 [ 1]: 8c87762439effae4 +Block 0024 [ 2]: 627d88554d9c676c +Block 0024 [ 3]: 456a544d129f6a19 +Block 0024 [ 4]: 1bba14a4866d3eaa +Block 0024 [ 5]: 8b95d511ff8e5399 +Block 0024 [ 6]: 5d2f3d694b9f103a +Block 0024 [ 7]: c616b5caf714f117 +Block 0024 [ 8]: 78500c063a98f09a +Block 0024 [ 9]: f8d930b864f14db7 +Block 0024 [ 10]: 1fd61ead5acebd80 +Block 0024 [ 11]: b4528739e5183157 +Block 0024 [ 12]: 89e5791f65963437 +Block 0024 [ 13]: 68f5cc6a53562ec0 +Block 0024 [ 14]: 3871f32fdaa3b946 +Block 0024 [ 15]: 75344f511527fedf +Block 0024 [ 16]: 4fe8800adf2466be +Block 0024 [ 17]: 9ab4030c1a3aaddd +Block 0024 [ 18]: 8339ff862f1ab707 +Block 0024 [ 19]: 5c6597e27d49f75b +Block 0024 [ 20]: 1a14e616a338206c +Block 0024 [ 21]: 31eed02a0647075a +Block 0024 [ 22]: 8c7a00d30e7d31e9 +Block 0024 [ 23]: acd25fe6051b5363 +Block 0024 [ 24]: da738b6d3d6e875a +Block 0024 [ 25]: f24fca741d0f8de3 +Block 0024 [ 26]: 12ca39f6d6087516 +Block 0024 [ 27]: e40695661644eeda +Block 0024 [ 28]: 4c5b86c9fab6199c +Block 0024 [ 29]: 6c24d91cbd243752 +Block 0024 [ 30]: a6ba8fb90af10a20 +Block 0024 [ 31]: 298bbf7d91bd6df3 +Block 0024 [ 32]: cda34cf012e25d4b +Block 0024 [ 33]: aee2c946a2f594a0 +Block 0024 [ 34]: 8cb96f7da1a78ef2 +Block 0024 [ 35]: 0fc18547c433ba29 +Block 0024 [ 36]: 6f03257b4a4aa101 +Block 0024 [ 37]: 9f4a1bf963efe77f +Block 0024 [ 38]: 24eccb6c5c64d4a9 +Block 0024 [ 39]: 5d3c5a06a53c2cf7 +Block 0024 [ 40]: 01d604366f6dc1e0 +Block 0024 [ 41]: a8e0dba29a99108e +Block 0024 [ 42]: 1c47a9a5f396ab45 +Block 0024 [ 43]: d45cbbfbb03fd673 +Block 0024 [ 44]: ddc29f83a08238ba +Block 0024 [ 45]: efb52fda37fd5483 +Block 0024 [ 46]: 2252e2ce16b35dd2 +Block 0024 [ 47]: 037fc7a6c0ff0c5a +Block 0024 [ 48]: f202db23b64e1eb6 +Block 0024 [ 49]: 743410480c25aff3 +Block 0024 [ 50]: 640a479a6f306adf +Block 0024 [ 51]: 958e2253a8914ede +Block 0024 [ 52]: 8b1e51392300b250 +Block 0024 [ 53]: a699253416b612d4 +Block 0024 [ 54]: c4e9097a571bdb24 +Block 0024 [ 55]: f7f1162a4fbc75ee +Block 0024 [ 56]: 1b6dd1fe292d9c22 +Block 0024 [ 57]: 796d46d2f71d4e77 +Block 0024 [ 58]: 893ded32ffb7ac70 +Block 0024 [ 59]: bb6dab308f4cee79 +Block 0024 [ 60]: 8b18e8740f27d639 +Block 0024 [ 61]: f644b8c3df7db7e2 +Block 0024 [ 62]: 35c04f8f8824a45b +Block 0024 [ 63]: bcd9215d9a18a39d +Block 0024 [ 64]: e80b5dfa5dfe2d2c +Block 0024 [ 65]: 47ca09e8916c744a +Block 0024 [ 66]: 527d58c882db4fe4 +Block 0024 [ 67]: 384654cce68a5a48 +Block 0024 [ 68]: 1e917bd09d5fc395 +Block 0024 [ 69]: f2eeb59a136c23c5 +Block 0024 [ 70]: d0062fa155adcbd3 +Block 0024 [ 71]: 650d4fd65c081681 +Block 0024 [ 72]: 77535a18a15e4f39 +Block 0024 [ 73]: 2a081a72b7522a15 +Block 0024 [ 74]: 9c64ed7680bc0ab6 +Block 0024 [ 75]: dfd06369f31d6630 +Block 0024 [ 76]: f669d8a8c9f0eb39 +Block 0024 [ 77]: c296a9c2a9485dbb +Block 0024 [ 78]: 6214d2f5ba58a315 +Block 0024 [ 79]: 5b653348723c129d +Block 0024 [ 80]: 9c48f59c76fcf934 +Block 0024 [ 81]: fd7498527f17d3ab +Block 0024 [ 82]: 7ae20772d38bf8d4 +Block 0024 [ 83]: ef647a626247193c +Block 0024 [ 84]: 4d317391d8df4450 +Block 0024 [ 85]: 12558123e175f980 +Block 0024 [ 86]: fac8e511cba42c82 +Block 0024 [ 87]: 8069fb7578f5f0cb +Block 0024 [ 88]: 31858de29f739b86 +Block 0024 [ 89]: c1e68b8f0eef3ca6 +Block 0024 [ 90]: 95bb9e89125dca10 +Block 0024 [ 91]: c5d1abd5a40b7cae +Block 0024 [ 92]: 94f17725613a0eef +Block 0024 [ 93]: ad34e36ea76bb481 +Block 0024 [ 94]: d07439a3ef48bff7 +Block 0024 [ 95]: 0a0c062abfc544f3 +Block 0024 [ 96]: 24f99b247f7b7e5a +Block 0024 [ 97]: ed27a580eaaf4ee5 +Block 0024 [ 98]: ebc61a0a4c093f87 +Block 0024 [ 99]: d08946d03ff1542a +Block 0024 [100]: 0befcf9d5f571522 +Block 0024 [101]: b5be7e66b886472c +Block 0024 [102]: 0271a6c1f348073b +Block 0024 [103]: 7f24ce4f67784d15 +Block 0024 [104]: bf7b10d70723ba6e +Block 0024 [105]: f00edf5c303e9b06 +Block 0024 [106]: 7a7ef27f4872669f +Block 0024 [107]: fffd0af0f5e95a97 +Block 0024 [108]: 7dac32c65cebd8ad +Block 0024 [109]: 611bdbe7f7ac37b6 +Block 0024 [110]: db3b333b27fb4ced +Block 0024 [111]: bb3cefc08d708545 +Block 0024 [112]: 1a17b3c9ba7fdf10 +Block 0024 [113]: 288dd53e76b91f62 +Block 0024 [114]: d2795c6696a76238 +Block 0024 [115]: 3eaf16374449b54f +Block 0024 [116]: 7ec146ee77bd917d +Block 0024 [117]: a9e40f4aa4a25eb7 +Block 0024 [118]: b2afd186798bcdd5 +Block 0024 [119]: 94815c56ceb4e679 +Block 0024 [120]: b4bc677bddd6448e +Block 0024 [121]: 01cd724d3300bbd0 +Block 0024 [122]: 8343503e5e98eb96 +Block 0024 [123]: 6a7a4414b7ed645e +Block 0024 [124]: 672bac9c0ae51d50 +Block 0024 [125]: 640075a4cfd1f8dc +Block 0024 [126]: 136974d993c474b3 +Block 0024 [127]: 7ce21aafca4593ee +Block 0025 [ 0]: 9b02443a6f899e73 +Block 0025 [ 1]: c1ee68a9c94f0899 +Block 0025 [ 2]: a6eaf7a6b38f45dc +Block 0025 [ 3]: 66069bc282e196e8 +Block 0025 [ 4]: 6d15c727711caa68 +Block 0025 [ 5]: 1a1efa2d260f3cde +Block 0025 [ 6]: eff2a14ce540dca8 +Block 0025 [ 7]: 94b2877a291c2fa9 +Block 0025 [ 8]: 4d57f7b951ec9e6c +Block 0025 [ 9]: 38643647a66bad56 +Block 0025 [ 10]: f4949cf4a451d471 +Block 0025 [ 11]: 38f9d32110a50ed8 +Block 0025 [ 12]: 00892238ac194fef +Block 0025 [ 13]: 5cc481f19bd1b7b2 +Block 0025 [ 14]: 89eae5086a6fb7df +Block 0025 [ 15]: d339c86fe08eaaf6 +Block 0025 [ 16]: d3615f7f03f60511 +Block 0025 [ 17]: 5beafb3a682787a5 +Block 0025 [ 18]: 7e690364d56c6f35 +Block 0025 [ 19]: 715ba6f8d92cfde8 +Block 0025 [ 20]: da002adec3a9aec0 +Block 0025 [ 21]: f7fd26727e3c39de +Block 0025 [ 22]: 5ce5effbabeb778b +Block 0025 [ 23]: 82488be85fa89f69 +Block 0025 [ 24]: ebf34f3cf31e872f +Block 0025 [ 25]: 904e3442eb91077d +Block 0025 [ 26]: 4ccb7af848995148 +Block 0025 [ 27]: 6674e0d65423b763 +Block 0025 [ 28]: 441ff96ad8206f58 +Block 0025 [ 29]: 94666bf2dfc0b99b +Block 0025 [ 30]: ed05edb80461172e +Block 0025 [ 31]: 48a4835d15f5dd8d +Block 0025 [ 32]: b7ba7f265b645ae8 +Block 0025 [ 33]: c28982cf0cc46f5f +Block 0025 [ 34]: 0047564c7e3a987b +Block 0025 [ 35]: 49c42f1ca2a0a3ee +Block 0025 [ 36]: 5fd7a85954ea8759 +Block 0025 [ 37]: d3a2e6ddb90e1819 +Block 0025 [ 38]: ca044a91edca1181 +Block 0025 [ 39]: 7befe3a3efd19c8c +Block 0025 [ 40]: 12e2593aa586a908 +Block 0025 [ 41]: ca3204fd0293daa7 +Block 0025 [ 42]: 6fffdd8f81c7ec5b +Block 0025 [ 43]: a5a9e710a5c35441 +Block 0025 [ 44]: 8fc140c3dd6a23b9 +Block 0025 [ 45]: 4dc101b965e2bf8b +Block 0025 [ 46]: bfe30265551dfb70 +Block 0025 [ 47]: 4325a4ab2bffde44 +Block 0025 [ 48]: 0873c9bb55796104 +Block 0025 [ 49]: 3d855f2ccb7886cf +Block 0025 [ 50]: a892ad2f13aa23fd +Block 0025 [ 51]: 7ec7f45b1c3a13a3 +Block 0025 [ 52]: 7933b1cf28b7e587 +Block 0025 [ 53]: fb261404744b4403 +Block 0025 [ 54]: 1ce9fbf19e0b05ed +Block 0025 [ 55]: 081e058ac89cf91b +Block 0025 [ 56]: 0f4c61900902f20e +Block 0025 [ 57]: 6e4e47d0a76c7b2f +Block 0025 [ 58]: 31dfad465737d2d6 +Block 0025 [ 59]: c4e565cd4db9cf80 +Block 0025 [ 60]: 0fc21868de584fed +Block 0025 [ 61]: cf4bc3bdde019366 +Block 0025 [ 62]: d4b6def2b28c6197 +Block 0025 [ 63]: 1e091aa94e9efee1 +Block 0025 [ 64]: 920ae1dfc602caa9 +Block 0025 [ 65]: b9e32b85330f06cf +Block 0025 [ 66]: 622903a2ba1f7401 +Block 0025 [ 67]: 376fc0c285b6e1d6 +Block 0025 [ 68]: 58262b60f7222c02 +Block 0025 [ 69]: 48963a834c84e786 +Block 0025 [ 70]: cbf03b6c03b3f0b2 +Block 0025 [ 71]: bffe850121f01632 +Block 0025 [ 72]: 74a2031f32512b24 +Block 0025 [ 73]: 4adcf0a16a0f52f3 +Block 0025 [ 74]: 657fbc2930fa5547 +Block 0025 [ 75]: 775a8a54e8a2b61c +Block 0025 [ 76]: 603cd60bf170030e +Block 0025 [ 77]: 601ec99f484a891f +Block 0025 [ 78]: b933410f3e524173 +Block 0025 [ 79]: d86f3e3c5a2ea17a +Block 0025 [ 80]: ca2303f8e28d86d4 +Block 0025 [ 81]: c94d7faa2359de02 +Block 0025 [ 82]: 6fe0c5ecd10dd8f7 +Block 0025 [ 83]: 132b13bc110fd6bb +Block 0025 [ 84]: 1396a58273222139 +Block 0025 [ 85]: b10ff9ffee965ea2 +Block 0025 [ 86]: 835e56180aec7730 +Block 0025 [ 87]: 7e845526c7c472b9 +Block 0025 [ 88]: cf559646d6e7acfe +Block 0025 [ 89]: 6da5fa01922bc97b +Block 0025 [ 90]: 8a7cecf7918a97f5 +Block 0025 [ 91]: 75c63598267982a4 +Block 0025 [ 92]: fb62647242501a21 +Block 0025 [ 93]: 053879ca2e32577c +Block 0025 [ 94]: 328874c4f6657677 +Block 0025 [ 95]: cd160a4827bac171 +Block 0025 [ 96]: 366fb60bdfd14ec8 +Block 0025 [ 97]: 53042bee2ee8eea9 +Block 0025 [ 98]: daab24de7ed4b56e +Block 0025 [ 99]: 618bbb25385e03e7 +Block 0025 [100]: be554b98dbfc2a9d +Block 0025 [101]: 4566911b80d8dc2c +Block 0025 [102]: 8b5305bdbcd6075b +Block 0025 [103]: 67133a756f6a4b94 +Block 0025 [104]: 8284f40064d78922 +Block 0025 [105]: 5cf6fd63cf1d566a +Block 0025 [106]: b0175f63f4ddde67 +Block 0025 [107]: d7fb740f72bbda6d +Block 0025 [108]: 3f826efe67b1be5f +Block 0025 [109]: f3dc52433918e9a7 +Block 0025 [110]: 5de0272794bbdc54 +Block 0025 [111]: 240198167e58db76 +Block 0025 [112]: ca61e16751058de5 +Block 0025 [113]: 69ed01fd9dfb4e30 +Block 0025 [114]: 23264aec15e29210 +Block 0025 [115]: 0ed5522a78def765 +Block 0025 [116]: da43bf7acbd3db76 +Block 0025 [117]: 1b08030a1e29657c +Block 0025 [118]: 4421fe09e2526c19 +Block 0025 [119]: c752a808ce58ef11 +Block 0025 [120]: a4a0ae7b4c27f551 +Block 0025 [121]: a9bd8741f2ce61bb +Block 0025 [122]: 6806af701aaaff8e +Block 0025 [123]: f51d43bad7d70d80 +Block 0025 [124]: b6ef49db4b4be794 +Block 0025 [125]: e36d78c39c512816 +Block 0025 [126]: cc32f44ae037a86b +Block 0025 [127]: 880fecf11ba54ced +Block 0026 [ 0]: 7ef468a64079cd9a +Block 0026 [ 1]: 8546dfe9d161c4bc +Block 0026 [ 2]: eebf928e3390334e +Block 0026 [ 3]: 7218cc9841e59f45 +Block 0026 [ 4]: 95d9e37c4b9a4f4d +Block 0026 [ 5]: 276db3f95e1261bf +Block 0026 [ 6]: a97405ae99bfaab7 +Block 0026 [ 7]: 58d5a4bab4709e48 +Block 0026 [ 8]: 7d53c7ee5ec47ccb +Block 0026 [ 9]: bd8064b37e9fcd44 +Block 0026 [ 10]: 838bda546d531773 +Block 0026 [ 11]: fe3e588ecb36d23d +Block 0026 [ 12]: 2bd509e8359fb68c +Block 0026 [ 13]: 21e808c5ccbbb67d +Block 0026 [ 14]: c8c63b5118c5b7bc +Block 0026 [ 15]: 5aa30e29e87723ed +Block 0026 [ 16]: 9bee04350c6ac26b +Block 0026 [ 17]: fd5f59a6868ee80a +Block 0026 [ 18]: d03cd60f128a4d38 +Block 0026 [ 19]: 319edf5ae1fd16c3 +Block 0026 [ 20]: 55fae0ac08942a8c +Block 0026 [ 21]: 48efd5deba981eda +Block 0026 [ 22]: 4a9a42f6929229b4 +Block 0026 [ 23]: 6e5250d853603705 +Block 0026 [ 24]: 470392f63cf8c80b +Block 0026 [ 25]: af637923901c26d7 +Block 0026 [ 26]: e0357745a3c135d9 +Block 0026 [ 27]: 69a1a5a1594c5498 +Block 0026 [ 28]: 8b33325678af02cf +Block 0026 [ 29]: df2c0c4935f133fb +Block 0026 [ 30]: 41517c2801176075 +Block 0026 [ 31]: b91c2a723d9c6a4f +Block 0026 [ 32]: c8f49391d970a150 +Block 0026 [ 33]: 611642a25e792a1f +Block 0026 [ 34]: 93551770566de5ff +Block 0026 [ 35]: 05c6a42cf2ae5314 +Block 0026 [ 36]: c87777b796c9bc1b +Block 0026 [ 37]: 6e4c8c8598220e5c +Block 0026 [ 38]: 63f141c6a0d2312d +Block 0026 [ 39]: 45e19d756e512b56 +Block 0026 [ 40]: 2b34021cd96cc4f4 +Block 0026 [ 41]: e3d41f9435cbab53 +Block 0026 [ 42]: 82bff43da2662c43 +Block 0026 [ 43]: 5fbf81d0f198a14d +Block 0026 [ 44]: 0719beae98c62ff9 +Block 0026 [ 45]: 3cf8075583d96a30 +Block 0026 [ 46]: 5011d98a15533b7e +Block 0026 [ 47]: 9bc8ea4f4c71754e +Block 0026 [ 48]: 6ea994994cc966d1 +Block 0026 [ 49]: cd5b3d21e82a4b3e +Block 0026 [ 50]: a82cc5d874e19644 +Block 0026 [ 51]: 75225bcee41db2c8 +Block 0026 [ 52]: 6f91ce2ee312bc16 +Block 0026 [ 53]: 8e3a411f853d1ee8 +Block 0026 [ 54]: 6e20aa263bb03ddf +Block 0026 [ 55]: 2bc22c49f82ac92a +Block 0026 [ 56]: 6834393a3a72cb2d +Block 0026 [ 57]: 2c15e7ee39881b9b +Block 0026 [ 58]: 3b680656e204c6f8 +Block 0026 [ 59]: 0db101ef83bc6e1d +Block 0026 [ 60]: 4ef271dcf28d5ad7 +Block 0026 [ 61]: b25d0a8e922b17cd +Block 0026 [ 62]: c029827e59818eed +Block 0026 [ 63]: 01c3c5fa5b1910a0 +Block 0026 [ 64]: 7e2acaf23c628008 +Block 0026 [ 65]: 3966da46acdbf674 +Block 0026 [ 66]: 6c546372f285eb81 +Block 0026 [ 67]: 4c64673f1bd15733 +Block 0026 [ 68]: ddc0115b4f88d8b2 +Block 0026 [ 69]: 6699aee29d277d58 +Block 0026 [ 70]: 7060e5e8708be4a6 +Block 0026 [ 71]: b4e995b146fbf8e9 +Block 0026 [ 72]: 6ca7a550c9676696 +Block 0026 [ 73]: c8aaae0e7ae2e6ec +Block 0026 [ 74]: de456377963d8cf0 +Block 0026 [ 75]: 8fc337a19a8f1ac8 +Block 0026 [ 76]: 3d2dfe4e4df1d79c +Block 0026 [ 77]: eda051c4a2c7b70a +Block 0026 [ 78]: 57cbaf017e6723ab +Block 0026 [ 79]: b049d3e6d213512d +Block 0026 [ 80]: 2c8412eaa5c44735 +Block 0026 [ 81]: 827939a1f4a276e8 +Block 0026 [ 82]: 1ae471fd346f7a74 +Block 0026 [ 83]: dfd457440025ce20 +Block 0026 [ 84]: 3a85730d2e41a58b +Block 0026 [ 85]: f31fb93979c8085f +Block 0026 [ 86]: 94b2247bf9bbc38a +Block 0026 [ 87]: 57e6e4d2fb9ae750 +Block 0026 [ 88]: 29f72e206e450dea +Block 0026 [ 89]: 98126e68984fba49 +Block 0026 [ 90]: 54908e7e85c5d297 +Block 0026 [ 91]: 0d904ba583bf36c7 +Block 0026 [ 92]: 3186f67cde1b92eb +Block 0026 [ 93]: 9546a09b767f715d +Block 0026 [ 94]: ed2ab1b74f1f424f +Block 0026 [ 95]: 9d9121f5252a10d5 +Block 0026 [ 96]: 8b6c6cda6565b693 +Block 0026 [ 97]: 6a8e539240a22900 +Block 0026 [ 98]: 40b4f95b2a231d63 +Block 0026 [ 99]: 6293633c33154160 +Block 0026 [100]: 96b28f631411950e +Block 0026 [101]: 67fe40c1aa95a7a1 +Block 0026 [102]: 37d54121b4d85920 +Block 0026 [103]: 75b5cbd8b8660c06 +Block 0026 [104]: 24ebb2de04d1114b +Block 0026 [105]: 5fc419f35e7ce336 +Block 0026 [106]: d4afdb18dca824cf +Block 0026 [107]: 293f5840856b1ec9 +Block 0026 [108]: f232d1b7074a32b8 +Block 0026 [109]: 6f1fc4541b484666 +Block 0026 [110]: 8d148a83d4e93398 +Block 0026 [111]: d8c832cb07658c49 +Block 0026 [112]: 6ad0e8f6d9daa36e +Block 0026 [113]: dda24c063ae01145 +Block 0026 [114]: 3bde319d36725fbc +Block 0026 [115]: f3b9a9454c05da6e +Block 0026 [116]: 06e186ddc78cf92d +Block 0026 [117]: 2a596ae91800204d +Block 0026 [118]: 212c7c706f943811 +Block 0026 [119]: ae7db514d3b24213 +Block 0026 [120]: 672e25c5cef9deb8 +Block 0026 [121]: 19d761c0b6076ad3 +Block 0026 [122]: be9b211c5366c41e +Block 0026 [123]: 0deda395bd9a27d4 +Block 0026 [124]: e791c020717c6e02 +Block 0026 [125]: d7f77e53b85a47ff +Block 0026 [126]: 6e33712b6beac4ac +Block 0026 [127]: a532ad317ce50370 +Block 0027 [ 0]: 9fa1c53b690e5115 +Block 0027 [ 1]: 8b37cc2741764653 +Block 0027 [ 2]: e8c49cf23c0f8cfa +Block 0027 [ 3]: 2bb24b419bd5e104 +Block 0027 [ 4]: 89fffe467a5cfc5e +Block 0027 [ 5]: 60fd2c56d6210a00 +Block 0027 [ 6]: dbfac4f4146bb1d4 +Block 0027 [ 7]: ac59d69f4bd2f4b3 +Block 0027 [ 8]: d49097043be118e3 +Block 0027 [ 9]: 25a7ae779e708584 +Block 0027 [ 10]: a53eddfb92e77aeb +Block 0027 [ 11]: bef96fb2ccdb40ad +Block 0027 [ 12]: f745b82dffd9f4ff +Block 0027 [ 13]: 30e1c89daa429f25 +Block 0027 [ 14]: d7a3c4a8a2adfe8f +Block 0027 [ 15]: 5caaeea3a87c46c4 +Block 0027 [ 16]: 7849920c43db9b8f +Block 0027 [ 17]: 7330761405e5eef6 +Block 0027 [ 18]: 3df683244cf7df08 +Block 0027 [ 19]: d876761a60146318 +Block 0027 [ 20]: 168b6e118598ef85 +Block 0027 [ 21]: 374310fa30d84885 +Block 0027 [ 22]: 100757baa01e6c74 +Block 0027 [ 23]: d542a23309d78ddb +Block 0027 [ 24]: 500e1ac576de3a31 +Block 0027 [ 25]: 68c6493eafc727d1 +Block 0027 [ 26]: 51c529a4cdaafd71 +Block 0027 [ 27]: 6c886eed1dcd2a9d +Block 0027 [ 28]: 76e816b102474317 +Block 0027 [ 29]: 5db645c2d8bbc3b5 +Block 0027 [ 30]: 528b633a10bff528 +Block 0027 [ 31]: 2eca05eeee7f445d +Block 0027 [ 32]: b90ff76fe52371b4 +Block 0027 [ 33]: 0da08131b4982cac +Block 0027 [ 34]: 82277c1a16645af4 +Block 0027 [ 35]: da2bc08daf4a5290 +Block 0027 [ 36]: a0832f040c393c7f +Block 0027 [ 37]: dccf4d0ce8f6ecd4 +Block 0027 [ 38]: db23ff4aa8381bea +Block 0027 [ 39]: 61bf2705ff3119f6 +Block 0027 [ 40]: 76f344f53ed13981 +Block 0027 [ 41]: eb01f42010398423 +Block 0027 [ 42]: 43a19e52956f565d +Block 0027 [ 43]: addbba697b6aafd4 +Block 0027 [ 44]: 96fb2ff3add663ce +Block 0027 [ 45]: 5641ffd5d86e93fc +Block 0027 [ 46]: 6fd4691920b273b4 +Block 0027 [ 47]: b81e5f93eca99d62 +Block 0027 [ 48]: 8d093429f1ff1d82 +Block 0027 [ 49]: aea6e5fbfcc25a52 +Block 0027 [ 50]: 62e1ebe136fa8dba +Block 0027 [ 51]: 15db85e69ba386cd +Block 0027 [ 52]: 527710ee9951122a +Block 0027 [ 53]: 0f091dfc4a9af619 +Block 0027 [ 54]: 3d84ef91adcdec8a +Block 0027 [ 55]: 343ebe2dd28417fe +Block 0027 [ 56]: 9be06f5b49a6f05e +Block 0027 [ 57]: f4b1e0dc0e81697e +Block 0027 [ 58]: 2c32e3ee4934a9c2 +Block 0027 [ 59]: c5abee7d81abe68a +Block 0027 [ 60]: aab7d4a83d0ced99 +Block 0027 [ 61]: d70d53f57205e491 +Block 0027 [ 62]: 543646a33d67ab52 +Block 0027 [ 63]: 9e7720bce3cb5286 +Block 0027 [ 64]: f1e849ce5c52f1ad +Block 0027 [ 65]: 8ab8eda5cd40c8fc +Block 0027 [ 66]: 52864bf8c065bbc5 +Block 0027 [ 67]: f6e11187c4bd5aa7 +Block 0027 [ 68]: bd39792abd351168 +Block 0027 [ 69]: ae6b7e3a6a100a79 +Block 0027 [ 70]: 713b081c7958b546 +Block 0027 [ 71]: e984cae7793fe035 +Block 0027 [ 72]: 1094841fa7eec293 +Block 0027 [ 73]: a49f3fed3d1697ff +Block 0027 [ 74]: 57b7a9aa5209c9f3 +Block 0027 [ 75]: 75dfa69fc876bdf5 +Block 0027 [ 76]: afd6ca990dc04546 +Block 0027 [ 77]: 650fe9377d9cebe4 +Block 0027 [ 78]: cc9cc3acdd5b8345 +Block 0027 [ 79]: 5b193656205729ff +Block 0027 [ 80]: 45e61b89a2e05f16 +Block 0027 [ 81]: a005d8298561714e +Block 0027 [ 82]: 1fa74ae4179734b2 +Block 0027 [ 83]: 2ee4f5fab9189036 +Block 0027 [ 84]: ef17041c685d0e40 +Block 0027 [ 85]: 5f92a508530ff0c0 +Block 0027 [ 86]: cfa7a375870e09e8 +Block 0027 [ 87]: 261f7ef8b9bfbff3 +Block 0027 [ 88]: cbe7e553a0cf2e7f +Block 0027 [ 89]: 39eb11ca144e77ca +Block 0027 [ 90]: de08863c98348c66 +Block 0027 [ 91]: 8fb79e25b74d0a9d +Block 0027 [ 92]: 7b589fc28e7e49f5 +Block 0027 [ 93]: 2b36a30651701013 +Block 0027 [ 94]: 33f3d35fac3e386a +Block 0027 [ 95]: 9b8232dd011c0cd9 +Block 0027 [ 96]: c222979853df7368 +Block 0027 [ 97]: a75437ef2e7ebee2 +Block 0027 [ 98]: ca7290f054ee32ff +Block 0027 [ 99]: f7f615bb41c13909 +Block 0027 [100]: 98a41dab04c916e3 +Block 0027 [101]: 56bd9abe4ffea529 +Block 0027 [102]: ab9e8c1838f9140a +Block 0027 [103]: 73b7e554d7085f0c +Block 0027 [104]: aa5bbfdc2d18403a +Block 0027 [105]: e951d7c31bbfda11 +Block 0027 [106]: 929bd0980cc9638b +Block 0027 [107]: 52a2f3b285fac8be +Block 0027 [108]: 59fce169b2718b88 +Block 0027 [109]: 156cb6fa586ac342 +Block 0027 [110]: 16318cd4bd24716e +Block 0027 [111]: 7ca17d055bcd7b2c +Block 0027 [112]: 32053bfc51617177 +Block 0027 [113]: 28beddc1cdd676e7 +Block 0027 [114]: b2255a813a0861e3 +Block 0027 [115]: 4757a1408edd8347 +Block 0027 [116]: 5c92919ddd014b15 +Block 0027 [117]: 7ff74e029790456d +Block 0027 [118]: a4c0c1e2e59ce89b +Block 0027 [119]: 7f9713ca32bc0ba5 +Block 0027 [120]: a614204dcc6463a9 +Block 0027 [121]: 0cb7f1d92565704e +Block 0027 [122]: 5a26f2a6a5d8d1f3 +Block 0027 [123]: 09e8fbb79f46d15a +Block 0027 [124]: 60cba24dbc7a69ea +Block 0027 [125]: ddae6302e17afaf7 +Block 0027 [126]: 8fae3a02a0cd58ae +Block 0027 [127]: 739eabc30024614d +Block 0028 [ 0]: 0e85cca41243c749 +Block 0028 [ 1]: 40ba0b7c7b17a399 +Block 0028 [ 2]: 65ac8f2a7be3503c +Block 0028 [ 3]: b87f91c2b1c410b9 +Block 0028 [ 4]: 054c671cdf78fed8 +Block 0028 [ 5]: 5d3ec01ba37df53b +Block 0028 [ 6]: a41996c0d74d1d4f +Block 0028 [ 7]: bf981d07080966b7 +Block 0028 [ 8]: fb38da158b87f305 +Block 0028 [ 9]: 5c144628680ea65f +Block 0028 [ 10]: 8155b6fea71b9ca6 +Block 0028 [ 11]: a7e86b495469fd06 +Block 0028 [ 12]: eab1fc3d6ef06c16 +Block 0028 [ 13]: ed27acee6714900c +Block 0028 [ 14]: ab257e11a32f3e2b +Block 0028 [ 15]: 77edcc29b66e91dc +Block 0028 [ 16]: 7817bf469d8cf51e +Block 0028 [ 17]: 29d5b4a8f4d782e3 +Block 0028 [ 18]: 8a7ecb0fe133bd77 +Block 0028 [ 19]: dfcd56d9f51ee53d +Block 0028 [ 20]: 1bf3d77568b1cb75 +Block 0028 [ 21]: c751f52caa4356a6 +Block 0028 [ 22]: 39a6b3286a5c30e8 +Block 0028 [ 23]: c1e0704b2b8456b1 +Block 0028 [ 24]: cb6e541ae789f116 +Block 0028 [ 25]: 7374b85accd6ec1a +Block 0028 [ 26]: f88601a3d9333dec +Block 0028 [ 27]: 5aa74417a8bbd5e7 +Block 0028 [ 28]: b7b24ec3a0179349 +Block 0028 [ 29]: b899ea108a55cb30 +Block 0028 [ 30]: cf36370deb66ab32 +Block 0028 [ 31]: c62d26777d0cf3c0 +Block 0028 [ 32]: a859b878ba83a08b +Block 0028 [ 33]: a87be8e682613211 +Block 0028 [ 34]: d01855cabfba05be +Block 0028 [ 35]: a6263d2dc62ce85f +Block 0028 [ 36]: dc69da3a993bcc2c +Block 0028 [ 37]: 83b472fba8ccfc63 +Block 0028 [ 38]: e0d64b25c699d08f +Block 0028 [ 39]: 584d5affcacb1e9e +Block 0028 [ 40]: b98d206a1f3544ea +Block 0028 [ 41]: 26b5ec7a7c297725 +Block 0028 [ 42]: cd96ab285713d99f +Block 0028 [ 43]: df492f93837f09f2 +Block 0028 [ 44]: cb3c9ff1fe66ada8 +Block 0028 [ 45]: bb006aedfa2ea6ad +Block 0028 [ 46]: e3939acaf8abcd32 +Block 0028 [ 47]: 4b14c3952070da49 +Block 0028 [ 48]: 574efbbefdf497ea +Block 0028 [ 49]: af01ce5b7378b06f +Block 0028 [ 50]: 20a9929b5bdf186a +Block 0028 [ 51]: ea42fe634d665702 +Block 0028 [ 52]: 6b0bd4f2912b8b3e +Block 0028 [ 53]: 814db8e14f32ae57 +Block 0028 [ 54]: e69ae15f95df680e +Block 0028 [ 55]: 425a977565c863f7 +Block 0028 [ 56]: 973c97da3ba71ff9 +Block 0028 [ 57]: d7143cb537a9f71d +Block 0028 [ 58]: 73439409660c5c38 +Block 0028 [ 59]: c8430dc386fc9d15 +Block 0028 [ 60]: 0c67cd6e6fff1e63 +Block 0028 [ 61]: 62c0256fde5856ff +Block 0028 [ 62]: 3e25b0c0db1e3416 +Block 0028 [ 63]: b2187c58176ae515 +Block 0028 [ 64]: 8dd7227f711ffd7e +Block 0028 [ 65]: fcd1182ce333eb1e +Block 0028 [ 66]: 1afd2879ab103888 +Block 0028 [ 67]: ea6db3a5935c5592 +Block 0028 [ 68]: 86f39e2e75bef366 +Block 0028 [ 69]: b1d9454de3de9e74 +Block 0028 [ 70]: 37b20202c244827b +Block 0028 [ 71]: 1ebe94e672421dcb +Block 0028 [ 72]: 92129c6d6bfbeef1 +Block 0028 [ 73]: a6caab1ac6da487b +Block 0028 [ 74]: 19d015236d62b791 +Block 0028 [ 75]: 275f059bdb96f81c +Block 0028 [ 76]: aa6fb609adb40425 +Block 0028 [ 77]: 46770ee193d5f0ee +Block 0028 [ 78]: 3013c7b5504eefc0 +Block 0028 [ 79]: 37ebc9d99ab31363 +Block 0028 [ 80]: 37d64d1d0b77f7e7 +Block 0028 [ 81]: baf4d2355c9e3f91 +Block 0028 [ 82]: 713c207bd98f5bad +Block 0028 [ 83]: 4adf2c66093519a0 +Block 0028 [ 84]: 7d90ba3ac0b79e34 +Block 0028 [ 85]: 960e9309c6ef6ff6 +Block 0028 [ 86]: 399f055a58788bdb +Block 0028 [ 87]: 8ee4b1a6799cd390 +Block 0028 [ 88]: 3099856d626a230c +Block 0028 [ 89]: c1fe40bb28b691f7 +Block 0028 [ 90]: afe7e4123bc59379 +Block 0028 [ 91]: b08b56a71ef1bc17 +Block 0028 [ 92]: e910f52504e7136e +Block 0028 [ 93]: fa26cfc79fb74284 +Block 0028 [ 94]: 553ba6b7d0429bfd +Block 0028 [ 95]: 340061b6aa853ae3 +Block 0028 [ 96]: 191cdde0fd8de140 +Block 0028 [ 97]: 6ddb0e9ffdd173c8 +Block 0028 [ 98]: 67d0dfba86c27796 +Block 0028 [ 99]: 94ec1e01b3bd8632 +Block 0028 [100]: 31867525f8bc8238 +Block 0028 [101]: 65e995ab9307b566 +Block 0028 [102]: 377b3b891df93943 +Block 0028 [103]: a3b9fdce60c4261d +Block 0028 [104]: f08bc6604b98f79d +Block 0028 [105]: baec2e81d8b364a4 +Block 0028 [106]: 02f2edac0f508601 +Block 0028 [107]: f82d55936f52ebf4 +Block 0028 [108]: 2fa3ef0957aec0f5 +Block 0028 [109]: b1f637bbedb476d8 +Block 0028 [110]: bb5dc2a1eb0e9f7b +Block 0028 [111]: 9e67d8c0f07623f6 +Block 0028 [112]: 65f009064ff0e9c3 +Block 0028 [113]: 5d08017b855e7be7 +Block 0028 [114]: 5d8eed96a64db23d +Block 0028 [115]: 3512927f50b1b1e2 +Block 0028 [116]: dc15de89063b4012 +Block 0028 [117]: c4679f41c6c56a6e +Block 0028 [118]: 0a4e0b7e365782bb +Block 0028 [119]: 9b7444a953c6d6ba +Block 0028 [120]: 64d1f446d97216fe +Block 0028 [121]: aae982e26bbd3da9 +Block 0028 [122]: ef1cd05ad517ed77 +Block 0028 [123]: 97a7dac0ddaf58dc +Block 0028 [124]: b241dd4508b65f10 +Block 0028 [125]: ca9aa32702f4ad94 +Block 0028 [126]: 0b5df4481d1655ac +Block 0028 [127]: 1f127ce283eb9aa0 +Block 0029 [ 0]: b28d5deaef96e66a +Block 0029 [ 1]: 60faf86916b45b57 +Block 0029 [ 2]: 4e5fa33acc5404c5 +Block 0029 [ 3]: 9fd6a17e93d035d6 +Block 0029 [ 4]: 0893d077e4b8d174 +Block 0029 [ 5]: f03e7f804936297f +Block 0029 [ 6]: cc76ddd3b1f33443 +Block 0029 [ 7]: ca571fde36d623c2 +Block 0029 [ 8]: 6c90fdc13ceaaffa +Block 0029 [ 9]: d9e61e9c12a5f434 +Block 0029 [ 10]: c1ad29dcbb355739 +Block 0029 [ 11]: 89c3d212b96b585a +Block 0029 [ 12]: edc5d46da39f3664 +Block 0029 [ 13]: 76f1b5a61c0123f7 +Block 0029 [ 14]: fe328e8203051cc3 +Block 0029 [ 15]: 9bd4e4ee7952ad46 +Block 0029 [ 16]: a1d2164a687d7afe +Block 0029 [ 17]: 71d22e2206efe720 +Block 0029 [ 18]: dd570188cb4768ac +Block 0029 [ 19]: 73e76f871a564857 +Block 0029 [ 20]: 19984cb80773d41a +Block 0029 [ 21]: 1e5a525f66c2bfab +Block 0029 [ 22]: 9eb9d711dc54bdfe +Block 0029 [ 23]: 80202120abb1f2af +Block 0029 [ 24]: 762aad6301f0f687 +Block 0029 [ 25]: 924a11ab5bdd8d6d +Block 0029 [ 26]: 71a2bc27939e981b +Block 0029 [ 27]: bf6cd48e38e6fecb +Block 0029 [ 28]: c33e0fa6f3853d62 +Block 0029 [ 29]: 9cec1adb998c40e7 +Block 0029 [ 30]: 456c0560470631cc +Block 0029 [ 31]: cbc4831ba9510433 +Block 0029 [ 32]: df115dc56383ef17 +Block 0029 [ 33]: 3ae2401e3b9d1071 +Block 0029 [ 34]: 529a3c7e240815cc +Block 0029 [ 35]: 60e469e9b79ecfec +Block 0029 [ 36]: 48978c13a0db4353 +Block 0029 [ 37]: 2807c4ccad614aba +Block 0029 [ 38]: 36bc5a395ea99a2d +Block 0029 [ 39]: 2f5eeb78c5a901a3 +Block 0029 [ 40]: b10fc4c58c21db64 +Block 0029 [ 41]: 976836b2e1e3046f +Block 0029 [ 42]: 648d34fcc495dfff +Block 0029 [ 43]: cf4f898d00641f63 +Block 0029 [ 44]: 768f15f98e84fb17 +Block 0029 [ 45]: 6e5a7e27aa0874ee +Block 0029 [ 46]: fc9b1390cb33f4fc +Block 0029 [ 47]: 8c916f3ee985266a +Block 0029 [ 48]: ac4f0564ad44f4ec +Block 0029 [ 49]: 098adc10cdeef1d4 +Block 0029 [ 50]: ffb0f1701437ffbc +Block 0029 [ 51]: a4ce31038dfcd250 +Block 0029 [ 52]: 10a1f6563a54453a +Block 0029 [ 53]: f17f021dc41171e2 +Block 0029 [ 54]: 6877dec2a510de4d +Block 0029 [ 55]: f035c7817b56646a +Block 0029 [ 56]: 8d2dc75ed87d1f09 +Block 0029 [ 57]: def747cce81ffedb +Block 0029 [ 58]: a404e5187e7c88e9 +Block 0029 [ 59]: c8a8f0f2eee0ab45 +Block 0029 [ 60]: 5177d3db538e7006 +Block 0029 [ 61]: 2033765493f54c07 +Block 0029 [ 62]: d25e03408762825c +Block 0029 [ 63]: bf358da4de74d44f +Block 0029 [ 64]: 7169d9bac3f6b089 +Block 0029 [ 65]: 34aa5592008cb63e +Block 0029 [ 66]: 648460c51b3eb8e2 +Block 0029 [ 67]: 745f4d631c28ed67 +Block 0029 [ 68]: 15b07807de3167ec +Block 0029 [ 69]: b271a3455f6ad429 +Block 0029 [ 70]: 8a4c7a688f53849b +Block 0029 [ 71]: d47b0059ca698b91 +Block 0029 [ 72]: 5401fcaa6e1613f5 +Block 0029 [ 73]: eab2ed41c82503ed +Block 0029 [ 74]: b651b03e13eb8116 +Block 0029 [ 75]: 22441c0d3152627f +Block 0029 [ 76]: 086b49b7fd79cd37 +Block 0029 [ 77]: 6a2072fd35ec9ffd +Block 0029 [ 78]: d60ad9b09b6f53a2 +Block 0029 [ 79]: bed980f12e3e9942 +Block 0029 [ 80]: a8d2311811115bd4 +Block 0029 [ 81]: 047607dbd328a4ab +Block 0029 [ 82]: 57929ac9e5d669ac +Block 0029 [ 83]: 17521cb6eebc4cbd +Block 0029 [ 84]: ec29c8b11f03b546 +Block 0029 [ 85]: 8c3207b69a2e03fd +Block 0029 [ 86]: b6f8deb6a899dd69 +Block 0029 [ 87]: 50eb7a89a30eb2a9 +Block 0029 [ 88]: 2f2eda5c8d005e89 +Block 0029 [ 89]: b925767aa40ed8d0 +Block 0029 [ 90]: c0b7aae715772ac5 +Block 0029 [ 91]: dccbd919a7913b20 +Block 0029 [ 92]: 1d0904985d927067 +Block 0029 [ 93]: ea17fad0c1205cf5 +Block 0029 [ 94]: c79c19bab0477b58 +Block 0029 [ 95]: e2f4b87c67079492 +Block 0029 [ 96]: 648f8e57ca950544 +Block 0029 [ 97]: 09a16d4452a5aeff +Block 0029 [ 98]: 1020c0d715864a87 +Block 0029 [ 99]: ef4571edec273ee3 +Block 0029 [100]: bbfc9532f778a70e +Block 0029 [101]: 764cf7bb9dd250e6 +Block 0029 [102]: fd2ee8be4998c8bf +Block 0029 [103]: 400a72a9e344c2fa +Block 0029 [104]: 90acd7a2f8016e3c +Block 0029 [105]: a1fd46e9f88ef794 +Block 0029 [106]: fbc375521db9ff27 +Block 0029 [107]: 426e56c2b8dfa489 +Block 0029 [108]: e501faec2ebe5e48 +Block 0029 [109]: 88d8cb1d2b938fb1 +Block 0029 [110]: 22481c28a857b844 +Block 0029 [111]: 0f48a0190e3998f8 +Block 0029 [112]: b987462fcbd0d42d +Block 0029 [113]: 92b894ed5ae61019 +Block 0029 [114]: 96fef58b74fd323e +Block 0029 [115]: 96384b5f636f7fb4 +Block 0029 [116]: 1fe75196ac057245 +Block 0029 [117]: 667a495e0fcf1af3 +Block 0029 [118]: 3d0b9fc737dc4f2f +Block 0029 [119]: b1395938051b5c3b +Block 0029 [120]: 3e8dcddd601ec5ef +Block 0029 [121]: cbba85b46d84cbca +Block 0029 [122]: ea62a35c8d28304e +Block 0029 [123]: ebedde4456cf597f +Block 0029 [124]: a333b258a27b5373 +Block 0029 [125]: 6f4f7c2c51ebbf33 +Block 0029 [126]: d542eff31f159567 +Block 0029 [127]: 6869d4daa5acd753 +Block 0030 [ 0]: b0e5888ede5c8dac +Block 0030 [ 1]: 2947e0c66206b871 +Block 0030 [ 2]: 931942ce42ad27d6 +Block 0030 [ 3]: 3dd35c71fa980316 +Block 0030 [ 4]: b549254e041de1f8 +Block 0030 [ 5]: 288a295329a1bdae +Block 0030 [ 6]: af2667951e3fce86 +Block 0030 [ 7]: fc7543071c09d556 +Block 0030 [ 8]: 4957f01ef9fe1ffb +Block 0030 [ 9]: be316c502ec520ed +Block 0030 [ 10]: ece84265d2ef9b97 +Block 0030 [ 11]: 4eaa0d6c6bad20de +Block 0030 [ 12]: 7ca1f307b296c8e8 +Block 0030 [ 13]: c4e32d348044f957 +Block 0030 [ 14]: 50697fda97ed01e5 +Block 0030 [ 15]: cd2a914e1a30208a +Block 0030 [ 16]: 3227da448a87316e +Block 0030 [ 17]: 8896e1c09e53ac5e +Block 0030 [ 18]: 9a02a17295caac6e +Block 0030 [ 19]: fe260353800fb2c5 +Block 0030 [ 20]: 98fe9a5abbee7323 +Block 0030 [ 21]: d2e465ad6ff6522a +Block 0030 [ 22]: dc1ec4681a531d77 +Block 0030 [ 23]: a9be825083445307 +Block 0030 [ 24]: 20a55e7ef381eaad +Block 0030 [ 25]: 9329bb7819768457 +Block 0030 [ 26]: 0f244df63d40188f +Block 0030 [ 27]: b3dd7873d937c70c +Block 0030 [ 28]: af9f93785f756d37 +Block 0030 [ 29]: c797db32266d8ce2 +Block 0030 [ 30]: 35cf4b324e67541b +Block 0030 [ 31]: 01844a32e3bfd33d +Block 0030 [ 32]: fd342870363d3422 +Block 0030 [ 33]: 8c7dd1a49645c4a3 +Block 0030 [ 34]: 24a8f8142ad33503 +Block 0030 [ 35]: e2ae44a3ae5e7af6 +Block 0030 [ 36]: 8028ac5f745267a7 +Block 0030 [ 37]: b690a9a4bc11258d +Block 0030 [ 38]: 2ff9c51288b1e54f +Block 0030 [ 39]: c65ab253f9eddfb2 +Block 0030 [ 40]: ae808cc2f3522ea8 +Block 0030 [ 41]: b8523a531b8ee3de +Block 0030 [ 42]: eb10ca13497f0a14 +Block 0030 [ 43]: 0234eb8439b05aa1 +Block 0030 [ 44]: 99ae2d652ab5f6f7 +Block 0030 [ 45]: ee86a5751b6be154 +Block 0030 [ 46]: b317c57e22d2fd04 +Block 0030 [ 47]: 8e525bd89823545e +Block 0030 [ 48]: 6db14c7cce51c804 +Block 0030 [ 49]: e59635843f833bbc +Block 0030 [ 50]: 408d78e00bd38918 +Block 0030 [ 51]: 332152358dcd8d8b +Block 0030 [ 52]: 2e4f4081eef49dbb +Block 0030 [ 53]: fc17367edefa01f4 +Block 0030 [ 54]: 8e88915176024a3e +Block 0030 [ 55]: 6ae1773750423a1a +Block 0030 [ 56]: 049e6661027076f1 +Block 0030 [ 57]: da464aa051508136 +Block 0030 [ 58]: 668a19912111ba4b +Block 0030 [ 59]: 4fc0f8758e6b072b +Block 0030 [ 60]: 9249479ec4f9a25b +Block 0030 [ 61]: e1b761f5f33f625a +Block 0030 [ 62]: 66a54f4afac4195f +Block 0030 [ 63]: 36f04e02d4f3c336 +Block 0030 [ 64]: 1a322be91f026c16 +Block 0030 [ 65]: ecb88344974e5267 +Block 0030 [ 66]: 287435939e643bfd +Block 0030 [ 67]: e58ee2cc81e2327b +Block 0030 [ 68]: 4775f9b50e042d9c +Block 0030 [ 69]: b3599c38d982a55f +Block 0030 [ 70]: 8d0a150207232f9c +Block 0030 [ 71]: 586c4528d0d00293 +Block 0030 [ 72]: 3d913208cc402a16 +Block 0030 [ 73]: 9aae0a4db183400b +Block 0030 [ 74]: 3fce4b4358d6f960 +Block 0030 [ 75]: e2c34cae7121c6fa +Block 0030 [ 76]: fb6066a5eec05661 +Block 0030 [ 77]: 19e3f805f7f395b3 +Block 0030 [ 78]: ea57f581bb90bd1e +Block 0030 [ 79]: 4403ddb3d5d88d54 +Block 0030 [ 80]: 9ec5620c2650cada +Block 0030 [ 81]: e187151963499d27 +Block 0030 [ 82]: e1e490016d3e7a90 +Block 0030 [ 83]: 47dba15fb3114a6a +Block 0030 [ 84]: 00e6713e3524748c +Block 0030 [ 85]: 83830560126cdc8d +Block 0030 [ 86]: 8b9795d20eba6712 +Block 0030 [ 87]: 1f8f0e4cabdf4a19 +Block 0030 [ 88]: d5dbaee140cef589 +Block 0030 [ 89]: 592578e759114087 +Block 0030 [ 90]: eccc40aba3284be3 +Block 0030 [ 91]: 4b02c4c91e5ed750 +Block 0030 [ 92]: d6620771f12fdb1d +Block 0030 [ 93]: f1bd112af7f6a8e8 +Block 0030 [ 94]: f47bfff0211edb2f +Block 0030 [ 95]: e131d353a0967967 +Block 0030 [ 96]: 65aed7d87586ba45 +Block 0030 [ 97]: f15197b40f0b7b6d +Block 0030 [ 98]: 54e06f25fe4ee906 +Block 0030 [ 99]: 34b01354129382ec +Block 0030 [100]: c7f6988356e5d16e +Block 0030 [101]: cd5f18759d23da4c +Block 0030 [102]: a53a9b98e51aa5d7 +Block 0030 [103]: 9dcaaa20febf21d0 +Block 0030 [104]: 15d188f2c06e0fdd +Block 0030 [105]: 3df0c897dd56961f +Block 0030 [106]: 214e5774a75128c2 +Block 0030 [107]: 1f3d964be08e22c9 +Block 0030 [108]: 7e2da6a44beeba29 +Block 0030 [109]: 794b8f5662cd37fc +Block 0030 [110]: 87e1930746ed7aba +Block 0030 [111]: 63b38bc439afc3f8 +Block 0030 [112]: a4974dbb47bd4ddf +Block 0030 [113]: d8c3107a98637538 +Block 0030 [114]: e7bf1c42db1a76d9 +Block 0030 [115]: c40c2a46939cbfec +Block 0030 [116]: 2f9a1d4bda4a7f87 +Block 0030 [117]: a1f04a1cf57bee91 +Block 0030 [118]: 2c80d3b0b53a4ff8 +Block 0030 [119]: 6780c97b92b320fc +Block 0030 [120]: 6ffad7bf7a3cef66 +Block 0030 [121]: c3ea5d7dcda539e2 +Block 0030 [122]: a0ce5960ccb716e3 +Block 0030 [123]: 14e7d5d9cc4b77bc +Block 0030 [124]: 873764de6fc77a4f +Block 0030 [125]: d2e5faef31dafe08 +Block 0030 [126]: d2480de38d2bf7cb +Block 0030 [127]: 0508ce05f2d3c998 +Block 0031 [ 0]: 0be96ca10d034a45 +Block 0031 [ 1]: 9575d2e4602f4318 +Block 0031 [ 2]: 89214d75d56ed403 +Block 0031 [ 3]: 2cc7abbfb9839016 +Block 0031 [ 4]: 8f7133d96eb95c09 +Block 0031 [ 5]: 5fec17150c93946a +Block 0031 [ 6]: 04d71991c57dbe81 +Block 0031 [ 7]: 2b5ff0848d9af7c4 +Block 0031 [ 8]: a582464dd6a0ea81 +Block 0031 [ 9]: 4dd7a4072a85a7aa +Block 0031 [ 10]: 5ac584683d0796f8 +Block 0031 [ 11]: 441bbbff03f42a0f +Block 0031 [ 12]: bbdce2a42ef826de +Block 0031 [ 13]: d042fda562e0bb63 +Block 0031 [ 14]: 361d43ee2c58c5c4 +Block 0031 [ 15]: 7de686cf2d145af9 +Block 0031 [ 16]: 6ce7323d894eb8cc +Block 0031 [ 17]: 1547f88fc60a49ae +Block 0031 [ 18]: f9a6d4fd04247a06 +Block 0031 [ 19]: ab25c7afa49b95f8 +Block 0031 [ 20]: 3e7b0916c93b6e61 +Block 0031 [ 21]: 18da624648ab23b9 +Block 0031 [ 22]: 59e1d686864cf4ee +Block 0031 [ 23]: a02fac31694739c1 +Block 0031 [ 24]: 785530b6ae946af4 +Block 0031 [ 25]: 6b894bacaa6489ac +Block 0031 [ 26]: 22d346de32ad482d +Block 0031 [ 27]: 730aeb618656de77 +Block 0031 [ 28]: e9286e648c915180 +Block 0031 [ 29]: 48e61c353897c210 +Block 0031 [ 30]: c699de54ca1fb7f8 +Block 0031 [ 31]: 26e5dd847fcbc9e5 +Block 0031 [ 32]: 3ec9afd124b60527 +Block 0031 [ 33]: 7a6e5ae14fd233ed +Block 0031 [ 34]: d498d8fbd24c99a2 +Block 0031 [ 35]: 68f63c8302d0b2be +Block 0031 [ 36]: 92aa88c5af73ddcf +Block 0031 [ 37]: 33bad457727e53c1 +Block 0031 [ 38]: bba23119ee8d666f +Block 0031 [ 39]: d86b119eec24e821 +Block 0031 [ 40]: 1465044ba63b7eb1 +Block 0031 [ 41]: 89f0d0319c93d477 +Block 0031 [ 42]: bdaf399c54254189 +Block 0031 [ 43]: 4d8bdefbcc8e8c41 +Block 0031 [ 44]: 7bf584eac7a5b05d +Block 0031 [ 45]: f485dc24ad6145cf +Block 0031 [ 46]: 5b3dd93acc2f39f4 +Block 0031 [ 47]: b409d73cfacb198c +Block 0031 [ 48]: c7cc71f41e692bf6 +Block 0031 [ 49]: cc7fe606a9c98628 +Block 0031 [ 50]: 65a1bdefcc16e8b3 +Block 0031 [ 51]: bcf903babebec896 +Block 0031 [ 52]: 14195ac57e7acef3 +Block 0031 [ 53]: a17ad05681735026 +Block 0031 [ 54]: 83983688b4510a11 +Block 0031 [ 55]: 391b7ecf135fccf9 +Block 0031 [ 56]: 16c862996731d2e9 +Block 0031 [ 57]: 11755979836c247a +Block 0031 [ 58]: ec206587fd6e429b +Block 0031 [ 59]: c6929ef1d28fa1bb +Block 0031 [ 60]: 1a5a684997bed207 +Block 0031 [ 61]: 5af629a8bab5430f +Block 0031 [ 62]: 4f970b23c03c2a16 +Block 0031 [ 63]: db8874377f4d472f +Block 0031 [ 64]: 0a2a27ae4a441659 +Block 0031 [ 65]: d9ae804b74a44141 +Block 0031 [ 66]: b59b24aa9b2a0c71 +Block 0031 [ 67]: b108f0eee97f2e57 +Block 0031 [ 68]: 08a4ed01afb97547 +Block 0031 [ 69]: 6290765dcecd698c +Block 0031 [ 70]: f979a05daa8d8585 +Block 0031 [ 71]: 33aba4bbc37fdc4b +Block 0031 [ 72]: 0539e40be7d9b206 +Block 0031 [ 73]: 8a59244b8a0debb7 +Block 0031 [ 74]: cb223a21caf3211e +Block 0031 [ 75]: e93e6821e67d18a9 +Block 0031 [ 76]: 10b2e28b612beea9 +Block 0031 [ 77]: bac404af0b69285a +Block 0031 [ 78]: b447cd291a0a7376 +Block 0031 [ 79]: 47a74d8f58347ab5 +Block 0031 [ 80]: 4a48960ce6a6f756 +Block 0031 [ 81]: 606f7c3dfd074823 +Block 0031 [ 82]: 2076b15081d66c1e +Block 0031 [ 83]: 9c4cad0f6c5fbc82 +Block 0031 [ 84]: d0822b2857eca2df +Block 0031 [ 85]: de651eeb74c86bc8 +Block 0031 [ 86]: 2adc4589b575fb47 +Block 0031 [ 87]: 0defd70a578c0f1b +Block 0031 [ 88]: 165f5c7899be2a2a +Block 0031 [ 89]: 6c235e2602669359 +Block 0031 [ 90]: 1a7b3c2830c1c249 +Block 0031 [ 91]: 2ae61f42fba7c357 +Block 0031 [ 92]: a3e3134ac362997a +Block 0031 [ 93]: 612de1e90e7d2665 +Block 0031 [ 94]: 6a98f405d60a5897 +Block 0031 [ 95]: da640cf46db9f3ad +Block 0031 [ 96]: 192189ab2fce097c +Block 0031 [ 97]: 980c4190f2bdff0e +Block 0031 [ 98]: 2af5f4959ffe8833 +Block 0031 [ 99]: b21d820700a31cc1 +Block 0031 [100]: 6b7cef3303925760 +Block 0031 [101]: b7f918936d0a977c +Block 0031 [102]: 7516ea298918042d +Block 0031 [103]: 3093f3755c9ad8ac +Block 0031 [104]: d55b8196194f1851 +Block 0031 [105]: 5b13af0fcc6dd9fb +Block 0031 [106]: 48ab25b261495bd0 +Block 0031 [107]: f706bc4b314d3605 +Block 0031 [108]: 9dc7d9998834723f +Block 0031 [109]: b374304d5060f92e +Block 0031 [110]: b8cbfaa4f3d7f622 +Block 0031 [111]: a39e300ed046f5d3 +Block 0031 [112]: b5ba736e0e3ad706 +Block 0031 [113]: 4fc2a74746529f60 +Block 0031 [114]: 75f4c5700bb63dfc +Block 0031 [115]: 8879fe7c00cb6666 +Block 0031 [116]: 58164fb0826c7345 +Block 0031 [117]: 7f9ca9b024878a8e +Block 0031 [118]: 3ee1db46ada2e47d +Block 0031 [119]: 0c76e6496a69ad8b +Block 0031 [120]: 890e19b75bed5274 +Block 0031 [121]: d1105605f9410829 +Block 0031 [122]: a30e7a92069a2a6b +Block 0031 [123]: 175bc756d16f1316 +Block 0031 [124]: e4274fd675d1e1d6 +Block 0031 [125]: 903fffb7c4a14c98 +Block 0031 [126]: 7e5db55def471966 +Block 0031 [127]: 421b3c6e9555b79d + + After pass 2: +Block 0000 [ 0]: af2a8bd8482c2f11 +Block 0000 [ 1]: 785442294fa55e6d +Block 0000 [ 2]: 9256a768529a7f96 +Block 0000 [ 3]: 25a1c1f5bb953766 +Block 0000 [ 4]: 72a9cd9a10886cd8 +Block 0000 [ 5]: 3ecaa9543eb7af4f +Block 0000 [ 6]: 15ee21ef99126afa +Block 0000 [ 7]: d096e22d0fdccbed +Block 0000 [ 8]: 98695dc49460ec60 +Block 0000 [ 9]: ab044a53cf328972 +Block 0000 [ 10]: a8f4132856b85100 +Block 0000 [ 11]: e4e16ec3f4b0a8e4 +Block 0000 [ 12]: 8ffc55592cd030ce +Block 0000 [ 13]: 4ce7804c886fdefa +Block 0000 [ 14]: b023146da6402293 +Block 0000 [ 15]: 856585f1c5c743f1 +Block 0000 [ 16]: 718fa6455c5781f9 +Block 0000 [ 17]: db0177f7e7dcdc24 +Block 0000 [ 18]: 59646c865b04120d +Block 0000 [ 19]: 42fafc9a487ab374 +Block 0000 [ 20]: 7734cee2193a300a +Block 0000 [ 21]: ed753f1dc5975edd +Block 0000 [ 22]: 0f2ef8f86bc502e2 +Block 0000 [ 23]: 523d9a809c797111 +Block 0000 [ 24]: f8dccc9247fb54b3 +Block 0000 [ 25]: 5e75f97947c4f9ae +Block 0000 [ 26]: 8770611909c9eb72 +Block 0000 [ 27]: 01c898af62ec5a22 +Block 0000 [ 28]: a1acad245dec85df +Block 0000 [ 29]: d5d6e3f14ff07f69 +Block 0000 [ 30]: c98f44f03cc8540d +Block 0000 [ 31]: e9eff12cfc7ac7b3 +Block 0000 [ 32]: 696308a7c4841e57 +Block 0000 [ 33]: fa6699460fe0dad0 +Block 0000 [ 34]: b00c52019aaba84e +Block 0000 [ 35]: e8c46902a1a082c0 +Block 0000 [ 36]: c463b9a06f7bfe1c +Block 0000 [ 37]: 5f1588d9124740cc +Block 0000 [ 38]: 8a3845857d8e6450 +Block 0000 [ 39]: 098b1d2b3083364e +Block 0000 [ 40]: 2bdacbc5d75a3796 +Block 0000 [ 41]: 5fe02a54a1d09388 +Block 0000 [ 42]: 9dd25924ab01fd49 +Block 0000 [ 43]: 28fc235c36a67e69 +Block 0000 [ 44]: b9cdcc6aed6b42aa +Block 0000 [ 45]: 2292bf66aeecd9b4 +Block 0000 [ 46]: b65c616f92615e70 +Block 0000 [ 47]: 665d2a8cc95fda20 +Block 0000 [ 48]: 5d6015cd24d5b58e +Block 0000 [ 49]: 566e2511fc13e860 +Block 0000 [ 50]: 0e6d4172d299fda2 +Block 0000 [ 51]: 51711bb30a213fee +Block 0000 [ 52]: baa627b1b95efb66 +Block 0000 [ 53]: 553ef8b4d081f251 +Block 0000 [ 54]: dc296e21d3908bd2 +Block 0000 [ 55]: 0b5577934372e18b +Block 0000 [ 56]: 325a7c02c34a0063 +Block 0000 [ 57]: 511cd738a2bb29ec +Block 0000 [ 58]: 78bd842866f6081b +Block 0000 [ 59]: a4917fb40f795866 +Block 0000 [ 60]: f63451ab7fe45926 +Block 0000 [ 61]: e72da44da8fa2526 +Block 0000 [ 62]: cf7a0a79171c3dc5 +Block 0000 [ 63]: 5dffa87b6a19c377 +Block 0000 [ 64]: 87709249d1a67953 +Block 0000 [ 65]: 8c6e8aff0b893742 +Block 0000 [ 66]: 6d1644b786853055 +Block 0000 [ 67]: 45344b95703440e7 +Block 0000 [ 68]: 69d529484a27369c +Block 0000 [ 69]: 77cd187ff379d71e +Block 0000 [ 70]: 4695c1676a6297cb +Block 0000 [ 71]: 129c2e4d8f0d130f +Block 0000 [ 72]: 80df37b16e8e0120 +Block 0000 [ 73]: 36816cf794842bf6 +Block 0000 [ 74]: cd51ebe0bea75d4f +Block 0000 [ 75]: 6e2640064f0024a8 +Block 0000 [ 76]: 5fa751c45d4571e6 +Block 0000 [ 77]: be08b615e84e99e2 +Block 0000 [ 78]: aff895f6bd7ad5a2 +Block 0000 [ 79]: a94668aec045af6f +Block 0000 [ 80]: 7df54929439123b6 +Block 0000 [ 81]: 2177e81dc530a178 +Block 0000 [ 82]: 23702198b8815fd7 +Block 0000 [ 83]: c6cfdfc6c58b7c23 +Block 0000 [ 84]: f6665bdaec247318 +Block 0000 [ 85]: 25e38016bd0c2b13 +Block 0000 [ 86]: bda625c7027b06ab +Block 0000 [ 87]: 105491576c6bf104 +Block 0000 [ 88]: cdbf6de9ff65be01 +Block 0000 [ 89]: 87dca172936422a9 +Block 0000 [ 90]: 277f6a1f433f47f0 +Block 0000 [ 91]: 464d3691eb0eeb9f +Block 0000 [ 92]: ab180830e1806e1d +Block 0000 [ 93]: 488749a577657e8c +Block 0000 [ 94]: 1ffec0ce2790e240 +Block 0000 [ 95]: a0efe4db12ef9a4b +Block 0000 [ 96]: 1ce776a738fe62c5 +Block 0000 [ 97]: d693a4f99ad2ddc0 +Block 0000 [ 98]: a2b8ce9c5a1181f8 +Block 0000 [ 99]: 6e037c488d9505e0 +Block 0000 [100]: c7b6863367ad8547 +Block 0000 [101]: a41c214223ae4f53 +Block 0000 [102]: 0caca33bd0555161 +Block 0000 [103]: e8ab772466030bda +Block 0000 [104]: 55a5256adf841b5c +Block 0000 [105]: c26501daed133a58 +Block 0000 [106]: c6ee94951fd20f1a +Block 0000 [107]: f9f7da71e229eb3b +Block 0000 [108]: 1294145272aa8dd7 +Block 0000 [109]: 83806fd19da7fa36 +Block 0000 [110]: 043dff3929d76862 +Block 0000 [111]: b207d7f3d742fc0f +Block 0000 [112]: e5cd7f664d8b9d85 +Block 0000 [113]: d354f54da4494d6e +Block 0000 [114]: 9b5f7db77aaf43b1 +Block 0000 [115]: 8760c0fda9bd5ef2 +Block 0000 [116]: 82e8cefc4f50beb9 +Block 0000 [117]: e0792492c41de5d2 +Block 0000 [118]: 961d746857b85e19 +Block 0000 [119]: fd8924440157f644 +Block 0000 [120]: 309fa2d2f185eca2 +Block 0000 [121]: df4477ca4024ca5a +Block 0000 [122]: 69c6c1b33ae10cf4 +Block 0000 [123]: 58df5414cc861dde +Block 0000 [124]: 77b32f2a19a5f0cf +Block 0000 [125]: 28c446e2110842b6 +Block 0000 [126]: 196a06e7803f07af +Block 0000 [127]: 703b8726fa442184 +Block 0001 [ 0]: b39e52eb91c1bdc1 +Block 0001 [ 1]: d92c2860542c5eab +Block 0001 [ 2]: cf88b66662afd9a4 +Block 0001 [ 3]: ab205105abf50363 +Block 0001 [ 4]: 0cad5ffe232c1e55 +Block 0001 [ 5]: 482eab98f97f69aa +Block 0001 [ 6]: df181ad58c929eaa +Block 0001 [ 7]: 1ca9a83149e9ab89 +Block 0001 [ 8]: ba562d31e81f884b +Block 0001 [ 9]: f95357df37ae767e +Block 0001 [ 10]: 45b2892b275dda33 +Block 0001 [ 11]: 241585e03db70e6d +Block 0001 [ 12]: 5c3324c4c067ddd8 +Block 0001 [ 13]: dc259c66486556a0 +Block 0001 [ 14]: b7497cd48e74a4f1 +Block 0001 [ 15]: 64ea476ce1178638 +Block 0001 [ 16]: 9e7045e96a30f5b8 +Block 0001 [ 17]: 5a69a92c5a464b3e +Block 0001 [ 18]: c7a059805b6d1880 +Block 0001 [ 19]: 440f25c7f2b63692 +Block 0001 [ 20]: 526c9603d5bb0f81 +Block 0001 [ 21]: c777fa917cb46eb8 +Block 0001 [ 22]: 59e0889599745628 +Block 0001 [ 23]: bd82e71af2c4f941 +Block 0001 [ 24]: ef9eabbe63ed885b +Block 0001 [ 25]: e5e7357881f13ba0 +Block 0001 [ 26]: aae864789abb9006 +Block 0001 [ 27]: 62343cf1b559b572 +Block 0001 [ 28]: 94c06926a5f752fa +Block 0001 [ 29]: 0f574fb3d218ff4f +Block 0001 [ 30]: 32c072026d0ee272 +Block 0001 [ 31]: 0a569df20a2ed675 +Block 0001 [ 32]: 2cfbee56a5b095fb +Block 0001 [ 33]: 32152424daad99a0 +Block 0001 [ 34]: 7a0a45c7a647c2e3 +Block 0001 [ 35]: a919db876ec5ee05 +Block 0001 [ 36]: 751af0fcf6b4506c +Block 0001 [ 37]: a213cfa621dd3379 +Block 0001 [ 38]: f4976f69ca9fd2a0 +Block 0001 [ 39]: fb9e8a81c1ae1561 +Block 0001 [ 40]: eb99e9a23c2bd68d +Block 0001 [ 41]: 109614411df38ee3 +Block 0001 [ 42]: d830230cb9ef4eeb +Block 0001 [ 43]: 7b6534f6b9125e6f +Block 0001 [ 44]: 4b8d06409fe2dcc0 +Block 0001 [ 45]: 1539d75c386cb30f +Block 0001 [ 46]: 34f2a2d5e70c5291 +Block 0001 [ 47]: 5e2d0c48230ca61c +Block 0001 [ 48]: 3dc0983d88937207 +Block 0001 [ 49]: 2ea263335271880a +Block 0001 [ 50]: 2e12ff10bfc8720c +Block 0001 [ 51]: 159a0a7b98efb22e +Block 0001 [ 52]: 98ee6f8150bd1bf7 +Block 0001 [ 53]: 4ab37247230bf307 +Block 0001 [ 54]: 1e8e9811d03bb579 +Block 0001 [ 55]: 069a57f413b64703 +Block 0001 [ 56]: f293bc9dc1bac9f2 +Block 0001 [ 57]: 068b62897b97b078 +Block 0001 [ 58]: fa6870e9439ae4b9 +Block 0001 [ 59]: e1e9a4d4bf2934bd +Block 0001 [ 60]: bd272bf53d295610 +Block 0001 [ 61]: 645938ab64a6d8c5 +Block 0001 [ 62]: af436972fd38544f +Block 0001 [ 63]: 43daf23ba5ead97d +Block 0001 [ 64]: a809fa9d2be31c90 +Block 0001 [ 65]: 5c52fa2e2da1ab6e +Block 0001 [ 66]: 39bd7bbcd09f6dfe +Block 0001 [ 67]: 5badc190cccecf31 +Block 0001 [ 68]: f72407904b16eb9a +Block 0001 [ 69]: 402228c2604e2359 +Block 0001 [ 70]: f1d353798d59dc0e +Block 0001 [ 71]: 91bc64df9fff4545 +Block 0001 [ 72]: 33c824a2621fd4df +Block 0001 [ 73]: 3b8e88ca432c6d5a +Block 0001 [ 74]: 9a0cb3f1b6ab96c2 +Block 0001 [ 75]: 067359cdebe0d519 +Block 0001 [ 76]: b4aacccf376ceb8d +Block 0001 [ 77]: 2aa6e909369143aa +Block 0001 [ 78]: df538d112febd4c0 +Block 0001 [ 79]: e1befd0fb9173850 +Block 0001 [ 80]: d402f5534c7eb96b +Block 0001 [ 81]: fe5a069f1e0ae34d +Block 0001 [ 82]: 6961cbeafba1ff67 +Block 0001 [ 83]: 54cf6d2bb3b82b3e +Block 0001 [ 84]: d7df2164ffb14392 +Block 0001 [ 85]: 142c0d8c20c56e01 +Block 0001 [ 86]: 5d9760b1fe61e8ef +Block 0001 [ 87]: c231026b091606cb +Block 0001 [ 88]: f7ace6fd77b17264 +Block 0001 [ 89]: dbed7e84e0a1b29c +Block 0001 [ 90]: 6dff9c730a69a47e +Block 0001 [ 91]: 9b5fae14c1947799 +Block 0001 [ 92]: 4f92371285c77bf3 +Block 0001 [ 93]: 773b5d4c10922cf8 +Block 0001 [ 94]: 189f25e093ec733b +Block 0001 [ 95]: a46f6b50f17faa5f +Block 0001 [ 96]: d2d8cb0cd59536c3 +Block 0001 [ 97]: d4f22425b74219ad +Block 0001 [ 98]: 44ece7df86187831 +Block 0001 [ 99]: 9b3b0f6d79aa3073 +Block 0001 [100]: eb5cd8e3706408dc +Block 0001 [101]: 4d095338d1559076 +Block 0001 [102]: 6b983b34a3cd1d03 +Block 0001 [103]: 0b9fb83578dde9e0 +Block 0001 [104]: 241b795deea655a8 +Block 0001 [105]: 6e74249559871092 +Block 0001 [106]: 3233dd2ab0ff3d60 +Block 0001 [107]: e53a50d0a98d0822 +Block 0001 [108]: 7d2dcd3a0e8588f0 +Block 0001 [109]: 96b8a86fcd45c056 +Block 0001 [110]: e8049d66f30a33c7 +Block 0001 [111]: bfa5249f4e5a109b +Block 0001 [112]: 088bb1e4dcd92a86 +Block 0001 [113]: ec15ec59f08a90f5 +Block 0001 [114]: 7b46daf17afb9e94 +Block 0001 [115]: 630b22e55f889c44 +Block 0001 [116]: 783691d88df12293 +Block 0001 [117]: c09e1eef375a4cb1 +Block 0001 [118]: 5292cd778f7d358b +Block 0001 [119]: 2c3b0f3b876e25fb +Block 0001 [120]: bfb2636b9592f067 +Block 0001 [121]: 07f44ff9972385bf +Block 0001 [122]: ffbccd62f3ced551 +Block 0001 [123]: 1f0f08705400cb47 +Block 0001 [124]: ef68b6e60b36887c +Block 0001 [125]: e698259b92b2c83e +Block 0001 [126]: dff046d9c5520ca6 +Block 0001 [127]: 7991bf5453c3b638 +Block 0002 [ 0]: dd23e459ec7a7b44 +Block 0002 [ 1]: 28741e6fe272b23c +Block 0002 [ 2]: 3bc8ee6d9f0b29a2 +Block 0002 [ 3]: ae39b5cbb3437522 +Block 0002 [ 4]: 758846264ea5f488 +Block 0002 [ 5]: ec3446e7f72f599d +Block 0002 [ 6]: 0bc86bd3b02a4152 +Block 0002 [ 7]: 95b7b5188fa5ea77 +Block 0002 [ 8]: 8d54f41ac3e6b462 +Block 0002 [ 9]: c788eabc6fc4b0ff +Block 0002 [ 10]: de3c64851157af6b +Block 0002 [ 11]: 4f287f4af73c67e9 +Block 0002 [ 12]: b6a19fc4e95e8290 +Block 0002 [ 13]: 85dc2853f27e9133 +Block 0002 [ 14]: 5663079347682383 +Block 0002 [ 15]: 02ef93c528c8b425 +Block 0002 [ 16]: f4244ee9c891c2b9 +Block 0002 [ 17]: a5728848d80240af +Block 0002 [ 18]: b9144b5d186a8590 +Block 0002 [ 19]: aaffa101deb880ad +Block 0002 [ 20]: 8b64003a05a79b57 +Block 0002 [ 21]: 8058e18f9de6f322 +Block 0002 [ 22]: 55b089d2703cddb5 +Block 0002 [ 23]: 86028d18880f2ad2 +Block 0002 [ 24]: 31355b1568d7adcf +Block 0002 [ 25]: 859079281ec15b46 +Block 0002 [ 26]: 8eb2be5993c11d50 +Block 0002 [ 27]: 7bec18fb9a0e784a +Block 0002 [ 28]: b792de1f75db4c8e +Block 0002 [ 29]: a876e86413fa1fa9 +Block 0002 [ 30]: 4cd6f37fd4eccee5 +Block 0002 [ 31]: a9dbc182dfeae36c +Block 0002 [ 32]: c4ef190a1e9d616b +Block 0002 [ 33]: 7c9e0bd0a2c26296 +Block 0002 [ 34]: 16b6ba5e8894b634 +Block 0002 [ 35]: 65a451695eae46d1 +Block 0002 [ 36]: c379abceeaabb352 +Block 0002 [ 37]: 5e0be866fca09057 +Block 0002 [ 38]: f16d10590dfa812e +Block 0002 [ 39]: 9364c03e8bf533c6 +Block 0002 [ 40]: 70ea4fe297664dae +Block 0002 [ 41]: 75d8c06c28f33748 +Block 0002 [ 42]: 5cbbec46e77b4d15 +Block 0002 [ 43]: 179bee833c0e2b11 +Block 0002 [ 44]: 189911c825c302eb +Block 0002 [ 45]: 60e2164c39da5a7f +Block 0002 [ 46]: b27a85a209358502 +Block 0002 [ 47]: 1e1a71fac6640545 +Block 0002 [ 48]: 5f86db5fddde6641 +Block 0002 [ 49]: a183e0e4ad45bb17 +Block 0002 [ 50]: 5326fc28f8c52311 +Block 0002 [ 51]: ca76d903b860c5aa +Block 0002 [ 52]: 3f15e4902a35d379 +Block 0002 [ 53]: 0b8eb6ba289ec0f9 +Block 0002 [ 54]: 9507ca02e069a05a +Block 0002 [ 55]: 61e21d6c08e494b9 +Block 0002 [ 56]: 505b52f1a764340f +Block 0002 [ 57]: 9d7b12f00bb712b6 +Block 0002 [ 58]: 08e4cc9a9d6af979 +Block 0002 [ 59]: 885db0825a30acc6 +Block 0002 [ 60]: 4ac721007866bb40 +Block 0002 [ 61]: 35ebcebaa1754249 +Block 0002 [ 62]: 8ec3842db1d07b56 +Block 0002 [ 63]: 8c2bba8b54d248a4 +Block 0002 [ 64]: 73e4883914fd19f1 +Block 0002 [ 65]: a53eddc4cb8cab79 +Block 0002 [ 66]: 77ceae67ac3b62f6 +Block 0002 [ 67]: 60bbb32043d74028 +Block 0002 [ 68]: e2a4e36e43f74ff7 +Block 0002 [ 69]: 71909946ab7773d1 +Block 0002 [ 70]: 7b5acff55fbb7dfb +Block 0002 [ 71]: c794dfa7065f2c47 +Block 0002 [ 72]: 66af2decb5329261 +Block 0002 [ 73]: c384d12af9f93a8d +Block 0002 [ 74]: ff80a743def4f0d0 +Block 0002 [ 75]: 10cbb8eac2d1ad4c +Block 0002 [ 76]: 546181544e57eca5 +Block 0002 [ 77]: 32110a65918a7e2d +Block 0002 [ 78]: ec276d8f8c71a33c +Block 0002 [ 79]: f11461667246342f +Block 0002 [ 80]: da2610422692be8e +Block 0002 [ 81]: b932777284ab93ed +Block 0002 [ 82]: 39e843b0a462f822 +Block 0002 [ 83]: 56be82271e70a6f1 +Block 0002 [ 84]: 394e12432c8d1f14 +Block 0002 [ 85]: b50f3562e448dd1a +Block 0002 [ 86]: d7c13dcd7fb4369d +Block 0002 [ 87]: 5c137edb4d11128f +Block 0002 [ 88]: 496401fc2b3a0dca +Block 0002 [ 89]: 20dcd790fd23aec6 +Block 0002 [ 90]: 38a0cceecad50c53 +Block 0002 [ 91]: 2a36cb7180d23f3b +Block 0002 [ 92]: 06a936f29ee07f91 +Block 0002 [ 93]: 679b87be6661c48a +Block 0002 [ 94]: 3104acb9c9416273 +Block 0002 [ 95]: 62cdeaadccd66f6e +Block 0002 [ 96]: 675596e72b20db7e +Block 0002 [ 97]: df51b05fa30443d7 +Block 0002 [ 98]: e550f147d18fa4f8 +Block 0002 [ 99]: b7c92884f699b00e +Block 0002 [100]: 3971bfe495111ddc +Block 0002 [101]: be6c841f9298b987 +Block 0002 [102]: 36264fdf4d66cc1e +Block 0002 [103]: 3966c703cdd2876b +Block 0002 [104]: 31072cbb07905072 +Block 0002 [105]: bb5cb679fd65f45c +Block 0002 [106]: 428bfa358e73473b +Block 0002 [107]: 9a2642a566a546ae +Block 0002 [108]: 0d3de325716c09f2 +Block 0002 [109]: 7b2b9773aff01a0e +Block 0002 [110]: 4cbd6f15e2746305 +Block 0002 [111]: 3d36f63c2c825d13 +Block 0002 [112]: a554238bf607ba3c +Block 0002 [113]: 7a86a81e929f9d6c +Block 0002 [114]: 8cf93c67a08a5915 +Block 0002 [115]: f48891bd8223a8b3 +Block 0002 [116]: aaee89560ce32e57 +Block 0002 [117]: a65fdc297527cff5 +Block 0002 [118]: 5d4054b589611c4b +Block 0002 [119]: efc6f60b84cca568 +Block 0002 [120]: 2db2e8633528bffb +Block 0002 [121]: d32c09564b09f418 +Block 0002 [122]: ebfa0176bb5954f4 +Block 0002 [123]: 72244abd8cc810bc +Block 0002 [124]: d156dc75cad947e7 +Block 0002 [125]: 620bd5bd6831dc75 +Block 0002 [126]: be69b12e194293b6 +Block 0002 [127]: 899f2fee213f1de9 +Block 0003 [ 0]: fb56a6f3add6fbf5 +Block 0003 [ 1]: 0f70eeb79f04a036 +Block 0003 [ 2]: 21988c987d9a6bae +Block 0003 [ 3]: 520bceff7462ace7 +Block 0003 [ 4]: ad909e68c1f012ff +Block 0003 [ 5]: b0dea9d56bd02153 +Block 0003 [ 6]: 66c1d56a4bcd3c3d +Block 0003 [ 7]: edf4eb0acb6c312f +Block 0003 [ 8]: 812f098eb3f51d98 +Block 0003 [ 9]: cb57986e6a080edf +Block 0003 [ 10]: 3ff9cf96daa45e5e +Block 0003 [ 11]: f03a603e2493f062 +Block 0003 [ 12]: 3a9bd9a68d202e97 +Block 0003 [ 13]: 570a6752c0c5cb3f +Block 0003 [ 14]: 6e3ff8cfde441c1e +Block 0003 [ 15]: b9a2c0d8bd8578ff +Block 0003 [ 16]: 4b8d7ef427d31ae9 +Block 0003 [ 17]: 065cf6acfd5b2e03 +Block 0003 [ 18]: c63a2ced88f063b9 +Block 0003 [ 19]: 5de62ee0f73c89d0 +Block 0003 [ 20]: c205637146f8c78c +Block 0003 [ 21]: 53ffa1ca2347257e +Block 0003 [ 22]: c9bbf7444d9deef3 +Block 0003 [ 23]: 6b214fc5d13ca15b +Block 0003 [ 24]: 1983a8131af7010f +Block 0003 [ 25]: 723598dddf1db8aa +Block 0003 [ 26]: d1f125036bb68c2e +Block 0003 [ 27]: 573314a277cbd46d +Block 0003 [ 28]: 8fb5257f38a0893d +Block 0003 [ 29]: 6f82aa350258358f +Block 0003 [ 30]: 0d70c253df3fced4 +Block 0003 [ 31]: e595ca4e326dde32 +Block 0003 [ 32]: 7c93535f19f04c44 +Block 0003 [ 33]: 06924354b5324a58 +Block 0003 [ 34]: beaa0c1a43bd5458 +Block 0003 [ 35]: a1d149ea16c1162b +Block 0003 [ 36]: 01640d4273b5839d +Block 0003 [ 37]: dce6b17485cb9db1 +Block 0003 [ 38]: c89a52747f1821f5 +Block 0003 [ 39]: 30bb832e0f53e158 +Block 0003 [ 40]: 1a0847008fd1b846 +Block 0003 [ 41]: 4cebde059f835332 +Block 0003 [ 42]: 0f034ddd0d4e4bc7 +Block 0003 [ 43]: cbe3528d589b6a73 +Block 0003 [ 44]: 6025d2bc3be52d8b +Block 0003 [ 45]: 5778af30e8c961a3 +Block 0003 [ 46]: 9692098526efbd5f +Block 0003 [ 47]: abf4049842746f89 +Block 0003 [ 48]: b1b779375f25ddc2 +Block 0003 [ 49]: b39ee648800d7f0e +Block 0003 [ 50]: 6ed0f992f6759f6a +Block 0003 [ 51]: 1214315851996819 +Block 0003 [ 52]: 07abf5656070323e +Block 0003 [ 53]: 18ac860f782bc9d2 +Block 0003 [ 54]: 980218218884d219 +Block 0003 [ 55]: 2f3fb9ad24298ab8 +Block 0003 [ 56]: 45a188a99b980d81 +Block 0003 [ 57]: 43f9bb24b34929f4 +Block 0003 [ 58]: eacc9f32423a06bf +Block 0003 [ 59]: 61d00561386621a0 +Block 0003 [ 60]: b64fd998ca28cc23 +Block 0003 [ 61]: e62e2aa17a058fcf +Block 0003 [ 62]: 4da3729542018be2 +Block 0003 [ 63]: 7523de30690d87ad +Block 0003 [ 64]: a0d414d97ff76659 +Block 0003 [ 65]: 94d80303cdccbe07 +Block 0003 [ 66]: b81ffe4a4e106cf6 +Block 0003 [ 67]: 41712d3a88f571aa +Block 0003 [ 68]: 9d011e543a5ce6e3 +Block 0003 [ 69]: 69d69c1e69e5f972 +Block 0003 [ 70]: f25a39ed9a7ec482 +Block 0003 [ 71]: 5832d4812c8c4c57 +Block 0003 [ 72]: 1211a9c54c07f790 +Block 0003 [ 73]: 5303c102e9b45c21 +Block 0003 [ 74]: 97457d5738540218 +Block 0003 [ 75]: acea58c384e21618 +Block 0003 [ 76]: b6259e5a7ceb3df8 +Block 0003 [ 77]: 440656da0f3ef414 +Block 0003 [ 78]: d8c484440162ecb9 +Block 0003 [ 79]: 64c335a57eb00044 +Block 0003 [ 80]: 6cecee1ae6bfa0b4 +Block 0003 [ 81]: 0ffc22fcf7b03663 +Block 0003 [ 82]: 540137e7b4398a11 +Block 0003 [ 83]: 7ddf5807771780d9 +Block 0003 [ 84]: 0363d76635de4e70 +Block 0003 [ 85]: 0abca167960b4b39 +Block 0003 [ 86]: fb65298a875c60c6 +Block 0003 [ 87]: 6346ea3ff20181c5 +Block 0003 [ 88]: cd51ada4f78050b5 +Block 0003 [ 89]: 2a43d4e2bf47b952 +Block 0003 [ 90]: acfcb3001f913635 +Block 0003 [ 91]: 411deab07c65ee19 +Block 0003 [ 92]: 1d189a46754809e4 +Block 0003 [ 93]: babf37efbf18c86c +Block 0003 [ 94]: f92fcdece817e247 +Block 0003 [ 95]: 873afe7217b7851d +Block 0003 [ 96]: 927eeadc8fadd290 +Block 0003 [ 97]: 7213c6ef9ca89f8f +Block 0003 [ 98]: 954d08698a03ddf0 +Block 0003 [ 99]: ccb51edd7f11262b +Block 0003 [100]: 6a498937058d4c78 +Block 0003 [101]: 4b14b8c5878e068e +Block 0003 [102]: ba12a7b03972114b +Block 0003 [103]: dff12621c17eca1f +Block 0003 [104]: 61fd0fea28e34153 +Block 0003 [105]: f06cdd41da132ef8 +Block 0003 [106]: 35acbb677a549a48 +Block 0003 [107]: ffd667b4c8e806f3 +Block 0003 [108]: 49200825235fbffd +Block 0003 [109]: 88e3019f9e034791 +Block 0003 [110]: 83c9e3abe3ea87fd +Block 0003 [111]: 6c3cea295a2565e1 +Block 0003 [112]: 538fb21149a66ed5 +Block 0003 [113]: d65d2f8b53a9106b +Block 0003 [114]: f483d2cebd16dec2 +Block 0003 [115]: 5c2e9fc4f7bd8e5d +Block 0003 [116]: 0f2bf6a3814c58d8 +Block 0003 [117]: 94e762719e799f4d +Block 0003 [118]: 7906a64262e02bde +Block 0003 [119]: d278e23ff953b7cd +Block 0003 [120]: c389950788607700 +Block 0003 [121]: c415165302ce18fc +Block 0003 [122]: c00a856c40f4c8bf +Block 0003 [123]: 9d8693388f6c4448 +Block 0003 [124]: e3bf742527c158dc +Block 0003 [125]: 78f831362f7dc9d8 +Block 0003 [126]: 21b0450a4a162590 +Block 0003 [127]: 9f14702133338041 +Block 0004 [ 0]: 1f4bfff1169c239e +Block 0004 [ 1]: 7826a84aebd08cb9 +Block 0004 [ 2]: 77b687cdebbb8252 +Block 0004 [ 3]: bb622856ff91cfc5 +Block 0004 [ 4]: 1cb853de37e58f4c +Block 0004 [ 5]: 8ab731ee056473c1 +Block 0004 [ 6]: 7cc452a31f71474c +Block 0004 [ 7]: 7e6af8625ebbcad5 +Block 0004 [ 8]: 94b7a53c75f01f3f +Block 0004 [ 9]: 24ac4e19a5c0fb37 +Block 0004 [ 10]: 59ea871a2ad1e802 +Block 0004 [ 11]: a19069ea084df0d7 +Block 0004 [ 12]: 15c55a1d96698e7a +Block 0004 [ 13]: 50ee5f96169dc765 +Block 0004 [ 14]: feebfdf9c4e8c14d +Block 0004 [ 15]: 109dbc84bbae0c77 +Block 0004 [ 16]: 7980f4474000e12c +Block 0004 [ 17]: 7bfb1e76fae72ecf +Block 0004 [ 18]: 80202573c08d0304 +Block 0004 [ 19]: 690dacc76d735f59 +Block 0004 [ 20]: ef7e52019560e447 +Block 0004 [ 21]: 6600da7a6bf6125c +Block 0004 [ 22]: c24d2e58a8e90406 +Block 0004 [ 23]: 712b9c2015d10024 +Block 0004 [ 24]: df63b5ad68463243 +Block 0004 [ 25]: 1b9039493b5dfb54 +Block 0004 [ 26]: caf0ccf6b4216f1e +Block 0004 [ 27]: 8387560fa1ba0168 +Block 0004 [ 28]: 30436beed598ccef +Block 0004 [ 29]: 542cba1ef2ef1b4f +Block 0004 [ 30]: e2830b7cd8a885f4 +Block 0004 [ 31]: 3c783826b3557628 +Block 0004 [ 32]: bb7d60801f02ad76 +Block 0004 [ 33]: cc354aa998635e97 +Block 0004 [ 34]: 5a2c1af11968c3b4 +Block 0004 [ 35]: da0a5a4d4e7a0d25 +Block 0004 [ 36]: 905dfde8c9f5931e +Block 0004 [ 37]: e0d86aaf2bdc0a00 +Block 0004 [ 38]: 875f10db09de687e +Block 0004 [ 39]: d3acbd2b9691eebb +Block 0004 [ 40]: 0f4ab9500d27b7f6 +Block 0004 [ 41]: d769190449856fa2 +Block 0004 [ 42]: f71772fb0b6e1757 +Block 0004 [ 43]: 1971206973bd9365 +Block 0004 [ 44]: 51e23fe410819a38 +Block 0004 [ 45]: 1d58d69319e63a56 +Block 0004 [ 46]: f59e3060ed85225b +Block 0004 [ 47]: b4487ec84cd0746e +Block 0004 [ 48]: c2348b990c23dbb1 +Block 0004 [ 49]: 38c5c34f0a61b67a +Block 0004 [ 50]: ee9f2cc1650a9172 +Block 0004 [ 51]: 5746f1fd8fdf085b +Block 0004 [ 52]: 43c65f28351411cd +Block 0004 [ 53]: 1bf0c575dd03cc83 +Block 0004 [ 54]: 89fd5da38d99f58a +Block 0004 [ 55]: bb776e8c70834de0 +Block 0004 [ 56]: bf0f2292e55ec916 +Block 0004 [ 57]: d9d98cd9eebac545 +Block 0004 [ 58]: 58d5ca66c32ce98b +Block 0004 [ 59]: 4a457a8f1c16a8ac +Block 0004 [ 60]: 4b2d30b9453fac13 +Block 0004 [ 61]: 80dd455f23308749 +Block 0004 [ 62]: 7b8e9c21befca460 +Block 0004 [ 63]: 382d5f6f88bb45c6 +Block 0004 [ 64]: 5446ac8c9a13aa21 +Block 0004 [ 65]: 5af8a4bf1be1404b +Block 0004 [ 66]: 4bed69e773c3bc33 +Block 0004 [ 67]: de21f3f20c01e245 +Block 0004 [ 68]: 07947acd343ff718 +Block 0004 [ 69]: a3273639f6aa2e86 +Block 0004 [ 70]: 81af6e7d148105fa +Block 0004 [ 71]: 6d2a2d27c0240158 +Block 0004 [ 72]: 230228f9486c7d5f +Block 0004 [ 73]: d0f9502d095d1d61 +Block 0004 [ 74]: eda1dfc0163868ba +Block 0004 [ 75]: fba2e329e4b590a9 +Block 0004 [ 76]: 7e3981f5c94a32f4 +Block 0004 [ 77]: aebbf3e39f176adb +Block 0004 [ 78]: 286ca52dfb323f51 +Block 0004 [ 79]: 833cf31e0d466e90 +Block 0004 [ 80]: 4e300c1e306b8f13 +Block 0004 [ 81]: 824b53333fced271 +Block 0004 [ 82]: edf34cd945d7210b +Block 0004 [ 83]: 43038b680e9dffe3 +Block 0004 [ 84]: 2f9fb7b082d9c219 +Block 0004 [ 85]: 619bf28703df87b7 +Block 0004 [ 86]: fda84f7ae8ae73ac +Block 0004 [ 87]: 39ec5d049200ec6a +Block 0004 [ 88]: b7bee34b3af6a88f +Block 0004 [ 89]: 393690efa5e2fcec +Block 0004 [ 90]: 07a885a1ab63f35d +Block 0004 [ 91]: 094cf25fe38b00d2 +Block 0004 [ 92]: 7938fde0ce831763 +Block 0004 [ 93]: fa548a2a97932eac +Block 0004 [ 94]: ca747928b037d4e2 +Block 0004 [ 95]: d8052573416f9a31 +Block 0004 [ 96]: 3e61a2127a36ea9b +Block 0004 [ 97]: 19ea0b3a6cf1c9a2 +Block 0004 [ 98]: 4e83b355bc86006e +Block 0004 [ 99]: aacd8df333ea6d30 +Block 0004 [100]: b6bfd76c58c3d60d +Block 0004 [101]: c7d73525add3bd57 +Block 0004 [102]: cad6fe5d1b06a2c1 +Block 0004 [103]: c4ab56c924fe5b08 +Block 0004 [104]: dbe4e0b763bb6bb1 +Block 0004 [105]: c19c86942ec530fb +Block 0004 [106]: e888bb27b3995932 +Block 0004 [107]: 30a878899a87c2a4 +Block 0004 [108]: 42b160bf69b804c3 +Block 0004 [109]: 1b662e82f5ff668f +Block 0004 [110]: 400b9463e2b70039 +Block 0004 [111]: 0c42792dd517f120 +Block 0004 [112]: e5d2783bc74b1db1 +Block 0004 [113]: 616271ebb481803c +Block 0004 [114]: ce397db1ea2f109e +Block 0004 [115]: ff2a4d9a41f27cfe +Block 0004 [116]: 143f5545c3cb7ac5 +Block 0004 [117]: 043d1e2315ee9b12 +Block 0004 [118]: c9c5db186171120c +Block 0004 [119]: 162d0f20feb42416 +Block 0004 [120]: 9a6ad48ba5165f31 +Block 0004 [121]: 2745f1f5d8a83383 +Block 0004 [122]: fb642a715308dcd9 +Block 0004 [123]: f4aaf8ef74a9fed0 +Block 0004 [124]: 277f46cda4ec5361 +Block 0004 [125]: 633e4dd91025d362 +Block 0004 [126]: bbaa459b3f915cb5 +Block 0004 [127]: 06be040c42f5364a +Block 0005 [ 0]: 56bc1f3296dd2ce5 +Block 0005 [ 1]: 8bc5ab8496de707e +Block 0005 [ 2]: d9644efa47808ffa +Block 0005 [ 3]: 8efe9e433a0c85e3 +Block 0005 [ 4]: 4a5df187ab89e42c +Block 0005 [ 5]: a152346eda240da5 +Block 0005 [ 6]: 6d2987077fb98c71 +Block 0005 [ 7]: 57a42e75ca3586c2 +Block 0005 [ 8]: 0a0ba506c7b76ee4 +Block 0005 [ 9]: 4fd130bc473ca0b8 +Block 0005 [ 10]: 9b29c4ac1d976010 +Block 0005 [ 11]: ff7913480eebda94 +Block 0005 [ 12]: dc9e218864ce3ef0 +Block 0005 [ 13]: 3cf7dbd1727b82b2 +Block 0005 [ 14]: a71c3c0ec3aea67b +Block 0005 [ 15]: 57a88ca0e5a824de +Block 0005 [ 16]: edc7720b0e811eef +Block 0005 [ 17]: e5deb23e00cd70d3 +Block 0005 [ 18]: 360f8b0603d3e05f +Block 0005 [ 19]: eecdf9fd77f4f367 +Block 0005 [ 20]: 5fd47b07a4fba1b8 +Block 0005 [ 21]: d7e7892acda87447 +Block 0005 [ 22]: d8a65351566b4cef +Block 0005 [ 23]: b448eea0fbe46f4f +Block 0005 [ 24]: c14fc4e53e7665bc +Block 0005 [ 25]: c5af40847ee10c41 +Block 0005 [ 26]: ec9a322dbbc80e10 +Block 0005 [ 27]: 62b8d071bb6df9e3 +Block 0005 [ 28]: ebdb4bd5139ec05f +Block 0005 [ 29]: 2cbb1cb894674200 +Block 0005 [ 30]: cbac9276b8d62258 +Block 0005 [ 31]: 340cb88843557dbb +Block 0005 [ 32]: 175bd4c2baa4574e +Block 0005 [ 33]: 1fc98675a50be7fe +Block 0005 [ 34]: 2a99f47a058fc17e +Block 0005 [ 35]: e79fd453fc8a698b +Block 0005 [ 36]: 3308cfa89a737ee6 +Block 0005 [ 37]: 4d874d35563f79c9 +Block 0005 [ 38]: 0901887475a16e95 +Block 0005 [ 39]: ca90d7075224fd56 +Block 0005 [ 40]: e9ccbba72c73f229 +Block 0005 [ 41]: 9a58978532de573f +Block 0005 [ 42]: 72a7c483199477fd +Block 0005 [ 43]: 74ae4a95aa86f679 +Block 0005 [ 44]: 39196e3bb0f9465a +Block 0005 [ 45]: 7e0aa61bebb4f8b7 +Block 0005 [ 46]: 3b3e4cf3c3767634 +Block 0005 [ 47]: 385568a115a4b7ba +Block 0005 [ 48]: ee475f11f508e361 +Block 0005 [ 49]: e2817d692ac425ca +Block 0005 [ 50]: 6bcb654d71ad29c6 +Block 0005 [ 51]: b8e0f8d40bd34cdc +Block 0005 [ 52]: 23e1122ed5fe525b +Block 0005 [ 53]: 118d441dd90d22d6 +Block 0005 [ 54]: 964d711ace56313d +Block 0005 [ 55]: 839a28506c08d638 +Block 0005 [ 56]: 1a9816a29d9ce7e5 +Block 0005 [ 57]: 61754f0576224d87 +Block 0005 [ 58]: 3e6408809e4e7de7 +Block 0005 [ 59]: a8f4a10955bf4406 +Block 0005 [ 60]: 94a63146fb256183 +Block 0005 [ 61]: 920c1b3d2c902b66 +Block 0005 [ 62]: 2df4b46832d03909 +Block 0005 [ 63]: b796e7fb9e6618fb +Block 0005 [ 64]: 973fa1e3eb5fb6ef +Block 0005 [ 65]: decdd1da1988d287 +Block 0005 [ 66]: d0753db3225995d5 +Block 0005 [ 67]: fee17a05a4e947ee +Block 0005 [ 68]: 0ca155fc78aa8be7 +Block 0005 [ 69]: 5cec59b99faac731 +Block 0005 [ 70]: bde7a1777f4dcb64 +Block 0005 [ 71]: 902be95825b61c51 +Block 0005 [ 72]: 401aff6e1f334c13 +Block 0005 [ 73]: ca46b2a0c1072b10 +Block 0005 [ 74]: cb7b0928958fb7e4 +Block 0005 [ 75]: 7ecc13ba897596cc +Block 0005 [ 76]: b1fa2e9e2fdfdf4b +Block 0005 [ 77]: a7c61a3b18ce9503 +Block 0005 [ 78]: e30fa55955465c83 +Block 0005 [ 79]: a099c26f48aea2d2 +Block 0005 [ 80]: 489b23555922b0cd +Block 0005 [ 81]: 275e8c7c9e772d38 +Block 0005 [ 82]: 173510ec47a69499 +Block 0005 [ 83]: 7cd31916cc558393 +Block 0005 [ 84]: 3f30016de11fafaa +Block 0005 [ 85]: f5b2e0ba7f14b171 +Block 0005 [ 86]: bfef8224ae7a0a51 +Block 0005 [ 87]: 8de95384bae75e40 +Block 0005 [ 88]: 3b666c78a48b30d0 +Block 0005 [ 89]: fd2321a748238c90 +Block 0005 [ 90]: 69fdab228d29478a +Block 0005 [ 91]: e0103afd01ceacd7 +Block 0005 [ 92]: 8b9ea3e23dd777e9 +Block 0005 [ 93]: 08635e8e5113bb4a +Block 0005 [ 94]: 3d315ca4675a44b1 +Block 0005 [ 95]: b20e22e6f65e1102 +Block 0005 [ 96]: a038d3ea447aa7fe +Block 0005 [ 97]: 0882a3723c4de776 +Block 0005 [ 98]: 575df4bf97ea305b +Block 0005 [ 99]: d98ea42ef107f0f0 +Block 0005 [100]: 0cba1d48f83867e7 +Block 0005 [101]: 649696d1781d2d95 +Block 0005 [102]: 9510c80999da84f7 +Block 0005 [103]: ce2f3c2d0f0d3ce2 +Block 0005 [104]: 2f30fa615e5a6c65 +Block 0005 [105]: 3c8589ad2c05e3e6 +Block 0005 [106]: c3576d16bf3517eb +Block 0005 [107]: 9b74bfbfe2f00fdf +Block 0005 [108]: b790e014dad1acdd +Block 0005 [109]: 29487c81893a5b04 +Block 0005 [110]: 4cc9f4f313fd7fc4 +Block 0005 [111]: a04f0d2766655766 +Block 0005 [112]: 0902eed758e7d367 +Block 0005 [113]: b1fcd9d76e1b30c8 +Block 0005 [114]: aa4f588a3a4aac13 +Block 0005 [115]: 0e57ff97e192f16e +Block 0005 [116]: 570393a65214975e +Block 0005 [117]: fe2abc9fb39a3db3 +Block 0005 [118]: 5833d62b97534288 +Block 0005 [119]: 452997ed754f9159 +Block 0005 [120]: 5befe711f63a4ed4 +Block 0005 [121]: f7ec83aff1f3c8ef +Block 0005 [122]: bbb5bd1ed3e4a6b5 +Block 0005 [123]: 45589b32b3e51e9d +Block 0005 [124]: 5fcd06dcf0473856 +Block 0005 [125]: c450164cff4ffeae +Block 0005 [126]: c64495c818121aa9 +Block 0005 [127]: 9fc7e86dc33cd2f3 +Block 0006 [ 0]: 6a3b43a71fe61a9d +Block 0006 [ 1]: 65dc6f99a409b85f +Block 0006 [ 2]: 3bfb666d815258ae +Block 0006 [ 3]: f86ce9ab75ffde48 +Block 0006 [ 4]: 3314c1be16a6df50 +Block 0006 [ 5]: 4d306e1ec94e6edb +Block 0006 [ 6]: 43402b6d6db3fc24 +Block 0006 [ 7]: 7b0149cc45cfcd7b +Block 0006 [ 8]: f6bbdd7398ec689d +Block 0006 [ 9]: 238319ac77ccc6c6 +Block 0006 [ 10]: fc36c2be2be64d9a +Block 0006 [ 11]: b090143eeed5bde4 +Block 0006 [ 12]: b865b75955c172e0 +Block 0006 [ 13]: ac328bf104acb8c7 +Block 0006 [ 14]: 7ca6c932408f7981 +Block 0006 [ 15]: c48572b8cb7807b1 +Block 0006 [ 16]: ea7fd8ba0749e76f +Block 0006 [ 17]: eb0842a6a483c361 +Block 0006 [ 18]: 4cd81bc9b5b020b2 +Block 0006 [ 19]: e69b3e81d49cbb97 +Block 0006 [ 20]: cc2c403448ef287f +Block 0006 [ 21]: 5dbd5c6f2cc79089 +Block 0006 [ 22]: 8ce898ea5ed001b1 +Block 0006 [ 23]: a4a8fbf4399e580e +Block 0006 [ 24]: b266b33d76edabdd +Block 0006 [ 25]: 72861366950e1b06 +Block 0006 [ 26]: 12fb10321bf4e848 +Block 0006 [ 27]: 1483bf9793e16cac +Block 0006 [ 28]: bb3ad110fc9f9c9c +Block 0006 [ 29]: 7d9a1aa5cdab1074 +Block 0006 [ 30]: bf36d5753f1f3ad2 +Block 0006 [ 31]: 3467a9be322905a2 +Block 0006 [ 32]: 0e82a639e7b7e4d7 +Block 0006 [ 33]: 0e5ba0c9c730232e +Block 0006 [ 34]: 67184bbc003e15cb +Block 0006 [ 35]: 9b18396759ec49be +Block 0006 [ 36]: 663b4946e9a5969a +Block 0006 [ 37]: 410edc3cb9af3358 +Block 0006 [ 38]: b9df4e421d49fe3e +Block 0006 [ 39]: 7a438d221e257b59 +Block 0006 [ 40]: e0694ab5116881b9 +Block 0006 [ 41]: b73f3da5c0327d16 +Block 0006 [ 42]: ab045a79f78afe15 +Block 0006 [ 43]: dd4b109852035a50 +Block 0006 [ 44]: 82a051573f849056 +Block 0006 [ 45]: de6f5c7607962384 +Block 0006 [ 46]: 097933cffaf24632 +Block 0006 [ 47]: 2b80ece7ee4995a9 +Block 0006 [ 48]: 346dc5c2df8b4418 +Block 0006 [ 49]: eb61689e0bc584fd +Block 0006 [ 50]: b3bc2fa36dd52ef2 +Block 0006 [ 51]: 7822e567796619e5 +Block 0006 [ 52]: dfee366e46cf7b59 +Block 0006 [ 53]: a12c1e7450428bfc +Block 0006 [ 54]: c9df1ad369529065 +Block 0006 [ 55]: 83e046722a7ddf69 +Block 0006 [ 56]: 1e3d5f066847e240 +Block 0006 [ 57]: c640f33eb71ea4a6 +Block 0006 [ 58]: a462476761bc6aa7 +Block 0006 [ 59]: 9a9397e75b7e150c +Block 0006 [ 60]: c459d118bfadc25b +Block 0006 [ 61]: a53c8b75dce6dab0 +Block 0006 [ 62]: 10f1f11a7f7ae936 +Block 0006 [ 63]: c734b2a1de8c7b42 +Block 0006 [ 64]: 118e5468ccfd0f3c +Block 0006 [ 65]: ab57d27c81dacbb0 +Block 0006 [ 66]: 78d2e6c45ae1e7e3 +Block 0006 [ 67]: 5d27d4f803340141 +Block 0006 [ 68]: 96c66baf2f146389 +Block 0006 [ 69]: e566ced7ba2cddae +Block 0006 [ 70]: 3c012d4bd72c0348 +Block 0006 [ 71]: baf38d9b8e04daff +Block 0006 [ 72]: f6feed25399edac5 +Block 0006 [ 73]: 478b5cc3dcd96f42 +Block 0006 [ 74]: ae74579919b6fc92 +Block 0006 [ 75]: 51fc1fa68ac1f1db +Block 0006 [ 76]: fa3ed06ccadd40b5 +Block 0006 [ 77]: 1db8e7cd61efa227 +Block 0006 [ 78]: b3cfa541a286c6c3 +Block 0006 [ 79]: 3272804c4fe3bf91 +Block 0006 [ 80]: 0080c0901626b2fa +Block 0006 [ 81]: af0da6e3aead2853 +Block 0006 [ 82]: 7e21db22722f0e3c +Block 0006 [ 83]: ab683cc97e8da7db +Block 0006 [ 84]: 27263c6eac0c9972 +Block 0006 [ 85]: ceccc3f5227ea80a +Block 0006 [ 86]: 01831837084a501b +Block 0006 [ 87]: 70b067419f21b827 +Block 0006 [ 88]: 65cea757322ba00c +Block 0006 [ 89]: 41c1a0ff8b0c3f32 +Block 0006 [ 90]: 3712715a850f2838 +Block 0006 [ 91]: 2ac61cb666e74a4a +Block 0006 [ 92]: 493189c0f8d7596d +Block 0006 [ 93]: e2bb69d85549becf +Block 0006 [ 94]: 51c73d8bf21898ee +Block 0006 [ 95]: bdb01d4cae47277f +Block 0006 [ 96]: bc2a923ed80017d4 +Block 0006 [ 97]: 87a1c6c4d38c5e8e +Block 0006 [ 98]: 4cd2b7721dca75ea +Block 0006 [ 99]: 1b7ea031a5808da9 +Block 0006 [100]: feb8ddd109ac72b9 +Block 0006 [101]: c4130e2bf97ea60d +Block 0006 [102]: c63b7d61a4388b9c +Block 0006 [103]: 314db246c472fea4 +Block 0006 [104]: cb33dc35d7857304 +Block 0006 [105]: 9c79fae6464d9639 +Block 0006 [106]: 370775c05750999a +Block 0006 [107]: cc59cd15aff3fcf9 +Block 0006 [108]: 72c7a887702ef86c +Block 0006 [109]: 2eba1082d8d310dc +Block 0006 [110]: e5df92c0479c82a7 +Block 0006 [111]: 925fd4e76d8f9aa9 +Block 0006 [112]: cf517f3178d8e581 +Block 0006 [113]: 58d49010da08f568 +Block 0006 [114]: 0b424f5aa96687e0 +Block 0006 [115]: 05937aa9fa4dbbc5 +Block 0006 [116]: e439bf60bb1ab810 +Block 0006 [117]: f6ed43b26a6e203f +Block 0006 [118]: e6fa12f52fe77030 +Block 0006 [119]: cca64264e6d574c0 +Block 0006 [120]: d777282f425ea35e +Block 0006 [121]: 06ffcf55bf74e8a9 +Block 0006 [122]: 4302e2530cef5824 +Block 0006 [123]: 101bb2ae18dbf8e7 +Block 0006 [124]: 35ed76e0f0d3521e +Block 0006 [125]: 707fd23042d46e34 +Block 0006 [126]: 8ad45ad78d5bd6b1 +Block 0006 [127]: 090f7d08b06abe8d +Block 0007 [ 0]: 59e479e05f916b33 +Block 0007 [ 1]: d170629134a24177 +Block 0007 [ 2]: c5a78cf1009b05c1 +Block 0007 [ 3]: 83a9dcb5e2ec7231 +Block 0007 [ 4]: 1616b9f12a99a638 +Block 0007 [ 5]: 02fbd63ddf2af667 +Block 0007 [ 6]: f5c20436df6ca8ca +Block 0007 [ 7]: 08cbe91a8e8b7aeb +Block 0007 [ 8]: e99eaa8eed7ad3c4 +Block 0007 [ 9]: 6d76bb05e62f8041 +Block 0007 [ 10]: 43417e37d6ac6c02 +Block 0007 [ 11]: ff20ea03c37e7778 +Block 0007 [ 12]: dcfc35fd7cb8b236 +Block 0007 [ 13]: 6e73ef79ad4921b5 +Block 0007 [ 14]: a128f0bbad4dc092 +Block 0007 [ 15]: 819290ea07d314a1 +Block 0007 [ 16]: 3233cce2c9759135 +Block 0007 [ 17]: f8dc66d2d321fb10 +Block 0007 [ 18]: 66902d9a98315fde +Block 0007 [ 19]: 9afbc0551c0d1f7e +Block 0007 [ 20]: d6e8f5ff43afebed +Block 0007 [ 21]: f95778ae0fc77151 +Block 0007 [ 22]: 1837f0f3b7a76f9d +Block 0007 [ 23]: 605f3328875eec26 +Block 0007 [ 24]: 1eb6a84483461d88 +Block 0007 [ 25]: 21298bbe36e17930 +Block 0007 [ 26]: 1a8829e5cabfe38b +Block 0007 [ 27]: b9edb6a15d084218 +Block 0007 [ 28]: 85746018776d8a75 +Block 0007 [ 29]: bde38b66cb6021e3 +Block 0007 [ 30]: bc642e63ab6a6c04 +Block 0007 [ 31]: e76312b76b9a6c68 +Block 0007 [ 32]: e43d533d4d6c4221 +Block 0007 [ 33]: fc0bcfda1ea9bdc0 +Block 0007 [ 34]: e4005e3b2d530103 +Block 0007 [ 35]: b3b9e8837034900f +Block 0007 [ 36]: dfe56aa81655556e +Block 0007 [ 37]: 8ad6a320388c6d3f +Block 0007 [ 38]: 9ae987a2539bd378 +Block 0007 [ 39]: 1576f25b6c489173 +Block 0007 [ 40]: ec1a591044807eae +Block 0007 [ 41]: 0f99146dc1860c2b +Block 0007 [ 42]: 536637bf1e4fe122 +Block 0007 [ 43]: f4999739b04901e1 +Block 0007 [ 44]: 650f99cf58618218 +Block 0007 [ 45]: 9a1ae560b1ac7f46 +Block 0007 [ 46]: 80cf15b71c2fb100 +Block 0007 [ 47]: 124cd01eab0338ab +Block 0007 [ 48]: 046fe5ecba1b7e0f +Block 0007 [ 49]: f74a03ad56db554a +Block 0007 [ 50]: 8153889b066fb09c +Block 0007 [ 51]: 283033056c99b707 +Block 0007 [ 52]: 0c21b5f77978d727 +Block 0007 [ 53]: 866031cd62857a99 +Block 0007 [ 54]: 6f97e8f3138a4e11 +Block 0007 [ 55]: c8d25173bc0a3c50 +Block 0007 [ 56]: 82ca24fa507cbf0c +Block 0007 [ 57]: c357faf33c66cfcf +Block 0007 [ 58]: 064f0616fccfd6a5 +Block 0007 [ 59]: 9bf3f89a6d1354f3 +Block 0007 [ 60]: cc7cff8a4d27620b +Block 0007 [ 61]: c9fb56f1b1669a97 +Block 0007 [ 62]: a89f350519d56943 +Block 0007 [ 63]: 5c400048568d631d +Block 0007 [ 64]: a96bf018d584151f +Block 0007 [ 65]: 0a3035ab955a79a5 +Block 0007 [ 66]: a19d60cbbe48f711 +Block 0007 [ 67]: f5b135b6f8c2e8a6 +Block 0007 [ 68]: 33270a12add9e641 +Block 0007 [ 69]: 8c224ab20be246e3 +Block 0007 [ 70]: 60df4727935eb9ce +Block 0007 [ 71]: 9b5141d124ec88cf +Block 0007 [ 72]: bcf91ee278b6e202 +Block 0007 [ 73]: 3dcd55a57ff9f5eb +Block 0007 [ 74]: 1dce42dba8d41d03 +Block 0007 [ 75]: 6f383dd35cdec94e +Block 0007 [ 76]: 36ce0d873d5c1de8 +Block 0007 [ 77]: 26d0c0004b6f19c4 +Block 0007 [ 78]: e618af3d62fee3a5 +Block 0007 [ 79]: 345492f55b4e985c +Block 0007 [ 80]: 6e4a85c1607b2c4b +Block 0007 [ 81]: 52dd856c7bb5efa4 +Block 0007 [ 82]: 52dcb46b9c209104 +Block 0007 [ 83]: 32717127c3ee487a +Block 0007 [ 84]: 312697b5cf52940e +Block 0007 [ 85]: 2dcb97fcc018a163 +Block 0007 [ 86]: 177d895c77466d2f +Block 0007 [ 87]: 6e61c547bfb37079 +Block 0007 [ 88]: a59b315fa1be5b68 +Block 0007 [ 89]: 87d66bc90afb2ca6 +Block 0007 [ 90]: 8cf85500edeee702 +Block 0007 [ 91]: ecbbab4d2133b00c +Block 0007 [ 92]: b26d33321ac1abc3 +Block 0007 [ 93]: b4a52773a6207e7d +Block 0007 [ 94]: a209c5896bc6f12a +Block 0007 [ 95]: 41fb84a301cff0c3 +Block 0007 [ 96]: 09cdf552c77b557d +Block 0007 [ 97]: 1e52df18ab3dfb9a +Block 0007 [ 98]: 57fd74a68ad68378 +Block 0007 [ 99]: 07227e916b0f5996 +Block 0007 [100]: 32ef2531400d1b35 +Block 0007 [101]: 4fc2dc41f7b23ff4 +Block 0007 [102]: 0b020da0feb2a228 +Block 0007 [103]: 5cfc2db650991a48 +Block 0007 [104]: f81c0cd56cb9c08f +Block 0007 [105]: e60e21da2ebb7ce8 +Block 0007 [106]: 268739ac9bca060a +Block 0007 [107]: 92cd1e2104e368c5 +Block 0007 [108]: 98156dc095f52233 +Block 0007 [109]: 30f247cf0f011fa1 +Block 0007 [110]: 66f829551d2e0a3e +Block 0007 [111]: ea52274d79ff571e +Block 0007 [112]: acb6d370148653a4 +Block 0007 [113]: 3669b3147dfe731a +Block 0007 [114]: 1c8bdda97133b4ad +Block 0007 [115]: 0cc5dd86167dbc1b +Block 0007 [116]: dd0aa6d96f923c39 +Block 0007 [117]: 512fe7564b090b61 +Block 0007 [118]: c86816c60da06a46 +Block 0007 [119]: dedf55b9d5f4268e +Block 0007 [120]: d29c4a93d713b733 +Block 0007 [121]: f87604f8f94f5aea +Block 0007 [122]: 97d9788450105075 +Block 0007 [123]: 54e489cefdbfb9e0 +Block 0007 [124]: 934701adf12d8e81 +Block 0007 [125]: 95bc8d473335a595 +Block 0007 [126]: fab387b04eacbaaf +Block 0007 [127]: fc3e56a297370c38 +Block 0008 [ 0]: 282145945f12ecd3 +Block 0008 [ 1]: 1ac1aa0b5c30acd6 +Block 0008 [ 2]: 60f8604f21e73053 +Block 0008 [ 3]: 763bbde8b3025afe +Block 0008 [ 4]: 19813cdc34768a0d +Block 0008 [ 5]: 6c91e7d7cca6e347 +Block 0008 [ 6]: 3f049f472508cc53 +Block 0008 [ 7]: e0ffa88d72bebdc2 +Block 0008 [ 8]: de17f817893dfa9c +Block 0008 [ 9]: 2d63b8df6cdea739 +Block 0008 [ 10]: a7d7bc228a9b0279 +Block 0008 [ 11]: f07ab3a91ba1cba8 +Block 0008 [ 12]: 41a0157563872217 +Block 0008 [ 13]: c109c12ad61ddba8 +Block 0008 [ 14]: ecb3deb6a4142e08 +Block 0008 [ 15]: 2a932539267a41ae +Block 0008 [ 16]: 6d3a62fc8d00e500 +Block 0008 [ 17]: f0e439bef2eb6c6e +Block 0008 [ 18]: 1dd011595308ac57 +Block 0008 [ 19]: d60a8d118a649d8d +Block 0008 [ 20]: 37af5bc5a580eeed +Block 0008 [ 21]: 547777804b31ac21 +Block 0008 [ 22]: ceeaa2b7bc51f419 +Block 0008 [ 23]: 680d345e4dfeffa3 +Block 0008 [ 24]: 3047a84a4e3c615f +Block 0008 [ 25]: fc7b6f9717120164 +Block 0008 [ 26]: a106a1af037e2478 +Block 0008 [ 27]: f1d93c81c3d5999e +Block 0008 [ 28]: f5a65b33b2538b91 +Block 0008 [ 29]: 934f66c72c8f525d +Block 0008 [ 30]: dae4e5dffbac54bc +Block 0008 [ 31]: afb603ae332283d2 +Block 0008 [ 32]: af3f345a59ad6951 +Block 0008 [ 33]: bb3ecdfb2eb1d571 +Block 0008 [ 34]: 5ccc9de9818c13d0 +Block 0008 [ 35]: faf5de9da827896e +Block 0008 [ 36]: 952eb0543c6eaa82 +Block 0008 [ 37]: 2137bd47cd8e8d2e +Block 0008 [ 38]: 4767e8759b44592d +Block 0008 [ 39]: 7d5c195b08c35bf9 +Block 0008 [ 40]: 070453b9d1fa6fe1 +Block 0008 [ 41]: 210fb2c38527d6a2 +Block 0008 [ 42]: 6d0e9f7449f23c3e +Block 0008 [ 43]: bac26f89bffad658 +Block 0008 [ 44]: 25ac007e672ee346 +Block 0008 [ 45]: a3c85973642a0166 +Block 0008 [ 46]: 3a925b7f8ad6e011 +Block 0008 [ 47]: 15e0badde1d99090 +Block 0008 [ 48]: 42bf9c540f2e1394 +Block 0008 [ 49]: c2029ee97cd9c915 +Block 0008 [ 50]: 1927c36c7f975006 +Block 0008 [ 51]: 73fa08166e0f1951 +Block 0008 [ 52]: 1aa1638331153336 +Block 0008 [ 53]: a0d8ba67e8d3832c +Block 0008 [ 54]: 5a35f3574b0ecadc +Block 0008 [ 55]: b29d225c180b9d7f +Block 0008 [ 56]: e360ba0f450119ef +Block 0008 [ 57]: 0451064565c02bc1 +Block 0008 [ 58]: 3e41001b8b0e0bbd +Block 0008 [ 59]: 8ca745962358496c +Block 0008 [ 60]: 6fcee749ec5a01f4 +Block 0008 [ 61]: f74dc0b916dd8578 +Block 0008 [ 62]: d79d32fb1ac52b9a +Block 0008 [ 63]: 91c3f4695bb05f08 +Block 0008 [ 64]: aea5311cde98edcb +Block 0008 [ 65]: 29681dca687cb503 +Block 0008 [ 66]: 5ed29cfcf4a05c65 +Block 0008 [ 67]: 69996409342ed84f +Block 0008 [ 68]: 1eb369993397ea34 +Block 0008 [ 69]: abe7f5d61d819f02 +Block 0008 [ 70]: 128ac7ec2988131d +Block 0008 [ 71]: cbf98166be45c13b +Block 0008 [ 72]: 3eb0cc4cf3ffc15b +Block 0008 [ 73]: 4be0eb7cdc596327 +Block 0008 [ 74]: a53dfb2e9c4f1572 +Block 0008 [ 75]: 97628a447584028d +Block 0008 [ 76]: ad8efb47b9527bda +Block 0008 [ 77]: d898345e003d8bfc +Block 0008 [ 78]: aed572ff49f824da +Block 0008 [ 79]: effdfb03ca6d262b +Block 0008 [ 80]: 5c76b7e719d4b092 +Block 0008 [ 81]: 3fbc5d75533377a0 +Block 0008 [ 82]: c3e9be1e87fff04f +Block 0008 [ 83]: 6fd35d2bfd653013 +Block 0008 [ 84]: 8ae6fc6a2a959fe9 +Block 0008 [ 85]: 16c177dac219e4bb +Block 0008 [ 86]: b778cfd1541b7d86 +Block 0008 [ 87]: 71cdb864322493fd +Block 0008 [ 88]: c84ee1bb3002781c +Block 0008 [ 89]: cd3f3001e43f22f2 +Block 0008 [ 90]: ee0723c7e3fa57fa +Block 0008 [ 91]: 3b7905f9889f12ce +Block 0008 [ 92]: 201c9588c929d89e +Block 0008 [ 93]: b1537c7fb54bdfd3 +Block 0008 [ 94]: e258a3bc1d698cf3 +Block 0008 [ 95]: 83255c867a2e8677 +Block 0008 [ 96]: 0279b6538a409fcf +Block 0008 [ 97]: f74290c084079691 +Block 0008 [ 98]: 0632ffc7e37ad8d9 +Block 0008 [ 99]: a200d59ee03ea9d6 +Block 0008 [100]: 46803d61b515f08c +Block 0008 [101]: 6cf535987406656a +Block 0008 [102]: 3995a42c92cc7966 +Block 0008 [103]: 85df03e49bfe47d5 +Block 0008 [104]: 6cceb87dee9aa0c9 +Block 0008 [105]: fc9d31d40341a15e +Block 0008 [106]: 0a180adfadc6356c +Block 0008 [107]: 0e058b8ef724d830 +Block 0008 [108]: f2245297d8482ccf +Block 0008 [109]: b9f1451dc3145bbf +Block 0008 [110]: d0b4ffdea62b3e54 +Block 0008 [111]: 88212eb7971b3f49 +Block 0008 [112]: 10fedd9fe29e14bb +Block 0008 [113]: e3cbbff144f56d12 +Block 0008 [114]: 767f4fd28abed05a +Block 0008 [115]: a6b2027a43f64775 +Block 0008 [116]: ba11fb9502d4a9b6 +Block 0008 [117]: 89729444846e3174 +Block 0008 [118]: cc5ce515d1e99aae +Block 0008 [119]: d46cb5dcdecb9520 +Block 0008 [120]: eb33b12794818b53 +Block 0008 [121]: 6dc4bef6e24fdbfe +Block 0008 [122]: 79c4cad4c865e91a +Block 0008 [123]: f42028b04d0dbbd4 +Block 0008 [124]: 6b0fe2e42e2c8d5e +Block 0008 [125]: 6efc4e74787fb7ad +Block 0008 [126]: 62e777191870974b +Block 0008 [127]: b637d492fff7bf5b +Block 0009 [ 0]: b51ebc1ce5c54587 +Block 0009 [ 1]: f24cfd2d28416a55 +Block 0009 [ 2]: a56be5bda1d10f36 +Block 0009 [ 3]: 1a5f620482fa56e5 +Block 0009 [ 4]: c8cd41bdc76c0502 +Block 0009 [ 5]: 38253d2c027e8ff2 +Block 0009 [ 6]: 89af4f4315191f22 +Block 0009 [ 7]: 77cfcb90bfcb4c5c +Block 0009 [ 8]: 86dd4fda752a6933 +Block 0009 [ 9]: 478a200eb9585357 +Block 0009 [ 10]: 904df51f016d77d7 +Block 0009 [ 11]: 42f6090334873cf3 +Block 0009 [ 12]: 1d0acdb372df3f75 +Block 0009 [ 13]: 6d882e7dee617c83 +Block 0009 [ 14]: 903ec926348998cb +Block 0009 [ 15]: e77922f31cf1b89a +Block 0009 [ 16]: f1f1f3e73eec2745 +Block 0009 [ 17]: 5ba312d7d83b2883 +Block 0009 [ 18]: 5ff76517a1633867 +Block 0009 [ 19]: 41af74d8f12e3e1d +Block 0009 [ 20]: fdc04bd78cfa38a5 +Block 0009 [ 21]: 720cbde8e8dfd8fb +Block 0009 [ 22]: 346652d8064f3f80 +Block 0009 [ 23]: 317b0d033c38db97 +Block 0009 [ 24]: 718f7f0c4bf7e910 +Block 0009 [ 25]: e17fda1c6a8e6ec2 +Block 0009 [ 26]: 3884b2a7782be170 +Block 0009 [ 27]: 0b28a061c237c26e +Block 0009 [ 28]: adbb8d0872b20abf +Block 0009 [ 29]: 2fc555b807f6da68 +Block 0009 [ 30]: 2429a5e8fa7514a9 +Block 0009 [ 31]: dd89d41b0bfe36de +Block 0009 [ 32]: b7d1955a2e89df52 +Block 0009 [ 33]: 60a53a7e0095b3df +Block 0009 [ 34]: bbe12271d25326dd +Block 0009 [ 35]: 7383edb8add93339 +Block 0009 [ 36]: d2c1340e78b8eb9b +Block 0009 [ 37]: 48bb9b6bdddd1978 +Block 0009 [ 38]: bfc99101cf8a0151 +Block 0009 [ 39]: 2e3d430da5248b01 +Block 0009 [ 40]: 714972754e2a3b17 +Block 0009 [ 41]: 980bcc89c6b68d41 +Block 0009 [ 42]: b0bc1736129cd3da +Block 0009 [ 43]: b5e11d28394e62d4 +Block 0009 [ 44]: 66e520fd1c988ac5 +Block 0009 [ 45]: dedd7c5e4748fc1c +Block 0009 [ 46]: 996ff3699d168445 +Block 0009 [ 47]: dd6c882d28be792d +Block 0009 [ 48]: 8523e263ddc58b4a +Block 0009 [ 49]: 179e9ec6d8182cd1 +Block 0009 [ 50]: e9cef718f9504909 +Block 0009 [ 51]: 3b898f007e372a80 +Block 0009 [ 52]: 08a283c2f650064c +Block 0009 [ 53]: 810fefdccd438bda +Block 0009 [ 54]: d5e8770991d2486f +Block 0009 [ 55]: fc1ae28b281de523 +Block 0009 [ 56]: 736f486afd0d647a +Block 0009 [ 57]: bb2be00d646a5185 +Block 0009 [ 58]: 1ca35ad8ceb99210 +Block 0009 [ 59]: 48eacc4e7cb83759 +Block 0009 [ 60]: 3e1dcd336966003c +Block 0009 [ 61]: 9275a2b29941257c +Block 0009 [ 62]: 257e1a89c6d4c1cd +Block 0009 [ 63]: 8c8f67a882805a33 +Block 0009 [ 64]: e5fe75eda295409d +Block 0009 [ 65]: bfdcafe10fdb456f +Block 0009 [ 66]: 40ad88568c584e13 +Block 0009 [ 67]: fa20866a2766c7fe +Block 0009 [ 68]: b310c6d79e568ffb +Block 0009 [ 69]: 503d9253aff998e4 +Block 0009 [ 70]: 495f296b6b61f264 +Block 0009 [ 71]: beef0e82653e020f +Block 0009 [ 72]: be4811e8488ffd1e +Block 0009 [ 73]: 14fb1ffd5fd037e4 +Block 0009 [ 74]: 8afac21754fba78e +Block 0009 [ 75]: d8d9734e8005d3dc +Block 0009 [ 76]: bde1976942530836 +Block 0009 [ 77]: 5a36cfa5bc85404f +Block 0009 [ 78]: 3efcdd865f2ef595 +Block 0009 [ 79]: 8503f12ded4ba3a2 +Block 0009 [ 80]: 8b550ac564227c3c +Block 0009 [ 81]: 3b72f71db910d566 +Block 0009 [ 82]: bc422a71f193fb78 +Block 0009 [ 83]: ac534f6fc1e09dff +Block 0009 [ 84]: ad0b10c5fb42fc0b +Block 0009 [ 85]: 52a2d4dcf13d5e0a +Block 0009 [ 86]: df202d34863e7be9 +Block 0009 [ 87]: 09e4eb0e6fd242ac +Block 0009 [ 88]: cd33e3660e9c1a73 +Block 0009 [ 89]: b6e4d387310b7df0 +Block 0009 [ 90]: f1d8514afa7b45d3 +Block 0009 [ 91]: cf750fb315193dc3 +Block 0009 [ 92]: 0d1f7681fe88f783 +Block 0009 [ 93]: e2580891465c28f6 +Block 0009 [ 94]: 81edf01e45e5303a +Block 0009 [ 95]: 972e459a0b4b78a1 +Block 0009 [ 96]: 73d4b4cd70e66a45 +Block 0009 [ 97]: e8ae9b153e316496 +Block 0009 [ 98]: c5bf4b57c7ee3cf7 +Block 0009 [ 99]: 5f0e59387d54969e +Block 0009 [100]: 4f06752cd7252de1 +Block 0009 [101]: 8a206fbc01509988 +Block 0009 [102]: c9d48b8fbd5b7adc +Block 0009 [103]: dd331a619ec7fd24 +Block 0009 [104]: ce99e40346f40515 +Block 0009 [105]: bc258259f1ff919c +Block 0009 [106]: 3007e9ff3fe6a502 +Block 0009 [107]: 4c9bc60f05fe4dd6 +Block 0009 [108]: fcee0af0e0ab22b0 +Block 0009 [109]: 7bf90ecf20597b49 +Block 0009 [110]: 14c6e9adffbcb2cc +Block 0009 [111]: 57d24e03ac4a9495 +Block 0009 [112]: 6265cd2145acfcbb +Block 0009 [113]: 462777e67b621ec4 +Block 0009 [114]: d83e82f38e7f7089 +Block 0009 [115]: 8240ac135c1961cf +Block 0009 [116]: 9b5cfa591d26ff97 +Block 0009 [117]: 23fc3a587408818a +Block 0009 [118]: a406f4578dc58fca +Block 0009 [119]: 8997f1c33e411d00 +Block 0009 [120]: 8908c3f119cf398d +Block 0009 [121]: 7ca9090945d56951 +Block 0009 [122]: a3d87d8e207ed64d +Block 0009 [123]: 8ce2e01f7a194ebc +Block 0009 [124]: 70231c9ccdb58341 +Block 0009 [125]: 2b3dea3311b02815 +Block 0009 [126]: bdebaed5c4dc0a02 +Block 0009 [127]: 84af05b1e80139c5 +Block 0010 [ 0]: f173509e8c6951f0 +Block 0010 [ 1]: 5ecae05ac3a7f094 +Block 0010 [ 2]: 87b04b90fb412faf +Block 0010 [ 3]: 9d7a4584deb3c1bc +Block 0010 [ 4]: 938349d693eabff7 +Block 0010 [ 5]: e51daa894d1b1d86 +Block 0010 [ 6]: 7839e531eb3ef150 +Block 0010 [ 7]: dcc8bac832dd9263 +Block 0010 [ 8]: 503f31984a22a73d +Block 0010 [ 9]: 32dd0cf3b1a6f6da +Block 0010 [ 10]: 6232dd0ddf1f293a +Block 0010 [ 11]: c08cf7243d71db15 +Block 0010 [ 12]: 9dd223a71d553c7e +Block 0010 [ 13]: e705405f11c0c88a +Block 0010 [ 14]: a76cbcff056ea623 +Block 0010 [ 15]: 4211d6067c63e4ea +Block 0010 [ 16]: e38b95c43b6c8c42 +Block 0010 [ 17]: fa039b85f4e37025 +Block 0010 [ 18]: c7641d8b3c1d3d27 +Block 0010 [ 19]: a168373a6246e3b1 +Block 0010 [ 20]: 1c29f3c317d4a842 +Block 0010 [ 21]: 0e112c2b5002251c +Block 0010 [ 22]: 35edabf640a1a4be +Block 0010 [ 23]: fbece5e62986f45e +Block 0010 [ 24]: a0300d91ab35e389 +Block 0010 [ 25]: 2307aae53bb6cdff +Block 0010 [ 26]: 8ff7b4bbe121ebe8 +Block 0010 [ 27]: 9fa0f247c76473b3 +Block 0010 [ 28]: b3fba8860e65096e +Block 0010 [ 29]: bc5fae00925aa4bd +Block 0010 [ 30]: e45c0c1a94a0716e +Block 0010 [ 31]: 81e3abe71ec403bc +Block 0010 [ 32]: 8cf7ad3248baf5d4 +Block 0010 [ 33]: 42a689d358de4862 +Block 0010 [ 34]: 722e6ab07bb13dd4 +Block 0010 [ 35]: 4925a4d2c005727a +Block 0010 [ 36]: c15fd84720b2611a +Block 0010 [ 37]: d4d87de5205dfb30 +Block 0010 [ 38]: 22b28aa75745fc2d +Block 0010 [ 39]: 749dc8d5598179a6 +Block 0010 [ 40]: eeaa16e0659e0192 +Block 0010 [ 41]: fa25ab267613034e +Block 0010 [ 42]: 4508a5f87fe32a35 +Block 0010 [ 43]: 9540fef3fc000dac +Block 0010 [ 44]: 0541345b4b35787d +Block 0010 [ 45]: b6d197f33253019b +Block 0010 [ 46]: 40c00ee49dabe233 +Block 0010 [ 47]: 10dcffe3f4d84140 +Block 0010 [ 48]: 6f6504bd4202b80b +Block 0010 [ 49]: 4910aadb5d995e14 +Block 0010 [ 50]: 3be7598ad6b7b00f +Block 0010 [ 51]: 16d760387217d677 +Block 0010 [ 52]: 157c2603fb94d372 +Block 0010 [ 53]: 245a425507040bbd +Block 0010 [ 54]: 53119479f5874f90 +Block 0010 [ 55]: bf6f9b8692f0b837 +Block 0010 [ 56]: 0049c75dfc7dc720 +Block 0010 [ 57]: f238ae4395b094b4 +Block 0010 [ 58]: 2dcb2348df0bd8e1 +Block 0010 [ 59]: 3210cccdb289293f +Block 0010 [ 60]: 51c7facbf4d63c99 +Block 0010 [ 61]: eff7c07dfef9e59d +Block 0010 [ 62]: f2ab55b9e629297f +Block 0010 [ 63]: 8edf75faa3478b49 +Block 0010 [ 64]: 774ecc317f36cfe1 +Block 0010 [ 65]: db216cef5837ca17 +Block 0010 [ 66]: e9cd3059b825aae6 +Block 0010 [ 67]: f46039c3d87aeb33 +Block 0010 [ 68]: 420dd68f9b66827a +Block 0010 [ 69]: 34f07ae5e76d6e8a +Block 0010 [ 70]: d5ac5c911584d4cb +Block 0010 [ 71]: 058f82cec99756b0 +Block 0010 [ 72]: d11c2004749ba930 +Block 0010 [ 73]: 9f1ff374580eb6c0 +Block 0010 [ 74]: 9f957fa50da0b9f3 +Block 0010 [ 75]: 1c44951395918e91 +Block 0010 [ 76]: 7111b1a8aae6be7f +Block 0010 [ 77]: 0ab3388f275426ef +Block 0010 [ 78]: 26fc0217e12d62d0 +Block 0010 [ 79]: f2ce2aa321c90437 +Block 0010 [ 80]: 4fda333183fd6655 +Block 0010 [ 81]: e019af98f13ee4d9 +Block 0010 [ 82]: 6bab83f3f92f653b +Block 0010 [ 83]: ffee52f49e2f42a8 +Block 0010 [ 84]: f150c70d8514a7e6 +Block 0010 [ 85]: 806c48b29ace438b +Block 0010 [ 86]: 6c9f59490dc47c0c +Block 0010 [ 87]: d2da0113cc468eec +Block 0010 [ 88]: acd3870091fa11ae +Block 0010 [ 89]: b3349dd058479c88 +Block 0010 [ 90]: 9802b3b860a9a3cb +Block 0010 [ 91]: 00e0840446d6776e +Block 0010 [ 92]: 57ef8b24e3d3cd3e +Block 0010 [ 93]: 9eb466c964e0fe56 +Block 0010 [ 94]: 5a73a0ddbf0b8322 +Block 0010 [ 95]: bf5e064687ff3f2f +Block 0010 [ 96]: 5657e143ddc3b17c +Block 0010 [ 97]: fcf05095a8320084 +Block 0010 [ 98]: f9f69e9b630ee96a +Block 0010 [ 99]: f1c9e9bdbe357cdd +Block 0010 [100]: 77103f2471d037dc +Block 0010 [101]: 270fbe363e682e11 +Block 0010 [102]: e26bcc409254504e +Block 0010 [103]: f090445c6daa8d1d +Block 0010 [104]: f2b96cf4bd3aee9d +Block 0010 [105]: d4b5c4138079400b +Block 0010 [106]: 851896bd06456429 +Block 0010 [107]: b0e197d30c2302f0 +Block 0010 [108]: ad14c29915ce379d +Block 0010 [109]: f20a29201fb36736 +Block 0010 [110]: ea3f27b2e1aa01ef +Block 0010 [111]: ece60dc38bf94d59 +Block 0010 [112]: 4ff4f6bba8050abe +Block 0010 [113]: be89f5fb18df5156 +Block 0010 [114]: f44369b404835880 +Block 0010 [115]: 62e51fbf337ceb9a +Block 0010 [116]: 3e1079ced5348d06 +Block 0010 [117]: ebeedc4a3dd087bf +Block 0010 [118]: d26839c2654c02a1 +Block 0010 [119]: cb67fe217aa3fa9e +Block 0010 [120]: 2d9a64ea20bab5eb +Block 0010 [121]: d2685facf666715a +Block 0010 [122]: 70e5091ed6e07b6c +Block 0010 [123]: fb3438d9b59896ef +Block 0010 [124]: 45a3f4fb770aae6c +Block 0010 [125]: 34dcff3647fe618e +Block 0010 [126]: 317cdd9023e383f9 +Block 0010 [127]: e8a91e43c976159a +Block 0011 [ 0]: 1fd1594b82df1dfa +Block 0011 [ 1]: 8356d52c018e2d54 +Block 0011 [ 2]: 2b25d4c0ce6857dc +Block 0011 [ 3]: e38988c550171f57 +Block 0011 [ 4]: f256212a4b780db5 +Block 0011 [ 5]: 109671484ffeb0e1 +Block 0011 [ 6]: 07958db0c32c7ad7 +Block 0011 [ 7]: b5244109ffaec646 +Block 0011 [ 8]: 6deb9ce5497d4bbf +Block 0011 [ 9]: f6bd231e7e9e4664 +Block 0011 [ 10]: 0af37ff345afd9f3 +Block 0011 [ 11]: 4e116d808b9db908 +Block 0011 [ 12]: c14a0b50f20f7f5c +Block 0011 [ 13]: 015304b3b9c7b933 +Block 0011 [ 14]: 75938887ff2ed1f8 +Block 0011 [ 15]: d497584fe66718cb +Block 0011 [ 16]: 5f9c6abddfc3c763 +Block 0011 [ 17]: fccdaf55d21a649c +Block 0011 [ 18]: 64047640a2346f52 +Block 0011 [ 19]: 7f87cac3095edc21 +Block 0011 [ 20]: e316f30445340fe7 +Block 0011 [ 21]: 26b96f77308e2070 +Block 0011 [ 22]: cff78be364db6c6b +Block 0011 [ 23]: 557b2b82bfae51a1 +Block 0011 [ 24]: a54c3e902a240602 +Block 0011 [ 25]: 8d666deaaf8c83c3 +Block 0011 [ 26]: 7f4e040bf76908a8 +Block 0011 [ 27]: f6adecc892d33ab0 +Block 0011 [ 28]: 5fc73bd7e58f4a3e +Block 0011 [ 29]: a4d0cce01bbee3e0 +Block 0011 [ 30]: fb2d8fb79f6ab152 +Block 0011 [ 31]: 38e68dc30491f640 +Block 0011 [ 32]: 2c9de1778c5de4f6 +Block 0011 [ 33]: ace30ebb97b3bc42 +Block 0011 [ 34]: bffe6eb4b67452a8 +Block 0011 [ 35]: c78b6d4d48e23ddf +Block 0011 [ 36]: 7775c5958faa5a6c +Block 0011 [ 37]: 68014715c9f5e5ce +Block 0011 [ 38]: 898c95f1cde02893 +Block 0011 [ 39]: 13f5ea34f1732ec6 +Block 0011 [ 40]: 7318b943b749fa47 +Block 0011 [ 41]: 082e401cab2de318 +Block 0011 [ 42]: 4c32158ff923f585 +Block 0011 [ 43]: eef77621983721fb +Block 0011 [ 44]: 02d490a3209b78a7 +Block 0011 [ 45]: 8770be626e6e8c16 +Block 0011 [ 46]: 3ddf6df056b37443 +Block 0011 [ 47]: 44d477f220017c45 +Block 0011 [ 48]: 0466ab1b16d9daf0 +Block 0011 [ 49]: 6ddc70d233e22d85 +Block 0011 [ 50]: 63c9a17c29126f50 +Block 0011 [ 51]: a04bb2d97d9a6b41 +Block 0011 [ 52]: 019bd561e0b2a9c9 +Block 0011 [ 53]: 1d18fd9a1ba73242 +Block 0011 [ 54]: 88c4f53bf9e5ef1a +Block 0011 [ 55]: ff13b6aee469b983 +Block 0011 [ 56]: 5726af33d8098ff6 +Block 0011 [ 57]: d51ee36307e108d9 +Block 0011 [ 58]: eceb791278214d78 +Block 0011 [ 59]: 0145bc4302e4a279 +Block 0011 [ 60]: 103fc5eb0ca47ade +Block 0011 [ 61]: a0815229bbf5a6a1 +Block 0011 [ 62]: 152f5e569d9cd53a +Block 0011 [ 63]: 11f789c95adc2fd8 +Block 0011 [ 64]: 78c4c36d005d72b9 +Block 0011 [ 65]: 14c55c2f993804bc +Block 0011 [ 66]: f335bc41204c6a26 +Block 0011 [ 67]: a3b078547373e462 +Block 0011 [ 68]: 29fbcf862902747d +Block 0011 [ 69]: f526be07b3d4cd6d +Block 0011 [ 70]: 6cc9609dfade5ebc +Block 0011 [ 71]: 4f7efba69a0477a4 +Block 0011 [ 72]: dbabe545e63b086d +Block 0011 [ 73]: 4bc7c9a2eed311b7 +Block 0011 [ 74]: 64e54d8b1bab4a1f +Block 0011 [ 75]: d76fff4669327dfd +Block 0011 [ 76]: 321692d0e50cbb4b +Block 0011 [ 77]: aa32a5f7807d1935 +Block 0011 [ 78]: 4f5a8fbfcac5f52b +Block 0011 [ 79]: 60f86347392bbd97 +Block 0011 [ 80]: 74a612d2547ff8b8 +Block 0011 [ 81]: 86529138b37e41b1 +Block 0011 [ 82]: 07a56ff7d5df2923 +Block 0011 [ 83]: 48c0b2cd2c8ec937 +Block 0011 [ 84]: f25406b807d0509f +Block 0011 [ 85]: 7dd53859b3414d79 +Block 0011 [ 86]: a542f6bbc495ef25 +Block 0011 [ 87]: 467563dd0f231916 +Block 0011 [ 88]: 453396eac5ad4b1e +Block 0011 [ 89]: 54aaf9a724d9627d +Block 0011 [ 90]: 7f7a8d36b13cc862 +Block 0011 [ 91]: 9961e8e3fd191c9c +Block 0011 [ 92]: ba00227f9cbcaed2 +Block 0011 [ 93]: ae68b8273c755e87 +Block 0011 [ 94]: cdce8af651a75b3b +Block 0011 [ 95]: 839999074aab83eb +Block 0011 [ 96]: a3427e62f8a2fde7 +Block 0011 [ 97]: 5aa52a737e043106 +Block 0011 [ 98]: 140d77a072532183 +Block 0011 [ 99]: 1629c1497b7dca49 +Block 0011 [100]: 139701bbf30af41e +Block 0011 [101]: fa67c839cbd36888 +Block 0011 [102]: b93f013495c2fb7c +Block 0011 [103]: a780e94dc6aed270 +Block 0011 [104]: caf607bc55cedb65 +Block 0011 [105]: 101c942911ede959 +Block 0011 [106]: 0e29fa0ded8a9f09 +Block 0011 [107]: ad8be809951517f7 +Block 0011 [108]: 61c3d9430d2dc220 +Block 0011 [109]: 8f994499afc1a216 +Block 0011 [110]: 369a6933dab8d31f +Block 0011 [111]: 9829be415fb7ca60 +Block 0011 [112]: 7d81a1df1b3a8a4b +Block 0011 [113]: 4a1f610433899dac +Block 0011 [114]: 102c08b6e7485a6c +Block 0011 [115]: 1a20f39e1997f7df +Block 0011 [116]: dede8cdccea7dbc4 +Block 0011 [117]: fe662506f4ef1565 +Block 0011 [118]: c59f245f91cc9f21 +Block 0011 [119]: 7edf0558eed181ff +Block 0011 [120]: 52660f58659e6416 +Block 0011 [121]: 9a8652ba35ebbfe3 +Block 0011 [122]: 3ddcc3f3a9d0d4e9 +Block 0011 [123]: 9b77732233e29b31 +Block 0011 [124]: 5cca0503b8810763 +Block 0011 [125]: 20437f00f7599495 +Block 0011 [126]: 697494785bf513c0 +Block 0011 [127]: 3ab8bd182b6c8249 +Block 0012 [ 0]: 74c495065857a14a +Block 0012 [ 1]: ec96b80a6b33aca7 +Block 0012 [ 2]: f444c0ff27974ebd +Block 0012 [ 3]: 8be83acdb72435c6 +Block 0012 [ 4]: dd61727abd58d7f6 +Block 0012 [ 5]: 5cfb6a444de715d1 +Block 0012 [ 6]: 96783e23efc4d2a0 +Block 0012 [ 7]: 8676efba8fca7711 +Block 0012 [ 8]: 03b65deaa794547b +Block 0012 [ 9]: 723cbdd0b9bb8d66 +Block 0012 [ 10]: f41cacae2bcf2b0b +Block 0012 [ 11]: e2aec66d0247e1c1 +Block 0012 [ 12]: 3b397dcc3b4b0baa +Block 0012 [ 13]: c1b6183e2bb1ba29 +Block 0012 [ 14]: 872ddf74f2f0c4b6 +Block 0012 [ 15]: 7fa99dcf8c868329 +Block 0012 [ 16]: 81aaf228dab8d432 +Block 0012 [ 17]: f662d33a0d61f712 +Block 0012 [ 18]: fc94f70f5dbbd7f8 +Block 0012 [ 19]: 091fdf4051ca05bf +Block 0012 [ 20]: db86fbd51496da46 +Block 0012 [ 21]: e23f27c3e27cfce4 +Block 0012 [ 22]: b30cbb5f194f3665 +Block 0012 [ 23]: 098e970f7402448a +Block 0012 [ 24]: 8b8c305c65695a8b +Block 0012 [ 25]: 7d510babc681fec3 +Block 0012 [ 26]: 9730753a01829732 +Block 0012 [ 27]: 07fcd4c5caad3b8a +Block 0012 [ 28]: 0e460f3d1bd79795 +Block 0012 [ 29]: c4a603208e0f3b48 +Block 0012 [ 30]: 379b4e95cba16ceb +Block 0012 [ 31]: bc72b408d217a603 +Block 0012 [ 32]: c47562fb642367b8 +Block 0012 [ 33]: 7c3c05432783dc7e +Block 0012 [ 34]: d67d0d228e37ecf9 +Block 0012 [ 35]: a2af9cf396be30e5 +Block 0012 [ 36]: 5f9c37739225a9f6 +Block 0012 [ 37]: 1622955d4a9a1422 +Block 0012 [ 38]: 05813a48687001ac +Block 0012 [ 39]: 29b364a9d8d6ae47 +Block 0012 [ 40]: c669633534f43bee +Block 0012 [ 41]: 44cfaee91755b969 +Block 0012 [ 42]: b438bfa944ef8f40 +Block 0012 [ 43]: 8d70530a6dd56e35 +Block 0012 [ 44]: 400f2ca1ed882bc7 +Block 0012 [ 45]: 160924cb0e833079 +Block 0012 [ 46]: 35a0cba772432178 +Block 0012 [ 47]: 0c854eeba328e0af +Block 0012 [ 48]: ed795385b6c8c33d +Block 0012 [ 49]: 99e486b31d520a75 +Block 0012 [ 50]: 1b5b830b450e4c3b +Block 0012 [ 51]: 93d51f5a82abbfce +Block 0012 [ 52]: 1bc16f482ff354bb +Block 0012 [ 53]: 757533f073cc215d +Block 0012 [ 54]: d408a1d75467d7b5 +Block 0012 [ 55]: 17e3c3b05d2def65 +Block 0012 [ 56]: eb8227aaf6789f99 +Block 0012 [ 57]: 59ad64f49eb5e25e +Block 0012 [ 58]: f6388f3df1ffa208 +Block 0012 [ 59]: b538d46a9f9f5615 +Block 0012 [ 60]: d7fadc7f0d1a1a9b +Block 0012 [ 61]: cc5653b41856d599 +Block 0012 [ 62]: 2eb0cb645a22bc9f +Block 0012 [ 63]: a604231af8395b0a +Block 0012 [ 64]: a280f5b5784bb713 +Block 0012 [ 65]: 8127d0070d705591 +Block 0012 [ 66]: 9d027a04414ff63b +Block 0012 [ 67]: c18b91df73f8b2ee +Block 0012 [ 68]: baba58a0614a8348 +Block 0012 [ 69]: fa0979b12baca497 +Block 0012 [ 70]: 488e2446c1ace4eb +Block 0012 [ 71]: 61b55bd7789e6757 +Block 0012 [ 72]: a3792ee1291d3d19 +Block 0012 [ 73]: ec996ff15540cb7f +Block 0012 [ 74]: 846eb47bb5500c0a +Block 0012 [ 75]: 63004d98c3fa85ad +Block 0012 [ 76]: d5e0c488c883d3a5 +Block 0012 [ 77]: e17c041222078902 +Block 0012 [ 78]: 5229cef32a4a309d +Block 0012 [ 79]: ff7e6b193154b239 +Block 0012 [ 80]: 50b448deb704b282 +Block 0012 [ 81]: fdf2757c71dd05fe +Block 0012 [ 82]: 798ce5f0123757e3 +Block 0012 [ 83]: 2ee64751ff269375 +Block 0012 [ 84]: 07b502f310eeb614 +Block 0012 [ 85]: 5a2921f9d24871da +Block 0012 [ 86]: a84d011edf032722 +Block 0012 [ 87]: a06da58fec671444 +Block 0012 [ 88]: 7b29541f047f8c39 +Block 0012 [ 89]: f272e37908f33227 +Block 0012 [ 90]: 32fd9dccac14f94e +Block 0012 [ 91]: 472efa6203e12101 +Block 0012 [ 92]: cac17d5f64192468 +Block 0012 [ 93]: 59ef34af8d1d42a7 +Block 0012 [ 94]: 875aff50e380c04a +Block 0012 [ 95]: 2ab6fe1d9aea14e8 +Block 0012 [ 96]: c687fa35d4bf9769 +Block 0012 [ 97]: 5be39abfa75b0e19 +Block 0012 [ 98]: ba5f78e7bf0c55ad +Block 0012 [ 99]: 3cebbe87e128539a +Block 0012 [100]: 0919a876f25bc820 +Block 0012 [101]: 6c9791f13fbbca50 +Block 0012 [102]: 3f74e510198bfc60 +Block 0012 [103]: f1aa13bc480aaa8c +Block 0012 [104]: 973b47716c2abba4 +Block 0012 [105]: 471cc7d2ca3eb89e +Block 0012 [106]: 8455ba5c570cd648 +Block 0012 [107]: e3bb3806a7479560 +Block 0012 [108]: 7d4cab7697e464b0 +Block 0012 [109]: 6c0ca3ec57564285 +Block 0012 [110]: 3267684183405f26 +Block 0012 [111]: 498afc2bc754e598 +Block 0012 [112]: 55076940aea93c2d +Block 0012 [113]: c63498bc724b3e1c +Block 0012 [114]: 50286619f7262a6f +Block 0012 [115]: 7984fb064e978bfc +Block 0012 [116]: 336490a1908c9a5b +Block 0012 [117]: f09f3b5b9959b3b7 +Block 0012 [118]: 04eceef263776576 +Block 0012 [119]: c7c191df82ea3c6a +Block 0012 [120]: 5b752037136cbc1c +Block 0012 [121]: 551ebaf941eec52c +Block 0012 [122]: 4d83b34b970f4d4f +Block 0012 [123]: 2a3e438748d1dc29 +Block 0012 [124]: c5ef48e4d9a7f09b +Block 0012 [125]: 762f8a841324bd19 +Block 0012 [126]: 65bec05883e5886e +Block 0012 [127]: b2fc97d678dbd986 +Block 0013 [ 0]: f75d1354c7eff19d +Block 0013 [ 1]: f5fd92f820842d7c +Block 0013 [ 2]: a711022a884ef6a1 +Block 0013 [ 3]: 796eb5ae4cebbf72 +Block 0013 [ 4]: 34f4edb4b0bb102a +Block 0013 [ 5]: 527c17ebdfc0c883 +Block 0013 [ 6]: bac872ffd4a899e9 +Block 0013 [ 7]: 0522808bceae9ae7 +Block 0013 [ 8]: eb3916bea08873f3 +Block 0013 [ 9]: b760bfb7537a57fa +Block 0013 [ 10]: 23d02fe031ecd3b5 +Block 0013 [ 11]: e400bae4a51546a9 +Block 0013 [ 12]: 49809cc34eecfd88 +Block 0013 [ 13]: e448e83b2b95201f +Block 0013 [ 14]: 2dc1a9d3a9c51942 +Block 0013 [ 15]: 8fef158e528ff970 +Block 0013 [ 16]: d661aadbbce68680 +Block 0013 [ 17]: ea34db317a216dd2 +Block 0013 [ 18]: 587895e1bf64fb03 +Block 0013 [ 19]: 64a9ed9c8bda7ab4 +Block 0013 [ 20]: 740cefd8d01b7666 +Block 0013 [ 21]: 4b6789a28b65f286 +Block 0013 [ 22]: f76c5b55c95c36f9 +Block 0013 [ 23]: 53f061c978252730 +Block 0013 [ 24]: 16a8ffa2013f1ff2 +Block 0013 [ 25]: 10ebd23ff30f48a2 +Block 0013 [ 26]: 3218fed20a63abf3 +Block 0013 [ 27]: e963d15f8d882329 +Block 0013 [ 28]: d26c43ad40e39071 +Block 0013 [ 29]: e6bb387045d95f5e +Block 0013 [ 30]: 9f68984830dd0c41 +Block 0013 [ 31]: 50c0a501f586171a +Block 0013 [ 32]: 015ae6072d8b2cba +Block 0013 [ 33]: b4141c1309479d7a +Block 0013 [ 34]: 120fc0ddf04bf858 +Block 0013 [ 35]: e3c3b1d547f1fbc2 +Block 0013 [ 36]: 3f440891de34519c +Block 0013 [ 37]: 859a4ece024def20 +Block 0013 [ 38]: b5f5a36371af5e5f +Block 0013 [ 39]: 3f5240a23a119f8c +Block 0013 [ 40]: 1ad71f0a68b88ca8 +Block 0013 [ 41]: b86e1a786107d5c8 +Block 0013 [ 42]: 01753f0f078fd87d +Block 0013 [ 43]: db2d2c4971651e47 +Block 0013 [ 44]: e47a46551a5218d7 +Block 0013 [ 45]: 8e2a4bec6d4106ae +Block 0013 [ 46]: 2e4c7722d94c4d90 +Block 0013 [ 47]: dffa15c8668c5cfd +Block 0013 [ 48]: 8ae2b1e76e12b127 +Block 0013 [ 49]: 49a5545f357b871b +Block 0013 [ 50]: 55aeb2fb9171edec +Block 0013 [ 51]: 1231e0a504d2971e +Block 0013 [ 52]: 84eac2f928b0a9d7 +Block 0013 [ 53]: fd1663ff5d624cff +Block 0013 [ 54]: e43cd597b2e3bddd +Block 0013 [ 55]: 7f1b719416fe0e8b +Block 0013 [ 56]: 3ae44722630c4674 +Block 0013 [ 57]: 465dcfb6ac8ce226 +Block 0013 [ 58]: ebd6211d53806927 +Block 0013 [ 59]: dd0cba9b6ee34124 +Block 0013 [ 60]: c77893c04e5e94e0 +Block 0013 [ 61]: 84acbc610447e84d +Block 0013 [ 62]: d133ad166027d506 +Block 0013 [ 63]: 51ea6c487d52417c +Block 0013 [ 64]: 5b13f5e040466e87 +Block 0013 [ 65]: 5bd01c7053fcf695 +Block 0013 [ 66]: dc6959bdff3c7319 +Block 0013 [ 67]: e07a1be4b5c6bf3a +Block 0013 [ 68]: f0a93277edf0c0fe +Block 0013 [ 69]: b2868562b862b79c +Block 0013 [ 70]: a75ec6c9f1625a7e +Block 0013 [ 71]: a916ca4fec36d981 +Block 0013 [ 72]: 7a7ef1190665727e +Block 0013 [ 73]: c8f525083c5e2f46 +Block 0013 [ 74]: 3236e7db95f7edba +Block 0013 [ 75]: e14e241dcb7d0a5f +Block 0013 [ 76]: 052ee041aa00b158 +Block 0013 [ 77]: aa201a671fecd938 +Block 0013 [ 78]: 5d3255300f8debe0 +Block 0013 [ 79]: 1dbe7f19c75a9a1c +Block 0013 [ 80]: c584df9197af7e54 +Block 0013 [ 81]: cf170f2644304dff +Block 0013 [ 82]: 6608d6d6b6ea219f +Block 0013 [ 83]: a6b43893a8363c79 +Block 0013 [ 84]: 6af3db3e1a954246 +Block 0013 [ 85]: a8ab0b1f021db354 +Block 0013 [ 86]: 89d22a874897ce37 +Block 0013 [ 87]: 631a49f4a9227896 +Block 0013 [ 88]: 597052bc91749582 +Block 0013 [ 89]: f731597f0238a1e9 +Block 0013 [ 90]: 98cd65e35a8a9de7 +Block 0013 [ 91]: 34b7630d576bdab0 +Block 0013 [ 92]: ab6cbc4905e83f76 +Block 0013 [ 93]: 65063cddd2cd614f +Block 0013 [ 94]: 5c6cf191124f0ca8 +Block 0013 [ 95]: 1d3130a17463b667 +Block 0013 [ 96]: b5998c71dc07fb0c +Block 0013 [ 97]: 9b47c94dc9ff3346 +Block 0013 [ 98]: 96b2173e4523582c +Block 0013 [ 99]: f0809f5374eec4a6 +Block 0013 [100]: ddf0752aeaad2081 +Block 0013 [101]: 8c1fb3710eedcadb +Block 0013 [102]: 988382d33a7f7cd1 +Block 0013 [103]: 8e5e7ea83a32557f +Block 0013 [104]: 55e74a052f3ddf11 +Block 0013 [105]: c1061700ffde6f76 +Block 0013 [106]: 102873e597b7160b +Block 0013 [107]: 642bbdc433f89d4b +Block 0013 [108]: 48135512e4835333 +Block 0013 [109]: 2ff1ae6b4e916b1e +Block 0013 [110]: d28b18bb3a370a8c +Block 0013 [111]: 67b7e874386777f0 +Block 0013 [112]: 66b00fdb00abf17c +Block 0013 [113]: d3ceed959b096696 +Block 0013 [114]: d44bb11bde2609d3 +Block 0013 [115]: 1bce7a85faa938ba +Block 0013 [116]: 6d7ccb20622593cb +Block 0013 [117]: e35a6dcd4dafdb81 +Block 0013 [118]: 2a755a917cf7f449 +Block 0013 [119]: 88ffa8fdf6960caa +Block 0013 [120]: b4b74a1f5928c3c2 +Block 0013 [121]: 704dc3689cc7cc99 +Block 0013 [122]: 95388c99ba9e902f +Block 0013 [123]: 76ce0e7b84b21455 +Block 0013 [124]: af618d480e8cc3dd +Block 0013 [125]: e3d0d2c733f20c6e +Block 0013 [126]: 47aedb4b4130ed9c +Block 0013 [127]: 630a965da8802d51 +Block 0014 [ 0]: a461476242d7a59e +Block 0014 [ 1]: 793e7b824d249885 +Block 0014 [ 2]: 8b31bf1c5251fa4f +Block 0014 [ 3]: 8419da321623d533 +Block 0014 [ 4]: c4e7b053013901b4 +Block 0014 [ 5]: 968287121fe56806 +Block 0014 [ 6]: 01dd360820ab43cd +Block 0014 [ 7]: d9747eb7cb1ae162 +Block 0014 [ 8]: aa61246c0096cea4 +Block 0014 [ 9]: 184744ac0181d478 +Block 0014 [ 10]: d33b25b159cbad6d +Block 0014 [ 11]: 57dae905157b326c +Block 0014 [ 12]: d2dfb8667245f623 +Block 0014 [ 13]: 53c48207f3560823 +Block 0014 [ 14]: 463becfdfd0dc65f +Block 0014 [ 15]: 3478ccf1587fa3e6 +Block 0014 [ 16]: ed43411af9589a5f +Block 0014 [ 17]: 498ac28bddf50caa +Block 0014 [ 18]: fa10436f3b1d9768 +Block 0014 [ 19]: 9c44f3528091dfe5 +Block 0014 [ 20]: d0fcba297c327462 +Block 0014 [ 21]: ea24e68ccd7e5881 +Block 0014 [ 22]: b57b40034030946a +Block 0014 [ 23]: 50d76f6d5c6246a2 +Block 0014 [ 24]: 4dc5fe0132ace88c +Block 0014 [ 25]: 085b1be1857617f4 +Block 0014 [ 26]: 8f0834b6fd83ba12 +Block 0014 [ 27]: c94afed014cdc9ee +Block 0014 [ 28]: 889fe873e29786bd +Block 0014 [ 29]: 99fca3a0f55bcbf6 +Block 0014 [ 30]: db6fe5823ed66e32 +Block 0014 [ 31]: 2bd9fcf53c862b1a +Block 0014 [ 32]: ce81207a7f1acfa4 +Block 0014 [ 33]: 5d71bf5f5f5acc02 +Block 0014 [ 34]: 739fbc4887d79690 +Block 0014 [ 35]: 6f4a792cde2fd5cc +Block 0014 [ 36]: d24cbfa7ff261450 +Block 0014 [ 37]: 360bd520e4115330 +Block 0014 [ 38]: fdea52ae2de55082 +Block 0014 [ 39]: 78f9158b431687a0 +Block 0014 [ 40]: 7133a4a752cf05a1 +Block 0014 [ 41]: 01c66f39cb89826e +Block 0014 [ 42]: 4ae0f9368cc3ad78 +Block 0014 [ 43]: b3db2b553f9b03b9 +Block 0014 [ 44]: 1469154cc172f9d1 +Block 0014 [ 45]: e1b64f1c6626069c +Block 0014 [ 46]: 879aea87b0a3d20b +Block 0014 [ 47]: 8455677d1bdc2c33 +Block 0014 [ 48]: e80237fe8e642e21 +Block 0014 [ 49]: 504e4b88eccfcc84 +Block 0014 [ 50]: 1fc697e8a26e91d5 +Block 0014 [ 51]: 9465a35e1648397c +Block 0014 [ 52]: 4f34578d6c381f62 +Block 0014 [ 53]: 25f545b54ff5ae63 +Block 0014 [ 54]: 5691ccb5637ad97d +Block 0014 [ 55]: caa0275684145e40 +Block 0014 [ 56]: 641968a1daa8cb41 +Block 0014 [ 57]: fb0ff3c67859c362 +Block 0014 [ 58]: dd0bca636e098eb6 +Block 0014 [ 59]: 25c5ea8ff9947ae7 +Block 0014 [ 60]: fe2a2e75cdde7486 +Block 0014 [ 61]: 9786b6dcda3a8002 +Block 0014 [ 62]: e33401fa5a304bcf +Block 0014 [ 63]: 17cdb217f104d8ed +Block 0014 [ 64]: 529ec3b59e120728 +Block 0014 [ 65]: e0f25bcbedbdeb14 +Block 0014 [ 66]: e87e2a611e9762c3 +Block 0014 [ 67]: 903b6e004f8e2466 +Block 0014 [ 68]: e769cc9b54e7fc0d +Block 0014 [ 69]: 88ba247a1459c620 +Block 0014 [ 70]: 8296682d67304ca4 +Block 0014 [ 71]: a197e9f9c9c2d027 +Block 0014 [ 72]: 70d6e5f97e4c08c3 +Block 0014 [ 73]: 1282284c67db0021 +Block 0014 [ 74]: 257e4df3e88791da +Block 0014 [ 75]: ea369d60cbbfc3b0 +Block 0014 [ 76]: 899327fe7af1696c +Block 0014 [ 77]: e3eb9f568072d39c +Block 0014 [ 78]: 61c6e4bae139da6e +Block 0014 [ 79]: 82d73a7b518a484a +Block 0014 [ 80]: ae1daa5055c3d728 +Block 0014 [ 81]: 181eb0a5605fe5f2 +Block 0014 [ 82]: 4adc3042c5c248f6 +Block 0014 [ 83]: 75720e34a8c4f9c1 +Block 0014 [ 84]: 184a961bbedf8d78 +Block 0014 [ 85]: 480f01987dc39470 +Block 0014 [ 86]: e5288386e93dbaa8 +Block 0014 [ 87]: 24a2631823663560 +Block 0014 [ 88]: 09a52a4f0522d21d +Block 0014 [ 89]: 685b6edb99314395 +Block 0014 [ 90]: 7caf3c4dfea8f03d +Block 0014 [ 91]: 4ba45b9e8df91dad +Block 0014 [ 92]: a0954b2eee1375a2 +Block 0014 [ 93]: 766c3dd0e8c84041 +Block 0014 [ 94]: 7d6854ff9c364cf3 +Block 0014 [ 95]: c3c18738f3b47743 +Block 0014 [ 96]: 73c732161b75d23a +Block 0014 [ 97]: 8b72fa77eaff6848 +Block 0014 [ 98]: 97f4169cdbbcc478 +Block 0014 [ 99]: cc08d746666366f8 +Block 0014 [100]: b5226b34853ccf1a +Block 0014 [101]: a463a634b3869611 +Block 0014 [102]: 2444d5021c683565 +Block 0014 [103]: 6fcbaa410bb39f3a +Block 0014 [104]: 3238537afdc9c134 +Block 0014 [105]: 58ed9109edbaceaf +Block 0014 [106]: a6355dad9a1b2ed3 +Block 0014 [107]: 710d861bd7de4875 +Block 0014 [108]: 9e8eec1be822f14b +Block 0014 [109]: c30a549d276e50a4 +Block 0014 [110]: 57038585a5eb2ceb +Block 0014 [111]: 97502c4b617e6d93 +Block 0014 [112]: e462aac2eab81993 +Block 0014 [113]: e35d06c7c51c8dc9 +Block 0014 [114]: 396e9f2aa5e74cde +Block 0014 [115]: c908d13b62e112fb +Block 0014 [116]: 35aa4755a42ba0fb +Block 0014 [117]: f9426c2be943b5a9 +Block 0014 [118]: e2931431f1fe9dd7 +Block 0014 [119]: 0a6f56e4e9558739 +Block 0014 [120]: 8ab84a163f6eaa0c +Block 0014 [121]: 42a0f15d6a6efb41 +Block 0014 [122]: 6d28afefc7dcfe58 +Block 0014 [123]: 4901be47a8c58453 +Block 0014 [124]: 73ec4fc7c75e84ef +Block 0014 [125]: 2920efbb06d8e325 +Block 0014 [126]: a6ecd7e4ef96dc05 +Block 0014 [127]: 1d0a9b2dc6418672 +Block 0015 [ 0]: fe7dd39a618e71e5 +Block 0015 [ 1]: 01c07c1b068c39c5 +Block 0015 [ 2]: b2a41ba7002b15b5 +Block 0015 [ 3]: ae477e64c1faa49b +Block 0015 [ 4]: f3dcfd9e46024f3c +Block 0015 [ 5]: 0e600176e0542726 +Block 0015 [ 6]: 56e014096bbfcee2 +Block 0015 [ 7]: 39844d9641076e23 +Block 0015 [ 8]: 8101229338fa9230 +Block 0015 [ 9]: fff04a34e83a1d04 +Block 0015 [ 10]: 0b76c8b60d1bddfc +Block 0015 [ 11]: daca86bb2aa461a4 +Block 0015 [ 12]: ccad5b535053995c +Block 0015 [ 13]: dc086420ea32e2c4 +Block 0015 [ 14]: 3e5f7db426829fa4 +Block 0015 [ 15]: 028179b0a2202f2a +Block 0015 [ 16]: 84664b21b0bed003 +Block 0015 [ 17]: 6b0b075c2720f673 +Block 0015 [ 18]: 3ab59f67edf1a91f +Block 0015 [ 19]: 49a00e47fcea9c9a +Block 0015 [ 20]: b0af9ca77eef6bd7 +Block 0015 [ 21]: 3ff02605e750fb68 +Block 0015 [ 22]: 6f888572cf623bde +Block 0015 [ 23]: 90792eba7c50bc6c +Block 0015 [ 24]: f76e260b80eab35c +Block 0015 [ 25]: c454977d76d885bb +Block 0015 [ 26]: 5ab8d0754e3af5db +Block 0015 [ 27]: a64a547249b6c6dc +Block 0015 [ 28]: d0ebccff364df8dc +Block 0015 [ 29]: b13f9c1b1bd1d3b6 +Block 0015 [ 30]: 134227e11312862a +Block 0015 [ 31]: 81a635d0de25be20 +Block 0015 [ 32]: 2bb3ff35c40ea726 +Block 0015 [ 33]: f84a0782feabb913 +Block 0015 [ 34]: 28d4f1889a890868 +Block 0015 [ 35]: d01673b6e235fc51 +Block 0015 [ 36]: 42c447fef3385aa3 +Block 0015 [ 37]: 50ca4b017f0bdecf +Block 0015 [ 38]: 9ac9f0ddccd1e52d +Block 0015 [ 39]: 21f8411108200f80 +Block 0015 [ 40]: 69e6d3d7b2c7a786 +Block 0015 [ 41]: ec8cf819bb02bbcb +Block 0015 [ 42]: 1fb8e462e6c4ff72 +Block 0015 [ 43]: cc89eb4748626454 +Block 0015 [ 44]: 6f0230ec870c485a +Block 0015 [ 45]: e9d1c047f8322b0d +Block 0015 [ 46]: 86b194b1353a70ba +Block 0015 [ 47]: 43d1307e773654bf +Block 0015 [ 48]: f47b4224fcb3488a +Block 0015 [ 49]: d7eee8fd41f4ba01 +Block 0015 [ 50]: a8fa5f257bab0e5e +Block 0015 [ 51]: f3931c2abded9a59 +Block 0015 [ 52]: e41fbeda83d18a71 +Block 0015 [ 53]: bab3d48f7589b45f +Block 0015 [ 54]: 7b9ed122cdc05112 +Block 0015 [ 55]: 660ee625e579e10a +Block 0015 [ 56]: 9a8420edb4efc070 +Block 0015 [ 57]: 71cdd65ab37df1aa +Block 0015 [ 58]: 59ec57a4d785ec5b +Block 0015 [ 59]: 56de28c195a6c9c1 +Block 0015 [ 60]: 38b77aa786eb4274 +Block 0015 [ 61]: 0339ba8813a04d23 +Block 0015 [ 62]: 5ff04478b159e5a8 +Block 0015 [ 63]: bb59a232c2fb822f +Block 0015 [ 64]: ce9b98e4d5505d4e +Block 0015 [ 65]: d94474d5044efad8 +Block 0015 [ 66]: dd7581fca67e6b47 +Block 0015 [ 67]: e5cf5ee7a1d303a6 +Block 0015 [ 68]: de54eb260e28d75d +Block 0015 [ 69]: 8dbc69487a475fbd +Block 0015 [ 70]: 2e8038ba499f6dbb +Block 0015 [ 71]: 322093a75c524f72 +Block 0015 [ 72]: aa559fe61ea1a37e +Block 0015 [ 73]: cb547e6a9106e64c +Block 0015 [ 74]: 67111f017926588a +Block 0015 [ 75]: 0e71f13aaedca44c +Block 0015 [ 76]: 885341674bd4987a +Block 0015 [ 77]: e0c5efe697c9b140 +Block 0015 [ 78]: 324ea9daaa3b6ba0 +Block 0015 [ 79]: 545898fe29df7e96 +Block 0015 [ 80]: 18ca585d12d3c743 +Block 0015 [ 81]: 04cdfe6bdd202450 +Block 0015 [ 82]: 3e6104bf852b8a6a +Block 0015 [ 83]: 08544bdc6f38ba5d +Block 0015 [ 84]: 7e49bfeec5d001f2 +Block 0015 [ 85]: 3906196d6e3c53ab +Block 0015 [ 86]: 4778aeb472a70184 +Block 0015 [ 87]: 8cc7e9a207cd88f0 +Block 0015 [ 88]: c1e1aed42d388dd7 +Block 0015 [ 89]: 93228c878bd09ded +Block 0015 [ 90]: b3e312be518f5ca0 +Block 0015 [ 91]: c63977ba692aacfe +Block 0015 [ 92]: 18ef5824532327a3 +Block 0015 [ 93]: daa17d2619b74141 +Block 0015 [ 94]: 3524418eb248f814 +Block 0015 [ 95]: 262e4eab5b257010 +Block 0015 [ 96]: aa45cdd8e749ae80 +Block 0015 [ 97]: 46dd2149ce337b8f +Block 0015 [ 98]: 425c1c35463031a0 +Block 0015 [ 99]: b1747326431aa01b +Block 0015 [100]: 07b504f49c05fc9e +Block 0015 [101]: fe8fc4dad3d269d8 +Block 0015 [102]: f18aff22d8f09960 +Block 0015 [103]: 5247cf1a92ba2294 +Block 0015 [104]: 5a0cc7c71bfd6734 +Block 0015 [105]: 0c926b5deed53fb9 +Block 0015 [106]: 6be5ac8ee2c31367 +Block 0015 [107]: cf808455894c338c +Block 0015 [108]: af04367baa4bba7c +Block 0015 [109]: 26397d26480e815b +Block 0015 [110]: a58ca838afb9ac8b +Block 0015 [111]: 75413a501ff0a6c0 +Block 0015 [112]: 1fac4f16e8ab214f +Block 0015 [113]: 19be611a230ce4f2 +Block 0015 [114]: 6530a63352ee1b61 +Block 0015 [115]: 00dcabf53a8e84ad +Block 0015 [116]: 4087c0f326283555 +Block 0015 [117]: 791eafa5a317015e +Block 0015 [118]: ef0f3079c2280b9d +Block 0015 [119]: 1035069b01d04a74 +Block 0015 [120]: 7fc066ca3a0df359 +Block 0015 [121]: 2c7e872cae3aeb64 +Block 0015 [122]: ff9d282ac9e3a146 +Block 0015 [123]: beffa43e452ce374 +Block 0015 [124]: a0f34d378d418f73 +Block 0015 [125]: 5790929a42de0b61 +Block 0015 [126]: 5b23ec6f6be2aa90 +Block 0015 [127]: d04c5f31efbeccc4 +Block 0016 [ 0]: ee4284bd7e01037d +Block 0016 [ 1]: f6725c9d044b3582 +Block 0016 [ 2]: efc6d8945d76028d +Block 0016 [ 3]: 29e9791ebfed5ec9 +Block 0016 [ 4]: 4c4d74485e886bb9 +Block 0016 [ 5]: 7a227580ea77203c +Block 0016 [ 6]: 8b8a892a45ce7773 +Block 0016 [ 7]: f552f61ef6b9987f +Block 0016 [ 8]: b0be9423022aa3c4 +Block 0016 [ 9]: a581a3a65719e8ed +Block 0016 [ 10]: 0ed1efa5c7b9cdb3 +Block 0016 [ 11]: 459d8670734b7440 +Block 0016 [ 12]: 0651d5c945182f07 +Block 0016 [ 13]: bced7850cfe86416 +Block 0016 [ 14]: e0c4f34534f1c63a +Block 0016 [ 15]: 2c6cd7aa929d8645 +Block 0016 [ 16]: dadf71c6c32421f0 +Block 0016 [ 17]: f4e8a2bdc76f0d3f +Block 0016 [ 18]: 418b1053a3257ffa +Block 0016 [ 19]: 012e877fde3e24c9 +Block 0016 [ 20]: 14d59b7c02a2e97c +Block 0016 [ 21]: ee8c0895a34f08b8 +Block 0016 [ 22]: 71cf5cadb05b7782 +Block 0016 [ 23]: 6a5c0717ec891466 +Block 0016 [ 24]: 9c1c845254e692f3 +Block 0016 [ 25]: f0a44a90e65aee66 +Block 0016 [ 26]: e222177e3bdec9bc +Block 0016 [ 27]: a5fec919612d165c +Block 0016 [ 28]: 020201b7a839067b +Block 0016 [ 29]: 84e786fba4a60afb +Block 0016 [ 30]: f7b1f4f6feb1c1c3 +Block 0016 [ 31]: 1c85f25c69ef9fd7 +Block 0016 [ 32]: 285122b6579f7056 +Block 0016 [ 33]: a9e1eec26a14de95 +Block 0016 [ 34]: fda85512de5464d0 +Block 0016 [ 35]: 71e076da7e3910bd +Block 0016 [ 36]: d30baaa4b044367a +Block 0016 [ 37]: 0b504eb61b0d6c26 +Block 0016 [ 38]: d3c30d0d974ed9af +Block 0016 [ 39]: 282158fd3005a366 +Block 0016 [ 40]: eeacca7d7d8c1519 +Block 0016 [ 41]: 4511c26cd8af6099 +Block 0016 [ 42]: 16adfdb6ba659689 +Block 0016 [ 43]: 3186aed45d7aeeb2 +Block 0016 [ 44]: 247da487eba794b7 +Block 0016 [ 45]: 584c74265acf4b10 +Block 0016 [ 46]: 93913d9a23a4fc60 +Block 0016 [ 47]: 4703bb124037e1a5 +Block 0016 [ 48]: 37239d7ace81e41d +Block 0016 [ 49]: ba7923d2d1abf6aa +Block 0016 [ 50]: 81cff74cc3030c46 +Block 0016 [ 51]: 80781fbda30f2c67 +Block 0016 [ 52]: 1072611bab0d1c25 +Block 0016 [ 53]: 6dafe937e223ffd4 +Block 0016 [ 54]: 0c58c5ecde11f220 +Block 0016 [ 55]: 808b5df6b010f5f0 +Block 0016 [ 56]: 4d2c7c97deb8bb3a +Block 0016 [ 57]: 297865d69ab1b78f +Block 0016 [ 58]: 15ef9ca22dcc25c2 +Block 0016 [ 59]: 8f01f2fbec1e1cda +Block 0016 [ 60]: a9db3a3d7e817b2a +Block 0016 [ 61]: 4f2f469445248c76 +Block 0016 [ 62]: 60fdb8c20980baa8 +Block 0016 [ 63]: e0af63046dfb4ec4 +Block 0016 [ 64]: 3d416ab4bed81fcb +Block 0016 [ 65]: da1ff08a91bab1ff +Block 0016 [ 66]: 7ddb3de6427f6dc2 +Block 0016 [ 67]: 02ac68f8d7b59827 +Block 0016 [ 68]: 2f8b56ade21b2a31 +Block 0016 [ 69]: 5479394c6e8c51c4 +Block 0016 [ 70]: beb501097c9b856e +Block 0016 [ 71]: f5b7e186fd0a6d74 +Block 0016 [ 72]: 8632eceb3c644fe5 +Block 0016 [ 73]: 578be5498c159f6d +Block 0016 [ 74]: b92cbafdd2bd1bd7 +Block 0016 [ 75]: cc7bc5fe2e10e8eb +Block 0016 [ 76]: 472df28e66c5e218 +Block 0016 [ 77]: 64494c08516ca24c +Block 0016 [ 78]: 29919b2152b46616 +Block 0016 [ 79]: c98bf2c8d5a59d7b +Block 0016 [ 80]: 7b4d78ce47083d2a +Block 0016 [ 81]: 2150d9fb4190dd49 +Block 0016 [ 82]: f4787d0cc450ddad +Block 0016 [ 83]: bca37f309b16b787 +Block 0016 [ 84]: 77f29e0273601339 +Block 0016 [ 85]: 5512896f2d009278 +Block 0016 [ 86]: ef63fc2dc268d2b3 +Block 0016 [ 87]: 2a796379964010fc +Block 0016 [ 88]: 6a7f8c157f4907f4 +Block 0016 [ 89]: 4a7f538aa5761182 +Block 0016 [ 90]: 29004d473d72bee3 +Block 0016 [ 91]: 834d5222c0011172 +Block 0016 [ 92]: bd2606194d2d148b +Block 0016 [ 93]: 38a5b0decd299c4f +Block 0016 [ 94]: abf149883113a697 +Block 0016 [ 95]: 34e170f49d93c917 +Block 0016 [ 96]: 53fc696fcc977325 +Block 0016 [ 97]: 3e28ab82d63594f6 +Block 0016 [ 98]: 915a3ff472e74518 +Block 0016 [ 99]: 69a618df6f6f84ae +Block 0016 [100]: c5d813be21361d83 +Block 0016 [101]: 03ac0914b557c176 +Block 0016 [102]: 4bdd25ac2aaa20fe +Block 0016 [103]: a3817cab3aa0e229 +Block 0016 [104]: 3155f6e8898d3626 +Block 0016 [105]: edf42f9307673e12 +Block 0016 [106]: e14daae30223ed73 +Block 0016 [107]: 82613039e7c17acd +Block 0016 [108]: 2b67bfa4ba3d75f2 +Block 0016 [109]: ce95d235cd915890 +Block 0016 [110]: 75624ef53a39d48b +Block 0016 [111]: ad0303b31652499e +Block 0016 [112]: e351b76ad04c39d7 +Block 0016 [113]: a9aa8650ea6734a5 +Block 0016 [114]: 527b776775eab895 +Block 0016 [115]: c41ab8f180e85ccd +Block 0016 [116]: 8ad4ef151659d1da +Block 0016 [117]: d94e5cf2654d7e64 +Block 0016 [118]: 7269fa6ebe4d0148 +Block 0016 [119]: c4f576c71186fe07 +Block 0016 [120]: 8ddce8b24b0b5bfb +Block 0016 [121]: 821a74dbd82c5a16 +Block 0016 [122]: 9695f6ac80338bfb +Block 0016 [123]: 728dee32c6c2475e +Block 0016 [124]: 7bac74994b5bacff +Block 0016 [125]: 3da6eea76bd3692f +Block 0016 [126]: 23cb9f7fa694eaa1 +Block 0016 [127]: cfe06a085d267a99 +Block 0017 [ 0]: f356666f01196720 +Block 0017 [ 1]: d5b86a80e04f9357 +Block 0017 [ 2]: 94511da0aa428e7c +Block 0017 [ 3]: 3b7adcefeb2b6f65 +Block 0017 [ 4]: 4d5283d8063472cc +Block 0017 [ 5]: 890aedd9f9a726b1 +Block 0017 [ 6]: 2711463e6bc5421a +Block 0017 [ 7]: 19923254aef59f6c +Block 0017 [ 8]: 559d243da7765ab0 +Block 0017 [ 9]: 59492428d9c4c089 +Block 0017 [ 10]: 669da2bd92b8c392 +Block 0017 [ 11]: 0d84cfb304ed2cb2 +Block 0017 [ 12]: 9183922fe8dc1321 +Block 0017 [ 13]: c9ddad6110958678 +Block 0017 [ 14]: 8c4ec6de6ef52270 +Block 0017 [ 15]: 158509f02ed33558 +Block 0017 [ 16]: 15f62a574d357bff +Block 0017 [ 17]: 9fc31aa7b10bdb39 +Block 0017 [ 18]: 14acd0af756da166 +Block 0017 [ 19]: 2ecf2d49440a608d +Block 0017 [ 20]: b5056c5192f93b7b +Block 0017 [ 21]: 8e19ba7cdd948025 +Block 0017 [ 22]: 34fbc0f77ec37398 +Block 0017 [ 23]: 03bb7138974402f0 +Block 0017 [ 24]: 9ad98d6af59e2f2e +Block 0017 [ 25]: e1bddfddc591121e +Block 0017 [ 26]: b2f16e8b68e6d9c1 +Block 0017 [ 27]: 49a32b416ceeae94 +Block 0017 [ 28]: b3ad11b80ce3df7e +Block 0017 [ 29]: 3ec29abc1f218b1e +Block 0017 [ 30]: fb3d6da7508f17bd +Block 0017 [ 31]: c790abf197c4c647 +Block 0017 [ 32]: 2a1110d48162fcd4 +Block 0017 [ 33]: 43f22c7b2d34617e +Block 0017 [ 34]: ebf0db27d136245d +Block 0017 [ 35]: 55aeb56679c1f189 +Block 0017 [ 36]: 8714d1a5bb55b389 +Block 0017 [ 37]: 075c04ac4d453c9a +Block 0017 [ 38]: 24c791b59a1a8330 +Block 0017 [ 39]: 8b62655e797d9396 +Block 0017 [ 40]: 162b218ffe8a7c58 +Block 0017 [ 41]: 51003cf43cc27c45 +Block 0017 [ 42]: 40cc3394355f3e30 +Block 0017 [ 43]: 91779f6973a7a103 +Block 0017 [ 44]: 15c5320b25394348 +Block 0017 [ 45]: 0f10820130a04127 +Block 0017 [ 46]: 319487b379c5f1fa +Block 0017 [ 47]: f9a7af31b5e73c6b +Block 0017 [ 48]: 127d7dd8a8a1c85c +Block 0017 [ 49]: acb5ef7d8732298c +Block 0017 [ 50]: 08332232ae0382e5 +Block 0017 [ 51]: 51250582ebb94ee8 +Block 0017 [ 52]: f84fd3e861577bbd +Block 0017 [ 53]: 6b26fb58367feb95 +Block 0017 [ 54]: df9f3d32ba3336ee +Block 0017 [ 55]: 5155ebd220efb0d2 +Block 0017 [ 56]: e178c553b64a81a2 +Block 0017 [ 57]: 098ba741f03ad24a +Block 0017 [ 58]: c16f280067cc2729 +Block 0017 [ 59]: 574811b3d231a4df +Block 0017 [ 60]: b7c1e511893af569 +Block 0017 [ 61]: 3b29211f0bfdcc03 +Block 0017 [ 62]: b6fdcdb1dfb27df4 +Block 0017 [ 63]: 2f0623a423bf9f9b +Block 0017 [ 64]: 00c97f0fa03bbdcd +Block 0017 [ 65]: 8e59dac12903971c +Block 0017 [ 66]: c71492c17ca1818d +Block 0017 [ 67]: 848aa69aa03ae0c8 +Block 0017 [ 68]: 8ca690303a718a1a +Block 0017 [ 69]: 7da40f323bc9ee34 +Block 0017 [ 70]: 41ea847cc9b2bd76 +Block 0017 [ 71]: 25a49ea6de3f0c52 +Block 0017 [ 72]: cf4d93c48f1e35a8 +Block 0017 [ 73]: 585128d5942b0376 +Block 0017 [ 74]: ab55eb453653dd3e +Block 0017 [ 75]: 2c12f55af3e1917f +Block 0017 [ 76]: 9ee6da77a8e82cec +Block 0017 [ 77]: 4bd6ddf3cf83631a +Block 0017 [ 78]: 30e4321586605141 +Block 0017 [ 79]: bed6fc4f0aa92e30 +Block 0017 [ 80]: 03c788844da03ad5 +Block 0017 [ 81]: 6de6b8a439c2334a +Block 0017 [ 82]: 334cb662ea6a20c0 +Block 0017 [ 83]: 261c2af8bb1cac22 +Block 0017 [ 84]: ea99a5a644b0d2c7 +Block 0017 [ 85]: 5b26ae0f91bf750c +Block 0017 [ 86]: d8fca02a32b73e10 +Block 0017 [ 87]: 6565907dcf1117c1 +Block 0017 [ 88]: 85d1ea8df3a60d46 +Block 0017 [ 89]: 5d19125acf3da900 +Block 0017 [ 90]: 9efb704db3d51276 +Block 0017 [ 91]: af54ed8281a78e58 +Block 0017 [ 92]: beb7449f1abb2e44 +Block 0017 [ 93]: f75330d91676f212 +Block 0017 [ 94]: a94814d6ebced6fd +Block 0017 [ 95]: 897d9e15c5dfdcb4 +Block 0017 [ 96]: d8e34107028ad021 +Block 0017 [ 97]: 293ebcd4466abd1d +Block 0017 [ 98]: 7254ba81b6ba11ad +Block 0017 [ 99]: 0390db567a96a4d9 +Block 0017 [100]: ccfe39f1c384118c +Block 0017 [101]: 43267d510015e12b +Block 0017 [102]: 280f4476d6f3ebd9 +Block 0017 [103]: 8760238c8360fcbf +Block 0017 [104]: 035d4cecf2bb1f1d +Block 0017 [105]: c142fe72cf22a6ae +Block 0017 [106]: 00ebf2d0e311b27e +Block 0017 [107]: 47798bfb775c7d54 +Block 0017 [108]: ce977fbfe5b65e34 +Block 0017 [109]: 92ff9b8cbe72c795 +Block 0017 [110]: a52f9937120521fa +Block 0017 [111]: 4584b9e83174b1e9 +Block 0017 [112]: dfe536bdd20cc1b4 +Block 0017 [113]: ecf8f4f29948ea49 +Block 0017 [114]: df7bc0f579ebb12a +Block 0017 [115]: a681fdb86e177244 +Block 0017 [116]: 79b17e4d1501eb36 +Block 0017 [117]: 0b690bd9f1abbcc1 +Block 0017 [118]: ecbc6a4e04ae26f1 +Block 0017 [119]: 779d3fcee066dac9 +Block 0017 [120]: f753cfc8cf14a180 +Block 0017 [121]: f80641ab303d1d0a +Block 0017 [122]: f6c8e8efda680da1 +Block 0017 [123]: 59c2c42e5080db17 +Block 0017 [124]: 2236f9288ec4ee14 +Block 0017 [125]: c55aa668a6c449be +Block 0017 [126]: 79d280f9c001c3da +Block 0017 [127]: 6f7e15d0071cc9b3 +Block 0018 [ 0]: 24c3e56d5f903fef +Block 0018 [ 1]: d1b0155e7ed77407 +Block 0018 [ 2]: 48027b4c6cf64f88 +Block 0018 [ 3]: 94c3af58d3faf91b +Block 0018 [ 4]: 74f92c253dca8e1c +Block 0018 [ 5]: 67b167f78d2d6020 +Block 0018 [ 6]: 0c7de09b37c02759 +Block 0018 [ 7]: 277affceef993cbf +Block 0018 [ 8]: c1995b671cded43b +Block 0018 [ 9]: dddad34e544c7881 +Block 0018 [ 10]: f4a3055714a6c8c7 +Block 0018 [ 11]: c0315efb62348bd2 +Block 0018 [ 12]: e6326929632dac14 +Block 0018 [ 13]: a6c25d68f8803e4b +Block 0018 [ 14]: 7acf39beabb63f94 +Block 0018 [ 15]: 2f83fce37c19e21c +Block 0018 [ 16]: 23ccecc2a8a38fb1 +Block 0018 [ 17]: fb91eb5c043d2716 +Block 0018 [ 18]: 43857050f463159a +Block 0018 [ 19]: e4690d9134bb6514 +Block 0018 [ 20]: 65871d3e136a8576 +Block 0018 [ 21]: 0941849804523512 +Block 0018 [ 22]: a76c754906d20fa3 +Block 0018 [ 23]: 720b4d043f954698 +Block 0018 [ 24]: e8e1b34b97efe5c6 +Block 0018 [ 25]: d65e0cafff3ca81b +Block 0018 [ 26]: 1015b96aff86a531 +Block 0018 [ 27]: 93db3f39dac63b89 +Block 0018 [ 28]: 27c64da54455bcf3 +Block 0018 [ 29]: fc07e831d5c9b636 +Block 0018 [ 30]: 7b32cf773c07e91a +Block 0018 [ 31]: eaaf151121b66a71 +Block 0018 [ 32]: 50734ccbd7fa7692 +Block 0018 [ 33]: 256941e161c2ca80 +Block 0018 [ 34]: d1b1558a980f6d5d +Block 0018 [ 35]: 70600d0b1c5f5a7c +Block 0018 [ 36]: 1889c20f14b6d47e +Block 0018 [ 37]: 5777eb45b6bc874d +Block 0018 [ 38]: 942a16b3b13eda53 +Block 0018 [ 39]: 0b03ac0435aa85ca +Block 0018 [ 40]: aad10114f5b3049d +Block 0018 [ 41]: 76a55e7d54f2b10c +Block 0018 [ 42]: f5965a11ddf92aa8 +Block 0018 [ 43]: 8b0f6ae29a2a6c7a +Block 0018 [ 44]: 135df7badfa08c89 +Block 0018 [ 45]: ea2401066fe560d4 +Block 0018 [ 46]: 562477e4bac2d2b8 +Block 0018 [ 47]: 3c71fb5ce80d6dc0 +Block 0018 [ 48]: fe7f4945d69e4cd8 +Block 0018 [ 49]: 04fee43cb4f3a04d +Block 0018 [ 50]: cfba36d25cc153f4 +Block 0018 [ 51]: d1463b7a0a975ab2 +Block 0018 [ 52]: 58dc72898c0d1d72 +Block 0018 [ 53]: c3334b968fe7170f +Block 0018 [ 54]: fd0741b983e69520 +Block 0018 [ 55]: 9b12d151bbd1836f +Block 0018 [ 56]: 7b9397a8e0fabde0 +Block 0018 [ 57]: beba98d7bda9bfee +Block 0018 [ 58]: 0d7395b3269cda03 +Block 0018 [ 59]: 32873a46cb76a56f +Block 0018 [ 60]: c3a4bce067ed614b +Block 0018 [ 61]: 240f6d3a4c6262b3 +Block 0018 [ 62]: 0d8cca9e57ad555b +Block 0018 [ 63]: abd6bfd9fea3bdb6 +Block 0018 [ 64]: cb82a692a45e3d10 +Block 0018 [ 65]: 91c6c5fddef8bdc6 +Block 0018 [ 66]: 50540941a55abb53 +Block 0018 [ 67]: 0fde1a645bd882cc +Block 0018 [ 68]: 82bb1379fa735cc9 +Block 0018 [ 69]: 592909a24cf2e71d +Block 0018 [ 70]: a4975ee76da39b0f +Block 0018 [ 71]: bc5eb397c2d15dd5 +Block 0018 [ 72]: 9ff9590633f36e98 +Block 0018 [ 73]: 6a4c0f97ab0100f7 +Block 0018 [ 74]: e2f2a364cd055c28 +Block 0018 [ 75]: 1082a32edba76a53 +Block 0018 [ 76]: 97bedd180d0ab0f2 +Block 0018 [ 77]: 841320c0656d5175 +Block 0018 [ 78]: e2bcd615276667ff +Block 0018 [ 79]: b6da9d70f45a817f +Block 0018 [ 80]: 05c1b04651e11c0a +Block 0018 [ 81]: b14db892c3cfcb2c +Block 0018 [ 82]: b127f0a55737c345 +Block 0018 [ 83]: ebfbd4f00fc01572 +Block 0018 [ 84]: 6e9f87e406f2f1e8 +Block 0018 [ 85]: 5385af9c9576c568 +Block 0018 [ 86]: 810ae26edb1dcf61 +Block 0018 [ 87]: 10a849c52efbefa6 +Block 0018 [ 88]: 34f45af18a0b340c +Block 0018 [ 89]: 1954ce64d34fee83 +Block 0018 [ 90]: e93701e0e0cbbd56 +Block 0018 [ 91]: ec8dea4b632d62db +Block 0018 [ 92]: 17f5f64702395fd3 +Block 0018 [ 93]: 0df98d15faacf9aa +Block 0018 [ 94]: bcf18c74021649d9 +Block 0018 [ 95]: 9f736366b0aaf256 +Block 0018 [ 96]: 8051586167b2167e +Block 0018 [ 97]: 6c3a10856e183e33 +Block 0018 [ 98]: 6e5a3236190684e3 +Block 0018 [ 99]: afa62b28d151194b +Block 0018 [100]: b1511ff8ff9de709 +Block 0018 [101]: 9456ec3070684f51 +Block 0018 [102]: f8b2e2c6b3a5ede1 +Block 0018 [103]: 957b0cff38ff5d65 +Block 0018 [104]: 80f65db2f4bef519 +Block 0018 [105]: 0a4b7424f557a97b +Block 0018 [106]: dbb46c78d3b16657 +Block 0018 [107]: 4fb97f89dbf34615 +Block 0018 [108]: 605a46364190bf07 +Block 0018 [109]: 82ab49f116e2d3a0 +Block 0018 [110]: 7bdca67b36403e69 +Block 0018 [111]: 76ddd2407cf40c49 +Block 0018 [112]: 816b6bdb860dcf94 +Block 0018 [113]: b1ef58ee0d58bf9e +Block 0018 [114]: 0ff5e16892fdc1e2 +Block 0018 [115]: 42e71d4690469785 +Block 0018 [116]: b18acdb8a0b68672 +Block 0018 [117]: f155ac095d6fa2ea +Block 0018 [118]: f60c65958b44f393 +Block 0018 [119]: ff5eb4d397fbae23 +Block 0018 [120]: 659e7b8fc27b481c +Block 0018 [121]: 0b0fee39c9b4978b +Block 0018 [122]: 66cd6e8f09ff280e +Block 0018 [123]: 66457a5d611d56b0 +Block 0018 [124]: c2af5b83515d5470 +Block 0018 [125]: e29fba1fd62392ca +Block 0018 [126]: 4d83dbe95866b4d4 +Block 0018 [127]: 7536f8c68069e3f3 +Block 0019 [ 0]: 722f273fc2dcb808 +Block 0019 [ 1]: b8ed98643c9037c8 +Block 0019 [ 2]: 7750cffa290e9bf5 +Block 0019 [ 3]: 70b53d0852adcc2d +Block 0019 [ 4]: ff012ca82a8502fd +Block 0019 [ 5]: dd31cf64aba30b03 +Block 0019 [ 6]: 1f8089c7e49c0295 +Block 0019 [ 7]: fb69aae42cd06e3c +Block 0019 [ 8]: 863ddde246472a00 +Block 0019 [ 9]: c43713ae38173c0b +Block 0019 [ 10]: f3b11690fd627fc2 +Block 0019 [ 11]: 8df098f89832649f +Block 0019 [ 12]: ee1808239b90adc6 +Block 0019 [ 13]: a1de235cd0a91f3a +Block 0019 [ 14]: c5ebc70a2c39e8ba +Block 0019 [ 15]: 7261ba38f8c0efc4 +Block 0019 [ 16]: 19ee91a1cfbf5b3d +Block 0019 [ 17]: f0332768e28a1b3a +Block 0019 [ 18]: 44edb26d9179e9c1 +Block 0019 [ 19]: 0cf32f79888b897a +Block 0019 [ 20]: 28a16746b980aa69 +Block 0019 [ 21]: 52fece763bc4b874 +Block 0019 [ 22]: 492462ddf0453667 +Block 0019 [ 23]: 9d5640570d88fc56 +Block 0019 [ 24]: 70757405d529a0e8 +Block 0019 [ 25]: 3b2af6a9e0c5eb14 +Block 0019 [ 26]: 42fa393692961d9d +Block 0019 [ 27]: acccc4f1b9fa4d77 +Block 0019 [ 28]: 00b0b01dc131a9c1 +Block 0019 [ 29]: 2b9dd58298aff850 +Block 0019 [ 30]: 1f9e9c8090846f83 +Block 0019 [ 31]: 66160b59c3f5914c +Block 0019 [ 32]: b9f5f550888de83b +Block 0019 [ 33]: c4a56854d14903c5 +Block 0019 [ 34]: c6d14f5cc3951abc +Block 0019 [ 35]: 08abd46128eb2bda +Block 0019 [ 36]: b9fdcd88d36e67f0 +Block 0019 [ 37]: 90fa2dd4e03640cb +Block 0019 [ 38]: fd16d218f1e56234 +Block 0019 [ 39]: 091acccd9d0e30d1 +Block 0019 [ 40]: e42811b626289ff9 +Block 0019 [ 41]: 1ece05985826d671 +Block 0019 [ 42]: c5f482a21ee796e0 +Block 0019 [ 43]: c06e692ca9f056c0 +Block 0019 [ 44]: e23ed7c9253dcaab +Block 0019 [ 45]: 6690fc1182d74429 +Block 0019 [ 46]: 6ef5a397f829abdd +Block 0019 [ 47]: 2683521b224ee50d +Block 0019 [ 48]: 0182b3c186f873a3 +Block 0019 [ 49]: 20c92c0febd05d7d +Block 0019 [ 50]: 01cc133fee6460de +Block 0019 [ 51]: c86d8364e693b5b9 +Block 0019 [ 52]: 23d64e599970dae2 +Block 0019 [ 53]: 0de884eb725ae3af +Block 0019 [ 54]: 517bcd0201644ed8 +Block 0019 [ 55]: 8df33bfe21658050 +Block 0019 [ 56]: 0c9930ca602516ad +Block 0019 [ 57]: 0ebf7d34c36aa33a +Block 0019 [ 58]: f6ee1dead03b43eb +Block 0019 [ 59]: b73cd68edd7f8248 +Block 0019 [ 60]: 4aa35e26918206fe +Block 0019 [ 61]: 3d876cdef4c6bd47 +Block 0019 [ 62]: 4e865ec2782bb709 +Block 0019 [ 63]: f74308f5e970cb9b +Block 0019 [ 64]: 2771aadf679ec45d +Block 0019 [ 65]: 226c76e4ba2a5dd7 +Block 0019 [ 66]: de0cddc2ae4427c8 +Block 0019 [ 67]: dd0c4bd379edeabd +Block 0019 [ 68]: 55fc60cd41a55679 +Block 0019 [ 69]: 82eefb6749f7d7c2 +Block 0019 [ 70]: 869e68618a19c7c7 +Block 0019 [ 71]: 442afd2c618bb724 +Block 0019 [ 72]: 3b0c6ff27923c66d +Block 0019 [ 73]: 4c982cc1c9926132 +Block 0019 [ 74]: 4985e72e8435d8ba +Block 0019 [ 75]: 73bb50df4a57233e +Block 0019 [ 76]: 54598373775f7082 +Block 0019 [ 77]: 989acb275bcd8f7e +Block 0019 [ 78]: 54fed75c76e59e7c +Block 0019 [ 79]: 48ca047ac54c6922 +Block 0019 [ 80]: 026b2df39c6a513d +Block 0019 [ 81]: 173bf4ba8e04d1da +Block 0019 [ 82]: 8acf7f1b9248060b +Block 0019 [ 83]: 46dc23cee3392db4 +Block 0019 [ 84]: f2c380c3aa45c2b5 +Block 0019 [ 85]: 3c7cfde74b2c36c0 +Block 0019 [ 86]: b6717d3bc372759f +Block 0019 [ 87]: dc311a8650a95f41 +Block 0019 [ 88]: 726c9df5a72d6b12 +Block 0019 [ 89]: a5c78f4fb2c4616a +Block 0019 [ 90]: 99752c728e64b11c +Block 0019 [ 91]: 2db8af40223e6337 +Block 0019 [ 92]: daf0df2c0fa99d1c +Block 0019 [ 93]: fa15f1ef7b4c253f +Block 0019 [ 94]: 55d5026d18fee917 +Block 0019 [ 95]: b28e3db01632bd47 +Block 0019 [ 96]: cf92192dec2a2c40 +Block 0019 [ 97]: cf6d5d9bc091e6f5 +Block 0019 [ 98]: dbce992d8c254db9 +Block 0019 [ 99]: 2e7ae686b8ca7ee8 +Block 0019 [100]: 384527ee71744859 +Block 0019 [101]: f5792f72aff7ce1f +Block 0019 [102]: 218acc6d548bffbd +Block 0019 [103]: c55a6901afdba4ee +Block 0019 [104]: 3f0321e8047687ac +Block 0019 [105]: 8c83bf546e2f4145 +Block 0019 [106]: f9ac4b2a66d9464d +Block 0019 [107]: c33356e2116f19e7 +Block 0019 [108]: aa1803bb336e1592 +Block 0019 [109]: bcb3bcda523ff128 +Block 0019 [110]: a8196da62d735972 +Block 0019 [111]: 83ac3bc10374503d +Block 0019 [112]: 82183e223bcdccdf +Block 0019 [113]: 6bf482af8ce0e92f +Block 0019 [114]: d33807071afa3e61 +Block 0019 [115]: a0889cc00ee25304 +Block 0019 [116]: ddcc3d96df20e1de +Block 0019 [117]: f31f7dab248a58b2 +Block 0019 [118]: 8d19be8959a8441a +Block 0019 [119]: de4916c0bdd8f395 +Block 0019 [120]: 08337c3616acbff2 +Block 0019 [121]: 1da9ee3be188c357 +Block 0019 [122]: e2be5499c55d69d5 +Block 0019 [123]: 8a88a87d2fcfaba3 +Block 0019 [124]: 57aa516673cb6b71 +Block 0019 [125]: e3f755c6f20e652b +Block 0019 [126]: 5a4131bef1f62b97 +Block 0019 [127]: 3db701be2103d01a +Block 0020 [ 0]: 70c6576f2e77e09a +Block 0020 [ 1]: 6601863f6b696595 +Block 0020 [ 2]: b91a34ab981fa137 +Block 0020 [ 3]: 736b66b7aab81706 +Block 0020 [ 4]: 65fb0a72aebe5b19 +Block 0020 [ 5]: f50ce081b2505436 +Block 0020 [ 6]: 021d3df7daa304bf +Block 0020 [ 7]: 61794a7f35b9385c +Block 0020 [ 8]: 17459a4b0e86f16d +Block 0020 [ 9]: 261d20aec867b2b1 +Block 0020 [ 10]: 7d6b10cb9e1ca1b6 +Block 0020 [ 11]: e771ea00bab91811 +Block 0020 [ 12]: 3b8d4966dba2fcee +Block 0020 [ 13]: b8cb7efbd136e0c5 +Block 0020 [ 14]: e905a8786d5c35d6 +Block 0020 [ 15]: 0febce01d9281167 +Block 0020 [ 16]: 030162e4b1bd5620 +Block 0020 [ 17]: 1d6c869d5abd924e +Block 0020 [ 18]: adae1f14c28c19c0 +Block 0020 [ 19]: a964bb0864bc9d52 +Block 0020 [ 20]: 648ef646997cadb1 +Block 0020 [ 21]: ca0321a35bf0cbdc +Block 0020 [ 22]: 59335968255b796e +Block 0020 [ 23]: 031511e73acec4df +Block 0020 [ 24]: 8c357525c9ec70e9 +Block 0020 [ 25]: 8b25fdfb42423ce6 +Block 0020 [ 26]: dfb06a7440745242 +Block 0020 [ 27]: 9e94b7cf234b4956 +Block 0020 [ 28]: 8c401a90a8168e37 +Block 0020 [ 29]: 431d28542972c237 +Block 0020 [ 30]: 344546c0e699c834 +Block 0020 [ 31]: aece7d9d6960069d +Block 0020 [ 32]: ea42707eb3a32685 +Block 0020 [ 33]: fd57e3a5f6e998cc +Block 0020 [ 34]: 52a662c2f6de431c +Block 0020 [ 35]: 0b255cf4fdd8ac5e +Block 0020 [ 36]: bc320584a71ba9e3 +Block 0020 [ 37]: c5fb2fee1e9e8106 +Block 0020 [ 38]: c2932e7718e22b16 +Block 0020 [ 39]: afb8c659f04a1d2e +Block 0020 [ 40]: 082e620daeb79466 +Block 0020 [ 41]: 043991be836d5eae +Block 0020 [ 42]: ad16fddbaa7ae57e +Block 0020 [ 43]: ab45c1663a1320cf +Block 0020 [ 44]: 3e2e2fad4ab6dd15 +Block 0020 [ 45]: 184d7c29d383f9cb +Block 0020 [ 46]: 11037c7773292bc4 +Block 0020 [ 47]: fa5cc51fb7a55375 +Block 0020 [ 48]: 9a2c041b82bdf603 +Block 0020 [ 49]: 63e9dad5b5d8e60c +Block 0020 [ 50]: d9750b241682d4bc +Block 0020 [ 51]: 970d5276092a0ea4 +Block 0020 [ 52]: 9dddabc29fe7edfa +Block 0020 [ 53]: 681055dcbfb3006a +Block 0020 [ 54]: 01900b21d31eff67 +Block 0020 [ 55]: 449abc581135982c +Block 0020 [ 56]: db2ae53eeee1c299 +Block 0020 [ 57]: 3dd54a6de8697c5b +Block 0020 [ 58]: f1e82c286114ddcd +Block 0020 [ 59]: adb5c79c12d8be22 +Block 0020 [ 60]: a09972fb6b077bb9 +Block 0020 [ 61]: 68eac35dcc5ff9e4 +Block 0020 [ 62]: 6364b9e7d921d09d +Block 0020 [ 63]: cb5f436ca07c7324 +Block 0020 [ 64]: 4aa340986fc7deaa +Block 0020 [ 65]: 458a6cfa537b5882 +Block 0020 [ 66]: 2a7a4bfe3923b89c +Block 0020 [ 67]: 1635e10d6f5d7235 +Block 0020 [ 68]: 28f5135a470b8332 +Block 0020 [ 69]: ff1eb2e7f4de0b70 +Block 0020 [ 70]: 12b3703e48703d4e +Block 0020 [ 71]: 1fb4586aca631990 +Block 0020 [ 72]: b39ea3c1335582eb +Block 0020 [ 73]: 0dc229d3c3fb5f8e +Block 0020 [ 74]: 35038bbcf50f7fb0 +Block 0020 [ 75]: b344ab23680de774 +Block 0020 [ 76]: 9d0ddb2f1c714c58 +Block 0020 [ 77]: 32a29abd2d42c740 +Block 0020 [ 78]: ac9856eb75f6da54 +Block 0020 [ 79]: 6e482388986341bb +Block 0020 [ 80]: 1aadb77781c10d89 +Block 0020 [ 81]: 06dd3907baa24d9b +Block 0020 [ 82]: ce12640b5e68b68a +Block 0020 [ 83]: 4dc6af7465c30b2e +Block 0020 [ 84]: e30c7faf4af19ed5 +Block 0020 [ 85]: f3bd1a9b0441641e +Block 0020 [ 86]: 8d0718fc38801ab2 +Block 0020 [ 87]: 329621668d8cac25 +Block 0020 [ 88]: 08fd2a23b99a3393 +Block 0020 [ 89]: 2f34f0550c5bf928 +Block 0020 [ 90]: 8af250cc80bc53c3 +Block 0020 [ 91]: 6e84810898ec71ca +Block 0020 [ 92]: 6d2f03ab20dcc568 +Block 0020 [ 93]: 7b6094febddf53a9 +Block 0020 [ 94]: f88eb9e8a6710cef +Block 0020 [ 95]: 015aebc0e7561485 +Block 0020 [ 96]: a2f1e67b4f53ef64 +Block 0020 [ 97]: b2f41b99adcabcb8 +Block 0020 [ 98]: 072c7441cad288fa +Block 0020 [ 99]: b7d76739d790000f +Block 0020 [100]: 8246205c8c8839ed +Block 0020 [101]: 36bf703de23ab32f +Block 0020 [102]: f50d0586961e5e1e +Block 0020 [103]: 0362b485dc0ecde9 +Block 0020 [104]: 3e8a15277d2384d3 +Block 0020 [105]: b00a398ae5bd9dcf +Block 0020 [106]: 07dbd6088a9b7b2e +Block 0020 [107]: a593dea22ee8de23 +Block 0020 [108]: 9dcc69bd05b50111 +Block 0020 [109]: f44fe5efbbe2a788 +Block 0020 [110]: 4c6ba01e0ce4a7bd +Block 0020 [111]: 2b29897c88458722 +Block 0020 [112]: f40cdc0d0d03360c +Block 0020 [113]: 4dd21c19c6bbca01 +Block 0020 [114]: 14a6671b6214c164 +Block 0020 [115]: 3a32de50b729cccf +Block 0020 [116]: c9187a994af18415 +Block 0020 [117]: 7fa0474d79569967 +Block 0020 [118]: 1b4425996a0c6378 +Block 0020 [119]: 076afc6c51ea4651 +Block 0020 [120]: 8e2cfd3f8ded4d1f +Block 0020 [121]: 15fe894d46c20a6f +Block 0020 [122]: a3f83bb955872823 +Block 0020 [123]: e6da877d40219104 +Block 0020 [124]: 1c8278e557d5a2db +Block 0020 [125]: 59846d21cfa0d9f6 +Block 0020 [126]: 81182cda9a926198 +Block 0020 [127]: 66c4a4c4af6cf770 +Block 0021 [ 0]: 97ba12617248d3a0 +Block 0021 [ 1]: a7474da1f3722804 +Block 0021 [ 2]: d812872de7c68fb0 +Block 0021 [ 3]: 77ff9583abecf493 +Block 0021 [ 4]: a115af0254d43eba +Block 0021 [ 5]: d859a2a9e6f64e30 +Block 0021 [ 6]: 74a626581f652ae9 +Block 0021 [ 7]: 2bf0ecb0ef299a6b +Block 0021 [ 8]: a3ecc9fe27c3c4fa +Block 0021 [ 9]: a6b5ee67c56a8a12 +Block 0021 [ 10]: ebb75bfd61ab58d5 +Block 0021 [ 11]: 140540d69b6b749c +Block 0021 [ 12]: 49dafaaea1750e39 +Block 0021 [ 13]: 9ce0775336a3f77a +Block 0021 [ 14]: d3efbd276ec1a746 +Block 0021 [ 15]: a1c82b2d2fd832a3 +Block 0021 [ 16]: 1b55d6ca561cf8f6 +Block 0021 [ 17]: 970ebebc2dbb4c47 +Block 0021 [ 18]: 55229dad6951aa65 +Block 0021 [ 19]: f3310d064331b06d +Block 0021 [ 20]: 76d95cafb7ff4bc0 +Block 0021 [ 21]: 8d5fd733bf770e1a +Block 0021 [ 22]: f637058052bcc6d1 +Block 0021 [ 23]: 4ab98283fba0118e +Block 0021 [ 24]: e8e525c902663eec +Block 0021 [ 25]: 644cca7d985c8a91 +Block 0021 [ 26]: c6c2de6b0e4ff1be +Block 0021 [ 27]: fc412f9b8a8cedd9 +Block 0021 [ 28]: 0e92b41df490818d +Block 0021 [ 29]: 1d0c2c517f488689 +Block 0021 [ 30]: 18b2da63716f204d +Block 0021 [ 31]: e554edf33f346126 +Block 0021 [ 32]: c08bda271a758810 +Block 0021 [ 33]: 5dd523abea7efb83 +Block 0021 [ 34]: d847a64de969361d +Block 0021 [ 35]: a4f36d26b3b54449 +Block 0021 [ 36]: 1921a0afad9f8fbf +Block 0021 [ 37]: 70da571767923985 +Block 0021 [ 38]: 6c5064a53ec3e555 +Block 0021 [ 39]: 62bcba250774bb08 +Block 0021 [ 40]: 2b5625ff6f5ba533 +Block 0021 [ 41]: c072367cce735fad +Block 0021 [ 42]: 8936f7691d34a967 +Block 0021 [ 43]: be608f7337bfed83 +Block 0021 [ 44]: c5644153fd94cc02 +Block 0021 [ 45]: b6976c4c85e42f9e +Block 0021 [ 46]: f8ad6580cc9a7eb0 +Block 0021 [ 47]: 3d824a32e3758d65 +Block 0021 [ 48]: f169ed5f08f9b944 +Block 0021 [ 49]: e87427a90507fbd4 +Block 0021 [ 50]: 931fb1fe7d965ede +Block 0021 [ 51]: 9b260a432ad72c1c +Block 0021 [ 52]: 79deb2541ce7342d +Block 0021 [ 53]: 69e5e734dba1fd9c +Block 0021 [ 54]: 1247ebe158d28acb +Block 0021 [ 55]: 7dbd681956aeb23a +Block 0021 [ 56]: 300321372051ac95 +Block 0021 [ 57]: 29a1f904e3279041 +Block 0021 [ 58]: d05fccea3fe647f4 +Block 0021 [ 59]: 2385827f254d2b4c +Block 0021 [ 60]: 56b9609de765952f +Block 0021 [ 61]: c94741ba55b5597a +Block 0021 [ 62]: 9e7913dccfeedd26 +Block 0021 [ 63]: 81fbd1291f9421ee +Block 0021 [ 64]: d6262e0e770aeb51 +Block 0021 [ 65]: c827cfb3a6abddfd +Block 0021 [ 66]: 278464d02be24499 +Block 0021 [ 67]: 6128073fae8d69e1 +Block 0021 [ 68]: a787862adac1f282 +Block 0021 [ 69]: 298346627e145ab3 +Block 0021 [ 70]: 13f37d5f03d860c0 +Block 0021 [ 71]: 472bc88d39141ca4 +Block 0021 [ 72]: a32d647eda32d4ef +Block 0021 [ 73]: adb7b6dbfd3ae3ee +Block 0021 [ 74]: e1269626ab25c0a2 +Block 0021 [ 75]: 0a81d0098dcb18b8 +Block 0021 [ 76]: 5a30c38f68fd8627 +Block 0021 [ 77]: 06680a83a31773f1 +Block 0021 [ 78]: 3bb8bfe6fdd1042b +Block 0021 [ 79]: 1991fe79ca1e3d2c +Block 0021 [ 80]: df82bee963637ef6 +Block 0021 [ 81]: f5f6405ea41a34d2 +Block 0021 [ 82]: fecb4282706d12a3 +Block 0021 [ 83]: 08944da6b98b49ff +Block 0021 [ 84]: da3991a854ebdb1e +Block 0021 [ 85]: 96d59a0a8eb94f1d +Block 0021 [ 86]: da88007dad0fb44d +Block 0021 [ 87]: 3a3a7c6401caadd1 +Block 0021 [ 88]: d1a4830ea6a0930c +Block 0021 [ 89]: 90ba4c240ce23c60 +Block 0021 [ 90]: 3ed84aa792e55aab +Block 0021 [ 91]: 69b4b96240dbeb77 +Block 0021 [ 92]: 2e83b29f76581a62 +Block 0021 [ 93]: 9b76934ba16a709c +Block 0021 [ 94]: 133875a80ec7e428 +Block 0021 [ 95]: 0cf80a0eb6cd800f +Block 0021 [ 96]: 875d7cacffadd659 +Block 0021 [ 97]: 6e7b01bd211dea78 +Block 0021 [ 98]: 6f414ca19d49a25c +Block 0021 [ 99]: 1a39a444f5f57861 +Block 0021 [100]: a49caaba3d8e8821 +Block 0021 [101]: b56b6106a9bd904a +Block 0021 [102]: ad2463203a51043e +Block 0021 [103]: e9093114910e868a +Block 0021 [104]: ab7afec2cd298c7f +Block 0021 [105]: 5ca3db0f2755ec4e +Block 0021 [106]: 930f28588ce3c4d9 +Block 0021 [107]: b9caed8e764da044 +Block 0021 [108]: 4ad9f43753450d1b +Block 0021 [109]: 2fd204073599e2e3 +Block 0021 [110]: 32e29607e96dcc49 +Block 0021 [111]: 346f9459d20813e1 +Block 0021 [112]: b9216cc91d1a0b93 +Block 0021 [113]: b2d7287641a5aedc +Block 0021 [114]: 64e3459f766c19a4 +Block 0021 [115]: a94828e02268bc34 +Block 0021 [116]: ab0bf58173c54029 +Block 0021 [117]: 34ece02bab456ed0 +Block 0021 [118]: faa3ac8c0f216393 +Block 0021 [119]: c72717b9c6cfa5e4 +Block 0021 [120]: de532f61d7c21181 +Block 0021 [121]: aaa343e41d74e64b +Block 0021 [122]: bed79982c13e22bd +Block 0021 [123]: a9d0acedec7fb082 +Block 0021 [124]: 33f9ee6919e5e69e +Block 0021 [125]: 9461e87f0d76e520 +Block 0021 [126]: 50d39455a480016a +Block 0021 [127]: 69d241940768dccf +Block 0022 [ 0]: 99ac09d3ecbcdbb4 +Block 0022 [ 1]: 514dda00e5127ffa +Block 0022 [ 2]: 03059e9afb29b1b3 +Block 0022 [ 3]: 5f2b16eedb2625c9 +Block 0022 [ 4]: 8421eca1dbfec1b2 +Block 0022 [ 5]: 1d9cd95877a17d18 +Block 0022 [ 6]: 29ad26ed44443664 +Block 0022 [ 7]: d5e9d0548f100140 +Block 0022 [ 8]: f2f96df7101178e1 +Block 0022 [ 9]: fcde7cc6e739d68c +Block 0022 [ 10]: 9da5994233b3b92c +Block 0022 [ 11]: ede676a1cfb49424 +Block 0022 [ 12]: 87f04a8bd8f02c3c +Block 0022 [ 13]: 793aa15c08c7d1cb +Block 0022 [ 14]: 6782338db894b187 +Block 0022 [ 15]: c4f72a9a6bcf2c10 +Block 0022 [ 16]: 00f5af2f848eb2f3 +Block 0022 [ 17]: decf9043e63c9b1a +Block 0022 [ 18]: 300b96ee9ee506c4 +Block 0022 [ 19]: d36b4e566db81299 +Block 0022 [ 20]: 90ce5819385cd408 +Block 0022 [ 21]: d2013dfebf9c5a82 +Block 0022 [ 22]: dfed4093841d7dee +Block 0022 [ 23]: f74c019e0b5502b9 +Block 0022 [ 24]: 14c8588c2533f91d +Block 0022 [ 25]: f1f261ad12cb3a9e +Block 0022 [ 26]: 46be19a1a1a0ba7d +Block 0022 [ 27]: 01cf062fa2e7b479 +Block 0022 [ 28]: c33e050c6fea3bc7 +Block 0022 [ 29]: 438d65b4399cf820 +Block 0022 [ 30]: f727a7bd6e61ec49 +Block 0022 [ 31]: f95dda0e791f32ff +Block 0022 [ 32]: cf91506b6b6351cd +Block 0022 [ 33]: 44aaf19ab3c4e0ba +Block 0022 [ 34]: fd54a5b7aa337d99 +Block 0022 [ 35]: a141b7ffddcdb8e3 +Block 0022 [ 36]: 9f79915e6dedfdaa +Block 0022 [ 37]: a69bc9b18050b6c0 +Block 0022 [ 38]: 2ce0fe170467aab2 +Block 0022 [ 39]: 94f3b3443bafb15e +Block 0022 [ 40]: f6368a58cb0d19c5 +Block 0022 [ 41]: c0f357c51f5bdb47 +Block 0022 [ 42]: a7273145bca106fe +Block 0022 [ 43]: ce91916807ea540d +Block 0022 [ 44]: 85af3d0bc3cbbbdf +Block 0022 [ 45]: c5e75b71391eed9a +Block 0022 [ 46]: e990ab8763434522 +Block 0022 [ 47]: 0a18de6ffcea0072 +Block 0022 [ 48]: b6b99c2642b1f93d +Block 0022 [ 49]: 880547abadac4ead +Block 0022 [ 50]: 9c824e5c3e3d840d +Block 0022 [ 51]: 71459956dc736b45 +Block 0022 [ 52]: d53fb6e0f374761c +Block 0022 [ 53]: 61b08dcef0ef837e +Block 0022 [ 54]: 584dfc7b7b1ac55d +Block 0022 [ 55]: 6d260c9b48104e21 +Block 0022 [ 56]: 74bd628609d0579b +Block 0022 [ 57]: 4da07fd544e14216 +Block 0022 [ 58]: 44699551cc96435d +Block 0022 [ 59]: 5cb6d7b5d4d32315 +Block 0022 [ 60]: 002c55ac837869de +Block 0022 [ 61]: 33910a7581ce0934 +Block 0022 [ 62]: c20bb59e0cb163b7 +Block 0022 [ 63]: 5724a2c79e0d567d +Block 0022 [ 64]: fc12585573a969a1 +Block 0022 [ 65]: 0f1802284711fc36 +Block 0022 [ 66]: d18a8169e1a758d7 +Block 0022 [ 67]: 55d40c0d1aa9d93c +Block 0022 [ 68]: 66f4cc1fd0b4a21c +Block 0022 [ 69]: 626c0c97a5746c99 +Block 0022 [ 70]: 5a8387f8935bd8d3 +Block 0022 [ 71]: 5774a5ef99ef0fa4 +Block 0022 [ 72]: 345753a67f42ffaa +Block 0022 [ 73]: d5c7db73671dd400 +Block 0022 [ 74]: 1c876fbd31b40929 +Block 0022 [ 75]: adb555c8cd4c682e +Block 0022 [ 76]: 4e35e1ec3a2fa91a +Block 0022 [ 77]: 97837b1d4e9d22e3 +Block 0022 [ 78]: db4de1fa218320cb +Block 0022 [ 79]: 6949e60bd0a77306 +Block 0022 [ 80]: 5a1a9285b471e18b +Block 0022 [ 81]: 133e1594f9013500 +Block 0022 [ 82]: 4fed50832b7552db +Block 0022 [ 83]: ea8ec75578b38f5e +Block 0022 [ 84]: 55f680462419d053 +Block 0022 [ 85]: 57a6bf1ae4c5cdda +Block 0022 [ 86]: 4490fb9d7437ec6c +Block 0022 [ 87]: 5c20149c3fdc0f19 +Block 0022 [ 88]: 3e05dd84d1b96161 +Block 0022 [ 89]: 8ee14ba173ef628c +Block 0022 [ 90]: 7c7335a772f5d1a0 +Block 0022 [ 91]: 218d2dc1909539f1 +Block 0022 [ 92]: c864e8ba266a87d9 +Block 0022 [ 93]: d05aa03f1c192d28 +Block 0022 [ 94]: 1a5afc3d25c10a33 +Block 0022 [ 95]: 06ebd6b0cab2a596 +Block 0022 [ 96]: ec56d04aa2cac393 +Block 0022 [ 97]: 84114dcff89ed7d6 +Block 0022 [ 98]: 9236b4914b6853c3 +Block 0022 [ 99]: 19b19c03c9f2cf00 +Block 0022 [100]: f89d5d10e0f2206d +Block 0022 [101]: b8c0768373077807 +Block 0022 [102]: 5f93b788171e6a3d +Block 0022 [103]: 06b4bffc543ba5ba +Block 0022 [104]: 2160cc4bcb298ce1 +Block 0022 [105]: a31ebc8cd3fb8e43 +Block 0022 [106]: 840ed2e07f648e5f +Block 0022 [107]: 44f7dabc1fa4ce16 +Block 0022 [108]: f3da6300d6853673 +Block 0022 [109]: 83a2d663f5bd1f39 +Block 0022 [110]: 467a553afb39e207 +Block 0022 [111]: 7e5d07e9e34aa631 +Block 0022 [112]: c18efe2cbee27f59 +Block 0022 [113]: 88c337ece41089b9 +Block 0022 [114]: 836dbe9587d964bd +Block 0022 [115]: d5dae636d08de614 +Block 0022 [116]: 8d10eb8da0c2f53f +Block 0022 [117]: 4a0f03949bc56298 +Block 0022 [118]: 2e2610735ed2c5e8 +Block 0022 [119]: 04d88eefe8be430f +Block 0022 [120]: b6f232d66a064d22 +Block 0022 [121]: 8b43f223c3bab19e +Block 0022 [122]: 42189f5dd777bdc7 +Block 0022 [123]: 26aebb9a0c7930c0 +Block 0022 [124]: 745a32b9b6d6ce9b +Block 0022 [125]: d82e6fa1d9eaa64c +Block 0022 [126]: f5226b2114974004 +Block 0022 [127]: d411871aafe92d03 +Block 0023 [ 0]: 099bad02ce6364d6 +Block 0023 [ 1]: 946434f53c381dfa +Block 0023 [ 2]: 7cc764145dcff211 +Block 0023 [ 3]: 863a1d0f6917e81f +Block 0023 [ 4]: b07148fffbf35d2e +Block 0023 [ 5]: 06e0a8c35d673389 +Block 0023 [ 6]: 0836a7016c46218d +Block 0023 [ 7]: f7448c33afda380d +Block 0023 [ 8]: 9d70de7501979872 +Block 0023 [ 9]: 5ec479e097342787 +Block 0023 [ 10]: 4c328e947adc0a3b +Block 0023 [ 11]: 673b567c3f825c7d +Block 0023 [ 12]: 88bbe75df8436559 +Block 0023 [ 13]: 31e8b9ff423389e9 +Block 0023 [ 14]: 7569469bba244732 +Block 0023 [ 15]: 0f019e02e9d44270 +Block 0023 [ 16]: 2cf0f216bb23dcbc +Block 0023 [ 17]: f942da467c94c759 +Block 0023 [ 18]: c531370dff6c7550 +Block 0023 [ 19]: 76eb32b05537d887 +Block 0023 [ 20]: 09be023c2f37ef6c +Block 0023 [ 21]: 913b6fb2ae92aa17 +Block 0023 [ 22]: 3905230d429ddb42 +Block 0023 [ 23]: 8dacca73716bd067 +Block 0023 [ 24]: b767e0600fbcad20 +Block 0023 [ 25]: fc4bbc20c754fe8f +Block 0023 [ 26]: 010fb475210b4052 +Block 0023 [ 27]: 55c219fa4a4e2d4a +Block 0023 [ 28]: 346444d97bc6ae08 +Block 0023 [ 29]: 51b0dc31dfae6277 +Block 0023 [ 30]: bd9651aca77ac723 +Block 0023 [ 31]: a6139c546b9d8a72 +Block 0023 [ 32]: e9e26f0535ae93f1 +Block 0023 [ 33]: d029451bda2edfd0 +Block 0023 [ 34]: 3f52bfe31df12f36 +Block 0023 [ 35]: d51d4d9383579576 +Block 0023 [ 36]: 918b16322ea2cd12 +Block 0023 [ 37]: 0fb4466b28e900dd +Block 0023 [ 38]: d06552715cb858c5 +Block 0023 [ 39]: 66700db36d68fd04 +Block 0023 [ 40]: 6c5248d72cc78817 +Block 0023 [ 41]: 6237033fbadc51c0 +Block 0023 [ 42]: 70ce5003d36e91fd +Block 0023 [ 43]: 9473b2ba7e1ea0b7 +Block 0023 [ 44]: 8570a1a79d0de212 +Block 0023 [ 45]: 38128c19a8cf3d94 +Block 0023 [ 46]: 996d86984478edb2 +Block 0023 [ 47]: 13a573e574db3c5f +Block 0023 [ 48]: 14c8a880130edffa +Block 0023 [ 49]: daa29af545495cbe +Block 0023 [ 50]: 2966004bbf930356 +Block 0023 [ 51]: 6254df94f338f8ea +Block 0023 [ 52]: 48ceb67f8fcfb1a1 +Block 0023 [ 53]: 054af1ac0f6f178a +Block 0023 [ 54]: bd24a125e957879e +Block 0023 [ 55]: 855df59044ecdbc7 +Block 0023 [ 56]: 2bdd65a1b699e3bd +Block 0023 [ 57]: 6cebfbc55dc696a6 +Block 0023 [ 58]: 3812eff0201089e2 +Block 0023 [ 59]: 012595753609368d +Block 0023 [ 60]: ae37b3e38d73252c +Block 0023 [ 61]: fb9610e25ae10d9a +Block 0023 [ 62]: fd0493c39dff6521 +Block 0023 [ 63]: 1abead7fa22e7ee7 +Block 0023 [ 64]: fa54f2336e7a816b +Block 0023 [ 65]: c9ef67deeb2238af +Block 0023 [ 66]: 3bd2bafd83abf2fa +Block 0023 [ 67]: 995385d15f693c1b +Block 0023 [ 68]: 35409549ee4db0c7 +Block 0023 [ 69]: 1e501283957b8d79 +Block 0023 [ 70]: 57edfd6799c7b1a0 +Block 0023 [ 71]: 42d993d322a85ca3 +Block 0023 [ 72]: 49842f3edfe3a13f +Block 0023 [ 73]: eaed319e568fe464 +Block 0023 [ 74]: 4839e1a7a8233599 +Block 0023 [ 75]: f2d5f7df30b2e85e +Block 0023 [ 76]: c9a770a607739db1 +Block 0023 [ 77]: 02c54ed70c63a598 +Block 0023 [ 78]: 27b1e90934def83a +Block 0023 [ 79]: 476fe1ecd08c315d +Block 0023 [ 80]: e546b55b51e06075 +Block 0023 [ 81]: 8bf363a6252cb544 +Block 0023 [ 82]: f712f271ef124632 +Block 0023 [ 83]: 19bd4969355d67b1 +Block 0023 [ 84]: b505bc0de2bc042f +Block 0023 [ 85]: 0461f15ec598306a +Block 0023 [ 86]: 7e0734c6a49752a4 +Block 0023 [ 87]: e97530b659023c82 +Block 0023 [ 88]: df66806a45af7ed4 +Block 0023 [ 89]: a1ee45ca25a4e8ef +Block 0023 [ 90]: 85f36f0919bda565 +Block 0023 [ 91]: af8d1c2bc3c6cda2 +Block 0023 [ 92]: d5c8b3905d6c4684 +Block 0023 [ 93]: 924285ed85d7f4fe +Block 0023 [ 94]: e667250c7fe0448d +Block 0023 [ 95]: f18072539252e69b +Block 0023 [ 96]: 98f930d88a11d73d +Block 0023 [ 97]: 40ddc2faea46a6fe +Block 0023 [ 98]: 55edf0abf338fe23 +Block 0023 [ 99]: 137afd6aac160ea4 +Block 0023 [100]: a930757fe62a632b +Block 0023 [101]: f26ea4497a99a22a +Block 0023 [102]: f7dd63b836565686 +Block 0023 [103]: e16156ef2389802e +Block 0023 [104]: e3e02a7fa444bc54 +Block 0023 [105]: d3e93563d3276e5a +Block 0023 [106]: 55e761b504d23408 +Block 0023 [107]: 4c1f0a70be317833 +Block 0023 [108]: 20a59044cc69cabc +Block 0023 [109]: e5642bf5fbf7694c +Block 0023 [110]: dc1e13a4fe52198e +Block 0023 [111]: 118b7c4b6335ca02 +Block 0023 [112]: 4f677c8f3f7d1653 +Block 0023 [113]: e3623052b8793124 +Block 0023 [114]: 64e8edf529114177 +Block 0023 [115]: 1b40d9ea83af342b +Block 0023 [116]: 68e7c45d6fe85d2b +Block 0023 [117]: 8d33a45c58de3420 +Block 0023 [118]: 6205c61932eac00e +Block 0023 [119]: 4c9001286a4a5748 +Block 0023 [120]: 629740cfc16c5f44 +Block 0023 [121]: aac9b6c66cf37178 +Block 0023 [122]: 362f773d06d7b5e5 +Block 0023 [123]: 7145aea05eabfbca +Block 0023 [124]: 3fa429c42644e339 +Block 0023 [125]: 026700c0b6e2e78c +Block 0023 [126]: 0db5145e9f66582e +Block 0023 [127]: f013125cd14c2aa2 +Block 0024 [ 0]: e2165971c08fea98 +Block 0024 [ 1]: 956b34362d16bde6 +Block 0024 [ 2]: 0a750c1da3669c5a +Block 0024 [ 3]: 28f0cc2dec551759 +Block 0024 [ 4]: b460b783bb6ce4d4 +Block 0024 [ 5]: ccd11552304ffe83 +Block 0024 [ 6]: 895f1451900d0571 +Block 0024 [ 7]: c718c33fc912a775 +Block 0024 [ 8]: 6ac891a642a415e0 +Block 0024 [ 9]: f9cc3a0b0bfd732e +Block 0024 [ 10]: 32c8c20180df24fc +Block 0024 [ 11]: 083ec47a8fc783bf +Block 0024 [ 12]: 10d4a62e2dfca22d +Block 0024 [ 13]: a7cbc7fe934df62d +Block 0024 [ 14]: 60b767b23c7b5434 +Block 0024 [ 15]: 013a9f1758cd46f4 +Block 0024 [ 16]: c521969bc47e72bb +Block 0024 [ 17]: c8c2805cf7474ad1 +Block 0024 [ 18]: d73691bff67d34eb +Block 0024 [ 19]: 0109966c69bf5c53 +Block 0024 [ 20]: bcef0f8a35acd7dc +Block 0024 [ 21]: b5ab773d7386f310 +Block 0024 [ 22]: ddbe3e6b9b29d885 +Block 0024 [ 23]: 53d4e2d94e14df8d +Block 0024 [ 24]: dd77c5edfdebd8dd +Block 0024 [ 25]: 4dfe82d7fcb944f8 +Block 0024 [ 26]: 1dda860fdb104746 +Block 0024 [ 27]: 690c21298d00576a +Block 0024 [ 28]: 31f616a8603ba209 +Block 0024 [ 29]: df15e6faf136ed42 +Block 0024 [ 30]: a2d0b72888d9a03b +Block 0024 [ 31]: f22e82632b4cd9f9 +Block 0024 [ 32]: e15829a9ca7c6ff9 +Block 0024 [ 33]: d0e0c25534f07259 +Block 0024 [ 34]: 39a144104a62a724 +Block 0024 [ 35]: ba85ed7991504855 +Block 0024 [ 36]: 29bb22ded5d822d1 +Block 0024 [ 37]: dc45c5b64f27ac67 +Block 0024 [ 38]: b5ab1d0a5d3ca66d +Block 0024 [ 39]: ebdec5e7d82f2f5f +Block 0024 [ 40]: 2660e8938068ecbf +Block 0024 [ 41]: fc5c71724b0cb677 +Block 0024 [ 42]: 84ee0dc836f79250 +Block 0024 [ 43]: 5b679856c2388af0 +Block 0024 [ 44]: fbf4eb8f24c8e20c +Block 0024 [ 45]: 2fe8cbd52863716c +Block 0024 [ 46]: fede1a5b69045a28 +Block 0024 [ 47]: 65809054232875e1 +Block 0024 [ 48]: f1a33e9b660490ae +Block 0024 [ 49]: f728418282376b71 +Block 0024 [ 50]: 910beb5b9d19dd01 +Block 0024 [ 51]: 0ef1de00ba9c6f07 +Block 0024 [ 52]: 7a669f3a91b22362 +Block 0024 [ 53]: 80fb3d95430597a7 +Block 0024 [ 54]: 10b373244e409034 +Block 0024 [ 55]: 71aaa62305372b2e +Block 0024 [ 56]: 787cdf237ee54aab +Block 0024 [ 57]: 956c44880fd8f8cb +Block 0024 [ 58]: 60c90815957df46f +Block 0024 [ 59]: 83f28fcaeaf7efdf +Block 0024 [ 60]: 7817d1a16c11f2b8 +Block 0024 [ 61]: 8d957aba9fe91cde +Block 0024 [ 62]: cc487239691feca9 +Block 0024 [ 63]: 7223ce9510cd99f0 +Block 0024 [ 64]: 574f63f3b893bd20 +Block 0024 [ 65]: 2f2654e8cf49ca0e +Block 0024 [ 66]: 338f89121a53ea59 +Block 0024 [ 67]: 511e9d8f0027e12d +Block 0024 [ 68]: 31d58a613f863ff8 +Block 0024 [ 69]: ff90079b882b3303 +Block 0024 [ 70]: 3dbbf7c9ff0da4f4 +Block 0024 [ 71]: bb52ab6617231643 +Block 0024 [ 72]: e62a9b54fc156ac1 +Block 0024 [ 73]: fca1f4a80bb48a37 +Block 0024 [ 74]: 04106b8fa9a32d1c +Block 0024 [ 75]: 64d243aa253f7eb1 +Block 0024 [ 76]: 2f763fbb0c2adac4 +Block 0024 [ 77]: edc93685822747f9 +Block 0024 [ 78]: d4cd3faa4576d0ff +Block 0024 [ 79]: cdd3212556200783 +Block 0024 [ 80]: 0f6c01aa978124bc +Block 0024 [ 81]: daf5f1d5f6ebc523 +Block 0024 [ 82]: a6a7d120838f1a38 +Block 0024 [ 83]: a29692c9d853e590 +Block 0024 [ 84]: 7190defba554d3dd +Block 0024 [ 85]: d778f0e9b1a010ea +Block 0024 [ 86]: efca87f19ffc3d91 +Block 0024 [ 87]: d83dc74dad48654f +Block 0024 [ 88]: 83bbcf53dbe87809 +Block 0024 [ 89]: 954a6988f2584a5e +Block 0024 [ 90]: 5fa4f2aa07e61f2d +Block 0024 [ 91]: 4419aa301b0edf63 +Block 0024 [ 92]: ae2a42774762f64f +Block 0024 [ 93]: e8c6383746f81621 +Block 0024 [ 94]: 29c3f2535d94b29c +Block 0024 [ 95]: 0a04988ad66aa658 +Block 0024 [ 96]: 554e3723e34d327f +Block 0024 [ 97]: b8f13dac291e9a97 +Block 0024 [ 98]: 07aecb10260d229f +Block 0024 [ 99]: 34df4da902134c48 +Block 0024 [100]: 6496134cfe2ba958 +Block 0024 [101]: 35b7391dfa167dc7 +Block 0024 [102]: 1b746919447ddb5e +Block 0024 [103]: c567f3eb1deeeaf0 +Block 0024 [104]: 6c38ac1788c46474 +Block 0024 [105]: d95e56354346a0b8 +Block 0024 [106]: cd077f86ac3d4edb +Block 0024 [107]: 1bb1f6b8dc1fb74c +Block 0024 [108]: 34a43954ba7d40b0 +Block 0024 [109]: 8648223359c3c41b +Block 0024 [110]: 91367335cda75388 +Block 0024 [111]: c4c21989dadcacb9 +Block 0024 [112]: ed6f4ff9c4d511b0 +Block 0024 [113]: fa9839f79f324c1f +Block 0024 [114]: f9d30bbf2c448265 +Block 0024 [115]: e77b01d0fb7a56a6 +Block 0024 [116]: 1b32529459898945 +Block 0024 [117]: 597b007f6fce7bd5 +Block 0024 [118]: c2b1361d1d167c45 +Block 0024 [119]: 3af3e20caa6c0158 +Block 0024 [120]: 9e61cd876ca97f38 +Block 0024 [121]: a93f46dfd68eb195 +Block 0024 [122]: cc1861552459b84e +Block 0024 [123]: 7aaf11c61f8ee8cd +Block 0024 [124]: 7010b56bb3d8d5a0 +Block 0024 [125]: eba510b51849285a +Block 0024 [126]: 1c1cdef86a925a57 +Block 0024 [127]: ef174658add9bc4e +Block 0025 [ 0]: 7fec1e914e41b561 +Block 0025 [ 1]: 8d453719a29ade82 +Block 0025 [ 2]: 4c44899c93e4fc6c +Block 0025 [ 3]: 29c0996cb00e492f +Block 0025 [ 4]: f8a70a32463afdaf +Block 0025 [ 5]: 3a7899c650c11af9 +Block 0025 [ 6]: bab6cbf971ef5305 +Block 0025 [ 7]: a8b4f7ba8b398784 +Block 0025 [ 8]: 73211324c30b68f3 +Block 0025 [ 9]: 623fe1e8f3cc900d +Block 0025 [ 10]: dc28af58c2f66a8d +Block 0025 [ 11]: 97cad6d2d8c6a9a0 +Block 0025 [ 12]: 7cd26c2cdb0b33a9 +Block 0025 [ 13]: 4794dfd6fbc171f0 +Block 0025 [ 14]: 05249ce01b3a8164 +Block 0025 [ 15]: b76e3ffe8767ee52 +Block 0025 [ 16]: 7beffefcb5523eff +Block 0025 [ 17]: bb5bc39e22e26736 +Block 0025 [ 18]: ab7961a2693b9b73 +Block 0025 [ 19]: 6209dfcad9e4dd27 +Block 0025 [ 20]: a1e4650c2db6be75 +Block 0025 [ 21]: fda9226ba7242240 +Block 0025 [ 22]: cf61b8b6356eb618 +Block 0025 [ 23]: ac2640d22df34c79 +Block 0025 [ 24]: 5024c3162fc67605 +Block 0025 [ 25]: 02256e53ff6da584 +Block 0025 [ 26]: 93ce393513783a84 +Block 0025 [ 27]: f66dadb003f85c57 +Block 0025 [ 28]: 0845f1d883f7459b +Block 0025 [ 29]: 00c32dc23c554d5d +Block 0025 [ 30]: 8a08a8902817f8a6 +Block 0025 [ 31]: 5308f47b7bb4a416 +Block 0025 [ 32]: 0cbef7467a40258b +Block 0025 [ 33]: e38877ed232a6297 +Block 0025 [ 34]: cd673cc2e015e8c3 +Block 0025 [ 35]: 6ae3ce670e62e29b +Block 0025 [ 36]: 78406412241f4dbf +Block 0025 [ 37]: 82340f60ec09dc7c +Block 0025 [ 38]: 0389649c90d3bd0d +Block 0025 [ 39]: 925d8d83d4a607ed +Block 0025 [ 40]: 2729cf9bf166d4cc +Block 0025 [ 41]: d116cfe5268cffc4 +Block 0025 [ 42]: 6b20a063a5057041 +Block 0025 [ 43]: 695aec8a0fec8f9f +Block 0025 [ 44]: 31ada27506d76516 +Block 0025 [ 45]: bf876ae720b84147 +Block 0025 [ 46]: ca643a7481f8052d +Block 0025 [ 47]: 3aff4d1535fa8346 +Block 0025 [ 48]: e32ffbfb48fa5a47 +Block 0025 [ 49]: ca4cac70a619a571 +Block 0025 [ 50]: d87acc4e60f2ed5b +Block 0025 [ 51]: a6759d0d86d5a6de +Block 0025 [ 52]: 22b94e6b1b2404c8 +Block 0025 [ 53]: 5d393398fcf14d57 +Block 0025 [ 54]: ed5ccc3e832ed159 +Block 0025 [ 55]: 147825a8a16b75a4 +Block 0025 [ 56]: 60e4990ac55196d2 +Block 0025 [ 57]: c274b29fa07122a5 +Block 0025 [ 58]: f508a05f24ed2a53 +Block 0025 [ 59]: 18f64b9695cc5087 +Block 0025 [ 60]: 41301013a11a2eea +Block 0025 [ 61]: cf1f820abded4e61 +Block 0025 [ 62]: f945403230120a27 +Block 0025 [ 63]: 143916edcea38206 +Block 0025 [ 64]: b468dd69c66bc0a2 +Block 0025 [ 65]: e983ac240732b25d +Block 0025 [ 66]: b96d92378b0dd639 +Block 0025 [ 67]: 468af3ef419975a3 +Block 0025 [ 68]: fa16fabd0450c504 +Block 0025 [ 69]: d876668000d8d18b +Block 0025 [ 70]: aa94e1c840e22475 +Block 0025 [ 71]: 0d8c86f2c096de62 +Block 0025 [ 72]: 295fb4a3ed96d94f +Block 0025 [ 73]: 47e05d1e6dbee24b +Block 0025 [ 74]: fd6243959bdbb659 +Block 0025 [ 75]: 10dd4a463ea83767 +Block 0025 [ 76]: 0eaa5cc32a273b99 +Block 0025 [ 77]: 88912904ce45fc60 +Block 0025 [ 78]: ccb0d9f387f74dbd +Block 0025 [ 79]: 405c47e118dee494 +Block 0025 [ 80]: b3f306cf8fea7d62 +Block 0025 [ 81]: 9c91b96d5bb9a697 +Block 0025 [ 82]: 3aa3a7334cb4c9d5 +Block 0025 [ 83]: 77aa2074e793da72 +Block 0025 [ 84]: 373258b45e261ad0 +Block 0025 [ 85]: a51b5dae4eb90126 +Block 0025 [ 86]: fdea9113f6951015 +Block 0025 [ 87]: ef0d4164c8ee9560 +Block 0025 [ 88]: 1d23cb4d4c9e43ac +Block 0025 [ 89]: 42416e0e356e80ab +Block 0025 [ 90]: 803d276ae917a23d +Block 0025 [ 91]: 8369f2919b947247 +Block 0025 [ 92]: 2a2aa71103176ab1 +Block 0025 [ 93]: 57658b2de0fcff86 +Block 0025 [ 94]: 66a2f1e9854343bf +Block 0025 [ 95]: 63a8e311a7610e18 +Block 0025 [ 96]: 6fb19e84fc761401 +Block 0025 [ 97]: 3524af3cb2f85c3e +Block 0025 [ 98]: 7868214e92c478d4 +Block 0025 [ 99]: e58934b63e931f63 +Block 0025 [100]: 0f6f38837b3640c4 +Block 0025 [101]: 7ba53b2d8568d174 +Block 0025 [102]: d4287578bc4b9c80 +Block 0025 [103]: 3b81ca6bb022200e +Block 0025 [104]: 4a1c1961b6f6abef +Block 0025 [105]: 60b02a0b6fe0e5b2 +Block 0025 [106]: 960fe18d397dfc00 +Block 0025 [107]: 497c1301e2120010 +Block 0025 [108]: 2743e5a8fa54d8fd +Block 0025 [109]: d91051c35b6937d9 +Block 0025 [110]: 61cf2d54b6a88b23 +Block 0025 [111]: aa97b9a04103678e +Block 0025 [112]: 88e8cc12ce6811d8 +Block 0025 [113]: 55ffb84df352154f +Block 0025 [114]: bc142122988a14af +Block 0025 [115]: 37de60d0a05f0003 +Block 0025 [116]: 8e24d02b3a35ec25 +Block 0025 [117]: 102c19d5020c7991 +Block 0025 [118]: ecd2c067a6d6325e +Block 0025 [119]: 924903bbe73407f7 +Block 0025 [120]: 672e27fff84fcd25 +Block 0025 [121]: 55952481cec95079 +Block 0025 [122]: 895d0739c3033a5c +Block 0025 [123]: 49849f73384e29a1 +Block 0025 [124]: d886142337a344d5 +Block 0025 [125]: 4059e0437a4c4d45 +Block 0025 [126]: ab9f890c59d37d30 +Block 0025 [127]: d35dccaa6b900138 +Block 0026 [ 0]: eee79f21af3c1e8e +Block 0026 [ 1]: cc2b33ab486fc093 +Block 0026 [ 2]: 7db236b8961a5233 +Block 0026 [ 3]: 319862e736fc58f1 +Block 0026 [ 4]: bdfa5963f1a5be5b +Block 0026 [ 5]: 5cf9608979c5355e +Block 0026 [ 6]: 4175701f1efa27d6 +Block 0026 [ 7]: 24ef75feaae50536 +Block 0026 [ 8]: 955e1030a76356d9 +Block 0026 [ 9]: d4c681c9bdc99c39 +Block 0026 [ 10]: d85f521c1aed09e7 +Block 0026 [ 11]: 45b8930d91788202 +Block 0026 [ 12]: 3d0729ae0f077706 +Block 0026 [ 13]: 6b0aedc4b086f3ee +Block 0026 [ 14]: b13861f6559ad8b2 +Block 0026 [ 15]: 6e5711968499f603 +Block 0026 [ 16]: 2922cc84dace481e +Block 0026 [ 17]: 7bf9a9a7faf8ad75 +Block 0026 [ 18]: 0ea59090b01bb758 +Block 0026 [ 19]: 89fc6435584e1314 +Block 0026 [ 20]: 7d0b42809c01601f +Block 0026 [ 21]: cd0195da60ebc4ca +Block 0026 [ 22]: 4837f09b307c04c7 +Block 0026 [ 23]: 36d3ca566e75c126 +Block 0026 [ 24]: a72fab6fed57b401 +Block 0026 [ 25]: 1ab0894c537871df +Block 0026 [ 26]: 6e53e4d625a51697 +Block 0026 [ 27]: 3da3deee9e4bc1b9 +Block 0026 [ 28]: 3524a0a179c6c924 +Block 0026 [ 29]: 840b3b1ba8ce34b6 +Block 0026 [ 30]: 53632d16b059cd40 +Block 0026 [ 31]: 647a5a5a55faac31 +Block 0026 [ 32]: 549d91d1f69ad199 +Block 0026 [ 33]: 2d0fa16485540e89 +Block 0026 [ 34]: 5a720ab2729b3793 +Block 0026 [ 35]: 22bcd8adb364c826 +Block 0026 [ 36]: a5f4256a78698151 +Block 0026 [ 37]: 5d0db6ce354e4290 +Block 0026 [ 38]: 947386a9e7360515 +Block 0026 [ 39]: 2a602fa9c315d38d +Block 0026 [ 40]: 3b5f77908f5ac97e +Block 0026 [ 41]: f62232e1a9e7c5f2 +Block 0026 [ 42]: 2ddc59304e07afff +Block 0026 [ 43]: 77270e436e65970a +Block 0026 [ 44]: 7f4850d45d0749e0 +Block 0026 [ 45]: d45d4e3f3366ddc9 +Block 0026 [ 46]: b93f772be1a3c78c +Block 0026 [ 47]: 4ef41e1a491b0786 +Block 0026 [ 48]: fa1b81838aadaf3f +Block 0026 [ 49]: 25699d36489510a7 +Block 0026 [ 50]: a545657caf170dd7 +Block 0026 [ 51]: 72017a211d0bbe62 +Block 0026 [ 52]: 1e9f826d09a0cab0 +Block 0026 [ 53]: f460f400efdd444f +Block 0026 [ 54]: a13fe8780376dbd1 +Block 0026 [ 55]: 98de57bda86100c4 +Block 0026 [ 56]: 45ffa1109383aebb +Block 0026 [ 57]: 51140cd9ad461755 +Block 0026 [ 58]: a851fb5f98b0d712 +Block 0026 [ 59]: 129097e9827e8523 +Block 0026 [ 60]: 08d008e8b91022dc +Block 0026 [ 61]: f928103deb0d802f +Block 0026 [ 62]: 38fcb3cbe1b11398 +Block 0026 [ 63]: 884212b2014cbcde +Block 0026 [ 64]: 6eb5e9ea0e3d1e5f +Block 0026 [ 65]: b45d847bfbcc5d82 +Block 0026 [ 66]: fbb702537bcfad8c +Block 0026 [ 67]: 8c61ddcb3cc2c197 +Block 0026 [ 68]: 37d5c6fb5974522f +Block 0026 [ 69]: 8356ebe985ec8ee8 +Block 0026 [ 70]: 80699d5d11742823 +Block 0026 [ 71]: 1bb1bb7a29b5f605 +Block 0026 [ 72]: 563409efa7d51aec +Block 0026 [ 73]: 91f6bbd7bd7840db +Block 0026 [ 74]: 62b862178bbbdeff +Block 0026 [ 75]: 4421a9f0633e5051 +Block 0026 [ 76]: 4a516a9ba47089e1 +Block 0026 [ 77]: 62a99ffac0b6ac28 +Block 0026 [ 78]: b5de42edd231de76 +Block 0026 [ 79]: ab223fa9002f8262 +Block 0026 [ 80]: aa5f21352cb23793 +Block 0026 [ 81]: 2e8aecaff5c1920d +Block 0026 [ 82]: 6fd6c1fa0bdfe9ad +Block 0026 [ 83]: f41b93489dd5d2fc +Block 0026 [ 84]: b5879ed954e3753e +Block 0026 [ 85]: a9a6346518d7265f +Block 0026 [ 86]: 7e55ef6f8be4f96f +Block 0026 [ 87]: 8915bc4f72f7e290 +Block 0026 [ 88]: e8f985beffef4195 +Block 0026 [ 89]: 0df30da439929ad8 +Block 0026 [ 90]: 65715634474e0c57 +Block 0026 [ 91]: cf051f53301a1280 +Block 0026 [ 92]: c13d30b7dbd59dc6 +Block 0026 [ 93]: 24161f8474d19be2 +Block 0026 [ 94]: 360846888ff2e5ed +Block 0026 [ 95]: 38715e7b8b17fc35 +Block 0026 [ 96]: a4741555b86046e8 +Block 0026 [ 97]: aa9a1a9591d65a3e +Block 0026 [ 98]: 767e5303940f01ff +Block 0026 [ 99]: b5247410c8d63475 +Block 0026 [100]: 3925646e1d5aee02 +Block 0026 [101]: 1803e317f46525a6 +Block 0026 [102]: ffcda1f5e28d1756 +Block 0026 [103]: 6567f296ff4f4122 +Block 0026 [104]: 653dd7e1836c5988 +Block 0026 [105]: 886f7c81c988d824 +Block 0026 [106]: 0d013b026518c3dd +Block 0026 [107]: 4fe2dfc65b4fe2d2 +Block 0026 [108]: 0bf2a1b164b22c42 +Block 0026 [109]: c043304c9083f586 +Block 0026 [110]: faea655742205723 +Block 0026 [111]: f42d636411a368a2 +Block 0026 [112]: 61c54f74a70abaf0 +Block 0026 [113]: 2018d953876f6124 +Block 0026 [114]: be334d3bae590130 +Block 0026 [115]: f13b8cf85d13f182 +Block 0026 [116]: f21645954df1cd54 +Block 0026 [117]: 9b737e10256a2fb8 +Block 0026 [118]: b3cf82a575fbe5ab +Block 0026 [119]: 5f265cad6ea1b14f +Block 0026 [120]: 7ac6b2d3ddf28088 +Block 0026 [121]: 8379ed4fae10de46 +Block 0026 [122]: e7079089c6dc636c +Block 0026 [123]: b7baecd0386b51b7 +Block 0026 [124]: 22c242b2a6d72f34 +Block 0026 [125]: 667fe4a58f5d2dcd +Block 0026 [126]: 95fa7431de515fd0 +Block 0026 [127]: e4d3fb6334c9ce97 +Block 0027 [ 0]: 95cc13c27dac11e0 +Block 0027 [ 1]: 9cd4b9d03cfb1dca +Block 0027 [ 2]: 99dc6b6b20905e25 +Block 0027 [ 3]: c65a7b0d85a1b052 +Block 0027 [ 4]: 615780330d0d4fcb +Block 0027 [ 5]: 91063aeab24cc367 +Block 0027 [ 6]: 7fef51645f233b87 +Block 0027 [ 7]: ea98795e8670e73f +Block 0027 [ 8]: b1835ec86b349192 +Block 0027 [ 9]: 98d2ac020adc50b3 +Block 0027 [ 10]: c64169feae7a03ab +Block 0027 [ 11]: 2a0401a8673c849d +Block 0027 [ 12]: 9ec963971adafe0d +Block 0027 [ 13]: 23c8ee325fe41f07 +Block 0027 [ 14]: 9cd9a0ab69d88679 +Block 0027 [ 15]: 70620926995771f7 +Block 0027 [ 16]: 412a42d7552db869 +Block 0027 [ 17]: 127a9d4f512c8c78 +Block 0027 [ 18]: b1f768cb54661374 +Block 0027 [ 19]: 4c40d442e2be9165 +Block 0027 [ 20]: 196a5e740a20c61a +Block 0027 [ 21]: cd756f83cc1e67d1 +Block 0027 [ 22]: 2bd8b214950f2a2b +Block 0027 [ 23]: 89d607084ba66af5 +Block 0027 [ 24]: 94b170d6c657e48d +Block 0027 [ 25]: 47e7d25dee2010a0 +Block 0027 [ 26]: 75274d0f5d1749e0 +Block 0027 [ 27]: ebca58ce3bc31452 +Block 0027 [ 28]: 776047d1eeedd606 +Block 0027 [ 29]: 3407ed41b231de65 +Block 0027 [ 30]: 28839677058efe92 +Block 0027 [ 31]: 4f0ad4617266354d +Block 0027 [ 32]: b58d45fc16ace760 +Block 0027 [ 33]: 0b469c2426665e50 +Block 0027 [ 34]: 9567c3437165695d +Block 0027 [ 35]: 6a33dbd1b503711a +Block 0027 [ 36]: 7fabae608ee3e8b8 +Block 0027 [ 37]: 83db64f31f42033e +Block 0027 [ 38]: a0e5e912cc5d3d3e +Block 0027 [ 39]: 2d7ed49e3cbf01cd +Block 0027 [ 40]: 96d3428f9fb93f11 +Block 0027 [ 41]: cb3ad898f8306b30 +Block 0027 [ 42]: 976498e32043cb2d +Block 0027 [ 43]: a7bf2d8c654826b9 +Block 0027 [ 44]: 1b979445eeb0247c +Block 0027 [ 45]: 4900f21dfd9f261f +Block 0027 [ 46]: 0be7ad994dd83751 +Block 0027 [ 47]: 2a28f760e8cfa6b3 +Block 0027 [ 48]: 4763d85a8b97536d +Block 0027 [ 49]: 03c4986b76d07230 +Block 0027 [ 50]: 9295e3f685a292c0 +Block 0027 [ 51]: 8a13bfda9f53a779 +Block 0027 [ 52]: e6fbc596a08c812f +Block 0027 [ 53]: 6f2c97960a54b9ff +Block 0027 [ 54]: a95b9bb892e33ad9 +Block 0027 [ 55]: 027bdcb1d4b52e75 +Block 0027 [ 56]: 93f6f341920ffdc7 +Block 0027 [ 57]: a1fd97e0f5da32af +Block 0027 [ 58]: 0bcf62886848b1e9 +Block 0027 [ 59]: 6e25a14e5433ac03 +Block 0027 [ 60]: 132fcbfe477f036c +Block 0027 [ 61]: 75a92ed68ce010d8 +Block 0027 [ 62]: 7c83f7bd5b194717 +Block 0027 [ 63]: 9518cd21fd0f176b +Block 0027 [ 64]: c373918eeaff9a99 +Block 0027 [ 65]: f9d5cb0527a0fab2 +Block 0027 [ 66]: 6b8052ee4e6c9eb8 +Block 0027 [ 67]: 4475452b265d8526 +Block 0027 [ 68]: 97ff0a402d283f29 +Block 0027 [ 69]: 47a28f8f668be30b +Block 0027 [ 70]: 0ce6135b75db2705 +Block 0027 [ 71]: f64a8a64b9a8b771 +Block 0027 [ 72]: e1e3bb7060a7fc4b +Block 0027 [ 73]: 02d019461560420d +Block 0027 [ 74]: 2a0c7f3203179483 +Block 0027 [ 75]: 1e53454b8473f274 +Block 0027 [ 76]: b82e79d9ee2fb12c +Block 0027 [ 77]: bf5bb18121a39453 +Block 0027 [ 78]: 13db251407e143e9 +Block 0027 [ 79]: a14c8eeac312f066 +Block 0027 [ 80]: bda30209efbfd004 +Block 0027 [ 81]: a816c337d880067b +Block 0027 [ 82]: 1514d0b15f85f6c5 +Block 0027 [ 83]: 14cfce4e0208bfa9 +Block 0027 [ 84]: 3f51407c083bdf83 +Block 0027 [ 85]: a8f28065fc004cc2 +Block 0027 [ 86]: f568afd0750735d8 +Block 0027 [ 87]: 4ac604a9699fbf25 +Block 0027 [ 88]: 34bb3001275762df +Block 0027 [ 89]: d82c054cbfec3252 +Block 0027 [ 90]: efb756acf812c5af +Block 0027 [ 91]: 5e0c11a707b379c8 +Block 0027 [ 92]: 0c0b52a5aa880fdb +Block 0027 [ 93]: 23895fe21b252e23 +Block 0027 [ 94]: 0e09635640fbadc0 +Block 0027 [ 95]: 39254b4e838b2f32 +Block 0027 [ 96]: ef5aaa0ecfbcbff9 +Block 0027 [ 97]: bb973544611c61b6 +Block 0027 [ 98]: 092b871664df6963 +Block 0027 [ 99]: 9f53a82922c82954 +Block 0027 [100]: dd6b16d4e8a4cc08 +Block 0027 [101]: 729f3afc047e52fa +Block 0027 [102]: bf5afa90e0abcb45 +Block 0027 [103]: d08500e0472967d1 +Block 0027 [104]: 8a01c778549f1d5b +Block 0027 [105]: 508e2cae29cbd162 +Block 0027 [106]: f8aadda50119c6dd +Block 0027 [107]: 6471e9aacb4d3110 +Block 0027 [108]: 587e2be246825736 +Block 0027 [109]: 1c4870ef364e8310 +Block 0027 [110]: 38ff3234b1eab64f +Block 0027 [111]: 4777693323256caa +Block 0027 [112]: 546824a3717104ef +Block 0027 [113]: 7063337898d609ef +Block 0027 [114]: c47e1708358f5032 +Block 0027 [115]: 85a4009bc5ffacc4 +Block 0027 [116]: 6512c7fe4585fe84 +Block 0027 [117]: 64f96860f4ba19d9 +Block 0027 [118]: eea974193a470d0e +Block 0027 [119]: 4123eac778690e31 +Block 0027 [120]: 9e8db8ec03ba056e +Block 0027 [121]: 8d1c8ab5487d9c9e +Block 0027 [122]: 27bc44f8b6608e52 +Block 0027 [123]: c5bd310b76c5194b +Block 0027 [124]: 2dae5cc9b0c327ef +Block 0027 [125]: cd0b20120f305504 +Block 0027 [126]: da0438041b4d5fa6 +Block 0027 [127]: 2ba18b31e43eade9 +Block 0028 [ 0]: ad8685e10cf2f919 +Block 0028 [ 1]: f6d22e193cac9b5f +Block 0028 [ 2]: caf5f2aabad6ad7b +Block 0028 [ 3]: ff5f32793e153b97 +Block 0028 [ 4]: c874a053b7eb1054 +Block 0028 [ 5]: 017ead4ebd2919e1 +Block 0028 [ 6]: 16b3b42213fe9b27 +Block 0028 [ 7]: 51c42934f453d785 +Block 0028 [ 8]: 8a39cfedde85b7fd +Block 0028 [ 9]: 80c9b2edb6cfa758 +Block 0028 [ 10]: 9afbbdc13ebb7c56 +Block 0028 [ 11]: 757e8f7715fb1aec +Block 0028 [ 12]: 4819c7e370720a42 +Block 0028 [ 13]: 6d76add26824ec7c +Block 0028 [ 14]: 61369c6d5ca30058 +Block 0028 [ 15]: 6a45b512fcefd574 +Block 0028 [ 16]: 4b18609149cefbb1 +Block 0028 [ 17]: b4f97ebade05e5d3 +Block 0028 [ 18]: 7daa2261afde9c2f +Block 0028 [ 19]: 66a98710a8c996b3 +Block 0028 [ 20]: 775ec612f0bac175 +Block 0028 [ 21]: 4bec6cc007f93196 +Block 0028 [ 22]: 6b5f0ba5117c13f1 +Block 0028 [ 23]: 3c8c904aea6eb348 +Block 0028 [ 24]: 77d851f25de2106e +Block 0028 [ 25]: 5bc8c342588b6280 +Block 0028 [ 26]: 3b84b6c6c38f1d93 +Block 0028 [ 27]: 3c8d8be0fe63e3a2 +Block 0028 [ 28]: 8e522662eab779fd +Block 0028 [ 29]: 0ecc0852e256f091 +Block 0028 [ 30]: be8f1bc3d5c71d67 +Block 0028 [ 31]: aed364e39a0f9f78 +Block 0028 [ 32]: e9e3a26f011cc0ca +Block 0028 [ 33]: afdca7a6ed0dd0ce +Block 0028 [ 34]: 05e9611dbb492b0c +Block 0028 [ 35]: b2d474ae67fcf6cc +Block 0028 [ 36]: cca9ff415d063e5f +Block 0028 [ 37]: ad9c2063ab1dcfbe +Block 0028 [ 38]: 4a9b800d68b88e2b +Block 0028 [ 39]: cbc3811f6957142f +Block 0028 [ 40]: 4d0503c9d66615c1 +Block 0028 [ 41]: ce3260f867eb4c95 +Block 0028 [ 42]: d1e76a7573c84e69 +Block 0028 [ 43]: c2c0cd96186c1781 +Block 0028 [ 44]: 9f36ee52a4329b7a +Block 0028 [ 45]: 87577edce1de66e6 +Block 0028 [ 46]: 816f80f6b2061edf +Block 0028 [ 47]: 17f9254bbdb5ac9e +Block 0028 [ 48]: e40ba54a1dc58fb0 +Block 0028 [ 49]: c3c1eb8de29e7f18 +Block 0028 [ 50]: 354e33ca9c7dc248 +Block 0028 [ 51]: f9641c60a1a69d30 +Block 0028 [ 52]: 9cbb5f6e87f8c5fd +Block 0028 [ 53]: 64d73e9d34cf28c1 +Block 0028 [ 54]: d242fc42d7f2ffdd +Block 0028 [ 55]: f79e36c08fa89318 +Block 0028 [ 56]: 49e82aaed9ec936f +Block 0028 [ 57]: 1240ee732e47d6a3 +Block 0028 [ 58]: facae1f5c6ac05f4 +Block 0028 [ 59]: 166a45523aeb1bfc +Block 0028 [ 60]: b30a305b36f190f3 +Block 0028 [ 61]: 7d2a4d7e5d29121d +Block 0028 [ 62]: 968f49abe714a1b2 +Block 0028 [ 63]: 1cc6c2145467657a +Block 0028 [ 64]: cc01c5f6fd8a42ff +Block 0028 [ 65]: 024febbd2427e866 +Block 0028 [ 66]: 60a9cee8fce0c2d2 +Block 0028 [ 67]: e1fceead57c03d4e +Block 0028 [ 68]: 726d7063bfa06784 +Block 0028 [ 69]: f688bd3a4835db4e +Block 0028 [ 70]: ddb6cbdf3bc1bb02 +Block 0028 [ 71]: 6fa7b201ec1bc4ca +Block 0028 [ 72]: 95cf4dc66e7625e1 +Block 0028 [ 73]: 6ed3c8efe613bd10 +Block 0028 [ 74]: 757e4772cea3852e +Block 0028 [ 75]: ec993d1bf6628c4e +Block 0028 [ 76]: aafa342b0fca8218 +Block 0028 [ 77]: 3874afd94e642562 +Block 0028 [ 78]: cba5970115ce5176 +Block 0028 [ 79]: a7b71cdd3ad1acb7 +Block 0028 [ 80]: 62333c9468ca0305 +Block 0028 [ 81]: f1ef305c21e55009 +Block 0028 [ 82]: 718435bd796146f8 +Block 0028 [ 83]: 622ccb59f1a22063 +Block 0028 [ 84]: 70f09c47e1a6037c +Block 0028 [ 85]: 63f46f14080976fd +Block 0028 [ 86]: 634f6d468361e03d +Block 0028 [ 87]: a46eb367a206683f +Block 0028 [ 88]: e70c1678cdf68f8e +Block 0028 [ 89]: cbfb3a46a4d51de7 +Block 0028 [ 90]: d9ee4028cebda472 +Block 0028 [ 91]: be5a5e7eb14f4e97 +Block 0028 [ 92]: 54980c3d0e11d17e +Block 0028 [ 93]: 650d4b43e8c1ea7c +Block 0028 [ 94]: 2b416705ae191d8b +Block 0028 [ 95]: 3eaffbb3c482a960 +Block 0028 [ 96]: bd0c8d5322ccc92b +Block 0028 [ 97]: 8fbb7f24539b0a83 +Block 0028 [ 98]: a556eaba9a3ea820 +Block 0028 [ 99]: 7a17a82dccc42eff +Block 0028 [100]: 4ce767729f962f45 +Block 0028 [101]: 2cb0ef025528422e +Block 0028 [102]: f2bd0ef295a5e7ac +Block 0028 [103]: 0c1c521fe8e6e437 +Block 0028 [104]: d89928a6b49ac759 +Block 0028 [105]: 54be46737f4e6f23 +Block 0028 [106]: 60bce70bb0d241d9 +Block 0028 [107]: 54d68c8a0ae774bd +Block 0028 [108]: f0a53cfa33bac937 +Block 0028 [109]: 60a10ff7da90dd83 +Block 0028 [110]: 6853b2706aadea1a +Block 0028 [111]: 24f9ce2b7bc8be46 +Block 0028 [112]: 6c0fe4b51a2e19cf +Block 0028 [113]: 5a982a426db92263 +Block 0028 [114]: 482d0dd31690892b +Block 0028 [115]: 8efdc4d5017429be +Block 0028 [116]: f575bc4565d51dd5 +Block 0028 [117]: 0ea5dd071321eaf6 +Block 0028 [118]: 52fbf8d427e76b99 +Block 0028 [119]: 46b3e05be5e398e8 +Block 0028 [120]: 3ddf2eb3c2b8e700 +Block 0028 [121]: bc78f822a065e9f3 +Block 0028 [122]: bdf8d5b4c5a8ba2d +Block 0028 [123]: f9c2b061b26bd2b7 +Block 0028 [124]: 33fe73f04f25bab5 +Block 0028 [125]: 62e764f93e73da37 +Block 0028 [126]: fa48fb80cf7a027a +Block 0028 [127]: 2fe93dab8fc62031 +Block 0029 [ 0]: 1c25114d080054b2 +Block 0029 [ 1]: 3049978dd3910faa +Block 0029 [ 2]: 630665bb66071a71 +Block 0029 [ 3]: 615f93e0080ad64a +Block 0029 [ 4]: 2e0e1c1bff1818bb +Block 0029 [ 5]: e71abf025fe71ad9 +Block 0029 [ 6]: 8083e314d46d24cb +Block 0029 [ 7]: ef0ec0198e11c2d6 +Block 0029 [ 8]: 9c25fd2cca5a3433 +Block 0029 [ 9]: 17d6327676bc3cbd +Block 0029 [ 10]: 083ba01aa922c0b9 +Block 0029 [ 11]: fc7476498b286d72 +Block 0029 [ 12]: 45ef0a52cb9120c0 +Block 0029 [ 13]: bc92315cd1ad1289 +Block 0029 [ 14]: 8adbd6b2d9def208 +Block 0029 [ 15]: ef7f1d7f6b273fdd +Block 0029 [ 16]: e1a66a8a177b0e92 +Block 0029 [ 17]: 7f0c17759a6a2c81 +Block 0029 [ 18]: 74f038a1222ade0b +Block 0029 [ 19]: e6b639a3ee39c877 +Block 0029 [ 20]: 8e8271212187b0ed +Block 0029 [ 21]: d1119b8a538012b7 +Block 0029 [ 22]: 9684a1db67815f03 +Block 0029 [ 23]: 92f13cbbc4511e8e +Block 0029 [ 24]: 04402e8baa138996 +Block 0029 [ 25]: 1421773017b7fcd0 +Block 0029 [ 26]: 425e4a2efb095890 +Block 0029 [ 27]: 615c4f54d6c05360 +Block 0029 [ 28]: 3cc3440506895656 +Block 0029 [ 29]: fbf3191e5e1dec36 +Block 0029 [ 30]: 00924a5c517f3ba5 +Block 0029 [ 31]: 641949bc41558437 +Block 0029 [ 32]: 95851f54663602d5 +Block 0029 [ 33]: 13518907e57abcab +Block 0029 [ 34]: 10df5be39581451d +Block 0029 [ 35]: 8c26dfc57214aa1f +Block 0029 [ 36]: 440d0670541231b7 +Block 0029 [ 37]: 22adc451023f7135 +Block 0029 [ 38]: bf90ad6b7d57a9d8 +Block 0029 [ 39]: 65f314a76571d0e6 +Block 0029 [ 40]: 4521c4fe7648e0e5 +Block 0029 [ 41]: a7819acc24b48997 +Block 0029 [ 42]: 9cbe988f344202aa +Block 0029 [ 43]: a5d8ca9a782a8d01 +Block 0029 [ 44]: 402a6cbbab4fbaac +Block 0029 [ 45]: bdcb98d56cf4b174 +Block 0029 [ 46]: 0fb55ee8828984d7 +Block 0029 [ 47]: cba941a9289119f2 +Block 0029 [ 48]: 406e10fe6482ae08 +Block 0029 [ 49]: 2ddf615535d61c97 +Block 0029 [ 50]: 1169c7db459d36b5 +Block 0029 [ 51]: 7c69e32963774bc5 +Block 0029 [ 52]: bab51bdf732a22a9 +Block 0029 [ 53]: 72338e75da6941d7 +Block 0029 [ 54]: 05cdf8d4d23c1510 +Block 0029 [ 55]: 2404f79400e9fa76 +Block 0029 [ 56]: 847854111a5076f3 +Block 0029 [ 57]: e28e0bbd9ac7c69e +Block 0029 [ 58]: f3fd0ca625676710 +Block 0029 [ 59]: 002d56307624a3de +Block 0029 [ 60]: 133b4d50c98238bc +Block 0029 [ 61]: 3db2517e7c12314a +Block 0029 [ 62]: 2887c63233a5c95c +Block 0029 [ 63]: 5b3df7053a5627f1 +Block 0029 [ 64]: f2373bec9848cf4b +Block 0029 [ 65]: 4f588754eec3c136 +Block 0029 [ 66]: 9b21f67a882b1990 +Block 0029 [ 67]: 243398980ba0d418 +Block 0029 [ 68]: b8a6edd946336b02 +Block 0029 [ 69]: 972f614eaf755f5d +Block 0029 [ 70]: 95074346cac8ed2b +Block 0029 [ 71]: 3ac12cf785f77d86 +Block 0029 [ 72]: 60f68806dd076b17 +Block 0029 [ 73]: d17fd5032a3d6b02 +Block 0029 [ 74]: 814f967198fec4c8 +Block 0029 [ 75]: 83f7d4dadafc179b +Block 0029 [ 76]: e709c02efada24c5 +Block 0029 [ 77]: 0d0580392c94ef2b +Block 0029 [ 78]: 046f19ac94b708f0 +Block 0029 [ 79]: f72fd5548fe8734f +Block 0029 [ 80]: cf00ecb33d557287 +Block 0029 [ 81]: e92d7ff78dade0f8 +Block 0029 [ 82]: 40598f10781e56ff +Block 0029 [ 83]: 040feadfeed71c71 +Block 0029 [ 84]: 1063149856339077 +Block 0029 [ 85]: 4aa74045e43ea7e2 +Block 0029 [ 86]: 26bc42c15328824a +Block 0029 [ 87]: 30a9638eaf11ce13 +Block 0029 [ 88]: 2dab95d3873af38f +Block 0029 [ 89]: 1118fe8e5f9278f5 +Block 0029 [ 90]: 16a7a469defe11a0 +Block 0029 [ 91]: db2c2013d8e6ea43 +Block 0029 [ 92]: 7b4773221d047734 +Block 0029 [ 93]: 4a1983262693af37 +Block 0029 [ 94]: f06ee2140af0a9f9 +Block 0029 [ 95]: 850d8f5b7be81399 +Block 0029 [ 96]: 1a32294f6575ad23 +Block 0029 [ 97]: fe3be63e5a2e6017 +Block 0029 [ 98]: 62805a7392fd4ffb +Block 0029 [ 99]: 1b33f67dec4b3903 +Block 0029 [100]: 9984dc27e9ad088f +Block 0029 [101]: 812c94fe8957095c +Block 0029 [102]: cc8fb61d7c16933a +Block 0029 [103]: 85f5d2ab0045cefd +Block 0029 [104]: 1503d44775433d09 +Block 0029 [105]: 652bfd106009a78e +Block 0029 [106]: e24f695c93fd5286 +Block 0029 [107]: 52404a1998c8ecff +Block 0029 [108]: 7e6ea513c1f5d6da +Block 0029 [109]: eb3a8171f4c3792f +Block 0029 [110]: e07da16a2319a335 +Block 0029 [111]: 381983c2feec9e07 +Block 0029 [112]: 714b1e5e148d6efb +Block 0029 [113]: e8058f7258172de5 +Block 0029 [114]: ca88c08a5a4b3cd1 +Block 0029 [115]: a7964146721530a4 +Block 0029 [116]: ebda1b93e6508268 +Block 0029 [117]: 1db938a8c1b0fb0d +Block 0029 [118]: 5fc6ea1a90e9039f +Block 0029 [119]: 460363f3dfbc6922 +Block 0029 [120]: 3c47febd956a90d4 +Block 0029 [121]: 5bf8e6cf0e64a21f +Block 0029 [122]: 1f453952acab6593 +Block 0029 [123]: 223e2d93bb88d64e +Block 0029 [124]: b444bb7bffbf06a9 +Block 0029 [125]: 6a38ebfc13ea2972 +Block 0029 [126]: e2eef6c6de25759d +Block 0029 [127]: 9768792450c49524 +Block 0030 [ 0]: 7ba3f579ddca2190 +Block 0030 [ 1]: 22d29b3c61068d60 +Block 0030 [ 2]: 87e20cd13655d9e0 +Block 0030 [ 3]: 504338f38abb9345 +Block 0030 [ 4]: 203c4012aeca1437 +Block 0030 [ 5]: 7329325b4838e0af +Block 0030 [ 6]: bb401b9ee25b488f +Block 0030 [ 7]: b1ef9f8114b85fa7 +Block 0030 [ 8]: 1040cc21ec703f3a +Block 0030 [ 9]: 4024e59925036861 +Block 0030 [ 10]: 4f81c9b2909a55da +Block 0030 [ 11]: a2cfa25e0e056fee +Block 0030 [ 12]: 83597c4710a6133e +Block 0030 [ 13]: 10b0b67df1881d63 +Block 0030 [ 14]: 32537c2d1bf8dbf4 +Block 0030 [ 15]: 2309f58471c388ef +Block 0030 [ 16]: 4a92e3537e0f7ec3 +Block 0030 [ 17]: 7d7bcdb20434f4b3 +Block 0030 [ 18]: 41ce82991845a620 +Block 0030 [ 19]: 941e16e476dd2690 +Block 0030 [ 20]: 6722b57a04e8a452 +Block 0030 [ 21]: b362caa175d37ccf +Block 0030 [ 22]: e6da12fe73f8a7a4 +Block 0030 [ 23]: ab91792510f58cc9 +Block 0030 [ 24]: 2f276058b3ca8b9e +Block 0030 [ 25]: d03fcd3844ead151 +Block 0030 [ 26]: 2bbbcbb509696ccc +Block 0030 [ 27]: a3c4cbea53e221b4 +Block 0030 [ 28]: 0ca8c51c32abbd85 +Block 0030 [ 29]: 12cecfde86337188 +Block 0030 [ 30]: 9115c3760647e3e0 +Block 0030 [ 31]: f0872dd56649161c +Block 0030 [ 32]: 8323778bd67875eb +Block 0030 [ 33]: 20a38125a1456cdf +Block 0030 [ 34]: c7132e10f95659b5 +Block 0030 [ 35]: 43550cbfaf96e971 +Block 0030 [ 36]: 906c6e43621fb3ab +Block 0030 [ 37]: a96773c8c2bf7bb8 +Block 0030 [ 38]: 77d9183329e7d8db +Block 0030 [ 39]: 976779ce3d284ef1 +Block 0030 [ 40]: fd3d3938f738f649 +Block 0030 [ 41]: 604939458597a8f2 +Block 0030 [ 42]: c16d61d770651c85 +Block 0030 [ 43]: 1788013376bf8022 +Block 0030 [ 44]: 22a75751a1a17395 +Block 0030 [ 45]: 7829de955a6b8108 +Block 0030 [ 46]: 0022a57f1fb5f1a2 +Block 0030 [ 47]: 41994f78614e71f8 +Block 0030 [ 48]: f90c7409006cdef3 +Block 0030 [ 49]: 6a5cfff126910613 +Block 0030 [ 50]: 71c80cab4e5b7d18 +Block 0030 [ 51]: fa8aa1522ce8b68d +Block 0030 [ 52]: 820294d934fd6ced +Block 0030 [ 53]: d5e0cc4de5354cd7 +Block 0030 [ 54]: fcceb29cda3fbb78 +Block 0030 [ 55]: b594083617ab7aa0 +Block 0030 [ 56]: e325471e296b5e13 +Block 0030 [ 57]: f5a3bfa29afd89d9 +Block 0030 [ 58]: 8365b026b7ae8265 +Block 0030 [ 59]: 06c4fdf81946a2d5 +Block 0030 [ 60]: 5c48237336016b39 +Block 0030 [ 61]: 09530a283cfd6aab +Block 0030 [ 62]: cc6a6548585a674c +Block 0030 [ 63]: 9ff25b0d09e3e588 +Block 0030 [ 64]: 74b16415b3a2942c +Block 0030 [ 65]: a2e929656474b2cc +Block 0030 [ 66]: f4c527bff2e0e132 +Block 0030 [ 67]: ed1f016e22c6bd7f +Block 0030 [ 68]: 6eabcdb711291cbf +Block 0030 [ 69]: 1afcd226b75700c6 +Block 0030 [ 70]: 38c0c65b11670ab6 +Block 0030 [ 71]: d8ce9e6ece91a980 +Block 0030 [ 72]: 798152643540f8d7 +Block 0030 [ 73]: c6b670b1959efccc +Block 0030 [ 74]: b1e22df81dd3fedf +Block 0030 [ 75]: 9e1f11ba0e058be6 +Block 0030 [ 76]: 07bd69d09794811a +Block 0030 [ 77]: 2ec47cbcbddeaeaf +Block 0030 [ 78]: 2df03bc4ba861b66 +Block 0030 [ 79]: ba773ed001496798 +Block 0030 [ 80]: 569b7778aff8670b +Block 0030 [ 81]: f46700e1c69e0435 +Block 0030 [ 82]: 5d74c9c45ba0de59 +Block 0030 [ 83]: 663e4cc2d268901a +Block 0030 [ 84]: 00ed57ccb43adc65 +Block 0030 [ 85]: f1028091a25d523a +Block 0030 [ 86]: b58ed0b0be701cb5 +Block 0030 [ 87]: 7ec399c9d0e0541e +Block 0030 [ 88]: a19d52d03c224f50 +Block 0030 [ 89]: aec2c87ef572e728 +Block 0030 [ 90]: 86cb9de77d58a1ed +Block 0030 [ 91]: 8916cdedc2f849a7 +Block 0030 [ 92]: 923cd22741ba9877 +Block 0030 [ 93]: bad3241c62d70131 +Block 0030 [ 94]: b8c8a46b492cd0cf +Block 0030 [ 95]: 583734e81f9b799f +Block 0030 [ 96]: 99f4c7482bd62b5f +Block 0030 [ 97]: 662934d9c8f13647 +Block 0030 [ 98]: ddde62fd5a66320a +Block 0030 [ 99]: 36b6b76c7659e86a +Block 0030 [100]: a8a030b06bf008c3 +Block 0030 [101]: 4091921778cf0f24 +Block 0030 [102]: f81c778387bdbe2a +Block 0030 [103]: 2d6fda29822ccf34 +Block 0030 [104]: 248cd0848efa0c98 +Block 0030 [105]: 2c95378b298a51b2 +Block 0030 [106]: beef562930250524 +Block 0030 [107]: 297b07c36a410f16 +Block 0030 [108]: 81610babf47ce7c5 +Block 0030 [109]: 1ef0a62159d4fe68 +Block 0030 [110]: 123b278bfdc3cd4c +Block 0030 [111]: cb138a7cf3457b3b +Block 0030 [112]: 824a513598683458 +Block 0030 [113]: b95ad1a909d09977 +Block 0030 [114]: f440f03dd9315c6d +Block 0030 [115]: 38f7b95bb7a655f9 +Block 0030 [116]: 1aa8af7867cf8c4a +Block 0030 [117]: efbbb9c8ec4864fc +Block 0030 [118]: 2a65eab6449268f7 +Block 0030 [119]: 78445cb93766fe81 +Block 0030 [120]: 91e91b63495526ae +Block 0030 [121]: 58472c829e44b0ce +Block 0030 [122]: d6979f417e37ce01 +Block 0030 [123]: 50e1ee7e7bbcadc6 +Block 0030 [124]: ac9e9063117ce00a +Block 0030 [125]: 724bbcb180df74f7 +Block 0030 [126]: 81731221098e1b21 +Block 0030 [127]: c8a2a98bbc450bcd +Block 0031 [ 0]: 045d89b2fef33cae +Block 0031 [ 1]: 4e612fc089c32623 +Block 0031 [ 2]: 619e71d9bb28fd39 +Block 0031 [ 3]: 27c3e53832cf0a19 +Block 0031 [ 4]: 64bb6a5d7ec18d9d +Block 0031 [ 5]: 18ed96ac0b1c3404 +Block 0031 [ 6]: 6c2d9ab21881ebd2 +Block 0031 [ 7]: bdfced95a3534f2e +Block 0031 [ 8]: 7b94334f82a87289 +Block 0031 [ 9]: 99ce29bbd4828ee3 +Block 0031 [ 10]: 1382201a56c62bd1 +Block 0031 [ 11]: 4c3aecadfffa1945 +Block 0031 [ 12]: 5d02d36270de91d2 +Block 0031 [ 13]: 194281f0b57ab6ca +Block 0031 [ 14]: 17990c3c8c43ea86 +Block 0031 [ 15]: c2613028a91da2bc +Block 0031 [ 16]: dc3c6a6ec19da0b0 +Block 0031 [ 17]: 36e4423274b42bf8 +Block 0031 [ 18]: ad8b2b684edeb541 +Block 0031 [ 19]: 08eb08aad913784e +Block 0031 [ 20]: 1cc66b7889948507 +Block 0031 [ 21]: 947d8151367f648b +Block 0031 [ 22]: 593aca6896c0d97f +Block 0031 [ 23]: d4302083d98bc450 +Block 0031 [ 24]: 5a8574574458868c +Block 0031 [ 25]: 1358e4ef5db7ba7d +Block 0031 [ 26]: 17069e66d9b3d800 +Block 0031 [ 27]: 576bcf035773c6b1 +Block 0031 [ 28]: 538d9e73892dd9f7 +Block 0031 [ 29]: 6674a874367c772c +Block 0031 [ 30]: b13ea5a6e9df9ec6 +Block 0031 [ 31]: dcad1575df673343 +Block 0031 [ 32]: 050f04429eb1712b +Block 0031 [ 33]: 264e02bb067c8b4a +Block 0031 [ 34]: fed0d6d4f132aff4 +Block 0031 [ 35]: de49da3e89765b84 +Block 0031 [ 36]: f310a259437af7b7 +Block 0031 [ 37]: 96cba3209fdb91a4 +Block 0031 [ 38]: e1713be8fe273a54 +Block 0031 [ 39]: 72aa9606b5970df7 +Block 0031 [ 40]: 2952b1adbf775bb1 +Block 0031 [ 41]: 16bbf6b77d65e6ec +Block 0031 [ 42]: 8320bcdca2785491 +Block 0031 [ 43]: 37d95f58b90bab98 +Block 0031 [ 44]: 328bfb2bbff04f24 +Block 0031 [ 45]: 60f95e2c47abf3c9 +Block 0031 [ 46]: 8114ebf4c06c1fd5 +Block 0031 [ 47]: 987744ea5dd44993 +Block 0031 [ 48]: 1a52f5fbf382b4a1 +Block 0031 [ 49]: d3da784814b828d0 +Block 0031 [ 50]: 52160ed0d7d97b05 +Block 0031 [ 51]: c2f4933259e6811f +Block 0031 [ 52]: 5185c163da681943 +Block 0031 [ 53]: 8b23845e2e3882da +Block 0031 [ 54]: 80d9fac6cb2145c7 +Block 0031 [ 55]: bd41dce9bf49293d +Block 0031 [ 56]: f9c2b9b968add98d +Block 0031 [ 57]: adc8c1c37a5b3d0e +Block 0031 [ 58]: 44425cb926b1bff6 +Block 0031 [ 59]: d1b13e628afc2ebf +Block 0031 [ 60]: 55eb2ae5a985d74f +Block 0031 [ 61]: 766c24a1bf79b78a +Block 0031 [ 62]: d51884b12c88cb82 +Block 0031 [ 63]: 5d0e445e6570dce8 +Block 0031 [ 64]: 4e21b48646f9a771 +Block 0031 [ 65]: 0bd4d6db21e72904 +Block 0031 [ 66]: 4da30953463891b9 +Block 0031 [ 67]: 0b0814f7ff59b523 +Block 0031 [ 68]: d35ade128a30c877 +Block 0031 [ 69]: 420b85f8cc8377d5 +Block 0031 [ 70]: 44daac39899181fc +Block 0031 [ 71]: a3878fc959ebeccb +Block 0031 [ 72]: 3bc2ccee5ae74f04 +Block 0031 [ 73]: 825aee9eed476634 +Block 0031 [ 74]: e59cf558fd5436ef +Block 0031 [ 75]: de17bb16683b18d5 +Block 0031 [ 76]: 97332d9e6a8a9ecf +Block 0031 [ 77]: f08e0091c43ee3d8 +Block 0031 [ 78]: 306922dc76b5ae0d +Block 0031 [ 79]: feff7c3426166bce +Block 0031 [ 80]: 777c10e8ddddde60 +Block 0031 [ 81]: 295055e9b9b5424f +Block 0031 [ 82]: cec9b5204d1939aa +Block 0031 [ 83]: c8bef3c029ca1f65 +Block 0031 [ 84]: 821259a846615ffe +Block 0031 [ 85]: 6d7ee283234891a8 +Block 0031 [ 86]: ecd0d3ed18aac687 +Block 0031 [ 87]: b996bb7bd69d65fd +Block 0031 [ 88]: 308a1a6df3ac818f +Block 0031 [ 89]: 8ef7e58d209370ee +Block 0031 [ 90]: 4fbdbaed220cc53c +Block 0031 [ 91]: fbd95a395f35c150 +Block 0031 [ 92]: e5dbdc7151568326 +Block 0031 [ 93]: bfeb05033d338aab +Block 0031 [ 94]: 6b46732eb7a71a53 +Block 0031 [ 95]: 9a92d880da129da1 +Block 0031 [ 96]: 0a37604a4211898c +Block 0031 [ 97]: f428a8da533063bb +Block 0031 [ 98]: cb0045208c1e3454 +Block 0031 [ 99]: 0f4d726112cc9b2f +Block 0031 [100]: 11f1e6024bcd910d +Block 0031 [101]: f7318f0bd5bee90d +Block 0031 [102]: a297c92f45a29d29 +Block 0031 [103]: 059bc108e5efce3a +Block 0031 [104]: 59e3a1e984eb056d +Block 0031 [105]: 46b15c158c83b579 +Block 0031 [106]: 806e5e022db2e538 +Block 0031 [107]: bd279d5e3ede5f38 +Block 0031 [108]: d2b1a4167a1a1137 +Block 0031 [109]: 2ea81a04f1325445 +Block 0031 [110]: e25e685daabbfbac +Block 0031 [111]: 2401ac591482c6e7 +Block 0031 [112]: 402eb1307a787cc2 +Block 0031 [113]: 57bd18111412a735 +Block 0031 [114]: 5725174a85050656 +Block 0031 [115]: fd12978efd937b2b +Block 0031 [116]: 2364d2d3f85cf135 +Block 0031 [117]: 5215c25a1af83d5f +Block 0031 [118]: cb2275ad0647eede +Block 0031 [119]: fef22902860e8f90 +Block 0031 [120]: 9e44297bb1235d52 +Block 0031 [121]: ec31c49dc6741f04 +Block 0031 [122]: 649cb1eb5bb62de1 +Block 0031 [123]: 4df8c0ca005c51c3 +Block 0031 [124]: 68cf72fccc7112b9 +Block 0031 [125]: 91e8c6f8bb0ad70d +Block 0031 [126]: 4f59c8bd65cbb765 +Block 0031 [127]: 71e436f035f30ed0 +Tag: c8 14 d9 d1 dc 7f 37 aa 13 f0 d7 7f 24 94 bd a1 c8 de 6b 01 6d d3 88 d2 99 52 a4 c4 67 2b 6c e8 diff --git a/deps/phc-winner-argon2-20190702/kats/argon2i.shasum b/deps/phc-winner-argon2-20190702/kats/argon2i.shasum new file mode 100644 index 000000000..eda8d2e3b --- /dev/null +++ b/deps/phc-winner-argon2-20190702/kats/argon2i.shasum @@ -0,0 +1 @@ +40a3aeafb092d10cf457a8ee0139c114c911ecf97bd5accf5a99c7ddd6917061 argon2i diff --git a/deps/phc-winner-argon2-20190702/kats/argon2i_v16 b/deps/phc-winner-argon2-20190702/kats/argon2i_v16 new file mode 100644 index 000000000..173ec023d --- /dev/null +++ b/deps/phc-winner-argon2-20190702/kats/argon2i_v16 @@ -0,0 +1,12304 @@ +======================================= +Argon2i version number 16 +======================================= +Memory: 32 KiB, Iterations: 3, Parallelism: 4 lanes, Tag length: 32 bytes +Password[32]: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 +Salt[16]: 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 +Secret[8]: 03 03 03 03 03 03 03 03 +Associated data[12]: 04 04 04 04 04 04 04 04 04 04 04 04 +Pre-hashing digest: 1c dc ec c8 58 ca 1b 6d 45 c7 3c 78 d0 00 76 c5 ec fc 5e df 14 45 b4 43 73 97 b1 b8 20 83 ff bf e3 c9 1a a8 f5 06 67 ad 8f b9 d4 e7 52 df b3 85 34 71 9f ba d2 22 61 33 7b 2b 55 29 81 44 09 af + + After pass 0: +Block 0000 [ 0]: 6126d83b5f468363 +Block 0000 [ 1]: 9cec095773e5c7f8 +Block 0000 [ 2]: a84490b8594d238b +Block 0000 [ 3]: 86d7c7521b274d47 +Block 0000 [ 4]: 16aac5132c95105a +Block 0000 [ 5]: 54cf92650efc678a +Block 0000 [ 6]: e5760496d9207afb +Block 0000 [ 7]: 73607b15c2c78c86 +Block 0000 [ 8]: 68c80dce96859e75 +Block 0000 [ 9]: 0db622c99a22a2c5 +Block 0000 [ 10]: 086c753c14616114 +Block 0000 [ 11]: 1fd8377e636de79a +Block 0000 [ 12]: 43f36cb6dbd379be +Block 0000 [ 13]: f3341d9504df2bcb +Block 0000 [ 14]: 3879688fac8074c2 +Block 0000 [ 15]: 71f8cfcd8d86a5ed +Block 0000 [ 16]: 15292c0733f9f8f3 +Block 0000 [ 17]: bf220d19096cccf9 +Block 0000 [ 18]: 6864881c48351e87 +Block 0000 [ 19]: 3f7b64feac03bce2 +Block 0000 [ 20]: 2fa888497c07adf2 +Block 0000 [ 21]: c83602a08906d723 +Block 0000 [ 22]: ed1689618b780c75 +Block 0000 [ 23]: 767529d68b6e5521 +Block 0000 [ 24]: 17c3be6adc708cb5 +Block 0000 [ 25]: b95620c1d8a30c10 +Block 0000 [ 26]: 9f31bffc559b4ad4 +Block 0000 [ 27]: 7b6b7f96f53bb140 +Block 0000 [ 28]: 22a444f84cff8b57 +Block 0000 [ 29]: ebbafed985afb9e8 +Block 0000 [ 30]: ee14d542a4a02cdf +Block 0000 [ 31]: 5344c6fb9868f64a +Block 0000 [ 32]: 9a735a38656ad1ac +Block 0000 [ 33]: 2d312367c8ed15d4 +Block 0000 [ 34]: a27c4eed35237b88 +Block 0000 [ 35]: 9a2738107e55c09d +Block 0000 [ 36]: 6469b001f096721e +Block 0000 [ 37]: e0c1fcda0c416371 +Block 0000 [ 38]: 7d93d0d141fc441e +Block 0000 [ 39]: e16df9690e7dfab6 +Block 0000 [ 40]: bcd40d45bc5f29b7 +Block 0000 [ 41]: 04e28612ee435e2d +Block 0000 [ 42]: f0503ca50e2613e0 +Block 0000 [ 43]: 16aff99842004bff +Block 0000 [ 44]: db80c479037c7341 +Block 0000 [ 45]: 3c0f3c5fb9df5453 +Block 0000 [ 46]: 2925f5e03e0fc637 +Block 0000 [ 47]: c355a96ae6aafd32 +Block 0000 [ 48]: 9e1de5a5c025a425 +Block 0000 [ 49]: d2771ce35d37f4a3 +Block 0000 [ 50]: 09a3d1fe048dab61 +Block 0000 [ 51]: 5a7a53f847dddeab +Block 0000 [ 52]: 09b1981f68879719 +Block 0000 [ 53]: 859259a2c6f6ecf9 +Block 0000 [ 54]: 7f1ae20e3c6194bd +Block 0000 [ 55]: 4976b29d1b927454 +Block 0000 [ 56]: 193f7c26c9631d2e +Block 0000 [ 57]: b64561e3fdb2eab1 +Block 0000 [ 58]: c258b7f17c258b1e +Block 0000 [ 59]: eaff69021f31833d +Block 0000 [ 60]: 8122ce733bef6097 +Block 0000 [ 61]: 3a0dfe60c8e1c168 +Block 0000 [ 62]: 482c1026fb53178a +Block 0000 [ 63]: 152902c04dce5e68 +Block 0000 [ 64]: 51d2259aed46e79c +Block 0000 [ 65]: 2e2eba00224ef895 +Block 0000 [ 66]: a551c68118673401 +Block 0000 [ 67]: c5f8bc7582a504a6 +Block 0000 [ 68]: 016006bd31e9ab43 +Block 0000 [ 69]: 481174e08a737735 +Block 0000 [ 70]: 20729d08a9c3b628 +Block 0000 [ 71]: b591394c7087860d +Block 0000 [ 72]: ea18d459ccaad353 +Block 0000 [ 73]: e7194fa273999f61 +Block 0000 [ 74]: 87b0fe402d666f40 +Block 0000 [ 75]: 024173d9a832f146 +Block 0000 [ 76]: 5bc42a7e424b22dc +Block 0000 [ 77]: 0fc06bb16b038380 +Block 0000 [ 78]: 383dc71785510d0d +Block 0000 [ 79]: c9d4f74c814623a6 +Block 0000 [ 80]: 641fe35196d102a0 +Block 0000 [ 81]: 7be5646169de6e15 +Block 0000 [ 82]: 4b63bbbfee994ef4 +Block 0000 [ 83]: f4d00905bed63c10 +Block 0000 [ 84]: f504a390bd52851b +Block 0000 [ 85]: c7fb46861975facc +Block 0000 [ 86]: e0de393085b3266d +Block 0000 [ 87]: 2a02a46e04ae3fa4 +Block 0000 [ 88]: e3fafc272d96d1b4 +Block 0000 [ 89]: e8ac1b6b0bad54b2 +Block 0000 [ 90]: b7dd7d62d0032fb8 +Block 0000 [ 91]: c1234d0d3389d412 +Block 0000 [ 92]: dd7ddcd2ffd6e04f +Block 0000 [ 93]: f2d7f262ecae94d9 +Block 0000 [ 94]: 419b597a15d167b6 +Block 0000 [ 95]: c4f2c9379b9a3154 +Block 0000 [ 96]: 006161370212d3b7 +Block 0000 [ 97]: e16892fa7f773edd +Block 0000 [ 98]: 90580be4dd441d12 +Block 0000 [ 99]: 78aeffd87f012ac5 +Block 0000 [100]: 0fb81138826cbc2b +Block 0000 [101]: 64a426a5e1791e8d +Block 0000 [102]: 3c66e38936a602f3 +Block 0000 [103]: a89c993bb0499fe2 +Block 0000 [104]: e6cbc1df59d1885e +Block 0000 [105]: bf38ae6bb2d4769a +Block 0000 [106]: 37ca1944b603ee41 +Block 0000 [107]: 8ff503377e1072d4 +Block 0000 [108]: 922633b17f9ccaf4 +Block 0000 [109]: 56d31d1f20067b7c +Block 0000 [110]: 1b4d792e51d685c7 +Block 0000 [111]: 91a44b2a93de6b8c +Block 0000 [112]: b15d5c7ff3e9c59d +Block 0000 [113]: e9592fbe759d075c +Block 0000 [114]: 57a8176f7ce9f926 +Block 0000 [115]: fe4d2b861ed7d098 +Block 0000 [116]: 032053e827a76ae4 +Block 0000 [117]: e36be8b30b418994 +Block 0000 [118]: 5f98474597bc3bec +Block 0000 [119]: 5957eaee755491e2 +Block 0000 [120]: d9e0725e803c1c07 +Block 0000 [121]: 266075388fd82552 +Block 0000 [122]: 445a45e21df8f188 +Block 0000 [123]: 60a723ac7c2094a4 +Block 0000 [124]: fc1a2264395abc60 +Block 0000 [125]: aff3ef6f5e074ab4 +Block 0000 [126]: 14a0d19a17b1dee6 +Block 0000 [127]: 88aca67a1ba1eb77 +Block 0001 [ 0]: 92f6a137c0116c49 +Block 0001 [ 1]: e5d1db692d347116 +Block 0001 [ 2]: cbbc23afa412c0ea +Block 0001 [ 3]: 4608ae1fefbf6190 +Block 0001 [ 4]: b6c69c46fe10980d +Block 0001 [ 5]: 3e8dc5292577d451 +Block 0001 [ 6]: b2e5fd338710a60f +Block 0001 [ 7]: 9b15da0956e750e9 +Block 0001 [ 8]: 38e6b65004ae22b7 +Block 0001 [ 9]: bb6f0805d7e41838 +Block 0001 [ 10]: f30692ae7925cd6f +Block 0001 [ 11]: c3aaecfd3bc42cab +Block 0001 [ 12]: 40ae8704cbc43eb3 +Block 0001 [ 13]: 396b0210df3d5259 +Block 0001 [ 14]: b1c6d3ef23e17d05 +Block 0001 [ 15]: e28b54f6f76dc643 +Block 0001 [ 16]: 6d37b5b3d8d148dc +Block 0001 [ 17]: 488fd552a2adf0cd +Block 0001 [ 18]: 20c3ec97ff51a0f9 +Block 0001 [ 19]: 4afbc70841dcb9a1 +Block 0001 [ 20]: 749d23053fef9e27 +Block 0001 [ 21]: d34e0743ccb60326 +Block 0001 [ 22]: 4c7003c00f6301c7 +Block 0001 [ 23]: a0c64f1efef2bbc0 +Block 0001 [ 24]: 68598d652cd039ac +Block 0001 [ 25]: ec6ef77eb3f130c7 +Block 0001 [ 26]: 4192ac59c1334185 +Block 0001 [ 27]: 3ba7656e7c7a2f56 +Block 0001 [ 28]: 8e7dc7a60815d820 +Block 0001 [ 29]: 476dc8d7b7d42d66 +Block 0001 [ 30]: 540b485f1a99f74c +Block 0001 [ 31]: e716e1fb8dc69710 +Block 0001 [ 32]: 6e195ca6cb50f9f3 +Block 0001 [ 33]: 8f36a6ee0da6dca7 +Block 0001 [ 34]: 7b5db8356ef1eb93 +Block 0001 [ 35]: 91140488c13fefbc +Block 0001 [ 36]: 5b56e3a18aff3217 +Block 0001 [ 37]: 370fc9d02e5fe3f3 +Block 0001 [ 38]: 4481fb4fb2ebc19d +Block 0001 [ 39]: ee8fba7c535c1bc1 +Block 0001 [ 40]: 4bcf4833510f8629 +Block 0001 [ 41]: 8b227c4bf2b48a58 +Block 0001 [ 42]: 2af8ade6f3ba0841 +Block 0001 [ 43]: d0db6ac77a485870 +Block 0001 [ 44]: 916c69962dc6559d +Block 0001 [ 45]: f4885d9b8596d135 +Block 0001 [ 46]: 4f7ae3e6c229d186 +Block 0001 [ 47]: 9a4e75876ca9f1ec +Block 0001 [ 48]: aee24bbeaaeecc3f +Block 0001 [ 49]: cb219d5fdbeaab9e +Block 0001 [ 50]: 5261aaea4dc3b83e +Block 0001 [ 51]: b385b79bc7afff44 +Block 0001 [ 52]: 4af98335575f5e2a +Block 0001 [ 53]: bda4053fd315675b +Block 0001 [ 54]: 41060f2406a1d20d +Block 0001 [ 55]: eb2c51d83ebbd8f1 +Block 0001 [ 56]: 89b7f8f524822057 +Block 0001 [ 57]: fa8cedb05e2f7f20 +Block 0001 [ 58]: 1ad99636edf5754c +Block 0001 [ 59]: 9227b48f92263da8 +Block 0001 [ 60]: 8379858725ac5a34 +Block 0001 [ 61]: e9175a515bc33fed +Block 0001 [ 62]: 45c1af539ca1533b +Block 0001 [ 63]: a750b46c1b9e2e48 +Block 0001 [ 64]: aa7fca933b3bb05b +Block 0001 [ 65]: e56faae612e75484 +Block 0001 [ 66]: 06fda8818cd441c6 +Block 0001 [ 67]: 2490ab894da253cc +Block 0001 [ 68]: 9658b30c03beead8 +Block 0001 [ 69]: 4c69b5b64065b426 +Block 0001 [ 70]: 66b2511ab48f50d8 +Block 0001 [ 71]: d5ad57400ce97db8 +Block 0001 [ 72]: 34878dab0a6554cc +Block 0001 [ 73]: d944d1b92feb67e1 +Block 0001 [ 74]: 8ecdec9887dbfbed +Block 0001 [ 75]: af2bc080b6d34198 +Block 0001 [ 76]: caa1dce2e4974dc8 +Block 0001 [ 77]: efc0177fbaebba33 +Block 0001 [ 78]: 48246fde6f3bf50e +Block 0001 [ 79]: 14347c1e4c9ad74d +Block 0001 [ 80]: c209d794edacac4a +Block 0001 [ 81]: f31388a91f3bc4d9 +Block 0001 [ 82]: 181e34af2ef27582 +Block 0001 [ 83]: 5842b6cd751dc7d5 +Block 0001 [ 84]: c21d7a803651f895 +Block 0001 [ 85]: 856fccb97b344959 +Block 0001 [ 86]: 92434d14dd17508d +Block 0001 [ 87]: f4381d6cfc07a63a +Block 0001 [ 88]: f518d3ea8402c5d7 +Block 0001 [ 89]: fe0bf4b0c78ee477 +Block 0001 [ 90]: ae3d7206a0eebf82 +Block 0001 [ 91]: f3dc7d33c1e5a11b +Block 0001 [ 92]: 47f59e53ce1d5866 +Block 0001 [ 93]: 10d77a10fa0b7fe8 +Block 0001 [ 94]: 08c1156c8d5ad237 +Block 0001 [ 95]: 0bdb8b7d95fef340 +Block 0001 [ 96]: 6b6340b64b078628 +Block 0001 [ 97]: 74538397e38f3063 +Block 0001 [ 98]: 9763d327a10b018b +Block 0001 [ 99]: 8c1ec3f8b67ef707 +Block 0001 [100]: a65855fb53b3cf03 +Block 0001 [101]: 8cd6cbe80fdda8a6 +Block 0001 [102]: 528561ab03e6bea0 +Block 0001 [103]: f3291f99743d5774 +Block 0001 [104]: 1872782ff0e09f79 +Block 0001 [105]: 1de6a683d5ba8800 +Block 0001 [106]: 6852b94ec920fd37 +Block 0001 [107]: aa5fe8aecba3dbd7 +Block 0001 [108]: 9548dcfb3649984d +Block 0001 [109]: ed7bf1bb77ec6a8c +Block 0001 [110]: 00919c392cf70d5d +Block 0001 [111]: c3fa99c16a895fba +Block 0001 [112]: d4a2013dd8193b51 +Block 0001 [113]: 164c8364b08aa019 +Block 0001 [114]: 1c361bb6197c21e6 +Block 0001 [115]: 6c5c0b2f1d028964 +Block 0001 [116]: bdc640b0cf73be16 +Block 0001 [117]: 4c7c28018a0967a1 +Block 0001 [118]: fff1ce82132d02c7 +Block 0001 [119]: 201194ce949e91c1 +Block 0001 [120]: 37f825509d769cf0 +Block 0001 [121]: 92c8a6398dfb5420 +Block 0001 [122]: d421323258148fbf +Block 0001 [123]: 884d799cfb6f9608 +Block 0001 [124]: 357c4fa87d8ea9c1 +Block 0001 [125]: 7ca853f594a806e4 +Block 0001 [126]: b24be8ccb1fd4e00 +Block 0001 [127]: d67d8ab9d0149c41 +Block 0002 [ 0]: 7cb64797e59c2898 +Block 0002 [ 1]: c2c69f1df26fe4f7 +Block 0002 [ 2]: 860e26b28a7f38e7 +Block 0002 [ 3]: 03cfde69ef53362f +Block 0002 [ 4]: ca8ad628ddfe0175 +Block 0002 [ 5]: 3e75216893b8f594 +Block 0002 [ 6]: 5982c82ad8d4f0b0 +Block 0002 [ 7]: dd49775772e79838 +Block 0002 [ 8]: 381be5cb41b74429 +Block 0002 [ 9]: 10e5363f909f7a2b +Block 0002 [ 10]: 0db1fd3b51c83a01 +Block 0002 [ 11]: db09eb1946c6ffbe +Block 0002 [ 12]: 690cc31db135feca +Block 0002 [ 13]: 2064f8998646e505 +Block 0002 [ 14]: 365a864afe9f4fa9 +Block 0002 [ 15]: 04711b105f55045b +Block 0002 [ 16]: 74f81257464e4670 +Block 0002 [ 17]: 81aa2ec1cf089f9d +Block 0002 [ 18]: d78e413290a42017 +Block 0002 [ 19]: 0710017afb761109 +Block 0002 [ 20]: 28ab93bf1da6eaf6 +Block 0002 [ 21]: db42dbd893083632 +Block 0002 [ 22]: 0b613e82d208d081 +Block 0002 [ 23]: f86ba76e6769ab87 +Block 0002 [ 24]: 37a53ed14eb96885 +Block 0002 [ 25]: 7fddf209b7a7aae0 +Block 0002 [ 26]: 27ee9147537a1ffa +Block 0002 [ 27]: 0d87db4ccb03dbd7 +Block 0002 [ 28]: 543598bf8db7090d +Block 0002 [ 29]: 72b4336c52c01431 +Block 0002 [ 30]: 71d3af6cae675c15 +Block 0002 [ 31]: 65b57dfc7adb95de +Block 0002 [ 32]: ce8b82f6d8a790bd +Block 0002 [ 33]: f14bf7489f1cfdea +Block 0002 [ 34]: 9779478ba92b8635 +Block 0002 [ 35]: e3c5d4eea1d1b38f +Block 0002 [ 36]: f726715c4e7d4596 +Block 0002 [ 37]: 460eda3b2a00f89a +Block 0002 [ 38]: f43a475d55f514a2 +Block 0002 [ 39]: debcfd04de87ef41 +Block 0002 [ 40]: ccb3c6e561b4c5c1 +Block 0002 [ 41]: ebf2866ca4dafa31 +Block 0002 [ 42]: 91bdefb27e3e4e1b +Block 0002 [ 43]: 528f3555c38a4d53 +Block 0002 [ 44]: 2497400fbe5afe51 +Block 0002 [ 45]: ff4b8c72c6e53f7f +Block 0002 [ 46]: 2c40cb7438aa7300 +Block 0002 [ 47]: 9943309c4e6444ab +Block 0002 [ 48]: 93bdb8c08c695d05 +Block 0002 [ 49]: 3e026f39af513ff6 +Block 0002 [ 50]: 94f1714790aabcef +Block 0002 [ 51]: 0795a3358040e131 +Block 0002 [ 52]: ae4830e6481ee1eb +Block 0002 [ 53]: 3ecc56c7b013fa4c +Block 0002 [ 54]: ddfff79f85dafcad +Block 0002 [ 55]: 1f0c9ef1a52df3ca +Block 0002 [ 56]: e909957e4e37ecc8 +Block 0002 [ 57]: c8a40a7602da74e9 +Block 0002 [ 58]: de8822670791deed +Block 0002 [ 59]: 65934f243e9e1e83 +Block 0002 [ 60]: 474cb0df3377639a +Block 0002 [ 61]: 1736eb3a980fd11d +Block 0002 [ 62]: 8fa8d44a066e5257 +Block 0002 [ 63]: 48e036872f7af05c +Block 0002 [ 64]: e521b7cd11db971b +Block 0002 [ 65]: 37f1ee21d8f892a6 +Block 0002 [ 66]: daf18f10b4c59135 +Block 0002 [ 67]: a92c39375926d19c +Block 0002 [ 68]: 61776d72b6dfcbf6 +Block 0002 [ 69]: 6cfd113b795956a6 +Block 0002 [ 70]: 41df6184c37d305d +Block 0002 [ 71]: da0ea530201657b3 +Block 0002 [ 72]: 0eaa8327f0b26deb +Block 0002 [ 73]: 749bef1979a66c54 +Block 0002 [ 74]: 0a4803ba5f98464d +Block 0002 [ 75]: aeef50b86747236a +Block 0002 [ 76]: 7c4204ccbdb87888 +Block 0002 [ 77]: a86c145c2617d45b +Block 0002 [ 78]: e6ec9cf481b74a97 +Block 0002 [ 79]: 52da1faf824b842b +Block 0002 [ 80]: eec0083945a6d2ed +Block 0002 [ 81]: 0d7b28e58b0982f0 +Block 0002 [ 82]: ec807b340dcde015 +Block 0002 [ 83]: ed0db6917d48a4d2 +Block 0002 [ 84]: 85bc55d932e3b3a5 +Block 0002 [ 85]: 71b54dd726a7a3dc +Block 0002 [ 86]: 86dacac98463a414 +Block 0002 [ 87]: 9d9adf7a9a974406 +Block 0002 [ 88]: 2b1ad483c47d825d +Block 0002 [ 89]: 1dd4baa8e20cc036 +Block 0002 [ 90]: 300f765115a0d235 +Block 0002 [ 91]: 34b0bbec6295a57d +Block 0002 [ 92]: 47c2dcab1c8dc56e +Block 0002 [ 93]: 909dcbf65dfd3e4a +Block 0002 [ 94]: bdf4ce01c995501f +Block 0002 [ 95]: 2692141f3829aa9b +Block 0002 [ 96]: d52f697f214d2ea2 +Block 0002 [ 97]: 4eec1c847a44b701 +Block 0002 [ 98]: a14e42edfcff1342 +Block 0002 [ 99]: 597274dab26579c9 +Block 0002 [100]: c8938ed8f54ade44 +Block 0002 [101]: bbdafc08ba8a311b +Block 0002 [102]: 1f77d352b3fb4974 +Block 0002 [103]: 94f2bc7fba84f2d0 +Block 0002 [104]: e2b7015dd2b71522 +Block 0002 [105]: 1a8d1766a4832f57 +Block 0002 [106]: c65a8b0b90388f29 +Block 0002 [107]: 4079af95ac5bb19e +Block 0002 [108]: 961a858ee6f4507d +Block 0002 [109]: e23387d57615d488 +Block 0002 [110]: ea54c14ae8386039 +Block 0002 [111]: c18c93179a7f881f +Block 0002 [112]: 8c8cf06e883a59d9 +Block 0002 [113]: 37cd8e83271d4f0d +Block 0002 [114]: d514a6baa9a22279 +Block 0002 [115]: ca7a1d07761bd380 +Block 0002 [116]: 6654e0ab9bddf7bd +Block 0002 [117]: 605c709efd511084 +Block 0002 [118]: 051a36cd71ce213b +Block 0002 [119]: 344cc6b3d6a1d436 +Block 0002 [120]: f455839c5d4d7a4f +Block 0002 [121]: 1c24c88988a49b33 +Block 0002 [122]: f01bf8d496ee65aa +Block 0002 [123]: e03b0ba3f6117b98 +Block 0002 [124]: 6bca08fdc5511ca7 +Block 0002 [125]: 7fb253076266795f +Block 0002 [126]: 1426489946579710 +Block 0002 [127]: 33d4fa27e9e37b58 +Block 0003 [ 0]: 046a31cd596782ec +Block 0003 [ 1]: bc54a531abfcfa7b +Block 0003 [ 2]: 4b77511da81d7d87 +Block 0003 [ 3]: 83b4ead00cda96fd +Block 0003 [ 4]: 8e7f5159419fa475 +Block 0003 [ 5]: dca90d89e4a289bb +Block 0003 [ 6]: 357863376708b679 +Block 0003 [ 7]: 39cbd5feb80d6deb +Block 0003 [ 8]: 36cc83eb85aca316 +Block 0003 [ 9]: a60c7bca46e83bf0 +Block 0003 [ 10]: b47654f5fb4b0af7 +Block 0003 [ 11]: 8a1f3a2a2a8379a9 +Block 0003 [ 12]: 794fe4476e91c2ac +Block 0003 [ 13]: 12e0f417e18416ba +Block 0003 [ 14]: b56e37032b2c5d1b +Block 0003 [ 15]: db9927e597d1feaf +Block 0003 [ 16]: 0f3d8291a8065f7f +Block 0003 [ 17]: c5bdad1ba4d491ac +Block 0003 [ 18]: b92dd3a668c599d0 +Block 0003 [ 19]: d3ed13931fd174f5 +Block 0003 [ 20]: dd56a98550e6d564 +Block 0003 [ 21]: e36bf64d1375e226 +Block 0003 [ 22]: 20deb434e56892c3 +Block 0003 [ 23]: 85f1359078ee2533 +Block 0003 [ 24]: f722f5fde663ada6 +Block 0003 [ 25]: 619831358089e591 +Block 0003 [ 26]: 7c580214447aefee +Block 0003 [ 27]: 3c2f950a7b194280 +Block 0003 [ 28]: 1aa7cc80aeff8f4a +Block 0003 [ 29]: ce8fa25f55bfe78f +Block 0003 [ 30]: 45dc872f693d4f0f +Block 0003 [ 31]: c9f8dbf8c2c180e0 +Block 0003 [ 32]: 8c312b4ef842d09b +Block 0003 [ 33]: c227867fddc7021b +Block 0003 [ 34]: 403eabd3b6b05550 +Block 0003 [ 35]: a9b1a0ee2cdba6ba +Block 0003 [ 36]: 4795c98a795d0c25 +Block 0003 [ 37]: c9e0d0c57a1241bd +Block 0003 [ 38]: 6c9928c206adef1c +Block 0003 [ 39]: ed3f418ed47e41c0 +Block 0003 [ 40]: 001154d3cc4ce182 +Block 0003 [ 41]: d1ad903c0f1f94b8 +Block 0003 [ 42]: c3c8cea43847addd +Block 0003 [ 43]: 15159c3d406282e4 +Block 0003 [ 44]: feda097ad8fb4a18 +Block 0003 [ 45]: b546ba8ab0e92e3e +Block 0003 [ 46]: d0f960d5f07c7716 +Block 0003 [ 47]: 93f1aeb83b8ccfa3 +Block 0003 [ 48]: b3a262d1b3fa3cb2 +Block 0003 [ 49]: 6a9aceae3eab8923 +Block 0003 [ 50]: 3dd182181b145c83 +Block 0003 [ 51]: b58be4a8bca5f09c +Block 0003 [ 52]: f3f5e5ccac8fe364 +Block 0003 [ 53]: f9cbfb4c276d7eb8 +Block 0003 [ 54]: c24235d25fdc45ce +Block 0003 [ 55]: d315a35ddcd17553 +Block 0003 [ 56]: e1cc7517fa37a8d4 +Block 0003 [ 57]: 308371963bdd138d +Block 0003 [ 58]: 013977ff0ffe9c54 +Block 0003 [ 59]: ad33021b070e8c14 +Block 0003 [ 60]: e710659ac74ab001 +Block 0003 [ 61]: 1bd0f3c858425586 +Block 0003 [ 62]: ed4295897e10f1a8 +Block 0003 [ 63]: 1053070c46b83401 +Block 0003 [ 64]: ca6b0e8a8ccdd08e +Block 0003 [ 65]: 7cedb28e772004b9 +Block 0003 [ 66]: bdaa36a79b505fae +Block 0003 [ 67]: 0d5698f9b8aa0f63 +Block 0003 [ 68]: 504ca8ea7543efa1 +Block 0003 [ 69]: 9610336b7f760920 +Block 0003 [ 70]: 5df8e1999e267562 +Block 0003 [ 71]: 803b49d953e979fa +Block 0003 [ 72]: bc983c4136089649 +Block 0003 [ 73]: edb1e4ffa2af0a7d +Block 0003 [ 74]: 49dc4796c1597e97 +Block 0003 [ 75]: 9ae9a350dbb18072 +Block 0003 [ 76]: 6a09bc7b6cddfa17 +Block 0003 [ 77]: 19eed074b1d94d1b +Block 0003 [ 78]: 5f79a4365291e828 +Block 0003 [ 79]: ed3903991e88d303 +Block 0003 [ 80]: e6b4f5655bf1a227 +Block 0003 [ 81]: a660d316b19c6cf5 +Block 0003 [ 82]: 1bba7c7f616017ec +Block 0003 [ 83]: 6efee2015ea709b5 +Block 0003 [ 84]: 7bca856327d86867 +Block 0003 [ 85]: f1d901fb696cfe6e +Block 0003 [ 86]: b61228cc0f5519e5 +Block 0003 [ 87]: f1cca47f7aa1de4c +Block 0003 [ 88]: c4b0874e7b7523bc +Block 0003 [ 89]: fbe80a4579da608b +Block 0003 [ 90]: 51065fdacf129897 +Block 0003 [ 91]: 5c98141f3b90991a +Block 0003 [ 92]: cd19889c4a4d7139 +Block 0003 [ 93]: f37f5d6b56d239a4 +Block 0003 [ 94]: 973d728bb837500d +Block 0003 [ 95]: 337e69253643f939 +Block 0003 [ 96]: 82e638ae9586e603 +Block 0003 [ 97]: cac9aee8ff136d3d +Block 0003 [ 98]: a1800829a1715101 +Block 0003 [ 99]: df0d298230fb784b +Block 0003 [100]: 6b13a7468f0c0a38 +Block 0003 [101]: 8f0d7471ac242b32 +Block 0003 [102]: f44e149f9b58111e +Block 0003 [103]: 067502de3af50b9f +Block 0003 [104]: fbb82fc217e4b529 +Block 0003 [105]: 7d9881a1bc0e688e +Block 0003 [106]: 30c4685e53b55a42 +Block 0003 [107]: ff9592613630fe41 +Block 0003 [108]: 8bf52e194266394e +Block 0003 [109]: fba0c347e59a5039 +Block 0003 [110]: a9c06323b6fa268a +Block 0003 [111]: c3bad73a55771917 +Block 0003 [112]: acc361d48a5ae241 +Block 0003 [113]: a943d90299f113eb +Block 0003 [114]: 044d325cedeceb09 +Block 0003 [115]: 8947b50203df6ac1 +Block 0003 [116]: 81bfe91acfdc25c9 +Block 0003 [117]: 2f855fd29282043f +Block 0003 [118]: aa61cf9492ad1d75 +Block 0003 [119]: 3b61c07d952c3c5c +Block 0003 [120]: 750c557fcb0419e2 +Block 0003 [121]: 4e111c1b09db20fa +Block 0003 [122]: 38bca5e15536cc63 +Block 0003 [123]: 5c302c1351c2027e +Block 0003 [124]: f02ca3291dec7a84 +Block 0003 [125]: d8a0d514adacb41f +Block 0003 [126]: 41839d029f843d21 +Block 0003 [127]: eaca093b268ad0ba +Block 0004 [ 0]: 4a6feab4b8d9a6aa +Block 0004 [ 1]: 0ec8b94daf8494c6 +Block 0004 [ 2]: 972a66e201c44775 +Block 0004 [ 3]: 81418e65b5078237 +Block 0004 [ 4]: 1df7116b310281b7 +Block 0004 [ 5]: 3d4997690fcf345e +Block 0004 [ 6]: 001b812e2e96b2b3 +Block 0004 [ 7]: d405f56aecafe337 +Block 0004 [ 8]: 5e4d67602b1feb88 +Block 0004 [ 9]: b4012dcdbfaa0f65 +Block 0004 [ 10]: f46b2fd7d7d7c3e8 +Block 0004 [ 11]: 7a72d1dc28a6bfc1 +Block 0004 [ 12]: c1b087e6e31ce345 +Block 0004 [ 13]: d9178f5cd1d422d5 +Block 0004 [ 14]: 2644c0c342f60248 +Block 0004 [ 15]: c115b4f1b91b13f7 +Block 0004 [ 16]: 4a0d701fd1916369 +Block 0004 [ 17]: dead3ce075e71585 +Block 0004 [ 18]: 5d1e8fc49ba9e218 +Block 0004 [ 19]: eebd4465be91bc50 +Block 0004 [ 20]: 589ebbd596dc3bb5 +Block 0004 [ 21]: 060dec3bbfcfdc3f +Block 0004 [ 22]: d845285a84c5e634 +Block 0004 [ 23]: a2955062ee1b9cb9 +Block 0004 [ 24]: 12f1189860b40ba2 +Block 0004 [ 25]: 0559be7877e4540c +Block 0004 [ 26]: fe890e64101def53 +Block 0004 [ 27]: 9c4840aef7a8e6d1 +Block 0004 [ 28]: 7cdffa34d374b5e1 +Block 0004 [ 29]: 34a58d6c1800aa7d +Block 0004 [ 30]: 013aab816c6af91f +Block 0004 [ 31]: d1b420ea039d2850 +Block 0004 [ 32]: 6831b26763d83168 +Block 0004 [ 33]: 4a501813320e3c48 +Block 0004 [ 34]: 21414a84abb62985 +Block 0004 [ 35]: eb1dfbac686d01c6 +Block 0004 [ 36]: ba34dcb11d258cce +Block 0004 [ 37]: 253065e795c10bd2 +Block 0004 [ 38]: 42479f2a35988b10 +Block 0004 [ 39]: 6b557161266ef5cd +Block 0004 [ 40]: 469ecbd406da560b +Block 0004 [ 41]: e23d234f1d05a4f3 +Block 0004 [ 42]: ca9c7960f939525e +Block 0004 [ 43]: e909a0ffbdb01d0b +Block 0004 [ 44]: 4fdb635d89483ec7 +Block 0004 [ 45]: 701151f5c1a33e07 +Block 0004 [ 46]: 6e3df7807c2f136a +Block 0004 [ 47]: 6b481771a4b587c3 +Block 0004 [ 48]: 784a686a8b5377a9 +Block 0004 [ 49]: af6b9b72b81bc979 +Block 0004 [ 50]: 2c531c77707496eb +Block 0004 [ 51]: 1b84970004449d05 +Block 0004 [ 52]: 11f6aee665db9d5e +Block 0004 [ 53]: 498bfbeb89786794 +Block 0004 [ 54]: b87e2adddba796d5 +Block 0004 [ 55]: bc96cf7212cc363f +Block 0004 [ 56]: 73f49d8035e3bb11 +Block 0004 [ 57]: 0af3303a963bf26a +Block 0004 [ 58]: 9ece6fc7aaebbe27 +Block 0004 [ 59]: 0ba41078e55b2dd8 +Block 0004 [ 60]: 148d93b8883cfcb0 +Block 0004 [ 61]: 28ca70d4d9951701 +Block 0004 [ 62]: 927b0485265f2fad +Block 0004 [ 63]: 7e4ec0be8d07f7a9 +Block 0004 [ 64]: 3d3b81c2d4b1ae15 +Block 0004 [ 65]: 122d786485d65f49 +Block 0004 [ 66]: 128a9238e8bf5f92 +Block 0004 [ 67]: 084139a82686dcc9 +Block 0004 [ 68]: c2753d962cfb45c1 +Block 0004 [ 69]: ed4317b6488d2ac4 +Block 0004 [ 70]: 1a481b6e1265293b +Block 0004 [ 71]: babc5d0e2bf24943 +Block 0004 [ 72]: 968f09611a557929 +Block 0004 [ 73]: f7634e9c15e1fe5f +Block 0004 [ 74]: e58dad4f0a4e3128 +Block 0004 [ 75]: 4c8100c8f517cb58 +Block 0004 [ 76]: adc2ff093d49c0bc +Block 0004 [ 77]: 0b1604ea8a1e4e67 +Block 0004 [ 78]: d2d82d3a7b47df02 +Block 0004 [ 79]: 119575d44af91d2d +Block 0004 [ 80]: c8744a6b6ef42198 +Block 0004 [ 81]: a0d452abd110d22f +Block 0004 [ 82]: f7b64c116254c2ba +Block 0004 [ 83]: 9e561c45cc5a1e50 +Block 0004 [ 84]: 881bca7ef16d5453 +Block 0004 [ 85]: eb70824146b76fa3 +Block 0004 [ 86]: b9e137f458dd4a4f +Block 0004 [ 87]: 1f9dcf6dbce23161 +Block 0004 [ 88]: e12e9a5372dc5bab +Block 0004 [ 89]: 2a2f664e8640cee1 +Block 0004 [ 90]: 52c789496b2e681d +Block 0004 [ 91]: 8f8d8cda2b15640d +Block 0004 [ 92]: 9fa2cd5d3d2cfbad +Block 0004 [ 93]: cba04f79b6f84afd +Block 0004 [ 94]: 503cc81918aa8bd2 +Block 0004 [ 95]: be6434cfd25eb26b +Block 0004 [ 96]: a66ff820241911fa +Block 0004 [ 97]: 40a982a33c6db17c +Block 0004 [ 98]: 1548a37aaa2f1bc4 +Block 0004 [ 99]: 1b5bed3a31c66cc2 +Block 0004 [100]: 5f3ffbc962f42ece +Block 0004 [101]: f36ec53e5c4b528a +Block 0004 [102]: 374516cf62043ac3 +Block 0004 [103]: d4ff691eaa9face7 +Block 0004 [104]: 02f5223343418fd0 +Block 0004 [105]: 5a661b3cbd12cb5f +Block 0004 [106]: 5e8da0dfc6608ca3 +Block 0004 [107]: f4d5dd36bf79a562 +Block 0004 [108]: 2a9987c9f4affcc2 +Block 0004 [109]: 6d64596b325a6b97 +Block 0004 [110]: 36acdce8f84fe5d8 +Block 0004 [111]: 7ec1222497a89aed +Block 0004 [112]: a6a766ae96d768d4 +Block 0004 [113]: 9df26ef4377da55d +Block 0004 [114]: 434c1c0bd115606e +Block 0004 [115]: 62037e156afcd340 +Block 0004 [116]: 29059457b8c8e505 +Block 0004 [117]: 3395589ee15940fd +Block 0004 [118]: 3eca700460f7fc72 +Block 0004 [119]: 58d784ed6d428152 +Block 0004 [120]: 1fcc76e9b80d0973 +Block 0004 [121]: 091bd0c42556bf76 +Block 0004 [122]: 38c09a184c120445 +Block 0004 [123]: a947cc2b9e52124f +Block 0004 [124]: dd743025e87af1d3 +Block 0004 [125]: be5f845d0929b7be +Block 0004 [126]: 3fe708f194a42cda +Block 0004 [127]: 867d4c61e71e0b67 +Block 0005 [ 0]: fb543df6749e523d +Block 0005 [ 1]: 8a78683e4ab04b93 +Block 0005 [ 2]: 02c841e680679b47 +Block 0005 [ 3]: 136516cc99423371 +Block 0005 [ 4]: a769b959d945e45b +Block 0005 [ 5]: 3a30bdb2c18f4de8 +Block 0005 [ 6]: 9ba3535a0f59c9cf +Block 0005 [ 7]: af1452e75ee21cd5 +Block 0005 [ 8]: c2d3a094e5573fc9 +Block 0005 [ 9]: 3b0730860b630abe +Block 0005 [ 10]: 990af4f8f2013efb +Block 0005 [ 11]: e8bb67f6fd509a41 +Block 0005 [ 12]: 1605d1f84eead1e9 +Block 0005 [ 13]: 2ea50d34856b87e6 +Block 0005 [ 14]: 4fe1a2161761fcd4 +Block 0005 [ 15]: 559c8caea9bcc491 +Block 0005 [ 16]: 1819c9b7b5dc24a1 +Block 0005 [ 17]: 416e8cecde86b2a1 +Block 0005 [ 18]: 88fbf997a5fb3fb6 +Block 0005 [ 19]: cb3f8e874f54615a +Block 0005 [ 20]: fcdf3457cbc48f47 +Block 0005 [ 21]: fe161ed6b5fa8562 +Block 0005 [ 22]: cb28c641f83c2721 +Block 0005 [ 23]: c447d47847225215 +Block 0005 [ 24]: 53f5947e2ac4a3c7 +Block 0005 [ 25]: d328ee7dddde7b7f +Block 0005 [ 26]: 6d418f9039e885a6 +Block 0005 [ 27]: c49bd9a76b507899 +Block 0005 [ 28]: 576fe9bb6ca62c00 +Block 0005 [ 29]: be801c3749b880c8 +Block 0005 [ 30]: 4b0059b06dd5e4a9 +Block 0005 [ 31]: 2c3a89bd77b33c57 +Block 0005 [ 32]: 68a1d3f04769b9d5 +Block 0005 [ 33]: f8fc066e5a6f0c9e +Block 0005 [ 34]: e42b2962808c4cf0 +Block 0005 [ 35]: c4c0584656e15e35 +Block 0005 [ 36]: 294d1e713a98b7d6 +Block 0005 [ 37]: afe0633eaac739e0 +Block 0005 [ 38]: af7222b24131006a +Block 0005 [ 39]: 6178bbfb2124d548 +Block 0005 [ 40]: 56f5c66b4fe10b8f +Block 0005 [ 41]: 53c90a148b2ebd77 +Block 0005 [ 42]: 417b844c1274d9d8 +Block 0005 [ 43]: c8907a79e976bd33 +Block 0005 [ 44]: 7064d869deaaa1b1 +Block 0005 [ 45]: 024ed97ff2245f12 +Block 0005 [ 46]: 14fdf38d1306d1b2 +Block 0005 [ 47]: cb298fbfc55f3ee4 +Block 0005 [ 48]: eecc9a5195beacdd +Block 0005 [ 49]: 9d9e953c57e3fa74 +Block 0005 [ 50]: 302d90e2c08746b1 +Block 0005 [ 51]: b002b433537ac056 +Block 0005 [ 52]: aff555002370f1d4 +Block 0005 [ 53]: f92f23141050b6ad +Block 0005 [ 54]: 06d4378ec748701c +Block 0005 [ 55]: 81eeed081edc7f48 +Block 0005 [ 56]: dfe8ae684fd0f17a +Block 0005 [ 57]: 92e63e7564fac228 +Block 0005 [ 58]: 86158a52ab99db1f +Block 0005 [ 59]: 8ed6cc492aac5b00 +Block 0005 [ 60]: 7f51ad01e4076720 +Block 0005 [ 61]: 45bea9c00a87bb9d +Block 0005 [ 62]: 45ec0de126d5ae46 +Block 0005 [ 63]: e427a45bc89c0131 +Block 0005 [ 64]: 0dd149ab71faba66 +Block 0005 [ 65]: cb2b2e0071fa7b53 +Block 0005 [ 66]: 71e77479e9ea7cb2 +Block 0005 [ 67]: ecd627c2257d5842 +Block 0005 [ 68]: 67e2ff459ff6512f +Block 0005 [ 69]: 18cbf83fc201d0a7 +Block 0005 [ 70]: 07c57ab8658d81ec +Block 0005 [ 71]: 6183584d0c49845f +Block 0005 [ 72]: 45e12ff25a656646 +Block 0005 [ 73]: d21335cd1ba3047c +Block 0005 [ 74]: 6b7378fc20768c3b +Block 0005 [ 75]: ee564c9a368c1e46 +Block 0005 [ 76]: d1d18cb6f72d0c79 +Block 0005 [ 77]: aebbeda36f0fc0e0 +Block 0005 [ 78]: 6580a8f2676dcdef +Block 0005 [ 79]: b34b0614331bd5fc +Block 0005 [ 80]: 2243be4dd2e49980 +Block 0005 [ 81]: 783960f9d625078a +Block 0005 [ 82]: b5fa94e6f91b72c9 +Block 0005 [ 83]: 2657b20f7f31b021 +Block 0005 [ 84]: a86de3ee9dd25b95 +Block 0005 [ 85]: 3af6e85645f80ea4 +Block 0005 [ 86]: 3a68ed98df3d594d +Block 0005 [ 87]: d2a68745e380dd7f +Block 0005 [ 88]: 437135cba7eaa3e7 +Block 0005 [ 89]: b80144de6b82a67b +Block 0005 [ 90]: ba03053d2bd25052 +Block 0005 [ 91]: dfe01934ef3be8df +Block 0005 [ 92]: cd9c64f1a2139ea9 +Block 0005 [ 93]: 5bd83d1399ed8a42 +Block 0005 [ 94]: a786e2e263c5e47b +Block 0005 [ 95]: e5cb1fbaaaf26d6d +Block 0005 [ 96]: 2a47e840cf6f84fa +Block 0005 [ 97]: b4a5f7d6cc8957b1 +Block 0005 [ 98]: a42e0f60094cc7cb +Block 0005 [ 99]: 335cd356be912b47 +Block 0005 [100]: d30485e50e27d062 +Block 0005 [101]: e59ebdfd8013f6d6 +Block 0005 [102]: 818a06f6b6266b88 +Block 0005 [103]: c995b852c6da3ca0 +Block 0005 [104]: b72676cffffaf86d +Block 0005 [105]: d2498a2128c52576 +Block 0005 [106]: 2debc84192d6fd30 +Block 0005 [107]: d48716be7be4e90d +Block 0005 [108]: 88f03985da415f6c +Block 0005 [109]: dff03e4cfdd02d4a +Block 0005 [110]: ae970d0e7425c8e4 +Block 0005 [111]: 53a3cee362ea1c8e +Block 0005 [112]: a000e14a36a528bc +Block 0005 [113]: 524c86fec28b74f3 +Block 0005 [114]: 0b528ba6288396a3 +Block 0005 [115]: 749c64a4b184569d +Block 0005 [116]: 2e9488cf658cbded +Block 0005 [117]: c587392b84ba8fb3 +Block 0005 [118]: 018fe60c724a8ba1 +Block 0005 [119]: 2d5b243a75ca9634 +Block 0005 [120]: 06b67ca8f1bd302c +Block 0005 [121]: 688d2272401624fd +Block 0005 [122]: b111f0c4872d900d +Block 0005 [123]: 33d51a30d35f4283 +Block 0005 [124]: b9464778209546b4 +Block 0005 [125]: 1e24119f455c36b2 +Block 0005 [126]: 41fca34623d8bd15 +Block 0005 [127]: dad7e567bc66f72c +Block 0006 [ 0]: a3a72e2c8604b578 +Block 0006 [ 1]: 4713a88b4d727ef8 +Block 0006 [ 2]: d750d3a721d9f31b +Block 0006 [ 3]: 6a465b3a9d114ce6 +Block 0006 [ 4]: 887a8704c786cd4c +Block 0006 [ 5]: d975e67288451b37 +Block 0006 [ 6]: e9c343f24b375d68 +Block 0006 [ 7]: eba23301fa7bd4bd +Block 0006 [ 8]: 14521b31b4bf1c46 +Block 0006 [ 9]: 8c13afd741f37d2b +Block 0006 [ 10]: 6f2b59d1cf12c855 +Block 0006 [ 11]: 5dd35e7e01350317 +Block 0006 [ 12]: 224a64109cc2743b +Block 0006 [ 13]: be90804f32ee3a28 +Block 0006 [ 14]: fe2a8bd84deb0852 +Block 0006 [ 15]: 01d3cf8a505adc92 +Block 0006 [ 16]: bc08b05300c76e75 +Block 0006 [ 17]: 999d681fb563dc43 +Block 0006 [ 18]: d1d4a0f963f8fa6f +Block 0006 [ 19]: 35b5d12da998aefc +Block 0006 [ 20]: 90ed25375fed8bb1 +Block 0006 [ 21]: 77daf28509710d25 +Block 0006 [ 22]: eee16b40398474df +Block 0006 [ 23]: 646f422d3bd880b6 +Block 0006 [ 24]: aa6c2956bd819ec5 +Block 0006 [ 25]: 17eef62e7bf6ca72 +Block 0006 [ 26]: 9b70680f409ebbbd +Block 0006 [ 27]: 101cae1679e39b1a +Block 0006 [ 28]: ae539343701e746d +Block 0006 [ 29]: 9ebe9838e1f9a97b +Block 0006 [ 30]: 1d7df5e0c1f03918 +Block 0006 [ 31]: f6d13d16d00019c7 +Block 0006 [ 32]: f373e4095564f479 +Block 0006 [ 33]: d442f06e4e98d587 +Block 0006 [ 34]: 3a69c10e6292e2f4 +Block 0006 [ 35]: 479e23c96fb7743d +Block 0006 [ 36]: 37ec26d28b38943c +Block 0006 [ 37]: 6c35b46dbb181347 +Block 0006 [ 38]: 28ab9b420f8d8b5d +Block 0006 [ 39]: f4c1deb2acc7dcde +Block 0006 [ 40]: ea7c5ea61f6e6ad3 +Block 0006 [ 41]: d7b4bff98caa97ab +Block 0006 [ 42]: fd2559b884c946ae +Block 0006 [ 43]: 62588e85fcce2f30 +Block 0006 [ 44]: 67ace8d1f36ec6cd +Block 0006 [ 45]: 7292a3420dba77c5 +Block 0006 [ 46]: e0d6c21b226e1f6b +Block 0006 [ 47]: ae1f28664a579217 +Block 0006 [ 48]: 4a5ab4b03d7380a6 +Block 0006 [ 49]: 8a2508f7c7f1b0f3 +Block 0006 [ 50]: 3567a420a49dc098 +Block 0006 [ 51]: 61ad122d9db36182 +Block 0006 [ 52]: d97878725887819b +Block 0006 [ 53]: e7e0ad17f72d3565 +Block 0006 [ 54]: 62bfa6c56235fbb9 +Block 0006 [ 55]: 19ba832db474c7da +Block 0006 [ 56]: 382213437f2b5e61 +Block 0006 [ 57]: 40f5b7b35538c7ad +Block 0006 [ 58]: d43ca697239bd77a +Block 0006 [ 59]: fa0faa43eea87e6b +Block 0006 [ 60]: 7e45f6c8dbd6821c +Block 0006 [ 61]: 7ffac662823ab66e +Block 0006 [ 62]: 8c3ffb2704479749 +Block 0006 [ 63]: 4cbfd18a06cfed3c +Block 0006 [ 64]: 3d4f99072714204a +Block 0006 [ 65]: 3ebc6d35e69c5b28 +Block 0006 [ 66]: de07a1e5ca926edb +Block 0006 [ 67]: 5571cf9aa39c3215 +Block 0006 [ 68]: 844ca33bf4947c5e +Block 0006 [ 69]: c6c99f7d74f39266 +Block 0006 [ 70]: a37b366ee3edb520 +Block 0006 [ 71]: 5c4ec2b2655a8a06 +Block 0006 [ 72]: 97a48f22a613f515 +Block 0006 [ 73]: 540a61e06b1c6ae3 +Block 0006 [ 74]: c865bc526dac7065 +Block 0006 [ 75]: a3a088fb6b1efa14 +Block 0006 [ 76]: 9beea238c77ab9f3 +Block 0006 [ 77]: 08b336770fbb1d8e +Block 0006 [ 78]: 409a15767d0707bf +Block 0006 [ 79]: 2825ba8f5eb9e2e5 +Block 0006 [ 80]: 6978f619ee3c20de +Block 0006 [ 81]: 6568588f224ce8ad +Block 0006 [ 82]: e0989069852bd360 +Block 0006 [ 83]: 9a203b316ac1558d +Block 0006 [ 84]: 405f2306f85335bd +Block 0006 [ 85]: f5e3c0dbc69f96d8 +Block 0006 [ 86]: 2a451adb35138baa +Block 0006 [ 87]: fffdc1f7a0148257 +Block 0006 [ 88]: 7d84d77440bee90a +Block 0006 [ 89]: 60e5f23c63fda19c +Block 0006 [ 90]: 5716d0a8c0650062 +Block 0006 [ 91]: 81c75ba2d5bf8206 +Block 0006 [ 92]: f93a47bde77c06e4 +Block 0006 [ 93]: 57dc3d4b8d84ba68 +Block 0006 [ 94]: 21eb9140c58ea159 +Block 0006 [ 95]: 8f3a87bbc66a532c +Block 0006 [ 96]: 93e91414d8d86305 +Block 0006 [ 97]: 334215982e161477 +Block 0006 [ 98]: 28bef7bb826b610b +Block 0006 [ 99]: 6ee7a816de4a890b +Block 0006 [100]: caff0d2a6443ab5b +Block 0006 [101]: f642a6b5153b3428 +Block 0006 [102]: c381f82d97488a06 +Block 0006 [103]: 9bd7117ff6ed1fa3 +Block 0006 [104]: c314e4ee3b0a9a1f +Block 0006 [105]: 76800ae8fba93619 +Block 0006 [106]: bd25cb81c4257d9f +Block 0006 [107]: 1ce3bf40c40723e5 +Block 0006 [108]: f5e417cbe472bb97 +Block 0006 [109]: 8cfd294fa8945406 +Block 0006 [110]: a4c5d94d07afe74d +Block 0006 [111]: bcb602e186f471ff +Block 0006 [112]: c02c0c2e0af63068 +Block 0006 [113]: bc27e62ff57050af +Block 0006 [114]: a6dc335ddf95c5b1 +Block 0006 [115]: b0e366f93847f756 +Block 0006 [116]: 7fe108fe80552259 +Block 0006 [117]: a49d9f9fca18b0f0 +Block 0006 [118]: 27aeee8d45049e51 +Block 0006 [119]: 314b70072932cf39 +Block 0006 [120]: 6ef20c87fc0697c9 +Block 0006 [121]: 19da493d127bbe55 +Block 0006 [122]: c5b5f7cc1c77beaa +Block 0006 [123]: f5e3973f36bdd3f1 +Block 0006 [124]: 52f7210c0f544bb2 +Block 0006 [125]: f7c8945cbbb13f68 +Block 0006 [126]: f30e60931430aa3b +Block 0006 [127]: 323c286c4ce01b9c +Block 0007 [ 0]: 6387ec0a9b706d60 +Block 0007 [ 1]: bb702446236f8be0 +Block 0007 [ 2]: f98b3dae492b7558 +Block 0007 [ 3]: caa8f2f9e58e5421 +Block 0007 [ 4]: 570bc5ea80d9d75e +Block 0007 [ 5]: 2f274d6c336d55bc +Block 0007 [ 6]: 977e5e3d3c58d830 +Block 0007 [ 7]: 85135d0217021ad5 +Block 0007 [ 8]: 740f76b2966956cb +Block 0007 [ 9]: 829305b653c36e53 +Block 0007 [ 10]: fe8820deb0a05b9a +Block 0007 [ 11]: 70487cca2fa7b66a +Block 0007 [ 12]: 9baf5077693e12ab +Block 0007 [ 13]: 86c7875c562e7817 +Block 0007 [ 14]: 6fda95b0820b7626 +Block 0007 [ 15]: 87759ed28fc95dc5 +Block 0007 [ 16]: 1914dd4b93217d74 +Block 0007 [ 17]: 3175851fcde71765 +Block 0007 [ 18]: 429d7afe1a305245 +Block 0007 [ 19]: dc47b73aeef3ed87 +Block 0007 [ 20]: 4ad7fe926a869547 +Block 0007 [ 21]: 08a805cc0ca53ee3 +Block 0007 [ 22]: 92eb59c00f0fc241 +Block 0007 [ 23]: 4a9207af3b1b09c2 +Block 0007 [ 24]: 00b6146a8e156963 +Block 0007 [ 25]: 30ab9619f07ea05b +Block 0007 [ 26]: f7b7b8ac33c5a933 +Block 0007 [ 27]: 8e245c42cf3cd563 +Block 0007 [ 28]: 5f46e9a882003c74 +Block 0007 [ 29]: 194b404af2af00cc +Block 0007 [ 30]: 0b4e9da19d8523b5 +Block 0007 [ 31]: a4b827d6768ad06a +Block 0007 [ 32]: 118a7958aae82170 +Block 0007 [ 33]: 3e8903e2c2ba80f4 +Block 0007 [ 34]: 07d87f37f9e20e96 +Block 0007 [ 35]: 05294a48cf03630b +Block 0007 [ 36]: b7f897cabe953dcb +Block 0007 [ 37]: a046083e04a24015 +Block 0007 [ 38]: eeb8efb5c70409f9 +Block 0007 [ 39]: bfe5de4db2fa7e0d +Block 0007 [ 40]: 24a7e8037b5d2ca0 +Block 0007 [ 41]: a315e9daa0998eb1 +Block 0007 [ 42]: bd52356dc28f6dac +Block 0007 [ 43]: 226fb1009dfc10be +Block 0007 [ 44]: a779004a2ded38af +Block 0007 [ 45]: 85c57f732e286ea9 +Block 0007 [ 46]: 30b6b1dbc7798fcf +Block 0007 [ 47]: c89e51d00e162333 +Block 0007 [ 48]: e4c9d91c7dcfd8e3 +Block 0007 [ 49]: 106ce6c585962d8f +Block 0007 [ 50]: 22cf9c3f79496b09 +Block 0007 [ 51]: d94d968fec6ea652 +Block 0007 [ 52]: fb0c6976e070caf2 +Block 0007 [ 53]: 1787da9837e8262e +Block 0007 [ 54]: 4e45822661217409 +Block 0007 [ 55]: 51f4c5bdba281a43 +Block 0007 [ 56]: 71f6f5746a9cdbc5 +Block 0007 [ 57]: dd45b228f797a3ed +Block 0007 [ 58]: 5829018cdd1ab9c6 +Block 0007 [ 59]: af606f89f13d4187 +Block 0007 [ 60]: faab7f9a3350f5ac +Block 0007 [ 61]: 09ec94cc822811a6 +Block 0007 [ 62]: 9bb2f1fb5c15a70e +Block 0007 [ 63]: fb37b1f9f3858291 +Block 0007 [ 64]: 12e2b535b7b01f3d +Block 0007 [ 65]: 319c071179726a9d +Block 0007 [ 66]: c4c40af8058a8900 +Block 0007 [ 67]: f52597b11ca98e1f +Block 0007 [ 68]: 0264495f476a7dde +Block 0007 [ 69]: 21d452f219468635 +Block 0007 [ 70]: 64cbc8315af032bb +Block 0007 [ 71]: 04629095edb84f96 +Block 0007 [ 72]: 42b7b37a32e08328 +Block 0007 [ 73]: a7c62acb4f22e113 +Block 0007 [ 74]: c93f84a445c8b8c4 +Block 0007 [ 75]: 210bf0fd5973d7a5 +Block 0007 [ 76]: c6598b4fb35eb70c +Block 0007 [ 77]: dc3ab8ae47c5ec9e +Block 0007 [ 78]: 932b8a0159b60161 +Block 0007 [ 79]: 1e886e331d1d815b +Block 0007 [ 80]: d57e42a90b5b5ea2 +Block 0007 [ 81]: c19836b4eebcf0e0 +Block 0007 [ 82]: 7bcf27db4f73cecf +Block 0007 [ 83]: 4f337cae713d7a49 +Block 0007 [ 84]: c74db29321d52f0a +Block 0007 [ 85]: 81757ef96322e580 +Block 0007 [ 86]: 1e4f7d1b8905b7a1 +Block 0007 [ 87]: 6fe9f441a85dac8d +Block 0007 [ 88]: bb2b2c459eaba1f5 +Block 0007 [ 89]: f7a9148b29d6bfeb +Block 0007 [ 90]: 0cc049b9c6e1237c +Block 0007 [ 91]: d297ff0079dbb8e3 +Block 0007 [ 92]: df4b35c29891f33b +Block 0007 [ 93]: 95c07dfb25bdb5d3 +Block 0007 [ 94]: a1b58642419c579d +Block 0007 [ 95]: e4f0ae1ce73b7a94 +Block 0007 [ 96]: 747795cbb741f532 +Block 0007 [ 97]: 58122055bd9967a8 +Block 0007 [ 98]: e6d2fe83ad0bb0c7 +Block 0007 [ 99]: 7c6733d7e587fece +Block 0007 [100]: 6b583826c192891a +Block 0007 [101]: 8ae9b5e57e175517 +Block 0007 [102]: 2f6e710fb49abdd8 +Block 0007 [103]: d5be1ac3dda22c8d +Block 0007 [104]: 5afff784fa1bf48b +Block 0007 [105]: 1fc1d96bc25caea1 +Block 0007 [106]: fb74ff65f0f24544 +Block 0007 [107]: e48fd5ba945b02a2 +Block 0007 [108]: b7de6a07cfbfdb0a +Block 0007 [109]: 151e19b16051ab9f +Block 0007 [110]: 9254ef841a98c808 +Block 0007 [111]: 4b373f36b0e31770 +Block 0007 [112]: a0d241c34ff8cfa6 +Block 0007 [113]: 76c7e4c042ec3aec +Block 0007 [114]: 4832326e33ed6314 +Block 0007 [115]: 2339915d2024ef5f +Block 0007 [116]: e0d8261905b27f66 +Block 0007 [117]: 2261a1333158bfdb +Block 0007 [118]: 78f4b91b214610b6 +Block 0007 [119]: 13d6a0120299a8d0 +Block 0007 [120]: 7c15f3b8582db3ab +Block 0007 [121]: 00b9f16978014f32 +Block 0007 [122]: c37476f83eab622f +Block 0007 [123]: 3b504a0cce417082 +Block 0007 [124]: 504d28bac5681fcf +Block 0007 [125]: 53fe3f3c188cfdfc +Block 0007 [126]: d2edb0da87468512 +Block 0007 [127]: 8dd7c8f05895eea8 +Block 0008 [ 0]: 5d390b079d0f3c47 +Block 0008 [ 1]: 631734483921758e +Block 0008 [ 2]: ed4bf986e07b5e28 +Block 0008 [ 3]: 9ffa103e77ebc487 +Block 0008 [ 4]: 5c194d18d89640e6 +Block 0008 [ 5]: 8603e18fc4fe0f6a +Block 0008 [ 6]: 00b9f5cee0eaadfc +Block 0008 [ 7]: 8b1ea916bb95a9f2 +Block 0008 [ 8]: 99099a16e443ef5f +Block 0008 [ 9]: b8e6ba465a8b10e9 +Block 0008 [ 10]: 756a2fbbf4f5a154 +Block 0008 [ 11]: 7bc7f48014c56e73 +Block 0008 [ 12]: 1e11511a7bf4bd41 +Block 0008 [ 13]: e949210b66327b58 +Block 0008 [ 14]: 051f0050d5aac874 +Block 0008 [ 15]: 1a2566c306ead6b9 +Block 0008 [ 16]: 930d022e7888d216 +Block 0008 [ 17]: 0582ec2e435a555f +Block 0008 [ 18]: fe0dd7d9465e1e29 +Block 0008 [ 19]: de2ee4564bce48a5 +Block 0008 [ 20]: 0d5072a51ecc0fa0 +Block 0008 [ 21]: 44427a90322926cf +Block 0008 [ 22]: 1d315d890f65e83d +Block 0008 [ 23]: e1f9ca311dc237b8 +Block 0008 [ 24]: 0baf3526a72a11bc +Block 0008 [ 25]: 9a0d03779403602c +Block 0008 [ 26]: b14361834efb1c72 +Block 0008 [ 27]: c93f96de539b5c4f +Block 0008 [ 28]: 0763882c2814ac4c +Block 0008 [ 29]: 1713c202a7fefb89 +Block 0008 [ 30]: a3d9d35d0f938ac9 +Block 0008 [ 31]: fa39df6510e6f52a +Block 0008 [ 32]: d0ad5e8ded8cb6af +Block 0008 [ 33]: 63fc4badd29ec94b +Block 0008 [ 34]: a4421774c98764ef +Block 0008 [ 35]: 3414be973e81f2ef +Block 0008 [ 36]: 74df078314799d9d +Block 0008 [ 37]: be229396be40f7b6 +Block 0008 [ 38]: e0d009aa0635bb4c +Block 0008 [ 39]: fab2695ac684c57a +Block 0008 [ 40]: 6c0a94812877f048 +Block 0008 [ 41]: 7dc440749ae442ab +Block 0008 [ 42]: d78523d4176e3f2f +Block 0008 [ 43]: b8019dac190a312e +Block 0008 [ 44]: 98750809c9fd9a29 +Block 0008 [ 45]: 97d93132f60ba799 +Block 0008 [ 46]: 4b78d6769101dec3 +Block 0008 [ 47]: 8dfc4271071b6374 +Block 0008 [ 48]: 0d93e5b71ba5accf +Block 0008 [ 49]: 55b8352ba3de28a7 +Block 0008 [ 50]: 1ff98ead8ed53bff +Block 0008 [ 51]: 4345c4c79dc0dc9b +Block 0008 [ 52]: 07a4077a5731b408 +Block 0008 [ 53]: ce6b2dda9f81e9d8 +Block 0008 [ 54]: a54293585c425cd6 +Block 0008 [ 55]: 75430004a8b7b2ff +Block 0008 [ 56]: cdff0f60d61ed3a9 +Block 0008 [ 57]: 40473d034cdc74cc +Block 0008 [ 58]: 9dace14d7adffd8b +Block 0008 [ 59]: cf19dab22e542598 +Block 0008 [ 60]: 3949259d09c091d8 +Block 0008 [ 61]: 7c81a97d86a30f01 +Block 0008 [ 62]: 4f676a32da1a29d0 +Block 0008 [ 63]: 66e8d05639fb0c14 +Block 0008 [ 64]: 4c1af73d9a85dd31 +Block 0008 [ 65]: 79e9b95889a88a16 +Block 0008 [ 66]: f9908b3531cc76ea +Block 0008 [ 67]: f6cfad223752eec7 +Block 0008 [ 68]: 41479ece4c58b371 +Block 0008 [ 69]: 82a169276b336f19 +Block 0008 [ 70]: d44954dbd75a21b8 +Block 0008 [ 71]: 1f95e2b453d4f78b +Block 0008 [ 72]: bced4e6da5ba36eb +Block 0008 [ 73]: 068eafdb44cbfbc2 +Block 0008 [ 74]: 0999d545028f9efe +Block 0008 [ 75]: eded6e0de0c417a7 +Block 0008 [ 76]: 29458d270d29c726 +Block 0008 [ 77]: ca47e3726b5c83b7 +Block 0008 [ 78]: 55d4767698536bfd +Block 0008 [ 79]: d6625a482a8db1b3 +Block 0008 [ 80]: 1cc4d3f6df69fe20 +Block 0008 [ 81]: e8b4b60c15d40dca +Block 0008 [ 82]: 32f048c6f0d48123 +Block 0008 [ 83]: 2f35db8679917a7e +Block 0008 [ 84]: 759b5ada93849d12 +Block 0008 [ 85]: 1ae3c2be42c6eea9 +Block 0008 [ 86]: 93e74ea55d8b0d66 +Block 0008 [ 87]: 68fcbcde1e1a6565 +Block 0008 [ 88]: 1889a5726a26da42 +Block 0008 [ 89]: 411b88d9b6db4828 +Block 0008 [ 90]: de23768fd2455c23 +Block 0008 [ 91]: 4f6067933ce44e02 +Block 0008 [ 92]: 8efa982c0485196c +Block 0008 [ 93]: 526025198657de26 +Block 0008 [ 94]: 419b492b3661f65d +Block 0008 [ 95]: fe15b81200f6eb75 +Block 0008 [ 96]: c6a9ecad13aadff8 +Block 0008 [ 97]: 0a76c404e5278377 +Block 0008 [ 98]: c8172a7c6942cc25 +Block 0008 [ 99]: 311b55b1905a0a60 +Block 0008 [100]: 724ab2c3127bfe21 +Block 0008 [101]: 75e4ec223a74f3f5 +Block 0008 [102]: 5764eaa3be4daec2 +Block 0008 [103]: d1ded8250f85689c +Block 0008 [104]: a2f7c754668a6481 +Block 0008 [105]: ead4eeb6d1d49959 +Block 0008 [106]: 47bb132a81f3c0da +Block 0008 [107]: f3051e81a5dd1079 +Block 0008 [108]: 9d12025fdde61890 +Block 0008 [109]: 63c8049a357ca2c0 +Block 0008 [110]: 83ebad4c3c2faba3 +Block 0008 [111]: 1007d48feef5049d +Block 0008 [112]: 88d09ba2a9e8e2a5 +Block 0008 [113]: 2afbe3f5d1b30d82 +Block 0008 [114]: 00004c21a628e91c +Block 0008 [115]: 0e46db5c9f6e12c9 +Block 0008 [116]: 9cf96fab1e4dd3f8 +Block 0008 [117]: a7703f68865b6af4 +Block 0008 [118]: ad53f4297b4dd1db +Block 0008 [119]: a012faa78331fc14 +Block 0008 [120]: d5aaf6aeabe110f8 +Block 0008 [121]: d6de328de4c92196 +Block 0008 [122]: 75827f679ab6b8a7 +Block 0008 [123]: fbf6da92a4f6ced0 +Block 0008 [124]: f9df80a3daf27bb8 +Block 0008 [125]: 0b35df003d687d2f +Block 0008 [126]: 69ebef0dc424ec77 +Block 0008 [127]: 150d2aaa755eee68 +Block 0009 [ 0]: ce8d377f08f7fe79 +Block 0009 [ 1]: 8c20bf58c17115cf +Block 0009 [ 2]: 9d58f26c303997fd +Block 0009 [ 3]: 908a17f607eafb21 +Block 0009 [ 4]: ca4c3bf6e41ffade +Block 0009 [ 5]: 9b23d7636fb3f276 +Block 0009 [ 6]: 31d57db44e9d7078 +Block 0009 [ 7]: 71494598e4916674 +Block 0009 [ 8]: 7f43fee7abb5a94f +Block 0009 [ 9]: cc0b2152cc614b56 +Block 0009 [ 10]: a4c240deb0eb1a93 +Block 0009 [ 11]: 8dc29aa7479a224a +Block 0009 [ 12]: 23d557074d98a0b7 +Block 0009 [ 13]: cbe656a292df3d02 +Block 0009 [ 14]: cb8dc6eefa34d7c8 +Block 0009 [ 15]: 8d5a12c06108e989 +Block 0009 [ 16]: bcf42fe767f10284 +Block 0009 [ 17]: 73e4f1efa605ee48 +Block 0009 [ 18]: 3b05f1b3e39ce7c4 +Block 0009 [ 19]: 44a0da643669026d +Block 0009 [ 20]: 730a137534d337bf +Block 0009 [ 21]: 007c05c1857fab4e +Block 0009 [ 22]: f99aac7ee7a70067 +Block 0009 [ 23]: e2c11ca64fb8518c +Block 0009 [ 24]: 2d0244c8a78b3f7f +Block 0009 [ 25]: 02d54c9795ed259d +Block 0009 [ 26]: 1ccb41de825eb282 +Block 0009 [ 27]: 094e02b949396d6a +Block 0009 [ 28]: fe86cfd514adaf77 +Block 0009 [ 29]: b92fa1cd5c496f06 +Block 0009 [ 30]: 278fcfe3a4b794fa +Block 0009 [ 31]: 8eb888dd3e6e1d0d +Block 0009 [ 32]: 39971bfaa759afc1 +Block 0009 [ 33]: 5efc9323d1eaa784 +Block 0009 [ 34]: 32fa6022074c0fcf +Block 0009 [ 35]: 484b81c4f4653609 +Block 0009 [ 36]: 7b8beed4c906adf7 +Block 0009 [ 37]: 2dbe5bb15be5770f +Block 0009 [ 38]: 71409b1f63ac2093 +Block 0009 [ 39]: de542f2668c63b10 +Block 0009 [ 40]: 44b0c9767d4418c8 +Block 0009 [ 41]: b90ef7ff84c5e1a4 +Block 0009 [ 42]: b9fd084eda79682b +Block 0009 [ 43]: d91a574bda76901f +Block 0009 [ 44]: 8bc9f293e1d45b6c +Block 0009 [ 45]: a55399657500adf4 +Block 0009 [ 46]: 4b12096ac90ccc73 +Block 0009 [ 47]: 715af0c0bb5895e3 +Block 0009 [ 48]: ef82a77202164329 +Block 0009 [ 49]: 3a8911d0d52aa2ee +Block 0009 [ 50]: dfe9a2c49fd37efc +Block 0009 [ 51]: 44b03a85493a87d1 +Block 0009 [ 52]: 67ef6a9d0b782657 +Block 0009 [ 53]: 7830301ca2b6de19 +Block 0009 [ 54]: b77da999c566c7f0 +Block 0009 [ 55]: 4f075e97d94a8e0a +Block 0009 [ 56]: 7f4072a94c94f761 +Block 0009 [ 57]: 16cdea91df85080d +Block 0009 [ 58]: 3874d09a0ea0f90c +Block 0009 [ 59]: cd40596f76232601 +Block 0009 [ 60]: 56c4d1d584fe9206 +Block 0009 [ 61]: 8353f143a48f7493 +Block 0009 [ 62]: 3b43a5839db205dd +Block 0009 [ 63]: 7911e3e5c874bea7 +Block 0009 [ 64]: a202515a2b192ac0 +Block 0009 [ 65]: 0389f1e56dc55e6a +Block 0009 [ 66]: 4e951464e5ad25c5 +Block 0009 [ 67]: 257ac4933f14f134 +Block 0009 [ 68]: 3287ef9942926b40 +Block 0009 [ 69]: 40cec3bd22c86041 +Block 0009 [ 70]: dbd6ec1749aa5e99 +Block 0009 [ 71]: 5788f14286b46a60 +Block 0009 [ 72]: 72760917498f959e +Block 0009 [ 73]: 9f36d2b48e2822b6 +Block 0009 [ 74]: 5081f0e45fb5fd67 +Block 0009 [ 75]: cc5fb925077bd013 +Block 0009 [ 76]: 6518a37a669fde5e +Block 0009 [ 77]: df366ef1564c60e4 +Block 0009 [ 78]: 55be980f77a07ec0 +Block 0009 [ 79]: f9873ade723e65b7 +Block 0009 [ 80]: f35f4a2816fc122c +Block 0009 [ 81]: cd1eb28cfa398921 +Block 0009 [ 82]: 09da96aa8bdac0d5 +Block 0009 [ 83]: eb6dc7aab11559dc +Block 0009 [ 84]: 25447fc0c67575d4 +Block 0009 [ 85]: 91a4d8daa8c810f5 +Block 0009 [ 86]: 9e31930d5aef7367 +Block 0009 [ 87]: 4f5a712ea723acc8 +Block 0009 [ 88]: edd07d6da9c84795 +Block 0009 [ 89]: 02d2177706dd53f7 +Block 0009 [ 90]: bf6c192b4cf63a91 +Block 0009 [ 91]: c78c4419b3ee8253 +Block 0009 [ 92]: a100748306111376 +Block 0009 [ 93]: 73ce0d73b1e79718 +Block 0009 [ 94]: 1014b78632ec0d41 +Block 0009 [ 95]: 734231d1617553de +Block 0009 [ 96]: 5988558d1a8d8e3a +Block 0009 [ 97]: 5629c3ede2e9d511 +Block 0009 [ 98]: 79e13d0d94340525 +Block 0009 [ 99]: f4c5c7336d169b86 +Block 0009 [100]: 5764cef5ad7fa93f +Block 0009 [101]: fb6234c6a6386257 +Block 0009 [102]: f4b994758a0f35e7 +Block 0009 [103]: 1a0cd87926b1fde2 +Block 0009 [104]: c72591e546983e39 +Block 0009 [105]: 0f7b07aaa5e224c3 +Block 0009 [106]: ab73b302681f5e62 +Block 0009 [107]: ce0ba76a4505aa4e +Block 0009 [108]: ff7210fcd2fde9a6 +Block 0009 [109]: 4629ed41f29c3515 +Block 0009 [110]: 13ec4b4caa1040d2 +Block 0009 [111]: d1ceeddad6ad578b +Block 0009 [112]: bac3f41626f8d3dc +Block 0009 [113]: ad4ff3709d35af50 +Block 0009 [114]: 5e9cf2efe0414e28 +Block 0009 [115]: 27ce4c9d35606793 +Block 0009 [116]: f46f2476963e3e88 +Block 0009 [117]: 5861232534f983cc +Block 0009 [118]: 0f9800c4a3832b80 +Block 0009 [119]: f1fcb7824c057729 +Block 0009 [120]: 945e20f06a155498 +Block 0009 [121]: ffa7dfbd69cd6bb1 +Block 0009 [122]: 9a1be0799dbe2856 +Block 0009 [123]: 681ba56766e190f6 +Block 0009 [124]: 5e326010ccbda0bd +Block 0009 [125]: 94f0f292bfb4113c +Block 0009 [126]: fa3b9bae5b239f61 +Block 0009 [127]: 37d071a4e980c4a0 +Block 0010 [ 0]: 6ae4225fd3354e7d +Block 0010 [ 1]: ae61c609843bcde0 +Block 0010 [ 2]: ed5854bb11b0d8f9 +Block 0010 [ 3]: 0120456d2ab6b157 +Block 0010 [ 4]: ab7db2b1fc378e9a +Block 0010 [ 5]: c97048fe8a2f5f4a +Block 0010 [ 6]: cba30aaab4ef2f74 +Block 0010 [ 7]: 56efcefbc8806464 +Block 0010 [ 8]: 47488cad6c56f9d0 +Block 0010 [ 9]: 5d99c80238f6ab3d +Block 0010 [ 10]: 2aaac7c0e0b8d7b2 +Block 0010 [ 11]: 54677ec26bdc9712 +Block 0010 [ 12]: 1aab36f7d8d09dbc +Block 0010 [ 13]: f437d5d7483ec013 +Block 0010 [ 14]: 707edb42a8a784d0 +Block 0010 [ 15]: e594c41a0b98992f +Block 0010 [ 16]: dbb919a6e327f5ac +Block 0010 [ 17]: 83bb58fbec7087d4 +Block 0010 [ 18]: 6cf134c837408aa5 +Block 0010 [ 19]: d871df3877e67200 +Block 0010 [ 20]: aa09bbdc731bec8c +Block 0010 [ 21]: 397bd2b0904d0eb4 +Block 0010 [ 22]: 12e5d0c755e90680 +Block 0010 [ 23]: 646867347d61108d +Block 0010 [ 24]: ae575603915fed70 +Block 0010 [ 25]: 963882db4d43ed3e +Block 0010 [ 26]: 331347bff0ca99fb +Block 0010 [ 27]: 85ec009fe77bbdf2 +Block 0010 [ 28]: 084715d977901d19 +Block 0010 [ 29]: 5d70ffa2c7e8fcd0 +Block 0010 [ 30]: aae90dd8c199a885 +Block 0010 [ 31]: 094f2087a840c4c3 +Block 0010 [ 32]: 78970a09ff9119ee +Block 0010 [ 33]: 19164104a0809a35 +Block 0010 [ 34]: 67cf795053fc548f +Block 0010 [ 35]: 15d39628c9533f25 +Block 0010 [ 36]: a8521d7d68c133f9 +Block 0010 [ 37]: da48eb5cbd765e6e +Block 0010 [ 38]: 1c4dbae1e77c7698 +Block 0010 [ 39]: 693ffe0f2fe3fe1d +Block 0010 [ 40]: 2d1edc2b4a72a1df +Block 0010 [ 41]: 8e561749154aad0e +Block 0010 [ 42]: 0fd72e31af0b850c +Block 0010 [ 43]: 165f1c19fbebadfe +Block 0010 [ 44]: b26ee88a45cb6beb +Block 0010 [ 45]: c0e826858ed46223 +Block 0010 [ 46]: f992b123f14f1cab +Block 0010 [ 47]: 8a347ffa03d4829d +Block 0010 [ 48]: 1c7682e743b0584d +Block 0010 [ 49]: 2d0ae08ec8c7aa45 +Block 0010 [ 50]: 01e6d7667bd54686 +Block 0010 [ 51]: 8f95e476ebd46d17 +Block 0010 [ 52]: 94ef46dbbba5d43f +Block 0010 [ 53]: 8d29e31a9f4cc10b +Block 0010 [ 54]: 1be3ba26e8284d00 +Block 0010 [ 55]: ad2cef78f2a69fbf +Block 0010 [ 56]: a10dfde3deac51a0 +Block 0010 [ 57]: 36376969357596b8 +Block 0010 [ 58]: c2d33dca853ea6a1 +Block 0010 [ 59]: 628d33bcabbefbef +Block 0010 [ 60]: f40ff3b9ccc10e17 +Block 0010 [ 61]: 1e5528923919f862 +Block 0010 [ 62]: 414e61378799210e +Block 0010 [ 63]: 62a81dce51d609a7 +Block 0010 [ 64]: 096e77f5d7249666 +Block 0010 [ 65]: 47820b3a33cd71d3 +Block 0010 [ 66]: 0bd5d6025f579a6c +Block 0010 [ 67]: a9fa38990d42aca5 +Block 0010 [ 68]: 27bd9b1bd1097a06 +Block 0010 [ 69]: 03dafb3b4f0a4028 +Block 0010 [ 70]: 5fb19963de1e3de9 +Block 0010 [ 71]: 4939211959107034 +Block 0010 [ 72]: 666da05a2d74db1c +Block 0010 [ 73]: f19cf56f0a6c1655 +Block 0010 [ 74]: 92c4b322f190d295 +Block 0010 [ 75]: 9ad74d6c542b329d +Block 0010 [ 76]: 989f4d9fa7c577ba +Block 0010 [ 77]: 225b7af5faafe2a4 +Block 0010 [ 78]: 5aa9ea1a78ec99e8 +Block 0010 [ 79]: 228e7be67b366548 +Block 0010 [ 80]: 150b81a49ddc73c6 +Block 0010 [ 81]: 2686be4153716d63 +Block 0010 [ 82]: ffebb344c1e28f03 +Block 0010 [ 83]: b08324cad8a5226d +Block 0010 [ 84]: 8d6d3d47c0d054ca +Block 0010 [ 85]: 3e184784291a476d +Block 0010 [ 86]: 32f84fc587b2c6b0 +Block 0010 [ 87]: a2b2b8f1589defd7 +Block 0010 [ 88]: 54977641b62ca3f6 +Block 0010 [ 89]: a28f16c81a04dc04 +Block 0010 [ 90]: 305249ff2c268843 +Block 0010 [ 91]: b1e0bd99bdb4c0bd +Block 0010 [ 92]: 7cf0826d7d7e0da9 +Block 0010 [ 93]: 52754123e360fc24 +Block 0010 [ 94]: 0526df5315c972ce +Block 0010 [ 95]: 99b71c3b595c570d +Block 0010 [ 96]: 3813b5c8bf718f26 +Block 0010 [ 97]: cc36301d8c899aca +Block 0010 [ 98]: a4de37d02e4590bf +Block 0010 [ 99]: 6f82a145af50d633 +Block 0010 [100]: de36d308ff4ef542 +Block 0010 [101]: 9a33a513b52c8d89 +Block 0010 [102]: ab2d45c941001698 +Block 0010 [103]: de21774c3a9e5d89 +Block 0010 [104]: 382200ec936fd74d +Block 0010 [105]: dd8d3ae52c7715fd +Block 0010 [106]: 842c4259c643aa09 +Block 0010 [107]: 0b829f3180e13902 +Block 0010 [108]: cec67d91ad380b93 +Block 0010 [109]: 4dc4beebbb42a6f5 +Block 0010 [110]: 5be736664c2d8d83 +Block 0010 [111]: e2f1024ba77d28fb +Block 0010 [112]: 81b0bb61533210ec +Block 0010 [113]: f83a00c51e3d5f38 +Block 0010 [114]: 7db95cbd56f98dcd +Block 0010 [115]: ee9f7501afa33446 +Block 0010 [116]: df7a7cf05087effe +Block 0010 [117]: 008776f8c2bb79ef +Block 0010 [118]: 64f2536d4fddec8a +Block 0010 [119]: 42233a0aaa87bd28 +Block 0010 [120]: aa47058137b994c5 +Block 0010 [121]: 79deaf8cb75ceefa +Block 0010 [122]: 88f20958cc05a49c +Block 0010 [123]: 2e3801065fdccaee +Block 0010 [124]: 53f1c983bea4c1ad +Block 0010 [125]: 6f75ee8921399ac7 +Block 0010 [126]: e1ef4f82c909106b +Block 0010 [127]: 2ad0bc617385b62e +Block 0011 [ 0]: 84a8bbec5e9ee507 +Block 0011 [ 1]: e8a03a4136c62548 +Block 0011 [ 2]: d6d377ef5a53f910 +Block 0011 [ 3]: 661ba9468903274e +Block 0011 [ 4]: 159beb64d3f0bc11 +Block 0011 [ 5]: 43118ec42adbd446 +Block 0011 [ 6]: c0f8908e19fdc2eb +Block 0011 [ 7]: 9f6c9cbf9f38a396 +Block 0011 [ 8]: ff27ec0e5b15b35b +Block 0011 [ 9]: a3c32c3786f7abed +Block 0011 [ 10]: de7a4b557b81bcd4 +Block 0011 [ 11]: 47f34f0379397d03 +Block 0011 [ 12]: a28b5dcc934a73ae +Block 0011 [ 13]: e5f091472cb1bfa1 +Block 0011 [ 14]: 21cface025922c20 +Block 0011 [ 15]: 34243b1d719f51b1 +Block 0011 [ 16]: 4646e791e97f3067 +Block 0011 [ 17]: 2c4737e43fc46a7c +Block 0011 [ 18]: 37576580cb2492c5 +Block 0011 [ 19]: 79f8b1d97f0e8175 +Block 0011 [ 20]: 54a860d192f9aa2c +Block 0011 [ 21]: 407cda5ad8c11036 +Block 0011 [ 22]: ea47f0af4b9e5a9a +Block 0011 [ 23]: 755da21d178d3913 +Block 0011 [ 24]: 3d220cc9bdc29123 +Block 0011 [ 25]: 890994f162b2fcb5 +Block 0011 [ 26]: 0ecd9a8a8ba69663 +Block 0011 [ 27]: 792867585bc69059 +Block 0011 [ 28]: 099c4e35d90e319b +Block 0011 [ 29]: f68ee3ac82745acb +Block 0011 [ 30]: 715ceab2ace61477 +Block 0011 [ 31]: add36ee92d210fd9 +Block 0011 [ 32]: 8941e202a8ac2505 +Block 0011 [ 33]: 337cbdd068139e15 +Block 0011 [ 34]: 493cc70a9def9bae +Block 0011 [ 35]: 726fa6f389708a0c +Block 0011 [ 36]: 791b092018711bae +Block 0011 [ 37]: ff5f50b1219a362e +Block 0011 [ 38]: 637297cc8f5aca78 +Block 0011 [ 39]: 384420634789c4da +Block 0011 [ 40]: da3e44be4ac76889 +Block 0011 [ 41]: 48394be7eeba3e3e +Block 0011 [ 42]: e176657fb6b322b8 +Block 0011 [ 43]: c513ffedae4caad1 +Block 0011 [ 44]: 4ddbc4eac9242fc7 +Block 0011 [ 45]: 362645696d67c92d +Block 0011 [ 46]: 95570dee7ffafff2 +Block 0011 [ 47]: 8f3b2a3d572a1ed0 +Block 0011 [ 48]: a79e0894ca3d905a +Block 0011 [ 49]: dce9aa88d8a9d75b +Block 0011 [ 50]: 2a82a5435a689d82 +Block 0011 [ 51]: 32d286f29f37cacf +Block 0011 [ 52]: b19ce4dca4005b60 +Block 0011 [ 53]: 40847a0db8fe5e34 +Block 0011 [ 54]: 6138dcc695f94762 +Block 0011 [ 55]: 491328f6caa72814 +Block 0011 [ 56]: d0b86718c90f93a6 +Block 0011 [ 57]: 48640b60a60db10b +Block 0011 [ 58]: ba701372be54710c +Block 0011 [ 59]: e89bf12522b18b59 +Block 0011 [ 60]: a0a5d8654266c996 +Block 0011 [ 61]: afe130022ad9628f +Block 0011 [ 62]: dd319661eb7f7aad +Block 0011 [ 63]: 98bf04f183e0b0bd +Block 0011 [ 64]: 521f230536266d1b +Block 0011 [ 65]: 4c964a1ca31865cf +Block 0011 [ 66]: 7983f4550bc3d6d2 +Block 0011 [ 67]: 0e164c3fbce581f2 +Block 0011 [ 68]: 637686674de50ddf +Block 0011 [ 69]: a19d2b703b28c51d +Block 0011 [ 70]: c504278031ca23f3 +Block 0011 [ 71]: 9026013bac4a5535 +Block 0011 [ 72]: 652a23d15b9afe84 +Block 0011 [ 73]: 2d45fc40abd2c9e6 +Block 0011 [ 74]: 0d920ca47339da99 +Block 0011 [ 75]: 19f051f1f60130b4 +Block 0011 [ 76]: e608f533dcd7a6e1 +Block 0011 [ 77]: 4d59c7dacc856135 +Block 0011 [ 78]: cdcc9c8f0b17ebfc +Block 0011 [ 79]: bb13ab77aeb72e83 +Block 0011 [ 80]: c5900c3d399e428d +Block 0011 [ 81]: ab7bd462910e6519 +Block 0011 [ 82]: f7dbc144cc0076c3 +Block 0011 [ 83]: 5d80b17f4bc6ccda +Block 0011 [ 84]: 55c0c5e537ee7d11 +Block 0011 [ 85]: f305d86abf28d135 +Block 0011 [ 86]: 668f8c1e60a8fffa +Block 0011 [ 87]: 8e6e92f12139d3e0 +Block 0011 [ 88]: 90b32c3b5e579f75 +Block 0011 [ 89]: 4804297542b36066 +Block 0011 [ 90]: 0d1933319e2a7ff9 +Block 0011 [ 91]: 290f8644fbf35131 +Block 0011 [ 92]: b358a81c7060c4fc +Block 0011 [ 93]: 45b588b79be669a3 +Block 0011 [ 94]: 31baa98245901537 +Block 0011 [ 95]: acd49bf29b0b0634 +Block 0011 [ 96]: 6d3f843799ff6816 +Block 0011 [ 97]: 26326dfc3bbbab3a +Block 0011 [ 98]: 9242f6493a116b59 +Block 0011 [ 99]: 67502898e5348f84 +Block 0011 [100]: 23571627a7c9d9e0 +Block 0011 [101]: 4d886d318333c3ee +Block 0011 [102]: 20ddc8838c57eccd +Block 0011 [103]: e601082750c1a449 +Block 0011 [104]: 7aa1f0317c03160a +Block 0011 [105]: 51b365b732b327db +Block 0011 [106]: e0763a1f51c3bb8f +Block 0011 [107]: ab1584266689907b +Block 0011 [108]: 389e5c3adfd8185e +Block 0011 [109]: c6442e5b62ed24d6 +Block 0011 [110]: 50af38d5cf0f09b5 +Block 0011 [111]: 1008d4f64bfc0129 +Block 0011 [112]: a364e313e91732fe +Block 0011 [113]: b226645180d50df3 +Block 0011 [114]: f163bc669cf4b70e +Block 0011 [115]: 187ce08474232ec3 +Block 0011 [116]: 59dd06d3949824d2 +Block 0011 [117]: 8bf0b3a673af1ab3 +Block 0011 [118]: c8b5d0c652513b9b +Block 0011 [119]: 76c43e6630c174ca +Block 0011 [120]: 8dc908bb6c08c8b4 +Block 0011 [121]: 0c76121879f3f9e2 +Block 0011 [122]: a9a9c39976c5da9a +Block 0011 [123]: 509e26ce42034853 +Block 0011 [124]: 9276f4686d96bab6 +Block 0011 [125]: 61bd632fddc5381c +Block 0011 [126]: af2cc8c6499fce15 +Block 0011 [127]: 55322a996015ca7e +Block 0012 [ 0]: 2de6a260b3dc7033 +Block 0012 [ 1]: b199b1c2a33061bc +Block 0012 [ 2]: 6934301e1592cc31 +Block 0012 [ 3]: 08329482bbd037a3 +Block 0012 [ 4]: 3b74c1c774a7c3ea +Block 0012 [ 5]: 29039e3efa32b00e +Block 0012 [ 6]: b71c527205dc00df +Block 0012 [ 7]: c0f4b25c94f538b0 +Block 0012 [ 8]: eca61e402daa6569 +Block 0012 [ 9]: ba4db20991e9824c +Block 0012 [ 10]: 3e869f7935d4a0d8 +Block 0012 [ 11]: 0b6273fb4e41db98 +Block 0012 [ 12]: a0f161fd742126cd +Block 0012 [ 13]: 163b553fa996c120 +Block 0012 [ 14]: 03519d81912f1029 +Block 0012 [ 15]: c8dace89c4d03838 +Block 0012 [ 16]: ea6b9219f18405a9 +Block 0012 [ 17]: 373bb78358988878 +Block 0012 [ 18]: bcd325dcfd7ceea5 +Block 0012 [ 19]: d2f1d6173a7ff965 +Block 0012 [ 20]: 947458a9bd5311e7 +Block 0012 [ 21]: 4a59302fc6fd2b1f +Block 0012 [ 22]: 78b06821a947c9b6 +Block 0012 [ 23]: 6f6089d041ec1ab6 +Block 0012 [ 24]: 52054e7c6e7d1dd3 +Block 0012 [ 25]: e08e2601656dac82 +Block 0012 [ 26]: bb4c9839ecfc7208 +Block 0012 [ 27]: 641f5afddf424d36 +Block 0012 [ 28]: 3b4433461c77cb42 +Block 0012 [ 29]: 4958d19b9f87a1d6 +Block 0012 [ 30]: dce1d42c81cf32bb +Block 0012 [ 31]: 919d8b4967b1c11d +Block 0012 [ 32]: 5483f958324ea9cc +Block 0012 [ 33]: e58572e35d604799 +Block 0012 [ 34]: 0f11afd06441b2ac +Block 0012 [ 35]: 9d32367932b3beef +Block 0012 [ 36]: be8229b34b4cce48 +Block 0012 [ 37]: 627d429986fd97a7 +Block 0012 [ 38]: f4d35eec751273f2 +Block 0012 [ 39]: 5cd90b57ccccc552 +Block 0012 [ 40]: 136897ab6168509e +Block 0012 [ 41]: 52e93c6b812b7c55 +Block 0012 [ 42]: 21b61e3e8248e02f +Block 0012 [ 43]: 80665bbe9536995b +Block 0012 [ 44]: 4ad516ad1744af03 +Block 0012 [ 45]: 58904e9d8d3bc697 +Block 0012 [ 46]: 20447941272fcfaf +Block 0012 [ 47]: 653141cbebb72f86 +Block 0012 [ 48]: de9a2934bef33099 +Block 0012 [ 49]: f05298f7aecaff8f +Block 0012 [ 50]: 6ad7aa44563c7750 +Block 0012 [ 51]: a354661a945226e9 +Block 0012 [ 52]: aade90283df08ab4 +Block 0012 [ 53]: 6ad86b10a2edb467 +Block 0012 [ 54]: 9cb6246359729643 +Block 0012 [ 55]: 5e775696928d0575 +Block 0012 [ 56]: 223c0aeeeaf88eb9 +Block 0012 [ 57]: b535c81ea45b395f +Block 0012 [ 58]: 7b3b6a488b140e18 +Block 0012 [ 59]: 78e63df0f33c4298 +Block 0012 [ 60]: 71626f7696d02487 +Block 0012 [ 61]: 33d189e34208a296 +Block 0012 [ 62]: 5b8628463bb8370e +Block 0012 [ 63]: 3d5297daeb8f37b4 +Block 0012 [ 64]: a15e54b4218955b2 +Block 0012 [ 65]: 51df554a50dd1ac5 +Block 0012 [ 66]: 469ebeeabe5cfa14 +Block 0012 [ 67]: af41090cd43b27c9 +Block 0012 [ 68]: 3dfc7c9a5249e757 +Block 0012 [ 69]: 8083dc62d2141666 +Block 0012 [ 70]: 2d0c10b32040a47e +Block 0012 [ 71]: 4f2f846df18c4408 +Block 0012 [ 72]: 645797be6008bdd9 +Block 0012 [ 73]: f884a7fb4b143954 +Block 0012 [ 74]: a98762ac97397fa2 +Block 0012 [ 75]: 36d8803c36f9d2fd +Block 0012 [ 76]: 8b29f727011addc1 +Block 0012 [ 77]: dbffb03d24c3da4f +Block 0012 [ 78]: 39daa7f462274b2f +Block 0012 [ 79]: 252aa6b07d2cc934 +Block 0012 [ 80]: 767071afdb1e350a +Block 0012 [ 81]: ed9a4efa0c0eb3f9 +Block 0012 [ 82]: 927fec2ec528d3e6 +Block 0012 [ 83]: 53a883fc6082b6b5 +Block 0012 [ 84]: 905abef6eb87256e +Block 0012 [ 85]: 78275c32b72139bf +Block 0012 [ 86]: 41bb9cfdf54b0482 +Block 0012 [ 87]: 3ebfdd007aadc9d1 +Block 0012 [ 88]: dd663de48827a68a +Block 0012 [ 89]: 0d429c3e4c10e1a5 +Block 0012 [ 90]: 8831e3e39090d478 +Block 0012 [ 91]: 872a68049b31b16d +Block 0012 [ 92]: 678981f3eba99ec9 +Block 0012 [ 93]: 948493a87aa77acc +Block 0012 [ 94]: 2cb67e3f3624efb7 +Block 0012 [ 95]: 159ba09c46348a0a +Block 0012 [ 96]: a6df6afbf948c76f +Block 0012 [ 97]: 5f3660d91d0610f0 +Block 0012 [ 98]: e10c380a75c30731 +Block 0012 [ 99]: a3380d1cb4baac6c +Block 0012 [100]: 412122860cd829d8 +Block 0012 [101]: 3d72e351561446cb +Block 0012 [102]: 0d5785e0927ba58a +Block 0012 [103]: 93c450bd6c5408f9 +Block 0012 [104]: c8355b234469e077 +Block 0012 [105]: 8c8c40d89ddec43a +Block 0012 [106]: f3691d1d60862edc +Block 0012 [107]: 9c065215f0575b2c +Block 0012 [108]: d04fa24b788a01ce +Block 0012 [109]: 64964611c2d67b52 +Block 0012 [110]: 34bdcf3613501bb2 +Block 0012 [111]: 39a15e92d0bcb765 +Block 0012 [112]: 84e3e3bd76d195a2 +Block 0012 [113]: 652826ce38d4132a +Block 0012 [114]: a7f30b86b195a2d9 +Block 0012 [115]: f5a9c54cd5550a81 +Block 0012 [116]: 86732d95071189b9 +Block 0012 [117]: dc95387282aace54 +Block 0012 [118]: d563b5079fbeb7d3 +Block 0012 [119]: 17cc96cb016981f6 +Block 0012 [120]: f944e8e5437e9952 +Block 0012 [121]: 37bafa81c06d834f +Block 0012 [122]: 22e4666dcab7f6fa +Block 0012 [123]: 233e45542ee96524 +Block 0012 [124]: 8a3f7acfe023efce +Block 0012 [125]: d477d8b3fb298a6c +Block 0012 [126]: 6d75071da1c053df +Block 0012 [127]: c093ab77397d2a75 +Block 0013 [ 0]: c934e1166fb27497 +Block 0013 [ 1]: c21b829ec1ba75ef +Block 0013 [ 2]: 1812447326ab1f03 +Block 0013 [ 3]: bc5755813b65d394 +Block 0013 [ 4]: 0c55b69fe830401e +Block 0013 [ 5]: f4c57cba458e7b69 +Block 0013 [ 6]: c62cbc15e1273ca6 +Block 0013 [ 7]: 4a15f61d64f24324 +Block 0013 [ 8]: 45a16d7ed87dac30 +Block 0013 [ 9]: 5a042bd17950b220 +Block 0013 [ 10]: 7439bea3d54b3792 +Block 0013 [ 11]: 3e1cfaf0e1b4f0f0 +Block 0013 [ 12]: 79b74477b3b8f188 +Block 0013 [ 13]: a15569fed14e9e1e +Block 0013 [ 14]: 38b701e8bfdfe751 +Block 0013 [ 15]: acdd26a445547733 +Block 0013 [ 16]: 004c8807ca75f2f9 +Block 0013 [ 17]: e7773758ddf0e773 +Block 0013 [ 18]: c17a446f90fb41cf +Block 0013 [ 19]: 2f39aa5712f469c0 +Block 0013 [ 20]: 68e1b4e5a9499402 +Block 0013 [ 21]: 957b2873c2f3338d +Block 0013 [ 22]: d4df5d49fbd9ed5a +Block 0013 [ 23]: e50d7395f7621dbf +Block 0013 [ 24]: 438023a14c97b6fd +Block 0013 [ 25]: aacac0eff810b018 +Block 0013 [ 26]: b3aea30d6fe91e2c +Block 0013 [ 27]: c584091675cc073f +Block 0013 [ 28]: ed36a29bf348e46f +Block 0013 [ 29]: acf0f6ff411f229e +Block 0013 [ 30]: 5d23587357b2ed19 +Block 0013 [ 31]: a7ec3719369e365a +Block 0013 [ 32]: f5ffc8f0c71cec6d +Block 0013 [ 33]: 2a1c6c9deb0fd24c +Block 0013 [ 34]: e1acb5bcfcb18757 +Block 0013 [ 35]: eac5c6ddb44af556 +Block 0013 [ 36]: 4dd3d82cac986cb7 +Block 0013 [ 37]: fe391a158b6ed299 +Block 0013 [ 38]: 911b2e37380edc23 +Block 0013 [ 39]: 3b0d4717aa0f1bf2 +Block 0013 [ 40]: 76db16591771fa79 +Block 0013 [ 41]: 311532f58f784756 +Block 0013 [ 42]: f53186855bac398c +Block 0013 [ 43]: 0bb05e55b79f24f3 +Block 0013 [ 44]: 5da0c076d4e66f1b +Block 0013 [ 45]: e7019aa47334131c +Block 0013 [ 46]: fa128e2a0ba6ea05 +Block 0013 [ 47]: a56fb7281e59f0d3 +Block 0013 [ 48]: 2dec34f65a6d6ceb +Block 0013 [ 49]: 846008f66a2e1bd8 +Block 0013 [ 50]: b722b27b2137e16a +Block 0013 [ 51]: 9158ec8c8966460b +Block 0013 [ 52]: 9be7de535630b177 +Block 0013 [ 53]: ac2f5e16909b6e24 +Block 0013 [ 54]: b5df85fe74b20693 +Block 0013 [ 55]: 360e07ff6b7e8bc6 +Block 0013 [ 56]: 2837a8ebf9aea4df +Block 0013 [ 57]: 755f9c69267634b5 +Block 0013 [ 58]: ea0b7c1912ae0ddb +Block 0013 [ 59]: 59a785481d7e94d2 +Block 0013 [ 60]: 02028a280cbf45a5 +Block 0013 [ 61]: 6b346c9114292b86 +Block 0013 [ 62]: 5ca8c8c68c670efa +Block 0013 [ 63]: 56b101657ac927a6 +Block 0013 [ 64]: ed2918c587aacf9b +Block 0013 [ 65]: ac661ef81f54d2df +Block 0013 [ 66]: 2bf19454b9253bf1 +Block 0013 [ 67]: b20e9398e7f84a5c +Block 0013 [ 68]: 82f05894b799e79c +Block 0013 [ 69]: ea7c2be4af767103 +Block 0013 [ 70]: b2864d47c9263edf +Block 0013 [ 71]: 822aec5441d8f031 +Block 0013 [ 72]: 1c2d2a70e5462d44 +Block 0013 [ 73]: 8b7f3a74a8194379 +Block 0013 [ 74]: 851d2805a7713935 +Block 0013 [ 75]: de57ab09d60d7670 +Block 0013 [ 76]: 150c1158ad23a5c7 +Block 0013 [ 77]: 3330b89c2ad3aa29 +Block 0013 [ 78]: 6996229e973d6fa8 +Block 0013 [ 79]: ac4a5134dd9ce25b +Block 0013 [ 80]: 170b80b260896799 +Block 0013 [ 81]: 9338012e71e3c028 +Block 0013 [ 82]: 2ffe8997c5501b2e +Block 0013 [ 83]: 3b508d7e08a587c4 +Block 0013 [ 84]: 1660331d4211cd03 +Block 0013 [ 85]: ddbddd90efbb854a +Block 0013 [ 86]: 2d19e60c554775cf +Block 0013 [ 87]: 7232777bb83c8091 +Block 0013 [ 88]: ae26f1d73ef906e2 +Block 0013 [ 89]: 0d0e0a3f9e33ecab +Block 0013 [ 90]: 3000d316d97d6ab3 +Block 0013 [ 91]: 3a0b66d12607e7de +Block 0013 [ 92]: 4b27c6b67ea6e15a +Block 0013 [ 93]: ab0dcdc3cf1999dc +Block 0013 [ 94]: 0285ba539708330e +Block 0013 [ 95]: 6427a3253ed229bf +Block 0013 [ 96]: 90594375f4cccd87 +Block 0013 [ 97]: b333fded244366f2 +Block 0013 [ 98]: a2aabc7bdfac9070 +Block 0013 [ 99]: 6be0afc5e0da2a78 +Block 0013 [100]: df9cf2b977e9fb08 +Block 0013 [101]: b13b6ab3692afa87 +Block 0013 [102]: ef38da964aef5164 +Block 0013 [103]: 7d02336c83eeb32d +Block 0013 [104]: d1dc7212202f4f3b +Block 0013 [105]: 55b795c3fb9d1d03 +Block 0013 [106]: 7bdc41fb15eea35a +Block 0013 [107]: c9c4b30e5bf50128 +Block 0013 [108]: 91699e9a73f24915 +Block 0013 [109]: 52c57d8c079bb422 +Block 0013 [110]: dab261157b8fd9d2 +Block 0013 [111]: fb51df0782c97c8c +Block 0013 [112]: ee63f89968c75234 +Block 0013 [113]: ce6aa08a457d9185 +Block 0013 [114]: 5c5b86551c42ca2e +Block 0013 [115]: 086d3b05312ef786 +Block 0013 [116]: eac057b016da257c +Block 0013 [117]: 7fae02b887d2cf96 +Block 0013 [118]: 49d9276493017238 +Block 0013 [119]: f8100fbad4b197f6 +Block 0013 [120]: d5fefd5c94672f5c +Block 0013 [121]: 57f41f71207b5bb5 +Block 0013 [122]: 3177eddf189dfefa +Block 0013 [123]: feb8bc98df27321f +Block 0013 [124]: b8aa1e5a76155617 +Block 0013 [125]: 568b228968f816d5 +Block 0013 [126]: e9d3c5ffe55a95b4 +Block 0013 [127]: 18c9f13295493060 +Block 0014 [ 0]: 751611a6dca217ef +Block 0014 [ 1]: f30d5326133f623f +Block 0014 [ 2]: 3348d361099f0d4c +Block 0014 [ 3]: 2efcfc874a138a09 +Block 0014 [ 4]: de42be1bb44d2dca +Block 0014 [ 5]: a626d8e36a9b0811 +Block 0014 [ 6]: 621d28f13cb2b6ba +Block 0014 [ 7]: 7aad6051000015fe +Block 0014 [ 8]: dd095ff42875292a +Block 0014 [ 9]: 801ee2fa2c5a64c6 +Block 0014 [ 10]: a2e0b624ee27581c +Block 0014 [ 11]: 01a1484d67c0f465 +Block 0014 [ 12]: 35bb3ad0a791c30c +Block 0014 [ 13]: 0d5eb3bd17797601 +Block 0014 [ 14]: 5bc25c1b31a89dbb +Block 0014 [ 15]: 24260bacab7442a7 +Block 0014 [ 16]: 177a9da3c6fcdea9 +Block 0014 [ 17]: d10744177252796c +Block 0014 [ 18]: 96892f2c00e816c2 +Block 0014 [ 19]: 87f1a18e861985db +Block 0014 [ 20]: 8f689942a92c0238 +Block 0014 [ 21]: dfbdc178de50e5a3 +Block 0014 [ 22]: bcd2f6bedc6cd773 +Block 0014 [ 23]: c01d8d73958f7fdf +Block 0014 [ 24]: af5e13a4d7875042 +Block 0014 [ 25]: c314e5fd4c872732 +Block 0014 [ 26]: b0efedef8a761145 +Block 0014 [ 27]: f4d46eddf74bfac0 +Block 0014 [ 28]: c85753d308fdcfb9 +Block 0014 [ 29]: 81be18ed087bc898 +Block 0014 [ 30]: b747d4c1e2d1321c +Block 0014 [ 31]: 3aebf5d50792e57f +Block 0014 [ 32]: fc1ef0d9219ec253 +Block 0014 [ 33]: e9280df09e9c11b7 +Block 0014 [ 34]: 994e37fe7614467f +Block 0014 [ 35]: 658cb28441ef2bd3 +Block 0014 [ 36]: da96518ad4a20c83 +Block 0014 [ 37]: 3b772763462c7f90 +Block 0014 [ 38]: 250390de0658fb04 +Block 0014 [ 39]: 07f7f41163308f82 +Block 0014 [ 40]: e28525fd41a4c30f +Block 0014 [ 41]: 0eabece269b5cbc6 +Block 0014 [ 42]: e14a2544deacd381 +Block 0014 [ 43]: e37ca1a406f2ee67 +Block 0014 [ 44]: 6efd3c0c1f01593a +Block 0014 [ 45]: b8bc58787428afbb +Block 0014 [ 46]: 714b0631106ebe7e +Block 0014 [ 47]: c3e96745f00db12f +Block 0014 [ 48]: ab68f71a401fbb43 +Block 0014 [ 49]: bb575726d4f2fd1a +Block 0014 [ 50]: a341648f21481b2f +Block 0014 [ 51]: bb6a9a5259ef911b +Block 0014 [ 52]: c9cea2228263bfb2 +Block 0014 [ 53]: c7f334b5bcd959de +Block 0014 [ 54]: e45a55828ebfaa40 +Block 0014 [ 55]: 6a630d357bacb358 +Block 0014 [ 56]: e36896f02c834c8d +Block 0014 [ 57]: 0aaa0006f56d9259 +Block 0014 [ 58]: 4b5c1d7ab0e03775 +Block 0014 [ 59]: 542dcdcb6922bf5e +Block 0014 [ 60]: b4cbccf8d655d557 +Block 0014 [ 61]: 22e9550073a55847 +Block 0014 [ 62]: 4d81e363a0bc3d7d +Block 0014 [ 63]: 88888fd834353993 +Block 0014 [ 64]: 3d24cdc7e52b1201 +Block 0014 [ 65]: 3d8b52965b0135a7 +Block 0014 [ 66]: cc9d378ef8def398 +Block 0014 [ 67]: bfa7c266b6442afa +Block 0014 [ 68]: 111e8c3e0da7dd1c +Block 0014 [ 69]: c5912da214c3b084 +Block 0014 [ 70]: 20e58f7585611c9a +Block 0014 [ 71]: 9f15f86d137b6a6a +Block 0014 [ 72]: 6f7a6213f30baf69 +Block 0014 [ 73]: 37fcf232b3e00ca5 +Block 0014 [ 74]: 05931457c9dac739 +Block 0014 [ 75]: 571448470ca168e9 +Block 0014 [ 76]: c27d607587d72d6c +Block 0014 [ 77]: 40d94f8aa07fd0f5 +Block 0014 [ 78]: 485dae40764e0136 +Block 0014 [ 79]: bddd055e69aa3228 +Block 0014 [ 80]: 80847e77d994fbcf +Block 0014 [ 81]: 2205602d7c7880a6 +Block 0014 [ 82]: 01b57845dc15aac7 +Block 0014 [ 83]: 0bcad09546e5910c +Block 0014 [ 84]: 822ed733aad0d4be +Block 0014 [ 85]: 36eff814bdbcce2a +Block 0014 [ 86]: d34eb84e1859a50a +Block 0014 [ 87]: 492482efab353be1 +Block 0014 [ 88]: c873ea2b88095564 +Block 0014 [ 89]: ea34805735c0e69b +Block 0014 [ 90]: 282dbc532a16f0b2 +Block 0014 [ 91]: 9d73a4d2b509f4ed +Block 0014 [ 92]: cbffe1430b613d50 +Block 0014 [ 93]: 5e76863adb84a188 +Block 0014 [ 94]: d54b2945b9d2bfd8 +Block 0014 [ 95]: eefee9aa2903e333 +Block 0014 [ 96]: 848e77aa097cad40 +Block 0014 [ 97]: fb9d26b96a14e021 +Block 0014 [ 98]: 1f2786497b51402f +Block 0014 [ 99]: 935d85b4dec778fa +Block 0014 [100]: 9f4c19a556583adc +Block 0014 [101]: 51b5266e1d568092 +Block 0014 [102]: e8857d4a180ea62c +Block 0014 [103]: 4dba7f4d5841f89c +Block 0014 [104]: 7fda01ec3ebe7925 +Block 0014 [105]: 4f81b02917212b96 +Block 0014 [106]: 0ef65535cb286212 +Block 0014 [107]: b2f2b7d55afd99cd +Block 0014 [108]: 0925aedc2dbed1e9 +Block 0014 [109]: 5e1427758f2d88d6 +Block 0014 [110]: 0a6dd2a5c2cd029f +Block 0014 [111]: 7de7196e1f00f1db +Block 0014 [112]: fa98e1bbc7c10663 +Block 0014 [113]: f289964e052b1262 +Block 0014 [114]: 1e283e3fd3c0d4fa +Block 0014 [115]: 7c9aa9705eb22b96 +Block 0014 [116]: f3bb07922a5d2279 +Block 0014 [117]: 34a8fcefce841ade +Block 0014 [118]: 0709034e1c06baa2 +Block 0014 [119]: 598a4c2c1c07c589 +Block 0014 [120]: 26d5573b1775fb83 +Block 0014 [121]: 9cc4fd42c8865d4f +Block 0014 [122]: cfcbe0a59328c84a +Block 0014 [123]: 6bb349e66195498b +Block 0014 [124]: 4be2f84e7f1a4bb7 +Block 0014 [125]: 625a08a3e55cc7ba +Block 0014 [126]: 703ca94204f1eb2e +Block 0014 [127]: ba100657462ad47b +Block 0015 [ 0]: 90f9cf97fdfb1212 +Block 0015 [ 1]: 4ebfd0eb7bde74fe +Block 0015 [ 2]: 5d4892b667d8fb9a +Block 0015 [ 3]: eee897de87730152 +Block 0015 [ 4]: bd8707434bfeaa0a +Block 0015 [ 5]: fd8aee451c60cd9d +Block 0015 [ 6]: c58c0e0ffcaaea7b +Block 0015 [ 7]: 03e0436c90051504 +Block 0015 [ 8]: 7ed836946cee6ad8 +Block 0015 [ 9]: 8b156f73ee007bdf +Block 0015 [ 10]: d541428ece1acb9e +Block 0015 [ 11]: c7a395429389dc5a +Block 0015 [ 12]: 010f3d509e0d6821 +Block 0015 [ 13]: 5fb4c498d4416f4c +Block 0015 [ 14]: 319941fd256f4759 +Block 0015 [ 15]: de2ecefec27cbf7a +Block 0015 [ 16]: ab5295b324401b40 +Block 0015 [ 17]: a41144e0c61bb357 +Block 0015 [ 18]: bf8edc2253a1dda5 +Block 0015 [ 19]: b6b3236c2bf5e09c +Block 0015 [ 20]: a41a3ebdf0eb9f03 +Block 0015 [ 21]: f037384bd85667d9 +Block 0015 [ 22]: cd3b6163484a9319 +Block 0015 [ 23]: de534447766d1f29 +Block 0015 [ 24]: 8c8cdb1d34d34914 +Block 0015 [ 25]: 11541705e8bcb3b2 +Block 0015 [ 26]: 801b40db1cd0a376 +Block 0015 [ 27]: 15ce882abff4aeb6 +Block 0015 [ 28]: 0b4eccb36e5447ce +Block 0015 [ 29]: 9305728451875b90 +Block 0015 [ 30]: d2640809e3215ee4 +Block 0015 [ 31]: cbd0dfb61bc5f357 +Block 0015 [ 32]: 1423c16dd0dec029 +Block 0015 [ 33]: d6dbef65de65761e +Block 0015 [ 34]: eb9546f8f440b03d +Block 0015 [ 35]: 25626b0b8c94132f +Block 0015 [ 36]: b6399c16cfbebc22 +Block 0015 [ 37]: c41694770a8a9b9f +Block 0015 [ 38]: 15ac9e81f8349080 +Block 0015 [ 39]: 52825e57cba50916 +Block 0015 [ 40]: 51d2c9935e17d98c +Block 0015 [ 41]: 5607b931b9cbc2f6 +Block 0015 [ 42]: c15e398a71664716 +Block 0015 [ 43]: 6196cb09666b8aa6 +Block 0015 [ 44]: d1f004bf865d712f +Block 0015 [ 45]: 71c4ab4eb1a8c76c +Block 0015 [ 46]: a6de3842bbbd1029 +Block 0015 [ 47]: b9ec26bd0cdfafac +Block 0015 [ 48]: 9b830f151684793e +Block 0015 [ 49]: a89763e63465931b +Block 0015 [ 50]: 9a85d13f5e810f61 +Block 0015 [ 51]: d310f5b7712d28da +Block 0015 [ 52]: 5b28e526e9fa2a09 +Block 0015 [ 53]: 966f7b02ae839c94 +Block 0015 [ 54]: 86a2d4c5e71e7ac8 +Block 0015 [ 55]: e96910b6d32b0b84 +Block 0015 [ 56]: 241237960baaadb8 +Block 0015 [ 57]: 93ee135d761f7ef1 +Block 0015 [ 58]: 458563f18c30d6ca +Block 0015 [ 59]: 20339a86a422f5dc +Block 0015 [ 60]: 8be24a5a13609cd0 +Block 0015 [ 61]: f2341abd8d040b8f +Block 0015 [ 62]: 9944dd3970485508 +Block 0015 [ 63]: b73d28e85eecf928 +Block 0015 [ 64]: b7bd00ecf6510e61 +Block 0015 [ 65]: e6eaaa07d887015b +Block 0015 [ 66]: e2201e7b73b2b762 +Block 0015 [ 67]: d22248c2d87a1e38 +Block 0015 [ 68]: c8e6b242348e7e4d +Block 0015 [ 69]: df21a46b6b9178b5 +Block 0015 [ 70]: f449e89387dd2d54 +Block 0015 [ 71]: f9588b623b526b80 +Block 0015 [ 72]: 70e38fa377d75afe +Block 0015 [ 73]: cbf379cb401301bd +Block 0015 [ 74]: 34a2ba0457b360b5 +Block 0015 [ 75]: 3fcd0772e15aa753 +Block 0015 [ 76]: e6a1ee7587f2b0cf +Block 0015 [ 77]: b2a399f2bb958f0c +Block 0015 [ 78]: cd702bc394a274d9 +Block 0015 [ 79]: 2cf2c4f609352e79 +Block 0015 [ 80]: 6f8742ba962af80a +Block 0015 [ 81]: 187d7781f5b58bcb +Block 0015 [ 82]: ea995eaf547b26f1 +Block 0015 [ 83]: 70ff6a3ec66b4560 +Block 0015 [ 84]: 335412fe69fff286 +Block 0015 [ 85]: d7d982d6bdc0eaf9 +Block 0015 [ 86]: 6a91a369ebe4c227 +Block 0015 [ 87]: bd7d3af9c4695372 +Block 0015 [ 88]: 517d76991499e3dd +Block 0015 [ 89]: 1b5a124e4c09386e +Block 0015 [ 90]: 9dc15484e994c472 +Block 0015 [ 91]: c30a4bf622feae78 +Block 0015 [ 92]: c15f1cf31d1d2e79 +Block 0015 [ 93]: fd4afd7d9800e3ca +Block 0015 [ 94]: 9abdcbeea24b166a +Block 0015 [ 95]: fad22e44fd945a51 +Block 0015 [ 96]: 187dbda78f640e08 +Block 0015 [ 97]: 6f2ad2ff1fddc51b +Block 0015 [ 98]: 5c9e3d2a789d01f4 +Block 0015 [ 99]: e17643ada188ca5d +Block 0015 [100]: daf7d892618a7687 +Block 0015 [101]: ac5aa9b82e8d53d9 +Block 0015 [102]: ae8c60a4c1bc63bb +Block 0015 [103]: b35f4d4e3ced26a2 +Block 0015 [104]: 55abe3d57678671a +Block 0015 [105]: eb15e0d818d1fd62 +Block 0015 [106]: b23a0d03863ed118 +Block 0015 [107]: cbc0e428e6d752fb +Block 0015 [108]: f1931d6c45be4320 +Block 0015 [109]: 2c8bd9097f39e50d +Block 0015 [110]: cc33e6016cc08ee6 +Block 0015 [111]: 2280ad7ea4fe9832 +Block 0015 [112]: 2a922a76400a5cbe +Block 0015 [113]: 2d1a097b36b2a380 +Block 0015 [114]: 25a31a1a2b373c9b +Block 0015 [115]: 77a19abf854f116a +Block 0015 [116]: fe66884f193b74d7 +Block 0015 [117]: 9dab1bf53a7a50b9 +Block 0015 [118]: fdd36d0f46d6abd6 +Block 0015 [119]: c32638540d68fb28 +Block 0015 [120]: 32788f09d80f0f11 +Block 0015 [121]: baf18788397a3a20 +Block 0015 [122]: 4729a150debebe00 +Block 0015 [123]: 98db2abeca755d0c +Block 0015 [124]: 9fa7f4acdbfc2075 +Block 0015 [125]: c79cc37a40fed18f +Block 0015 [126]: 0b1374123d496b56 +Block 0015 [127]: 723bd40bcc338eb9 +Block 0016 [ 0]: dba1631496e37081 +Block 0016 [ 1]: 7bcab81931f7fb3a +Block 0016 [ 2]: ec1b708517efc104 +Block 0016 [ 3]: 1d9620eab17a8af2 +Block 0016 [ 4]: 348e88a95a5b4836 +Block 0016 [ 5]: 08fd70a3903354b2 +Block 0016 [ 6]: 78878a368235854d +Block 0016 [ 7]: 94015822062f61f3 +Block 0016 [ 8]: e6261162790fc67a +Block 0016 [ 9]: d1bd71216db48ea3 +Block 0016 [ 10]: fa0163a85027dfef +Block 0016 [ 11]: 70d35155d8c744db +Block 0016 [ 12]: de5713bffb82c049 +Block 0016 [ 13]: 6a2f55255edc50b2 +Block 0016 [ 14]: 2de24cdba809978f +Block 0016 [ 15]: a9037f5f21ffcb62 +Block 0016 [ 16]: 61a14e0e21dfbbb3 +Block 0016 [ 17]: ff04c2acd3c56a2a +Block 0016 [ 18]: 0c34a70f918e0b8d +Block 0016 [ 19]: b41db4fe7e90d0c4 +Block 0016 [ 20]: 50fd52d4ac3dcef1 +Block 0016 [ 21]: 49f6930c4f261bbd +Block 0016 [ 22]: cebb8fc10d6916bd +Block 0016 [ 23]: d2a870eb3a73d5e8 +Block 0016 [ 24]: 026b068c396ee281 +Block 0016 [ 25]: 37e31bcb07d3d06d +Block 0016 [ 26]: 51e18129c808df2c +Block 0016 [ 27]: e38bd894c7346a95 +Block 0016 [ 28]: 4666a2e0a015d89b +Block 0016 [ 29]: 53080e6a73bd7b2b +Block 0016 [ 30]: ab69db3d9699ea9c +Block 0016 [ 31]: 0a5fff8051cd1caf +Block 0016 [ 32]: c16f87f1ff14ee00 +Block 0016 [ 33]: 4f8261979edac3f2 +Block 0016 [ 34]: 1a015a10b756c6ec +Block 0016 [ 35]: 66cdc7820398cc5c +Block 0016 [ 36]: 45706053e2b18e31 +Block 0016 [ 37]: 500d1855f2009c73 +Block 0016 [ 38]: eaab57647a45b537 +Block 0016 [ 39]: 92b7eedc890cec89 +Block 0016 [ 40]: 04f79aefec3bc0e9 +Block 0016 [ 41]: 144ac54f82047d86 +Block 0016 [ 42]: 2ae5c5f9e60f6674 +Block 0016 [ 43]: 29fb00da354c45ba +Block 0016 [ 44]: 6b9e88cc40d8650b +Block 0016 [ 45]: 843b907fe783927f +Block 0016 [ 46]: 09640d95f0038a53 +Block 0016 [ 47]: 556f347c654c5ab3 +Block 0016 [ 48]: 60531233a823cde3 +Block 0016 [ 49]: 97c638e1c4927b03 +Block 0016 [ 50]: 29d80aa6e06b0456 +Block 0016 [ 51]: 5d00fd9a7ca97121 +Block 0016 [ 52]: 765ffe668dfdc2c1 +Block 0016 [ 53]: 5a2331032829fd09 +Block 0016 [ 54]: 4373276735c93c1b +Block 0016 [ 55]: 23410a050fe40fc7 +Block 0016 [ 56]: c0396855da2eee42 +Block 0016 [ 57]: b69958feeb38026e +Block 0016 [ 58]: 02c4f30af9932784 +Block 0016 [ 59]: 89d2d63d9ff65483 +Block 0016 [ 60]: 69583bd38d980b3e +Block 0016 [ 61]: 1036e040b045969e +Block 0016 [ 62]: a87365c2d51d93b8 +Block 0016 [ 63]: 8047300e3464fbea +Block 0016 [ 64]: 7ba7e44ac1b4e18e +Block 0016 [ 65]: c9a5f9247ffa1caa +Block 0016 [ 66]: 2672f42a31dd76c9 +Block 0016 [ 67]: 600c1ca9792f48de +Block 0016 [ 68]: edc0454eb60f5efb +Block 0016 [ 69]: 24ca25768dac07e2 +Block 0016 [ 70]: 5a897a1a626401d2 +Block 0016 [ 71]: b873371b5c32a10d +Block 0016 [ 72]: a79f82e2fe9a33a9 +Block 0016 [ 73]: e17fbb6e884277b9 +Block 0016 [ 74]: 705da8d6af3afd19 +Block 0016 [ 75]: 351cc4f25d20e442 +Block 0016 [ 76]: efdc3cef63ed0468 +Block 0016 [ 77]: 109e45a160396cc3 +Block 0016 [ 78]: f61273c4f78110cb +Block 0016 [ 79]: a149ae2114ef95c9 +Block 0016 [ 80]: 9686ae2ab6e96c4b +Block 0016 [ 81]: 82e34d717130811f +Block 0016 [ 82]: 96b6238ab9e97331 +Block 0016 [ 83]: 10af26c305b949af +Block 0016 [ 84]: 73bc99c3c9614621 +Block 0016 [ 85]: 5c4c3ee6f3a0eda2 +Block 0016 [ 86]: 9b78611d8965dcc9 +Block 0016 [ 87]: 5704f8fa7d51b4ef +Block 0016 [ 88]: e1038992b0be6efd +Block 0016 [ 89]: 45d148b6187fe37f +Block 0016 [ 90]: 55bcd22852ed2762 +Block 0016 [ 91]: 0f64f49ccfa80f38 +Block 0016 [ 92]: b5fad479b4ff5934 +Block 0016 [ 93]: d7997477fbb706e0 +Block 0016 [ 94]: 8a959e6e9a047bfb +Block 0016 [ 95]: 34071c4c6c491070 +Block 0016 [ 96]: 287346060fa77813 +Block 0016 [ 97]: f1b6634dccf64cb8 +Block 0016 [ 98]: 790b18cf5d8f57b2 +Block 0016 [ 99]: 9d83ef55adbb4729 +Block 0016 [100]: d35f419bf33dc17e +Block 0016 [101]: 1e38549f1fd07181 +Block 0016 [102]: 5ab80e4b365c6a77 +Block 0016 [103]: 261245bb1406f154 +Block 0016 [104]: 8ebd555d5865a16a +Block 0016 [105]: fd4a78d20da3993b +Block 0016 [106]: 6cb78c2f1ca8d5cf +Block 0016 [107]: 49ce107e280365c8 +Block 0016 [108]: 55d5f2fabbdc5d25 +Block 0016 [109]: 5521ebac47859c8a +Block 0016 [110]: 042dd30ace63fef2 +Block 0016 [111]: e1ea2fea6c4e51e7 +Block 0016 [112]: c75573901eac10df +Block 0016 [113]: 3d3dcba0172f75b2 +Block 0016 [114]: 4869c7007eee34ce +Block 0016 [115]: 0597dfbf53b667bf +Block 0016 [116]: f9d4c4ef00f016cd +Block 0016 [117]: aabebc3cb036df01 +Block 0016 [118]: 27cbced80caa86fc +Block 0016 [119]: 7de1ba464cfdb5d4 +Block 0016 [120]: 14319a2c4420864d +Block 0016 [121]: 1fccc5e717075731 +Block 0016 [122]: af0125d5e39888e3 +Block 0016 [123]: ad39af88f22b67e3 +Block 0016 [124]: af50dd714b281182 +Block 0016 [125]: 718dd9ffe15c66a1 +Block 0016 [126]: 0acc2655ba4339a7 +Block 0016 [127]: be96794bc4a79dd0 +Block 0017 [ 0]: 7b5ba70f2c9ad40f +Block 0017 [ 1]: 36f0a9a53c4b55e5 +Block 0017 [ 2]: 5425515f3660e150 +Block 0017 [ 3]: fc8697830553a6b6 +Block 0017 [ 4]: 1edbcbccfc4e85a7 +Block 0017 [ 5]: fa7c7ec35e1768ec +Block 0017 [ 6]: ceff78f0f46f476a +Block 0017 [ 7]: f1e93938c38dd1e2 +Block 0017 [ 8]: 6047d8bd58ba9bca +Block 0017 [ 9]: 38cd284c1a5f1b37 +Block 0017 [ 10]: b8c0090901487ce8 +Block 0017 [ 11]: 9fa9f59f78f8ba47 +Block 0017 [ 12]: d76da75fc59dcac1 +Block 0017 [ 13]: 909bf97bdb3c3695 +Block 0017 [ 14]: fa5d1ebdfd13ec94 +Block 0017 [ 15]: 30d28c34a972f817 +Block 0017 [ 16]: 030bb56aea8cd4cb +Block 0017 [ 17]: ed751bf31759ec31 +Block 0017 [ 18]: c2bd766b1bc8addd +Block 0017 [ 19]: 4208e42284623d16 +Block 0017 [ 20]: 065b57cd2ddd5c5b +Block 0017 [ 21]: c61d4d148a518c1f +Block 0017 [ 22]: 192d41daeddc3371 +Block 0017 [ 23]: d107ec22d1460874 +Block 0017 [ 24]: 2325ca6bf51b9ec2 +Block 0017 [ 25]: bd758560a6ca5726 +Block 0017 [ 26]: 96d3f1c698632e5f +Block 0017 [ 27]: 1c97ae8f8065d4a1 +Block 0017 [ 28]: 78640186f05f5d2c +Block 0017 [ 29]: cf6d82819e18ed27 +Block 0017 [ 30]: 4d6ebb2f1b700728 +Block 0017 [ 31]: 97d8ddd7084eb125 +Block 0017 [ 32]: 09558992c97b4c0f +Block 0017 [ 33]: c0a6ad16e3c9be87 +Block 0017 [ 34]: 9b6a4e984e24c9fd +Block 0017 [ 35]: 5958f55b2a13037a +Block 0017 [ 36]: 2e147024c0cd4121 +Block 0017 [ 37]: ea367dabd7ab4246 +Block 0017 [ 38]: ea8ba7cbf2389d9d +Block 0017 [ 39]: 8738b7e8961c9462 +Block 0017 [ 40]: 37bc3c32461a8ba3 +Block 0017 [ 41]: 1a988f291046040f +Block 0017 [ 42]: ef0f85ad9a8b1836 +Block 0017 [ 43]: c78659d686fe952c +Block 0017 [ 44]: 6ee163f93d3b653a +Block 0017 [ 45]: 26152cf977f49a65 +Block 0017 [ 46]: d301680c980a2c51 +Block 0017 [ 47]: 70df093ef8894d17 +Block 0017 [ 48]: c96e160883c1827e +Block 0017 [ 49]: 989f8143b240ad5c +Block 0017 [ 50]: e16c1e6c01410167 +Block 0017 [ 51]: ee2f28e8df14830c +Block 0017 [ 52]: 7bacbee1e27659ad +Block 0017 [ 53]: fdeccb4e07c45761 +Block 0017 [ 54]: db3d31660a842a47 +Block 0017 [ 55]: 3ff4286194042d07 +Block 0017 [ 56]: 2a98eb4b903d0cc1 +Block 0017 [ 57]: e646d6112546a058 +Block 0017 [ 58]: 27f241d5db630dff +Block 0017 [ 59]: 5628d1ebd53f023a +Block 0017 [ 60]: ba56ca849da491cb +Block 0017 [ 61]: 9ecda254008b4e50 +Block 0017 [ 62]: f05f1f3722817ed2 +Block 0017 [ 63]: c3fa24f242c29b90 +Block 0017 [ 64]: 1eab33b1d0e2465b +Block 0017 [ 65]: b869cfee39139c0a +Block 0017 [ 66]: b2fd4681352495b5 +Block 0017 [ 67]: b4fa867b48fbccf1 +Block 0017 [ 68]: d1ff00418d9e5d6f +Block 0017 [ 69]: 98fb0e309c62edff +Block 0017 [ 70]: 9e5c8611322c3e74 +Block 0017 [ 71]: 5182de709dc58259 +Block 0017 [ 72]: 20931b51dcc31663 +Block 0017 [ 73]: bc90b255d0624f0b +Block 0017 [ 74]: 85322ecab55c9fb0 +Block 0017 [ 75]: 61d5ad563831d979 +Block 0017 [ 76]: b8d8aa275bbe6b4a +Block 0017 [ 77]: 4482a96f016b95ba +Block 0017 [ 78]: a5bfe0adace1726f +Block 0017 [ 79]: 3adab49f26f7bee9 +Block 0017 [ 80]: 140f7a360bfab47e +Block 0017 [ 81]: 5f31d06e631f52ac +Block 0017 [ 82]: 5915cbba03a5a890 +Block 0017 [ 83]: 04da8af5b2a4f869 +Block 0017 [ 84]: dc57e07f79a3c990 +Block 0017 [ 85]: 7a0497ae45c6982d +Block 0017 [ 86]: d14d30fea11a17e9 +Block 0017 [ 87]: 9de84c6eff9fa195 +Block 0017 [ 88]: 6b429b095cc24ef9 +Block 0017 [ 89]: a7c7f6ff316e378f +Block 0017 [ 90]: 2a3b2ac5d7607632 +Block 0017 [ 91]: ec137e7f80dd20fb +Block 0017 [ 92]: 22a8bd325c264ae2 +Block 0017 [ 93]: 7007457346e49179 +Block 0017 [ 94]: 2f217594c468138d +Block 0017 [ 95]: 578c7d6bb4817011 +Block 0017 [ 96]: 3a5d32b954ff5f25 +Block 0017 [ 97]: b5791614aa7bb694 +Block 0017 [ 98]: c827579c0a97168b +Block 0017 [ 99]: 5ca0639fd40b32d3 +Block 0017 [100]: 60d021d8b6af09de +Block 0017 [101]: 1a400c7e0c9c38c1 +Block 0017 [102]: 7baf9e6d7c46bcda +Block 0017 [103]: 2c55bc07321f9a05 +Block 0017 [104]: b89e768d47a785c1 +Block 0017 [105]: 39534ecb8b83e175 +Block 0017 [106]: 64ee6ce08a1052fc +Block 0017 [107]: bd3d62e2c912f0b5 +Block 0017 [108]: 59b4cf828ea54ee4 +Block 0017 [109]: a3b111d1605c01be +Block 0017 [110]: da7d23de96a490de +Block 0017 [111]: 7c75d813c58cb4f7 +Block 0017 [112]: 008950719cd0b4e5 +Block 0017 [113]: 179d3d56a1051f16 +Block 0017 [114]: 442b82c14e3edb7b +Block 0017 [115]: f6edb20604028f65 +Block 0017 [116]: ebe72e71d4c15cef +Block 0017 [117]: 550bfb8d9f4aae3c +Block 0017 [118]: 3f005851e118c76e +Block 0017 [119]: b778f46af664d0d0 +Block 0017 [120]: 314df035073b5033 +Block 0017 [121]: efc6f26a182fcb60 +Block 0017 [122]: ecbd01d4a2aad969 +Block 0017 [123]: 82d5571cce229a3f +Block 0017 [124]: d9045c594f34c332 +Block 0017 [125]: 6edb8400b36a321c +Block 0017 [126]: e603318505c4b41e +Block 0017 [127]: 53080a8ac05f8ee6 +Block 0018 [ 0]: 1c6575f9a10acd80 +Block 0018 [ 1]: 2a9e757fc1985b42 +Block 0018 [ 2]: 2a070582f4d7fd52 +Block 0018 [ 3]: ea86a49f36d096d4 +Block 0018 [ 4]: 9d8c34c6e3d60f08 +Block 0018 [ 5]: 1622e0f45989720a +Block 0018 [ 6]: f5a13aa7c469240c +Block 0018 [ 7]: dd068ad7fa4ddd64 +Block 0018 [ 8]: ce149b2e7c66a869 +Block 0018 [ 9]: e6856096802179be +Block 0018 [ 10]: 78ada9ed8703ae27 +Block 0018 [ 11]: 72020afe3448bfec +Block 0018 [ 12]: 3fddc3d8928c3b97 +Block 0018 [ 13]: a21b1a8a520e04d9 +Block 0018 [ 14]: 06690fadc6cd9f06 +Block 0018 [ 15]: cafb12d4baea0b81 +Block 0018 [ 16]: 86bbed9914ae8cf2 +Block 0018 [ 17]: bedc4febe4696bf8 +Block 0018 [ 18]: 9cf81017baec53a7 +Block 0018 [ 19]: 2d9dfeb07cb61303 +Block 0018 [ 20]: 8437a139617fd876 +Block 0018 [ 21]: 343fd4208419d50c +Block 0018 [ 22]: 0996be65d9fbcd0a +Block 0018 [ 23]: 3d0f66e79c7e8344 +Block 0018 [ 24]: f03c3694659bcf13 +Block 0018 [ 25]: 546982fe89617636 +Block 0018 [ 26]: c7dfd03bd4a2ac6a +Block 0018 [ 27]: 388400aeea1a4bdb +Block 0018 [ 28]: 41645c6cf37246b2 +Block 0018 [ 29]: 6c110f7bc4ac7599 +Block 0018 [ 30]: 159bf2f2d0528b8d +Block 0018 [ 31]: 7c0f6070254b07ec +Block 0018 [ 32]: 27b8114d303790c7 +Block 0018 [ 33]: 6e2eda0717b86cf0 +Block 0018 [ 34]: 59ded021767f3c97 +Block 0018 [ 35]: afc68e65f85bd36b +Block 0018 [ 36]: b86592e214789675 +Block 0018 [ 37]: 34e2c8570370feea +Block 0018 [ 38]: 58e92d613717584e +Block 0018 [ 39]: a37a32a2270a702c +Block 0018 [ 40]: ea60b7b999c47428 +Block 0018 [ 41]: 5ef5855061b18b9f +Block 0018 [ 42]: 3fa31397437f9ba5 +Block 0018 [ 43]: b6689ef5bf20ab34 +Block 0018 [ 44]: 132c885cc262e48f +Block 0018 [ 45]: ce57e7ce64ca9bb3 +Block 0018 [ 46]: 36b2e6285f8c6965 +Block 0018 [ 47]: bf007ccb66d99b55 +Block 0018 [ 48]: 3e28b50440f345d5 +Block 0018 [ 49]: e994a6e41a10f083 +Block 0018 [ 50]: b54b5d9057a568e5 +Block 0018 [ 51]: fb3d507834f0abeb +Block 0018 [ 52]: 72dbb34a878af028 +Block 0018 [ 53]: 1aee63ddfe080bfb +Block 0018 [ 54]: 0025dee0fed4e37e +Block 0018 [ 55]: 56292c8afd174199 +Block 0018 [ 56]: f0aa15dc972c2853 +Block 0018 [ 57]: 9024522f6bef47a1 +Block 0018 [ 58]: ee29d18b8eab9af9 +Block 0018 [ 59]: 23d3accf2bda84db +Block 0018 [ 60]: 074b4b5728ebb32d +Block 0018 [ 61]: aceacbf4a6a899cd +Block 0018 [ 62]: 6f354c27f02bf5d6 +Block 0018 [ 63]: 7ec9c7d50f228293 +Block 0018 [ 64]: 0d0a219e06a20d6c +Block 0018 [ 65]: 33ab995959bae7f0 +Block 0018 [ 66]: f59c2eb8d2386105 +Block 0018 [ 67]: df2f3cf73585bfc4 +Block 0018 [ 68]: a9fac0135ad5aed0 +Block 0018 [ 69]: 49556d419f8433b9 +Block 0018 [ 70]: dd3afeed8d935892 +Block 0018 [ 71]: b24e7e4f9fdeb0d7 +Block 0018 [ 72]: 0e8ddb6b5c6c053e +Block 0018 [ 73]: 9fb0b4b7040dff6f +Block 0018 [ 74]: 335c0af90c7326b1 +Block 0018 [ 75]: 2b3a8b28e360a720 +Block 0018 [ 76]: a38f7a1fcd4c6f18 +Block 0018 [ 77]: 2fc14a2922ba9086 +Block 0018 [ 78]: 06d2331d98825423 +Block 0018 [ 79]: 421f972c3f7780b0 +Block 0018 [ 80]: 202301ef938e0bad +Block 0018 [ 81]: 7a8c48b25afe353c +Block 0018 [ 82]: e791bbead44e88c3 +Block 0018 [ 83]: d3867de18af9ac71 +Block 0018 [ 84]: 52482b3fc98d7974 +Block 0018 [ 85]: fae31ef53fab928d +Block 0018 [ 86]: 4484e8d59a1d41e8 +Block 0018 [ 87]: 1a5864cb33974ce1 +Block 0018 [ 88]: 62ac9ca77f59a539 +Block 0018 [ 89]: 4d440ce8e80b0a44 +Block 0018 [ 90]: 3dd25a1e99e082f0 +Block 0018 [ 91]: 45b5b3fccd11c949 +Block 0018 [ 92]: 1b3a66418cd781e2 +Block 0018 [ 93]: 48a8ce412844a394 +Block 0018 [ 94]: de71390ba827ddbd +Block 0018 [ 95]: 85976922171b9790 +Block 0018 [ 96]: d8423a1ec6d5bab1 +Block 0018 [ 97]: 592b5d193a3b3609 +Block 0018 [ 98]: 7bd2b8149cb2495b +Block 0018 [ 99]: 02cbe78ebbd8270b +Block 0018 [100]: 1f626cc675e0140d +Block 0018 [101]: 423dac87eb9493d4 +Block 0018 [102]: eee2243fe0d74697 +Block 0018 [103]: 5a7074a3bdd5cfe4 +Block 0018 [104]: 957f4b71a6c0cd03 +Block 0018 [105]: ecbd98ef8d09798e +Block 0018 [106]: 8c46a8ed1afb3ed2 +Block 0018 [107]: 1cbf535b8e9a90cb +Block 0018 [108]: 52081ad1254109e7 +Block 0018 [109]: a7be109d2e24fc45 +Block 0018 [110]: 43c3d4693421c9c9 +Block 0018 [111]: 320187d82c7622aa +Block 0018 [112]: 3005f4a02db5cd47 +Block 0018 [113]: c9b593e108491b8d +Block 0018 [114]: 07b285d679681f35 +Block 0018 [115]: ff6ad0d67969793a +Block 0018 [116]: 371a921169811926 +Block 0018 [117]: 09f67f449b49116e +Block 0018 [118]: ec51b4a5f1646649 +Block 0018 [119]: f67366ba7a177373 +Block 0018 [120]: 74c538aa4fb2f123 +Block 0018 [121]: 8e454baf2b483190 +Block 0018 [122]: 68944332288eeeb7 +Block 0018 [123]: c1f577313d81ab15 +Block 0018 [124]: 6fdfb2cd1475387d +Block 0018 [125]: 2f5f80b2fe940caa +Block 0018 [126]: 6ff1d7b0f222212c +Block 0018 [127]: 92d7874653b70612 +Block 0019 [ 0]: 93acbaeacded228f +Block 0019 [ 1]: 04ffad08d7cf945e +Block 0019 [ 2]: 7da44d978886ff7e +Block 0019 [ 3]: ee06010d47c0e8a2 +Block 0019 [ 4]: 94286d1d3fabcd7f +Block 0019 [ 5]: ae490c824c9c668f +Block 0019 [ 6]: 5ae115d1ec752d80 +Block 0019 [ 7]: d2c876dd1b3610de +Block 0019 [ 8]: 88f2df0f35c1e7ee +Block 0019 [ 9]: b74d0ca61e7db938 +Block 0019 [ 10]: b1732a6f4fb48910 +Block 0019 [ 11]: d40c0f502021679f +Block 0019 [ 12]: ea19fc7983c1da39 +Block 0019 [ 13]: d2ee700063bbdc38 +Block 0019 [ 14]: f3df222db778b740 +Block 0019 [ 15]: 73f659a6f658f7cf +Block 0019 [ 16]: 325d3be05f9277c0 +Block 0019 [ 17]: 401dc2508f41181e +Block 0019 [ 18]: c4777c5dcfec3e9a +Block 0019 [ 19]: 850819df3005f9df +Block 0019 [ 20]: 98887f8b695a363d +Block 0019 [ 21]: 340a02bc90f72b07 +Block 0019 [ 22]: 8ee3a0a9f0109fa9 +Block 0019 [ 23]: 8627997126ab3ef9 +Block 0019 [ 24]: 42c3cb91c821ae6c +Block 0019 [ 25]: 52a80de8fe0d7818 +Block 0019 [ 26]: bf67209e92990da1 +Block 0019 [ 27]: 583f282cfa720749 +Block 0019 [ 28]: 803a59ff851a9629 +Block 0019 [ 29]: 19b5137c3e2855c1 +Block 0019 [ 30]: 7b3ee14ce1847f65 +Block 0019 [ 31]: f39c3c8919a04b8e +Block 0019 [ 32]: df6e94c2319f2fac +Block 0019 [ 33]: be81ad71d3da8b6e +Block 0019 [ 34]: 96b5d3134e72bbd7 +Block 0019 [ 35]: 01be7314fbab115b +Block 0019 [ 36]: 9b6573be1f901eaf +Block 0019 [ 37]: 0af9f25fc41f65f1 +Block 0019 [ 38]: ecf061cbec0301da +Block 0019 [ 39]: e1f6de6ecc2c51d9 +Block 0019 [ 40]: a21201bed7bc2ece +Block 0019 [ 41]: c1de087e0461f89b +Block 0019 [ 42]: 640531594f92810a +Block 0019 [ 43]: 2f7c47537c46dd26 +Block 0019 [ 44]: b9e806297c8e285d +Block 0019 [ 45]: 23fc05e71c7ca87f +Block 0019 [ 46]: 6947a7418de6e5d4 +Block 0019 [ 47]: 11006b4b6595fc58 +Block 0019 [ 48]: 41b286b38a4b607d +Block 0019 [ 49]: eba60946c062f7e9 +Block 0019 [ 50]: f38aae3089bff1e8 +Block 0019 [ 51]: e1d219dacc19a0aa +Block 0019 [ 52]: bbd69ed673b586b2 +Block 0019 [ 53]: f3604701136a8539 +Block 0019 [ 54]: ee988f9217ca7216 +Block 0019 [ 55]: 3ec40766c32f9872 +Block 0019 [ 56]: aa8e6f55082b9b3a +Block 0019 [ 57]: eaee4cbf152450a2 +Block 0019 [ 58]: 2d6d634a578c3768 +Block 0019 [ 59]: cd1b30693fc22fd3 +Block 0019 [ 60]: 9134ae73ba6a6338 +Block 0019 [ 61]: 55b9202e263576e2 +Block 0019 [ 62]: 5990cb5a6abdf6d4 +Block 0019 [ 63]: 90e9bf1096d341c3 +Block 0019 [ 64]: f1184eee8bf92bad +Block 0019 [ 65]: 11557621833c2667 +Block 0019 [ 66]: 7f4fe41022bbbe8f +Block 0019 [ 67]: 1ce4d6a3f00a45e2 +Block 0019 [ 68]: 4d1176a9d73fbd04 +Block 0019 [ 69]: 348095dd5ec67914 +Block 0019 [ 70]: f68943632a9b36f8 +Block 0019 [ 71]: 39cbd678a2013855 +Block 0019 [ 72]: d480608f385da36a +Block 0019 [ 73]: 543abadc4389aec2 +Block 0019 [ 74]: 4c0781a69dd4e5f0 +Block 0019 [ 75]: d70d0b4684ca6fdb +Block 0019 [ 76]: 9f69a1c7beebf974 +Block 0019 [ 77]: 3cc130fef00c1f6b +Block 0019 [ 78]: be0fcd7716b57997 +Block 0019 [ 79]: 91c8cce70af1d23c +Block 0019 [ 80]: f1780fc4eae113de +Block 0019 [ 81]: 9a650c9f13e21cfa +Block 0019 [ 82]: e2a32a8550f79448 +Block 0019 [ 83]: 45cdb0e228907359 +Block 0019 [ 84]: b12202933f6e041e +Block 0019 [ 85]: 1eb6ce2a66e64ad0 +Block 0019 [ 86]: 0fd90d326844b151 +Block 0019 [ 87]: bc9396831333f0ab +Block 0019 [ 88]: a046b58b763c42e1 +Block 0019 [ 89]: 9794be294b3c7fa1 +Block 0019 [ 90]: 8fe6176456bab7bf +Block 0019 [ 91]: aaa0183d2b59afec +Block 0019 [ 92]: 5fa1d31dacccd5a5 +Block 0019 [ 93]: 7f693802526c4520 +Block 0019 [ 94]: 19d1bb4a4461ea59 +Block 0019 [ 95]: e44b42735431ff9a +Block 0019 [ 96]: f346ac2045974039 +Block 0019 [ 97]: cf1da77245b6a0ad +Block 0019 [ 98]: 5936a6f1553ef342 +Block 0019 [ 99]: 812ddc076e3cb742 +Block 0019 [100]: bfaf4ac38c3e6141 +Block 0019 [101]: 14bb89ac7a67a8dd +Block 0019 [102]: b4f278d441a2b70d +Block 0019 [103]: 81abe3584ea009fa +Block 0019 [104]: 467ccf31d2d0db6f +Block 0019 [105]: 9ad73b369b947213 +Block 0019 [106]: 711dd4a31a270b27 +Block 0019 [107]: be20d05f48a4486a +Block 0019 [108]: 5b9bd8d50bbf51d9 +Block 0019 [109]: 6c761a9911cfe27b +Block 0019 [110]: de7b5c685a3a34d9 +Block 0019 [111]: c16444edde5c6871 +Block 0019 [112]: aee99d1b74c68d6d +Block 0019 [113]: 63cfa31ef288b980 +Block 0019 [114]: acc6f55eefa30a69 +Block 0019 [115]: be177ae1dcf072fc +Block 0019 [116]: e7f163e4b7836001 +Block 0019 [117]: 88a2d20a0a31b8e5 +Block 0019 [118]: ded1724eb03f5ff0 +Block 0019 [119]: c79e0c464b5894d2 +Block 0019 [120]: 6b6dc0b043b95513 +Block 0019 [121]: 0ab3dbe638e144f7 +Block 0019 [122]: 580714872c942d95 +Block 0019 [123]: e2133ff2c9b56f8f +Block 0019 [124]: 3f443e86590b195b +Block 0019 [125]: 9f0df786b9d11a62 +Block 0019 [126]: 6019a3f50eeef5ec +Block 0019 [127]: e3af4457c6c57d74 +Block 0020 [ 0]: 9615c6f04b125822 +Block 0020 [ 1]: bbc6a3cbad09ad63 +Block 0020 [ 2]: 8b33a8b1717ecfcd +Block 0020 [ 3]: d22a3d65e0e5dc56 +Block 0020 [ 4]: 5a9c7f600b17734a +Block 0020 [ 5]: 85f34ac002eaaadf +Block 0020 [ 6]: 19102949a7d35dba +Block 0020 [ 7]: eba5faf3e0c5162b +Block 0020 [ 8]: 8d92b1b1cfd06f92 +Block 0020 [ 9]: ab604d743633ee9d +Block 0020 [ 10]: 68e8508552ac02ca +Block 0020 [ 11]: 8dfb2cd0c8b11294 +Block 0020 [ 12]: b76523dd79a50b15 +Block 0020 [ 13]: 71a9e1dcc57a7e88 +Block 0020 [ 14]: fc3fe755fd7c2f49 +Block 0020 [ 15]: 73021f9dc36ac323 +Block 0020 [ 16]: 470194d113aee51d +Block 0020 [ 17]: 9610e1dfe0fa76e4 +Block 0020 [ 18]: f9650a6fdfa140f2 +Block 0020 [ 19]: bb46922d0495f3db +Block 0020 [ 20]: 637ca17912541ba3 +Block 0020 [ 21]: 8be12ee728df3bbe +Block 0020 [ 22]: 6781d218e518816c +Block 0020 [ 23]: b509d54cc8bc2d47 +Block 0020 [ 24]: cf6dbf9c499ecf06 +Block 0020 [ 25]: 907e1dcbd9445922 +Block 0020 [ 26]: d1cedb9860d7d44a +Block 0020 [ 27]: 4db3e6ea4f8e3939 +Block 0020 [ 28]: 2bd8107671b012dc +Block 0020 [ 29]: 1358200893cc352d +Block 0020 [ 30]: 4076651997b8041d +Block 0020 [ 31]: 99583565d39d102b +Block 0020 [ 32]: 9a369ae3653a4844 +Block 0020 [ 33]: ff517930e12d0fb3 +Block 0020 [ 34]: dfe95097f26f5912 +Block 0020 [ 35]: 347791101536883a +Block 0020 [ 36]: f6ebe0adc5e81a86 +Block 0020 [ 37]: 9ee257ca3cb95b47 +Block 0020 [ 38]: 98960e94bcd4efa8 +Block 0020 [ 39]: d2e3fe76d8616647 +Block 0020 [ 40]: d0b7771e1038c71d +Block 0020 [ 41]: 79746f8f40a842fe +Block 0020 [ 42]: ef76f485c0812c0e +Block 0020 [ 43]: 86a66bc0c07c2b7e +Block 0020 [ 44]: e75b56d4dbdbf024 +Block 0020 [ 45]: 32160a23df550a63 +Block 0020 [ 46]: 3ee01df8c98b32c0 +Block 0020 [ 47]: c77fdff62a8be1e8 +Block 0020 [ 48]: 9af667adde4e0ba0 +Block 0020 [ 49]: 7a82d438193aa28f +Block 0020 [ 50]: ca03ab93813051f7 +Block 0020 [ 51]: 97f07d37bafe132c +Block 0020 [ 52]: 7f27cb32f8866e02 +Block 0020 [ 53]: 1f8a6cf5a6d84fc7 +Block 0020 [ 54]: bfaf83737a01bcd3 +Block 0020 [ 55]: 7fef2c3149a0fef0 +Block 0020 [ 56]: 5674a6a7331b6a6d +Block 0020 [ 57]: 0ca447676d116f6b +Block 0020 [ 58]: 7452d755cd1b15c3 +Block 0020 [ 59]: 5681a228481aaacf +Block 0020 [ 60]: 870185f00101adb1 +Block 0020 [ 61]: 86e2191f974f08b0 +Block 0020 [ 62]: 40bd272e9e289567 +Block 0020 [ 63]: b17bb938155258da +Block 0020 [ 64]: 30718b28f21d46dd +Block 0020 [ 65]: 1cc99b8fc23bb1b5 +Block 0020 [ 66]: 498683869b7ecf4c +Block 0020 [ 67]: 58c22169dae7c96d +Block 0020 [ 68]: 0db1b1f0e729cf2d +Block 0020 [ 69]: 3a9085879af82b40 +Block 0020 [ 70]: 4db5e82575ef9d32 +Block 0020 [ 71]: b9e9488f9b515cfc +Block 0020 [ 72]: 8e81d7de5e6c4782 +Block 0020 [ 73]: a217c7f05630e843 +Block 0020 [ 74]: 1f1e764caf5ff5f9 +Block 0020 [ 75]: 3382e12b81b8fe90 +Block 0020 [ 76]: 74e7c5c8c55662c8 +Block 0020 [ 77]: 6b3d6ef4f0d5127e +Block 0020 [ 78]: 1f5927978da0630d +Block 0020 [ 79]: 3b736b8bd8408bd9 +Block 0020 [ 80]: 0dd0b3b98821f799 +Block 0020 [ 81]: 471755b90a64fcb6 +Block 0020 [ 82]: 50b6ac3114749ac5 +Block 0020 [ 83]: b557c9e857ccaadd +Block 0020 [ 84]: 88a2d12570bfe63d +Block 0020 [ 85]: 053d60a3e450e87c +Block 0020 [ 86]: eeb64921f5670705 +Block 0020 [ 87]: 2b1ec30ab15b52af +Block 0020 [ 88]: 23d5521b1e5f9957 +Block 0020 [ 89]: bd68c9ee34594385 +Block 0020 [ 90]: 8f5595c804b0b0cb +Block 0020 [ 91]: 1f7ca670dbae80e7 +Block 0020 [ 92]: 312d9a3dc213f619 +Block 0020 [ 93]: 917c68959a12da86 +Block 0020 [ 94]: ae6457d11e64ac5a +Block 0020 [ 95]: cf9ae240fcbf42d6 +Block 0020 [ 96]: 80336ea9a3d65f65 +Block 0020 [ 97]: 3b9b55736496fb29 +Block 0020 [ 98]: cdadaf18790a76f5 +Block 0020 [ 99]: 7aa4592b00522b5e +Block 0020 [100]: 27497d630ad191c2 +Block 0020 [101]: 885f2f8a1612535b +Block 0020 [102]: ba18ae7c42139005 +Block 0020 [103]: b3ae5a2310cf6cdf +Block 0020 [104]: b696d851371dda54 +Block 0020 [105]: 0d8026cd41c69440 +Block 0020 [106]: 2c724ccda4cef368 +Block 0020 [107]: 8b5300389120cbe7 +Block 0020 [108]: 63bd3c75a62a6b19 +Block 0020 [109]: a793cba536c65be9 +Block 0020 [110]: 311ca002baeec894 +Block 0020 [111]: e87ee22e79820e40 +Block 0020 [112]: bc3a2f78ed41d5d4 +Block 0020 [113]: d8e475e4faa40234 +Block 0020 [114]: c162560b8adc92d4 +Block 0020 [115]: 91b49d09f4ab3123 +Block 0020 [116]: 20f97e7e634a57f5 +Block 0020 [117]: 215f0e74cdcce539 +Block 0020 [118]: b91ad49b46090a89 +Block 0020 [119]: cff450a937dc6300 +Block 0020 [120]: f2f7cf24f1155489 +Block 0020 [121]: 108b2b71758f3215 +Block 0020 [122]: 620dd7da567e1eeb +Block 0020 [123]: a24dc8baad94e416 +Block 0020 [124]: b0d51a0f0414e089 +Block 0020 [125]: d3cf0eb94293600c +Block 0020 [126]: b64fcb808681de54 +Block 0020 [127]: 971f8b5cdc194991 +Block 0021 [ 0]: 5c7cfb56c8f911b3 +Block 0021 [ 1]: 8b7a71622e11aa73 +Block 0021 [ 2]: 1930406e86ee544b +Block 0021 [ 3]: 2f92752aee9653e5 +Block 0021 [ 4]: 1aa7899289031259 +Block 0021 [ 5]: 9276ab0e19abd61a +Block 0021 [ 6]: 8d97e0abed86d503 +Block 0021 [ 7]: 52102de7a0c2541d +Block 0021 [ 8]: a48fd49a819bc22d +Block 0021 [ 9]: 006985b359e6ef5e +Block 0021 [ 10]: 56bd98e477212867 +Block 0021 [ 11]: 87658890e4136505 +Block 0021 [ 12]: 36fcf1dac078bbe6 +Block 0021 [ 13]: c48fe29b58629a66 +Block 0021 [ 14]: c5e510b7790915b4 +Block 0021 [ 15]: c7915e58bc88b962 +Block 0021 [ 16]: 90c98628841ed410 +Block 0021 [ 17]: b948bf66a81acd79 +Block 0021 [ 18]: 20f00016b577ac52 +Block 0021 [ 19]: c0850950f5518e9e +Block 0021 [ 20]: 9cc22f365c9ce483 +Block 0021 [ 21]: d488a15d4f9a09ba +Block 0021 [ 22]: 671624e35e8524fd +Block 0021 [ 23]: fd9cb7702e5a6a18 +Block 0021 [ 24]: 4f6ceca22c7b8def +Block 0021 [ 25]: 35993124c3429808 +Block 0021 [ 26]: d480f9a34ae79284 +Block 0021 [ 27]: 41de8b418a16a33c +Block 0021 [ 28]: bfe94b084eb4cb62 +Block 0021 [ 29]: 1fc72a96b053ac3e +Block 0021 [ 30]: 1d7602e7c7a72141 +Block 0021 [ 31]: ec35d716ed423ae1 +Block 0021 [ 32]: 1457905f2311c807 +Block 0021 [ 33]: ac633f5403f7f962 +Block 0021 [ 34]: 29e5963ae5cafa7e +Block 0021 [ 35]: 05db765805f482aa +Block 0021 [ 36]: 73b42333acffddf7 +Block 0021 [ 37]: 0c7ff380d6f770be +Block 0021 [ 38]: 71155bb1f4cb4f64 +Block 0021 [ 39]: 35819e4d516ed1f1 +Block 0021 [ 40]: f86a4e927f75c684 +Block 0021 [ 41]: 3b94b76c1cebbc1b +Block 0021 [ 42]: 878bd26f6d680ee1 +Block 0021 [ 43]: c853a628c6a2ae2d +Block 0021 [ 44]: 9eb7a9fd5286ac26 +Block 0021 [ 45]: a71ad3bc763bd705 +Block 0021 [ 46]: 7a809af2e80d6e1c +Block 0021 [ 47]: e60a5368fc2f7dcf +Block 0021 [ 48]: ce424d140d2833d3 +Block 0021 [ 49]: 9e2ca4a277a9bfa7 +Block 0021 [ 50]: b6f56b2368f2b2b0 +Block 0021 [ 51]: 8d2831a80c681111 +Block 0021 [ 52]: efa2a6d6b54b372c +Block 0021 [ 53]: 2795838739598c33 +Block 0021 [ 54]: ad0898ef6e088b20 +Block 0021 [ 55]: 3bb14c01e2d26abb +Block 0021 [ 56]: 3715b7840dd14f3a +Block 0021 [ 57]: 11032380cfb1a4e3 +Block 0021 [ 58]: 657f3aa18721b06a +Block 0021 [ 59]: bbc4e34b1a57036f +Block 0021 [ 60]: bb5aab0086615334 +Block 0021 [ 61]: 243bff40cea40263 +Block 0021 [ 62]: 288a58457b364065 +Block 0021 [ 63]: ff3e5f084e886b5d +Block 0021 [ 64]: 266a88b7fa318607 +Block 0021 [ 65]: 46887c524b47738c +Block 0021 [ 66]: 05a41f5d76a98c33 +Block 0021 [ 67]: 1dfce7882e67acfe +Block 0021 [ 68]: 95d64866745a7c0a +Block 0021 [ 69]: 0ea59084765ae9d5 +Block 0021 [ 70]: 07a516edb29cfaba +Block 0021 [ 71]: 92428aea3ebb55a6 +Block 0021 [ 72]: c04928d77c86f0a6 +Block 0021 [ 73]: 74cfd4f2b2dea2f7 +Block 0021 [ 74]: 9a6e39c49f8b73d3 +Block 0021 [ 75]: 8576b61a109ddcd9 +Block 0021 [ 76]: 3f045563a643b7d3 +Block 0021 [ 77]: 10814c54c69bcc58 +Block 0021 [ 78]: 2a8db338c71915d9 +Block 0021 [ 79]: 4a3586847b1a4453 +Block 0021 [ 80]: 1795ab20987b66e8 +Block 0021 [ 81]: da147943c40a3b65 +Block 0021 [ 82]: 3cb7b96d98a10213 +Block 0021 [ 83]: 334d50efa35837ea +Block 0021 [ 84]: 718a8a5a89adcf22 +Block 0021 [ 85]: d0b88dd56ab65fdd +Block 0021 [ 86]: 20b6f89bc23153b4 +Block 0021 [ 87]: af569b830d970527 +Block 0021 [ 88]: 3284c6e30514ad11 +Block 0021 [ 89]: 5280e13f9029f0f1 +Block 0021 [ 90]: 849811b7dd25f028 +Block 0021 [ 91]: 47cb9f761527d86b +Block 0021 [ 92]: dbeacdc212f2ced3 +Block 0021 [ 93]: d7c78ff536cadd0b +Block 0021 [ 94]: 999673e828c35b56 +Block 0021 [ 95]: f87f792b57afadb9 +Block 0021 [ 96]: 29d82c85eced236d +Block 0021 [ 97]: 21be8a63f2ce3afe +Block 0021 [ 98]: 0dc79d3954446982 +Block 0021 [ 99]: 03ab07ee97d110de +Block 0021 [100]: acfbe4f974bb42f7 +Block 0021 [101]: 72e7650500174416 +Block 0021 [102]: 7d2b4bcd0b45804f +Block 0021 [103]: 3f82fcf386947bcb +Block 0021 [104]: b163d4a6610760bb +Block 0021 [105]: af9dee5e93e1628b +Block 0021 [106]: 78d71f93b81e5bd2 +Block 0021 [107]: 1336842f51e07e6e +Block 0021 [108]: be00ff96ecb0c7c3 +Block 0021 [109]: 949daf9fe70e5259 +Block 0021 [110]: d6e900117f863b9a +Block 0021 [111]: cb81b9f4a8f7297e +Block 0021 [112]: 5c65c123427d7bc3 +Block 0021 [113]: 1fc80884cfa7d639 +Block 0021 [114]: ab653c2ad98fe613 +Block 0021 [115]: f8a76a3b7183e378 +Block 0021 [116]: 5801569adbbec72f +Block 0021 [117]: 5dd8f25c9590a887 +Block 0021 [118]: 61db5e3c40bdef0a +Block 0021 [119]: 5c531abfe2cca2ce +Block 0021 [120]: 415c80196f173bf9 +Block 0021 [121]: a1769093654e290f +Block 0021 [122]: 3dded0331d22ead6 +Block 0021 [123]: 4aa06495cc77fb16 +Block 0021 [124]: ba821eca3ac7e893 +Block 0021 [125]: c3f6d28767c41456 +Block 0021 [126]: d09e98175a49ea3a +Block 0021 [127]: c71b672605fe10b8 +Block 0022 [ 0]: 64fd9b4965b7865c +Block 0022 [ 1]: b318e42646c614ab +Block 0022 [ 2]: b0acf9b55022d714 +Block 0022 [ 3]: 24c8da93562c711c +Block 0022 [ 4]: bc2a6302275eadd4 +Block 0022 [ 5]: 3ad682c508033828 +Block 0022 [ 6]: 1135c30b72574375 +Block 0022 [ 7]: 9f4e3111a45f174b +Block 0022 [ 8]: be83dc96a5b8a4ba +Block 0022 [ 9]: fcfe3ab091aca65a +Block 0022 [ 10]: 9390f7c4351730be +Block 0022 [ 11]: bf604eb636f62cc9 +Block 0022 [ 12]: f98ea9f7e17e70fb +Block 0022 [ 13]: 0b015cd145f26853 +Block 0022 [ 14]: ec9163fa13f74ce7 +Block 0022 [ 15]: 8ff97292d63bcab4 +Block 0022 [ 16]: d3feaf92c2d8b41f +Block 0022 [ 17]: d4566510bd20e7ec +Block 0022 [ 18]: afd8d144692a7f33 +Block 0022 [ 19]: e802522f54f2a988 +Block 0022 [ 20]: ac672a89864152a7 +Block 0022 [ 21]: 186e62c8651dd183 +Block 0022 [ 22]: 6e67bf8aea31dfbb +Block 0022 [ 23]: eb785c9679765811 +Block 0022 [ 24]: cae7b721f9066c1d +Block 0022 [ 25]: 87a4293682a4004f +Block 0022 [ 26]: 96748181c2c3c4fe +Block 0022 [ 27]: 0235a425b2c59625 +Block 0022 [ 28]: 32a9ad0c9ababac2 +Block 0022 [ 29]: a691969d4c8a0c62 +Block 0022 [ 30]: 8fde0adacef37668 +Block 0022 [ 31]: 116793c8d7eafcd9 +Block 0022 [ 32]: 22b38c1b92ffbcb7 +Block 0022 [ 33]: 6676a04278883071 +Block 0022 [ 34]: eb46aaf2e70c8316 +Block 0022 [ 35]: dbf45374f04b815e +Block 0022 [ 36]: 258bee0542c96efa +Block 0022 [ 37]: 907e4f6f7595a8ef +Block 0022 [ 38]: df765a9c4c218eae +Block 0022 [ 39]: 3d0e3375b574edbb +Block 0022 [ 40]: 35f13384a1c995ae +Block 0022 [ 41]: 3d0c667fe013a4a8 +Block 0022 [ 42]: 906807c8d09563b3 +Block 0022 [ 43]: fcc287c6a5bcd77b +Block 0022 [ 44]: 14367a708f16b036 +Block 0022 [ 45]: 4ba57f16db97c8eb +Block 0022 [ 46]: 2f970f37091fa261 +Block 0022 [ 47]: 6f40b4a61829c687 +Block 0022 [ 48]: 8ddbf5fd6a8b8d50 +Block 0022 [ 49]: 4a9338a492c0e4ab +Block 0022 [ 50]: ef65910de5dde029 +Block 0022 [ 51]: f1a5348f27802811 +Block 0022 [ 52]: d5af7a4002abceab +Block 0022 [ 53]: d7e088abfc4201df +Block 0022 [ 54]: 7e0dfe72426c89a4 +Block 0022 [ 55]: fad0116ee37d0d35 +Block 0022 [ 56]: e3ccd23e735c6370 +Block 0022 [ 57]: 14b635dad052af0e +Block 0022 [ 58]: bb4b95c0a662f3e1 +Block 0022 [ 59]: 9e1661bf69498511 +Block 0022 [ 60]: 9d3168e59f1d0ed6 +Block 0022 [ 61]: 054bbfbb6227b9c2 +Block 0022 [ 62]: 108a0be1a3e3437e +Block 0022 [ 63]: 8fd5bde2e8c51242 +Block 0022 [ 64]: ec830719ab04c9b7 +Block 0022 [ 65]: 21e51390f98ca718 +Block 0022 [ 66]: 7739557023bee6fc +Block 0022 [ 67]: 0bfff86bba432124 +Block 0022 [ 68]: 607dbfa6887d1a81 +Block 0022 [ 69]: 13060a984bf13d20 +Block 0022 [ 70]: f65ee280fc34e309 +Block 0022 [ 71]: 58ee7e200095a738 +Block 0022 [ 72]: 18453e4acd4adafe +Block 0022 [ 73]: 3b8541389d26247b +Block 0022 [ 74]: ca21feb22f02fd5e +Block 0022 [ 75]: 09caa3b763337817 +Block 0022 [ 76]: 0a6eb6fc271a194d +Block 0022 [ 77]: d0987e4b0bef2d4e +Block 0022 [ 78]: 4d95ded45c6ba518 +Block 0022 [ 79]: 934a752ae10e8b3c +Block 0022 [ 80]: 0903e0909bdea81b +Block 0022 [ 81]: 3534472f695ad1d7 +Block 0022 [ 82]: fe36851b1f2fe863 +Block 0022 [ 83]: 6a0458fca1095df9 +Block 0022 [ 84]: 17a70572293bad90 +Block 0022 [ 85]: e2a48e238aaddd2f +Block 0022 [ 86]: 3b2f3d364af66648 +Block 0022 [ 87]: b6ccb0a91ca2f8b5 +Block 0022 [ 88]: dfbd598aa7af5d05 +Block 0022 [ 89]: 3dea46fc047d9f8e +Block 0022 [ 90]: f35e090d51415634 +Block 0022 [ 91]: 5c0db506447169f3 +Block 0022 [ 92]: 590d2caff15b9a7f +Block 0022 [ 93]: bd6f691b9249e471 +Block 0022 [ 94]: 2e3c804924a7f4f0 +Block 0022 [ 95]: a370d8fd190c7576 +Block 0022 [ 96]: 88c7b5e26c6ff6b3 +Block 0022 [ 97]: 3e059d97d3e58cf1 +Block 0022 [ 98]: d7b099503b1b2fda +Block 0022 [ 99]: 708462a06022938b +Block 0022 [100]: e9c8ac7db507acaa +Block 0022 [101]: 442d1076e088613c +Block 0022 [102]: 9d7ce0f464ff1b07 +Block 0022 [103]: f63b65ffb38aa005 +Block 0022 [104]: 4b5c0033e9502909 +Block 0022 [105]: 6c773a3cd7b5e4f0 +Block 0022 [106]: 08f1e94be69a4fd6 +Block 0022 [107]: 1c373be886f35eb0 +Block 0022 [108]: b14dc4794c9b8cb1 +Block 0022 [109]: f3fbc1e0f5bb285b +Block 0022 [110]: b2d27593c7a712e4 +Block 0022 [111]: c9dfab152aa78ea7 +Block 0022 [112]: 06fb9ca2a671a544 +Block 0022 [113]: 05c4cd7d6203176f +Block 0022 [114]: b295a9ef3a79401a +Block 0022 [115]: 9451857213b32bbb +Block 0022 [116]: 92eb9750a6bae538 +Block 0022 [117]: 0cb4db498fc3bba0 +Block 0022 [118]: ca36208bf56a1e9c +Block 0022 [119]: 901d87ba10136d72 +Block 0022 [120]: 2cac1b66b391c7c6 +Block 0022 [121]: df54b5eab81b24bf +Block 0022 [122]: d3c88b759a23a4fe +Block 0022 [123]: 4097fe18adbfbc6f +Block 0022 [124]: 47a3bc5614d062a3 +Block 0022 [125]: 7c94001e1a2d2c65 +Block 0022 [126]: 0e80b1921c8637a5 +Block 0022 [127]: 5abc6ef9377e861b +Block 0023 [ 0]: 6f1853c5319f9562 +Block 0023 [ 1]: e2276855409e9046 +Block 0023 [ 2]: 8de58f45d20e98b0 +Block 0023 [ 3]: 67f609324d652b57 +Block 0023 [ 4]: 3a4bb948f39345b9 +Block 0023 [ 5]: 7ef1f641e620643c +Block 0023 [ 6]: 28462ac5919ab4ef +Block 0023 [ 7]: 8f62db1f9b18733c +Block 0023 [ 8]: 31cd7b2ea2476fb1 +Block 0023 [ 9]: 11b9623ab428c965 +Block 0023 [ 10]: 5c2020f5c2fe21de +Block 0023 [ 11]: df5626fef0b5978d +Block 0023 [ 12]: e5345a586ff7176c +Block 0023 [ 13]: 5188b696ebed647f +Block 0023 [ 14]: 7a92ccf8de6e893e +Block 0023 [ 15]: 9dc2f344b4e2c921 +Block 0023 [ 16]: a9b5b02623130ebf +Block 0023 [ 17]: f2ff269b618ba660 +Block 0023 [ 18]: fcf6c01de14de5ce +Block 0023 [ 19]: 2e3457136a7e83fb +Block 0023 [ 20]: 2b61c5171f8159b1 +Block 0023 [ 21]: 14e562091620ae2c +Block 0023 [ 22]: 2c9d26f9a7b5e6d2 +Block 0023 [ 23]: d0cc7ace37891cee +Block 0023 [ 24]: e21b920a63af6535 +Block 0023 [ 25]: b2c622542bd642bb +Block 0023 [ 26]: c6d62b3c28afa5ea +Block 0023 [ 27]: 97e8bb80322d3307 +Block 0023 [ 28]: 39848b62b609a793 +Block 0023 [ 29]: 37b886a95aafbaf3 +Block 0023 [ 30]: cb0cdc116b750327 +Block 0023 [ 31]: 52ab4414c2ac68e7 +Block 0023 [ 32]: bdf682bba57bdedb +Block 0023 [ 33]: 944852982e2c5134 +Block 0023 [ 34]: 18e61b320d8fe09f +Block 0023 [ 35]: 396de631d0da3b9d +Block 0023 [ 36]: 03360f528e36c8aa +Block 0023 [ 37]: 2192278da2fcaeb9 +Block 0023 [ 38]: 9dc55ef7840d826c +Block 0023 [ 39]: 03da781c403b16e8 +Block 0023 [ 40]: a39c8b8a7c670aba +Block 0023 [ 41]: 97493ed7fa5943b4 +Block 0023 [ 42]: 9f2a1463c375c544 +Block 0023 [ 43]: 01be7e591061e086 +Block 0023 [ 44]: d5b3537bd8a31e5f +Block 0023 [ 45]: 9ce6039b063e6265 +Block 0023 [ 46]: df1b651695071d84 +Block 0023 [ 47]: acb5903b1934a4b4 +Block 0023 [ 48]: 35d9e6c2b39909e7 +Block 0023 [ 49]: 64a8b6b286de343e +Block 0023 [ 50]: 2c2de51a549d5b57 +Block 0023 [ 51]: 4867625ed31c0f96 +Block 0023 [ 52]: 9faeae884d5791d8 +Block 0023 [ 53]: 5bdf23a008c25bb1 +Block 0023 [ 54]: d2878f03e4fe900f +Block 0023 [ 55]: 017cd24a913bd254 +Block 0023 [ 56]: e271daebf861cf5b +Block 0023 [ 57]: 75477c84426b8f73 +Block 0023 [ 58]: c96a6bebf91e1a14 +Block 0023 [ 59]: 8e4277cc1fa2ce6b +Block 0023 [ 60]: 68c4a44a97ffba2f +Block 0023 [ 61]: f6c2c2b99f342b8c +Block 0023 [ 62]: 6690a2192de3c87f +Block 0023 [ 63]: 36a0d3497baa7820 +Block 0023 [ 64]: 157f9015c0c7f9f0 +Block 0023 [ 65]: 79e419eb8e807756 +Block 0023 [ 66]: e66cc11ff8aa6f61 +Block 0023 [ 67]: 7e9b408465e7ce4e +Block 0023 [ 68]: 52c6a49a03883386 +Block 0023 [ 69]: f03fb132eebd2045 +Block 0023 [ 70]: cd567beb7556ec86 +Block 0023 [ 71]: 85982ac59523492a +Block 0023 [ 72]: 20ee64cb514ad474 +Block 0023 [ 73]: 4d1c99a6a8c08e4f +Block 0023 [ 74]: 5131c291ea29e9c2 +Block 0023 [ 75]: 6235198630fad95b +Block 0023 [ 76]: 70fe76acb0b18fbd +Block 0023 [ 77]: b206b78ef678c1ba +Block 0023 [ 78]: 56a6db19ae8589e5 +Block 0023 [ 79]: 72cdedfbd94dce70 +Block 0023 [ 80]: 7a50b0bf9fd61a9e +Block 0023 [ 81]: 0c85f95eeb886204 +Block 0023 [ 82]: 816c6be3d15ff55d +Block 0023 [ 83]: 20817fd396239ec1 +Block 0023 [ 84]: d05612a38e22672f +Block 0023 [ 85]: f972bd8da51d6fdf +Block 0023 [ 86]: 20fc3311fd080dd7 +Block 0023 [ 87]: a176747132531fce +Block 0023 [ 88]: 2b22d83144efdc3b +Block 0023 [ 89]: 4f558ac03d6f9bed +Block 0023 [ 90]: 09b7bca775f5d9e2 +Block 0023 [ 91]: d3265666a853a184 +Block 0023 [ 92]: 485da114eaeed42f +Block 0023 [ 93]: 2d4bed5cb24a661c +Block 0023 [ 94]: 2a1ce8bc3865294d +Block 0023 [ 95]: ffa252bb0cd9df9f +Block 0023 [ 96]: 1f5c37a3ccd57245 +Block 0023 [ 97]: 0718e569a201014e +Block 0023 [ 98]: 4bb1602a978086bf +Block 0023 [ 99]: ebbd6e7528af36a9 +Block 0023 [100]: 2b4ab8751bc9fe94 +Block 0023 [101]: 68553e85db3f32b4 +Block 0023 [102]: e31ed80700c9fdbc +Block 0023 [103]: 93afa5f880862c8f +Block 0023 [104]: 4660514a885ff84b +Block 0023 [105]: 19b38d1f248013b6 +Block 0023 [106]: 2e3c39ec54094983 +Block 0023 [107]: 96c1dcf93b6c6f29 +Block 0023 [108]: a683f243ac481cfb +Block 0023 [109]: 309a7c76f0304c9e +Block 0023 [110]: f75b27228b66cac7 +Block 0023 [111]: 8eb73c3b7595d5b9 +Block 0023 [112]: 69bc2ff710baec62 +Block 0023 [113]: 1602ea60ad1ee868 +Block 0023 [114]: 73ba0e151c086ee9 +Block 0023 [115]: 6fadbbbc8e00a7cf +Block 0023 [116]: f238a3ba1b46babc +Block 0023 [117]: dd3d5b22a7f66c81 +Block 0023 [118]: f1d34a91886de3fd +Block 0023 [119]: c1671928190cea58 +Block 0023 [120]: 47174dba3a407fed +Block 0023 [121]: c7ddfc44251d0ed0 +Block 0023 [122]: 72f4f8a5b1cec9ff +Block 0023 [123]: 20999d3b61bc0eb4 +Block 0023 [124]: 0a75094f49d3ad65 +Block 0023 [125]: dc9350409c61baed +Block 0023 [126]: 0fd7037aa67bac99 +Block 0023 [127]: e287e0e42246c7f4 +Block 0024 [ 0]: 0432574fbc9d5dd8 +Block 0024 [ 1]: c204e6cbddc0e513 +Block 0024 [ 2]: bff86a52bbb84772 +Block 0024 [ 3]: a4ad714647a24141 +Block 0024 [ 4]: 306dfb160cb0168b +Block 0024 [ 5]: 103af7fecdc4e474 +Block 0024 [ 6]: dc7c2fbc8418ae2c +Block 0024 [ 7]: f9b9db9b5b00530a +Block 0024 [ 8]: fdd811cc89258674 +Block 0024 [ 9]: c021d74c30791cad +Block 0024 [ 10]: e1e3a2611ee62cdc +Block 0024 [ 11]: b4376209f57ba102 +Block 0024 [ 12]: 485bad429d7a74d1 +Block 0024 [ 13]: 2f00dd21f7cba740 +Block 0024 [ 14]: eeedb2ea7180653e +Block 0024 [ 15]: 21bd09fbe74d0c42 +Block 0024 [ 16]: 1c3cf40409d194b3 +Block 0024 [ 17]: abb803645f3d4eef +Block 0024 [ 18]: 760aeea7a9b5cc3f +Block 0024 [ 19]: 19fae830355800be +Block 0024 [ 20]: 141dba19caf13520 +Block 0024 [ 21]: 8ca23b8f3cd2633e +Block 0024 [ 22]: 78b7a41e4ac99edc +Block 0024 [ 23]: 531d130dcf9774d8 +Block 0024 [ 24]: 837e14d422f7557e +Block 0024 [ 25]: 1a8dbdfb37af6c74 +Block 0024 [ 26]: 134301202c87ec18 +Block 0024 [ 27]: fcbb7a22c5b3df52 +Block 0024 [ 28]: 32f4e44e9fac6b59 +Block 0024 [ 29]: 13ef9cf9aaee02e2 +Block 0024 [ 30]: 80418abbff69af85 +Block 0024 [ 31]: 3fdc185377252bae +Block 0024 [ 32]: 313c10ca6661d457 +Block 0024 [ 33]: 11f9b04c374037ca +Block 0024 [ 34]: 8f318bc97ca0a623 +Block 0024 [ 35]: 25567955504565ab +Block 0024 [ 36]: 94a627d187cb82aa +Block 0024 [ 37]: 6312efdd2a1b6b15 +Block 0024 [ 38]: 578d72ee851807a4 +Block 0024 [ 39]: 0d7ea132d31936ad +Block 0024 [ 40]: 1e7a1b0c13069b01 +Block 0024 [ 41]: 0c0ac3cd3fb22d0e +Block 0024 [ 42]: 0d86238598ac86a4 +Block 0024 [ 43]: 4f8fc85ec52bd436 +Block 0024 [ 44]: 656e06c90e503727 +Block 0024 [ 45]: f879f0a09097b288 +Block 0024 [ 46]: e5de3d1a739a7d89 +Block 0024 [ 47]: c0f9d1fcf2ae3a40 +Block 0024 [ 48]: 5abc3ec589836477 +Block 0024 [ 49]: 2b1b22823ca247b4 +Block 0024 [ 50]: fa725af759926695 +Block 0024 [ 51]: 451275844fc4cee2 +Block 0024 [ 52]: d55319d56a1d94f7 +Block 0024 [ 53]: a013da8d2b0cd1f4 +Block 0024 [ 54]: ed7a84ba49aff786 +Block 0024 [ 55]: 89d502e82eb686b5 +Block 0024 [ 56]: 15952ee29e0e742b +Block 0024 [ 57]: 38bad0e41edf0fda +Block 0024 [ 58]: 0917ac2e67e4abf4 +Block 0024 [ 59]: 3f1d8424ff0b061b +Block 0024 [ 60]: b28a7c092d523671 +Block 0024 [ 61]: 648492402817887a +Block 0024 [ 62]: 98392a38e1d1cb57 +Block 0024 [ 63]: 6c3f7e8f7284210b +Block 0024 [ 64]: fdf9ed8aab0dddee +Block 0024 [ 65]: d7cd3a000a642aa5 +Block 0024 [ 66]: 818c0c07e43eabc2 +Block 0024 [ 67]: 8f0cec21539c9184 +Block 0024 [ 68]: 3290a8bf82fbb054 +Block 0024 [ 69]: 774f9f56cb180482 +Block 0024 [ 70]: 05c93d89441573e2 +Block 0024 [ 71]: 6d909bbec0f2b043 +Block 0024 [ 72]: 9f5fd6cd2e4972ec +Block 0024 [ 73]: 1529c07b366527fc +Block 0024 [ 74]: 046f880c84a32721 +Block 0024 [ 75]: 9ead89d33173d633 +Block 0024 [ 76]: 14db9d8f07af67f7 +Block 0024 [ 77]: 7a39735cb6469f13 +Block 0024 [ 78]: effbe25d83c95cef +Block 0024 [ 79]: 1c13ef9b8127cca1 +Block 0024 [ 80]: 8c6c66bf4007f535 +Block 0024 [ 81]: 0e43774693ab0d9f +Block 0024 [ 82]: ad94f20b17ac7409 +Block 0024 [ 83]: e7fc3a1411454e6c +Block 0024 [ 84]: 1ab8d0b17650a589 +Block 0024 [ 85]: 631bb50d34843850 +Block 0024 [ 86]: e4637482fe3a837b +Block 0024 [ 87]: 4904d626a5376682 +Block 0024 [ 88]: a2f694ab52ba264b +Block 0024 [ 89]: 4665d1ef7c41f849 +Block 0024 [ 90]: b4ea1371947d2810 +Block 0024 [ 91]: 79fb98770f2d912c +Block 0024 [ 92]: 2ce74cabf98919a3 +Block 0024 [ 93]: 762030a596c31be3 +Block 0024 [ 94]: 01f6ec6459e8170f +Block 0024 [ 95]: d43caf792539d9fb +Block 0024 [ 96]: 6100b03b6bede581 +Block 0024 [ 97]: b5524ced6d9dd33f +Block 0024 [ 98]: f7b50e455bcd2eba +Block 0024 [ 99]: fd24d6a38ab51643 +Block 0024 [100]: 35629cf1b450109a +Block 0024 [101]: 1f2304fe412e1390 +Block 0024 [102]: 81c4f114d70aee49 +Block 0024 [103]: cd63c0935c4c8e31 +Block 0024 [104]: 4111632fd7eaa644 +Block 0024 [105]: e4eba60023668c10 +Block 0024 [106]: 1b391550d1793d68 +Block 0024 [107]: f834a1e65bd10e66 +Block 0024 [108]: 04cf3169883c1761 +Block 0024 [109]: 3feb52f056a0ffb3 +Block 0024 [110]: 00b5f30a55a77677 +Block 0024 [111]: a885fd7ce60d83f6 +Block 0024 [112]: d2e107f102334203 +Block 0024 [113]: 3964a70ec5b6cab3 +Block 0024 [114]: b613b663f0093f9f +Block 0024 [115]: 35b11d5e2f64070d +Block 0024 [116]: 97965edbda06083a +Block 0024 [117]: b034b567199107ec +Block 0024 [118]: 95aca8d8108d34a2 +Block 0024 [119]: 02a7090233566f9b +Block 0024 [120]: 67a7495b336b06d2 +Block 0024 [121]: 4281aa7d3ee9611b +Block 0024 [122]: 468dea7a61d1edca +Block 0024 [123]: 238094066657c3fe +Block 0024 [124]: 0e1ab01381100ee6 +Block 0024 [125]: 0f1af8701c31727d +Block 0024 [126]: 9c94844cef907f44 +Block 0024 [127]: 902e335c261a32e7 +Block 0025 [ 0]: 6a33df8f52ad99bf +Block 0025 [ 1]: 1e4738940d06379b +Block 0025 [ 2]: b9f081d1f8243661 +Block 0025 [ 3]: 7df44c97870c6e9d +Block 0025 [ 4]: fbf7eaee7c04aab3 +Block 0025 [ 5]: c625e47ec737f9d4 +Block 0025 [ 6]: dfdb0e81b1004005 +Block 0025 [ 7]: 1bbc61627ecbd467 +Block 0025 [ 8]: 5bddb477803f2e65 +Block 0025 [ 9]: 9027be96a3f42340 +Block 0025 [ 10]: 558c0c7b4e389af7 +Block 0025 [ 11]: 448b3293b8a175b1 +Block 0025 [ 12]: 0a65e5e6cee01e24 +Block 0025 [ 13]: e599d714f1493875 +Block 0025 [ 14]: 0a7f22d619766c70 +Block 0025 [ 15]: fb02933939450b2a +Block 0025 [ 16]: 3f12eff85ecd0b82 +Block 0025 [ 17]: 956e0ca5e3c0c248 +Block 0025 [ 18]: 22ff792f503db151 +Block 0025 [ 19]: 17084ef5418273dc +Block 0025 [ 20]: ce747362530ae619 +Block 0025 [ 21]: 20b416abcb77c071 +Block 0025 [ 22]: deb39aca8d50640b +Block 0025 [ 23]: d31cdd0763cc5c81 +Block 0025 [ 24]: 84a8e613c349b233 +Block 0025 [ 25]: e8bc7a697643f7b5 +Block 0025 [ 26]: 0c36ddfc4171a8f8 +Block 0025 [ 27]: 4dbd968c9d34bed6 +Block 0025 [ 28]: e1d57c69a41636f3 +Block 0025 [ 29]: 766ae46b78df2f2e +Block 0025 [ 30]: 8f8f7f5a4c864ab9 +Block 0025 [ 31]: 878f468c99598ee7 +Block 0025 [ 32]: c4352b3d5e7b6a9f +Block 0025 [ 33]: b09e084d0f9e7188 +Block 0025 [ 34]: 2f9356019d974131 +Block 0025 [ 35]: 648b17019e5e2026 +Block 0025 [ 36]: fc5d8f769a45c489 +Block 0025 [ 37]: 02622e6a0de5e763 +Block 0025 [ 38]: ed36ab59ab7f18b8 +Block 0025 [ 39]: 4a7b050e74b8645f +Block 0025 [ 40]: 7221af6a190edb2a +Block 0025 [ 41]: b3f8f1aec73b76e7 +Block 0025 [ 42]: 0c8a615a280f8d8f +Block 0025 [ 43]: a46ec28c5ad8b7e2 +Block 0025 [ 44]: f038bfe29ade127b +Block 0025 [ 45]: 463ebb4801f169eb +Block 0025 [ 46]: 393b89ae6915a527 +Block 0025 [ 47]: 4c9de27e93368fcf +Block 0025 [ 48]: 476798d8e490924a +Block 0025 [ 49]: 58dd5a5031d795fb +Block 0025 [ 50]: 7c2b0b7e8ac62762 +Block 0025 [ 51]: c14ec516db75e3ce +Block 0025 [ 52]: 809ef653b7973236 +Block 0025 [ 53]: 6d0c17627f8457d0 +Block 0025 [ 54]: 5e4c5707ec7a312a +Block 0025 [ 55]: 10cc52c802e38f2a +Block 0025 [ 56]: 53832930d7f99e6f +Block 0025 [ 57]: e87111500e7eaf61 +Block 0025 [ 58]: 201807f71790abb0 +Block 0025 [ 59]: 6654a2ef4dbadf77 +Block 0025 [ 60]: abc3f86ab105500c +Block 0025 [ 61]: d5e670d24870e38a +Block 0025 [ 62]: 73df25444586e7e5 +Block 0025 [ 63]: 3604c5115f172cd6 +Block 0025 [ 64]: 3ea3445257cc3d20 +Block 0025 [ 65]: 0bf5afbad73b5237 +Block 0025 [ 66]: daf94be6af7bf1a0 +Block 0025 [ 67]: 370dde956abb776e +Block 0025 [ 68]: 802bd2a5fa2661e7 +Block 0025 [ 69]: ae052a4ce269f03c +Block 0025 [ 70]: d6ca5a4ac9dd3989 +Block 0025 [ 71]: ef2f6fe0822d0e9d +Block 0025 [ 72]: 0f28e85470f7823a +Block 0025 [ 73]: 241bf3e44e28ec45 +Block 0025 [ 74]: f304a89cb0cc1ae4 +Block 0025 [ 75]: 1967071e8d5f3958 +Block 0025 [ 76]: 15f52e78a9be5e6f +Block 0025 [ 77]: 36eb08b3e5658be2 +Block 0025 [ 78]: d4cf1ad4b5a79ed1 +Block 0025 [ 79]: fd4e0abe38be5444 +Block 0025 [ 80]: 297b66d84318d18b +Block 0025 [ 81]: 49b339bf3e8d42f0 +Block 0025 [ 82]: f282d4d78d5450c8 +Block 0025 [ 83]: 0064797664727d25 +Block 0025 [ 84]: ccbc9790b4fd936f +Block 0025 [ 85]: 15ac480e2508669b +Block 0025 [ 86]: fea4af22a8cb5003 +Block 0025 [ 87]: 1b4b21e63b6e9cda +Block 0025 [ 88]: 47e39f00b6418d15 +Block 0025 [ 89]: 33cab571c1aa93fc +Block 0025 [ 90]: 4fdadc07cc36e16d +Block 0025 [ 91]: bcf8cbe2a449f361 +Block 0025 [ 92]: b180fbeff2434f3d +Block 0025 [ 93]: 450472dcb53e8d52 +Block 0025 [ 94]: 51a5bdfc173ca0c6 +Block 0025 [ 95]: eba8b59eedcfe0f9 +Block 0025 [ 96]: fbe4510c8c404a78 +Block 0025 [ 97]: 0ed380b414a806e8 +Block 0025 [ 98]: a601ac4334f312b4 +Block 0025 [ 99]: 4c3df8d16dcc6031 +Block 0025 [100]: a9ee4854b8c57d47 +Block 0025 [101]: abebcdf52911dca8 +Block 0025 [102]: 6099abea1e246362 +Block 0025 [103]: f5f62963254c90d9 +Block 0025 [104]: 6fbbb44ecb8ac43c +Block 0025 [105]: 6a1ed1569ec8b87e +Block 0025 [106]: 4ae870e93ab864c3 +Block 0025 [107]: 0f2d84f09dd60efd +Block 0025 [108]: 5d2f346e77e5f9aa +Block 0025 [109]: 6ee2faa370274d62 +Block 0025 [110]: c7ef7e1d468fafae +Block 0025 [111]: 45b5d7078557dfed +Block 0025 [112]: 1df7503c1707885b +Block 0025 [113]: cf4db59f80be2658 +Block 0025 [114]: d075daea15b69025 +Block 0025 [115]: d46e2b1666564126 +Block 0025 [116]: b20de022658b0937 +Block 0025 [117]: 5bbdd8ea5ac84fdc +Block 0025 [118]: d11604e8a302ef3d +Block 0025 [119]: b7989bb11e8896fe +Block 0025 [120]: cd1a256af97a7065 +Block 0025 [121]: 3be04657757ea2c6 +Block 0025 [122]: 2bf0875d14cfb3fe +Block 0025 [123]: 7a17400be50e0372 +Block 0025 [124]: cfb3e6c1c5b72e4e +Block 0025 [125]: 51f1f3f96adc1d38 +Block 0025 [126]: cb6895cf3808177e +Block 0025 [127]: c372ac9e2280b766 +Block 0026 [ 0]: d4644b09c003253e +Block 0026 [ 1]: 12f7dd4cf4963e9f +Block 0026 [ 2]: 475ce25005e2660c +Block 0026 [ 3]: 0ee5d9d17575e7a5 +Block 0026 [ 4]: bff637afde37cda0 +Block 0026 [ 5]: 652429dbc2fffdfb +Block 0026 [ 6]: 0d600cbf7fdb1a88 +Block 0026 [ 7]: 49d337d8aa97c307 +Block 0026 [ 8]: 753808c8f5df9e29 +Block 0026 [ 9]: 70d05d603f8072fc +Block 0026 [ 10]: 3e38c9a4da895bb4 +Block 0026 [ 11]: 75173dd8ccb661b9 +Block 0026 [ 12]: 1f0fa6398c2162f5 +Block 0026 [ 13]: 905141a22ebf8360 +Block 0026 [ 14]: a070815d16d7cc44 +Block 0026 [ 15]: b2e0243bca0b9076 +Block 0026 [ 16]: f2da1f4202bfdd0d +Block 0026 [ 17]: 29c4deffd4129b54 +Block 0026 [ 18]: 053ffdde9e7578a3 +Block 0026 [ 19]: 93d82106bf559278 +Block 0026 [ 20]: d0c048e1c812fb7e +Block 0026 [ 21]: 8a60d0a5eba8b872 +Block 0026 [ 22]: 93a6956d1f540594 +Block 0026 [ 23]: 68d6c2c6d0cc49dc +Block 0026 [ 24]: 24add3c074371dee +Block 0026 [ 25]: 98425302f639d739 +Block 0026 [ 26]: b0f100a24e4e3c5c +Block 0026 [ 27]: f04de3ee7d7b230f +Block 0026 [ 28]: eebe1a10cc7a109a +Block 0026 [ 29]: 286d1aa98409a5a9 +Block 0026 [ 30]: 998eb27d9099fab7 +Block 0026 [ 31]: 782979936291e152 +Block 0026 [ 32]: f6e7a458a0dd3f32 +Block 0026 [ 33]: 1eee46fd1322e250 +Block 0026 [ 34]: d3be4374c23bb5a3 +Block 0026 [ 35]: 36a7f2642043491f +Block 0026 [ 36]: 0d8bb89da3a2d8c3 +Block 0026 [ 37]: 92a7d48e3745a5f8 +Block 0026 [ 38]: 02d855e4fddf98c3 +Block 0026 [ 39]: 3bd76c9b741fc555 +Block 0026 [ 40]: 9a58c2c02a3e8bb0 +Block 0026 [ 41]: 0d5587098b39ec0b +Block 0026 [ 42]: 0573c24e48f0c8e1 +Block 0026 [ 43]: 124716b689c0b68e +Block 0026 [ 44]: e71a1a03bbb1d432 +Block 0026 [ 45]: dfec9f9aa29448dc +Block 0026 [ 46]: 96e73736125c28ef +Block 0026 [ 47]: 389e19fca6820912 +Block 0026 [ 48]: db4a9c13301cb73d +Block 0026 [ 49]: 64b8097bc2acee2e +Block 0026 [ 50]: 6f13f445b46f092f +Block 0026 [ 51]: 2ca17f8ca1d0c9f0 +Block 0026 [ 52]: ad6814b85cdc3d75 +Block 0026 [ 53]: a2e9688b5c45d0b6 +Block 0026 [ 54]: 13b9954b1eff332f +Block 0026 [ 55]: bfb42ee6c61c2332 +Block 0026 [ 56]: 84b305a26d7d025a +Block 0026 [ 57]: d3b86917d5344169 +Block 0026 [ 58]: 309d160aaf7f21ee +Block 0026 [ 59]: 3a613153a6461ad3 +Block 0026 [ 60]: 6289de5bb1473da6 +Block 0026 [ 61]: 2931e93ed65c9c23 +Block 0026 [ 62]: de5613d1dd794cb5 +Block 0026 [ 63]: 45348e49103c2238 +Block 0026 [ 64]: d75eb060ca91922b +Block 0026 [ 65]: 3e841a14d2279025 +Block 0026 [ 66]: cfe5bf05de6129e7 +Block 0026 [ 67]: cc13a37b4b7fdbd4 +Block 0026 [ 68]: 2cfc21d2a742ed01 +Block 0026 [ 69]: 48358561341ccf61 +Block 0026 [ 70]: 7bac9e21d22b5d0b +Block 0026 [ 71]: 3d4f67f5dd597ce2 +Block 0026 [ 72]: 4b3dece6f7e0b1ee +Block 0026 [ 73]: 821441b39b6550ed +Block 0026 [ 74]: 0e7ad63d6847df36 +Block 0026 [ 75]: d5b6800ce41af41a +Block 0026 [ 76]: 2ab97c68612fe7e6 +Block 0026 [ 77]: 6e1c48f0697fe866 +Block 0026 [ 78]: d91966706c816313 +Block 0026 [ 79]: c270124d3ba5d069 +Block 0026 [ 80]: 3b98e12b91834469 +Block 0026 [ 81]: 921de3f47bb28efa +Block 0026 [ 82]: a9ffcbbefa055af8 +Block 0026 [ 83]: fc739c1f52d29c26 +Block 0026 [ 84]: 51c10952e7468dfa +Block 0026 [ 85]: b36cda035eedcfca +Block 0026 [ 86]: 9345c125f02e59cd +Block 0026 [ 87]: 77c8410841bf9f1b +Block 0026 [ 88]: 45ebed6372f51109 +Block 0026 [ 89]: bde310d799c65859 +Block 0026 [ 90]: f6751c32b3de8aa5 +Block 0026 [ 91]: bfd9e8b6ec61500d +Block 0026 [ 92]: 3878727b18396b95 +Block 0026 [ 93]: c44e906a21a72ae0 +Block 0026 [ 94]: 0709e625a56972cd +Block 0026 [ 95]: 02e1c37389617f94 +Block 0026 [ 96]: be53ee0cd959341d +Block 0026 [ 97]: 149d1af43d748caa +Block 0026 [ 98]: 68a219dd25c29566 +Block 0026 [ 99]: a865c2b5613af47b +Block 0026 [100]: 926200d4e41c8575 +Block 0026 [101]: 66c9d78f346bddd6 +Block 0026 [102]: 8ca35ac9bc3429c0 +Block 0026 [103]: 5f6e6c772d04c958 +Block 0026 [104]: 6876462dcbd7cf6e +Block 0026 [105]: dc96acd154a932e8 +Block 0026 [106]: 169dd1dfed20ede8 +Block 0026 [107]: 427e326fc5947488 +Block 0026 [108]: d1f9248337185dd5 +Block 0026 [109]: ef948dfb4d3cfe6f +Block 0026 [110]: 7c3b1733fa34d810 +Block 0026 [111]: 4f3678050ba9b9a5 +Block 0026 [112]: 6d2b0ab3102f5e0c +Block 0026 [113]: 1b129019ac99b656 +Block 0026 [114]: 61b7cb5bf8d5bfe6 +Block 0026 [115]: 8a9962b673ceb4bd +Block 0026 [116]: 266264ff1a486ee8 +Block 0026 [117]: e9bae0cc052322f2 +Block 0026 [118]: 264fdf5a1384c5a3 +Block 0026 [119]: 0da1f3a192b8f17d +Block 0026 [120]: ab5b52630aee7555 +Block 0026 [121]: e1c6aca80af029b7 +Block 0026 [122]: 7faad66596f50406 +Block 0026 [123]: 0afb5266837fc857 +Block 0026 [124]: 49836a76ba3f17f5 +Block 0026 [125]: a4f2be896b9a7faa +Block 0026 [126]: 896d8796bedac776 +Block 0026 [127]: 54c0cec184484beb +Block 0027 [ 0]: f61ccbc977a56f2a +Block 0027 [ 1]: 16a2fc666566d811 +Block 0027 [ 2]: dbdcef27043ee92c +Block 0027 [ 3]: 7bf75d5f65e78a65 +Block 0027 [ 4]: 0a15def59f31c142 +Block 0027 [ 5]: 831022f386d0b2a2 +Block 0027 [ 6]: 932e0543e746b58a +Block 0027 [ 7]: 496766ab72544725 +Block 0027 [ 8]: 355cfe19f9116a8d +Block 0027 [ 9]: 88d0d1a1d56bef94 +Block 0027 [ 10]: 3d19de35a7a14699 +Block 0027 [ 11]: ae51010a38de2ffd +Block 0027 [ 12]: 801daa838f87964a +Block 0027 [ 13]: 07b4368ee07db13d +Block 0027 [ 14]: 50b5f86bff7d4ab8 +Block 0027 [ 15]: 9df3735a949255bd +Block 0027 [ 16]: a8f2cb1fccf4258e +Block 0027 [ 17]: b78d1707330d5940 +Block 0027 [ 18]: 22e52dec13656ede +Block 0027 [ 19]: d9169565e082d981 +Block 0027 [ 20]: 9201b66dd9cc75df +Block 0027 [ 21]: de3b5b1d58b0a378 +Block 0027 [ 22]: ac99bd46131880bc +Block 0027 [ 23]: 8ba435f5db7fd1a1 +Block 0027 [ 24]: bd66ac15d4312fd7 +Block 0027 [ 25]: d6ded2fbdcf07f22 +Block 0027 [ 26]: ffdd843379defc18 +Block 0027 [ 27]: 175c1d853ab71b75 +Block 0027 [ 28]: aa2852e60c337b14 +Block 0027 [ 29]: 4b653b3ba64d4260 +Block 0027 [ 30]: c87559ba9bdc7d9d +Block 0027 [ 31]: 269034d8bf7b97f2 +Block 0027 [ 32]: bc6aa987a9a62dae +Block 0027 [ 33]: 90d49b0713c77323 +Block 0027 [ 34]: c48082b5b4a54927 +Block 0027 [ 35]: 51b5179740948ce8 +Block 0027 [ 36]: a68528d3e9f7ec4d +Block 0027 [ 37]: d4ffa0faa6cc3e32 +Block 0027 [ 38]: e1a43960e3fe86e0 +Block 0027 [ 39]: 9ed0c70304b2b51c +Block 0027 [ 40]: b89813269c079a30 +Block 0027 [ 41]: 8feb1556e23194f2 +Block 0027 [ 42]: bd439d3c8324dd8f +Block 0027 [ 43]: 647365a561b4f90d +Block 0027 [ 44]: d112b5668642c8d7 +Block 0027 [ 45]: fedfa6bc506a5cca +Block 0027 [ 46]: 8f3a47e825ac7e6e +Block 0027 [ 47]: 5974748b49bf0f5b +Block 0027 [ 48]: d1712b6d08e1775e +Block 0027 [ 49]: 7d63514c4c7b44e7 +Block 0027 [ 50]: d276fe180222463a +Block 0027 [ 51]: d409b7d46cbb8991 +Block 0027 [ 52]: c8bde5ae23928e0c +Block 0027 [ 53]: 257f8a112f710427 +Block 0027 [ 54]: 99307b3d2515b0b5 +Block 0027 [ 55]: 56f7bffe335d7bdb +Block 0027 [ 56]: 36bcfee53e19166b +Block 0027 [ 57]: f4ec1ab9701e3895 +Block 0027 [ 58]: 1c5df9cda8fc7cd6 +Block 0027 [ 59]: fb688c2afeeaa596 +Block 0027 [ 60]: 50b6afe08a28dafb +Block 0027 [ 61]: 64ab62e27c9d676d +Block 0027 [ 62]: 573e46f4f67708fb +Block 0027 [ 63]: 63659fcb0d92a75b +Block 0027 [ 64]: 51f92b0593c5b597 +Block 0027 [ 65]: 3f9a9f503844da60 +Block 0027 [ 66]: 2784db967aa7752a +Block 0027 [ 67]: 83f1a4885aba587c +Block 0027 [ 68]: c736f3d979e01d86 +Block 0027 [ 69]: 838c3a38d5df2224 +Block 0027 [ 70]: f5101255016d63fa +Block 0027 [ 71]: 6a2d21ac3cdb4216 +Block 0027 [ 72]: 5dfdfc52471007a6 +Block 0027 [ 73]: 8e0494b3ae831e6e +Block 0027 [ 74]: 0ca49adfe68d6e46 +Block 0027 [ 75]: e212b64996b824ec +Block 0027 [ 76]: 3bf7a8b725b94547 +Block 0027 [ 77]: 0c70cff5245765dc +Block 0027 [ 78]: b02efdf665ad2ce7 +Block 0027 [ 79]: add07405dc8f4bbb +Block 0027 [ 80]: 58bdb3ce3fa596ce +Block 0027 [ 81]: f46e119a901ef320 +Block 0027 [ 82]: 3d9b2c5765e6a815 +Block 0027 [ 83]: 8bc0e93794000096 +Block 0027 [ 84]: 3f2ef8e5cc121cf8 +Block 0027 [ 85]: 9c16d0dcf88aa1e4 +Block 0027 [ 86]: d12ace2887043640 +Block 0027 [ 87]: c8264013644d8e79 +Block 0027 [ 88]: 30e6157603308b2e +Block 0027 [ 89]: 5e5f2fe403cf044e +Block 0027 [ 90]: ccbad96f2d1ab536 +Block 0027 [ 91]: b036220cbfe7a195 +Block 0027 [ 92]: d80a67932c54111f +Block 0027 [ 93]: c3d187db6e9107e0 +Block 0027 [ 94]: 753b5db43665d4b8 +Block 0027 [ 95]: db0ff374dbaa1a09 +Block 0027 [ 96]: 514410f945dd118f +Block 0027 [ 97]: 57be8156f07071d6 +Block 0027 [ 98]: 20831c61b0b1efb2 +Block 0027 [ 99]: 66ffa9cc28cb58df +Block 0027 [100]: 5277e5ed3417bb29 +Block 0027 [101]: 74cd388100954b51 +Block 0027 [102]: 3f77adb63994e9cc +Block 0027 [103]: b114e4175adb6f67 +Block 0027 [104]: 584c55bf7efe2059 +Block 0027 [105]: f761b03aca13740b +Block 0027 [106]: f43ef2edb5b1c54f +Block 0027 [107]: f79c3eb23dbfc248 +Block 0027 [108]: 81cd4a75d42e1e27 +Block 0027 [109]: 3166561195b94ac4 +Block 0027 [110]: 826f483d5befa9ee +Block 0027 [111]: 1d9d8e376a6f48b8 +Block 0027 [112]: 25017bc5b9a0dd4c +Block 0027 [113]: 15f0fbf1e2f697ce +Block 0027 [114]: 9418301b7413dc13 +Block 0027 [115]: 6d4eb8ca015f7bd9 +Block 0027 [116]: 55cf81dd7bf59dab +Block 0027 [117]: 3acfb1bf664fac56 +Block 0027 [118]: 998d482b2c6fafff +Block 0027 [119]: ba9136aaac2f7dd8 +Block 0027 [120]: 3c057d31fb558e0e +Block 0027 [121]: c6b8fa4d73cfe12f +Block 0027 [122]: 4afd2610bce623fc +Block 0027 [123]: 8735afac2aef1c73 +Block 0027 [124]: d10aa2652a6b0eda +Block 0027 [125]: 66f953bde6d06ea7 +Block 0027 [126]: 39652bf53e0ee8e6 +Block 0027 [127]: 89a6db078ffde367 +Block 0028 [ 0]: 088aac2c3857a577 +Block 0028 [ 1]: a0b6fed09124ac4b +Block 0028 [ 2]: 362ffa99f02943c9 +Block 0028 [ 3]: 642585817f143c4a +Block 0028 [ 4]: 208cdb81bd9b3d70 +Block 0028 [ 5]: 0e8678f22bebe281 +Block 0028 [ 6]: f1c23f381e42bffe +Block 0028 [ 7]: 80239e3f68f08461 +Block 0028 [ 8]: a1a3854533eff47b +Block 0028 [ 9]: cef9e5e06b8f5d1c +Block 0028 [ 10]: 4b500e643d6e2a75 +Block 0028 [ 11]: cd40cd86e0c473d1 +Block 0028 [ 12]: a0f5a6551cf8b3a5 +Block 0028 [ 13]: 966f11064e299e87 +Block 0028 [ 14]: eb918189c4486e01 +Block 0028 [ 15]: c52bd0d591f11524 +Block 0028 [ 16]: d85699f0dd4d09cb +Block 0028 [ 17]: a998379519b903d2 +Block 0028 [ 18]: 8233976a1289a10d +Block 0028 [ 19]: a908225bc32e5bbb +Block 0028 [ 20]: b783103dd9dbcc87 +Block 0028 [ 21]: e179ccd6917bcd5c +Block 0028 [ 22]: ddca54948b1a3d91 +Block 0028 [ 23]: 02bd15a442b61f38 +Block 0028 [ 24]: f9a5a27a56dd5c77 +Block 0028 [ 25]: d1922e84331e4a15 +Block 0028 [ 26]: 0968424d0a903155 +Block 0028 [ 27]: fbb63f95b1027d55 +Block 0028 [ 28]: 9b1be6806db0be87 +Block 0028 [ 29]: b21ddfd09c727934 +Block 0028 [ 30]: 0d277d7fe3649aa5 +Block 0028 [ 31]: dae278bdc8f4e2c0 +Block 0028 [ 32]: 709a6d6c85fa293e +Block 0028 [ 33]: a842ba1029339035 +Block 0028 [ 34]: 168829ae6706aa0a +Block 0028 [ 35]: 3f984a5e4fdb2013 +Block 0028 [ 36]: adbe084b6c4dcc9a +Block 0028 [ 37]: 9700c392f4b4bf99 +Block 0028 [ 38]: a35e4e093e46bda8 +Block 0028 [ 39]: dc1d5c11087128cb +Block 0028 [ 40]: 6a88231cbb42f9ef +Block 0028 [ 41]: b06b59352d903657 +Block 0028 [ 42]: dd2d0e40b3c26c89 +Block 0028 [ 43]: 52394f18a73620fa +Block 0028 [ 44]: c4549f455acd5498 +Block 0028 [ 45]: 9a84a37bebc72e51 +Block 0028 [ 46]: 9ab08cb35b3a30b0 +Block 0028 [ 47]: bb110b5dbe5976d9 +Block 0028 [ 48]: ba0bbf9ea786754d +Block 0028 [ 49]: 13b07b4afb7dcee3 +Block 0028 [ 50]: fa94d4c9fcc3234d +Block 0028 [ 51]: 5adba4b8489fc0e2 +Block 0028 [ 52]: 1c0b608a49d31305 +Block 0028 [ 53]: 1ed3c3c41a036183 +Block 0028 [ 54]: f0f0b7a20ef30fb0 +Block 0028 [ 55]: 3303b0304d01be85 +Block 0028 [ 56]: f1c10f3b34586772 +Block 0028 [ 57]: 37bf3b20abe148dd +Block 0028 [ 58]: 08dd78d309816e36 +Block 0028 [ 59]: 606df5b9c82c35fa +Block 0028 [ 60]: a93bcb45203e4766 +Block 0028 [ 61]: 18e782252b192fe5 +Block 0028 [ 62]: a5b432fe27b22a6b +Block 0028 [ 63]: 815befa4dbfb304c +Block 0028 [ 64]: 44b8a91d7d1945c3 +Block 0028 [ 65]: 5fe76cf485a03ea3 +Block 0028 [ 66]: 6d39d90222a44ea5 +Block 0028 [ 67]: 5b6a2edd580ba743 +Block 0028 [ 68]: 440f7c6240bb750a +Block 0028 [ 69]: d2b85d4e3d80d7a3 +Block 0028 [ 70]: 4d28137d3f7ded74 +Block 0028 [ 71]: de28ddfce56388df +Block 0028 [ 72]: a2108b11c471e2d4 +Block 0028 [ 73]: 4298b69f391e4244 +Block 0028 [ 74]: ac65036956570a74 +Block 0028 [ 75]: c45a698f324c1be7 +Block 0028 [ 76]: 89bde3ac62e3798f +Block 0028 [ 77]: 9b5ba6bd4a39a824 +Block 0028 [ 78]: 06a98f7479d97126 +Block 0028 [ 79]: 9fb5f80568d1e565 +Block 0028 [ 80]: 25da5865646da062 +Block 0028 [ 81]: 056993803daee9e4 +Block 0028 [ 82]: d79b510e6a2497ad +Block 0028 [ 83]: e57cccea49ab9d2e +Block 0028 [ 84]: 0573cd7a8a9f686b +Block 0028 [ 85]: e0bdb3957003d683 +Block 0028 [ 86]: 4cf9e311e9eb0697 +Block 0028 [ 87]: 1de23f2b155fa2c6 +Block 0028 [ 88]: 713f6f60a9ac9366 +Block 0028 [ 89]: 40660511f45d715c +Block 0028 [ 90]: 3d044bc452be348e +Block 0028 [ 91]: b1a3d26f9109e36c +Block 0028 [ 92]: b70831d9b9ad1111 +Block 0028 [ 93]: 45df8d4fca891faa +Block 0028 [ 94]: d71dac9055088d48 +Block 0028 [ 95]: 13a504472229514e +Block 0028 [ 96]: 8d8bd291fe868bfd +Block 0028 [ 97]: 1f66d37590815231 +Block 0028 [ 98]: b859beb049bd4b66 +Block 0028 [ 99]: 89829ed4ffb5170b +Block 0028 [100]: 52e8375395a467d7 +Block 0028 [101]: dcca6c6931e8cdde +Block 0028 [102]: 00f90463fbd8fc5a +Block 0028 [103]: 0a5f42e01c5b667b +Block 0028 [104]: e46cf47f24bedf8e +Block 0028 [105]: 034b1dd0073689d1 +Block 0028 [106]: a612861d03331e5f +Block 0028 [107]: 68ac52c319095484 +Block 0028 [108]: 350bc6c86e048311 +Block 0028 [109]: c1ae658f7f8af644 +Block 0028 [110]: 3c4c6ec5e982d732 +Block 0028 [111]: 3a7dea9db1cf7e6f +Block 0028 [112]: a00f6c189a25561f +Block 0028 [113]: d705eb5c682176f3 +Block 0028 [114]: 8195aed15af503da +Block 0028 [115]: 6ea0bc3009ae67b9 +Block 0028 [116]: bb40bd941cefcc70 +Block 0028 [117]: 60f5cc6a11061338 +Block 0028 [118]: 51e2aef2ef59d60e +Block 0028 [119]: b70676b31c174219 +Block 0028 [120]: 6a2ba18907524637 +Block 0028 [121]: 9d7c64aefab310f4 +Block 0028 [122]: 997067b75f51b90e +Block 0028 [123]: dc3bfa47e95a49a6 +Block 0028 [124]: eaec533ed804b5b7 +Block 0028 [125]: 5547101d57e37aef +Block 0028 [126]: 799dfdd22151025a +Block 0028 [127]: 90cc16f473dba724 +Block 0029 [ 0]: 572f1144c32f7dab +Block 0029 [ 1]: c31548f5a66c3fb6 +Block 0029 [ 2]: ca490b90ff80f8de +Block 0029 [ 3]: b146116df806ef35 +Block 0029 [ 4]: 6d600a5153b6a469 +Block 0029 [ 5]: 2da404efd679d833 +Block 0029 [ 6]: dbeb8ec42cc45f9e +Block 0029 [ 7]: 88739fea24e59cca +Block 0029 [ 8]: ca9ff1be0ebab86c +Block 0029 [ 9]: 7cdd3f4397352ced +Block 0029 [ 10]: e41b1f1cf69b0cc6 +Block 0029 [ 11]: 7e8932d1c89a6ed9 +Block 0029 [ 12]: 046c06abfd2f94e4 +Block 0029 [ 13]: 2a9fdb55d946d935 +Block 0029 [ 14]: 1eb8f81ae510e952 +Block 0029 [ 15]: 081ea3edc46f7990 +Block 0029 [ 16]: f189d1aa25714359 +Block 0029 [ 17]: 2614f7d8b82ca013 +Block 0029 [ 18]: 58787f4689125662 +Block 0029 [ 19]: 1e9f16c6744d5785 +Block 0029 [ 20]: 171cf29f14bcee0c +Block 0029 [ 21]: 9bdbd58787ca6a0c +Block 0029 [ 22]: 375d6ea49ab671d6 +Block 0029 [ 23]: 2ccefc0df4a3db19 +Block 0029 [ 24]: 5e2503088efa948f +Block 0029 [ 25]: a78105b291f531e6 +Block 0029 [ 26]: 418f0c8f58232cfa +Block 0029 [ 27]: bb3151e53430f7c0 +Block 0029 [ 28]: c080596a5a33fdc0 +Block 0029 [ 29]: ab40cbac0a446b74 +Block 0029 [ 30]: a4d39e0180a840d8 +Block 0029 [ 31]: e486a9d4701353a1 +Block 0029 [ 32]: 1980896626f0214c +Block 0029 [ 33]: 5e2b407a0b8452aa +Block 0029 [ 34]: 0ff5680993263bea +Block 0029 [ 35]: d8f68bc617df56c1 +Block 0029 [ 36]: 7a09a3bc6e3f2115 +Block 0029 [ 37]: 3de17c917e933d70 +Block 0029 [ 38]: 7d5f24bffa2f5bb0 +Block 0029 [ 39]: 28dbfce634746d88 +Block 0029 [ 40]: 378806628dd28ec9 +Block 0029 [ 41]: 531568e58a28c770 +Block 0029 [ 42]: 31228f6199722c5a +Block 0029 [ 43]: 1ed5d3b9e627c8c4 +Block 0029 [ 44]: 608a0a1d3af68c46 +Block 0029 [ 45]: 973dcfd310312d48 +Block 0029 [ 46]: 813e441942018cb7 +Block 0029 [ 47]: 13dc1955ca36589b +Block 0029 [ 48]: 7e5ead81cdeda257 +Block 0029 [ 49]: 0f4367bbc560ef51 +Block 0029 [ 50]: 5dc3771d1decf53d +Block 0029 [ 51]: cfbec72c90933cf2 +Block 0029 [ 52]: c1a6158ea9e320aa +Block 0029 [ 53]: 33c06d86c91ed670 +Block 0029 [ 54]: 85467d056d9b4f04 +Block 0029 [ 55]: 4a039fca79da2fb7 +Block 0029 [ 56]: d3b862a69ea8455a +Block 0029 [ 57]: 8df2d2a5ef2884d2 +Block 0029 [ 58]: ded0120bb11702e2 +Block 0029 [ 59]: 7c9c6143da42a5a2 +Block 0029 [ 60]: 8f5e253428b8c855 +Block 0029 [ 61]: 5bf874199625330c +Block 0029 [ 62]: b93ce12a653f7d23 +Block 0029 [ 63]: 67a439b00b8e30f7 +Block 0029 [ 64]: c266ff756d585cb8 +Block 0029 [ 65]: 1e42a8b331e42a23 +Block 0029 [ 66]: 7a160fbda5d05715 +Block 0029 [ 67]: 12920934bcce7a7a +Block 0029 [ 68]: 9c3f9b96c11b8bc7 +Block 0029 [ 69]: 1597088b19ac236a +Block 0029 [ 70]: f0211c610b4e66ca +Block 0029 [ 71]: a6ecc66bab3fcf49 +Block 0029 [ 72]: 3c16a295685c5d8a +Block 0029 [ 73]: c0d3f25b295e2acc +Block 0029 [ 74]: 6a25ba69a766c8aa +Block 0029 [ 75]: 15dac6fcd74d2ca7 +Block 0029 [ 76]: d66ee559cf707ee1 +Block 0029 [ 77]: 376cf4b0a389b1d1 +Block 0029 [ 78]: 95b7cccaa711e62a +Block 0029 [ 79]: 045137ff521630b6 +Block 0029 [ 80]: e80209e08c0b77d4 +Block 0029 [ 81]: 6f7d6fdb47d99fa6 +Block 0029 [ 82]: ca327877c6ea5a6c +Block 0029 [ 83]: aa2e63dc8dfa2102 +Block 0029 [ 84]: 6d074e9ebe45b594 +Block 0029 [ 85]: 43b8a4e840ade226 +Block 0029 [ 86]: 270b901b540052b0 +Block 0029 [ 87]: 4dfddc88d72aeff2 +Block 0029 [ 88]: 8bf43db820319d2f +Block 0029 [ 89]: 331ca9d80f2ec3e0 +Block 0029 [ 90]: 060830ef760715bc +Block 0029 [ 91]: 8a8325d30998d393 +Block 0029 [ 92]: aeaa2f11004e419d +Block 0029 [ 93]: fa8d7e4b5e7ab8c8 +Block 0029 [ 94]: 1baabae972b14d49 +Block 0029 [ 95]: 76d1394e3ba03bd8 +Block 0029 [ 96]: a0a0953687d17827 +Block 0029 [ 97]: 051b864ddf100caf +Block 0029 [ 98]: 514e508badc56cbf +Block 0029 [ 99]: d7a8c578e557b1d5 +Block 0029 [100]: caed014550fae99b +Block 0029 [101]: 0836242ac75e3bdb +Block 0029 [102]: 64a6302124675915 +Block 0029 [103]: f1c003c69d8e303f +Block 0029 [104]: fa0d37a15250c31c +Block 0029 [105]: f8e1724351bba255 +Block 0029 [106]: 667b6b5f6cc79af9 +Block 0029 [107]: ddc2b84fd4bd3e79 +Block 0029 [108]: 50d991c07f996c66 +Block 0029 [109]: 02c92496716cf522 +Block 0029 [110]: 04ab44d396d9c9c4 +Block 0029 [111]: 96c9ae1f87be0ad7 +Block 0029 [112]: f7796644baaf6e90 +Block 0029 [113]: 0f249954ee125408 +Block 0029 [114]: b0d2205cb60bf289 +Block 0029 [115]: b9c5ec1762ebc57c +Block 0029 [116]: 31f029ed8dfc27dd +Block 0029 [117]: 0893c028683bf03b +Block 0029 [118]: e830266fd7940a0e +Block 0029 [119]: 5485c0e009244e39 +Block 0029 [120]: a0432c001528bd5b +Block 0029 [121]: b0d05b8d644891d9 +Block 0029 [122]: 83199ca64c50deef +Block 0029 [123]: f26cb6a7a2b998aa +Block 0029 [124]: 05006e76730d7ad4 +Block 0029 [125]: cb1707a747abe93c +Block 0029 [126]: ca20245fdf028ad9 +Block 0029 [127]: 0eaa767ba568dda0 +Block 0030 [ 0]: 35eec3a1bdd9dcdf +Block 0030 [ 1]: b6d1023e5b82a174 +Block 0030 [ 2]: 5a08eb6fc3b96090 +Block 0030 [ 3]: c22a681ecb82a62d +Block 0030 [ 4]: 5cf2c83f5feaf5bb +Block 0030 [ 5]: d58d528b0d9792a8 +Block 0030 [ 6]: e269e6a6101c9310 +Block 0030 [ 7]: 0c71f9e54ed5b711 +Block 0030 [ 8]: daa5bc93c7835c15 +Block 0030 [ 9]: 0e733d8eafc9075d +Block 0030 [ 10]: a98ad05698c3ebb9 +Block 0030 [ 11]: cad1a03b880005b8 +Block 0030 [ 12]: 264d34c610ff7458 +Block 0030 [ 13]: 8120a277df740d4a +Block 0030 [ 14]: 0f0df615f4690f6e +Block 0030 [ 15]: 460c0f1ebed7ba74 +Block 0030 [ 16]: 98b68c7ea1bfc4dc +Block 0030 [ 17]: 0c3770b51f0ef728 +Block 0030 [ 18]: bf5a91880cec573b +Block 0030 [ 19]: 00dec1a05964e9c8 +Block 0030 [ 20]: 91472db675baf6aa +Block 0030 [ 21]: 57b966cc8b970571 +Block 0030 [ 22]: fe83863b3b423d83 +Block 0030 [ 23]: c4511487b6e058bf +Block 0030 [ 24]: f866ad2a5e3ef155 +Block 0030 [ 25]: d00d1a3b6d7e2143 +Block 0030 [ 26]: 09ccaa4d528b7f6f +Block 0030 [ 27]: 443a1754209266bb +Block 0030 [ 28]: 0658c243f1d4e623 +Block 0030 [ 29]: 1f15e52d01020370 +Block 0030 [ 30]: 3d29b62d3a00e90f +Block 0030 [ 31]: c801d874113fb712 +Block 0030 [ 32]: 31f1a0f6fa357f53 +Block 0030 [ 33]: d8a3901a28ad6915 +Block 0030 [ 34]: 6514a01c4bba4865 +Block 0030 [ 35]: 96d805c9c39a91fa +Block 0030 [ 36]: 0b53a27c8f27fbba +Block 0030 [ 37]: 61135b0d7c903e3c +Block 0030 [ 38]: 02a6bcae74e89195 +Block 0030 [ 39]: 0183b5104d995a56 +Block 0030 [ 40]: 8e6f77bb221c1b2f +Block 0030 [ 41]: 94257e6f522ab7e9 +Block 0030 [ 42]: 7935f5eb602ae0f0 +Block 0030 [ 43]: c190b3613d89e268 +Block 0030 [ 44]: fa8027f56884201f +Block 0030 [ 45]: 8452d5d1e97c7b9a +Block 0030 [ 46]: a744289083376f31 +Block 0030 [ 47]: 955ea0a65d356d40 +Block 0030 [ 48]: c7e8ebd7c1035444 +Block 0030 [ 49]: 32ee6c0c63df2a06 +Block 0030 [ 50]: c9c50a65fdcfa136 +Block 0030 [ 51]: 7c3949da834717e4 +Block 0030 [ 52]: 749ee2a2e64ef7e2 +Block 0030 [ 53]: 354171f4cf739fe8 +Block 0030 [ 54]: 6acdc20bc8cfff15 +Block 0030 [ 55]: 16332b8970b0b731 +Block 0030 [ 56]: 39a030c4e7303b1e +Block 0030 [ 57]: 0a8c7141990a51fd +Block 0030 [ 58]: 4994ff90a28e39d3 +Block 0030 [ 59]: 2b5f4aa3c04531ec +Block 0030 [ 60]: b4ca924c16740047 +Block 0030 [ 61]: 907c8e5f7fdac555 +Block 0030 [ 62]: 663590f5934b831a +Block 0030 [ 63]: 4814910e7ae9334e +Block 0030 [ 64]: 42f7f287225986de +Block 0030 [ 65]: a0a7c150090e9296 +Block 0030 [ 66]: e280f437ed51ac54 +Block 0030 [ 67]: 3aa6abcd3a48d52f +Block 0030 [ 68]: 4f3401719d462eb9 +Block 0030 [ 69]: f834a32b293e01bd +Block 0030 [ 70]: c2810f77328910af +Block 0030 [ 71]: 627f172bf1a181f2 +Block 0030 [ 72]: 64d92ef494745621 +Block 0030 [ 73]: 2cf202565cc16c7d +Block 0030 [ 74]: 737df2974bcb0abf +Block 0030 [ 75]: acf603206208444f +Block 0030 [ 76]: fa6edee39a5297d3 +Block 0030 [ 77]: cc4623ae6d994d2a +Block 0030 [ 78]: fd3675f83fde5920 +Block 0030 [ 79]: 2bb1331f7bd2ea92 +Block 0030 [ 80]: fb52ae43c3c284dd +Block 0030 [ 81]: 4825a51327dd0b90 +Block 0030 [ 82]: 45bd078cd0197078 +Block 0030 [ 83]: 71c34f74f169fa00 +Block 0030 [ 84]: ef1ad43c0d37519f +Block 0030 [ 85]: be67d13de95a25ac +Block 0030 [ 86]: 5629c929e6e1b125 +Block 0030 [ 87]: 91af1482e10844f5 +Block 0030 [ 88]: dcf844cf39afaf79 +Block 0030 [ 89]: e47b0b0d29cfaf1f +Block 0030 [ 90]: ac6f4fee2312428c +Block 0030 [ 91]: 3c8a03041548a4d3 +Block 0030 [ 92]: c34935ad9024a98e +Block 0030 [ 93]: 3282a01b8e51f0b2 +Block 0030 [ 94]: 48c5ff2f324f1d28 +Block 0030 [ 95]: 6b35fc1a36a9ecf6 +Block 0030 [ 96]: a41e7feb2b71d512 +Block 0030 [ 97]: e94cecb45a14c029 +Block 0030 [ 98]: 5aa3f223b12c8de9 +Block 0030 [ 99]: c6d730ea67389b8c +Block 0030 [100]: d488cfc4528666c0 +Block 0030 [101]: 600f2ccc30b2208b +Block 0030 [102]: 8d5c68cd498eb292 +Block 0030 [103]: 5f909bb9f8fc4aae +Block 0030 [104]: 033d0c61f989ea55 +Block 0030 [105]: 8a5c19ca84fb2c16 +Block 0030 [106]: a1b0a2c8dcc38ad5 +Block 0030 [107]: 8603876466cd7a1d +Block 0030 [108]: 6a282ca5a8f9dee4 +Block 0030 [109]: 0ded75533e1fa4d0 +Block 0030 [110]: 605949936666b3a5 +Block 0030 [111]: 5103e954515f21a5 +Block 0030 [112]: bf640ae5e6d30198 +Block 0030 [113]: 501e4517d702b2bd +Block 0030 [114]: bbb83c6ed92fde1d +Block 0030 [115]: e24b7bf1f4048387 +Block 0030 [116]: 27a75bde0d4482a5 +Block 0030 [117]: 1fee004f4ea1caa8 +Block 0030 [118]: a35697de43230d57 +Block 0030 [119]: 8e1a3dee6d4fc04e +Block 0030 [120]: 7137020314cc8f22 +Block 0030 [121]: b7df79f263c55815 +Block 0030 [122]: 5ae620c98adcc163 +Block 0030 [123]: 6f3cdde1d908d6cd +Block 0030 [124]: 0df0a1525bb95f5a +Block 0030 [125]: 8ec8f8c55d340d8a +Block 0030 [126]: a350788bd3453cc8 +Block 0030 [127]: 6d8d2e9626e4a502 +Block 0031 [ 0]: 17f04bbc11e7dc2d +Block 0031 [ 1]: 56fa16e87ce4a877 +Block 0031 [ 2]: 414aacac928886f9 +Block 0031 [ 3]: c278b12dd24e8545 +Block 0031 [ 4]: 900bbae93aa324a2 +Block 0031 [ 5]: e565209f68e87880 +Block 0031 [ 6]: e12768818997bd3a +Block 0031 [ 7]: ec463ae609e2980d +Block 0031 [ 8]: ef1eda834df17eed +Block 0031 [ 9]: ea6c80cd4897d934 +Block 0031 [ 10]: 4759ca11b6b43585 +Block 0031 [ 11]: 0a700649d273d4ff +Block 0031 [ 12]: a0292650159af12c +Block 0031 [ 13]: 5c51f53ededcb01d +Block 0031 [ 14]: b1eb730446485b2a +Block 0031 [ 15]: 28e955476e94c4c8 +Block 0031 [ 16]: cda545bde429a516 +Block 0031 [ 17]: a163659a8296eb0f +Block 0031 [ 18]: 554ef34819b72063 +Block 0031 [ 19]: 593178b25e0048b1 +Block 0031 [ 20]: 466f63e300bd02de +Block 0031 [ 21]: cd588de4d77a35cb +Block 0031 [ 22]: d1ebe193548aa8ac +Block 0031 [ 23]: 660dfe5583b59609 +Block 0031 [ 24]: 7caa8441a5730345 +Block 0031 [ 25]: ccc888ec843789e4 +Block 0031 [ 26]: 9103953a6cf5c334 +Block 0031 [ 27]: 5c422704f88d39ba +Block 0031 [ 28]: c8be51040c12db07 +Block 0031 [ 29]: 84858398a40042ad +Block 0031 [ 30]: dfcaa049225d167c +Block 0031 [ 31]: 98f2cc9f4e4258d0 +Block 0031 [ 32]: f3fae3fa4db6bfb0 +Block 0031 [ 33]: 8bfa9c45c8a401d2 +Block 0031 [ 34]: ab66cd15c2f7af11 +Block 0031 [ 35]: 62e64fbaf0892bb1 +Block 0031 [ 36]: 078c18524a46e818 +Block 0031 [ 37]: 8f6b27dda6f09cb9 +Block 0031 [ 38]: a906170570ca0e20 +Block 0031 [ 39]: 44369154789511f4 +Block 0031 [ 40]: 4f859124dc22dc99 +Block 0031 [ 41]: d968707bbce205da +Block 0031 [ 42]: 7ff0fd984ff0a1c6 +Block 0031 [ 43]: b944db9fec0c5cb1 +Block 0031 [ 44]: 5f54ca0bce6d4739 +Block 0031 [ 45]: 3c1776b8a9b1e6a0 +Block 0031 [ 46]: f4243052fe6111ac +Block 0031 [ 47]: 09731689890469fd +Block 0031 [ 48]: ee8c13fe19a0fc7d +Block 0031 [ 49]: cca002284ad8f54c +Block 0031 [ 50]: 11e37c8ef20aae2d +Block 0031 [ 51]: 8af27a895dc48c82 +Block 0031 [ 52]: 807a0952da78d9cf +Block 0031 [ 53]: bad0e80749fe807e +Block 0031 [ 54]: 076a367d0ed3de20 +Block 0031 [ 55]: 4c8f43e0f8ea7a22 +Block 0031 [ 56]: 02000f1a9bd4d6d9 +Block 0031 [ 57]: 25f514284bf170c0 +Block 0031 [ 58]: ebf76a18430a3683 +Block 0031 [ 59]: 9d7f67409a259d66 +Block 0031 [ 60]: 3b50b369a4c34bd1 +Block 0031 [ 61]: f385dcc6299ce473 +Block 0031 [ 62]: 1d22709b4dd07705 +Block 0031 [ 63]: 92ff35c57fb9a700 +Block 0031 [ 64]: 0d50a1ac1ca57f4b +Block 0031 [ 65]: 7ee41d83eb6124ab +Block 0031 [ 66]: 5691ff7e8fa8e58a +Block 0031 [ 67]: b3e4310469c63efa +Block 0031 [ 68]: e24a8771310b52a2 +Block 0031 [ 69]: a733c130da1b32eb +Block 0031 [ 70]: 44c32f9cd6c3ed90 +Block 0031 [ 71]: 4b20203253583d31 +Block 0031 [ 72]: 996147e6477e0ad6 +Block 0031 [ 73]: d86db7272010bbeb +Block 0031 [ 74]: c7fc45ee0dec0947 +Block 0031 [ 75]: 25a1645723db3526 +Block 0031 [ 76]: 7da54338e579e32d +Block 0031 [ 77]: 5f29c738c150bb1f +Block 0031 [ 78]: 34dcc2d8376aeb0e +Block 0031 [ 79]: 1921234d4052d257 +Block 0031 [ 80]: 004f0640368bd0c2 +Block 0031 [ 81]: 89f931c647d8f9b4 +Block 0031 [ 82]: 1f4a7045198e2d2a +Block 0031 [ 83]: e49345423ffa0203 +Block 0031 [ 84]: 42f67a45efede962 +Block 0031 [ 85]: 51ebcf52c66ad71b +Block 0031 [ 86]: 8c93f1d50c18862c +Block 0031 [ 87]: f9cbe34de0b63e22 +Block 0031 [ 88]: dc02d2c3e2a0e1d2 +Block 0031 [ 89]: f8fe0b8ce04e52f2 +Block 0031 [ 90]: 08b3785b2ed9f6b4 +Block 0031 [ 91]: a39851d6ab2f3f70 +Block 0031 [ 92]: b69af0d633f40c6e +Block 0031 [ 93]: 9a1aaa50cc9336ca +Block 0031 [ 94]: 64455ddbd424fb68 +Block 0031 [ 95]: 512cadd6b83a7da9 +Block 0031 [ 96]: 74439d194a299b98 +Block 0031 [ 97]: 09e7891d17775e57 +Block 0031 [ 98]: 863f478b9c56d481 +Block 0031 [ 99]: 0156ad653deb9a3a +Block 0031 [100]: 35ef7b185e953464 +Block 0031 [101]: bb34f03813de8918 +Block 0031 [102]: f73a6350becbab3b +Block 0031 [103]: a1dedf24e6b0e9aa +Block 0031 [104]: b61134a8ce3b8f8d +Block 0031 [105]: 5c24eb885f2838ec +Block 0031 [106]: c74db3229966d2b3 +Block 0031 [107]: 7f146ecea2afb556 +Block 0031 [108]: b59cbee73722bfe7 +Block 0031 [109]: 97a08d2807abf018 +Block 0031 [110]: a202a7d3bc2c1631 +Block 0031 [111]: f0f2c48ba5fb6065 +Block 0031 [112]: 669d543a28958dca +Block 0031 [113]: 3384de016a7ddbbf +Block 0031 [114]: a5881297663e6707 +Block 0031 [115]: a70d745c38904dc4 +Block 0031 [116]: 9f4d179cc16fe173 +Block 0031 [117]: aa6771a8009e295e +Block 0031 [118]: fb1a4e991991c6f3 +Block 0031 [119]: f2505e38b73a62ea +Block 0031 [120]: b3016d3b6191fc27 +Block 0031 [121]: 9fb9d1486ebe88c8 +Block 0031 [122]: a37b0ffd9bee0c99 +Block 0031 [123]: ff109aeefd852972 +Block 0031 [124]: 7f7e2156c126d827 +Block 0031 [125]: 8d0ed8ad89cac26e +Block 0031 [126]: ca21425508286511 +Block 0031 [127]: c5a87589413a5f41 + + After pass 1: +Block 0000 [ 0]: e9550cb7441be892 +Block 0000 [ 1]: a3fd96fddca6f69d +Block 0000 [ 2]: 0a0727a61a894945 +Block 0000 [ 3]: 11fe2d86c258ae46 +Block 0000 [ 4]: a9ef7448a0ccab00 +Block 0000 [ 5]: 06d8a79699b1e047 +Block 0000 [ 6]: 7fcb9ae69b0aaac7 +Block 0000 [ 7]: 69343012c3076ea1 +Block 0000 [ 8]: 6e00d67ace2ec3f8 +Block 0000 [ 9]: a49d58c0eba07a30 +Block 0000 [ 10]: 90926900f4773099 +Block 0000 [ 11]: a3da3441347fe815 +Block 0000 [ 12]: a79e6d347b657244 +Block 0000 [ 13]: 4285744253dfd00e +Block 0000 [ 14]: aa1fa5ed81b624df +Block 0000 [ 15]: 3d9b7373f8597467 +Block 0000 [ 16]: bd4379f32f94f0fc +Block 0000 [ 17]: 40355ac4178d53f3 +Block 0000 [ 18]: bd78c72572a6af61 +Block 0000 [ 19]: 281f99f8dc8d9050 +Block 0000 [ 20]: c97e563c83178d2f +Block 0000 [ 21]: 8d9d1e26b9db8034 +Block 0000 [ 22]: 3902197d294ef4aa +Block 0000 [ 23]: 1b57f06a2a0b709f +Block 0000 [ 24]: 277f75af34316bac +Block 0000 [ 25]: 32bc11625c1b2751 +Block 0000 [ 26]: a76f4d56e2bbd31c +Block 0000 [ 27]: 4383d549b9fee150 +Block 0000 [ 28]: ec4da4283ee19a25 +Block 0000 [ 29]: db40a685d75a97eb +Block 0000 [ 30]: f7e95a4293a58b67 +Block 0000 [ 31]: 459ce6d7ad8fb97e +Block 0000 [ 32]: e5da1d30fe9710fb +Block 0000 [ 33]: d47c35f1319eb43f +Block 0000 [ 34]: 4a3baab52a5da348 +Block 0000 [ 35]: 581d9990ca7d2c5c +Block 0000 [ 36]: f035855e7c5a0dba +Block 0000 [ 37]: 11729bc0a2cc2e05 +Block 0000 [ 38]: 2439be4b37549988 +Block 0000 [ 39]: 15fc82bfc2bc04e4 +Block 0000 [ 40]: f1560d8eafded40c +Block 0000 [ 41]: d139264a0bca6726 +Block 0000 [ 42]: 3ebd6bebc32c796f +Block 0000 [ 43]: 3c6dab5ba747707a +Block 0000 [ 44]: 83ec6820e1b375c7 +Block 0000 [ 45]: 0660dfa463fc9981 +Block 0000 [ 46]: a38630c563e0783d +Block 0000 [ 47]: bc7d652ca8672d8e +Block 0000 [ 48]: bfb5d9999448c339 +Block 0000 [ 49]: e56e2a8aaf192956 +Block 0000 [ 50]: 2d444595302a6f8f +Block 0000 [ 51]: 7ee4948d1aa843e8 +Block 0000 [ 52]: 40225ab51ab422af +Block 0000 [ 53]: 30c483daeb628c24 +Block 0000 [ 54]: 9025b7151da6425c +Block 0000 [ 55]: 8d032f891b7d9f4c +Block 0000 [ 56]: 769969c276f48220 +Block 0000 [ 57]: a935b2664cb6de87 +Block 0000 [ 58]: 388e764dc3e2db3a +Block 0000 [ 59]: 91191a07635348d1 +Block 0000 [ 60]: f2141c06c59d34f4 +Block 0000 [ 61]: 75cefd44bf8d34cc +Block 0000 [ 62]: 564f6e178f57da02 +Block 0000 [ 63]: b0288d8fb8ec24c6 +Block 0000 [ 64]: 53f404b6bada7fd5 +Block 0000 [ 65]: ce387b78af2e7da9 +Block 0000 [ 66]: 961019ec3bf5a7ba +Block 0000 [ 67]: 9c707e03c2138397 +Block 0000 [ 68]: b6e4104f00124c70 +Block 0000 [ 69]: f3ffa2968fa42fe1 +Block 0000 [ 70]: b41ac152d1da73dd +Block 0000 [ 71]: 546289e70071e674 +Block 0000 [ 72]: 6937af57f76368e8 +Block 0000 [ 73]: daffc82f1b00a6ec +Block 0000 [ 74]: dc8a1f1f6c1a3769 +Block 0000 [ 75]: 20d75bd00bfe8391 +Block 0000 [ 76]: 83dcbf84758e8b00 +Block 0000 [ 77]: 3c52616b112557bd +Block 0000 [ 78]: a6416f1995e460da +Block 0000 [ 79]: b0a1591f1e34c1d8 +Block 0000 [ 80]: 4602f24366054da3 +Block 0000 [ 81]: 808e8b80d660df50 +Block 0000 [ 82]: 93f7ff5247d8f563 +Block 0000 [ 83]: be9bd2e8847c9cfd +Block 0000 [ 84]: 78fe2bda93162b53 +Block 0000 [ 85]: 9ec83bb297e1f2ee +Block 0000 [ 86]: b90706d2bf061ff3 +Block 0000 [ 87]: 186c3646c266ca2c +Block 0000 [ 88]: 628050acddf15f79 +Block 0000 [ 89]: cc88eb65b6f03fec +Block 0000 [ 90]: de96108afee33c3e +Block 0000 [ 91]: c156d449313bfd02 +Block 0000 [ 92]: 58a2c3a3fc41adae +Block 0000 [ 93]: 3dfeb8dff8aa5b80 +Block 0000 [ 94]: a28048dfd71dc8d8 +Block 0000 [ 95]: b0d8d6bbc430f3ee +Block 0000 [ 96]: cbf2194f578d6db2 +Block 0000 [ 97]: 01ccb4d39161aac4 +Block 0000 [ 98]: f44fe5fff3ae387e +Block 0000 [ 99]: b1813dfa99c6953d +Block 0000 [100]: 5bca760ee97db409 +Block 0000 [101]: 3ce9ff5ec3099a35 +Block 0000 [102]: 9e1cb135ab1b42a0 +Block 0000 [103]: b251228dd5eb5ae0 +Block 0000 [104]: 66304590c17b8117 +Block 0000 [105]: a46257f0e6f256ed +Block 0000 [106]: 14e299ab4f2d187e +Block 0000 [107]: 24228dec25e8772d +Block 0000 [108]: f8f029106762c0d7 +Block 0000 [109]: 2f261305d9b518d1 +Block 0000 [110]: c6b27f4786596697 +Block 0000 [111]: 7e9a5e51425764ad +Block 0000 [112]: f6674f15be253b39 +Block 0000 [113]: 0922afec1f60f831 +Block 0000 [114]: 6c729428d9d0a23f +Block 0000 [115]: b673cf5b43402f36 +Block 0000 [116]: 9010b9a37fa13310 +Block 0000 [117]: 7b3b5f677ab6c0a1 +Block 0000 [118]: 6f0099ca29449c51 +Block 0000 [119]: 08941902d462588f +Block 0000 [120]: e7180fff290542e9 +Block 0000 [121]: 0ee4cd5dfee583ec +Block 0000 [122]: 7a60e32fe35b330e +Block 0000 [123]: daf1ffa261adc82f +Block 0000 [124]: 1a160254df704091 +Block 0000 [125]: ac5bf3535385f59a +Block 0000 [126]: f9decabf3ad9b4a4 +Block 0000 [127]: f7654a3f226adfa7 +Block 0001 [ 0]: bc459e0eea13a1f3 +Block 0001 [ 1]: 49eef4a59a5aa372 +Block 0001 [ 2]: 401c002334495016 +Block 0001 [ 3]: 88b39619877d25ff +Block 0001 [ 4]: 9f7cb547d36211b6 +Block 0001 [ 5]: 6cc6287d95e294a8 +Block 0001 [ 6]: d0e2fa02854d590e +Block 0001 [ 7]: e0370ab791652bac +Block 0001 [ 8]: eacbc294d4a30a44 +Block 0001 [ 9]: aeb62d61bc7705c0 +Block 0001 [ 10]: 1c6ec07f7cea9f47 +Block 0001 [ 11]: 6417fa6afaa2c5cf +Block 0001 [ 12]: c2f9504724c3bc92 +Block 0001 [ 13]: 83f7e665d693c1a0 +Block 0001 [ 14]: 0c6380b41a0201b9 +Block 0001 [ 15]: 7579e63288ae9d3a +Block 0001 [ 16]: d82ca980319e8378 +Block 0001 [ 17]: 5e71e4d4f0c94f01 +Block 0001 [ 18]: e2ae1815182d371a +Block 0001 [ 19]: 4dc20804ef3373b3 +Block 0001 [ 20]: ce746d95dc63549d +Block 0001 [ 21]: 5b0dca46deda0e87 +Block 0001 [ 22]: ed85a89304dee634 +Block 0001 [ 23]: ac266927481f3736 +Block 0001 [ 24]: cb290eb0eee448f7 +Block 0001 [ 25]: 6ed16ca8b8a80515 +Block 0001 [ 26]: 7ddef21f6d32effb +Block 0001 [ 27]: a698cfebc42f8b78 +Block 0001 [ 28]: 586ac3c8ca8a541b +Block 0001 [ 29]: fe5d850bfd7dc57b +Block 0001 [ 30]: 9118360b7d2bc4c9 +Block 0001 [ 31]: 80c528b10fb625d7 +Block 0001 [ 32]: 747b7d55cd6d5f31 +Block 0001 [ 33]: c5d7ead5b3d77159 +Block 0001 [ 34]: 0b587e890235e645 +Block 0001 [ 35]: c2484fa9b0f2be70 +Block 0001 [ 36]: 1c8a3c5bf70785db +Block 0001 [ 37]: f0eee081b3f166e3 +Block 0001 [ 38]: 53107934144a5cd8 +Block 0001 [ 39]: 0e460822accb4724 +Block 0001 [ 40]: 9fa234759c8ca51b +Block 0001 [ 41]: 73398d40f1ad7336 +Block 0001 [ 42]: ac0ffffe28ec0bd6 +Block 0001 [ 43]: 126739a06ed1fabb +Block 0001 [ 44]: 778065fea1b348d4 +Block 0001 [ 45]: 9e149c4d19c48b7d +Block 0001 [ 46]: 3ab9809fb1e88ea4 +Block 0001 [ 47]: 24edb1342bd45b11 +Block 0001 [ 48]: 794fd23b6fd32b33 +Block 0001 [ 49]: a793ee83b72c1c48 +Block 0001 [ 50]: 89b55cdc62adb18b +Block 0001 [ 51]: ccec9d11f1f473aa +Block 0001 [ 52]: ead0ddbdcf12d5da +Block 0001 [ 53]: 7f1b64e493de3a42 +Block 0001 [ 54]: 6b9a688eacb29c53 +Block 0001 [ 55]: 041ff10a56bfd124 +Block 0001 [ 56]: 11bcdfea9f4778ba +Block 0001 [ 57]: 5c3452982c95f36d +Block 0001 [ 58]: 78043a6334282ade +Block 0001 [ 59]: 2e6b32801d204496 +Block 0001 [ 60]: eda1e9230c69988f +Block 0001 [ 61]: b1e38ba52270d65a +Block 0001 [ 62]: 59867bea79e81eea +Block 0001 [ 63]: 4950d787032cab9c +Block 0001 [ 64]: a2e26164012c30ac +Block 0001 [ 65]: 47ffcfe006607e62 +Block 0001 [ 66]: 75e57bb2c0fecc99 +Block 0001 [ 67]: 8377f8cb872ff188 +Block 0001 [ 68]: 4f2f480425512165 +Block 0001 [ 69]: f11118f5c806ed9f +Block 0001 [ 70]: 5371a6d76715055a +Block 0001 [ 71]: dc71cfd303bcbbed +Block 0001 [ 72]: 432d3e34de79ea75 +Block 0001 [ 73]: b3c05a6624da3011 +Block 0001 [ 74]: b2b40d56350b73fe +Block 0001 [ 75]: 3f2065a4bdde3ef8 +Block 0001 [ 76]: d5d8a80cc0ace697 +Block 0001 [ 77]: 4f3bb1e4743984e7 +Block 0001 [ 78]: 52025366f9be8b92 +Block 0001 [ 79]: e476f5f80de3d2f3 +Block 0001 [ 80]: 4342bb1beb580982 +Block 0001 [ 81]: 67990f5680d612b2 +Block 0001 [ 82]: e2b764c69f871d05 +Block 0001 [ 83]: 5c115c46a9d77e7f +Block 0001 [ 84]: 1277b1cc8d0822a2 +Block 0001 [ 85]: 87483e53ebb66247 +Block 0001 [ 86]: f41b286b6678a395 +Block 0001 [ 87]: 39be6db92f34b25d +Block 0001 [ 88]: 05c798faca043d57 +Block 0001 [ 89]: 339176afa15c57e4 +Block 0001 [ 90]: addfacb21e7b3899 +Block 0001 [ 91]: 347baed2dc7e123e +Block 0001 [ 92]: c8e17e46dd176bf4 +Block 0001 [ 93]: ccb8aad34aa26683 +Block 0001 [ 94]: 6ebf6b0c3d9dca90 +Block 0001 [ 95]: aa78863c92270242 +Block 0001 [ 96]: 4b045aa366cce2d8 +Block 0001 [ 97]: 5d81d95a2df235c3 +Block 0001 [ 98]: bde894f1a74a76dc +Block 0001 [ 99]: ed38f15b1391dd95 +Block 0001 [100]: cabbae2dc702f85e +Block 0001 [101]: 31af49571ab46d58 +Block 0001 [102]: f6018e52178a3abd +Block 0001 [103]: 0b931029db37f1f3 +Block 0001 [104]: d335f2a1a4506271 +Block 0001 [105]: 47dee6e4d062a924 +Block 0001 [106]: 712500aad5917547 +Block 0001 [107]: ce52485b1c1c0c96 +Block 0001 [108]: 5201c069725f1e4a +Block 0001 [109]: 0baed79cad097c37 +Block 0001 [110]: 5ac9a6873ff1723c +Block 0001 [111]: 981afe97c87bf63c +Block 0001 [112]: c663cda5fc535e6f +Block 0001 [113]: c420f671a527e73e +Block 0001 [114]: 466add63b316c409 +Block 0001 [115]: 94b0804574e0bd8e +Block 0001 [116]: aa686639b37e98dc +Block 0001 [117]: 14907009742c9497 +Block 0001 [118]: e113a3c0fce07bbb +Block 0001 [119]: 7fc91c5d001b7b66 +Block 0001 [120]: d8857f78a9765b73 +Block 0001 [121]: 7b95fd0a7f2c2019 +Block 0001 [122]: 7d4b660fef058423 +Block 0001 [123]: d09a7312abec290a +Block 0001 [124]: 4526d55249dbaef2 +Block 0001 [125]: ed73e279750b1079 +Block 0001 [126]: 104eda79f420b860 +Block 0001 [127]: 8c421efbfcb0e58d +Block 0002 [ 0]: 8ea6f3005dc0961e +Block 0002 [ 1]: ec57014cac3899fa +Block 0002 [ 2]: 0a17bf60fd070a86 +Block 0002 [ 3]: ced6318e68a05ee3 +Block 0002 [ 4]: 3102b5632405b609 +Block 0002 [ 5]: 945825ed9f453504 +Block 0002 [ 6]: 46db680acf41a392 +Block 0002 [ 7]: eb65ee89868ba4fd +Block 0002 [ 8]: a5f85f09d827ec4b +Block 0002 [ 9]: 4d96ccbe256e70d0 +Block 0002 [ 10]: 6135bfdc5221cd76 +Block 0002 [ 11]: 7cdc62f1d3090016 +Block 0002 [ 12]: 4b8dfa10673895b0 +Block 0002 [ 13]: 81730e01622d73e7 +Block 0002 [ 14]: 0ed2a4e5cfd12538 +Block 0002 [ 15]: 76e6f0a376770db5 +Block 0002 [ 16]: 1f264bfa43ab6bcb +Block 0002 [ 17]: 76018b12515c9f17 +Block 0002 [ 18]: 4dabcc6ba9eef055 +Block 0002 [ 19]: 1d9b4b208308d0a5 +Block 0002 [ 20]: a5416a049c3e72b0 +Block 0002 [ 21]: 2ddd518f7db7c3eb +Block 0002 [ 22]: 82fc34c909e9d5cc +Block 0002 [ 23]: 0b7e631ea36dc9c7 +Block 0002 [ 24]: b4af6334fe3f2bf2 +Block 0002 [ 25]: 9900eef4c64644cd +Block 0002 [ 26]: 3023e322496d1d24 +Block 0002 [ 27]: b522c4417bd3e4a6 +Block 0002 [ 28]: e1f0b6d0e64ddc94 +Block 0002 [ 29]: 89391fd4c6bb340f +Block 0002 [ 30]: 1266543a5647e447 +Block 0002 [ 31]: 7a7af30f1460bedc +Block 0002 [ 32]: 0571774e124ed17a +Block 0002 [ 33]: c90b8125f3e09457 +Block 0002 [ 34]: 2c666a53b7d80823 +Block 0002 [ 35]: f03a8512d71da199 +Block 0002 [ 36]: 84501a2dc0eac1ca +Block 0002 [ 37]: 4c6ff369671d3097 +Block 0002 [ 38]: e019828aef77eb48 +Block 0002 [ 39]: 08324da56e7ec80c +Block 0002 [ 40]: 47c3fea7a541ad83 +Block 0002 [ 41]: bcd3e94fbfa1a121 +Block 0002 [ 42]: 914a7ea99ef847fd +Block 0002 [ 43]: 49d81b057bdb45a5 +Block 0002 [ 44]: 8d579d6ad1c0e128 +Block 0002 [ 45]: 1d5a3539225b32d1 +Block 0002 [ 46]: 70b078ed8c701e4e +Block 0002 [ 47]: b35f51f72d549a13 +Block 0002 [ 48]: 005cf45452fd26c1 +Block 0002 [ 49]: 795b4bb077b874d1 +Block 0002 [ 50]: 4d71a5da9eb1cba7 +Block 0002 [ 51]: 3187129a79216fc2 +Block 0002 [ 52]: ac146ec59c7e5314 +Block 0002 [ 53]: 85bafe512fac7623 +Block 0002 [ 54]: 60550bce77e85eca +Block 0002 [ 55]: 3ab28c531280f09b +Block 0002 [ 56]: 9b11b44f7ccb1823 +Block 0002 [ 57]: 668f4045e06ba4c3 +Block 0002 [ 58]: 879f1b67e5d8c5b8 +Block 0002 [ 59]: cc60238d7597d594 +Block 0002 [ 60]: 4e2a2cb3015a0467 +Block 0002 [ 61]: 7ef9528b0ae50aae +Block 0002 [ 62]: 7d8beaec217e81d8 +Block 0002 [ 63]: 348b9275fbfa1ff5 +Block 0002 [ 64]: ed1fb63138e1f50d +Block 0002 [ 65]: 9562d27cab09e659 +Block 0002 [ 66]: d806069af50f7794 +Block 0002 [ 67]: 8d0aff57a148caaf +Block 0002 [ 68]: 421250e9be352352 +Block 0002 [ 69]: 2b4fe8b0e3bf35e4 +Block 0002 [ 70]: 18211dcc5cc9deca +Block 0002 [ 71]: 540b72659f89c190 +Block 0002 [ 72]: 670c27e851cf8a60 +Block 0002 [ 73]: 71acec32b29a2caa +Block 0002 [ 74]: 0450e5f6eee18092 +Block 0002 [ 75]: a34227efcd51b86b +Block 0002 [ 76]: 5771a997c605dc6c +Block 0002 [ 77]: bf0edb63ee2e0696 +Block 0002 [ 78]: 22ff838a15ca6ff2 +Block 0002 [ 79]: e7d11842b9259ad8 +Block 0002 [ 80]: 9cc9014a99f2611f +Block 0002 [ 81]: 0712115fb800308e +Block 0002 [ 82]: b96fc2b34d47d68e +Block 0002 [ 83]: 09a3e5aebd720b56 +Block 0002 [ 84]: b8d5d104ab68646e +Block 0002 [ 85]: c73444d9a5bd5654 +Block 0002 [ 86]: d47e4cc54ffcaa43 +Block 0002 [ 87]: d8a7927fb3c75190 +Block 0002 [ 88]: 29a0cd526e8dbb27 +Block 0002 [ 89]: b686f1b621196790 +Block 0002 [ 90]: 631b2f9b530a956b +Block 0002 [ 91]: 4e18d6969ba0469d +Block 0002 [ 92]: 481c27be7030bf9d +Block 0002 [ 93]: 70c84dbe84d309a4 +Block 0002 [ 94]: 256841264bac123a +Block 0002 [ 95]: f908a6a11dfb21a6 +Block 0002 [ 96]: 6b4b356c30c62feb +Block 0002 [ 97]: 3dd9a072eecbe065 +Block 0002 [ 98]: c1d53bba775c35f0 +Block 0002 [ 99]: b8df34d4f7524d02 +Block 0002 [100]: 7b0deca6efdcc24d +Block 0002 [101]: 41cd9462a7992850 +Block 0002 [102]: 09e79c11f183be33 +Block 0002 [103]: 790cb6ea025ffb3f +Block 0002 [104]: 8698c499823ef322 +Block 0002 [105]: 58420a3826a66ddd +Block 0002 [106]: 3960ba6dcab5a023 +Block 0002 [107]: 4ce166e82c51c7f4 +Block 0002 [108]: 5bad585f7b816ff0 +Block 0002 [109]: 16f986b7b02f37d8 +Block 0002 [110]: 2fdf5d3c4e2fe48f +Block 0002 [111]: ab8562fe42ed05ed +Block 0002 [112]: e877cee731f0bdd1 +Block 0002 [113]: 0b4db86764860ebe +Block 0002 [114]: a391de7c10742d2a +Block 0002 [115]: 51e83db8e0dbffae +Block 0002 [116]: aa61f4616c0435bf +Block 0002 [117]: 6aa788d842071eb4 +Block 0002 [118]: 6f26ca76fe57f044 +Block 0002 [119]: 7fbefcb634977e04 +Block 0002 [120]: 040c1c551559d36e +Block 0002 [121]: 815326b814713dce +Block 0002 [122]: 21f8873f3284b327 +Block 0002 [123]: a7e2847d61bc0562 +Block 0002 [124]: 8aee0731ab4fec14 +Block 0002 [125]: 9391faf54a0cee1d +Block 0002 [126]: 6de600cf8c504229 +Block 0002 [127]: 51c20222f3371f26 +Block 0003 [ 0]: defbdd269247dccf +Block 0003 [ 1]: a917d017cd53d490 +Block 0003 [ 2]: c3fc89bccf53c160 +Block 0003 [ 3]: 7376b84e5a2841c0 +Block 0003 [ 4]: 27b9260af8a1fa18 +Block 0003 [ 5]: 0cd10e63618be28c +Block 0003 [ 6]: 688e75fad0999fa0 +Block 0003 [ 7]: 2f87962677d4456a +Block 0003 [ 8]: e6e8a06140ae4a8f +Block 0003 [ 9]: 43727e81157c3358 +Block 0003 [ 10]: 5f1af471ccecfecd +Block 0003 [ 11]: 282523c737f3ce59 +Block 0003 [ 12]: 4a4b20d1ca4a9f17 +Block 0003 [ 13]: 23f214ca8b99105d +Block 0003 [ 14]: 7f0bfc572d230507 +Block 0003 [ 15]: 921657836a1dc6e2 +Block 0003 [ 16]: d973ca4bd087d756 +Block 0003 [ 17]: 68dee0aaf60192c9 +Block 0003 [ 18]: f6b7b805b67d4c7d +Block 0003 [ 19]: f8e1402819b76190 +Block 0003 [ 20]: e45aee5f37907bf1 +Block 0003 [ 21]: 74d4bbcc731d7953 +Block 0003 [ 22]: 9c538094d34703c0 +Block 0003 [ 23]: 049f293341fd0f49 +Block 0003 [ 24]: 56d1af89b6934f7b +Block 0003 [ 25]: c06d5f12a9b959a0 +Block 0003 [ 26]: 0a738ab49d7f1140 +Block 0003 [ 27]: 4974722a08b9fb21 +Block 0003 [ 28]: 5515a5cdb9883b82 +Block 0003 [ 29]: 6ef52e56c7851f82 +Block 0003 [ 30]: 188325e68f1cd2a6 +Block 0003 [ 31]: 32a4559fe61d175e +Block 0003 [ 32]: e05943e39bc77ba1 +Block 0003 [ 33]: c63d13028907a676 +Block 0003 [ 34]: d2e643ec53311e10 +Block 0003 [ 35]: 831b2fd9c1d12049 +Block 0003 [ 36]: ec518b7b076fda55 +Block 0003 [ 37]: d0365d93bf0a67d8 +Block 0003 [ 38]: d12bab124b767c5c +Block 0003 [ 39]: 6debf3c5a3a87481 +Block 0003 [ 40]: 9b76bacb4feda29d +Block 0003 [ 41]: 972e482832ed1908 +Block 0003 [ 42]: f321cb74fc7ff73c +Block 0003 [ 43]: fef7f9306e1cadfe +Block 0003 [ 44]: 78bcc32d5bd4a468 +Block 0003 [ 45]: 05bb30b58e106a1c +Block 0003 [ 46]: 458e661c3edbb4f2 +Block 0003 [ 47]: c815023fe10e2953 +Block 0003 [ 48]: 5b9afadba0a0e2c2 +Block 0003 [ 49]: 9060bd4a68ba7683 +Block 0003 [ 50]: bd96ae69c1b0579c +Block 0003 [ 51]: 3c600e6edc5fb733 +Block 0003 [ 52]: 44f2242a97981614 +Block 0003 [ 53]: 2b8f3f6bcc388531 +Block 0003 [ 54]: 91975b293e5949ae +Block 0003 [ 55]: 7cd6d80733367b44 +Block 0003 [ 56]: 2893286bf377e181 +Block 0003 [ 57]: 9e9f576eb644c715 +Block 0003 [ 58]: aa0c95c6c0a9480a +Block 0003 [ 59]: ea0d7c84fb9073c2 +Block 0003 [ 60]: 6ea5293ca5a921dd +Block 0003 [ 61]: 00dbac8af8a1e88a +Block 0003 [ 62]: c29aa3e9e50972de +Block 0003 [ 63]: 0268e6c5804c49f2 +Block 0003 [ 64]: f6a3c6f98b724c4d +Block 0003 [ 65]: 2d179d15f41417c0 +Block 0003 [ 66]: 4a857320b45dac41 +Block 0003 [ 67]: 37b8660f7f759f67 +Block 0003 [ 68]: 3b37a0016af45092 +Block 0003 [ 69]: fd1a3627e2181f91 +Block 0003 [ 70]: 94136a9d4c1638b6 +Block 0003 [ 71]: 96bf6341988daf8f +Block 0003 [ 72]: ba9d427269beb6d8 +Block 0003 [ 73]: 338d43784b16339e +Block 0003 [ 74]: 258c9e2de5604f9f +Block 0003 [ 75]: bcc5d156fa5d3ee9 +Block 0003 [ 76]: f9ea8ceb3436b998 +Block 0003 [ 77]: 6681d34ea3bd3ac2 +Block 0003 [ 78]: 21230fcd512e1244 +Block 0003 [ 79]: a4c206a99699b869 +Block 0003 [ 80]: 23ca11323d64870f +Block 0003 [ 81]: 69d4bd4b5aecd7bc +Block 0003 [ 82]: 7926fc7c4fd85592 +Block 0003 [ 83]: f9981dc25da060dc +Block 0003 [ 84]: a56518aab4d26c6c +Block 0003 [ 85]: 5ebd99314579c81a +Block 0003 [ 86]: 697e53bcc2ce74da +Block 0003 [ 87]: ea7023bbe8c224b7 +Block 0003 [ 88]: 02ca6e8b3f6245d7 +Block 0003 [ 89]: bc369564806f736c +Block 0003 [ 90]: 74b2b79ff4a09b6e +Block 0003 [ 91]: ef509a784173335a +Block 0003 [ 92]: 7fdfed2b6024ecfe +Block 0003 [ 93]: f94c2475c3c2d394 +Block 0003 [ 94]: 70b5e9ca66108b36 +Block 0003 [ 95]: d833ab68bb44ffc4 +Block 0003 [ 96]: f77ece8ea46e2580 +Block 0003 [ 97]: 1ae7df31658e35a2 +Block 0003 [ 98]: ab0db62f9e77a1be +Block 0003 [ 99]: c46e14bf97493e69 +Block 0003 [100]: 5e103177d0a282df +Block 0003 [101]: 1d407aa0d722553c +Block 0003 [102]: 9a1b070f453e77eb +Block 0003 [103]: 7a49e2ccb043e84b +Block 0003 [104]: 128fa604e2049e13 +Block 0003 [105]: e8b0460a76453345 +Block 0003 [106]: ad6bbcbd5aad6663 +Block 0003 [107]: 86602cf6d3c04a63 +Block 0003 [108]: ddf5ed92306f5bb8 +Block 0003 [109]: a6d8b31feff6b5d5 +Block 0003 [110]: 0b31d395a152d5f2 +Block 0003 [111]: 8e19f1722242b1c7 +Block 0003 [112]: 4a2789d0abf4b6da +Block 0003 [113]: 91c7ea611376ca9c +Block 0003 [114]: 383d8259508783d3 +Block 0003 [115]: 2832818d509c32cf +Block 0003 [116]: 9bb26c92a26c6eed +Block 0003 [117]: baae366114f3ca3e +Block 0003 [118]: 09c413ff09704cbe +Block 0003 [119]: 5fc1338780cf93eb +Block 0003 [120]: 352469a1770e3e65 +Block 0003 [121]: 09d9489be33e8698 +Block 0003 [122]: 293a5c2b387975cf +Block 0003 [123]: 4d830525800bf49a +Block 0003 [124]: f60036d7c3126c7e +Block 0003 [125]: cce1956b6bb6f18e +Block 0003 [126]: b8e6e522b7f67d04 +Block 0003 [127]: b1833790bfe9a358 +Block 0004 [ 0]: 3d0218d3c7b74ca8 +Block 0004 [ 1]: d775ea77a653a27c +Block 0004 [ 2]: c176afeeeeec983f +Block 0004 [ 3]: 2f56b580b3d2038a +Block 0004 [ 4]: dd4f6cb833299896 +Block 0004 [ 5]: 36280f762b6d9d1f +Block 0004 [ 6]: e7931d5f58536e7f +Block 0004 [ 7]: 816acd37e673e4b1 +Block 0004 [ 8]: 252097ce80cf4471 +Block 0004 [ 9]: 53b5435ba1c7f8c3 +Block 0004 [ 10]: 64d876af9ba2b092 +Block 0004 [ 11]: f596aaf38f0d531c +Block 0004 [ 12]: daf15fd14343faf1 +Block 0004 [ 13]: 653e245995afa924 +Block 0004 [ 14]: 5d7490c3b74a7283 +Block 0004 [ 15]: 2938b33cd3959722 +Block 0004 [ 16]: fad161088d3d6d90 +Block 0004 [ 17]: a20f95889e04cc34 +Block 0004 [ 18]: ad95b5eff6f7e807 +Block 0004 [ 19]: 9c6a5409137873ec +Block 0004 [ 20]: d69f52d77ced25a0 +Block 0004 [ 21]: 30326cf9e8b26b65 +Block 0004 [ 22]: 27840208a4f1c105 +Block 0004 [ 23]: 9447a046e4644347 +Block 0004 [ 24]: 56087f6a44fdb588 +Block 0004 [ 25]: 6dc364d36cbf26d5 +Block 0004 [ 26]: 87b683d67201cdad +Block 0004 [ 27]: ba8742cda32586ce +Block 0004 [ 28]: b6cde1778051b9f3 +Block 0004 [ 29]: 1b82b268556f6c57 +Block 0004 [ 30]: 8339ec4f63995a93 +Block 0004 [ 31]: d606bc0fd42b9e00 +Block 0004 [ 32]: 15f734c2f1851101 +Block 0004 [ 33]: f506350a9337d1b1 +Block 0004 [ 34]: ddea2ea066855ca4 +Block 0004 [ 35]: 9854e88b7a91c00d +Block 0004 [ 36]: b9192978b32d53a4 +Block 0004 [ 37]: 525af839f9719cb5 +Block 0004 [ 38]: f0dd9f4c07a3c131 +Block 0004 [ 39]: 45168595c23f263c +Block 0004 [ 40]: 69b2bb5c381988d8 +Block 0004 [ 41]: 61ae296ca95aa156 +Block 0004 [ 42]: 61cc529c1199b52e +Block 0004 [ 43]: 6c7bea9a5fd4bd67 +Block 0004 [ 44]: ab7369fc537d81ee +Block 0004 [ 45]: 3cfe32d2a3865e9b +Block 0004 [ 46]: da5f06ec7db73c9d +Block 0004 [ 47]: d30bd62324bc5f48 +Block 0004 [ 48]: bdc0079a0cd32c12 +Block 0004 [ 49]: 102579dd0f6cbe7c +Block 0004 [ 50]: d28913132bdfa5a2 +Block 0004 [ 51]: 0c8d094baa236d78 +Block 0004 [ 52]: 06e461788c5b69a9 +Block 0004 [ 53]: 371dbf3107c1193b +Block 0004 [ 54]: f6aaab2550a65da8 +Block 0004 [ 55]: 428d89d340f1606f +Block 0004 [ 56]: 0533b686a16599e3 +Block 0004 [ 57]: 9b0a6ecddeea2536 +Block 0004 [ 58]: 4ec61df5ae2925ba +Block 0004 [ 59]: 889f3f5d3ab01086 +Block 0004 [ 60]: 1ba9860ad05bba5e +Block 0004 [ 61]: 44ae777798e36c5a +Block 0004 [ 62]: b2c5b481c53e9d60 +Block 0004 [ 63]: 4b880b2cf31f1b39 +Block 0004 [ 64]: 31c4ad49902e93f8 +Block 0004 [ 65]: c3406a45d218a4de +Block 0004 [ 66]: c55c240f9476ed2d +Block 0004 [ 67]: 8536df39d71e4bb2 +Block 0004 [ 68]: 880364005d870893 +Block 0004 [ 69]: f0399130b975e981 +Block 0004 [ 70]: 2a1cc94a9540bbc2 +Block 0004 [ 71]: 66ddc8498908dd94 +Block 0004 [ 72]: 29da7f4fb91fcafd +Block 0004 [ 73]: 3da5be32b39d893c +Block 0004 [ 74]: 400c926600b93260 +Block 0004 [ 75]: 3c0bc8a864c63ac5 +Block 0004 [ 76]: 1fa284b1929fedda +Block 0004 [ 77]: d8fbff92df12283a +Block 0004 [ 78]: 6f8a370ab6454744 +Block 0004 [ 79]: a8353ea2070b0cb0 +Block 0004 [ 80]: 8d1d9a211ae4a7b6 +Block 0004 [ 81]: e75caccf836fec07 +Block 0004 [ 82]: 13cd97d9ce0fd07e +Block 0004 [ 83]: a0acba9e9458bbe2 +Block 0004 [ 84]: da451f32ace6d295 +Block 0004 [ 85]: aeb5717f0b40d2a3 +Block 0004 [ 86]: 871bb5d3228b213e +Block 0004 [ 87]: e652337cacaea165 +Block 0004 [ 88]: 00827f84524518ab +Block 0004 [ 89]: 1dc3281fe4bbd871 +Block 0004 [ 90]: 070965dd4c53abbf +Block 0004 [ 91]: 01d7e50991766fb4 +Block 0004 [ 92]: 764d7031b5313c1f +Block 0004 [ 93]: a09cf477a95cb6be +Block 0004 [ 94]: 72f8e7681d5fff45 +Block 0004 [ 95]: 683674587d64b187 +Block 0004 [ 96]: b6b323e20a11c95f +Block 0004 [ 97]: 2efd915bd3a4378a +Block 0004 [ 98]: 70be9263eed7a411 +Block 0004 [ 99]: 6639b57c9775cd57 +Block 0004 [100]: 7111d121f936a543 +Block 0004 [101]: cc0465d2ded37ea0 +Block 0004 [102]: c1bc4dcc13cf1463 +Block 0004 [103]: faeaf234269d808b +Block 0004 [104]: 608c4812ec403401 +Block 0004 [105]: e6c45eb5bd0df3f5 +Block 0004 [106]: 157fc891efe07dd8 +Block 0004 [107]: f6063de8c707fbe1 +Block 0004 [108]: ea0cf9feb531ee49 +Block 0004 [109]: 7f03acb918dbed1b +Block 0004 [110]: 84d076272170fc4d +Block 0004 [111]: d630f0dab96da15f +Block 0004 [112]: cfc05aed43413a43 +Block 0004 [113]: 16cfe392a4b08a15 +Block 0004 [114]: f24f9093be143b5e +Block 0004 [115]: 4213be434fbf3ef1 +Block 0004 [116]: 8323183a4feccd4a +Block 0004 [117]: 0874e2b43461cff1 +Block 0004 [118]: 6bda6c5beef6b654 +Block 0004 [119]: b94f755575072464 +Block 0004 [120]: a0f1e43e0a95d678 +Block 0004 [121]: d99619485b84aed5 +Block 0004 [122]: 05a4613a31743eef +Block 0004 [123]: 9fb6cbf1a149fd72 +Block 0004 [124]: 9f5e4bd27a21db84 +Block 0004 [125]: de2deee92e6a36dc +Block 0004 [126]: 865c61eedf06610d +Block 0004 [127]: 5df4327e934a0615 +Block 0005 [ 0]: ebe0a110a19e35f6 +Block 0005 [ 1]: 008d2bc14ad221da +Block 0005 [ 2]: 7b650b6ffcc7419b +Block 0005 [ 3]: 3abb4c43361f8a2e +Block 0005 [ 4]: 91f87a4a3f6ee7db +Block 0005 [ 5]: 11426d9377c1fc47 +Block 0005 [ 6]: a87dceffb866d6d7 +Block 0005 [ 7]: dc1f68c91ea3b945 +Block 0005 [ 8]: 58baa73c25e5a80d +Block 0005 [ 9]: b4726199470be696 +Block 0005 [ 10]: 0f19e0f822013b8b +Block 0005 [ 11]: 5ec73451f5da8127 +Block 0005 [ 12]: e4a685a8b846beae +Block 0005 [ 13]: 7ab8a6acfb017f42 +Block 0005 [ 14]: 1b697272c549671a +Block 0005 [ 15]: e7cafbec03487054 +Block 0005 [ 16]: 6169e3164a21d81f +Block 0005 [ 17]: ebd69195322ce5f3 +Block 0005 [ 18]: c2e7ea52115ef8fe +Block 0005 [ 19]: 4505bdda7f1ec096 +Block 0005 [ 20]: e6223c84cb44d2bb +Block 0005 [ 21]: 9a66897d2f668bb1 +Block 0005 [ 22]: 361a9d11f702134c +Block 0005 [ 23]: 225333e618b38c82 +Block 0005 [ 24]: 938b95b671a477da +Block 0005 [ 25]: 12c1b35d3d957d84 +Block 0005 [ 26]: a8de7a408626987e +Block 0005 [ 27]: be99d2a21d4e6aaa +Block 0005 [ 28]: 3e00b15f24872c30 +Block 0005 [ 29]: 25da7df53480716b +Block 0005 [ 30]: d763b510a5b5176e +Block 0005 [ 31]: fb750bfaa121d443 +Block 0005 [ 32]: 29f3320b70f1fd51 +Block 0005 [ 33]: d8d0f3d810ea4631 +Block 0005 [ 34]: 249cfce46ad07796 +Block 0005 [ 35]: 48e2df9063c20c0a +Block 0005 [ 36]: d156ca43b733ee10 +Block 0005 [ 37]: 6e3211c3e811ef2e +Block 0005 [ 38]: b07c3324072f3e60 +Block 0005 [ 39]: f0876351201cd7e6 +Block 0005 [ 40]: 1d6b7c6248336fad +Block 0005 [ 41]: 711e290de918ef7e +Block 0005 [ 42]: db4cb24ab1ba3de1 +Block 0005 [ 43]: 04922f11be1c59d4 +Block 0005 [ 44]: d176c2007870606a +Block 0005 [ 45]: 3f9de1763ca7b9ac +Block 0005 [ 46]: 9e907691b4a675ef +Block 0005 [ 47]: 8a844094fdc5a88d +Block 0005 [ 48]: 511a7bdd9977d2d1 +Block 0005 [ 49]: 4c9b696660f251bf +Block 0005 [ 50]: 6564036fa992787e +Block 0005 [ 51]: e42d539963cacd5d +Block 0005 [ 52]: 21062cfef86ee74e +Block 0005 [ 53]: d3d66a92c9290c5b +Block 0005 [ 54]: e1cf3b28dbafede3 +Block 0005 [ 55]: b92371b18732fabc +Block 0005 [ 56]: 361ebd40a008b0f5 +Block 0005 [ 57]: 808be947d48db0a1 +Block 0005 [ 58]: c06627cff85764e2 +Block 0005 [ 59]: 6a5386c596fa2f1a +Block 0005 [ 60]: 2fb06a7a33185b99 +Block 0005 [ 61]: 3466d1791387669c +Block 0005 [ 62]: 6ddf4d98b1fdfdbf +Block 0005 [ 63]: a556957e3fd45eb2 +Block 0005 [ 64]: 10f86898cd368eb9 +Block 0005 [ 65]: 150e99f8016f90fa +Block 0005 [ 66]: 37ceaa78780b2975 +Block 0005 [ 67]: 53f47026278b7aa5 +Block 0005 [ 68]: 793cd8d42494022d +Block 0005 [ 69]: 28ebaa1ba5f09bb8 +Block 0005 [ 70]: 1e7e3efd8fa75642 +Block 0005 [ 71]: f74412432c5a7339 +Block 0005 [ 72]: 1e6634dab86ffc70 +Block 0005 [ 73]: 2a853b1f0398398e +Block 0005 [ 74]: b77ade9731734f4d +Block 0005 [ 75]: 5eb23b7a5395d0f5 +Block 0005 [ 76]: 65eb315d342866fb +Block 0005 [ 77]: 953b95837df8e936 +Block 0005 [ 78]: 599f63583bbde92d +Block 0005 [ 79]: 42b78d9dd0e0029f +Block 0005 [ 80]: 9f7d0390e5b45eb3 +Block 0005 [ 81]: 751ad633e588ae66 +Block 0005 [ 82]: c2d4bea00853cde0 +Block 0005 [ 83]: 4fd032806ea5b569 +Block 0005 [ 84]: fba664901a55f304 +Block 0005 [ 85]: 6c7c644ba5157365 +Block 0005 [ 86]: 23542e368ec13c64 +Block 0005 [ 87]: 04f8fadd8b735b7d +Block 0005 [ 88]: 0d145631c75c088e +Block 0005 [ 89]: eb1e0e1fe5cd7995 +Block 0005 [ 90]: deab81e9e69fcd13 +Block 0005 [ 91]: db8c1140e5e91a33 +Block 0005 [ 92]: 2fb6401714e6c913 +Block 0005 [ 93]: d5a647aae640d351 +Block 0005 [ 94]: 7ff7506e47258938 +Block 0005 [ 95]: 44e5d15a02d6f281 +Block 0005 [ 96]: 298a1c196621f326 +Block 0005 [ 97]: 8fd931f209c2a308 +Block 0005 [ 98]: 8f4b8fe6227c86d2 +Block 0005 [ 99]: 9cdb3001ef490ce4 +Block 0005 [100]: 13dde2bb569cbb44 +Block 0005 [101]: 1b0e09c4897bbb9f +Block 0005 [102]: 7956ff7a15ee636b +Block 0005 [103]: e1aafb98d48a4eb3 +Block 0005 [104]: 92f32b059f056a35 +Block 0005 [105]: 884387d7450e6955 +Block 0005 [106]: bfe97055990c8bb4 +Block 0005 [107]: 5e992b7b49084a96 +Block 0005 [108]: 28e360b2c013b884 +Block 0005 [109]: 1f9e7336eb1bb691 +Block 0005 [110]: 47c117348af2a6f8 +Block 0005 [111]: ccc5140886ca66b4 +Block 0005 [112]: 9b9c7e02d210182a +Block 0005 [113]: 4bf5e7c7b5c586d8 +Block 0005 [114]: 1b64a31ed9c6a34e +Block 0005 [115]: bfecc90bf4fa043b +Block 0005 [116]: 6e0a25e5fb276cf0 +Block 0005 [117]: c1baa5232ad374e7 +Block 0005 [118]: 4f68f109df6c02d5 +Block 0005 [119]: cb004fb5c813273b +Block 0005 [120]: fa71b52ef5384747 +Block 0005 [121]: b5a18bd9701b0c1f +Block 0005 [122]: 31e001f95dfa27db +Block 0005 [123]: d66ee543167724a2 +Block 0005 [124]: 4170180f6fa36c26 +Block 0005 [125]: 5ab82751d0014c9b +Block 0005 [126]: fdd4df1f9de608d1 +Block 0005 [127]: dbee35b29953798d +Block 0006 [ 0]: 953da22d91b4cdf1 +Block 0006 [ 1]: 9676f207e657a260 +Block 0006 [ 2]: 9060fb9cc1ee9e6f +Block 0006 [ 3]: 7e0c7d3e2a542fd3 +Block 0006 [ 4]: 6a61b82d82d10d4a +Block 0006 [ 5]: a32383166b9bcd0e +Block 0006 [ 6]: 4c3eee661bf1c858 +Block 0006 [ 7]: 0968e35bc6cccd6c +Block 0006 [ 8]: 741e38f728c12bcb +Block 0006 [ 9]: ff2f75f3742598b3 +Block 0006 [ 10]: 83ba2331f338c6e5 +Block 0006 [ 11]: a63ef474f95b8b64 +Block 0006 [ 12]: a3f5994b4d5b907b +Block 0006 [ 13]: 941c1189b8f92824 +Block 0006 [ 14]: 70aaf42c80f88f0a +Block 0006 [ 15]: 1aa7b30acb6c4b53 +Block 0006 [ 16]: 4e3b293be10ddaac +Block 0006 [ 17]: 9147f8c3764087cc +Block 0006 [ 18]: 51c784834665e149 +Block 0006 [ 19]: 360469980c63db76 +Block 0006 [ 20]: 4e95eac04f96ae83 +Block 0006 [ 21]: 2983d0f8d9631a7c +Block 0006 [ 22]: a16e8c2b0e6b6a42 +Block 0006 [ 23]: f61fa745edf7e028 +Block 0006 [ 24]: 9f706afd3abf305d +Block 0006 [ 25]: 309486cc6bf90c4f +Block 0006 [ 26]: be344cda4ca29fbf +Block 0006 [ 27]: 12b16f6034f6d56f +Block 0006 [ 28]: 4bea1e5d93ffb5aa +Block 0006 [ 29]: 903f34584a5c9d85 +Block 0006 [ 30]: eef4fb8144be4ec0 +Block 0006 [ 31]: a003f06275ca97ec +Block 0006 [ 32]: a8d5232e929c0325 +Block 0006 [ 33]: d468707146178f06 +Block 0006 [ 34]: 35afe4cf3e359f4e +Block 0006 [ 35]: c37deaea22cf78f8 +Block 0006 [ 36]: c32828ebe2f5f03f +Block 0006 [ 37]: 35544b4bc72bb7e5 +Block 0006 [ 38]: 0ff984bebbe4332f +Block 0006 [ 39]: aa90abc10b8bf925 +Block 0006 [ 40]: a30fae740369aeaa +Block 0006 [ 41]: b0d40ff0e1405b0b +Block 0006 [ 42]: 41e0ebd013434b43 +Block 0006 [ 43]: 93329fd5a2a0a615 +Block 0006 [ 44]: c5ce5a077ae78cfb +Block 0006 [ 45]: 2d7603c16f625bbe +Block 0006 [ 46]: 6d448aa77a0ba910 +Block 0006 [ 47]: 734effe2c30da157 +Block 0006 [ 48]: 6467bdbcac0a2e60 +Block 0006 [ 49]: a4a967217ec67c6e +Block 0006 [ 50]: 84088bfdd1f8fd6c +Block 0006 [ 51]: ceb0dff92ef2bf56 +Block 0006 [ 52]: e8d89cbeb4e6aafd +Block 0006 [ 53]: d7577f5276c6efff +Block 0006 [ 54]: 7b8666cbd445a194 +Block 0006 [ 55]: 283cbe1fca02ff49 +Block 0006 [ 56]: c1130c6e56caad55 +Block 0006 [ 57]: e703eb1b9cfb064b +Block 0006 [ 58]: 20681d5f25a51792 +Block 0006 [ 59]: 6b99ced7f66ff2f2 +Block 0006 [ 60]: ede2f8f94072ed04 +Block 0006 [ 61]: 35d4fdb152f85e55 +Block 0006 [ 62]: 5972cde3573436c5 +Block 0006 [ 63]: 514169dadd86b036 +Block 0006 [ 64]: dfb4a43b017afa26 +Block 0006 [ 65]: f3659113f547fc9d +Block 0006 [ 66]: f783483cc199a4cd +Block 0006 [ 67]: 880a64abd07e7226 +Block 0006 [ 68]: da74ccf3914aa25b +Block 0006 [ 69]: 0ef7529a6523ac67 +Block 0006 [ 70]: c7b2350d91c2ad1d +Block 0006 [ 71]: 00fe4d981f08cda3 +Block 0006 [ 72]: f109e3bea43047b4 +Block 0006 [ 73]: b11a591cabae2527 +Block 0006 [ 74]: 8584e130c4aa28f6 +Block 0006 [ 75]: e6cc066b517f3bf2 +Block 0006 [ 76]: c61d848b3604f406 +Block 0006 [ 77]: a6e481e6f62d417e +Block 0006 [ 78]: 98374fb8b642277d +Block 0006 [ 79]: 3cd691a8e368c1a3 +Block 0006 [ 80]: f5e4b070e60c6371 +Block 0006 [ 81]: ae704193c93f858a +Block 0006 [ 82]: 91ba194d1daa0855 +Block 0006 [ 83]: 94733c71d403736b +Block 0006 [ 84]: 2ba3e7fd9c6a3cd5 +Block 0006 [ 85]: 1afb61c7bf872e72 +Block 0006 [ 86]: d3725b5b472693e9 +Block 0006 [ 87]: 5a37d40a1ea35b2f +Block 0006 [ 88]: fb9b6b1b8c900513 +Block 0006 [ 89]: 9ccf2941f4f80c3c +Block 0006 [ 90]: 0c987b97df5adf27 +Block 0006 [ 91]: 76174bbba6dbfe6f +Block 0006 [ 92]: 94aac5d0f17cb183 +Block 0006 [ 93]: 3c1c6d2e3ba1ee47 +Block 0006 [ 94]: 830b0554211273d4 +Block 0006 [ 95]: c0be78c4cfb035d6 +Block 0006 [ 96]: 6d73af45c4760ff7 +Block 0006 [ 97]: 7f1c9d632ff58ddf +Block 0006 [ 98]: 4d28f566ec1be67b +Block 0006 [ 99]: ddddae2263706ff7 +Block 0006 [100]: b7d1ea8ff5b40ed9 +Block 0006 [101]: 060f1e1a15cf24c0 +Block 0006 [102]: b8ef978d9367132b +Block 0006 [103]: 75051540922cf5f7 +Block 0006 [104]: 9acab99071475dca +Block 0006 [105]: 9cf6fa671ba3c5e8 +Block 0006 [106]: da306220d6d92f3f +Block 0006 [107]: 96f370ed24c0a715 +Block 0006 [108]: eef65720ca00c62c +Block 0006 [109]: d0a4896fef4fbb76 +Block 0006 [110]: 34cb832b72571c57 +Block 0006 [111]: b6f372cf70846a46 +Block 0006 [112]: 089b00b51e7e7bb3 +Block 0006 [113]: 3a67f4f3a4e2ba6d +Block 0006 [114]: 3efe256bac84de46 +Block 0006 [115]: 7e12bd4d6af4d9f3 +Block 0006 [116]: 6081aefcc1b62159 +Block 0006 [117]: 9eee22656bd81016 +Block 0006 [118]: ab2ec3390f6456a0 +Block 0006 [119]: 7a3555752b91ecb3 +Block 0006 [120]: a32e7434fd10c015 +Block 0006 [121]: 1475b5ce252f4f53 +Block 0006 [122]: d75c74f6e22b18f0 +Block 0006 [123]: ea383d46ae76a8f5 +Block 0006 [124]: b9439a5a2a0342d7 +Block 0006 [125]: 0866fc6c0bc150dd +Block 0006 [126]: 1a48b3e6e8e7128f +Block 0006 [127]: f99acc084060ccc6 +Block 0007 [ 0]: 002beefd6242b6fc +Block 0007 [ 1]: ccd632cc9923d203 +Block 0007 [ 2]: 811448a01c1cee37 +Block 0007 [ 3]: bdb5d29914d0fd4b +Block 0007 [ 4]: aa8a6e84e5b9862d +Block 0007 [ 5]: 5cfe285ab264bdd1 +Block 0007 [ 6]: 9e007b855f8c4198 +Block 0007 [ 7]: a26ae8c98fd60957 +Block 0007 [ 8]: 8898a87f9d06ea7c +Block 0007 [ 9]: fc5224caf8054b51 +Block 0007 [ 10]: 6da6869d93083849 +Block 0007 [ 11]: c1816abe2cb148d3 +Block 0007 [ 12]: 6d526b4c8d7a7194 +Block 0007 [ 13]: b9b0ee4d9e221379 +Block 0007 [ 14]: 5eb5a2c637d58307 +Block 0007 [ 15]: 699550723f3335b9 +Block 0007 [ 16]: 8bd3efa71abca2da +Block 0007 [ 17]: 286304f7c483ef5f +Block 0007 [ 18]: 4b9273444ac054aa +Block 0007 [ 19]: 6665269cc5fe3c67 +Block 0007 [ 20]: 028c169ce962a690 +Block 0007 [ 21]: 932821205bda6248 +Block 0007 [ 22]: 12e7e8141030e59f +Block 0007 [ 23]: 6e53a28d9d6ed667 +Block 0007 [ 24]: a1b5387b05bbf7aa +Block 0007 [ 25]: eb32cc77b091f595 +Block 0007 [ 26]: ce2c166ab58cbbe0 +Block 0007 [ 27]: 03b1037106b358e2 +Block 0007 [ 28]: 3f92863ea1f614d0 +Block 0007 [ 29]: f05841d5cd327092 +Block 0007 [ 30]: 91e0fd9692bff005 +Block 0007 [ 31]: afd5f332341584c6 +Block 0007 [ 32]: 15071f83f2203c21 +Block 0007 [ 33]: 43ebdc1864818a2a +Block 0007 [ 34]: 0156f8f1493fce68 +Block 0007 [ 35]: f64e6ebe8e490ce8 +Block 0007 [ 36]: 6eed6c06e9e02dd6 +Block 0007 [ 37]: 9922babb8a661298 +Block 0007 [ 38]: b813c6bddbb4ac83 +Block 0007 [ 39]: 5b698fe61fc5208f +Block 0007 [ 40]: e706c9f769eba549 +Block 0007 [ 41]: df0f332b5b107970 +Block 0007 [ 42]: 0da80b0ad28623de +Block 0007 [ 43]: cf850bcda6e3de54 +Block 0007 [ 44]: 169055a58391024e +Block 0007 [ 45]: f92b9ffcf48a04df +Block 0007 [ 46]: 4124880c61e033e2 +Block 0007 [ 47]: e8345420f69b7b09 +Block 0007 [ 48]: db8e71e39ff08397 +Block 0007 [ 49]: 05bdc9300e0865d2 +Block 0007 [ 50]: 3109c1b72e9e5fc0 +Block 0007 [ 51]: f12bee6915c31c92 +Block 0007 [ 52]: c7d8812129b1e13f +Block 0007 [ 53]: 63fe835118a4449c +Block 0007 [ 54]: 66134014e4f99a06 +Block 0007 [ 55]: e03ed3e8aed721b1 +Block 0007 [ 56]: be7ddd16a45ed362 +Block 0007 [ 57]: 5d85f460481ef486 +Block 0007 [ 58]: 0d4e3d285acb2128 +Block 0007 [ 59]: a999dea8ad365308 +Block 0007 [ 60]: ca02a8b6803967e2 +Block 0007 [ 61]: a1c4d8818baeeb35 +Block 0007 [ 62]: 555ce5d78543ede5 +Block 0007 [ 63]: eb9ff1a5add111e3 +Block 0007 [ 64]: 439f9aea1de62ee3 +Block 0007 [ 65]: 7b59bf01ff510d8c +Block 0007 [ 66]: da2ac155c61c1f0b +Block 0007 [ 67]: 331dbc2c66eed4f2 +Block 0007 [ 68]: 652a5f3ab977b23b +Block 0007 [ 69]: 83fb468bb3e13696 +Block 0007 [ 70]: 03de2ebdd3f9bb1c +Block 0007 [ 71]: 5b3ca2644926db6c +Block 0007 [ 72]: 297776bedec9267b +Block 0007 [ 73]: 95beda56a6edbb35 +Block 0007 [ 74]: 94071492eece3348 +Block 0007 [ 75]: d77a89f14e33d1ee +Block 0007 [ 76]: d76fd7c32602756e +Block 0007 [ 77]: 1200fa9a61602f57 +Block 0007 [ 78]: 574bec69a352b0db +Block 0007 [ 79]: d42f7ae3ce87fc4e +Block 0007 [ 80]: a217f4ec297fe743 +Block 0007 [ 81]: 0d01f7578cf0e679 +Block 0007 [ 82]: ec97b5ce481abc89 +Block 0007 [ 83]: 656c1293bab962fb +Block 0007 [ 84]: 297a9721b48fa834 +Block 0007 [ 85]: 70a5ff29c7941f90 +Block 0007 [ 86]: b60f45feda3af7a6 +Block 0007 [ 87]: 548bdd7d053a03bd +Block 0007 [ 88]: 62d72d1ef6df5827 +Block 0007 [ 89]: 6131ae7350b40cc0 +Block 0007 [ 90]: 6b9f43233ba759c6 +Block 0007 [ 91]: 176cdac2adb09b47 +Block 0007 [ 92]: 6267a0329806fa44 +Block 0007 [ 93]: 3c305808bd0d2120 +Block 0007 [ 94]: 6479e3f470857aca +Block 0007 [ 95]: 8b0cf70ea2dc68d0 +Block 0007 [ 96]: 3de9c929d4af52fb +Block 0007 [ 97]: f80508a3f0cf5428 +Block 0007 [ 98]: 515b50830dc5d290 +Block 0007 [ 99]: bdcd51b2125a83ec +Block 0007 [100]: 3ed75ff8432271e0 +Block 0007 [101]: 4ba6ec3635b0e76b +Block 0007 [102]: 9ded925bce57397c +Block 0007 [103]: b93bdb8173bed393 +Block 0007 [104]: a11d019347a2c33c +Block 0007 [105]: 94101a31465b3284 +Block 0007 [106]: 7479e1eb888e7500 +Block 0007 [107]: b92a49c6d49f27bf +Block 0007 [108]: adf40d53776ed568 +Block 0007 [109]: f53fbe73cda6090f +Block 0007 [110]: 9b808347790c5d5a +Block 0007 [111]: 9622af5b138e5d69 +Block 0007 [112]: 4b659ba374ae26c0 +Block 0007 [113]: 24b1b1604d43976f +Block 0007 [114]: 1f8a68ffcab10d30 +Block 0007 [115]: 4535ac37b39b03b8 +Block 0007 [116]: 8f7f3080deaf81a1 +Block 0007 [117]: 603995246b14f01b +Block 0007 [118]: a780b701f2faaa04 +Block 0007 [119]: 156703383b497d9f +Block 0007 [120]: 38f0ec51b9bb66e0 +Block 0007 [121]: 1036342f66765314 +Block 0007 [122]: eb7c88a00e41ace8 +Block 0007 [123]: 9845e713fc5c9e5d +Block 0007 [124]: 1c99a9eaec15012c +Block 0007 [125]: 86fc425ad1459f8c +Block 0007 [126]: ecff41d17bc36118 +Block 0007 [127]: 0a65099375079ce5 +Block 0008 [ 0]: c7b8373a03afcf19 +Block 0008 [ 1]: a909269230364d43 +Block 0008 [ 2]: d799ffd1c5da04bd +Block 0008 [ 3]: 05f61178010cbb0b +Block 0008 [ 4]: 64b06d70c562fe17 +Block 0008 [ 5]: aa26efa251b45eb5 +Block 0008 [ 6]: 043edbf927768e4c +Block 0008 [ 7]: 4687854c9c446387 +Block 0008 [ 8]: 2ae6746e9e695849 +Block 0008 [ 9]: d632eaddeed40e2e +Block 0008 [ 10]: 2e1894229225f690 +Block 0008 [ 11]: cc681f3a01d12db0 +Block 0008 [ 12]: 59aa54aacd5118eb +Block 0008 [ 13]: b329a0950a899a89 +Block 0008 [ 14]: 49e3b4972c0de6f3 +Block 0008 [ 15]: 202fae02c2e5620a +Block 0008 [ 16]: f95b327c27fc70f3 +Block 0008 [ 17]: 3d5bb13789a7f840 +Block 0008 [ 18]: ca538a32e5cf05d7 +Block 0008 [ 19]: 6adc8c09af9cdd36 +Block 0008 [ 20]: 8009e1c4be9c7f1a +Block 0008 [ 21]: b6d9ebf3902cc509 +Block 0008 [ 22]: edfdc70b68ffe682 +Block 0008 [ 23]: 85971773ea2e2aa4 +Block 0008 [ 24]: fd5713a4dd2aae2f +Block 0008 [ 25]: 7fc21515c6515c23 +Block 0008 [ 26]: 134b73c32ec830e7 +Block 0008 [ 27]: 16835d88c1333f50 +Block 0008 [ 28]: 3bb27ca7d7a87a53 +Block 0008 [ 29]: 95714e2ec1a0baa0 +Block 0008 [ 30]: cc22ea124de03f5c +Block 0008 [ 31]: 6904cc3dfb20281f +Block 0008 [ 32]: 01f0d8396bee58ef +Block 0008 [ 33]: 01eec7dd2eff4865 +Block 0008 [ 34]: ed2bc2842d0add18 +Block 0008 [ 35]: 939c7b2dfe867802 +Block 0008 [ 36]: c5f57f1b42747a1f +Block 0008 [ 37]: 18af1227ebd86903 +Block 0008 [ 38]: 29b7dc33247912c4 +Block 0008 [ 39]: 00f4e97989cc3d8b +Block 0008 [ 40]: 61dd12b31336dd1d +Block 0008 [ 41]: 4b03857af3a06d71 +Block 0008 [ 42]: 725514d41421a49b +Block 0008 [ 43]: 23b3cbb357607d19 +Block 0008 [ 44]: 9b3927ecce07ceb9 +Block 0008 [ 45]: d0b7796042bfa8c6 +Block 0008 [ 46]: dd05d92323d8f813 +Block 0008 [ 47]: edf698eca5b99165 +Block 0008 [ 48]: b1dfdf82b4674811 +Block 0008 [ 49]: d5ca255656a63e19 +Block 0008 [ 50]: 197aac7dc09b8972 +Block 0008 [ 51]: d8d7a090740cf39a +Block 0008 [ 52]: b3ba2e7e524e0333 +Block 0008 [ 53]: 15ee29644b30bc96 +Block 0008 [ 54]: 12659f1a6a71b53b +Block 0008 [ 55]: e660b364e9e01413 +Block 0008 [ 56]: d8e60ba470f76e03 +Block 0008 [ 57]: 2268390a9c96548c +Block 0008 [ 58]: c2718c9dad08f162 +Block 0008 [ 59]: 65873efcb59a5197 +Block 0008 [ 60]: 2e05ebb8441f3edc +Block 0008 [ 61]: 6a9d2c0ab8c851db +Block 0008 [ 62]: ad24c928e658d046 +Block 0008 [ 63]: 50b6fc4bb8747b9b +Block 0008 [ 64]: 9be93e96d85b3f3a +Block 0008 [ 65]: c5ddc41b9c0c0433 +Block 0008 [ 66]: 5951b4a1ef885444 +Block 0008 [ 67]: dda7ec0d8457ebdf +Block 0008 [ 68]: 3ea34e7424121003 +Block 0008 [ 69]: 6351dfbe0f2744ef +Block 0008 [ 70]: baae70fdb538a0eb +Block 0008 [ 71]: 4e3a6085ef5f6c36 +Block 0008 [ 72]: bc0b3847702a388c +Block 0008 [ 73]: 2632f243eae0de51 +Block 0008 [ 74]: 83f4c3031c53da8f +Block 0008 [ 75]: 7ca1d5c056c3212c +Block 0008 [ 76]: e91d5c35bf2ac359 +Block 0008 [ 77]: 6ef5fcb669f8ba32 +Block 0008 [ 78]: a2d6070fb37dcea8 +Block 0008 [ 79]: d97f93802d983edb +Block 0008 [ 80]: 6f8d6d93927e937f +Block 0008 [ 81]: 539b8ba74e47a85a +Block 0008 [ 82]: d267a050f43e6edd +Block 0008 [ 83]: 9d606704b2663688 +Block 0008 [ 84]: 8b2648fb1289be9a +Block 0008 [ 85]: 21423b5e0d4e0114 +Block 0008 [ 86]: 502ea60aafcca859 +Block 0008 [ 87]: 2a71e295504afee6 +Block 0008 [ 88]: e27ca4bbe595d9c9 +Block 0008 [ 89]: 5b6f28b95c8ef12d +Block 0008 [ 90]: fa7883e79e4ebc9d +Block 0008 [ 91]: 74e9bd98da31842a +Block 0008 [ 92]: e7b9a0a7b5a3bf38 +Block 0008 [ 93]: dd3e398aebf1a877 +Block 0008 [ 94]: 07695e81f360ae4e +Block 0008 [ 95]: b6b30c9f4a29c2e8 +Block 0008 [ 96]: a9e06a63186894a6 +Block 0008 [ 97]: 7eb26e252eaa9995 +Block 0008 [ 98]: 93c64e8f318d7406 +Block 0008 [ 99]: 3adec85056ae3778 +Block 0008 [100]: 27f889dd9c85f165 +Block 0008 [101]: bd35ba0e789faee7 +Block 0008 [102]: 2c7c406b25d07593 +Block 0008 [103]: fb8a4b223e6131d3 +Block 0008 [104]: b5420c0981e94c1c +Block 0008 [105]: c2c33dc496497614 +Block 0008 [106]: 29df3353953d0207 +Block 0008 [107]: 5549a76b170723a4 +Block 0008 [108]: c20d3ae7f46d1982 +Block 0008 [109]: 422a49338347bbf8 +Block 0008 [110]: bfdec4da70aaedda +Block 0008 [111]: d91860f96421332f +Block 0008 [112]: 7b83b4377f28e210 +Block 0008 [113]: 45883aaa3c712c74 +Block 0008 [114]: 5b9bf0574f48e65a +Block 0008 [115]: 1ca2c6c126b50d21 +Block 0008 [116]: 9c1d4d9a7b519d7a +Block 0008 [117]: d1b495c6e63178de +Block 0008 [118]: c7f5aedc253cc38a +Block 0008 [119]: c10d67ddd0010dcd +Block 0008 [120]: d26f4968efdf04e4 +Block 0008 [121]: 254d3c73de94f530 +Block 0008 [122]: ee5fe9b21a65c3c2 +Block 0008 [123]: 0da2241e73889e92 +Block 0008 [124]: 15e1ecdf444ae9d9 +Block 0008 [125]: 5a0c111eb92c79ed +Block 0008 [126]: be331ef95f53d838 +Block 0008 [127]: 77474ea5a67680d4 +Block 0009 [ 0]: df0b91c201ac9942 +Block 0009 [ 1]: 6f84a33c554aa710 +Block 0009 [ 2]: 35ba5e6d84d3003f +Block 0009 [ 3]: b9456bd3dbb0a7f0 +Block 0009 [ 4]: 414d82dc7ee872f1 +Block 0009 [ 5]: a691e74cb34e90e1 +Block 0009 [ 6]: 221c06abd68740bc +Block 0009 [ 7]: ffad697908129e72 +Block 0009 [ 8]: 62a15c20d7cd2102 +Block 0009 [ 9]: d673060f04c04527 +Block 0009 [ 10]: cb6edf766a1bb01a +Block 0009 [ 11]: 0935c95a41b7811c +Block 0009 [ 12]: 448cb94eb2908b5b +Block 0009 [ 13]: ec311c1e42dce2e6 +Block 0009 [ 14]: 62982ffdc03b54a1 +Block 0009 [ 15]: a717faed7ee8fe1f +Block 0009 [ 16]: ba087cf64c4f938b +Block 0009 [ 17]: 6c895b58388893e9 +Block 0009 [ 18]: 3aca50c898a8b894 +Block 0009 [ 19]: 6f42216ee699b812 +Block 0009 [ 20]: f1a0099713f54a5b +Block 0009 [ 21]: e8e9afff66b861a8 +Block 0009 [ 22]: d5a17492de8da115 +Block 0009 [ 23]: 88acec5c381891ef +Block 0009 [ 24]: b094197c22566803 +Block 0009 [ 25]: 09139c3d2e44ffd2 +Block 0009 [ 26]: a41e2680e6f77d5c +Block 0009 [ 27]: 9e5dfcf66915ec5c +Block 0009 [ 28]: ece54cdfb9c923bb +Block 0009 [ 29]: 6b26d1a619995eb8 +Block 0009 [ 30]: 1fde8b780d9e7644 +Block 0009 [ 31]: 5b20ab006f62f2ea +Block 0009 [ 32]: e7fb9f5efb397851 +Block 0009 [ 33]: ec03581a4debc462 +Block 0009 [ 34]: 2739621c0dc6a51c +Block 0009 [ 35]: 43a677040f16655f +Block 0009 [ 36]: 8a86af39727c0788 +Block 0009 [ 37]: 67f66e4a6f77a496 +Block 0009 [ 38]: 3706c9a8b8ce7405 +Block 0009 [ 39]: 7c64362723e93e2a +Block 0009 [ 40]: d5ff005efd480c4e +Block 0009 [ 41]: 35f1600688530496 +Block 0009 [ 42]: 6aab73eb7272c1f7 +Block 0009 [ 43]: 6e4358e5606a2975 +Block 0009 [ 44]: a9f7d62b60fde122 +Block 0009 [ 45]: c8feb2c548dc793d +Block 0009 [ 46]: 9fe4708f7b2674b6 +Block 0009 [ 47]: 77a810d3a075fb57 +Block 0009 [ 48]: 3c0aa6c3fd7c85c5 +Block 0009 [ 49]: f2ffdbe790966f93 +Block 0009 [ 50]: 124ac9d5b645bc85 +Block 0009 [ 51]: 3060cc4d585e3d3e +Block 0009 [ 52]: 6dc9615348e9a3a2 +Block 0009 [ 53]: 853c7f38065107a9 +Block 0009 [ 54]: 421c82c549418317 +Block 0009 [ 55]: 3876db61dfb07871 +Block 0009 [ 56]: df06b1a43b9f66e4 +Block 0009 [ 57]: dff0f687fb927041 +Block 0009 [ 58]: 28cea38d6bd0ad43 +Block 0009 [ 59]: 0919aefbb62cae91 +Block 0009 [ 60]: 5746f327f0d2c535 +Block 0009 [ 61]: bb1365ac1e29ed76 +Block 0009 [ 62]: 93e745dad8a15140 +Block 0009 [ 63]: 3e3b193f8039d2fc +Block 0009 [ 64]: 85f0282c2d6a7563 +Block 0009 [ 65]: 0817805a055c26d1 +Block 0009 [ 66]: bfc51a96ba75a093 +Block 0009 [ 67]: 373fa1d846b62445 +Block 0009 [ 68]: e5cca7f5e9a9cbfa +Block 0009 [ 69]: a9ae844f885d9717 +Block 0009 [ 70]: 033be7201ffbb7fb +Block 0009 [ 71]: fe195a9b641b8799 +Block 0009 [ 72]: 6faba5c8e09d08a7 +Block 0009 [ 73]: 741b0907be8041ad +Block 0009 [ 74]: a96e074f55d6e5d4 +Block 0009 [ 75]: c6357f6ea02ffebd +Block 0009 [ 76]: b73816039f6bfb08 +Block 0009 [ 77]: f751a43d44b91ae2 +Block 0009 [ 78]: 1c3f09adcb6ba95d +Block 0009 [ 79]: cf75b0d707c9076d +Block 0009 [ 80]: 0a36fbe33c195174 +Block 0009 [ 81]: 453d81dcc483bdfd +Block 0009 [ 82]: 167edac1e41e46a7 +Block 0009 [ 83]: 328951c98589b0c0 +Block 0009 [ 84]: 160b54035815a09b +Block 0009 [ 85]: 00c1a36ce87d19ea +Block 0009 [ 86]: ef89588811143eae +Block 0009 [ 87]: 937f4f7560fce6a6 +Block 0009 [ 88]: 6cdec3ff6d2fa1e5 +Block 0009 [ 89]: 1a4ce03b83a4756e +Block 0009 [ 90]: da04b76d964e22c1 +Block 0009 [ 91]: a687274ca5a25edb +Block 0009 [ 92]: 84550fb207c15e94 +Block 0009 [ 93]: 55750f5fc80b47cd +Block 0009 [ 94]: cad236b1b597349e +Block 0009 [ 95]: 4e727ce399eff6d4 +Block 0009 [ 96]: 9d505481b2e3a51d +Block 0009 [ 97]: d5dfe11e287ed9d8 +Block 0009 [ 98]: 8ce7404ff599fc0d +Block 0009 [ 99]: 470204f510acde3d +Block 0009 [100]: 7ba66fe889c92854 +Block 0009 [101]: 87a5e69764636033 +Block 0009 [102]: 1e9001e57e736fd8 +Block 0009 [103]: 314909f6a2145aeb +Block 0009 [104]: efcf1e079bd105d6 +Block 0009 [105]: 8d242a18dcaa54e8 +Block 0009 [106]: a0a0573d9ce69ea3 +Block 0009 [107]: 938f115268396030 +Block 0009 [108]: c0378868d849d6e3 +Block 0009 [109]: ff1ee578eb3efd31 +Block 0009 [110]: d99a19b5bab336b5 +Block 0009 [111]: 1a7ba6b9c5872d86 +Block 0009 [112]: f9def2da6991a973 +Block 0009 [113]: 66a1e2cfaf0e0306 +Block 0009 [114]: 08fc893a0791480b +Block 0009 [115]: 1a73d52f72c63b82 +Block 0009 [116]: a33f2756e9253bbf +Block 0009 [117]: db0eff2fe9b13cd1 +Block 0009 [118]: 20973b7c758a661b +Block 0009 [119]: 2ff8806c93d75f4d +Block 0009 [120]: 9f1b9a5847d11da0 +Block 0009 [121]: 7d3b5cf7a4b7480d +Block 0009 [122]: 1d9fc165c758470b +Block 0009 [123]: 20b09f8a91462fef +Block 0009 [124]: 2129bc88a3e6a062 +Block 0009 [125]: f60f313a41a62bc4 +Block 0009 [126]: b2b2b34de8ebc90b +Block 0009 [127]: c6fd6b970f06e693 +Block 0010 [ 0]: 7f28485fae41c61c +Block 0010 [ 1]: fa0e3699cacc16d6 +Block 0010 [ 2]: a39c1aeed6d8b1c5 +Block 0010 [ 3]: 2883a312a09ad027 +Block 0010 [ 4]: cd3dd30e9b73b638 +Block 0010 [ 5]: 0c230d1074fe6f1f +Block 0010 [ 6]: 872452b98d232b2d +Block 0010 [ 7]: d775c1dacfaa7291 +Block 0010 [ 8]: 4d18e07ff6ca6eca +Block 0010 [ 9]: c348c6fbe35488f1 +Block 0010 [ 10]: 0c5f31be7aa5dd25 +Block 0010 [ 11]: 19d25fc35b7d789c +Block 0010 [ 12]: 7d366311f524a40a +Block 0010 [ 13]: fd82d9e641be9ce2 +Block 0010 [ 14]: f36648db501fc410 +Block 0010 [ 15]: 1fc0a7744abcfa1d +Block 0010 [ 16]: 2a74b93921014e03 +Block 0010 [ 17]: b3a6cfb22b82411f +Block 0010 [ 18]: 51e31c21bf3b2e34 +Block 0010 [ 19]: 6fb5abccf04dd2ec +Block 0010 [ 20]: 6dec81c70a782857 +Block 0010 [ 21]: 7d6c3372de7fbc24 +Block 0010 [ 22]: b5b6db12d3950a7e +Block 0010 [ 23]: 0e302839a31adc16 +Block 0010 [ 24]: 7cfba0473276dfc8 +Block 0010 [ 25]: e76109ead5cb5713 +Block 0010 [ 26]: 977e8bb574655f2f +Block 0010 [ 27]: c018185c2e3194dc +Block 0010 [ 28]: af61a2e2ebd8d8b4 +Block 0010 [ 29]: ee452ff8638d2b76 +Block 0010 [ 30]: ad55d266b0a40fb7 +Block 0010 [ 31]: 9889b7b971559a8e +Block 0010 [ 32]: a0fc23672a1e3bdf +Block 0010 [ 33]: 22ce2f07ad81e8de +Block 0010 [ 34]: 36ad96edda3bc8ca +Block 0010 [ 35]: 798d57c8c93f90e8 +Block 0010 [ 36]: e92afe4eabe2a1fa +Block 0010 [ 37]: 2dbb943d1de32244 +Block 0010 [ 38]: 84185c9ff10b4bcd +Block 0010 [ 39]: 25dae614f6f1e22b +Block 0010 [ 40]: ff3eee5a96aaf550 +Block 0010 [ 41]: 81381c491228560f +Block 0010 [ 42]: 803068857fd344e6 +Block 0010 [ 43]: c262bae576bdc7a9 +Block 0010 [ 44]: dfcec333f8b614b2 +Block 0010 [ 45]: 0aea3363bc3f344f +Block 0010 [ 46]: e18f0e0fcfa93d3c +Block 0010 [ 47]: 163e0a5dc3385a98 +Block 0010 [ 48]: 33c39e1b90c79bd6 +Block 0010 [ 49]: 5103572896584153 +Block 0010 [ 50]: 96623b63a57b0bcc +Block 0010 [ 51]: 8e5ee0c45887b09e +Block 0010 [ 52]: 7d6a8e036120ab2d +Block 0010 [ 53]: 32e46fc380011af5 +Block 0010 [ 54]: 557a7fb0b35b654f +Block 0010 [ 55]: 1d761afb9840f219 +Block 0010 [ 56]: afdad24da5bb7960 +Block 0010 [ 57]: bec28f0e94eec4a2 +Block 0010 [ 58]: b7fa86989ab8d5b4 +Block 0010 [ 59]: 66a4445fc047769a +Block 0010 [ 60]: 77e19aa42c9d10dc +Block 0010 [ 61]: 07a2a97a497dddca +Block 0010 [ 62]: b3571484eb5cdd0d +Block 0010 [ 63]: e175aa9b42cf3f42 +Block 0010 [ 64]: ddca20a6db44c602 +Block 0010 [ 65]: ef338426828143e3 +Block 0010 [ 66]: dd54632ca39231d3 +Block 0010 [ 67]: da1a2aa2859745fe +Block 0010 [ 68]: 74c97c8b2f33815a +Block 0010 [ 69]: c587421d57acf7f7 +Block 0010 [ 70]: 40d9dac9740b5349 +Block 0010 [ 71]: 0079c459c34cbc1f +Block 0010 [ 72]: 11e22f1682a3d113 +Block 0010 [ 73]: 9f49acd929fb413a +Block 0010 [ 74]: 8d55e456f55ed16d +Block 0010 [ 75]: cde96d37e1873857 +Block 0010 [ 76]: d1085cc95b3f405c +Block 0010 [ 77]: 37d477127dbef7bb +Block 0010 [ 78]: ead42fea0cf6cc80 +Block 0010 [ 79]: 044df94d21ddf550 +Block 0010 [ 80]: c53012b904c24725 +Block 0010 [ 81]: 95525031d1d04639 +Block 0010 [ 82]: 3863c49fc1087d2c +Block 0010 [ 83]: e6cf4f4ff7ce84da +Block 0010 [ 84]: bf23a90a9ae33ca2 +Block 0010 [ 85]: c47710c3a39f7fb6 +Block 0010 [ 86]: 948a6ccc2dfebdde +Block 0010 [ 87]: 7e021070b78e487a +Block 0010 [ 88]: 8ca241ffb7134f11 +Block 0010 [ 89]: 53cc15226ffa4c7b +Block 0010 [ 90]: bda5cfd2e8dd1214 +Block 0010 [ 91]: 8013e83689e4af42 +Block 0010 [ 92]: 832f073728faedfc +Block 0010 [ 93]: 2b696689ba886915 +Block 0010 [ 94]: f0122a38f0387b7b +Block 0010 [ 95]: d937260fe6a46278 +Block 0010 [ 96]: b623d52be1e296b9 +Block 0010 [ 97]: b49b26e8a40c5ae9 +Block 0010 [ 98]: 070f2c1b5c164fbd +Block 0010 [ 99]: ae118485ef77d8a2 +Block 0010 [100]: 1ccd3e8d85b1349d +Block 0010 [101]: df681302bae21e79 +Block 0010 [102]: a3e3e386c1566cd8 +Block 0010 [103]: dbf2c62d8af9d80b +Block 0010 [104]: 3fbd2fe86a0b078c +Block 0010 [105]: fd47ca2204a21f5b +Block 0010 [106]: 29cae7cb46b8a80b +Block 0010 [107]: 591c6568a46874b5 +Block 0010 [108]: 3f9df5a1623a987c +Block 0010 [109]: 11078c2b31dc9255 +Block 0010 [110]: 573467550986e576 +Block 0010 [111]: 5e6d3a4952a53546 +Block 0010 [112]: f0028177e38f421f +Block 0010 [113]: faf300a788ac70f8 +Block 0010 [114]: 1d79e8592eccf877 +Block 0010 [115]: 9f54739a8ac85f76 +Block 0010 [116]: a9e12fbae12e7a33 +Block 0010 [117]: 2584032801e3d559 +Block 0010 [118]: 11ff32939bd33fc2 +Block 0010 [119]: dd1e2b237b40a4d5 +Block 0010 [120]: 40b45c342afb5ed2 +Block 0010 [121]: 61bebe9cc3085fd4 +Block 0010 [122]: f4414aa37eab423e +Block 0010 [123]: 883c290ebbd8386e +Block 0010 [124]: ceeee1728db78c38 +Block 0010 [125]: 1e9954eaf177ed07 +Block 0010 [126]: 80018b0ffa4ada6b +Block 0010 [127]: 69ea0fe2bdb6aa7a +Block 0011 [ 0]: d823f2ebb073e169 +Block 0011 [ 1]: 46519cc7f32a3184 +Block 0011 [ 2]: 4f848c9df11c5dda +Block 0011 [ 3]: 0f95888556fe6484 +Block 0011 [ 4]: 5911f3c5a44cdb8f +Block 0011 [ 5]: 047ccd76c309cd9d +Block 0011 [ 6]: 8c7b47757a961e06 +Block 0011 [ 7]: a04e66f30643b51a +Block 0011 [ 8]: 7e9952d3090e28c7 +Block 0011 [ 9]: 27affecba3781f12 +Block 0011 [ 10]: 9655174693d550f4 +Block 0011 [ 11]: ee56b2a2a45941c6 +Block 0011 [ 12]: 8444478ca6156892 +Block 0011 [ 13]: 2744ee006e719b9d +Block 0011 [ 14]: c206b56f3ad73389 +Block 0011 [ 15]: 90eeab895899816c +Block 0011 [ 16]: 47b96ec2889a0e0b +Block 0011 [ 17]: 42ad9f254176d076 +Block 0011 [ 18]: f2f0875c81641f2c +Block 0011 [ 19]: d22978dd69845640 +Block 0011 [ 20]: ac102ad40d55b4f2 +Block 0011 [ 21]: 7dd10f15753e0c69 +Block 0011 [ 22]: a5af151b885e7e1c +Block 0011 [ 23]: 0f61a9031d9ad58a +Block 0011 [ 24]: 96147a38e8dd8e86 +Block 0011 [ 25]: 03b33d8df8bd05c1 +Block 0011 [ 26]: 2eb2d3b258561281 +Block 0011 [ 27]: 10340f5f1464ceda +Block 0011 [ 28]: e84e6ce48d91c47c +Block 0011 [ 29]: 2f52565f4b181ee7 +Block 0011 [ 30]: 99a673ad0f52411c +Block 0011 [ 31]: d238746f84d376a7 +Block 0011 [ 32]: ca2e030fb3e59fac +Block 0011 [ 33]: b33a1e2a6e6c32c8 +Block 0011 [ 34]: 4f5c8d8b74603beb +Block 0011 [ 35]: 5815912b2102decb +Block 0011 [ 36]: a6342080776818bc +Block 0011 [ 37]: 65465d7fe8ba063c +Block 0011 [ 38]: 924c3979ef6625a7 +Block 0011 [ 39]: 5f7b5b4d3f1a7de7 +Block 0011 [ 40]: 1387c91b9e3db3c2 +Block 0011 [ 41]: 3f969d2f0cf22e3d +Block 0011 [ 42]: 2ca2cda6f702248a +Block 0011 [ 43]: 07c264c15cb53a0a +Block 0011 [ 44]: 4d68922b1bf0578f +Block 0011 [ 45]: 9f4c622f27a9a767 +Block 0011 [ 46]: 551068996b9b9536 +Block 0011 [ 47]: 5ce843c9978c4d5f +Block 0011 [ 48]: d2af7fa4b7eb3eca +Block 0011 [ 49]: 4f1f0be1f941743a +Block 0011 [ 50]: b4ac8888be21332c +Block 0011 [ 51]: 270213a33fd89c67 +Block 0011 [ 52]: 4c9a215ddea4eebd +Block 0011 [ 53]: d0d8fb405477e881 +Block 0011 [ 54]: 3228f4ef397151a0 +Block 0011 [ 55]: a65c58eff39fa3d3 +Block 0011 [ 56]: 69c1497ca3b35d50 +Block 0011 [ 57]: 6b3aefd106898e22 +Block 0011 [ 58]: f4c3551419449f2b +Block 0011 [ 59]: a83c18e589503f1c +Block 0011 [ 60]: c97a73e6930cd38c +Block 0011 [ 61]: d11ab42796550a96 +Block 0011 [ 62]: 21bb952c8d1522ba +Block 0011 [ 63]: b3efb673edd0a50f +Block 0011 [ 64]: 6f3405964b106ed3 +Block 0011 [ 65]: 0fd159cc65a4e29f +Block 0011 [ 66]: a446f1dadfe504ce +Block 0011 [ 67]: 09bf99d9e804173e +Block 0011 [ 68]: 8470e09c51c6888c +Block 0011 [ 69]: e322d994f8b8e653 +Block 0011 [ 70]: 03e5107f547300e7 +Block 0011 [ 71]: 231647ee75a19f77 +Block 0011 [ 72]: 792ebd93791dd994 +Block 0011 [ 73]: 6684d2596987264d +Block 0011 [ 74]: 990e8bb7a7203131 +Block 0011 [ 75]: e432392c73dfc169 +Block 0011 [ 76]: 6aa53e7f024864bb +Block 0011 [ 77]: 90b67a6404e4845e +Block 0011 [ 78]: cbb23f233d34e66f +Block 0011 [ 79]: ff24fa04d9641ec6 +Block 0011 [ 80]: 778a4af4e74881db +Block 0011 [ 81]: 55907243faa69d05 +Block 0011 [ 82]: 4d4eabb494518c3b +Block 0011 [ 83]: 51c8c63a21531614 +Block 0011 [ 84]: cb1f11f105d6527a +Block 0011 [ 85]: 8fa5d40948ca6b4b +Block 0011 [ 86]: aeec5faad1b394de +Block 0011 [ 87]: 566679c3acdfdc7f +Block 0011 [ 88]: 6aeaa509ee1684f3 +Block 0011 [ 89]: e5e1f3b93ab07726 +Block 0011 [ 90]: 8cc62c076b72fe44 +Block 0011 [ 91]: f050819d8070c2d8 +Block 0011 [ 92]: a1654238bfb3e902 +Block 0011 [ 93]: 3e144a6601da32e4 +Block 0011 [ 94]: 8533f4d5df28925b +Block 0011 [ 95]: a0bf7983730213ee +Block 0011 [ 96]: 2d567f30d0b78b29 +Block 0011 [ 97]: fc8ffa1db1747998 +Block 0011 [ 98]: 7a79aea920f07bf1 +Block 0011 [ 99]: 60af46d99fb415d9 +Block 0011 [100]: 98a8e3eac4feab2f +Block 0011 [101]: cde6076dc1e41778 +Block 0011 [102]: 81b0b241fbfd5723 +Block 0011 [103]: 54d86946e10611d4 +Block 0011 [104]: be570072842ef00c +Block 0011 [105]: da8ba670370d14d9 +Block 0011 [106]: c9a8c79266e18357 +Block 0011 [107]: 4662021e96128f26 +Block 0011 [108]: b8890ef03513d9bd +Block 0011 [109]: b1e765b25512b72b +Block 0011 [110]: acc815dc214f985a +Block 0011 [111]: f2ff2d27f6197b46 +Block 0011 [112]: b0a04bbe8189bd51 +Block 0011 [113]: 038adddc71436c5c +Block 0011 [114]: 78be2a6b143beef9 +Block 0011 [115]: d47ef4fc71fd2449 +Block 0011 [116]: 1ac251a8b10bdaa5 +Block 0011 [117]: 38b1bdca6eb395b5 +Block 0011 [118]: 91cdd37a5d6d2917 +Block 0011 [119]: 6468c1d2a90a4b95 +Block 0011 [120]: f38298e9fbc627c5 +Block 0011 [121]: 281974ebb62f612f +Block 0011 [122]: dae84d62736df3f7 +Block 0011 [123]: 883fd538755b4678 +Block 0011 [124]: 0cb05ee801034510 +Block 0011 [125]: 380a81fcaae4ffe7 +Block 0011 [126]: 1c67d5d638d87f6e +Block 0011 [127]: b411a4d3d2ec2e9a +Block 0012 [ 0]: 255a9eb92510e44c +Block 0012 [ 1]: ab09530dd4233898 +Block 0012 [ 2]: cc05fd96a7df19de +Block 0012 [ 3]: 5da89b50eb7b0b3a +Block 0012 [ 4]: 312be76cd0558c61 +Block 0012 [ 5]: 6f5bcb47082a3df8 +Block 0012 [ 6]: 9f3c3393b98d51af +Block 0012 [ 7]: 5920d6c03f222d41 +Block 0012 [ 8]: 6f8a719295acfb80 +Block 0012 [ 9]: 6d7eed73e7fe9237 +Block 0012 [ 10]: 50ef8a3b6ebca6e9 +Block 0012 [ 11]: 99630c77a40fd8a3 +Block 0012 [ 12]: 9f9c89e408a22382 +Block 0012 [ 13]: e7e28e5874c52548 +Block 0012 [ 14]: 622a178029f344dc +Block 0012 [ 15]: b67d1c8303474a0a +Block 0012 [ 16]: 8bcede5c0ce2b4bb +Block 0012 [ 17]: a8b113091a2d1018 +Block 0012 [ 18]: 6fb492543aef040b +Block 0012 [ 19]: 0fdd1b28f42219fd +Block 0012 [ 20]: 8747821d660abab9 +Block 0012 [ 21]: 1911fb0f8d6a8859 +Block 0012 [ 22]: 729b9d38a3a185ac +Block 0012 [ 23]: 22154ac1267c55f6 +Block 0012 [ 24]: 768581ee4cbf975a +Block 0012 [ 25]: d25cdb1b4eab5257 +Block 0012 [ 26]: c8d1be9a40ebb82a +Block 0012 [ 27]: 90fdbe85e0f2fa15 +Block 0012 [ 28]: 054f461c93f2cec6 +Block 0012 [ 29]: a7496a0a5b20aeff +Block 0012 [ 30]: e01336457c5f1c2f +Block 0012 [ 31]: 69b6b95906a2eeaf +Block 0012 [ 32]: af2080da4ac007b2 +Block 0012 [ 33]: dc62b604cb5a4602 +Block 0012 [ 34]: 2b75460cd6b53759 +Block 0012 [ 35]: 9c947680980c66e9 +Block 0012 [ 36]: 2046e8f3c6a206f6 +Block 0012 [ 37]: c7e1eb7be31fa0b7 +Block 0012 [ 38]: 10b8eb7cc13e0991 +Block 0012 [ 39]: bea9cad97d149702 +Block 0012 [ 40]: b024e48f310144e0 +Block 0012 [ 41]: b9567a121acd2beb +Block 0012 [ 42]: 13b54389c87bd0b9 +Block 0012 [ 43]: e840a59948b3ec6f +Block 0012 [ 44]: 4909028080039634 +Block 0012 [ 45]: 0940ce4447d5a1e3 +Block 0012 [ 46]: 7ace92df7b8ad234 +Block 0012 [ 47]: 70a2a6faedf67a19 +Block 0012 [ 48]: d95b9fa5d551d6ca +Block 0012 [ 49]: d28fea58f9706160 +Block 0012 [ 50]: 4f6a0afa04d55adc +Block 0012 [ 51]: 4aec847e4b35b540 +Block 0012 [ 52]: 4798eedea9043c96 +Block 0012 [ 53]: 29fcb2a949e28343 +Block 0012 [ 54]: 50fee2618212eac1 +Block 0012 [ 55]: a2deb2055db58493 +Block 0012 [ 56]: 2130cae1cfaa3b52 +Block 0012 [ 57]: ed2a5651338720be +Block 0012 [ 58]: 74f9f622c7c4cb2c +Block 0012 [ 59]: c7f914e1e1ee88e9 +Block 0012 [ 60]: 4dd5bdd2e0dfb82d +Block 0012 [ 61]: 761e7529cfa5d50a +Block 0012 [ 62]: aee434fec94bea69 +Block 0012 [ 63]: 4fb829ad4214b9a3 +Block 0012 [ 64]: 45a6f3618a66137b +Block 0012 [ 65]: 759f870df4bb89ff +Block 0012 [ 66]: d5d451ab02f2fb17 +Block 0012 [ 67]: 065ee57f45efe776 +Block 0012 [ 68]: c440fda2ebae75a1 +Block 0012 [ 69]: 3619f9566b18cb66 +Block 0012 [ 70]: 4f694a31736272c0 +Block 0012 [ 71]: 83dcedfe72f8a5a6 +Block 0012 [ 72]: fd5ed48b69e26467 +Block 0012 [ 73]: c3ad2a9085b2350a +Block 0012 [ 74]: 0fa2a974fa66c2c5 +Block 0012 [ 75]: 824b1a0c0e320544 +Block 0012 [ 76]: 481a05e369d0b679 +Block 0012 [ 77]: 88d130e03144508c +Block 0012 [ 78]: 8fee335301144988 +Block 0012 [ 79]: 07497f7f4f8f897f +Block 0012 [ 80]: ebadd1b8bab2e986 +Block 0012 [ 81]: 1fdc42aa71ec04af +Block 0012 [ 82]: c830f16a2bce327f +Block 0012 [ 83]: 5c3422bc14a97050 +Block 0012 [ 84]: 555dc50f03762d67 +Block 0012 [ 85]: 465d7bb016a6feb5 +Block 0012 [ 86]: 2846817750c5d35d +Block 0012 [ 87]: 39543ba8b29341bc +Block 0012 [ 88]: b57a159c3bb2983b +Block 0012 [ 89]: 83a82c2208e51f99 +Block 0012 [ 90]: 60af61a328b09433 +Block 0012 [ 91]: d88f44d23202be03 +Block 0012 [ 92]: d766959e1b39aee3 +Block 0012 [ 93]: f8f2f9fef0993a41 +Block 0012 [ 94]: 3d4ef27f410409b0 +Block 0012 [ 95]: be039e6fec5957e7 +Block 0012 [ 96]: 088f51f404d0521d +Block 0012 [ 97]: 9b65dc9f2cc2aede +Block 0012 [ 98]: dc7536661a38a7a6 +Block 0012 [ 99]: bdd0ab6161ff4b1f +Block 0012 [100]: 389e53c15ff15cfd +Block 0012 [101]: 5defd83b8336d489 +Block 0012 [102]: 82302e22360576cc +Block 0012 [103]: 63dbfb98dc759bf0 +Block 0012 [104]: d320499ef0240bff +Block 0012 [105]: 867e9e1e82eeea0b +Block 0012 [106]: 11892cf6c3b16ea4 +Block 0012 [107]: 97425b3f8cc22294 +Block 0012 [108]: 6b60c1ee9c86bcac +Block 0012 [109]: 8f670c048b878783 +Block 0012 [110]: 1cbc5ee997483f3f +Block 0012 [111]: 4e5f800e1f0ed9fb +Block 0012 [112]: ac4d54811845bca5 +Block 0012 [113]: 83d6a4180f6c8246 +Block 0012 [114]: 87152434ac5293c0 +Block 0012 [115]: d396cbfe0bc020d8 +Block 0012 [116]: 332f6ef4428d5b67 +Block 0012 [117]: 24cc04221d2e1699 +Block 0012 [118]: effe0e0dce6c104f +Block 0012 [119]: 1deeabd514dc5327 +Block 0012 [120]: 7d59839dee7245b2 +Block 0012 [121]: 0f700c906b853913 +Block 0012 [122]: a2d8cc9aaf4d3706 +Block 0012 [123]: b7e258900647c992 +Block 0012 [124]: 5bec1c3ad11b4eb1 +Block 0012 [125]: 6c80045a4fee4b05 +Block 0012 [126]: e1552dff02e38133 +Block 0012 [127]: 679e80e021c84ecd +Block 0013 [ 0]: 1723ee8ce9fe1cac +Block 0013 [ 1]: d2f1cf9a4efa84b5 +Block 0013 [ 2]: 21587dbfcad9c4f5 +Block 0013 [ 3]: 5f871948d46daee6 +Block 0013 [ 4]: 068d97e3ae68ef93 +Block 0013 [ 5]: d538dcb328807ab7 +Block 0013 [ 6]: 113a40488be45963 +Block 0013 [ 7]: 37012839c0b5d310 +Block 0013 [ 8]: 8d6f6941e2bd76e9 +Block 0013 [ 9]: aa2ffed5d74653c8 +Block 0013 [ 10]: e9164847b7b793b8 +Block 0013 [ 11]: b7539783560cb3ab +Block 0013 [ 12]: 8de392422de03196 +Block 0013 [ 13]: 7b38cb4bbe90d7f9 +Block 0013 [ 14]: 20a86166f8a23ddb +Block 0013 [ 15]: 8b97d267f05b6cfa +Block 0013 [ 16]: 911169ae5649dd39 +Block 0013 [ 17]: 768d987294702a52 +Block 0013 [ 18]: 8bdfb68d467ab96d +Block 0013 [ 19]: 9bf0c3c34022df10 +Block 0013 [ 20]: bc787b4af1321929 +Block 0013 [ 21]: a8a08098fa5e3ea1 +Block 0013 [ 22]: 7b2bb14c18b18dac +Block 0013 [ 23]: 2bf9072250cfbd58 +Block 0013 [ 24]: 10712cfa1552dc46 +Block 0013 [ 25]: 1fdedfc0b64c31dd +Block 0013 [ 26]: 7e366ca0e007c421 +Block 0013 [ 27]: f73cb101f76605d5 +Block 0013 [ 28]: c7f412423441e907 +Block 0013 [ 29]: d287f4339efbb55b +Block 0013 [ 30]: 9769f3f35d0f638b +Block 0013 [ 31]: 35208e3a65e08351 +Block 0013 [ 32]: 36fddf107a016fc4 +Block 0013 [ 33]: be86c0425851e7b0 +Block 0013 [ 34]: b941755a95f42f24 +Block 0013 [ 35]: aca5df3e21444d03 +Block 0013 [ 36]: a4a0384e3a78c869 +Block 0013 [ 37]: 010bbb7f8f85b95b +Block 0013 [ 38]: e55b719afc352f94 +Block 0013 [ 39]: acae794987894403 +Block 0013 [ 40]: bd806954f12b3ba8 +Block 0013 [ 41]: 7da659f1b0c29ad2 +Block 0013 [ 42]: e3b91d833ae0ecf4 +Block 0013 [ 43]: 8347b8bb6a793d24 +Block 0013 [ 44]: b488b65397e96b6d +Block 0013 [ 45]: 5be99ed08c53a17d +Block 0013 [ 46]: a1ca5de1c1efcbae +Block 0013 [ 47]: 689c9bdec537707d +Block 0013 [ 48]: cf934aabeb0cb430 +Block 0013 [ 49]: fb07ca7786243a5a +Block 0013 [ 50]: 9777c81195f714d5 +Block 0013 [ 51]: 74d6b3d255765f83 +Block 0013 [ 52]: d00c729a6e17621e +Block 0013 [ 53]: a5286754e36a2203 +Block 0013 [ 54]: 7adcc00eeff68ddc +Block 0013 [ 55]: 9a2e26a365eff54d +Block 0013 [ 56]: 9cabb250d5fa0e23 +Block 0013 [ 57]: 0938223fe49c9b73 +Block 0013 [ 58]: 21de6e98149643e5 +Block 0013 [ 59]: 333f16a2bafe6b2e +Block 0013 [ 60]: 8cb6959855ac3912 +Block 0013 [ 61]: d0a62347d3e64023 +Block 0013 [ 62]: 0a60c2b8e08acf42 +Block 0013 [ 63]: 1ef0860ef26f3312 +Block 0013 [ 64]: 30d01dfc4917ece0 +Block 0013 [ 65]: d85ea32036c4831c +Block 0013 [ 66]: b28f30aee13c8a12 +Block 0013 [ 67]: 65fa8757876a80ed +Block 0013 [ 68]: 29042b6a76ac23ec +Block 0013 [ 69]: 72b48bf0a7a0e204 +Block 0013 [ 70]: 894b73d9ef351322 +Block 0013 [ 71]: b2c87ae7c7e6d450 +Block 0013 [ 72]: 48cd6faeb75b7817 +Block 0013 [ 73]: 68461c999cea7fea +Block 0013 [ 74]: 1214f93aae6260ed +Block 0013 [ 75]: 0cb603e467252906 +Block 0013 [ 76]: 9cd6831e38c65b5a +Block 0013 [ 77]: 65c0a8e3497f195f +Block 0013 [ 78]: 7b0d1aecc3c1795c +Block 0013 [ 79]: 62993f6f4b2c06a8 +Block 0013 [ 80]: 5641d96b7e258f5a +Block 0013 [ 81]: 8420cc555ff8fe86 +Block 0013 [ 82]: 7bb68c81a5e30422 +Block 0013 [ 83]: 61e4006de902467f +Block 0013 [ 84]: c2e36bc580b71a6d +Block 0013 [ 85]: 797567bb6f7b5f08 +Block 0013 [ 86]: c1c88c12cd86592e +Block 0013 [ 87]: 0f381934cb0eb20b +Block 0013 [ 88]: e3fd14470d2fb3b1 +Block 0013 [ 89]: 5ad7c316da0754ab +Block 0013 [ 90]: 2fd4793ba5ce45d3 +Block 0013 [ 91]: 160895ed4541c2ea +Block 0013 [ 92]: e4c8a7fc865ef8fc +Block 0013 [ 93]: c20c133ca98bc6dc +Block 0013 [ 94]: 35006a7edd252d4a +Block 0013 [ 95]: 087391913b15a62e +Block 0013 [ 96]: df00d5e689294f1a +Block 0013 [ 97]: 91574a55e924a080 +Block 0013 [ 98]: 31b5d04701a2f55d +Block 0013 [ 99]: cc6255b36e700629 +Block 0013 [100]: e23b9c536e5388ad +Block 0013 [101]: 4f73f1b7fb7c103b +Block 0013 [102]: 59e564baecaac210 +Block 0013 [103]: 593a399aa604bb7e +Block 0013 [104]: 4f844dcf478e5a28 +Block 0013 [105]: c5a527ec4bf2ceef +Block 0013 [106]: 646f87228d0f36ac +Block 0013 [107]: ef7b4c95a2c43d9a +Block 0013 [108]: c7175c798fc1cebc +Block 0013 [109]: fb091b378f8cd986 +Block 0013 [110]: 3e6ad6b16c8dd94d +Block 0013 [111]: 5781768ab765ed4e +Block 0013 [112]: f82a9a6a9cbb2a7a +Block 0013 [113]: 88213573967f2637 +Block 0013 [114]: f9fdec29c0653e8b +Block 0013 [115]: 28029582a0c7a607 +Block 0013 [116]: 08f4d18472a711b7 +Block 0013 [117]: 46f99803f13ab2a0 +Block 0013 [118]: b8850f6995e1e41c +Block 0013 [119]: baaeaa2334a63967 +Block 0013 [120]: d833632166dfe229 +Block 0013 [121]: af0d68b77fb4b447 +Block 0013 [122]: 2ae378be285f6729 +Block 0013 [123]: 627e3307d7300095 +Block 0013 [124]: 200c8902704a45f8 +Block 0013 [125]: 343efdcf7c4ffa75 +Block 0013 [126]: bb6dc112ef5e114b +Block 0013 [127]: d159229bbf65f47c +Block 0014 [ 0]: 3dd943aa31f9a0b1 +Block 0014 [ 1]: c5bc6fd1670258cb +Block 0014 [ 2]: 18e6da67d66b9d53 +Block 0014 [ 3]: 81b4aa65e75e9b58 +Block 0014 [ 4]: d6cd172a4942404c +Block 0014 [ 5]: bdfe9d1b90dc4cf7 +Block 0014 [ 6]: e774682eba357510 +Block 0014 [ 7]: 9bf9e106f2cd11f2 +Block 0014 [ 8]: cbb5a04871e1a89f +Block 0014 [ 9]: 546e0edc7e7fc7e3 +Block 0014 [ 10]: cc7f7879341493c4 +Block 0014 [ 11]: fc96d04ca1ae2938 +Block 0014 [ 12]: 287b2d8c7efff3f1 +Block 0014 [ 13]: 20bc2acd3175e0c3 +Block 0014 [ 14]: 6cac2eb9def0d010 +Block 0014 [ 15]: b25cd833fd0b0574 +Block 0014 [ 16]: 88ea49aca89c0d1d +Block 0014 [ 17]: 52f984ec11c6cbc5 +Block 0014 [ 18]: 103c897b024d6b14 +Block 0014 [ 19]: a8c5efeb3fbe112f +Block 0014 [ 20]: 8ac8deaf1292e525 +Block 0014 [ 21]: 7ce42b5ef1ce3574 +Block 0014 [ 22]: b79c78fc9d327ad0 +Block 0014 [ 23]: 2188e50592bc5be2 +Block 0014 [ 24]: 495d110805fadcd4 +Block 0014 [ 25]: 2a9d1c998c7c3540 +Block 0014 [ 26]: 0395da083459ffd4 +Block 0014 [ 27]: 498ecca4b155842c +Block 0014 [ 28]: e381623e361cf077 +Block 0014 [ 29]: 8d07c9891cc2f309 +Block 0014 [ 30]: d02d5dc9f6cca3cb +Block 0014 [ 31]: fed2d25cec28e05c +Block 0014 [ 32]: c9e92f090bf0d04c +Block 0014 [ 33]: 47a0990fa9157507 +Block 0014 [ 34]: 7e1bf44a16c871bb +Block 0014 [ 35]: 9f6c048c95381368 +Block 0014 [ 36]: 8063de969373331e +Block 0014 [ 37]: 7324b36e0b9f90de +Block 0014 [ 38]: a07493f91f829c82 +Block 0014 [ 39]: 23cae39877ead327 +Block 0014 [ 40]: 8dd2a700ff49698b +Block 0014 [ 41]: 676482fa3081bc05 +Block 0014 [ 42]: cad059f5f87db5ce +Block 0014 [ 43]: dc8480c0389142cd +Block 0014 [ 44]: f116d8e5fe656eec +Block 0014 [ 45]: cf3f2882b2e22c4a +Block 0014 [ 46]: 7e168a8d46c08b5c +Block 0014 [ 47]: 13b2d64679c8f22f +Block 0014 [ 48]: 6c2725e46c4c33ee +Block 0014 [ 49]: 20c13cc1814b51b5 +Block 0014 [ 50]: caa64bc4dbc09904 +Block 0014 [ 51]: 054539afaca09ca4 +Block 0014 [ 52]: 4f8bcdc220da40c7 +Block 0014 [ 53]: 700931050e282836 +Block 0014 [ 54]: 2e05c642fb88539a +Block 0014 [ 55]: bb8e2fa2b15b66cd +Block 0014 [ 56]: 166a88d4afe3b3a6 +Block 0014 [ 57]: f576f0924284caf9 +Block 0014 [ 58]: 09340b71709aee33 +Block 0014 [ 59]: b82d179ec03a5d78 +Block 0014 [ 60]: c532af4d7e5cc29a +Block 0014 [ 61]: 7f67a63723bd08d0 +Block 0014 [ 62]: 7a277c9c32390651 +Block 0014 [ 63]: 7998e89ea54051cb +Block 0014 [ 64]: 51aec979c6fb169d +Block 0014 [ 65]: e38fa59e7f37e8a0 +Block 0014 [ 66]: e6e78774d14022e6 +Block 0014 [ 67]: c09c69967c73416f +Block 0014 [ 68]: 94d52919c6ab33bd +Block 0014 [ 69]: 7db4b6c8e6f8791a +Block 0014 [ 70]: f8b7978d2cb7365b +Block 0014 [ 71]: 4d85b5c76fa67522 +Block 0014 [ 72]: 483495d94dcec2fc +Block 0014 [ 73]: ec09c3a7b1e17f3a +Block 0014 [ 74]: 596bb09b4d921b21 +Block 0014 [ 75]: 850a53a2f88792fa +Block 0014 [ 76]: 9d99c3421c09d6c2 +Block 0014 [ 77]: 24453adc8bf994cc +Block 0014 [ 78]: bd76bcd6b7a011d5 +Block 0014 [ 79]: 396ca885fbec8c16 +Block 0014 [ 80]: fc6bb33caee725ee +Block 0014 [ 81]: 2a080b313e6c4f2d +Block 0014 [ 82]: 86ec7cb50654b1ba +Block 0014 [ 83]: 0b92269a68747a49 +Block 0014 [ 84]: a98e133d367630a6 +Block 0014 [ 85]: 75b450bfdad3ef46 +Block 0014 [ 86]: 6813552bd0497e69 +Block 0014 [ 87]: f07fe4afdb8ea39d +Block 0014 [ 88]: 54d6068dbeb342e0 +Block 0014 [ 89]: a15aaf21c44ee8d0 +Block 0014 [ 90]: b63ee2cbe2c95663 +Block 0014 [ 91]: 166f73caabf49c4c +Block 0014 [ 92]: 76c8835f88e53e8c +Block 0014 [ 93]: ba720e37091d56c5 +Block 0014 [ 94]: f2fb3992b75480ea +Block 0014 [ 95]: 70100e90ad4018bc +Block 0014 [ 96]: e05af6957917481d +Block 0014 [ 97]: 22d8926bca1eea81 +Block 0014 [ 98]: 41e68fc80ea5f78a +Block 0014 [ 99]: 0db147a5541b7be8 +Block 0014 [100]: 6fa71cc135c40318 +Block 0014 [101]: c3a5d25e006850f5 +Block 0014 [102]: 78dd6b4586b53616 +Block 0014 [103]: 956f727c8d423a5a +Block 0014 [104]: 13a2c0b038967c05 +Block 0014 [105]: 81188925c367f9ae +Block 0014 [106]: 61d42f2b5c2bafff +Block 0014 [107]: 94e70ed21445617c +Block 0014 [108]: e3c84a00a8a71f34 +Block 0014 [109]: 9dfd45ca105a6a1c +Block 0014 [110]: 6b4b2fa24d42cf81 +Block 0014 [111]: 5d61008fbef90a71 +Block 0014 [112]: 6d901238e1b52e4e +Block 0014 [113]: 5babe5134ec46268 +Block 0014 [114]: 69f295aedc81d28d +Block 0014 [115]: faccc7d986350652 +Block 0014 [116]: e974271561377bb4 +Block 0014 [117]: 0e06e727ece35f86 +Block 0014 [118]: 03649503edee0552 +Block 0014 [119]: 3a19e21c2c08225f +Block 0014 [120]: 983714b28acfa352 +Block 0014 [121]: aec143ba15c3ae13 +Block 0014 [122]: eda04483d75a4442 +Block 0014 [123]: 1915bf9e51452160 +Block 0014 [124]: 14bbe5004ccafb94 +Block 0014 [125]: 160191ad91cfa45c +Block 0014 [126]: 5797b27c188b9f46 +Block 0014 [127]: 07ef94bd73c522ec +Block 0015 [ 0]: 1fcd62604579cf9a +Block 0015 [ 1]: f7472d4cf4966feb +Block 0015 [ 2]: 40070f3f8b371041 +Block 0015 [ 3]: 1c5f4fa46291cff6 +Block 0015 [ 4]: 50d96202fa98746f +Block 0015 [ 5]: 28bae24d7859cd0f +Block 0015 [ 6]: 6f29c3214bf42a3f +Block 0015 [ 7]: 0f43542ad0d68908 +Block 0015 [ 8]: 64f7623b19206023 +Block 0015 [ 9]: 0e5bb2b9695c3f2b +Block 0015 [ 10]: 4bd6cf02b5053f13 +Block 0015 [ 11]: 3cf06693539f0209 +Block 0015 [ 12]: 933c76f4958f88c7 +Block 0015 [ 13]: 224ba767c721b85e +Block 0015 [ 14]: bd89d30e7b07f405 +Block 0015 [ 15]: 621659f508fea9c1 +Block 0015 [ 16]: 93b29390eb009b18 +Block 0015 [ 17]: cb0b2c63381c225e +Block 0015 [ 18]: a9df8f2f799b3895 +Block 0015 [ 19]: 9540633258d0559b +Block 0015 [ 20]: 5799b367a1035c27 +Block 0015 [ 21]: ab039ef579d12f72 +Block 0015 [ 22]: fd4e1f97bbcec3f9 +Block 0015 [ 23]: 58020468792e3149 +Block 0015 [ 24]: f80fbbef9020ba14 +Block 0015 [ 25]: edb184adc37f8bac +Block 0015 [ 26]: ddf6607be258d11b +Block 0015 [ 27]: d6d3c7b02fd17a59 +Block 0015 [ 28]: 61f878685218fbfe +Block 0015 [ 29]: c4e7098d87c5131e +Block 0015 [ 30]: e3b30f966a024bcf +Block 0015 [ 31]: 7042a343ad0ac25d +Block 0015 [ 32]: 57c131ab1ce93055 +Block 0015 [ 33]: 587673bd57cbc69f +Block 0015 [ 34]: 027e042e33b06a63 +Block 0015 [ 35]: 1f8adfff35f9340c +Block 0015 [ 36]: 7d4d3c87affa8399 +Block 0015 [ 37]: 4ee69b09b0b7ff8c +Block 0015 [ 38]: 7362cbcb388e62fb +Block 0015 [ 39]: 1f610ec02a68ba5b +Block 0015 [ 40]: 9f7de6ce0b8ed8ab +Block 0015 [ 41]: ba792317ef6dbc5c +Block 0015 [ 42]: 1132f78837fea094 +Block 0015 [ 43]: 40a59b89aa43d01e +Block 0015 [ 44]: 6a09803f185e3ff2 +Block 0015 [ 45]: 07c1eecad1350467 +Block 0015 [ 46]: 09d90f88782c0bfe +Block 0015 [ 47]: b35c6cfa35224654 +Block 0015 [ 48]: 823bce98edaaecba +Block 0015 [ 49]: cbafd6a0c0bb6e02 +Block 0015 [ 50]: 61fe96f3b326f598 +Block 0015 [ 51]: 4fb52b9081149314 +Block 0015 [ 52]: 91663e8113a6ce4e +Block 0015 [ 53]: d476a59721dd319f +Block 0015 [ 54]: e4ccc1ce980d0c4c +Block 0015 [ 55]: f25acea299080098 +Block 0015 [ 56]: e90608f35587edff +Block 0015 [ 57]: aefcf2950ba5b9d9 +Block 0015 [ 58]: cc1af8155c48305f +Block 0015 [ 59]: 53dcfac38ec8f86f +Block 0015 [ 60]: fc1bb1f2e32d255b +Block 0015 [ 61]: 99284548c15668e5 +Block 0015 [ 62]: 27a476f03f858b6f +Block 0015 [ 63]: b825e395361306bc +Block 0015 [ 64]: dac2f0f879838706 +Block 0015 [ 65]: 386a43788954e7b6 +Block 0015 [ 66]: 1386add44c82e486 +Block 0015 [ 67]: 08f3bc30f205f92a +Block 0015 [ 68]: 472237068205e714 +Block 0015 [ 69]: 1201daecc5585bf1 +Block 0015 [ 70]: c5220e46003ba5af +Block 0015 [ 71]: c868b77f92aa8ee9 +Block 0015 [ 72]: a420eaa74ae15349 +Block 0015 [ 73]: 012441dcfc778c24 +Block 0015 [ 74]: e17ee3e175498905 +Block 0015 [ 75]: a95c4b9354624bd9 +Block 0015 [ 76]: 9fbfee215c9f6c86 +Block 0015 [ 77]: cc06de59a8c1d3cd +Block 0015 [ 78]: 15de5b29f117cd89 +Block 0015 [ 79]: c5afb057b3707956 +Block 0015 [ 80]: 46ddbeb2548e5444 +Block 0015 [ 81]: 7acaa8b02a4ee9d1 +Block 0015 [ 82]: f2c310c24529d4fd +Block 0015 [ 83]: 4687e251ff0c69de +Block 0015 [ 84]: 0637bec2b4fa9428 +Block 0015 [ 85]: cf3cf91402099626 +Block 0015 [ 86]: f5367cfdb8e40c50 +Block 0015 [ 87]: fee6d52ad443fd1f +Block 0015 [ 88]: 3729210175b2e368 +Block 0015 [ 89]: 61034e7d4b15c174 +Block 0015 [ 90]: e967558ab3fb8207 +Block 0015 [ 91]: 1b5d9942a291afc5 +Block 0015 [ 92]: 0042a21711dfe84e +Block 0015 [ 93]: c7e5cc3dfae41eb5 +Block 0015 [ 94]: 8d6815ea8462e1e0 +Block 0015 [ 95]: 24ddc84f6012c07a +Block 0015 [ 96]: dde6c9697b197fb7 +Block 0015 [ 97]: c1d334ede0e974a0 +Block 0015 [ 98]: 9b6e88f1fac64efc +Block 0015 [ 99]: 73a77f1cec717036 +Block 0015 [100]: 00ae8968991efbc1 +Block 0015 [101]: 2fcd04ae7f546d1d +Block 0015 [102]: 0a740ec11d3a5148 +Block 0015 [103]: 45b310eb7fd15383 +Block 0015 [104]: 4c958457fa24116a +Block 0015 [105]: 03da5f6480bda485 +Block 0015 [106]: 7f35c38b67402824 +Block 0015 [107]: 656b4a01fd263d60 +Block 0015 [108]: aad8afd7d59def4f +Block 0015 [109]: 75cf46c914b75c59 +Block 0015 [110]: ed93be8debefe186 +Block 0015 [111]: 9b7ec89183978119 +Block 0015 [112]: e20f3d6e8843d5c1 +Block 0015 [113]: d7bb812401bebff1 +Block 0015 [114]: 3f8d6dd1ecc81f66 +Block 0015 [115]: bc14386a3526f895 +Block 0015 [116]: 7e5b6f713419c4c1 +Block 0015 [117]: 2a64698fce16995d +Block 0015 [118]: d000adb7e6c0e4cd +Block 0015 [119]: 434f679a9fc3e1fe +Block 0015 [120]: dd426ee945045809 +Block 0015 [121]: 65aae23f6aea9ad2 +Block 0015 [122]: 7143ebecafad3dca +Block 0015 [123]: da4bd54be8467ce8 +Block 0015 [124]: f0fa70e0d98c6d2b +Block 0015 [125]: aea09c38188881df +Block 0015 [126]: 0e157482fd1280cd +Block 0015 [127]: 2ff51beaf585df53 +Block 0016 [ 0]: 828f2c485352fa60 +Block 0016 [ 1]: ee9c2f3cdcdb75e7 +Block 0016 [ 2]: 6d2e391e86d67ea9 +Block 0016 [ 3]: 596b9e719c06cc50 +Block 0016 [ 4]: 975e16e18ae5361c +Block 0016 [ 5]: 5c298c05b5f32e6e +Block 0016 [ 6]: 2916891dda24445a +Block 0016 [ 7]: 9f4a2af86a69d3e2 +Block 0016 [ 8]: 9d73dc719f872257 +Block 0016 [ 9]: b85fdf131fd717bf +Block 0016 [ 10]: 684eb6e9ed1c01e2 +Block 0016 [ 11]: 58839608215647dd +Block 0016 [ 12]: 206f268b4bb14be4 +Block 0016 [ 13]: 3d5b535329a6e403 +Block 0016 [ 14]: 2d568898552d4f8d +Block 0016 [ 15]: cfa37381a03a351c +Block 0016 [ 16]: c5028c29947c2d50 +Block 0016 [ 17]: 5a1d933fbd3848d5 +Block 0016 [ 18]: f59bf46a0f063ed1 +Block 0016 [ 19]: f6918f04111ddf7e +Block 0016 [ 20]: 7c1a166bb214a687 +Block 0016 [ 21]: 030c31f7244caa61 +Block 0016 [ 22]: cdb9751e424616cd +Block 0016 [ 23]: 4f3781a5f53bfa20 +Block 0016 [ 24]: 3b738ad910526fe5 +Block 0016 [ 25]: 34ab1ab51eb39bbf +Block 0016 [ 26]: 17f0896ca1d91ba2 +Block 0016 [ 27]: b26a95d6456610bc +Block 0016 [ 28]: 03dc598e5cb3b7bb +Block 0016 [ 29]: e1fb90ce6575dec7 +Block 0016 [ 30]: 51d6e111b898b9c9 +Block 0016 [ 31]: 3f4558387cd2857d +Block 0016 [ 32]: 2ac861cb9daba66e +Block 0016 [ 33]: fda318969d2509d3 +Block 0016 [ 34]: d1ab2a61acf0255f +Block 0016 [ 35]: 0a9e98014ff5cf4b +Block 0016 [ 36]: ff43d5718bf7cbb3 +Block 0016 [ 37]: 72c67b78b2e7f5bd +Block 0016 [ 38]: a86c7fe600e056bd +Block 0016 [ 39]: db522fb8a02ae5b5 +Block 0016 [ 40]: e1e0e75d8068687f +Block 0016 [ 41]: 3c941e212ba6b1e9 +Block 0016 [ 42]: 45569ae66e23158f +Block 0016 [ 43]: df5c11c7b63709ae +Block 0016 [ 44]: 983865fb4f8604c9 +Block 0016 [ 45]: 7e9b885b83d8778d +Block 0016 [ 46]: 111f961443264301 +Block 0016 [ 47]: 9cfd8ed196e60d9e +Block 0016 [ 48]: bf7213b901a84b8e +Block 0016 [ 49]: c978661dccd27fff +Block 0016 [ 50]: 332866198ac75a46 +Block 0016 [ 51]: 1c2a325ed328f960 +Block 0016 [ 52]: 3c90439149af1767 +Block 0016 [ 53]: 64358b7436fd7e49 +Block 0016 [ 54]: 4f1b49d1a5ab7c61 +Block 0016 [ 55]: c0020c4113fa374c +Block 0016 [ 56]: 011fb18c45527243 +Block 0016 [ 57]: e3307f47d8975757 +Block 0016 [ 58]: f11e000f080d427f +Block 0016 [ 59]: 8a1c4f73ecc4cc6c +Block 0016 [ 60]: ede7aa790f594024 +Block 0016 [ 61]: 1e9da7f180802051 +Block 0016 [ 62]: b61dde0eb7fbd6a7 +Block 0016 [ 63]: 18f38ca82589db1e +Block 0016 [ 64]: 1528f9a1be07c0e7 +Block 0016 [ 65]: b4db60957f7f7843 +Block 0016 [ 66]: 2ae17ca586b28099 +Block 0016 [ 67]: ca802df042e060a0 +Block 0016 [ 68]: 66e6272aa9b71072 +Block 0016 [ 69]: c6936825f7ea9448 +Block 0016 [ 70]: ef51f540db1acddd +Block 0016 [ 71]: 8e369ac72e128edd +Block 0016 [ 72]: ec3326007dfed530 +Block 0016 [ 73]: 481e96df8097d470 +Block 0016 [ 74]: a24dcf16cfcf0fd2 +Block 0016 [ 75]: fb2479a8d49620df +Block 0016 [ 76]: 23414d1bad1076ab +Block 0016 [ 77]: c38b43413e97af83 +Block 0016 [ 78]: b41ff2ea8766dea1 +Block 0016 [ 79]: 3b7889f6916fe377 +Block 0016 [ 80]: fb186b87a016d7e7 +Block 0016 [ 81]: f9f91628758f3d8a +Block 0016 [ 82]: 8e03f7277994f2bb +Block 0016 [ 83]: 3765d40583c11dd6 +Block 0016 [ 84]: 6eee2373f6845dc4 +Block 0016 [ 85]: 2d2c93802e0b7b1f +Block 0016 [ 86]: 9b56e3de8c9284ac +Block 0016 [ 87]: 949074807d4ae859 +Block 0016 [ 88]: fa061f193f91a1e2 +Block 0016 [ 89]: 866754e4d501c4e1 +Block 0016 [ 90]: f0f62ee9946919c2 +Block 0016 [ 91]: bc6601547ee7ea0a +Block 0016 [ 92]: 86ddb62db8a4ad05 +Block 0016 [ 93]: 7c2ca09bb50b0457 +Block 0016 [ 94]: dacdf825d404c6a8 +Block 0016 [ 95]: aa08d84ff6cba406 +Block 0016 [ 96]: f6535c1116e5584d +Block 0016 [ 97]: 3e704757e9cde846 +Block 0016 [ 98]: d45aeab671b384c2 +Block 0016 [ 99]: 3d62e2b86d26fcbc +Block 0016 [100]: 8646641e89e86d48 +Block 0016 [101]: 7228a5842048e2f8 +Block 0016 [102]: 5b119dd26a1e68fd +Block 0016 [103]: 429a898d9d3ce5d7 +Block 0016 [104]: cc6e4b52a982d9e0 +Block 0016 [105]: d103b261bcdbeca3 +Block 0016 [106]: b8a7f23f4e37272f +Block 0016 [107]: 394e766157d29364 +Block 0016 [108]: de712ec28a18e23a +Block 0016 [109]: 0099369d1b32a993 +Block 0016 [110]: c2e3a4bd0b76be77 +Block 0016 [111]: 0a114ec44e541a6c +Block 0016 [112]: 4bf70291b97e5fab +Block 0016 [113]: 58a20499d06c57b5 +Block 0016 [114]: 61475e499642a467 +Block 0016 [115]: 7236975c5f0543a2 +Block 0016 [116]: ff5105b25e9e2406 +Block 0016 [117]: 0bc2e103b353c08f +Block 0016 [118]: 11661c9354381a9c +Block 0016 [119]: 007a690c3be22cf7 +Block 0016 [120]: dfc24ca0f9fe2f3d +Block 0016 [121]: 3e0f8b301beff690 +Block 0016 [122]: 64fcc11a9d2784ff +Block 0016 [123]: e09df3c52e21b280 +Block 0016 [124]: ee0b7ad59d2e4023 +Block 0016 [125]: aae7d5b2bb5fea4b +Block 0016 [126]: 959230be28937e41 +Block 0016 [127]: dba56bccbac64216 +Block 0017 [ 0]: ce89ee786b4ad569 +Block 0017 [ 1]: 7f47eb49a6a2def9 +Block 0017 [ 2]: 917b0181dd4105a1 +Block 0017 [ 3]: 07237dccaedf6cd3 +Block 0017 [ 4]: 12929ecda91d89f6 +Block 0017 [ 5]: 00b197a5047feea3 +Block 0017 [ 6]: 0c297a666e52cddc +Block 0017 [ 7]: 7434d14db56879b2 +Block 0017 [ 8]: bcb39c6b20f1f1df +Block 0017 [ 9]: cbb3b0039d74b088 +Block 0017 [ 10]: 7f59794de02e8ecb +Block 0017 [ 11]: 0b00abbd728f59f5 +Block 0017 [ 12]: 953a6e0bfc2990fb +Block 0017 [ 13]: 757fa841f8272e10 +Block 0017 [ 14]: b3a6ad2578bf0524 +Block 0017 [ 15]: 01580bb744060c8c +Block 0017 [ 16]: 09f46e44bb89ab50 +Block 0017 [ 17]: bff0a3e576ce3a29 +Block 0017 [ 18]: 57e01d4799886e73 +Block 0017 [ 19]: fcbd0ba0b95b90c8 +Block 0017 [ 20]: 5915db9b56ccf74b +Block 0017 [ 21]: 3d5047a4c1b29cc4 +Block 0017 [ 22]: d44becc901d3505c +Block 0017 [ 23]: 7a63ffe683770972 +Block 0017 [ 24]: 282df0a2d43f0d8e +Block 0017 [ 25]: 819737a32c170191 +Block 0017 [ 26]: 18639d1ca84fd3de +Block 0017 [ 27]: 139d002bc502eed1 +Block 0017 [ 28]: cc15c143c4160e0b +Block 0017 [ 29]: ca15cd9ed3ceee15 +Block 0017 [ 30]: cd914797b4580e11 +Block 0017 [ 31]: d30007cd76eb5135 +Block 0017 [ 32]: a6b3d1c21f962019 +Block 0017 [ 33]: e9e17570fbf99c2d +Block 0017 [ 34]: 06b7f2b094af388b +Block 0017 [ 35]: 3a69df521f36251c +Block 0017 [ 36]: aa87a601f41bd67e +Block 0017 [ 37]: 9229f8b1a24e5b67 +Block 0017 [ 38]: 5ab8c75edb0059b0 +Block 0017 [ 39]: 56643d5fca625320 +Block 0017 [ 40]: ed6fa0b07679d6cc +Block 0017 [ 41]: 7a926a3962dce5f0 +Block 0017 [ 42]: 2e7c1a857712e07d +Block 0017 [ 43]: 4dbb3257c9e970c9 +Block 0017 [ 44]: 0ba7bfae2aa6d059 +Block 0017 [ 45]: 1e2693085a857605 +Block 0017 [ 46]: 8c4dc6356e6b63bc +Block 0017 [ 47]: e7a68e11969060d9 +Block 0017 [ 48]: af934b59932e7ce5 +Block 0017 [ 49]: 422b2f5359c2a256 +Block 0017 [ 50]: 1f1b19d8966dc78a +Block 0017 [ 51]: 660b8ae28928d1a2 +Block 0017 [ 52]: 392835f375a3af76 +Block 0017 [ 53]: 3c6935b1b3486332 +Block 0017 [ 54]: c31ea11b1e409293 +Block 0017 [ 55]: b21e17ef8df2ef53 +Block 0017 [ 56]: dc4178e3d0a64cb0 +Block 0017 [ 57]: fa75d4ad1fa3d373 +Block 0017 [ 58]: 4eac80114c6c6158 +Block 0017 [ 59]: 55f95b24bbb020ab +Block 0017 [ 60]: 16e59f5e48cd1bb6 +Block 0017 [ 61]: f9b03ec078552e6e +Block 0017 [ 62]: be5279d4eb39a799 +Block 0017 [ 63]: 328f860bd398d08b +Block 0017 [ 64]: 5a2703aecc6123b4 +Block 0017 [ 65]: 3c536d8d1b2c0a62 +Block 0017 [ 66]: bbc3db06535d4571 +Block 0017 [ 67]: 3268741c1d27962a +Block 0017 [ 68]: a3805e8aba7ea59e +Block 0017 [ 69]: 9cfbfe725de47a2a +Block 0017 [ 70]: decf2774dbfa59fd +Block 0017 [ 71]: a72c3ba7a281d12d +Block 0017 [ 72]: d72902af4fd00bcd +Block 0017 [ 73]: 76390014d18f1677 +Block 0017 [ 74]: ee8e96345cf54d5f +Block 0017 [ 75]: b922dd921b1fb99e +Block 0017 [ 76]: f37ec8053e0a744b +Block 0017 [ 77]: 2b251571cb4e3ae8 +Block 0017 [ 78]: 148910b407121353 +Block 0017 [ 79]: e137db2fd45ee69d +Block 0017 [ 80]: d3a8552ea211ac6c +Block 0017 [ 81]: e39ebc4e55c4e37a +Block 0017 [ 82]: 3d3f2f341fefd6ef +Block 0017 [ 83]: a15f09d4c3515aa4 +Block 0017 [ 84]: ddcfe559098640f8 +Block 0017 [ 85]: 52fefc5d7f069b8d +Block 0017 [ 86]: abf081ef47ab4cbd +Block 0017 [ 87]: 3a9858342a54b761 +Block 0017 [ 88]: 4efe1d20e12d73c5 +Block 0017 [ 89]: a6d1453039a41e47 +Block 0017 [ 90]: b1d47dae231d0d96 +Block 0017 [ 91]: f0e2ce92b7dfde39 +Block 0017 [ 92]: 156f6ba6e2c11d91 +Block 0017 [ 93]: d6684423fcccdaf0 +Block 0017 [ 94]: 871ceabb32883b09 +Block 0017 [ 95]: a436eb1d424978a5 +Block 0017 [ 96]: aba685bbc36e6d44 +Block 0017 [ 97]: 801ca6d910fd784c +Block 0017 [ 98]: dd575ba7405b9867 +Block 0017 [ 99]: 315ede332333372d +Block 0017 [100]: 12b3dd1cecdd07fc +Block 0017 [101]: a70b713c012a83d6 +Block 0017 [102]: 40688d2f420f956f +Block 0017 [103]: d5b2cc8a746b8091 +Block 0017 [104]: 2c1d498434463441 +Block 0017 [105]: 61fd1e197d6f8f86 +Block 0017 [106]: 1c51a98dd35e3943 +Block 0017 [107]: e44df0b88a454f73 +Block 0017 [108]: 8bef184df0b10365 +Block 0017 [109]: 7d2fd9f74196fa5e +Block 0017 [110]: 467821ae9c30a343 +Block 0017 [111]: 8dfa81eac2bf791c +Block 0017 [112]: 68591ee38e2be85e +Block 0017 [113]: 4c20506c12f9c8cb +Block 0017 [114]: af9e7d7413a73de9 +Block 0017 [115]: f4da9e2ec5bae137 +Block 0017 [116]: b06eae767eda651b +Block 0017 [117]: a7708b469b78bfe1 +Block 0017 [118]: dc46cbb4f8f38ff5 +Block 0017 [119]: 57e84ca7c9457579 +Block 0017 [120]: ac9f054f49663052 +Block 0017 [121]: 7f1de271ca02e347 +Block 0017 [122]: 15a54e4e09cd829b +Block 0017 [123]: 39a9d0616902cc17 +Block 0017 [124]: e1553e5d4ba03e55 +Block 0017 [125]: cb4e29473f8d4e18 +Block 0017 [126]: e016eab995590f27 +Block 0017 [127]: e5c9315c3fe9e037 +Block 0018 [ 0]: d73e6cb4f600d92e +Block 0018 [ 1]: 4ff7703a923020fe +Block 0018 [ 2]: 4411633c5a210fb1 +Block 0018 [ 3]: fd544fe9e0e9fdaa +Block 0018 [ 4]: 067626b375f3e8b4 +Block 0018 [ 5]: f64824c7a0c9bdf0 +Block 0018 [ 6]: 65507b2d7cb1fb42 +Block 0018 [ 7]: 97fb9eb3215e84b6 +Block 0018 [ 8]: 35912760e121dba3 +Block 0018 [ 9]: 70d05b2b45d3fcb3 +Block 0018 [ 10]: 6f3c9f75e54cb571 +Block 0018 [ 11]: 50b765e15fb480b2 +Block 0018 [ 12]: 5c1a3001a2530b03 +Block 0018 [ 13]: 256ad981d34f716e +Block 0018 [ 14]: f233c26131fd0541 +Block 0018 [ 15]: 1bd106c75c804353 +Block 0018 [ 16]: f22341bd2cd671b4 +Block 0018 [ 17]: 36126083ed04bd4c +Block 0018 [ 18]: 06ab2af20b4d85a4 +Block 0018 [ 19]: f34414b1c4800e19 +Block 0018 [ 20]: eb1dcf5c4c788abb +Block 0018 [ 21]: da8b8fdee6a4b98a +Block 0018 [ 22]: 2d11a43e6b207fda +Block 0018 [ 23]: 56765cf6baf60079 +Block 0018 [ 24]: 33dd629347c11c5e +Block 0018 [ 25]: f7eda83186e4886e +Block 0018 [ 26]: 2aebe5a3f0b4b297 +Block 0018 [ 27]: 5382619de4eb3788 +Block 0018 [ 28]: 4684d6997e414414 +Block 0018 [ 29]: 9dee04efbe7b2e82 +Block 0018 [ 30]: 6f0a3cd1e45ac162 +Block 0018 [ 31]: dd84e7982526cdbd +Block 0018 [ 32]: f4b17125344b6916 +Block 0018 [ 33]: 25eddc5a7fe26243 +Block 0018 [ 34]: db8c36c50f7bc812 +Block 0018 [ 35]: 58fbe2f0d288772e +Block 0018 [ 36]: 6b49d7be66155606 +Block 0018 [ 37]: e1f9c8ea25df1450 +Block 0018 [ 38]: 16e995512253005a +Block 0018 [ 39]: 37c3d7d37d78351b +Block 0018 [ 40]: e949d536bc8d6387 +Block 0018 [ 41]: 9efef5f12072a753 +Block 0018 [ 42]: 867fafe2afc9a465 +Block 0018 [ 43]: 0dafd80edaaa5872 +Block 0018 [ 44]: 6952f071a1c64048 +Block 0018 [ 45]: 56bff386a78386f3 +Block 0018 [ 46]: 9760b6f85d0c5c4d +Block 0018 [ 47]: eda2dcbb0efb9077 +Block 0018 [ 48]: b1d892f1748b0004 +Block 0018 [ 49]: 2e122bfcbdcf902e +Block 0018 [ 50]: 0ec3ebd60bac9671 +Block 0018 [ 51]: 975c7b0e154db60f +Block 0018 [ 52]: 3c0c3947068dac74 +Block 0018 [ 53]: 0370cfde4fc9316b +Block 0018 [ 54]: 056b25931cd1ee5b +Block 0018 [ 55]: f6f424d19e6afbe6 +Block 0018 [ 56]: e0ef6348fffb105a +Block 0018 [ 57]: 0d23302398aa31d5 +Block 0018 [ 58]: 1066b74ec1400fa9 +Block 0018 [ 59]: 2a05cd7fce6a2910 +Block 0018 [ 60]: eb51397926f7d88a +Block 0018 [ 61]: 728f3bd5238b8cb0 +Block 0018 [ 62]: 72a124a00a7a4df1 +Block 0018 [ 63]: d2db366281f2bdbc +Block 0018 [ 64]: 6e2f9b75321efbae +Block 0018 [ 65]: 7f514005c44610d9 +Block 0018 [ 66]: cf19d6e9232b1a5c +Block 0018 [ 67]: f8abdf7c86dcd958 +Block 0018 [ 68]: c3f1174767399f88 +Block 0018 [ 69]: 9245d5ef34aaaac6 +Block 0018 [ 70]: 60ca2b939a60556d +Block 0018 [ 71]: 868adc9ef194e4d4 +Block 0018 [ 72]: 1386a0335edcd1eb +Block 0018 [ 73]: 6a23a25059e5f2a8 +Block 0018 [ 74]: 2d641127b0301ef5 +Block 0018 [ 75]: daefe2bb3a31a00e +Block 0018 [ 76]: 2c11b078b722b266 +Block 0018 [ 77]: 6a23c72c4b218626 +Block 0018 [ 78]: fe528c5309492c9c +Block 0018 [ 79]: fdca411f1c0afa6d +Block 0018 [ 80]: f76b41c6ab138d85 +Block 0018 [ 81]: 989699d1634c6df6 +Block 0018 [ 82]: e8a767bac83906bc +Block 0018 [ 83]: caefa4594e0dd565 +Block 0018 [ 84]: 3f4c782be2bcb4a8 +Block 0018 [ 85]: 8197ac8d57d06e73 +Block 0018 [ 86]: 61278eca7c5c1e5f +Block 0018 [ 87]: 229b2d380d87d45c +Block 0018 [ 88]: 21b608cd3f165344 +Block 0018 [ 89]: c0ffd42b993ea5dd +Block 0018 [ 90]: 78dafbd6d85212d6 +Block 0018 [ 91]: 4ca01529d90f1566 +Block 0018 [ 92]: 8a60560d75426e37 +Block 0018 [ 93]: 07017df87b5faa68 +Block 0018 [ 94]: d480dba8df4ee24f +Block 0018 [ 95]: 171853f0c7b9e99f +Block 0018 [ 96]: b77ae974ab8f2c8f +Block 0018 [ 97]: b3ede770aa3bb08b +Block 0018 [ 98]: 945ba501a3770bf1 +Block 0018 [ 99]: 3fe6e485d4993670 +Block 0018 [100]: 56a70e0511dff037 +Block 0018 [101]: 5a7b44bcf455425e +Block 0018 [102]: 13b8f7ceb3154c5b +Block 0018 [103]: a6ce1a824666c259 +Block 0018 [104]: 0f85b8ebc2b82e58 +Block 0018 [105]: e51da2e0d636f019 +Block 0018 [106]: 14af0a6aa3d06111 +Block 0018 [107]: 1f28c97aa3505adc +Block 0018 [108]: aaf9a553387b914d +Block 0018 [109]: d1e1cad1e47e6ef9 +Block 0018 [110]: 990bbd3ef7b12da5 +Block 0018 [111]: feb392b66f7f164d +Block 0018 [112]: 5a9ec205e41b7b8a +Block 0018 [113]: 0df4470a3854ce68 +Block 0018 [114]: a4324c6a3b2998c9 +Block 0018 [115]: 305d72d1ffaece34 +Block 0018 [116]: de4ae4a306ed3089 +Block 0018 [117]: 15c9c221e4856d2e +Block 0018 [118]: 822ce405f96cabcb +Block 0018 [119]: 6f9d0074fdfa6fcb +Block 0018 [120]: 50eeefcb50d1e0fb +Block 0018 [121]: a8ca87a02c7dd5f5 +Block 0018 [122]: 87e6756b1c1f9a88 +Block 0018 [123]: c83b55d91835afd4 +Block 0018 [124]: f8b21499a265096b +Block 0018 [125]: d2c88fc6864098d1 +Block 0018 [126]: d31599a122ec4b33 +Block 0018 [127]: b2a8a53f6cc6c035 +Block 0019 [ 0]: c0a747c4e28329e1 +Block 0019 [ 1]: e5903abdd4685ea0 +Block 0019 [ 2]: f624dbf4eab2eac1 +Block 0019 [ 3]: a7bdb44367b6d439 +Block 0019 [ 4]: bb398b8a231ca85e +Block 0019 [ 5]: e4204b07902d3f6e +Block 0019 [ 6]: 4cf5c1556e8a6a99 +Block 0019 [ 7]: 8e4b37c7c8196407 +Block 0019 [ 8]: 9b9c40f5d78e30aa +Block 0019 [ 9]: e7ab522bc1a9e428 +Block 0019 [ 10]: e598184e9e82ac8d +Block 0019 [ 11]: 85d11f6a0ec8e397 +Block 0019 [ 12]: feb1e8fb825dfa31 +Block 0019 [ 13]: 093d569d83fd45ec +Block 0019 [ 14]: aba7cb862bd83ccf +Block 0019 [ 15]: b903dd3e66e5fad7 +Block 0019 [ 16]: 6c9163634e7d4721 +Block 0019 [ 17]: 3891d444fc59e86c +Block 0019 [ 18]: 106020d458ffd0b1 +Block 0019 [ 19]: 70c32531ff689b86 +Block 0019 [ 20]: f2c322c30200d1bb +Block 0019 [ 21]: 0ba7383adf6e0690 +Block 0019 [ 22]: 2467345100b70ae8 +Block 0019 [ 23]: b158590311fe6486 +Block 0019 [ 24]: 484daadfb022e2af +Block 0019 [ 25]: b1097ef6f21175bd +Block 0019 [ 26]: 270dabd2d26940b9 +Block 0019 [ 27]: 18983ac19d92c698 +Block 0019 [ 28]: a8b17d5ba3423a19 +Block 0019 [ 29]: a87220ce023ac5bc +Block 0019 [ 30]: a36bb40525f87baf +Block 0019 [ 31]: 4bf5ed1ea08d2b1d +Block 0019 [ 32]: 9c7dceaf23358f5b +Block 0019 [ 33]: 5e6b6a50b9317e1b +Block 0019 [ 34]: fba24c695b6d9940 +Block 0019 [ 35]: 44e6d0d7c8f3c59d +Block 0019 [ 36]: 7e1b616776b587d3 +Block 0019 [ 37]: a335932288c6b015 +Block 0019 [ 38]: 70029a6ff40cbc91 +Block 0019 [ 39]: bf199bf017a4dd32 +Block 0019 [ 40]: 4d0e92e558b43b51 +Block 0019 [ 41]: 19752bbee2635be6 +Block 0019 [ 42]: 9eaaf852febb4173 +Block 0019 [ 43]: 766784a43f0a887e +Block 0019 [ 44]: 7c6d151066f51ced +Block 0019 [ 45]: 24f6521ec26f2069 +Block 0019 [ 46]: 4e960d6ea50022ea +Block 0019 [ 47]: 9049d12e39ce2484 +Block 0019 [ 48]: fd2ff51c2f5f8821 +Block 0019 [ 49]: ccf41c9939ca7d20 +Block 0019 [ 50]: e50aee1c5e97559b +Block 0019 [ 51]: 92b6559486a3382b +Block 0019 [ 52]: e649679609765362 +Block 0019 [ 53]: af60c4de383ea2c1 +Block 0019 [ 54]: 4e208398efa77945 +Block 0019 [ 55]: 1d01cc680dc510e6 +Block 0019 [ 56]: 70ed10fb8a669ee6 +Block 0019 [ 57]: 4ad094cc1b463933 +Block 0019 [ 58]: d1c6678cb703cf1e +Block 0019 [ 59]: 5932c03c8411ca45 +Block 0019 [ 60]: 7a3f6207de673d9c +Block 0019 [ 61]: 08c1ead7ae9bc357 +Block 0019 [ 62]: 3aed1f0b8721f33b +Block 0019 [ 63]: 4f9b463e022ebb8b +Block 0019 [ 64]: e21373749f526c05 +Block 0019 [ 65]: 15f877a94e4cc28c +Block 0019 [ 66]: b6f4ee9b7a853074 +Block 0019 [ 67]: feddee4b7089ab99 +Block 0019 [ 68]: 177cbe49bb7f1c47 +Block 0019 [ 69]: d2f486e7840fa52e +Block 0019 [ 70]: 1efbe813d77b3386 +Block 0019 [ 71]: 204ad6780ac5dbda +Block 0019 [ 72]: 4ef70ce7237e9423 +Block 0019 [ 73]: 56c850fae048f8d5 +Block 0019 [ 74]: 272f156eb2b5e4f1 +Block 0019 [ 75]: fdaed8f20cbb428f +Block 0019 [ 76]: 7dd9edf940b064e2 +Block 0019 [ 77]: 2ba1f25cd640890d +Block 0019 [ 78]: cd62db094c06521c +Block 0019 [ 79]: fd309eaa17862655 +Block 0019 [ 80]: fdd1a5f7f2e77ef6 +Block 0019 [ 81]: 2ced967d6a27fbb5 +Block 0019 [ 82]: d13b492e289631cb +Block 0019 [ 83]: 0299503d00b6af73 +Block 0019 [ 84]: 037ebf2f3ab92248 +Block 0019 [ 85]: d1eba5f6791d01af +Block 0019 [ 86]: 2a8c256540a80ec6 +Block 0019 [ 87]: e5d327a9af2ffed5 +Block 0019 [ 88]: 7238fd1a386a597b +Block 0019 [ 89]: 8305be11f9cd3923 +Block 0019 [ 90]: 7ac3169632caca5d +Block 0019 [ 91]: e711a9fda50e3844 +Block 0019 [ 92]: 3f2ec23d73a53df1 +Block 0019 [ 93]: e85438d9247b7063 +Block 0019 [ 94]: 369701c20fc048b8 +Block 0019 [ 95]: f147196fe629cad4 +Block 0019 [ 96]: eff4bd0fe6e9d785 +Block 0019 [ 97]: 55b98aae7df801f8 +Block 0019 [ 98]: 473bd8bf72e9d80f +Block 0019 [ 99]: 372113d6a79fbd61 +Block 0019 [100]: 5ec994ad59527b5d +Block 0019 [101]: 370957d1ba5eb9cd +Block 0019 [102]: b94bf1c3a9b67714 +Block 0019 [103]: c384f86146bce9a9 +Block 0019 [104]: ae5905325523c818 +Block 0019 [105]: 313d63f1a1ca488e +Block 0019 [106]: 408bd8f292c44421 +Block 0019 [107]: 2c7809887d5a742e +Block 0019 [108]: e481163da10fd561 +Block 0019 [109]: 5aac3786bf38ed9d +Block 0019 [110]: 61a76e808c1333c3 +Block 0019 [111]: 9b7955f93efbd457 +Block 0019 [112]: d3281738a72230e2 +Block 0019 [113]: 170818a8479da122 +Block 0019 [114]: c62bf1703287d997 +Block 0019 [115]: 032a13da2248d702 +Block 0019 [116]: dddbcd0ac02f9f71 +Block 0019 [117]: 713bae2d25fa4e42 +Block 0019 [118]: fd8ae9d115a20f7c +Block 0019 [119]: 229ceef5f318ddce +Block 0019 [120]: 1f29d53de834e081 +Block 0019 [121]: bb291d7d59f10f19 +Block 0019 [122]: b8dbcf3c3f3583bb +Block 0019 [123]: 9753f2819307b322 +Block 0019 [124]: ebd2fb222df580fc +Block 0019 [125]: c948516bf1b366d1 +Block 0019 [126]: 52cdc69534a37726 +Block 0019 [127]: 2ef56f44cf9436f9 +Block 0020 [ 0]: 734e629a628dd5de +Block 0020 [ 1]: 5a58aafa604d7cea +Block 0020 [ 2]: decd1fa291ea7349 +Block 0020 [ 3]: a6d23612f86139d7 +Block 0020 [ 4]: a5af09fbf4a787ac +Block 0020 [ 5]: ef9d693b8a2de764 +Block 0020 [ 6]: 505c1353a5bae511 +Block 0020 [ 7]: 1200f97cfd770359 +Block 0020 [ 8]: 477d6b28d05cf49c +Block 0020 [ 9]: b8e6c1e506c7b188 +Block 0020 [ 10]: 4c3ed38e467d8962 +Block 0020 [ 11]: ff09466393490693 +Block 0020 [ 12]: f42acf0d7a204245 +Block 0020 [ 13]: 4c828fbde0a65ff1 +Block 0020 [ 14]: 63aab903dc0ea9fb +Block 0020 [ 15]: f7dd14cd6009a8e8 +Block 0020 [ 16]: c25eebdc89fdf70d +Block 0020 [ 17]: 430f2f1baa30da8c +Block 0020 [ 18]: dbc784f1638697ff +Block 0020 [ 19]: e6e761901024928c +Block 0020 [ 20]: 63f5db6ab1252d0c +Block 0020 [ 21]: a16b91f6d5ee2d14 +Block 0020 [ 22]: f8460fc61abc3765 +Block 0020 [ 23]: e5a7daf71f12150f +Block 0020 [ 24]: 8727e6edc4cb70f7 +Block 0020 [ 25]: f5fb5eac08f0ee73 +Block 0020 [ 26]: d5d2b60b4cbb1b7d +Block 0020 [ 27]: 0bc179a997f53853 +Block 0020 [ 28]: 88d40013d3c597da +Block 0020 [ 29]: 8520fd776fea57d1 +Block 0020 [ 30]: ff41c92a18c1f5e6 +Block 0020 [ 31]: 7d1170ecd08a140f +Block 0020 [ 32]: 9e9ecb61bdbecba1 +Block 0020 [ 33]: 8a05443ef9e3fd46 +Block 0020 [ 34]: 49ee58c153b1c903 +Block 0020 [ 35]: c4809f9cebbb67c1 +Block 0020 [ 36]: 8d05a31a29871b15 +Block 0020 [ 37]: 1f7fe6dbf3a2d1ff +Block 0020 [ 38]: 1d462a2121191cf8 +Block 0020 [ 39]: e752ebf763b17942 +Block 0020 [ 40]: 3f9d429a5326ea77 +Block 0020 [ 41]: ead587a738e81dcb +Block 0020 [ 42]: a9bcdecf85c217fd +Block 0020 [ 43]: a26d47b8c1238157 +Block 0020 [ 44]: 651a66b3bb581f2c +Block 0020 [ 45]: cfa955096506a3f7 +Block 0020 [ 46]: 035c92416aae689b +Block 0020 [ 47]: 87b078db6f37b7ec +Block 0020 [ 48]: 488698e807ebe8de +Block 0020 [ 49]: dacebd9d66eff4fb +Block 0020 [ 50]: 576420c8fb5df97f +Block 0020 [ 51]: 59c8ff43f450eef5 +Block 0020 [ 52]: c24907642efa69f8 +Block 0020 [ 53]: c2780f0f0ca49e23 +Block 0020 [ 54]: b8b7ed7ed06fe78a +Block 0020 [ 55]: dba3e1ea470d7fc5 +Block 0020 [ 56]: 8afdb154ef51f907 +Block 0020 [ 57]: 0f6e3c0f727f3195 +Block 0020 [ 58]: 155cc979261a61f4 +Block 0020 [ 59]: 2fa61a7f141c36c9 +Block 0020 [ 60]: 03ea29e722963040 +Block 0020 [ 61]: 0b872d389e13e0f1 +Block 0020 [ 62]: af9883b7f36b8a79 +Block 0020 [ 63]: e423bfee1d544df7 +Block 0020 [ 64]: c6a2b6850e3d148d +Block 0020 [ 65]: 2bded84ad45688c0 +Block 0020 [ 66]: 012306a6d0350fc4 +Block 0020 [ 67]: e241389275cbae09 +Block 0020 [ 68]: 35817c5ede994e82 +Block 0020 [ 69]: e8e061fe79ffa788 +Block 0020 [ 70]: a7047fdafab17a66 +Block 0020 [ 71]: 9b283ba2aacc46ca +Block 0020 [ 72]: 48df0e8e03643311 +Block 0020 [ 73]: d5bb8debb5655152 +Block 0020 [ 74]: e6067c7db547dabf +Block 0020 [ 75]: 6be963ea0e0aed0a +Block 0020 [ 76]: 6b33437061cb8be1 +Block 0020 [ 77]: d0bd3e644206102e +Block 0020 [ 78]: 78a388f73a7b53a6 +Block 0020 [ 79]: 5d24627ef8abb4f9 +Block 0020 [ 80]: 055be9e53c43c554 +Block 0020 [ 81]: e32509d26029caa5 +Block 0020 [ 82]: b3d8f6b2fd6bb726 +Block 0020 [ 83]: 2b4c4351318bdbc7 +Block 0020 [ 84]: df8a4d376a62be6f +Block 0020 [ 85]: 275bc692f96b3a4b +Block 0020 [ 86]: 3b91dbf87b274d2e +Block 0020 [ 87]: b0d17c2b706ebdc5 +Block 0020 [ 88]: e25acdbf9bdf0f66 +Block 0020 [ 89]: a5af03b271405b48 +Block 0020 [ 90]: a2a1d259bb89d2dd +Block 0020 [ 91]: ec334f738b812ea8 +Block 0020 [ 92]: 2b4502c4ef6d706c +Block 0020 [ 93]: 5d59dbc73eb0c655 +Block 0020 [ 94]: 62dd5829cecbfab6 +Block 0020 [ 95]: 61d3300680db7001 +Block 0020 [ 96]: ff825644b486bc24 +Block 0020 [ 97]: fa770c7fc3c288b3 +Block 0020 [ 98]: 5993533c0cc4f3ae +Block 0020 [ 99]: 3c8fb5b08245af96 +Block 0020 [100]: dec90adee7025117 +Block 0020 [101]: fb6af315a87846e5 +Block 0020 [102]: cb6df9e5f37b9030 +Block 0020 [103]: 46a9e3bf64dd2107 +Block 0020 [104]: 91bba1949e9e2858 +Block 0020 [105]: 89b5583cf4442bb0 +Block 0020 [106]: 2ef8ecf98a0d53a0 +Block 0020 [107]: a3fd11ccd3d2e41e +Block 0020 [108]: 197f99094a56452b +Block 0020 [109]: 893307690eeda57e +Block 0020 [110]: 04027b05e83cf5dd +Block 0020 [111]: 4e0240c99df4a613 +Block 0020 [112]: acfc2275643fdab0 +Block 0020 [113]: f63b244b2fbd5148 +Block 0020 [114]: edab8427721c3f75 +Block 0020 [115]: 72d7f7d722f2065e +Block 0020 [116]: a822ddfd1bc95aa2 +Block 0020 [117]: 9e6ff4809803e545 +Block 0020 [118]: 8dd66544283171fb +Block 0020 [119]: ddac6524728f6767 +Block 0020 [120]: a798cc0c897cbc15 +Block 0020 [121]: 3eee203dd63489c5 +Block 0020 [122]: 84ec9fb95b124ef8 +Block 0020 [123]: a52586f61e51857b +Block 0020 [124]: d62a8a6195a96220 +Block 0020 [125]: e64fbb51d72dadcc +Block 0020 [126]: 77256737a1bfb5b0 +Block 0020 [127]: b8de0df9be9d957e +Block 0021 [ 0]: 48f20b10689f4e83 +Block 0021 [ 1]: 39e62f37a525d865 +Block 0021 [ 2]: 4e47ab2acb135d33 +Block 0021 [ 3]: c42c2049323a9ce2 +Block 0021 [ 4]: 7026754810320262 +Block 0021 [ 5]: fdabf4cc98d526f2 +Block 0021 [ 6]: de98230ccc90e91d +Block 0021 [ 7]: 091a9b3d240576e6 +Block 0021 [ 8]: 68afd8c0f731cc3f +Block 0021 [ 9]: c78bf9764d661a01 +Block 0021 [ 10]: 5bea6ba0ff4287bb +Block 0021 [ 11]: 45454840c15c0c3e +Block 0021 [ 12]: b35b87954cbcddb5 +Block 0021 [ 13]: 573a5477da3314cb +Block 0021 [ 14]: 70f7bf27c2ce76a8 +Block 0021 [ 15]: e4368c992fceecac +Block 0021 [ 16]: ba96394ad6d02e53 +Block 0021 [ 17]: 641bfb72dc066998 +Block 0021 [ 18]: 65e25ca33cccf184 +Block 0021 [ 19]: ed8d73c34e56770a +Block 0021 [ 20]: 720a1d1d280cf938 +Block 0021 [ 21]: 75ced9e0e3a035af +Block 0021 [ 22]: c88e8062d9f9c06b +Block 0021 [ 23]: 00fef53c0c05d145 +Block 0021 [ 24]: 67cf04ecd6d30055 +Block 0021 [ 25]: 8377a625564c8266 +Block 0021 [ 26]: f688bacf63fe2148 +Block 0021 [ 27]: f6fcdfe3932894fb +Block 0021 [ 28]: 951c5ecc941392f9 +Block 0021 [ 29]: 3250b3ba358c5582 +Block 0021 [ 30]: 90b4f720fa9e460c +Block 0021 [ 31]: f963935871671ca0 +Block 0021 [ 32]: eceeb74ebc564d21 +Block 0021 [ 33]: b39c5c19445b7b9f +Block 0021 [ 34]: 0c7997285ec7189b +Block 0021 [ 35]: 2ecb5769ee985f73 +Block 0021 [ 36]: 83c9fcfabb40a364 +Block 0021 [ 37]: 0d792da304cc4f2c +Block 0021 [ 38]: c812537235db19f0 +Block 0021 [ 39]: ae460c73e6c63488 +Block 0021 [ 40]: 08a215922c6041de +Block 0021 [ 41]: c97a377b4a718b36 +Block 0021 [ 42]: fca614307204c74a +Block 0021 [ 43]: 3ef0c90941c10f62 +Block 0021 [ 44]: ebe065caa726b6ba +Block 0021 [ 45]: 587f7d1fb0a2cc4c +Block 0021 [ 46]: 4982d8334e60f667 +Block 0021 [ 47]: c1df28b2ec657562 +Block 0021 [ 48]: 02f1ea6a2701137e +Block 0021 [ 49]: b9a461776c3fd823 +Block 0021 [ 50]: d0324040a86b75a4 +Block 0021 [ 51]: ad3fd886752ccf0d +Block 0021 [ 52]: f1918a52c6e8c4df +Block 0021 [ 53]: d1b7ad59e221c111 +Block 0021 [ 54]: f5f4a3e2afd0f619 +Block 0021 [ 55]: 65ead9ca48410c43 +Block 0021 [ 56]: 1f5bac3f2b3a0481 +Block 0021 [ 57]: 6c750bb2492f27e5 +Block 0021 [ 58]: 47d3af1c99ff70f5 +Block 0021 [ 59]: 3f9213b0e327063a +Block 0021 [ 60]: 5df60788e29688d2 +Block 0021 [ 61]: 8cb58a31f2df38b8 +Block 0021 [ 62]: ac6f9bb436912716 +Block 0021 [ 63]: 0fd04153e2dff0b8 +Block 0021 [ 64]: 77194b4b3557e8c6 +Block 0021 [ 65]: ab697cf5b4580f90 +Block 0021 [ 66]: 3ed2f55b7a42844a +Block 0021 [ 67]: 604a957093fae6a0 +Block 0021 [ 68]: e5b816f30faf227c +Block 0021 [ 69]: 344c389ed851b0a7 +Block 0021 [ 70]: e4cda77cbf72b80f +Block 0021 [ 71]: 4ef8b3e43d395020 +Block 0021 [ 72]: a10e58d927f9f9b4 +Block 0021 [ 73]: 49b8db015f4dae6c +Block 0021 [ 74]: dcf8799bd62305f6 +Block 0021 [ 75]: 0aae21512005eda1 +Block 0021 [ 76]: a425eb287bb0d675 +Block 0021 [ 77]: 624d06068c67cb67 +Block 0021 [ 78]: 9ba0e3ab7d63b33f +Block 0021 [ 79]: e7883082beee3ea5 +Block 0021 [ 80]: 72a7baae685ab8fa +Block 0021 [ 81]: 77624b29d9937c07 +Block 0021 [ 82]: fd015836bb1dd973 +Block 0021 [ 83]: fc334f9178f9b1ba +Block 0021 [ 84]: 0dc2b5797a4fc547 +Block 0021 [ 85]: 632ab6ef84e992dc +Block 0021 [ 86]: da79d4b3e5c42721 +Block 0021 [ 87]: 6b75fb145aaf3905 +Block 0021 [ 88]: 76b4485790fb7531 +Block 0021 [ 89]: b6f39ef0d1f3215b +Block 0021 [ 90]: 7edd8123d87869e5 +Block 0021 [ 91]: 5670f2bc2d962483 +Block 0021 [ 92]: 5d574c361b64ecc4 +Block 0021 [ 93]: 6b57df741d9a6420 +Block 0021 [ 94]: 78e76645eddb15fd +Block 0021 [ 95]: f4383deaae902412 +Block 0021 [ 96]: 3a81a7f781de1169 +Block 0021 [ 97]: 1bcf6da80c7a9f6a +Block 0021 [ 98]: 39c5577fd931dd80 +Block 0021 [ 99]: b16dfc78e8f90081 +Block 0021 [100]: f833577181c9b58e +Block 0021 [101]: 55fe82a0d6b525ec +Block 0021 [102]: 32f776a8dfa3c62e +Block 0021 [103]: e0e24059fb11ef83 +Block 0021 [104]: bb196f3c2e138f6e +Block 0021 [105]: 668483f4d9d9afe8 +Block 0021 [106]: fdc40fd165bd8d81 +Block 0021 [107]: 2e3eca136e35b37a +Block 0021 [108]: 3fe1ab36fb63b066 +Block 0021 [109]: 3ab084f6f91109cc +Block 0021 [110]: ea32e83f7d7f53cc +Block 0021 [111]: 9bd8c601a541a041 +Block 0021 [112]: 056399de05e2d664 +Block 0021 [113]: 84bee8b3ad9a1002 +Block 0021 [114]: 53b65ae6f2ac7620 +Block 0021 [115]: 1266879844255f8f +Block 0021 [116]: f1b1e45e64da8ace +Block 0021 [117]: ef8fb8ebe51bfe21 +Block 0021 [118]: 834b1615e554d69d +Block 0021 [119]: bc44d1a4080cff7b +Block 0021 [120]: 60642bf7a867e050 +Block 0021 [121]: 0b0d757e35e73640 +Block 0021 [122]: 5909d96b6a9defef +Block 0021 [123]: c60ce5d733fd4646 +Block 0021 [124]: f5a292fb1e0043ed +Block 0021 [125]: 40f6cfb2c8902681 +Block 0021 [126]: 0dec03fdf115dfc2 +Block 0021 [127]: c985316bfe35e532 +Block 0022 [ 0]: 804791fca9c1392b +Block 0022 [ 1]: e4c1e426881c2e87 +Block 0022 [ 2]: 344b8889ea4ad4ac +Block 0022 [ 3]: 1a04e6befb3d575b +Block 0022 [ 4]: 5bef6e064c648074 +Block 0022 [ 5]: 11c161d08bf9428f +Block 0022 [ 6]: d067ddca34550faf +Block 0022 [ 7]: 69ef5611390631e5 +Block 0022 [ 8]: 6afe225214318138 +Block 0022 [ 9]: 80af3c0b4b02a81a +Block 0022 [ 10]: 14bf5b64af634b3f +Block 0022 [ 11]: 9abcb0455be97f1d +Block 0022 [ 12]: ea75c0baee66705c +Block 0022 [ 13]: fe701bea2d3b26ca +Block 0022 [ 14]: 67c4c6258ed27322 +Block 0022 [ 15]: 429a289edde69d6e +Block 0022 [ 16]: f4f4c2d615d9a7be +Block 0022 [ 17]: 59f7a6c990794400 +Block 0022 [ 18]: 0bdd7b9e5fcb9d42 +Block 0022 [ 19]: c853bb1b4bca7df7 +Block 0022 [ 20]: 52f6bc0c799da19a +Block 0022 [ 21]: 943bdeab5accea7b +Block 0022 [ 22]: 73d7bd65c013fa43 +Block 0022 [ 23]: 1ad34d66c52d0ec5 +Block 0022 [ 24]: b6094fcbf860e74a +Block 0022 [ 25]: e7422f4d5128dcb5 +Block 0022 [ 26]: 87ef0706c8c88aad +Block 0022 [ 27]: ea9163e940b85771 +Block 0022 [ 28]: 0042fd3e3c33bbb3 +Block 0022 [ 29]: 16afcdb6b697a7f8 +Block 0022 [ 30]: 82a36bc54241dc84 +Block 0022 [ 31]: 3c32121ed362c31a +Block 0022 [ 32]: 71b3b15fbb31d804 +Block 0022 [ 33]: 7f11cdbd64ac602b +Block 0022 [ 34]: 6c2c665c0c0b1422 +Block 0022 [ 35]: 13273bca3537684c +Block 0022 [ 36]: d2797a8549da57c7 +Block 0022 [ 37]: f486e3f08054fbb8 +Block 0022 [ 38]: 2749de998f4434bb +Block 0022 [ 39]: b04d3f88514a28bf +Block 0022 [ 40]: 89e0e0f8e42d378a +Block 0022 [ 41]: 9635003f04a988b6 +Block 0022 [ 42]: ba273189836e43a2 +Block 0022 [ 43]: a3e7e916b15ec2ed +Block 0022 [ 44]: 933afb5cbbc5a346 +Block 0022 [ 45]: b2fe858fb64c56ec +Block 0022 [ 46]: 93397c330c834d3b +Block 0022 [ 47]: 9ac6374db29ba4af +Block 0022 [ 48]: 9abbf0baf99066b9 +Block 0022 [ 49]: 53fe093bcfa30abf +Block 0022 [ 50]: 59f06188b9aeac95 +Block 0022 [ 51]: 4f203567486f8e1f +Block 0022 [ 52]: 399c129eb1954981 +Block 0022 [ 53]: 9e8f3df04edd855c +Block 0022 [ 54]: c7839759458f28b7 +Block 0022 [ 55]: 0680b6a90eab4916 +Block 0022 [ 56]: cec145b80fe78247 +Block 0022 [ 57]: 808b65ea6e63e98b +Block 0022 [ 58]: 2c1e5538262fdfec +Block 0022 [ 59]: 81b30dc073b434c5 +Block 0022 [ 60]: c0707436657289e6 +Block 0022 [ 61]: 120a7eca718d4092 +Block 0022 [ 62]: 3175853539247ab9 +Block 0022 [ 63]: 5d0c743b9b6ffd0b +Block 0022 [ 64]: d8c28ec0886e9d48 +Block 0022 [ 65]: 594d6544fd87ae3a +Block 0022 [ 66]: a0758e83bad55871 +Block 0022 [ 67]: 19629e54112a76c1 +Block 0022 [ 68]: c39adb24ef1e776e +Block 0022 [ 69]: 99ad43408d60ab08 +Block 0022 [ 70]: 33d692124c11d9ae +Block 0022 [ 71]: ca6ae3cd5e089872 +Block 0022 [ 72]: 96128569361b5183 +Block 0022 [ 73]: 3264c5006587f2f5 +Block 0022 [ 74]: 927b19661155b67d +Block 0022 [ 75]: 27577a0564c02580 +Block 0022 [ 76]: 4be4137d71a8d20f +Block 0022 [ 77]: e8fbb27cfb3dd116 +Block 0022 [ 78]: c546d54308c8238b +Block 0022 [ 79]: 0e6ea22a889661de +Block 0022 [ 80]: df0e770ab52e0f23 +Block 0022 [ 81]: 912c757dd483dcd1 +Block 0022 [ 82]: 28b07c4d25d2f527 +Block 0022 [ 83]: f833999f75dfde74 +Block 0022 [ 84]: 3f3bfa3feb61ff0e +Block 0022 [ 85]: fde9b05908908e32 +Block 0022 [ 86]: f37ac6a234f6d531 +Block 0022 [ 87]: 3002a06806c5a7b7 +Block 0022 [ 88]: 0ced9647463145f0 +Block 0022 [ 89]: f7103a918f8fc100 +Block 0022 [ 90]: c4533d7cc476b9fc +Block 0022 [ 91]: 100e0006dd1153e5 +Block 0022 [ 92]: 6a811c609480f8f1 +Block 0022 [ 93]: 510c39c9cd86173e +Block 0022 [ 94]: 2246697bda28e904 +Block 0022 [ 95]: d868a2e13c102004 +Block 0022 [ 96]: 6034a466933b698e +Block 0022 [ 97]: 8fc5e7a66acb11df +Block 0022 [ 98]: 2910e9f3ee967fef +Block 0022 [ 99]: 001b92fb7e89022f +Block 0022 [100]: ca87fa7b53499719 +Block 0022 [101]: 0154d784444d9cbd +Block 0022 [102]: 1bfa559512ce29d4 +Block 0022 [103]: 1e1d40d77e9b399e +Block 0022 [104]: f88aae2191055b90 +Block 0022 [105]: 504de7f12bff97d5 +Block 0022 [106]: ab03a38e37df0236 +Block 0022 [107]: 46bc61f156525399 +Block 0022 [108]: 5a36598201775ada +Block 0022 [109]: ef27216b243ec78b +Block 0022 [110]: c2013097bf9ec3cf +Block 0022 [111]: fde08a7d93d60ceb +Block 0022 [112]: 0080c53706f954e4 +Block 0022 [113]: b4588d78793f9818 +Block 0022 [114]: 1662c3cb14cabdf2 +Block 0022 [115]: b0c52775f338135a +Block 0022 [116]: d80afb191b9680cb +Block 0022 [117]: 01517fed70270cba +Block 0022 [118]: 7278e7ac5099dcb0 +Block 0022 [119]: 18b2779f192c0034 +Block 0022 [120]: d12a9b462f01e32e +Block 0022 [121]: 728c46acedd7f19c +Block 0022 [122]: a05306d6b31b2833 +Block 0022 [123]: d331c8c206fa1146 +Block 0022 [124]: 04605c92d2bfcc35 +Block 0022 [125]: ef83c4117b4716d2 +Block 0022 [126]: f612d22f4c162415 +Block 0022 [127]: 4a95bc5ff1436d26 +Block 0023 [ 0]: 1c27f28962d9a429 +Block 0023 [ 1]: ce6c0454be7f138d +Block 0023 [ 2]: fa0537b5173deb1e +Block 0023 [ 3]: c81af57b4e80e20a +Block 0023 [ 4]: e9c46fbaafffbd2d +Block 0023 [ 5]: 0cc31492e65580b5 +Block 0023 [ 6]: 2d51c8f8079dc721 +Block 0023 [ 7]: 74bb329130090ca2 +Block 0023 [ 8]: ef4e6d8e93662b43 +Block 0023 [ 9]: 283af41e7ee42300 +Block 0023 [ 10]: 743f3e00e4c57e0b +Block 0023 [ 11]: 8136ce7b15199709 +Block 0023 [ 12]: 047c5f46fbfc2269 +Block 0023 [ 13]: 02a5b806ee4bf5a2 +Block 0023 [ 14]: 09d40c72fefc6003 +Block 0023 [ 15]: b4e2241710c816ae +Block 0023 [ 16]: 855c2cac8c80c773 +Block 0023 [ 17]: 00e22cc97a97a901 +Block 0023 [ 18]: ba6785d60b8b5829 +Block 0023 [ 19]: d0678d50aa3b6566 +Block 0023 [ 20]: b0a18530b287b9c4 +Block 0023 [ 21]: 1425826dfb827651 +Block 0023 [ 22]: 3d79c30454292023 +Block 0023 [ 23]: ed52ad874ea725cb +Block 0023 [ 24]: 2f558b4c56382176 +Block 0023 [ 25]: 6dfbbf532ea34f0e +Block 0023 [ 26]: 9d86b03d15bb15f7 +Block 0023 [ 27]: dc229f5621ef7476 +Block 0023 [ 28]: 7f3914d304294e74 +Block 0023 [ 29]: c0cb249d4790157e +Block 0023 [ 30]: 1b549da01f8a3df0 +Block 0023 [ 31]: ba62cf7efd468685 +Block 0023 [ 32]: f454b7eeaa12a6c9 +Block 0023 [ 33]: a91074d5378b8494 +Block 0023 [ 34]: 88bce18fb76b8c48 +Block 0023 [ 35]: cfc04ad4fe68543e +Block 0023 [ 36]: df2057be18d33517 +Block 0023 [ 37]: 13226baa4125c349 +Block 0023 [ 38]: ef72cb1c23da3691 +Block 0023 [ 39]: da5f4f3db8bd3806 +Block 0023 [ 40]: 359ecf2233bbdd88 +Block 0023 [ 41]: 2da0dce2855ec11f +Block 0023 [ 42]: 53923497e1825a07 +Block 0023 [ 43]: 315b7d8242ce8993 +Block 0023 [ 44]: e6c20a9f32744b30 +Block 0023 [ 45]: b8280f049700fad3 +Block 0023 [ 46]: 9f86dfc83e311396 +Block 0023 [ 47]: 3d5389c7505ed7bc +Block 0023 [ 48]: 92f5d210510ee9ac +Block 0023 [ 49]: 5946a782c5e82902 +Block 0023 [ 50]: c2d548fa66061623 +Block 0023 [ 51]: e7bad6532357494d +Block 0023 [ 52]: d321776f0276918c +Block 0023 [ 53]: bd456bc123259f0c +Block 0023 [ 54]: 54a21561cdf88a8c +Block 0023 [ 55]: 5e358a502537b2f7 +Block 0023 [ 56]: 99b132361d154089 +Block 0023 [ 57]: 84f703f283fe9a3d +Block 0023 [ 58]: 69eb4b5540c63b45 +Block 0023 [ 59]: 1ccbb5de665d2f72 +Block 0023 [ 60]: fcaf74364ac9f8f8 +Block 0023 [ 61]: 5a8d6fc4175344c8 +Block 0023 [ 62]: 429cf28518d1d6b1 +Block 0023 [ 63]: 12fda086ea0009d9 +Block 0023 [ 64]: 2ec00664a4b15dd8 +Block 0023 [ 65]: 140a9b9ef7dfc853 +Block 0023 [ 66]: eddb2f43f8549e7c +Block 0023 [ 67]: 5782bd1f045fd9d0 +Block 0023 [ 68]: b8c6d19545590a92 +Block 0023 [ 69]: 7d575aadcfc41096 +Block 0023 [ 70]: 2c670dc169fca4d4 +Block 0023 [ 71]: 969e7c181c013882 +Block 0023 [ 72]: 707699fae53be225 +Block 0023 [ 73]: 599817453061b3aa +Block 0023 [ 74]: de50b8984deb3024 +Block 0023 [ 75]: 6577cebcd06675c7 +Block 0023 [ 76]: bf27f2775367d22a +Block 0023 [ 77]: 128b7a09850d97c6 +Block 0023 [ 78]: 3f505f36eb4ffd30 +Block 0023 [ 79]: 60d9c8a881890405 +Block 0023 [ 80]: a7f7eb087c7fcde3 +Block 0023 [ 81]: 87e5ffb94b2ccd52 +Block 0023 [ 82]: a2b3896a1578b3d0 +Block 0023 [ 83]: c730dc0d5c857ae6 +Block 0023 [ 84]: b78c67dd4544d4dc +Block 0023 [ 85]: e85429d5ddd6af9d +Block 0023 [ 86]: 91f7ba9e9b8195df +Block 0023 [ 87]: 1d0aa5dcb28f18a0 +Block 0023 [ 88]: 0ba3b3eeb02a966d +Block 0023 [ 89]: 6c8ceaf6d8f05ed7 +Block 0023 [ 90]: 2c969fc5f825097b +Block 0023 [ 91]: 548be2850059ff36 +Block 0023 [ 92]: 0493917ec9802a30 +Block 0023 [ 93]: fc068b2212e7cac1 +Block 0023 [ 94]: 7cc3b76b0709e28a +Block 0023 [ 95]: 81dbc467d1c7ae3a +Block 0023 [ 96]: 682dafd7341f6c2b +Block 0023 [ 97]: f4b958705828befb +Block 0023 [ 98]: c33bfff261f156b1 +Block 0023 [ 99]: fe8c617a34065ba0 +Block 0023 [100]: 6a6450fdd5369973 +Block 0023 [101]: a9ec838e3d01cf5c +Block 0023 [102]: d3624f4619c4ed6b +Block 0023 [103]: 2e27333b8045636f +Block 0023 [104]: 4302af176e71aabb +Block 0023 [105]: 47a021cc276346df +Block 0023 [106]: acab4e93993f3d4c +Block 0023 [107]: 915fc7ff50fec218 +Block 0023 [108]: 38d6b82052587c54 +Block 0023 [109]: 1785046ff7d042fc +Block 0023 [110]: 377a9b13fc1b9ea5 +Block 0023 [111]: 7265d3d78a9c6b2a +Block 0023 [112]: 6ccc5f6b63b72992 +Block 0023 [113]: 3d955c8dbd4680e2 +Block 0023 [114]: 1958ed0640792519 +Block 0023 [115]: 96d15acd6268fac3 +Block 0023 [116]: fce9b335ff6813bf +Block 0023 [117]: 31944f568c7a6e61 +Block 0023 [118]: 62474e159b6a69d0 +Block 0023 [119]: ba17ccc3e51ad03a +Block 0023 [120]: 06a4820b0ac6731d +Block 0023 [121]: 12d6b8463c7ee240 +Block 0023 [122]: 21ad64133acd11e4 +Block 0023 [123]: 9626ab9a178836a0 +Block 0023 [124]: 26427719be3fe4d2 +Block 0023 [125]: 43c7d5348eb934ac +Block 0023 [126]: a37be69b3f09895c +Block 0023 [127]: da21d8760a0a86df +Block 0024 [ 0]: cf8f96856b27bef3 +Block 0024 [ 1]: 538374b5db2e53df +Block 0024 [ 2]: 77081bd0b0d9303c +Block 0024 [ 3]: 71ea9b2f87d82f65 +Block 0024 [ 4]: b84b47aafe046d8d +Block 0024 [ 5]: 32281e46cb82140b +Block 0024 [ 6]: d74a975383daa261 +Block 0024 [ 7]: eb8ddf6fef2eab2c +Block 0024 [ 8]: 85efa5cdd2797a28 +Block 0024 [ 9]: 8988c6d6537f20cf +Block 0024 [ 10]: afa3befc0a1d0bd3 +Block 0024 [ 11]: 68594b431cfa9b37 +Block 0024 [ 12]: 8b4e0694766c9879 +Block 0024 [ 13]: 194ae444c11e14ae +Block 0024 [ 14]: 41c1f537433d5b74 +Block 0024 [ 15]: 32d80469d8e340f1 +Block 0024 [ 16]: 9c95332fe3ede149 +Block 0024 [ 17]: ba7e3eb54c1902f2 +Block 0024 [ 18]: a95e5ac9d8efdafc +Block 0024 [ 19]: 764b2f25047d6bc7 +Block 0024 [ 20]: 89beee560f2d500e +Block 0024 [ 21]: 17c78d78930ad71b +Block 0024 [ 22]: 703ee2ce41a0897d +Block 0024 [ 23]: 410353a71ad59e8b +Block 0024 [ 24]: ce133957feae7ab6 +Block 0024 [ 25]: ed83c399c42aba92 +Block 0024 [ 26]: ad9f3f30874f6cb1 +Block 0024 [ 27]: 353a7816060b52f3 +Block 0024 [ 28]: 55d24c9cd5567345 +Block 0024 [ 29]: 9576e73cb0f9cd57 +Block 0024 [ 30]: 3e4a93744b472b59 +Block 0024 [ 31]: 094a77da6bcb9b8f +Block 0024 [ 32]: 21cc11ecbc0347c7 +Block 0024 [ 33]: 858eab66e89d80a3 +Block 0024 [ 34]: a373da912a23fff5 +Block 0024 [ 35]: 6d01a0e582a1eb6a +Block 0024 [ 36]: cef03bd93495ff85 +Block 0024 [ 37]: 71f0d1a6b596741d +Block 0024 [ 38]: eb089e9710cf726d +Block 0024 [ 39]: f4ad37046aee8555 +Block 0024 [ 40]: 51a415a98700ba18 +Block 0024 [ 41]: 7492605ee6b50bf5 +Block 0024 [ 42]: e9d0aa6cf26ef7dc +Block 0024 [ 43]: fae3257644711601 +Block 0024 [ 44]: ef4ea37a228d87ab +Block 0024 [ 45]: 8cb0e52f96ad89c8 +Block 0024 [ 46]: 3a9beaac8a7c6673 +Block 0024 [ 47]: 2b8b083eaf9e5bea +Block 0024 [ 48]: b7017c5a9b985cc8 +Block 0024 [ 49]: ac45b63f5c03446e +Block 0024 [ 50]: 603871e8fa7c1798 +Block 0024 [ 51]: 95108dd25de5bf40 +Block 0024 [ 52]: 1b39f2a620715e4b +Block 0024 [ 53]: e7f278a6c8d5ef0a +Block 0024 [ 54]: 4522cbafa997ee91 +Block 0024 [ 55]: c5c456681b67ba2f +Block 0024 [ 56]: a5738a9048687c75 +Block 0024 [ 57]: 26f555b171320f58 +Block 0024 [ 58]: a37fae3c988a9d41 +Block 0024 [ 59]: 5070dedba406729b +Block 0024 [ 60]: 27b120850e97e811 +Block 0024 [ 61]: ca12b508cf982bd3 +Block 0024 [ 62]: d8f86605ff5ad305 +Block 0024 [ 63]: 27fff09a65e13879 +Block 0024 [ 64]: 80302fa5d0884bd4 +Block 0024 [ 65]: 218a5d3bc896af5f +Block 0024 [ 66]: 0782c41608278c7a +Block 0024 [ 67]: f06173fdf5887776 +Block 0024 [ 68]: 3f413e52c28415fc +Block 0024 [ 69]: 6ed1d893f9aee791 +Block 0024 [ 70]: 4a4438fdc957d30c +Block 0024 [ 71]: 048018874b319afa +Block 0024 [ 72]: f8b978784278cb81 +Block 0024 [ 73]: 195c322da4ada50a +Block 0024 [ 74]: f1f4fa13504e30ab +Block 0024 [ 75]: 0b5f3914ca1e9f56 +Block 0024 [ 76]: 43ccdf096c495bca +Block 0024 [ 77]: 147f901fdd3f63d6 +Block 0024 [ 78]: 641a252f4db1fb6a +Block 0024 [ 79]: 2af292c339ad3501 +Block 0024 [ 80]: b42ca580e00a0cfa +Block 0024 [ 81]: d2a6f637d9ff9533 +Block 0024 [ 82]: dd7000216156156a +Block 0024 [ 83]: bd4efc849861550a +Block 0024 [ 84]: 8cde35a8e7597756 +Block 0024 [ 85]: a2beeb20448d9965 +Block 0024 [ 86]: b29f413d5ce01443 +Block 0024 [ 87]: 53a07a46cf956d2f +Block 0024 [ 88]: 843f107c4755d038 +Block 0024 [ 89]: 270ce395f4d98ba0 +Block 0024 [ 90]: 16936e6d71963d18 +Block 0024 [ 91]: d1cfb0e9575879e3 +Block 0024 [ 92]: e430bc6bccf2553b +Block 0024 [ 93]: 6ca082f5aa5d3883 +Block 0024 [ 94]: 2fd0d4cabae6c843 +Block 0024 [ 95]: 062e2b70c3ac9f47 +Block 0024 [ 96]: 9e08deeeffdcfd2c +Block 0024 [ 97]: e0aea6ad8b918f2d +Block 0024 [ 98]: b5a3ae6b8fb101a5 +Block 0024 [ 99]: e4d6ce06de13dbda +Block 0024 [100]: e47bd4c9d5920c29 +Block 0024 [101]: 2ad1bf91ee2b946e +Block 0024 [102]: 1c7af48ddd4ab92f +Block 0024 [103]: 49d9829c93509027 +Block 0024 [104]: 7e16b2f4434eaf60 +Block 0024 [105]: 3b5fce28515d3e55 +Block 0024 [106]: ee5184f0bd0bc316 +Block 0024 [107]: 34f3fefa21929e75 +Block 0024 [108]: 29d7be32d5d1308f +Block 0024 [109]: 1af91678babbf821 +Block 0024 [110]: 4735c7e9971b1e95 +Block 0024 [111]: 6f5bdec6c62d2cf6 +Block 0024 [112]: 7b57d917f7916d98 +Block 0024 [113]: 4c305d9e6fe35298 +Block 0024 [114]: d078638df882056f +Block 0024 [115]: 3b319b154d4fa0d0 +Block 0024 [116]: 06900db2cbfe81c1 +Block 0024 [117]: 06673712431a59ae +Block 0024 [118]: 60f0a1274bae4374 +Block 0024 [119]: afcfbb81ba9212f6 +Block 0024 [120]: 6ecac6530deab23f +Block 0024 [121]: 69ae57c629abb352 +Block 0024 [122]: 266f0dabe5af7624 +Block 0024 [123]: 33eed4df71113084 +Block 0024 [124]: c6f13e96d5f6112d +Block 0024 [125]: 02efdc43c4e48b02 +Block 0024 [126]: 42283c13cdbfcd2c +Block 0024 [127]: 0436a1af463de562 +Block 0025 [ 0]: 5b9abfa7feb2a37c +Block 0025 [ 1]: 5d485f04bba0a1f8 +Block 0025 [ 2]: 46765ebb62cc41c3 +Block 0025 [ 3]: 557b8cfa9bd9e7df +Block 0025 [ 4]: 0e7716504d681b97 +Block 0025 [ 5]: 0b6bcf29374a050f +Block 0025 [ 6]: e98f9633d70cb263 +Block 0025 [ 7]: 800a0bb3298debd0 +Block 0025 [ 8]: d9f3f7cbabf9771c +Block 0025 [ 9]: 132e4129d1daffd1 +Block 0025 [ 10]: 39489c7cc8c2a06b +Block 0025 [ 11]: 9c2fdc9cda85c204 +Block 0025 [ 12]: 73a42d407e3a97bf +Block 0025 [ 13]: 59997a9a9ccd5086 +Block 0025 [ 14]: 475f0aa67e8087d5 +Block 0025 [ 15]: bdaee394ba5cf10a +Block 0025 [ 16]: ea729a7408010680 +Block 0025 [ 17]: 56a1679ad9ad4ebe +Block 0025 [ 18]: 1cc56e01ad0b38c4 +Block 0025 [ 19]: d46ece129d9a289a +Block 0025 [ 20]: 1390f7ce5344e77e +Block 0025 [ 21]: 8f781e2c5ab8fe80 +Block 0025 [ 22]: 997e9d8fd86ed661 +Block 0025 [ 23]: c6e26d91f5e89382 +Block 0025 [ 24]: 81ae4d5b3b765fa8 +Block 0025 [ 25]: 264e78c06f79d41e +Block 0025 [ 26]: 19e2b6aebb075733 +Block 0025 [ 27]: 4acc50b54032408a +Block 0025 [ 28]: 5ac7f30e4aaae5f4 +Block 0025 [ 29]: 0397e9e0f5d6e6ad +Block 0025 [ 30]: 0e711ba1239e83a4 +Block 0025 [ 31]: 0895d50a8ec9f19a +Block 0025 [ 32]: 3af5724f6e6c1e8d +Block 0025 [ 33]: 5af8c0606a4dc339 +Block 0025 [ 34]: 8096410d4630434c +Block 0025 [ 35]: 5cfdd78aa4075d16 +Block 0025 [ 36]: 2154a4ecd25dc45c +Block 0025 [ 37]: f0bb154e287e08e9 +Block 0025 [ 38]: 114f2bed186ce33e +Block 0025 [ 39]: 6d9c780293d2cd4c +Block 0025 [ 40]: 23612d45f0d156c9 +Block 0025 [ 41]: fa5e7e052ae2ba8e +Block 0025 [ 42]: 9eb8416e705b3c2c +Block 0025 [ 43]: ba6586685b87bd09 +Block 0025 [ 44]: 361a1cca5d78684f +Block 0025 [ 45]: f045f145f1047ecd +Block 0025 [ 46]: b66a58c8db976ddc +Block 0025 [ 47]: 1ff9eabf3e99d098 +Block 0025 [ 48]: bf57a4d81e63a4e5 +Block 0025 [ 49]: e9ba5c410ed8eeca +Block 0025 [ 50]: c2d46dbc68733832 +Block 0025 [ 51]: 5efc7dcb9b5bfe6d +Block 0025 [ 52]: 4154c8d811ee1e5a +Block 0025 [ 53]: b4cc77c95c0185c8 +Block 0025 [ 54]: 3d6ee2f21788c74a +Block 0025 [ 55]: 27588eb02b04eb8e +Block 0025 [ 56]: 28fb9544bf40218d +Block 0025 [ 57]: ca084c249c06f53d +Block 0025 [ 58]: d60b3b0c9ad45f54 +Block 0025 [ 59]: 65af42b7955016c8 +Block 0025 [ 60]: ddcff7cb451a8a7a +Block 0025 [ 61]: 399126720a6c58fb +Block 0025 [ 62]: cb9ca1ce53e78936 +Block 0025 [ 63]: 93a027cf494dd4d0 +Block 0025 [ 64]: 35ed9cd12a3a26eb +Block 0025 [ 65]: 4290e096ff8d8e24 +Block 0025 [ 66]: 45321339efcabf66 +Block 0025 [ 67]: a7721e8468b60e4c +Block 0025 [ 68]: 7cbc7aa27492601a +Block 0025 [ 69]: e1f50ea06a229f6c +Block 0025 [ 70]: 5691f85c4f126e26 +Block 0025 [ 71]: 874a48f6977c98b0 +Block 0025 [ 72]: 202b5f82a5b84018 +Block 0025 [ 73]: 7b32c5128fecb612 +Block 0025 [ 74]: a37ea9f179c0d7a0 +Block 0025 [ 75]: 327b8fc50cce958b +Block 0025 [ 76]: a8e2a1258fb1da80 +Block 0025 [ 77]: f80691238a1eef40 +Block 0025 [ 78]: 6c182b612af57ece +Block 0025 [ 79]: 178e573cc0d200e5 +Block 0025 [ 80]: bb8b504ceae9afe2 +Block 0025 [ 81]: 3c59e39992ae4a3c +Block 0025 [ 82]: 22b54658fd492202 +Block 0025 [ 83]: 52aea26785cac12b +Block 0025 [ 84]: 7c29b08458b0e3c3 +Block 0025 [ 85]: fd88eab7d627a17c +Block 0025 [ 86]: 37f909c6bd36b704 +Block 0025 [ 87]: 9f52cb379a083d4c +Block 0025 [ 88]: caee6a1fcad15eb9 +Block 0025 [ 89]: f7fd9d1a6b2bb28a +Block 0025 [ 90]: 304f7769dd3975f1 +Block 0025 [ 91]: 212c30fd3d98e27a +Block 0025 [ 92]: fef3d2bf4c3f7d45 +Block 0025 [ 93]: 2f0beb68030bb52e +Block 0025 [ 94]: ea352eb79030ef21 +Block 0025 [ 95]: 8d79331061c22ba6 +Block 0025 [ 96]: 770e83d3e6b823b1 +Block 0025 [ 97]: 89a9ec7c4487297f +Block 0025 [ 98]: 8dbcad4c4e11be67 +Block 0025 [ 99]: 8b7d38ef5fec1601 +Block 0025 [100]: e93c587d6bf2cbf9 +Block 0025 [101]: a53137a33d258830 +Block 0025 [102]: 7a0d11ca5acf1788 +Block 0025 [103]: b3dbaa7d7ecebd4d +Block 0025 [104]: d882e019de21daf8 +Block 0025 [105]: 45d2cdf54ca6be9a +Block 0025 [106]: 33d36d64d12442b6 +Block 0025 [107]: 8fc0b56aa86049d0 +Block 0025 [108]: 0b3fd87ac5ed9c10 +Block 0025 [109]: f3865aaea80fc664 +Block 0025 [110]: 5c85cbd5e3bbfcac +Block 0025 [111]: a2cc7235f21769e3 +Block 0025 [112]: 5ec5ce43bf29dd82 +Block 0025 [113]: de410519cd682004 +Block 0025 [114]: 3267444c60d75f3f +Block 0025 [115]: acd6ba02e82c6225 +Block 0025 [116]: 0322e9d6a5053284 +Block 0025 [117]: 4df45251e620c948 +Block 0025 [118]: adccf0d3de3bea09 +Block 0025 [119]: cb5bca189109f1ca +Block 0025 [120]: af2f65bee48c15b5 +Block 0025 [121]: 52989089263dd3d8 +Block 0025 [122]: 793c1f6d08cbe93f +Block 0025 [123]: d990a75b2ad2ff08 +Block 0025 [124]: 24e34bd7efd6d0d0 +Block 0025 [125]: c31b33bd91bcd47a +Block 0025 [126]: 34b1e70c5d8a133e +Block 0025 [127]: dd9b5f4b960c1c19 +Block 0026 [ 0]: dee9b2aa87871f5c +Block 0026 [ 1]: dd29e85f6d4b3046 +Block 0026 [ 2]: 983313f6040a4701 +Block 0026 [ 3]: 60e421701b903eb5 +Block 0026 [ 4]: aa1760fc7944b723 +Block 0026 [ 5]: 5e9cfdd75c022ec3 +Block 0026 [ 6]: 2344dd4599365deb +Block 0026 [ 7]: 46bcf69ff591ace9 +Block 0026 [ 8]: 67e126c5dffc41b8 +Block 0026 [ 9]: 6d03149e72cd6ad2 +Block 0026 [ 10]: ffd3ebb4669f8fb5 +Block 0026 [ 11]: 4f1f99d9f00858c8 +Block 0026 [ 12]: d188674d4f5880d3 +Block 0026 [ 13]: 4a9ed6f5c0f1136c +Block 0026 [ 14]: 293fac32e9fe652f +Block 0026 [ 15]: ca87659e3a8cb9f2 +Block 0026 [ 16]: 37f8096aae66b859 +Block 0026 [ 17]: 88efabca999b09d5 +Block 0026 [ 18]: f531a630ca5aea1f +Block 0026 [ 19]: c8d98dbee1b05b62 +Block 0026 [ 20]: 12296953234eed5f +Block 0026 [ 21]: 9d339201956f944d +Block 0026 [ 22]: eeda4cdc2976f262 +Block 0026 [ 23]: ba41e3628c946c9f +Block 0026 [ 24]: 1216bb9dce7018b2 +Block 0026 [ 25]: 1b261d6a529167cd +Block 0026 [ 26]: 4125bad6e4a3384d +Block 0026 [ 27]: db476851fa256b4a +Block 0026 [ 28]: b2fc7dc141cadae7 +Block 0026 [ 29]: c5eb5cb966d9dad9 +Block 0026 [ 30]: 3393e3a31b11a880 +Block 0026 [ 31]: ac872ec83d51cd5f +Block 0026 [ 32]: 29c51b4bd0274682 +Block 0026 [ 33]: c6c83089cb723994 +Block 0026 [ 34]: 1b0d4fe0d6e9f14b +Block 0026 [ 35]: 3cdce9f955907277 +Block 0026 [ 36]: 875c09bda8862c96 +Block 0026 [ 37]: 1d4e56b54e562742 +Block 0026 [ 38]: 12d9c0e0ac84c079 +Block 0026 [ 39]: ae01999edf7225b0 +Block 0026 [ 40]: 0e20472caed467fe +Block 0026 [ 41]: 6e487ddc7ea710e7 +Block 0026 [ 42]: a280d9ea0a29224c +Block 0026 [ 43]: 98126e05f1ce5ad4 +Block 0026 [ 44]: 9eb6223f8a3d336c +Block 0026 [ 45]: 60cec3a9a070e8e0 +Block 0026 [ 46]: 017adf6fe630672e +Block 0026 [ 47]: 3b7a7736523bc3bc +Block 0026 [ 48]: 9d5fb41cbf6adb09 +Block 0026 [ 49]: 48600b688c8c577e +Block 0026 [ 50]: 1051ce0ea3a4cfbc +Block 0026 [ 51]: a50896f93ece5cd0 +Block 0026 [ 52]: 4ff442fe3230ad8b +Block 0026 [ 53]: 604ceece7911b994 +Block 0026 [ 54]: 6541af944a04d111 +Block 0026 [ 55]: 8e987b86a8afdddd +Block 0026 [ 56]: ccac943c5646f2a4 +Block 0026 [ 57]: 86b5be6691aa654c +Block 0026 [ 58]: 412c474818edcb3b +Block 0026 [ 59]: 4b49534018da9114 +Block 0026 [ 60]: 9340dfc1b986dfa3 +Block 0026 [ 61]: dc0730e95c51f794 +Block 0026 [ 62]: f169981fadfc5549 +Block 0026 [ 63]: c71a8ee88ffef06c +Block 0026 [ 64]: eef8c797696883bd +Block 0026 [ 65]: 3dd92ac77d49f446 +Block 0026 [ 66]: 496d5985927355d0 +Block 0026 [ 67]: 5284e7cb68c2ca1b +Block 0026 [ 68]: 3c9719c5303b55fc +Block 0026 [ 69]: e3fb82f8ad2e8391 +Block 0026 [ 70]: d30b1110f61916d3 +Block 0026 [ 71]: 32512588b786c1fb +Block 0026 [ 72]: e010bdf498d961c9 +Block 0026 [ 73]: 074b5eb7e84d6ca2 +Block 0026 [ 74]: 44f8b7e9a934e38f +Block 0026 [ 75]: dde33fd942e913eb +Block 0026 [ 76]: f28b6b5e26433af4 +Block 0026 [ 77]: 8bbe1f779ca8dd98 +Block 0026 [ 78]: a804df4bb4ec3dd8 +Block 0026 [ 79]: daa6d81df64040fe +Block 0026 [ 80]: 842e1580985fd685 +Block 0026 [ 81]: 3c81fdf208936747 +Block 0026 [ 82]: 2f66d5edb35d9b3e +Block 0026 [ 83]: f0237f2a4fc163db +Block 0026 [ 84]: f019ee576d7661c2 +Block 0026 [ 85]: 0f7c9a4b83b83b05 +Block 0026 [ 86]: 5d6298890f9310f6 +Block 0026 [ 87]: 0ede0453519b1eda +Block 0026 [ 88]: 13af8affb04a2663 +Block 0026 [ 89]: 80872076367bfc81 +Block 0026 [ 90]: 2ea2f0780da7f2be +Block 0026 [ 91]: a99f73ce6a2a05c4 +Block 0026 [ 92]: b80dc9d2a2600dca +Block 0026 [ 93]: d4b9bc8454ffab5b +Block 0026 [ 94]: d200e46e43f879a9 +Block 0026 [ 95]: 537c6054435cb95c +Block 0026 [ 96]: 01b1a480310f40f5 +Block 0026 [ 97]: c05eec0798009539 +Block 0026 [ 98]: 47d145ed55765f11 +Block 0026 [ 99]: bc359cf5298fb1fb +Block 0026 [100]: 7a4fc2282e858a1e +Block 0026 [101]: 922e6d1261fe72a1 +Block 0026 [102]: 9233e06069f676ae +Block 0026 [103]: 28fd56cf04f236e6 +Block 0026 [104]: 2af5cbbab60a6994 +Block 0026 [105]: 8a035717c193c0e1 +Block 0026 [106]: be4d991be04daf58 +Block 0026 [107]: d62d6c8670910ca6 +Block 0026 [108]: ac8f20c64229cf79 +Block 0026 [109]: a0be7a6a741cb355 +Block 0026 [110]: 23a995532d6388a1 +Block 0026 [111]: b1538a43a24cd9f4 +Block 0026 [112]: e77500799ebece8d +Block 0026 [113]: ca127140631ad537 +Block 0026 [114]: 60a4f9f085cc5132 +Block 0026 [115]: 8e8bed70b3926177 +Block 0026 [116]: 208e7b4eb75dfb2e +Block 0026 [117]: 3b8f8ba0e8efffc7 +Block 0026 [118]: 8f18cb6e7a8d0f29 +Block 0026 [119]: 8f37d725599de412 +Block 0026 [120]: e14a83c050008162 +Block 0026 [121]: d2d6e966cbf9611a +Block 0026 [122]: ba9a2378c5dac511 +Block 0026 [123]: ba716dabf5ccd414 +Block 0026 [124]: 877f060b5aed5b8a +Block 0026 [125]: ad9db071b4cbcb75 +Block 0026 [126]: cab1f62b8803c369 +Block 0026 [127]: f050f7dbe5e6fd66 +Block 0027 [ 0]: 6cee4b9d191832e4 +Block 0027 [ 1]: a9ed71c242860d65 +Block 0027 [ 2]: 9d57bd98dc8c821a +Block 0027 [ 3]: 059bde7efdbfd8c1 +Block 0027 [ 4]: 269e8e1f20a45148 +Block 0027 [ 5]: 151e005fb247eb07 +Block 0027 [ 6]: d50170ee221d6e0e +Block 0027 [ 7]: 2c15fd72d852f3f9 +Block 0027 [ 8]: a170b2c99c039fbb +Block 0027 [ 9]: bb540d6fe2f80c7b +Block 0027 [ 10]: 26be1fccf08e833b +Block 0027 [ 11]: bec687afce3a11b5 +Block 0027 [ 12]: 49fbc628b10960c1 +Block 0027 [ 13]: 9ed97c1da2275ef6 +Block 0027 [ 14]: 67023b2e3ed8d148 +Block 0027 [ 15]: 6aaaff9a46cf4044 +Block 0027 [ 16]: ef946e6176c9df2d +Block 0027 [ 17]: 1924ca3e69fe39f1 +Block 0027 [ 18]: 3ab1dfab6b50980c +Block 0027 [ 19]: b70e0bc7440fc385 +Block 0027 [ 20]: fecdf018f791586e +Block 0027 [ 21]: 1236618a4c2e1d64 +Block 0027 [ 22]: aadc58b1c7562781 +Block 0027 [ 23]: 74394ced4218af4d +Block 0027 [ 24]: 1aef33449aa870fa +Block 0027 [ 25]: 20effaa9d742e0b6 +Block 0027 [ 26]: 2eac80dba70985a0 +Block 0027 [ 27]: a398c86bf53fc422 +Block 0027 [ 28]: b77b10e2168cc4d1 +Block 0027 [ 29]: fce8d4978068cf3d +Block 0027 [ 30]: 8bde6bd1a6bfb867 +Block 0027 [ 31]: 1a37ab91af293735 +Block 0027 [ 32]: ab2284a7ceced18a +Block 0027 [ 33]: 6d23a4a8dd5fcac2 +Block 0027 [ 34]: 01783511ff88040f +Block 0027 [ 35]: 0bfaa3cdd7629a5f +Block 0027 [ 36]: d1466859d1700abf +Block 0027 [ 37]: a323bfe6d5924ef6 +Block 0027 [ 38]: b0630ada9d4fa447 +Block 0027 [ 39]: 07621e3b349c5909 +Block 0027 [ 40]: fff27196da746f6e +Block 0027 [ 41]: ea43e184f8a6532e +Block 0027 [ 42]: 1998186d499f4e18 +Block 0027 [ 43]: 402e532b78357606 +Block 0027 [ 44]: e0a649a10d61d091 +Block 0027 [ 45]: 1eaf8a6209b93c4f +Block 0027 [ 46]: e1010b48889983a3 +Block 0027 [ 47]: 25655970b2a8d6de +Block 0027 [ 48]: 00a51d8b8c8e84e4 +Block 0027 [ 49]: 4f5db1b5e6dc5525 +Block 0027 [ 50]: fcc650fae81b515f +Block 0027 [ 51]: 0f676bb6cf68c300 +Block 0027 [ 52]: 860a1250580ae58d +Block 0027 [ 53]: eeef9111751458da +Block 0027 [ 54]: a789af0aaa552763 +Block 0027 [ 55]: ce24c29680c629d8 +Block 0027 [ 56]: 34ed0a8ee22bf010 +Block 0027 [ 57]: 3b0a4c70c76ffa93 +Block 0027 [ 58]: e9772cfe2b1b4614 +Block 0027 [ 59]: 0e0497ca49fd7322 +Block 0027 [ 60]: 85d0a7c5fdf74b8d +Block 0027 [ 61]: cd3891e2f2e49aa0 +Block 0027 [ 62]: 230c209081749b87 +Block 0027 [ 63]: 7295114e617d5b51 +Block 0027 [ 64]: 83d5c5fc1bfc5c22 +Block 0027 [ 65]: 2b9a2dfe113c5c95 +Block 0027 [ 66]: f388a2a9b91c3ed0 +Block 0027 [ 67]: ec61a56fc4028a0a +Block 0027 [ 68]: 7f32595cfd7865a8 +Block 0027 [ 69]: 85b7093f80093890 +Block 0027 [ 70]: 0b4d7bda002ad0de +Block 0027 [ 71]: 5b2b1bf027012ab1 +Block 0027 [ 72]: 9325569531e2db66 +Block 0027 [ 73]: 6c1ff4360235586d +Block 0027 [ 74]: d8ba96751d53a852 +Block 0027 [ 75]: 83410fdb0a21173a +Block 0027 [ 76]: 790fb01da6186465 +Block 0027 [ 77]: 7d3904d42d029f49 +Block 0027 [ 78]: c4ce0b7f94be6679 +Block 0027 [ 79]: c612310f9131c614 +Block 0027 [ 80]: d61e9b1f7a785d1f +Block 0027 [ 81]: f185e40a8bd95c05 +Block 0027 [ 82]: 4b6fb8883a1666e1 +Block 0027 [ 83]: ab03fcd9e323c69f +Block 0027 [ 84]: 42de84498a783ae8 +Block 0027 [ 85]: 7d16a844e4d8dcc9 +Block 0027 [ 86]: e81580d22a7bb2c1 +Block 0027 [ 87]: 7ed219f3a8c679b9 +Block 0027 [ 88]: 68f7c86d984e6784 +Block 0027 [ 89]: 7d123922ed59bbb9 +Block 0027 [ 90]: b45c03de2d713b60 +Block 0027 [ 91]: 99788dd95bc08ca7 +Block 0027 [ 92]: 09139929de450f31 +Block 0027 [ 93]: e76251a2f16af5f7 +Block 0027 [ 94]: f7087f98b0f45cad +Block 0027 [ 95]: 9d0dbd832c11fed4 +Block 0027 [ 96]: 49cfad882ed6c191 +Block 0027 [ 97]: 6aeb515660237856 +Block 0027 [ 98]: 02c5740c70202deb +Block 0027 [ 99]: 577d95f21e2e3bbf +Block 0027 [100]: c03e5473a2080989 +Block 0027 [101]: c262c10f462a8bc2 +Block 0027 [102]: 6fa94f1eacda3c70 +Block 0027 [103]: 45faae378c209581 +Block 0027 [104]: c7c7058e5f11b1b7 +Block 0027 [105]: 575cf1e4b381d95d +Block 0027 [106]: f5f663d9108800d4 +Block 0027 [107]: cb1fb7f209fd05d5 +Block 0027 [108]: 4841189501751a1b +Block 0027 [109]: 39a866af5fe517d2 +Block 0027 [110]: f9bbd9eec0fc0977 +Block 0027 [111]: 084fde551a81270d +Block 0027 [112]: 96923f1be57c5de3 +Block 0027 [113]: 808364e601919381 +Block 0027 [114]: 87bd3c59be533277 +Block 0027 [115]: 4e8f81a1886691f8 +Block 0027 [116]: 37e1a86f4b0f6f29 +Block 0027 [117]: 2bcd52d24d0d5585 +Block 0027 [118]: e583d419264bac50 +Block 0027 [119]: ba04b34eaa228f04 +Block 0027 [120]: 734b7b7ed2514509 +Block 0027 [121]: 8d48fa46cdf4380a +Block 0027 [122]: 07755610226a02a9 +Block 0027 [123]: d982c0b08c29f64a +Block 0027 [124]: 0213185434795e00 +Block 0027 [125]: 3f91b4136d9ab75e +Block 0027 [126]: 75a3cccc78dc560d +Block 0027 [127]: ca7664e9950ea00b +Block 0028 [ 0]: 021ba1bcdde6ad58 +Block 0028 [ 1]: 05754433d559cc24 +Block 0028 [ 2]: 13d1a128aa990eef +Block 0028 [ 3]: 1c5ba0f62141a511 +Block 0028 [ 4]: 8af1f026e263b7ab +Block 0028 [ 5]: e78a7881940a6c49 +Block 0028 [ 6]: cac7b0b9c260d131 +Block 0028 [ 7]: ce6a8fb8aa5ea347 +Block 0028 [ 8]: 244f1b3865d09688 +Block 0028 [ 9]: aa0a003891c3bfd7 +Block 0028 [ 10]: 3fe713094ec02d02 +Block 0028 [ 11]: ea6b606d3bce5251 +Block 0028 [ 12]: 9d66dfa678ded00a +Block 0028 [ 13]: c40de07bdf0185b6 +Block 0028 [ 14]: a3c77fc2f3c0fbb6 +Block 0028 [ 15]: 946bb60ad124c187 +Block 0028 [ 16]: c167a3e4cc7cfa26 +Block 0028 [ 17]: 54bc0c1e2d674273 +Block 0028 [ 18]: 105fc327f7e8ee3d +Block 0028 [ 19]: 16f039b56fc0a5a7 +Block 0028 [ 20]: a37bb14db8a46a9a +Block 0028 [ 21]: 48a54dec7fc69d51 +Block 0028 [ 22]: 9bce116e5facd867 +Block 0028 [ 23]: eb04c9f0019a2662 +Block 0028 [ 24]: b04eb3fd473a5d7b +Block 0028 [ 25]: 94b871a19cd1649a +Block 0028 [ 26]: 9ed5121361ce3387 +Block 0028 [ 27]: 6a1d11715db6979f +Block 0028 [ 28]: 59e15eddeb67ab7a +Block 0028 [ 29]: 839ccd2cb4c3318c +Block 0028 [ 30]: 7024ee61e96cee9f +Block 0028 [ 31]: 311c0401c64c981c +Block 0028 [ 32]: 65fc4884b80591cd +Block 0028 [ 33]: 3108e4165add79c1 +Block 0028 [ 34]: 0a3d0907c7ec23d5 +Block 0028 [ 35]: 94a38dd3f4ee55ab +Block 0028 [ 36]: 72faac9eabdaecca +Block 0028 [ 37]: 7a82e8dce2ea29f8 +Block 0028 [ 38]: 13c99f27feba2587 +Block 0028 [ 39]: 65c726d1264eb57c +Block 0028 [ 40]: 3f8c0497ad70ada4 +Block 0028 [ 41]: 0298113f4159a8ab +Block 0028 [ 42]: 458c01cb8c3ea337 +Block 0028 [ 43]: 1cf949c1a75e5e92 +Block 0028 [ 44]: 1e7253bebed45d79 +Block 0028 [ 45]: d55a5ec3329d8193 +Block 0028 [ 46]: e519244e1d684c9c +Block 0028 [ 47]: 7a0fa26b4cdc9472 +Block 0028 [ 48]: b0bf49049bc0740d +Block 0028 [ 49]: 1a7fc20aabf75ef8 +Block 0028 [ 50]: 38e09ddc184047e0 +Block 0028 [ 51]: 8516c0eec030039b +Block 0028 [ 52]: 6f9ea72875456583 +Block 0028 [ 53]: 4f013974f9881a3c +Block 0028 [ 54]: d0e3b2abf57f9778 +Block 0028 [ 55]: 4e114931fa4f38e3 +Block 0028 [ 56]: aa2c1b90c2b84707 +Block 0028 [ 57]: 7cf9e1bec166fa3c +Block 0028 [ 58]: 1d14ff9ce7c7c685 +Block 0028 [ 59]: 9b88487090e17bf9 +Block 0028 [ 60]: 150c3ca35ccf0b87 +Block 0028 [ 61]: daac811c31be3821 +Block 0028 [ 62]: bcdd701f9e1b680f +Block 0028 [ 63]: 9efb7a1bade02efb +Block 0028 [ 64]: 965ec869ef55fa1f +Block 0028 [ 65]: bc5ebba00a595680 +Block 0028 [ 66]: d230a4dc0284e46b +Block 0028 [ 67]: 823fec805865fb74 +Block 0028 [ 68]: fed454a3199ac15d +Block 0028 [ 69]: 68bf5dcdfd59023a +Block 0028 [ 70]: 03fb3802c49c76d3 +Block 0028 [ 71]: 640356823d9e1f25 +Block 0028 [ 72]: 9af81ea04ffae2d6 +Block 0028 [ 73]: dfe109e2b7d0bf40 +Block 0028 [ 74]: 66fc8c0daf88a898 +Block 0028 [ 75]: c75315d22fe1aa30 +Block 0028 [ 76]: f0caf3aea9d40a17 +Block 0028 [ 77]: afdbdabb57ab2819 +Block 0028 [ 78]: 174e7c9c1c84c955 +Block 0028 [ 79]: b6a536c200abab95 +Block 0028 [ 80]: d613e8709aa02577 +Block 0028 [ 81]: 39241a2e6f32c0af +Block 0028 [ 82]: 2f5332d5bf68ae62 +Block 0028 [ 83]: 92c842d69e754894 +Block 0028 [ 84]: dcb13e9f3e408523 +Block 0028 [ 85]: b3d1ecfdc8704dd6 +Block 0028 [ 86]: aaee559c5be890d6 +Block 0028 [ 87]: 393b7f63de100e35 +Block 0028 [ 88]: 322cf47045b22301 +Block 0028 [ 89]: 19ff6b2aa2ac9277 +Block 0028 [ 90]: dce7764521ba0a7b +Block 0028 [ 91]: ec055028f6e83fb8 +Block 0028 [ 92]: f2f20eeb21b515e9 +Block 0028 [ 93]: b9fd8d709f86f77e +Block 0028 [ 94]: f87e5b1d24d6bec3 +Block 0028 [ 95]: 5545693938b9b1b0 +Block 0028 [ 96]: d79b6740a34e5f86 +Block 0028 [ 97]: 1019c5dbba476ad9 +Block 0028 [ 98]: 9a55366e9030da6f +Block 0028 [ 99]: d43822683b3e8be4 +Block 0028 [100]: f966c8e1e7a36675 +Block 0028 [101]: fbf3966b8b80870d +Block 0028 [102]: 66d11762697d27b0 +Block 0028 [103]: 75969a1a3942deb2 +Block 0028 [104]: f28afc2f58cf33d6 +Block 0028 [105]: 55d35c2336ca57ee +Block 0028 [106]: 667d8b6d12f977e1 +Block 0028 [107]: 771b375bfff2802b +Block 0028 [108]: 21dc11f30d79569c +Block 0028 [109]: f02c16d785001d38 +Block 0028 [110]: aacb1ac75e686919 +Block 0028 [111]: 4ab85ab2b6c1835c +Block 0028 [112]: 049a59753bcfea7c +Block 0028 [113]: d8ec0bbcaff19bf1 +Block 0028 [114]: 555b8fb2fb3fc18a +Block 0028 [115]: 8c21368e54c09192 +Block 0028 [116]: f63dc13c28a441d3 +Block 0028 [117]: a9fe5883c3d89563 +Block 0028 [118]: 08d8ea5088dffb01 +Block 0028 [119]: dca841375d9b9868 +Block 0028 [120]: 667c3365686b7486 +Block 0028 [121]: 49bf1533c8b4064f +Block 0028 [122]: 602aea24f66274ea +Block 0028 [123]: bfc3de51f2c4d4c4 +Block 0028 [124]: ec8c6cdd1a00e16b +Block 0028 [125]: a9193f90093496b2 +Block 0028 [126]: 256c38224299ea19 +Block 0028 [127]: 57639a4bcfa0922e +Block 0029 [ 0]: bd80fcc7c493a4cc +Block 0029 [ 1]: c5023918f090ee9e +Block 0029 [ 2]: 120c321b4380db6a +Block 0029 [ 3]: af7830696eae7fca +Block 0029 [ 4]: eae34d49a4d64266 +Block 0029 [ 5]: 90ae58d5d4b35e0e +Block 0029 [ 6]: c7e27180eb24ab38 +Block 0029 [ 7]: 41a8a21726d95593 +Block 0029 [ 8]: aa48d5fffffa1bec +Block 0029 [ 9]: cd0a98894a346d20 +Block 0029 [ 10]: e9918f3944c6c57a +Block 0029 [ 11]: 0d51b503be8b7d3f +Block 0029 [ 12]: c01a39d6e5a816d3 +Block 0029 [ 13]: d98714fb42090c9a +Block 0029 [ 14]: 5b0f8b46c6552043 +Block 0029 [ 15]: f67ebb64f9c95c72 +Block 0029 [ 16]: 7a327ab56661672d +Block 0029 [ 17]: 014e44f8e1d6f4d0 +Block 0029 [ 18]: 22b0135ae6ce2169 +Block 0029 [ 19]: 5acb3fe8583bbbd4 +Block 0029 [ 20]: 8b77215be2ee636d +Block 0029 [ 21]: e1ceeab70e75a00b +Block 0029 [ 22]: 23bfe2afcc7274cb +Block 0029 [ 23]: e999907479ac7504 +Block 0029 [ 24]: 1a6263a273550a10 +Block 0029 [ 25]: 1d859d178a3556ee +Block 0029 [ 26]: d64aaa268bb5dfd5 +Block 0029 [ 27]: e5828d9d546d97cd +Block 0029 [ 28]: 6d1b4cd3c40591cc +Block 0029 [ 29]: 0661a62919dcf007 +Block 0029 [ 30]: fe81c4564cb304a9 +Block 0029 [ 31]: 79cf16a922a779bc +Block 0029 [ 32]: ff1c06acaca27742 +Block 0029 [ 33]: 23560b1205c5d4b1 +Block 0029 [ 34]: cecc64bc877212ae +Block 0029 [ 35]: 825465623ee4a468 +Block 0029 [ 36]: eea58b7496232e66 +Block 0029 [ 37]: 183cb64d603654f4 +Block 0029 [ 38]: 8f8bd8e1ba69fa6c +Block 0029 [ 39]: 46f47e6e0d443920 +Block 0029 [ 40]: 9278985cd955bac8 +Block 0029 [ 41]: eac6643986183a3f +Block 0029 [ 42]: 192c91da027c23de +Block 0029 [ 43]: f57b6cc6e82866cd +Block 0029 [ 44]: d231ac4c4df30e2c +Block 0029 [ 45]: 2cd3b6b6246d7aca +Block 0029 [ 46]: 7c1568e891d26f7b +Block 0029 [ 47]: 9021075d21c78aed +Block 0029 [ 48]: aefe6fca182c4173 +Block 0029 [ 49]: 636f6b7c9baf5612 +Block 0029 [ 50]: b03144eca38c224f +Block 0029 [ 51]: f2b62ee56a803d3a +Block 0029 [ 52]: 8f74f5b5a60a3836 +Block 0029 [ 53]: c7178cc43f208500 +Block 0029 [ 54]: 7f13626ba8001211 +Block 0029 [ 55]: 488a9269357691d2 +Block 0029 [ 56]: d7cb7779d0658d00 +Block 0029 [ 57]: 9b149d43a08de81a +Block 0029 [ 58]: 5e7353a6bb2c1b8c +Block 0029 [ 59]: dfe5cf98b5a80325 +Block 0029 [ 60]: b3650e30db17f3f8 +Block 0029 [ 61]: 6175497305602f2c +Block 0029 [ 62]: cdb7de41d2d8920c +Block 0029 [ 63]: 2f1c8b7cdc478ba1 +Block 0029 [ 64]: 3ff1f88d8c4322b6 +Block 0029 [ 65]: 536a009eddf2acc2 +Block 0029 [ 66]: 1d1f7900970142d0 +Block 0029 [ 67]: be173300ae594dc5 +Block 0029 [ 68]: d834bc0fb7c26737 +Block 0029 [ 69]: d0e6a394e14a8afa +Block 0029 [ 70]: 1c6f7dc2b61a68ba +Block 0029 [ 71]: 6d4108d773a24064 +Block 0029 [ 72]: 165a18fae86da727 +Block 0029 [ 73]: 2c630bded29340eb +Block 0029 [ 74]: d5484247b2b1b85b +Block 0029 [ 75]: fac0b38c5baeca1b +Block 0029 [ 76]: 910314fa78a08093 +Block 0029 [ 77]: 45e5737d9f5ba290 +Block 0029 [ 78]: 7e16e0d27234eda1 +Block 0029 [ 79]: 87090ffaf76b4dc8 +Block 0029 [ 80]: d5a96bdc6813af4f +Block 0029 [ 81]: 8c76742877047af9 +Block 0029 [ 82]: a8e3c59550fdaa11 +Block 0029 [ 83]: e63a45ddb7435b1e +Block 0029 [ 84]: 6f6ce4dd69a8b71f +Block 0029 [ 85]: f68f28b76c6af71d +Block 0029 [ 86]: ad52a1a38c74efae +Block 0029 [ 87]: c0025f62b2b43ca1 +Block 0029 [ 88]: bdfab290d7ceef39 +Block 0029 [ 89]: 4d997d3fcd108ee8 +Block 0029 [ 90]: 6e24a833e1d8a49f +Block 0029 [ 91]: 349585e1656c0931 +Block 0029 [ 92]: 7a38ee0f7efd88dc +Block 0029 [ 93]: 77f60e1ef786ab0b +Block 0029 [ 94]: 29490d414e566f59 +Block 0029 [ 95]: e9093cb773a67699 +Block 0029 [ 96]: 5636f645e6065f9b +Block 0029 [ 97]: 413cdadedad007a6 +Block 0029 [ 98]: 3ce17b377bb2ad09 +Block 0029 [ 99]: 9521a534bacb031b +Block 0029 [100]: 546c24c320ead0ef +Block 0029 [101]: e0675e71649d878b +Block 0029 [102]: a47fad1344a99e2e +Block 0029 [103]: 408876c4f82c47dc +Block 0029 [104]: dca85e162f8d0d36 +Block 0029 [105]: 6877846c40c7f0f2 +Block 0029 [106]: d864a84891ab5412 +Block 0029 [107]: f258de875bdca86d +Block 0029 [108]: 03e85378a491acbf +Block 0029 [109]: ef4333022e5e2266 +Block 0029 [110]: 7e5cab39863e81d4 +Block 0029 [111]: afda4f13115bf9e9 +Block 0029 [112]: 0862355e4c705112 +Block 0029 [113]: 0adbeb157deff933 +Block 0029 [114]: 059707393cc95e97 +Block 0029 [115]: fd3182b6cc4b166c +Block 0029 [116]: 2c961278c9d1f4b5 +Block 0029 [117]: a26f46272f117fe1 +Block 0029 [118]: d6cc93a6f359730d +Block 0029 [119]: d3c00e15a7b16c88 +Block 0029 [120]: 126313ed08ab6177 +Block 0029 [121]: 07fedc02098d9756 +Block 0029 [122]: 3eea4cd3ad6e17df +Block 0029 [123]: 77383c002c96a26f +Block 0029 [124]: 6f84dcc0df35965f +Block 0029 [125]: fda794b95a3ed635 +Block 0029 [126]: 17c31f69d737fecd +Block 0029 [127]: 1d0bb16832a5d8d9 +Block 0030 [ 0]: 06faaf86c4357a63 +Block 0030 [ 1]: 187215eb774ab9c4 +Block 0030 [ 2]: e5d6061e3a116325 +Block 0030 [ 3]: 56360afd6c76444b +Block 0030 [ 4]: e2ae61086f6baa40 +Block 0030 [ 5]: 95404adbf442bf22 +Block 0030 [ 6]: 17f373fd6aafa6e8 +Block 0030 [ 7]: a41d44529d3c7702 +Block 0030 [ 8]: f16f0c58c5a515a3 +Block 0030 [ 9]: 2cf725568683bad4 +Block 0030 [ 10]: 46fb319e77174ad4 +Block 0030 [ 11]: 0e7ad98d8b446f88 +Block 0030 [ 12]: 11001e00646f1339 +Block 0030 [ 13]: d13329ad0f7eeca2 +Block 0030 [ 14]: f87b30bd41ec5063 +Block 0030 [ 15]: 83f6de915368cb97 +Block 0030 [ 16]: 1d72642a0cfc2c12 +Block 0030 [ 17]: 1c49f60f8fe27a9d +Block 0030 [ 18]: e14c4a9eb832fb0a +Block 0030 [ 19]: 0558b1e4c804f704 +Block 0030 [ 20]: ae214c39704454c7 +Block 0030 [ 21]: e1543cded2b2b1a4 +Block 0030 [ 22]: 50025cf0f167f678 +Block 0030 [ 23]: 1ddd862ffe3480aa +Block 0030 [ 24]: 767efd1c4f0c72d0 +Block 0030 [ 25]: 02801327344e815f +Block 0030 [ 26]: 9501d4e0f2971e86 +Block 0030 [ 27]: fd0c9541a4739bc0 +Block 0030 [ 28]: af1851ea44b3e369 +Block 0030 [ 29]: 37215e2791a82a3e +Block 0030 [ 30]: d0c64eeb8306a627 +Block 0030 [ 31]: 1f592f7e1dcc4ea0 +Block 0030 [ 32]: 2ffe7eeb807e5dd1 +Block 0030 [ 33]: ecd4afdf62b6a263 +Block 0030 [ 34]: 588674ffb6710991 +Block 0030 [ 35]: bbe3344c63d991fe +Block 0030 [ 36]: 4d25aba6ecb0ab9e +Block 0030 [ 37]: b97c6198cb98993a +Block 0030 [ 38]: faf1d9e4b742e20b +Block 0030 [ 39]: a0fa95a0d9036fed +Block 0030 [ 40]: 10c92928749af328 +Block 0030 [ 41]: a2f08707d69942f0 +Block 0030 [ 42]: 14ed52c3376fbbb1 +Block 0030 [ 43]: 491744b39b23ec69 +Block 0030 [ 44]: 3d6fb0f811e1fa93 +Block 0030 [ 45]: b16b0918d1822cd1 +Block 0030 [ 46]: 4e9e24e3d83f58d7 +Block 0030 [ 47]: 937438d4d16a045d +Block 0030 [ 48]: 5c4dfe9183e7027d +Block 0030 [ 49]: 242d26fab41e8429 +Block 0030 [ 50]: 837997f2bcb0a989 +Block 0030 [ 51]: 733af3308f05666b +Block 0030 [ 52]: 9e7eff9d395b0d26 +Block 0030 [ 53]: f5eddbcb0359d70a +Block 0030 [ 54]: 6fb6f80eee13ee63 +Block 0030 [ 55]: 79705f3b3e8f50e6 +Block 0030 [ 56]: d400902a38bf8231 +Block 0030 [ 57]: 87905ac331d93527 +Block 0030 [ 58]: 759a79c21cdbe946 +Block 0030 [ 59]: 6e1bab338c267a63 +Block 0030 [ 60]: 2aaeddc1fd55ec08 +Block 0030 [ 61]: 73dcdb99d6529922 +Block 0030 [ 62]: fc20a90382ff207e +Block 0030 [ 63]: cd9951922068a854 +Block 0030 [ 64]: 99a2d615ce8f36d0 +Block 0030 [ 65]: 214b493680f9162a +Block 0030 [ 66]: 82a32c9170dd7706 +Block 0030 [ 67]: e7480d0108c76bee +Block 0030 [ 68]: 8a7f18a34fffdc27 +Block 0030 [ 69]: 2b2785750dcc7550 +Block 0030 [ 70]: 481082b18dbf5424 +Block 0030 [ 71]: 52583c728ae14666 +Block 0030 [ 72]: 5f5f694e2b724738 +Block 0030 [ 73]: 36f9c65d26534609 +Block 0030 [ 74]: 62cc88761fca9a68 +Block 0030 [ 75]: 0dd13380d7ac1f16 +Block 0030 [ 76]: 35fb9d078427ad24 +Block 0030 [ 77]: 1700fcdf1b796e53 +Block 0030 [ 78]: 158003d77db2d9d0 +Block 0030 [ 79]: 7cb7c0c420b5d9b1 +Block 0030 [ 80]: 782c4d56a15aebcd +Block 0030 [ 81]: ffe85632965712b0 +Block 0030 [ 82]: 129aee8c44b285ed +Block 0030 [ 83]: 21190577528afe47 +Block 0030 [ 84]: db9c19d775e6f11d +Block 0030 [ 85]: ac43b65cd70c76d2 +Block 0030 [ 86]: d325e5810a76c6b5 +Block 0030 [ 87]: 8f034f7e0eb746e5 +Block 0030 [ 88]: c8df3124c2cb3557 +Block 0030 [ 89]: 2f12b6192f15485a +Block 0030 [ 90]: ddb7107ff4a7f86b +Block 0030 [ 91]: 2887b68c44815c3e +Block 0030 [ 92]: 857831851a4949cc +Block 0030 [ 93]: a1f5e6dade25bc50 +Block 0030 [ 94]: 484f51bbb5b197e7 +Block 0030 [ 95]: b0d74bffbdee2ded +Block 0030 [ 96]: 6385f08f32511be4 +Block 0030 [ 97]: 4a67a1191db0dfa1 +Block 0030 [ 98]: 805ca6260698783f +Block 0030 [ 99]: 96c092604ed6b946 +Block 0030 [100]: 66893b81339d9ca9 +Block 0030 [101]: 51369a103bfb3948 +Block 0030 [102]: a8aa1fa92bf61251 +Block 0030 [103]: 6e09aaba9f66053c +Block 0030 [104]: c5ce3eb103dd370a +Block 0030 [105]: 4a2aaa9aaf6215ee +Block 0030 [106]: c67a60f23cc8a558 +Block 0030 [107]: a55e72a95dd53eea +Block 0030 [108]: dc97febd17830de0 +Block 0030 [109]: 635d64d5daf2bae4 +Block 0030 [110]: 6a2c19df26561bf8 +Block 0030 [111]: 1c87e6f1395ecce8 +Block 0030 [112]: 30654b9719440212 +Block 0030 [113]: 3eaf14e4981b3a4c +Block 0030 [114]: 39ec1251215373a9 +Block 0030 [115]: 5409e426ae48c456 +Block 0030 [116]: 438a2a14e43f1c87 +Block 0030 [117]: ffa3bfcd4f2e9316 +Block 0030 [118]: 0d0731d2e6465b95 +Block 0030 [119]: 6a8389557c831fd5 +Block 0030 [120]: 87f96e864fd48bc3 +Block 0030 [121]: 21cff67fa2b9db4a +Block 0030 [122]: 715fe10e95ff3746 +Block 0030 [123]: f2ade635af167312 +Block 0030 [124]: f7b3dd2ddbbbc129 +Block 0030 [125]: e3318db2d934c7f1 +Block 0030 [126]: e859c153c96218ce +Block 0030 [127]: 164fe9bc73bb26b4 +Block 0031 [ 0]: 1b75efd5304f056d +Block 0031 [ 1]: bf463e41d488275c +Block 0031 [ 2]: 941b47873adff5fe +Block 0031 [ 3]: 2e9b6397d72d3c3f +Block 0031 [ 4]: 5c5cbd4b38fbb99c +Block 0031 [ 5]: 35c8fb736f64ceeb +Block 0031 [ 6]: f09d8a73916dac38 +Block 0031 [ 7]: 93fba50823df06e6 +Block 0031 [ 8]: 0b7757128f783ae7 +Block 0031 [ 9]: bdee6f93051c40aa +Block 0031 [ 10]: c66cbdc6778c0eac +Block 0031 [ 11]: b033a39dac87bfd7 +Block 0031 [ 12]: 02b71a0ce04fadbe +Block 0031 [ 13]: 22e11dc3dc9e2bbd +Block 0031 [ 14]: b34ca0ba5283da3d +Block 0031 [ 15]: 6d6e3e83c2054d72 +Block 0031 [ 16]: cee1e38f20aabb40 +Block 0031 [ 17]: e60fd2fca2962346 +Block 0031 [ 18]: 6271c1ea64d3acab +Block 0031 [ 19]: e53b94baf089a82a +Block 0031 [ 20]: 986c8964a9c8856e +Block 0031 [ 21]: 634dab64bedb01cd +Block 0031 [ 22]: 3f102b85059c1b57 +Block 0031 [ 23]: 56bb3aa72f1cfe45 +Block 0031 [ 24]: 624cad38f78c2c7c +Block 0031 [ 25]: a41c872fb170de87 +Block 0031 [ 26]: fca6abd7af42e829 +Block 0031 [ 27]: 656d576d3c7dcf23 +Block 0031 [ 28]: 5a3ea0d15d914a77 +Block 0031 [ 29]: 68b39ed03d43822c +Block 0031 [ 30]: 326f2a39f2cf6e71 +Block 0031 [ 31]: 87032ea9406a27a3 +Block 0031 [ 32]: 290b8ca6f768dcd5 +Block 0031 [ 33]: 971ad7984f60d557 +Block 0031 [ 34]: f969c776d05a6ba2 +Block 0031 [ 35]: 568f1669228eae4f +Block 0031 [ 36]: 66c7df737d2d098c +Block 0031 [ 37]: 5991c4325083ca15 +Block 0031 [ 38]: 0a33cadfa5489d6b +Block 0031 [ 39]: 85161c0f20ada2e7 +Block 0031 [ 40]: 753e2541d4f26d3c +Block 0031 [ 41]: 529bd28c7b89855c +Block 0031 [ 42]: f37985cd14b0fc66 +Block 0031 [ 43]: 0d543ab4a2ab4a2c +Block 0031 [ 44]: d9821ac717c5da03 +Block 0031 [ 45]: 13aa09d388b150ca +Block 0031 [ 46]: 9d892c542b2da4f8 +Block 0031 [ 47]: 4596a049a50684c7 +Block 0031 [ 48]: 25fb0e9d2e35a2a6 +Block 0031 [ 49]: d53a3dde8446ae68 +Block 0031 [ 50]: 7a3670321ac561e6 +Block 0031 [ 51]: bb08107f2560b09f +Block 0031 [ 52]: 14c3857b159792dc +Block 0031 [ 53]: 6210affb7186cee3 +Block 0031 [ 54]: 7e1eb58956a1fb4a +Block 0031 [ 55]: e2b2d6ce4588401d +Block 0031 [ 56]: 5a6f61240e364ad2 +Block 0031 [ 57]: b6c884fdf1050aeb +Block 0031 [ 58]: f6286b150c1da490 +Block 0031 [ 59]: bb8e51a87b94f8a0 +Block 0031 [ 60]: 332ce9283f68d85e +Block 0031 [ 61]: c38fdd3f7434f32d +Block 0031 [ 62]: 228866b2c26e34c8 +Block 0031 [ 63]: f85ebc1618b79b6d +Block 0031 [ 64]: b518f14fc56caef6 +Block 0031 [ 65]: 752a292663431849 +Block 0031 [ 66]: 9d5fe9dac0697517 +Block 0031 [ 67]: b535a68f65c57dc0 +Block 0031 [ 68]: e348ea1cdac43f44 +Block 0031 [ 69]: 13f1334d6e9bf85e +Block 0031 [ 70]: 283b8fe3a17c3fea +Block 0031 [ 71]: 21bd877a7a74957a +Block 0031 [ 72]: ee156e24dd64640c +Block 0031 [ 73]: 22cfce14f0330ae5 +Block 0031 [ 74]: eb54556dd37c24d1 +Block 0031 [ 75]: 7d801f2118f7fa33 +Block 0031 [ 76]: 4c617d0148a382a9 +Block 0031 [ 77]: 58bf2b668a7c045d +Block 0031 [ 78]: 4cb48eb731183f86 +Block 0031 [ 79]: c3079adbfc30460d +Block 0031 [ 80]: 49215e84eb3b907f +Block 0031 [ 81]: f152c24a4624747e +Block 0031 [ 82]: 450842e74d33266d +Block 0031 [ 83]: 572ae15c16095fa3 +Block 0031 [ 84]: 5a5fc57805f2adc5 +Block 0031 [ 85]: 05c3fb94ed3ea6fa +Block 0031 [ 86]: 780589833f0abe13 +Block 0031 [ 87]: 87825a64c89e9a64 +Block 0031 [ 88]: ddaf109d7b13c739 +Block 0031 [ 89]: e8ebb94b4825d7bb +Block 0031 [ 90]: 62a82e219106de32 +Block 0031 [ 91]: f39e2861606df718 +Block 0031 [ 92]: e6210ab24e5b2584 +Block 0031 [ 93]: 770ea215d0556c76 +Block 0031 [ 94]: c974eef2fe9709e2 +Block 0031 [ 95]: fccb2cd4fe87501e +Block 0031 [ 96]: f12e254dc0df1911 +Block 0031 [ 97]: 26f01267d74549b5 +Block 0031 [ 98]: f9945591c29e5796 +Block 0031 [ 99]: f25bf3d06f6e0cdb +Block 0031 [100]: 29dd601fc1ebd250 +Block 0031 [101]: 9e1a251ecd42416a +Block 0031 [102]: c5f64ffca0f15a94 +Block 0031 [103]: 6b77e4cd72364bc2 +Block 0031 [104]: 87d514d8c7a2177a +Block 0031 [105]: b78b0f6991278189 +Block 0031 [106]: 3d2bcaa959d93492 +Block 0031 [107]: f45032027a4fcb81 +Block 0031 [108]: 9d96e07f3d41419c +Block 0031 [109]: 8e83ef21420b0263 +Block 0031 [110]: 0b834ffee596a9f1 +Block 0031 [111]: 987b7f1f2c86475d +Block 0031 [112]: 24840f2805ee7c0f +Block 0031 [113]: 23629efc11196286 +Block 0031 [114]: 56fd8771a0bc617a +Block 0031 [115]: 125e85de9586d448 +Block 0031 [116]: 4f194efe3a546712 +Block 0031 [117]: 0aabaee1afd9f936 +Block 0031 [118]: 47cb3f180ec29af9 +Block 0031 [119]: 8d3169c8810c7258 +Block 0031 [120]: cc9ab6861463e518 +Block 0031 [121]: cb72c54e6e7bd740 +Block 0031 [122]: a3161c47c51f546d +Block 0031 [123]: 38292d24214a65ab +Block 0031 [124]: a67ff90c16266a3c +Block 0031 [125]: 241fe584e4283bd8 +Block 0031 [126]: 16e73c7bc1067de9 +Block 0031 [127]: 78f5f3c568b26d50 + + After pass 2: +Block 0000 [ 0]: b2db2cba8393858f +Block 0000 [ 1]: b1645132ef755439 +Block 0000 [ 2]: c65526cc5b1ba836 +Block 0000 [ 3]: 0ceb6fde5a697c6d +Block 0000 [ 4]: cfba7c49d2c8a63e +Block 0000 [ 5]: ecca6830247751b0 +Block 0000 [ 6]: dfbcd384882e51bd +Block 0000 [ 7]: 0fae5c46e1916edd +Block 0000 [ 8]: b66226556fb54ed2 +Block 0000 [ 9]: 42677ba7315d3bdf +Block 0000 [ 10]: 51e965bd9678b787 +Block 0000 [ 11]: 41c58891359f7528 +Block 0000 [ 12]: 07c3c951dd9888f4 +Block 0000 [ 13]: b962bd19f8ad4887 +Block 0000 [ 14]: d9bcf1cb6d828ed1 +Block 0000 [ 15]: 1df7994029c16524 +Block 0000 [ 16]: 2c7c3b51da8ff0aa +Block 0000 [ 17]: 1419e9fa233b18a5 +Block 0000 [ 18]: 3a214d367965963a +Block 0000 [ 19]: 43b20d50ee8bdda7 +Block 0000 [ 20]: df32702230d38d42 +Block 0000 [ 21]: 7ee13d5892a9fde2 +Block 0000 [ 22]: fae7bfbcc7f2aae1 +Block 0000 [ 23]: 40045b3b20d1866a +Block 0000 [ 24]: 83d006d8e9595c48 +Block 0000 [ 25]: e1212375d386d373 +Block 0000 [ 26]: 0b72f1ff6dfae513 +Block 0000 [ 27]: 9bcd8a180ed0bbf9 +Block 0000 [ 28]: 3e1a3d7fa172da36 +Block 0000 [ 29]: 3bac80b4cedb219e +Block 0000 [ 30]: 3c3459c96616599e +Block 0000 [ 31]: b592b19385558ea1 +Block 0000 [ 32]: fbd2493ed10bb2a7 +Block 0000 [ 33]: 250e933ef6c9c020 +Block 0000 [ 34]: 0d7e0cefe3d0a15a +Block 0000 [ 35]: 6a7662c61a16f7fe +Block 0000 [ 36]: 245ee24b96eb96f1 +Block 0000 [ 37]: f06fce3e54a2d2bf +Block 0000 [ 38]: 89645646c43d254d +Block 0000 [ 39]: 1d6e702c0b24a3e2 +Block 0000 [ 40]: 4f29b5744156c572 +Block 0000 [ 41]: e510c23181c5b3ff +Block 0000 [ 42]: c19e9621e1c84234 +Block 0000 [ 43]: 97a28b13fd5bc3ce +Block 0000 [ 44]: d9e3c96741d996fa +Block 0000 [ 45]: 1b76d65989002d8c +Block 0000 [ 46]: 6dcb12f59eb46a20 +Block 0000 [ 47]: cdea2a6952939ac9 +Block 0000 [ 48]: 73cde7598b16f5e6 +Block 0000 [ 49]: 6e8d427a1fa79cc6 +Block 0000 [ 50]: 09231b609a9afff8 +Block 0000 [ 51]: daa1b5f0188f0433 +Block 0000 [ 52]: 893dfceae459725d +Block 0000 [ 53]: 592be1b00b7b28c8 +Block 0000 [ 54]: ac7c1b8ab820cf31 +Block 0000 [ 55]: 781a15a64a128347 +Block 0000 [ 56]: eb8d6ff2c23512dd +Block 0000 [ 57]: ec5bc9d05a4e273c +Block 0000 [ 58]: bd384a622836102a +Block 0000 [ 59]: 5076d7e3dcf92f7d +Block 0000 [ 60]: 439801ec770beae5 +Block 0000 [ 61]: 85ac3cddfe44da89 +Block 0000 [ 62]: 99b614b31261a345 +Block 0000 [ 63]: e2933b5f9611fc54 +Block 0000 [ 64]: 3037fa06b1ece01e +Block 0000 [ 65]: c9e51071135fa751 +Block 0000 [ 66]: 05bb076f2cc813f6 +Block 0000 [ 67]: 9f4717653db38ec9 +Block 0000 [ 68]: 41c71e48750cee5c +Block 0000 [ 69]: 9a0efdc6a8348896 +Block 0000 [ 70]: e8d34542f503625f +Block 0000 [ 71]: 6ac59a202acd31be +Block 0000 [ 72]: 0c6c398fd2b99bed +Block 0000 [ 73]: d7ed380318328435 +Block 0000 [ 74]: e1298d4fc69251c3 +Block 0000 [ 75]: 1b2f183356e54668 +Block 0000 [ 76]: 6eebc1ee8ed6cb90 +Block 0000 [ 77]: c261fa0c99a39c45 +Block 0000 [ 78]: 6df71efdef5b48c9 +Block 0000 [ 79]: 07162892169da587 +Block 0000 [ 80]: 5e736de2bdac47a6 +Block 0000 [ 81]: fde80f2d0a04bdfc +Block 0000 [ 82]: fd8486ce15f751d2 +Block 0000 [ 83]: e0f22c17510e70ac +Block 0000 [ 84]: 6a30ca58582063c8 +Block 0000 [ 85]: b325e44084988694 +Block 0000 [ 86]: 89f74d37d22ff300 +Block 0000 [ 87]: e9c409d05c38072b +Block 0000 [ 88]: 5fe0a89cb1e2e19b +Block 0000 [ 89]: c090cb619dbb525d +Block 0000 [ 90]: 0507d89abbab17f6 +Block 0000 [ 91]: 2fee6db9325d264f +Block 0000 [ 92]: e3fd1f8eedbda3e4 +Block 0000 [ 93]: 3424a4136765270d +Block 0000 [ 94]: c5b19c3af1971bbc +Block 0000 [ 95]: 6cb49826baeea0fd +Block 0000 [ 96]: b9b340de7a225a23 +Block 0000 [ 97]: 4b725cbedf9b7b08 +Block 0000 [ 98]: 7c75fc3b73e1b6d2 +Block 0000 [ 99]: fcd2e45c0fcd34aa +Block 0000 [100]: a5ad7705b674a22e +Block 0000 [101]: 6e2745f70d2e377d +Block 0000 [102]: 59006b446c4c82bb +Block 0000 [103]: 703f52dcee2e81d1 +Block 0000 [104]: 3f6b82b93effffb4 +Block 0000 [105]: 13ed467534c82418 +Block 0000 [106]: a55f4cb20247b2ee +Block 0000 [107]: 7131d4f50e8b890a +Block 0000 [108]: 73490c08292f39ff +Block 0000 [109]: 850a4da396b62427 +Block 0000 [110]: 1c1b4d28ed1be0a3 +Block 0000 [111]: bb9dc05ac200bc36 +Block 0000 [112]: eb87ae6d49a2fea9 +Block 0000 [113]: 8b01b4b60607e7b7 +Block 0000 [114]: 5601e9b4050e26a4 +Block 0000 [115]: 1a708020cf30e8c4 +Block 0000 [116]: 357787f560b3e117 +Block 0000 [117]: 270c70ba1394aeb3 +Block 0000 [118]: e974ce82f577c8af +Block 0000 [119]: e99a323c29101242 +Block 0000 [120]: df5246c0a22ef3aa +Block 0000 [121]: faa08f3454fa7b73 +Block 0000 [122]: 7703d220dfff70de +Block 0000 [123]: 3572d880754b85de +Block 0000 [124]: 74fd304cf2220306 +Block 0000 [125]: 0efda171378283b6 +Block 0000 [126]: 95d2fb71f0e67df6 +Block 0000 [127]: 5281bd4c8f8e3bfc +Block 0001 [ 0]: a601dc0876e7f5d2 +Block 0001 [ 1]: e8156a6fee9202a4 +Block 0001 [ 2]: e10d48d53f592f17 +Block 0001 [ 3]: 2112303d6ee471f4 +Block 0001 [ 4]: f625e1a0f9017d96 +Block 0001 [ 5]: 5b17ed2f17876d0f +Block 0001 [ 6]: 0c890126ce1adb94 +Block 0001 [ 7]: 78dff2e392d3a0c6 +Block 0001 [ 8]: f282dbd5f3ef11a5 +Block 0001 [ 9]: 524cb81ea5960dae +Block 0001 [ 10]: 4004d121dc3f834e +Block 0001 [ 11]: 774715d1bbafb642 +Block 0001 [ 12]: f99dd9b032874b77 +Block 0001 [ 13]: dffa663def2f79f6 +Block 0001 [ 14]: 16b48144484f1878 +Block 0001 [ 15]: b13072d77e12ced8 +Block 0001 [ 16]: 165681d7f28c89d7 +Block 0001 [ 17]: aec8db840bc885be +Block 0001 [ 18]: 02c41c5cc33323f6 +Block 0001 [ 19]: ac51867a32fae7d3 +Block 0001 [ 20]: a6662cf115cab5e4 +Block 0001 [ 21]: a7dfac6e1453e9ca +Block 0001 [ 22]: ecccdc35fe6a81da +Block 0001 [ 23]: 27a9a3e8bfc62791 +Block 0001 [ 24]: 2b33ed723d62b490 +Block 0001 [ 25]: 19568a46fb5516d7 +Block 0001 [ 26]: f204bae6ccfaa8b5 +Block 0001 [ 27]: 996cba2cf431026e +Block 0001 [ 28]: 61f7dd05475d6ee6 +Block 0001 [ 29]: 2962068995d86580 +Block 0001 [ 30]: 418e5d7ec95f73a4 +Block 0001 [ 31]: dbdc12a8702d4c8d +Block 0001 [ 32]: 749b9bc8a38f50d6 +Block 0001 [ 33]: 7a0f8357fd40f318 +Block 0001 [ 34]: 7cb99e83a49df9ea +Block 0001 [ 35]: f448e5b423259aa5 +Block 0001 [ 36]: fbb55be1b0dc18f1 +Block 0001 [ 37]: f9d3e9671ac793a5 +Block 0001 [ 38]: d7ed26cad3bd50dd +Block 0001 [ 39]: 7bdc2b25b7b4380e +Block 0001 [ 40]: 564193ed46bbd38f +Block 0001 [ 41]: bf93c93f54ad58fb +Block 0001 [ 42]: 968566bd98935a80 +Block 0001 [ 43]: 32aea1755a271495 +Block 0001 [ 44]: 1070a94cbe2953f5 +Block 0001 [ 45]: 400ea4d9f1a3fa35 +Block 0001 [ 46]: 7c935e65d9c735a1 +Block 0001 [ 47]: a8175cb4c5a150cc +Block 0001 [ 48]: 443e38c447553835 +Block 0001 [ 49]: ce0dff4aacadc471 +Block 0001 [ 50]: 53be5d9176c17ca0 +Block 0001 [ 51]: 3256ac925d114b7e +Block 0001 [ 52]: c48e34ab7016cf82 +Block 0001 [ 53]: 6785fc5ebe921c3f +Block 0001 [ 54]: dc79dc6a77fe9386 +Block 0001 [ 55]: 9d6d1d9be125d35c +Block 0001 [ 56]: 712b2f8118afd099 +Block 0001 [ 57]: d809acd71157d73a +Block 0001 [ 58]: ff16fadc5fb7dd6d +Block 0001 [ 59]: d67b1cb17bd3725b +Block 0001 [ 60]: 3daccb55beb052d8 +Block 0001 [ 61]: 35c964dec1386806 +Block 0001 [ 62]: bc105f476a5e1249 +Block 0001 [ 63]: 46ecb66699fa57e2 +Block 0001 [ 64]: f88e5a59aefe6cf2 +Block 0001 [ 65]: 5eadb66d6c148e37 +Block 0001 [ 66]: 7cf87f7735867538 +Block 0001 [ 67]: f6be4a2544f47f38 +Block 0001 [ 68]: 55266e0cead300c7 +Block 0001 [ 69]: 7e11af1a2670a739 +Block 0001 [ 70]: 9a2af3f6913c8ee4 +Block 0001 [ 71]: 394a6f1984e6d539 +Block 0001 [ 72]: ff7ed615ae767138 +Block 0001 [ 73]: d3ceb96f26db3d27 +Block 0001 [ 74]: 30d3b4ba1b1a0af8 +Block 0001 [ 75]: 0e45f476265b4d99 +Block 0001 [ 76]: cdbad3cd5ff77a1e +Block 0001 [ 77]: ef3187975a8f442b +Block 0001 [ 78]: c1308929690f0031 +Block 0001 [ 79]: 6d85c6d286a25367 +Block 0001 [ 80]: dac2896b549657a4 +Block 0001 [ 81]: 23e32881a1b09a6d +Block 0001 [ 82]: ec20c667fcbdeb4e +Block 0001 [ 83]: 87bbeb980e67d712 +Block 0001 [ 84]: 20cfdefef627dd01 +Block 0001 [ 85]: 621ae179a533c9a2 +Block 0001 [ 86]: a84be778d4427ffd +Block 0001 [ 87]: d0855b3fe58411a3 +Block 0001 [ 88]: 9754baed0bbe3f81 +Block 0001 [ 89]: 1f4bc2bd47559c8c +Block 0001 [ 90]: e9ee56d7d1e3fa45 +Block 0001 [ 91]: 19f21b10f69a7a56 +Block 0001 [ 92]: b40c652a7f4731d8 +Block 0001 [ 93]: 81e38a68107cbc0f +Block 0001 [ 94]: 49560f11e34b7439 +Block 0001 [ 95]: bbfdc16f8fbd75bf +Block 0001 [ 96]: e31edc9e8fceabcf +Block 0001 [ 97]: 32b1765671372267 +Block 0001 [ 98]: 8ad8dae552057de1 +Block 0001 [ 99]: 346aae886e91cc51 +Block 0001 [100]: b5531256bf78f06b +Block 0001 [101]: d79ecff14855b40f +Block 0001 [102]: 242357b9aed4b7d1 +Block 0001 [103]: 84845b5d45408e08 +Block 0001 [104]: d7dbef959f78cea2 +Block 0001 [105]: 21618b4913dfaa30 +Block 0001 [106]: 45761e263069a8a9 +Block 0001 [107]: 10994f746838cb8a +Block 0001 [108]: 9103b613cdcab634 +Block 0001 [109]: 7836e88870955857 +Block 0001 [110]: 8f0c4de9d1a2f683 +Block 0001 [111]: 30b4a1e9ab436f45 +Block 0001 [112]: f33c6c4d38df040b +Block 0001 [113]: 2f85731764ed984a +Block 0001 [114]: 30fbf7039eef9644 +Block 0001 [115]: ad98773602b57959 +Block 0001 [116]: 497ae71d5f2a1d4a +Block 0001 [117]: b21fa18653c5cdbc +Block 0001 [118]: ef19121d61008f70 +Block 0001 [119]: 66b6825d50197690 +Block 0001 [120]: 843664a09f8c1636 +Block 0001 [121]: 16a7ce3bd9d2eb0b +Block 0001 [122]: b22c00136e008148 +Block 0001 [123]: 7ea52a8d4177b05e +Block 0001 [124]: 18989952ed74fa99 +Block 0001 [125]: bce998118659ba50 +Block 0001 [126]: 3928fafd8927bcca +Block 0001 [127]: 68902f7910072951 +Block 0002 [ 0]: e81e0bbaf6f28522 +Block 0002 [ 1]: 396861783abb23b8 +Block 0002 [ 2]: 3d5d4742fb81fbd5 +Block 0002 [ 3]: 4fa13942992ac0da +Block 0002 [ 4]: b561199a7d8503a0 +Block 0002 [ 5]: c21da733b005a908 +Block 0002 [ 6]: c26444122b6b9274 +Block 0002 [ 7]: 36a63f4646df05b8 +Block 0002 [ 8]: 6b2a0c7fb0b6adc5 +Block 0002 [ 9]: c156d6f3856e3678 +Block 0002 [ 10]: 4c504d2c87841d81 +Block 0002 [ 11]: 4905e03cf1e6f0ee +Block 0002 [ 12]: 87a0c471ff7526ce +Block 0002 [ 13]: 26367649350d355e +Block 0002 [ 14]: 00e857202c91a68a +Block 0002 [ 15]: f9d076b2e46ebdaa +Block 0002 [ 16]: 9611b8a77b3aa7f3 +Block 0002 [ 17]: b14be5ae4ac7412e +Block 0002 [ 18]: 1eeebb9c268d7ef3 +Block 0002 [ 19]: d86c569647cbd1ad +Block 0002 [ 20]: a8fa312f44927434 +Block 0002 [ 21]: 82dcc374e99677b9 +Block 0002 [ 22]: 93ab2bccf995139d +Block 0002 [ 23]: 9b3ca0906a1d8569 +Block 0002 [ 24]: 705ba90bec5e96a5 +Block 0002 [ 25]: 737cd17db84d185b +Block 0002 [ 26]: 309057ac43fd66d9 +Block 0002 [ 27]: 220a24df79ee088d +Block 0002 [ 28]: 9d33ecdbf98b6765 +Block 0002 [ 29]: 52cb5ef7639b9dfe +Block 0002 [ 30]: 9007776749321e4a +Block 0002 [ 31]: db73be5f61995fe6 +Block 0002 [ 32]: 2dc127b7bee524b6 +Block 0002 [ 33]: b5abec945d264219 +Block 0002 [ 34]: 0031ea20aa52c2a2 +Block 0002 [ 35]: 3eed4344c253c7e0 +Block 0002 [ 36]: 6437a60bd66f53c4 +Block 0002 [ 37]: 6615df9a4e849340 +Block 0002 [ 38]: 8f86a3766032871a +Block 0002 [ 39]: ca4d635a6e057619 +Block 0002 [ 40]: 4390465343d27c46 +Block 0002 [ 41]: 3f2043373696faf4 +Block 0002 [ 42]: de93732af23f352a +Block 0002 [ 43]: da6778068e73ddd4 +Block 0002 [ 44]: 7453b8124450b27e +Block 0002 [ 45]: 5f51a2d57181f2b9 +Block 0002 [ 46]: de9c940fa9ab4c04 +Block 0002 [ 47]: 9d6d029e75c9a64f +Block 0002 [ 48]: 9073d8c7c776ac96 +Block 0002 [ 49]: 465b289ca08e6714 +Block 0002 [ 50]: aa890c575a2d7ec8 +Block 0002 [ 51]: 1cdb78c4199a40c5 +Block 0002 [ 52]: bce111d86807b484 +Block 0002 [ 53]: 3ab2d84a54074b6c +Block 0002 [ 54]: b8cc3aa6e3d80a02 +Block 0002 [ 55]: f1acd8318d693ac8 +Block 0002 [ 56]: 5eecf38eadaf104f +Block 0002 [ 57]: 4e79ef3026ab811b +Block 0002 [ 58]: 235310779616b594 +Block 0002 [ 59]: 73438a3256d1eaea +Block 0002 [ 60]: f4495e9185ed3c12 +Block 0002 [ 61]: c7a28910ae700391 +Block 0002 [ 62]: 742a596e1015c48f +Block 0002 [ 63]: 41178157bc7ce775 +Block 0002 [ 64]: edc6a55966707331 +Block 0002 [ 65]: 39497b1bd3a41980 +Block 0002 [ 66]: f4a3315a41c01d71 +Block 0002 [ 67]: 297dc5267a33faab +Block 0002 [ 68]: 170949ed98cc4fce +Block 0002 [ 69]: d2dc12ec69896786 +Block 0002 [ 70]: 434d5a5851822fe8 +Block 0002 [ 71]: 00118dec328147d3 +Block 0002 [ 72]: 03c8fc8c4d44db96 +Block 0002 [ 73]: ae231e8f920cac47 +Block 0002 [ 74]: d6b307e598cc639a +Block 0002 [ 75]: 2469cf2fe0950b18 +Block 0002 [ 76]: 0d9c209438395613 +Block 0002 [ 77]: e335d06493895f16 +Block 0002 [ 78]: b1b305629be232bd +Block 0002 [ 79]: 22b2c7be104a04f2 +Block 0002 [ 80]: 42956faf6651efdc +Block 0002 [ 81]: 98ffb95158f24920 +Block 0002 [ 82]: 4850d302878117b6 +Block 0002 [ 83]: a5d4ed41b0c9d2d8 +Block 0002 [ 84]: 4e3c6348c9371002 +Block 0002 [ 85]: 88608e6e14bffbc2 +Block 0002 [ 86]: 6cd8c4cf2259886c +Block 0002 [ 87]: 45139c5b12f9478d +Block 0002 [ 88]: 1f48e72c84f9dda5 +Block 0002 [ 89]: 6c546f01160e44a7 +Block 0002 [ 90]: 8b4efbca6310e636 +Block 0002 [ 91]: 40a500807dc6cd0e +Block 0002 [ 92]: dc02b2343fddfa24 +Block 0002 [ 93]: 4c4089218010c44b +Block 0002 [ 94]: 27eb0fc83d7da899 +Block 0002 [ 95]: c47a3ba94694ceb4 +Block 0002 [ 96]: 335f4d446479fd60 +Block 0002 [ 97]: 7e9c301621d8ab89 +Block 0002 [ 98]: 5fda24db61006fba +Block 0002 [ 99]: ff01a0a153fe3d37 +Block 0002 [100]: ab885dbb1dad5aa1 +Block 0002 [101]: 6da318547e8e48b3 +Block 0002 [102]: c67697e19524a439 +Block 0002 [103]: ea239bcd02527492 +Block 0002 [104]: edd3ee8a9021717f +Block 0002 [105]: ab51683a66552c40 +Block 0002 [106]: 2c887237f11c913d +Block 0002 [107]: 3f61e4b082c3b242 +Block 0002 [108]: c50d3d277054c9a7 +Block 0002 [109]: 2778d9b6e554a6e6 +Block 0002 [110]: 09641d71ffe05a4d +Block 0002 [111]: 58b8442be16e21a6 +Block 0002 [112]: d44d5b2dc2f9c20a +Block 0002 [113]: 677f96f5bbf6f9e5 +Block 0002 [114]: 06f53f76f2eb2e5a +Block 0002 [115]: b9e4fb1a579ac9b6 +Block 0002 [116]: 8252a5262e683358 +Block 0002 [117]: 11101fdb6e7d6be8 +Block 0002 [118]: 68a3174bf60b8d0f +Block 0002 [119]: cc1f471969d8661f +Block 0002 [120]: 6e2eb3874dfb9351 +Block 0002 [121]: 3dfe41bca6aeb9b6 +Block 0002 [122]: 2ca94479c1d9d9c3 +Block 0002 [123]: cd4cd1e58f0c1a4d +Block 0002 [124]: 220bc444db0c796e +Block 0002 [125]: 0165437e149e3cb5 +Block 0002 [126]: 2c8f5ef3fb489b1c +Block 0002 [127]: c74852363b7f3587 +Block 0003 [ 0]: 367c594bdf96b819 +Block 0003 [ 1]: 862711026ec3ec03 +Block 0003 [ 2]: 4291182dfe50a8a4 +Block 0003 [ 3]: 1968e610fb9b86ff +Block 0003 [ 4]: 1f73c18425908927 +Block 0003 [ 5]: 661b7f342e040cd4 +Block 0003 [ 6]: 8b88a35abe465f87 +Block 0003 [ 7]: 2b53235fa03d495e +Block 0003 [ 8]: 737a290089b25de2 +Block 0003 [ 9]: bf9058e3c9eec8d0 +Block 0003 [ 10]: 99b0126fab231886 +Block 0003 [ 11]: 16bdcc5a061cc916 +Block 0003 [ 12]: 667e764247e2e7be +Block 0003 [ 13]: 65a6b50454441f43 +Block 0003 [ 14]: be337b287eac42d9 +Block 0003 [ 15]: d5bed46e6c3349b1 +Block 0003 [ 16]: c2ea41bc5b6d4bd7 +Block 0003 [ 17]: 4ca8e1e8433670e4 +Block 0003 [ 18]: 759ab2d889551680 +Block 0003 [ 19]: e378158572542bfa +Block 0003 [ 20]: 6b1da15ac3fa96c0 +Block 0003 [ 21]: 8d36589f4cf25ddc +Block 0003 [ 22]: 503549d93ab6c1b7 +Block 0003 [ 23]: b8e8322845e29937 +Block 0003 [ 24]: 180c25fd2dbb1b48 +Block 0003 [ 25]: 6202f1842ab61832 +Block 0003 [ 26]: 5d4c894f0c4737c9 +Block 0003 [ 27]: 88f5a64b933a33df +Block 0003 [ 28]: 84eb153038e7aecc +Block 0003 [ 29]: 0d2621f75b1ae3e9 +Block 0003 [ 30]: b9123ff33039d4fe +Block 0003 [ 31]: 9ed38c24a4e1f8fb +Block 0003 [ 32]: 0c31e521335c8456 +Block 0003 [ 33]: db817288bd62628e +Block 0003 [ 34]: 7ff3b354dbaf962f +Block 0003 [ 35]: e183c8060ab80c30 +Block 0003 [ 36]: 9da848355b0a6225 +Block 0003 [ 37]: 0ceea1cf2734396c +Block 0003 [ 38]: 4432eeb03658f476 +Block 0003 [ 39]: b5b618f8b86b216b +Block 0003 [ 40]: 0d2d80ffd5e95700 +Block 0003 [ 41]: 159c8064f2989f4a +Block 0003 [ 42]: 760c9bcc3f6593ff +Block 0003 [ 43]: 8762acb41bfb6c63 +Block 0003 [ 44]: 4f7ea2fafcaa0e88 +Block 0003 [ 45]: c74933b7dbed9627 +Block 0003 [ 46]: cce5fe1d79ea5c75 +Block 0003 [ 47]: 4b231f4b26c89beb +Block 0003 [ 48]: caaea7d2fd4fd308 +Block 0003 [ 49]: 86b9c4f42595461d +Block 0003 [ 50]: 7ebf7c975364fa90 +Block 0003 [ 51]: 677efa86562f6c9c +Block 0003 [ 52]: 0e82d10cf9f1219a +Block 0003 [ 53]: d670593b1e019fd2 +Block 0003 [ 54]: 972cfb60ed8dba68 +Block 0003 [ 55]: f911987a43fc0a10 +Block 0003 [ 56]: 234a4ede8f00bc1f +Block 0003 [ 57]: 7967eb7e80ae4e59 +Block 0003 [ 58]: fb1a0481cc491916 +Block 0003 [ 59]: 0b058ac506301f85 +Block 0003 [ 60]: a74df515d9e08d97 +Block 0003 [ 61]: 383be2d3251aae14 +Block 0003 [ 62]: b3fd02e917a223ce +Block 0003 [ 63]: 29f39b011fad54c0 +Block 0003 [ 64]: f680bd509bcfdccd +Block 0003 [ 65]: 04d6aefd19cf741c +Block 0003 [ 66]: 0f1252791a746f17 +Block 0003 [ 67]: ab65eb095a9eeafd +Block 0003 [ 68]: c2928de1fe693493 +Block 0003 [ 69]: 048c2309b1815c9b +Block 0003 [ 70]: 8c54712e30b1bd31 +Block 0003 [ 71]: c63b79997378fcaa +Block 0003 [ 72]: 06a86dd8ad9696b5 +Block 0003 [ 73]: c38fc208cb319dc2 +Block 0003 [ 74]: 11cd45107d1f2e50 +Block 0003 [ 75]: e1d87aa8c5e1632e +Block 0003 [ 76]: 5ecdb4d890540442 +Block 0003 [ 77]: 686823fdee54d4ad +Block 0003 [ 78]: 6baade1b2d66b8bf +Block 0003 [ 79]: d55142011ebdea9c +Block 0003 [ 80]: 3c550a40516b719b +Block 0003 [ 81]: 09f369f036292023 +Block 0003 [ 82]: 7211fc8b5f134080 +Block 0003 [ 83]: 956d062cc49f7e15 +Block 0003 [ 84]: 7d04474795e014b4 +Block 0003 [ 85]: 0e8e5948404b3ac4 +Block 0003 [ 86]: 218ff6e138727371 +Block 0003 [ 87]: a1df22c6fbdf78f9 +Block 0003 [ 88]: 290465977b3b3ab9 +Block 0003 [ 89]: 862b0d5bfbf64d5a +Block 0003 [ 90]: c9b4eb5dceb436f5 +Block 0003 [ 91]: 480aa45ac4592905 +Block 0003 [ 92]: 1b42e2a9df42461f +Block 0003 [ 93]: 976e78dabb9a1f6d +Block 0003 [ 94]: 861d4a9050ee9931 +Block 0003 [ 95]: 5b4ae97afa1f29f0 +Block 0003 [ 96]: 61678bcd4367c07f +Block 0003 [ 97]: acefa26ea748ab48 +Block 0003 [ 98]: 0dbf00fa98bb3e54 +Block 0003 [ 99]: 7c8e72baf51824ce +Block 0003 [100]: b8f04cd864a6ff07 +Block 0003 [101]: 371431c4a64aa613 +Block 0003 [102]: 6ff7f3a454608db7 +Block 0003 [103]: cd7fdda08d309d9a +Block 0003 [104]: fc26af4ae96673b0 +Block 0003 [105]: 1e6021dc4f2fdd58 +Block 0003 [106]: 3e11ed915f93ea58 +Block 0003 [107]: 0b1d721f76ca5c50 +Block 0003 [108]: 74d56f4a98df89fd +Block 0003 [109]: 4ab79e7dece12d01 +Block 0003 [110]: 953ff63d4231cb98 +Block 0003 [111]: 29c749ebc02147e1 +Block 0003 [112]: ed59f5603d2dd69b +Block 0003 [113]: 42e81940699fdaf5 +Block 0003 [114]: 4fafbaf8edd4fab0 +Block 0003 [115]: 9591251ce09a535e +Block 0003 [116]: 2a17d91f13eefd80 +Block 0003 [117]: df438c508fc636ad +Block 0003 [118]: 94b1054862d5203a +Block 0003 [119]: 6e4f1e45898dba82 +Block 0003 [120]: 2b00c9cda99f2824 +Block 0003 [121]: f68ddd0fd8c7efe0 +Block 0003 [122]: 4faf35b95430fc43 +Block 0003 [123]: 09adc28b97ecf942 +Block 0003 [124]: 8bef2eb8712226f2 +Block 0003 [125]: 1be57ca4510531d2 +Block 0003 [126]: db6b46a50db33ef9 +Block 0003 [127]: d9871aeb9860bdc4 +Block 0004 [ 0]: 5f103c79d2da016e +Block 0004 [ 1]: eee0f4e13e3d408a +Block 0004 [ 2]: 5dac3a3b0c267dc0 +Block 0004 [ 3]: e7e4dd5e37f8be65 +Block 0004 [ 4]: cec7474083af3f60 +Block 0004 [ 5]: 95fb7feaf43b8be6 +Block 0004 [ 6]: 85d6a9e5c3a3f907 +Block 0004 [ 7]: e829e06d777ca98e +Block 0004 [ 8]: dcfd1b0ec732826c +Block 0004 [ 9]: 2cdefd109e8d3664 +Block 0004 [ 10]: 23ba90d2242bd021 +Block 0004 [ 11]: f86bd3217354cc3c +Block 0004 [ 12]: f79ce3b15e828607 +Block 0004 [ 13]: 83aae383ff27522f +Block 0004 [ 14]: 1d71b7ce3d807890 +Block 0004 [ 15]: 5d95cfd58d4d1f8c +Block 0004 [ 16]: 278cf931bd1e902a +Block 0004 [ 17]: 68fa20d22ba2aa27 +Block 0004 [ 18]: 9327a826bc94458f +Block 0004 [ 19]: 2501172b7436fe18 +Block 0004 [ 20]: 6f1c6c6d7179888e +Block 0004 [ 21]: f4446befe7c6ef7b +Block 0004 [ 22]: 84d0a72f5234af5a +Block 0004 [ 23]: 7394bf556f42d372 +Block 0004 [ 24]: acb72c38ced2fce7 +Block 0004 [ 25]: dea10a43040e26b2 +Block 0004 [ 26]: e77f7881689a7e3f +Block 0004 [ 27]: 83113c6790591257 +Block 0004 [ 28]: fe9c162fd48cb7d8 +Block 0004 [ 29]: 98ce1459c8390957 +Block 0004 [ 30]: bd0966102efc0163 +Block 0004 [ 31]: 1dc21f406c8f4ca5 +Block 0004 [ 32]: d8454639a35d8f9e +Block 0004 [ 33]: bf881beb1f767534 +Block 0004 [ 34]: 26288b46058cc1da +Block 0004 [ 35]: 413dd03618a00931 +Block 0004 [ 36]: f075d2081403a45b +Block 0004 [ 37]: 3cc6fea5be9893e4 +Block 0004 [ 38]: 22729e702fee4ce4 +Block 0004 [ 39]: 433011e48bc915db +Block 0004 [ 40]: 7e7d28c42751a323 +Block 0004 [ 41]: c67c60627460056b +Block 0004 [ 42]: 67a62b635341b39f +Block 0004 [ 43]: 0035c747ab878c83 +Block 0004 [ 44]: 4f0159abc209fa70 +Block 0004 [ 45]: 7696bf70050e4504 +Block 0004 [ 46]: 26fc497cdec0484d +Block 0004 [ 47]: 7be5f428ff505ed0 +Block 0004 [ 48]: 8bbe65a740edbbd9 +Block 0004 [ 49]: fd0216c36ed4ec06 +Block 0004 [ 50]: 353980216bb85309 +Block 0004 [ 51]: 5209b3883318741a +Block 0004 [ 52]: e299cd297f7b2f28 +Block 0004 [ 53]: c75e1bc0a94122b5 +Block 0004 [ 54]: 30bd876ace118de3 +Block 0004 [ 55]: c30156b792358312 +Block 0004 [ 56]: b06c27e9ae5a2e89 +Block 0004 [ 57]: 0ed2f057d2a6d8d9 +Block 0004 [ 58]: cbfbec25de3432fb +Block 0004 [ 59]: 32468164b6e0674d +Block 0004 [ 60]: b98ad9729363b082 +Block 0004 [ 61]: e2947ae8ab741abd +Block 0004 [ 62]: 8f3197f4de5f96a3 +Block 0004 [ 63]: 1dbc661b48b411f7 +Block 0004 [ 64]: 3509f4a7e745c326 +Block 0004 [ 65]: cfb820680c8d9be2 +Block 0004 [ 66]: 684ca83f500fda1b +Block 0004 [ 67]: 0de75f8640a01f43 +Block 0004 [ 68]: 325fbc7a5cba9916 +Block 0004 [ 69]: 1d18d81e36e58e94 +Block 0004 [ 70]: e71446e04328bed6 +Block 0004 [ 71]: ebd7f55759aa2912 +Block 0004 [ 72]: f5742bb63f673fef +Block 0004 [ 73]: 59a68c6bbdded65d +Block 0004 [ 74]: 85b002cb9cd71d15 +Block 0004 [ 75]: 0ac41456c7bddad7 +Block 0004 [ 76]: 6ac6ce40c3366d27 +Block 0004 [ 77]: 1a20a174adc1fbfb +Block 0004 [ 78]: 58f79bbc86149583 +Block 0004 [ 79]: 694506e12f0d36f8 +Block 0004 [ 80]: f8f2c809554e5b1a +Block 0004 [ 81]: 53a7dc845be334fe +Block 0004 [ 82]: 4a9131d02ccf2006 +Block 0004 [ 83]: 53a54f39969a27ee +Block 0004 [ 84]: 01cfbabc16bc8017 +Block 0004 [ 85]: 5a8e945f16d66035 +Block 0004 [ 86]: 8bbbe36c9b09a75d +Block 0004 [ 87]: b40e4c1cb50dc463 +Block 0004 [ 88]: a413bb190d1ce779 +Block 0004 [ 89]: dbdd0e71c83dfc68 +Block 0004 [ 90]: 32ba1eb6c9f3f028 +Block 0004 [ 91]: bcc99f21a9599f46 +Block 0004 [ 92]: 574636b0906e2dd3 +Block 0004 [ 93]: df111f20ab6f8e1a +Block 0004 [ 94]: c2d8a911b5f5d9a5 +Block 0004 [ 95]: 72bec94da09ffe7f +Block 0004 [ 96]: 1f14cea9804067db +Block 0004 [ 97]: 9d6c3f1bc1083432 +Block 0004 [ 98]: 73a2aadbe11f1f22 +Block 0004 [ 99]: 296f99c2f5d56e0b +Block 0004 [100]: fe74b6ff494c6fb0 +Block 0004 [101]: 6d2ebdd6ed290d80 +Block 0004 [102]: a3912c85e1036671 +Block 0004 [103]: 896a9c1bba98abdd +Block 0004 [104]: f174ddf24e51901f +Block 0004 [105]: 814150ce82c9a2d5 +Block 0004 [106]: 2d37595c363875f7 +Block 0004 [107]: 619771e8822004e7 +Block 0004 [108]: 935b811317780722 +Block 0004 [109]: c80e5b3e2f6ef79f +Block 0004 [110]: 62d855626bee4e94 +Block 0004 [111]: 8b43e0e640d7047b +Block 0004 [112]: 7c5fce5d045b0f97 +Block 0004 [113]: 2f9fd0f39d32d1d8 +Block 0004 [114]: cbb11bb386457bd2 +Block 0004 [115]: 0585288d1d9c986e +Block 0004 [116]: 613cbb2ffa954b64 +Block 0004 [117]: 6f5afd9be23f168e +Block 0004 [118]: dde300cbf5d3dc44 +Block 0004 [119]: 553b142212a32a0b +Block 0004 [120]: 042c170ebc9db65d +Block 0004 [121]: e551aed0fb8d12bd +Block 0004 [122]: 548a9bb03e34feda +Block 0004 [123]: d0a2064746a8003d +Block 0004 [124]: 8833977b70ec7fa4 +Block 0004 [125]: 192397378ba94c61 +Block 0004 [126]: 6ff2940ba5b14026 +Block 0004 [127]: 1ab6430ee436c0dd +Block 0005 [ 0]: 0de966218271a4ef +Block 0005 [ 1]: a2cfeb2c0d84198d +Block 0005 [ 2]: cfa60d565dfffca1 +Block 0005 [ 3]: 412f4c2588c3cc19 +Block 0005 [ 4]: 2728830ca24bb956 +Block 0005 [ 5]: b49f93ae79d1312f +Block 0005 [ 6]: 7306da5787f5ec0e +Block 0005 [ 7]: 1b8a34fdc9622b8c +Block 0005 [ 8]: e36370b335d7d928 +Block 0005 [ 9]: 49b86dbdccf03005 +Block 0005 [ 10]: 3b28005aa830ac5d +Block 0005 [ 11]: ca9b1344d3837c42 +Block 0005 [ 12]: 45c0c9b592e9b02f +Block 0005 [ 13]: cf0d005546e76fcd +Block 0005 [ 14]: e2def891d0fc245b +Block 0005 [ 15]: e90e1fc95f6596b3 +Block 0005 [ 16]: 0d62ca02afae51d9 +Block 0005 [ 17]: 93fc60ae47aa667c +Block 0005 [ 18]: 3718672a4e69c6d4 +Block 0005 [ 19]: da994e550ec5fdd3 +Block 0005 [ 20]: 80a8774d11086f21 +Block 0005 [ 21]: 57409662528e89c6 +Block 0005 [ 22]: 78558bcff1421a62 +Block 0005 [ 23]: 4ab11538852e391b +Block 0005 [ 24]: 13b25048138916a9 +Block 0005 [ 25]: 6148f40c5a20e12b +Block 0005 [ 26]: 4810c828883bf1df +Block 0005 [ 27]: f5fcb4e0a1a969c3 +Block 0005 [ 28]: a40583814da5f417 +Block 0005 [ 29]: 1cf1c7155698d64b +Block 0005 [ 30]: aa3ad1d538a2d02c +Block 0005 [ 31]: 4de3e769c1a3ad08 +Block 0005 [ 32]: 682669d5d0c75064 +Block 0005 [ 33]: f736e483fc776e37 +Block 0005 [ 34]: baa34ad440f7e5da +Block 0005 [ 35]: 2d3124c6a820d898 +Block 0005 [ 36]: c10dbfe5c258327a +Block 0005 [ 37]: 304c1f87ae94460e +Block 0005 [ 38]: 47a434b76b85d0be +Block 0005 [ 39]: 38e23fe30cc250a9 +Block 0005 [ 40]: d4fea920dc38e276 +Block 0005 [ 41]: 0b7ffb666eefc033 +Block 0005 [ 42]: 70338ebcb4e61d73 +Block 0005 [ 43]: 84bded0682d10c94 +Block 0005 [ 44]: dc5a559cdead2372 +Block 0005 [ 45]: 21c73103fb718573 +Block 0005 [ 46]: f9bbdac6c16e68d0 +Block 0005 [ 47]: b2bd3a0fe844c85f +Block 0005 [ 48]: 2ab10c961a078f5b +Block 0005 [ 49]: 39325e7ee2529990 +Block 0005 [ 50]: 9e6c5c8a54327c97 +Block 0005 [ 51]: 52ad7165f82b5620 +Block 0005 [ 52]: b5cc621f5c656ff2 +Block 0005 [ 53]: 380688bbca3ecd58 +Block 0005 [ 54]: 883889c2ea9d3295 +Block 0005 [ 55]: e079e44a0a62c366 +Block 0005 [ 56]: b8284494c8213bf1 +Block 0005 [ 57]: cdbe7f6c9ba93301 +Block 0005 [ 58]: 2d823bfcc8436620 +Block 0005 [ 59]: 1e158609ca45522a +Block 0005 [ 60]: 407a6f26a9fb16a7 +Block 0005 [ 61]: 218cf687d2746ee7 +Block 0005 [ 62]: 722be79206a7e5ad +Block 0005 [ 63]: 6bdc5a7cda224de3 +Block 0005 [ 64]: d8f66abdb2a506f5 +Block 0005 [ 65]: 2d54821b6d9a1cff +Block 0005 [ 66]: df77e54336ec9c2b +Block 0005 [ 67]: c499fdccf24a0513 +Block 0005 [ 68]: 87c5a41b01c159fe +Block 0005 [ 69]: db244459e270a8ef +Block 0005 [ 70]: 4aee9e7b4763c17a +Block 0005 [ 71]: 8f205d84ac9a1280 +Block 0005 [ 72]: 49197ac6271bbb2e +Block 0005 [ 73]: cdaf49b7a1767e0b +Block 0005 [ 74]: f7cf565d6c117301 +Block 0005 [ 75]: 88346bc563cf09c3 +Block 0005 [ 76]: 6ff639fb39b9d0c3 +Block 0005 [ 77]: e48aba9275f3daa9 +Block 0005 [ 78]: 7541718c0f5c899e +Block 0005 [ 79]: a422f5b2f1400761 +Block 0005 [ 80]: 8d6a5c361a594604 +Block 0005 [ 81]: e50ed69a6300ff68 +Block 0005 [ 82]: d16049e9eb4e38e8 +Block 0005 [ 83]: aa15939e849c1ebd +Block 0005 [ 84]: 059eb7b453f27287 +Block 0005 [ 85]: 45fb8533f5c7c986 +Block 0005 [ 86]: 4c76c301de9ab48c +Block 0005 [ 87]: 90b1a56887fd2c48 +Block 0005 [ 88]: 9fd7813a1508ff41 +Block 0005 [ 89]: 2a326b09fb8c9b9a +Block 0005 [ 90]: efb4350edbcdd5e6 +Block 0005 [ 91]: 7a36dc0b9babdeee +Block 0005 [ 92]: a25fe4ca39355228 +Block 0005 [ 93]: 5303077523d42415 +Block 0005 [ 94]: e026575393d878e2 +Block 0005 [ 95]: 373ce0152a6ee33c +Block 0005 [ 96]: 4f54a4afbcac993d +Block 0005 [ 97]: 36f7cc82d6a97698 +Block 0005 [ 98]: feddd35fdb839178 +Block 0005 [ 99]: a396259146239082 +Block 0005 [100]: cc1856fafbb4f906 +Block 0005 [101]: 85a1cf13ea55a8e6 +Block 0005 [102]: 16625d5ecefd1f48 +Block 0005 [103]: 6787085c993ce90f +Block 0005 [104]: 6d29d9f3d8e7dc82 +Block 0005 [105]: 44a6fbff8f68674c +Block 0005 [106]: ca8e8d86a15d66fe +Block 0005 [107]: 5cdcedee5006de76 +Block 0005 [108]: 2b090088bb3e641d +Block 0005 [109]: 258237f0878ffef1 +Block 0005 [110]: 8196ca4021a3eb70 +Block 0005 [111]: a2b8fe6e9572cff6 +Block 0005 [112]: c6d7aa973cf67d73 +Block 0005 [113]: 819e4db32d3f0c59 +Block 0005 [114]: 649053f6570cc68c +Block 0005 [115]: 3a3d451dc343d91d +Block 0005 [116]: 686e60f8c4207de9 +Block 0005 [117]: 3ee6eb06f251a0b8 +Block 0005 [118]: 32bf0426e100dc27 +Block 0005 [119]: af48b2f87b27c29f +Block 0005 [120]: 9b203f41b8d56660 +Block 0005 [121]: 100656e1838e23a3 +Block 0005 [122]: f3c1c20a03b2b109 +Block 0005 [123]: c14358b21020c956 +Block 0005 [124]: 100d50847f25bac5 +Block 0005 [125]: 6e474ffc741155a5 +Block 0005 [126]: d3837abc5cafb4b4 +Block 0005 [127]: 73413ce42e07707a +Block 0006 [ 0]: 207b10db5cffe8cc +Block 0006 [ 1]: 7313b549d3e7287a +Block 0006 [ 2]: 9a98eb99c3deb891 +Block 0006 [ 3]: 10069e28d0435cbf +Block 0006 [ 4]: e8ca034c80738973 +Block 0006 [ 5]: f1cb47ee4a476ca4 +Block 0006 [ 6]: f98e0d9a7b3678a9 +Block 0006 [ 7]: d87ddc69b89c26e3 +Block 0006 [ 8]: 5fb6984dca5a0935 +Block 0006 [ 9]: a74dc6254fd7a241 +Block 0006 [ 10]: fd190e53b4b1128a +Block 0006 [ 11]: da794330c18a845e +Block 0006 [ 12]: a1172aceb9a39806 +Block 0006 [ 13]: c73e42398788695a +Block 0006 [ 14]: db7ce46bae7ae7f8 +Block 0006 [ 15]: a1ba8bd31fb8f0ee +Block 0006 [ 16]: 74012a4340f94011 +Block 0006 [ 17]: efa47c287cf1a3ad +Block 0006 [ 18]: 6dc566a1c1f9638e +Block 0006 [ 19]: 3613a14178c896da +Block 0006 [ 20]: 0e38b0039e779469 +Block 0006 [ 21]: cf9888dc3ee62faf +Block 0006 [ 22]: 7367cf6b70ec5012 +Block 0006 [ 23]: d2f068c75b9b7789 +Block 0006 [ 24]: eb2a65901b5e03ee +Block 0006 [ 25]: 648b57529bde77bc +Block 0006 [ 26]: 4aff37b8b76729e6 +Block 0006 [ 27]: 609cbf9c2e072b5f +Block 0006 [ 28]: 46e369a4d063dedb +Block 0006 [ 29]: 373eb5b30e919ac0 +Block 0006 [ 30]: aa9243610f11f8b8 +Block 0006 [ 31]: 4fce70d711ae62ba +Block 0006 [ 32]: 564d752fbb623966 +Block 0006 [ 33]: a1f6ba47632f0206 +Block 0006 [ 34]: 62367c5cce6f7e03 +Block 0006 [ 35]: 82de40ea4cae8fc2 +Block 0006 [ 36]: 1309ab5fb6673aba +Block 0006 [ 37]: 4aca55f3f9f4aeb5 +Block 0006 [ 38]: b7b531d28376686a +Block 0006 [ 39]: f26fd9a982569b7b +Block 0006 [ 40]: 5b9ce5ded879f6e2 +Block 0006 [ 41]: 18c59a8d77053b18 +Block 0006 [ 42]: c499ad269fa61497 +Block 0006 [ 43]: 6e8b4060b8c502a8 +Block 0006 [ 44]: 9a8cb6bad14c9d0f +Block 0006 [ 45]: 1e98359f33b83bf7 +Block 0006 [ 46]: 1604438faacfdc2a +Block 0006 [ 47]: bedd53bcdb427d14 +Block 0006 [ 48]: 1dae57588a99d154 +Block 0006 [ 49]: 0fdcb29413b7167b +Block 0006 [ 50]: 23ce479ac77ec8fe +Block 0006 [ 51]: 3057176fbc13ce27 +Block 0006 [ 52]: 9d97168136290f32 +Block 0006 [ 53]: 10e9f9dfb8be79b7 +Block 0006 [ 54]: bf046bc5effedc65 +Block 0006 [ 55]: 1d119988b12ea53a +Block 0006 [ 56]: 62f88ac4a406d5f5 +Block 0006 [ 57]: 36e3dad6d5889c8f +Block 0006 [ 58]: c03ad9fdedb44c1a +Block 0006 [ 59]: 2ca0a0a505d6ad48 +Block 0006 [ 60]: 47b8d37b661e5d02 +Block 0006 [ 61]: d63f3d361ad0e2e8 +Block 0006 [ 62]: 0fec955ea758c8bd +Block 0006 [ 63]: de10b7c48004cb60 +Block 0006 [ 64]: 8e986ea33b73db2f +Block 0006 [ 65]: bb8e714f470452b1 +Block 0006 [ 66]: cdc713d39cd1ab4c +Block 0006 [ 67]: c05a6a8689e023c8 +Block 0006 [ 68]: 120b9b26cfd19db7 +Block 0006 [ 69]: b67ef16cc74f266b +Block 0006 [ 70]: 86cb36ab2f361439 +Block 0006 [ 71]: 29e7c9695a1d2a49 +Block 0006 [ 72]: 83f364c881607b8f +Block 0006 [ 73]: 23f6fa8bd886a772 +Block 0006 [ 74]: bed21643e5e7e5e1 +Block 0006 [ 75]: e2e97a56b51a2859 +Block 0006 [ 76]: 4d393e0b6d1d88bf +Block 0006 [ 77]: 35003e2abf8863ac +Block 0006 [ 78]: 0f488382a32f7c19 +Block 0006 [ 79]: 9ca2d208e38ce69f +Block 0006 [ 80]: 9625b25216944457 +Block 0006 [ 81]: 7e32ef15494d8452 +Block 0006 [ 82]: 4b1054077944dd66 +Block 0006 [ 83]: 1c036bb21867b709 +Block 0006 [ 84]: 303cd1949081adad +Block 0006 [ 85]: a0feb5be65aa2980 +Block 0006 [ 86]: a33c51024a269ba8 +Block 0006 [ 87]: 72035f020c2d5116 +Block 0006 [ 88]: c1b8f4a8bb0d6bef +Block 0006 [ 89]: 0c24bdf244970c9e +Block 0006 [ 90]: 458bdb8d42dff226 +Block 0006 [ 91]: da9ade8459a83877 +Block 0006 [ 92]: c62aa75f3ad8af18 +Block 0006 [ 93]: f3b0115b81a85189 +Block 0006 [ 94]: 4f8d10e3c8fa60bc +Block 0006 [ 95]: a8dc8bb82dd96d89 +Block 0006 [ 96]: ffbd8ca9279e0cab +Block 0006 [ 97]: fca3dc86e42bd209 +Block 0006 [ 98]: ea64792c1ebc8f5f +Block 0006 [ 99]: 3591955004fca6ee +Block 0006 [100]: 0ac25778983c4707 +Block 0006 [101]: 74368e8884bcdfec +Block 0006 [102]: 7151d6032e06d71c +Block 0006 [103]: c5c71b6560554c76 +Block 0006 [104]: de23bf17c2bb8819 +Block 0006 [105]: cfbb7295c3416e6a +Block 0006 [106]: 5df2f35264853653 +Block 0006 [107]: 1975d4925e2750d7 +Block 0006 [108]: 38c55cb4882a2065 +Block 0006 [109]: 9981db2c4bde5e81 +Block 0006 [110]: 7b60c41a8467a595 +Block 0006 [111]: 1f293556774eb26e +Block 0006 [112]: 41a0d1cbb6b9aebe +Block 0006 [113]: 74283de191cbbe30 +Block 0006 [114]: 6b4304c9721b5bed +Block 0006 [115]: e28ef6c6cb719ebb +Block 0006 [116]: 0008cae5ec0089d9 +Block 0006 [117]: ad90327c0ee207de +Block 0006 [118]: 447a5a24fcd4685d +Block 0006 [119]: 7facf44fef9d195e +Block 0006 [120]: 867f839cbc6f4034 +Block 0006 [121]: f06f3f89a4a07ca3 +Block 0006 [122]: 4edf63ff12b9ec51 +Block 0006 [123]: f3b59e506fa26a18 +Block 0006 [124]: d0076e1bcff93428 +Block 0006 [125]: 883962735cdcb10e +Block 0006 [126]: 91a342d726712b8d +Block 0006 [127]: ca9bfa6141a1cd99 +Block 0007 [ 0]: 92639f7eb0201bd1 +Block 0007 [ 1]: bff508c654d0a316 +Block 0007 [ 2]: c9e10ded181c85ba +Block 0007 [ 3]: dd0aa4c62496168a +Block 0007 [ 4]: 53e56c347c3e1748 +Block 0007 [ 5]: a7667ba20750c0ba +Block 0007 [ 6]: a61e71761bd77790 +Block 0007 [ 7]: 71aa5648045f8cc6 +Block 0007 [ 8]: 69c05be9057e6342 +Block 0007 [ 9]: e364571564765b59 +Block 0007 [ 10]: 9238a5a2f5275a39 +Block 0007 [ 11]: 258858e5c66c9c22 +Block 0007 [ 12]: 90001218c66bf46e +Block 0007 [ 13]: 62c859ae59c89890 +Block 0007 [ 14]: be72cd6ac393716e +Block 0007 [ 15]: 3d0e18a8bcfa640a +Block 0007 [ 16]: b375985c889a06fc +Block 0007 [ 17]: 7c13c1a3ac44b123 +Block 0007 [ 18]: 0c1fe0ed44844d8d +Block 0007 [ 19]: 67a5e7752a98dcdf +Block 0007 [ 20]: 1d3b696ebf5de5d1 +Block 0007 [ 21]: 90359e733d5c16c5 +Block 0007 [ 22]: 449f5afedd4f6996 +Block 0007 [ 23]: 97bcc0ff0a526ea9 +Block 0007 [ 24]: 13ed6824d6340099 +Block 0007 [ 25]: 354e5fbc6ca1ee51 +Block 0007 [ 26]: 9adfd16d27171d30 +Block 0007 [ 27]: 7f6316276addaf9c +Block 0007 [ 28]: b101e4b18cec1fa2 +Block 0007 [ 29]: d722bb7c8ddaa4cf +Block 0007 [ 30]: 724909c312c8404b +Block 0007 [ 31]: acf2bc435642575e +Block 0007 [ 32]: a39218a487e82583 +Block 0007 [ 33]: 8d14f885962058a5 +Block 0007 [ 34]: 9851440cfcde2435 +Block 0007 [ 35]: 492f52a3a4a9b67d +Block 0007 [ 36]: 970b91f982d92634 +Block 0007 [ 37]: 8442989dac511e75 +Block 0007 [ 38]: 203380bb904165df +Block 0007 [ 39]: d58a7d10d08d2272 +Block 0007 [ 40]: 79d5c3c7a956e43e +Block 0007 [ 41]: f7a74819963be129 +Block 0007 [ 42]: 061b0ae3c553a728 +Block 0007 [ 43]: a7721db2c9fcebeb +Block 0007 [ 44]: 3b1d4a9bbab3af2a +Block 0007 [ 45]: 811931ac1fa3f917 +Block 0007 [ 46]: acb7322a63fb6bda +Block 0007 [ 47]: 4984832580dd5c34 +Block 0007 [ 48]: 9ad12e5479f0c30c +Block 0007 [ 49]: d9473ecdaea89765 +Block 0007 [ 50]: c8caaf4bdf8f477e +Block 0007 [ 51]: 2fdaab5ff4b494e1 +Block 0007 [ 52]: fdef30421b7a39cd +Block 0007 [ 53]: 967217fa1e92ec59 +Block 0007 [ 54]: 728d382342a4159c +Block 0007 [ 55]: 1be6595bce295dbc +Block 0007 [ 56]: b4c40d238800cfc5 +Block 0007 [ 57]: 607c2d4a27c2b5e4 +Block 0007 [ 58]: 4fc7458f38ac2e19 +Block 0007 [ 59]: 846fea2ac878596d +Block 0007 [ 60]: af34e79d00b74c2a +Block 0007 [ 61]: 3956cc0c34643e42 +Block 0007 [ 62]: ba6d0365319d1bec +Block 0007 [ 63]: 60e4e131ada578d1 +Block 0007 [ 64]: 341af8d301af17ba +Block 0007 [ 65]: 9e9f8e4207a22688 +Block 0007 [ 66]: 9f79b73e65d02b06 +Block 0007 [ 67]: 59301917c3c15263 +Block 0007 [ 68]: 63e34dd709186a30 +Block 0007 [ 69]: ec7fd27fc8dbb1e5 +Block 0007 [ 70]: 440aa98a418a2131 +Block 0007 [ 71]: f9c5ba9031b1d826 +Block 0007 [ 72]: 0f4d36a43c029a63 +Block 0007 [ 73]: 1284d8e357e3bd01 +Block 0007 [ 74]: 3146e0c36173477b +Block 0007 [ 75]: 9c2fcd46d491155d +Block 0007 [ 76]: d25b78f7801545fd +Block 0007 [ 77]: cee8bc67c23b793e +Block 0007 [ 78]: f287bddf96962f7b +Block 0007 [ 79]: 890f655ea4780197 +Block 0007 [ 80]: 4ccdb583e3e68835 +Block 0007 [ 81]: 8e49d38352df80a8 +Block 0007 [ 82]: 9007f0b9b1644498 +Block 0007 [ 83]: 669e52534a22731f +Block 0007 [ 84]: 3ee66d53b92d25db +Block 0007 [ 85]: 3fa32c7f315a0bee +Block 0007 [ 86]: 75b06f3b0a679c4f +Block 0007 [ 87]: ce797b9e220966bf +Block 0007 [ 88]: fc782c6fe2e4bf15 +Block 0007 [ 89]: 508a1982385f1673 +Block 0007 [ 90]: 44713c78ff218860 +Block 0007 [ 91]: 5c57bb791463b88a +Block 0007 [ 92]: b556c28d6fffd834 +Block 0007 [ 93]: 02c839a4bea833dd +Block 0007 [ 94]: 1a6657fa702d17eb +Block 0007 [ 95]: 0aab5f5ea6a8025e +Block 0007 [ 96]: acac9efcbcf36c9c +Block 0007 [ 97]: 8656aec03615c4aa +Block 0007 [ 98]: 6bf56fc498e7d86f +Block 0007 [ 99]: 0dded31589058143 +Block 0007 [100]: bc0a945089635b30 +Block 0007 [101]: 11a4b1441f22f9e7 +Block 0007 [102]: 1e0f1d0b550519fa +Block 0007 [103]: b274b5ad1da912df +Block 0007 [104]: 9ca07448302011e4 +Block 0007 [105]: d9a97724cf0aef36 +Block 0007 [106]: a98a48483cf87837 +Block 0007 [107]: 16fe627774fe37f2 +Block 0007 [108]: 70ae49b3f2cba3de +Block 0007 [109]: c6019a28d8a84f51 +Block 0007 [110]: eeafcdadd890b0de +Block 0007 [111]: 612d51f03688bc5a +Block 0007 [112]: fe6e77f4f6aca6a5 +Block 0007 [113]: ae8b12a53d5578c6 +Block 0007 [114]: 4da5f1027fd097c3 +Block 0007 [115]: 1bdab124d64647aa +Block 0007 [116]: d4826060be069d2a +Block 0007 [117]: 408604168027ec6d +Block 0007 [118]: cd600a0f0e5aeaa4 +Block 0007 [119]: 6fbb6c43c9599aff +Block 0007 [120]: a2333bb2cd3ac800 +Block 0007 [121]: e66d8b6a4c823ae4 +Block 0007 [122]: 8e0606698decd1e7 +Block 0007 [123]: 92641e8250e01937 +Block 0007 [124]: fced8360f3192cb3 +Block 0007 [125]: 336ab5f395df00ad +Block 0007 [126]: 8a9c07658ef7a919 +Block 0007 [127]: 5ec2585c7bfc1859 +Block 0008 [ 0]: d7a32f2a0827cf48 +Block 0008 [ 1]: fe8e9442ca7c4a62 +Block 0008 [ 2]: 1ac3dc6903359815 +Block 0008 [ 3]: 0b8aa4ccce92d934 +Block 0008 [ 4]: 190ec5dd8cdd386e +Block 0008 [ 5]: 71029c05d16f33fe +Block 0008 [ 6]: 40fd5e4026f04da3 +Block 0008 [ 7]: 21ae9adc0a409886 +Block 0008 [ 8]: 3527516b3b50cd47 +Block 0008 [ 9]: fae211122ef4573f +Block 0008 [ 10]: b966633eefce1852 +Block 0008 [ 11]: 60286b42d102da9c +Block 0008 [ 12]: d2e444236395a76d +Block 0008 [ 13]: f3ceb35748329935 +Block 0008 [ 14]: 319a9a0cc9a31169 +Block 0008 [ 15]: 3df93869b18eba70 +Block 0008 [ 16]: c57e131d63fcedbc +Block 0008 [ 17]: 385aa44fdb7ff617 +Block 0008 [ 18]: cf0c30a4cc6101d3 +Block 0008 [ 19]: ed75e4cc5671b6d4 +Block 0008 [ 20]: 620b7dc94ff1745a +Block 0008 [ 21]: c0999aae6e9a6811 +Block 0008 [ 22]: b109ebd952882999 +Block 0008 [ 23]: 08544ca1ac4126c9 +Block 0008 [ 24]: 737cd559fcf13146 +Block 0008 [ 25]: 99381d9f2e261370 +Block 0008 [ 26]: 4d6bc4fbfe2a7172 +Block 0008 [ 27]: dc1979f94ea499e3 +Block 0008 [ 28]: 96067d03816361c7 +Block 0008 [ 29]: c63e0755acec2839 +Block 0008 [ 30]: c1e7c6a51b2d7641 +Block 0008 [ 31]: 08d90379743b61bd +Block 0008 [ 32]: 1c44e7b97c4219de +Block 0008 [ 33]: 857e0800382ca589 +Block 0008 [ 34]: 8433eebf9e376bd4 +Block 0008 [ 35]: 608b1b0186eea6a0 +Block 0008 [ 36]: 353d894da9c34618 +Block 0008 [ 37]: 4639dad690f86eba +Block 0008 [ 38]: f298b2ad3a061766 +Block 0008 [ 39]: d6f200ebb8e1690d +Block 0008 [ 40]: d3f9dd948ade14d4 +Block 0008 [ 41]: 31fdfe49f48b9ab1 +Block 0008 [ 42]: cf4cb128bd5b1eef +Block 0008 [ 43]: b5738119a2e3d243 +Block 0008 [ 44]: ffe9215e317c3db3 +Block 0008 [ 45]: fac8155e1d260771 +Block 0008 [ 46]: 1ca35710531e97f8 +Block 0008 [ 47]: 63980f2b3269a767 +Block 0008 [ 48]: 4a19b88413d2406e +Block 0008 [ 49]: ccb23a68dace3ab4 +Block 0008 [ 50]: db2e6cfd5f51b867 +Block 0008 [ 51]: e581eb27d138b8a4 +Block 0008 [ 52]: f3ba0e830dfa85ea +Block 0008 [ 53]: b19f82a630ccde90 +Block 0008 [ 54]: 7ca6e40cc6ea95cf +Block 0008 [ 55]: 02cc3c74c2ac7018 +Block 0008 [ 56]: 5b75a9db29883cdb +Block 0008 [ 57]: 68fd811e9657d448 +Block 0008 [ 58]: d0c70b19b4dc4445 +Block 0008 [ 59]: 337a8e2f147a9ac4 +Block 0008 [ 60]: 48ec26c7bcb09b5d +Block 0008 [ 61]: 7ee3b7f669944a69 +Block 0008 [ 62]: 85cbafaaabc1b7c0 +Block 0008 [ 63]: d378282d6a4fb14b +Block 0008 [ 64]: b5c4a859f972ba41 +Block 0008 [ 65]: 32f0e6bf92d52494 +Block 0008 [ 66]: 07a59fe5a1dcbefb +Block 0008 [ 67]: 65b8f375d97a8db7 +Block 0008 [ 68]: 094215233f0b5f31 +Block 0008 [ 69]: d4b8d0f377e48fb9 +Block 0008 [ 70]: 4d78725fbff27412 +Block 0008 [ 71]: 82b5f15be44fee37 +Block 0008 [ 72]: 6f08db1d8df4f3cf +Block 0008 [ 73]: faf6cede70806639 +Block 0008 [ 74]: ea2eba07c4477062 +Block 0008 [ 75]: 3482d24b81175403 +Block 0008 [ 76]: da24ea0a67f78c64 +Block 0008 [ 77]: 65e8b030ef344807 +Block 0008 [ 78]: 6c1c6aa7ee9efa9f +Block 0008 [ 79]: 5000bebc24e9ef81 +Block 0008 [ 80]: a6c7736f0d6b9957 +Block 0008 [ 81]: 7707cc16f7366011 +Block 0008 [ 82]: 10929dbf80c11f98 +Block 0008 [ 83]: 2c7d3a22de876b27 +Block 0008 [ 84]: 80fba4b809012410 +Block 0008 [ 85]: 056466ea9c0247b5 +Block 0008 [ 86]: 36956578b3fddd5f +Block 0008 [ 87]: 4e5743b85aa96859 +Block 0008 [ 88]: be09680812e0851e +Block 0008 [ 89]: 1e5bec4834ac4753 +Block 0008 [ 90]: d0f9372e3f60a200 +Block 0008 [ 91]: 5ab4bcef8bb03df9 +Block 0008 [ 92]: e2aea9de802983af +Block 0008 [ 93]: ffb26f08985e0ef1 +Block 0008 [ 94]: bb27500db2718bd8 +Block 0008 [ 95]: b45c0e6aaa63c7a5 +Block 0008 [ 96]: aa8b69bb102e1432 +Block 0008 [ 97]: 67f4724f3fe700e9 +Block 0008 [ 98]: b1fa8f95fa91138c +Block 0008 [ 99]: 74dcfc6303efd795 +Block 0008 [100]: 697820b63ee7881b +Block 0008 [101]: f1d5749128d4d216 +Block 0008 [102]: ca5eb06b4b2187ec +Block 0008 [103]: 6d4799a6e896b61c +Block 0008 [104]: 843d5dc3b6fbd6ef +Block 0008 [105]: e361b3c450ecbe54 +Block 0008 [106]: 3f2a65193e245e32 +Block 0008 [107]: ae54b6aaa09ce1c1 +Block 0008 [108]: 70a4df8bbfa5261c +Block 0008 [109]: 5df00fda80ad67f3 +Block 0008 [110]: 3ac1c4e9fb82980c +Block 0008 [111]: ea1f0237d8bd0dad +Block 0008 [112]: adafe0783378514b +Block 0008 [113]: efb23364e431ea53 +Block 0008 [114]: c884c5872ee09321 +Block 0008 [115]: 068919a5229618d7 +Block 0008 [116]: 7139accfe2fd404f +Block 0008 [117]: a2547790240851ef +Block 0008 [118]: 95eb676d47ba8dda +Block 0008 [119]: 4b9972623559149a +Block 0008 [120]: 57ff7b71148c3c54 +Block 0008 [121]: 8ffa691b244d70d4 +Block 0008 [122]: 09f8ffb1e6a08534 +Block 0008 [123]: 70a88fcae9d3ee9d +Block 0008 [124]: adcc44492f34a7fd +Block 0008 [125]: 62b1621dd05211f6 +Block 0008 [126]: 7c8764d0b5fba3a1 +Block 0008 [127]: d3ea7a45dd01bd53 +Block 0009 [ 0]: d08bd259d340d3c6 +Block 0009 [ 1]: 429557aed2016d51 +Block 0009 [ 2]: 77d12b978a1e2319 +Block 0009 [ 3]: c31ca96bc3b42584 +Block 0009 [ 4]: 962c4d3cc4a5e623 +Block 0009 [ 5]: 232c507b19dcc018 +Block 0009 [ 6]: e674558b67e49478 +Block 0009 [ 7]: 0c738b0c0e08dc01 +Block 0009 [ 8]: a3a4cea8b57f348e +Block 0009 [ 9]: 0b0bcc420dc8797d +Block 0009 [ 10]: 08de0203f13d7df6 +Block 0009 [ 11]: 59a6c3129e0ca977 +Block 0009 [ 12]: 313d1fe2cf306fff +Block 0009 [ 13]: 22aa2ef78c7bd925 +Block 0009 [ 14]: 509e5b5e3f9caa3d +Block 0009 [ 15]: d35f6e1bad7c86c0 +Block 0009 [ 16]: b8d48c2439aa2a25 +Block 0009 [ 17]: 2903a4a01fbf6f28 +Block 0009 [ 18]: 9837daa60b4a5d60 +Block 0009 [ 19]: e73aa62e324f8def +Block 0009 [ 20]: 7a8dedaef7c8081d +Block 0009 [ 21]: 8883f66b856f9b32 +Block 0009 [ 22]: bfc326c218d22ba8 +Block 0009 [ 23]: b8caa2dd6e3571fe +Block 0009 [ 24]: 65a52b4fca1522ce +Block 0009 [ 25]: 25cbc74d57b444df +Block 0009 [ 26]: 26fdc5d7ddf5b9e7 +Block 0009 [ 27]: 88228a1eeffe1815 +Block 0009 [ 28]: 8c45034ca552fcaf +Block 0009 [ 29]: 18e4642b4e82d914 +Block 0009 [ 30]: 4ff981f2eaf571b5 +Block 0009 [ 31]: 6e157fb736d60562 +Block 0009 [ 32]: 2b10660f514d312b +Block 0009 [ 33]: 22bf3a2837801aff +Block 0009 [ 34]: 61eafbb9e3b6fca0 +Block 0009 [ 35]: 823bd01b1aecd107 +Block 0009 [ 36]: b2a19bdfe12307ab +Block 0009 [ 37]: 8927f7176f855d06 +Block 0009 [ 38]: d4aef8e75777bdf1 +Block 0009 [ 39]: 206d9dccb1b939c8 +Block 0009 [ 40]: ac91b41fba63216e +Block 0009 [ 41]: b5b84fbdd569bfec +Block 0009 [ 42]: 146e312d7f6172c6 +Block 0009 [ 43]: de088fc95a4d0346 +Block 0009 [ 44]: b3c6e981c37559cb +Block 0009 [ 45]: 1001b9616071239d +Block 0009 [ 46]: 6bea9f89abb17a30 +Block 0009 [ 47]: 4a5a14d2853f60da +Block 0009 [ 48]: 41f418210e2573df +Block 0009 [ 49]: 5e39b91f69b7c397 +Block 0009 [ 50]: b521aaa82df655fc +Block 0009 [ 51]: 2f64b711ee0fc787 +Block 0009 [ 52]: d221cf816168ba5e +Block 0009 [ 53]: a39af1e90a530697 +Block 0009 [ 54]: aee2d02a683e92c2 +Block 0009 [ 55]: b5daa3e78190eec5 +Block 0009 [ 56]: cafd3d830ab10c85 +Block 0009 [ 57]: dbd796641fce27f9 +Block 0009 [ 58]: d24bfc0d8a99ab4b +Block 0009 [ 59]: 830bdc94684153de +Block 0009 [ 60]: 5b78fd0467e15764 +Block 0009 [ 61]: 55137012f62f906d +Block 0009 [ 62]: 866455113a07ed78 +Block 0009 [ 63]: 2191af3b847267ea +Block 0009 [ 64]: e5ebaa3dade7a97d +Block 0009 [ 65]: 5d8fb9aecb948a7f +Block 0009 [ 66]: 427619aedba4c182 +Block 0009 [ 67]: fb24b376bee4df10 +Block 0009 [ 68]: 95135cf1d29f80e2 +Block 0009 [ 69]: 2c51e533bdede03c +Block 0009 [ 70]: 52893b83af5480a4 +Block 0009 [ 71]: 1e0e0da7ac8c89d8 +Block 0009 [ 72]: f7c523e21b168bad +Block 0009 [ 73]: ea4e481e5969e7a9 +Block 0009 [ 74]: 39237fe8a127f2ea +Block 0009 [ 75]: 9c6d958103b2d551 +Block 0009 [ 76]: 75e38e8091abc932 +Block 0009 [ 77]: 3ddc63b07a1be378 +Block 0009 [ 78]: f11233b5add5cdff +Block 0009 [ 79]: 864ffb38776d09a1 +Block 0009 [ 80]: b6c93a2056ee2423 +Block 0009 [ 81]: f3b5e151ea4b7cf7 +Block 0009 [ 82]: bda60b0a42c98afc +Block 0009 [ 83]: 206c01f4b12908a5 +Block 0009 [ 84]: f9def6d5ac997ba6 +Block 0009 [ 85]: 01b680f90d692a0b +Block 0009 [ 86]: c4a90cb124152693 +Block 0009 [ 87]: 14d55e7fa42e375b +Block 0009 [ 88]: 2b8018bd80552d61 +Block 0009 [ 89]: 8eddde6c73a88c9d +Block 0009 [ 90]: 30c144a558c0e6c6 +Block 0009 [ 91]: 4f6c61db03719125 +Block 0009 [ 92]: 6771f4cdf1120f56 +Block 0009 [ 93]: a4a063679ad7d497 +Block 0009 [ 94]: 75aa05ef51f93d80 +Block 0009 [ 95]: 325c97906db37c77 +Block 0009 [ 96]: f09a14aa1fb090e1 +Block 0009 [ 97]: fa726606823f5fad +Block 0009 [ 98]: f8eb5b5c0703b09b +Block 0009 [ 99]: 228067ce5a3320ba +Block 0009 [100]: 1e74f435eb43fb9a +Block 0009 [101]: 004d5f043957d65a +Block 0009 [102]: 20dcf6bc285d9d0d +Block 0009 [103]: 848a0e38582a8944 +Block 0009 [104]: 3c1c49835ec69491 +Block 0009 [105]: 20063d3af3417cdc +Block 0009 [106]: 87dc824cb5c06c12 +Block 0009 [107]: 6525776d6502bb13 +Block 0009 [108]: 2e026670ca887659 +Block 0009 [109]: bd8efc8d29eb72af +Block 0009 [110]: 74991100959b9f7a +Block 0009 [111]: a5a2288c26fee2bb +Block 0009 [112]: 7283dd8ffcb0940d +Block 0009 [113]: 16a092fca662c662 +Block 0009 [114]: 5ed480134578c559 +Block 0009 [115]: 2663252693a54b82 +Block 0009 [116]: 95cf4c81e9f4ab71 +Block 0009 [117]: 4ab2f95d78af71da +Block 0009 [118]: 66eec9677f23b9f3 +Block 0009 [119]: 87ed8660f5c913c0 +Block 0009 [120]: fc892530429a248a +Block 0009 [121]: 03589e9cea760810 +Block 0009 [122]: 5b399da3f98c3128 +Block 0009 [123]: 26dcf9d52c2b9e31 +Block 0009 [124]: 5424678fc32d6683 +Block 0009 [125]: dc1009703fe5413b +Block 0009 [126]: 03ce3ad9c886da37 +Block 0009 [127]: f1a4cfd3a16361cf +Block 0010 [ 0]: f7102b7819862507 +Block 0010 [ 1]: df56220925ba6a2f +Block 0010 [ 2]: f51393014936014f +Block 0010 [ 3]: 15625042d501fdb0 +Block 0010 [ 4]: b21e29b86660cac3 +Block 0010 [ 5]: d29185b644e83366 +Block 0010 [ 6]: fa2820732246e503 +Block 0010 [ 7]: 7010a476d2a6d4d5 +Block 0010 [ 8]: ce54fa5cfee22a4a +Block 0010 [ 9]: f1ee891589e25001 +Block 0010 [ 10]: e25da33d7e215be9 +Block 0010 [ 11]: 384f8897822a8f92 +Block 0010 [ 12]: 65ee848c4bf3d662 +Block 0010 [ 13]: a945e8a041ebf8ff +Block 0010 [ 14]: fbcdf5feb172a921 +Block 0010 [ 15]: edd4b6fc18863cfa +Block 0010 [ 16]: 3ea4af86b1b8bcf1 +Block 0010 [ 17]: 5090e9061cdffe2b +Block 0010 [ 18]: 4ed2f171a8d3dc71 +Block 0010 [ 19]: 1d34acc8a37014b0 +Block 0010 [ 20]: 435fde3f03d94963 +Block 0010 [ 21]: ef7e011a248d9ab4 +Block 0010 [ 22]: b2713d0d04158674 +Block 0010 [ 23]: 34eda70ee54044aa +Block 0010 [ 24]: c17ffee696268e67 +Block 0010 [ 25]: bcf94972d44ac6aa +Block 0010 [ 26]: 62d4b2a710f28bc4 +Block 0010 [ 27]: cd3e1061b949f164 +Block 0010 [ 28]: 66bb3435151cb7c0 +Block 0010 [ 29]: 04927566e052dc70 +Block 0010 [ 30]: c6098d954b703238 +Block 0010 [ 31]: 6b38cac5f7e384fd +Block 0010 [ 32]: ad827462ecc594a1 +Block 0010 [ 33]: dc7dffd943b711d8 +Block 0010 [ 34]: 48acb309728fc0f3 +Block 0010 [ 35]: 23990349a973f2bd +Block 0010 [ 36]: 9858087a1350d908 +Block 0010 [ 37]: 830e4c7c0d3063ff +Block 0010 [ 38]: 353c20afdd0ce145 +Block 0010 [ 39]: 477c80401d92b4bb +Block 0010 [ 40]: 223aaa363c3131bc +Block 0010 [ 41]: 92bf771465be2dc7 +Block 0010 [ 42]: 4962650f4ca85833 +Block 0010 [ 43]: 9ff477d2bc5a5b4f +Block 0010 [ 44]: cedea84b3e0ae182 +Block 0010 [ 45]: 9bbb316a0430e7af +Block 0010 [ 46]: de5b2d55ef08bc41 +Block 0010 [ 47]: 4a68404c3af4cc55 +Block 0010 [ 48]: 322aa531e0e70d38 +Block 0010 [ 49]: d732a5c235c785f2 +Block 0010 [ 50]: d194b97d72dc3a39 +Block 0010 [ 51]: 6dbc081f1151718d +Block 0010 [ 52]: 82a2d3af9f897794 +Block 0010 [ 53]: 43d7a43718dc4bd2 +Block 0010 [ 54]: db61a4b356a2743a +Block 0010 [ 55]: 9ab6f0349b657e9f +Block 0010 [ 56]: 2c6065c9334fd4db +Block 0010 [ 57]: 5e2704a1d1060351 +Block 0010 [ 58]: 582a4a05cedddd44 +Block 0010 [ 59]: b958a045ff37830f +Block 0010 [ 60]: a34c2c509ac32f79 +Block 0010 [ 61]: 02ef34ca4730d0fa +Block 0010 [ 62]: 239172f43950d8fd +Block 0010 [ 63]: b79d7a305227b957 +Block 0010 [ 64]: ce660699f2567824 +Block 0010 [ 65]: 2226ac90308bc88b +Block 0010 [ 66]: 74afc00999644831 +Block 0010 [ 67]: 3b0ee6ea37495e91 +Block 0010 [ 68]: 6d04170b6116e08e +Block 0010 [ 69]: 57a1fffb9171a6c5 +Block 0010 [ 70]: 8e042dce88bf04e5 +Block 0010 [ 71]: a1f101a34208d1ff +Block 0010 [ 72]: 77be77d55ba39cf1 +Block 0010 [ 73]: f2f5463a10c77c0a +Block 0010 [ 74]: 54f36a5d93ebf9e0 +Block 0010 [ 75]: 1c270347feab23c3 +Block 0010 [ 76]: 4a4f45c009372f5f +Block 0010 [ 77]: 210b3203bd710469 +Block 0010 [ 78]: 0e3b847d4b92d146 +Block 0010 [ 79]: b3f0c7a18d6da095 +Block 0010 [ 80]: 53d3d14e7bc0cc98 +Block 0010 [ 81]: 3b8a954fce979752 +Block 0010 [ 82]: 8571c0ff14544b35 +Block 0010 [ 83]: cf52cb49f383d078 +Block 0010 [ 84]: 34b9a8d088b46a7d +Block 0010 [ 85]: 0c02556204f91c44 +Block 0010 [ 86]: 4ff85a111866656c +Block 0010 [ 87]: e8b7f0a60d9d78b0 +Block 0010 [ 88]: 7d50a0180d5ab40e +Block 0010 [ 89]: 5f26a2da9d155f4a +Block 0010 [ 90]: cb8e7b8dccbb09e2 +Block 0010 [ 91]: 548c3d903b2c3721 +Block 0010 [ 92]: dbed09ba9901f9af +Block 0010 [ 93]: 8f3bd6baed72f42f +Block 0010 [ 94]: c0523988601177b1 +Block 0010 [ 95]: 9479077ded200101 +Block 0010 [ 96]: 22bb9c0414c5311d +Block 0010 [ 97]: 0aa62726ef5006b1 +Block 0010 [ 98]: 65725877f28d41c0 +Block 0010 [ 99]: 1bf3fbbf62dc434f +Block 0010 [100]: 8d24325a2de1c34c +Block 0010 [101]: ad1ebc03915d3632 +Block 0010 [102]: a80744af224bc6e5 +Block 0010 [103]: a42f36ce1b331fa7 +Block 0010 [104]: 7f5b84c2264dde29 +Block 0010 [105]: 9d68aa35b0346155 +Block 0010 [106]: 106ec871bc9af474 +Block 0010 [107]: 0f30036315e3358f +Block 0010 [108]: ea0e307ee2de4cc0 +Block 0010 [109]: b8c78ff0b390416c +Block 0010 [110]: cb061486cafe634b +Block 0010 [111]: 1f65dc0a96c2df8c +Block 0010 [112]: 63509f1498fc4195 +Block 0010 [113]: 7958c9554127aa5d +Block 0010 [114]: aea53f20e9ae91f8 +Block 0010 [115]: d96a52977e99cfa9 +Block 0010 [116]: 9dd0669bf8bb9e4c +Block 0010 [117]: 17335cfb0b4a101b +Block 0010 [118]: ac83e8c088b3faa2 +Block 0010 [119]: e2d00f77ebdcb5d5 +Block 0010 [120]: 8953e063a53473cb +Block 0010 [121]: 0bf9340b692adf71 +Block 0010 [122]: 18e1d770623f5000 +Block 0010 [123]: b7f46f05950588e5 +Block 0010 [124]: bf82a3830897c743 +Block 0010 [125]: 45388ba792780880 +Block 0010 [126]: f298b7d1db9beaed +Block 0010 [127]: 80d82aaf83329f45 +Block 0011 [ 0]: 52b29e21da352337 +Block 0011 [ 1]: 2f0c85e24b2bb285 +Block 0011 [ 2]: 8bf5ede2af27b80b +Block 0011 [ 3]: d1d7798e3b7628b5 +Block 0011 [ 4]: 763577566ec4d2fb +Block 0011 [ 5]: 3e99eae6b9383da2 +Block 0011 [ 6]: 221dec4413c09f83 +Block 0011 [ 7]: f904d4d3e4bc9689 +Block 0011 [ 8]: 8f21dcec402bf89f +Block 0011 [ 9]: 68de13304dae5f9c +Block 0011 [ 10]: c464d43bf7ffb197 +Block 0011 [ 11]: 20d3b21625176b70 +Block 0011 [ 12]: e07b11307fa74f2e +Block 0011 [ 13]: 2a9fa72207dde048 +Block 0011 [ 14]: de300c37b9d59c53 +Block 0011 [ 15]: 8ed2a9fec9001675 +Block 0011 [ 16]: a411fa308bfb9948 +Block 0011 [ 17]: 01ae829642ff7219 +Block 0011 [ 18]: 5921b35dbafc1448 +Block 0011 [ 19]: cd2799228fd0dc30 +Block 0011 [ 20]: 00230c328bf3ef57 +Block 0011 [ 21]: d5a491d6021ae832 +Block 0011 [ 22]: c82ec6c1daaa93be +Block 0011 [ 23]: 40463c0836a29bd1 +Block 0011 [ 24]: 634d1419bbf24614 +Block 0011 [ 25]: 4a76864de4c728d4 +Block 0011 [ 26]: ccd8b6c9e22139c8 +Block 0011 [ 27]: b5e12193d76044c9 +Block 0011 [ 28]: 6d419f9ca6b2da18 +Block 0011 [ 29]: 631a3d2466f751c7 +Block 0011 [ 30]: eee3161ed510c1bc +Block 0011 [ 31]: 5c205b1ec867db89 +Block 0011 [ 32]: 57847ca52d6d1ca8 +Block 0011 [ 33]: a29a80eae282a2f9 +Block 0011 [ 34]: f75a6d57836ce3e3 +Block 0011 [ 35]: 46c644fe81a06770 +Block 0011 [ 36]: 89f77255596c64e7 +Block 0011 [ 37]: 557c8a199b0f3e57 +Block 0011 [ 38]: eece7fb87c820f63 +Block 0011 [ 39]: e9933bd1bfcb2efa +Block 0011 [ 40]: bc50e18635f727bb +Block 0011 [ 41]: d9abdabbba515124 +Block 0011 [ 42]: 3cf140d714fa3ab9 +Block 0011 [ 43]: 68b66ca1c4946d68 +Block 0011 [ 44]: 2cbe90f574d0aa6c +Block 0011 [ 45]: 942b66c749d50e3d +Block 0011 [ 46]: 14fe3b269ae7f924 +Block 0011 [ 47]: c34e24597c89e72d +Block 0011 [ 48]: 7db2d50634769bfc +Block 0011 [ 49]: 26b7f4115e5fa3e6 +Block 0011 [ 50]: 5c8811c8bb1f8518 +Block 0011 [ 51]: 5ccbd037664bbe60 +Block 0011 [ 52]: ae1a273e7682b4a7 +Block 0011 [ 53]: 992756342215636f +Block 0011 [ 54]: 41dd622f491d72ec +Block 0011 [ 55]: 157f7c4d6fa92e6b +Block 0011 [ 56]: 57f7c8e41f0843d8 +Block 0011 [ 57]: 06f4a658f7020d2f +Block 0011 [ 58]: b1900511e44d09ae +Block 0011 [ 59]: 2c636b5655bdca66 +Block 0011 [ 60]: f0cd0d2759b2a414 +Block 0011 [ 61]: aaa255272e910ba1 +Block 0011 [ 62]: f6cdfda91907a87b +Block 0011 [ 63]: 4daff4894e8c371c +Block 0011 [ 64]: 4b3fc1ed98b5c960 +Block 0011 [ 65]: 45aff93643e9bed6 +Block 0011 [ 66]: e57396cddcb85de0 +Block 0011 [ 67]: 453f06ae61b1ae84 +Block 0011 [ 68]: 92abd804af471c8c +Block 0011 [ 69]: de3db2263d007ea9 +Block 0011 [ 70]: 1cf00b12f02d302c +Block 0011 [ 71]: 4c98f282e6ed2ff4 +Block 0011 [ 72]: 7013d0175b3e1ade +Block 0011 [ 73]: 7d901f769d0fd762 +Block 0011 [ 74]: 554be32102a647ed +Block 0011 [ 75]: f027c617e3d22010 +Block 0011 [ 76]: 6e82b9c24aa56fea +Block 0011 [ 77]: dae2d2bbf585d44a +Block 0011 [ 78]: 8670017c6f7d7c45 +Block 0011 [ 79]: 95f5b9cc9521bf43 +Block 0011 [ 80]: 377311361d5e899f +Block 0011 [ 81]: c94963d5ff411540 +Block 0011 [ 82]: fd0a1ed433ef0547 +Block 0011 [ 83]: 0f52b42c428ecfa8 +Block 0011 [ 84]: 3da24c53fd340e11 +Block 0011 [ 85]: bc740a59bf3b9d91 +Block 0011 [ 86]: 47f7f84d80da6885 +Block 0011 [ 87]: cc33ce5dda2b18cd +Block 0011 [ 88]: a1079f9f43146d8d +Block 0011 [ 89]: 347b41316856a399 +Block 0011 [ 90]: de2a70e8fe948431 +Block 0011 [ 91]: 18f7a1e23950188c +Block 0011 [ 92]: e894053df2fb27d0 +Block 0011 [ 93]: 0bf2d7f61afac33a +Block 0011 [ 94]: f032f17390e9b43f +Block 0011 [ 95]: 76c2d93bdc87a6b2 +Block 0011 [ 96]: 5f94f381efd95cf0 +Block 0011 [ 97]: 780711e49c97fbf0 +Block 0011 [ 98]: ac9c82eade6bdeee +Block 0011 [ 99]: 5f55749397478696 +Block 0011 [100]: b6b8ee8ff05567af +Block 0011 [101]: 6215630fc4c7cd17 +Block 0011 [102]: c558c8971ccea93d +Block 0011 [103]: 55ba80c1a0b927b5 +Block 0011 [104]: f570ae43f549994c +Block 0011 [105]: 959ef14d47a74adf +Block 0011 [106]: 4ad49eefa6970106 +Block 0011 [107]: 32cd02e6655349bf +Block 0011 [108]: 3097c4d675de4902 +Block 0011 [109]: e1fdfd6688d3737f +Block 0011 [110]: 652ebc315836722f +Block 0011 [111]: 40f5ebd42d545915 +Block 0011 [112]: fbff4103ef433bc3 +Block 0011 [113]: 74d1748ea3a5bcd8 +Block 0011 [114]: 040978aca26fc2dd +Block 0011 [115]: 3650e07dce35b076 +Block 0011 [116]: 79100977dfc30b24 +Block 0011 [117]: ecc54d3e4c8bd3a6 +Block 0011 [118]: fe9a8fa9060ac214 +Block 0011 [119]: 850e726eeec182b6 +Block 0011 [120]: a21893e9f7760054 +Block 0011 [121]: bcb7f6992bd1051e +Block 0011 [122]: 69cc6743de97b4fc +Block 0011 [123]: 78a246a84319d5bc +Block 0011 [124]: 6719991920301152 +Block 0011 [125]: 62d3c940b1c82c4d +Block 0011 [126]: b8d54eaa8eefc9f1 +Block 0011 [127]: ef7cbc469902080a +Block 0012 [ 0]: b41d6643cd2d35e7 +Block 0012 [ 1]: 451993e7a1f452c9 +Block 0012 [ 2]: 19281a7c2c187a74 +Block 0012 [ 3]: f131ed721856f22c +Block 0012 [ 4]: f5aa54c24851e293 +Block 0012 [ 5]: 6daf0679c90cc7de +Block 0012 [ 6]: 6485b2c039fa9d7d +Block 0012 [ 7]: c6c2d967bf31e9aa +Block 0012 [ 8]: 6a373dfeb854197f +Block 0012 [ 9]: e721c34905b59088 +Block 0012 [ 10]: 177fe1b6c1bba1f4 +Block 0012 [ 11]: bdedea02f28e67ae +Block 0012 [ 12]: d96cf43dbb140033 +Block 0012 [ 13]: bc90d7ece2f06f22 +Block 0012 [ 14]: b1b149dbf7aafbf9 +Block 0012 [ 15]: 543a2bc21a6ef1c7 +Block 0012 [ 16]: c6adf0b95602151b +Block 0012 [ 17]: 1fa634a5014e68e0 +Block 0012 [ 18]: 156388d5b2cc39a4 +Block 0012 [ 19]: 3fa5584b8347398b +Block 0012 [ 20]: b80171c006813e45 +Block 0012 [ 21]: 93484f2494cb26a2 +Block 0012 [ 22]: d2a44226231d38b4 +Block 0012 [ 23]: 455dce0f0897d143 +Block 0012 [ 24]: 42a964a2f8b736a5 +Block 0012 [ 25]: 7b689eaed9d611cc +Block 0012 [ 26]: 748fac9d29981ff4 +Block 0012 [ 27]: 872a2f30efd85b27 +Block 0012 [ 28]: cc407811a5c3f5a3 +Block 0012 [ 29]: 5c901be277ec8973 +Block 0012 [ 30]: 1c2dd0eb9e25b060 +Block 0012 [ 31]: 57a92565827a07e5 +Block 0012 [ 32]: 1d1700d8734c11ec +Block 0012 [ 33]: 1edccd23555de63b +Block 0012 [ 34]: 10d90e9483ffdc52 +Block 0012 [ 35]: 9659c355ed944511 +Block 0012 [ 36]: df47ea500fa0a91f +Block 0012 [ 37]: c8eec40887899cb3 +Block 0012 [ 38]: 5afbb3990d6eb059 +Block 0012 [ 39]: c70615e230e7c4f6 +Block 0012 [ 40]: b7bafcae05874a33 +Block 0012 [ 41]: fa5d359d3482072a +Block 0012 [ 42]: 25106f2afcad8db9 +Block 0012 [ 43]: 1b5a77262e0c9ba6 +Block 0012 [ 44]: 5be08c2e2a919eae +Block 0012 [ 45]: 44bdb7ca0710d72e +Block 0012 [ 46]: 397cb3144bacf2ab +Block 0012 [ 47]: 511b264d429427f7 +Block 0012 [ 48]: aea9bc9f1b764af3 +Block 0012 [ 49]: 8d4a43506453f1d4 +Block 0012 [ 50]: 9806a89a986b115f +Block 0012 [ 51]: 0459b1632e869a12 +Block 0012 [ 52]: 4523dd7dd5485183 +Block 0012 [ 53]: f9c89833fdbda2ee +Block 0012 [ 54]: b89588ce4d5ba944 +Block 0012 [ 55]: afafcb5633f00c84 +Block 0012 [ 56]: 3677b05a67fa39bf +Block 0012 [ 57]: eafbe7bb4e4b8646 +Block 0012 [ 58]: 909a0b6387f8e49f +Block 0012 [ 59]: 6e858a5ea6670358 +Block 0012 [ 60]: 96915161672d880c +Block 0012 [ 61]: c179a9e40d93249a +Block 0012 [ 62]: e90403400d9b3166 +Block 0012 [ 63]: 1752659b1bae5d9f +Block 0012 [ 64]: 6fd39575db6a44e8 +Block 0012 [ 65]: 013de9bf0dbbdd11 +Block 0012 [ 66]: 73463d2189ada915 +Block 0012 [ 67]: 630fc52f88cb47b3 +Block 0012 [ 68]: ca4773724596e785 +Block 0012 [ 69]: cb5c2febf665f7b7 +Block 0012 [ 70]: 4e93e7dd9addea58 +Block 0012 [ 71]: 743c251ec9a34932 +Block 0012 [ 72]: 2056026bdde0ddaf +Block 0012 [ 73]: 8a2be10548d1b30b +Block 0012 [ 74]: a288353ffe05df65 +Block 0012 [ 75]: 5249529f94c8b330 +Block 0012 [ 76]: b4550cbf29ecdc90 +Block 0012 [ 77]: 962d8f1e68ef1beb +Block 0012 [ 78]: 84f687b4f6d8bb6e +Block 0012 [ 79]: 7444c30f326decca +Block 0012 [ 80]: 6fd686446a43aef2 +Block 0012 [ 81]: de5c7a070b961f9b +Block 0012 [ 82]: 21b25a9cd4f19753 +Block 0012 [ 83]: 88775ad5cdd7ea52 +Block 0012 [ 84]: aed154cdf4b74243 +Block 0012 [ 85]: 4ae9f92e0709773d +Block 0012 [ 86]: 107ff1bb7b349ad5 +Block 0012 [ 87]: aadc86f968bd0dcf +Block 0012 [ 88]: b4fed81d3a24dea6 +Block 0012 [ 89]: f2294093f5adcd7f +Block 0012 [ 90]: 7bb112a949891139 +Block 0012 [ 91]: dd9cd22cca3d4b50 +Block 0012 [ 92]: d3189d2bb0251c29 +Block 0012 [ 93]: 9d4ef66818294568 +Block 0012 [ 94]: fd6dbeeda6d42b41 +Block 0012 [ 95]: 34beb6e1fa79d1ff +Block 0012 [ 96]: 611fcfb5ea500a95 +Block 0012 [ 97]: 95c907722fb52e7e +Block 0012 [ 98]: ff44d6d256799080 +Block 0012 [ 99]: a0bed9defcd56afb +Block 0012 [100]: b580d489e3f02e54 +Block 0012 [101]: 72c5370840bf7f9b +Block 0012 [102]: 43441a6eab55953f +Block 0012 [103]: 945f22a7f40bb828 +Block 0012 [104]: dc99449d78dc5f4d +Block 0012 [105]: c7258afc1d62d9f3 +Block 0012 [106]: 53502b7babad94d8 +Block 0012 [107]: e44bb55a7247d194 +Block 0012 [108]: 703624923d1c44ac +Block 0012 [109]: de3b62036f77a962 +Block 0012 [110]: fdace61fd734e777 +Block 0012 [111]: e31fb59abb89ff5e +Block 0012 [112]: e0a50c2aa645a460 +Block 0012 [113]: 364d99f0e8cfaf47 +Block 0012 [114]: 0a3ceb5e14ae97fd +Block 0012 [115]: 068cf774cccf0b87 +Block 0012 [116]: 9078bf33cc1ea4cf +Block 0012 [117]: 102bdc8556c4aadc +Block 0012 [118]: 3d8218690d0a2275 +Block 0012 [119]: 02f8bb9d9554011e +Block 0012 [120]: b89e8162dfdc469e +Block 0012 [121]: e44a945e2c65f5d0 +Block 0012 [122]: af1e6328c8235052 +Block 0012 [123]: 1e841c1f63dea326 +Block 0012 [124]: 2db7659be0b50d50 +Block 0012 [125]: 50dccdf28a626d0e +Block 0012 [126]: d7c52028c281cd8c +Block 0012 [127]: e529fc89af20d455 +Block 0013 [ 0]: 3f79f1e30b5e7726 +Block 0013 [ 1]: 6b6c441852a1437f +Block 0013 [ 2]: 524c143552902847 +Block 0013 [ 3]: f9b339800d2d28cb +Block 0013 [ 4]: cf55d282c610193a +Block 0013 [ 5]: bf832f49274a60b8 +Block 0013 [ 6]: 45a4e7155816ac7e +Block 0013 [ 7]: e64bec13052f6941 +Block 0013 [ 8]: d6242b89535de78a +Block 0013 [ 9]: 918e2e27f15f721a +Block 0013 [ 10]: 31f4ea9a9d2857ff +Block 0013 [ 11]: 4c319ff476195c38 +Block 0013 [ 12]: d4355f6d48776116 +Block 0013 [ 13]: 93ffbeccc98cf397 +Block 0013 [ 14]: 25cfa21890d33df7 +Block 0013 [ 15]: cf5a579647ea0d8d +Block 0013 [ 16]: d727a14fcba6e5a0 +Block 0013 [ 17]: 6071de36f5e1028e +Block 0013 [ 18]: c93483002c5999dc +Block 0013 [ 19]: e58513e2865352fa +Block 0013 [ 20]: 03ca90a9f479c70e +Block 0013 [ 21]: e3a1a02a869e3683 +Block 0013 [ 22]: dacc0c5f28ba73cf +Block 0013 [ 23]: e1ae25441e581087 +Block 0013 [ 24]: 2e5a29a2d4985b3e +Block 0013 [ 25]: 6de6b2e0f421263f +Block 0013 [ 26]: 53dc84682df0c994 +Block 0013 [ 27]: f888d4cba517b460 +Block 0013 [ 28]: ff439db232b6fc9e +Block 0013 [ 29]: 7d58f7a83ac2c2e1 +Block 0013 [ 30]: c9b857272b2969d0 +Block 0013 [ 31]: 51855dab8e1357c6 +Block 0013 [ 32]: 16417e3b16743c74 +Block 0013 [ 33]: 0b32891249dc6a63 +Block 0013 [ 34]: a43b213b7bb8af74 +Block 0013 [ 35]: d4ed5f9f0696585a +Block 0013 [ 36]: e7082aad8d1d9fed +Block 0013 [ 37]: ccb027b71e7d70cf +Block 0013 [ 38]: 1908f7d226bd2374 +Block 0013 [ 39]: cd2c56282338cf35 +Block 0013 [ 40]: 465723b104c27515 +Block 0013 [ 41]: 6ebb42a9d3221d0d +Block 0013 [ 42]: 3edb4eacf01bbf7d +Block 0013 [ 43]: 86effc21d67d7342 +Block 0013 [ 44]: a18cb75bdb19e26b +Block 0013 [ 45]: 031ebbc38fca0940 +Block 0013 [ 46]: 9dca893dba6fabe7 +Block 0013 [ 47]: 16dc0a306d559c2c +Block 0013 [ 48]: 05d692d2e8d71369 +Block 0013 [ 49]: 7529565f8a9d4191 +Block 0013 [ 50]: 9dc457838464926f +Block 0013 [ 51]: 98dd7fe4c8308784 +Block 0013 [ 52]: 83f4a014c9dd1ebd +Block 0013 [ 53]: d1cf7b70be1c12a4 +Block 0013 [ 54]: df7fafe2f2b05c5c +Block 0013 [ 55]: 89f33833c8bb9933 +Block 0013 [ 56]: f8983927ab303c4f +Block 0013 [ 57]: ab385ef38e912d62 +Block 0013 [ 58]: 96b4e9e50cd94e26 +Block 0013 [ 59]: f8011b1cbea250a9 +Block 0013 [ 60]: 06cc68c9612a8547 +Block 0013 [ 61]: 9eb5fdb60d7dd9ff +Block 0013 [ 62]: 0ab426dd8341c5af +Block 0013 [ 63]: 6f5a384f223e4bda +Block 0013 [ 64]: 43a425b96623aad2 +Block 0013 [ 65]: 58a19d4d1e96aac2 +Block 0013 [ 66]: fefcab43331184f0 +Block 0013 [ 67]: 352a12578ddeebe8 +Block 0013 [ 68]: 5a8ba5c164aff53b +Block 0013 [ 69]: fd34095dec7f6a43 +Block 0013 [ 70]: 59ef6a514af304ee +Block 0013 [ 71]: b3f28a6b50e9eefc +Block 0013 [ 72]: f364142ad5f6f2a0 +Block 0013 [ 73]: 14c080411768f284 +Block 0013 [ 74]: 369ee6619b655c82 +Block 0013 [ 75]: 0e1b76fd96acdbe3 +Block 0013 [ 76]: 88616fdcf90cefd8 +Block 0013 [ 77]: a57f0eb8309ec5d2 +Block 0013 [ 78]: e46225f231033231 +Block 0013 [ 79]: 0f7bff3fb56060d0 +Block 0013 [ 80]: 864926034a3d58be +Block 0013 [ 81]: b4f4ff182a193fa9 +Block 0013 [ 82]: 42a9eda20b28ce4d +Block 0013 [ 83]: 48942f8c13152016 +Block 0013 [ 84]: b52c3f1d87a6b25e +Block 0013 [ 85]: c76ccf82bd8ace4a +Block 0013 [ 86]: eb6225fcafb3d553 +Block 0013 [ 87]: b38eeac9c4ed180b +Block 0013 [ 88]: 0e3726f21e5833e5 +Block 0013 [ 89]: 134bac0f131f4988 +Block 0013 [ 90]: 75d5e1d3db15b9ff +Block 0013 [ 91]: 7b85824230fe3a0c +Block 0013 [ 92]: ebd181d68697d465 +Block 0013 [ 93]: f197bfb66bc00c9f +Block 0013 [ 94]: 22bf2bfb071c6456 +Block 0013 [ 95]: d082ebcd3e459d4c +Block 0013 [ 96]: f44ca9dbaddfc73e +Block 0013 [ 97]: 0f4bd40e2efc8bcc +Block 0013 [ 98]: 9a177f8107cf3d7c +Block 0013 [ 99]: 35c4f26aad7c9e5b +Block 0013 [100]: 3a113403023d6b10 +Block 0013 [101]: 89daa9698721de5a +Block 0013 [102]: 0010e90c8d3451fb +Block 0013 [103]: ab8cea9f5a22f47b +Block 0013 [104]: abea62261666385e +Block 0013 [105]: c2fa2c669d87a44f +Block 0013 [106]: e97d4fee1a2ad6e5 +Block 0013 [107]: 39f4c7c19abf0718 +Block 0013 [108]: e902f38fd4a7f2e5 +Block 0013 [109]: 7883dc63e607eddf +Block 0013 [110]: d0d19d2d6ba8a80b +Block 0013 [111]: e87329db2f6aaf67 +Block 0013 [112]: efaabe1b2bf88c42 +Block 0013 [113]: f616ae68edba0dc3 +Block 0013 [114]: 58bf7d614b08eadd +Block 0013 [115]: b209c040f8a23484 +Block 0013 [116]: 1cde8c5201fb1b69 +Block 0013 [117]: 13b4333e71d45941 +Block 0013 [118]: 946305a39fe8b48b +Block 0013 [119]: 78a4c0885a91e21f +Block 0013 [120]: bc3fab5ac339e717 +Block 0013 [121]: 7d72b057bbb11f71 +Block 0013 [122]: a848b011f3c9bd93 +Block 0013 [123]: ba5bf9f6a7e1e947 +Block 0013 [124]: 4c929b7f7c4125d3 +Block 0013 [125]: c779bbe51677c684 +Block 0013 [126]: 7ce69656016bc8cc +Block 0013 [127]: 4060f77a3f4f375e +Block 0014 [ 0]: 36eb877e2cb684d6 +Block 0014 [ 1]: f9e8ab338f6c1e51 +Block 0014 [ 2]: 52faedc92b2e8b61 +Block 0014 [ 3]: 9bb1469da336c2a0 +Block 0014 [ 4]: 585fa4eec702f668 +Block 0014 [ 5]: fd7c1e2b7777ef25 +Block 0014 [ 6]: 2a7173209ca4ff4d +Block 0014 [ 7]: 0fcb08a71c391504 +Block 0014 [ 8]: 3b610bc5a7a224f5 +Block 0014 [ 9]: 25dd0a482210acc5 +Block 0014 [ 10]: 9694d8f19a8a0a91 +Block 0014 [ 11]: adfa18f2c0ca7f44 +Block 0014 [ 12]: 8ee2b1e1409e71bd +Block 0014 [ 13]: bea7a5183e79e431 +Block 0014 [ 14]: 98bd569af79c14f5 +Block 0014 [ 15]: b4dd008366f82442 +Block 0014 [ 16]: e9f3b4fc450e4d19 +Block 0014 [ 17]: bc9b583e1ee06e2c +Block 0014 [ 18]: 25cd0f442e01ed38 +Block 0014 [ 19]: edd96c9655cc3214 +Block 0014 [ 20]: 2b19a0e6b9ccb78a +Block 0014 [ 21]: 6b71b8e90c93cea0 +Block 0014 [ 22]: ad0b9f452be42586 +Block 0014 [ 23]: 52e78d83f9aee524 +Block 0014 [ 24]: c78174b11c8d5c1f +Block 0014 [ 25]: 0bd632f0fb2eae74 +Block 0014 [ 26]: 8c75e9efe3f75b38 +Block 0014 [ 27]: 712469cdfa1db23b +Block 0014 [ 28]: 625175cc28636029 +Block 0014 [ 29]: f7414204e9b1abb5 +Block 0014 [ 30]: cb2d8243eb03a7fd +Block 0014 [ 31]: b25d487501f1232d +Block 0014 [ 32]: 7ba19300c55e1518 +Block 0014 [ 33]: f380f524ba88d8fe +Block 0014 [ 34]: 23bdbd7438c69060 +Block 0014 [ 35]: a521773558402ff0 +Block 0014 [ 36]: dfdcb5870ffef2cc +Block 0014 [ 37]: c9fdcf18dc1f0529 +Block 0014 [ 38]: 2f9087ce5ac19e93 +Block 0014 [ 39]: 73b60c28230016b8 +Block 0014 [ 40]: f3ed5041b360449b +Block 0014 [ 41]: bbd4bc9021b7619d +Block 0014 [ 42]: ae9c40ba07422d8c +Block 0014 [ 43]: 09785605bd9eda18 +Block 0014 [ 44]: a6f7aa266270f957 +Block 0014 [ 45]: 051cdfcd704e0384 +Block 0014 [ 46]: 7387dbbf3e1a10c4 +Block 0014 [ 47]: 5dc0e14b24286a1f +Block 0014 [ 48]: e1d8bf350ff87374 +Block 0014 [ 49]: b9a99daa52530e06 +Block 0014 [ 50]: 116ffffb006a2144 +Block 0014 [ 51]: dd7a66d2e636a525 +Block 0014 [ 52]: 61db77a021ac3926 +Block 0014 [ 53]: 30d1f7744e647694 +Block 0014 [ 54]: 96fd74b22f5fcac1 +Block 0014 [ 55]: c1adc9f2b5a985ad +Block 0014 [ 56]: f09d8dacf51ec7c2 +Block 0014 [ 57]: aefd81d2e006dc85 +Block 0014 [ 58]: 9376229c3023edd2 +Block 0014 [ 59]: ae18700eda3b7964 +Block 0014 [ 60]: 8b997011c74aa16e +Block 0014 [ 61]: 4a552a9044f14799 +Block 0014 [ 62]: 9b5a9b4c5a5da0d0 +Block 0014 [ 63]: 3b8ee69a48ad75d5 +Block 0014 [ 64]: 87aec64397996f21 +Block 0014 [ 65]: 04eb7548c1fef388 +Block 0014 [ 66]: 6341ec25b8aa3747 +Block 0014 [ 67]: 35317eb9c4abfac9 +Block 0014 [ 68]: 45ea12041a15a084 +Block 0014 [ 69]: fda06c6db17ba115 +Block 0014 [ 70]: 7779d9b3b76283be +Block 0014 [ 71]: da844a2473775aac +Block 0014 [ 72]: 89f91c2c6564a50c +Block 0014 [ 73]: c8cd0aa7a3b1ddd7 +Block 0014 [ 74]: ff6abb5a4a485dad +Block 0014 [ 75]: d1ed559cae3e4b62 +Block 0014 [ 76]: 7b8437f83c6fc847 +Block 0014 [ 77]: 4e0be6962713d580 +Block 0014 [ 78]: 4443da814792ef38 +Block 0014 [ 79]: a93d0ea553d8a296 +Block 0014 [ 80]: a528a4bf080ac4c0 +Block 0014 [ 81]: 49dd9762b2f9aef2 +Block 0014 [ 82]: b2c920ce86a13d59 +Block 0014 [ 83]: 3dacedf3585ea447 +Block 0014 [ 84]: cbe8d2c6d0ad075a +Block 0014 [ 85]: a52b9f3aaa3b273c +Block 0014 [ 86]: ed2b0107316af4da +Block 0014 [ 87]: 5a10f265bb50b93d +Block 0014 [ 88]: 1417bf78895d5e7f +Block 0014 [ 89]: f5bcd9d996444e4d +Block 0014 [ 90]: 590307488b720fa3 +Block 0014 [ 91]: dea8e9d408b06dea +Block 0014 [ 92]: 872b059e9003b56b +Block 0014 [ 93]: 2ed43f98fd6f6254 +Block 0014 [ 94]: 93f57c98bd5b6cd7 +Block 0014 [ 95]: 9beeeb8e9207043f +Block 0014 [ 96]: dd54000038b5110d +Block 0014 [ 97]: 5332e79251d56378 +Block 0014 [ 98]: 5e48996dcaff378b +Block 0014 [ 99]: d56e7faf27afcffb +Block 0014 [100]: 90b6bed608144802 +Block 0014 [101]: 45cccf54d9317392 +Block 0014 [102]: 54ed8e4ac5dc2b76 +Block 0014 [103]: 885c812d8ff62a5f +Block 0014 [104]: bbcc2cb34eb38c9a +Block 0014 [105]: 9e9ebda71224a82f +Block 0014 [106]: 41b45afcdbc3c630 +Block 0014 [107]: 91d46218f582c264 +Block 0014 [108]: 0827c73740b561b5 +Block 0014 [109]: c4a54b4d6ec74a50 +Block 0014 [110]: 024ae95eaae719dc +Block 0014 [111]: 17117b346ffd2a35 +Block 0014 [112]: 39b7db4226a72f84 +Block 0014 [113]: 92886993615d1335 +Block 0014 [114]: 12b61372d0e851e0 +Block 0014 [115]: 8c4001f05b029c7c +Block 0014 [116]: 8a53cdb6444a882b +Block 0014 [117]: 3c685889fc62db28 +Block 0014 [118]: cfdc76e52e7c5f13 +Block 0014 [119]: f7f1a83420e11a14 +Block 0014 [120]: d5cb9b8ce8d28da4 +Block 0014 [121]: bed926b463fc5156 +Block 0014 [122]: a5f62e9940463b0a +Block 0014 [123]: a4089b6edc533caf +Block 0014 [124]: 097ac21fa0279d86 +Block 0014 [125]: 8c794c5f42e95e72 +Block 0014 [126]: d9d2a89c3ff25c4b +Block 0014 [127]: e012ba6c11d061f5 +Block 0015 [ 0]: fae64e566868810a +Block 0015 [ 1]: 8d81e940b129371d +Block 0015 [ 2]: 60106c5b4eb20b4c +Block 0015 [ 3]: 6e42f90ad23c62f6 +Block 0015 [ 4]: 131cc364e92de603 +Block 0015 [ 5]: de343b93a6d3549d +Block 0015 [ 6]: 1515a10f85cb86b3 +Block 0015 [ 7]: b57a75500f76cba3 +Block 0015 [ 8]: 75a2e082477a26e6 +Block 0015 [ 9]: 9a308ff19ea5aae9 +Block 0015 [ 10]: a8ad46a547e00b2f +Block 0015 [ 11]: 7275c3e38c70e7ff +Block 0015 [ 12]: 746ed2626d4cd88d +Block 0015 [ 13]: e922d7d439ec9044 +Block 0015 [ 14]: c0632b55bf466718 +Block 0015 [ 15]: ef8b572c9176d1f2 +Block 0015 [ 16]: f4492a45664b88f3 +Block 0015 [ 17]: 07527af74fabd39f +Block 0015 [ 18]: cb49229072c2db98 +Block 0015 [ 19]: 461026f699be3402 +Block 0015 [ 20]: b745dc7f8ebf58a0 +Block 0015 [ 21]: 194b7c920c12c491 +Block 0015 [ 22]: 1536ca06f172ea55 +Block 0015 [ 23]: 830173431c36eede +Block 0015 [ 24]: 463d0c62573022d6 +Block 0015 [ 25]: 62c887bed7ffa30b +Block 0015 [ 26]: ee75ec33cb8c4aa4 +Block 0015 [ 27]: 592d8ee4f8d69036 +Block 0015 [ 28]: b9a3ce12337d4c0f +Block 0015 [ 29]: 781e9fcad1891be8 +Block 0015 [ 30]: db46bad27e7e1dfe +Block 0015 [ 31]: 9028a7155a0860aa +Block 0015 [ 32]: a01a5ec2351afc02 +Block 0015 [ 33]: a09fb40edf104427 +Block 0015 [ 34]: 262fcbe6832677f2 +Block 0015 [ 35]: 5f52e7ce1df6560d +Block 0015 [ 36]: dc190299cc11093e +Block 0015 [ 37]: 34281d9238950010 +Block 0015 [ 38]: 225a27cf8bee7277 +Block 0015 [ 39]: 3429996a5c48f38d +Block 0015 [ 40]: c87e9a63ad2c0282 +Block 0015 [ 41]: 018b4e3e01fc9ecd +Block 0015 [ 42]: 392312f8091a3d85 +Block 0015 [ 43]: 7fd5794b59cd95fe +Block 0015 [ 44]: ef83133e4e2d939b +Block 0015 [ 45]: d0580c8013286eec +Block 0015 [ 46]: 5bbf1246d831f631 +Block 0015 [ 47]: 0054687cd3a0dec5 +Block 0015 [ 48]: 90ac0d297fa9aab7 +Block 0015 [ 49]: 51f36150003f7e04 +Block 0015 [ 50]: b9ef0b30c558aba6 +Block 0015 [ 51]: 460bc7e1538d62fd +Block 0015 [ 52]: 6d3e852ceeb68b69 +Block 0015 [ 53]: 568de03409ae5007 +Block 0015 [ 54]: c6ffdcfbeeaa12cb +Block 0015 [ 55]: 6a5e7db56071847c +Block 0015 [ 56]: d28c5793ae7d1d55 +Block 0015 [ 57]: 0267fd8e150f21be +Block 0015 [ 58]: 00bc5f653b17bf7b +Block 0015 [ 59]: 585da8b6ec306b61 +Block 0015 [ 60]: 1353061d1e353110 +Block 0015 [ 61]: 2fa207e0f1f0a407 +Block 0015 [ 62]: 7c977b733683ac75 +Block 0015 [ 63]: 241449dccd64fb26 +Block 0015 [ 64]: 338082d508dafcb0 +Block 0015 [ 65]: 3cd8e424bce5d327 +Block 0015 [ 66]: 31cce94299bf729a +Block 0015 [ 67]: f17f0248495e1a5b +Block 0015 [ 68]: 36e2da2618aa0127 +Block 0015 [ 69]: 38b639fb327e03b1 +Block 0015 [ 70]: a43510ced8f7dc89 +Block 0015 [ 71]: b3bfbbf1b59bbd75 +Block 0015 [ 72]: 75c1d4dff925a032 +Block 0015 [ 73]: 77c09a0b485faa19 +Block 0015 [ 74]: 8dd892fbb9ff328a +Block 0015 [ 75]: 017b4d0408cf7bbe +Block 0015 [ 76]: 51f3c7cba9a58139 +Block 0015 [ 77]: 049e4a5ccc4b17f9 +Block 0015 [ 78]: 19616ffc15a221e6 +Block 0015 [ 79]: 2ce8c0e5d2e7d1ab +Block 0015 [ 80]: 79c0d484fb10455e +Block 0015 [ 81]: a3fc63a5f8a9b9c0 +Block 0015 [ 82]: 9cfebe8a3d549467 +Block 0015 [ 83]: 09c06fe1b4c3a7c7 +Block 0015 [ 84]: 8607f6041ada778b +Block 0015 [ 85]: fae4e290100273e7 +Block 0015 [ 86]: fdd1e469396a400b +Block 0015 [ 87]: 4cd57f460af7a766 +Block 0015 [ 88]: 23321695a8adaf2e +Block 0015 [ 89]: fdfa218394a41fc8 +Block 0015 [ 90]: 9db89b71db54b466 +Block 0015 [ 91]: b405819d71bee318 +Block 0015 [ 92]: f7696c155cbb0ba0 +Block 0015 [ 93]: b5bee158592d57e7 +Block 0015 [ 94]: 618aa1003551b462 +Block 0015 [ 95]: b61d64015dc2a730 +Block 0015 [ 96]: 5b4387973c664b83 +Block 0015 [ 97]: c2fa9ee8ac6b02f9 +Block 0015 [ 98]: e3221b93bea4bf64 +Block 0015 [ 99]: 6dee17d482d317fd +Block 0015 [100]: 1130d6a3d3173623 +Block 0015 [101]: c9b57db857fdc466 +Block 0015 [102]: 9318a307bd7dd5df +Block 0015 [103]: f3efea82eb010ea7 +Block 0015 [104]: 835aa1bb7f95a2a6 +Block 0015 [105]: 97788be80f52b675 +Block 0015 [106]: 064691f59ec2de3d +Block 0015 [107]: 4aad4ab8889ac979 +Block 0015 [108]: 9f77af86a93272be +Block 0015 [109]: 57e46db473688315 +Block 0015 [110]: 9f45f229a6d63e5e +Block 0015 [111]: 37858db05cfa4789 +Block 0015 [112]: abe16cff88d854a9 +Block 0015 [113]: 85fef1d6f322d26c +Block 0015 [114]: 85558f7f6c6bf35d +Block 0015 [115]: 54be5379ce62b83b +Block 0015 [116]: f0427f7a71563307 +Block 0015 [117]: 695bd133f77e11a2 +Block 0015 [118]: 9efe3ed4696fdc1e +Block 0015 [119]: 703c4220f9092896 +Block 0015 [120]: ee71111a428823a2 +Block 0015 [121]: 2bdf0bc45eec47de +Block 0015 [122]: 50f379acec7ee7b8 +Block 0015 [123]: 6a7ce42b0a5ebc49 +Block 0015 [124]: 974e974bd88474c1 +Block 0015 [125]: d861a0a5c5c10163 +Block 0015 [126]: 73bdaf6e50134eb1 +Block 0015 [127]: acf7664666733c67 +Block 0016 [ 0]: 50ab0f9bfac24f78 +Block 0016 [ 1]: 76e94cfff68ea616 +Block 0016 [ 2]: c00150a5b14757e7 +Block 0016 [ 3]: 4d19657ab2083347 +Block 0016 [ 4]: 017ccdbd18f7aa76 +Block 0016 [ 5]: c8627a4acfcf9382 +Block 0016 [ 6]: 635afa6f665f6306 +Block 0016 [ 7]: 82a8a745b4d6d8ae +Block 0016 [ 8]: 4582bba135f3b4a1 +Block 0016 [ 9]: 526f1a88af7428bd +Block 0016 [ 10]: 9494aa25932ca80f +Block 0016 [ 11]: 90887f9ad9692795 +Block 0016 [ 12]: 967c01323dd819cc +Block 0016 [ 13]: b15b74896960da9a +Block 0016 [ 14]: b25030a5374f74da +Block 0016 [ 15]: e3383256ba6017ff +Block 0016 [ 16]: d999eb0ee0664b0c +Block 0016 [ 17]: f641eb0285a3c506 +Block 0016 [ 18]: 1b3bbbabcdb8314a +Block 0016 [ 19]: bb0fefad44cf0cac +Block 0016 [ 20]: e8e80497833606fc +Block 0016 [ 21]: dd7d61d1f3e68772 +Block 0016 [ 22]: 7ef78dd8add877e7 +Block 0016 [ 23]: 92a015aad5502ec8 +Block 0016 [ 24]: 4d31d23941318dd6 +Block 0016 [ 25]: e2559bbb689e5fb4 +Block 0016 [ 26]: e2503c10c55eaf2a +Block 0016 [ 27]: f903e0f1ac637eb5 +Block 0016 [ 28]: 5fa77cf36d36fc99 +Block 0016 [ 29]: b49c467b28d24b67 +Block 0016 [ 30]: c71141752046355f +Block 0016 [ 31]: 4f02b25bf2fbd626 +Block 0016 [ 32]: 266976c4945f8a20 +Block 0016 [ 33]: 4dff49abef037976 +Block 0016 [ 34]: 1db92cf72045c0ce +Block 0016 [ 35]: 646d8c11e8cc7da8 +Block 0016 [ 36]: d69609eed1e112eb +Block 0016 [ 37]: f71f70d33e21865e +Block 0016 [ 38]: 99723999d0b88330 +Block 0016 [ 39]: 602c4d8d6bc8f7d5 +Block 0016 [ 40]: 0675d32998c77081 +Block 0016 [ 41]: 74ec88c7c20a9ce9 +Block 0016 [ 42]: 2d6be9f55b35e386 +Block 0016 [ 43]: c5dceca8c3e9aa0e +Block 0016 [ 44]: ef7c553de2ac1b6e +Block 0016 [ 45]: ed1d4f23e7a0ec44 +Block 0016 [ 46]: ecaa70a863786230 +Block 0016 [ 47]: 6c00fb7c75083cba +Block 0016 [ 48]: 358ab6100cfadb0e +Block 0016 [ 49]: d355f128ad812a42 +Block 0016 [ 50]: 6e5ff1b32f8cd116 +Block 0016 [ 51]: b652b670ced34b15 +Block 0016 [ 52]: 869f55f7d310d958 +Block 0016 [ 53]: 1c7ab17e1b2a923c +Block 0016 [ 54]: 9bb5d4bcc6c5fb44 +Block 0016 [ 55]: abdd670dcbc1ab98 +Block 0016 [ 56]: 13f1ea2cd9968cf2 +Block 0016 [ 57]: 4468b4a8063832f4 +Block 0016 [ 58]: 5cd65db1b412d694 +Block 0016 [ 59]: 15ccb512736cd4f8 +Block 0016 [ 60]: ba3e10fd0ca3138b +Block 0016 [ 61]: da3c85d02e8eb749 +Block 0016 [ 62]: de0b8e8e36f82366 +Block 0016 [ 63]: 0842ec8f33175a3c +Block 0016 [ 64]: 2a1bc0208d7d4a97 +Block 0016 [ 65]: 16530cb323ff1d7d +Block 0016 [ 66]: 1f0966930be20b84 +Block 0016 [ 67]: bb9512a98ef21706 +Block 0016 [ 68]: bdd948ccde317cd6 +Block 0016 [ 69]: 7fa5e561bc345638 +Block 0016 [ 70]: 6fc7243a84e185dc +Block 0016 [ 71]: dfad6179cb99a475 +Block 0016 [ 72]: 9e61c0bb96277f9b +Block 0016 [ 73]: e6b08e6cad02b1cd +Block 0016 [ 74]: 78ac4aeb2e48dc4b +Block 0016 [ 75]: 6abc9082cae40c99 +Block 0016 [ 76]: 51a1fdb5e4afbb95 +Block 0016 [ 77]: 55740e7c226f47ba +Block 0016 [ 78]: d38187c139231aa1 +Block 0016 [ 79]: 9f8284a871165782 +Block 0016 [ 80]: 9e825895c153205a +Block 0016 [ 81]: 7e4c90935b6ffe4e +Block 0016 [ 82]: a357f20371f2a364 +Block 0016 [ 83]: 318e03f3f2513efb +Block 0016 [ 84]: 1c42a251389bd43a +Block 0016 [ 85]: 8564c0d088201c30 +Block 0016 [ 86]: 7fca97b124234e78 +Block 0016 [ 87]: b00bd077743cda70 +Block 0016 [ 88]: b055fd596a99aca0 +Block 0016 [ 89]: 34771a1332ffd9b4 +Block 0016 [ 90]: 78064a51b2f57bb7 +Block 0016 [ 91]: b6978318f72a3ccc +Block 0016 [ 92]: 3d3f08940ddfa044 +Block 0016 [ 93]: 87c148a2bcc7728f +Block 0016 [ 94]: e4cd764d8ab0deb1 +Block 0016 [ 95]: 549d8816dc2c1d5b +Block 0016 [ 96]: 0247cc6a27c0578c +Block 0016 [ 97]: 571f950746e01e76 +Block 0016 [ 98]: 900bf2c386989787 +Block 0016 [ 99]: 9e4c53d37c530595 +Block 0016 [100]: bb6db1a208af1e6a +Block 0016 [101]: b6cac57f894b24b7 +Block 0016 [102]: d16d7ef19e90d4bd +Block 0016 [103]: c8d8ef59dbe1a8c2 +Block 0016 [104]: c1f551eebbf00b0d +Block 0016 [105]: fe625b5dfd27d1f1 +Block 0016 [106]: d4aca3870d30cfa4 +Block 0016 [107]: 53b585bf2b9a34eb +Block 0016 [108]: e554344eab7dec31 +Block 0016 [109]: 8ca4ee2b6de70004 +Block 0016 [110]: 8612d6c8a635b35e +Block 0016 [111]: 494263004ad7e202 +Block 0016 [112]: 5e80b92e4d0d81e2 +Block 0016 [113]: c189db989da4db9a +Block 0016 [114]: 9fadfa6afccbbe8a +Block 0016 [115]: 6b69af4f59accb96 +Block 0016 [116]: 315bf00062219e81 +Block 0016 [117]: 471cc1fd1305a04a +Block 0016 [118]: 753f539eb4dd0e81 +Block 0016 [119]: 8927ac6207b8482a +Block 0016 [120]: 7f8216083c95518f +Block 0016 [121]: 8d5a275aabb839f2 +Block 0016 [122]: 53cdeeb793a608e9 +Block 0016 [123]: 1fb14ce52c620b71 +Block 0016 [124]: c37c9e2533a5c59e +Block 0016 [125]: 563255fb5ee7c5f7 +Block 0016 [126]: 46b2bc381f2d0cdb +Block 0016 [127]: 022b6a3f91aa7fe6 +Block 0017 [ 0]: f148c6ecfacf9073 +Block 0017 [ 1]: 4c2e5320c6a82272 +Block 0017 [ 2]: c85fa2b8cc946410 +Block 0017 [ 3]: 8641a7078f51c3bb +Block 0017 [ 4]: 1a1a5660deb38c86 +Block 0017 [ 5]: 9f9021e30fef3113 +Block 0017 [ 6]: 162b92533a701e91 +Block 0017 [ 7]: 1ff3c3be2ca424fc +Block 0017 [ 8]: 9863521a2fcc57d3 +Block 0017 [ 9]: 48a8854bcaf7a038 +Block 0017 [ 10]: 146063d72bc22e43 +Block 0017 [ 11]: 24df9b1f4ea286a8 +Block 0017 [ 12]: 2790a76d3c1763b7 +Block 0017 [ 13]: 1bc7152d8e234249 +Block 0017 [ 14]: d8e02822fd457154 +Block 0017 [ 15]: 70ceee9275bfacb2 +Block 0017 [ 16]: 9d3772a593d4dbcd +Block 0017 [ 17]: 422e9bfe5dc92050 +Block 0017 [ 18]: 60e0d65beab7c333 +Block 0017 [ 19]: 236ec0961a3ec888 +Block 0017 [ 20]: 370f39ef4114dc14 +Block 0017 [ 21]: d84485b6ed907549 +Block 0017 [ 22]: d84b2719fdea3830 +Block 0017 [ 23]: afabab6a0aef3b37 +Block 0017 [ 24]: b20c3789e2428092 +Block 0017 [ 25]: fe219a3fccb3f109 +Block 0017 [ 26]: 49a2b15d29d94d35 +Block 0017 [ 27]: a8a33c545ca0a806 +Block 0017 [ 28]: 87ee050651ec250c +Block 0017 [ 29]: cf2d7d720281726d +Block 0017 [ 30]: 39c95dd1a0cc479e +Block 0017 [ 31]: bf7ba9a85a58dfeb +Block 0017 [ 32]: 8a58d87bc1d64e80 +Block 0017 [ 33]: 1c1e5872a341c842 +Block 0017 [ 34]: f6ed8ebe2c5fb8f7 +Block 0017 [ 35]: 204e8c80cb442cf6 +Block 0017 [ 36]: 439feed11ebdc53d +Block 0017 [ 37]: f2a15c2e5e9203f9 +Block 0017 [ 38]: fdb84ef6548b0d53 +Block 0017 [ 39]: 27eabee46992a24b +Block 0017 [ 40]: 3d85395558467bef +Block 0017 [ 41]: ee324a06a5df5c58 +Block 0017 [ 42]: a22120d5f734e984 +Block 0017 [ 43]: 2bc5053e90ba8225 +Block 0017 [ 44]: e09f8948fbf44b20 +Block 0017 [ 45]: 896d207c32bd6b2d +Block 0017 [ 46]: 7bfa2e74b6011818 +Block 0017 [ 47]: 0889d124b7c363aa +Block 0017 [ 48]: b8ce5f77da6250aa +Block 0017 [ 49]: 7411129130218a47 +Block 0017 [ 50]: 37bdb739c55b5dd0 +Block 0017 [ 51]: 539e3e5695d9132e +Block 0017 [ 52]: d45f10156352999a +Block 0017 [ 53]: 3589cd477c5dec79 +Block 0017 [ 54]: 0ed10a28987665fc +Block 0017 [ 55]: 8eb3aaf7cb073a56 +Block 0017 [ 56]: f025d1b5eff402b3 +Block 0017 [ 57]: 6f5327448591fb37 +Block 0017 [ 58]: f530dcea50113637 +Block 0017 [ 59]: 75d2d8f0b0697456 +Block 0017 [ 60]: 8bd10f66b3aebaca +Block 0017 [ 61]: 6f93760f7113d397 +Block 0017 [ 62]: 42e8504c969a9ca3 +Block 0017 [ 63]: d122bf99d1f2738a +Block 0017 [ 64]: 050f1ef18fe956dd +Block 0017 [ 65]: 7f9a0b2a550f4886 +Block 0017 [ 66]: c211410f6f6346b7 +Block 0017 [ 67]: d21fac80ef0580f7 +Block 0017 [ 68]: 313089c250c94891 +Block 0017 [ 69]: 5b8c12ab6f45d396 +Block 0017 [ 70]: 0cc757071306a08c +Block 0017 [ 71]: 0cd18b8157d80d65 +Block 0017 [ 72]: 5378531ce24a9fe0 +Block 0017 [ 73]: 619ac127f25314b8 +Block 0017 [ 74]: 289666e9273cd9cf +Block 0017 [ 75]: 9d683046f40fd118 +Block 0017 [ 76]: 48056be7488a4d3b +Block 0017 [ 77]: 4cee9208e330d9da +Block 0017 [ 78]: 531b8009a08f8667 +Block 0017 [ 79]: bd5736dfe9c65709 +Block 0017 [ 80]: e9386f17671521bc +Block 0017 [ 81]: 640ff74bd3f62e82 +Block 0017 [ 82]: 2d298c4e677a4ae6 +Block 0017 [ 83]: 1b8df78a8d84216f +Block 0017 [ 84]: 9933fca3997cf107 +Block 0017 [ 85]: 08e19896c2ef82b5 +Block 0017 [ 86]: f55bae80ac972a6c +Block 0017 [ 87]: ebc1fdd921f50518 +Block 0017 [ 88]: c526c7fff85c0cd6 +Block 0017 [ 89]: 958988f409748aa8 +Block 0017 [ 90]: 9f53bfc38a3f99f8 +Block 0017 [ 91]: 30cb279e1a4180b0 +Block 0017 [ 92]: 68cbb795935906b6 +Block 0017 [ 93]: bbe023cd06ba4bec +Block 0017 [ 94]: ba0b431efd7f641d +Block 0017 [ 95]: 7f830d88ec16d7c7 +Block 0017 [ 96]: f51bc5bb8e0f60f3 +Block 0017 [ 97]: 6a090a16ea0664a5 +Block 0017 [ 98]: b60a6b89b78d5a41 +Block 0017 [ 99]: 3ee08774310d4b7f +Block 0017 [100]: 8cf3a2caa05293ee +Block 0017 [101]: 029abaacc0f9e5ec +Block 0017 [102]: aa5b96c1138bc2fb +Block 0017 [103]: 33f5ffa151ca2c41 +Block 0017 [104]: 723b07282d65a43a +Block 0017 [105]: 05d3f744eb0afc52 +Block 0017 [106]: 04d5d592022801dd +Block 0017 [107]: 3a85abb4dae37695 +Block 0017 [108]: 64930e7129ed9f6f +Block 0017 [109]: 569521d11e337955 +Block 0017 [110]: 0019d5e39e6101db +Block 0017 [111]: 7bb63a5d60fe40b7 +Block 0017 [112]: 086e09b78786e706 +Block 0017 [113]: a82a6aaa0d0e37c5 +Block 0017 [114]: d202447290bdfa0e +Block 0017 [115]: 50f4ac3092a59fe8 +Block 0017 [116]: 607d6f205e9684f8 +Block 0017 [117]: 2f0fcf52aa5c84fe +Block 0017 [118]: 71497f707f6c2992 +Block 0017 [119]: 6488988f6a29f694 +Block 0017 [120]: 9b1841ebe4358b52 +Block 0017 [121]: de02ad91f6ff73e7 +Block 0017 [122]: da7a221d3a007196 +Block 0017 [123]: e15636f251d68894 +Block 0017 [124]: c737efef4be1c6cd +Block 0017 [125]: bec2c5eb4b1f4b1f +Block 0017 [126]: 1bff0563b0dbfffb +Block 0017 [127]: e09006a90e6ead01 +Block 0018 [ 0]: faa545eff119cfb9 +Block 0018 [ 1]: 95d936643121d1da +Block 0018 [ 2]: ae713aa879b76334 +Block 0018 [ 3]: 2db08b3dc9fdb7be +Block 0018 [ 4]: 63485723e7e088b1 +Block 0018 [ 5]: a8b1ff1d0d8ad0fc +Block 0018 [ 6]: 157c01d987bcf4f6 +Block 0018 [ 7]: e9d5737671f2fc98 +Block 0018 [ 8]: 08931d6bba1ec789 +Block 0018 [ 9]: ecd9633e941073ea +Block 0018 [ 10]: 27850a0730f28ddf +Block 0018 [ 11]: df919fb65835d9d0 +Block 0018 [ 12]: be70c1c2f80a744f +Block 0018 [ 13]: 5f42037e0810283e +Block 0018 [ 14]: 1fa0a087aca0d0f5 +Block 0018 [ 15]: 88850bd42d42433c +Block 0018 [ 16]: 4c351ab8ac31727b +Block 0018 [ 17]: 032e362e9961c2c0 +Block 0018 [ 18]: a46fd3113d1903f0 +Block 0018 [ 19]: 76df2ea4d4fc4cd3 +Block 0018 [ 20]: 6360aef426b20c5f +Block 0018 [ 21]: c6c75e30d3125b04 +Block 0018 [ 22]: 2b4604dcc9fa89f0 +Block 0018 [ 23]: 71809018e3f08fd1 +Block 0018 [ 24]: eae38831b0434502 +Block 0018 [ 25]: 12354e8863578f73 +Block 0018 [ 26]: cc67649ed524fcda +Block 0018 [ 27]: f3fa35e89b0a0628 +Block 0018 [ 28]: dd4b39ce157c3917 +Block 0018 [ 29]: 79b3eac67611c5b3 +Block 0018 [ 30]: 18d646a35047896f +Block 0018 [ 31]: 7ad67c7909c4214a +Block 0018 [ 32]: 0f85a71cea5458fb +Block 0018 [ 33]: 5a496c5b9a42a99e +Block 0018 [ 34]: f41955d00a6cb89b +Block 0018 [ 35]: 6979ed134db972e2 +Block 0018 [ 36]: c52bc00afcba0bd5 +Block 0018 [ 37]: 0b593fa777b11fdc +Block 0018 [ 38]: ec522ff3dbdc5727 +Block 0018 [ 39]: 5d3c6969d329ff41 +Block 0018 [ 40]: 9c3eee30b62c351c +Block 0018 [ 41]: a5e4421accee4716 +Block 0018 [ 42]: 2dd1bbb8a07019c1 +Block 0018 [ 43]: be3f1ebb698a80fa +Block 0018 [ 44]: 25f84725c715ba2b +Block 0018 [ 45]: de0fa263fc4ef327 +Block 0018 [ 46]: 3309df9d4cab5b46 +Block 0018 [ 47]: 191d6e408413ccc2 +Block 0018 [ 48]: 4ffa07c911bd50b1 +Block 0018 [ 49]: 51513298dcb7e64f +Block 0018 [ 50]: bd61e5ebbb03d888 +Block 0018 [ 51]: 113fd47c82d2bfbc +Block 0018 [ 52]: 7ebc5acf30a5427b +Block 0018 [ 53]: 401178ea14ff6343 +Block 0018 [ 54]: 3dd4c60b0f20b1a0 +Block 0018 [ 55]: 24bec1bc4a96ebeb +Block 0018 [ 56]: dd6f9948397d00f7 +Block 0018 [ 57]: 6e7d7f79b6f68812 +Block 0018 [ 58]: 1ee287e74910a6fc +Block 0018 [ 59]: 32af1d9c9b8b5759 +Block 0018 [ 60]: f55d837645ddc363 +Block 0018 [ 61]: ee8fcf0ba4de85e4 +Block 0018 [ 62]: 0389e54df125e829 +Block 0018 [ 63]: 7b3147558a74ae2b +Block 0018 [ 64]: b3e867428af1fef8 +Block 0018 [ 65]: 3335faa99d817c04 +Block 0018 [ 66]: 9c451ddf0a477fc3 +Block 0018 [ 67]: 248deb6f91ea029a +Block 0018 [ 68]: 9505f628226f2289 +Block 0018 [ 69]: f2bc362d1106f544 +Block 0018 [ 70]: 19a8d07be37f7f36 +Block 0018 [ 71]: c8a3e7b320ee2940 +Block 0018 [ 72]: 20ad585907ffe654 +Block 0018 [ 73]: e5035ad9e307c077 +Block 0018 [ 74]: dbbb5bb28adecaa3 +Block 0018 [ 75]: e036b59cd6ebbca7 +Block 0018 [ 76]: dbf0ead323d11f90 +Block 0018 [ 77]: 32f54a06d8aed030 +Block 0018 [ 78]: 3130833bfebc3fa1 +Block 0018 [ 79]: 3afd1ffe68ed72be +Block 0018 [ 80]: 7ee64d0db46abd24 +Block 0018 [ 81]: 1aebcb1924869cd3 +Block 0018 [ 82]: ede2f00caa0a1709 +Block 0018 [ 83]: c20e575ac91f9e57 +Block 0018 [ 84]: 9895a20bc7b8ceb6 +Block 0018 [ 85]: a4568ccf1f27ca68 +Block 0018 [ 86]: 38e5616cefcb46dc +Block 0018 [ 87]: c8b38ec003578587 +Block 0018 [ 88]: 1558b927e2b931ff +Block 0018 [ 89]: 5f1573189ec111a8 +Block 0018 [ 90]: 744851f93a97bfea +Block 0018 [ 91]: f43418a1064d0e4b +Block 0018 [ 92]: 8f5a287077430279 +Block 0018 [ 93]: d57f9b51bb604f0e +Block 0018 [ 94]: fb3569fb2c75a1db +Block 0018 [ 95]: 698fe004d6cfbb9e +Block 0018 [ 96]: 3d16340d04a7867e +Block 0018 [ 97]: 4f12b922e3535727 +Block 0018 [ 98]: e322253e8d863075 +Block 0018 [ 99]: 70a9f11b9df32318 +Block 0018 [100]: 7b18fa5540acc374 +Block 0018 [101]: dcc69cc272dc099c +Block 0018 [102]: 79dddaee86527df3 +Block 0018 [103]: 71bde3173831260e +Block 0018 [104]: 553a53f6947f6ac8 +Block 0018 [105]: 385427965d6dd5c4 +Block 0018 [106]: 27c9cf044489d353 +Block 0018 [107]: 6c531adefac2ea14 +Block 0018 [108]: f484b2f5da906611 +Block 0018 [109]: 653af921e8b2dbd6 +Block 0018 [110]: 0613e26bb5977c9c +Block 0018 [111]: 2739f8817b25d1c2 +Block 0018 [112]: a561daf1a53fca8c +Block 0018 [113]: 0222fce2fd94825d +Block 0018 [114]: ff6fc60ed882c744 +Block 0018 [115]: 128a12162a13f8ba +Block 0018 [116]: b6ee7893fe13a3a2 +Block 0018 [117]: eca30b64cd3fe660 +Block 0018 [118]: d1e97f13d096b037 +Block 0018 [119]: 24010b30f6f9e86e +Block 0018 [120]: 3ec7a219f8ad7f02 +Block 0018 [121]: 921f39d9d108de43 +Block 0018 [122]: 99d4628829193a58 +Block 0018 [123]: 64edb398a333656d +Block 0018 [124]: eddc6a51f7ace163 +Block 0018 [125]: 64929280d38ce455 +Block 0018 [126]: 03510f854d5915aa +Block 0018 [127]: ee55ebedae2bcfee +Block 0019 [ 0]: 51156b1e59b20401 +Block 0019 [ 1]: a0cfc6bae59d1b2e +Block 0019 [ 2]: 74b5c25d0f7ab4b5 +Block 0019 [ 3]: 1c914ed0a727b1d0 +Block 0019 [ 4]: 72c91b18095608c3 +Block 0019 [ 5]: 715a5de0af7d9766 +Block 0019 [ 6]: 09d3d606f47b011d +Block 0019 [ 7]: 16c20f8f77c792fe +Block 0019 [ 8]: b3273069a0e10f98 +Block 0019 [ 9]: da691a5910c208e2 +Block 0019 [ 10]: cbf00e60d6a3de8d +Block 0019 [ 11]: 6278b92100223543 +Block 0019 [ 12]: 8d914b69ccc4fddb +Block 0019 [ 13]: 8d7764485ef210c7 +Block 0019 [ 14]: 38825b734f595024 +Block 0019 [ 15]: e3156907a6e20477 +Block 0019 [ 16]: 513e73ce59181e8b +Block 0019 [ 17]: 9a07ef1bb6ba4098 +Block 0019 [ 18]: 814cc7d9baa18105 +Block 0019 [ 19]: 930ff0e7542c339b +Block 0019 [ 20]: 13b4c760a11bd633 +Block 0019 [ 21]: 271e942aa0d31858 +Block 0019 [ 22]: b78d78f9b71e233a +Block 0019 [ 23]: 150cda71b9d5693b +Block 0019 [ 24]: bdf8115d41b0a85b +Block 0019 [ 25]: 3c3135d676d3c5f3 +Block 0019 [ 26]: 63a686736848d856 +Block 0019 [ 27]: ae8e8caf724b1a86 +Block 0019 [ 28]: 62b0cef1adc0882c +Block 0019 [ 29]: bd890c5b29317812 +Block 0019 [ 30]: 6ae86cf1fbf29ecc +Block 0019 [ 31]: 2363bbb76324e527 +Block 0019 [ 32]: e2155105647d2c32 +Block 0019 [ 33]: d751ac49af5305b6 +Block 0019 [ 34]: 87cd90883e5f4e4a +Block 0019 [ 35]: 1ea924e56f888b93 +Block 0019 [ 36]: c51aa77e288a938a +Block 0019 [ 37]: 08b4a2c85b40d94e +Block 0019 [ 38]: d6aa32c1ef08d3c2 +Block 0019 [ 39]: 77c3660ec5353f19 +Block 0019 [ 40]: 07c9e33daeb74568 +Block 0019 [ 41]: 9bd8f6448761708a +Block 0019 [ 42]: eb874940d021d769 +Block 0019 [ 43]: 6151f0ede0583917 +Block 0019 [ 44]: fcbb88e020140621 +Block 0019 [ 45]: 0e532e3d4bc81dc0 +Block 0019 [ 46]: 2da87c43744e95e4 +Block 0019 [ 47]: a65ccd771e8f10a1 +Block 0019 [ 48]: cd3fe32ccd77935b +Block 0019 [ 49]: 37aa26376d20f6ae +Block 0019 [ 50]: 1bf80fbff942c050 +Block 0019 [ 51]: 76b51d1eb128cbe5 +Block 0019 [ 52]: 8788a0ccf97411ae +Block 0019 [ 53]: 0628b1237ec140b3 +Block 0019 [ 54]: b2147e4a8c83871e +Block 0019 [ 55]: 181d78bd66418200 +Block 0019 [ 56]: 431ff7c40ae96867 +Block 0019 [ 57]: 88548a84877077df +Block 0019 [ 58]: 378d340893c16a54 +Block 0019 [ 59]: 2151705d33bf835a +Block 0019 [ 60]: fc79c670c5413994 +Block 0019 [ 61]: 16c5bd79dbfa8967 +Block 0019 [ 62]: da634c6f7a83f03a +Block 0019 [ 63]: b420552b64b33783 +Block 0019 [ 64]: 06ac23a0f3b74e58 +Block 0019 [ 65]: a7327fee9ac0294f +Block 0019 [ 66]: f191e1ad2217703a +Block 0019 [ 67]: e53781ab62f0818c +Block 0019 [ 68]: f72f0cd8463f8228 +Block 0019 [ 69]: ccf24473c682f82b +Block 0019 [ 70]: 4cf42b53bec904cc +Block 0019 [ 71]: ed68232d9606760e +Block 0019 [ 72]: 4ee6da37428d239c +Block 0019 [ 73]: eb519e362a49f472 +Block 0019 [ 74]: 1cb3b7e393614967 +Block 0019 [ 75]: 7498007ec5defa40 +Block 0019 [ 76]: eb29564f5a80ce82 +Block 0019 [ 77]: ab56822a376bec75 +Block 0019 [ 78]: e646e9ced0205651 +Block 0019 [ 79]: cb56383cab821219 +Block 0019 [ 80]: d983a7932f436ca4 +Block 0019 [ 81]: 5a4dc7700cfe9515 +Block 0019 [ 82]: ec041f5ca30771db +Block 0019 [ 83]: 79d89b4394c9f93f +Block 0019 [ 84]: df61390b9e6f09bb +Block 0019 [ 85]: ead82beea5c58374 +Block 0019 [ 86]: 420ec98edea624fb +Block 0019 [ 87]: 82c6ba1d1d626c10 +Block 0019 [ 88]: 5d9505914adf649b +Block 0019 [ 89]: 8772eb7b04f29a02 +Block 0019 [ 90]: 8877a6e531032495 +Block 0019 [ 91]: b959c48e2c45a09f +Block 0019 [ 92]: 98bade59b92f14df +Block 0019 [ 93]: d80e8b763aa82afe +Block 0019 [ 94]: 90a62a4170b0afd9 +Block 0019 [ 95]: 4b6592da812760c2 +Block 0019 [ 96]: a121ecfb71c1eb1c +Block 0019 [ 97]: db1a767dcea7a999 +Block 0019 [ 98]: e5da01ee35c87e2e +Block 0019 [ 99]: 94ef21581c109698 +Block 0019 [100]: 870d7a1b74517e73 +Block 0019 [101]: 21193745713987d4 +Block 0019 [102]: 9a1e85064a182266 +Block 0019 [103]: 1f9124bb0d2cb4d2 +Block 0019 [104]: ff6902372d42a1a3 +Block 0019 [105]: c98b73edf2c207c7 +Block 0019 [106]: b0f6926ce2b9ce80 +Block 0019 [107]: 0e908f07eafb7898 +Block 0019 [108]: 8cbc193b329811d2 +Block 0019 [109]: d664f2d6272d3043 +Block 0019 [110]: 9c8450d1be037ef3 +Block 0019 [111]: cda6a04729fee455 +Block 0019 [112]: 1b96fd0c0e48ee86 +Block 0019 [113]: 4edfd43166ff8978 +Block 0019 [114]: 69d814cf195ff166 +Block 0019 [115]: 93656f22239260af +Block 0019 [116]: 6bbcaeff4a7a65a5 +Block 0019 [117]: 597cfeb021b3a839 +Block 0019 [118]: 07630947c089ea53 +Block 0019 [119]: 54544623c47a5e06 +Block 0019 [120]: f7acde6ac2995642 +Block 0019 [121]: 9d72c9bd012683a5 +Block 0019 [122]: 9c79f0e0bcaa18dc +Block 0019 [123]: 7cabc98e881b8fd5 +Block 0019 [124]: ac3a9a98ad95aae3 +Block 0019 [125]: 229a698070456d46 +Block 0019 [126]: f32db81398e49b5c +Block 0019 [127]: 83ab49dd8530b868 +Block 0020 [ 0]: e85992534b52b52e +Block 0020 [ 1]: f61354ae69bf8266 +Block 0020 [ 2]: 2189370fe268fc96 +Block 0020 [ 3]: 3ac2683aeb082adc +Block 0020 [ 4]: 6675872a5f886c76 +Block 0020 [ 5]: 594cc7787962d384 +Block 0020 [ 6]: 22d19fcad3648a3b +Block 0020 [ 7]: 7cbc8c3dec075825 +Block 0020 [ 8]: ee9f47c460c21add +Block 0020 [ 9]: 3641c274622ad42a +Block 0020 [ 10]: d51e286ed408b52f +Block 0020 [ 11]: b6e079c56147eb83 +Block 0020 [ 12]: f1c571e5c2dd437a +Block 0020 [ 13]: 170fcb05bed6e518 +Block 0020 [ 14]: 993c03f74b4f2f0e +Block 0020 [ 15]: 61cf7ac5747d9e17 +Block 0020 [ 16]: 2a8f513411963e3b +Block 0020 [ 17]: 4210c7f3dca178ef +Block 0020 [ 18]: 685c12a359327905 +Block 0020 [ 19]: cbd3fe04536f559f +Block 0020 [ 20]: 48ca877575d6674e +Block 0020 [ 21]: 271824743d2baff8 +Block 0020 [ 22]: ddf15d645723b79b +Block 0020 [ 23]: 71ec825ec5920c7c +Block 0020 [ 24]: c41f5cac7e0cf7ca +Block 0020 [ 25]: 7239a2d67055bcd1 +Block 0020 [ 26]: d773129866bcca99 +Block 0020 [ 27]: 567e5380bf4023b6 +Block 0020 [ 28]: 2265061bedd0f5e2 +Block 0020 [ 29]: ae15b953f2f6075c +Block 0020 [ 30]: 3197600cca3ecc16 +Block 0020 [ 31]: 52331e2bdf3d7f35 +Block 0020 [ 32]: cc661f4d0d802264 +Block 0020 [ 33]: 4abb5d426a4c05bb +Block 0020 [ 34]: 4b4ab952f30f21d8 +Block 0020 [ 35]: e47bf862aabe3e43 +Block 0020 [ 36]: a56438e599749cff +Block 0020 [ 37]: 7e88f730db0f5a51 +Block 0020 [ 38]: 02bd9a4ecd19dca1 +Block 0020 [ 39]: 789f62a6a44aa6a0 +Block 0020 [ 40]: 608cfe89b7c64305 +Block 0020 [ 41]: 9b0a9e3421114bf1 +Block 0020 [ 42]: 550d3f8d2bd63adc +Block 0020 [ 43]: 8733fcf078850b5d +Block 0020 [ 44]: 9866076a077c6fb5 +Block 0020 [ 45]: 6fb0147fa3e62c27 +Block 0020 [ 46]: a99f21e68aee3e65 +Block 0020 [ 47]: 589f8ff0158d1a23 +Block 0020 [ 48]: 31bcc76a59d047c9 +Block 0020 [ 49]: 9acdc9ab75f3a2d5 +Block 0020 [ 50]: 6868dfabd0fcf609 +Block 0020 [ 51]: e8aeaa973386a2ae +Block 0020 [ 52]: b0d60c3ddd71dc28 +Block 0020 [ 53]: d3d1cd9f303d3566 +Block 0020 [ 54]: 135d83379d63f3d8 +Block 0020 [ 55]: 265efc06899b4ed7 +Block 0020 [ 56]: c3895da03fa54b01 +Block 0020 [ 57]: bc0827502c9f333d +Block 0020 [ 58]: 335cf97881ed15af +Block 0020 [ 59]: 6b2bf00fb0fddd51 +Block 0020 [ 60]: 79fc0cf1f58be11c +Block 0020 [ 61]: 475e5b6f80b01e2b +Block 0020 [ 62]: 5f75c519a34aabc6 +Block 0020 [ 63]: 78c40a13e5360eac +Block 0020 [ 64]: d5baae967881b47f +Block 0020 [ 65]: f5f084c072b3cb4d +Block 0020 [ 66]: a68f891b7c71f817 +Block 0020 [ 67]: 562984e5d6215c7c +Block 0020 [ 68]: 6d7bd3c4f1a4ca8b +Block 0020 [ 69]: 5e730c9b9dc46542 +Block 0020 [ 70]: a4960b310ef10938 +Block 0020 [ 71]: 63764644a4183792 +Block 0020 [ 72]: 10822c35fef06151 +Block 0020 [ 73]: e5405919f5c8c53b +Block 0020 [ 74]: 58bb97e26251352b +Block 0020 [ 75]: dfd2ba15930180ef +Block 0020 [ 76]: 4b94d59c8069f5f4 +Block 0020 [ 77]: 2783164757466e67 +Block 0020 [ 78]: 82a63e11c945edd9 +Block 0020 [ 79]: ded3949304f2233a +Block 0020 [ 80]: c63e9a32698d7505 +Block 0020 [ 81]: 05ad1f94bc351c70 +Block 0020 [ 82]: 5491ac37abc73f1a +Block 0020 [ 83]: 164f3bb7d7765b93 +Block 0020 [ 84]: eca8c78b3c984428 +Block 0020 [ 85]: 5b9fabc93ad5d131 +Block 0020 [ 86]: 7fba9cf868e3f45f +Block 0020 [ 87]: c381821248a668c9 +Block 0020 [ 88]: 2f587c8807d8b617 +Block 0020 [ 89]: 459ca25197ebb81e +Block 0020 [ 90]: 3e5affb81962a6dd +Block 0020 [ 91]: b070badc22c2dbb4 +Block 0020 [ 92]: 0733d88dca0ba766 +Block 0020 [ 93]: 902b8fbc9e12f340 +Block 0020 [ 94]: 7bc7921592e9a5ad +Block 0020 [ 95]: a8fd1807f6d40c01 +Block 0020 [ 96]: 5ae0ab72dc04eedd +Block 0020 [ 97]: fa802d4a9821620e +Block 0020 [ 98]: 8baba494675f4156 +Block 0020 [ 99]: ff5ec2b3a0d5fcdf +Block 0020 [100]: a6460e7d5190118c +Block 0020 [101]: 4444827f3408cb94 +Block 0020 [102]: fb0b35803100ae19 +Block 0020 [103]: 9eed6e1a3abadd09 +Block 0020 [104]: 9b7b0600d055aeb2 +Block 0020 [105]: 77864bc48531546a +Block 0020 [106]: a53237e754c26b62 +Block 0020 [107]: 72bbd37fa894c2f0 +Block 0020 [108]: ed3eb4b2d686977d +Block 0020 [109]: 8d89e405248d512d +Block 0020 [110]: d8fb95216b5e0fd4 +Block 0020 [111]: 33bae91d35125e6d +Block 0020 [112]: 7117375e729dc431 +Block 0020 [113]: 68c443e213bb91c3 +Block 0020 [114]: 7ac856210ec3cfa4 +Block 0020 [115]: dea14ee7fed209f1 +Block 0020 [116]: 1d7dfcc3060859c8 +Block 0020 [117]: 049728f7bddf2f37 +Block 0020 [118]: b2d10f09f53a3be9 +Block 0020 [119]: 3149a2ec78e05acc +Block 0020 [120]: b2b2e4015754424d +Block 0020 [121]: 09622de722d9b4c0 +Block 0020 [122]: ed71dda8b87529c9 +Block 0020 [123]: 53e64f56cef18c5a +Block 0020 [124]: d9c6011c8605417c +Block 0020 [125]: 0c36da5b8af617e3 +Block 0020 [126]: eae8ed3d7d9bfcee +Block 0020 [127]: 9e92d4f5cc6930b8 +Block 0021 [ 0]: 44985db9e0d0d5cd +Block 0021 [ 1]: 7956b565c894de54 +Block 0021 [ 2]: f6e635f3c0db6f2d +Block 0021 [ 3]: fa78335d39a6d106 +Block 0021 [ 4]: cd831adb42c2eeba +Block 0021 [ 5]: dce9ca3d0982e302 +Block 0021 [ 6]: a9f3c863d73ddcf3 +Block 0021 [ 7]: 5b2b8053f70e71d6 +Block 0021 [ 8]: 926e3e83f2779add +Block 0021 [ 9]: 7d12ee3c87a7e354 +Block 0021 [ 10]: 244574f45210fa3c +Block 0021 [ 11]: 9ca1f0da6e24c4ed +Block 0021 [ 12]: de23064711375377 +Block 0021 [ 13]: e6b3575a0d6530ec +Block 0021 [ 14]: cb37b6cb29c790ea +Block 0021 [ 15]: 0d7394ad50729ec1 +Block 0021 [ 16]: ee4511db89da128d +Block 0021 [ 17]: 60c263f7e0943e58 +Block 0021 [ 18]: 74ff35474102dd03 +Block 0021 [ 19]: fe8da1de78cae60a +Block 0021 [ 20]: 8378dc12ff0411a0 +Block 0021 [ 21]: ef43399ed115049b +Block 0021 [ 22]: ce60008f30dc972b +Block 0021 [ 23]: fd48adaefb079b60 +Block 0021 [ 24]: 00dc34d2f5e9e336 +Block 0021 [ 25]: a168e8e31ce93d72 +Block 0021 [ 26]: b206314a6d3852e1 +Block 0021 [ 27]: 32945a1b34ccf798 +Block 0021 [ 28]: b6a2d70441e25d74 +Block 0021 [ 29]: 5189961081aedaf3 +Block 0021 [ 30]: d089d9ae0e6ac5ed +Block 0021 [ 31]: a4e562c76ebc01c7 +Block 0021 [ 32]: 5b1498a98c21068e +Block 0021 [ 33]: 4973ca78752b0432 +Block 0021 [ 34]: 7bf9c40a387df3d9 +Block 0021 [ 35]: 55a1778719be59c3 +Block 0021 [ 36]: 5500e9f3a7369575 +Block 0021 [ 37]: c69c8ef4d7f206fb +Block 0021 [ 38]: c67db3b601347b37 +Block 0021 [ 39]: 64939709d97d89e9 +Block 0021 [ 40]: b4948a1be2068243 +Block 0021 [ 41]: a5d7fd8e568b5cf9 +Block 0021 [ 42]: 09be3ebd25b0f943 +Block 0021 [ 43]: a04507d93f31fe78 +Block 0021 [ 44]: e732c2df513e8110 +Block 0021 [ 45]: b802e0d7c1a290d4 +Block 0021 [ 46]: 4b6bf519c99ae9b0 +Block 0021 [ 47]: 85792737e8be632e +Block 0021 [ 48]: 564fc5a46434e372 +Block 0021 [ 49]: aa8ce8ef23751750 +Block 0021 [ 50]: df75fdd2692a5d60 +Block 0021 [ 51]: 1e34ef41f7558203 +Block 0021 [ 52]: 85c68a3c8d591bb2 +Block 0021 [ 53]: 95ffccb84560b190 +Block 0021 [ 54]: c6329218a27e2430 +Block 0021 [ 55]: e8156443949278ec +Block 0021 [ 56]: 44bf970f7595eeb3 +Block 0021 [ 57]: 7f4745a48d409f34 +Block 0021 [ 58]: 283bb7b02e09a7c2 +Block 0021 [ 59]: e4f46238114fdd65 +Block 0021 [ 60]: 10535b408b72de34 +Block 0021 [ 61]: 3c64d16cfd92bd3f +Block 0021 [ 62]: 398092839b05a0a7 +Block 0021 [ 63]: 5f90e13e1c2f6143 +Block 0021 [ 64]: 8801a1020f792fe7 +Block 0021 [ 65]: 22009e6c49c289c1 +Block 0021 [ 66]: 7728eed80c2a225c +Block 0021 [ 67]: ae8b07a069418ee5 +Block 0021 [ 68]: e388086ae4de33c8 +Block 0021 [ 69]: 969308d65d29f310 +Block 0021 [ 70]: e26c571c259f52dd +Block 0021 [ 71]: 2a4a8580482b06cc +Block 0021 [ 72]: 5bcb5a34fffb96df +Block 0021 [ 73]: c819c17d707e281a +Block 0021 [ 74]: 47edf648395c27e0 +Block 0021 [ 75]: 247d4a2ca0f4dc59 +Block 0021 [ 76]: 183dc03432665caf +Block 0021 [ 77]: e9475ae82292c354 +Block 0021 [ 78]: cb4fe59e9130040d +Block 0021 [ 79]: 67e9681701be322d +Block 0021 [ 80]: 238953b3c2a838bf +Block 0021 [ 81]: 9f0ccae6e48a3061 +Block 0021 [ 82]: 17c218b8b8a799a4 +Block 0021 [ 83]: 6d77392eddc506b7 +Block 0021 [ 84]: 1d871bc3cc1ffb1f +Block 0021 [ 85]: b854e20d68df0832 +Block 0021 [ 86]: 739148762da737cf +Block 0021 [ 87]: ddb87e4b0773508d +Block 0021 [ 88]: 8bfbcffb98ed3b64 +Block 0021 [ 89]: 7ee8acf2f2d2af37 +Block 0021 [ 90]: 0c1ce1ab8bf0cd37 +Block 0021 [ 91]: 0208258d0e1ce2da +Block 0021 [ 92]: e54eeb09da26d0da +Block 0021 [ 93]: 6b62121f7f624310 +Block 0021 [ 94]: 66596927e38bd357 +Block 0021 [ 95]: 22b936173f0670e0 +Block 0021 [ 96]: 42d6b168957c9057 +Block 0021 [ 97]: 2dea30b7ad13294c +Block 0021 [ 98]: ef66a9ebc13538fd +Block 0021 [ 99]: abb52bb31f79729e +Block 0021 [100]: e24db95af6322403 +Block 0021 [101]: ebdb0c859fffcd60 +Block 0021 [102]: d1a06b46377eec61 +Block 0021 [103]: e2d31763aed1ed82 +Block 0021 [104]: ffe24b1f9d5c98b7 +Block 0021 [105]: a4c2e29ed729ab15 +Block 0021 [106]: e726cc9788e7d9db +Block 0021 [107]: c97057fbbe9e7cbe +Block 0021 [108]: d62f0209ac1a3070 +Block 0021 [109]: 2cdae15e7d2da1d3 +Block 0021 [110]: d9cd90c13b3a3646 +Block 0021 [111]: 57fde2b7db2b52e5 +Block 0021 [112]: 1d5cf0b89f587221 +Block 0021 [113]: 78013d6bba9ef856 +Block 0021 [114]: 3995718292542768 +Block 0021 [115]: b1671c5b8290bac1 +Block 0021 [116]: c5a2c85029dbe997 +Block 0021 [117]: b87428b2ccbe4eb7 +Block 0021 [118]: 0dec848541a1d9c3 +Block 0021 [119]: e6c9b99297b41448 +Block 0021 [120]: 788939a6276d7865 +Block 0021 [121]: 713fb3b29fc991be +Block 0021 [122]: 321a3868527330a2 +Block 0021 [123]: 7cf41f165199b48d +Block 0021 [124]: 5fc478500e5d2f18 +Block 0021 [125]: e4f2597a03e914c3 +Block 0021 [126]: 555d961eb62d4030 +Block 0021 [127]: 8ff3daa8c0416f13 +Block 0022 [ 0]: 359ea034194e9837 +Block 0022 [ 1]: d78550ca0ab16474 +Block 0022 [ 2]: 40ba684936f5571b +Block 0022 [ 3]: d5123d27cf585581 +Block 0022 [ 4]: 2416be15e92484f4 +Block 0022 [ 5]: f3fa77ad7aaa55c1 +Block 0022 [ 6]: 583928692aec8b0e +Block 0022 [ 7]: ed3df1623952b0ea +Block 0022 [ 8]: c57e9f7c7c0bcad3 +Block 0022 [ 9]: 885ab6cd1c632566 +Block 0022 [ 10]: 1290294c7c6580ad +Block 0022 [ 11]: fa01cbb3169e5bb7 +Block 0022 [ 12]: 6ec333a957dcb800 +Block 0022 [ 13]: 9d42f781b8392cbf +Block 0022 [ 14]: 1af51dd0d78a0777 +Block 0022 [ 15]: 27ca875f7007076d +Block 0022 [ 16]: d45bd1b2b7496a3f +Block 0022 [ 17]: 71d0bc4df457c664 +Block 0022 [ 18]: cff1e3749eff7fc3 +Block 0022 [ 19]: 9547fd4c77ca5038 +Block 0022 [ 20]: 6a888adc9f599a51 +Block 0022 [ 21]: 9b809dbb86136958 +Block 0022 [ 22]: 430f8942f4df64df +Block 0022 [ 23]: 0e90501ceeb9b589 +Block 0022 [ 24]: 806e49712709b024 +Block 0022 [ 25]: 1742e2f60a8cd3a6 +Block 0022 [ 26]: dbfc8e83d1d512ad +Block 0022 [ 27]: 0cf7f132a3e20ad1 +Block 0022 [ 28]: 9e873b4c0dc1dac6 +Block 0022 [ 29]: 89945226c2272e7a +Block 0022 [ 30]: b5d181ce274a0b0c +Block 0022 [ 31]: 116b16c196bc7d09 +Block 0022 [ 32]: 2d8c6d3a492cddbb +Block 0022 [ 33]: ce8279161863b53b +Block 0022 [ 34]: b8df4aa4a78722b6 +Block 0022 [ 35]: 8c7e68419060d08c +Block 0022 [ 36]: 0d68f7355f83d095 +Block 0022 [ 37]: e0d6b93af3c1f8e8 +Block 0022 [ 38]: 8e7ab9c04b9304f9 +Block 0022 [ 39]: 2e1aea547be324fa +Block 0022 [ 40]: 452ee11bfe9775f2 +Block 0022 [ 41]: b40b63ca6ca959f7 +Block 0022 [ 42]: c7e2522bdf39ee22 +Block 0022 [ 43]: 3252b7ea0f42c364 +Block 0022 [ 44]: bf83748abdd885a8 +Block 0022 [ 45]: 3a41fbd16b55e560 +Block 0022 [ 46]: 1bdc3ad30ab8281e +Block 0022 [ 47]: f43e3102c2b2f31e +Block 0022 [ 48]: aaf357cba9b1fcdf +Block 0022 [ 49]: 89dd304402be8aa2 +Block 0022 [ 50]: 0f096417aa7934f0 +Block 0022 [ 51]: 9ed6d449bcbb0f4a +Block 0022 [ 52]: ec6fbbd7257fa97c +Block 0022 [ 53]: d258163a989c0cb1 +Block 0022 [ 54]: f87de0405bfd2a85 +Block 0022 [ 55]: 8fadee635ca3bf8b +Block 0022 [ 56]: 8c2b49b3389dd1b6 +Block 0022 [ 57]: 0965075129b75a38 +Block 0022 [ 58]: 5ca5e173f8903715 +Block 0022 [ 59]: 45eff6a7d24a1f97 +Block 0022 [ 60]: 9b51a40c8c8988c6 +Block 0022 [ 61]: 637b89f48ff3fec8 +Block 0022 [ 62]: 728f9d6f9bb2b21a +Block 0022 [ 63]: 89bc904decbb53b6 +Block 0022 [ 64]: db8e98e0e80c8c9b +Block 0022 [ 65]: 6a4f479b00afcdf0 +Block 0022 [ 66]: d3746d207db7569a +Block 0022 [ 67]: 708951244e5efdb3 +Block 0022 [ 68]: 0e39a86b20244617 +Block 0022 [ 69]: 89c550440a864e0d +Block 0022 [ 70]: 18f302e1690bdddc +Block 0022 [ 71]: d4d88aeb6aa90eb3 +Block 0022 [ 72]: 3ed14399fd19860a +Block 0022 [ 73]: 36771b7d82612ee4 +Block 0022 [ 74]: b316cc4bdae219f0 +Block 0022 [ 75]: 0912a4991e79007e +Block 0022 [ 76]: 4855b6f6cc5af6c8 +Block 0022 [ 77]: d2204ba86d9e3306 +Block 0022 [ 78]: 7c4afeed2a1d6ea8 +Block 0022 [ 79]: 3a23c2802e4cd40e +Block 0022 [ 80]: c22a2e7614514d95 +Block 0022 [ 81]: f313d4c25b03d71c +Block 0022 [ 82]: 479ca05314ec2c7d +Block 0022 [ 83]: 97c41ff46cfafc0a +Block 0022 [ 84]: a60ff47aba2ce596 +Block 0022 [ 85]: b391956a26acb634 +Block 0022 [ 86]: cdfe906b5c69ffc4 +Block 0022 [ 87]: 4f6721d63000152a +Block 0022 [ 88]: 5231ddf2b368af61 +Block 0022 [ 89]: 57a45b3ca6f71734 +Block 0022 [ 90]: 81d6271b2f60cabd +Block 0022 [ 91]: 2950a00d07534dec +Block 0022 [ 92]: 74e039f97e8aa73b +Block 0022 [ 93]: b4b2578228ce5af6 +Block 0022 [ 94]: 7b8a152b75883d1d +Block 0022 [ 95]: d207419167a96c24 +Block 0022 [ 96]: 0a523f2a8a05ae17 +Block 0022 [ 97]: b7f339aa5cc88542 +Block 0022 [ 98]: 9df6fd53a0623750 +Block 0022 [ 99]: cc1f852330d28cbd +Block 0022 [100]: 1d0a822c3693df89 +Block 0022 [101]: 6aaf30c9ddcdfc08 +Block 0022 [102]: 7ef3d4bec6351a5b +Block 0022 [103]: 6bba1464a14c1035 +Block 0022 [104]: 39c41d54e5f6f1b4 +Block 0022 [105]: 653ccaab162e37f1 +Block 0022 [106]: fa8694d3ba064670 +Block 0022 [107]: 910c761a8683388c +Block 0022 [108]: a733cb24de424eea +Block 0022 [109]: d1898453e8fa3db0 +Block 0022 [110]: 017ce73367ee47ea +Block 0022 [111]: 558eb8c4c3d20b56 +Block 0022 [112]: 969ac56f171863bc +Block 0022 [113]: 0858ecb8b8c6eb6b +Block 0022 [114]: deb137af8f3eda8c +Block 0022 [115]: 0957d06a65ca1dc4 +Block 0022 [116]: 05f09e10f775c81b +Block 0022 [117]: 2b076311329a4de4 +Block 0022 [118]: 756805c001922f19 +Block 0022 [119]: 05362ff8a52ebdba +Block 0022 [120]: 6ea323dd5b100acd +Block 0022 [121]: 28356b4faf87aca5 +Block 0022 [122]: 0dcdf79812e24903 +Block 0022 [123]: 2ad46475db731dfe +Block 0022 [124]: ed69c60c6bd370e2 +Block 0022 [125]: d2278b5b0062c149 +Block 0022 [126]: f4beefe92919c42f +Block 0022 [127]: c74f504d0b914a3b +Block 0023 [ 0]: 9ecdaf0f036d9ce1 +Block 0023 [ 1]: 15bb004c9a72d549 +Block 0023 [ 2]: 98c6ea40c940ce55 +Block 0023 [ 3]: 22ddd937c9c8d11c +Block 0023 [ 4]: 47479edda8ec7d63 +Block 0023 [ 5]: 3170bd3d10b6085e +Block 0023 [ 6]: c4409c14ffbc7e23 +Block 0023 [ 7]: a23c1d3d828c0386 +Block 0023 [ 8]: 9be7bbe3ce098999 +Block 0023 [ 9]: c24d972e14b96d6c +Block 0023 [ 10]: 5cee6a54dd460a3a +Block 0023 [ 11]: a49b4acbe7c13c60 +Block 0023 [ 12]: 3d39dc57c0c1d9d4 +Block 0023 [ 13]: 393a08415acbe137 +Block 0023 [ 14]: 6c12cd1742129218 +Block 0023 [ 15]: 34c456e39a4db7a5 +Block 0023 [ 16]: 77ce8fbc96d845ad +Block 0023 [ 17]: 5edee26d8cd5eca7 +Block 0023 [ 18]: 61ec669dea36a9b2 +Block 0023 [ 19]: 4787a5cc99a772bf +Block 0023 [ 20]: c73394f2ccffbc07 +Block 0023 [ 21]: 671d17c8d052dfed +Block 0023 [ 22]: b1b88ea17fbfd701 +Block 0023 [ 23]: 9959c72ac7eec701 +Block 0023 [ 24]: c3cd2df338951e0f +Block 0023 [ 25]: ddd17a9cde144bbf +Block 0023 [ 26]: a911e79da9825e9d +Block 0023 [ 27]: e0a95e40de7e7382 +Block 0023 [ 28]: cc2dc82e6831f869 +Block 0023 [ 29]: b6e5f24cd89351c5 +Block 0023 [ 30]: 69427de8682af684 +Block 0023 [ 31]: 6de1377357db2537 +Block 0023 [ 32]: e64c80f7e437a546 +Block 0023 [ 33]: 2241320a7b0aa93d +Block 0023 [ 34]: 7d010e32a1d2f256 +Block 0023 [ 35]: 48f7fae3620d0480 +Block 0023 [ 36]: 54031a0fd9d37022 +Block 0023 [ 37]: c983112ebbb5577b +Block 0023 [ 38]: 7247d8d4af455e74 +Block 0023 [ 39]: fa37b1bf19707b2b +Block 0023 [ 40]: 1c058b748007d18f +Block 0023 [ 41]: 2329b9492da173f6 +Block 0023 [ 42]: a8041bb66c9d96ce +Block 0023 [ 43]: bb83baef9acfc540 +Block 0023 [ 44]: 73408477183e2d79 +Block 0023 [ 45]: 3add56150f9d7204 +Block 0023 [ 46]: a5f7f5331c633042 +Block 0023 [ 47]: 9daeca7cf30a5c23 +Block 0023 [ 48]: 2cc58e8b2baa07c3 +Block 0023 [ 49]: e61a53aef76f133a +Block 0023 [ 50]: ebd6b3e48a056905 +Block 0023 [ 51]: b39932f0b836380c +Block 0023 [ 52]: 3e09ce899bff870b +Block 0023 [ 53]: 112e5f19f35c392f +Block 0023 [ 54]: 90748bbcb7404a8c +Block 0023 [ 55]: 27cef22f1eab2918 +Block 0023 [ 56]: 0093c1bff0ae57c3 +Block 0023 [ 57]: 75fb7bc0725e013c +Block 0023 [ 58]: 8c8599b959463f3b +Block 0023 [ 59]: b6542538c6a52c8a +Block 0023 [ 60]: b24a4df10594c149 +Block 0023 [ 61]: 5c7cee7c1cb8c0ab +Block 0023 [ 62]: c340366544c200ed +Block 0023 [ 63]: 4321cb1f4b967b2a +Block 0023 [ 64]: 374c3b926409f144 +Block 0023 [ 65]: 4aaafaae953a4c57 +Block 0023 [ 66]: f6a5da47b793e418 +Block 0023 [ 67]: 99708b9fb00f25d6 +Block 0023 [ 68]: da07362b0cc5dbc0 +Block 0023 [ 69]: 988a57c3161a6c40 +Block 0023 [ 70]: 1d1cc8be2f734650 +Block 0023 [ 71]: a45ad1cae81bd6e2 +Block 0023 [ 72]: 95bca8f0129ec299 +Block 0023 [ 73]: 4ab488175d7722db +Block 0023 [ 74]: 1a7e32485afd1c14 +Block 0023 [ 75]: 489731ed70ac12f5 +Block 0023 [ 76]: f4d27e08c22a40b3 +Block 0023 [ 77]: b5d68acf7a4254e0 +Block 0023 [ 78]: 8a6caec3444e603d +Block 0023 [ 79]: 7c0e44ba09f71c7d +Block 0023 [ 80]: c9b6b103b57878e1 +Block 0023 [ 81]: ebbc7a32b28ab234 +Block 0023 [ 82]: 17219f0386f3711f +Block 0023 [ 83]: 916a5dae24a64bf1 +Block 0023 [ 84]: aa935a0cccf96eae +Block 0023 [ 85]: 1040a92200392b52 +Block 0023 [ 86]: 352255483f46b903 +Block 0023 [ 87]: a978a95cb8cb0690 +Block 0023 [ 88]: 56c1ab16770cbc9b +Block 0023 [ 89]: 10ec2e950f5019a9 +Block 0023 [ 90]: 5e63ede0ae88dd9c +Block 0023 [ 91]: 70edb6a07f8797cf +Block 0023 [ 92]: 380536c55eb0b657 +Block 0023 [ 93]: 99c90414e820bfe8 +Block 0023 [ 94]: 47d46b72322e67c8 +Block 0023 [ 95]: fb848a7235f26a57 +Block 0023 [ 96]: 554aca7cd22b15ac +Block 0023 [ 97]: 379eeafe44ac5c97 +Block 0023 [ 98]: 45bd5bf613ad3fbc +Block 0023 [ 99]: 4c075438f295c44b +Block 0023 [100]: 7a45259b4559b474 +Block 0023 [101]: 92e838e8f0d7514e +Block 0023 [102]: aafdbbc3728f02e5 +Block 0023 [103]: a8e5e2bde478bae6 +Block 0023 [104]: 4c04ee73d4039bab +Block 0023 [105]: 586028282e5a2b3b +Block 0023 [106]: 022ad23278d18381 +Block 0023 [107]: cf51eb4d0d0bee7a +Block 0023 [108]: c7899e6732468800 +Block 0023 [109]: 82ffce02be29df97 +Block 0023 [110]: 6e036a2149410e95 +Block 0023 [111]: e0fbf0b38edbd512 +Block 0023 [112]: 334146973c3d6796 +Block 0023 [113]: 8ee18e6e829696dc +Block 0023 [114]: df103a940c74bbb8 +Block 0023 [115]: 8a46aa1191367d55 +Block 0023 [116]: f6a251ccb3620d10 +Block 0023 [117]: 7d3c88419220f214 +Block 0023 [118]: 26d3efe32bfedbf4 +Block 0023 [119]: 358e3d026b5f1178 +Block 0023 [120]: 32fa00e6c78ead6a +Block 0023 [121]: fcfdf868bc542c1a +Block 0023 [122]: f782e4caddde1d36 +Block 0023 [123]: 063cc660d7e819ca +Block 0023 [124]: 227a62857637cb1f +Block 0023 [125]: 82f3260fc275ab7a +Block 0023 [126]: 5b258ef618e41d5a +Block 0023 [127]: 9fb85be580e013c8 +Block 0024 [ 0]: 4990efe3269d5190 +Block 0024 [ 1]: de2c7f2e0c863a82 +Block 0024 [ 2]: 2fc9b3b341c04b15 +Block 0024 [ 3]: 3cf7381ab954a760 +Block 0024 [ 4]: 3408457092a69446 +Block 0024 [ 5]: 07d5d09002020f66 +Block 0024 [ 6]: 6f91ac20f06809b2 +Block 0024 [ 7]: 7b7a1387adfd44ca +Block 0024 [ 8]: 195bd6087a492267 +Block 0024 [ 9]: fd32ea59e44f93e0 +Block 0024 [ 10]: d1a3ec8e6a5a6f05 +Block 0024 [ 11]: 7f4c56252644fb33 +Block 0024 [ 12]: 8c4222c5464aa757 +Block 0024 [ 13]: c5326c5b79c1a2ba +Block 0024 [ 14]: 69afb22efed068e0 +Block 0024 [ 15]: 2603fd0ad02aaefd +Block 0024 [ 16]: c6edb5b04d0b579b +Block 0024 [ 17]: 9c68f8b1f3174966 +Block 0024 [ 18]: 79cf677075fba1d4 +Block 0024 [ 19]: 06e7cd18bef5a8bb +Block 0024 [ 20]: ccfc328dd4eebf8c +Block 0024 [ 21]: eba236e2136dfb89 +Block 0024 [ 22]: 7a67510261cc7eb1 +Block 0024 [ 23]: 6bd8b5df55f8b189 +Block 0024 [ 24]: 3305f90891829603 +Block 0024 [ 25]: 57e22d3264c1c974 +Block 0024 [ 26]: e918af423b0e7ace +Block 0024 [ 27]: a14c87f217094fe6 +Block 0024 [ 28]: 5e1313148ffaa2f6 +Block 0024 [ 29]: a00b46a3ed740d35 +Block 0024 [ 30]: 6472f8cb7670d61f +Block 0024 [ 31]: 6212299758ed000b +Block 0024 [ 32]: d2c50ca6a7359192 +Block 0024 [ 33]: 4e4d28d7a3810410 +Block 0024 [ 34]: 4238403cbcc1811d +Block 0024 [ 35]: 25b212262b1f6f34 +Block 0024 [ 36]: ef1f75a6346ada54 +Block 0024 [ 37]: 0f525c2ea4c32274 +Block 0024 [ 38]: 6c9395bfdaa1dbcf +Block 0024 [ 39]: c546ecc90cf6e07f +Block 0024 [ 40]: fd5b00b32147080a +Block 0024 [ 41]: 1c334957e7f45b7a +Block 0024 [ 42]: 88746c5e040809f1 +Block 0024 [ 43]: 1ac21097902fe27f +Block 0024 [ 44]: b50743a5490fc1dd +Block 0024 [ 45]: aeb2f2e0a3e6963a +Block 0024 [ 46]: 50e7629dc0fca8d4 +Block 0024 [ 47]: 634eb720976d1003 +Block 0024 [ 48]: cf926f81c7565370 +Block 0024 [ 49]: 04de21ea98c18906 +Block 0024 [ 50]: 09142b802328cfa8 +Block 0024 [ 51]: 152ef632d6c6ae7a +Block 0024 [ 52]: 9648d7f59744787e +Block 0024 [ 53]: 91bd54a13baa8696 +Block 0024 [ 54]: cadc45d3793b4719 +Block 0024 [ 55]: bdf2781f42523f09 +Block 0024 [ 56]: 78d8660f7981b790 +Block 0024 [ 57]: 4eda5ebdf5661493 +Block 0024 [ 58]: c254878496ae6395 +Block 0024 [ 59]: bdb4be227efa75ec +Block 0024 [ 60]: f32b3ef66ddd6a1e +Block 0024 [ 61]: 48ee09f020365f7c +Block 0024 [ 62]: ca415ffea519bff8 +Block 0024 [ 63]: c9cf7b1e7d3c05c2 +Block 0024 [ 64]: 37c77300cea00abe +Block 0024 [ 65]: 36e86532cac039e1 +Block 0024 [ 66]: 7b6e3d9501dcb1cc +Block 0024 [ 67]: 6a0bb5ff356e9afe +Block 0024 [ 68]: b874304d7cb5fc40 +Block 0024 [ 69]: 2dd866d1436d39b3 +Block 0024 [ 70]: dbb43f77cad44c96 +Block 0024 [ 71]: c6b3721f8d6602b1 +Block 0024 [ 72]: c4b3809a4a4f408e +Block 0024 [ 73]: a51c769bdfeaf335 +Block 0024 [ 74]: 41081e8888f060df +Block 0024 [ 75]: 4d2ce53a9c342b5d +Block 0024 [ 76]: 5dad598c2776ba1a +Block 0024 [ 77]: c4775d2b1722a14f +Block 0024 [ 78]: 504200a6ac05d630 +Block 0024 [ 79]: 111b8bafc6c72466 +Block 0024 [ 80]: f5a33557e079957e +Block 0024 [ 81]: 5804085cc0549387 +Block 0024 [ 82]: bdaa7d6a7d1e7d1c +Block 0024 [ 83]: a6b9fad1ceb81824 +Block 0024 [ 84]: 899a505eb3391c27 +Block 0024 [ 85]: b3b40c70b9c66298 +Block 0024 [ 86]: 3eade0f6f5a9a69a +Block 0024 [ 87]: 8248d3340a7e619b +Block 0024 [ 88]: 16992f40e4158081 +Block 0024 [ 89]: 88499feb90e076f9 +Block 0024 [ 90]: d354bea70857875e +Block 0024 [ 91]: 19e861311fd36926 +Block 0024 [ 92]: 6f7790ebb65649b4 +Block 0024 [ 93]: cc7c3b143901e609 +Block 0024 [ 94]: 5cec2c0da25e936b +Block 0024 [ 95]: acd296bbbdeee1e2 +Block 0024 [ 96]: 402648821a389d58 +Block 0024 [ 97]: e890e079b9bd16d7 +Block 0024 [ 98]: 6acd81b06dec0c16 +Block 0024 [ 99]: ea87dab66e6fc421 +Block 0024 [100]: 0f3bbf2dc7c30982 +Block 0024 [101]: 3d1587feca99c0c4 +Block 0024 [102]: e8f6a80acf77a2c9 +Block 0024 [103]: 8814ba98d498427d +Block 0024 [104]: 4a34a60453fb977d +Block 0024 [105]: d04ccdd2f9a3f548 +Block 0024 [106]: 8c34e54ce961698e +Block 0024 [107]: 836c4707f77a4aae +Block 0024 [108]: 7fabdff455eace22 +Block 0024 [109]: 571b7698bdee8f84 +Block 0024 [110]: eb4100011b8ea9c3 +Block 0024 [111]: 40d475bcd627d0d3 +Block 0024 [112]: 32015db9bfea8194 +Block 0024 [113]: 37ef2a82ea82a822 +Block 0024 [114]: fe1032d3b905860d +Block 0024 [115]: a64397eda2c55368 +Block 0024 [116]: 615d50ceaf17c2ad +Block 0024 [117]: 59834237582754bf +Block 0024 [118]: a8c401a6a54999b0 +Block 0024 [119]: 59bb3ab34c05bda7 +Block 0024 [120]: 4e6a17e54f84868a +Block 0024 [121]: f189612ce7bfb6a6 +Block 0024 [122]: f232b4146d455183 +Block 0024 [123]: 298ca1081e693861 +Block 0024 [124]: 4c1982293ae974f1 +Block 0024 [125]: be436e96e2b3315c +Block 0024 [126]: 8c202ac8e574a446 +Block 0024 [127]: a2e7143eac000937 +Block 0025 [ 0]: 83fb6773de7ee2a3 +Block 0025 [ 1]: 2f3f9a6e1097d055 +Block 0025 [ 2]: 4c58fde56056258c +Block 0025 [ 3]: 4800796ee0c17895 +Block 0025 [ 4]: 7b7b6e9b672619b5 +Block 0025 [ 5]: 34f5a9e9f27f1a0b +Block 0025 [ 6]: 98b0e4c973e59b81 +Block 0025 [ 7]: 6d6001fffd3a09e1 +Block 0025 [ 8]: d7eaaebdcaeed771 +Block 0025 [ 9]: e88750c97cc45fbc +Block 0025 [ 10]: 75b10f14afb791a3 +Block 0025 [ 11]: 0f1a1b3808dbfa46 +Block 0025 [ 12]: cc35f51b6c288799 +Block 0025 [ 13]: 2926ff23d9fc1949 +Block 0025 [ 14]: 58254c89114006d6 +Block 0025 [ 15]: 9b899c4474155956 +Block 0025 [ 16]: 9f0470e645231c0b +Block 0025 [ 17]: a8e8d9fd81d99af7 +Block 0025 [ 18]: e8f5cc60fa860462 +Block 0025 [ 19]: fe355997e93e244c +Block 0025 [ 20]: 57452ab41cb95712 +Block 0025 [ 21]: 2b26bc00f6214e40 +Block 0025 [ 22]: 44ef8f293b8f1c11 +Block 0025 [ 23]: 089ae8103f3d4570 +Block 0025 [ 24]: 5d494295b9843491 +Block 0025 [ 25]: f1cb3831ffac7950 +Block 0025 [ 26]: 953d0f93faff8597 +Block 0025 [ 27]: ebd32513d2d9e83d +Block 0025 [ 28]: e00e64064b795a05 +Block 0025 [ 29]: cc1ce85b988b2930 +Block 0025 [ 30]: 31b45b9e5913546a +Block 0025 [ 31]: fbc8663cbc5b3c8a +Block 0025 [ 32]: a0874e3d61998c17 +Block 0025 [ 33]: 2366253e2ce491a5 +Block 0025 [ 34]: 0dfa45c95520aade +Block 0025 [ 35]: cec2ff4872e41c30 +Block 0025 [ 36]: 6321e4ff66dacaa0 +Block 0025 [ 37]: d0a5ec07b94fa10b +Block 0025 [ 38]: ccf37ab4f06dc63c +Block 0025 [ 39]: 56c3a31b8a4df791 +Block 0025 [ 40]: 83fff10db0078edc +Block 0025 [ 41]: 8f1a6a3fad3deee0 +Block 0025 [ 42]: 355f982b93c0f558 +Block 0025 [ 43]: 2a104e98645f490a +Block 0025 [ 44]: 26329d3151f97586 +Block 0025 [ 45]: f237846adf58e843 +Block 0025 [ 46]: d1d0d81185241166 +Block 0025 [ 47]: bd0cd9d7753072f7 +Block 0025 [ 48]: 14d4456cea2d67f9 +Block 0025 [ 49]: b81c2dc3628c7a8c +Block 0025 [ 50]: 8377344995ea8f48 +Block 0025 [ 51]: a5fbdca45d23262e +Block 0025 [ 52]: 5405165af97282a2 +Block 0025 [ 53]: d7d8c5a6ef3d9636 +Block 0025 [ 54]: 7394338a30f9141d +Block 0025 [ 55]: 064f55f35c47c381 +Block 0025 [ 56]: 367133384ae9180c +Block 0025 [ 57]: c74c9847614cfcb5 +Block 0025 [ 58]: 69d72fce07cbfdda +Block 0025 [ 59]: 6290c4b0a2e5e4d7 +Block 0025 [ 60]: d34cf7fb1b36f0e7 +Block 0025 [ 61]: 79107022ff338846 +Block 0025 [ 62]: 59959d367d0afc7c +Block 0025 [ 63]: 2f4345e5dd70a2e0 +Block 0025 [ 64]: aa6cbc0ca3123b15 +Block 0025 [ 65]: 182754d354e32e42 +Block 0025 [ 66]: 42408d91ef9bef4e +Block 0025 [ 67]: 213a0d2a2221598f +Block 0025 [ 68]: 0c4db076adcf874d +Block 0025 [ 69]: f5f16511a505658b +Block 0025 [ 70]: afe3a3731826ea43 +Block 0025 [ 71]: e21e33ce36edcb3a +Block 0025 [ 72]: 5cc73976cd2aaeaa +Block 0025 [ 73]: f275f27ca3e29acf +Block 0025 [ 74]: f3ef40acfe1d2b26 +Block 0025 [ 75]: 0ca134ce6045384d +Block 0025 [ 76]: 19b70338de252080 +Block 0025 [ 77]: 494a7e5b797427f4 +Block 0025 [ 78]: 1e79faba6fe15775 +Block 0025 [ 79]: d5f42e805029c0e3 +Block 0025 [ 80]: 2de1c5e2403fbc13 +Block 0025 [ 81]: 4a29e0cb9a65a3dc +Block 0025 [ 82]: 36c4842e37c2e07d +Block 0025 [ 83]: 026ae795b0a9f8b8 +Block 0025 [ 84]: 28a421d6a6cb2dbf +Block 0025 [ 85]: 95ad6b9ad86aa9ab +Block 0025 [ 86]: 5032fa51cd430007 +Block 0025 [ 87]: f78595ca07627684 +Block 0025 [ 88]: 465d8ed01526d77d +Block 0025 [ 89]: ac72274a02829c93 +Block 0025 [ 90]: 3de7df864a1e4f02 +Block 0025 [ 91]: 7ffa83d36ca1d61f +Block 0025 [ 92]: 15168df4da4775bf +Block 0025 [ 93]: ee9c34ba1a22ea61 +Block 0025 [ 94]: 4e3f3840f0d16db6 +Block 0025 [ 95]: b35fc77b895c3520 +Block 0025 [ 96]: d61bd96d8e1eaf08 +Block 0025 [ 97]: 22e57bbd848a9a73 +Block 0025 [ 98]: b693b10703481d23 +Block 0025 [ 99]: e7ad60adc325637d +Block 0025 [100]: 5fc51fe5584dc47b +Block 0025 [101]: 69fc11a044cb4d63 +Block 0025 [102]: 848d29cf57a45cc5 +Block 0025 [103]: 9e6696565e4584c4 +Block 0025 [104]: b597941cf768d408 +Block 0025 [105]: 6bed7072ef2144c7 +Block 0025 [106]: 776e13b6104dabb2 +Block 0025 [107]: 17666dc6fbe4840e +Block 0025 [108]: 9cf43d0ee9a9e822 +Block 0025 [109]: a1c11bda92e88ebb +Block 0025 [110]: 578bae4e9c1422ab +Block 0025 [111]: 8e0da066b8d902cb +Block 0025 [112]: e0a073edaf4ce1c3 +Block 0025 [113]: 3196d4508872812c +Block 0025 [114]: 7e7556b7c1b17f23 +Block 0025 [115]: d6ac91eee3bb6d46 +Block 0025 [116]: cccf91331656dff0 +Block 0025 [117]: ab87613dd7be1b14 +Block 0025 [118]: 2aad5227e58efc81 +Block 0025 [119]: 5018f9becceee5b0 +Block 0025 [120]: 49fe66a791ae8a46 +Block 0025 [121]: 299180a2768e190e +Block 0025 [122]: 76ae76a2fc1f75c7 +Block 0025 [123]: 7a4df9344eb55360 +Block 0025 [124]: 8e5772c8e118692b +Block 0025 [125]: 8408d3b455eb9437 +Block 0025 [126]: f9c9413266d6934a +Block 0025 [127]: e7eef672fbce6f1c +Block 0026 [ 0]: 1d7f4927cf91b037 +Block 0026 [ 1]: b36f320a28dfa026 +Block 0026 [ 2]: 4ad8b0cf2627ee42 +Block 0026 [ 3]: 0e38890d5df29444 +Block 0026 [ 4]: cf130312e3b781c0 +Block 0026 [ 5]: f27a461c0c52ba67 +Block 0026 [ 6]: 8830659de72797b6 +Block 0026 [ 7]: ec5a1697788f2be5 +Block 0026 [ 8]: 3324bcfa95092292 +Block 0026 [ 9]: 5444e023e975233e +Block 0026 [ 10]: 17f17a88758745a6 +Block 0026 [ 11]: 905851cf4421945c +Block 0026 [ 12]: 425408f96645858a +Block 0026 [ 13]: b68e85073ba4560a +Block 0026 [ 14]: 8eb4e618a957c503 +Block 0026 [ 15]: 305d2389814e00ae +Block 0026 [ 16]: 1613bfd014f3863b +Block 0026 [ 17]: 124258b390774c76 +Block 0026 [ 18]: f54f555e709aed15 +Block 0026 [ 19]: 7851eb99d58f2d46 +Block 0026 [ 20]: 8e09eca1320c689f +Block 0026 [ 21]: aee8d938c18a8c86 +Block 0026 [ 22]: 4afe50ff7d4bee03 +Block 0026 [ 23]: 11bf5c86116564c1 +Block 0026 [ 24]: 2d5f27ffac73811f +Block 0026 [ 25]: 0fa8c081b90eb9b2 +Block 0026 [ 26]: e2ce79be549933e7 +Block 0026 [ 27]: 1ea09ba7396e97e4 +Block 0026 [ 28]: 4b15fefc4863125a +Block 0026 [ 29]: 7758686a57392a75 +Block 0026 [ 30]: 6c43ead08b17d18a +Block 0026 [ 31]: f9d1a4e2bf73bc26 +Block 0026 [ 32]: 7ccef85867766cd1 +Block 0026 [ 33]: 2bb5ded12fe3e02a +Block 0026 [ 34]: bec9fda8bfa42f84 +Block 0026 [ 35]: 478be943487266c6 +Block 0026 [ 36]: 9002b673f9edfd55 +Block 0026 [ 37]: ddf42d90f8a74261 +Block 0026 [ 38]: 20b556c2f2e0e6a3 +Block 0026 [ 39]: d42493e8a60bc244 +Block 0026 [ 40]: 01465bcb695bc90c +Block 0026 [ 41]: 3a7c2d16c3992ad4 +Block 0026 [ 42]: 6308ef7380ab5f06 +Block 0026 [ 43]: 001a0e8c275832fd +Block 0026 [ 44]: e44a6b19e4d42cd8 +Block 0026 [ 45]: 4a2ba8cd72cbb52f +Block 0026 [ 46]: ace3f2f2acdf83fb +Block 0026 [ 47]: 26ac91bbae138132 +Block 0026 [ 48]: 7a2a681a01b40d1f +Block 0026 [ 49]: 7531b75bf6547ded +Block 0026 [ 50]: a3635ecd6aeec9b3 +Block 0026 [ 51]: 41243a17c9b41fe6 +Block 0026 [ 52]: c8d4da0b24b4544b +Block 0026 [ 53]: 3fada7d00f7414b3 +Block 0026 [ 54]: 8010bd0c0fdac063 +Block 0026 [ 55]: 230dbac6bc804ba7 +Block 0026 [ 56]: 70b351bdfd17062c +Block 0026 [ 57]: c40153db32947b71 +Block 0026 [ 58]: 32303a32a5423c24 +Block 0026 [ 59]: cc7b4a7e222623f5 +Block 0026 [ 60]: 0be07177569be4b6 +Block 0026 [ 61]: 09626cfd002e5705 +Block 0026 [ 62]: a2723a44848ddf64 +Block 0026 [ 63]: 226e8e82c0a835c0 +Block 0026 [ 64]: 4b2b3d701a2de1e5 +Block 0026 [ 65]: 7cd8435a86fad908 +Block 0026 [ 66]: 37b6e6c9d066e67f +Block 0026 [ 67]: db0cc96460d11f0b +Block 0026 [ 68]: 9f2dac0a2723c7c3 +Block 0026 [ 69]: 0e57f0560eafb201 +Block 0026 [ 70]: d771d6806fb188d9 +Block 0026 [ 71]: 5929952563b4ed22 +Block 0026 [ 72]: 994276262b7e4ab1 +Block 0026 [ 73]: befac9989fed281f +Block 0026 [ 74]: 16f13e5571e13be3 +Block 0026 [ 75]: 06cd705ada9f5c1c +Block 0026 [ 76]: 76763ad787351b02 +Block 0026 [ 77]: 2511361d83fe6e48 +Block 0026 [ 78]: b17e849b57e3ccd7 +Block 0026 [ 79]: 5b8eaf1c99be1ae0 +Block 0026 [ 80]: b6388ba2df9110d7 +Block 0026 [ 81]: 7f950313727a4b9c +Block 0026 [ 82]: 03dbf52f47e9ab21 +Block 0026 [ 83]: 1665660ce900a15e +Block 0026 [ 84]: 399e52875c07ed05 +Block 0026 [ 85]: 9eebf23eb3158a72 +Block 0026 [ 86]: 39efc5fb6b50e8ee +Block 0026 [ 87]: 02f7af4888f1fe47 +Block 0026 [ 88]: da6f6b90c0824864 +Block 0026 [ 89]: e871096ed23c51c0 +Block 0026 [ 90]: 435550640fd29909 +Block 0026 [ 91]: 9e2000a4691e2c7e +Block 0026 [ 92]: 53b2e98931e022af +Block 0026 [ 93]: 8548b40e0782ef18 +Block 0026 [ 94]: a343286e3be791e9 +Block 0026 [ 95]: d4a4262e32be6ded +Block 0026 [ 96]: d1451f414ea309f6 +Block 0026 [ 97]: 1caa15323232d92d +Block 0026 [ 98]: 7998831dffde384f +Block 0026 [ 99]: 3f6edbdb62446b2e +Block 0026 [100]: ef7cb7f074dc2fbd +Block 0026 [101]: 878afe5b75496afb +Block 0026 [102]: 91ff31fd58fe0def +Block 0026 [103]: c362ee5cd095f0e2 +Block 0026 [104]: d0e01f0cd9c2c496 +Block 0026 [105]: 49ea9bdcf1af8406 +Block 0026 [106]: 82e7e34660e1af7f +Block 0026 [107]: 0418d8471413ebf7 +Block 0026 [108]: 0fc73170d4dd1bc4 +Block 0026 [109]: 09c9249f15bfd20f +Block 0026 [110]: 1e173eb678957dcf +Block 0026 [111]: bf4cbf2f50b1638e +Block 0026 [112]: 9b6b09ffe7ad97b8 +Block 0026 [113]: 333156bf88027c1d +Block 0026 [114]: a24da656f801a65b +Block 0026 [115]: 521e82065aaed63f +Block 0026 [116]: 8a612eac6157b096 +Block 0026 [117]: 2aed99d6d7bbfd85 +Block 0026 [118]: 347cb6498a5f56fb +Block 0026 [119]: dcfa294054e70dbd +Block 0026 [120]: da4b9b4be8d545ee +Block 0026 [121]: b70a983c8de64987 +Block 0026 [122]: cb6a7222c7f95960 +Block 0026 [123]: 3f434acae0d95acf +Block 0026 [124]: 1ef173dee9eb44aa +Block 0026 [125]: 99356ed40eb7f3b8 +Block 0026 [126]: ba6b9c1c50492163 +Block 0026 [127]: e16309f90bcac92f +Block 0027 [ 0]: 439badfadf3479ca +Block 0027 [ 1]: 10f2cab73da23168 +Block 0027 [ 2]: 14ae9e557289684e +Block 0027 [ 3]: 6dad6cd6175b9497 +Block 0027 [ 4]: 102397f5c9c719e0 +Block 0027 [ 5]: a7eec5535492fd55 +Block 0027 [ 6]: 0b07bfcc45032b83 +Block 0027 [ 7]: 44fc1bcecf90e4e9 +Block 0027 [ 8]: eed8c2e02524204f +Block 0027 [ 9]: 935100ae85d08641 +Block 0027 [ 10]: 4aaebb5f361261cf +Block 0027 [ 11]: 1b8d7a9d97940db2 +Block 0027 [ 12]: 4318646c94c73b35 +Block 0027 [ 13]: d6655631500b729d +Block 0027 [ 14]: c2a9b85b96924a8e +Block 0027 [ 15]: 418c589a875653bb +Block 0027 [ 16]: bf082ba5c245765d +Block 0027 [ 17]: ccfc9eda23db1947 +Block 0027 [ 18]: 2de1c5c6f46db28a +Block 0027 [ 19]: 9cd06b50cf2bd2dd +Block 0027 [ 20]: dd962d2da10fc57c +Block 0027 [ 21]: a4b0686c11d81fb1 +Block 0027 [ 22]: bbc792a8c5c45ed4 +Block 0027 [ 23]: ac4483c0b511e762 +Block 0027 [ 24]: 5ad3c417ae5d8871 +Block 0027 [ 25]: 3a19b24b75fa3514 +Block 0027 [ 26]: c521b53027336b12 +Block 0027 [ 27]: d203b85c63c61d3d +Block 0027 [ 28]: c6a2d3ec7903561f +Block 0027 [ 29]: 9f3f4f2f68dab3b1 +Block 0027 [ 30]: b6ed64cc82dd7184 +Block 0027 [ 31]: 66d3d950dae1ea0d +Block 0027 [ 32]: 3302197c3166af1e +Block 0027 [ 33]: 2de9bcdd7e955b18 +Block 0027 [ 34]: 91774354af3f130e +Block 0027 [ 35]: 49fd29c31e5afa37 +Block 0027 [ 36]: cf15127b9889ccff +Block 0027 [ 37]: bf32b130475e7d2b +Block 0027 [ 38]: 8f6baa093c6922c4 +Block 0027 [ 39]: e536f69deb3f39f7 +Block 0027 [ 40]: b3aa896557db63a9 +Block 0027 [ 41]: cd5fadd0b10d9fbd +Block 0027 [ 42]: 1b2b35742385b35c +Block 0027 [ 43]: 968f676a7871062f +Block 0027 [ 44]: a9781975ef83fb7c +Block 0027 [ 45]: 03afc77a1c96d39d +Block 0027 [ 46]: 06e3fc87d2ec14b5 +Block 0027 [ 47]: 9f39adf7aeb1428a +Block 0027 [ 48]: 65792cbead640b35 +Block 0027 [ 49]: 1b01e121b917630e +Block 0027 [ 50]: 8f723e7ce5b7055a +Block 0027 [ 51]: 56e9cd8c13dcc689 +Block 0027 [ 52]: 779dcb4521e9450f +Block 0027 [ 53]: 4f816a3a79510b60 +Block 0027 [ 54]: 940968d0ff51043f +Block 0027 [ 55]: e3eb22ae71285ae3 +Block 0027 [ 56]: 5352d586b008f4b7 +Block 0027 [ 57]: 8968e2c80e34acf6 +Block 0027 [ 58]: 2fe4cbd66f0f62bd +Block 0027 [ 59]: 4412e98455d6b3c4 +Block 0027 [ 60]: 63dc9bd7674922fa +Block 0027 [ 61]: d62b9d372afaa8f8 +Block 0027 [ 62]: 3a3006d8fb94068e +Block 0027 [ 63]: 815e5f34f114968f +Block 0027 [ 64]: 884b99ab2472754c +Block 0027 [ 65]: f1b2eee8980314d2 +Block 0027 [ 66]: afcd0ea9ab782db0 +Block 0027 [ 67]: b9f1099e5dd97c02 +Block 0027 [ 68]: 9d6a1efbaf0cf440 +Block 0027 [ 69]: 11a007aa120f33d5 +Block 0027 [ 70]: 71a3f28332e22030 +Block 0027 [ 71]: 1ce6c4c0557f9c71 +Block 0027 [ 72]: e73571a85fd50173 +Block 0027 [ 73]: b64062eeeff4f8a6 +Block 0027 [ 74]: 1d4cc08c7c2a207b +Block 0027 [ 75]: 0413f787be8d7ca2 +Block 0027 [ 76]: d6287956626cc661 +Block 0027 [ 77]: 3159344b2e846c85 +Block 0027 [ 78]: 43d31539e09f2836 +Block 0027 [ 79]: c2f5b559e744a524 +Block 0027 [ 80]: 36a04346972a8e8d +Block 0027 [ 81]: 2b042a7c4e11eb16 +Block 0027 [ 82]: 2d6f6d59abca49af +Block 0027 [ 83]: c5e53fcc980a48fd +Block 0027 [ 84]: 97e35b537b4026ab +Block 0027 [ 85]: 909f2b09fa4a1cc2 +Block 0027 [ 86]: 62d2991a26be778b +Block 0027 [ 87]: a2425e86eb634fc8 +Block 0027 [ 88]: fb5640a059777a34 +Block 0027 [ 89]: 6a6eadde6ac7d594 +Block 0027 [ 90]: c0dbcd91d345ae09 +Block 0027 [ 91]: bf86ddc82ffd7d46 +Block 0027 [ 92]: ee815de26480a96b +Block 0027 [ 93]: b8ec956a34ee0486 +Block 0027 [ 94]: 07c555d99b043186 +Block 0027 [ 95]: 50a6ccdf83ee32dc +Block 0027 [ 96]: 48c40754eb0e5f57 +Block 0027 [ 97]: 39f05bbdd7b34d53 +Block 0027 [ 98]: 44a0e87f40e81992 +Block 0027 [ 99]: 7b32b1e3c6cb70a8 +Block 0027 [100]: 48c0c2e5a96f4309 +Block 0027 [101]: b0511dbd8b6f12e7 +Block 0027 [102]: 2327388ee4d6a519 +Block 0027 [103]: fcad9620b5f1d221 +Block 0027 [104]: ada988a1f98ae5fb +Block 0027 [105]: 941ab7d039656ff3 +Block 0027 [106]: a76b601d1469fc73 +Block 0027 [107]: 14840c333bd2fef9 +Block 0027 [108]: 9379106ce5adb55d +Block 0027 [109]: cd8e74667be14476 +Block 0027 [110]: f85336be53c43cb4 +Block 0027 [111]: f77eac2a589fae03 +Block 0027 [112]: 5eca210b987e2152 +Block 0027 [113]: 0f4c81d45eec28cc +Block 0027 [114]: a3677c3e83fc85b2 +Block 0027 [115]: ad84372c49345a2c +Block 0027 [116]: c936edbc9678f9d1 +Block 0027 [117]: 108af1465cebeeb2 +Block 0027 [118]: 4c69155540d282ca +Block 0027 [119]: 301cd4b7c6dfbc68 +Block 0027 [120]: 156f18eb609f9765 +Block 0027 [121]: 6e71b4bd0d6080cc +Block 0027 [122]: 3302923e332b9357 +Block 0027 [123]: e6dd3be8a881de18 +Block 0027 [124]: b2b04b33b588c3e6 +Block 0027 [125]: ce90c3fe9a0f4fd8 +Block 0027 [126]: 9028ea580a0f0a34 +Block 0027 [127]: d1201d962a6ef6c4 +Block 0028 [ 0]: a41067023facdbf1 +Block 0028 [ 1]: 42117505215fc851 +Block 0028 [ 2]: 108e80c173bd1c3f +Block 0028 [ 3]: 9141f7051483092c +Block 0028 [ 4]: 88b65a6f33e76738 +Block 0028 [ 5]: 274cc7845b9c6bcf +Block 0028 [ 6]: bda833869a62b8ec +Block 0028 [ 7]: 9baaae5b2628bf1b +Block 0028 [ 8]: 43d0f6acfbd5dd99 +Block 0028 [ 9]: a4ebf0896a3ae6e6 +Block 0028 [ 10]: fb9f2b0ff49710b8 +Block 0028 [ 11]: 7d0d05487d725a95 +Block 0028 [ 12]: 5c6a9fdd3885e820 +Block 0028 [ 13]: 94538a83eab9a2fc +Block 0028 [ 14]: 2e67502e854ccabd +Block 0028 [ 15]: 7f64f88fcce2535d +Block 0028 [ 16]: ed492c4e4992f88f +Block 0028 [ 17]: 9ecd515f9bf644cf +Block 0028 [ 18]: 192662dc782b6033 +Block 0028 [ 19]: c9e27c60336ef812 +Block 0028 [ 20]: f13adf1dba915c6f +Block 0028 [ 21]: e16ae4b064097259 +Block 0028 [ 22]: ba6acd840f6a95b9 +Block 0028 [ 23]: bd28c64416c87497 +Block 0028 [ 24]: a5694c6e1739296c +Block 0028 [ 25]: 2837fe7f1fc557f5 +Block 0028 [ 26]: 08adc15f77d25f7e +Block 0028 [ 27]: e76b6f75fc8c2044 +Block 0028 [ 28]: cf0755893ea4cbd2 +Block 0028 [ 29]: fe6bde1aa534077f +Block 0028 [ 30]: e0e8dca015cdaf13 +Block 0028 [ 31]: 1e12ce621518c367 +Block 0028 [ 32]: a46d5f31d4ad951d +Block 0028 [ 33]: bf9f1f29eec79a2b +Block 0028 [ 34]: 75fb87621dfaca5e +Block 0028 [ 35]: aa99a18fba30b9f4 +Block 0028 [ 36]: f340a2b9afe49e12 +Block 0028 [ 37]: a0c81166fe523ec0 +Block 0028 [ 38]: 18c5679fa18d8dec +Block 0028 [ 39]: 857f448b84cc46a6 +Block 0028 [ 40]: 28cfbe6f6fa9b7a5 +Block 0028 [ 41]: 1ff21c3f36c2108c +Block 0028 [ 42]: 2f66b9fb1363117f +Block 0028 [ 43]: dc0e82d652c2af78 +Block 0028 [ 44]: da14d9d236e1fed8 +Block 0028 [ 45]: 69204ca8ee4a6ed0 +Block 0028 [ 46]: 6ba8d0459653c081 +Block 0028 [ 47]: e98016f805291524 +Block 0028 [ 48]: 18f419584af64630 +Block 0028 [ 49]: 43bc85ffca0777e9 +Block 0028 [ 50]: b580e2fc779e6b2b +Block 0028 [ 51]: 28c19f5fa2ff0cc4 +Block 0028 [ 52]: e442186be0b5bba6 +Block 0028 [ 53]: dee3e42871bf79f1 +Block 0028 [ 54]: 64657b9b60bbe4c8 +Block 0028 [ 55]: 57a9f6c1a5fa724d +Block 0028 [ 56]: ccd48a4a80eeb087 +Block 0028 [ 57]: fb27c006c1b2f679 +Block 0028 [ 58]: 2fb81d57f7ad6cdc +Block 0028 [ 59]: bd3d9dbcd1118622 +Block 0028 [ 60]: 226e915fbad9b815 +Block 0028 [ 61]: 30a8efcbcd761a5c +Block 0028 [ 62]: fd5a51699d07d18e +Block 0028 [ 63]: 60feb45effa98a6f +Block 0028 [ 64]: e389526027b2d2f9 +Block 0028 [ 65]: e9a895742299a978 +Block 0028 [ 66]: 836cce4801d4f3f4 +Block 0028 [ 67]: 63a827f820eb9a56 +Block 0028 [ 68]: e2463a1337fa5ecb +Block 0028 [ 69]: 538e061174fe9d02 +Block 0028 [ 70]: ff3da50f9eacc5b7 +Block 0028 [ 71]: 72ff747a14b4deaf +Block 0028 [ 72]: 562a5e613f9216a6 +Block 0028 [ 73]: 09b455e274ecf7b9 +Block 0028 [ 74]: 4571adb359ffae0f +Block 0028 [ 75]: 77d145773f85eb65 +Block 0028 [ 76]: 653321f0978aa9b0 +Block 0028 [ 77]: d833640bae64a928 +Block 0028 [ 78]: 134c2d009161de97 +Block 0028 [ 79]: 572a9974caf440ce +Block 0028 [ 80]: 6e34acfc2479246b +Block 0028 [ 81]: 94fbf1aecbe288e9 +Block 0028 [ 82]: 8369eb0748dc31dc +Block 0028 [ 83]: 83a3a5121aadb6ba +Block 0028 [ 84]: 264e9a697238aa7b +Block 0028 [ 85]: e6ffe60119c76ed8 +Block 0028 [ 86]: 2c430f7143906fec +Block 0028 [ 87]: 9238a6c9d5f4afba +Block 0028 [ 88]: c00da35614c2881f +Block 0028 [ 89]: dfbc346cc39bf049 +Block 0028 [ 90]: 0656ce19387c8113 +Block 0028 [ 91]: 4a4cde62fb6ff8ab +Block 0028 [ 92]: 6e55b2f1984647e6 +Block 0028 [ 93]: 007cafd08b7aaad7 +Block 0028 [ 94]: 0384f97188460e76 +Block 0028 [ 95]: 4338c2b4b83d2539 +Block 0028 [ 96]: b73322013357363d +Block 0028 [ 97]: 451e6927a0913d00 +Block 0028 [ 98]: 58b2043cdd7c6a0d +Block 0028 [ 99]: 183122cadbe9185f +Block 0028 [100]: 81ee6f18af45d9b6 +Block 0028 [101]: e327593257a949fc +Block 0028 [102]: af66fc72039ece5d +Block 0028 [103]: 64c3f12a6828d7e6 +Block 0028 [104]: 535baf0447dd7dc9 +Block 0028 [105]: ab3685133dcea01c +Block 0028 [106]: 63521d74e4720a83 +Block 0028 [107]: 62fdb26fb8a968cc +Block 0028 [108]: 890dc6bee39e6960 +Block 0028 [109]: b3a588db142d1862 +Block 0028 [110]: d454509c53f9c707 +Block 0028 [111]: cc13b42b0dda6ff1 +Block 0028 [112]: 93b74454d71b4c67 +Block 0028 [113]: 9408f46f656aa155 +Block 0028 [114]: 7916c34481f18bc1 +Block 0028 [115]: adc72713cc045345 +Block 0028 [116]: efc93c7841bdfbb8 +Block 0028 [117]: 72cd273c12380207 +Block 0028 [118]: b52e668f7efbb3fb +Block 0028 [119]: 03bab24694276f9c +Block 0028 [120]: 3c204b2118460028 +Block 0028 [121]: c909683316566d5a +Block 0028 [122]: 5ed142b9097de57e +Block 0028 [123]: 7fde438b177fd13e +Block 0028 [124]: c690af7205e3ccfe +Block 0028 [125]: 8b26df008256dd60 +Block 0028 [126]: 5f029a090522e2f5 +Block 0028 [127]: 88b8989232f47a0d +Block 0029 [ 0]: 313681c3e41acd60 +Block 0029 [ 1]: d91bca0ae66c637a +Block 0029 [ 2]: 04e8251a37da2c17 +Block 0029 [ 3]: 07da61fc730e3511 +Block 0029 [ 4]: 6f9ffac85007ca4d +Block 0029 [ 5]: 3f58445980f06d19 +Block 0029 [ 6]: 09b199b3c76b4124 +Block 0029 [ 7]: 6ec402f46805c58d +Block 0029 [ 8]: d2eace042511a80a +Block 0029 [ 9]: f8da4c2a47e93bd4 +Block 0029 [ 10]: 4953ed5a237778ae +Block 0029 [ 11]: b705e27de76a555b +Block 0029 [ 12]: b0a7712f715a3503 +Block 0029 [ 13]: 2135389da8281211 +Block 0029 [ 14]: 5b599493e2f700f1 +Block 0029 [ 15]: 5a3533a86bc338d6 +Block 0029 [ 16]: d6fb3dd373c3fb84 +Block 0029 [ 17]: 9c4ccc8d1de3d9e7 +Block 0029 [ 18]: 4ea73fc13e1fd243 +Block 0029 [ 19]: b0b41da7ddc2d3a6 +Block 0029 [ 20]: d67556a766650ca3 +Block 0029 [ 21]: 7a87f2feea5c1da9 +Block 0029 [ 22]: ecfc385d0e2cf083 +Block 0029 [ 23]: 45368d1461cd994c +Block 0029 [ 24]: 407868af14ee24fb +Block 0029 [ 25]: a571550c7a1f0a73 +Block 0029 [ 26]: bc1ee9e657c9c105 +Block 0029 [ 27]: de2cc5016e459ee6 +Block 0029 [ 28]: ac85c053069088a0 +Block 0029 [ 29]: bd6aeb9b0ac2ead5 +Block 0029 [ 30]: d82d50fd33a3e8e2 +Block 0029 [ 31]: 307f52bdb3c29795 +Block 0029 [ 32]: 77a59a437b39120e +Block 0029 [ 33]: fce9e3144f78a966 +Block 0029 [ 34]: 3e1cc37711a7e326 +Block 0029 [ 35]: 2c628f1777d983a0 +Block 0029 [ 36]: 77648411897e4a1b +Block 0029 [ 37]: 98ab98c193783931 +Block 0029 [ 38]: ad036d72d5f29806 +Block 0029 [ 39]: 847bd5a73b146f88 +Block 0029 [ 40]: cd354a5bd2ccf5b4 +Block 0029 [ 41]: e806000c105fa663 +Block 0029 [ 42]: e070bb267fcd1243 +Block 0029 [ 43]: 120004ab2f855dfd +Block 0029 [ 44]: b2bbc2f65eabe428 +Block 0029 [ 45]: 4a098eb8a9a91ff3 +Block 0029 [ 46]: 1c00224e70a288a3 +Block 0029 [ 47]: 6d6a3fbd85a2f765 +Block 0029 [ 48]: 86b7c5d758c179a9 +Block 0029 [ 49]: b9418fcf1228990a +Block 0029 [ 50]: f3c6fa47d9a5da91 +Block 0029 [ 51]: afff8e6eb6b0d7d8 +Block 0029 [ 52]: fbe80c00bb485eb6 +Block 0029 [ 53]: 01378709c95d69e3 +Block 0029 [ 54]: 0d2b433f15c611ef +Block 0029 [ 55]: 7981be0be2a9d437 +Block 0029 [ 56]: 0d022dd3b0fef0b9 +Block 0029 [ 57]: 09b6fab3474a2f73 +Block 0029 [ 58]: 0d91c6a6e3cc9ec7 +Block 0029 [ 59]: f87b83735d308ba8 +Block 0029 [ 60]: 54b4dba310bd88f0 +Block 0029 [ 61]: 5ea520e83c20b705 +Block 0029 [ 62]: 59d2670bc502f17f +Block 0029 [ 63]: 721ca4b5908f7718 +Block 0029 [ 64]: ef0e946d1bf3bcb9 +Block 0029 [ 65]: 62fa48ad21c43e0c +Block 0029 [ 66]: 2a04832751467d97 +Block 0029 [ 67]: b2ec95e1d26942a8 +Block 0029 [ 68]: 8327ee8a28c749a1 +Block 0029 [ 69]: a5d8165578262604 +Block 0029 [ 70]: f0ea267b8c26b91c +Block 0029 [ 71]: 084cb7cf5531ef87 +Block 0029 [ 72]: 2732e9aaef147d79 +Block 0029 [ 73]: 1b6381fd914644c4 +Block 0029 [ 74]: 7419b71780d0d784 +Block 0029 [ 75]: f201bac39c320b37 +Block 0029 [ 76]: ce42070184066dd5 +Block 0029 [ 77]: 1df651ec7cf8e733 +Block 0029 [ 78]: ad1d8f667d73481e +Block 0029 [ 79]: 1f78565b46eb434a +Block 0029 [ 80]: 1a3f3009b4522979 +Block 0029 [ 81]: 6cd47ef6d04267d9 +Block 0029 [ 82]: 4a39fd5f469d8cc7 +Block 0029 [ 83]: 65f91813538053bc +Block 0029 [ 84]: a9a31eb605527161 +Block 0029 [ 85]: 2fd1255b5bcd6375 +Block 0029 [ 86]: 3f8542e21d0b690f +Block 0029 [ 87]: 114947f1e9ec2f9d +Block 0029 [ 88]: 4eebd36c8b747ca1 +Block 0029 [ 89]: 6c79dc594ac2b6d2 +Block 0029 [ 90]: 15ec09b5e91b9baa +Block 0029 [ 91]: 6b679f91d2e70b05 +Block 0029 [ 92]: 9044112a597d98ff +Block 0029 [ 93]: cd7356cf331ed49e +Block 0029 [ 94]: 2289fbcca68f8155 +Block 0029 [ 95]: 8e5210925b9bb7ab +Block 0029 [ 96]: 6102352f068f8cf4 +Block 0029 [ 97]: f75c6f5b364bdf6e +Block 0029 [ 98]: 4adb44d199e1b21d +Block 0029 [ 99]: 8572a78f72832a67 +Block 0029 [100]: 8a9be9459af145e7 +Block 0029 [101]: 7bbeb2a6194f8e9f +Block 0029 [102]: 946d6c9ce885afe8 +Block 0029 [103]: 2987514adc28fdef +Block 0029 [104]: d0ce50a68492e30a +Block 0029 [105]: 1dd87ea896a6cfda +Block 0029 [106]: 52018b7afc5d29c8 +Block 0029 [107]: 3f330a5203e6aba8 +Block 0029 [108]: 1ab316917f2550ec +Block 0029 [109]: 6f8eab32629a33bf +Block 0029 [110]: d946f816df91e2a9 +Block 0029 [111]: df0394272a8cf558 +Block 0029 [112]: c16fa502a1922da4 +Block 0029 [113]: 78981886ab7de65a +Block 0029 [114]: afc8ec9eddb17556 +Block 0029 [115]: 6095037aac2aac51 +Block 0029 [116]: be57b59cfec2d1ac +Block 0029 [117]: 32c35f6fb6388eab +Block 0029 [118]: f999903a5ee8f53d +Block 0029 [119]: 3b31837023238e6a +Block 0029 [120]: 7f0aef84e38845aa +Block 0029 [121]: b95f6cc42f15da2b +Block 0029 [122]: a110466efa197c33 +Block 0029 [123]: d672b963a4412d2a +Block 0029 [124]: 5cff9e860875e69e +Block 0029 [125]: e54a688a18a957dc +Block 0029 [126]: 4ea7386eb37b515b +Block 0029 [127]: 832110aef15e3a90 +Block 0030 [ 0]: 408b6edf7b6d76e8 +Block 0030 [ 1]: cdaec40a044edb88 +Block 0030 [ 2]: 67889ab6152afdcb +Block 0030 [ 3]: 9c05e196f92a3324 +Block 0030 [ 4]: 29b2b7b66c085796 +Block 0030 [ 5]: 15cfb2dca4c5ba8e +Block 0030 [ 6]: a6e2210668385b94 +Block 0030 [ 7]: 304e1faa20dde4eb +Block 0030 [ 8]: e020b30a1328a914 +Block 0030 [ 9]: 0bb51200dbae1919 +Block 0030 [ 10]: 1f89827bd0cd2685 +Block 0030 [ 11]: 4cf3c6e4183bb1d8 +Block 0030 [ 12]: 5b5df3a9e149e3e7 +Block 0030 [ 13]: 709b4402dafd008d +Block 0030 [ 14]: db17b2eafdb45f94 +Block 0030 [ 15]: 7d58b94409ca3b26 +Block 0030 [ 16]: 6a7a2a97933ce9f5 +Block 0030 [ 17]: 99c1673a757ca868 +Block 0030 [ 18]: 66be0bde99848db5 +Block 0030 [ 19]: 76778cdc3fd87363 +Block 0030 [ 20]: 8f7ba763e2500708 +Block 0030 [ 21]: 0030035d07ec5fdc +Block 0030 [ 22]: 9aec4aef00b2caf7 +Block 0030 [ 23]: ea91bb0a91fd2fd4 +Block 0030 [ 24]: e855a4fef28c4723 +Block 0030 [ 25]: a8ba555f79797dd8 +Block 0030 [ 26]: dba4f3b6d82436fb +Block 0030 [ 27]: 8e8937633dad67b1 +Block 0030 [ 28]: f3dcb5ff246778ce +Block 0030 [ 29]: 90f60fec9a7fe473 +Block 0030 [ 30]: a8f3330c49c7604f +Block 0030 [ 31]: c206d8fc6e4d656c +Block 0030 [ 32]: 472f2e4653c80e9d +Block 0030 [ 33]: a005dce2b9f47d49 +Block 0030 [ 34]: d211d4ea5cd4b7d6 +Block 0030 [ 35]: fe0f1444120846c6 +Block 0030 [ 36]: fa15fd1def127e14 +Block 0030 [ 37]: ac5dcf2b0a9576e0 +Block 0030 [ 38]: 455f0aa7ccc51e38 +Block 0030 [ 39]: 2359b04ce4ffa824 +Block 0030 [ 40]: e67bcab71417291e +Block 0030 [ 41]: c9842a22e6413101 +Block 0030 [ 42]: 40d66ed0eec1ff05 +Block 0030 [ 43]: e619379508a2380d +Block 0030 [ 44]: ed3128999706b8d4 +Block 0030 [ 45]: daf43ff2b3798f3b +Block 0030 [ 46]: 2297a50f89ea911e +Block 0030 [ 47]: 24974ef6978c6171 +Block 0030 [ 48]: af122d8bc2966070 +Block 0030 [ 49]: 3b1395bede3a62d0 +Block 0030 [ 50]: f2c9c53f8acc34b5 +Block 0030 [ 51]: 09592eed7eca3ba6 +Block 0030 [ 52]: 6265fa73035f278c +Block 0030 [ 53]: 27453b057745b250 +Block 0030 [ 54]: 58e561ff7c846a07 +Block 0030 [ 55]: d703c5f4913bc827 +Block 0030 [ 56]: 36271bffda0486c9 +Block 0030 [ 57]: d2d39c21360fe92e +Block 0030 [ 58]: e672846c80d55aef +Block 0030 [ 59]: 7d105fc325c91c5a +Block 0030 [ 60]: 68f9b57df6b83bff +Block 0030 [ 61]: 2082748779c8daf8 +Block 0030 [ 62]: 5a9c85cdc522417f +Block 0030 [ 63]: e96bcd019b9b486c +Block 0030 [ 64]: 235ee28d5d55e0c3 +Block 0030 [ 65]: eb3a4896469f0ec4 +Block 0030 [ 66]: a9463daca7c68291 +Block 0030 [ 67]: db08678f6153d8c7 +Block 0030 [ 68]: 1ec5fe9d4876f955 +Block 0030 [ 69]: 438d1307299993f2 +Block 0030 [ 70]: b0072c378b6cfb5d +Block 0030 [ 71]: 301ce10babee8f5d +Block 0030 [ 72]: 7c9b9bb3656e2db4 +Block 0030 [ 73]: 2d5b823e615ed753 +Block 0030 [ 74]: 4d673c349f7f8f13 +Block 0030 [ 75]: 50563f67797ec11f +Block 0030 [ 76]: 2685632a636d8aad +Block 0030 [ 77]: f83472de5cbbe1c6 +Block 0030 [ 78]: 0a6afea051cfb234 +Block 0030 [ 79]: eb98b35bf0f22db7 +Block 0030 [ 80]: 33ae1a95abbc098c +Block 0030 [ 81]: e91616e1ee4ef918 +Block 0030 [ 82]: 85716d42d5117cac +Block 0030 [ 83]: 8b0cfd81e670d7fe +Block 0030 [ 84]: c4bcb8dfeab2d5f1 +Block 0030 [ 85]: 8e0919c4bba64c94 +Block 0030 [ 86]: 4975b344cea18ee4 +Block 0030 [ 87]: 113039374ab49733 +Block 0030 [ 88]: f45ac779ae82a794 +Block 0030 [ 89]: dc1997bc3e941b34 +Block 0030 [ 90]: 17e3bdb9964e15a4 +Block 0030 [ 91]: 96ef0d0a598f7fd1 +Block 0030 [ 92]: df40353b051d5733 +Block 0030 [ 93]: e9332d784569c844 +Block 0030 [ 94]: e1d787472d41400a +Block 0030 [ 95]: e2869b0fa1f50af8 +Block 0030 [ 96]: af4af34b650d6926 +Block 0030 [ 97]: cfbcf7752b18c771 +Block 0030 [ 98]: 14887d9431f8c85a +Block 0030 [ 99]: 0cabbcef9a8e83ae +Block 0030 [100]: 62603de80ca6f069 +Block 0030 [101]: 460cce0f55659156 +Block 0030 [102]: 45f9e9b01da609cb +Block 0030 [103]: 957f9ba08dc91aea +Block 0030 [104]: 2716e73926fee4e8 +Block 0030 [105]: 9f30d53562bf353f +Block 0030 [106]: 0c91e8e4bd2ad7d0 +Block 0030 [107]: f31e079c8f7caeee +Block 0030 [108]: 05088ae684266d49 +Block 0030 [109]: b2413829a2145da5 +Block 0030 [110]: e1d9ad663aeb39fa +Block 0030 [111]: 4da017dc0924aa29 +Block 0030 [112]: a349f9eab20ea439 +Block 0030 [113]: 4752d31b48cbae21 +Block 0030 [114]: fbd84024e44caf92 +Block 0030 [115]: ba45887fb5412ff6 +Block 0030 [116]: 8de783c468d6448b +Block 0030 [117]: 7caa49cbd2592562 +Block 0030 [118]: 0cba3416ddd50181 +Block 0030 [119]: f2a52ea38b17cd73 +Block 0030 [120]: 2b627bf5f43c795f +Block 0030 [121]: d4f2048eed46a1cf +Block 0030 [122]: 9869b787c2659a03 +Block 0030 [123]: 291e0afd857d3d1d +Block 0030 [124]: ab227091de0a2ff0 +Block 0030 [125]: 0c09f15ca0e8bd34 +Block 0030 [126]: 6f4f9df1ea2ff4ca +Block 0030 [127]: d30af31b90a27ba7 +Block 0031 [ 0]: 89c7770e0637993f +Block 0031 [ 1]: 07197d828987a604 +Block 0031 [ 2]: 1eb45ba81728e842 +Block 0031 [ 3]: bb5a9840b6356a29 +Block 0031 [ 4]: af7780e7c496d1ff +Block 0031 [ 5]: dc8dccbf1fc8877a +Block 0031 [ 6]: 415d6cd8f543d990 +Block 0031 [ 7]: 4ea854c764c72a91 +Block 0031 [ 8]: 23fa956665955178 +Block 0031 [ 9]: 9a623692c01c8c3b +Block 0031 [ 10]: feb64166768fdbe9 +Block 0031 [ 11]: 4bcc60ef9434362c +Block 0031 [ 12]: 1fe8f1363f2c7b8c +Block 0031 [ 13]: 1f534df306ebb6a1 +Block 0031 [ 14]: ca7cc8fa8a7ccdf6 +Block 0031 [ 15]: cffc2531375c9e14 +Block 0031 [ 16]: 5a2bc32f0685bf45 +Block 0031 [ 17]: 3623f096a638438b +Block 0031 [ 18]: 57f791cf43d44568 +Block 0031 [ 19]: 470709fe0f7cdb14 +Block 0031 [ 20]: ea55cd16896a0b6b +Block 0031 [ 21]: 88bcb41ef6b2b157 +Block 0031 [ 22]: facb052f4d2c0d29 +Block 0031 [ 23]: 0a9b9eee1015ec4c +Block 0031 [ 24]: 13a0ade94e8d5555 +Block 0031 [ 25]: 96d74483bbc65425 +Block 0031 [ 26]: 5c5b3ca4b394be63 +Block 0031 [ 27]: 7ba2bfd959972e5f +Block 0031 [ 28]: b6522c3447665f79 +Block 0031 [ 29]: 64f6d68df4731ab4 +Block 0031 [ 30]: 560814a1051309c3 +Block 0031 [ 31]: 66ddf600fc6df4ee +Block 0031 [ 32]: 9900dc54c58d033f +Block 0031 [ 33]: 47f59e6b327d8e20 +Block 0031 [ 34]: bf33aa2244234bf1 +Block 0031 [ 35]: d3f691ecfe8c299b +Block 0031 [ 36]: 9e873b677f39ab86 +Block 0031 [ 37]: 75280f1c41300133 +Block 0031 [ 38]: 871e6602bb3ffb07 +Block 0031 [ 39]: 2a6319f258314678 +Block 0031 [ 40]: 97c2aaa125822db6 +Block 0031 [ 41]: e7bf880a1c7206ea +Block 0031 [ 42]: 196205598ec8f3b8 +Block 0031 [ 43]: cc6facefe12a1646 +Block 0031 [ 44]: a084acb57b445ceb +Block 0031 [ 45]: 052a7e2f7445bd31 +Block 0031 [ 46]: 7aa75e11161a5c24 +Block 0031 [ 47]: 686b9c4f2f5a23f6 +Block 0031 [ 48]: caa72eb4f8224ccf +Block 0031 [ 49]: a49541af0e3e242f +Block 0031 [ 50]: 3d2466672beea318 +Block 0031 [ 51]: c06207046ee65d5b +Block 0031 [ 52]: fe85635b22b6c656 +Block 0031 [ 53]: 229f18db75c70852 +Block 0031 [ 54]: 7dd9b36113efb72d +Block 0031 [ 55]: def0c1642032db45 +Block 0031 [ 56]: f320411dd1e888cd +Block 0031 [ 57]: 941e400b71a1335a +Block 0031 [ 58]: 67096e11cbc4fd48 +Block 0031 [ 59]: 4da96e1352bfcbfe +Block 0031 [ 60]: 156d67b4034efb2e +Block 0031 [ 61]: 7c3382bc2090a28f +Block 0031 [ 62]: 4bfa37978e24699a +Block 0031 [ 63]: 0bd050e6315619cf +Block 0031 [ 64]: 655205650866af61 +Block 0031 [ 65]: 017af77ec3ade1f6 +Block 0031 [ 66]: 9e9a2de2b181699d +Block 0031 [ 67]: b0146094deb7f12d +Block 0031 [ 68]: a8af88fffce3f712 +Block 0031 [ 69]: b109acbac6a3c08a +Block 0031 [ 70]: f80e22eac1c0e74e +Block 0031 [ 71]: 0ae3ce8462a0c4b5 +Block 0031 [ 72]: b9dd83c924e9009c +Block 0031 [ 73]: 5641c337ad3ec86e +Block 0031 [ 74]: d9f5563f75b4bf20 +Block 0031 [ 75]: bce9dbc659678f09 +Block 0031 [ 76]: 79250dd6a0392f8d +Block 0031 [ 77]: f8bef33608540e87 +Block 0031 [ 78]: d1c55b7b0584153a +Block 0031 [ 79]: 57776b6e818f7892 +Block 0031 [ 80]: c142b628cc6ee052 +Block 0031 [ 81]: e96b4db38bca244e +Block 0031 [ 82]: 556f1f3a16838b79 +Block 0031 [ 83]: bc475f68d72ddd98 +Block 0031 [ 84]: 7052f29f0da9b557 +Block 0031 [ 85]: 7b0cd825716d371b +Block 0031 [ 86]: 39ad7edbd2183ec5 +Block 0031 [ 87]: 84bef8ba060cefee +Block 0031 [ 88]: 812874fe8c3d0e0e +Block 0031 [ 89]: 11221a9493e8000a +Block 0031 [ 90]: ece764a8577a86f5 +Block 0031 [ 91]: a2f854d90a6987e0 +Block 0031 [ 92]: b1ea4324413dee11 +Block 0031 [ 93]: 4d76b35d0630f2ce +Block 0031 [ 94]: 1c14e37978e625c7 +Block 0031 [ 95]: a7a2956659999cfb +Block 0031 [ 96]: 2a1bc299a08be7d5 +Block 0031 [ 97]: 8b1de787db57d8b6 +Block 0031 [ 98]: 84546aabc8dcec8d +Block 0031 [ 99]: 74c55dc4c475fdd6 +Block 0031 [100]: 2fb4398a4f038499 +Block 0031 [101]: b3c6fa84200af9ab +Block 0031 [102]: 6a238dbd35570832 +Block 0031 [103]: 93a6a66d30e78ca7 +Block 0031 [104]: c2cf43cab843ba27 +Block 0031 [105]: 693cd69603e50ea4 +Block 0031 [106]: 6c14b77422c297a3 +Block 0031 [107]: d4fde0d4961b0b2a +Block 0031 [108]: 17f5c37030ca0df1 +Block 0031 [109]: 0a59e439206f2146 +Block 0031 [110]: 893f7ea1fce91480 +Block 0031 [111]: 0e89dfb3c481025f +Block 0031 [112]: d353be1933487620 +Block 0031 [113]: 88281e8286858847 +Block 0031 [114]: 2121b95d14d599b2 +Block 0031 [115]: e8dbf256a428526d +Block 0031 [116]: f7a6a26ab63a5bd4 +Block 0031 [117]: a05b9862052e1a49 +Block 0031 [118]: cf06bdbbda98c3f6 +Block 0031 [119]: 2001d765e3a3df2d +Block 0031 [120]: 33cb41b5981d1d85 +Block 0031 [121]: ffde63f1ee689564 +Block 0031 [122]: d2285236a47f5f22 +Block 0031 [123]: 2137a6082473dd47 +Block 0031 [124]: b350898ce34e6313 +Block 0031 [125]: 0e6a8437f71591eb +Block 0031 [126]: 262f62ad801339fe +Block 0031 [127]: 5e74704b5c91286c +Tag: 87 ae ed d6 51 7a b8 30 cd 97 65 cd 82 31 ab b2 e6 47 a5 de e0 8f 7c 05 e0 2f cb 76 33 35 d0 fd diff --git a/deps/phc-winner-argon2-20190702/kats/argon2i_v16.shasum b/deps/phc-winner-argon2-20190702/kats/argon2i_v16.shasum new file mode 100644 index 000000000..d36ecf6bc --- /dev/null +++ b/deps/phc-winner-argon2-20190702/kats/argon2i_v16.shasum @@ -0,0 +1 @@ +334f03e627afb67b946a530b90d2e11fb2e6abb44df992c0fb3198c7bacf5930 argon2i_v16 diff --git a/deps/phc-winner-argon2-20190702/kats/argon2id b/deps/phc-winner-argon2-20190702/kats/argon2id new file mode 100644 index 000000000..e5cdc6bb4 --- /dev/null +++ b/deps/phc-winner-argon2-20190702/kats/argon2id @@ -0,0 +1,12304 @@ +======================================= +Argon2id version number 19 +======================================= +Memory: 32 KiB, Iterations: 3, Parallelism: 4 lanes, Tag length: 32 bytes +Password[32]: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 +Salt[16]: 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 +Secret[8]: 03 03 03 03 03 03 03 03 +Associated data[12]: 04 04 04 04 04 04 04 04 04 04 04 04 +Pre-hashing digest: 28 89 de 48 7e b4 2a e5 00 c0 00 7e d9 25 2f 10 69 ea de c4 0d 57 65 b4 85 de 6d c2 43 7a 67 b8 54 6a 2f 0a cc 1a 08 82 db 8f cf 74 71 4b 47 2e 94 df 42 1a 5d a1 11 2f fa 11 43 43 70 a1 e9 97 + + After pass 0: +Block 0000 [ 0]: 6b2e09f10671bd43 +Block 0000 [ 1]: f69f5c27918a21be +Block 0000 [ 2]: dea7810ea41290e1 +Block 0000 [ 3]: 6787f7171870f893 +Block 0000 [ 4]: ca5aa8f5067b374c +Block 0000 [ 5]: 44cfcab94f414104 +Block 0000 [ 6]: 52525e831cf8cd52 +Block 0000 [ 7]: 3a1dcb76ae77f701 +Block 0000 [ 8]: db83ddac706d23d2 +Block 0000 [ 9]: ff63a62e68b98fa3 +Block 0000 [ 10]: 41ed55a99544e453 +Block 0000 [ 11]: 2ff6fa0d226c86fd +Block 0000 [ 12]: d7bf6d9a64e8b77b +Block 0000 [ 13]: a91ad24e61bffd45 +Block 0000 [ 14]: 7ebe9eea09adcd6c +Block 0000 [ 15]: e36884638b4c2996 +Block 0000 [ 16]: 5a54f32034697f4f +Block 0000 [ 17]: c885338cc4b929b7 +Block 0000 [ 18]: 51ba0bc044e3824c +Block 0000 [ 19]: ed9f60beee0ef312 +Block 0000 [ 20]: 6b169d498354fc50 +Block 0000 [ 21]: 32558851498c40ab +Block 0000 [ 22]: 8ba7642fbeb45909 +Block 0000 [ 23]: 8f9116af74ac6f46 +Block 0000 [ 24]: 2bff5ab7dbafffc7 +Block 0000 [ 25]: e49180713e66f3b3 +Block 0000 [ 26]: 332fe6daa4470665 +Block 0000 [ 27]: 7020c366c240dcfb +Block 0000 [ 28]: e5d88f78ac3e34dd +Block 0000 [ 29]: c52d58be17414590 +Block 0000 [ 30]: 3352cf25776e1689 +Block 0000 [ 31]: a08e922d19fdd765 +Block 0000 [ 32]: e810be2e50ffb55b +Block 0000 [ 33]: b159f1df83ab1136 +Block 0000 [ 34]: 0bf0fc23087ada59 +Block 0000 [ 35]: 991bfc5546f666a1 +Block 0000 [ 36]: 53a8168331d2e667 +Block 0000 [ 37]: 0a22a7e602c9abf5 +Block 0000 [ 38]: f646df091f9fab89 +Block 0000 [ 39]: 443c5ccb1ce10fc4 +Block 0000 [ 40]: 5fd384c9733ed4db +Block 0000 [ 41]: ce9a8f3699656a0d +Block 0000 [ 42]: cd37f767761c01ce +Block 0000 [ 43]: 2cc83d42946298b7 +Block 0000 [ 44]: 2bf5e7f0cb3dcb42 +Block 0000 [ 45]: e7a9e9eb031220ef +Block 0000 [ 46]: f78ddc5798e9be61 +Block 0000 [ 47]: c1bae043cab313a2 +Block 0000 [ 48]: 20e56ae7aa583904 +Block 0000 [ 49]: 0427402b61da57e0 +Block 0000 [ 50]: 770213016f71783c +Block 0000 [ 51]: 0b27d25052c1318b +Block 0000 [ 52]: d0caa69623b7e3ca +Block 0000 [ 53]: 9d7687e6a4ddce68 +Block 0000 [ 54]: e11ccf69d0f43b9c +Block 0000 [ 55]: 3f5a72caca81768b +Block 0000 [ 56]: e176a61b2e4da20f +Block 0000 [ 57]: 78a1aadbd9034284 +Block 0000 [ 58]: 49c049c7e00f9f59 +Block 0000 [ 59]: 6516f857a388f947 +Block 0000 [ 60]: a20d291c489e2e8b +Block 0000 [ 61]: e458d45b639d473c +Block 0000 [ 62]: 710c8c68ea1a26f7 +Block 0000 [ 63]: b290e665e27ab467 +Block 0000 [ 64]: 5c7633ea3703456b +Block 0000 [ 65]: 97571c02d657ce16 +Block 0000 [ 66]: 7b74cb951bc63514 +Block 0000 [ 67]: 23df75070130eb01 +Block 0000 [ 68]: eaace1e4ef1c8468 +Block 0000 [ 69]: d4dbceb8be3b1453 +Block 0000 [ 70]: 6a9fbba608aef476 +Block 0000 [ 71]: ddde0d99a8064a7a +Block 0000 [ 72]: 441a8cb66f88155b +Block 0000 [ 73]: 4a4c89ff8ea10fb4 +Block 0000 [ 74]: 3150ca9f9aed17cd +Block 0000 [ 75]: 6fc43b923d8ef6bd +Block 0000 [ 76]: 0b052515cb3197ab +Block 0000 [ 77]: 2a7f5d8c9f488664 +Block 0000 [ 78]: 110677ccfae3c81d +Block 0000 [ 79]: 1361f368edc978a2 +Block 0000 [ 80]: 51ad3a92b967d0c9 +Block 0000 [ 81]: 0f2ea496b44e1770 +Block 0000 [ 82]: 6f9c634a373cd5ff +Block 0000 [ 83]: aa21db063b0fb2be +Block 0000 [ 84]: 9ee5aa9033b8f489 +Block 0000 [ 85]: 3f56fd9d86dadea5 +Block 0000 [ 86]: 66f16b9849a00547 +Block 0000 [ 87]: 36171aaaeec11729 +Block 0000 [ 88]: 727119a32839d715 +Block 0000 [ 89]: 6278f4ba2188b967 +Block 0000 [ 90]: 6016719be569d76d +Block 0000 [ 91]: 36ac551e8e4a7bb5 +Block 0000 [ 92]: 06856164afe00095 +Block 0000 [ 93]: b8352672d69e8fd3 +Block 0000 [ 94]: 14926dad97d80627 +Block 0000 [ 95]: 6580259e95e8bd50 +Block 0000 [ 96]: 1932b5ff8287678f +Block 0000 [ 97]: 5d1a6bc6990f5960 +Block 0000 [ 98]: d7c5f4e4c3a7d856 +Block 0000 [ 99]: 88ad4b387d04817c +Block 0000 [100]: 38274590e64966c4 +Block 0000 [101]: 3ff81dc3610d60c6 +Block 0000 [102]: fbdc0c109a21d105 +Block 0000 [103]: bd77872efc5408ab +Block 0000 [104]: 6fa6bf9d96867be7 +Block 0000 [105]: f9cadf98fd4cf9ed +Block 0000 [106]: b23ffef15cbc7050 +Block 0000 [107]: 18aaa665bcc3b0e2 +Block 0000 [108]: 01070129cd4180f2 +Block 0000 [109]: f2514e7444d5cc41 +Block 0000 [110]: 998b45553a602fdd +Block 0000 [111]: 60094a7dc2ea8067 +Block 0000 [112]: faf57e40a119f4cf +Block 0000 [113]: 0b8c446b4b92020e +Block 0000 [114]: 6328254d21dcd105 +Block 0000 [115]: 7d88651de8ae3b6d +Block 0000 [116]: 03b5dcb7d1c28dbb +Block 0000 [117]: a61907655686f033 +Block 0000 [118]: 72831d520ad11387 +Block 0000 [119]: 33c98216d672085a +Block 0000 [120]: 578c5b7e80bf4671 +Block 0000 [121]: 52ddcbcc04e51448 +Block 0000 [122]: 01d951ee5923331b +Block 0000 [123]: d4a4597a1810415c +Block 0000 [124]: 420f07791bc9ecc3 +Block 0000 [125]: 3cd3138619d3f4fa +Block 0000 [126]: 137074e156a0690a +Block 0000 [127]: 8e4dd579ca1c1da0 +Block 0001 [ 0]: f727b5d2f5c54303 +Block 0001 [ 1]: 2fc5a656b980caa6 +Block 0001 [ 2]: 5c08c32e1796ab0e +Block 0001 [ 3]: 4ca1ed895a4692d5 +Block 0001 [ 4]: 68f05910c89460ef +Block 0001 [ 5]: 1ec8ac48623f9981 +Block 0001 [ 6]: 79bbc5c7317644d5 +Block 0001 [ 7]: 0d863b20b80d7266 +Block 0001 [ 8]: 8aa4ed020a3baeb2 +Block 0001 [ 9]: 8f72ae567b348b9d +Block 0001 [ 10]: a1f7a1370c9b7573 +Block 0001 [ 11]: 41d52ec493493843 +Block 0001 [ 12]: 780010b2f82c41e2 +Block 0001 [ 13]: 9227cb89939c4cf1 +Block 0001 [ 14]: 6d47b74940af209f +Block 0001 [ 15]: 22cf0b5f094be138 +Block 0001 [ 16]: eb3e235ec8745428 +Block 0001 [ 17]: fe2c2122d0d5741c +Block 0001 [ 18]: 48ca66bf709ae635 +Block 0001 [ 19]: 15975e305ed93fa3 +Block 0001 [ 20]: d6505e1ef94f37d0 +Block 0001 [ 21]: 0694f39f81e3a524 +Block 0001 [ 22]: 070c243d124b0a45 +Block 0001 [ 23]: b4492e0d58c75f3d +Block 0001 [ 24]: 26cdf6dc18a05336 +Block 0001 [ 25]: a1d074f1742e7363 +Block 0001 [ 26]: 45573fceeb9df977 +Block 0001 [ 27]: dcf4f450214c6422 +Block 0001 [ 28]: be560e719551ec36 +Block 0001 [ 29]: 22047152294cf78f +Block 0001 [ 30]: b1a69d55260c455b +Block 0001 [ 31]: a5b140ee053a67fe +Block 0001 [ 32]: 504074e4519947c8 +Block 0001 [ 33]: 0c956c5016864c1e +Block 0001 [ 34]: 38252f16cd4047f3 +Block 0001 [ 35]: 98c45cddb7290653 +Block 0001 [ 36]: 4e2cb095a3c32d7b +Block 0001 [ 37]: 27bc5bdf70afa578 +Block 0001 [ 38]: ed72b0e3ef683363 +Block 0001 [ 39]: 073f517b2dd80ea8 +Block 0001 [ 40]: 3be98a1a15a06f5f +Block 0001 [ 41]: 45f8a0bb8c3311f9 +Block 0001 [ 42]: 2652050c60058b35 +Block 0001 [ 43]: 220db5da269c42e9 +Block 0001 [ 44]: c9873eca93f9284d +Block 0001 [ 45]: 51e541e20ed3b717 +Block 0001 [ 46]: ab5577167a08dbe0 +Block 0001 [ 47]: dba843bcce1a4f97 +Block 0001 [ 48]: 7522310037167b42 +Block 0001 [ 49]: ae4f7625ac90fe15 +Block 0001 [ 50]: d0e88f7c46c53b68 +Block 0001 [ 51]: 44493d819ccf6116 +Block 0001 [ 52]: fb4a375515aac232 +Block 0001 [ 53]: 4eaf852bb04d832b +Block 0001 [ 54]: e004532fdf1f8a77 +Block 0001 [ 55]: 9e42ab4ede979be6 +Block 0001 [ 56]: eca0e805ad14469d +Block 0001 [ 57]: 2376bdd6b2a4e830 +Block 0001 [ 58]: fd4e52a9d1bbcb1e +Block 0001 [ 59]: 98fe361ab93d4cad +Block 0001 [ 60]: 6eaba863b1306d52 +Block 0001 [ 61]: 3e3eba82e84b50ce +Block 0001 [ 62]: 109393a39574f740 +Block 0001 [ 63]: 71d8dff2a4631238 +Block 0001 [ 64]: 023b3d3a21dbd6bf +Block 0001 [ 65]: 5777a50dbb69bbea +Block 0001 [ 66]: 67d2e2b98a33d217 +Block 0001 [ 67]: 2770484d5df31656 +Block 0001 [ 68]: 44ad2348a99a53e6 +Block 0001 [ 69]: 192bdd10c8741f1c +Block 0001 [ 70]: 26bc650bf48813cf +Block 0001 [ 71]: 00b6212dd45770e3 +Block 0001 [ 72]: d3b303f8d0e40ad7 +Block 0001 [ 73]: 511f3b88d352e54b +Block 0001 [ 74]: d39bc6144ac34aaa +Block 0001 [ 75]: 655c0808fdbd0c47 +Block 0001 [ 76]: d47c00e57c1d9dc4 +Block 0001 [ 77]: 27047a13946a7b07 +Block 0001 [ 78]: ba6afef7bf5c92d9 +Block 0001 [ 79]: 06a21ec0edb3ef37 +Block 0001 [ 80]: 78fad9da3ec74d75 +Block 0001 [ 81]: 2c5ee3cf300d5035 +Block 0001 [ 82]: 48cd34c84833254b +Block 0001 [ 83]: c72859ba124c6410 +Block 0001 [ 84]: 1a95c95581d67a24 +Block 0001 [ 85]: 469ff3df7e307532 +Block 0001 [ 86]: 7f1b94f113685691 +Block 0001 [ 87]: 91302b3fb0dc0f5e +Block 0001 [ 88]: c2307db64d2c4b4f +Block 0001 [ 89]: f2e3aeaea45bf48b +Block 0001 [ 90]: a3a4456787fe1021 +Block 0001 [ 91]: f9d9f56ed79a693e +Block 0001 [ 92]: d499174ccec1aa6a +Block 0001 [ 93]: 9d736ac57aec8096 +Block 0001 [ 94]: 7d02face37b3f3f5 +Block 0001 [ 95]: 26b5b9d2ccf4936b +Block 0001 [ 96]: 91d5c0393d5e4342 +Block 0001 [ 97]: 56594cb140bc3e21 +Block 0001 [ 98]: 35d8e19e19052a57 +Block 0001 [ 99]: 76a3e30c157a2394 +Block 0001 [100]: 3931ad30ac2f1385 +Block 0001 [101]: 7be8a2faaab85a90 +Block 0001 [102]: 02c7a5787f806c64 +Block 0001 [103]: 45b6a0efbe86d4b2 +Block 0001 [104]: deb784749dde8bc7 +Block 0001 [105]: a66bb8858e7500cb +Block 0001 [106]: bd8d508588c76ec4 +Block 0001 [107]: 6cb11235b27459a1 +Block 0001 [108]: 98e417a18c80222a +Block 0001 [109]: 39d142ff0552ddfb +Block 0001 [110]: 743c8580c0b99adb +Block 0001 [111]: f636e439e816b733 +Block 0001 [112]: 93b827603b32c52d +Block 0001 [113]: bba4334422741b32 +Block 0001 [114]: 2f4de2810b3a5cad +Block 0001 [115]: 5d0d8ccf002b95be +Block 0001 [116]: 921acd65ef4dd220 +Block 0001 [117]: 0fb7f4732577649f +Block 0001 [118]: 262d7ab021de8924 +Block 0001 [119]: 29aff84fbb4f249e +Block 0001 [120]: a503d32085ca5f78 +Block 0001 [121]: e244661f87621638 +Block 0001 [122]: 93f2ff03e3997016 +Block 0001 [123]: 69c2d47c210f47e5 +Block 0001 [124]: e782c3726723d164 +Block 0001 [125]: cac6f9d71f31beae +Block 0001 [126]: ed0e35037219abf0 +Block 0001 [127]: c56325d142c23d49 +Block 0002 [ 0]: 37542c2df4c423ff +Block 0002 [ 1]: 6cf1d602626f0fc1 +Block 0002 [ 2]: 449e5a5d622d8883 +Block 0002 [ 3]: 79ec5285f3ba957c +Block 0002 [ 4]: cc62f30b0b412ef0 +Block 0002 [ 5]: b47e35f1c950a027 +Block 0002 [ 6]: c5a5c6ab91729a64 +Block 0002 [ 7]: 020dbf60ec862cd5 +Block 0002 [ 8]: cf41de734d20ea2a +Block 0002 [ 9]: f9deadfe55574976 +Block 0002 [ 10]: ed50e4af98091491 +Block 0002 [ 11]: 500489fa3ba28742 +Block 0002 [ 12]: da566e1b85f51522 +Block 0002 [ 13]: b8f8ef6271893952 +Block 0002 [ 14]: cc1705c220d77c80 +Block 0002 [ 15]: 1e4dcb35323c2b1f +Block 0002 [ 16]: 0454a227bbf5c043 +Block 0002 [ 17]: e8a04d31c4d0918d +Block 0002 [ 18]: 6869e1be1a48b6e8 +Block 0002 [ 19]: 9fc384834694d4a3 +Block 0002 [ 20]: a14a4ff00ef57672 +Block 0002 [ 21]: c1a352faf5ec4bf7 +Block 0002 [ 22]: b5304731b08b2bca +Block 0002 [ 23]: 1524a444b939f583 +Block 0002 [ 24]: dfdfc62e544ee931 +Block 0002 [ 25]: 5b419d64efb6b859 +Block 0002 [ 26]: 1cad24e9741c95a9 +Block 0002 [ 27]: 9f3d3cd6121481be +Block 0002 [ 28]: 2bcf04a2f0a5ab51 +Block 0002 [ 29]: 6ab606ce39530d4e +Block 0002 [ 30]: b3d73d18a2d59067 +Block 0002 [ 31]: 73d5536c83faca70 +Block 0002 [ 32]: 1643a26ee60dd698 +Block 0002 [ 33]: b696edd0dcf041ab +Block 0002 [ 34]: 59374f36716bf5e4 +Block 0002 [ 35]: 15f5b0bc4ef1e83e +Block 0002 [ 36]: 51593489c4070cd7 +Block 0002 [ 37]: 8ea9d72e8ed25933 +Block 0002 [ 38]: ec1cff045b2851da +Block 0002 [ 39]: fc8ca9e07c1e5b94 +Block 0002 [ 40]: a80f56f79969cb47 +Block 0002 [ 41]: bce30dd5ee75b67b +Block 0002 [ 42]: 1b92c884e1fc7dcd +Block 0002 [ 43]: f6cdb641c3499906 +Block 0002 [ 44]: d7a61c7ceda83b95 +Block 0002 [ 45]: ef369d5b2addc65a +Block 0002 [ 46]: 41a37a1593450b26 +Block 0002 [ 47]: d67ee1a0ed052b6f +Block 0002 [ 48]: 790670599857280d +Block 0002 [ 49]: ef09a474d602a71f +Block 0002 [ 50]: 5c848619faeb4345 +Block 0002 [ 51]: 11ed266e34885c8b +Block 0002 [ 52]: 441142a800d7110e +Block 0002 [ 53]: c38c2899b733098d +Block 0002 [ 54]: 28ba4d75aca037e4 +Block 0002 [ 55]: 68090ec72cb7c46b +Block 0002 [ 56]: 760c2760e04a7c2a +Block 0002 [ 57]: 9b97c70acceb8c92 +Block 0002 [ 58]: 5fba5c38b2e15641 +Block 0002 [ 59]: 50f86dd277b866a4 +Block 0002 [ 60]: 8039c1367519c219 +Block 0002 [ 61]: 5e757c150da38ee9 +Block 0002 [ 62]: 07b859d43b600353 +Block 0002 [ 63]: 75c2360defe114f1 +Block 0002 [ 64]: a7759837a37400b7 +Block 0002 [ 65]: ba58e8ee8b8f1c39 +Block 0002 [ 66]: 864efeada86a8473 +Block 0002 [ 67]: 771d733623a03670 +Block 0002 [ 68]: 82ae44a9cec2888c +Block 0002 [ 69]: 39767840d86b49f9 +Block 0002 [ 70]: 862efb1223f3dd57 +Block 0002 [ 71]: 6c0a1554741c61bc +Block 0002 [ 72]: 220c6a98d43773a3 +Block 0002 [ 73]: 666ce3eb68da30ff +Block 0002 [ 74]: 4aabf6192271b063 +Block 0002 [ 75]: b97d63b09305732b +Block 0002 [ 76]: 9c036e99fdc41a86 +Block 0002 [ 77]: 0c9553db473231e8 +Block 0002 [ 78]: d3943f668c0b6c0b +Block 0002 [ 79]: 07cd9bf597d17086 +Block 0002 [ 80]: be683d427fc7bd35 +Block 0002 [ 81]: 278c7dac1544b192 +Block 0002 [ 82]: 251fefb71350aed4 +Block 0002 [ 83]: 85f9242deb8e6dc2 +Block 0002 [ 84]: 6c2d92e5b026defa +Block 0002 [ 85]: 8a6e5a2c0dd4f320 +Block 0002 [ 86]: 9feb2206de02a227 +Block 0002 [ 87]: ebf895ed6bf28049 +Block 0002 [ 88]: 4370fe0c90ded371 +Block 0002 [ 89]: 3e15ac9b74b8bd29 +Block 0002 [ 90]: 6aee88d8288707eb +Block 0002 [ 91]: a2c4a130ef335227 +Block 0002 [ 92]: 49e0065e1e168905 +Block 0002 [ 93]: 7c8f1d39d365f761 +Block 0002 [ 94]: 17f3a79f154e7af3 +Block 0002 [ 95]: 8556abf3d775a8cb +Block 0002 [ 96]: e92cb241d42d215d +Block 0002 [ 97]: e27038d2dc363774 +Block 0002 [ 98]: c698e01379eee779 +Block 0002 [ 99]: 0e9851af7296a899 +Block 0002 [100]: 35796451a0ba1749 +Block 0002 [101]: a699ea7d0e2a1754 +Block 0002 [102]: b16fb729ee40602a +Block 0002 [103]: ae3d2de416b7a411 +Block 0002 [104]: d009f76fb4349a93 +Block 0002 [105]: 82e6e58f5f7af70f +Block 0002 [106]: 16e405c51698662e +Block 0002 [107]: 95f4af34a6330e64 +Block 0002 [108]: 94f7bf613dbaa17f +Block 0002 [109]: 5152a3ff25691dbc +Block 0002 [110]: 5e86235d0c82f951 +Block 0002 [111]: d8ac241b4ceb3803 +Block 0002 [112]: 9244e793ca60a5f3 +Block 0002 [113]: 76dab340096fabbf +Block 0002 [114]: c5adf98472940f8a +Block 0002 [115]: 106b551d058f8f19 +Block 0002 [116]: bb258b750fc215de +Block 0002 [117]: ad7140812d40e929 +Block 0002 [118]: 3ad057869afaed79 +Block 0002 [119]: c254bf68bb31355b +Block 0002 [120]: ac8b17e9691a2c01 +Block 0002 [121]: a0f5d368cc92d6b2 +Block 0002 [122]: 57e474eee518e257 +Block 0002 [123]: 4eb432e176d82c1e +Block 0002 [124]: e8dc2a67bc27044e +Block 0002 [125]: ccca0b36894bae07 +Block 0002 [126]: c50e115a40135881 +Block 0002 [127]: 31ab7e9610be77cb +Block 0003 [ 0]: 033a9a825c0e3375 +Block 0003 [ 1]: ffb04963be6b3b77 +Block 0003 [ 2]: a5cd46d300b6dd82 +Block 0003 [ 3]: ec36c67ff576986c +Block 0003 [ 4]: 437b5a54375ab6c7 +Block 0003 [ 5]: 927811ef085e09c0 +Block 0003 [ 6]: 51c5e874382b475c +Block 0003 [ 7]: 13b5997ee7466630 +Block 0003 [ 8]: 84521039bc284d2f +Block 0003 [ 9]: 34791762f12cdc8c +Block 0003 [ 10]: f82a6cea29c3f956 +Block 0003 [ 11]: cecc35a9a9869d35 +Block 0003 [ 12]: 921553f94b2ad7b1 +Block 0003 [ 13]: bd151a3ae8982435 +Block 0003 [ 14]: e44961547aa6b6e8 +Block 0003 [ 15]: 35791c0b88a53841 +Block 0003 [ 16]: 6c1f506cd6b169f4 +Block 0003 [ 17]: c3d5841e25436bc4 +Block 0003 [ 18]: 9865ad21e2f62b1f +Block 0003 [ 19]: 65447e3aa9771e88 +Block 0003 [ 20]: 1a215926fc24f395 +Block 0003 [ 21]: 511db9dcacc2fde0 +Block 0003 [ 22]: 688e9980afdd513c +Block 0003 [ 23]: 902888d7ee355198 +Block 0003 [ 24]: e1888488338e8264 +Block 0003 [ 25]: 6f8d93269dc9670c +Block 0003 [ 26]: 0ea20bdd457c7ec7 +Block 0003 [ 27]: d6f10dea0ab8fa38 +Block 0003 [ 28]: dd69440b4f6d86bb +Block 0003 [ 29]: f218fbd09c06ff41 +Block 0003 [ 30]: 00fbfd70204fc266 +Block 0003 [ 31]: ab4a93d83956e58b +Block 0003 [ 32]: d7a6b398a589f492 +Block 0003 [ 33]: be8ceac4195f4c7e +Block 0003 [ 34]: e82963ea0389aef3 +Block 0003 [ 35]: 3adba6ba5dfbc70b +Block 0003 [ 36]: 959083b7cabe53dd +Block 0003 [ 37]: f5537e16031a1451 +Block 0003 [ 38]: 70689da6075493cc +Block 0003 [ 39]: 86054b0238ed2f05 +Block 0003 [ 40]: 5a4ae91c92ed9852 +Block 0003 [ 41]: 482499c5469d6a79 +Block 0003 [ 42]: ba459a7de4e0170b +Block 0003 [ 43]: 42009024a1939a39 +Block 0003 [ 44]: ff24fe13344a4ea2 +Block 0003 [ 45]: a9881fa40b1d5c30 +Block 0003 [ 46]: 76fbff24e8820359 +Block 0003 [ 47]: 1e12b2bfee1d5674 +Block 0003 [ 48]: 3973d0650a945227 +Block 0003 [ 49]: 7f5916266bf603ad +Block 0003 [ 50]: 95977d0c7146a89e +Block 0003 [ 51]: db9d6047fbbc11d9 +Block 0003 [ 52]: 165175c973740ccd +Block 0003 [ 53]: 980c7be752aa9399 +Block 0003 [ 54]: 310d0c54051b9783 +Block 0003 [ 55]: 6d66372da35a61d7 +Block 0003 [ 56]: 25512dba862b2c55 +Block 0003 [ 57]: f9519f53a64c2007 +Block 0003 [ 58]: 412c96e8a04d50dc +Block 0003 [ 59]: e267e74a4f486eca +Block 0003 [ 60]: 1692d421119d95f1 +Block 0003 [ 61]: 59acacdf9054a080 +Block 0003 [ 62]: e21e41c233e654dd +Block 0003 [ 63]: 776c9d31c68eeac1 +Block 0003 [ 64]: 469a74646cbff04f +Block 0003 [ 65]: cdc326fbc1217c85 +Block 0003 [ 66]: 9839d2208cf23d14 +Block 0003 [ 67]: 7f8d6f4fdd508aac +Block 0003 [ 68]: ec2c7129c1ede201 +Block 0003 [ 69]: eaa1d41993b894ac +Block 0003 [ 70]: 62a6ff95af57746e +Block 0003 [ 71]: e3cfb9e09b389b62 +Block 0003 [ 72]: e5d8e6b2f5c56087 +Block 0003 [ 73]: fea52606f876dd3d +Block 0003 [ 74]: 09d42ae72aab03ed +Block 0003 [ 75]: 469ca64f7e95bd2f +Block 0003 [ 76]: 03a141e08956df41 +Block 0003 [ 77]: 0c675a6d49a093ce +Block 0003 [ 78]: 904622e9fc3aeeea +Block 0003 [ 79]: 352fa38b9134c932 +Block 0003 [ 80]: 68e940494610d7cb +Block 0003 [ 81]: 37fc53a67dedf748 +Block 0003 [ 82]: fd3a7cd03312fec2 +Block 0003 [ 83]: 5cad438e52ed4347 +Block 0003 [ 84]: 80ebab1679b71b8b +Block 0003 [ 85]: 87497f358d6563f0 +Block 0003 [ 86]: 4a8b3c7f3126291a +Block 0003 [ 87]: d39ab8372acfa450 +Block 0003 [ 88]: db936c859ee7eec1 +Block 0003 [ 89]: d0e3658c3584931b +Block 0003 [ 90]: 70b321e145b7fde0 +Block 0003 [ 91]: 4b378a260b92af14 +Block 0003 [ 92]: 3b0726497f9ec36d +Block 0003 [ 93]: da1ef2a3ae8bed54 +Block 0003 [ 94]: 66d75fc3b087213d +Block 0003 [ 95]: f4c8a72b9d79bf0c +Block 0003 [ 96]: a2b1447f1b6df16d +Block 0003 [ 97]: 7d5a9efbc2dce79b +Block 0003 [ 98]: 62fbf22cf1fc124e +Block 0003 [ 99]: 4242820b9c5e47ef +Block 0003 [100]: 9f10556f00ffe526 +Block 0003 [101]: 6a08ccdc012d3608 +Block 0003 [102]: 9c4f3aefa54c172e +Block 0003 [103]: 04c665a5be09ef37 +Block 0003 [104]: 513f5ecfd230b7a4 +Block 0003 [105]: 9af91bcb5a94e05a +Block 0003 [106]: 67e742dd8815f572 +Block 0003 [107]: 3bb0fc4e2dbc9c6b +Block 0003 [108]: 140a635b9dce287f +Block 0003 [109]: 07f4465d81127d05 +Block 0003 [110]: 689d3f84aa045d3f +Block 0003 [111]: a60b928eeb7c986c +Block 0003 [112]: fd2f18537d468745 +Block 0003 [113]: 0c23e02868032019 +Block 0003 [114]: f68a25333b834b6b +Block 0003 [115]: 8a4ed24e784b3a47 +Block 0003 [116]: 46bf8147421a0572 +Block 0003 [117]: 369fa72d40415b7f +Block 0003 [118]: 6882dabd6a068f34 +Block 0003 [119]: dc8e2cdfe017dbee +Block 0003 [120]: e0f8c59632b31b30 +Block 0003 [121]: 7ce3a83234277cc4 +Block 0003 [122]: 7523755ddae51a70 +Block 0003 [123]: 727cbd57e13e08bb +Block 0003 [124]: 3d25e43aeb8ab15a +Block 0003 [125]: bb434251e358c81e +Block 0003 [126]: ccfcf5ef39898f2f +Block 0003 [127]: 5c7b6af56dc93d90 +Block 0004 [ 0]: 4aad2c9e9615357d +Block 0004 [ 1]: ce6a489393264830 +Block 0004 [ 2]: 44f6dd677120c34c +Block 0004 [ 3]: 9b54b4c637722c0d +Block 0004 [ 4]: 36b59880f89ce66b +Block 0004 [ 5]: f9941dacf99fa3b2 +Block 0004 [ 6]: 0561133fe2413998 +Block 0004 [ 7]: 3624f439f0356886 +Block 0004 [ 8]: 7f69556b861dc791 +Block 0004 [ 9]: 2b2c080682a158f9 +Block 0004 [ 10]: b5cd679b5b98078b +Block 0004 [ 11]: f50bda1f106687ab +Block 0004 [ 12]: 6a7fd322c9d0e356 +Block 0004 [ 13]: c0d57b7d551517f0 +Block 0004 [ 14]: cb0076497b271329 +Block 0004 [ 15]: 1ee3a218ac2e94bb +Block 0004 [ 16]: f81fd9c8ad33ab94 +Block 0004 [ 17]: 06f74124853c642c +Block 0004 [ 18]: af67e59ca12aba8b +Block 0004 [ 19]: c69ab433b4e3f026 +Block 0004 [ 20]: 066b5f97e6f94a14 +Block 0004 [ 21]: a660fc3551a8ccdb +Block 0004 [ 22]: f6e647def8255386 +Block 0004 [ 23]: deeaae8a41569d89 +Block 0004 [ 24]: 502dfea1f3866170 +Block 0004 [ 25]: 0055e5035ee2effd +Block 0004 [ 26]: ea1bc368a36a4989 +Block 0004 [ 27]: d187d3b09c31bd2e +Block 0004 [ 28]: ecc108964a73eea1 +Block 0004 [ 29]: 6f03013c3375bea4 +Block 0004 [ 30]: 4d2b4f01c9a594a1 +Block 0004 [ 31]: 6afa1c3705bceb93 +Block 0004 [ 32]: 29a3def8590e29e2 +Block 0004 [ 33]: 388e0b50d37ca6fb +Block 0004 [ 34]: a9a2be5abc3ae355 +Block 0004 [ 35]: 655154a45cf28d3f +Block 0004 [ 36]: b4bf1f57bcb985a5 +Block 0004 [ 37]: 74ac80093cc72816 +Block 0004 [ 38]: dc10be4b89ecc2c9 +Block 0004 [ 39]: a8f3d3892d18f8c5 +Block 0004 [ 40]: 2a9bedb7783e517e +Block 0004 [ 41]: 8fb2d64cdddb85e2 +Block 0004 [ 42]: c9426c402d69e384 +Block 0004 [ 43]: b4d887a9f0e27244 +Block 0004 [ 44]: 131338affae1913f +Block 0004 [ 45]: bea6e8197ecf2b57 +Block 0004 [ 46]: 2beb9a0a4629ea26 +Block 0004 [ 47]: a0b1321c16b6df16 +Block 0004 [ 48]: 5e803cc0fda654b4 +Block 0004 [ 49]: 51d8ea1da44ff8c8 +Block 0004 [ 50]: 31724ec603231a0f +Block 0004 [ 51]: 11e7d7c7d3f87451 +Block 0004 [ 52]: 73a6efc08a63c816 +Block 0004 [ 53]: 0f5007b3893fde88 +Block 0004 [ 54]: 9639fa7d1f9ba15d +Block 0004 [ 55]: 75857f3fc55b11b3 +Block 0004 [ 56]: e16f7ae209135d5b +Block 0004 [ 57]: 4c9884238bfb53ec +Block 0004 [ 58]: c66cbb76ade05220 +Block 0004 [ 59]: 7060a8642a6358f1 +Block 0004 [ 60]: e1441ddd05e3e94a +Block 0004 [ 61]: 40eb35e6b1fe60a4 +Block 0004 [ 62]: 32db0c582a9a1c4b +Block 0004 [ 63]: 156d62abf13c8d42 +Block 0004 [ 64]: 6386901cfaf4cd5f +Block 0004 [ 65]: d485163ee2894a0a +Block 0004 [ 66]: 5bbd9371b6ddbda8 +Block 0004 [ 67]: 617f0a95d0d1ebad +Block 0004 [ 68]: ddda42edd989a5de +Block 0004 [ 69]: bf6218a5e8a4fc7f +Block 0004 [ 70]: 948c99e73dcef198 +Block 0004 [ 71]: d2dae1cc5189a2ac +Block 0004 [ 72]: 9ab9309c75d14489 +Block 0004 [ 73]: 0096c018c9922cc0 +Block 0004 [ 74]: c55d076c6afdfb36 +Block 0004 [ 75]: 6940a46c5f5f8ff7 +Block 0004 [ 76]: 1f821452ed6805d5 +Block 0004 [ 77]: a5e13572d196c88f +Block 0004 [ 78]: fb84aca56c950808 +Block 0004 [ 79]: db36d78614fdcae1 +Block 0004 [ 80]: f74f05e57df8e0a6 +Block 0004 [ 81]: 4a6cd2d0b706fd77 +Block 0004 [ 82]: 77b1998388a62f9d +Block 0004 [ 83]: 843d8aa68f4738e7 +Block 0004 [ 84]: e50d81d9d86bb937 +Block 0004 [ 85]: b35517d78153e1f0 +Block 0004 [ 86]: 4d6667011dc0f5c9 +Block 0004 [ 87]: bdfbb81b05906373 +Block 0004 [ 88]: ff1c544cb9c55da0 +Block 0004 [ 89]: 7be55700f0926509 +Block 0004 [ 90]: 0a049f631a618979 +Block 0004 [ 91]: e185e5ca1f799f6e +Block 0004 [ 92]: a810f75491b3cfb7 +Block 0004 [ 93]: af77d89abab3e2d8 +Block 0004 [ 94]: c7c7fcf6f7e1fb7e +Block 0004 [ 95]: de4a29cc78702394 +Block 0004 [ 96]: 71e58cf077d6d85d +Block 0004 [ 97]: b73fc4a749b34ead +Block 0004 [ 98]: ffeccad0666cc6af +Block 0004 [ 99]: 69fbdea85dcd455f +Block 0004 [100]: 278f863ba6acabc5 +Block 0004 [101]: e66965a305bc4c40 +Block 0004 [102]: b9423de0dce901b7 +Block 0004 [103]: 15e0c769d840331e +Block 0004 [104]: 928eec9442a6b06f +Block 0004 [105]: db36ba9eca162aa9 +Block 0004 [106]: 11ce79a96c435d1e +Block 0004 [107]: c4950d5470035ce8 +Block 0004 [108]: 1730ef3bde3b5b6a +Block 0004 [109]: ac80f0e3f59a5d5c +Block 0004 [110]: 8ea557f8180c1661 +Block 0004 [111]: 1bf6e898445a963d +Block 0004 [112]: c004558618166516 +Block 0004 [113]: 4fbb7d0b5c4c5f59 +Block 0004 [114]: c81240d4eae498d0 +Block 0004 [115]: a6671d0bcaa177dc +Block 0004 [116]: 1b413c8e690567d0 +Block 0004 [117]: f5f3e1c8221f09e0 +Block 0004 [118]: 9c8f5fec57d0e3c0 +Block 0004 [119]: e343869ffa9b4f43 +Block 0004 [120]: 29dc7ffa4ba5bc92 +Block 0004 [121]: 708cb720e2816ba8 +Block 0004 [122]: 52a1d85807f13c6a +Block 0004 [123]: 561e4a36786d4bef +Block 0004 [124]: 2966f347c17a3914 +Block 0004 [125]: 3dc4aac7982d3f1c +Block 0004 [126]: aae55b9282ac0bb3 +Block 0004 [127]: 0f4767a8e4081496 +Block 0005 [ 0]: a2f1f29ea7aa2805 +Block 0005 [ 1]: d8c3cbc2ebbf0eb4 +Block 0005 [ 2]: a6b62b7344e68672 +Block 0005 [ 3]: e5dad5558824578c +Block 0005 [ 4]: 7f4977662f4a9dcd +Block 0005 [ 5]: 9740712b639051f1 +Block 0005 [ 6]: 76d060bce2adac18 +Block 0005 [ 7]: e00a0d348c440e6c +Block 0005 [ 8]: 3ee6477fdaa4d664 +Block 0005 [ 9]: 64008d83e1dfc177 +Block 0005 [ 10]: 430dc48d1c295406 +Block 0005 [ 11]: 9552e22ed145e6c1 +Block 0005 [ 12]: 57bd17aae86ad663 +Block 0005 [ 13]: 606091bc16a9bba7 +Block 0005 [ 14]: 28194ab3da1ac0a2 +Block 0005 [ 15]: 5e56b17cd078d2f4 +Block 0005 [ 16]: c248a735043acb68 +Block 0005 [ 17]: 42e8f874f7436184 +Block 0005 [ 18]: 376109d627e2c7b5 +Block 0005 [ 19]: e991290d19bfafbe +Block 0005 [ 20]: 2d6674137d9e9a54 +Block 0005 [ 21]: 281d16baf189e1b0 +Block 0005 [ 22]: 2ccf19eeb3111b77 +Block 0005 [ 23]: 6d296a58e66dc49d +Block 0005 [ 24]: c6f697703d9dc1d6 +Block 0005 [ 25]: b05254caf35910c6 +Block 0005 [ 26]: 3c72ab46ee180152 +Block 0005 [ 27]: 213a5becbe4615e1 +Block 0005 [ 28]: 4d84d1ee510b9e93 +Block 0005 [ 29]: 0160bed22edeeb55 +Block 0005 [ 30]: c1433fd0b0655b60 +Block 0005 [ 31]: 32632df221174ebc +Block 0005 [ 32]: 2a2e3e2f009f4034 +Block 0005 [ 33]: 0bbfc3da3267d57b +Block 0005 [ 34]: 0a14a644572cee42 +Block 0005 [ 35]: 7e77789809f9720d +Block 0005 [ 36]: 563ecb03c2c90611 +Block 0005 [ 37]: dbac4b6bbe26ad50 +Block 0005 [ 38]: 6af6d1b08b1e4c18 +Block 0005 [ 39]: 4e33c9a639b36584 +Block 0005 [ 40]: a5ec9a23696f2405 +Block 0005 [ 41]: 54c69b780e8359a4 +Block 0005 [ 42]: 1b6458e286139e45 +Block 0005 [ 43]: 4bb6edeecdc79d8f +Block 0005 [ 44]: 87a0dfbfedb05191 +Block 0005 [ 45]: e5e875ee54c10ac7 +Block 0005 [ 46]: 412b2c305de89dfb +Block 0005 [ 47]: c6968cb2716aee54 +Block 0005 [ 48]: 9c17a0b772b6afa9 +Block 0005 [ 49]: b37a9be1538f0d5c +Block 0005 [ 50]: 3783ecd08d568855 +Block 0005 [ 51]: 66a9730d0497e4a8 +Block 0005 [ 52]: 946f1aa176c96d55 +Block 0005 [ 53]: b932be7315159d78 +Block 0005 [ 54]: 82c9b2f8adf545bd +Block 0005 [ 55]: 939c6ec3e66ab28b +Block 0005 [ 56]: b705f1ba2b442544 +Block 0005 [ 57]: cbfc1c2c0437fe1e +Block 0005 [ 58]: b5d171e06a5b5d94 +Block 0005 [ 59]: b65e7548e4290c0f +Block 0005 [ 60]: f6c904d14c184ba5 +Block 0005 [ 61]: 821801c0227e5b4f +Block 0005 [ 62]: bb008a3cd10a6657 +Block 0005 [ 63]: c8291b37511aba68 +Block 0005 [ 64]: ece5c306e15e7e96 +Block 0005 [ 65]: acee9e6ec3a7d921 +Block 0005 [ 66]: 8d8bebf10b2b4e4a +Block 0005 [ 67]: 409a9c93cf143f39 +Block 0005 [ 68]: 8c4ff0acc0d623a8 +Block 0005 [ 69]: 5ac7f3561a57f8d7 +Block 0005 [ 70]: fe65f00fb63d9dc7 +Block 0005 [ 71]: 01ff21e3cc1f8c6d +Block 0005 [ 72]: 84ffd934b4ebac8d +Block 0005 [ 73]: d21cd538a03232b2 +Block 0005 [ 74]: 781980610b7ec7cc +Block 0005 [ 75]: 2dbdd60528669805 +Block 0005 [ 76]: dc589c07d2a661e0 +Block 0005 [ 77]: 6cdcdafe025e33bd +Block 0005 [ 78]: a6ee8906b4c238df +Block 0005 [ 79]: c7143cca9dfeb415 +Block 0005 [ 80]: aa309e94e2fd2005 +Block 0005 [ 81]: d5bc5fd1818a2a9c +Block 0005 [ 82]: b0bcb4f73a966742 +Block 0005 [ 83]: 691034d3a4ea3d87 +Block 0005 [ 84]: 624b83b2ae0a36de +Block 0005 [ 85]: ccf54a71ef5cea9e +Block 0005 [ 86]: 98bd28052ea1d0f6 +Block 0005 [ 87]: 991501ef48472656 +Block 0005 [ 88]: c1d7473fdfb08370 +Block 0005 [ 89]: 2aa6152966242ae0 +Block 0005 [ 90]: 2d40e50c8215c370 +Block 0005 [ 91]: 56021a10aadab2e1 +Block 0005 [ 92]: 428a2318bda6f282 +Block 0005 [ 93]: c9e69a34fb9adcab +Block 0005 [ 94]: f1268c07cafdd8f1 +Block 0005 [ 95]: fd32e5974bf062eb +Block 0005 [ 96]: 1cdd56ebf5ba0507 +Block 0005 [ 97]: 5e3b11a31da2c99f +Block 0005 [ 98]: e5415a8ecdafc162 +Block 0005 [ 99]: 94a646f31cc04a45 +Block 0005 [100]: dc9b968dee2c9fa4 +Block 0005 [101]: f11bfa8be33bc828 +Block 0005 [102]: 1e2665e7c975664b +Block 0005 [103]: 91e3dd22bf7a1234 +Block 0005 [104]: 5582d2aacadf6df0 +Block 0005 [105]: 849d237cdd44ae40 +Block 0005 [106]: a13b1559d1af395e +Block 0005 [107]: 9cce1d491b39e1c6 +Block 0005 [108]: 70eaf0cc0fabdec7 +Block 0005 [109]: 58afa558c5085ad4 +Block 0005 [110]: 1df4bf8dc0d9fdc7 +Block 0005 [111]: 374ccf1f6c700a11 +Block 0005 [112]: f2359455e8a72dee +Block 0005 [113]: 783b339c402acef2 +Block 0005 [114]: 68db356ec17dd7e5 +Block 0005 [115]: e0a6272e6e7d4674 +Block 0005 [116]: 4378e4ce8e70fdd1 +Block 0005 [117]: fde5aad0d4eabc79 +Block 0005 [118]: fee53869ca65168f +Block 0005 [119]: 0693da99c2db079a +Block 0005 [120]: 634b973c45b8868e +Block 0005 [121]: e92f4f9f9e1bc735 +Block 0005 [122]: b139bd321251d73a +Block 0005 [123]: fdc440e07c89d790 +Block 0005 [124]: c1aa16205718b13e +Block 0005 [125]: 9025eabecbc713a9 +Block 0005 [126]: 3908a16b231be5ed +Block 0005 [127]: f25730b2867d5c06 +Block 0006 [ 0]: 7b857b3d24027d7a +Block 0006 [ 1]: 670e23eb8eddb301 +Block 0006 [ 2]: 98ea5e36eb4479e4 +Block 0006 [ 3]: acd0b9ac97eff6d6 +Block 0006 [ 4]: 2d5d6e6fff1f133e +Block 0006 [ 5]: 3e9c9726b56417fd +Block 0006 [ 6]: 0b2113fa483c195b +Block 0006 [ 7]: 0d7815ec05700375 +Block 0006 [ 8]: c9ce6d95ea5b4118 +Block 0006 [ 9]: 84d2a7f11bb92f51 +Block 0006 [ 10]: ff88f9ad86a45ec7 +Block 0006 [ 11]: daabf03c40b04299 +Block 0006 [ 12]: a36b60cd4f1f18d9 +Block 0006 [ 13]: 5276d5d41107068d +Block 0006 [ 14]: 3c8812f7fae8511a +Block 0006 [ 15]: 00ea06ce780472ef +Block 0006 [ 16]: da887f5b84c9446a +Block 0006 [ 17]: 22963be370b288ac +Block 0006 [ 18]: e28b0a612196ecfb +Block 0006 [ 19]: 3464fdec28ec9b0a +Block 0006 [ 20]: fa6ec6bad95f4402 +Block 0006 [ 21]: 432bef4e4df0f410 +Block 0006 [ 22]: 65a1743f094c0a95 +Block 0006 [ 23]: 6d5fe021a6e4c314 +Block 0006 [ 24]: 063eefd04decef61 +Block 0006 [ 25]: 9ba8d1161a35e920 +Block 0006 [ 26]: c07b0a96bd9d8ad9 +Block 0006 [ 27]: bb3445c95c196591 +Block 0006 [ 28]: 03be97064ca1affa +Block 0006 [ 29]: 2c3516d2305cc315 +Block 0006 [ 30]: 9ee9f1966dba334a +Block 0006 [ 31]: c0084070fe554f10 +Block 0006 [ 32]: 9748b391ae2fab76 +Block 0006 [ 33]: 33126d30ae96ffa3 +Block 0006 [ 34]: 39014f0169e1c26f +Block 0006 [ 35]: bc404f8df7c3b6ac +Block 0006 [ 36]: 6f38d8b40e328fa7 +Block 0006 [ 37]: ea41a3c6af4de161 +Block 0006 [ 38]: 3c6ce1d92d28b6f7 +Block 0006 [ 39]: 0f21c2beb3532f2f +Block 0006 [ 40]: e97e210adf0719ed +Block 0006 [ 41]: 675a5e9cb9db4567 +Block 0006 [ 42]: 31e1a7b269d6b285 +Block 0006 [ 43]: 44ac563ff5e53808 +Block 0006 [ 44]: d0d372a450bc4ada +Block 0006 [ 45]: 56920c3e83187e3f +Block 0006 [ 46]: 6050aeab33d1bc78 +Block 0006 [ 47]: d3531018166aadcb +Block 0006 [ 48]: e17ecc7ab99821d8 +Block 0006 [ 49]: 6d834b4f7339ffb0 +Block 0006 [ 50]: 3204684b11bc5980 +Block 0006 [ 51]: ea1151eabade396e +Block 0006 [ 52]: 6128c25e683d160c +Block 0006 [ 53]: 8c0ef568267bea08 +Block 0006 [ 54]: 03b1bd05ca7e5001 +Block 0006 [ 55]: 38cac78af248a0b9 +Block 0006 [ 56]: 10ffb451715cee6b +Block 0006 [ 57]: ef6d04a4f1ec1d74 +Block 0006 [ 58]: 6a297e69b85cd261 +Block 0006 [ 59]: 2bc18ab7193c4c21 +Block 0006 [ 60]: cb7f4bc462ef08b2 +Block 0006 [ 61]: 4ee107eb89fb137e +Block 0006 [ 62]: be0f603727354ad1 +Block 0006 [ 63]: afd1b9370c0d7968 +Block 0006 [ 64]: 0305d9efc0311865 +Block 0006 [ 65]: 1032112aeaa89455 +Block 0006 [ 66]: ce49fb76a0b83076 +Block 0006 [ 67]: ec6e151b76fa77d8 +Block 0006 [ 68]: 371418d689a2d5a4 +Block 0006 [ 69]: d9c5334e0c47a1cd +Block 0006 [ 70]: 913eaa395a285969 +Block 0006 [ 71]: f08763e057afa76e +Block 0006 [ 72]: 7631cdccff84471b +Block 0006 [ 73]: a342a0f5e6f83766 +Block 0006 [ 74]: 4d695ec17f4bbedb +Block 0006 [ 75]: 0b545b7424550c2a +Block 0006 [ 76]: ee0ed6a60ba12640 +Block 0006 [ 77]: feedf9c1dd874bbb +Block 0006 [ 78]: d98bc0d816cb95a7 +Block 0006 [ 79]: eb0741af1baad547 +Block 0006 [ 80]: 8e93a084a2424ad7 +Block 0006 [ 81]: c3cd385ac22c3c52 +Block 0006 [ 82]: 1c77772d8c2c0027 +Block 0006 [ 83]: 21b2168299524a1b +Block 0006 [ 84]: 9567267e57296be0 +Block 0006 [ 85]: b56c8396a3b091b0 +Block 0006 [ 86]: c7c10a15a74e8571 +Block 0006 [ 87]: ea1c3042c44207d6 +Block 0006 [ 88]: 6742e3b27f35614e +Block 0006 [ 89]: bce288c416a4a1a0 +Block 0006 [ 90]: 65fcd11e00339496 +Block 0006 [ 91]: e67e7eded2b536a1 +Block 0006 [ 92]: 5d098437a8a3ebd4 +Block 0006 [ 93]: 31795fa9106a4bc0 +Block 0006 [ 94]: a7ce44f182090b1b +Block 0006 [ 95]: 751260bb3a27d1aa +Block 0006 [ 96]: 33503caa08511bf0 +Block 0006 [ 97]: 536660418ba83289 +Block 0006 [ 98]: 87b8a807cc5293b5 +Block 0006 [ 99]: 51d441ea07531a62 +Block 0006 [100]: e81ae81332626b23 +Block 0006 [101]: 198f2e7ad0bdde83 +Block 0006 [102]: 6602ecd3435f38fa +Block 0006 [103]: ef4ed5ae8c04a191 +Block 0006 [104]: ad7118965ce19207 +Block 0006 [105]: beceb37944041b29 +Block 0006 [106]: 9950cc0263c218af +Block 0006 [107]: dd901769a63cf8ad +Block 0006 [108]: e937cffb5bcf57da +Block 0006 [109]: 757d31c1038a3efc +Block 0006 [110]: e707bd06b982ec9b +Block 0006 [111]: 344b079fdaefe261 +Block 0006 [112]: c948b487c045297f +Block 0006 [113]: 7c5efd50b6b9fc05 +Block 0006 [114]: 793518d8884351b5 +Block 0006 [115]: 03a220cc3b6b0bac +Block 0006 [116]: 8acaeeb52f5bf9db +Block 0006 [117]: 6b6ca24c516f3630 +Block 0006 [118]: f1f18a0d0dabb238 +Block 0006 [119]: 3b6dd6c80029e41c +Block 0006 [120]: 61e47fac13560b97 +Block 0006 [121]: 40f95b60e3f455b3 +Block 0006 [122]: c5c12caa860093d0 +Block 0006 [123]: d6eebf3713c71294 +Block 0006 [124]: e8771758ded57a2a +Block 0006 [125]: 2ffc02a6788b96fb +Block 0006 [126]: a40be550c4eddc5f +Block 0006 [127]: 81549e4142e1e679 +Block 0007 [ 0]: cbd74b5de20ab9d1 +Block 0007 [ 1]: 069f835c6c371c52 +Block 0007 [ 2]: 549921e520e39b0b +Block 0007 [ 3]: ecafef6e201dd829 +Block 0007 [ 4]: e895078c61997563 +Block 0007 [ 5]: eeee9440731fef0e +Block 0007 [ 6]: e95318ed6834ae3b +Block 0007 [ 7]: 027475fbbf66dcdf +Block 0007 [ 8]: a43a9293b3e38f3b +Block 0007 [ 9]: 1f9915da007f1592 +Block 0007 [ 10]: ae236073ad2102cc +Block 0007 [ 11]: 9e25b23b79285968 +Block 0007 [ 12]: 7b706f1d817899d4 +Block 0007 [ 13]: 84539b7008808bfe +Block 0007 [ 14]: 0950e99c573cedc3 +Block 0007 [ 15]: e66b2657900c9272 +Block 0007 [ 16]: 0b96a42e35afbc8b +Block 0007 [ 17]: d478a0000f487073 +Block 0007 [ 18]: 20ed2e94d9ad0fee +Block 0007 [ 19]: b2c41d52cfd89c96 +Block 0007 [ 20]: 34b98f3bdd359a1b +Block 0007 [ 21]: f4b8f4cd882469b5 +Block 0007 [ 22]: de740288c4dd8814 +Block 0007 [ 23]: bb6c3dcddd7bf5e1 +Block 0007 [ 24]: d4d1dd393a008f68 +Block 0007 [ 25]: 075eff96e269493a +Block 0007 [ 26]: b86e3218edd9bc08 +Block 0007 [ 27]: 42961d0ae2475362 +Block 0007 [ 28]: 36e917be404ad4ae +Block 0007 [ 29]: 7b85718ee0d3a183 +Block 0007 [ 30]: cff2414b88a46e65 +Block 0007 [ 31]: 4d16a9abae20145f +Block 0007 [ 32]: 9af2efcbda4d978b +Block 0007 [ 33]: a298fc0b755813ba +Block 0007 [ 34]: b25ada405da06d1e +Block 0007 [ 35]: fa055c5401c7d4f1 +Block 0007 [ 36]: 5510c526f81544ec +Block 0007 [ 37]: 5220eac16fa61f19 +Block 0007 [ 38]: ca9217915cfebd40 +Block 0007 [ 39]: 21dce31f7e0bbf6e +Block 0007 [ 40]: 735629aba76c5193 +Block 0007 [ 41]: 5650bebd950400f9 +Block 0007 [ 42]: d88244c4ea7e1988 +Block 0007 [ 43]: 978894543c3aced7 +Block 0007 [ 44]: 05ff38136fd6eb33 +Block 0007 [ 45]: b5688908d324bcdf +Block 0007 [ 46]: 2bbab520f88ef570 +Block 0007 [ 47]: 7a7c83601701b57c +Block 0007 [ 48]: 255efc836007b5e6 +Block 0007 [ 49]: 1b30dd3585c9b70b +Block 0007 [ 50]: a8bd72c447522052 +Block 0007 [ 51]: 1403f1e5e5fe134b +Block 0007 [ 52]: ff1216684f23c30b +Block 0007 [ 53]: fcd6579dc09d9f85 +Block 0007 [ 54]: fce3fac568271041 +Block 0007 [ 55]: b12b60ff57582a3f +Block 0007 [ 56]: 1e2dd9bba2500f5b +Block 0007 [ 57]: 9a7de93d03ced58a +Block 0007 [ 58]: 4d3df93e0200e39b +Block 0007 [ 59]: e1788059b82c7370 +Block 0007 [ 60]: 3f7ecc5a406cdd2f +Block 0007 [ 61]: 06349b60a500246a +Block 0007 [ 62]: 4c98b89ece9ff485 +Block 0007 [ 63]: 5bb16f3627484aa5 +Block 0007 [ 64]: 813f6f26460cc402 +Block 0007 [ 65]: 67410f23f96e2365 +Block 0007 [ 66]: 73e92652b073b3b0 +Block 0007 [ 67]: ebff9c4a696d5e98 +Block 0007 [ 68]: 9fb510070498976f +Block 0007 [ 69]: be13bab83c7eec26 +Block 0007 [ 70]: 653e037d01574d3a +Block 0007 [ 71]: e97d4817e3df0f7c +Block 0007 [ 72]: 5d7324090040b36e +Block 0007 [ 73]: bf38fc9dedb9f5f2 +Block 0007 [ 74]: e5c653ec3e6a4793 +Block 0007 [ 75]: 4da77df57c179235 +Block 0007 [ 76]: 2c649e286f0c43ed +Block 0007 [ 77]: be652eadd041075f +Block 0007 [ 78]: 79069677f34cffd3 +Block 0007 [ 79]: 8521077f81ee5286 +Block 0007 [ 80]: 32ffd57924cce5e3 +Block 0007 [ 81]: a08d28a183c2820f +Block 0007 [ 82]: 084ddd57f4e7a4af +Block 0007 [ 83]: f20ece27cf7b3070 +Block 0007 [ 84]: 92765b71341157c3 +Block 0007 [ 85]: fece00bc6540950b +Block 0007 [ 86]: d535974bf65eff54 +Block 0007 [ 87]: 56381f317bfdcbf4 +Block 0007 [ 88]: 99ad3075084c09b3 +Block 0007 [ 89]: e77a51ba4c432c1d +Block 0007 [ 90]: 23414e1a6a2cb731 +Block 0007 [ 91]: 2eb44b11c04487cc +Block 0007 [ 92]: eb7fa79b38d738b9 +Block 0007 [ 93]: 2186fe3f06fe37be +Block 0007 [ 94]: 09d20f838aed21e6 +Block 0007 [ 95]: 20763bae6782ed73 +Block 0007 [ 96]: 7f77e32f99cb82a5 +Block 0007 [ 97]: 54732576ff03cd99 +Block 0007 [ 98]: f24943112b33c21b +Block 0007 [ 99]: ba870e486d3d25fb +Block 0007 [100]: f2f0d442cdee87f6 +Block 0007 [101]: 9967a1189153605a +Block 0007 [102]: 0659c8d86e94106e +Block 0007 [103]: d15c1188dbf88255 +Block 0007 [104]: 49c1b38e89bff99e +Block 0007 [105]: 897a56428d590bea +Block 0007 [106]: 8a69fc0a8d9fdc49 +Block 0007 [107]: 4053e20eedb6240f +Block 0007 [108]: bda7f38ff8060e5b +Block 0007 [109]: 26662d48fec1b428 +Block 0007 [110]: dd1807eb486ca979 +Block 0007 [111]: fbd38679dbda71ce +Block 0007 [112]: 7a003a6a3f9a8337 +Block 0007 [113]: 1b97d4193f09c77c +Block 0007 [114]: 4102e8562e63c88e +Block 0007 [115]: d7113253d81dab54 +Block 0007 [116]: fb4d461dbb0f2503 +Block 0007 [117]: 6ce29c2c44c5bc85 +Block 0007 [118]: ad164eeb092acedc +Block 0007 [119]: 8dcd7d0a350897e6 +Block 0007 [120]: d31c533da647ca96 +Block 0007 [121]: 0fbbd94ef2a850a8 +Block 0007 [122]: 87a1f639157371a0 +Block 0007 [123]: 963a2edc6b8eea2b +Block 0007 [124]: 4d85f73159a7c1d2 +Block 0007 [125]: 521258a9c11cf845 +Block 0007 [126]: b1e156d3aded4403 +Block 0007 [127]: bab4461b92a6d246 +Block 0008 [ 0]: 49810a135d23848d +Block 0008 [ 1]: c5fb6b64acec2f07 +Block 0008 [ 2]: b21039c31baa6a85 +Block 0008 [ 3]: 59ddd031e891f6c1 +Block 0008 [ 4]: fbd02629488b6f03 +Block 0008 [ 5]: 750daf568847dcec +Block 0008 [ 6]: 5a831b03655916bb +Block 0008 [ 7]: 13e56690ccfea95e +Block 0008 [ 8]: 8d0ebc46bbca100f +Block 0008 [ 9]: ea51440b7e612514 +Block 0008 [ 10]: 335baaae9400aaac +Block 0008 [ 11]: b5933841b061ce8a +Block 0008 [ 12]: 19508e7ed81c705a +Block 0008 [ 13]: 1fab466e7a08e521 +Block 0008 [ 14]: 0eb76ec6880aabc5 +Block 0008 [ 15]: 38ede80f16088a3f +Block 0008 [ 16]: 9bd9db78e66ba36c +Block 0008 [ 17]: 59ac330b234f7859 +Block 0008 [ 18]: 5471aae498410f2d +Block 0008 [ 19]: e46c4a537ac489fc +Block 0008 [ 20]: 1e150a4fc119f670 +Block 0008 [ 21]: 1f46297a17317c1b +Block 0008 [ 22]: 77ea0959747eff81 +Block 0008 [ 23]: 49fd0b629bb908a2 +Block 0008 [ 24]: f992e47ff5e9d868 +Block 0008 [ 25]: a3413f49c7c9d95e +Block 0008 [ 26]: cf82992aa2d170b0 +Block 0008 [ 27]: 6c5af6b653da5d23 +Block 0008 [ 28]: db2c84f1046363a5 +Block 0008 [ 29]: 0162677ae885ebbd +Block 0008 [ 30]: 4ad08976d9ac5cd5 +Block 0008 [ 31]: cab94bb197e87fde +Block 0008 [ 32]: b8108a671bd72082 +Block 0008 [ 33]: 0bc24e9246cc32df +Block 0008 [ 34]: b8372308888de12a +Block 0008 [ 35]: a3c9f48c3da21e62 +Block 0008 [ 36]: 4950e962fb134b36 +Block 0008 [ 37]: b2a057b57cbb42f8 +Block 0008 [ 38]: 48d43b3afb165bcf +Block 0008 [ 39]: 437889cf607a9e60 +Block 0008 [ 40]: 06151c357288e43f +Block 0008 [ 41]: dd22524b377abd1f +Block 0008 [ 42]: 2991dc1a5ba6a272 +Block 0008 [ 43]: 6e8462e3c4c4a52e +Block 0008 [ 44]: c29b6c46e28d584e +Block 0008 [ 45]: c42ea1bbbc1b2850 +Block 0008 [ 46]: 7dbaebcb56d11ba8 +Block 0008 [ 47]: 708d3efac76f39a9 +Block 0008 [ 48]: 4a2f95422230c076 +Block 0008 [ 49]: 9a0a954e98315e7b +Block 0008 [ 50]: 5defbf0083498f26 +Block 0008 [ 51]: 52bf33f0e7c85da4 +Block 0008 [ 52]: 59145e8443478adc +Block 0008 [ 53]: 6b19b474dd7f76ba +Block 0008 [ 54]: 3f45c02a6b921241 +Block 0008 [ 55]: 840224b795f8b504 +Block 0008 [ 56]: f0d45196a750b0b0 +Block 0008 [ 57]: 25a127d6701f5652 +Block 0008 [ 58]: ff91a51c1a397e29 +Block 0008 [ 59]: 2dcafc69b2117ecc +Block 0008 [ 60]: 6435dac1235931b5 +Block 0008 [ 61]: 0a4ad316c9bbe7c8 +Block 0008 [ 62]: 859f3b5ce4df8f7d +Block 0008 [ 63]: 2160d3995fc309d1 +Block 0008 [ 64]: f75150bda784be85 +Block 0008 [ 65]: 43209c0f168d6ccd +Block 0008 [ 66]: d722ce6d5236fe8e +Block 0008 [ 67]: 61ab9b1730e0a0f2 +Block 0008 [ 68]: 0dd835d189f07128 +Block 0008 [ 69]: 6262694c58a27366 +Block 0008 [ 70]: 953fcc80a60a385a +Block 0008 [ 71]: d66a9dc26fa4270f +Block 0008 [ 72]: 8c576d5d2bdc352b +Block 0008 [ 73]: 2393381634b054c8 +Block 0008 [ 74]: b7c1d4a34dd6fa51 +Block 0008 [ 75]: 78e43d59bd6ee5c7 +Block 0008 [ 76]: b0d26b781e9db988 +Block 0008 [ 77]: a3d1a106c4bdce54 +Block 0008 [ 78]: 2d0ea43d9f3e1ccb +Block 0008 [ 79]: b5190de85c5ede44 +Block 0008 [ 80]: db944f7005a335dc +Block 0008 [ 81]: 4792f06c1c01aa49 +Block 0008 [ 82]: 447bc88f6aad8315 +Block 0008 [ 83]: 2e0f90160429ba9e +Block 0008 [ 84]: 8d3e34c597304f3b +Block 0008 [ 85]: b074f272830745ca +Block 0008 [ 86]: c57f98d934bfb801 +Block 0008 [ 87]: c4f9f1e0778d1b75 +Block 0008 [ 88]: 7b65c984cd76a09b +Block 0008 [ 89]: 99ab030c32f5c65f +Block 0008 [ 90]: 533ed86b000db977 +Block 0008 [ 91]: fb2e743093cb4a6a +Block 0008 [ 92]: a037ae30c9bbab47 +Block 0008 [ 93]: b79a3d0425bb1fb5 +Block 0008 [ 94]: 8f3bffc4de6c8a1c +Block 0008 [ 95]: 337f68561fca37de +Block 0008 [ 96]: 71e8a7aecc2c8e5b +Block 0008 [ 97]: a069fdd75748f6c2 +Block 0008 [ 98]: d0b72d9d6f35f9ff +Block 0008 [ 99]: c60ddb9972fa9637 +Block 0008 [100]: 67d8d738d603c096 +Block 0008 [101]: c01884c88af7e5eb +Block 0008 [102]: 233ea0fb4074af49 +Block 0008 [103]: fc512d625685a05c +Block 0008 [104]: 825a1ad4f9b32360 +Block 0008 [105]: a8140fbebb3e9f88 +Block 0008 [106]: 2c75b6eb2e0c729d +Block 0008 [107]: 2245291ba5bb71f1 +Block 0008 [108]: 0f8b727153c9dd26 +Block 0008 [109]: 5ffbc2a779f4f875 +Block 0008 [110]: 5403a28def13fdb7 +Block 0008 [111]: e2b550641220e443 +Block 0008 [112]: daab51866915e110 +Block 0008 [113]: 6ef62f9d1561ddd8 +Block 0008 [114]: 07be6b68fffb670e +Block 0008 [115]: 8b2f23c509e7a758 +Block 0008 [116]: d3f2d3974ac24e65 +Block 0008 [117]: d03efadd3456fe74 +Block 0008 [118]: 24e47b1737f64d0b +Block 0008 [119]: 096eacd3c4542623 +Block 0008 [120]: 69004ef3d7635037 +Block 0008 [121]: f58c7cb54f9a7dc0 +Block 0008 [122]: 596f8e75930c52d7 +Block 0008 [123]: 020df1d3b0948128 +Block 0008 [124]: 7c47d5b3983b3c68 +Block 0008 [125]: 052123dc6c678c3f +Block 0008 [126]: 0960000fab5b881a +Block 0008 [127]: d79461cc07c58a09 +Block 0009 [ 0]: 8f10324fec56e694 +Block 0009 [ 1]: d7ed856c90f1792b +Block 0009 [ 2]: 81c93c47655d28e1 +Block 0009 [ 3]: 00f1a9f07340d401 +Block 0009 [ 4]: c1f826207229e1de +Block 0009 [ 5]: f0d4e3753fe51344 +Block 0009 [ 6]: c247c5e6b921fa36 +Block 0009 [ 7]: 533b9c2edadba55c +Block 0009 [ 8]: 9bdbbede3a72fa25 +Block 0009 [ 9]: ce4640f3d00d0efb +Block 0009 [ 10]: a81d8a468d49bda4 +Block 0009 [ 11]: 8b5d127765966b11 +Block 0009 [ 12]: 9e0523bb613da0a8 +Block 0009 [ 13]: 0d384fbafe2fbb48 +Block 0009 [ 14]: 9797872ada1e40e6 +Block 0009 [ 15]: dc4f1ab87690ac0c +Block 0009 [ 16]: df15fe4e883a1279 +Block 0009 [ 17]: 309fe51a46dbacbb +Block 0009 [ 18]: 514715fbb6e3495e +Block 0009 [ 19]: d84f1004b3b0fee1 +Block 0009 [ 20]: 4eedebbcc5229e81 +Block 0009 [ 21]: 6a462f88c59008c8 +Block 0009 [ 22]: f77c6c77c51c98f4 +Block 0009 [ 23]: 33fb105b08c16694 +Block 0009 [ 24]: f99547074a293b3d +Block 0009 [ 25]: 249c163feda9fd8d +Block 0009 [ 26]: dcad1e67251ceb28 +Block 0009 [ 27]: 804887249ad5f39b +Block 0009 [ 28]: 2308ad17da1325e8 +Block 0009 [ 29]: 86597bbcfaa35975 +Block 0009 [ 30]: bd680ac7468b0754 +Block 0009 [ 31]: 342c12b38df254c7 +Block 0009 [ 32]: af68032dd2f83449 +Block 0009 [ 33]: 27bb2dfa39194e08 +Block 0009 [ 34]: 3f59dd7618ff8dc0 +Block 0009 [ 35]: 0107202b45469b55 +Block 0009 [ 36]: c0d5858005acdaeb +Block 0009 [ 37]: 458e2dd418b389ca +Block 0009 [ 38]: 6797aa6e279ff000 +Block 0009 [ 39]: 377d84675641a0b2 +Block 0009 [ 40]: 8ab76786012cf2ca +Block 0009 [ 41]: 682e9edbf126ce86 +Block 0009 [ 42]: 2c8027347b86cdb8 +Block 0009 [ 43]: a6b43bd58d550cc3 +Block 0009 [ 44]: c85e4ed50e2825fd +Block 0009 [ 45]: aa468c840ed8925c +Block 0009 [ 46]: 33dce055f80b3e04 +Block 0009 [ 47]: 5cf91043e6438686 +Block 0009 [ 48]: 7027e073ee1e6a0d +Block 0009 [ 49]: d6523597b0efd084 +Block 0009 [ 50]: 06beff55ac8ad958 +Block 0009 [ 51]: 11a7295f9c49415c +Block 0009 [ 52]: 2d6ad8ebe51699e6 +Block 0009 [ 53]: c669cf5a75cded9c +Block 0009 [ 54]: f9cbe12aaa048c0f +Block 0009 [ 55]: 61f64d7b974376ec +Block 0009 [ 56]: 27ed0511d5d62b2e +Block 0009 [ 57]: d6c99d8a5a63b963 +Block 0009 [ 58]: 6cf61de8bf3b3c34 +Block 0009 [ 59]: 260c0c298313625b +Block 0009 [ 60]: 5f2f13989a4e3ac7 +Block 0009 [ 61]: f6348e4014ced3ea +Block 0009 [ 62]: 8f64770fff6e8e52 +Block 0009 [ 63]: d98d39df837a1d24 +Block 0009 [ 64]: 42cd4f3d324607f9 +Block 0009 [ 65]: 6a05b3eb6bc86b52 +Block 0009 [ 66]: 54ab7895dfd5ef3e +Block 0009 [ 67]: 87ce4c55ce837d03 +Block 0009 [ 68]: 0dd5bf6275289bde +Block 0009 [ 69]: 013249225e8064f1 +Block 0009 [ 70]: 9e3d201d4565f7c8 +Block 0009 [ 71]: 2fdae8c6facce85b +Block 0009 [ 72]: d5bc766cfb5a3a28 +Block 0009 [ 73]: 439960f185fce94a +Block 0009 [ 74]: ece23c957b11e9d5 +Block 0009 [ 75]: f6e0b3533a9f3f95 +Block 0009 [ 76]: a22fc51d008e4bf9 +Block 0009 [ 77]: cb680f02e1990cfa +Block 0009 [ 78]: 185c7bdaa5dcf252 +Block 0009 [ 79]: 453f6e9af5d0f170 +Block 0009 [ 80]: aa5b6c77c3fb3d90 +Block 0009 [ 81]: 93eb8c30d16ffc4d +Block 0009 [ 82]: a39c62ec54134634 +Block 0009 [ 83]: e0a7caafc2db836c +Block 0009 [ 84]: 83875234b21af749 +Block 0009 [ 85]: da643b9c28847b1f +Block 0009 [ 86]: 351aa155caaea342 +Block 0009 [ 87]: 0bcdf67e7b60d68f +Block 0009 [ 88]: dd02d20ca2b455de +Block 0009 [ 89]: d1ff457af51b13e2 +Block 0009 [ 90]: ad85fd80a21341a7 +Block 0009 [ 91]: 49e4c98c7993c631 +Block 0009 [ 92]: 10e271200df6f8dd +Block 0009 [ 93]: 3f2f7eb823487a2f +Block 0009 [ 94]: c5a47081e476ea08 +Block 0009 [ 95]: 8d9ce2305405aa84 +Block 0009 [ 96]: 458a19672aed7d90 +Block 0009 [ 97]: 717e5c2a2b0072a1 +Block 0009 [ 98]: 798ca280ae0916d9 +Block 0009 [ 99]: 5682c3918180e4e3 +Block 0009 [100]: 4415c9d3b81cf579 +Block 0009 [101]: f33257c46ac83ff5 +Block 0009 [102]: d8a0f2223c150a81 +Block 0009 [103]: 754789e94abc1903 +Block 0009 [104]: 2ad6c644cef873b3 +Block 0009 [105]: 89c251b261082328 +Block 0009 [106]: 677d37f1ba1b3057 +Block 0009 [107]: cdd6475b9ad6217d +Block 0009 [108]: 7f4ded50c6fe7f40 +Block 0009 [109]: a4cda2e8d74eaceb +Block 0009 [110]: 904b3a87abc580f1 +Block 0009 [111]: 4e7cbfca207fd75e +Block 0009 [112]: 77bf2f8d2fb3795a +Block 0009 [113]: c688b3b54922e3c2 +Block 0009 [114]: 2ecfaff08f7126c4 +Block 0009 [115]: cc4d3d8658ed74cc +Block 0009 [116]: b89ce6baa994bc9a +Block 0009 [117]: 3730d3da60644764 +Block 0009 [118]: a7a865cceffafce8 +Block 0009 [119]: 1109b27e1103515a +Block 0009 [120]: 1d4c47d0c96e6910 +Block 0009 [121]: 482ffef73d24e21c +Block 0009 [122]: 21c2b643561ae19e +Block 0009 [123]: 1afe123081bf17f6 +Block 0009 [124]: 482515b28e1e40d7 +Block 0009 [125]: 60089b8f8007589c +Block 0009 [126]: 9a36c2163a57af6b +Block 0009 [127]: 2691dac7ff440545 +Block 0010 [ 0]: 4c0cae7a5f3383b2 +Block 0010 [ 1]: 2746eaf25922ad05 +Block 0010 [ 2]: e9e80804d1b3f226 +Block 0010 [ 3]: 59fa228adb1eda14 +Block 0010 [ 4]: e582cbb4f3b9576f +Block 0010 [ 5]: b80c019e0ea7eab8 +Block 0010 [ 6]: a73739cc9db1ad73 +Block 0010 [ 7]: a7b0cd338fa1cf1b +Block 0010 [ 8]: 252c67d72c6ac4a8 +Block 0010 [ 9]: 0c3c0e6781f3eb81 +Block 0010 [ 10]: fe1f102df9f0b806 +Block 0010 [ 11]: b89b9e173019c6cf +Block 0010 [ 12]: c5013011387f50f6 +Block 0010 [ 13]: 2eab89d0488a9a7e +Block 0010 [ 14]: 02ca43db72497e3e +Block 0010 [ 15]: 307203eb009cf75b +Block 0010 [ 16]: 05b01e3aefd4878f +Block 0010 [ 17]: 3612ac74f0d5170a +Block 0010 [ 18]: 8daf36dce9f2e9a7 +Block 0010 [ 19]: 54c3330f25910c57 +Block 0010 [ 20]: f87715fa424a0839 +Block 0010 [ 21]: ad1332fccae47161 +Block 0010 [ 22]: b8a422e2b5582533 +Block 0010 [ 23]: e5befd94beb663cd +Block 0010 [ 24]: 60c4ea23220d90b7 +Block 0010 [ 25]: 901eaf711ce8764e +Block 0010 [ 26]: d6580e9182bd3903 +Block 0010 [ 27]: b65cac8618125e29 +Block 0010 [ 28]: 9ecf0b829ca00680 +Block 0010 [ 29]: 38a8a24b66b897f0 +Block 0010 [ 30]: 484c4c95e098e64a +Block 0010 [ 31]: 1a6ae9168d0447cd +Block 0010 [ 32]: cf313c511f61b901 +Block 0010 [ 33]: 8bae89882d5e7a01 +Block 0010 [ 34]: 656441ea59351b15 +Block 0010 [ 35]: e31514645b38d9a0 +Block 0010 [ 36]: 1d6dadf5597c1815 +Block 0010 [ 37]: 3da76ad8a5c580bb +Block 0010 [ 38]: e5e3c09d8c592f29 +Block 0010 [ 39]: 16f27dddce30cf95 +Block 0010 [ 40]: 79f1bea8070d35a0 +Block 0010 [ 41]: bd7b9a3490b907ad +Block 0010 [ 42]: a07cc139ec3bd656 +Block 0010 [ 43]: 5233b458e20d03f6 +Block 0010 [ 44]: 4acbe33dcfa5c649 +Block 0010 [ 45]: 87d5ad1d40b8b202 +Block 0010 [ 46]: 3976aa47398125c9 +Block 0010 [ 47]: d291614f69de847e +Block 0010 [ 48]: 13a16f5b281fb9d4 +Block 0010 [ 49]: 1c797bc612ca1f82 +Block 0010 [ 50]: f5beae4f224c9321 +Block 0010 [ 51]: 7db0d5ed4c07630d +Block 0010 [ 52]: beb7330445c2ca6d +Block 0010 [ 53]: e731beeb9d467c0b +Block 0010 [ 54]: 1d54feb368611ee7 +Block 0010 [ 55]: 867e42cb54d1de3c +Block 0010 [ 56]: 0cbed3a4b9f2cb06 +Block 0010 [ 57]: 5fd4987bd2232365 +Block 0010 [ 58]: cdb5d06722188f40 +Block 0010 [ 59]: 1874ea0a91f80e61 +Block 0010 [ 60]: a2eee7960b21f392 +Block 0010 [ 61]: 9be712e323a7b2c3 +Block 0010 [ 62]: 34579ed0a814abd8 +Block 0010 [ 63]: f91ecee07025c62c +Block 0010 [ 64]: b1152f25e6c4975e +Block 0010 [ 65]: 5423198f63ac9610 +Block 0010 [ 66]: 2c047a3e33046d0d +Block 0010 [ 67]: e4b7fb2fa554697f +Block 0010 [ 68]: 0a5119fe103e2e42 +Block 0010 [ 69]: 76628fe4b3ddc06e +Block 0010 [ 70]: e25bdee1ab84b29f +Block 0010 [ 71]: b3c66c128c6e172b +Block 0010 [ 72]: 1c1ed217a2064416 +Block 0010 [ 73]: 09c7294bb8a49019 +Block 0010 [ 74]: 50eb01126d9ce564 +Block 0010 [ 75]: 940cc33aa111befd +Block 0010 [ 76]: 3de5ddd735a13811 +Block 0010 [ 77]: 7588285dc6ddede1 +Block 0010 [ 78]: 49346c2f2215fc55 +Block 0010 [ 79]: 48b6752b1b61c33f +Block 0010 [ 80]: e26c26a0794051fe +Block 0010 [ 81]: 31d38c5a3509612d +Block 0010 [ 82]: 6146c61851115d95 +Block 0010 [ 83]: 47e6aabfc5ff3e65 +Block 0010 [ 84]: 3a839fe889b3af91 +Block 0010 [ 85]: ba2d3f73d2136b84 +Block 0010 [ 86]: 16e05e4258596fd5 +Block 0010 [ 87]: f2e9314743ae4056 +Block 0010 [ 88]: 4ed85292abee248a +Block 0010 [ 89]: 4180aadcaeabdba4 +Block 0010 [ 90]: 7243e54a9e5b66a6 +Block 0010 [ 91]: 23fefc955c79e003 +Block 0010 [ 92]: ea06ca4f79b525c8 +Block 0010 [ 93]: a5064ee3381b5ab3 +Block 0010 [ 94]: c4893642bf4855fd +Block 0010 [ 95]: cc7e6a851f510ac8 +Block 0010 [ 96]: 275f83a560de48eb +Block 0010 [ 97]: dadbbca628c47c37 +Block 0010 [ 98]: 43ea6bf21aaa217c +Block 0010 [ 99]: f6671c25326c25e2 +Block 0010 [100]: 9fe3da8da6fd66b1 +Block 0010 [101]: 1035284ec7d5cce8 +Block 0010 [102]: bcb76977f690ebd0 +Block 0010 [103]: 97c1c31326790609 +Block 0010 [104]: 60fe481489c8c7e0 +Block 0010 [105]: af3be98f8809a66e +Block 0010 [106]: 9efe199ec3055305 +Block 0010 [107]: a4178436d0019dc1 +Block 0010 [108]: adbe3754fd2a5efc +Block 0010 [109]: 13ba4c060bf37fa5 +Block 0010 [110]: 966fb1a7c7e3c345 +Block 0010 [111]: 24bc28eacb75fba4 +Block 0010 [112]: 6f3e77e11f50a350 +Block 0010 [113]: f10a1ad34d072b69 +Block 0010 [114]: a5eb7b5284a30af7 +Block 0010 [115]: 452bea2326fc9279 +Block 0010 [116]: 4f2620c07573e27c +Block 0010 [117]: 12ec5c1510264364 +Block 0010 [118]: 1f80f928362f38e2 +Block 0010 [119]: 5f237e27d0f4ecb9 +Block 0010 [120]: a339a5fb171dddbe +Block 0010 [121]: 2bfc05c38f009206 +Block 0010 [122]: b99f8b1cfb89a9fd +Block 0010 [123]: f69ed6324e29ded2 +Block 0010 [124]: e106652bf5c4359c +Block 0010 [125]: 43e7d05dd5d3a025 +Block 0010 [126]: 95abfc33449e7724 +Block 0010 [127]: 48442542e1841324 +Block 0011 [ 0]: 7d75ce5fa7bff5b8 +Block 0011 [ 1]: 7f2e89d0a725ab36 +Block 0011 [ 2]: 2c3c03e9df7c7105 +Block 0011 [ 3]: 74b4814e87507e51 +Block 0011 [ 4]: 05197c1924b2f07e +Block 0011 [ 5]: 7120ecede87fd521 +Block 0011 [ 6]: ad19163b841847fa +Block 0011 [ 7]: 9f763fdab3d9b36b +Block 0011 [ 8]: eb936f33fd7b5ff7 +Block 0011 [ 9]: f120e7f05bb937d1 +Block 0011 [ 10]: b6f7cc7f4fe84750 +Block 0011 [ 11]: dbd7c9d78d20bc0d +Block 0011 [ 12]: 87e06285a63783c9 +Block 0011 [ 13]: 0d5ddbfd00f5ea5b +Block 0011 [ 14]: 7c489013dd470b1b +Block 0011 [ 15]: 83ec59292926733c +Block 0011 [ 16]: ac257f950008cd69 +Block 0011 [ 17]: a2d7ecc111c3a0a9 +Block 0011 [ 18]: 760ba922715999ea +Block 0011 [ 19]: 8f4b4e79229250d8 +Block 0011 [ 20]: 93698a5454d1e5d2 +Block 0011 [ 21]: 356f4c72fdef4c47 +Block 0011 [ 22]: 016317b9a7bab55c +Block 0011 [ 23]: a065ec2988075b38 +Block 0011 [ 24]: 74954845ab8f5e37 +Block 0011 [ 25]: 695fcb3c9b2022ef +Block 0011 [ 26]: b4cefacc655d91b0 +Block 0011 [ 27]: 3102128e494987be +Block 0011 [ 28]: de17e55c8e103800 +Block 0011 [ 29]: 99dcb0473277c31d +Block 0011 [ 30]: 3bf83e1004706630 +Block 0011 [ 31]: 8290bfd936d4b300 +Block 0011 [ 32]: 025b012c50744ed5 +Block 0011 [ 33]: 6434159aecf89ea5 +Block 0011 [ 34]: 5bcd6a922a522af2 +Block 0011 [ 35]: 0a32efa2193ef3c4 +Block 0011 [ 36]: 413e02628d5bba55 +Block 0011 [ 37]: 10e072e4d52b2e8f +Block 0011 [ 38]: 308bbdf27f5c5ec1 +Block 0011 [ 39]: e0231b4d70374d20 +Block 0011 [ 40]: b938efa9c5cb6803 +Block 0011 [ 41]: b6b7f40f63d57ca1 +Block 0011 [ 42]: 1cd0b3715b504879 +Block 0011 [ 43]: 41f040cbbd927796 +Block 0011 [ 44]: b8dd16700e5f1a81 +Block 0011 [ 45]: 86b2df0d5ef0af94 +Block 0011 [ 46]: 37cc4cfbfd2e8337 +Block 0011 [ 47]: 65c41fe7bf004d02 +Block 0011 [ 48]: 1a525ca0ea028384 +Block 0011 [ 49]: 6e32af56d64bae96 +Block 0011 [ 50]: 7c67c0b0cf2354d1 +Block 0011 [ 51]: 9e6557336cad5f50 +Block 0011 [ 52]: 652baadcc1b11edc +Block 0011 [ 53]: ed9a449e0ff3d91e +Block 0011 [ 54]: b7f42bb2d1b8044f +Block 0011 [ 55]: 6e10cd8504194195 +Block 0011 [ 56]: 44324821824d14a3 +Block 0011 [ 57]: 7748f553748cce54 +Block 0011 [ 58]: 3388449102791469 +Block 0011 [ 59]: 525f839f18b87655 +Block 0011 [ 60]: 2239393539b2c86b +Block 0011 [ 61]: e3a316be17ab8107 +Block 0011 [ 62]: a6eddc9b040c199f +Block 0011 [ 63]: 62d1e6c9fb86d8a3 +Block 0011 [ 64]: 46d51d807d430972 +Block 0011 [ 65]: 4105dab993959ac0 +Block 0011 [ 66]: 5ffc090c3a929ead +Block 0011 [ 67]: 96e520ccdf93dfd2 +Block 0011 [ 68]: b6c210605de8d022 +Block 0011 [ 69]: 36f0c76223b2118b +Block 0011 [ 70]: 1ac03a506b84230a +Block 0011 [ 71]: 56702701f4c5a27b +Block 0011 [ 72]: 9a945ff533305f3d +Block 0011 [ 73]: 7cbea0f13d5dbf79 +Block 0011 [ 74]: 82274a2996cde7eb +Block 0011 [ 75]: 2c2d132fb2f58964 +Block 0011 [ 76]: b2b87eca7228d56c +Block 0011 [ 77]: 3a317d54a1d0048b +Block 0011 [ 78]: bf30630cceb13b33 +Block 0011 [ 79]: a4bd496da07527c5 +Block 0011 [ 80]: 16be6e1abab4689a +Block 0011 [ 81]: 870725dc928766c0 +Block 0011 [ 82]: b48e00a90347041a +Block 0011 [ 83]: 6d067251f331ae0c +Block 0011 [ 84]: 8f71090940cfca1d +Block 0011 [ 85]: 8e34c70df30e8c5a +Block 0011 [ 86]: bff713c1bda82f91 +Block 0011 [ 87]: 155d9e44ef0fc0b8 +Block 0011 [ 88]: 9bcec01ffc3698d1 +Block 0011 [ 89]: 3a338a45cf09ac03 +Block 0011 [ 90]: e36cd0e18e526e88 +Block 0011 [ 91]: 15f9626e5c77678f +Block 0011 [ 92]: 957b1847d0c89faf +Block 0011 [ 93]: 4a01a3d9db34519f +Block 0011 [ 94]: a03bdf4dac769213 +Block 0011 [ 95]: f4e37a15121e7c8b +Block 0011 [ 96]: 0374f95ee3ef5a2c +Block 0011 [ 97]: 6c849b52d5534909 +Block 0011 [ 98]: 28ff9c5ff87184d2 +Block 0011 [ 99]: a4223029e0b33123 +Block 0011 [100]: d149a075822d818d +Block 0011 [101]: 0a44cb9a3f0ef28d +Block 0011 [102]: df4da9204f1c039c +Block 0011 [103]: afac39d02c8afb71 +Block 0011 [104]: eee021deffed678d +Block 0011 [105]: d9a05d6d5b4f100d +Block 0011 [106]: 1cc09a57c9758d0d +Block 0011 [107]: 0e7556e329adbf17 +Block 0011 [108]: 13e6e5b2d9c0dd04 +Block 0011 [109]: bd463eb78a6d781f +Block 0011 [110]: a574a71e8b9bb8e0 +Block 0011 [111]: e4c7da41ff696fb5 +Block 0011 [112]: eb5ed56726da5bc6 +Block 0011 [113]: 5c07bbf9cd4f0539 +Block 0011 [114]: 501627fbad7ec4e0 +Block 0011 [115]: 95b770f2c1cb8346 +Block 0011 [116]: 518881e38b2824fb +Block 0011 [117]: b18951d660d4b6a8 +Block 0011 [118]: 90a160786aeb030a +Block 0011 [119]: c410a74193a2e691 +Block 0011 [120]: ef904dddb38d6417 +Block 0011 [121]: 3bbe7862a4fcb3e3 +Block 0011 [122]: c479db89c8121be5 +Block 0011 [123]: 4b36d107268a163c +Block 0011 [124]: e3d1ba33dc695cda +Block 0011 [125]: e81631c9b7968018 +Block 0011 [126]: 253f79b55ca7e1b0 +Block 0011 [127]: fd8e591864884fe2 +Block 0012 [ 0]: 1a0f6b8bd90a8f6b +Block 0012 [ 1]: 3f148e75f890d12e +Block 0012 [ 2]: b0e4ad7278b53c00 +Block 0012 [ 3]: 5f75cd0153783d80 +Block 0012 [ 4]: 4e56a55713194945 +Block 0012 [ 5]: 73de9e24d2add2f8 +Block 0012 [ 6]: 5c2bb2c5c8abb760 +Block 0012 [ 7]: ecceb3494123cdcb +Block 0012 [ 8]: aa6fae9b4396b84e +Block 0012 [ 9]: efde2dcd2b59052c +Block 0012 [ 10]: 2ef556dc87d5253f +Block 0012 [ 11]: a3991d1311a4f9b3 +Block 0012 [ 12]: b7059de7de2bb844 +Block 0012 [ 13]: bf011dca91c7e273 +Block 0012 [ 14]: c2e6134ad765db8b +Block 0012 [ 15]: c1919d11a4b00cb1 +Block 0012 [ 16]: 86523fcc48c8f0f6 +Block 0012 [ 17]: c250fe494cd0cb21 +Block 0012 [ 18]: c399c6549c49e114 +Block 0012 [ 19]: 3a820ca5281b0fff +Block 0012 [ 20]: 8559650005ca9fc7 +Block 0012 [ 21]: 730dd261c68edca1 +Block 0012 [ 22]: 4f28617d9790df64 +Block 0012 [ 23]: 83c104c3c5ea6f97 +Block 0012 [ 24]: 0fa8dd73f8607c76 +Block 0012 [ 25]: 272f75c6177ae094 +Block 0012 [ 26]: ddb498b135aac7a1 +Block 0012 [ 27]: 8c0d78b3e4e48313 +Block 0012 [ 28]: 43d1f1cf0c96233a +Block 0012 [ 29]: c9c9b06a3b555527 +Block 0012 [ 30]: abd3b3725979428f +Block 0012 [ 31]: 8669315d316ad7a3 +Block 0012 [ 32]: 5292d2808a046200 +Block 0012 [ 33]: a63717f5f4a24e37 +Block 0012 [ 34]: 41ba0350e19b3a75 +Block 0012 [ 35]: 43f2101a657de10a +Block 0012 [ 36]: d0095f929c14a82b +Block 0012 [ 37]: ac0883a2214af148 +Block 0012 [ 38]: 2c1fe77ae7fde7cc +Block 0012 [ 39]: 493d2debae0e95e4 +Block 0012 [ 40]: f3c3c98e07ecc949 +Block 0012 [ 41]: b370498229161188 +Block 0012 [ 42]: 70ba98dc3b17b2ea +Block 0012 [ 43]: d8009b297ec52812 +Block 0012 [ 44]: cbe0b026ba0c41a5 +Block 0012 [ 45]: 1d3e537f321cd9b4 +Block 0012 [ 46]: a691dda68fa6a57a +Block 0012 [ 47]: 77d7e2829a6fd056 +Block 0012 [ 48]: c61add89b7e17a03 +Block 0012 [ 49]: 8e61eaab8e9c4898 +Block 0012 [ 50]: 3650b222230bea53 +Block 0012 [ 51]: de129062ae4d78d2 +Block 0012 [ 52]: da20af31bbb90c04 +Block 0012 [ 53]: 4b00bae7eb8dbc7d +Block 0012 [ 54]: ed4567ce76c1d897 +Block 0012 [ 55]: 1e2a7f8a0d959306 +Block 0012 [ 56]: fefb51b8fc4b90db +Block 0012 [ 57]: e0aa1ee1bfca5d5e +Block 0012 [ 58]: 6732b1b2d7b4938b +Block 0012 [ 59]: 340a69cde3609951 +Block 0012 [ 60]: ed09fdea837845c0 +Block 0012 [ 61]: a06202e5db3a827b +Block 0012 [ 62]: cdb5fc28fd93966b +Block 0012 [ 63]: f4db11521a821378 +Block 0012 [ 64]: 0684d55a3b041eed +Block 0012 [ 65]: 41b1618f070e568b +Block 0012 [ 66]: 7c8e0bb4b5dfeab9 +Block 0012 [ 67]: a66bc80228683b6c +Block 0012 [ 68]: 0b28c1b7a888dd1d +Block 0012 [ 69]: c580445de500dcf5 +Block 0012 [ 70]: 93e59092902873da +Block 0012 [ 71]: 7b2fd4c1e522b87d +Block 0012 [ 72]: e4fed98fd79e533c +Block 0012 [ 73]: 496f026546e203a8 +Block 0012 [ 74]: 6d23a500ffb4fb77 +Block 0012 [ 75]: c47216920d8051ee +Block 0012 [ 76]: 31f82579385688b5 +Block 0012 [ 77]: b981e4cbbe00fe6b +Block 0012 [ 78]: 751b005aff1af776 +Block 0012 [ 79]: f3f53e2a82b3dd4d +Block 0012 [ 80]: 59a5b0923b01eeff +Block 0012 [ 81]: eccddd7c199344d1 +Block 0012 [ 82]: 2ca389e5c3dfb601 +Block 0012 [ 83]: c1da5ba037f769b2 +Block 0012 [ 84]: f2254420165887d3 +Block 0012 [ 85]: 9bdd424e42fb8ac9 +Block 0012 [ 86]: 86fb7baf70bbf2fb +Block 0012 [ 87]: 2b2d10e8f3bef9c9 +Block 0012 [ 88]: 2565f40d83456e2e +Block 0012 [ 89]: cffffd2f8773cfff +Block 0012 [ 90]: e2c3da055e49a29d +Block 0012 [ 91]: 69fd03274ac5f972 +Block 0012 [ 92]: 617379ad227cdba7 +Block 0012 [ 93]: 75b8e9a5226d60c0 +Block 0012 [ 94]: c334dc62de54a707 +Block 0012 [ 95]: e10f057ea8ca79d8 +Block 0012 [ 96]: eb7578bcf8f91690 +Block 0012 [ 97]: 425d6867253950a0 +Block 0012 [ 98]: 4adf5f12fe580e80 +Block 0012 [ 99]: 3b150fa0259d5a29 +Block 0012 [100]: 724683f2870b357f +Block 0012 [101]: a70ff766a5dec7f2 +Block 0012 [102]: bb26aac1eca8ad4f +Block 0012 [103]: 2a96bcef60d625bd +Block 0012 [104]: 03d1a4ae39e15fe9 +Block 0012 [105]: 609a20dd739a73a6 +Block 0012 [106]: 6cdc368e10912c82 +Block 0012 [107]: f86603e14f2349dc +Block 0012 [108]: 326c08a9609a812f +Block 0012 [109]: 1236430f64cc8466 +Block 0012 [110]: a5101a852da2b1a6 +Block 0012 [111]: af36da8f2afb00b5 +Block 0012 [112]: c337670fc34ee15b +Block 0012 [113]: ee6de63f856faf8d +Block 0012 [114]: 2c7bfea979dfc827 +Block 0012 [115]: 599f095c9a74bf90 +Block 0012 [116]: c08d305518a79a2e +Block 0012 [117]: aa2b928943937431 +Block 0012 [118]: 49afefc091ee6c9e +Block 0012 [119]: 61dda0dd29a1b55d +Block 0012 [120]: b25ceb200c524ded +Block 0012 [121]: 1f61aeae22d7737b +Block 0012 [122]: 75eb6d9ac881e97a +Block 0012 [123]: b6d4098a91934f5e +Block 0012 [124]: 334052b5ff62e98c +Block 0012 [125]: 9feccb8757580ece +Block 0012 [126]: 5702c6ec61ba797c +Block 0012 [127]: 82b8728b9614e1e6 +Block 0013 [ 0]: eaedddbe8af5aa2d +Block 0013 [ 1]: eaf925271bb772a9 +Block 0013 [ 2]: 2d52d74cf80f7f01 +Block 0013 [ 3]: 2b3dfef3de0f72a3 +Block 0013 [ 4]: b78c1d365ac715ca +Block 0013 [ 5]: ca3be4f4d86ed487 +Block 0013 [ 6]: bde70152fc817d13 +Block 0013 [ 7]: 7849235bcca4fe00 +Block 0013 [ 8]: ff1834255d9b0889 +Block 0013 [ 9]: 473ce32fac80f41d +Block 0013 [ 10]: aea46e05204bde46 +Block 0013 [ 11]: 66652914efed3406 +Block 0013 [ 12]: 3c341756d52915c2 +Block 0013 [ 13]: 2b1ba4fe3b0dc84f +Block 0013 [ 14]: 9937c961d64aeea4 +Block 0013 [ 15]: 27c2ef5ccf7c4d78 +Block 0013 [ 16]: 6a8fb6caad026005 +Block 0013 [ 17]: cba08dd959b1af0c +Block 0013 [ 18]: 75eb392a6e373db0 +Block 0013 [ 19]: fa107b1d60385685 +Block 0013 [ 20]: 64e4cb093dc69ee7 +Block 0013 [ 21]: 86034fe04390fb84 +Block 0013 [ 22]: 2a15637b8bfdb518 +Block 0013 [ 23]: 04262d2c68a9fb36 +Block 0013 [ 24]: 8869385ea5c0cea8 +Block 0013 [ 25]: 7a86c32291c7ff6e +Block 0013 [ 26]: be1e8f1d75cdbf2f +Block 0013 [ 27]: 58ce0de04a34cccd +Block 0013 [ 28]: 6f01e5967938b60c +Block 0013 [ 29]: 3a40f4a0dc93af25 +Block 0013 [ 30]: 88551df24fef2831 +Block 0013 [ 31]: 8654d6f1a3dce07b +Block 0013 [ 32]: baca7a9bf3a39df2 +Block 0013 [ 33]: 1c18fa53b02620f2 +Block 0013 [ 34]: 450203b941e55a6b +Block 0013 [ 35]: bf7c2e108a5de644 +Block 0013 [ 36]: 4417511c93c0dac9 +Block 0013 [ 37]: 24ffae020a5271ec +Block 0013 [ 38]: 69ee3ae4f949cb5e +Block 0013 [ 39]: 6478ca927bbfc07d +Block 0013 [ 40]: d6ce680d1e16842f +Block 0013 [ 41]: b992d6d900efdab2 +Block 0013 [ 42]: 310fe3c85b5d034d +Block 0013 [ 43]: 1c0dbe4c1f8ef62f +Block 0013 [ 44]: a46a74e0b2e9c447 +Block 0013 [ 45]: ad08f0145b3ea23c +Block 0013 [ 46]: 22a925dbe1442573 +Block 0013 [ 47]: aa6a1baef218fcb9 +Block 0013 [ 48]: 60c92121636f3dd4 +Block 0013 [ 49]: afe5802f9891e2bc +Block 0013 [ 50]: 92e099d0d5629dac +Block 0013 [ 51]: a9957aa663b6c719 +Block 0013 [ 52]: a1a95d7da22e9ffd +Block 0013 [ 53]: e715e53f426b0777 +Block 0013 [ 54]: 6e75377d68214b21 +Block 0013 [ 55]: eb04609119f57bf0 +Block 0013 [ 56]: 67889f4c9664d51a +Block 0013 [ 57]: 5411bbc4b8581969 +Block 0013 [ 58]: de2e7ffdabeff744 +Block 0013 [ 59]: 2deef12e5291bd14 +Block 0013 [ 60]: c86a647b52a5741f +Block 0013 [ 61]: 0394fe241338b4a6 +Block 0013 [ 62]: 186f28e9a9ac3ecf +Block 0013 [ 63]: 1d1722559db5565b +Block 0013 [ 64]: 4415f30c59b9d38d +Block 0013 [ 65]: d6269156a21ce3f0 +Block 0013 [ 66]: 92677e2f8134ec2c +Block 0013 [ 67]: c931b7415a95b276 +Block 0013 [ 68]: 716b0900181c27c7 +Block 0013 [ 69]: 0bf16f91499d7cbc +Block 0013 [ 70]: 24bbec0fe3215012 +Block 0013 [ 71]: 01bf2fcb5b05b6fa +Block 0013 [ 72]: a61e758aa17c3052 +Block 0013 [ 73]: 276ba08d67f150e2 +Block 0013 [ 74]: 22458dd5ee4542fa +Block 0013 [ 75]: 15eaa2f726b1deeb +Block 0013 [ 76]: 98754f686e166252 +Block 0013 [ 77]: c6c4887f77c1a9bf +Block 0013 [ 78]: da5651b242cf01fe +Block 0013 [ 79]: a02bd8001bd9d144 +Block 0013 [ 80]: 3e983a05c2b09cb9 +Block 0013 [ 81]: 7ef8ebad3c99e296 +Block 0013 [ 82]: 20370b5f68fe88a6 +Block 0013 [ 83]: 410fc8b8a3d86a66 +Block 0013 [ 84]: 088156fc052f6b47 +Block 0013 [ 85]: 6c708714938d49bb +Block 0013 [ 86]: be01727481ba5050 +Block 0013 [ 87]: ae8304c820f46aae +Block 0013 [ 88]: 27035fb860b61d9b +Block 0013 [ 89]: a1f5a3b7563660c4 +Block 0013 [ 90]: 4979cee149320d6d +Block 0013 [ 91]: 18497836284ca22b +Block 0013 [ 92]: 2878ce670185ee41 +Block 0013 [ 93]: dc8ffb1d7ea3c8df +Block 0013 [ 94]: 39ef70ffdf088fc7 +Block 0013 [ 95]: 0db82c5c234434b4 +Block 0013 [ 96]: aaca65cbabcbcf0f +Block 0013 [ 97]: 9185fb1315bae27e +Block 0013 [ 98]: 9d1c06a4bdd28482 +Block 0013 [ 99]: 9bd183dfb7f54cf4 +Block 0013 [100]: 3a695d353dfe6678 +Block 0013 [101]: f317b70f64f99610 +Block 0013 [102]: 4c1714fdc792a6e7 +Block 0013 [103]: aa3279d8c71e496e +Block 0013 [104]: d116e54970b5bf96 +Block 0013 [105]: bc89a65d590e3ca7 +Block 0013 [106]: eb48ceb2b57199ea +Block 0013 [107]: 2d43919e25c5f31e +Block 0013 [108]: cc035b7aa6c3a661 +Block 0013 [109]: 588a1e634e20470f +Block 0013 [110]: 418fbd6f77c03100 +Block 0013 [111]: 69ee0ffada874b58 +Block 0013 [112]: 754f34b783f15b81 +Block 0013 [113]: 419f3bd6c0eb4125 +Block 0013 [114]: 4251821a6d37d18b +Block 0013 [115]: 7331d86f98b0fc61 +Block 0013 [116]: ea664445edff9a79 +Block 0013 [117]: bdb834e86f0ee159 +Block 0013 [118]: 5cb72085004e82b5 +Block 0013 [119]: f23b2f4fbdcf5630 +Block 0013 [120]: 7a6732b1bd75a364 +Block 0013 [121]: d6e72bf9884e9967 +Block 0013 [122]: ed7718afffa3d73e +Block 0013 [123]: 682a608b55b3b23e +Block 0013 [124]: 1b74eb5bdc16cea1 +Block 0013 [125]: f05f334d68ec7da1 +Block 0013 [126]: 5177e2e0715c6108 +Block 0013 [127]: 766ae72a7c5c3aaa +Block 0014 [ 0]: 5b2550e4dbc7fa18 +Block 0014 [ 1]: 6b354d6d6b10cac7 +Block 0014 [ 2]: 0ca396bc8d3c4b0c +Block 0014 [ 3]: 000380927b45a85c +Block 0014 [ 4]: e7244935d8f887b1 +Block 0014 [ 5]: 200a8bedc1f6f499 +Block 0014 [ 6]: e427956b507ba1d8 +Block 0014 [ 7]: 6a81cda7910edc35 +Block 0014 [ 8]: 0cfe0f81f9f471a8 +Block 0014 [ 9]: 4b63ce3ecfaaf474 +Block 0014 [ 10]: 75e7cf9ad2a4841f +Block 0014 [ 11]: a3ee8e6cc201c825 +Block 0014 [ 12]: 73dafadc861c7df2 +Block 0014 [ 13]: 6be0047a88a0238e +Block 0014 [ 14]: 9f8bb8d87202d10b +Block 0014 [ 15]: 813971bc045d2c3c +Block 0014 [ 16]: 56e8be12b1264a52 +Block 0014 [ 17]: 276607bedf97436d +Block 0014 [ 18]: ac106bf67df98c68 +Block 0014 [ 19]: 14320d22ab2b8bec +Block 0014 [ 20]: e475a0090015d65f +Block 0014 [ 21]: fb3669a47ffda9a2 +Block 0014 [ 22]: fb70122cd1be3d5d +Block 0014 [ 23]: ee01966d661ab3de +Block 0014 [ 24]: 4dd4c509dc6db43e +Block 0014 [ 25]: 1ba046bdee661628 +Block 0014 [ 26]: 759e90552ec1ed7e +Block 0014 [ 27]: df0886efca925c51 +Block 0014 [ 28]: 23e9c7649656d24e +Block 0014 [ 29]: f7238ddfa18b24c2 +Block 0014 [ 30]: a45035e54a7bc958 +Block 0014 [ 31]: 378186a620803ba2 +Block 0014 [ 32]: cea0ebd7326ea234 +Block 0014 [ 33]: 54ebe0504125676b +Block 0014 [ 34]: 8e36f6d9013959c4 +Block 0014 [ 35]: 38cdcf121287b284 +Block 0014 [ 36]: e967d2462682298c +Block 0014 [ 37]: cea743b39e721689 +Block 0014 [ 38]: 64edd2b710dfb750 +Block 0014 [ 39]: 2d08633513a5ad71 +Block 0014 [ 40]: b895ddebbba5fefb +Block 0014 [ 41]: 02a7678001e2d450 +Block 0014 [ 42]: 27ef9e13015d8dec +Block 0014 [ 43]: 7a1eb3493df50849 +Block 0014 [ 44]: fe1303ec8c91a5bb +Block 0014 [ 45]: 1f9bd7cf219083e6 +Block 0014 [ 46]: c6bb9a21589475af +Block 0014 [ 47]: 873a0fc391188d09 +Block 0014 [ 48]: 190e7438692bf635 +Block 0014 [ 49]: 6ec2aa43c5e2bbe3 +Block 0014 [ 50]: 96ef69d3e95556c8 +Block 0014 [ 51]: ba7fdbdd8a70de10 +Block 0014 [ 52]: 4882e9ddcd522412 +Block 0014 [ 53]: f79160e8864da5c0 +Block 0014 [ 54]: c59223402b843174 +Block 0014 [ 55]: 761b74085fb46dc0 +Block 0014 [ 56]: ca3bbd50a8d27333 +Block 0014 [ 57]: 6cfdf0de3135521a +Block 0014 [ 58]: 79f989869f12e370 +Block 0014 [ 59]: 7d32646711d7741c +Block 0014 [ 60]: fa27ea9d16dc3dd9 +Block 0014 [ 61]: c7956b2f34e15b5e +Block 0014 [ 62]: 314442e9edc14f26 +Block 0014 [ 63]: 6218d35af723ed10 +Block 0014 [ 64]: cc31ba85bb2f651b +Block 0014 [ 65]: 8f7da3844d1645f4 +Block 0014 [ 66]: 0fba3bc9e0d62b47 +Block 0014 [ 67]: eb98f7c11eb98b8e +Block 0014 [ 68]: 5cace434044bfb20 +Block 0014 [ 69]: 6fb70bebb1a8a8a9 +Block 0014 [ 70]: 3375536d4cb653c2 +Block 0014 [ 71]: 64a94ec4d81b77f9 +Block 0014 [ 72]: e531b41790e67c68 +Block 0014 [ 73]: 82d347e282201bb8 +Block 0014 [ 74]: 80bc6a0af7bfc60f +Block 0014 [ 75]: f318824f23cfb4eb +Block 0014 [ 76]: 329345055d886557 +Block 0014 [ 77]: b3c2ec627aa4363a +Block 0014 [ 78]: 4962272584497597 +Block 0014 [ 79]: 7692ceb70ff5980f +Block 0014 [ 80]: f319241988a13e94 +Block 0014 [ 81]: eb94732cfdeea4af +Block 0014 [ 82]: fcddd9e2c11c393a +Block 0014 [ 83]: 3d6ac4f492d7df7a +Block 0014 [ 84]: 9d912c5c969aaaf5 +Block 0014 [ 85]: a91136e982c7f4da +Block 0014 [ 86]: 0a7cda3f50f68fd2 +Block 0014 [ 87]: 903eb02643c18396 +Block 0014 [ 88]: a0649fbd5f0b970b +Block 0014 [ 89]: c10eb8ea019f102c +Block 0014 [ 90]: 17c34c7c16665e57 +Block 0014 [ 91]: 27254dd5e6f4709f +Block 0014 [ 92]: 3d7772bc8265a912 +Block 0014 [ 93]: a0172dafb378d99b +Block 0014 [ 94]: 778d8f7d9b515750 +Block 0014 [ 95]: 944406206db979ea +Block 0014 [ 96]: 509d1f46f87cc0a7 +Block 0014 [ 97]: 33f6690915ed2412 +Block 0014 [ 98]: f34179142c23746e +Block 0014 [ 99]: a78c7b1cdc3ce7da +Block 0014 [100]: d640afa9bd498f05 +Block 0014 [101]: bc20596310df8b3c +Block 0014 [102]: 14dafd36a5a4d228 +Block 0014 [103]: e1b0807ba915d237 +Block 0014 [104]: 3a30e6af3668fd21 +Block 0014 [105]: fc4e6de5a31ff542 +Block 0014 [106]: 6c39a88ef296ed5a +Block 0014 [107]: 05e873d69b4438f7 +Block 0014 [108]: fae4b618526422d4 +Block 0014 [109]: 16123e4dd6f2a12e +Block 0014 [110]: e2c4bf1ac9b284e1 +Block 0014 [111]: 2ead3cdbfbe99ed7 +Block 0014 [112]: 6e2d576c0c2ae51b +Block 0014 [113]: 95626ec048beb8a7 +Block 0014 [114]: 328db9b409d90732 +Block 0014 [115]: 31e631764dcd4f5f +Block 0014 [116]: 3bdbf0835a077ce6 +Block 0014 [117]: ab57496d09a6756e +Block 0014 [118]: 6fc0f3ff3af34c5e +Block 0014 [119]: c4eb12c1e9ee0082 +Block 0014 [120]: bdf93172143e9b0e +Block 0014 [121]: 96475254ea6bce21 +Block 0014 [122]: b951bc13b50b8d94 +Block 0014 [123]: c74e588c176a5ac4 +Block 0014 [124]: f50cbab1174678bf +Block 0014 [125]: 9c0ab31431c2ef5d +Block 0014 [126]: 61dbaeec02095a86 +Block 0014 [127]: 26257729719307f2 +Block 0015 [ 0]: bffa5134f891815d +Block 0015 [ 1]: c9d1e86859077437 +Block 0015 [ 2]: 77d57dca52d915e4 +Block 0015 [ 3]: d9c785a6fe75a1c1 +Block 0015 [ 4]: 0b70b72c7f07897d +Block 0015 [ 5]: a3be1edec51134ab +Block 0015 [ 6]: a2c658c0c467bfcb +Block 0015 [ 7]: 0d793e8f6b15d9b8 +Block 0015 [ 8]: 597e8e8b9f5f50bd +Block 0015 [ 9]: a81216501f4f3790 +Block 0015 [ 10]: 5124ccd8eb141ab3 +Block 0015 [ 11]: 2aadc51f9f1db29c +Block 0015 [ 12]: 595d8bfc6ab47015 +Block 0015 [ 13]: c8f2521f504b34c4 +Block 0015 [ 14]: 49920f23c3e00a08 +Block 0015 [ 15]: 8b5e8857dcc09534 +Block 0015 [ 16]: 3446613c42b95a3d +Block 0015 [ 17]: f311d4e2180cddf6 +Block 0015 [ 18]: 330dcbb4036f4c43 +Block 0015 [ 19]: c1abc25872408257 +Block 0015 [ 20]: ea8ca75355745b41 +Block 0015 [ 21]: 3edbc39cabf21ddc +Block 0015 [ 22]: a7453f4b18499b7a +Block 0015 [ 23]: 42508913574e3416 +Block 0015 [ 24]: 7c3c53f6522e1e58 +Block 0015 [ 25]: 4ac931ea5a311b70 +Block 0015 [ 26]: bcf6e7a4a8050c6b +Block 0015 [ 27]: 98c6e929c86f3fa2 +Block 0015 [ 28]: 25451aaace81f7ee +Block 0015 [ 29]: 5313185413450a07 +Block 0015 [ 30]: 69293c347974ba7a +Block 0015 [ 31]: d48883fdfdc19477 +Block 0015 [ 32]: 3a0ce3cc08024172 +Block 0015 [ 33]: 66bd0a95bf2b998a +Block 0015 [ 34]: 8ab3300f23d9abe2 +Block 0015 [ 35]: aaac3dcf691b6fa1 +Block 0015 [ 36]: ef4ac0dd37e0aba3 +Block 0015 [ 37]: 311431df9bb602c5 +Block 0015 [ 38]: 74edd18f5de5bf86 +Block 0015 [ 39]: 4ffd577d73bcbd05 +Block 0015 [ 40]: 214f9d188d2f36d9 +Block 0015 [ 41]: b446680a08db1c7f +Block 0015 [ 42]: 44f50256a68647f4 +Block 0015 [ 43]: 2456dd7fb1a98133 +Block 0015 [ 44]: 5a4f92d4794ac4c3 +Block 0015 [ 45]: f7fd907c3384360d +Block 0015 [ 46]: cb979d6a0dd8436b +Block 0015 [ 47]: 0f7dec5cf75ce956 +Block 0015 [ 48]: bc9227dc2eb2db73 +Block 0015 [ 49]: 94cafc1d1646ed66 +Block 0015 [ 50]: f3a475e8f020b13a +Block 0015 [ 51]: 22b0f1229ae9a821 +Block 0015 [ 52]: 333762086c0d1d63 +Block 0015 [ 53]: 69e584834b611f03 +Block 0015 [ 54]: ccc3dbf7c70523fe +Block 0015 [ 55]: b976aa72c341c6dc +Block 0015 [ 56]: c57a56dce39435e1 +Block 0015 [ 57]: e3ad1c396a6e98d1 +Block 0015 [ 58]: e1eb535fc12f237a +Block 0015 [ 59]: 31b646b18f7a60a7 +Block 0015 [ 60]: 8b5aedc11623526c +Block 0015 [ 61]: 6946cbcf48d09dde +Block 0015 [ 62]: 881b0e743e1f8c04 +Block 0015 [ 63]: 04db0580164c9224 +Block 0015 [ 64]: bd8c78074008c1cf +Block 0015 [ 65]: 662baa93b93e46ad +Block 0015 [ 66]: 3b6e57fee4d1eef2 +Block 0015 [ 67]: ea5709e05b86b1e3 +Block 0015 [ 68]: f6114fe2c56f8a91 +Block 0015 [ 69]: 3e1a3204a2616fa5 +Block 0015 [ 70]: 420210852fdf71ee +Block 0015 [ 71]: 006a843a0c6cc9c6 +Block 0015 [ 72]: 896cddd3e1719215 +Block 0015 [ 73]: 59a6b53c4f06fb52 +Block 0015 [ 74]: b819297575c796ad +Block 0015 [ 75]: 130d7e7b3c82284c +Block 0015 [ 76]: a6e0893c54adda2e +Block 0015 [ 77]: cacdc1057579975e +Block 0015 [ 78]: 8eaaff716864cf5c +Block 0015 [ 79]: 6aa150222002d534 +Block 0015 [ 80]: 2ad6f73b950c9641 +Block 0015 [ 81]: 042b0a08f2daf138 +Block 0015 [ 82]: d77dca90a93ea577 +Block 0015 [ 83]: 1be098db6c2283bb +Block 0015 [ 84]: a8ef13df654b6224 +Block 0015 [ 85]: ac70aaa59942e32e +Block 0015 [ 86]: 049cade3d2bd666a +Block 0015 [ 87]: 6f95a90efbc8f023 +Block 0015 [ 88]: 1ad8afc58cd1852c +Block 0015 [ 89]: c1f8c28aab6c0a2c +Block 0015 [ 90]: 1deb0ff6f03546b6 +Block 0015 [ 91]: 2919e466740b12ec +Block 0015 [ 92]: 6068f5c8e3687356 +Block 0015 [ 93]: 94c6e3c042e0c45b +Block 0015 [ 94]: 299f2690cdc3f2ae +Block 0015 [ 95]: 371e0b2f24c55dd1 +Block 0015 [ 96]: 68b2d5a79a498a9d +Block 0015 [ 97]: f90d22cd6b28fbcb +Block 0015 [ 98]: 0a540f5bb4c626da +Block 0015 [ 99]: 22a7872cc893ccbc +Block 0015 [100]: 3f88c5459cb3d544 +Block 0015 [101]: c4ea6b59c1c6b0a7 +Block 0015 [102]: d4bdb7a882c60a7b +Block 0015 [103]: 6de6f73d38b41093 +Block 0015 [104]: 75eea05cb9d3455f +Block 0015 [105]: e3e2ee7697b87d31 +Block 0015 [106]: a5229ba65fed9c39 +Block 0015 [107]: bae498bf96e2bb0d +Block 0015 [108]: 9929fb2d2d6a097e +Block 0015 [109]: d2dfe8b87b7474d9 +Block 0015 [110]: bf2d786bfa03556b +Block 0015 [111]: 2037ef5875f48234 +Block 0015 [112]: 79fc5cc5dcb41d0d +Block 0015 [113]: 5956deb9a21e81cc +Block 0015 [114]: ee7fb1ac03532faf +Block 0015 [115]: 3c3640a2fc5ccf9f +Block 0015 [116]: 249ae749f07b477e +Block 0015 [117]: 3dfb90c35bae2e4c +Block 0015 [118]: 656a4faf5d4139d0 +Block 0015 [119]: 49d42d1ec6342c7d +Block 0015 [120]: 3a0f3ecf42effdd9 +Block 0015 [121]: 1ee8e527e656374f +Block 0015 [122]: 8d027e114f72d46b +Block 0015 [123]: 16219eeebed66173 +Block 0015 [124]: dbaa98ff73905ee1 +Block 0015 [125]: e1bb04410cc1bc8b +Block 0015 [126]: ca336c250756275f +Block 0015 [127]: 1bfba5b1b19c3f88 +Block 0016 [ 0]: 6010e5a01db5f196 +Block 0016 [ 1]: ef7ac9e4440495c3 +Block 0016 [ 2]: da642ab2564f83df +Block 0016 [ 3]: 422fbcb748ee5d27 +Block 0016 [ 4]: c5b382f0a17717bf +Block 0016 [ 5]: d4425eca0af816fb +Block 0016 [ 6]: e024f3f05918d81a +Block 0016 [ 7]: 53d9fc82bfcc0ff7 +Block 0016 [ 8]: 0d0ffa5876f6e615 +Block 0016 [ 9]: 7fa7188fff681a48 +Block 0016 [ 10]: 28f5d8b757cb69d2 +Block 0016 [ 11]: f59ff3e8dcabb89b +Block 0016 [ 12]: c086251a5ad5708f +Block 0016 [ 13]: 10f5b28138ae33ab +Block 0016 [ 14]: 1273805b77cb7e11 +Block 0016 [ 15]: b3d83b7e6cf2b8d6 +Block 0016 [ 16]: 68b4cab9ec0bb673 +Block 0016 [ 17]: 9db6bb436dc180a3 +Block 0016 [ 18]: f8941e643334bd45 +Block 0016 [ 19]: 60f497755d89255c +Block 0016 [ 20]: 41d7f475a441ec8a +Block 0016 [ 21]: 4d662dce1c1c6cd8 +Block 0016 [ 22]: 6d61fde8d9a5f590 +Block 0016 [ 23]: 949d73cecd9a94af +Block 0016 [ 24]: 2a621fcccc89a379 +Block 0016 [ 25]: e3b9f35f13264c99 +Block 0016 [ 26]: 665090516cab8704 +Block 0016 [ 27]: 54358d6530ea9a16 +Block 0016 [ 28]: 484b3f465d14d230 +Block 0016 [ 29]: 7f14f35e09e986bf +Block 0016 [ 30]: 1f25c14168d491a2 +Block 0016 [ 31]: a86ffa29322d3c60 +Block 0016 [ 32]: 4dbe9a8213819da6 +Block 0016 [ 33]: 79a23c6d9e0b6eab +Block 0016 [ 34]: 030791bdea94c4e9 +Block 0016 [ 35]: a791b204d75e3f3d +Block 0016 [ 36]: 81d8761e8890bcab +Block 0016 [ 37]: 050fe1821d706207 +Block 0016 [ 38]: 18825ead7299224e +Block 0016 [ 39]: 001a96583c7d6f09 +Block 0016 [ 40]: 0001d2e81148000f +Block 0016 [ 41]: 372fc268847321c6 +Block 0016 [ 42]: 9d07aad08cff66f9 +Block 0016 [ 43]: 69ed41995677bedc +Block 0016 [ 44]: 7019349cab952e6d +Block 0016 [ 45]: a5e5b7c45b17ffe5 +Block 0016 [ 46]: 6dac282c45d97b01 +Block 0016 [ 47]: 824ff45d1aa89d6d +Block 0016 [ 48]: 813df0ece26aa83e +Block 0016 [ 49]: 1ab5dd2ab168553c +Block 0016 [ 50]: 1cb81038942c1ea0 +Block 0016 [ 51]: a992785912314770 +Block 0016 [ 52]: 56da8dcd757f3f9c +Block 0016 [ 53]: 6d9a48dc8fb83789 +Block 0016 [ 54]: b08051aeeefb1bd3 +Block 0016 [ 55]: 557f90a417a97732 +Block 0016 [ 56]: df1e927d53570ac2 +Block 0016 [ 57]: 5a61d6997a74e714 +Block 0016 [ 58]: 6d493a2ff2550d90 +Block 0016 [ 59]: ef3747c93347f033 +Block 0016 [ 60]: e4e55b94cfe605f0 +Block 0016 [ 61]: 22d8d26ec147d337 +Block 0016 [ 62]: c81d012c9200276f +Block 0016 [ 63]: 359774aa24a65129 +Block 0016 [ 64]: 9f4b8f9fb5cefffc +Block 0016 [ 65]: 0d933ec3e5e2a12a +Block 0016 [ 66]: 9b91aa03e72879cd +Block 0016 [ 67]: d663e27e00b62076 +Block 0016 [ 68]: f4b8905b594a2974 +Block 0016 [ 69]: e62dfc1510ebcecd +Block 0016 [ 70]: 9c0148ce0ee08434 +Block 0016 [ 71]: 99c1407c889dffab +Block 0016 [ 72]: 9048f4117c0cc6d3 +Block 0016 [ 73]: 98b2b397d668d6e8 +Block 0016 [ 74]: cc063ea8e2f217a9 +Block 0016 [ 75]: 9aaaa458736bd6c1 +Block 0016 [ 76]: 48e7a37c45aff5ba +Block 0016 [ 77]: 8b5e80eb8a66e2b6 +Block 0016 [ 78]: ea967076787d21cf +Block 0016 [ 79]: 4b47a086ab30cf99 +Block 0016 [ 80]: 2a37cf84213864aa +Block 0016 [ 81]: fe9988bd22317576 +Block 0016 [ 82]: 04d3c4a70f6eaa56 +Block 0016 [ 83]: 8121c0c9771de687 +Block 0016 [ 84]: 8e900e643824ff7d +Block 0016 [ 85]: 70b3c663c2497b1a +Block 0016 [ 86]: fc2bc4df54195dcb +Block 0016 [ 87]: ec6a71b75fabcfd4 +Block 0016 [ 88]: 99bb729eb37d40d7 +Block 0016 [ 89]: 6c1cf32dbae62277 +Block 0016 [ 90]: 1dd8a791c33baf55 +Block 0016 [ 91]: 3fcde3086a1bbe80 +Block 0016 [ 92]: afba9f9bbe6fd48e +Block 0016 [ 93]: b2cfce14af04208e +Block 0016 [ 94]: eac8a967896115ec +Block 0016 [ 95]: ea2143acd19ef83a +Block 0016 [ 96]: 701456ec354ba67e +Block 0016 [ 97]: 49d65a46e413858a +Block 0016 [ 98]: 8f07bd7412b0e8f1 +Block 0016 [ 99]: 68a8f4cc7f10eb91 +Block 0016 [100]: 9c01a08f0af1afa5 +Block 0016 [101]: b820f47feba63788 +Block 0016 [102]: 03190ea5d4871819 +Block 0016 [103]: 3b651df26d5cd723 +Block 0016 [104]: 26ca939e5080c15b +Block 0016 [105]: cc70e85496103f56 +Block 0016 [106]: 80ffd1c901698be2 +Block 0016 [107]: 522441509970ea18 +Block 0016 [108]: 1022a4692594b2bd +Block 0016 [109]: 2985962eb8b814b3 +Block 0016 [110]: 264aa5f3c50eaa8b +Block 0016 [111]: eadbbfa147a88690 +Block 0016 [112]: 878ea9e03d8fde59 +Block 0016 [113]: 85ecf7c34da61ad3 +Block 0016 [114]: a2d465943921114e +Block 0016 [115]: 3f515b15670ca854 +Block 0016 [116]: 78682e4a3d933c57 +Block 0016 [117]: 0741db2c00eaf60c +Block 0016 [118]: 14aebc91873c8271 +Block 0016 [119]: bfcb1cf854c7ffef +Block 0016 [120]: 1ff0f28ec53228dc +Block 0016 [121]: 665ded777f9ff07c +Block 0016 [122]: bf3a4430fc18db0d +Block 0016 [123]: 111121717f28e4b0 +Block 0016 [124]: 0a7e2d46fa48c688 +Block 0016 [125]: 1d9111141c20dd7d +Block 0016 [126]: 97dc7f23a15e420d +Block 0016 [127]: 7d0f97200592ac0f +Block 0017 [ 0]: 6c854de359a27b14 +Block 0017 [ 1]: ab170011524b516b +Block 0017 [ 2]: d9ca751dd898771a +Block 0017 [ 3]: 8c4633d5f1018345 +Block 0017 [ 4]: 644e77aaccec2780 +Block 0017 [ 5]: ca368c8fc382be50 +Block 0017 [ 6]: a3750492ea2d3743 +Block 0017 [ 7]: 710724317321ea99 +Block 0017 [ 8]: 506e1f6c741c754b +Block 0017 [ 9]: 0b20985a71e306ce +Block 0017 [ 10]: 6aff8cd2138fb4a4 +Block 0017 [ 11]: c6f99c5928d42e0e +Block 0017 [ 12]: 5474a832d3fec864 +Block 0017 [ 13]: 4e2c6f89c04b4ce3 +Block 0017 [ 14]: 20951424bd88158f +Block 0017 [ 15]: 049ddd7039249b57 +Block 0017 [ 16]: 9d11626ed63e9d75 +Block 0017 [ 17]: 5dcd2c7b8fed81df +Block 0017 [ 18]: 32e63465360993cf +Block 0017 [ 19]: e5291e13dac657ef +Block 0017 [ 20]: 19b49c016d92ef9f +Block 0017 [ 21]: 25c4060f2e5a141b +Block 0017 [ 22]: 01c62152a6855bd0 +Block 0017 [ 23]: 5614450e855dff8e +Block 0017 [ 24]: 3dea2a55b44ed33d +Block 0017 [ 25]: 1e9ee197c2152f09 +Block 0017 [ 26]: 35ed915e6967ed30 +Block 0017 [ 27]: 4653b34c57a70bee +Block 0017 [ 28]: 6d7aef2d7c05145e +Block 0017 [ 29]: 17adee6b3e41fb2a +Block 0017 [ 30]: 8e12058d65ac98d6 +Block 0017 [ 31]: 0046d2058b5368ee +Block 0017 [ 32]: e212e8b2e97a58f0 +Block 0017 [ 33]: 8d36be0c3106f8ba +Block 0017 [ 34]: 48c69e10aa22904d +Block 0017 [ 35]: 8ebd7ca19f445bce +Block 0017 [ 36]: f03a9a76d79f28a1 +Block 0017 [ 37]: 70c4181d29e54c96 +Block 0017 [ 38]: 77a364b32253cf9d +Block 0017 [ 39]: 3391b9f1953c8b37 +Block 0017 [ 40]: aa993339b8e0bfb0 +Block 0017 [ 41]: ec54e0387ad67f2d +Block 0017 [ 42]: 2134419c0745c71b +Block 0017 [ 43]: 793be7c16a647a0f +Block 0017 [ 44]: c69c2aad8535c856 +Block 0017 [ 45]: b39230bf5914c583 +Block 0017 [ 46]: 6a22086fafce953c +Block 0017 [ 47]: 4db7d73d6688a25d +Block 0017 [ 48]: ac9b96d3af4ad9eb +Block 0017 [ 49]: e6a8d0830e5f9a8a +Block 0017 [ 50]: 8ead43f5c86a6c53 +Block 0017 [ 51]: ee14b2ad8035a82e +Block 0017 [ 52]: aedad0d1aeee646a +Block 0017 [ 53]: fd496ca2fa94be9f +Block 0017 [ 54]: 704655cfbf0bb174 +Block 0017 [ 55]: 643542ce119cfce6 +Block 0017 [ 56]: 2756dd234a28b75e +Block 0017 [ 57]: 46774c4f9c4faeef +Block 0017 [ 58]: e880c1a7748827da +Block 0017 [ 59]: 7ed6aa78f60fb5b2 +Block 0017 [ 60]: 996be9d3a1251b76 +Block 0017 [ 61]: def3a7360b6b00e0 +Block 0017 [ 62]: fd47dff4e7918935 +Block 0017 [ 63]: 8e1a79b1ab106b77 +Block 0017 [ 64]: 4bc31eacee4bd340 +Block 0017 [ 65]: 68194d5d5b0de56d +Block 0017 [ 66]: 2386852248a5f801 +Block 0017 [ 67]: 1f5a334f4ccf1a17 +Block 0017 [ 68]: 026e07926322d862 +Block 0017 [ 69]: eb5210fcb5e9bb76 +Block 0017 [ 70]: 491d5a771e931209 +Block 0017 [ 71]: 0711fe3ff0b0102a +Block 0017 [ 72]: 32652a737fa96536 +Block 0017 [ 73]: 1ad92094bb31a0c5 +Block 0017 [ 74]: 2ec5dd2510484a03 +Block 0017 [ 75]: e6602baec448ceea +Block 0017 [ 76]: 6dd6c94678ff2b44 +Block 0017 [ 77]: 6c2145a06e193d1c +Block 0017 [ 78]: 0924fba0cdad5d27 +Block 0017 [ 79]: 29e57377cbe5aef7 +Block 0017 [ 80]: ef001f269aa4ee67 +Block 0017 [ 81]: dbfb6698ab8f3bc7 +Block 0017 [ 82]: 29b3658753624eb5 +Block 0017 [ 83]: e0b1c5dba16f8047 +Block 0017 [ 84]: a13b1b94185ffa59 +Block 0017 [ 85]: abc67b4f1d7f428d +Block 0017 [ 86]: 1a83e1d56da1feaa +Block 0017 [ 87]: c4d6aca2025b742c +Block 0017 [ 88]: f89b51f7fb2ead81 +Block 0017 [ 89]: 7a2c8bdfbad523ba +Block 0017 [ 90]: f146ec07790bdc42 +Block 0017 [ 91]: 18424f72b9b1807c +Block 0017 [ 92]: b348077960d66ab3 +Block 0017 [ 93]: f6e54d7ecbe2bf1d +Block 0017 [ 94]: c6d51695b65c1709 +Block 0017 [ 95]: 18afc845c30ff3b4 +Block 0017 [ 96]: 3ffccd9ef3011b87 +Block 0017 [ 97]: c7bc87390fa969e1 +Block 0017 [ 98]: 34a9bafacf6fa83c +Block 0017 [ 99]: c5e6c743af000704 +Block 0017 [100]: 6af212c30a350c1d +Block 0017 [101]: 88d55b4862fc3d9c +Block 0017 [102]: cc48a109df597048 +Block 0017 [103]: 09ef4343d8c9fc76 +Block 0017 [104]: c6c72a8f20bfc65d +Block 0017 [105]: af5d9436947d2da2 +Block 0017 [106]: 83e806505df923fc +Block 0017 [107]: 4d1b57f48a901f47 +Block 0017 [108]: 3a7224caac737486 +Block 0017 [109]: 9ad46a15a95bd9b9 +Block 0017 [110]: 2c605f1dd6fb13b0 +Block 0017 [111]: 5b58702ada82fb6d +Block 0017 [112]: 56ad71be835153be +Block 0017 [113]: 702a54e878158665 +Block 0017 [114]: bc63b93cb901b390 +Block 0017 [115]: bf5286b83aeacabe +Block 0017 [116]: 2447ce3ac7607e12 +Block 0017 [117]: 18591f38ccec50b0 +Block 0017 [118]: 2f43769546a049c3 +Block 0017 [119]: 875a0634f2bdb29b +Block 0017 [120]: ff423c951924c37f +Block 0017 [121]: f3fdc563e8968307 +Block 0017 [122]: ef523a21adfa27a9 +Block 0017 [123]: 4b97c503e8f1c16a +Block 0017 [124]: 49fbc58c69cf60e3 +Block 0017 [125]: 9d083b9159a3342e +Block 0017 [126]: e6150d9b263368e9 +Block 0017 [127]: 91c8e3518b925665 +Block 0018 [ 0]: 09169bcd34088b6b +Block 0018 [ 1]: 86acc703eeac4a74 +Block 0018 [ 2]: acb4afde4e700884 +Block 0018 [ 3]: f74c9f748888b3d2 +Block 0018 [ 4]: 053604400798d750 +Block 0018 [ 5]: dbfb2e0558912262 +Block 0018 [ 6]: 434957deab5f0be5 +Block 0018 [ 7]: 1d1a36215fab5839 +Block 0018 [ 8]: 2b3c96e646cb7b58 +Block 0018 [ 9]: 5f0c334b5cf5e76d +Block 0018 [ 10]: 25c500806d58bb88 +Block 0018 [ 11]: c363a6a0ea48185a +Block 0018 [ 12]: 72a9ca02fd66fb79 +Block 0018 [ 13]: 3e098c02b5525add +Block 0018 [ 14]: 38abb765bebc5ef9 +Block 0018 [ 15]: c166ffc83198c88e +Block 0018 [ 16]: fb77428692d231d3 +Block 0018 [ 17]: 3539b44b84631eb5 +Block 0018 [ 18]: f4123116001a9a3c +Block 0018 [ 19]: 8939910fa3c492f0 +Block 0018 [ 20]: c9a9f3ca2aa9b956 +Block 0018 [ 21]: 733b09b7c6e375b4 +Block 0018 [ 22]: 4be150262a693b43 +Block 0018 [ 23]: 80c2356af1c3e4e2 +Block 0018 [ 24]: 78f6b4660d1fcbd4 +Block 0018 [ 25]: b5cb5cc48f8ce6d8 +Block 0018 [ 26]: 6163248cf38ee860 +Block 0018 [ 27]: 3149c7c21d9c1bcc +Block 0018 [ 28]: a46dd5ce559b3301 +Block 0018 [ 29]: 82a377709679db16 +Block 0018 [ 30]: df41d3ae50c3e9fa +Block 0018 [ 31]: 20cc71102bcbc203 +Block 0018 [ 32]: 87c7cefcafdd7f1a +Block 0018 [ 33]: 974b1dd1e6abcf25 +Block 0018 [ 34]: 0c957cfeacbba93e +Block 0018 [ 35]: 624b4138281d73cb +Block 0018 [ 36]: 5e5376ec02786a25 +Block 0018 [ 37]: cd87356fed667155 +Block 0018 [ 38]: 22da3a402996ee25 +Block 0018 [ 39]: d61015447f0e6bf2 +Block 0018 [ 40]: 636d57f3d02a806c +Block 0018 [ 41]: 298521b455db8a42 +Block 0018 [ 42]: 863be3dca5457525 +Block 0018 [ 43]: 6a2bc1f83f302d42 +Block 0018 [ 44]: 20fc3e21514b4937 +Block 0018 [ 45]: 9066233a2cdfac93 +Block 0018 [ 46]: 2f7acb4b162ac38c +Block 0018 [ 47]: 1e9e4cc0ff3d03de +Block 0018 [ 48]: 1dd520d008ee3700 +Block 0018 [ 49]: d422d313c724d22e +Block 0018 [ 50]: bd2891bb12d658cb +Block 0018 [ 51]: ee7255f1b11eb395 +Block 0018 [ 52]: 6a5c5a4933ff4d0c +Block 0018 [ 53]: 938ea358a4fcdaa0 +Block 0018 [ 54]: faea433823bec653 +Block 0018 [ 55]: 5a8cbbd843d89aad +Block 0018 [ 56]: 00a4ab591ec20403 +Block 0018 [ 57]: dfef10cd77bb704c +Block 0018 [ 58]: 84fe88c092442226 +Block 0018 [ 59]: e945709daa309822 +Block 0018 [ 60]: 5f5f457b0f044e15 +Block 0018 [ 61]: 0962103719625665 +Block 0018 [ 62]: 392e21509f3e2b85 +Block 0018 [ 63]: 79db0d5e62d4a35f +Block 0018 [ 64]: b1cc4815490b2a15 +Block 0018 [ 65]: 2a27bd31361243ff +Block 0018 [ 66]: 534931fd3119c337 +Block 0018 [ 67]: f2de675fd4477358 +Block 0018 [ 68]: 3ce1d2a9d12283a3 +Block 0018 [ 69]: 3529aeb38b7f494c +Block 0018 [ 70]: 859608bcef46cd68 +Block 0018 [ 71]: 92e002e9919eb521 +Block 0018 [ 72]: e94a244299ef800e +Block 0018 [ 73]: 3b52ecf16f8af708 +Block 0018 [ 74]: 7ba9b8b344d26286 +Block 0018 [ 75]: 65c1c368b537a81b +Block 0018 [ 76]: 0a00be152dce8df4 +Block 0018 [ 77]: 8a5639a940bdce45 +Block 0018 [ 78]: 41767d6c8bf15e7c +Block 0018 [ 79]: 5215d97498dd4741 +Block 0018 [ 80]: c70d80194c256712 +Block 0018 [ 81]: c8f08d28ec7265b5 +Block 0018 [ 82]: 394757f13699ce10 +Block 0018 [ 83]: 00184fc5a16919ba +Block 0018 [ 84]: 4f9a458762b2ff08 +Block 0018 [ 85]: e92b2319026bb801 +Block 0018 [ 86]: 14e47983ebef3da7 +Block 0018 [ 87]: b7afe7d7785d842c +Block 0018 [ 88]: da2999c313f6bebd +Block 0018 [ 89]: dbb0219158918ad4 +Block 0018 [ 90]: 0ff465d811aea3a4 +Block 0018 [ 91]: bb700ac4d2a8934a +Block 0018 [ 92]: 40552366f56fa6e8 +Block 0018 [ 93]: 9bc93fc38182a556 +Block 0018 [ 94]: bec6d8f0f9967bb9 +Block 0018 [ 95]: 6d6a8136627b7a9c +Block 0018 [ 96]: d2662137f57a7c6c +Block 0018 [ 97]: 5bb3b7ddf0963885 +Block 0018 [ 98]: 2e862fc79af5d102 +Block 0018 [ 99]: 2184d2e48441702b +Block 0018 [100]: 06d9bd4aedc4e8d5 +Block 0018 [101]: 4724e53387679683 +Block 0018 [102]: 6aac974179446794 +Block 0018 [103]: d7e60f9c73e24088 +Block 0018 [104]: 9db1ee2eacf97545 +Block 0018 [105]: dbaed3874219a120 +Block 0018 [106]: 76dbbdc4483bde99 +Block 0018 [107]: 39a4b5d1b9d35ec4 +Block 0018 [108]: ba2913d05acbc99d +Block 0018 [109]: 3938947bec18c8d3 +Block 0018 [110]: 7e4d1a1004fc2bf8 +Block 0018 [111]: 19a777b4f19d49f9 +Block 0018 [112]: dcc44d359edf7ba7 +Block 0018 [113]: 187b0ef4c810a9c6 +Block 0018 [114]: b073241a034b70cb +Block 0018 [115]: 4f30b75c95304517 +Block 0018 [116]: d431a15ac9c55e98 +Block 0018 [117]: 97b7e619a567d98e +Block 0018 [118]: 0b86895e716fe184 +Block 0018 [119]: 8f232e76cccd2fec +Block 0018 [120]: fb6b2f0ac4ee2162 +Block 0018 [121]: 35850bcb3c03430b +Block 0018 [122]: 6b7a17b5c64c950f +Block 0018 [123]: 024be1006b69f750 +Block 0018 [124]: 587cb3d3632ce41b +Block 0018 [125]: 44e4206f94a46c91 +Block 0018 [126]: 9d92bd06844fd42e +Block 0018 [127]: 1a362e419ebc0ebf +Block 0019 [ 0]: fb1a18dd9d7050cf +Block 0019 [ 1]: 8003990d8ce31314 +Block 0019 [ 2]: 5a1fe2fd55f52157 +Block 0019 [ 3]: f2c627a6c5b50c9c +Block 0019 [ 4]: 7df91a65f111fc48 +Block 0019 [ 5]: 4373c58ce1b6834d +Block 0019 [ 6]: 7a63036740cfc7e9 +Block 0019 [ 7]: f706a4864759b418 +Block 0019 [ 8]: 93acd66513889d55 +Block 0019 [ 9]: 48854dbcd9a36a91 +Block 0019 [ 10]: dc3409afd0b364d2 +Block 0019 [ 11]: 82d5350cc4216ae5 +Block 0019 [ 12]: 67656d5e97f0d6f3 +Block 0019 [ 13]: 08ffde5c41840d3d +Block 0019 [ 14]: a6e2e49699662cf6 +Block 0019 [ 15]: 1165624c23dc6a59 +Block 0019 [ 16]: 9b257613376b98bb +Block 0019 [ 17]: 5b3b3a9b22f18fc6 +Block 0019 [ 18]: 8e180a717652d9de +Block 0019 [ 19]: ee887439b80d6210 +Block 0019 [ 20]: 7dad12f1ebf23f4a +Block 0019 [ 21]: 8fbcd1a17cfc4382 +Block 0019 [ 22]: 9569665875fc1a39 +Block 0019 [ 23]: 32ef4ca936ecd698 +Block 0019 [ 24]: 6b143f4ff90bc9b8 +Block 0019 [ 25]: 3125e294dc69e551 +Block 0019 [ 26]: 8dfeae4343a1ab97 +Block 0019 [ 27]: 0d515500a7396b53 +Block 0019 [ 28]: f9aff1f427be7093 +Block 0019 [ 29]: 661148ebd0368628 +Block 0019 [ 30]: 405568cdd4f64a35 +Block 0019 [ 31]: 68db03ab59e58d23 +Block 0019 [ 32]: 4852cd76fea75ea2 +Block 0019 [ 33]: ef11900d02739bd6 +Block 0019 [ 34]: e54ac5c2a8fed901 +Block 0019 [ 35]: ebac4ca2e70572af +Block 0019 [ 36]: 11f503055e2f369a +Block 0019 [ 37]: 3cb7ec7a47ece701 +Block 0019 [ 38]: 741ac40ccb35b5f6 +Block 0019 [ 39]: 0988537de00f2f86 +Block 0019 [ 40]: 03c72d2e04a2b7d1 +Block 0019 [ 41]: bcdcf97b2046cf23 +Block 0019 [ 42]: e6abec7d693a2d78 +Block 0019 [ 43]: 17b3a2364d5d591e +Block 0019 [ 44]: 635b0613ef26c2f6 +Block 0019 [ 45]: f2dac357e00b0473 +Block 0019 [ 46]: 7b3f889632f9216f +Block 0019 [ 47]: b276ed10296d8bc0 +Block 0019 [ 48]: ca7bf1ac91f14ae3 +Block 0019 [ 49]: 67f2fbcfac4f0b3e +Block 0019 [ 50]: 3d410c3d2788dfc0 +Block 0019 [ 51]: e82b4e26ed7c2956 +Block 0019 [ 52]: 1b1ebf1749f98ac5 +Block 0019 [ 53]: 7606f41eb6e43647 +Block 0019 [ 54]: 72d8654a0024c77f +Block 0019 [ 55]: e8931c577a41a343 +Block 0019 [ 56]: c87455bf23cf0d7d +Block 0019 [ 57]: fd35a720c62f1148 +Block 0019 [ 58]: 740ba36ec29256dc +Block 0019 [ 59]: 3e58d08b19c34732 +Block 0019 [ 60]: 20b08e2a659869b6 +Block 0019 [ 61]: abf550ee47b890c4 +Block 0019 [ 62]: 6b51a125c9a5b1c8 +Block 0019 [ 63]: 8c2f07fa117246fc +Block 0019 [ 64]: d9dcd942493ffc8b +Block 0019 [ 65]: a67f91a1888767dd +Block 0019 [ 66]: cb0a25f005618897 +Block 0019 [ 67]: fe031e918884083e +Block 0019 [ 68]: b5f2696212d55bf4 +Block 0019 [ 69]: d6f0f120d54a2056 +Block 0019 [ 70]: b8aa60ecefdbf3ea +Block 0019 [ 71]: b1d50e6dba68c17a +Block 0019 [ 72]: ee748a952573ecdb +Block 0019 [ 73]: 9ca785a74983ceae +Block 0019 [ 74]: 44ec1f1bbc910c5e +Block 0019 [ 75]: 0fec54467df78766 +Block 0019 [ 76]: 624b8e56f6d980ec +Block 0019 [ 77]: fa07a5f17f84a623 +Block 0019 [ 78]: cd00a41e8aa5b6ce +Block 0019 [ 79]: 5697364234152d21 +Block 0019 [ 80]: 7b8a32e4f0d1af0d +Block 0019 [ 81]: 5d64cc8f68a0f974 +Block 0019 [ 82]: 7dcb4f15a3b8f121 +Block 0019 [ 83]: 9367b5b9258a325b +Block 0019 [ 84]: 4de4da6d8e0866d9 +Block 0019 [ 85]: c7b3b0f3abc15394 +Block 0019 [ 86]: d33b87d1eed4a337 +Block 0019 [ 87]: b9ed2e72bb6ebea4 +Block 0019 [ 88]: 10572f65d1efbe1f +Block 0019 [ 89]: 9e7a73cc84aba6fb +Block 0019 [ 90]: a53e0e4dda2544d6 +Block 0019 [ 91]: 65c60263116b0f00 +Block 0019 [ 92]: 83c981db596413a1 +Block 0019 [ 93]: cf570ce8ecef3c30 +Block 0019 [ 94]: 2260ce8de0bfabec +Block 0019 [ 95]: 7ad56b5059153188 +Block 0019 [ 96]: 802fe70bfdf0be5c +Block 0019 [ 97]: cacfaf3c2282467d +Block 0019 [ 98]: 8c51a731d976194b +Block 0019 [ 99]: 8ff60d9c20b335b6 +Block 0019 [100]: 7d574bc7d328545a +Block 0019 [101]: aa1c5b56f88145dd +Block 0019 [102]: a488018cf5b62cd4 +Block 0019 [103]: ccd5645cf5740f5a +Block 0019 [104]: 704c1487b8459aa3 +Block 0019 [105]: 01c90b93b0ec25f7 +Block 0019 [106]: 41bd7eb3eb05c641 +Block 0019 [107]: 49c7afa99bb7c26c +Block 0019 [108]: 9d20a21a25836732 +Block 0019 [109]: 463ce6f1868c2f65 +Block 0019 [110]: e4f900a4886c99f0 +Block 0019 [111]: ee60e1befabcb60e +Block 0019 [112]: 0f7b00260ee93605 +Block 0019 [113]: e42b603722eda7d4 +Block 0019 [114]: e7a6276083514d86 +Block 0019 [115]: 02c2b63554903e2c +Block 0019 [116]: 4f859183eddd47dd +Block 0019 [117]: 0f03d0c14a6dc8d6 +Block 0019 [118]: 6dccfeb204bb0ca6 +Block 0019 [119]: b81012e04b46c739 +Block 0019 [120]: 6ae65826188c494f +Block 0019 [121]: 5f1d0ccc8cc57df8 +Block 0019 [122]: 99a54746e5107aaa +Block 0019 [123]: ca505c81f9fa3408 +Block 0019 [124]: c6a0cd042b95a9c7 +Block 0019 [125]: 36249fc5a945bd11 +Block 0019 [126]: bd2b9f7b8007a925 +Block 0019 [127]: bd6acb937aa3d609 +Block 0020 [ 0]: 93e99e1a4d5cafe6 +Block 0020 [ 1]: a72d7a8f6c8bd7b1 +Block 0020 [ 2]: 2e3721ed3f80e3a3 +Block 0020 [ 3]: 67d1c3ab3ca8fb8c +Block 0020 [ 4]: 58473a4fb39b5fc8 +Block 0020 [ 5]: baacddb76a1ec395 +Block 0020 [ 6]: 352536841d5ec4c2 +Block 0020 [ 7]: fcdffbff05cbedc8 +Block 0020 [ 8]: 8d714be4151cd6c6 +Block 0020 [ 9]: dfecaef9c28affba +Block 0020 [ 10]: a7858f9938883a19 +Block 0020 [ 11]: e4c53a0816a41501 +Block 0020 [ 12]: 377d5cf1a6986c84 +Block 0020 [ 13]: a9ac07e1b5a080e9 +Block 0020 [ 14]: ae99f8c51cd373ec +Block 0020 [ 15]: 12384a0487d433fc +Block 0020 [ 16]: 4698f7ce1fa3b1b0 +Block 0020 [ 17]: 97244a2a1f70a34b +Block 0020 [ 18]: 66be91d82e66baed +Block 0020 [ 19]: 50082984074633db +Block 0020 [ 20]: 78790f2200af5109 +Block 0020 [ 21]: 9cdbb17e403ff77d +Block 0020 [ 22]: 6c7093dcf04ec559 +Block 0020 [ 23]: da5a75b7609646c9 +Block 0020 [ 24]: 9891ed3d657a93a2 +Block 0020 [ 25]: 6633e0030e2ccbaa +Block 0020 [ 26]: ac54b0cae8689083 +Block 0020 [ 27]: 5ca70788548dc642 +Block 0020 [ 28]: 4ef57fc92ba214e2 +Block 0020 [ 29]: 63c98636e210fea3 +Block 0020 [ 30]: 30a067f161164299 +Block 0020 [ 31]: 3a90bc7c0aab6dcb +Block 0020 [ 32]: 22d0b830145dd692 +Block 0020 [ 33]: 58eb216edaf79a23 +Block 0020 [ 34]: 761a26319013323c +Block 0020 [ 35]: 3faa99cd9bfa1a7a +Block 0020 [ 36]: 39f41dd6dbd06fa3 +Block 0020 [ 37]: 5afed9b5a2b82ca5 +Block 0020 [ 38]: 9c443f55e47693d1 +Block 0020 [ 39]: a473bda54f0dc5f6 +Block 0020 [ 40]: 1e395aa2ff689e85 +Block 0020 [ 41]: 849554a9fa1f5be3 +Block 0020 [ 42]: 5c4eac11a2154c7a +Block 0020 [ 43]: 20ff6540e40a983e +Block 0020 [ 44]: 3d3d4e80e458026d +Block 0020 [ 45]: 0522d503f1d01502 +Block 0020 [ 46]: 84baad09aa6b20dc +Block 0020 [ 47]: a106f6f61dcf6dbe +Block 0020 [ 48]: d9d379be17e5967a +Block 0020 [ 49]: f185e3a9bb50534f +Block 0020 [ 50]: 3da8b9f6d098a6b8 +Block 0020 [ 51]: 6e6f730ea70d8786 +Block 0020 [ 52]: 81b1e83fe22360b9 +Block 0020 [ 53]: 86dac8a4879d9fb5 +Block 0020 [ 54]: 45af3825912fc730 +Block 0020 [ 55]: f1a9b71aca4f6551 +Block 0020 [ 56]: e1d9b026f0b7938a +Block 0020 [ 57]: 8df5dd6c6294fc4a +Block 0020 [ 58]: 4e80499d795899b6 +Block 0020 [ 59]: 12dfd949141111a5 +Block 0020 [ 60]: 3c9ffe57f82daf39 +Block 0020 [ 61]: 9a7f1c23364f5009 +Block 0020 [ 62]: 186a6ada368e4893 +Block 0020 [ 63]: 0a17d3a733979d36 +Block 0020 [ 64]: 4f5aa0f6fe22c3c2 +Block 0020 [ 65]: 86ec04d35b55a87c +Block 0020 [ 66]: 0a388fa14d9e6216 +Block 0020 [ 67]: a7246e7258fab3d4 +Block 0020 [ 68]: b97873950381dbf3 +Block 0020 [ 69]: a89a63ec31e7cd17 +Block 0020 [ 70]: 974570cf18ddf858 +Block 0020 [ 71]: e69fcff456743df7 +Block 0020 [ 72]: 7270cd2d21b3fe4f +Block 0020 [ 73]: 5dd9c708a90939c9 +Block 0020 [ 74]: 4f0a8e1d1c27911b +Block 0020 [ 75]: f2956630ced19a12 +Block 0020 [ 76]: 8c26559e9f4aeeb3 +Block 0020 [ 77]: 832bd56ed44df813 +Block 0020 [ 78]: a0a56833974fbd01 +Block 0020 [ 79]: 906d7fe71992e65b +Block 0020 [ 80]: d4c217803f3a7716 +Block 0020 [ 81]: dc1a97ad52f78526 +Block 0020 [ 82]: 582c9767fdda19c9 +Block 0020 [ 83]: ce76b52dc1bf15e5 +Block 0020 [ 84]: 0268d969d029150a +Block 0020 [ 85]: 88052230b7458333 +Block 0020 [ 86]: 5e1f7b9ba31b1333 +Block 0020 [ 87]: 8242632c3b0864d5 +Block 0020 [ 88]: 0cd8f1f8f00971ca +Block 0020 [ 89]: bd962d94ea033a5c +Block 0020 [ 90]: d63a1b79c3e6242b +Block 0020 [ 91]: 01a22d486e6b8e9c +Block 0020 [ 92]: a661c99fa0781484 +Block 0020 [ 93]: 1113254c08f73e66 +Block 0020 [ 94]: 6ae7da400d7b7dfa +Block 0020 [ 95]: 6c0b3a4352aae071 +Block 0020 [ 96]: 9b28401625f225a3 +Block 0020 [ 97]: 244431aaaa2ef136 +Block 0020 [ 98]: 6789a61760180eb2 +Block 0020 [ 99]: 2bfb1ebfd7ff7106 +Block 0020 [100]: 1cbce3dbe1abe62a +Block 0020 [101]: 0a6ff21405d9f53a +Block 0020 [102]: ee640dd0cc788bf6 +Block 0020 [103]: ca888e3c4fd1b3c9 +Block 0020 [104]: e8d377e280f8f3f4 +Block 0020 [105]: 523230c4f5a953ef +Block 0020 [106]: abfa551596ebb0b4 +Block 0020 [107]: 2e0410edfcd22b5d +Block 0020 [108]: ef0dbab28d43cbdd +Block 0020 [109]: 2eff15435fab9442 +Block 0020 [110]: 0457c09ddbfedefc +Block 0020 [111]: b80cf1f200f6e482 +Block 0020 [112]: 7fe4d532644492df +Block 0020 [113]: 05bea3f2cbcfb741 +Block 0020 [114]: 72819b801a6ffbe8 +Block 0020 [115]: 71ddf2972b276d32 +Block 0020 [116]: 4ecdc15a724bb226 +Block 0020 [117]: ec507010237304a5 +Block 0020 [118]: 2448b19e22bd07a3 +Block 0020 [119]: 0897f27fd48afee3 +Block 0020 [120]: 4cd72010a43a8c50 +Block 0020 [121]: 75ab73a21d166ef1 +Block 0020 [122]: c339bd901702475f +Block 0020 [123]: 617029f43a64733b +Block 0020 [124]: fefec09ffe51f09b +Block 0020 [125]: d6758bc1df4e59de +Block 0020 [126]: 129f67a4801e5ee8 +Block 0020 [127]: be78463817131abc +Block 0021 [ 0]: e9e21481f3ee3f3a +Block 0021 [ 1]: fed52a84c085c6ed +Block 0021 [ 2]: 709f85b64e624464 +Block 0021 [ 3]: b3505f6446a9c658 +Block 0021 [ 4]: 56e6bbc2de2b8686 +Block 0021 [ 5]: a01832cc4d381458 +Block 0021 [ 6]: 28792d5e35039a14 +Block 0021 [ 7]: b68293379e015981 +Block 0021 [ 8]: d91a438da9e8148f +Block 0021 [ 9]: f284b0068ccbb947 +Block 0021 [ 10]: d82aff158b7ff636 +Block 0021 [ 11]: 62453db3456f56a9 +Block 0021 [ 12]: fb9be58c6e337392 +Block 0021 [ 13]: f15f76741214a579 +Block 0021 [ 14]: 89040978229c8229 +Block 0021 [ 15]: 445a51444b4ed6d2 +Block 0021 [ 16]: 0c2016bcdd4444f8 +Block 0021 [ 17]: cc58c2e1f7a8ef74 +Block 0021 [ 18]: c56685d74767ab8d +Block 0021 [ 19]: 05b0ce7ea4729d75 +Block 0021 [ 20]: c2679824b11d3a7b +Block 0021 [ 21]: e530c3134cb491ec +Block 0021 [ 22]: a1d54a6ff8e08c8c +Block 0021 [ 23]: 3723a2fec2faf94a +Block 0021 [ 24]: 8be73a3427edb4ff +Block 0021 [ 25]: e23b14038a2cdc8d +Block 0021 [ 26]: 23f92fec3c845d10 +Block 0021 [ 27]: 62dc4b7f7fe4baff +Block 0021 [ 28]: dfa4860130a123d8 +Block 0021 [ 29]: 41e6014b50bda4a2 +Block 0021 [ 30]: b742c21808987bc7 +Block 0021 [ 31]: ce3351e6589dfa12 +Block 0021 [ 32]: 1b107becc66f8cc8 +Block 0021 [ 33]: 7c1b0a560d8d31dd +Block 0021 [ 34]: fb90ae2933aa6acd +Block 0021 [ 35]: 240d3e273b67cb83 +Block 0021 [ 36]: ffc9b0b54f41adc7 +Block 0021 [ 37]: ad002fb0bb2adf07 +Block 0021 [ 38]: af1393d8bee411e8 +Block 0021 [ 39]: c19215172044891d +Block 0021 [ 40]: e65121884cf94253 +Block 0021 [ 41]: 2768d775293609b5 +Block 0021 [ 42]: 1fc4a96085da417b +Block 0021 [ 43]: 5b1ea60d366ddb87 +Block 0021 [ 44]: 588eeca5735e0d4d +Block 0021 [ 45]: 13b5eebb92686954 +Block 0021 [ 46]: 0f268f398fa1d4f7 +Block 0021 [ 47]: b2418155a9b0bb20 +Block 0021 [ 48]: 858e8cd90b227b5c +Block 0021 [ 49]: 6edb7199a0bb2d89 +Block 0021 [ 50]: 2d49d5351079c672 +Block 0021 [ 51]: b5c2cd06e4f80951 +Block 0021 [ 52]: 107e74d83f7d4b69 +Block 0021 [ 53]: 4831e86b26067716 +Block 0021 [ 54]: e24aa23186ef628b +Block 0021 [ 55]: 99cd343ea5a67ac0 +Block 0021 [ 56]: ffb7d321efcf243f +Block 0021 [ 57]: 1d6ac055a62ef2fa +Block 0021 [ 58]: 4c87aa50ec37d94e +Block 0021 [ 59]: 08c40682ba554409 +Block 0021 [ 60]: f00e40bf4a8d090a +Block 0021 [ 61]: ad5bf9861e7832c5 +Block 0021 [ 62]: cdf5453220419e2c +Block 0021 [ 63]: 5e035115961ff553 +Block 0021 [ 64]: ac014e59931b1719 +Block 0021 [ 65]: 84d65f93135d21b5 +Block 0021 [ 66]: 2d96485bd6dcf756 +Block 0021 [ 67]: f2cc93cb5dcd9f02 +Block 0021 [ 68]: b6f93e1c657a780e +Block 0021 [ 69]: 5f81025581879599 +Block 0021 [ 70]: 9e3102b71c46f3b8 +Block 0021 [ 71]: 828d1a2f8bc61193 +Block 0021 [ 72]: a461cbeb81445a3b +Block 0021 [ 73]: f2ed387337c2b77a +Block 0021 [ 74]: 3466edf9fd5c7475 +Block 0021 [ 75]: 19015d8ff2e0668e +Block 0021 [ 76]: 1a595c4a11abf791 +Block 0021 [ 77]: b00ca0d08cea35f2 +Block 0021 [ 78]: 86f1738ddd5f5c7f +Block 0021 [ 79]: 98a41e9eac5e201a +Block 0021 [ 80]: 315f0615eace01ec +Block 0021 [ 81]: 67ef04d09e49d1f9 +Block 0021 [ 82]: 7c95edab62fb113c +Block 0021 [ 83]: f258ea5ffde8eeae +Block 0021 [ 84]: 2c0ca0a6f3de727a +Block 0021 [ 85]: adef8be4987599ee +Block 0021 [ 86]: acd4da447f9fb36d +Block 0021 [ 87]: c7442fac27ee58f2 +Block 0021 [ 88]: 63ef62153ec0219f +Block 0021 [ 89]: 5912c663cee52508 +Block 0021 [ 90]: 43b80d1f08e25858 +Block 0021 [ 91]: b11d841a93c9ab57 +Block 0021 [ 92]: 573381ecc2746f28 +Block 0021 [ 93]: da95a423b8aaa3f6 +Block 0021 [ 94]: a74baf9b9b9cd1d6 +Block 0021 [ 95]: d3bdb02257e0ead2 +Block 0021 [ 96]: de9a1d8345598394 +Block 0021 [ 97]: 2c520473e0b78004 +Block 0021 [ 98]: 2b45c427d526d9f7 +Block 0021 [ 99]: 5c42be040a4bcb6d +Block 0021 [100]: 732d0f4b457582cb +Block 0021 [101]: 800260cc6bc9e2b6 +Block 0021 [102]: bfdee932c42edd4a +Block 0021 [103]: ca96276597473186 +Block 0021 [104]: 0f7244fcb34b528e +Block 0021 [105]: 7218c8c434ecdb4c +Block 0021 [106]: 745223365be6f238 +Block 0021 [107]: 2240cdda4143f9d1 +Block 0021 [108]: 683ae21c2e68a835 +Block 0021 [109]: f4d8be8f482bc078 +Block 0021 [110]: aade23a2859475a0 +Block 0021 [111]: 7ef8552d415107b4 +Block 0021 [112]: 50b6f85bde4b95d5 +Block 0021 [113]: 72c68fd8083bdb4b +Block 0021 [114]: 8430408343777d38 +Block 0021 [115]: d531368e35fa0bfc +Block 0021 [116]: b838e6201bccf0ca +Block 0021 [117]: 48c2bfb75a462bd6 +Block 0021 [118]: c33044442c9b393f +Block 0021 [119]: e474e5d7d70d880d +Block 0021 [120]: 4dfe1dc828adec32 +Block 0021 [121]: 3ef49af889009bc3 +Block 0021 [122]: cc2489247a2514e0 +Block 0021 [123]: 646482202c13e4ae +Block 0021 [124]: a49464d18f5e58ba +Block 0021 [125]: d6590167ad99694a +Block 0021 [126]: 41b6882b4cb13285 +Block 0021 [127]: f44b1ce4e610ff1d +Block 0022 [ 0]: 10516fe48bd992d6 +Block 0022 [ 1]: 6e80ad662a5249a0 +Block 0022 [ 2]: 9e4c06f4c020cfd2 +Block 0022 [ 3]: 61c51d3b26043155 +Block 0022 [ 4]: a6e8e47d334b4620 +Block 0022 [ 5]: 7103ec6a7b808730 +Block 0022 [ 6]: ab7207bd00414df1 +Block 0022 [ 7]: fd847b3057de9efa +Block 0022 [ 8]: 2fd0a594818276a8 +Block 0022 [ 9]: 708eee6a6bad30fd +Block 0022 [ 10]: 955bf28de3f535dd +Block 0022 [ 11]: 6d002962ec0c3b62 +Block 0022 [ 12]: ed3789bea8e1cb91 +Block 0022 [ 13]: cec3c50996e4d7a5 +Block 0022 [ 14]: 99a41b50ca1ed0a6 +Block 0022 [ 15]: 160e0ab9a0a4bc11 +Block 0022 [ 16]: 25bdb628732f1036 +Block 0022 [ 17]: f83b95562f875270 +Block 0022 [ 18]: e1161c3e5e33ae07 +Block 0022 [ 19]: e0d2924a83aa3a87 +Block 0022 [ 20]: c17673d548c6b215 +Block 0022 [ 21]: 5157a65c923beb29 +Block 0022 [ 22]: e94d6cbd03cda367 +Block 0022 [ 23]: 35d5aa15e62a946c +Block 0022 [ 24]: ec42ddc3f35fd651 +Block 0022 [ 25]: 1f4467ff293980ea +Block 0022 [ 26]: fd1b51fd8670f1c4 +Block 0022 [ 27]: eb484dd78071a143 +Block 0022 [ 28]: 8ac6e5fc54ab2f6b +Block 0022 [ 29]: 64463e0b03e7b07d +Block 0022 [ 30]: 0640bcfd3d78dc7d +Block 0022 [ 31]: f83e88ee65da93ea +Block 0022 [ 32]: d6df547213734546 +Block 0022 [ 33]: f029efdf2eaada54 +Block 0022 [ 34]: f785a308b8742c3f +Block 0022 [ 35]: ab6fb9b561569ae2 +Block 0022 [ 36]: c1bfad8d27e5b694 +Block 0022 [ 37]: 23bc68913631aa36 +Block 0022 [ 38]: 93f6b948c9fdef23 +Block 0022 [ 39]: 5edbee1a84d1f0a7 +Block 0022 [ 40]: 5bedf33c32a8665a +Block 0022 [ 41]: aa5a5d90dcac3d50 +Block 0022 [ 42]: eafcf9c119242b16 +Block 0022 [ 43]: e0e8518fcbe1abaf +Block 0022 [ 44]: 1cac6136bba6de36 +Block 0022 [ 45]: 9d83d72eec3e7108 +Block 0022 [ 46]: 3ffafb300b518e01 +Block 0022 [ 47]: 6fa4d3a312908d27 +Block 0022 [ 48]: 142c69037840cd39 +Block 0022 [ 49]: 280e1c649ba0260a +Block 0022 [ 50]: 55dc74836fe074df +Block 0022 [ 51]: 9703e674a4721656 +Block 0022 [ 52]: c069c595578ce657 +Block 0022 [ 53]: ac365998563c1143 +Block 0022 [ 54]: c85611d8d5d27e34 +Block 0022 [ 55]: ba4c934267f56ef5 +Block 0022 [ 56]: 103b25f8f428f4ce +Block 0022 [ 57]: e06848354bf96054 +Block 0022 [ 58]: aa5e6ba9c44c7a4b +Block 0022 [ 59]: 978bcbd3eede5e10 +Block 0022 [ 60]: 626d30eac9c66050 +Block 0022 [ 61]: 7479182c697b1ec6 +Block 0022 [ 62]: c1f34e2bdcdb7717 +Block 0022 [ 63]: ab17a27bd9e11520 +Block 0022 [ 64]: df9389a6153b5408 +Block 0022 [ 65]: 46a5ea923a45aabe +Block 0022 [ 66]: b8adeb3d2292be64 +Block 0022 [ 67]: 11e599917a19aee6 +Block 0022 [ 68]: 623ec355fc76dd16 +Block 0022 [ 69]: a51ac58cfe62691b +Block 0022 [ 70]: 2bd1c93b73345e7a +Block 0022 [ 71]: 0616e323173f8d81 +Block 0022 [ 72]: 2c3a81db077e2fba +Block 0022 [ 73]: cc66b376b64785d8 +Block 0022 [ 74]: 200d21fcf32e37ea +Block 0022 [ 75]: 13fef3f2b68463a0 +Block 0022 [ 76]: 28733ed577c7f7a5 +Block 0022 [ 77]: cfb7a1fd8a7da043 +Block 0022 [ 78]: 8502c5188ec6f568 +Block 0022 [ 79]: fff355982c5d5a35 +Block 0022 [ 80]: 3a2c65bd989cd16a +Block 0022 [ 81]: ac5d14d1805f8b4b +Block 0022 [ 82]: 9383626d4a1c5102 +Block 0022 [ 83]: 9803d583927d0984 +Block 0022 [ 84]: 498897d793f168c2 +Block 0022 [ 85]: 10251e23be6ac284 +Block 0022 [ 86]: 87919d5d2320d30d +Block 0022 [ 87]: 2f14689f30ea0eb8 +Block 0022 [ 88]: cb59ab5a48c10a12 +Block 0022 [ 89]: caaa6b45434178ca +Block 0022 [ 90]: ed5eae615338303e +Block 0022 [ 91]: 322586e5fc7a210c +Block 0022 [ 92]: c3bfb2fa7b1d8c70 +Block 0022 [ 93]: ed9cd80167917df4 +Block 0022 [ 94]: 49a1812cfb438ffa +Block 0022 [ 95]: 19f731eb01464eaa +Block 0022 [ 96]: 0369b5bddf4a867f +Block 0022 [ 97]: 7bfdd90aa04766e1 +Block 0022 [ 98]: 06a00edab882cc0c +Block 0022 [ 99]: 26d2c21ae47a0a3e +Block 0022 [100]: 673148ac664b927d +Block 0022 [101]: 5371f1dacb6189ab +Block 0022 [102]: dfd2dd883cf0ebf3 +Block 0022 [103]: 3dd89111bf1405b7 +Block 0022 [104]: 87d8e5833a8a4d8a +Block 0022 [105]: c28cc9f25cc89887 +Block 0022 [106]: 94f708bddbd46d36 +Block 0022 [107]: ba69d4f56b3b6f00 +Block 0022 [108]: 8d2d9679e0e99180 +Block 0022 [109]: 38c61e2d8f3c3a6c +Block 0022 [110]: 42fca3d24f84e642 +Block 0022 [111]: 5d59762e5a3944ff +Block 0022 [112]: 8ccf9047384acd68 +Block 0022 [113]: 6a0bd116f828077a +Block 0022 [114]: e807ea99cb1bc3e1 +Block 0022 [115]: 600c98e9e25fa233 +Block 0022 [116]: bee422c9314529e4 +Block 0022 [117]: 137d1cdcdcb07e6a +Block 0022 [118]: 9064f3eccd37e15e +Block 0022 [119]: 65a371f3bc67a32c +Block 0022 [120]: 8a30ca0e610902a2 +Block 0022 [121]: 7fe6c6b430c1d9a9 +Block 0022 [122]: 23e3a862121bac8e +Block 0022 [123]: 9d11401f5b21ef70 +Block 0022 [124]: 7fe3e8254eb4b904 +Block 0022 [125]: 8fd618e2b06951c9 +Block 0022 [126]: f0f4543eb4268123 +Block 0022 [127]: f82a3b4cbb64e6ff +Block 0023 [ 0]: 51b8f26d399c69bc +Block 0023 [ 1]: c071fa67c98eb6ab +Block 0023 [ 2]: cdab8aaa7131c6c1 +Block 0023 [ 3]: 75492b8715e5cf49 +Block 0023 [ 4]: c5b2b58f9b1a600d +Block 0023 [ 5]: a72ab04580d73772 +Block 0023 [ 6]: a9118d6a68c5b451 +Block 0023 [ 7]: 1a43b68a96e27b34 +Block 0023 [ 8]: bfc42018edd2ad91 +Block 0023 [ 9]: 5d1a6a93d9cd45cc +Block 0023 [ 10]: 3389bc0ca66422ab +Block 0023 [ 11]: d819b30b62996b9b +Block 0023 [ 12]: fca4eee794dcb19a +Block 0023 [ 13]: 824c758dafa29d8e +Block 0023 [ 14]: 96acaefa149817f9 +Block 0023 [ 15]: 554c904f393d2266 +Block 0023 [ 16]: ce8f97770d672269 +Block 0023 [ 17]: 8c643e7b155b1645 +Block 0023 [ 18]: 1e921a6839e64a92 +Block 0023 [ 19]: 82c49b54962e5525 +Block 0023 [ 20]: c805f82c3c20e36d +Block 0023 [ 21]: 69c9422e6d381027 +Block 0023 [ 22]: b04f13b7d1000957 +Block 0023 [ 23]: a307a1a3f4c2b044 +Block 0023 [ 24]: 111d0db7963f011f +Block 0023 [ 25]: 693d84f951fb010b +Block 0023 [ 26]: 38408ba11be93312 +Block 0023 [ 27]: 0f14c006cef1fcb2 +Block 0023 [ 28]: ebe364aeed4b3ec8 +Block 0023 [ 29]: c7712fdf99b74c7d +Block 0023 [ 30]: 01673c55e0bfdd6d +Block 0023 [ 31]: 60d075cd5efcbc0b +Block 0023 [ 32]: 647a26de4adf2227 +Block 0023 [ 33]: 585c686a2b7f32fa +Block 0023 [ 34]: 8cbc3c41b6d6fff3 +Block 0023 [ 35]: 8f101fdaf888b67e +Block 0023 [ 36]: 76df5f51b1d1a638 +Block 0023 [ 37]: f858bcc3c4e06420 +Block 0023 [ 38]: 0f72ef7a092b0a23 +Block 0023 [ 39]: 8bf7b4639413c9bd +Block 0023 [ 40]: 29a6c46f51ebe568 +Block 0023 [ 41]: a40fc18bf17b5490 +Block 0023 [ 42]: 98645e432602caca +Block 0023 [ 43]: 27f6f7eff49ede5e +Block 0023 [ 44]: 822b275c48e9d987 +Block 0023 [ 45]: bd8c451a58146d33 +Block 0023 [ 46]: cbd9150b80ba7822 +Block 0023 [ 47]: 762e616beb4ff189 +Block 0023 [ 48]: b7faabd20293c82d +Block 0023 [ 49]: c0ea5ba064106a91 +Block 0023 [ 50]: fc8d4176e1956aa3 +Block 0023 [ 51]: eef76c2a172e309d +Block 0023 [ 52]: 028b9a0678496439 +Block 0023 [ 53]: 02431190caf3229e +Block 0023 [ 54]: 93f958d07904ba5c +Block 0023 [ 55]: 7f9228bea5b3e7d3 +Block 0023 [ 56]: f7e8a67449b73db5 +Block 0023 [ 57]: e184d8d39ebfd9d7 +Block 0023 [ 58]: 458c260628950d29 +Block 0023 [ 59]: d5d59493f4f3ab49 +Block 0023 [ 60]: 52810f0d895154e6 +Block 0023 [ 61]: 48890c4359d36387 +Block 0023 [ 62]: d9ed391fc01aa28f +Block 0023 [ 63]: 7dc15dfc8848a73e +Block 0023 [ 64]: 0f5e24c089911cf7 +Block 0023 [ 65]: fb2d00b5197c5a9f +Block 0023 [ 66]: a585c2cd2050c293 +Block 0023 [ 67]: 822f77775f03bc9d +Block 0023 [ 68]: da1d24c62e225517 +Block 0023 [ 69]: c19dde644105c3f1 +Block 0023 [ 70]: e73998960ea21e02 +Block 0023 [ 71]: 18b22d33c3a507e1 +Block 0023 [ 72]: 92efaec756b407f2 +Block 0023 [ 73]: 69b5b5b9ac8e6902 +Block 0023 [ 74]: b92f44a99a2ed037 +Block 0023 [ 75]: 55c9ef9deced5f41 +Block 0023 [ 76]: adafa68c9b162398 +Block 0023 [ 77]: c81ddc531fe06ae2 +Block 0023 [ 78]: e04b242b72f95238 +Block 0023 [ 79]: 51c490474495bd78 +Block 0023 [ 80]: fb6f199815333b03 +Block 0023 [ 81]: 7112249b96f1b0e4 +Block 0023 [ 82]: 83231ce5117bcd91 +Block 0023 [ 83]: aa7e1b7fb06c7d1e +Block 0023 [ 84]: 3a2d3d8b02473340 +Block 0023 [ 85]: de732586a74d9314 +Block 0023 [ 86]: 7298cf9215c7f6b1 +Block 0023 [ 87]: 35ce550af4ddbc36 +Block 0023 [ 88]: b3030a9d8df310cc +Block 0023 [ 89]: d49daa0e515db0b6 +Block 0023 [ 90]: a408538a1a3757ce +Block 0023 [ 91]: 03cc331f9ac38ffe +Block 0023 [ 92]: 1fbe448017465116 +Block 0023 [ 93]: 53cc67fc2adf1894 +Block 0023 [ 94]: d16c84dc21a96369 +Block 0023 [ 95]: 45c1d58d1c6635cc +Block 0023 [ 96]: 3e9fdcaeb9ead4a3 +Block 0023 [ 97]: 453f5fbdb21f9e1a +Block 0023 [ 98]: 853b01fa14cffe9e +Block 0023 [ 99]: 429987c05c91ef53 +Block 0023 [100]: a2072cb67ffc5a65 +Block 0023 [101]: 37454a3792e46599 +Block 0023 [102]: 167b3dd6a5c04120 +Block 0023 [103]: 2a1f42086bfca6d1 +Block 0023 [104]: 3e13e3d094a55227 +Block 0023 [105]: 700908d898fd16de +Block 0023 [106]: b4ebced8311a6bbf +Block 0023 [107]: 4190aed4811f39c0 +Block 0023 [108]: 2a58b7961c373ac6 +Block 0023 [109]: e665ef6a1251f3c7 +Block 0023 [110]: d9add80a10d174dd +Block 0023 [111]: 90adc031a2dbf94c +Block 0023 [112]: 699c684665ad5329 +Block 0023 [113]: 872a3b6d8bbef466 +Block 0023 [114]: a20f7b5c18ce00fb +Block 0023 [115]: d07632df9d2f5403 +Block 0023 [116]: 237ac845201a666a +Block 0023 [117]: 04f4008ea14c1e58 +Block 0023 [118]: 67f8329c63fcfc8b +Block 0023 [119]: 1f2483d57a31386c +Block 0023 [120]: 9bc69c6b59e71be3 +Block 0023 [121]: 85f450aba2d1577b +Block 0023 [122]: fcb1312231908bf0 +Block 0023 [123]: 237d458ea94e6b6d +Block 0023 [124]: e49fba5fdf5c3936 +Block 0023 [125]: d2fdeee74597fb69 +Block 0023 [126]: 4928a8d471128e8b +Block 0023 [127]: 1a6082c717abd94c +Block 0024 [ 0]: 5958a22b70bf98ca +Block 0024 [ 1]: 57f117fb171d2dbd +Block 0024 [ 2]: 34312fb32bd1c304 +Block 0024 [ 3]: 8f2cd82a0db46627 +Block 0024 [ 4]: 298399822348198c +Block 0024 [ 5]: 7288500bf16998fe +Block 0024 [ 6]: dd3c003edb9de752 +Block 0024 [ 7]: fba874c3a38ab35b +Block 0024 [ 8]: 3a800e3301af7c15 +Block 0024 [ 9]: c8cccd3056b2e62a +Block 0024 [ 10]: 306cb44417a427f6 +Block 0024 [ 11]: caaf0cb8f35d653d +Block 0024 [ 12]: 4fe793dac54e868f +Block 0024 [ 13]: d52bda7f705b6301 +Block 0024 [ 14]: 82299afb64fb7cf3 +Block 0024 [ 15]: 1dd68220ead6db39 +Block 0024 [ 16]: f89c457e0b441514 +Block 0024 [ 17]: f6ed96b4cc9d62d7 +Block 0024 [ 18]: 9de2a04caa98deca +Block 0024 [ 19]: d0d9a743cdad41f1 +Block 0024 [ 20]: 092684735b3f7ed0 +Block 0024 [ 21]: ba06f39a89ddeac5 +Block 0024 [ 22]: cf5bf8b8feb52f7f +Block 0024 [ 23]: 2a1a3ebfd5664ee5 +Block 0024 [ 24]: 715c4f5c10c7df9b +Block 0024 [ 25]: 17e1625499f291ee +Block 0024 [ 26]: e42bb7eb1c580aca +Block 0024 [ 27]: e15b4ea4978bcf4e +Block 0024 [ 28]: a4ef3f981f368ac3 +Block 0024 [ 29]: dd2be60dc6fa8fe0 +Block 0024 [ 30]: 00bc12eb1460e664 +Block 0024 [ 31]: 6df456cc5c9a8e30 +Block 0024 [ 32]: 81ee03abc1b94e11 +Block 0024 [ 33]: 229eee89fa6765ba +Block 0024 [ 34]: 05c980ceda880f9e +Block 0024 [ 35]: 144fb8a0cbb32810 +Block 0024 [ 36]: 9d15ce141d201e80 +Block 0024 [ 37]: b83ba7e41fc01637 +Block 0024 [ 38]: 37418fc74877b29d +Block 0024 [ 39]: 3f539195743daba2 +Block 0024 [ 40]: 3973112b38cb695b +Block 0024 [ 41]: 690ac2df3a6e866a +Block 0024 [ 42]: b820d3887c305fda +Block 0024 [ 43]: 96398cc15455712e +Block 0024 [ 44]: 302d7154b452879a +Block 0024 [ 45]: 2a068b244898efe1 +Block 0024 [ 46]: c7f92e307cb22ece +Block 0024 [ 47]: 65360372a6062f65 +Block 0024 [ 48]: e1bb18c2e2e801b0 +Block 0024 [ 49]: 917ba27e80909276 +Block 0024 [ 50]: 893817757c7712ee +Block 0024 [ 51]: 1b8f1913ca9115ee +Block 0024 [ 52]: e66dbbc3f5b52329 +Block 0024 [ 53]: 1a3c941cab6e616a +Block 0024 [ 54]: 9c1d4791e9e03dd1 +Block 0024 [ 55]: d0bcd8855fec2860 +Block 0024 [ 56]: f4753fc9d00e3f17 +Block 0024 [ 57]: ee417f71c775107f +Block 0024 [ 58]: e5d134ad67ce823f +Block 0024 [ 59]: 73603420f330dc9b +Block 0024 [ 60]: 16cc64de47137a67 +Block 0024 [ 61]: abd7703e1a9697b4 +Block 0024 [ 62]: 9fe7e2341ea7d03a +Block 0024 [ 63]: 35e71533e92a5003 +Block 0024 [ 64]: 0cfb5d944e248005 +Block 0024 [ 65]: 0de2faf144671ca5 +Block 0024 [ 66]: 57a900216c27fa3c +Block 0024 [ 67]: 856a2968ecb60014 +Block 0024 [ 68]: ad045c92a406d6b6 +Block 0024 [ 69]: 55b8ccc11f289add +Block 0024 [ 70]: 485aa0c406a78646 +Block 0024 [ 71]: 598beecd4819c981 +Block 0024 [ 72]: 3e484b387f29eb7f +Block 0024 [ 73]: 5dffd582a0b86268 +Block 0024 [ 74]: e02bd64109d369c5 +Block 0024 [ 75]: 8ae28641db25300a +Block 0024 [ 76]: 349c098672bcacc1 +Block 0024 [ 77]: e513fedd3a71aa98 +Block 0024 [ 78]: 5b9db396f85b4b5e +Block 0024 [ 79]: c69258b2c8510a52 +Block 0024 [ 80]: 282e375ed617f67b +Block 0024 [ 81]: c7500ba4a34668cd +Block 0024 [ 82]: 096a1dc27f0d1c36 +Block 0024 [ 83]: 542bdf2ef5fab14f +Block 0024 [ 84]: eb7d48d2d0946bfb +Block 0024 [ 85]: 86cc9ba19e5d1b0a +Block 0024 [ 86]: af4ff929a67207a2 +Block 0024 [ 87]: 3b1a65ca42d52005 +Block 0024 [ 88]: 6f30cf327e92c077 +Block 0024 [ 89]: 26a74ed43084c50e +Block 0024 [ 90]: f139cd5c4604a050 +Block 0024 [ 91]: 65d1584ad83cff5d +Block 0024 [ 92]: 465ab84996ad2ad2 +Block 0024 [ 93]: 966ad44cd9213b19 +Block 0024 [ 94]: 3bb32bded3e109f1 +Block 0024 [ 95]: ec424f052913176c +Block 0024 [ 96]: d3f8b90bd9d7a44e +Block 0024 [ 97]: a57c3f3d5f7e3894 +Block 0024 [ 98]: dd295ea31e430456 +Block 0024 [ 99]: fa5d6f3c749c02b2 +Block 0024 [100]: 464ad61952defe18 +Block 0024 [101]: 35e8649acef1722f +Block 0024 [102]: ee5ae50599920a74 +Block 0024 [103]: f3824a188dde4bb6 +Block 0024 [104]: 95af191695fabeb1 +Block 0024 [105]: 303b94514b6547b8 +Block 0024 [106]: 038c732c6e2d8596 +Block 0024 [107]: f759939b268ab594 +Block 0024 [108]: a56dff1812e139bc +Block 0024 [109]: 98b71668f976ce94 +Block 0024 [110]: 6c29893f6b176e92 +Block 0024 [111]: 460d68ff632de327 +Block 0024 [112]: 87e56f61054566d3 +Block 0024 [113]: 5e40442c09947b73 +Block 0024 [114]: 8f55f37db55c1dfa +Block 0024 [115]: d6939ee647a66aea +Block 0024 [116]: ca69515ea441ad2f +Block 0024 [117]: 50ca5d2bdaff963f +Block 0024 [118]: eb78460ef25de562 +Block 0024 [119]: cbc0fd708d5c0dab +Block 0024 [120]: 66f619ea39fddc1f +Block 0024 [121]: d4446cedd28cafbb +Block 0024 [122]: 1777b81c1958776f +Block 0024 [123]: bdcabfc84292b6fe +Block 0024 [124]: 7d940c9fa0dde6bd +Block 0024 [125]: 1c177188c4335364 +Block 0024 [126]: cd9baecf1bb872ef +Block 0024 [127]: fbc047fb9b439a29 +Block 0025 [ 0]: fffb955af57af90b +Block 0025 [ 1]: e4871b8f02f26ecb +Block 0025 [ 2]: b89f59c3a5f723e6 +Block 0025 [ 3]: 6a8a73613f18f0ff +Block 0025 [ 4]: 040d4829377eb6ae +Block 0025 [ 5]: b94070732353e4d1 +Block 0025 [ 6]: fca08ebbbcdce029 +Block 0025 [ 7]: cdd7097aab05e4ab +Block 0025 [ 8]: f75a8252080cef39 +Block 0025 [ 9]: 1e961f4e04b6f7af +Block 0025 [ 10]: 0ce9670791be9695 +Block 0025 [ 11]: da78cba39e099ce9 +Block 0025 [ 12]: 3e636f44b1f40d7f +Block 0025 [ 13]: 6e37649cb5b98488 +Block 0025 [ 14]: 7fbe2099551d03d7 +Block 0025 [ 15]: 4a7a23f6d644562e +Block 0025 [ 16]: c4409c1f9e401137 +Block 0025 [ 17]: a4e562c13b8d87a1 +Block 0025 [ 18]: 1224688a119818cf +Block 0025 [ 19]: eeb1a045a905ea51 +Block 0025 [ 20]: 95a8e3c3ac0353c3 +Block 0025 [ 21]: 54678ef6109a8f3f +Block 0025 [ 22]: 97803b357d69c9b1 +Block 0025 [ 23]: 8e411ea1f50c55ba +Block 0025 [ 24]: 1d48fbcb0f4be52e +Block 0025 [ 25]: 4ea786fff3a71734 +Block 0025 [ 26]: dc2ee88f078ffbe6 +Block 0025 [ 27]: b3d61433d92e6848 +Block 0025 [ 28]: 7ebb5413bb1a23f8 +Block 0025 [ 29]: 338e907d6713761e +Block 0025 [ 30]: 612968dd685c9da2 +Block 0025 [ 31]: 64e5797faad44d22 +Block 0025 [ 32]: b1b4a32066421b11 +Block 0025 [ 33]: 7c110e3f427e61d6 +Block 0025 [ 34]: 6cd462dd0ab4293a +Block 0025 [ 35]: e4c99723248a7290 +Block 0025 [ 36]: eadfc82582c03ea0 +Block 0025 [ 37]: 129612d57eb1dfbb +Block 0025 [ 38]: 6a8862a2b2688716 +Block 0025 [ 39]: abef922090105cff +Block 0025 [ 40]: cf0f91207c4df18a +Block 0025 [ 41]: 4bda9ddc69523982 +Block 0025 [ 42]: 105980383d263220 +Block 0025 [ 43]: c4cafc2fa2a587a3 +Block 0025 [ 44]: bf50382c61e8fe19 +Block 0025 [ 45]: 692c2622e148a03e +Block 0025 [ 46]: 2a6d1d440295bcd0 +Block 0025 [ 47]: d62efe2d0f92e710 +Block 0025 [ 48]: 826da3a890c5e1e2 +Block 0025 [ 49]: 663723f1834287b5 +Block 0025 [ 50]: f46454259bead5fa +Block 0025 [ 51]: 1e1a2680b594fd39 +Block 0025 [ 52]: 52a4a56d81b88b95 +Block 0025 [ 53]: 92748b0473ce8d9f +Block 0025 [ 54]: ee6f171b385e5d19 +Block 0025 [ 55]: aacfdddac7c3f517 +Block 0025 [ 56]: 539a85613e58bf5d +Block 0025 [ 57]: 2b4cf3a7835ff74c +Block 0025 [ 58]: 45483cef811ca2e8 +Block 0025 [ 59]: c6873023ebf4778b +Block 0025 [ 60]: 9e5089ac1526d66f +Block 0025 [ 61]: 5cd34c48f407df18 +Block 0025 [ 62]: 2bac068ca9b03ef4 +Block 0025 [ 63]: 915a96c8e754fd66 +Block 0025 [ 64]: cf074a9cc0a6b214 +Block 0025 [ 65]: fb1fd47a829329e5 +Block 0025 [ 66]: b580c0a7affee031 +Block 0025 [ 67]: b3370d02e6d57513 +Block 0025 [ 68]: c88763d6f3f26905 +Block 0025 [ 69]: 824015be540107e8 +Block 0025 [ 70]: 974852db1cc7cfd9 +Block 0025 [ 71]: c0c548f28c6acdaa +Block 0025 [ 72]: 74c0e45d099d474c +Block 0025 [ 73]: e01c4e0b64b77834 +Block 0025 [ 74]: 0533c14d980c6add +Block 0025 [ 75]: 7931a36cd22d2a8b +Block 0025 [ 76]: 647eed006a3fc885 +Block 0025 [ 77]: 88940919b5005bf1 +Block 0025 [ 78]: 1332011b4b4e24c7 +Block 0025 [ 79]: bd4d710d4b931591 +Block 0025 [ 80]: 3d89c84970ea6107 +Block 0025 [ 81]: b04c056f00571ca2 +Block 0025 [ 82]: d0bd666534c0d44f +Block 0025 [ 83]: 9f1164e75cf94894 +Block 0025 [ 84]: c6c56ddd0f5f4493 +Block 0025 [ 85]: 1ed747a48ee8f87d +Block 0025 [ 86]: 9cac80352e623c0a +Block 0025 [ 87]: cbdea7a2df6bfb4e +Block 0025 [ 88]: 3d6ecb1d982994e9 +Block 0025 [ 89]: d4c792872c764c15 +Block 0025 [ 90]: 79faf69807727613 +Block 0025 [ 91]: 1c405ccc2f32aa26 +Block 0025 [ 92]: e96dc0bfec0ffe37 +Block 0025 [ 93]: 1ddcf2a5a9a12c0c +Block 0025 [ 94]: 3b21043c19368275 +Block 0025 [ 95]: 58c025bc65af4427 +Block 0025 [ 96]: daa87500eb620a38 +Block 0025 [ 97]: 3790f46f2d01a114 +Block 0025 [ 98]: 087569d8c107b1d9 +Block 0025 [ 99]: 10f1119e07b0104a +Block 0025 [100]: 981b39ea26ef6710 +Block 0025 [101]: a40aca9a880d40c2 +Block 0025 [102]: 276ad3400db54205 +Block 0025 [103]: be927efd5bb6802f +Block 0025 [104]: 6b1117aad52e6712 +Block 0025 [105]: e3869b2533e5096b +Block 0025 [106]: 710997b71098645e +Block 0025 [107]: 95dd77a863f9a024 +Block 0025 [108]: 6c76d5d9e63fc207 +Block 0025 [109]: dfcf1703e32fbfa5 +Block 0025 [110]: 2983d700ab45e0a3 +Block 0025 [111]: c841bfe21f9eb608 +Block 0025 [112]: 72d9ff6681ba6a74 +Block 0025 [113]: 711238b8a95c3e82 +Block 0025 [114]: 272454ca5092cf79 +Block 0025 [115]: 5f4bcda7442c1e30 +Block 0025 [116]: b66944c097396096 +Block 0025 [117]: ed46ed6d53e1f5db +Block 0025 [118]: b36d5660ece1b88b +Block 0025 [119]: 88e858ca46e2305e +Block 0025 [120]: 11108330154b20c1 +Block 0025 [121]: ae10945de50396a1 +Block 0025 [122]: 00601fe44af3dc39 +Block 0025 [123]: cded1287f7aa43cd +Block 0025 [124]: 6125ca775f4cfc39 +Block 0025 [125]: 3706dc4eb6d80eb1 +Block 0025 [126]: 5ce8104cd2e618f5 +Block 0025 [127]: 7f16a3db08aab211 +Block 0026 [ 0]: 3b6d558b7fccdd53 +Block 0026 [ 1]: a544c949c207d436 +Block 0026 [ 2]: 4f05ca25a912bec0 +Block 0026 [ 3]: a6b6f42c94bc91f3 +Block 0026 [ 4]: 4c4eb732113ce6fe +Block 0026 [ 5]: 6afec4690e064a81 +Block 0026 [ 6]: a9323369420d2f5b +Block 0026 [ 7]: 96c7bc19f69257a9 +Block 0026 [ 8]: 9d7db71bd4074103 +Block 0026 [ 9]: 88d2a1c41a6ce81a +Block 0026 [ 10]: e40db3394f14b5a5 +Block 0026 [ 11]: a967fefac9d7e8a3 +Block 0026 [ 12]: 2fd7352e854b1206 +Block 0026 [ 13]: be2e6a28eab6128d +Block 0026 [ 14]: a9729098c0f878d9 +Block 0026 [ 15]: 0e1b105835094b57 +Block 0026 [ 16]: f4f8507148d7f0cc +Block 0026 [ 17]: 35847eb6b06e585b +Block 0026 [ 18]: fe0df436b8c4df7c +Block 0026 [ 19]: b54dfc1bddb831e0 +Block 0026 [ 20]: 94264483b7a844c8 +Block 0026 [ 21]: dcb003a6f54fdf81 +Block 0026 [ 22]: ae895c4749947d07 +Block 0026 [ 23]: bed43306a1331e1e +Block 0026 [ 24]: 2a4edc085592e99f +Block 0026 [ 25]: 1d06dca4f7fb434e +Block 0026 [ 26]: e11459b38294321c +Block 0026 [ 27]: 09649d2543a5580d +Block 0026 [ 28]: a5b7173e47b3406c +Block 0026 [ 29]: e7cf3f358b5ab1f1 +Block 0026 [ 30]: 8aff441ef512a931 +Block 0026 [ 31]: 7be19ef04fdc3d2c +Block 0026 [ 32]: c81d7667a07aaa9e +Block 0026 [ 33]: fe4823fbe0bb8a55 +Block 0026 [ 34]: f73b8a0ac6af9b7c +Block 0026 [ 35]: 1ca6b1c30eabb8d3 +Block 0026 [ 36]: b0b4bcc8c37d93d7 +Block 0026 [ 37]: 72469952f139ff3a +Block 0026 [ 38]: d40d54c30124b2ed +Block 0026 [ 39]: d84403e6a4c3e34e +Block 0026 [ 40]: d93aaad4d2527f83 +Block 0026 [ 41]: f1f949a66f3a18d7 +Block 0026 [ 42]: c7d30c69a5f5c6cf +Block 0026 [ 43]: 76ae6fdef0d1071b +Block 0026 [ 44]: ab5c585cdfcb6660 +Block 0026 [ 45]: 75b33764c05e3c1c +Block 0026 [ 46]: 8d2f1ddc99b4d99b +Block 0026 [ 47]: 9132c9b1d5e1e4e3 +Block 0026 [ 48]: 9c95a9501e691354 +Block 0026 [ 49]: a1c0ea6541164f7e +Block 0026 [ 50]: 1a49c52ea7f4184d +Block 0026 [ 51]: f838de5180921654 +Block 0026 [ 52]: f2e2dff13e56428d +Block 0026 [ 53]: 71a8509caea45532 +Block 0026 [ 54]: 4e0da0f5e8cbdb8d +Block 0026 [ 55]: d39178911c31f23d +Block 0026 [ 56]: 4d059db4fe3d169c +Block 0026 [ 57]: 26587aa03357b26c +Block 0026 [ 58]: a47c0cf82a6040d3 +Block 0026 [ 59]: a07bf1b71f367b38 +Block 0026 [ 60]: 2b342ef89c62082b +Block 0026 [ 61]: a3cc586fb2337cab +Block 0026 [ 62]: 7eefd8d0cd7df4c2 +Block 0026 [ 63]: 52afa96dbe082021 +Block 0026 [ 64]: 30f55321f2854f92 +Block 0026 [ 65]: 115d29bd6dece5fd +Block 0026 [ 66]: 1d0f141ad5d8719b +Block 0026 [ 67]: 4afbed23cc14e230 +Block 0026 [ 68]: 30ec5385851eb75f +Block 0026 [ 69]: f942b6889c0db151 +Block 0026 [ 70]: 0ce65f36b9fc6e1e +Block 0026 [ 71]: ac1adbd125d68e79 +Block 0026 [ 72]: b68d2c6c2fbe117a +Block 0026 [ 73]: 4232b02967e3bcbf +Block 0026 [ 74]: 8ef379e8c5e55b42 +Block 0026 [ 75]: d4ed00451596a830 +Block 0026 [ 76]: bd35cd14d571e4d7 +Block 0026 [ 77]: 30bd60dfda09b19e +Block 0026 [ 78]: cdfac1b883b76655 +Block 0026 [ 79]: e3d86b100591fb9d +Block 0026 [ 80]: 59ac24671e7d91af +Block 0026 [ 81]: 1025f27f0920055d +Block 0026 [ 82]: 5c02dce58a113ddb +Block 0026 [ 83]: acea7e212c79dee5 +Block 0026 [ 84]: 23d9b815b356c83b +Block 0026 [ 85]: aaa4b234d49dad9e +Block 0026 [ 86]: 444d0ee609380e75 +Block 0026 [ 87]: 654226c4b8f021d2 +Block 0026 [ 88]: 8a35cd5fd6e1f1ab +Block 0026 [ 89]: 862ed14517163100 +Block 0026 [ 90]: 84c0af64eecbf39c +Block 0026 [ 91]: 7e0e4dda300a5a06 +Block 0026 [ 92]: 3d9c7f8c3f41b725 +Block 0026 [ 93]: a35832a7eed21f0a +Block 0026 [ 94]: 0e6bd91ab1c37748 +Block 0026 [ 95]: 3b3f02996786041a +Block 0026 [ 96]: ca39b69b0189da7b +Block 0026 [ 97]: 85685752f7f2a6ee +Block 0026 [ 98]: 8083b8fef5bce9e7 +Block 0026 [ 99]: a04409fb917324af +Block 0026 [100]: 5149daf90529e164 +Block 0026 [101]: fd670942829b7d61 +Block 0026 [102]: 044c3084bb345c6d +Block 0026 [103]: 7bc15cb8f326fb8d +Block 0026 [104]: 9d5fed35368ce865 +Block 0026 [105]: 032b26359ab11c29 +Block 0026 [106]: dde5da90ee01852e +Block 0026 [107]: dfde2792e941c242 +Block 0026 [108]: 45a07e3678367b66 +Block 0026 [109]: e4edb6bde64b0e64 +Block 0026 [110]: 1286bd9d9c15602e +Block 0026 [111]: 1a6f9332b8991cd6 +Block 0026 [112]: 51462feab66fe436 +Block 0026 [113]: 41b7a2049b1d12aa +Block 0026 [114]: 957d14cf0a3493b5 +Block 0026 [115]: b6babfaffaa0bbd5 +Block 0026 [116]: d0e64434099d290b +Block 0026 [117]: 98fbc6565c59cd02 +Block 0026 [118]: deb0588aea27fbba +Block 0026 [119]: 468f0be17af8d3ff +Block 0026 [120]: 94c95df708a119cc +Block 0026 [121]: 6feeb4e265a0b9c9 +Block 0026 [122]: 60e9bdaed056d95e +Block 0026 [123]: feaee97d93a661b5 +Block 0026 [124]: 1a9af81d81a90039 +Block 0026 [125]: 67d6562cf870264e +Block 0026 [126]: 0879f3db8106fff8 +Block 0026 [127]: c43a9b2adb848626 +Block 0027 [ 0]: e31278b9d98ae491 +Block 0027 [ 1]: d91a581dc45b28ca +Block 0027 [ 2]: e538e13966ffa8f6 +Block 0027 [ 3]: ac33db0c5c683ccf +Block 0027 [ 4]: 0a2cdded2dd669be +Block 0027 [ 5]: 91159d8febc616a2 +Block 0027 [ 6]: 491e41276e638eda +Block 0027 [ 7]: a450647808334031 +Block 0027 [ 8]: a49dc91b02dd152a +Block 0027 [ 9]: a1df5af93a458258 +Block 0027 [ 10]: 460ce6ddd889f093 +Block 0027 [ 11]: 2b83ec3afbce05d7 +Block 0027 [ 12]: 1feb1038e4a41337 +Block 0027 [ 13]: d894f759db4aa187 +Block 0027 [ 14]: 9cd3e83bd2ce2a3c +Block 0027 [ 15]: 122329bec91f22ae +Block 0027 [ 16]: 3164305c06597ed1 +Block 0027 [ 17]: 15ea332d31d63ba0 +Block 0027 [ 18]: 332575da2a0d5a15 +Block 0027 [ 19]: d3a985b92cd0052a +Block 0027 [ 20]: 7a3093d0e4099f67 +Block 0027 [ 21]: ba30f2011e951173 +Block 0027 [ 22]: 4f642efd6120e0a2 +Block 0027 [ 23]: 30da68372ea56477 +Block 0027 [ 24]: a8c50c022cc2621c +Block 0027 [ 25]: 1843c5f366fa233b +Block 0027 [ 26]: 81977f521ced01ed +Block 0027 [ 27]: 8ff95bacc0bf5d46 +Block 0027 [ 28]: 371e8ae93b4429ae +Block 0027 [ 29]: 30b09e60a2275b62 +Block 0027 [ 30]: 421c4df3058f5fc8 +Block 0027 [ 31]: 1d844cdbfc4783e1 +Block 0027 [ 32]: 209fd5f6c6242e1f +Block 0027 [ 33]: e31964f0c87dd5a3 +Block 0027 [ 34]: 0bff3b23315f2228 +Block 0027 [ 35]: 7ee79794c7d9698c +Block 0027 [ 36]: c2078da63d1be25a +Block 0027 [ 37]: 54cfc650dc428f86 +Block 0027 [ 38]: c1170df8c640ac41 +Block 0027 [ 39]: f6374626601c138f +Block 0027 [ 40]: b3305d99f063651f +Block 0027 [ 41]: 5fa3a3b86034d02c +Block 0027 [ 42]: 43d617ee14d7394c +Block 0027 [ 43]: f0b3e3740ecad01a +Block 0027 [ 44]: 1484e54190aaefad +Block 0027 [ 45]: 886306c94039c2e5 +Block 0027 [ 46]: 453f49ff9990d8f4 +Block 0027 [ 47]: a160b0bf87129ee1 +Block 0027 [ 48]: 14b6ebec2855245e +Block 0027 [ 49]: be87ad9bbb8fc5d5 +Block 0027 [ 50]: 4e4f69ba2205542d +Block 0027 [ 51]: eeec95e6f93b691b +Block 0027 [ 52]: 2374eda0b7e30be3 +Block 0027 [ 53]: 4f375a04345486a9 +Block 0027 [ 54]: c16f94d33a670c38 +Block 0027 [ 55]: edce5f8c4a99318a +Block 0027 [ 56]: c7bd4b43701dd32b +Block 0027 [ 57]: c5a828d63f58f1f7 +Block 0027 [ 58]: d9d5ff2b896b3531 +Block 0027 [ 59]: 883a28b0478db04d +Block 0027 [ 60]: 2aa444c3b59378c8 +Block 0027 [ 61]: 8af8d16ebf538d25 +Block 0027 [ 62]: 67a9d02865c2ab42 +Block 0027 [ 63]: 4a6439bdb7311890 +Block 0027 [ 64]: f935e598a1205145 +Block 0027 [ 65]: 8d4ae634d1a9a333 +Block 0027 [ 66]: 05657afa85fe632a +Block 0027 [ 67]: 079e46ed57d012c5 +Block 0027 [ 68]: 03230abf66c1b425 +Block 0027 [ 69]: c54bebb4faccaee9 +Block 0027 [ 70]: 6b28e6219d1019bd +Block 0027 [ 71]: 16d88dd182ed969a +Block 0027 [ 72]: 626866912c3eb137 +Block 0027 [ 73]: 193204f7038cb9ac +Block 0027 [ 74]: 156377647e514c90 +Block 0027 [ 75]: 29f72e6ff7e69cc7 +Block 0027 [ 76]: a6145fd88785d18a +Block 0027 [ 77]: ea5e0c3735fee25c +Block 0027 [ 78]: f2e3c04a7f3d6d3f +Block 0027 [ 79]: 3420eedce88e6a7d +Block 0027 [ 80]: 527cbae723451344 +Block 0027 [ 81]: 01c3b478819839eb +Block 0027 [ 82]: f43ca33dd55c49ec +Block 0027 [ 83]: 84722b68ed9b37a1 +Block 0027 [ 84]: 71aaae11c3523d4e +Block 0027 [ 85]: 0cab426f58a8fbde +Block 0027 [ 86]: 2f5fc56279063dd9 +Block 0027 [ 87]: fd3487c76bdfdfdc +Block 0027 [ 88]: b1fcd893026ef087 +Block 0027 [ 89]: ae175ee5084c0d71 +Block 0027 [ 90]: 1c70e03b18315565 +Block 0027 [ 91]: b4e8b34398ea69aa +Block 0027 [ 92]: 07ae38f296bb69fa +Block 0027 [ 93]: 2faee36940f2aa3c +Block 0027 [ 94]: 1e941b12ecb46c33 +Block 0027 [ 95]: 47f49d65e574cad5 +Block 0027 [ 96]: 0a5724315ec4a324 +Block 0027 [ 97]: 2c4efcb88bcad6a0 +Block 0027 [ 98]: ed6990a06e8bf816 +Block 0027 [ 99]: 6df7b115876ed9fd +Block 0027 [100]: 3c3f84384e37e9e7 +Block 0027 [101]: 4b709add16911961 +Block 0027 [102]: 7082128e781fb92f +Block 0027 [103]: 836d704d595fc0a5 +Block 0027 [104]: 0d9e0264bfabdc41 +Block 0027 [105]: fad2dbb39cf7aad9 +Block 0027 [106]: 6e9a57fb1ce6b7b9 +Block 0027 [107]: 625b2973f4342d84 +Block 0027 [108]: 24aa411e48a6ec83 +Block 0027 [109]: 2cc130bd20f276a2 +Block 0027 [110]: 509f9bd51c0dd4ae +Block 0027 [111]: 63a7c8803249998f +Block 0027 [112]: a384c027387b681e +Block 0027 [113]: 701a14dc10ed445f +Block 0027 [114]: 9b4a9df7cf4cba15 +Block 0027 [115]: aa8620c74110cd2c +Block 0027 [116]: 55fb138ff1bbf400 +Block 0027 [117]: 434796a4f710f9be +Block 0027 [118]: a186f7c79917528c +Block 0027 [119]: 314348a58aa47154 +Block 0027 [120]: 0d274caa7dd6c7bc +Block 0027 [121]: 78dfe448ab422a4c +Block 0027 [122]: ea252bcb1be302c2 +Block 0027 [123]: 11761870538cf90f +Block 0027 [124]: f4aa00a486ac10fa +Block 0027 [125]: ee815be93ebf5894 +Block 0027 [126]: 0aaf12c8aec427b7 +Block 0027 [127]: 7b96d15b1284c04e +Block 0028 [ 0]: 82408712ce17f7a9 +Block 0028 [ 1]: f3e8c6e4c2f3e305 +Block 0028 [ 2]: a1581ca69ca9f63b +Block 0028 [ 3]: 50375c67927594de +Block 0028 [ 4]: 03b078c2c1613ef7 +Block 0028 [ 5]: f25f8649d71d7906 +Block 0028 [ 6]: d404193575b2833d +Block 0028 [ 7]: 0875a307b451cb1b +Block 0028 [ 8]: fea3dc97668368ed +Block 0028 [ 9]: 410ef3337a1a4548 +Block 0028 [ 10]: ec3acd7c9bc49f3c +Block 0028 [ 11]: ea5cbdc2f31e3bb2 +Block 0028 [ 12]: 3a061ca85fa84ea9 +Block 0028 [ 13]: d14f05b512c0e069 +Block 0028 [ 14]: ab58a9b9c9d15251 +Block 0028 [ 15]: 6a04b0b1c6a5c825 +Block 0028 [ 16]: 9ae70846c06f4457 +Block 0028 [ 17]: ee90f2fd9876bd4b +Block 0028 [ 18]: 42507e9f20bfd886 +Block 0028 [ 19]: 311aa207eeee0e0d +Block 0028 [ 20]: 6c9695e4d7e07918 +Block 0028 [ 21]: 011cdbb9ef07be82 +Block 0028 [ 22]: aa0a6e601a7bae7c +Block 0028 [ 23]: a3a986d785723d13 +Block 0028 [ 24]: f09ae3599dc42a45 +Block 0028 [ 25]: dab459b86f3f5ac2 +Block 0028 [ 26]: a54c5e996255ca2c +Block 0028 [ 27]: 3dcb342379aff5fa +Block 0028 [ 28]: 0ba802ee0df38dbe +Block 0028 [ 29]: 19515b83587e110a +Block 0028 [ 30]: a12d0bed5dab0a06 +Block 0028 [ 31]: ac84bf5e3a98b0be +Block 0028 [ 32]: e79e0e2a508e9386 +Block 0028 [ 33]: f1cde8b958b67cf4 +Block 0028 [ 34]: 4a13d79c7f6cb7a0 +Block 0028 [ 35]: 2f300090f464a21c +Block 0028 [ 36]: b6fc86496fc9aec2 +Block 0028 [ 37]: 3dfc35eca793cb7f +Block 0028 [ 38]: d2e1696c9a5a2928 +Block 0028 [ 39]: 7c795e7fffd86289 +Block 0028 [ 40]: 52c0ee95ea6fdd02 +Block 0028 [ 41]: b311d199b6aa9218 +Block 0028 [ 42]: 8d56ba4b30fb07e3 +Block 0028 [ 43]: ce62133b53ec1832 +Block 0028 [ 44]: 058384bef5f3d313 +Block 0028 [ 45]: fc95f2620df24e07 +Block 0028 [ 46]: f431e68bf6a58395 +Block 0028 [ 47]: 85ee8f4c9006b459 +Block 0028 [ 48]: cd5fa5365ae87a42 +Block 0028 [ 49]: 1f2288fd8d5dee5c +Block 0028 [ 50]: cd6374c3e2531ff9 +Block 0028 [ 51]: ba608140ca8b7b5c +Block 0028 [ 52]: 9aff6af649f3f64f +Block 0028 [ 53]: 2303c6e1cc4e2dd0 +Block 0028 [ 54]: ef87ff083178fa81 +Block 0028 [ 55]: 26ea3aad00f9e95f +Block 0028 [ 56]: 2e57136f63ca2fd8 +Block 0028 [ 57]: e61e0f60a1830217 +Block 0028 [ 58]: 0bacb0ed448e2b29 +Block 0028 [ 59]: 0f317990dade48ed +Block 0028 [ 60]: c3e2cb9770557283 +Block 0028 [ 61]: 8f97cbf5fc705c60 +Block 0028 [ 62]: 288061965c9746da +Block 0028 [ 63]: b154d61f4849d1ec +Block 0028 [ 64]: 8e9397a83d213b4e +Block 0028 [ 65]: 3e6ad59c9c4acb0f +Block 0028 [ 66]: 8fcf18a12abee65a +Block 0028 [ 67]: d5388ddf42a6c674 +Block 0028 [ 68]: cda99d9620ef82c6 +Block 0028 [ 69]: a119d3c283ed8468 +Block 0028 [ 70]: 30cdcad011da7a62 +Block 0028 [ 71]: a64f272088e46d39 +Block 0028 [ 72]: e672d69e8780b365 +Block 0028 [ 73]: e13f1c2a7ba72820 +Block 0028 [ 74]: 45343118a2755927 +Block 0028 [ 75]: b1ec327fd0a4ff57 +Block 0028 [ 76]: d1e0af3240192798 +Block 0028 [ 77]: 24ec1776f40433bf +Block 0028 [ 78]: 47d7132f3de6411f +Block 0028 [ 79]: 02d281c561b8ced6 +Block 0028 [ 80]: 2caed014dd19d801 +Block 0028 [ 81]: 6545a1f9c40f7e7c +Block 0028 [ 82]: 88258916728f5bb7 +Block 0028 [ 83]: d97be6e93280df68 +Block 0028 [ 84]: 6a4f41e251970d36 +Block 0028 [ 85]: c284daf1359e41d9 +Block 0028 [ 86]: 1fea88bb5cc85cc7 +Block 0028 [ 87]: f1b628fc85ecf74b +Block 0028 [ 88]: 35060adb5334aa39 +Block 0028 [ 89]: f0da6211239f1269 +Block 0028 [ 90]: f1e5bf17338128c2 +Block 0028 [ 91]: b5db0ef6368d57ce +Block 0028 [ 92]: 0d1481e26bf9adb5 +Block 0028 [ 93]: 8c03a83009478238 +Block 0028 [ 94]: dbaf06e92da90e37 +Block 0028 [ 95]: c69d1544bd0221b4 +Block 0028 [ 96]: 36e0a7c126fb9e05 +Block 0028 [ 97]: 5aa9391a902aaf36 +Block 0028 [ 98]: 77c19e82519e5f61 +Block 0028 [ 99]: 9acdb0dc8e2ad24a +Block 0028 [100]: de2075d90c6af446 +Block 0028 [101]: df405d10e227bd96 +Block 0028 [102]: eecb434ab0e99e4c +Block 0028 [103]: 6f464c7524235641 +Block 0028 [104]: 681e7bb3b3f94a16 +Block 0028 [105]: c814771fb2efa395 +Block 0028 [106]: c0b3c7fa8bec6349 +Block 0028 [107]: bf9dfc97a5f3249d +Block 0028 [108]: 34801d8873481e24 +Block 0028 [109]: 15675a609abee274 +Block 0028 [110]: 02e87c0225da6405 +Block 0028 [111]: d28117b6afe29a54 +Block 0028 [112]: 2c542767ebc86fd3 +Block 0028 [113]: 9114939163ffd3a2 +Block 0028 [114]: 39a0e8876489cce5 +Block 0028 [115]: bbe0cc86440e5373 +Block 0028 [116]: 5c952928c554bc57 +Block 0028 [117]: 34adbba55eccd688 +Block 0028 [118]: 7265edb6c99b1b04 +Block 0028 [119]: 011de91e6ab8b36d +Block 0028 [120]: d7726399cd53e5b3 +Block 0028 [121]: 8baf8b805bed1886 +Block 0028 [122]: c8395bc031b6ccf6 +Block 0028 [123]: 0f71ca7ca368a89e +Block 0028 [124]: a5a1786001895577 +Block 0028 [125]: 709d49b068d06531 +Block 0028 [126]: 0b27ca67ef1d7153 +Block 0028 [127]: 7e427c6463689e90 +Block 0029 [ 0]: ce34cb10538a4488 +Block 0029 [ 1]: 211d7a9991acb9e3 +Block 0029 [ 2]: 75f08e5bb287cf6c +Block 0029 [ 3]: 4eeced3480b5d365 +Block 0029 [ 4]: 6caec38b6e905cd4 +Block 0029 [ 5]: d58d7afd8bcc419d +Block 0029 [ 6]: 28c97c8881b3dd13 +Block 0029 [ 7]: cb7b9b3bfaf46afe +Block 0029 [ 8]: dbc42c4b47931b08 +Block 0029 [ 9]: 805428575a21e671 +Block 0029 [ 10]: 0e64fc553cdc48f2 +Block 0029 [ 11]: bffbd5d1dd48fb3f +Block 0029 [ 12]: 58abded29f1e14b4 +Block 0029 [ 13]: 957d09bfd9417b5e +Block 0029 [ 14]: 757184cd6a80c2ca +Block 0029 [ 15]: fffb01be941b2719 +Block 0029 [ 16]: b1bac4e2e7d85eb2 +Block 0029 [ 17]: 6b6df4ba8b62d354 +Block 0029 [ 18]: 37ab98e92c226ac1 +Block 0029 [ 19]: 8da51813d943ef0e +Block 0029 [ 20]: 7c5ecf9ef55246d8 +Block 0029 [ 21]: afcb74a0b3c74e32 +Block 0029 [ 22]: 9ff7327fb6626ec6 +Block 0029 [ 23]: 6d88801c470a838c +Block 0029 [ 24]: e381a1d478169f61 +Block 0029 [ 25]: c4f6ed8539d52fb6 +Block 0029 [ 26]: 9dd42394f963ec51 +Block 0029 [ 27]: 608e7c79c7e9ebd7 +Block 0029 [ 28]: 635bf787f483f095 +Block 0029 [ 29]: ba3ea37f512a88e1 +Block 0029 [ 30]: d59c8e73f3f6f620 +Block 0029 [ 31]: 0bcab889d84e2297 +Block 0029 [ 32]: eba1a6994b5a806d +Block 0029 [ 33]: e5800b70faf85d82 +Block 0029 [ 34]: 17543408abf86929 +Block 0029 [ 35]: d2742aed91d14b30 +Block 0029 [ 36]: 8d864eb756300f8f +Block 0029 [ 37]: 2602a7f3885d0b00 +Block 0029 [ 38]: 38a96b1f178072af +Block 0029 [ 39]: 99f063fa0e0257b0 +Block 0029 [ 40]: 553e5382a39016b2 +Block 0029 [ 41]: 40e5c09d46bf467c +Block 0029 [ 42]: 151efa072d8c3041 +Block 0029 [ 43]: e6b90bff69fb7364 +Block 0029 [ 44]: 2f3d83591040ef91 +Block 0029 [ 45]: 9a51b0677c6883cd +Block 0029 [ 46]: e954652d3758b685 +Block 0029 [ 47]: efc3b3718b8b9d5e +Block 0029 [ 48]: e3b40fcd501db6b2 +Block 0029 [ 49]: 007b05e3352c4a78 +Block 0029 [ 50]: f66361d2e4399495 +Block 0029 [ 51]: 0e6b2a8c1385c597 +Block 0029 [ 52]: 3d8955a1de9f30e2 +Block 0029 [ 53]: 4eaecd9633dc2db8 +Block 0029 [ 54]: 0b0db104ae05c9e2 +Block 0029 [ 55]: b8d8a61f200d677c +Block 0029 [ 56]: e9b85044e092c51f +Block 0029 [ 57]: 9aa1b914b367bf0c +Block 0029 [ 58]: f87f835683f94dc6 +Block 0029 [ 59]: ea3d166054271b20 +Block 0029 [ 60]: bbb5e4b368a6a76a +Block 0029 [ 61]: 2ebacce22764c387 +Block 0029 [ 62]: eea281c46296adc7 +Block 0029 [ 63]: f6b70768992d4a3f +Block 0029 [ 64]: 008caf1824393415 +Block 0029 [ 65]: 6e1e17e781647ede +Block 0029 [ 66]: 96471c30c4fad451 +Block 0029 [ 67]: dbea40a67071a38d +Block 0029 [ 68]: 6a68c126f7df8502 +Block 0029 [ 69]: 55f3b484495c01f5 +Block 0029 [ 70]: 71f1ceeebaab92ba +Block 0029 [ 71]: aa7d9f1f1d542cd3 +Block 0029 [ 72]: 57a7e002e8148b3f +Block 0029 [ 73]: d066574b2673ec63 +Block 0029 [ 74]: fa064ece3661f27c +Block 0029 [ 75]: 59c0c37896842666 +Block 0029 [ 76]: b9907779bbbfefdd +Block 0029 [ 77]: 3a3c0948985d0305 +Block 0029 [ 78]: 4399ad0a4be323a9 +Block 0029 [ 79]: 016efe5c4529314a +Block 0029 [ 80]: 7345362c79299fbe +Block 0029 [ 81]: 3890e8bd3dc199ed +Block 0029 [ 82]: a9f84b570d9caf19 +Block 0029 [ 83]: 12e79bf3de2f764d +Block 0029 [ 84]: e1279245288ab28c +Block 0029 [ 85]: c042d0f79b5efb78 +Block 0029 [ 86]: 4b595741415f2dd7 +Block 0029 [ 87]: 661557ace1e3bda7 +Block 0029 [ 88]: a4ebbccc3c16fe3e +Block 0029 [ 89]: 97b76196c5c64fb0 +Block 0029 [ 90]: 6ab0d520070ae215 +Block 0029 [ 91]: cf04f4e7f61c6ddd +Block 0029 [ 92]: 39bbdca29baf8767 +Block 0029 [ 93]: 4728cb7d2d918220 +Block 0029 [ 94]: 8cea866afb3619b5 +Block 0029 [ 95]: 983d3c2dd31d6d69 +Block 0029 [ 96]: c16d0d3adc9f83b3 +Block 0029 [ 97]: 9010a83289cfb845 +Block 0029 [ 98]: 65cc7b1c436419ca +Block 0029 [ 99]: a50cf5e64562c1ec +Block 0029 [100]: 0f45ea095a9b45f7 +Block 0029 [101]: 550cc6f9be6b48f6 +Block 0029 [102]: c9a3f23adc2dd645 +Block 0029 [103]: 6ffa2f9d7f00f22b +Block 0029 [104]: 3f491b65d9a190da +Block 0029 [105]: 9da25d64e68ef5c7 +Block 0029 [106]: 4e9c12aeb5b97c2f +Block 0029 [107]: b59116c75353ce2a +Block 0029 [108]: 78bde1417564ec29 +Block 0029 [109]: 6fe1002528bdf6a0 +Block 0029 [110]: a965b63d2265c7f3 +Block 0029 [111]: 3f3222d651afad85 +Block 0029 [112]: 78964a97c84f4574 +Block 0029 [113]: a1f7808dfb3a8d18 +Block 0029 [114]: 53c18846d2abe738 +Block 0029 [115]: c07f6787ec22fff1 +Block 0029 [116]: e0b52b87e0f04cc4 +Block 0029 [117]: 0a67631a61fa149f +Block 0029 [118]: c17063aa02acb80a +Block 0029 [119]: 435f430b7080099d +Block 0029 [120]: 02eda91081cbf64c +Block 0029 [121]: 3a1fef6339dfbeec +Block 0029 [122]: 821837c795d62201 +Block 0029 [123]: f7415295fd0566f8 +Block 0029 [124]: 002af4e7624778e0 +Block 0029 [125]: 44c86de1dba9e648 +Block 0029 [126]: d13799f233f47269 +Block 0029 [127]: 62a153063663a128 +Block 0030 [ 0]: cb74d134bab6af1e +Block 0030 [ 1]: ab9139ca3e85e177 +Block 0030 [ 2]: 9621e7b27594caba +Block 0030 [ 3]: 4a56f22b1f95e350 +Block 0030 [ 4]: 7ba0a9626274b5aa +Block 0030 [ 5]: f1e47cfd11b89c41 +Block 0030 [ 6]: 6e60e2043581457e +Block 0030 [ 7]: b5baadc50e169bd4 +Block 0030 [ 8]: 35d0006692605bcc +Block 0030 [ 9]: 89285fd649487c0f +Block 0030 [ 10]: eed082cc1ca0a043 +Block 0030 [ 11]: 4d9b0cd9d0281f25 +Block 0030 [ 12]: b55bb9d61c0b63e6 +Block 0030 [ 13]: ccfc302b1ab3e413 +Block 0030 [ 14]: f5da9ad788fdf771 +Block 0030 [ 15]: 5869f718f687b0c8 +Block 0030 [ 16]: 4380f6ac31d55bb7 +Block 0030 [ 17]: fd59c18a39161816 +Block 0030 [ 18]: 2c82dd132b577957 +Block 0030 [ 19]: b90e90d65d0218c2 +Block 0030 [ 20]: c7933579f4e7371b +Block 0030 [ 21]: 25738f968c48b489 +Block 0030 [ 22]: 663ea3e6e1060896 +Block 0030 [ 23]: fe99b4410d933510 +Block 0030 [ 24]: 65ca199967fc758b +Block 0030 [ 25]: fc90f25e8372fb67 +Block 0030 [ 26]: fb913979e7f4b1e4 +Block 0030 [ 27]: 864b7e4de3fc5054 +Block 0030 [ 28]: d183f3e8faf284d4 +Block 0030 [ 29]: f5b2909c45867bfd +Block 0030 [ 30]: fa6a2176bbf0d3a7 +Block 0030 [ 31]: 008c78a9bab195cc +Block 0030 [ 32]: bdf9a2cb8d1c3a97 +Block 0030 [ 33]: f84c7c9cbab7d537 +Block 0030 [ 34]: 0bd511cb729e9313 +Block 0030 [ 35]: b4700a2eef01d3d5 +Block 0030 [ 36]: 6e4e3a5dad8e2b39 +Block 0030 [ 37]: 6e4175da89e007e1 +Block 0030 [ 38]: 359996202e7388a9 +Block 0030 [ 39]: 54584a0d03f2c6a8 +Block 0030 [ 40]: e427aee0fcbf2ed2 +Block 0030 [ 41]: a7e40b854431f3e0 +Block 0030 [ 42]: 5bf9228dca48af5e +Block 0030 [ 43]: 94c0ccd190109464 +Block 0030 [ 44]: 7a2df0d59d50f12e +Block 0030 [ 45]: c002ab1a1baed32e +Block 0030 [ 46]: 682d82c9a7884da3 +Block 0030 [ 47]: 9b1487167135ae71 +Block 0030 [ 48]: bf2a8533abb8919d +Block 0030 [ 49]: 26e7c343260a13d7 +Block 0030 [ 50]: 7a362cbe6db84f0a +Block 0030 [ 51]: 7e9d180198969377 +Block 0030 [ 52]: cb69a25076a05638 +Block 0030 [ 53]: dc0e76db9f2f52a3 +Block 0030 [ 54]: ce43a758d54a4f41 +Block 0030 [ 55]: 356825d901de7161 +Block 0030 [ 56]: 315a55a0af60ad63 +Block 0030 [ 57]: 4824c7effdfbd07b +Block 0030 [ 58]: c638523a5383ba1a +Block 0030 [ 59]: 4edc3a0bc3c78832 +Block 0030 [ 60]: 8ac605905eb84c4e +Block 0030 [ 61]: d2900261470e1a67 +Block 0030 [ 62]: 05d65c06e6a24220 +Block 0030 [ 63]: 8435ff377b5ff7e0 +Block 0030 [ 64]: 2bcd4b532b81bdf6 +Block 0030 [ 65]: ec252e030064a0b4 +Block 0030 [ 66]: 524cf8e135a3b747 +Block 0030 [ 67]: 278f7b7951c7e470 +Block 0030 [ 68]: 0f77150c9e415e43 +Block 0030 [ 69]: 99caa3c58f33c0e1 +Block 0030 [ 70]: ce440f899289cc0d +Block 0030 [ 71]: 9e26e5b9a2dfe6c7 +Block 0030 [ 72]: 7e11aa36d81f216a +Block 0030 [ 73]: 79ed978e247bb8a9 +Block 0030 [ 74]: 732b4d5012bbdd26 +Block 0030 [ 75]: e82b506b197611ba +Block 0030 [ 76]: 82ced7eae9605c32 +Block 0030 [ 77]: de31b9ed48fc41c3 +Block 0030 [ 78]: c8bde09405c92a1c +Block 0030 [ 79]: 3e1a29cf3f4a5776 +Block 0030 [ 80]: fd7e85092fc9a5be +Block 0030 [ 81]: f68ed9c8d8bc10b4 +Block 0030 [ 82]: 8db739301e460d8b +Block 0030 [ 83]: 016ee7802d808790 +Block 0030 [ 84]: c7334fbbe7c7617e +Block 0030 [ 85]: bd7cb0187038f41a +Block 0030 [ 86]: cf4f5bb891351075 +Block 0030 [ 87]: 57a50cc2a966e2b3 +Block 0030 [ 88]: 4df30e75df349360 +Block 0030 [ 89]: f6ee30a92abccd66 +Block 0030 [ 90]: 330110ce83d23bc6 +Block 0030 [ 91]: 7a2d87b1916840f9 +Block 0030 [ 92]: 6480fafbacf1bf46 +Block 0030 [ 93]: 8c8df72a73b670f0 +Block 0030 [ 94]: 509f06fe2f62ed7a +Block 0030 [ 95]: 3ca2dacea09e846c +Block 0030 [ 96]: b2c0f93dd6edc763 +Block 0030 [ 97]: f35e434d06f52de1 +Block 0030 [ 98]: 4cd8554a66f8fd3a +Block 0030 [ 99]: 36464d67ffd919cb +Block 0030 [100]: d159b776820b30d5 +Block 0030 [101]: c520a82f0474cd8d +Block 0030 [102]: b86f0ac925d8a02b +Block 0030 [103]: 32078216de9940ee +Block 0030 [104]: e5237ffb6a726a31 +Block 0030 [105]: 5c6d7d3176378cc2 +Block 0030 [106]: 31929784e802d335 +Block 0030 [107]: 70215d61e6fb7cfe +Block 0030 [108]: 29211cace6a7f1d8 +Block 0030 [109]: faeef455cd5b7582 +Block 0030 [110]: fc0a0780010b856b +Block 0030 [111]: fe71632fb6931fcd +Block 0030 [112]: da0efe624942d9fd +Block 0030 [113]: 7ad3b463f50f27cd +Block 0030 [114]: 995014de8f61fbfb +Block 0030 [115]: af5d8a32f37e474d +Block 0030 [116]: 37fb11c2566e3136 +Block 0030 [117]: ca1b55d0775da139 +Block 0030 [118]: 6dcb9acd9f90a0e7 +Block 0030 [119]: 575bea75322eee40 +Block 0030 [120]: 03388524c06fc342 +Block 0030 [121]: b87fba57be6a7d1e +Block 0030 [122]: ece9497a243c32bc +Block 0030 [123]: 5a01f4734f05fbe2 +Block 0030 [124]: fc6e4fa8a0b860b2 +Block 0030 [125]: 7002e3123bfdb5df +Block 0030 [126]: 7804b63c35fbe698 +Block 0030 [127]: c9c8f414df7820cb +Block 0031 [ 0]: b2ad75524c3d2a81 +Block 0031 [ 1]: fab04039a96af6d0 +Block 0031 [ 2]: 8494705bd7a6eaa4 +Block 0031 [ 3]: 814756c584e7272d +Block 0031 [ 4]: 927c5b0c90d75d6b +Block 0031 [ 5]: f888d4ed7afe38a6 +Block 0031 [ 6]: 982046c3b2d45322 +Block 0031 [ 7]: c24ce29090879caa +Block 0031 [ 8]: a4b4eb89764c8d01 +Block 0031 [ 9]: 1f09e9c76fcd765c +Block 0031 [ 10]: 1659b74e12faff66 +Block 0031 [ 11]: bf5b57bc59958c88 +Block 0031 [ 12]: 0eec19264c1d7051 +Block 0031 [ 13]: 1715310a772896f3 +Block 0031 [ 14]: 557e296e0f059142 +Block 0031 [ 15]: ac4535969b81e7d7 +Block 0031 [ 16]: aaba64a3051b10c6 +Block 0031 [ 17]: 13afbdc722284e8a +Block 0031 [ 18]: 5546653a8b26b3df +Block 0031 [ 19]: 8384fe398ed31455 +Block 0031 [ 20]: a2697ab5df6b271e +Block 0031 [ 21]: 8e1d55e24a96e84b +Block 0031 [ 22]: 0e654de47d5a74ee +Block 0031 [ 23]: 4e7ac436b7f97825 +Block 0031 [ 24]: 3591d7151256c14e +Block 0031 [ 25]: 0b6607c547626a3d +Block 0031 [ 26]: 0ea9d4e533da04b7 +Block 0031 [ 27]: b519298b2333dbe0 +Block 0031 [ 28]: c9cb7b614d5c918a +Block 0031 [ 29]: f0a5f1041cab56ae +Block 0031 [ 30]: d1442001904abff9 +Block 0031 [ 31]: b097acb54c2d261b +Block 0031 [ 32]: c1d50486ebb4f4e1 +Block 0031 [ 33]: 6dfb55d658d7e408 +Block 0031 [ 34]: 65182f413c8a6f35 +Block 0031 [ 35]: 4fc028be89308272 +Block 0031 [ 36]: a0c559768bb48b2e +Block 0031 [ 37]: 42770640b289c67f +Block 0031 [ 38]: 8796a70b12d4e4bb +Block 0031 [ 39]: b7f621233f598131 +Block 0031 [ 40]: 2f506feb2e3ec6e6 +Block 0031 [ 41]: de73f26918d7cd59 +Block 0031 [ 42]: dbc7b351f3247b08 +Block 0031 [ 43]: 28ea9c36274ce050 +Block 0031 [ 44]: 2abebad94846282d +Block 0031 [ 45]: 83eb22a616227ead +Block 0031 [ 46]: 342a5e9acca0cf39 +Block 0031 [ 47]: 840ba32a918920d7 +Block 0031 [ 48]: f5aa7f6f0df6e05b +Block 0031 [ 49]: 906884611a46cf58 +Block 0031 [ 50]: e3a046400e2ee967 +Block 0031 [ 51]: 8e76abba13b3814a +Block 0031 [ 52]: 75b5822697cfe363 +Block 0031 [ 53]: c3627120cc9bc843 +Block 0031 [ 54]: 0328e0f870076cc6 +Block 0031 [ 55]: 831f34dbcbdc6961 +Block 0031 [ 56]: ce2d8f9f7aeeef1a +Block 0031 [ 57]: 609845487b08ba98 +Block 0031 [ 58]: 6f726d45e2e3b3a0 +Block 0031 [ 59]: ba0632a27042f031 +Block 0031 [ 60]: 46c959e91f4a5b3f +Block 0031 [ 61]: 583c6d6e3a34d9f9 +Block 0031 [ 62]: befa926623f509d2 +Block 0031 [ 63]: 4a4915a0a0e22615 +Block 0031 [ 64]: 1f2646e77fdc1e4e +Block 0031 [ 65]: 0caa62caf21df1f1 +Block 0031 [ 66]: f311e1d1f8213e5c +Block 0031 [ 67]: ec49f4c725ae6e90 +Block 0031 [ 68]: 9ff8475fddb053ee +Block 0031 [ 69]: 0bb1bd705e94b7b1 +Block 0031 [ 70]: fd35b76f36338f73 +Block 0031 [ 71]: 6474c9a0a5b6c69f +Block 0031 [ 72]: 91921541f2e2291f +Block 0031 [ 73]: 5e2acd572e3fc12e +Block 0031 [ 74]: 9bb771e4e18a755f +Block 0031 [ 75]: 8caf6c26722198cf +Block 0031 [ 76]: 33dbf836dae269d3 +Block 0031 [ 77]: c841bcc4839a9e52 +Block 0031 [ 78]: b15fd0aa30b4a4e4 +Block 0031 [ 79]: b1d063d4fe67e21c +Block 0031 [ 80]: d4a1a03300a6e442 +Block 0031 [ 81]: f81d00de7f973647 +Block 0031 [ 82]: dcd91b2b94d78125 +Block 0031 [ 83]: 76da9792b43e75b8 +Block 0031 [ 84]: a7e3f6568c0a0388 +Block 0031 [ 85]: 566feb89b3d88185 +Block 0031 [ 86]: 8c4d3688f80e91b6 +Block 0031 [ 87]: 8fe53124e6104a2e +Block 0031 [ 88]: da5da5041344dd1b +Block 0031 [ 89]: 721b41ec066d2189 +Block 0031 [ 90]: 074debbac6f9761b +Block 0031 [ 91]: 6a07879fc9bf2ec9 +Block 0031 [ 92]: ccc3e1eb61fad409 +Block 0031 [ 93]: 3be4750e63efdf7b +Block 0031 [ 94]: 013c1f56ea5b8ce9 +Block 0031 [ 95]: 2072659db16979f8 +Block 0031 [ 96]: be5ac68e4277d087 +Block 0031 [ 97]: 65e7fcc9935f7384 +Block 0031 [ 98]: 2af35d2546b9a4b3 +Block 0031 [ 99]: 50d9bc80f125eeef +Block 0031 [100]: 31573ae31f5913b8 +Block 0031 [101]: aa2fe8799d89d353 +Block 0031 [102]: 0dd3e255f4addbe8 +Block 0031 [103]: 48d05bb4cf7721ad +Block 0031 [104]: 0158e051ef3d08cf +Block 0031 [105]: 0a56281c57ad20c4 +Block 0031 [106]: 80396de3b32e46c3 +Block 0031 [107]: 6bcc4e1db72d4e2c +Block 0031 [108]: 1d723a0ad2f4e794 +Block 0031 [109]: 7ff3511be9bcb0eb +Block 0031 [110]: cc6493fcb3730f84 +Block 0031 [111]: 9ecdcbc35ead32f5 +Block 0031 [112]: 426b36f39c969d5b +Block 0031 [113]: 25e66eca6aeed6af +Block 0031 [114]: 94eeb55600b80f69 +Block 0031 [115]: 5e1f278e6ea9b3fe +Block 0031 [116]: 903011fc53d26f6e +Block 0031 [117]: 800522387513c939 +Block 0031 [118]: 25125a6704c6bc7e +Block 0031 [119]: 2fa464d5b41a34fb +Block 0031 [120]: c72f0545be5542a3 +Block 0031 [121]: a10f157445827b48 +Block 0031 [122]: d2d0f854a21a9fb2 +Block 0031 [123]: 35bf180e3e99d207 +Block 0031 [124]: 377fa81666dc7f2b +Block 0031 [125]: 50e586398a9c39c8 +Block 0031 [126]: 6f732732a550924a +Block 0031 [127]: 81f88b28683ea8e5 + + After pass 1: +Block 0000 [ 0]: 3653ec9d01583df9 +Block 0000 [ 1]: 69ef53a72d1e1fd3 +Block 0000 [ 2]: 35635631744ab54f +Block 0000 [ 3]: 599512e96a37ab6e +Block 0000 [ 4]: 11391e9e42d1727c +Block 0000 [ 5]: 68d9d83a0713308b +Block 0000 [ 6]: 444c077ac115bb06 +Block 0000 [ 7]: fa68fa58d2b1fe8c +Block 0000 [ 8]: 8cf2e516a943abc4 +Block 0000 [ 9]: 891ca59c509138e1 +Block 0000 [ 10]: 7291b599e55eef18 +Block 0000 [ 11]: 1cf3e52886b2d9a4 +Block 0000 [ 12]: f3d4f1c26d3bc3a7 +Block 0000 [ 13]: ebc0f159103930fb +Block 0000 [ 14]: 9d0e061ef578e457 +Block 0000 [ 15]: 657a0e383db3614f +Block 0000 [ 16]: 2f1a908810976771 +Block 0000 [ 17]: 2ee9ce495a10b1bf +Block 0000 [ 18]: 0a60ade9f8611f08 +Block 0000 [ 19]: 907562b6de768481 +Block 0000 [ 20]: abbc7c71a02ff51c +Block 0000 [ 21]: 0a4e54f1106b6829 +Block 0000 [ 22]: 19937636107aa126 +Block 0000 [ 23]: 94f317629d1e115e +Block 0000 [ 24]: 01735b70329da1ba +Block 0000 [ 25]: 2da84930050a9c85 +Block 0000 [ 26]: 9f5332bdeed5ddeb +Block 0000 [ 27]: f42fecaeb7c25ba7 +Block 0000 [ 28]: db04f73f19403546 +Block 0000 [ 29]: 50697466fc80a862 +Block 0000 [ 30]: 78e038fe6c14fbb6 +Block 0000 [ 31]: 9b3de1088ce8033b +Block 0000 [ 32]: a63d4e4238b04a7a +Block 0000 [ 33]: 23ebc3adb723f426 +Block 0000 [ 34]: 1e421bae1038fd72 +Block 0000 [ 35]: f32e959bd493074a +Block 0000 [ 36]: 54e7f63fbdb5120c +Block 0000 [ 37]: 5f13118507e32e40 +Block 0000 [ 38]: 8cfd2f530eb342c6 +Block 0000 [ 39]: 42a4662bc122631e +Block 0000 [ 40]: 2f2a42c25eb6b1d0 +Block 0000 [ 41]: c614544be8fd0242 +Block 0000 [ 42]: 8bff294407d8be83 +Block 0000 [ 43]: 379e972199be20d0 +Block 0000 [ 44]: 7cdcb86a483bdb13 +Block 0000 [ 45]: 7a9efb775d45fd5d +Block 0000 [ 46]: 805dde2ff0070620 +Block 0000 [ 47]: 90dd43d77ad18c6f +Block 0000 [ 48]: 7ff0f47c081cd430 +Block 0000 [ 49]: 3b4bc5b40c3a8bb0 +Block 0000 [ 50]: 244fd293bf92f6f0 +Block 0000 [ 51]: 918b5d7d87043317 +Block 0000 [ 52]: 325716b7c7d591ac +Block 0000 [ 53]: 5827e7dc7460861d +Block 0000 [ 54]: 3afde4f1a339ba42 +Block 0000 [ 55]: 113ebacbd3fc27b5 +Block 0000 [ 56]: 7a392c2c66580dd2 +Block 0000 [ 57]: e78dc05db58e9e56 +Block 0000 [ 58]: 2ce081c891f27df0 +Block 0000 [ 59]: 498e7444269edb84 +Block 0000 [ 60]: 30f49d0dff3d19d9 +Block 0000 [ 61]: ebf523ff60b33bdf +Block 0000 [ 62]: 0c526595a91783b3 +Block 0000 [ 63]: bf93e7a4c4ca448a +Block 0000 [ 64]: eccc571eea4e0e3c +Block 0000 [ 65]: 0515ef24beec6eba +Block 0000 [ 66]: d4c7f0191146a785 +Block 0000 [ 67]: 28510792c00ea028 +Block 0000 [ 68]: eabbb492bb8ddc72 +Block 0000 [ 69]: 2b5630d0f66edb76 +Block 0000 [ 70]: c7900d53d49bd11a +Block 0000 [ 71]: a7397a31b873a4ed +Block 0000 [ 72]: a934024c7831ee82 +Block 0000 [ 73]: 99687c5827049c6e +Block 0000 [ 74]: 2463b0944f7afc99 +Block 0000 [ 75]: 127d0cea387336aa +Block 0000 [ 76]: cc47e487d5302850 +Block 0000 [ 77]: d0c679f4fb3f254f +Block 0000 [ 78]: 4de0fe5b2c042730 +Block 0000 [ 79]: 087acaa178249a56 +Block 0000 [ 80]: 716b39281e7f58e8 +Block 0000 [ 81]: 9684bb90ccd593d9 +Block 0000 [ 82]: e19085d10568c895 +Block 0000 [ 83]: bdc586c127426313 +Block 0000 [ 84]: e33ec65fad156adf +Block 0000 [ 85]: bd93ce1323fa699f +Block 0000 [ 86]: 3756176df8374754 +Block 0000 [ 87]: 1091998d92ded6ac +Block 0000 [ 88]: 683e5b4e92cb1ca6 +Block 0000 [ 89]: 778091253835a3eb +Block 0000 [ 90]: 07e28c26450e8693 +Block 0000 [ 91]: 1da773d2e6d92769 +Block 0000 [ 92]: 3989bc2c07ba9834 +Block 0000 [ 93]: 0d93ca091aad8e43 +Block 0000 [ 94]: 37af1ccf9e1cefa3 +Block 0000 [ 95]: 0fd62080ccb4ce31 +Block 0000 [ 96]: 03a1b7f8d0162e46 +Block 0000 [ 97]: 6ac173fb65e1cbbf +Block 0000 [ 98]: 189075a0659f064f +Block 0000 [ 99]: c29a285760117d92 +Block 0000 [100]: 247843ddcddc7890 +Block 0000 [101]: 1be24f8cb903a20a +Block 0000 [102]: 46eb5d3b470786ce +Block 0000 [103]: be56c4d643934ba1 +Block 0000 [104]: 9e651893bc735d5d +Block 0000 [105]: 4f871eaf1f794e49 +Block 0000 [106]: 56273f5a6c3b89f5 +Block 0000 [107]: 02ffd0b92501d42f +Block 0000 [108]: 4a5227dd9f8fa8d1 +Block 0000 [109]: 0a99d3c9b46c7166 +Block 0000 [110]: bb35852244977767 +Block 0000 [111]: 7cb7a53b429942f3 +Block 0000 [112]: 8e33186e83a78946 +Block 0000 [113]: 0f32b608e1669ccc +Block 0000 [114]: 21e1bff9df3954b3 +Block 0000 [115]: 75296cac5717c7cd +Block 0000 [116]: 8872ab5cd801dc1b +Block 0000 [117]: c603b4e7ead82b88 +Block 0000 [118]: 4947f3d801e8b66f +Block 0000 [119]: 5041f62cd217a07c +Block 0000 [120]: 71dfe74776cc6427 +Block 0000 [121]: 88c82a82688ebec4 +Block 0000 [122]: 0653c4287a96288b +Block 0000 [123]: 861f5e03145e80e3 +Block 0000 [124]: 1b6d130eb435f36c +Block 0000 [125]: d7e886df048e697c +Block 0000 [126]: 22b36cb1baeb62cd +Block 0000 [127]: b77f140e91100813 +Block 0001 [ 0]: 81124fce35cc5710 +Block 0001 [ 1]: 43ec50543b0faaac +Block 0001 [ 2]: 6c565d6733116dec +Block 0001 [ 3]: 1759dc023b510979 +Block 0001 [ 4]: 1b5519894c7b2078 +Block 0001 [ 5]: bc4bed6befe8d304 +Block 0001 [ 6]: 178492a875711577 +Block 0001 [ 7]: e1cbb4c720abb332 +Block 0001 [ 8]: 733611dc7bbae615 +Block 0001 [ 9]: 567709079916a34a +Block 0001 [ 10]: 36858b8177a813dc +Block 0001 [ 11]: 0dd1613f2a714398 +Block 0001 [ 12]: c5e7877dfbd1eaae +Block 0001 [ 13]: a315d2540b581798 +Block 0001 [ 14]: f18cfd0db8736089 +Block 0001 [ 15]: e7072ac65ddb839b +Block 0001 [ 16]: 3bed624365a97822 +Block 0001 [ 17]: 304a75bc092ee455 +Block 0001 [ 18]: 32a64b19179742b1 +Block 0001 [ 19]: c82223ccdc54d357 +Block 0001 [ 20]: 1eb47f0156342bbc +Block 0001 [ 21]: b36bebef735e1852 +Block 0001 [ 22]: 7fe800c212f0906c +Block 0001 [ 23]: 579d6218ce6fe61e +Block 0001 [ 24]: d4b3493b26c9f785 +Block 0001 [ 25]: 775ab9715439d3c5 +Block 0001 [ 26]: 2e630456603452e6 +Block 0001 [ 27]: 834cd73b296d494e +Block 0001 [ 28]: 553bbbf94cfff19c +Block 0001 [ 29]: e78310bf508983a6 +Block 0001 [ 30]: a352a63a40dda197 +Block 0001 [ 31]: e9cad1f6ed343b8b +Block 0001 [ 32]: 204d0835f3bf7718 +Block 0001 [ 33]: 47b32e01810c9d29 +Block 0001 [ 34]: c957ec19cd11646a +Block 0001 [ 35]: 255112dd67affbec +Block 0001 [ 36]: 348b305e17163ed5 +Block 0001 [ 37]: 56a926ac34bca1c8 +Block 0001 [ 38]: fa7a6a2922b31af6 +Block 0001 [ 39]: 1bd79c636e0f2a74 +Block 0001 [ 40]: 42519d33f9f14e23 +Block 0001 [ 41]: a85dda53cf3578dc +Block 0001 [ 42]: 304d870f2b18c29a +Block 0001 [ 43]: b892e91867ad87a3 +Block 0001 [ 44]: 0367569c89868574 +Block 0001 [ 45]: c047ce8c1af8ed45 +Block 0001 [ 46]: 7f6b62534d011f4f +Block 0001 [ 47]: 3b8a08ed0cd898bc +Block 0001 [ 48]: 579b179396a0c222 +Block 0001 [ 49]: 60111f485f3242b6 +Block 0001 [ 50]: ef8f04ab050255e2 +Block 0001 [ 51]: 5ca4ce2a56f8a405 +Block 0001 [ 52]: 1d0bc04b788dd5bf +Block 0001 [ 53]: fe0b8ea94c6e44fd +Block 0001 [ 54]: ac51b0ea5463fb69 +Block 0001 [ 55]: b53cc41288485a16 +Block 0001 [ 56]: 3b172d8c9ba1f26c +Block 0001 [ 57]: 755aaeabee7d1ed1 +Block 0001 [ 58]: ae6f57837889a218 +Block 0001 [ 59]: c4b68cf3ba7e9d31 +Block 0001 [ 60]: 785c5926588d66ad +Block 0001 [ 61]: 16ee9e11e724cac2 +Block 0001 [ 62]: 99aa9c0135bbd6c9 +Block 0001 [ 63]: fe66ef3ee8b5e358 +Block 0001 [ 64]: 7f6bd31c05aaea24 +Block 0001 [ 65]: 8c81895933056445 +Block 0001 [ 66]: 05a4b86707aa6002 +Block 0001 [ 67]: 4d096ba83f4475dc +Block 0001 [ 68]: b490dfd82309ef2a +Block 0001 [ 69]: 5a9260540e60db06 +Block 0001 [ 70]: 2474f0859aa0ac72 +Block 0001 [ 71]: 7300eacf9d86d2c1 +Block 0001 [ 72]: 1556af20a3ef8067 +Block 0001 [ 73]: 86c16a21ce83eb70 +Block 0001 [ 74]: 6b5302cadc4572c5 +Block 0001 [ 75]: 9b7922765f0e0354 +Block 0001 [ 76]: e3f2198c12a9712a +Block 0001 [ 77]: bf9819c3f7cc5a86 +Block 0001 [ 78]: afee5f2d3320b0bd +Block 0001 [ 79]: 379115408f928093 +Block 0001 [ 80]: 908219f9bcb28820 +Block 0001 [ 81]: 4665baf819453030 +Block 0001 [ 82]: c90a059a656fc183 +Block 0001 [ 83]: 33c3291622ecdf31 +Block 0001 [ 84]: 775a68f8b3966014 +Block 0001 [ 85]: 53ef801db9388b80 +Block 0001 [ 86]: 81cbda0dfbf65fa1 +Block 0001 [ 87]: fd4ac24b61d3c8d7 +Block 0001 [ 88]: 5e7046798be87806 +Block 0001 [ 89]: aa4e6b8bfcca95fb +Block 0001 [ 90]: a2001d03233b2f0e +Block 0001 [ 91]: 7d538530f96085a0 +Block 0001 [ 92]: d38f62f231f9b52e +Block 0001 [ 93]: 8dc3081a086d9daa +Block 0001 [ 94]: 883c50417dbaf081 +Block 0001 [ 95]: bd002bb540f35485 +Block 0001 [ 96]: cc68837fc25c9a87 +Block 0001 [ 97]: 4ed107bce88e73c1 +Block 0001 [ 98]: e7ff0c41a1e3bc4a +Block 0001 [ 99]: 488b1809f472dc9d +Block 0001 [100]: 35410408ece21800 +Block 0001 [101]: 7b50848a016e79cb +Block 0001 [102]: e985719d6f64a9b2 +Block 0001 [103]: 006df69a7bca976f +Block 0001 [104]: e890b263c7cc5970 +Block 0001 [105]: 35979016181fbbd2 +Block 0001 [106]: e4fff85feadc39b9 +Block 0001 [107]: 87f8a036894442e2 +Block 0001 [108]: 2c4dfff4c9de094a +Block 0001 [109]: 51b8eea696cbde4c +Block 0001 [110]: b8768c7bf0ac6cdb +Block 0001 [111]: 03ade3d5b85bd0de +Block 0001 [112]: 3e34032d46be2e95 +Block 0001 [113]: d552fe73d03a380d +Block 0001 [114]: 610b3c1ec2e06ab6 +Block 0001 [115]: fff69e45577af380 +Block 0001 [116]: cd645a3a107953e7 +Block 0001 [117]: 99edaeb0890c5417 +Block 0001 [118]: ac44c680e31c3d51 +Block 0001 [119]: 9b6a30e934f83dad +Block 0001 [120]: 31b9d0d40d03a80f +Block 0001 [121]: 1dc2ec1683f87714 +Block 0001 [122]: 4e6fd78afefad588 +Block 0001 [123]: 0a7857fe9c9ae15d +Block 0001 [124]: 5a894bc70b57a8f5 +Block 0001 [125]: 82a6248eefbd8c0c +Block 0001 [126]: ac1200ef990a5f7f +Block 0001 [127]: 7e2b809c5e620aca +Block 0002 [ 0]: ab531950d650d8de +Block 0002 [ 1]: afbbd0a8f33b8f3f +Block 0002 [ 2]: eae43ba8d1fada95 +Block 0002 [ 3]: 37a7c613b7bc4b8e +Block 0002 [ 4]: 797c0187f0118661 +Block 0002 [ 5]: e975fc3402de84be +Block 0002 [ 6]: 5f7211c91b7f2f1f +Block 0002 [ 7]: a82fccd7a5c06f12 +Block 0002 [ 8]: 99a47006ee9f1139 +Block 0002 [ 9]: f539ccdbc25a4cc1 +Block 0002 [ 10]: e71e6596f62cdd5a +Block 0002 [ 11]: 451148e009460163 +Block 0002 [ 12]: d9ee486b10b2806e +Block 0002 [ 13]: 33f5d1433c73585e +Block 0002 [ 14]: a8490151cb101d0d +Block 0002 [ 15]: da549e6dd1679df6 +Block 0002 [ 16]: 809e74b211e1b935 +Block 0002 [ 17]: df0bd60e619d438a +Block 0002 [ 18]: a6e4f669e3ef3bd6 +Block 0002 [ 19]: 2dbb7b100306ab24 +Block 0002 [ 20]: 9ec25a6c655e51da +Block 0002 [ 21]: 12c2c6acc71c45ef +Block 0002 [ 22]: 4a3b0beb690d22dc +Block 0002 [ 23]: c4bd5a1b4d874685 +Block 0002 [ 24]: 4eb892c29db734d7 +Block 0002 [ 25]: 682d40abc1e166f4 +Block 0002 [ 26]: 2f78b0124d8e32d7 +Block 0002 [ 27]: 2d2c778215c4ea0c +Block 0002 [ 28]: 6adfd023b9c5f338 +Block 0002 [ 29]: 05db2297aaf11e44 +Block 0002 [ 30]: a0f73a984d9e0238 +Block 0002 [ 31]: 2dd204256a5cb98b +Block 0002 [ 32]: 0ed19af8022fa4c1 +Block 0002 [ 33]: 627728cb1394e70d +Block 0002 [ 34]: 69672f8719e2e5dd +Block 0002 [ 35]: b39ccb2cbead4f2d +Block 0002 [ 36]: b43115927b03a204 +Block 0002 [ 37]: b29801888849ff61 +Block 0002 [ 38]: 2264364d78cf3b02 +Block 0002 [ 39]: f7ba1d0121f6ef7c +Block 0002 [ 40]: fa25d47c97fa15ac +Block 0002 [ 41]: 89d5f89c7be0bb71 +Block 0002 [ 42]: c49cb4541a91cff2 +Block 0002 [ 43]: 874cd8a4985d7834 +Block 0002 [ 44]: c19261e8fcea632c +Block 0002 [ 45]: 5c1502cfccc2fd3f +Block 0002 [ 46]: 2da9a13eda8e52a1 +Block 0002 [ 47]: 02f150e62533f71f +Block 0002 [ 48]: edee37caa7ee96f9 +Block 0002 [ 49]: e4f1a0e7a4b3c668 +Block 0002 [ 50]: fc406148b9820e81 +Block 0002 [ 51]: 61483457659a1799 +Block 0002 [ 52]: 0e1206f1271f31c8 +Block 0002 [ 53]: 3ff4bbc6d461f3ac +Block 0002 [ 54]: 9e90a4737c444a98 +Block 0002 [ 55]: 22842091eb2c29a4 +Block 0002 [ 56]: 1ca1cde6be37047e +Block 0002 [ 57]: f1e25e0707ef49aa +Block 0002 [ 58]: a38d779f21fb8b07 +Block 0002 [ 59]: 74da26b2d7e0d0de +Block 0002 [ 60]: 46940323ba8bef91 +Block 0002 [ 61]: c9847d40fab9bfa0 +Block 0002 [ 62]: a9ccbe9433dbf6b6 +Block 0002 [ 63]: 62d4ee530f84a01e +Block 0002 [ 64]: 5369331cd64476b9 +Block 0002 [ 65]: 71ba63d911ac6a6b +Block 0002 [ 66]: 8cc19167baf65398 +Block 0002 [ 67]: 3fe137a2879f96b4 +Block 0002 [ 68]: 23dfc6dd2b17a041 +Block 0002 [ 69]: fd166bb09127747f +Block 0002 [ 70]: f3af31fbfab8d809 +Block 0002 [ 71]: 1d2ea2a7374e0840 +Block 0002 [ 72]: ac710d268cf4fedf +Block 0002 [ 73]: d6beb900625d1592 +Block 0002 [ 74]: 3b1486fa3ecd52d7 +Block 0002 [ 75]: 5dfd7eb55f80fff5 +Block 0002 [ 76]: c4920a178a657dee +Block 0002 [ 77]: 3063bc7bc258632e +Block 0002 [ 78]: 08c72633ff8367e8 +Block 0002 [ 79]: de6c96890b8211fa +Block 0002 [ 80]: d533e2e5b99f9a89 +Block 0002 [ 81]: 42b6177c238f3592 +Block 0002 [ 82]: 45db675f166d2098 +Block 0002 [ 83]: 1aa0362d889db002 +Block 0002 [ 84]: 5fb5a8a899e7bbcc +Block 0002 [ 85]: ec4a77566773352f +Block 0002 [ 86]: 2809156527466d15 +Block 0002 [ 87]: 2395d97c5e4a147a +Block 0002 [ 88]: b7c8d8a20eb785cf +Block 0002 [ 89]: 55929cfe6fed4017 +Block 0002 [ 90]: 796542310b3a982b +Block 0002 [ 91]: 430a76aedcbd90e8 +Block 0002 [ 92]: 91ca8acd0ac2e067 +Block 0002 [ 93]: 8e50acb8e6952585 +Block 0002 [ 94]: 16df2d074b132b4b +Block 0002 [ 95]: 6ba2c1cefbcd3d32 +Block 0002 [ 96]: 4ca35f90ee6f3c02 +Block 0002 [ 97]: 1f4823f43e7e6f71 +Block 0002 [ 98]: b903b08436d87058 +Block 0002 [ 99]: 38245ec648896e53 +Block 0002 [100]: 14e189a61fd2515a +Block 0002 [101]: ef047f9f62ff6510 +Block 0002 [102]: e72313e49aea7f82 +Block 0002 [103]: 9d9d1757de6992f5 +Block 0002 [104]: ea4e379b2df83c29 +Block 0002 [105]: 4478302ccd041aad +Block 0002 [106]: 4990a52062b9ac3a +Block 0002 [107]: 83a0f64a2dea0624 +Block 0002 [108]: d55acd58d33318fd +Block 0002 [109]: e458ab245697ea63 +Block 0002 [110]: 49d0c9d161371688 +Block 0002 [111]: ea5b74ea5b08df9d +Block 0002 [112]: 1a8c184bdd4c5d10 +Block 0002 [113]: f2f629e6d8394674 +Block 0002 [114]: 220964837a6027fe +Block 0002 [115]: 0bc1a4f85c884971 +Block 0002 [116]: c3f1f53a0ac51dc6 +Block 0002 [117]: 80a8dc394d87d919 +Block 0002 [118]: 6d1280c6a5c91b09 +Block 0002 [119]: eccddb278024b896 +Block 0002 [120]: 52647d0bba74326c +Block 0002 [121]: 7f3932ec89410d41 +Block 0002 [122]: 191c10651d52883e +Block 0002 [123]: 090ec2202a9104ba +Block 0002 [124]: da6067ea0f944450 +Block 0002 [125]: 9c0972bbbc1bf1ae +Block 0002 [126]: 3c76df28bddfe68c +Block 0002 [127]: 0c5f6c7f878eeb0b +Block 0003 [ 0]: 900b4b46200c544c +Block 0003 [ 1]: 615068c6f1fa70ed +Block 0003 [ 2]: 541d13b0280f8175 +Block 0003 [ 3]: 2082941de980cd5a +Block 0003 [ 4]: e8bccb1c26ab9eca +Block 0003 [ 5]: 0eb12abb2cf24ebe +Block 0003 [ 6]: bab6e5aaa8018b20 +Block 0003 [ 7]: 89c0c47763af65c5 +Block 0003 [ 8]: 95a65ab140f1a880 +Block 0003 [ 9]: fa3be1c08532ac8c +Block 0003 [ 10]: abd4a26b5bca2cef +Block 0003 [ 11]: 9508af0ae337fb13 +Block 0003 [ 12]: 13cdb71b243ba1f5 +Block 0003 [ 13]: b8bd7f941f99939b +Block 0003 [ 14]: eedb84a6e3a05437 +Block 0003 [ 15]: ee12d5518952c311 +Block 0003 [ 16]: 8112689e24a4e808 +Block 0003 [ 17]: 7636f3bf1162eacb +Block 0003 [ 18]: a0c0dc2987fd137c +Block 0003 [ 19]: c0ddfb772fca4563 +Block 0003 [ 20]: aae0e0cd7d6ebd31 +Block 0003 [ 21]: b2379a164f186276 +Block 0003 [ 22]: f19ea49023ba40d6 +Block 0003 [ 23]: d105094e90aef0f4 +Block 0003 [ 24]: 7318160321ff1700 +Block 0003 [ 25]: 341d4c2f419d17e0 +Block 0003 [ 26]: 9d0f35e38570b55e +Block 0003 [ 27]: 6bec7aa0ed8e99e2 +Block 0003 [ 28]: c25d45befa00a97f +Block 0003 [ 29]: 88fed968820f8c7a +Block 0003 [ 30]: bd3ba51f94404e43 +Block 0003 [ 31]: 505f67420bf9ff3b +Block 0003 [ 32]: aadc81c468be4ade +Block 0003 [ 33]: d9d04aa55df15541 +Block 0003 [ 34]: a9d4605b808b26ed +Block 0003 [ 35]: 77c0c653d677e5f4 +Block 0003 [ 36]: 66cf4b2c33ba1287 +Block 0003 [ 37]: 2159d8f669619152 +Block 0003 [ 38]: 277494e693e2260c +Block 0003 [ 39]: 6a4efa2a28476fbb +Block 0003 [ 40]: 6d89a658a8eb3a87 +Block 0003 [ 41]: 6643282f4e2e20b7 +Block 0003 [ 42]: 8d73318f6b37ba20 +Block 0003 [ 43]: 7ac12f40ea088cc1 +Block 0003 [ 44]: 039ab18a2301f45e +Block 0003 [ 45]: ee739603d11dd438 +Block 0003 [ 46]: a2d0758ff2bb7b61 +Block 0003 [ 47]: 6f7513923aa239c5 +Block 0003 [ 48]: 479251793a6d48a8 +Block 0003 [ 49]: bbd36f9d5c56e87a +Block 0003 [ 50]: 31f653eaa9248c6c +Block 0003 [ 51]: 59178b13140a219d +Block 0003 [ 52]: f0c95af03d8f1f07 +Block 0003 [ 53]: a0d93bfd437f6a41 +Block 0003 [ 54]: 9921b64737fbc37c +Block 0003 [ 55]: d513001e5cb70077 +Block 0003 [ 56]: e90e86c3875d03f9 +Block 0003 [ 57]: f77c90cb5f773667 +Block 0003 [ 58]: 842c4f09e1d44a70 +Block 0003 [ 59]: 9473717f368e17ef +Block 0003 [ 60]: 2fa7191e160f1367 +Block 0003 [ 61]: 188343023d77c117 +Block 0003 [ 62]: f90ab2a6f3513ddb +Block 0003 [ 63]: ef07e1df547670de +Block 0003 [ 64]: 490a9760f108ceba +Block 0003 [ 65]: e6bba096cca0cc3d +Block 0003 [ 66]: 88afb830cf0d6afc +Block 0003 [ 67]: a24603d655ac3411 +Block 0003 [ 68]: c92928a948c09aaf +Block 0003 [ 69]: 0b235502de082b53 +Block 0003 [ 70]: 68e2d92139a102a1 +Block 0003 [ 71]: db636a19651b1a8f +Block 0003 [ 72]: 55fb8586acbeb7bd +Block 0003 [ 73]: 59ee9cfe10e2852e +Block 0003 [ 74]: 9cfce7017ba9c310 +Block 0003 [ 75]: ce69b85ed419b61d +Block 0003 [ 76]: 8e537f5cd92f07d5 +Block 0003 [ 77]: 0936bcb0af45c502 +Block 0003 [ 78]: addef0747ad3a8b3 +Block 0003 [ 79]: 9f33d7ea62dbaaf0 +Block 0003 [ 80]: cc7c8f4bd3d7277c +Block 0003 [ 81]: 63a72c0deaaeedba +Block 0003 [ 82]: 388eab0b99643af1 +Block 0003 [ 83]: 043e0dbc4e83be89 +Block 0003 [ 84]: 3ff59b09ab580288 +Block 0003 [ 85]: 70e006315ebdd36f +Block 0003 [ 86]: 47539c3896477284 +Block 0003 [ 87]: 0e94787998b6ef6c +Block 0003 [ 88]: be9581f1e03e87c9 +Block 0003 [ 89]: f601b4d2eb8452a9 +Block 0003 [ 90]: d833a7b59bf0ce2e +Block 0003 [ 91]: 636c7c907e257e8c +Block 0003 [ 92]: 9e60534288ef4d3f +Block 0003 [ 93]: 06e24a4afbfe1966 +Block 0003 [ 94]: a583680ac97a5613 +Block 0003 [ 95]: e095788f1dff0b5b +Block 0003 [ 96]: 24dbe8854bbd48d2 +Block 0003 [ 97]: 7319443a645f08f9 +Block 0003 [ 98]: 1cf2b175e298deca +Block 0003 [ 99]: 2d2763dc7e9eda81 +Block 0003 [100]: dc126b0b72b35bf1 +Block 0003 [101]: 93a439b4fd315f79 +Block 0003 [102]: 78d19ab12b8c62e6 +Block 0003 [103]: 6a99a2c98bb11d86 +Block 0003 [104]: 0eb95ec61f83e17d +Block 0003 [105]: 52f93eae017bdcde +Block 0003 [106]: f17fe7695bfab7db +Block 0003 [107]: 383c915348e737f8 +Block 0003 [108]: 7914b38aba5db79c +Block 0003 [109]: d8d1c709cb8f241e +Block 0003 [110]: 294637fa5e5c37ed +Block 0003 [111]: 141f9ef0a4fe5043 +Block 0003 [112]: d8b7cff4b0ee2ad1 +Block 0003 [113]: eecd8ab86cd37c3b +Block 0003 [114]: 687500a2b5b4f93f +Block 0003 [115]: 44d162fe6c806b6e +Block 0003 [116]: 1ec5716982b0455c +Block 0003 [117]: cd14a043b1d36a07 +Block 0003 [118]: 65e6ba21c7bc7a01 +Block 0003 [119]: 75dd70547da224a6 +Block 0003 [120]: 34f11d3e0d8cc470 +Block 0003 [121]: a570799323b61b23 +Block 0003 [122]: b5179a8f90876b2c +Block 0003 [123]: ca8c1f20370d6660 +Block 0003 [124]: b2cc48f3ba63ce4a +Block 0003 [125]: b7d244b86a5bec49 +Block 0003 [126]: 652da4cd7f33df45 +Block 0003 [127]: 428a6992769973ce +Block 0004 [ 0]: 61b02e80b3742763 +Block 0004 [ 1]: 7e4bbe3e73625805 +Block 0004 [ 2]: 9790e6cd9c3c8462 +Block 0004 [ 3]: 1df4ccf80bf227b5 +Block 0004 [ 4]: 4ff867d3cbffcba1 +Block 0004 [ 5]: 95bd5d47bbf4659f +Block 0004 [ 6]: 09a513dbaf9233e3 +Block 0004 [ 7]: f1baabf4d227a53a +Block 0004 [ 8]: e50869ba195d6894 +Block 0004 [ 9]: ff35af7749193c12 +Block 0004 [ 10]: 5e7bc4a2e3ebbe22 +Block 0004 [ 11]: 11b86088eb9621f6 +Block 0004 [ 12]: 86e651a025016040 +Block 0004 [ 13]: 55e06a939610f6a9 +Block 0004 [ 14]: fc2beb0ea89cc482 +Block 0004 [ 15]: c8ad6ac2bae5f83e +Block 0004 [ 16]: 03bc33fff2eb1397 +Block 0004 [ 17]: b5c261acc0f09c2a +Block 0004 [ 18]: 4341b9dbdf7fc906 +Block 0004 [ 19]: 50087675709002b7 +Block 0004 [ 20]: 31b7a5a936823271 +Block 0004 [ 21]: daafcb9b596d616f +Block 0004 [ 22]: 110b5732b99d44e8 +Block 0004 [ 23]: 398968e362e86395 +Block 0004 [ 24]: 504a5d24eaf60bd9 +Block 0004 [ 25]: ac01c13c036ce4ea +Block 0004 [ 26]: 5a78894638c5997d +Block 0004 [ 27]: d036b615e6fad450 +Block 0004 [ 28]: 19590cb7addd10d3 +Block 0004 [ 29]: df16c271a9d2f62f +Block 0004 [ 30]: 77c26a898e5afeb8 +Block 0004 [ 31]: c94fe3300508a570 +Block 0004 [ 32]: 0459cadd307ce63c +Block 0004 [ 33]: a788a865094778af +Block 0004 [ 34]: 87d7fff2870f9b3a +Block 0004 [ 35]: beac32cc09233860 +Block 0004 [ 36]: c742017d94927d64 +Block 0004 [ 37]: 96eb65f7d55dc6b8 +Block 0004 [ 38]: 743f7a221041ffbd +Block 0004 [ 39]: 08770530af9fa225 +Block 0004 [ 40]: a6f3a50f3e197a38 +Block 0004 [ 41]: 412cd2c6a82d7310 +Block 0004 [ 42]: afa426a667e12057 +Block 0004 [ 43]: 5782330a3c19f0b6 +Block 0004 [ 44]: be1c3e6883a0cb0e +Block 0004 [ 45]: 3df0ec64890ea638 +Block 0004 [ 46]: 56288a35cf5aafbf +Block 0004 [ 47]: 55ecfc3aab7211ac +Block 0004 [ 48]: 362fd07efe33163c +Block 0004 [ 49]: 10320ae4802a7e1a +Block 0004 [ 50]: db36f926291f2f23 +Block 0004 [ 51]: bd8ef19f5cb6749a +Block 0004 [ 52]: 362419cdfa58aa47 +Block 0004 [ 53]: 6ccc46d502e8389b +Block 0004 [ 54]: d489a2400b6489ff +Block 0004 [ 55]: 6781ec15707fedbd +Block 0004 [ 56]: b3b2f0f1f23caa08 +Block 0004 [ 57]: 382870e8ab1f2bcb +Block 0004 [ 58]: 00fac8357b77af84 +Block 0004 [ 59]: 1d1bb0ac845b3bb3 +Block 0004 [ 60]: bf88c0aac2057a72 +Block 0004 [ 61]: 5224c313bf757c14 +Block 0004 [ 62]: 9cb8edce4fcd9f3d +Block 0004 [ 63]: ee5b8b3f1b45c6bc +Block 0004 [ 64]: 92941e57904256e2 +Block 0004 [ 65]: 3410ce980b6075cd +Block 0004 [ 66]: 4c2a6351368555d4 +Block 0004 [ 67]: 7192ebc6e89fa9da +Block 0004 [ 68]: ae566e908918769e +Block 0004 [ 69]: 469bdcf0eb62d144 +Block 0004 [ 70]: 7605e6b1f8d0ebe9 +Block 0004 [ 71]: 5ad66be7fc63f10d +Block 0004 [ 72]: 184ae200186ceaba +Block 0004 [ 73]: a2fd668b31a0247e +Block 0004 [ 74]: 6cfa785e22b348f8 +Block 0004 [ 75]: 09b9f880d8d0e434 +Block 0004 [ 76]: 642517279598b38e +Block 0004 [ 77]: cd70e90d7bc4844a +Block 0004 [ 78]: 1cf34c8fbc595a38 +Block 0004 [ 79]: 92d7f6b098188e10 +Block 0004 [ 80]: 9fff24b7d7e875ff +Block 0004 [ 81]: 89fb31a1adecd0ca +Block 0004 [ 82]: 390c984f20f90dd8 +Block 0004 [ 83]: db611b87ccee8357 +Block 0004 [ 84]: d7c03146d2095e03 +Block 0004 [ 85]: 0d673441a5213ee2 +Block 0004 [ 86]: 3bf960e76ad98bf2 +Block 0004 [ 87]: 15ba7ca167b4fc58 +Block 0004 [ 88]: 2f8e1e77cb6059f3 +Block 0004 [ 89]: 230ad60f2c671f48 +Block 0004 [ 90]: c126fbb6f4664282 +Block 0004 [ 91]: bc37cb058c16f1af +Block 0004 [ 92]: 25b5b798646af7b8 +Block 0004 [ 93]: 41660c72b268e9fc +Block 0004 [ 94]: ac7bd5845cdb1ad1 +Block 0004 [ 95]: 9071233c92d8571b +Block 0004 [ 96]: 262c8f321ce0f391 +Block 0004 [ 97]: 3bb8082c589edf4f +Block 0004 [ 98]: 9d995d6561df731c +Block 0004 [ 99]: a68fcc1451a03d2a +Block 0004 [100]: 47ba7944bbd6d890 +Block 0004 [101]: 241167f695259047 +Block 0004 [102]: b3aead0264ffffd1 +Block 0004 [103]: 6c1a163b6c3a5822 +Block 0004 [104]: b03149730b57a7f9 +Block 0004 [105]: e5ba3f27b2107055 +Block 0004 [106]: d2b99238801a8045 +Block 0004 [107]: 4d64f86efc903560 +Block 0004 [108]: 91d8cfea06ed3527 +Block 0004 [109]: d89d6a658d7b6d16 +Block 0004 [110]: 5bdff6f547dd7cf9 +Block 0004 [111]: 68a46fd7b88d76ca +Block 0004 [112]: 7a139992edf32a73 +Block 0004 [113]: d8d8f02739b14a2c +Block 0004 [114]: 4afc51977b857384 +Block 0004 [115]: 593d06a3b1553ab4 +Block 0004 [116]: d21e157f895b9e53 +Block 0004 [117]: c36a81244ef9742a +Block 0004 [118]: acb7d5a719a87b5f +Block 0004 [119]: c81acf2539e71b78 +Block 0004 [120]: cb8b1d5dc9ab6dae +Block 0004 [121]: 40fb035745072ee1 +Block 0004 [122]: 33995806abd29a5b +Block 0004 [123]: 32095e26c80ce6e4 +Block 0004 [124]: 59b15a44c845141d +Block 0004 [125]: bd3f0650de4e7544 +Block 0004 [126]: 9e7a71f80dc928fa +Block 0004 [127]: 15cb1ef5d3503f23 +Block 0005 [ 0]: 2407d195e807548c +Block 0005 [ 1]: ad26e752874ecef7 +Block 0005 [ 2]: 8e956c0210f8a850 +Block 0005 [ 3]: f0823911ea3dc266 +Block 0005 [ 4]: 8ca2efdc25c95c1a +Block 0005 [ 5]: b1b295e6d5938e90 +Block 0005 [ 6]: 61e589e7bc7ee50a +Block 0005 [ 7]: 70f8b036f79e182c +Block 0005 [ 8]: d3b2034f7eb8397e +Block 0005 [ 9]: ed85a59503e729b2 +Block 0005 [ 10]: a59b1e9d7ac407f0 +Block 0005 [ 11]: 18e4697aff4d626e +Block 0005 [ 12]: 48f23c53a192e907 +Block 0005 [ 13]: 0353e7f7a3399bc7 +Block 0005 [ 14]: c20df991d82562c8 +Block 0005 [ 15]: 87e4856a098eff96 +Block 0005 [ 16]: c6609c87275e754e +Block 0005 [ 17]: 648ab718ca0925cf +Block 0005 [ 18]: e8697ef67043a622 +Block 0005 [ 19]: 269e9739151af066 +Block 0005 [ 20]: f770e93308cd4431 +Block 0005 [ 21]: a04fcb290799218f +Block 0005 [ 22]: 59794f1b24bf075b +Block 0005 [ 23]: be22ca6ca634779f +Block 0005 [ 24]: e513bdcc17002a69 +Block 0005 [ 25]: 990138964e16fdab +Block 0005 [ 26]: fcc15a89ed35c704 +Block 0005 [ 27]: 72d582eaac1af2b9 +Block 0005 [ 28]: 967f93d54b867ef4 +Block 0005 [ 29]: 26b2833e0a4acd9f +Block 0005 [ 30]: 879536890775795c +Block 0005 [ 31]: deda9793b9079cbc +Block 0005 [ 32]: 40277ca0d59f9553 +Block 0005 [ 33]: fd363f7c9c4a6785 +Block 0005 [ 34]: f9de8f1d3f2c0e67 +Block 0005 [ 35]: 71369da8fff5907c +Block 0005 [ 36]: bce335eab4d82e69 +Block 0005 [ 37]: 9fc21e6cdd0d1703 +Block 0005 [ 38]: e434cb9db85055b1 +Block 0005 [ 39]: 9d46064ec1920847 +Block 0005 [ 40]: 215478858606f725 +Block 0005 [ 41]: 6f5cebdb2261f718 +Block 0005 [ 42]: 581ec1c91f3d7950 +Block 0005 [ 43]: ec09884a2f860205 +Block 0005 [ 44]: 016e9b7dd3e34056 +Block 0005 [ 45]: ecf6fadac4ec557e +Block 0005 [ 46]: 911fdf83e6dd3f16 +Block 0005 [ 47]: 43e1c6222f494622 +Block 0005 [ 48]: 67ccba4578b4514a +Block 0005 [ 49]: 518530888f2bf6c1 +Block 0005 [ 50]: cab80f10eb75afc7 +Block 0005 [ 51]: c1311903e3e18720 +Block 0005 [ 52]: 24b9703f88280748 +Block 0005 [ 53]: bc46a3e55ea93315 +Block 0005 [ 54]: 2ef89852f18c8127 +Block 0005 [ 55]: af8a0afc790b5578 +Block 0005 [ 56]: 62fb6e62bbc51408 +Block 0005 [ 57]: 867eee397ba52395 +Block 0005 [ 58]: be71ea6f48ab5c12 +Block 0005 [ 59]: 9f69cc05adf942d6 +Block 0005 [ 60]: 83a151c54916331b +Block 0005 [ 61]: 5d3a15c2e8af73f4 +Block 0005 [ 62]: f9f93eb16073140d +Block 0005 [ 63]: 0910cd3454b972f2 +Block 0005 [ 64]: d005e33b360488ce +Block 0005 [ 65]: a736866bbcf4ffca +Block 0005 [ 66]: b28e1240544033f8 +Block 0005 [ 67]: efd0572e93a73dc2 +Block 0005 [ 68]: eca676cca54e0ab7 +Block 0005 [ 69]: 3cee98c6a68f966f +Block 0005 [ 70]: a64b18091a53a60d +Block 0005 [ 71]: a995405e7bae7c46 +Block 0005 [ 72]: 2f78d1dcb0d0b9d1 +Block 0005 [ 73]: 1599269b0c2b7437 +Block 0005 [ 74]: 10aea6df58285014 +Block 0005 [ 75]: eb818d62aef8326c +Block 0005 [ 76]: 2d0dcaf1692efb64 +Block 0005 [ 77]: 5bacab67370fccd0 +Block 0005 [ 78]: 009f834eb54066b0 +Block 0005 [ 79]: 74864cfcea1d792a +Block 0005 [ 80]: 12ac904270b3fc5d +Block 0005 [ 81]: c006df57f8fd380c +Block 0005 [ 82]: 3ef11bbc90a1db48 +Block 0005 [ 83]: 889ef4b880ea6ecb +Block 0005 [ 84]: 4df0d8edb2998f16 +Block 0005 [ 85]: 3244d5eb9c8f6c52 +Block 0005 [ 86]: db58706bfff2bb30 +Block 0005 [ 87]: 8acb6d2afb8d1c9d +Block 0005 [ 88]: 8dd675246a44ed27 +Block 0005 [ 89]: f74402d04b7ec003 +Block 0005 [ 90]: d65b9bad8454198d +Block 0005 [ 91]: 3a797de67bd036be +Block 0005 [ 92]: 276fdd9689e47ba3 +Block 0005 [ 93]: 5f7038a2ab05ed2c +Block 0005 [ 94]: fe99c638c6fd40b7 +Block 0005 [ 95]: e3b66576ea866d69 +Block 0005 [ 96]: 8e71e25e4507d7c7 +Block 0005 [ 97]: 66c0a136a58be7df +Block 0005 [ 98]: ff379f99bf7eff87 +Block 0005 [ 99]: 7efd44f99e27d64e +Block 0005 [100]: 14a4178d8cbceaa0 +Block 0005 [101]: 127f27d7ac910aa2 +Block 0005 [102]: 6d1b02b836d71016 +Block 0005 [103]: 9e3d713b59e00ec2 +Block 0005 [104]: b20d6c08dc20ba5f +Block 0005 [105]: 829c1593f35d8c24 +Block 0005 [106]: dfbc57940e7617f4 +Block 0005 [107]: c9307700a9a945d8 +Block 0005 [108]: e3ffdba608ed4a2b +Block 0005 [109]: e4e0a880030cfd51 +Block 0005 [110]: e82581940a60a73f +Block 0005 [111]: 961f7c02492c8ad0 +Block 0005 [112]: 7b68992d2ec8bfec +Block 0005 [113]: a9ed907126332abe +Block 0005 [114]: 1e9ff58ebb76a6e1 +Block 0005 [115]: 6df86aab244d8840 +Block 0005 [116]: df4e831b85698b17 +Block 0005 [117]: 11207ef7be5bfb12 +Block 0005 [118]: 3f01cfd40c02f939 +Block 0005 [119]: acde7f4b1ef88c4a +Block 0005 [120]: 16ba6e86679b1fc6 +Block 0005 [121]: 0425258ae0bff899 +Block 0005 [122]: dd3f322d634c7ee4 +Block 0005 [123]: facf4e27f9226ef2 +Block 0005 [124]: 5219c0be52c577cb +Block 0005 [125]: 5d75edbd61cfcd91 +Block 0005 [126]: 1e605cef3901869b +Block 0005 [127]: efb73d6caa30c73e +Block 0006 [ 0]: 3ff3a1afd0287ee4 +Block 0006 [ 1]: 8ca4bc3a401187fd +Block 0006 [ 2]: d6deee7adb44fba7 +Block 0006 [ 3]: 8470d1f12ed83a47 +Block 0006 [ 4]: 360da0d7a0ef1a64 +Block 0006 [ 5]: 9445900620a0a602 +Block 0006 [ 6]: 74f4f0bfdfb57627 +Block 0006 [ 7]: a9554312a94fba41 +Block 0006 [ 8]: 440d33dddeb8e7a4 +Block 0006 [ 9]: 1cfeca050ed3777f +Block 0006 [ 10]: 378d6e95e3ba9e2e +Block 0006 [ 11]: c7873bfc22f0b158 +Block 0006 [ 12]: 7615f8f3ea9d5066 +Block 0006 [ 13]: c192d1eace8734c7 +Block 0006 [ 14]: 59001048d79ce77a +Block 0006 [ 15]: 24a85dd3291370d1 +Block 0006 [ 16]: 26015473273796de +Block 0006 [ 17]: 2111331b5d78a152 +Block 0006 [ 18]: 59a673addca8de42 +Block 0006 [ 19]: 01af263b093990d1 +Block 0006 [ 20]: 51164c5ef3541c08 +Block 0006 [ 21]: 1fd97bf87d831222 +Block 0006 [ 22]: 06062501657f1216 +Block 0006 [ 23]: ce7591de5d57b2c6 +Block 0006 [ 24]: 66c5854489d1e428 +Block 0006 [ 25]: 645ef5b210eba0a2 +Block 0006 [ 26]: 1f491e6a4e84ea25 +Block 0006 [ 27]: 7213087c5172a501 +Block 0006 [ 28]: c7b25be9ee141c2b +Block 0006 [ 29]: 9976c16c2781fdba +Block 0006 [ 30]: c29356f98d3db616 +Block 0006 [ 31]: aa386b24200a43dc +Block 0006 [ 32]: fe70bb4bec6b5b41 +Block 0006 [ 33]: 32c2b83189c14540 +Block 0006 [ 34]: a23a4380e66c805b +Block 0006 [ 35]: b8ab5c47ad64932f +Block 0006 [ 36]: 10725e3944caf2cc +Block 0006 [ 37]: f2e966b3dbc19222 +Block 0006 [ 38]: 30e5235f28c74dc7 +Block 0006 [ 39]: b54130ec0ccbec56 +Block 0006 [ 40]: f3625f5da42b7608 +Block 0006 [ 41]: 03ac15b3e4169a49 +Block 0006 [ 42]: 2b6a38cb869b0513 +Block 0006 [ 43]: 2eaeccba916989e2 +Block 0006 [ 44]: 05de41a48fd7b5f3 +Block 0006 [ 45]: 0803930bd83b9dfd +Block 0006 [ 46]: 8f9df1a8fbc17c4f +Block 0006 [ 47]: fec29c915cc85d6f +Block 0006 [ 48]: d59694a63eb621bb +Block 0006 [ 49]: ad0039ddfa6f7c94 +Block 0006 [ 50]: e6c51080e91e2c65 +Block 0006 [ 51]: 9af773fba01cfa91 +Block 0006 [ 52]: d5925d2b89484ba4 +Block 0006 [ 53]: ecf696532e4fdd23 +Block 0006 [ 54]: f0df670517da09bc +Block 0006 [ 55]: ea7e01665a3cf857 +Block 0006 [ 56]: 5bc706445614cb34 +Block 0006 [ 57]: d8c70f6ea4efa21c +Block 0006 [ 58]: 65cece98eb9de6b0 +Block 0006 [ 59]: 034d88bb29152fe2 +Block 0006 [ 60]: 5a87695852af3a27 +Block 0006 [ 61]: c1dc8d2c14ed9a61 +Block 0006 [ 62]: 7085ba9e2f9465e9 +Block 0006 [ 63]: 4f27ca7fc1d5e71b +Block 0006 [ 64]: fb73df4ffb4471c5 +Block 0006 [ 65]: 34ddabe0f1cb85a0 +Block 0006 [ 66]: 722b6f02d3545f03 +Block 0006 [ 67]: 0a58e8a36fddff54 +Block 0006 [ 68]: 2e97d1e015bf2f63 +Block 0006 [ 69]: 776125a3910e5d4f +Block 0006 [ 70]: 729397c1d34cdea8 +Block 0006 [ 71]: 64597d1994f4d652 +Block 0006 [ 72]: d6992e763e6b1840 +Block 0006 [ 73]: 3993b16e66ede21a +Block 0006 [ 74]: a0be3073b4e14898 +Block 0006 [ 75]: f46816ac0e771788 +Block 0006 [ 76]: a46a90f9a7afeccb +Block 0006 [ 77]: fccd118b8fea8bd5 +Block 0006 [ 78]: b54dab5d51abd35b +Block 0006 [ 79]: 547391e2f8849128 +Block 0006 [ 80]: 3419a829cc70d369 +Block 0006 [ 81]: f360b66e6e553ad0 +Block 0006 [ 82]: 4fd56e15625edc4d +Block 0006 [ 83]: c9a47e605b88d954 +Block 0006 [ 84]: 0664eb35ef23db11 +Block 0006 [ 85]: cae0f76f194aa390 +Block 0006 [ 86]: c7dfd32a29944973 +Block 0006 [ 87]: 752bc7b7cf0fcb1b +Block 0006 [ 88]: bfe3dc9327344fcc +Block 0006 [ 89]: 9896372af3cd20ef +Block 0006 [ 90]: 7b4ede0b565b084c +Block 0006 [ 91]: 5b487d697f173dc4 +Block 0006 [ 92]: 1daa7c1f5f228977 +Block 0006 [ 93]: 7a6c2f3b95e1caff +Block 0006 [ 94]: 7f36d68986a0d334 +Block 0006 [ 95]: 200bee502f854de3 +Block 0006 [ 96]: 888eb05b94542d07 +Block 0006 [ 97]: d8351131c91ec207 +Block 0006 [ 98]: 93a9257e9aa1fea1 +Block 0006 [ 99]: e4aa639e529bcd51 +Block 0006 [100]: f399e0dd84eb87d4 +Block 0006 [101]: e30a3a4b710ab0e0 +Block 0006 [102]: 201575d6c8b2cf4c +Block 0006 [103]: 4f2f409fa698e1c6 +Block 0006 [104]: c31d6e53d8ff5c77 +Block 0006 [105]: 2a03c26df00ad954 +Block 0006 [106]: 7bf48d33462027ac +Block 0006 [107]: 69c7a27ac1f42530 +Block 0006 [108]: 5f8655cb9f1caf86 +Block 0006 [109]: c75036252990cd7a +Block 0006 [110]: 836c76f7f654afa3 +Block 0006 [111]: 1f662ad2c72fb72a +Block 0006 [112]: c3193d05baf51ec5 +Block 0006 [113]: be6f4e4e3d55b8f2 +Block 0006 [114]: 6357f734699f9364 +Block 0006 [115]: e010aa2880f76f07 +Block 0006 [116]: c63892677e1ca8d7 +Block 0006 [117]: a97c8af5b70ad709 +Block 0006 [118]: 485e66af8cf92518 +Block 0006 [119]: 3d2554521a20a959 +Block 0006 [120]: ecaad94a70b67b4d +Block 0006 [121]: 28d5edff6ba11007 +Block 0006 [122]: 5203c747cc86bc72 +Block 0006 [123]: 1039392bca8ed32a +Block 0006 [124]: 90e4d2fd2838c6b8 +Block 0006 [125]: 1df342bc30f9e4b3 +Block 0006 [126]: 824417f3d1e2d67a +Block 0006 [127]: 49f96e7286a4e916 +Block 0007 [ 0]: 84354e382811563e +Block 0007 [ 1]: 45743b71925744fc +Block 0007 [ 2]: 3ba51f6da99da397 +Block 0007 [ 3]: e7153d5f0689ff7d +Block 0007 [ 4]: 9a7ea4aa9d5d501c +Block 0007 [ 5]: e602de901d1e0157 +Block 0007 [ 6]: 16809cb4f1197684 +Block 0007 [ 7]: ab2de4cb53458600 +Block 0007 [ 8]: 845c5a7a2bee2d83 +Block 0007 [ 9]: a0745796de1efd92 +Block 0007 [ 10]: 419624f4df71da51 +Block 0007 [ 11]: 76bbe67f53d2c67a +Block 0007 [ 12]: 3539abbbb0b07204 +Block 0007 [ 13]: eb8503675fe3c338 +Block 0007 [ 14]: 1d937c7a62ab6702 +Block 0007 [ 15]: 059a53998e17631f +Block 0007 [ 16]: 6d990f3234b4951a +Block 0007 [ 17]: 4932b85c51c10895 +Block 0007 [ 18]: 0201b22ddd936f3d +Block 0007 [ 19]: a690abdce969b3ff +Block 0007 [ 20]: 07e773ac444aa3af +Block 0007 [ 21]: 6c0eae8430a1ded7 +Block 0007 [ 22]: 5ac933f9d33495c8 +Block 0007 [ 23]: 724fd0a679dbc18e +Block 0007 [ 24]: 8a877920c8ca8eba +Block 0007 [ 25]: 532913359620fe2a +Block 0007 [ 26]: 43722492fb8181c6 +Block 0007 [ 27]: e8ae5979a35787db +Block 0007 [ 28]: b2e7e6fb8f466bb4 +Block 0007 [ 29]: 33647c4c1e55316a +Block 0007 [ 30]: 3d91ecccab5b22e6 +Block 0007 [ 31]: 3184dc8fb3d09ecc +Block 0007 [ 32]: e95ffd2964578bd2 +Block 0007 [ 33]: f794fb50980a42a0 +Block 0007 [ 34]: 028aed107dc68f09 +Block 0007 [ 35]: f4f799b91100aaf2 +Block 0007 [ 36]: b523dd437403fe2e +Block 0007 [ 37]: 0b6a883c2834f238 +Block 0007 [ 38]: 4d1a1e1cf7462f91 +Block 0007 [ 39]: 90467f9adfd369cc +Block 0007 [ 40]: 0737252fe727088d +Block 0007 [ 41]: 036daf3edf06ad86 +Block 0007 [ 42]: 22cea14d595c060b +Block 0007 [ 43]: 313f948ca727d091 +Block 0007 [ 44]: 5699968513387150 +Block 0007 [ 45]: e21ec1b28d52caae +Block 0007 [ 46]: 4f64f523d5fda9a2 +Block 0007 [ 47]: d6d18166064574ee +Block 0007 [ 48]: 783f5c64134a8883 +Block 0007 [ 49]: b29e30cc712b31b9 +Block 0007 [ 50]: 95f12fbfae39c0bf +Block 0007 [ 51]: fda076c8d35ae9fc +Block 0007 [ 52]: b82f473fc8631979 +Block 0007 [ 53]: 4f6970787ac503de +Block 0007 [ 54]: cadff9d6e5647f89 +Block 0007 [ 55]: 4a831039e1f31433 +Block 0007 [ 56]: ade6d8cd941f47ea +Block 0007 [ 57]: f88ae33e5050d752 +Block 0007 [ 58]: 799c3b44d09fd711 +Block 0007 [ 59]: 8e4011e1f5c0bf7f +Block 0007 [ 60]: f3beb9b4b5e9eecc +Block 0007 [ 61]: 463050ab643a76bb +Block 0007 [ 62]: a5ff9886a55515ed +Block 0007 [ 63]: 32d4cc9d0768f0f5 +Block 0007 [ 64]: e5e9367d6dbfb5df +Block 0007 [ 65]: 9bf89cf290ebd025 +Block 0007 [ 66]: b9dc0ca9a6066c11 +Block 0007 [ 67]: d9e6a7a7d1549407 +Block 0007 [ 68]: 708b02a53354d50d +Block 0007 [ 69]: fcd4038bd4ed92e4 +Block 0007 [ 70]: 879afb895a5562ac +Block 0007 [ 71]: f84b300e452230e8 +Block 0007 [ 72]: 1e056e1eb0df87eb +Block 0007 [ 73]: a4f406ae37a5bfb0 +Block 0007 [ 74]: cfd6acf7f684477c +Block 0007 [ 75]: 9a0c3bd9bfa97762 +Block 0007 [ 76]: 7dc2fd0cf9c1698f +Block 0007 [ 77]: 5a6803439aa62d7c +Block 0007 [ 78]: a300c3f035c0a906 +Block 0007 [ 79]: 7d93e3df4d332583 +Block 0007 [ 80]: 9f0a41eb6cf81aa3 +Block 0007 [ 81]: 090d4d5491402f2f +Block 0007 [ 82]: db71454163e4d82f +Block 0007 [ 83]: f280fbe4abd57828 +Block 0007 [ 84]: 7ba860252f9fca17 +Block 0007 [ 85]: 8f97f52ff384b305 +Block 0007 [ 86]: a5ac80ed19180eac +Block 0007 [ 87]: 4271fc976d660442 +Block 0007 [ 88]: 7ffbac72edba0eb4 +Block 0007 [ 89]: 2507d3a8c064829f +Block 0007 [ 90]: ae63553febe76e59 +Block 0007 [ 91]: 5f980ae5b5d227c6 +Block 0007 [ 92]: 6c6e292330408622 +Block 0007 [ 93]: 86ff7aa8e27fe84f +Block 0007 [ 94]: 191145bd78a49426 +Block 0007 [ 95]: 5245342b117c9e22 +Block 0007 [ 96]: 639aa498da7959b9 +Block 0007 [ 97]: a8ab257350cd755b +Block 0007 [ 98]: 2a865d9545a18b9a +Block 0007 [ 99]: 03253d93314b53a9 +Block 0007 [100]: 8253d22ddb5d6bec +Block 0007 [101]: b6e36234dad1aba7 +Block 0007 [102]: 68830cbc1c67cc2b +Block 0007 [103]: 3329e21d4d26fe24 +Block 0007 [104]: c12e237cc006fac7 +Block 0007 [105]: 10cd1052f800660c +Block 0007 [106]: d21a79dfe11e09e1 +Block 0007 [107]: 1e13955a2b50bce6 +Block 0007 [108]: 9f49277660c9eae2 +Block 0007 [109]: 6404ee69235748b8 +Block 0007 [110]: 91fe5838faba8e93 +Block 0007 [111]: 92edcd3e257759b3 +Block 0007 [112]: 7f2b1a31c0f364b0 +Block 0007 [113]: 09f0b9b566fd7e16 +Block 0007 [114]: e36832a08f2aa2af +Block 0007 [115]: 1305d3b423f27290 +Block 0007 [116]: b98b05f6f4ada98e +Block 0007 [117]: fe4b59fea117a0cc +Block 0007 [118]: e32a71359fc93132 +Block 0007 [119]: d623901ca1f81d14 +Block 0007 [120]: 5a81370130e84352 +Block 0007 [121]: b426f6c7233c9577 +Block 0007 [122]: e437e7ab8d1b79dc +Block 0007 [123]: 90588535ecf2e177 +Block 0007 [124]: 915c2947d730404e +Block 0007 [125]: 3afc9bc412d60ec7 +Block 0007 [126]: 52968dd0d114c6fd +Block 0007 [127]: 349bf7ebd16f7787 +Block 0008 [ 0]: a4adfe4d99910cf4 +Block 0008 [ 1]: c351bfb2ad7543fc +Block 0008 [ 2]: ab7df1fb899a8162 +Block 0008 [ 3]: 84a70a38b48d6841 +Block 0008 [ 4]: 8cf53bd5d8be66b2 +Block 0008 [ 5]: fb54f442f6eb52b8 +Block 0008 [ 6]: 88adf1690f5ec2ed +Block 0008 [ 7]: 41380e64b80584c9 +Block 0008 [ 8]: 3d4641ace2233214 +Block 0008 [ 9]: ffa746589d1272b4 +Block 0008 [ 10]: 2725655f6415ce90 +Block 0008 [ 11]: 04be018f0b904cf9 +Block 0008 [ 12]: 5384ff540a51785f +Block 0008 [ 13]: 666d47030ccbde5e +Block 0008 [ 14]: f213da828329e2f0 +Block 0008 [ 15]: 75f9c65103f5f46c +Block 0008 [ 16]: e2ae9c2ee2f4816c +Block 0008 [ 17]: 52e1c215442ecfcf +Block 0008 [ 18]: 9cfb83358ca0ec12 +Block 0008 [ 19]: 8a5b5cc7efc4a9ac +Block 0008 [ 20]: 6a19c286f0a8c950 +Block 0008 [ 21]: 30177985adb92f43 +Block 0008 [ 22]: 20424653cddc8ff3 +Block 0008 [ 23]: 9e4c2cd726e699d5 +Block 0008 [ 24]: 88eee79981120ff7 +Block 0008 [ 25]: f57cb3fe062a3966 +Block 0008 [ 26]: 4aaf82b7910e692d +Block 0008 [ 27]: 1cb38ac0c88552e0 +Block 0008 [ 28]: b79d8c8cd58a1d65 +Block 0008 [ 29]: db54e9d4af253bdd +Block 0008 [ 30]: c1b223dbd47298d9 +Block 0008 [ 31]: 9b3d45d10d3c1d55 +Block 0008 [ 32]: ea124c969e5bc7a9 +Block 0008 [ 33]: 3980294920c96453 +Block 0008 [ 34]: 8f78b5e306f50322 +Block 0008 [ 35]: 4b3d1b73f5c51af2 +Block 0008 [ 36]: d4838a6dbf5a9c58 +Block 0008 [ 37]: 73d5ccd5a3f0051f +Block 0008 [ 38]: bad7923df6b64217 +Block 0008 [ 39]: cbc27176d94d8498 +Block 0008 [ 40]: 1bd98448f65a8b40 +Block 0008 [ 41]: 68046fcd71bdbed8 +Block 0008 [ 42]: 324abd87c40e8445 +Block 0008 [ 43]: 959a955259823db0 +Block 0008 [ 44]: 2048e1d260ea23d2 +Block 0008 [ 45]: 057b0df5e8d5e41a +Block 0008 [ 46]: f258852b6cf19613 +Block 0008 [ 47]: 50062fb8f780806e +Block 0008 [ 48]: 30547b8f4794d029 +Block 0008 [ 49]: 012c05500a35cde0 +Block 0008 [ 50]: 92f444164303e83f +Block 0008 [ 51]: 1672d08bf96d6f0e +Block 0008 [ 52]: f6a0ded2c321e7e4 +Block 0008 [ 53]: 320b4bffaae2630a +Block 0008 [ 54]: 3be9b3af44cef7fa +Block 0008 [ 55]: 4a7e4f662cd9e95c +Block 0008 [ 56]: 5960721992ad56b6 +Block 0008 [ 57]: dcd75636e45c61c1 +Block 0008 [ 58]: aab8dae08205ab21 +Block 0008 [ 59]: ebc5255b469a3007 +Block 0008 [ 60]: 9f3d591c663d9fbf +Block 0008 [ 61]: 3d2c288bcff83b4f +Block 0008 [ 62]: 06cc6f2c6628cdfe +Block 0008 [ 63]: 87550de6e0e963a2 +Block 0008 [ 64]: 23c6f424e3e75f4d +Block 0008 [ 65]: 8b9f92a37e9e0344 +Block 0008 [ 66]: d868b102a5d6b48d +Block 0008 [ 67]: 8447e4e667c0f561 +Block 0008 [ 68]: 3b744353d55d66b4 +Block 0008 [ 69]: 85a405846a2b4b86 +Block 0008 [ 70]: 83608220e4b3e470 +Block 0008 [ 71]: 55ee0e8c99df68e4 +Block 0008 [ 72]: b67848f9d16ec6c7 +Block 0008 [ 73]: 91fa8ec5b14a0193 +Block 0008 [ 74]: 5fb3f547492c3bfe +Block 0008 [ 75]: 99aa6950926c7bbb +Block 0008 [ 76]: 2868d23e0f3ba62c +Block 0008 [ 77]: 54a21971a3e6da83 +Block 0008 [ 78]: a7983f5690608187 +Block 0008 [ 79]: eda562b615edd8d0 +Block 0008 [ 80]: b143f81d4b57824b +Block 0008 [ 81]: 74989288dffa4df4 +Block 0008 [ 82]: 9dc7eb0a82f1d679 +Block 0008 [ 83]: 7fd6bc8054abd40f +Block 0008 [ 84]: 4a48ff43f5bc9a80 +Block 0008 [ 85]: 082ecbf4328c43b2 +Block 0008 [ 86]: 2e62efd01a152b8c +Block 0008 [ 87]: 9af6685e941965cc +Block 0008 [ 88]: 5ea16be4325897b4 +Block 0008 [ 89]: a3e786beb9ecac26 +Block 0008 [ 90]: 46373672e4bcaf5b +Block 0008 [ 91]: 1b37a65c3723de2b +Block 0008 [ 92]: 02d2cbcdf3b176a6 +Block 0008 [ 93]: cf60c07520e43204 +Block 0008 [ 94]: a9dd60666862b745 +Block 0008 [ 95]: d19216d3b85289b2 +Block 0008 [ 96]: a9d0aabe8fb0372c +Block 0008 [ 97]: be4b2f13878b6352 +Block 0008 [ 98]: 34e617f56db7b896 +Block 0008 [ 99]: d4805ff266e25b86 +Block 0008 [100]: 1a5a5256713b4124 +Block 0008 [101]: 86522d688fdd84bd +Block 0008 [102]: 7aa5fd0f76300aa4 +Block 0008 [103]: a8d4aa55e2b89413 +Block 0008 [104]: 0a998b3dc3bf2286 +Block 0008 [105]: 23b251906b5d1e24 +Block 0008 [106]: 21343137b70583fb +Block 0008 [107]: cc7d731a0ce049fb +Block 0008 [108]: d9832268500fba4c +Block 0008 [109]: cd23dae93244b015 +Block 0008 [110]: 97d872af6b818e31 +Block 0008 [111]: 50334b1da8bc7bcc +Block 0008 [112]: 2e490372855964ab +Block 0008 [113]: f982b1ac2b70bcb6 +Block 0008 [114]: d2bc8ddd5b404223 +Block 0008 [115]: 662e20f88734c872 +Block 0008 [116]: 3a803c69c553cc66 +Block 0008 [117]: ee233774c332dfc5 +Block 0008 [118]: e2e869ba8cdc3903 +Block 0008 [119]: e1664fc0d03b347b +Block 0008 [120]: ad772ab8bc1bf39c +Block 0008 [121]: 08dcd88f94d043f1 +Block 0008 [122]: 9fe0e02801d766f7 +Block 0008 [123]: 97308e7df7cfdadf +Block 0008 [124]: 49652ba3d55c20cf +Block 0008 [125]: 90e173da7f1ed0bc +Block 0008 [126]: cf9ed0890c4db7bc +Block 0008 [127]: 7e19886a294ac8db +Block 0009 [ 0]: 09f17821e07e1488 +Block 0009 [ 1]: 0554c6983ae28b5d +Block 0009 [ 2]: 8ee2caa35450bbad +Block 0009 [ 3]: 01c4a311d85f2003 +Block 0009 [ 4]: 47abed6fae824a3a +Block 0009 [ 5]: dab8aa500bb36756 +Block 0009 [ 6]: 3c423358682ce690 +Block 0009 [ 7]: fc56cd8481c94c36 +Block 0009 [ 8]: 9bcd7052c2c57813 +Block 0009 [ 9]: 3176b04677072ef9 +Block 0009 [ 10]: 0e40514b0f205bc4 +Block 0009 [ 11]: 5cfaf5cda95b5e0a +Block 0009 [ 12]: 9178402699e0f83c +Block 0009 [ 13]: 6352ff0713d6ece0 +Block 0009 [ 14]: 5b51c880851011ce +Block 0009 [ 15]: d70b2cbcb65a0f17 +Block 0009 [ 16]: 0bf009b67d4c8d93 +Block 0009 [ 17]: 6b1aafe855552a0a +Block 0009 [ 18]: e5eec0f59e9b4d80 +Block 0009 [ 19]: f90e33441caf7aca +Block 0009 [ 20]: f214ea315a60a5f6 +Block 0009 [ 21]: 0fd7c5216bc8ebed +Block 0009 [ 22]: 9722d73114abecbc +Block 0009 [ 23]: e009b1ef945a8936 +Block 0009 [ 24]: db081479f27340b0 +Block 0009 [ 25]: e2de9dffd79edb4e +Block 0009 [ 26]: 2cc6c9f0fd511465 +Block 0009 [ 27]: 3b5333ee1d8a2224 +Block 0009 [ 28]: 44e8af9a7430f239 +Block 0009 [ 29]: 9750f732ae9076a0 +Block 0009 [ 30]: 36b3884c52b1af6e +Block 0009 [ 31]: e348d29ed7a38013 +Block 0009 [ 32]: 19f6e8d1091eabbf +Block 0009 [ 33]: fb504d067a79ee87 +Block 0009 [ 34]: dc0ba069d7b9931a +Block 0009 [ 35]: 1709287edac154ce +Block 0009 [ 36]: d2617168f799c765 +Block 0009 [ 37]: bee76e43b816db93 +Block 0009 [ 38]: 08220ebdd94c3483 +Block 0009 [ 39]: e4c3aeba402c8638 +Block 0009 [ 40]: d860d8f3168e0eb6 +Block 0009 [ 41]: 8c706849ef5d2401 +Block 0009 [ 42]: 6d4c71aaaf0a530a +Block 0009 [ 43]: 6d1bc6e62a4c7a30 +Block 0009 [ 44]: 726e724258001102 +Block 0009 [ 45]: 380d272cdda1e903 +Block 0009 [ 46]: 9847d7ed2c1c338f +Block 0009 [ 47]: a200ae61c442cc25 +Block 0009 [ 48]: 815db01a7abec286 +Block 0009 [ 49]: fba18c65c3a93858 +Block 0009 [ 50]: fcf116b5e2222869 +Block 0009 [ 51]: 7508f3f16631617c +Block 0009 [ 52]: b52195f06b14bdf0 +Block 0009 [ 53]: 8a06e98b5b5b613a +Block 0009 [ 54]: 49422e71e2234817 +Block 0009 [ 55]: 8de98eea443a260c +Block 0009 [ 56]: 5136fc901d80e8f3 +Block 0009 [ 57]: a8c7dbb57a73b022 +Block 0009 [ 58]: ba64ee6d819d2f3f +Block 0009 [ 59]: 13b3e12f58c43960 +Block 0009 [ 60]: 48192ef6f55be023 +Block 0009 [ 61]: c04ec3cea66c260c +Block 0009 [ 62]: eaf4df200430c2c4 +Block 0009 [ 63]: c1330fc0dda60a8f +Block 0009 [ 64]: e2c7288214e2c0b9 +Block 0009 [ 65]: 45445f674fc36f02 +Block 0009 [ 66]: 399650904d856e33 +Block 0009 [ 67]: 6f521e3ce0776e50 +Block 0009 [ 68]: 90c29418e38f5286 +Block 0009 [ 69]: 33539205795b2e63 +Block 0009 [ 70]: aa12f6a11f38ef2c +Block 0009 [ 71]: 19e8c3ee38fca760 +Block 0009 [ 72]: 9915a4b915d55aef +Block 0009 [ 73]: c9378ab272fc0be3 +Block 0009 [ 74]: 9d6658d8a490556d +Block 0009 [ 75]: 8ac8734763fcf96a +Block 0009 [ 76]: 958fc74e8fe74cb5 +Block 0009 [ 77]: ff88ff2708eaccad +Block 0009 [ 78]: 340b5e67653d2214 +Block 0009 [ 79]: d1518d5a212ed742 +Block 0009 [ 80]: f6035f27a7435d1c +Block 0009 [ 81]: 3df889579023879e +Block 0009 [ 82]: bc2cb961e5e0cd29 +Block 0009 [ 83]: 06844112e407e60b +Block 0009 [ 84]: 598dc02a9a0428b9 +Block 0009 [ 85]: ca1cf5e0d56f7662 +Block 0009 [ 86]: 26db48300084fa3c +Block 0009 [ 87]: 575426242bc7e8a0 +Block 0009 [ 88]: 32982bb40322f4f2 +Block 0009 [ 89]: 8e24407528115daf +Block 0009 [ 90]: 956edfaf67d87ae3 +Block 0009 [ 91]: 1b2f925a514bcc53 +Block 0009 [ 92]: b3355bd8dda18359 +Block 0009 [ 93]: a44ea31b9e7b6365 +Block 0009 [ 94]: 9a31090deb917e2a +Block 0009 [ 95]: 0bacdf86671a9864 +Block 0009 [ 96]: 157ea61ef1e8b98e +Block 0009 [ 97]: a3b2090dcdaed2c6 +Block 0009 [ 98]: 9a894301b2305c71 +Block 0009 [ 99]: e39b034c47a9c2cb +Block 0009 [100]: 19f37631d9364cc9 +Block 0009 [101]: 482137d0abe23a00 +Block 0009 [102]: f74577849b6b85b3 +Block 0009 [103]: d4b3699288d88fbe +Block 0009 [104]: 24e2f75d49900d15 +Block 0009 [105]: d03357e4681ffbe6 +Block 0009 [106]: 3bf863ce22c7b264 +Block 0009 [107]: 09e48b1c12a8e22a +Block 0009 [108]: 5ecedc63d6d4fdae +Block 0009 [109]: d4152d6ad81f7f49 +Block 0009 [110]: ec521ae1d465e34d +Block 0009 [111]: 1cf63c849f966159 +Block 0009 [112]: bbe8f99053e9c272 +Block 0009 [113]: 22c8313fcdf6dd2b +Block 0009 [114]: 5a33b67ef927a384 +Block 0009 [115]: 45eb429e89648b5e +Block 0009 [116]: 6a70eebb130273bb +Block 0009 [117]: 279d1b9a1c92987a +Block 0009 [118]: 8e87f531707bad10 +Block 0009 [119]: e28fb73bc2645dcb +Block 0009 [120]: e101cbcb663ae481 +Block 0009 [121]: e13638603439422f +Block 0009 [122]: 31ab2be0b269b032 +Block 0009 [123]: 94ed21ee47b10cad +Block 0009 [124]: f870cdcc24169da9 +Block 0009 [125]: 36d7d00fdf82170d +Block 0009 [126]: 3803dacdc76a154e +Block 0009 [127]: 977e4fa3ffa1fce6 +Block 0010 [ 0]: 2cd2736a0c31ac9d +Block 0010 [ 1]: dcc65d317a7255b8 +Block 0010 [ 2]: d0b0e18c3e5a8ced +Block 0010 [ 3]: 472d60d4c41fa394 +Block 0010 [ 4]: 6f37e1f6c0e9cfb4 +Block 0010 [ 5]: d5d419fe7c4458a5 +Block 0010 [ 6]: 5fca139c0b7b7e73 +Block 0010 [ 7]: 3580da18ec70231e +Block 0010 [ 8]: d33560fda3ebfb80 +Block 0010 [ 9]: 43ecf3f017da5852 +Block 0010 [ 10]: 42875a570ead27c0 +Block 0010 [ 11]: a34885ed7ee14e47 +Block 0010 [ 12]: 7d6d2f6dcb52a0c2 +Block 0010 [ 13]: 784941bde6ce9680 +Block 0010 [ 14]: caf67a8b7846409b +Block 0010 [ 15]: 0626914ae112efce +Block 0010 [ 16]: aea97d1be487d29c +Block 0010 [ 17]: 74db6aa3ab481fde +Block 0010 [ 18]: b75f913dc34d0736 +Block 0010 [ 19]: 276708b32e055bef +Block 0010 [ 20]: c13113ed4225fdcd +Block 0010 [ 21]: 25f85027d97a3a99 +Block 0010 [ 22]: bde953054d7c7005 +Block 0010 [ 23]: 6efb2749e94eb5f1 +Block 0010 [ 24]: b24b2abb0bd4d463 +Block 0010 [ 25]: 965b9abee3eec977 +Block 0010 [ 26]: 4fc350cecc888839 +Block 0010 [ 27]: d46aed5e86aee3a5 +Block 0010 [ 28]: eeb73b706839f597 +Block 0010 [ 29]: 54e359783ca6afcb +Block 0010 [ 30]: 07981e7399d2a1e4 +Block 0010 [ 31]: 3f6a165af1041a1a +Block 0010 [ 32]: 9211fb454c73bee6 +Block 0010 [ 33]: 54601d385755903a +Block 0010 [ 34]: cbe9cd78be150f78 +Block 0010 [ 35]: 71dd09ef23a29059 +Block 0010 [ 36]: 076ea4fd1ca5e7bf +Block 0010 [ 37]: 878b5d6b4b5e4f24 +Block 0010 [ 38]: 30dbe4a9a1fee881 +Block 0010 [ 39]: eab7308f1f869ef9 +Block 0010 [ 40]: f166aa28a9230046 +Block 0010 [ 41]: e0a76678b27c054e +Block 0010 [ 42]: 4214eb3dbe411aab +Block 0010 [ 43]: 7f1f277a3838c0bb +Block 0010 [ 44]: a1c1fbad31bf29bc +Block 0010 [ 45]: df12890cbd39bb6b +Block 0010 [ 46]: ad1db3698cbb8a59 +Block 0010 [ 47]: 5d19cf1c7323e374 +Block 0010 [ 48]: f027c256ee46d7a9 +Block 0010 [ 49]: 931057e2d0031fc0 +Block 0010 [ 50]: abae826e0949155a +Block 0010 [ 51]: 12b61077f83a110e +Block 0010 [ 52]: a441fb7eb8bded8f +Block 0010 [ 53]: eafca6ccb9ca3b45 +Block 0010 [ 54]: d21d577c96969983 +Block 0010 [ 55]: 84ca9a33efb36cc3 +Block 0010 [ 56]: 4b7aab67b2056e06 +Block 0010 [ 57]: 5f5c3987109e8148 +Block 0010 [ 58]: 5ac22f97baac7ee6 +Block 0010 [ 59]: ccde1c3d416b0a2b +Block 0010 [ 60]: d058c4af79ae2615 +Block 0010 [ 61]: e7cf10480cc90823 +Block 0010 [ 62]: 423f4c0f01616a13 +Block 0010 [ 63]: 5dfbcaf113167b33 +Block 0010 [ 64]: 7246e0389e71b4be +Block 0010 [ 65]: e5ed12c82501482c +Block 0010 [ 66]: b76896f90ab7ca0a +Block 0010 [ 67]: d64da0fa30ddb24f +Block 0010 [ 68]: c576b92ebf881110 +Block 0010 [ 69]: 7f95954959d11974 +Block 0010 [ 70]: 2ab42627d90c8ba2 +Block 0010 [ 71]: 40547841497f36f8 +Block 0010 [ 72]: eb3f2ad272f78ec1 +Block 0010 [ 73]: 22b73352e10f41ae +Block 0010 [ 74]: 90d25ab70e6314c6 +Block 0010 [ 75]: 23a3e76a227e11ba +Block 0010 [ 76]: a29fdd5f72e3706b +Block 0010 [ 77]: 0062d09724e9f921 +Block 0010 [ 78]: ff10f4c4b92fc872 +Block 0010 [ 79]: 6d032244533214f8 +Block 0010 [ 80]: ebaa8e53dbb544e9 +Block 0010 [ 81]: 3dfcfb35ce8415fc +Block 0010 [ 82]: a1db26743136be25 +Block 0010 [ 83]: 08da5ebe546aa00a +Block 0010 [ 84]: 328ff22d9350a5b0 +Block 0010 [ 85]: c90d2a256453e3c7 +Block 0010 [ 86]: c20d55b299a46cc3 +Block 0010 [ 87]: 76f774e1da4ed025 +Block 0010 [ 88]: 9d16640a64b2a68d +Block 0010 [ 89]: 49c4888454b71b63 +Block 0010 [ 90]: 68877f13347ae22a +Block 0010 [ 91]: 6e4c2912cc08f132 +Block 0010 [ 92]: d782009fb171ef5f +Block 0010 [ 93]: 55a323816326dec3 +Block 0010 [ 94]: 49ef50ca0e06e7fb +Block 0010 [ 95]: f121a1f5e771d82a +Block 0010 [ 96]: e1674249ba7eb13f +Block 0010 [ 97]: a4e34d3547a55437 +Block 0010 [ 98]: 1efabf15dd59ca9e +Block 0010 [ 99]: 38035e0f6d953c25 +Block 0010 [100]: 61c54328b018e179 +Block 0010 [101]: 5c8acc1033e41bd7 +Block 0010 [102]: cb0590ec61f7547f +Block 0010 [103]: f16395274831b1d4 +Block 0010 [104]: 2cd896877bc900c9 +Block 0010 [105]: 6e89957d98c368db +Block 0010 [106]: 1bde150709223401 +Block 0010 [107]: f53b7684c366a59a +Block 0010 [108]: 05f7a3c51c6fa561 +Block 0010 [109]: 1c79ecc5c88f4294 +Block 0010 [110]: 43401ccb858beb97 +Block 0010 [111]: b1ff788ac449a9bc +Block 0010 [112]: afc78a2a7b2f8df7 +Block 0010 [113]: 5c4be1d58dcb21d6 +Block 0010 [114]: fbf8923851ea390f +Block 0010 [115]: ad469cac1beb1c25 +Block 0010 [116]: 440f0a4b28b9857c +Block 0010 [117]: 2237d018e37b09cc +Block 0010 [118]: 04e3b98e10c07b8d +Block 0010 [119]: 40cc39ec5451fd13 +Block 0010 [120]: 9ddda8cba4ba5cca +Block 0010 [121]: 1780b1d3fc89c520 +Block 0010 [122]: 41a26a9570784453 +Block 0010 [123]: 294f98302d4dcb1f +Block 0010 [124]: a738b915d18269f7 +Block 0010 [125]: 31ca696d21c1e964 +Block 0010 [126]: 262a41789e59e5e8 +Block 0010 [127]: 6ec7d6dba9d819a1 +Block 0011 [ 0]: 0f6421dd331b68b8 +Block 0011 [ 1]: 9413d7c0380a4d33 +Block 0011 [ 2]: 6b45410505eff308 +Block 0011 [ 3]: a6f16907b9695bb4 +Block 0011 [ 4]: aa1748d117d465d1 +Block 0011 [ 5]: 01f4898f474f9d23 +Block 0011 [ 6]: 75723750b635c9ac +Block 0011 [ 7]: af079cf715419ac9 +Block 0011 [ 8]: aa83ee3d9d07606d +Block 0011 [ 9]: 4747e13ef6d298bf +Block 0011 [ 10]: 20a2ade15d33fc37 +Block 0011 [ 11]: 42e60057b83fb44e +Block 0011 [ 12]: ee98b76ec63deffc +Block 0011 [ 13]: 419e5830efe4e409 +Block 0011 [ 14]: 76b6283fdc169e13 +Block 0011 [ 15]: 46e3a31e70abd7cf +Block 0011 [ 16]: c884f047bad0bf39 +Block 0011 [ 17]: 791c979423d7c3a2 +Block 0011 [ 18]: 9782203d7c5362c1 +Block 0011 [ 19]: 061473dc9597fdb4 +Block 0011 [ 20]: 5b1ea358780aaa6b +Block 0011 [ 21]: d299edc50d5d3e96 +Block 0011 [ 22]: 060bb17f50a3894d +Block 0011 [ 23]: 6310b765febd6abc +Block 0011 [ 24]: 6e1ea1dc10032c2b +Block 0011 [ 25]: 650e5f41f0f2a992 +Block 0011 [ 26]: 86b0974ac30a726e +Block 0011 [ 27]: 8e07f730a4d9fb09 +Block 0011 [ 28]: b298d0f2abc1e051 +Block 0011 [ 29]: 1c97e22a82872845 +Block 0011 [ 30]: 3c7afb67a01d9fbf +Block 0011 [ 31]: f97947fe02896866 +Block 0011 [ 32]: 64ddd9338e040673 +Block 0011 [ 33]: ca32b60af15430d0 +Block 0011 [ 34]: ac82cf7952571c60 +Block 0011 [ 35]: e49b241ed1479725 +Block 0011 [ 36]: 94d8bd284469e7f4 +Block 0011 [ 37]: 3cd12e6ac8f2908d +Block 0011 [ 38]: 86b4b6a7ee8cb8ea +Block 0011 [ 39]: 66ac6958355ce1cd +Block 0011 [ 40]: f0386d92899099d0 +Block 0011 [ 41]: ae778abc76351811 +Block 0011 [ 42]: 1debb933e04038ee +Block 0011 [ 43]: d2c247b52435f51d +Block 0011 [ 44]: f472cc4452e1ba9d +Block 0011 [ 45]: 715d658a7579e3b6 +Block 0011 [ 46]: 3468752ad88c0800 +Block 0011 [ 47]: 5d734fd451962958 +Block 0011 [ 48]: 8f3cae63cc94fbd1 +Block 0011 [ 49]: 0ed93eeb2a695b7f +Block 0011 [ 50]: 538bff2fe68fb26d +Block 0011 [ 51]: 535f13594389cc58 +Block 0011 [ 52]: 016c66a1fa857ada +Block 0011 [ 53]: 8167376a56a3ffe8 +Block 0011 [ 54]: 05d622a6c5d7ccc4 +Block 0011 [ 55]: 99582c4d66b60ec5 +Block 0011 [ 56]: 8eefee640a12d44c +Block 0011 [ 57]: 0d65ce7b71a01dbd +Block 0011 [ 58]: 68c10cdeb6fb7df3 +Block 0011 [ 59]: 427cf7bd7b9d8de3 +Block 0011 [ 60]: 81a91f6e0691e347 +Block 0011 [ 61]: 25bdf7508bdff3eb +Block 0011 [ 62]: 8921ddc40ad9116a +Block 0011 [ 63]: c3b1b8a27d0f423d +Block 0011 [ 64]: ccdbdc89c8597ada +Block 0011 [ 65]: ecb2e8b2e7a8029a +Block 0011 [ 66]: 1bf60102f57e1d60 +Block 0011 [ 67]: c83a409a09df2a59 +Block 0011 [ 68]: 42651a751bd12911 +Block 0011 [ 69]: c61a61ba19ef7d31 +Block 0011 [ 70]: 4350de115dfc549e +Block 0011 [ 71]: 53029cf951569652 +Block 0011 [ 72]: e6596db8f557adc6 +Block 0011 [ 73]: e3e97f2eb8d1f70d +Block 0011 [ 74]: 373826b668131e1d +Block 0011 [ 75]: 741d95fcdb504062 +Block 0011 [ 76]: 2d8f911340f42f6a +Block 0011 [ 77]: 4474f5c71c4bc0fb +Block 0011 [ 78]: b4c4237d4433fb15 +Block 0011 [ 79]: ad8293c1e42fb43f +Block 0011 [ 80]: ed72954da0ad7fdf +Block 0011 [ 81]: e3ae9b0886c8d0b0 +Block 0011 [ 82]: 48d24c36990ec552 +Block 0011 [ 83]: 7f4da5fc0275065d +Block 0011 [ 84]: 2c1b31339565a745 +Block 0011 [ 85]: 616eedeac31c2781 +Block 0011 [ 86]: 6d468bbf6faf2dd9 +Block 0011 [ 87]: 59f69b71c6b459d9 +Block 0011 [ 88]: 783e7a635929d6e9 +Block 0011 [ 89]: 87bb13d51620b4c0 +Block 0011 [ 90]: 861e265d55e3b85e +Block 0011 [ 91]: 237cbd385ffd69a1 +Block 0011 [ 92]: 7babcd805ad96950 +Block 0011 [ 93]: ae71fea660d0fe46 +Block 0011 [ 94]: 6b3810a5232a039c +Block 0011 [ 95]: 2e87a630dae147e3 +Block 0011 [ 96]: 9d0fc975282cc88c +Block 0011 [ 97]: 9c35c8dcb1527fd0 +Block 0011 [ 98]: 99acd6a25ed6832a +Block 0011 [ 99]: f800832e202306bc +Block 0011 [100]: 154425c5c3070b92 +Block 0011 [101]: 033363274ed6b05d +Block 0011 [102]: 848069f7be4fa5c0 +Block 0011 [103]: 5d096e92cb952782 +Block 0011 [104]: a5c9710bff476a41 +Block 0011 [105]: 1ce68073e94d5602 +Block 0011 [106]: 123f120f04020240 +Block 0011 [107]: baf32cb1dfec19c4 +Block 0011 [108]: 1fb86ac5927d03da +Block 0011 [109]: 51c31b1882823de3 +Block 0011 [110]: f576c0710e67d98b +Block 0011 [111]: 4d0c15d414d97441 +Block 0011 [112]: bc5c5ee50ce748b6 +Block 0011 [113]: 6ced2e7f71ae5b2e +Block 0011 [114]: 6f029d91e0b73516 +Block 0011 [115]: 994dbd69f5b63c41 +Block 0011 [116]: ae45ee977791b483 +Block 0011 [117]: d7648f8fa1274743 +Block 0011 [118]: a6ff2d48dc1038f9 +Block 0011 [119]: e0b8353327619fc0 +Block 0011 [120]: ab88d74f0f3fbb52 +Block 0011 [121]: 6405b628531b4e3f +Block 0011 [122]: 8107aad4c2445a1c +Block 0011 [123]: 7af51bc5013db8c3 +Block 0011 [124]: 3b11a69b3cafd3d7 +Block 0011 [125]: 99c8791112918afc +Block 0011 [126]: e40140d75b01ebd2 +Block 0011 [127]: 421f17c323b1999a +Block 0012 [ 0]: 57b45e2155eb09a6 +Block 0012 [ 1]: e4c2f41f5c9422d1 +Block 0012 [ 2]: 805fc558ad63876c +Block 0012 [ 3]: f20bc926472e526a +Block 0012 [ 4]: 9cb136333a7f408b +Block 0012 [ 5]: f56a257cf12bd95a +Block 0012 [ 6]: 73677f0919085ceb +Block 0012 [ 7]: ec308986d1942ad1 +Block 0012 [ 8]: 67797afdca9d0e01 +Block 0012 [ 9]: 3d9eda562601b379 +Block 0012 [ 10]: 05841d4e15c878d8 +Block 0012 [ 11]: 305f2848b06d57ba +Block 0012 [ 12]: caa5f6f7a0a27afd +Block 0012 [ 13]: 62953adc90c85900 +Block 0012 [ 14]: da34c2d07a919662 +Block 0012 [ 15]: f4e763cabfaefb12 +Block 0012 [ 16]: 134b35d39509ea42 +Block 0012 [ 17]: 6bdedb78e7034c61 +Block 0012 [ 18]: 59a488e36bbedcc7 +Block 0012 [ 19]: 4a1e6deab9ba69f6 +Block 0012 [ 20]: 41302fa4cd7d9d2c +Block 0012 [ 21]: c6e1a3e3382aaa5e +Block 0012 [ 22]: 6fb61a14363537ed +Block 0012 [ 23]: d037afec313500fa +Block 0012 [ 24]: be19c63a67ced569 +Block 0012 [ 25]: 7927ca951ae66c45 +Block 0012 [ 26]: 377278d9c42dfce2 +Block 0012 [ 27]: d094448fc4dca475 +Block 0012 [ 28]: 8fe33e63b5464cd7 +Block 0012 [ 29]: 534c6bfd73b1664d +Block 0012 [ 30]: 2349185e29a74d3e +Block 0012 [ 31]: 874af27d7ebfefc3 +Block 0012 [ 32]: f3db4272da3cb08d +Block 0012 [ 33]: 07adcb591bf14309 +Block 0012 [ 34]: 4bdbafae807c3807 +Block 0012 [ 35]: fa27aa7f5667425b +Block 0012 [ 36]: 471d38e55b583a78 +Block 0012 [ 37]: 96f6c0c0a1240588 +Block 0012 [ 38]: 75401db0a1c25736 +Block 0012 [ 39]: 1398216942c7c35c +Block 0012 [ 40]: 5343467b1ae7b457 +Block 0012 [ 41]: fa32b8553f7446c2 +Block 0012 [ 42]: c2c850718c009070 +Block 0012 [ 43]: 366dfd2bc6951ed0 +Block 0012 [ 44]: 5bb3d45dc4af7ae8 +Block 0012 [ 45]: b085e329d6294897 +Block 0012 [ 46]: a95768badd7960f6 +Block 0012 [ 47]: 80413c11bd367b42 +Block 0012 [ 48]: 5a9807a2c57b5fcd +Block 0012 [ 49]: d2a9b8e1d8d0e483 +Block 0012 [ 50]: b0465723a123b002 +Block 0012 [ 51]: 1bcf94c7e694c4fb +Block 0012 [ 52]: 92423c23eb077412 +Block 0012 [ 53]: 3932c2fbba7db8d4 +Block 0012 [ 54]: 5b3bccb0b9cf3829 +Block 0012 [ 55]: b29df488af3b7740 +Block 0012 [ 56]: 0b9538420af6f746 +Block 0012 [ 57]: 4bd159e8c22fceba +Block 0012 [ 58]: 1b772f85b3153005 +Block 0012 [ 59]: dcb156af6d11d4e6 +Block 0012 [ 60]: 58156afd7dc41c29 +Block 0012 [ 61]: 7d3b2509e63033d5 +Block 0012 [ 62]: 6f1c580bb2f3d9b1 +Block 0012 [ 63]: c6c37c1d6eb4daee +Block 0012 [ 64]: cfeb8d6cb8866495 +Block 0012 [ 65]: dd17d3852ed6a6e8 +Block 0012 [ 66]: e41c7e41f538dbe7 +Block 0012 [ 67]: 5768bf57b3a5ed86 +Block 0012 [ 68]: 78046e27e202f6aa +Block 0012 [ 69]: a3e201aefc301b70 +Block 0012 [ 70]: 50a0d5a4a91b8af4 +Block 0012 [ 71]: a5e559a8a6c437d6 +Block 0012 [ 72]: fac6cd8e65d46ff9 +Block 0012 [ 73]: 0d9fa685d3eb2111 +Block 0012 [ 74]: 9623a5bd74bbf9df +Block 0012 [ 75]: cc8c1640de946f03 +Block 0012 [ 76]: 45895a3b3b44202b +Block 0012 [ 77]: fc89b3976c685cdc +Block 0012 [ 78]: cd752649ff454671 +Block 0012 [ 79]: 93772ab678e8e9ca +Block 0012 [ 80]: 298a19530983c336 +Block 0012 [ 81]: de1d36ad501353d6 +Block 0012 [ 82]: dd964f96de8650e4 +Block 0012 [ 83]: 25ae2833905c7023 +Block 0012 [ 84]: 519edf230c5711f2 +Block 0012 [ 85]: 256dc6f35b268020 +Block 0012 [ 86]: 9e3b5315d2df8c07 +Block 0012 [ 87]: a492a2843836e071 +Block 0012 [ 88]: b93bcf95d01975d9 +Block 0012 [ 89]: 48db0c4bc87eff40 +Block 0012 [ 90]: 2d78c22e82fdba57 +Block 0012 [ 91]: 39d7e857cd35e0ce +Block 0012 [ 92]: 41482071123589ac +Block 0012 [ 93]: b8d24d5a6203255f +Block 0012 [ 94]: cb4c0f936f2ae1ac +Block 0012 [ 95]: cc2c6d7046f20ea6 +Block 0012 [ 96]: 611bb8e43b69c470 +Block 0012 [ 97]: cb76f40096c7a527 +Block 0012 [ 98]: 041160b6d87e85b3 +Block 0012 [ 99]: 14a808513a59ddeb +Block 0012 [100]: 3146e51118b5d3f0 +Block 0012 [101]: a4d48814108462aa +Block 0012 [102]: b09a74a839ffd0e3 +Block 0012 [103]: 41887c72e8ecefac +Block 0012 [104]: a39e60aca9f9c1c6 +Block 0012 [105]: 94d3fed99796f4c5 +Block 0012 [106]: 915e01be08a71f60 +Block 0012 [107]: 5bc9a224b7417179 +Block 0012 [108]: 9b5ea49fadf9ea41 +Block 0012 [109]: b5734c9ea85c13c6 +Block 0012 [110]: 3ddc1878140e662e +Block 0012 [111]: 62878bb723c8e92c +Block 0012 [112]: 8d25065038213031 +Block 0012 [113]: c0ce352747559d71 +Block 0012 [114]: af42da990cb5f109 +Block 0012 [115]: 8f0854be4578b5a9 +Block 0012 [116]: 52633445299a0dc7 +Block 0012 [117]: 55b95c2c08739647 +Block 0012 [118]: a514cc136aac3485 +Block 0012 [119]: bed4bd5515c62d15 +Block 0012 [120]: bb4dc5594c8bde63 +Block 0012 [121]: 7088341e9ec16414 +Block 0012 [122]: ac9f56158d64d176 +Block 0012 [123]: 8170c10d3291daa2 +Block 0012 [124]: eb1e1b04ccc6ebc5 +Block 0012 [125]: c691cccb6c298e64 +Block 0012 [126]: 28db423772d9387d +Block 0012 [127]: fd201e0664640880 +Block 0013 [ 0]: 00ec39c939db9894 +Block 0013 [ 1]: 4420dfaadbee3c0b +Block 0013 [ 2]: 22cd108c9c63be9d +Block 0013 [ 3]: 20d0476679e15210 +Block 0013 [ 4]: 2dcee690366bb2c1 +Block 0013 [ 5]: a02c85486eb5afb1 +Block 0013 [ 6]: eb947f30e07f57b8 +Block 0013 [ 7]: 39071f737c63767a +Block 0013 [ 8]: 8c6f6c62ab515304 +Block 0013 [ 9]: 76e6e0129fefa947 +Block 0013 [ 10]: 755233c73eaeca92 +Block 0013 [ 11]: 175b46741a8bbd82 +Block 0013 [ 12]: 701ecdbaafa63a3f +Block 0013 [ 13]: f617280a7cb6df16 +Block 0013 [ 14]: ec2232a64ca32ca7 +Block 0013 [ 15]: 30b4d00845ef206b +Block 0013 [ 16]: ba9401ae6e780dce +Block 0013 [ 17]: 5b3e6e06b9a491af +Block 0013 [ 18]: d4fb8f043100e234 +Block 0013 [ 19]: 57e533e169fea374 +Block 0013 [ 20]: 01161771c7a81f08 +Block 0013 [ 21]: 0eefac8dbffd9218 +Block 0013 [ 22]: f23c581ed1df6a37 +Block 0013 [ 23]: 3553c1f8392e6ea8 +Block 0013 [ 24]: 169ae5c8916d1e80 +Block 0013 [ 25]: f7769df26dfc84a0 +Block 0013 [ 26]: acb68b419526eaec +Block 0013 [ 27]: 1291357db928c5cd +Block 0013 [ 28]: 5b6d8961bd429b19 +Block 0013 [ 29]: 4ff6515925c988fe +Block 0013 [ 30]: fdca8898314dbe4a +Block 0013 [ 31]: fd36e4c1d14ba7ca +Block 0013 [ 32]: 22009a75e3fc39df +Block 0013 [ 33]: dc7fe86e4949f847 +Block 0013 [ 34]: 59ef8d7b9e7ba1cb +Block 0013 [ 35]: eb72886e925b1acb +Block 0013 [ 36]: 5fad5d3c38006489 +Block 0013 [ 37]: 82dba341d15d2d56 +Block 0013 [ 38]: 05905e9e7ba6a663 +Block 0013 [ 39]: 7f3abe8f31b94ff2 +Block 0013 [ 40]: 3856453ab6d5c126 +Block 0013 [ 41]: 09b5552fc65cd05e +Block 0013 [ 42]: 2722b2ff56ee67fd +Block 0013 [ 43]: 44d9b85865a9b868 +Block 0013 [ 44]: 3090dc42cb77ced4 +Block 0013 [ 45]: 7acf325fabaaa4a8 +Block 0013 [ 46]: f61a814966f6c305 +Block 0013 [ 47]: 5f542e6b87babffc +Block 0013 [ 48]: f0425b7d0f75d5f4 +Block 0013 [ 49]: c5cbf2e60208c5f4 +Block 0013 [ 50]: 5b973edabe0361a2 +Block 0013 [ 51]: 7f5fe5324e325ab8 +Block 0013 [ 52]: ccec55217f3b82b4 +Block 0013 [ 53]: d676cba9ec6dd723 +Block 0013 [ 54]: 05da0d6ac5ecc58e +Block 0013 [ 55]: 6d6272bec3a4b8e8 +Block 0013 [ 56]: af31a6e8e6fb4cb9 +Block 0013 [ 57]: 29f435a830199118 +Block 0013 [ 58]: b9fc088f00f87093 +Block 0013 [ 59]: d68752cc88ab7438 +Block 0013 [ 60]: 8a9efac1e54c242d +Block 0013 [ 61]: 0fbfc535af7c20ff +Block 0013 [ 62]: 2cea3ebba917e008 +Block 0013 [ 63]: 55433086e2f6a6f6 +Block 0013 [ 64]: b0df96ad91c9e607 +Block 0013 [ 65]: 2fd6cfe69c5836f6 +Block 0013 [ 66]: 6c67ba628134d091 +Block 0013 [ 67]: fbd246e6c7e42035 +Block 0013 [ 68]: 651f33a83004fc17 +Block 0013 [ 69]: e1cbf99d4ec8b300 +Block 0013 [ 70]: ebd68429770d021a +Block 0013 [ 71]: 4fa7c8d34bb4ee9c +Block 0013 [ 72]: c6931ce85af3d3be +Block 0013 [ 73]: 287d02f736567dfd +Block 0013 [ 74]: 4df9653cd7145f81 +Block 0013 [ 75]: 3c61284f1698bfff +Block 0013 [ 76]: ccd0ea56458bc87d +Block 0013 [ 77]: dc15ea6cb6c7c8b7 +Block 0013 [ 78]: 9502b9bb7e8ca6e1 +Block 0013 [ 79]: 299464cddd3989db +Block 0013 [ 80]: 16dbe8345daf1e54 +Block 0013 [ 81]: 775459707e99df40 +Block 0013 [ 82]: c2b6e5a6cc36de56 +Block 0013 [ 83]: 9469ef94adebd6aa +Block 0013 [ 84]: e35eef9407cda49b +Block 0013 [ 85]: ddd463c60effea37 +Block 0013 [ 86]: c226c4c1033ae080 +Block 0013 [ 87]: a7f4bfd8c2100edb +Block 0013 [ 88]: ea2510b8c5811c62 +Block 0013 [ 89]: dcd044cdbbdfb940 +Block 0013 [ 90]: 938cc1cbfc8b94b7 +Block 0013 [ 91]: 437bc57fa90a3bbb +Block 0013 [ 92]: 7aa81548d40db03a +Block 0013 [ 93]: f8a292046d2fa796 +Block 0013 [ 94]: f2897d6e468bf8f6 +Block 0013 [ 95]: 901e412b7dc65309 +Block 0013 [ 96]: fb4891cd5a32b7db +Block 0013 [ 97]: 1a60255326e37f8a +Block 0013 [ 98]: 59c7a05cf45dc39a +Block 0013 [ 99]: 1b5b8c8670e944ff +Block 0013 [100]: 47145bf58a812d96 +Block 0013 [101]: 26e8ccd5429be8d0 +Block 0013 [102]: 046f3c2096f6bbc4 +Block 0013 [103]: 8482a9a6df7a65e4 +Block 0013 [104]: 50f04dcaf51f2d3d +Block 0013 [105]: 48d5efc4ddb27a70 +Block 0013 [106]: 2cb4d612eef96b21 +Block 0013 [107]: 7d49b448cca8912e +Block 0013 [108]: 129f7b291b96760f +Block 0013 [109]: 0493b40e6e7f3570 +Block 0013 [110]: 098c8184c1d123d0 +Block 0013 [111]: 8e42072653043cc7 +Block 0013 [112]: 6be95bddd1de01b2 +Block 0013 [113]: e06f858fad85516e +Block 0013 [114]: 43ffbff8f1706507 +Block 0013 [115]: eefd484bb56c691b +Block 0013 [116]: 61b105589d9b338c +Block 0013 [117]: 8e990037df282132 +Block 0013 [118]: 9763cc54d2f2cfc4 +Block 0013 [119]: 56e6c9eb670a2adc +Block 0013 [120]: a212057df0c0f6ea +Block 0013 [121]: f98be4183c32d1af +Block 0013 [122]: 478533919d7eaa3c +Block 0013 [123]: af360d62679b4f94 +Block 0013 [124]: a9acbd9a987da35e +Block 0013 [125]: b122a3845a30bf92 +Block 0013 [126]: a2d07821a856e6b2 +Block 0013 [127]: 04f46f78a0683224 +Block 0014 [ 0]: d0a71e6d68c6aecf +Block 0014 [ 1]: befd296e9a6f7bf7 +Block 0014 [ 2]: eb23e47984363429 +Block 0014 [ 3]: 9b4787767e96a598 +Block 0014 [ 4]: 08abd2c594da070c +Block 0014 [ 5]: 24cce834cf67ad28 +Block 0014 [ 6]: 1b09c6978feb2fc9 +Block 0014 [ 7]: ee90c0baca774d1a +Block 0014 [ 8]: 3708f4a4039a19eb +Block 0014 [ 9]: 0d496aa6634c2540 +Block 0014 [ 10]: 6bc152a0b15b3a2b +Block 0014 [ 11]: d10bfad6b4b43f2c +Block 0014 [ 12]: e96e477855119ddc +Block 0014 [ 13]: 1a544b91b3ce7fbc +Block 0014 [ 14]: cafc0eb55c122d6f +Block 0014 [ 15]: 037d2bc2a0f7530a +Block 0014 [ 16]: 95c2dd7aff0844be +Block 0014 [ 17]: 585ab21fe56d6e98 +Block 0014 [ 18]: 5b904ca8d183d28a +Block 0014 [ 19]: a2448fed9c557e8f +Block 0014 [ 20]: bc185e3656899faa +Block 0014 [ 21]: f4c474da33d146bb +Block 0014 [ 22]: 909b452e8713fe6f +Block 0014 [ 23]: cd9d52c628288b86 +Block 0014 [ 24]: 61e30da08cc69ad7 +Block 0014 [ 25]: 05e27f3a2c9cab56 +Block 0014 [ 26]: 4f6ce1ac6e1ae127 +Block 0014 [ 27]: a8f7e36d3e33f1f3 +Block 0014 [ 28]: b71335ed65487cce +Block 0014 [ 29]: 6ab069bebe4243a7 +Block 0014 [ 30]: 619ede30c4ef2624 +Block 0014 [ 31]: 692a41b133b0675f +Block 0014 [ 32]: 00215d331c4ce791 +Block 0014 [ 33]: f80accc7ba9eacd3 +Block 0014 [ 34]: 66c0e64361080502 +Block 0014 [ 35]: 561863112c28976f +Block 0014 [ 36]: 38d087594c680141 +Block 0014 [ 37]: 3fa2c7b0be344d66 +Block 0014 [ 38]: f3f51a71ee9ca468 +Block 0014 [ 39]: 95f467cf50cc8fc3 +Block 0014 [ 40]: d4a888b561d86fb0 +Block 0014 [ 41]: de87bb7e76a0dd0a +Block 0014 [ 42]: 61a14fb5723e3c91 +Block 0014 [ 43]: bfeb22754475e5e8 +Block 0014 [ 44]: f0b89172e3f1bc5b +Block 0014 [ 45]: d98d5b096ea38b76 +Block 0014 [ 46]: b6b790d56ab53d4c +Block 0014 [ 47]: 5ffd1be544675851 +Block 0014 [ 48]: 87b87fa919bd7fa7 +Block 0014 [ 49]: c478617f8f272678 +Block 0014 [ 50]: fb8fe0c3f64a0ccf +Block 0014 [ 51]: 8b551243e6d9382d +Block 0014 [ 52]: e1f38e5d1b03713e +Block 0014 [ 53]: e745fd4b6020c5f6 +Block 0014 [ 54]: 16f084e01fbc7f76 +Block 0014 [ 55]: fb9d312f55c899d4 +Block 0014 [ 56]: 380ceef8173536a8 +Block 0014 [ 57]: ed8d72a941db2c19 +Block 0014 [ 58]: 4002123ba862890e +Block 0014 [ 59]: 8a04fb41a64f5768 +Block 0014 [ 60]: fc1e9a8656875926 +Block 0014 [ 61]: f786b160707ffa14 +Block 0014 [ 62]: 987cf0bd188183ec +Block 0014 [ 63]: dcf2fe8c41728578 +Block 0014 [ 64]: f7e5aca070f4b430 +Block 0014 [ 65]: 96eb8b8b4d8cf4c8 +Block 0014 [ 66]: 866d2f63f3029682 +Block 0014 [ 67]: 2047180121f91c40 +Block 0014 [ 68]: 348ef39663476deb +Block 0014 [ 69]: fac01230e6089aba +Block 0014 [ 70]: 89f17de15e72ebe2 +Block 0014 [ 71]: 36e1d38205fa23f2 +Block 0014 [ 72]: 29faa8623e80e6ae +Block 0014 [ 73]: 76a33f8dc35f3290 +Block 0014 [ 74]: 1937ab138d449122 +Block 0014 [ 75]: e2aa81e221944c31 +Block 0014 [ 76]: fae8a6eab442f6af +Block 0014 [ 77]: 96a75c5ecae96184 +Block 0014 [ 78]: bbba5f15491b96a7 +Block 0014 [ 79]: 3dac0a6277186f87 +Block 0014 [ 80]: 2d026ceb7958bc42 +Block 0014 [ 81]: 2f5fcb9728eb62ce +Block 0014 [ 82]: 555e861c60727892 +Block 0014 [ 83]: 75daea44d6cbaa81 +Block 0014 [ 84]: b24c44f14fc25965 +Block 0014 [ 85]: 857b89408e44d277 +Block 0014 [ 86]: eca4d2d1efa199a3 +Block 0014 [ 87]: 33088d7ed812412e +Block 0014 [ 88]: 0263a5d914d3b296 +Block 0014 [ 89]: 83a093e24510f6f6 +Block 0014 [ 90]: aa67ef4b716938f7 +Block 0014 [ 91]: 6e7b4232ff800496 +Block 0014 [ 92]: 4297489b99c5964b +Block 0014 [ 93]: 9153dd490c532185 +Block 0014 [ 94]: 103733d2498559da +Block 0014 [ 95]: 36fac0d23f9ea533 +Block 0014 [ 96]: d736564ae0dda60d +Block 0014 [ 97]: abed530c0d96db44 +Block 0014 [ 98]: 266962ee099dcd61 +Block 0014 [ 99]: 6f3940d172461d85 +Block 0014 [100]: 731737d40a0b355f +Block 0014 [101]: f72f0c4d4441d25c +Block 0014 [102]: bec49deeb8ef1984 +Block 0014 [103]: d0859ff42db3710e +Block 0014 [104]: 99ff2ce81eb466c5 +Block 0014 [105]: ee5306c14d628890 +Block 0014 [106]: 40ea0b4fd6716f3d +Block 0014 [107]: b7c4ac4c8d4332a9 +Block 0014 [108]: a597ac3013e292c7 +Block 0014 [109]: da6fbb8fcc6b97a1 +Block 0014 [110]: f10c43f6c9e5ccd3 +Block 0014 [111]: 5b47d9496ff528ed +Block 0014 [112]: 91acaa483333c642 +Block 0014 [113]: 1ad7706921b3b8a9 +Block 0014 [114]: d9d2b9b18576072e +Block 0014 [115]: 210a8f3abe9db6b5 +Block 0014 [116]: ca41fc26bb135d0a +Block 0014 [117]: 384e457b4d13f8d8 +Block 0014 [118]: de698e11114e709d +Block 0014 [119]: 816dd5eebeca22c8 +Block 0014 [120]: 239a7c8bb28894fd +Block 0014 [121]: 6aba2b3bed305bdd +Block 0014 [122]: 668ccac32780f6e0 +Block 0014 [123]: 021c76c0b0d47e7f +Block 0014 [124]: 4b5939ee4c221e0f +Block 0014 [125]: e80bcb585f7ccc31 +Block 0014 [126]: 684c34269fa69d57 +Block 0014 [127]: 6051e4b2d171b880 +Block 0015 [ 0]: 923f88bc8b5c3f52 +Block 0015 [ 1]: 578d8d59d1604075 +Block 0015 [ 2]: 8db95b3e67603af3 +Block 0015 [ 3]: aeea5af3a1f5ebe4 +Block 0015 [ 4]: 669c71c88c1b0c60 +Block 0015 [ 5]: 03f5e673d2527562 +Block 0015 [ 6]: b0848a843a9482bb +Block 0015 [ 7]: afbb02cefb95a4d7 +Block 0015 [ 8]: b7e5388eeb15745d +Block 0015 [ 9]: 588e578329ef8f4e +Block 0015 [ 10]: 2caddb62b1e9c5d6 +Block 0015 [ 11]: 3303a6fbc816f592 +Block 0015 [ 12]: 16737e3f4ed44a71 +Block 0015 [ 13]: a8b076096115662b +Block 0015 [ 14]: 16647f89bd24e716 +Block 0015 [ 15]: d0f259b51d08173f +Block 0015 [ 16]: a5927a2b6b3cf0cf +Block 0015 [ 17]: 3dbd0814a2f17812 +Block 0015 [ 18]: b79afd45fff6c5e5 +Block 0015 [ 19]: 03d017c92f2dcf22 +Block 0015 [ 20]: bf6ec040d37e2e9e +Block 0015 [ 21]: a701255712aec166 +Block 0015 [ 22]: a270f973b6012ccc +Block 0015 [ 23]: a1567cbeec8ddabc +Block 0015 [ 24]: d7c5214c306eae0d +Block 0015 [ 25]: aaec001997c49c8a +Block 0015 [ 26]: cbb52fa37bfd7250 +Block 0015 [ 27]: f7995bb6508a5700 +Block 0015 [ 28]: bd8a678f71474623 +Block 0015 [ 29]: 8452544953085607 +Block 0015 [ 30]: ceae2bf6b80a08a0 +Block 0015 [ 31]: fab325a1606b95b7 +Block 0015 [ 32]: c60c406dc5bc8cf0 +Block 0015 [ 33]: d341ebfa38d4f533 +Block 0015 [ 34]: 29952b959eb7a7cf +Block 0015 [ 35]: 2435ccdb02c1647b +Block 0015 [ 36]: d4d48fdfd42fc50c +Block 0015 [ 37]: 33894bd3e7a843a6 +Block 0015 [ 38]: 931856766f61418f +Block 0015 [ 39]: 155b15cb5f31088a +Block 0015 [ 40]: 36e19042006d6ae4 +Block 0015 [ 41]: 26902564c5616d2d +Block 0015 [ 42]: 3d871267705f550e +Block 0015 [ 43]: 468c267fda5c995e +Block 0015 [ 44]: 0419b87d2e3443a1 +Block 0015 [ 45]: b379cb451c29225f +Block 0015 [ 46]: 15e1d708a734946c +Block 0015 [ 47]: 9457cc9185579480 +Block 0015 [ 48]: ab504b97cc71044e +Block 0015 [ 49]: c63d7adb7bda6984 +Block 0015 [ 50]: 630b7c072eb9859a +Block 0015 [ 51]: c242e7abbe745fb5 +Block 0015 [ 52]: 2b33e28cdde69822 +Block 0015 [ 53]: 5790e885c8928ec9 +Block 0015 [ 54]: b9dc2d755ec7ce01 +Block 0015 [ 55]: 163c9515259b0cc0 +Block 0015 [ 56]: 106cc0c8480f9779 +Block 0015 [ 57]: 2ba3947ecac1e765 +Block 0015 [ 58]: 9d447f56b9396f2e +Block 0015 [ 59]: 89f3ce4303d2d00a +Block 0015 [ 60]: 9a078e49f2a8274b +Block 0015 [ 61]: 81387c0c5d7360e0 +Block 0015 [ 62]: 78682bf4c2a1ed78 +Block 0015 [ 63]: f84c95533b6aee11 +Block 0015 [ 64]: 580a5a9f3738e4f8 +Block 0015 [ 65]: c8d7f364e82ad3de +Block 0015 [ 66]: 5875aba510ec2da2 +Block 0015 [ 67]: 88478a8b3b59dcea +Block 0015 [ 68]: 01547ea51866c827 +Block 0015 [ 69]: afc771726e09e872 +Block 0015 [ 70]: f26b84f1b29a9348 +Block 0015 [ 71]: 303d359c7983a4d8 +Block 0015 [ 72]: eed535f30aefb0e3 +Block 0015 [ 73]: b35dac44826075af +Block 0015 [ 74]: 9ca73ef717f6088d +Block 0015 [ 75]: 35cd92ec0fc882ba +Block 0015 [ 76]: f1cf7a2fb713126f +Block 0015 [ 77]: 6969c74bb3141567 +Block 0015 [ 78]: 9d334636658af1df +Block 0015 [ 79]: 6150b2c859b234f3 +Block 0015 [ 80]: d037be4342803988 +Block 0015 [ 81]: f0da5e16bba7397f +Block 0015 [ 82]: 3790c5cdec48ad9b +Block 0015 [ 83]: 93242fd303780d00 +Block 0015 [ 84]: 2fa1418df86105d7 +Block 0015 [ 85]: 0a44dd03fa02f75b +Block 0015 [ 86]: d48a3861b1e3a969 +Block 0015 [ 87]: 65fd27ced6dc8d8a +Block 0015 [ 88]: b8d911426f028ffe +Block 0015 [ 89]: 3cb6290c59a92c01 +Block 0015 [ 90]: df4bef9b8bb44949 +Block 0015 [ 91]: 4e4b57b894398fde +Block 0015 [ 92]: b55bbdb66340f7fd +Block 0015 [ 93]: 97a871f202f9ce22 +Block 0015 [ 94]: 6be3274e3c7061ad +Block 0015 [ 95]: e251e778d2c93834 +Block 0015 [ 96]: 70c4773d57021e1e +Block 0015 [ 97]: 798995170b281ec9 +Block 0015 [ 98]: f52ff5999ad3eb1e +Block 0015 [ 99]: a237d0e96b97782b +Block 0015 [100]: 1b7c02de9a73e9a9 +Block 0015 [101]: 1ee14242dd56c19c +Block 0015 [102]: 2487022c07200707 +Block 0015 [103]: 0921886a5777e70b +Block 0015 [104]: 3f0efb8959d4b9bf +Block 0015 [105]: 84e1a5aa909ff0f3 +Block 0015 [106]: 1ebf8bb3129f68d1 +Block 0015 [107]: f9b9c60235424d48 +Block 0015 [108]: 76a095cb8fbb24db +Block 0015 [109]: 99db66cf266191e9 +Block 0015 [110]: 66c87dc70f5d5ba8 +Block 0015 [111]: f7444d7763b939e1 +Block 0015 [112]: 858d7c9b41041901 +Block 0015 [113]: 1e89ff599a30d4e1 +Block 0015 [114]: f2f8685605d12f90 +Block 0015 [115]: 099ed67176ce729d +Block 0015 [116]: 8173bec3b6783e38 +Block 0015 [117]: db8b13db63f43ee8 +Block 0015 [118]: 4384ccd8d151b2ca +Block 0015 [119]: a29fbce4bd7b522d +Block 0015 [120]: 8c88929d17922135 +Block 0015 [121]: 3165fa6c0833ba1d +Block 0015 [122]: 02d6b259de6986fe +Block 0015 [123]: 488a4f9ac7f2b3e4 +Block 0015 [124]: 066aa29e0239ad1a +Block 0015 [125]: eefaf94deba147e8 +Block 0015 [126]: 81a56974feab366b +Block 0015 [127]: 0cf0d0f0e9684b43 +Block 0016 [ 0]: a58755fd5aba14e1 +Block 0016 [ 1]: 4bba15d271ff7b86 +Block 0016 [ 2]: 2af24b430abe13dd +Block 0016 [ 3]: fdfc62a4a6465f25 +Block 0016 [ 4]: 0110b3c714fa6324 +Block 0016 [ 5]: 44eaab03c972e7c5 +Block 0016 [ 6]: bab5296e3e127f16 +Block 0016 [ 7]: 221dd2a707de8136 +Block 0016 [ 8]: bae66312a437d33c +Block 0016 [ 9]: 41b70180f3c522cc +Block 0016 [ 10]: 01d87bb602992349 +Block 0016 [ 11]: fa9ec46adc863906 +Block 0016 [ 12]: 55236bf04fcec435 +Block 0016 [ 13]: c2b853f237529a47 +Block 0016 [ 14]: b1b2b7599d8d3389 +Block 0016 [ 15]: 50e07c48ec97fafc +Block 0016 [ 16]: efbc4a65ee24334c +Block 0016 [ 17]: e65f79b3c431511f +Block 0016 [ 18]: 83e3c9ff15b0ad16 +Block 0016 [ 19]: ff122406db689e4d +Block 0016 [ 20]: f724e24cd66a82ba +Block 0016 [ 21]: e96fa8228fe49099 +Block 0016 [ 22]: 1ebcf3357fa22834 +Block 0016 [ 23]: 8706c397861d4952 +Block 0016 [ 24]: d7d2622673c4f5fb +Block 0016 [ 25]: acd59a1abf98b00a +Block 0016 [ 26]: a80d7e6af7bcdd24 +Block 0016 [ 27]: 95e87ac9fd9082fc +Block 0016 [ 28]: e0f922992d427fbb +Block 0016 [ 29]: e67de2dece52c91c +Block 0016 [ 30]: 2353af574cc5d73a +Block 0016 [ 31]: 351ea23270c34b97 +Block 0016 [ 32]: a66303a5404984ed +Block 0016 [ 33]: 62502bd41ad3c8ea +Block 0016 [ 34]: bc0818e328e16211 +Block 0016 [ 35]: 1830d7f7a26ad737 +Block 0016 [ 36]: 0e2e1872ef33a31a +Block 0016 [ 37]: e07e2056add9fe1d +Block 0016 [ 38]: cecb5b5225a9d577 +Block 0016 [ 39]: 211cac8b11c45352 +Block 0016 [ 40]: f650fd25271b9c5a +Block 0016 [ 41]: 4a010b0f77e26da8 +Block 0016 [ 42]: 1f6f7df490099b1b +Block 0016 [ 43]: 36022d365802f027 +Block 0016 [ 44]: e35a379738a296e5 +Block 0016 [ 45]: 6491f8b4a212791c +Block 0016 [ 46]: b2d54c7989b5b0c1 +Block 0016 [ 47]: a0a7315c0eb890eb +Block 0016 [ 48]: 940c2febc8456f00 +Block 0016 [ 49]: afe584e0974acadc +Block 0016 [ 50]: 0237152efebb2203 +Block 0016 [ 51]: 519b38e94ad527c9 +Block 0016 [ 52]: 9e499dfc5a979151 +Block 0016 [ 53]: 45cbafa954f7b16f +Block 0016 [ 54]: 71124a4a9b161aee +Block 0016 [ 55]: b380225a3fc8298f +Block 0016 [ 56]: b8515b64f5e35d14 +Block 0016 [ 57]: 82d8b9dbe548ccd5 +Block 0016 [ 58]: 24c4387c54c4d022 +Block 0016 [ 59]: 850905f5110be9e8 +Block 0016 [ 60]: f8c0e31453bcb207 +Block 0016 [ 61]: 8a251ccea3671489 +Block 0016 [ 62]: ae373b1f897efb7f +Block 0016 [ 63]: ac8d3162c76d1c2c +Block 0016 [ 64]: 0d11769e3e5db3f2 +Block 0016 [ 65]: 02b25c0908ce43e4 +Block 0016 [ 66]: e61e2f849cec89d4 +Block 0016 [ 67]: d52c8897b2f3d019 +Block 0016 [ 68]: 75a7a2ae83d80ae6 +Block 0016 [ 69]: 9f18bcbdc9f84991 +Block 0016 [ 70]: e517fce50ccfd1e9 +Block 0016 [ 71]: 980bc68313152f3f +Block 0016 [ 72]: 4eee0692b9465b9d +Block 0016 [ 73]: 3d2e94a50e49e795 +Block 0016 [ 74]: 7943364021b4fea2 +Block 0016 [ 75]: bd284dd3f7ad94c7 +Block 0016 [ 76]: 8221ee08403f3e10 +Block 0016 [ 77]: a40cc63f8c9de094 +Block 0016 [ 78]: 6e6f2f7d80d7d21e +Block 0016 [ 79]: 91c0201f23fd6e6c +Block 0016 [ 80]: 8ed2b314946e622b +Block 0016 [ 81]: dd48c6c2a1d335d4 +Block 0016 [ 82]: 41ee6f41ab208bf2 +Block 0016 [ 83]: 31a77119b6432a9c +Block 0016 [ 84]: 1b2cafacf9b54382 +Block 0016 [ 85]: 5eebbe897674fa7a +Block 0016 [ 86]: b73ac43a8686afc1 +Block 0016 [ 87]: 1f18f754b7db2092 +Block 0016 [ 88]: 186a7e1729c70dd8 +Block 0016 [ 89]: b7bf5151c6cf12bc +Block 0016 [ 90]: a31c2209f7d6c042 +Block 0016 [ 91]: e4db5452b81a01a7 +Block 0016 [ 92]: e73013b5645ff098 +Block 0016 [ 93]: a72bcbd72ec7b4b5 +Block 0016 [ 94]: d210d34e4b8e4532 +Block 0016 [ 95]: 09ee1b5d61bce6c2 +Block 0016 [ 96]: 86b41575fd474119 +Block 0016 [ 97]: 75be5fc8ece614b5 +Block 0016 [ 98]: 96e9e61dee37c9c5 +Block 0016 [ 99]: 994b01e9f1345ba2 +Block 0016 [100]: e80cc816ade968fc +Block 0016 [101]: b6484de03360d188 +Block 0016 [102]: 1b5c090b15e4c7c0 +Block 0016 [103]: 81d0ca62028f558e +Block 0016 [104]: 1b888c6c14f4bad0 +Block 0016 [105]: 7eb7c64e6674cc77 +Block 0016 [106]: 27823d303ac7ab60 +Block 0016 [107]: 9bd5fc1e140bea6a +Block 0016 [108]: d3d5b0ec1bcc3af2 +Block 0016 [109]: a36ec3bae283e8c0 +Block 0016 [110]: a7ff28d89cdd37b1 +Block 0016 [111]: 10177e9779913f70 +Block 0016 [112]: e9cd34aca1c47853 +Block 0016 [113]: cd309025c34ee78c +Block 0016 [114]: 4b8ffe18a3795079 +Block 0016 [115]: 5739338964cdf1b6 +Block 0016 [116]: e12aa70c2d91e4e5 +Block 0016 [117]: 618f77eeb7756c59 +Block 0016 [118]: a2f6ed98f55b12db +Block 0016 [119]: 7b7c4a38542aa6e7 +Block 0016 [120]: 3de134f1ba20445f +Block 0016 [121]: 7e2d2dc86a558720 +Block 0016 [122]: 5d239acb1ace723f +Block 0016 [123]: 57a5a103088725d5 +Block 0016 [124]: 3d4216b97e1d53fd +Block 0016 [125]: 8e2a754bad98d6fa +Block 0016 [126]: a4a1b2c34a1e2235 +Block 0016 [127]: a893790880d4e4af +Block 0017 [ 0]: 6a568b087362d599 +Block 0017 [ 1]: f4d0b004b7cfb215 +Block 0017 [ 2]: 24a403b15457faf9 +Block 0017 [ 3]: 7d6970151918144c +Block 0017 [ 4]: af8a64ff39a95eae +Block 0017 [ 5]: 13595c675e901bbe +Block 0017 [ 6]: c813ac2e1400d481 +Block 0017 [ 7]: 4e2af4e6504acfe0 +Block 0017 [ 8]: d488199a10e3c70e +Block 0017 [ 9]: f0621ceecae39807 +Block 0017 [ 10]: c37349a0628508cb +Block 0017 [ 11]: 00a2ca683ec5d0ff +Block 0017 [ 12]: b3d531564dffb295 +Block 0017 [ 13]: 96707bff9634dffe +Block 0017 [ 14]: bfd49981867297ca +Block 0017 [ 15]: 2795dbda22feda25 +Block 0017 [ 16]: 2a5b8637c6281074 +Block 0017 [ 17]: 18ec37929c342379 +Block 0017 [ 18]: c5e6f284b4821ac9 +Block 0017 [ 19]: 1ece865da7d295ed +Block 0017 [ 20]: e6b4925e308e6c53 +Block 0017 [ 21]: 5fb9738e778c653f +Block 0017 [ 22]: 19c8799cf625c2e6 +Block 0017 [ 23]: 407f2e253c3af503 +Block 0017 [ 24]: c062e4fb2bb75df6 +Block 0017 [ 25]: c9d993dbf3164d9d +Block 0017 [ 26]: d0f246dc1158028c +Block 0017 [ 27]: d1a0f91ccf9fcc7f +Block 0017 [ 28]: e97b91e45fce6044 +Block 0017 [ 29]: 7bc62e06a2248cf4 +Block 0017 [ 30]: c281b558f2f173c7 +Block 0017 [ 31]: 6548c47523b7b599 +Block 0017 [ 32]: c8af3c342b29b9ba +Block 0017 [ 33]: 0ee797539b104687 +Block 0017 [ 34]: 05b4ae0694f8472f +Block 0017 [ 35]: ec28f954ce73d75b +Block 0017 [ 36]: 956f6450c1306ae2 +Block 0017 [ 37]: e724ccd7925f9f45 +Block 0017 [ 38]: 0ed70803fc818da5 +Block 0017 [ 39]: b572f98a6f8a7408 +Block 0017 [ 40]: e93f48a2b46521ca +Block 0017 [ 41]: 0ebdc3c0b4a01fce +Block 0017 [ 42]: 1ec3dc824a30c790 +Block 0017 [ 43]: eee337efed2704ef +Block 0017 [ 44]: e801fa17db118356 +Block 0017 [ 45]: c20c79e85d2d88fa +Block 0017 [ 46]: 53359a3630c47888 +Block 0017 [ 47]: aee440b14a6c2c65 +Block 0017 [ 48]: 7cc5eae37cb7130e +Block 0017 [ 49]: 5641a3381f4bd0b5 +Block 0017 [ 50]: ada41bdbe746d269 +Block 0017 [ 51]: 22c263b7a9cedb8d +Block 0017 [ 52]: ada822e4bb4dfc81 +Block 0017 [ 53]: d91077f9e2b69e6c +Block 0017 [ 54]: 9dda916a85e71ba0 +Block 0017 [ 55]: 34c6398e727921de +Block 0017 [ 56]: 656e3e5b64f11348 +Block 0017 [ 57]: bf722197a87a9e52 +Block 0017 [ 58]: 3412696cf67a0536 +Block 0017 [ 59]: 61afa66a68537b17 +Block 0017 [ 60]: b81c87fc04ae41db +Block 0017 [ 61]: 2006797527ace218 +Block 0017 [ 62]: cdf9ed1a65c5523a +Block 0017 [ 63]: 81bfcdc44b341b2a +Block 0017 [ 64]: f8dfcaa6a6ed8007 +Block 0017 [ 65]: c9780e1c6c00a316 +Block 0017 [ 66]: 39569b0ad9ecf7bb +Block 0017 [ 67]: 369c5f6bf36daf32 +Block 0017 [ 68]: 2ef698ce1aabd3df +Block 0017 [ 69]: 5a3c9c147d106e0c +Block 0017 [ 70]: 6058270a1c6223b2 +Block 0017 [ 71]: 3e8ff7df68b29d00 +Block 0017 [ 72]: 0b2f4f395130e03c +Block 0017 [ 73]: 6ff710b6c6a86c61 +Block 0017 [ 74]: c16f6cc4ad8cfb65 +Block 0017 [ 75]: 759be4c5c0300c9a +Block 0017 [ 76]: dcae568becb44d58 +Block 0017 [ 77]: 4033bfa7607e6be6 +Block 0017 [ 78]: b445e7f3dbdef860 +Block 0017 [ 79]: ed0713c8f7d26751 +Block 0017 [ 80]: c84474035912a985 +Block 0017 [ 81]: 736f9184cdaa51f0 +Block 0017 [ 82]: ca0200924a6c76ba +Block 0017 [ 83]: d2e7fa645197c8e7 +Block 0017 [ 84]: 684cff2a784c969a +Block 0017 [ 85]: a81dbbbd245b5e1d +Block 0017 [ 86]: ed7a637fa3edc4b5 +Block 0017 [ 87]: 5f633a937e8ac431 +Block 0017 [ 88]: d25f821a1705e8f7 +Block 0017 [ 89]: d70c4299eb339515 +Block 0017 [ 90]: eff333ecf0353a1a +Block 0017 [ 91]: f401acd34391980f +Block 0017 [ 92]: 0295ac459f82e8c7 +Block 0017 [ 93]: 8b3ad6255b4780f7 +Block 0017 [ 94]: d2e7679d3ab1059d +Block 0017 [ 95]: 113876dd59c72996 +Block 0017 [ 96]: 17402099db10b612 +Block 0017 [ 97]: 0b01e2395ce384ba +Block 0017 [ 98]: 6bf5bb488801618b +Block 0017 [ 99]: 478b5a50bc3a2c4e +Block 0017 [100]: 0691aed65eefc1cb +Block 0017 [101]: 26ca3fad5466834e +Block 0017 [102]: 13113afc925a6817 +Block 0017 [103]: aa0e3ed28b3748e2 +Block 0017 [104]: b05cab417dac8424 +Block 0017 [105]: 0d6e4d86a0c912f7 +Block 0017 [106]: 9296ffd1c9e73921 +Block 0017 [107]: 1e03c605386af466 +Block 0017 [108]: 91cb867eeda11be3 +Block 0017 [109]: 3f1d5547f2c285c5 +Block 0017 [110]: 5a44678b78e7f616 +Block 0017 [111]: e5c07179aa7f608c +Block 0017 [112]: 083d0125aef8a233 +Block 0017 [113]: 179fd2d54fd4b257 +Block 0017 [114]: 7317cfd85758e269 +Block 0017 [115]: a21a270edc02b12e +Block 0017 [116]: 1a91dea7cd6e3221 +Block 0017 [117]: 55e99b07ffbeb71b +Block 0017 [118]: 5d6602f3d5351f15 +Block 0017 [119]: 1ddeb23652a7e470 +Block 0017 [120]: 41f0237d9948fc2d +Block 0017 [121]: 5ff55d244a864d70 +Block 0017 [122]: 8a6286abb55ce32f +Block 0017 [123]: f43c75e4d707e357 +Block 0017 [124]: 0b4c2b087242ca7c +Block 0017 [125]: 004f4ad50e58ac07 +Block 0017 [126]: 8648d433233bb2f5 +Block 0017 [127]: ee0bb08cd06e652f +Block 0018 [ 0]: 74bf48c25eaede69 +Block 0018 [ 1]: 0400a05f89a28857 +Block 0018 [ 2]: 0ab09e32a93bef73 +Block 0018 [ 3]: 05057d01ce0ef39f +Block 0018 [ 4]: 5c7978beb2277bb5 +Block 0018 [ 5]: a5d253e71f9ccae2 +Block 0018 [ 6]: c1f315aa6f3e9f74 +Block 0018 [ 7]: e72ff5afa533a4d4 +Block 0018 [ 8]: ecb3208c2142c54a +Block 0018 [ 9]: 0e2f949b8ee280ca +Block 0018 [ 10]: 7e3c92a4356588c0 +Block 0018 [ 11]: 9964e66e407bf3df +Block 0018 [ 12]: db714a9185258f27 +Block 0018 [ 13]: e65e22001dc81e32 +Block 0018 [ 14]: 90d8961c9c3756c7 +Block 0018 [ 15]: e2591928d215597e +Block 0018 [ 16]: c73cf20184efb1bc +Block 0018 [ 17]: 4f1a1044384c6f4f +Block 0018 [ 18]: 7e6b458e6fb0da22 +Block 0018 [ 19]: 8643245d817c7fbb +Block 0018 [ 20]: 11fdba7a2f78305b +Block 0018 [ 21]: f83ea63c173e06b1 +Block 0018 [ 22]: 9c7a045abe8c90a8 +Block 0018 [ 23]: b36c2a3626317afa +Block 0018 [ 24]: 3a44cafe43247699 +Block 0018 [ 25]: 0a141875b2a3608e +Block 0018 [ 26]: fcff57382918c295 +Block 0018 [ 27]: 8953eebab5b47e2b +Block 0018 [ 28]: 304750d888f8cf36 +Block 0018 [ 29]: 7eda590b3eecc804 +Block 0018 [ 30]: 65387915616d50d9 +Block 0018 [ 31]: 3227c1b6926315ea +Block 0018 [ 32]: b66da09195679368 +Block 0018 [ 33]: 5d3680c936733dc9 +Block 0018 [ 34]: 787cb30e129ab8bf +Block 0018 [ 35]: d356deaf9969ecd8 +Block 0018 [ 36]: e1cbceb0c6301fec +Block 0018 [ 37]: b65960ffae6c48c7 +Block 0018 [ 38]: 26a3712c2c111301 +Block 0018 [ 39]: 3579927152608c6a +Block 0018 [ 40]: ee4ca14008db9e5a +Block 0018 [ 41]: 012d00b0c4f6d234 +Block 0018 [ 42]: fe0f71ad0c37f2c5 +Block 0018 [ 43]: 63278fe0caa8ae1b +Block 0018 [ 44]: a304e7cadc483280 +Block 0018 [ 45]: f05f6bd6733075d4 +Block 0018 [ 46]: 534f8814741a4e0f +Block 0018 [ 47]: 8c21885188289bbb +Block 0018 [ 48]: d84ae9b0b404d205 +Block 0018 [ 49]: b3bc7c1e0afb6704 +Block 0018 [ 50]: 12c688be5d993b2e +Block 0018 [ 51]: aba988c6fc3bdb09 +Block 0018 [ 52]: 19b70cbd0d319bca +Block 0018 [ 53]: a51c29abe752369f +Block 0018 [ 54]: 4b0c55f1078c21b6 +Block 0018 [ 55]: ec9469aa4c1641e5 +Block 0018 [ 56]: dce1e647f70717c8 +Block 0018 [ 57]: c0887888f6060dd7 +Block 0018 [ 58]: 62af261baa0346ef +Block 0018 [ 59]: 3791ff08130c2ec5 +Block 0018 [ 60]: 40db56c530ff4828 +Block 0018 [ 61]: ad33136573457d2d +Block 0018 [ 62]: 4798cf53b26c7995 +Block 0018 [ 63]: bec038a566ee052f +Block 0018 [ 64]: 28fea35a44a8ad77 +Block 0018 [ 65]: 87922d63a04a7714 +Block 0018 [ 66]: 9fd1568b3961a755 +Block 0018 [ 67]: b814da74cb12e514 +Block 0018 [ 68]: 1e27e85db17b9b89 +Block 0018 [ 69]: 792060548ca6833f +Block 0018 [ 70]: 7f2633d664ef5ae0 +Block 0018 [ 71]: 93141a17f55c38d6 +Block 0018 [ 72]: c425ffa62860b3c4 +Block 0018 [ 73]: 126d931e23550e3a +Block 0018 [ 74]: f564b0e7a0fecec7 +Block 0018 [ 75]: 04fa1b585c310f79 +Block 0018 [ 76]: 61a14482bfc01919 +Block 0018 [ 77]: d63d6673e239bab0 +Block 0018 [ 78]: 98497f450519caf4 +Block 0018 [ 79]: 77a388d80ef61859 +Block 0018 [ 80]: afb4830ccf82147c +Block 0018 [ 81]: 56c5184493808a78 +Block 0018 [ 82]: 61b0745753eb147a +Block 0018 [ 83]: f3dc622060ceeddb +Block 0018 [ 84]: 2c16e6a7f4f85a80 +Block 0018 [ 85]: b5a812a2eaa530ce +Block 0018 [ 86]: 7355aec5721f7c5a +Block 0018 [ 87]: c8ad08d26497df3b +Block 0018 [ 88]: 8e0e0ca4e4e6a84b +Block 0018 [ 89]: 6574239609c73bee +Block 0018 [ 90]: 400d0a8a2958e233 +Block 0018 [ 91]: 0d12d5aaedfa7ee2 +Block 0018 [ 92]: ce01ba6a21f45b55 +Block 0018 [ 93]: 64fc77da92ebace2 +Block 0018 [ 94]: d94e61b2c96c1b88 +Block 0018 [ 95]: 46e4dff70fbb78e0 +Block 0018 [ 96]: 27e6ff694f3a7e44 +Block 0018 [ 97]: ba79e628d78eccdb +Block 0018 [ 98]: d3896748607f61f3 +Block 0018 [ 99]: 854a68e059d889e7 +Block 0018 [100]: 17cec322e53e3376 +Block 0018 [101]: e2a0da69fbe10025 +Block 0018 [102]: 125d98efed8be71b +Block 0018 [103]: 554a109e66331278 +Block 0018 [104]: 5f7d27d772887cf9 +Block 0018 [105]: 06666ff797d87c2b +Block 0018 [106]: 7a5e44a65427fbf1 +Block 0018 [107]: 3fefa1be4c489aaf +Block 0018 [108]: 031406bfb5cfdcf3 +Block 0018 [109]: d26b2c2a6f1a7bbe +Block 0018 [110]: 6fe546818e5f0997 +Block 0018 [111]: 05fbde7911b35967 +Block 0018 [112]: 922377a3eb2369cb +Block 0018 [113]: 754e283ffb70c99e +Block 0018 [114]: 3b7334104b59591c +Block 0018 [115]: cab8aeb7fc317a77 +Block 0018 [116]: f58d70ddb079d0af +Block 0018 [117]: 869d96630428ee86 +Block 0018 [118]: f792876a73b5557b +Block 0018 [119]: d95d44f60a27c85f +Block 0018 [120]: 1ce5feae87c3c213 +Block 0018 [121]: b5a536920eefc202 +Block 0018 [122]: b4b10901d5a76a60 +Block 0018 [123]: 37fec8e389f4692e +Block 0018 [124]: 3a2d7166807e2a10 +Block 0018 [125]: 97b37652df6d8c82 +Block 0018 [126]: c10e61a6454af63f +Block 0018 [127]: 7543572a7389b452 +Block 0019 [ 0]: 722ded4f56a565fb +Block 0019 [ 1]: 66f81b75a79a68f9 +Block 0019 [ 2]: 2ed3e3524e669534 +Block 0019 [ 3]: 3d0249646b4e5ceb +Block 0019 [ 4]: 23702f362b010609 +Block 0019 [ 5]: 66c14af9081b479c +Block 0019 [ 6]: fe76e828c7874bb5 +Block 0019 [ 7]: c9df351081f32a1a +Block 0019 [ 8]: f10f2645d1a94c61 +Block 0019 [ 9]: 8882d7a1ac2ebb6b +Block 0019 [ 10]: 60942a191d37a892 +Block 0019 [ 11]: 5d13500bcaf64c75 +Block 0019 [ 12]: e82b0f549cef7b8c +Block 0019 [ 13]: eaadf7ce53b92191 +Block 0019 [ 14]: 99bcb35755b3e095 +Block 0019 [ 15]: 37d06d28a2bc5920 +Block 0019 [ 16]: 96bfe103e6756fc6 +Block 0019 [ 17]: 9998b5c265a72545 +Block 0019 [ 18]: 2a19f9ad33a764f4 +Block 0019 [ 19]: 1f58324f51536c9d +Block 0019 [ 20]: cc1ed217c0b8fa81 +Block 0019 [ 21]: 8ddea022746359cb +Block 0019 [ 22]: 598c823a015eff37 +Block 0019 [ 23]: b61185018876e8d7 +Block 0019 [ 24]: a2c60b6f3af802e3 +Block 0019 [ 25]: f687430b8a1995e1 +Block 0019 [ 26]: 408885fd6d7e25e8 +Block 0019 [ 27]: b6c64003bb3f1fbf +Block 0019 [ 28]: 5685b41a4d53d6b8 +Block 0019 [ 29]: 4275961a2e03b3bf +Block 0019 [ 30]: ba8c2c7d52ce5eef +Block 0019 [ 31]: 4b7a2193a5a42fb6 +Block 0019 [ 32]: 82ef795089ef1b6b +Block 0019 [ 33]: b92848e62bb47aba +Block 0019 [ 34]: e3ada75122fc94c0 +Block 0019 [ 35]: c0100b3a7a64a3eb +Block 0019 [ 36]: 81a50e5cf971bfdf +Block 0019 [ 37]: 54b58468e7722c0d +Block 0019 [ 38]: 5be0ac9c0bbadf47 +Block 0019 [ 39]: 8bbc079daf10cd6c +Block 0019 [ 40]: c15bcc3683e366df +Block 0019 [ 41]: 8b5e324a9ed3f23f +Block 0019 [ 42]: 4aa03e81d768546d +Block 0019 [ 43]: fea6138015a2067f +Block 0019 [ 44]: 8c551c9fa08bc353 +Block 0019 [ 45]: abc876b122520670 +Block 0019 [ 46]: 2cd7558d5b3be7e0 +Block 0019 [ 47]: ccf6a4b816c33ec8 +Block 0019 [ 48]: baba433c49797864 +Block 0019 [ 49]: 197ede8f7c567203 +Block 0019 [ 50]: fae9d3460ac15df5 +Block 0019 [ 51]: f3adae0f64326ece +Block 0019 [ 52]: 6e528bdb47402901 +Block 0019 [ 53]: 2492762ac597d40a +Block 0019 [ 54]: 6ba4c5c3d5bb98f1 +Block 0019 [ 55]: cd54dbf31e0abbdc +Block 0019 [ 56]: 54a77ea4cd91551f +Block 0019 [ 57]: dbb8c88ac1eaa8c0 +Block 0019 [ 58]: f88ca1ca32f1e921 +Block 0019 [ 59]: 3cf0026636693684 +Block 0019 [ 60]: fe13df5cdc931e0e +Block 0019 [ 61]: 3e568d869926bfc6 +Block 0019 [ 62]: 12b1e4f3b127b510 +Block 0019 [ 63]: 9571189e9fc54658 +Block 0019 [ 64]: d8e0280cc71d7261 +Block 0019 [ 65]: 1414ad7e77dec5b5 +Block 0019 [ 66]: 9d50c531d4e3b1f1 +Block 0019 [ 67]: a837736eb0b178bf +Block 0019 [ 68]: c7c3f7c72c12f553 +Block 0019 [ 69]: 514e9b4b12844d0a +Block 0019 [ 70]: 099df6d12c31f66c +Block 0019 [ 71]: 6c6130e568dae72b +Block 0019 [ 72]: 026ffd1b61ef6c3f +Block 0019 [ 73]: 85efd65d354c2027 +Block 0019 [ 74]: 8d228ab3cc044105 +Block 0019 [ 75]: 3a7e4faeeccb8b06 +Block 0019 [ 76]: e1ead5f1b2a58f7c +Block 0019 [ 77]: 80e45edbc5b44843 +Block 0019 [ 78]: 417757c3dc6e2c89 +Block 0019 [ 79]: c5cef9b96a73f341 +Block 0019 [ 80]: d2d3360debbc854b +Block 0019 [ 81]: ea796d996d79773a +Block 0019 [ 82]: 43b9ec58d25ccb0d +Block 0019 [ 83]: 909a2980fafca057 +Block 0019 [ 84]: 957bbb801c361db5 +Block 0019 [ 85]: ce623364956f8eb1 +Block 0019 [ 86]: a9e1ea98da49fcfb +Block 0019 [ 87]: 084eb35a88326f27 +Block 0019 [ 88]: 80507bdf2e3a52c1 +Block 0019 [ 89]: 65e09bdedcdbfe26 +Block 0019 [ 90]: f9c5e870eab6e090 +Block 0019 [ 91]: 64c80b52255ace7e +Block 0019 [ 92]: cb9a1a29583766a7 +Block 0019 [ 93]: da6dbd5eb460785c +Block 0019 [ 94]: a78ad96bb297cb22 +Block 0019 [ 95]: 56f43ee98185b433 +Block 0019 [ 96]: 0be8bfd2f08db3c4 +Block 0019 [ 97]: 9a7df19eee797962 +Block 0019 [ 98]: b6846d0300b15563 +Block 0019 [ 99]: 2926611424a3c93a +Block 0019 [100]: 4e4bb76824d55a36 +Block 0019 [101]: 6390753096176e1b +Block 0019 [102]: b7fa767b6bfc44fb +Block 0019 [103]: d23a521d68c0cf75 +Block 0019 [104]: 51addd0e823b81ed +Block 0019 [105]: ec0627f8110db6a7 +Block 0019 [106]: db4f2d5cac87bd60 +Block 0019 [107]: 4c3cee848d16c717 +Block 0019 [108]: 7648ac62be70e5be +Block 0019 [109]: f5c6484cb942ac44 +Block 0019 [110]: b43fc27e9e6a4773 +Block 0019 [111]: b82a706ea829cb5b +Block 0019 [112]: 982b0c739e53385d +Block 0019 [113]: 1ebb4a34c10626c0 +Block 0019 [114]: 3e59c0dff3f1ec58 +Block 0019 [115]: 37a5c1a1a05f14ef +Block 0019 [116]: fe04a5fb0a9c8c3d +Block 0019 [117]: 736febc5e56a2aae +Block 0019 [118]: 01c6ae60f536f04c +Block 0019 [119]: 10ac08179e2a0a44 +Block 0019 [120]: 62eda4c56851c55a +Block 0019 [121]: 3655c086ab4dc453 +Block 0019 [122]: 6204a37f1668346b +Block 0019 [123]: d06115aa65a09d31 +Block 0019 [124]: cf4b6b55d0123805 +Block 0019 [125]: f205092073e33b99 +Block 0019 [126]: 33200ae2e1abaa05 +Block 0019 [127]: 44fc4dde9d1ebe43 +Block 0020 [ 0]: 41b07971e71a2e54 +Block 0020 [ 1]: 6f2089d15ada03ee +Block 0020 [ 2]: 6d0330debb1e1bc7 +Block 0020 [ 3]: 9d7ab01519234721 +Block 0020 [ 4]: b7183d6569ecf0b9 +Block 0020 [ 5]: 853a4e3facbc0533 +Block 0020 [ 6]: b06e176fa56954a7 +Block 0020 [ 7]: 27f4c2e2b2be4b39 +Block 0020 [ 8]: 33080d0850a86c1b +Block 0020 [ 9]: 2d8b3a453d3cbb50 +Block 0020 [ 10]: f4147219e8bcd1d4 +Block 0020 [ 11]: 430706f6860388f2 +Block 0020 [ 12]: 51c540fee2514f0d +Block 0020 [ 13]: 8ccdad415ea6ee66 +Block 0020 [ 14]: f520cd207b48edc6 +Block 0020 [ 15]: 87a9d3aba575a7ce +Block 0020 [ 16]: 210f9df0bc9e9108 +Block 0020 [ 17]: ee022c298f3942b6 +Block 0020 [ 18]: 9bc38103277c849c +Block 0020 [ 19]: c75db3f801f64ec0 +Block 0020 [ 20]: 2ae94ab7f9f8942f +Block 0020 [ 21]: a257534ac5235d94 +Block 0020 [ 22]: 188a094687c623a3 +Block 0020 [ 23]: d08168250ca805e3 +Block 0020 [ 24]: f3e4d78cf027612a +Block 0020 [ 25]: 392503cd6ae2f3b0 +Block 0020 [ 26]: 00a1bc98866892b4 +Block 0020 [ 27]: 52d5b875e04684e0 +Block 0020 [ 28]: 10eaadda403ba853 +Block 0020 [ 29]: 31fb34dee9418d93 +Block 0020 [ 30]: 19e4ab017f8d5d32 +Block 0020 [ 31]: 58154f814ce6de3b +Block 0020 [ 32]: 300d30a35d50ff55 +Block 0020 [ 33]: 5bc5a82f48804532 +Block 0020 [ 34]: 1b0f36ce4856deb0 +Block 0020 [ 35]: 825a2dbdb23e6f97 +Block 0020 [ 36]: 77966bdabcdbc0a5 +Block 0020 [ 37]: e4399601c93be292 +Block 0020 [ 38]: d8af3dc1dc33bf15 +Block 0020 [ 39]: 86ef6420ae6283cc +Block 0020 [ 40]: 455268aba83b61f2 +Block 0020 [ 41]: d2c002689ec6cfb7 +Block 0020 [ 42]: 2045ec9ab1b82eaa +Block 0020 [ 43]: f090b6215091285b +Block 0020 [ 44]: db2f72dbec97da20 +Block 0020 [ 45]: ad4d8b2ff8b2135e +Block 0020 [ 46]: a5b25c830e505d23 +Block 0020 [ 47]: a9faa876a6161e58 +Block 0020 [ 48]: 9aacdb2111fa9989 +Block 0020 [ 49]: 6f29852abb002e42 +Block 0020 [ 50]: 147df596b36eb419 +Block 0020 [ 51]: 70059f6668ce6269 +Block 0020 [ 52]: 7636a5a116415e7a +Block 0020 [ 53]: de880241472a104b +Block 0020 [ 54]: bcc7b804ee025dcd +Block 0020 [ 55]: 3b7ecef3fd470a6a +Block 0020 [ 56]: 6139fcff135af1a9 +Block 0020 [ 57]: 703ef43ec763d407 +Block 0020 [ 58]: edfa811c241aaab8 +Block 0020 [ 59]: 4505a1b1377c7490 +Block 0020 [ 60]: 017655ace5ef1544 +Block 0020 [ 61]: e65824ab647d2c63 +Block 0020 [ 62]: bbf0c4e392476d22 +Block 0020 [ 63]: 09222639f2e1b822 +Block 0020 [ 64]: 1b45cf3b00b6cb95 +Block 0020 [ 65]: 4550026be5fa7271 +Block 0020 [ 66]: c06ad1f579d397ea +Block 0020 [ 67]: 64af21038c5e7b8a +Block 0020 [ 68]: 5b20ab16b33f03b9 +Block 0020 [ 69]: e849677673c9f8a8 +Block 0020 [ 70]: 3fe654d05ce1ae5e +Block 0020 [ 71]: 5825aba0671ac6e7 +Block 0020 [ 72]: 426d8a7b658fae5e +Block 0020 [ 73]: 0b7c48925a17445d +Block 0020 [ 74]: cd814a10d3c250a9 +Block 0020 [ 75]: e1b89d7598c24c73 +Block 0020 [ 76]: 8fd426f1e17e74c5 +Block 0020 [ 77]: f5a5ee0f82556b39 +Block 0020 [ 78]: 493624eb4ef93c0e +Block 0020 [ 79]: aea2a200cbc14750 +Block 0020 [ 80]: 808720a7c98fe9ff +Block 0020 [ 81]: 38ef2a776caad830 +Block 0020 [ 82]: 03ebc1bc2b48add4 +Block 0020 [ 83]: e0b48d9257cffc58 +Block 0020 [ 84]: b65a3be5a325716c +Block 0020 [ 85]: 45978217eda2c997 +Block 0020 [ 86]: 733948d9a58f9ae9 +Block 0020 [ 87]: b7b731f51be4173a +Block 0020 [ 88]: 9b28a46c6801aefc +Block 0020 [ 89]: 3e7391b2e7dfcbe4 +Block 0020 [ 90]: 8ea972520400f578 +Block 0020 [ 91]: 91949581521e1e4b +Block 0020 [ 92]: 1d9aab7d0c9209c6 +Block 0020 [ 93]: 9e289a904e90a578 +Block 0020 [ 94]: c580ae13f3a13a7f +Block 0020 [ 95]: 0975acd1f64f31c2 +Block 0020 [ 96]: d880c8480b663a97 +Block 0020 [ 97]: b20a8a30f36969b2 +Block 0020 [ 98]: 494bbd11053ada9d +Block 0020 [ 99]: 6c5976a5348e6cf7 +Block 0020 [100]: 7f6c2e22a6603550 +Block 0020 [101]: a7fa0251004384bb +Block 0020 [102]: a7a22b9632283a45 +Block 0020 [103]: fc0986d873115470 +Block 0020 [104]: 71555418129d0b36 +Block 0020 [105]: 9e00a18a599c1fea +Block 0020 [106]: 6deaac74ca260a50 +Block 0020 [107]: e1c8fe4ef7a9de6d +Block 0020 [108]: 01171cb695ed590d +Block 0020 [109]: 47bb44260c897574 +Block 0020 [110]: 530fc16d6918e1b9 +Block 0020 [111]: e8df2c3b9139fd0b +Block 0020 [112]: 4cb5e096924f0984 +Block 0020 [113]: 027123d359f10fb0 +Block 0020 [114]: 55027b0c9f2435bd +Block 0020 [115]: 272d5f7961436e9c +Block 0020 [116]: e5b9d9a32412556f +Block 0020 [117]: 457880a2978e3c7d +Block 0020 [118]: 035359bb4cc2bf39 +Block 0020 [119]: 106c5417cb96c096 +Block 0020 [120]: 3873b238fbff0942 +Block 0020 [121]: 17ae8af56a1c42e0 +Block 0020 [122]: d1ba5b1140949f1f +Block 0020 [123]: e47d23a41498eb54 +Block 0020 [124]: 0c90f5bafd925619 +Block 0020 [125]: 9ea964113672b524 +Block 0020 [126]: 57728a9955920a13 +Block 0020 [127]: 35977a9645b06609 +Block 0021 [ 0]: 99c90699f26a1583 +Block 0021 [ 1]: d62506b1691ce83e +Block 0021 [ 2]: f95c5d44ea02239c +Block 0021 [ 3]: fcf27c44241cd6c8 +Block 0021 [ 4]: a0d86491c7ceb500 +Block 0021 [ 5]: 4dd10f8ab9541a9f +Block 0021 [ 6]: ae17a91916abe872 +Block 0021 [ 7]: 9d67d7d00fbe0a70 +Block 0021 [ 8]: f1a88d532cd28a63 +Block 0021 [ 9]: 39dd4f50229a82bf +Block 0021 [ 10]: 76a06d0dee8b8ade +Block 0021 [ 11]: 9aef30b84382c629 +Block 0021 [ 12]: 6ac22e4389612006 +Block 0021 [ 13]: d6f9d4d874e6e975 +Block 0021 [ 14]: 93dca20f9d1e625c +Block 0021 [ 15]: 2b264238671a0857 +Block 0021 [ 16]: a0bd56d8e2e3f336 +Block 0021 [ 17]: 9e854d3d7dba0d74 +Block 0021 [ 18]: a1e92df035152bd8 +Block 0021 [ 19]: 99d496cda4159e13 +Block 0021 [ 20]: a774e449e3e60348 +Block 0021 [ 21]: d1ac8ce6802fc4a8 +Block 0021 [ 22]: 97e20ec345140420 +Block 0021 [ 23]: 9f61750cd5ad600c +Block 0021 [ 24]: 7fe30c292f6519a2 +Block 0021 [ 25]: 45b180ba23bd51ec +Block 0021 [ 26]: a21343dd46c044f3 +Block 0021 [ 27]: 7bbb471ba8cff820 +Block 0021 [ 28]: 3ecad47da26e6430 +Block 0021 [ 29]: 61cb0da0292bcba7 +Block 0021 [ 30]: e419902f76899dee +Block 0021 [ 31]: 38525a26a35795dd +Block 0021 [ 32]: fcb9b939e7f343f0 +Block 0021 [ 33]: 6494c6a7a62d017f +Block 0021 [ 34]: d4a8a76c81242c2a +Block 0021 [ 35]: 7a6343b883eca4c3 +Block 0021 [ 36]: 6b52b95e7513d6cf +Block 0021 [ 37]: bce9e80e22a770db +Block 0021 [ 38]: 34996a31fed99173 +Block 0021 [ 39]: d75d7573d84fa88e +Block 0021 [ 40]: cc9e1bac5dad04de +Block 0021 [ 41]: a3b704494d792b36 +Block 0021 [ 42]: 0b0e12bcf6320ed3 +Block 0021 [ 43]: d28103a70d3e3655 +Block 0021 [ 44]: a177e02a07d98275 +Block 0021 [ 45]: 79ea910a8dd1c191 +Block 0021 [ 46]: fb03b764354a515f +Block 0021 [ 47]: 68a2728a2f946b07 +Block 0021 [ 48]: 996e901859fe60c4 +Block 0021 [ 49]: 5527efc44a3296a2 +Block 0021 [ 50]: 5845975faf68289b +Block 0021 [ 51]: 73d6ec705f545c49 +Block 0021 [ 52]: 5fa6778e2931528c +Block 0021 [ 53]: d9b6ddfe8040afd0 +Block 0021 [ 54]: 47a62e52424a7e33 +Block 0021 [ 55]: 47d07505251483e4 +Block 0021 [ 56]: 22ab3a448d5d134f +Block 0021 [ 57]: 4ce926e1a6df0cb8 +Block 0021 [ 58]: 72e00206862d8fa3 +Block 0021 [ 59]: 4b21559bab3f86f9 +Block 0021 [ 60]: 5a980c3b46d2be8e +Block 0021 [ 61]: 2ad9c2bcfe81e3b0 +Block 0021 [ 62]: 3bc624dfc37b8678 +Block 0021 [ 63]: 6d0d890bf0e9383f +Block 0021 [ 64]: 13d4089c25ec8ffe +Block 0021 [ 65]: c6e423ff6deb38d0 +Block 0021 [ 66]: ed6efbb604ad58c3 +Block 0021 [ 67]: efff5f38588ee612 +Block 0021 [ 68]: e3a7dae5a4ed29f1 +Block 0021 [ 69]: 38f2b792dfa1f064 +Block 0021 [ 70]: 94df3e2e745001a8 +Block 0021 [ 71]: 191a9276726070d9 +Block 0021 [ 72]: a510d07a141e7c38 +Block 0021 [ 73]: 5187183f8bb6e37a +Block 0021 [ 74]: a89e8c635f78a474 +Block 0021 [ 75]: ef39d133b7b710bd +Block 0021 [ 76]: ca5d7f377ef97849 +Block 0021 [ 77]: d7fb3c6e198ce5c4 +Block 0021 [ 78]: 16df2cc9d3071253 +Block 0021 [ 79]: 304e49111ea36b61 +Block 0021 [ 80]: 5919cd2abde8b09b +Block 0021 [ 81]: b27c8cb92e63932c +Block 0021 [ 82]: a03cfa230885f078 +Block 0021 [ 83]: 8855f9e6a50e0f00 +Block 0021 [ 84]: 83776b22df33ddf2 +Block 0021 [ 85]: 9275ae6a25ef9eb7 +Block 0021 [ 86]: 77f4f48c8d1fe5aa +Block 0021 [ 87]: 69e9c3ee6a313b91 +Block 0021 [ 88]: 34b2295d5b3cdfcb +Block 0021 [ 89]: 12ff0fd856bf17ec +Block 0021 [ 90]: 587825e8731f7532 +Block 0021 [ 91]: 7dc7d996c3b4dce1 +Block 0021 [ 92]: 5f94801d9ed7653b +Block 0021 [ 93]: 348f649bc8b74dac +Block 0021 [ 94]: dad511c9cd3dcd6c +Block 0021 [ 95]: 0d917c4a0c43537f +Block 0021 [ 96]: 543656e021e84162 +Block 0021 [ 97]: 1b5ad2836aeceb01 +Block 0021 [ 98]: 4ec9892cdf9bfaab +Block 0021 [ 99]: 8d95edf99171f888 +Block 0021 [100]: e184a5d6e42b9a7d +Block 0021 [101]: 23d27bc89de6801d +Block 0021 [102]: 236dc56a8fb5bb28 +Block 0021 [103]: f4e9ad75c9164dfb +Block 0021 [104]: ca92660dd6587d3a +Block 0021 [105]: 2822f9d7244bcc6d +Block 0021 [106]: 48b9cdca7b7159e1 +Block 0021 [107]: 97aa097f37692268 +Block 0021 [108]: 55e71fb044d7240a +Block 0021 [109]: fda7d8cead56d549 +Block 0021 [110]: af1e22ae2acae662 +Block 0021 [111]: 0bcbdf3af40e9c02 +Block 0021 [112]: 36b682b884dd3d7f +Block 0021 [113]: 5d29a9d2d1151a44 +Block 0021 [114]: 854dba4dc22926c5 +Block 0021 [115]: 75bccec357d65282 +Block 0021 [116]: 5fde2a2fd1a4d824 +Block 0021 [117]: ed6998c95c8c6031 +Block 0021 [118]: e42e6570c0ad8465 +Block 0021 [119]: 5363ae9589974f9d +Block 0021 [120]: 40209c1636899495 +Block 0021 [121]: 12f654e59f60f899 +Block 0021 [122]: 823fe8ba8eeb4649 +Block 0021 [123]: aa89425aa56b89b0 +Block 0021 [124]: 1c9a89ffa7aa2e7d +Block 0021 [125]: 0a1444d8cc22176f +Block 0021 [126]: d609a1c4ba94fa64 +Block 0021 [127]: ced53958b80bec2b +Block 0022 [ 0]: 1da00099e66ef42d +Block 0022 [ 1]: 60051fa3148b044e +Block 0022 [ 2]: 5dffa61c0c4dd432 +Block 0022 [ 3]: 18ac1fc7126204a2 +Block 0022 [ 4]: 753c3e883f63ef2f +Block 0022 [ 5]: a06af327af4c353b +Block 0022 [ 6]: 2c7e5aeb619e62cd +Block 0022 [ 7]: 067369e344526c25 +Block 0022 [ 8]: cf2dc2a2129f8283 +Block 0022 [ 9]: 6a7c0f5c06bffe14 +Block 0022 [ 10]: 4dd26b4524d0ea86 +Block 0022 [ 11]: a2e396830d604849 +Block 0022 [ 12]: ef540d936920acf0 +Block 0022 [ 13]: 53ef06d1f724d53a +Block 0022 [ 14]: 54ae1738225434d1 +Block 0022 [ 15]: d1835a92bc86f620 +Block 0022 [ 16]: 2aab6f075442a3cc +Block 0022 [ 17]: 603b2ca9761f8d49 +Block 0022 [ 18]: c6568ac3285d529e +Block 0022 [ 19]: 58fdad7c1b55134e +Block 0022 [ 20]: 90624214e9a57b86 +Block 0022 [ 21]: a6cd63cab7904bfb +Block 0022 [ 22]: 83ad727778cde839 +Block 0022 [ 23]: 9ab8afa2286e842e +Block 0022 [ 24]: edbdb92663550224 +Block 0022 [ 25]: fbd29a092c3e61d4 +Block 0022 [ 26]: c8e6d473fa37ab66 +Block 0022 [ 27]: d673deaa1518e949 +Block 0022 [ 28]: bab2538d9670730a +Block 0022 [ 29]: 8781d6b5b1282389 +Block 0022 [ 30]: 889a278999b787f5 +Block 0022 [ 31]: 5c9130cc500dcff6 +Block 0022 [ 32]: 2aa0f7ccb6d323ce +Block 0022 [ 33]: 98aa0c33857b56ae +Block 0022 [ 34]: dd2d61bed7326a1f +Block 0022 [ 35]: e8ae346eaa70e1b9 +Block 0022 [ 36]: 0ca297ee47dc5c23 +Block 0022 [ 37]: a85828fd8f6a48f1 +Block 0022 [ 38]: 3fada5811a2f45ff +Block 0022 [ 39]: a4a18e6dec23bce2 +Block 0022 [ 40]: 9dde4721c7b04949 +Block 0022 [ 41]: 8fd9ad826dbd0158 +Block 0022 [ 42]: c1ed3966f87f77cc +Block 0022 [ 43]: aa5fc4506ce403a0 +Block 0022 [ 44]: ac4850b5ea87864e +Block 0022 [ 45]: f5735e71c2cb42a4 +Block 0022 [ 46]: 823529430c10d420 +Block 0022 [ 47]: 446df0a78e000e46 +Block 0022 [ 48]: 8771cc750136b8e5 +Block 0022 [ 49]: 2e2628823443a8db +Block 0022 [ 50]: c6a6187323f4cd6b +Block 0022 [ 51]: 265ab59a5990dc4f +Block 0022 [ 52]: b0c3110cdc2358f1 +Block 0022 [ 53]: bcf49b9c3004c09d +Block 0022 [ 54]: 9e83ebc5241caa96 +Block 0022 [ 55]: ef830b3712383b1f +Block 0022 [ 56]: 17f539868f6e9713 +Block 0022 [ 57]: db242d8e258930e1 +Block 0022 [ 58]: 88f6704ee750c93d +Block 0022 [ 59]: 98009f6dfda71343 +Block 0022 [ 60]: 211be7123434fa67 +Block 0022 [ 61]: 06d86941cf2a41d4 +Block 0022 [ 62]: 934e8ed1001c3173 +Block 0022 [ 63]: 5ff02cafaab08125 +Block 0022 [ 64]: 0e9cbe1181a2d948 +Block 0022 [ 65]: d604a87b2427a6d7 +Block 0022 [ 66]: 067b185ccdf74dfe +Block 0022 [ 67]: 52e829ca3ed629ea +Block 0022 [ 68]: 9736d99f80701d87 +Block 0022 [ 69]: 974b0fcce11b2b77 +Block 0022 [ 70]: bd0d279e5421bbb8 +Block 0022 [ 71]: 29ee3bee260e3d67 +Block 0022 [ 72]: ee83a1cb54c014e2 +Block 0022 [ 73]: 2e0108d2ddb29065 +Block 0022 [ 74]: b927a78661625a92 +Block 0022 [ 75]: d320d1edd78cdea1 +Block 0022 [ 76]: 90216cccaa408bcb +Block 0022 [ 77]: a30bf5e18568c173 +Block 0022 [ 78]: c4eeff092463f5bc +Block 0022 [ 79]: 6a02e06c90988918 +Block 0022 [ 80]: 75aa0513c85bee76 +Block 0022 [ 81]: 0d90c10fbfc98f6a +Block 0022 [ 82]: 22b1277d2a8a16f5 +Block 0022 [ 83]: cee277dd005434d8 +Block 0022 [ 84]: 74b9b4123bcd58d4 +Block 0022 [ 85]: 9f595ac2fae9e5d0 +Block 0022 [ 86]: 11abb45b6c9e5e94 +Block 0022 [ 87]: a5b6868faac30a9a +Block 0022 [ 88]: beb8eb90a2d94bdc +Block 0022 [ 89]: 85a2eb37e235c906 +Block 0022 [ 90]: 9812df8e1698ebeb +Block 0022 [ 91]: 80fd679454d57b52 +Block 0022 [ 92]: dedd235f5d241dc2 +Block 0022 [ 93]: 58dc832f313f86c9 +Block 0022 [ 94]: ca49428581158610 +Block 0022 [ 95]: 5592c3992f35b6a0 +Block 0022 [ 96]: e918d5519bc97f48 +Block 0022 [ 97]: dbed179659801803 +Block 0022 [ 98]: f3d1e84ec1682838 +Block 0022 [ 99]: 81d088fb0163ce0c +Block 0022 [100]: 44ab8f0a5f398e60 +Block 0022 [101]: 44d8d113cd76dd7e +Block 0022 [102]: 36bec6685b0e2d9f +Block 0022 [103]: 0eb2d2eac32b9963 +Block 0022 [104]: 4319f79d45e9a910 +Block 0022 [105]: e91892e798e42160 +Block 0022 [106]: fc49ca22cf5ee046 +Block 0022 [107]: ae47cad9b1a1efc0 +Block 0022 [108]: 7a2169fbcb66d15a +Block 0022 [109]: 8f288a3ed7cfb7a4 +Block 0022 [110]: 54c6d694a74d8134 +Block 0022 [111]: eb036b45a1f164cd +Block 0022 [112]: 1c2b92bfca286309 +Block 0022 [113]: d8f1e23b89f1b7fe +Block 0022 [114]: 226ed913a04440a9 +Block 0022 [115]: 820a7e2c62b61278 +Block 0022 [116]: 317c3873e97ad322 +Block 0022 [117]: 5fd5401f349640d4 +Block 0022 [118]: 6c261c7094ca1894 +Block 0022 [119]: 6382563616dde40e +Block 0022 [120]: a38efddd2856ad4e +Block 0022 [121]: 1a69eefa3f5d897c +Block 0022 [122]: d7facfcc348f5df3 +Block 0022 [123]: 774ad01cea97b6a1 +Block 0022 [124]: 310b32b642e47ac4 +Block 0022 [125]: 5cf3f59234fdabd9 +Block 0022 [126]: afcde19d8250f01a +Block 0022 [127]: 73328111c1ff8e50 +Block 0023 [ 0]: faf8e9819ed5bddf +Block 0023 [ 1]: eccb38057063208a +Block 0023 [ 2]: 3adf2ab57c6b8f56 +Block 0023 [ 3]: 7dcf4b78f7bb04b3 +Block 0023 [ 4]: 4d2f1ba17b270c57 +Block 0023 [ 5]: c864e4d4a99505c3 +Block 0023 [ 6]: a982c508981e425a +Block 0023 [ 7]: 84cb024b0c7d338b +Block 0023 [ 8]: 029d5ef435e63d19 +Block 0023 [ 9]: fc3e60863ada3dae +Block 0023 [ 10]: 737600c47f97ce5e +Block 0023 [ 11]: 65217fb0d1dadfca +Block 0023 [ 12]: bedac75aceac13be +Block 0023 [ 13]: 13462535ec401e42 +Block 0023 [ 14]: b90362ff75f3748c +Block 0023 [ 15]: 2f14623975e76b86 +Block 0023 [ 16]: 5da24444ab904020 +Block 0023 [ 17]: cbe1f774a01e2f3b +Block 0023 [ 18]: c5d93ae8ce4b962b +Block 0023 [ 19]: 222078ec418a87f9 +Block 0023 [ 20]: 80eda9084671249c +Block 0023 [ 21]: 407a498fce9f0d04 +Block 0023 [ 22]: d2b0138e498b6e94 +Block 0023 [ 23]: c59c1082ad4b29f6 +Block 0023 [ 24]: 46825537441ee810 +Block 0023 [ 25]: 1042ed08a5bf3469 +Block 0023 [ 26]: 3c0e1d1399319bcc +Block 0023 [ 27]: 123d3ce43366c509 +Block 0023 [ 28]: 00d397e032073e5e +Block 0023 [ 29]: 530fe801dab60de3 +Block 0023 [ 30]: ef7ad81167eb858a +Block 0023 [ 31]: 9492afcc63f9ea32 +Block 0023 [ 32]: bfe0b391b47f7973 +Block 0023 [ 33]: b639f555332b4fe3 +Block 0023 [ 34]: e1129cba1e65010f +Block 0023 [ 35]: e9b83917c8c13e91 +Block 0023 [ 36]: d2670a2b61cacd37 +Block 0023 [ 37]: 4e78ec9b164e5bf1 +Block 0023 [ 38]: 3092b980e27b7a1f +Block 0023 [ 39]: 793e9e597fae61ec +Block 0023 [ 40]: 7dda455f6c75d509 +Block 0023 [ 41]: bec876d0c771025f +Block 0023 [ 42]: b78a89de75325485 +Block 0023 [ 43]: a9f8958f42f33a10 +Block 0023 [ 44]: 0b3447955fb4e758 +Block 0023 [ 45]: 28446ee528e4cd59 +Block 0023 [ 46]: 604e8bd784cd3ba6 +Block 0023 [ 47]: 3c912cc538cca5b3 +Block 0023 [ 48]: 741c792f2c3a4a0b +Block 0023 [ 49]: b4722b59af1a557a +Block 0023 [ 50]: e52547909fcce41c +Block 0023 [ 51]: 68b46f3279fbf078 +Block 0023 [ 52]: 85f8e8bc7cf12bf3 +Block 0023 [ 53]: ad38c4a35d905536 +Block 0023 [ 54]: 063595dad207d323 +Block 0023 [ 55]: f71031a227512f69 +Block 0023 [ 56]: 4ac439cdebafec2d +Block 0023 [ 57]: e078b646b0719629 +Block 0023 [ 58]: 1c4b81ae2e88830d +Block 0023 [ 59]: 79f0d8cdd68f73b6 +Block 0023 [ 60]: a1fafd44511427c7 +Block 0023 [ 61]: 66d93adf43233b03 +Block 0023 [ 62]: 1636143df56e8772 +Block 0023 [ 63]: 5cedadb5f28e2570 +Block 0023 [ 64]: c6ff0ff6a873f2f7 +Block 0023 [ 65]: 199c0fe56105dbd8 +Block 0023 [ 66]: 1d536db41a15e3ec +Block 0023 [ 67]: 2f3c1ccac0000382 +Block 0023 [ 68]: a1f851c2d4b678ff +Block 0023 [ 69]: 0b36f32d125eb826 +Block 0023 [ 70]: 930f979e90e57598 +Block 0023 [ 71]: 12333ed69bef1402 +Block 0023 [ 72]: e687b3b4a3161910 +Block 0023 [ 73]: 12892d2c474af808 +Block 0023 [ 74]: 0a49954cfa818951 +Block 0023 [ 75]: 941d67e1c257e64b +Block 0023 [ 76]: 7e1dab4cc29a7933 +Block 0023 [ 77]: 5680a5c2b4a0093b +Block 0023 [ 78]: 1c8ebc520f63dc7d +Block 0023 [ 79]: 954009640c5cd903 +Block 0023 [ 80]: 55c38777364d760d +Block 0023 [ 81]: ce1a639680c6a023 +Block 0023 [ 82]: 511ee04acd10108e +Block 0023 [ 83]: d1510a9008f09249 +Block 0023 [ 84]: 7b9a19216657b159 +Block 0023 [ 85]: faa8582af2b3db8e +Block 0023 [ 86]: c4061811ead08447 +Block 0023 [ 87]: cad84668ae016d39 +Block 0023 [ 88]: ef3640496cc9588a +Block 0023 [ 89]: ac39f3b0ceb4aa9a +Block 0023 [ 90]: b26a9ecd567574dc +Block 0023 [ 91]: 00998111e686b2c9 +Block 0023 [ 92]: 973a00f3999a3a92 +Block 0023 [ 93]: c161a546f0c3e1b2 +Block 0023 [ 94]: de438b4c09d5854c +Block 0023 [ 95]: 54d7959cb76b95c8 +Block 0023 [ 96]: 55f7e6bcaac2d916 +Block 0023 [ 97]: 2a5de324b05240c4 +Block 0023 [ 98]: 1ac57ed83b36faad +Block 0023 [ 99]: da4099839839045b +Block 0023 [100]: 948131c194fe93e7 +Block 0023 [101]: 25001100a7255b6f +Block 0023 [102]: 7d5e296f2bf89d76 +Block 0023 [103]: 14a719781b1d50c8 +Block 0023 [104]: b5e48bd6f1ae0d9c +Block 0023 [105]: 69fe928c15164672 +Block 0023 [106]: 84aedfb328f02943 +Block 0023 [107]: ef8562e07624e197 +Block 0023 [108]: 5a6c16acadaa34be +Block 0023 [109]: 88867f07c62771b1 +Block 0023 [110]: f64097b47fe933c2 +Block 0023 [111]: 51859b2ba28f5018 +Block 0023 [112]: c96039bb54f111cc +Block 0023 [113]: e1b258bd6911df4e +Block 0023 [114]: 0815493ac5753d45 +Block 0023 [115]: 1f518bdb944073fb +Block 0023 [116]: 5333e99b8fba57ce +Block 0023 [117]: b6f8303b0458a5b4 +Block 0023 [118]: 1aa8b1886f0b33bf +Block 0023 [119]: 2c35ae0c01ff50ef +Block 0023 [120]: 6654fb783d5aa92d +Block 0023 [121]: 1e4340d082bc77c4 +Block 0023 [122]: 69d9b51e51cd50ec +Block 0023 [123]: 4235db7b068113c4 +Block 0023 [124]: fdc2d233d7d7bafa +Block 0023 [125]: a18c7f0cdd7e8890 +Block 0023 [126]: 5b42758a3efe822b +Block 0023 [127]: f4638cf24778606d +Block 0024 [ 0]: eede245f62d6b577 +Block 0024 [ 1]: c6b62ea9fdc6142b +Block 0024 [ 2]: 07a53b2091483089 +Block 0024 [ 3]: 1c93aea4d9a35d62 +Block 0024 [ 4]: c1c60c54c0c0d661 +Block 0024 [ 5]: 332221c32a0d4d91 +Block 0024 [ 6]: f308d5930bec5a1d +Block 0024 [ 7]: c82a96464710a6db +Block 0024 [ 8]: 13baec0de6add849 +Block 0024 [ 9]: b21027d16856a35c +Block 0024 [ 10]: d4120090de5d2acf +Block 0024 [ 11]: d59cf58286fd56b6 +Block 0024 [ 12]: f1eee49bc25f62ea +Block 0024 [ 13]: 80dcd989334316cb +Block 0024 [ 14]: 8fa965baa1026e5e +Block 0024 [ 15]: 23004dfde370bcff +Block 0024 [ 16]: 1bf2b01c7eaea454 +Block 0024 [ 17]: f28c8ba81c2679e2 +Block 0024 [ 18]: 48a7f8e65ea3c438 +Block 0024 [ 19]: 1860f45e52dbdff8 +Block 0024 [ 20]: a6541ed3cfe56f87 +Block 0024 [ 21]: c0c390bf2874899f +Block 0024 [ 22]: 8cda1867dd43bae3 +Block 0024 [ 23]: 7e3737d3238e4828 +Block 0024 [ 24]: 0554841098d2f975 +Block 0024 [ 25]: ba874d0cfbe4b8ab +Block 0024 [ 26]: 3d4ee63595093a5a +Block 0024 [ 27]: 1831ccf9f743da0f +Block 0024 [ 28]: 256415728708fdcf +Block 0024 [ 29]: b89ac656cc195d25 +Block 0024 [ 30]: 762e4d59c63b9928 +Block 0024 [ 31]: 1c8e480bbeca26b1 +Block 0024 [ 32]: 338efb2028c0d276 +Block 0024 [ 33]: 4e65e5221e6c5930 +Block 0024 [ 34]: 7be1b555ee8e1874 +Block 0024 [ 35]: 73de51347a49cc52 +Block 0024 [ 36]: 5151e631e2068475 +Block 0024 [ 37]: cb849b87e9fbb077 +Block 0024 [ 38]: a80d236c4eaad045 +Block 0024 [ 39]: c4743fd9a8ab34f2 +Block 0024 [ 40]: 05086ce35f1883f3 +Block 0024 [ 41]: f0c6c851c57f3f3a +Block 0024 [ 42]: baee7da68afca3f7 +Block 0024 [ 43]: 9df2ab3434594dd8 +Block 0024 [ 44]: 21de27a863a0aff4 +Block 0024 [ 45]: 8c6e79b495631870 +Block 0024 [ 46]: f0040b82d1f897ab +Block 0024 [ 47]: 4997a4b76d71ff0f +Block 0024 [ 48]: 77d45defbcbac7d3 +Block 0024 [ 49]: 4a6d6b54eefd88f3 +Block 0024 [ 50]: a25ebeab65950052 +Block 0024 [ 51]: d1479e6759f85ac8 +Block 0024 [ 52]: 73b34805eb4c7a5d +Block 0024 [ 53]: 1839fb1fa6848c68 +Block 0024 [ 54]: b16fcedc4a4c8c10 +Block 0024 [ 55]: 16742af6d1a4e07f +Block 0024 [ 56]: 38902d0357d9cd3b +Block 0024 [ 57]: e876ace74310956a +Block 0024 [ 58]: 625cc2ce73444d0e +Block 0024 [ 59]: 5f56ff8c51eae272 +Block 0024 [ 60]: 07d4f94ae96c62e9 +Block 0024 [ 61]: 8995abc4d648eb30 +Block 0024 [ 62]: 61a9f3fe748a4f06 +Block 0024 [ 63]: cf61aa691d442796 +Block 0024 [ 64]: 338b61d249f3b5e9 +Block 0024 [ 65]: 717365edf81451f1 +Block 0024 [ 66]: 9a742011e04f375d +Block 0024 [ 67]: 3c0252fe6de830ef +Block 0024 [ 68]: 6899219a79fdc193 +Block 0024 [ 69]: 504a88f79250caa8 +Block 0024 [ 70]: f4e05155f4831a41 +Block 0024 [ 71]: 62fee29baa3057cb +Block 0024 [ 72]: 3390df119145c16c +Block 0024 [ 73]: d906cdd000e605a7 +Block 0024 [ 74]: 325fb08618b04c18 +Block 0024 [ 75]: 2acbe70a78ff91aa +Block 0024 [ 76]: 5c96139edb859139 +Block 0024 [ 77]: 8da58b7f1bd0ac62 +Block 0024 [ 78]: 8e2f4141ed578ad4 +Block 0024 [ 79]: caea07cd0ce4b5bb +Block 0024 [ 80]: a7c2ffdd3516b9e4 +Block 0024 [ 81]: ac43c5e993b9ce14 +Block 0024 [ 82]: 481b6801f8c2063d +Block 0024 [ 83]: 0841d396219513f6 +Block 0024 [ 84]: 3d80af294dfd644d +Block 0024 [ 85]: 1befd999c362b731 +Block 0024 [ 86]: dea7977c821944f3 +Block 0024 [ 87]: 4da1b2e0d258d35d +Block 0024 [ 88]: 23a9c13ca2a0b486 +Block 0024 [ 89]: 7ba4f890dfd2b82c +Block 0024 [ 90]: 27cfe434289ae1c4 +Block 0024 [ 91]: 68ae670da4c955bf +Block 0024 [ 92]: a1c07262a98aeb32 +Block 0024 [ 93]: 2f6b00fabadaac7c +Block 0024 [ 94]: 0b5225ee63dabb02 +Block 0024 [ 95]: 3a6700470ef3e0e2 +Block 0024 [ 96]: c27e4da0a2ee8b4d +Block 0024 [ 97]: 4ce0d0d2911807e5 +Block 0024 [ 98]: 884397c050782809 +Block 0024 [ 99]: 381d7284b47cc0c7 +Block 0024 [100]: 76218d054ed13066 +Block 0024 [101]: 3e55924005389d0e +Block 0024 [102]: 4e4e054ee33ce746 +Block 0024 [103]: bf52a035a9414a25 +Block 0024 [104]: 7aa1b6ccaf1d8994 +Block 0024 [105]: 3dc748c450ed599e +Block 0024 [106]: 8cacad0b108b0f28 +Block 0024 [107]: 1a432b914c8d5210 +Block 0024 [108]: 7d818e692d3f9972 +Block 0024 [109]: edea37c6abb5dfa2 +Block 0024 [110]: cd092a596f8ec84d +Block 0024 [111]: d126fb730532177a +Block 0024 [112]: 3644902afe1a1fb5 +Block 0024 [113]: ab379711a8617714 +Block 0024 [114]: 5cedc841b324d74f +Block 0024 [115]: 7a1923e48401c96b +Block 0024 [116]: 0d13f3c7afedf5ce +Block 0024 [117]: 3a254a12b84e65c2 +Block 0024 [118]: d2b9727614bd0d81 +Block 0024 [119]: 44e2f34c09858189 +Block 0024 [120]: 166b8e0202435648 +Block 0024 [121]: ccabaea87b867ba8 +Block 0024 [122]: 04730c71031c17b0 +Block 0024 [123]: 5dc755d938cb2582 +Block 0024 [124]: a959def8cc5e35b5 +Block 0024 [125]: 0be10f243c731296 +Block 0024 [126]: 0b297eb58896c6b3 +Block 0024 [127]: 7824efd8483d8404 +Block 0025 [ 0]: 889096729509e78f +Block 0025 [ 1]: 26504b43a3100a77 +Block 0025 [ 2]: fbd049c773a1b6ad +Block 0025 [ 3]: eb252d4ae7f1aa63 +Block 0025 [ 4]: f9589a22c2b52a79 +Block 0025 [ 5]: cee8068ebcc7d015 +Block 0025 [ 6]: 21d4347432ee8ffb +Block 0025 [ 7]: 0f47228c6bb465a0 +Block 0025 [ 8]: bdc2c807d0b93a9e +Block 0025 [ 9]: 93b6f9ff6cf28394 +Block 0025 [ 10]: 269f5146a44db948 +Block 0025 [ 11]: 582214ba08e90d6b +Block 0025 [ 12]: a9a68dba1d170a12 +Block 0025 [ 13]: ef85ecbd10051753 +Block 0025 [ 14]: 06851cfd8c42322f +Block 0025 [ 15]: a4d5a440a88d43be +Block 0025 [ 16]: 989dc221ec5b9c58 +Block 0025 [ 17]: 474f59f0f6ff1af4 +Block 0025 [ 18]: 125416e66c19634f +Block 0025 [ 19]: 10215d521ffcd58e +Block 0025 [ 20]: e3f09f59d9104eb3 +Block 0025 [ 21]: 586e10dccc5020b9 +Block 0025 [ 22]: 0a768305fbc81885 +Block 0025 [ 23]: d14874001b4e4e1b +Block 0025 [ 24]: c8547ecfa52d48c7 +Block 0025 [ 25]: ce6b1e03845c17bd +Block 0025 [ 26]: fe11c378c83a2fbe +Block 0025 [ 27]: 8d1d43284d915d96 +Block 0025 [ 28]: 5727fa24758d9ed0 +Block 0025 [ 29]: 5b0b345f44d4f221 +Block 0025 [ 30]: 5c49add60390df39 +Block 0025 [ 31]: d1e23f9755e06462 +Block 0025 [ 32]: 3eb908b7f7ac2f1e +Block 0025 [ 33]: 7a3e86d7ff618c2c +Block 0025 [ 34]: c6b860295828261a +Block 0025 [ 35]: aa89774a7391397f +Block 0025 [ 36]: b3c4c8a8e2d6bce2 +Block 0025 [ 37]: 7ec5d12cd0535cc1 +Block 0025 [ 38]: 921353ef549581ee +Block 0025 [ 39]: bd1222482408e2fd +Block 0025 [ 40]: d4e2ba07d4b4b8cc +Block 0025 [ 41]: bafd05d23599cee3 +Block 0025 [ 42]: de67ee39feea0dc8 +Block 0025 [ 43]: 2b78f8b27eb882b4 +Block 0025 [ 44]: e9b625124d311892 +Block 0025 [ 45]: 98b2752764b4242a +Block 0025 [ 46]: 9362523bc3747c43 +Block 0025 [ 47]: 1c2a20d8c40f7892 +Block 0025 [ 48]: 5dd771a35bc3a0f9 +Block 0025 [ 49]: b08916d994485d92 +Block 0025 [ 50]: 9cc23af3e5b71b77 +Block 0025 [ 51]: fdc1a420cfdbfeeb +Block 0025 [ 52]: 671430b738686c6d +Block 0025 [ 53]: 9e263c7e72dcd4e4 +Block 0025 [ 54]: 808ef8d04feaed7e +Block 0025 [ 55]: 0c3977d862a087b3 +Block 0025 [ 56]: da21711205931d65 +Block 0025 [ 57]: 57e9163e89a92b2d +Block 0025 [ 58]: f6d9b7c75e22884a +Block 0025 [ 59]: 53df53f21c5ea344 +Block 0025 [ 60]: ce09a21b516d77c2 +Block 0025 [ 61]: dc90da4a018d70d5 +Block 0025 [ 62]: 9c2bee3bf5be28f9 +Block 0025 [ 63]: 9b14f3d069e0cc8f +Block 0025 [ 64]: 5dfa874c5de65c73 +Block 0025 [ 65]: 41d8f48bf256f7b5 +Block 0025 [ 66]: 2c54c97b6bdd1922 +Block 0025 [ 67]: 8fdd86c673d73ceb +Block 0025 [ 68]: 2ddcdadc28e483ec +Block 0025 [ 69]: 448999231656a9a2 +Block 0025 [ 70]: c5c6a22e814c20da +Block 0025 [ 71]: fb4b60da77b78d76 +Block 0025 [ 72]: 8d75e91ace57a779 +Block 0025 [ 73]: dce603b830d17e29 +Block 0025 [ 74]: c0fb7a05b851bb35 +Block 0025 [ 75]: bec24336a6634ce4 +Block 0025 [ 76]: b55f22fde59c3c73 +Block 0025 [ 77]: bb8ec536ffb476bc +Block 0025 [ 78]: c0071e75308ba8bb +Block 0025 [ 79]: 0bbf0dd52d5a7851 +Block 0025 [ 80]: 15162c10635898d5 +Block 0025 [ 81]: 0bf8bf14a900705f +Block 0025 [ 82]: 080296ee3c6634a9 +Block 0025 [ 83]: 00b4294bf795c0fa +Block 0025 [ 84]: c54eedcb4aa6b04d +Block 0025 [ 85]: 4dce146af1deee86 +Block 0025 [ 86]: b5756a48df564404 +Block 0025 [ 87]: 3b57c67dab0f2b0d +Block 0025 [ 88]: ea8543a2e6c25c74 +Block 0025 [ 89]: 7e0b4eed8f64f29a +Block 0025 [ 90]: ab6d723b4b394b67 +Block 0025 [ 91]: af40edc026dc2ba1 +Block 0025 [ 92]: 3c29390e269e5370 +Block 0025 [ 93]: 5dd8288dc9b5d1df +Block 0025 [ 94]: 580507dfc21aacfb +Block 0025 [ 95]: 71ded7a2579ce4f7 +Block 0025 [ 96]: 11960be7aaa8b291 +Block 0025 [ 97]: 4c1ad7455e167c48 +Block 0025 [ 98]: ace29f6a0682b5cf +Block 0025 [ 99]: be946a8dc92261e1 +Block 0025 [100]: 222c5dd20af62343 +Block 0025 [101]: a0775badb4aff215 +Block 0025 [102]: 3c9f963838fb6d7e +Block 0025 [103]: 4610d1f8e37983e0 +Block 0025 [104]: dbf7cef0b1205e12 +Block 0025 [105]: 2e9bc9577a01c3d5 +Block 0025 [106]: 4b6af5055b61fa2b +Block 0025 [107]: b34c71830d8049d2 +Block 0025 [108]: 950edfdd91e5039a +Block 0025 [109]: 2d6a84d97cadb803 +Block 0025 [110]: f39c28169a8e3866 +Block 0025 [111]: ec6b338b4691fdc4 +Block 0025 [112]: bdfd62ce06287de0 +Block 0025 [113]: ca64badc1cdd288b +Block 0025 [114]: ddbe34f9611eb577 +Block 0025 [115]: ff863bdd914bec12 +Block 0025 [116]: e10bb8be4463770c +Block 0025 [117]: 6f8f73d44abb7141 +Block 0025 [118]: e4b1d9c741f6a21c +Block 0025 [119]: 1c04f10cdd385724 +Block 0025 [120]: b174b35f63d28944 +Block 0025 [121]: 456e620925bf1183 +Block 0025 [122]: 3e842a5ffbcaff84 +Block 0025 [123]: 5f15a4541e8d31c2 +Block 0025 [124]: 4a1fb9f305052b69 +Block 0025 [125]: dd5a871c34527adf +Block 0025 [126]: 8c9555e9a3e8db72 +Block 0025 [127]: 916f214630c35e17 +Block 0026 [ 0]: 2326110607fb8417 +Block 0026 [ 1]: 21b903b553877ad5 +Block 0026 [ 2]: 7bf33b6460d88269 +Block 0026 [ 3]: bba47143c058e26b +Block 0026 [ 4]: 2afe479df5bc918c +Block 0026 [ 5]: b5c079c195f10ebb +Block 0026 [ 6]: a044c29d531bf3b5 +Block 0026 [ 7]: 56f1163c045bb5fe +Block 0026 [ 8]: b1ce2026934db6a6 +Block 0026 [ 9]: 960e96adf333dca7 +Block 0026 [ 10]: 18bf65450e272e42 +Block 0026 [ 11]: f5a21856543a7b9d +Block 0026 [ 12]: 645ea64c689df21b +Block 0026 [ 13]: e88bf5f0b955b02f +Block 0026 [ 14]: 173079ea4b1f8103 +Block 0026 [ 15]: 3d84f3c858f0ccd3 +Block 0026 [ 16]: 760b040af26a6bf2 +Block 0026 [ 17]: bbfb4c8b40e1d3e6 +Block 0026 [ 18]: 94d0e5dd9242dade +Block 0026 [ 19]: 2e2442678afc3aa3 +Block 0026 [ 20]: 353afcd33f4afa1a +Block 0026 [ 21]: ee4e5d3cee3e4781 +Block 0026 [ 22]: 6da71c25f9f701ce +Block 0026 [ 23]: 22f0b96255b98c5a +Block 0026 [ 24]: acda353def1501a8 +Block 0026 [ 25]: 6e2ab8c1cc80c3c2 +Block 0026 [ 26]: e1346169d7e5b09c +Block 0026 [ 27]: 45c9152befd73b11 +Block 0026 [ 28]: 8c05ab64b0ca9770 +Block 0026 [ 29]: 2de1a8a073329d58 +Block 0026 [ 30]: f8f6cc6e4937aa1b +Block 0026 [ 31]: b393299e7441c42b +Block 0026 [ 32]: 0e1e9127e5d82ca7 +Block 0026 [ 33]: d9e7f884fb9ee6ea +Block 0026 [ 34]: 55d357a28fcf5eea +Block 0026 [ 35]: f576e6e9dec9afd7 +Block 0026 [ 36]: 636f2ad51c9aa17f +Block 0026 [ 37]: 8295f555f60629fa +Block 0026 [ 38]: 221787f92c6c7b8c +Block 0026 [ 39]: ee58f217a2ab0f23 +Block 0026 [ 40]: 8829bc3c625a98e5 +Block 0026 [ 41]: c881d4c765796859 +Block 0026 [ 42]: 1b64a1dc1b25c4c8 +Block 0026 [ 43]: f721e2fe7139e377 +Block 0026 [ 44]: d772ffbaff52e88d +Block 0026 [ 45]: 025700398018d483 +Block 0026 [ 46]: 91e64ffe14eae36f +Block 0026 [ 47]: cc697adbae578f77 +Block 0026 [ 48]: 6f08adbdca0bdcca +Block 0026 [ 49]: 98b466ad258f6b37 +Block 0026 [ 50]: a0f5d3967adf3fca +Block 0026 [ 51]: 7f55d062e14d1007 +Block 0026 [ 52]: 35d6e09308b0911e +Block 0026 [ 53]: 388da57d96f7e6d9 +Block 0026 [ 54]: 1852c831a455e118 +Block 0026 [ 55]: ee9971f15fe61186 +Block 0026 [ 56]: 3d9082f42b74ad35 +Block 0026 [ 57]: a438c3d34632fe2a +Block 0026 [ 58]: b4662befdf3c5ef1 +Block 0026 [ 59]: 48c830419f16033c +Block 0026 [ 60]: d73a1597abfd5bd9 +Block 0026 [ 61]: 92c1097e4689a942 +Block 0026 [ 62]: 23af79f5ad04dfed +Block 0026 [ 63]: 17cfa050f7849186 +Block 0026 [ 64]: 2ddfa8eff84229be +Block 0026 [ 65]: d2497269ae78a31f +Block 0026 [ 66]: aed694da1b5e26c2 +Block 0026 [ 67]: 440119e2e1622879 +Block 0026 [ 68]: c20615b4339db9e5 +Block 0026 [ 69]: 40507bb2ae718a09 +Block 0026 [ 70]: 009544db73aca08f +Block 0026 [ 71]: e3cbc7a0b359738e +Block 0026 [ 72]: 5f5c27f846aae2ab +Block 0026 [ 73]: 90a2ac6ad788b5a7 +Block 0026 [ 74]: 7c62662eebd39cff +Block 0026 [ 75]: 8a74179c8de76ffb +Block 0026 [ 76]: ddc0b6c5d5b098fe +Block 0026 [ 77]: d2ece0d030c8fbb0 +Block 0026 [ 78]: 997b8866ce9776ea +Block 0026 [ 79]: a43e344f370b3a57 +Block 0026 [ 80]: bac0ea91e352be1c +Block 0026 [ 81]: f01b639687e116bc +Block 0026 [ 82]: 960021d6f3a14e28 +Block 0026 [ 83]: 66da0b9f7a6f4578 +Block 0026 [ 84]: cfeabacf62e0980f +Block 0026 [ 85]: 91e586937a842ba8 +Block 0026 [ 86]: 3d1edbdf53bcc328 +Block 0026 [ 87]: fe5db209ef765995 +Block 0026 [ 88]: 09dae8069afa3d9f +Block 0026 [ 89]: 642b6eefcc740e1d +Block 0026 [ 90]: 4e966039b4a33618 +Block 0026 [ 91]: 43a2c47ee03be541 +Block 0026 [ 92]: ef2d8306430732d2 +Block 0026 [ 93]: ba85666f042ac669 +Block 0026 [ 94]: 6feec7335af83185 +Block 0026 [ 95]: fa2030d6bd78c524 +Block 0026 [ 96]: 47f0b74e4cbb7eda +Block 0026 [ 97]: 6da6378c64c7ce1f +Block 0026 [ 98]: 5a9e6857b6a5289c +Block 0026 [ 99]: caade4b95bdfd06f +Block 0026 [100]: a2d84e8435913de6 +Block 0026 [101]: 34cc36e53cb7bcb9 +Block 0026 [102]: 702ea8254a5b7678 +Block 0026 [103]: aca6662a073790b3 +Block 0026 [104]: d3e8062924413a1d +Block 0026 [105]: d35eb40e29a1ab60 +Block 0026 [106]: d7d8dace18d04b73 +Block 0026 [107]: a485fec173de15ed +Block 0026 [108]: 9e985148c2f9e73e +Block 0026 [109]: 1bc9a4156367266f +Block 0026 [110]: 92088b95d082b203 +Block 0026 [111]: 7411e3d921612b6b +Block 0026 [112]: d7a0707c5b8dfffb +Block 0026 [113]: 3a69e8206ac6bab2 +Block 0026 [114]: 681fcdcf147b5797 +Block 0026 [115]: e3f729a959d114f1 +Block 0026 [116]: 1c27652b63160462 +Block 0026 [117]: aa4a57250c8ba710 +Block 0026 [118]: 7749feff623165bd +Block 0026 [119]: c7424c1ba697125e +Block 0026 [120]: c8c9202a695524c7 +Block 0026 [121]: 8557a3857e1ce2ae +Block 0026 [122]: bdd7467b6dcb5b80 +Block 0026 [123]: 818b955fdbe8ea65 +Block 0026 [124]: 5b4cba042cf69bd4 +Block 0026 [125]: 4c5de11255f2c061 +Block 0026 [126]: ef15e5aeca3dbb79 +Block 0026 [127]: 6d08853bd67bf454 +Block 0027 [ 0]: 1b9e0a2a48f03548 +Block 0027 [ 1]: 79d13f7464dfe544 +Block 0027 [ 2]: ae09bc1e24b9eb78 +Block 0027 [ 3]: 5c9dc0dade572ed1 +Block 0027 [ 4]: f5938effd3acac03 +Block 0027 [ 5]: 1c07f12951ab8c4d +Block 0027 [ 6]: 24430282ba5c1d54 +Block 0027 [ 7]: a6b6b6e3ad35b065 +Block 0027 [ 8]: 867d937a7f04fc08 +Block 0027 [ 9]: 530134b0935bab05 +Block 0027 [ 10]: 2ba6e88fbc07b2ae +Block 0027 [ 11]: ba41f5c456dc4700 +Block 0027 [ 12]: adce9ae24bbd8c39 +Block 0027 [ 13]: d2fd86dde81b100c +Block 0027 [ 14]: 7af41baa6ea9a086 +Block 0027 [ 15]: 6eabe51c178df50f +Block 0027 [ 16]: 201e933537af8b09 +Block 0027 [ 17]: d25c2965cb10515d +Block 0027 [ 18]: b1efcc4a704af07d +Block 0027 [ 19]: 8785462fbd5cf444 +Block 0027 [ 20]: b57c06385432db42 +Block 0027 [ 21]: 70dd9f26e498c6a1 +Block 0027 [ 22]: cc22b2a4f0abdd3b +Block 0027 [ 23]: 1194085fcfe927a4 +Block 0027 [ 24]: db74fcdece66f9f4 +Block 0027 [ 25]: 3ccd6b68246b978b +Block 0027 [ 26]: ca025c07ce8350f8 +Block 0027 [ 27]: 5e8982b4a36d138a +Block 0027 [ 28]: bf37b6c0aa764378 +Block 0027 [ 29]: bbfa64d026622763 +Block 0027 [ 30]: 751189774b34475d +Block 0027 [ 31]: 5438b191939688ee +Block 0027 [ 32]: 736af831e42315b8 +Block 0027 [ 33]: e7189b709e88e8d6 +Block 0027 [ 34]: 37eee5970edc1e23 +Block 0027 [ 35]: b80aaf8f94ee1561 +Block 0027 [ 36]: 9141705d6a2c0863 +Block 0027 [ 37]: 10cd015b94f60ac6 +Block 0027 [ 38]: 373292f9c6b9e3d3 +Block 0027 [ 39]: 4906ca8fd4933a34 +Block 0027 [ 40]: 5425ba952f1c2b16 +Block 0027 [ 41]: ba91ab6c019d10b5 +Block 0027 [ 42]: ae1813ab9eb3f165 +Block 0027 [ 43]: 80ce5f31929c977e +Block 0027 [ 44]: 9cb8f3c169cfc2ea +Block 0027 [ 45]: caeafec4696d86fb +Block 0027 [ 46]: b5d1dab3619428b8 +Block 0027 [ 47]: 2dc1b1f6148a1945 +Block 0027 [ 48]: 2b36aa468d722a62 +Block 0027 [ 49]: f89f92967c61807b +Block 0027 [ 50]: 8bb5c07804484e62 +Block 0027 [ 51]: 1f495abf9906b02c +Block 0027 [ 52]: f8d4f663a8db2006 +Block 0027 [ 53]: 37b5730fc4bc7bb8 +Block 0027 [ 54]: 474e85daaa7f8f4c +Block 0027 [ 55]: 103c08f71ca71f7d +Block 0027 [ 56]: f6ee3f551142f93d +Block 0027 [ 57]: df49d32e32813a59 +Block 0027 [ 58]: 7893d42f39de58c1 +Block 0027 [ 59]: 612d282bf0114e57 +Block 0027 [ 60]: 06526d52faa7c46f +Block 0027 [ 61]: ef0a4a21543b4210 +Block 0027 [ 62]: 659aad06a6dac23b +Block 0027 [ 63]: 83349711eaf33ff6 +Block 0027 [ 64]: 2619d9d15a1f40a1 +Block 0027 [ 65]: 0d6e01f3a6780617 +Block 0027 [ 66]: 537b02711650672b +Block 0027 [ 67]: f2f8e6138ef4f708 +Block 0027 [ 68]: c979e70587b593e8 +Block 0027 [ 69]: 598534c232f66a7b +Block 0027 [ 70]: aaa5368ca7adf19e +Block 0027 [ 71]: fbd81073ff635f77 +Block 0027 [ 72]: c511c8fdb4816452 +Block 0027 [ 73]: dabdda9675b10982 +Block 0027 [ 74]: ce6811b03950e826 +Block 0027 [ 75]: fc9eaed22fc499aa +Block 0027 [ 76]: f7ab1b9e96c241f1 +Block 0027 [ 77]: 90f391f585de581d +Block 0027 [ 78]: 3393d992ef6ec67d +Block 0027 [ 79]: dc1542690885d37b +Block 0027 [ 80]: 3b6a43d43bb4a8f1 +Block 0027 [ 81]: 1ccbba638d9ebf11 +Block 0027 [ 82]: 34e474ffaa3ae841 +Block 0027 [ 83]: 10b28634c65339de +Block 0027 [ 84]: 89962338c5ec0536 +Block 0027 [ 85]: 4066ccc9321462bf +Block 0027 [ 86]: 9158b68f05139c91 +Block 0027 [ 87]: eafb568fd6c32965 +Block 0027 [ 88]: 5d0afd995ccf6838 +Block 0027 [ 89]: 5467f717aa461520 +Block 0027 [ 90]: 3f46d011a0aa6852 +Block 0027 [ 91]: 5be8246d25d1e221 +Block 0027 [ 92]: 0411b41ce73cf8d3 +Block 0027 [ 93]: f4603c9d26fdabc5 +Block 0027 [ 94]: 0bea0ce54205b484 +Block 0027 [ 95]: 676106d61b20001a +Block 0027 [ 96]: ae1363d24d05bb51 +Block 0027 [ 97]: b137b076a0bd62c3 +Block 0027 [ 98]: b2a47ba9c55e2008 +Block 0027 [ 99]: cb536401ca240734 +Block 0027 [100]: bc644a7e4db2fbcb +Block 0027 [101]: d4657f37c824c0b1 +Block 0027 [102]: 2e43c799ce19ba2a +Block 0027 [103]: 71f4e39a7105f08c +Block 0027 [104]: cd60684a48c35aae +Block 0027 [105]: 630e5d2c33dd141e +Block 0027 [106]: 644c3710f4e576b8 +Block 0027 [107]: e0a79b23fcecda7e +Block 0027 [108]: ae487ac85808d582 +Block 0027 [109]: 310c4b78ed84735f +Block 0027 [110]: 8869ccf9539f8d29 +Block 0027 [111]: e961d241232d8eb4 +Block 0027 [112]: e08dbd615c20c18b +Block 0027 [113]: d27009a6d7f7383a +Block 0027 [114]: fb086f56179222d1 +Block 0027 [115]: 318b6465bf6f11e6 +Block 0027 [116]: 1096b60a36bc2adc +Block 0027 [117]: 5a19cb04e9138bd5 +Block 0027 [118]: d70194664ef36242 +Block 0027 [119]: 66b5846972e6d4b5 +Block 0027 [120]: a9ed1ab8cf8eda55 +Block 0027 [121]: ac4a13bc160e8dbc +Block 0027 [122]: 36c095d46c0fd19f +Block 0027 [123]: d884e38b9dbee228 +Block 0027 [124]: 19fd4af11f29f87f +Block 0027 [125]: c59730708224a0ad +Block 0027 [126]: ab650e5c4054b735 +Block 0027 [127]: 70f375ab9c7e144e +Block 0028 [ 0]: 97232791402bcb44 +Block 0028 [ 1]: 35f792c0b2f4984b +Block 0028 [ 2]: 3226a2aea0ebf600 +Block 0028 [ 3]: 7fe74755e5f13d9e +Block 0028 [ 4]: f3d5b6f172056b7d +Block 0028 [ 5]: e94896db4a53432b +Block 0028 [ 6]: 45630e66b33caf9d +Block 0028 [ 7]: 5b3b5a0b10aad49b +Block 0028 [ 8]: 309b69543ee4a396 +Block 0028 [ 9]: 7d170df8695dfdc0 +Block 0028 [ 10]: 294542494a30d442 +Block 0028 [ 11]: 3ffe9c43d6b9c1df +Block 0028 [ 12]: db7ef4608692decc +Block 0028 [ 13]: fbc4dca927251720 +Block 0028 [ 14]: 5039450e98f1c2a1 +Block 0028 [ 15]: 8bc1f444fa5731ae +Block 0028 [ 16]: 83d87fd302dfec84 +Block 0028 [ 17]: abbd969ea7fc60db +Block 0028 [ 18]: b4e0305c8e8631dc +Block 0028 [ 19]: da6a912f0b3017cf +Block 0028 [ 20]: 9d0be0c7dad3eac9 +Block 0028 [ 21]: 0b88a014922d1de9 +Block 0028 [ 22]: b543e19840551a05 +Block 0028 [ 23]: 270e6f8a4712c6e4 +Block 0028 [ 24]: e95d6fb939fa034e +Block 0028 [ 25]: e8e03357bebe3443 +Block 0028 [ 26]: b405c25554d5c7b5 +Block 0028 [ 27]: b32ec2395f791b42 +Block 0028 [ 28]: d2813288d84d51f4 +Block 0028 [ 29]: e4f492ae99d62fc9 +Block 0028 [ 30]: e58241d84db85374 +Block 0028 [ 31]: d4270cccafb0d652 +Block 0028 [ 32]: 0f504b2abf3fffdd +Block 0028 [ 33]: 942c9a112e819d77 +Block 0028 [ 34]: cf69b53975cd82ac +Block 0028 [ 35]: cbdcbd422cfdeaae +Block 0028 [ 36]: 04e8634692186628 +Block 0028 [ 37]: 0fc7ca7bc72f1a50 +Block 0028 [ 38]: 35a9f84173bd61bd +Block 0028 [ 39]: 045006fdb2984625 +Block 0028 [ 40]: a66cf861729ba243 +Block 0028 [ 41]: 51b2bae79c014af5 +Block 0028 [ 42]: 51d30a112158b84a +Block 0028 [ 43]: 00bf5e0aac36c45d +Block 0028 [ 44]: 81bf6d928cd7d70a +Block 0028 [ 45]: 6980b3c243c53ab8 +Block 0028 [ 46]: f21ad5f134ad738b +Block 0028 [ 47]: 5e68587e40d67c25 +Block 0028 [ 48]: 1601c62c372c34f7 +Block 0028 [ 49]: ef991ed46d8962bb +Block 0028 [ 50]: c46aaf9aad78363c +Block 0028 [ 51]: ae3d60d0f936b476 +Block 0028 [ 52]: 586497acea9f825f +Block 0028 [ 53]: 1e5e9b93f8e908b4 +Block 0028 [ 54]: 84150a537817bbed +Block 0028 [ 55]: 9c90f15684c67664 +Block 0028 [ 56]: 748bce5e9ace006c +Block 0028 [ 57]: 40806573bfee5c67 +Block 0028 [ 58]: e3733f18a4c45c64 +Block 0028 [ 59]: 57daf992dedd6bd8 +Block 0028 [ 60]: 576e707078a8fdf4 +Block 0028 [ 61]: a666874b98a57c09 +Block 0028 [ 62]: 2f46e59e30aced2e +Block 0028 [ 63]: 227c2fbdab49e93b +Block 0028 [ 64]: 22dc42d4f0c4ff92 +Block 0028 [ 65]: 68d18cd2f1a92b20 +Block 0028 [ 66]: f0901635eb95dfe6 +Block 0028 [ 67]: ebbf5fc8f1c08a24 +Block 0028 [ 68]: 3560e312285ddca2 +Block 0028 [ 69]: 286222d30dd6e292 +Block 0028 [ 70]: 0e38078f4970af1a +Block 0028 [ 71]: a4b5730f656a7f48 +Block 0028 [ 72]: 5490a1f601b9815d +Block 0028 [ 73]: a55db213eb190453 +Block 0028 [ 74]: 31e4ae9fe533b445 +Block 0028 [ 75]: 1785f0289aefae64 +Block 0028 [ 76]: 7335275f1235e537 +Block 0028 [ 77]: 4bbf52e14238737a +Block 0028 [ 78]: 6861fe9ddce61ee8 +Block 0028 [ 79]: e60dadb10ce28e0e +Block 0028 [ 80]: 814f56901266955d +Block 0028 [ 81]: b70226ef0a619175 +Block 0028 [ 82]: 655ee0e452b64755 +Block 0028 [ 83]: 559e78bc00e00d4c +Block 0028 [ 84]: 2d365d7d806b2c66 +Block 0028 [ 85]: a76e099c88382c82 +Block 0028 [ 86]: 7c54f1a662d1b2f0 +Block 0028 [ 87]: f8d6b44f41b1fbde +Block 0028 [ 88]: aec2525faee8e074 +Block 0028 [ 89]: 3ba7df6ba9154052 +Block 0028 [ 90]: 10ab17547d300b4b +Block 0028 [ 91]: 631645cf561c2263 +Block 0028 [ 92]: 38deeb67de925bd6 +Block 0028 [ 93]: 247d70ecaea720a9 +Block 0028 [ 94]: 3942012c3e59cd0a +Block 0028 [ 95]: 79a8e59965f50d74 +Block 0028 [ 96]: ae64ce04808b8731 +Block 0028 [ 97]: a82922e0aef538b3 +Block 0028 [ 98]: 4896dd57583cf5c1 +Block 0028 [ 99]: 1b54a6fe3f0402fe +Block 0028 [100]: a3bbdef1744dedd2 +Block 0028 [101]: 50d7c4ec590c94d8 +Block 0028 [102]: 0412d51b93b7c6fa +Block 0028 [103]: b284143fa99ccfed +Block 0028 [104]: 26afb8dcd15eb953 +Block 0028 [105]: 780412654e5192b6 +Block 0028 [106]: 1b5a25166f37ae89 +Block 0028 [107]: a2fe1bdcc97ff964 +Block 0028 [108]: 0a76accb203f1b96 +Block 0028 [109]: a3776057d2937236 +Block 0028 [110]: 97a41d4001d420ea +Block 0028 [111]: 1983d7acbfe92b00 +Block 0028 [112]: 467fc549919b5a61 +Block 0028 [113]: 102dd46280e147de +Block 0028 [114]: 82fced5a379d04e5 +Block 0028 [115]: 34c59296d5c25fee +Block 0028 [116]: 33984b7359faf528 +Block 0028 [117]: 19644a6bbb96873b +Block 0028 [118]: a8e0d86b9c37af6d +Block 0028 [119]: 26772e3696ef3b35 +Block 0028 [120]: 53441d026ca0b04b +Block 0028 [121]: f6369a5b0acb8901 +Block 0028 [122]: d39b69a195db4abd +Block 0028 [123]: e4ea5c6afc40960f +Block 0028 [124]: 7eb6485d679d4104 +Block 0028 [125]: f8eddbdf128b40cb +Block 0028 [126]: aa922a03672a8939 +Block 0028 [127]: bbfa96187ed10163 +Block 0029 [ 0]: 4404e79fd03776e5 +Block 0029 [ 1]: 808f9962df1ae158 +Block 0029 [ 2]: 5f35ae1b31a76bb2 +Block 0029 [ 3]: 3fc4547a07bf1854 +Block 0029 [ 4]: 488f357d253a1362 +Block 0029 [ 5]: 7d6ab99447468ed2 +Block 0029 [ 6]: e101c05afc23a427 +Block 0029 [ 7]: 54c4ef1b9b855bd3 +Block 0029 [ 8]: a1d03a62e43f8292 +Block 0029 [ 9]: 12b6785de8a09162 +Block 0029 [ 10]: 000aff43ee79c784 +Block 0029 [ 11]: d8a67d7f4a0d5d5d +Block 0029 [ 12]: 974e8d8c31633393 +Block 0029 [ 13]: 0023f6283566393b +Block 0029 [ 14]: 0f8e8e0a9c856b92 +Block 0029 [ 15]: f0e6de7574e8de59 +Block 0029 [ 16]: 1511602535645209 +Block 0029 [ 17]: 4c1ec498b136967f +Block 0029 [ 18]: 6c8f610c2eb03554 +Block 0029 [ 19]: d263fd514948af88 +Block 0029 [ 20]: 202e17af99bb4866 +Block 0029 [ 21]: 9ac97f5b38973aef +Block 0029 [ 22]: cb2fb07f80b1f4c1 +Block 0029 [ 23]: a5fe298d9d72f14e +Block 0029 [ 24]: 0aa60ccb80278f06 +Block 0029 [ 25]: 34445d153a674af2 +Block 0029 [ 26]: a5ae2e22aae768ed +Block 0029 [ 27]: 537de1e920729bd6 +Block 0029 [ 28]: 1801f662131749ca +Block 0029 [ 29]: 97d8767044f9da6a +Block 0029 [ 30]: d29160e91e40ce69 +Block 0029 [ 31]: 1978451d11883970 +Block 0029 [ 32]: d45fa773f4c17640 +Block 0029 [ 33]: df102fe3ad8418fe +Block 0029 [ 34]: 1f4383bb94bfeb5c +Block 0029 [ 35]: f204dd9bf62006e6 +Block 0029 [ 36]: f5e9aa1cc8f2c452 +Block 0029 [ 37]: 68c8e2541b2eb1e1 +Block 0029 [ 38]: bd6a08255d83d623 +Block 0029 [ 39]: 141d4413b7e27035 +Block 0029 [ 40]: 8fc28425f1c6ddc8 +Block 0029 [ 41]: 315763c020ce0df9 +Block 0029 [ 42]: 2ef188655ccd4d54 +Block 0029 [ 43]: 2504ded0510bf310 +Block 0029 [ 44]: e00bb1157c2e8c4f +Block 0029 [ 45]: 05ae8d1643d868c5 +Block 0029 [ 46]: 1fff0638a5999406 +Block 0029 [ 47]: 283b28c741de7e21 +Block 0029 [ 48]: 2c493d2dacdf78d7 +Block 0029 [ 49]: 26ec38c4797ec312 +Block 0029 [ 50]: 0a8fbbb46f9d7121 +Block 0029 [ 51]: 9a46c3b15aa183b4 +Block 0029 [ 52]: 8ed11099f2761e80 +Block 0029 [ 53]: 90dd32bb0a45c3a5 +Block 0029 [ 54]: 34f51968efdca622 +Block 0029 [ 55]: e457943a6bc598f9 +Block 0029 [ 56]: ed880470e5758747 +Block 0029 [ 57]: a85c6ca1aedc0d64 +Block 0029 [ 58]: 520e443c4e066074 +Block 0029 [ 59]: 48b78160b6d911d3 +Block 0029 [ 60]: 2f9656ebb9d37abc +Block 0029 [ 61]: c3d117cc1ab3c489 +Block 0029 [ 62]: 5f997145c2c8ebbf +Block 0029 [ 63]: e12b0fa58ed93dd1 +Block 0029 [ 64]: 4543581fe2f0990a +Block 0029 [ 65]: ce9ec79474f06130 +Block 0029 [ 66]: 13d572daac86fdb1 +Block 0029 [ 67]: ae6cd4b262974a62 +Block 0029 [ 68]: 23497b36a1c78cec +Block 0029 [ 69]: 63b4c4217de59bfc +Block 0029 [ 70]: 3155fe204edc09b1 +Block 0029 [ 71]: fbdf0237d6ac506a +Block 0029 [ 72]: ee79105c9807021e +Block 0029 [ 73]: 6bfb8a1bbb310ef3 +Block 0029 [ 74]: 74622d1cca0ed342 +Block 0029 [ 75]: c539105c9e727e74 +Block 0029 [ 76]: c0a399a42230055c +Block 0029 [ 77]: 203053df632abe24 +Block 0029 [ 78]: 13732ba10ce9e8e0 +Block 0029 [ 79]: 92d8c6a7eb4cba2f +Block 0029 [ 80]: 8827ab8b69c0f7f9 +Block 0029 [ 81]: 88f40ead7dfa7fb2 +Block 0029 [ 82]: 431eccb39d1abf56 +Block 0029 [ 83]: dacff364cb26e27d +Block 0029 [ 84]: 241bc13751a6e283 +Block 0029 [ 85]: 46cb1c43864dc5b8 +Block 0029 [ 86]: 49d69a774a299d69 +Block 0029 [ 87]: 2bff0e7b35995290 +Block 0029 [ 88]: 3a659105b325fb4e +Block 0029 [ 89]: b5bce292f719867c +Block 0029 [ 90]: 80090c29789ca112 +Block 0029 [ 91]: 15a5ca1fa6e2aaea +Block 0029 [ 92]: de25532e31966d8c +Block 0029 [ 93]: f8ffde1a1c637f85 +Block 0029 [ 94]: 9171e29e4280937d +Block 0029 [ 95]: 90b45cfcb848b517 +Block 0029 [ 96]: edfd832a481a152b +Block 0029 [ 97]: f810f6f8064f465f +Block 0029 [ 98]: 39d750ed2039d0bf +Block 0029 [ 99]: fa4a1e1447324c92 +Block 0029 [100]: 824aadeb266b642e +Block 0029 [101]: 9f4c17afc1a606bd +Block 0029 [102]: 09bf69caf3c721d6 +Block 0029 [103]: b25dc5501a7f4814 +Block 0029 [104]: 881d3b32751e2a35 +Block 0029 [105]: a88d79d4c1fba15e +Block 0029 [106]: 4fe4c1bbe47dee02 +Block 0029 [107]: 23bf5f2de21587cd +Block 0029 [108]: df7aa3ce6c9c0a09 +Block 0029 [109]: a02e74446e2657e6 +Block 0029 [110]: cc60e31e33d6c4f6 +Block 0029 [111]: a09f2da2481b0763 +Block 0029 [112]: 0b2b1384f2124f27 +Block 0029 [113]: 89c63ba718168c82 +Block 0029 [114]: 5a61043d96d13192 +Block 0029 [115]: ebb1ce98d35b8f90 +Block 0029 [116]: 9dc50f8e18d13718 +Block 0029 [117]: e7d6c964ead7f9da +Block 0029 [118]: 90b675087a3940b3 +Block 0029 [119]: 5eef50e3c9b68430 +Block 0029 [120]: 62af3a224e6ce28c +Block 0029 [121]: 96984c57b60d4916 +Block 0029 [122]: aba3c89e948b9f92 +Block 0029 [123]: 57544a942bb5af40 +Block 0029 [124]: f66ae56a55153ab6 +Block 0029 [125]: 97309420faef1165 +Block 0029 [126]: a6cb3a785aea74fb +Block 0029 [127]: e1a5f37573462dbe +Block 0030 [ 0]: c4a8fd9627c5a47d +Block 0030 [ 1]: d372d170bd35b961 +Block 0030 [ 2]: 42a1b3a62c1169b2 +Block 0030 [ 3]: 9ab6aa1587d3eddf +Block 0030 [ 4]: f84406b7bd4594e4 +Block 0030 [ 5]: 6ddfeddd2b6bdc53 +Block 0030 [ 6]: 687c4b18ffbf9edd +Block 0030 [ 7]: a15d1e1b71b743d0 +Block 0030 [ 8]: 52730cd446dbd63e +Block 0030 [ 9]: fbbe0a5c53261dca +Block 0030 [ 10]: 33047cce19568e37 +Block 0030 [ 11]: addb511156a7a1af +Block 0030 [ 12]: c5477d82bbf2559a +Block 0030 [ 13]: 70b11daf1aaf02bb +Block 0030 [ 14]: 27251b8da2d89443 +Block 0030 [ 15]: 03b0356e4fd322ed +Block 0030 [ 16]: 9d4406baa010c2a1 +Block 0030 [ 17]: b005a3f65cd63694 +Block 0030 [ 18]: 29d46007f3ee0b7e +Block 0030 [ 19]: 64da2e53786f2126 +Block 0030 [ 20]: fe798fa3c3e26050 +Block 0030 [ 21]: 12a97db444270c96 +Block 0030 [ 22]: 2e0b9d47bf16f5f2 +Block 0030 [ 23]: cdcc69ab3c8ef1f2 +Block 0030 [ 24]: 4741e45445a6678e +Block 0030 [ 25]: 45abf8aebeb6f00a +Block 0030 [ 26]: 226f2f6953ec7ca3 +Block 0030 [ 27]: 13bc983dbcc285ed +Block 0030 [ 28]: 72d40c37c20a02c4 +Block 0030 [ 29]: 4c102717d6d656a9 +Block 0030 [ 30]: 5e79aaa2746e67d8 +Block 0030 [ 31]: 42cc680d6b4afd2b +Block 0030 [ 32]: b9d632fae3cc28d5 +Block 0030 [ 33]: c64d4ab875cb86b6 +Block 0030 [ 34]: 67c11e81b2ba60b4 +Block 0030 [ 35]: 6a6c40d772023a89 +Block 0030 [ 36]: e19dd8badb2e4216 +Block 0030 [ 37]: 53be5e4e20b1a601 +Block 0030 [ 38]: e4fc0a59fa146e1f +Block 0030 [ 39]: 99758907b065fbd5 +Block 0030 [ 40]: a80984191480bba0 +Block 0030 [ 41]: 5025c806e0569a00 +Block 0030 [ 42]: c0a535e23e65470d +Block 0030 [ 43]: e77995c440572a44 +Block 0030 [ 44]: d7c79537a8455c12 +Block 0030 [ 45]: 2b0bcc76eb68b8b8 +Block 0030 [ 46]: 0031fb133528a9ad +Block 0030 [ 47]: ebca5f4fca5a5287 +Block 0030 [ 48]: dba025e2aee7ee4a +Block 0030 [ 49]: de18654fd5a6daec +Block 0030 [ 50]: 68354a5bb40295bb +Block 0030 [ 51]: c7076ac90199a35f +Block 0030 [ 52]: 114405fe1c60af8d +Block 0030 [ 53]: 947ce0c0a8c90790 +Block 0030 [ 54]: 3361310a6fdea716 +Block 0030 [ 55]: 02bb9db176c892e7 +Block 0030 [ 56]: f90d5706fd35e35a +Block 0030 [ 57]: e2156232141eeb9f +Block 0030 [ 58]: 08f4471efa0ff800 +Block 0030 [ 59]: 3974a0f6c247c3bd +Block 0030 [ 60]: fed6515e21fbecea +Block 0030 [ 61]: 30ea20c394760c0c +Block 0030 [ 62]: d87e4d6eddbbb745 +Block 0030 [ 63]: 7b8cccfb2880810b +Block 0030 [ 64]: f1c99e4632e9f1ce +Block 0030 [ 65]: 6948a03ef039d701 +Block 0030 [ 66]: edca546e83989230 +Block 0030 [ 67]: 241d8f3bfa875aa7 +Block 0030 [ 68]: afd7565f7cd31111 +Block 0030 [ 69]: 7e36338afc723b26 +Block 0030 [ 70]: a0a901bf1ef2491d +Block 0030 [ 71]: 9704ec662a6f2274 +Block 0030 [ 72]: 1b9be6bf68a5f7b4 +Block 0030 [ 73]: 001627847aaaee2d +Block 0030 [ 74]: 43161987fbb74519 +Block 0030 [ 75]: dd31369e9bb1335c +Block 0030 [ 76]: 33814586064f1d5f +Block 0030 [ 77]: cc77565fc68364b1 +Block 0030 [ 78]: 89cc92134c98053c +Block 0030 [ 79]: ca22c6467315c0a5 +Block 0030 [ 80]: 49a66c3163bc8199 +Block 0030 [ 81]: 60abfd7551756c62 +Block 0030 [ 82]: 371443ce3e11231c +Block 0030 [ 83]: 49abdd0cc8d76912 +Block 0030 [ 84]: d4cb7475a4aa3404 +Block 0030 [ 85]: 8e824478b5989403 +Block 0030 [ 86]: 3886b07905fd269a +Block 0030 [ 87]: 1f0dc4948652f82a +Block 0030 [ 88]: b62bad9cb5c30a59 +Block 0030 [ 89]: aeae875734cf2887 +Block 0030 [ 90]: 0c986e320f30ee81 +Block 0030 [ 91]: 4b827cd42945a6d9 +Block 0030 [ 92]: e9cb7e75d24e1356 +Block 0030 [ 93]: d6d32db5b7ec3445 +Block 0030 [ 94]: 16aa7c5a5bad7059 +Block 0030 [ 95]: 43d59f33f342c8b5 +Block 0030 [ 96]: 2dcc68bca46025d2 +Block 0030 [ 97]: 429ac7c8ee851217 +Block 0030 [ 98]: 90c904513d9aa7bf +Block 0030 [ 99]: ba350b48edc86579 +Block 0030 [100]: 426a30161f7839d5 +Block 0030 [101]: c25cc2d336a32e58 +Block 0030 [102]: b958cfc711b9f939 +Block 0030 [103]: 1d4229ac7bb5dd8c +Block 0030 [104]: c5e93255ecab4ce0 +Block 0030 [105]: 2b86aa91c6e2e4fa +Block 0030 [106]: 0cc7a6672d285c49 +Block 0030 [107]: c2d7eee9234269e5 +Block 0030 [108]: f0707ce0a1f4d8a8 +Block 0030 [109]: 8378a40dcbfca7a7 +Block 0030 [110]: 1d127ac9de087e9b +Block 0030 [111]: 3fe93574207e1ad1 +Block 0030 [112]: b776f8bb45223858 +Block 0030 [113]: f7c51e3003714e52 +Block 0030 [114]: 3501b4ec55b44791 +Block 0030 [115]: 2bce85a6e98b7159 +Block 0030 [116]: aee18f3255b44e69 +Block 0030 [117]: 3993a16d5f337dd2 +Block 0030 [118]: a79ef642ab3a25f7 +Block 0030 [119]: fd5598a10072459a +Block 0030 [120]: e5a711c5649ed84a +Block 0030 [121]: 87b3640e02241add +Block 0030 [122]: ac919e23ba1fb501 +Block 0030 [123]: 5d44ecc8c2749ba8 +Block 0030 [124]: 8d41f01e81fc287f +Block 0030 [125]: 183a90a82f6b00e8 +Block 0030 [126]: 8620ea87468a36fb +Block 0030 [127]: 8165d72c97466f11 +Block 0031 [ 0]: 575e616d866cded1 +Block 0031 [ 1]: d0c56fd53ebd74ff +Block 0031 [ 2]: 2a86edaf4d858805 +Block 0031 [ 3]: f639bf1987b479e5 +Block 0031 [ 4]: 730a432c62f491c5 +Block 0031 [ 5]: 1202b29b1cda7af8 +Block 0031 [ 6]: ce2dd01e1073741d +Block 0031 [ 7]: 36cb3d0949b5025b +Block 0031 [ 8]: 13e050ab11ea1337 +Block 0031 [ 9]: b4f44504e0be684d +Block 0031 [ 10]: 5c9fc9aebb6d6612 +Block 0031 [ 11]: ea0d448cd81ca4ac +Block 0031 [ 12]: a82b03ccf692d521 +Block 0031 [ 13]: 3d06ef267f0bbe24 +Block 0031 [ 14]: c5f8328a157b9f06 +Block 0031 [ 15]: 20a38ddff1a49442 +Block 0031 [ 16]: 5dcb0b307bf4d126 +Block 0031 [ 17]: c01b94bac0a4e5e9 +Block 0031 [ 18]: 11c3448ab906e24e +Block 0031 [ 19]: 355a0574c7d70dee +Block 0031 [ 20]: 0ea006d78c090c69 +Block 0031 [ 21]: 2ddcc814e8f5ec0c +Block 0031 [ 22]: fff0739c85757a45 +Block 0031 [ 23]: 7ee4982a1bfc4d86 +Block 0031 [ 24]: 3b67e4e2526ff9b7 +Block 0031 [ 25]: d7f70eb9fa227ead +Block 0031 [ 26]: 3544acf4b54868ec +Block 0031 [ 27]: 8bc614f0e28b6a92 +Block 0031 [ 28]: d2a934f539079ac3 +Block 0031 [ 29]: db0f9b2faf6c2b37 +Block 0031 [ 30]: fdcd90fa6b0f84ba +Block 0031 [ 31]: 8d0a2beb899c00fd +Block 0031 [ 32]: dc25a4332c55ea3d +Block 0031 [ 33]: 50881241f8e00f6e +Block 0031 [ 34]: 41cfcce5a5b3880a +Block 0031 [ 35]: 11614daf5026c828 +Block 0031 [ 36]: 3ddd9b304e9728d8 +Block 0031 [ 37]: e818ac2a459b8457 +Block 0031 [ 38]: 5cb8cdc8827cb247 +Block 0031 [ 39]: d5efdbab1707f2e9 +Block 0031 [ 40]: 7c65151a829c07dc +Block 0031 [ 41]: 7f6338d31e6fc39e +Block 0031 [ 42]: 8af2bcf2ed1333c8 +Block 0031 [ 43]: dda0aefa5afd4b09 +Block 0031 [ 44]: 5facf7534d9abe1f +Block 0031 [ 45]: 8ffe5101be9bd433 +Block 0031 [ 46]: 7e1a89924bab3829 +Block 0031 [ 47]: e0661ca19ba8b1bf +Block 0031 [ 48]: a8e58db69a52cdf9 +Block 0031 [ 49]: 2bcd1dd9262df44b +Block 0031 [ 50]: 2f555295c6346155 +Block 0031 [ 51]: 03f489ded473a2fb +Block 0031 [ 52]: f28bc8d4dbc4b7ec +Block 0031 [ 53]: 26d6c84798ffe2e3 +Block 0031 [ 54]: 97fae729b30dd563 +Block 0031 [ 55]: b12635047eb3acee +Block 0031 [ 56]: aff7ba90ab778f21 +Block 0031 [ 57]: 67fe61d236c7c6cf +Block 0031 [ 58]: cbae983adaf97906 +Block 0031 [ 59]: 30e8875063ca7545 +Block 0031 [ 60]: 19bf0a1582f83725 +Block 0031 [ 61]: 4c8341ee3ebf8e31 +Block 0031 [ 62]: a4a540b030e4792b +Block 0031 [ 63]: 138e0472265a2539 +Block 0031 [ 64]: 7fd36c1c40af40ec +Block 0031 [ 65]: 38be5ae88c76e298 +Block 0031 [ 66]: 18c6155b61fdc2a6 +Block 0031 [ 67]: d32f23f583f7b9c0 +Block 0031 [ 68]: 47c87ed6db4f5c38 +Block 0031 [ 69]: 9360da426e7b9ec5 +Block 0031 [ 70]: 471ca3f4eb2c7fd6 +Block 0031 [ 71]: 29ec5e7bc232e2a3 +Block 0031 [ 72]: 7686edcfdfed7037 +Block 0031 [ 73]: c35f7c9ac6b415a3 +Block 0031 [ 74]: fc56d6e6f2c6b330 +Block 0031 [ 75]: 802fb1c790d59658 +Block 0031 [ 76]: 919bf5530ba7c278 +Block 0031 [ 77]: 3a8aa8e56fd3c622 +Block 0031 [ 78]: 7d88cdd1f416e205 +Block 0031 [ 79]: 5e87c9fbc69552fc +Block 0031 [ 80]: e498a967d0ff8ec3 +Block 0031 [ 81]: 7c4349736a7b011b +Block 0031 [ 82]: 12adf2f4f56813de +Block 0031 [ 83]: d39787d17315a62d +Block 0031 [ 84]: 5a8a67341b955b7b +Block 0031 [ 85]: 8b65860241795c97 +Block 0031 [ 86]: 2c23d7d3bb43b2d6 +Block 0031 [ 87]: 43563f6cebd735b9 +Block 0031 [ 88]: 2aac7340a8a95510 +Block 0031 [ 89]: 79d30b598e436c93 +Block 0031 [ 90]: 1ca23b39c9a1f01a +Block 0031 [ 91]: 6d0bbace3cb89348 +Block 0031 [ 92]: 6268a2d39a912f00 +Block 0031 [ 93]: f5e167b29717e9ff +Block 0031 [ 94]: c5adfac7cfb2e07c +Block 0031 [ 95]: fe31b165de131497 +Block 0031 [ 96]: eda3b5f044a5650c +Block 0031 [ 97]: f2ffe58385c2cc7d +Block 0031 [ 98]: c85a79c4a8b5ed65 +Block 0031 [ 99]: a7063351c8c83c32 +Block 0031 [100]: ceafa39d17f8c3d9 +Block 0031 [101]: 341cd82e8aedd1ca +Block 0031 [102]: 0a42ae65f74aaf51 +Block 0031 [103]: e3d41dd612a09b65 +Block 0031 [104]: f3ae25982ef782f8 +Block 0031 [105]: ff109e3fbd5ee836 +Block 0031 [106]: c03d53f10518d1fc +Block 0031 [107]: 14d022a4b677f1be +Block 0031 [108]: 1c130fc69a5e1c06 +Block 0031 [109]: e2b85a1ca95da14c +Block 0031 [110]: 85d97caf315c08ef +Block 0031 [111]: 30029f09eb2e6383 +Block 0031 [112]: 2921e8257b92bcbe +Block 0031 [113]: fb97db2b711a3e60 +Block 0031 [114]: ff464a83e7152778 +Block 0031 [115]: 3b8f587cfef05f26 +Block 0031 [116]: 04d9e75c766c2b45 +Block 0031 [117]: d7bc0ceef1fd32d6 +Block 0031 [118]: 8ae936c2ca91af09 +Block 0031 [119]: d777bdec939101d6 +Block 0031 [120]: d3b1abe83999ee4c +Block 0031 [121]: 6ff4ee863c1ade4b +Block 0031 [122]: 17fa2286d2d5536e +Block 0031 [123]: d16cb8c7377ff3ab +Block 0031 [124]: 4d4b435cea35caa6 +Block 0031 [125]: c582210d99ad1359 +Block 0031 [126]: d087971b36fd6d77 +Block 0031 [127]: a55222a93754c692 + + After pass 2: +Block 0000 [ 0]: 942363968ce597a4 +Block 0000 [ 1]: a22448c0bdad5760 +Block 0000 [ 2]: a5f80662b6fa8748 +Block 0000 [ 3]: a0f9b9ce392f719f +Block 0000 [ 4]: 24771fac2c17fe57 +Block 0000 [ 5]: 6e05b2f1ffe5958f +Block 0000 [ 6]: cc45370bae5b130c +Block 0000 [ 7]: 0461f05eb0d65592 +Block 0000 [ 8]: 2eea1c82a49d6d34 +Block 0000 [ 9]: 12272607e15dfaa6 +Block 0000 [ 10]: 216906860b21749d +Block 0000 [ 11]: 00f651387251d250 +Block 0000 [ 12]: bcd2a5a392a2a43b +Block 0000 [ 13]: 9ee681ed300fdaaa +Block 0000 [ 14]: 318842723fcaae05 +Block 0000 [ 15]: d85a06bed01fb22b +Block 0000 [ 16]: 046350dc9c48ebbc +Block 0000 [ 17]: 647ee04f98fa7866 +Block 0000 [ 18]: 4dbe4ba16bfe120d +Block 0000 [ 19]: b45bca27a0cc788f +Block 0000 [ 20]: 7389557b3110dc12 +Block 0000 [ 21]: f67c7e37ff5ca6ca +Block 0000 [ 22]: 8d537efc16faac0d +Block 0000 [ 23]: 7a1eec8e08032c79 +Block 0000 [ 24]: 18bd8c2566663679 +Block 0000 [ 25]: 37593d71f6d59696 +Block 0000 [ 26]: 5f3d78a4aa578228 +Block 0000 [ 27]: e7cc793ba9a67c95 +Block 0000 [ 28]: 11761062c6beafc8 +Block 0000 [ 29]: 7a83734d47c94656 +Block 0000 [ 30]: 696353b55d34a549 +Block 0000 [ 31]: 0aa08d75ceaa2e4f +Block 0000 [ 32]: 020d1de2ccff07b8 +Block 0000 [ 33]: 3ac26f355b98a77f +Block 0000 [ 34]: 586b7fb7feac8d82 +Block 0000 [ 35]: 93520e3647f3fe9c +Block 0000 [ 36]: 3c40d90c4b43341b +Block 0000 [ 37]: 08d66d2abf80b9f5 +Block 0000 [ 38]: 1449609ac46a56d9 +Block 0000 [ 39]: 3ba305ee8fe112da +Block 0000 [ 40]: 75cb629b14266f70 +Block 0000 [ 41]: a27b5b5bfd1c5714 +Block 0000 [ 42]: 49f36a01e2990b54 +Block 0000 [ 43]: f5931fd9cdc548b0 +Block 0000 [ 44]: 126f15612a2b63ce +Block 0000 [ 45]: 16a3669213a9a111 +Block 0000 [ 46]: 86401a84f8178304 +Block 0000 [ 47]: af79709b402f275c +Block 0000 [ 48]: d8930abf6da1c122 +Block 0000 [ 49]: ce56fbf6ebc01e9f +Block 0000 [ 50]: bd302509949084b3 +Block 0000 [ 51]: 64571e4fbbb3a212 +Block 0000 [ 52]: 56989272fe4320c3 +Block 0000 [ 53]: cb17c879d6d1f781 +Block 0000 [ 54]: d47a5d5f78d8f717 +Block 0000 [ 55]: 7bd868fbb7d3bf87 +Block 0000 [ 56]: 3e06553276dd63fe +Block 0000 [ 57]: 96466ee2d93c3caf +Block 0000 [ 58]: c2795e4533e384ab +Block 0000 [ 59]: 4ecabafa9d24c35e +Block 0000 [ 60]: 3e49dda72dfec548 +Block 0000 [ 61]: d027a1cb462d9ece +Block 0000 [ 62]: c93fe06270637d9d +Block 0000 [ 63]: 9ec49544e821fe72 +Block 0000 [ 64]: 97422029aef16a01 +Block 0000 [ 65]: 509e9e1054482d9d +Block 0000 [ 66]: 4d81c6d9e4fc0b4a +Block 0000 [ 67]: 59d4d46649466f76 +Block 0000 [ 68]: 7cb23f332c9e4b4c +Block 0000 [ 69]: bb795a50d4cd9f67 +Block 0000 [ 70]: 03b3a556f49e6d9f +Block 0000 [ 71]: 46a55683aa7cef1e +Block 0000 [ 72]: c7ede4dc5bc2f8e7 +Block 0000 [ 73]: 9533f8b974ea3cdd +Block 0000 [ 74]: b14b8a6d3399fb80 +Block 0000 [ 75]: 27c6b38badcaaeb8 +Block 0000 [ 76]: d7f483a98d2fa5ef +Block 0000 [ 77]: 4dce2ae80c619079 +Block 0000 [ 78]: 76219242e50e0e96 +Block 0000 [ 79]: a6d693a4c51dae38 +Block 0000 [ 80]: 2dcfbb729b1c3980 +Block 0000 [ 81]: 25f0264a26573a39 +Block 0000 [ 82]: b33a6ef25e1913bb +Block 0000 [ 83]: 7517c5c1acea4bea +Block 0000 [ 84]: 2c4ef6504acd5c35 +Block 0000 [ 85]: 129b9cb8b3cdd94d +Block 0000 [ 86]: dbdd6a53ddf36d6e +Block 0000 [ 87]: 78afa24a3cb6b14b +Block 0000 [ 88]: 53bce6911d203682 +Block 0000 [ 89]: 1a34077b1e8e0eef +Block 0000 [ 90]: ae9e591ae3feb90b +Block 0000 [ 91]: 691a26ef618ecf6d +Block 0000 [ 92]: 8bb8d772358e5b1e +Block 0000 [ 93]: cffd14266ff9bb4d +Block 0000 [ 94]: 3ba46898bd5d5cfe +Block 0000 [ 95]: 77ad33988adec25a +Block 0000 [ 96]: ed3dead883350bea +Block 0000 [ 97]: 5d0a7ac353b24c31 +Block 0000 [ 98]: 6e6ac3e921ba46c9 +Block 0000 [ 99]: bed9e5b4d3899d3f +Block 0000 [100]: 9c0a0d3141428032 +Block 0000 [101]: 4a7f5f1c6292066b +Block 0000 [102]: 8761870ad510760d +Block 0000 [103]: 34938635ae1e4ad2 +Block 0000 [104]: 319eef4153643e18 +Block 0000 [105]: 27c87dfc969ea38d +Block 0000 [106]: 1737ef12f143cf54 +Block 0000 [107]: f815a1261999f96c +Block 0000 [108]: b5a14e371b524464 +Block 0000 [109]: 375979aa1d218a95 +Block 0000 [110]: cc671fe6a831c39d +Block 0000 [111]: 066dfa49ab4e6a24 +Block 0000 [112]: a4e5ab7b49e89ee7 +Block 0000 [113]: 314a326354659a90 +Block 0000 [114]: 6a0b43eff1de6f34 +Block 0000 [115]: 511b2e464fbc1f54 +Block 0000 [116]: 9937ac736a9569bb +Block 0000 [117]: d4259cc337fc3d15 +Block 0000 [118]: 588c20cfd35c4f5a +Block 0000 [119]: 6de3c00c4bc54f53 +Block 0000 [120]: f59c53752dd831a3 +Block 0000 [121]: 0f0d13178cea41b4 +Block 0000 [122]: a2eb999a027b86bf +Block 0000 [123]: e3559fb8e02731a4 +Block 0000 [124]: 8f9d752260ae9a4e +Block 0000 [125]: 29610b46dc6b52d2 +Block 0000 [126]: 42c6958af7594776 +Block 0000 [127]: 3b85740e71d4f71c +Block 0001 [ 0]: 8933e64816bc3c32 +Block 0001 [ 1]: 6b5d511f307c772b +Block 0001 [ 2]: 640e9c6f13125dac +Block 0001 [ 3]: c92724968dd54857 +Block 0001 [ 4]: d01ef9226eea4842 +Block 0001 [ 5]: e4655aa75ade15e7 +Block 0001 [ 6]: d477f48bed63310e +Block 0001 [ 7]: 69446abfe437eed2 +Block 0001 [ 8]: c4d1ea35f24a6f9a +Block 0001 [ 9]: b722107dc9c051e5 +Block 0001 [ 10]: 7750e4d202970704 +Block 0001 [ 11]: 8f8d1225a1bb42b7 +Block 0001 [ 12]: 4815590b75935d30 +Block 0001 [ 13]: 8208be64cc777087 +Block 0001 [ 14]: 73658f6c3af494a8 +Block 0001 [ 15]: 8b45b07ebadf1b2e +Block 0001 [ 16]: f34672d581652805 +Block 0001 [ 17]: 3e3c2ed161e9783c +Block 0001 [ 18]: a96412916e27cc5e +Block 0001 [ 19]: 06c01bf7826e9676 +Block 0001 [ 20]: 9f2f79747ae9907d +Block 0001 [ 21]: 86d22c1e939b23c8 +Block 0001 [ 22]: 860e87de53661ec9 +Block 0001 [ 23]: 1b19dd2913f34830 +Block 0001 [ 24]: c482338b59ef1ceb +Block 0001 [ 25]: eef02a98bb1718f8 +Block 0001 [ 26]: 2a3028c482d0d6b8 +Block 0001 [ 27]: 41a33e0a0ee4ca9d +Block 0001 [ 28]: 9a9456826ba1f74b +Block 0001 [ 29]: dc7a699855869415 +Block 0001 [ 30]: 852d03d25c3c5552 +Block 0001 [ 31]: d2ee86e4fbf9a4e1 +Block 0001 [ 32]: e2a9984de71206b5 +Block 0001 [ 33]: 728a26a15dbe1fb8 +Block 0001 [ 34]: ec818010efee7f6b +Block 0001 [ 35]: f4c8deb3dda7c786 +Block 0001 [ 36]: 6cfb96299a245412 +Block 0001 [ 37]: 7c5d4798b69ca9db +Block 0001 [ 38]: 5117608953ac40a3 +Block 0001 [ 39]: 1ff1030837f3a401 +Block 0001 [ 40]: 0129f0e17cf81a8d +Block 0001 [ 41]: c1f67504af11f24b +Block 0001 [ 42]: 7c9d811e29ef25a8 +Block 0001 [ 43]: 81f677f8e4fb8d59 +Block 0001 [ 44]: 6a40f0cc7a8a67c9 +Block 0001 [ 45]: e364bcdbac9c6792 +Block 0001 [ 46]: 29dad8b26f8cc597 +Block 0001 [ 47]: 1de18f044b5ba657 +Block 0001 [ 48]: 560dcf64c69a6c6a +Block 0001 [ 49]: 6aa1734eeb3f606b +Block 0001 [ 50]: 832b835316929e03 +Block 0001 [ 51]: 515d7e6ed1bf35c7 +Block 0001 [ 52]: 44d6de77335af04b +Block 0001 [ 53]: cf83557f9c2f3136 +Block 0001 [ 54]: 1251e369a95fcbbd +Block 0001 [ 55]: 608ba509ab302690 +Block 0001 [ 56]: 0423987eaafa50ab +Block 0001 [ 57]: d6cc93d3499879ee +Block 0001 [ 58]: 2456b39d82c2cba5 +Block 0001 [ 59]: fb07b4c94e7fa26f +Block 0001 [ 60]: eef2846f701cfa79 +Block 0001 [ 61]: 396ef23e96ed436b +Block 0001 [ 62]: dfa3b158325a5a2b +Block 0001 [ 63]: 8328fe5f61fb1f69 +Block 0001 [ 64]: 67c5143d52a8bfa7 +Block 0001 [ 65]: 19c43cb4735b5a86 +Block 0001 [ 66]: c810ae9fa3aa1c65 +Block 0001 [ 67]: 644eaeb65e569d04 +Block 0001 [ 68]: e10b2172426640c7 +Block 0001 [ 69]: 8082ae7cea9ae7a7 +Block 0001 [ 70]: 4dad45a8e8ddcd81 +Block 0001 [ 71]: dbd1226270739902 +Block 0001 [ 72]: 68635f3be55dd5ce +Block 0001 [ 73]: b457f93d06b180fb +Block 0001 [ 74]: a0d61375996e95f0 +Block 0001 [ 75]: 12a32b840ad8cd18 +Block 0001 [ 76]: 7809824b4aaf59a5 +Block 0001 [ 77]: 606f87eaf9341152 +Block 0001 [ 78]: 1683a54b647f2788 +Block 0001 [ 79]: 8df012b829206704 +Block 0001 [ 80]: bb1e1e560210a4a5 +Block 0001 [ 81]: 085ce09838b355f0 +Block 0001 [ 82]: 1cbe49273e85fb04 +Block 0001 [ 83]: fdcb4b14f445be52 +Block 0001 [ 84]: 1741411a9c533a72 +Block 0001 [ 85]: a7754cc877040650 +Block 0001 [ 86]: 547b7149971b51e6 +Block 0001 [ 87]: 3ca1ecc928d222b5 +Block 0001 [ 88]: 89e6059b31bd2f39 +Block 0001 [ 89]: 5e89a65cfd712b20 +Block 0001 [ 90]: 8631701b830060cc +Block 0001 [ 91]: c26929b72cca2ba2 +Block 0001 [ 92]: 71e0ce4bc264c5bc +Block 0001 [ 93]: dbebf21eab539724 +Block 0001 [ 94]: 7e1172df492bc6ac +Block 0001 [ 95]: 1a5b7631e6107903 +Block 0001 [ 96]: 0b1f56228c4984ee +Block 0001 [ 97]: 9197c0f66deb44a2 +Block 0001 [ 98]: 2f590db75fecbcda +Block 0001 [ 99]: cc5337b5eac68e3c +Block 0001 [100]: 29dde35d7b47d989 +Block 0001 [101]: ef51d99f8cee0410 +Block 0001 [102]: b11819e8450fa788 +Block 0001 [103]: 7ddbf15350186d69 +Block 0001 [104]: 568a1d424a1f63a4 +Block 0001 [105]: 7484d6c5e05e9998 +Block 0001 [106]: 2ac73044bf7528d3 +Block 0001 [107]: 433686c08c23d13f +Block 0001 [108]: 02dfbbff143a2605 +Block 0001 [109]: 9b0b16287f9868ae +Block 0001 [110]: f0f555d7f2b42574 +Block 0001 [111]: 5753eae110f92768 +Block 0001 [112]: 1558a16313a709c0 +Block 0001 [113]: 00e7dd7e011f526b +Block 0001 [114]: 47b62bca94aabcb8 +Block 0001 [115]: c44a080576b41634 +Block 0001 [116]: 51d000afc76f6940 +Block 0001 [117]: e8f146885de969e6 +Block 0001 [118]: 7d755b45c4babd6d +Block 0001 [119]: e8dcb75ff43079d7 +Block 0001 [120]: cd8686c282174b8e +Block 0001 [121]: 0437758a4f2771cb +Block 0001 [122]: 36547a9cf289cecd +Block 0001 [123]: 73eb73f11a143bc1 +Block 0001 [124]: 77a96e30c3bbbe56 +Block 0001 [125]: 3adf14fe652f6b47 +Block 0001 [126]: c39db9672c033a5e +Block 0001 [127]: 5428b1c8e77ae9bd +Block 0002 [ 0]: 27143d2f1efffa3b +Block 0002 [ 1]: 92054d8203ce8b23 +Block 0002 [ 2]: 7adfb7b6bcc72a95 +Block 0002 [ 3]: 2e9b30722a801455 +Block 0002 [ 4]: 07d38bb53dc981b9 +Block 0002 [ 5]: 50aef2f924d4aeec +Block 0002 [ 6]: 63356ab028532887 +Block 0002 [ 7]: 3d81696f259e64e0 +Block 0002 [ 8]: b7687d4458cd64ef +Block 0002 [ 9]: 2bd8d2f76c5905d0 +Block 0002 [ 10]: 79f82c385784f252 +Block 0002 [ 11]: 1c81144344d2b68e +Block 0002 [ 12]: 883d9dc766b4a30c +Block 0002 [ 13]: 611e0378bc6a49c8 +Block 0002 [ 14]: 7a9cad2711172433 +Block 0002 [ 15]: 787c5fb132ea2d0a +Block 0002 [ 16]: d27f3d126ba19edd +Block 0002 [ 17]: 02dde8594c9906eb +Block 0002 [ 18]: 3c6e00c96752f958 +Block 0002 [ 19]: 4fddb42e97f8d0d3 +Block 0002 [ 20]: 3f19d4814968bf82 +Block 0002 [ 21]: e08abaf6f1035dd9 +Block 0002 [ 22]: b80a7e82adf0f85c +Block 0002 [ 23]: 298a9a8108dbf8e9 +Block 0002 [ 24]: 784856c72cf9ac8f +Block 0002 [ 25]: ffaccb829fa5f65c +Block 0002 [ 26]: ed2bf64259ea583f +Block 0002 [ 27]: ffe048699cd2a692 +Block 0002 [ 28]: f564e04d1a8a4252 +Block 0002 [ 29]: 6902f9c761dadfe7 +Block 0002 [ 30]: f3875beb4192b204 +Block 0002 [ 31]: ed38974911bda5e5 +Block 0002 [ 32]: 41e7282b8648818e +Block 0002 [ 33]: 457d44a3523f3b8a +Block 0002 [ 34]: 26140075cd70fb63 +Block 0002 [ 35]: c12aa89584f45da2 +Block 0002 [ 36]: 445c6774b1be85b5 +Block 0002 [ 37]: d82f3fe66a9835de +Block 0002 [ 38]: 272b4c1b006f6458 +Block 0002 [ 39]: e18a80e5de5f8f92 +Block 0002 [ 40]: b279ec48aba4a2cc +Block 0002 [ 41]: 2ef21bdf8fc95896 +Block 0002 [ 42]: f9378d25e10c2b8a +Block 0002 [ 43]: 9d2e6cea6629a6c0 +Block 0002 [ 44]: 2eae57a0d6ba83ad +Block 0002 [ 45]: 2eb4d8a56c8ca748 +Block 0002 [ 46]: ee9ddb4fd7973dad +Block 0002 [ 47]: c4bf57a84c7bf795 +Block 0002 [ 48]: 6c4d217528dbf560 +Block 0002 [ 49]: 7d6f8af4eab0cd59 +Block 0002 [ 50]: 776bd3efb2f3b8fe +Block 0002 [ 51]: 8e0795aba13eb6a6 +Block 0002 [ 52]: dd5aae2ed78391da +Block 0002 [ 53]: d53a11f1b81cfee2 +Block 0002 [ 54]: c344c6012479f24d +Block 0002 [ 55]: f86d097070bba89a +Block 0002 [ 56]: 85403fe0759bd9c0 +Block 0002 [ 57]: 6e351347eced8994 +Block 0002 [ 58]: 170574bf614f349e +Block 0002 [ 59]: 4a7477ce0bc54b02 +Block 0002 [ 60]: 2bec0e0a6e1f375a +Block 0002 [ 61]: 7216226a67c5d6ba +Block 0002 [ 62]: b44cf28046c7a845 +Block 0002 [ 63]: 3f0c4129f395817e +Block 0002 [ 64]: ffc0ff91b9057736 +Block 0002 [ 65]: ab1078ce910f14e2 +Block 0002 [ 66]: b2e8408a2695b35d +Block 0002 [ 67]: 8c1848ddfa66636f +Block 0002 [ 68]: 1faec37f9f1428ba +Block 0002 [ 69]: 19a8ca8cb3592af5 +Block 0002 [ 70]: 8c55e560993ea226 +Block 0002 [ 71]: 2b466f00788d83c3 +Block 0002 [ 72]: 04219396cc82f878 +Block 0002 [ 73]: 644028c105701847 +Block 0002 [ 74]: 71a90499ea6846bf +Block 0002 [ 75]: 1eafc2706c7debdf +Block 0002 [ 76]: 32d47b4a9d6c04f0 +Block 0002 [ 77]: b3e8d611184079c8 +Block 0002 [ 78]: 60c1676692032ccd +Block 0002 [ 79]: 51b6316cf58681da +Block 0002 [ 80]: fdd554b4196037df +Block 0002 [ 81]: 7311347f4036ef59 +Block 0002 [ 82]: 54da8cce51af74bb +Block 0002 [ 83]: 15dc8d1e1fcc4c47 +Block 0002 [ 84]: e1242b600438eb26 +Block 0002 [ 85]: 5e9af3576b040c3a +Block 0002 [ 86]: 9d498016f4513d1f +Block 0002 [ 87]: dc77cdca25c279da +Block 0002 [ 88]: 64b1c3dafd531d4c +Block 0002 [ 89]: daa8b3064bcd92f8 +Block 0002 [ 90]: 18c717b9bd23c6ff +Block 0002 [ 91]: 641efa1283ce1a64 +Block 0002 [ 92]: e812f651876e59d6 +Block 0002 [ 93]: dc93172e4dfdd48d +Block 0002 [ 94]: cb833b72b2363cde +Block 0002 [ 95]: 1e55a82cf0179cb9 +Block 0002 [ 96]: 898d29a991b9d2a1 +Block 0002 [ 97]: f08ac0673cb42432 +Block 0002 [ 98]: c70ab8e1546f0596 +Block 0002 [ 99]: d04126ac1778f91d +Block 0002 [100]: 4d89cc5ac78f54da +Block 0002 [101]: e61701e9ef2fd2ed +Block 0002 [102]: 27a0a559bfed8bc1 +Block 0002 [103]: 8bc653b6f5616da6 +Block 0002 [104]: b25b95c11540f139 +Block 0002 [105]: 935de0b89e2bf3a3 +Block 0002 [106]: c1ca9175889860ae +Block 0002 [107]: bad4d3e6aeef6ab6 +Block 0002 [108]: 8227429a091f7cac +Block 0002 [109]: bdaaa59b9599f80e +Block 0002 [110]: a5e0837fe0c873c4 +Block 0002 [111]: 218d782e87b94143 +Block 0002 [112]: c0697881686f0cbe +Block 0002 [113]: 08708761b2c12a57 +Block 0002 [114]: 990e8e0e2cc49a1a +Block 0002 [115]: 8159be87497fee30 +Block 0002 [116]: 770200c1ce09a3ee +Block 0002 [117]: 46f87161802bf7ae +Block 0002 [118]: 4d8ecc452b78cdb2 +Block 0002 [119]: eb42428ee6d8ebad +Block 0002 [120]: 6791a4843ae97f7e +Block 0002 [121]: 0844f63752143720 +Block 0002 [122]: 6d4ec9812e538900 +Block 0002 [123]: cac8c8d555e27212 +Block 0002 [124]: 50f57f07badc20af +Block 0002 [125]: 6878628488adcd8c +Block 0002 [126]: 456985a0caaca233 +Block 0002 [127]: 69bed6dacc1aecc6 +Block 0003 [ 0]: 4b0e087d223f8e25 +Block 0003 [ 1]: 910b21c025d932ed +Block 0003 [ 2]: 0f6b2e762d91655e +Block 0003 [ 3]: 7c0f520bc631d589 +Block 0003 [ 4]: 9823f0419761c5fe +Block 0003 [ 5]: bb8812442cf4a512 +Block 0003 [ 6]: 2ee03b353b0d5d03 +Block 0003 [ 7]: b73de85aea332935 +Block 0003 [ 8]: 0a633692f8316ba4 +Block 0003 [ 9]: 8b1c009d2c67cc73 +Block 0003 [ 10]: 1ecce5d630554dd9 +Block 0003 [ 11]: 443732d25e36560b +Block 0003 [ 12]: 544796fd126802aa +Block 0003 [ 13]: b04709f729b457ae +Block 0003 [ 14]: fcc5e7a2070bbbff +Block 0003 [ 15]: 1303b873028b16d8 +Block 0003 [ 16]: 8281b07b71a7b53b +Block 0003 [ 17]: ae345eb749a3b061 +Block 0003 [ 18]: f8c3c7d848a57090 +Block 0003 [ 19]: 2bc012ffd8e67259 +Block 0003 [ 20]: daa5f0425df20682 +Block 0003 [ 21]: 633c21a777c64b34 +Block 0003 [ 22]: 760a52c5bd088239 +Block 0003 [ 23]: 680d3b03371886cb +Block 0003 [ 24]: 1ddaff5ab4514179 +Block 0003 [ 25]: 3fc2baa599d33474 +Block 0003 [ 26]: 9331275233ff8127 +Block 0003 [ 27]: 6d8f7b0d99b8b9d6 +Block 0003 [ 28]: f11fdc68569752a4 +Block 0003 [ 29]: 46b1545d247bcdca +Block 0003 [ 30]: 07a9fa589f450696 +Block 0003 [ 31]: f94751714c942d6b +Block 0003 [ 32]: e936d6d0f1a555c1 +Block 0003 [ 33]: 9f23639b50f7b3eb +Block 0003 [ 34]: 77ecd6638ee94110 +Block 0003 [ 35]: 96692e332c8b554f +Block 0003 [ 36]: 5c0d272f724ef7d7 +Block 0003 [ 37]: c1522f5e06bd81a6 +Block 0003 [ 38]: 0b5c007bf5f11d0d +Block 0003 [ 39]: 62c5150317c2cdf5 +Block 0003 [ 40]: c97d944f9acbb3c8 +Block 0003 [ 41]: 9715798f0363471c +Block 0003 [ 42]: 1c1b4fef37aa3c9c +Block 0003 [ 43]: 7a86df1842374201 +Block 0003 [ 44]: 4f47ea46bef1b0da +Block 0003 [ 45]: fd6fa9c86175a7ea +Block 0003 [ 46]: 0f9f9b1230c86278 +Block 0003 [ 47]: 3995b03527037d27 +Block 0003 [ 48]: c263efdc370cdce2 +Block 0003 [ 49]: 84f20badc86c03f8 +Block 0003 [ 50]: 7c1005ec5f211ed6 +Block 0003 [ 51]: f8d06c05e9a72026 +Block 0003 [ 52]: 4aae8636403d1108 +Block 0003 [ 53]: 4546835813223393 +Block 0003 [ 54]: 1c2764d4cd5313cf +Block 0003 [ 55]: 725136f3051ef360 +Block 0003 [ 56]: b4d0034de3d614b0 +Block 0003 [ 57]: 792103a24761ffd4 +Block 0003 [ 58]: 4e38609d0044e97c +Block 0003 [ 59]: 9afa00b1d5dd4333 +Block 0003 [ 60]: 97dd3b7a6fa89f13 +Block 0003 [ 61]: e6092892e8bf751c +Block 0003 [ 62]: 6f55cba23b48301f +Block 0003 [ 63]: f1dccdff20ae0d89 +Block 0003 [ 64]: c3a9a019a2058563 +Block 0003 [ 65]: 765f13d5212bbed6 +Block 0003 [ 66]: be12cda3cad84c16 +Block 0003 [ 67]: ae93875e493e512f +Block 0003 [ 68]: 7ebc4b263a43ffb8 +Block 0003 [ 69]: 437953643dddd941 +Block 0003 [ 70]: 6e505fc1442766f0 +Block 0003 [ 71]: fee308509c0fb33a +Block 0003 [ 72]: 5636969202552bf8 +Block 0003 [ 73]: 27676e0c252b1003 +Block 0003 [ 74]: 186b7418403aa6e5 +Block 0003 [ 75]: 558cfdc97fbd6c3f +Block 0003 [ 76]: 631f97c52eb34738 +Block 0003 [ 77]: 9b3fc9f6107fa759 +Block 0003 [ 78]: cfd95882728d049b +Block 0003 [ 79]: 9c7f58fb99e270f7 +Block 0003 [ 80]: 7e38dc0cca98a684 +Block 0003 [ 81]: 198f7cf761235866 +Block 0003 [ 82]: 5319b61c46bda215 +Block 0003 [ 83]: f8c46a363243225b +Block 0003 [ 84]: d2740b3e180bb236 +Block 0003 [ 85]: 8254e42ad7fe9ca4 +Block 0003 [ 86]: 1d008ab69a2fd975 +Block 0003 [ 87]: b207601e992f963d +Block 0003 [ 88]: 3184eff21f0bfb58 +Block 0003 [ 89]: a9a6ddda5b3d04af +Block 0003 [ 90]: ca7eb6a074c159be +Block 0003 [ 91]: 22a707e28bf36d07 +Block 0003 [ 92]: d2274395db860d0e +Block 0003 [ 93]: 9532e6a03fbe3374 +Block 0003 [ 94]: 722c4483d24e0771 +Block 0003 [ 95]: 09529f5e75d973d7 +Block 0003 [ 96]: e6fde2e300ac1149 +Block 0003 [ 97]: e5ea399e35b56d85 +Block 0003 [ 98]: 76b8fccf34f67e03 +Block 0003 [ 99]: 685031d32e27fe9e +Block 0003 [100]: 21fd6ea20cfc5f82 +Block 0003 [101]: 888bffd8fe0e3b39 +Block 0003 [102]: 20056565ed74a83b +Block 0003 [103]: 86ae5f8cfec26527 +Block 0003 [104]: 045f8635c5deb96b +Block 0003 [105]: bf46419a235d6a27 +Block 0003 [106]: ed55a12bd839eefd +Block 0003 [107]: a46b03852768129f +Block 0003 [108]: e9392a5d93768be7 +Block 0003 [109]: 1755683d48f0c69b +Block 0003 [110]: f06e2709a9cd9675 +Block 0003 [111]: e589e4292cf704b5 +Block 0003 [112]: 6603b685775f4b74 +Block 0003 [113]: 6c64f5abd9163d64 +Block 0003 [114]: 8701c20eb13acd97 +Block 0003 [115]: 9d2f0e480ee351b5 +Block 0003 [116]: 7e2c0a9376088c82 +Block 0003 [117]: 6aa8c72815a770f1 +Block 0003 [118]: 0feb7b00d5113c68 +Block 0003 [119]: 72e79efd4e6f678c +Block 0003 [120]: 9c24b446c6641bd4 +Block 0003 [121]: 92a43699ecc3988f +Block 0003 [122]: 9dd3422d698d52c4 +Block 0003 [123]: 586130e96521c849 +Block 0003 [124]: a3a9e2624c22e9e2 +Block 0003 [125]: 7e982432d8e1761c +Block 0003 [126]: de238c4c31ab9518 +Block 0003 [127]: 9806bfa8d721de9f +Block 0004 [ 0]: db756afb20d0f801 +Block 0004 [ 1]: 52403c4b7098c439 +Block 0004 [ 2]: 060476b1eb46d30b +Block 0004 [ 3]: 28981d0098506ae3 +Block 0004 [ 4]: 0f05c643aa615a21 +Block 0004 [ 5]: cf2cc1388fa6c1d2 +Block 0004 [ 6]: 86fc3b76a8468c99 +Block 0004 [ 7]: a84397030daf6d8a +Block 0004 [ 8]: c650eb82be15bb19 +Block 0004 [ 9]: 253cf6e26b4655a8 +Block 0004 [ 10]: 085677dbf1566016 +Block 0004 [ 11]: 40fe9d75102201a6 +Block 0004 [ 12]: 613a5d61cdeb1b35 +Block 0004 [ 13]: fadad5a34a9cf63b +Block 0004 [ 14]: c3dd954823b55935 +Block 0004 [ 15]: b67522507c43fb2b +Block 0004 [ 16]: 601c060f0e8e6141 +Block 0004 [ 17]: ea466cf84f084dbd +Block 0004 [ 18]: f23820d8c13abd43 +Block 0004 [ 19]: b0e74adb6b084535 +Block 0004 [ 20]: c78e726fcffcbe09 +Block 0004 [ 21]: 398b885ddca727ab +Block 0004 [ 22]: 8e78fcdbf9a66417 +Block 0004 [ 23]: 5dbc6191b2232c06 +Block 0004 [ 24]: d706a14b2fc8ce39 +Block 0004 [ 25]: e4535ac6c8a26ed0 +Block 0004 [ 26]: 3805dfffecd51d9f +Block 0004 [ 27]: b4c63b72deaba3a6 +Block 0004 [ 28]: adb0c3bbb220b8e1 +Block 0004 [ 29]: 830dd01847112438 +Block 0004 [ 30]: c65d1ed36fe0fa0a +Block 0004 [ 31]: 449b624d9f7e4314 +Block 0004 [ 32]: 47856deea66fd6b6 +Block 0004 [ 33]: 336fd6e2c0b459dd +Block 0004 [ 34]: b24c5155dc84165f +Block 0004 [ 35]: 5b2785f6a2715313 +Block 0004 [ 36]: 4e1898ef2bf8c505 +Block 0004 [ 37]: d8b9094a47f656f2 +Block 0004 [ 38]: 12519f417bf4dfa7 +Block 0004 [ 39]: a977d962d47e354f +Block 0004 [ 40]: 691f4e137dbf082e +Block 0004 [ 41]: 5ad29eed2bac7fec +Block 0004 [ 42]: 427572e48fd7644e +Block 0004 [ 43]: 1b8cf180a1c73237 +Block 0004 [ 44]: 1aabf9f1184937da +Block 0004 [ 45]: 891cbda9e37ba68d +Block 0004 [ 46]: 0418daabe2c16169 +Block 0004 [ 47]: 64a7382e19d51973 +Block 0004 [ 48]: 8dbb4ef40e24566f +Block 0004 [ 49]: b11b05b045872fda +Block 0004 [ 50]: f3a6e55d9b5e47ff +Block 0004 [ 51]: b014a28f4444c68d +Block 0004 [ 52]: 36fd09913e88cc14 +Block 0004 [ 53]: 57dd73f3f6d83016 +Block 0004 [ 54]: 4fa25ff086004319 +Block 0004 [ 55]: 935ac3b9db1501e2 +Block 0004 [ 56]: 6e1a4444010c3cb4 +Block 0004 [ 57]: bde290d21f347b04 +Block 0004 [ 58]: 05fd38a4d47f0af6 +Block 0004 [ 59]: a3fbc08baf1fbede +Block 0004 [ 60]: 9595005e75362334 +Block 0004 [ 61]: 0b2ecde0552078e7 +Block 0004 [ 62]: be64f75e7900a732 +Block 0004 [ 63]: dfb4eb288d7eb5e4 +Block 0004 [ 64]: 20b14d8b83924244 +Block 0004 [ 65]: 04868735f30b39cf +Block 0004 [ 66]: c64982adce3c469f +Block 0004 [ 67]: 5b7b474fede2087a +Block 0004 [ 68]: 2c0a1912ad737151 +Block 0004 [ 69]: 1f4b24117b480cd2 +Block 0004 [ 70]: effcecfccbcfff8e +Block 0004 [ 71]: 2b0cb96832d4dc16 +Block 0004 [ 72]: e7fccf6dfa07ecd8 +Block 0004 [ 73]: 953afc6f861b1c94 +Block 0004 [ 74]: 725f8ba6d97ef823 +Block 0004 [ 75]: 5d2c69fd94b7e3d5 +Block 0004 [ 76]: f9fc85d4bd30520b +Block 0004 [ 77]: 54450477c83e21d1 +Block 0004 [ 78]: 2acbb625eda3b2f6 +Block 0004 [ 79]: 65ce6cc83e36847c +Block 0004 [ 80]: 157b6fcc033f9508 +Block 0004 [ 81]: 1e87646b58a7f2ad +Block 0004 [ 82]: 67d06c966e2ec700 +Block 0004 [ 83]: 7bb67c9e07139485 +Block 0004 [ 84]: 3c2a6ffb331055e9 +Block 0004 [ 85]: 3222341a5a4bfaa8 +Block 0004 [ 86]: 925790ae0fa10d1f +Block 0004 [ 87]: f2ef3171c9df4d0e +Block 0004 [ 88]: e3222a1744853453 +Block 0004 [ 89]: cc4a70c90ed4e3d1 +Block 0004 [ 90]: a6acce36d3cbff61 +Block 0004 [ 91]: 7d50ae85b9affa5d +Block 0004 [ 92]: 568200dc03447ed8 +Block 0004 [ 93]: 71ff3b3a01fab487 +Block 0004 [ 94]: 1c985317bb54925c +Block 0004 [ 95]: 05f623542b7f3397 +Block 0004 [ 96]: be9b653e7d14f39b +Block 0004 [ 97]: bf0c1f7dd51c1302 +Block 0004 [ 98]: bf86d9a6345007e9 +Block 0004 [ 99]: b820c3d21badb127 +Block 0004 [100]: 02834afe16035acc +Block 0004 [101]: 7fa95f3e1a84f66d +Block 0004 [102]: 515b912d57908619 +Block 0004 [103]: baa33b5032e8fcd6 +Block 0004 [104]: 7483cbfdef56254c +Block 0004 [105]: 3832871e97423269 +Block 0004 [106]: 72c7246ea679e000 +Block 0004 [107]: c9f8babb13cc69b0 +Block 0004 [108]: fb8757f84e77c30e +Block 0004 [109]: 9fdde5e1bb0e383e +Block 0004 [110]: 1766df9e43c5e58f +Block 0004 [111]: c618e86b1af6da02 +Block 0004 [112]: d7d9c781b3015ab0 +Block 0004 [113]: 51841b0d440e3795 +Block 0004 [114]: 282e5dcc69d5d2ec +Block 0004 [115]: 8cdad5cc0e82a1dc +Block 0004 [116]: e68c2af47545fd32 +Block 0004 [117]: 8350a28d7b542bb9 +Block 0004 [118]: 91372fdbb5b852bb +Block 0004 [119]: ded3484130d33a67 +Block 0004 [120]: f185eaf9a77023b2 +Block 0004 [121]: 26205250ddc11c7f +Block 0004 [122]: 39c3a7fcd987d77e +Block 0004 [123]: 8ff0734fe37406ac +Block 0004 [124]: 776c54ae235ecceb +Block 0004 [125]: 1df84f1a5ef7bc3d +Block 0004 [126]: f02e8b997b65c12f +Block 0004 [127]: d0efa6b02e97ed1d +Block 0005 [ 0]: 97365ec5d5feb9dc +Block 0005 [ 1]: 405a3347fb59461c +Block 0005 [ 2]: f9e0c320e8d154ed +Block 0005 [ 3]: 93d762daab5535f2 +Block 0005 [ 4]: e1279c771bb7ad39 +Block 0005 [ 5]: 2ddd3606c554bc2c +Block 0005 [ 6]: 6450a2130996c4f6 +Block 0005 [ 7]: 885bb49a481d2fe7 +Block 0005 [ 8]: 362b94e89df1c117 +Block 0005 [ 9]: 5ab9b69f2c8ac46c +Block 0005 [ 10]: 40ad27720d57185a +Block 0005 [ 11]: 8d50540d4e6e6d7b +Block 0005 [ 12]: 83a9e4ef385fe9d5 +Block 0005 [ 13]: b9b54d8b8f2984f5 +Block 0005 [ 14]: e1735ae8748ed910 +Block 0005 [ 15]: 0e446a07067a4e8e +Block 0005 [ 16]: c647cabca2bf8f7a +Block 0005 [ 17]: 94b2083ffab378f8 +Block 0005 [ 18]: ac8c8efc5e9ebb71 +Block 0005 [ 19]: a3c091fb4042d4fb +Block 0005 [ 20]: 0d3396a94e8f94e3 +Block 0005 [ 21]: 96d1456fabae1b0b +Block 0005 [ 22]: 26c474009eba6d80 +Block 0005 [ 23]: 5957c46a8e1c0c39 +Block 0005 [ 24]: d5aafbccb10c5642 +Block 0005 [ 25]: 1dd59c0f842f7fca +Block 0005 [ 26]: e3fa2b6c3eeca025 +Block 0005 [ 27]: 67c4520871b2e932 +Block 0005 [ 28]: 5ebd6871c2fc0b59 +Block 0005 [ 29]: 90d2edee6c1d9005 +Block 0005 [ 30]: dad34dbac094b87f +Block 0005 [ 31]: e54438ecb4b24f62 +Block 0005 [ 32]: 6eb10b8511b48f6d +Block 0005 [ 33]: 863ac85b81bb1c2b +Block 0005 [ 34]: 00ec6014392eb5b3 +Block 0005 [ 35]: 20c55c34c775b35b +Block 0005 [ 36]: 6a2efc2c5917a502 +Block 0005 [ 37]: b8cb8a562d9fd683 +Block 0005 [ 38]: f42931a0a29ccba2 +Block 0005 [ 39]: c3964b6d73dd347e +Block 0005 [ 40]: f23949b6fa10adc0 +Block 0005 [ 41]: 19a24ae861a83ccc +Block 0005 [ 42]: 49b34dc230aa14f5 +Block 0005 [ 43]: 277cc5b873776b0e +Block 0005 [ 44]: 6732bd0cbadb9619 +Block 0005 [ 45]: 2be9ae36f860f161 +Block 0005 [ 46]: 61592c3eb719855a +Block 0005 [ 47]: d2b629caba2aebec +Block 0005 [ 48]: 96247c1ae0664282 +Block 0005 [ 49]: 655c7c4537585a3c +Block 0005 [ 50]: 60b569ae13b6c8b1 +Block 0005 [ 51]: f335d545e50a4530 +Block 0005 [ 52]: 0bbbfaf0be722cbf +Block 0005 [ 53]: dfc61e9e557e44e5 +Block 0005 [ 54]: f15ae5152f91946f +Block 0005 [ 55]: 8b10184967e65648 +Block 0005 [ 56]: ee62ab86f357fbf6 +Block 0005 [ 57]: a676cd316f73b00a +Block 0005 [ 58]: e15dd8ae85ef70f7 +Block 0005 [ 59]: 0ed5e6375469b87b +Block 0005 [ 60]: bf4ad0c50a762ab1 +Block 0005 [ 61]: 0895b67633c14add +Block 0005 [ 62]: d4e44141246331d4 +Block 0005 [ 63]: 7bfc4a0d5c60bd78 +Block 0005 [ 64]: c88fee400aba9ca4 +Block 0005 [ 65]: b2bb482d8f37f64b +Block 0005 [ 66]: 8d19eb8ae10bb8e0 +Block 0005 [ 67]: 71647d13b3f2df80 +Block 0005 [ 68]: 330809743e2acd7a +Block 0005 [ 69]: 0b0a6e291fdd4d64 +Block 0005 [ 70]: 6ed960c9c7d0147a +Block 0005 [ 71]: 3d3453b5908f2eaf +Block 0005 [ 72]: 666a42e1953f7783 +Block 0005 [ 73]: 563179451c527b5e +Block 0005 [ 74]: 98de158b342a81a9 +Block 0005 [ 75]: 70ea5bed36f0c27c +Block 0005 [ 76]: c5d48e5c75044ac4 +Block 0005 [ 77]: 131d1cf79497fce4 +Block 0005 [ 78]: 502d4f9d9722d95a +Block 0005 [ 79]: 8cfd3119d03532ba +Block 0005 [ 80]: 847c8fed220b551f +Block 0005 [ 81]: 2de629f67b80ab43 +Block 0005 [ 82]: 366f96d310b73f7a +Block 0005 [ 83]: 882854c6aad02e67 +Block 0005 [ 84]: 655b8de717029a52 +Block 0005 [ 85]: ec848e02d002b2e7 +Block 0005 [ 86]: f468bcae80307e3b +Block 0005 [ 87]: e945840327a82759 +Block 0005 [ 88]: 44a9540fbc154202 +Block 0005 [ 89]: 92ecb8e9953e4b4a +Block 0005 [ 90]: 507abd983ab15f66 +Block 0005 [ 91]: 4b74dd58863117aa +Block 0005 [ 92]: 8f0c16a602e827b6 +Block 0005 [ 93]: 04dabe99055c7911 +Block 0005 [ 94]: 751498662fa26b4c +Block 0005 [ 95]: cab90768d911184e +Block 0005 [ 96]: f788ce69a19245e2 +Block 0005 [ 97]: d82096d5861d09b4 +Block 0005 [ 98]: d5a49556dd1a64a3 +Block 0005 [ 99]: 33c5d1ff3108f1c3 +Block 0005 [100]: 7000ced324095021 +Block 0005 [101]: 9c0b106f237035b0 +Block 0005 [102]: 5b0a824629eefaad +Block 0005 [103]: 9f3a70a53f500991 +Block 0005 [104]: 738807452e3a3632 +Block 0005 [105]: 2ed22603a5665055 +Block 0005 [106]: afe9ee256c051b3f +Block 0005 [107]: ac36d88864dd45fc +Block 0005 [108]: 4fcaa3b6e807e1ce +Block 0005 [109]: c149207930dabc97 +Block 0005 [110]: 2ac814034dc81dfc +Block 0005 [111]: 71edb390a916a67f +Block 0005 [112]: 20cf554180ffe9e0 +Block 0005 [113]: bb54c1d8ea79d355 +Block 0005 [114]: 2eb620e1e1811427 +Block 0005 [115]: 58d664027883cedf +Block 0005 [116]: a8fec49038889919 +Block 0005 [117]: a3bdcbb52bd4b630 +Block 0005 [118]: f6cd25ab758341dd +Block 0005 [119]: ae448eb1a7acb711 +Block 0005 [120]: 5d0d3d360339943f +Block 0005 [121]: 6b9a3ecd474aba3b +Block 0005 [122]: 2c534ae7c2a3b04f +Block 0005 [123]: e892ccac17c6456d +Block 0005 [124]: 7ff808f37169c921 +Block 0005 [125]: b8614be60c9c41bc +Block 0005 [126]: 439810b13ed01e1c +Block 0005 [127]: ca192babb18518cb +Block 0006 [ 0]: 5567c3fe090dd28e +Block 0006 [ 1]: 8d67a7ba019c88dc +Block 0006 [ 2]: 8caff62eff631181 +Block 0006 [ 3]: d72eddba14b5c03d +Block 0006 [ 4]: d7630af139b87bd7 +Block 0006 [ 5]: 750853f41bb331a8 +Block 0006 [ 6]: f8d103c297762291 +Block 0006 [ 7]: 2dae083ec585a586 +Block 0006 [ 8]: 626b2b63d161498a +Block 0006 [ 9]: c81de669dfeb13aa +Block 0006 [ 10]: 9c41b20f9889274c +Block 0006 [ 11]: 5c064dc661bbc6d6 +Block 0006 [ 12]: d8f6cb69aa556f7d +Block 0006 [ 13]: 569c7a1de808caf8 +Block 0006 [ 14]: f212e8fc9864aa7f +Block 0006 [ 15]: 784a66ec8fded6bf +Block 0006 [ 16]: 7b3644d8c7cc6ee2 +Block 0006 [ 17]: 47de720ab8662dc8 +Block 0006 [ 18]: b60758c5f35d33a3 +Block 0006 [ 19]: e82bc4ee11789ccd +Block 0006 [ 20]: b4b14f39ad071939 +Block 0006 [ 21]: cdc572feb64c77f6 +Block 0006 [ 22]: 4f1d233e9d2afb7a +Block 0006 [ 23]: 083f6f09f3589c18 +Block 0006 [ 24]: 91e9bb64b39eedc6 +Block 0006 [ 25]: ff631632c44b9be5 +Block 0006 [ 26]: 5f1d74f19fcf9ebb +Block 0006 [ 27]: c18575702765f410 +Block 0006 [ 28]: cb4c1f6b4b92ae73 +Block 0006 [ 29]: 2c47acff08aa3b6a +Block 0006 [ 30]: 7614e988f5de7f0d +Block 0006 [ 31]: 00aef92bc84ab36c +Block 0006 [ 32]: 8d568e3899bc329d +Block 0006 [ 33]: 93ee0cbb3fa97312 +Block 0006 [ 34]: 13d5658a3a5c3c06 +Block 0006 [ 35]: a19ab4c531fc3f3f +Block 0006 [ 36]: 0339f774914c7335 +Block 0006 [ 37]: 54e78c34c50dd35c +Block 0006 [ 38]: e222bc860018290d +Block 0006 [ 39]: 9c28c86cd7f61b70 +Block 0006 [ 40]: a85380135b847fc1 +Block 0006 [ 41]: 225414a9bdb19b61 +Block 0006 [ 42]: a0fbd39ccb46aa3f +Block 0006 [ 43]: 1ca6eb4988648f69 +Block 0006 [ 44]: 01695df4d0f0409a +Block 0006 [ 45]: d3b450827a33f3a7 +Block 0006 [ 46]: f5bfe4e78dc9b627 +Block 0006 [ 47]: 100ab041786e41d4 +Block 0006 [ 48]: 9d9d415f459fbe98 +Block 0006 [ 49]: 853fd4f2e9a42867 +Block 0006 [ 50]: ea657b6b10faf0d4 +Block 0006 [ 51]: 259e1b12b0f171fa +Block 0006 [ 52]: e8976ec91290563d +Block 0006 [ 53]: 1e412ebf6e0db035 +Block 0006 [ 54]: 849d615c1c6cfca2 +Block 0006 [ 55]: 5c11d9c6ce174cdb +Block 0006 [ 56]: 30b41a0e826fd9c2 +Block 0006 [ 57]: 31d73e96955f1340 +Block 0006 [ 58]: 14f074b7e26e3baa +Block 0006 [ 59]: 8eb1bec37ae581dc +Block 0006 [ 60]: 746facce259c02c9 +Block 0006 [ 61]: 03d1f7778abbe63f +Block 0006 [ 62]: eeff2118997dc86d +Block 0006 [ 63]: 90627027834a05e4 +Block 0006 [ 64]: 4bd0242cc3f044f7 +Block 0006 [ 65]: 519c2452cd1ca543 +Block 0006 [ 66]: e0ae6c47d727d6be +Block 0006 [ 67]: a913d15ae450d102 +Block 0006 [ 68]: 2823ac24a8d8fb6c +Block 0006 [ 69]: e907eb50e28565b1 +Block 0006 [ 70]: be0384795f998c29 +Block 0006 [ 71]: 3e3f5d9c252d4a47 +Block 0006 [ 72]: ed46fba6166a296e +Block 0006 [ 73]: 411e90d0cc8328fa +Block 0006 [ 74]: 332ca370c5b19bed +Block 0006 [ 75]: ac912248b236590e +Block 0006 [ 76]: 3ebd9154aea3189b +Block 0006 [ 77]: f3adf95f07c7edeb +Block 0006 [ 78]: 832321ca2483199f +Block 0006 [ 79]: 4b3578726e6d548e +Block 0006 [ 80]: b00c1ef3d8cbd83a +Block 0006 [ 81]: 7c29df3c99839f71 +Block 0006 [ 82]: 7825fea5c6892b1e +Block 0006 [ 83]: e99043733d5c8d15 +Block 0006 [ 84]: 3caccd923a60f855 +Block 0006 [ 85]: 2a3e154af80bf594 +Block 0006 [ 86]: 6688cc7c4764e11e +Block 0006 [ 87]: fa6ca05d1a601f5e +Block 0006 [ 88]: 04b5e8c105dd4562 +Block 0006 [ 89]: cbac7817e2e863ba +Block 0006 [ 90]: 58cd92a6c13b357e +Block 0006 [ 91]: ce4db34ad1d1bcbe +Block 0006 [ 92]: 68e21a26f2c97d49 +Block 0006 [ 93]: 53e396abb44d6f2c +Block 0006 [ 94]: 5cd31a0480291e4b +Block 0006 [ 95]: c91a9f8b190a4897 +Block 0006 [ 96]: 02ff4635b1f7bd99 +Block 0006 [ 97]: 6cea31788a0a3c45 +Block 0006 [ 98]: f22d5bf22fd3eb77 +Block 0006 [ 99]: 910e7439df3e5050 +Block 0006 [100]: ff94f950ee74b111 +Block 0006 [101]: b05178c84ae6c19f +Block 0006 [102]: eb2a7088c937b565 +Block 0006 [103]: 50d5dd2aea376866 +Block 0006 [104]: 7f629a6dd240c30b +Block 0006 [105]: 08a59c5edfe98396 +Block 0006 [106]: 55b920176a53d4c7 +Block 0006 [107]: 472c966c32a73ab0 +Block 0006 [108]: 6a1bcc98b4f8ed3d +Block 0006 [109]: b721fed948523009 +Block 0006 [110]: a0b34a33f38b99e6 +Block 0006 [111]: e748ba007b3555cd +Block 0006 [112]: e250a1b0cf3d4a97 +Block 0006 [113]: d0bc4b21724a5ef7 +Block 0006 [114]: 7b76eda1a50018cc +Block 0006 [115]: 71e663016941db15 +Block 0006 [116]: 9d11173466ba18c0 +Block 0006 [117]: 897602359be6f8c5 +Block 0006 [118]: 992dc7c6cfe686d7 +Block 0006 [119]: 69ed7655026d535b +Block 0006 [120]: 43619f859b7aa47e +Block 0006 [121]: 6f5f09231bc6deed +Block 0006 [122]: a7417d3014bb3f89 +Block 0006 [123]: cbf7dc5b9be3b6b4 +Block 0006 [124]: 61d700db25e0f849 +Block 0006 [125]: 70873a47587525cf +Block 0006 [126]: 58adc5e65f2ab161 +Block 0006 [127]: 6372caf551890b02 +Block 0007 [ 0]: e5af68ac92e3ce1d +Block 0007 [ 1]: 8ab48a815360139e +Block 0007 [ 2]: 599ee02270046677 +Block 0007 [ 3]: 3115b3b36ec22e74 +Block 0007 [ 4]: 133e5b0cc50ea01e +Block 0007 [ 5]: 66f56e0ec496e469 +Block 0007 [ 6]: 3c1fffec56f01c76 +Block 0007 [ 7]: e43cc0fb2e85690f +Block 0007 [ 8]: 85862c5ce7ac45c4 +Block 0007 [ 9]: 186e2f634a9f3780 +Block 0007 [ 10]: 24ef18172244e1cd +Block 0007 [ 11]: 943f3473b412bd6c +Block 0007 [ 12]: a477e8ba6d59ca13 +Block 0007 [ 13]: 5336924c59df8222 +Block 0007 [ 14]: abb2069e9dc9fb01 +Block 0007 [ 15]: 3d292c01089a9fe9 +Block 0007 [ 16]: 3b5d694eecf98e24 +Block 0007 [ 17]: e92b9a00a8274bf3 +Block 0007 [ 18]: a6d88a75c29b9553 +Block 0007 [ 19]: 9fe8d0d1b63840ce +Block 0007 [ 20]: 41d4833824e399d5 +Block 0007 [ 21]: 2e4556d5479df56b +Block 0007 [ 22]: d7beb6ba52a5e3cf +Block 0007 [ 23]: 60179b8e6b5bd794 +Block 0007 [ 24]: 9f76a53ba039b1c6 +Block 0007 [ 25]: 5ed48af982352227 +Block 0007 [ 26]: d58547fca3fb1f52 +Block 0007 [ 27]: 4ced6a9525b712c4 +Block 0007 [ 28]: f9e3aa78460a304b +Block 0007 [ 29]: b104cf2a586b2933 +Block 0007 [ 30]: 75eb7a8bca1ab23f +Block 0007 [ 31]: 3cdffacf21180e11 +Block 0007 [ 32]: 58d54ba682343f53 +Block 0007 [ 33]: 1ef6dcc2c4f22240 +Block 0007 [ 34]: 4d70211dafb7c9e8 +Block 0007 [ 35]: 2e3401d6c153aeff +Block 0007 [ 36]: a4829109c6b8d4c9 +Block 0007 [ 37]: d450dfd117330fc2 +Block 0007 [ 38]: bf9e6e9530001a66 +Block 0007 [ 39]: 35da1a2fa6ee32ce +Block 0007 [ 40]: f50b3d2a1f42afc6 +Block 0007 [ 41]: fedc5dfd801eb77e +Block 0007 [ 42]: 75bb865d03ea9a33 +Block 0007 [ 43]: 0ce9dfee891b34da +Block 0007 [ 44]: 965b86361b92d34c +Block 0007 [ 45]: 21c534a143787b87 +Block 0007 [ 46]: 872689c786a12d77 +Block 0007 [ 47]: 82c87d77434d10f1 +Block 0007 [ 48]: 31dbd1a3f4dcb526 +Block 0007 [ 49]: 98401b45be41281c +Block 0007 [ 50]: 493b2c530ac904ab +Block 0007 [ 51]: e64002673ddbe2c4 +Block 0007 [ 52]: ffa237b4d9f7c6b1 +Block 0007 [ 53]: f5c89a2d0c692df0 +Block 0007 [ 54]: ceaa1fcc80d1a707 +Block 0007 [ 55]: f0ed73be2d486643 +Block 0007 [ 56]: 2ce9741d5fd0d29a +Block 0007 [ 57]: b45b037a600dd4a8 +Block 0007 [ 58]: b6b867bf58753eba +Block 0007 [ 59]: dd0ba939cdef4048 +Block 0007 [ 60]: 67d73557e89394ab +Block 0007 [ 61]: f74e86f788e87bf0 +Block 0007 [ 62]: d2d266baf5e9202b +Block 0007 [ 63]: 995f928b5e0dc659 +Block 0007 [ 64]: b07a140277d0f7c8 +Block 0007 [ 65]: f05e1ae0444eccc6 +Block 0007 [ 66]: 33b96c500cb1d1b6 +Block 0007 [ 67]: 45136441ee11fd1b +Block 0007 [ 68]: 84c8824ae1e5edc3 +Block 0007 [ 69]: 860ba57d1b23aa52 +Block 0007 [ 70]: c84a54c4c7720146 +Block 0007 [ 71]: 2c35fbedbdace5a3 +Block 0007 [ 72]: ee3471988c8956d5 +Block 0007 [ 73]: c8e562b360fd8beb +Block 0007 [ 74]: 3ce39b5be84dc44f +Block 0007 [ 75]: 8e9a81d4cf5091e7 +Block 0007 [ 76]: 2661b97ce55a2d40 +Block 0007 [ 77]: 40f1554966b6a83a +Block 0007 [ 78]: b6a91f1e82939351 +Block 0007 [ 79]: 1ea224ba61929ccf +Block 0007 [ 80]: 24bbb716c04b5a1d +Block 0007 [ 81]: 3463f2a6a33663ba +Block 0007 [ 82]: 88c8abbed9e2fdf0 +Block 0007 [ 83]: 8124cf569702027c +Block 0007 [ 84]: 72d2441e9ad6a642 +Block 0007 [ 85]: bc4b5dcf6644ede7 +Block 0007 [ 86]: dccb3ae0b36a046c +Block 0007 [ 87]: 6634272be8ced6f9 +Block 0007 [ 88]: 891305818c792103 +Block 0007 [ 89]: f34a4ad0981c2e3d +Block 0007 [ 90]: 14c59749c7a6612d +Block 0007 [ 91]: 03f986b1327f47a6 +Block 0007 [ 92]: 43d9aeba262bce21 +Block 0007 [ 93]: 34f1ac6a86561bab +Block 0007 [ 94]: cdcb3b817cd99bcd +Block 0007 [ 95]: 95643e60b01b6c29 +Block 0007 [ 96]: 461a3563fc0e56f7 +Block 0007 [ 97]: bd3a2d183f293aab +Block 0007 [ 98]: d5789e856dd151bd +Block 0007 [ 99]: 7ed20b41f22451ac +Block 0007 [100]: 49712994024f26bb +Block 0007 [101]: a6d211b07780fd1d +Block 0007 [102]: 4f66c78a2f221653 +Block 0007 [103]: 0bc1dd9aa0830a9e +Block 0007 [104]: 250eeda980c9d642 +Block 0007 [105]: d201c949e6b6e459 +Block 0007 [106]: 576cde4cea26ab80 +Block 0007 [107]: 0bfc56658c0245d4 +Block 0007 [108]: e9f18a507c911fa4 +Block 0007 [109]: 2af0d6ca54f00132 +Block 0007 [110]: 297e9aaabf0d2ffa +Block 0007 [111]: 9f27fcd100c680dc +Block 0007 [112]: 8d39aeff9847b7ee +Block 0007 [113]: c80985dc01487e1e +Block 0007 [114]: f2fa0eb778c7af62 +Block 0007 [115]: f6394cf305a48740 +Block 0007 [116]: 015e6eabbb90e264 +Block 0007 [117]: bab21f929b7aab7e +Block 0007 [118]: dd466aed8166cfb7 +Block 0007 [119]: 4b6cb5dee28bc25b +Block 0007 [120]: 6098a17ecfe1a437 +Block 0007 [121]: b17491387f8bf0c0 +Block 0007 [122]: e8150e053b31d264 +Block 0007 [123]: 9603509225977b3c +Block 0007 [124]: bc8cd3f9c06cad39 +Block 0007 [125]: 3eaa4a01951d171c +Block 0007 [126]: 2ced5b180814e072 +Block 0007 [127]: 0060e85c62d0a2ec +Block 0008 [ 0]: 3bb7ae9e189f4b3f +Block 0008 [ 1]: 4871d3c6722a6c16 +Block 0008 [ 2]: 49d7f564e969f85c +Block 0008 [ 3]: 226bfa8e3fb66cc5 +Block 0008 [ 4]: 815d9f89ac664b79 +Block 0008 [ 5]: 7ca4a873f2e1ddbf +Block 0008 [ 6]: 0b3d92d79b49ee8c +Block 0008 [ 7]: 51c76e7c8fd0fb4f +Block 0008 [ 8]: 878b42e3b329ddb1 +Block 0008 [ 9]: 0c80181f9f2f6526 +Block 0008 [ 10]: 47eb5ddebb1291ff +Block 0008 [ 11]: 1c488d86f2f956a7 +Block 0008 [ 12]: 81063e175c0a41a9 +Block 0008 [ 13]: 78c27945ab3a11d0 +Block 0008 [ 14]: fa89b846df65fa62 +Block 0008 [ 15]: 54c262700a93c68f +Block 0008 [ 16]: b00923d64112c59c +Block 0008 [ 17]: f74e7ffa228ce2f0 +Block 0008 [ 18]: f2cfb80fec37299d +Block 0008 [ 19]: 43c5da6cb3d29e09 +Block 0008 [ 20]: 37c1cc0b0b683be4 +Block 0008 [ 21]: dbe418ef69d874c7 +Block 0008 [ 22]: c3a4dc36b63bdc1b +Block 0008 [ 23]: 4ad7a00fd1e79824 +Block 0008 [ 24]: af828d9bdb440528 +Block 0008 [ 25]: 7d89ae469511193d +Block 0008 [ 26]: f8569a874d5b7dba +Block 0008 [ 27]: e8966f0eff46620d +Block 0008 [ 28]: 221fd7081112bdb9 +Block 0008 [ 29]: 93b8a531f5841506 +Block 0008 [ 30]: 0f91faef8f459fe8 +Block 0008 [ 31]: ca2bd49cc88768f9 +Block 0008 [ 32]: 06e4a1f88407371e +Block 0008 [ 33]: a0658ae49d0e9b23 +Block 0008 [ 34]: 1e4cb8e54cc2324e +Block 0008 [ 35]: 2203d1a291721284 +Block 0008 [ 36]: d770a74079e19623 +Block 0008 [ 37]: 7206051e5574dd29 +Block 0008 [ 38]: cd399fada5c4aaaa +Block 0008 [ 39]: 0cb6960a5fa42edf +Block 0008 [ 40]: 5635ab47d64748d7 +Block 0008 [ 41]: 2bc716b701300050 +Block 0008 [ 42]: cef5872ca6db902e +Block 0008 [ 43]: 7160475a5e5c24b9 +Block 0008 [ 44]: 6f46f4222ed2e9ea +Block 0008 [ 45]: 9654e52ebcf77fc7 +Block 0008 [ 46]: 66ada969429a579c +Block 0008 [ 47]: dd4e6035012a1865 +Block 0008 [ 48]: 4c58b068f5496cd1 +Block 0008 [ 49]: ca46c2e8b1bc480b +Block 0008 [ 50]: b03db2a00420d0e6 +Block 0008 [ 51]: b0104b03cd81c752 +Block 0008 [ 52]: ccb51bf267691516 +Block 0008 [ 53]: 6f1b00350c4eb690 +Block 0008 [ 54]: 7a7d94de4caa1729 +Block 0008 [ 55]: d1e775ab9a27e50c +Block 0008 [ 56]: 2006ab215b5eae17 +Block 0008 [ 57]: 8876c48940376930 +Block 0008 [ 58]: 04f7adad534d0b43 +Block 0008 [ 59]: f36daf3f73b7648d +Block 0008 [ 60]: 11e7f9899d271b42 +Block 0008 [ 61]: 8ac2f8f3de06d2d4 +Block 0008 [ 62]: f258d11c38c78a60 +Block 0008 [ 63]: 0b4ebd059552ee96 +Block 0008 [ 64]: 9231af72054c88a6 +Block 0008 [ 65]: b2d22d56255d6a4c +Block 0008 [ 66]: 208809ca11cf7847 +Block 0008 [ 67]: 8df34a7478f9f5dd +Block 0008 [ 68]: 810e372ab981ce4b +Block 0008 [ 69]: 89c6f38f39971b50 +Block 0008 [ 70]: 900b46092a6eb453 +Block 0008 [ 71]: 63557a31e1c33595 +Block 0008 [ 72]: bb476c42a9874589 +Block 0008 [ 73]: d18c6d27105e48d2 +Block 0008 [ 74]: 67b78021633eb776 +Block 0008 [ 75]: 26a4cc2ec7627975 +Block 0008 [ 76]: 7a41ebe91b61c303 +Block 0008 [ 77]: 8719434029afdeb2 +Block 0008 [ 78]: 5ccc65a3dca58b5e +Block 0008 [ 79]: 151cf064fd68cf19 +Block 0008 [ 80]: 099a4141eaf944c9 +Block 0008 [ 81]: 1a00a7b15177c815 +Block 0008 [ 82]: 9617f3c9d79165e5 +Block 0008 [ 83]: 0633785f3798595f +Block 0008 [ 84]: 82989ddd8ed0cddc +Block 0008 [ 85]: f971723863681e7f +Block 0008 [ 86]: 006885f72ad83a6e +Block 0008 [ 87]: 0eea05ecafdf9994 +Block 0008 [ 88]: 3becdde2c8756f9b +Block 0008 [ 89]: ba5b7af0494782b9 +Block 0008 [ 90]: 8e093c4a112c3c00 +Block 0008 [ 91]: b6c1189d04a1d340 +Block 0008 [ 92]: 4d319e9ab94d3e23 +Block 0008 [ 93]: 6eeaecfc749aa50d +Block 0008 [ 94]: 3ec3286ab90d3c76 +Block 0008 [ 95]: 4d6f7eab345c86ac +Block 0008 [ 96]: 2468ec86927b1207 +Block 0008 [ 97]: c8545e1af6328683 +Block 0008 [ 98]: 18358c7f4c4e0a2f +Block 0008 [ 99]: d5a6d7e7269f1227 +Block 0008 [100]: c8554d835c547ae6 +Block 0008 [101]: 36c2c174e2e5a35b +Block 0008 [102]: acbb1f4892e38b4f +Block 0008 [103]: 841fed21e8a055fe +Block 0008 [104]: 9210713ecb31879c +Block 0008 [105]: 4a94e2cc4ea5c9f5 +Block 0008 [106]: e16adbea83dc65c4 +Block 0008 [107]: d1886e10ac7639b8 +Block 0008 [108]: b7567cc205f8d932 +Block 0008 [109]: 686815e7e302618a +Block 0008 [110]: 52d2241453c9f024 +Block 0008 [111]: 675cd693897661df +Block 0008 [112]: 25da19f17758d75b +Block 0008 [113]: 680c603aeea91871 +Block 0008 [114]: 0422985fee134a01 +Block 0008 [115]: 4876e8adceacc9b1 +Block 0008 [116]: 11d14285f3963391 +Block 0008 [117]: e7d41ef32a1da72e +Block 0008 [118]: e2ed3e4d9b6c04a1 +Block 0008 [119]: 4aabfde7e0b605cf +Block 0008 [120]: 83889bda82352bec +Block 0008 [121]: 137f3bfdce40f1cf +Block 0008 [122]: f5a57480af315e41 +Block 0008 [123]: 215ab203e038df23 +Block 0008 [124]: 1cfd21d6e3ef2735 +Block 0008 [125]: c956265ca56c41e8 +Block 0008 [126]: fc7298a18032efb9 +Block 0008 [127]: 62f5cc7e96f7a920 +Block 0009 [ 0]: 7df42ba8721fe889 +Block 0009 [ 1]: b6111ac624204424 +Block 0009 [ 2]: 486c98ce436fbd12 +Block 0009 [ 3]: 5e04a7f67216dcc6 +Block 0009 [ 4]: 65139d842c4ef511 +Block 0009 [ 5]: 60d706c1b4966e8d +Block 0009 [ 6]: 7a4d779951af65a7 +Block 0009 [ 7]: 80e0677d98c29149 +Block 0009 [ 8]: 515c99c1666d19ff +Block 0009 [ 9]: ec2aeec569c003c8 +Block 0009 [ 10]: 3bf671e9aa667761 +Block 0009 [ 11]: 140f53c675250fdb +Block 0009 [ 12]: 384950521419cf61 +Block 0009 [ 13]: dd96fe61cd894c12 +Block 0009 [ 14]: a54a4ef56712c263 +Block 0009 [ 15]: 686ca4e06fdea640 +Block 0009 [ 16]: c1d579d5fbe3b115 +Block 0009 [ 17]: bb1b7cd496096326 +Block 0009 [ 18]: a1f841ee18949ddd +Block 0009 [ 19]: e2d3370969b910c1 +Block 0009 [ 20]: 36d89c41fe3b46f5 +Block 0009 [ 21]: c63f9856d0426952 +Block 0009 [ 22]: fe27ac9b573089d3 +Block 0009 [ 23]: 6d6260bfd54cf612 +Block 0009 [ 24]: e0f205707d67ffe4 +Block 0009 [ 25]: 6bd588e661ba4e14 +Block 0009 [ 26]: 9bf7be2e77cbf233 +Block 0009 [ 27]: b6f5fdaa0dc4cd84 +Block 0009 [ 28]: 576a8562230ab47c +Block 0009 [ 29]: f4ccb57d9ab736ab +Block 0009 [ 30]: 8b0e76738b5fc872 +Block 0009 [ 31]: f7803b666ec8957a +Block 0009 [ 32]: 3f78fe043e0cfb43 +Block 0009 [ 33]: c913f2699d20c470 +Block 0009 [ 34]: 0ab2e84f3bcf8e09 +Block 0009 [ 35]: f5e7b0abee13f4f1 +Block 0009 [ 36]: cc161bdb34537218 +Block 0009 [ 37]: 7944df80e54a3be5 +Block 0009 [ 38]: 50356cde8f0d4d57 +Block 0009 [ 39]: 82502cbfd481d12e +Block 0009 [ 40]: 3ba30a673984c1ad +Block 0009 [ 41]: 56039a33423c9980 +Block 0009 [ 42]: 0f13c649e5a88821 +Block 0009 [ 43]: dfbbb9d225918f1b +Block 0009 [ 44]: fb8c47279fb810ab +Block 0009 [ 45]: ed67b9d5c4e6646d +Block 0009 [ 46]: 7bb9fea2ec9ddcce +Block 0009 [ 47]: f0daea90ef3b24f6 +Block 0009 [ 48]: 5845fd237b74c7a7 +Block 0009 [ 49]: f45163287bbf8b0a +Block 0009 [ 50]: 163c3282c762765a +Block 0009 [ 51]: c3b1de32025b97d9 +Block 0009 [ 52]: 5974b7e5aa241d3d +Block 0009 [ 53]: 0b8b540ed5bab753 +Block 0009 [ 54]: 6fbe481d7973d25f +Block 0009 [ 55]: 3882cf518bede3f7 +Block 0009 [ 56]: 960cb62d91c9c8f6 +Block 0009 [ 57]: 110dbc0c5ca2aef5 +Block 0009 [ 58]: c1309fbafeb3a68c +Block 0009 [ 59]: 064288ce0deb4656 +Block 0009 [ 60]: b2a7d1d41301758e +Block 0009 [ 61]: af9697b91850edda +Block 0009 [ 62]: 4d24cea246737528 +Block 0009 [ 63]: 784b376cfb2d0ba6 +Block 0009 [ 64]: d1f48e9c5e8af3de +Block 0009 [ 65]: 20eedfb6217c4983 +Block 0009 [ 66]: 7d2f4abd53e7c5b9 +Block 0009 [ 67]: 58f1ece95d65b46e +Block 0009 [ 68]: bc4b428f80c0af7c +Block 0009 [ 69]: 4585bb3525f1e55a +Block 0009 [ 70]: f324251c9d77b113 +Block 0009 [ 71]: 33f191b5173a42eb +Block 0009 [ 72]: 28ebdc374de36598 +Block 0009 [ 73]: 32f3a953382a498b +Block 0009 [ 74]: d35e9c131e3608a7 +Block 0009 [ 75]: f689a7d106420841 +Block 0009 [ 76]: 30995ce163c77fa5 +Block 0009 [ 77]: e8faa3ecf1de154c +Block 0009 [ 78]: 57530aa7a61fc0cc +Block 0009 [ 79]: 35efd5a0d158dcdc +Block 0009 [ 80]: 4e73e2d6aa2ac171 +Block 0009 [ 81]: 15771f08e1ef7fe5 +Block 0009 [ 82]: e66a3071a132f10c +Block 0009 [ 83]: 843e20be6f0785b0 +Block 0009 [ 84]: b07328be06c772eb +Block 0009 [ 85]: f9e991fed1add433 +Block 0009 [ 86]: cc2f21af35d479ca +Block 0009 [ 87]: 8e8419f0ca164d71 +Block 0009 [ 88]: 2cd7dcf212b3abfe +Block 0009 [ 89]: 2d64fac5a0b31d64 +Block 0009 [ 90]: 3ba34d7c079bebb6 +Block 0009 [ 91]: 90f66d7ee104c55f +Block 0009 [ 92]: e1456b346478113d +Block 0009 [ 93]: 0c285835265f3be3 +Block 0009 [ 94]: 7f9309a63daa86b8 +Block 0009 [ 95]: ac44c96a04460a00 +Block 0009 [ 96]: d135bc938ce01955 +Block 0009 [ 97]: 54fc07c195ab1407 +Block 0009 [ 98]: 39274ffa1a180bcd +Block 0009 [ 99]: 49cb9ea57622632f +Block 0009 [100]: b1f6e49b17a8d39f +Block 0009 [101]: 99b4eaef9f2e5908 +Block 0009 [102]: c027417b95f7828f +Block 0009 [103]: d98dfdbb969617a4 +Block 0009 [104]: 86032385ce09b244 +Block 0009 [105]: 786206950707f208 +Block 0009 [106]: d6d6aa444b93e383 +Block 0009 [107]: 6f3d16d5d71e52bc +Block 0009 [108]: ff6886abc5180c26 +Block 0009 [109]: 7ec9e1efd2d57ca5 +Block 0009 [110]: 497ca9c5dc68f98e +Block 0009 [111]: b4b70a21809a2988 +Block 0009 [112]: ddde3f879a1408ec +Block 0009 [113]: 35d73f42f4bee7b3 +Block 0009 [114]: 86bb8179313e38b2 +Block 0009 [115]: fbf1f7eb83326ddd +Block 0009 [116]: 7c362173a3a1d41b +Block 0009 [117]: cb9c8ca6a2c391fb +Block 0009 [118]: 16a3ab8a50ebc7c1 +Block 0009 [119]: b47dbea03b193d60 +Block 0009 [120]: 6e61db495e175da2 +Block 0009 [121]: e2dfec565ea44be2 +Block 0009 [122]: 62b2cd09575b9f1b +Block 0009 [123]: a86f0c012f643b10 +Block 0009 [124]: 4df4c66286c2beb3 +Block 0009 [125]: f92d1ef872a19f93 +Block 0009 [126]: 239813284a14780c +Block 0009 [127]: 2b8b5b9e47737d9b +Block 0010 [ 0]: d49f88dd8c8f6dca +Block 0010 [ 1]: 360d985177d3eb44 +Block 0010 [ 2]: 56e7f795256a450d +Block 0010 [ 3]: 016e1e47163f4bd7 +Block 0010 [ 4]: fcdd1debf16667bc +Block 0010 [ 5]: 4a0f1022f7a85f2c +Block 0010 [ 6]: e251feccd36d554d +Block 0010 [ 7]: d36d92ecc2b785cf +Block 0010 [ 8]: f2e379c0e8fc1248 +Block 0010 [ 9]: c3ba2a1d541d48a2 +Block 0010 [ 10]: f616ffee327e5c77 +Block 0010 [ 11]: 1a66afea7fe7a12f +Block 0010 [ 12]: b49783cdc2c97ff5 +Block 0010 [ 13]: dd9d58b1dee8b006 +Block 0010 [ 14]: 52fdd6bc21a7d42e +Block 0010 [ 15]: 89ee24884725e7dd +Block 0010 [ 16]: 19a9257c35240187 +Block 0010 [ 17]: 8fbefe8e54c3e278 +Block 0010 [ 18]: 546556e542abe8f5 +Block 0010 [ 19]: 336fe46a3902f155 +Block 0010 [ 20]: a2845437c78ec507 +Block 0010 [ 21]: c3fbb5a6fc4a4ddb +Block 0010 [ 22]: 1f2b44c37f824805 +Block 0010 [ 23]: 094c983c04543c5d +Block 0010 [ 24]: fb6b47e6cdce5891 +Block 0010 [ 25]: be5642c616a0c685 +Block 0010 [ 26]: 0db4788cd321d134 +Block 0010 [ 27]: 058a7158a4cca32e +Block 0010 [ 28]: 93fb20628ea97197 +Block 0010 [ 29]: 1a67eefe57587edb +Block 0010 [ 30]: feccbe28169abf9e +Block 0010 [ 31]: f23b74ca80971ba3 +Block 0010 [ 32]: 5c8fdeb0ddef1927 +Block 0010 [ 33]: 259d3c1365429795 +Block 0010 [ 34]: 6bf4940821839897 +Block 0010 [ 35]: ebaa2c513a084143 +Block 0010 [ 36]: 69bcf4a9aca7694f +Block 0010 [ 37]: bfbdda770ce93f75 +Block 0010 [ 38]: 8d444baf0f379a72 +Block 0010 [ 39]: 7ae56503dd3a1bcb +Block 0010 [ 40]: 2b899d8e61c4940f +Block 0010 [ 41]: bd879011317e4fa4 +Block 0010 [ 42]: 27fbc73f925b5004 +Block 0010 [ 43]: 254a67007562e302 +Block 0010 [ 44]: f73bd24b48e0ef31 +Block 0010 [ 45]: 0ddd73fb51ede360 +Block 0010 [ 46]: 1022a4004d4afb08 +Block 0010 [ 47]: a9df352deae2801e +Block 0010 [ 48]: 06006b210dfe4dda +Block 0010 [ 49]: 5c8edeb2290aeb31 +Block 0010 [ 50]: bcd906b29d549f4f +Block 0010 [ 51]: 02a71e9974436135 +Block 0010 [ 52]: d55765d1ec13a881 +Block 0010 [ 53]: 564a87e2a5d3c32c +Block 0010 [ 54]: 78be17f315291f85 +Block 0010 [ 55]: 12c3fe39d3c08b81 +Block 0010 [ 56]: 0f2055677ab1abbd +Block 0010 [ 57]: 19b266cbb045ad88 +Block 0010 [ 58]: 3927c1ec77870400 +Block 0010 [ 59]: 92170da5db938208 +Block 0010 [ 60]: 645e079da5039e12 +Block 0010 [ 61]: f2173bb060d3dcdb +Block 0010 [ 62]: 2c50ac91eed833fb +Block 0010 [ 63]: 3a6c74dd1f99824a +Block 0010 [ 64]: e3b11ae8f06a4f4e +Block 0010 [ 65]: 2f3b265788c439b1 +Block 0010 [ 66]: 352355d6897b041e +Block 0010 [ 67]: da1fecab11ff2979 +Block 0010 [ 68]: 5edb674437a9b9b0 +Block 0010 [ 69]: 05752057c0bb1191 +Block 0010 [ 70]: 480910f6930fde33 +Block 0010 [ 71]: df4e2f47f791170e +Block 0010 [ 72]: b3f1dcf371a00e65 +Block 0010 [ 73]: 726c421348a10f7d +Block 0010 [ 74]: 41233522f097cb65 +Block 0010 [ 75]: 76af4be633a5ceb6 +Block 0010 [ 76]: 53b1493022908c55 +Block 0010 [ 77]: 438211be870d4a48 +Block 0010 [ 78]: 0bdb60cc8666ddc2 +Block 0010 [ 79]: 2dcfc92e4aff5d2d +Block 0010 [ 80]: 279ed9fc4f5c6aa9 +Block 0010 [ 81]: 26dc91dc7bd21318 +Block 0010 [ 82]: 023588e6b690addc +Block 0010 [ 83]: 16e0b899efea3059 +Block 0010 [ 84]: 444c13f234914022 +Block 0010 [ 85]: ed59783c05ac18b2 +Block 0010 [ 86]: bf921c1b5d40b7b7 +Block 0010 [ 87]: 13b6d88fdede6b59 +Block 0010 [ 88]: fdb2cdb9b0928760 +Block 0010 [ 89]: afe345c0aa8f90d1 +Block 0010 [ 90]: 056db68149846e3e +Block 0010 [ 91]: bae26f87d7e35c28 +Block 0010 [ 92]: f1884846cb258f29 +Block 0010 [ 93]: 8afcddda851c8896 +Block 0010 [ 94]: beba967b77f35c8d +Block 0010 [ 95]: 78f26d6f9670cd7f +Block 0010 [ 96]: 6439369632df21fd +Block 0010 [ 97]: 1e1cc5433abf0e2f +Block 0010 [ 98]: cbc9411fda3913ed +Block 0010 [ 99]: 2364eb785d28c211 +Block 0010 [100]: d391a1f40d206429 +Block 0010 [101]: 4db905b5e46aa4bc +Block 0010 [102]: 6023079f7ad4d5b0 +Block 0010 [103]: 8c784b971cfeab58 +Block 0010 [104]: d1522490e5dd6703 +Block 0010 [105]: 6796509ff2b72dd0 +Block 0010 [106]: e858ef632e8b3308 +Block 0010 [107]: d38f1c0d3643f057 +Block 0010 [108]: 8b8477a36603a379 +Block 0010 [109]: 0e8d6b8e97ee02fc +Block 0010 [110]: 4cf6d7daf0cd2036 +Block 0010 [111]: 13f6d2ff8b73a439 +Block 0010 [112]: e40b0130ebe6625c +Block 0010 [113]: b7128faf5839f977 +Block 0010 [114]: 7d6b4a598cfab926 +Block 0010 [115]: d111f97b32f40ac5 +Block 0010 [116]: c2c9cc6270932cd9 +Block 0010 [117]: 67c6151923ea573d +Block 0010 [118]: 9e30aba29249e704 +Block 0010 [119]: d409dd6ed1a5a5cf +Block 0010 [120]: 9be62c106675eba5 +Block 0010 [121]: d01fa6dfa39f78c2 +Block 0010 [122]: e040f5d7d9af83db +Block 0010 [123]: c2091487fc3e0f14 +Block 0010 [124]: ee226530a2f80bdd +Block 0010 [125]: 2109d0f9b7c7fcfd +Block 0010 [126]: 3d48628f535998f3 +Block 0010 [127]: a70033bcbcf46e83 +Block 0011 [ 0]: b66c2134a1f0cd79 +Block 0011 [ 1]: 202885bd2ca49a11 +Block 0011 [ 2]: 2445e4ee7bfecd31 +Block 0011 [ 3]: 5cc3f7f2be3df555 +Block 0011 [ 4]: 514daa6533b7b0c6 +Block 0011 [ 5]: b34debea62c9c8cb +Block 0011 [ 6]: 571514fc3e6fde7c +Block 0011 [ 7]: fca236241d126fe1 +Block 0011 [ 8]: f26bf4187119f8d1 +Block 0011 [ 9]: 0d8ed9d08606e3b6 +Block 0011 [ 10]: a899d6fcf0c58909 +Block 0011 [ 11]: ac5e087dd562c2a1 +Block 0011 [ 12]: 9df83e30ecc1dded +Block 0011 [ 13]: d2567b9e5da4b16e +Block 0011 [ 14]: c735486fb3a67b04 +Block 0011 [ 15]: 35c89d639f469f20 +Block 0011 [ 16]: 9abc02750af5f859 +Block 0011 [ 17]: 82576ed164b7e5dd +Block 0011 [ 18]: b2dc3d5197bc726f +Block 0011 [ 19]: 8a665fd2f6ed15f9 +Block 0011 [ 20]: ea0247aa64bf75b8 +Block 0011 [ 21]: 02c8eeecb3cbabbc +Block 0011 [ 22]: 8de76739bf0b6a2b +Block 0011 [ 23]: 129b74f249187f3e +Block 0011 [ 24]: d89529b9d70d730f +Block 0011 [ 25]: 1c60c20a05d2292d +Block 0011 [ 26]: 5bb763432466d75d +Block 0011 [ 27]: acfea8c8aa0f6859 +Block 0011 [ 28]: e64be8815b20811c +Block 0011 [ 29]: 0b755066138281a5 +Block 0011 [ 30]: 6fbd7306f2136c31 +Block 0011 [ 31]: 1c73a2fdee607efb +Block 0011 [ 32]: d658c0320021835e +Block 0011 [ 33]: 8e6e5c6e2867d5e2 +Block 0011 [ 34]: feab06d1861517a4 +Block 0011 [ 35]: 2f948ed83df46ee2 +Block 0011 [ 36]: af8bcbb827657fd5 +Block 0011 [ 37]: 82e89a681a4eb1e3 +Block 0011 [ 38]: 8544c46336fce186 +Block 0011 [ 39]: 604325005561f515 +Block 0011 [ 40]: cb65d782aa201563 +Block 0011 [ 41]: db31e8f4ba31346b +Block 0011 [ 42]: a882920f87d38613 +Block 0011 [ 43]: 31d7b9eb7e37efcb +Block 0011 [ 44]: 69c119cf8b14de0b +Block 0011 [ 45]: 9e6da3ff2e4fa029 +Block 0011 [ 46]: 009f44d1f5196a70 +Block 0011 [ 47]: 7399a403bbc3528c +Block 0011 [ 48]: c6c3f4e4a86c5e9d +Block 0011 [ 49]: ebdefa9151e4b6c4 +Block 0011 [ 50]: 01f9381e2eec2d7f +Block 0011 [ 51]: 0a4f62720056d84b +Block 0011 [ 52]: f1b5d3943f6a6a36 +Block 0011 [ 53]: cd1cd5c0e4eb1968 +Block 0011 [ 54]: 64edcc8e3d9f041e +Block 0011 [ 55]: 1461c578c39411e7 +Block 0011 [ 56]: 980fa6747c3617ed +Block 0011 [ 57]: 912b11adeeaf3f89 +Block 0011 [ 58]: 44bedf9a5a0b49a9 +Block 0011 [ 59]: 73e8f9a17326ceb4 +Block 0011 [ 60]: 3da6232cd6f4e3d1 +Block 0011 [ 61]: f6bd9062c0a9a0f7 +Block 0011 [ 62]: 742b4fcb7a91ab94 +Block 0011 [ 63]: ad9a328d007c5f99 +Block 0011 [ 64]: 84a388ca8674bc11 +Block 0011 [ 65]: e3f44e84b345d055 +Block 0011 [ 66]: 844c544bb0b9eb92 +Block 0011 [ 67]: e8dfc0e52a0761ae +Block 0011 [ 68]: 26731ccc5a836fd2 +Block 0011 [ 69]: 1e0b377e3315a662 +Block 0011 [ 70]: 391388067845b573 +Block 0011 [ 71]: 3dbc149f246cc13c +Block 0011 [ 72]: a25e2f5cd2ed7edb +Block 0011 [ 73]: df0b0b57a05a4d4e +Block 0011 [ 74]: 27132d8a640ba7b5 +Block 0011 [ 75]: e69181cea76e2cae +Block 0011 [ 76]: 4daaa663f4404681 +Block 0011 [ 77]: 49a8afc952ddcbd2 +Block 0011 [ 78]: 693c5c586cea9fce +Block 0011 [ 79]: f3dc02748c485cb7 +Block 0011 [ 80]: ffe3bc71b550dcd1 +Block 0011 [ 81]: c8f9d3cebc8de1e8 +Block 0011 [ 82]: ad1c3edf36a89697 +Block 0011 [ 83]: 5e89cc9aae4230a6 +Block 0011 [ 84]: eac0ae1626e15120 +Block 0011 [ 85]: 1690d63d60da6ecf +Block 0011 [ 86]: cd6a8d2091ad354b +Block 0011 [ 87]: 89d80dacaca9a6c5 +Block 0011 [ 88]: 218a6801d99baec8 +Block 0011 [ 89]: 9bba7e969afd1280 +Block 0011 [ 90]: 95554c042732942d +Block 0011 [ 91]: f1280331f91dcf91 +Block 0011 [ 92]: 15a800cf6915edcb +Block 0011 [ 93]: f9d41a977057e236 +Block 0011 [ 94]: 92988fb9b5045e1a +Block 0011 [ 95]: 2e76d5e4179de340 +Block 0011 [ 96]: 245aff980f5489f2 +Block 0011 [ 97]: 93a5ca99c887937f +Block 0011 [ 98]: 5abda23787990c23 +Block 0011 [ 99]: 2e30f40479f01957 +Block 0011 [100]: 5d9f127f80dcccb2 +Block 0011 [101]: 732679dbaed99681 +Block 0011 [102]: 41a91b8ffb33f013 +Block 0011 [103]: ca61b392f2d825ad +Block 0011 [104]: 2c2c33ec377b6095 +Block 0011 [105]: a1a188e86aa1e8a4 +Block 0011 [106]: 332b4a653b70442c +Block 0011 [107]: b93cb4970048caf3 +Block 0011 [108]: 2aa4e90db458be01 +Block 0011 [109]: 22f51f6dba083e78 +Block 0011 [110]: 0f65a4027cce4035 +Block 0011 [111]: e462aa5a3a7758af +Block 0011 [112]: b4b0c947df9f5840 +Block 0011 [113]: 1fcaa15e4ad8a448 +Block 0011 [114]: 6427ad1753ef4834 +Block 0011 [115]: 8880f19df4f32d7e +Block 0011 [116]: fe7b7c61fb009823 +Block 0011 [117]: be45b0a066d3b99d +Block 0011 [118]: 13edbd36864553ea +Block 0011 [119]: 56bd3ff3f46a4ad3 +Block 0011 [120]: a94c52ae99da87f2 +Block 0011 [121]: 9e56cea44848fdd4 +Block 0011 [122]: c9a9fa5471582833 +Block 0011 [123]: 5d6e10df4b4a15eb +Block 0011 [124]: 0a33444ac38b9f7d +Block 0011 [125]: 1f19a38690e0c6d0 +Block 0011 [126]: b5604cbe201ba644 +Block 0011 [127]: 044e9c26b9b8b616 +Block 0012 [ 0]: 1521a6fe2a3cbece +Block 0012 [ 1]: a7d81f737de3454e +Block 0012 [ 2]: 1fe9b28e4f948672 +Block 0012 [ 3]: 2a5fa3d7342b35bf +Block 0012 [ 4]: b115d311ab4cd25a +Block 0012 [ 5]: 2d38601cecc89013 +Block 0012 [ 6]: ff433fe8560a7164 +Block 0012 [ 7]: bf7185448ec49c76 +Block 0012 [ 8]: b6ff855b1bd63b0d +Block 0012 [ 9]: b4259325faad52c0 +Block 0012 [ 10]: 1001b5b3752d9b8b +Block 0012 [ 11]: a035e989d9fa78bd +Block 0012 [ 12]: da47171b2d168957 +Block 0012 [ 13]: 283081670260f019 +Block 0012 [ 14]: e0e05c5685c4d96a +Block 0012 [ 15]: 103e296afff49848 +Block 0012 [ 16]: 57dc23c3022b4da2 +Block 0012 [ 17]: 7d7cd99264c05881 +Block 0012 [ 18]: 16c82e8ffb88b24a +Block 0012 [ 19]: 02199a086680f0f7 +Block 0012 [ 20]: 2edd2f82ad7873ef +Block 0012 [ 21]: 14a147da23d0ae31 +Block 0012 [ 22]: 94e3899e23500ffe +Block 0012 [ 23]: 7960ac7264b703fb +Block 0012 [ 24]: c477d8358c227328 +Block 0012 [ 25]: 92d4856648af1644 +Block 0012 [ 26]: eb4d563cb3c888dd +Block 0012 [ 27]: 21828c52d31318ff +Block 0012 [ 28]: 6f0b647c003e5e61 +Block 0012 [ 29]: 93df61e1c563b8d9 +Block 0012 [ 30]: 3e3a6e9a1d36221b +Block 0012 [ 31]: d3bc1703065b4948 +Block 0012 [ 32]: 26e095f3098e2046 +Block 0012 [ 33]: 40ce4bb1796cc0ad +Block 0012 [ 34]: 399bf9686c5f4172 +Block 0012 [ 35]: efab37a5b75401dd +Block 0012 [ 36]: 41f176e4dace1866 +Block 0012 [ 37]: 30398f14205df259 +Block 0012 [ 38]: ea28ab83bcc97663 +Block 0012 [ 39]: 46419c78901bfae2 +Block 0012 [ 40]: 7bb5dc11f1fdf71e +Block 0012 [ 41]: e7a8d22a68619e2f +Block 0012 [ 42]: 3b8598c5e66799c0 +Block 0012 [ 43]: 35ef25baa6522dc4 +Block 0012 [ 44]: 0a8cd7304fbad8fd +Block 0012 [ 45]: b6b77e8381e2b1e3 +Block 0012 [ 46]: 94e8a9260e0318eb +Block 0012 [ 47]: 187fc38067c321bd +Block 0012 [ 48]: 792444f2f5192e33 +Block 0012 [ 49]: 1ae621d7081363c4 +Block 0012 [ 50]: adf8a1e712b76bec +Block 0012 [ 51]: a6c358e41cd69e3a +Block 0012 [ 52]: f9a268fb81ff1a3e +Block 0012 [ 53]: 19e6ad4f49dbe780 +Block 0012 [ 54]: 2870c4d3d70e8415 +Block 0012 [ 55]: d3766936b9513f74 +Block 0012 [ 56]: dceffb34b052d439 +Block 0012 [ 57]: eb3174432a9d0be7 +Block 0012 [ 58]: ccfa40d103153fe6 +Block 0012 [ 59]: 534ebb23424bcb89 +Block 0012 [ 60]: 244091afd20eb5b6 +Block 0012 [ 61]: 9a423392b7f3ed66 +Block 0012 [ 62]: 27738dffe52b48e0 +Block 0012 [ 63]: 44738bbe4dbaaea2 +Block 0012 [ 64]: 126229c01cc19fc6 +Block 0012 [ 65]: b7279c2c19910800 +Block 0012 [ 66]: 14726366b2401939 +Block 0012 [ 67]: 31970a53eb02e7f0 +Block 0012 [ 68]: 78fffed7e5970889 +Block 0012 [ 69]: 6983240bd4fd24bd +Block 0012 [ 70]: 8e6224c568706241 +Block 0012 [ 71]: 7cb66edcc2ba1663 +Block 0012 [ 72]: c2107dc218f05722 +Block 0012 [ 73]: 80afaf9eb0637341 +Block 0012 [ 74]: 409e5654971093e2 +Block 0012 [ 75]: 6f8b0f36a1ed94f9 +Block 0012 [ 76]: 27f581045be8a309 +Block 0012 [ 77]: 67710b4de2a9d74c +Block 0012 [ 78]: ee34520edc8e6c17 +Block 0012 [ 79]: 59d4c363e50fa509 +Block 0012 [ 80]: 8dcc5ab12801cdcb +Block 0012 [ 81]: d8ce48c767ff9f63 +Block 0012 [ 82]: 0ece3e843169e6dd +Block 0012 [ 83]: ca4ac3965825308d +Block 0012 [ 84]: a241fef0307cd5e5 +Block 0012 [ 85]: 35b7fbe5e89252a9 +Block 0012 [ 86]: d1b1a3c397c5a3f7 +Block 0012 [ 87]: c128e35949dc65ee +Block 0012 [ 88]: 3d3527f69e1b4629 +Block 0012 [ 89]: 8f9ea6f3b86a8849 +Block 0012 [ 90]: e91d3a831d1ac20a +Block 0012 [ 91]: 190b39a143752fed +Block 0012 [ 92]: c2a9162e88a085f1 +Block 0012 [ 93]: 83bda5257560eef9 +Block 0012 [ 94]: f424f969d8c05562 +Block 0012 [ 95]: cc28cd4499193be4 +Block 0012 [ 96]: 1bf847eedd7cee4e +Block 0012 [ 97]: d9f5044a5b463833 +Block 0012 [ 98]: 84ac651e312f0432 +Block 0012 [ 99]: 68f5261410bfa67d +Block 0012 [100]: 1a7754c5d4962c35 +Block 0012 [101]: 9bb7c786d4b17660 +Block 0012 [102]: 80b10d80bbc35af6 +Block 0012 [103]: dbc449b22af06364 +Block 0012 [104]: a208fe1fdc561708 +Block 0012 [105]: 58d743f0df17acd1 +Block 0012 [106]: 2ad9b89d389b2577 +Block 0012 [107]: fb0c666799206c63 +Block 0012 [108]: de656171ca8e75c8 +Block 0012 [109]: 0ffb8f41cc0596c7 +Block 0012 [110]: 238eaa9b108e8d10 +Block 0012 [111]: 39973bb952ddbcc0 +Block 0012 [112]: d7f4fbabdc63e190 +Block 0012 [113]: b3d832966453066b +Block 0012 [114]: 339a0be96c03ef8a +Block 0012 [115]: e79366e9be1d4fe2 +Block 0012 [116]: 9b4e4d6f05538c35 +Block 0012 [117]: cef433fc39a11471 +Block 0012 [118]: 595dd5d830434c4f +Block 0012 [119]: b7454a6e8b03848a +Block 0012 [120]: d63ea04a761806c0 +Block 0012 [121]: 173d2a2a5fc3178c +Block 0012 [122]: eaec6276b5a137a7 +Block 0012 [123]: 095b05a6303723b8 +Block 0012 [124]: 94c49de0d9c605e5 +Block 0012 [125]: 2873ee8bf2d4e699 +Block 0012 [126]: 1cde14681dd09f70 +Block 0012 [127]: 68a708e89034c7b3 +Block 0013 [ 0]: 8d167cc15d9b4e8a +Block 0013 [ 1]: 861a89ec67dd708a +Block 0013 [ 2]: b536a27e36288413 +Block 0013 [ 3]: 7b0ada901678953d +Block 0013 [ 4]: 07d12c9abc737f67 +Block 0013 [ 5]: c89adf2ede21b1ad +Block 0013 [ 6]: 594950d5b9d5346b +Block 0013 [ 7]: 2ed48f395600081f +Block 0013 [ 8]: 4f24214c834fe8b7 +Block 0013 [ 9]: 54aa160c0cd977bf +Block 0013 [ 10]: 07370ae67985e0df +Block 0013 [ 11]: a7771205e6facde8 +Block 0013 [ 12]: 7a439605aae13efd +Block 0013 [ 13]: 74c0a731668944a9 +Block 0013 [ 14]: f45cc05ff3acc878 +Block 0013 [ 15]: d238ddd1f8d956d1 +Block 0013 [ 16]: 9d9465e667febb00 +Block 0013 [ 17]: e326ebeea2c77cb1 +Block 0013 [ 18]: 8e00c650856da819 +Block 0013 [ 19]: 584380ef75efc1f1 +Block 0013 [ 20]: 81e10bb7e2a69853 +Block 0013 [ 21]: 41ecfa387c696224 +Block 0013 [ 22]: 68372408a7693477 +Block 0013 [ 23]: 62737f80e951a66e +Block 0013 [ 24]: 44a11e5e2535ea2e +Block 0013 [ 25]: 937b04e3a723122e +Block 0013 [ 26]: 85bcf09f61703332 +Block 0013 [ 27]: b27523bbcc80a5ae +Block 0013 [ 28]: bccde6994ef38d25 +Block 0013 [ 29]: 6e105429a2a107e3 +Block 0013 [ 30]: d84e9c1b2d47135e +Block 0013 [ 31]: 528cfb9a9ff1f423 +Block 0013 [ 32]: c931f1187fefc477 +Block 0013 [ 33]: 11322efa705a8857 +Block 0013 [ 34]: 2ff596d5ff43a189 +Block 0013 [ 35]: 951b4868c0d65755 +Block 0013 [ 36]: 6fa72219d7003b25 +Block 0013 [ 37]: eaaad06e85076fec +Block 0013 [ 38]: 7608dad58553f3a2 +Block 0013 [ 39]: 200e76b7f948c812 +Block 0013 [ 40]: 3d15f2c7d3fce6a2 +Block 0013 [ 41]: d184805422d69913 +Block 0013 [ 42]: 44d6c50290ef4592 +Block 0013 [ 43]: bc31bf15ea1dc2f8 +Block 0013 [ 44]: 29f08b8fca962939 +Block 0013 [ 45]: c62430d5104c6482 +Block 0013 [ 46]: 3c57292c4ce39649 +Block 0013 [ 47]: ffc10dcad32cc41b +Block 0013 [ 48]: dd41f5f46122a206 +Block 0013 [ 49]: 7abc60696111bfbe +Block 0013 [ 50]: aa9886bc1a563464 +Block 0013 [ 51]: 9c057de649695c35 +Block 0013 [ 52]: f712052195155a09 +Block 0013 [ 53]: 91980809bdb97825 +Block 0013 [ 54]: 07bcdeab983ab6ca +Block 0013 [ 55]: 277119a97dbb4a80 +Block 0013 [ 56]: 8ca65b723aeafec2 +Block 0013 [ 57]: ff49c19c4b00e57d +Block 0013 [ 58]: 7f7bc5d343003b9e +Block 0013 [ 59]: 62348f62c00612c6 +Block 0013 [ 60]: 2d762b01998ac125 +Block 0013 [ 61]: 0c240959e10da0cc +Block 0013 [ 62]: 9aba78f773642caf +Block 0013 [ 63]: 129a78baa32e409c +Block 0013 [ 64]: 1d1b48d6c8ba21f5 +Block 0013 [ 65]: f8b15521108a73a2 +Block 0013 [ 66]: 60be83175fcd4908 +Block 0013 [ 67]: bc3ce648b5c35454 +Block 0013 [ 68]: 215dc943e9f120ab +Block 0013 [ 69]: 5f2868bb13088cf5 +Block 0013 [ 70]: 3a73e7d41c02c847 +Block 0013 [ 71]: bcbb0d37b7c38980 +Block 0013 [ 72]: 5b5a5f184f699a50 +Block 0013 [ 73]: 5adc34c4275ed7c9 +Block 0013 [ 74]: a871c5cdd8a1ab2c +Block 0013 [ 75]: 88561e9f2c362be0 +Block 0013 [ 76]: 10244ff1b8d1d56a +Block 0013 [ 77]: a49c34c978e7d103 +Block 0013 [ 78]: 46e8015d871645c2 +Block 0013 [ 79]: f9a15b708c4a5405 +Block 0013 [ 80]: ceaf74f1fd233a55 +Block 0013 [ 81]: f43065e6cd47d568 +Block 0013 [ 82]: afa4bf36adb7eaf9 +Block 0013 [ 83]: 578a68b9edfd4dfd +Block 0013 [ 84]: 7386e803ae1db4e9 +Block 0013 [ 85]: 894c8dfb4cd9e99e +Block 0013 [ 86]: 577d2667cb82bbec +Block 0013 [ 87]: 2c4e1db5a2d177b5 +Block 0013 [ 88]: 0e88639a76844ba1 +Block 0013 [ 89]: 7805203eeff9051d +Block 0013 [ 90]: c5413f00f0b91101 +Block 0013 [ 91]: 5e46c72bbabf4d30 +Block 0013 [ 92]: 166521536d596e63 +Block 0013 [ 93]: ae4ebc3a25bc2ee3 +Block 0013 [ 94]: b6a6ad1a93c69390 +Block 0013 [ 95]: 50e799ffe04d392c +Block 0013 [ 96]: 3799e5290de54a4d +Block 0013 [ 97]: a8a1350877af05cc +Block 0013 [ 98]: 082a6bbe71cbd228 +Block 0013 [ 99]: a23f327a5924959d +Block 0013 [100]: 63305cc5f84f7ad7 +Block 0013 [101]: 60e488a0a896838e +Block 0013 [102]: c9230c3dd009e753 +Block 0013 [103]: 8f5d22bc1cf3bd22 +Block 0013 [104]: 8a3d52eb933b24c2 +Block 0013 [105]: 2ad1125ab1c2d795 +Block 0013 [106]: 922d4810438a44d5 +Block 0013 [107]: c40e43485037b3ad +Block 0013 [108]: 4e1faefdcfd8b6af +Block 0013 [109]: 94cce4010a943fa6 +Block 0013 [110]: 8d1cba48ce5b96bc +Block 0013 [111]: 15d6d33ad7328fd1 +Block 0013 [112]: d9d43c592bb4ea95 +Block 0013 [113]: 318cdfb666ab0cc8 +Block 0013 [114]: 29a76f09f474b27f +Block 0013 [115]: 20c2f46af8f3ab77 +Block 0013 [116]: 11e70eb455d06061 +Block 0013 [117]: b8228af2094f3ef0 +Block 0013 [118]: 6a5668e37110e003 +Block 0013 [119]: 7439532142a76261 +Block 0013 [120]: fde1e2387a515dae +Block 0013 [121]: f4a706d8c81fd2b7 +Block 0013 [122]: 31aaeab172a5b26a +Block 0013 [123]: def4e2002ba919df +Block 0013 [124]: 733a09a01284bb71 +Block 0013 [125]: 185e24ee64af2b43 +Block 0013 [126]: 9bb76ee7896dfdd8 +Block 0013 [127]: 10931278d80e9141 +Block 0014 [ 0]: 74ff9d5c77dec9d4 +Block 0014 [ 1]: 5c43cf4044006ba8 +Block 0014 [ 2]: 0f82682a392e457f +Block 0014 [ 3]: 68a068cdb5d93548 +Block 0014 [ 4]: 2c346f466ae5e7d1 +Block 0014 [ 5]: c6cfc46081912068 +Block 0014 [ 6]: 5e1937c9d4be2fde +Block 0014 [ 7]: 06202be4e8e07d2d +Block 0014 [ 8]: b519876ca35a277c +Block 0014 [ 9]: e90a83fe7aa91f68 +Block 0014 [ 10]: 5a40cbcba1fd98b2 +Block 0014 [ 11]: af80019f52b0fa1f +Block 0014 [ 12]: 884eb3548131a3ce +Block 0014 [ 13]: 7ad391d105237118 +Block 0014 [ 14]: 39e6610113fcfad0 +Block 0014 [ 15]: 07de5d06c76eb406 +Block 0014 [ 16]: 8688b7645a136c23 +Block 0014 [ 17]: 6dcc57f776a9d635 +Block 0014 [ 18]: cb181be1ae3bd3c9 +Block 0014 [ 19]: 6dd5f461a2bb5689 +Block 0014 [ 20]: c72926f7695b359d +Block 0014 [ 21]: 44de6b300a058825 +Block 0014 [ 22]: 974882d513ef95f3 +Block 0014 [ 23]: d15ab03ef6cda7b6 +Block 0014 [ 24]: f229a5561dfced9d +Block 0014 [ 25]: 315dfd5d23f77ab0 +Block 0014 [ 26]: 0f4c630cf7a1eca6 +Block 0014 [ 27]: 9ac5d4b7330b0dc3 +Block 0014 [ 28]: 4f8f5b7351624574 +Block 0014 [ 29]: de862b07a2cc18ba +Block 0014 [ 30]: 14591145d7f607ad +Block 0014 [ 31]: 87fd81764a47690f +Block 0014 [ 32]: 5e10a6935358171d +Block 0014 [ 33]: d9c8e6cd97276274 +Block 0014 [ 34]: 82d006a140133f2b +Block 0014 [ 35]: 340644ad9e6e7b28 +Block 0014 [ 36]: 2263be163aa68eee +Block 0014 [ 37]: e09c4a3f4e5d5bdd +Block 0014 [ 38]: c3345b0ce22aa154 +Block 0014 [ 39]: c8b4ab7e3c472850 +Block 0014 [ 40]: 30ce87661e7b26d4 +Block 0014 [ 41]: 654a95b6605e75d7 +Block 0014 [ 42]: 65e72a3539dd0d69 +Block 0014 [ 43]: 7c5ec1d1e68f4ab8 +Block 0014 [ 44]: c9251e2fd5ced854 +Block 0014 [ 45]: 52a85c5f5eb40c8e +Block 0014 [ 46]: 93bb9274d2da8a35 +Block 0014 [ 47]: 649d8c4a78fc904c +Block 0014 [ 48]: 8d79747667f51c89 +Block 0014 [ 49]: 23c7788205023d76 +Block 0014 [ 50]: 10224bc903e4a2b2 +Block 0014 [ 51]: af5793eca095fb61 +Block 0014 [ 52]: bb659fa94d39b1fa +Block 0014 [ 53]: 94520e9b6eefb936 +Block 0014 [ 54]: b035b95b939dcf3a +Block 0014 [ 55]: bfdeaa96331cce54 +Block 0014 [ 56]: 659dae83a17a437e +Block 0014 [ 57]: 598cbd962aebb606 +Block 0014 [ 58]: 8e43f705504059a1 +Block 0014 [ 59]: 811d0b66f4bf5789 +Block 0014 [ 60]: 3ea3eb13fd65c42d +Block 0014 [ 61]: f3289de2785a60c4 +Block 0014 [ 62]: b296d786e3f06f5d +Block 0014 [ 63]: cfe3c32da650f0d5 +Block 0014 [ 64]: dd0ed6f96a0c0322 +Block 0014 [ 65]: 70cceb6f30048949 +Block 0014 [ 66]: fa8cfe4efbc75cbf +Block 0014 [ 67]: cb7c5b09addd875a +Block 0014 [ 68]: 6483aca29f985f7e +Block 0014 [ 69]: 80b161cba70da102 +Block 0014 [ 70]: 52d76763bfb5065f +Block 0014 [ 71]: 4713c4241809bd0f +Block 0014 [ 72]: 176223d6501bb138 +Block 0014 [ 73]: a0d90adc0a733942 +Block 0014 [ 74]: c444f1cbfe698930 +Block 0014 [ 75]: c362e053f5370d7b +Block 0014 [ 76]: 04795823c3e290f3 +Block 0014 [ 77]: 21fa15483eb82289 +Block 0014 [ 78]: bdee31d1be32c895 +Block 0014 [ 79]: aa20de91077e0361 +Block 0014 [ 80]: 1292f113842e3b2d +Block 0014 [ 81]: 3da9e8e8f35b6370 +Block 0014 [ 82]: 1587c4af6af71ce8 +Block 0014 [ 83]: 027ed030408cc841 +Block 0014 [ 84]: d45f3eb0f7b7f052 +Block 0014 [ 85]: 083e586b7012eb4c +Block 0014 [ 86]: 81759483e9052d0f +Block 0014 [ 87]: 23e2772882e5546c +Block 0014 [ 88]: 1d74a83735a0db58 +Block 0014 [ 89]: 5d935ea8473c6398 +Block 0014 [ 90]: 0b0fd563c775880f +Block 0014 [ 91]: 1218a8d3ba6ae9a4 +Block 0014 [ 92]: d5c911bd9a8640cc +Block 0014 [ 93]: 376494e621d203cd +Block 0014 [ 94]: 8c2c4494b9df3951 +Block 0014 [ 95]: 130978d97331600b +Block 0014 [ 96]: 765194ab231b7bed +Block 0014 [ 97]: b53f722b638245e1 +Block 0014 [ 98]: c6856ff721c9c1ed +Block 0014 [ 99]: 523f867258c71f59 +Block 0014 [100]: d642325da3bd09cb +Block 0014 [101]: 8b366095a9e51ed0 +Block 0014 [102]: 6ece98e19c16ee25 +Block 0014 [103]: 957e4fbfc5b2a2d8 +Block 0014 [104]: a41385404b565c53 +Block 0014 [105]: 26fc269b14a47524 +Block 0014 [106]: 3a4683b556b2f6bd +Block 0014 [107]: 6ccea20da5f82531 +Block 0014 [108]: c3ffc17acf0393c6 +Block 0014 [109]: bf08ac75b90d98e0 +Block 0014 [110]: 5a122193aed55940 +Block 0014 [111]: 084d049330ecadec +Block 0014 [112]: 1706e0a7dcccabb7 +Block 0014 [113]: 000991105c6c8f3d +Block 0014 [114]: c1c69b4ac877565c +Block 0014 [115]: 595a2b07288ab253 +Block 0014 [116]: a8aa03a94753404c +Block 0014 [117]: f809a07b03509229 +Block 0014 [118]: cbc91fdf8b43211e +Block 0014 [119]: 98e2b8994604e2ec +Block 0014 [120]: c4b3d55bc831b4cd +Block 0014 [121]: 3e9c014657b846ae +Block 0014 [122]: e7274ed01235e01e +Block 0014 [123]: c841b3db0f707035 +Block 0014 [124]: fb05ca324bc6dcd2 +Block 0014 [125]: 43188f4c2a383a69 +Block 0014 [126]: 745be1744b87f4d0 +Block 0014 [127]: be5103b3da91537f +Block 0015 [ 0]: 0b1e73a777ee2ef4 +Block 0015 [ 1]: e27b761a060bee9d +Block 0015 [ 2]: d537468cff417c96 +Block 0015 [ 3]: 43ff10be2ed97ac1 +Block 0015 [ 4]: f17596d1bb685e01 +Block 0015 [ 5]: 577cb81c02ade2a1 +Block 0015 [ 6]: 8932ec48abcdd2c2 +Block 0015 [ 7]: cfd3b31d0422a34f +Block 0015 [ 8]: 6bd786099bc0232e +Block 0015 [ 9]: 637418cbc60b7be7 +Block 0015 [ 10]: d4f327b243b4a6b7 +Block 0015 [ 11]: f6d161e009a4fa7e +Block 0015 [ 12]: 00ed2aeb4d221e4b +Block 0015 [ 13]: 677611509c496f06 +Block 0015 [ 14]: a0ce344aeaa2755b +Block 0015 [ 15]: d5afc0b55da2dc8c +Block 0015 [ 16]: cacf20ccd42a49c6 +Block 0015 [ 17]: 44dcbf6eb1d6fa74 +Block 0015 [ 18]: acf25a1ccd4e91d1 +Block 0015 [ 19]: acb38fadd1728e39 +Block 0015 [ 20]: c8a3a11dfb0dd493 +Block 0015 [ 21]: a68cbe6742cd613c +Block 0015 [ 22]: 477497ecfaf2de1a +Block 0015 [ 23]: 836f2083f0746bd9 +Block 0015 [ 24]: 03ebbf00cbfa617e +Block 0015 [ 25]: 6d9e84e99c076053 +Block 0015 [ 26]: 4296c823a4da4a26 +Block 0015 [ 27]: e2dcd3f04aa2616a +Block 0015 [ 28]: 01dc0b71c8fb76be +Block 0015 [ 29]: 60ca19bf120a2f95 +Block 0015 [ 30]: bfeb35484f61d378 +Block 0015 [ 31]: 6bf92228db9a33e8 +Block 0015 [ 32]: 396144e9a551c26a +Block 0015 [ 33]: 2765913f3336e0b2 +Block 0015 [ 34]: 85b9cefe4821e0a2 +Block 0015 [ 35]: 35687f89b0820450 +Block 0015 [ 36]: c5ecb87365bdfcb2 +Block 0015 [ 37]: 6666f725b2ea9dd8 +Block 0015 [ 38]: a2cb973d7c42b0a5 +Block 0015 [ 39]: ebb5253e5c84a52e +Block 0015 [ 40]: 71eff3a4c6e669e6 +Block 0015 [ 41]: 6813a4ef356a43f7 +Block 0015 [ 42]: 7676968dbdd07d6e +Block 0015 [ 43]: d1e5e68bd9d4893f +Block 0015 [ 44]: faf8c89f950a8265 +Block 0015 [ 45]: b97a51d9f801af68 +Block 0015 [ 46]: 9033cfbabc39abe6 +Block 0015 [ 47]: 2b42295a82afd95c +Block 0015 [ 48]: 8756894b48b6a194 +Block 0015 [ 49]: 0b246f0a868a7be3 +Block 0015 [ 50]: 23198a6685fdeac2 +Block 0015 [ 51]: 45a73cc01fdfacdd +Block 0015 [ 52]: 0d7a0e2ebc480c33 +Block 0015 [ 53]: cf4b325e8bab511e +Block 0015 [ 54]: 3eff637988cf0774 +Block 0015 [ 55]: c76b19610482d56c +Block 0015 [ 56]: 8e73b0efde325f6e +Block 0015 [ 57]: 30baa18d52a190f9 +Block 0015 [ 58]: 04bc7cbec3e1296d +Block 0015 [ 59]: 27f1935bf5070068 +Block 0015 [ 60]: d6b815634d4ae1e3 +Block 0015 [ 61]: 83894d0b328a58d6 +Block 0015 [ 62]: a3de5c70b944f94a +Block 0015 [ 63]: 094ee1ace2b659ec +Block 0015 [ 64]: c10fc00408bf8c9c +Block 0015 [ 65]: 9d8ffe4ba77a69d1 +Block 0015 [ 66]: 32a011b4bc285e9e +Block 0015 [ 67]: 8a79607034c38a6b +Block 0015 [ 68]: bd5608f27c6b7742 +Block 0015 [ 69]: 40ea6a827e3722f2 +Block 0015 [ 70]: f5e3a539cd3d7503 +Block 0015 [ 71]: f5b21cff542fd4ce +Block 0015 [ 72]: fe85cad6c8b8ea59 +Block 0015 [ 73]: f2cd28dcea30e15b +Block 0015 [ 74]: f2316ae6f6cef0cf +Block 0015 [ 75]: 4d87f7d71c8dc4d6 +Block 0015 [ 76]: 7dd9488c06f66047 +Block 0015 [ 77]: 16dedd6ee0192839 +Block 0015 [ 78]: 9914849e597348d4 +Block 0015 [ 79]: d43eb9ac42da1e48 +Block 0015 [ 80]: c39efef1ab2785f9 +Block 0015 [ 81]: ad73868ea70052e5 +Block 0015 [ 82]: f3d8083fd9d07e1a +Block 0015 [ 83]: f87a8d342547820b +Block 0015 [ 84]: cb403cea0a57424a +Block 0015 [ 85]: 060dcd9833e6ec1c +Block 0015 [ 86]: b3d75fd35640b405 +Block 0015 [ 87]: 135c300438f94989 +Block 0015 [ 88]: 48d1266ae1d00a17 +Block 0015 [ 89]: c06da4eb674abfbd +Block 0015 [ 90]: ce4421fd18d801e4 +Block 0015 [ 91]: c7a9b0668bdf8c15 +Block 0015 [ 92]: f46bd3cae3612fc0 +Block 0015 [ 93]: a3cbe2c4df6f9392 +Block 0015 [ 94]: 515c3b7d9af607a7 +Block 0015 [ 95]: b01dd0fa390288bb +Block 0015 [ 96]: 9393af62fec2df24 +Block 0015 [ 97]: 422015611463c8ce +Block 0015 [ 98]: af3a8db165bcce2b +Block 0015 [ 99]: 81d31594a3ba8043 +Block 0015 [100]: 3858b6ff51b69612 +Block 0015 [101]: 4647cbf86795a5e0 +Block 0015 [102]: 61c0214fd46752b3 +Block 0015 [103]: dfe53ac91b2bc371 +Block 0015 [104]: 4f82c67ab717dbdd +Block 0015 [105]: c9e3bbe1facd12f3 +Block 0015 [106]: cd2ad18317a7cfd1 +Block 0015 [107]: 6e259d50f4c9e146 +Block 0015 [108]: 74c1f8e97c3c3414 +Block 0015 [109]: 7f61b05064b73433 +Block 0015 [110]: 896499834b24fa2c +Block 0015 [111]: fc607cee2c0c4911 +Block 0015 [112]: dd9e1d6f7c0dca82 +Block 0015 [113]: cfd61ea3a923cb9f +Block 0015 [114]: 27bdfb046533bbf7 +Block 0015 [115]: 68b8b91fc9d5e2bc +Block 0015 [116]: c41f9c3252585ef7 +Block 0015 [117]: 121fc0b83aca80d3 +Block 0015 [118]: 28c99e1fe846c40e +Block 0015 [119]: f5cb391772578157 +Block 0015 [120]: fc057e59876dadc8 +Block 0015 [121]: df615ef69f9d5003 +Block 0015 [122]: c318561811c5b2f8 +Block 0015 [123]: eaf943ad5437bf9c +Block 0015 [124]: 602cfc1d54fb6b87 +Block 0015 [125]: e83566f7d16e8b6e +Block 0015 [126]: c608bee43eda7ccc +Block 0015 [127]: 811a4bfb6e79bb5f +Block 0016 [ 0]: 5aa613f43289c678 +Block 0016 [ 1]: eb1cf650e24f64e4 +Block 0016 [ 2]: d7de8f818eea22a3 +Block 0016 [ 3]: 929f209f685d0a56 +Block 0016 [ 4]: 1d1190318e29cc38 +Block 0016 [ 5]: 643340be7d550134 +Block 0016 [ 6]: d60a19f28325f117 +Block 0016 [ 7]: c28ddf5ac5d01fbc +Block 0016 [ 8]: 4eaa66adb9c0f9f9 +Block 0016 [ 9]: c368ae8857416af0 +Block 0016 [ 10]: 26334597db375712 +Block 0016 [ 11]: 988de515dbe320d5 +Block 0016 [ 12]: 0cd7dd0ccbdb2e97 +Block 0016 [ 13]: 43cac731180562be +Block 0016 [ 14]: eebae2e8c065ccd1 +Block 0016 [ 15]: c4c5b81c55bac77c +Block 0016 [ 16]: 21a360ff74a67369 +Block 0016 [ 17]: c7c681a57877b6fa +Block 0016 [ 18]: 05e6a04af6e587c3 +Block 0016 [ 19]: b8d073cb845684bd +Block 0016 [ 20]: 49f10e47eb5ff574 +Block 0016 [ 21]: 5b4fa94638350588 +Block 0016 [ 22]: 2730010cdfcf27a3 +Block 0016 [ 23]: 7ecae19dffd91500 +Block 0016 [ 24]: 41131fc8f0614eac +Block 0016 [ 25]: 372476265e12ad62 +Block 0016 [ 26]: e3f6d0ffd33e4270 +Block 0016 [ 27]: 2a9748775d87bf7a +Block 0016 [ 28]: d9cb255da617b822 +Block 0016 [ 29]: 59aaeb79c983f697 +Block 0016 [ 30]: 4177b94dacf2d10f +Block 0016 [ 31]: 333b04a58feb4e3d +Block 0016 [ 32]: 14c8ca8825310e99 +Block 0016 [ 33]: c3a4ce660e9c5798 +Block 0016 [ 34]: 001881b7d15216ef +Block 0016 [ 35]: d6de939535180d21 +Block 0016 [ 36]: d265e410d5f506dd +Block 0016 [ 37]: d7e8f17f836ca622 +Block 0016 [ 38]: da4fe4e81cc609cd +Block 0016 [ 39]: 8c95ff4268b77b20 +Block 0016 [ 40]: b564b4648cd5acff +Block 0016 [ 41]: 47809e79e0e48077 +Block 0016 [ 42]: 9d1490dd04b1cc81 +Block 0016 [ 43]: 8efffc9fae826537 +Block 0016 [ 44]: 34aa25d1eb75e78f +Block 0016 [ 45]: 5777189b9ed6025d +Block 0016 [ 46]: 90fd722d4411962f +Block 0016 [ 47]: bc2372752ce8cf84 +Block 0016 [ 48]: 1381285845dd8d69 +Block 0016 [ 49]: 7ce920c4389441d2 +Block 0016 [ 50]: a93d565658f24c2e +Block 0016 [ 51]: 008ccb8a47b9442e +Block 0016 [ 52]: 10f37f8f6e6bc101 +Block 0016 [ 53]: bb972856b12de631 +Block 0016 [ 54]: 4209e28b0e6baf1f +Block 0016 [ 55]: 055ed32244ea5546 +Block 0016 [ 56]: 8c4ff16eb6e336f4 +Block 0016 [ 57]: e6c6bbbe43af4439 +Block 0016 [ 58]: ba0241f2ff155ac7 +Block 0016 [ 59]: c7610b8ede3442e8 +Block 0016 [ 60]: 65ecf5ecc7d7b66d +Block 0016 [ 61]: 1acb0b6fdf2ccc61 +Block 0016 [ 62]: 7bcd0d4f4abad1b5 +Block 0016 [ 63]: 628f518a0e821ecd +Block 0016 [ 64]: e68760a4e903c2b6 +Block 0016 [ 65]: 6afa82a957226547 +Block 0016 [ 66]: dde32db99e588dfd +Block 0016 [ 67]: 7a8fefe578b65cdf +Block 0016 [ 68]: 9b389330d717ed64 +Block 0016 [ 69]: 43bdf11a17170565 +Block 0016 [ 70]: 8202c7f51d57555a +Block 0016 [ 71]: 6774f52f4386d0f9 +Block 0016 [ 72]: 061c87e870cce6cd +Block 0016 [ 73]: 4fb3cbc0e190081c +Block 0016 [ 74]: aea43a9c584b3bd1 +Block 0016 [ 75]: 7814f7a36dbecc04 +Block 0016 [ 76]: 36942f8d18a60829 +Block 0016 [ 77]: 3af6fd6eb129deaf +Block 0016 [ 78]: f6d8cb57312b2f93 +Block 0016 [ 79]: 0d09e153aa59daef +Block 0016 [ 80]: 6694dd3785ad79a2 +Block 0016 [ 81]: f804675b1db096ca +Block 0016 [ 82]: af28c00169838f9a +Block 0016 [ 83]: 7e9f31e2ca03f44d +Block 0016 [ 84]: 0a40a5fea905e6da +Block 0016 [ 85]: ea6e6ad593c9a00a +Block 0016 [ 86]: 60ce67973717f0af +Block 0016 [ 87]: 5119b20ef9174210 +Block 0016 [ 88]: 4ad6e8d2ea685ad4 +Block 0016 [ 89]: f23bea2bb343d013 +Block 0016 [ 90]: 8c18a4ec72902c35 +Block 0016 [ 91]: a5bdc1cbada363a0 +Block 0016 [ 92]: 225d167810799ed8 +Block 0016 [ 93]: 028f905fc8f31809 +Block 0016 [ 94]: 929022764e02b432 +Block 0016 [ 95]: 39cabbd42dbca708 +Block 0016 [ 96]: c622b92e3a1f8a98 +Block 0016 [ 97]: f5411fb0c090febe +Block 0016 [ 98]: 1577aa81965ac648 +Block 0016 [ 99]: 7244612848c73c2f +Block 0016 [100]: 3e2ce65d4f47fa17 +Block 0016 [101]: 3fb2a4d1c9be489e +Block 0016 [102]: 0287f8413494b77d +Block 0016 [103]: 8c5a45a4cf7fd7a6 +Block 0016 [104]: f59eb76ce9ee5824 +Block 0016 [105]: eb2ef1cd6870c0cf +Block 0016 [106]: 8a634c740861120e +Block 0016 [107]: 50fd7f477fadbbba +Block 0016 [108]: 972e3be524189b9d +Block 0016 [109]: fdcc72540a485d9d +Block 0016 [110]: 431ff388b18c20b2 +Block 0016 [111]: 84b14a35e1651e87 +Block 0016 [112]: 049c81788d686bea +Block 0016 [113]: 841227e268589776 +Block 0016 [114]: 1984c047ffeb7202 +Block 0016 [115]: 2debb849661993bc +Block 0016 [116]: 64e24153b0795338 +Block 0016 [117]: 68a8fd2c8eaea8c4 +Block 0016 [118]: 4588aa2a8b4b7e64 +Block 0016 [119]: ffc79b51ee4aa24e +Block 0016 [120]: ee0108716b3720aa +Block 0016 [121]: 815b13553b12bf61 +Block 0016 [122]: ede614d36497d5a6 +Block 0016 [123]: 8ddd0e3f2fe5e85e +Block 0016 [124]: 530dca4f54d31258 +Block 0016 [125]: 61edbf72ee4111ce +Block 0016 [126]: 6f9d762b442949b7 +Block 0016 [127]: 824443969c263569 +Block 0017 [ 0]: c26b5fb7ee819975 +Block 0017 [ 1]: 222cc666ae909d6d +Block 0017 [ 2]: c47520b833dde283 +Block 0017 [ 3]: d8df98adf7c4e9de +Block 0017 [ 4]: e5de16b4d34325af +Block 0017 [ 5]: b00cea65fe6cfe19 +Block 0017 [ 6]: 46db08563e7ea0e1 +Block 0017 [ 7]: a5893dba47999f5f +Block 0017 [ 8]: c085e21bb0da3d0f +Block 0017 [ 9]: 1f172eef8cb80b7f +Block 0017 [ 10]: 6b6f645c2443cc04 +Block 0017 [ 11]: b5686dbe596aab80 +Block 0017 [ 12]: cc34ea0ef0d73359 +Block 0017 [ 13]: 97a568c24dc38146 +Block 0017 [ 14]: 778f6cdeb2dae4d9 +Block 0017 [ 15]: 31f8d50c4456bcf2 +Block 0017 [ 16]: c28a9374fe7ba670 +Block 0017 [ 17]: 7b3a8991f0c13cd0 +Block 0017 [ 18]: 6fa3b1c8458e7844 +Block 0017 [ 19]: ea444aa2832d39a3 +Block 0017 [ 20]: fbc811cc74910198 +Block 0017 [ 21]: 2ba1f1b6c73336d6 +Block 0017 [ 22]: b6ca4186998da588 +Block 0017 [ 23]: adf168017ff13adb +Block 0017 [ 24]: e5a80bad1ce6fd4c +Block 0017 [ 25]: 5a006185c3bf0e46 +Block 0017 [ 26]: c018264d3a3303a3 +Block 0017 [ 27]: 6d4f26be949b0710 +Block 0017 [ 28]: 570663118a4576b5 +Block 0017 [ 29]: cf8c5362ef21623d +Block 0017 [ 30]: 5a58b134066bb910 +Block 0017 [ 31]: dc8a5af3b6d8e51a +Block 0017 [ 32]: c91e14f271afe7c8 +Block 0017 [ 33]: 837d36649ff731f0 +Block 0017 [ 34]: 255f48975a9c1166 +Block 0017 [ 35]: 36b33685679ae942 +Block 0017 [ 36]: b78188f30b332a6e +Block 0017 [ 37]: fbd802b61918aaab +Block 0017 [ 38]: 95a224cf20cabbdf +Block 0017 [ 39]: e4fafe09ac44ceae +Block 0017 [ 40]: 8795c7eb6ce53357 +Block 0017 [ 41]: 9baf142cd14ebc74 +Block 0017 [ 42]: e056de9c637bce60 +Block 0017 [ 43]: 41cb37b4eef494eb +Block 0017 [ 44]: 82e788786c7c4b2d +Block 0017 [ 45]: ba3fade55b845c0a +Block 0017 [ 46]: 61ab9386f6de7b43 +Block 0017 [ 47]: b27f8f4f8801afe5 +Block 0017 [ 48]: e7545b6b407bb4e5 +Block 0017 [ 49]: 1b6b292aebb22e12 +Block 0017 [ 50]: 4ea78d3346c80c00 +Block 0017 [ 51]: e51c4614215b48e3 +Block 0017 [ 52]: 350a5fcfa8096d76 +Block 0017 [ 53]: beb0d442e51228f6 +Block 0017 [ 54]: 2dd148dbc8e4339e +Block 0017 [ 55]: b6f6e6939139ed26 +Block 0017 [ 56]: 55bae151f650b757 +Block 0017 [ 57]: 3ecc387a6897bb4b +Block 0017 [ 58]: 81f3ba27544462df +Block 0017 [ 59]: aa724cba27fb7ada +Block 0017 [ 60]: 49f4c6cd3d1001b7 +Block 0017 [ 61]: 5de8a69be3fc4b01 +Block 0017 [ 62]: e7660de671733a47 +Block 0017 [ 63]: 4c848327b9258030 +Block 0017 [ 64]: e1af30e156752a3e +Block 0017 [ 65]: f888b1b30c51e5c2 +Block 0017 [ 66]: cefd61d444cdb0aa +Block 0017 [ 67]: 1366818eee49b310 +Block 0017 [ 68]: 28ef872bff4aaa9d +Block 0017 [ 69]: 52b64397c2378327 +Block 0017 [ 70]: 72dba4affff12aa3 +Block 0017 [ 71]: 43bd82be33a14f30 +Block 0017 [ 72]: 373da4a41d079ee3 +Block 0017 [ 73]: 70610f826873a4be +Block 0017 [ 74]: efc8a7cefecfc06b +Block 0017 [ 75]: a65c4ddf436da72a +Block 0017 [ 76]: ff4128178e114153 +Block 0017 [ 77]: 933bb6ef1ba8b391 +Block 0017 [ 78]: 24da4f6be714eede +Block 0017 [ 79]: 8476945cdffce2bc +Block 0017 [ 80]: 1060159b32839b9a +Block 0017 [ 81]: 7f3b13732e126432 +Block 0017 [ 82]: 1a67a6f096398f36 +Block 0017 [ 83]: 0050c03fde4ebbf2 +Block 0017 [ 84]: 2e33bfd7b983f684 +Block 0017 [ 85]: 142db665d25ff4f5 +Block 0017 [ 86]: 7be937815c018b34 +Block 0017 [ 87]: 44a52fc1a3a14b11 +Block 0017 [ 88]: 122f8c4bf8af9792 +Block 0017 [ 89]: 7df91926add2170d +Block 0017 [ 90]: 14368020f2506eab +Block 0017 [ 91]: 8d32bfcb10d230bc +Block 0017 [ 92]: 3043ef1eb7d8fc1b +Block 0017 [ 93]: 3ac8946c053bb698 +Block 0017 [ 94]: 20881f9043aea007 +Block 0017 [ 95]: 96f9edafe87ebeef +Block 0017 [ 96]: b258dfed76ad1d36 +Block 0017 [ 97]: 6eff6e88a743b710 +Block 0017 [ 98]: 6fba5b916d6e9901 +Block 0017 [ 99]: aa78a708b02b1617 +Block 0017 [100]: 6acf76f47da59dc5 +Block 0017 [101]: d822d6b28b552d9d +Block 0017 [102]: 07e626d948208797 +Block 0017 [103]: e6155e0219831643 +Block 0017 [104]: 910e0e6785c65ce3 +Block 0017 [105]: a5baf4068d6ba4dc +Block 0017 [106]: 393b2a4e94962d2b +Block 0017 [107]: bf728ee972d385b6 +Block 0017 [108]: 38b80e3235f30a5a +Block 0017 [109]: 396bfe4a2864e7df +Block 0017 [110]: 34111fbf07f6a12e +Block 0017 [111]: 63e095883c1ee1cf +Block 0017 [112]: 59eabda66b1b80f8 +Block 0017 [113]: f014bd7d3796df5a +Block 0017 [114]: 4f1349f9a0845b27 +Block 0017 [115]: cf273ea085e693ee +Block 0017 [116]: 24c5445ef8c8ce4f +Block 0017 [117]: 3f5a67d8f3695ed0 +Block 0017 [118]: 3eecddc14dd84a98 +Block 0017 [119]: bcc6260622f109a7 +Block 0017 [120]: 73c11a320135cbba +Block 0017 [121]: 6ff7603869077601 +Block 0017 [122]: c05b3dc3b45d2d9d +Block 0017 [123]: 641bbf7fccc74c80 +Block 0017 [124]: b9727ef5a77e7fa1 +Block 0017 [125]: 47cdc8eb2d9d4edf +Block 0017 [126]: 29a16a1ecda84ccc +Block 0017 [127]: 63550fc73aec391a +Block 0018 [ 0]: 73a43a37ceeea256 +Block 0018 [ 1]: 0e2035fdf4ef4e88 +Block 0018 [ 2]: 55cf35b8b5a10862 +Block 0018 [ 3]: 64e77a47e8032bc4 +Block 0018 [ 4]: a9576618de3cb90e +Block 0018 [ 5]: b833f7216445c57c +Block 0018 [ 6]: 759f838d4ad4c434 +Block 0018 [ 7]: abb5f81f0725a89b +Block 0018 [ 8]: e3b1552cc9c71c21 +Block 0018 [ 9]: 3d9a2f3d93020b83 +Block 0018 [ 10]: 0e53a0bfb7f81d39 +Block 0018 [ 11]: ae796955deec0480 +Block 0018 [ 12]: 7693d55f8a2e92eb +Block 0018 [ 13]: 991c70ec78caa12a +Block 0018 [ 14]: 4d7eab83941af3d2 +Block 0018 [ 15]: 81326a33ee4182c2 +Block 0018 [ 16]: 06c1b888e42568f6 +Block 0018 [ 17]: d5c51a781034bc9b +Block 0018 [ 18]: 119a5b2752527a89 +Block 0018 [ 19]: 50b5d7b5c7eb7f9b +Block 0018 [ 20]: d8f6e49e832454eb +Block 0018 [ 21]: 9f7e79eb57294218 +Block 0018 [ 22]: 3b5c4a73081250de +Block 0018 [ 23]: d0733808f1314c8c +Block 0018 [ 24]: e63fe566af3cc19d +Block 0018 [ 25]: 2272a3a74553c0c8 +Block 0018 [ 26]: e90c71421873c571 +Block 0018 [ 27]: a9cb61075002ac10 +Block 0018 [ 28]: d8b97ef74f52228b +Block 0018 [ 29]: 9b4eac66fb0f74c1 +Block 0018 [ 30]: b022a4d505f08e11 +Block 0018 [ 31]: 85663ee1ac562468 +Block 0018 [ 32]: e241e44001a29b80 +Block 0018 [ 33]: 592e7308934d23d3 +Block 0018 [ 34]: e731a6b6b0c36f9e +Block 0018 [ 35]: 41493fb1cb8eaa8a +Block 0018 [ 36]: 9dbf21d7ce4bc63f +Block 0018 [ 37]: 5a9234f5bdd75f32 +Block 0018 [ 38]: 5b81afda5c8f5380 +Block 0018 [ 39]: d5a7986b11dff5f0 +Block 0018 [ 40]: 505b095dce538a6e +Block 0018 [ 41]: 8409cedfb662722a +Block 0018 [ 42]: a760af89ad1bd964 +Block 0018 [ 43]: 9ccf16a9261ec931 +Block 0018 [ 44]: dc673b0119a3477f +Block 0018 [ 45]: 1bb7fefe35bd686c +Block 0018 [ 46]: 83d8053357e55423 +Block 0018 [ 47]: 2f537a2d509a82d6 +Block 0018 [ 48]: 33212ec5cb2789c2 +Block 0018 [ 49]: d12d2b59b2261562 +Block 0018 [ 50]: b071f8845b921091 +Block 0018 [ 51]: 9c8ffe0baa746df0 +Block 0018 [ 52]: dbf600f18d293676 +Block 0018 [ 53]: 3ada85d4b8e36c52 +Block 0018 [ 54]: faba10ce3a1e786a +Block 0018 [ 55]: 980f6bc7809fd949 +Block 0018 [ 56]: 604a76d6b5170460 +Block 0018 [ 57]: d91b2079a9fdeaf1 +Block 0018 [ 58]: 2f1f4ec73b007466 +Block 0018 [ 59]: 730c109369577f61 +Block 0018 [ 60]: 66c9a5d237aabd90 +Block 0018 [ 61]: c3621cfd2e1b32d2 +Block 0018 [ 62]: be084ebc2ad00f94 +Block 0018 [ 63]: cf9043e50b81646c +Block 0018 [ 64]: 9275b31fbb6fa821 +Block 0018 [ 65]: 4ae62cefc32f71df +Block 0018 [ 66]: 66221bf21cb89a3f +Block 0018 [ 67]: 58ffbd72ed2a8af9 +Block 0018 [ 68]: b85a6fc928ff7cff +Block 0018 [ 69]: a53d773bd978acde +Block 0018 [ 70]: ed70197136db8b0e +Block 0018 [ 71]: b683e16a459a9666 +Block 0018 [ 72]: f6e9b4d1d0f7c0d2 +Block 0018 [ 73]: a3dd151d4bd18e9e +Block 0018 [ 74]: c88c2079b78e4f1b +Block 0018 [ 75]: d619e95f24b470a7 +Block 0018 [ 76]: 38d915f1c4df1bb3 +Block 0018 [ 77]: 9a52ef525657b9a4 +Block 0018 [ 78]: c3004355d9ea136f +Block 0018 [ 79]: 4f2231eb8ed9c0b5 +Block 0018 [ 80]: cce5f29cfb7e1899 +Block 0018 [ 81]: 6dccea4449b58d06 +Block 0018 [ 82]: 41a0939b714ac5bd +Block 0018 [ 83]: da4c028c51d8bba0 +Block 0018 [ 84]: 1235b86184cd97ce +Block 0018 [ 85]: e0bcb44cc34c9f8a +Block 0018 [ 86]: 2a8e24cc0dd2c27a +Block 0018 [ 87]: cde65c0fa2707b5b +Block 0018 [ 88]: a6d09ebe2b21cf33 +Block 0018 [ 89]: 8626d21d80c62123 +Block 0018 [ 90]: ac3923b1e61979a9 +Block 0018 [ 91]: dd237b455e10839a +Block 0018 [ 92]: d4036773fa739341 +Block 0018 [ 93]: 7a4fb3e21a5fac16 +Block 0018 [ 94]: affec1c8b426dc28 +Block 0018 [ 95]: 8cf50bb8fa9b855d +Block 0018 [ 96]: 0fdc69cd6c830993 +Block 0018 [ 97]: 097a687fdf92aaf9 +Block 0018 [ 98]: 188b0ddccfdd4db9 +Block 0018 [ 99]: 1313002013950cf0 +Block 0018 [100]: 5369119751e8098c +Block 0018 [101]: 03067881a7f54f35 +Block 0018 [102]: 3e75d27737b8145f +Block 0018 [103]: a7c719391c252bbd +Block 0018 [104]: d07640453388401f +Block 0018 [105]: b8647a6324a5229d +Block 0018 [106]: 803bc6e3d4e596d5 +Block 0018 [107]: 11a7ef37af4a42db +Block 0018 [108]: 2b1fe566afb105be +Block 0018 [109]: 37e0b8ae65f50773 +Block 0018 [110]: b2164d7e5c798eba +Block 0018 [111]: de438d75388cf065 +Block 0018 [112]: 13d152df2161c345 +Block 0018 [113]: f5fbef555db63c4e +Block 0018 [114]: 91ae316a4024ff0b +Block 0018 [115]: 067cb50b87d9c64d +Block 0018 [116]: 6d428f1e643cb8cd +Block 0018 [117]: 59974616208dae08 +Block 0018 [118]: 5301b3d1c726cf2e +Block 0018 [119]: 8ed2dd2fc14af4e1 +Block 0018 [120]: 8bfb8ebcfa3fbd57 +Block 0018 [121]: 9211c9360b96b845 +Block 0018 [122]: 51ef8411a5e32f44 +Block 0018 [123]: 1c15a0f64623bb38 +Block 0018 [124]: da59218d786afcd6 +Block 0018 [125]: 6ceed727611ae6d9 +Block 0018 [126]: 68ad4703452f6c84 +Block 0018 [127]: 1435aec09f183fb8 +Block 0019 [ 0]: db7857f2d02de914 +Block 0019 [ 1]: be1d2ca2f8f4075b +Block 0019 [ 2]: 3cacf2b9675c4610 +Block 0019 [ 3]: b87fbbaf79c1c56b +Block 0019 [ 4]: 2be598ef088c38a3 +Block 0019 [ 5]: 7b85cb8efe6326f6 +Block 0019 [ 6]: 07ee0d3a22efc0dd +Block 0019 [ 7]: 2bc9056257f239cf +Block 0019 [ 8]: 4cbcf454a2ab394b +Block 0019 [ 9]: 021316d70a2b01ea +Block 0019 [ 10]: 1c5a2e1c4ef3294c +Block 0019 [ 11]: a5510b60639664fe +Block 0019 [ 12]: a260b09b9f8c9822 +Block 0019 [ 13]: b1152f2ebb303876 +Block 0019 [ 14]: a6c677798fb6cb53 +Block 0019 [ 15]: 8c3e0ce6406f8da1 +Block 0019 [ 16]: cd7a1f62071c8b92 +Block 0019 [ 17]: 921e44594ca4e496 +Block 0019 [ 18]: d571d4ddfc513301 +Block 0019 [ 19]: 27d1849bdc7457ea +Block 0019 [ 20]: 5bbfb2ea78c0fd8d +Block 0019 [ 21]: 4dfe80df57f16197 +Block 0019 [ 22]: d7373d84a238e7c4 +Block 0019 [ 23]: b32dd784b7551e77 +Block 0019 [ 24]: 7755a8fafb9982c0 +Block 0019 [ 25]: 951adac79fec5f93 +Block 0019 [ 26]: 73d8aa9cd3a6c6b9 +Block 0019 [ 27]: 19b34676edb7b671 +Block 0019 [ 28]: 15f74ed11989580c +Block 0019 [ 29]: 3abaaf249c172ce8 +Block 0019 [ 30]: 92180c83d6ae4cac +Block 0019 [ 31]: c7d7991a9072de3f +Block 0019 [ 32]: 01d93f684dede00b +Block 0019 [ 33]: 13aeba95c44ad304 +Block 0019 [ 34]: 74080c28c6a71794 +Block 0019 [ 35]: 11576f82596677c5 +Block 0019 [ 36]: eeda905afd7677b3 +Block 0019 [ 37]: 9b31f5f2dafd2d5c +Block 0019 [ 38]: 1debb34c8287cfe8 +Block 0019 [ 39]: f59cc690e1b67d64 +Block 0019 [ 40]: bf2f8c54adb32bc0 +Block 0019 [ 41]: fb307c505280b40e +Block 0019 [ 42]: d10c03fbc2ece8dc +Block 0019 [ 43]: 47aa1323473fffae +Block 0019 [ 44]: 34a1e267c5bf8b28 +Block 0019 [ 45]: 330076c1b27ac30b +Block 0019 [ 46]: b355799c94a30d3b +Block 0019 [ 47]: 759bc21292cc7209 +Block 0019 [ 48]: 6b9408f24caf17ee +Block 0019 [ 49]: 9961d984925ba515 +Block 0019 [ 50]: 4cfbca8d8ba561af +Block 0019 [ 51]: 47060c3700a13560 +Block 0019 [ 52]: d5e2ca29a0b8c65f +Block 0019 [ 53]: 28c833e35cc6dec0 +Block 0019 [ 54]: 6a262ee512b37c9c +Block 0019 [ 55]: 612cc2c7bbf208a2 +Block 0019 [ 56]: 4ec329d8efe4ed3f +Block 0019 [ 57]: 1cddbd0577186377 +Block 0019 [ 58]: 517c387099bb54ba +Block 0019 [ 59]: 186fa06056a9d5e9 +Block 0019 [ 60]: e35aa42952e22c35 +Block 0019 [ 61]: a2c47f55554aadab +Block 0019 [ 62]: efd55e5dcbf3de9f +Block 0019 [ 63]: 368011c1f565c120 +Block 0019 [ 64]: 99f2d82e3ac72e75 +Block 0019 [ 65]: ca63fee28220696b +Block 0019 [ 66]: 79735e120b709d74 +Block 0019 [ 67]: 0e5a0bcf65320750 +Block 0019 [ 68]: 87d6697d5526af66 +Block 0019 [ 69]: e59c1874a397ed6c +Block 0019 [ 70]: f46542c5f5320deb +Block 0019 [ 71]: 6ab985988050992e +Block 0019 [ 72]: 46ddc8f51e8bdfaa +Block 0019 [ 73]: 0af96f044bb69b5d +Block 0019 [ 74]: bdf2a9eb1cbb60a2 +Block 0019 [ 75]: 427a9e01b056e536 +Block 0019 [ 76]: ba27781cc41cbe82 +Block 0019 [ 77]: acd6fe3b7560d239 +Block 0019 [ 78]: e6942df20c5330a5 +Block 0019 [ 79]: 801fd2c2a27fee79 +Block 0019 [ 80]: 78df49edf83e411a +Block 0019 [ 81]: d0b13589858cd937 +Block 0019 [ 82]: 07e475122d4e1ca9 +Block 0019 [ 83]: a6080a9af8853c8c +Block 0019 [ 84]: 5b0fd38d93c861f0 +Block 0019 [ 85]: 789fa96618507733 +Block 0019 [ 86]: c23044d37fc96600 +Block 0019 [ 87]: f9efa88ccb76e47d +Block 0019 [ 88]: 8c8c5d49a22aebeb +Block 0019 [ 89]: 33d452028ad70cd2 +Block 0019 [ 90]: d1ebb9dac3b1eb18 +Block 0019 [ 91]: 2cacfb9ed2b42519 +Block 0019 [ 92]: 583943507463e237 +Block 0019 [ 93]: e8d35b87bd10da44 +Block 0019 [ 94]: 57a83ae010eaa129 +Block 0019 [ 95]: abd24c860084ab8b +Block 0019 [ 96]: aad60968ff3e72a7 +Block 0019 [ 97]: db6b818b858e0f95 +Block 0019 [ 98]: a236a5f5e6ed5c34 +Block 0019 [ 99]: 9ee495a89806571d +Block 0019 [100]: d5309240aeaa129b +Block 0019 [101]: 0678c6008b7bdfa3 +Block 0019 [102]: 898c9b9a4ecc1135 +Block 0019 [103]: 04c9d151c3936024 +Block 0019 [104]: fe5419eeb8909a79 +Block 0019 [105]: db4cde09a43e55ef +Block 0019 [106]: 03e287f745584c27 +Block 0019 [107]: 4b3e7c901a287e12 +Block 0019 [108]: b0fe9f54ac5d1820 +Block 0019 [109]: 19e9481bfb234548 +Block 0019 [110]: e70140dc32fae16c +Block 0019 [111]: 4907fc614c8e02be +Block 0019 [112]: 432d7fd638580bb0 +Block 0019 [113]: 63214685454ffc72 +Block 0019 [114]: 8607ce6bf48c49a4 +Block 0019 [115]: 2b5fcb115af940dc +Block 0019 [116]: f962622b16c92e01 +Block 0019 [117]: b658504aff081cbd +Block 0019 [118]: 2f3c28ad121165d2 +Block 0019 [119]: e936d9ec4aa94cba +Block 0019 [120]: b293e61ee1d30dd3 +Block 0019 [121]: 002c110dd8033a59 +Block 0019 [122]: eeb3a96e2e3d21ca +Block 0019 [123]: d845813fc15e9aaa +Block 0019 [124]: 92bd97abd662fc28 +Block 0019 [125]: 750f33bbce352254 +Block 0019 [126]: 4ebd7cdf6cf9494c +Block 0019 [127]: 795e82c67139eded +Block 0020 [ 0]: 9294d03a99a22ea2 +Block 0020 [ 1]: bcbe0550584228d4 +Block 0020 [ 2]: 129427d353d8d19b +Block 0020 [ 3]: adf1508aa2cd80e4 +Block 0020 [ 4]: 9828e5b07118f247 +Block 0020 [ 5]: 647a7614912b1565 +Block 0020 [ 6]: d75cecc203293be3 +Block 0020 [ 7]: 3bfa93828245a58e +Block 0020 [ 8]: 3e42f663df86163d +Block 0020 [ 9]: db1e8f2db4fd5f56 +Block 0020 [ 10]: b125c16e117becf8 +Block 0020 [ 11]: 833b41751fa36e5b +Block 0020 [ 12]: 37268fc1e7f53398 +Block 0020 [ 13]: 07675cb6e4d9bb8f +Block 0020 [ 14]: 9600f42ea7df9ed2 +Block 0020 [ 15]: 07c775af5e73d44a +Block 0020 [ 16]: a3e3837421f150d4 +Block 0020 [ 17]: d723ae6724085247 +Block 0020 [ 18]: 4990be7e8e59bc2f +Block 0020 [ 19]: eab56ec270c5406b +Block 0020 [ 20]: 2a637389d65100a1 +Block 0020 [ 21]: 6ea26e1c777c46bf +Block 0020 [ 22]: 4d73b17ca5cbdcad +Block 0020 [ 23]: 6f8633a6620733e8 +Block 0020 [ 24]: 5898847821535a03 +Block 0020 [ 25]: 00240261b3893620 +Block 0020 [ 26]: e78807d720e2ebb6 +Block 0020 [ 27]: cada2395683f15f6 +Block 0020 [ 28]: e5532f20a6a36a89 +Block 0020 [ 29]: 631360de14c68435 +Block 0020 [ 30]: 89af90b96ce933f3 +Block 0020 [ 31]: 4ad6b40a8c905c15 +Block 0020 [ 32]: c70d0b81ef0c42f1 +Block 0020 [ 33]: 20d63097de1d4de7 +Block 0020 [ 34]: ac0400d142902ffe +Block 0020 [ 35]: a610f81e4f689fbb +Block 0020 [ 36]: 654a691945e85e07 +Block 0020 [ 37]: 969fe8ef61a96f68 +Block 0020 [ 38]: dd6fc34852f483fd +Block 0020 [ 39]: 8b71d5372e78ef9a +Block 0020 [ 40]: cfba508a76e196b8 +Block 0020 [ 41]: 6c59d9046bebffb4 +Block 0020 [ 42]: f13099cba8d740ce +Block 0020 [ 43]: eb37028ca5947e71 +Block 0020 [ 44]: d3dbd1e481e68acc +Block 0020 [ 45]: 3e849d5566fc85d8 +Block 0020 [ 46]: 52d830c107762635 +Block 0020 [ 47]: baf382c743e99512 +Block 0020 [ 48]: 6dde1e25fa33d385 +Block 0020 [ 49]: 9221fbbb14a0bf8d +Block 0020 [ 50]: d2cf64a8acd2cbfa +Block 0020 [ 51]: 963ac3fea12bb6ef +Block 0020 [ 52]: fcc8a4d451074c43 +Block 0020 [ 53]: 5f8ffd9acd32770a +Block 0020 [ 54]: 93ade0ae517c1f8b +Block 0020 [ 55]: fe4f24c61406fe19 +Block 0020 [ 56]: 5ac0e7d577b9c4e2 +Block 0020 [ 57]: 1f75439ea80cefc1 +Block 0020 [ 58]: 58cd99e49c0988de +Block 0020 [ 59]: 62a1a9b784d8b18a +Block 0020 [ 60]: 0c176450f8146fc9 +Block 0020 [ 61]: c029579dde36ea3c +Block 0020 [ 62]: a35011efa2d65949 +Block 0020 [ 63]: 2cc8d2701c8aebcc +Block 0020 [ 64]: 7845f2cd112dde51 +Block 0020 [ 65]: f1bae9587bbfa28b +Block 0020 [ 66]: 54496f8e331e1446 +Block 0020 [ 67]: 4d2e4c57635a03e1 +Block 0020 [ 68]: 72103a072560e9bc +Block 0020 [ 69]: c745a628447a5af9 +Block 0020 [ 70]: 91f670902f16dacb +Block 0020 [ 71]: 62d1ca75b9ad91e2 +Block 0020 [ 72]: afc5227e1e44618c +Block 0020 [ 73]: a4fd99486eec9a91 +Block 0020 [ 74]: 8586b7e15415c117 +Block 0020 [ 75]: 1dadb8849f653aa2 +Block 0020 [ 76]: 0339d57b42b089d1 +Block 0020 [ 77]: d78c92f8f9795a06 +Block 0020 [ 78]: 884cfcc0e359526c +Block 0020 [ 79]: 92fa9ce765e41900 +Block 0020 [ 80]: a2d47dc9e631b6d3 +Block 0020 [ 81]: 391b00d07320a9d4 +Block 0020 [ 82]: 3b8d6c8e47756f40 +Block 0020 [ 83]: 9595b80e703f79a5 +Block 0020 [ 84]: c174a3c3ace67621 +Block 0020 [ 85]: e26ea90d8b631563 +Block 0020 [ 86]: d840f747d6ecd7c6 +Block 0020 [ 87]: e6791933345cb262 +Block 0020 [ 88]: 2c8a9090108ce066 +Block 0020 [ 89]: 40144400f1a0c9c6 +Block 0020 [ 90]: c586c2db746bae6a +Block 0020 [ 91]: 3f44a45296c0082f +Block 0020 [ 92]: 4c9b5aedf10ebcbb +Block 0020 [ 93]: 07f801aae09a5075 +Block 0020 [ 94]: 6b0bcdf6993e4798 +Block 0020 [ 95]: 775ba96ebbc4eb20 +Block 0020 [ 96]: 8ba6fcbafbd2e642 +Block 0020 [ 97]: 448a0cf251a78843 +Block 0020 [ 98]: 6d1dd0ebb0de9a55 +Block 0020 [ 99]: b0b75a709ef51af2 +Block 0020 [100]: da09cb3af69ae050 +Block 0020 [101]: 59618274a5cb8a5d +Block 0020 [102]: 39595dbc3386c825 +Block 0020 [103]: 7a3a85e38a8751b7 +Block 0020 [104]: 212b32e2fa3f18ba +Block 0020 [105]: 70e7978eb642c740 +Block 0020 [106]: 145bf98bd9db7579 +Block 0020 [107]: e6cd3e7a38171268 +Block 0020 [108]: 28048150f17004e5 +Block 0020 [109]: 4a084ad678c3c285 +Block 0020 [110]: 14f2417d89dfa4dc +Block 0020 [111]: 31405f3f5922edfb +Block 0020 [112]: b3696b2d430a74d0 +Block 0020 [113]: 24a857990340927f +Block 0020 [114]: cec0c14446ee4bd5 +Block 0020 [115]: 3973f485c6208c36 +Block 0020 [116]: dfb726454a565cdf +Block 0020 [117]: e2afb5ccf8b2fff9 +Block 0020 [118]: 6d10ba676dba16b9 +Block 0020 [119]: 53d268907b9738fd +Block 0020 [120]: 38d4d0c62ea273a9 +Block 0020 [121]: 077fd8691c47430f +Block 0020 [122]: a8d0a3cf26b3e70f +Block 0020 [123]: ca812c92fbd348a9 +Block 0020 [124]: 44481748bc8a4958 +Block 0020 [125]: 433a65429d7fc46f +Block 0020 [126]: a5b3568bfcbaceef +Block 0020 [127]: ca3f2394209c5459 +Block 0021 [ 0]: c9cee1441d5f5eab +Block 0021 [ 1]: 52930f80be51d785 +Block 0021 [ 2]: d9ca1edef07331fa +Block 0021 [ 3]: 5b3585e29a75d026 +Block 0021 [ 4]: bb429c762a3842d4 +Block 0021 [ 5]: ba9162cb2e4a3841 +Block 0021 [ 6]: aaaf69053cad1b02 +Block 0021 [ 7]: 75009de437add431 +Block 0021 [ 8]: 127799b6080ff74e +Block 0021 [ 9]: 0f8b60aadc4f92cd +Block 0021 [ 10]: b42e05642dd12542 +Block 0021 [ 11]: 235523f7fb4904a2 +Block 0021 [ 12]: 1e74a64fd16a30dd +Block 0021 [ 13]: 53c398ac3ae69a51 +Block 0021 [ 14]: be6c14cd42d53a85 +Block 0021 [ 15]: eb766ffac3813cbd +Block 0021 [ 16]: 3ebe536b4fc09b06 +Block 0021 [ 17]: d8ecfbaee3f55493 +Block 0021 [ 18]: b3635f0a71d9c6e3 +Block 0021 [ 19]: 6bba95ce1e1bec06 +Block 0021 [ 20]: 25c3fdd4e94e91c2 +Block 0021 [ 21]: d8c4b4c3ffc73bc2 +Block 0021 [ 22]: 3affdbdc7d5986d4 +Block 0021 [ 23]: 0b550b10e081e257 +Block 0021 [ 24]: 8c19a8f9dcefcbbb +Block 0021 [ 25]: bdeb52643dcbae10 +Block 0021 [ 26]: 07aa196ad4b3a0cf +Block 0021 [ 27]: 342eae16c8c58e7f +Block 0021 [ 28]: 22160b2900a419ff +Block 0021 [ 29]: b385c2b64b3aaad9 +Block 0021 [ 30]: 46eca5a6d39f1dd5 +Block 0021 [ 31]: af5f93e38f53ad14 +Block 0021 [ 32]: ddf78e43a91bf838 +Block 0021 [ 33]: 31489cb54c9612f6 +Block 0021 [ 34]: b55b6627a2a238f0 +Block 0021 [ 35]: 3ba6a3fe33f75e0c +Block 0021 [ 36]: a65e93a773f427b4 +Block 0021 [ 37]: 619b72827915658e +Block 0021 [ 38]: da1b7dafcb6d5810 +Block 0021 [ 39]: 331d8479540385ff +Block 0021 [ 40]: ca7f376ba1cee5fd +Block 0021 [ 41]: da53bb16660e43aa +Block 0021 [ 42]: d132a1801b2a1e36 +Block 0021 [ 43]: 0d8b0985e1dfbae8 +Block 0021 [ 44]: 06a6a8c448731c99 +Block 0021 [ 45]: e883d74d86960172 +Block 0021 [ 46]: 7353308be911a737 +Block 0021 [ 47]: 61b9f5c7f1f2c0d7 +Block 0021 [ 48]: 2dec7ab9f7231caa +Block 0021 [ 49]: 2bce285600143fd9 +Block 0021 [ 50]: 39010c3aeca34306 +Block 0021 [ 51]: d115577f0d727858 +Block 0021 [ 52]: 2a14cf35dba86061 +Block 0021 [ 53]: d7874bb05167b114 +Block 0021 [ 54]: b9037cbd42674941 +Block 0021 [ 55]: c8ae7d2d8a9f1dfb +Block 0021 [ 56]: 40007b2a39fb2388 +Block 0021 [ 57]: 24dd8e28b9f2f95b +Block 0021 [ 58]: 69c38f54dc7d736c +Block 0021 [ 59]: 8e5b642cc1c69c96 +Block 0021 [ 60]: c3a36b2d0869a075 +Block 0021 [ 61]: af9801df2f72627e +Block 0021 [ 62]: 34e29558db1d4cc9 +Block 0021 [ 63]: 4bfad5cab74d4d79 +Block 0021 [ 64]: c6967c9a66a2b9de +Block 0021 [ 65]: ff7ca71448d89f34 +Block 0021 [ 66]: b707949980d581d8 +Block 0021 [ 67]: c23a42309200643b +Block 0021 [ 68]: 765664b4e14d5f21 +Block 0021 [ 69]: 70e9c6872e68a5d4 +Block 0021 [ 70]: 71f3602f8bb547e7 +Block 0021 [ 71]: d3d1c0da3feadf0e +Block 0021 [ 72]: b1a26e7ff9b1f302 +Block 0021 [ 73]: 2fedaa2c8b5162fb +Block 0021 [ 74]: d0424eeff22c0329 +Block 0021 [ 75]: 15ad3cc810e0f5ff +Block 0021 [ 76]: b0fbe0010dc2693c +Block 0021 [ 77]: 8461b38939d3db18 +Block 0021 [ 78]: 11fac6794cee84c9 +Block 0021 [ 79]: 16fc287e9a19e926 +Block 0021 [ 80]: 6ec8980df000fef0 +Block 0021 [ 81]: b75eee5a272a9564 +Block 0021 [ 82]: 3b28e5b52c6bb35b +Block 0021 [ 83]: 78699bb3b652c6eb +Block 0021 [ 84]: 6c41404ab2b098b2 +Block 0021 [ 85]: 3d28235a57851c08 +Block 0021 [ 86]: ea29322b64acd257 +Block 0021 [ 87]: c966e9bcb6a9c8eb +Block 0021 [ 88]: 35c6802a7cce1d18 +Block 0021 [ 89]: f42843fa222dccde +Block 0021 [ 90]: 2aebadee62fc8979 +Block 0021 [ 91]: c475f0875b0a7105 +Block 0021 [ 92]: 7ee5af7c946e09c2 +Block 0021 [ 93]: 37f9b4fea2e215d2 +Block 0021 [ 94]: 3a9de7e350019af4 +Block 0021 [ 95]: 33b7efe13b4b9454 +Block 0021 [ 96]: 39d2d89f04964241 +Block 0021 [ 97]: 14db73f346b5a0c0 +Block 0021 [ 98]: 5bfb2a9cc35360d9 +Block 0021 [ 99]: 729eb1694f7c60aa +Block 0021 [100]: 7117bbfaf1f19d62 +Block 0021 [101]: a3c58fc555bf2ca0 +Block 0021 [102]: 13c1b7c5f1378202 +Block 0021 [103]: 7399c842479a898a +Block 0021 [104]: 9e1f5697bede7ff0 +Block 0021 [105]: 0564149b9c476558 +Block 0021 [106]: 3bc1b90131692b4c +Block 0021 [107]: 1bfccfcf22e3a1cb +Block 0021 [108]: 3da368666200d8ed +Block 0021 [109]: 033e93f46e8d4743 +Block 0021 [110]: 11c36841131b1891 +Block 0021 [111]: d8f96a26a37dc7ab +Block 0021 [112]: f4a1ae508ac48041 +Block 0021 [113]: 6c495e2ef1d1103a +Block 0021 [114]: 58ae115d9d807cce +Block 0021 [115]: 4c82fdf95cbcbcc0 +Block 0021 [116]: 39f51ce1da9b6c3d +Block 0021 [117]: 4205730f6328d09b +Block 0021 [118]: ea4360a7b8c07f77 +Block 0021 [119]: d7d81fb0a057e3ce +Block 0021 [120]: ba8ca586118d56d6 +Block 0021 [121]: 120e233f49d0028d +Block 0021 [122]: cb40ca113e6da130 +Block 0021 [123]: 764c1e104bac5294 +Block 0021 [124]: d56f2844dc2583bb +Block 0021 [125]: 879a3936fc5755b9 +Block 0021 [126]: 70acbe6e098056cb +Block 0021 [127]: 7afca87ff2b79b00 +Block 0022 [ 0]: bc7d82733ef71b9c +Block 0022 [ 1]: 1394cb4e08693d8a +Block 0022 [ 2]: 18efd91732233110 +Block 0022 [ 3]: b20b21aef6a3926f +Block 0022 [ 4]: 3592daf273bc0c49 +Block 0022 [ 5]: 33d46dc9f07a46e4 +Block 0022 [ 6]: 73d1fb77948b06eb +Block 0022 [ 7]: 8a63f8dfbb800d0a +Block 0022 [ 8]: b86fdf7d3f73ff2c +Block 0022 [ 9]: 3bc6f91dde8086a3 +Block 0022 [ 10]: c8e447a640139dfa +Block 0022 [ 11]: 2297e787b750829d +Block 0022 [ 12]: f128b83545fa0a12 +Block 0022 [ 13]: cb1b9787fdb730d7 +Block 0022 [ 14]: 6627c9718a8bc950 +Block 0022 [ 15]: 8e9e75b67ebc26cf +Block 0022 [ 16]: 317809a1ecf9fd10 +Block 0022 [ 17]: 0b948f6d198e306c +Block 0022 [ 18]: 43830167f0277d31 +Block 0022 [ 19]: acefad5b0faba0ba +Block 0022 [ 20]: 883907843665ddd3 +Block 0022 [ 21]: 6c7ba74784193ecc +Block 0022 [ 22]: 221ab9d2f05a09ac +Block 0022 [ 23]: 706261e61b707c75 +Block 0022 [ 24]: 0a3ab628c11d07f4 +Block 0022 [ 25]: 71c1113dde1d533f +Block 0022 [ 26]: 4a35095412392314 +Block 0022 [ 27]: 6924221e002e1078 +Block 0022 [ 28]: fdd4f0e2b1570056 +Block 0022 [ 29]: 2b9d802e0bc07966 +Block 0022 [ 30]: f489dd59e2a6d0ea +Block 0022 [ 31]: a1388929da27122a +Block 0022 [ 32]: 46e85b9ad9e8cce8 +Block 0022 [ 33]: 749fb8d43225808b +Block 0022 [ 34]: e6153f61998e80d5 +Block 0022 [ 35]: f469291ceb31747b +Block 0022 [ 36]: d2919925b4c5071b +Block 0022 [ 37]: ae3fc5256ebda2a8 +Block 0022 [ 38]: 6f6679fc8264c35c +Block 0022 [ 39]: 3d7dad770a274f01 +Block 0022 [ 40]: 379bcf2fd1e137c2 +Block 0022 [ 41]: e32a82c804274e00 +Block 0022 [ 42]: e0de77e0762f4f07 +Block 0022 [ 43]: 4d57ae811094fa42 +Block 0022 [ 44]: 7552dcd84eed2528 +Block 0022 [ 45]: 22a0822ada306970 +Block 0022 [ 46]: e7296732d4e69866 +Block 0022 [ 47]: a20ec5bacb74fb8d +Block 0022 [ 48]: 6786cf2ad5572d0a +Block 0022 [ 49]: f2549f26dce94274 +Block 0022 [ 50]: ce524392221e9ce9 +Block 0022 [ 51]: fb222ef56a02c3f1 +Block 0022 [ 52]: ce29627b2c55b120 +Block 0022 [ 53]: b00fc98e487d33bc +Block 0022 [ 54]: ba9a1a9236ebcb8d +Block 0022 [ 55]: 96d87fce20966dfe +Block 0022 [ 56]: 5719501da01a5fb4 +Block 0022 [ 57]: 1bef1c286a9f357b +Block 0022 [ 58]: a472acbd08f7d091 +Block 0022 [ 59]: dfb4ab50795f5a56 +Block 0022 [ 60]: 175c667d2966d000 +Block 0022 [ 61]: d1535a2fa23c2dfc +Block 0022 [ 62]: 0276066c52933b9b +Block 0022 [ 63]: a789683dd9e8cc16 +Block 0022 [ 64]: 3ea422cc751cad5d +Block 0022 [ 65]: 357842eb4fd985e8 +Block 0022 [ 66]: cd55f90fc562d75c +Block 0022 [ 67]: 38109086d68f4095 +Block 0022 [ 68]: 70b6bd256c6daedc +Block 0022 [ 69]: 5a350e041de1919c +Block 0022 [ 70]: a536eaa4af68d2fe +Block 0022 [ 71]: 3077af0c5eed3c22 +Block 0022 [ 72]: 3123f4d9aad3b3ba +Block 0022 [ 73]: 9fb0ff34bfaa2270 +Block 0022 [ 74]: b658b0cd00d5802f +Block 0022 [ 75]: 97b2e143fd7c3c5c +Block 0022 [ 76]: 88dee4acf47e5419 +Block 0022 [ 77]: b826a726db361361 +Block 0022 [ 78]: 7b671285d2803d20 +Block 0022 [ 79]: b671334ae4049a01 +Block 0022 [ 80]: b5d4701309738c4d +Block 0022 [ 81]: eec51b2dd9ca1524 +Block 0022 [ 82]: 8ea2e7cbe7849f38 +Block 0022 [ 83]: 6b654a5540635dc2 +Block 0022 [ 84]: 3d4295e4d19615ac +Block 0022 [ 85]: eb5e5915a0642148 +Block 0022 [ 86]: f893ec41ab06137c +Block 0022 [ 87]: bad2cf30b8bb3273 +Block 0022 [ 88]: 6352142d0b470b26 +Block 0022 [ 89]: 5467740c7733e65a +Block 0022 [ 90]: a6bbbae22894b638 +Block 0022 [ 91]: 2a35ebb87114b880 +Block 0022 [ 92]: d989e7a00d5ec8e9 +Block 0022 [ 93]: af7b8a32afdb6885 +Block 0022 [ 94]: 4efcdde6bc2d75f5 +Block 0022 [ 95]: 7f8f41d919eced9a +Block 0022 [ 96]: 4787f909f8dc245d +Block 0022 [ 97]: d40d8d2b70c01d96 +Block 0022 [ 98]: c7adee6cc4517d3a +Block 0022 [ 99]: 92ed4ee8f5b01a49 +Block 0022 [100]: c01843707b5b5c7e +Block 0022 [101]: d32ae3a801bae8e4 +Block 0022 [102]: 7803de6e9eeea070 +Block 0022 [103]: f8529b389c8e28e6 +Block 0022 [104]: 040625e29005b5be +Block 0022 [105]: 624d205de5ae4dec +Block 0022 [106]: 78a524f7d7e34d89 +Block 0022 [107]: 9186f14434d72086 +Block 0022 [108]: e50b8c43f0ad97df +Block 0022 [109]: c7023c88b8797c5f +Block 0022 [110]: 280a5ce52b4dbdc0 +Block 0022 [111]: a1508547bfb3aa05 +Block 0022 [112]: 82e67edf8fd56984 +Block 0022 [113]: 0fe3f32b800eeb47 +Block 0022 [114]: 4951bd7622ad0d9a +Block 0022 [115]: 070fc7de56bb23af +Block 0022 [116]: 88d09d9a518a0377 +Block 0022 [117]: b7607d77aec85aa6 +Block 0022 [118]: 6ca70a4b33e651b9 +Block 0022 [119]: cecd51f1d0e710fb +Block 0022 [120]: ee38237e293e8f11 +Block 0022 [121]: 6c568b3fcf1d17a3 +Block 0022 [122]: b792e4c460d81205 +Block 0022 [123]: 7c2468923361bf6f +Block 0022 [124]: 09953de49fdbc9ac +Block 0022 [125]: b985b06398326895 +Block 0022 [126]: ac8e2c083ba0e907 +Block 0022 [127]: b289adef24fcb269 +Block 0023 [ 0]: f887a0362d97bbe5 +Block 0023 [ 1]: bc39eae32801eb35 +Block 0023 [ 2]: b5a675c89e71c050 +Block 0023 [ 3]: ac732ed0c2509276 +Block 0023 [ 4]: 5b53d3ce4dd394fe +Block 0023 [ 5]: 31b0557388dedb15 +Block 0023 [ 6]: 3cf538f405228614 +Block 0023 [ 7]: 940b0e9c63cb21da +Block 0023 [ 8]: 73e8facbd92099bd +Block 0023 [ 9]: 2432843309adcd8f +Block 0023 [ 10]: b31c4d7d1699ec2f +Block 0023 [ 11]: af05004ebd7f9d33 +Block 0023 [ 12]: 9db5a872e714329e +Block 0023 [ 13]: 91ea75883b762e4a +Block 0023 [ 14]: f38638108dabdd90 +Block 0023 [ 15]: 26861e1cd975cd97 +Block 0023 [ 16]: 05715021862d5b3a +Block 0023 [ 17]: 8882e5dc0d315aed +Block 0023 [ 18]: 4e420d6af5cba865 +Block 0023 [ 19]: 2dbbabb447434fe8 +Block 0023 [ 20]: 4fb80c868a970369 +Block 0023 [ 21]: 04d0a9abb8a0f861 +Block 0023 [ 22]: 6b2501fafcc000e9 +Block 0023 [ 23]: 201b740e3be2dac6 +Block 0023 [ 24]: 185afa423a4fb1b5 +Block 0023 [ 25]: 53afaec388322182 +Block 0023 [ 26]: 0c2814b50d6e577e +Block 0023 [ 27]: 26b4946dfa2d52d9 +Block 0023 [ 28]: 1f1b128b10855cb4 +Block 0023 [ 29]: 132c09b9061898f2 +Block 0023 [ 30]: 471c578b8492a910 +Block 0023 [ 31]: b258bbd42e271fd7 +Block 0023 [ 32]: 93f8cb887270d643 +Block 0023 [ 33]: e42960f495f58326 +Block 0023 [ 34]: c6d908e361617ce2 +Block 0023 [ 35]: b8cdb4bdda047621 +Block 0023 [ 36]: 3a8286ee5cef4d67 +Block 0023 [ 37]: 49f526689fcd933a +Block 0023 [ 38]: 55d05b37b4a6d448 +Block 0023 [ 39]: 22ca23986b8c5204 +Block 0023 [ 40]: 9f685412374be015 +Block 0023 [ 41]: 6f0ba8b6e35e70ab +Block 0023 [ 42]: fe318f443beb5657 +Block 0023 [ 43]: 6a705817f928cc9d +Block 0023 [ 44]: 00bd93bc3e34ff51 +Block 0023 [ 45]: c99dd7521242e14c +Block 0023 [ 46]: f9253088dea37570 +Block 0023 [ 47]: 1e2d13deb310f931 +Block 0023 [ 48]: 19c2c371e1f661a9 +Block 0023 [ 49]: 7a06fd0f6d70a89c +Block 0023 [ 50]: 4587e9d4990f201c +Block 0023 [ 51]: 2ca4ab657130bbe7 +Block 0023 [ 52]: dee5ca875175476d +Block 0023 [ 53]: 78420fa068dbccca +Block 0023 [ 54]: 826f3deed3c1b6a0 +Block 0023 [ 55]: e7e50e4cfe7647db +Block 0023 [ 56]: affaeaf92cb991a2 +Block 0023 [ 57]: 49625c0a8611bec8 +Block 0023 [ 58]: b58dcfd9919c942a +Block 0023 [ 59]: 6077cbec91448280 +Block 0023 [ 60]: fbb108e9bf221d99 +Block 0023 [ 61]: 5b51277c1bb05b10 +Block 0023 [ 62]: 636343b6a796fba4 +Block 0023 [ 63]: ef13787e68ae51b8 +Block 0023 [ 64]: ee5b8487cb5693c8 +Block 0023 [ 65]: 7c28f2ce84a277dc +Block 0023 [ 66]: 26d883051560b97f +Block 0023 [ 67]: a89a03bedc2cdcb6 +Block 0023 [ 68]: 301f3a02f1b052ea +Block 0023 [ 69]: 9184eebcb7de3579 +Block 0023 [ 70]: 19ce01730fc35b1e +Block 0023 [ 71]: 15802e8ab6283689 +Block 0023 [ 72]: 9aa02a56f7c5d4e2 +Block 0023 [ 73]: 68d84ecf84d7072e +Block 0023 [ 74]: fde125e9672c9d76 +Block 0023 [ 75]: 9bb65a3334c84bce +Block 0023 [ 76]: 166cf59fdeaf06e9 +Block 0023 [ 77]: 28ecda6662343772 +Block 0023 [ 78]: c8899d575e4b40ad +Block 0023 [ 79]: 8db3dd5266989dc4 +Block 0023 [ 80]: 2d5d7afab6ae495d +Block 0023 [ 81]: 3e57e86bf7615941 +Block 0023 [ 82]: 7abd5fafae678d60 +Block 0023 [ 83]: 8c7d5e8c79bc0b95 +Block 0023 [ 84]: 1bf47b24e046db46 +Block 0023 [ 85]: 0366b4dbb095fc65 +Block 0023 [ 86]: a9403c73e1b574ff +Block 0023 [ 87]: 77fab0f60a5df650 +Block 0023 [ 88]: cc7ba3e9add465cf +Block 0023 [ 89]: b1feaef54d44d684 +Block 0023 [ 90]: 70c59b46799527d1 +Block 0023 [ 91]: 532b0ebc0afad373 +Block 0023 [ 92]: d04a620645a05717 +Block 0023 [ 93]: d7eb5dd9e3cdfdc6 +Block 0023 [ 94]: 1fa15db4d90e9643 +Block 0023 [ 95]: 150689421f9c19e5 +Block 0023 [ 96]: e8776793ccc305ac +Block 0023 [ 97]: 4720c416da67d942 +Block 0023 [ 98]: e0295389706e7198 +Block 0023 [ 99]: 61ddae9836604da5 +Block 0023 [100]: 0efa90593f7d286d +Block 0023 [101]: 5f470d10224b43db +Block 0023 [102]: 8cdb8a1c385b1ab5 +Block 0023 [103]: f65982042e0a4a53 +Block 0023 [104]: 5b914b8a3a09cca3 +Block 0023 [105]: 87d96b0eb194aae3 +Block 0023 [106]: 4b01105d03b0431f +Block 0023 [107]: b05129a7d4de80e1 +Block 0023 [108]: fa485ef8d1ea275a +Block 0023 [109]: 619da5c52438dc97 +Block 0023 [110]: 3ddd40726265c8fb +Block 0023 [111]: 9145517022fa85e0 +Block 0023 [112]: cd491181f5af124b +Block 0023 [113]: cf6a59f7420de634 +Block 0023 [114]: cb3249abde961732 +Block 0023 [115]: db33911f535c7f10 +Block 0023 [116]: 0b1c13597b7662f4 +Block 0023 [117]: ec9cdcbb4a807d87 +Block 0023 [118]: df7248a43cb72d02 +Block 0023 [119]: f97318ca3b133c5c +Block 0023 [120]: ac640dc6b2c51f82 +Block 0023 [121]: 2dbfb7a7aefcaa9b +Block 0023 [122]: d96e33495832ee13 +Block 0023 [123]: eb2b11dca1b85b4d +Block 0023 [124]: 0f1fa072f4eb94f1 +Block 0023 [125]: 795f7ad648403ed8 +Block 0023 [126]: c39a5565f68468df +Block 0023 [127]: 9b5911137e833734 +Block 0024 [ 0]: 19544ae260a1fe89 +Block 0024 [ 1]: a90b484bf81248d3 +Block 0024 [ 2]: 3aa17c66521420be +Block 0024 [ 3]: 6c997d1851d26765 +Block 0024 [ 4]: c58a7ea82170ab8b +Block 0024 [ 5]: 9ea19a31d951f70f +Block 0024 [ 6]: 5c0d564309159517 +Block 0024 [ 7]: b58da24d46ace1d0 +Block 0024 [ 8]: d5c1217fa46ae430 +Block 0024 [ 9]: f304ab6d7e537669 +Block 0024 [ 10]: aeea1b75e3507989 +Block 0024 [ 11]: 5eec96bd59daae4c +Block 0024 [ 12]: 1faacc7160416a4f +Block 0024 [ 13]: 28298c25197a9fea +Block 0024 [ 14]: 86944857f501fde4 +Block 0024 [ 15]: dc99890d787159b1 +Block 0024 [ 16]: 00abf614fa34bee2 +Block 0024 [ 17]: 8e9a6dbc73768e97 +Block 0024 [ 18]: 67c946912bf3035f +Block 0024 [ 19]: ec802a2fbbbc4854 +Block 0024 [ 20]: 837f827386a46736 +Block 0024 [ 21]: 9e0043e3ca1aa1d2 +Block 0024 [ 22]: 589f0de39b42db52 +Block 0024 [ 23]: 71f125e96c2e1d7c +Block 0024 [ 24]: bb410c18015520a9 +Block 0024 [ 25]: 46f6d90e6a2c94ed +Block 0024 [ 26]: 425626f90495ed2a +Block 0024 [ 27]: 8560f25c13bf5d47 +Block 0024 [ 28]: 5cad47824a048dba +Block 0024 [ 29]: f76db517190747c5 +Block 0024 [ 30]: c2afcae5d789b38d +Block 0024 [ 31]: 3aa9073bbee11840 +Block 0024 [ 32]: 692f0d7b53aeb157 +Block 0024 [ 33]: e589327308612979 +Block 0024 [ 34]: e2e90881ef58cd84 +Block 0024 [ 35]: 710422fdfc67897b +Block 0024 [ 36]: d2ddcfd2206b8463 +Block 0024 [ 37]: 86ce852d6197f6e1 +Block 0024 [ 38]: e3562daafb454d13 +Block 0024 [ 39]: 3183eec11eb00f1a +Block 0024 [ 40]: 59e474969a554c65 +Block 0024 [ 41]: 0047f774fd077fc8 +Block 0024 [ 42]: 1652bbe0098b386a +Block 0024 [ 43]: a3bc06c2c6f6b033 +Block 0024 [ 44]: 626a0b0174685989 +Block 0024 [ 45]: 7a0713a7d2284f17 +Block 0024 [ 46]: db7e15fe42c8e495 +Block 0024 [ 47]: a8e7232dc2034778 +Block 0024 [ 48]: d9edd376cb77b4c8 +Block 0024 [ 49]: 46a60d186591f2a8 +Block 0024 [ 50]: befd4ae47857cf74 +Block 0024 [ 51]: 34ef4d23f15d6ad2 +Block 0024 [ 52]: cb1890237eb064cf +Block 0024 [ 53]: 647d271993d6799f +Block 0024 [ 54]: a166dc6b15384277 +Block 0024 [ 55]: 24b2c02c08b4493c +Block 0024 [ 56]: 48f180b05feb6757 +Block 0024 [ 57]: 750330054f5166b7 +Block 0024 [ 58]: e791c9cf836a894b +Block 0024 [ 59]: 350c62af591a89b1 +Block 0024 [ 60]: 8068c97e650a680b +Block 0024 [ 61]: 602e5d7ec3090f9f +Block 0024 [ 62]: 5d895adb104bbfdb +Block 0024 [ 63]: 4969f86f4ed6ee1f +Block 0024 [ 64]: 2ade07ec3ae6b981 +Block 0024 [ 65]: 219647c06ad79029 +Block 0024 [ 66]: dfd39cd6e3477b99 +Block 0024 [ 67]: ef7aa5a0098cf293 +Block 0024 [ 68]: c051e96271121718 +Block 0024 [ 69]: 8c9ce5b1dea5759d +Block 0024 [ 70]: fdea1017a321e726 +Block 0024 [ 71]: 7512c935f90ed960 +Block 0024 [ 72]: b8d8d75db8272af7 +Block 0024 [ 73]: 1f14c26126a3e03a +Block 0024 [ 74]: d12a32abf2203212 +Block 0024 [ 75]: bc8807f4672f7316 +Block 0024 [ 76]: 653f65788dbe664d +Block 0024 [ 77]: fdc38532e373de3a +Block 0024 [ 78]: 8604aa43d188008e +Block 0024 [ 79]: f769e2f202d04174 +Block 0024 [ 80]: 4f033ec36a5422ab +Block 0024 [ 81]: 6b4f439714a27419 +Block 0024 [ 82]: 0e63fd9261f6eac4 +Block 0024 [ 83]: 398a388cabf5af9a +Block 0024 [ 84]: 3075d5227839e900 +Block 0024 [ 85]: d87769ccc8b9b72a +Block 0024 [ 86]: cef1dd87cddcb9d7 +Block 0024 [ 87]: 602486b18d8b3b6f +Block 0024 [ 88]: 095bc7aa54e363a8 +Block 0024 [ 89]: 869b52eee9661873 +Block 0024 [ 90]: 41efeea963d375f1 +Block 0024 [ 91]: f39ddd993bc819f1 +Block 0024 [ 92]: 732cd74c9521f132 +Block 0024 [ 93]: 42bd27be85ff5f7d +Block 0024 [ 94]: b84b542491097234 +Block 0024 [ 95]: 6e728e49d0c13956 +Block 0024 [ 96]: a0560af5f85a9640 +Block 0024 [ 97]: cb9e4f7c029b4388 +Block 0024 [ 98]: b31c47b6c7db14fe +Block 0024 [ 99]: e22c5792d48ae63b +Block 0024 [100]: e21fd21ac5af8e63 +Block 0024 [101]: 5fd33dcb458b29dc +Block 0024 [102]: bd284c0e68f994d6 +Block 0024 [103]: d5bf807f4b9cecd9 +Block 0024 [104]: 8f42b5d58b200307 +Block 0024 [105]: 2280b5e6d94f43e2 +Block 0024 [106]: 19e9b92a0f0c54e2 +Block 0024 [107]: 55e67859224bea91 +Block 0024 [108]: 8f5d82f0d4e29050 +Block 0024 [109]: 4d500153a41c5faa +Block 0024 [110]: 3dc5aa1f24e10a18 +Block 0024 [111]: c64497a88ab19e13 +Block 0024 [112]: ee171eff18a2e8eb +Block 0024 [113]: 8a2bdd1af95429af +Block 0024 [114]: 5bed3c8488f49a43 +Block 0024 [115]: 9c11cba1d6d29d63 +Block 0024 [116]: fd2ef7237161c78b +Block 0024 [117]: fe83e69bdaea394c +Block 0024 [118]: f4eddd0618cb4d93 +Block 0024 [119]: 8deb5cb8b9536492 +Block 0024 [120]: b6de734754f92f1c +Block 0024 [121]: e3ae9642edd9edb8 +Block 0024 [122]: 71a85b6a1bb7e4e8 +Block 0024 [123]: 9464bb6dfd50f897 +Block 0024 [124]: db5e7e8b0d3d21dd +Block 0024 [125]: 4d2defa4a0d165f7 +Block 0024 [126]: 59664f6fa7f0d2ca +Block 0024 [127]: 8b6bb9688d145794 +Block 0025 [ 0]: c320877b761ba145 +Block 0025 [ 1]: b4a070fa931b59cc +Block 0025 [ 2]: 55f0dae9ab8959c6 +Block 0025 [ 3]: 48963ab3a5a3ab38 +Block 0025 [ 4]: 59c647c2fd70c35d +Block 0025 [ 5]: a24c7b50ceb02a78 +Block 0025 [ 6]: 6bbb53aeb0e275fb +Block 0025 [ 7]: 0bca6bfb5cf30d40 +Block 0025 [ 8]: fe50a6541bee00b9 +Block 0025 [ 9]: a200dbab13260ed0 +Block 0025 [ 10]: fb7e0640663aa3d5 +Block 0025 [ 11]: ad5b65eb577ab28a +Block 0025 [ 12]: c42e17a46768d25b +Block 0025 [ 13]: c0f25775be4bde1b +Block 0025 [ 14]: a03f4ab570eb0864 +Block 0025 [ 15]: b876833a9029276f +Block 0025 [ 16]: bf9341b678c791bb +Block 0025 [ 17]: cda314edc730979c +Block 0025 [ 18]: 37e2272bd5e77953 +Block 0025 [ 19]: 2d1737c17a79ac4a +Block 0025 [ 20]: 19588d0cd12717fb +Block 0025 [ 21]: 3fb22e5d6d00a14d +Block 0025 [ 22]: b8b180c8b64598a7 +Block 0025 [ 23]: c62a52b1873fa546 +Block 0025 [ 24]: d13f17fd366423aa +Block 0025 [ 25]: f7ca73a416f130d7 +Block 0025 [ 26]: 97c6de62108ea500 +Block 0025 [ 27]: 7c8a275dc4b0527c +Block 0025 [ 28]: 22e257327c9bd81a +Block 0025 [ 29]: 1005107b639db935 +Block 0025 [ 30]: 56ccf5386e0a797e +Block 0025 [ 31]: c434dbd212be0379 +Block 0025 [ 32]: c5e828156b2b1724 +Block 0025 [ 33]: d149d5eef4038aae +Block 0025 [ 34]: f20dc40228486a09 +Block 0025 [ 35]: c23b6038712599fb +Block 0025 [ 36]: c084fafb50e196be +Block 0025 [ 37]: 8401889d76da39c0 +Block 0025 [ 38]: 1bf4be3a8eb6580c +Block 0025 [ 39]: 50613c74ba8b2c36 +Block 0025 [ 40]: 0c5d8e3387b53b46 +Block 0025 [ 41]: b5496f10e08319bd +Block 0025 [ 42]: 4d0b58b1b36a5a04 +Block 0025 [ 43]: f26cfd5a23651288 +Block 0025 [ 44]: 511fae11df2b925c +Block 0025 [ 45]: 2a584bc4560e6b06 +Block 0025 [ 46]: 2f0d04783ef0ae17 +Block 0025 [ 47]: 61b2862af0e16017 +Block 0025 [ 48]: 393c0a2cb70ed4d4 +Block 0025 [ 49]: 70b771d466036515 +Block 0025 [ 50]: f702840aa7265d51 +Block 0025 [ 51]: e7be7ec6074b425a +Block 0025 [ 52]: 0fb8dff33cee9f39 +Block 0025 [ 53]: 4b4ce08a3d4a0165 +Block 0025 [ 54]: 802f78c379876de2 +Block 0025 [ 55]: 0e2793e42daeca5c +Block 0025 [ 56]: d4abf5fab9b4995e +Block 0025 [ 57]: 82ebf71518037bef +Block 0025 [ 58]: 3ce0728aa4758e65 +Block 0025 [ 59]: bb3b390fc4ba0cb2 +Block 0025 [ 60]: 42839bb443791583 +Block 0025 [ 61]: 2cfb87bc983e7870 +Block 0025 [ 62]: f42330724740380d +Block 0025 [ 63]: 98f4628dac1e99bc +Block 0025 [ 64]: c4c9c879c60adc22 +Block 0025 [ 65]: 3eead01a59e0b172 +Block 0025 [ 66]: 66b0b83a428296bb +Block 0025 [ 67]: 2dfc02e721a693a6 +Block 0025 [ 68]: ab9b6351ebc16419 +Block 0025 [ 69]: 6d0b84af8fc9cc0c +Block 0025 [ 70]: bd78dc4faf96665b +Block 0025 [ 71]: 366e84d6687882e7 +Block 0025 [ 72]: 6e4be22e1794d368 +Block 0025 [ 73]: ef83a9f950487282 +Block 0025 [ 74]: efd690a7c965908c +Block 0025 [ 75]: 81aa5bb0ba86005c +Block 0025 [ 76]: 7fb6b179052765ed +Block 0025 [ 77]: f7740714636229c5 +Block 0025 [ 78]: 594bab77f4fc97bb +Block 0025 [ 79]: 9c532bc00614dc28 +Block 0025 [ 80]: 74259d5f871c69e7 +Block 0025 [ 81]: ade983a76defaa4e +Block 0025 [ 82]: 3929c168c2ae7ec2 +Block 0025 [ 83]: 46da67711bb8a797 +Block 0025 [ 84]: 9e4d6605e5865868 +Block 0025 [ 85]: 03f54e2a451ae7d1 +Block 0025 [ 86]: bfa46927418df17e +Block 0025 [ 87]: d46bee7f24a285b2 +Block 0025 [ 88]: d8cb8e1968495eaa +Block 0025 [ 89]: 0cd0dc3525ba10c7 +Block 0025 [ 90]: baca910a7552ead2 +Block 0025 [ 91]: 0f8d9cc7b91e3a23 +Block 0025 [ 92]: fb724d1bfe345f18 +Block 0025 [ 93]: e8a17fc3a88a79c8 +Block 0025 [ 94]: de1c975f49d11ea4 +Block 0025 [ 95]: 83932ec2bb6f4ce7 +Block 0025 [ 96]: d36001488800d278 +Block 0025 [ 97]: 2acc2e4f98349965 +Block 0025 [ 98]: ade89929772b2233 +Block 0025 [ 99]: 71b0bf3568125f41 +Block 0025 [100]: fc9b1cce8dacff6a +Block 0025 [101]: 3dd2ded9dc844bda +Block 0025 [102]: d430deac04e9f487 +Block 0025 [103]: 27651351fec68a87 +Block 0025 [104]: 3e0284bc16405c08 +Block 0025 [105]: 49a51c86dce8dd94 +Block 0025 [106]: 37c724beed957310 +Block 0025 [107]: 2b434cbd05e98b33 +Block 0025 [108]: 3d8a05458c115608 +Block 0025 [109]: 40a3068e604b61db +Block 0025 [110]: b5c7a77e038abc55 +Block 0025 [111]: 253c5666950181ab +Block 0025 [112]: 96daf52bd1165717 +Block 0025 [113]: 2adc2ddae4b5ff82 +Block 0025 [114]: a3df6a379964cb33 +Block 0025 [115]: 07437f2749ead995 +Block 0025 [116]: 696d5df46fe37235 +Block 0025 [117]: 39ac9b4253bc8c74 +Block 0025 [118]: 1f4d4f88f980a8f5 +Block 0025 [119]: 4f8c0a082057e21d +Block 0025 [120]: e137d8667c968404 +Block 0025 [121]: f4a5e049476831a3 +Block 0025 [122]: 01c28ffd0c6afa51 +Block 0025 [123]: edb93ba57f459a65 +Block 0025 [124]: 91c72c2b3df105f5 +Block 0025 [125]: e5082ab282eb7758 +Block 0025 [126]: dc10549b836c0675 +Block 0025 [127]: 8a6fd560181ca34a +Block 0026 [ 0]: 7787e1b17f8b7213 +Block 0026 [ 1]: 38b0ed15bcfd0d2b +Block 0026 [ 2]: a2e51631d461450d +Block 0026 [ 3]: 0d43a20398da0d83 +Block 0026 [ 4]: 66bd336361cbe7ea +Block 0026 [ 5]: 9b1b590e17ed1971 +Block 0026 [ 6]: e0ed8e7f87628cba +Block 0026 [ 7]: 3709e578ed58d044 +Block 0026 [ 8]: 6f3c9df36aed3800 +Block 0026 [ 9]: 6f7a33ee11f88d24 +Block 0026 [ 10]: aed550ae646f153b +Block 0026 [ 11]: 36457ca90d54a60a +Block 0026 [ 12]: 7d06b80d22b9a481 +Block 0026 [ 13]: 6b4733c01744613d +Block 0026 [ 14]: 7c17d3703fd46741 +Block 0026 [ 15]: 04ae98470050c642 +Block 0026 [ 16]: a5a19388adf1e43e +Block 0026 [ 17]: fbc2a2dc038db68f +Block 0026 [ 18]: c4bdd4abd293f1b0 +Block 0026 [ 19]: 5d2331ad37f0bbe8 +Block 0026 [ 20]: effca955c329ca97 +Block 0026 [ 21]: 2a1a32ef4ca5397b +Block 0026 [ 22]: aa8f102b0737879e +Block 0026 [ 23]: 0a4af7962c2815b8 +Block 0026 [ 24]: e2902b18ce3342e7 +Block 0026 [ 25]: 44e98690c16d907d +Block 0026 [ 26]: 717ecd63fb9bc693 +Block 0026 [ 27]: 1a7c4a0985a0070e +Block 0026 [ 28]: dae416e8736f2537 +Block 0026 [ 29]: 6a608b0ea85cf02e +Block 0026 [ 30]: efc4102444c22c9d +Block 0026 [ 31]: e731ea0b9f46e701 +Block 0026 [ 32]: 60ae50f08358b083 +Block 0026 [ 33]: cac388635b6cfd3e +Block 0026 [ 34]: 95c96e422e666b00 +Block 0026 [ 35]: 27e360107749d81c +Block 0026 [ 36]: b5324834762b6f59 +Block 0026 [ 37]: 6063ebe9a361f5e6 +Block 0026 [ 38]: 7cd3ca1c59dc2cf5 +Block 0026 [ 39]: dcd32c6af49be138 +Block 0026 [ 40]: 1114a79b8559972e +Block 0026 [ 41]: d754b3285bfbe7c8 +Block 0026 [ 42]: 65a05b0cbbaba55a +Block 0026 [ 43]: 0a345bdf50bf9271 +Block 0026 [ 44]: 4f8fca8cf71ecc35 +Block 0026 [ 45]: 9af421d42dd3e2fd +Block 0026 [ 46]: 790a2c830694f95e +Block 0026 [ 47]: 13277aca6f47c0ca +Block 0026 [ 48]: faf7b46c0635c300 +Block 0026 [ 49]: 9bb87d21df5ce055 +Block 0026 [ 50]: 9ea3ccf7593f4223 +Block 0026 [ 51]: 972196d81877e016 +Block 0026 [ 52]: ee24e2390712cef0 +Block 0026 [ 53]: 0d5ba8f740c8635a +Block 0026 [ 54]: 9cbe5eed690355fa +Block 0026 [ 55]: 9ae45b8ba88a7ee8 +Block 0026 [ 56]: cbc74d17ca2e2120 +Block 0026 [ 57]: f1dbff2e0a0a963a +Block 0026 [ 58]: 898dceb936985d35 +Block 0026 [ 59]: 68399cc0fb5b4f5b +Block 0026 [ 60]: 6b339f4dd21ee52b +Block 0026 [ 61]: 1ccb60bbece0b314 +Block 0026 [ 62]: 67ef77abb1f679e3 +Block 0026 [ 63]: 725403dfdfea6766 +Block 0026 [ 64]: ceea6a9482466593 +Block 0026 [ 65]: 0f6fe2bf8ebd08aa +Block 0026 [ 66]: 4c93f88b4040ce00 +Block 0026 [ 67]: 461c420c864292d2 +Block 0026 [ 68]: 005fffeac6bf989d +Block 0026 [ 69]: 8e57dc0cd187b0a8 +Block 0026 [ 70]: 40e56f7495b3245d +Block 0026 [ 71]: fc30919451bff2dd +Block 0026 [ 72]: e6bc501d0d5f6627 +Block 0026 [ 73]: 06302090b6c9a247 +Block 0026 [ 74]: 8108bbb6f845954c +Block 0026 [ 75]: a46a02be4fd8109b +Block 0026 [ 76]: 18449b4910984976 +Block 0026 [ 77]: 627d1da56c93283f +Block 0026 [ 78]: 3ea2709034683c54 +Block 0026 [ 79]: aa66780464acc060 +Block 0026 [ 80]: 3799a4195532e48a +Block 0026 [ 81]: 2be57e5e6d2574dd +Block 0026 [ 82]: 6b175c17210e5f83 +Block 0026 [ 83]: 36d9322e01b4d188 +Block 0026 [ 84]: 8903c58d72114572 +Block 0026 [ 85]: eb12c42494273c25 +Block 0026 [ 86]: 2ff9cf1cba192da0 +Block 0026 [ 87]: ece184354ffaca0f +Block 0026 [ 88]: 8be22a1b176220f4 +Block 0026 [ 89]: f389e6c2a34d6f02 +Block 0026 [ 90]: 5eb639bbfcac89e3 +Block 0026 [ 91]: ee4954ff1088d75f +Block 0026 [ 92]: 40fc9ea79cb8ea53 +Block 0026 [ 93]: 37031bf3a0da4c68 +Block 0026 [ 94]: a3d7d6b500f23ea1 +Block 0026 [ 95]: 0e25050f11b8c6e2 +Block 0026 [ 96]: 1dcfef79189cd6ea +Block 0026 [ 97]: d55c64e2688a9387 +Block 0026 [ 98]: 854f67dff13be8dc +Block 0026 [ 99]: 73d776ccda670f31 +Block 0026 [100]: 733597e56ce06e48 +Block 0026 [101]: b1ba59f9fdd19824 +Block 0026 [102]: 505cb5283934f36f +Block 0026 [103]: 76a4a4e76280bd43 +Block 0026 [104]: 82762a9747778007 +Block 0026 [105]: 0b8e9ba737a69853 +Block 0026 [106]: 07eb4517abf8f59e +Block 0026 [107]: 6cfa132c67ddaf9f +Block 0026 [108]: dc82c73163acec84 +Block 0026 [109]: 8d2b9b17c3ec0528 +Block 0026 [110]: 39af2ae695f99141 +Block 0026 [111]: 19a879e403ee3f71 +Block 0026 [112]: b7b713bc8c58b905 +Block 0026 [113]: 8837db614637ff11 +Block 0026 [114]: 72420905a2ba9df5 +Block 0026 [115]: 8b4a379f3e156cd9 +Block 0026 [116]: 399fc6bbc18599a3 +Block 0026 [117]: cd9f7dacec38c90f +Block 0026 [118]: 1e50976d023819ca +Block 0026 [119]: 702eea7106b1ee55 +Block 0026 [120]: e822fcb19d6bddf8 +Block 0026 [121]: 9c1d0a694f21ef4b +Block 0026 [122]: 81edbcb110767596 +Block 0026 [123]: 68177967dab9ea1c +Block 0026 [124]: e63bb5189aaefafd +Block 0026 [125]: 07b85177bdec787e +Block 0026 [126]: 82e90e729283b121 +Block 0026 [127]: 5c38fc13b16fadd7 +Block 0027 [ 0]: 12930e6a057db3dc +Block 0027 [ 1]: d36a092bdc01e5e2 +Block 0027 [ 2]: 9f38ab342482fe49 +Block 0027 [ 3]: f974fc7ba1aa4fa8 +Block 0027 [ 4]: a92ee342c95f0c16 +Block 0027 [ 5]: 5fa4cd78ef7c546e +Block 0027 [ 6]: 7530efe11190c6cf +Block 0027 [ 7]: 7dc4e9115082c64a +Block 0027 [ 8]: 7e50a5c226d14b92 +Block 0027 [ 9]: c10c38aedbde3476 +Block 0027 [ 10]: 63a10362c500407c +Block 0027 [ 11]: 38d06cebed582370 +Block 0027 [ 12]: a6d17e59dd8d79e1 +Block 0027 [ 13]: 3f560be8c3116feb +Block 0027 [ 14]: f1a98624843f0e06 +Block 0027 [ 15]: 5b605da6ea36cb76 +Block 0027 [ 16]: 0a998d1b462b9636 +Block 0027 [ 17]: 20c9bc32a8fb2c68 +Block 0027 [ 18]: 6b033a31a9d38e4d +Block 0027 [ 19]: 71e616a3e9371928 +Block 0027 [ 20]: fb93b58238f371bc +Block 0027 [ 21]: 19c3c8b589136419 +Block 0027 [ 22]: b58736bab4e0456d +Block 0027 [ 23]: a26647abf0d6ecbd +Block 0027 [ 24]: ebbf19504cbf5844 +Block 0027 [ 25]: 4c5efff112625110 +Block 0027 [ 26]: 59dc758ebdb3f7db +Block 0027 [ 27]: b37f98da7ebec9f1 +Block 0027 [ 28]: cfd2e95dda6b5110 +Block 0027 [ 29]: f1f99e59b552c90b +Block 0027 [ 30]: e47fc3a80048984b +Block 0027 [ 31]: a91ae33cac719918 +Block 0027 [ 32]: 13183079f3445bb9 +Block 0027 [ 33]: b11458d8655b5d1e +Block 0027 [ 34]: 344e18738fc9a152 +Block 0027 [ 35]: 4b5e13937faa8d66 +Block 0027 [ 36]: bef80972ec679c98 +Block 0027 [ 37]: 03e5e4f7b3a6f1f1 +Block 0027 [ 38]: ea70f0fddee3e6d9 +Block 0027 [ 39]: 146fb2c49fdf235f +Block 0027 [ 40]: 6047ed94889fcd7a +Block 0027 [ 41]: 4ca5532aa52131f0 +Block 0027 [ 42]: cbb5b45a4c542dca +Block 0027 [ 43]: e653642f7a991cee +Block 0027 [ 44]: 02df1b6bcd671363 +Block 0027 [ 45]: bfccfd002b010fc1 +Block 0027 [ 46]: 932095f8fcb37e53 +Block 0027 [ 47]: 35e614f689c05f47 +Block 0027 [ 48]: 1b74807f55e0b06a +Block 0027 [ 49]: 4eb2f12dba075a46 +Block 0027 [ 50]: f0982642ef5559ac +Block 0027 [ 51]: 3422bc053329d35f +Block 0027 [ 52]: 8e431bb2418f2552 +Block 0027 [ 53]: bfac86b81ed9ae9a +Block 0027 [ 54]: cacc8aa08da0e75b +Block 0027 [ 55]: ee31b0c8eb4204b5 +Block 0027 [ 56]: cbdbcfd30e0cba0f +Block 0027 [ 57]: 671d0b0c3726efc9 +Block 0027 [ 58]: b0c4ab8d5906da13 +Block 0027 [ 59]: e5b95a70fa01a0eb +Block 0027 [ 60]: a1d1f26bfd9f3577 +Block 0027 [ 61]: 359023a672a6a5f0 +Block 0027 [ 62]: 370ddd312a434fb5 +Block 0027 [ 63]: 74da84c2881a3683 +Block 0027 [ 64]: d6828e4ba965222d +Block 0027 [ 65]: 595dc11dad7f9a30 +Block 0027 [ 66]: 73068b819a5e5aee +Block 0027 [ 67]: 15369ddd1a6d970c +Block 0027 [ 68]: 3f462c04b0b7a365 +Block 0027 [ 69]: 917e1403575f4ab6 +Block 0027 [ 70]: 2273d2ffdcbf1d12 +Block 0027 [ 71]: ddd0ba35d1168aa3 +Block 0027 [ 72]: 75cbb653840a4cbf +Block 0027 [ 73]: a6c8c0c60b0d8586 +Block 0027 [ 74]: eff7b12a4d557ec8 +Block 0027 [ 75]: 120404a563f5833a +Block 0027 [ 76]: 0126fd04246359fc +Block 0027 [ 77]: 7b062c25b5f01e0e +Block 0027 [ 78]: d77425a03db505f5 +Block 0027 [ 79]: 0f3cb0da8c62a3c1 +Block 0027 [ 80]: 36e521a3f8ee260e +Block 0027 [ 81]: 6daabf1b23d415e9 +Block 0027 [ 82]: 351544dc1bc2ade2 +Block 0027 [ 83]: 73a2f4cbf0c61a71 +Block 0027 [ 84]: 9b85fb6bf47e113b +Block 0027 [ 85]: 1069d94fb273a533 +Block 0027 [ 86]: ce9b89a370984d0a +Block 0027 [ 87]: 6450d2025404e384 +Block 0027 [ 88]: fb7a4386879734bc +Block 0027 [ 89]: e46fd6fd1275c166 +Block 0027 [ 90]: ee016a4cac3d0cee +Block 0027 [ 91]: fffc68927242f65b +Block 0027 [ 92]: 0a1887efbe2788b7 +Block 0027 [ 93]: 1b58841d77287271 +Block 0027 [ 94]: d152260d9308572b +Block 0027 [ 95]: ece6f963e3ebbbc5 +Block 0027 [ 96]: e7223810f5627ce1 +Block 0027 [ 97]: 1b3981f28853088f +Block 0027 [ 98]: 65c286c9e8dcfbd0 +Block 0027 [ 99]: 1ee47c556fbc9547 +Block 0027 [100]: 6143d92f2a00e43e +Block 0027 [101]: 0910c819d3fbd6c5 +Block 0027 [102]: 83a6c3c6178941aa +Block 0027 [103]: fdcae49032578ab3 +Block 0027 [104]: d401f44c9ce96675 +Block 0027 [105]: 38f7ee360016ae89 +Block 0027 [106]: dce9785998cd7e5a +Block 0027 [107]: 1d62c2e64198819b +Block 0027 [108]: de11552f926a3154 +Block 0027 [109]: 70c03577942da684 +Block 0027 [110]: bbd8b1f50967abcf +Block 0027 [111]: dbc8c3667580889f +Block 0027 [112]: 8149d1c48a57948e +Block 0027 [113]: 61f5496ee9cfbbd2 +Block 0027 [114]: 4ac6319d2de8dc93 +Block 0027 [115]: 27c3d16c6b798aba +Block 0027 [116]: c88e4c2f6f071746 +Block 0027 [117]: edcd89159e9013ce +Block 0027 [118]: 8e2e169861431d0d +Block 0027 [119]: 5edebc7fcf5da7bc +Block 0027 [120]: 382bbc7274d680db +Block 0027 [121]: 00b6ff6e1d75dc45 +Block 0027 [122]: a76a9eed4900a8d1 +Block 0027 [123]: 7f484b5d28c8a586 +Block 0027 [124]: 295b53fe63506698 +Block 0027 [125]: 558a174b4e127e0e +Block 0027 [126]: 684094fc58d7e254 +Block 0027 [127]: dbe06eb544f1906e +Block 0028 [ 0]: ddb78852644e4fb9 +Block 0028 [ 1]: 8157ed8a8df838d8 +Block 0028 [ 2]: 368f13a1b3a19b11 +Block 0028 [ 3]: d4f19f1eb6e95356 +Block 0028 [ 4]: 1e1b78d80bf53bd4 +Block 0028 [ 5]: 4fdb694933b6c774 +Block 0028 [ 6]: 6ddfca93b71e9a0f +Block 0028 [ 7]: a57c49965a92a2ab +Block 0028 [ 8]: 4fcc400c2b8db1d1 +Block 0028 [ 9]: 64cc43e293565b56 +Block 0028 [ 10]: 4b45a5f1b8517500 +Block 0028 [ 11]: 11e2bab5266c6f45 +Block 0028 [ 12]: 86beeced6cae59b9 +Block 0028 [ 13]: 45dffb5c4715fe45 +Block 0028 [ 14]: 2c9591fd02b19e55 +Block 0028 [ 15]: dab8017fe48f8420 +Block 0028 [ 16]: 25c31011171393eb +Block 0028 [ 17]: 5cbd5c588c21d872 +Block 0028 [ 18]: 316d50b90b137b97 +Block 0028 [ 19]: 5924c498b1765b2f +Block 0028 [ 20]: 2a0f743760ccc424 +Block 0028 [ 21]: 30f97a465a2b737b +Block 0028 [ 22]: 4646d157fecaceb8 +Block 0028 [ 23]: e5f9e8a4c6f1115c +Block 0028 [ 24]: 1766f2e20c969a26 +Block 0028 [ 25]: 6c2e97942c33c4e5 +Block 0028 [ 26]: 7424f24156e95a3f +Block 0028 [ 27]: 872bbb2e45e22ce5 +Block 0028 [ 28]: 5c11165dd1a85e90 +Block 0028 [ 29]: 34dceb5459d0114d +Block 0028 [ 30]: a1f187f262b4e88c +Block 0028 [ 31]: 9e1ca88530d2b53c +Block 0028 [ 32]: fc6a2ecbab308670 +Block 0028 [ 33]: 3fd7c88081e86c28 +Block 0028 [ 34]: f38d8bd2f6673049 +Block 0028 [ 35]: d5d9f983810b9631 +Block 0028 [ 36]: b22bb71dc25daa1a +Block 0028 [ 37]: fbe85a9b293b63c4 +Block 0028 [ 38]: 1b267938f53b24be +Block 0028 [ 39]: 646356bba6645a62 +Block 0028 [ 40]: 08c4f441c8b9e50c +Block 0028 [ 41]: ac2a12479f405658 +Block 0028 [ 42]: 2154f7818668aaba +Block 0028 [ 43]: 5020654424e00306 +Block 0028 [ 44]: f69468f9c6058b91 +Block 0028 [ 45]: edb043fd6c771c66 +Block 0028 [ 46]: 1287182ed24b66af +Block 0028 [ 47]: 5fa6715eb508cb2f +Block 0028 [ 48]: 7f2e3eebc7622dd2 +Block 0028 [ 49]: 4872d48ca3d3044a +Block 0028 [ 50]: 9afe8b801d70981e +Block 0028 [ 51]: 37dc872e96e1fa5e +Block 0028 [ 52]: 065674818a30fb71 +Block 0028 [ 53]: f15637fc6066ab39 +Block 0028 [ 54]: dd012664e2e963fc +Block 0028 [ 55]: 11f468e6f8ead720 +Block 0028 [ 56]: 0d4bf81380f5f7b7 +Block 0028 [ 57]: bf387f5347f51a2b +Block 0028 [ 58]: 80830d570d6be9fa +Block 0028 [ 59]: 0fbdf32510ef4109 +Block 0028 [ 60]: 865abaf1fad7c7c6 +Block 0028 [ 61]: 5f8a61d65fbcff4e +Block 0028 [ 62]: ca1e5596912d75b7 +Block 0028 [ 63]: 7b12b1246fbb312a +Block 0028 [ 64]: 216f63fbd7cee1ad +Block 0028 [ 65]: 3304bd0ad61aa327 +Block 0028 [ 66]: 7b406a15e6a554dd +Block 0028 [ 67]: 4b861fd7abc69337 +Block 0028 [ 68]: cd61bc81c3a5710a +Block 0028 [ 69]: bacf74038200ade1 +Block 0028 [ 70]: 2eb50854ecb1b89c +Block 0028 [ 71]: 6ce4f13fcd047978 +Block 0028 [ 72]: 1ffd893cf06817b1 +Block 0028 [ 73]: 019e6cdd343ba3b5 +Block 0028 [ 74]: 6ad77b96e6cb27f7 +Block 0028 [ 75]: fd0447e79123f630 +Block 0028 [ 76]: 60c59aa378c9d746 +Block 0028 [ 77]: b7047b78dcdda7f6 +Block 0028 [ 78]: 1675c7d66cb47094 +Block 0028 [ 79]: ca5eefb7cb436aee +Block 0028 [ 80]: a4207e30dd8f6abe +Block 0028 [ 81]: cd3d5e1bc0851543 +Block 0028 [ 82]: 59df14e5a994447b +Block 0028 [ 83]: 6212bdad1c5236ba +Block 0028 [ 84]: 50f2b2aa5d88720e +Block 0028 [ 85]: 7e957c908b1fe13f +Block 0028 [ 86]: 8faccec71ce74717 +Block 0028 [ 87]: 694c00d349687830 +Block 0028 [ 88]: 2c4704f4942761f9 +Block 0028 [ 89]: 2b7f14df7894d243 +Block 0028 [ 90]: e6690e21770bdbd8 +Block 0028 [ 91]: c5f1b5c597c611d4 +Block 0028 [ 92]: 695bfbb7c5b6d205 +Block 0028 [ 93]: 7f4dd31a22323b21 +Block 0028 [ 94]: 1c82e4fe143a3a87 +Block 0028 [ 95]: 3d67e3a318ec260f +Block 0028 [ 96]: 0e1d2cf60450d635 +Block 0028 [ 97]: 2616a3ea45b9fe98 +Block 0028 [ 98]: fc913a01b60d4ef4 +Block 0028 [ 99]: dce48585f1e70b80 +Block 0028 [100]: 86ca2b0246017f0e +Block 0028 [101]: 603a6902077571cd +Block 0028 [102]: 10dc341e0cfd16f1 +Block 0028 [103]: e541553b8d4335c9 +Block 0028 [104]: 66d981c8d54ab580 +Block 0028 [105]: bf4d8514c40adadc +Block 0028 [106]: 10d48b8199c6b610 +Block 0028 [107]: b5bc74240320de57 +Block 0028 [108]: af7668ece2e84c7e +Block 0028 [109]: e3130bb9f194f006 +Block 0028 [110]: ac94f63610240c95 +Block 0028 [111]: a57c35e5bc18208a +Block 0028 [112]: e1e559ad43561660 +Block 0028 [113]: 9e0396432e4fb2b0 +Block 0028 [114]: d9eecd132cf253e7 +Block 0028 [115]: 5c6c1e86338d3843 +Block 0028 [116]: 4a0f9767c564c7fd +Block 0028 [117]: 451ad2c0b4837694 +Block 0028 [118]: b919b729cdf423bc +Block 0028 [119]: 38166219dae5e549 +Block 0028 [120]: d80cee45d4cec8d6 +Block 0028 [121]: b29d77b88e5d7043 +Block 0028 [122]: d3a30d963e19f957 +Block 0028 [123]: 97dabe16dde3eb61 +Block 0028 [124]: baf0424359c13ff1 +Block 0028 [125]: fc25e968e22146eb +Block 0028 [126]: 8aba818396994000 +Block 0028 [127]: c48f6fdace29cf9d +Block 0029 [ 0]: 225b64c780f39256 +Block 0029 [ 1]: 5147dc905e69a0db +Block 0029 [ 2]: 4c7942255ca27d88 +Block 0029 [ 3]: 8229b91388cfb1ae +Block 0029 [ 4]: 77e41def90535d0b +Block 0029 [ 5]: 60e9faecef01a27c +Block 0029 [ 6]: 588f421dc2ceaeec +Block 0029 [ 7]: abdd9949472c2af1 +Block 0029 [ 8]: a2b25cd56b4a8e35 +Block 0029 [ 9]: c7a089f905ef9af7 +Block 0029 [ 10]: 984e0141b144c4ac +Block 0029 [ 11]: e7e81071cf5a3a28 +Block 0029 [ 12]: e1877aa5c8515358 +Block 0029 [ 13]: e2b44eec3f348c9d +Block 0029 [ 14]: 2c656eabc4c92995 +Block 0029 [ 15]: 7a4b4b7e40cd548d +Block 0029 [ 16]: a3256ff7e5eb7769 +Block 0029 [ 17]: dd83e20dbf429f74 +Block 0029 [ 18]: 70a48f575e6f5d04 +Block 0029 [ 19]: 4127e6148d99f6ca +Block 0029 [ 20]: 472d9760ec55f6c2 +Block 0029 [ 21]: 4a13aa3a38cbd14e +Block 0029 [ 22]: 45203b263388ba70 +Block 0029 [ 23]: 20cc48efc33f1c47 +Block 0029 [ 24]: d37ae14d8c380707 +Block 0029 [ 25]: 5d88011d318a9eb1 +Block 0029 [ 26]: 5a7bcd8ae96845a8 +Block 0029 [ 27]: 82fb579f8cae5f10 +Block 0029 [ 28]: e0b5c3cd5c716035 +Block 0029 [ 29]: b23baef06e65d007 +Block 0029 [ 30]: e74730eecf9fe525 +Block 0029 [ 31]: a58d022815708b41 +Block 0029 [ 32]: ad2f92a14bd509e1 +Block 0029 [ 33]: 4c263e4d0ba9f61f +Block 0029 [ 34]: ef945be10969cf1d +Block 0029 [ 35]: 26238bd507503c18 +Block 0029 [ 36]: 10edc88eae06b7f1 +Block 0029 [ 37]: aa77af94ae98a96a +Block 0029 [ 38]: f5b6f7f01849769f +Block 0029 [ 39]: 018464b91abc2a1c +Block 0029 [ 40]: 09bb750f89cf9c2c +Block 0029 [ 41]: bdf625a05c80e043 +Block 0029 [ 42]: 004149c8ac887102 +Block 0029 [ 43]: a32bff9a62c2a7e3 +Block 0029 [ 44]: b1db20ddbe124fad +Block 0029 [ 45]: 1e55616eb04c3f84 +Block 0029 [ 46]: 56f964e84266f7e8 +Block 0029 [ 47]: 372a6c740da9c762 +Block 0029 [ 48]: 2604cb4e6455c382 +Block 0029 [ 49]: 3959bcce8d32b584 +Block 0029 [ 50]: 20c4a1dce4e44856 +Block 0029 [ 51]: e872e71fdd213d98 +Block 0029 [ 52]: ff576355fbe1ce1f +Block 0029 [ 53]: 168d7d1478765f35 +Block 0029 [ 54]: ef0928a5c3c145a1 +Block 0029 [ 55]: d293b5b27b7e72ec +Block 0029 [ 56]: e5dc2424b6f8b604 +Block 0029 [ 57]: f2983bcacecf4aa1 +Block 0029 [ 58]: 456d60bc3fee9203 +Block 0029 [ 59]: 1fc3a7781da2242c +Block 0029 [ 60]: a2c160c30dba2e35 +Block 0029 [ 61]: 82ed201b0e1caa9b +Block 0029 [ 62]: 06cf39b3dfc2f9f8 +Block 0029 [ 63]: 094b0feafb722040 +Block 0029 [ 64]: 8d98b7132e79384a +Block 0029 [ 65]: bd1f6dcf9268e96c +Block 0029 [ 66]: 65794241aa1db26a +Block 0029 [ 67]: 6ba30654dd5508d7 +Block 0029 [ 68]: 38e2cecc5ef5b3c3 +Block 0029 [ 69]: c0caeedd012543b1 +Block 0029 [ 70]: 97d124d6b9231255 +Block 0029 [ 71]: 924a3eabe40ed3c2 +Block 0029 [ 72]: bef4ffe2aa528ad5 +Block 0029 [ 73]: 7459989ae48c7456 +Block 0029 [ 74]: 15af22c8d046ed3d +Block 0029 [ 75]: b9a7b35b20e04a44 +Block 0029 [ 76]: a9fa2b538f6fdc91 +Block 0029 [ 77]: 627e222380b163a6 +Block 0029 [ 78]: 750e4474b3fedbc4 +Block 0029 [ 79]: fd8f06d128d7122d +Block 0029 [ 80]: dcca40c3aad30d42 +Block 0029 [ 81]: c9e560e59aff9e68 +Block 0029 [ 82]: af44daa4c21961fd +Block 0029 [ 83]: 68d956313ca4ee2a +Block 0029 [ 84]: 559f4802f58cab76 +Block 0029 [ 85]: de4b232ebdb885e9 +Block 0029 [ 86]: da18676f9822e90e +Block 0029 [ 87]: c7faa08eac54f0e9 +Block 0029 [ 88]: 7bbee29f3ae924d6 +Block 0029 [ 89]: b31156de74c31bdd +Block 0029 [ 90]: dd612ef379062a16 +Block 0029 [ 91]: b9a6fa7267d37107 +Block 0029 [ 92]: 978f2e1b5d57ef40 +Block 0029 [ 93]: 1257fa63203fa38c +Block 0029 [ 94]: b45bff452b049baf +Block 0029 [ 95]: 2b052d00e1cfdbff +Block 0029 [ 96]: 10a504192a1ca782 +Block 0029 [ 97]: 422b6d5a607e0f53 +Block 0029 [ 98]: 994b4ab3f3455574 +Block 0029 [ 99]: f404410879ee0682 +Block 0029 [100]: d24490a97ed582df +Block 0029 [101]: bf58aa9a14b30fb6 +Block 0029 [102]: ab05a7e1e0869b08 +Block 0029 [103]: 7438c7a055aabd68 +Block 0029 [104]: e6b4f489e314de4a +Block 0029 [105]: e367879a4a2ab4e2 +Block 0029 [106]: 932b68f955ae8e57 +Block 0029 [107]: 9349bc1c55f6f161 +Block 0029 [108]: 9c06b3701e4698ba +Block 0029 [109]: 380d6750f198b3a8 +Block 0029 [110]: 5c9f51e2bb2a361e +Block 0029 [111]: f01e94b44e75a07f +Block 0029 [112]: 51c80affa2375a90 +Block 0029 [113]: 7b759d95208f711c +Block 0029 [114]: a77b52fcc15720c0 +Block 0029 [115]: d30091a259eb7f97 +Block 0029 [116]: 559a223d0ac376f1 +Block 0029 [117]: 7f6859520b5d60ff +Block 0029 [118]: 3134e71b8672b420 +Block 0029 [119]: f36a26683f6c70f1 +Block 0029 [120]: 8e884ac595a80e59 +Block 0029 [121]: f1bd754af2d86f17 +Block 0029 [122]: 2dbe0b4c1021e2c6 +Block 0029 [123]: bcf728a6ed7761e2 +Block 0029 [124]: f5848563661b7e5f +Block 0029 [125]: 92bb5c63faae7980 +Block 0029 [126]: 5085c2ab6ec27a8d +Block 0029 [127]: d149a43c8cf72c8e +Block 0030 [ 0]: f7b3915b5d795911 +Block 0030 [ 1]: 6d4650cabf59a5cd +Block 0030 [ 2]: 029120b97e43b2d5 +Block 0030 [ 3]: e786cadd86d3dd06 +Block 0030 [ 4]: f6950a4bcd2ab3de +Block 0030 [ 5]: a6dbc2bc0254abdc +Block 0030 [ 6]: b00616f4dd9e6f91 +Block 0030 [ 7]: ddbdcf163e532e9d +Block 0030 [ 8]: eef8ba582ed02591 +Block 0030 [ 9]: 9ae7f79060ab2642 +Block 0030 [ 10]: 7781023d613e84b0 +Block 0030 [ 11]: 9950b8da56ed918a +Block 0030 [ 12]: 14327600d58edc95 +Block 0030 [ 13]: 25eefe4b4e9dca67 +Block 0030 [ 14]: 7c1e048e6ad65e96 +Block 0030 [ 15]: 4355b2bf89b78bde +Block 0030 [ 16]: 902b3d09bbc68c14 +Block 0030 [ 17]: 3fbeea70676782db +Block 0030 [ 18]: bc9b363de9aab773 +Block 0030 [ 19]: 6f636ac7a5600379 +Block 0030 [ 20]: 07d1d0f408cbb928 +Block 0030 [ 21]: 2cf99690cd52a6c4 +Block 0030 [ 22]: ed547993fa52bf98 +Block 0030 [ 23]: f2a63153b4adf41d +Block 0030 [ 24]: 5185c3b0c39c3b2f +Block 0030 [ 25]: a0a83717bfed6aee +Block 0030 [ 26]: 8cb03a53f0475da6 +Block 0030 [ 27]: 80dae49c5af616ed +Block 0030 [ 28]: 4b3402af281e060b +Block 0030 [ 29]: a94d8af4e395da7a +Block 0030 [ 30]: 11deecee4671f9ad +Block 0030 [ 31]: 365a38641405b0ba +Block 0030 [ 32]: a5102f86395d3699 +Block 0030 [ 33]: 461c09efa6e93ef1 +Block 0030 [ 34]: e45d8eede2db61d3 +Block 0030 [ 35]: e2b1c9e863fb2219 +Block 0030 [ 36]: 742d101cca54f303 +Block 0030 [ 37]: 100668962e6d6721 +Block 0030 [ 38]: 7fdb9ee7c8e721bb +Block 0030 [ 39]: 4f628199abab6233 +Block 0030 [ 40]: e174091ad6b99767 +Block 0030 [ 41]: 7abd35fcbb0b48f7 +Block 0030 [ 42]: af92e9ef5cd4585c +Block 0030 [ 43]: 26d4a48f93f87bc3 +Block 0030 [ 44]: 1e66402195c79874 +Block 0030 [ 45]: 558b6146fe4ed7cf +Block 0030 [ 46]: 1ff7e9f8c9241ab0 +Block 0030 [ 47]: bd94bee9062f44b3 +Block 0030 [ 48]: 93468af3821a9124 +Block 0030 [ 49]: 77be11517873c6da +Block 0030 [ 50]: ebf6a732f56ee38d +Block 0030 [ 51]: 8ab2665e5f16ce08 +Block 0030 [ 52]: 9e0c5672a77d425a +Block 0030 [ 53]: ccac47c85570221b +Block 0030 [ 54]: ba072ec00b35f6e1 +Block 0030 [ 55]: e2a9b77a273ed38e +Block 0030 [ 56]: 01e6d7f004980390 +Block 0030 [ 57]: 94aeef81a472125b +Block 0030 [ 58]: e623ce55ea9d2032 +Block 0030 [ 59]: 511db694687283ca +Block 0030 [ 60]: 6042414f19f4e2d9 +Block 0030 [ 61]: 622142095d269bf8 +Block 0030 [ 62]: ea39bdbd152c17e2 +Block 0030 [ 63]: ee70e17e9b9cd618 +Block 0030 [ 64]: 819eacf187136971 +Block 0030 [ 65]: abdd3aea4a6fc239 +Block 0030 [ 66]: fdbc3148fbc4b4a2 +Block 0030 [ 67]: aa5fa1241d9bcd8b +Block 0030 [ 68]: 8c74b7bb21e39c8e +Block 0030 [ 69]: 9b41e6764ef9c3b5 +Block 0030 [ 70]: d6df0e067e697f53 +Block 0030 [ 71]: 21def006cbc46fd3 +Block 0030 [ 72]: 42001961e18394fc +Block 0030 [ 73]: 78f9eb324a136de0 +Block 0030 [ 74]: 07659bd985720b63 +Block 0030 [ 75]: 5b3090c256c8624e +Block 0030 [ 76]: f8e77a5f9188017a +Block 0030 [ 77]: dde950f5c8aebd6c +Block 0030 [ 78]: 9ec2bd7d0dd13bd4 +Block 0030 [ 79]: f055ecc5524dec99 +Block 0030 [ 80]: 454c290ecf753728 +Block 0030 [ 81]: f1077cae3c387789 +Block 0030 [ 82]: e58f4e8e70ea5d33 +Block 0030 [ 83]: a9cf7b5b92cdc5c5 +Block 0030 [ 84]: abbe97dc3a615361 +Block 0030 [ 85]: 101c5e27366532d6 +Block 0030 [ 86]: 2a5b85b9cc569c7f +Block 0030 [ 87]: d5415ec260957678 +Block 0030 [ 88]: 6f148b5e1ee726ab +Block 0030 [ 89]: 3e83ac5b68c27c1e +Block 0030 [ 90]: caf9feedae1d27fd +Block 0030 [ 91]: f386d285ebd0f0d7 +Block 0030 [ 92]: 931684e917211689 +Block 0030 [ 93]: 0dd6cfb9b9d794a9 +Block 0030 [ 94]: edf6589e6eaaffef +Block 0030 [ 95]: a6778256939a1e88 +Block 0030 [ 96]: 7b4e279e4456a902 +Block 0030 [ 97]: e86fb8cf00b9c11c +Block 0030 [ 98]: 3abe1cb80e77dbc7 +Block 0030 [ 99]: 804a5a863239744b +Block 0030 [100]: 0ff09f689b9155cf +Block 0030 [101]: 7e35cd3b02dce640 +Block 0030 [102]: 2bacf335b1976e89 +Block 0030 [103]: 8233ef17131bcce6 +Block 0030 [104]: aaa2ec0b9d1fa066 +Block 0030 [105]: ec9a0aa1be68200d +Block 0030 [106]: 90716606866689c6 +Block 0030 [107]: 4d76da6c80d13d62 +Block 0030 [108]: f8a464f45e6f2003 +Block 0030 [109]: f5b00f8b927fd15f +Block 0030 [110]: 3304bcbc42a900be +Block 0030 [111]: a097ee36d01a0e12 +Block 0030 [112]: 85759ff3b8dab8a2 +Block 0030 [113]: d0d2dd58bd000a59 +Block 0030 [114]: bdd16ffb771df25c +Block 0030 [115]: 3b7f17d65e21bcbc +Block 0030 [116]: a8db992d9372a410 +Block 0030 [117]: cc57b4adaa4c9451 +Block 0030 [118]: 45075ac086aa5d4a +Block 0030 [119]: 597367349e9a2e79 +Block 0030 [120]: 2696d9e2cddad3f6 +Block 0030 [121]: aa76a82770ea0cd7 +Block 0030 [122]: 22b00c94404e8392 +Block 0030 [123]: f1e2d0a68f50b3c5 +Block 0030 [124]: 47fc2760188717f2 +Block 0030 [125]: eea23f3a62cbc15e +Block 0030 [126]: 9777733407a94e0b +Block 0030 [127]: 10e2bcf209ac3c93 +Block 0031 [ 0]: ba2551a378c910e2 +Block 0031 [ 1]: a2a4b5ae9f029037 +Block 0031 [ 2]: fbcb00039788e99c +Block 0031 [ 3]: 3d51678e868d16f2 +Block 0031 [ 4]: eccd26287b0b4b8c +Block 0031 [ 5]: d125b4a30ae07da8 +Block 0031 [ 6]: bdc4f0f2711802cc +Block 0031 [ 7]: ec04266df056401e +Block 0031 [ 8]: b676b85760e7e3aa +Block 0031 [ 9]: 34d7afd67018978d +Block 0031 [ 10]: 72f33357e0a3d0d5 +Block 0031 [ 11]: 5953e85b40b1db60 +Block 0031 [ 12]: 9f60e209dcffd146 +Block 0031 [ 13]: ebf4ae0739a7190c +Block 0031 [ 14]: e786bde349ffa078 +Block 0031 [ 15]: 45f2e51c23815e96 +Block 0031 [ 16]: 6db7c74b5c15185d +Block 0031 [ 17]: 64c6cfba2c5c8db0 +Block 0031 [ 18]: b3825f9409265373 +Block 0031 [ 19]: dfe0cbda0725f952 +Block 0031 [ 20]: fd0c2b34aeb78b75 +Block 0031 [ 21]: ce8a795131a4905d +Block 0031 [ 22]: b05f59cbde1b730c +Block 0031 [ 23]: bc9f44070df95cad +Block 0031 [ 24]: 8b04c461747caca8 +Block 0031 [ 25]: 24ab937d9e282f53 +Block 0031 [ 26]: b73a19bef82cb8a3 +Block 0031 [ 27]: 9685f40b24ca7f3b +Block 0031 [ 28]: cdca3329cc0cd294 +Block 0031 [ 29]: d2bfcd5eba17fd63 +Block 0031 [ 30]: cb91a04e00308585 +Block 0031 [ 31]: b4d1cdfe27f9f1b9 +Block 0031 [ 32]: 3a179be974a2a00f +Block 0031 [ 33]: 9adf724e4a740c28 +Block 0031 [ 34]: 08ee5f4f7d8b7a4d +Block 0031 [ 35]: 5798d8357833307a +Block 0031 [ 36]: 1c10594518a0094e +Block 0031 [ 37]: d6bf9b976f3007b7 +Block 0031 [ 38]: c971f67f6f5f69d8 +Block 0031 [ 39]: f71ef932e83d37c6 +Block 0031 [ 40]: ed96d8d9ae4aa39a +Block 0031 [ 41]: e2b9b38b144f690b +Block 0031 [ 42]: cadf4da1e346adb8 +Block 0031 [ 43]: 9df212ccd4768f96 +Block 0031 [ 44]: e0beb6841adf50bb +Block 0031 [ 45]: f568bce2d32ac0ff +Block 0031 [ 46]: 094cba4a582410b1 +Block 0031 [ 47]: 0bc73e23027ae171 +Block 0031 [ 48]: df30cb7f6c304933 +Block 0031 [ 49]: e5c9de323c73aeaa +Block 0031 [ 50]: 7309a5a4d46d2400 +Block 0031 [ 51]: 87577abd3a5847f6 +Block 0031 [ 52]: f34e46c0adbc27cc +Block 0031 [ 53]: 8fbc9c9ecef4712c +Block 0031 [ 54]: bb236365dab5f0f9 +Block 0031 [ 55]: e883770727b59df2 +Block 0031 [ 56]: 24a2400329decffe +Block 0031 [ 57]: 72ed72838f62bd8b +Block 0031 [ 58]: 2ff20a50b9edaf02 +Block 0031 [ 59]: c49a571662434a4c +Block 0031 [ 60]: 7c9ad60d62c4b1bf +Block 0031 [ 61]: 51875a75e552ada6 +Block 0031 [ 62]: 3a32f8ab24e7c732 +Block 0031 [ 63]: c340f6a12b945d83 +Block 0031 [ 64]: f3504c15c9f162f3 +Block 0031 [ 65]: d9daa82ba3ba8977 +Block 0031 [ 66]: 54dba94ce2ec870d +Block 0031 [ 67]: 68331ed60a1d5037 +Block 0031 [ 68]: 3a0a89f98e28d0ed +Block 0031 [ 69]: d11a497c98dd7363 +Block 0031 [ 70]: 4fb9ba15f43a8737 +Block 0031 [ 71]: fab603bffcad233c +Block 0031 [ 72]: 24cdf04cc2b5eead +Block 0031 [ 73]: e8b572d365f625c5 +Block 0031 [ 74]: 257ec3762e4f6da8 +Block 0031 [ 75]: b81b255403c274fe +Block 0031 [ 76]: 926ff7a24d12bae5 +Block 0031 [ 77]: 2cd251efd351ffde +Block 0031 [ 78]: c31eef31e805f738 +Block 0031 [ 79]: dc62d5543b95daab +Block 0031 [ 80]: bd9e0bfe62400899 +Block 0031 [ 81]: a1cc9f496b9c829c +Block 0031 [ 82]: b2043c89cf626b77 +Block 0031 [ 83]: f64141cb97fee59a +Block 0031 [ 84]: dd1df4f4706c011f +Block 0031 [ 85]: 16df9a3054c8c96f +Block 0031 [ 86]: 3a63828fe124a3fe +Block 0031 [ 87]: c1452b04bdd1c318 +Block 0031 [ 88]: e20e6c50c7dd975a +Block 0031 [ 89]: 39c1a21562c5b7f3 +Block 0031 [ 90]: e6843aefccf4dfbc +Block 0031 [ 91]: 1aa4dfa03bc5a0e1 +Block 0031 [ 92]: 8922b48b6a4d7d7f +Block 0031 [ 93]: 9e574f8825317718 +Block 0031 [ 94]: dbcb8c6c40d31bda +Block 0031 [ 95]: 909c4929f0d98608 +Block 0031 [ 96]: f42329ae93383145 +Block 0031 [ 97]: 4677e44aa39abf60 +Block 0031 [ 98]: 9c9ffdbb0d6b608f +Block 0031 [ 99]: 108a41fe19860021 +Block 0031 [100]: 1a9bfb05d9e8ec88 +Block 0031 [101]: 1c4ad68f5d425047 +Block 0031 [102]: e7b1051a96ec60dd +Block 0031 [103]: fda74634f0acc4cf +Block 0031 [104]: fe56b2bcd5bdf3e7 +Block 0031 [105]: 5a1e699aecbc292d +Block 0031 [106]: bcceb2f10ab70062 +Block 0031 [107]: 2a800d4cbc728faa +Block 0031 [108]: c588289811f8e84a +Block 0031 [109]: ec40fab8651154f3 +Block 0031 [110]: 16b0936827dff2f4 +Block 0031 [111]: 26c7e63292ff15db +Block 0031 [112]: 93e056413e2e0b56 +Block 0031 [113]: 200d76516fd463c6 +Block 0031 [114]: 101af0e2b9f88293 +Block 0031 [115]: 48427c1c972109bd +Block 0031 [116]: 0c0c3a0ea1e847aa +Block 0031 [117]: d045ad28fceda383 +Block 0031 [118]: 54418ca0530783a4 +Block 0031 [119]: 11bcd435d2dcea04 +Block 0031 [120]: 0e7c42682b68b097 +Block 0031 [121]: 8a597b4d94ebef39 +Block 0031 [122]: e3cf70f8cc329f05 +Block 0031 [123]: a60a793d19a77883 +Block 0031 [124]: d723359b485f509b +Block 0031 [125]: cb78824f42375111 +Block 0031 [126]: 35bc8cc6e83b1875 +Block 0031 [127]: 0b012846a40f346a +Tag: 0d 64 0d f5 8d 78 76 6c 08 c0 37 a3 4a 8b 53 c9 d0 1e f0 45 2d 75 b6 5e b5 25 20 e9 6b 01 e6 59 diff --git a/deps/phc-winner-argon2-20190702/kats/argon2id.shasum b/deps/phc-winner-argon2-20190702/kats/argon2id.shasum new file mode 100644 index 000000000..54755af41 --- /dev/null +++ b/deps/phc-winner-argon2-20190702/kats/argon2id.shasum @@ -0,0 +1 @@ +ba05643e504fc5778dda99e2d9f42ebe7d22ebb3923cc719fd591b1b14a8d28d argon2id diff --git a/deps/phc-winner-argon2-20190702/kats/argon2id_v16 b/deps/phc-winner-argon2-20190702/kats/argon2id_v16 new file mode 100644 index 000000000..05ea2b315 --- /dev/null +++ b/deps/phc-winner-argon2-20190702/kats/argon2id_v16 @@ -0,0 +1,12304 @@ +======================================= +Argon2id version number 16 +======================================= +Memory: 32 KiB, Iterations: 3, Parallelism: 4 lanes, Tag length: 32 bytes +Password[32]: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 +Salt[16]: 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 +Secret[8]: 03 03 03 03 03 03 03 03 +Associated data[12]: 04 04 04 04 04 04 04 04 04 04 04 04 +Pre-hashing digest: 70 65 ab 9c 82 b5 f0 e8 71 28 c7 84 7a 02 1d 1e 59 aa 16 66 6f c8 b4 ef ac a3 86 3f bf d6 5e 0e 8b a6 f6 09 eb bc 9b 60 e2 78 22 c8 24 b7 50 6f b9 f9 5b e9 0e e5 84 2a ac 6e d6 b7 da 67 30 44 + + After pass 0: +Block 0000 [ 0]: b7bb842644fb909e +Block 0000 [ 1]: 92e351e160803c45 +Block 0000 [ 2]: a9c24b300afd7b10 +Block 0000 [ 3]: 182cf4233ee44cab +Block 0000 [ 4]: 7a683cbc2906379b +Block 0000 [ 5]: 137aafb620c6c117 +Block 0000 [ 6]: dd9b43b0486b7c7d +Block 0000 [ 7]: 92e2f6c74a74a3e1 +Block 0000 [ 8]: aff35a4302c3fa3b +Block 0000 [ 9]: d76b047857f6f390 +Block 0000 [ 10]: 564f0363488ee83d +Block 0000 [ 11]: ec358c2dfd0bd18a +Block 0000 [ 12]: 42257160ad69eb83 +Block 0000 [ 13]: 147a568114a9c596 +Block 0000 [ 14]: d5db25b5740efc84 +Block 0000 [ 15]: ab0eb206883645d3 +Block 0000 [ 16]: 6e64467db82d4fb5 +Block 0000 [ 17]: 651ed1e53f297dc8 +Block 0000 [ 18]: 9ccbad51593abaf5 +Block 0000 [ 19]: 01b5546e1177ee58 +Block 0000 [ 20]: 3d26eaa9524ea4cd +Block 0000 [ 21]: a722e88f9651424c +Block 0000 [ 22]: be078be7e13a8978 +Block 0000 [ 23]: 23be5ef0c66109a4 +Block 0000 [ 24]: eec08b3431a67aac +Block 0000 [ 25]: 20b7e59878714c02 +Block 0000 [ 26]: 7b508a53c69a8118 +Block 0000 [ 27]: f2dd15049b78f666 +Block 0000 [ 28]: 5ab1d2113edc5ccb +Block 0000 [ 29]: 6e7aeeabf3241f19 +Block 0000 [ 30]: 64d84116592594e5 +Block 0000 [ 31]: 44cd928f35735d7b +Block 0000 [ 32]: 80c1c80000870823 +Block 0000 [ 33]: 86971eb2fd4f3ea1 +Block 0000 [ 34]: ebe240672e818b64 +Block 0000 [ 35]: cc50a5172a798ec1 +Block 0000 [ 36]: e214795d6bdfae01 +Block 0000 [ 37]: 34dbbd4f0ce743bf +Block 0000 [ 38]: 5f6d7fc0d14a42ee +Block 0000 [ 39]: 6c27bde0a4ad06fe +Block 0000 [ 40]: a225c3d053439aaf +Block 0000 [ 41]: 0611f32af47fd4ce +Block 0000 [ 42]: d36dd06bd1c0e42a +Block 0000 [ 43]: 53e31d06d89c4a89 +Block 0000 [ 44]: 4277658b3a5f2d44 +Block 0000 [ 45]: 5fa68495fa98f654 +Block 0000 [ 46]: 8cd4c77eb8f00cbd +Block 0000 [ 47]: 4e27f32130c34f99 +Block 0000 [ 48]: 4ffe69553622b576 +Block 0000 [ 49]: 0d3d7cfe462e2320 +Block 0000 [ 50]: b49324bce6b5ad1d +Block 0000 [ 51]: 260756703f023635 +Block 0000 [ 52]: 075d11855cd036ee +Block 0000 [ 53]: 091d19705c2756c7 +Block 0000 [ 54]: a19671b274bba372 +Block 0000 [ 55]: fc31225731e966d1 +Block 0000 [ 56]: 0a815245c504bc91 +Block 0000 [ 57]: 28f97817e690971c +Block 0000 [ 58]: 1f0ec3c0944cbfb8 +Block 0000 [ 59]: c962eee584d3c73b +Block 0000 [ 60]: 67f9d5c835378007 +Block 0000 [ 61]: 009b9cb5bea18286 +Block 0000 [ 62]: 32030ee639fbc966 +Block 0000 [ 63]: 97e2f25a2a1f20d2 +Block 0000 [ 64]: 6f1d7029455bcd55 +Block 0000 [ 65]: fd9a2926cf439cc5 +Block 0000 [ 66]: d1dbc75a7185af29 +Block 0000 [ 67]: 7fa8a98ec6a29827 +Block 0000 [ 68]: a3866a840b3965a4 +Block 0000 [ 69]: 29fca433e0e6ef44 +Block 0000 [ 70]: a593ade0db8f7ec9 +Block 0000 [ 71]: 2adaac3102271ace +Block 0000 [ 72]: fce7ff27e5e58473 +Block 0000 [ 73]: bf8142dd4ecbcb09 +Block 0000 [ 74]: fedc7c9f228859f6 +Block 0000 [ 75]: 0aabb19220a4f3ad +Block 0000 [ 76]: 22fc0ef92d52ce3c +Block 0000 [ 77]: 2f6f3cbca11dd133 +Block 0000 [ 78]: dbeab62bcbdcdadd +Block 0000 [ 79]: 3a3b61f68b3ce981 +Block 0000 [ 80]: 8d282775d4af2f1d +Block 0000 [ 81]: e059e025f4bb11b6 +Block 0000 [ 82]: b459e07a4d1332cf +Block 0000 [ 83]: ff670c951d4088ef +Block 0000 [ 84]: 5f02a137760cd098 +Block 0000 [ 85]: 028d44dfbfcbf8d5 +Block 0000 [ 86]: 87c733e1437000d9 +Block 0000 [ 87]: bd10e034a941e140 +Block 0000 [ 88]: d6720d6b9fc190f5 +Block 0000 [ 89]: acc2a8fba56df010 +Block 0000 [ 90]: a4d4ed3a2e2c9756 +Block 0000 [ 91]: 61c59c4afe1108e8 +Block 0000 [ 92]: 835bded44ae46619 +Block 0000 [ 93]: 7604a9417fbcb100 +Block 0000 [ 94]: 7b6b82b2b4d5bd03 +Block 0000 [ 95]: d5d332c71a0796a4 +Block 0000 [ 96]: 6ea1beba2fc89505 +Block 0000 [ 97]: bc9a6d44b6fb35d5 +Block 0000 [ 98]: ef5f34e62a190c89 +Block 0000 [ 99]: 9225f838b53a9ff5 +Block 0000 [100]: 32cf867e4da92862 +Block 0000 [101]: 2d44b91e42b6f427 +Block 0000 [102]: b440105f96b5aa28 +Block 0000 [103]: 6dc7ad77ea4436d8 +Block 0000 [104]: 66b875b7fe6a9311 +Block 0000 [105]: 9e2fab0c24b0d64f +Block 0000 [106]: 0b1dd725737b7f3b +Block 0000 [107]: 94ef03eb08cc55ef +Block 0000 [108]: 1ed223c9a1336e80 +Block 0000 [109]: 2cf999095e0d6221 +Block 0000 [110]: 39013cd6edf14711 +Block 0000 [111]: 904707a0a83add60 +Block 0000 [112]: e7033770da7cc6b9 +Block 0000 [113]: fb8b1159e1f3f8a1 +Block 0000 [114]: 92193aa808ad5cce +Block 0000 [115]: 867817b80eecfae7 +Block 0000 [116]: c5e66800c996653e +Block 0000 [117]: 58af09ad292272a7 +Block 0000 [118]: 04a55bd2fbc01564 +Block 0000 [119]: a311c88b41d523a9 +Block 0000 [120]: 2b9a9aff6bf7709d +Block 0000 [121]: 31e30127149627d8 +Block 0000 [122]: 5740a54a7b639f73 +Block 0000 [123]: 9703586c49fb0606 +Block 0000 [124]: 70390e67afe1b8dc +Block 0000 [125]: 0f325c6d3360d2f2 +Block 0000 [126]: e6a8d366efa0e311 +Block 0000 [127]: 991d1c2356575c44 +Block 0001 [ 0]: 4989449a68e198d1 +Block 0001 [ 1]: aac7c71d1ea9fb8a +Block 0001 [ 2]: bffe61b60a3415e7 +Block 0001 [ 3]: 22ace2760745f322 +Block 0001 [ 4]: 98e9bdf579ce947d +Block 0001 [ 5]: 579ac1aa9816b6b7 +Block 0001 [ 6]: facaffddebb6af72 +Block 0001 [ 7]: 32e2f6d192fb854c +Block 0001 [ 8]: af32a447f0be2e29 +Block 0001 [ 9]: a1814c09ff4f0884 +Block 0001 [ 10]: f8e4fe08bf29e1cb +Block 0001 [ 11]: 031661363b5d1c11 +Block 0001 [ 12]: 30ffeecd88ae1eba +Block 0001 [ 13]: bdf0af5a211ac806 +Block 0001 [ 14]: 768dc6f50b127a9f +Block 0001 [ 15]: 542257ab5e538f55 +Block 0001 [ 16]: 6732a2223c18f7fa +Block 0001 [ 17]: 55a9d185f27f23dc +Block 0001 [ 18]: 7183c9cd634bba75 +Block 0001 [ 19]: 8a19eea90e714ab9 +Block 0001 [ 20]: ae1bb8c05dd6f11a +Block 0001 [ 21]: 5fa3d9764c1ddaec +Block 0001 [ 22]: 6e6e2e5aab3ccf55 +Block 0001 [ 23]: cb837d78aa562983 +Block 0001 [ 24]: a04bb4ec37dc3d98 +Block 0001 [ 25]: cc1aee40aaeca6f3 +Block 0001 [ 26]: 894e1a07105ae34d +Block 0001 [ 27]: 095f5f736684f22e +Block 0001 [ 28]: b61b098dec5b1bcb +Block 0001 [ 29]: 2f6f0a7aac3e7d7d +Block 0001 [ 30]: 7cca77be88fb9ac8 +Block 0001 [ 31]: 4ed7ac1f943ba626 +Block 0001 [ 32]: 99b65c01eff31eae +Block 0001 [ 33]: b6318dcbde5ff590 +Block 0001 [ 34]: 8b796acde72309e5 +Block 0001 [ 35]: 499cf47baeadf720 +Block 0001 [ 36]: a32218dbd7d5adcc +Block 0001 [ 37]: 7949d40904da59ce +Block 0001 [ 38]: 09661301016e59ab +Block 0001 [ 39]: 70f26a07ffdb712e +Block 0001 [ 40]: e6c82c6406165b80 +Block 0001 [ 41]: 814e816ac9f9a2b4 +Block 0001 [ 42]: 496d86e303148ed4 +Block 0001 [ 43]: d1e4bbdbfa7d3a5e +Block 0001 [ 44]: 47b20d59c80de303 +Block 0001 [ 45]: cedbb73656945872 +Block 0001 [ 46]: 51008402396799b4 +Block 0001 [ 47]: c6b40630f55c127d +Block 0001 [ 48]: f5c33a25f18f5414 +Block 0001 [ 49]: 9c5e5cbcea9ea36e +Block 0001 [ 50]: 91b8dde2229043c6 +Block 0001 [ 51]: 09a3758ac8c98c10 +Block 0001 [ 52]: cb01be64d49c0ae9 +Block 0001 [ 53]: 35d0314dcd303998 +Block 0001 [ 54]: ebe659e766b0e53c +Block 0001 [ 55]: 7072ca398c13bc0f +Block 0001 [ 56]: 9bcafff66942d0b0 +Block 0001 [ 57]: 08817355cd91cbed +Block 0001 [ 58]: 899593aaf6da849c +Block 0001 [ 59]: 4030562b4eed8597 +Block 0001 [ 60]: 1484266e897f6914 +Block 0001 [ 61]: 16fd5ec0071832cf +Block 0001 [ 62]: 4ed582a91d56f940 +Block 0001 [ 63]: 36abb39293cf4bf0 +Block 0001 [ 64]: 5d7484473e5d8a04 +Block 0001 [ 65]: bbcf74106083eba3 +Block 0001 [ 66]: 560b914df76246d9 +Block 0001 [ 67]: af464c1fea2ca5ca +Block 0001 [ 68]: 216867dc0b9b7c90 +Block 0001 [ 69]: 96d67e8f0f693365 +Block 0001 [ 70]: 2739b94e414cdafc +Block 0001 [ 71]: c6b8dc19ead4928c +Block 0001 [ 72]: 7a9fe9cbc3f72e77 +Block 0001 [ 73]: c827d1f0528a71bd +Block 0001 [ 74]: fdc8d9d91b2e451e +Block 0001 [ 75]: 4766a4895d720dad +Block 0001 [ 76]: 906df9428d4b5a64 +Block 0001 [ 77]: 8f66bb2ff99ab56c +Block 0001 [ 78]: b24995e98def0601 +Block 0001 [ 79]: 23f1c3730a825da3 +Block 0001 [ 80]: 0e10371ce089e1a0 +Block 0001 [ 81]: 02819025568c858f +Block 0001 [ 82]: 83b7d7de6bc785f9 +Block 0001 [ 83]: 53dfc6036dc2e85f +Block 0001 [ 84]: 376a29d0e3df59fd +Block 0001 [ 85]: d2e0a4b79b2f8da0 +Block 0001 [ 86]: f628d7114cc3c0a2 +Block 0001 [ 87]: 488c816bb711e8c8 +Block 0001 [ 88]: ab068042a90b22e1 +Block 0001 [ 89]: cceebdeec3145b3d +Block 0001 [ 90]: e21c35cefde7c532 +Block 0001 [ 91]: e14779df3245336c +Block 0001 [ 92]: c03a6a5512faec48 +Block 0001 [ 93]: ba1076e5b5741fe7 +Block 0001 [ 94]: 0f9f26e7faba7e68 +Block 0001 [ 95]: 0e3aa048e46652ee +Block 0001 [ 96]: 2c2bfe5250cd7d69 +Block 0001 [ 97]: da2d90c03212c196 +Block 0001 [ 98]: ef221053390bf8f5 +Block 0001 [ 99]: bbee8da4bd00eb83 +Block 0001 [100]: 72988cedc04a7404 +Block 0001 [101]: bf9247326f867410 +Block 0001 [102]: 69bc52fe67110ad1 +Block 0001 [103]: 0a0139a6c2871ef2 +Block 0001 [104]: bf19681a29325ec9 +Block 0001 [105]: d2ed912dd05cf74d +Block 0001 [106]: 971c8d36dc2cb154 +Block 0001 [107]: 4b3b44a4b160b82c +Block 0001 [108]: 511a2c743551fb28 +Block 0001 [109]: 4b653e1a1439f5f6 +Block 0001 [110]: ce08f68913b83d02 +Block 0001 [111]: eb214b52ece94ac3 +Block 0001 [112]: 8e11f305344a105f +Block 0001 [113]: 39246a558de64f47 +Block 0001 [114]: 950849228224ea14 +Block 0001 [115]: 07bc212b67e22525 +Block 0001 [116]: b1e0e7c9963f2a2f +Block 0001 [117]: 116bc563c9208ff8 +Block 0001 [118]: 6565ad2b648c3a7c +Block 0001 [119]: 6f09b6666053c99b +Block 0001 [120]: 62f49638f17f3b56 +Block 0001 [121]: ec838fec0902fff1 +Block 0001 [122]: 46ed99217ecbaa8d +Block 0001 [123]: 9edebaa010e017da +Block 0001 [124]: 139a0bef21d0f3aa +Block 0001 [125]: 1ef7b4576ff34afe +Block 0001 [126]: 3a4464ac6e7f071a +Block 0001 [127]: 30171c4c18317182 +Block 0002 [ 0]: 24c21ae335819e56 +Block 0002 [ 1]: 601d30c94d2e382a +Block 0002 [ 2]: e5412235e4a6c8ec +Block 0002 [ 3]: dd62751df8e64482 +Block 0002 [ 4]: 10b820d4a82f6a30 +Block 0002 [ 5]: 7114921b2c7b4f68 +Block 0002 [ 6]: fd6d583479fe9e50 +Block 0002 [ 7]: 08dd2365f0ea39e5 +Block 0002 [ 8]: 0b47040470279f87 +Block 0002 [ 9]: 60c2e2004d640023 +Block 0002 [ 10]: a3f666b591d2d5cc +Block 0002 [ 11]: f599e8dae9cf4c17 +Block 0002 [ 12]: bb231e2ac9813744 +Block 0002 [ 13]: efa35e61e2d89b82 +Block 0002 [ 14]: 9f8b8c91cee90678 +Block 0002 [ 15]: 28830b6c98df40f4 +Block 0002 [ 16]: 77612a6d00de8081 +Block 0002 [ 17]: efe02ae6acb10b34 +Block 0002 [ 18]: 6b4f29bebacd7be1 +Block 0002 [ 19]: 158325aff1916099 +Block 0002 [ 20]: 56f939cf16094218 +Block 0002 [ 21]: 7a4f363b4a6b2b34 +Block 0002 [ 22]: f3549b12cf9766d7 +Block 0002 [ 23]: 47ff03692dd05813 +Block 0002 [ 24]: 67ed1e764a840d37 +Block 0002 [ 25]: c0246ce5119f7ddc +Block 0002 [ 26]: 368ce2d96d5aec4b +Block 0002 [ 27]: 1c54267ac4f601ba +Block 0002 [ 28]: a3f06cfd58dbb222 +Block 0002 [ 29]: 577e96a10fe791c7 +Block 0002 [ 30]: d2dcf043c789b0c6 +Block 0002 [ 31]: ccb46504b140cf69 +Block 0002 [ 32]: 299bbf17b285382f +Block 0002 [ 33]: bb0227b4333e65f6 +Block 0002 [ 34]: 0a70c61fdc8038bc +Block 0002 [ 35]: 76c1158a301e3f46 +Block 0002 [ 36]: 89dfb9dad24976c8 +Block 0002 [ 37]: b44434f360e7d14a +Block 0002 [ 38]: d770b3764a8feaa8 +Block 0002 [ 39]: 76f949e55d5a89cd +Block 0002 [ 40]: 1c36e36f410b1630 +Block 0002 [ 41]: f28727a81f389b82 +Block 0002 [ 42]: 910014a75422a2c8 +Block 0002 [ 43]: 707a170ed1cca0b8 +Block 0002 [ 44]: dc2a3f8429661e83 +Block 0002 [ 45]: 115acbc62e271ece +Block 0002 [ 46]: 8cf57a93bb3461df +Block 0002 [ 47]: ee2c1130ccdb726b +Block 0002 [ 48]: cb7ddc22591e441b +Block 0002 [ 49]: 474d91327a32a5cc +Block 0002 [ 50]: 7daed6758b6a410a +Block 0002 [ 51]: c53600dea10f0106 +Block 0002 [ 52]: c2c3f543492143f2 +Block 0002 [ 53]: 50dbd7c5f7c49d67 +Block 0002 [ 54]: 19e198b23b48f41a +Block 0002 [ 55]: 721a24a2f1a040af +Block 0002 [ 56]: 87a1f26f63415ae7 +Block 0002 [ 57]: 1fe92d42e285a0d0 +Block 0002 [ 58]: bdff0f31c7ac33ae +Block 0002 [ 59]: 34818607ca6bf098 +Block 0002 [ 60]: 246e9c6d966abab4 +Block 0002 [ 61]: 00df3f61d9d1c40e +Block 0002 [ 62]: dcdbf723ef8f59bb +Block 0002 [ 63]: 4ba7740f25cb55cf +Block 0002 [ 64]: 36979f0554bed212 +Block 0002 [ 65]: 68f80c30266ec1bf +Block 0002 [ 66]: 267c7fde426025be +Block 0002 [ 67]: ba8045963d719af1 +Block 0002 [ 68]: 38bbbccf8baaeb66 +Block 0002 [ 69]: 3065e858181b0fb8 +Block 0002 [ 70]: 6baa55f49cb0568d +Block 0002 [ 71]: 9ebcbac2f77f5358 +Block 0002 [ 72]: 077fcaab8f11c30b +Block 0002 [ 73]: c704229ec6fec90b +Block 0002 [ 74]: 55f41bb14942a8a0 +Block 0002 [ 75]: 897d3baedb5ed2b5 +Block 0002 [ 76]: 49f246b7168f9dc8 +Block 0002 [ 77]: 8c96ba1b9b4c41a2 +Block 0002 [ 78]: 41bdc5587984225c +Block 0002 [ 79]: 61e336c165a40f81 +Block 0002 [ 80]: bdea7a574e497f98 +Block 0002 [ 81]: 19f5f36af4648b25 +Block 0002 [ 82]: 8f6875a054a82387 +Block 0002 [ 83]: ed5168ce782b0640 +Block 0002 [ 84]: 45b8c6e6e2e76f7d +Block 0002 [ 85]: c1f52f9df2eca9c8 +Block 0002 [ 86]: 02267b3230f0aaab +Block 0002 [ 87]: c69417603e967088 +Block 0002 [ 88]: 99a511f031fa15d3 +Block 0002 [ 89]: 6db8d498977fc845 +Block 0002 [ 90]: ee30da815f04b60f +Block 0002 [ 91]: 1e084eb4933d7b77 +Block 0002 [ 92]: 293593e3c2716d5e +Block 0002 [ 93]: f8c1a970668fddfd +Block 0002 [ 94]: 3521b3d01777ed06 +Block 0002 [ 95]: f052856c2f8802b2 +Block 0002 [ 96]: 4f8f389ab16c382d +Block 0002 [ 97]: 562718613169889c +Block 0002 [ 98]: ffde08ea100c3153 +Block 0002 [ 99]: 611599a690a3277b +Block 0002 [100]: 552079197b4336f5 +Block 0002 [101]: da82d17e1de8c79c +Block 0002 [102]: 4115b237c53c1f83 +Block 0002 [103]: d708eb0e30b42883 +Block 0002 [104]: b0b18a3eea85d88e +Block 0002 [105]: 43ec3c16b2adc1c2 +Block 0002 [106]: 6de6378febe403ec +Block 0002 [107]: 555c763388342eb2 +Block 0002 [108]: 7a41c6af4cb6b129 +Block 0002 [109]: 8927fff2d7af49c3 +Block 0002 [110]: 047412244022377f +Block 0002 [111]: c009518d28032a28 +Block 0002 [112]: df79a603af8c3c94 +Block 0002 [113]: 1347dab66dadd37a +Block 0002 [114]: 5db0afec1448b60e +Block 0002 [115]: bf5528101823da52 +Block 0002 [116]: e12eae4521d48cdc +Block 0002 [117]: 34375ad9b2971a0c +Block 0002 [118]: f48f86a00ace3b40 +Block 0002 [119]: 370b5bfab63d4f28 +Block 0002 [120]: efce287ee0351954 +Block 0002 [121]: 044a9c406b2bb32b +Block 0002 [122]: ed4e010c9b545cd5 +Block 0002 [123]: 9b396320258b99c7 +Block 0002 [124]: e21cdcb067b0d15a +Block 0002 [125]: 30377005aba2b601 +Block 0002 [126]: fa5dc1b9e10ff4d8 +Block 0002 [127]: de315986d0882d3a +Block 0003 [ 0]: 3a621db3273f359a +Block 0003 [ 1]: 4047196c41f1524b +Block 0003 [ 2]: fa2688b40792a1f9 +Block 0003 [ 3]: 3154d37f7c22c796 +Block 0003 [ 4]: 45ca5d1e973b4a0a +Block 0003 [ 5]: 3d2ee4ccd078c494 +Block 0003 [ 6]: 582c73563edbc927 +Block 0003 [ 7]: 3cc861617fad4a2e +Block 0003 [ 8]: 3cdfd91759faf401 +Block 0003 [ 9]: e78963e4abc16439 +Block 0003 [ 10]: 62bd98693f37e328 +Block 0003 [ 11]: cb080db0922c5f84 +Block 0003 [ 12]: 53af8fec0501215a +Block 0003 [ 13]: 9c3880f8091d0f71 +Block 0003 [ 14]: c91b6905e177bb6d +Block 0003 [ 15]: c360a6d7a963824e +Block 0003 [ 16]: 3e0d3af059637a63 +Block 0003 [ 17]: 249895f95d98a0d4 +Block 0003 [ 18]: 348907f710637f06 +Block 0003 [ 19]: ed70cec52cb8c4c4 +Block 0003 [ 20]: 6b26125834bf9762 +Block 0003 [ 21]: c510d89c728f8e15 +Block 0003 [ 22]: 4fee6316b7220507 +Block 0003 [ 23]: 873169071c7554b2 +Block 0003 [ 24]: f0c6b431aea72a4e +Block 0003 [ 25]: 2d43d09e4bffa899 +Block 0003 [ 26]: 7e57d491232aa95b +Block 0003 [ 27]: 8ad078fecf493153 +Block 0003 [ 28]: 6044c0465cf0f980 +Block 0003 [ 29]: 8b593cf1a747c5a4 +Block 0003 [ 30]: ee73b6e055d1ef6e +Block 0003 [ 31]: 8e33bbd1d69b8fa2 +Block 0003 [ 32]: 8fc4730708924366 +Block 0003 [ 33]: 36ee3e79986b1ef9 +Block 0003 [ 34]: 4c230230865b00f0 +Block 0003 [ 35]: fb9cf11da328be01 +Block 0003 [ 36]: 61d1df1a2c5cc787 +Block 0003 [ 37]: 82a0892fe171649e +Block 0003 [ 38]: 2436e9c8cc05b23e +Block 0003 [ 39]: f5f386f91bd7ee43 +Block 0003 [ 40]: b9bb843e5edc7f18 +Block 0003 [ 41]: 746c6f332e610545 +Block 0003 [ 42]: 1417f4efb16df4dc +Block 0003 [ 43]: 3388a6155da804e4 +Block 0003 [ 44]: d15ea1b0c45a05e3 +Block 0003 [ 45]: 761b17ebf05a866d +Block 0003 [ 46]: 9eb91984c3894226 +Block 0003 [ 47]: d23e58b95ff8c101 +Block 0003 [ 48]: 0011ab7a454d971f +Block 0003 [ 49]: a8887ef7321ee7fd +Block 0003 [ 50]: 6840484cfa171c0e +Block 0003 [ 51]: 24a6a3a8e9bc9e74 +Block 0003 [ 52]: b4589a254e2ac698 +Block 0003 [ 53]: 60284a0ed564491b +Block 0003 [ 54]: 6bf793dac7365ff0 +Block 0003 [ 55]: 55a84bfa60e541e5 +Block 0003 [ 56]: fc4931e0181bb6bd +Block 0003 [ 57]: 80989348d3e35790 +Block 0003 [ 58]: 2360aff3fe62e608 +Block 0003 [ 59]: bef9c4109d0b6bd7 +Block 0003 [ 60]: 7cbfc6aaef0fe537 +Block 0003 [ 61]: 74d89e72401f06ba +Block 0003 [ 62]: 82724458b4f710ea +Block 0003 [ 63]: e6153debefc9115d +Block 0003 [ 64]: bb00e792996e8e34 +Block 0003 [ 65]: 000f4177bff067dd +Block 0003 [ 66]: 715a9c5f425b7e42 +Block 0003 [ 67]: cb03ec5a383cf32e +Block 0003 [ 68]: f95a8953f7c868df +Block 0003 [ 69]: 63380b9e43cc443b +Block 0003 [ 70]: 6221768cf16abbce +Block 0003 [ 71]: d5dd916210f3923c +Block 0003 [ 72]: 8656553bbae2f7ce +Block 0003 [ 73]: b8604a325957eca7 +Block 0003 [ 74]: 9a33dbdce26ac7b1 +Block 0003 [ 75]: b41660e1a955da10 +Block 0003 [ 76]: 6f0ade62f0f845f2 +Block 0003 [ 77]: 2386c997551e5c5d +Block 0003 [ 78]: c6438a3931843bb5 +Block 0003 [ 79]: 0085de6ae7761d5e +Block 0003 [ 80]: a78c57d5fb2e7a91 +Block 0003 [ 81]: 7b4978bb4bb67319 +Block 0003 [ 82]: 3e8ca77fae7674dd +Block 0003 [ 83]: b26cfd2ffc983aaf +Block 0003 [ 84]: 6484e38c994fbd3b +Block 0003 [ 85]: 605770b4251f184b +Block 0003 [ 86]: e57180c11d5c30be +Block 0003 [ 87]: 011f2cc3f5bbbd2e +Block 0003 [ 88]: a640d723650e4980 +Block 0003 [ 89]: 288cf3cc99b8dccb +Block 0003 [ 90]: 31cef0a30021cc02 +Block 0003 [ 91]: 798234c5e2b7b865 +Block 0003 [ 92]: ac978dae820ea3d2 +Block 0003 [ 93]: 3af8966c1a02e6e6 +Block 0003 [ 94]: 9ccacba3bb710f28 +Block 0003 [ 95]: 62cb957608e3675a +Block 0003 [ 96]: a6446ccd9f64cfaf +Block 0003 [ 97]: 678d6a43ec4a5dab +Block 0003 [ 98]: 11bbf8c5b3fec1a6 +Block 0003 [ 99]: d51b0480b7c23f63 +Block 0003 [100]: 248f7cf55bf3871b +Block 0003 [101]: d2b6d85f3ae823cd +Block 0003 [102]: c64d167b352c09d4 +Block 0003 [103]: 0d55701832cb81f9 +Block 0003 [104]: 7227e11818addfd4 +Block 0003 [105]: 3078f8d1789c36dd +Block 0003 [106]: ad6f540f4e7db26f +Block 0003 [107]: baae6f778b35844d +Block 0003 [108]: b3b72e41abb9bd23 +Block 0003 [109]: b71d94a62dff1edb +Block 0003 [110]: 7a7ff9eaa271ddd0 +Block 0003 [111]: f826f99201bef179 +Block 0003 [112]: f9b09d1af4b07f1d +Block 0003 [113]: caeb03e5651d778c +Block 0003 [114]: 61d2f77e5ae93537 +Block 0003 [115]: 50786f03f2ecb739 +Block 0003 [116]: d975d339277d68c4 +Block 0003 [117]: 20e243be79a74394 +Block 0003 [118]: 514b73cdf5af9ccb +Block 0003 [119]: 72afe6bf8cbcfe05 +Block 0003 [120]: 06cbfcd153da2144 +Block 0003 [121]: 2d8c338bca6ab827 +Block 0003 [122]: ded3d3e9e3570eff +Block 0003 [123]: 95c1b00841b97c6c +Block 0003 [124]: bba5191e9b0d02d1 +Block 0003 [125]: ba4cc2f9551a2a3b +Block 0003 [126]: 635acd7e64497561 +Block 0003 [127]: aa10e683c112f660 +Block 0004 [ 0]: ee25b842dd1028d0 +Block 0004 [ 1]: 2ed715595f506b40 +Block 0004 [ 2]: 947fac8e22ca7f24 +Block 0004 [ 3]: 09ab93ff09e5e62e +Block 0004 [ 4]: a14d8c61a2f55832 +Block 0004 [ 5]: ce88af1e27d4ca5f +Block 0004 [ 6]: 8e3f281228c34fcc +Block 0004 [ 7]: 4f2f6319e15de25a +Block 0004 [ 8]: 86d2f5b3ce0497e3 +Block 0004 [ 9]: 4721f61cb78a1095 +Block 0004 [ 10]: c30f671aaa85b620 +Block 0004 [ 11]: 95f215c9b0aae3ab +Block 0004 [ 12]: 432f59b01fc61738 +Block 0004 [ 13]: e823ad7b415f84e6 +Block 0004 [ 14]: 7d6a9539afd8ef81 +Block 0004 [ 15]: 1057b188ac56165e +Block 0004 [ 16]: 60ccf5b1bc26c7be +Block 0004 [ 17]: 4d5167cbea8b8396 +Block 0004 [ 18]: 22973aa3683a0f6d +Block 0004 [ 19]: a8174c08193c8958 +Block 0004 [ 20]: 86cf239cf1874206 +Block 0004 [ 21]: c3caa54bd46d745f +Block 0004 [ 22]: b4d09a1cce238f94 +Block 0004 [ 23]: 071d45abf0a9a213 +Block 0004 [ 24]: 30223c62e113cde1 +Block 0004 [ 25]: e189297945a1827b +Block 0004 [ 26]: 0f7aa0e721ac38ef +Block 0004 [ 27]: 988d5d24022c4815 +Block 0004 [ 28]: 37c3795c3f8b89ef +Block 0004 [ 29]: 5a04aeda9f3bb282 +Block 0004 [ 30]: 3fe3a1c2dc39757c +Block 0004 [ 31]: f6bc623989c520e7 +Block 0004 [ 32]: 75c7ecc00cdf5fa6 +Block 0004 [ 33]: 3eea4e42b17c6ca9 +Block 0004 [ 34]: e8f5859c23a09def +Block 0004 [ 35]: 3aa61eb3e0026c4c +Block 0004 [ 36]: bd28de51a7d8f724 +Block 0004 [ 37]: b033d2aa2f841ef5 +Block 0004 [ 38]: 3200146d502d3e9d +Block 0004 [ 39]: de45254e8a677f08 +Block 0004 [ 40]: 5166cbf9383d36ad +Block 0004 [ 41]: fc6d0d8ad27c2730 +Block 0004 [ 42]: f777750b38d200c7 +Block 0004 [ 43]: e36447ba9506c06a +Block 0004 [ 44]: c59c6174109c5d14 +Block 0004 [ 45]: 029d17478e2ac687 +Block 0004 [ 46]: 47e20f6875c23553 +Block 0004 [ 47]: 7d21abcc6ef487a7 +Block 0004 [ 48]: 1cc21cead2b0900d +Block 0004 [ 49]: 521067f187e0f84f +Block 0004 [ 50]: 12f4f40b0988bce9 +Block 0004 [ 51]: 93ada3888ff5d5be +Block 0004 [ 52]: 6b06ff16afa7880b +Block 0004 [ 53]: 7e25b21e917fe499 +Block 0004 [ 54]: 4723a49985b8bfd2 +Block 0004 [ 55]: b5af89f623fb6ef4 +Block 0004 [ 56]: 4c3cb4cc19ab2299 +Block 0004 [ 57]: 8c3343eb7237df51 +Block 0004 [ 58]: c73074b58962f9a1 +Block 0004 [ 59]: 2391b6786e026957 +Block 0004 [ 60]: b65e63b2a65058ad +Block 0004 [ 61]: 9ceb8f638fad4c04 +Block 0004 [ 62]: 440c10dc66a7d19b +Block 0004 [ 63]: 8869ce3907567f9d +Block 0004 [ 64]: ef88a87436c5471b +Block 0004 [ 65]: 17c0a7d91fe78c12 +Block 0004 [ 66]: 417925054fa70397 +Block 0004 [ 67]: 8227d9460cafec86 +Block 0004 [ 68]: e459824688b10895 +Block 0004 [ 69]: e1e7b4f26aedffd1 +Block 0004 [ 70]: 6a26857c2a751c4c +Block 0004 [ 71]: fa532c478e7109fb +Block 0004 [ 72]: eaa69731f00e3797 +Block 0004 [ 73]: ede32dada031de42 +Block 0004 [ 74]: 7e078ac0aa12e932 +Block 0004 [ 75]: 5ebd149479dd59d6 +Block 0004 [ 76]: b4abda1136d84a77 +Block 0004 [ 77]: 19309276689f520a +Block 0004 [ 78]: 1151e9ff304bd0c2 +Block 0004 [ 79]: 09013f55742b99e9 +Block 0004 [ 80]: 70ccb323acdc21f8 +Block 0004 [ 81]: 47e6e19c7f159c79 +Block 0004 [ 82]: 856125cbb7f1560a +Block 0004 [ 83]: 94d9e08696ce69bd +Block 0004 [ 84]: 3df82baf27432f08 +Block 0004 [ 85]: 040765d9c32066c7 +Block 0004 [ 86]: 6638d7601a10ad98 +Block 0004 [ 87]: 94806fe5c853291d +Block 0004 [ 88]: 29249caa73578203 +Block 0004 [ 89]: 33ded5cabacf4386 +Block 0004 [ 90]: a4541fbd8b572b8c +Block 0004 [ 91]: c0c35b42df4b4753 +Block 0004 [ 92]: bad2b200390209c0 +Block 0004 [ 93]: 02a30010cce3c7e6 +Block 0004 [ 94]: 6597c0199fab753b +Block 0004 [ 95]: e5a658e801d90560 +Block 0004 [ 96]: b6cf3d60fe336766 +Block 0004 [ 97]: 4c9d67ce99148e41 +Block 0004 [ 98]: 13c3de54535784be +Block 0004 [ 99]: b85504983a5b7eeb +Block 0004 [100]: 6fafec81d9c04432 +Block 0004 [101]: a98fecab58f016e9 +Block 0004 [102]: 5c02119bf6068de1 +Block 0004 [103]: 0a41f857c077ddf5 +Block 0004 [104]: 3d4616ba64b92389 +Block 0004 [105]: ecb0d2bbdf882091 +Block 0004 [106]: ba1839c9c25219b1 +Block 0004 [107]: 27f560c257eee4ac +Block 0004 [108]: 93419274e76aed92 +Block 0004 [109]: 22ebb8365e049b12 +Block 0004 [110]: 3cb9c4e2d09ce774 +Block 0004 [111]: 45d6d6270525382f +Block 0004 [112]: 45c94644cc18e44e +Block 0004 [113]: 4c0fa7900f09b1fb +Block 0004 [114]: 9625c4a32bad4cc6 +Block 0004 [115]: badc03a1437ac0b0 +Block 0004 [116]: ed0c7eff9275830b +Block 0004 [117]: 69df81fb157d1bcb +Block 0004 [118]: b8bf266ddade37ee +Block 0004 [119]: 7db1d92a4ad082c0 +Block 0004 [120]: cc023380f5dc9df6 +Block 0004 [121]: b882628f9e80fb8e +Block 0004 [122]: da2acdf9a6fceb5e +Block 0004 [123]: d94f7f3fd42195d8 +Block 0004 [124]: 220a0b123697729f +Block 0004 [125]: 341dfea1ad6775b6 +Block 0004 [126]: 8aa9b49d00a41903 +Block 0004 [127]: bf3069c13296c94d +Block 0005 [ 0]: 8391a22525ac3129 +Block 0005 [ 1]: 2182bd7744cc7dcd +Block 0005 [ 2]: f4ca6a851736d626 +Block 0005 [ 3]: 84dd65d9ab943166 +Block 0005 [ 4]: e8e94d6cad517204 +Block 0005 [ 5]: 47c6f8e3d4d65b1c +Block 0005 [ 6]: bcf41f0cd8b65235 +Block 0005 [ 7]: de9625fb97faf26e +Block 0005 [ 8]: 9fd27f84ef4d3f76 +Block 0005 [ 9]: 9b4a643a6ff1b646 +Block 0005 [ 10]: 16addf741451ddbc +Block 0005 [ 11]: f8d7025745a12b1d +Block 0005 [ 12]: 8f6d75b3b17b278d +Block 0005 [ 13]: a469173ba8a5a3a9 +Block 0005 [ 14]: 85cb66a59564b901 +Block 0005 [ 15]: db2396a9310fc6eb +Block 0005 [ 16]: 53f9ae5d6180de0c +Block 0005 [ 17]: 17cfe30a3b903a1b +Block 0005 [ 18]: bb7ee3aa20b8ecb1 +Block 0005 [ 19]: 9b195332c7aadcfb +Block 0005 [ 20]: 16ff8c53dd2b5a29 +Block 0005 [ 21]: 3960274b38939f87 +Block 0005 [ 22]: 0c8c0bdd86aec0f0 +Block 0005 [ 23]: 091dbf94b5caa021 +Block 0005 [ 24]: ea0513282b1c6255 +Block 0005 [ 25]: 09ac386212407947 +Block 0005 [ 26]: 49f2cae638f284bb +Block 0005 [ 27]: 952b85e4556639f9 +Block 0005 [ 28]: ead8b8898ad0008a +Block 0005 [ 29]: a417d718d505d3ef +Block 0005 [ 30]: c9c71e3b1bef1728 +Block 0005 [ 31]: 63ba210eaedb878f +Block 0005 [ 32]: dbb902a61a4a0d6f +Block 0005 [ 33]: 6b93ab239e25d3ad +Block 0005 [ 34]: b9129537cb026700 +Block 0005 [ 35]: bd91b9a32e77e588 +Block 0005 [ 36]: 02bc137c047026d8 +Block 0005 [ 37]: 5e45723770933ec3 +Block 0005 [ 38]: 62f2b3d63d5ee519 +Block 0005 [ 39]: 35ee95ac9c58ebb8 +Block 0005 [ 40]: ad5734706fca0a0e +Block 0005 [ 41]: b86bbbfc96117bec +Block 0005 [ 42]: 3bc87262733b7282 +Block 0005 [ 43]: 68ebc4cbeb9cec24 +Block 0005 [ 44]: 92ed87b13532d74f +Block 0005 [ 45]: 9a46327d7172032c +Block 0005 [ 46]: c7c96af35b519031 +Block 0005 [ 47]: af4f0c07f9b2189d +Block 0005 [ 48]: 62a0c50c5a81915c +Block 0005 [ 49]: c76619e60b2d6f57 +Block 0005 [ 50]: 8a408ebb2d8e6aa2 +Block 0005 [ 51]: 463dedfed695fb54 +Block 0005 [ 52]: 88ba683a691878c6 +Block 0005 [ 53]: fede06e5c3bba35d +Block 0005 [ 54]: 233bf8dd96537fcd +Block 0005 [ 55]: 206f746116d7f2fe +Block 0005 [ 56]: 5271fbcfcaaae79e +Block 0005 [ 57]: acd38e85d5866021 +Block 0005 [ 58]: f9288fc3bfac49e6 +Block 0005 [ 59]: 79152b6b2eba8650 +Block 0005 [ 60]: 59a68943df8275e3 +Block 0005 [ 61]: 353694a518fdc5f8 +Block 0005 [ 62]: f8f0c9633cdc7981 +Block 0005 [ 63]: fb863297e68449db +Block 0005 [ 64]: ed977fcc8d1753ee +Block 0005 [ 65]: 812a3620c5954450 +Block 0005 [ 66]: e0387dabb56ef298 +Block 0005 [ 67]: 8009724bfa5dc0a7 +Block 0005 [ 68]: eee72aba6a6981bd +Block 0005 [ 69]: d6c66556c7982a51 +Block 0005 [ 70]: 1dbeb7ef05b9af0a +Block 0005 [ 71]: 3ac6cb726b5c73a8 +Block 0005 [ 72]: 2fab5ab0cc5997cf +Block 0005 [ 73]: 01006d1c447bb1e4 +Block 0005 [ 74]: 9479fcd0179a3dda +Block 0005 [ 75]: e43035ac067168c9 +Block 0005 [ 76]: 0e85b3d737226573 +Block 0005 [ 77]: b837e5a0e5a53abd +Block 0005 [ 78]: fe771479539c1c89 +Block 0005 [ 79]: 4eddd82075211cf6 +Block 0005 [ 80]: 3c6bb423e7ae496e +Block 0005 [ 81]: 531fb5cf7a66ab9a +Block 0005 [ 82]: 7f0c1e54ce41f6a9 +Block 0005 [ 83]: e44c93d2903de35e +Block 0005 [ 84]: e283572bb36042c3 +Block 0005 [ 85]: 48e05314b53e3a1d +Block 0005 [ 86]: c70ae3facad90bd8 +Block 0005 [ 87]: f7eb9795516c8aea +Block 0005 [ 88]: a9d51ea53fb7924f +Block 0005 [ 89]: a57400f858ed1a7b +Block 0005 [ 90]: ae17e7e53c36bdfb +Block 0005 [ 91]: 2be1ebc515e4c8ac +Block 0005 [ 92]: c6a75341f60ffa74 +Block 0005 [ 93]: 7fc9ae81f5cc2d1e +Block 0005 [ 94]: a9649bda41f37a2e +Block 0005 [ 95]: 3064212b87faf4a0 +Block 0005 [ 96]: 36ed3a9ed060e28f +Block 0005 [ 97]: cc3270a31fe515ca +Block 0005 [ 98]: 007183ca10e9e347 +Block 0005 [ 99]: ebab95c5a38ca512 +Block 0005 [100]: 616f7791bf38526a +Block 0005 [101]: 09cd415bc99fe122 +Block 0005 [102]: 0d91db2b5019ab35 +Block 0005 [103]: 0af30e6c4d5df4fe +Block 0005 [104]: d70f046467e13eb1 +Block 0005 [105]: 400d8ffbaedafe7e +Block 0005 [106]: 1f1f784f3160475f +Block 0005 [107]: 06ab9a4525d06e64 +Block 0005 [108]: 94742662a6e3cf77 +Block 0005 [109]: fc8c036aae7ccdbc +Block 0005 [110]: b56943232f6f229f +Block 0005 [111]: 3097ca2857f1c581 +Block 0005 [112]: da13102ef8466c04 +Block 0005 [113]: 191606c8d1d9841b +Block 0005 [114]: da7eb6f5863dd3ec +Block 0005 [115]: 1c5b95b054389563 +Block 0005 [116]: 26e0c33221d98a92 +Block 0005 [117]: 89a4f59ce9c97e71 +Block 0005 [118]: b809de06baa73578 +Block 0005 [119]: 6928a344f6bdcb28 +Block 0005 [120]: f998ade4988f120a +Block 0005 [121]: 0a6a9628d3dc7d99 +Block 0005 [122]: db07326bfcb54303 +Block 0005 [123]: 90c6cc27b5a77e17 +Block 0005 [124]: a7681add7323eca3 +Block 0005 [125]: a51c7ba17966d7e5 +Block 0005 [126]: 14a6283d83fabc6d +Block 0005 [127]: 584b27da48ba5899 +Block 0006 [ 0]: 2a64800c5487eab2 +Block 0006 [ 1]: 0bbe7d78e8791b55 +Block 0006 [ 2]: e6a143d1ab8b7b33 +Block 0006 [ 3]: ce93fb3c45c7443e +Block 0006 [ 4]: 10bfc25e34411ee8 +Block 0006 [ 5]: 2d5786d8bf589d5d +Block 0006 [ 6]: 1f8aeedd5b310f90 +Block 0006 [ 7]: 9ddbae1650fd61cd +Block 0006 [ 8]: 2fcf25ecaa72b648 +Block 0006 [ 9]: 4605e3f83638bc92 +Block 0006 [ 10]: 63fc5a831158a3c8 +Block 0006 [ 11]: 9431f1ed7556ece6 +Block 0006 [ 12]: a90f7eaafbac597f +Block 0006 [ 13]: f419db68c98b63af +Block 0006 [ 14]: 16a63bda59843e82 +Block 0006 [ 15]: 4a81a3dc88c84a66 +Block 0006 [ 16]: 90218025c0709f55 +Block 0006 [ 17]: a3f055b0a64e7826 +Block 0006 [ 18]: 8a814617fed0de21 +Block 0006 [ 19]: b32bdca9f00f7ae9 +Block 0006 [ 20]: 95aa9d629f4ed584 +Block 0006 [ 21]: 975350c26848cc2a +Block 0006 [ 22]: 3466b4991d492d30 +Block 0006 [ 23]: b5a3be561cde3612 +Block 0006 [ 24]: 7756124275a76154 +Block 0006 [ 25]: 49fa854f823ba873 +Block 0006 [ 26]: 4a2e0caa9712712e +Block 0006 [ 27]: 4cc6115574357b8f +Block 0006 [ 28]: 726dd8a92ff4733c +Block 0006 [ 29]: 687da442592f16a0 +Block 0006 [ 30]: 465daa3b6227c2f0 +Block 0006 [ 31]: 70345f239134961f +Block 0006 [ 32]: 93e4d66cf4241219 +Block 0006 [ 33]: f5aa4517e4562711 +Block 0006 [ 34]: 4444b64467a42d3b +Block 0006 [ 35]: 60b1f0ee9c363d65 +Block 0006 [ 36]: 7fa2479e123a67bf +Block 0006 [ 37]: bdeccba4bd322330 +Block 0006 [ 38]: 9cddff99f7042194 +Block 0006 [ 39]: 1255bfb92429d58e +Block 0006 [ 40]: 973a6877ecba92e1 +Block 0006 [ 41]: d22760276a21f9e6 +Block 0006 [ 42]: e3cbb4fb39655c00 +Block 0006 [ 43]: 6e1d33fbaca85766 +Block 0006 [ 44]: 9a800276744f8d6a +Block 0006 [ 45]: 8d0438d86a3f81db +Block 0006 [ 46]: ccdf247b55ccbd75 +Block 0006 [ 47]: aad33246518c0867 +Block 0006 [ 48]: d973e214a5dc1cf0 +Block 0006 [ 49]: 2c91065b5ab54743 +Block 0006 [ 50]: 091087b3e2a08216 +Block 0006 [ 51]: 30791badfa9890a5 +Block 0006 [ 52]: 62313b92c720912d +Block 0006 [ 53]: 7088235adf696700 +Block 0006 [ 54]: 52f03c4478e57e2e +Block 0006 [ 55]: 674263a7cc168cd3 +Block 0006 [ 56]: 450cab3338ebcafe +Block 0006 [ 57]: 1c86fcc8b6e9d2e7 +Block 0006 [ 58]: 9a3a7830220d6438 +Block 0006 [ 59]: 549e8d6e9749ece1 +Block 0006 [ 60]: 88ea236eed27143e +Block 0006 [ 61]: 3c0655d2f401e316 +Block 0006 [ 62]: cbc8a061330b6c63 +Block 0006 [ 63]: ce24d3dfe441fbce +Block 0006 [ 64]: 3506770825bb2ff8 +Block 0006 [ 65]: e6b01a6305481a92 +Block 0006 [ 66]: 20588369cbb512ad +Block 0006 [ 67]: 2213a5633d8e0647 +Block 0006 [ 68]: 9bb32b48673b5798 +Block 0006 [ 69]: ea2fb93e9b591ecb +Block 0006 [ 70]: 00b19e24edf72a78 +Block 0006 [ 71]: 6a3d3d8108e22084 +Block 0006 [ 72]: b725028aed7ae3c3 +Block 0006 [ 73]: bc3369b7f2b43268 +Block 0006 [ 74]: 59c97d54baba82c4 +Block 0006 [ 75]: 0fe70407db1d2ba8 +Block 0006 [ 76]: cedfed90946c12ea +Block 0006 [ 77]: e8b302ab9870454b +Block 0006 [ 78]: 9425e2a143c7796b +Block 0006 [ 79]: d3c73764a8ba8779 +Block 0006 [ 80]: 1abb5199656d79c2 +Block 0006 [ 81]: abe611198bf39091 +Block 0006 [ 82]: ea770a7acf0f8dff +Block 0006 [ 83]: 31939c4a98849740 +Block 0006 [ 84]: 336d0dfecd7680e4 +Block 0006 [ 85]: 89fc6ca46752584d +Block 0006 [ 86]: 9fcee800a2106f67 +Block 0006 [ 87]: 7cf89434037d523f +Block 0006 [ 88]: 1f3e0d1299972f00 +Block 0006 [ 89]: 06e93a81e91c6e20 +Block 0006 [ 90]: d2c72df7d0b4ab95 +Block 0006 [ 91]: b110bdcf9a586775 +Block 0006 [ 92]: 813dadde4b30fa89 +Block 0006 [ 93]: db80f76e630d57cb +Block 0006 [ 94]: 602148fcb776b5ee +Block 0006 [ 95]: f1de2acbe6ff5cc5 +Block 0006 [ 96]: 5cf779b56f544cbe +Block 0006 [ 97]: 517edbe4f764fa33 +Block 0006 [ 98]: 3b5962d26315a1c1 +Block 0006 [ 99]: 15132f4f65ed2b57 +Block 0006 [100]: 2cafb09101715abb +Block 0006 [101]: 24dc4c76915eb435 +Block 0006 [102]: 1cde78f968f5010b +Block 0006 [103]: 4a75e687c0e5addb +Block 0006 [104]: 2f4a7597b54a2108 +Block 0006 [105]: 92e11114a0a5b310 +Block 0006 [106]: 4081de32dda7c0c4 +Block 0006 [107]: 9a7eaefebd1be3a1 +Block 0006 [108]: e13f144ac34f24f8 +Block 0006 [109]: dfb987c2a58a6a77 +Block 0006 [110]: ac923f395dad20e9 +Block 0006 [111]: 5fe73860f784ff60 +Block 0006 [112]: 073a06f8b4645382 +Block 0006 [113]: d21dd239689f7774 +Block 0006 [114]: adbed6f36c5dc450 +Block 0006 [115]: 09fe2f54e53f957c +Block 0006 [116]: 03f20be6777b28c8 +Block 0006 [117]: 2ac305f861ae2328 +Block 0006 [118]: 010adf7244a13818 +Block 0006 [119]: f05617a0eddcdef9 +Block 0006 [120]: 176ec1e4b3ae2bc9 +Block 0006 [121]: 49711ed542b61a0c +Block 0006 [122]: 6ff51b60fbe95318 +Block 0006 [123]: ffbe244c9716d1f4 +Block 0006 [124]: ca3bc1d5d9a3fbde +Block 0006 [125]: 9e2baedc2994282d +Block 0006 [126]: f6904d88ad361783 +Block 0006 [127]: 4d18f37dff245cc9 +Block 0007 [ 0]: 08608d905459ab8f +Block 0007 [ 1]: 1511828c58cb7034 +Block 0007 [ 2]: f86b4d6c64eca18e +Block 0007 [ 3]: 910dfd16115bfb3d +Block 0007 [ 4]: ca995462cd7af35e +Block 0007 [ 5]: b534a28406293927 +Block 0007 [ 6]: 1f68b528fa0c341f +Block 0007 [ 7]: b71403d04beb1023 +Block 0007 [ 8]: 21d143863c913455 +Block 0007 [ 9]: 397b158ee9f2145a +Block 0007 [ 10]: 47c50637ac89043d +Block 0007 [ 11]: 24aafe85e6a98baa +Block 0007 [ 12]: f1c5bfb9f0edeba9 +Block 0007 [ 13]: 1c39dfe2091acdb7 +Block 0007 [ 14]: 1f98012686c7998b +Block 0007 [ 15]: e573b35664f125a2 +Block 0007 [ 16]: 41ce6387c3e14737 +Block 0007 [ 17]: ce201b6c25da8642 +Block 0007 [ 18]: 9c9485712de6749e +Block 0007 [ 19]: 4d3a0bf96ca9ca6f +Block 0007 [ 20]: cd4fa04baa256fa7 +Block 0007 [ 21]: 6cd2937c55e5014e +Block 0007 [ 22]: cb8094a12bc4c1f1 +Block 0007 [ 23]: 7fc7ab4a85360e65 +Block 0007 [ 24]: 15abc9339bd24b42 +Block 0007 [ 25]: db40bb117871eeb9 +Block 0007 [ 26]: 018b1e3d8797c114 +Block 0007 [ 27]: 443d81d72040af1f +Block 0007 [ 28]: 72839cad763233e5 +Block 0007 [ 29]: 36d144ac4578ff44 +Block 0007 [ 30]: 63550c21a7bb87ce +Block 0007 [ 31]: 11a2bf477a1047d7 +Block 0007 [ 32]: 62b98316a7cab0ed +Block 0007 [ 33]: ef19b4e1fa47ba2a +Block 0007 [ 34]: 8e4f5c797d9f4a5e +Block 0007 [ 35]: fb00bb2ba50c8e4a +Block 0007 [ 36]: 01d2a7386d887c79 +Block 0007 [ 37]: 038dc5d5b2c8f5bc +Block 0007 [ 38]: 7a209db9e4f51364 +Block 0007 [ 39]: ba2a35dba5398ca7 +Block 0007 [ 40]: 6cba5fff356d9204 +Block 0007 [ 41]: c436134c5ebd356c +Block 0007 [ 42]: 1f6d8f881c02f0c8 +Block 0007 [ 43]: 79f9578b66208cba +Block 0007 [ 44]: 883185e36262f210 +Block 0007 [ 45]: 38176e84f5759211 +Block 0007 [ 46]: 8b43fd09a06fd161 +Block 0007 [ 47]: 6b9f93a341204534 +Block 0007 [ 48]: 4864822e6186c325 +Block 0007 [ 49]: bbd10df9fbc66070 +Block 0007 [ 50]: f0a23fc17d85b8f3 +Block 0007 [ 51]: be609b77f183932b +Block 0007 [ 52]: 6299e15b8a2b4009 +Block 0007 [ 53]: d1df320b1814ecce +Block 0007 [ 54]: f88f9bc47a139371 +Block 0007 [ 55]: c6a533a5162809c7 +Block 0007 [ 56]: 22681af809918410 +Block 0007 [ 57]: 9f3fd2b6df45c0f6 +Block 0007 [ 58]: 3788af79005ce204 +Block 0007 [ 59]: 2551096b7e3e19c6 +Block 0007 [ 60]: e235c16d902a1fd6 +Block 0007 [ 61]: 0ba2daf3304459cd +Block 0007 [ 62]: 9e89013d8084f438 +Block 0007 [ 63]: 0ebd56ba7c464c74 +Block 0007 [ 64]: d941bf430957620a +Block 0007 [ 65]: d199fa7b0fc1fd73 +Block 0007 [ 66]: eb12abb0b8c3b518 +Block 0007 [ 67]: 79d00813cd6fa842 +Block 0007 [ 68]: a3b5710cae3cdb38 +Block 0007 [ 69]: 97e08b6907ef3aed +Block 0007 [ 70]: 10aa67cb010f8b7e +Block 0007 [ 71]: 006c99f1d172a5b8 +Block 0007 [ 72]: e8eedd0b54d5912a +Block 0007 [ 73]: d3ad4a66fc9bc685 +Block 0007 [ 74]: 04250ff0ff18d510 +Block 0007 [ 75]: 28aa693c71ea9463 +Block 0007 [ 76]: 01cad69143959494 +Block 0007 [ 77]: 0fe7efd57c37f1e5 +Block 0007 [ 78]: 220ee298dd71cc97 +Block 0007 [ 79]: f1ad80c0364ebea2 +Block 0007 [ 80]: b28b619e39a54e73 +Block 0007 [ 81]: f352f9ec4e3cf0c9 +Block 0007 [ 82]: 8be9b61e4ef0ae13 +Block 0007 [ 83]: 17958922c5e6a5ec +Block 0007 [ 84]: 3e950262449ea946 +Block 0007 [ 85]: a589af9c99c64ee1 +Block 0007 [ 86]: cfd47d0f5355f4bd +Block 0007 [ 87]: ea12164e719b9492 +Block 0007 [ 88]: 8ee249d8f1768e78 +Block 0007 [ 89]: 466bb597b18b234e +Block 0007 [ 90]: 42755351f0e5e364 +Block 0007 [ 91]: 77ca28c93d5e2d74 +Block 0007 [ 92]: 15518e8fdb4168fb +Block 0007 [ 93]: 7553eb89b7f7532c +Block 0007 [ 94]: 1aa86b8147238d58 +Block 0007 [ 95]: 1840fe7056c6aacc +Block 0007 [ 96]: 7f66b3a3d933cf77 +Block 0007 [ 97]: 91af6df904b8463d +Block 0007 [ 98]: 425c11f6d2454abc +Block 0007 [ 99]: 7de0228d7120af37 +Block 0007 [100]: a550e3769a171d93 +Block 0007 [101]: cb3c95affdf18fbd +Block 0007 [102]: 16771c9dcce5c43c +Block 0007 [103]: 137a85b35f26d6ee +Block 0007 [104]: 29f6df8f1d328a22 +Block 0007 [105]: 16356bd0f965c768 +Block 0007 [106]: c4c7d7f62b45b3f2 +Block 0007 [107]: 4145056ff2a545a6 +Block 0007 [108]: ff890a907437fdbf +Block 0007 [109]: 963f6c2a400ffa0a +Block 0007 [110]: 7ba3c82d26272ae7 +Block 0007 [111]: c670f2ad133b47b6 +Block 0007 [112]: 72b9358c18abf37f +Block 0007 [113]: 163ab2fffb5913ce +Block 0007 [114]: f19f2924afcf23c9 +Block 0007 [115]: 3a538ddf827a8f98 +Block 0007 [116]: 5e3d8b7b6b6c2dfe +Block 0007 [117]: ced14853d3425a5c +Block 0007 [118]: 644d427a8a85255c +Block 0007 [119]: 82b35f11e9d4e812 +Block 0007 [120]: 1a48a1724f09fbcc +Block 0007 [121]: 97bed0697f72c04a +Block 0007 [122]: b186b43c326a39a5 +Block 0007 [123]: ddf61b0a584c18e5 +Block 0007 [124]: dfee01b0cf4b1d1c +Block 0007 [125]: 657a9eb97cc78f0f +Block 0007 [126]: 73578c46ea1e8957 +Block 0007 [127]: 49f86e12151ef106 +Block 0008 [ 0]: 946f4172e48f45bc +Block 0008 [ 1]: 4fd6a390d54f945a +Block 0008 [ 2]: 8865c95f19e75cee +Block 0008 [ 3]: 12b699dae0b3ddd3 +Block 0008 [ 4]: ddd01143c698c3f2 +Block 0008 [ 5]: f35fc1ca1e31aca2 +Block 0008 [ 6]: 754e1f2cd4478969 +Block 0008 [ 7]: 685b4614b0e6c929 +Block 0008 [ 8]: e9bb122d275abae4 +Block 0008 [ 9]: 722dcbe15fe893e1 +Block 0008 [ 10]: 023d47887e8f9080 +Block 0008 [ 11]: 580112892d2b59d2 +Block 0008 [ 12]: 453e419fb2ae1043 +Block 0008 [ 13]: e5df64f679b21648 +Block 0008 [ 14]: 19af9f0e31b485dc +Block 0008 [ 15]: 056c9b976642c3b3 +Block 0008 [ 16]: df670b491825f243 +Block 0008 [ 17]: a5b9b53a9d497b95 +Block 0008 [ 18]: 93b566c5fed67bbc +Block 0008 [ 19]: 06163c7c0221eb12 +Block 0008 [ 20]: f7814aecb5ca06ed +Block 0008 [ 21]: 7dbf805ff7f9b301 +Block 0008 [ 22]: ebee1eb85c3c7e40 +Block 0008 [ 23]: a8c47e069b866088 +Block 0008 [ 24]: cc2880bf6f2f0e96 +Block 0008 [ 25]: f2cf558ee4c8dcaf +Block 0008 [ 26]: 8ce788341bbd111a +Block 0008 [ 27]: 7f2f058fb26c87bf +Block 0008 [ 28]: 12a14abafb6f4f38 +Block 0008 [ 29]: 48c255f582c25422 +Block 0008 [ 30]: 94dc2052aeac3a6f +Block 0008 [ 31]: dc2055d354763c6e +Block 0008 [ 32]: 4baa321da5cf5e9a +Block 0008 [ 33]: a661864923404713 +Block 0008 [ 34]: 1ebe736b08681b33 +Block 0008 [ 35]: d83e4d40de6eb189 +Block 0008 [ 36]: a266bf404b5d5c24 +Block 0008 [ 37]: 2fa6f24d6e092634 +Block 0008 [ 38]: acba046ce6646f82 +Block 0008 [ 39]: 1199b380d3e3f4e7 +Block 0008 [ 40]: 3154f06582957cbb +Block 0008 [ 41]: 3a0377b1ab9b4fc4 +Block 0008 [ 42]: 8dc110da76e9a284 +Block 0008 [ 43]: dd5e35a105c5946f +Block 0008 [ 44]: 9cb0ca79e28f3eaf +Block 0008 [ 45]: 283c6a6c3eb90ebd +Block 0008 [ 46]: 31f66b0292bcc039 +Block 0008 [ 47]: d41696b4fd10cfa8 +Block 0008 [ 48]: 00fe0d0c621b8f20 +Block 0008 [ 49]: 4becb6cc90553656 +Block 0008 [ 50]: d1b39d40b8f41f66 +Block 0008 [ 51]: f53bd48378d17266 +Block 0008 [ 52]: f6aa1c7e25b26c41 +Block 0008 [ 53]: 919e55fbae1380c8 +Block 0008 [ 54]: 5c3b125145acb6a6 +Block 0008 [ 55]: 7ab641db973f7140 +Block 0008 [ 56]: 8915b982cab617cd +Block 0008 [ 57]: d5a724abf6557eed +Block 0008 [ 58]: 42a99fa8123c786c +Block 0008 [ 59]: be5eaa49caf3160e +Block 0008 [ 60]: b374f4875813075f +Block 0008 [ 61]: 6a36ea7dfd371bb9 +Block 0008 [ 62]: 30eb208b42bd275e +Block 0008 [ 63]: 0443c2562a8b5f4e +Block 0008 [ 64]: 4a92f155246fc7e4 +Block 0008 [ 65]: 51333423de414931 +Block 0008 [ 66]: 93690a0e6bc3f988 +Block 0008 [ 67]: bbded4c9c730092a +Block 0008 [ 68]: 6a77514e8f4c6880 +Block 0008 [ 69]: ba63ec70fd3c2990 +Block 0008 [ 70]: 30107af2e79e0701 +Block 0008 [ 71]: 9e950d669014bfd3 +Block 0008 [ 72]: a7e7a792cd861334 +Block 0008 [ 73]: fd06832f385545af +Block 0008 [ 74]: 157fe306e5bef4e5 +Block 0008 [ 75]: 85b14138dc2c7322 +Block 0008 [ 76]: 194556fde93950d1 +Block 0008 [ 77]: ce5fc7d07a7bd136 +Block 0008 [ 78]: 8ee3180753b18551 +Block 0008 [ 79]: 948111f20c9e8750 +Block 0008 [ 80]: 850b46a1dba94e1a +Block 0008 [ 81]: d09e265fbf143a5e +Block 0008 [ 82]: e656195021c81e6c +Block 0008 [ 83]: b086545044b0fa3c +Block 0008 [ 84]: c8ebf0e1123a77e4 +Block 0008 [ 85]: bec9fc82189da93a +Block 0008 [ 86]: 4c8e0ef40119f4b8 +Block 0008 [ 87]: 04b99d99695a5a90 +Block 0008 [ 88]: dbdc22a5e4670bb0 +Block 0008 [ 89]: 55998f7982da27d7 +Block 0008 [ 90]: 39d7e7207e08e692 +Block 0008 [ 91]: 23897adcf2de8b18 +Block 0008 [ 92]: 8cc4c0cb5139bf2d +Block 0008 [ 93]: 2fda1e43e2fd09f3 +Block 0008 [ 94]: 9b079a6c80332e62 +Block 0008 [ 95]: a5e3689bb46ada0c +Block 0008 [ 96]: ab0283b1669ed18f +Block 0008 [ 97]: c41a2cfc00bb7e7b +Block 0008 [ 98]: 67513e080d26eaae +Block 0008 [ 99]: 722eb41b16a72fc0 +Block 0008 [100]: cb7323c1e23ddf5e +Block 0008 [101]: 1cd886fb9ec9ae72 +Block 0008 [102]: 91ba26c41e5524e8 +Block 0008 [103]: 7962eea4c76742bb +Block 0008 [104]: c99d15b6866d9227 +Block 0008 [105]: 4d653a74e6460512 +Block 0008 [106]: 4bc6875015fb2e86 +Block 0008 [107]: 9a002b9f8363c254 +Block 0008 [108]: 63fc83030f07c2b3 +Block 0008 [109]: cbccdb9b7a520112 +Block 0008 [110]: 9a309ce71918c835 +Block 0008 [111]: 1ad52732f060dd9b +Block 0008 [112]: f8a23f1db24f6873 +Block 0008 [113]: 589d7da3d7a98965 +Block 0008 [114]: 688ac7a334d9b1f8 +Block 0008 [115]: 32273c7cb982809f +Block 0008 [116]: 1092db0c6e60e72d +Block 0008 [117]: fdfcce143a3a4316 +Block 0008 [118]: 7f57fde95e5fe647 +Block 0008 [119]: c32cc72f104f110e +Block 0008 [120]: b586a6c4bef3aeda +Block 0008 [121]: 51fd5b6b873c9d93 +Block 0008 [122]: 98bdb34ea394faff +Block 0008 [123]: f203ac855a3cf9b0 +Block 0008 [124]: 1ed469c0614791eb +Block 0008 [125]: 9c66a82bdb1086a8 +Block 0008 [126]: d5fce0f666b9fbf4 +Block 0008 [127]: b5240fccb0474593 +Block 0009 [ 0]: f71d7ac1b31d0c03 +Block 0009 [ 1]: 36fa1fc6951a7721 +Block 0009 [ 2]: b07b4cbe51b81815 +Block 0009 [ 3]: aa592611faa7919f +Block 0009 [ 4]: e9ffefb063d7fb93 +Block 0009 [ 5]: 64d095d28ffd4ce5 +Block 0009 [ 6]: 426b82d6b296bdd4 +Block 0009 [ 7]: 36f597f7872bbcad +Block 0009 [ 8]: 8c67a5d17176ca0a +Block 0009 [ 9]: 009c72d087e528a1 +Block 0009 [ 10]: 45c5258429ffa95c +Block 0009 [ 11]: 041138902f445757 +Block 0009 [ 12]: e5df17e7b58ad6f5 +Block 0009 [ 13]: f77248f48fdf93f7 +Block 0009 [ 14]: 2ccd21f49fdbf5f3 +Block 0009 [ 15]: 868eb9581ad8bf6a +Block 0009 [ 16]: 7d9886dd8b20f0a5 +Block 0009 [ 17]: f1ba13572e7ce9ce +Block 0009 [ 18]: f948533dd4c66c0a +Block 0009 [ 19]: 57beec10df13ae28 +Block 0009 [ 20]: 6814a2ab7a2333bd +Block 0009 [ 21]: c8a582737a34001f +Block 0009 [ 22]: baf3cd295d2b578a +Block 0009 [ 23]: ff97f37cb11c3bb6 +Block 0009 [ 24]: ff7086083e75499f +Block 0009 [ 25]: 98a45ac01d889f68 +Block 0009 [ 26]: 00c4213dcebd6abb +Block 0009 [ 27]: 224554dbd2866552 +Block 0009 [ 28]: 84172c50092aecc2 +Block 0009 [ 29]: 0e7cc7829edd193d +Block 0009 [ 30]: ffbd59d32a3e1ccd +Block 0009 [ 31]: 3fea118182ed825d +Block 0009 [ 32]: b177558628cb6ff0 +Block 0009 [ 33]: ce032e12a93a2858 +Block 0009 [ 34]: 9a80ee26047468c1 +Block 0009 [ 35]: 9558d50a7013d04b +Block 0009 [ 36]: 7d03afab6ba77a9f +Block 0009 [ 37]: 0571cb3f95cb4f8e +Block 0009 [ 38]: 3efadf43d1515bbd +Block 0009 [ 39]: d295f20ebaea1299 +Block 0009 [ 40]: d952805bfc5f5522 +Block 0009 [ 41]: 8456b9125f950b3b +Block 0009 [ 42]: caeba582f5b9cfad +Block 0009 [ 43]: 8cf13134eff66040 +Block 0009 [ 44]: d3a4f52954197a2c +Block 0009 [ 45]: a812afdce439ff9e +Block 0009 [ 46]: 2aa4e9f9b348c5c3 +Block 0009 [ 47]: 1705ece947e35bab +Block 0009 [ 48]: 7f7397aa223f771b +Block 0009 [ 49]: fce2f4b15034ab54 +Block 0009 [ 50]: b1d69da4139bdbd8 +Block 0009 [ 51]: f67e6b188989fbe8 +Block 0009 [ 52]: d125a99b2095a29d +Block 0009 [ 53]: 9d6e470ec6c25b36 +Block 0009 [ 54]: 593b160d49e18c79 +Block 0009 [ 55]: ed6025de9776525e +Block 0009 [ 56]: 5ac3eee54aae2a66 +Block 0009 [ 57]: 5a1638b2cbdada77 +Block 0009 [ 58]: 156cd95ddfad2d28 +Block 0009 [ 59]: d204813e7b31cb39 +Block 0009 [ 60]: d4103b3f53448bed +Block 0009 [ 61]: 0c9995ac4f2738a2 +Block 0009 [ 62]: d2594d28f9c96d9c +Block 0009 [ 63]: 5bc9e9ea7845875f +Block 0009 [ 64]: 09c43be218bf86cc +Block 0009 [ 65]: c27f3f6dc8e0c8cc +Block 0009 [ 66]: c66918b7a291eb26 +Block 0009 [ 67]: b2a8f2f585ec2dae +Block 0009 [ 68]: 823f44a98b3a53df +Block 0009 [ 69]: 4d341334a6a465af +Block 0009 [ 70]: 75bee2f35122ae8e +Block 0009 [ 71]: 06f62f8c153e04ba +Block 0009 [ 72]: 802b3ff14a2babcd +Block 0009 [ 73]: 3323648a36eae7aa +Block 0009 [ 74]: 94b9cd482286815b +Block 0009 [ 75]: 67a61292a4e88710 +Block 0009 [ 76]: 8b9931e1b76cc41e +Block 0009 [ 77]: cf8d25db33f394aa +Block 0009 [ 78]: aafd87d7ef762aa9 +Block 0009 [ 79]: 3185333e28669e62 +Block 0009 [ 80]: b4ea67c36b38149c +Block 0009 [ 81]: e0a1000041058445 +Block 0009 [ 82]: 1362ecd144a7e52c +Block 0009 [ 83]: 049dfe5437183e02 +Block 0009 [ 84]: eb6e27e92a174754 +Block 0009 [ 85]: 595fbc74a2ef367f +Block 0009 [ 86]: 9a72a7c3f1ee3e84 +Block 0009 [ 87]: e9a6bcecc3f22d81 +Block 0009 [ 88]: 9347bcd9fdf576c5 +Block 0009 [ 89]: 1f7c38ff13ef70a7 +Block 0009 [ 90]: 2d274d7abcafd26c +Block 0009 [ 91]: 447ca88566a2e3f8 +Block 0009 [ 92]: 4e5711ab025a6c83 +Block 0009 [ 93]: 9aaf73a660580ec6 +Block 0009 [ 94]: d1ebf9c02c730018 +Block 0009 [ 95]: 29c443177aa901ec +Block 0009 [ 96]: 16c3dfdb779b9b0d +Block 0009 [ 97]: ee249c54b6696abb +Block 0009 [ 98]: 69547342e8b883c8 +Block 0009 [ 99]: bd8bd8373c27cbac +Block 0009 [100]: 04fc66d6d9746631 +Block 0009 [101]: fb13da4119808ae9 +Block 0009 [102]: 8bc9611f01757e03 +Block 0009 [103]: ec43bd9892f5a8f1 +Block 0009 [104]: b613e812c583a1e5 +Block 0009 [105]: 286cf5d1233abbdf +Block 0009 [106]: 18fcc7aea4a0bd0c +Block 0009 [107]: 373ce49dd8d1f90d +Block 0009 [108]: d55e507149c98c70 +Block 0009 [109]: 742ee9093356cbe0 +Block 0009 [110]: c4e5b39c1d5bad53 +Block 0009 [111]: 8c9982400af91fcf +Block 0009 [112]: e09dcaace809588a +Block 0009 [113]: aeff10b1b2894146 +Block 0009 [114]: 726fceb7fbc3f85e +Block 0009 [115]: 31d37b1028d0ae76 +Block 0009 [116]: 1275fc397d70d627 +Block 0009 [117]: c67f66396627ace7 +Block 0009 [118]: 7f90a6cdf3bdfdce +Block 0009 [119]: 0b76c955b3916250 +Block 0009 [120]: 29204a35ad80e350 +Block 0009 [121]: 11c718719db93a70 +Block 0009 [122]: 26538a9df69b4dfc +Block 0009 [123]: 476356b8a4742fc4 +Block 0009 [124]: 17c1abfa8181bb99 +Block 0009 [125]: 3a4c58a598605a4a +Block 0009 [126]: d04b9c190601d94c +Block 0009 [127]: 4955d571b6b302b8 +Block 0010 [ 0]: b993c1bd5f7029d0 +Block 0010 [ 1]: b335e227fdf8ef5f +Block 0010 [ 2]: 9237fba47420f671 +Block 0010 [ 3]: a126898dbeec57ed +Block 0010 [ 4]: 4bca4ce84aa86b25 +Block 0010 [ 5]: c038226b443c4b80 +Block 0010 [ 6]: 6f53e9bec75433a4 +Block 0010 [ 7]: c501a2f82d230b2e +Block 0010 [ 8]: e20cbbc1cdbb3fde +Block 0010 [ 9]: 7e74310ac3390e93 +Block 0010 [ 10]: 607d4856e41e6770 +Block 0010 [ 11]: 0d873576fe594cb9 +Block 0010 [ 12]: 466a5cc0b9dcb10b +Block 0010 [ 13]: 5ac4ae018e1244b6 +Block 0010 [ 14]: 6f5ea0c731cb993f +Block 0010 [ 15]: 8ae0464499a1a18b +Block 0010 [ 16]: 5786d33860ddc6aa +Block 0010 [ 17]: fbc2a7fee48c5262 +Block 0010 [ 18]: df7df9334ecc008b +Block 0010 [ 19]: 3c12389cf675c070 +Block 0010 [ 20]: 63b680dd695239e1 +Block 0010 [ 21]: 82b6b20c15633ecd +Block 0010 [ 22]: 72a8465d6fec39ae +Block 0010 [ 23]: a2e32e750d9d73d5 +Block 0010 [ 24]: bd50d62e43faed3c +Block 0010 [ 25]: d24d65fa3b7b739e +Block 0010 [ 26]: 7a13fff894085e72 +Block 0010 [ 27]: e78d115cfbe3e775 +Block 0010 [ 28]: 4ddccccaccf56fd4 +Block 0010 [ 29]: 5d4630d9d429597d +Block 0010 [ 30]: aff631f79f7cd167 +Block 0010 [ 31]: 61123ce2e2e19e76 +Block 0010 [ 32]: c493743bc954fc27 +Block 0010 [ 33]: 0cda5a79ca021b0b +Block 0010 [ 34]: f471cf3d3f0732da +Block 0010 [ 35]: aa21229ac8b02a9f +Block 0010 [ 36]: c5d1681941b6c405 +Block 0010 [ 37]: 7c4cde8e970cf13d +Block 0010 [ 38]: d9b7771cee19b845 +Block 0010 [ 39]: 2e4fc10fff00cd49 +Block 0010 [ 40]: 33ed5782df2e21ea +Block 0010 [ 41]: 93dcf1fd021b2823 +Block 0010 [ 42]: c40e0f1eedd64802 +Block 0010 [ 43]: 864794e39416a59d +Block 0010 [ 44]: e3b59bbb7918d16b +Block 0010 [ 45]: 0835a0d6bd7c4736 +Block 0010 [ 46]: cb3a4d7a2c7258d6 +Block 0010 [ 47]: d1d7a03d5b4a3e40 +Block 0010 [ 48]: 0085b98ff324f040 +Block 0010 [ 49]: 8d90ef0683b47f76 +Block 0010 [ 50]: babed82c6e950da3 +Block 0010 [ 51]: a521d85c113afa18 +Block 0010 [ 52]: e894e2a0970c9369 +Block 0010 [ 53]: cce9bdabfeb53b33 +Block 0010 [ 54]: 082a4efdfe16a2d1 +Block 0010 [ 55]: f8051ce466344f8d +Block 0010 [ 56]: ea14a2998800d044 +Block 0010 [ 57]: dda2b7fac4d942fd +Block 0010 [ 58]: 30eb10a454538f7c +Block 0010 [ 59]: c774e4c9906a7024 +Block 0010 [ 60]: 54f054ebfc467c29 +Block 0010 [ 61]: 8bf568d3a3c5fd99 +Block 0010 [ 62]: 7b399a300a0b9cc5 +Block 0010 [ 63]: 3ab29955ed1ac168 +Block 0010 [ 64]: 442c5ac818b0487f +Block 0010 [ 65]: 1b0763e5c951a8c7 +Block 0010 [ 66]: 1d9be376de427fc1 +Block 0010 [ 67]: de496feb7dc80268 +Block 0010 [ 68]: e62a4cdfa2bafa48 +Block 0010 [ 69]: da8322a3ed887c0b +Block 0010 [ 70]: 85a1645342749fbf +Block 0010 [ 71]: 7ce2a7496bc24cf6 +Block 0010 [ 72]: 6e8921ed63828c7f +Block 0010 [ 73]: 8237828d04979c41 +Block 0010 [ 74]: a80bc40b91f7d49a +Block 0010 [ 75]: 6e6a295d6e35b945 +Block 0010 [ 76]: 89e7346006fa765a +Block 0010 [ 77]: 669c918f21489879 +Block 0010 [ 78]: 8920540f8131241f +Block 0010 [ 79]: 4945d49ed827838b +Block 0010 [ 80]: 332e127fabb53df8 +Block 0010 [ 81]: 7d21956c64b39744 +Block 0010 [ 82]: 5773e3c42b68bfa4 +Block 0010 [ 83]: 18e24882ca88acb9 +Block 0010 [ 84]: 9daf7d7818505288 +Block 0010 [ 85]: a082a00e4cafa716 +Block 0010 [ 86]: 26d4a2d3df30febb +Block 0010 [ 87]: 9580317f69598ad6 +Block 0010 [ 88]: 7484c89ffe4b2eef +Block 0010 [ 89]: b8617bf6a8e210ad +Block 0010 [ 90]: 730e1d6b1b3526d5 +Block 0010 [ 91]: 07288bde84d4c8e3 +Block 0010 [ 92]: 9f5268a294e2adfc +Block 0010 [ 93]: 661bcbe84714c7c2 +Block 0010 [ 94]: 374431dc30ad551a +Block 0010 [ 95]: 77b23b931fe980e6 +Block 0010 [ 96]: 7c88f25c1256f646 +Block 0010 [ 97]: 59e2afc7421061dc +Block 0010 [ 98]: 05134ad1fd1939ce +Block 0010 [ 99]: d699e236278af73c +Block 0010 [100]: e3bce3ca0ad1bd89 +Block 0010 [101]: cab0b5500d334a45 +Block 0010 [102]: 39d1b45c25ccb8df +Block 0010 [103]: a3821ced65f2f532 +Block 0010 [104]: 41cf244e80d20bb3 +Block 0010 [105]: 9593af67ca6b8665 +Block 0010 [106]: c1f9e1e46f96689f +Block 0010 [107]: b6bdef4c8c84e74f +Block 0010 [108]: 94d40f31eaaa2e44 +Block 0010 [109]: bbec161350126a1a +Block 0010 [110]: 60b54428ddd5b5fe +Block 0010 [111]: 1d2a926c9ede4276 +Block 0010 [112]: d095c896f08970e5 +Block 0010 [113]: 0b8903eed5e169c7 +Block 0010 [114]: 28c8e70eae29763a +Block 0010 [115]: f1b2260d6d41e7ee +Block 0010 [116]: 126762a86c807865 +Block 0010 [117]: eaf3b1bd561d8a6c +Block 0010 [118]: cf6ac32eded6a9c1 +Block 0010 [119]: f039b2bcefc45b52 +Block 0010 [120]: c93b02aa4366b822 +Block 0010 [121]: f68b6515d2589d6c +Block 0010 [122]: 230c8155563a5498 +Block 0010 [123]: 229abab769c2c232 +Block 0010 [124]: b7bab4bf507dd51c +Block 0010 [125]: 865b9289dbb02d72 +Block 0010 [126]: 8a3ffe783605f32b +Block 0010 [127]: 1edb7add047109a5 +Block 0011 [ 0]: 5fe2c3629fa3ee83 +Block 0011 [ 1]: b3d2beefbabce8ac +Block 0011 [ 2]: 72942fa98eec830c +Block 0011 [ 3]: 227ad56dfb1dfcbb +Block 0011 [ 4]: 64c0845d046c046b +Block 0011 [ 5]: 3f2c34f5b626488b +Block 0011 [ 6]: 4ebce1ad53d2f691 +Block 0011 [ 7]: aa5e798ff6600903 +Block 0011 [ 8]: c882e71490d159ee +Block 0011 [ 9]: 139b21b383b533b6 +Block 0011 [ 10]: 413204981bd82a87 +Block 0011 [ 11]: 36f87f9bddf156b0 +Block 0011 [ 12]: 22ea88710821972c +Block 0011 [ 13]: e8be47cfb4f1bde8 +Block 0011 [ 14]: b8b556041f484f9c +Block 0011 [ 15]: 66e82cc41de0d401 +Block 0011 [ 16]: bca8191ac28313bc +Block 0011 [ 17]: abb7463754f598bc +Block 0011 [ 18]: 5d7a40b1f8394347 +Block 0011 [ 19]: 927a3616b1c69ade +Block 0011 [ 20]: 476045d4c050649e +Block 0011 [ 21]: f8e3b38bd6919cd5 +Block 0011 [ 22]: 54e3eda0ad5ef065 +Block 0011 [ 23]: cf1f60f880e92a70 +Block 0011 [ 24]: 77ce0b66240f6bb3 +Block 0011 [ 25]: 5fccfa14a0aac40f +Block 0011 [ 26]: e92b36364de83bc2 +Block 0011 [ 27]: 2fac24203b29d455 +Block 0011 [ 28]: 1f59b91c3e8ce701 +Block 0011 [ 29]: f6325db0e6cf5db7 +Block 0011 [ 30]: cde857254c0d8753 +Block 0011 [ 31]: 270efe3a4d4383cf +Block 0011 [ 32]: 6fa171ad462e1d5f +Block 0011 [ 33]: 7f898ecf3127d9de +Block 0011 [ 34]: 395ff0b219c6fd34 +Block 0011 [ 35]: 8ce0d1368c66870e +Block 0011 [ 36]: 04e5aa8dd7049358 +Block 0011 [ 37]: 1c93fd6ce65f1517 +Block 0011 [ 38]: 7a4c941e71b3e0a7 +Block 0011 [ 39]: c6cf012a56968ade +Block 0011 [ 40]: e2f74e80ee223964 +Block 0011 [ 41]: d29e097677b886b3 +Block 0011 [ 42]: af5dd662ba49095b +Block 0011 [ 43]: 6978e6c06707d66c +Block 0011 [ 44]: b465f5b5226979d4 +Block 0011 [ 45]: 94fdf590ea8fff6e +Block 0011 [ 46]: fc00f5336bb3a35d +Block 0011 [ 47]: f1a63dd0547ac7d0 +Block 0011 [ 48]: 0b63794ae2fd4f9a +Block 0011 [ 49]: b5686907a46a9428 +Block 0011 [ 50]: e59fe5615f29bf23 +Block 0011 [ 51]: 33fafa9d750c4cc9 +Block 0011 [ 52]: 4fa3df448e6effbc +Block 0011 [ 53]: d8fd1d31e7daf2ef +Block 0011 [ 54]: 22eebb769680e792 +Block 0011 [ 55]: e812f157611f5675 +Block 0011 [ 56]: 93fedfe6bd369c49 +Block 0011 [ 57]: 59dc7eeb904773dd +Block 0011 [ 58]: a4b40ad32d554888 +Block 0011 [ 59]: 744d37f36abb0092 +Block 0011 [ 60]: 059214737176c6ba +Block 0011 [ 61]: 1a700fa9557eef5f +Block 0011 [ 62]: eca56e2d91882ba4 +Block 0011 [ 63]: 14f42776e4cf5381 +Block 0011 [ 64]: 44756fc06ec6c65c +Block 0011 [ 65]: 2fe700f9173ba95c +Block 0011 [ 66]: 1e0107f5209a8329 +Block 0011 [ 67]: b4c0f8a00d972eee +Block 0011 [ 68]: f180516da3569255 +Block 0011 [ 69]: ff000c7df6506db2 +Block 0011 [ 70]: c6771d7e25863436 +Block 0011 [ 71]: aae7b9969ec5b78d +Block 0011 [ 72]: bec55327abb230ce +Block 0011 [ 73]: b8a95311da085eef +Block 0011 [ 74]: 80a76344e94d37a6 +Block 0011 [ 75]: e7322b491ae64268 +Block 0011 [ 76]: 60b731f8b9bce8f5 +Block 0011 [ 77]: dcb8a5456a58e1b4 +Block 0011 [ 78]: f3c5081fd8222c9a +Block 0011 [ 79]: c821603c76a0a1a1 +Block 0011 [ 80]: 4246de6a30129f61 +Block 0011 [ 81]: a86b679c621e62bd +Block 0011 [ 82]: 2e726675015a9f66 +Block 0011 [ 83]: 6397c3c8d8b1a8ef +Block 0011 [ 84]: 8f7e51fdd1484e23 +Block 0011 [ 85]: 6fa5dce93186cdcd +Block 0011 [ 86]: ddca57f16e3ceea5 +Block 0011 [ 87]: 6c7c6df39e7f1011 +Block 0011 [ 88]: a4e2f226b52098e8 +Block 0011 [ 89]: 9559cebee47939c3 +Block 0011 [ 90]: b0c9f32b08a3ab5a +Block 0011 [ 91]: eea0d795a627fd1a +Block 0011 [ 92]: 448fc1ead715ad85 +Block 0011 [ 93]: d19610358c85ac0c +Block 0011 [ 94]: 62ee1eed08cb519c +Block 0011 [ 95]: 787ed35781df088b +Block 0011 [ 96]: 4f79006cc037761e +Block 0011 [ 97]: 4bc68ec57b36a9f7 +Block 0011 [ 98]: 9e74541e84cfa14e +Block 0011 [ 99]: 06d86aafd803d99b +Block 0011 [100]: 6e3eca30777d4653 +Block 0011 [101]: 69d1b2810057a1de +Block 0011 [102]: 2231841468d29508 +Block 0011 [103]: 6b30141f71aac157 +Block 0011 [104]: dbbf724568091549 +Block 0011 [105]: d8a9c58e4d894d80 +Block 0011 [106]: 43ff74eb372afdc5 +Block 0011 [107]: f42c4e3a8ac0c408 +Block 0011 [108]: b7c05437c026add9 +Block 0011 [109]: b31f94ec29d359f2 +Block 0011 [110]: 5e288d4c73af4bdb +Block 0011 [111]: 756a80665001aed3 +Block 0011 [112]: 736d66df99a2be76 +Block 0011 [113]: a606c036d92fcffe +Block 0011 [114]: cb37bd31ede4471a +Block 0011 [115]: ba27d12d88a27fe0 +Block 0011 [116]: 2f5873817e1c35de +Block 0011 [117]: 84e8bcb44320ef4f +Block 0011 [118]: b855efc385514b4b +Block 0011 [119]: 1c2fb55a05c6d53f +Block 0011 [120]: 64969aa359025900 +Block 0011 [121]: 1fae4a4302afbc5d +Block 0011 [122]: 82681cfa3cf9ceb7 +Block 0011 [123]: 60d5c0017e77004b +Block 0011 [124]: 5d6b52231aa6c2fc +Block 0011 [125]: 590d6387fc05be07 +Block 0011 [126]: 5ab275846b663589 +Block 0011 [127]: 6d63a6652c9780d1 +Block 0012 [ 0]: 5eb35b81bd053cc0 +Block 0012 [ 1]: 7641c90975633b66 +Block 0012 [ 2]: f8a2d4bd05fea682 +Block 0012 [ 3]: dbf53b206e11489c +Block 0012 [ 4]: c243472fca0f1d05 +Block 0012 [ 5]: f246293a97b52cd9 +Block 0012 [ 6]: 222860d28a78faee +Block 0012 [ 7]: aff4e84133704f8d +Block 0012 [ 8]: 0085dd170896441d +Block 0012 [ 9]: 6dd0efebc63d9a57 +Block 0012 [ 10]: 42fc1383e469732c +Block 0012 [ 11]: 20ec25037814bdbb +Block 0012 [ 12]: b8c240862f80a62d +Block 0012 [ 13]: af389ee2c0de45e3 +Block 0012 [ 14]: 9ede39da388711c5 +Block 0012 [ 15]: c988c927980074c4 +Block 0012 [ 16]: 42742d6879986b1a +Block 0012 [ 17]: 1cd69a0069e8b6d6 +Block 0012 [ 18]: c089f385e42a7554 +Block 0012 [ 19]: 93cd82acbefbe235 +Block 0012 [ 20]: 5d4d15930067eb4d +Block 0012 [ 21]: a0f32413740ccd14 +Block 0012 [ 22]: e8d285495c219573 +Block 0012 [ 23]: 6767ce984f856d11 +Block 0012 [ 24]: 6157243bb3276f9e +Block 0012 [ 25]: fe40efcb6d208003 +Block 0012 [ 26]: b089203e8d0bbe9e +Block 0012 [ 27]: 352ed22a2abeed77 +Block 0012 [ 28]: 9a283ee0cb62412f +Block 0012 [ 29]: af670ea81a83f914 +Block 0012 [ 30]: 8110d525c2cbf453 +Block 0012 [ 31]: 1fef517c56f77b24 +Block 0012 [ 32]: d4446f905d7f1e5c +Block 0012 [ 33]: 977e658395321308 +Block 0012 [ 34]: 3001f86c9432b412 +Block 0012 [ 35]: 062b559150d175b8 +Block 0012 [ 36]: 8d24f46cbd21f974 +Block 0012 [ 37]: 911a79204b56fd9b +Block 0012 [ 38]: 36d534094c932cd2 +Block 0012 [ 39]: c52abffaf521c660 +Block 0012 [ 40]: 01e338e319177a5a +Block 0012 [ 41]: bbfe5ed4bf00aca5 +Block 0012 [ 42]: c782e6aeb0a43c30 +Block 0012 [ 43]: b027e3d82037f5cc +Block 0012 [ 44]: 64a4103b744e4e94 +Block 0012 [ 45]: 9670a86aeb267168 +Block 0012 [ 46]: 6d82ef7ebc12d747 +Block 0012 [ 47]: c0ce445100e0814b +Block 0012 [ 48]: 3ebd68e5b7f8c349 +Block 0012 [ 49]: 62a4cd03600e4f0f +Block 0012 [ 50]: ed30bd78b1885ff0 +Block 0012 [ 51]: 0fd66bdd36d98a98 +Block 0012 [ 52]: 03abfc600e92f6c3 +Block 0012 [ 53]: c9696dbd2e2eba13 +Block 0012 [ 54]: cc14dc0fe7d114cc +Block 0012 [ 55]: e8ea18a97e82d90c +Block 0012 [ 56]: 0424e0fe0044c042 +Block 0012 [ 57]: ffae154a49dd9d01 +Block 0012 [ 58]: 6658a1ed74f08a8b +Block 0012 [ 59]: 248914e8d4de3743 +Block 0012 [ 60]: 23b1a8a054fc2dc9 +Block 0012 [ 61]: 54bb6b0f239a1202 +Block 0012 [ 62]: b26d8545b0b8d431 +Block 0012 [ 63]: 41029e4ba502397a +Block 0012 [ 64]: 421e06ec5441bcb2 +Block 0012 [ 65]: 1ba5b0ee439d2d63 +Block 0012 [ 66]: 2da3a807f3ff4323 +Block 0012 [ 67]: 2742b4c66c62189d +Block 0012 [ 68]: bd9d25027fc2314a +Block 0012 [ 69]: 66d3b6f9cbb56538 +Block 0012 [ 70]: d33c241653c83fe5 +Block 0012 [ 71]: 7ae3528f6e512592 +Block 0012 [ 72]: ef5a0296a28a43fd +Block 0012 [ 73]: a0edb71f2487989b +Block 0012 [ 74]: a4cb2cec23ed537c +Block 0012 [ 75]: b5f488772baa93eb +Block 0012 [ 76]: 49ca7fa7da5fdf94 +Block 0012 [ 77]: 888430579906b669 +Block 0012 [ 78]: c19fcbbe58ec7891 +Block 0012 [ 79]: aa6d5dfa8e7cb53e +Block 0012 [ 80]: 0615bb3755e4ddbb +Block 0012 [ 81]: 6a7f71b5130eab08 +Block 0012 [ 82]: 0ea866119ff0f0ea +Block 0012 [ 83]: 97830e7c4f50687b +Block 0012 [ 84]: 4bcb4a4a73359185 +Block 0012 [ 85]: 0f1ca64127e1448c +Block 0012 [ 86]: 2d16448bcc734e2f +Block 0012 [ 87]: 9ff24758d2990ee0 +Block 0012 [ 88]: 7cc84dfc8b738b71 +Block 0012 [ 89]: 9aa3f9947fb1f62d +Block 0012 [ 90]: 09354a98af66a3fe +Block 0012 [ 91]: 612103bfbda63484 +Block 0012 [ 92]: ab307f9b9f62e01b +Block 0012 [ 93]: ed837a895bb8b2d6 +Block 0012 [ 94]: 141d971b389f1d29 +Block 0012 [ 95]: bbba4eea3e13b193 +Block 0012 [ 96]: e3532479251d0b57 +Block 0012 [ 97]: 2c32b548cb6bf2ed +Block 0012 [ 98]: ed5ee29a68174778 +Block 0012 [ 99]: aa55d7b0274f0e31 +Block 0012 [100]: e4b5d717ba725392 +Block 0012 [101]: de42cbaad6431d7e +Block 0012 [102]: 860180f00221947b +Block 0012 [103]: 78472da3db1201a5 +Block 0012 [104]: b52ac1918c4c2ed7 +Block 0012 [105]: 17391fc4569e555c +Block 0012 [106]: 499819cf76e30f9b +Block 0012 [107]: a675cac605905f75 +Block 0012 [108]: 6a665ec6d7126dce +Block 0012 [109]: 4f94b37966787280 +Block 0012 [110]: de10b2867e5dbe38 +Block 0012 [111]: 832cbd205f28a0ea +Block 0012 [112]: 44e056fd2e9b0082 +Block 0012 [113]: 81855caf3d872ca9 +Block 0012 [114]: 54fe1974935fd3b9 +Block 0012 [115]: 68c029edb1ee47be +Block 0012 [116]: 0c79bbc7e8ac560f +Block 0012 [117]: 2656c97869498c44 +Block 0012 [118]: 58ca9f1682a82cff +Block 0012 [119]: 35232b69467d0037 +Block 0012 [120]: 7d4e47ee2c0cca0b +Block 0012 [121]: 808132432378c13c +Block 0012 [122]: 6fe35ab35928b42c +Block 0012 [123]: e5b761f541a98818 +Block 0012 [124]: debb7cca4239ab7d +Block 0012 [125]: d2c77542f359d6f4 +Block 0012 [126]: 6dee7cf3e7094763 +Block 0012 [127]: 412d341f4db85305 +Block 0013 [ 0]: c70920a92cb26ed9 +Block 0013 [ 1]: d9d1a305c3c4ab20 +Block 0013 [ 2]: 5e105d030521a722 +Block 0013 [ 3]: b699dcfc017a8eed +Block 0013 [ 4]: f186fb821a424d24 +Block 0013 [ 5]: 3cbdc486daf92b0b +Block 0013 [ 6]: 73ead930b6005763 +Block 0013 [ 7]: 369651d278a36f82 +Block 0013 [ 8]: 6b321d4426764d6d +Block 0013 [ 9]: 65359c09f4aa9130 +Block 0013 [ 10]: bac29a7788b63d81 +Block 0013 [ 11]: 6141dc0be16d635d +Block 0013 [ 12]: d71fe34cdb32c062 +Block 0013 [ 13]: 783373adad773100 +Block 0013 [ 14]: 623a786f866c4040 +Block 0013 [ 15]: f36347067043d854 +Block 0013 [ 16]: 30caf9b9782c9dfb +Block 0013 [ 17]: 61ca4437a6c3fde3 +Block 0013 [ 18]: f7187ef60eab8508 +Block 0013 [ 19]: 65246f0526f71516 +Block 0013 [ 20]: 7d487059b075eb12 +Block 0013 [ 21]: 5188536efc815a54 +Block 0013 [ 22]: 2d5101c366b1f784 +Block 0013 [ 23]: dcdb485cb186f0cd +Block 0013 [ 24]: 3252c1a7fd162804 +Block 0013 [ 25]: 433de6dac35f9057 +Block 0013 [ 26]: f95f0f0b42c73d69 +Block 0013 [ 27]: 67f3b675462b1dda +Block 0013 [ 28]: d39c71d2476e87ea +Block 0013 [ 29]: f652d879ced55160 +Block 0013 [ 30]: dde336e862764fdf +Block 0013 [ 31]: 6088281a6f50fbda +Block 0013 [ 32]: b852cf8a0737bd37 +Block 0013 [ 33]: 6263a7ac759c6f6f +Block 0013 [ 34]: 07eacff726a0e0c2 +Block 0013 [ 35]: c88b010fea77e722 +Block 0013 [ 36]: 957d644af7a1d16e +Block 0013 [ 37]: e14ff78741afe828 +Block 0013 [ 38]: a327f71f969be502 +Block 0013 [ 39]: 7de49f4e170813f4 +Block 0013 [ 40]: e2d814b3994b3fca +Block 0013 [ 41]: 1908fb9c157569bb +Block 0013 [ 42]: 976111c502a0f245 +Block 0013 [ 43]: 89cf1accc7dbfd36 +Block 0013 [ 44]: fc3de0f3e74f5c88 +Block 0013 [ 45]: 8a2959b9ecaaf303 +Block 0013 [ 46]: b933b20c6cc38c3b +Block 0013 [ 47]: 821d84298c43a930 +Block 0013 [ 48]: 3fff1ee1832c4e0a +Block 0013 [ 49]: d0f56311037d5f41 +Block 0013 [ 50]: 371028f135ed5c9e +Block 0013 [ 51]: 05d816f92a122587 +Block 0013 [ 52]: 95f0eb6798d608e7 +Block 0013 [ 53]: 80c91b584f0b03fc +Block 0013 [ 54]: 44d1a6ae6e195f06 +Block 0013 [ 55]: ce1a69c88ccfde9e +Block 0013 [ 56]: 55e6aa8a5921a608 +Block 0013 [ 57]: a9d857bfc24a2e17 +Block 0013 [ 58]: a4ab20a453ef665c +Block 0013 [ 59]: b9ea6bada03f6b71 +Block 0013 [ 60]: 093918f0708179c8 +Block 0013 [ 61]: 57224c2518e38f9d +Block 0013 [ 62]: 546a6137c5c52378 +Block 0013 [ 63]: cdab2811db1a5e0c +Block 0013 [ 64]: f69c38c0b38d90d3 +Block 0013 [ 65]: b6917c99e10d6f0a +Block 0013 [ 66]: f692ef24bd348ce5 +Block 0013 [ 67]: c0e6070792830b70 +Block 0013 [ 68]: 60cae1d8de0a398d +Block 0013 [ 69]: 3bcc56d30a556965 +Block 0013 [ 70]: c0f29dfeb7b5e34a +Block 0013 [ 71]: 2704f9c770be92bc +Block 0013 [ 72]: 00b3a71eacbebfab +Block 0013 [ 73]: 5b92d32543716583 +Block 0013 [ 74]: 7e24bb60453c2970 +Block 0013 [ 75]: 2df67c4143260c92 +Block 0013 [ 76]: c5fde8273c0137f7 +Block 0013 [ 77]: b0a7848eac665513 +Block 0013 [ 78]: 4ccb4516a016c07d +Block 0013 [ 79]: 60c02bf8de4f1bc3 +Block 0013 [ 80]: e8e6b622b3d9bfbb +Block 0013 [ 81]: 379e0403b68c16ca +Block 0013 [ 82]: f0971a9a29bc1c8b +Block 0013 [ 83]: b86253946474734d +Block 0013 [ 84]: f1abbc26aca6f49a +Block 0013 [ 85]: c1b54462f1ac893e +Block 0013 [ 86]: 5d524385f72433bb +Block 0013 [ 87]: 44453f44df1d2608 +Block 0013 [ 88]: a17c13e65c78dc86 +Block 0013 [ 89]: d920daf0f8abf0fa +Block 0013 [ 90]: 24d05fcfb4261ea7 +Block 0013 [ 91]: fe57e1c7dbd46e45 +Block 0013 [ 92]: e0cf1d36c1482a53 +Block 0013 [ 93]: 0099360275359288 +Block 0013 [ 94]: 875df94b517090c8 +Block 0013 [ 95]: 771125540ad7b6e0 +Block 0013 [ 96]: 658769481c9f2d91 +Block 0013 [ 97]: 8e96e8797fc2b335 +Block 0013 [ 98]: c117f6b6519475c6 +Block 0013 [ 99]: 30b95e0e37f7f933 +Block 0013 [100]: 55e73cb5fa5b4735 +Block 0013 [101]: 7ea0b7d4a9b76057 +Block 0013 [102]: 878a1c10e2d6523e +Block 0013 [103]: d675de48042f30fe +Block 0013 [104]: 17f3d868f1c5e8a3 +Block 0013 [105]: 3d341616c62ce828 +Block 0013 [106]: 268acb2a936b4cc3 +Block 0013 [107]: d1bf24d7d14d8894 +Block 0013 [108]: 75e5104aa5274d8f +Block 0013 [109]: fa23bc856604f803 +Block 0013 [110]: 79c3a14ed5cec597 +Block 0013 [111]: eaf01ffc019b86bd +Block 0013 [112]: 4b2f2e5888831da1 +Block 0013 [113]: 8097cfa74319e9a6 +Block 0013 [114]: d9d2a50cdda6e52c +Block 0013 [115]: 39f7e9e70a8fc338 +Block 0013 [116]: 00a53fba2c35f3d6 +Block 0013 [117]: 8c93edd0ff109ca1 +Block 0013 [118]: f6075da5089f6509 +Block 0013 [119]: bf06e904ef71e7b2 +Block 0013 [120]: c7052c3a08ac9384 +Block 0013 [121]: a283f90913024a36 +Block 0013 [122]: d1097e4b32547ab2 +Block 0013 [123]: 14f15ce9846360cf +Block 0013 [124]: e896c41d236001a5 +Block 0013 [125]: 28834b042100ffff +Block 0013 [126]: cd4684cbb6e07746 +Block 0013 [127]: 9e9e5138ae2447c6 +Block 0014 [ 0]: 464fe499fd4bc54a +Block 0014 [ 1]: 01ca27117a522b27 +Block 0014 [ 2]: cefb91b50a87ec01 +Block 0014 [ 3]: 0bd05a9a7af64404 +Block 0014 [ 4]: 41514da378231234 +Block 0014 [ 5]: cc3c841b4962d7e6 +Block 0014 [ 6]: 59d32fdfa0f1799c +Block 0014 [ 7]: 27cad6e8edad4f2c +Block 0014 [ 8]: 594398209f4b2930 +Block 0014 [ 9]: f6c5854c48e52087 +Block 0014 [ 10]: 29d68e913c165052 +Block 0014 [ 11]: ce2fb5ab0f259e1f +Block 0014 [ 12]: 3ba0c01b6b7786d1 +Block 0014 [ 13]: 3c00b361c52adae1 +Block 0014 [ 14]: 3a86e3364e49fa6e +Block 0014 [ 15]: db551315c92412f7 +Block 0014 [ 16]: 528d22685ecbe099 +Block 0014 [ 17]: 0771dc1de2c966bf +Block 0014 [ 18]: b144f684b0e297cb +Block 0014 [ 19]: a23b7edda45b4e67 +Block 0014 [ 20]: 67fb1a46a13ad6ea +Block 0014 [ 21]: 9f1dd5edf2d9eb38 +Block 0014 [ 22]: bb2cafbb4897b681 +Block 0014 [ 23]: 0cb4c83cd099415e +Block 0014 [ 24]: da038126b8389fca +Block 0014 [ 25]: ce8f9af6da253e4f +Block 0014 [ 26]: 92f710c97b9f1a93 +Block 0014 [ 27]: 4d8a396ead1f1b3f +Block 0014 [ 28]: 926c1378e72539b1 +Block 0014 [ 29]: 46534e08a849cc26 +Block 0014 [ 30]: c990cb8c547e8a1e +Block 0014 [ 31]: 88b8edf87ece7489 +Block 0014 [ 32]: 4e69a49536b34b2e +Block 0014 [ 33]: f565f19fed18634a +Block 0014 [ 34]: 267d9281fcfafcd7 +Block 0014 [ 35]: 150c54e6e1e509f1 +Block 0014 [ 36]: 04b62fc3c290d9cf +Block 0014 [ 37]: 03e5edb36f774565 +Block 0014 [ 38]: 6fdca22c7481ed92 +Block 0014 [ 39]: 2d2be57e0ae66e0b +Block 0014 [ 40]: 42865d66ac66c1b3 +Block 0014 [ 41]: f843b00c30d7c44f +Block 0014 [ 42]: 5e412a9e2d78a1cc +Block 0014 [ 43]: cf217c5b54fdabec +Block 0014 [ 44]: d6d5c47336e51500 +Block 0014 [ 45]: 2e99184e7e141c40 +Block 0014 [ 46]: 8aa25d6a64b77d55 +Block 0014 [ 47]: d61047ee538eb859 +Block 0014 [ 48]: 37e959cef2486752 +Block 0014 [ 49]: 9d9b9432b971d5c8 +Block 0014 [ 50]: de1dfe11560c27c2 +Block 0014 [ 51]: 7463c62e208d9a50 +Block 0014 [ 52]: 1a271dcd0843ecdd +Block 0014 [ 53]: a4b6a899d90b4216 +Block 0014 [ 54]: 5aa12825aba07285 +Block 0014 [ 55]: e4c55247c2be17ac +Block 0014 [ 56]: d2f98ffbef59c5d1 +Block 0014 [ 57]: b06dec47496fe53b +Block 0014 [ 58]: 97c77c0aebd0fe77 +Block 0014 [ 59]: d428ee00d7ffb69a +Block 0014 [ 60]: 994609d7fdf59129 +Block 0014 [ 61]: 44ddec16911fa14e +Block 0014 [ 62]: 6bac7e6b73a99555 +Block 0014 [ 63]: b9cd8040e25ab661 +Block 0014 [ 64]: a910eb8e41cf223f +Block 0014 [ 65]: 722fd0baa5b77c73 +Block 0014 [ 66]: 0b44f42d90da09fa +Block 0014 [ 67]: deb45959e84b5f57 +Block 0014 [ 68]: 80b9388d473ff3f3 +Block 0014 [ 69]: 2e30383755ef7114 +Block 0014 [ 70]: 7b2169c31fe6f39a +Block 0014 [ 71]: 9e7583bfcde8e7b6 +Block 0014 [ 72]: dcf529aff86152bb +Block 0014 [ 73]: 31451434cedfaeac +Block 0014 [ 74]: 88d86ffc5ba97e6f +Block 0014 [ 75]: 78335f8de49f182b +Block 0014 [ 76]: 9048a85e52e84c34 +Block 0014 [ 77]: cdfa26b74260f3f2 +Block 0014 [ 78]: 68328318c0cd0702 +Block 0014 [ 79]: cedbff36e47cae15 +Block 0014 [ 80]: 21ff51c6aed6d794 +Block 0014 [ 81]: dd8e212e2e46c0f6 +Block 0014 [ 82]: 9485c1a009bd5e98 +Block 0014 [ 83]: 9479bd87f489267d +Block 0014 [ 84]: 36d19db1b3894049 +Block 0014 [ 85]: 17625eaad7eb635f +Block 0014 [ 86]: 08afd5df602241e2 +Block 0014 [ 87]: d12f716d01def27a +Block 0014 [ 88]: e10451a6441ecd00 +Block 0014 [ 89]: 81b2ccdc64736c07 +Block 0014 [ 90]: 07bb4d968b09b954 +Block 0014 [ 91]: 442e179652c03202 +Block 0014 [ 92]: 2663dfd4ed026986 +Block 0014 [ 93]: 21dcbad0d595f34c +Block 0014 [ 94]: f290c650c607c61e +Block 0014 [ 95]: 0558c655f8baacb2 +Block 0014 [ 96]: 76880b01adcce90f +Block 0014 [ 97]: 4f9060d2c6065d59 +Block 0014 [ 98]: c11f4eb991497926 +Block 0014 [ 99]: df91c784b49cfa8a +Block 0014 [100]: b28e4591441e80d5 +Block 0014 [101]: 6210f99cc16bf292 +Block 0014 [102]: 3773ca1ff7918a52 +Block 0014 [103]: bdaad928b768f9e9 +Block 0014 [104]: 8ca72c318c9e4eaa +Block 0014 [105]: 93d6a168756cc4df +Block 0014 [106]: 531c0f8459e00218 +Block 0014 [107]: 24cd1b413c399ac8 +Block 0014 [108]: 85d74155ca0afbc3 +Block 0014 [109]: e31c316e7a391faa +Block 0014 [110]: 53e9550145a43efa +Block 0014 [111]: 0efaf72fee17caf8 +Block 0014 [112]: 6e53a1b3b4451058 +Block 0014 [113]: 326429769306e1cd +Block 0014 [114]: 5f28af8f91b9094b +Block 0014 [115]: 86ec80f642192573 +Block 0014 [116]: 743c986ada4f4279 +Block 0014 [117]: 4672258b7ac2db20 +Block 0014 [118]: cd4c5ef34f20f7bd +Block 0014 [119]: c633106a5ff76cca +Block 0014 [120]: e15b5f635bba35ed +Block 0014 [121]: ed2563411ee74df7 +Block 0014 [122]: 33641bd5355327d8 +Block 0014 [123]: 2417d1d6977cbbdf +Block 0014 [124]: 4a84eca8fbd6b23a +Block 0014 [125]: aa8c5732a97e917e +Block 0014 [126]: 70e8d8c96fbcaf79 +Block 0014 [127]: 018888d29ee05f5a +Block 0015 [ 0]: 603ea679f1f7f248 +Block 0015 [ 1]: 51a571c385f5ae35 +Block 0015 [ 2]: 7c3362cd969131c5 +Block 0015 [ 3]: dfb8c198f2780d3e +Block 0015 [ 4]: c1e8e34f1518a415 +Block 0015 [ 5]: 828f73908e5ff6bc +Block 0015 [ 6]: 168506eaeae05625 +Block 0015 [ 7]: 9443dbd5a6a34152 +Block 0015 [ 8]: b1fc6687b6c1f551 +Block 0015 [ 9]: a943dfaeb6b48116 +Block 0015 [ 10]: ebf2b2633b70f35e +Block 0015 [ 11]: 33da4887c873fff2 +Block 0015 [ 12]: 07ea6837a6474d37 +Block 0015 [ 13]: 3160ebf9f74f9ddf +Block 0015 [ 14]: 9d84df5f33ca9058 +Block 0015 [ 15]: 2fb11cddd7f966f6 +Block 0015 [ 16]: 3368e81e0b610af2 +Block 0015 [ 17]: 58a7f918c416cc7e +Block 0015 [ 18]: 8edb15b8658b1678 +Block 0015 [ 19]: 923c66271573e83c +Block 0015 [ 20]: 71368b07cb9ec2bb +Block 0015 [ 21]: abae2356cd9054ca +Block 0015 [ 22]: ec213efd5a710eed +Block 0015 [ 23]: 029899dfc5d97961 +Block 0015 [ 24]: 83c20d46709f4846 +Block 0015 [ 25]: bcf0c30d35ed67f1 +Block 0015 [ 26]: 476549a704059ff9 +Block 0015 [ 27]: a36d09d17ca38288 +Block 0015 [ 28]: 2bbdd13b236e6f77 +Block 0015 [ 29]: 3cf08ae267be5c1c +Block 0015 [ 30]: 7ad9e9f695a7d8f6 +Block 0015 [ 31]: a5218e662af06188 +Block 0015 [ 32]: fef135b2545f0c23 +Block 0015 [ 33]: fdc6c6552ae5abd6 +Block 0015 [ 34]: e214be48ab403d6e +Block 0015 [ 35]: 0aea253269b32b8a +Block 0015 [ 36]: d0fcdf7a175c3065 +Block 0015 [ 37]: 16c08c1a401ac22c +Block 0015 [ 38]: b6ebf9a47b78ae82 +Block 0015 [ 39]: 40c0d3a431d427cb +Block 0015 [ 40]: 1d2df60774b7516c +Block 0015 [ 41]: 970c0594bf1713ce +Block 0015 [ 42]: caacc697b1a924fb +Block 0015 [ 43]: b0fb0798fc30f008 +Block 0015 [ 44]: 5d479f4719cda2bf +Block 0015 [ 45]: 8817e1456a05ea6f +Block 0015 [ 46]: ef0efd291b92072a +Block 0015 [ 47]: 3a780a8cebe24df0 +Block 0015 [ 48]: 0a0f36708d009961 +Block 0015 [ 49]: e84fd081785e063e +Block 0015 [ 50]: 3aebd3af46afc993 +Block 0015 [ 51]: 9790053e206326e7 +Block 0015 [ 52]: a6698e15adffe4d7 +Block 0015 [ 53]: 17fc42f0ab69daf6 +Block 0015 [ 54]: 13e801bb0cb130ac +Block 0015 [ 55]: 74c7936ec777b871 +Block 0015 [ 56]: a0790fdfd41c239c +Block 0015 [ 57]: d74c250b3121d152 +Block 0015 [ 58]: 281f4425d101ad0b +Block 0015 [ 59]: 0be22b3281ad2682 +Block 0015 [ 60]: 7e58fdb0fe4341c5 +Block 0015 [ 61]: 7f0583da9709897f +Block 0015 [ 62]: 681fe8e0ca6b1695 +Block 0015 [ 63]: 4c82c9b2df29eb43 +Block 0015 [ 64]: 39bfdc09e2a0cd2c +Block 0015 [ 65]: 26a802e658b08bef +Block 0015 [ 66]: ae718a50c8b36a6a +Block 0015 [ 67]: 91dfcdc079f34a1a +Block 0015 [ 68]: 022fdcd482307022 +Block 0015 [ 69]: a01e00a7edbac6fb +Block 0015 [ 70]: f733e881c118aa60 +Block 0015 [ 71]: c3e9f578ceb4e304 +Block 0015 [ 72]: c2f9ab41fc414115 +Block 0015 [ 73]: 0be7e099471776f7 +Block 0015 [ 74]: a9cf9956c86573e6 +Block 0015 [ 75]: 3f578a80a849cff9 +Block 0015 [ 76]: c7e3fc9e98f31471 +Block 0015 [ 77]: 42aecfc7b1de9948 +Block 0015 [ 78]: 1d57c7a1272b411d +Block 0015 [ 79]: 35fa53c2bd8b60ae +Block 0015 [ 80]: 36946b2539dda39c +Block 0015 [ 81]: fe67152e6cbe4982 +Block 0015 [ 82]: aad7c71ee4ccb815 +Block 0015 [ 83]: a6bf82bbd66eb497 +Block 0015 [ 84]: e98a7e8ea4f112cb +Block 0015 [ 85]: 3b9739ac57c554bf +Block 0015 [ 86]: 7d42c2c864dfc6d7 +Block 0015 [ 87]: eec7b548af5dd60d +Block 0015 [ 88]: 3cf9455dabe479ed +Block 0015 [ 89]: eb13c9385b4acca1 +Block 0015 [ 90]: 6a117a05a0e1bb28 +Block 0015 [ 91]: 37ed6e0757e5f90f +Block 0015 [ 92]: c65e56b9dab724ab +Block 0015 [ 93]: feb99f41fe526cb1 +Block 0015 [ 94]: f786c4f5cf059e0c +Block 0015 [ 95]: 71db252a2f4b9ed2 +Block 0015 [ 96]: 229d49ab07869a0a +Block 0015 [ 97]: c32662ec9787492d +Block 0015 [ 98]: 5357479f687d9fc1 +Block 0015 [ 99]: a1a909546c0e6b00 +Block 0015 [100]: 8ea67c98294f92ed +Block 0015 [101]: d22dfd0daa54e93f +Block 0015 [102]: da3491c6459dec56 +Block 0015 [103]: ec8c7390216ea15a +Block 0015 [104]: fc9e949d441d1a4e +Block 0015 [105]: 02e380d6957e504b +Block 0015 [106]: 0bd1228a3012bb24 +Block 0015 [107]: 2f50cf0174c5d7d0 +Block 0015 [108]: adb8c69342185bee +Block 0015 [109]: a77cda66bf9982b9 +Block 0015 [110]: 50157252fe6fc4ef +Block 0015 [111]: 89ce6579014b9c4c +Block 0015 [112]: 937b1f6a3e284633 +Block 0015 [113]: d2b1a673d7435110 +Block 0015 [114]: 062c9baf56a8b934 +Block 0015 [115]: ac7dddf61f0ffdd9 +Block 0015 [116]: c6a368e433f4f7c9 +Block 0015 [117]: 5cc234b0de9285ba +Block 0015 [118]: 5d4b8ac62c3ca1a2 +Block 0015 [119]: 5c401334236bd30e +Block 0015 [120]: a8970643f53adef3 +Block 0015 [121]: 7e4d52a2c6d13a4d +Block 0015 [122]: d96227253b2326ea +Block 0015 [123]: e53d4d32bc256c93 +Block 0015 [124]: c9f1dd4e0ec95dd6 +Block 0015 [125]: bb16f7f16252f690 +Block 0015 [126]: ed270d162b295110 +Block 0015 [127]: 902f2b9becfc2a4b +Block 0016 [ 0]: f836c8867716a95d +Block 0016 [ 1]: 5a4bbaa6cf32467f +Block 0016 [ 2]: 647e9aa3fc560638 +Block 0016 [ 3]: ba25f0998ebcfa33 +Block 0016 [ 4]: 900f4408aabd1bb7 +Block 0016 [ 5]: 8bd32329f62d4b10 +Block 0016 [ 6]: ac707aabf76ce122 +Block 0016 [ 7]: d4db0063a2957e5d +Block 0016 [ 8]: a94142b9a40be515 +Block 0016 [ 9]: 263b51c8382d8587 +Block 0016 [ 10]: bf9465acb39eb20c +Block 0016 [ 11]: 20d8fdd516335d90 +Block 0016 [ 12]: bc8151d59a7bae83 +Block 0016 [ 13]: 7b95f1c93208ea74 +Block 0016 [ 14]: 30bb2707ae422542 +Block 0016 [ 15]: cbddfc342ebe96b4 +Block 0016 [ 16]: 246f4b3b6937b59e +Block 0016 [ 17]: 4ba7cc438bb1386f +Block 0016 [ 18]: bc1fd9fb6fe3f6f8 +Block 0016 [ 19]: dae17cb442f9b24c +Block 0016 [ 20]: 3b3fc8c27189c245 +Block 0016 [ 21]: d4d7d0899e9ea324 +Block 0016 [ 22]: 3ce0fb5494ba0170 +Block 0016 [ 23]: 82e5dc4f44e8b47e +Block 0016 [ 24]: a9aee19dce0afb3d +Block 0016 [ 25]: 4b9285c7ff0e0ce8 +Block 0016 [ 26]: 28238fd7e0c3ec24 +Block 0016 [ 27]: 5caeaca234324edc +Block 0016 [ 28]: f584af325ebfffa6 +Block 0016 [ 29]: 045bc01a53084a77 +Block 0016 [ 30]: e109164036727cdf +Block 0016 [ 31]: 1d70d0b4c938b25d +Block 0016 [ 32]: c0743c96c42f74ad +Block 0016 [ 33]: 5a8a03c8f46b9403 +Block 0016 [ 34]: 2238c6a81150dd4d +Block 0016 [ 35]: 1839e472eeeb8e5d +Block 0016 [ 36]: 32d4283b30cbe865 +Block 0016 [ 37]: a542972b4e3753fe +Block 0016 [ 38]: 3f3aad5eea35871f +Block 0016 [ 39]: 29ba28eacaa5c78e +Block 0016 [ 40]: ae006eae0c91ad2c +Block 0016 [ 41]: 8f914e0a5325134e +Block 0016 [ 42]: 545d1e53d212ff70 +Block 0016 [ 43]: e1bb1b4a69250da0 +Block 0016 [ 44]: 9598c702643d6912 +Block 0016 [ 45]: 3120a69431919925 +Block 0016 [ 46]: 267c164eb862ef68 +Block 0016 [ 47]: 58ec801c08b2a209 +Block 0016 [ 48]: 8434d9c58bb0c83c +Block 0016 [ 49]: c355b1a66654f11f +Block 0016 [ 50]: ecaf01bf6b020fb2 +Block 0016 [ 51]: 2f80a7d1262946fb +Block 0016 [ 52]: f2bbfcc21cf454ca +Block 0016 [ 53]: 166391329b9a3d9f +Block 0016 [ 54]: 89b5d0f35ee79a41 +Block 0016 [ 55]: d82ae0163df57fed +Block 0016 [ 56]: 87e2107fe01defcd +Block 0016 [ 57]: 308626494e60a17f +Block 0016 [ 58]: 938403add94b7b0b +Block 0016 [ 59]: 552911a95afc65bd +Block 0016 [ 60]: cfe25f13b0e9ac9a +Block 0016 [ 61]: fc4b24701453d163 +Block 0016 [ 62]: 8227318e53a02d82 +Block 0016 [ 63]: 21e3868e59d26094 +Block 0016 [ 64]: 406a7c293dd09893 +Block 0016 [ 65]: 8fab59fa2babd787 +Block 0016 [ 66]: 5c9da0afeeb011dc +Block 0016 [ 67]: d7fead76e8beefed +Block 0016 [ 68]: 91a3c3d0314379df +Block 0016 [ 69]: d4996fd2cb307612 +Block 0016 [ 70]: 479c9afc5fd7df83 +Block 0016 [ 71]: 91f712370a2b2e50 +Block 0016 [ 72]: ce62c61596018526 +Block 0016 [ 73]: 337f114ee290c307 +Block 0016 [ 74]: 8ae21a80e12d0b54 +Block 0016 [ 75]: 378f97ecf04ec20b +Block 0016 [ 76]: 32b60ae20ad4e0dd +Block 0016 [ 77]: 770a606fcf9e97a3 +Block 0016 [ 78]: b60142050eb6279f +Block 0016 [ 79]: 575da5e303a30734 +Block 0016 [ 80]: 20582e58e2aa8014 +Block 0016 [ 81]: 3e4ad6ba61641b82 +Block 0016 [ 82]: d180814d2fd1e616 +Block 0016 [ 83]: 2500b543e8d9348f +Block 0016 [ 84]: 7c26490c272be0fa +Block 0016 [ 85]: ef7bbb8de2331053 +Block 0016 [ 86]: a9577d5498ccd0f4 +Block 0016 [ 87]: 59969085678603a8 +Block 0016 [ 88]: 9eae26d422a33fc8 +Block 0016 [ 89]: 9c64d10a63f57074 +Block 0016 [ 90]: f347be4d488db2ed +Block 0016 [ 91]: 8d5b6cb28b5a19b0 +Block 0016 [ 92]: d86e4e6383dd2e6d +Block 0016 [ 93]: f2d2668b62b1a509 +Block 0016 [ 94]: 9d07c6329537bbf3 +Block 0016 [ 95]: 5143198e6c6043dd +Block 0016 [ 96]: f10ae67a04a6a65d +Block 0016 [ 97]: bbd5b7bdd2d537c2 +Block 0016 [ 98]: 013697d11cc0a779 +Block 0016 [ 99]: 3a55d5f35217ee01 +Block 0016 [100]: ebee5db9b8b39ba4 +Block 0016 [101]: efd5091112d5b476 +Block 0016 [102]: 0fd56e730bb61cc7 +Block 0016 [103]: cca6e754652c9753 +Block 0016 [104]: fdc7de8f402e9c30 +Block 0016 [105]: 215147cf5757c82f +Block 0016 [106]: 22b0d7672b12e4a7 +Block 0016 [107]: 6e32440373ff7d8f +Block 0016 [108]: 46ff737e2ecc4655 +Block 0016 [109]: 31dcd39c1348711d +Block 0016 [110]: 19fd948d367828d5 +Block 0016 [111]: 81211b6835204ac8 +Block 0016 [112]: 654a8be36e225e7f +Block 0016 [113]: b544dbdc7cfe4f25 +Block 0016 [114]: 48cfaad52a6df0dc +Block 0016 [115]: 350f7225a0f0a998 +Block 0016 [116]: f24baaeedfc1a089 +Block 0016 [117]: c360f609af476cba +Block 0016 [118]: c63c26deff4fc434 +Block 0016 [119]: 1be928444f947c27 +Block 0016 [120]: 18f278838397f4f3 +Block 0016 [121]: 9db306ee0e37be90 +Block 0016 [122]: e952905cfad5f42b +Block 0016 [123]: e6fd94188892b180 +Block 0016 [124]: caaa7624da0c7804 +Block 0016 [125]: ba7f688ce75ab500 +Block 0016 [126]: 3f3617b538632d14 +Block 0016 [127]: 55d601b6e6b0a93e +Block 0017 [ 0]: d3809e57fd122a36 +Block 0017 [ 1]: 27018400b40b6bd4 +Block 0017 [ 2]: 2eb5b349cda48fdb +Block 0017 [ 3]: 8c521093b5689d2d +Block 0017 [ 4]: 757bdf1deedda6d3 +Block 0017 [ 5]: dc07883fdadd0cd2 +Block 0017 [ 6]: fe371ca4088efdc6 +Block 0017 [ 7]: 7c87450f671ae946 +Block 0017 [ 8]: 183f7c12e15e0f1d +Block 0017 [ 9]: 679c5df134ee1f53 +Block 0017 [ 10]: 58e3679afa64e3ba +Block 0017 [ 11]: f3e42838526fee18 +Block 0017 [ 12]: 908f66c2693ffab4 +Block 0017 [ 13]: b1ef6cf1bd798b84 +Block 0017 [ 14]: 3ec433347fefcbe5 +Block 0017 [ 15]: 6e77dbbe5e3e2b98 +Block 0017 [ 16]: 5825a9a768529f5e +Block 0017 [ 17]: 0e78d85f0e84b2d8 +Block 0017 [ 18]: b25e77fe4055bc58 +Block 0017 [ 19]: 5fa90a623f667c03 +Block 0017 [ 20]: 2d328a4e5bb76f56 +Block 0017 [ 21]: d9363cc3f91a4305 +Block 0017 [ 22]: 1f4b73633fd449a1 +Block 0017 [ 23]: 6e9e53a5ef87c14a +Block 0017 [ 24]: c5c0e550d61c051f +Block 0017 [ 25]: 5a26d972eaf76bfb +Block 0017 [ 26]: fbcbc4188c8c046e +Block 0017 [ 27]: bc90cd94be174eb5 +Block 0017 [ 28]: b80cc0e6f43bf47f +Block 0017 [ 29]: f197c2cb917ea7f8 +Block 0017 [ 30]: 6c71dfd84ef19721 +Block 0017 [ 31]: 4d6fdb854dd626bc +Block 0017 [ 32]: b8da64ba92e8a4af +Block 0017 [ 33]: d0514211c433cc99 +Block 0017 [ 34]: aa3f38f68bf6d132 +Block 0017 [ 35]: 9f1b318a2966cd09 +Block 0017 [ 36]: 498ecaf3121f536c +Block 0017 [ 37]: cc993fe794ecb670 +Block 0017 [ 38]: 07a9140fe68437ee +Block 0017 [ 39]: 159cbe19720fbd1a +Block 0017 [ 40]: 4d295994454b9205 +Block 0017 [ 41]: 4a6e4ae9c6294094 +Block 0017 [ 42]: e0f8cd2e5c659727 +Block 0017 [ 43]: e6c3f289a5793bfd +Block 0017 [ 44]: 15c797a37a8a8ea1 +Block 0017 [ 45]: dc808110ff558d6a +Block 0017 [ 46]: 1a5b59df6789e4cd +Block 0017 [ 47]: 4f634c7faa765d12 +Block 0017 [ 48]: 0d401f0b8d3fa3a2 +Block 0017 [ 49]: 1ba8bccb5137d6b2 +Block 0017 [ 50]: 6e925344599411bd +Block 0017 [ 51]: 7cb832ff5effa69c +Block 0017 [ 52]: d7631ef9410c81ac +Block 0017 [ 53]: adb5e7c5a9e5ee14 +Block 0017 [ 54]: d2263024d7dca964 +Block 0017 [ 55]: 4b4771c86ab28b85 +Block 0017 [ 56]: 79a09d79ca354333 +Block 0017 [ 57]: 6f3f5d45545ad500 +Block 0017 [ 58]: c8396ed371075a63 +Block 0017 [ 59]: e33a3b847439afff +Block 0017 [ 60]: 067a10405ad20ab2 +Block 0017 [ 61]: 518f07d02ad01a53 +Block 0017 [ 62]: 6d7efef33c97a6f0 +Block 0017 [ 63]: 20a0c2de6dd3c691 +Block 0017 [ 64]: 111bf03e43199f49 +Block 0017 [ 65]: 2ccc61157376219e +Block 0017 [ 66]: 3e941c50ec51a496 +Block 0017 [ 67]: 1dc0c5b8298d1bba +Block 0017 [ 68]: 8926cf9eee3716a0 +Block 0017 [ 69]: 589269c4ec6a13d7 +Block 0017 [ 70]: e3fad0bae9c71b1b +Block 0017 [ 71]: 6788c55d89db279a +Block 0017 [ 72]: 8f9a6cb1ae837299 +Block 0017 [ 73]: 9b417ea21f94c675 +Block 0017 [ 74]: 60516ddded254e8f +Block 0017 [ 75]: 708da0a62da471bc +Block 0017 [ 76]: 23be51f1da5fa6c2 +Block 0017 [ 77]: 3d654b78d4365097 +Block 0017 [ 78]: e0c50ebdd1ee10b5 +Block 0017 [ 79]: 4b1e8568fd44fbc2 +Block 0017 [ 80]: fdeaf05a29c509e3 +Block 0017 [ 81]: e9b00163c325096c +Block 0017 [ 82]: a00e565603383ded +Block 0017 [ 83]: 162eba41653cdfcb +Block 0017 [ 84]: 885280cb80784958 +Block 0017 [ 85]: 7523c5fb2d9f4739 +Block 0017 [ 86]: da3b098695b8aed7 +Block 0017 [ 87]: ee65585c4ce64e55 +Block 0017 [ 88]: 21c5babe35daba71 +Block 0017 [ 89]: a790750bee4b4361 +Block 0017 [ 90]: 5abbcf4a40653f30 +Block 0017 [ 91]: bcbe524de12b23db +Block 0017 [ 92]: b65696da967ba08d +Block 0017 [ 93]: e243e42d5f8dce1e +Block 0017 [ 94]: 5b8c7410ae02faaa +Block 0017 [ 95]: 3e03cb2c5c85496e +Block 0017 [ 96]: ea598cb74e12061b +Block 0017 [ 97]: adcfe1fce7ae1c3e +Block 0017 [ 98]: 728aaffcdc65b0e3 +Block 0017 [ 99]: 4d8d42d7f2b5465d +Block 0017 [100]: c70bf4211b94781f +Block 0017 [101]: 0bd066da9fa67568 +Block 0017 [102]: 27106a16e99c3820 +Block 0017 [103]: ae0758d6242923cb +Block 0017 [104]: b407bdd5f28c05a1 +Block 0017 [105]: f6d90560bcb6318e +Block 0017 [106]: 4c5210db01183f45 +Block 0017 [107]: cd9ee9c94df96e76 +Block 0017 [108]: e67355c9eef04f59 +Block 0017 [109]: 9ccf945294bcc3e4 +Block 0017 [110]: 922bc6af265ca962 +Block 0017 [111]: 2079e039460ec203 +Block 0017 [112]: a0e5bc615fc9ec33 +Block 0017 [113]: ffc3b98b6ed99d2f +Block 0017 [114]: 1072f708aea08b8e +Block 0017 [115]: a403be88ef0551e8 +Block 0017 [116]: 4f15c6100dcff2e6 +Block 0017 [117]: 4c03d3981f3b97bd +Block 0017 [118]: a46b77a99582507a +Block 0017 [119]: e221b79479ff67a8 +Block 0017 [120]: e4608ec676d5c1f7 +Block 0017 [121]: 8b6aebe9d18e5ead +Block 0017 [122]: 68ce6934678c18e1 +Block 0017 [123]: 6a6c0394eb8364f3 +Block 0017 [124]: 698108ae1f0af293 +Block 0017 [125]: 6fa0f6019a3a26cb +Block 0017 [126]: b868100fd8592784 +Block 0017 [127]: 6e58d5bbcc595213 +Block 0018 [ 0]: 57cebef82247f856 +Block 0018 [ 1]: 5e1f658f847d7865 +Block 0018 [ 2]: a7c6fe3ce6328555 +Block 0018 [ 3]: 631a4d11151e3705 +Block 0018 [ 4]: 6d284d4539081116 +Block 0018 [ 5]: 20d3a3ddd286d249 +Block 0018 [ 6]: fec04211ce617a63 +Block 0018 [ 7]: 7ee644759f4ebabc +Block 0018 [ 8]: 77562a61df6192e6 +Block 0018 [ 9]: f265d9297cf6614e +Block 0018 [ 10]: b2e83323b0fc0b58 +Block 0018 [ 11]: eccdb2ba777b86e1 +Block 0018 [ 12]: 5beae34fb3a6464c +Block 0018 [ 13]: b84166f5573d083c +Block 0018 [ 14]: 1fcda2af39c04119 +Block 0018 [ 15]: b8f70b179be17b47 +Block 0018 [ 16]: f3d8e53e6acc4177 +Block 0018 [ 17]: 19b95a946fed4e76 +Block 0018 [ 18]: ba2a8da965fc652f +Block 0018 [ 19]: b6701b63b3c4fc96 +Block 0018 [ 20]: 8c0b9123f5c11b4c +Block 0018 [ 21]: a0eb8910a8bd6d94 +Block 0018 [ 22]: 93aa541f6111cc04 +Block 0018 [ 23]: b3bec4a835858bf4 +Block 0018 [ 24]: 6e9ffdead30aa373 +Block 0018 [ 25]: dddd7ebaf76ea68f +Block 0018 [ 26]: 700692576d8960c3 +Block 0018 [ 27]: 45dcd0e76ce97c06 +Block 0018 [ 28]: 21b4ecad0175b5e4 +Block 0018 [ 29]: af4ed71c398c3ee2 +Block 0018 [ 30]: 80150398b797ce1e +Block 0018 [ 31]: 2daad86a706f4a4f +Block 0018 [ 32]: 420910e6608e98b7 +Block 0018 [ 33]: 4b29efc147979616 +Block 0018 [ 34]: 4f07907f12fa57dd +Block 0018 [ 35]: 2a81c8fc27ce4f90 +Block 0018 [ 36]: 529b811ba96962c4 +Block 0018 [ 37]: f2fc49e09b7af4b2 +Block 0018 [ 38]: a3bb2de56f665a4b +Block 0018 [ 39]: 3e514d87d7a29f21 +Block 0018 [ 40]: ec6b790cb0e59612 +Block 0018 [ 41]: 3bb1e91e151a466f +Block 0018 [ 42]: b73d5669c1d8216e +Block 0018 [ 43]: 7921ef01b7a4a93c +Block 0018 [ 44]: c8f6a995b360a712 +Block 0018 [ 45]: c34c6643843bd1a8 +Block 0018 [ 46]: 2b38febb4cd8f83f +Block 0018 [ 47]: dc4aa5ba31eff726 +Block 0018 [ 48]: df14215ffed3c376 +Block 0018 [ 49]: 9b5dbf6414a9f1d2 +Block 0018 [ 50]: c29eff069950104d +Block 0018 [ 51]: 2d6338ef7fba9bdb +Block 0018 [ 52]: 9cc4a960bb018ab8 +Block 0018 [ 53]: c0a5e0d3abbf0f8a +Block 0018 [ 54]: 09286cd24df88a53 +Block 0018 [ 55]: 134e6e53b4a1bf27 +Block 0018 [ 56]: 3d13daee8f39f022 +Block 0018 [ 57]: 6f1948c976a77be1 +Block 0018 [ 58]: d87832289e19e4ba +Block 0018 [ 59]: 7911cc3b53031ecd +Block 0018 [ 60]: b039845d8fdabb03 +Block 0018 [ 61]: 653addad2bacb75b +Block 0018 [ 62]: f65b51e7d8cad424 +Block 0018 [ 63]: 1f1d8139580c42cb +Block 0018 [ 64]: 5df05979b549dc5a +Block 0018 [ 65]: b20119fa66364ed9 +Block 0018 [ 66]: c97d32c279b9e2a1 +Block 0018 [ 67]: a918cf46e6737eae +Block 0018 [ 68]: ff21a9765032ef71 +Block 0018 [ 69]: 770f9f55a1e0200e +Block 0018 [ 70]: 480640feb18878ee +Block 0018 [ 71]: 0b77e9233263a358 +Block 0018 [ 72]: 0ccd9e0ebb663e1e +Block 0018 [ 73]: ced6ad184df7f058 +Block 0018 [ 74]: a925f1a938c57899 +Block 0018 [ 75]: 488da2f7160d6b2a +Block 0018 [ 76]: 65ff5349e555c646 +Block 0018 [ 77]: 956a1540757fe764 +Block 0018 [ 78]: 3377c61981a12707 +Block 0018 [ 79]: 6eda3ab6e5e5eef8 +Block 0018 [ 80]: ff28308032454454 +Block 0018 [ 81]: 894ebc48430bf23a +Block 0018 [ 82]: f972de40f6a522ca +Block 0018 [ 83]: 7f49a08de82f7586 +Block 0018 [ 84]: 0a9019c61f419e5f +Block 0018 [ 85]: bb6373eef70f6d9b +Block 0018 [ 86]: f998096fc62599be +Block 0018 [ 87]: 881633292e2bb822 +Block 0018 [ 88]: a8930b1906414588 +Block 0018 [ 89]: 05adc6acd9fa9c3b +Block 0018 [ 90]: 2037174e25917500 +Block 0018 [ 91]: fafe025db1dce058 +Block 0018 [ 92]: f29f8690945d2c1b +Block 0018 [ 93]: b574e9a567c92aab +Block 0018 [ 94]: f41f39ce02847751 +Block 0018 [ 95]: d330c19a9157fdbe +Block 0018 [ 96]: f188b654ff3cd095 +Block 0018 [ 97]: ecf62aaa970134db +Block 0018 [ 98]: df0e5a2106bf3d9d +Block 0018 [ 99]: f270149014f17360 +Block 0018 [100]: be18751373df5e3f +Block 0018 [101]: e170117374a725b7 +Block 0018 [102]: c6bc16281586428d +Block 0018 [103]: c8807c5440d9bbd3 +Block 0018 [104]: 6bb82e0b5d4c2e0d +Block 0018 [105]: 970ede93e5e27ac5 +Block 0018 [106]: b5ea53ff534622ac +Block 0018 [107]: 9e31a90a85f46a62 +Block 0018 [108]: 5f4ef09dcbb5efab +Block 0018 [109]: 23395b9e4a40f367 +Block 0018 [110]: 72d21b94738593e4 +Block 0018 [111]: a670eedbeefa24a9 +Block 0018 [112]: 17b433b9fff934b3 +Block 0018 [113]: 9e32a1bcfedc24f5 +Block 0018 [114]: 8c7f89b2615962f2 +Block 0018 [115]: ff57e2e77b2b0b9e +Block 0018 [116]: 4600f965f407f74c +Block 0018 [117]: 08d3a4358c03a513 +Block 0018 [118]: cfae58aad32697f8 +Block 0018 [119]: 885eff2ac7f41837 +Block 0018 [120]: 8102758546e1a4e4 +Block 0018 [121]: 08b04d9a0ea9a613 +Block 0018 [122]: c256b07aa6468a27 +Block 0018 [123]: e4b64c775459a54c +Block 0018 [124]: 473bb3721002e35b +Block 0018 [125]: 473153000fa4c19b +Block 0018 [126]: 89f0318e36108337 +Block 0018 [127]: 922f0bccba570e30 +Block 0019 [ 0]: c5ad90619dfd5e40 +Block 0019 [ 1]: c7a17173d9d7fb02 +Block 0019 [ 2]: f53d0f0a42ee0a9a +Block 0019 [ 3]: 0b7c95192969e642 +Block 0019 [ 4]: 4ec957e5121f3f42 +Block 0019 [ 5]: cfcd0f545351d53b +Block 0019 [ 6]: 6c34a64d935b4658 +Block 0019 [ 7]: b1c1c307e575bddb +Block 0019 [ 8]: 6c4416051314ab4e +Block 0019 [ 9]: eaccc46dd8f286ac +Block 0019 [ 10]: 62a0006c7175dfc9 +Block 0019 [ 11]: 4adca8b27b853e25 +Block 0019 [ 12]: 86a7d4cb588b926f +Block 0019 [ 13]: a6e880192be9c7be +Block 0019 [ 14]: f0c0fb7163e2b077 +Block 0019 [ 15]: 9fbbd47dbd1ba544 +Block 0019 [ 16]: 6c7004e5e7299324 +Block 0019 [ 17]: 25fd6d2fe2c989ef +Block 0019 [ 18]: 66d6f0c88cb197be +Block 0019 [ 19]: c68bd38566a7889a +Block 0019 [ 20]: 6b59f19ea29b979a +Block 0019 [ 21]: 556774aadc3ca297 +Block 0019 [ 22]: 9ca1c21e961ce72a +Block 0019 [ 23]: f9f2543958ee6de0 +Block 0019 [ 24]: 00374860910b1734 +Block 0019 [ 25]: 9ff6c7f7fdc33655 +Block 0019 [ 26]: ae7d2f154985cc00 +Block 0019 [ 27]: 92a2c2482f099495 +Block 0019 [ 28]: 7738918b896f3d10 +Block 0019 [ 29]: 08e8c151ef9737ec +Block 0019 [ 30]: b8afe6375af2c425 +Block 0019 [ 31]: d7e6532c1ced5359 +Block 0019 [ 32]: 7be417b2d69cc776 +Block 0019 [ 33]: 2f6fbad042b2f4db +Block 0019 [ 34]: 5140dbe6e03c861f +Block 0019 [ 35]: f22d890534c7d2ec +Block 0019 [ 36]: 258963384931adcf +Block 0019 [ 37]: 436cf5639400c61d +Block 0019 [ 38]: e5a63ecdd892893c +Block 0019 [ 39]: 142303f752328d3c +Block 0019 [ 40]: b84d6cce42f3d817 +Block 0019 [ 41]: 652494812170e1d6 +Block 0019 [ 42]: 0b2b77f9cee1fdf6 +Block 0019 [ 43]: c0ecd695297e1d8a +Block 0019 [ 44]: 0fb2e95fd2501d97 +Block 0019 [ 45]: 17c31477c069de81 +Block 0019 [ 46]: e6a0304b074a6eb3 +Block 0019 [ 47]: 26b214308f38795c +Block 0019 [ 48]: 833065117a06860b +Block 0019 [ 49]: d232939089b96074 +Block 0019 [ 50]: 0ee7847f85b38318 +Block 0019 [ 51]: 5fb81785945027f5 +Block 0019 [ 52]: 66ee79d0649c1686 +Block 0019 [ 53]: 3168d562f60ce6eb +Block 0019 [ 54]: bc250a9b52bf4b79 +Block 0019 [ 55]: 1146b33494baaf3e +Block 0019 [ 56]: 5af799d7e5e5dc5d +Block 0019 [ 57]: 89fa4d5028946c9f +Block 0019 [ 58]: 4fd1a798e66663dd +Block 0019 [ 59]: 664c5598e474d6af +Block 0019 [ 60]: 4a1e655f90de3a52 +Block 0019 [ 61]: 65583cea2fe72c1b +Block 0019 [ 62]: 31e99d437b588dea +Block 0019 [ 63]: 810131ed2e8b9e65 +Block 0019 [ 64]: 57140b352a98809c +Block 0019 [ 65]: 3481662f102896d2 +Block 0019 [ 66]: d9c307711dd70af6 +Block 0019 [ 67]: 0fc4ac1b83b21810 +Block 0019 [ 68]: 2dae24938d937d66 +Block 0019 [ 69]: 2db9258eaa41d588 +Block 0019 [ 70]: adfd9117017aea52 +Block 0019 [ 71]: 0aebc8a663734e63 +Block 0019 [ 72]: 3396cb042fa4b880 +Block 0019 [ 73]: d4cb797e806a037d +Block 0019 [ 74]: a0f73b8e65666fc3 +Block 0019 [ 75]: 5f7bce07ca7a1a9c +Block 0019 [ 76]: 2e4629b685833c46 +Block 0019 [ 77]: 0a3ee3fee444ba36 +Block 0019 [ 78]: 3969024563655ce5 +Block 0019 [ 79]: c0a5abd78ef0340c +Block 0019 [ 80]: 0b5519a847a09112 +Block 0019 [ 81]: 96b6762e8665b8a0 +Block 0019 [ 82]: 843e8b1b4dd4a82b +Block 0019 [ 83]: c1232100906be7e6 +Block 0019 [ 84]: b58edd29906a9027 +Block 0019 [ 85]: 8b68b6b6d36b9834 +Block 0019 [ 86]: a7233e790cc6d3f8 +Block 0019 [ 87]: aa5355f0929c4e25 +Block 0019 [ 88]: a7bf6e2e15ab5153 +Block 0019 [ 89]: 8e67f62642cf57f4 +Block 0019 [ 90]: 27a5776e9a7b75a1 +Block 0019 [ 91]: 2b224c1e181b69ff +Block 0019 [ 92]: 0b8b8c0abcd1d13e +Block 0019 [ 93]: fab9b35bb3eab270 +Block 0019 [ 94]: ce9dbe7e3a0a52dc +Block 0019 [ 95]: e1e8f7f3190b8e1e +Block 0019 [ 96]: 886847dd5ed1f8e7 +Block 0019 [ 97]: fa6d5fe42cfb394a +Block 0019 [ 98]: e2eb739c588d8234 +Block 0019 [ 99]: ac2065febf36ce11 +Block 0019 [100]: b3cb7ccab2ffd914 +Block 0019 [101]: dd8092f3fff7970d +Block 0019 [102]: c8dae2e160cab03a +Block 0019 [103]: 37f22b36dfebf4db +Block 0019 [104]: 065bbc14bb0bacf0 +Block 0019 [105]: 83a1d51c798c6087 +Block 0019 [106]: a03604d715375f8a +Block 0019 [107]: e923aa07e8ab2f05 +Block 0019 [108]: 6c0ad55a7926bc90 +Block 0019 [109]: b9b36ec828ffdfb8 +Block 0019 [110]: de0ef5c4811b2689 +Block 0019 [111]: 5c4552c66dfb0c17 +Block 0019 [112]: 8a73ff2d0e32ed9e +Block 0019 [113]: 6c23835f0b616d34 +Block 0019 [114]: 449cb97303cf1125 +Block 0019 [115]: 7e2b8fcd2ddd9aeb +Block 0019 [116]: 247dece373dc3697 +Block 0019 [117]: bb2f3c2b502ceba2 +Block 0019 [118]: 0c0d8f96dde7434d +Block 0019 [119]: 774ef5d4a277649d +Block 0019 [120]: 7504d6f1d03c0af2 +Block 0019 [121]: 05c154722007b939 +Block 0019 [122]: 355b5642800985f3 +Block 0019 [123]: c96e5fd5893fa7d4 +Block 0019 [124]: 6972429b8fcf426a +Block 0019 [125]: 0ff43afbf9106cf4 +Block 0019 [126]: d76130589a9529b8 +Block 0019 [127]: ff105728dbed9657 +Block 0020 [ 0]: e97e984c9a0a4680 +Block 0020 [ 1]: 42695651c0c21502 +Block 0020 [ 2]: 688550ecf3b8a149 +Block 0020 [ 3]: 54d395b8b07ec587 +Block 0020 [ 4]: ddf6a33155b38ed7 +Block 0020 [ 5]: 3b1f998dda326511 +Block 0020 [ 6]: 7f97ac3d9a2bbf9b +Block 0020 [ 7]: a27b1b7ac6676309 +Block 0020 [ 8]: 485aece5fc3cd6a3 +Block 0020 [ 9]: 49bf335ba618a23a +Block 0020 [ 10]: 8a88e9e925d5183b +Block 0020 [ 11]: 2f7d04ac18ea96ab +Block 0020 [ 12]: 6a9f50381a60ab92 +Block 0020 [ 13]: ba7df623a93121ae +Block 0020 [ 14]: f3f273bc52a41207 +Block 0020 [ 15]: 36b4e08e05652348 +Block 0020 [ 16]: f88c278ea3981491 +Block 0020 [ 17]: 22a34c75759f0912 +Block 0020 [ 18]: 1e6462a023e62bbb +Block 0020 [ 19]: 0577a4f764f2a20b +Block 0020 [ 20]: a1efd6253ade82bb +Block 0020 [ 21]: 81dbf5c8455a8524 +Block 0020 [ 22]: 1bae23a8beada114 +Block 0020 [ 23]: 188c9816116da639 +Block 0020 [ 24]: 05bd99543f3907fb +Block 0020 [ 25]: b1b890cd005ccfa8 +Block 0020 [ 26]: 1f83e83507988f54 +Block 0020 [ 27]: 0b9692c75b1a65d2 +Block 0020 [ 28]: 9b7d295ace6adcfd +Block 0020 [ 29]: af01c0de42d753a0 +Block 0020 [ 30]: 3fe167f7dc207394 +Block 0020 [ 31]: 0a4e33a76c72e144 +Block 0020 [ 32]: 79a74d89cd804e34 +Block 0020 [ 33]: 9237f7a0ae9a4d0e +Block 0020 [ 34]: 0d160320f7c748f2 +Block 0020 [ 35]: 209870f6869b388a +Block 0020 [ 36]: 786b9215ade0ed30 +Block 0020 [ 37]: 418d4c6b3f042ebe +Block 0020 [ 38]: 831a0ba554ad8bf7 +Block 0020 [ 39]: 28e14dc0cc08c931 +Block 0020 [ 40]: a6a161729c772dff +Block 0020 [ 41]: f3324db122373805 +Block 0020 [ 42]: af4e084231220ba4 +Block 0020 [ 43]: 96e990b23fb09510 +Block 0020 [ 44]: bc6a4abca65e47f4 +Block 0020 [ 45]: f12789b5a6b25fbd +Block 0020 [ 46]: f800e966b67d385b +Block 0020 [ 47]: 173ed5f3e710b749 +Block 0020 [ 48]: 03d4dd0e15fc509a +Block 0020 [ 49]: f6cc9939e80900e6 +Block 0020 [ 50]: 93c884512d37d9a2 +Block 0020 [ 51]: ad4dafb167dfe39c +Block 0020 [ 52]: 08881f5c9431990b +Block 0020 [ 53]: d7ee8ce6cb74ebb6 +Block 0020 [ 54]: e264efef38081687 +Block 0020 [ 55]: cf420221c00d899c +Block 0020 [ 56]: 3df9cb9efa6deb77 +Block 0020 [ 57]: 65536cc67d0ad05a +Block 0020 [ 58]: 3fba9e1952e19b67 +Block 0020 [ 59]: f1a1f331ef40d048 +Block 0020 [ 60]: 04fa0694742fee2c +Block 0020 [ 61]: 32bd2eb3c55e5ae0 +Block 0020 [ 62]: a9c7205ffb68b28f +Block 0020 [ 63]: 658112db2feabc85 +Block 0020 [ 64]: 2cf847284d0921b3 +Block 0020 [ 65]: 2e539b5f05a65789 +Block 0020 [ 66]: 9f74bfde4246094a +Block 0020 [ 67]: 21f71cec771a994f +Block 0020 [ 68]: 502671b3198d83ad +Block 0020 [ 69]: 38f91177744c228c +Block 0020 [ 70]: 63b43e2ef56b5e7b +Block 0020 [ 71]: 7765db54b31c5521 +Block 0020 [ 72]: 981336e740ce20f6 +Block 0020 [ 73]: 7c3b4ce651e9fb5b +Block 0020 [ 74]: 0401d7d8cc9a42a3 +Block 0020 [ 75]: 714b58a1a936c453 +Block 0020 [ 76]: 49bc384451c5bf0a +Block 0020 [ 77]: 028894e2178d6e0c +Block 0020 [ 78]: 5496f8c54b09dc58 +Block 0020 [ 79]: e6eb176a966a4632 +Block 0020 [ 80]: 5fd3242e6c512e2e +Block 0020 [ 81]: be012a4516b19ecd +Block 0020 [ 82]: 5a029ae5b0ba77fc +Block 0020 [ 83]: 6bdf22f7170b33cd +Block 0020 [ 84]: 72d7181008703761 +Block 0020 [ 85]: 71a0a89e374da324 +Block 0020 [ 86]: a3029e6857c84d5d +Block 0020 [ 87]: be4e2d573ab4a5af +Block 0020 [ 88]: c7d6f811e2e1a452 +Block 0020 [ 89]: 544ff9d9df359257 +Block 0020 [ 90]: 88a253dee5cffe09 +Block 0020 [ 91]: fd218a89570ea21b +Block 0020 [ 92]: 3562bca5d5463c5c +Block 0020 [ 93]: a8e3e455e840e5d3 +Block 0020 [ 94]: 8b5b33b3f605dea4 +Block 0020 [ 95]: 54927c551ce7109a +Block 0020 [ 96]: d9edbc7e8ed262ea +Block 0020 [ 97]: 13ba2da8af1586e0 +Block 0020 [ 98]: 7e7b4839ec9c9d15 +Block 0020 [ 99]: c7a7f365046242e5 +Block 0020 [100]: c0a02a96e116e7a9 +Block 0020 [101]: c4294c90c5b60aab +Block 0020 [102]: de88e0255c80e8bd +Block 0020 [103]: dda0a1b50a84f594 +Block 0020 [104]: 32abd57a4a3d8fa1 +Block 0020 [105]: 6a3b6003128b7e4b +Block 0020 [106]: 2e75d71ec1f459ea +Block 0020 [107]: d8b3d56bb6370ce8 +Block 0020 [108]: a6e50c3c3fdeedcf +Block 0020 [109]: 615fe054b22c3f57 +Block 0020 [110]: d187b0d5e9a82f07 +Block 0020 [111]: 0b661aecd8b6acfd +Block 0020 [112]: ae5739a352aefc0b +Block 0020 [113]: a19b37d3f4358fab +Block 0020 [114]: ec3f64064528e5ca +Block 0020 [115]: 871eee2897672b5d +Block 0020 [116]: 13723605168a4370 +Block 0020 [117]: 09f3b1ce20ee4693 +Block 0020 [118]: cf07035c40670104 +Block 0020 [119]: f940f27353d6bce9 +Block 0020 [120]: 7bca9f2599febfce +Block 0020 [121]: 46a694fb7c23db99 +Block 0020 [122]: d7d065950f1fbd4b +Block 0020 [123]: cbe415b30043b7c9 +Block 0020 [124]: 1ec55ec99495a768 +Block 0020 [125]: 296f6c6f5078b47d +Block 0020 [126]: cdc04d1f06b9f4cb +Block 0020 [127]: abc7a9f4595d035c +Block 0021 [ 0]: f91e15dddb3b51ec +Block 0021 [ 1]: ee5c3d4169c6340e +Block 0021 [ 2]: ffbb26bf19a1114e +Block 0021 [ 3]: 07051d000ee6fdc8 +Block 0021 [ 4]: 1abe4b454438ac8e +Block 0021 [ 5]: 7248966a2670c010 +Block 0021 [ 6]: b7b5def30b008c50 +Block 0021 [ 7]: f9b852777fcdf0cb +Block 0021 [ 8]: 33883d34b6746279 +Block 0021 [ 9]: 8ed5aed9f146bbbc +Block 0021 [ 10]: b185ef5eeb6b7c93 +Block 0021 [ 11]: deab3ab480df25e2 +Block 0021 [ 12]: 54c50a10ef514a95 +Block 0021 [ 13]: b22a360cd6e84781 +Block 0021 [ 14]: ccd176f2fd328583 +Block 0021 [ 15]: 0c6197874a4c1899 +Block 0021 [ 16]: d7baf5b0d78951d9 +Block 0021 [ 17]: 4f0bcf25c024e4c9 +Block 0021 [ 18]: 37ce212b48d1dc8c +Block 0021 [ 19]: 1406aa351a3956ec +Block 0021 [ 20]: af53d87e3d339f12 +Block 0021 [ 21]: 4099481b37dd2332 +Block 0021 [ 22]: 99705cd0ace2b2e5 +Block 0021 [ 23]: a7b4ccf587f655a4 +Block 0021 [ 24]: 4fc2ea4c8dacd3f0 +Block 0021 [ 25]: 5f3edbe69906aea8 +Block 0021 [ 26]: e3ce2749b7e3501a +Block 0021 [ 27]: 6df82def0953f475 +Block 0021 [ 28]: 29a3b1a8d54cd7eb +Block 0021 [ 29]: 238fd775eb58ce16 +Block 0021 [ 30]: f4428dd2aa26f05d +Block 0021 [ 31]: 5f5f090f6985661e +Block 0021 [ 32]: 3c11b73b96af5348 +Block 0021 [ 33]: 4803704f02a187d7 +Block 0021 [ 34]: 5fee6cd368efb42a +Block 0021 [ 35]: c11e6dc965fa6f04 +Block 0021 [ 36]: b4ea2de0b9c26784 +Block 0021 [ 37]: 89353cfb63665713 +Block 0021 [ 38]: ef0888efce116445 +Block 0021 [ 39]: fb04167ad5f72e1f +Block 0021 [ 40]: 3c5ed288e8f05a1d +Block 0021 [ 41]: 624547a17957b850 +Block 0021 [ 42]: 04732141a8ccba36 +Block 0021 [ 43]: 2685fb50ec390be3 +Block 0021 [ 44]: b02549b55b50976f +Block 0021 [ 45]: fa4fdce5517c2a24 +Block 0021 [ 46]: f11439e0775486f2 +Block 0021 [ 47]: 56c79606aba98cd0 +Block 0021 [ 48]: ed0641ad608278c0 +Block 0021 [ 49]: 514624364ea4b59f +Block 0021 [ 50]: 7fd4817bc3eeba5b +Block 0021 [ 51]: a8ee1d20b2d7d0b5 +Block 0021 [ 52]: ae596aa5f3dc543c +Block 0021 [ 53]: b799fbc080499d82 +Block 0021 [ 54]: ed54f1d15d90f8eb +Block 0021 [ 55]: 1a31da56664a72cc +Block 0021 [ 56]: 12da9d1c9cf10ddb +Block 0021 [ 57]: 2f4913b380d74a10 +Block 0021 [ 58]: 8ba9185c45a65ba3 +Block 0021 [ 59]: da683bf7f2029425 +Block 0021 [ 60]: 559fbf449c0da608 +Block 0021 [ 61]: 7dcd27cf098ba795 +Block 0021 [ 62]: 3ddd05c0df1cab14 +Block 0021 [ 63]: 83fd62730a702ce3 +Block 0021 [ 64]: 15a6c578f742d175 +Block 0021 [ 65]: 016f807d1ab2e6c3 +Block 0021 [ 66]: 61dbe68679f42a35 +Block 0021 [ 67]: 34098d8930ef469b +Block 0021 [ 68]: 6e4f258a5c1c061c +Block 0021 [ 69]: 94b80e2098f6de46 +Block 0021 [ 70]: f75eb09315ac2b17 +Block 0021 [ 71]: dcd61677a8230fb3 +Block 0021 [ 72]: aba074f342936c30 +Block 0021 [ 73]: ef82cb98e5b62732 +Block 0021 [ 74]: 92e2a728a9cf67a9 +Block 0021 [ 75]: a63711b57bf4c895 +Block 0021 [ 76]: ca84f36a5aed6490 +Block 0021 [ 77]: fac131451564800d +Block 0021 [ 78]: db9274384c879da5 +Block 0021 [ 79]: b8103c7a0b1e2280 +Block 0021 [ 80]: 475816e960b808f9 +Block 0021 [ 81]: 022248d13db87cb1 +Block 0021 [ 82]: a93f6128a0e9ec01 +Block 0021 [ 83]: e968dd4874743f07 +Block 0021 [ 84]: 31da295f50067bb4 +Block 0021 [ 85]: fac3e0d7554a109e +Block 0021 [ 86]: e9e77599410d4626 +Block 0021 [ 87]: 018184166eab6fba +Block 0021 [ 88]: 230e3e6976d1929f +Block 0021 [ 89]: 8038f6ce937203dc +Block 0021 [ 90]: feae676d6efd362b +Block 0021 [ 91]: eb9e5d2e229876af +Block 0021 [ 92]: ffb1be82fa0129d3 +Block 0021 [ 93]: a9861a02c73e3766 +Block 0021 [ 94]: 4705e2143470ea47 +Block 0021 [ 95]: d35816871f69c4ff +Block 0021 [ 96]: 74f13edfb6f9f2fd +Block 0021 [ 97]: 5856910ab5e781c9 +Block 0021 [ 98]: 3ceb888953da86b9 +Block 0021 [ 99]: 0ab510d037c87b43 +Block 0021 [100]: 138c27555c6626b4 +Block 0021 [101]: 3c131e8b21e1d1a7 +Block 0021 [102]: dcf5a6b3fb5e6966 +Block 0021 [103]: 0559f144bd001f36 +Block 0021 [104]: 3018a36d9ad1ecd4 +Block 0021 [105]: 31e3c99700980d11 +Block 0021 [106]: 1d189ab56c882f89 +Block 0021 [107]: ac93920aa320911e +Block 0021 [108]: 680b39dadc4c977f +Block 0021 [109]: 7072e9abbc6eec02 +Block 0021 [110]: 1136fc6624a8283d +Block 0021 [111]: d1cafe5cb563a9f2 +Block 0021 [112]: cb42169a90e18f42 +Block 0021 [113]: ef07f6cc1da57b09 +Block 0021 [114]: 186c57d289ca3d25 +Block 0021 [115]: 168f8783db16497f +Block 0021 [116]: eb5d26010ccc0661 +Block 0021 [117]: 7dfc4b2061132276 +Block 0021 [118]: 318fa486a5e55435 +Block 0021 [119]: 4f081059273cff64 +Block 0021 [120]: 8e2f8e9f645fe5c5 +Block 0021 [121]: b0f117bf26cac7a6 +Block 0021 [122]: a7cc624a25420744 +Block 0021 [123]: 5996f6f569411c8d +Block 0021 [124]: d1fe256f06785230 +Block 0021 [125]: 6a5c4fd0332f388a +Block 0021 [126]: 671310faa364b89a +Block 0021 [127]: ae23fc2ee74b6a2e +Block 0022 [ 0]: fd0d5fe6e4463eb9 +Block 0022 [ 1]: 45c83ce9563fa053 +Block 0022 [ 2]: d727b2657ba26cdc +Block 0022 [ 3]: 8c6aa3c945e80ead +Block 0022 [ 4]: e97f7f5e8c5999b1 +Block 0022 [ 5]: 4aa3da0ced32965b +Block 0022 [ 6]: 060ddad87e312da8 +Block 0022 [ 7]: 240061d56cfae2ae +Block 0022 [ 8]: 762ab59bcd9861af +Block 0022 [ 9]: 83c44976e648170e +Block 0022 [ 10]: 7c72093e5af38945 +Block 0022 [ 11]: 502321f2bc7210d8 +Block 0022 [ 12]: 5c48ba68baea259d +Block 0022 [ 13]: bf10399b4ceb7350 +Block 0022 [ 14]: c01e2a7ea191f992 +Block 0022 [ 15]: 65d8e06801e875fd +Block 0022 [ 16]: dd58879fa6c6beca +Block 0022 [ 17]: e759e40819e1c2ee +Block 0022 [ 18]: 0cb2744881da40ad +Block 0022 [ 19]: ec193df705eb9ce1 +Block 0022 [ 20]: 64f0b30e24639350 +Block 0022 [ 21]: 383d137d52aa756d +Block 0022 [ 22]: c7508534f947fe85 +Block 0022 [ 23]: 8d1c55b6a2c65b4b +Block 0022 [ 24]: 817d5358205f8c7f +Block 0022 [ 25]: 3e7dcc1e2d0ad5d2 +Block 0022 [ 26]: 3806b0590ebc33d0 +Block 0022 [ 27]: 4b7410df24c582fc +Block 0022 [ 28]: ef8eb90023866f1b +Block 0022 [ 29]: 16d5e2706b950dbf +Block 0022 [ 30]: 6eab6cfa739f915c +Block 0022 [ 31]: b739804c9bc88231 +Block 0022 [ 32]: 92306a3666206f77 +Block 0022 [ 33]: 18551d1e9274bc10 +Block 0022 [ 34]: 62d127a51fa91e89 +Block 0022 [ 35]: f64fce4c0035ee41 +Block 0022 [ 36]: 008856cec7508d20 +Block 0022 [ 37]: 742b2b65beb517f5 +Block 0022 [ 38]: 71b98ea6f9a17f89 +Block 0022 [ 39]: 7ca177831758d428 +Block 0022 [ 40]: b4063a44e0c5c0f4 +Block 0022 [ 41]: bfff91cfe779f7a0 +Block 0022 [ 42]: 561c77eb787158ad +Block 0022 [ 43]: c6511c6cdc7d5c92 +Block 0022 [ 44]: 1a4ef74ddd5319f5 +Block 0022 [ 45]: 4e3a92e3669e405c +Block 0022 [ 46]: 99699ce6bada48e9 +Block 0022 [ 47]: 673ab31ec7a3cef4 +Block 0022 [ 48]: 321c4e8a6b736843 +Block 0022 [ 49]: 6937b8bf90276a67 +Block 0022 [ 50]: 9e5e5c323a841df2 +Block 0022 [ 51]: 7543434ac4a6f31d +Block 0022 [ 52]: 8a4fadf7ad9b08b0 +Block 0022 [ 53]: e6e169443491062c +Block 0022 [ 54]: 1dc490d3fd26094c +Block 0022 [ 55]: f2548a4d64cee2e9 +Block 0022 [ 56]: 80de1a7ca870fd3e +Block 0022 [ 57]: 59d42a990f21e43c +Block 0022 [ 58]: 1c71ffde3c1c610e +Block 0022 [ 59]: eaacdba19e48f030 +Block 0022 [ 60]: 2b3529474cf24ffb +Block 0022 [ 61]: e6a4d2aaf27c0f19 +Block 0022 [ 62]: 18e558a5a4fd3e88 +Block 0022 [ 63]: dd61e9dc8af7b78e +Block 0022 [ 64]: 1cceaeba3e18faa6 +Block 0022 [ 65]: c8403af754002891 +Block 0022 [ 66]: 9877ab739868aeaf +Block 0022 [ 67]: 337f8dc58d7c3769 +Block 0022 [ 68]: cc7a204b0b743765 +Block 0022 [ 69]: 72c89f06c66f5f5f +Block 0022 [ 70]: 4e40dff46b027e59 +Block 0022 [ 71]: 9719284ab7e5a198 +Block 0022 [ 72]: c6fd4d54a74793d7 +Block 0022 [ 73]: 13cfcefd75aacc2b +Block 0022 [ 74]: f4def331cc0c787d +Block 0022 [ 75]: 440d0ad4ad9d17b0 +Block 0022 [ 76]: fbded143712b01c0 +Block 0022 [ 77]: 0a4b41e4e7e441a2 +Block 0022 [ 78]: 344938acef21e9c8 +Block 0022 [ 79]: 8eb1bf62f25c514e +Block 0022 [ 80]: c4522c100a390623 +Block 0022 [ 81]: 2f9c189f55588477 +Block 0022 [ 82]: 2d09452db6b0a890 +Block 0022 [ 83]: 06e3609424bda06d +Block 0022 [ 84]: f1d375b04a8be629 +Block 0022 [ 85]: c156f32f41541ab4 +Block 0022 [ 86]: 0258f1c58671feda +Block 0022 [ 87]: 4b97162ad3411aeb +Block 0022 [ 88]: 62b252050436a943 +Block 0022 [ 89]: ca82902a3725daa3 +Block 0022 [ 90]: 259a316a3ddf2da2 +Block 0022 [ 91]: 959a008ad357c995 +Block 0022 [ 92]: 9b738b6b170453a3 +Block 0022 [ 93]: 1cc4c1f4a499b0e9 +Block 0022 [ 94]: 6675ddd817df816d +Block 0022 [ 95]: 6b6454ef7dc27dd0 +Block 0022 [ 96]: e41db01be78437f1 +Block 0022 [ 97]: 45978d6fee9df995 +Block 0022 [ 98]: 50291ef2c016d553 +Block 0022 [ 99]: 3bcacbec1fead10f +Block 0022 [100]: 58007e967ebe5d2a +Block 0022 [101]: 4a38aeef5991445c +Block 0022 [102]: d11bb156aad884b9 +Block 0022 [103]: cdf7aa50f549b11c +Block 0022 [104]: e00f671baa7d6614 +Block 0022 [105]: 3d63468b5f660350 +Block 0022 [106]: 8ca6a1aafda8586c +Block 0022 [107]: eb5fe9a0beec3ba6 +Block 0022 [108]: 8a8dfa227db49a88 +Block 0022 [109]: 123379b9e95f344a +Block 0022 [110]: fc90400b40cae726 +Block 0022 [111]: a8372e72fae29434 +Block 0022 [112]: 30e7ed83a43bc676 +Block 0022 [113]: 24b0b45b9e9295d1 +Block 0022 [114]: 1064b0ba66872a1a +Block 0022 [115]: 016f81848aac5da0 +Block 0022 [116]: 70010ce2cc015342 +Block 0022 [117]: 0cb94916bdd2c824 +Block 0022 [118]: 84f7f072795efdaa +Block 0022 [119]: ae02558711928c7e +Block 0022 [120]: ce1412eaa5f5e0aa +Block 0022 [121]: a48e1cc58caae3d3 +Block 0022 [122]: fa202b0d1f05dc84 +Block 0022 [123]: 8d47e4b2d0870c63 +Block 0022 [124]: 47f21005485aa20e +Block 0022 [125]: 97af7fca33748f3d +Block 0022 [126]: 465983ece771eef3 +Block 0022 [127]: 14ec860030ff375e +Block 0023 [ 0]: 6f210fe216a3512c +Block 0023 [ 1]: 386cee177ac993a4 +Block 0023 [ 2]: 49bd76ebf083db21 +Block 0023 [ 3]: 1215eb06184503da +Block 0023 [ 4]: 49f3e037ad08fb69 +Block 0023 [ 5]: 564544fefa7fe65c +Block 0023 [ 6]: b21298e5160968ec +Block 0023 [ 7]: a786e653fdc46e4a +Block 0023 [ 8]: f209b1eaf8ea1a45 +Block 0023 [ 9]: 19b76bc48434ff35 +Block 0023 [ 10]: 2c12edbd7079ce66 +Block 0023 [ 11]: 664e44229e14ed62 +Block 0023 [ 12]: bb50a711aecd4206 +Block 0023 [ 13]: 4f9a0c9f37757465 +Block 0023 [ 14]: f5059360bcec58ae +Block 0023 [ 15]: 6033b3f8943691c3 +Block 0023 [ 16]: 317bee308f9535fd +Block 0023 [ 17]: c8d8ef6cc0e20a42 +Block 0023 [ 18]: 45ad5b2bab1aff18 +Block 0023 [ 19]: 36accf772101e38c +Block 0023 [ 20]: 3e0f5b1c20b1bb60 +Block 0023 [ 21]: 5ed93c2d23e2cdd5 +Block 0023 [ 22]: 090c5583d65eb905 +Block 0023 [ 23]: ed85a9a130d4bc94 +Block 0023 [ 24]: 7cb9a06ca5fcca44 +Block 0023 [ 25]: f20a018628cec16d +Block 0023 [ 26]: b33762850d0020d0 +Block 0023 [ 27]: 89c6f1adabcad35a +Block 0023 [ 28]: c9b2fa8540aea613 +Block 0023 [ 29]: b0cad3cccc014204 +Block 0023 [ 30]: fefd95b1dc5bd64f +Block 0023 [ 31]: 9ea654d3e93f1d5c +Block 0023 [ 32]: 3be47c28bba7bf4d +Block 0023 [ 33]: 914bf4bc99537ff9 +Block 0023 [ 34]: e72d69aa549754a8 +Block 0023 [ 35]: 159b7e1c6a4947f6 +Block 0023 [ 36]: 7b6467463a0d70fb +Block 0023 [ 37]: d21aabe90be5a3af +Block 0023 [ 38]: 0d0f5cdcb0e3c7bc +Block 0023 [ 39]: d768d5aa9aeefdb3 +Block 0023 [ 40]: b32ee41f0365e839 +Block 0023 [ 41]: 73a927ae2ea373cd +Block 0023 [ 42]: ba1522fe3f400fe5 +Block 0023 [ 43]: 79488e5d595ff114 +Block 0023 [ 44]: a0dda12acb33e1f5 +Block 0023 [ 45]: d72e4dcef04d8449 +Block 0023 [ 46]: 3b3597920b77fadd +Block 0023 [ 47]: 9a537d5d1e0f93a9 +Block 0023 [ 48]: d64b12633f104e41 +Block 0023 [ 49]: 15b77de207900141 +Block 0023 [ 50]: 67d09cbd6ff6244c +Block 0023 [ 51]: 9f57287b704d96f2 +Block 0023 [ 52]: 7cac8a39c31aaeb0 +Block 0023 [ 53]: c19e4ada63e422c1 +Block 0023 [ 54]: d967b2aca7b30b24 +Block 0023 [ 55]: 4ce1e7848cfada9c +Block 0023 [ 56]: fffee85be7b18870 +Block 0023 [ 57]: 53a89fc1aa515131 +Block 0023 [ 58]: 144547ad34b63494 +Block 0023 [ 59]: 9da4e4628b19b6af +Block 0023 [ 60]: 647a68eaa3008b91 +Block 0023 [ 61]: 011b88ec013bef9d +Block 0023 [ 62]: 3132eafeabbdbae3 +Block 0023 [ 63]: 5b9dc02adda74b1b +Block 0023 [ 64]: 0bfc5e6055737ffd +Block 0023 [ 65]: 79dfe16a4a331f60 +Block 0023 [ 66]: e62d717d47fa1f54 +Block 0023 [ 67]: 5f68e4b38ba5ac85 +Block 0023 [ 68]: 2739094dc8306afa +Block 0023 [ 69]: f438221f45366a87 +Block 0023 [ 70]: aa2c60c6b544d641 +Block 0023 [ 71]: f5210c6369a0ea40 +Block 0023 [ 72]: 63450f97178b6fea +Block 0023 [ 73]: 1e84ddb1d5d39662 +Block 0023 [ 74]: 1d562cdfeb699bde +Block 0023 [ 75]: 1f1640bc5f7f3b7c +Block 0023 [ 76]: fb9c4fd39e52de2b +Block 0023 [ 77]: 982dfc06061900ef +Block 0023 [ 78]: e3683cd9ad6c3506 +Block 0023 [ 79]: f58197aa96b567e8 +Block 0023 [ 80]: 166f8f63b0b5544b +Block 0023 [ 81]: 15acc79dcfd350b5 +Block 0023 [ 82]: 04d81c7adfc06c8b +Block 0023 [ 83]: cc1aa55ae4714aa5 +Block 0023 [ 84]: 1adf79595b037147 +Block 0023 [ 85]: 80182d8e6626ec1a +Block 0023 [ 86]: dcca7cd67b36f1d4 +Block 0023 [ 87]: 956c021ecf0004c2 +Block 0023 [ 88]: be4644c7b2abf40e +Block 0023 [ 89]: 5052284ea5c9cbfd +Block 0023 [ 90]: 2b98113bb7cfa963 +Block 0023 [ 91]: 95ccc61b0c97d568 +Block 0023 [ 92]: def94c38764899e4 +Block 0023 [ 93]: 661f98ae30046991 +Block 0023 [ 94]: d5f7cb256077ee95 +Block 0023 [ 95]: f18d4c7e877b2ed6 +Block 0023 [ 96]: e9f45ead3383c0fe +Block 0023 [ 97]: f9ad0574a3390523 +Block 0023 [ 98]: 23ff3b411095754b +Block 0023 [ 99]: 5272d0a3733568f5 +Block 0023 [100]: 57514c47b994f41a +Block 0023 [101]: f887dc7638fe516d +Block 0023 [102]: 63eac3154753f392 +Block 0023 [103]: 870c5cd60a22e090 +Block 0023 [104]: 3e03fba18c9cf510 +Block 0023 [105]: 82b3e1766e2b4fd4 +Block 0023 [106]: 2f328027ee47edbc +Block 0023 [107]: b848509d94957f5a +Block 0023 [108]: 1ce36525b23e18c8 +Block 0023 [109]: 8dc9806873cfcdc6 +Block 0023 [110]: f8104fce855b73a7 +Block 0023 [111]: 2ab1006d7d216b5b +Block 0023 [112]: 759d5c0fbad338e7 +Block 0023 [113]: d701785324bde3cc +Block 0023 [114]: e8a9f5a0f3ee07ef +Block 0023 [115]: 508b2a5f7bccb887 +Block 0023 [116]: 10c1764cf106251e +Block 0023 [117]: 0aaaef13d29c993f +Block 0023 [118]: 3bba7fa3b579643f +Block 0023 [119]: 80ab232f73189d56 +Block 0023 [120]: 397cb8a63dea3e0c +Block 0023 [121]: 3f42d5bc48fb92d6 +Block 0023 [122]: 811a23b4e2622e92 +Block 0023 [123]: 940f776c7ce48d13 +Block 0023 [124]: e6fc34563a84c17b +Block 0023 [125]: c1bbe67ee7f4e9b7 +Block 0023 [126]: 2f82722c13d7231d +Block 0023 [127]: 3432cd292161ed18 +Block 0024 [ 0]: eddf447b2d99795d +Block 0024 [ 1]: f61c77799f2cdf40 +Block 0024 [ 2]: e28436e1ceaa784a +Block 0024 [ 3]: fcf4e94439a4d452 +Block 0024 [ 4]: 59bd07ad0230777c +Block 0024 [ 5]: 2fa46f9955e19408 +Block 0024 [ 6]: 1dd1577be731eb19 +Block 0024 [ 7]: f6de459101fd739a +Block 0024 [ 8]: 1e804a7ed486f185 +Block 0024 [ 9]: cbbdf6514607376f +Block 0024 [ 10]: 01d56e7417f13081 +Block 0024 [ 11]: 897b5f91b941f660 +Block 0024 [ 12]: 8af0d7ea758c00fd +Block 0024 [ 13]: f0cf6e790ddf7761 +Block 0024 [ 14]: 3e2c532714e5038f +Block 0024 [ 15]: e6f882c03d7cf6dc +Block 0024 [ 16]: cf547b6801a01f9d +Block 0024 [ 17]: 12ae95bbda085530 +Block 0024 [ 18]: df01d1be5bbbaf21 +Block 0024 [ 19]: 968c5616afa5b119 +Block 0024 [ 20]: b7d192ebfe911df9 +Block 0024 [ 21]: ebe5a10764df10d0 +Block 0024 [ 22]: ff723e49b4afe96f +Block 0024 [ 23]: 13176fcffc8a0847 +Block 0024 [ 24]: be8ba44311abe23d +Block 0024 [ 25]: a629337958920760 +Block 0024 [ 26]: bffde970d04070ad +Block 0024 [ 27]: d5a0a926331eca17 +Block 0024 [ 28]: 846c9178100ed813 +Block 0024 [ 29]: 853d3d58c58b6e7a +Block 0024 [ 30]: 25ada3b57eacb250 +Block 0024 [ 31]: 8af5791678f8c074 +Block 0024 [ 32]: 300720a2acff0dc2 +Block 0024 [ 33]: 7e314768bfab2fc5 +Block 0024 [ 34]: e74d5a2c5e533222 +Block 0024 [ 35]: b252ddeddceab59c +Block 0024 [ 36]: 4ab8e05633797c9d +Block 0024 [ 37]: 6a29e9db5618a8a6 +Block 0024 [ 38]: adbeafb95c1275a9 +Block 0024 [ 39]: b56750cb22ea0567 +Block 0024 [ 40]: 6993e457678b21cc +Block 0024 [ 41]: f7856e2c511dc311 +Block 0024 [ 42]: fe5deac34863c661 +Block 0024 [ 43]: 88fff230d20d378a +Block 0024 [ 44]: 5b6ea59f9fd09360 +Block 0024 [ 45]: 6c4d35d69bdf7074 +Block 0024 [ 46]: 33580293fccd086b +Block 0024 [ 47]: f2e9ac8d2dee6bc6 +Block 0024 [ 48]: 6f6cf4ad82fee9b5 +Block 0024 [ 49]: 23ee0fdc617b3371 +Block 0024 [ 50]: 72977b49dd5fca77 +Block 0024 [ 51]: 078a29609707ed86 +Block 0024 [ 52]: 1e845ec6fcf9c4de +Block 0024 [ 53]: d4a1726c95c2aaa7 +Block 0024 [ 54]: ae506ede75e7f045 +Block 0024 [ 55]: 9190f1966395a9c6 +Block 0024 [ 56]: dbe7fcbbc526a184 +Block 0024 [ 57]: 586d5c3aeacd5226 +Block 0024 [ 58]: 8dd269404c21d3ff +Block 0024 [ 59]: 751301d17ef82189 +Block 0024 [ 60]: 2402993470e97de7 +Block 0024 [ 61]: cd51ad3dbb4c82c8 +Block 0024 [ 62]: 1daaaa3c21724b8c +Block 0024 [ 63]: b5db8cf3570d6ef0 +Block 0024 [ 64]: 0805b730d8f5d05c +Block 0024 [ 65]: d5a3ea8f5af2c8a6 +Block 0024 [ 66]: d9cc8848e10d4454 +Block 0024 [ 67]: ddf5e1979b9f92e2 +Block 0024 [ 68]: e4803ed4852c4d01 +Block 0024 [ 69]: ba880da04eef76a3 +Block 0024 [ 70]: 5d09daab04b87464 +Block 0024 [ 71]: c7d4f0c9549daa28 +Block 0024 [ 72]: ddbf43d719d53d4f +Block 0024 [ 73]: 6183763c5124b98b +Block 0024 [ 74]: d7ab532519584b50 +Block 0024 [ 75]: b0118b2eb9ef7eeb +Block 0024 [ 76]: 95c105df44141ee0 +Block 0024 [ 77]: 49b86cc9e5725918 +Block 0024 [ 78]: 79b784b0e19e0b33 +Block 0024 [ 79]: ed2979473ac724b6 +Block 0024 [ 80]: ad9f1b4a8c7e911c +Block 0024 [ 81]: 090389b737090273 +Block 0024 [ 82]: 511aae0be50fbf75 +Block 0024 [ 83]: 17716e9bd857569a +Block 0024 [ 84]: 31ac183381af8091 +Block 0024 [ 85]: e9e2884a1dce54cb +Block 0024 [ 86]: f382872d696cbc17 +Block 0024 [ 87]: b189af8cf1ab4cda +Block 0024 [ 88]: 8004a6a570d4442c +Block 0024 [ 89]: 5ba22dff2b0fa063 +Block 0024 [ 90]: 3f7eb430c756173b +Block 0024 [ 91]: 3a5fde8ae23af414 +Block 0024 [ 92]: 65198d9cc3245bd9 +Block 0024 [ 93]: 6b98f194dd3f6cb1 +Block 0024 [ 94]: 870bab4461fee657 +Block 0024 [ 95]: ae5c9422a34d026b +Block 0024 [ 96]: 91fc1fa9414a8b35 +Block 0024 [ 97]: 621f9c8eb0c7576a +Block 0024 [ 98]: 3d0a760827b710a7 +Block 0024 [ 99]: 8049a9ea4814f2a7 +Block 0024 [100]: cb242cd27cfb7aaf +Block 0024 [101]: 9900ad26b5ef0f3f +Block 0024 [102]: 4e6bec2d38ea9a6e +Block 0024 [103]: e887522bb791be19 +Block 0024 [104]: d54f9af1c2b5bc9b +Block 0024 [105]: 794fb8d07ba2c552 +Block 0024 [106]: b04274ed8f5dd494 +Block 0024 [107]: d71bf4bf9a0c5c17 +Block 0024 [108]: 63ace587142a3f25 +Block 0024 [109]: c18c02ae52a2c624 +Block 0024 [110]: 1671b09e592f3356 +Block 0024 [111]: 667d5a337850c037 +Block 0024 [112]: 63ed9adb5ff40317 +Block 0024 [113]: 09761522bdd824cd +Block 0024 [114]: c9f5ceeeb0acce0d +Block 0024 [115]: f372bebae8903146 +Block 0024 [116]: 6c9eda686ff955b6 +Block 0024 [117]: c908b03d9a7ef4dd +Block 0024 [118]: 27a1fb4ad5462cfe +Block 0024 [119]: 65adea8ae2a3691c +Block 0024 [120]: d2f8455998158ff1 +Block 0024 [121]: 4e8d8cff4287451d +Block 0024 [122]: 373a40bd398b3b56 +Block 0024 [123]: 00d65a5e941cf620 +Block 0024 [124]: 1d372b94a5e9724e +Block 0024 [125]: fd18b7bdefd3cc85 +Block 0024 [126]: b73020928acc6ec7 +Block 0024 [127]: 5866a79c2f9b9ec2 +Block 0025 [ 0]: 2c8561d11345bbcb +Block 0025 [ 1]: ce6b125eaa1ab9cd +Block 0025 [ 2]: ef91bc08ad2244e5 +Block 0025 [ 3]: ec81f10048ac717e +Block 0025 [ 4]: a9affd940d74bf39 +Block 0025 [ 5]: cd98cc9c5393538f +Block 0025 [ 6]: 1b7c025eeb86399c +Block 0025 [ 7]: 4440b32b87d747c0 +Block 0025 [ 8]: c0054024c9250c55 +Block 0025 [ 9]: f03d35557436b20c +Block 0025 [ 10]: 764f39d7dd1f043e +Block 0025 [ 11]: 17ac1f78e9f775b1 +Block 0025 [ 12]: 62d840c226d25a5a +Block 0025 [ 13]: d5ef4813fe759d16 +Block 0025 [ 14]: f3baaaedccdeb3f9 +Block 0025 [ 15]: c0feebdc9ba007b3 +Block 0025 [ 16]: 2df4f2102dc70b1f +Block 0025 [ 17]: e14ea24eb589dcbf +Block 0025 [ 18]: 14be7f23ca6820fd +Block 0025 [ 19]: 4c9de98e69afbcd2 +Block 0025 [ 20]: f20fedd341647ed0 +Block 0025 [ 21]: e70fcbb02c9f4f79 +Block 0025 [ 22]: 7f59100d250af8cd +Block 0025 [ 23]: c76e62d635d909c0 +Block 0025 [ 24]: eab76215f68d0071 +Block 0025 [ 25]: 9fa18ffe8b564ddc +Block 0025 [ 26]: 40df692eaa9bee66 +Block 0025 [ 27]: b3a82daf41021a13 +Block 0025 [ 28]: 4199c651a6bd5120 +Block 0025 [ 29]: 89a07dd41b1161fd +Block 0025 [ 30]: 0f47fe85a659fa91 +Block 0025 [ 31]: 040a9d9ee85cfd1e +Block 0025 [ 32]: 92234c7a2bf25570 +Block 0025 [ 33]: b9675da57984dcb4 +Block 0025 [ 34]: d8bf2ee4b5bb9c8d +Block 0025 [ 35]: 32fcffbf779a3384 +Block 0025 [ 36]: 81f8caec0275cb10 +Block 0025 [ 37]: e756b8355cc18d9f +Block 0025 [ 38]: 210c41a46917854e +Block 0025 [ 39]: bbe7ae313f50b74d +Block 0025 [ 40]: 5a0e6077c90b80f3 +Block 0025 [ 41]: 20cbcf55a59f0ae9 +Block 0025 [ 42]: 1a9bf5275e23f6ae +Block 0025 [ 43]: b60aba0334ebd328 +Block 0025 [ 44]: 6232098b300f34c2 +Block 0025 [ 45]: 8b1262163e3ecbe9 +Block 0025 [ 46]: 9450850dc44e0827 +Block 0025 [ 47]: 800f5c08eb0de9be +Block 0025 [ 48]: e02529340ab3491e +Block 0025 [ 49]: 14448f2f13e3eac8 +Block 0025 [ 50]: ca3a090b7fa5fd5c +Block 0025 [ 51]: 2e2855e54d1e7d4d +Block 0025 [ 52]: d80732c77d3b75db +Block 0025 [ 53]: af59db9a16d1295a +Block 0025 [ 54]: db8a6b5029f7e1d0 +Block 0025 [ 55]: cb24634059acee01 +Block 0025 [ 56]: 80d3b1a96dccb73a +Block 0025 [ 57]: d674a0056f0f898b +Block 0025 [ 58]: 7d4e4dc314a7973f +Block 0025 [ 59]: d330792bac28cf76 +Block 0025 [ 60]: adddec91b6a078fe +Block 0025 [ 61]: 9f897bcb1daa95b8 +Block 0025 [ 62]: c5d47c497ba05724 +Block 0025 [ 63]: 36bd497fe0ee75e5 +Block 0025 [ 64]: e41394607adf5f0b +Block 0025 [ 65]: ee10a8850916afa0 +Block 0025 [ 66]: 440a2c96a32b150f +Block 0025 [ 67]: 11a62fe43c209a7d +Block 0025 [ 68]: 2483e11426e0bfbd +Block 0025 [ 69]: 24bbbcbbb3d29f48 +Block 0025 [ 70]: d4922b4a42b77a9b +Block 0025 [ 71]: bd8f38e3a1cbca43 +Block 0025 [ 72]: 5a944ab4975ffc86 +Block 0025 [ 73]: 0a94006a12ca9108 +Block 0025 [ 74]: 2d049664d5293f21 +Block 0025 [ 75]: de2d183b83723606 +Block 0025 [ 76]: 908ce9b248b632fe +Block 0025 [ 77]: 4d2399cbea6d11eb +Block 0025 [ 78]: d3a61307f6d2e71b +Block 0025 [ 79]: d78ff693a340c1b9 +Block 0025 [ 80]: e2b7dedc3bfe183e +Block 0025 [ 81]: f7f9130cf2bc302f +Block 0025 [ 82]: 7ec60ab2f056dddf +Block 0025 [ 83]: 9eb37b7bf5425ae8 +Block 0025 [ 84]: 4c9d4276d205539c +Block 0025 [ 85]: 8b0c8fbabf1d8e4c +Block 0025 [ 86]: 52c844a54b3c0d74 +Block 0025 [ 87]: 85082ba1b87e8697 +Block 0025 [ 88]: fde7046900f73003 +Block 0025 [ 89]: 2885d7326f19e580 +Block 0025 [ 90]: 629e3906763fa72e +Block 0025 [ 91]: 8155ef418fa73ed0 +Block 0025 [ 92]: 9702b7e6c0917c24 +Block 0025 [ 93]: ccbb8af78a30c364 +Block 0025 [ 94]: 3c06039ccc5c1250 +Block 0025 [ 95]: b21fb045ad23a550 +Block 0025 [ 96]: efc77389136204d2 +Block 0025 [ 97]: 4c8fc177b55d223f +Block 0025 [ 98]: 6d303bee7329d236 +Block 0025 [ 99]: 347855b3983e06cf +Block 0025 [100]: 96475c0602f7ab59 +Block 0025 [101]: 0eff8ef338e4c7b4 +Block 0025 [102]: a8358c0ef351209f +Block 0025 [103]: 6400fc24e1bf0846 +Block 0025 [104]: e5893beeb36900c7 +Block 0025 [105]: 8a5c06564967d92a +Block 0025 [106]: f4481f247efaff02 +Block 0025 [107]: 69f0148dbc2507e4 +Block 0025 [108]: 7b19b02cfbd82ab0 +Block 0025 [109]: 4469137a30358b3b +Block 0025 [110]: b1a01da0f55b563f +Block 0025 [111]: b899bcd1494fe3e4 +Block 0025 [112]: e995344bcb8a69cb +Block 0025 [113]: 4862fb4389d31d3a +Block 0025 [114]: cdd82bd88a77097b +Block 0025 [115]: d906fcd88852d153 +Block 0025 [116]: e73aee160b2f9f77 +Block 0025 [117]: 2cf4ab8864284ead +Block 0025 [118]: 94983532f5b9e9d0 +Block 0025 [119]: 8902bb6ab139c3b4 +Block 0025 [120]: d965e225233846ca +Block 0025 [121]: 0febb5dde12e73e6 +Block 0025 [122]: 5dcf41f7ac767e41 +Block 0025 [123]: abe3a933299c8864 +Block 0025 [124]: d52527ce42a74ef7 +Block 0025 [125]: 81a8bf9a14401ee2 +Block 0025 [126]: 5780722f3c56e71a +Block 0025 [127]: 1b5b439ac8fce429 +Block 0026 [ 0]: ae548c9772346e38 +Block 0026 [ 1]: 4fa526f2904c3366 +Block 0026 [ 2]: 9a8e9ea747daadca +Block 0026 [ 3]: 46973c0cd183d6ad +Block 0026 [ 4]: ce6a0e48d6f080dd +Block 0026 [ 5]: 5327d1f0c37edf5a +Block 0026 [ 6]: 5fe636ad749684f6 +Block 0026 [ 7]: 3b569db4a5edbfcf +Block 0026 [ 8]: 90a8b454e4cf3ed7 +Block 0026 [ 9]: 7cdc08367e3e2b71 +Block 0026 [ 10]: dda1e07bca57c639 +Block 0026 [ 11]: 72135942b792af04 +Block 0026 [ 12]: f5d3dbcfb527f94c +Block 0026 [ 13]: 5d53092f61d8b459 +Block 0026 [ 14]: 047f8cf54161ed96 +Block 0026 [ 15]: 28de041eca46827e +Block 0026 [ 16]: 9e852eb5ea2e9fc9 +Block 0026 [ 17]: b7bc6bfbdf8d9473 +Block 0026 [ 18]: 2327a4982d9b8658 +Block 0026 [ 19]: de0448dedc439638 +Block 0026 [ 20]: 934fe5cc76d058dc +Block 0026 [ 21]: 7dd47c7d0611bd3c +Block 0026 [ 22]: ff6491f77d6c374f +Block 0026 [ 23]: 6f2ee705e23e1a62 +Block 0026 [ 24]: d95c95a7c376023f +Block 0026 [ 25]: ebb90bcb0d9a2e1a +Block 0026 [ 26]: 3598ae7c8025d27e +Block 0026 [ 27]: 3acf5e34e2a22c29 +Block 0026 [ 28]: eaa7b06e760fdf0d +Block 0026 [ 29]: c48e161cc6f08026 +Block 0026 [ 30]: dc2f743f8d9ef409 +Block 0026 [ 31]: 66c36a950778d2ef +Block 0026 [ 32]: d9d698a90de3fcc9 +Block 0026 [ 33]: dfaaa9c45957f231 +Block 0026 [ 34]: fa96f793b50fb045 +Block 0026 [ 35]: d12152c0bb31e67e +Block 0026 [ 36]: a9cbe26a967a23e8 +Block 0026 [ 37]: a483b2137eba42a7 +Block 0026 [ 38]: 678e8942ca66a847 +Block 0026 [ 39]: b6c8df9f4f648309 +Block 0026 [ 40]: 85be6df849950f62 +Block 0026 [ 41]: 4a9b1e4f16d00056 +Block 0026 [ 42]: fbf726756de4f7cd +Block 0026 [ 43]: f5f74eee063e34b7 +Block 0026 [ 44]: 52c1dcab8bcb3aa6 +Block 0026 [ 45]: 11fa37fea38d4b35 +Block 0026 [ 46]: a22979225556a561 +Block 0026 [ 47]: 7b6cdcaf026a134f +Block 0026 [ 48]: 02215c77ffb8ba6f +Block 0026 [ 49]: 24c28f63fb82bbcc +Block 0026 [ 50]: 6641a2d247b276ca +Block 0026 [ 51]: 463e403d21ed000f +Block 0026 [ 52]: e1d1c18d038ac211 +Block 0026 [ 53]: b74b95388ef69417 +Block 0026 [ 54]: 5de1e73a34c312c0 +Block 0026 [ 55]: 919719bbabaa83dd +Block 0026 [ 56]: 65b50e27ffe6a184 +Block 0026 [ 57]: 51dac09fb50c02d1 +Block 0026 [ 58]: 2a9815328a8815c2 +Block 0026 [ 59]: ffc7ea217c6861d0 +Block 0026 [ 60]: e020534e9bcd9d60 +Block 0026 [ 61]: fc3b710fa977051a +Block 0026 [ 62]: c8d68adcf4dc7857 +Block 0026 [ 63]: 55d86434ab763b69 +Block 0026 [ 64]: 6fa6c5d1d43e9faa +Block 0026 [ 65]: 2ec426b514999842 +Block 0026 [ 66]: 5884ee9d8bf1835a +Block 0026 [ 67]: 05ef086605a8ef52 +Block 0026 [ 68]: 6a9d4ee140146fca +Block 0026 [ 69]: d6a60aedc3bc7081 +Block 0026 [ 70]: 04b0a19c5451e4f7 +Block 0026 [ 71]: 0ea33ec34ba6b2de +Block 0026 [ 72]: ae420c0fee6ac2b4 +Block 0026 [ 73]: 3fee59ec7d4b26f0 +Block 0026 [ 74]: cfe1ebb530f09ee3 +Block 0026 [ 75]: 45c85970af8da75e +Block 0026 [ 76]: feb044354d937fc6 +Block 0026 [ 77]: 75fa91e6d156063c +Block 0026 [ 78]: f0479b4d513cf9e7 +Block 0026 [ 79]: f8cdc62687425767 +Block 0026 [ 80]: f73dfe8ab5567ae2 +Block 0026 [ 81]: 85c68e4020055359 +Block 0026 [ 82]: 91ed030700606540 +Block 0026 [ 83]: 7f59b1cc08cdd6de +Block 0026 [ 84]: 6503c24c1f5b5c90 +Block 0026 [ 85]: cee0c563eb591403 +Block 0026 [ 86]: a303bfa7eb1b3032 +Block 0026 [ 87]: 99ad670a2df52aae +Block 0026 [ 88]: 5ec0d7924bc8bcfa +Block 0026 [ 89]: f15dc0086097353e +Block 0026 [ 90]: 2aebc4f955613c0b +Block 0026 [ 91]: 5ca9833074c616e9 +Block 0026 [ 92]: 0c833254e30c2f41 +Block 0026 [ 93]: 9b1036a798694f12 +Block 0026 [ 94]: 0baf65d1f2a96312 +Block 0026 [ 95]: d67aad555f4881a6 +Block 0026 [ 96]: 99363147a71a98a9 +Block 0026 [ 97]: b18ba165a3222f8e +Block 0026 [ 98]: 4d6a118499101f4b +Block 0026 [ 99]: 77adecd01727a763 +Block 0026 [100]: 9d9155117157c8b5 +Block 0026 [101]: 9334b2f46d38d90e +Block 0026 [102]: 033648fbf89c6a27 +Block 0026 [103]: 6c96ba978dd3f8c0 +Block 0026 [104]: 91127e21031763c7 +Block 0026 [105]: 7f45dd941d58c054 +Block 0026 [106]: 0c1f22840b808997 +Block 0026 [107]: 9a9c45cb2f25b945 +Block 0026 [108]: 95f018d01ddb615f +Block 0026 [109]: b4a4286739862bdd +Block 0026 [110]: 12b248b330903c22 +Block 0026 [111]: 97867ec381bfee1d +Block 0026 [112]: a3370bd49b04d2ca +Block 0026 [113]: 8ab03ff18952afc9 +Block 0026 [114]: 81c74f0e0e9f3e18 +Block 0026 [115]: 9baa92ecb9564b1d +Block 0026 [116]: 707f7364a07d053e +Block 0026 [117]: b781cb02fb407b4d +Block 0026 [118]: cbef3f8e31dd48f4 +Block 0026 [119]: d3c7cdf145f5d28b +Block 0026 [120]: 24c9538782719f61 +Block 0026 [121]: 6e01e7f44c899af6 +Block 0026 [122]: ba51a4e8a6f5c5c1 +Block 0026 [123]: 42b49d032c5116f7 +Block 0026 [124]: 22c17a60e3321c7f +Block 0026 [125]: 6891d19c5ea28025 +Block 0026 [126]: 2a2c4cf8b6b67af8 +Block 0026 [127]: 89fdbf5492ff1c7f +Block 0027 [ 0]: ac48f5e7f46f4fc7 +Block 0027 [ 1]: 111bfa2387fe89c8 +Block 0027 [ 2]: a6c13eb1f00dcd99 +Block 0027 [ 3]: fb5add8b9675f2ad +Block 0027 [ 4]: 947336bbc2c39d5f +Block 0027 [ 5]: 79170081b46d1552 +Block 0027 [ 6]: faeebc5d66735e64 +Block 0027 [ 7]: d157ef9d8d14e44d +Block 0027 [ 8]: e1108af73d0163a7 +Block 0027 [ 9]: 4dbbd37910f1d938 +Block 0027 [ 10]: 80e8c0cfe5358976 +Block 0027 [ 11]: a3764edca50cfea2 +Block 0027 [ 12]: 3ad83939c168f63d +Block 0027 [ 13]: e3d3799c94fc7059 +Block 0027 [ 14]: 10206472c79f89e5 +Block 0027 [ 15]: a9d5ef9a59a886c6 +Block 0027 [ 16]: 88133d2608d75bfe +Block 0027 [ 17]: d08bc087021ec134 +Block 0027 [ 18]: 7a4a97baf35864f6 +Block 0027 [ 19]: b9e73155448e7298 +Block 0027 [ 20]: a275b2e3bb59940c +Block 0027 [ 21]: d26622791d1b2e81 +Block 0027 [ 22]: da05dba481c66703 +Block 0027 [ 23]: 8633f6b013f0583d +Block 0027 [ 24]: ce34bddc5869a81b +Block 0027 [ 25]: 0da213a70c07c86a +Block 0027 [ 26]: 388e524b02744481 +Block 0027 [ 27]: 08a5c9ca9689ff59 +Block 0027 [ 28]: 9821e14ebc900143 +Block 0027 [ 29]: cfa50a6b406ff2e2 +Block 0027 [ 30]: 1a53259a976999ae +Block 0027 [ 31]: 897f319a5c192ce7 +Block 0027 [ 32]: 74f531c163c3f191 +Block 0027 [ 33]: 0c5f7df2dde9b276 +Block 0027 [ 34]: 3ab217cf1fc819db +Block 0027 [ 35]: bc2c75715c05513d +Block 0027 [ 36]: 45a36d781eba43bd +Block 0027 [ 37]: bee1fe714b21e563 +Block 0027 [ 38]: e6479e8fab9dc871 +Block 0027 [ 39]: 0e1ae1d2ac24ae18 +Block 0027 [ 40]: 32baba742e8b9c07 +Block 0027 [ 41]: 9c5d49921197e424 +Block 0027 [ 42]: 94df5e61cac42a41 +Block 0027 [ 43]: db7a15804336237c +Block 0027 [ 44]: cbebc89ec1ae1ea3 +Block 0027 [ 45]: 2df7c9e2fcd66a2b +Block 0027 [ 46]: addfa745e2f0b541 +Block 0027 [ 47]: 60d4ee32d06bff3c +Block 0027 [ 48]: c0a1d3ff568071a7 +Block 0027 [ 49]: 68ced550e0fe7d47 +Block 0027 [ 50]: 3e06864703d2343a +Block 0027 [ 51]: d4e22f553815e7e5 +Block 0027 [ 52]: 257066f1cd8a6b09 +Block 0027 [ 53]: 8f1b8af2f45309ee +Block 0027 [ 54]: 5b0b4b45373d7762 +Block 0027 [ 55]: b55556164e87c922 +Block 0027 [ 56]: b4855a07acff4d93 +Block 0027 [ 57]: f14c1f32e16d6632 +Block 0027 [ 58]: 5cc4fc4c46151abc +Block 0027 [ 59]: bee51a57eb866845 +Block 0027 [ 60]: f8882d4179c8ba00 +Block 0027 [ 61]: f4668d69538eb68a +Block 0027 [ 62]: 83e8c1cc3aa26049 +Block 0027 [ 63]: 88fb20ca9c98fb62 +Block 0027 [ 64]: f2c3e5d04b183fe9 +Block 0027 [ 65]: 81bd1bc05a4f33a5 +Block 0027 [ 66]: 87f468bfc53c09b3 +Block 0027 [ 67]: d086962547462880 +Block 0027 [ 68]: 5f8c35242d9984c9 +Block 0027 [ 69]: e98e3bdff1298505 +Block 0027 [ 70]: 8eb0beddde71346f +Block 0027 [ 71]: 51338a7e4f3d297b +Block 0027 [ 72]: 472b3c3d565087b9 +Block 0027 [ 73]: 46eb999bac7333a6 +Block 0027 [ 74]: 62443cbed1cadc8a +Block 0027 [ 75]: 26b71b069331c7dc +Block 0027 [ 76]: ad2a45d57cbc6a55 +Block 0027 [ 77]: fd55b1459e4123ca +Block 0027 [ 78]: 823c12d897da595e +Block 0027 [ 79]: 84d4986bafc471e6 +Block 0027 [ 80]: 66a05a4298ca3345 +Block 0027 [ 81]: 7a37fcdfea6adb51 +Block 0027 [ 82]: 56bc9ff1d5f7b168 +Block 0027 [ 83]: db14aae988498545 +Block 0027 [ 84]: 66d40028cd079b41 +Block 0027 [ 85]: 05c66fa63c2fc32d +Block 0027 [ 86]: b49425bd113a373c +Block 0027 [ 87]: ee8be4598a806743 +Block 0027 [ 88]: b83f1835026b9428 +Block 0027 [ 89]: 0b73aec123c56947 +Block 0027 [ 90]: 9a8b473b45918be7 +Block 0027 [ 91]: 93658a783b0883d1 +Block 0027 [ 92]: 1410b26a183a87f1 +Block 0027 [ 93]: 927f2f28732ea0b9 +Block 0027 [ 94]: e921bc3435bf0ac7 +Block 0027 [ 95]: ae24686894148506 +Block 0027 [ 96]: 13bd6039622f0fd5 +Block 0027 [ 97]: c91481340d2e127a +Block 0027 [ 98]: eea71ccc0b4a481a +Block 0027 [ 99]: 0bca32d3fdc77f24 +Block 0027 [100]: 1039e2ff86cb7d80 +Block 0027 [101]: b8eb26ad8ac50063 +Block 0027 [102]: ba25c859c968fcdd +Block 0027 [103]: b1602a88979ec508 +Block 0027 [104]: 99d39c292843e6e9 +Block 0027 [105]: 69c41a0141112cb2 +Block 0027 [106]: 17ff8363cca7f3a2 +Block 0027 [107]: d18ede26963ab3fe +Block 0027 [108]: 14b7b1e93d8b5a3f +Block 0027 [109]: 11191c6bac847bbe +Block 0027 [110]: 6ae81e2647196e86 +Block 0027 [111]: c21472f1a15dbd0f +Block 0027 [112]: 72eef955654aaca2 +Block 0027 [113]: b270a62ad0597a99 +Block 0027 [114]: 984cbc12b08ef54f +Block 0027 [115]: a5315c5bfdfe25c3 +Block 0027 [116]: 5f76937e43898671 +Block 0027 [117]: 7364633ab3970ce5 +Block 0027 [118]: 4f374b7d7f8a1b0a +Block 0027 [119]: 190506b0bb55d642 +Block 0027 [120]: eae14ea2387914da +Block 0027 [121]: 0dc68aced754b64c +Block 0027 [122]: 075bd13c980f8d5d +Block 0027 [123]: c409e3f292bd7f17 +Block 0027 [124]: 693248d680ad014b +Block 0027 [125]: 0e3b9002bf420a1e +Block 0027 [126]: 7ce6516b1b1fbf1f +Block 0027 [127]: 4c4e29ee31589c05 +Block 0028 [ 0]: b8e62f53d2ce1494 +Block 0028 [ 1]: 4716437de3cb4939 +Block 0028 [ 2]: e743de1560497632 +Block 0028 [ 3]: 4aef44990a0ce04e +Block 0028 [ 4]: 789495cb8eb2e15c +Block 0028 [ 5]: 2f4c1a5e7daeab2f +Block 0028 [ 6]: 6d5dec3557836315 +Block 0028 [ 7]: 7d4122e1a18253a5 +Block 0028 [ 8]: 2fd87fc3fad80e4f +Block 0028 [ 9]: 560b67a39b7c6946 +Block 0028 [ 10]: fb71469993b02a5d +Block 0028 [ 11]: b843138e008b7e8b +Block 0028 [ 12]: 752d820480fa2a86 +Block 0028 [ 13]: 436b4bbfb932c72b +Block 0028 [ 14]: fb01a61c5836da08 +Block 0028 [ 15]: db034cda046b6127 +Block 0028 [ 16]: 94e8d49a336311cd +Block 0028 [ 17]: 85525bd6d9b150ac +Block 0028 [ 18]: e281ba6b1984ffae +Block 0028 [ 19]: 341cd2cf27ed0fbe +Block 0028 [ 20]: 255fb900f9ee2a57 +Block 0028 [ 21]: 3d2ca7c55efd98b6 +Block 0028 [ 22]: e1bc705a1a4e5936 +Block 0028 [ 23]: 743d8a0984645c1e +Block 0028 [ 24]: d2a25ac5b7a0ae02 +Block 0028 [ 25]: 8464596d961c2fec +Block 0028 [ 26]: 56ccfff6f3f24d1e +Block 0028 [ 27]: 22e2f8934e984ff3 +Block 0028 [ 28]: 81d80069716afabf +Block 0028 [ 29]: 00bda8f056cac233 +Block 0028 [ 30]: facaf2ef615a11b3 +Block 0028 [ 31]: 16220aea7c2361cb +Block 0028 [ 32]: 7a98c8ac8b212c86 +Block 0028 [ 33]: be2046ffd6d4f005 +Block 0028 [ 34]: 4d3a8bfadb8130a6 +Block 0028 [ 35]: e69d29b66fa2840e +Block 0028 [ 36]: 82e6a4458387ec9c +Block 0028 [ 37]: e2fd832d31bc7e24 +Block 0028 [ 38]: 734a2b7a8215dc6f +Block 0028 [ 39]: 3318314708cd9804 +Block 0028 [ 40]: e3ef4eebaa2b3437 +Block 0028 [ 41]: 264b0dbfd42251dc +Block 0028 [ 42]: 666aa0a1091a9f29 +Block 0028 [ 43]: c0dc13ba6d3e4215 +Block 0028 [ 44]: f2d6adf01f5535c2 +Block 0028 [ 45]: 79889c421015c458 +Block 0028 [ 46]: 9f037ee45505e117 +Block 0028 [ 47]: 6e710fbc8eb69ec8 +Block 0028 [ 48]: 2a2c67c6b94577fa +Block 0028 [ 49]: 7076c829b540fcaa +Block 0028 [ 50]: d6a0e63df1de5e75 +Block 0028 [ 51]: 6b915128089dfa26 +Block 0028 [ 52]: 24a738c1369229d6 +Block 0028 [ 53]: 38b6a31386518342 +Block 0028 [ 54]: 2504a90ba6da1fb8 +Block 0028 [ 55]: 3aaca316b13bd802 +Block 0028 [ 56]: d4ded71c362c675a +Block 0028 [ 57]: d279da15ea3260a8 +Block 0028 [ 58]: 622877b73a43e0bc +Block 0028 [ 59]: ed8fdde4c02d0c1f +Block 0028 [ 60]: 9f65a667b53b1f5b +Block 0028 [ 61]: 054434ff440c6b0f +Block 0028 [ 62]: 521510fe15be4238 +Block 0028 [ 63]: 09d1cb3dbbfab3d2 +Block 0028 [ 64]: 60c405bae52b27bb +Block 0028 [ 65]: 4b8430f61f53bffb +Block 0028 [ 66]: ddea9aa360566f0b +Block 0028 [ 67]: 9e4b0cdf140e2d2d +Block 0028 [ 68]: eeb7e866539ca7b8 +Block 0028 [ 69]: 2305d2ec0c38569e +Block 0028 [ 70]: ba3c174f1af83f49 +Block 0028 [ 71]: cf1716cd5dbff726 +Block 0028 [ 72]: c69d9b4bb6156859 +Block 0028 [ 73]: e3fcef7fc8facb83 +Block 0028 [ 74]: b9c49c1058079ee0 +Block 0028 [ 75]: be2238660af66738 +Block 0028 [ 76]: 29e7854ac183dc60 +Block 0028 [ 77]: b093d02735b183c7 +Block 0028 [ 78]: 0d97fe09adb193b0 +Block 0028 [ 79]: 8d4d0e8859e01b2a +Block 0028 [ 80]: 1c09ca06b9d70f7a +Block 0028 [ 81]: 03efd2a5e5867887 +Block 0028 [ 82]: a33148a972381c6d +Block 0028 [ 83]: c5028b2c7cf9d4cd +Block 0028 [ 84]: 8b891e1df0374009 +Block 0028 [ 85]: fdaedfb6277b0c64 +Block 0028 [ 86]: 01f362abbe4b7d66 +Block 0028 [ 87]: 1593ceb38675eb7a +Block 0028 [ 88]: 4851adf7198e4466 +Block 0028 [ 89]: 9723e4ff1426733f +Block 0028 [ 90]: 2d6f41236ebaeb0d +Block 0028 [ 91]: acbf9afa3d54103c +Block 0028 [ 92]: 089f3f91047ae09c +Block 0028 [ 93]: e20fd7da3b7332c5 +Block 0028 [ 94]: 8c3d70105a8261fc +Block 0028 [ 95]: 5234c9bc7fb63220 +Block 0028 [ 96]: 9c483af4900f0f6f +Block 0028 [ 97]: 9cd23f8cdbc29189 +Block 0028 [ 98]: 0d20be4fe1b12641 +Block 0028 [ 99]: 247545f7ebc6b9c5 +Block 0028 [100]: 59d21e2223d7b032 +Block 0028 [101]: 5fddedd3de444155 +Block 0028 [102]: 57c23649004c94a0 +Block 0028 [103]: 47f8c185c7daa78e +Block 0028 [104]: 7a436d32bb4ea254 +Block 0028 [105]: 1ea2b132562f308f +Block 0028 [106]: 1df0c44ae53da0c1 +Block 0028 [107]: 5d94631c278430df +Block 0028 [108]: 223f090e4799308e +Block 0028 [109]: c34b01200a5f0902 +Block 0028 [110]: 28988167ff0bcfd9 +Block 0028 [111]: ca3efac91e41e25f +Block 0028 [112]: d24655cf3dd291cd +Block 0028 [113]: a89f8a7709cf0cc7 +Block 0028 [114]: 77207aee3ce2d692 +Block 0028 [115]: 15447a4d13aee4f0 +Block 0028 [116]: 4eeb873ecdee4dee +Block 0028 [117]: 22fe4e3a6e49ac5d +Block 0028 [118]: b3589967e475ff68 +Block 0028 [119]: 82b89afabfa951b1 +Block 0028 [120]: 507f14e7277ca935 +Block 0028 [121]: 8fc0cdbca8b10d5a +Block 0028 [122]: 468f7431d1d35d51 +Block 0028 [123]: 0d1db698bf4056f7 +Block 0028 [124]: d48ceb4a52d6c49e +Block 0028 [125]: 4bb84640eada6d78 +Block 0028 [126]: e8436d8fac0e9480 +Block 0028 [127]: 26861997b678a434 +Block 0029 [ 0]: dc0dc7d0a82c999a +Block 0029 [ 1]: 0e7cd16d2f440e38 +Block 0029 [ 2]: 9f26fad50ff36536 +Block 0029 [ 3]: cea8f4c5df334ab7 +Block 0029 [ 4]: f300d6980ad722ff +Block 0029 [ 5]: 8eb946655f1d9632 +Block 0029 [ 6]: 0b922b678d8cadbf +Block 0029 [ 7]: ed47f3a695e54f8a +Block 0029 [ 8]: a04f84304cf89f71 +Block 0029 [ 9]: 8ce09bb046ec0a8c +Block 0029 [ 10]: 9d6490006c2a5257 +Block 0029 [ 11]: b3199e810bcfbb88 +Block 0029 [ 12]: 0e207156c4f218a0 +Block 0029 [ 13]: a6398c4e9dbcea21 +Block 0029 [ 14]: c1b9e1a00b8a739f +Block 0029 [ 15]: c526710d98b6bf9b +Block 0029 [ 16]: 456b74b8105ae58b +Block 0029 [ 17]: 1627450bd0fba708 +Block 0029 [ 18]: 41857be6b6848579 +Block 0029 [ 19]: 5233421198274bae +Block 0029 [ 20]: 4b2bd848cd0384c0 +Block 0029 [ 21]: 06e3d552d3f4bb55 +Block 0029 [ 22]: 775fb045ea301961 +Block 0029 [ 23]: b8a46779d7f319f2 +Block 0029 [ 24]: a1727300e2873c49 +Block 0029 [ 25]: 2b547509b7138ebb +Block 0029 [ 26]: dbdcef5e8a67474f +Block 0029 [ 27]: a441df44126436be +Block 0029 [ 28]: 16402d492197daed +Block 0029 [ 29]: 77279d37d3daef7b +Block 0029 [ 30]: 4c6f50e750e0efea +Block 0029 [ 31]: 69a69d2e077902b0 +Block 0029 [ 32]: bee3b81216877446 +Block 0029 [ 33]: 9255f02e02972175 +Block 0029 [ 34]: 7d47b932a7bdc11e +Block 0029 [ 35]: 9b6d5923af072c99 +Block 0029 [ 36]: 0a3819ce8e9f49ed +Block 0029 [ 37]: 98ed9e938b421644 +Block 0029 [ 38]: d1cffdb408dc5063 +Block 0029 [ 39]: 2e615c6fbd0b9642 +Block 0029 [ 40]: ba63184fc76368e8 +Block 0029 [ 41]: 903af699e71bfe3a +Block 0029 [ 42]: 73218c8b59c6af76 +Block 0029 [ 43]: 0fa0e272f3735d96 +Block 0029 [ 44]: 2a287ece60d08fa8 +Block 0029 [ 45]: 4d5475661899e55f +Block 0029 [ 46]: 69d8074c9d0f42ad +Block 0029 [ 47]: 30eebd523eb0754e +Block 0029 [ 48]: b53f283d7752fc7d +Block 0029 [ 49]: 5dea1409e6111e21 +Block 0029 [ 50]: dcd6aba8a5dfe8c6 +Block 0029 [ 51]: ea3657c1e57689fe +Block 0029 [ 52]: d46407d5713004ee +Block 0029 [ 53]: 7cdd19952ee13591 +Block 0029 [ 54]: 38f3d88b0ae422c5 +Block 0029 [ 55]: e7da12227354c586 +Block 0029 [ 56]: 113440ada1f5e39e +Block 0029 [ 57]: 8ccb809fafc63799 +Block 0029 [ 58]: bfd3985569626cf8 +Block 0029 [ 59]: 7ad94e3e7b06e8e8 +Block 0029 [ 60]: 6b444ae566e62a4f +Block 0029 [ 61]: ed7960eada1d2774 +Block 0029 [ 62]: b0bdc355d05782ef +Block 0029 [ 63]: 6e25edee7de6f5e8 +Block 0029 [ 64]: 9d0e81797df63c41 +Block 0029 [ 65]: 693a3bc26573c32a +Block 0029 [ 66]: e7229482ee70c324 +Block 0029 [ 67]: edf62e67ad4eaa5a +Block 0029 [ 68]: bbb26d77c48c9954 +Block 0029 [ 69]: 870f2d918efb8fdc +Block 0029 [ 70]: 422a46134ec8d22c +Block 0029 [ 71]: 35644114b3f8fc04 +Block 0029 [ 72]: 3532571a5c119a3a +Block 0029 [ 73]: aa8b114087670213 +Block 0029 [ 74]: 6006a9a76ab59c06 +Block 0029 [ 75]: 255230fdb77abea5 +Block 0029 [ 76]: bb50b303992eb4bd +Block 0029 [ 77]: 502b81a9140cc5e8 +Block 0029 [ 78]: d1f6edb3918526e5 +Block 0029 [ 79]: 3d729e074a33c655 +Block 0029 [ 80]: 297a725b9b3dafe2 +Block 0029 [ 81]: 8a436bdf75e0799f +Block 0029 [ 82]: f32829e3052dd6e7 +Block 0029 [ 83]: e8020c256d086133 +Block 0029 [ 84]: 3e868bd1c14c4a35 +Block 0029 [ 85]: 510fa73c666a05cf +Block 0029 [ 86]: 2de06be3807cfa46 +Block 0029 [ 87]: 1131a6fc025f90f0 +Block 0029 [ 88]: d948da793fcf0195 +Block 0029 [ 89]: f59ea5fff22c69f3 +Block 0029 [ 90]: 8a8b281df8a1573b +Block 0029 [ 91]: aa614b1304208961 +Block 0029 [ 92]: 4b791a952fc31b04 +Block 0029 [ 93]: 9653dc5b85510b5a +Block 0029 [ 94]: 8391634e659159dc +Block 0029 [ 95]: 6b090f8a6b59c4cd +Block 0029 [ 96]: 04c73c62fb1a121a +Block 0029 [ 97]: 186e3e22f6df5d01 +Block 0029 [ 98]: 775987313eba92bd +Block 0029 [ 99]: b150a5063cd54416 +Block 0029 [100]: a898b872c4290dc0 +Block 0029 [101]: 2dec9c175eaa421e +Block 0029 [102]: f2349cc83080779d +Block 0029 [103]: 7b8a3330d6cc6828 +Block 0029 [104]: 57a82d270e0d0a83 +Block 0029 [105]: f7c09940f35b45e2 +Block 0029 [106]: 395dca91740b4d8f +Block 0029 [107]: dc452d4bb0ff7b49 +Block 0029 [108]: c928d4f1f5feae04 +Block 0029 [109]: 29a21f9c67cb6c67 +Block 0029 [110]: c7192e442ca9c08c +Block 0029 [111]: 86846d3ffae5176f +Block 0029 [112]: 466454ea82069d53 +Block 0029 [113]: 7cbb9ec68b6f3b37 +Block 0029 [114]: 1a3483f87e349bce +Block 0029 [115]: 72735395b8866f07 +Block 0029 [116]: b7845e72f6a6c391 +Block 0029 [117]: d3cd149c07e70ed4 +Block 0029 [118]: 70152f3ba32dadef +Block 0029 [119]: 9b2fc8cf00a302e9 +Block 0029 [120]: a6f923e577c940bd +Block 0029 [121]: 958c7b390683bf99 +Block 0029 [122]: 6835bc14651b0d68 +Block 0029 [123]: 4af56df7bc755c90 +Block 0029 [124]: 1d299f11bef26d4a +Block 0029 [125]: 3c33f78a4e2c7041 +Block 0029 [126]: 1e7aa5bfab2de5f6 +Block 0029 [127]: a1cfbf5cc9690a29 +Block 0030 [ 0]: 56403ff10624a725 +Block 0030 [ 1]: cb21b53aeebf1911 +Block 0030 [ 2]: 6a4b03dec8d7576a +Block 0030 [ 3]: 0a959378af94d9a2 +Block 0030 [ 4]: 76740a8361f993da +Block 0030 [ 5]: f7ec77e7d0a9c2e3 +Block 0030 [ 6]: 930548e31bf90bb6 +Block 0030 [ 7]: 33e8969a8fefb02a +Block 0030 [ 8]: b80b5bdea558ae41 +Block 0030 [ 9]: 7afcf57879a14ff7 +Block 0030 [ 10]: e9a58a4d57c0b159 +Block 0030 [ 11]: b46f819f25300f6d +Block 0030 [ 12]: 73a8dd3fec3d706b +Block 0030 [ 13]: 8df47cfad884b6b8 +Block 0030 [ 14]: db32b4826baff56d +Block 0030 [ 15]: 93fca71b86463568 +Block 0030 [ 16]: 958fb17a99858dc9 +Block 0030 [ 17]: bf8b9deaae690142 +Block 0030 [ 18]: 5d69921ae34a496c +Block 0030 [ 19]: cd9430b2765c1a00 +Block 0030 [ 20]: 3cc3eac00ab30b27 +Block 0030 [ 21]: 784c9d59ff888702 +Block 0030 [ 22]: 5ebfde2ffc5e8612 +Block 0030 [ 23]: fa94037530fc9117 +Block 0030 [ 24]: f1aad571330e6f2d +Block 0030 [ 25]: 12242a0143d83d9a +Block 0030 [ 26]: 067f6bae76476b1f +Block 0030 [ 27]: ab1e017f3b96cf7b +Block 0030 [ 28]: b07114c3fc1b52c3 +Block 0030 [ 29]: d395f25bf240f4cd +Block 0030 [ 30]: 2c4f65c1a5891610 +Block 0030 [ 31]: fd8971a418f37a17 +Block 0030 [ 32]: 59b41782840c6382 +Block 0030 [ 33]: a4609b7937256a85 +Block 0030 [ 34]: 4060a0ad26047191 +Block 0030 [ 35]: d6bb43e24964ce71 +Block 0030 [ 36]: 070744845b3e8c27 +Block 0030 [ 37]: 8a3aced5135b61d5 +Block 0030 [ 38]: 2d361d2aa3d973f6 +Block 0030 [ 39]: f8b7b6450c897249 +Block 0030 [ 40]: c21c5d01c2061db5 +Block 0030 [ 41]: 708ee32963504c80 +Block 0030 [ 42]: e0526f18fa7286fa +Block 0030 [ 43]: 452c1cc6bd2a3df8 +Block 0030 [ 44]: e7ee8913d0dcbe12 +Block 0030 [ 45]: 0d20f9888247400c +Block 0030 [ 46]: c57bb303384000c1 +Block 0030 [ 47]: 8bdbdfd39f23cafd +Block 0030 [ 48]: d3d2db36d3f0bfe9 +Block 0030 [ 49]: 57842c57448b4d21 +Block 0030 [ 50]: 67cccfdc58e9425e +Block 0030 [ 51]: 0a77bcda03f8e7ab +Block 0030 [ 52]: 08162d72f21cd178 +Block 0030 [ 53]: d862f85ef1aad708 +Block 0030 [ 54]: 33a2c7c7302cf000 +Block 0030 [ 55]: 733964f2f7d11f3a +Block 0030 [ 56]: f500fc23d8b85449 +Block 0030 [ 57]: 61de1eb634e3fd8d +Block 0030 [ 58]: fcb8381a3c9cd9b6 +Block 0030 [ 59]: 7017a157f66d15f1 +Block 0030 [ 60]: c64e8b189a954811 +Block 0030 [ 61]: 9ba76d687b94adaf +Block 0030 [ 62]: a6b272e5d92188b8 +Block 0030 [ 63]: 6841fdc815be462f +Block 0030 [ 64]: 1b53ca5fe4da04f9 +Block 0030 [ 65]: d140a9681de7f793 +Block 0030 [ 66]: 2864833625fb709b +Block 0030 [ 67]: 466e842a1e25b9d1 +Block 0030 [ 68]: 6b18539a0e8f361b +Block 0030 [ 69]: bfb3f75745f472ce +Block 0030 [ 70]: 57c2b7c84c8ec029 +Block 0030 [ 71]: 07e8170512cda2eb +Block 0030 [ 72]: 5eb697918e0df23d +Block 0030 [ 73]: a452ae051564b908 +Block 0030 [ 74]: 6de6f313b67d0582 +Block 0030 [ 75]: 134f87167e7c40b2 +Block 0030 [ 76]: eccecc2fe1055b86 +Block 0030 [ 77]: a4ca7026209e9bb1 +Block 0030 [ 78]: 7552964676a78b35 +Block 0030 [ 79]: 7a61cf6633e2fbeb +Block 0030 [ 80]: 784b00f1cbb29afe +Block 0030 [ 81]: 9fcdddd078b1e257 +Block 0030 [ 82]: 00e101054f707c03 +Block 0030 [ 83]: db5adaf60bf2e437 +Block 0030 [ 84]: ef81ffd1dfef4efe +Block 0030 [ 85]: 67485ac05e54166b +Block 0030 [ 86]: f9f051d395efb2ef +Block 0030 [ 87]: 4771eeb1bca6abc0 +Block 0030 [ 88]: 25ed681a049a8932 +Block 0030 [ 89]: 85aa643b1e215974 +Block 0030 [ 90]: b95ce7df5509a035 +Block 0030 [ 91]: dd7ee5ec984e80f7 +Block 0030 [ 92]: b5082241623dec7e +Block 0030 [ 93]: 360e2f0aa5094574 +Block 0030 [ 94]: ecb1e918ba947537 +Block 0030 [ 95]: 4b39a59cf5a4724c +Block 0030 [ 96]: 2c2e27bc2a4aa6cb +Block 0030 [ 97]: daba908b41132d44 +Block 0030 [ 98]: c67199b898cf8033 +Block 0030 [ 99]: 9ea02120498927e8 +Block 0030 [100]: 6f05fdbc9fa3d5b2 +Block 0030 [101]: bb4b7047cfb8b9b5 +Block 0030 [102]: dc3841c0c91928f8 +Block 0030 [103]: 5ecc900dfacc478a +Block 0030 [104]: eb131107b102b5ed +Block 0030 [105]: ef986a212c71b150 +Block 0030 [106]: 8c0346f529d89ff8 +Block 0030 [107]: 15a3dbebdffac0ef +Block 0030 [108]: 23b8ff1afadba569 +Block 0030 [109]: cec9a5bcfeb89a9d +Block 0030 [110]: dfa3a9eab4e56646 +Block 0030 [111]: 6f249dbe4936c946 +Block 0030 [112]: 7cd49a60875ff3b8 +Block 0030 [113]: 456f7d13c3c46c7d +Block 0030 [114]: 06f3cd65d03cb442 +Block 0030 [115]: 2304f587a79164fb +Block 0030 [116]: fa9507f37257dd34 +Block 0030 [117]: e436215a2968e923 +Block 0030 [118]: fadb5d64c644c1f0 +Block 0030 [119]: 6586ddb3ac4ec704 +Block 0030 [120]: c259fb75e774f567 +Block 0030 [121]: 9c6f25ac91097ef7 +Block 0030 [122]: 53a3aa7b117fd8d2 +Block 0030 [123]: a222c5dbfcea5b17 +Block 0030 [124]: f5c7264e4298f7dd +Block 0030 [125]: e42b8aab71526f4c +Block 0030 [126]: 36a06cedca259e6e +Block 0030 [127]: 7d4c74d40f6cf9b1 +Block 0031 [ 0]: 23096d324bc688ac +Block 0031 [ 1]: aaaf0d73fe233abf +Block 0031 [ 2]: 45deb0feb5cfe89f +Block 0031 [ 3]: e75e8591c13fa1c1 +Block 0031 [ 4]: 58fc4134fad92e02 +Block 0031 [ 5]: 5db26a376b615c02 +Block 0031 [ 6]: da053b431ef56ee5 +Block 0031 [ 7]: 6441eaa8d6f4b63b +Block 0031 [ 8]: e505203c43439709 +Block 0031 [ 9]: 6cc836cf5a1d4dd4 +Block 0031 [ 10]: 035f77a001795210 +Block 0031 [ 11]: f7d84a712a0be8c6 +Block 0031 [ 12]: 6374683fe43aafb2 +Block 0031 [ 13]: 79b63ad8b92922bc +Block 0031 [ 14]: c406f248eabf2717 +Block 0031 [ 15]: 575a5c692ab42804 +Block 0031 [ 16]: c6d10060a1cd2621 +Block 0031 [ 17]: 92da1e6618e11b43 +Block 0031 [ 18]: b523f610826573ec +Block 0031 [ 19]: 91647f861a1b738d +Block 0031 [ 20]: 53b2d479aecaeac9 +Block 0031 [ 21]: d718fdfb5f58610d +Block 0031 [ 22]: 093838aa5ff089da +Block 0031 [ 23]: 38372e3db58bffd4 +Block 0031 [ 24]: 8d378223cde74bd9 +Block 0031 [ 25]: b88babf6be9b7885 +Block 0031 [ 26]: 37798d42f3b741e5 +Block 0031 [ 27]: 617dd90119c8ed1e +Block 0031 [ 28]: f16f7f20516e2a35 +Block 0031 [ 29]: c93603426642baa6 +Block 0031 [ 30]: 146abacd69d959f5 +Block 0031 [ 31]: c4247f51d67c6cbd +Block 0031 [ 32]: c0510ff3c43f68a4 +Block 0031 [ 33]: d52b68f374ae3d9a +Block 0031 [ 34]: e5939a3a19bd722d +Block 0031 [ 35]: d5290857364573f0 +Block 0031 [ 36]: 17aa070d61e5c302 +Block 0031 [ 37]: 1f37f8771382a8b5 +Block 0031 [ 38]: 9732439f2585d52c +Block 0031 [ 39]: cb0ff8ecf1a64368 +Block 0031 [ 40]: 6b3aa8cb0652f1d3 +Block 0031 [ 41]: bc79601df3ef67fd +Block 0031 [ 42]: 21a77f1daa776047 +Block 0031 [ 43]: 60f67b8268745ff7 +Block 0031 [ 44]: 6461989778c5c365 +Block 0031 [ 45]: f66c239e51ace489 +Block 0031 [ 46]: 1f4215447e8b95c5 +Block 0031 [ 47]: fda49d068c4cca64 +Block 0031 [ 48]: b82ecf8e54b7be06 +Block 0031 [ 49]: ca622a0f405ecce9 +Block 0031 [ 50]: 486f841dff09d069 +Block 0031 [ 51]: 630e220de62c44b8 +Block 0031 [ 52]: dcd5e3d43775f5c0 +Block 0031 [ 53]: f51e1db1beb85f5d +Block 0031 [ 54]: 9bebcb6211ea1418 +Block 0031 [ 55]: 27c12b98ab0cde15 +Block 0031 [ 56]: 577c8483cefbe03a +Block 0031 [ 57]: f18162e7dfe1fa28 +Block 0031 [ 58]: 4550ae5a14910ef5 +Block 0031 [ 59]: 68c17796c3e18462 +Block 0031 [ 60]: ce3f1bc4d8ca6ea0 +Block 0031 [ 61]: 0a7f6c8713171bf4 +Block 0031 [ 62]: 49db8e353dbc6c63 +Block 0031 [ 63]: 3c1b03bcbf973b61 +Block 0031 [ 64]: 50b73b5a2be2d01a +Block 0031 [ 65]: cad103e62cd424b7 +Block 0031 [ 66]: b63bb94a03e96b94 +Block 0031 [ 67]: 3dce33f43571b63b +Block 0031 [ 68]: 8991efdcd68b1881 +Block 0031 [ 69]: 7991bec920dc2513 +Block 0031 [ 70]: 543bd896a0aec32a +Block 0031 [ 71]: 31975407e35ffbda +Block 0031 [ 72]: 91bf1882d9f04f82 +Block 0031 [ 73]: 915b49ba75abd738 +Block 0031 [ 74]: c14e94a2903fb3dd +Block 0031 [ 75]: 8dd6532f78147d7f +Block 0031 [ 76]: 0451fc2ab0afb3fb +Block 0031 [ 77]: cca805260a94a9f1 +Block 0031 [ 78]: 9d2e561caf0bfae7 +Block 0031 [ 79]: cb48e4c034cb2f70 +Block 0031 [ 80]: e6296174922c963e +Block 0031 [ 81]: bc32fcbb313624c7 +Block 0031 [ 82]: 75c4a636f8acf6cb +Block 0031 [ 83]: 4ad9dd3db09f06c8 +Block 0031 [ 84]: 50edd6878814ca57 +Block 0031 [ 85]: 5bfe1ff263a3ae46 +Block 0031 [ 86]: 68ee772f72f6c8b2 +Block 0031 [ 87]: 9735d4d4522038cb +Block 0031 [ 88]: 6c8b146a8e5bd46e +Block 0031 [ 89]: 786f50b346deed51 +Block 0031 [ 90]: 01b34a7881702460 +Block 0031 [ 91]: 062f20d6acb3e8df +Block 0031 [ 92]: 906c1d926d2fd7ca +Block 0031 [ 93]: e1101e03b5f2f535 +Block 0031 [ 94]: 489144da468edbe4 +Block 0031 [ 95]: 7c69834cb26f3591 +Block 0031 [ 96]: fe71ee9f1eda2fa8 +Block 0031 [ 97]: f686a8a9f320c81d +Block 0031 [ 98]: 0f36ac84e3b1ab3a +Block 0031 [ 99]: 62c84899bff9c8ea +Block 0031 [100]: ab6c693fd5812652 +Block 0031 [101]: 2490c249e4bdc896 +Block 0031 [102]: 90165b9d7707d15d +Block 0031 [103]: 602089074e333b10 +Block 0031 [104]: cfeeb42b75b826f2 +Block 0031 [105]: 25df5eb36f0fcbe6 +Block 0031 [106]: 6c610a78e7e2c121 +Block 0031 [107]: ba9ef75c8b1ab051 +Block 0031 [108]: 751580ae24ffafff +Block 0031 [109]: 796d75c2626f151e +Block 0031 [110]: 51a674f9cd60f453 +Block 0031 [111]: 4092b7a9db825e4b +Block 0031 [112]: 03b892952b3a6783 +Block 0031 [113]: 984f1224c15e46d3 +Block 0031 [114]: 577f3987e96bc50a +Block 0031 [115]: 48c651195cc2f54a +Block 0031 [116]: a188e49cafffb66b +Block 0031 [117]: de2fe79179d0d038 +Block 0031 [118]: 752817094fda94c8 +Block 0031 [119]: ee7fc1aebfdf6676 +Block 0031 [120]: 9ef3229e4a43bc12 +Block 0031 [121]: 4ed60db4a70c9ebc +Block 0031 [122]: ca210a90d1e7b1d5 +Block 0031 [123]: e4ac7e478e4c5742 +Block 0031 [124]: e6495ff396d8363d +Block 0031 [125]: 6ff03b334458fbbe +Block 0031 [126]: 9837e423a5dfa741 +Block 0031 [127]: 047d44015a325363 + + After pass 1: +Block 0000 [ 0]: e3fb2e268f900f66 +Block 0000 [ 1]: 7439378a0a6639f2 +Block 0000 [ 2]: c20177f77b9e57f7 +Block 0000 [ 3]: 62d1c2f3b177e775 +Block 0000 [ 4]: 010b430eca211c55 +Block 0000 [ 5]: 581f6b73beb358a2 +Block 0000 [ 6]: de4531f2d3e9e765 +Block 0000 [ 7]: 354d361204880bc4 +Block 0000 [ 8]: 60f45d3ec3e81426 +Block 0000 [ 9]: 59d1b09beef4315c +Block 0000 [ 10]: 4c32367f94014002 +Block 0000 [ 11]: c62f23749953a777 +Block 0000 [ 12]: 96ba213b1c87add4 +Block 0000 [ 13]: 9d4a8c5f9f9979bf +Block 0000 [ 14]: ceba387fd3bf3ce8 +Block 0000 [ 15]: dcb091e26fdcb1fe +Block 0000 [ 16]: 40c140ea86068435 +Block 0000 [ 17]: 6da8a0c2a2c9f431 +Block 0000 [ 18]: 354901ef32128b87 +Block 0000 [ 19]: d46f9eb89dad9f84 +Block 0000 [ 20]: 1fcc3f60149dc112 +Block 0000 [ 21]: 2a341f1c1dc3af46 +Block 0000 [ 22]: 22659f2bfd353eeb +Block 0000 [ 23]: 4d6d28963f38a164 +Block 0000 [ 24]: df5d69f9d0b40c13 +Block 0000 [ 25]: 89abf69974dd6c09 +Block 0000 [ 26]: a46625c20113d827 +Block 0000 [ 27]: 6f65f7f4457eea4b +Block 0000 [ 28]: 4a2166aeb2c13701 +Block 0000 [ 29]: cc33af554ce1f9d5 +Block 0000 [ 30]: 2af8f0a4ab422f82 +Block 0000 [ 31]: 1471f3986be1318e +Block 0000 [ 32]: c189f6ad217e1902 +Block 0000 [ 33]: a4025f02c6f24e1b +Block 0000 [ 34]: 000270894020bf40 +Block 0000 [ 35]: ac654c608f7f6b1a +Block 0000 [ 36]: e890c2c953eb6cff +Block 0000 [ 37]: f70fd27b375d00c9 +Block 0000 [ 38]: f818fd8309282f55 +Block 0000 [ 39]: 0f82560ec9db8484 +Block 0000 [ 40]: 2fadca952c97e08d +Block 0000 [ 41]: 560503e18158235b +Block 0000 [ 42]: 8f75cedfa48eae2c +Block 0000 [ 43]: b0c0ba0f37f28d8c +Block 0000 [ 44]: 0ab11a787093b7c8 +Block 0000 [ 45]: 4ae894919c99adfd +Block 0000 [ 46]: b9438539887c129e +Block 0000 [ 47]: 652052807b9b929e +Block 0000 [ 48]: 1030a36998d8fc43 +Block 0000 [ 49]: 0d78648b147fc3fb +Block 0000 [ 50]: a3935a0d4d807f6b +Block 0000 [ 51]: 18322a1a3359986f +Block 0000 [ 52]: 39a4740b865a74d9 +Block 0000 [ 53]: efa0e864a84dbda3 +Block 0000 [ 54]: e2f7ea75d1373e2f +Block 0000 [ 55]: 52f49da5261114b3 +Block 0000 [ 56]: 6a9f76e97f268ed1 +Block 0000 [ 57]: 43b853a2d338a8a0 +Block 0000 [ 58]: e1ae6a0bd807180b +Block 0000 [ 59]: 01040029cc767661 +Block 0000 [ 60]: 5e58e78ee50a1767 +Block 0000 [ 61]: 57ec24216fc63ed8 +Block 0000 [ 62]: 80a49c3f22fdd85d +Block 0000 [ 63]: d5d0e4eead2e4ef1 +Block 0000 [ 64]: d90cd2dea871320e +Block 0000 [ 65]: 4898d8ab95cc1eac +Block 0000 [ 66]: b2526ee0ecd1b7c3 +Block 0000 [ 67]: 3f1304f97e40d1fd +Block 0000 [ 68]: 4fe7f903ccd50fc7 +Block 0000 [ 69]: b09f1e4534a2b086 +Block 0000 [ 70]: 15b2d783fef56d65 +Block 0000 [ 71]: 623b233f45b78357 +Block 0000 [ 72]: 222b8328857cbbf3 +Block 0000 [ 73]: 9e8b591e3ddc674b +Block 0000 [ 74]: 9d5f9c1175d3cfac +Block 0000 [ 75]: cdfed2479475ff0f +Block 0000 [ 76]: 578303162fa2fd68 +Block 0000 [ 77]: abdff1e5a90040df +Block 0000 [ 78]: 8bdf145f562c9439 +Block 0000 [ 79]: 6fdd6ee3687d0755 +Block 0000 [ 80]: e79896384171ce2c +Block 0000 [ 81]: 5fe7b604f2342731 +Block 0000 [ 82]: ce9aaeb79e334ae3 +Block 0000 [ 83]: ff7393ad8d8452ab +Block 0000 [ 84]: 1340d485daddd017 +Block 0000 [ 85]: 9f5e61eb20c73f56 +Block 0000 [ 86]: 12708fe8ee89f971 +Block 0000 [ 87]: 83e57ca3b90fd30d +Block 0000 [ 88]: 57bd5a009e893c1a +Block 0000 [ 89]: e8a2427f400a6b68 +Block 0000 [ 90]: 1864104374f0922c +Block 0000 [ 91]: 3a07637c208d2efe +Block 0000 [ 92]: 621a846dcbfb1ced +Block 0000 [ 93]: 533f537dd33899fb +Block 0000 [ 94]: 56054d47bd2bf2bc +Block 0000 [ 95]: bd5da1e233daecba +Block 0000 [ 96]: c828f6e61986518c +Block 0000 [ 97]: f776e421d7691707 +Block 0000 [ 98]: dd4d1701c47721a0 +Block 0000 [ 99]: ef2a67d69b2090a4 +Block 0000 [100]: 0e48ac99d7796b67 +Block 0000 [101]: 6f35548fd9821251 +Block 0000 [102]: e360107576a231e4 +Block 0000 [103]: 85b6afa7a07e8f2e +Block 0000 [104]: 80df552826894974 +Block 0000 [105]: 85fb118f9f9acbca +Block 0000 [106]: f9e6526764ae5abc +Block 0000 [107]: 3166d902c90b73ab +Block 0000 [108]: 2db764f075d97191 +Block 0000 [109]: 91bb8e6002bcdd69 +Block 0000 [110]: 3b4bd48482fc18a0 +Block 0000 [111]: 1964e27d7b517411 +Block 0000 [112]: 04bce2ee1a2ae0fb +Block 0000 [113]: c8b55cdb33615758 +Block 0000 [114]: 5571d3cf275d9e9a +Block 0000 [115]: eb7dc587cf0ba5c3 +Block 0000 [116]: f42371866a0ba059 +Block 0000 [117]: a0096158492b1118 +Block 0000 [118]: d5fbd8925fbca58a +Block 0000 [119]: bc448b96f2f5d0f8 +Block 0000 [120]: 017a72102e722138 +Block 0000 [121]: 8eef302392d4e786 +Block 0000 [122]: 8ecde5ec0f48c234 +Block 0000 [123]: 8484b051cf5d7390 +Block 0000 [124]: 341edf1f8ce7f000 +Block 0000 [125]: 20997c56a8c10e85 +Block 0000 [126]: 23b51c14aa856b3e +Block 0000 [127]: 46e559dac5ea41be +Block 0001 [ 0]: 1d46a5b2e77de72b +Block 0001 [ 1]: ee043289f4d0831d +Block 0001 [ 2]: 1a413147f5e3b9f7 +Block 0001 [ 3]: 137f3aef8602d2f1 +Block 0001 [ 4]: d454d1ffa74dc5fb +Block 0001 [ 5]: 828cda6b79135058 +Block 0001 [ 6]: 278f3ea96a5cd853 +Block 0001 [ 7]: afdb583dd84a8191 +Block 0001 [ 8]: 1642eb90bbf75ac2 +Block 0001 [ 9]: 3b841aa72f245bda +Block 0001 [ 10]: f3b6ce618684abd1 +Block 0001 [ 11]: d9111cea61e82f2c +Block 0001 [ 12]: b00bc3cfc9f3e0ec +Block 0001 [ 13]: 13e0841f678146d0 +Block 0001 [ 14]: 87344022a6314341 +Block 0001 [ 15]: 16ebe5bbda788f2c +Block 0001 [ 16]: f31897fc7711373d +Block 0001 [ 17]: 95646b8a01c39e6d +Block 0001 [ 18]: 9978b1566a604df2 +Block 0001 [ 19]: 28e3b9275aa1cb95 +Block 0001 [ 20]: fbe7b8cd882db34e +Block 0001 [ 21]: 68db9956b0687fd5 +Block 0001 [ 22]: e3a130ad0550deb5 +Block 0001 [ 23]: 48816eecc8abd94a +Block 0001 [ 24]: 7d6fc00b6ba0c2bf +Block 0001 [ 25]: 2f4472d95cf686fe +Block 0001 [ 26]: 327f0b645db59ab9 +Block 0001 [ 27]: 829296ca1a22fc08 +Block 0001 [ 28]: 0f0a79cdf903f2e8 +Block 0001 [ 29]: 6c332ecad39a87bd +Block 0001 [ 30]: 1e260f565f5989b7 +Block 0001 [ 31]: d5a1473dbe2d0aa2 +Block 0001 [ 32]: 096a921679ba2dd1 +Block 0001 [ 33]: 7619e7d77c9d01bb +Block 0001 [ 34]: 3b56411b799de6e2 +Block 0001 [ 35]: c949efaa5d0a4df2 +Block 0001 [ 36]: e53adb20842f3ca6 +Block 0001 [ 37]: 136521fd46a4acb8 +Block 0001 [ 38]: 8197cfc0a1fcf52f +Block 0001 [ 39]: 311a717a05a453f1 +Block 0001 [ 40]: f1fefcc0c061303e +Block 0001 [ 41]: f847097f596a3f8e +Block 0001 [ 42]: f194b08886ac3cad +Block 0001 [ 43]: a9246165ca378831 +Block 0001 [ 44]: 8ac25ee4ae34f610 +Block 0001 [ 45]: 33df3ba56469a9ea +Block 0001 [ 46]: 9eee7810a9d70864 +Block 0001 [ 47]: 6c75b1e152236a92 +Block 0001 [ 48]: 752235f00bb5c903 +Block 0001 [ 49]: f164925c2a7be36c +Block 0001 [ 50]: 2da1e30108fc8fb4 +Block 0001 [ 51]: 6c3771e335d6017a +Block 0001 [ 52]: cf4b88a58975d2be +Block 0001 [ 53]: a88c5459281f39b1 +Block 0001 [ 54]: 60905f0a77168ee8 +Block 0001 [ 55]: f94282bf2a421210 +Block 0001 [ 56]: fc76fc1fc2f01720 +Block 0001 [ 57]: 6da2751d9852faed +Block 0001 [ 58]: 986d26816864de3d +Block 0001 [ 59]: c553f05019d4a321 +Block 0001 [ 60]: 68c6e60d0a99ebf5 +Block 0001 [ 61]: 57b8d0f980f32975 +Block 0001 [ 62]: dcf1a931b0a4d91a +Block 0001 [ 63]: b524327c5a6cba95 +Block 0001 [ 64]: 0177bc3461dae88d +Block 0001 [ 65]: 06334cd19b2360ff +Block 0001 [ 66]: b4c95ce9ae0a4f33 +Block 0001 [ 67]: d7db629a31078d2d +Block 0001 [ 68]: 7d5508fc240cfafa +Block 0001 [ 69]: f1ac892f9fca325b +Block 0001 [ 70]: 4ac67ba91de337bb +Block 0001 [ 71]: b585e1542b744ef2 +Block 0001 [ 72]: a5ec9f043faa061b +Block 0001 [ 73]: 9f14c405dcc67e3d +Block 0001 [ 74]: fc1a0455604f4d26 +Block 0001 [ 75]: 6e47c36365efe9dc +Block 0001 [ 76]: 72c7224932bb6a4c +Block 0001 [ 77]: 88cccd6e1051059c +Block 0001 [ 78]: a2af3bfda6893035 +Block 0001 [ 79]: e2661142356aa6df +Block 0001 [ 80]: 7fc859e8fb9fc4c5 +Block 0001 [ 81]: e01830977c1c69cd +Block 0001 [ 82]: bdc1fbb0acfc8c68 +Block 0001 [ 83]: c4de467177585060 +Block 0001 [ 84]: fb0eb9f25baeaa8d +Block 0001 [ 85]: 5543c3b2d23a6aaf +Block 0001 [ 86]: fc5364f361affef3 +Block 0001 [ 87]: 2661b6ec9e3e81df +Block 0001 [ 88]: 159eb8a3dbaa5544 +Block 0001 [ 89]: 832e5850eff81dc6 +Block 0001 [ 90]: dfb275dfc14906d6 +Block 0001 [ 91]: 5750dd06ccfc208d +Block 0001 [ 92]: 9d11f0f4f89bdf02 +Block 0001 [ 93]: 01e7694ed5472b3f +Block 0001 [ 94]: 4324d37e2bfbf8e5 +Block 0001 [ 95]: 8521c6316b93ac44 +Block 0001 [ 96]: 98dc479af8e8a9f2 +Block 0001 [ 97]: d2f8f5aad51138b3 +Block 0001 [ 98]: 58726306640d6589 +Block 0001 [ 99]: 5c4ecb3b0d6b62ec +Block 0001 [100]: 8945f8442b28eb03 +Block 0001 [101]: 524b58de58beaaa5 +Block 0001 [102]: 9c56af0137be0cbf +Block 0001 [103]: ef5fbe2d37f124fe +Block 0001 [104]: d6e3bc8059623ca4 +Block 0001 [105]: b0de22803b1601f5 +Block 0001 [106]: 5c315b2b993bb075 +Block 0001 [107]: b384762e9a33032d +Block 0001 [108]: 0ef7659cc86a507c +Block 0001 [109]: 3955126c3bd9622f +Block 0001 [110]: 135f29240906f1f4 +Block 0001 [111]: 5075234a142090cd +Block 0001 [112]: 8a8be6391efa19fc +Block 0001 [113]: a7a10c3e7ff74a32 +Block 0001 [114]: 5c2627796eff60c7 +Block 0001 [115]: 821550147aa89280 +Block 0001 [116]: be80b9eb6aabadea +Block 0001 [117]: 798d50a096ea77ab +Block 0001 [118]: dcce0f3961cfb9a3 +Block 0001 [119]: 0acc89da98f8679a +Block 0001 [120]: 57f813a9c5319e77 +Block 0001 [121]: f59343cd09f18438 +Block 0001 [122]: 027826810b9e9474 +Block 0001 [123]: b0b30ee45fc4a37c +Block 0001 [124]: 67634e6f8a5f6fc5 +Block 0001 [125]: 78d288209655dfea +Block 0001 [126]: 5def1a47dc8ca912 +Block 0001 [127]: cb8baddc01104603 +Block 0002 [ 0]: b4f32766fc2fb715 +Block 0002 [ 1]: b4be7123402136f7 +Block 0002 [ 2]: 76c140b72f75b567 +Block 0002 [ 3]: 3ddae7ab29a3f6b0 +Block 0002 [ 4]: da2ef6fd1cb4794a +Block 0002 [ 5]: 07df94d5ee2a521d +Block 0002 [ 6]: f25b5953f3000e6a +Block 0002 [ 7]: dbbee6dfb89a14b2 +Block 0002 [ 8]: 0b8316e5ed48a90b +Block 0002 [ 9]: 1581355e70cc9236 +Block 0002 [ 10]: afbd73fed4169592 +Block 0002 [ 11]: 9ff78789ddd91d69 +Block 0002 [ 12]: 96c564bc213dfe7d +Block 0002 [ 13]: 112d0463dc156aee +Block 0002 [ 14]: 6527a1ad0c92b02e +Block 0002 [ 15]: ad9c72af7b646823 +Block 0002 [ 16]: 5ea4b9e339b1d704 +Block 0002 [ 17]: 3979e9bea09cd602 +Block 0002 [ 18]: 4723715624125911 +Block 0002 [ 19]: b5df880742867f2e +Block 0002 [ 20]: c108f080d30b96ae +Block 0002 [ 21]: a8561bf92ae22acb +Block 0002 [ 22]: 6f308a25cb4f44d0 +Block 0002 [ 23]: 49210f1bf5f858c5 +Block 0002 [ 24]: 103369041f7680e8 +Block 0002 [ 25]: 25d0b08974d86a6b +Block 0002 [ 26]: 7bbf1e22d47e3d65 +Block 0002 [ 27]: 05fe020bbba43726 +Block 0002 [ 28]: 93e03d5983cef0e7 +Block 0002 [ 29]: 114d01ffcecdeb5b +Block 0002 [ 30]: f919d06131c10a1e +Block 0002 [ 31]: a22840ab2762cbc3 +Block 0002 [ 32]: 097d11bec1f7cbc6 +Block 0002 [ 33]: d52cecc28a335714 +Block 0002 [ 34]: 63122b395c488511 +Block 0002 [ 35]: 64472a45b661ef38 +Block 0002 [ 36]: ea07ed5de91005d4 +Block 0002 [ 37]: 33c0d9c1cc815745 +Block 0002 [ 38]: 0b2e7b3981120872 +Block 0002 [ 39]: 732b2581fd570e0f +Block 0002 [ 40]: c8695bf549790cb4 +Block 0002 [ 41]: 8df10d022cd4fd88 +Block 0002 [ 42]: 995ff789a7cb6b50 +Block 0002 [ 43]: 70cf63fd75857b7a +Block 0002 [ 44]: 4f555cef13ca0d28 +Block 0002 [ 45]: 17d3047d6d033515 +Block 0002 [ 46]: 6c5ae23de1db47ac +Block 0002 [ 47]: 625eb5cc235887a0 +Block 0002 [ 48]: 73af705d95f9cf8d +Block 0002 [ 49]: 1ac7e7701ba27dca +Block 0002 [ 50]: c4843a320e7b9fc6 +Block 0002 [ 51]: 3f25a42a594fa429 +Block 0002 [ 52]: 55f42396f1bf059c +Block 0002 [ 53]: 0e8cd0250b6d8625 +Block 0002 [ 54]: 0f2258ea9f4861cf +Block 0002 [ 55]: 681355aa8627bdb8 +Block 0002 [ 56]: ad29e95503aa1771 +Block 0002 [ 57]: 94a9f6879c452369 +Block 0002 [ 58]: 149cb980146efa30 +Block 0002 [ 59]: 602a44afe93a9f5f +Block 0002 [ 60]: fd14465f4f512e10 +Block 0002 [ 61]: 3413ec3ca9fdb30b +Block 0002 [ 62]: 8427afaf7ab98367 +Block 0002 [ 63]: 434e9e4d896635f2 +Block 0002 [ 64]: e4eb02c319e2ead2 +Block 0002 [ 65]: 448e0fafa49c93ff +Block 0002 [ 66]: 8726e904d7e8f0f6 +Block 0002 [ 67]: 73ae51697f0ab4f8 +Block 0002 [ 68]: 5142c819e36f773e +Block 0002 [ 69]: 7f5a2d32df8d53a1 +Block 0002 [ 70]: cc2846c871a2889c +Block 0002 [ 71]: 6e2b8567fea69da2 +Block 0002 [ 72]: 91100438361d9622 +Block 0002 [ 73]: 4cb71cf58ceaf767 +Block 0002 [ 74]: fe8a9955a43595eb +Block 0002 [ 75]: b97e39ed024a43c8 +Block 0002 [ 76]: 4d6414f34e9caffa +Block 0002 [ 77]: 5b5bed31c60830e3 +Block 0002 [ 78]: cf165fb09f73fb04 +Block 0002 [ 79]: 17abd5f9f889a471 +Block 0002 [ 80]: c6f73bf10ba51c54 +Block 0002 [ 81]: 65da4391f68a8e02 +Block 0002 [ 82]: 67bf0346f3d53a10 +Block 0002 [ 83]: 77f940e9eb97d2d4 +Block 0002 [ 84]: 605974ad27989635 +Block 0002 [ 85]: 21b0ec7eaedf7a33 +Block 0002 [ 86]: 88eb7335366fb318 +Block 0002 [ 87]: b73c625a6339d2b3 +Block 0002 [ 88]: 5c8dc992d77e8e90 +Block 0002 [ 89]: d50c7a303def9f09 +Block 0002 [ 90]: 1b199eb77a37ac69 +Block 0002 [ 91]: 31b378bdafeeb51a +Block 0002 [ 92]: 2023a7c7e4f019d6 +Block 0002 [ 93]: cd3b1c43efd5849b +Block 0002 [ 94]: f021ebf3bfa3b6c6 +Block 0002 [ 95]: 83626e46f7f59e0d +Block 0002 [ 96]: f883913b9ae4b67a +Block 0002 [ 97]: 10327dd93721f1cd +Block 0002 [ 98]: 16921c8fa5cefadc +Block 0002 [ 99]: 6e26e0a2bbdcbc3e +Block 0002 [100]: 725dfa6d9c0bc5b5 +Block 0002 [101]: 1b650e997b82bcd8 +Block 0002 [102]: 968189d7fb58b109 +Block 0002 [103]: e2f3a2b6dddf70f4 +Block 0002 [104]: 05417319b93fbce2 +Block 0002 [105]: 715b3caa09ba64a4 +Block 0002 [106]: 5ad3b9ea8304a1ff +Block 0002 [107]: da2ab3d41e9ad55c +Block 0002 [108]: 14a0134d456f6a5e +Block 0002 [109]: aa1a634770dd5c11 +Block 0002 [110]: 49affc08d9c2903b +Block 0002 [111]: 48b0f1a6ae6b2d1d +Block 0002 [112]: 768313caff151bef +Block 0002 [113]: ecbc63fec84ea4ca +Block 0002 [114]: b4577151fb984765 +Block 0002 [115]: d2d1985874cb658d +Block 0002 [116]: bc43a0591a20cd5f +Block 0002 [117]: 592a7265947f118d +Block 0002 [118]: 0993d95f533614b8 +Block 0002 [119]: d8fb1f2db0ba6cf1 +Block 0002 [120]: 1e272a1ceb9723d2 +Block 0002 [121]: 7e8d79d8729e9b85 +Block 0002 [122]: 11a54d8443ef30ef +Block 0002 [123]: 13ebd278cf6408d0 +Block 0002 [124]: 0cb0c6f9c1c0e050 +Block 0002 [125]: 79a3979f69f9b011 +Block 0002 [126]: d9766dc5dc6a6d28 +Block 0002 [127]: 5dff30db21f8d34b +Block 0003 [ 0]: 5c0e8eb2ac341116 +Block 0003 [ 1]: d6cbfe9db820a7e5 +Block 0003 [ 2]: 88492690bb5b492f +Block 0003 [ 3]: 575b925dbc5bdd67 +Block 0003 [ 4]: ae23b16af730b3fb +Block 0003 [ 5]: 4061245bdf3d1d82 +Block 0003 [ 6]: bfe1c0711a35e1fb +Block 0003 [ 7]: 7c9e1bef0badaa6f +Block 0003 [ 8]: 88577520aff0bb2f +Block 0003 [ 9]: 7acf6df13b05aac3 +Block 0003 [ 10]: 623a024f7e05b7fe +Block 0003 [ 11]: 34df9986d84cba1a +Block 0003 [ 12]: 5891c7d8f9ad674a +Block 0003 [ 13]: 32bb68644f3f58c7 +Block 0003 [ 14]: 193a98d182752695 +Block 0003 [ 15]: 7348c6bb53017adb +Block 0003 [ 16]: a88c1149dda47535 +Block 0003 [ 17]: 809e8ecfc2c5cd1c +Block 0003 [ 18]: 7d1aeb5921a12730 +Block 0003 [ 19]: 088ff3b306bc7c7f +Block 0003 [ 20]: 61528227a0238c93 +Block 0003 [ 21]: 70cfaec7557e33b7 +Block 0003 [ 22]: f6b2d0f57f22ad1e +Block 0003 [ 23]: 788ad5922ecef9eb +Block 0003 [ 24]: 33cbd46c228be5d4 +Block 0003 [ 25]: a93f311e2b4b75c9 +Block 0003 [ 26]: 484459669692d78c +Block 0003 [ 27]: 541c85a4417d9430 +Block 0003 [ 28]: 72d61a7a6b6d38bd +Block 0003 [ 29]: e0361f44eda3b596 +Block 0003 [ 30]: 692540b77b35ebef +Block 0003 [ 31]: 76b1bf917b94fa09 +Block 0003 [ 32]: eb5172026b59e31c +Block 0003 [ 33]: b76d44dd4831053e +Block 0003 [ 34]: d7c26331cb64f3ba +Block 0003 [ 35]: d95df2282cb8145c +Block 0003 [ 36]: 2c762e95be0804b2 +Block 0003 [ 37]: 3b88edbe0e2d4479 +Block 0003 [ 38]: ed5d75dc5a5c0c96 +Block 0003 [ 39]: 8ddcccf638269fa1 +Block 0003 [ 40]: ef30ba9ec1903bcd +Block 0003 [ 41]: 7889f9abfdc37681 +Block 0003 [ 42]: 2b5df0abfa9b20f0 +Block 0003 [ 43]: a4e7f0b03ca55b8f +Block 0003 [ 44]: 68ee4e5ed9fe7b3f +Block 0003 [ 45]: ff112f684abee477 +Block 0003 [ 46]: 92b431d39e2a5763 +Block 0003 [ 47]: e8e36d6f8ee809c1 +Block 0003 [ 48]: d0237005b70919ef +Block 0003 [ 49]: 9957f98730d4b330 +Block 0003 [ 50]: 8d18db3c306a60ef +Block 0003 [ 51]: 6d2162fb5f2a8aac +Block 0003 [ 52]: 78993074cf0cb196 +Block 0003 [ 53]: 6d78ef0d260570da +Block 0003 [ 54]: c90be290f0c0db9a +Block 0003 [ 55]: e48d40d1222f1f75 +Block 0003 [ 56]: f1b0f25d7bae9f64 +Block 0003 [ 57]: b1d85163880e9e9c +Block 0003 [ 58]: 248f2f66c9bd3bf4 +Block 0003 [ 59]: 2db350fc6b31ff01 +Block 0003 [ 60]: 72c42963f8f7b1a3 +Block 0003 [ 61]: ce4692fb8577a860 +Block 0003 [ 62]: e8acb2712ccc1ac1 +Block 0003 [ 63]: e9e0055b9eb7d5b0 +Block 0003 [ 64]: c542863e636709ff +Block 0003 [ 65]: 208b57f939fa9149 +Block 0003 [ 66]: eeaecbacd2d723f3 +Block 0003 [ 67]: 2dd1762f5f3a4599 +Block 0003 [ 68]: a0b5bd72118eff35 +Block 0003 [ 69]: 87872e604d5acaf7 +Block 0003 [ 70]: 9d8df3f9ac5fac10 +Block 0003 [ 71]: 38ab8f0728f28d9f +Block 0003 [ 72]: bb869f5c8685f822 +Block 0003 [ 73]: 3cc84bfa15771927 +Block 0003 [ 74]: b33d955eb5058f87 +Block 0003 [ 75]: 50c5a14edb21eda3 +Block 0003 [ 76]: d0f8e0798baa0b9e +Block 0003 [ 77]: ffc370f5bce3ae00 +Block 0003 [ 78]: c7c8d7aeff8c896a +Block 0003 [ 79]: afc9c0f4d2bf5a7e +Block 0003 [ 80]: 180a72ef88468cb6 +Block 0003 [ 81]: 325d27bcb46aad62 +Block 0003 [ 82]: 6eae39a4e3d0412c +Block 0003 [ 83]: 7563b8c1117a5e34 +Block 0003 [ 84]: 3256ecedd245c3b6 +Block 0003 [ 85]: b9dad1a682af2e64 +Block 0003 [ 86]: 3be5053f516bd861 +Block 0003 [ 87]: 8f5580350b1f1212 +Block 0003 [ 88]: 3a5ccfa24b2ebe57 +Block 0003 [ 89]: 8fb6a522f6840c70 +Block 0003 [ 90]: 5f489838feb925d6 +Block 0003 [ 91]: ebf8889f46a7b1c3 +Block 0003 [ 92]: 7af558e63b7fdad4 +Block 0003 [ 93]: cb28e374292c5329 +Block 0003 [ 94]: 3e4d57c7c3c5138b +Block 0003 [ 95]: 3fb472e35ef05d18 +Block 0003 [ 96]: 4cc10388414f7b2e +Block 0003 [ 97]: 8d8911921bd3a077 +Block 0003 [ 98]: 8d8e0f8cabe24271 +Block 0003 [ 99]: 321a7ed80bacd083 +Block 0003 [100]: 08b6e452b7cb9101 +Block 0003 [101]: bf7529ac1a982911 +Block 0003 [102]: 189ec2106b3b9e2f +Block 0003 [103]: 4548441cb8bb8c67 +Block 0003 [104]: b64d0428974aefac +Block 0003 [105]: 4cac530a3a32b006 +Block 0003 [106]: 5d423e10b4b3083c +Block 0003 [107]: 2e1761749687ae73 +Block 0003 [108]: 340f9d62fb353269 +Block 0003 [109]: d3e4357d05a5b5b7 +Block 0003 [110]: 3ee8e727877f459a +Block 0003 [111]: 86ee8a747f8c4c60 +Block 0003 [112]: c47587b82dc2ce57 +Block 0003 [113]: 59a52a6228b02fe8 +Block 0003 [114]: 6cdd8f8ef8169bd6 +Block 0003 [115]: 532e68c714326200 +Block 0003 [116]: 622f1cf40a3a2cb9 +Block 0003 [117]: 2bae9b42f187e06f +Block 0003 [118]: 8cd5bfae2e4c553a +Block 0003 [119]: c50e498ca51b5a5b +Block 0003 [120]: 1a41b794933f4cc5 +Block 0003 [121]: 5689b19baedfdedb +Block 0003 [122]: cef70989efd8920e +Block 0003 [123]: ceca1ea83d0b60ba +Block 0003 [124]: a86ddf3979f92931 +Block 0003 [125]: a130cfdb97e45d2e +Block 0003 [126]: 214bcbaec54c3ac9 +Block 0003 [127]: 2ae65944689850ef +Block 0004 [ 0]: 68763d8f4dc6b797 +Block 0004 [ 1]: c35b04acb749b220 +Block 0004 [ 2]: 9e008e900fa39b5a +Block 0004 [ 3]: ffdbb9dfa13daf2c +Block 0004 [ 4]: 0f832d5d8848af84 +Block 0004 [ 5]: 3aa712fbe5be6260 +Block 0004 [ 6]: 910492358708f68a +Block 0004 [ 7]: e70d0f634aab150b +Block 0004 [ 8]: e54b338756626586 +Block 0004 [ 9]: cb975f4aa84cd76c +Block 0004 [ 10]: 4c5b052fc9500259 +Block 0004 [ 11]: 9ee8907736c84f2a +Block 0004 [ 12]: 5467359eceb669f0 +Block 0004 [ 13]: dddc583bd4fcc220 +Block 0004 [ 14]: 57c8fa73553d00fd +Block 0004 [ 15]: 7fb1e689663cd50d +Block 0004 [ 16]: 3338faf00a97252b +Block 0004 [ 17]: d5cfae162045a520 +Block 0004 [ 18]: 4b4b806e2a0fe0cd +Block 0004 [ 19]: fd3174851ec2d025 +Block 0004 [ 20]: 7a178853679f3cbc +Block 0004 [ 21]: 6ddad1a999b5fd67 +Block 0004 [ 22]: 99954bf164561cd6 +Block 0004 [ 23]: af17c5929f3ca759 +Block 0004 [ 24]: f181b23304e08f50 +Block 0004 [ 25]: 7f8f7622fd244742 +Block 0004 [ 26]: f14caa940328b8ef +Block 0004 [ 27]: ad856d81e450d0ba +Block 0004 [ 28]: fb922822ca811607 +Block 0004 [ 29]: c358b3e22f333870 +Block 0004 [ 30]: 6e24412ddd113d83 +Block 0004 [ 31]: cca88416017d9909 +Block 0004 [ 32]: 187412167e28c809 +Block 0004 [ 33]: 682ffb02ef727f6b +Block 0004 [ 34]: 47611191fa734e0a +Block 0004 [ 35]: fd3bd5309b064b17 +Block 0004 [ 36]: 4195c7523172d21c +Block 0004 [ 37]: 423a276c971cc93d +Block 0004 [ 38]: bc792a0f02a63fe0 +Block 0004 [ 39]: 527c3b8788e27a62 +Block 0004 [ 40]: 239da2b419083b40 +Block 0004 [ 41]: 072907b2d91069cc +Block 0004 [ 42]: 724ade176929ac75 +Block 0004 [ 43]: 5edc7e2fed571ec0 +Block 0004 [ 44]: fe0a60d8ea3ad1d9 +Block 0004 [ 45]: 57320b55e6fe925a +Block 0004 [ 46]: 8caf29ab89416bb8 +Block 0004 [ 47]: 764bead9160af40e +Block 0004 [ 48]: 3ea1e124b3b51bbd +Block 0004 [ 49]: a609833ebfbeb514 +Block 0004 [ 50]: 620da2d8d4f48d94 +Block 0004 [ 51]: 384a58568455b659 +Block 0004 [ 52]: b8080a5acf01e30b +Block 0004 [ 53]: c86519dab9e33c81 +Block 0004 [ 54]: 4d7235e7cb324477 +Block 0004 [ 55]: afff27bf710bc021 +Block 0004 [ 56]: a3efa9413cbe4f06 +Block 0004 [ 57]: 51e5da49f2d11d10 +Block 0004 [ 58]: 8192b313dff9a6d6 +Block 0004 [ 59]: cc85033019cfb146 +Block 0004 [ 60]: 9a80cf8c4b64c6af +Block 0004 [ 61]: 87a3b9ab1bbe8222 +Block 0004 [ 62]: 6f9f7f808cb3a616 +Block 0004 [ 63]: 5397b40781320e51 +Block 0004 [ 64]: a274c7a9d7565533 +Block 0004 [ 65]: 366db58498da3ad9 +Block 0004 [ 66]: d6984fc1d3dd4abf +Block 0004 [ 67]: 07b70e89b0368f17 +Block 0004 [ 68]: e4dbd66550f2f540 +Block 0004 [ 69]: 5c26abe1ca1e6d6b +Block 0004 [ 70]: 3194d9d33fef1fcf +Block 0004 [ 71]: 1df384259125c83d +Block 0004 [ 72]: d4b8d2eab54bb74e +Block 0004 [ 73]: 6f177beaa794fd94 +Block 0004 [ 74]: 858bfefff34c9703 +Block 0004 [ 75]: a610fe0abb020ddf +Block 0004 [ 76]: 0d605f849ce756eb +Block 0004 [ 77]: e9e3eb0aab42f6a8 +Block 0004 [ 78]: d8cd6f9dd7d1e9c1 +Block 0004 [ 79]: 33570318a05f6a3a +Block 0004 [ 80]: c62f3a7c4675f109 +Block 0004 [ 81]: c0e5c409e7ed3601 +Block 0004 [ 82]: 67d5d3f564f4dcb3 +Block 0004 [ 83]: 8bc802ac83110e66 +Block 0004 [ 84]: b11a610332acecfd +Block 0004 [ 85]: b898c9697bbab146 +Block 0004 [ 86]: b2ebcc2537b600d2 +Block 0004 [ 87]: 4a1860d084ad41ef +Block 0004 [ 88]: 4dbee3a9b3a59057 +Block 0004 [ 89]: b5eec319f63e48e5 +Block 0004 [ 90]: 1ba03fedd1e5988e +Block 0004 [ 91]: b876ab6ed1290b26 +Block 0004 [ 92]: 41910fdd76e03a6e +Block 0004 [ 93]: 9dd560edb3b7fc36 +Block 0004 [ 94]: 40a4b579c8c2757a +Block 0004 [ 95]: e32220051bb6714b +Block 0004 [ 96]: f9e4dbf9770bf1de +Block 0004 [ 97]: a054ed0072a59a4e +Block 0004 [ 98]: 52073e12ecb338da +Block 0004 [ 99]: 410d9b0385df6bf5 +Block 0004 [100]: 4f25338e8af6d101 +Block 0004 [101]: 3027043a4b4d617f +Block 0004 [102]: 022269273a4cc7cc +Block 0004 [103]: 5f86ce2a1aa00a74 +Block 0004 [104]: e14370945c586ef8 +Block 0004 [105]: bcb1fbf3fa607acd +Block 0004 [106]: 170b991401a249a7 +Block 0004 [107]: 834ab77e65d7e23a +Block 0004 [108]: 3f4d81e34b8d43c8 +Block 0004 [109]: df4afb352b1f524f +Block 0004 [110]: a34a706b25eb7856 +Block 0004 [111]: 3e05113600a02864 +Block 0004 [112]: 365e6d8f7f1f4a31 +Block 0004 [113]: 9606eee8204e5272 +Block 0004 [114]: 68d8d969b28fb0c2 +Block 0004 [115]: 1a9eb8715cd6e9b7 +Block 0004 [116]: 185eff4ddb1caae7 +Block 0004 [117]: 3117894ffc3ae59b +Block 0004 [118]: fe3026e14f87ecfe +Block 0004 [119]: 10c7a423fe7a65d5 +Block 0004 [120]: 755e21fe87353390 +Block 0004 [121]: 9aaddb3f131f925b +Block 0004 [122]: 9e7c0ccff3b00927 +Block 0004 [123]: 0ec0b338915b28f7 +Block 0004 [124]: ef3c96c7857be687 +Block 0004 [125]: 1da7a673eb189fc4 +Block 0004 [126]: ca663b09033a76b2 +Block 0004 [127]: af7a04a40a5669b0 +Block 0005 [ 0]: c79f4392922276a5 +Block 0005 [ 1]: a7253a2ca884d327 +Block 0005 [ 2]: 7769226ce18835a5 +Block 0005 [ 3]: ef64f75207d7a252 +Block 0005 [ 4]: 1f0991dd322affcf +Block 0005 [ 5]: 898493c297e98333 +Block 0005 [ 6]: d0e9e2f2b5868767 +Block 0005 [ 7]: 85892737b8197939 +Block 0005 [ 8]: 895c9e23adf70a30 +Block 0005 [ 9]: 22884227ac287b79 +Block 0005 [ 10]: 25a5984034fb6bd4 +Block 0005 [ 11]: b4b07194a249522b +Block 0005 [ 12]: 89da853c03c31e14 +Block 0005 [ 13]: 15a7a78cf6416ebd +Block 0005 [ 14]: 3a8c41f24d324c76 +Block 0005 [ 15]: 09b9a07581e53c67 +Block 0005 [ 16]: 55727b44460f1587 +Block 0005 [ 17]: be8ab83014f30c2b +Block 0005 [ 18]: d9cd66f01251b7ab +Block 0005 [ 19]: 0461e20365959dbf +Block 0005 [ 20]: 241084d60bf65bcc +Block 0005 [ 21]: e75c5a65ee3d4eff +Block 0005 [ 22]: e9f6084efb8ecff1 +Block 0005 [ 23]: 085c72bdd1bcd079 +Block 0005 [ 24]: c549f8fc232e2c28 +Block 0005 [ 25]: 9063e1d7ee8cfcb5 +Block 0005 [ 26]: aadf049b59766f22 +Block 0005 [ 27]: cfaf89321f6518ae +Block 0005 [ 28]: cce38daaa1867f33 +Block 0005 [ 29]: 03d7036bef580c0d +Block 0005 [ 30]: 508c0c9ea2a798fb +Block 0005 [ 31]: b01529d286e93d65 +Block 0005 [ 32]: 4cfe9506c06bc256 +Block 0005 [ 33]: 498ee5c7db7d3807 +Block 0005 [ 34]: cee012266c0edead +Block 0005 [ 35]: 2d3191fb61c9a30a +Block 0005 [ 36]: 483dd47bae7d85af +Block 0005 [ 37]: fb1b86b513e3f3ef +Block 0005 [ 38]: f643356d32817575 +Block 0005 [ 39]: 8c8f5065f019d85b +Block 0005 [ 40]: f85db49390c3d299 +Block 0005 [ 41]: 44907a02d33986ca +Block 0005 [ 42]: 28181cfdf6531de1 +Block 0005 [ 43]: a5663011f4aa85e4 +Block 0005 [ 44]: 08b43bcf0a4969b1 +Block 0005 [ 45]: af80cab64d8993a6 +Block 0005 [ 46]: c213202a03c9bd91 +Block 0005 [ 47]: 2a250caf5ac630b1 +Block 0005 [ 48]: c44cba4ba3cb48f7 +Block 0005 [ 49]: 433ad275fccbbdea +Block 0005 [ 50]: 0a663ebe1d740d6a +Block 0005 [ 51]: 9ec6d6bb7b72c222 +Block 0005 [ 52]: cc9ffe088f352287 +Block 0005 [ 53]: c98e5332fcfb0673 +Block 0005 [ 54]: b4236c49582216c7 +Block 0005 [ 55]: c4ed9ee4a7981541 +Block 0005 [ 56]: b2c45cfe65ab2eaf +Block 0005 [ 57]: 59c96abdfd1407b9 +Block 0005 [ 58]: 7ff11a8f764220d5 +Block 0005 [ 59]: 157c7ff6478bde5d +Block 0005 [ 60]: 98c24690d8f30515 +Block 0005 [ 61]: d6d37a82b506a60e +Block 0005 [ 62]: c522a84da212bc98 +Block 0005 [ 63]: 997f388966e7baa4 +Block 0005 [ 64]: c1c9995da3c387aa +Block 0005 [ 65]: 34fe68e44dc522d0 +Block 0005 [ 66]: 1ab418a3576ee0bc +Block 0005 [ 67]: 7061a489d80cf327 +Block 0005 [ 68]: 1305e4fa6caf1ed2 +Block 0005 [ 69]: b2b45190832ec6f4 +Block 0005 [ 70]: 779b0dcf42ee74ff +Block 0005 [ 71]: c2476ddfa33ada3a +Block 0005 [ 72]: c761829994837032 +Block 0005 [ 73]: d9a5ca71039fd50f +Block 0005 [ 74]: fea0745a0379c2ce +Block 0005 [ 75]: 51af17867d02c11d +Block 0005 [ 76]: 9294a53dfd591bd7 +Block 0005 [ 77]: d667cdaab8f5e3bb +Block 0005 [ 78]: f5ea5fe6aefb5f53 +Block 0005 [ 79]: 5d459d2c30fcc6d1 +Block 0005 [ 80]: 33e69f05e4d8d74f +Block 0005 [ 81]: 70c1b4348dee2873 +Block 0005 [ 82]: 95ba9ff1042c12d4 +Block 0005 [ 83]: 432b08a428b58915 +Block 0005 [ 84]: cccba8edde21f947 +Block 0005 [ 85]: 55d8ad6ab53fa0b4 +Block 0005 [ 86]: bb5120a1a45b5a62 +Block 0005 [ 87]: f0e50743f06c14d2 +Block 0005 [ 88]: b53a15f7cad3bd0e +Block 0005 [ 89]: e6832b49d6199846 +Block 0005 [ 90]: a857a8dec81b60be +Block 0005 [ 91]: 7581c0148642dd49 +Block 0005 [ 92]: 2389a4431ef7b450 +Block 0005 [ 93]: 59ce3937b5323f22 +Block 0005 [ 94]: f865028678e00b6b +Block 0005 [ 95]: 3da9f4dc5683e6c2 +Block 0005 [ 96]: ffaf9831c6329c1f +Block 0005 [ 97]: abc13a6ab1f09987 +Block 0005 [ 98]: 4f0fc5bcfc2a695e +Block 0005 [ 99]: 02e416ddee499f04 +Block 0005 [100]: cce92bc13079d077 +Block 0005 [101]: 10eb05f19080143e +Block 0005 [102]: 8b5a265b5fb50b0a +Block 0005 [103]: bc0632a8d5b9f9bf +Block 0005 [104]: a06a19d109966629 +Block 0005 [105]: ca993df44d412034 +Block 0005 [106]: 53cdd2e1e2ec5765 +Block 0005 [107]: 39e4f9f131761ca3 +Block 0005 [108]: 989b04fb1a9f90ab +Block 0005 [109]: 48831eff4e20554e +Block 0005 [110]: 4a2f93cae239783d +Block 0005 [111]: bc27a7e3199c806c +Block 0005 [112]: 8e195628a423d227 +Block 0005 [113]: 96de54e58d7f5c3e +Block 0005 [114]: 4ceede7688f7cc59 +Block 0005 [115]: 55c85913b9c14ec4 +Block 0005 [116]: f2ec832ba525d2d6 +Block 0005 [117]: 8f1edd91a8c7d1a8 +Block 0005 [118]: d7b17c40419c28ff +Block 0005 [119]: b17bc3c7508c5c1d +Block 0005 [120]: 64f123c8c38b2123 +Block 0005 [121]: efcec0aa0694a403 +Block 0005 [122]: 4257a1f86f7525c5 +Block 0005 [123]: 5c0b23bd01538eff +Block 0005 [124]: c548b0ee675348a5 +Block 0005 [125]: acd324367e84b36d +Block 0005 [126]: 4594b480fe27d287 +Block 0005 [127]: 19723de0e11f6a79 +Block 0006 [ 0]: a579aa0c6f3d472b +Block 0006 [ 1]: c086d8015e821720 +Block 0006 [ 2]: b0aff8baf2c7a915 +Block 0006 [ 3]: b1a52a27f2a6f5bb +Block 0006 [ 4]: f7a8ba507512affd +Block 0006 [ 5]: 189943ac17f52f74 +Block 0006 [ 6]: 09b050a91a7865f9 +Block 0006 [ 7]: fad3bba5cdc75e8f +Block 0006 [ 8]: a27db619efa13e78 +Block 0006 [ 9]: d7721c064ba824f2 +Block 0006 [ 10]: 9fdd5929958052be +Block 0006 [ 11]: cf2e2fe2c371b18b +Block 0006 [ 12]: 2131a496ffe7297d +Block 0006 [ 13]: 200b9a107faaa7c6 +Block 0006 [ 14]: 4dd6326851f612cd +Block 0006 [ 15]: e6f69fb0fa79e2d1 +Block 0006 [ 16]: 5666dbc6001c374e +Block 0006 [ 17]: fb1170afe5bba42e +Block 0006 [ 18]: e54d768d5140ed79 +Block 0006 [ 19]: bd4cb0de13f5c9e6 +Block 0006 [ 20]: f03b2b449f970a60 +Block 0006 [ 21]: 0da341fe0e6d9a69 +Block 0006 [ 22]: d43cbecae54f2c9c +Block 0006 [ 23]: 18e027f5b1014028 +Block 0006 [ 24]: ed27e494d9ca89d4 +Block 0006 [ 25]: 641298a39d1729e5 +Block 0006 [ 26]: 378a0e8c21129585 +Block 0006 [ 27]: c289147b34edc8f6 +Block 0006 [ 28]: 101ffb96b6ecbf60 +Block 0006 [ 29]: b3672dd20ce9fedf +Block 0006 [ 30]: 966dd9d9747a53f5 +Block 0006 [ 31]: f788ba6aa3e750fc +Block 0006 [ 32]: 87481cafc604ab49 +Block 0006 [ 33]: 4c64a15cd56861dc +Block 0006 [ 34]: 571e41e24bbcf5a6 +Block 0006 [ 35]: 5cdaf199d6c2d284 +Block 0006 [ 36]: 5d324f03722535e3 +Block 0006 [ 37]: 8456661dc13f04c4 +Block 0006 [ 38]: f5f533a3a90f6591 +Block 0006 [ 39]: 2eeb195c30fd5223 +Block 0006 [ 40]: 2761630d222c4be3 +Block 0006 [ 41]: 4b25e08ea39d2694 +Block 0006 [ 42]: 94c885e05b6311ec +Block 0006 [ 43]: 0fbd250920340527 +Block 0006 [ 44]: 6d4ed073c6c82daf +Block 0006 [ 45]: a814caf69863bff7 +Block 0006 [ 46]: 357950ed6e3db084 +Block 0006 [ 47]: 7f5b7f5f9713ab4b +Block 0006 [ 48]: f687be5cd8c6a2c3 +Block 0006 [ 49]: de98a4e2947adde6 +Block 0006 [ 50]: eae6cc68785d7a42 +Block 0006 [ 51]: 90f99300beaaea42 +Block 0006 [ 52]: 85aaed99d15ae2ef +Block 0006 [ 53]: 14ea09b591ddc64f +Block 0006 [ 54]: 82caced71a210d49 +Block 0006 [ 55]: 4a5544de2a5c2ae4 +Block 0006 [ 56]: 2b923417fd0e61a0 +Block 0006 [ 57]: 634358024288709d +Block 0006 [ 58]: 5051199e0c43bc67 +Block 0006 [ 59]: 4797c2f7d6181283 +Block 0006 [ 60]: 3cd2cab46f2be6b5 +Block 0006 [ 61]: 3a286986ea78b194 +Block 0006 [ 62]: 368e222bc11aae07 +Block 0006 [ 63]: 53d09dcde580dea8 +Block 0006 [ 64]: e789b54396eae809 +Block 0006 [ 65]: 5e58f4d02f90e164 +Block 0006 [ 66]: 3db837b465c72d91 +Block 0006 [ 67]: 3c93731de2b96f9f +Block 0006 [ 68]: 461bceda725dc09c +Block 0006 [ 69]: 605ae454b60ff23c +Block 0006 [ 70]: 9f6a7a55a20ce329 +Block 0006 [ 71]: afb30dfbb337a2e0 +Block 0006 [ 72]: 9a998168eb24849d +Block 0006 [ 73]: ae602889800db9c2 +Block 0006 [ 74]: a454c61c98327969 +Block 0006 [ 75]: 43b2763fda7e3d88 +Block 0006 [ 76]: 930a27bde3230189 +Block 0006 [ 77]: d146c0ee73488a3e +Block 0006 [ 78]: 160ca96d9bfbed68 +Block 0006 [ 79]: 73293ed851a68617 +Block 0006 [ 80]: a36a4af5095d53a7 +Block 0006 [ 81]: 4a884b706ee970fc +Block 0006 [ 82]: d3109874f0af31b3 +Block 0006 [ 83]: f62579e6a2dc3ce6 +Block 0006 [ 84]: 8d8796ad737a807a +Block 0006 [ 85]: 16077474eac18b07 +Block 0006 [ 86]: cfb80495e3fc3968 +Block 0006 [ 87]: dd93a9afb9c29429 +Block 0006 [ 88]: 29d61ca2814efa90 +Block 0006 [ 89]: 1261d10c14bf5fce +Block 0006 [ 90]: 9c86148ae36de74e +Block 0006 [ 91]: 0a2cc430be322e03 +Block 0006 [ 92]: fc9e07eedd148823 +Block 0006 [ 93]: 4bf350d0a4134d0e +Block 0006 [ 94]: 04e0631b64ecb7a2 +Block 0006 [ 95]: 43613e7ed6f1abff +Block 0006 [ 96]: 0f40979016e9c14b +Block 0006 [ 97]: 5815db6affdde07d +Block 0006 [ 98]: 3a304f5e227a8db5 +Block 0006 [ 99]: 9cf57fa62861ff03 +Block 0006 [100]: 5cb225c33209c40f +Block 0006 [101]: 2e391fe6ac391667 +Block 0006 [102]: 4518d90f949029ca +Block 0006 [103]: 6812eeafd26ea2aa +Block 0006 [104]: 1740c3c6ac78a991 +Block 0006 [105]: 207fbbab00cfa9ea +Block 0006 [106]: 23b41c5538b54596 +Block 0006 [107]: 5c1a9846f3319d0a +Block 0006 [108]: ed0078df05ce5e78 +Block 0006 [109]: 1324436b2d341a1d +Block 0006 [110]: 9f2b021f23a9d7cb +Block 0006 [111]: 6062d1f1d78311ca +Block 0006 [112]: 46509742c9200b71 +Block 0006 [113]: ece3943c9e12eef0 +Block 0006 [114]: c73efbf60644e765 +Block 0006 [115]: 014a3dc6d06c6401 +Block 0006 [116]: 4b829e9135631a97 +Block 0006 [117]: ac9f2ff9fbaa7f91 +Block 0006 [118]: 6c6511c442badeac +Block 0006 [119]: 29c3cb582054dd11 +Block 0006 [120]: 11b0047447e6156a +Block 0006 [121]: 05a9c4e4a5c6c429 +Block 0006 [122]: 018f420c32088be5 +Block 0006 [123]: f9cab0a6bff629ba +Block 0006 [124]: c3fbfc7ef9137714 +Block 0006 [125]: bc21a904c77e3ee3 +Block 0006 [126]: 809708782db7e0df +Block 0006 [127]: 718ca5bb3325a712 +Block 0007 [ 0]: 679e5aa8bdb71148 +Block 0007 [ 1]: e52a4af98006d3af +Block 0007 [ 2]: 9bde8ffbf95a10e8 +Block 0007 [ 3]: 59ee657ba4c106ad +Block 0007 [ 4]: 7276d2be25b70db9 +Block 0007 [ 5]: 8cc316c6089731d3 +Block 0007 [ 6]: 0f8657ba3ed3ae33 +Block 0007 [ 7]: 2f46e993af8d552b +Block 0007 [ 8]: a6a692d0a552f72d +Block 0007 [ 9]: 6e44096c463f5d2e +Block 0007 [ 10]: c344ea724ec74d4c +Block 0007 [ 11]: 690720809067447f +Block 0007 [ 12]: ae98d2977e34d409 +Block 0007 [ 13]: aab2ad8df1555bd4 +Block 0007 [ 14]: 8eb9ca41b2b45cff +Block 0007 [ 15]: 050599bf6f9ccf7b +Block 0007 [ 16]: b6b088c1acdd99e0 +Block 0007 [ 17]: 2f90e028fe32dcb2 +Block 0007 [ 18]: b8306c79f804adef +Block 0007 [ 19]: a3e24a843b7ca29a +Block 0007 [ 20]: 0b8e77e3832ef3c8 +Block 0007 [ 21]: d637788f5e8dd05c +Block 0007 [ 22]: 2ebb94462d5113c5 +Block 0007 [ 23]: c66e4a37b8ad1814 +Block 0007 [ 24]: 65e4545e584a515e +Block 0007 [ 25]: 8ca0b4eccf78c6d3 +Block 0007 [ 26]: febdbf5fc5eac3d4 +Block 0007 [ 27]: 8562b8d8f97d89a8 +Block 0007 [ 28]: 0005ba229d50fba0 +Block 0007 [ 29]: 6cdfedeca2fd1dc2 +Block 0007 [ 30]: 2e4d347e29c5126f +Block 0007 [ 31]: 92886832b01eed2a +Block 0007 [ 32]: b7f9dc7507a4e172 +Block 0007 [ 33]: 59728e465793e7a3 +Block 0007 [ 34]: eb3dbcf6094b9240 +Block 0007 [ 35]: 97b821b7f00e8629 +Block 0007 [ 36]: 54923f9a30b4e08c +Block 0007 [ 37]: 86a192f6a1e2112e +Block 0007 [ 38]: dc45560679db5c56 +Block 0007 [ 39]: 45413880bccb1603 +Block 0007 [ 40]: 7e1f09b1bc5d1ae8 +Block 0007 [ 41]: 6096cc8b8fe59162 +Block 0007 [ 42]: 9ffae29e2299b8b6 +Block 0007 [ 43]: b5bc95f2788c9e85 +Block 0007 [ 44]: 3e190ccc066ef8df +Block 0007 [ 45]: d93486140d5ee3f1 +Block 0007 [ 46]: 2ac3e607c8b1d7c9 +Block 0007 [ 47]: 24bad7515f760446 +Block 0007 [ 48]: 04e2792a896c3f85 +Block 0007 [ 49]: b47d1828a1f93e00 +Block 0007 [ 50]: 386850552302bcc2 +Block 0007 [ 51]: 3fd81ce12de631cd +Block 0007 [ 52]: 3b22930854f81ab5 +Block 0007 [ 53]: f501fbe750c61790 +Block 0007 [ 54]: 4d9005cae80c1b24 +Block 0007 [ 55]: efc1ae5de289ac33 +Block 0007 [ 56]: cfd69c8680e56308 +Block 0007 [ 57]: b2d5960ef58f360d +Block 0007 [ 58]: b147affb8c0bbbeb +Block 0007 [ 59]: 8a735b6080032cf6 +Block 0007 [ 60]: 194422f951c47d81 +Block 0007 [ 61]: 80751ac2883c7a4a +Block 0007 [ 62]: b002aeda5c86b283 +Block 0007 [ 63]: 96638bab02ddb989 +Block 0007 [ 64]: 0ef4e1e6322f788c +Block 0007 [ 65]: a29ada7d72130b46 +Block 0007 [ 66]: 77808fc4013a706f +Block 0007 [ 67]: 3acdb0967aecedd2 +Block 0007 [ 68]: 266a5df400a52d45 +Block 0007 [ 69]: 8aae40a11f5e48dd +Block 0007 [ 70]: d18744d894a4fd1d +Block 0007 [ 71]: e33f5cf0e01fc6de +Block 0007 [ 72]: 20748919e3d7e65e +Block 0007 [ 73]: 4041301accc810ce +Block 0007 [ 74]: 030e795d4b993886 +Block 0007 [ 75]: b1d47145d7c960ec +Block 0007 [ 76]: 853e8a6cd32c30a7 +Block 0007 [ 77]: d292da728306fab9 +Block 0007 [ 78]: ed372918abebcb2e +Block 0007 [ 79]: 1b88c15b2df4c942 +Block 0007 [ 80]: 081124b00d8ae4b4 +Block 0007 [ 81]: 43ba0fa1c38abc22 +Block 0007 [ 82]: 1561283a9709be85 +Block 0007 [ 83]: dc611021b8c8a9a7 +Block 0007 [ 84]: a81f1a2099efa89d +Block 0007 [ 85]: 4f85a4a88026f842 +Block 0007 [ 86]: d623064c9fa5e490 +Block 0007 [ 87]: a2c7668d9858c9c4 +Block 0007 [ 88]: 29e292811318c3d6 +Block 0007 [ 89]: 2b3b2a810a5df6a7 +Block 0007 [ 90]: 1b64f6c64c8a59bc +Block 0007 [ 91]: 977cbe40ed8cec43 +Block 0007 [ 92]: e31fcc085f38d53d +Block 0007 [ 93]: 8dacbd1659aa5d75 +Block 0007 [ 94]: db7be4515fae98c8 +Block 0007 [ 95]: 0e09711fddfd8a93 +Block 0007 [ 96]: 1c5e2497f8f99c08 +Block 0007 [ 97]: 14939a9fe8eeab78 +Block 0007 [ 98]: 16c9e45e8d4980b4 +Block 0007 [ 99]: 8ca0e091985666a7 +Block 0007 [100]: 40fc23e58c19d0f3 +Block 0007 [101]: 629724e6f7b62068 +Block 0007 [102]: 4408d2e716e924a5 +Block 0007 [103]: 92783fff1ffb2acc +Block 0007 [104]: a4b31f42c0b49ce3 +Block 0007 [105]: 2e79a2eb24310368 +Block 0007 [106]: 18944b2c88b72f51 +Block 0007 [107]: 64edf93e2f552fe5 +Block 0007 [108]: 71adf42caa82f448 +Block 0007 [109]: 9eca8ad4193ffb57 +Block 0007 [110]: 24b96774da15ca98 +Block 0007 [111]: 24e33d65fafaa4c7 +Block 0007 [112]: a7778267896812a4 +Block 0007 [113]: 818644acf15c0f9b +Block 0007 [114]: 6a23c1b96974dbf9 +Block 0007 [115]: 1a0b06a6608dccd8 +Block 0007 [116]: 74c08a50ef521a62 +Block 0007 [117]: 69c228cd79693adc +Block 0007 [118]: cfed8d7c69622e4b +Block 0007 [119]: e3dea674e760140f +Block 0007 [120]: 65dae947d1ea893d +Block 0007 [121]: 9851ca478cbe9e9f +Block 0007 [122]: f249edf6a015a470 +Block 0007 [123]: 45130f054a2a4e29 +Block 0007 [124]: 78c9c8039a51b9d1 +Block 0007 [125]: abb83061e831180a +Block 0007 [126]: 1e7449084d6645f0 +Block 0007 [127]: 9515bc4201360828 +Block 0008 [ 0]: d612868adf2be803 +Block 0008 [ 1]: cfadcc4be9960938 +Block 0008 [ 2]: 8a6e53600b22fe5d +Block 0008 [ 3]: 940f606aa08d0978 +Block 0008 [ 4]: a75de52bf3ae5864 +Block 0008 [ 5]: df442c83c925988a +Block 0008 [ 6]: 011e6fe8140509cb +Block 0008 [ 7]: 29440fa1ce9bfb2c +Block 0008 [ 8]: 0bf70af269753b37 +Block 0008 [ 9]: aec81a2b9dd57a05 +Block 0008 [ 10]: e923ae5f3cccfa82 +Block 0008 [ 11]: 089509caeb6454df +Block 0008 [ 12]: b2816034783a877b +Block 0008 [ 13]: 067e43081088354b +Block 0008 [ 14]: de1fcdc9ae795382 +Block 0008 [ 15]: a89e60140948d636 +Block 0008 [ 16]: 37d60ed78adc0155 +Block 0008 [ 17]: 00052b4747a78d14 +Block 0008 [ 18]: 847a306b7847724f +Block 0008 [ 19]: 3b9618df7794b366 +Block 0008 [ 20]: 75146dcfcbe1ef44 +Block 0008 [ 21]: ebdf91041a31624a +Block 0008 [ 22]: b7aaa244076549af +Block 0008 [ 23]: 95d3c561896e5c28 +Block 0008 [ 24]: 25b0a3359ad1d016 +Block 0008 [ 25]: 402e9816f5390dfc +Block 0008 [ 26]: b2c169f382b15d8e +Block 0008 [ 27]: 5e0fdc4d5d1612f1 +Block 0008 [ 28]: d8d5df2ca9ebf712 +Block 0008 [ 29]: cc215dfcbcf9b770 +Block 0008 [ 30]: 8514fc780bdfcde7 +Block 0008 [ 31]: 0c50b022e82144b9 +Block 0008 [ 32]: 5ef663b5e0fbbb26 +Block 0008 [ 33]: 5e49adb486b18df1 +Block 0008 [ 34]: 2b1c1c29dc240f7b +Block 0008 [ 35]: e214e55d4e685822 +Block 0008 [ 36]: 3083cc17110d4f82 +Block 0008 [ 37]: 753666ba11662ec3 +Block 0008 [ 38]: 1e3910d2e6ce1865 +Block 0008 [ 39]: 97264a9ffca56797 +Block 0008 [ 40]: 37dc35846509817b +Block 0008 [ 41]: 2fe851c388035963 +Block 0008 [ 42]: fbec63882e44a721 +Block 0008 [ 43]: caa997de14a10a02 +Block 0008 [ 44]: 91654566db990d85 +Block 0008 [ 45]: e66261d038c7cfd5 +Block 0008 [ 46]: 9d9528279755927e +Block 0008 [ 47]: f0656ba33f251801 +Block 0008 [ 48]: e678422625446138 +Block 0008 [ 49]: 96836ea927d354fb +Block 0008 [ 50]: d20bb54a0a4d2aff +Block 0008 [ 51]: 6f97b5db80f2ea76 +Block 0008 [ 52]: 0ce72591ed30245e +Block 0008 [ 53]: baeb8eae606fa8db +Block 0008 [ 54]: 904731f491268647 +Block 0008 [ 55]: 31dab2253f1536f2 +Block 0008 [ 56]: e2b55e214e264441 +Block 0008 [ 57]: ee95fc0ecab6d1c3 +Block 0008 [ 58]: f774d2422e8b994d +Block 0008 [ 59]: fc88a999c4c8a0e3 +Block 0008 [ 60]: ffec6c149c7b427d +Block 0008 [ 61]: f6e51ed622a2a404 +Block 0008 [ 62]: aa819f8fdf3a958a +Block 0008 [ 63]: d0bb4e5ed627ea69 +Block 0008 [ 64]: b4caf41d477be373 +Block 0008 [ 65]: c038ef1d14571811 +Block 0008 [ 66]: 5704f751069ef5c4 +Block 0008 [ 67]: 4e7d469a2b2906f0 +Block 0008 [ 68]: 6aebc5c3c6bb95ce +Block 0008 [ 69]: 07f82299037a65aa +Block 0008 [ 70]: d1a145cc12979796 +Block 0008 [ 71]: 7f005b1a0f789208 +Block 0008 [ 72]: d9fcf1ff4ddb4ee6 +Block 0008 [ 73]: b2af7d93b0bad697 +Block 0008 [ 74]: dd83b72b38f9fe4c +Block 0008 [ 75]: e3ef160315685757 +Block 0008 [ 76]: 11bb09b41d219cc1 +Block 0008 [ 77]: 6ab0fe2b24116968 +Block 0008 [ 78]: 0269d9d391b55937 +Block 0008 [ 79]: a47bf48a84c1a1af +Block 0008 [ 80]: c151934dd17851da +Block 0008 [ 81]: 28bfa5b23c63aacf +Block 0008 [ 82]: d3b26f606f9a13f3 +Block 0008 [ 83]: 4220b1ba4f653965 +Block 0008 [ 84]: af0ea18acf4b14a2 +Block 0008 [ 85]: 0a90b45dbcaf578c +Block 0008 [ 86]: 801cd8073692870c +Block 0008 [ 87]: 9ad5d654b02497a2 +Block 0008 [ 88]: 07e72f75fce4df71 +Block 0008 [ 89]: 00e4d4a54752e61d +Block 0008 [ 90]: 9c8895477b9162b2 +Block 0008 [ 91]: 1944bf577facafe6 +Block 0008 [ 92]: 2d02b70de5b04770 +Block 0008 [ 93]: 3c412182dbb85c17 +Block 0008 [ 94]: dc7f7011983e1dc4 +Block 0008 [ 95]: 2302a2015b57e359 +Block 0008 [ 96]: 83d9dd6fdad21b11 +Block 0008 [ 97]: 77b45f920c4bb8e2 +Block 0008 [ 98]: 80080b2c8d7780c0 +Block 0008 [ 99]: a9912a4771a82866 +Block 0008 [100]: ac1ada4b6da0456d +Block 0008 [101]: 0658745593b304e6 +Block 0008 [102]: 92b03ac114e5fe68 +Block 0008 [103]: a82b5eb91e9ccfd1 +Block 0008 [104]: f2374d1a660d4063 +Block 0008 [105]: 057c5713519cd9c7 +Block 0008 [106]: 5c4e596261ed929d +Block 0008 [107]: 2177c5a8322cccea +Block 0008 [108]: 1e78ddef6bfa16b5 +Block 0008 [109]: d6d0c5e8ad21dba7 +Block 0008 [110]: 3c6bf2bf4b6bb17d +Block 0008 [111]: 1a403df00f872d84 +Block 0008 [112]: e335758e00e7b5f9 +Block 0008 [113]: 0451e19983c182fe +Block 0008 [114]: d4f463b36d4b82df +Block 0008 [115]: ade54bf28baf7fcc +Block 0008 [116]: 19187ba45ba81b07 +Block 0008 [117]: 3ae1a97b3547e1aa +Block 0008 [118]: 279eb8108c2c7c64 +Block 0008 [119]: 06fa325c5342f8ed +Block 0008 [120]: 9966212e31b37911 +Block 0008 [121]: 1d9ed6b6f63f37e5 +Block 0008 [122]: 9978feff7fc82305 +Block 0008 [123]: 365c4624ef40dcab +Block 0008 [124]: 4bfaa74a2040ec68 +Block 0008 [125]: 6f833682c02a1557 +Block 0008 [126]: 60bf6db28614e2a4 +Block 0008 [127]: a0197e1101aaf452 +Block 0009 [ 0]: 125e7be23f9e2ae1 +Block 0009 [ 1]: 2dcf9e588ed34492 +Block 0009 [ 2]: dfdf0d708569f1a6 +Block 0009 [ 3]: d77f32b42b708d36 +Block 0009 [ 4]: 39312541fea455d5 +Block 0009 [ 5]: c89d0097d6fd04df +Block 0009 [ 6]: c6472c07ea14897c +Block 0009 [ 7]: 8327ca84204733a4 +Block 0009 [ 8]: f641bd8b6287310f +Block 0009 [ 9]: 1dcb8588aceb1b07 +Block 0009 [ 10]: 9651afb7ccffb052 +Block 0009 [ 11]: 3d3b291ea2ea6980 +Block 0009 [ 12]: 30a22195a702c490 +Block 0009 [ 13]: a6c7624a0c702031 +Block 0009 [ 14]: 315b0b5a03664357 +Block 0009 [ 15]: 39195128217b4b65 +Block 0009 [ 16]: 0f1bdb60cee30e1d +Block 0009 [ 17]: 4770e0438fabf04b +Block 0009 [ 18]: 07157794fcedc106 +Block 0009 [ 19]: 2822a230fedd1687 +Block 0009 [ 20]: d496741d207ab651 +Block 0009 [ 21]: 5fc8ebcc49e1454f +Block 0009 [ 22]: bb37c289793ff950 +Block 0009 [ 23]: a76dad3a5aa92cc9 +Block 0009 [ 24]: eed1c1f29d84c0ce +Block 0009 [ 25]: 635eb6e9dccb1a80 +Block 0009 [ 26]: c98604090fce7bff +Block 0009 [ 27]: 510fb045776b5356 +Block 0009 [ 28]: 8365b2db92ae9754 +Block 0009 [ 29]: f4586c23569b182e +Block 0009 [ 30]: 21315b52057b3ce7 +Block 0009 [ 31]: 90fe05d38503aea6 +Block 0009 [ 32]: 464d22ee86afa981 +Block 0009 [ 33]: d47dafe23a351752 +Block 0009 [ 34]: 71fec7c68e0a5dcf +Block 0009 [ 35]: 0bb36472e5739015 +Block 0009 [ 36]: 131f692e1c0acc56 +Block 0009 [ 37]: 73fd04a2086c8019 +Block 0009 [ 38]: 0e4908b3c94e8804 +Block 0009 [ 39]: 8048d6398b615965 +Block 0009 [ 40]: 2b89ac9aa1266744 +Block 0009 [ 41]: 1518d4a0ecd512dc +Block 0009 [ 42]: 604926c415520f1e +Block 0009 [ 43]: cb40f5c76d04dc9c +Block 0009 [ 44]: d6949d19afbab75e +Block 0009 [ 45]: a747e5b0858042f8 +Block 0009 [ 46]: 954282663fa679c9 +Block 0009 [ 47]: 1d04afb228acb029 +Block 0009 [ 48]: 2f4a1b0fc1bc470f +Block 0009 [ 49]: 267680f7f260a7ff +Block 0009 [ 50]: 411fbc5bb703f140 +Block 0009 [ 51]: bbecaa9a4b82896a +Block 0009 [ 52]: a6e3704961a41f31 +Block 0009 [ 53]: bd98c5c49517a749 +Block 0009 [ 54]: e6cb85d82369a3b9 +Block 0009 [ 55]: 69ba7c14225446b2 +Block 0009 [ 56]: fbf4a6a5eddcff1d +Block 0009 [ 57]: 41838c9bceb91e05 +Block 0009 [ 58]: b6474fb523ddbc62 +Block 0009 [ 59]: b715ba6ba33f0865 +Block 0009 [ 60]: aa4a68df42f44cdc +Block 0009 [ 61]: 2335e406b1c939b2 +Block 0009 [ 62]: 87883da03f5c0db8 +Block 0009 [ 63]: 5ec1b07fbc6aa2cc +Block 0009 [ 64]: c1854b3649373eef +Block 0009 [ 65]: 2c2de0c02c401a2f +Block 0009 [ 66]: 5131d3ba29a37386 +Block 0009 [ 67]: 362306b98176e59d +Block 0009 [ 68]: 3e0e950c86020ddd +Block 0009 [ 69]: 5f04586af32cfd6d +Block 0009 [ 70]: d667c126d71adacb +Block 0009 [ 71]: dee8b5c518f125b0 +Block 0009 [ 72]: 5a46d25441f985f1 +Block 0009 [ 73]: 5211e3c653809142 +Block 0009 [ 74]: 856ad42591bf52e4 +Block 0009 [ 75]: 41bea57d8612affe +Block 0009 [ 76]: b1b5f95510720687 +Block 0009 [ 77]: 346ceb0bbb618336 +Block 0009 [ 78]: e85af44a94adf434 +Block 0009 [ 79]: 3ea25ef8070fc019 +Block 0009 [ 80]: bdcee6ac0eb4fb02 +Block 0009 [ 81]: 73874f00a8de263b +Block 0009 [ 82]: c93632643699d45d +Block 0009 [ 83]: fde27892dc08d5dd +Block 0009 [ 84]: 289f26ea163aa0c1 +Block 0009 [ 85]: 3584be4e9437b93f +Block 0009 [ 86]: 834990ca8bd21dd5 +Block 0009 [ 87]: 369f2fed26bd92bd +Block 0009 [ 88]: dcc1434bfb54747d +Block 0009 [ 89]: 381849ce1dad2ccf +Block 0009 [ 90]: daa863935ed2c6d5 +Block 0009 [ 91]: bd40cf4c84e93cd4 +Block 0009 [ 92]: 05f9a3dc63c2556b +Block 0009 [ 93]: 240d5ee74a78afa3 +Block 0009 [ 94]: 62410111fa5baa41 +Block 0009 [ 95]: 17478960fcad0d45 +Block 0009 [ 96]: 3ca87435e9d056c3 +Block 0009 [ 97]: e44fdd8c185102b2 +Block 0009 [ 98]: ffe99cb0769d8875 +Block 0009 [ 99]: 86030c14d82dcf62 +Block 0009 [100]: 8cafeeb18e2a8c0a +Block 0009 [101]: d6c34798b443f4c3 +Block 0009 [102]: 2c744cd44d7d9699 +Block 0009 [103]: 9496d6df24516281 +Block 0009 [104]: 8d2389d16d1a2219 +Block 0009 [105]: 37ccfa20bb9b4d03 +Block 0009 [106]: 349448539bace7cf +Block 0009 [107]: 11c5dce1acc8f8d6 +Block 0009 [108]: 393f9cb72aa6fcca +Block 0009 [109]: f6fab4f88677c049 +Block 0009 [110]: 8ea980189bbd81c1 +Block 0009 [111]: 5933bbc1c4935c8f +Block 0009 [112]: bf544ba618f1e3aa +Block 0009 [113]: 6ecf8ab649253235 +Block 0009 [114]: f3d9299efd50d9f2 +Block 0009 [115]: acf6c3053c7f71fe +Block 0009 [116]: 985bdc30cc7b3a1e +Block 0009 [117]: 2c6fa017544c2f8a +Block 0009 [118]: 3873d757ebdf92ef +Block 0009 [119]: f50c701f870493b5 +Block 0009 [120]: 154a8ade495cd5f9 +Block 0009 [121]: a44c8210a1194465 +Block 0009 [122]: 372c54dca2cd833b +Block 0009 [123]: 4e21a61415e2e767 +Block 0009 [124]: 081706a771aed571 +Block 0009 [125]: 44f4da88dc2a3ccc +Block 0009 [126]: caa2180bab53cbd2 +Block 0009 [127]: d19f36217137e69d +Block 0010 [ 0]: 50f129c8314b1dd2 +Block 0010 [ 1]: f1faf24252b5ce03 +Block 0010 [ 2]: fd846116d2778287 +Block 0010 [ 3]: e172de82b6a5dd78 +Block 0010 [ 4]: 8511807345a45e26 +Block 0010 [ 5]: e2765515697dfe71 +Block 0010 [ 6]: 0011ec204248c60e +Block 0010 [ 7]: d2da550b83c17296 +Block 0010 [ 8]: a3cde273a1015bd8 +Block 0010 [ 9]: f16021f0e048fc2b +Block 0010 [ 10]: 2bfd6df1b3474b63 +Block 0010 [ 11]: e44905e2946d56e2 +Block 0010 [ 12]: f0c73e131fb1ca92 +Block 0010 [ 13]: c475c70e8fee063f +Block 0010 [ 14]: 1656f9ca27728999 +Block 0010 [ 15]: c1e395aa563f0bf4 +Block 0010 [ 16]: 18710644253867db +Block 0010 [ 17]: 7281e128ff73c012 +Block 0010 [ 18]: 17ce526cf0f21f1d +Block 0010 [ 19]: d273ebb95002216e +Block 0010 [ 20]: 440c93c6690146c6 +Block 0010 [ 21]: 7e72aab8480f9c9a +Block 0010 [ 22]: 76e632e3b3a3a1a3 +Block 0010 [ 23]: 03afa7847fbfb8af +Block 0010 [ 24]: f676d56ad1793b27 +Block 0010 [ 25]: a09d705d9e2da6a1 +Block 0010 [ 26]: 1d5d9f3397c5583d +Block 0010 [ 27]: 38d36e89deb44a7f +Block 0010 [ 28]: 87532c117619729d +Block 0010 [ 29]: b4fe29f51a9981bd +Block 0010 [ 30]: d534cbcf713073f8 +Block 0010 [ 31]: fec16e1d25805876 +Block 0010 [ 32]: 60dce345c4ecc2fc +Block 0010 [ 33]: 5dc5e0be360e32ca +Block 0010 [ 34]: 5ed0afb1d650acdc +Block 0010 [ 35]: 33c1a3ba91199c17 +Block 0010 [ 36]: 7b85af6946855eea +Block 0010 [ 37]: 4bf8f4ef629acb53 +Block 0010 [ 38]: 641454e004536e75 +Block 0010 [ 39]: e9598a67bb9e010d +Block 0010 [ 40]: 1ae66b61ba9f5fef +Block 0010 [ 41]: 8b5689f5690af5ad +Block 0010 [ 42]: c1ebe39324b7ad10 +Block 0010 [ 43]: 8d8f1a6801c2fcee +Block 0010 [ 44]: d0353ed7e27aa209 +Block 0010 [ 45]: 408cb141d33c282a +Block 0010 [ 46]: 3cec0ba738981253 +Block 0010 [ 47]: 12836a28882cec64 +Block 0010 [ 48]: 55ab2da84afa1e73 +Block 0010 [ 49]: e012d8cbba55e196 +Block 0010 [ 50]: 225e87dd4ba15450 +Block 0010 [ 51]: 97f5b2554a53497a +Block 0010 [ 52]: 858392bd86337c0c +Block 0010 [ 53]: 1e9d8ec565431484 +Block 0010 [ 54]: be25bb549fc5ad96 +Block 0010 [ 55]: 8cae37b6260f400f +Block 0010 [ 56]: 2fa1da62403ff22b +Block 0010 [ 57]: 73ef3777277c6deb +Block 0010 [ 58]: 47ffd701d6a542c1 +Block 0010 [ 59]: d21c8613fc4ad450 +Block 0010 [ 60]: 741808629149aa29 +Block 0010 [ 61]: 0dee7475344afc27 +Block 0010 [ 62]: 69f162864b0d0ba8 +Block 0010 [ 63]: e723d4414dc01d9a +Block 0010 [ 64]: 1348ee9b939a06aa +Block 0010 [ 65]: 0cd2fa596564c17b +Block 0010 [ 66]: 1e529efd0d986c9d +Block 0010 [ 67]: b2b66e0e074ceade +Block 0010 [ 68]: 2d92a419c4c8b2f6 +Block 0010 [ 69]: eb7f325a95c509b4 +Block 0010 [ 70]: 3e20722bdf51270f +Block 0010 [ 71]: cfb337b8069800dd +Block 0010 [ 72]: c2e783ed1deac4f7 +Block 0010 [ 73]: 820ca55e6f468a61 +Block 0010 [ 74]: e51d88ed7abbd53f +Block 0010 [ 75]: 0110137ae06a717c +Block 0010 [ 76]: e416efaaf88fa43f +Block 0010 [ 77]: d76b9191eb39cf1e +Block 0010 [ 78]: ff49071437550b9c +Block 0010 [ 79]: 10dd148cc497ef63 +Block 0010 [ 80]: a70022eda2cf3692 +Block 0010 [ 81]: cdbdaea580ee59ff +Block 0010 [ 82]: 0f393ef6ea262c86 +Block 0010 [ 83]: f7d2feedf24469e1 +Block 0010 [ 84]: ac673c848c7c11f0 +Block 0010 [ 85]: e2c6354b76edff69 +Block 0010 [ 86]: 9f3dab5a88e0cb1b +Block 0010 [ 87]: 4609b3ae383b07d1 +Block 0010 [ 88]: 452daef051d9f3d6 +Block 0010 [ 89]: 7a5f2288dd741e6c +Block 0010 [ 90]: d455d1c591fa4c41 +Block 0010 [ 91]: 5a6f3fc8998258ef +Block 0010 [ 92]: 9bf8f2287a507cb0 +Block 0010 [ 93]: fb689cdc1a0e2ec6 +Block 0010 [ 94]: 272c0ea1d13bed54 +Block 0010 [ 95]: 05efb5ef98d49b9c +Block 0010 [ 96]: 264f51dd7bc348d1 +Block 0010 [ 97]: eb7b7b016051f0c3 +Block 0010 [ 98]: d3b72adf5543f07b +Block 0010 [ 99]: 73ee82f261419fb2 +Block 0010 [100]: 00c085c84a773a67 +Block 0010 [101]: bf55023775668108 +Block 0010 [102]: 3f30efe65be484b0 +Block 0010 [103]: 0aaa470843840516 +Block 0010 [104]: aea27105281c4c68 +Block 0010 [105]: d42cbbc0b5c316dd +Block 0010 [106]: 5df8a9f6551e5787 +Block 0010 [107]: 5cd2d2ede1052bd1 +Block 0010 [108]: 8223be1c3f2a91f4 +Block 0010 [109]: d54cc5cb370bd398 +Block 0010 [110]: 86ec22bbbba3940b +Block 0010 [111]: 0db251349f6a3137 +Block 0010 [112]: 3c7977d6b2c09e56 +Block 0010 [113]: 18ac0e2c26a7153b +Block 0010 [114]: ffc869a4015c94e6 +Block 0010 [115]: cae6a67f644893ab +Block 0010 [116]: 3ce008df44afc6e8 +Block 0010 [117]: 470862fa2a90614b +Block 0010 [118]: 07aeeb964afbdd88 +Block 0010 [119]: efc86a0ca279152c +Block 0010 [120]: 92a22900f73b72d4 +Block 0010 [121]: ee34e6f5e7f5e239 +Block 0010 [122]: b6f97e0f206095cd +Block 0010 [123]: 05e6087e10ee7492 +Block 0010 [124]: 44a92d7be34a8939 +Block 0010 [125]: 142bf79b42ded951 +Block 0010 [126]: 28c3115e72f22ac2 +Block 0010 [127]: 3ea771b69e0e20c8 +Block 0011 [ 0]: 67512d1435cecef5 +Block 0011 [ 1]: 7b3853dbd933132a +Block 0011 [ 2]: 04edbbc01b9db0c7 +Block 0011 [ 3]: 530b98198518d7f8 +Block 0011 [ 4]: be9dc30940a7f1c1 +Block 0011 [ 5]: 51a3c35cc4e653ed +Block 0011 [ 6]: 48b8b2a91f5ab89b +Block 0011 [ 7]: 34aa887df6ebc1d6 +Block 0011 [ 8]: 92808ce9522cd897 +Block 0011 [ 9]: 624554ca78ddf7c6 +Block 0011 [ 10]: d8d17dd8cf835d2e +Block 0011 [ 11]: d0f2fe94951e9b56 +Block 0011 [ 12]: 143aa6711edf3fc5 +Block 0011 [ 13]: 07f2c6da0bd5af83 +Block 0011 [ 14]: 4e2e8b6acaea8714 +Block 0011 [ 15]: 7b0af574d5bd3bc2 +Block 0011 [ 16]: 9c8143772912448d +Block 0011 [ 17]: 613bfb2f7aefae51 +Block 0011 [ 18]: e80c8ce117a18814 +Block 0011 [ 19]: 575113a5a2211a01 +Block 0011 [ 20]: 6f3b49506671f35c +Block 0011 [ 21]: ec1c2d06d6697205 +Block 0011 [ 22]: bae45b9236962eed +Block 0011 [ 23]: 3627b2e939003bab +Block 0011 [ 24]: 21774e1f96ad4838 +Block 0011 [ 25]: 2f800b944b7f6e57 +Block 0011 [ 26]: f0f2ff9fa1e034ca +Block 0011 [ 27]: 568079414c1f5a64 +Block 0011 [ 28]: e0baa5b7614e4eb5 +Block 0011 [ 29]: efa7e51a03dd0222 +Block 0011 [ 30]: 5c50c5b5b5c5d9a1 +Block 0011 [ 31]: e954ba4be27d866d +Block 0011 [ 32]: e57766953b5f9969 +Block 0011 [ 33]: ecb7768b12667cbf +Block 0011 [ 34]: 4301f0b613246862 +Block 0011 [ 35]: d93ffef1cb456260 +Block 0011 [ 36]: 0766ad3114adbb26 +Block 0011 [ 37]: 74eb304b074faa52 +Block 0011 [ 38]: d27a3c9fbafd5b4b +Block 0011 [ 39]: e0ef96f6ed891ad1 +Block 0011 [ 40]: 48f176fa99f985bb +Block 0011 [ 41]: 1974187aeee6d69f +Block 0011 [ 42]: 1ebd104a6633296d +Block 0011 [ 43]: 7ee2a80d355fd18c +Block 0011 [ 44]: 54a44e3c90c36dc6 +Block 0011 [ 45]: 9b0e66f2251bbb4c +Block 0011 [ 46]: 40f28eb7dda899b2 +Block 0011 [ 47]: 2ae0fa589b6250e1 +Block 0011 [ 48]: cd597aa36c476ce6 +Block 0011 [ 49]: 2eeb9ab504f496e0 +Block 0011 [ 50]: feec00a7be156598 +Block 0011 [ 51]: 30f53c1d18968187 +Block 0011 [ 52]: 6f9bafc19dcc2d61 +Block 0011 [ 53]: 73dc2454808cae11 +Block 0011 [ 54]: dcfd7e7fbedaacef +Block 0011 [ 55]: 4202bfb9dad21ea0 +Block 0011 [ 56]: 79c44999c00cba6f +Block 0011 [ 57]: 602afb4925164920 +Block 0011 [ 58]: 0d08bb98820069e0 +Block 0011 [ 59]: 38181becacb9e937 +Block 0011 [ 60]: db1e2b378e2d2a64 +Block 0011 [ 61]: 6adf3645089751a7 +Block 0011 [ 62]: c63fd2836c831717 +Block 0011 [ 63]: 65e2f35fbe50b14d +Block 0011 [ 64]: 891eaf8bdf76f675 +Block 0011 [ 65]: d941b71fe6f89a8e +Block 0011 [ 66]: 9d58bc95cd06559d +Block 0011 [ 67]: 6dc168dd4383a7d8 +Block 0011 [ 68]: f4b6cad30a873798 +Block 0011 [ 69]: 9a0e5c1331340531 +Block 0011 [ 70]: 083a83268a0330d0 +Block 0011 [ 71]: 8bd4149399bc73c8 +Block 0011 [ 72]: 8864a769ea615522 +Block 0011 [ 73]: 5784251b23d40f2c +Block 0011 [ 74]: b130e47a99eb64bc +Block 0011 [ 75]: da0ef3e1b92c46d5 +Block 0011 [ 76]: 531761fde0a4d6f2 +Block 0011 [ 77]: 2856066cd9d39c8e +Block 0011 [ 78]: 26d416107a1ef8ea +Block 0011 [ 79]: eba3079322eb430b +Block 0011 [ 80]: 9f6777c77a534d6b +Block 0011 [ 81]: bb626be70b4118c2 +Block 0011 [ 82]: b61ba058ea11eb53 +Block 0011 [ 83]: 382829f1d82aeae2 +Block 0011 [ 84]: 59cdae0ac56c6a78 +Block 0011 [ 85]: c7f42b8d265831bb +Block 0011 [ 86]: e013aaa66cf03cfb +Block 0011 [ 87]: f278b94057371dac +Block 0011 [ 88]: b26876fc500fa63e +Block 0011 [ 89]: 86527c99624a20ef +Block 0011 [ 90]: 73d7f4bd8683351e +Block 0011 [ 91]: 8354b399f12c0892 +Block 0011 [ 92]: 303d51dc0f77aef1 +Block 0011 [ 93]: eb114cf73af14329 +Block 0011 [ 94]: 74267d913db759de +Block 0011 [ 95]: 4fec949ebb3a3a64 +Block 0011 [ 96]: 15c00518ee4adf4e +Block 0011 [ 97]: 1d8cf07d6edde475 +Block 0011 [ 98]: e954c8785b16eb02 +Block 0011 [ 99]: 18074db3522c065d +Block 0011 [100]: 9b1b13cad5b57149 +Block 0011 [101]: 67ac13cad09e6cf7 +Block 0011 [102]: 61c268324fc61790 +Block 0011 [103]: f917ea42c1d4aae8 +Block 0011 [104]: 4afd468a75a15d75 +Block 0011 [105]: d45f3f38a34cb34c +Block 0011 [106]: 042cd7de25fd793e +Block 0011 [107]: 72fd02ada9fd644c +Block 0011 [108]: 46bbf9e498748729 +Block 0011 [109]: c45d10a65df0705d +Block 0011 [110]: 7d1f38b2568fd31e +Block 0011 [111]: 4e5eeab86f171c9c +Block 0011 [112]: e4191d1be8010499 +Block 0011 [113]: b7e7d91669716bfd +Block 0011 [114]: a84d284ad0514913 +Block 0011 [115]: de2454e3bb127b5c +Block 0011 [116]: 5593b362d34e3236 +Block 0011 [117]: 3a97eddc885470b8 +Block 0011 [118]: d49f0989505a3e20 +Block 0011 [119]: a49c29255d2ff768 +Block 0011 [120]: 36229ee8d46ded5d +Block 0011 [121]: befd8c33cbd6a7cf +Block 0011 [122]: 54d6daeb3ae7f016 +Block 0011 [123]: 2dd97a531e383ad2 +Block 0011 [124]: 7c86ce3b32d61ef6 +Block 0011 [125]: c6febd2bdbc678b9 +Block 0011 [126]: 7e4d8df7e7698f3c +Block 0011 [127]: 876051736f645364 +Block 0012 [ 0]: 0c9c55c8c1620b64 +Block 0012 [ 1]: 60b4c465dea9fd66 +Block 0012 [ 2]: 80c4d91289e2cea1 +Block 0012 [ 3]: b3c19eb8f6a03464 +Block 0012 [ 4]: 3b5b05dc4d420ced +Block 0012 [ 5]: 89e95d39facd3e56 +Block 0012 [ 6]: d0fe580b20f54961 +Block 0012 [ 7]: 9dfd776ddc178519 +Block 0012 [ 8]: 43601291ac36ceb8 +Block 0012 [ 9]: fc448a430a414e43 +Block 0012 [ 10]: 6cfc44fc6bafb7d7 +Block 0012 [ 11]: cd74be8ef63bb036 +Block 0012 [ 12]: a92d857c51adb1cd +Block 0012 [ 13]: d784ad0dfe421f93 +Block 0012 [ 14]: d0d6f388f86e6275 +Block 0012 [ 15]: 2fccfe5542011b8f +Block 0012 [ 16]: 830f41df00cb8562 +Block 0012 [ 17]: 976279793f5baea7 +Block 0012 [ 18]: 67a85e07df4f61fb +Block 0012 [ 19]: eea4a6c342ab9d54 +Block 0012 [ 20]: 148054c90a308c58 +Block 0012 [ 21]: 922b40f7d90153b2 +Block 0012 [ 22]: 7c562e744deeae9e +Block 0012 [ 23]: a5d4d940c2efb1ca +Block 0012 [ 24]: 00bbe2405465d5f2 +Block 0012 [ 25]: 3768c36968e26558 +Block 0012 [ 26]: bb52349064085d3e +Block 0012 [ 27]: 90e8687c09aa2434 +Block 0012 [ 28]: f21c0ec2f9965d13 +Block 0012 [ 29]: f8e377812defeda9 +Block 0012 [ 30]: 3f90e96ef79c7b2d +Block 0012 [ 31]: 452f07cd905ed4b6 +Block 0012 [ 32]: 807f5b0ef43b1da5 +Block 0012 [ 33]: afc8923951d0d506 +Block 0012 [ 34]: 7a1f5bc2c3ef6c85 +Block 0012 [ 35]: 767992930b29dccb +Block 0012 [ 36]: ecf316593a3da03e +Block 0012 [ 37]: 49c984f3f324e369 +Block 0012 [ 38]: e8216f5411b321af +Block 0012 [ 39]: 55789c3b8e15c9b2 +Block 0012 [ 40]: 4aea9d0280102cac +Block 0012 [ 41]: f4b3419d7c1f3f32 +Block 0012 [ 42]: 390aee0ac1556c0f +Block 0012 [ 43]: 8cdf8035335a8cd3 +Block 0012 [ 44]: d7997f4c4defb85a +Block 0012 [ 45]: 3f6131d71978435b +Block 0012 [ 46]: 30e1589f1892c546 +Block 0012 [ 47]: 7ccc22fc004e262b +Block 0012 [ 48]: 3b9215cdd270937f +Block 0012 [ 49]: 738a9ba2b1780540 +Block 0012 [ 50]: 35661290e6c6e77a +Block 0012 [ 51]: c03a8402fa536118 +Block 0012 [ 52]: 06c68549dad7e79c +Block 0012 [ 53]: 4ea85ff21f91688a +Block 0012 [ 54]: 59b6c557566d8806 +Block 0012 [ 55]: 40e5d7c4370d7591 +Block 0012 [ 56]: ae1fffaab705275e +Block 0012 [ 57]: 311a8f16b107444d +Block 0012 [ 58]: e5218d5c0bcbd99a +Block 0012 [ 59]: d186ea05ba56676f +Block 0012 [ 60]: 834789ab82021d40 +Block 0012 [ 61]: 7df30c5e52929b05 +Block 0012 [ 62]: e8207858eb71f698 +Block 0012 [ 63]: 1d58bde3a5edc66b +Block 0012 [ 64]: ceb2be18efa776bb +Block 0012 [ 65]: e835d65827147cbe +Block 0012 [ 66]: 6a2f35bdd998fd14 +Block 0012 [ 67]: 9d40dd80a0faeae7 +Block 0012 [ 68]: e538055c4776c3ac +Block 0012 [ 69]: 5d1742a4d04bc17f +Block 0012 [ 70]: 163deb8613e852b3 +Block 0012 [ 71]: 15d2f3f0737d3bc7 +Block 0012 [ 72]: 2f5a3cdc39a7b986 +Block 0012 [ 73]: 2326e3dab7239771 +Block 0012 [ 74]: e72036e822906a5c +Block 0012 [ 75]: c5a549423bee0d90 +Block 0012 [ 76]: 902eb12ae0f8d17f +Block 0012 [ 77]: 25bb071a5a78682c +Block 0012 [ 78]: 454ada6ff7c65c8d +Block 0012 [ 79]: 8492e6db1f105910 +Block 0012 [ 80]: 0277193e9f99c46f +Block 0012 [ 81]: fa22603432d42324 +Block 0012 [ 82]: 8a83b69bc46f979c +Block 0012 [ 83]: a520140a955e36e4 +Block 0012 [ 84]: b1433fe02f4a349e +Block 0012 [ 85]: aa1113f8aae73b93 +Block 0012 [ 86]: d488ad30309c8498 +Block 0012 [ 87]: 0aec428b70ef549a +Block 0012 [ 88]: 93170079c6ab05e5 +Block 0012 [ 89]: e8f49d763907ca5a +Block 0012 [ 90]: 457e13af2923e613 +Block 0012 [ 91]: 6fa78b78b42065ef +Block 0012 [ 92]: 9338260a24b8d082 +Block 0012 [ 93]: a0b96f8e1511c315 +Block 0012 [ 94]: a513b98c6efdf8fa +Block 0012 [ 95]: 1b85f765892bcbc3 +Block 0012 [ 96]: ad139621f5e39c91 +Block 0012 [ 97]: 2d402ba231db9ef5 +Block 0012 [ 98]: b4deb002cc235b5e +Block 0012 [ 99]: 9f0d0a1a3ed3483a +Block 0012 [100]: 21d90ab3bd5a3701 +Block 0012 [101]: 586ab5d2732fb68b +Block 0012 [102]: 01af6c32fb19d96d +Block 0012 [103]: fbd622c0016b31db +Block 0012 [104]: 3d4b5bc64a1d3339 +Block 0012 [105]: f1e8dfb0e0e91615 +Block 0012 [106]: 0f8843aadd79799d +Block 0012 [107]: a79a41fa433b098e +Block 0012 [108]: c5fedee1f6b6efcb +Block 0012 [109]: ccf42653de5fded8 +Block 0012 [110]: bdeda18634357c04 +Block 0012 [111]: 9528f3f925aa6429 +Block 0012 [112]: 82d67bfd27bd3925 +Block 0012 [113]: 3a3abffe6da6bfd1 +Block 0012 [114]: c07698673bd83a29 +Block 0012 [115]: bb0b238da2a7505c +Block 0012 [116]: 7e0526fc80fb6f31 +Block 0012 [117]: f495215c56b1848f +Block 0012 [118]: 3bcf9ea980c04c60 +Block 0012 [119]: 4450f7ac179026f5 +Block 0012 [120]: 0fa713d584b0a2fe +Block 0012 [121]: a89d1b4ce7960428 +Block 0012 [122]: dd7afc7858234e35 +Block 0012 [123]: 8ff4307248170757 +Block 0012 [124]: 4eb19cae24707b6f +Block 0012 [125]: 44c60d71ffa74cb8 +Block 0012 [126]: 0c9c8a53e0cd54da +Block 0012 [127]: a734adb6b6a5601f +Block 0013 [ 0]: 8275ecaccc771ae4 +Block 0013 [ 1]: 712b01e69497cdf0 +Block 0013 [ 2]: 9301d483ae27c7fb +Block 0013 [ 3]: fab6f5ae8d80d6e2 +Block 0013 [ 4]: 1235754d7932aa8b +Block 0013 [ 5]: a65db531a30872df +Block 0013 [ 6]: 19241353a5c8f96b +Block 0013 [ 7]: 1c7b9a24517300ed +Block 0013 [ 8]: 6abeebaa06ff012c +Block 0013 [ 9]: f7cbcf3ee950e0f2 +Block 0013 [ 10]: 3192592d817f7b66 +Block 0013 [ 11]: 1753f87f59ea11c4 +Block 0013 [ 12]: 1fee77a9b4337ed8 +Block 0013 [ 13]: c57c6ca745154184 +Block 0013 [ 14]: f820b945f1e9848a +Block 0013 [ 15]: 2ce9b26044524919 +Block 0013 [ 16]: a40929146cea1a84 +Block 0013 [ 17]: e2687b7dea13e4dd +Block 0013 [ 18]: e7e5f533dc5348aa +Block 0013 [ 19]: b58852ce4757e67c +Block 0013 [ 20]: fc907be6692563c0 +Block 0013 [ 21]: 3900c482ae9f91a5 +Block 0013 [ 22]: 5e295867887dcb10 +Block 0013 [ 23]: 654906b021548d4c +Block 0013 [ 24]: 9f4d7100ad4a0312 +Block 0013 [ 25]: b429941b74aca665 +Block 0013 [ 26]: 24302c7eef140f1b +Block 0013 [ 27]: b2bb1998988469b9 +Block 0013 [ 28]: aef2456f2a23f536 +Block 0013 [ 29]: 9fe997b9e5f076df +Block 0013 [ 30]: 964e88a1b7455124 +Block 0013 [ 31]: 48cbd6d14f3570cd +Block 0013 [ 32]: 01393d0b6b8dfed3 +Block 0013 [ 33]: 1ede0fc24adb8a29 +Block 0013 [ 34]: b8698c7cbd4fef3b +Block 0013 [ 35]: d0cd560c48061859 +Block 0013 [ 36]: 38eabed90236c69c +Block 0013 [ 37]: 867fb49f0e401a6b +Block 0013 [ 38]: ac87846cb0a5255e +Block 0013 [ 39]: 38c89d68e6b27e7f +Block 0013 [ 40]: 15ddcc3b0d8f4e59 +Block 0013 [ 41]: 7e5cd39650a9b8fd +Block 0013 [ 42]: 037597aed87bc45f +Block 0013 [ 43]: 8d7729fcbfeeb3a8 +Block 0013 [ 44]: caa354f01d65dc58 +Block 0013 [ 45]: c8957f052aa6a2e8 +Block 0013 [ 46]: 41c0210c578d283f +Block 0013 [ 47]: 83241ee0a1d76e67 +Block 0013 [ 48]: dbd133c3b5071d9b +Block 0013 [ 49]: 3a82af1f045c7285 +Block 0013 [ 50]: cfb78c8781164562 +Block 0013 [ 51]: a2f06254dc93d0c1 +Block 0013 [ 52]: e9cc73236c17b29f +Block 0013 [ 53]: 068bf08bba7082b0 +Block 0013 [ 54]: 5602462888861686 +Block 0013 [ 55]: 9be6367d1bc248e8 +Block 0013 [ 56]: 224ec458cc53339f +Block 0013 [ 57]: cdd7f95f932daeb7 +Block 0013 [ 58]: 5b128a412967f6ae +Block 0013 [ 59]: f9b3ed0a3cf99ce3 +Block 0013 [ 60]: bbd741a9ecbebf82 +Block 0013 [ 61]: 79c4e0435f9b7bb1 +Block 0013 [ 62]: 2b692de61c9e122a +Block 0013 [ 63]: cf7bdf8929ff7d59 +Block 0013 [ 64]: 422af9f6beedd316 +Block 0013 [ 65]: 83fdd9968655f57e +Block 0013 [ 66]: 2984ca92c54934e6 +Block 0013 [ 67]: aa0a628463151601 +Block 0013 [ 68]: c9adc7e102d4e926 +Block 0013 [ 69]: f01036ed1cb180e2 +Block 0013 [ 70]: 49e6b538ffd429b0 +Block 0013 [ 71]: b034ead8223c890f +Block 0013 [ 72]: 7ff44edfd6d170e9 +Block 0013 [ 73]: 7a41e3fcb64f759a +Block 0013 [ 74]: 27c8457a4e19fc28 +Block 0013 [ 75]: 1ae95273cda41b9b +Block 0013 [ 76]: fd793d32c7886449 +Block 0013 [ 77]: 0dbd25cc3a9ba9bf +Block 0013 [ 78]: 7bc222a6d2cc88c2 +Block 0013 [ 79]: fcb5b217e43bf8a2 +Block 0013 [ 80]: 22185604488f3d51 +Block 0013 [ 81]: ffd19371c12ee9df +Block 0013 [ 82]: adb9635e61703b6a +Block 0013 [ 83]: aad4fc87c38c44dc +Block 0013 [ 84]: 8a5de034bf8bcb91 +Block 0013 [ 85]: 4873cf7a56632be6 +Block 0013 [ 86]: 640ad84374233383 +Block 0013 [ 87]: 4a78c06e4d724966 +Block 0013 [ 88]: f9af0f5f824ce1ac +Block 0013 [ 89]: 5cd8b424e7987fb2 +Block 0013 [ 90]: 63a749f3340a966f +Block 0013 [ 91]: 3be590e829a06c9d +Block 0013 [ 92]: 673669b53e42dfe0 +Block 0013 [ 93]: 4e13df1d4e996c1d +Block 0013 [ 94]: a75e97ca20914ac7 +Block 0013 [ 95]: 06a3ce6a1baa5937 +Block 0013 [ 96]: 8aef6dcf730b9d73 +Block 0013 [ 97]: 24c7e0759a8d4c95 +Block 0013 [ 98]: 9caf4fd316f89fc1 +Block 0013 [ 99]: 0a3319bc486637f3 +Block 0013 [100]: a0fea48059b4450e +Block 0013 [101]: c77f3111142a13c2 +Block 0013 [102]: f0e6031c0805f946 +Block 0013 [103]: 132dc730e7f7a4ac +Block 0013 [104]: a629264d94905d3a +Block 0013 [105]: fadc414873129baa +Block 0013 [106]: 86517cdce724b24d +Block 0013 [107]: 16a1b02cd6e750be +Block 0013 [108]: 04289a27673f1549 +Block 0013 [109]: b8701a1caf37ac45 +Block 0013 [110]: efc66529c438bcce +Block 0013 [111]: a3c68f26e26dde3e +Block 0013 [112]: 56f23362b31847df +Block 0013 [113]: 9d7e4e342eaf8a46 +Block 0013 [114]: a13cff8866f5ef49 +Block 0013 [115]: bf9964d57fe229ee +Block 0013 [116]: 3740b695ae269e6e +Block 0013 [117]: ba792fe8b9716c43 +Block 0013 [118]: 30f784e82dd0ab70 +Block 0013 [119]: e4f57cc08fa17da7 +Block 0013 [120]: 3d71b796968fa33f +Block 0013 [121]: 2dca46842308f3ec +Block 0013 [122]: 47db0499dfa0d745 +Block 0013 [123]: 195e3c1253ad056e +Block 0013 [124]: fbb2fe6b8b8d6721 +Block 0013 [125]: 971cb37328f7faec +Block 0013 [126]: c8bd887da9b96df4 +Block 0013 [127]: bc7f954a8dd53168 +Block 0014 [ 0]: 6b65de3737ca07f1 +Block 0014 [ 1]: a38cfa10cc2fc974 +Block 0014 [ 2]: e5198f5c31a8e3bf +Block 0014 [ 3]: 698e33db1e1ae03f +Block 0014 [ 4]: 14aea1e3f7b1bd88 +Block 0014 [ 5]: 23c7733a20c49535 +Block 0014 [ 6]: 708851504763e011 +Block 0014 [ 7]: 76d0191e1a308c7d +Block 0014 [ 8]: f221c44adbd9b02b +Block 0014 [ 9]: 45aa8795ece63642 +Block 0014 [ 10]: fd36d6c27b71b0bd +Block 0014 [ 11]: 0466e55299276cb5 +Block 0014 [ 12]: 725c41544c13d899 +Block 0014 [ 13]: f39ff57f5cd5f7f6 +Block 0014 [ 14]: f75b827542bb8030 +Block 0014 [ 15]: 8da5061bcb6a1352 +Block 0014 [ 16]: a108e3b625bdbbcf +Block 0014 [ 17]: eac50e88be6d72a8 +Block 0014 [ 18]: 52d7194dd03336c7 +Block 0014 [ 19]: 56025dc3f3ad86d9 +Block 0014 [ 20]: d7eb51a996fbcba4 +Block 0014 [ 21]: 3d590b82bab819bb +Block 0014 [ 22]: 1b6c96df6bf886f7 +Block 0014 [ 23]: ac25d4e6becf60d8 +Block 0014 [ 24]: 4af59e5a68c7a59e +Block 0014 [ 25]: fb1b4dfa899c0105 +Block 0014 [ 26]: 633e645801856648 +Block 0014 [ 27]: fa8ddeec6a823001 +Block 0014 [ 28]: a93a5e82198f77dd +Block 0014 [ 29]: 7ae453b0348fc6b2 +Block 0014 [ 30]: b6ebc8deda885562 +Block 0014 [ 31]: 72b3e8c629996c84 +Block 0014 [ 32]: 1317aeba03e2ad29 +Block 0014 [ 33]: 5234e64535c737c1 +Block 0014 [ 34]: 3b1fd79ba314ab07 +Block 0014 [ 35]: 9590c7b6fb1ea91b +Block 0014 [ 36]: 213f6ce02e02ad0d +Block 0014 [ 37]: 335b424cc634d4df +Block 0014 [ 38]: 34c1735174d44758 +Block 0014 [ 39]: ce9dfe46f52eebea +Block 0014 [ 40]: 6d6258ac61b821ab +Block 0014 [ 41]: 622d8e13ca29ed5c +Block 0014 [ 42]: b14226e2f8fad082 +Block 0014 [ 43]: a93cb7beed7dde9e +Block 0014 [ 44]: a65734f842749fc1 +Block 0014 [ 45]: ab77788d3cf8f1ce +Block 0014 [ 46]: f52b8d0ebafeda0f +Block 0014 [ 47]: 1127e07be84bfd23 +Block 0014 [ 48]: 18686c88d0eb20ee +Block 0014 [ 49]: 40dc4902a0305d3d +Block 0014 [ 50]: 632b9eec4405efec +Block 0014 [ 51]: 4702de3a2aae239c +Block 0014 [ 52]: e48306bb379a9526 +Block 0014 [ 53]: a6ffe75f5fb984fb +Block 0014 [ 54]: 729613e8c57feda1 +Block 0014 [ 55]: 12db6c406f5109a1 +Block 0014 [ 56]: 82802a8a7d811b58 +Block 0014 [ 57]: 3d4608d23971ec28 +Block 0014 [ 58]: ddebf41cb589e3d0 +Block 0014 [ 59]: a42eeb040b316ab4 +Block 0014 [ 60]: 3d4c8ddcdc91e2aa +Block 0014 [ 61]: 5dfc6656546c3b7b +Block 0014 [ 62]: 9d3044336e86a500 +Block 0014 [ 63]: 28b157087b452bd4 +Block 0014 [ 64]: d1070174c8a7a390 +Block 0014 [ 65]: 2cdffe736e143896 +Block 0014 [ 66]: e6ce15c80ba25385 +Block 0014 [ 67]: 417c84a7716d6e88 +Block 0014 [ 68]: f23a783da3ee4d2d +Block 0014 [ 69]: f537e7ce5c1c0c39 +Block 0014 [ 70]: f46211b54393895e +Block 0014 [ 71]: 8c1ff4607c78b5ff +Block 0014 [ 72]: 7a21a28042361b41 +Block 0014 [ 73]: d9d58f1b9ecc30de +Block 0014 [ 74]: 9a14fdb7b925ca4e +Block 0014 [ 75]: d6f7e86f1f500aa7 +Block 0014 [ 76]: c67fcb17f8ea4dd5 +Block 0014 [ 77]: 5f8d1c92691b14f1 +Block 0014 [ 78]: 104380e8c6d970cc +Block 0014 [ 79]: 7e353764f8c4619e +Block 0014 [ 80]: 030a672223596dcf +Block 0014 [ 81]: 6a78a93e7ebb6a14 +Block 0014 [ 82]: ca4c3cd24c3241d4 +Block 0014 [ 83]: ffb2874333097bf1 +Block 0014 [ 84]: 05316d934e1b5aab +Block 0014 [ 85]: 6ea2923030b2957b +Block 0014 [ 86]: 58be8db0cfb34d06 +Block 0014 [ 87]: 817cd34fcb68b398 +Block 0014 [ 88]: 6d25bb5ce9050af7 +Block 0014 [ 89]: 4f9fafe3d7836fc6 +Block 0014 [ 90]: 6b7a93aa1cbda794 +Block 0014 [ 91]: 12ae5bba84ff7fd9 +Block 0014 [ 92]: 1218cc6230a5eb3b +Block 0014 [ 93]: 4bbe6b14f7016cef +Block 0014 [ 94]: 712c225c222af1ed +Block 0014 [ 95]: eb274453bb34e6b7 +Block 0014 [ 96]: 5281165a73e35393 +Block 0014 [ 97]: a94e6d7fa4fa9d4b +Block 0014 [ 98]: cdac43d087fbf972 +Block 0014 [ 99]: c355f65033fff80c +Block 0014 [100]: 468d2835f99af1df +Block 0014 [101]: 97e10c620d78e48e +Block 0014 [102]: 4f7b455aa232f45a +Block 0014 [103]: 5642a41b8ba9ee5b +Block 0014 [104]: faab295a130f9450 +Block 0014 [105]: 354f050566475e75 +Block 0014 [106]: 1c147cc5765a61a5 +Block 0014 [107]: 546efd3bc03ae530 +Block 0014 [108]: 60d4770b9f8a3f15 +Block 0014 [109]: 4255516387bcc8cf +Block 0014 [110]: a2790cee31f12d9e +Block 0014 [111]: a61eb9ad582e94f2 +Block 0014 [112]: 2eef0642ebdb8b8e +Block 0014 [113]: 0dc8d04ae9e3a9c6 +Block 0014 [114]: b7d4a52e7df1cb7a +Block 0014 [115]: cb0cd12cbd577028 +Block 0014 [116]: fe77a376f1b80f27 +Block 0014 [117]: 55278752a92407f0 +Block 0014 [118]: 9d0c1acd148e5559 +Block 0014 [119]: 340d1b249a9f55e5 +Block 0014 [120]: e6b7fe56fb8beb34 +Block 0014 [121]: bfd595920d4c4730 +Block 0014 [122]: 53b698d6f41e0cdd +Block 0014 [123]: 25fd2b8c6fe7f60a +Block 0014 [124]: fcea31c1417d4d81 +Block 0014 [125]: 24d019132ba89b33 +Block 0014 [126]: 2c948d81f3196e46 +Block 0014 [127]: 5c9666b2e5bc5342 +Block 0015 [ 0]: b7a4c2b9a0491aa5 +Block 0015 [ 1]: d574fd14cfdceaa2 +Block 0015 [ 2]: 161e82ce52847ee9 +Block 0015 [ 3]: 87235a1ff06b32e3 +Block 0015 [ 4]: 25a15747451e13fb +Block 0015 [ 5]: 6fa0f15caf9a7b92 +Block 0015 [ 6]: bca7275912ca1bbe +Block 0015 [ 7]: 007874cae255dc7a +Block 0015 [ 8]: 1c2fc30cbbe3d6b0 +Block 0015 [ 9]: 037bf8fc3ccc60cf +Block 0015 [ 10]: c632e67a7898f97f +Block 0015 [ 11]: 1dbb324de0847142 +Block 0015 [ 12]: a22b1b5771e2fbc8 +Block 0015 [ 13]: 951e518ea73e1b70 +Block 0015 [ 14]: f65e911962b66a90 +Block 0015 [ 15]: 50ea5c8c71cc78c9 +Block 0015 [ 16]: 070b252030059571 +Block 0015 [ 17]: da2472f16b32c9d1 +Block 0015 [ 18]: ac991222ab1c212a +Block 0015 [ 19]: d201f392decf93bf +Block 0015 [ 20]: e4110edc7738c123 +Block 0015 [ 21]: 36c2faaffb2119a0 +Block 0015 [ 22]: d1243bf8984c942a +Block 0015 [ 23]: 380d70ebee5c486b +Block 0015 [ 24]: 4095da46a98e2e18 +Block 0015 [ 25]: f2d74db9726fcf0a +Block 0015 [ 26]: 48a1e0775c37687c +Block 0015 [ 27]: cb8f3d9e25f552f1 +Block 0015 [ 28]: 0595754dcb15d8c2 +Block 0015 [ 29]: c2bfae8c0074c656 +Block 0015 [ 30]: ce3a27a49064fd5e +Block 0015 [ 31]: bd9badeb87e71305 +Block 0015 [ 32]: 1332e5808a07898f +Block 0015 [ 33]: 447fc211923c7aae +Block 0015 [ 34]: 1b59d811f5a4174a +Block 0015 [ 35]: 9d77b466014e9c29 +Block 0015 [ 36]: abeeb15d32d4f5b0 +Block 0015 [ 37]: ed14c5bef6f13c5c +Block 0015 [ 38]: aebe3967f70094b2 +Block 0015 [ 39]: 5f9ed7861a69e3bd +Block 0015 [ 40]: b322fb95fae25c6b +Block 0015 [ 41]: 0590b396ab8b5077 +Block 0015 [ 42]: b9321d42b1b1a985 +Block 0015 [ 43]: f35f227bd94dd2f4 +Block 0015 [ 44]: caec578bdf1f9b9d +Block 0015 [ 45]: 25e0ba5c01a2c4bc +Block 0015 [ 46]: fc07695214589266 +Block 0015 [ 47]: 54503ba957c594ea +Block 0015 [ 48]: eaabac32c678ccad +Block 0015 [ 49]: 21175b4197624e82 +Block 0015 [ 50]: 0cebeb3aa5f3bbcb +Block 0015 [ 51]: c008177cfbfb0d60 +Block 0015 [ 52]: 2f801d1502ff2f12 +Block 0015 [ 53]: 7fcd684c565db3f6 +Block 0015 [ 54]: 62ff2ec38af1cafd +Block 0015 [ 55]: 914667196dd9d450 +Block 0015 [ 56]: 972932ff5be835e9 +Block 0015 [ 57]: 23a8368787a7335c +Block 0015 [ 58]: b2cae148e1b122c0 +Block 0015 [ 59]: 199b383227c05f08 +Block 0015 [ 60]: 1cb16ee897019269 +Block 0015 [ 61]: 510e0d439341c00d +Block 0015 [ 62]: 35cf3ac76d96edb3 +Block 0015 [ 63]: d940abb75cfa43cd +Block 0015 [ 64]: 3c4b3944ab11c757 +Block 0015 [ 65]: 4d9ccb418c25ad94 +Block 0015 [ 66]: 91c86a252e663075 +Block 0015 [ 67]: cb49238e4e128b91 +Block 0015 [ 68]: 6f11423978bed4e7 +Block 0015 [ 69]: 753573f75865542c +Block 0015 [ 70]: 650c04ea734b4449 +Block 0015 [ 71]: 880ebf2c16710b74 +Block 0015 [ 72]: 05fc3180f4138190 +Block 0015 [ 73]: ed721684f7dceb37 +Block 0015 [ 74]: e31f19710f7b0fe4 +Block 0015 [ 75]: 0463bb78656fae47 +Block 0015 [ 76]: 074f9a2583ca00e9 +Block 0015 [ 77]: 2f13e8db7be5969a +Block 0015 [ 78]: 9b5b5730a2f128b3 +Block 0015 [ 79]: f7cd36dc5c92e817 +Block 0015 [ 80]: f820cd395a7a86ae +Block 0015 [ 81]: 123f8d7cf1618e07 +Block 0015 [ 82]: 152f4e50e44750c7 +Block 0015 [ 83]: ad4c70516d41bab9 +Block 0015 [ 84]: 8bcb61e869a0807e +Block 0015 [ 85]: 9755cf2f6719e65f +Block 0015 [ 86]: c2c6ba4f970cb4ef +Block 0015 [ 87]: 457911ad86c1abc6 +Block 0015 [ 88]: 578a53b51ce1efcd +Block 0015 [ 89]: f6320caff8a0504b +Block 0015 [ 90]: 83ca5981239afa37 +Block 0015 [ 91]: 70c661c67ab92780 +Block 0015 [ 92]: 10bcfbdac8f01e97 +Block 0015 [ 93]: 94bdbd2609891909 +Block 0015 [ 94]: 1bb65f7b193d8c2f +Block 0015 [ 95]: f31366a301363c4f +Block 0015 [ 96]: 99fec0db195ee485 +Block 0015 [ 97]: ed4bc8f8d3ba4536 +Block 0015 [ 98]: 0a70086003a26263 +Block 0015 [ 99]: 345032952fe4effc +Block 0015 [100]: 2bb2e1a44c1f1326 +Block 0015 [101]: 21a33eddbefcbc66 +Block 0015 [102]: bb19b421edb329fa +Block 0015 [103]: 543c1de6fe03d61f +Block 0015 [104]: 8aed84a2fecd94d6 +Block 0015 [105]: b35b89557851b663 +Block 0015 [106]: f6a7be0e250ef42f +Block 0015 [107]: 3a290088a027faf7 +Block 0015 [108]: bce61f09e1310a04 +Block 0015 [109]: 0333886001acdb36 +Block 0015 [110]: 9d74d89762647905 +Block 0015 [111]: f49619828e0119bf +Block 0015 [112]: b7e584f437a3b086 +Block 0015 [113]: 252e2d8ecd0bd16d +Block 0015 [114]: 53ee0c9765660436 +Block 0015 [115]: 91f68f6a9a1b0bdb +Block 0015 [116]: c632c4e10c36b1b6 +Block 0015 [117]: 33145dd6a602a6b0 +Block 0015 [118]: 2d587480bdb222a3 +Block 0015 [119]: f0fd639a4880f0c3 +Block 0015 [120]: 211d17b5b475ef02 +Block 0015 [121]: f1fcfd14a52db0f6 +Block 0015 [122]: 064389ed71e2ef25 +Block 0015 [123]: c2acdfbb258af29a +Block 0015 [124]: dc814aa34930fc48 +Block 0015 [125]: 30ba919b66d5ddf3 +Block 0015 [126]: 1b3834a139ab499a +Block 0015 [127]: d5e674d6693bcd45 +Block 0016 [ 0]: 8f53985b3a68410e +Block 0016 [ 1]: f55650961898842f +Block 0016 [ 2]: 037efaa1cd23a098 +Block 0016 [ 3]: 3a31cf1b76c2758c +Block 0016 [ 4]: f4199b180eac0136 +Block 0016 [ 5]: 300b003da6fcbaf8 +Block 0016 [ 6]: f609345ed3053222 +Block 0016 [ 7]: 62b9a7bf80c4dd81 +Block 0016 [ 8]: 04f7fb1c97f94a19 +Block 0016 [ 9]: 20b4c7dcec025e7c +Block 0016 [ 10]: 86823ef3e716e64a +Block 0016 [ 11]: cc7b74f62ba0184b +Block 0016 [ 12]: b9346d50cf2e7038 +Block 0016 [ 13]: 49d8cc875f611ddf +Block 0016 [ 14]: 47e3d6bca96310b2 +Block 0016 [ 15]: 2b648844a3fc609a +Block 0016 [ 16]: d4324fd7f2bc2e0b +Block 0016 [ 17]: 9362f80e1d3fdc2b +Block 0016 [ 18]: 49225d97af47012d +Block 0016 [ 19]: 8035ab307fb284dd +Block 0016 [ 20]: 177fe4ed6ed816b5 +Block 0016 [ 21]: 91c26e2152032480 +Block 0016 [ 22]: 30604656e18cc814 +Block 0016 [ 23]: 70437cfb1f32fb43 +Block 0016 [ 24]: d1036df63cc6eee4 +Block 0016 [ 25]: 5dee0b34fa2c7707 +Block 0016 [ 26]: da74b65827b46a81 +Block 0016 [ 27]: 84e911553294f034 +Block 0016 [ 28]: d279a6a1e4904a83 +Block 0016 [ 29]: 8688e6979c347b06 +Block 0016 [ 30]: 740f20573f3de341 +Block 0016 [ 31]: d81c19459351f118 +Block 0016 [ 32]: 8f3262e1b89a27fd +Block 0016 [ 33]: efbef386858e969a +Block 0016 [ 34]: 48d49036dd2a63cc +Block 0016 [ 35]: 51a53f1cd99c239d +Block 0016 [ 36]: 69f02d56b69b080c +Block 0016 [ 37]: b58cdc35836d7e6a +Block 0016 [ 38]: b64765b6745af0db +Block 0016 [ 39]: d0cffdc5cd0ddd71 +Block 0016 [ 40]: d026cf29b9eadaec +Block 0016 [ 41]: 190259edbc0e09fb +Block 0016 [ 42]: fea21cb0734e621f +Block 0016 [ 43]: 3b8c48529162eca2 +Block 0016 [ 44]: 53ec43dd984b9ad2 +Block 0016 [ 45]: 7274f4839297fcc2 +Block 0016 [ 46]: 14d7275914f4a84c +Block 0016 [ 47]: cdff249b4bae7c12 +Block 0016 [ 48]: b32a9a4b48d6f22f +Block 0016 [ 49]: 0320bd7e7f48b4f4 +Block 0016 [ 50]: 42be9ca3da80c6fa +Block 0016 [ 51]: 358bd7e3eb8fada9 +Block 0016 [ 52]: dfe1dbbfca140598 +Block 0016 [ 53]: 1b4db106a75053c1 +Block 0016 [ 54]: 0b91f05e6625f711 +Block 0016 [ 55]: 1001ad2ee30a9d82 +Block 0016 [ 56]: 740b036b5748bea0 +Block 0016 [ 57]: 3168f06e761fb765 +Block 0016 [ 58]: 71d10306a2fe7973 +Block 0016 [ 59]: 1faa34f320f87936 +Block 0016 [ 60]: d91db435304a17a5 +Block 0016 [ 61]: 30430ec5d6f3ad2a +Block 0016 [ 62]: cb197690414e41b6 +Block 0016 [ 63]: f6779e44ae25c2d7 +Block 0016 [ 64]: 6b94597b50f594af +Block 0016 [ 65]: 075a280984aed80a +Block 0016 [ 66]: d54a50a999345ae3 +Block 0016 [ 67]: 2caab9d8cfd6d3e2 +Block 0016 [ 68]: 7851c907c69feb69 +Block 0016 [ 69]: 5ca2e8965cd0c96c +Block 0016 [ 70]: 28ab1227b13da504 +Block 0016 [ 71]: 686f14d57531b14b +Block 0016 [ 72]: 3b5a11c818a1ec14 +Block 0016 [ 73]: 5a4f6b4be61809aa +Block 0016 [ 74]: ce900ccf21eededc +Block 0016 [ 75]: d0d2187be91e67a5 +Block 0016 [ 76]: a92d1b14da7b0101 +Block 0016 [ 77]: 71d2ac9a9bfc3eab +Block 0016 [ 78]: 3c7857f37e5fbd14 +Block 0016 [ 79]: 1c64281a444f792f +Block 0016 [ 80]: b999c6b9f7738096 +Block 0016 [ 81]: db1e1182630f00f6 +Block 0016 [ 82]: 0807b0bd2f37fa78 +Block 0016 [ 83]: e9f307ad3c4e8b74 +Block 0016 [ 84]: 79c841933e70c1da +Block 0016 [ 85]: cb663333c394a92a +Block 0016 [ 86]: 13c6ab3371e87b02 +Block 0016 [ 87]: 047fa349cd71f72e +Block 0016 [ 88]: 6fd668ad1c07ee9d +Block 0016 [ 89]: 890e7546afcd50f3 +Block 0016 [ 90]: 8fd5e4eb7d62ece7 +Block 0016 [ 91]: fe3efd3fba7302ed +Block 0016 [ 92]: d0dd2f8d2a385e85 +Block 0016 [ 93]: 5b6271669fae3e0a +Block 0016 [ 94]: d83477ae521cb0cd +Block 0016 [ 95]: 032ea7a424669708 +Block 0016 [ 96]: a74455ce63af6f96 +Block 0016 [ 97]: f622454de29f608b +Block 0016 [ 98]: 237f28a1d7382575 +Block 0016 [ 99]: f38e224b5ab4c811 +Block 0016 [100]: 2e28cbd870f74ad5 +Block 0016 [101]: 9b02a754a53eea78 +Block 0016 [102]: 64ef1fa6609e77de +Block 0016 [103]: a9a49c283d2b79eb +Block 0016 [104]: 628ff70e0dcb9620 +Block 0016 [105]: e5eab5e455302769 +Block 0016 [106]: be2ead710a9b85f7 +Block 0016 [107]: 4139690693c5d1de +Block 0016 [108]: cb79d6351ff25123 +Block 0016 [109]: 766767dd95ef924a +Block 0016 [110]: 7a57e4a083f964f3 +Block 0016 [111]: f5a7eff23abff0e6 +Block 0016 [112]: fa62e8e8b38623f9 +Block 0016 [113]: aa3edb47ecdc0377 +Block 0016 [114]: cfcf56fd674a3d2d +Block 0016 [115]: 3cdd8c5d983a1bb4 +Block 0016 [116]: fb6f6bceb5db5b26 +Block 0016 [117]: 89fd727b53ec9e75 +Block 0016 [118]: 97600bafacfb83ef +Block 0016 [119]: 8b094ea63455850c +Block 0016 [120]: 4ba706a569460f60 +Block 0016 [121]: f3f4781fabbc676f +Block 0016 [122]: 5c5e73cc56d1ce93 +Block 0016 [123]: 2ea6a7856cc27120 +Block 0016 [124]: 9cb33d05ffd27f28 +Block 0016 [125]: 79796b487462562e +Block 0016 [126]: 30c5bd9655219145 +Block 0016 [127]: b994aa85d73dd810 +Block 0017 [ 0]: 25af99c7dd2c4372 +Block 0017 [ 1]: 9737394118f299bb +Block 0017 [ 2]: d2de9ee44efcd374 +Block 0017 [ 3]: fc03033c2fdc08f0 +Block 0017 [ 4]: 3f880894b78aed28 +Block 0017 [ 5]: 6c8a9e4ef84e12eb +Block 0017 [ 6]: bbfda7a204c749ae +Block 0017 [ 7]: 5bd6718dc48c323b +Block 0017 [ 8]: b90c762a037aeae9 +Block 0017 [ 9]: 649d8a54f608176c +Block 0017 [ 10]: 786afe00b006a485 +Block 0017 [ 11]: e37a432bc2cc9822 +Block 0017 [ 12]: de19379656716c29 +Block 0017 [ 13]: fcf6fbc0df6c2616 +Block 0017 [ 14]: a5707ebe5c43ce27 +Block 0017 [ 15]: 0022eb27e8a28351 +Block 0017 [ 16]: 8eba1f29bb9649e9 +Block 0017 [ 17]: a14ede529e77c948 +Block 0017 [ 18]: 679d0fd464f5a7c1 +Block 0017 [ 19]: 1d5e242fe07d4499 +Block 0017 [ 20]: e5d9ecb94d96426f +Block 0017 [ 21]: b55c342da4c92a45 +Block 0017 [ 22]: 46f6ffbe914fa536 +Block 0017 [ 23]: 8831b50a46c6b9fa +Block 0017 [ 24]: 98d34ad0e739e4d9 +Block 0017 [ 25]: 34c995923bd2c3c1 +Block 0017 [ 26]: 42cf969aab5942c1 +Block 0017 [ 27]: c9b437a842d875b3 +Block 0017 [ 28]: 5925675213537e33 +Block 0017 [ 29]: d46c58bc487a34f6 +Block 0017 [ 30]: 806a4619dbfc03dd +Block 0017 [ 31]: b45295959812bcec +Block 0017 [ 32]: aebc1f1371e2fc47 +Block 0017 [ 33]: f09f1a1c3121e7cd +Block 0017 [ 34]: 4d1d9a11dcae8b67 +Block 0017 [ 35]: f38a9759bc5d17c6 +Block 0017 [ 36]: 2e20740f5524dae3 +Block 0017 [ 37]: 40f1d3e4f71041db +Block 0017 [ 38]: 844a27fd35e7da66 +Block 0017 [ 39]: b4b854cae05e9e9a +Block 0017 [ 40]: 5e6964c38ac50871 +Block 0017 [ 41]: 3c18498deb7d982e +Block 0017 [ 42]: 647c7a8c145356a1 +Block 0017 [ 43]: d737b5773a76b636 +Block 0017 [ 44]: 48037c19a592c44d +Block 0017 [ 45]: acc24bb4b271d775 +Block 0017 [ 46]: 393897168ab1a9e2 +Block 0017 [ 47]: 06f964d7bea429f1 +Block 0017 [ 48]: bf04c3f8df53259d +Block 0017 [ 49]: 3149fc5f1f43994e +Block 0017 [ 50]: 063319bf41479907 +Block 0017 [ 51]: 1854281df4864ba9 +Block 0017 [ 52]: 92edcdb4c263a03d +Block 0017 [ 53]: d780b3bd4caae765 +Block 0017 [ 54]: 02b5d0ebf0cda39d +Block 0017 [ 55]: a0f5a5211ca3bd07 +Block 0017 [ 56]: 5636022ed78cfd97 +Block 0017 [ 57]: 1cce86221184e63a +Block 0017 [ 58]: 6a012fa4ac7d9313 +Block 0017 [ 59]: 93f395e140a8fbe4 +Block 0017 [ 60]: 985ecc071322bcf3 +Block 0017 [ 61]: 1ea42f6dec2fc89e +Block 0017 [ 62]: 3ec7da55e6f3650b +Block 0017 [ 63]: 1617261e0b1e885f +Block 0017 [ 64]: 27ce65eca8e2c7ec +Block 0017 [ 65]: 5e989683b826cca5 +Block 0017 [ 66]: 1095accf790c67e6 +Block 0017 [ 67]: 092884b7e068124e +Block 0017 [ 68]: 3a9e2a925ea19187 +Block 0017 [ 69]: c6962ab8187140c5 +Block 0017 [ 70]: 9edd8afc314c0744 +Block 0017 [ 71]: cd9cea440f39fa0b +Block 0017 [ 72]: adc2e65d1d5f4612 +Block 0017 [ 73]: 8d271b9d779bd3c1 +Block 0017 [ 74]: 8d98f39f07ed40d5 +Block 0017 [ 75]: 9a350daa5e1185bc +Block 0017 [ 76]: a50155990d517040 +Block 0017 [ 77]: 9737cb03db154e43 +Block 0017 [ 78]: 5b62dbdb43a7ae36 +Block 0017 [ 79]: 718dcab45caefd1d +Block 0017 [ 80]: 198ce38e06e84855 +Block 0017 [ 81]: a334190d64a3c358 +Block 0017 [ 82]: 9324456d4c2eebc5 +Block 0017 [ 83]: ac6677767b0e8589 +Block 0017 [ 84]: 99fcdac332ca73cb +Block 0017 [ 85]: ccc87d5cbd040dd9 +Block 0017 [ 86]: 7ba741ad5e014fdc +Block 0017 [ 87]: 04b98a5dbb9858d3 +Block 0017 [ 88]: 48f83e1d55782a3e +Block 0017 [ 89]: 7fdc976538a9605d +Block 0017 [ 90]: 34696b986f3276a1 +Block 0017 [ 91]: d2e5952e0e8c1513 +Block 0017 [ 92]: d3d6f03d384bff58 +Block 0017 [ 93]: ea50faff9497e736 +Block 0017 [ 94]: 923567f0b71393cb +Block 0017 [ 95]: 999b7be894d806fa +Block 0017 [ 96]: bff84f0b93f93adb +Block 0017 [ 97]: 36550f9621d9e1d2 +Block 0017 [ 98]: 98b3bd27313db1ee +Block 0017 [ 99]: a0fd0d843f1d9c2a +Block 0017 [100]: c2af36b6ac1bff35 +Block 0017 [101]: cf1f5dd60b32741c +Block 0017 [102]: a73467edf0046e40 +Block 0017 [103]: bc88e01dc0b3ead3 +Block 0017 [104]: 76c60f22353f13da +Block 0017 [105]: b4426004fec916fc +Block 0017 [106]: 515940091ded755a +Block 0017 [107]: e2e1105fc6ce1c1f +Block 0017 [108]: b97b4018796ee38b +Block 0017 [109]: a24f467b8b444546 +Block 0017 [110]: 82ae89263b2f72b9 +Block 0017 [111]: c88e67246622bf95 +Block 0017 [112]: df50ff12b0d1b15b +Block 0017 [113]: 51bbb2e9a6005550 +Block 0017 [114]: 91cb844ea94a3792 +Block 0017 [115]: bbc07e5ad7e82009 +Block 0017 [116]: 60c62d377e5be69a +Block 0017 [117]: 4c56a5431c2b3e76 +Block 0017 [118]: 193324e72943dc20 +Block 0017 [119]: 25441dced351b789 +Block 0017 [120]: 040d53f6f1512c9d +Block 0017 [121]: 130e48953283e7d1 +Block 0017 [122]: 2d326e978ff8130a +Block 0017 [123]: 2000c765fc63f72f +Block 0017 [124]: ccd4bc7dbd218e40 +Block 0017 [125]: 163c65d57d0ec8d8 +Block 0017 [126]: 4ec3e83cf091cb11 +Block 0017 [127]: d0c37c0476196abf +Block 0018 [ 0]: cc16b40ad5747e4e +Block 0018 [ 1]: fc9cea26229979aa +Block 0018 [ 2]: 71c2ce72e2969701 +Block 0018 [ 3]: 791cbfcbc3dcbeac +Block 0018 [ 4]: 9f87de4eb6bd1c78 +Block 0018 [ 5]: b2299523780f6e83 +Block 0018 [ 6]: 3cab22b2571bb002 +Block 0018 [ 7]: e84bc808526ba1c4 +Block 0018 [ 8]: 1e6da5a620d1763a +Block 0018 [ 9]: d43041a9052354e7 +Block 0018 [ 10]: 2adfd5010c727d11 +Block 0018 [ 11]: 07d408bc985c47fc +Block 0018 [ 12]: cb0735fa154efb20 +Block 0018 [ 13]: 5d9cd38a29c6c593 +Block 0018 [ 14]: e6acfe5ea8e9d8de +Block 0018 [ 15]: 93fbaf947ed59bc3 +Block 0018 [ 16]: 8bcd692f1b47b6a6 +Block 0018 [ 17]: 9f1234cb7653eb74 +Block 0018 [ 18]: cb83ea20a50f3f7e +Block 0018 [ 19]: 00f9c746d11f2227 +Block 0018 [ 20]: f7402e994a250230 +Block 0018 [ 21]: 982c78f9d63107c2 +Block 0018 [ 22]: a34d035c8788a81e +Block 0018 [ 23]: fe5e3d1993d4e860 +Block 0018 [ 24]: 1ebf3aef0c6b10bf +Block 0018 [ 25]: f28b8fff6ccc27a4 +Block 0018 [ 26]: d2b59050aff341c5 +Block 0018 [ 27]: 5a820ee8a39572fe +Block 0018 [ 28]: 6f963e89e1c54e52 +Block 0018 [ 29]: fc1b178e6b97e4ac +Block 0018 [ 30]: 7e9a9c313e4efb8a +Block 0018 [ 31]: 9d471890801a8ab3 +Block 0018 [ 32]: 5f7e0de0ae64c1db +Block 0018 [ 33]: 1ec697d242aa51f5 +Block 0018 [ 34]: 7b8e0b9d219a2029 +Block 0018 [ 35]: 8d08d76f52bdaa6e +Block 0018 [ 36]: 66b0c4a5cc40d799 +Block 0018 [ 37]: 942c84e05d97fffa +Block 0018 [ 38]: bbb862ba00327b6d +Block 0018 [ 39]: bef2092925db17f5 +Block 0018 [ 40]: 4e31cd9dfdbae400 +Block 0018 [ 41]: 46e528452ba8856e +Block 0018 [ 42]: 35d3f0910e752f79 +Block 0018 [ 43]: 8e47a91e5c44463f +Block 0018 [ 44]: 96a6455e5072b431 +Block 0018 [ 45]: 8b64f956cd48dc1b +Block 0018 [ 46]: 12e0ddef27aafdfe +Block 0018 [ 47]: 82da7ffbc3218c92 +Block 0018 [ 48]: 23390a781bd0644c +Block 0018 [ 49]: 52e2ed3f08f461c6 +Block 0018 [ 50]: 97d91cd63f28c587 +Block 0018 [ 51]: bc6a807a9e196641 +Block 0018 [ 52]: c357ff64c15aa403 +Block 0018 [ 53]: e6f47d41087b1758 +Block 0018 [ 54]: 7fd24e9a098fe9ea +Block 0018 [ 55]: eb58ad3c5f2ddb88 +Block 0018 [ 56]: d886a29c6469e51e +Block 0018 [ 57]: ae13ef46d94ca5dd +Block 0018 [ 58]: f0227a75ed41f619 +Block 0018 [ 59]: f726ec8a5fb32899 +Block 0018 [ 60]: c2cb9cb1c7d6b1dc +Block 0018 [ 61]: 94e5e8d5c146ccd1 +Block 0018 [ 62]: a0914d9445df8d98 +Block 0018 [ 63]: baf4a01d25ce6f40 +Block 0018 [ 64]: 972694d1ba5d3873 +Block 0018 [ 65]: 28f525a4ae211560 +Block 0018 [ 66]: a60d9477eae5e7b6 +Block 0018 [ 67]: cedfb2bd66a74fea +Block 0018 [ 68]: cf2a8795c497b516 +Block 0018 [ 69]: e311460034b81676 +Block 0018 [ 70]: 6101999febaa6a08 +Block 0018 [ 71]: 0f414973e6b7ddd4 +Block 0018 [ 72]: 26eddd7b3b23e908 +Block 0018 [ 73]: 814c7d4f61874c5d +Block 0018 [ 74]: 066f27c905b2af02 +Block 0018 [ 75]: 6af0b152e8bf5b4a +Block 0018 [ 76]: 2b83b61d77577710 +Block 0018 [ 77]: 772757c567f0994e +Block 0018 [ 78]: 889bac540251180e +Block 0018 [ 79]: 5390db775c6a30a1 +Block 0018 [ 80]: f0601f43f63551b8 +Block 0018 [ 81]: 0fe587bca1b1370e +Block 0018 [ 82]: be51925e9397cb1f +Block 0018 [ 83]: 684159088b026646 +Block 0018 [ 84]: 83947593200cc262 +Block 0018 [ 85]: 6cff3fef11aaf653 +Block 0018 [ 86]: a0a529421d6a0530 +Block 0018 [ 87]: fc223917e2488077 +Block 0018 [ 88]: e920da644e7d73cd +Block 0018 [ 89]: 8d7df56be3c7fcd0 +Block 0018 [ 90]: 572aaa5457003a1f +Block 0018 [ 91]: a7f3c24f4ccbf913 +Block 0018 [ 92]: 62eb3807aa42d76d +Block 0018 [ 93]: 74d20a064449b36c +Block 0018 [ 94]: 7f3d004af82674eb +Block 0018 [ 95]: e7aa407b9f2eaffe +Block 0018 [ 96]: 05bde0b72833ede7 +Block 0018 [ 97]: 9a529018d06b1a9c +Block 0018 [ 98]: f0556a4f08155dab +Block 0018 [ 99]: 0317465138ab2d53 +Block 0018 [100]: f7fc8b6426c8adbd +Block 0018 [101]: 08769ef8a31b39a0 +Block 0018 [102]: 80b95e7ed0f363e5 +Block 0018 [103]: 1d2325b8911f1fd3 +Block 0018 [104]: fedeb4b73b6da294 +Block 0018 [105]: 7c9d104827324f47 +Block 0018 [106]: 9d9c711b4934c8c8 +Block 0018 [107]: 9092d112bd03fb13 +Block 0018 [108]: 01d8fe13c4484a3a +Block 0018 [109]: dd422ca0ce650b57 +Block 0018 [110]: 144c0dfb1afcc139 +Block 0018 [111]: 1c7b4586ca53a390 +Block 0018 [112]: 6c29fc6c25d93b1e +Block 0018 [113]: 1922cf3c0eb0eae1 +Block 0018 [114]: 692a594c53cbfe12 +Block 0018 [115]: a17a0f7581201eea +Block 0018 [116]: 8e3a0fab7f26a4a7 +Block 0018 [117]: 6e81606212a24250 +Block 0018 [118]: 46f94f333f1b0c80 +Block 0018 [119]: 8fb29cf58b02f7dc +Block 0018 [120]: 751c4d607d662b1f +Block 0018 [121]: 011b138878fd82f2 +Block 0018 [122]: ca6cda756a32627e +Block 0018 [123]: 18c16dd1426c836e +Block 0018 [124]: 1553aab1ec673729 +Block 0018 [125]: 05277de65fa287a5 +Block 0018 [126]: 7c4752344b98dbfa +Block 0018 [127]: ca946d048696b8d2 +Block 0019 [ 0]: f1e7830fd25fae5c +Block 0019 [ 1]: e722f627ee827cc2 +Block 0019 [ 2]: dbdda4176637645f +Block 0019 [ 3]: fed075b832e6d60d +Block 0019 [ 4]: 31b4a8232cf0f6d1 +Block 0019 [ 5]: 995419324435bafe +Block 0019 [ 6]: 7f034194b003a341 +Block 0019 [ 7]: e32c00e524f3b869 +Block 0019 [ 8]: 9221dd1d02dd673c +Block 0019 [ 9]: 1fe96cc1a3e8b14a +Block 0019 [ 10]: e13fd9248af85745 +Block 0019 [ 11]: 6f6abd3d84d25afd +Block 0019 [ 12]: 6b53d7b291973d82 +Block 0019 [ 13]: dfd270032800df30 +Block 0019 [ 14]: 51b8b57c7af83dc3 +Block 0019 [ 15]: f1a2060eff3d4026 +Block 0019 [ 16]: f04338a9d4813cb5 +Block 0019 [ 17]: 8dab994cf44555a1 +Block 0019 [ 18]: 0016c2f1d822e72b +Block 0019 [ 19]: 03611fcb09c2844a +Block 0019 [ 20]: 47931e1325d7bfa2 +Block 0019 [ 21]: 6e2435a2f5877a18 +Block 0019 [ 22]: 17a14f7a04c53a6c +Block 0019 [ 23]: e2b9ac28f13fdb09 +Block 0019 [ 24]: b02fbc04a68ef177 +Block 0019 [ 25]: b68dbee4c144f618 +Block 0019 [ 26]: 0b1bb54e3a825b1f +Block 0019 [ 27]: 5e8cb76f0a913e10 +Block 0019 [ 28]: 520a35dbde052eec +Block 0019 [ 29]: 7e5f3cdec8f738f0 +Block 0019 [ 30]: f0f3b74b494d30da +Block 0019 [ 31]: 6da6d4492f5d5fd6 +Block 0019 [ 32]: 4569a5b7c1000bc4 +Block 0019 [ 33]: 6a98b609ae531d7f +Block 0019 [ 34]: 5f3a721f2348256e +Block 0019 [ 35]: 174e5479fb6e0de4 +Block 0019 [ 36]: 3f6b47e56470492d +Block 0019 [ 37]: 5e1f6f163f69b6be +Block 0019 [ 38]: f6e998276b3b2e4c +Block 0019 [ 39]: bcfa0808cd732980 +Block 0019 [ 40]: 41664d9e8bd9ab30 +Block 0019 [ 41]: a88910d2af9784fe +Block 0019 [ 42]: 0e58fd96c2b966dd +Block 0019 [ 43]: 0975037f9bebef17 +Block 0019 [ 44]: fe17294a640aaf22 +Block 0019 [ 45]: d82e4987ba7c5899 +Block 0019 [ 46]: 4f5875e05025ed65 +Block 0019 [ 47]: f47b5bc7d131c365 +Block 0019 [ 48]: 88949148f6381880 +Block 0019 [ 49]: 49790168c570dbc6 +Block 0019 [ 50]: 91179f41bc61d381 +Block 0019 [ 51]: 964e6647b2240b9d +Block 0019 [ 52]: 469a2ca044a46f99 +Block 0019 [ 53]: 775719640dd3ea02 +Block 0019 [ 54]: c326dd47988e09e8 +Block 0019 [ 55]: 4b89a1a069646be5 +Block 0019 [ 56]: dbdc5efe88ee654f +Block 0019 [ 57]: a591fe65df404742 +Block 0019 [ 58]: e9e4ed0c20f77666 +Block 0019 [ 59]: 914d772c94508d51 +Block 0019 [ 60]: 73799663310c1cf8 +Block 0019 [ 61]: 004529e670391934 +Block 0019 [ 62]: 96298c287e11af1f +Block 0019 [ 63]: 4764493038171a0c +Block 0019 [ 64]: 99ae7d71ebaf7e2d +Block 0019 [ 65]: d64eb6712f31477c +Block 0019 [ 66]: 33006d2453c52a29 +Block 0019 [ 67]: f456ea4e8dffa076 +Block 0019 [ 68]: f02b73dab38ddb48 +Block 0019 [ 69]: 89a4f3e96b085ec1 +Block 0019 [ 70]: 09fb004b8f42a6f7 +Block 0019 [ 71]: d021ef6317f882d8 +Block 0019 [ 72]: 290f3c3c926f7b1c +Block 0019 [ 73]: dabdfda18f650705 +Block 0019 [ 74]: 08a5e3a99446a79f +Block 0019 [ 75]: 53f8f9da1dddbd37 +Block 0019 [ 76]: d74f4c4c9a5f1e24 +Block 0019 [ 77]: 873af7345e779b6e +Block 0019 [ 78]: e5700386448f5d64 +Block 0019 [ 79]: 8c8bf0c2e92f6e8c +Block 0019 [ 80]: a61cc56c8cb40a09 +Block 0019 [ 81]: 8ab9deff5491f6cc +Block 0019 [ 82]: 8d90f91fdb55411f +Block 0019 [ 83]: 42f1723a12eacd4a +Block 0019 [ 84]: 62ea21253514ef3e +Block 0019 [ 85]: 8be3a6b87b767626 +Block 0019 [ 86]: e53f23ab3302fab7 +Block 0019 [ 87]: 8d7406f24d644e37 +Block 0019 [ 88]: 11eb7eeae417a83c +Block 0019 [ 89]: 9378ff2094390edd +Block 0019 [ 90]: 0cab6e06dea4e6d7 +Block 0019 [ 91]: e1a91d302fcb830b +Block 0019 [ 92]: 05a8b103c49b749e +Block 0019 [ 93]: b835a812caa13495 +Block 0019 [ 94]: 9e4a7d6008dc0d07 +Block 0019 [ 95]: 18d0fa5ba8e5d485 +Block 0019 [ 96]: 9e9398529ce75aca +Block 0019 [ 97]: 17057081a418bacf +Block 0019 [ 98]: 4e0f27d1838154bd +Block 0019 [ 99]: 8d44877ca2051aa8 +Block 0019 [100]: 0a4cd6358d00bf87 +Block 0019 [101]: 7c0bff02bb67c59c +Block 0019 [102]: aa3fa4ef9b5dd781 +Block 0019 [103]: 97a50d863ffc53d9 +Block 0019 [104]: 7eb0b749989ef4eb +Block 0019 [105]: 42f2c7f29e17413c +Block 0019 [106]: 645d879ee4b51f59 +Block 0019 [107]: c762cc190f4efb3f +Block 0019 [108]: 770003ec55c205d9 +Block 0019 [109]: 42846df1c4848f87 +Block 0019 [110]: 624ea1aba2a7b90e +Block 0019 [111]: 381df621938f285d +Block 0019 [112]: a46b93b0ffca4de9 +Block 0019 [113]: dceffbeebcd085c6 +Block 0019 [114]: a64c1f001498c383 +Block 0019 [115]: 6a5b51a09044452e +Block 0019 [116]: 198bcaa970ec0793 +Block 0019 [117]: 4927e17271e075e9 +Block 0019 [118]: 655157bfc11bc960 +Block 0019 [119]: 5820ba92b019f490 +Block 0019 [120]: a6404d587984349d +Block 0019 [121]: a3b6baa1ee83ff71 +Block 0019 [122]: 01bd468653db5771 +Block 0019 [123]: 41bb6a30fd950b20 +Block 0019 [124]: cbebc0f2d3027bbe +Block 0019 [125]: b1ba5e6e7fa4566e +Block 0019 [126]: c18c520e0cd81007 +Block 0019 [127]: 59769107732ed252 +Block 0020 [ 0]: f7a02540719722b2 +Block 0020 [ 1]: 793647276c046ccd +Block 0020 [ 2]: a14522df2ec9b017 +Block 0020 [ 3]: 40410f02a5eec424 +Block 0020 [ 4]: 20d579f606b8ed32 +Block 0020 [ 5]: 48f51282fca74fa4 +Block 0020 [ 6]: a39c1f758e17b6c9 +Block 0020 [ 7]: 23439532dad82587 +Block 0020 [ 8]: 56140cf3ddec83cc +Block 0020 [ 9]: 8103508d26c631c0 +Block 0020 [ 10]: da9965e5fcfb1f83 +Block 0020 [ 11]: e25790b322b33fad +Block 0020 [ 12]: b1abd7a58bb1d66e +Block 0020 [ 13]: b7758cdd576e14ac +Block 0020 [ 14]: 5bc5572e7650aac5 +Block 0020 [ 15]: bc6293a4d42190da +Block 0020 [ 16]: bbd6b2a25f3eb6f1 +Block 0020 [ 17]: 6eb99b410f0e9b09 +Block 0020 [ 18]: e6801c5d1e4c07a5 +Block 0020 [ 19]: 6e4e0a6c98f91237 +Block 0020 [ 20]: acdc7d2e237f9c58 +Block 0020 [ 21]: d0b6bd85fe772acb +Block 0020 [ 22]: 3af46184aab0899b +Block 0020 [ 23]: d64a30d79a2a8656 +Block 0020 [ 24]: 6bb8c7cc6580c8a8 +Block 0020 [ 25]: 9dba817881a14fc5 +Block 0020 [ 26]: 11b2964245a99f2f +Block 0020 [ 27]: b05f003f2c62dbb9 +Block 0020 [ 28]: 8efc3f9e00d0742c +Block 0020 [ 29]: eef2abfa36296b80 +Block 0020 [ 30]: 33f504553ee7aefb +Block 0020 [ 31]: e515f172cbc15f96 +Block 0020 [ 32]: f1b5332ce18d2068 +Block 0020 [ 33]: 629f71da3729dd4c +Block 0020 [ 34]: ca8740743450e9e4 +Block 0020 [ 35]: cd2a84fe1e4beadc +Block 0020 [ 36]: 337e086b0da43f8d +Block 0020 [ 37]: af09ba250c1835d1 +Block 0020 [ 38]: c726a7ae8cd2b9cc +Block 0020 [ 39]: a6d6197a3b32d1a5 +Block 0020 [ 40]: 7c59469d97032861 +Block 0020 [ 41]: 18870f3f29d0ff6c +Block 0020 [ 42]: e223d42a40f6fc86 +Block 0020 [ 43]: 2b097cab1e3e202b +Block 0020 [ 44]: 1067b29eac4bf9ef +Block 0020 [ 45]: a17d4321bd1ffc44 +Block 0020 [ 46]: 28bd1bc360800b69 +Block 0020 [ 47]: efbd0b5a815fab67 +Block 0020 [ 48]: dfb2c5c83c089ade +Block 0020 [ 49]: 1d72cee46ff73a07 +Block 0020 [ 50]: e65150c76a3b93ad +Block 0020 [ 51]: 01463480b6e07432 +Block 0020 [ 52]: dbb11d4d1ab842a5 +Block 0020 [ 53]: 1aa01282303809a1 +Block 0020 [ 54]: 0407d2b151f26a2e +Block 0020 [ 55]: bda5259c36ffe4e2 +Block 0020 [ 56]: 5ba64524226b17b0 +Block 0020 [ 57]: 14ebbabdc5c1081b +Block 0020 [ 58]: 8e28b79933734dcc +Block 0020 [ 59]: b1912c7bb67162da +Block 0020 [ 60]: 2246ca2915c0b57c +Block 0020 [ 61]: 44ca8e8b31882e92 +Block 0020 [ 62]: 153b19cca0f2e70f +Block 0020 [ 63]: 36c1a2b1fdbafed1 +Block 0020 [ 64]: 80b5d29d62621bd0 +Block 0020 [ 65]: 2f6b6a4977d304b0 +Block 0020 [ 66]: 8b4745ab709f83b6 +Block 0020 [ 67]: 79b5a11fba60e3ac +Block 0020 [ 68]: 5f5a066b534ccdb4 +Block 0020 [ 69]: b0a5387823264e55 +Block 0020 [ 70]: 4a8dc8d0b937aef0 +Block 0020 [ 71]: 64fe1e285c9a489b +Block 0020 [ 72]: 7e9ebfdfd7b3b128 +Block 0020 [ 73]: 3830d2dcfa33d585 +Block 0020 [ 74]: 95ddc376097e5fed +Block 0020 [ 75]: da61f020a5bd1ec0 +Block 0020 [ 76]: 58261f1a2ec1ec2a +Block 0020 [ 77]: d9d5d2badbc4b092 +Block 0020 [ 78]: 21fad4988a0d3b1a +Block 0020 [ 79]: 2515690a13cdf56a +Block 0020 [ 80]: fe9dae3553a4b5f8 +Block 0020 [ 81]: 01017f26017236f0 +Block 0020 [ 82]: e53fee225d251aa4 +Block 0020 [ 83]: 97a9dc2f4b919e45 +Block 0020 [ 84]: aba7bb7807dac22e +Block 0020 [ 85]: 8396a7f53ed6fe73 +Block 0020 [ 86]: d59d2a7855619f38 +Block 0020 [ 87]: 19e81207e1990d14 +Block 0020 [ 88]: 6af6cb67ba215ab1 +Block 0020 [ 89]: a0bd23fd1394eb2c +Block 0020 [ 90]: b8fd28ac5847a3a3 +Block 0020 [ 91]: d06e21a15fd9a785 +Block 0020 [ 92]: cbb84febca6dbed1 +Block 0020 [ 93]: ac1a9ca2f04ecc67 +Block 0020 [ 94]: c3265cfa6411f43a +Block 0020 [ 95]: 1f967f21c14b7864 +Block 0020 [ 96]: 463514566c30d67f +Block 0020 [ 97]: 9ab54cf19f8332b9 +Block 0020 [ 98]: 752ef52670d62f4f +Block 0020 [ 99]: 94c30bbb67d74756 +Block 0020 [100]: 9da7e0413f23ef7a +Block 0020 [101]: 5b14c9078edcea1c +Block 0020 [102]: f1fc1cf31932181a +Block 0020 [103]: a58aedabd43ed327 +Block 0020 [104]: 0df7f94de81d72f1 +Block 0020 [105]: 7605dd82b1ba6494 +Block 0020 [106]: b4990feceae9fdd4 +Block 0020 [107]: b111dccb67f5c7bb +Block 0020 [108]: b8fea154255b39ca +Block 0020 [109]: f89e4f433d96c7ee +Block 0020 [110]: 5b29c9419b89452f +Block 0020 [111]: d847da18c88976f3 +Block 0020 [112]: 39256fb09713f686 +Block 0020 [113]: dac4ef8fba50a8e2 +Block 0020 [114]: 661120873a7a18fd +Block 0020 [115]: 093892e68c1baf73 +Block 0020 [116]: 480b98fe82c235af +Block 0020 [117]: 59a4a56b2f12be74 +Block 0020 [118]: ed31ee49a5ada172 +Block 0020 [119]: 56785be3b6f96319 +Block 0020 [120]: f18290424c5a7936 +Block 0020 [121]: fa7ac39ca22d0d14 +Block 0020 [122]: 65c55663ec05b2dc +Block 0020 [123]: 2aea00dee01a3d80 +Block 0020 [124]: 655e16c05e192f42 +Block 0020 [125]: eff65a062d00ffe3 +Block 0020 [126]: f54f1777a25e8532 +Block 0020 [127]: 27cbbe27f5e27d94 +Block 0021 [ 0]: bfd6eab6c93af588 +Block 0021 [ 1]: ad7bf667d74382bf +Block 0021 [ 2]: 195c9027fa5471a6 +Block 0021 [ 3]: e46b052225d48ff4 +Block 0021 [ 4]: bdecfecafa6a38bc +Block 0021 [ 5]: e83caa5b213c1e8b +Block 0021 [ 6]: f7702d25f2b78730 +Block 0021 [ 7]: cc3925d4a5576071 +Block 0021 [ 8]: 45bc491d19dee84f +Block 0021 [ 9]: f9e0f6aa40ea1e2a +Block 0021 [ 10]: dfddefe2f3dffedb +Block 0021 [ 11]: 51a67880957d41b5 +Block 0021 [ 12]: b5e4c52bb847719f +Block 0021 [ 13]: c3d3d442d7d04b01 +Block 0021 [ 14]: 41b24a8baab2743c +Block 0021 [ 15]: 9b24d52938f52dff +Block 0021 [ 16]: 905f1e4aa19f311f +Block 0021 [ 17]: c218f0877c51e7ec +Block 0021 [ 18]: 349e76744f0adfe1 +Block 0021 [ 19]: ddb86c3804bf7e1a +Block 0021 [ 20]: 13ec9499abbe7937 +Block 0021 [ 21]: d1d469ae5ad012d7 +Block 0021 [ 22]: d7dd5edd9095df07 +Block 0021 [ 23]: 0216b1a8773bdfaf +Block 0021 [ 24]: 9f00d6e95b2d9ec8 +Block 0021 [ 25]: 177ff8139aaf8ddc +Block 0021 [ 26]: 91ab06e0ea538b7f +Block 0021 [ 27]: c8ee413463c95948 +Block 0021 [ 28]: b380238800f34bb7 +Block 0021 [ 29]: c348baeacae00aee +Block 0021 [ 30]: a29035c81c82cc3c +Block 0021 [ 31]: 5aa027cec856d613 +Block 0021 [ 32]: 7f1c40b8ca270064 +Block 0021 [ 33]: c1da08eb9998bc13 +Block 0021 [ 34]: d96369fba84991a5 +Block 0021 [ 35]: fd429c5bc5a47b9f +Block 0021 [ 36]: 2cb3b03b63293434 +Block 0021 [ 37]: fc16874d8a7048fd +Block 0021 [ 38]: 315165d7372d919b +Block 0021 [ 39]: e61b47c3fbb0f3e9 +Block 0021 [ 40]: c06be41275be05df +Block 0021 [ 41]: b6b0bcc0385226a8 +Block 0021 [ 42]: a0901451e99dd6c6 +Block 0021 [ 43]: 461b409bcf5e456b +Block 0021 [ 44]: f71d25ab1f2a9be4 +Block 0021 [ 45]: 305ee7a1da0bb5bd +Block 0021 [ 46]: 86de5e6c7154859d +Block 0021 [ 47]: 13153d375530110d +Block 0021 [ 48]: 36caf631256e646a +Block 0021 [ 49]: f3ee304459b4c7d8 +Block 0021 [ 50]: da5d4e8f60c5caf6 +Block 0021 [ 51]: f12e4872f6a309a5 +Block 0021 [ 52]: 5071f661e0c41de0 +Block 0021 [ 53]: 0e722f9d6c262798 +Block 0021 [ 54]: 0843991f14584c74 +Block 0021 [ 55]: f9396f94941f43a8 +Block 0021 [ 56]: 20b21b680df90975 +Block 0021 [ 57]: 5218eaa41848907c +Block 0021 [ 58]: 948a98480c904dbb +Block 0021 [ 59]: 8bbdc9bea2f2bb35 +Block 0021 [ 60]: de07b3bf633a6f7f +Block 0021 [ 61]: d3441a0e8a43ba32 +Block 0021 [ 62]: 0930cd161608ed60 +Block 0021 [ 63]: 82eac0f3f0cb4d93 +Block 0021 [ 64]: 5d2554e80c592f61 +Block 0021 [ 65]: 0b4d795191a1a0cc +Block 0021 [ 66]: 47781616e393a9f6 +Block 0021 [ 67]: 0141f3281f27b0b5 +Block 0021 [ 68]: 85f3409041a14ae0 +Block 0021 [ 69]: 5cef02eed4234029 +Block 0021 [ 70]: 20dd9d63eb26cd01 +Block 0021 [ 71]: 9d7d0a521a7af92a +Block 0021 [ 72]: d8d3e1c076a87892 +Block 0021 [ 73]: b90f777ec24e7ac0 +Block 0021 [ 74]: 9ea20e84c909e4fb +Block 0021 [ 75]: ebfd11b636e7c0c3 +Block 0021 [ 76]: 5869c138199cd51c +Block 0021 [ 77]: 82636d9abb871ac6 +Block 0021 [ 78]: f29d20bd5bdb4e69 +Block 0021 [ 79]: 23d4511db11567a9 +Block 0021 [ 80]: 3d835bc54cef8608 +Block 0021 [ 81]: 04969d7cab622099 +Block 0021 [ 82]: 3618a47cdc52b86f +Block 0021 [ 83]: 8bb7e5f00f82a717 +Block 0021 [ 84]: 78b6b0fbadb81833 +Block 0021 [ 85]: 8cea7501cda689cb +Block 0021 [ 86]: 4bdae18a70a17cc9 +Block 0021 [ 87]: 6c43ff3639b50017 +Block 0021 [ 88]: 120c5e735bdb9cac +Block 0021 [ 89]: d3c5af830d2f8a22 +Block 0021 [ 90]: 416d45e8451b7ec9 +Block 0021 [ 91]: 08e5a871de90d1a5 +Block 0021 [ 92]: e5bd017839cd86cb +Block 0021 [ 93]: 60cbd3a0f5574267 +Block 0021 [ 94]: b2311da13916fbf0 +Block 0021 [ 95]: f649c4268b3b1004 +Block 0021 [ 96]: da07e07655c4ea3e +Block 0021 [ 97]: 9b81ceea2d8cc09b +Block 0021 [ 98]: 76c82448b661e9a5 +Block 0021 [ 99]: e1600857cac5f82e +Block 0021 [100]: c276019df0aff223 +Block 0021 [101]: c4159c82ce1759c9 +Block 0021 [102]: a8819419a1ca07b5 +Block 0021 [103]: d936c69fca5ebcff +Block 0021 [104]: 5a321197a10f2110 +Block 0021 [105]: 43ecd6f6263d6a9e +Block 0021 [106]: 171147256f82baf2 +Block 0021 [107]: 408889d9a2e0ce35 +Block 0021 [108]: 4db62bb985872235 +Block 0021 [109]: 639fe3ec59c94969 +Block 0021 [110]: df52168a89a2c597 +Block 0021 [111]: cb2feded0a29878d +Block 0021 [112]: 459d214c60703bcb +Block 0021 [113]: 552d28886db5aea0 +Block 0021 [114]: 04b39edf3c3928ba +Block 0021 [115]: 8d1e04bd3620fbfd +Block 0021 [116]: 214cc46309c47dd3 +Block 0021 [117]: bb5da5d2925b3f41 +Block 0021 [118]: 3d71d050b5ae430b +Block 0021 [119]: 147073d48eaebf82 +Block 0021 [120]: 1f14584e6ab6c89f +Block 0021 [121]: 96133f813ee480ae +Block 0021 [122]: 1f360d067304e68b +Block 0021 [123]: eca5c02b7cc59bae +Block 0021 [124]: 3f6d2990b6b2f4c6 +Block 0021 [125]: b17f55e33484f2a0 +Block 0021 [126]: 8326c91f7d817407 +Block 0021 [127]: e2887aca53b66b78 +Block 0022 [ 0]: e6aebae353209478 +Block 0022 [ 1]: 73f7093c56dc1ace +Block 0022 [ 2]: cbb17f35cc2d94f0 +Block 0022 [ 3]: 207b71cc74eb4a3a +Block 0022 [ 4]: a835377b1188a381 +Block 0022 [ 5]: dea6f51eeef750e6 +Block 0022 [ 6]: 96e3f6731120ffcb +Block 0022 [ 7]: efb291d841331342 +Block 0022 [ 8]: 661fcf2917e4c7df +Block 0022 [ 9]: a2ea63a6d1bc87d5 +Block 0022 [ 10]: dce3646661bc277e +Block 0022 [ 11]: 08b4db396e39172e +Block 0022 [ 12]: 3fd3b7ed0c8f9372 +Block 0022 [ 13]: 64f933a9aa9e2c45 +Block 0022 [ 14]: f57c3b1213b0e55b +Block 0022 [ 15]: bda13485c5e6a7aa +Block 0022 [ 16]: 895a50a3e2cd9749 +Block 0022 [ 17]: 0d28357ed7a4e5b7 +Block 0022 [ 18]: fa0a4eb2ac0f950d +Block 0022 [ 19]: 020e6223653e46fd +Block 0022 [ 20]: 41ee467849f3fc13 +Block 0022 [ 21]: 2ddd403329149463 +Block 0022 [ 22]: a295bed7816b6d78 +Block 0022 [ 23]: 1af232ba23cacd51 +Block 0022 [ 24]: a32afd0f1aa57733 +Block 0022 [ 25]: c1a0195cf8bfddec +Block 0022 [ 26]: b690f9cad66ed79b +Block 0022 [ 27]: ff0dc5cb227a5d18 +Block 0022 [ 28]: f977e52d62c8c680 +Block 0022 [ 29]: a9d48b790e4e3317 +Block 0022 [ 30]: a95cb5c1da25321d +Block 0022 [ 31]: c87cf4f39475eb74 +Block 0022 [ 32]: 4cc4b06a7072c566 +Block 0022 [ 33]: 7d418a41060b64ab +Block 0022 [ 34]: a35688c3121bc461 +Block 0022 [ 35]: eda3ac1ec9757af2 +Block 0022 [ 36]: fcc499f57f65c6f0 +Block 0022 [ 37]: 7063f182bf81de29 +Block 0022 [ 38]: b052c0a286dfa31d +Block 0022 [ 39]: 6de768033d343d50 +Block 0022 [ 40]: f7126aeccef9949b +Block 0022 [ 41]: 54ac140aeb7edc36 +Block 0022 [ 42]: 681e9a2cd77288a0 +Block 0022 [ 43]: 152105f3f58885fa +Block 0022 [ 44]: 0bad8acdee14f1dd +Block 0022 [ 45]: 17ddc6ff0cdc9027 +Block 0022 [ 46]: 3960712a29f04ddf +Block 0022 [ 47]: 31a59c5ea6f5ef04 +Block 0022 [ 48]: dbdf5706690f3369 +Block 0022 [ 49]: 605e544a914b48b0 +Block 0022 [ 50]: f8b5076b859268d9 +Block 0022 [ 51]: eaa1cb07b39eb746 +Block 0022 [ 52]: 6ea36d5c167e6090 +Block 0022 [ 53]: 1e9177d5d1227f5a +Block 0022 [ 54]: 13288139d616d58e +Block 0022 [ 55]: 44d89de91c0094f2 +Block 0022 [ 56]: e1d4e392f90bed20 +Block 0022 [ 57]: cb4ca95eb02c10cb +Block 0022 [ 58]: cea536c5ef0e83e9 +Block 0022 [ 59]: 411e652988782c19 +Block 0022 [ 60]: c901bec92b3aae2f +Block 0022 [ 61]: b99853310b82da18 +Block 0022 [ 62]: b49ca7bd55c047e3 +Block 0022 [ 63]: 67a86fc6b6316c66 +Block 0022 [ 64]: b0c36eedbe865583 +Block 0022 [ 65]: 6e6f2a1e8c25bf4a +Block 0022 [ 66]: 6b12221dcfec802b +Block 0022 [ 67]: c8f78e123c452cd3 +Block 0022 [ 68]: 67ba9bd6eeb72d98 +Block 0022 [ 69]: 78dada521d580f88 +Block 0022 [ 70]: 6e75b4b8cb56e190 +Block 0022 [ 71]: 52e12f9b94421ae2 +Block 0022 [ 72]: 26d286f2cc846f83 +Block 0022 [ 73]: 2357111ee979aa38 +Block 0022 [ 74]: 2b432dd9af72cd33 +Block 0022 [ 75]: 9c6ece8d30cf1391 +Block 0022 [ 76]: 4d9a922090731d77 +Block 0022 [ 77]: 34aa94b5f4b1e909 +Block 0022 [ 78]: 029ede7220b86663 +Block 0022 [ 79]: 032e7cf13bd08994 +Block 0022 [ 80]: c957dfd60e828645 +Block 0022 [ 81]: 82f0c77773249e7d +Block 0022 [ 82]: e8a4e1ef01948e77 +Block 0022 [ 83]: 3af1103eb60fcfba +Block 0022 [ 84]: d1e5148298f8ff80 +Block 0022 [ 85]: d04723f7ddde5770 +Block 0022 [ 86]: 9cfd844a33052a27 +Block 0022 [ 87]: 3c7901823cce023c +Block 0022 [ 88]: 5325fd52717f59f1 +Block 0022 [ 89]: df61355f6a9a0aef +Block 0022 [ 90]: 3ea37bffd497f8b5 +Block 0022 [ 91]: 3bbad908578892a3 +Block 0022 [ 92]: 049747b87164eeff +Block 0022 [ 93]: 1828cb6db435ec53 +Block 0022 [ 94]: 4c96ec4e154bb840 +Block 0022 [ 95]: 7303f1a3e5392122 +Block 0022 [ 96]: 5264e0842f256c9f +Block 0022 [ 97]: 9bd3752d4828dc4f +Block 0022 [ 98]: 69b307e7e956af8f +Block 0022 [ 99]: 7d5d5d6813bcee75 +Block 0022 [100]: a3a17f8d2aad5d30 +Block 0022 [101]: ea39fb0a88e7cd07 +Block 0022 [102]: cc4430d5ed7000cc +Block 0022 [103]: c664d64c236bcc4f +Block 0022 [104]: c475595c8ab3ec47 +Block 0022 [105]: 6c9cc890702453db +Block 0022 [106]: 323e596761bc223e +Block 0022 [107]: f11210530c7260f6 +Block 0022 [108]: 2442847da422d9bb +Block 0022 [109]: f42ba4d9043843f2 +Block 0022 [110]: 934892245c31ba35 +Block 0022 [111]: 4ed499734276ef4c +Block 0022 [112]: 5e5e5543390e5683 +Block 0022 [113]: ffab89c5036c4b53 +Block 0022 [114]: ad1021520de84f65 +Block 0022 [115]: b4ccf7022b5d8288 +Block 0022 [116]: 5c586acc6ea27398 +Block 0022 [117]: d5446287a9a13644 +Block 0022 [118]: 6a06a8f31064a550 +Block 0022 [119]: f6a1c23a9314ba58 +Block 0022 [120]: 7b48abb370998f31 +Block 0022 [121]: 03a1b00f23c8a0d1 +Block 0022 [122]: 1743a200b4b64a2b +Block 0022 [123]: 3abcfaa93432c7b8 +Block 0022 [124]: d120c946b3c79489 +Block 0022 [125]: e29e9017dba0f398 +Block 0022 [126]: 4e1d6694af3c32f4 +Block 0022 [127]: 8e810ad3516f24b2 +Block 0023 [ 0]: 56c432170f2350e5 +Block 0023 [ 1]: 09db8b18388cb582 +Block 0023 [ 2]: 2eafa8786064ffe0 +Block 0023 [ 3]: 1141a78f575e12b4 +Block 0023 [ 4]: 26f04196b7234286 +Block 0023 [ 5]: 5dd6537d4851feb5 +Block 0023 [ 6]: c583ed23a795fe4c +Block 0023 [ 7]: 6368c86ccb8d83d5 +Block 0023 [ 8]: fb7b278ee8366750 +Block 0023 [ 9]: cac13b3bd11c9f83 +Block 0023 [ 10]: dd2c59c38a8c2011 +Block 0023 [ 11]: 26145ddd34cf879b +Block 0023 [ 12]: e62a5c5aadb86abb +Block 0023 [ 13]: 38d268fa1e7df6b3 +Block 0023 [ 14]: 8126b9192e3557c6 +Block 0023 [ 15]: 027ea8e6cce918f3 +Block 0023 [ 16]: e2b722e572bac272 +Block 0023 [ 17]: 5f8d26dad7112659 +Block 0023 [ 18]: edc60e812ddcd7ae +Block 0023 [ 19]: c072593563543ddf +Block 0023 [ 20]: 340063081ae79b39 +Block 0023 [ 21]: 6232714e9e32cf6c +Block 0023 [ 22]: 05066590c3c27c81 +Block 0023 [ 23]: d76f4d930392174a +Block 0023 [ 24]: 0068bf676811bb4b +Block 0023 [ 25]: 1f69480b3055af3f +Block 0023 [ 26]: 1643fc248280c10e +Block 0023 [ 27]: 589a6e562b4f32b2 +Block 0023 [ 28]: 7463dc6fc808f4a2 +Block 0023 [ 29]: 8fdcf4ef08a01295 +Block 0023 [ 30]: 1dc6d09c09e5778e +Block 0023 [ 31]: bfb449c78123c47f +Block 0023 [ 32]: 5a5513c27bc4dfa5 +Block 0023 [ 33]: b12582f5860a7211 +Block 0023 [ 34]: 4b6eb353c9d6db6d +Block 0023 [ 35]: e073bb08023d543d +Block 0023 [ 36]: 302cf4a9a92dabc0 +Block 0023 [ 37]: 5eed7cd8055d637a +Block 0023 [ 38]: 2c2d45738b604d2b +Block 0023 [ 39]: 21c4a193ffd0bded +Block 0023 [ 40]: 526f7e03af98d7cc +Block 0023 [ 41]: bc42211893504613 +Block 0023 [ 42]: 629c9782a6c51994 +Block 0023 [ 43]: c807b62f77a64154 +Block 0023 [ 44]: 7db0caa237f90623 +Block 0023 [ 45]: e4e31f5a1f573bdf +Block 0023 [ 46]: 22145e4b3d1bdf3f +Block 0023 [ 47]: c92877319bb7f189 +Block 0023 [ 48]: d6d0953f49d547f5 +Block 0023 [ 49]: eb948a13d7bc979a +Block 0023 [ 50]: fdd2ab73cc437323 +Block 0023 [ 51]: 221e8102a15e5083 +Block 0023 [ 52]: 6a5f1d9c0ccc6187 +Block 0023 [ 53]: e05665f2bc8ac301 +Block 0023 [ 54]: c88e6f5a59ebe911 +Block 0023 [ 55]: 3bb8dc1b633e72c2 +Block 0023 [ 56]: bde7b8b01205c612 +Block 0023 [ 57]: dd524b90844f7ba1 +Block 0023 [ 58]: af22ac3d14da5c59 +Block 0023 [ 59]: 788c8edcab69224e +Block 0023 [ 60]: 22842e87b2c24640 +Block 0023 [ 61]: a7b74dbad49f1372 +Block 0023 [ 62]: 25cc466c7add69f0 +Block 0023 [ 63]: c43262f642817169 +Block 0023 [ 64]: 0261f94d0723ef00 +Block 0023 [ 65]: 45284f8434b96e32 +Block 0023 [ 66]: f2768808b5945e24 +Block 0023 [ 67]: 41bae50aad6b6004 +Block 0023 [ 68]: 699000306ac34f2c +Block 0023 [ 69]: 1a9ba2af157bec9b +Block 0023 [ 70]: a15f1015af21ae84 +Block 0023 [ 71]: a2170eae6ca7bcb2 +Block 0023 [ 72]: a300fb755441f126 +Block 0023 [ 73]: 605825ac585f01eb +Block 0023 [ 74]: 932fe9bcad3e6079 +Block 0023 [ 75]: 7333f0b0da8ebdb8 +Block 0023 [ 76]: 8b0609b3c74b0edd +Block 0023 [ 77]: 69c76359d05b6145 +Block 0023 [ 78]: 7673d116e0ea1fb5 +Block 0023 [ 79]: 9014432d5e138eed +Block 0023 [ 80]: 250a2478d5e3f8fb +Block 0023 [ 81]: 42cba2e0fcbee17c +Block 0023 [ 82]: c8458235c5da47a2 +Block 0023 [ 83]: dfff25a5ba1fc6c9 +Block 0023 [ 84]: 92703172255bb700 +Block 0023 [ 85]: e88c4cd1910b5970 +Block 0023 [ 86]: bf49d0c32b5817c0 +Block 0023 [ 87]: a34efec5c482d20e +Block 0023 [ 88]: 08da80ad9449951f +Block 0023 [ 89]: ea848364740c829b +Block 0023 [ 90]: 851bf1c0f5ef6823 +Block 0023 [ 91]: 1100dae7f77fbb50 +Block 0023 [ 92]: 84b5dea318af2953 +Block 0023 [ 93]: d1642d506dbe74f9 +Block 0023 [ 94]: 853cee1e33c1c7ea +Block 0023 [ 95]: a9cf960261092974 +Block 0023 [ 96]: ba9e6115e04834f5 +Block 0023 [ 97]: 4e50532738f12659 +Block 0023 [ 98]: 052f606345e1ff96 +Block 0023 [ 99]: 29e56a5493554852 +Block 0023 [100]: 0a19df56263743bd +Block 0023 [101]: c424aa2d2486bde2 +Block 0023 [102]: 716e469f3592cb31 +Block 0023 [103]: c185624c1b8100e3 +Block 0023 [104]: 3fa3d101c5d5d337 +Block 0023 [105]: c3ed572269f1a21a +Block 0023 [106]: 5dcbbb1c55a6c46e +Block 0023 [107]: fafdd0b079d1e17e +Block 0023 [108]: 59ae6c87e343ebc8 +Block 0023 [109]: f56b124af7fdaae3 +Block 0023 [110]: a6142fc6bc7ded24 +Block 0023 [111]: 5281bfd0a97ee90e +Block 0023 [112]: fa4c9312ae8fea59 +Block 0023 [113]: 7220d85ddf5189d5 +Block 0023 [114]: fd43bac28e5fc21d +Block 0023 [115]: 14f7b1cc68901e54 +Block 0023 [116]: edbb0d51fa8eaec6 +Block 0023 [117]: b0ddf87a9ab31b2f +Block 0023 [118]: b224e3f04051574b +Block 0023 [119]: 635ea2f0116832c0 +Block 0023 [120]: 2f401e4abc05157c +Block 0023 [121]: 97b35ceeab754f7d +Block 0023 [122]: 1516a371e7bce932 +Block 0023 [123]: 8bb0ae9a2479fb3a +Block 0023 [124]: a4bc96317fcdb39a +Block 0023 [125]: 99990935644f7cab +Block 0023 [126]: 803015feda571015 +Block 0023 [127]: bf6f10ca00fa56a9 +Block 0024 [ 0]: bf4583539793038a +Block 0024 [ 1]: a17c89373c8ce1e5 +Block 0024 [ 2]: ce3c740ff9fc039f +Block 0024 [ 3]: 0fcd6129f8693784 +Block 0024 [ 4]: 2b91dea6ff4f7d7d +Block 0024 [ 5]: de737e6b686d3e94 +Block 0024 [ 6]: 18f8502cf6bf3292 +Block 0024 [ 7]: c509b7c2f0c6b80f +Block 0024 [ 8]: 3798e4457863c1c7 +Block 0024 [ 9]: 83a45a83121a14db +Block 0024 [ 10]: 27ad4af2107c034a +Block 0024 [ 11]: 5e270c568a5b643d +Block 0024 [ 12]: ab71bd7d07387c74 +Block 0024 [ 13]: 397c6c11039e74e6 +Block 0024 [ 14]: 9ec8188c1c345aad +Block 0024 [ 15]: eb475b8ef473c9a5 +Block 0024 [ 16]: 063b4373964fcac8 +Block 0024 [ 17]: 56a19139acc3e00a +Block 0024 [ 18]: 5c6c0962cce29939 +Block 0024 [ 19]: c30c330fcf7f2ce9 +Block 0024 [ 20]: c34d6b95046e5d85 +Block 0024 [ 21]: 2be11b238ee6440f +Block 0024 [ 22]: 1a5c6d4f08682679 +Block 0024 [ 23]: a932cb224913a6a0 +Block 0024 [ 24]: c3017b46720b70d5 +Block 0024 [ 25]: 321ba2d126fa85b4 +Block 0024 [ 26]: 8b8a46577b354b9b +Block 0024 [ 27]: 960d623c0fcf928b +Block 0024 [ 28]: 425dc11904ef5d13 +Block 0024 [ 29]: 0bdf7c53e9d6bee5 +Block 0024 [ 30]: c516bc641e4b1f1d +Block 0024 [ 31]: 25f662caf0d04b3d +Block 0024 [ 32]: 5b5591788337116d +Block 0024 [ 33]: 1bb6a3bb7d5d719f +Block 0024 [ 34]: 4f4eac6f99213a41 +Block 0024 [ 35]: 6110dccb11538dab +Block 0024 [ 36]: fe3a9bcf6bae2aeb +Block 0024 [ 37]: 0e4eeb46d2241e19 +Block 0024 [ 38]: 5430d892c2402540 +Block 0024 [ 39]: 7300cf1e7395132c +Block 0024 [ 40]: 9eef4a35f6a3434b +Block 0024 [ 41]: 5de169249ac21ed4 +Block 0024 [ 42]: dd5bcbfb73fbac29 +Block 0024 [ 43]: 9a519a7819957bb5 +Block 0024 [ 44]: 43a764312cc8eb3c +Block 0024 [ 45]: 90415d896ca55079 +Block 0024 [ 46]: 9c164d7287a565a2 +Block 0024 [ 47]: 772a76696f95564c +Block 0024 [ 48]: 8b7ce044b06ecd47 +Block 0024 [ 49]: f06ef02dad18d78e +Block 0024 [ 50]: 0bc55e7139bb155a +Block 0024 [ 51]: 10b453718a9a703b +Block 0024 [ 52]: 86142a57693f45d2 +Block 0024 [ 53]: 6aef05ae9239a7cc +Block 0024 [ 54]: 64a39acbeb568504 +Block 0024 [ 55]: 7ff67b699718e578 +Block 0024 [ 56]: cd937dff7a44924b +Block 0024 [ 57]: 898fb355fdfeb447 +Block 0024 [ 58]: b8e6d5c6c740496a +Block 0024 [ 59]: e94a587019efa9e7 +Block 0024 [ 60]: b4ab7648fbeaa80a +Block 0024 [ 61]: 06ffb6590f1a5d03 +Block 0024 [ 62]: 3c5471d0243bf38c +Block 0024 [ 63]: a69751062e586e77 +Block 0024 [ 64]: 15fd3817247a48d4 +Block 0024 [ 65]: cf28aba007081d83 +Block 0024 [ 66]: f945831954967149 +Block 0024 [ 67]: 69fbe1a2a75f20d5 +Block 0024 [ 68]: 4e99a17284e7b791 +Block 0024 [ 69]: cf192f2db04ea91c +Block 0024 [ 70]: 052810ee50fe71b7 +Block 0024 [ 71]: 8a2545a5e11b3b73 +Block 0024 [ 72]: c95cf992b14eeb3f +Block 0024 [ 73]: b9c6c0d5db9b389a +Block 0024 [ 74]: d6a69487f68b0a3f +Block 0024 [ 75]: 6627c4401d399868 +Block 0024 [ 76]: dbecbe752ef44c3f +Block 0024 [ 77]: 56107ba6bba3b5e6 +Block 0024 [ 78]: 1efa55d9357e3c36 +Block 0024 [ 79]: 75c196453b59d5d8 +Block 0024 [ 80]: 075c84f5c4220859 +Block 0024 [ 81]: 1ee5ed8b313d643c +Block 0024 [ 82]: a317ba82d759163f +Block 0024 [ 83]: 35cd189af03482ec +Block 0024 [ 84]: ac634c2f4243c07e +Block 0024 [ 85]: 79d3939c35b5089c +Block 0024 [ 86]: b710ad495a2cbb68 +Block 0024 [ 87]: 369aaf0dff97c5ba +Block 0024 [ 88]: cc006a1073be4438 +Block 0024 [ 89]: 572432551b3263c3 +Block 0024 [ 90]: f4f77e3d2bcd718e +Block 0024 [ 91]: ef501a909b51cded +Block 0024 [ 92]: 3976ade1b6c3aba2 +Block 0024 [ 93]: 2edb1dbaa3bf1291 +Block 0024 [ 94]: 4049b2246d256e2c +Block 0024 [ 95]: 61ecd1c32040d453 +Block 0024 [ 96]: 95b0d49df09785e3 +Block 0024 [ 97]: 11a5fc067b184817 +Block 0024 [ 98]: e61a1c43133192b5 +Block 0024 [ 99]: 98d2b7f72d011248 +Block 0024 [100]: b7cb87305e2c2d6c +Block 0024 [101]: 3ecd32c1442f0ba0 +Block 0024 [102]: 4b2b29d933d1a0ba +Block 0024 [103]: 082d6c40ec561561 +Block 0024 [104]: d0367dcd61953e5d +Block 0024 [105]: 5f5fdc6102d5f068 +Block 0024 [106]: 03f9d3ad8a170315 +Block 0024 [107]: 1190264775912229 +Block 0024 [108]: c05460add736d870 +Block 0024 [109]: 25549b26ee5ff9f9 +Block 0024 [110]: 813ace59e299a68d +Block 0024 [111]: 6e37401ff41cf522 +Block 0024 [112]: 147bc89d451108eb +Block 0024 [113]: 0d7cda879c204b37 +Block 0024 [114]: 123e210727972bd8 +Block 0024 [115]: 6d883176b8208687 +Block 0024 [116]: 8e357a934b760e90 +Block 0024 [117]: db5d53313dca142a +Block 0024 [118]: 75e330f8c2124699 +Block 0024 [119]: 4a19313f121fca58 +Block 0024 [120]: 7ff60a770158fa90 +Block 0024 [121]: 3c0a19b1a1f5d2b5 +Block 0024 [122]: 652f82db23b0a84d +Block 0024 [123]: 97c8cc772d1a046a +Block 0024 [124]: 3d344d83dd1222f2 +Block 0024 [125]: 36b1311e5f306e76 +Block 0024 [126]: 4d0e2efe680dac8a +Block 0024 [127]: 04f7d812aa2eaeaa +Block 0025 [ 0]: c02432f28c2417d3 +Block 0025 [ 1]: df87602337c3a6f9 +Block 0025 [ 2]: 5110847f56262cec +Block 0025 [ 3]: 667874afa6398847 +Block 0025 [ 4]: fce31cfadf459e4d +Block 0025 [ 5]: 66f6b0e60c20429f +Block 0025 [ 6]: 46e276fafd0f6fa8 +Block 0025 [ 7]: f18d5cea31632fd7 +Block 0025 [ 8]: 2c35e2d80febaebe +Block 0025 [ 9]: b715f95b99a138dd +Block 0025 [ 10]: e3ce6ad753f97bb7 +Block 0025 [ 11]: 0b1c03d9e3055dd5 +Block 0025 [ 12]: c81cfc50ea63ed16 +Block 0025 [ 13]: 0f0efa659cc7a0d5 +Block 0025 [ 14]: 1f22de1b208d8902 +Block 0025 [ 15]: 7a54fe2921bb3c5b +Block 0025 [ 16]: 459491d187d5d127 +Block 0025 [ 17]: 57835c920fa586de +Block 0025 [ 18]: a0e9bdbdbc618028 +Block 0025 [ 19]: 8690ca28ab9eb4dc +Block 0025 [ 20]: d2b3717338e9dab5 +Block 0025 [ 21]: 5517d82ff815a3d4 +Block 0025 [ 22]: 61d2473ffb17c7d8 +Block 0025 [ 23]: e17a2341eb0c6cd6 +Block 0025 [ 24]: 739a0048cc303c17 +Block 0025 [ 25]: a4851011974f86eb +Block 0025 [ 26]: 8ae3ad2f3ffa111c +Block 0025 [ 27]: e8af30509554ec6d +Block 0025 [ 28]: c57fbf894b4fd6c0 +Block 0025 [ 29]: b95b55c2cb11472a +Block 0025 [ 30]: 6f008cc63addd4ff +Block 0025 [ 31]: 1dc3088cea2a1b22 +Block 0025 [ 32]: 84633af6989cf352 +Block 0025 [ 33]: 17a125e0c3b5c2c1 +Block 0025 [ 34]: 4def7ed3f310945a +Block 0025 [ 35]: 2d4ce7d225767a3b +Block 0025 [ 36]: b0d6d5d58b2a27bc +Block 0025 [ 37]: 417f22c60aa21e5e +Block 0025 [ 38]: fc956d2285a9df13 +Block 0025 [ 39]: b8b540b099f63f9c +Block 0025 [ 40]: 16b8b55c4bc899c9 +Block 0025 [ 41]: 55d749c549a67d03 +Block 0025 [ 42]: 06de19aade179b34 +Block 0025 [ 43]: f61325120460b6d1 +Block 0025 [ 44]: 2a435584cc068deb +Block 0025 [ 45]: 4cda20238b6d5ad3 +Block 0025 [ 46]: b9737adb88b005db +Block 0025 [ 47]: 4508c56a58d8ae5e +Block 0025 [ 48]: 0482d6af7fbea373 +Block 0025 [ 49]: 6585dfa97dd12063 +Block 0025 [ 50]: f93072a78e60443c +Block 0025 [ 51]: 9f3b8e80ceb2be48 +Block 0025 [ 52]: ac3dca4c9351e194 +Block 0025 [ 53]: e7f631ef15301c18 +Block 0025 [ 54]: 68728ff86e8a4194 +Block 0025 [ 55]: f03ff7621a6d5870 +Block 0025 [ 56]: 3accf9ea2059eecc +Block 0025 [ 57]: 7a40cf8588638006 +Block 0025 [ 58]: 350f2d401ea54bb1 +Block 0025 [ 59]: ca51085f93522a79 +Block 0025 [ 60]: 5f399b01bac94b46 +Block 0025 [ 61]: 9e368d5a39e1fb12 +Block 0025 [ 62]: bb2416c37abcc1b3 +Block 0025 [ 63]: 19dc1cd6f4a76c4b +Block 0025 [ 64]: fbd4a85f08b0b9e1 +Block 0025 [ 65]: 19e05bf1c8e5908d +Block 0025 [ 66]: a3580dba7331f036 +Block 0025 [ 67]: e5e1f78a4ba3c135 +Block 0025 [ 68]: df3942721112d8fc +Block 0025 [ 69]: 9f6d750b6aad4e32 +Block 0025 [ 70]: ef21ed902d825a07 +Block 0025 [ 71]: 02229fc7704f4ce6 +Block 0025 [ 72]: cc9f877c1a7fbb28 +Block 0025 [ 73]: 585758a87439684a +Block 0025 [ 74]: d683487687b26588 +Block 0025 [ 75]: 557a58c22b055c6b +Block 0025 [ 76]: a2fc0615b68bd40d +Block 0025 [ 77]: 87359f418f519671 +Block 0025 [ 78]: 0fc028f7e8906d85 +Block 0025 [ 79]: bb95f948e6dfcdcf +Block 0025 [ 80]: 6965ad87b5767d38 +Block 0025 [ 81]: 2d8901cf61c109a4 +Block 0025 [ 82]: c70396ce64fca092 +Block 0025 [ 83]: d8fe94a458caa96a +Block 0025 [ 84]: 2eb3aa977607b5da +Block 0025 [ 85]: 46a0d02635179182 +Block 0025 [ 86]: 4e4a181bb6863f9c +Block 0025 [ 87]: 83e9577ebf6541b7 +Block 0025 [ 88]: 6ad5847b07e2d7e4 +Block 0025 [ 89]: e72aba6841351302 +Block 0025 [ 90]: 71430efde4cc5e33 +Block 0025 [ 91]: 7929e91d90beb2d3 +Block 0025 [ 92]: bd32d8a056d5015a +Block 0025 [ 93]: 151c1a43811166be +Block 0025 [ 94]: 375388f1993cc412 +Block 0025 [ 95]: 7d2bf3945ffa18a3 +Block 0025 [ 96]: b14ba53feffbd4aa +Block 0025 [ 97]: 1247e167acbfcb9a +Block 0025 [ 98]: 0681b2a261a84b3e +Block 0025 [ 99]: e442452a213a150f +Block 0025 [100]: a6b905c8a0123984 +Block 0025 [101]: c100981f0d06b5c4 +Block 0025 [102]: 8bfd02fe184df9fb +Block 0025 [103]: ddde8aeba5183593 +Block 0025 [104]: 32db716a84582a8a +Block 0025 [105]: ac355eedc7f49408 +Block 0025 [106]: 3da2b0d8519c1b15 +Block 0025 [107]: dac49f353fddaa69 +Block 0025 [108]: bd7f699cff3533a3 +Block 0025 [109]: 00b566b84c3484ee +Block 0025 [110]: c17836603b52c2bd +Block 0025 [111]: 0ccb3ebedcc8521d +Block 0025 [112]: 5d6354d205c2f95b +Block 0025 [113]: a0739f76d327a0ae +Block 0025 [114]: 87f95a702c784a57 +Block 0025 [115]: 3cbb3370f55e43ea +Block 0025 [116]: 73c8a4fab081f398 +Block 0025 [117]: e396f8aa17ac238a +Block 0025 [118]: b1d821c495c15e82 +Block 0025 [119]: 14a010fec47a0821 +Block 0025 [120]: 7bac85187b17ee2f +Block 0025 [121]: 747e057340c77098 +Block 0025 [122]: 063a1073e710e631 +Block 0025 [123]: 50486c906b695b0e +Block 0025 [124]: 0c21d4640f2ebf12 +Block 0025 [125]: 56c75fbca558ff8f +Block 0025 [126]: ed1f21c46ca001a2 +Block 0025 [127]: 0655ca00aa6cf206 +Block 0026 [ 0]: f494004f57652dfb +Block 0026 [ 1]: bc7e125318991a1b +Block 0026 [ 2]: e0bca0c2987576a7 +Block 0026 [ 3]: b50d0ad8d594113a +Block 0026 [ 4]: 008b0507da0f62da +Block 0026 [ 5]: 1e2005c9d8a76b37 +Block 0026 [ 6]: d87490552095e57a +Block 0026 [ 7]: 1d0c4a322d90cf92 +Block 0026 [ 8]: 7f7e3e3b8f23b544 +Block 0026 [ 9]: a53ea6aee892f339 +Block 0026 [ 10]: c0db804430533d72 +Block 0026 [ 11]: ef53afbe282d23bf +Block 0026 [ 12]: a14a274b4211571c +Block 0026 [ 13]: e92d574a0220dc63 +Block 0026 [ 14]: d8e73b91c7451253 +Block 0026 [ 15]: cf66dab9ed5f2d0d +Block 0026 [ 16]: fcf7f593af1ed8b5 +Block 0026 [ 17]: fe08b6e491f27c07 +Block 0026 [ 18]: 3735fb0c10e76f9d +Block 0026 [ 19]: 1e1cd603e9e24d57 +Block 0026 [ 20]: f213036e8ae6d3d1 +Block 0026 [ 21]: 203d48f8758f733b +Block 0026 [ 22]: c60391b6f63feb61 +Block 0026 [ 23]: dfb7479caaa34a7a +Block 0026 [ 24]: 4905e186a30eb530 +Block 0026 [ 25]: c381ad611910a956 +Block 0026 [ 26]: 9cd4cdf8fcbf4f55 +Block 0026 [ 27]: 7c5391a58a474b18 +Block 0026 [ 28]: 10f8ddbc2b08af01 +Block 0026 [ 29]: 5c58a04b90dd99c4 +Block 0026 [ 30]: b54eb06dd4f3b121 +Block 0026 [ 31]: 52c10afe187e6003 +Block 0026 [ 32]: 0a456b9ce2a1aa7f +Block 0026 [ 33]: fca647d9bbfd8a6a +Block 0026 [ 34]: ed1828078039d0c5 +Block 0026 [ 35]: d8acca3425d069d2 +Block 0026 [ 36]: 8d63e69d7caaa236 +Block 0026 [ 37]: 3f435d73b7c96834 +Block 0026 [ 38]: b8e18b5f7a57c987 +Block 0026 [ 39]: ae572beb041f8112 +Block 0026 [ 40]: 62f2f9c8e8eb29ba +Block 0026 [ 41]: 4884560ebf91effe +Block 0026 [ 42]: 06fc59f34d083054 +Block 0026 [ 43]: bea4929f625e12ef +Block 0026 [ 44]: d7f563446d7a99f3 +Block 0026 [ 45]: 991b0cb2578290fb +Block 0026 [ 46]: 37ffd37e3981ceb6 +Block 0026 [ 47]: 409c1563471126d4 +Block 0026 [ 48]: da9781a2c63abf64 +Block 0026 [ 49]: 0137c07fdbbcc294 +Block 0026 [ 50]: a8820a87393425ad +Block 0026 [ 51]: c81a5d873fe20ba4 +Block 0026 [ 52]: 94ced49aed91e7a7 +Block 0026 [ 53]: 017404af79573a0b +Block 0026 [ 54]: cc9e2a7c25237895 +Block 0026 [ 55]: 12b48ebd3118e19b +Block 0026 [ 56]: 9fc306d0849cd11d +Block 0026 [ 57]: 3d336e0e4429ca67 +Block 0026 [ 58]: aff7b98ac4959a06 +Block 0026 [ 59]: fd6785fd204e650d +Block 0026 [ 60]: d493f601d16a4f5f +Block 0026 [ 61]: 610f4837f2db6f9b +Block 0026 [ 62]: b82085a6fd0ece16 +Block 0026 [ 63]: e8ea02d44b708977 +Block 0026 [ 64]: 428531978f14951a +Block 0026 [ 65]: 9507b6cca5306aa4 +Block 0026 [ 66]: f857f06106ad3bee +Block 0026 [ 67]: 55944ea007f7863b +Block 0026 [ 68]: 67f2e7babb7a331f +Block 0026 [ 69]: 0252b8482b88acce +Block 0026 [ 70]: db6a01e15738a091 +Block 0026 [ 71]: 1b04caba54505b61 +Block 0026 [ 72]: b0e0f8fb29a8479c +Block 0026 [ 73]: aa670af602c88243 +Block 0026 [ 74]: bace61d13223063d +Block 0026 [ 75]: fa19f9fa8261fc1d +Block 0026 [ 76]: f6761126d8b2e7b9 +Block 0026 [ 77]: 0f210f240f996092 +Block 0026 [ 78]: e6fad1e1ece1bf4e +Block 0026 [ 79]: 16dcef2a0c6338ea +Block 0026 [ 80]: 30ecd57a88f7a7a0 +Block 0026 [ 81]: 0e4c0c7cd4f24d0c +Block 0026 [ 82]: aaa080d230cff24a +Block 0026 [ 83]: 6dea8082160fbbe6 +Block 0026 [ 84]: 9ff45a0bcb4e0713 +Block 0026 [ 85]: 0b1e282a7d2b3a90 +Block 0026 [ 86]: f27f08967fb050fc +Block 0026 [ 87]: 0151762582ff58d0 +Block 0026 [ 88]: 974e23cb4f05ba88 +Block 0026 [ 89]: 0a4a783b22dcf61d +Block 0026 [ 90]: 45e31764f17f08f9 +Block 0026 [ 91]: 86f9f88e402bff39 +Block 0026 [ 92]: 2ea75c01660b1fab +Block 0026 [ 93]: f1bf9d413751c414 +Block 0026 [ 94]: f2e7e9c1b77090d2 +Block 0026 [ 95]: 71130e18edf585b1 +Block 0026 [ 96]: 6bc7fa4a4f49b58d +Block 0026 [ 97]: 1a04dbebef1d435e +Block 0026 [ 98]: be6c4fb73bbae267 +Block 0026 [ 99]: 32d9b418f26ca8c9 +Block 0026 [100]: f370c6ec416fea29 +Block 0026 [101]: c87d56d2cfd5c25e +Block 0026 [102]: b556a8dff75b4350 +Block 0026 [103]: 6cf4866f115bc1ba +Block 0026 [104]: a5ea80b67d3eb546 +Block 0026 [105]: 32408068477f9617 +Block 0026 [106]: 53ed9037f0ab6c6e +Block 0026 [107]: 551c462f6733f83e +Block 0026 [108]: 13d45815ff2fd652 +Block 0026 [109]: ec1a210c404d6357 +Block 0026 [110]: 4b5b3c04beb5bd39 +Block 0026 [111]: 43b1945dd83a0494 +Block 0026 [112]: 850af53380605933 +Block 0026 [113]: 8b6bd0fec9d3b815 +Block 0026 [114]: 66c9634a5e8c9fb5 +Block 0026 [115]: 446198f1911917a3 +Block 0026 [116]: 0611350c10b0d1f7 +Block 0026 [117]: 3a7bcd48a10a0605 +Block 0026 [118]: ef1451b6313c81dc +Block 0026 [119]: a7aedb9836bce03c +Block 0026 [120]: 59649ed78381cfd3 +Block 0026 [121]: f9e660ad51495ee1 +Block 0026 [122]: 3d614c33fb37cfe8 +Block 0026 [123]: e28e1e9046aa5e92 +Block 0026 [124]: 9e3cc15ddcaf388f +Block 0026 [125]: 298db70bfacfcecc +Block 0026 [126]: 561e51e85006f3e2 +Block 0026 [127]: 002328b2a64d32de +Block 0027 [ 0]: 6a36e474ffc79b28 +Block 0027 [ 1]: 23d140862dbcc4b2 +Block 0027 [ 2]: 93463b5d7c02a877 +Block 0027 [ 3]: b7e8766c02109d51 +Block 0027 [ 4]: 7415cf4fddc0f993 +Block 0027 [ 5]: 7b769c8a60707898 +Block 0027 [ 6]: 06506a25457a2e6b +Block 0027 [ 7]: a65e8cdc5e651394 +Block 0027 [ 8]: 7da1e70686b4a92b +Block 0027 [ 9]: b17edc4e65c4c678 +Block 0027 [ 10]: bec581f37d2834fb +Block 0027 [ 11]: 082185c8ae0b588f +Block 0027 [ 12]: 23916c8338f8e07e +Block 0027 [ 13]: a99a11467da9428c +Block 0027 [ 14]: a111edfe969ec9bc +Block 0027 [ 15]: d0a76e461410f68a +Block 0027 [ 16]: e37f0624904ef553 +Block 0027 [ 17]: 1088077172f1161a +Block 0027 [ 18]: b376e4c161878402 +Block 0027 [ 19]: d4121c48e0c06c13 +Block 0027 [ 20]: 96fc4febca9c3457 +Block 0027 [ 21]: 25686c76fd01241b +Block 0027 [ 22]: e4f8119ac946d1be +Block 0027 [ 23]: d751327cd43388c3 +Block 0027 [ 24]: a91b144c324f497d +Block 0027 [ 25]: bd2ea57c9df15ca4 +Block 0027 [ 26]: 4e737444370dd320 +Block 0027 [ 27]: faafe5c1916300d9 +Block 0027 [ 28]: 2ab42667cbfc6b89 +Block 0027 [ 29]: afb23472890580d3 +Block 0027 [ 30]: 9713478003ef4a7c +Block 0027 [ 31]: ff9423eabb33c603 +Block 0027 [ 32]: 3d821a656ae4161e +Block 0027 [ 33]: 6db448e9dc48798a +Block 0027 [ 34]: 9669bc7908d86520 +Block 0027 [ 35]: 59828038647baa96 +Block 0027 [ 36]: c403678a1b89ac4b +Block 0027 [ 37]: d3b58972a9491d6f +Block 0027 [ 38]: 99169151602ed624 +Block 0027 [ 39]: c1d2702f140f997d +Block 0027 [ 40]: caf644fd739cd0ab +Block 0027 [ 41]: be2632b181d35323 +Block 0027 [ 42]: 8230428a04d6b83f +Block 0027 [ 43]: dbda70b473488888 +Block 0027 [ 44]: 2686f0b232aba4b3 +Block 0027 [ 45]: 9f7c2482dba52baf +Block 0027 [ 46]: e1ccb89ae28e33bc +Block 0027 [ 47]: d0ea305527865a20 +Block 0027 [ 48]: 4273f862776fb381 +Block 0027 [ 49]: 5138176b7f8b1a41 +Block 0027 [ 50]: 741205d181d13544 +Block 0027 [ 51]: ecfcb8ee67b67e55 +Block 0027 [ 52]: 1533882648e638bc +Block 0027 [ 53]: 03518b85a85d0338 +Block 0027 [ 54]: 431d11df78672d82 +Block 0027 [ 55]: 75b2b7116f34ecd9 +Block 0027 [ 56]: 9b51ce7a4981f2a0 +Block 0027 [ 57]: 7a5ada2b2f45fe13 +Block 0027 [ 58]: 10cd88ba6d9f0f20 +Block 0027 [ 59]: 49fb947141ac117b +Block 0027 [ 60]: 2094194379412634 +Block 0027 [ 61]: 1e9a4382d1ca8191 +Block 0027 [ 62]: 457cabdfeb42ccd6 +Block 0027 [ 63]: ad924df310f759a7 +Block 0027 [ 64]: 3e7d1fdc291df527 +Block 0027 [ 65]: b8cacac133a45f3d +Block 0027 [ 66]: 037581754bfd253c +Block 0027 [ 67]: ca53c63794ee1736 +Block 0027 [ 68]: 714981936dd5487c +Block 0027 [ 69]: bf620ebbc920a960 +Block 0027 [ 70]: 835eebf18d80d70b +Block 0027 [ 71]: 174364bafd7c500f +Block 0027 [ 72]: 52e32e79e987e339 +Block 0027 [ 73]: ea2ee4ae5c85f9b7 +Block 0027 [ 74]: 9082578fc32e5522 +Block 0027 [ 75]: 49e1f8e5fec29c66 +Block 0027 [ 76]: bc22280c92dc8017 +Block 0027 [ 77]: 4651bc598c0d68a2 +Block 0027 [ 78]: 9f7f11d764f462b0 +Block 0027 [ 79]: bbf0fdc8d0ed58cb +Block 0027 [ 80]: d21fde1da96d257f +Block 0027 [ 81]: b92685188bd54f18 +Block 0027 [ 82]: 24795ac1884dff14 +Block 0027 [ 83]: e4cf58770c7a3eb7 +Block 0027 [ 84]: 32524079585dc4be +Block 0027 [ 85]: 8d312885fca8e395 +Block 0027 [ 86]: 235d50fc5fb93f7c +Block 0027 [ 87]: 9f7ebfa431d9c8f1 +Block 0027 [ 88]: b36af9bb14781ae2 +Block 0027 [ 89]: 86026a8db22332b0 +Block 0027 [ 90]: 08585886343fc383 +Block 0027 [ 91]: 9c6e402057a0aaf2 +Block 0027 [ 92]: 5defa125fd09ed1b +Block 0027 [ 93]: 5ce30d50933c40f8 +Block 0027 [ 94]: 6b1e678501b2c9d4 +Block 0027 [ 95]: 8725a68615e4d34f +Block 0027 [ 96]: 8c5cdfb8d3795da0 +Block 0027 [ 97]: 5a75edcd8c6d26ab +Block 0027 [ 98]: 88bbf5bd5f9321a0 +Block 0027 [ 99]: d01b8e4553dacfcc +Block 0027 [100]: 6d44604ed05684e3 +Block 0027 [101]: c1d9efbf51f08c0f +Block 0027 [102]: d32861a79d3d3591 +Block 0027 [103]: 0f5e0fdfe060ad48 +Block 0027 [104]: 1aa10c6249e9c203 +Block 0027 [105]: 034b3cd30d6f47db +Block 0027 [106]: 7bbbfa8311733087 +Block 0027 [107]: 218f81120456f524 +Block 0027 [108]: d7068a533876beca +Block 0027 [109]: 903b66e838ceb3a8 +Block 0027 [110]: 30b1296695f436b2 +Block 0027 [111]: c96450f5b09229e7 +Block 0027 [112]: 279d31b6dd521c73 +Block 0027 [113]: c49dd63f87db05e5 +Block 0027 [114]: 4f4183be215209e7 +Block 0027 [115]: 0618248e89512325 +Block 0027 [116]: 1630e2f1fb6f8c9d +Block 0027 [117]: cffa863752fdff8b +Block 0027 [118]: 277bb464fe923265 +Block 0027 [119]: b69f98e413055782 +Block 0027 [120]: be757ac9e2b1afe9 +Block 0027 [121]: 1d505a0e9d9d71f8 +Block 0027 [122]: 851fecc06495f5d8 +Block 0027 [123]: f7130c2a62201dec +Block 0027 [124]: f3a890c658c9a653 +Block 0027 [125]: 913ae2dd0b1b4348 +Block 0027 [126]: dcf627b503666a13 +Block 0027 [127]: 03c2439ffb970ee6 +Block 0028 [ 0]: ca58222c0335fad4 +Block 0028 [ 1]: 9c72e23adf9c0d86 +Block 0028 [ 2]: 1b6707cf48c561d1 +Block 0028 [ 3]: 2b6cda976b746358 +Block 0028 [ 4]: d7a615afa3f55997 +Block 0028 [ 5]: 013fa2f590c128bc +Block 0028 [ 6]: 4cd3353543de39e0 +Block 0028 [ 7]: 61abbc1a37e87eed +Block 0028 [ 8]: 5cb0f9c53b2cfc8e +Block 0028 [ 9]: 86a2c36cadd9f0dd +Block 0028 [ 10]: 238f6eec4bce7605 +Block 0028 [ 11]: cf1d0ef7179792bc +Block 0028 [ 12]: 1df1c207447534c9 +Block 0028 [ 13]: 4201704843e7c5c9 +Block 0028 [ 14]: 9626a9eb6fe0ebc9 +Block 0028 [ 15]: 86e48febc40a64ed +Block 0028 [ 16]: a20402933b241b8a +Block 0028 [ 17]: 6f9031d281bac12b +Block 0028 [ 18]: f45a47b2853694ba +Block 0028 [ 19]: 917a448aef9f4195 +Block 0028 [ 20]: e046f6a5473fb03f +Block 0028 [ 21]: 479b43fc599c24ec +Block 0028 [ 22]: 0abbaa3b84d91c79 +Block 0028 [ 23]: df37b61116fe98d5 +Block 0028 [ 24]: 519ebd6232590101 +Block 0028 [ 25]: 783c4a632e6a81a8 +Block 0028 [ 26]: df754093dd079428 +Block 0028 [ 27]: faa49281ccc74f7f +Block 0028 [ 28]: afe16685c78a1dd6 +Block 0028 [ 29]: 051c80fb6fa24c14 +Block 0028 [ 30]: 08072ecbb0e8f1e0 +Block 0028 [ 31]: 499ac14bf47b5a27 +Block 0028 [ 32]: 5d421f66de4c0e98 +Block 0028 [ 33]: 077ce2dc6718cb84 +Block 0028 [ 34]: f48ab05c57970f5c +Block 0028 [ 35]: 6075db6f8cdd475d +Block 0028 [ 36]: 7c6a41c738738787 +Block 0028 [ 37]: c5f5a1740f2fb839 +Block 0028 [ 38]: 08bc03d5f44201ec +Block 0028 [ 39]: 199605d142f2b604 +Block 0028 [ 40]: 01c3c9f476c868ba +Block 0028 [ 41]: faf406aee9364a54 +Block 0028 [ 42]: 619f3f52adacd452 +Block 0028 [ 43]: 0ecebc2f592ab9c7 +Block 0028 [ 44]: 1d96a7c554184a37 +Block 0028 [ 45]: fda76281db32047b +Block 0028 [ 46]: 269961a043864803 +Block 0028 [ 47]: e40a3252cb410e50 +Block 0028 [ 48]: d5c5b3ac3d004a7a +Block 0028 [ 49]: f47f6d2f7aefe242 +Block 0028 [ 50]: acf22ef8b04c3b2c +Block 0028 [ 51]: 5075c6cab2c6f889 +Block 0028 [ 52]: 0f660a376a8d2aa0 +Block 0028 [ 53]: 34a32efc55b524a6 +Block 0028 [ 54]: 7ff61a76b03cb19e +Block 0028 [ 55]: f74c34ccf42e4b1f +Block 0028 [ 56]: 16f872636b8352b5 +Block 0028 [ 57]: 3201a2c20a72ca41 +Block 0028 [ 58]: c28509cb9041444e +Block 0028 [ 59]: f36347f3390a1e11 +Block 0028 [ 60]: ab7c16ee3e5803a5 +Block 0028 [ 61]: 0de99e30139c5009 +Block 0028 [ 62]: 6d17d8c75edb2365 +Block 0028 [ 63]: cfb612cdaf8f4af7 +Block 0028 [ 64]: f4df991c468e2438 +Block 0028 [ 65]: 2899f895e46033fc +Block 0028 [ 66]: 75ad9f046f559763 +Block 0028 [ 67]: cbec52939ec63cda +Block 0028 [ 68]: c7a89aea82d11cfd +Block 0028 [ 69]: b01c19568317176c +Block 0028 [ 70]: 0d6c0a5b0484270d +Block 0028 [ 71]: 9bb0780452840077 +Block 0028 [ 72]: 3f2c4a2039120ffc +Block 0028 [ 73]: 987360f6050272c0 +Block 0028 [ 74]: 801dfe8bb2f2679e +Block 0028 [ 75]: 220a91558f9fb887 +Block 0028 [ 76]: f9412b28325f93fe +Block 0028 [ 77]: bd02fcadc4e5ba2b +Block 0028 [ 78]: 0db3de28db8c9ac9 +Block 0028 [ 79]: 368f26c4652a64dd +Block 0028 [ 80]: d6c337bf5f03ac89 +Block 0028 [ 81]: 4c714a4305e3aab9 +Block 0028 [ 82]: e6af815ca778f926 +Block 0028 [ 83]: e1859b016348fdbc +Block 0028 [ 84]: b8f5b3c3c49c4cf3 +Block 0028 [ 85]: 670773281ca0da2a +Block 0028 [ 86]: 920d99d5e17eeb64 +Block 0028 [ 87]: 3a864dcfa57eb353 +Block 0028 [ 88]: 0d1b7223e949754f +Block 0028 [ 89]: 0bfc2f27302028c6 +Block 0028 [ 90]: ebca4178f60078f8 +Block 0028 [ 91]: 4ccc4d65bbdc0bed +Block 0028 [ 92]: 8e5363eb76fb3293 +Block 0028 [ 93]: 093c5e82b6095b67 +Block 0028 [ 94]: d0068768e1bdec5b +Block 0028 [ 95]: 0a00c488260db6d5 +Block 0028 [ 96]: 7f7d0d7ac47a81ee +Block 0028 [ 97]: 3ae04e17dd01c279 +Block 0028 [ 98]: f8e6ac29f780be7f +Block 0028 [ 99]: 19c50b7052ac4f44 +Block 0028 [100]: 5303f461feccb497 +Block 0028 [101]: 1854a6ec35aee128 +Block 0028 [102]: db1b041a1ee7a79d +Block 0028 [103]: 7e81f884f7a0a6fc +Block 0028 [104]: bf9bb929bcb9e874 +Block 0028 [105]: 336e80069f3dedd2 +Block 0028 [106]: 035b55ca20c76598 +Block 0028 [107]: b293f79a77cda448 +Block 0028 [108]: 9a763760c91b6714 +Block 0028 [109]: 13302f9a51a34c5a +Block 0028 [110]: 6b2eb8d6aa3b5277 +Block 0028 [111]: bf17d582179db4ce +Block 0028 [112]: 6357d1d0595e0b06 +Block 0028 [113]: 0ea204e3887f1b12 +Block 0028 [114]: ab106f68ffe98952 +Block 0028 [115]: edccf1f4a537c038 +Block 0028 [116]: 4dd30ae007433edb +Block 0028 [117]: 70bf808ff6ed6e4e +Block 0028 [118]: 1bc10a2d27b5e5fc +Block 0028 [119]: cc9bafd348bf29df +Block 0028 [120]: 4958087b121642b4 +Block 0028 [121]: 8ffec5b4c6f60cc5 +Block 0028 [122]: 6d94d7276ac67cee +Block 0028 [123]: 4a878a121591ea5c +Block 0028 [124]: e5ae3c3689f8ab9f +Block 0028 [125]: 779480dd69065bb8 +Block 0028 [126]: be6df4df52c18560 +Block 0028 [127]: 6f1fb1a9cf64874f +Block 0029 [ 0]: 0207741c8146dfa3 +Block 0029 [ 1]: 406a47b4c1e4b7cf +Block 0029 [ 2]: ab350bd11dae3ab1 +Block 0029 [ 3]: b5fcdce3f5af5c51 +Block 0029 [ 4]: 03b1acacafc20140 +Block 0029 [ 5]: 2a425cee09634812 +Block 0029 [ 6]: e552ee3615a33f43 +Block 0029 [ 7]: 5befe9ff059e7bfb +Block 0029 [ 8]: 6794a847fab871cc +Block 0029 [ 9]: 8ff9bbbcffb980a5 +Block 0029 [ 10]: 7cb0bc045830ef7b +Block 0029 [ 11]: 859d5d5109ac4f06 +Block 0029 [ 12]: e8250fd2cc3dcdef +Block 0029 [ 13]: c3a134684c9dd60e +Block 0029 [ 14]: 227e5b09f927b571 +Block 0029 [ 15]: 68c856cec2a47082 +Block 0029 [ 16]: fce4acd1eb9c2fd6 +Block 0029 [ 17]: 1874384733f72647 +Block 0029 [ 18]: 0bb44bf1fef26640 +Block 0029 [ 19]: b6b304e2fa351043 +Block 0029 [ 20]: 751d92d62903ef35 +Block 0029 [ 21]: e78b53c855c5c602 +Block 0029 [ 22]: 0812dcb3268b6d78 +Block 0029 [ 23]: bc792d9a692eafd5 +Block 0029 [ 24]: 33b96da127e9ce75 +Block 0029 [ 25]: 70e99f06a02da8be +Block 0029 [ 26]: a53adf7c364dc22c +Block 0029 [ 27]: e141512a24b1f401 +Block 0029 [ 28]: cd3ca1c7a59cd510 +Block 0029 [ 29]: 0bd3b7d6078e4eed +Block 0029 [ 30]: ab7c6554f4c11436 +Block 0029 [ 31]: 89914cb1067af8ee +Block 0029 [ 32]: c75b936a76746c31 +Block 0029 [ 33]: 024785728db3a789 +Block 0029 [ 34]: 9e58b0afbfdfeb19 +Block 0029 [ 35]: 373f25548779c51f +Block 0029 [ 36]: 543724293d0d8c2d +Block 0029 [ 37]: 62aeaa9b19808110 +Block 0029 [ 38]: 93f21989d783801c +Block 0029 [ 39]: 775dffbce376deb4 +Block 0029 [ 40]: 6f426ae9af1c783e +Block 0029 [ 41]: 48bf94b9dbd7ee4b +Block 0029 [ 42]: f094f91d25ee627d +Block 0029 [ 43]: 9a827b7dc6e0896d +Block 0029 [ 44]: 7910f54893fa8fc3 +Block 0029 [ 45]: 37b30dc28c6049bc +Block 0029 [ 46]: 29ef9da058cb5b84 +Block 0029 [ 47]: 5c403d77779566e1 +Block 0029 [ 48]: 4f409c72a1e0fdec +Block 0029 [ 49]: ae587790d92a03af +Block 0029 [ 50]: 69e0a91db119465e +Block 0029 [ 51]: 0ee30615e5df5ecc +Block 0029 [ 52]: 3dca48a0c98120d6 +Block 0029 [ 53]: 77e254ca3afb9f84 +Block 0029 [ 54]: 7bc434ae14f6f06c +Block 0029 [ 55]: 9775face0be26982 +Block 0029 [ 56]: 6d2f36d11088d913 +Block 0029 [ 57]: 4aa3cc0bff9a1e5c +Block 0029 [ 58]: 005d8f72e50124cf +Block 0029 [ 59]: d76cbf27873f19e3 +Block 0029 [ 60]: 0d4f957d7949663e +Block 0029 [ 61]: 14f198a3447b7039 +Block 0029 [ 62]: 0622617d5f71b2d4 +Block 0029 [ 63]: 8abb43cfcbca2586 +Block 0029 [ 64]: 478b55022fdb873e +Block 0029 [ 65]: 24cd75b9b9e06db9 +Block 0029 [ 66]: 49acbda91ffaa950 +Block 0029 [ 67]: 15c03d8770ed999d +Block 0029 [ 68]: 17a0e368a53308b3 +Block 0029 [ 69]: 4f61904cdaf364f3 +Block 0029 [ 70]: 92db2822da9abc66 +Block 0029 [ 71]: b89ef67c8cd09463 +Block 0029 [ 72]: fdf5ce73da75a752 +Block 0029 [ 73]: 715da75d29a11d0c +Block 0029 [ 74]: 1c4a97738457a7c0 +Block 0029 [ 75]: 01cda83c3413395e +Block 0029 [ 76]: 4a621ae732bad57a +Block 0029 [ 77]: 41f23ad22e523495 +Block 0029 [ 78]: dc7098ac146ea569 +Block 0029 [ 79]: a2cf720400e39c0c +Block 0029 [ 80]: 09aa559ce750a2c7 +Block 0029 [ 81]: 5a44bd0df4be581e +Block 0029 [ 82]: 8a77c840fcaabe6b +Block 0029 [ 83]: bbe29d575a3978ef +Block 0029 [ 84]: 790f91e76c826d67 +Block 0029 [ 85]: c2bceae4dd73f8ba +Block 0029 [ 86]: 683088167d2926ba +Block 0029 [ 87]: 49957770e745d01d +Block 0029 [ 88]: 17b96ee43d3a76c5 +Block 0029 [ 89]: 43328a4e158c81cf +Block 0029 [ 90]: e76baf7b9aef84a3 +Block 0029 [ 91]: d4c264c8a6994714 +Block 0029 [ 92]: 8ee8e576bebec7bf +Block 0029 [ 93]: 6411980b914b9662 +Block 0029 [ 94]: 745acc8565779744 +Block 0029 [ 95]: 30ce9cf530824795 +Block 0029 [ 96]: b78a1629bb41a6d6 +Block 0029 [ 97]: 67ad7c8dc3e08d91 +Block 0029 [ 98]: c0146364b77acb3c +Block 0029 [ 99]: 75bbe8fafef1de11 +Block 0029 [100]: 795f2830cecab6eb +Block 0029 [101]: 3ac583d316cf3a15 +Block 0029 [102]: 9d0b885e2fbcf626 +Block 0029 [103]: c91bea4d5cdd103d +Block 0029 [104]: d9d5df2d889b62cb +Block 0029 [105]: aa660e50a1c8ca3b +Block 0029 [106]: 83ad208abfb4a5db +Block 0029 [107]: 0c41929e4aac98a6 +Block 0029 [108]: 732c3d845a3dd9ad +Block 0029 [109]: 5d90d1e6b10da9ba +Block 0029 [110]: 7f5899546758538e +Block 0029 [111]: 81035b8ef4ccb393 +Block 0029 [112]: 3bce5002a0e42a9e +Block 0029 [113]: 49728c1521571871 +Block 0029 [114]: 2dde86b7d59ec9f6 +Block 0029 [115]: 982676db6df43385 +Block 0029 [116]: 5cba52ad4c42077a +Block 0029 [117]: 0172b3408cbe8d23 +Block 0029 [118]: 3f410a84fb1722f6 +Block 0029 [119]: 85bdb25c8eceda0e +Block 0029 [120]: 4ff1c2d46a2b487b +Block 0029 [121]: 9fe47fbe9734d275 +Block 0029 [122]: 4b396e3adbd6abcc +Block 0029 [123]: 4f2dd219ae0a599d +Block 0029 [124]: bf73abc3293e108c +Block 0029 [125]: 158517dd7f973123 +Block 0029 [126]: 9d70f00766295708 +Block 0029 [127]: 67ad678c811a378e +Block 0030 [ 0]: 1f9e38f15c0b4acf +Block 0030 [ 1]: f0e0a264cd839857 +Block 0030 [ 2]: 50bc35d79237b54e +Block 0030 [ 3]: 3857d320bcefd875 +Block 0030 [ 4]: 2d1318855b016e6c +Block 0030 [ 5]: 967241dbadfdb565 +Block 0030 [ 6]: 800753ca23565b99 +Block 0030 [ 7]: fee608d250770302 +Block 0030 [ 8]: 7dddd4f29e607658 +Block 0030 [ 9]: 819a24edf268fcb2 +Block 0030 [ 10]: 6880a1d3d9812700 +Block 0030 [ 11]: 57d3fc07966300b6 +Block 0030 [ 12]: 8f946b77f29001d7 +Block 0030 [ 13]: bb0abfac9eb9dda3 +Block 0030 [ 14]: 34839f915d84aa17 +Block 0030 [ 15]: 30688be9d1e7e726 +Block 0030 [ 16]: 6b1f946cf0e14b98 +Block 0030 [ 17]: 0b5de2f45696efef +Block 0030 [ 18]: 6fb9961aa06875b7 +Block 0030 [ 19]: 7bc7176c8c9874e2 +Block 0030 [ 20]: 840507101c0c10ec +Block 0030 [ 21]: 8f9fcb5775408171 +Block 0030 [ 22]: b7f561bf6420bf4b +Block 0030 [ 23]: 408d65ea6ace1994 +Block 0030 [ 24]: 72b7b6ad2a8710e1 +Block 0030 [ 25]: b959adeff619c82d +Block 0030 [ 26]: 7b8858d87a632c81 +Block 0030 [ 27]: c8b936af201270e6 +Block 0030 [ 28]: cfe54bccb6a654a6 +Block 0030 [ 29]: 907e9744d4483668 +Block 0030 [ 30]: 8d3199d677ba43d4 +Block 0030 [ 31]: 257ce84b68bad3f2 +Block 0030 [ 32]: c824aa1982671945 +Block 0030 [ 33]: e2e9dd16e403e398 +Block 0030 [ 34]: 1daa88aeb3675d8d +Block 0030 [ 35]: 9c8265c6f92c91e9 +Block 0030 [ 36]: 95e78fae8367fd87 +Block 0030 [ 37]: 68dd4415761ad758 +Block 0030 [ 38]: 1eb7f341ac811efb +Block 0030 [ 39]: a777790a8ef0ba3e +Block 0030 [ 40]: 237e7e319e1876da +Block 0030 [ 41]: 10d59f907a261f1a +Block 0030 [ 42]: 5f6993574dacb849 +Block 0030 [ 43]: 4aafd981472ab898 +Block 0030 [ 44]: 7a39e6aa861f86e4 +Block 0030 [ 45]: de79f33874b17af6 +Block 0030 [ 46]: 5ae77d3ff4d97e32 +Block 0030 [ 47]: bfb9a79eac24988b +Block 0030 [ 48]: cd4b0f3306bc2285 +Block 0030 [ 49]: 79587c4db17ce2d5 +Block 0030 [ 50]: df3c2a26a81def00 +Block 0030 [ 51]: f91aa04a4584fb96 +Block 0030 [ 52]: 319293679662fb6e +Block 0030 [ 53]: 2cf5cb1c39d7e349 +Block 0030 [ 54]: d8c7d314fde62100 +Block 0030 [ 55]: d49acb9f84ddeee0 +Block 0030 [ 56]: b308ba9300dac74d +Block 0030 [ 57]: 56ec31602722bdd4 +Block 0030 [ 58]: 5d31ea5dfd133be3 +Block 0030 [ 59]: 61dfe7872e811d02 +Block 0030 [ 60]: 1a82dbdb52cd4ea4 +Block 0030 [ 61]: 599ddbd51c7386bf +Block 0030 [ 62]: 4186c201a09ea371 +Block 0030 [ 63]: cf5c3bfef67e4229 +Block 0030 [ 64]: d8dcbf137d92f555 +Block 0030 [ 65]: 83e7b079d384deba +Block 0030 [ 66]: 5c92cecdadee4f1f +Block 0030 [ 67]: 02bb23eda398826e +Block 0030 [ 68]: 9f1eaaf0ab692fdd +Block 0030 [ 69]: 3e762c6854d3d4b4 +Block 0030 [ 70]: 3d9920cae2bc168e +Block 0030 [ 71]: 03730d8cf69a8947 +Block 0030 [ 72]: 57e3e8be34628ccf +Block 0030 [ 73]: dc8cc84b253302fa +Block 0030 [ 74]: f34b5dd75cf375ab +Block 0030 [ 75]: eb39e41a160e9bd5 +Block 0030 [ 76]: 19cb451eeae042ac +Block 0030 [ 77]: 31ba85ddb8a465bd +Block 0030 [ 78]: 86493a0e610f4c97 +Block 0030 [ 79]: 2f3a02b6f7c68509 +Block 0030 [ 80]: 5accf78953cbe2f6 +Block 0030 [ 81]: 1a5b00f4a378d40c +Block 0030 [ 82]: d21871f9f4a302dc +Block 0030 [ 83]: 366e91b6368ce852 +Block 0030 [ 84]: 871f4b10870f96b3 +Block 0030 [ 85]: ca76bcbeb17e4388 +Block 0030 [ 86]: 4a9a238334ed233d +Block 0030 [ 87]: d548e679c135e3ec +Block 0030 [ 88]: 14caee6503e8b5c7 +Block 0030 [ 89]: c313e7bdbf043aae +Block 0030 [ 90]: 2ea1a9cb349a2e18 +Block 0030 [ 91]: a66ff32802eee268 +Block 0030 [ 92]: 4f74c552992434ad +Block 0030 [ 93]: 1fb689ea6ebf5016 +Block 0030 [ 94]: c61a5622a5650bdb +Block 0030 [ 95]: bf3f5fa2876962ad +Block 0030 [ 96]: 4a35ba57808f1408 +Block 0030 [ 97]: b9cc98fb701693e8 +Block 0030 [ 98]: 4f0191eeaa9c9104 +Block 0030 [ 99]: fd94c892d297bc01 +Block 0030 [100]: ee5b3c3aec2fc3e6 +Block 0030 [101]: 944c5da066f03024 +Block 0030 [102]: 49bc29ef54fa14c6 +Block 0030 [103]: 103dab1249b26ed0 +Block 0030 [104]: fa3f5194e6aa4932 +Block 0030 [105]: bd5a531ed38fe96e +Block 0030 [106]: 32eb829d00e9e523 +Block 0030 [107]: cd00296881ca0348 +Block 0030 [108]: fa39b8a99f7ab372 +Block 0030 [109]: 614cc3127e419850 +Block 0030 [110]: edeb6ab484faf67f +Block 0030 [111]: 02c355973c574d1d +Block 0030 [112]: 198b58c82f416d64 +Block 0030 [113]: d332fa14092a550a +Block 0030 [114]: bc2317ef3bdb5e88 +Block 0030 [115]: 31bc87b1ed42e2a9 +Block 0030 [116]: a8dd6cdbbb306d5f +Block 0030 [117]: b5c2153c6e5cc25e +Block 0030 [118]: 8aa4063415e7c7ef +Block 0030 [119]: d11033bd5e3cb501 +Block 0030 [120]: d9910a22a988ffee +Block 0030 [121]: c54b0e343365f143 +Block 0030 [122]: b6bac0a513cb7c38 +Block 0030 [123]: 8a797f119a8fa477 +Block 0030 [124]: 8a9fdb5f6f892ef3 +Block 0030 [125]: d4abea5cf9bb068a +Block 0030 [126]: 81388ea4ad703fd7 +Block 0030 [127]: 00ad23051eb6accc +Block 0031 [ 0]: c214853efbb75de4 +Block 0031 [ 1]: aad6885569088f52 +Block 0031 [ 2]: d86f98b36790f5b8 +Block 0031 [ 3]: e77655a17cbb7f4c +Block 0031 [ 4]: 0ecb507ed5dc329a +Block 0031 [ 5]: 5ed932eb7a74d4fa +Block 0031 [ 6]: 4585ba06399f2072 +Block 0031 [ 7]: 1ed9ff754566cca5 +Block 0031 [ 8]: 32a32d4a331b0087 +Block 0031 [ 9]: a3ca9ccdb628ef78 +Block 0031 [ 10]: 7306560670f1d0c2 +Block 0031 [ 11]: d4a872959695ec2c +Block 0031 [ 12]: 80eb229e4932edff +Block 0031 [ 13]: d101308963991194 +Block 0031 [ 14]: 73085ee7d8211718 +Block 0031 [ 15]: 161e14bd7afc6265 +Block 0031 [ 16]: 66bfe3b7b09efea6 +Block 0031 [ 17]: 7c9e052377cc0d52 +Block 0031 [ 18]: 14265c7dc1f5df42 +Block 0031 [ 19]: d4b6f6fb6358f6f6 +Block 0031 [ 20]: 881eb8e86ab22017 +Block 0031 [ 21]: 118f820d2363c8c9 +Block 0031 [ 22]: aff520d67dd66e3b +Block 0031 [ 23]: 29aec74c592a814a +Block 0031 [ 24]: 0ed40fccb5f07c87 +Block 0031 [ 25]: 51941c3d5c31379c +Block 0031 [ 26]: f7cbf86cac7c6434 +Block 0031 [ 27]: f61fa7f0e2b3cbc8 +Block 0031 [ 28]: 9f5e9f66cf4114ad +Block 0031 [ 29]: 0652344032753e1b +Block 0031 [ 30]: fef2a3ea3dfcf379 +Block 0031 [ 31]: a6fea6258e518ebc +Block 0031 [ 32]: 856a99f86c7e762d +Block 0031 [ 33]: 42e85fcd24e8b41e +Block 0031 [ 34]: 148d9e623e851dea +Block 0031 [ 35]: e76f445a76772983 +Block 0031 [ 36]: 361241968174001f +Block 0031 [ 37]: 83b64baebf5a4908 +Block 0031 [ 38]: d3373289c148463a +Block 0031 [ 39]: 639a1909b1574a93 +Block 0031 [ 40]: 1756d9dec3da6a64 +Block 0031 [ 41]: 7a2bf952a65a0da7 +Block 0031 [ 42]: 25e97e5cc04b243b +Block 0031 [ 43]: bb33ad4b697daeed +Block 0031 [ 44]: cd751a3f5385f8e1 +Block 0031 [ 45]: 9ce29b4e243aa4c9 +Block 0031 [ 46]: 98f94b6f1479af37 +Block 0031 [ 47]: 8bcfa0eb52e00b18 +Block 0031 [ 48]: afbf5c00f6b6342a +Block 0031 [ 49]: d754c66aed0d0132 +Block 0031 [ 50]: d5e4093177c9e92d +Block 0031 [ 51]: 61bab57ba23847d3 +Block 0031 [ 52]: 1fc3b0cfce64bb77 +Block 0031 [ 53]: 0f98a6bc191d3213 +Block 0031 [ 54]: 7e609553847c0e6f +Block 0031 [ 55]: 361304bb6138aac0 +Block 0031 [ 56]: 878872e076fc08aa +Block 0031 [ 57]: 6c153b5fd7d11503 +Block 0031 [ 58]: 06b4f4ad17802f4d +Block 0031 [ 59]: 6d77ff7b0f34ee7c +Block 0031 [ 60]: 670dd85ba6194fca +Block 0031 [ 61]: 5671b23c77e3d057 +Block 0031 [ 62]: 35119e2f853fbc9d +Block 0031 [ 63]: def753f2a7ef264a +Block 0031 [ 64]: e85bdbe442ed3f43 +Block 0031 [ 65]: f4fc248a745d8f9c +Block 0031 [ 66]: 9ba20fdd79e80b8c +Block 0031 [ 67]: b6d9f5945f9a664d +Block 0031 [ 68]: 20fbd28b785e0329 +Block 0031 [ 69]: f85e52ac3767b3f5 +Block 0031 [ 70]: 2b1eb317ddab4fa8 +Block 0031 [ 71]: 93cfe1a3f0d85bf0 +Block 0031 [ 72]: d58de87c9917fb35 +Block 0031 [ 73]: b6d7bcd756819f50 +Block 0031 [ 74]: 8de20a6619d151d8 +Block 0031 [ 75]: 87bd14b028d9216c +Block 0031 [ 76]: 15a2eba464d56e8f +Block 0031 [ 77]: 2465311173907873 +Block 0031 [ 78]: eb9c61925e7c58b3 +Block 0031 [ 79]: 0ed7cbeb1492c923 +Block 0031 [ 80]: 77a798a571f4450a +Block 0031 [ 81]: 482b893c546ff4a6 +Block 0031 [ 82]: 39ac176fb2b483db +Block 0031 [ 83]: 32437a31965a733c +Block 0031 [ 84]: be933e433f586338 +Block 0031 [ 85]: 40f25a7ed2c5120c +Block 0031 [ 86]: 49d2f77c6aff30fc +Block 0031 [ 87]: a1ad34b9bf94bf07 +Block 0031 [ 88]: a77f1a70cdb0dd06 +Block 0031 [ 89]: 106afffa50facc31 +Block 0031 [ 90]: ba8826e4219dc476 +Block 0031 [ 91]: e02982181e0870ee +Block 0031 [ 92]: 8480c3aae6e896aa +Block 0031 [ 93]: 297f2c7a272a8b2f +Block 0031 [ 94]: c5036bb595909a84 +Block 0031 [ 95]: a08327fabb4d3fb8 +Block 0031 [ 96]: 53f22cc5481afc88 +Block 0031 [ 97]: f067dcc8b804378f +Block 0031 [ 98]: 17894a8680e925b3 +Block 0031 [ 99]: 6078d7556d2fcdfc +Block 0031 [100]: 2a83f75567f6b751 +Block 0031 [101]: 80fb55cfa65a6155 +Block 0031 [102]: db56da1e25853d68 +Block 0031 [103]: f211137a22a34c75 +Block 0031 [104]: ceeea03f75fa41c6 +Block 0031 [105]: a56305173372f075 +Block 0031 [106]: 13bcf10f6f52c543 +Block 0031 [107]: 8cce231f5c882992 +Block 0031 [108]: 2dd59abd3326b1d0 +Block 0031 [109]: bf2adce673d93e75 +Block 0031 [110]: aff796ec3520ea12 +Block 0031 [111]: ed4a55e41b122765 +Block 0031 [112]: 51e63bc4199c4fc4 +Block 0031 [113]: 64631c52d2bbe92a +Block 0031 [114]: e30d2cbd6fc1fb0e +Block 0031 [115]: 6b67d0c31a71f6d8 +Block 0031 [116]: 53093eabfb3a0e16 +Block 0031 [117]: 4cdd35a55bd56663 +Block 0031 [118]: bb4297a99e734daf +Block 0031 [119]: 0d5dd07557b2d5c7 +Block 0031 [120]: fb351e6ce72b7a37 +Block 0031 [121]: 06f324ad64676de7 +Block 0031 [122]: c18903237861cf21 +Block 0031 [123]: 1672989332c783ea +Block 0031 [124]: 4a14c84a31058542 +Block 0031 [125]: 25c544df9faab7be +Block 0031 [126]: 4627ff2abce83845 +Block 0031 [127]: 6316fd56c69344f1 + + After pass 2: +Block 0000 [ 0]: d2bfbbc5538d0691 +Block 0000 [ 1]: fdd30b9eda25954b +Block 0000 [ 2]: 3acab43f4e2d35bd +Block 0000 [ 3]: 6a7098a3676964bd +Block 0000 [ 4]: bea6794f73dc88ec +Block 0000 [ 5]: 837d3ad2b07a12c9 +Block 0000 [ 6]: 3e2421fcf8eda94e +Block 0000 [ 7]: 3ca9a53c07522ccd +Block 0000 [ 8]: 863e66bbd66c6273 +Block 0000 [ 9]: 17ae74a98b994202 +Block 0000 [ 10]: 4ff8af313326b54b +Block 0000 [ 11]: a12468f5a7ae468d +Block 0000 [ 12]: fa69e7a7bac72caa +Block 0000 [ 13]: 5cdc71c04b8b8306 +Block 0000 [ 14]: 85b8eafdbb7f9d3d +Block 0000 [ 15]: c3a68f3de40b258a +Block 0000 [ 16]: f10227d4f1d7f387 +Block 0000 [ 17]: 68983d628ad03716 +Block 0000 [ 18]: 59041153fb987a38 +Block 0000 [ 19]: a2e96838b1930c0c +Block 0000 [ 20]: f775642275053088 +Block 0000 [ 21]: 3dd0a9996c16b353 +Block 0000 [ 22]: 30de7ea84550d566 +Block 0000 [ 23]: 52ff98bec2f102e3 +Block 0000 [ 24]: d7bf180f18129d8c +Block 0000 [ 25]: 0b20025f9425bdd8 +Block 0000 [ 26]: 34c4cf7f7094b7f4 +Block 0000 [ 27]: 04d626f3b9f4296b +Block 0000 [ 28]: 3c327a1aeab45c96 +Block 0000 [ 29]: faf97a90c9cee32f +Block 0000 [ 30]: c79d3bc514100ac0 +Block 0000 [ 31]: 478d91a10654e435 +Block 0000 [ 32]: 3a251ea52e5265b0 +Block 0000 [ 33]: c2d308d9c012c0b7 +Block 0000 [ 34]: 6f12cd0ba5e43e8e +Block 0000 [ 35]: c60725db674efc2f +Block 0000 [ 36]: 84b934ebec83b87a +Block 0000 [ 37]: d1f2a34706cac386 +Block 0000 [ 38]: 85cf00381149b292 +Block 0000 [ 39]: f2d45baf330d70fa +Block 0000 [ 40]: 949ac580ffdee39f +Block 0000 [ 41]: 939d7c5244ce5026 +Block 0000 [ 42]: 62604d407db2dc10 +Block 0000 [ 43]: c561714c5baca244 +Block 0000 [ 44]: d793e68d21b8d785 +Block 0000 [ 45]: 9218155894eb4668 +Block 0000 [ 46]: a6d83e86dd08b536 +Block 0000 [ 47]: b12166b5fbf2622b +Block 0000 [ 48]: 087fc2807f6b0240 +Block 0000 [ 49]: a953331bf25793c6 +Block 0000 [ 50]: 395e56f54f367d58 +Block 0000 [ 51]: 71844b0ad60a4348 +Block 0000 [ 52]: bff48acffc4f1d86 +Block 0000 [ 53]: 08207d54623b8eff +Block 0000 [ 54]: d7976065b56b168b +Block 0000 [ 55]: 7a0a7f11ededbe27 +Block 0000 [ 56]: 5feed8c252d86bb0 +Block 0000 [ 57]: 9890890cfa9ac4dd +Block 0000 [ 58]: 4bccf79dae011a67 +Block 0000 [ 59]: 2cdc7e852e3325aa +Block 0000 [ 60]: 4b3f2056e3d09a17 +Block 0000 [ 61]: 3e3c49a5be718d8f +Block 0000 [ 62]: f3eeeabf2e588a37 +Block 0000 [ 63]: 1d163fbaea85c51e +Block 0000 [ 64]: 4e870740a63bfebe +Block 0000 [ 65]: fdea2486efd299f9 +Block 0000 [ 66]: 63c4c7642195538d +Block 0000 [ 67]: 6aa09c2a021a7e39 +Block 0000 [ 68]: 383de7f9fd0477e9 +Block 0000 [ 69]: a96d36027d5d40fa +Block 0000 [ 70]: 0c3389062b014fce +Block 0000 [ 71]: c114edae155883af +Block 0000 [ 72]: d34997d5da0d7faf +Block 0000 [ 73]: bb1a90429091d672 +Block 0000 [ 74]: f10646dc7472f874 +Block 0000 [ 75]: 799bad35f1b4b596 +Block 0000 [ 76]: 59b72d2dc1ec8265 +Block 0000 [ 77]: f862830aa16be38e +Block 0000 [ 78]: 87d27855b30d2e10 +Block 0000 [ 79]: 1b83b64e975578fb +Block 0000 [ 80]: 10b85998fc9683cb +Block 0000 [ 81]: 9e77d6fd752f56e4 +Block 0000 [ 82]: 0abae223a92a3866 +Block 0000 [ 83]: 50115aa654949866 +Block 0000 [ 84]: c7fce8bf28b52b61 +Block 0000 [ 85]: 7eab21dc322adcc7 +Block 0000 [ 86]: 385bf7b817b855a6 +Block 0000 [ 87]: 89a96d45fab99e0b +Block 0000 [ 88]: a4d612ec2b949d99 +Block 0000 [ 89]: 485ab81e2aa987c1 +Block 0000 [ 90]: fb668789e6a7cdb4 +Block 0000 [ 91]: 382820855bb0f925 +Block 0000 [ 92]: 4aefec40e2182c2e +Block 0000 [ 93]: d0bbfd373964563b +Block 0000 [ 94]: 522f590a62b06af5 +Block 0000 [ 95]: 4673911857dee9d0 +Block 0000 [ 96]: 60b473dcc47e9f98 +Block 0000 [ 97]: 58e120f49b52a745 +Block 0000 [ 98]: 1ef5e595d1f45259 +Block 0000 [ 99]: b864a94f27e6dced +Block 0000 [100]: 74a270f2b6b8048d +Block 0000 [101]: 79d8ba2427c45f6f +Block 0000 [102]: 43d10923485a498c +Block 0000 [103]: ae95c732560cf5a7 +Block 0000 [104]: eee43f84fb4f00c8 +Block 0000 [105]: 4f2c7238bed818d3 +Block 0000 [106]: 3021c423f992eea9 +Block 0000 [107]: 40e6a0f228776314 +Block 0000 [108]: f57ddf4d9227d927 +Block 0000 [109]: 67c9b4dd17f940f8 +Block 0000 [110]: 9e79fc2dfd0c3458 +Block 0000 [111]: 17f629e2d71e0631 +Block 0000 [112]: bf50ffc05622f1a1 +Block 0000 [113]: f722cd6173d05451 +Block 0000 [114]: aa7dd6a9bdb8fde7 +Block 0000 [115]: 96e948a8fffdad2b +Block 0000 [116]: 39fdd84328ad4a48 +Block 0000 [117]: 9ac11eda284697b2 +Block 0000 [118]: cd6a816bc4ef9279 +Block 0000 [119]: 7a9b9ff5570151d7 +Block 0000 [120]: 989fb3eccde11a2c +Block 0000 [121]: 42d0105e6df28303 +Block 0000 [122]: 385308a61f36a6b7 +Block 0000 [123]: d5d3b82a09e03e4e +Block 0000 [124]: 4eb69b6b8bdb50dc +Block 0000 [125]: b0bc8a268c477342 +Block 0000 [126]: d227cc6b292c97f3 +Block 0000 [127]: 5c14f1f815132a2d +Block 0001 [ 0]: 75c183401903f625 +Block 0001 [ 1]: 8c20fa12abcbce89 +Block 0001 [ 2]: a5ead7a57718ec5e +Block 0001 [ 3]: 18c5a981135c282c +Block 0001 [ 4]: 0590129aad6e72cf +Block 0001 [ 5]: e3dd77e6a4aac515 +Block 0001 [ 6]: 31521cb6071f820f +Block 0001 [ 7]: 172736e02c9cf05e +Block 0001 [ 8]: 7634b8f8e1fc0ce9 +Block 0001 [ 9]: e6812a3bc4ebf23d +Block 0001 [ 10]: 98e977becd8b7a7c +Block 0001 [ 11]: e65ec3b60b1db8e4 +Block 0001 [ 12]: 4f6113dafc47d70a +Block 0001 [ 13]: c85682ce4422cad9 +Block 0001 [ 14]: b32004f710920375 +Block 0001 [ 15]: 694cc7f9f95731e3 +Block 0001 [ 16]: 605bb861fc60749f +Block 0001 [ 17]: 72cec74a23d1eff0 +Block 0001 [ 18]: 6eac4f1a2540da41 +Block 0001 [ 19]: 5430aa5aa99cb80d +Block 0001 [ 20]: 8544c56488bb9e2d +Block 0001 [ 21]: 06a7423f86b8d125 +Block 0001 [ 22]: c7b7d5dd29a07e96 +Block 0001 [ 23]: ff83461fd40e9e74 +Block 0001 [ 24]: 9b4d52a073fb9d5c +Block 0001 [ 25]: 7415a3510a0a6a00 +Block 0001 [ 26]: 317d09aaf7cb9ba8 +Block 0001 [ 27]: cc2cfaf8b506d014 +Block 0001 [ 28]: b337c6e47c9d799e +Block 0001 [ 29]: ab67888b9e46f720 +Block 0001 [ 30]: 2affc2a33c986c0c +Block 0001 [ 31]: b2842aebb3e5d1e4 +Block 0001 [ 32]: b275965d992ff5fc +Block 0001 [ 33]: c39ddc5e9c6e04eb +Block 0001 [ 34]: 191f7cc2b3b8d5cb +Block 0001 [ 35]: 72937670bd7fb9d7 +Block 0001 [ 36]: 0645f6e8e81e617f +Block 0001 [ 37]: ef0c4ca70bf25f7a +Block 0001 [ 38]: a23a4bae4d1ef4ab +Block 0001 [ 39]: e4fead0ff40a9c42 +Block 0001 [ 40]: e3635b74da13fe52 +Block 0001 [ 41]: 149997696a79efdf +Block 0001 [ 42]: b4894283887470d6 +Block 0001 [ 43]: 5e8d46c852abb1fa +Block 0001 [ 44]: a820e4585c0fe1d5 +Block 0001 [ 45]: c3a70d7cd439a327 +Block 0001 [ 46]: 30744765900a5610 +Block 0001 [ 47]: 28ddbf796851f228 +Block 0001 [ 48]: f2581f003f82cfb1 +Block 0001 [ 49]: 0439eb009462786f +Block 0001 [ 50]: 15a35e8df68cff6b +Block 0001 [ 51]: ec8be6cf6684a129 +Block 0001 [ 52]: ad3f4e12a3154e8e +Block 0001 [ 53]: 5916f409d829443e +Block 0001 [ 54]: 8800db5cbfcb15a5 +Block 0001 [ 55]: 8d9e9349289e03dd +Block 0001 [ 56]: 19c47c8106c8577b +Block 0001 [ 57]: f88a37de8eeefed1 +Block 0001 [ 58]: 5eeed049b2ecec0e +Block 0001 [ 59]: b112cd4c54df3ac3 +Block 0001 [ 60]: 4ad2ec8a421490c4 +Block 0001 [ 61]: 9bc263ce61103790 +Block 0001 [ 62]: 4a730d5c30feecd0 +Block 0001 [ 63]: ffa189cc98d79651 +Block 0001 [ 64]: a40b5c0eae44d459 +Block 0001 [ 65]: 7045a68bdce9cb5d +Block 0001 [ 66]: 8f97e54a007d71e2 +Block 0001 [ 67]: ef560075b9d613a0 +Block 0001 [ 68]: a7fc257eb171bfd3 +Block 0001 [ 69]: 4c7082a1a4a5e593 +Block 0001 [ 70]: 500cfcccd795a009 +Block 0001 [ 71]: 80c8f60d8c9f8e30 +Block 0001 [ 72]: 08632801eff5e6ce +Block 0001 [ 73]: 67fbc4d781a5be67 +Block 0001 [ 74]: 7b7d12f4c1a69cfb +Block 0001 [ 75]: 0499393e9a0537b1 +Block 0001 [ 76]: 2646f7e44f09270e +Block 0001 [ 77]: 60ac80d07ac36ca2 +Block 0001 [ 78]: dcc8a040ab3e73f8 +Block 0001 [ 79]: fc12d44434965551 +Block 0001 [ 80]: 8b440689c5dedb15 +Block 0001 [ 81]: a7eae4713960017b +Block 0001 [ 82]: 35c85d575a40d8c5 +Block 0001 [ 83]: 25af4b3b414fea51 +Block 0001 [ 84]: 1cb81be8f18c4966 +Block 0001 [ 85]: 7e03a303fcedc7ce +Block 0001 [ 86]: cf6b0505c1cfd2ec +Block 0001 [ 87]: deaede9a78815a4f +Block 0001 [ 88]: 474545fe9136db82 +Block 0001 [ 89]: ae09452c35b774f6 +Block 0001 [ 90]: 9bbae009dde20ac9 +Block 0001 [ 91]: 935f97a69a6c68a3 +Block 0001 [ 92]: f92ba79f50fc101b +Block 0001 [ 93]: 12ec6069ff1d8542 +Block 0001 [ 94]: 27aa206ebdc64128 +Block 0001 [ 95]: 7e52fad9fc5791d2 +Block 0001 [ 96]: 10d211741d67c7a3 +Block 0001 [ 97]: c79233c1a34adef8 +Block 0001 [ 98]: 19059f2fb6098d55 +Block 0001 [ 99]: e51de33609f86618 +Block 0001 [100]: 2bc0bb88fef64262 +Block 0001 [101]: fa91ada28a84aebe +Block 0001 [102]: 6e02b86736cbf953 +Block 0001 [103]: cd3728d7d6bf9e98 +Block 0001 [104]: 7760845d9d81c2c3 +Block 0001 [105]: 8417879b22777f17 +Block 0001 [106]: cf881e44da6f7662 +Block 0001 [107]: 33e24c6ff1d99839 +Block 0001 [108]: 185cef30e7a37acf +Block 0001 [109]: 161026f1104186da +Block 0001 [110]: 73b72796317bed2d +Block 0001 [111]: 3562d0ff6ee7d268 +Block 0001 [112]: 872a7c67cc9a61bf +Block 0001 [113]: 79c4f22bebdf7b73 +Block 0001 [114]: f7a70fe4b9aeda09 +Block 0001 [115]: df9bceaeb3963845 +Block 0001 [116]: a5a655151f09c222 +Block 0001 [117]: febca01a48f68e1d +Block 0001 [118]: 2c3c859e18149bf3 +Block 0001 [119]: 8839f7dde56b0943 +Block 0001 [120]: a22a95c95645fd5e +Block 0001 [121]: 04d0cd5246f75ac2 +Block 0001 [122]: 965d0c6431059fe9 +Block 0001 [123]: 14e4627253a6c318 +Block 0001 [124]: 39f51177a99f2c70 +Block 0001 [125]: 78df225cea3e8413 +Block 0001 [126]: b486dbb11b49885a +Block 0001 [127]: e4b1362f7ec62876 +Block 0002 [ 0]: be82e39fb23497af +Block 0002 [ 1]: 97f7fc0dc8fa8561 +Block 0002 [ 2]: d305b88dd051b91a +Block 0002 [ 3]: bd8f0dfd151eae83 +Block 0002 [ 4]: 910b545ff2334fcd +Block 0002 [ 5]: 1ef0ece59fef86cd +Block 0002 [ 6]: fe5c03cd20349ba7 +Block 0002 [ 7]: d9782292d3ef95bf +Block 0002 [ 8]: 9d746018ea870fcd +Block 0002 [ 9]: 34db528ff7ce54bf +Block 0002 [ 10]: f301b4da637a91e2 +Block 0002 [ 11]: a1a2d26757179a10 +Block 0002 [ 12]: 02351e156a86d35d +Block 0002 [ 13]: 63143aa712192240 +Block 0002 [ 14]: 7a3ceffdd1a79ee8 +Block 0002 [ 15]: c40088234a6042d6 +Block 0002 [ 16]: eed93e9a2e88a2c7 +Block 0002 [ 17]: b0e0f7875f672d69 +Block 0002 [ 18]: 521f9a10146a7e31 +Block 0002 [ 19]: 39619c7eb1066700 +Block 0002 [ 20]: 5f6312b67651ecb5 +Block 0002 [ 21]: c0ed573071f12360 +Block 0002 [ 22]: eda1d8347de4efbc +Block 0002 [ 23]: 7e0819f293535c13 +Block 0002 [ 24]: ed47b829b1fc489b +Block 0002 [ 25]: 6c95dfd9a580c85b +Block 0002 [ 26]: 6ceb4e97a15ed8a0 +Block 0002 [ 27]: ef840f725146143c +Block 0002 [ 28]: b15bbf822cce3e84 +Block 0002 [ 29]: 72796b2867a1622f +Block 0002 [ 30]: 11d049b8c0e82587 +Block 0002 [ 31]: a4880ed5d4e8824a +Block 0002 [ 32]: 0cdc193f278373f9 +Block 0002 [ 33]: 9b1478114f594a80 +Block 0002 [ 34]: d0e03f2b6994e2b4 +Block 0002 [ 35]: 98b62f2de4e831e1 +Block 0002 [ 36]: 0416c2fdef1a17d6 +Block 0002 [ 37]: 10ad0d51eddd36df +Block 0002 [ 38]: be9b727601c88728 +Block 0002 [ 39]: 3a496f65a2a23980 +Block 0002 [ 40]: cb85f05f72d57364 +Block 0002 [ 41]: bf32c58ac37e31f3 +Block 0002 [ 42]: 7555f66129a05a3c +Block 0002 [ 43]: b09de73b8833d762 +Block 0002 [ 44]: 3aaddc025bc9c5f5 +Block 0002 [ 45]: d51d9b50e7ac1e10 +Block 0002 [ 46]: 72de8083b651b259 +Block 0002 [ 47]: 135411c956b1e691 +Block 0002 [ 48]: ca0aff548d7682d7 +Block 0002 [ 49]: f44b3e4210ba5898 +Block 0002 [ 50]: c691066bf3747eed +Block 0002 [ 51]: c1f9682454c740c5 +Block 0002 [ 52]: ad58f9792291cee0 +Block 0002 [ 53]: d592f5dbe2102500 +Block 0002 [ 54]: 635c299efb84bf42 +Block 0002 [ 55]: 8b80fa8e61d49dd9 +Block 0002 [ 56]: 87235af2e76b8301 +Block 0002 [ 57]: 8b1eb45875d5856a +Block 0002 [ 58]: 0f9b910c3a4fbdb0 +Block 0002 [ 59]: 4993f4819ce98005 +Block 0002 [ 60]: 1105c2cb4c3b7598 +Block 0002 [ 61]: f3b9a1cd3a053dde +Block 0002 [ 62]: e8af8b90c4a83b69 +Block 0002 [ 63]: 286800e9dd5ac648 +Block 0002 [ 64]: 425e495348603270 +Block 0002 [ 65]: 6b733fe715d77c47 +Block 0002 [ 66]: 53904c6dd1292c20 +Block 0002 [ 67]: a9f9a28c965ab818 +Block 0002 [ 68]: c59a31de2f00853a +Block 0002 [ 69]: afe438e57a6e0844 +Block 0002 [ 70]: bba45d22fb183db2 +Block 0002 [ 71]: b70d940e09e1b81d +Block 0002 [ 72]: 045016066a260fd1 +Block 0002 [ 73]: c77660f79caf487a +Block 0002 [ 74]: 19c598233c14b842 +Block 0002 [ 75]: c3058798c27f4e3f +Block 0002 [ 76]: 934c5db22edcef4a +Block 0002 [ 77]: 19d43250721ba51c +Block 0002 [ 78]: e517cfdcc01e129b +Block 0002 [ 79]: 168875877be5927f +Block 0002 [ 80]: d843abd7e0fdc1b3 +Block 0002 [ 81]: d55ac5e832bb21b3 +Block 0002 [ 82]: ac5c89e63cbe234b +Block 0002 [ 83]: 8a85ec876d0bf705 +Block 0002 [ 84]: 9ee8e11fe4759a5b +Block 0002 [ 85]: 968e7afa1b7420c2 +Block 0002 [ 86]: 6cdf8ac8a603bd9b +Block 0002 [ 87]: 023675d7ec048d55 +Block 0002 [ 88]: 06d17b5a31b1c518 +Block 0002 [ 89]: 2c47c4b74b5f2cf5 +Block 0002 [ 90]: 7191cd7ca21b8ab1 +Block 0002 [ 91]: 25dc32663c7b2174 +Block 0002 [ 92]: 28ec825eb4e3ea38 +Block 0002 [ 93]: 60740a51a33ef788 +Block 0002 [ 94]: c7cceed83266a33b +Block 0002 [ 95]: d84585bcd9baa1bb +Block 0002 [ 96]: 9b6f18b525e9b0d4 +Block 0002 [ 97]: eb54d4b34f780348 +Block 0002 [ 98]: 662009e73ec50ab8 +Block 0002 [ 99]: d1c22cb358cd3261 +Block 0002 [100]: 483f9163b91902b3 +Block 0002 [101]: a419d6e4fc164133 +Block 0002 [102]: 18a5cfa5516933a1 +Block 0002 [103]: 9429b99ee10a2064 +Block 0002 [104]: fb78da9d8ceeec6f +Block 0002 [105]: 9c9e8aef683443b3 +Block 0002 [106]: 4534b4fcba3f2646 +Block 0002 [107]: 0a1cf98c003e2e8f +Block 0002 [108]: 9f6f4800073ad33a +Block 0002 [109]: 22b728fc57a6609d +Block 0002 [110]: e298905fb4d0b68e +Block 0002 [111]: 2bcbdd9a1ce46c9d +Block 0002 [112]: 5c75108e7d6a55b9 +Block 0002 [113]: b605bd1023de8977 +Block 0002 [114]: 1c193d35b61e7d0c +Block 0002 [115]: f48c8741a50be2b2 +Block 0002 [116]: dde78777f41702fe +Block 0002 [117]: aa9668ae6a9b8ee6 +Block 0002 [118]: a4b91d2d5900c5e2 +Block 0002 [119]: b23f93527a5f6abf +Block 0002 [120]: 251cc8db145b7f60 +Block 0002 [121]: 42ffa58f6cae0c6b +Block 0002 [122]: e864e1c5256dd80d +Block 0002 [123]: 2253ebfd92490935 +Block 0002 [124]: 6409cf57bdbd6c68 +Block 0002 [125]: dfec737ab6849a31 +Block 0002 [126]: 894da96427deb540 +Block 0002 [127]: 4acc8d0d859fc71c +Block 0003 [ 0]: 7393659e41c0ffe8 +Block 0003 [ 1]: 2d1775dbb249bb5b +Block 0003 [ 2]: fae4f88f3e535a8b +Block 0003 [ 3]: de1631dcfbbb9157 +Block 0003 [ 4]: 7164b6d1e33a61dc +Block 0003 [ 5]: eb95a004610f2626 +Block 0003 [ 6]: 3ad93611b1c94541 +Block 0003 [ 7]: e7a453ce861ab3ba +Block 0003 [ 8]: 78adac795c376400 +Block 0003 [ 9]: 1afb8e1de9db5a87 +Block 0003 [ 10]: ce384f6674dd212a +Block 0003 [ 11]: 25c4c7c3d3efcb1d +Block 0003 [ 12]: aca174b4ef51cafc +Block 0003 [ 13]: eb1a3eee15c3169c +Block 0003 [ 14]: f85ce6304143c718 +Block 0003 [ 15]: 25cc4e07845bc0d3 +Block 0003 [ 16]: faf52d0c41d56a98 +Block 0003 [ 17]: da5600f13157ef01 +Block 0003 [ 18]: 96acfebd55f2437c +Block 0003 [ 19]: c214c0eb8a6bf5a7 +Block 0003 [ 20]: a8129fd25e9c4a6e +Block 0003 [ 21]: 9f9f490ee4c80129 +Block 0003 [ 22]: dd48fcad213f4121 +Block 0003 [ 23]: a48ea8e66dd84ac8 +Block 0003 [ 24]: 613cde171f240f13 +Block 0003 [ 25]: eace1402be0ad779 +Block 0003 [ 26]: b9d7bdbb30fcf1c8 +Block 0003 [ 27]: 4f135f12be01b425 +Block 0003 [ 28]: 4930fec1d4366e0b +Block 0003 [ 29]: fca833d55bf82ed9 +Block 0003 [ 30]: f2dcd795c9e1e354 +Block 0003 [ 31]: dab4e97ae334a48a +Block 0003 [ 32]: 05facd2a746f4fd7 +Block 0003 [ 33]: b7f5e73d82ede13e +Block 0003 [ 34]: 185a66e8575ac003 +Block 0003 [ 35]: 07c8314d75afa258 +Block 0003 [ 36]: 4b6de5582fbbba66 +Block 0003 [ 37]: 5e6e62eb4ecf1374 +Block 0003 [ 38]: ed59e2b8a754522b +Block 0003 [ 39]: 0cd50f2d238c80a3 +Block 0003 [ 40]: df8eb0346cb94c20 +Block 0003 [ 41]: ff3946e557683c77 +Block 0003 [ 42]: b08b188c5f361337 +Block 0003 [ 43]: 7c2e03108321abf4 +Block 0003 [ 44]: 78c17e33bccec828 +Block 0003 [ 45]: 9882c1219c8d702e +Block 0003 [ 46]: 791761d3870e074f +Block 0003 [ 47]: f2138d034225e07c +Block 0003 [ 48]: 522611a94c109b36 +Block 0003 [ 49]: a20e833c25511dfb +Block 0003 [ 50]: 20e9d9679ea1f760 +Block 0003 [ 51]: b4e3243f0559be69 +Block 0003 [ 52]: 8ec633381fa03a91 +Block 0003 [ 53]: d0cb963269d9698c +Block 0003 [ 54]: fedda033ed8a18a8 +Block 0003 [ 55]: a819c67dcaadb66f +Block 0003 [ 56]: 44319f03fb5dd547 +Block 0003 [ 57]: 754c3e6431751894 +Block 0003 [ 58]: 315467ad4cf190ef +Block 0003 [ 59]: f52ee658a9283a3f +Block 0003 [ 60]: 1ededd0b2ccf557a +Block 0003 [ 61]: 1ecc17875870bf83 +Block 0003 [ 62]: 3f14d3fa1b096cf7 +Block 0003 [ 63]: 4cd38f22d0117ce3 +Block 0003 [ 64]: 47ea92a6ee45f08a +Block 0003 [ 65]: cb1940e42c6993d1 +Block 0003 [ 66]: e6e77ade51a89648 +Block 0003 [ 67]: f577683fa0969dbe +Block 0003 [ 68]: 965466637e9bc32d +Block 0003 [ 69]: 94cb31ff56d5b9c2 +Block 0003 [ 70]: f766a40cdc318679 +Block 0003 [ 71]: 6ad738e65fb2615f +Block 0003 [ 72]: 27a15f49b513b95a +Block 0003 [ 73]: b7c75e1f6085abe1 +Block 0003 [ 74]: 12fb477a2785ab14 +Block 0003 [ 75]: 9592b64a56f72842 +Block 0003 [ 76]: 4400ce28a39a9a75 +Block 0003 [ 77]: 1058b921154e6887 +Block 0003 [ 78]: 901341cb4ef8df1d +Block 0003 [ 79]: 36c23f497125a204 +Block 0003 [ 80]: 9aa0d67ece136823 +Block 0003 [ 81]: 0bed05e22536d381 +Block 0003 [ 82]: de549c999d8e0c63 +Block 0003 [ 83]: 3f17aa1b293c9cf0 +Block 0003 [ 84]: d919d0de04950d58 +Block 0003 [ 85]: 75348400ea415bb8 +Block 0003 [ 86]: 4ccf124c6cfe712b +Block 0003 [ 87]: 39a8740c2720429c +Block 0003 [ 88]: f7698dfaa19b150b +Block 0003 [ 89]: 2b42bd8bc337db2f +Block 0003 [ 90]: 2aaf1982d64484d3 +Block 0003 [ 91]: 3aabe630047c593e +Block 0003 [ 92]: 2fe47f5bb56c5cf2 +Block 0003 [ 93]: cb2d883048b2c4d1 +Block 0003 [ 94]: 41c02dd86a8df448 +Block 0003 [ 95]: d28a5aed127310dc +Block 0003 [ 96]: 16b60a8c47c04a66 +Block 0003 [ 97]: 4665b179132f2186 +Block 0003 [ 98]: 0efe17af99cb9ae1 +Block 0003 [ 99]: df33778d909f84cc +Block 0003 [100]: 5f19ba2c8fa06a0e +Block 0003 [101]: 48fbe0f6122c7253 +Block 0003 [102]: 679cf02d3c42d7c7 +Block 0003 [103]: e4024bf993b5a1d5 +Block 0003 [104]: eaf6463430c49079 +Block 0003 [105]: 86b0f0afa95d3c5e +Block 0003 [106]: e955a61581d56a29 +Block 0003 [107]: 182f40b411056af3 +Block 0003 [108]: 965323563f02b1fe +Block 0003 [109]: 993f4c4f6f92df68 +Block 0003 [110]: 8cfe329259529560 +Block 0003 [111]: 253df070391de9fd +Block 0003 [112]: db2af946400e36dc +Block 0003 [113]: ae825c6ff52dd23b +Block 0003 [114]: c3108ee25e43b626 +Block 0003 [115]: bf02a0a2695652ce +Block 0003 [116]: 2f4d2e01345f8f8c +Block 0003 [117]: 4beb38ab3ad7a2cf +Block 0003 [118]: a927049b5e4d0367 +Block 0003 [119]: 684ff1b489531348 +Block 0003 [120]: 91deb2abe6282716 +Block 0003 [121]: 06a5d16d172ec748 +Block 0003 [122]: 74c6aec814cf0609 +Block 0003 [123]: 1245c8dd2e3be804 +Block 0003 [124]: bc1743e961ba8a2f +Block 0003 [125]: 1b43aa6d4214f09b +Block 0003 [126]: 67b87e4761320e77 +Block 0003 [127]: 15e55998edb32dcd +Block 0004 [ 0]: dc8e74b7fc590eaa +Block 0004 [ 1]: 9d6314b244b500ff +Block 0004 [ 2]: 3350958e5e7f2b09 +Block 0004 [ 3]: ec09ff4db1a6b148 +Block 0004 [ 4]: 9c3f7e2c451e9233 +Block 0004 [ 5]: e59dfa53f9aa9188 +Block 0004 [ 6]: 285cbdae58d70fdc +Block 0004 [ 7]: 9d9b7785a055f7c2 +Block 0004 [ 8]: e3f8faf32897907d +Block 0004 [ 9]: b5ca165b816256ad +Block 0004 [ 10]: c05851fad1b32958 +Block 0004 [ 11]: 52f6fe7a373b24e9 +Block 0004 [ 12]: b24bc961f3fe4019 +Block 0004 [ 13]: 02ffc3b077c07b95 +Block 0004 [ 14]: 3aaeb8c90ffff3a1 +Block 0004 [ 15]: 85fea4be84a3de96 +Block 0004 [ 16]: bd4b0eb6ae514a34 +Block 0004 [ 17]: cf1c358c1d01ce4d +Block 0004 [ 18]: 8c3bdde108df5c56 +Block 0004 [ 19]: 72aece74925a81ad +Block 0004 [ 20]: 5a08715b69113bef +Block 0004 [ 21]: 5c9474489416b531 +Block 0004 [ 22]: 2f0cb5a734c055c3 +Block 0004 [ 23]: b1087159c2f1e1c5 +Block 0004 [ 24]: b80d724159604e3b +Block 0004 [ 25]: 1b5d0f02f6fbddf7 +Block 0004 [ 26]: 8c5eeb140196e051 +Block 0004 [ 27]: 32b225f300b2b693 +Block 0004 [ 28]: 8cd5de71ce325031 +Block 0004 [ 29]: 9a7c5ffccf16b550 +Block 0004 [ 30]: c2b81918ce952de3 +Block 0004 [ 31]: a4e55a59535fa36f +Block 0004 [ 32]: 7f59e3befceb12f4 +Block 0004 [ 33]: 55e8178cedb51f45 +Block 0004 [ 34]: f0b04ee9e6643981 +Block 0004 [ 35]: e256ef0b24da2c69 +Block 0004 [ 36]: 4d1a151fcb27b6a5 +Block 0004 [ 37]: 699a3c78f1675517 +Block 0004 [ 38]: ced57d99187b60e6 +Block 0004 [ 39]: c108cdade276da75 +Block 0004 [ 40]: 99e0eaa3da5c44c2 +Block 0004 [ 41]: dfea1825e0d9a17b +Block 0004 [ 42]: 2cc613916948ea30 +Block 0004 [ 43]: cd819de0ca0212c2 +Block 0004 [ 44]: fac7dccc3e730827 +Block 0004 [ 45]: 105a03d54648fdd8 +Block 0004 [ 46]: 34312385ca673f6a +Block 0004 [ 47]: d0f822d27923ac11 +Block 0004 [ 48]: 100a29a4b1408466 +Block 0004 [ 49]: d6becda85ba0f5fe +Block 0004 [ 50]: 8ad493d4dfffb17d +Block 0004 [ 51]: 8cd3d3573d0bb163 +Block 0004 [ 52]: 43f071e93ad72fb9 +Block 0004 [ 53]: c87652edd33c7917 +Block 0004 [ 54]: 4e29ba26e813d81e +Block 0004 [ 55]: 3bcb08574e586c9a +Block 0004 [ 56]: c297461ec3887f17 +Block 0004 [ 57]: be25299cbbff60eb +Block 0004 [ 58]: 66a8d2171828e4ce +Block 0004 [ 59]: 4118a5209f57988f +Block 0004 [ 60]: b0babff16e382e50 +Block 0004 [ 61]: a0066510d52ada48 +Block 0004 [ 62]: 296ba2db305371b6 +Block 0004 [ 63]: 9f13dac104319d84 +Block 0004 [ 64]: 969cf4839e19a635 +Block 0004 [ 65]: c159007a9e201a66 +Block 0004 [ 66]: e1afcbef7896ecf3 +Block 0004 [ 67]: dce56985c9e55b74 +Block 0004 [ 68]: 06d217e23765ecd6 +Block 0004 [ 69]: 2e107a4e6b1b4855 +Block 0004 [ 70]: 4c56777504e10d30 +Block 0004 [ 71]: 835d33900ba6804b +Block 0004 [ 72]: 16f1261f30e2d4d7 +Block 0004 [ 73]: a0db1f831faa49c7 +Block 0004 [ 74]: 687f791433d3cfd4 +Block 0004 [ 75]: 2b8c8b5a1136b296 +Block 0004 [ 76]: 8b9f1fb39ff29266 +Block 0004 [ 77]: ead12a5b8be281cd +Block 0004 [ 78]: 542a14b6c7b4ca64 +Block 0004 [ 79]: 2ed2d673ff068df7 +Block 0004 [ 80]: 0834c45ece6ad1bd +Block 0004 [ 81]: 728d7efe5d32bad9 +Block 0004 [ 82]: 2b12522c55cffe6e +Block 0004 [ 83]: 3e485f8c32faec76 +Block 0004 [ 84]: 4495227ae0c7151e +Block 0004 [ 85]: 18ac2111c500173c +Block 0004 [ 86]: c305c7e0121db98a +Block 0004 [ 87]: dcedeacc5289d43f +Block 0004 [ 88]: ad0f3edf645cca7d +Block 0004 [ 89]: 7caf7e1cf8a716e5 +Block 0004 [ 90]: e7d28d7d683c41ef +Block 0004 [ 91]: a56b8c0c1a11a92a +Block 0004 [ 92]: b03d46bf8064efe4 +Block 0004 [ 93]: a707cf2d4b81db6f +Block 0004 [ 94]: 5780f483897f5950 +Block 0004 [ 95]: 0ecc14064af2288c +Block 0004 [ 96]: 01097e9ccdd30b9a +Block 0004 [ 97]: 0eda1ee216c84a6d +Block 0004 [ 98]: 537dfc124945de42 +Block 0004 [ 99]: 50517fc114230cac +Block 0004 [100]: 3c6ebe9d7aad9989 +Block 0004 [101]: 0c2f35ef9416183b +Block 0004 [102]: 1f6c86dd8a94640e +Block 0004 [103]: c70c2ce465657a97 +Block 0004 [104]: 047034fbcbcb9b29 +Block 0004 [105]: a1699cfb300ed9db +Block 0004 [106]: 3a6210af581ed116 +Block 0004 [107]: cd1bda027a3d3045 +Block 0004 [108]: 57a5caa0bc28e603 +Block 0004 [109]: 32d5e2ea8b30f6bb +Block 0004 [110]: 9ad895e8ab659736 +Block 0004 [111]: bdd2d25a6ddd70b5 +Block 0004 [112]: b24a12932881d44a +Block 0004 [113]: c02b01e7e74d263d +Block 0004 [114]: aaacd49e4471777c +Block 0004 [115]: 3d52fbae820ec99f +Block 0004 [116]: 916c93831f33935d +Block 0004 [117]: 9c8d5cec1a46aa63 +Block 0004 [118]: ddd4ac54f2291697 +Block 0004 [119]: 6f4468d2424dac96 +Block 0004 [120]: 15b42e0be06acd4e +Block 0004 [121]: 211f17f267cfb716 +Block 0004 [122]: 5094ed716457b202 +Block 0004 [123]: f633d3cf02f40fde +Block 0004 [124]: d4db8368201c498f +Block 0004 [125]: 2db510d98cfaff60 +Block 0004 [126]: b1e33c1b76f95a64 +Block 0004 [127]: df8c2031f482ac8f +Block 0005 [ 0]: 428f586174d3c70b +Block 0005 [ 1]: 8db491dcdebe8485 +Block 0005 [ 2]: 118abae9acec1292 +Block 0005 [ 3]: 0e078f30b1e631f4 +Block 0005 [ 4]: bdfac1c0ea61bb7a +Block 0005 [ 5]: 697bd8973c293700 +Block 0005 [ 6]: 3126ab7646837303 +Block 0005 [ 7]: f92297c907a1996d +Block 0005 [ 8]: 47d61a1d7f4d3325 +Block 0005 [ 9]: 34233a1540aecf67 +Block 0005 [ 10]: 0a46392ba9adc825 +Block 0005 [ 11]: 3d9bd182387ecbf1 +Block 0005 [ 12]: e156dd80f34c7a8c +Block 0005 [ 13]: be9123cc6bc7fe0d +Block 0005 [ 14]: 0672be8310b5b19f +Block 0005 [ 15]: 70e659fa9801eeee +Block 0005 [ 16]: 232dccf29d64f5bd +Block 0005 [ 17]: 92f3d4d13c5f3b43 +Block 0005 [ 18]: e992d055e8cac1f3 +Block 0005 [ 19]: 0525a4986101fba6 +Block 0005 [ 20]: c52ce6dfaaea5448 +Block 0005 [ 21]: ea9bbba9f06706c4 +Block 0005 [ 22]: 3f1b980a74b5d42a +Block 0005 [ 23]: 0a4c3eb9029ef23e +Block 0005 [ 24]: a1854f7401a80884 +Block 0005 [ 25]: 4dad34808194c21e +Block 0005 [ 26]: 1e02a809c838b8c7 +Block 0005 [ 27]: 8eef8cc8b2777486 +Block 0005 [ 28]: 9d1e414a0e247885 +Block 0005 [ 29]: b173e9f80513765a +Block 0005 [ 30]: 76d7e21bb9103ace +Block 0005 [ 31]: fc7db715558ae917 +Block 0005 [ 32]: fb2e166463f57ee9 +Block 0005 [ 33]: 9221afc54f4005ef +Block 0005 [ 34]: 45b88b3514280e3d +Block 0005 [ 35]: b7397620e64fa244 +Block 0005 [ 36]: 6a0fa21bce415918 +Block 0005 [ 37]: d7372a31d4f8d3d5 +Block 0005 [ 38]: b62a1edd3096653b +Block 0005 [ 39]: 3f6cad5032a7538f +Block 0005 [ 40]: 40862cb2bb527ab2 +Block 0005 [ 41]: d8fcabf1cf4a8c22 +Block 0005 [ 42]: 28cb352287c31ba9 +Block 0005 [ 43]: aa329a2b67718671 +Block 0005 [ 44]: fed28d465bb389d3 +Block 0005 [ 45]: 93155bf5106507fa +Block 0005 [ 46]: cdec2bffbabf3f51 +Block 0005 [ 47]: 194b17b5ccf2a0bd +Block 0005 [ 48]: 86ea4fc726fe1946 +Block 0005 [ 49]: 8eede1e171f208ea +Block 0005 [ 50]: dd0ef14e7ddbc0a9 +Block 0005 [ 51]: 22defa92554be18b +Block 0005 [ 52]: 71b1af77aca1137f +Block 0005 [ 53]: b901b61fbd2ee55a +Block 0005 [ 54]: 6eac949e49159e58 +Block 0005 [ 55]: cbe686bfe37766bb +Block 0005 [ 56]: 96f7755a97b83d81 +Block 0005 [ 57]: b3b3373331f8c909 +Block 0005 [ 58]: a8fd4a446f764b7b +Block 0005 [ 59]: 30ecc25bc5774ac5 +Block 0005 [ 60]: 3de797f5cddfbc8c +Block 0005 [ 61]: a467fa0dad2e8e9d +Block 0005 [ 62]: e6dedb97fec747f0 +Block 0005 [ 63]: 6d864b261ffbe29e +Block 0005 [ 64]: 5a20a290b71a73d2 +Block 0005 [ 65]: 4145c2e9c234a5d8 +Block 0005 [ 66]: da79eb6adc2cc4cd +Block 0005 [ 67]: 8d1209074f3917ac +Block 0005 [ 68]: 163d2ce278187e4c +Block 0005 [ 69]: 1cf8c5edfa5ee4da +Block 0005 [ 70]: 620b0a9e1056fcf2 +Block 0005 [ 71]: c2f976ead38341b2 +Block 0005 [ 72]: 2bff264920fce04e +Block 0005 [ 73]: d06343c6d8401fc2 +Block 0005 [ 74]: bfb9fcefa4bb830b +Block 0005 [ 75]: 2d6d546963be975c +Block 0005 [ 76]: 25866cb74e5e4fde +Block 0005 [ 77]: bb3b80728adbb3b8 +Block 0005 [ 78]: 59ffb3a2616f42d9 +Block 0005 [ 79]: 143f6b0612d48202 +Block 0005 [ 80]: dc7fe0f81b2728e7 +Block 0005 [ 81]: 1af6257676192ce4 +Block 0005 [ 82]: 362bc9ab7b4301d2 +Block 0005 [ 83]: b3b27a39ff1b93e2 +Block 0005 [ 84]: 6853a6bf9df6d437 +Block 0005 [ 85]: 27bfa4abf07b49b8 +Block 0005 [ 86]: bf1ecbb4aee2b6fd +Block 0005 [ 87]: 86aca973a86481c4 +Block 0005 [ 88]: 69b6116ecde430f5 +Block 0005 [ 89]: 39e413ab45810fb8 +Block 0005 [ 90]: dd6eea0068811533 +Block 0005 [ 91]: 77645481ca5b3fe1 +Block 0005 [ 92]: 0cd1fd5313e15278 +Block 0005 [ 93]: e6bfdc226276693a +Block 0005 [ 94]: 55421022e9411209 +Block 0005 [ 95]: 55e67f4cdf743c0c +Block 0005 [ 96]: e50ed02e64d454b4 +Block 0005 [ 97]: 0126f30b4983d907 +Block 0005 [ 98]: 53bcd1d00e93215a +Block 0005 [ 99]: 85b504f6ad323e91 +Block 0005 [100]: 6814f10585b91d90 +Block 0005 [101]: 45081065e5591a36 +Block 0005 [102]: 77f70317db7f7de1 +Block 0005 [103]: 57e18ad0cd094219 +Block 0005 [104]: 9b7a484a8a308720 +Block 0005 [105]: 46e1e3b2b52790db +Block 0005 [106]: 305905b73c2cb62e +Block 0005 [107]: cbcc69dc0a0c42f6 +Block 0005 [108]: d7eb3e010ce9bee9 +Block 0005 [109]: f1a6cf342bcdfea8 +Block 0005 [110]: b1618f5b9a9a98f8 +Block 0005 [111]: 8d8d779b3ce5835d +Block 0005 [112]: 9ca21c957973116d +Block 0005 [113]: 64083f3d9d18e4f8 +Block 0005 [114]: 6195ee7bb3ba04e3 +Block 0005 [115]: 97185e5d48380d48 +Block 0005 [116]: 82dbd9fc9e4c0e03 +Block 0005 [117]: e3913fe95965d557 +Block 0005 [118]: e2fa70aef1efe193 +Block 0005 [119]: d336389f1cbb77c0 +Block 0005 [120]: 559a7ab0def81cc1 +Block 0005 [121]: 870601ae9f31df12 +Block 0005 [122]: b045c7c5a43625c2 +Block 0005 [123]: cbdaaeb4c2565c6b +Block 0005 [124]: f83296cfab58be99 +Block 0005 [125]: d637b31caae3b66f +Block 0005 [126]: 9a3a611bb0de8640 +Block 0005 [127]: 958fe6c02727c98a +Block 0006 [ 0]: 13a5f2096ff5ca1f +Block 0006 [ 1]: 1b2f72026e4eb528 +Block 0006 [ 2]: eaa2ba7ac954db30 +Block 0006 [ 3]: b54ba8519e44db4a +Block 0006 [ 4]: c061311fd57a2eab +Block 0006 [ 5]: 83c9d06aa3983ca8 +Block 0006 [ 6]: b0c1008b6073ec65 +Block 0006 [ 7]: eba730c138748909 +Block 0006 [ 8]: b5d15ad429bfbd5a +Block 0006 [ 9]: da277ab755811426 +Block 0006 [ 10]: 65f8da290ecb3661 +Block 0006 [ 11]: fc9a09aeae2cec69 +Block 0006 [ 12]: 002f075123624389 +Block 0006 [ 13]: 5bd0d62a670fb3c8 +Block 0006 [ 14]: a5b1b4c10248f86d +Block 0006 [ 15]: 46dc458c8af1bc5b +Block 0006 [ 16]: b0109567fc2bb44d +Block 0006 [ 17]: 062cc29395ed989b +Block 0006 [ 18]: 908c3833f51a7a8c +Block 0006 [ 19]: 7c8baba41c73d5c8 +Block 0006 [ 20]: a884c98ecfa827f7 +Block 0006 [ 21]: 864b233581cebf3b +Block 0006 [ 22]: a69dc39ed76df5b1 +Block 0006 [ 23]: d287fd37bd184b4b +Block 0006 [ 24]: adcb508656f50a1d +Block 0006 [ 25]: 8345f93a185de052 +Block 0006 [ 26]: 32ee921a5af33f77 +Block 0006 [ 27]: d10349bb3f1a2e60 +Block 0006 [ 28]: 326d8e10ed711927 +Block 0006 [ 29]: f1ea40baf2e29205 +Block 0006 [ 30]: 5ddee886519f975b +Block 0006 [ 31]: 3e00b776de23dbf9 +Block 0006 [ 32]: 09b0fc2bcbc5ca5e +Block 0006 [ 33]: 6c9f8382caaf682b +Block 0006 [ 34]: bbce5e8d97ca0f8a +Block 0006 [ 35]: 94c9eea4942822ac +Block 0006 [ 36]: 09ed551735403790 +Block 0006 [ 37]: f7f7836b8a450424 +Block 0006 [ 38]: e7cc18315c9d0cc3 +Block 0006 [ 39]: e6ad27351c122000 +Block 0006 [ 40]: 60400244ed421285 +Block 0006 [ 41]: c803b2797ce9ead5 +Block 0006 [ 42]: 4fb1724c2afde396 +Block 0006 [ 43]: 62e51ea923c226b8 +Block 0006 [ 44]: c10866f10d269f8e +Block 0006 [ 45]: a291622995a7e4b9 +Block 0006 [ 46]: d457804368b2b68a +Block 0006 [ 47]: fd6bab4757e691bc +Block 0006 [ 48]: bb79b0ae54383df4 +Block 0006 [ 49]: 8775ea6bde327a09 +Block 0006 [ 50]: 0054bbfcce82e402 +Block 0006 [ 51]: 7ec75affa73a4918 +Block 0006 [ 52]: 7a01e09e750bea45 +Block 0006 [ 53]: 1da549e65e8991e6 +Block 0006 [ 54]: 65fff25852256be3 +Block 0006 [ 55]: 6054391646456bac +Block 0006 [ 56]: 75f3b5c0f96b5e33 +Block 0006 [ 57]: 89eebe6001f1afb0 +Block 0006 [ 58]: 98806a81763232bd +Block 0006 [ 59]: 77e23908d1632741 +Block 0006 [ 60]: 0898a711d56a4778 +Block 0006 [ 61]: 154939153173d960 +Block 0006 [ 62]: 279cf70d61ba82e0 +Block 0006 [ 63]: b90121d04bec0415 +Block 0006 [ 64]: 264b25de48cb8bfa +Block 0006 [ 65]: f82c5a6b2a60cde6 +Block 0006 [ 66]: 19d22e2cc1202e8e +Block 0006 [ 67]: fd2af76930971bfb +Block 0006 [ 68]: 1216b5c315238061 +Block 0006 [ 69]: c2e74ba6d227f392 +Block 0006 [ 70]: a9ec024ab42ed537 +Block 0006 [ 71]: aa8a6bcb77dd838a +Block 0006 [ 72]: dcc302dbc34f005d +Block 0006 [ 73]: 0f8b425a61ffee95 +Block 0006 [ 74]: 119c8ec42b470039 +Block 0006 [ 75]: 1e9df7d4fcd392c7 +Block 0006 [ 76]: 58efd0e8e7894f85 +Block 0006 [ 77]: 28bf582abcef94fd +Block 0006 [ 78]: f73f1167a97ff861 +Block 0006 [ 79]: 346d766e03a2ed71 +Block 0006 [ 80]: fc398b655ef68204 +Block 0006 [ 81]: 70e49a4e1c35da2a +Block 0006 [ 82]: 7c88d9a7e02dd08d +Block 0006 [ 83]: 1a242872c6c6501f +Block 0006 [ 84]: 45a6d35f0a769228 +Block 0006 [ 85]: 6ac75dc596984efe +Block 0006 [ 86]: 08a8c6acf1dbd35a +Block 0006 [ 87]: a7c96972f71393b7 +Block 0006 [ 88]: fcde534c13fb4f3a +Block 0006 [ 89]: 6e7791d3dca43b7b +Block 0006 [ 90]: b7e7e7149e54e311 +Block 0006 [ 91]: ae36663b75583d74 +Block 0006 [ 92]: ca29be960080870e +Block 0006 [ 93]: e9ae573efeba7733 +Block 0006 [ 94]: 7666da38d0256d63 +Block 0006 [ 95]: fc8fecc855b22f83 +Block 0006 [ 96]: 17aeb02e5bfd3870 +Block 0006 [ 97]: 523a873983a5fef4 +Block 0006 [ 98]: c517c29248c433ca +Block 0006 [ 99]: 9291190aa889242c +Block 0006 [100]: 5c165c8747de1f4d +Block 0006 [101]: 97e6a8ecc76b2408 +Block 0006 [102]: 0d661557f80eff9d +Block 0006 [103]: 11ff8003a5af2667 +Block 0006 [104]: adbd07f681b3df22 +Block 0006 [105]: 4696fd460dd67114 +Block 0006 [106]: a00ad52b70e15631 +Block 0006 [107]: 1c14750d3d9b138c +Block 0006 [108]: e89f1af55e6919ae +Block 0006 [109]: f3a07ba7492c8b43 +Block 0006 [110]: 6c6a30cf18f5b9a0 +Block 0006 [111]: 112f356d18dce24b +Block 0006 [112]: 90c160c1efaca7ff +Block 0006 [113]: 38a100656072b8ca +Block 0006 [114]: b6d618191ddbe1a1 +Block 0006 [115]: 953791eb67e3e8a4 +Block 0006 [116]: 064ed438e27e27ce +Block 0006 [117]: 513b1cec646ad039 +Block 0006 [118]: 4cbc5de8ec45b103 +Block 0006 [119]: 46905804d90bda25 +Block 0006 [120]: 9949ec8277cf3959 +Block 0006 [121]: 7581ae0071b4de6e +Block 0006 [122]: 4f266c522e844d11 +Block 0006 [123]: cd96ce921dd487e3 +Block 0006 [124]: 3abc3c9a1d0cbee1 +Block 0006 [125]: 666c8582319d34ea +Block 0006 [126]: 0e72bbb45584bf7d +Block 0006 [127]: 2e1c1e750188d265 +Block 0007 [ 0]: 3d6a0d353a582cc3 +Block 0007 [ 1]: 725b5cb52fdcc804 +Block 0007 [ 2]: 0d637aabd89a5f42 +Block 0007 [ 3]: cdd0faf2f954793d +Block 0007 [ 4]: a8a226bdfe9b303b +Block 0007 [ 5]: 5bb2904a4ffd77b0 +Block 0007 [ 6]: a6ff9e1e69e08a3b +Block 0007 [ 7]: 4d765e9f5a455668 +Block 0007 [ 8]: d8f5b730f9e01cb7 +Block 0007 [ 9]: ffc5170716649d8e +Block 0007 [ 10]: cbca0d385f668bb3 +Block 0007 [ 11]: 23124a2f75853cc6 +Block 0007 [ 12]: c266ba9d28147cc0 +Block 0007 [ 13]: 3433fdda5ee50401 +Block 0007 [ 14]: 83b14f2bb79849cc +Block 0007 [ 15]: 4e47b754dd755a6a +Block 0007 [ 16]: 0711503b0e364de1 +Block 0007 [ 17]: 96b399210d06c4bd +Block 0007 [ 18]: e7a0c87f6ce24190 +Block 0007 [ 19]: 952db034322194f7 +Block 0007 [ 20]: bf826ab367d69924 +Block 0007 [ 21]: ca7a0e451f0baedf +Block 0007 [ 22]: bc199a271346d96d +Block 0007 [ 23]: a89504ec33d58563 +Block 0007 [ 24]: 650fe1dd47c229ac +Block 0007 [ 25]: c8b248c48aab400f +Block 0007 [ 26]: 9c79799cb6d7b11e +Block 0007 [ 27]: ca00306b9e70a62f +Block 0007 [ 28]: 7a9afb832313f70d +Block 0007 [ 29]: 7699ea3c8b6d93f3 +Block 0007 [ 30]: 2081b3b9830ada40 +Block 0007 [ 31]: 84dfbb20400b7794 +Block 0007 [ 32]: 09711874dcde8f25 +Block 0007 [ 33]: 2146eefadd811802 +Block 0007 [ 34]: 38ed72bcae48eb1e +Block 0007 [ 35]: 1c780fddf3718799 +Block 0007 [ 36]: ec20a679b1ba8e16 +Block 0007 [ 37]: e2e3779e19f633a5 +Block 0007 [ 38]: 85b74c1f84fceede +Block 0007 [ 39]: 9982bbd5ae9822b6 +Block 0007 [ 40]: 4724c09a0f3a9eb3 +Block 0007 [ 41]: cc4b6ee011d10bf9 +Block 0007 [ 42]: 9c1d3294f23d0f61 +Block 0007 [ 43]: 2c7fbde5e6d9f1ef +Block 0007 [ 44]: 4cb326c5aeb97687 +Block 0007 [ 45]: 5ee9a98967f03584 +Block 0007 [ 46]: 54e070d3f4868d43 +Block 0007 [ 47]: fbed90f1e791fe2b +Block 0007 [ 48]: 5372b297fc080bb2 +Block 0007 [ 49]: f1eea4e6e651fa54 +Block 0007 [ 50]: 18e19f83b3845e8b +Block 0007 [ 51]: 982061488bf2c91e +Block 0007 [ 52]: 000f915b600b1bbf +Block 0007 [ 53]: 551754f75f24f4e2 +Block 0007 [ 54]: 9cb0d725abb977f2 +Block 0007 [ 55]: e41c7bc36ac799d2 +Block 0007 [ 56]: 83d055c7db8eb6a9 +Block 0007 [ 57]: 990206c62219daa6 +Block 0007 [ 58]: 6de34850e119e11f +Block 0007 [ 59]: 5e463ed17b7fec81 +Block 0007 [ 60]: 112ea7aefee3a408 +Block 0007 [ 61]: e0aa67218af846e5 +Block 0007 [ 62]: b85f6a690c0ddb39 +Block 0007 [ 63]: c1934b1adb438156 +Block 0007 [ 64]: c7d07d9d5667e378 +Block 0007 [ 65]: 210e4d69ecfb89e5 +Block 0007 [ 66]: ea7d450766f1afdc +Block 0007 [ 67]: 2f18fda4327f7130 +Block 0007 [ 68]: f3d7c1cc7034f9de +Block 0007 [ 69]: d83b6b3e29f818db +Block 0007 [ 70]: de251265d93d6b4e +Block 0007 [ 71]: bfe371f18fdaf889 +Block 0007 [ 72]: dfe78a1ad4ecd33d +Block 0007 [ 73]: 70bfbe20c89fe34b +Block 0007 [ 74]: dd52d0f45682a779 +Block 0007 [ 75]: fcbbb05bfcb94a23 +Block 0007 [ 76]: b872ebe1c252cf63 +Block 0007 [ 77]: 314c2bdb319a7747 +Block 0007 [ 78]: a966ac152070955b +Block 0007 [ 79]: bf909e5d43b0772b +Block 0007 [ 80]: d3d47c8e0514d23d +Block 0007 [ 81]: 94118497f2ab005e +Block 0007 [ 82]: 1911d0a7cf5af514 +Block 0007 [ 83]: b4a8a52ace59fe3d +Block 0007 [ 84]: 36c35f2fae28046a +Block 0007 [ 85]: 9efc57f45f906003 +Block 0007 [ 86]: 440f5c79192c80b4 +Block 0007 [ 87]: 647e0eb35cdd560f +Block 0007 [ 88]: 34fe5ab26c3ea8b3 +Block 0007 [ 89]: 945b70c653f76a84 +Block 0007 [ 90]: 67cd6bc8159d6ff9 +Block 0007 [ 91]: 2dc4f192345b95ec +Block 0007 [ 92]: f124ffb3359123ab +Block 0007 [ 93]: c4f88c028b3cd129 +Block 0007 [ 94]: a345e2bb55778fe4 +Block 0007 [ 95]: 691f7549a345d348 +Block 0007 [ 96]: 04486d82573ae921 +Block 0007 [ 97]: 98d3114ddc02a162 +Block 0007 [ 98]: 519bdca611bbeaa9 +Block 0007 [ 99]: 8791fba88b020099 +Block 0007 [100]: d514acbe5dfec5bb +Block 0007 [101]: e45d4389e86c7450 +Block 0007 [102]: 3a71f5aa2eb5cd8d +Block 0007 [103]: 80fdc6c491fea6c6 +Block 0007 [104]: b92d709cda9c22e5 +Block 0007 [105]: 59f0a6d67ae30bc3 +Block 0007 [106]: 563e24db351fec9c +Block 0007 [107]: 89319bc5b615c8e2 +Block 0007 [108]: cd24702c8f2b2a4b +Block 0007 [109]: f847342241040fc2 +Block 0007 [110]: fd5471a0f656059c +Block 0007 [111]: 2540eda8a41f5dc7 +Block 0007 [112]: 0938197b41f26a6e +Block 0007 [113]: 74bf1b4f4185530e +Block 0007 [114]: 0e9b724c2ead5c00 +Block 0007 [115]: 5dde068018d59b63 +Block 0007 [116]: 7d2300969b112ade +Block 0007 [117]: d143931a829a962e +Block 0007 [118]: 1130f16e830f47c1 +Block 0007 [119]: 4ca052b7c85637b6 +Block 0007 [120]: 9994f892e4ff0b39 +Block 0007 [121]: 5364a7ef273f73b1 +Block 0007 [122]: 4f17e1310ef3231a +Block 0007 [123]: 7f8a901ea990cf27 +Block 0007 [124]: 45c55fb656b02173 +Block 0007 [125]: 3a1ea5407b7fea45 +Block 0007 [126]: 002bf87dee768e57 +Block 0007 [127]: 2dc7651b0c5583f8 +Block 0008 [ 0]: 742f8fb520ae6daa +Block 0008 [ 1]: fce446d5bc718358 +Block 0008 [ 2]: a93b373872a69d36 +Block 0008 [ 3]: 13e5c9bc2e6affd2 +Block 0008 [ 4]: cc282d9f8703553b +Block 0008 [ 5]: 820575275919b5d9 +Block 0008 [ 6]: 817ea5478b0effd6 +Block 0008 [ 7]: f9881c280744754d +Block 0008 [ 8]: 7fb7b8fc7a1eb8ef +Block 0008 [ 9]: ffd4b707f3d45de2 +Block 0008 [ 10]: dd84ae76abbf5764 +Block 0008 [ 11]: a1021bea15349ebc +Block 0008 [ 12]: dc085965b90ef943 +Block 0008 [ 13]: 31e5c560a7d7b77b +Block 0008 [ 14]: be032148a0c07c8f +Block 0008 [ 15]: a753419700cfc665 +Block 0008 [ 16]: 6ebe31a9f4254abf +Block 0008 [ 17]: 55b9f7db14c8244e +Block 0008 [ 18]: 1a8b2e3ccf030e92 +Block 0008 [ 19]: 82636fca802840dd +Block 0008 [ 20]: f732a1969e172b06 +Block 0008 [ 21]: edd93cf252c26f25 +Block 0008 [ 22]: ac3ad0bbcdd482eb +Block 0008 [ 23]: d75ff2eaa53fd962 +Block 0008 [ 24]: 9c07e2e7b31a5b8e +Block 0008 [ 25]: addda03cda46d7cc +Block 0008 [ 26]: a5bf703a5fb91a4c +Block 0008 [ 27]: 741f1336aec16ba8 +Block 0008 [ 28]: 10182d82ff473a9c +Block 0008 [ 29]: 347fb75292f43be2 +Block 0008 [ 30]: 847b9eb98c312b36 +Block 0008 [ 31]: 33bc3ec0ad10331b +Block 0008 [ 32]: 15b2caf7cb5410db +Block 0008 [ 33]: 0c3550be731282e4 +Block 0008 [ 34]: 5a397cc26fff99fa +Block 0008 [ 35]: b17c5d6e4fd1ede4 +Block 0008 [ 36]: db2fa43068790f57 +Block 0008 [ 37]: 3269f58b18995887 +Block 0008 [ 38]: f47603af7a10d897 +Block 0008 [ 39]: f6d4a7472cf56197 +Block 0008 [ 40]: ef0d98db05c2bbcd +Block 0008 [ 41]: ce3f14c41600ff4b +Block 0008 [ 42]: 32f4c504313caf7d +Block 0008 [ 43]: f3b880db5af93e8f +Block 0008 [ 44]: 0fe500aa73c7088f +Block 0008 [ 45]: aee6e34e64b6cb6e +Block 0008 [ 46]: 3a05bef736d336dc +Block 0008 [ 47]: 6e853605e75f7183 +Block 0008 [ 48]: 206236c8094ebac1 +Block 0008 [ 49]: b35b4b3d8c5fb4ea +Block 0008 [ 50]: 28ecc628dc848c7d +Block 0008 [ 51]: 735c7631822806f4 +Block 0008 [ 52]: 31bb983646cd47f0 +Block 0008 [ 53]: 4bd96277dc02af9e +Block 0008 [ 54]: 70c3b35fda965c73 +Block 0008 [ 55]: 413eefd5bcafb495 +Block 0008 [ 56]: a1f06d3c4204d355 +Block 0008 [ 57]: f2b35ed34d3659ce +Block 0008 [ 58]: 5dbdb39ab57a8787 +Block 0008 [ 59]: d03c3ec335d9a228 +Block 0008 [ 60]: 5e440fcc902494ef +Block 0008 [ 61]: eeae54479b9f6253 +Block 0008 [ 62]: 12b636e97e88b26c +Block 0008 [ 63]: e392640ef6fbfccb +Block 0008 [ 64]: 439779f19e28aed4 +Block 0008 [ 65]: 8586ae7521b5f693 +Block 0008 [ 66]: 4c9c7e32a95bf1a6 +Block 0008 [ 67]: 7bd2f4eb39dd3020 +Block 0008 [ 68]: 486c6934408bedca +Block 0008 [ 69]: 99c8621fd54e9641 +Block 0008 [ 70]: ab95e5111f8a859a +Block 0008 [ 71]: 16c72004f220c79d +Block 0008 [ 72]: deef568d8f11d1ae +Block 0008 [ 73]: 3866577767167f84 +Block 0008 [ 74]: 448c4025a5b6b8c2 +Block 0008 [ 75]: 2601576f5e73029f +Block 0008 [ 76]: 48979d9e18c40aaa +Block 0008 [ 77]: f63696d7e72f4ab2 +Block 0008 [ 78]: e1be44739c6330cb +Block 0008 [ 79]: fcefc4f07881bedc +Block 0008 [ 80]: cb7bcf5fe34c782a +Block 0008 [ 81]: e536242d66e2b5e4 +Block 0008 [ 82]: d52c6c430151e02a +Block 0008 [ 83]: d67a851128f1af4b +Block 0008 [ 84]: 5c40071ed9fbe92d +Block 0008 [ 85]: ffea71996bb4f5c5 +Block 0008 [ 86]: daf4bdc1e45dcfdd +Block 0008 [ 87]: 91d04cfa46997480 +Block 0008 [ 88]: 3055156993a62fe4 +Block 0008 [ 89]: bbc1e67dfdb0f4cd +Block 0008 [ 90]: 39309ec35c7b4b49 +Block 0008 [ 91]: 303f31e117d00073 +Block 0008 [ 92]: 21a92f25e01fb7a0 +Block 0008 [ 93]: 0e0bc2d80d2f294e +Block 0008 [ 94]: 5ddf007474aec619 +Block 0008 [ 95]: 2cb4833140dbb020 +Block 0008 [ 96]: f7cc731050f4146b +Block 0008 [ 97]: d9c3005ec7fc26ac +Block 0008 [ 98]: 608d03d6c052d7e9 +Block 0008 [ 99]: 9dbe4bdff7dd483b +Block 0008 [100]: a735b1afee8074a6 +Block 0008 [101]: d85adbf0d4c585fe +Block 0008 [102]: 3d83720b804a263a +Block 0008 [103]: a9ad69e57cedb183 +Block 0008 [104]: a7d39c61c07eeb38 +Block 0008 [105]: c99c6f286d7b9431 +Block 0008 [106]: b8285a86d03c906b +Block 0008 [107]: df798910bc041924 +Block 0008 [108]: 8c49386589f299a7 +Block 0008 [109]: 45fe92757bf6d8d6 +Block 0008 [110]: 7dba0018b478baee +Block 0008 [111]: 56cf5f3f45a78ace +Block 0008 [112]: 1916dd1b710c89b8 +Block 0008 [113]: b02351109870d936 +Block 0008 [114]: e8ff79a2bd9e3d5d +Block 0008 [115]: d710953fc470a700 +Block 0008 [116]: 9cb71e374ecf8e65 +Block 0008 [117]: 6e95efbaafa1d7ca +Block 0008 [118]: 1d594725c8808490 +Block 0008 [119]: 792ca14862c298f8 +Block 0008 [120]: afa12fb82ecc5ec2 +Block 0008 [121]: ff7287be94d8ab12 +Block 0008 [122]: e36b81492fc2888e +Block 0008 [123]: c30a09066d63a87d +Block 0008 [124]: 6adde8f5e302d407 +Block 0008 [125]: a3d37dcc63d0ce1a +Block 0008 [126]: 5e5a76b9feac9179 +Block 0008 [127]: 38a72e7f58178079 +Block 0009 [ 0]: b0a3780fd2bdce93 +Block 0009 [ 1]: 27e7d325927ac969 +Block 0009 [ 2]: 2f2083aae423aaf9 +Block 0009 [ 3]: b4a06fe202ad3cac +Block 0009 [ 4]: 445f1088b3dc4aa1 +Block 0009 [ 5]: 13857c469c62aedb +Block 0009 [ 6]: afc29cfad94924af +Block 0009 [ 7]: face093366f984d4 +Block 0009 [ 8]: af941754039f0f69 +Block 0009 [ 9]: be3cf961d04b269b +Block 0009 [ 10]: 3570b906c3d08907 +Block 0009 [ 11]: bd2e3cd3bc2820a6 +Block 0009 [ 12]: a4211b9697d1882e +Block 0009 [ 13]: 304cbd04ac5ea0f1 +Block 0009 [ 14]: bc8a44351a93bf06 +Block 0009 [ 15]: dc35dce20205f20e +Block 0009 [ 16]: 27f87fc01a720476 +Block 0009 [ 17]: a7bf7924b4c9514d +Block 0009 [ 18]: 5711917da46d37d5 +Block 0009 [ 19]: 2b7871339e862ec0 +Block 0009 [ 20]: 37d5663947745563 +Block 0009 [ 21]: df99f88b5ad39469 +Block 0009 [ 22]: b8e2f35e53a7cec0 +Block 0009 [ 23]: 564180fd607bb368 +Block 0009 [ 24]: 8cad6f3858da8350 +Block 0009 [ 25]: fb611a961ad95aa5 +Block 0009 [ 26]: 98ef6ba355876428 +Block 0009 [ 27]: 1b32903fac102ee3 +Block 0009 [ 28]: 427ccb260b1e7f48 +Block 0009 [ 29]: 735c3b2404a42461 +Block 0009 [ 30]: 5bed75723136a22b +Block 0009 [ 31]: e962f930dc954571 +Block 0009 [ 32]: d4a907ed721dbd79 +Block 0009 [ 33]: 955bbdda37b3f34a +Block 0009 [ 34]: 8f1fdd908a91bda4 +Block 0009 [ 35]: 7b79831f7e8b8113 +Block 0009 [ 36]: 26a8e6613b3b2b49 +Block 0009 [ 37]: 180e1ee55b199460 +Block 0009 [ 38]: 1ca571295ae0ed7e +Block 0009 [ 39]: 3f5b7ca096599301 +Block 0009 [ 40]: e61f938973523bb8 +Block 0009 [ 41]: 87c36e5e521488f4 +Block 0009 [ 42]: d8d539b4d237e833 +Block 0009 [ 43]: 1ab7390b90a1a274 +Block 0009 [ 44]: bc917b2175e58dcb +Block 0009 [ 45]: a7d934862209853f +Block 0009 [ 46]: 637ca59d567b62e5 +Block 0009 [ 47]: fff021798cdf5193 +Block 0009 [ 48]: 9b19eb391a8ee238 +Block 0009 [ 49]: c11508809ecefdab +Block 0009 [ 50]: 4c86f3d3e42c58f9 +Block 0009 [ 51]: 40310029f5ea5939 +Block 0009 [ 52]: 17b721213f596d4e +Block 0009 [ 53]: 98c4d80ebebd4bd7 +Block 0009 [ 54]: c0a31eddf6a9d7d6 +Block 0009 [ 55]: a1fb4f66485fc6e2 +Block 0009 [ 56]: f11382f56acc85c5 +Block 0009 [ 57]: fa0b75b0a88d10e9 +Block 0009 [ 58]: 12ce42a670ce1fd0 +Block 0009 [ 59]: 76b4da0cef87cc68 +Block 0009 [ 60]: a8d6a4c9e8be9f7a +Block 0009 [ 61]: b907271a2a031157 +Block 0009 [ 62]: 199befa19191d2e4 +Block 0009 [ 63]: b0e40c9c1d56081b +Block 0009 [ 64]: 01e145b266f8de0b +Block 0009 [ 65]: e34b15fa79fa49d7 +Block 0009 [ 66]: 97fd6b6f65bb237e +Block 0009 [ 67]: d406737c4ba4e39e +Block 0009 [ 68]: ca55f8a35aba2d71 +Block 0009 [ 69]: be75c5e31dae69dd +Block 0009 [ 70]: e2f19bb804e76643 +Block 0009 [ 71]: 84c93f1a2d5406de +Block 0009 [ 72]: 71de7e8ea38acc40 +Block 0009 [ 73]: 6045de83dcd55a75 +Block 0009 [ 74]: 5fbb843a3027bc35 +Block 0009 [ 75]: 6a048e3c908d32d2 +Block 0009 [ 76]: e1786cec571f1b02 +Block 0009 [ 77]: b8017677e14f52ad +Block 0009 [ 78]: a9c1c3f396beb68a +Block 0009 [ 79]: 2dee5c5474e27a16 +Block 0009 [ 80]: a33ddec78c2791a2 +Block 0009 [ 81]: c3993ab011a8c326 +Block 0009 [ 82]: 0156139d60d9ef8f +Block 0009 [ 83]: b043451f90b79435 +Block 0009 [ 84]: fe0a7ab213f5c1ba +Block 0009 [ 85]: c938c6c891be1a10 +Block 0009 [ 86]: a622051332acc0d8 +Block 0009 [ 87]: 296927a8758884f9 +Block 0009 [ 88]: 56fd6a2eed0d9492 +Block 0009 [ 89]: 6a015aa7cfef1131 +Block 0009 [ 90]: a6b617e5eec737a2 +Block 0009 [ 91]: 513fc9c9cffdb081 +Block 0009 [ 92]: 735c5b12ec075d55 +Block 0009 [ 93]: 154db0572a26a799 +Block 0009 [ 94]: b52849ae516cbaa0 +Block 0009 [ 95]: 499bf311c6d637c2 +Block 0009 [ 96]: 7cc8a466ca999627 +Block 0009 [ 97]: c0c51ac7a40c09a8 +Block 0009 [ 98]: cc4a21f7d98856df +Block 0009 [ 99]: 2708b57c1aa732d9 +Block 0009 [100]: 288c8a7fa02d1c03 +Block 0009 [101]: bc0a22b5efb71cf7 +Block 0009 [102]: 3deb5b3417c4b18d +Block 0009 [103]: d51bc37c379fa6f5 +Block 0009 [104]: f514be36ce5779a1 +Block 0009 [105]: ea0e5b5b10e84798 +Block 0009 [106]: 79a473516c9e06bc +Block 0009 [107]: d40ede4f6f342260 +Block 0009 [108]: 7377637414121f62 +Block 0009 [109]: 9c494885f3873660 +Block 0009 [110]: 838cb9b3336aa24b +Block 0009 [111]: fa47362cdc574e05 +Block 0009 [112]: a5839dcd7114bd83 +Block 0009 [113]: 78a13f2beb6f9156 +Block 0009 [114]: 288375a664188f4f +Block 0009 [115]: 753c63ed46a2e9fe +Block 0009 [116]: 370dff8650c5b045 +Block 0009 [117]: 7aae6f1745618d97 +Block 0009 [118]: f43c9b5dcfee3f5a +Block 0009 [119]: b0680fd9491ad64c +Block 0009 [120]: 1141e3c369745435 +Block 0009 [121]: 85ca43583cf136a8 +Block 0009 [122]: bc81e26caa3450b8 +Block 0009 [123]: 45ab7b12ba8fa62d +Block 0009 [124]: 1ab06a8decb95464 +Block 0009 [125]: 02ea3e5285e64651 +Block 0009 [126]: 5bf0abfdda4580fd +Block 0009 [127]: 725f7b6cff77c6e0 +Block 0010 [ 0]: 03ddd0d5570954ca +Block 0010 [ 1]: ef3531bd3c791152 +Block 0010 [ 2]: 151dece8403c0d9d +Block 0010 [ 3]: da83b8a08211a3a1 +Block 0010 [ 4]: 74ce6090bbcddce1 +Block 0010 [ 5]: ca859424072c4c37 +Block 0010 [ 6]: 2a28b30cff906536 +Block 0010 [ 7]: eb19f039a6e709c2 +Block 0010 [ 8]: a8d51731be7af8e7 +Block 0010 [ 9]: f7b20930fb8c9e2f +Block 0010 [ 10]: 5817466b12638a27 +Block 0010 [ 11]: 9a148456eddfcfc6 +Block 0010 [ 12]: 809e57c067c64830 +Block 0010 [ 13]: f52a48b3b0a49652 +Block 0010 [ 14]: 46486dbab9e4f52e +Block 0010 [ 15]: d19cfd34073da96c +Block 0010 [ 16]: ae6c8f849700c5fa +Block 0010 [ 17]: bb26de83dc309ddd +Block 0010 [ 18]: 3621501f29e43d7e +Block 0010 [ 19]: 6d49650cb2caf71f +Block 0010 [ 20]: ff570032488b153e +Block 0010 [ 21]: 5f357afb9e6e2a54 +Block 0010 [ 22]: 645e38d8d1b39400 +Block 0010 [ 23]: 0741788f71b54260 +Block 0010 [ 24]: 0cee6a102d995f2d +Block 0010 [ 25]: 2a85c57a64e631e3 +Block 0010 [ 26]: 59f7db1d77c01f84 +Block 0010 [ 27]: 0c8e05b7b0b36d8f +Block 0010 [ 28]: a2e84e8433aef9d8 +Block 0010 [ 29]: 6ffcb0a98564a770 +Block 0010 [ 30]: 304677fa27561674 +Block 0010 [ 31]: cc9189fa4d49edc2 +Block 0010 [ 32]: e8f54aafcc8f43a3 +Block 0010 [ 33]: 46586c9b98c09a8c +Block 0010 [ 34]: 4d35918e1e54a1e3 +Block 0010 [ 35]: 21e45b306f3096b3 +Block 0010 [ 36]: 1efe6f135e4ded82 +Block 0010 [ 37]: ff0fe64bb2ce07d4 +Block 0010 [ 38]: 6ed2ce4f40dfdc7d +Block 0010 [ 39]: 77afc5bf75181a5b +Block 0010 [ 40]: ccd042f31c5ee238 +Block 0010 [ 41]: 52340d666cb68e95 +Block 0010 [ 42]: 97ab16d262602b70 +Block 0010 [ 43]: 1f39fd2aa184e1ed +Block 0010 [ 44]: c7702a1d4d12e238 +Block 0010 [ 45]: 84ceb8d458e0e33d +Block 0010 [ 46]: 9272dae6375d93c3 +Block 0010 [ 47]: d30477baec2da838 +Block 0010 [ 48]: 31bcea37afdc96bc +Block 0010 [ 49]: b6d44bf5e49542e8 +Block 0010 [ 50]: 11f9e05081bc0e28 +Block 0010 [ 51]: c6bb99b0a771061d +Block 0010 [ 52]: e1786981536369f7 +Block 0010 [ 53]: 28e61922e0e07d08 +Block 0010 [ 54]: ff3334fbd1246f0e +Block 0010 [ 55]: 902b19655419b125 +Block 0010 [ 56]: fa397b7ac7afe542 +Block 0010 [ 57]: 1d20f5e5297b3f68 +Block 0010 [ 58]: 7ad196c294115559 +Block 0010 [ 59]: e2df32ba888e23be +Block 0010 [ 60]: d61a690ecabc6747 +Block 0010 [ 61]: f70414d921fec4d8 +Block 0010 [ 62]: 87232a2ce7e819d2 +Block 0010 [ 63]: 48986188e833df7f +Block 0010 [ 64]: 6b691c31cc8cd991 +Block 0010 [ 65]: 3f6ecf0445fc11b4 +Block 0010 [ 66]: e3cf3c583bc686a2 +Block 0010 [ 67]: 4ba77f30caaeddd6 +Block 0010 [ 68]: 120abdd4f3be4414 +Block 0010 [ 69]: 135f1c23fb5fb6f0 +Block 0010 [ 70]: 523ec1b7a2c0dbbc +Block 0010 [ 71]: 68f0591525973d04 +Block 0010 [ 72]: 8dfbef7be78d85a8 +Block 0010 [ 73]: b6914a36a85c30d0 +Block 0010 [ 74]: e543aaa0bf3022fa +Block 0010 [ 75]: cd6a0586a48cbcbd +Block 0010 [ 76]: ecd093c52b48bb8f +Block 0010 [ 77]: 1fb1b6154d0885e9 +Block 0010 [ 78]: 9373b1fddfcd7095 +Block 0010 [ 79]: 839d266721445ca9 +Block 0010 [ 80]: 9eb08685427956ac +Block 0010 [ 81]: 0e67e850943c8234 +Block 0010 [ 82]: 48b1bfefc669f248 +Block 0010 [ 83]: 9ac301131fd1c8c9 +Block 0010 [ 84]: a24208585c03e11e +Block 0010 [ 85]: 3690d7a5278eeb32 +Block 0010 [ 86]: 6b0e1a590041722b +Block 0010 [ 87]: d716ae87093492fe +Block 0010 [ 88]: ed72bf36d55e6044 +Block 0010 [ 89]: eb728fd156a92044 +Block 0010 [ 90]: 73b4ba90f53fed19 +Block 0010 [ 91]: 12775011afcf408c +Block 0010 [ 92]: 4fdf59cac70fe25c +Block 0010 [ 93]: 686695291bcf42a5 +Block 0010 [ 94]: b6830f00eec798ae +Block 0010 [ 95]: 360858c0dcc89f12 +Block 0010 [ 96]: f8e4d23cd8dfe213 +Block 0010 [ 97]: 9c0e60bc54133096 +Block 0010 [ 98]: 4527904c9616d116 +Block 0010 [ 99]: 9c6c29121236d5f8 +Block 0010 [100]: 895f1da7f88403c5 +Block 0010 [101]: 66a84eb06f5d9f70 +Block 0010 [102]: d8c40c8c0fa58c6b +Block 0010 [103]: 1e3334879f0a2c95 +Block 0010 [104]: f5c5e477fce27587 +Block 0010 [105]: 8bf3ccd456124f33 +Block 0010 [106]: 35062f97ca508398 +Block 0010 [107]: 99f2ef47178939f3 +Block 0010 [108]: 25bec767a4353792 +Block 0010 [109]: 65cb0390af523f96 +Block 0010 [110]: f304b1bc4a25b07d +Block 0010 [111]: 38f3a810a5a125b7 +Block 0010 [112]: 550cfb4edbbd1860 +Block 0010 [113]: 1ae72d2f286bb73e +Block 0010 [114]: bdaf0575414d4b9f +Block 0010 [115]: c6c7935c63c31fe8 +Block 0010 [116]: e95b74dd288e34b2 +Block 0010 [117]: b1903cce17b3d187 +Block 0010 [118]: 0146aa1f3ad8af94 +Block 0010 [119]: e5dd909b6501de5f +Block 0010 [120]: 29b549c6418ca13e +Block 0010 [121]: 783588f7cb9812d2 +Block 0010 [122]: 12ebda418bc5d4a6 +Block 0010 [123]: 1c45f811c53c0cfa +Block 0010 [124]: e839adeabc081579 +Block 0010 [125]: c675e569e3e8c008 +Block 0010 [126]: f2fe4a325fbb0afb +Block 0010 [127]: 968e549856139bcf +Block 0011 [ 0]: 4c49fef7ac59b00f +Block 0011 [ 1]: 0b77e546680ba26c +Block 0011 [ 2]: 50f92c0489854697 +Block 0011 [ 3]: 9017915d63b7939f +Block 0011 [ 4]: fa05ffa87d836044 +Block 0011 [ 5]: e3f79adbb7a7a520 +Block 0011 [ 6]: 72daaff6c8d382f8 +Block 0011 [ 7]: e82c1da0c1930016 +Block 0011 [ 8]: 7cd9c05a7d016194 +Block 0011 [ 9]: 4cb21d45b7ccd0e9 +Block 0011 [ 10]: 15ca0a31b3e48180 +Block 0011 [ 11]: 8044760aaec86f6d +Block 0011 [ 12]: b6f642412cf27a8f +Block 0011 [ 13]: 9b60769987b2563c +Block 0011 [ 14]: e0ce63cb590a4ea2 +Block 0011 [ 15]: 94678a3461c13a0c +Block 0011 [ 16]: 84f191a8225d0e4c +Block 0011 [ 17]: 217d697f39654936 +Block 0011 [ 18]: f46ace239ca24436 +Block 0011 [ 19]: 04bdb1e1c224687a +Block 0011 [ 20]: c8246b5f41051cd0 +Block 0011 [ 21]: 816447ddbb3ac9c7 +Block 0011 [ 22]: d758792a4a7137e0 +Block 0011 [ 23]: e682f6f30d1d433b +Block 0011 [ 24]: 0858a63103128803 +Block 0011 [ 25]: 025739918a0a3f53 +Block 0011 [ 26]: a510d28ff33d16ee +Block 0011 [ 27]: 948f5fab13544be2 +Block 0011 [ 28]: 1a4309dbf409b687 +Block 0011 [ 29]: 8038e07e5565f2cd +Block 0011 [ 30]: c5b37d07e8ae12fc +Block 0011 [ 31]: 598afd83af3da73c +Block 0011 [ 32]: 7474f32deaab1535 +Block 0011 [ 33]: e48f764af2a6abcf +Block 0011 [ 34]: f5d7003e1d44ed2f +Block 0011 [ 35]: d724ef97ce8f28ef +Block 0011 [ 36]: 99c664b60d84b037 +Block 0011 [ 37]: e9fde5a58781af6e +Block 0011 [ 38]: b99837a91be9cb19 +Block 0011 [ 39]: 59f96c210e2fa6ac +Block 0011 [ 40]: ccc66eb3fa30a338 +Block 0011 [ 41]: b5c869fd62a7280e +Block 0011 [ 42]: 6e8aa1928d7dc215 +Block 0011 [ 43]: beee10b5278d8d87 +Block 0011 [ 44]: 6b5ed4ed79ed72c5 +Block 0011 [ 45]: 47f7b8798b2f68de +Block 0011 [ 46]: 543a7a6285c3dcc4 +Block 0011 [ 47]: e9d0f798b6d71392 +Block 0011 [ 48]: 46cfa43dbc22d22e +Block 0011 [ 49]: 1819aa20872a5242 +Block 0011 [ 50]: 14722a59b4bb23ff +Block 0011 [ 51]: cfd15dbf15de67cd +Block 0011 [ 52]: 5bff70426ec0d586 +Block 0011 [ 53]: 17cd19e555bac43a +Block 0011 [ 54]: 97d488c659d779da +Block 0011 [ 55]: 27b7a222c598758a +Block 0011 [ 56]: ccd1f8510e13d811 +Block 0011 [ 57]: 08a1336acf0b984a +Block 0011 [ 58]: 7068b21fb1f0d2c7 +Block 0011 [ 59]: 607953cb347f3495 +Block 0011 [ 60]: 1c8d465a07eaa402 +Block 0011 [ 61]: c66d8322c4b00513 +Block 0011 [ 62]: 277e0b3f25be599e +Block 0011 [ 63]: 181e765d17794631 +Block 0011 [ 64]: 915ed3d2877de1f3 +Block 0011 [ 65]: 692a313bbce47822 +Block 0011 [ 66]: b9023d0e3880e18c +Block 0011 [ 67]: 509fd562b469d027 +Block 0011 [ 68]: 2ee478a22da3b588 +Block 0011 [ 69]: fbb7f63122cf790b +Block 0011 [ 70]: ec7efcaba6205527 +Block 0011 [ 71]: b845a0646f3556de +Block 0011 [ 72]: 8bb8eacb976ff0ac +Block 0011 [ 73]: 8c4770b357cae7bb +Block 0011 [ 74]: e7ff1eb9e162b3c4 +Block 0011 [ 75]: 36bcc0ae6999e027 +Block 0011 [ 76]: d11efd1e6572021c +Block 0011 [ 77]: 86ff42cd01884655 +Block 0011 [ 78]: 4223544c88424dfe +Block 0011 [ 79]: 4b365a978fee311e +Block 0011 [ 80]: b12364feb3504070 +Block 0011 [ 81]: df25ceac79a9d96f +Block 0011 [ 82]: 17f4bca97d018e65 +Block 0011 [ 83]: 7246f6585ffb01e3 +Block 0011 [ 84]: a8b42a787c6b6022 +Block 0011 [ 85]: f2a78097b0b0680c +Block 0011 [ 86]: 752878d2782c7fe6 +Block 0011 [ 87]: 9c207d3c31347e90 +Block 0011 [ 88]: 80414cc28ab2a4ea +Block 0011 [ 89]: 939a5979926400f5 +Block 0011 [ 90]: 33ced62c0cf8eadd +Block 0011 [ 91]: e2641df66b2f2e14 +Block 0011 [ 92]: 343c1775a9713f11 +Block 0011 [ 93]: 15cc16374ac1ba54 +Block 0011 [ 94]: fd70d352bf97784f +Block 0011 [ 95]: 0b37018eeed56443 +Block 0011 [ 96]: 27628b3623c0d7d8 +Block 0011 [ 97]: 9313a39ec83b1ef8 +Block 0011 [ 98]: eba1b0a86789a078 +Block 0011 [ 99]: 549000caea6c2a19 +Block 0011 [100]: 246b8e1f709b1997 +Block 0011 [101]: b2499fdf4eff52d3 +Block 0011 [102]: 5b75d183d56dea28 +Block 0011 [103]: 853e211fa80b47f5 +Block 0011 [104]: 1e394452303cc7e8 +Block 0011 [105]: 8dbc8f821b10491b +Block 0011 [106]: e079ff1750b59d87 +Block 0011 [107]: a2d95011a7cf7c4a +Block 0011 [108]: 2f6d3ec06872984e +Block 0011 [109]: 3dc900a76fddb83b +Block 0011 [110]: fc3b3e3ea263f6bd +Block 0011 [111]: bf125c404f604562 +Block 0011 [112]: f79194f3adfd9393 +Block 0011 [113]: 2411362a7fe1ea6b +Block 0011 [114]: 22ba895c0df4f85d +Block 0011 [115]: c323d609ebc0c49c +Block 0011 [116]: 6f463a3c99faa919 +Block 0011 [117]: 84a00b8d7d5c20f5 +Block 0011 [118]: de2a24e2fb01945e +Block 0011 [119]: c14cc040ea714c20 +Block 0011 [120]: 84d876ac2e6173dd +Block 0011 [121]: 1cbe9815d0686423 +Block 0011 [122]: 0ab7fd6174e1bd51 +Block 0011 [123]: 76723d2beaaaf60f +Block 0011 [124]: e325ac3fb53fd90e +Block 0011 [125]: d773e4e19cc5b1ba +Block 0011 [126]: 2606fe90ceae82c1 +Block 0011 [127]: 228177ea8ed3ae89 +Block 0012 [ 0]: 1aa1f692b06591fe +Block 0012 [ 1]: 4ff66d69e7f3dd1c +Block 0012 [ 2]: 22c65efa4de36bf5 +Block 0012 [ 3]: a23b7f7edc05f69b +Block 0012 [ 4]: 02b0d70fa75a03c1 +Block 0012 [ 5]: 91a77e9c3938b41b +Block 0012 [ 6]: 01cd41809dded109 +Block 0012 [ 7]: f53382e6636f33de +Block 0012 [ 8]: 6d7f6a41e3560432 +Block 0012 [ 9]: d3beb64a595da5ab +Block 0012 [ 10]: 99dbe85c7dbf4eb3 +Block 0012 [ 11]: ac35273dd506ae67 +Block 0012 [ 12]: 76cc23ae6fe61472 +Block 0012 [ 13]: ac8f7d015d195a2c +Block 0012 [ 14]: c16e060450d1c5eb +Block 0012 [ 15]: 35a65ce2284ad0bb +Block 0012 [ 16]: 75389162f3327070 +Block 0012 [ 17]: e4a3379341461be6 +Block 0012 [ 18]: 734e3e9b0686dd0f +Block 0012 [ 19]: a2a2e80d0cf4dfaa +Block 0012 [ 20]: c6b14a60cfe360eb +Block 0012 [ 21]: 5f8d57f1d33c0144 +Block 0012 [ 22]: 5a7e396a6af6843d +Block 0012 [ 23]: 6d7a624d09556dfc +Block 0012 [ 24]: 4c175bf98ecd2b49 +Block 0012 [ 25]: d5297a8f57909d9d +Block 0012 [ 26]: a28975f58c2c59c9 +Block 0012 [ 27]: 3d8ee5d5caf9a91f +Block 0012 [ 28]: 430284948e2f06a8 +Block 0012 [ 29]: bc43c1cc56889cc5 +Block 0012 [ 30]: 97e712988e3a8b65 +Block 0012 [ 31]: a765e883df64b236 +Block 0012 [ 32]: 80dd97974d89bb83 +Block 0012 [ 33]: edcd7d4ab1718307 +Block 0012 [ 34]: 4c4cb5a8b9572ba2 +Block 0012 [ 35]: d7cc67bfc5484140 +Block 0012 [ 36]: 412863409d76bc0f +Block 0012 [ 37]: 8578c23a7d2742d3 +Block 0012 [ 38]: d6ba907e11fdaf70 +Block 0012 [ 39]: e41fdecb460897e3 +Block 0012 [ 40]: 550ebdb79d17f607 +Block 0012 [ 41]: 97a58453deb8a8ef +Block 0012 [ 42]: 237fc5519b9df07e +Block 0012 [ 43]: 357f19eedd0671f3 +Block 0012 [ 44]: b4b36cff5d679fda +Block 0012 [ 45]: bbc57b82f19ec6b0 +Block 0012 [ 46]: 9bb37ab02ce546be +Block 0012 [ 47]: 5f287acb1eaf68fc +Block 0012 [ 48]: 91107640cc7d0324 +Block 0012 [ 49]: a581af8774b2d68c +Block 0012 [ 50]: a73ce0d9e372c914 +Block 0012 [ 51]: 1fad2663947a6aa4 +Block 0012 [ 52]: 76bf7c2bef22fd78 +Block 0012 [ 53]: 2509b1a0ea1dd03f +Block 0012 [ 54]: 8a821d14ef35edbd +Block 0012 [ 55]: de48bc86661813ad +Block 0012 [ 56]: 2d12a49f8604079c +Block 0012 [ 57]: 6a841f234644afe3 +Block 0012 [ 58]: d2483a08b415b399 +Block 0012 [ 59]: 27fc874f14e55938 +Block 0012 [ 60]: 5d065817f04bf0fb +Block 0012 [ 61]: c21d5ee69cb65292 +Block 0012 [ 62]: 220b745cd78a8810 +Block 0012 [ 63]: c195af564cee2365 +Block 0012 [ 64]: 44f41833b93c1409 +Block 0012 [ 65]: ee9bf5e3123d0ab1 +Block 0012 [ 66]: 1194671b1341d19c +Block 0012 [ 67]: 9f26c3e94e234394 +Block 0012 [ 68]: d4eef2a61a8b6d4e +Block 0012 [ 69]: 0ac0b767072c4bf0 +Block 0012 [ 70]: 49ba7457a25f77f9 +Block 0012 [ 71]: 061dcba9406ff132 +Block 0012 [ 72]: f606b0e4b069928b +Block 0012 [ 73]: 3969b0cb47226af0 +Block 0012 [ 74]: 0aecdd23eab0f972 +Block 0012 [ 75]: e6a58eac70e044e8 +Block 0012 [ 76]: 270102338cb46cf6 +Block 0012 [ 77]: 22aeeac757cf607f +Block 0012 [ 78]: 1f228e34a8200d4d +Block 0012 [ 79]: 5e17277e4c10da0c +Block 0012 [ 80]: 5c88ae3dd3ea5417 +Block 0012 [ 81]: aad3d6b90c9a5620 +Block 0012 [ 82]: 1a5b3da07620b085 +Block 0012 [ 83]: c2b0ef4813ca090f +Block 0012 [ 84]: e7da9456205e044e +Block 0012 [ 85]: 96603c1683fb8124 +Block 0012 [ 86]: 25964d0131ece98e +Block 0012 [ 87]: 6692fa3c89ba0117 +Block 0012 [ 88]: bbcd1c40386e9fe1 +Block 0012 [ 89]: 8f96217bf8888393 +Block 0012 [ 90]: caf344b6650d2a8a +Block 0012 [ 91]: f3a842ccd3049b9d +Block 0012 [ 92]: 91e8af127f1ac37c +Block 0012 [ 93]: 60545d67f008014f +Block 0012 [ 94]: 610241b298102ec2 +Block 0012 [ 95]: 2fee36def2bcff5b +Block 0012 [ 96]: 96fd68d0e794897e +Block 0012 [ 97]: d208840dabc9d601 +Block 0012 [ 98]: e779e8f69cea5961 +Block 0012 [ 99]: a269dc901338443f +Block 0012 [100]: 0e87928cf416e99d +Block 0012 [101]: 8703d89cf0d3c7dc +Block 0012 [102]: 04def1cf5bef1ed9 +Block 0012 [103]: 13a87535ed94991c +Block 0012 [104]: b18452f74892b6aa +Block 0012 [105]: 4566d6996833aae0 +Block 0012 [106]: 9d2abd6fbcaceaae +Block 0012 [107]: 87517fc9e8b71e10 +Block 0012 [108]: 7846bada74ea3e86 +Block 0012 [109]: 832ce5b17274725a +Block 0012 [110]: 02d2923df96b12ce +Block 0012 [111]: fdfe0934a666c96d +Block 0012 [112]: 298bd9e467374d73 +Block 0012 [113]: 8db6e9c331b259b7 +Block 0012 [114]: b078a0eed2399812 +Block 0012 [115]: f7bba7f1bc418e5a +Block 0012 [116]: a95ac6d79c0221e4 +Block 0012 [117]: 73a71076b1880da2 +Block 0012 [118]: 5adf0a09f1bb7192 +Block 0012 [119]: 2fb1f63708d9b8ae +Block 0012 [120]: 0133e7c0e200a44b +Block 0012 [121]: f0c57cf2307571bb +Block 0012 [122]: fe8091f400d827e8 +Block 0012 [123]: a59343d47427e4ee +Block 0012 [124]: 31a936eed5ba7aa1 +Block 0012 [125]: e02ae76007527fc7 +Block 0012 [126]: 920785762df5bb3b +Block 0012 [127]: 578d1590559f9bdf +Block 0013 [ 0]: f9c15bd16c03239a +Block 0013 [ 1]: 85c0830339123a93 +Block 0013 [ 2]: afdec9a3430ee91a +Block 0013 [ 3]: 3aacac9cc4d9ed29 +Block 0013 [ 4]: 73278ef5208157fa +Block 0013 [ 5]: 1bc7ef529b5106c7 +Block 0013 [ 6]: 3309f9a85af31610 +Block 0013 [ 7]: 22bd82aad0437be0 +Block 0013 [ 8]: 332b11e289b2c3ca +Block 0013 [ 9]: 3b7efd6c480aab26 +Block 0013 [ 10]: 417f05eb1907725d +Block 0013 [ 11]: 24aed9811501da12 +Block 0013 [ 12]: fa537149a94750ba +Block 0013 [ 13]: 204a652aefa4e11d +Block 0013 [ 14]: 0bc3743c3b55dd7c +Block 0013 [ 15]: 49d71f9813bff428 +Block 0013 [ 16]: 27ef1ffa06e74a46 +Block 0013 [ 17]: 6abc24120f0c5b51 +Block 0013 [ 18]: 6cb123ac54b47ba4 +Block 0013 [ 19]: ae6a1e638e9ff6c0 +Block 0013 [ 20]: c12e5f4396f2b198 +Block 0013 [ 21]: 44549a8d343ab2bf +Block 0013 [ 22]: 49d5c59cc5ad6279 +Block 0013 [ 23]: b150f0724fc9b595 +Block 0013 [ 24]: f6e668a1af287f10 +Block 0013 [ 25]: 978c9313f02db8ff +Block 0013 [ 26]: 44789c797bed7560 +Block 0013 [ 27]: 1a96a5cf8d93929a +Block 0013 [ 28]: 9e8be9f3e5d17933 +Block 0013 [ 29]: 2eaf1e47ac0301c0 +Block 0013 [ 30]: a0e9fd0333d0fdf8 +Block 0013 [ 31]: 6a1f57508f7cf676 +Block 0013 [ 32]: 5f8d891ef567e252 +Block 0013 [ 33]: 1c24d2d0405e9bea +Block 0013 [ 34]: f1cf892b940462b4 +Block 0013 [ 35]: c43a6a871f5bdf30 +Block 0013 [ 36]: 7ca36bd207fda755 +Block 0013 [ 37]: 637d10dc44ee9657 +Block 0013 [ 38]: 6c3ba081af2c0c7a +Block 0013 [ 39]: a06156952886a451 +Block 0013 [ 40]: af5b9ae79550be4f +Block 0013 [ 41]: cfe7e3f7553433fc +Block 0013 [ 42]: 663cf8c55395264d +Block 0013 [ 43]: df7d30f272a46648 +Block 0013 [ 44]: 52565c59a983e2fd +Block 0013 [ 45]: 498707d1fb7a34e6 +Block 0013 [ 46]: 07a0757f9c76308a +Block 0013 [ 47]: 94e5798cef5748ca +Block 0013 [ 48]: 29c7689628e47c77 +Block 0013 [ 49]: 666547f5e5fbeaa0 +Block 0013 [ 50]: 49fe73222e065ab8 +Block 0013 [ 51]: 90d3cb7aece83cd9 +Block 0013 [ 52]: 234c16b21152d734 +Block 0013 [ 53]: 4e0f90f6a27d7d22 +Block 0013 [ 54]: 1a05d1a632b40370 +Block 0013 [ 55]: 985c7083435a8efb +Block 0013 [ 56]: 3962e05f618794cd +Block 0013 [ 57]: 734869661b5fad03 +Block 0013 [ 58]: 2f1d7666c26ef446 +Block 0013 [ 59]: bfb1ae896e4e66d6 +Block 0013 [ 60]: 5a3de7e5a0109719 +Block 0013 [ 61]: 626e36b1d0227c80 +Block 0013 [ 62]: 56c6109f4ffcd0fb +Block 0013 [ 63]: b90afc0a10791c1b +Block 0013 [ 64]: cdf40c151d47cbcf +Block 0013 [ 65]: 5212985d06f9803b +Block 0013 [ 66]: 86cce1587e82760c +Block 0013 [ 67]: 0f59e40dd4a7ec7e +Block 0013 [ 68]: eafc94430abe1f46 +Block 0013 [ 69]: d36c0e649d807ce2 +Block 0013 [ 70]: 57359cb98984b375 +Block 0013 [ 71]: 9f88333017ca8db6 +Block 0013 [ 72]: 1ef21abda65283b1 +Block 0013 [ 73]: 5b0b594338cb86ad +Block 0013 [ 74]: fc731c46858c4ad1 +Block 0013 [ 75]: f64b50653b123e97 +Block 0013 [ 76]: 4149e7bd3a8470dc +Block 0013 [ 77]: 810e51e831465239 +Block 0013 [ 78]: f223087791f47a5d +Block 0013 [ 79]: 6c375e1931df8730 +Block 0013 [ 80]: 0100dbd0e057cc2e +Block 0013 [ 81]: f70f8d61903f1969 +Block 0013 [ 82]: 08fc0da85e396251 +Block 0013 [ 83]: 2a538b02ae7d725c +Block 0013 [ 84]: b931a0cd7ad0af88 +Block 0013 [ 85]: e1bd9d0b2f53a9d7 +Block 0013 [ 86]: 76a341bc4aa349d0 +Block 0013 [ 87]: a529fce1c81e5153 +Block 0013 [ 88]: 63ef9d0b98124056 +Block 0013 [ 89]: c373059cdc3572c7 +Block 0013 [ 90]: 01fb3a4f4ce7b133 +Block 0013 [ 91]: 9c66c972692b09ad +Block 0013 [ 92]: c53255d410600bc6 +Block 0013 [ 93]: 14b9732a02daf5b6 +Block 0013 [ 94]: 396145830be7495f +Block 0013 [ 95]: 3187b2c21159f8d5 +Block 0013 [ 96]: a4e6df14aab4e467 +Block 0013 [ 97]: bc6c30500b613487 +Block 0013 [ 98]: e425c128f3fc06ad +Block 0013 [ 99]: 00545969fecdecc5 +Block 0013 [100]: 16a6082af5d25051 +Block 0013 [101]: 7b85adbd0a0b6781 +Block 0013 [102]: dc26cbeaaef7e3dd +Block 0013 [103]: 336a70650266e766 +Block 0013 [104]: 32ed681b360c3949 +Block 0013 [105]: dc6e83279d1061ab +Block 0013 [106]: f91da0a8b878c95d +Block 0013 [107]: 0beded6e5fcf6e23 +Block 0013 [108]: 0a262ed8436feb78 +Block 0013 [109]: a5b40f4468eed7a7 +Block 0013 [110]: b847a08fdd793947 +Block 0013 [111]: aedc1a4f95a80dbe +Block 0013 [112]: 321990b100f7c3e1 +Block 0013 [113]: c4d432cfbfb9ab49 +Block 0013 [114]: 7c1170d1453c684f +Block 0013 [115]: a77231522e4e7dce +Block 0013 [116]: e550d48f25611525 +Block 0013 [117]: e15fa2d871cb0666 +Block 0013 [118]: 625f0384c0dc09b9 +Block 0013 [119]: b5250d90664a29a1 +Block 0013 [120]: 3aa32adb69a6345f +Block 0013 [121]: 02fdae236288d0c7 +Block 0013 [122]: 7a760f94c41fb1f0 +Block 0013 [123]: 271282628e3fa3cd +Block 0013 [124]: c8131439d46a63e2 +Block 0013 [125]: 7afecdfd7821b924 +Block 0013 [126]: ee89bbe949c8804a +Block 0013 [127]: 7d15b9bc5a9241cb +Block 0014 [ 0]: a5fdb0379a2f67d1 +Block 0014 [ 1]: 4beccebadf13863c +Block 0014 [ 2]: 320d12b68b90e6be +Block 0014 [ 3]: 13b641fd6d1efddf +Block 0014 [ 4]: 5b64455f318e2dda +Block 0014 [ 5]: eb13edb9301764b7 +Block 0014 [ 6]: 7fb8e26f439e07cf +Block 0014 [ 7]: aad045eb983f729d +Block 0014 [ 8]: 7591d32caace7a43 +Block 0014 [ 9]: 8cb56fd7d3a1dcaa +Block 0014 [ 10]: 2cee1c68916a5758 +Block 0014 [ 11]: f72675fd1db957ca +Block 0014 [ 12]: 8f50f81824c9d070 +Block 0014 [ 13]: 5c4a051906547aaa +Block 0014 [ 14]: abde12eff8d4accd +Block 0014 [ 15]: 4a3cd15a48309dd6 +Block 0014 [ 16]: b69f970728e49140 +Block 0014 [ 17]: 1e1d9f854d8f75e5 +Block 0014 [ 18]: 8f13af133409471f +Block 0014 [ 19]: b7bbe727c90d9940 +Block 0014 [ 20]: 084a0defba13b012 +Block 0014 [ 21]: 078a024f9a13985c +Block 0014 [ 22]: 4c4c857f1f41f895 +Block 0014 [ 23]: 65bf4adab2fef170 +Block 0014 [ 24]: 61043bcf823addea +Block 0014 [ 25]: 01624a2a8889b77c +Block 0014 [ 26]: 5d513fe269c69198 +Block 0014 [ 27]: 16ce6daefe16dff8 +Block 0014 [ 28]: ae432bdac36c8a33 +Block 0014 [ 29]: c1de50c14bff375b +Block 0014 [ 30]: 57ee0d43ca409b6d +Block 0014 [ 31]: 001b5c41bc8a142e +Block 0014 [ 32]: 05cb8870e0b6086a +Block 0014 [ 33]: 5e7fa65b44b5a0c1 +Block 0014 [ 34]: 9c0c022e7c44739b +Block 0014 [ 35]: 8afde623afa779b4 +Block 0014 [ 36]: aa62668c188c901f +Block 0014 [ 37]: 4a0ad8711f40d437 +Block 0014 [ 38]: 227f69c54bf24cc2 +Block 0014 [ 39]: 9f8adbbe51dba14e +Block 0014 [ 40]: db44d83fa3b1d22e +Block 0014 [ 41]: c0f52cfbf369e5e0 +Block 0014 [ 42]: 8afd0b618bbf57b6 +Block 0014 [ 43]: 7ce708b422a4d051 +Block 0014 [ 44]: 9d47e802dc2a20a6 +Block 0014 [ 45]: c1f9652d8aee4eb0 +Block 0014 [ 46]: e862b0f9b6ab04c5 +Block 0014 [ 47]: 7cbdcb786d9c09de +Block 0014 [ 48]: 9a6cb37bddf2994d +Block 0014 [ 49]: 066ba841fa982410 +Block 0014 [ 50]: b4834a5707446e93 +Block 0014 [ 51]: cbfd37b56b781d90 +Block 0014 [ 52]: 296422ed06aaf2fe +Block 0014 [ 53]: b7977369fb47dd7f +Block 0014 [ 54]: 4503cd512f4f4028 +Block 0014 [ 55]: b44be03eac8f1fe1 +Block 0014 [ 56]: de3e3843100887d5 +Block 0014 [ 57]: 841cde4ce1d478c1 +Block 0014 [ 58]: ef725829892bcf5b +Block 0014 [ 59]: 8c4711ae368a72f5 +Block 0014 [ 60]: 53f0c71e38996687 +Block 0014 [ 61]: 41343b02dd8918e0 +Block 0014 [ 62]: 163283289fc722c9 +Block 0014 [ 63]: 01f2edede3c311e2 +Block 0014 [ 64]: 3fee9f2a8e2a8b0f +Block 0014 [ 65]: eaddca9f92035fa7 +Block 0014 [ 66]: c2a5277a46b3d9a8 +Block 0014 [ 67]: 634d95c58a63f283 +Block 0014 [ 68]: c47f081c88252fa2 +Block 0014 [ 69]: 904598e94495e0f5 +Block 0014 [ 70]: de689c2cfdc93c35 +Block 0014 [ 71]: bc058f656bef83a3 +Block 0014 [ 72]: 277c81509b3a6492 +Block 0014 [ 73]: bfecc6ad2847e452 +Block 0014 [ 74]: ee9cd7661778e71d +Block 0014 [ 75]: 7269eeab79003bf8 +Block 0014 [ 76]: ed88284a12b40d91 +Block 0014 [ 77]: 38a44ea62830a48c +Block 0014 [ 78]: 50d4aeb04809ea4e +Block 0014 [ 79]: b6d1b62b6b61937c +Block 0014 [ 80]: e8fbd7a0a6a9cea2 +Block 0014 [ 81]: 6958ff333ec80f17 +Block 0014 [ 82]: e894f15fb0abbab4 +Block 0014 [ 83]: cfbc02b2b06f8570 +Block 0014 [ 84]: 16cbaf773bf6e396 +Block 0014 [ 85]: 433bf2178262bf74 +Block 0014 [ 86]: 4df3a7ddabcebe8d +Block 0014 [ 87]: e92be4c401ccfa93 +Block 0014 [ 88]: d240cb8553fddff1 +Block 0014 [ 89]: 6396abb129c242a8 +Block 0014 [ 90]: 6e5a0ebf21156ff2 +Block 0014 [ 91]: 18b1d13bc9a30466 +Block 0014 [ 92]: 6368abbcdf6200b7 +Block 0014 [ 93]: 06e4d85eeae027dd +Block 0014 [ 94]: 74f3b09e191a8044 +Block 0014 [ 95]: a268ac0b727fe78b +Block 0014 [ 96]: 99f122b534e05fff +Block 0014 [ 97]: a860f26176823324 +Block 0014 [ 98]: ba7001ec057bdb68 +Block 0014 [ 99]: 63939774ca16cfc2 +Block 0014 [100]: bde7382f581de0de +Block 0014 [101]: 5225abbd7ca6bca8 +Block 0014 [102]: 88bfeda187528739 +Block 0014 [103]: ce9cb2a4d37873b7 +Block 0014 [104]: c85e0d170a16c786 +Block 0014 [105]: 705da215f97650da +Block 0014 [106]: 2538d74c16c8b6f6 +Block 0014 [107]: 3874bbcf85fe90ee +Block 0014 [108]: b91302b8f95e7800 +Block 0014 [109]: 85e59179b9bf2022 +Block 0014 [110]: e9773eafb420456f +Block 0014 [111]: a47f001781f19c2b +Block 0014 [112]: 46454b1b9811a851 +Block 0014 [113]: b622271e1e2346d1 +Block 0014 [114]: 215a5b75946f1355 +Block 0014 [115]: 0587f9fc3a3c2852 +Block 0014 [116]: 822ac16b0b07c3f2 +Block 0014 [117]: 363d4a260faa6131 +Block 0014 [118]: da569af084477b41 +Block 0014 [119]: fc7f20711ba4bf93 +Block 0014 [120]: 03255c99b59bd605 +Block 0014 [121]: 7dad82e9edae62bb +Block 0014 [122]: 71c0d73ea0908b90 +Block 0014 [123]: a34100e60a9ffbcb +Block 0014 [124]: edf05e0466f0e9cc +Block 0014 [125]: 6074b7aadb934a82 +Block 0014 [126]: 0a43a6e248912fd5 +Block 0014 [127]: 721d743314b6c59e +Block 0015 [ 0]: 6d40e87b8bbde68f +Block 0015 [ 1]: 5b90b02701c6ac80 +Block 0015 [ 2]: ce69aea584dac7a8 +Block 0015 [ 3]: 36cdd095ff0ff8d1 +Block 0015 [ 4]: de2ebcab7a438efc +Block 0015 [ 5]: 63e8709d10ecc3ac +Block 0015 [ 6]: 55cb9a18dab1d954 +Block 0015 [ 7]: 1507cff847848c71 +Block 0015 [ 8]: 1ccb861fbfc73c93 +Block 0015 [ 9]: 8c602a61b71e21dc +Block 0015 [ 10]: cfa87e439e758061 +Block 0015 [ 11]: bec7416cd772e599 +Block 0015 [ 12]: d7c68f196290b1cf +Block 0015 [ 13]: b3096ac4559e59d0 +Block 0015 [ 14]: 0ad10c64be9f9fbb +Block 0015 [ 15]: 8d59cc7c21f19fcf +Block 0015 [ 16]: e91efaa013a95b96 +Block 0015 [ 17]: 9a03aa23ee3ba180 +Block 0015 [ 18]: eb32afc653478bff +Block 0015 [ 19]: a993fc583751e9cb +Block 0015 [ 20]: e3b0246060a99012 +Block 0015 [ 21]: f96ac45a92c850ba +Block 0015 [ 22]: 548f1ff503119696 +Block 0015 [ 23]: 4479e6768506cdf5 +Block 0015 [ 24]: adcb44b753d48a61 +Block 0015 [ 25]: 97502483be77491b +Block 0015 [ 26]: 71fdbdd6b3769957 +Block 0015 [ 27]: f29fc96be6293883 +Block 0015 [ 28]: e7174c1b6cc33adf +Block 0015 [ 29]: c184b1c64ff3b2db +Block 0015 [ 30]: a08aa1da589ab43d +Block 0015 [ 31]: 97e85b9d3047be3e +Block 0015 [ 32]: 96929ff762408129 +Block 0015 [ 33]: aa8fa4af6720c65e +Block 0015 [ 34]: 5173b01272e389e1 +Block 0015 [ 35]: 97f40c7a887f7c65 +Block 0015 [ 36]: 07a2c0b90d5fbb9f +Block 0015 [ 37]: 0b4a888385bf6feb +Block 0015 [ 38]: 55c595b5297af0c0 +Block 0015 [ 39]: 534de9d4148ff660 +Block 0015 [ 40]: e1b2bd3e60767725 +Block 0015 [ 41]: e18662d315858833 +Block 0015 [ 42]: 4f39b642a465e587 +Block 0015 [ 43]: 9e7becfafea3a026 +Block 0015 [ 44]: 16bf66c4ce23a1d1 +Block 0015 [ 45]: 20d5eaa56dd0741b +Block 0015 [ 46]: f8389306df16ba8d +Block 0015 [ 47]: ca21d3ab3d5d9710 +Block 0015 [ 48]: d05e1b82cde9a7ee +Block 0015 [ 49]: 1b331a7ba4cbc44f +Block 0015 [ 50]: 3ab05714733e107b +Block 0015 [ 51]: 1ba0f22a6cacdccf +Block 0015 [ 52]: bef4345f3257cbab +Block 0015 [ 53]: dba354b6d105240e +Block 0015 [ 54]: 14860ea4ea9fa764 +Block 0015 [ 55]: c786947cbd54ba7e +Block 0015 [ 56]: c10a16322b02197f +Block 0015 [ 57]: a75e04a69f57a273 +Block 0015 [ 58]: 6a3d360f5d12a0e0 +Block 0015 [ 59]: 2d900aa01b4f1bc6 +Block 0015 [ 60]: 8e0b3af575027d01 +Block 0015 [ 61]: bebb2efa06d1b9b1 +Block 0015 [ 62]: 5041ec43eb8490ad +Block 0015 [ 63]: 02a0af26ec1cc245 +Block 0015 [ 64]: 315bd384780fb7dc +Block 0015 [ 65]: a6b78138e78ebca5 +Block 0015 [ 66]: e1e841cc673c6f59 +Block 0015 [ 67]: 92a63873ca308d4b +Block 0015 [ 68]: c475e47bc9375047 +Block 0015 [ 69]: 55a415c1b2a64d2d +Block 0015 [ 70]: bd814528ff874150 +Block 0015 [ 71]: a22ce025019fe9b9 +Block 0015 [ 72]: c07a7d13cc18bc6d +Block 0015 [ 73]: a42d2eedd8795c17 +Block 0015 [ 74]: 5944b7401cb892bb +Block 0015 [ 75]: 06b693ce393f7a31 +Block 0015 [ 76]: 30a523f276e03f66 +Block 0015 [ 77]: cc4cc7da45cb0629 +Block 0015 [ 78]: eb8a9cfac1608630 +Block 0015 [ 79]: c6827ec6db8fc29e +Block 0015 [ 80]: 72db1dde804b4e38 +Block 0015 [ 81]: 1d571faed8775322 +Block 0015 [ 82]: db5d406859784a76 +Block 0015 [ 83]: a5cc6c320631d459 +Block 0015 [ 84]: bc1b71dc3dc99f3d +Block 0015 [ 85]: 2316181ceed14d5c +Block 0015 [ 86]: 163d4f8beef254bc +Block 0015 [ 87]: d995b178a01e876c +Block 0015 [ 88]: b1f98f1d674c1514 +Block 0015 [ 89]: 7720ff1b73b9351e +Block 0015 [ 90]: ebedc7cd44c49577 +Block 0015 [ 91]: 8ed0d18c9c651634 +Block 0015 [ 92]: 7607fbdd198df036 +Block 0015 [ 93]: bbd9fd5b855b09f2 +Block 0015 [ 94]: 2b22bd2c4b0b39a7 +Block 0015 [ 95]: ba01fa0a17a1c7d7 +Block 0015 [ 96]: a26884728102cc54 +Block 0015 [ 97]: 984b67908d3a81ff +Block 0015 [ 98]: c7f618616a70b82a +Block 0015 [ 99]: 12084588cfa8b58b +Block 0015 [100]: e092eb391447359d +Block 0015 [101]: 3fc930be1935e61e +Block 0015 [102]: b26307005d1da4bc +Block 0015 [103]: 3c8b67e192736c4f +Block 0015 [104]: d630223907f9e1e7 +Block 0015 [105]: 5374c6efe2b8eb09 +Block 0015 [106]: 97acf57cd17738ce +Block 0015 [107]: 8170ce0222a7d000 +Block 0015 [108]: f70f5759aa53c360 +Block 0015 [109]: 60d7f3dec8f2ed62 +Block 0015 [110]: 789ae05a72878fac +Block 0015 [111]: 8d0afe37a8a13c61 +Block 0015 [112]: 1be773bd9b02f826 +Block 0015 [113]: d8858dceedd7e08d +Block 0015 [114]: 091aefbac72d8dad +Block 0015 [115]: 715b0c3d6bf488d9 +Block 0015 [116]: 11a401aeea39c245 +Block 0015 [117]: c71592475b7e2423 +Block 0015 [118]: e31b245bd5db158e +Block 0015 [119]: 1cdc0a528374eb3d +Block 0015 [120]: 75430ad2bebc3613 +Block 0015 [121]: 4df59d2626d82756 +Block 0015 [122]: 9b1226ce1e040731 +Block 0015 [123]: 33c1eb07bb17933b +Block 0015 [124]: c1c1837f4169196e +Block 0015 [125]: 474ff21ff2f94dbc +Block 0015 [126]: 851a9566610580c4 +Block 0015 [127]: 51ec2fcccdf48948 +Block 0016 [ 0]: 40173703c87730b2 +Block 0016 [ 1]: 467d38684f4c1c2a +Block 0016 [ 2]: 544062a527017b3e +Block 0016 [ 3]: 6f0706930c3c8ab0 +Block 0016 [ 4]: dc88053cfb45150b +Block 0016 [ 5]: 03884a54d2a29367 +Block 0016 [ 6]: 7a469b12d499697b +Block 0016 [ 7]: d54e0c405db9c12d +Block 0016 [ 8]: d6596bb2c7fbcb83 +Block 0016 [ 9]: e8ee63ceed57b956 +Block 0016 [ 10]: 3e510ed4a0c6aa29 +Block 0016 [ 11]: 782c2218330cbe22 +Block 0016 [ 12]: 95cb34607c5c6b15 +Block 0016 [ 13]: c3c9fb56dc22953b +Block 0016 [ 14]: 31f210a4cbcb2e4e +Block 0016 [ 15]: fb774215bd05f2fc +Block 0016 [ 16]: 1dce685944aa421c +Block 0016 [ 17]: 4455d28ad719716b +Block 0016 [ 18]: a8457a7fa7886bb8 +Block 0016 [ 19]: 798797d430101d64 +Block 0016 [ 20]: 7e5fee56cb31897c +Block 0016 [ 21]: 78580647125afa2a +Block 0016 [ 22]: f1bb1314ec84446b +Block 0016 [ 23]: b3fe6f51468c2893 +Block 0016 [ 24]: d1d4bdbe33707ead +Block 0016 [ 25]: bc6c03983cd4c708 +Block 0016 [ 26]: 57d747066891bb95 +Block 0016 [ 27]: bb4e9045fc3cb5ea +Block 0016 [ 28]: 614d2cf35a1f5655 +Block 0016 [ 29]: 04ae5d12ec440130 +Block 0016 [ 30]: 7d4f84adf2e6cb85 +Block 0016 [ 31]: 3a17a1a6cea939b1 +Block 0016 [ 32]: d2d6c3d261ac8e68 +Block 0016 [ 33]: cabd3dee2829e407 +Block 0016 [ 34]: 266220332527521c +Block 0016 [ 35]: 9551806567a27ff0 +Block 0016 [ 36]: d225b25411c7e2b6 +Block 0016 [ 37]: b259687bc0bd2f67 +Block 0016 [ 38]: 04845596cd58d81c +Block 0016 [ 39]: 4b0ad9bd79c5d18f +Block 0016 [ 40]: d902866ba26a936a +Block 0016 [ 41]: 404b11de86b46f03 +Block 0016 [ 42]: bd61fb21e5e12b7b +Block 0016 [ 43]: 6b1d2f923b434ab1 +Block 0016 [ 44]: 52c2dea3f21f8a13 +Block 0016 [ 45]: 140eebf3b69ee5bb +Block 0016 [ 46]: dd70de78b3c18b81 +Block 0016 [ 47]: ae7a74172565ac79 +Block 0016 [ 48]: 0dbad089af3e5104 +Block 0016 [ 49]: 8216ff935f515ebd +Block 0016 [ 50]: 1daa44a8acbd2140 +Block 0016 [ 51]: 9e5d3a46a80d13c9 +Block 0016 [ 52]: 8bb8019be2408232 +Block 0016 [ 53]: ffd311c5ea02f66f +Block 0016 [ 54]: 155ce4e0b5ed7634 +Block 0016 [ 55]: b5eaee0502427f59 +Block 0016 [ 56]: 7f426fa00393b3a1 +Block 0016 [ 57]: e13553aba4647bf1 +Block 0016 [ 58]: 93d7bf7dbbbf3ae9 +Block 0016 [ 59]: e69d740f7b2dad2d +Block 0016 [ 60]: 344d4eda5a81b335 +Block 0016 [ 61]: df65fb114c75b1be +Block 0016 [ 62]: 1990683f992d7c47 +Block 0016 [ 63]: 21073b4cbd089892 +Block 0016 [ 64]: 2dcb4d5b039d877d +Block 0016 [ 65]: c29429c9541f38a7 +Block 0016 [ 66]: 7f80e51bc2fe8e28 +Block 0016 [ 67]: f54f4cd646199cac +Block 0016 [ 68]: 85b2a1246ab1163b +Block 0016 [ 69]: daf60fc6375d3ad0 +Block 0016 [ 70]: 57e42e8d98f42fa0 +Block 0016 [ 71]: 0fb9391186b290ee +Block 0016 [ 72]: 959b7e51136817d1 +Block 0016 [ 73]: 5217b619c2d274c8 +Block 0016 [ 74]: b7c6978fc62db8c1 +Block 0016 [ 75]: 4554cc5aedf4af57 +Block 0016 [ 76]: 904db36c16602741 +Block 0016 [ 77]: 0abe05da8a2cb8e6 +Block 0016 [ 78]: 045614eb1b418847 +Block 0016 [ 79]: 32ae1dd042f49d68 +Block 0016 [ 80]: 99972d932984c765 +Block 0016 [ 81]: 4f469863eed3aa0a +Block 0016 [ 82]: ebc14e989ec8a561 +Block 0016 [ 83]: d8e7b72f71320e9f +Block 0016 [ 84]: 1c608b5af0726e22 +Block 0016 [ 85]: bbb551c4d1a9c4aa +Block 0016 [ 86]: acaef7a072fbfa03 +Block 0016 [ 87]: 20c4a900f3892aea +Block 0016 [ 88]: 4b161fcd5b15c8e6 +Block 0016 [ 89]: 426665ce2c0eeffe +Block 0016 [ 90]: 761fc26cafc86c26 +Block 0016 [ 91]: 8797c94e662ea9cc +Block 0016 [ 92]: 7bebc3c35e97780a +Block 0016 [ 93]: a579cfea019fe5d8 +Block 0016 [ 94]: 263bc7f813fa3bb9 +Block 0016 [ 95]: 45ef8c26eec2f7bb +Block 0016 [ 96]: 8a1e6d34c4cc77e8 +Block 0016 [ 97]: 27867f3613e4151d +Block 0016 [ 98]: c7db41cc0f06e783 +Block 0016 [ 99]: b4d76f059af6a433 +Block 0016 [100]: 40ee3aae849418c4 +Block 0016 [101]: 4bd4fc211c3a5c11 +Block 0016 [102]: 7da2668816494939 +Block 0016 [103]: 9e181a446642e6b7 +Block 0016 [104]: 8bda7cc03635fed7 +Block 0016 [105]: f816837b21b1806a +Block 0016 [106]: b30434f84336b715 +Block 0016 [107]: aaf97b333edca150 +Block 0016 [108]: 389485ffaad002cf +Block 0016 [109]: 8cbbfcd6ee186d33 +Block 0016 [110]: 3157b6dc9703b052 +Block 0016 [111]: 8b61c9bb15a97ad1 +Block 0016 [112]: 541844a6ef92801b +Block 0016 [113]: cd602e55c4497811 +Block 0016 [114]: 9ffd4436922d562c +Block 0016 [115]: f6a1f699a4599a18 +Block 0016 [116]: 01f4899e74a1d96c +Block 0016 [117]: 2ec1db479e5068a8 +Block 0016 [118]: bb0aa1fd26e19701 +Block 0016 [119]: 9b0786b32e156f06 +Block 0016 [120]: 5c30b07b934b48b7 +Block 0016 [121]: 3fd71c69e216b478 +Block 0016 [122]: 2e3d1d9b8b50f1f5 +Block 0016 [123]: 3f08a23d0830d1fd +Block 0016 [124]: b0499ad41f985e8d +Block 0016 [125]: ff70aeb3c2042aa6 +Block 0016 [126]: 4f79c964d3b38194 +Block 0016 [127]: 5f6535da90f53fb0 +Block 0017 [ 0]: 86dbf93ac3f80ebb +Block 0017 [ 1]: 2e0f2348ef2a155f +Block 0017 [ 2]: 0c4bb02597d00e8f +Block 0017 [ 3]: c6c302f463f13815 +Block 0017 [ 4]: e3ded630c721ae3b +Block 0017 [ 5]: 7c6410264643d2bf +Block 0017 [ 6]: c8e6e7102a26eb72 +Block 0017 [ 7]: 1915981300f3e25a +Block 0017 [ 8]: 8124aee938f2e8e7 +Block 0017 [ 9]: e971f39f0f644121 +Block 0017 [ 10]: 59b43310ff96f407 +Block 0017 [ 11]: 286319e85551fca5 +Block 0017 [ 12]: 74f4b2e706b20793 +Block 0017 [ 13]: 4ef0995dbff8d698 +Block 0017 [ 14]: 672a0541cf6e284b +Block 0017 [ 15]: dc96b4f476e7dee4 +Block 0017 [ 16]: 04a3cab22b85ff42 +Block 0017 [ 17]: ff0686a07cdca700 +Block 0017 [ 18]: 270bcda7065b6f36 +Block 0017 [ 19]: 8c5aed656f5257f8 +Block 0017 [ 20]: 2c694af32afaa420 +Block 0017 [ 21]: b7efae2361fd9dca +Block 0017 [ 22]: a527d0442a27a2ca +Block 0017 [ 23]: 159bf5aec6801f9c +Block 0017 [ 24]: 2fe99d0a7a7a6295 +Block 0017 [ 25]: ee6b6bbc10147795 +Block 0017 [ 26]: e8084f19550df76e +Block 0017 [ 27]: 63f3006ee592f0f3 +Block 0017 [ 28]: 6e7e7dd76106ea8c +Block 0017 [ 29]: 1488f210ed13602c +Block 0017 [ 30]: 5e9ff9270b0f5998 +Block 0017 [ 31]: ecbe1b3dbc8fc452 +Block 0017 [ 32]: cfd00abc7288fe28 +Block 0017 [ 33]: c460d10f01afe872 +Block 0017 [ 34]: 310843ff07177aed +Block 0017 [ 35]: ad4250b39e5a3502 +Block 0017 [ 36]: 656b54c454d2799b +Block 0017 [ 37]: 283ad8ce0753a41a +Block 0017 [ 38]: 8e69119059c57e58 +Block 0017 [ 39]: e8f339918afcf668 +Block 0017 [ 40]: 7172af6f36048460 +Block 0017 [ 41]: b1c6dcbb9bddc1e5 +Block 0017 [ 42]: ca25138560e0fd17 +Block 0017 [ 43]: c9187f543edfda65 +Block 0017 [ 44]: a20f9c88217536ab +Block 0017 [ 45]: e79d7d866f58d1b2 +Block 0017 [ 46]: 60039cdb76c295bc +Block 0017 [ 47]: 7fc953ce20b4af5f +Block 0017 [ 48]: 9eddbaa0058e131e +Block 0017 [ 49]: 5358296bd7a8f481 +Block 0017 [ 50]: a294668fd156d187 +Block 0017 [ 51]: 4e1423f5dc8827b6 +Block 0017 [ 52]: 0fed19a28e94d868 +Block 0017 [ 53]: 0c146f0ea97c2112 +Block 0017 [ 54]: 2923e8273ea54165 +Block 0017 [ 55]: c3e4cc115c57262d +Block 0017 [ 56]: b56a6e6f678fee68 +Block 0017 [ 57]: f3fae0ae2f09963d +Block 0017 [ 58]: eee2522b29737f05 +Block 0017 [ 59]: a207b298ef42b43d +Block 0017 [ 60]: 11a8f66bd4e22116 +Block 0017 [ 61]: 1c779bd8fa6bc463 +Block 0017 [ 62]: 6ed3d931275742d8 +Block 0017 [ 63]: 1acccf1c25c8574c +Block 0017 [ 64]: ea218800c030bd5c +Block 0017 [ 65]: b281e866406d231f +Block 0017 [ 66]: 0a94d7e48cd315b2 +Block 0017 [ 67]: afad93e2c88678bf +Block 0017 [ 68]: a4162b1541509f99 +Block 0017 [ 69]: d175f3bfe10cd670 +Block 0017 [ 70]: cba9fc2d548a01ae +Block 0017 [ 71]: e75e284c1c1a6083 +Block 0017 [ 72]: 2e4de0030e96358b +Block 0017 [ 73]: 714abf82a6e46c19 +Block 0017 [ 74]: 85ad2cfc6a8c7494 +Block 0017 [ 75]: d0ec0ff6a6e67854 +Block 0017 [ 76]: 257716a22e9cd988 +Block 0017 [ 77]: d72bb2bbc1694cdc +Block 0017 [ 78]: 7d2f54f06ed5f7bf +Block 0017 [ 79]: 7b02bb7cff05c815 +Block 0017 [ 80]: 493ca9570cdc1295 +Block 0017 [ 81]: 5fe4695940b889f5 +Block 0017 [ 82]: e42a80ea4be3cf58 +Block 0017 [ 83]: acba6f12179237a0 +Block 0017 [ 84]: 54046ed072a24683 +Block 0017 [ 85]: 1cf396162f7fe889 +Block 0017 [ 86]: 5c38a95c20a92398 +Block 0017 [ 87]: 0e26d36d6da00deb +Block 0017 [ 88]: 23f81145834c1082 +Block 0017 [ 89]: 5acae8767d95deca +Block 0017 [ 90]: a9d31c468300ddfe +Block 0017 [ 91]: d9b88af5c50cce46 +Block 0017 [ 92]: 37fa64e447e04020 +Block 0017 [ 93]: 2f7e076fc6dfd078 +Block 0017 [ 94]: b3cec9629d0deb36 +Block 0017 [ 95]: cc32bd7f4e7e9863 +Block 0017 [ 96]: b9aa3faa53bb0446 +Block 0017 [ 97]: 164ec64fcf81b584 +Block 0017 [ 98]: 34db7b26f3adca23 +Block 0017 [ 99]: 60196d64d2557550 +Block 0017 [100]: 5961b2f87d8ca589 +Block 0017 [101]: 1dfde0a6c0ccfbac +Block 0017 [102]: 2021c1740985d1a2 +Block 0017 [103]: 68b03224a5176ed4 +Block 0017 [104]: 36f11e2333501345 +Block 0017 [105]: 8e3f0518cf21c19c +Block 0017 [106]: 099a9f02563790b4 +Block 0017 [107]: f362f11b2efa6862 +Block 0017 [108]: 8ca6c4c97cc05f21 +Block 0017 [109]: 7c4a03dac87e4a9a +Block 0017 [110]: 3d401182bfae8e61 +Block 0017 [111]: 7ea885226fbbca06 +Block 0017 [112]: c3ed29c1b310b105 +Block 0017 [113]: 226e574ad2807ca2 +Block 0017 [114]: 56a513a2e353b82b +Block 0017 [115]: 9892fb94743ef93d +Block 0017 [116]: 24d14208ba945517 +Block 0017 [117]: 4fa0137b08a9a442 +Block 0017 [118]: 7dd70ce2ff2d0d57 +Block 0017 [119]: 6c19e2a32da81b67 +Block 0017 [120]: 0bcbb994195db761 +Block 0017 [121]: e34a4009f6bf3310 +Block 0017 [122]: b6575c391e05249a +Block 0017 [123]: ae0e26a5eeb66912 +Block 0017 [124]: 0bb87ddc0deb2b72 +Block 0017 [125]: 3be928c16a8d0b6b +Block 0017 [126]: 652748f115f4e754 +Block 0017 [127]: d0e359ef4d4f00af +Block 0018 [ 0]: 2aa5674fd1d8b40d +Block 0018 [ 1]: dbb9a569c03adf3c +Block 0018 [ 2]: 602a4a56802fb8ac +Block 0018 [ 3]: a9cefa9a07a02258 +Block 0018 [ 4]: 0983afffb71d58c1 +Block 0018 [ 5]: 4b64d1fb17618ef1 +Block 0018 [ 6]: 749a26d465aa0dd7 +Block 0018 [ 7]: 4a49a8308965e8c5 +Block 0018 [ 8]: 138fa766f93ea8c2 +Block 0018 [ 9]: 425c687587361644 +Block 0018 [ 10]: 7a1f4d575267c8f2 +Block 0018 [ 11]: 08c1c26e0511b1fb +Block 0018 [ 12]: 058b385ba386aebf +Block 0018 [ 13]: 2c65bfef8e4ee46a +Block 0018 [ 14]: d1f832ad7b80f7fa +Block 0018 [ 15]: 336ff88cc3d6951a +Block 0018 [ 16]: 7816362d30a559d4 +Block 0018 [ 17]: beabe02fbc7ae8a7 +Block 0018 [ 18]: c81e862255ea507e +Block 0018 [ 19]: c691eb61b2454b13 +Block 0018 [ 20]: bbda0810c15390f5 +Block 0018 [ 21]: d5f89bdfe8dcbea3 +Block 0018 [ 22]: 8ba98c6aca3f7890 +Block 0018 [ 23]: 4f8195b2abf68b50 +Block 0018 [ 24]: f244d7e00977c5b8 +Block 0018 [ 25]: 52d3e3893693be21 +Block 0018 [ 26]: d6ac75864a0a4b09 +Block 0018 [ 27]: 31737d76eeec0dac +Block 0018 [ 28]: 4343172dd2a3ed5f +Block 0018 [ 29]: a441605208364aa5 +Block 0018 [ 30]: 3f8e47e2b7bce73d +Block 0018 [ 31]: d6359b6b2f9e2a3c +Block 0018 [ 32]: 3b2561edb34f5eed +Block 0018 [ 33]: ccdd079b16d4c46e +Block 0018 [ 34]: fe2c16a3fbdeea17 +Block 0018 [ 35]: c8daa941845adf98 +Block 0018 [ 36]: ef7869ec52a59512 +Block 0018 [ 37]: e26ff84a493d7c7e +Block 0018 [ 38]: 9c0caa9fcc3df665 +Block 0018 [ 39]: 6c5281eaa7710399 +Block 0018 [ 40]: d0cda1785aa88e4e +Block 0018 [ 41]: a31d1beb969b45dc +Block 0018 [ 42]: 12afc4a7accbd8a2 +Block 0018 [ 43]: 56469fb7998e6378 +Block 0018 [ 44]: 01386c5908479b8b +Block 0018 [ 45]: 687415ab506cbc68 +Block 0018 [ 46]: 9d563191292a4dce +Block 0018 [ 47]: 7e1c8c7260b9c1e4 +Block 0018 [ 48]: 20a3a6d3018ab012 +Block 0018 [ 49]: 3bced6b3c5b1ed84 +Block 0018 [ 50]: aa8dcefad634e58b +Block 0018 [ 51]: 161ddb6e3d7d69f4 +Block 0018 [ 52]: 7039fa10ea0bbff0 +Block 0018 [ 53]: 32723d06737af10a +Block 0018 [ 54]: e84317749f1191e4 +Block 0018 [ 55]: 18c17d76251cd254 +Block 0018 [ 56]: e7bbacff780165c9 +Block 0018 [ 57]: a63258d3e9173063 +Block 0018 [ 58]: 9d845b2cdad3ae6c +Block 0018 [ 59]: 80863609a8080239 +Block 0018 [ 60]: aeb0108c57b35b0c +Block 0018 [ 61]: c3a6d8bfefbb126b +Block 0018 [ 62]: f9f3331294e28d63 +Block 0018 [ 63]: fff56675d44f84f4 +Block 0018 [ 64]: 2736d955ba5d90ba +Block 0018 [ 65]: 644358fe1ab9760e +Block 0018 [ 66]: 9ff9e6feaa53f66c +Block 0018 [ 67]: 9696bc3da3b68444 +Block 0018 [ 68]: 1367438ef5ff3c7e +Block 0018 [ 69]: 4845f05a87410ac9 +Block 0018 [ 70]: bec2379c4ee5d144 +Block 0018 [ 71]: 03de245819472430 +Block 0018 [ 72]: 1db9b5a009b81841 +Block 0018 [ 73]: c25196560bf2d51b +Block 0018 [ 74]: 0425d7bc03de37d5 +Block 0018 [ 75]: ed46c9003fe5cb7a +Block 0018 [ 76]: e1b1f09579ebf515 +Block 0018 [ 77]: 2e7c57b4160cf29b +Block 0018 [ 78]: f0304fe252d819e4 +Block 0018 [ 79]: 371a020d72b7d98f +Block 0018 [ 80]: 36e9b0cf530d0498 +Block 0018 [ 81]: 317ef0425f37e93a +Block 0018 [ 82]: 45c467bcd49da881 +Block 0018 [ 83]: 0e21ff32aec0927b +Block 0018 [ 84]: 8883c2b4291f6b51 +Block 0018 [ 85]: 708b49a444fe2ece +Block 0018 [ 86]: 8a8c752afa03aee1 +Block 0018 [ 87]: 9dafb4fcc13de535 +Block 0018 [ 88]: 8d7a457d16d7f49f +Block 0018 [ 89]: d3513c7f9cad018b +Block 0018 [ 90]: 03144dd828027e10 +Block 0018 [ 91]: c07fad863376caa3 +Block 0018 [ 92]: 8500f36e4cee0ceb +Block 0018 [ 93]: c597ca6cb805cbd2 +Block 0018 [ 94]: c05fb437b61b48da +Block 0018 [ 95]: 35145b4938a63b8c +Block 0018 [ 96]: 8bf9ebddcd0b7fb5 +Block 0018 [ 97]: d6668784244b88c5 +Block 0018 [ 98]: 45731fd06dfa60d4 +Block 0018 [ 99]: 7bf4cd52329f58f1 +Block 0018 [100]: 94afb89c3a052416 +Block 0018 [101]: e49c7c68d4c95176 +Block 0018 [102]: 0d046d2ae897f269 +Block 0018 [103]: 734d9e676f1d0600 +Block 0018 [104]: edb5c8933b81f706 +Block 0018 [105]: 9cdeadfc91f1ff95 +Block 0018 [106]: 33020a25481ff5f7 +Block 0018 [107]: 7afa457afdac3306 +Block 0018 [108]: 9122d216bc3de7c8 +Block 0018 [109]: e14dba25e7e091d8 +Block 0018 [110]: 62be3b4921bae56d +Block 0018 [111]: 45d8c7083076ca76 +Block 0018 [112]: 1b689948b01eeda1 +Block 0018 [113]: 4cefb70309c448fa +Block 0018 [114]: 6cdf7eb1412871a4 +Block 0018 [115]: 42cf57fdbd83ac27 +Block 0018 [116]: a566c79afba194e8 +Block 0018 [117]: c9918575e10df83a +Block 0018 [118]: a078bd2b5a6a3c9f +Block 0018 [119]: dc319fc197b36ae7 +Block 0018 [120]: 23d759be6893d7a4 +Block 0018 [121]: f8a1237465ab3c9b +Block 0018 [122]: cd47410ab3c90d76 +Block 0018 [123]: c3bfee20feb23cfb +Block 0018 [124]: b2f1f976ea8568d5 +Block 0018 [125]: e65206d65f01a1ae +Block 0018 [126]: 1b8f1facf8bb69eb +Block 0018 [127]: 44e81cb05a43dab5 +Block 0019 [ 0]: aa3e76015aa2c41a +Block 0019 [ 1]: cb622c70b808c1d5 +Block 0019 [ 2]: a0146068353cd441 +Block 0019 [ 3]: 7ccebe1e3e2e35d1 +Block 0019 [ 4]: b5fea95156ff6d79 +Block 0019 [ 5]: 77ef49a16920b5eb +Block 0019 [ 6]: c4774d26e217a901 +Block 0019 [ 7]: 1edca7593da10df0 +Block 0019 [ 8]: cb9d48e8bae900c9 +Block 0019 [ 9]: efaa7c38141f0935 +Block 0019 [ 10]: 2c24a8490894b89d +Block 0019 [ 11]: ef59dde9dc3f69e1 +Block 0019 [ 12]: 3e479bcc6807b6a2 +Block 0019 [ 13]: 1db94891d8de2438 +Block 0019 [ 14]: a9db4d224f6ab5ad +Block 0019 [ 15]: 616c6a1d422efe6c +Block 0019 [ 16]: adf176d6d1263636 +Block 0019 [ 17]: d82b220f874f7265 +Block 0019 [ 18]: c59dd97d04e43007 +Block 0019 [ 19]: 9a3b357237af7443 +Block 0019 [ 20]: 4a2c70a326668106 +Block 0019 [ 21]: 755df7a100e7f66c +Block 0019 [ 22]: d48f9b0e6440cfc9 +Block 0019 [ 23]: ca32b8caf8c8944b +Block 0019 [ 24]: fdb2e9c116686001 +Block 0019 [ 25]: 0b5bb6b191036570 +Block 0019 [ 26]: f5f2990e2ef67cc0 +Block 0019 [ 27]: c98661687f4685be +Block 0019 [ 28]: 65f6a375c3c611f8 +Block 0019 [ 29]: ef2e760822c6a47f +Block 0019 [ 30]: 225d6aa089d5268e +Block 0019 [ 31]: 62da55277aee1563 +Block 0019 [ 32]: 712dd1bec61a04a7 +Block 0019 [ 33]: 244be57459f4c76a +Block 0019 [ 34]: d32a36bff368c5d5 +Block 0019 [ 35]: 08047c20c35ee571 +Block 0019 [ 36]: 26e8068fc6b13eb5 +Block 0019 [ 37]: 56e005fd57f4b712 +Block 0019 [ 38]: 36f4d5514b4ad0cf +Block 0019 [ 39]: 577c56d82ce0f024 +Block 0019 [ 40]: a171c394367b6da2 +Block 0019 [ 41]: 32f8fa87524fe061 +Block 0019 [ 42]: 6612dd6bb411827d +Block 0019 [ 43]: e9c9229a1250942f +Block 0019 [ 44]: bdc28bc191e037e8 +Block 0019 [ 45]: 0c6451a576636faf +Block 0019 [ 46]: 9f168206eadcff9c +Block 0019 [ 47]: 83f94a286e1c1435 +Block 0019 [ 48]: 0c41dfcd624a9c7a +Block 0019 [ 49]: 7022a05fa7a76790 +Block 0019 [ 50]: ccc35774262e5cda +Block 0019 [ 51]: 375aae3a3cf6f07e +Block 0019 [ 52]: b73940411e1738cf +Block 0019 [ 53]: 2a5409d288e38616 +Block 0019 [ 54]: 07073fa0e861eb3c +Block 0019 [ 55]: 79469b12451cca2a +Block 0019 [ 56]: 723ebd6cb8093e12 +Block 0019 [ 57]: 363987806bd00b0f +Block 0019 [ 58]: 3cb6f8ba09c2ea95 +Block 0019 [ 59]: 520d977ef770e9db +Block 0019 [ 60]: 7778cc317565971b +Block 0019 [ 61]: bec212c43afb3adf +Block 0019 [ 62]: b666996aafbe2dbc +Block 0019 [ 63]: c9cb8e75500c38f2 +Block 0019 [ 64]: 8b5d717f1e733849 +Block 0019 [ 65]: cb94b06d182747c5 +Block 0019 [ 66]: a2fae8841d54f52f +Block 0019 [ 67]: db0e02a7c115504d +Block 0019 [ 68]: adfbdfac5438167d +Block 0019 [ 69]: f67d10aeb9d0b51b +Block 0019 [ 70]: 7b8cab32096b0baf +Block 0019 [ 71]: de09aecb032a0c31 +Block 0019 [ 72]: 509b16c99b879ae6 +Block 0019 [ 73]: f7641ecd12a66179 +Block 0019 [ 74]: 007ad1724fc84331 +Block 0019 [ 75]: efa6210dbe8c0764 +Block 0019 [ 76]: 37dc83be6aac171b +Block 0019 [ 77]: c96e4eea37d1e6eb +Block 0019 [ 78]: ddb040a43cf90b33 +Block 0019 [ 79]: 39b0cc39afba6089 +Block 0019 [ 80]: 9aa9caa334b61342 +Block 0019 [ 81]: 44b19b55c2903530 +Block 0019 [ 82]: 9217a7b8f7abbe7d +Block 0019 [ 83]: da0435f0e5f65479 +Block 0019 [ 84]: b4ea8b8f6fe9d01e +Block 0019 [ 85]: 6c6742cb6ae2d8fe +Block 0019 [ 86]: a8a1d0d317252abc +Block 0019 [ 87]: dbeb783190ce2842 +Block 0019 [ 88]: 6ab03dde0b190483 +Block 0019 [ 89]: 0ae262c79049e94c +Block 0019 [ 90]: 25e7abd3f3dc40d4 +Block 0019 [ 91]: 74ae75be5862d6ae +Block 0019 [ 92]: afba143705d3d17a +Block 0019 [ 93]: c0cb1d6a6cb6c7a5 +Block 0019 [ 94]: a7b59fb95d48c653 +Block 0019 [ 95]: 98bc8c61739f4de6 +Block 0019 [ 96]: 2d6848e5e862916c +Block 0019 [ 97]: d2e937fe621b933a +Block 0019 [ 98]: 52c035cade29df96 +Block 0019 [ 99]: 1a4598813b293978 +Block 0019 [100]: 1944c56096b3446a +Block 0019 [101]: 31d1d01ad95e0d41 +Block 0019 [102]: 929ed4acca116441 +Block 0019 [103]: d0f85d36d6357c63 +Block 0019 [104]: aa51d03fc905cf82 +Block 0019 [105]: 025aa197fe483a3d +Block 0019 [106]: 197c68bea90d901b +Block 0019 [107]: b9d621593657d1f7 +Block 0019 [108]: 57bef2332db7c6ef +Block 0019 [109]: a4b4fcb041fd73dc +Block 0019 [110]: ec3ba04676096512 +Block 0019 [111]: f0c29a9d37c08914 +Block 0019 [112]: 4d9d261e314064db +Block 0019 [113]: dc2314df89a11580 +Block 0019 [114]: a201d18ed2904ccc +Block 0019 [115]: 6d1eee9f8733e9ac +Block 0019 [116]: 52e03b595ab01453 +Block 0019 [117]: 2e185ddcae94e78e +Block 0019 [118]: a122c80cb676b5b2 +Block 0019 [119]: 7b094927f1ab7fd5 +Block 0019 [120]: e24f8e8700242727 +Block 0019 [121]: e547f9fbe6f25da0 +Block 0019 [122]: 1c032a1b7d889bd8 +Block 0019 [123]: f0065170035b78e0 +Block 0019 [124]: 9970454dd33cf256 +Block 0019 [125]: 857946d277b97210 +Block 0019 [126]: fc16e28cd750816e +Block 0019 [127]: 06f8ff690d41929d +Block 0020 [ 0]: 8a4f9db0ee84b35e +Block 0020 [ 1]: 05d43e724283fb22 +Block 0020 [ 2]: 1752db12ef2183eb +Block 0020 [ 3]: 178453f8a1f0e320 +Block 0020 [ 4]: ca2301d94bc879ae +Block 0020 [ 5]: bde50c8b0c995430 +Block 0020 [ 6]: 67161b155639636f +Block 0020 [ 7]: 85af2571c91c953c +Block 0020 [ 8]: d6233a7eae67bbb8 +Block 0020 [ 9]: ff9f6a7dd83865eb +Block 0020 [ 10]: cf3f19501b2b1097 +Block 0020 [ 11]: 36db51d1b9e6f85a +Block 0020 [ 12]: 5c5942dc39207d28 +Block 0020 [ 13]: 2b5a9939d050b99d +Block 0020 [ 14]: 8890b2c4de332010 +Block 0020 [ 15]: 2bffc5b880155776 +Block 0020 [ 16]: 9d689be3ee578244 +Block 0020 [ 17]: af66f1e4f8b45f62 +Block 0020 [ 18]: d1d0b72827268a6d +Block 0020 [ 19]: 7b4f96b5b5bb2ee7 +Block 0020 [ 20]: 34164e19532e3ff3 +Block 0020 [ 21]: 3b293d5ba9a9aa36 +Block 0020 [ 22]: 9a1d322d31de3ede +Block 0020 [ 23]: 209a2e31f28fbf4a +Block 0020 [ 24]: e96333b0e0307d67 +Block 0020 [ 25]: 74db7c84dbfb42b2 +Block 0020 [ 26]: 6a832659109cbeb6 +Block 0020 [ 27]: 40a88c9e7583cc27 +Block 0020 [ 28]: 2fb7884dc5dd65ec +Block 0020 [ 29]: 8622638205cd2f99 +Block 0020 [ 30]: 6f064114ced1864a +Block 0020 [ 31]: bc3837c3a04e9a7b +Block 0020 [ 32]: 3e8d79081e8567fb +Block 0020 [ 33]: f56eabf9f0595e78 +Block 0020 [ 34]: 8eed403a3c788b53 +Block 0020 [ 35]: 1378bf4dc47dfe48 +Block 0020 [ 36]: 084c595b8c3c4284 +Block 0020 [ 37]: 3b5361f50ffb9eaa +Block 0020 [ 38]: 8bce8704343749f9 +Block 0020 [ 39]: f1211e16a9112f82 +Block 0020 [ 40]: bd238d55c13f2400 +Block 0020 [ 41]: 34220ff220961874 +Block 0020 [ 42]: 8897e83d67d144c6 +Block 0020 [ 43]: 2db5b922527b964e +Block 0020 [ 44]: b52197589d437094 +Block 0020 [ 45]: 6a48ba9a9fa154de +Block 0020 [ 46]: e98bb88fd0e4dab7 +Block 0020 [ 47]: 2f84a701d1a03033 +Block 0020 [ 48]: fc772aae41afde53 +Block 0020 [ 49]: 636bb52ba1d4d9f4 +Block 0020 [ 50]: faec1cea1cc46a10 +Block 0020 [ 51]: 94d08005cfc3c287 +Block 0020 [ 52]: 9830390c9a830a8c +Block 0020 [ 53]: 1c8f499329eaf4d1 +Block 0020 [ 54]: 6853cf0db3311b76 +Block 0020 [ 55]: 83e79a680245e207 +Block 0020 [ 56]: 7cec49064e8bf50b +Block 0020 [ 57]: 4fd24b05836c01c4 +Block 0020 [ 58]: 905e99c68a4c100e +Block 0020 [ 59]: 4f9a89f3d7ac4e0b +Block 0020 [ 60]: c9c39471299e1ddb +Block 0020 [ 61]: e39efaf3b38813a4 +Block 0020 [ 62]: 286b4375813a437d +Block 0020 [ 63]: 98e5b9910e3934df +Block 0020 [ 64]: d521ed1fe8a87969 +Block 0020 [ 65]: db08009d9e929343 +Block 0020 [ 66]: a0c34ebe01219a67 +Block 0020 [ 67]: e0ce735c0009e0c1 +Block 0020 [ 68]: 4fb4716c4dbb61f8 +Block 0020 [ 69]: e59f27e642628964 +Block 0020 [ 70]: fff59eb4c7b5702c +Block 0020 [ 71]: 2a775ff254d62e30 +Block 0020 [ 72]: 0a081787e9771e82 +Block 0020 [ 73]: ec7dea5310431b84 +Block 0020 [ 74]: 2c490281ca5de0f6 +Block 0020 [ 75]: eead3e14ea1923fd +Block 0020 [ 76]: 3b833ad12c010798 +Block 0020 [ 77]: 363edc3e25c47661 +Block 0020 [ 78]: af78f9f2aec5fe6a +Block 0020 [ 79]: 31d902a64cbcb466 +Block 0020 [ 80]: f5c4812963178782 +Block 0020 [ 81]: 2922c5fc0ea4c6b8 +Block 0020 [ 82]: 31b289a43161a3e8 +Block 0020 [ 83]: ed8f261a426e4652 +Block 0020 [ 84]: e813c7f4b1ea1bd1 +Block 0020 [ 85]: 0760441a91fd6595 +Block 0020 [ 86]: 6584645ae348b4f0 +Block 0020 [ 87]: 087309d7d5028f81 +Block 0020 [ 88]: 68d7600f7a6987a9 +Block 0020 [ 89]: 2b3846321beb118c +Block 0020 [ 90]: 4f1633a0d3637086 +Block 0020 [ 91]: d3b8197641b70961 +Block 0020 [ 92]: 79e34df4822e23e3 +Block 0020 [ 93]: 1561ec3cb8df22a0 +Block 0020 [ 94]: 2caa46601b15c5a8 +Block 0020 [ 95]: efd91677fe9784df +Block 0020 [ 96]: 985faa6923818318 +Block 0020 [ 97]: 49c18986b6c3be49 +Block 0020 [ 98]: 7f60e94fb8ca654a +Block 0020 [ 99]: 9aa81a1c69b89835 +Block 0020 [100]: 804a4a140e6de1b3 +Block 0020 [101]: ad5e3b1de8e2fa89 +Block 0020 [102]: 9317892f7ff6495f +Block 0020 [103]: aedbce513941eb7e +Block 0020 [104]: bae93efd21fe2a00 +Block 0020 [105]: e8fd2f13cd90ddf5 +Block 0020 [106]: ca82b1623bfd32e2 +Block 0020 [107]: 45a3aa2da3795165 +Block 0020 [108]: 842eb4e38880bf30 +Block 0020 [109]: 94da58ed78612959 +Block 0020 [110]: 2b68ef59ef8d144c +Block 0020 [111]: 3a815560012d789a +Block 0020 [112]: cbf6b1e9b5757616 +Block 0020 [113]: 856022efc7259d65 +Block 0020 [114]: 1d546cfb010ccea0 +Block 0020 [115]: ead677ea82cde8c4 +Block 0020 [116]: c68f1c9ce7d502c8 +Block 0020 [117]: 01430c313a4da7de +Block 0020 [118]: d9bd21f426a60b45 +Block 0020 [119]: 367f365d76791fb5 +Block 0020 [120]: 450c3a5d659df17c +Block 0020 [121]: e4936ada9bf3874c +Block 0020 [122]: c022ef04e11cc79d +Block 0020 [123]: b8b492f9bd65b623 +Block 0020 [124]: bff3f85f55177ad6 +Block 0020 [125]: b5b12c22a577cc39 +Block 0020 [126]: f474903b19473bea +Block 0020 [127]: d79a7d13279e3b09 +Block 0021 [ 0]: 6a690d82f7468dd3 +Block 0021 [ 1]: 12441ba391c9594e +Block 0021 [ 2]: 8c5f0f5a0d1addfc +Block 0021 [ 3]: c889abe6f4d8422a +Block 0021 [ 4]: 5d763273270fbef6 +Block 0021 [ 5]: 4348880c55930785 +Block 0021 [ 6]: e620148dd4f6f217 +Block 0021 [ 7]: 3e029951e0b571b4 +Block 0021 [ 8]: 357a0d9da17a4feb +Block 0021 [ 9]: 0e50f4a16dfeff0c +Block 0021 [ 10]: 95d4a46a7f81baac +Block 0021 [ 11]: 539843f5fcfd02cd +Block 0021 [ 12]: 9d178b8212b0ff45 +Block 0021 [ 13]: 2a2f470cb36c100b +Block 0021 [ 14]: bf41303e9261b48e +Block 0021 [ 15]: 9b0862b229b83b6d +Block 0021 [ 16]: cc89cb6361314e2e +Block 0021 [ 17]: 268c35415ce6dc52 +Block 0021 [ 18]: a3a3f427c540d392 +Block 0021 [ 19]: 6bf8e2ed1915f860 +Block 0021 [ 20]: d71b137449672e9b +Block 0021 [ 21]: 629232b8316eb560 +Block 0021 [ 22]: 015105d3bd65ee42 +Block 0021 [ 23]: 7899ec0fb94c6aec +Block 0021 [ 24]: 87452e4e58a4db50 +Block 0021 [ 25]: 9eab92117f5864cc +Block 0021 [ 26]: c9b4aae2326ae591 +Block 0021 [ 27]: beb6cb972da0771c +Block 0021 [ 28]: ef51efd15eb76fdb +Block 0021 [ 29]: be1a9ed66325f1c8 +Block 0021 [ 30]: f9eb1c4a361d6a0b +Block 0021 [ 31]: f33919c3dbbd7564 +Block 0021 [ 32]: 09f88bba37d76cc5 +Block 0021 [ 33]: 626fab6de3cfcec7 +Block 0021 [ 34]: 1a641fe5d8c5f7dd +Block 0021 [ 35]: 16aafd5de0731c78 +Block 0021 [ 36]: e3c0c662199c1ca2 +Block 0021 [ 37]: 54d0766c3a0a5f59 +Block 0021 [ 38]: c13b58b4f9e87258 +Block 0021 [ 39]: ab4de1d30836c3c0 +Block 0021 [ 40]: 5d4af2bffc26448c +Block 0021 [ 41]: 6cbf772c8406ff83 +Block 0021 [ 42]: 2494f8048435f921 +Block 0021 [ 43]: b844fc339f0496b0 +Block 0021 [ 44]: 957800ddd4aa408e +Block 0021 [ 45]: 998fc5084c314ceb +Block 0021 [ 46]: 2eb014c15ff6239d +Block 0021 [ 47]: 6a779f0437c473bb +Block 0021 [ 48]: 1d68b14e7bf75d98 +Block 0021 [ 49]: c96192d0a155afa7 +Block 0021 [ 50]: ed980b6f7430035d +Block 0021 [ 51]: a282ae6ceae976e1 +Block 0021 [ 52]: 627d105e74b5809a +Block 0021 [ 53]: ef2583d01983d3e9 +Block 0021 [ 54]: 19702f856f10b49c +Block 0021 [ 55]: 878565afd439cff8 +Block 0021 [ 56]: 41e300a0e2ea091f +Block 0021 [ 57]: 813d4ae9df7ff99b +Block 0021 [ 58]: 876ed9836644b255 +Block 0021 [ 59]: e6f3cf1e523c47a2 +Block 0021 [ 60]: 5b3b6a50ddbe365a +Block 0021 [ 61]: a78355f9b796b48e +Block 0021 [ 62]: cee13fa63c34d91d +Block 0021 [ 63]: 3ad04395adaaa626 +Block 0021 [ 64]: 25f04f6fea52fad8 +Block 0021 [ 65]: b949d6ad6bd07455 +Block 0021 [ 66]: eace6d725bdd90e7 +Block 0021 [ 67]: 28ec322421ed16da +Block 0021 [ 68]: 53ef5acdcde08591 +Block 0021 [ 69]: 1731904e94e47535 +Block 0021 [ 70]: f905f30eaee0f5a4 +Block 0021 [ 71]: bf030f5796084fdb +Block 0021 [ 72]: 2727e18c596bcc5d +Block 0021 [ 73]: b41e211383e74c1c +Block 0021 [ 74]: ca7ac3560b209561 +Block 0021 [ 75]: c72caf41204b2f30 +Block 0021 [ 76]: 01c8ea4f3814837e +Block 0021 [ 77]: 6a6c6b41f86cd210 +Block 0021 [ 78]: 04666cea6797c53e +Block 0021 [ 79]: 31493ece7f7f369b +Block 0021 [ 80]: b54719467f58b743 +Block 0021 [ 81]: c994b462ca9e76fb +Block 0021 [ 82]: bca2b0d3356d6258 +Block 0021 [ 83]: 8ca7953de9bbcdff +Block 0021 [ 84]: 535469dd17595f7d +Block 0021 [ 85]: 923db89190ec8649 +Block 0021 [ 86]: 6a47a104d6085a31 +Block 0021 [ 87]: 99521adc90e0fb2e +Block 0021 [ 88]: 4f41ef6bb830f393 +Block 0021 [ 89]: 2eccdea43764c42c +Block 0021 [ 90]: 987fe3497b80df32 +Block 0021 [ 91]: b0efcf6157cbcf0b +Block 0021 [ 92]: 26e0b03471338ae5 +Block 0021 [ 93]: cf4ad2adf62522c4 +Block 0021 [ 94]: 4cb838ff8a040a42 +Block 0021 [ 95]: 437c3d04c884bb15 +Block 0021 [ 96]: 5b14b20bc5801714 +Block 0021 [ 97]: 56dba0d047b9059b +Block 0021 [ 98]: d69d5fa49a586a3a +Block 0021 [ 99]: 2d920c3b7cdbe2ee +Block 0021 [100]: a25b45eac0504268 +Block 0021 [101]: fefa93f49a07f52b +Block 0021 [102]: 6b800421cddbaceb +Block 0021 [103]: 8f4aa7cc052749cc +Block 0021 [104]: 91b8112dc322d756 +Block 0021 [105]: a693ecaab66dbce0 +Block 0021 [106]: 876ccc4f6a1e06ef +Block 0021 [107]: f1dceba8e8d281c8 +Block 0021 [108]: 9db34590d552f669 +Block 0021 [109]: c652413cce887046 +Block 0021 [110]: 3591284cc5019dd5 +Block 0021 [111]: 557c5ca2a73593f6 +Block 0021 [112]: 1ad1bbd2cdedd482 +Block 0021 [113]: 4a4411ef6795ebc6 +Block 0021 [114]: b3572af2889f1c36 +Block 0021 [115]: f68259a9ba57696d +Block 0021 [116]: c9343fffa8f8a568 +Block 0021 [117]: 2f7041694cec2149 +Block 0021 [118]: 7a0447037cc831ab +Block 0021 [119]: 51e939824bd21330 +Block 0021 [120]: fc74c47626ca3908 +Block 0021 [121]: bab7851bd8ed2716 +Block 0021 [122]: a159f8ec28517b61 +Block 0021 [123]: 7536651c332d5abe +Block 0021 [124]: 68913e0a98eed0fc +Block 0021 [125]: 0edcf5e40acaf20c +Block 0021 [126]: 3b248d434ed7bb55 +Block 0021 [127]: 39ab89f9d8b926b3 +Block 0022 [ 0]: 3f70cc0f9d47707f +Block 0022 [ 1]: f5eb80c359ef2a51 +Block 0022 [ 2]: d453f69f134da7de +Block 0022 [ 3]: 138b7cc85bb57594 +Block 0022 [ 4]: 74f9c1207bb6b4dd +Block 0022 [ 5]: 219a6ab1c89b4f55 +Block 0022 [ 6]: 8a494ac72680d673 +Block 0022 [ 7]: 267fc49b20bebc87 +Block 0022 [ 8]: e487c1458e1d57bb +Block 0022 [ 9]: ce2365f353681c6e +Block 0022 [ 10]: ead7a9af5856b905 +Block 0022 [ 11]: 686e9296790d47c4 +Block 0022 [ 12]: 262aa1e0a3aee9b8 +Block 0022 [ 13]: cf02b3e2b36c552f +Block 0022 [ 14]: cc89498295a3a56e +Block 0022 [ 15]: 59c0818ddb29c3b7 +Block 0022 [ 16]: 290e0e36ae0adb71 +Block 0022 [ 17]: 2b26f87ae8afd6d1 +Block 0022 [ 18]: 7eaf767983ed9a23 +Block 0022 [ 19]: 7d20d84ac0016375 +Block 0022 [ 20]: 8571c62882e1e05f +Block 0022 [ 21]: b02d4e3a32d7eb0f +Block 0022 [ 22]: 508db8ec23e8b660 +Block 0022 [ 23]: eb378e5c40b3c8f1 +Block 0022 [ 24]: 83cbba05d754b665 +Block 0022 [ 25]: d9d4c05f4f0318fa +Block 0022 [ 26]: f9c09b3d86d7f325 +Block 0022 [ 27]: fda56c3e88644d3d +Block 0022 [ 28]: 2c2aa62da14575bf +Block 0022 [ 29]: 6c64f927b3ab75ab +Block 0022 [ 30]: 935b4ee8b0eb2f84 +Block 0022 [ 31]: 8755b9ac7888c891 +Block 0022 [ 32]: 328982a5c3491d4b +Block 0022 [ 33]: 0f46472e28c9f157 +Block 0022 [ 34]: d4141d926cea8a31 +Block 0022 [ 35]: b83228a2302af08a +Block 0022 [ 36]: 85c24d6f72bca71a +Block 0022 [ 37]: b4abb81f797317be +Block 0022 [ 38]: d56c5d7910890829 +Block 0022 [ 39]: 80ec5e7003e1dcbe +Block 0022 [ 40]: 86f0590758cd27da +Block 0022 [ 41]: 4ef24b838af6cdf7 +Block 0022 [ 42]: 67e357a7beef393b +Block 0022 [ 43]: 63d780ac9193bd51 +Block 0022 [ 44]: 64bb5e3aa4e4e0a9 +Block 0022 [ 45]: a94f3197abecf10d +Block 0022 [ 46]: 63f34c088c47b6d6 +Block 0022 [ 47]: 9ddbf939d19d4778 +Block 0022 [ 48]: 5d08f10b95522795 +Block 0022 [ 49]: 78bba3c480deabdd +Block 0022 [ 50]: 8d59286c50ed63bc +Block 0022 [ 51]: 11e2e05af4e98a96 +Block 0022 [ 52]: 6c47d628f6bf8ae5 +Block 0022 [ 53]: 2a06375e05b36cc1 +Block 0022 [ 54]: 9dbca78d1d334ba4 +Block 0022 [ 55]: a1216d5e2ae50cf6 +Block 0022 [ 56]: a150c2b93d4afb34 +Block 0022 [ 57]: a2b13a50cd072fa1 +Block 0022 [ 58]: 7c03a9ea46b3e1be +Block 0022 [ 59]: 9a682f9b2c8a0ba5 +Block 0022 [ 60]: 836dd7bd4d152995 +Block 0022 [ 61]: f0176675ec8230f1 +Block 0022 [ 62]: 0481fd3ccc6daa78 +Block 0022 [ 63]: e3325ec7d894b781 +Block 0022 [ 64]: ea394932d67081f5 +Block 0022 [ 65]: 8e7c52d335e12e3b +Block 0022 [ 66]: fce337de40f0d41e +Block 0022 [ 67]: 58cffb116a73341c +Block 0022 [ 68]: c0296ad8d2c01ccc +Block 0022 [ 69]: 76d5795c8820068d +Block 0022 [ 70]: 1a29ad20fa1ab458 +Block 0022 [ 71]: 8619693bda7f0872 +Block 0022 [ 72]: 6b8b27f92588f5f9 +Block 0022 [ 73]: 5e76c336d09dc18b +Block 0022 [ 74]: c699fdcb6eecfc23 +Block 0022 [ 75]: b31ed01e22cb487f +Block 0022 [ 76]: 1496f91f13ec269a +Block 0022 [ 77]: d4090509dd4158e6 +Block 0022 [ 78]: 4a947a520f8810f6 +Block 0022 [ 79]: 065468219f73ab5a +Block 0022 [ 80]: 8a4b1ed17cae3bbb +Block 0022 [ 81]: c30a06c4a34d2887 +Block 0022 [ 82]: 5cddc373dbfc1593 +Block 0022 [ 83]: 04335ba1b963f666 +Block 0022 [ 84]: 85a31f5f5fa3e7eb +Block 0022 [ 85]: 232179a977e19047 +Block 0022 [ 86]: 26563ede801a4d94 +Block 0022 [ 87]: 4a7e1940462900f0 +Block 0022 [ 88]: b1e2be20bbf016c3 +Block 0022 [ 89]: 7db114728eee3040 +Block 0022 [ 90]: 4f182d12273166ae +Block 0022 [ 91]: 9c4aa74c698762ba +Block 0022 [ 92]: 03a3e790226c9265 +Block 0022 [ 93]: a31d876f8c84340a +Block 0022 [ 94]: ef732cbaa920286f +Block 0022 [ 95]: 3326b587e57c8933 +Block 0022 [ 96]: c1dcf40199a259d5 +Block 0022 [ 97]: 22b54da552e17174 +Block 0022 [ 98]: 54287619d13f4838 +Block 0022 [ 99]: ea44ee02ed3e4aec +Block 0022 [100]: e60d7f85f5abb1ee +Block 0022 [101]: 8b1a51a4211a7969 +Block 0022 [102]: 49c9292a1953bf9c +Block 0022 [103]: 202dc80570086a4b +Block 0022 [104]: 2dd572ef067f560a +Block 0022 [105]: 2ddebe7bd2a703ca +Block 0022 [106]: 289c61cdfd6966fb +Block 0022 [107]: 7156699a693063c1 +Block 0022 [108]: 244c502031ccd19f +Block 0022 [109]: a9436c05d1a5e0ba +Block 0022 [110]: 2ed5fbeafdd3128a +Block 0022 [111]: 27c4f3005c6ffa0c +Block 0022 [112]: b399e9c1b48ee737 +Block 0022 [113]: 26cf4190bd859535 +Block 0022 [114]: a97fa3395a24ead9 +Block 0022 [115]: 73032b5c7a73a24b +Block 0022 [116]: 3c6c63e68aa5e799 +Block 0022 [117]: 56d6fea9e6aee17e +Block 0022 [118]: 46487a212a0f03fd +Block 0022 [119]: 4108a5270f3d45e5 +Block 0022 [120]: 78808b44d4deb7b0 +Block 0022 [121]: a49cd7a2e771bec7 +Block 0022 [122]: c899d135f9a20151 +Block 0022 [123]: 397d1afb157e933d +Block 0022 [124]: b3e792595d5c92ab +Block 0022 [125]: 154fb67a3c72b825 +Block 0022 [126]: 7ef6c5601737fa2e +Block 0022 [127]: e876f8e91ea54fa3 +Block 0023 [ 0]: 341a79fe5b82da3b +Block 0023 [ 1]: 737f57840604464b +Block 0023 [ 2]: 1a7b402397450013 +Block 0023 [ 3]: 17424bc7740881d5 +Block 0023 [ 4]: 99730f5b1c4f162a +Block 0023 [ 5]: 1849c57fadf5c376 +Block 0023 [ 6]: bef6a16b254402fe +Block 0023 [ 7]: e446a0a7fe1b37d1 +Block 0023 [ 8]: e1c2dbb6e612b1c9 +Block 0023 [ 9]: 8d87fc8c05d17a91 +Block 0023 [ 10]: 0069fc8e5ec68712 +Block 0023 [ 11]: 03fe37e380527614 +Block 0023 [ 12]: d36a5d4153e36e01 +Block 0023 [ 13]: bcb47d6da610431e +Block 0023 [ 14]: 270f257c2355afd3 +Block 0023 [ 15]: 5ed5f32159550325 +Block 0023 [ 16]: f3d03d86e0697368 +Block 0023 [ 17]: 0e783d159193f647 +Block 0023 [ 18]: 10f1d60920b8df4b +Block 0023 [ 19]: aaaf13f7120fd26f +Block 0023 [ 20]: 4679458b37b0215b +Block 0023 [ 21]: 496624fd48549689 +Block 0023 [ 22]: b243733c6fae67a7 +Block 0023 [ 23]: bb53c16aca1dfdfb +Block 0023 [ 24]: 379a6e5c7b368ef2 +Block 0023 [ 25]: ab9a4ec2322b323e +Block 0023 [ 26]: ee320748a309795f +Block 0023 [ 27]: 08569d46951e5bcc +Block 0023 [ 28]: ec8ceeb84b74514d +Block 0023 [ 29]: 1f85bb224087633e +Block 0023 [ 30]: f28be6d460e221d0 +Block 0023 [ 31]: f661e32cb2e0cd48 +Block 0023 [ 32]: a89f51d1a649a311 +Block 0023 [ 33]: 91c15b946457231a +Block 0023 [ 34]: b3390d3c66d4fc3b +Block 0023 [ 35]: 6e3fe811c4117e98 +Block 0023 [ 36]: 647ae653447f7977 +Block 0023 [ 37]: 3e8451f63f8865fd +Block 0023 [ 38]: f8a6651886f512a4 +Block 0023 [ 39]: 7cf42922459c66c7 +Block 0023 [ 40]: 2577e967f9fda293 +Block 0023 [ 41]: 1389c8f92c268e06 +Block 0023 [ 42]: 5a35ff4199747016 +Block 0023 [ 43]: fc650deae93a7c1b +Block 0023 [ 44]: fcb7794763bf77db +Block 0023 [ 45]: e362533b122524f5 +Block 0023 [ 46]: 1ba9b1e64359b4f5 +Block 0023 [ 47]: 08b09e872e6e1dd9 +Block 0023 [ 48]: 4ee537f0830845cd +Block 0023 [ 49]: 5ce572b3f8832e90 +Block 0023 [ 50]: 1b725b41ecf6d0ad +Block 0023 [ 51]: aa647b27f5cc9c5b +Block 0023 [ 52]: 00a6b24dd3f367b6 +Block 0023 [ 53]: 7f68dbe2f046d0f9 +Block 0023 [ 54]: ce097da84f7194b7 +Block 0023 [ 55]: 58fea62c150d7901 +Block 0023 [ 56]: ef9a9a7cf0c9191a +Block 0023 [ 57]: 6fe8d189a04a105c +Block 0023 [ 58]: 420faab0945c162c +Block 0023 [ 59]: dfd6be3b647140af +Block 0023 [ 60]: dfb409380364365d +Block 0023 [ 61]: 36eeda04b5cfdee0 +Block 0023 [ 62]: 6326723b899f1ef1 +Block 0023 [ 63]: 6531688ea7ab1170 +Block 0023 [ 64]: 299fa844bd5b04de +Block 0023 [ 65]: 4a87c4d2dce5e89e +Block 0023 [ 66]: 8d85a67f07ba1ede +Block 0023 [ 67]: 30b6847d1025c641 +Block 0023 [ 68]: 4726562dd7a8d04e +Block 0023 [ 69]: 9c8829a7b56bf050 +Block 0023 [ 70]: 3f33335a10a6daa8 +Block 0023 [ 71]: ccb3b31d4131d58f +Block 0023 [ 72]: b715752217405e47 +Block 0023 [ 73]: 564adbc6c513bc0f +Block 0023 [ 74]: 5c755447a6582099 +Block 0023 [ 75]: 50987d33c2e8f403 +Block 0023 [ 76]: d370b629305d847f +Block 0023 [ 77]: 46c6ec2f63d39994 +Block 0023 [ 78]: e9e849a1a94b1417 +Block 0023 [ 79]: d5f7a7f69abc45d4 +Block 0023 [ 80]: 720953293ba3a6dc +Block 0023 [ 81]: 2e5a953a29ddae35 +Block 0023 [ 82]: 9389fb9b09621872 +Block 0023 [ 83]: 73fade635fe140b6 +Block 0023 [ 84]: 38bf4c3bce807b6a +Block 0023 [ 85]: 1ace5da62d54f17a +Block 0023 [ 86]: 1c80837442bb0b1f +Block 0023 [ 87]: 881ae1746297229b +Block 0023 [ 88]: f51d9dda7b6c623f +Block 0023 [ 89]: dec061d609ecb1da +Block 0023 [ 90]: 8bf9510cca4c204d +Block 0023 [ 91]: de8a16e97b4584f1 +Block 0023 [ 92]: d206442c8ac16e38 +Block 0023 [ 93]: c3c90cd9562e7732 +Block 0023 [ 94]: 01730c66e6a1026a +Block 0023 [ 95]: 929fffc02cfdbc95 +Block 0023 [ 96]: 1cc815084b846e70 +Block 0023 [ 97]: 4c93d56a06565b60 +Block 0023 [ 98]: 2224244f540ba2fb +Block 0023 [ 99]: 83560821e355eeaa +Block 0023 [100]: db0be31347b60ecc +Block 0023 [101]: cd1f9f68387bd646 +Block 0023 [102]: 86d24034913edc25 +Block 0023 [103]: f905de2d30889d35 +Block 0023 [104]: 87535a21323953b9 +Block 0023 [105]: 2366a1cb51f43ee7 +Block 0023 [106]: 704cc3e5fd36f427 +Block 0023 [107]: 7d59c38fdef90ccb +Block 0023 [108]: d68a4a721796fa30 +Block 0023 [109]: d333366213fa9686 +Block 0023 [110]: 5bdc922f53fc6ef9 +Block 0023 [111]: 07b301b7fece3102 +Block 0023 [112]: 90cc5ec9d6cae00f +Block 0023 [113]: 3c33243c58de4a81 +Block 0023 [114]: 69914a6327b42592 +Block 0023 [115]: aedb75ec336b0c83 +Block 0023 [116]: 0377d738f40b3b8a +Block 0023 [117]: a3b9cbf2d4c2d6bd +Block 0023 [118]: 8509d769b336d9a3 +Block 0023 [119]: f2ea16490855230e +Block 0023 [120]: 8a15faf44b0b37ed +Block 0023 [121]: d617ff1c420f1c63 +Block 0023 [122]: 543394d6ea952471 +Block 0023 [123]: 35409c8245a7c8dd +Block 0023 [124]: dd130b326c99b2f8 +Block 0023 [125]: 7b7d105a04932402 +Block 0023 [126]: ca6d2056cb49b043 +Block 0023 [127]: d1f6d11b9290e397 +Block 0024 [ 0]: e3b8be3b800bcac1 +Block 0024 [ 1]: 93592dd02f819503 +Block 0024 [ 2]: ec4973a83723ef80 +Block 0024 [ 3]: 477e80d3b8f24a0a +Block 0024 [ 4]: 34e1f886f9c40f36 +Block 0024 [ 5]: 6e4119b94c6aa498 +Block 0024 [ 6]: fd2c62ab5381b13b +Block 0024 [ 7]: ee123c46d80957ee +Block 0024 [ 8]: ed542b69841c3346 +Block 0024 [ 9]: cdebc6e16a3882c1 +Block 0024 [ 10]: a7306cb070193039 +Block 0024 [ 11]: ae674fdc1d730617 +Block 0024 [ 12]: 9ee6543905547df4 +Block 0024 [ 13]: cc0536cbba16bb9c +Block 0024 [ 14]: ac44f47060312756 +Block 0024 [ 15]: e48e593dce67bce0 +Block 0024 [ 16]: f5aff4db2366797c +Block 0024 [ 17]: eca2b65e0cd03f09 +Block 0024 [ 18]: a3fd2e7240d51d98 +Block 0024 [ 19]: bfbf1d554e80c436 +Block 0024 [ 20]: 2890165f5f8cbedc +Block 0024 [ 21]: b0637c303f1d1ac1 +Block 0024 [ 22]: dc15a716f869bee5 +Block 0024 [ 23]: c34be8e074b39c6f +Block 0024 [ 24]: 967f16eda9ee64fd +Block 0024 [ 25]: 14107a44211f4d4d +Block 0024 [ 26]: 18b413ce6910aac4 +Block 0024 [ 27]: 5604192a5b6eeecc +Block 0024 [ 28]: 6db3a8bf11a19c45 +Block 0024 [ 29]: 9be52589cd36b4f5 +Block 0024 [ 30]: 4ef35179c27e46f8 +Block 0024 [ 31]: 382e57343eb30442 +Block 0024 [ 32]: 7f9e80c90761e3c0 +Block 0024 [ 33]: f749d138d96e88e4 +Block 0024 [ 34]: d9f68571c4dd5c13 +Block 0024 [ 35]: 43939a9e9e5f7c88 +Block 0024 [ 36]: 1c29e903415c8bf9 +Block 0024 [ 37]: d89a7c5852bc1e1c +Block 0024 [ 38]: ae6caf5be4a605bf +Block 0024 [ 39]: 2d782b9acaf95fb3 +Block 0024 [ 40]: 797f01c34397e617 +Block 0024 [ 41]: 5fd2da21bf24713a +Block 0024 [ 42]: 5526c76a245b34c4 +Block 0024 [ 43]: bfc80ada0d455aa0 +Block 0024 [ 44]: 1793f4cd9103f76a +Block 0024 [ 45]: e8de97a775e1d0cd +Block 0024 [ 46]: df8a6cfa31192f7a +Block 0024 [ 47]: 640f146840f26415 +Block 0024 [ 48]: 4cbd3dd98219dcfe +Block 0024 [ 49]: 6ce1c9f112bec860 +Block 0024 [ 50]: ffbbc563a583b1d3 +Block 0024 [ 51]: 76c086ebfefb2b79 +Block 0024 [ 52]: 6758f6e588490093 +Block 0024 [ 53]: c5f82f0a9dd56b63 +Block 0024 [ 54]: 7530873426b32f4c +Block 0024 [ 55]: 22557a08fccfd756 +Block 0024 [ 56]: 585b5b8b59796d0a +Block 0024 [ 57]: b5ec994837d36005 +Block 0024 [ 58]: bed35897ce06d10a +Block 0024 [ 59]: 82e686ebd526b229 +Block 0024 [ 60]: d83388e341f49a52 +Block 0024 [ 61]: f44ff88f95a27c3d +Block 0024 [ 62]: 988230b216a9823e +Block 0024 [ 63]: 656518e36a1ece8a +Block 0024 [ 64]: 7942fe98ed267352 +Block 0024 [ 65]: 648ede8d1e5e7bda +Block 0024 [ 66]: 76ea13fb53c8b584 +Block 0024 [ 67]: 56387f677a110819 +Block 0024 [ 68]: 16ed666f4094cb45 +Block 0024 [ 69]: fe5a06c15b8aeec4 +Block 0024 [ 70]: 78773a1540aaa4e3 +Block 0024 [ 71]: f908d3a514f12aea +Block 0024 [ 72]: 7947a0a5e3de5695 +Block 0024 [ 73]: 6bf577dffd32e561 +Block 0024 [ 74]: ace24c27c6a31b3d +Block 0024 [ 75]: a98b813be7cc842d +Block 0024 [ 76]: ca9114e79885df7f +Block 0024 [ 77]: 05fa517bd6dd57a6 +Block 0024 [ 78]: b0ea1c66a2e97b8e +Block 0024 [ 79]: 17c7fc5ce92bcb6d +Block 0024 [ 80]: 7e9b1dc6ccbfc17e +Block 0024 [ 81]: 25c3624824af53ed +Block 0024 [ 82]: c1c82c49130c3477 +Block 0024 [ 83]: e1ecceb5ababf159 +Block 0024 [ 84]: 976f387136d4f7ce +Block 0024 [ 85]: 8b9999d864a74c63 +Block 0024 [ 86]: 215d99ed05fff16e +Block 0024 [ 87]: f4a5452133dd542f +Block 0024 [ 88]: 0da71140658ff706 +Block 0024 [ 89]: 47da481f4574299d +Block 0024 [ 90]: 63299064bb401eb2 +Block 0024 [ 91]: af13d9a8d97b37bb +Block 0024 [ 92]: 08359e9b80b0118c +Block 0024 [ 93]: 049e21cfaef9cbe7 +Block 0024 [ 94]: c12cb6dcf3e8de01 +Block 0024 [ 95]: 8bf57b075242998f +Block 0024 [ 96]: 88323e969cdaa1f2 +Block 0024 [ 97]: cdecc8f395cfadec +Block 0024 [ 98]: 03b15b330a376778 +Block 0024 [ 99]: 0099436d96a2cdef +Block 0024 [100]: b3a65c86f37ac4dd +Block 0024 [101]: 4949c9b0289557c8 +Block 0024 [102]: 8929e420dc60f1f0 +Block 0024 [103]: 7a8237af7d558536 +Block 0024 [104]: b2a234a509915dbf +Block 0024 [105]: 964803f63860414f +Block 0024 [106]: af7b6f0ab6aea78f +Block 0024 [107]: 87b040d11ef2b48e +Block 0024 [108]: 9a8d4e6c6209fee7 +Block 0024 [109]: 31363e0694cbe147 +Block 0024 [110]: a01753b413c3432b +Block 0024 [111]: e5ad598e657a3527 +Block 0024 [112]: 2bfbe1bccad1592b +Block 0024 [113]: eab4792c6dfcdb98 +Block 0024 [114]: 5bf3e2632baf57a0 +Block 0024 [115]: 24c47826d1b60b11 +Block 0024 [116]: 0fa3922337708149 +Block 0024 [117]: 23878fd8b3ee440a +Block 0024 [118]: e0da3fbaeb9b754f +Block 0024 [119]: 4c5845d295c8e130 +Block 0024 [120]: f9842cfb0519a77a +Block 0024 [121]: e78c8fc24df07468 +Block 0024 [122]: 22001bb20a856f72 +Block 0024 [123]: 21531c03ff79630c +Block 0024 [124]: e7c926c13079eb3d +Block 0024 [125]: 6ad556444199ea80 +Block 0024 [126]: 64da7b572b36f7ba +Block 0024 [127]: 799b25b56cf24c84 +Block 0025 [ 0]: a8ef4430ce39f78a +Block 0025 [ 1]: 6fa7bb074ca2d4c7 +Block 0025 [ 2]: c4328dc4903e2627 +Block 0025 [ 3]: 847f8a36c562ff2e +Block 0025 [ 4]: 8913562d5c4b41e0 +Block 0025 [ 5]: 1b8e8af880881f23 +Block 0025 [ 6]: e91da3d1a6f519eb +Block 0025 [ 7]: 8fae99cad26c52ed +Block 0025 [ 8]: afda62e3aabf1e6c +Block 0025 [ 9]: e7cfd7eb417b3c8b +Block 0025 [ 10]: ecc1f7be89deb6d3 +Block 0025 [ 11]: b9052fd2dee04394 +Block 0025 [ 12]: 097fc19d990754ba +Block 0025 [ 13]: 536dd6266bf8815d +Block 0025 [ 14]: 747d495d55abc42f +Block 0025 [ 15]: a2e5f741c0b61771 +Block 0025 [ 16]: b80db43d2e40ae7c +Block 0025 [ 17]: 17305d07336bd733 +Block 0025 [ 18]: 6b529470ae8322fa +Block 0025 [ 19]: 0499d8272f0b85df +Block 0025 [ 20]: 19d9e45c2cb59cb9 +Block 0025 [ 21]: 4bf3107858c7e5b4 +Block 0025 [ 22]: ae33fde859a9b807 +Block 0025 [ 23]: 1c2dc7ecfb7ac28e +Block 0025 [ 24]: f21b5a8f3d7a3939 +Block 0025 [ 25]: 4a4bf57af3ce07cc +Block 0025 [ 26]: 95095f2c45d29962 +Block 0025 [ 27]: eee227d0f71de589 +Block 0025 [ 28]: 4ed1dc11850b66f1 +Block 0025 [ 29]: 3b8e9ddf6115245e +Block 0025 [ 30]: 1cbce81b5582ce8b +Block 0025 [ 31]: c30c4b8efdac0046 +Block 0025 [ 32]: 340982707f9dff0d +Block 0025 [ 33]: d15a167fe9ce9b08 +Block 0025 [ 34]: bd66426cae072cff +Block 0025 [ 35]: 11045f18ef7e373e +Block 0025 [ 36]: a1c1d0dcb20dfb02 +Block 0025 [ 37]: bb2af69b82d672b0 +Block 0025 [ 38]: e9d38c0d0bb65923 +Block 0025 [ 39]: 74d87059aaeb21f5 +Block 0025 [ 40]: 46089bb77c69d9e0 +Block 0025 [ 41]: af2dc5813fc7be50 +Block 0025 [ 42]: b505c464526df042 +Block 0025 [ 43]: 5ebc52a55f0715b3 +Block 0025 [ 44]: e63b00f5cc681706 +Block 0025 [ 45]: 41200c17d4c5265b +Block 0025 [ 46]: 0571bb4eca0aa328 +Block 0025 [ 47]: d2c5967dee2efc65 +Block 0025 [ 48]: 386bf2ba93237452 +Block 0025 [ 49]: d9b495ea3d71c7ed +Block 0025 [ 50]: 6e9bcaac915ff914 +Block 0025 [ 51]: 61dcf57024b361e2 +Block 0025 [ 52]: dd1e6418cdfc55a1 +Block 0025 [ 53]: 89d6563948e8028a +Block 0025 [ 54]: 673410cb2802bb3c +Block 0025 [ 55]: fd72e7854b71fd95 +Block 0025 [ 56]: 9a62e33b6f8a2a6a +Block 0025 [ 57]: ea483d20be77a4d8 +Block 0025 [ 58]: beda36420dfed7d0 +Block 0025 [ 59]: ef739e227fdf5046 +Block 0025 [ 60]: 5f2ebac6da228070 +Block 0025 [ 61]: 1bd1dffbf8beeb5c +Block 0025 [ 62]: 2f82cba84b8c0705 +Block 0025 [ 63]: f0957223c4607115 +Block 0025 [ 64]: 9f205d55d2aa9dd4 +Block 0025 [ 65]: b35017d46c64b5ec +Block 0025 [ 66]: d1ebf1a5e25de936 +Block 0025 [ 67]: d9c3c72742de426f +Block 0025 [ 68]: 9a77f8612a8a9f7a +Block 0025 [ 69]: 22bbf7b831db85c3 +Block 0025 [ 70]: 915062521a86f132 +Block 0025 [ 71]: 66c1475a3005072a +Block 0025 [ 72]: 00876915bef9f5e8 +Block 0025 [ 73]: 49ec0d879061e52d +Block 0025 [ 74]: f1a9210a92a1ccf9 +Block 0025 [ 75]: a7a3aabec9a4c3fa +Block 0025 [ 76]: e5e1c5b6d2c89a59 +Block 0025 [ 77]: ecc3fffe9377b75c +Block 0025 [ 78]: e15d4dd0f77cae1a +Block 0025 [ 79]: 3ef1b0c90ea4140b +Block 0025 [ 80]: e7a1376406821cee +Block 0025 [ 81]: 3b9144b3a581e276 +Block 0025 [ 82]: cd78379531214835 +Block 0025 [ 83]: 18d8e611f3f4ca46 +Block 0025 [ 84]: efd481c945c81d76 +Block 0025 [ 85]: a0bec8b6bb02a64d +Block 0025 [ 86]: 8ed05673c1118581 +Block 0025 [ 87]: 24f2beac33e9b6f8 +Block 0025 [ 88]: 5b2869a7bbdea0b8 +Block 0025 [ 89]: 5691e816f20c7ff0 +Block 0025 [ 90]: 09b8f7c1c58bf06c +Block 0025 [ 91]: c22a0bebc36d1fe9 +Block 0025 [ 92]: 4a0f9fc41555f088 +Block 0025 [ 93]: e3a799377e1b4777 +Block 0025 [ 94]: 6c3968386d5bce8c +Block 0025 [ 95]: 5ff3108fab500908 +Block 0025 [ 96]: da7854699b50de6c +Block 0025 [ 97]: 0295929d4ff59ac2 +Block 0025 [ 98]: d7b85abf5f2f4db9 +Block 0025 [ 99]: f2f75a4a63347bc5 +Block 0025 [100]: 6644ecc4740d59e5 +Block 0025 [101]: 0700c3f8b34de41f +Block 0025 [102]: af122995d2173d4d +Block 0025 [103]: cabc6eea684c9dbf +Block 0025 [104]: 20fd25dcd332dac2 +Block 0025 [105]: a9a2c7f99cf8cab9 +Block 0025 [106]: 864c959115f406cf +Block 0025 [107]: bf96bf5323e7e5b0 +Block 0025 [108]: 01cd62dc9bb2b117 +Block 0025 [109]: ec0ddf4f05b7fe6f +Block 0025 [110]: 680b3f5dcd452651 +Block 0025 [111]: 1faa09f3557444f3 +Block 0025 [112]: 98ec5e21f49b8e57 +Block 0025 [113]: daf8ee24b8828f71 +Block 0025 [114]: 91d33ed62cd107f8 +Block 0025 [115]: 89413d1bca853d5f +Block 0025 [116]: 7fe807f969f415da +Block 0025 [117]: 67ff5407c0860624 +Block 0025 [118]: 603854576ed4f781 +Block 0025 [119]: 084738ed1f18ed62 +Block 0025 [120]: 4cdb0fae06091770 +Block 0025 [121]: b13f8bc9797ddfeb +Block 0025 [122]: 648ad341f0dca94e +Block 0025 [123]: 025348dce7ae008f +Block 0025 [124]: 048e0a463a7b8a32 +Block 0025 [125]: e1b2eeac660e780d +Block 0025 [126]: 29bac16444505a88 +Block 0025 [127]: 9cad798306f54409 +Block 0026 [ 0]: a67f2049ad6c8451 +Block 0026 [ 1]: 6e6ca1cdc41485a8 +Block 0026 [ 2]: f2ffabecd30ed9d4 +Block 0026 [ 3]: 2263bf9f96df54e5 +Block 0026 [ 4]: 5386c833d7affc6a +Block 0026 [ 5]: 9f2819f0b7f5da6b +Block 0026 [ 6]: 65221d900ac47a45 +Block 0026 [ 7]: c7a3388a192158c1 +Block 0026 [ 8]: ce3be92338e06123 +Block 0026 [ 9]: 9bc7d6a02266ff38 +Block 0026 [ 10]: a824f917c04f5b96 +Block 0026 [ 11]: ec600cae3f2419f8 +Block 0026 [ 12]: 5785857a85f7e6be +Block 0026 [ 13]: 2e6cf6e1adede0fb +Block 0026 [ 14]: 16947d46c61d02ec +Block 0026 [ 15]: ffb48b54c6461849 +Block 0026 [ 16]: 4e659132540c5954 +Block 0026 [ 17]: 39cd765cee548ebe +Block 0026 [ 18]: 65e2e928a5cbd062 +Block 0026 [ 19]: 61873257661cf542 +Block 0026 [ 20]: d3aff3680f7d74b4 +Block 0026 [ 21]: dd25b1e683c70efb +Block 0026 [ 22]: 918025d8585aaee4 +Block 0026 [ 23]: 5040001fcf34ed39 +Block 0026 [ 24]: 74156aeebd1d3057 +Block 0026 [ 25]: c4eb8075341fb9d7 +Block 0026 [ 26]: d4ae888603d85575 +Block 0026 [ 27]: 824c2294af9b2e43 +Block 0026 [ 28]: d40db17dee052e79 +Block 0026 [ 29]: c353b38b05fd93aa +Block 0026 [ 30]: fedc31fea04b7b57 +Block 0026 [ 31]: 7c62e359b5b346d5 +Block 0026 [ 32]: 529de169b8a883c2 +Block 0026 [ 33]: 3baa40cee0aafec8 +Block 0026 [ 34]: 39ea5c0da6ba803d +Block 0026 [ 35]: bb3600ed674e82db +Block 0026 [ 36]: e2cf7d3add431cd5 +Block 0026 [ 37]: 9919ac737f8e7bc1 +Block 0026 [ 38]: b1d621265207cd1b +Block 0026 [ 39]: 4124e55329618316 +Block 0026 [ 40]: 61ac39e893aa0b4a +Block 0026 [ 41]: b8828b7b916fcfd7 +Block 0026 [ 42]: 7717ca4b91f592d2 +Block 0026 [ 43]: b2d649a81b6b7715 +Block 0026 [ 44]: 94032e1f27dae77f +Block 0026 [ 45]: 91fc6ccebf3f3727 +Block 0026 [ 46]: 17cc1d27fd35298d +Block 0026 [ 47]: 484c55fc986929c6 +Block 0026 [ 48]: 262a103a08656541 +Block 0026 [ 49]: 9e528fb6c569622f +Block 0026 [ 50]: 85113abbb2977739 +Block 0026 [ 51]: c45cce441cad58db +Block 0026 [ 52]: e66de3dec4f1f53a +Block 0026 [ 53]: 6fe886047cac3746 +Block 0026 [ 54]: 37b647878b1d9d70 +Block 0026 [ 55]: 840d12b0ff087ec5 +Block 0026 [ 56]: 680aa2b9b0de658b +Block 0026 [ 57]: 35bdc3fe5b7c8413 +Block 0026 [ 58]: bba849ea8dd68a2b +Block 0026 [ 59]: e50508fec44716dc +Block 0026 [ 60]: e8218181df949251 +Block 0026 [ 61]: 76e583bfa8271ce1 +Block 0026 [ 62]: 093db4a24e8cf97f +Block 0026 [ 63]: a3198d72deba4ab1 +Block 0026 [ 64]: 8e70151c79a58a09 +Block 0026 [ 65]: 30b18f4b2a4ecc94 +Block 0026 [ 66]: efa939e486237d53 +Block 0026 [ 67]: 5a99de81200bd461 +Block 0026 [ 68]: 97c93faec22773f4 +Block 0026 [ 69]: 50cd83b3d81daef6 +Block 0026 [ 70]: a57f1cbc408a1472 +Block 0026 [ 71]: 601a83fbac217aa0 +Block 0026 [ 72]: ba61684f998db8ed +Block 0026 [ 73]: abf945da6e04b78a +Block 0026 [ 74]: 3f7f6a30a912e6fc +Block 0026 [ 75]: b5806b3204395493 +Block 0026 [ 76]: 4fbc9dc04d820d79 +Block 0026 [ 77]: ac843e3617426127 +Block 0026 [ 78]: c4a23662780b450f +Block 0026 [ 79]: b3add9936ecd3efa +Block 0026 [ 80]: 0e7adbdb1e97716f +Block 0026 [ 81]: 4855a05753a3d609 +Block 0026 [ 82]: 4a79a50f60147383 +Block 0026 [ 83]: 1a7bb1d968713322 +Block 0026 [ 84]: 560185cf7cea9af8 +Block 0026 [ 85]: 8090ae23b839fa7a +Block 0026 [ 86]: f0ef32dd60b80f4a +Block 0026 [ 87]: 75666acf1191bfac +Block 0026 [ 88]: 89122f4a6be676ed +Block 0026 [ 89]: 51c9082f91e7c815 +Block 0026 [ 90]: f57321fbf06bb01b +Block 0026 [ 91]: bf6b35695e671824 +Block 0026 [ 92]: 810270fa31267c02 +Block 0026 [ 93]: bb6d14fa78db2fd6 +Block 0026 [ 94]: 8d77c423bf297093 +Block 0026 [ 95]: f47f40b94b651b87 +Block 0026 [ 96]: ffdc7270f5ea0a0a +Block 0026 [ 97]: 110c0bed7cf02935 +Block 0026 [ 98]: 6e72a6f7e64ec1ff +Block 0026 [ 99]: 510f409d179fc3eb +Block 0026 [100]: b131bf1bf65cce12 +Block 0026 [101]: bb21fb13b27c3bd5 +Block 0026 [102]: 41148e2468bc2ea4 +Block 0026 [103]: bec352301ce4ce35 +Block 0026 [104]: d1d6655ab3dc54d1 +Block 0026 [105]: 03ebde5d7509564a +Block 0026 [106]: 8736b53e50d9254e +Block 0026 [107]: eef07ba85662fac2 +Block 0026 [108]: 866367405df3c14e +Block 0026 [109]: f4c6921e10ae40d1 +Block 0026 [110]: f84d745575f4a722 +Block 0026 [111]: 6139c48c50a9dc75 +Block 0026 [112]: 0034350a8573a8a8 +Block 0026 [113]: bd742a2290d519ad +Block 0026 [114]: 8fbf243347c92440 +Block 0026 [115]: cb51c42b54feeb1d +Block 0026 [116]: 360d009cf96e8411 +Block 0026 [117]: 4f4c61ebd49df995 +Block 0026 [118]: 0df6e047c17cb02d +Block 0026 [119]: 1875132489e84ff8 +Block 0026 [120]: 9db14fbd90640f6c +Block 0026 [121]: 4205a87bd2e27264 +Block 0026 [122]: 97da6c37e0d0f086 +Block 0026 [123]: a40bb2955b338f38 +Block 0026 [124]: ac3b50aa28c42530 +Block 0026 [125]: fc3b33ed20b81ce7 +Block 0026 [126]: 0915c6d398e25625 +Block 0026 [127]: 2e2c95a63d272437 +Block 0027 [ 0]: a94b04457a7eea5b +Block 0027 [ 1]: 3b934d4b2c4b05c1 +Block 0027 [ 2]: d36de4f08ea8241f +Block 0027 [ 3]: d8c5da183e55c800 +Block 0027 [ 4]: 798d0be96ebe4eb0 +Block 0027 [ 5]: 95b7010a3bc7d10f +Block 0027 [ 6]: 429979b7a221f329 +Block 0027 [ 7]: 2acf807b7fe97dad +Block 0027 [ 8]: a7b7429c53e9c732 +Block 0027 [ 9]: 207b679886cf1607 +Block 0027 [ 10]: 35d80c2f1ecbc709 +Block 0027 [ 11]: 7a6743313b489e3e +Block 0027 [ 12]: 450bca7213e37f0d +Block 0027 [ 13]: d204c3e3ca441327 +Block 0027 [ 14]: f0adec4a62fa0918 +Block 0027 [ 15]: 918063531c8dbfa3 +Block 0027 [ 16]: 6e3a5609838a4ba7 +Block 0027 [ 17]: 84b10132be6f1f21 +Block 0027 [ 18]: 1d7a65cf768de949 +Block 0027 [ 19]: 555bc5f7c86496e3 +Block 0027 [ 20]: b49806057b337c6a +Block 0027 [ 21]: 7568eeaada8f8866 +Block 0027 [ 22]: 2717ed3bc8dde632 +Block 0027 [ 23]: 0b277febfd999965 +Block 0027 [ 24]: 12c2942997f2b48b +Block 0027 [ 25]: bcc4355219c0f24d +Block 0027 [ 26]: e7be1d8cb552523b +Block 0027 [ 27]: 9175509980ac3f08 +Block 0027 [ 28]: 6e1453b6da39bbbb +Block 0027 [ 29]: a37b17231c4f1320 +Block 0027 [ 30]: a0a27e1f5bbb568b +Block 0027 [ 31]: da16ebc183e301a8 +Block 0027 [ 32]: b3c5c67da682c941 +Block 0027 [ 33]: 37dcdbd103c514d6 +Block 0027 [ 34]: 16ff2d29bfc64bfa +Block 0027 [ 35]: 4096c799e802154c +Block 0027 [ 36]: 59904ba66cc60d64 +Block 0027 [ 37]: 15a424885273edb0 +Block 0027 [ 38]: 1c3234b12ca31ca9 +Block 0027 [ 39]: bd6504e7e8cb0543 +Block 0027 [ 40]: 97d013f5f12883d6 +Block 0027 [ 41]: 206948310527b357 +Block 0027 [ 42]: aa674b50be674618 +Block 0027 [ 43]: f0a5f596fc0e3232 +Block 0027 [ 44]: 920409279bc2fc9c +Block 0027 [ 45]: 2ccf474d09d9aa0e +Block 0027 [ 46]: 6a8c7bdb7eb64efb +Block 0027 [ 47]: a756b71f41c37f8b +Block 0027 [ 48]: a5117f53be324b6b +Block 0027 [ 49]: 4171a67afcd26d32 +Block 0027 [ 50]: 21a3a9aaad777353 +Block 0027 [ 51]: 3755a858ffa57c1d +Block 0027 [ 52]: afc42a6207e4b2dd +Block 0027 [ 53]: aff8522b5f5d74a5 +Block 0027 [ 54]: ba69a2ef4f409d0d +Block 0027 [ 55]: b2b0b92ab9f12a08 +Block 0027 [ 56]: 21eb93c595416b78 +Block 0027 [ 57]: a3432a64639e980e +Block 0027 [ 58]: 8aa4d52c1d5aab1c +Block 0027 [ 59]: aab10fb875b1e745 +Block 0027 [ 60]: 187b116769a3ec3f +Block 0027 [ 61]: bdc6ce91397361cb +Block 0027 [ 62]: 2af6bcc7c50e4dd6 +Block 0027 [ 63]: baa220accd7571f4 +Block 0027 [ 64]: 67bf2a70cfa75599 +Block 0027 [ 65]: 12c82e4f98bf4d0b +Block 0027 [ 66]: af71e967c1cc8df4 +Block 0027 [ 67]: f4206f65d9b7c473 +Block 0027 [ 68]: 8bc2092c48b31cde +Block 0027 [ 69]: e65ddd646bb2c19d +Block 0027 [ 70]: 50103a958fb49166 +Block 0027 [ 71]: 83b31b086cae24e6 +Block 0027 [ 72]: 5473c5ef931bfc84 +Block 0027 [ 73]: 1792f55944917f79 +Block 0027 [ 74]: b29afd1445e3f3da +Block 0027 [ 75]: 71e5ed744d9305d0 +Block 0027 [ 76]: 531d8b48dac7c1b5 +Block 0027 [ 77]: 6182e94a6d8e8c99 +Block 0027 [ 78]: 8ec7ccbcf3425332 +Block 0027 [ 79]: 8a8b0b42cdb32c0b +Block 0027 [ 80]: c954b01ae022a01b +Block 0027 [ 81]: ebb1bcd82007bb85 +Block 0027 [ 82]: 73258bca7db6c40b +Block 0027 [ 83]: 0e9b383bc02dc5fb +Block 0027 [ 84]: 9e59c6692cfec4c1 +Block 0027 [ 85]: e290fea01fd49775 +Block 0027 [ 86]: 923e9787df7984d7 +Block 0027 [ 87]: d1ea99210d949bc6 +Block 0027 [ 88]: 2c50effbf9b56f5e +Block 0027 [ 89]: 6e587a90ffdd68e1 +Block 0027 [ 90]: 87343959fce072eb +Block 0027 [ 91]: 11f3166951d1ca97 +Block 0027 [ 92]: 77c0e15bce984be2 +Block 0027 [ 93]: 1bc4e230071347d9 +Block 0027 [ 94]: 02c821b44f0e8ff5 +Block 0027 [ 95]: 332b6548f6127d3b +Block 0027 [ 96]: f4385541e6afbce1 +Block 0027 [ 97]: f72f5977b5c5c6ed +Block 0027 [ 98]: 2932386da331a141 +Block 0027 [ 99]: 8bef50405d899e47 +Block 0027 [100]: 497f6baa584fa6f9 +Block 0027 [101]: 540629cf431edb97 +Block 0027 [102]: 86c980507916f687 +Block 0027 [103]: 74449f7ba5e33318 +Block 0027 [104]: 8f97362cd57e0c7e +Block 0027 [105]: a960d461bb2d1840 +Block 0027 [106]: 9f4b252316d9eb51 +Block 0027 [107]: 7c3623df2d051b80 +Block 0027 [108]: 195db846daca6692 +Block 0027 [109]: 54d546f2b2f6d64f +Block 0027 [110]: 5a59d33f102ea788 +Block 0027 [111]: 8464766e62720d0f +Block 0027 [112]: 13ca8b80ec64e90a +Block 0027 [113]: 6d0463cb48d4c035 +Block 0027 [114]: 7341120a83334b45 +Block 0027 [115]: 3124dd6543338087 +Block 0027 [116]: e5b444665d7e7853 +Block 0027 [117]: 7ff3f1e5c61bc6f7 +Block 0027 [118]: 139e7af02f838f97 +Block 0027 [119]: 11c5d0670f45901f +Block 0027 [120]: 0438e6b6dcc28c34 +Block 0027 [121]: 3d55b635792ea59a +Block 0027 [122]: 9c2161a0ae2eaa67 +Block 0027 [123]: 27b1456aa822bfdd +Block 0027 [124]: 235c3e9fc5839c4d +Block 0027 [125]: 4994a10b355fc603 +Block 0027 [126]: 9dab69bbda9885dc +Block 0027 [127]: 85868e2f304840ac +Block 0028 [ 0]: ff442bbaec0ee8f2 +Block 0028 [ 1]: 397f0ac19369cbb3 +Block 0028 [ 2]: 5dd4e0f3c854a4c2 +Block 0028 [ 3]: c0e9fb62003e329a +Block 0028 [ 4]: 3966e8fa89276742 +Block 0028 [ 5]: 1dfaa18a331d0a14 +Block 0028 [ 6]: e60263a328c6b785 +Block 0028 [ 7]: 0ccde2de16d1e234 +Block 0028 [ 8]: fa1212c9101ac939 +Block 0028 [ 9]: d312a0ca719acb8f +Block 0028 [ 10]: d505268bcce72092 +Block 0028 [ 11]: bef86b8938654712 +Block 0028 [ 12]: f9390b6b536a6e28 +Block 0028 [ 13]: 73203397a11a9ddd +Block 0028 [ 14]: 10714c45564394d8 +Block 0028 [ 15]: c48a3f6f54b5c280 +Block 0028 [ 16]: 9bf38e51f6bb8d8b +Block 0028 [ 17]: 40b6c835892e9da5 +Block 0028 [ 18]: 40a35a05db774cf5 +Block 0028 [ 19]: f583ac8c5f9a8da0 +Block 0028 [ 20]: 210fbd1e5f784271 +Block 0028 [ 21]: 281c7be77ab1715a +Block 0028 [ 22]: 4ecdc7b648a5f4a5 +Block 0028 [ 23]: 3ac0587b9fa149f2 +Block 0028 [ 24]: a83fd6762492a590 +Block 0028 [ 25]: 46276e3adefa023e +Block 0028 [ 26]: 3062f71a0b5b4db5 +Block 0028 [ 27]: 84677cc6dbdd3349 +Block 0028 [ 28]: 6a0193f318f262c2 +Block 0028 [ 29]: 85d971f7bd2ec8cd +Block 0028 [ 30]: 5e68bdf696e1caa5 +Block 0028 [ 31]: ab98223d0341c285 +Block 0028 [ 32]: cc1f28d587841e1d +Block 0028 [ 33]: 4ae6c7d78d556bbb +Block 0028 [ 34]: 1545d67077aaa97d +Block 0028 [ 35]: 6d57554ad0404144 +Block 0028 [ 36]: 3ffd7708b53f09ca +Block 0028 [ 37]: 752ac75ed9699a94 +Block 0028 [ 38]: 2b6f9e2bddd506a5 +Block 0028 [ 39]: 2e321132e9ee175e +Block 0028 [ 40]: 47e2496c8a2d1acb +Block 0028 [ 41]: 131f351bbb209db8 +Block 0028 [ 42]: bf2711d86386f027 +Block 0028 [ 43]: d9ab2f3fc427bd6c +Block 0028 [ 44]: 7395c8a0ec3bb0bf +Block 0028 [ 45]: 9b19f55f5a1d9d0b +Block 0028 [ 46]: 4c4e28b31fe9efb7 +Block 0028 [ 47]: 766aaaf6d8e58ccf +Block 0028 [ 48]: 93d602cc6df95547 +Block 0028 [ 49]: 7e7e2d6242c92532 +Block 0028 [ 50]: 2c7aa2e34ee337aa +Block 0028 [ 51]: 191e910507ff58b6 +Block 0028 [ 52]: acca633ff55014da +Block 0028 [ 53]: 616a8c612b51f84e +Block 0028 [ 54]: d99ac9561c46bb1e +Block 0028 [ 55]: afa50925b3566378 +Block 0028 [ 56]: ff89aecada6379ef +Block 0028 [ 57]: 391c1fb4b920d1c7 +Block 0028 [ 58]: 8747bfa2ff324d12 +Block 0028 [ 59]: 5d94c03b2f8cdec8 +Block 0028 [ 60]: 770a3a05a35e362a +Block 0028 [ 61]: 6cb772bc4ec41ab1 +Block 0028 [ 62]: 0f2fdc055326e8ff +Block 0028 [ 63]: 3a3b11af14ab1e63 +Block 0028 [ 64]: 129d79776bd33219 +Block 0028 [ 65]: b0506f0d0c919e36 +Block 0028 [ 66]: e7bd117a660adeb6 +Block 0028 [ 67]: d52239a183fb01aa +Block 0028 [ 68]: 95ac54ca7f4f6bc8 +Block 0028 [ 69]: 5939379f77d8b3ac +Block 0028 [ 70]: 9bb720708cf0f6d7 +Block 0028 [ 71]: 7f1d34ae76d402b3 +Block 0028 [ 72]: 6131f850ff18bade +Block 0028 [ 73]: 913ca32a0b48d34c +Block 0028 [ 74]: f34c46ff0482e064 +Block 0028 [ 75]: f155996fe258d6e3 +Block 0028 [ 76]: a49b7f75efc8d9e2 +Block 0028 [ 77]: 7e9214452d5ee55a +Block 0028 [ 78]: 4d85e8f92b2a44d5 +Block 0028 [ 79]: c67caf477cc36edd +Block 0028 [ 80]: 1a6567ad2f3daf1a +Block 0028 [ 81]: d77d2ca3f37ceebb +Block 0028 [ 82]: 6288ae549a89055b +Block 0028 [ 83]: 4a312a353b646a62 +Block 0028 [ 84]: cd5a4b9c1d058e51 +Block 0028 [ 85]: fba7578feeb5a716 +Block 0028 [ 86]: b088c6cf681457e5 +Block 0028 [ 87]: 0077380f016bda71 +Block 0028 [ 88]: 8020ddaf0bcebea8 +Block 0028 [ 89]: 9a2b154741d54daa +Block 0028 [ 90]: 1afaa7054fbe8d96 +Block 0028 [ 91]: 369d42bdf4fa66a3 +Block 0028 [ 92]: 65015d7c318f5744 +Block 0028 [ 93]: f05df78b62c00b95 +Block 0028 [ 94]: dc35b5addb87f3df +Block 0028 [ 95]: 71200e2738215b49 +Block 0028 [ 96]: 516f9ee82c4bffe0 +Block 0028 [ 97]: 786d6486ac6b32de +Block 0028 [ 98]: 3fb790dcf1083d03 +Block 0028 [ 99]: bc1d23cf4407874a +Block 0028 [100]: 5c571426ac41afe6 +Block 0028 [101]: fc65a8a0efe11ef7 +Block 0028 [102]: 3fbe1cd81cb6a3ff +Block 0028 [103]: 8ced051324b69348 +Block 0028 [104]: c30adc965eb97c7f +Block 0028 [105]: 95833707bd2b9d35 +Block 0028 [106]: ec607ffa194d628d +Block 0028 [107]: 82d8039297f79a59 +Block 0028 [108]: 9be590f65f2bfe7e +Block 0028 [109]: 6ea8bc541ef1a809 +Block 0028 [110]: 468e8a5028e309ea +Block 0028 [111]: 066d539b5cb3fc45 +Block 0028 [112]: b122605c2994f6a4 +Block 0028 [113]: e0b0a4293d357abe +Block 0028 [114]: c298743cb1546c15 +Block 0028 [115]: d12112a3bbba462e +Block 0028 [116]: 25f23407d14bf00b +Block 0028 [117]: fffa4e098bd9fca5 +Block 0028 [118]: 536c67c6b18b611a +Block 0028 [119]: dd4446f13b0cdefe +Block 0028 [120]: c35483e17e62402c +Block 0028 [121]: 2b376940537bd1f1 +Block 0028 [122]: 79f526535649257d +Block 0028 [123]: 07fab5dcdf990636 +Block 0028 [124]: d7cd70af1e091a6f +Block 0028 [125]: 1ce601ca8e8f6ff3 +Block 0028 [126]: 38660d0a553e5df2 +Block 0028 [127]: b785a3accdab6680 +Block 0029 [ 0]: 8faf4b0ab37bb4cd +Block 0029 [ 1]: 3d1c1f7d3ae8182f +Block 0029 [ 2]: df466b571761c0c9 +Block 0029 [ 3]: 2d07bc62e41c89d7 +Block 0029 [ 4]: a09dd4ea9e230e19 +Block 0029 [ 5]: 809522a586d0c419 +Block 0029 [ 6]: e680b196e8046fc5 +Block 0029 [ 7]: eaa13b4649e0c0cb +Block 0029 [ 8]: 2d3d06aa5b8edb28 +Block 0029 [ 9]: 7865ed89e33159be +Block 0029 [ 10]: 485224fbeea22d0f +Block 0029 [ 11]: a65a5f6540b240ca +Block 0029 [ 12]: 348125cd96e1f785 +Block 0029 [ 13]: aeeb91f724f6ec50 +Block 0029 [ 14]: 3f90ece311348fb9 +Block 0029 [ 15]: 0e46859f10cd1b23 +Block 0029 [ 16]: 3d8b6edd19045b53 +Block 0029 [ 17]: b6031066c4cba9da +Block 0029 [ 18]: 0dc8d49a7a957e8a +Block 0029 [ 19]: 6d1d8f8bbd92de25 +Block 0029 [ 20]: 853872816754a44d +Block 0029 [ 21]: d53c1cd854971f4d +Block 0029 [ 22]: d966f16ded474f1b +Block 0029 [ 23]: 45ce0b544d3e9b88 +Block 0029 [ 24]: 4c3a7aa58d405831 +Block 0029 [ 25]: 7e63d3e7065f17ae +Block 0029 [ 26]: 93372f660d53d0a7 +Block 0029 [ 27]: 4800a50d86bbe06d +Block 0029 [ 28]: 966a7de30936c0cc +Block 0029 [ 29]: 089a6729adb5db54 +Block 0029 [ 30]: 21f00018ba694b98 +Block 0029 [ 31]: c5c5612e86e9b676 +Block 0029 [ 32]: 30fda4daea44cdf0 +Block 0029 [ 33]: 884216b9e14f830f +Block 0029 [ 34]: f24d8260cb07fd49 +Block 0029 [ 35]: 0cc3a891ed3fd8ea +Block 0029 [ 36]: e02856a4a91db08f +Block 0029 [ 37]: ae2c54f2ccf5dc1b +Block 0029 [ 38]: 9e7ef199c3e37221 +Block 0029 [ 39]: e1cb74d4be169e03 +Block 0029 [ 40]: 51110481733e33eb +Block 0029 [ 41]: 64b33cc98342c30a +Block 0029 [ 42]: 50f64610177d09f6 +Block 0029 [ 43]: 49012867e90a48a3 +Block 0029 [ 44]: 55ea2c40bb9c7f20 +Block 0029 [ 45]: fa784ee9cbfb8d9f +Block 0029 [ 46]: bb1e86d607452f97 +Block 0029 [ 47]: da191adeae7a36c9 +Block 0029 [ 48]: c1f8675f0c312429 +Block 0029 [ 49]: 3b7517f906d8f8f3 +Block 0029 [ 50]: 71f698893dd93e57 +Block 0029 [ 51]: 239bab7f2539d70f +Block 0029 [ 52]: 3dbe941ce0653527 +Block 0029 [ 53]: 29938a8b81850f5c +Block 0029 [ 54]: bfb1c6cf4fce7c51 +Block 0029 [ 55]: b706d0ee9f81ad1e +Block 0029 [ 56]: 7d017ae67cc847d1 +Block 0029 [ 57]: 552b93624984511c +Block 0029 [ 58]: 867243a9d6d82053 +Block 0029 [ 59]: 456c49a67ef9036f +Block 0029 [ 60]: 0f6f4ca58cb23d3f +Block 0029 [ 61]: bd24cf3c5418ca87 +Block 0029 [ 62]: 7be8c1d1dc24f928 +Block 0029 [ 63]: 0ca043330b7e539e +Block 0029 [ 64]: b3ba1f6453f7bcd5 +Block 0029 [ 65]: ca549545a3d2ec8e +Block 0029 [ 66]: fcadea90e41cc1b8 +Block 0029 [ 67]: 602c84cfa6b20f66 +Block 0029 [ 68]: 5cdfbc4ae7c2c6b1 +Block 0029 [ 69]: 31f589f75d3749ef +Block 0029 [ 70]: 3e6e3d004ad60714 +Block 0029 [ 71]: 2dae53f27b8158ef +Block 0029 [ 72]: fd1e3b5a70d52eae +Block 0029 [ 73]: 6371016489f99170 +Block 0029 [ 74]: a6b8c488806d37c6 +Block 0029 [ 75]: 8831329cde00a7a7 +Block 0029 [ 76]: b36df29447c12794 +Block 0029 [ 77]: 852a80858f9d101f +Block 0029 [ 78]: 3c84dcfdecd46fff +Block 0029 [ 79]: 5b7dac0a8ffdd58a +Block 0029 [ 80]: d9dbe926eeb4fa23 +Block 0029 [ 81]: 7e6830e42b1ecaf0 +Block 0029 [ 82]: b40dbaa69df1e15b +Block 0029 [ 83]: 7f7d8f4fb9120fda +Block 0029 [ 84]: 26ed970120722676 +Block 0029 [ 85]: b4ec448d3b153327 +Block 0029 [ 86]: 75a0b7d6ceffa3d4 +Block 0029 [ 87]: efe467bc3841c69e +Block 0029 [ 88]: c0d4ffcf904aaa7e +Block 0029 [ 89]: e6bcb7717fc24d72 +Block 0029 [ 90]: ca0ebcf7b8f9fa08 +Block 0029 [ 91]: b082f39ade7a1219 +Block 0029 [ 92]: e23169e8f33a0b67 +Block 0029 [ 93]: b17ac3ff204b5cce +Block 0029 [ 94]: f4d05e9fa168d522 +Block 0029 [ 95]: b88db25f2938a3ab +Block 0029 [ 96]: 9c8ad5c2a2fecb89 +Block 0029 [ 97]: b642e3e932b49b6e +Block 0029 [ 98]: d52639e55f40db15 +Block 0029 [ 99]: ca80042bf923e26a +Block 0029 [100]: a451014b26a16f1e +Block 0029 [101]: 43dcc2aacc9c99da +Block 0029 [102]: d5496dfeb81f585b +Block 0029 [103]: d402ccce0025ff31 +Block 0029 [104]: b5dbb5516ddad03e +Block 0029 [105]: 27e1f84c7fd2e9a0 +Block 0029 [106]: 628bd072e84442c5 +Block 0029 [107]: b1b9154a8224f4be +Block 0029 [108]: 6bfdae5812e1c6f8 +Block 0029 [109]: 2fcae504e8132505 +Block 0029 [110]: 756911bf961d510e +Block 0029 [111]: 13e9e2d50966b88a +Block 0029 [112]: e6f6e771ba4662a5 +Block 0029 [113]: 869c3193f5686117 +Block 0029 [114]: 71e2fe403f536bf0 +Block 0029 [115]: 2c24c13eeafd203b +Block 0029 [116]: bc359aa26301f725 +Block 0029 [117]: 9a24bbad0f96c694 +Block 0029 [118]: ae363466f27f1397 +Block 0029 [119]: c835914f46bb961c +Block 0029 [120]: a32ebda4688b2687 +Block 0029 [121]: 6def7ad00976a80d +Block 0029 [122]: ec5057a1e29664ed +Block 0029 [123]: cb565f55f678f418 +Block 0029 [124]: 5908463419437b6d +Block 0029 [125]: 3f809409ee15556e +Block 0029 [126]: 6d2dbca4380dc585 +Block 0029 [127]: d08c46fc3a6806db +Block 0030 [ 0]: 2673e74f55281e8d +Block 0030 [ 1]: 6fe90eb7457da8ae +Block 0030 [ 2]: 540e4b56d72a5f0b +Block 0030 [ 3]: b7a76d0edc47aeea +Block 0030 [ 4]: 024292cf39046e35 +Block 0030 [ 5]: 30f439895732b133 +Block 0030 [ 6]: e61425415048bb34 +Block 0030 [ 7]: 609d4114a8c13fb7 +Block 0030 [ 8]: acafdbf6dfc05f2e +Block 0030 [ 9]: 1a2ae59a9c37f819 +Block 0030 [ 10]: c15aca088d429d16 +Block 0030 [ 11]: be74600a4a873ed0 +Block 0030 [ 12]: efd585ebe4080021 +Block 0030 [ 13]: b97042c53760080e +Block 0030 [ 14]: 74752a5c6626fbdf +Block 0030 [ 15]: 8dd34e1e8ac34303 +Block 0030 [ 16]: 6028d90d9c077f4b +Block 0030 [ 17]: 9fb5e7dda12ca4c4 +Block 0030 [ 18]: 2deecea6e979e693 +Block 0030 [ 19]: 54137a747abb3e6e +Block 0030 [ 20]: 8525896cc37fefc9 +Block 0030 [ 21]: 22819e91948ebe28 +Block 0030 [ 22]: 0c84b4ca88859926 +Block 0030 [ 23]: 7b1873fb531b24ae +Block 0030 [ 24]: a31ebd1169530f49 +Block 0030 [ 25]: 7cfe17083df06b3f +Block 0030 [ 26]: fb57eaec825a6b16 +Block 0030 [ 27]: 790885f4e350d418 +Block 0030 [ 28]: 7c9f69ffc0968483 +Block 0030 [ 29]: c27370a8319f0158 +Block 0030 [ 30]: 5a3f9b209a6e9c3c +Block 0030 [ 31]: 0de0b424b3927314 +Block 0030 [ 32]: 54398b47ec9fe8d3 +Block 0030 [ 33]: 103736f4a647d8fb +Block 0030 [ 34]: 2404fa93a1700ff0 +Block 0030 [ 35]: c57374a224da2b3c +Block 0030 [ 36]: e5cf61193ed5de57 +Block 0030 [ 37]: 5ab77e854c810cb9 +Block 0030 [ 38]: d8311483179c4a3c +Block 0030 [ 39]: 1a20963c1b6c2597 +Block 0030 [ 40]: faa542e8b73255b7 +Block 0030 [ 41]: 848f2ca099a33368 +Block 0030 [ 42]: 5510cd734cb3bc9f +Block 0030 [ 43]: 4a929bf87c2820c4 +Block 0030 [ 44]: 681ae77edf7bf1de +Block 0030 [ 45]: 6fae639ea38d29a2 +Block 0030 [ 46]: 616bacb8339d0cf7 +Block 0030 [ 47]: dbcb34373a210bed +Block 0030 [ 48]: 8032a3c8da22217f +Block 0030 [ 49]: 30701adaded4ce5b +Block 0030 [ 50]: a30850d70ad550db +Block 0030 [ 51]: cf3b45972d568ef6 +Block 0030 [ 52]: 78c85c49a224b205 +Block 0030 [ 53]: 5bc633598ccfbde3 +Block 0030 [ 54]: de6b2f772f1a0234 +Block 0030 [ 55]: 201b55b767e9b86b +Block 0030 [ 56]: 823a989a1765c637 +Block 0030 [ 57]: 2579a1ed7cd1e2ad +Block 0030 [ 58]: 03bfc58ff6722fb1 +Block 0030 [ 59]: a503f8fa679b0ad4 +Block 0030 [ 60]: 1b57b1af8e2f45a4 +Block 0030 [ 61]: 57fc7f7bcac0cacf +Block 0030 [ 62]: 7d1affd4927b5b9f +Block 0030 [ 63]: 901f27aaaf0b1abe +Block 0030 [ 64]: 5d8dcf10f365ec31 +Block 0030 [ 65]: 882189aefb46d03a +Block 0030 [ 66]: 2fe1601dbac7830f +Block 0030 [ 67]: 98b84984fd00714c +Block 0030 [ 68]: ae6d2f6efec14c11 +Block 0030 [ 69]: c9152a3abe0d1be6 +Block 0030 [ 70]: 77b7885fefb60ee8 +Block 0030 [ 71]: d3c839e65271a2fd +Block 0030 [ 72]: 295928eb632c919a +Block 0030 [ 73]: 28b2e3a4380ff380 +Block 0030 [ 74]: 979270a7e813d4ba +Block 0030 [ 75]: d9c31f525b9c8fe9 +Block 0030 [ 76]: c0d9d5975ad775b7 +Block 0030 [ 77]: 4bd3e7e7e29840b7 +Block 0030 [ 78]: e3bc3d0cfb465fd0 +Block 0030 [ 79]: 357557042ae99c1e +Block 0030 [ 80]: fbf15a3094fd1f91 +Block 0030 [ 81]: d1309d082bff6e72 +Block 0030 [ 82]: 88bac06cb9b4c7d3 +Block 0030 [ 83]: 7ddaeea4af589570 +Block 0030 [ 84]: 97558e43d7835daf +Block 0030 [ 85]: 0f317701853adbff +Block 0030 [ 86]: 9a7c0f2797b184b7 +Block 0030 [ 87]: 7e3bfe618a2ba655 +Block 0030 [ 88]: ace633529d25fab6 +Block 0030 [ 89]: e99211ba3fa2be8c +Block 0030 [ 90]: 867f7095ef7954b2 +Block 0030 [ 91]: 0fe750442983240e +Block 0030 [ 92]: 0f5253b35adc5e65 +Block 0030 [ 93]: f30a0002010b999c +Block 0030 [ 94]: c6154cda1a9af668 +Block 0030 [ 95]: c80c8afb80ed36dc +Block 0030 [ 96]: 273c700a3c4c50ec +Block 0030 [ 97]: 05f63b79716502f5 +Block 0030 [ 98]: a73664fb04fa538e +Block 0030 [ 99]: 341d1c9dc62af038 +Block 0030 [100]: 797a07a3c99fbf9d +Block 0030 [101]: 2775348e9153e991 +Block 0030 [102]: ec3239e82e480c18 +Block 0030 [103]: 3f14bf2f3a5f1137 +Block 0030 [104]: 3f797d11b5b2fa57 +Block 0030 [105]: e619c6d404875fc1 +Block 0030 [106]: 7fd919b61ce76c11 +Block 0030 [107]: 4fb5d42ca0d8d9b4 +Block 0030 [108]: 0839522fcda3518d +Block 0030 [109]: 48bebcc9957a352a +Block 0030 [110]: d856936973f9cd43 +Block 0030 [111]: ef65350eb285905e +Block 0030 [112]: 5ca32ecda2095ead +Block 0030 [113]: 395ebd8fd16af2b0 +Block 0030 [114]: 65257cb1dce18e85 +Block 0030 [115]: ae3b5c17f308d983 +Block 0030 [116]: f6b14bfd5d90c66b +Block 0030 [117]: 828b08f8a6ee1cd6 +Block 0030 [118]: af1a44ade6f2027b +Block 0030 [119]: 4918b320ae98582b +Block 0030 [120]: 15fc93c969d70364 +Block 0030 [121]: 1cc032eb533bf386 +Block 0030 [122]: 2c58b2dc22266e02 +Block 0030 [123]: e422db8d513b6687 +Block 0030 [124]: f437358d28f6d6f3 +Block 0030 [125]: 409139bd1af4c65a +Block 0030 [126]: 4e52aaa331e8b9a5 +Block 0030 [127]: 8c88340b9e5efd30 +Block 0031 [ 0]: 56b541595dcc6fb1 +Block 0031 [ 1]: 607ad882fb51aefb +Block 0031 [ 2]: 14debd64740fb455 +Block 0031 [ 3]: 26a1486601ba4014 +Block 0031 [ 4]: 6e226704fadf9b3a +Block 0031 [ 5]: 7071e97c033eecf0 +Block 0031 [ 6]: a48434d1a82936d2 +Block 0031 [ 7]: 447c72527f72e3e3 +Block 0031 [ 8]: 1348b0bc1c9707ba +Block 0031 [ 9]: eace622a944fabbe +Block 0031 [ 10]: 353ed00f73ca5d9e +Block 0031 [ 11]: a144765ce7ed48fa +Block 0031 [ 12]: 646405d2ec92b8d7 +Block 0031 [ 13]: c1373d2221f79859 +Block 0031 [ 14]: e934197d55225eaa +Block 0031 [ 15]: 80ba317a25065d33 +Block 0031 [ 16]: 33697268b6033e42 +Block 0031 [ 17]: e92077cb22a36918 +Block 0031 [ 18]: 1809cf4caffa039d +Block 0031 [ 19]: f83303c5920dfcc5 +Block 0031 [ 20]: f736cbeefc9ce798 +Block 0031 [ 21]: 3b54d82b41b098e0 +Block 0031 [ 22]: 335107c0a6b0c3d1 +Block 0031 [ 23]: 7a4df775b24a3cd6 +Block 0031 [ 24]: 25f851e8f3bd76d3 +Block 0031 [ 25]: b9d70e49f5750a56 +Block 0031 [ 26]: ae86aeb12f2305d7 +Block 0031 [ 27]: 12d00c57605652d8 +Block 0031 [ 28]: 44b7e9c35a83480a +Block 0031 [ 29]: 35cf1a769379beea +Block 0031 [ 30]: 0e3a103e7f95bb7e +Block 0031 [ 31]: 17023e6b0b5d90b8 +Block 0031 [ 32]: 2460dfb3f3d65760 +Block 0031 [ 33]: 1835e0a086678329 +Block 0031 [ 34]: 15e390201680a99f +Block 0031 [ 35]: e754ce9be5f9cd0c +Block 0031 [ 36]: b5cb81de27f762b5 +Block 0031 [ 37]: 738a4e685c3e6133 +Block 0031 [ 38]: bae8a4bbffd88861 +Block 0031 [ 39]: 38adfc6c4f01cace +Block 0031 [ 40]: ff79ca79d67eb124 +Block 0031 [ 41]: a4865b7a5ec5e9cb +Block 0031 [ 42]: fc64a20ca7eaa3f1 +Block 0031 [ 43]: 8eb112bdcab799a4 +Block 0031 [ 44]: 96764171a7ac544b +Block 0031 [ 45]: f0a6e23ac5949f6c +Block 0031 [ 46]: 79eae6371346533b +Block 0031 [ 47]: e4d4efb218c6aa83 +Block 0031 [ 48]: 2104d0468931261a +Block 0031 [ 49]: 4247e67e1ace7390 +Block 0031 [ 50]: 45d7d7a54dabbd76 +Block 0031 [ 51]: 4fd1267dffc9b30e +Block 0031 [ 52]: 69d51e78aa8db238 +Block 0031 [ 53]: 4329981502b3079a +Block 0031 [ 54]: a730594950e72400 +Block 0031 [ 55]: 3092c8aebb21060d +Block 0031 [ 56]: d5b8b21a483df5f7 +Block 0031 [ 57]: 6d38f87b8f847e91 +Block 0031 [ 58]: 7a258124daedb431 +Block 0031 [ 59]: 93a907049ee66c94 +Block 0031 [ 60]: 494b9730d1836f3c +Block 0031 [ 61]: 9114899e4a54157c +Block 0031 [ 62]: 44f5b117a277c5d1 +Block 0031 [ 63]: ddbb3504c7504716 +Block 0031 [ 64]: 44a033f4e223796c +Block 0031 [ 65]: 15cb2a4b270cef17 +Block 0031 [ 66]: 04b33e557ed91752 +Block 0031 [ 67]: e19d95ce702d48ca +Block 0031 [ 68]: 562375617142ee07 +Block 0031 [ 69]: 5a3bd82c7c20573f +Block 0031 [ 70]: 226cc32237617958 +Block 0031 [ 71]: f9e57d96d95d4758 +Block 0031 [ 72]: f2a9a8735160284d +Block 0031 [ 73]: ab7f9feb2455068f +Block 0031 [ 74]: c8a8382e34dc0830 +Block 0031 [ 75]: 8408be4da2bfdb2f +Block 0031 [ 76]: 6b917886a8e3169a +Block 0031 [ 77]: 739213ba742858f5 +Block 0031 [ 78]: ea55bddc54068058 +Block 0031 [ 79]: b5cb8166dd28d3a4 +Block 0031 [ 80]: a3aa143acf025806 +Block 0031 [ 81]: 3b2ee2b11caeea07 +Block 0031 [ 82]: 30d6c892ab7437e7 +Block 0031 [ 83]: 3ff9e26a35996936 +Block 0031 [ 84]: be4e56b1184d4dce +Block 0031 [ 85]: b6b0e4754d83366c +Block 0031 [ 86]: 2588d4680fcffa21 +Block 0031 [ 87]: 328dba1abda66139 +Block 0031 [ 88]: d4af6ec06461e8b2 +Block 0031 [ 89]: d123dea841375fe7 +Block 0031 [ 90]: e6492ccb67b26dd4 +Block 0031 [ 91]: 0906e849a240d13b +Block 0031 [ 92]: 0572c95c7c1d8032 +Block 0031 [ 93]: 4292844af9422a9e +Block 0031 [ 94]: aa719cd495649d5a +Block 0031 [ 95]: 718dd218c44e6a0b +Block 0031 [ 96]: fd114114a3789893 +Block 0031 [ 97]: 8c809ab7f96a4627 +Block 0031 [ 98]: 32c05157969648d3 +Block 0031 [ 99]: 76157a8d56ae11c6 +Block 0031 [100]: ca3d325fbf391e9a +Block 0031 [101]: 3af3fd2c41d20c1c +Block 0031 [102]: f903178e5dc9820b +Block 0031 [103]: 4f4d44b8f166f14b +Block 0031 [104]: 4a95f1cea33d5d91 +Block 0031 [105]: 23070893e589cbf9 +Block 0031 [106]: 4d25eed14ef764d4 +Block 0031 [107]: 0f3c464dbdf7cd1d +Block 0031 [108]: 8e3fef7b872504a5 +Block 0031 [109]: 113fe6e452255e08 +Block 0031 [110]: e9ec8f20a1e13b2a +Block 0031 [111]: 5b6ae06cea1b26d8 +Block 0031 [112]: b644922c1917bc5c +Block 0031 [113]: 1c760a6042dae15e +Block 0031 [114]: d5faba8f84e17a16 +Block 0031 [115]: 5401a69a243aa03e +Block 0031 [116]: 11ec3f83197a79e4 +Block 0031 [117]: 10cd56b78d507a76 +Block 0031 [118]: 4635cae680355717 +Block 0031 [119]: 2686da0dc5e13c02 +Block 0031 [120]: c9587e5ee5d0ed17 +Block 0031 [121]: cdb806b4f535e84a +Block 0031 [122]: 1e58ef0ea43a972f +Block 0031 [123]: 7af03e7afd1ff2e4 +Block 0031 [124]: 7f9f6d7b2f0da6f5 +Block 0031 [125]: 9f01140fa64778e6 +Block 0031 [126]: 3e66dc822c734438 +Block 0031 [127]: b3e7ac8ca5ed6ed9 +Tag: b6 46 15 f0 77 89 b6 6b 64 5b 67 ee 9e d3 b3 77 ae 35 0b 6b fc bb 0f c9 51 41 ea 8f 32 26 13 c0 diff --git a/deps/phc-winner-argon2-20190702/kats/argon2id_v16.shasum b/deps/phc-winner-argon2-20190702/kats/argon2id_v16.shasum new file mode 100644 index 000000000..33f1f4010 --- /dev/null +++ b/deps/phc-winner-argon2-20190702/kats/argon2id_v16.shasum @@ -0,0 +1 @@ +680774be1d3ad2e74bbc56ee715dd6eb97a58279bf22edc57d00e840ca1ae469 argon2id_v16 diff --git a/deps/phc-winner-argon2-20190702/kats/check-sums.ps1 b/deps/phc-winner-argon2-20190702/kats/check-sums.ps1 new file mode 100644 index 000000000..36307bd7f --- /dev/null +++ b/deps/phc-winner-argon2-20190702/kats/check-sums.ps1 @@ -0,0 +1,42 @@ +Set-Variable tempfile -option Constant -value "tempfile" + +function hash($path) { + $fullPath = Resolve-Path $path + $hash = new-object -TypeName System.Security.Cryptography.SHA256CryptoServiceProvider + + $contents = [IO.File]::ReadAllText($fullPath) -replace "`r`n?", "`n" + # create UTF-8 encoding without signature + $utf8 = New-Object System.Text.UTF8Encoding $false + # write the text back + [IO.File]::WriteAllText($tempfile, $contents, $utf8) + + $file = [System.IO.File]::Open($tempfile,[System.IO.Filemode]::Open, [System.IO.FileAccess]::Read) + $result = [System.BitConverter]::ToString($hash.ComputeHash($file)) + $file.Dispose() + + if (Test-Path $tempfile) { + Remove-Item $tempfile + } + + return $result +} + +function main() { + $files = $(Get-ChildItem * | Where-Object { $_.Name -match '^[a-z2]*(_v)?[0-9]*$' } | select -ExpandProperty name) + + foreach ($file in $files) { + $new = $(hash $file).replace("-","") + $new = $new.ToLower() + + $old=$(Get-Content $file".shasum") + $old = $old.Substring(0, $old.IndexOf(" ")) + + if ($new -eq $old) { + Write-Host $file "`tOK" + } else { + Write-Host $file "`tERROR" + } + } +} + +main diff --git a/deps/phc-winner-argon2-20190702/kats/check-sums.sh b/deps/phc-winner-argon2-20190702/kats/check-sums.sh new file mode 100644 index 000000000..b297a162e --- /dev/null +++ b/deps/phc-winner-argon2-20190702/kats/check-sums.sh @@ -0,0 +1,13 @@ +#!/bin/sh + +for file in `ls | grep '^[a-z2]*\(_v\)\?[0-9]*$' | xargs` +do + new=`shasum -a 256 $file` + old=`cat $file.shasum` + if [ "$new" = "$old" ] + then + echo $file "\t" OK + else + echo $file "\t" ERROR + fi +done diff --git a/deps/phc-winner-argon2-20190702/kats/test.ps1 b/deps/phc-winner-argon2-20190702/kats/test.ps1 new file mode 100644 index 000000000..d5db5b6ba --- /dev/null +++ b/deps/phc-winner-argon2-20190702/kats/test.ps1 @@ -0,0 +1,50 @@ +$ErrorActionPreference = "Stop" + +Set-Variable tempfile -option Constant -value "tempfile" + +function CompareFiles($f1, $f2, $i) { + $f1_content = $(Get-Content $f1) + $f2_content = $(Get-Content $f2) + + if (Compare-Object $f1_content $f2_content) { + Write-Host -NoNewline "ERROR" + exit $i + } else { + Write-Host -NoNewline "OK" + } +} + +function main() { + $i = 0 + foreach ($opt in @("Ref", "Opt")) { + Write-Output "$opt" + + foreach ($version in @(16, 19)) { + foreach ($type in @("i", "d", "id")) { + $i++ + + if ("Ref" -eq $opt) { + vs2015\build\Argon2RefGenKAT.exe $type $version > $tempfile + } else { + vs2015\build\Argon2OptGenKAT.exe $type $version > $tempfile + } + + if (19 -eq $version) { + $kats = "kats\argon2" + $type + } else { + $kats = "kats\argon2" + $type + "_v" + $version + } + + Write-Host -NoNewline "Argon2$type v=$version : " + CompareFiles $tempfile $kats $i + Write-Output "" + } + } + } + + if (Test-Path $tempfile) { + Remove-Item $tempfile + } +} + +main diff --git a/deps/phc-winner-argon2-20190702/kats/test.sh b/deps/phc-winner-argon2-20190702/kats/test.sh new file mode 100644 index 000000000..b32097546 --- /dev/null +++ b/deps/phc-winner-argon2-20190702/kats/test.sh @@ -0,0 +1,49 @@ +#!/bin/sh + +for opttest in "" "OPTTEST=1" +do + if [ "" = "$opttest" ] + then + printf "Default build\n" + else + printf "Force OPTTEST=1\n" + fi + + make genkat $opttest > /dev/null + if [ $? -ne 0 ] + then + exit $? + fi + + i=0 + for version in 16 19 + do + for type in i d id + do + i=$(($i+1)) + + printf "argon2$type v=$version: " + + if [ 19 -eq $version ] + then + kats="kats/argon2"$type + else + kats="kats/argon2"$type"_v"$version + fi + + ./genkat $type $version > tmp + if diff tmp $kats + then + printf "OK" + else + printf "ERROR" + exit $i + fi + printf "\n" + done + done +done + +rm -f tmp + +exit 0 diff --git a/deps/phc-winner-argon2-20190702/libargon2.pc.in b/deps/phc-winner-argon2-20190702/libargon2.pc.in new file mode 100644 index 000000000..718532497 --- /dev/null +++ b/deps/phc-winner-argon2-20190702/libargon2.pc.in @@ -0,0 +1,18 @@ +# libargon2 info for pkg-config +## Template for downstream installers: +## - replace @UPSTREAM_VER@ with current version, e.g. '20160406' +## - replace @HOST_MULTIARCH@ with target arch lib, e.g. 'lib', 'lib/x86_64-linux-gnu' or 'lib64' +## - replace @PREFIX@ with install path, e.g. '/usr', '/usr/local', '/usr/pkg' +## - replace @INCLUDE@ with incluse path, e.g. 'include' or 'include/argon2' + +prefix=@PREFIX@ +exec_prefix=${prefix} +libdir=${prefix}/@HOST_MULTIARCH@ +includedir=${prefix}/@INCLUDE@ + +Name: libargon2 +Description: Development libraries for libargon2 +Version: @UPSTREAM_VER@ +Libs: -L${libdir} -largon2 @EXTRA_LIBS@ +Cflags: -I${includedir} +URL: https://github.com/P-H-C/phc-winner-argon2 diff --git a/deps/phc-winner-argon2-20190702/man/argon2.1 b/deps/phc-winner-argon2-20190702/man/argon2.1 new file mode 100644 index 000000000..77c0f0777 --- /dev/null +++ b/deps/phc-winner-argon2-20190702/man/argon2.1 @@ -0,0 +1,57 @@ +.TH ARGON2 "1" "April 2016" "argon2 " "User Commands" + +.SH NAME +argon2 \- generate argon2 hashes + +.SH SYNOPSIS +.B argon2 salt +.RB [ OPTIONS ] + +.SH DESCRIPTION +Generate Argon2 hashes from the command line. + +The supplied salt (the first argument to the command) must be at least +8 octets in length, and the password is supplied on standard input. + +By default, this uses Argon2i variant (where memory access is +independent of secret data) which is the preferred one for password +hashing and password-based key derivation. + +.SH OPTIONS +.TP +.B \-h +Display tool usage +.TP +.B \-d +Use Argon2d instead of Argon2i (Argon2i is the default) +.TP +.B \-id +Use Argon2id instead of Argon2i (Argon2i is the default) +.TP +.BI \-t " N" +Sets the number of iterations to N (default = 3) +.TP +.BI \-m " N" +Sets the memory usage of 2^N KiB (default = 12) +.TP +.BI \-p " N" +Sets parallelism to N threads (default = 1) +.TP +.BI \-l " N" +Sets hash output length to N bytes (default = 32) +.TP +.B \-e +Output only encoded hash +.TP +.B \-r +Output only the raw bytes of the hash +.TP +.B \-v (10|13) +Argon2 version (defaults to the most recent version, currently 13) + +.SH COPYRIGHT +This manpage was written by \fBDaniel Kahn Gillmor\fR for the Debian +distribution (but may be used by others). It is released, like the +rest of this Argon2 implementation, under a dual license. You may use this work +under the terms of a Creative Commons CC0 1.0 License/Waiver or the Apache +Public License 2.0, at your option. diff --git a/deps/phc-winner-argon2-20190702/src/argon2.c b/deps/phc-winner-argon2-20190702/src/argon2.c new file mode 100644 index 000000000..795b429e7 --- /dev/null +++ b/deps/phc-winner-argon2-20190702/src/argon2.c @@ -0,0 +1,452 @@ +/* + * Argon2 reference source code package - reference C implementations + * + * Copyright 2015 + * Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves + * + * You may use this work under the terms of a Creative Commons CC0 1.0 + * License/Waiver or the Apache Public License 2.0, at your option. The terms of + * these licenses can be found at: + * + * - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0 + * - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0 + * + * You should have received a copy of both of these licenses along with this + * software. If not, they may be obtained at the above URLs. + */ + +#include +#include +#include + +#include "argon2.h" +#include "encoding.h" +#include "core.h" + +const char *argon2_type2string(argon2_type type, int uppercase) { + switch (type) { + case Argon2_d: + return uppercase ? "Argon2d" : "argon2d"; + case Argon2_i: + return uppercase ? "Argon2i" : "argon2i"; + case Argon2_id: + return uppercase ? "Argon2id" : "argon2id"; + } + + return NULL; +} + +int argon2_ctx(argon2_context *context, argon2_type type) { + /* 1. Validate all inputs */ + int result = validate_inputs(context); + uint32_t memory_blocks, segment_length; + argon2_instance_t instance; + + if (ARGON2_OK != result) { + return result; + } + + if (Argon2_d != type && Argon2_i != type && Argon2_id != type) { + return ARGON2_INCORRECT_TYPE; + } + + /* 2. Align memory size */ + /* Minimum memory_blocks = 8L blocks, where L is the number of lanes */ + memory_blocks = context->m_cost; + + if (memory_blocks < 2 * ARGON2_SYNC_POINTS * context->lanes) { + memory_blocks = 2 * ARGON2_SYNC_POINTS * context->lanes; + } + + segment_length = memory_blocks / (context->lanes * ARGON2_SYNC_POINTS); + /* Ensure that all segments have equal length */ + memory_blocks = segment_length * (context->lanes * ARGON2_SYNC_POINTS); + + instance.version = context->version; + instance.memory = NULL; + instance.passes = context->t_cost; + instance.memory_blocks = memory_blocks; + instance.segment_length = segment_length; + instance.lane_length = segment_length * ARGON2_SYNC_POINTS; + instance.lanes = context->lanes; + instance.threads = context->threads; + instance.type = type; + + if (instance.threads > instance.lanes) { + instance.threads = instance.lanes; + } + + /* 3. Initialization: Hashing inputs, allocating memory, filling first + * blocks + */ + result = initialize(&instance, context); + + if (ARGON2_OK != result) { + return result; + } + + /* 4. Filling memory */ + result = fill_memory_blocks(&instance); + + if (ARGON2_OK != result) { + return result; + } + /* 5. Finalization */ + finalize(context, &instance); + + return ARGON2_OK; +} + +int argon2_hash(const uint32_t t_cost, const uint32_t m_cost, + const uint32_t parallelism, const void *pwd, + const size_t pwdlen, const void *salt, const size_t saltlen, + void *hash, const size_t hashlen, char *encoded, + const size_t encodedlen, argon2_type type, + const uint32_t version){ + + argon2_context context; + int result; + uint8_t *out; + + if (pwdlen > ARGON2_MAX_PWD_LENGTH) { + return ARGON2_PWD_TOO_LONG; + } + + if (saltlen > ARGON2_MAX_SALT_LENGTH) { + return ARGON2_SALT_TOO_LONG; + } + + if (hashlen > ARGON2_MAX_OUTLEN) { + return ARGON2_OUTPUT_TOO_LONG; + } + + if (hashlen < ARGON2_MIN_OUTLEN) { + return ARGON2_OUTPUT_TOO_SHORT; + } + + out = malloc(hashlen); + if (!out) { + return ARGON2_MEMORY_ALLOCATION_ERROR; + } + + context.out = (uint8_t *)out; + context.outlen = (uint32_t)hashlen; + context.pwd = CONST_CAST(uint8_t *)pwd; + context.pwdlen = (uint32_t)pwdlen; + context.salt = CONST_CAST(uint8_t *)salt; + context.saltlen = (uint32_t)saltlen; + context.secret = NULL; + context.secretlen = 0; + context.ad = NULL; + context.adlen = 0; + context.t_cost = t_cost; + context.m_cost = m_cost; + context.lanes = parallelism; + context.threads = parallelism; + context.allocate_cbk = NULL; + context.free_cbk = NULL; + context.flags = ARGON2_DEFAULT_FLAGS; + context.version = version; + + result = argon2_ctx(&context, type); + + if (result != ARGON2_OK) { + clear_internal_memory(out, hashlen); + free(out); + return result; + } + + /* if raw hash requested, write it */ + if (hash) { + memcpy(hash, out, hashlen); + } + + /* if encoding requested, write it */ + if (encoded && encodedlen) { + if (encode_string(encoded, encodedlen, &context, type) != ARGON2_OK) { + clear_internal_memory(out, hashlen); /* wipe buffers if error */ + clear_internal_memory(encoded, encodedlen); + free(out); + return ARGON2_ENCODING_FAIL; + } + } + clear_internal_memory(out, hashlen); + free(out); + + return ARGON2_OK; +} + +int argon2i_hash_encoded(const uint32_t t_cost, const uint32_t m_cost, + const uint32_t parallelism, const void *pwd, + const size_t pwdlen, const void *salt, + const size_t saltlen, const size_t hashlen, + char *encoded, const size_t encodedlen) { + + return argon2_hash(t_cost, m_cost, parallelism, pwd, pwdlen, salt, saltlen, + NULL, hashlen, encoded, encodedlen, Argon2_i, + ARGON2_VERSION_NUMBER); +} + +int argon2i_hash_raw(const uint32_t t_cost, const uint32_t m_cost, + const uint32_t parallelism, const void *pwd, + const size_t pwdlen, const void *salt, + const size_t saltlen, void *hash, const size_t hashlen) { + + return argon2_hash(t_cost, m_cost, parallelism, pwd, pwdlen, salt, saltlen, + hash, hashlen, NULL, 0, Argon2_i, ARGON2_VERSION_NUMBER); +} + +int argon2d_hash_encoded(const uint32_t t_cost, const uint32_t m_cost, + const uint32_t parallelism, const void *pwd, + const size_t pwdlen, const void *salt, + const size_t saltlen, const size_t hashlen, + char *encoded, const size_t encodedlen) { + + return argon2_hash(t_cost, m_cost, parallelism, pwd, pwdlen, salt, saltlen, + NULL, hashlen, encoded, encodedlen, Argon2_d, + ARGON2_VERSION_NUMBER); +} + +int argon2d_hash_raw(const uint32_t t_cost, const uint32_t m_cost, + const uint32_t parallelism, const void *pwd, + const size_t pwdlen, const void *salt, + const size_t saltlen, void *hash, const size_t hashlen) { + + return argon2_hash(t_cost, m_cost, parallelism, pwd, pwdlen, salt, saltlen, + hash, hashlen, NULL, 0, Argon2_d, ARGON2_VERSION_NUMBER); +} + +int argon2id_hash_encoded(const uint32_t t_cost, const uint32_t m_cost, + const uint32_t parallelism, const void *pwd, + const size_t pwdlen, const void *salt, + const size_t saltlen, const size_t hashlen, + char *encoded, const size_t encodedlen) { + + return argon2_hash(t_cost, m_cost, parallelism, pwd, pwdlen, salt, saltlen, + NULL, hashlen, encoded, encodedlen, Argon2_id, + ARGON2_VERSION_NUMBER); +} + +int argon2id_hash_raw(const uint32_t t_cost, const uint32_t m_cost, + const uint32_t parallelism, const void *pwd, + const size_t pwdlen, const void *salt, + const size_t saltlen, void *hash, const size_t hashlen) { + return argon2_hash(t_cost, m_cost, parallelism, pwd, pwdlen, salt, saltlen, + hash, hashlen, NULL, 0, Argon2_id, + ARGON2_VERSION_NUMBER); +} + +static int argon2_compare(const uint8_t *b1, const uint8_t *b2, size_t len) { + size_t i; + uint8_t d = 0U; + + for (i = 0U; i < len; i++) { + d |= b1[i] ^ b2[i]; + } + return (int)((1 & ((d - 1) >> 8)) - 1); +} + +int argon2_verify(const char *encoded, const void *pwd, const size_t pwdlen, + argon2_type type) { + + argon2_context ctx; + uint8_t *desired_result = NULL; + + int ret = ARGON2_OK; + + size_t encoded_len; + uint32_t max_field_len; + + if (pwdlen > ARGON2_MAX_PWD_LENGTH) { + return ARGON2_PWD_TOO_LONG; + } + + if (encoded == NULL) { + return ARGON2_DECODING_FAIL; + } + + encoded_len = strlen(encoded); + if (encoded_len > UINT32_MAX) { + return ARGON2_DECODING_FAIL; + } + + /* No field can be longer than the encoded length */ + max_field_len = (uint32_t)encoded_len; + + ctx.saltlen = max_field_len; + ctx.outlen = max_field_len; + + ctx.salt = malloc(ctx.saltlen); + ctx.out = malloc(ctx.outlen); + if (!ctx.salt || !ctx.out) { + ret = ARGON2_MEMORY_ALLOCATION_ERROR; + goto fail; + } + + ctx.pwd = (uint8_t *)pwd; + ctx.pwdlen = (uint32_t)pwdlen; + + ret = decode_string(&ctx, encoded, type); + if (ret != ARGON2_OK) { + goto fail; + } + + /* Set aside the desired result, and get a new buffer. */ + desired_result = ctx.out; + ctx.out = malloc(ctx.outlen); + if (!ctx.out) { + ret = ARGON2_MEMORY_ALLOCATION_ERROR; + goto fail; + } + + ret = argon2_verify_ctx(&ctx, (char *)desired_result, type); + if (ret != ARGON2_OK) { + goto fail; + } + +fail: + free(ctx.salt); + free(ctx.out); + free(desired_result); + + return ret; +} + +int argon2i_verify(const char *encoded, const void *pwd, const size_t pwdlen) { + + return argon2_verify(encoded, pwd, pwdlen, Argon2_i); +} + +int argon2d_verify(const char *encoded, const void *pwd, const size_t pwdlen) { + + return argon2_verify(encoded, pwd, pwdlen, Argon2_d); +} + +int argon2id_verify(const char *encoded, const void *pwd, const size_t pwdlen) { + + return argon2_verify(encoded, pwd, pwdlen, Argon2_id); +} + +int argon2d_ctx(argon2_context *context) { + return argon2_ctx(context, Argon2_d); +} + +int argon2i_ctx(argon2_context *context) { + return argon2_ctx(context, Argon2_i); +} + +int argon2id_ctx(argon2_context *context) { + return argon2_ctx(context, Argon2_id); +} + +int argon2_verify_ctx(argon2_context *context, const char *hash, + argon2_type type) { + int ret = argon2_ctx(context, type); + if (ret != ARGON2_OK) { + return ret; + } + + if (argon2_compare((uint8_t *)hash, context->out, context->outlen)) { + return ARGON2_VERIFY_MISMATCH; + } + + return ARGON2_OK; +} + +int argon2d_verify_ctx(argon2_context *context, const char *hash) { + return argon2_verify_ctx(context, hash, Argon2_d); +} + +int argon2i_verify_ctx(argon2_context *context, const char *hash) { + return argon2_verify_ctx(context, hash, Argon2_i); +} + +int argon2id_verify_ctx(argon2_context *context, const char *hash) { + return argon2_verify_ctx(context, hash, Argon2_id); +} + +const char *argon2_error_message(int error_code) { + switch (error_code) { + case ARGON2_OK: + return "OK"; + case ARGON2_OUTPUT_PTR_NULL: + return "Output pointer is NULL"; + case ARGON2_OUTPUT_TOO_SHORT: + return "Output is too short"; + case ARGON2_OUTPUT_TOO_LONG: + return "Output is too long"; + case ARGON2_PWD_TOO_SHORT: + return "Password is too short"; + case ARGON2_PWD_TOO_LONG: + return "Password is too long"; + case ARGON2_SALT_TOO_SHORT: + return "Salt is too short"; + case ARGON2_SALT_TOO_LONG: + return "Salt is too long"; + case ARGON2_AD_TOO_SHORT: + return "Associated data is too short"; + case ARGON2_AD_TOO_LONG: + return "Associated data is too long"; + case ARGON2_SECRET_TOO_SHORT: + return "Secret is too short"; + case ARGON2_SECRET_TOO_LONG: + return "Secret is too long"; + case ARGON2_TIME_TOO_SMALL: + return "Time cost is too small"; + case ARGON2_TIME_TOO_LARGE: + return "Time cost is too large"; + case ARGON2_MEMORY_TOO_LITTLE: + return "Memory cost is too small"; + case ARGON2_MEMORY_TOO_MUCH: + return "Memory cost is too large"; + case ARGON2_LANES_TOO_FEW: + return "Too few lanes"; + case ARGON2_LANES_TOO_MANY: + return "Too many lanes"; + case ARGON2_PWD_PTR_MISMATCH: + return "Password pointer is NULL, but password length is not 0"; + case ARGON2_SALT_PTR_MISMATCH: + return "Salt pointer is NULL, but salt length is not 0"; + case ARGON2_SECRET_PTR_MISMATCH: + return "Secret pointer is NULL, but secret length is not 0"; + case ARGON2_AD_PTR_MISMATCH: + return "Associated data pointer is NULL, but ad length is not 0"; + case ARGON2_MEMORY_ALLOCATION_ERROR: + return "Memory allocation error"; + case ARGON2_FREE_MEMORY_CBK_NULL: + return "The free memory callback is NULL"; + case ARGON2_ALLOCATE_MEMORY_CBK_NULL: + return "The allocate memory callback is NULL"; + case ARGON2_INCORRECT_PARAMETER: + return "Argon2_Context context is NULL"; + case ARGON2_INCORRECT_TYPE: + return "There is no such version of Argon2"; + case ARGON2_OUT_PTR_MISMATCH: + return "Output pointer mismatch"; + case ARGON2_THREADS_TOO_FEW: + return "Not enough threads"; + case ARGON2_THREADS_TOO_MANY: + return "Too many threads"; + case ARGON2_MISSING_ARGS: + return "Missing arguments"; + case ARGON2_ENCODING_FAIL: + return "Encoding failed"; + case ARGON2_DECODING_FAIL: + return "Decoding failed"; + case ARGON2_THREAD_FAIL: + return "Threading failure"; + case ARGON2_DECODING_LENGTH_FAIL: + return "Some of encoded parameters are too long or too short"; + case ARGON2_VERIFY_MISMATCH: + return "The password does not match the supplied hash"; + default: + return "Unknown error code"; + } +} + +size_t argon2_encodedlen(uint32_t t_cost, uint32_t m_cost, uint32_t parallelism, + uint32_t saltlen, uint32_t hashlen, argon2_type type) { + return strlen("$$v=$m=,t=,p=$$") + strlen(argon2_type2string(type, 0)) + + numlen(t_cost) + numlen(m_cost) + numlen(parallelism) + + b64len(saltlen) + b64len(hashlen) + numlen(ARGON2_VERSION_NUMBER) + 1; +} diff --git a/deps/phc-winner-argon2-20190702/src/bench.c b/deps/phc-winner-argon2-20190702/src/bench.c new file mode 100644 index 000000000..20a22869d --- /dev/null +++ b/deps/phc-winner-argon2-20190702/src/bench.c @@ -0,0 +1,111 @@ +/* + * Argon2 reference source code package - reference C implementations + * + * Copyright 2015 + * Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves + * + * You may use this work under the terms of a Creative Commons CC0 1.0 + * License/Waiver or the Apache Public License 2.0, at your option. The terms of + * these licenses can be found at: + * + * - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0 + * - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0 + * + * You should have received a copy of both of these licenses along with this + * software. If not, they may be obtained at the above URLs. + */ + +#include +#include +#include +#include +#include +#ifdef _MSC_VER +#include +#endif + +#include "argon2.h" + +static uint64_t rdtsc(void) { +#ifdef _MSC_VER + return __rdtsc(); +#else +#if defined(__amd64__) || defined(__x86_64__) + uint64_t rax, rdx; + __asm__ __volatile__("rdtsc" : "=a"(rax), "=d"(rdx) : :); + return (rdx << 32) | rax; +#elif defined(__i386__) || defined(__i386) || defined(__X86__) + uint64_t rax; + __asm__ __volatile__("rdtsc" : "=A"(rax) : :); + return rax; +#else +#error "Not implemented!" +#endif +#endif +} + +/* + * Benchmarks Argon2 with salt length 16, password length 16, t_cost 3, + and different m_cost and threads + */ +static void benchmark() { +#define BENCH_OUTLEN 16 +#define BENCH_INLEN 16 + const uint32_t inlen = BENCH_INLEN; + const unsigned outlen = BENCH_OUTLEN; + unsigned char out[BENCH_OUTLEN]; + unsigned char pwd_array[BENCH_INLEN]; + unsigned char salt_array[BENCH_INLEN]; +#undef BENCH_INLEN +#undef BENCH_OUTLEN + + uint32_t t_cost = 3; + uint32_t m_cost; + uint32_t thread_test[4] = {1, 2, 4, 8}; + argon2_type types[3] = {Argon2_i, Argon2_d, Argon2_id}; + + memset(pwd_array, 0, inlen); + memset(salt_array, 1, inlen); + + for (m_cost = (uint32_t)1 << 10; m_cost <= (uint32_t)1 << 22; m_cost *= 2) { + unsigned i; + for (i = 0; i < 4; ++i) { + double run_time = 0; + uint32_t thread_n = thread_test[i]; + + unsigned j; + for (j = 0; j < 3; ++j) { + clock_t start_time, stop_time; + uint64_t start_cycles, stop_cycles; + uint64_t delta; + double mcycles; + + argon2_type type = types[j]; + start_time = clock(); + start_cycles = rdtsc(); + + argon2_hash(t_cost, m_cost, thread_n, pwd_array, inlen, + salt_array, inlen, out, outlen, NULL, 0, type, + ARGON2_VERSION_NUMBER); + + stop_cycles = rdtsc(); + stop_time = clock(); + + delta = (stop_cycles - start_cycles) / (m_cost); + mcycles = (double)(stop_cycles - start_cycles) / (1UL << 20); + run_time += ((double)stop_time - start_time) / (CLOCKS_PER_SEC); + + printf("%s %d iterations %d MiB %d threads: %2.2f cpb %2.2f " + "Mcycles \n", argon2_type2string(type, 1), t_cost, + m_cost >> 10, thread_n, (float)delta / 1024, mcycles); + } + + printf("%2.4f seconds\n\n", run_time); + } + } +} + +int main() { + benchmark(); + return ARGON2_OK; +} diff --git a/deps/phc-winner-argon2-20190702/src/blake2/blake2-impl.h b/deps/phc-winner-argon2-20190702/src/blake2/blake2-impl.h new file mode 100644 index 000000000..241f0beb3 --- /dev/null +++ b/deps/phc-winner-argon2-20190702/src/blake2/blake2-impl.h @@ -0,0 +1,156 @@ +/* + * Argon2 reference source code package - reference C implementations + * + * Copyright 2015 + * Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves + * + * You may use this work under the terms of a Creative Commons CC0 1.0 + * License/Waiver or the Apache Public License 2.0, at your option. The terms of + * these licenses can be found at: + * + * - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0 + * - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0 + * + * You should have received a copy of both of these licenses along with this + * software. If not, they may be obtained at the above URLs. + */ + +#ifndef PORTABLE_BLAKE2_IMPL_H +#define PORTABLE_BLAKE2_IMPL_H + +#include +#include + +#if defined(_MSC_VER) +#define BLAKE2_INLINE __inline +#elif defined(__GNUC__) || defined(__clang__) +#define BLAKE2_INLINE __inline__ +#else +#define BLAKE2_INLINE +#endif + +/* Argon2 Team - Begin Code */ +/* + Not an exhaustive list, but should cover the majority of modern platforms + Additionally, the code will always be correct---this is only a performance + tweak. +*/ +#if (defined(__BYTE_ORDER__) && \ + (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)) || \ + defined(__LITTLE_ENDIAN__) || defined(__ARMEL__) || defined(__MIPSEL__) || \ + defined(__AARCH64EL__) || defined(__amd64__) || defined(__i386__) || \ + defined(_M_IX86) || defined(_M_X64) || defined(_M_AMD64) || \ + defined(_M_ARM) +#define NATIVE_LITTLE_ENDIAN +#endif +/* Argon2 Team - End Code */ + +static BLAKE2_INLINE uint32_t load32(const void *src) { +#if defined(NATIVE_LITTLE_ENDIAN) + uint32_t w; + memcpy(&w, src, sizeof w); + return w; +#else + const uint8_t *p = (const uint8_t *)src; + uint32_t w = *p++; + w |= (uint32_t)(*p++) << 8; + w |= (uint32_t)(*p++) << 16; + w |= (uint32_t)(*p++) << 24; + return w; +#endif +} + +static BLAKE2_INLINE uint64_t load64(const void *src) { +#if defined(NATIVE_LITTLE_ENDIAN) + uint64_t w; + memcpy(&w, src, sizeof w); + return w; +#else + const uint8_t *p = (const uint8_t *)src; + uint64_t w = *p++; + w |= (uint64_t)(*p++) << 8; + w |= (uint64_t)(*p++) << 16; + w |= (uint64_t)(*p++) << 24; + w |= (uint64_t)(*p++) << 32; + w |= (uint64_t)(*p++) << 40; + w |= (uint64_t)(*p++) << 48; + w |= (uint64_t)(*p++) << 56; + return w; +#endif +} + +static BLAKE2_INLINE void store32(void *dst, uint32_t w) { +#if defined(NATIVE_LITTLE_ENDIAN) + memcpy(dst, &w, sizeof w); +#else + uint8_t *p = (uint8_t *)dst; + *p++ = (uint8_t)w; + w >>= 8; + *p++ = (uint8_t)w; + w >>= 8; + *p++ = (uint8_t)w; + w >>= 8; + *p++ = (uint8_t)w; +#endif +} + +static BLAKE2_INLINE void store64(void *dst, uint64_t w) { +#if defined(NATIVE_LITTLE_ENDIAN) + memcpy(dst, &w, sizeof w); +#else + uint8_t *p = (uint8_t *)dst; + *p++ = (uint8_t)w; + w >>= 8; + *p++ = (uint8_t)w; + w >>= 8; + *p++ = (uint8_t)w; + w >>= 8; + *p++ = (uint8_t)w; + w >>= 8; + *p++ = (uint8_t)w; + w >>= 8; + *p++ = (uint8_t)w; + w >>= 8; + *p++ = (uint8_t)w; + w >>= 8; + *p++ = (uint8_t)w; +#endif +} + +static BLAKE2_INLINE uint64_t load48(const void *src) { + const uint8_t *p = (const uint8_t *)src; + uint64_t w = *p++; + w |= (uint64_t)(*p++) << 8; + w |= (uint64_t)(*p++) << 16; + w |= (uint64_t)(*p++) << 24; + w |= (uint64_t)(*p++) << 32; + w |= (uint64_t)(*p++) << 40; + return w; +} + +static BLAKE2_INLINE void store48(void *dst, uint64_t w) { + uint8_t *p = (uint8_t *)dst; + *p++ = (uint8_t)w; + w >>= 8; + *p++ = (uint8_t)w; + w >>= 8; + *p++ = (uint8_t)w; + w >>= 8; + *p++ = (uint8_t)w; + w >>= 8; + *p++ = (uint8_t)w; + w >>= 8; + *p++ = (uint8_t)w; +} + +static BLAKE2_INLINE uint32_t rotr32(const uint32_t w, const unsigned c) { + return (w >> c) | (w << (32 - c)); +} + +static BLAKE2_INLINE uint64_t rotr64(const uint64_t w, const unsigned c) { + return (w >> c) | (w << (64 - c)); +} + +void clear_internal_memory(void *v, size_t n); + +#endif diff --git a/deps/phc-winner-argon2-20190702/src/blake2/blake2.h b/deps/phc-winner-argon2-20190702/src/blake2/blake2.h new file mode 100644 index 000000000..57276a776 --- /dev/null +++ b/deps/phc-winner-argon2-20190702/src/blake2/blake2.h @@ -0,0 +1,89 @@ +/* + * Argon2 reference source code package - reference C implementations + * + * Copyright 2015 + * Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves + * + * You may use this work under the terms of a Creative Commons CC0 1.0 + * License/Waiver or the Apache Public License 2.0, at your option. The terms of + * these licenses can be found at: + * + * - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0 + * - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0 + * + * You should have received a copy of both of these licenses along with this + * software. If not, they may be obtained at the above URLs. + */ + +#ifndef PORTABLE_BLAKE2_H +#define PORTABLE_BLAKE2_H + +#include + +#if defined(__cplusplus) +extern "C" { +#endif + +enum blake2b_constant { + BLAKE2B_BLOCKBYTES = 128, + BLAKE2B_OUTBYTES = 64, + BLAKE2B_KEYBYTES = 64, + BLAKE2B_SALTBYTES = 16, + BLAKE2B_PERSONALBYTES = 16 +}; + +#pragma pack(push, 1) +typedef struct __blake2b_param { + uint8_t digest_length; /* 1 */ + uint8_t key_length; /* 2 */ + uint8_t fanout; /* 3 */ + uint8_t depth; /* 4 */ + uint32_t leaf_length; /* 8 */ + uint64_t node_offset; /* 16 */ + uint8_t node_depth; /* 17 */ + uint8_t inner_length; /* 18 */ + uint8_t reserved[14]; /* 32 */ + uint8_t salt[BLAKE2B_SALTBYTES]; /* 48 */ + uint8_t personal[BLAKE2B_PERSONALBYTES]; /* 64 */ +} blake2b_param; +#pragma pack(pop) + +typedef struct __blake2b_state { + uint64_t h[8]; + uint64_t t[2]; + uint64_t f[2]; + uint8_t buf[BLAKE2B_BLOCKBYTES]; + unsigned buflen; + unsigned outlen; + uint8_t last_node; +} blake2b_state; + +/* Ensure param structs have not been wrongly padded */ +/* Poor man's static_assert */ +enum { + blake2_size_check_0 = 1 / !!(CHAR_BIT == 8), + blake2_size_check_2 = + 1 / !!(sizeof(blake2b_param) == sizeof(uint64_t) * CHAR_BIT) +}; + +/* Streaming API */ +ARGON2_LOCAL int blake2b_init(blake2b_state *S, size_t outlen); +ARGON2_LOCAL int blake2b_init_key(blake2b_state *S, size_t outlen, const void *key, + size_t keylen); +ARGON2_LOCAL int blake2b_init_param(blake2b_state *S, const blake2b_param *P); +ARGON2_LOCAL int blake2b_update(blake2b_state *S, const void *in, size_t inlen); +ARGON2_LOCAL int blake2b_final(blake2b_state *S, void *out, size_t outlen); + +/* Simple API */ +ARGON2_LOCAL int blake2b(void *out, size_t outlen, const void *in, size_t inlen, + const void *key, size_t keylen); + +/* Argon2 Team - Begin Code */ +ARGON2_LOCAL int blake2b_long(void *out, size_t outlen, const void *in, size_t inlen); +/* Argon2 Team - End Code */ + +#if defined(__cplusplus) +} +#endif + +#endif diff --git a/deps/phc-winner-argon2-20190702/src/blake2/blake2b.c b/deps/phc-winner-argon2-20190702/src/blake2/blake2b.c new file mode 100644 index 000000000..ca05df598 --- /dev/null +++ b/deps/phc-winner-argon2-20190702/src/blake2/blake2b.c @@ -0,0 +1,390 @@ +/* + * Argon2 reference source code package - reference C implementations + * + * Copyright 2015 + * Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves + * + * You may use this work under the terms of a Creative Commons CC0 1.0 + * License/Waiver or the Apache Public License 2.0, at your option. The terms of + * these licenses can be found at: + * + * - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0 + * - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0 + * + * You should have received a copy of both of these licenses along with this + * software. If not, they may be obtained at the above URLs. + */ + +#include +#include +#include + +#include "blake2.h" +#include "blake2-impl.h" + +static const uint64_t blake2b_IV[8] = { + UINT64_C(0x6a09e667f3bcc908), UINT64_C(0xbb67ae8584caa73b), + UINT64_C(0x3c6ef372fe94f82b), UINT64_C(0xa54ff53a5f1d36f1), + UINT64_C(0x510e527fade682d1), UINT64_C(0x9b05688c2b3e6c1f), + UINT64_C(0x1f83d9abfb41bd6b), UINT64_C(0x5be0cd19137e2179)}; + +static const unsigned int blake2b_sigma[12][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}, +}; + +static BLAKE2_INLINE void blake2b_set_lastnode(blake2b_state *S) { + S->f[1] = (uint64_t)-1; +} + +static BLAKE2_INLINE void blake2b_set_lastblock(blake2b_state *S) { + if (S->last_node) { + blake2b_set_lastnode(S); + } + S->f[0] = (uint64_t)-1; +} + +static BLAKE2_INLINE void blake2b_increment_counter(blake2b_state *S, + uint64_t inc) { + S->t[0] += inc; + S->t[1] += (S->t[0] < inc); +} + +static BLAKE2_INLINE void blake2b_invalidate_state(blake2b_state *S) { + clear_internal_memory(S, sizeof(*S)); /* wipe */ + blake2b_set_lastblock(S); /* invalidate for further use */ +} + +static BLAKE2_INLINE void blake2b_init0(blake2b_state *S) { + memset(S, 0, sizeof(*S)); + memcpy(S->h, blake2b_IV, sizeof(S->h)); +} + +int blake2b_init_param(blake2b_state *S, const blake2b_param *P) { + const unsigned char *p = (const unsigned char *)P; + unsigned int i; + + if (NULL == P || NULL == S) { + return -1; + } + + blake2b_init0(S); + /* IV XOR Parameter Block */ + for (i = 0; i < 8; ++i) { + S->h[i] ^= load64(&p[i * sizeof(S->h[i])]); + } + S->outlen = P->digest_length; + return 0; +} + +/* Sequential blake2b initialization */ +int blake2b_init(blake2b_state *S, size_t outlen) { + blake2b_param P; + + if (S == NULL) { + return -1; + } + + if ((outlen == 0) || (outlen > BLAKE2B_OUTBYTES)) { + blake2b_invalidate_state(S); + return -1; + } + + /* Setup Parameter Block for unkeyed BLAKE2 */ + P.digest_length = (uint8_t)outlen; + P.key_length = 0; + P.fanout = 1; + P.depth = 1; + P.leaf_length = 0; + P.node_offset = 0; + P.node_depth = 0; + P.inner_length = 0; + memset(P.reserved, 0, sizeof(P.reserved)); + memset(P.salt, 0, sizeof(P.salt)); + memset(P.personal, 0, sizeof(P.personal)); + + return blake2b_init_param(S, &P); +} + +int blake2b_init_key(blake2b_state *S, size_t outlen, const void *key, + size_t keylen) { + blake2b_param P; + + if (S == NULL) { + return -1; + } + + if ((outlen == 0) || (outlen > BLAKE2B_OUTBYTES)) { + blake2b_invalidate_state(S); + return -1; + } + + if ((key == 0) || (keylen == 0) || (keylen > BLAKE2B_KEYBYTES)) { + blake2b_invalidate_state(S); + return -1; + } + + /* Setup Parameter Block for keyed BLAKE2 */ + P.digest_length = (uint8_t)outlen; + P.key_length = (uint8_t)keylen; + P.fanout = 1; + P.depth = 1; + P.leaf_length = 0; + P.node_offset = 0; + P.node_depth = 0; + P.inner_length = 0; + memset(P.reserved, 0, sizeof(P.reserved)); + memset(P.salt, 0, sizeof(P.salt)); + memset(P.personal, 0, sizeof(P.personal)); + + if (blake2b_init_param(S, &P) < 0) { + blake2b_invalidate_state(S); + return -1; + } + + { + uint8_t block[BLAKE2B_BLOCKBYTES]; + memset(block, 0, BLAKE2B_BLOCKBYTES); + memcpy(block, key, keylen); + blake2b_update(S, block, BLAKE2B_BLOCKBYTES); + /* Burn the key from stack */ + clear_internal_memory(block, BLAKE2B_BLOCKBYTES); + } + return 0; +} + +static void blake2b_compress(blake2b_state *S, const uint8_t *block) { + uint64_t m[16]; + uint64_t v[16]; + unsigned int i, r; + + for (i = 0; i < 16; ++i) { + m[i] = load64(block + i * sizeof(m[i])); + } + + for (i = 0; i < 8; ++i) { + v[i] = S->h[i]; + } + + v[8] = blake2b_IV[0]; + v[9] = blake2b_IV[1]; + v[10] = blake2b_IV[2]; + v[11] = blake2b_IV[3]; + v[12] = blake2b_IV[4] ^ S->t[0]; + v[13] = blake2b_IV[5] ^ S->t[1]; + v[14] = blake2b_IV[6] ^ S->f[0]; + v[15] = blake2b_IV[7] ^ S->f[1]; + +#define G(r, i, a, b, c, d) \ + do { \ + a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \ + d = rotr64(d ^ a, 32); \ + c = c + d; \ + b = rotr64(b ^ c, 24); \ + a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \ + d = rotr64(d ^ a, 16); \ + c = c + d; \ + b = rotr64(b ^ c, 63); \ + } while ((void)0, 0) + +#define ROUND(r) \ + do { \ + G(r, 0, v[0], v[4], v[8], v[12]); \ + G(r, 1, v[1], v[5], v[9], v[13]); \ + G(r, 2, v[2], v[6], v[10], v[14]); \ + G(r, 3, v[3], v[7], v[11], v[15]); \ + G(r, 4, v[0], v[5], v[10], v[15]); \ + G(r, 5, v[1], v[6], v[11], v[12]); \ + G(r, 6, v[2], v[7], v[8], v[13]); \ + G(r, 7, v[3], v[4], v[9], v[14]); \ + } while ((void)0, 0) + + for (r = 0; r < 12; ++r) { + ROUND(r); + } + + for (i = 0; i < 8; ++i) { + S->h[i] = S->h[i] ^ v[i] ^ v[i + 8]; + } + +#undef G +#undef ROUND +} + +int blake2b_update(blake2b_state *S, const void *in, size_t inlen) { + const uint8_t *pin = (const uint8_t *)in; + + if (inlen == 0) { + return 0; + } + + /* Sanity check */ + if (S == NULL || in == NULL) { + return -1; + } + + /* Is this a reused state? */ + if (S->f[0] != 0) { + return -1; + } + + if (S->buflen + inlen > BLAKE2B_BLOCKBYTES) { + /* Complete current block */ + size_t left = S->buflen; + size_t fill = BLAKE2B_BLOCKBYTES - left; + memcpy(&S->buf[left], pin, fill); + blake2b_increment_counter(S, BLAKE2B_BLOCKBYTES); + blake2b_compress(S, S->buf); + S->buflen = 0; + inlen -= fill; + pin += fill; + /* Avoid buffer copies when possible */ + while (inlen > BLAKE2B_BLOCKBYTES) { + blake2b_increment_counter(S, BLAKE2B_BLOCKBYTES); + blake2b_compress(S, pin); + inlen -= BLAKE2B_BLOCKBYTES; + pin += BLAKE2B_BLOCKBYTES; + } + } + memcpy(&S->buf[S->buflen], pin, inlen); + S->buflen += (unsigned int)inlen; + return 0; +} + +int blake2b_final(blake2b_state *S, void *out, size_t outlen) { + uint8_t buffer[BLAKE2B_OUTBYTES] = {0}; + unsigned int i; + + /* Sanity checks */ + if (S == NULL || out == NULL || outlen < S->outlen) { + return -1; + } + + /* Is this a reused state? */ + if (S->f[0] != 0) { + return -1; + } + + blake2b_increment_counter(S, S->buflen); + blake2b_set_lastblock(S); + memset(&S->buf[S->buflen], 0, BLAKE2B_BLOCKBYTES - S->buflen); /* Padding */ + blake2b_compress(S, S->buf); + + for (i = 0; i < 8; ++i) { /* Output full hash to temp buffer */ + store64(buffer + sizeof(S->h[i]) * i, S->h[i]); + } + + memcpy(out, buffer, S->outlen); + clear_internal_memory(buffer, sizeof(buffer)); + clear_internal_memory(S->buf, sizeof(S->buf)); + clear_internal_memory(S->h, sizeof(S->h)); + return 0; +} + +int blake2b(void *out, size_t outlen, const void *in, size_t inlen, + const void *key, size_t keylen) { + blake2b_state S; + int ret = -1; + + /* Verify parameters */ + if (NULL == in && inlen > 0) { + goto fail; + } + + if (NULL == out || outlen == 0 || outlen > BLAKE2B_OUTBYTES) { + goto fail; + } + + if ((NULL == key && keylen > 0) || keylen > BLAKE2B_KEYBYTES) { + goto fail; + } + + if (keylen > 0) { + if (blake2b_init_key(&S, outlen, key, keylen) < 0) { + goto fail; + } + } else { + if (blake2b_init(&S, outlen) < 0) { + goto fail; + } + } + + if (blake2b_update(&S, in, inlen) < 0) { + goto fail; + } + ret = blake2b_final(&S, out, outlen); + +fail: + clear_internal_memory(&S, sizeof(S)); + return ret; +} + +/* Argon2 Team - Begin Code */ +int blake2b_long(void *pout, size_t outlen, const void *in, size_t inlen) { + uint8_t *out = (uint8_t *)pout; + blake2b_state blake_state; + uint8_t outlen_bytes[sizeof(uint32_t)] = {0}; + int ret = -1; + + if (outlen > UINT32_MAX) { + goto fail; + } + + /* Ensure little-endian byte order! */ + store32(outlen_bytes, (uint32_t)outlen); + +#define TRY(statement) \ + do { \ + ret = statement; \ + if (ret < 0) { \ + goto fail; \ + } \ + } while ((void)0, 0) + + if (outlen <= BLAKE2B_OUTBYTES) { + TRY(blake2b_init(&blake_state, outlen)); + TRY(blake2b_update(&blake_state, outlen_bytes, sizeof(outlen_bytes))); + TRY(blake2b_update(&blake_state, in, inlen)); + TRY(blake2b_final(&blake_state, out, outlen)); + } else { + uint32_t toproduce; + uint8_t out_buffer[BLAKE2B_OUTBYTES]; + uint8_t in_buffer[BLAKE2B_OUTBYTES]; + TRY(blake2b_init(&blake_state, BLAKE2B_OUTBYTES)); + TRY(blake2b_update(&blake_state, outlen_bytes, sizeof(outlen_bytes))); + TRY(blake2b_update(&blake_state, in, inlen)); + TRY(blake2b_final(&blake_state, out_buffer, BLAKE2B_OUTBYTES)); + memcpy(out, out_buffer, BLAKE2B_OUTBYTES / 2); + out += BLAKE2B_OUTBYTES / 2; + toproduce = (uint32_t)outlen - BLAKE2B_OUTBYTES / 2; + + while (toproduce > BLAKE2B_OUTBYTES) { + memcpy(in_buffer, out_buffer, BLAKE2B_OUTBYTES); + TRY(blake2b(out_buffer, BLAKE2B_OUTBYTES, in_buffer, + BLAKE2B_OUTBYTES, NULL, 0)); + memcpy(out, out_buffer, BLAKE2B_OUTBYTES / 2); + out += BLAKE2B_OUTBYTES / 2; + toproduce -= BLAKE2B_OUTBYTES / 2; + } + + memcpy(in_buffer, out_buffer, BLAKE2B_OUTBYTES); + TRY(blake2b(out_buffer, toproduce, in_buffer, BLAKE2B_OUTBYTES, NULL, + 0)); + memcpy(out, out_buffer, toproduce); + } +fail: + clear_internal_memory(&blake_state, sizeof(blake_state)); + return ret; +#undef TRY +} +/* Argon2 Team - End Code */ diff --git a/deps/phc-winner-argon2-20190702/src/blake2/blamka-round-opt.h b/deps/phc-winner-argon2-20190702/src/blake2/blamka-round-opt.h new file mode 100644 index 000000000..2c8942e31 --- /dev/null +++ b/deps/phc-winner-argon2-20190702/src/blake2/blamka-round-opt.h @@ -0,0 +1,471 @@ +/* + * Argon2 reference source code package - reference C implementations + * + * Copyright 2015 + * Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves + * + * You may use this work under the terms of a Creative Commons CC0 1.0 + * License/Waiver or the Apache Public License 2.0, at your option. The terms of + * these licenses can be found at: + * + * - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0 + * - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0 + * + * You should have received a copy of both of these licenses along with this + * software. If not, they may be obtained at the above URLs. + */ + +#ifndef BLAKE_ROUND_MKA_OPT_H +#define BLAKE_ROUND_MKA_OPT_H + +#include "blake2-impl.h" + +#include +#if defined(__SSSE3__) +#include /* for _mm_shuffle_epi8 and _mm_alignr_epi8 */ +#endif + +#if defined(__XOP__) && (defined(__GNUC__) || defined(__clang__)) +#include +#endif + +#if !defined(__AVX512F__) +#if !defined(__AVX2__) +#if !defined(__XOP__) +#if defined(__SSSE3__) +#define r16 \ + (_mm_setr_epi8(2, 3, 4, 5, 6, 7, 0, 1, 10, 11, 12, 13, 14, 15, 8, 9)) +#define r24 \ + (_mm_setr_epi8(3, 4, 5, 6, 7, 0, 1, 2, 11, 12, 13, 14, 15, 8, 9, 10)) +#define _mm_roti_epi64(x, c) \ + (-(c) == 32) \ + ? _mm_shuffle_epi32((x), _MM_SHUFFLE(2, 3, 0, 1)) \ + : (-(c) == 24) \ + ? _mm_shuffle_epi8((x), r24) \ + : (-(c) == 16) \ + ? _mm_shuffle_epi8((x), r16) \ + : (-(c) == 63) \ + ? _mm_xor_si128(_mm_srli_epi64((x), -(c)), \ + _mm_add_epi64((x), (x))) \ + : _mm_xor_si128(_mm_srli_epi64((x), -(c)), \ + _mm_slli_epi64((x), 64 - (-(c)))) +#else /* defined(__SSE2__) */ +#define _mm_roti_epi64(r, c) \ + _mm_xor_si128(_mm_srli_epi64((r), -(c)), _mm_slli_epi64((r), 64 - (-(c)))) +#endif +#else +#endif + +static BLAKE2_INLINE __m128i fBlaMka(__m128i x, __m128i y) { + const __m128i z = _mm_mul_epu32(x, y); + return _mm_add_epi64(_mm_add_epi64(x, y), _mm_add_epi64(z, z)); +} + +#define G1(A0, B0, C0, D0, A1, B1, C1, D1) \ + do { \ + A0 = fBlaMka(A0, B0); \ + A1 = fBlaMka(A1, B1); \ + \ + D0 = _mm_xor_si128(D0, A0); \ + D1 = _mm_xor_si128(D1, A1); \ + \ + D0 = _mm_roti_epi64(D0, -32); \ + D1 = _mm_roti_epi64(D1, -32); \ + \ + C0 = fBlaMka(C0, D0); \ + C1 = fBlaMka(C1, D1); \ + \ + B0 = _mm_xor_si128(B0, C0); \ + B1 = _mm_xor_si128(B1, C1); \ + \ + B0 = _mm_roti_epi64(B0, -24); \ + B1 = _mm_roti_epi64(B1, -24); \ + } while ((void)0, 0) + +#define G2(A0, B0, C0, D0, A1, B1, C1, D1) \ + do { \ + A0 = fBlaMka(A0, B0); \ + A1 = fBlaMka(A1, B1); \ + \ + D0 = _mm_xor_si128(D0, A0); \ + D1 = _mm_xor_si128(D1, A1); \ + \ + D0 = _mm_roti_epi64(D0, -16); \ + D1 = _mm_roti_epi64(D1, -16); \ + \ + C0 = fBlaMka(C0, D0); \ + C1 = fBlaMka(C1, D1); \ + \ + B0 = _mm_xor_si128(B0, C0); \ + B1 = _mm_xor_si128(B1, C1); \ + \ + B0 = _mm_roti_epi64(B0, -63); \ + B1 = _mm_roti_epi64(B1, -63); \ + } while ((void)0, 0) + +#if defined(__SSSE3__) +#define DIAGONALIZE(A0, B0, C0, D0, A1, B1, C1, D1) \ + do { \ + __m128i t0 = _mm_alignr_epi8(B1, B0, 8); \ + __m128i t1 = _mm_alignr_epi8(B0, B1, 8); \ + B0 = t0; \ + B1 = t1; \ + \ + t0 = C0; \ + C0 = C1; \ + C1 = t0; \ + \ + t0 = _mm_alignr_epi8(D1, D0, 8); \ + t1 = _mm_alignr_epi8(D0, D1, 8); \ + D0 = t1; \ + D1 = t0; \ + } while ((void)0, 0) + +#define UNDIAGONALIZE(A0, B0, C0, D0, A1, B1, C1, D1) \ + do { \ + __m128i t0 = _mm_alignr_epi8(B0, B1, 8); \ + __m128i t1 = _mm_alignr_epi8(B1, B0, 8); \ + B0 = t0; \ + B1 = t1; \ + \ + t0 = C0; \ + C0 = C1; \ + C1 = t0; \ + \ + t0 = _mm_alignr_epi8(D0, D1, 8); \ + t1 = _mm_alignr_epi8(D1, D0, 8); \ + D0 = t1; \ + D1 = t0; \ + } while ((void)0, 0) +#else /* SSE2 */ +#define DIAGONALIZE(A0, B0, C0, D0, A1, B1, C1, D1) \ + do { \ + __m128i t0 = D0; \ + __m128i t1 = B0; \ + D0 = C0; \ + C0 = C1; \ + C1 = D0; \ + D0 = _mm_unpackhi_epi64(D1, _mm_unpacklo_epi64(t0, t0)); \ + D1 = _mm_unpackhi_epi64(t0, _mm_unpacklo_epi64(D1, D1)); \ + B0 = _mm_unpackhi_epi64(B0, _mm_unpacklo_epi64(B1, B1)); \ + B1 = _mm_unpackhi_epi64(B1, _mm_unpacklo_epi64(t1, t1)); \ + } while ((void)0, 0) + +#define UNDIAGONALIZE(A0, B0, C0, D0, A1, B1, C1, D1) \ + do { \ + __m128i t0, t1; \ + t0 = C0; \ + C0 = C1; \ + C1 = t0; \ + t0 = B0; \ + t1 = D0; \ + B0 = _mm_unpackhi_epi64(B1, _mm_unpacklo_epi64(B0, B0)); \ + B1 = _mm_unpackhi_epi64(t0, _mm_unpacklo_epi64(B1, B1)); \ + D0 = _mm_unpackhi_epi64(D0, _mm_unpacklo_epi64(D1, D1)); \ + D1 = _mm_unpackhi_epi64(D1, _mm_unpacklo_epi64(t1, t1)); \ + } while ((void)0, 0) +#endif + +#define BLAKE2_ROUND(A0, A1, B0, B1, C0, C1, D0, D1) \ + do { \ + G1(A0, B0, C0, D0, A1, B1, C1, D1); \ + G2(A0, B0, C0, D0, A1, B1, C1, D1); \ + \ + DIAGONALIZE(A0, B0, C0, D0, A1, B1, C1, D1); \ + \ + G1(A0, B0, C0, D0, A1, B1, C1, D1); \ + G2(A0, B0, C0, D0, A1, B1, C1, D1); \ + \ + UNDIAGONALIZE(A0, B0, C0, D0, A1, B1, C1, D1); \ + } while ((void)0, 0) +#else /* __AVX2__ */ + +#include + +#define rotr32(x) _mm256_shuffle_epi32(x, _MM_SHUFFLE(2, 3, 0, 1)) +#define rotr24(x) _mm256_shuffle_epi8(x, _mm256_setr_epi8(3, 4, 5, 6, 7, 0, 1, 2, 11, 12, 13, 14, 15, 8, 9, 10, 3, 4, 5, 6, 7, 0, 1, 2, 11, 12, 13, 14, 15, 8, 9, 10)) +#define rotr16(x) _mm256_shuffle_epi8(x, _mm256_setr_epi8(2, 3, 4, 5, 6, 7, 0, 1, 10, 11, 12, 13, 14, 15, 8, 9, 2, 3, 4, 5, 6, 7, 0, 1, 10, 11, 12, 13, 14, 15, 8, 9)) +#define rotr63(x) _mm256_xor_si256(_mm256_srli_epi64((x), 63), _mm256_add_epi64((x), (x))) + +#define G1_AVX2(A0, A1, B0, B1, C0, C1, D0, D1) \ + do { \ + __m256i ml = _mm256_mul_epu32(A0, B0); \ + ml = _mm256_add_epi64(ml, ml); \ + A0 = _mm256_add_epi64(A0, _mm256_add_epi64(B0, ml)); \ + D0 = _mm256_xor_si256(D0, A0); \ + D0 = rotr32(D0); \ + \ + ml = _mm256_mul_epu32(C0, D0); \ + ml = _mm256_add_epi64(ml, ml); \ + C0 = _mm256_add_epi64(C0, _mm256_add_epi64(D0, ml)); \ + \ + B0 = _mm256_xor_si256(B0, C0); \ + B0 = rotr24(B0); \ + \ + ml = _mm256_mul_epu32(A1, B1); \ + ml = _mm256_add_epi64(ml, ml); \ + A1 = _mm256_add_epi64(A1, _mm256_add_epi64(B1, ml)); \ + D1 = _mm256_xor_si256(D1, A1); \ + D1 = rotr32(D1); \ + \ + ml = _mm256_mul_epu32(C1, D1); \ + ml = _mm256_add_epi64(ml, ml); \ + C1 = _mm256_add_epi64(C1, _mm256_add_epi64(D1, ml)); \ + \ + B1 = _mm256_xor_si256(B1, C1); \ + B1 = rotr24(B1); \ + } while((void)0, 0); + +#define G2_AVX2(A0, A1, B0, B1, C0, C1, D0, D1) \ + do { \ + __m256i ml = _mm256_mul_epu32(A0, B0); \ + ml = _mm256_add_epi64(ml, ml); \ + A0 = _mm256_add_epi64(A0, _mm256_add_epi64(B0, ml)); \ + D0 = _mm256_xor_si256(D0, A0); \ + D0 = rotr16(D0); \ + \ + ml = _mm256_mul_epu32(C0, D0); \ + ml = _mm256_add_epi64(ml, ml); \ + C0 = _mm256_add_epi64(C0, _mm256_add_epi64(D0, ml)); \ + B0 = _mm256_xor_si256(B0, C0); \ + B0 = rotr63(B0); \ + \ + ml = _mm256_mul_epu32(A1, B1); \ + ml = _mm256_add_epi64(ml, ml); \ + A1 = _mm256_add_epi64(A1, _mm256_add_epi64(B1, ml)); \ + D1 = _mm256_xor_si256(D1, A1); \ + D1 = rotr16(D1); \ + \ + ml = _mm256_mul_epu32(C1, D1); \ + ml = _mm256_add_epi64(ml, ml); \ + C1 = _mm256_add_epi64(C1, _mm256_add_epi64(D1, ml)); \ + B1 = _mm256_xor_si256(B1, C1); \ + B1 = rotr63(B1); \ + } while((void)0, 0); + +#define DIAGONALIZE_1(A0, B0, C0, D0, A1, B1, C1, D1) \ + do { \ + B0 = _mm256_permute4x64_epi64(B0, _MM_SHUFFLE(0, 3, 2, 1)); \ + C0 = _mm256_permute4x64_epi64(C0, _MM_SHUFFLE(1, 0, 3, 2)); \ + D0 = _mm256_permute4x64_epi64(D0, _MM_SHUFFLE(2, 1, 0, 3)); \ + \ + B1 = _mm256_permute4x64_epi64(B1, _MM_SHUFFLE(0, 3, 2, 1)); \ + C1 = _mm256_permute4x64_epi64(C1, _MM_SHUFFLE(1, 0, 3, 2)); \ + D1 = _mm256_permute4x64_epi64(D1, _MM_SHUFFLE(2, 1, 0, 3)); \ + } while((void)0, 0); + +#define DIAGONALIZE_2(A0, A1, B0, B1, C0, C1, D0, D1) \ + do { \ + __m256i tmp1 = _mm256_blend_epi32(B0, B1, 0xCC); \ + __m256i tmp2 = _mm256_blend_epi32(B0, B1, 0x33); \ + B1 = _mm256_permute4x64_epi64(tmp1, _MM_SHUFFLE(2,3,0,1)); \ + B0 = _mm256_permute4x64_epi64(tmp2, _MM_SHUFFLE(2,3,0,1)); \ + \ + tmp1 = C0; \ + C0 = C1; \ + C1 = tmp1; \ + \ + tmp1 = _mm256_blend_epi32(D0, D1, 0xCC); \ + tmp2 = _mm256_blend_epi32(D0, D1, 0x33); \ + D0 = _mm256_permute4x64_epi64(tmp1, _MM_SHUFFLE(2,3,0,1)); \ + D1 = _mm256_permute4x64_epi64(tmp2, _MM_SHUFFLE(2,3,0,1)); \ + } while(0); + +#define UNDIAGONALIZE_1(A0, B0, C0, D0, A1, B1, C1, D1) \ + do { \ + B0 = _mm256_permute4x64_epi64(B0, _MM_SHUFFLE(2, 1, 0, 3)); \ + C0 = _mm256_permute4x64_epi64(C0, _MM_SHUFFLE(1, 0, 3, 2)); \ + D0 = _mm256_permute4x64_epi64(D0, _MM_SHUFFLE(0, 3, 2, 1)); \ + \ + B1 = _mm256_permute4x64_epi64(B1, _MM_SHUFFLE(2, 1, 0, 3)); \ + C1 = _mm256_permute4x64_epi64(C1, _MM_SHUFFLE(1, 0, 3, 2)); \ + D1 = _mm256_permute4x64_epi64(D1, _MM_SHUFFLE(0, 3, 2, 1)); \ + } while((void)0, 0); + +#define UNDIAGONALIZE_2(A0, A1, B0, B1, C0, C1, D0, D1) \ + do { \ + __m256i tmp1 = _mm256_blend_epi32(B0, B1, 0xCC); \ + __m256i tmp2 = _mm256_blend_epi32(B0, B1, 0x33); \ + B0 = _mm256_permute4x64_epi64(tmp1, _MM_SHUFFLE(2,3,0,1)); \ + B1 = _mm256_permute4x64_epi64(tmp2, _MM_SHUFFLE(2,3,0,1)); \ + \ + tmp1 = C0; \ + C0 = C1; \ + C1 = tmp1; \ + \ + tmp1 = _mm256_blend_epi32(D0, D1, 0x33); \ + tmp2 = _mm256_blend_epi32(D0, D1, 0xCC); \ + D0 = _mm256_permute4x64_epi64(tmp1, _MM_SHUFFLE(2,3,0,1)); \ + D1 = _mm256_permute4x64_epi64(tmp2, _MM_SHUFFLE(2,3,0,1)); \ + } while((void)0, 0); + +#define BLAKE2_ROUND_1(A0, A1, B0, B1, C0, C1, D0, D1) \ + do{ \ + G1_AVX2(A0, A1, B0, B1, C0, C1, D0, D1) \ + G2_AVX2(A0, A1, B0, B1, C0, C1, D0, D1) \ + \ + DIAGONALIZE_1(A0, B0, C0, D0, A1, B1, C1, D1) \ + \ + G1_AVX2(A0, A1, B0, B1, C0, C1, D0, D1) \ + G2_AVX2(A0, A1, B0, B1, C0, C1, D0, D1) \ + \ + UNDIAGONALIZE_1(A0, B0, C0, D0, A1, B1, C1, D1) \ + } while((void)0, 0); + +#define BLAKE2_ROUND_2(A0, A1, B0, B1, C0, C1, D0, D1) \ + do{ \ + G1_AVX2(A0, A1, B0, B1, C0, C1, D0, D1) \ + G2_AVX2(A0, A1, B0, B1, C0, C1, D0, D1) \ + \ + DIAGONALIZE_2(A0, A1, B0, B1, C0, C1, D0, D1) \ + \ + G1_AVX2(A0, A1, B0, B1, C0, C1, D0, D1) \ + G2_AVX2(A0, A1, B0, B1, C0, C1, D0, D1) \ + \ + UNDIAGONALIZE_2(A0, A1, B0, B1, C0, C1, D0, D1) \ + } while((void)0, 0); + +#endif /* __AVX2__ */ + +#else /* __AVX512F__ */ + +#include + +#define ror64(x, n) _mm512_ror_epi64((x), (n)) + +static __m512i muladd(__m512i x, __m512i y) +{ + __m512i z = _mm512_mul_epu32(x, y); + return _mm512_add_epi64(_mm512_add_epi64(x, y), _mm512_add_epi64(z, z)); +} + +#define G1(A0, B0, C0, D0, A1, B1, C1, D1) \ + do { \ + A0 = muladd(A0, B0); \ + A1 = muladd(A1, B1); \ +\ + D0 = _mm512_xor_si512(D0, A0); \ + D1 = _mm512_xor_si512(D1, A1); \ +\ + D0 = ror64(D0, 32); \ + D1 = ror64(D1, 32); \ +\ + C0 = muladd(C0, D0); \ + C1 = muladd(C1, D1); \ +\ + B0 = _mm512_xor_si512(B0, C0); \ + B1 = _mm512_xor_si512(B1, C1); \ +\ + B0 = ror64(B0, 24); \ + B1 = ror64(B1, 24); \ + } while ((void)0, 0) + +#define G2(A0, B0, C0, D0, A1, B1, C1, D1) \ + do { \ + A0 = muladd(A0, B0); \ + A1 = muladd(A1, B1); \ +\ + D0 = _mm512_xor_si512(D0, A0); \ + D1 = _mm512_xor_si512(D1, A1); \ +\ + D0 = ror64(D0, 16); \ + D1 = ror64(D1, 16); \ +\ + C0 = muladd(C0, D0); \ + C1 = muladd(C1, D1); \ +\ + B0 = _mm512_xor_si512(B0, C0); \ + B1 = _mm512_xor_si512(B1, C1); \ +\ + B0 = ror64(B0, 63); \ + B1 = ror64(B1, 63); \ + } while ((void)0, 0) + +#define DIAGONALIZE(A0, B0, C0, D0, A1, B1, C1, D1) \ + do { \ + B0 = _mm512_permutex_epi64(B0, _MM_SHUFFLE(0, 3, 2, 1)); \ + B1 = _mm512_permutex_epi64(B1, _MM_SHUFFLE(0, 3, 2, 1)); \ +\ + C0 = _mm512_permutex_epi64(C0, _MM_SHUFFLE(1, 0, 3, 2)); \ + C1 = _mm512_permutex_epi64(C1, _MM_SHUFFLE(1, 0, 3, 2)); \ +\ + D0 = _mm512_permutex_epi64(D0, _MM_SHUFFLE(2, 1, 0, 3)); \ + D1 = _mm512_permutex_epi64(D1, _MM_SHUFFLE(2, 1, 0, 3)); \ + } while ((void)0, 0) + +#define UNDIAGONALIZE(A0, B0, C0, D0, A1, B1, C1, D1) \ + do { \ + B0 = _mm512_permutex_epi64(B0, _MM_SHUFFLE(2, 1, 0, 3)); \ + B1 = _mm512_permutex_epi64(B1, _MM_SHUFFLE(2, 1, 0, 3)); \ +\ + C0 = _mm512_permutex_epi64(C0, _MM_SHUFFLE(1, 0, 3, 2)); \ + C1 = _mm512_permutex_epi64(C1, _MM_SHUFFLE(1, 0, 3, 2)); \ +\ + D0 = _mm512_permutex_epi64(D0, _MM_SHUFFLE(0, 3, 2, 1)); \ + D1 = _mm512_permutex_epi64(D1, _MM_SHUFFLE(0, 3, 2, 1)); \ + } while ((void)0, 0) + +#define BLAKE2_ROUND(A0, B0, C0, D0, A1, B1, C1, D1) \ + do { \ + G1(A0, B0, C0, D0, A1, B1, C1, D1); \ + G2(A0, B0, C0, D0, A1, B1, C1, D1); \ +\ + DIAGONALIZE(A0, B0, C0, D0, A1, B1, C1, D1); \ +\ + G1(A0, B0, C0, D0, A1, B1, C1, D1); \ + G2(A0, B0, C0, D0, A1, B1, C1, D1); \ +\ + UNDIAGONALIZE(A0, B0, C0, D0, A1, B1, C1, D1); \ + } while ((void)0, 0) + +#define SWAP_HALVES(A0, A1) \ + do { \ + __m512i t0, t1; \ + t0 = _mm512_shuffle_i64x2(A0, A1, _MM_SHUFFLE(1, 0, 1, 0)); \ + t1 = _mm512_shuffle_i64x2(A0, A1, _MM_SHUFFLE(3, 2, 3, 2)); \ + A0 = t0; \ + A1 = t1; \ + } while((void)0, 0) + +#define SWAP_QUARTERS(A0, A1) \ + do { \ + SWAP_HALVES(A0, A1); \ + A0 = _mm512_permutexvar_epi64(_mm512_setr_epi64(0, 1, 4, 5, 2, 3, 6, 7), A0); \ + A1 = _mm512_permutexvar_epi64(_mm512_setr_epi64(0, 1, 4, 5, 2, 3, 6, 7), A1); \ + } while((void)0, 0) + +#define UNSWAP_QUARTERS(A0, A1) \ + do { \ + A0 = _mm512_permutexvar_epi64(_mm512_setr_epi64(0, 1, 4, 5, 2, 3, 6, 7), A0); \ + A1 = _mm512_permutexvar_epi64(_mm512_setr_epi64(0, 1, 4, 5, 2, 3, 6, 7), A1); \ + SWAP_HALVES(A0, A1); \ + } while((void)0, 0) + +#define BLAKE2_ROUND_1(A0, C0, B0, D0, A1, C1, B1, D1) \ + do { \ + SWAP_HALVES(A0, B0); \ + SWAP_HALVES(C0, D0); \ + SWAP_HALVES(A1, B1); \ + SWAP_HALVES(C1, D1); \ + BLAKE2_ROUND(A0, B0, C0, D0, A1, B1, C1, D1); \ + SWAP_HALVES(A0, B0); \ + SWAP_HALVES(C0, D0); \ + SWAP_HALVES(A1, B1); \ + SWAP_HALVES(C1, D1); \ + } while ((void)0, 0) + +#define BLAKE2_ROUND_2(A0, A1, B0, B1, C0, C1, D0, D1) \ + do { \ + SWAP_QUARTERS(A0, A1); \ + SWAP_QUARTERS(B0, B1); \ + SWAP_QUARTERS(C0, C1); \ + SWAP_QUARTERS(D0, D1); \ + BLAKE2_ROUND(A0, B0, C0, D0, A1, B1, C1, D1); \ + UNSWAP_QUARTERS(A0, A1); \ + UNSWAP_QUARTERS(B0, B1); \ + UNSWAP_QUARTERS(C0, C1); \ + UNSWAP_QUARTERS(D0, D1); \ + } while ((void)0, 0) + +#endif /* __AVX512F__ */ +#endif /* BLAKE_ROUND_MKA_OPT_H */ diff --git a/deps/phc-winner-argon2-20190702/src/blake2/blamka-round-ref.h b/deps/phc-winner-argon2-20190702/src/blake2/blamka-round-ref.h new file mode 100644 index 000000000..b8f2cf471 --- /dev/null +++ b/deps/phc-winner-argon2-20190702/src/blake2/blamka-round-ref.h @@ -0,0 +1,56 @@ +/* + * Argon2 reference source code package - reference C implementations + * + * Copyright 2015 + * Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves + * + * You may use this work under the terms of a Creative Commons CC0 1.0 + * License/Waiver or the Apache Public License 2.0, at your option. The terms of + * these licenses can be found at: + * + * - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0 + * - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0 + * + * You should have received a copy of both of these licenses along with this + * software. If not, they may be obtained at the above URLs. + */ + +#ifndef BLAKE_ROUND_MKA_H +#define BLAKE_ROUND_MKA_H + +#include "blake2.h" +#include "blake2-impl.h" + +/* designed by the Lyra PHC team */ +static BLAKE2_INLINE uint64_t fBlaMka(uint64_t x, uint64_t y) { + const uint64_t m = UINT64_C(0xFFFFFFFF); + const uint64_t xy = (x & m) * (y & m); + return x + y + 2 * xy; +} + +#define G(a, b, c, d) \ + do { \ + a = fBlaMka(a, b); \ + d = rotr64(d ^ a, 32); \ + c = fBlaMka(c, d); \ + b = rotr64(b ^ c, 24); \ + a = fBlaMka(a, b); \ + d = rotr64(d ^ a, 16); \ + c = fBlaMka(c, d); \ + b = rotr64(b ^ c, 63); \ + } while ((void)0, 0) + +#define BLAKE2_ROUND_NOMSG(v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, \ + v12, v13, v14, v15) \ + do { \ + G(v0, v4, v8, v12); \ + G(v1, v5, v9, v13); \ + G(v2, v6, v10, v14); \ + G(v3, v7, v11, v15); \ + G(v0, v5, v10, v15); \ + G(v1, v6, v11, v12); \ + G(v2, v7, v8, v13); \ + G(v3, v4, v9, v14); \ + } while ((void)0, 0) + +#endif diff --git a/deps/phc-winner-argon2-20190702/src/core.c b/deps/phc-winner-argon2-20190702/src/core.c new file mode 100644 index 000000000..65f053769 --- /dev/null +++ b/deps/phc-winner-argon2-20190702/src/core.c @@ -0,0 +1,648 @@ +/* + * Argon2 reference source code package - reference C implementations + * + * Copyright 2015 + * Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves + * + * You may use this work under the terms of a Creative Commons CC0 1.0 + * License/Waiver or the Apache Public License 2.0, at your option. The terms of + * these licenses can be found at: + * + * - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0 + * - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0 + * + * You should have received a copy of both of these licenses along with this + * software. If not, they may be obtained at the above URLs. + */ + +/*For memory wiping*/ +#ifdef _MSC_VER +#include +#include /* For SecureZeroMemory */ +#endif +#if defined __STDC_LIB_EXT1__ +#define __STDC_WANT_LIB_EXT1__ 1 +#endif +#define VC_GE_2005(version) (version >= 1400) + +/* for explicit_bzero() on glibc */ +#define _DEFAULT_SOURCE + +#include +#include +#include + +#include "core.h" +#include "thread.h" +#include "blake2/blake2.h" +#include "blake2/blake2-impl.h" + +#ifdef GENKAT +#include "genkat.h" +#endif + +#if defined(__clang__) +#if __has_attribute(optnone) +#define NOT_OPTIMIZED __attribute__((optnone)) +#endif +#elif defined(__GNUC__) +#define GCC_VERSION \ + (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) +#if GCC_VERSION >= 40400 +#define NOT_OPTIMIZED __attribute__((optimize("O0"))) +#endif +#endif +#ifndef NOT_OPTIMIZED +#define NOT_OPTIMIZED +#endif + +/***************Instance and Position constructors**********/ +void init_block_value(block *b, uint8_t in) { memset(b->v, in, sizeof(b->v)); } + +void copy_block(block *dst, const block *src) { + memcpy(dst->v, src->v, sizeof(uint64_t) * ARGON2_QWORDS_IN_BLOCK); +} + +void xor_block(block *dst, const block *src) { + int i; + for (i = 0; i < ARGON2_QWORDS_IN_BLOCK; ++i) { + dst->v[i] ^= src->v[i]; + } +} + +static void load_block(block *dst, const void *input) { + unsigned i; + for (i = 0; i < ARGON2_QWORDS_IN_BLOCK; ++i) { + dst->v[i] = load64((const uint8_t *)input + i * sizeof(dst->v[i])); + } +} + +static void store_block(void *output, const block *src) { + unsigned i; + for (i = 0; i < ARGON2_QWORDS_IN_BLOCK; ++i) { + store64((uint8_t *)output + i * sizeof(src->v[i]), src->v[i]); + } +} + +/***************Memory functions*****************/ + +int allocate_memory(const argon2_context *context, uint8_t **memory, + size_t num, size_t size) { + size_t memory_size = num*size; + if (memory == NULL) { + return ARGON2_MEMORY_ALLOCATION_ERROR; + } + + /* 1. Check for multiplication overflow */ + if (size != 0 && memory_size / size != num) { + return ARGON2_MEMORY_ALLOCATION_ERROR; + } + + /* 2. Try to allocate with appropriate allocator */ + if (context->allocate_cbk) { + (context->allocate_cbk)(memory, memory_size); + } else { + *memory = malloc(memory_size); + } + + if (*memory == NULL) { + return ARGON2_MEMORY_ALLOCATION_ERROR; + } + + return ARGON2_OK; +} + +void free_memory(const argon2_context *context, uint8_t *memory, + size_t num, size_t size) { + size_t memory_size = num*size; + clear_internal_memory(memory, memory_size); + if (context->free_cbk) { + (context->free_cbk)(memory, memory_size); + } else { + free(memory); + } +} + +#if defined(__OpenBSD__) +#define HAVE_EXPLICIT_BZERO 1 +#elif defined(__GLIBC__) && defined(__GLIBC_PREREQ) +#if __GLIBC_PREREQ(2,25) +#define HAVE_EXPLICIT_BZERO 1 +#endif +#endif + +void NOT_OPTIMIZED secure_wipe_memory(void *v, size_t n) { +#if defined(_MSC_VER) && VC_GE_2005(_MSC_VER) + SecureZeroMemory(v, n); +#elif defined memset_s + memset_s(v, n, 0, n); +#elif defined(HAVE_EXPLICIT_BZERO) + explicit_bzero(v, n); +#else + static void *(*const volatile memset_sec)(void *, int, size_t) = &memset; + memset_sec(v, 0, n); +#endif +} + +/* Memory clear flag defaults to true. */ +int FLAG_clear_internal_memory = 1; +void clear_internal_memory(void *v, size_t n) { + if (FLAG_clear_internal_memory && v) { + secure_wipe_memory(v, n); + } +} + +void finalize(const argon2_context *context, argon2_instance_t *instance) { + if (context != NULL && instance != NULL) { + block blockhash; + uint32_t l; + + copy_block(&blockhash, instance->memory + instance->lane_length - 1); + + /* XOR the last blocks */ + for (l = 1; l < instance->lanes; ++l) { + uint32_t last_block_in_lane = + l * instance->lane_length + (instance->lane_length - 1); + xor_block(&blockhash, instance->memory + last_block_in_lane); + } + + /* Hash the result */ + { + uint8_t blockhash_bytes[ARGON2_BLOCK_SIZE]; + store_block(blockhash_bytes, &blockhash); + blake2b_long(context->out, context->outlen, blockhash_bytes, + ARGON2_BLOCK_SIZE); + /* clear blockhash and blockhash_bytes */ + clear_internal_memory(blockhash.v, ARGON2_BLOCK_SIZE); + clear_internal_memory(blockhash_bytes, ARGON2_BLOCK_SIZE); + } + +#ifdef GENKAT + print_tag(context->out, context->outlen); +#endif + + free_memory(context, (uint8_t *)instance->memory, + instance->memory_blocks, sizeof(block)); + } +} + +uint32_t index_alpha(const argon2_instance_t *instance, + const argon2_position_t *position, uint32_t pseudo_rand, + int same_lane) { + /* + * Pass 0: + * This lane : all already finished segments plus already constructed + * blocks in this segment + * Other lanes : all already finished segments + * Pass 1+: + * This lane : (SYNC_POINTS - 1) last segments plus already constructed + * blocks in this segment + * Other lanes : (SYNC_POINTS - 1) last segments + */ + uint32_t reference_area_size; + uint64_t relative_position; + uint32_t start_position, absolute_position; + + if (0 == position->pass) { + /* First pass */ + if (0 == position->slice) { + /* First slice */ + reference_area_size = + position->index - 1; /* all but the previous */ + } else { + if (same_lane) { + /* The same lane => add current segment */ + reference_area_size = + position->slice * instance->segment_length + + position->index - 1; + } else { + reference_area_size = + position->slice * instance->segment_length + + ((position->index == 0) ? (-1) : 0); + } + } + } else { + /* Second pass */ + if (same_lane) { + reference_area_size = instance->lane_length - + instance->segment_length + position->index - + 1; + } else { + reference_area_size = instance->lane_length - + instance->segment_length + + ((position->index == 0) ? (-1) : 0); + } + } + + /* 1.2.4. Mapping pseudo_rand to 0.. and produce + * relative position */ + relative_position = pseudo_rand; + relative_position = relative_position * relative_position >> 32; + relative_position = reference_area_size - 1 - + (reference_area_size * relative_position >> 32); + + /* 1.2.5 Computing starting position */ + start_position = 0; + + if (0 != position->pass) { + start_position = (position->slice == ARGON2_SYNC_POINTS - 1) + ? 0 + : (position->slice + 1) * instance->segment_length; + } + + /* 1.2.6. Computing absolute position */ + absolute_position = (start_position + relative_position) % + instance->lane_length; /* absolute position */ + return absolute_position; +} + +/* Single-threaded version for p=1 case */ +static int fill_memory_blocks_st(argon2_instance_t *instance) { + uint32_t r, s, l; + + for (r = 0; r < instance->passes; ++r) { + for (s = 0; s < ARGON2_SYNC_POINTS; ++s) { + for (l = 0; l < instance->lanes; ++l) { + argon2_position_t position = {r, l, (uint8_t)s, 0}; + fill_segment(instance, position); + } + } +#ifdef GENKAT + internal_kat(instance, r); /* Print all memory blocks */ +#endif + } + return ARGON2_OK; +} + +#if !defined(ARGON2_NO_THREADS) + +#ifdef _WIN32 +static unsigned __stdcall fill_segment_thr(void *thread_data) +#else +static void *fill_segment_thr(void *thread_data) +#endif +{ + argon2_thread_data *my_data = thread_data; + fill_segment(my_data->instance_ptr, my_data->pos); + argon2_thread_exit(); + return 0; +} + +/* Multi-threaded version for p > 1 case */ +static int fill_memory_blocks_mt(argon2_instance_t *instance) { + uint32_t r, s; + argon2_thread_handle_t *thread = NULL; + argon2_thread_data *thr_data = NULL; + int rc = ARGON2_OK; + + /* 1. Allocating space for threads */ + thread = calloc(instance->lanes, sizeof(argon2_thread_handle_t)); + if (thread == NULL) { + rc = ARGON2_MEMORY_ALLOCATION_ERROR; + goto fail; + } + + thr_data = calloc(instance->lanes, sizeof(argon2_thread_data)); + if (thr_data == NULL) { + rc = ARGON2_MEMORY_ALLOCATION_ERROR; + goto fail; + } + + for (r = 0; r < instance->passes; ++r) { + for (s = 0; s < ARGON2_SYNC_POINTS; ++s) { + uint32_t l, ll; + + /* 2. Calling threads */ + for (l = 0; l < instance->lanes; ++l) { + argon2_position_t position; + + /* 2.1 Join a thread if limit is exceeded */ + if (l >= instance->threads) { + if (argon2_thread_join(thread[l - instance->threads])) { + rc = ARGON2_THREAD_FAIL; + goto fail; + } + } + + /* 2.2 Create thread */ + position.pass = r; + position.lane = l; + position.slice = (uint8_t)s; + position.index = 0; + thr_data[l].instance_ptr = + instance; /* preparing the thread input */ + memcpy(&(thr_data[l].pos), &position, + sizeof(argon2_position_t)); + if (argon2_thread_create(&thread[l], &fill_segment_thr, + (void *)&thr_data[l])) { + /* Wait for already running threads */ + for (ll = 0; ll < l; ++ll) + argon2_thread_join(thread[ll]); + rc = ARGON2_THREAD_FAIL; + goto fail; + } + + /* fill_segment(instance, position); */ + /*Non-thread equivalent of the lines above */ + } + + /* 3. Joining remaining threads */ + for (l = instance->lanes - instance->threads; l < instance->lanes; + ++l) { + if (argon2_thread_join(thread[l])) { + rc = ARGON2_THREAD_FAIL; + goto fail; + } + } + } + +#ifdef GENKAT + internal_kat(instance, r); /* Print all memory blocks */ +#endif + } + +fail: + if (thread != NULL) { + free(thread); + } + if (thr_data != NULL) { + free(thr_data); + } + return rc; +} + +#endif /* ARGON2_NO_THREADS */ + +int fill_memory_blocks(argon2_instance_t *instance) { + if (instance == NULL || instance->lanes == 0) { + return ARGON2_INCORRECT_PARAMETER; + } +#if defined(ARGON2_NO_THREADS) + return fill_memory_blocks_st(instance); +#else + return instance->threads == 1 ? + fill_memory_blocks_st(instance) : fill_memory_blocks_mt(instance); +#endif +} + +int validate_inputs(const argon2_context *context) { + if (NULL == context) { + return ARGON2_INCORRECT_PARAMETER; + } + + if (NULL == context->out) { + return ARGON2_OUTPUT_PTR_NULL; + } + + /* Validate output length */ + if (ARGON2_MIN_OUTLEN > context->outlen) { + return ARGON2_OUTPUT_TOO_SHORT; + } + + if (ARGON2_MAX_OUTLEN < context->outlen) { + return ARGON2_OUTPUT_TOO_LONG; + } + + /* Validate password (required param) */ + if (NULL == context->pwd) { + if (0 != context->pwdlen) { + return ARGON2_PWD_PTR_MISMATCH; + } + } + + if (ARGON2_MIN_PWD_LENGTH > context->pwdlen) { + return ARGON2_PWD_TOO_SHORT; + } + + if (ARGON2_MAX_PWD_LENGTH < context->pwdlen) { + return ARGON2_PWD_TOO_LONG; + } + + /* Validate salt (required param) */ + if (NULL == context->salt) { + if (0 != context->saltlen) { + return ARGON2_SALT_PTR_MISMATCH; + } + } + + if (ARGON2_MIN_SALT_LENGTH > context->saltlen) { + return ARGON2_SALT_TOO_SHORT; + } + + if (ARGON2_MAX_SALT_LENGTH < context->saltlen) { + return ARGON2_SALT_TOO_LONG; + } + + /* Validate secret (optional param) */ + if (NULL == context->secret) { + if (0 != context->secretlen) { + return ARGON2_SECRET_PTR_MISMATCH; + } + } else { + if (ARGON2_MIN_SECRET > context->secretlen) { + return ARGON2_SECRET_TOO_SHORT; + } + if (ARGON2_MAX_SECRET < context->secretlen) { + return ARGON2_SECRET_TOO_LONG; + } + } + + /* Validate associated data (optional param) */ + if (NULL == context->ad) { + if (0 != context->adlen) { + return ARGON2_AD_PTR_MISMATCH; + } + } else { + if (ARGON2_MIN_AD_LENGTH > context->adlen) { + return ARGON2_AD_TOO_SHORT; + } + if (ARGON2_MAX_AD_LENGTH < context->adlen) { + return ARGON2_AD_TOO_LONG; + } + } + + /* Validate memory cost */ + if (ARGON2_MIN_MEMORY > context->m_cost) { + return ARGON2_MEMORY_TOO_LITTLE; + } + + if (ARGON2_MAX_MEMORY < context->m_cost) { + return ARGON2_MEMORY_TOO_MUCH; + } + + if (context->m_cost < 8 * context->lanes) { + return ARGON2_MEMORY_TOO_LITTLE; + } + + /* Validate time cost */ + if (ARGON2_MIN_TIME > context->t_cost) { + return ARGON2_TIME_TOO_SMALL; + } + + if (ARGON2_MAX_TIME < context->t_cost) { + return ARGON2_TIME_TOO_LARGE; + } + + /* Validate lanes */ + if (ARGON2_MIN_LANES > context->lanes) { + return ARGON2_LANES_TOO_FEW; + } + + if (ARGON2_MAX_LANES < context->lanes) { + return ARGON2_LANES_TOO_MANY; + } + + /* Validate threads */ + if (ARGON2_MIN_THREADS > context->threads) { + return ARGON2_THREADS_TOO_FEW; + } + + if (ARGON2_MAX_THREADS < context->threads) { + return ARGON2_THREADS_TOO_MANY; + } + + if (NULL != context->allocate_cbk && NULL == context->free_cbk) { + return ARGON2_FREE_MEMORY_CBK_NULL; + } + + if (NULL == context->allocate_cbk && NULL != context->free_cbk) { + return ARGON2_ALLOCATE_MEMORY_CBK_NULL; + } + + return ARGON2_OK; +} + +void fill_first_blocks(uint8_t *blockhash, const argon2_instance_t *instance) { + uint32_t l; + /* Make the first and second block in each lane as G(H0||0||i) or + G(H0||1||i) */ + uint8_t blockhash_bytes[ARGON2_BLOCK_SIZE]; + for (l = 0; l < instance->lanes; ++l) { + + store32(blockhash + ARGON2_PREHASH_DIGEST_LENGTH, 0); + store32(blockhash + ARGON2_PREHASH_DIGEST_LENGTH + 4, l); + blake2b_long(blockhash_bytes, ARGON2_BLOCK_SIZE, blockhash, + ARGON2_PREHASH_SEED_LENGTH); + load_block(&instance->memory[l * instance->lane_length + 0], + blockhash_bytes); + + store32(blockhash + ARGON2_PREHASH_DIGEST_LENGTH, 1); + blake2b_long(blockhash_bytes, ARGON2_BLOCK_SIZE, blockhash, + ARGON2_PREHASH_SEED_LENGTH); + load_block(&instance->memory[l * instance->lane_length + 1], + blockhash_bytes); + } + clear_internal_memory(blockhash_bytes, ARGON2_BLOCK_SIZE); +} + +void initial_hash(uint8_t *blockhash, argon2_context *context, + argon2_type type) { + blake2b_state BlakeHash; + uint8_t value[sizeof(uint32_t)]; + + if (NULL == context || NULL == blockhash) { + return; + } + + blake2b_init(&BlakeHash, ARGON2_PREHASH_DIGEST_LENGTH); + + store32(&value, context->lanes); + blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value)); + + store32(&value, context->outlen); + blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value)); + + store32(&value, context->m_cost); + blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value)); + + store32(&value, context->t_cost); + blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value)); + + store32(&value, context->version); + blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value)); + + store32(&value, (uint32_t)type); + blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value)); + + store32(&value, context->pwdlen); + blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value)); + + if (context->pwd != NULL) { + blake2b_update(&BlakeHash, (const uint8_t *)context->pwd, + context->pwdlen); + + if (context->flags & ARGON2_FLAG_CLEAR_PASSWORD) { + secure_wipe_memory(context->pwd, context->pwdlen); + context->pwdlen = 0; + } + } + + store32(&value, context->saltlen); + blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value)); + + if (context->salt != NULL) { + blake2b_update(&BlakeHash, (const uint8_t *)context->salt, + context->saltlen); + } + + store32(&value, context->secretlen); + blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value)); + + if (context->secret != NULL) { + blake2b_update(&BlakeHash, (const uint8_t *)context->secret, + context->secretlen); + + if (context->flags & ARGON2_FLAG_CLEAR_SECRET) { + secure_wipe_memory(context->secret, context->secretlen); + context->secretlen = 0; + } + } + + store32(&value, context->adlen); + blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value)); + + if (context->ad != NULL) { + blake2b_update(&BlakeHash, (const uint8_t *)context->ad, + context->adlen); + } + + blake2b_final(&BlakeHash, blockhash, ARGON2_PREHASH_DIGEST_LENGTH); +} + +int initialize(argon2_instance_t *instance, argon2_context *context) { + uint8_t blockhash[ARGON2_PREHASH_SEED_LENGTH]; + int result = ARGON2_OK; + + if (instance == NULL || context == NULL) + return ARGON2_INCORRECT_PARAMETER; + instance->context_ptr = context; + + /* 1. Memory allocation */ + result = allocate_memory(context, (uint8_t **)&(instance->memory), + instance->memory_blocks, sizeof(block)); + if (result != ARGON2_OK) { + return result; + } + + /* 2. Initial hashing */ + /* H_0 + 8 extra bytes to produce the first blocks */ + /* uint8_t blockhash[ARGON2_PREHASH_SEED_LENGTH]; */ + /* Hashing all inputs */ + initial_hash(blockhash, context, instance->type); + /* Zeroing 8 extra bytes */ + clear_internal_memory(blockhash + ARGON2_PREHASH_DIGEST_LENGTH, + ARGON2_PREHASH_SEED_LENGTH - + ARGON2_PREHASH_DIGEST_LENGTH); + +#ifdef GENKAT + initial_kat(blockhash, context, instance->type); +#endif + + /* 3. Creating first blocks, we always have at least two blocks in a slice + */ + fill_first_blocks(blockhash, instance); + /* Clearing the hash */ + clear_internal_memory(blockhash, ARGON2_PREHASH_SEED_LENGTH); + + return ARGON2_OK; +} diff --git a/deps/phc-winner-argon2-20190702/src/core.h b/deps/phc-winner-argon2-20190702/src/core.h new file mode 100644 index 000000000..78000ba9e --- /dev/null +++ b/deps/phc-winner-argon2-20190702/src/core.h @@ -0,0 +1,228 @@ +/* + * Argon2 reference source code package - reference C implementations + * + * Copyright 2015 + * Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves + * + * You may use this work under the terms of a Creative Commons CC0 1.0 + * License/Waiver or the Apache Public License 2.0, at your option. The terms of + * these licenses can be found at: + * + * - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0 + * - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0 + * + * You should have received a copy of both of these licenses along with this + * software. If not, they may be obtained at the above URLs. + */ + +#ifndef ARGON2_CORE_H +#define ARGON2_CORE_H + +#include "argon2.h" + +#define CONST_CAST(x) (x)(uintptr_t) + +/**********************Argon2 internal constants*******************************/ + +enum argon2_core_constants { + /* Memory block size in bytes */ + ARGON2_BLOCK_SIZE = 1024, + ARGON2_QWORDS_IN_BLOCK = ARGON2_BLOCK_SIZE / 8, + ARGON2_OWORDS_IN_BLOCK = ARGON2_BLOCK_SIZE / 16, + ARGON2_HWORDS_IN_BLOCK = ARGON2_BLOCK_SIZE / 32, + ARGON2_512BIT_WORDS_IN_BLOCK = ARGON2_BLOCK_SIZE / 64, + + /* Number of pseudo-random values generated by one call to Blake in Argon2i + to + generate reference block positions */ + ARGON2_ADDRESSES_IN_BLOCK = 128, + + /* Pre-hashing digest length and its extension*/ + ARGON2_PREHASH_DIGEST_LENGTH = 64, + ARGON2_PREHASH_SEED_LENGTH = 72 +}; + +/*************************Argon2 internal data types***********************/ + +/* + * Structure for the (1KB) memory block implemented as 128 64-bit words. + * Memory blocks can be copied, XORed. Internal words can be accessed by [] (no + * bounds checking). + */ +typedef struct block_ { uint64_t v[ARGON2_QWORDS_IN_BLOCK]; } block; + +/*****************Functions that work with the block******************/ + +/* Initialize each byte of the block with @in */ +void init_block_value(block *b, uint8_t in); + +/* Copy block @src to block @dst */ +void copy_block(block *dst, const block *src); + +/* XOR @src onto @dst bytewise */ +void xor_block(block *dst, const block *src); + +/* + * Argon2 instance: memory pointer, number of passes, amount of memory, type, + * and derived values. + * Used to evaluate the number and location of blocks to construct in each + * thread + */ +typedef struct Argon2_instance_t { + block *memory; /* Memory pointer */ + uint32_t version; + uint32_t passes; /* Number of passes */ + uint32_t memory_blocks; /* Number of blocks in memory */ + uint32_t segment_length; + uint32_t lane_length; + uint32_t lanes; + uint32_t threads; + argon2_type type; + int print_internals; /* whether to print the memory blocks */ + argon2_context *context_ptr; /* points back to original context */ +} argon2_instance_t; + +/* + * Argon2 position: where we construct the block right now. Used to distribute + * work between threads. + */ +typedef struct Argon2_position_t { + uint32_t pass; + uint32_t lane; + uint8_t slice; + uint32_t index; +} argon2_position_t; + +/*Struct that holds the inputs for thread handling FillSegment*/ +typedef struct Argon2_thread_data { + argon2_instance_t *instance_ptr; + argon2_position_t pos; +} argon2_thread_data; + +/*************************Argon2 core functions********************************/ + +/* Allocates memory to the given pointer, uses the appropriate allocator as + * specified in the context. Total allocated memory is num*size. + * @param context argon2_context which specifies the allocator + * @param memory pointer to the pointer to the memory + * @param size the size in bytes for each element to be allocated + * @param num the number of elements to be allocated + * @return ARGON2_OK if @memory is a valid pointer and memory is allocated + */ +int allocate_memory(const argon2_context *context, uint8_t **memory, + size_t num, size_t size); + +/* + * Frees memory at the given pointer, uses the appropriate deallocator as + * specified in the context. Also cleans the memory using clear_internal_memory. + * @param context argon2_context which specifies the deallocator + * @param memory pointer to buffer to be freed + * @param size the size in bytes for each element to be deallocated + * @param num the number of elements to be deallocated + */ +void free_memory(const argon2_context *context, uint8_t *memory, + size_t num, size_t size); + +/* Function that securely cleans the memory. This ignores any flags set + * regarding clearing memory. Usually one just calls clear_internal_memory. + * @param mem Pointer to the memory + * @param s Memory size in bytes + */ +void secure_wipe_memory(void *v, size_t n); + +/* Function that securely clears the memory if FLAG_clear_internal_memory is + * set. If the flag isn't set, this function does nothing. + * @param mem Pointer to the memory + * @param s Memory size in bytes + */ +void clear_internal_memory(void *v, size_t n); + +/* + * Computes absolute position of reference block in the lane following a skewed + * distribution and using a pseudo-random value as input + * @param instance Pointer to the current instance + * @param position Pointer to the current position + * @param pseudo_rand 32-bit pseudo-random value used to determine the position + * @param same_lane Indicates if the block will be taken from the current lane. + * If so we can reference the current segment + * @pre All pointers must be valid + */ +uint32_t index_alpha(const argon2_instance_t *instance, + const argon2_position_t *position, uint32_t pseudo_rand, + int same_lane); + +/* + * Function that validates all inputs against predefined restrictions and return + * an error code + * @param context Pointer to current Argon2 context + * @return ARGON2_OK if everything is all right, otherwise one of error codes + * (all defined in + */ +int validate_inputs(const argon2_context *context); + +/* + * Hashes all the inputs into @a blockhash[PREHASH_DIGEST_LENGTH], clears + * password and secret if needed + * @param context Pointer to the Argon2 internal structure containing memory + * pointer, and parameters for time and space requirements. + * @param blockhash Buffer for pre-hashing digest + * @param type Argon2 type + * @pre @a blockhash must have at least @a PREHASH_DIGEST_LENGTH bytes + * allocated + */ +void initial_hash(uint8_t *blockhash, argon2_context *context, + argon2_type type); + +/* + * Function creates first 2 blocks per lane + * @param instance Pointer to the current instance + * @param blockhash Pointer to the pre-hashing digest + * @pre blockhash must point to @a PREHASH_SEED_LENGTH allocated values + */ +void fill_first_blocks(uint8_t *blockhash, const argon2_instance_t *instance); + +/* + * Function allocates memory, hashes the inputs with Blake, and creates first + * two blocks. Returns the pointer to the main memory with 2 blocks per lane + * initialized + * @param context Pointer to the Argon2 internal structure containing memory + * pointer, and parameters for time and space requirements. + * @param instance Current Argon2 instance + * @return Zero if successful, -1 if memory failed to allocate. @context->state + * will be modified if successful. + */ +int initialize(argon2_instance_t *instance, argon2_context *context); + +/* + * XORing the last block of each lane, hashing it, making the tag. Deallocates + * the memory. + * @param context Pointer to current Argon2 context (use only the out parameters + * from it) + * @param instance Pointer to current instance of Argon2 + * @pre instance->state must point to necessary amount of memory + * @pre context->out must point to outlen bytes of memory + * @pre if context->free_cbk is not NULL, it should point to a function that + * deallocates memory + */ +void finalize(const argon2_context *context, argon2_instance_t *instance); + +/* + * Function that fills the segment using previous segments also from other + * threads + * @param context current context + * @param instance Pointer to the current instance + * @param position Current position + * @pre all block pointers must be valid + */ +void fill_segment(const argon2_instance_t *instance, + argon2_position_t position); + +/* + * Function that fills the entire memory t_cost times based on the first two + * blocks in each lane + * @param instance Pointer to the current instance + * @return ARGON2_OK if successful, @context->state + */ +int fill_memory_blocks(argon2_instance_t *instance); + +#endif diff --git a/deps/phc-winner-argon2-20190702/src/encoding.c b/deps/phc-winner-argon2-20190702/src/encoding.c new file mode 100644 index 000000000..12cfda4d0 --- /dev/null +++ b/deps/phc-winner-argon2-20190702/src/encoding.c @@ -0,0 +1,463 @@ +/* + * Argon2 reference source code package - reference C implementations + * + * Copyright 2015 + * Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves + * + * You may use this work under the terms of a Creative Commons CC0 1.0 + * License/Waiver or the Apache Public License 2.0, at your option. The terms of + * these licenses can be found at: + * + * - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0 + * - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0 + * + * You should have received a copy of both of these licenses along with this + * software. If not, they may be obtained at the above URLs. + */ + +#include +#include +#include +#include +#include "encoding.h" +#include "core.h" + +/* + * Example code for a decoder and encoder of "hash strings", with Argon2 + * parameters. + * + * This code comprises three sections: + * + * -- The first section contains generic Base64 encoding and decoding + * functions. It is conceptually applicable to any hash function + * implementation that uses Base64 to encode and decode parameters, + * salts and outputs. It could be made into a library, provided that + * the relevant functions are made public (non-static) and be given + * reasonable names to avoid collisions with other functions. + * + * -- The second section is specific to Argon2. It encodes and decodes + * the parameters, salts and outputs. It does not compute the hash + * itself. + * + * The code was originally written by Thomas Pornin , + * to whom comments and remarks may be sent. It is released under what + * should amount to Public Domain or its closest equivalent; the + * following mantra is supposed to incarnate that fact with all the + * proper legal rituals: + * + * --------------------------------------------------------------------- + * This file is provided under the terms of Creative Commons CC0 1.0 + * Public Domain Dedication. To the extent possible under law, the + * author (Thomas Pornin) has waived all copyright and related or + * neighboring rights to this file. This work is published from: Canada. + * --------------------------------------------------------------------- + * + * Copyright (c) 2015 Thomas Pornin + */ + +/* ==================================================================== */ +/* + * Common code; could be shared between different hash functions. + * + * Note: the Base64 functions below assume that uppercase letters (resp. + * lowercase letters) have consecutive numerical codes, that fit on 8 + * bits. All modern systems use ASCII-compatible charsets, where these + * properties are true. If you are stuck with a dinosaur of a system + * that still defaults to EBCDIC then you already have much bigger + * interoperability issues to deal with. + */ + +/* + * Some macros for constant-time comparisons. These work over values in + * the 0..255 range. Returned value is 0x00 on "false", 0xFF on "true". + */ +#define EQ(x, y) ((((0U - ((unsigned)(x) ^ (unsigned)(y))) >> 8) & 0xFF) ^ 0xFF) +#define GT(x, y) ((((unsigned)(y) - (unsigned)(x)) >> 8) & 0xFF) +#define GE(x, y) (GT(y, x) ^ 0xFF) +#define LT(x, y) GT(y, x) +#define LE(x, y) GE(y, x) + +/* + * Convert value x (0..63) to corresponding Base64 character. + */ +static int b64_byte_to_char(unsigned x) { + return (LT(x, 26) & (x + 'A')) | + (GE(x, 26) & LT(x, 52) & (x + ('a' - 26))) | + (GE(x, 52) & LT(x, 62) & (x + ('0' - 52))) | (EQ(x, 62) & '+') | + (EQ(x, 63) & '/'); +} + +/* + * Convert character c to the corresponding 6-bit value. If character c + * is not a Base64 character, then 0xFF (255) is returned. + */ +static unsigned b64_char_to_byte(int c) { + unsigned x; + + x = (GE(c, 'A') & LE(c, 'Z') & (c - 'A')) | + (GE(c, 'a') & LE(c, 'z') & (c - ('a' - 26))) | + (GE(c, '0') & LE(c, '9') & (c - ('0' - 52))) | (EQ(c, '+') & 62) | + (EQ(c, '/') & 63); + return x | (EQ(x, 0) & (EQ(c, 'A') ^ 0xFF)); +} + +/* + * Convert some bytes to Base64. 'dst_len' is the length (in characters) + * of the output buffer 'dst'; if that buffer is not large enough to + * receive the result (including the terminating 0), then (size_t)-1 + * is returned. Otherwise, the zero-terminated Base64 string is written + * in the buffer, and the output length (counted WITHOUT the terminating + * zero) is returned. + */ +static size_t to_base64(char *dst, size_t dst_len, const void *src, + size_t src_len) { + size_t olen; + const unsigned char *buf; + unsigned acc, acc_len; + + olen = (src_len / 3) << 2; + switch (src_len % 3) { + case 2: + olen++; + /* fall through */ + case 1: + olen += 2; + break; + } + if (dst_len <= olen) { + return (size_t)-1; + } + acc = 0; + acc_len = 0; + buf = (const unsigned char *)src; + while (src_len-- > 0) { + acc = (acc << 8) + (*buf++); + acc_len += 8; + while (acc_len >= 6) { + acc_len -= 6; + *dst++ = (char)b64_byte_to_char((acc >> acc_len) & 0x3F); + } + } + if (acc_len > 0) { + *dst++ = (char)b64_byte_to_char((acc << (6 - acc_len)) & 0x3F); + } + *dst++ = 0; + return olen; +} + +/* + * Decode Base64 chars into bytes. The '*dst_len' value must initially + * contain the length of the output buffer '*dst'; when the decoding + * ends, the actual number of decoded bytes is written back in + * '*dst_len'. + * + * Decoding stops when a non-Base64 character is encountered, or when + * the output buffer capacity is exceeded. If an error occurred (output + * buffer is too small, invalid last characters leading to unprocessed + * buffered bits), then NULL is returned; otherwise, the returned value + * points to the first non-Base64 character in the source stream, which + * may be the terminating zero. + */ +static const char *from_base64(void *dst, size_t *dst_len, const char *src) { + size_t len; + unsigned char *buf; + unsigned acc, acc_len; + + buf = (unsigned char *)dst; + len = 0; + acc = 0; + acc_len = 0; + for (;;) { + unsigned d; + + d = b64_char_to_byte(*src); + if (d == 0xFF) { + break; + } + src++; + acc = (acc << 6) + d; + acc_len += 6; + if (acc_len >= 8) { + acc_len -= 8; + if ((len++) >= *dst_len) { + return NULL; + } + *buf++ = (acc >> acc_len) & 0xFF; + } + } + + /* + * If the input length is equal to 1 modulo 4 (which is + * invalid), then there will remain 6 unprocessed bits; + * otherwise, only 0, 2 or 4 bits are buffered. The buffered + * bits must also all be zero. + */ + if (acc_len > 4 || (acc & (((unsigned)1 << acc_len) - 1)) != 0) { + return NULL; + } + *dst_len = len; + return src; +} + +/* + * Decode decimal integer from 'str'; the value is written in '*v'. + * Returned value is a pointer to the next non-decimal character in the + * string. If there is no digit at all, or the value encoding is not + * minimal (extra leading zeros), or the value does not fit in an + * 'unsigned long', then NULL is returned. + */ +static const char *decode_decimal(const char *str, unsigned long *v) { + const char *orig; + unsigned long acc; + + acc = 0; + for (orig = str;; str++) { + int c; + + c = *str; + if (c < '0' || c > '9') { + break; + } + c -= '0'; + if (acc > (ULONG_MAX / 10)) { + return NULL; + } + acc *= 10; + if ((unsigned long)c > (ULONG_MAX - acc)) { + return NULL; + } + acc += (unsigned long)c; + } + if (str == orig || (*orig == '0' && str != (orig + 1))) { + return NULL; + } + *v = acc; + return str; +} + +/* ==================================================================== */ +/* + * Code specific to Argon2. + * + * The code below applies the following format: + * + * $argon2[$v=]$m=,t=,p=$$ + * + * where is either 'd', 'id', or 'i', is a decimal integer (positive, + * fits in an 'unsigned long'), and is Base64-encoded data (no '=' padding + * characters, no newline or whitespace). + * + * The last two binary chunks (encoded in Base64) are, in that order, + * the salt and the output. Both are required. The binary salt length and the + * output length must be in the allowed ranges defined in argon2.h. + * + * The ctx struct must contain buffers large enough to hold the salt and pwd + * when it is fed into decode_string. + */ + +int decode_string(argon2_context *ctx, const char *str, argon2_type type) { + +/* check for prefix */ +#define CC(prefix) \ + do { \ + size_t cc_len = strlen(prefix); \ + if (strncmp(str, prefix, cc_len) != 0) { \ + return ARGON2_DECODING_FAIL; \ + } \ + str += cc_len; \ + } while ((void)0, 0) + +/* optional prefix checking with supplied code */ +#define CC_opt(prefix, code) \ + do { \ + size_t cc_len = strlen(prefix); \ + if (strncmp(str, prefix, cc_len) == 0) { \ + str += cc_len; \ + { code; } \ + } \ + } while ((void)0, 0) + +/* Decoding prefix into decimal */ +#define DECIMAL(x) \ + do { \ + unsigned long dec_x; \ + str = decode_decimal(str, &dec_x); \ + if (str == NULL) { \ + return ARGON2_DECODING_FAIL; \ + } \ + (x) = dec_x; \ + } while ((void)0, 0) + + +/* Decoding prefix into uint32_t decimal */ +#define DECIMAL_U32(x) \ + do { \ + unsigned long dec_x; \ + str = decode_decimal(str, &dec_x); \ + if (str == NULL || dec_x > UINT32_MAX) { \ + return ARGON2_DECODING_FAIL; \ + } \ + (x) = (uint32_t)dec_x; \ + } while ((void)0, 0) + + +/* Decoding base64 into a binary buffer */ +#define BIN(buf, max_len, len) \ + do { \ + size_t bin_len = (max_len); \ + str = from_base64(buf, &bin_len, str); \ + if (str == NULL || bin_len > UINT32_MAX) { \ + return ARGON2_DECODING_FAIL; \ + } \ + (len) = (uint32_t)bin_len; \ + } while ((void)0, 0) + + size_t maxsaltlen = ctx->saltlen; + size_t maxoutlen = ctx->outlen; + int validation_result; + const char* type_string; + + /* We should start with the argon2_type we are using */ + type_string = argon2_type2string(type, 0); + if (!type_string) { + return ARGON2_INCORRECT_TYPE; + } + + CC("$"); + CC(type_string); + + /* Reading the version number if the default is suppressed */ + ctx->version = ARGON2_VERSION_10; + CC_opt("$v=", DECIMAL_U32(ctx->version)); + + CC("$m="); + DECIMAL_U32(ctx->m_cost); + CC(",t="); + DECIMAL_U32(ctx->t_cost); + CC(",p="); + DECIMAL_U32(ctx->lanes); + ctx->threads = ctx->lanes; + + CC("$"); + BIN(ctx->salt, maxsaltlen, ctx->saltlen); + CC("$"); + BIN(ctx->out, maxoutlen, ctx->outlen); + + /* The rest of the fields get the default values */ + ctx->secret = NULL; + ctx->secretlen = 0; + ctx->ad = NULL; + ctx->adlen = 0; + ctx->allocate_cbk = NULL; + ctx->free_cbk = NULL; + ctx->flags = ARGON2_DEFAULT_FLAGS; + + /* On return, must have valid context */ + validation_result = validate_inputs(ctx); + if (validation_result != ARGON2_OK) { + return validation_result; + } + + /* Can't have any additional characters */ + if (*str == 0) { + return ARGON2_OK; + } else { + return ARGON2_DECODING_FAIL; + } +#undef CC +#undef CC_opt +#undef DECIMAL +#undef BIN +} + +int encode_string(char *dst, size_t dst_len, argon2_context *ctx, + argon2_type type) { +#define SS(str) \ + do { \ + size_t pp_len = strlen(str); \ + if (pp_len >= dst_len) { \ + return ARGON2_ENCODING_FAIL; \ + } \ + memcpy(dst, str, pp_len + 1); \ + dst += pp_len; \ + dst_len -= pp_len; \ + } while ((void)0, 0) + +#define SX(x) \ + do { \ + char tmp[30]; \ + sprintf(tmp, "%lu", (unsigned long)(x)); \ + SS(tmp); \ + } while ((void)0, 0) + +#define SB(buf, len) \ + do { \ + size_t sb_len = to_base64(dst, dst_len, buf, len); \ + if (sb_len == (size_t)-1) { \ + return ARGON2_ENCODING_FAIL; \ + } \ + dst += sb_len; \ + dst_len -= sb_len; \ + } while ((void)0, 0) + + const char* type_string = argon2_type2string(type, 0); + int validation_result = validate_inputs(ctx); + + if (!type_string) { + return ARGON2_ENCODING_FAIL; + } + + if (validation_result != ARGON2_OK) { + return validation_result; + } + + + SS("$"); + SS(type_string); + + SS("$v="); + SX(ctx->version); + + SS("$m="); + SX(ctx->m_cost); + SS(",t="); + SX(ctx->t_cost); + SS(",p="); + SX(ctx->lanes); + + SS("$"); + SB(ctx->salt, ctx->saltlen); + + SS("$"); + SB(ctx->out, ctx->outlen); + return ARGON2_OK; + +#undef SS +#undef SX +#undef SB +} + +size_t b64len(uint32_t len) { + size_t olen = ((size_t)len / 3) << 2; + + switch (len % 3) { + case 2: + olen++; + /* fall through */ + case 1: + olen += 2; + break; + } + + return olen; +} + +size_t numlen(uint32_t num) { + size_t len = 1; + while (num >= 10) { + ++len; + num = num / 10; + } + return len; +} + diff --git a/deps/phc-winner-argon2-20190702/src/encoding.h b/deps/phc-winner-argon2-20190702/src/encoding.h new file mode 100644 index 000000000..7e83ec928 --- /dev/null +++ b/deps/phc-winner-argon2-20190702/src/encoding.h @@ -0,0 +1,57 @@ +/* + * Argon2 reference source code package - reference C implementations + * + * Copyright 2015 + * Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves + * + * You may use this work under the terms of a Creative Commons CC0 1.0 + * License/Waiver or the Apache Public License 2.0, at your option. The terms of + * these licenses can be found at: + * + * - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0 + * - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0 + * + * You should have received a copy of both of these licenses along with this + * software. If not, they may be obtained at the above URLs. + */ + +#ifndef ENCODING_H +#define ENCODING_H +#include "argon2.h" + +#define ARGON2_MAX_DECODED_LANES UINT32_C(255) +#define ARGON2_MIN_DECODED_SALT_LEN UINT32_C(8) +#define ARGON2_MIN_DECODED_OUT_LEN UINT32_C(12) + +/* +* encode an Argon2 hash string into the provided buffer. 'dst_len' +* contains the size, in characters, of the 'dst' buffer; if 'dst_len' +* is less than the number of required characters (including the +* terminating 0), then this function returns ARGON2_ENCODING_ERROR. +* +* on success, ARGON2_OK is returned. +*/ +int encode_string(char *dst, size_t dst_len, argon2_context *ctx, + argon2_type type); + +/* +* Decodes an Argon2 hash string into the provided structure 'ctx'. +* The only fields that must be set prior to this call are ctx.saltlen and +* ctx.outlen (which must be the maximal salt and out length values that are +* allowed), ctx.salt and ctx.out (which must be buffers of the specified +* length), and ctx.pwd and ctx.pwdlen which must hold a valid password. +* +* Invalid input string causes an error. On success, the ctx is valid and all +* fields have been initialized. +* +* Returned value is ARGON2_OK on success, other ARGON2_ codes on error. +*/ +int decode_string(argon2_context *ctx, const char *str, argon2_type type); + +/* Returns the length of the encoded byte stream with length len */ +size_t b64len(uint32_t len); + +/* Returns the length of the encoded number num */ +size_t numlen(uint32_t num); + +#endif diff --git a/deps/phc-winner-argon2-20190702/src/genkat.c b/deps/phc-winner-argon2-20190702/src/genkat.c new file mode 100644 index 000000000..8db9036f7 --- /dev/null +++ b/deps/phc-winner-argon2-20190702/src/genkat.c @@ -0,0 +1,207 @@ +/* + * Argon2 reference source code package - reference C implementations + * + * Copyright 2015 + * Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves + * + * You may use this work under the terms of a Creative Commons CC0 1.0 + * License/Waiver or the Apache Public License 2.0, at your option. The terms of + * these licenses can be found at: + * + * - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0 + * - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0 + * + * You should have received a copy of both of these licenses along with this + * software. If not, they may be obtained at the above URLs. + */ + +#include +#include +#include +#include "argon2.h" +#include "core.h" + +void initial_kat(const uint8_t *blockhash, const argon2_context *context, + argon2_type type) { + unsigned i; + + if (blockhash != NULL && context != NULL) { + printf("=======================================\n"); + + printf("%s version number %d\n", argon2_type2string(type, 1), + context->version); + + printf("=======================================\n"); + + + printf("Memory: %u KiB, Iterations: %u, Parallelism: %u lanes, Tag " + "length: %u bytes\n", + context->m_cost, context->t_cost, context->lanes, + context->outlen); + + printf("Password[%u]: ", context->pwdlen); + + if (context->flags & ARGON2_FLAG_CLEAR_PASSWORD) { + printf("CLEARED\n"); + } else { + for (i = 0; i < context->pwdlen; ++i) { + printf("%2.2x ", ((unsigned char *)context->pwd)[i]); + } + + printf("\n"); + } + + printf("Salt[%u]: ", context->saltlen); + + for (i = 0; i < context->saltlen; ++i) { + printf("%2.2x ", ((unsigned char *)context->salt)[i]); + } + + printf("\n"); + + printf("Secret[%u]: ", context->secretlen); + + if (context->flags & ARGON2_FLAG_CLEAR_SECRET) { + printf("CLEARED\n"); + } else { + for (i = 0; i < context->secretlen; ++i) { + printf("%2.2x ", ((unsigned char *)context->secret)[i]); + } + + printf("\n"); + } + + printf("Associated data[%u]: ", context->adlen); + + for (i = 0; i < context->adlen; ++i) { + printf("%2.2x ", ((unsigned char *)context->ad)[i]); + } + + printf("\n"); + + printf("Pre-hashing digest: "); + + for (i = 0; i < ARGON2_PREHASH_DIGEST_LENGTH; ++i) { + printf("%2.2x ", ((unsigned char *)blockhash)[i]); + } + + printf("\n"); + } +} + +void print_tag(const void *out, uint32_t outlen) { + unsigned i; + if (out != NULL) { + printf("Tag: "); + + for (i = 0; i < outlen; ++i) { + printf("%2.2x ", ((uint8_t *)out)[i]); + } + + printf("\n"); + } +} + +void internal_kat(const argon2_instance_t *instance, uint32_t pass) { + + if (instance != NULL) { + uint32_t i, j; + printf("\n After pass %u:\n", pass); + + for (i = 0; i < instance->memory_blocks; ++i) { + uint32_t how_many_words = + (instance->memory_blocks > ARGON2_QWORDS_IN_BLOCK) + ? 1 + : ARGON2_QWORDS_IN_BLOCK; + + for (j = 0; j < how_many_words; ++j) + printf("Block %.4u [%3u]: %016llx\n", i, j, + (unsigned long long)instance->memory[i].v[j]); + } + } +} + +static void fatal(const char *error) { + fprintf(stderr, "Error: %s\n", error); + exit(1); +} + +static void generate_testvectors(argon2_type type, const uint32_t version) { +#define TEST_OUTLEN 32 +#define TEST_PWDLEN 32 +#define TEST_SALTLEN 16 +#define TEST_SECRETLEN 8 +#define TEST_ADLEN 12 + argon2_context context; + + unsigned char out[TEST_OUTLEN]; + unsigned char pwd[TEST_PWDLEN]; + unsigned char salt[TEST_SALTLEN]; + unsigned char secret[TEST_SECRETLEN]; + unsigned char ad[TEST_ADLEN]; + const allocate_fptr myown_allocator = NULL; + const deallocate_fptr myown_deallocator = NULL; + + unsigned t_cost = 3; + unsigned m_cost = 32; + unsigned lanes = 4; + + memset(pwd, 1, TEST_OUTLEN); + memset(salt, 2, TEST_SALTLEN); + memset(secret, 3, TEST_SECRETLEN); + memset(ad, 4, TEST_ADLEN); + + context.out = out; + context.outlen = TEST_OUTLEN; + context.version = version; + context.pwd = pwd; + context.pwdlen = TEST_PWDLEN; + context.salt = salt; + context.saltlen = TEST_SALTLEN; + context.secret = secret; + context.secretlen = TEST_SECRETLEN; + context.ad = ad; + context.adlen = TEST_ADLEN; + context.t_cost = t_cost; + context.m_cost = m_cost; + context.lanes = lanes; + context.threads = lanes; + context.allocate_cbk = myown_allocator; + context.free_cbk = myown_deallocator; + context.flags = ARGON2_DEFAULT_FLAGS; + +#undef TEST_OUTLEN +#undef TEST_PWDLEN +#undef TEST_SALTLEN +#undef TEST_SECRETLEN +#undef TEST_ADLEN + + argon2_ctx(&context, type); +} + +int main(int argc, char *argv[]) { + /* Get and check Argon2 type */ + const char *type_str = (argc > 1) ? argv[1] : "i"; + argon2_type type = Argon2_i; + uint32_t version = ARGON2_VERSION_NUMBER; + if (!strcmp(type_str, "d")) { + type = Argon2_d; + } else if (!strcmp(type_str, "i")) { + type = Argon2_i; + } else if (!strcmp(type_str, "id")) { + type = Argon2_id; + } else { + fatal("wrong Argon2 type"); + } + + /* Get and check Argon2 version number */ + if (argc > 2) { + version = strtoul(argv[2], NULL, 10); + } + if (ARGON2_VERSION_10 != version && ARGON2_VERSION_NUMBER != version) { + fatal("wrong Argon2 version number"); + } + + generate_testvectors(type, version); + return ARGON2_OK; +} diff --git a/deps/phc-winner-argon2-20190702/src/genkat.h b/deps/phc-winner-argon2-20190702/src/genkat.h new file mode 100644 index 000000000..057263015 --- /dev/null +++ b/deps/phc-winner-argon2-20190702/src/genkat.h @@ -0,0 +1,51 @@ +/* + * Argon2 reference source code package - reference C implementations + * + * Copyright 2015 + * Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves + * + * You may use this work under the terms of a Creative Commons CC0 1.0 + * License/Waiver or the Apache Public License 2.0, at your option. The terms of + * these licenses can be found at: + * + * - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0 + * - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0 + * + * You should have received a copy of both of these licenses along with this + * software. If not, they may be obtained at the above URLs. + */ + +#ifndef ARGON2_KAT_H +#define ARGON2_KAT_H + +#include "core.h" + +/* + * Initial KAT function that prints the inputs to the file + * @param blockhash Array that contains pre-hashing digest + * @param context Holds inputs + * @param type Argon2 type + * @pre blockhash must point to INPUT_INITIAL_HASH_LENGTH bytes + * @pre context member pointers must point to allocated memory of size according + * to the length values + */ +void initial_kat(const uint8_t *blockhash, const argon2_context *context, + argon2_type type); + +/* + * Function that prints the output tag + * @param out output array pointer + * @param outlen digest length + * @pre out must point to @a outlen bytes + **/ +void print_tag(const void *out, uint32_t outlen); + +/* + * Function that prints the internal state at given moment + * @param instance pointer to the current instance + * @param pass current pass number + * @pre instance must have necessary memory allocated + **/ +void internal_kat(const argon2_instance_t *instance, uint32_t pass); + +#endif diff --git a/deps/phc-winner-argon2-20190702/src/opt.c b/deps/phc-winner-argon2-20190702/src/opt.c new file mode 100644 index 000000000..f6c20528e --- /dev/null +++ b/deps/phc-winner-argon2-20190702/src/opt.c @@ -0,0 +1,283 @@ +/* + * Argon2 reference source code package - reference C implementations + * + * Copyright 2015 + * Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves + * + * You may use this work under the terms of a Creative Commons CC0 1.0 + * License/Waiver or the Apache Public License 2.0, at your option. The terms of + * these licenses can be found at: + * + * - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0 + * - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0 + * + * You should have received a copy of both of these licenses along with this + * software. If not, they may be obtained at the above URLs. + */ + +#include +#include +#include + +#include "argon2.h" +#include "core.h" + +#include "blake2/blake2.h" +#include "blake2/blamka-round-opt.h" + +/* + * Function fills a new memory block and optionally XORs the old block over the new one. + * Memory must be initialized. + * @param state Pointer to the just produced block. Content will be updated(!) + * @param ref_block Pointer to the reference block + * @param next_block Pointer to the block to be XORed over. May coincide with @ref_block + * @param with_xor Whether to XOR into the new block (1) or just overwrite (0) + * @pre all block pointers must be valid + */ +#if defined(__AVX512F__) +static void fill_block(__m512i *state, const block *ref_block, + block *next_block, int with_xor) { + __m512i block_XY[ARGON2_512BIT_WORDS_IN_BLOCK]; + unsigned int i; + + if (with_xor) { + for (i = 0; i < ARGON2_512BIT_WORDS_IN_BLOCK; i++) { + state[i] = _mm512_xor_si512( + state[i], _mm512_loadu_si512((const __m512i *)ref_block->v + i)); + block_XY[i] = _mm512_xor_si512( + state[i], _mm512_loadu_si512((const __m512i *)next_block->v + i)); + } + } else { + for (i = 0; i < ARGON2_512BIT_WORDS_IN_BLOCK; i++) { + block_XY[i] = state[i] = _mm512_xor_si512( + state[i], _mm512_loadu_si512((const __m512i *)ref_block->v + i)); + } + } + + for (i = 0; i < 2; ++i) { + BLAKE2_ROUND_1( + state[8 * i + 0], state[8 * i + 1], state[8 * i + 2], state[8 * i + 3], + state[8 * i + 4], state[8 * i + 5], state[8 * i + 6], state[8 * i + 7]); + } + + for (i = 0; i < 2; ++i) { + BLAKE2_ROUND_2( + state[2 * 0 + i], state[2 * 1 + i], state[2 * 2 + i], state[2 * 3 + i], + state[2 * 4 + i], state[2 * 5 + i], state[2 * 6 + i], state[2 * 7 + i]); + } + + for (i = 0; i < ARGON2_512BIT_WORDS_IN_BLOCK; i++) { + state[i] = _mm512_xor_si512(state[i], block_XY[i]); + _mm512_storeu_si512((__m512i *)next_block->v + i, state[i]); + } +} +#elif defined(__AVX2__) +static void fill_block(__m256i *state, const block *ref_block, + block *next_block, int with_xor) { + __m256i block_XY[ARGON2_HWORDS_IN_BLOCK]; + unsigned int i; + + if (with_xor) { + for (i = 0; i < ARGON2_HWORDS_IN_BLOCK; i++) { + state[i] = _mm256_xor_si256( + state[i], _mm256_loadu_si256((const __m256i *)ref_block->v + i)); + block_XY[i] = _mm256_xor_si256( + state[i], _mm256_loadu_si256((const __m256i *)next_block->v + i)); + } + } else { + for (i = 0; i < ARGON2_HWORDS_IN_BLOCK; i++) { + block_XY[i] = state[i] = _mm256_xor_si256( + state[i], _mm256_loadu_si256((const __m256i *)ref_block->v + i)); + } + } + + for (i = 0; i < 4; ++i) { + BLAKE2_ROUND_1(state[8 * i + 0], state[8 * i + 4], state[8 * i + 1], state[8 * i + 5], + state[8 * i + 2], state[8 * i + 6], state[8 * i + 3], state[8 * i + 7]); + } + + for (i = 0; i < 4; ++i) { + BLAKE2_ROUND_2(state[ 0 + i], state[ 4 + i], state[ 8 + i], state[12 + i], + state[16 + i], state[20 + i], state[24 + i], state[28 + i]); + } + + for (i = 0; i < ARGON2_HWORDS_IN_BLOCK; i++) { + state[i] = _mm256_xor_si256(state[i], block_XY[i]); + _mm256_storeu_si256((__m256i *)next_block->v + i, state[i]); + } +} +#else +static void fill_block(__m128i *state, const block *ref_block, + block *next_block, int with_xor) { + __m128i block_XY[ARGON2_OWORDS_IN_BLOCK]; + unsigned int i; + + if (with_xor) { + for (i = 0; i < ARGON2_OWORDS_IN_BLOCK; i++) { + state[i] = _mm_xor_si128( + state[i], _mm_loadu_si128((const __m128i *)ref_block->v + i)); + block_XY[i] = _mm_xor_si128( + state[i], _mm_loadu_si128((const __m128i *)next_block->v + i)); + } + } else { + for (i = 0; i < ARGON2_OWORDS_IN_BLOCK; i++) { + block_XY[i] = state[i] = _mm_xor_si128( + state[i], _mm_loadu_si128((const __m128i *)ref_block->v + i)); + } + } + + for (i = 0; i < 8; ++i) { + BLAKE2_ROUND(state[8 * i + 0], state[8 * i + 1], state[8 * i + 2], + state[8 * i + 3], state[8 * i + 4], state[8 * i + 5], + state[8 * i + 6], state[8 * i + 7]); + } + + for (i = 0; i < 8; ++i) { + BLAKE2_ROUND(state[8 * 0 + i], state[8 * 1 + i], state[8 * 2 + i], + state[8 * 3 + i], state[8 * 4 + i], state[8 * 5 + i], + state[8 * 6 + i], state[8 * 7 + i]); + } + + for (i = 0; i < ARGON2_OWORDS_IN_BLOCK; i++) { + state[i] = _mm_xor_si128(state[i], block_XY[i]); + _mm_storeu_si128((__m128i *)next_block->v + i, state[i]); + } +} +#endif + +static void next_addresses(block *address_block, block *input_block) { + /*Temporary zero-initialized blocks*/ +#if defined(__AVX512F__) + __m512i zero_block[ARGON2_512BIT_WORDS_IN_BLOCK]; + __m512i zero2_block[ARGON2_512BIT_WORDS_IN_BLOCK]; +#elif defined(__AVX2__) + __m256i zero_block[ARGON2_HWORDS_IN_BLOCK]; + __m256i zero2_block[ARGON2_HWORDS_IN_BLOCK]; +#else + __m128i zero_block[ARGON2_OWORDS_IN_BLOCK]; + __m128i zero2_block[ARGON2_OWORDS_IN_BLOCK]; +#endif + + memset(zero_block, 0, sizeof(zero_block)); + memset(zero2_block, 0, sizeof(zero2_block)); + + /*Increasing index counter*/ + input_block->v[6]++; + + /*First iteration of G*/ + fill_block(zero_block, input_block, address_block, 0); + + /*Second iteration of G*/ + fill_block(zero2_block, address_block, address_block, 0); +} + +void fill_segment(const argon2_instance_t *instance, + argon2_position_t position) { + block *ref_block = NULL, *curr_block = NULL; + block address_block, input_block; + uint64_t pseudo_rand, ref_index, ref_lane; + uint32_t prev_offset, curr_offset; + uint32_t starting_index, i; +#if defined(__AVX512F__) + __m512i state[ARGON2_512BIT_WORDS_IN_BLOCK]; +#elif defined(__AVX2__) + __m256i state[ARGON2_HWORDS_IN_BLOCK]; +#else + __m128i state[ARGON2_OWORDS_IN_BLOCK]; +#endif + int data_independent_addressing; + + if (instance == NULL) { + return; + } + + data_independent_addressing = + (instance->type == Argon2_i) || + (instance->type == Argon2_id && (position.pass == 0) && + (position.slice < ARGON2_SYNC_POINTS / 2)); + + if (data_independent_addressing) { + init_block_value(&input_block, 0); + + input_block.v[0] = position.pass; + input_block.v[1] = position.lane; + input_block.v[2] = position.slice; + input_block.v[3] = instance->memory_blocks; + input_block.v[4] = instance->passes; + input_block.v[5] = instance->type; + } + + starting_index = 0; + + if ((0 == position.pass) && (0 == position.slice)) { + starting_index = 2; /* we have already generated the first two blocks */ + + /* Don't forget to generate the first block of addresses: */ + if (data_independent_addressing) { + next_addresses(&address_block, &input_block); + } + } + + /* Offset of the current block */ + curr_offset = position.lane * instance->lane_length + + position.slice * instance->segment_length + starting_index; + + if (0 == curr_offset % instance->lane_length) { + /* Last block in this lane */ + prev_offset = curr_offset + instance->lane_length - 1; + } else { + /* Previous block */ + prev_offset = curr_offset - 1; + } + + memcpy(state, ((instance->memory + prev_offset)->v), ARGON2_BLOCK_SIZE); + + for (i = starting_index; i < instance->segment_length; + ++i, ++curr_offset, ++prev_offset) { + /*1.1 Rotating prev_offset if needed */ + if (curr_offset % instance->lane_length == 1) { + prev_offset = curr_offset - 1; + } + + /* 1.2 Computing the index of the reference block */ + /* 1.2.1 Taking pseudo-random value from the previous block */ + if (data_independent_addressing) { + if (i % ARGON2_ADDRESSES_IN_BLOCK == 0) { + next_addresses(&address_block, &input_block); + } + pseudo_rand = address_block.v[i % ARGON2_ADDRESSES_IN_BLOCK]; + } else { + pseudo_rand = instance->memory[prev_offset].v[0]; + } + + /* 1.2.2 Computing the lane of the reference block */ + ref_lane = ((pseudo_rand >> 32)) % instance->lanes; + + if ((position.pass == 0) && (position.slice == 0)) { + /* Can not reference other lanes yet */ + ref_lane = position.lane; + } + + /* 1.2.3 Computing the number of possible reference block within the + * lane. + */ + position.index = i; + ref_index = index_alpha(instance, &position, pseudo_rand & 0xFFFFFFFF, + ref_lane == position.lane); + + /* 2 Creating a new block */ + ref_block = + instance->memory + instance->lane_length * ref_lane + ref_index; + curr_block = instance->memory + curr_offset; + if (ARGON2_VERSION_10 == instance->version) { + /* version 1.2.1 and earlier: overwrite, not XOR */ + fill_block(state, ref_block, curr_block, 0); + } else { + if(0 == position.pass) { + fill_block(state, ref_block, curr_block, 0); + } else { + fill_block(state, ref_block, curr_block, 1); + } + } + } +} diff --git a/deps/phc-winner-argon2-20190702/src/ref.c b/deps/phc-winner-argon2-20190702/src/ref.c new file mode 100644 index 000000000..ad1cf461f --- /dev/null +++ b/deps/phc-winner-argon2-20190702/src/ref.c @@ -0,0 +1,194 @@ +/* + * Argon2 reference source code package - reference C implementations + * + * Copyright 2015 + * Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves + * + * You may use this work under the terms of a Creative Commons CC0 1.0 + * License/Waiver or the Apache Public License 2.0, at your option. The terms of + * these licenses can be found at: + * + * - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0 + * - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0 + * + * You should have received a copy of both of these licenses along with this + * software. If not, they may be obtained at the above URLs. + */ + +#include +#include +#include + +#include "argon2.h" +#include "core.h" + +#include "blake2/blamka-round-ref.h" +#include "blake2/blake2-impl.h" +#include "blake2/blake2.h" + + +/* + * Function fills a new memory block and optionally XORs the old block over the new one. + * @next_block must be initialized. + * @param prev_block Pointer to the previous block + * @param ref_block Pointer to the reference block + * @param next_block Pointer to the block to be constructed + * @param with_xor Whether to XOR into the new block (1) or just overwrite (0) + * @pre all block pointers must be valid + */ +static void fill_block(const block *prev_block, const block *ref_block, + block *next_block, int with_xor) { + block blockR, block_tmp; + unsigned i; + + copy_block(&blockR, ref_block); + xor_block(&blockR, prev_block); + copy_block(&block_tmp, &blockR); + /* Now blockR = ref_block + prev_block and block_tmp = ref_block + prev_block */ + if (with_xor) { + /* Saving the next block contents for XOR over: */ + xor_block(&block_tmp, next_block); + /* Now blockR = ref_block + prev_block and + block_tmp = ref_block + prev_block + next_block */ + } + + /* Apply Blake2 on columns of 64-bit words: (0,1,...,15) , then + (16,17,..31)... finally (112,113,...127) */ + for (i = 0; i < 8; ++i) { + BLAKE2_ROUND_NOMSG( + blockR.v[16 * i], blockR.v[16 * i + 1], blockR.v[16 * i + 2], + blockR.v[16 * i + 3], blockR.v[16 * i + 4], blockR.v[16 * i + 5], + blockR.v[16 * i + 6], blockR.v[16 * i + 7], blockR.v[16 * i + 8], + blockR.v[16 * i + 9], blockR.v[16 * i + 10], blockR.v[16 * i + 11], + blockR.v[16 * i + 12], blockR.v[16 * i + 13], blockR.v[16 * i + 14], + blockR.v[16 * i + 15]); + } + + /* Apply Blake2 on rows of 64-bit words: (0,1,16,17,...112,113), then + (2,3,18,19,...,114,115).. finally (14,15,30,31,...,126,127) */ + for (i = 0; i < 8; i++) { + BLAKE2_ROUND_NOMSG( + blockR.v[2 * i], blockR.v[2 * i + 1], blockR.v[2 * i + 16], + blockR.v[2 * i + 17], blockR.v[2 * i + 32], blockR.v[2 * i + 33], + blockR.v[2 * i + 48], blockR.v[2 * i + 49], blockR.v[2 * i + 64], + blockR.v[2 * i + 65], blockR.v[2 * i + 80], blockR.v[2 * i + 81], + blockR.v[2 * i + 96], blockR.v[2 * i + 97], blockR.v[2 * i + 112], + blockR.v[2 * i + 113]); + } + + copy_block(next_block, &block_tmp); + xor_block(next_block, &blockR); +} + +static void next_addresses(block *address_block, block *input_block, + const block *zero_block) { + input_block->v[6]++; + fill_block(zero_block, input_block, address_block, 0); + fill_block(zero_block, address_block, address_block, 0); +} + +void fill_segment(const argon2_instance_t *instance, + argon2_position_t position) { + block *ref_block = NULL, *curr_block = NULL; + block address_block, input_block, zero_block; + uint64_t pseudo_rand, ref_index, ref_lane; + uint32_t prev_offset, curr_offset; + uint32_t starting_index; + uint32_t i; + int data_independent_addressing; + + if (instance == NULL) { + return; + } + + data_independent_addressing = + (instance->type == Argon2_i) || + (instance->type == Argon2_id && (position.pass == 0) && + (position.slice < ARGON2_SYNC_POINTS / 2)); + + if (data_independent_addressing) { + init_block_value(&zero_block, 0); + init_block_value(&input_block, 0); + + input_block.v[0] = position.pass; + input_block.v[1] = position.lane; + input_block.v[2] = position.slice; + input_block.v[3] = instance->memory_blocks; + input_block.v[4] = instance->passes; + input_block.v[5] = instance->type; + } + + starting_index = 0; + + if ((0 == position.pass) && (0 == position.slice)) { + starting_index = 2; /* we have already generated the first two blocks */ + + /* Don't forget to generate the first block of addresses: */ + if (data_independent_addressing) { + next_addresses(&address_block, &input_block, &zero_block); + } + } + + /* Offset of the current block */ + curr_offset = position.lane * instance->lane_length + + position.slice * instance->segment_length + starting_index; + + if (0 == curr_offset % instance->lane_length) { + /* Last block in this lane */ + prev_offset = curr_offset + instance->lane_length - 1; + } else { + /* Previous block */ + prev_offset = curr_offset - 1; + } + + for (i = starting_index; i < instance->segment_length; + ++i, ++curr_offset, ++prev_offset) { + /*1.1 Rotating prev_offset if needed */ + if (curr_offset % instance->lane_length == 1) { + prev_offset = curr_offset - 1; + } + + /* 1.2 Computing the index of the reference block */ + /* 1.2.1 Taking pseudo-random value from the previous block */ + if (data_independent_addressing) { + if (i % ARGON2_ADDRESSES_IN_BLOCK == 0) { + next_addresses(&address_block, &input_block, &zero_block); + } + pseudo_rand = address_block.v[i % ARGON2_ADDRESSES_IN_BLOCK]; + } else { + pseudo_rand = instance->memory[prev_offset].v[0]; + } + + /* 1.2.2 Computing the lane of the reference block */ + ref_lane = ((pseudo_rand >> 32)) % instance->lanes; + + if ((position.pass == 0) && (position.slice == 0)) { + /* Can not reference other lanes yet */ + ref_lane = position.lane; + } + + /* 1.2.3 Computing the number of possible reference block within the + * lane. + */ + position.index = i; + ref_index = index_alpha(instance, &position, pseudo_rand & 0xFFFFFFFF, + ref_lane == position.lane); + + /* 2 Creating a new block */ + ref_block = + instance->memory + instance->lane_length * ref_lane + ref_index; + curr_block = instance->memory + curr_offset; + if (ARGON2_VERSION_10 == instance->version) { + /* version 1.2.1 and earlier: overwrite, not XOR */ + fill_block(instance->memory + prev_offset, ref_block, curr_block, 0); + } else { + if(0 == position.pass) { + fill_block(instance->memory + prev_offset, ref_block, + curr_block, 0); + } else { + fill_block(instance->memory + prev_offset, ref_block, + curr_block, 1); + } + } + } +} diff --git a/deps/phc-winner-argon2-20190702/src/run.c b/deps/phc-winner-argon2-20190702/src/run.c new file mode 100644 index 000000000..b21b9d7fa --- /dev/null +++ b/deps/phc-winner-argon2-20190702/src/run.c @@ -0,0 +1,337 @@ +/* + * Argon2 reference source code package - reference C implementations + * + * Copyright 2015 + * Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves + * + * You may use this work under the terms of a Creative Commons CC0 1.0 + * License/Waiver or the Apache Public License 2.0, at your option. The terms of + * these licenses can be found at: + * + * - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0 + * - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0 + * + * You should have received a copy of both of these licenses along with this + * software. If not, they may be obtained at the above URLs. + */ + +#define _GNU_SOURCE 1 + +#include +#include +#include +#include +#include + +#include "argon2.h" +#include "core.h" + +#define T_COST_DEF 3 +#define LOG_M_COST_DEF 12 /* 2^12 = 4 MiB */ +#define LANES_DEF 1 +#define THREADS_DEF 1 +#define OUTLEN_DEF 32 +#define MAX_PASS_LEN 128 + +#define UNUSED_PARAMETER(x) (void)(x) + +static void usage(const char *cmd) { + printf("Usage: %s [-h] salt [-i|-d|-id] [-t iterations] " + "[-m log2(memory in KiB) | -k memory in KiB] [-p parallelism] " + "[-l hash length] [-e|-r] [-v (10|13)]\n", + cmd); + printf("\tPassword is read from stdin\n"); + printf("Parameters:\n"); + printf("\tsalt\t\tThe salt to use, at least 8 characters\n"); + printf("\t-i\t\tUse Argon2i (this is the default)\n"); + printf("\t-d\t\tUse Argon2d instead of Argon2i\n"); + printf("\t-id\t\tUse Argon2id instead of Argon2i\n"); + printf("\t-t N\t\tSets the number of iterations to N (default = %d)\n", + T_COST_DEF); + printf("\t-m N\t\tSets the memory usage of 2^N KiB (default %d)\n", + LOG_M_COST_DEF); + printf("\t-k N\t\tSets the memory usage of N KiB (default %d)\n", + 1 << LOG_M_COST_DEF); + printf("\t-p N\t\tSets parallelism to N threads (default %d)\n", + THREADS_DEF); + printf("\t-l N\t\tSets hash output length to N bytes (default %d)\n", + OUTLEN_DEF); + printf("\t-e\t\tOutput only encoded hash\n"); + printf("\t-r\t\tOutput only the raw bytes of the hash\n"); + printf("\t-v (10|13)\tArgon2 version (defaults to the most recent version, currently %x)\n", + ARGON2_VERSION_NUMBER); + printf("\t-h\t\tPrint %s usage\n", cmd); +} + +static void fatal(const char *error) { + fprintf(stderr, "Error: %s\n", error); + exit(1); +} + +static void print_hex(uint8_t *bytes, size_t bytes_len) { + size_t i; + for (i = 0; i < bytes_len; ++i) { + printf("%02x", bytes[i]); + } + printf("\n"); +} + +/* +Runs Argon2 with certain inputs and parameters, inputs not cleared. Prints the +Base64-encoded hash string +@out output array with at least 32 bytes allocated +@pwd NULL-terminated string, presumably from argv[] +@salt salt array +@t_cost number of iterations +@m_cost amount of requested memory in KB +@lanes amount of requested parallelism +@threads actual parallelism +@type Argon2 type we want to run +@encoded_only display only the encoded hash +@raw_only display only the hexadecimal of the hash +@version Argon2 version +*/ +static void run(uint32_t outlen, char *pwd, size_t pwdlen, char *salt, uint32_t t_cost, + uint32_t m_cost, uint32_t lanes, uint32_t threads, + argon2_type type, int encoded_only, int raw_only, uint32_t version) { + clock_t start_time, stop_time; + size_t saltlen, encodedlen; + int result; + unsigned char * out = NULL; + char * encoded = NULL; + + start_time = clock(); + + if (!pwd) { + fatal("password missing"); + } + + if (!salt) { + clear_internal_memory(pwd, pwdlen); + fatal("salt missing"); + } + + saltlen = strlen(salt); + if(UINT32_MAX < saltlen) { + fatal("salt is too long"); + } + + UNUSED_PARAMETER(lanes); + + out = malloc(outlen + 1); + if (!out) { + clear_internal_memory(pwd, pwdlen); + fatal("could not allocate memory for output"); + } + + encodedlen = argon2_encodedlen(t_cost, m_cost, lanes, (uint32_t)saltlen, outlen, type); + encoded = malloc(encodedlen + 1); + if (!encoded) { + clear_internal_memory(pwd, pwdlen); + fatal("could not allocate memory for hash"); + } + + result = argon2_hash(t_cost, m_cost, threads, pwd, pwdlen, salt, saltlen, + out, outlen, encoded, encodedlen, type, + version); + if (result != ARGON2_OK) + fatal(argon2_error_message(result)); + + stop_time = clock(); + + if (encoded_only) + puts(encoded); + + if (raw_only) + print_hex(out, outlen); + + if (encoded_only || raw_only) { + free(out); + free(encoded); + return; + } + + printf("Hash:\t\t"); + print_hex(out, outlen); + free(out); + + printf("Encoded:\t%s\n", encoded); + + printf("%2.3f seconds\n", + ((double)stop_time - start_time) / (CLOCKS_PER_SEC)); + + result = argon2_verify(encoded, pwd, pwdlen, type); + if (result != ARGON2_OK) + fatal(argon2_error_message(result)); + printf("Verification ok\n"); + free(encoded); +} + +int main(int argc, char *argv[]) { + uint32_t outlen = OUTLEN_DEF; + uint32_t m_cost = 1 << LOG_M_COST_DEF; + uint32_t t_cost = T_COST_DEF; + uint32_t lanes = LANES_DEF; + uint32_t threads = THREADS_DEF; + argon2_type type = Argon2_i; /* Argon2i is the default type */ + int types_specified = 0; + int m_cost_specified = 0; + int encoded_only = 0; + int raw_only = 0; + uint32_t version = ARGON2_VERSION_NUMBER; + int i; + size_t pwdlen; + char pwd[MAX_PASS_LEN], *salt; + + if (argc < 2) { + usage(argv[0]); + return ARGON2_MISSING_ARGS; + } else if (argc >= 2 && strcmp(argv[1], "-h") == 0) { + usage(argv[0]); + return 1; + } + + /* get password from stdin */ + pwdlen = fread(pwd, 1, sizeof pwd, stdin); + if(pwdlen < 1) { + fatal("no password read"); + } + if(pwdlen == MAX_PASS_LEN) { + fatal("Provided password longer than supported in command line utility"); + } + + salt = argv[1]; + + /* parse options */ + for (i = 2; i < argc; i++) { + const char *a = argv[i]; + unsigned long input = 0; + if (!strcmp(a, "-h")) { + usage(argv[0]); + return 1; + } else if (!strcmp(a, "-m")) { + if (m_cost_specified) { + fatal("-m or -k can only be used once"); + } + m_cost_specified = 1; + if (i < argc - 1) { + i++; + input = strtoul(argv[i], NULL, 10); + if (input == 0 || input == ULONG_MAX || + input > ARGON2_MAX_MEMORY_BITS) { + fatal("bad numeric input for -m"); + } + m_cost = ARGON2_MIN(UINT64_C(1) << input, UINT32_C(0xFFFFFFFF)); + if (m_cost > ARGON2_MAX_MEMORY) { + fatal("m_cost overflow"); + } + continue; + } else { + fatal("missing -m argument"); + } + } else if (!strcmp(a, "-k")) { + if (m_cost_specified) { + fatal("-m or -k can only be used once"); + } + m_cost_specified = 1; + if (i < argc - 1) { + i++; + input = strtoul(argv[i], NULL, 10); + if (input == 0 || input == ULONG_MAX) { + fatal("bad numeric input for -k"); + } + m_cost = ARGON2_MIN(input, UINT32_C(0xFFFFFFFF)); + if (m_cost > ARGON2_MAX_MEMORY) { + fatal("m_cost overflow"); + } + continue; + } else { + fatal("missing -k argument"); + } + } else if (!strcmp(a, "-t")) { + if (i < argc - 1) { + i++; + input = strtoul(argv[i], NULL, 10); + if (input == 0 || input == ULONG_MAX || + input > ARGON2_MAX_TIME) { + fatal("bad numeric input for -t"); + } + t_cost = input; + continue; + } else { + fatal("missing -t argument"); + } + } else if (!strcmp(a, "-p")) { + if (i < argc - 1) { + i++; + input = strtoul(argv[i], NULL, 10); + if (input == 0 || input == ULONG_MAX || + input > ARGON2_MAX_THREADS || input > ARGON2_MAX_LANES) { + fatal("bad numeric input for -p"); + } + threads = input; + lanes = threads; + continue; + } else { + fatal("missing -p argument"); + } + } else if (!strcmp(a, "-l")) { + if (i < argc - 1) { + i++; + input = strtoul(argv[i], NULL, 10); + outlen = input; + continue; + } else { + fatal("missing -l argument"); + } + } else if (!strcmp(a, "-i")) { + type = Argon2_i; + ++types_specified; + } else if (!strcmp(a, "-d")) { + type = Argon2_d; + ++types_specified; + } else if (!strcmp(a, "-id")) { + type = Argon2_id; + ++types_specified; + } else if (!strcmp(a, "-e")) { + encoded_only = 1; + } else if (!strcmp(a, "-r")) { + raw_only = 1; + } else if (!strcmp(a, "-v")) { + if (i < argc - 1) { + i++; + if (!strcmp(argv[i], "10")) { + version = ARGON2_VERSION_10; + } else if (!strcmp(argv[i], "13")) { + version = ARGON2_VERSION_13; + } else { + fatal("invalid Argon2 version"); + } + } else { + fatal("missing -v argument"); + } + } else { + fatal("unknown argument"); + } + } + + if (types_specified > 1) { + fatal("cannot specify multiple Argon2 types"); + } + + if(encoded_only && raw_only) + fatal("cannot provide both -e and -r"); + + if(!encoded_only && !raw_only) { + printf("Type:\t\t%s\n", argon2_type2string(type, 1)); + printf("Iterations:\t%u\n", t_cost); + printf("Memory:\t\t%u KiB\n", m_cost); + printf("Parallelism:\t%u\n", lanes); + } + + run(outlen, pwd, pwdlen, salt, t_cost, m_cost, lanes, threads, type, + encoded_only, raw_only, version); + + return ARGON2_OK; +} + diff --git a/deps/phc-winner-argon2-20190702/src/test.c b/deps/phc-winner-argon2-20190702/src/test.c new file mode 100644 index 000000000..3180cbd13 --- /dev/null +++ b/deps/phc-winner-argon2-20190702/src/test.c @@ -0,0 +1,289 @@ +/* + * Argon2 reference source code package - reference C implementations + * + * Copyright 2015 + * Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves + * + * You may use this work under the terms of a Creative Commons CC0 1.0 + * License/Waiver or the Apache Public License 2.0, at your option. The terms of + * these licenses can be found at: + * + * - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0 + * - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0 + * + * You should have received a copy of both of these licenses along with this + * software. If not, they may be obtained at the above URLs. + */ + +#include +#include +#include +#include +#include +#include + +#include "argon2.h" + +#define OUT_LEN 32 +#define ENCODED_LEN 108 + +/* Test harness will assert: + * argon2_hash() returns ARGON2_OK + * HEX output matches expected + * encoded output matches expected + * argon2_verify() correctly verifies value + */ + +void hashtest(uint32_t version, uint32_t t, uint32_t m, uint32_t p, char *pwd, + char *salt, char *hexref, char *mcfref, argon2_type type) { + unsigned char out[OUT_LEN]; + unsigned char hex_out[OUT_LEN * 2 + 4]; + char encoded[ENCODED_LEN]; + int ret, i; + + printf("Hash test: $v=%d t=%d, m=%d, p=%d, pass=%s, salt=%s: ", version, + t, m, p, pwd, salt); + + ret = argon2_hash(t, 1 << m, p, pwd, strlen(pwd), salt, strlen(salt), out, + OUT_LEN, encoded, ENCODED_LEN, type, version); + assert(ret == ARGON2_OK); + + for (i = 0; i < OUT_LEN; ++i) + sprintf((char *)(hex_out + i * 2), "%02x", out[i]); + assert(memcmp(hex_out, hexref, OUT_LEN * 2) == 0); + + if (ARGON2_VERSION_NUMBER == version) { + assert(memcmp(encoded, mcfref, strlen(mcfref)) == 0); + } + + ret = argon2_verify(encoded, pwd, strlen(pwd), type); + assert(ret == ARGON2_OK); + ret = argon2_verify(mcfref, pwd, strlen(pwd), type); + assert(ret == ARGON2_OK); + + printf("PASS\n"); +} + +int main() { + int ret; + unsigned char out[OUT_LEN]; + char const *msg; + int version; + + version = ARGON2_VERSION_10; + printf("Test Argon2i version number: %02x\n", version); + + /* Multiple test cases for various input values */ + hashtest(version, 2, 16, 1, "password", "somesalt", + "f6c4db4a54e2a370627aff3db6176b94a2a209a62c8e36152711802f7b30c694", + "$argon2i$m=65536,t=2,p=1$c29tZXNhbHQ" + "$9sTbSlTio3Biev89thdrlKKiCaYsjjYVJxGAL3swxpQ", Argon2_i); +#ifdef TEST_LARGE_RAM + hashtest(version, 2, 20, 1, "password", "somesalt", + "9690ec55d28d3ed32562f2e73ea62b02b018757643a2ae6e79528459de8106e9", + "$argon2i$m=1048576,t=2,p=1$c29tZXNhbHQ" + "$lpDsVdKNPtMlYvLnPqYrArAYdXZDoq5ueVKEWd6BBuk", Argon2_i); +#endif + hashtest(version, 2, 18, 1, "password", "somesalt", + "3e689aaa3d28a77cf2bc72a51ac53166761751182f1ee292e3f677a7da4c2467", + "$argon2i$m=262144,t=2,p=1$c29tZXNhbHQ" + "$Pmiaqj0op3zyvHKlGsUxZnYXURgvHuKS4/Z3p9pMJGc", Argon2_i); + hashtest(version, 2, 8, 1, "password", "somesalt", + "fd4dd83d762c49bdeaf57c47bdcd0c2f1babf863fdeb490df63ede9975fccf06", + "$argon2i$m=256,t=2,p=1$c29tZXNhbHQ" + "$/U3YPXYsSb3q9XxHvc0MLxur+GP960kN9j7emXX8zwY", Argon2_i); + hashtest(version, 2, 8, 2, "password", "somesalt", + "b6c11560a6a9d61eac706b79a2f97d68b4463aa3ad87e00c07e2b01e90c564fb", + "$argon2i$m=256,t=2,p=2$c29tZXNhbHQ" + "$tsEVYKap1h6scGt5ovl9aLRGOqOth+AMB+KwHpDFZPs", Argon2_i); + hashtest(version, 1, 16, 1, "password", "somesalt", + "81630552b8f3b1f48cdb1992c4c678643d490b2b5eb4ff6c4b3438b5621724b2", + "$argon2i$m=65536,t=1,p=1$c29tZXNhbHQ" + "$gWMFUrjzsfSM2xmSxMZ4ZD1JCytetP9sSzQ4tWIXJLI", Argon2_i); + hashtest(version, 4, 16, 1, "password", "somesalt", + "f212f01615e6eb5d74734dc3ef40ade2d51d052468d8c69440a3a1f2c1c2847b", + "$argon2i$m=65536,t=4,p=1$c29tZXNhbHQ" + "$8hLwFhXm6110c03D70Ct4tUdBSRo2MaUQKOh8sHChHs", Argon2_i); + hashtest(version, 2, 16, 1, "differentpassword", "somesalt", + "e9c902074b6754531a3a0be519e5baf404b30ce69b3f01ac3bf21229960109a3", + "$argon2i$m=65536,t=2,p=1$c29tZXNhbHQ" + "$6ckCB0tnVFMaOgvlGeW69ASzDOabPwGsO/ISKZYBCaM", Argon2_i); + hashtest(version, 2, 16, 1, "password", "diffsalt", + "79a103b90fe8aef8570cb31fc8b22259778916f8336b7bdac3892569d4f1c497", + "$argon2i$m=65536,t=2,p=1$ZGlmZnNhbHQ" + "$eaEDuQ/orvhXDLMfyLIiWXeJFvgza3vaw4kladTxxJc", Argon2_i); + + /* Error state tests */ + + /* Handle an invalid encoding correctly (it is missing a $) */ + ret = argon2_verify("$argon2i$m=65536,t=2,p=1c29tZXNhbHQ" + "$9sTbSlTio3Biev89thdrlKKiCaYsjjYVJxGAL3swxpQ", + "password", strlen("password"), Argon2_i); + assert(ret == ARGON2_DECODING_FAIL); + printf("Recognise an invalid encoding: PASS\n"); + + /* Handle an invalid encoding correctly (it is missing a $) */ + ret = argon2_verify("$argon2i$m=65536,t=2,p=1$c29tZXNhbHQ" + "9sTbSlTio3Biev89thdrlKKiCaYsjjYVJxGAL3swxpQ", + "password", strlen("password"), Argon2_i); + assert(ret == ARGON2_DECODING_FAIL); + printf("Recognise an invalid encoding: PASS\n"); + + /* Handle an invalid encoding correctly (salt is too short) */ + ret = argon2_verify("$argon2i$m=65536,t=2,p=1$" + "$9sTbSlTio3Biev89thdrlKKiCaYsjjYVJxGAL3swxpQ", + "password", strlen("password"), Argon2_i); + assert(ret == ARGON2_SALT_TOO_SHORT); + printf("Recognise an invalid salt in encoding: PASS\n"); + + /* Handle an mismatching hash (the encoded password is "passwore") */ + ret = argon2_verify("$argon2i$m=65536,t=2,p=1$c29tZXNhbHQ" + "$b2G3seW+uPzerwQQC+/E1K50CLLO7YXy0JRcaTuswRo", + "password", strlen("password"), Argon2_i); + assert(ret == ARGON2_VERIFY_MISMATCH); + printf("Verify with mismatched password: PASS\n"); + + msg = argon2_error_message(ARGON2_DECODING_FAIL); + assert(strcmp(msg, "Decoding failed") == 0); + printf("Decode an error message: PASS\n"); + + printf("\n"); + + version = ARGON2_VERSION_NUMBER; + printf("Test Argon2i version number: %02x\n", version); + + /* Multiple test cases for various input values */ + hashtest(version, 2, 16, 1, "password", "somesalt", + "c1628832147d9720c5bd1cfd61367078729f6dfb6f8fea9ff98158e0d7816ed0", + "$argon2i$v=19$m=65536,t=2,p=1$c29tZXNhbHQ" + "$wWKIMhR9lyDFvRz9YTZweHKfbftvj+qf+YFY4NeBbtA", Argon2_i); +#ifdef TEST_LARGE_RAM + hashtest(version, 2, 20, 1, "password", "somesalt", + "d1587aca0922c3b5d6a83edab31bee3c4ebaef342ed6127a55d19b2351ad1f41", + "$argon2i$v=19$m=1048576,t=2,p=1$c29tZXNhbHQ" + "$0Vh6ygkiw7XWqD7asxvuPE667zQu1hJ6VdGbI1GtH0E", Argon2_i); +#endif + hashtest(version, 2, 18, 1, "password", "somesalt", + "296dbae80b807cdceaad44ae741b506f14db0959267b183b118f9b24229bc7cb", + "$argon2i$v=19$m=262144,t=2,p=1$c29tZXNhbHQ" + "$KW266AuAfNzqrUSudBtQbxTbCVkmexg7EY+bJCKbx8s", Argon2_i); + hashtest(version, 2, 8, 1, "password", "somesalt", + "89e9029f4637b295beb027056a7336c414fadd43f6b208645281cb214a56452f", + "$argon2i$v=19$m=256,t=2,p=1$c29tZXNhbHQ" + "$iekCn0Y3spW+sCcFanM2xBT63UP2sghkUoHLIUpWRS8", Argon2_i); + hashtest(version, 2, 8, 2, "password", "somesalt", + "4ff5ce2769a1d7f4c8a491df09d41a9fbe90e5eb02155a13e4c01e20cd4eab61", + "$argon2i$v=19$m=256,t=2,p=2$c29tZXNhbHQ" + "$T/XOJ2mh1/TIpJHfCdQan76Q5esCFVoT5MAeIM1Oq2E", Argon2_i); + hashtest(version, 1, 16, 1, "password", "somesalt", + "d168075c4d985e13ebeae560cf8b94c3b5d8a16c51916b6f4ac2da3ac11bbecf", + "$argon2i$v=19$m=65536,t=1,p=1$c29tZXNhbHQ" + "$0WgHXE2YXhPr6uVgz4uUw7XYoWxRkWtvSsLaOsEbvs8", Argon2_i); + hashtest(version, 4, 16, 1, "password", "somesalt", + "aaa953d58af3706ce3df1aefd4a64a84e31d7f54175231f1285259f88174ce5b", + "$argon2i$v=19$m=65536,t=4,p=1$c29tZXNhbHQ" + "$qqlT1YrzcGzj3xrv1KZKhOMdf1QXUjHxKFJZ+IF0zls", Argon2_i); + hashtest(version, 2, 16, 1, "differentpassword", "somesalt", + "14ae8da01afea8700c2358dcef7c5358d9021282bd88663a4562f59fb74d22ee", + "$argon2i$v=19$m=65536,t=2,p=1$c29tZXNhbHQ" + "$FK6NoBr+qHAMI1jc73xTWNkCEoK9iGY6RWL1n7dNIu4", Argon2_i); + hashtest(version, 2, 16, 1, "password", "diffsalt", + "b0357cccfbef91f3860b0dba447b2348cbefecadaf990abfe9cc40726c521271", + "$argon2i$v=19$m=65536,t=2,p=1$ZGlmZnNhbHQ" + "$sDV8zPvvkfOGCw26RHsjSMvv7K2vmQq/6cxAcmxSEnE", Argon2_i); + + + /* Error state tests */ + + /* Handle an invalid encoding correctly (it is missing a $) */ + ret = argon2_verify("$argon2i$v=19$m=65536,t=2,p=1c29tZXNhbHQ" + "$wWKIMhR9lyDFvRz9YTZweHKfbftvj+qf+YFY4NeBbtA", + "password", strlen("password"), Argon2_i); + assert(ret == ARGON2_DECODING_FAIL); + printf("Recognise an invalid encoding: PASS\n"); + + /* Handle an invalid encoding correctly (it is missing a $) */ + ret = argon2_verify("$argon2i$v=19$m=65536,t=2,p=1$c29tZXNhbHQ" + "wWKIMhR9lyDFvRz9YTZweHKfbftvj+qf+YFY4NeBbtA", + "password", strlen("password"), Argon2_i); + assert(ret == ARGON2_DECODING_FAIL); + printf("Recognise an invalid encoding: PASS\n"); + + /* Handle an invalid encoding correctly (salt is too short) */ + ret = argon2_verify("$argon2i$v=19$m=65536,t=2,p=1$" + "$9sTbSlTio3Biev89thdrlKKiCaYsjjYVJxGAL3swxpQ", + "password", strlen("password"), Argon2_i); + assert(ret == ARGON2_SALT_TOO_SHORT); + printf("Recognise an invalid salt in encoding: PASS\n"); + + /* Handle an mismatching hash (the encoded password is "passwore") */ + ret = argon2_verify("$argon2i$v=19$m=65536,t=2,p=1$c29tZXNhbHQ" + "$8iIuixkI73Js3G1uMbezQXD0b8LG4SXGsOwoQkdAQIM", + "password", strlen("password"), Argon2_i); + assert(ret == ARGON2_VERIFY_MISMATCH); + printf("Verify with mismatched password: PASS\n"); + + msg = argon2_error_message(ARGON2_DECODING_FAIL); + assert(strcmp(msg, "Decoding failed") == 0); + printf("Decode an error message: PASS\n\n"); + + printf("Test Argon2id version number: %02x\n", version); + + /* Multiple test cases for various input values */ + hashtest(version, 2, 16, 1, "password", "somesalt", + "09316115d5cf24ed5a15a31a3ba326e5cf32edc24702987c02b6566f61913cf7", + "$argon2id$v=19$m=65536,t=2,p=1$c29tZXNhbHQ" + "$CTFhFdXPJO1aFaMaO6Mm5c8y7cJHAph8ArZWb2GRPPc", Argon2_id); + hashtest(version, 2, 18, 1, "password", "somesalt", + "78fe1ec91fb3aa5657d72e710854e4c3d9b9198c742f9616c2f085bed95b2e8c", + "$argon2id$v=19$m=262144,t=2,p=1$c29tZXNhbHQ" + "$eP4eyR+zqlZX1y5xCFTkw9m5GYx0L5YWwvCFvtlbLow", Argon2_id); + hashtest(version, 2, 8, 1, "password", "somesalt", + "9dfeb910e80bad0311fee20f9c0e2b12c17987b4cac90c2ef54d5b3021c68bfe", + "$argon2id$v=19$m=256,t=2,p=1$c29tZXNhbHQ" + "$nf65EOgLrQMR/uIPnA4rEsF5h7TKyQwu9U1bMCHGi/4", Argon2_id); + hashtest(version, 2, 8, 2, "password", "somesalt", + "6d093c501fd5999645e0ea3bf620d7b8be7fd2db59c20d9fff9539da2bf57037", + "$argon2id$v=19$m=256,t=2,p=2$c29tZXNhbHQ" + "$bQk8UB/VmZZF4Oo79iDXuL5/0ttZwg2f/5U52iv1cDc", Argon2_id); + hashtest(version, 1, 16, 1, "password", "somesalt", + "f6a5adc1ba723dddef9b5ac1d464e180fcd9dffc9d1cbf76cca2fed795d9ca98", + "$argon2id$v=19$m=65536,t=1,p=1$c29tZXNhbHQ" + "$9qWtwbpyPd3vm1rB1GThgPzZ3/ydHL92zKL+15XZypg", Argon2_id); + hashtest(version, 4, 16, 1, "password", "somesalt", + "9025d48e68ef7395cca9079da4c4ec3affb3c8911fe4f86d1a2520856f63172c", + "$argon2id$v=19$m=65536,t=4,p=1$c29tZXNhbHQ" + "$kCXUjmjvc5XMqQedpMTsOv+zyJEf5PhtGiUghW9jFyw", Argon2_id); + hashtest(version, 2, 16, 1, "differentpassword", "somesalt", + "0b84d652cf6b0c4beaef0dfe278ba6a80df6696281d7e0d2891b817d8c458fde", + "$argon2id$v=19$m=65536,t=2,p=1$c29tZXNhbHQ" + "$C4TWUs9rDEvq7w3+J4umqA32aWKB1+DSiRuBfYxFj94", Argon2_id); + hashtest(version, 2, 16, 1, "password", "diffsalt", + "bdf32b05ccc42eb15d58fd19b1f856b113da1e9a5874fdcc544308565aa8141c", + "$argon2id$v=19$m=65536,t=2,p=1$ZGlmZnNhbHQ" + "$vfMrBczELrFdWP0ZsfhWsRPaHppYdP3MVEMIVlqoFBw", Argon2_id); + + /* Common error state tests */ + + printf("\n"); + printf("Common error state tests\n"); + + ret = argon2_hash(2, 1, 1, "password", strlen("password"), + "diffsalt", strlen("diffsalt"), + out, OUT_LEN, NULL, 0, Argon2_id, version); + assert(ret == ARGON2_MEMORY_TOO_LITTLE); + printf("Fail on invalid memory: PASS\n"); + + ret = argon2_hash(2, 1 << 12, 1, NULL, strlen("password"), + "diffsalt", strlen("diffsalt"), + out, OUT_LEN, NULL, 0, Argon2_id, version); + assert(ret == ARGON2_PWD_PTR_MISMATCH); + printf("Fail on invalid null pointer: PASS\n"); + + ret = argon2_hash(2, 1 << 12, 1, "password", strlen("password"), "s", 1, + out, OUT_LEN, NULL, 0, Argon2_id, version); + assert(ret == ARGON2_SALT_TOO_SHORT); + printf("Fail on salt too short: PASS\n"); + + return 0; +} diff --git a/deps/phc-winner-argon2-20190702/src/thread.c b/deps/phc-winner-argon2-20190702/src/thread.c new file mode 100644 index 000000000..e099a00d2 --- /dev/null +++ b/deps/phc-winner-argon2-20190702/src/thread.c @@ -0,0 +1,57 @@ +/* + * Argon2 reference source code package - reference C implementations + * + * Copyright 2015 + * Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves + * + * You may use this work under the terms of a Creative Commons CC0 1.0 + * License/Waiver or the Apache Public License 2.0, at your option. The terms of + * these licenses can be found at: + * + * - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0 + * - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0 + * + * You should have received a copy of both of these licenses along with this + * software. If not, they may be obtained at the above URLs. + */ + +#if !defined(ARGON2_NO_THREADS) + +#include "thread.h" +#if defined(_WIN32) +#include +#endif + +int argon2_thread_create(argon2_thread_handle_t *handle, + argon2_thread_func_t func, void *args) { + if (NULL == handle || func == NULL) { + return -1; + } +#if defined(_WIN32) + *handle = _beginthreadex(NULL, 0, func, args, 0, NULL); + return *handle != 0 ? 0 : -1; +#else + return pthread_create(handle, NULL, func, args); +#endif +} + +int argon2_thread_join(argon2_thread_handle_t handle) { +#if defined(_WIN32) + if (WaitForSingleObject((HANDLE)handle, INFINITE) == WAIT_OBJECT_0) { + return CloseHandle((HANDLE)handle) != 0 ? 0 : -1; + } + return -1; +#else + return pthread_join(handle, NULL); +#endif +} + +void argon2_thread_exit(void) { +#if defined(_WIN32) + _endthreadex(0); +#else + pthread_exit(NULL); +#endif +} + +#endif /* ARGON2_NO_THREADS */ diff --git a/deps/phc-winner-argon2-20190702/src/thread.h b/deps/phc-winner-argon2-20190702/src/thread.h new file mode 100644 index 000000000..49d88367b --- /dev/null +++ b/deps/phc-winner-argon2-20190702/src/thread.h @@ -0,0 +1,67 @@ +/* + * Argon2 reference source code package - reference C implementations + * + * Copyright 2015 + * Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves + * + * You may use this work under the terms of a Creative Commons CC0 1.0 + * License/Waiver or the Apache Public License 2.0, at your option. The terms of + * these licenses can be found at: + * + * - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0 + * - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0 + * + * You should have received a copy of both of these licenses along with this + * software. If not, they may be obtained at the above URLs. + */ + +#ifndef ARGON2_THREAD_H +#define ARGON2_THREAD_H + +#if !defined(ARGON2_NO_THREADS) + +/* + Here we implement an abstraction layer for the simpĺe requirements + of the Argon2 code. We only require 3 primitives---thread creation, + joining, and termination---so full emulation of the pthreads API + is unwarranted. Currently we wrap pthreads and Win32 threads. + + The API defines 2 types: the function pointer type, + argon2_thread_func_t, + and the type of the thread handle---argon2_thread_handle_t. +*/ +#if defined(_WIN32) +#include +typedef unsigned(__stdcall *argon2_thread_func_t)(void *); +typedef uintptr_t argon2_thread_handle_t; +#else +#include +typedef void *(*argon2_thread_func_t)(void *); +typedef pthread_t argon2_thread_handle_t; +#endif + +/* Creates a thread + * @param handle pointer to a thread handle, which is the output of this + * function. Must not be NULL. + * @param func A function pointer for the thread's entry point. Must not be + * NULL. + * @param args Pointer that is passed as an argument to @func. May be NULL. + * @return 0 if @handle and @func are valid pointers and a thread is successfully + * created. + */ +int argon2_thread_create(argon2_thread_handle_t *handle, + argon2_thread_func_t func, void *args); + +/* Waits for a thread to terminate + * @param handle Handle to a thread created with argon2_thread_create. + * @return 0 if @handle is a valid handle, and joining completed successfully. +*/ +int argon2_thread_join(argon2_thread_handle_t handle); + +/* Terminate the current thread. Must be run inside a thread created by + * argon2_thread_create. +*/ +void argon2_thread_exit(void); + +#endif /* ARGON2_NO_THREADS */ +#endif diff --git a/deps/phc-winner-argon2-20190702/vs2015/Argon2Opt/Argon2Opt.vcxproj b/deps/phc-winner-argon2-20190702/vs2015/Argon2Opt/Argon2Opt.vcxproj new file mode 100644 index 000000000..357b4bd2b --- /dev/null +++ b/deps/phc-winner-argon2-20190702/vs2015/Argon2Opt/Argon2Opt.vcxproj @@ -0,0 +1,231 @@ + + + + + Debug + Win32 + + + ReleaseStatic + Win32 + + + ReleaseStatic + x64 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + {CAA75C57-998C-494E-B8A5-5894EF0FC528} + Argon2Opt + 8.1 + + + + + v100 + + + $(DefaultPlatformToolset) + + + Application + true + MultiByte + + + Application + false + true + MultiByte + + + Application + false + true + MultiByte + + + Application + true + MultiByte + + + Application + false + true + MultiByte + + + Application + false + true + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + + + + $(SolutionDir)vs2015\build\ + $(SolutionDir)vs2015\build\$(ProjectName)\ + $(SolutionDir)include;$(IncludePath) + + + $(SolutionDir)vs2015\build\ + $(SolutionDir)vs2015\build\$(ProjectName)\ + $(SolutionDir)include;$(IncludePath) + + + $(SolutionDir)vs2015\build\ + $(SolutionDir)vs2015\build\$(ProjectName)\ + $(SolutionDir)include;$(IncludePath) + + + $(SolutionDir)vs2015\build\ + $(SolutionDir)vs2015\build\$(ProjectName)\ + $(SolutionDir)include;$(IncludePath) + + + $(SolutionDir)vs2015\build\ + $(SolutionDir)vs2015\build\$(ProjectName)\ + $(SolutionDir)include;$(IncludePath) + + + $(SolutionDir)vs2015\build\ + $(SolutionDir)vs2015\build\$(ProjectName)\ + $(SolutionDir)include;$(IncludePath) + + + + Level3 + Disabled + true + _CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + + + + + Level3 + Disabled + true + _CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + + + + + Level3 + MaxSpeed + true + true + true + _CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + + + true + true + true + + + + + Level3 + MaxSpeed + true + true + true + _CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + MultiThreaded + + + true + true + true + + + + + Level3 + MaxSpeed + true + true + true + _CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + + + true + true + true + + + + + Level3 + MaxSpeed + true + true + true + _CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + MultiThreaded + + + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/deps/phc-winner-argon2-20190702/vs2015/Argon2Opt/Argon2Opt.vcxproj.filters b/deps/phc-winner-argon2-20190702/vs2015/Argon2Opt/Argon2Opt.vcxproj.filters new file mode 100644 index 000000000..536602bde --- /dev/null +++ b/deps/phc-winner-argon2-20190702/vs2015/Argon2Opt/Argon2Opt.vcxproj.filters @@ -0,0 +1,69 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + \ No newline at end of file diff --git a/deps/phc-winner-argon2-20190702/vs2015/Argon2OptBench/Argon2OptBench.vcxproj b/deps/phc-winner-argon2-20190702/vs2015/Argon2OptBench/Argon2OptBench.vcxproj new file mode 100644 index 000000000..e5ba5b3a8 --- /dev/null +++ b/deps/phc-winner-argon2-20190702/vs2015/Argon2OptBench/Argon2OptBench.vcxproj @@ -0,0 +1,231 @@ + + + + + Debug + Win32 + + + ReleaseStatic + Win32 + + + ReleaseStatic + x64 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + {B3A0FB44-0C1C-4EC3-B155-8B39371F8EE4} + Argon2OptBench + 8.1 + + + + + v100 + + + $(DefaultPlatformToolset) + + + Application + true + MultiByte + + + Application + false + true + MultiByte + + + Application + false + true + MultiByte + + + Application + true + MultiByte + + + Application + false + true + MultiByte + + + Application + false + true + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + + + + $(SolutionDir)vs2015\build\ + $(SolutionDir)vs2015\build\$(ProjectName)\ + $(SolutionDir)include;$(IncludePath) + + + $(SolutionDir)vs2015\build\ + $(SolutionDir)vs2015\build\$(ProjectName)\ + $(SolutionDir)include;$(IncludePath) + + + $(SolutionDir)vs2015\build\ + $(SolutionDir)vs2015\build\$(ProjectName)\ + $(SolutionDir)include;$(IncludePath) + + + $(SolutionDir)vs2015\build\ + $(SolutionDir)vs2015\build\$(ProjectName)\ + $(SolutionDir)include;$(IncludePath) + + + $(SolutionDir)vs2015\build\ + $(SolutionDir)vs2015\build\$(ProjectName)\ + $(SolutionDir)include;$(IncludePath) + + + $(SolutionDir)vs2015\build\ + $(SolutionDir)vs2015\build\$(ProjectName)\ + $(SolutionDir)include;$(IncludePath) + + + + Level3 + Disabled + true + _CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + + + + + Level3 + Disabled + true + _CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + + + + + Level3 + MaxSpeed + true + true + true + _CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + + + true + true + true + + + + + Level3 + MaxSpeed + true + true + true + _CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + MultiThreaded + + + true + true + true + + + + + Level3 + MaxSpeed + true + true + true + _CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + + + true + true + true + + + + + Level3 + MaxSpeed + true + true + true + _CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + MultiThreaded + + + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/deps/phc-winner-argon2-20190702/vs2015/Argon2OptBench/Argon2OptBench.vcxproj.filters b/deps/phc-winner-argon2-20190702/vs2015/Argon2OptBench/Argon2OptBench.vcxproj.filters new file mode 100644 index 000000000..0cc0d957b --- /dev/null +++ b/deps/phc-winner-argon2-20190702/vs2015/Argon2OptBench/Argon2OptBench.vcxproj.filters @@ -0,0 +1,69 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + \ No newline at end of file diff --git a/deps/phc-winner-argon2-20190702/vs2015/Argon2OptDll/Argon2OptDll.vcxproj b/deps/phc-winner-argon2-20190702/vs2015/Argon2OptDll/Argon2OptDll.vcxproj new file mode 100644 index 000000000..71eb33d06 --- /dev/null +++ b/deps/phc-winner-argon2-20190702/vs2015/Argon2OptDll/Argon2OptDll.vcxproj @@ -0,0 +1,230 @@ + + + + + Debug + Win32 + + + ReleaseStatic + Win32 + + + ReleaseStatic + x64 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + {3A898DD8-ACAE-4269-ADFE-EB7260D71583} + Argon2OptDll + 8.1 + + + + + v100 + + + $(DefaultPlatformToolset) + + + DynamicLibrary + true + MultiByte + + + DynamicLibrary + false + true + MultiByte + + + DynamicLibrary + false + true + MultiByte + + + DynamicLibrary + true + MultiByte + + + DynamicLibrary + false + true + MultiByte + + + DynamicLibrary + false + true + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + + + + $(SolutionDir)vs2015\build\ + $(SolutionDir)vs2015\build\$(ProjectName)\ + $(SolutionDir)include;$(IncludePath) + + + $(SolutionDir)vs2015\build\ + $(SolutionDir)vs2015\build\$(ProjectName)\ + $(SolutionDir)include;$(IncludePath) + + + $(SolutionDir)vs2015\build\ + $(SolutionDir)vs2015\build\$(ProjectName)\ + $(SolutionDir)include;$(IncludePath) + + + $(SolutionDir)vs2015\build\ + $(SolutionDir)vs2015\build\$(ProjectName)\ + $(SolutionDir)include;$(IncludePath) + + + $(SolutionDir)vs2015\build\ + $(SolutionDir)vs2015\build\$(ProjectName)\ + $(SolutionDir)include;$(IncludePath) + + + $(SolutionDir)vs2015\build\ + $(SolutionDir)vs2015\build\$(ProjectName)\ + $(SolutionDir)include;$(IncludePath) + + + + Level3 + Disabled + true + _CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + + + + + Level3 + Disabled + true + _CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + + + + + Level3 + MaxSpeed + true + true + true + _CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + + + true + true + true + + + + + Level3 + MaxSpeed + true + true + true + _CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + MultiThreaded + + + true + true + true + + + + + Level3 + MaxSpeed + true + true + true + _CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + + + true + true + true + + + + + Level3 + MaxSpeed + true + true + true + _CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + MultiThreaded + + + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/deps/phc-winner-argon2-20190702/vs2015/Argon2OptDll/Argon2OptDll.vcxproj.filters b/deps/phc-winner-argon2-20190702/vs2015/Argon2OptDll/Argon2OptDll.vcxproj.filters new file mode 100644 index 000000000..c7a778817 --- /dev/null +++ b/deps/phc-winner-argon2-20190702/vs2015/Argon2OptDll/Argon2OptDll.vcxproj.filters @@ -0,0 +1,66 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + diff --git a/deps/phc-winner-argon2-20190702/vs2015/Argon2OptGenKAT/Argon2OptGenKAT.vcxproj b/deps/phc-winner-argon2-20190702/vs2015/Argon2OptGenKAT/Argon2OptGenKAT.vcxproj new file mode 100644 index 000000000..44c97d157 --- /dev/null +++ b/deps/phc-winner-argon2-20190702/vs2015/Argon2OptGenKAT/Argon2OptGenKAT.vcxproj @@ -0,0 +1,244 @@ + + + + + Debug + Win32 + + + ReleaseStatic + Win32 + + + ReleaseStatic + x64 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + {DBBAAAE6-4560-4D11-8280-30A6650A82EF} + Argon2OptGenKAT + 8.1 + + + + + v100 + + + $(DefaultPlatformToolset) + + + Application + true + MultiByte + + + Application + false + true + MultiByte + + + Application + false + true + MultiByte + + + Application + true + MultiByte + + + Application + false + true + MultiByte + + + Application + false + true + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + + + + $(SolutionDir)vs2015\build\ + $(SolutionDir)vs2015\build\$(ProjectName)\ + $(SolutionDir)include;$(IncludePath) + + + $(SolutionDir)vs2015\build\ + $(SolutionDir)vs2015\build\$(ProjectName)\ + $(SolutionDir)include;$(IncludePath) + + + $(SolutionDir)vs2015\build\ + $(SolutionDir)vs2015\build\$(ProjectName)\ + $(SolutionDir)include;$(IncludePath) + + + $(SolutionDir)vs2015\build\ + $(SolutionDir)vs2015\build\$(ProjectName)\ + $(SolutionDir)include;$(IncludePath) + + + $(SolutionDir)vs2015\build\ + $(SolutionDir)vs2015\build\$(ProjectName)\ + $(SolutionDir)include;$(IncludePath) + + + $(SolutionDir)vs2015\build\ + $(SolutionDir)vs2015\build\$(ProjectName)\ + $(SolutionDir)include;$(IncludePath) + + + + Level3 + Disabled + true + _CRT_SECURE_NO_WARNINGS;GENKAT;%(PreprocessorDefinitions) + + + + + + + Level3 + Disabled + true + _CRT_SECURE_NO_WARNINGS;GENKAT;%(PreprocessorDefinitions) + + + + + + + Level3 + MaxSpeed + true + true + true + _CRT_SECURE_NO_WARNINGS;GENKAT;%(PreprocessorDefinitions) + + + + + true + true + true + + + + + Level3 + MaxSpeed + true + true + true + _CRT_SECURE_NO_WARNINGS;GENKAT;%(PreprocessorDefinitions) + + + MultiThreaded + + + true + true + true + + + + + Level3 + MaxSpeed + true + true + true + _CRT_SECURE_NO_WARNINGS;GENKAT;%(PreprocessorDefinitions) + + + + + true + true + true + + + + + Level3 + MaxSpeed + true + true + true + _CRT_SECURE_NO_WARNINGS;GENKAT;%(PreprocessorDefinitions) + + + MultiThreaded + + + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/deps/phc-winner-argon2-20190702/vs2015/Argon2OptGenKAT/Argon2OptGenKAT.vcxproj.filters b/deps/phc-winner-argon2-20190702/vs2015/Argon2OptGenKAT/Argon2OptGenKAT.vcxproj.filters new file mode 100644 index 000000000..ff8595575 --- /dev/null +++ b/deps/phc-winner-argon2-20190702/vs2015/Argon2OptGenKAT/Argon2OptGenKAT.vcxproj.filters @@ -0,0 +1,72 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + \ No newline at end of file diff --git a/deps/phc-winner-argon2-20190702/vs2015/Argon2OptTestCI/Argon2OptTestCI.vcxproj b/deps/phc-winner-argon2-20190702/vs2015/Argon2OptTestCI/Argon2OptTestCI.vcxproj new file mode 100644 index 000000000..43cab0a1e --- /dev/null +++ b/deps/phc-winner-argon2-20190702/vs2015/Argon2OptTestCI/Argon2OptTestCI.vcxproj @@ -0,0 +1,235 @@ + + + + + Debug + Win32 + + + ReleaseStatic + Win32 + + + ReleaseStatic + x64 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + {12956597-5E42-433A-93F3-D4EFF50AA207} + Argon2 + 8.1 + Argon2OptTestCI + + + + + v100 + + + $(DefaultPlatformToolset) + + + Application + true + MultiByte + + + Application + false + true + MultiByte + + + Application + false + true + MultiByte + + + Application + true + MultiByte + + + Application + false + true + MultiByte + + + Application + false + true + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + + + + $(SolutionDir)include;$(IncludePath) + $(SolutionDir)vs2015\build\ + $(SolutionDir)vs2015\build\$(ProjectName)\ + + + $(SolutionDir)include;$(IncludePath) + $(SolutionDir)vs2015\build\ + $(SolutionDir)vs2015\build\$(ProjectName)\ + + + $(SolutionDir)include;$(IncludePath) + $(SolutionDir)vs2015\build\ + $(SolutionDir)vs2015\build\$(ProjectName)\ + + + $(SolutionDir)include;$(IncludePath) + $(SolutionDir)vs2015\build\ + $(SolutionDir)vs2015\build\$(ProjectName)\ + + + $(SolutionDir)include;$(IncludePath) + $(SolutionDir)vs2015\build\ + $(SolutionDir)vs2015\build\$(ProjectName)\ + + + $(SolutionDir)include;$(IncludePath) + $(SolutionDir)vs2015\build\ + $(SolutionDir)vs2015\build\$(ProjectName)\ + + + + Level3 + Disabled + true + _CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + + + + + Level3 + Disabled + true + _CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + + + true + + + + + Level3 + MaxSpeed + true + true + true + _CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + + + true + true + true + + + + + Level3 + MaxSpeed + true + true + true + _CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + MultiThreaded + + + true + true + true + + + + + Level3 + MaxSpeed + true + true + true + _CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + + + true + true + true + + + + + Level3 + MaxSpeed + true + true + true + _CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + MultiThreaded + + + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/deps/phc-winner-argon2-20190702/vs2015/Argon2OptTestCI/Argon2OptTestCI.vcxproj.filters b/deps/phc-winner-argon2-20190702/vs2015/Argon2OptTestCI/Argon2OptTestCI.vcxproj.filters new file mode 100644 index 000000000..bcd4dabc4 --- /dev/null +++ b/deps/phc-winner-argon2-20190702/vs2015/Argon2OptTestCI/Argon2OptTestCI.vcxproj.filters @@ -0,0 +1,69 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + \ No newline at end of file diff --git a/deps/phc-winner-argon2-20190702/vs2015/Argon2Ref/Argon2Ref.vcxproj b/deps/phc-winner-argon2-20190702/vs2015/Argon2Ref/Argon2Ref.vcxproj new file mode 100644 index 000000000..a25cd2322 --- /dev/null +++ b/deps/phc-winner-argon2-20190702/vs2015/Argon2Ref/Argon2Ref.vcxproj @@ -0,0 +1,243 @@ + + + + + Debug + Win32 + + + ReleaseStatic + Win32 + + + ReleaseStatic + x64 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + {B9CAC9CE-9F0D-4F52-8D67-FDBBAFCD0DE2} + Argon2Ref + 8.1 + + + + + v100 + + + $(DefaultPlatformToolset) + + + Application + true + MultiByte + + + Application + false + true + MultiByte + + + Application + false + true + MultiByte + + + Application + true + MultiByte + + + Application + false + true + MultiByte + + + Application + false + true + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + + + + $(SolutionDir)vs2015\build\ + $(SolutionDir)vs2015\build\$(ProjectName)\ + $(SolutionDir)include;$(IncludePath) + + + $(SolutionDir)vs2015\build\ + $(SolutionDir)vs2015\build\$(ProjectName)\ + $(SolutionDir)include;$(IncludePath) + + + $(SolutionDir)vs2015\build\ + $(SolutionDir)vs2015\build\$(ProjectName)\ + $(SolutionDir)include;$(IncludePath) + + + $(SolutionDir)vs2015\build\ + $(SolutionDir)vs2015\build\$(ProjectName)\ + $(SolutionDir)include;$(IncludePath) + + + $(SolutionDir)vs2015\build\ + $(SolutionDir)vs2015\build\$(ProjectName)\ + $(SolutionDir)include;$(IncludePath) + + + $(SolutionDir)vs2015\build\ + $(SolutionDir)vs2015\build\$(ProjectName)\ + $(SolutionDir)include;$(IncludePath) + + + + Level3 + Disabled + true + _CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + ProgramDatabase + + + true + + + + + Level3 + Disabled + true + _CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + ProgramDatabase + + + true + + + + + Level3 + MaxSpeed + true + true + true + _CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + ProgramDatabase + + + true + true + true + + + + + Level3 + MaxSpeed + true + true + true + _CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + MultiThreaded + ProgramDatabase + + + true + true + true + + + + + Level3 + MaxSpeed + true + true + true + _CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + ProgramDatabase + + + true + true + true + + + + + Level3 + MaxSpeed + true + true + true + _CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + MultiThreaded + ProgramDatabase + + + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/deps/phc-winner-argon2-20190702/vs2015/Argon2Ref/Argon2Ref.vcxproj.filters b/deps/phc-winner-argon2-20190702/vs2015/Argon2Ref/Argon2Ref.vcxproj.filters new file mode 100644 index 000000000..379cf2e49 --- /dev/null +++ b/deps/phc-winner-argon2-20190702/vs2015/Argon2Ref/Argon2Ref.vcxproj.filters @@ -0,0 +1,69 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + \ No newline at end of file diff --git a/deps/phc-winner-argon2-20190702/vs2015/Argon2RefBench/Argon2RefBench.vcxproj b/deps/phc-winner-argon2-20190702/vs2015/Argon2RefBench/Argon2RefBench.vcxproj new file mode 100644 index 000000000..0106eb71d --- /dev/null +++ b/deps/phc-winner-argon2-20190702/vs2015/Argon2RefBench/Argon2RefBench.vcxproj @@ -0,0 +1,231 @@ + + + + + Debug + Win32 + + + ReleaseStatic + Win32 + + + ReleaseStatic + x64 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + {99203F6A-6E8C-42FC-8C7C-C07E8913D539} + Argon2RefBench + 8.1 + + + + + v100 + + + $(DefaultPlatformToolset) + + + Application + true + MultiByte + + + Application + false + true + MultiByte + + + Application + false + true + MultiByte + + + Application + true + MultiByte + + + Application + false + true + MultiByte + + + Application + false + true + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + + + + $(SolutionDir)vs2015\build\ + $(SolutionDir)vs2015\build\$(ProjectName)\ + $(SolutionDir)include;$(IncludePath) + + + $(SolutionDir)vs2015\build\ + $(SolutionDir)vs2015\build\$(ProjectName)\ + $(SolutionDir)include;$(IncludePath) + + + $(SolutionDir)vs2015\build\ + $(SolutionDir)vs2015\build\$(ProjectName)\ + $(SolutionDir)include;$(IncludePath) + + + $(SolutionDir)vs2015\build\ + $(SolutionDir)vs2015\build\$(ProjectName)\ + $(SolutionDir)include;$(IncludePath) + + + $(SolutionDir)vs2015\build\ + $(SolutionDir)vs2015\build\$(ProjectName)\ + $(SolutionDir)include;$(IncludePath) + + + $(SolutionDir)vs2015\build\ + $(SolutionDir)vs2015\build\$(ProjectName)\ + $(SolutionDir)include;$(IncludePath) + + + + Level3 + Disabled + true + _CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + + + + + Level3 + Disabled + true + _CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + + + + + Level3 + MaxSpeed + true + true + true + _CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + + + true + true + true + + + + + Level3 + MaxSpeed + true + true + true + _CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + MultiThreaded + + + true + true + true + + + + + Level3 + MaxSpeed + true + true + true + _CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + + + true + true + true + + + + + Level3 + MaxSpeed + true + true + true + _CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + MultiThreaded + + + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/deps/phc-winner-argon2-20190702/vs2015/Argon2RefBench/Argon2RefBench.vcxproj.filters b/deps/phc-winner-argon2-20190702/vs2015/Argon2RefBench/Argon2RefBench.vcxproj.filters new file mode 100644 index 000000000..222279aa5 --- /dev/null +++ b/deps/phc-winner-argon2-20190702/vs2015/Argon2RefBench/Argon2RefBench.vcxproj.filters @@ -0,0 +1,69 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + \ No newline at end of file diff --git a/deps/phc-winner-argon2-20190702/vs2015/Argon2RefDll/Argon2RefDll.vcxproj b/deps/phc-winner-argon2-20190702/vs2015/Argon2RefDll/Argon2RefDll.vcxproj new file mode 100644 index 000000000..623aaaccc --- /dev/null +++ b/deps/phc-winner-argon2-20190702/vs2015/Argon2RefDll/Argon2RefDll.vcxproj @@ -0,0 +1,230 @@ + + + + + Debug + Win32 + + + ReleaseStatic + Win32 + + + ReleaseStatic + x64 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + {19D911A1-533C-4475-B313-F372481A35D4} + Argon2RefDll + 8.1 + + + + + v100 + + + $(DefaultPlatformToolset) + + + DynamicLibrary + true + MultiByte + + + DynamicLibrary + false + true + MultiByte + + + DynamicLibrary + false + true + MultiByte + + + DynamicLibrary + true + MultiByte + + + DynamicLibrary + false + true + MultiByte + + + DynamicLibrary + false + true + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + + + + $(SolutionDir)vs2015\build\ + $(SolutionDir)vs2015\build\$(ProjectName)\ + $(SolutionDir)include;$(IncludePath) + + + $(SolutionDir)vs2015\build\ + $(SolutionDir)vs2015\build\$(ProjectName)\ + $(SolutionDir)include;$(IncludePath) + + + $(SolutionDir)vs2015\build\ + $(SolutionDir)vs2015\build\$(ProjectName)\ + $(SolutionDir)include;$(IncludePath) + + + $(SolutionDir)vs2015\build\ + $(SolutionDir)vs2015\build\$(ProjectName)\ + $(SolutionDir)include;$(IncludePath) + + + $(SolutionDir)vs2015\build\ + $(SolutionDir)vs2015\build\$(ProjectName)\ + $(SolutionDir)include;$(IncludePath) + + + $(SolutionDir)vs2015\build\ + $(SolutionDir)vs2015\build\$(ProjectName)\ + $(SolutionDir)include;$(IncludePath) + + + + Level3 + Disabled + true + _CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + + + + + Level3 + Disabled + true + _CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + + + + + Level3 + MaxSpeed + true + true + true + _CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + + + true + true + true + + + + + Level3 + MaxSpeed + true + true + true + _CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + MultiThreaded + + + true + true + true + + + + + Level3 + MaxSpeed + true + true + true + _CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + + + true + true + true + + + + + Level3 + MaxSpeed + true + true + true + _CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + MultiThreaded + + + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/deps/phc-winner-argon2-20190702/vs2015/Argon2RefDll/Argon2RefDll.vcxproj.filters b/deps/phc-winner-argon2-20190702/vs2015/Argon2RefDll/Argon2RefDll.vcxproj.filters new file mode 100644 index 000000000..ad43f914b --- /dev/null +++ b/deps/phc-winner-argon2-20190702/vs2015/Argon2RefDll/Argon2RefDll.vcxproj.filters @@ -0,0 +1,66 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + diff --git a/deps/phc-winner-argon2-20190702/vs2015/Argon2RefGenKAT/Argon2RefGenKAT.vcxproj b/deps/phc-winner-argon2-20190702/vs2015/Argon2RefGenKAT/Argon2RefGenKAT.vcxproj new file mode 100644 index 000000000..f59143958 --- /dev/null +++ b/deps/phc-winner-argon2-20190702/vs2015/Argon2RefGenKAT/Argon2RefGenKAT.vcxproj @@ -0,0 +1,232 @@ + + + + + Debug + Win32 + + + ReleaseStatic + Win32 + + + ReleaseStatic + x64 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + {71921B4C-A795-4A37-95A3-99D600E01211} + Argon2RefGenKAT + 8.1 + + + + + v100 + + + $(DefaultPlatformToolset) + + + Application + true + MultiByte + + + Application + false + true + MultiByte + + + Application + false + true + MultiByte + + + Application + true + MultiByte + + + Application + false + true + MultiByte + + + Application + false + true + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + + + + $(SolutionDir)vs2015\build\ + $(SolutionDir)vs2015\build\$(ProjectName)\ + $(SolutionDir)include;$(IncludePath) + + + $(SolutionDir)vs2015\build\ + $(SolutionDir)vs2015\build\$(ProjectName)\ + $(SolutionDir)include;$(IncludePath) + + + $(SolutionDir)vs2015\build\ + $(SolutionDir)vs2015\build\$(ProjectName)\ + $(SolutionDir)include;$(IncludePath) + + + $(SolutionDir)vs2015\build\ + $(SolutionDir)vs2015\build\$(ProjectName)\ + $(SolutionDir)include;$(IncludePath) + + + $(SolutionDir)vs2015\build\ + $(SolutionDir)vs2015\build\$(ProjectName)\ + $(SolutionDir)include;$(IncludePath) + + + $(SolutionDir)vs2015\build\ + $(SolutionDir)vs2015\build\$(ProjectName)\ + $(SolutionDir)include;$(IncludePath) + + + + Level3 + Disabled + true + _CRT_SECURE_NO_WARNINGS;GENKAT;%(PreprocessorDefinitions) + + + + + Level3 + Disabled + true + _CRT_SECURE_NO_WARNINGS;GENKAT;%(PreprocessorDefinitions) + + + + + Level3 + MaxSpeed + true + true + true + _CRT_SECURE_NO_WARNINGS;GENKAT;%(PreprocessorDefinitions) + + + true + true + true + + + + + Level3 + MaxSpeed + true + true + true + _CRT_SECURE_NO_WARNINGS;GENKAT;%(PreprocessorDefinitions) + MultiThreaded + + + true + true + true + + + + + Level3 + MaxSpeed + true + true + true + _CRT_SECURE_NO_WARNINGS;GENKAT;%(PreprocessorDefinitions) + + + true + true + true + + + + + Level3 + MaxSpeed + true + true + true + _CRT_SECURE_NO_WARNINGS;GENKAT;%(PreprocessorDefinitions) + MultiThreaded + + + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/deps/phc-winner-argon2-20190702/vs2015/Argon2RefGenKAT/Argon2RefGenKAT.vcxproj.filters b/deps/phc-winner-argon2-20190702/vs2015/Argon2RefGenKAT/Argon2RefGenKAT.vcxproj.filters new file mode 100644 index 000000000..8490c8a9a --- /dev/null +++ b/deps/phc-winner-argon2-20190702/vs2015/Argon2RefGenKAT/Argon2RefGenKAT.vcxproj.filters @@ -0,0 +1,72 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + \ No newline at end of file diff --git a/deps/phc-winner-argon2-20190702/vs2015/Argon2RefTestCI/Argon2RefTestCI.vcxproj b/deps/phc-winner-argon2-20190702/vs2015/Argon2RefTestCI/Argon2RefTestCI.vcxproj new file mode 100644 index 000000000..9e9fa0809 --- /dev/null +++ b/deps/phc-winner-argon2-20190702/vs2015/Argon2RefTestCI/Argon2RefTestCI.vcxproj @@ -0,0 +1,231 @@ + + + + + Debug + Win32 + + + ReleaseStatic + Win32 + + + ReleaseStatic + x64 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + {8A1F7F84-34AF-4DB2-9D58-D4823DFE79E9} + Argon2RefTestCI + 8.1 + + + + + v100 + + + $(DefaultPlatformToolset) + + + Application + true + MultiByte + + + Application + false + true + MultiByte + + + Application + false + true + MultiByte + + + Application + true + MultiByte + + + Application + false + true + MultiByte + + + Application + false + true + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + + + + $(SolutionDir)include;$(IncludePath) + $(SolutionDir)vs2015\build\ + $(SolutionDir)vs2015\build\$(ProjectName)\ + + + $(SolutionDir)include;$(IncludePath) + $(SolutionDir)vs2015\build\ + $(SolutionDir)vs2015\build\$(ProjectName)\ + + + $(SolutionDir)include;$(IncludePath) + $(SolutionDir)vs2015\build\ + $(SolutionDir)vs2015\build\$(ProjectName)\ + + + $(SolutionDir)include;$(IncludePath) + $(SolutionDir)vs2015\build\ + $(SolutionDir)vs2015\build\$(ProjectName)\ + + + $(SolutionDir)include;$(IncludePath) + $(SolutionDir)vs2015\build\ + $(SolutionDir)vs2015\build\$(ProjectName)\ + + + $(SolutionDir)include;$(IncludePath) + $(SolutionDir)vs2015\build\ + $(SolutionDir)vs2015\build\$(ProjectName)\ + + + + Level3 + Disabled + true + _CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + + + + + Level3 + Disabled + true + _CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + + + + + Level3 + MaxSpeed + true + true + true + _CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + + + true + true + true + + + + + Level3 + MaxSpeed + true + true + true + _CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + MultiThreaded + + + true + true + true + + + + + Level3 + MaxSpeed + true + true + true + _CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + + + true + true + true + + + + + Level3 + MaxSpeed + true + true + true + _CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + MultiThreaded + + + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/deps/phc-winner-argon2-20190702/vs2015/Argon2RefTestCI/Argon2RefTestCI.vcxproj.filters b/deps/phc-winner-argon2-20190702/vs2015/Argon2RefTestCI/Argon2RefTestCI.vcxproj.filters new file mode 100644 index 000000000..32bca82c5 --- /dev/null +++ b/deps/phc-winner-argon2-20190702/vs2015/Argon2RefTestCI/Argon2RefTestCI.vcxproj.filters @@ -0,0 +1,69 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + \ No newline at end of file diff --git a/deps/scrypt-jane-master/README.md b/deps/scrypt-jane-master/README.md new file mode 100644 index 000000000..9585a0ca3 --- /dev/null +++ b/deps/scrypt-jane-master/README.md @@ -0,0 +1,163 @@ +This project provides a performant, flexible implementations of Colin Percival's [scrypt](http://www.tarsnap.com/scrypt.html). + +# Features + +## Modular Design + +The code uses a modular (compile, not runtime) layout to allow new mixing & hash functions to be added easily. The base components (HMAC, PBKDF2, and scrypt) are static and will immediately work with any conforming mix or hash function. + +## Supported Mix Functions + +* [Salsa20/8](http://cr.yp.to/salsa20.html) +* [ChaCha20/8](http://cr.yp.to/chacha.html) +* [Salsa6420/8]() + +I am not actually aware of any other candidates for a decent mix function. Salsa20/8 was nearly perfect, but its successor, ChaCha20/8, has better diffusion and is thus stronger, is potentially faster given advanced SIMD support (byte level shuffles, or a 32bit rotate), and is slightly cleaner to implement given that it requires no pre/post processing of data for SIMD implementations. + +64-byte blocks are no longer assumed! Salsa6420/8 is a 'proof of concept' 64-bit version of Salsa20/8 with a 128 byte block, and rotation constants chosen to allow 32-bit word shuffles instead of rotations for two of the rotations which put it on par with ChaCha in terms of SSE implementation shortcuts. + +## Supported Hash Functions + +* SHA256/512 +* [BLAKE256/512](https://www.131002.net/blake/) +* [Skein512](http://www.skein-hash.info/) +* [Keccak256/512](http://keccak.noekeon.org/) (SHA-3) + +Hash function implementations, unlike mix functions, are not optimized. The PBKDF2 computations are relatively minor in the scrypt algorithm, so including CPU specific versions, or vastly unrolling loops, would serve little purpose while bloating the code, both source and binary, and making it more confusing to implement correctly. + +Most (now only two!) of the SHA-3 candidates fall in to the "annoying to read/implement" category and have not been included yet. This will of course be moot once ~~BLAKE is chosen as SHA-3~~ Keccak is chosen as SHA-3. Well shit. + +## CPU Adaptation + +The mixing function specialization is selected at runtime based on what the CPU supports (well, x86/x86-64 for now, but theoretically any). On platforms where this is not needed, e.g. where packages are usually compiled from source, it can also select the most suitable implementation at compile time, cutting down on binary size. + +For those who are familiar with the scrypt spec, the code specializes at the ROMix level, allowing all copy, and xor calls to be inlined efficiently. ***Update***: This is actually not as important as I switched from specializing at the mix() level and letting the compiler somewhat inefficiently inline block_copy and block_xor to specializing at ChunkMix(), where they can be inlined properly. I thought about specializing at ROMix(), but it would increase the complexity per mix function even more and would not present many more opportunities than what is generated by the compiler presently. + +MSVC uses SSE intrinsics as opposed to inline assembly for the mix functions to allow the compiler to fully inline properly. Also, Visual Studio is not smart enough to allow inline assembly in 64-bit code. + +## Self Testing + +On first use, scrypt() runs a small series of tests to make sure the hash function, mix functions, and scrypt() itself, are generating correct results. It will exit() (or call a user defined fatal error function) should any of these tests fail. + +Test vectors for individual mix and hash functions are generated from reference implementations. The only "official" test vectors for the full scrypt() are for SHA256 + Salsa20/8 of course; other combinations are generated from this code (once it works with all reference test vectors) and subject to change if any implementation errors are discovered. + +# Performance (on an E5200 2.5GHZ) + +Benchmarks are run _without_ allocating memory, i.e. allocating enough memory before the trials are run. Different allocators can have different costs and non-deterministic effects, which is not the point of comparing implementations. The only hash function compared will be SHA-256 to be comparable to Colin's reference implementation, and the hash function will generally be a fraction of a percent of noise in the overall result. + +Three different scrypt settings are tested (the last two are from the scrypt paper): + +* 'High Volume': N=4096, r=8, p=1, 4mb memory +* 'Interactive': N=16384, r=8, p=1, 16mb memory +* 'Non-Interactive': N=1048576, r=8, p=1, 1gb memory + +__Note__: Benchmark settings are adjusted based on the underlying block size to keep memory usage consistent with default scrypt. This means Salsa64 has r=4 due to having a 128 byte block size. A 256 byte block size would have r=2, 512 byte block would have r=1, etc. Additionally, this means Salsa6420/8 is doing half the rounds/byte of default scrypt, but has 64 bit word mixing vs 32 bit, and thus does somewhat less overall mixing. Salsa6420/~10-12 would be needed to maintain equivalent overall mixing. + +Cycle counts are in millions of cycles. All versions compiled with gcc 4.6.3, -O3. Sorted from fastest to slowest. + +Scaling refers to how much more expensive 'Non-Interactive' is to compute than 'High Volume', normalized to "ideal" scaling (256x difficulty). Under 100% means it becomes easier to process as N grows, over 100% means it becomes more difficult to process as N grows. + + + + + + + + + + + + + + + + + +
ImplemenationAlgoHigh VolumeInteractiveNon-InteractiveScaling
scrypt-jane SSSE3 64bitSalsa6420/8 18.2m 75.6m5120.0m110.0%
scrypt-jane SSSE3 64bitChaCha20/8 19.6m 79.6m5296.7m105.6%
scrypt-jane SSSE3 32bitChaCha20/8 19.8m 80.3m5346.1m105.5%
scrypt-jane SSE2 64bit Salsa6420/8 19.8m 82.1m5529.2m109.1%
scrypt-jane SSE2 64bit Salsa20/8 22.1m 89.7m5938.8m105.0%
scrypt-jane SSE2 32bit Salsa20/8 22.3m 90.6m6011.0m105.3%
scrypt-jane SSE2 64bit ChaCha20/8 23.9m 96.8m6399.7m104.6%
scrypt-jane SSE2 32bit ChaCha20/8 24.2m 98.3m6500.7m104.9%
*Reference SSE2 64bit* Salsa20/8 32.9m135.2m8881.6m105.5%
*Reference SSE2 32bit* Salsa20/8 33.0m134.4m8885.2m105.2%
+ +* scrypt-jane Salsa6420/8-SSSE3 is ~1.80x faster than reference Salsa20/8-SSE2 for High Volume, but drops to 1.73x faster for 'Non-Interactive' instead of remaining constant +* scrypt-jane ChaCha20/8-SSSE3 is ~1.67x faster than reference Salsa20/8-SSE2 +* scrypt-jane Salsa20/8-SSE2 is ~1.48x faster than reference Salsa20/8-SSE2 + +# Performance (on a slightly noisy E3-1270 3.4GHZ) + +All versions compiled with gcc 4.4.7, -O3. Sorted from fastest to slowest. + + + + + + + + + + + + + + + + + + + + + + +
ImplemenationAlgoHigh VolumeInteractiveNon-InteractiveScaling
scrypt-jane AVX 64bit Salsa6420/8 11.8m 52.5m3848.6m127.4%
scrypt-jane SSSE3 64bit Salsa6420/8 13.3m 57.9m4176.6m122.7%
scrypt-jane SSE2 64bit Salsa6420/8 14.2m 61.1m4382.4m120.6%
scrypt-jane AVX 64bit ChaCha20/8 18.0m 77.4m5396.8m117.1%
scrypt-jane AVX 32bit ChaCha20/8 18.3m 82.1m5421.8m115.7%
scrypt-jane SSSE3 64bit ChaCha20/8 19.0m 81.3m5600.7m115.1%
scrypt-jane AVX 64bit Salsa20/8 19.0m 81.2m5610.6m115.3%
scrypt-jane AVX 32bit Salsa20/8 19.0m 81.3m5621.6m115.6%
scrypt-jane SSSE3 32bit ChaCha20/8 19.1m 81.8m5621.6m115.0%
scrypt-jane SSE2 64bit Salsa20/8 19.5m 83.8m5772.9m115.6%
scrypt-jane SSE2 32bit Salsa20/8 19.6m 84.0m5793.9m115.5%
*Reference SSE2/AVX 64bit* Salsa20/8 21.5m 90.4m6147.1m111.7%
*Reference SSE2/AVX 32bit* Salsa20/8 22.3m 94.0m6267.7m110.0%
scrypt-jane SSE2 64bit ChaCha20/8 23.1m 97.7m6670.0m112.8%
scrypt-jane SSE2 32bit ChaCha20/8 23.3m 98.4m6728.7m112.8%
*Reference SSE2 64bit* Salsa20/8 30.4m125.6m8139.4m104.6%
*Reference SSE2 32bit* Salsa20/8 30.0m124.5m8469.3m110.3%
+ +* scrypt-jane Salsa6420/8-AVX is 1.60x - 1.82x faster than reference Salsa20/8-SSE2/AVX +* scrypt-jane ChaCha20/8-AVX is 1.13x - 1.19x faster than reference Salsa20/8-SSE2/AVX +* scrypt-jane Salsa20/8-AVX is 1.09x - 1.13x faster than reference Salsa20/8-SSE2/AVX + + +# Building + + [gcc,icc,clang] scrypt-jane.c -O3 -[m32,m64] -DSCRYPT_MIX -DSCRYPT_HASH -c + +where SCRYPT_MIX is one of + +* SCRYPT_SALSA +* SCRYPT_SALSA64 (no optimized 32-bit implementation) +* SCRYPT_CHACHA + +and SCRYPT_HASH is one of + +* SCRYPT_SHA256 +* SCRYPT_SHA512 +* SCRYPT_BLAKE256 +* SCRYPT_BLAKE512 +* SCRYPT_SKEIN512 +* SCRYPT_KECCAK256 +* SCRYPT_KECCAK512 + +e.g. + + gcc scrypt-jane.c -O3 -DSCRYPT_CHACHA -DSCRYPT_BLAKE512 -c + gcc example.c scrypt-jane.o -o example + +clang *may* need "-no-integrated-as" as some? versions don't support ".intel_syntax" + +# Using + + #include "scrypt-jane.h" + + scrypt(password, password_len, salt, salt_len, Nfactor, pfactor, rfactor, out, want_bytes); + +## scrypt parameters + +* Nfactor: Increases CPU & Memory Hardness +* rfactor: Increases Memory Hardness +* pfactor: Increases CPU Hardness + +In scrypt terms + +* N = (1 << (Nfactor + 1)), which controls how many times to mix each chunk, and how many temporary chunks are used. Increasing N increases both CPU time and memory used. +* r = (1 << rfactor), which controls how many blocks are in a chunk (i.e., 2 * r blocks are in a chunk). Increasing r increases how much memory is used. +* p = (1 << pfactor), which controls how many passes to perform over the set of N chunks. Increasing p increases CPU time used. + +I chose to use the log2 of each parameter as it is the common way to communicate settings (e.g. 2^20, not 1048576). + +# License + +Public Domain, or MIT \ No newline at end of file diff --git a/deps/scrypt-jane-master/_hashcat/macos.patch b/deps/scrypt-jane-master/_hashcat/macos.patch new file mode 100644 index 000000000..6966a7b5f --- /dev/null +++ b/deps/scrypt-jane-master/_hashcat/macos.patch @@ -0,0 +1,87 @@ +diff --git a/code/scrypt-jane-portable-x86.h b/code/scrypt-jane-portable-x86.h +index 396a7bd..e7858cd 100644 +--- a/code/scrypt-jane-portable-x86.h ++++ b/code/scrypt-jane-portable-x86.h +@@ -459,4 +459,11 @@ get_top_cpuflag_desc(size_t flag) { + #endif + #endif + +-#endif /* defined(CPU_X86) || defined(CPU_X86_64) */ +\ No newline at end of file ++#else ++ ++static size_t ++detect_cpu(void) { ++ return 0; ++} ++ ++#endif /* defined(CPU_X86) || defined(CPU_X86_64) */ +diff --git a/code/scrypt-jane-portable.h b/code/scrypt-jane-portable.h +index e83e314..26690ed 100644 +--- a/code/scrypt-jane-portable.h ++++ b/code/scrypt-jane-portable.h +@@ -92,7 +92,7 @@ + #define STDCALL __stdcall + #undef NAKED + #define NAKED __declspec(naked) +- #define ALIGN(n) __declspec(align(n)) ++ #define JANE_ALIGN(n) __declspec(align(n)) + #endif + #if defined(__ICC) + #define COMPILER_INTEL +@@ -136,7 +136,7 @@ + #define CDECL __attribute__((cdecl)) + #undef STDCALL + #define STDCALL __attribute__((stdcall)) +- #define ALIGN(n) __attribute__((aligned(n))) ++ #define JANE_ALIGN(n) __attribute__((aligned(n))) + #include + #endif + #if defined(__MINGW32__) || defined(__MINGW64__) +diff --git a/code/scrypt-jane-romix-basic.h b/code/scrypt-jane-romix-basic.h +index 57ba649..ddae500 100644 +--- a/code/scrypt-jane-romix-basic.h ++++ b/code/scrypt-jane-romix-basic.h +@@ -35,9 +35,9 @@ scrypt_test_mix_instance(chunkmixfn mixfn, blockfixfn prefn, blockfixfn postfn, + /* r = 2, (2 * r) = 4 blocks in a chunk, 4 * SCRYPT_BLOCK_WORDS total */ + const uint32_t r = 2, blocks = 2 * r, words = blocks * SCRYPT_BLOCK_WORDS; + #if (defined(X86ASM_AVX2) || defined(X86_64ASM_AVX2) || defined(X86_INTRINSIC_AVX2)) +- scrypt_mix_word_t ALIGN(32) chunk[2][4 * SCRYPT_BLOCK_WORDS], v; ++ scrypt_mix_word_t JANE_ALIGN(32) chunk[2][4 * SCRYPT_BLOCK_WORDS], v; + #else +- scrypt_mix_word_t ALIGN(16) chunk[2][4 * SCRYPT_BLOCK_WORDS], v; ++ scrypt_mix_word_t JANE_ALIGN(16) chunk[2][4 * SCRYPT_BLOCK_WORDS], v; + #endif + uint8_t final[16]; + size_t i; +diff --git a/code/scrypt-jane-romix-template.h b/code/scrypt-jane-romix-template.h +index 6bbda62..77c0114 100644 +--- a/code/scrypt-jane-romix-template.h ++++ b/code/scrypt-jane-romix-template.h +@@ -20,9 +20,9 @@ + static void asm_calling_convention + SCRYPT_CHUNKMIX_FN(scrypt_mix_word_t *Bout/*[chunkWords]*/, scrypt_mix_word_t *Bin/*[chunkWords]*/, scrypt_mix_word_t *Bxor/*[chunkWords]*/, uint32_t r) { + #if (defined(X86ASM_AVX2) || defined(X86_64ASM_AVX2) || defined(X86_INTRINSIC_AVX2)) +- scrypt_mix_word_t ALIGN(32) X[SCRYPT_BLOCK_WORDS], *block; ++ scrypt_mix_word_t JANE_ALIGN(32) X[SCRYPT_BLOCK_WORDS], *block; + #else +- scrypt_mix_word_t ALIGN(16) X[SCRYPT_BLOCK_WORDS], *block; ++ scrypt_mix_word_t JANE_ALIGN(16) X[SCRYPT_BLOCK_WORDS], *block; + #endif + uint32_t i, j, blocksPerChunk = r * 2, half = 0; + +diff --git a/test.sh b/test.sh +old mode 100644 +new mode 100755 +index dc3d032..13be9eb +--- a/test.sh ++++ b/test.sh +@@ -2,7 +2,7 @@ + + test() { + sleep 0.25 # mingw is stupid and will occasionally not have permission to overwrite scrypt_test +- gcc scrypt-jane-test.c -O3 -DSCRYPT_$1 -DSCRYPT_$2 $3 -o scrypt_test 2>/dev/null ++ gcc scrypt-jane-test.c -O3 -DSCRYPT_$1 -DSCRYPT_$2 $3 -o scrypt_test #2>/dev/null + local RC=$? + if [ $RC -ne 0 ]; then + echo "$1/$2: failed to compile " diff --git a/deps/scrypt-jane-master/code/scrypt-conf.h b/deps/scrypt-jane-master/code/scrypt-conf.h new file mode 100644 index 000000000..46685a518 --- /dev/null +++ b/deps/scrypt-jane-master/code/scrypt-conf.h @@ -0,0 +1,28 @@ +/* + pick the best algo at runtime or compile time? + ---------------------------------------------- + SCRYPT_CHOOSE_COMPILETIME (gcc only!) + SCRYPT_CHOOSE_RUNTIME +*/ +#define SCRYPT_CHOOSE_RUNTIME + + +/* + hash function to use + ------------------------------- + SCRYPT_BLAKE256 + SCRYPT_BLAKE512 + SCRYPT_SHA256 + SCRYPT_SHA512 + SCRYPT_SKEIN512 +*/ +//#define SCRYPT_SHA256 + + +/* + block mixer to use + ----------------------------- + SCRYPT_CHACHA + SCRYPT_SALSA +*/ +//#define SCRYPT_SALSA diff --git a/deps/scrypt-jane-master/code/scrypt-jane-chacha.h b/deps/scrypt-jane-master/code/scrypt-jane-chacha.h new file mode 100644 index 000000000..54234576e --- /dev/null +++ b/deps/scrypt-jane-master/code/scrypt-jane-chacha.h @@ -0,0 +1,162 @@ +#define SCRYPT_MIX_BASE "ChaCha20/8" + +typedef uint32_t scrypt_mix_word_t; + +#define SCRYPT_WORDTO8_LE U32TO8_LE +#define SCRYPT_WORD_ENDIAN_SWAP U32_SWAP + +#define SCRYPT_BLOCK_BYTES 64 +#define SCRYPT_BLOCK_WORDS (SCRYPT_BLOCK_BYTES / sizeof(scrypt_mix_word_t)) + +/* must have these here in case block bytes is ever != 64 */ +#include "scrypt-jane-romix-basic.h" + +#include "scrypt-jane-mix_chacha-xop.h" +#include "scrypt-jane-mix_chacha-avx.h" +#include "scrypt-jane-mix_chacha-ssse3.h" +#include "scrypt-jane-mix_chacha-sse2.h" +#include "scrypt-jane-mix_chacha.h" + +#if defined(SCRYPT_CHACHA_XOP) + #define SCRYPT_CHUNKMIX_FN scrypt_ChunkMix_xop + #define SCRYPT_ROMIX_FN scrypt_ROMix_xop + #define SCRYPT_MIX_FN chacha_core_xop + #define SCRYPT_ROMIX_TANGLE_FN scrypt_romix_nop + #define SCRYPT_ROMIX_UNTANGLE_FN scrypt_romix_nop + #include "scrypt-jane-romix-template.h" +#endif + +#if defined(SCRYPT_CHACHA_AVX) + #define SCRYPT_CHUNKMIX_FN scrypt_ChunkMix_avx + #define SCRYPT_ROMIX_FN scrypt_ROMix_avx + #define SCRYPT_MIX_FN chacha_core_avx + #define SCRYPT_ROMIX_TANGLE_FN scrypt_romix_nop + #define SCRYPT_ROMIX_UNTANGLE_FN scrypt_romix_nop + #include "scrypt-jane-romix-template.h" +#endif + +#if defined(SCRYPT_CHACHA_SSSE3) + #define SCRYPT_CHUNKMIX_FN scrypt_ChunkMix_ssse3 + #define SCRYPT_ROMIX_FN scrypt_ROMix_ssse3 + #define SCRYPT_MIX_FN chacha_core_ssse3 + #define SCRYPT_ROMIX_TANGLE_FN scrypt_romix_nop + #define SCRYPT_ROMIX_UNTANGLE_FN scrypt_romix_nop + #include "scrypt-jane-romix-template.h" +#endif + +#if defined(SCRYPT_CHACHA_SSE2) + #define SCRYPT_CHUNKMIX_FN scrypt_ChunkMix_sse2 + #define SCRYPT_ROMIX_FN scrypt_ROMix_sse2 + #define SCRYPT_MIX_FN chacha_core_sse2 + #define SCRYPT_ROMIX_TANGLE_FN scrypt_romix_nop + #define SCRYPT_ROMIX_UNTANGLE_FN scrypt_romix_nop + #include "scrypt-jane-romix-template.h" +#endif + +/* cpu agnostic */ +#define SCRYPT_ROMIX_FN scrypt_ROMix_basic +#define SCRYPT_MIX_FN chacha_core_basic +#define SCRYPT_ROMIX_TANGLE_FN scrypt_romix_convert_endian +#define SCRYPT_ROMIX_UNTANGLE_FN scrypt_romix_convert_endian +#include "scrypt-jane-romix-template.h" + +#if !defined(SCRYPT_CHOOSE_COMPILETIME) +static scrypt_ROMixfn +scrypt_getROMix(void) { + size_t cpuflags = detect_cpu(); + +#if defined(SCRYPT_CHACHA_XOP) + if (cpuflags & cpu_xop) + return scrypt_ROMix_xop; + else +#endif + +#if defined(SCRYPT_CHACHA_AVX) + if (cpuflags & cpu_avx) + return scrypt_ROMix_avx; + else +#endif + +#if defined(SCRYPT_CHACHA_SSSE3) + if (cpuflags & cpu_ssse3) + return scrypt_ROMix_ssse3; + else +#endif + +#if defined(SCRYPT_CHACHA_SSE2) + if (cpuflags & cpu_sse2) + return scrypt_ROMix_sse2; + else +#endif + + return scrypt_ROMix_basic; +} +#endif + + +#if defined(SCRYPT_TEST_SPEED) +static size_t +available_implementations(void) { + size_t cpuflags = detect_cpu(); + size_t flags = 0; + +#if defined(SCRYPT_CHACHA_XOP) + if (cpuflags & cpu_xop) + flags |= cpu_xop; +#endif + +#if defined(SCRYPT_CHACHA_AVX) + if (cpuflags & cpu_avx) + flags |= cpu_avx; +#endif + +#if defined(SCRYPT_CHACHA_SSSE3) + if (cpuflags & cpu_ssse3) + flags |= cpu_ssse3; +#endif + +#if defined(SCRYPT_CHACHA_SSE2) + if (cpuflags & cpu_sse2) + flags |= cpu_sse2; +#endif + + return flags; +} +#endif + +static int +scrypt_test_mix(void) { + static const uint8_t expected[16] = { + 0x48,0x2b,0x2d,0xb8,0xa1,0x33,0x22,0x73,0xcd,0x16,0xc4,0xb4,0xb0,0x7f,0xb1,0x8a, + }; + + int ret = 1; + size_t cpuflags = detect_cpu(); + +#if defined(SCRYPT_CHACHA_XOP) + if (cpuflags & cpu_xop) + ret &= scrypt_test_mix_instance(scrypt_ChunkMix_xop, scrypt_romix_nop, scrypt_romix_nop, expected); +#endif + +#if defined(SCRYPT_CHACHA_AVX) + if (cpuflags & cpu_avx) + ret &= scrypt_test_mix_instance(scrypt_ChunkMix_avx, scrypt_romix_nop, scrypt_romix_nop, expected); +#endif + +#if defined(SCRYPT_CHACHA_SSSE3) + if (cpuflags & cpu_ssse3) + ret &= scrypt_test_mix_instance(scrypt_ChunkMix_ssse3, scrypt_romix_nop, scrypt_romix_nop, expected); +#endif + +#if defined(SCRYPT_CHACHA_SSE2) + if (cpuflags & cpu_sse2) + ret &= scrypt_test_mix_instance(scrypt_ChunkMix_sse2, scrypt_romix_nop, scrypt_romix_nop, expected); +#endif + +#if defined(SCRYPT_CHACHA_BASIC) + ret &= scrypt_test_mix_instance(scrypt_ChunkMix_basic, scrypt_romix_convert_endian, scrypt_romix_convert_endian, expected); +#endif + + return ret; +} + diff --git a/deps/scrypt-jane-master/code/scrypt-jane-hash.h b/deps/scrypt-jane-master/code/scrypt-jane-hash.h new file mode 100644 index 000000000..e72781485 --- /dev/null +++ b/deps/scrypt-jane-master/code/scrypt-jane-hash.h @@ -0,0 +1,48 @@ +#if defined(SCRYPT_BLAKE512) +#include "scrypt-jane-hash_blake512.h" +#elif defined(SCRYPT_BLAKE256) +#include "scrypt-jane-hash_blake256.h" +#elif defined(SCRYPT_SHA512) +#include "scrypt-jane-hash_sha512.h" +#elif defined(SCRYPT_SHA256) +#include "scrypt-jane-hash_sha256.h" +#elif defined(SCRYPT_SKEIN512) +#include "scrypt-jane-hash_skein512.h" +#elif defined(SCRYPT_KECCAK512) || defined(SCRYPT_KECCAK256) +#include "scrypt-jane-hash_keccak.h" +#else + #define SCRYPT_HASH "ERROR" + #define SCRYPT_HASH_BLOCK_SIZE 64 + #define SCRYPT_HASH_DIGEST_SIZE 64 + typedef struct scrypt_hash_state_t { size_t dummy; } scrypt_hash_state; + typedef uint8_t scrypt_hash_digest[SCRYPT_HASH_DIGEST_SIZE]; + static void scrypt_hash_init(scrypt_hash_state *S) {} + static void scrypt_hash_update(scrypt_hash_state *S, const uint8_t *in, size_t inlen) {} + static void scrypt_hash_finish(scrypt_hash_state *S, uint8_t *hash) {} + static const uint8_t scrypt_test_hash_expected[SCRYPT_HASH_DIGEST_SIZE] = {0}; + #error must define a hash function! +#endif + +#include "scrypt-jane-pbkdf2.h" + +#define SCRYPT_TEST_HASH_LEN 257 /* (2 * largest block size) + 1 */ + +static int +scrypt_test_hash(void) { + scrypt_hash_state st; + scrypt_hash_digest hash, final; + uint8_t msg[SCRYPT_TEST_HASH_LEN]; + size_t i; + + for (i = 0; i < SCRYPT_TEST_HASH_LEN; i++) + msg[i] = (uint8_t)i; + + scrypt_hash_init(&st); + for (i = 0; i < SCRYPT_TEST_HASH_LEN + 1; i++) { + scrypt_hash(hash, msg, i); + scrypt_hash_update(&st, hash, sizeof(hash)); + } + scrypt_hash_finish(&st, final); + return scrypt_verify(final, scrypt_test_hash_expected, SCRYPT_HASH_DIGEST_SIZE); +} + diff --git a/deps/scrypt-jane-master/code/scrypt-jane-hash_blake256.h b/deps/scrypt-jane-master/code/scrypt-jane-hash_blake256.h new file mode 100644 index 000000000..4690b1144 --- /dev/null +++ b/deps/scrypt-jane-master/code/scrypt-jane-hash_blake256.h @@ -0,0 +1,177 @@ +#define SCRYPT_HASH "BLAKE-256" +#define SCRYPT_HASH_BLOCK_SIZE 64 +#define SCRYPT_HASH_DIGEST_SIZE 32 + +typedef uint8_t scrypt_hash_digest[SCRYPT_HASH_DIGEST_SIZE]; + +const uint8_t blake256_sigma[] = { + 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, +}; + +const uint32_t blake256_constants[16] = { + 0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344,0xa4093822, 0x299f31d0, 0x082efa98, 0xec4e6c89, + 0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c,0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917 +}; + +typedef struct scrypt_hash_state_t { + uint32_t H[8], T[2]; + uint32_t leftover; + uint8_t buffer[SCRYPT_HASH_BLOCK_SIZE]; +} scrypt_hash_state; + +static void +blake256_blocks(scrypt_hash_state *S, const uint8_t *in, size_t blocks) { + const uint8_t *sigma, *sigma_end = blake256_sigma + (10 * 16); + uint32_t m[16], v[16], h[8], t[2]; + uint32_t i; + + for (i = 0; i < 8; i++) h[i] = S->H[i]; + for (i = 0; i < 2; i++) t[i] = S->T[i]; + + while (blocks--) { + t[0] += 512; + t[1] += (t[0] < 512) ? 1 : 0; + + for (i = 0; i < 8; i++) v[i ] = h[i]; + for (i = 0; i < 4; i++) v[i + 8] = blake256_constants[i]; + for (i = 0; i < 2; i++) v[i + 12] = blake256_constants[i+4] ^ t[0]; + for (i = 0; i < 2; i++) v[i + 14] = blake256_constants[i+6] ^ t[1]; + + for (i = 0; i < 16; i++) m[i] = U8TO32_BE(&in[i * 4]); + in += 64; + + #define G(a,b,c,d,e) \ + v[a] += (m[sigma[e+0]] ^ blake256_constants[sigma[e+1]]) + v[b]; \ + v[d] = ROTR32(v[d] ^ v[a],16); \ + v[c] += v[d]; \ + v[b] = ROTR32(v[b] ^ v[c],12); \ + v[a] += (m[sigma[e+1]] ^ blake256_constants[sigma[e+0]]) + v[b]; \ + v[d] = ROTR32(v[d] ^ v[a], 8); \ + v[c] += v[d]; \ + v[b] = ROTR32(v[b] ^ v[c], 7); + + for (i = 0, sigma = blake256_sigma; i < 14; i++) { + G(0, 4, 8,12, 0); + G(1, 5, 9,13, 2); + G(2, 6,10,14, 4); + G(3, 7,11,15, 6); + + G(0, 5,10,15, 8); + G(1, 6,11,12,10); + G(2, 7, 8,13,12); + G(3, 4, 9,14,14); + + sigma += 16; + if (sigma == sigma_end) + sigma = blake256_sigma; + } + + #undef G + + for (i = 0; i < 8; i++) h[i] ^= (v[i] ^ v[i + 8]); + } + + for (i = 0; i < 8; i++) S->H[i] = h[i]; + for (i = 0; i < 2; i++) S->T[i] = t[i]; +} + +static void +scrypt_hash_init(scrypt_hash_state *S) { + S->H[0] = 0x6a09e667ULL; + S->H[1] = 0xbb67ae85ULL; + S->H[2] = 0x3c6ef372ULL; + S->H[3] = 0xa54ff53aULL; + S->H[4] = 0x510e527fULL; + S->H[5] = 0x9b05688cULL; + S->H[6] = 0x1f83d9abULL; + S->H[7] = 0x5be0cd19ULL; + S->T[0] = 0; + S->T[1] = 0; + S->leftover = 0; +} + +static void +scrypt_hash_update(scrypt_hash_state *S, const uint8_t *in, size_t inlen) { + size_t blocks, want; + + /* handle the previous data */ + if (S->leftover) { + want = (SCRYPT_HASH_BLOCK_SIZE - S->leftover); + want = (want < inlen) ? want : inlen; + memcpy(S->buffer + S->leftover, in, want); + S->leftover += (uint32_t)want; + if (S->leftover < SCRYPT_HASH_BLOCK_SIZE) + return; + in += want; + inlen -= want; + blake256_blocks(S, S->buffer, 1); + } + + /* handle the current data */ + blocks = (inlen & ~(SCRYPT_HASH_BLOCK_SIZE - 1)); + S->leftover = (uint32_t)(inlen - blocks); + if (blocks) { + blake256_blocks(S, in, blocks / SCRYPT_HASH_BLOCK_SIZE); + in += blocks; + } + + /* handle leftover data */ + if (S->leftover) + memcpy(S->buffer, in, S->leftover); +} + +static void +scrypt_hash_finish(scrypt_hash_state *S, uint8_t *hash) { + uint32_t th, tl, bits; + + bits = (S->leftover << 3); + tl = S->T[0] + bits; + th = S->T[1]; + if (S->leftover == 0) { + S->T[0] = (uint32_t)0 - (uint32_t)512; + S->T[1] = (uint32_t)0 - (uint32_t)1; + } else if (S->T[0] == 0) { + S->T[0] = ((uint32_t)0 - (uint32_t)512) + bits; + S->T[1] = S->T[1] - 1; + } else { + S->T[0] -= (512 - bits); + } + + S->buffer[S->leftover] = 0x80; + if (S->leftover <= 55) { + memset(S->buffer + S->leftover + 1, 0, 55 - S->leftover); + } else { + memset(S->buffer + S->leftover + 1, 0, 63 - S->leftover); + blake256_blocks(S, S->buffer, 1); + S->T[0] = (uint32_t)0 - (uint32_t)512; + S->T[1] = (uint32_t)0 - (uint32_t)1; + memset(S->buffer, 0, 56); + } + S->buffer[55] |= 1; + U32TO8_BE(S->buffer + 56, th); + U32TO8_BE(S->buffer + 60, tl); + blake256_blocks(S, S->buffer, 1); + + U32TO8_BE(&hash[ 0], S->H[0]); + U32TO8_BE(&hash[ 4], S->H[1]); + U32TO8_BE(&hash[ 8], S->H[2]); + U32TO8_BE(&hash[12], S->H[3]); + U32TO8_BE(&hash[16], S->H[4]); + U32TO8_BE(&hash[20], S->H[5]); + U32TO8_BE(&hash[24], S->H[6]); + U32TO8_BE(&hash[28], S->H[7]); +} + +static const uint8_t scrypt_test_hash_expected[SCRYPT_HASH_DIGEST_SIZE] = { + 0xcc,0xa9,0x1e,0xa9,0x20,0x97,0x37,0x40,0x17,0xc0,0xa0,0x52,0x87,0xfc,0x08,0x20, + 0x40,0xf5,0x81,0x86,0x62,0x75,0x78,0xb2,0x79,0xce,0xde,0x27,0x3c,0x7f,0x85,0xd8, +}; diff --git a/deps/scrypt-jane-master/code/scrypt-jane-hash_blake512.h b/deps/scrypt-jane-master/code/scrypt-jane-hash_blake512.h new file mode 100644 index 000000000..ea2a583de --- /dev/null +++ b/deps/scrypt-jane-master/code/scrypt-jane-hash_blake512.h @@ -0,0 +1,181 @@ +#define SCRYPT_HASH "BLAKE-512" +#define SCRYPT_HASH_BLOCK_SIZE 128 +#define SCRYPT_HASH_DIGEST_SIZE 64 + +typedef uint8_t scrypt_hash_digest[SCRYPT_HASH_DIGEST_SIZE]; + +const uint8_t blake512_sigma[] = { + 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, +}; + +const uint64_t blake512_constants[16] = { + 0x243f6a8885a308d3ULL, 0x13198a2e03707344ULL, 0xa4093822299f31d0ULL, 0x082efa98ec4e6c89ULL, + 0x452821e638d01377ULL, 0xbe5466cf34e90c6cULL, 0xc0ac29b7c97c50ddULL, 0x3f84d5b5b5470917ULL, + 0x9216d5d98979fb1bULL, 0xd1310ba698dfb5acULL, 0x2ffd72dbd01adfb7ULL, 0xb8e1afed6a267e96ULL, + 0xba7c9045f12c7f99ULL, 0x24a19947b3916cf7ULL, 0x0801f2e2858efc16ULL, 0x636920d871574e69ULL +}; + +typedef struct scrypt_hash_state_t { + uint64_t H[8], T[2]; + uint32_t leftover; + uint8_t buffer[SCRYPT_HASH_BLOCK_SIZE]; +} scrypt_hash_state; + +static void +blake512_blocks(scrypt_hash_state *S, const uint8_t *in, size_t blocks) { + const uint8_t *sigma, *sigma_end = blake512_sigma + (10 * 16); + uint64_t m[16], v[16], h[8], t[2]; + uint32_t i; + + for (i = 0; i < 8; i++) h[i] = S->H[i]; + for (i = 0; i < 2; i++) t[i] = S->T[i]; + + while (blocks--) { + t[0] += 1024; + t[1] += (t[0] < 1024) ? 1 : 0; + + for (i = 0; i < 8; i++) v[i ] = h[i]; + for (i = 0; i < 4; i++) v[i + 8] = blake512_constants[i]; + for (i = 0; i < 2; i++) v[i + 12] = blake512_constants[i+4] ^ t[0]; + for (i = 0; i < 2; i++) v[i + 14] = blake512_constants[i+6] ^ t[1]; + + for (i = 0; i < 16; i++) m[i] = U8TO64_BE(&in[i * 8]); + in += 128; + + #define G(a,b,c,d,e) \ + v[a] += (m[sigma[e+0]] ^ blake512_constants[sigma[e+1]]) + v[b]; \ + v[d] = ROTR64(v[d] ^ v[a],32); \ + v[c] += v[d]; \ + v[b] = ROTR64(v[b] ^ v[c],25); \ + v[a] += (m[sigma[e+1]] ^ blake512_constants[sigma[e+0]]) + v[b]; \ + v[d] = ROTR64(v[d] ^ v[a],16); \ + v[c] += v[d]; \ + v[b] = ROTR64(v[b] ^ v[c],11); + + for (i = 0, sigma = blake512_sigma; i < 16; i++) { + G(0, 4, 8,12, 0); + G(1, 5, 9,13, 2); + G(2, 6,10,14, 4); + G(3, 7,11,15, 6); + G(0, 5,10,15, 8); + G(1, 6,11,12,10); + G(2, 7, 8,13,12); + G(3, 4, 9,14,14); + + sigma += 16; + if (sigma == sigma_end) + sigma = blake512_sigma; + } + + #undef G + + for (i = 0; i < 8; i++) h[i] ^= (v[i] ^ v[i + 8]); + } + + for (i = 0; i < 8; i++) S->H[i] = h[i]; + for (i = 0; i < 2; i++) S->T[i] = t[i]; +} + +static void +scrypt_hash_init(scrypt_hash_state *S) { + S->H[0] = 0x6a09e667f3bcc908ULL; + S->H[1] = 0xbb67ae8584caa73bULL; + S->H[2] = 0x3c6ef372fe94f82bULL; + S->H[3] = 0xa54ff53a5f1d36f1ULL; + S->H[4] = 0x510e527fade682d1ULL; + S->H[5] = 0x9b05688c2b3e6c1fULL; + S->H[6] = 0x1f83d9abfb41bd6bULL; + S->H[7] = 0x5be0cd19137e2179ULL; + S->T[0] = 0; + S->T[1] = 0; + S->leftover = 0; +} + +static void +scrypt_hash_update(scrypt_hash_state *S, const uint8_t *in, size_t inlen) { + size_t blocks, want; + + /* handle the previous data */ + if (S->leftover) { + want = (SCRYPT_HASH_BLOCK_SIZE - S->leftover); + want = (want < inlen) ? want : inlen; + memcpy(S->buffer + S->leftover, in, want); + S->leftover += (uint32_t)want; + if (S->leftover < SCRYPT_HASH_BLOCK_SIZE) + return; + in += want; + inlen -= want; + blake512_blocks(S, S->buffer, 1); + } + + /* handle the current data */ + blocks = (inlen & ~(SCRYPT_HASH_BLOCK_SIZE - 1)); + S->leftover = (uint32_t)(inlen - blocks); + if (blocks) { + blake512_blocks(S, in, blocks / SCRYPT_HASH_BLOCK_SIZE); + in += blocks; + } + + /* handle leftover data */ + if (S->leftover) + memcpy(S->buffer, in, S->leftover); +} + +static void +scrypt_hash_finish(scrypt_hash_state *S, uint8_t *hash) { + uint64_t th, tl; + size_t bits; + + bits = (S->leftover << 3); + tl = S->T[0] + bits; + th = S->T[1]; + if (S->leftover == 0) { + S->T[0] = (uint64_t)0 - (uint64_t)1024; + S->T[1] = (uint64_t)0 - (uint64_t)1; + } else if (S->T[0] == 0) { + S->T[0] = ((uint64_t)0 - (uint64_t)1024) + bits; + S->T[1] = S->T[1] - 1; + } else { + S->T[0] -= (1024 - bits); + } + + S->buffer[S->leftover] = 0x80; + if (S->leftover <= 111) { + memset(S->buffer + S->leftover + 1, 0, 111 - S->leftover); + } else { + memset(S->buffer + S->leftover + 1, 0, 127 - S->leftover); + blake512_blocks(S, S->buffer, 1); + S->T[0] = (uint64_t)0 - (uint64_t)1024; + S->T[1] = (uint64_t)0 - (uint64_t)1; + memset(S->buffer, 0, 112); + } + S->buffer[111] |= 1; + U64TO8_BE(S->buffer + 112, th); + U64TO8_BE(S->buffer + 120, tl); + blake512_blocks(S, S->buffer, 1); + + U64TO8_BE(&hash[ 0], S->H[0]); + U64TO8_BE(&hash[ 8], S->H[1]); + U64TO8_BE(&hash[16], S->H[2]); + U64TO8_BE(&hash[24], S->H[3]); + U64TO8_BE(&hash[32], S->H[4]); + U64TO8_BE(&hash[40], S->H[5]); + U64TO8_BE(&hash[48], S->H[6]); + U64TO8_BE(&hash[56], S->H[7]); +} + +static const uint8_t scrypt_test_hash_expected[SCRYPT_HASH_DIGEST_SIZE] = { + 0x2f,0x9d,0x5b,0xbe,0x24,0x0d,0x63,0xd3,0xa0,0xac,0x4f,0xd3,0x01,0xc0,0x23,0x6f, + 0x6d,0xdf,0x6e,0xfb,0x60,0x6f,0xa0,0x74,0xdf,0x9f,0x25,0x65,0xb6,0x11,0x0a,0x83, + 0x23,0x96,0xba,0x91,0x68,0x4b,0x85,0x15,0x13,0x54,0xba,0x19,0xf3,0x2c,0x5a,0x4a, + 0x1f,0x78,0x31,0x02,0xc9,0x1e,0x56,0xc4,0x54,0xca,0xf9,0x8f,0x2c,0x7f,0x85,0xac +}; diff --git a/deps/scrypt-jane-master/code/scrypt-jane-hash_keccak.h b/deps/scrypt-jane-master/code/scrypt-jane-hash_keccak.h new file mode 100644 index 000000000..7ed55747a --- /dev/null +++ b/deps/scrypt-jane-master/code/scrypt-jane-hash_keccak.h @@ -0,0 +1,168 @@ +#if defined(SCRYPT_KECCAK256) + #define SCRYPT_HASH "Keccak-256" + #define SCRYPT_HASH_DIGEST_SIZE 32 +#else + #define SCRYPT_HASH "Keccak-512" + #define SCRYPT_HASH_DIGEST_SIZE 64 +#endif +#define SCRYPT_KECCAK_F 1600 +#define SCRYPT_KECCAK_C (SCRYPT_HASH_DIGEST_SIZE * 8 * 2) /* 256=512, 512=1024 */ +#define SCRYPT_KECCAK_R (SCRYPT_KECCAK_F - SCRYPT_KECCAK_C) /* 256=1088, 512=576 */ +#define SCRYPT_HASH_BLOCK_SIZE (SCRYPT_KECCAK_R / 8) + +typedef uint8_t scrypt_hash_digest[SCRYPT_HASH_DIGEST_SIZE]; + +typedef struct scrypt_hash_state_t { + uint64_t state[SCRYPT_KECCAK_F / 64]; + uint32_t leftover; + uint8_t buffer[SCRYPT_HASH_BLOCK_SIZE]; +} scrypt_hash_state; + +static const uint64_t keccak_round_constants[24] = { + 0x0000000000000001ull, 0x0000000000008082ull, + 0x800000000000808aull, 0x8000000080008000ull, + 0x000000000000808bull, 0x0000000080000001ull, + 0x8000000080008081ull, 0x8000000000008009ull, + 0x000000000000008aull, 0x0000000000000088ull, + 0x0000000080008009ull, 0x000000008000000aull, + 0x000000008000808bull, 0x800000000000008bull, + 0x8000000000008089ull, 0x8000000000008003ull, + 0x8000000000008002ull, 0x8000000000000080ull, + 0x000000000000800aull, 0x800000008000000aull, + 0x8000000080008081ull, 0x8000000000008080ull, + 0x0000000080000001ull, 0x8000000080008008ull +}; + +static void +keccak_block(scrypt_hash_state *S, const uint8_t *in) { + size_t i; + uint64_t *s = S->state, t[5], u[5], v, w; + + /* absorb input */ + for (i = 0; i < SCRYPT_HASH_BLOCK_SIZE / 8; i++, in += 8) + s[i] ^= U8TO64_LE(in); + + for (i = 0; i < 24; i++) { + /* theta: c = a[0,i] ^ a[1,i] ^ .. a[4,i] */ + t[0] = s[0] ^ s[5] ^ s[10] ^ s[15] ^ s[20]; + t[1] = s[1] ^ s[6] ^ s[11] ^ s[16] ^ s[21]; + t[2] = s[2] ^ s[7] ^ s[12] ^ s[17] ^ s[22]; + t[3] = s[3] ^ s[8] ^ s[13] ^ s[18] ^ s[23]; + t[4] = s[4] ^ s[9] ^ s[14] ^ s[19] ^ s[24]; + + /* theta: d[i] = c[i+4] ^ rotl(c[i+1],1) */ + u[0] = t[4] ^ ROTL64(t[1], 1); + u[1] = t[0] ^ ROTL64(t[2], 1); + u[2] = t[1] ^ ROTL64(t[3], 1); + u[3] = t[2] ^ ROTL64(t[4], 1); + u[4] = t[3] ^ ROTL64(t[0], 1); + + /* theta: a[0,i], a[1,i], .. a[4,i] ^= d[i] */ + s[0] ^= u[0]; s[5] ^= u[0]; s[10] ^= u[0]; s[15] ^= u[0]; s[20] ^= u[0]; + s[1] ^= u[1]; s[6] ^= u[1]; s[11] ^= u[1]; s[16] ^= u[1]; s[21] ^= u[1]; + s[2] ^= u[2]; s[7] ^= u[2]; s[12] ^= u[2]; s[17] ^= u[2]; s[22] ^= u[2]; + s[3] ^= u[3]; s[8] ^= u[3]; s[13] ^= u[3]; s[18] ^= u[3]; s[23] ^= u[3]; + s[4] ^= u[4]; s[9] ^= u[4]; s[14] ^= u[4]; s[19] ^= u[4]; s[24] ^= u[4]; + + /* rho pi: b[..] = rotl(a[..], ..) */ + v = s[ 1]; + s[ 1] = ROTL64(s[ 6], 44); + s[ 6] = ROTL64(s[ 9], 20); + s[ 9] = ROTL64(s[22], 61); + s[22] = ROTL64(s[14], 39); + s[14] = ROTL64(s[20], 18); + s[20] = ROTL64(s[ 2], 62); + s[ 2] = ROTL64(s[12], 43); + s[12] = ROTL64(s[13], 25); + s[13] = ROTL64(s[19], 8); + s[19] = ROTL64(s[23], 56); + s[23] = ROTL64(s[15], 41); + s[15] = ROTL64(s[ 4], 27); + s[ 4] = ROTL64(s[24], 14); + s[24] = ROTL64(s[21], 2); + s[21] = ROTL64(s[ 8], 55); + s[ 8] = ROTL64(s[16], 45); + s[16] = ROTL64(s[ 5], 36); + s[ 5] = ROTL64(s[ 3], 28); + s[ 3] = ROTL64(s[18], 21); + s[18] = ROTL64(s[17], 15); + s[17] = ROTL64(s[11], 10); + s[11] = ROTL64(s[ 7], 6); + s[ 7] = ROTL64(s[10], 3); + s[10] = ROTL64( v, 1); + + /* chi: a[i,j] ^= ~b[i,j+1] & b[i,j+2] */ + v = s[ 0]; w = s[ 1]; s[ 0] ^= (~w) & s[ 2]; s[ 1] ^= (~s[ 2]) & s[ 3]; s[ 2] ^= (~s[ 3]) & s[ 4]; s[ 3] ^= (~s[ 4]) & v; s[ 4] ^= (~v) & w; + v = s[ 5]; w = s[ 6]; s[ 5] ^= (~w) & s[ 7]; s[ 6] ^= (~s[ 7]) & s[ 8]; s[ 7] ^= (~s[ 8]) & s[ 9]; s[ 8] ^= (~s[ 9]) & v; s[ 9] ^= (~v) & w; + v = s[10]; w = s[11]; s[10] ^= (~w) & s[12]; s[11] ^= (~s[12]) & s[13]; s[12] ^= (~s[13]) & s[14]; s[13] ^= (~s[14]) & v; s[14] ^= (~v) & w; + v = s[15]; w = s[16]; s[15] ^= (~w) & s[17]; s[16] ^= (~s[17]) & s[18]; s[17] ^= (~s[18]) & s[19]; s[18] ^= (~s[19]) & v; s[19] ^= (~v) & w; + v = s[20]; w = s[21]; s[20] ^= (~w) & s[22]; s[21] ^= (~s[22]) & s[23]; s[22] ^= (~s[23]) & s[24]; s[23] ^= (~s[24]) & v; s[24] ^= (~v) & w; + + /* iota: a[0,0] ^= round constant */ + s[0] ^= keccak_round_constants[i]; + } +} + +static void +scrypt_hash_init(scrypt_hash_state *S) { + memset(S, 0, sizeof(*S)); +} + +static void +scrypt_hash_update(scrypt_hash_state *S, const uint8_t *in, size_t inlen) { + size_t want; + + /* handle the previous data */ + if (S->leftover) { + want = (SCRYPT_HASH_BLOCK_SIZE - S->leftover); + want = (want < inlen) ? want : inlen; + memcpy(S->buffer + S->leftover, in, want); + S->leftover += (uint32_t)want; + if (S->leftover < SCRYPT_HASH_BLOCK_SIZE) + return; + in += want; + inlen -= want; + keccak_block(S, S->buffer); + } + + /* handle the current data */ + while (inlen >= SCRYPT_HASH_BLOCK_SIZE) { + keccak_block(S, in); + in += SCRYPT_HASH_BLOCK_SIZE; + inlen -= SCRYPT_HASH_BLOCK_SIZE; + } + + /* handle leftover data */ + S->leftover = (uint32_t)inlen; + if (S->leftover) + memcpy(S->buffer, in, S->leftover); +} + +static void +scrypt_hash_finish(scrypt_hash_state *S, uint8_t *hash) { + size_t i; + + S->buffer[S->leftover] = 0x01; + memset(S->buffer + (S->leftover + 1), 0, SCRYPT_HASH_BLOCK_SIZE - (S->leftover + 1)); + S->buffer[SCRYPT_HASH_BLOCK_SIZE - 1] |= 0x80; + keccak_block(S, S->buffer); + + for (i = 0; i < SCRYPT_HASH_DIGEST_SIZE; i += 8) { + U64TO8_LE(&hash[i], S->state[i / 8]); + } +} + +#if defined(SCRYPT_KECCAK256) +static const uint8_t scrypt_test_hash_expected[SCRYPT_HASH_DIGEST_SIZE] = { + 0x26,0xb7,0x10,0xb3,0x66,0xb1,0xd1,0xb1,0x25,0xfc,0x3e,0xe3,0x1e,0x33,0x1d,0x19, + 0x94,0xaa,0x63,0x7a,0xd5,0x77,0x29,0xb4,0x27,0xe9,0xe0,0xf4,0x19,0xba,0x68,0xea, +}; +#else +static const uint8_t scrypt_test_hash_expected[SCRYPT_HASH_DIGEST_SIZE] = { + 0x17,0xc7,0x8c,0xa0,0xd9,0x08,0x1d,0xba,0x8a,0xc8,0x3e,0x07,0x90,0xda,0x91,0x88, + 0x25,0xbd,0xd3,0xf8,0x78,0x4a,0x8d,0x5e,0xe4,0x96,0x9c,0x01,0xf3,0xeb,0xdc,0x12, + 0xea,0x35,0x57,0xba,0x94,0xb8,0xe9,0xb9,0x27,0x45,0x0a,0x48,0x5c,0x3d,0x69,0xf0, + 0xdb,0x22,0x38,0xb5,0x52,0x22,0x29,0xea,0x7a,0xb2,0xe6,0x07,0xaa,0x37,0x4d,0xe6, +}; +#endif + diff --git a/deps/scrypt-jane-master/code/scrypt-jane-hash_sha256.h b/deps/scrypt-jane-master/code/scrypt-jane-hash_sha256.h new file mode 100644 index 000000000..d06d3e1bb --- /dev/null +++ b/deps/scrypt-jane-master/code/scrypt-jane-hash_sha256.h @@ -0,0 +1,135 @@ +#define SCRYPT_HASH "SHA-2-256" +#define SCRYPT_HASH_BLOCK_SIZE 64 +#define SCRYPT_HASH_DIGEST_SIZE 32 + +typedef uint8_t scrypt_hash_digest[SCRYPT_HASH_DIGEST_SIZE]; + +typedef struct scrypt_hash_state_t { + uint32_t H[8]; + uint64_t T; + uint32_t leftover; + uint8_t buffer[SCRYPT_HASH_BLOCK_SIZE]; +} scrypt_hash_state; + +static const uint32_t sha256_constants[64] = { + 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, + 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, + 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, + 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, + 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, + 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, + 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, + 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2 +}; + +#define Ch(x,y,z) (z ^ (x & (y ^ z))) +#define Maj(x,y,z) (((x | y) & z) | (x & y)) +#define S0(x) (ROTR32(x, 2) ^ ROTR32(x, 13) ^ ROTR32(x, 22)) +#define S1(x) (ROTR32(x, 6) ^ ROTR32(x, 11) ^ ROTR32(x, 25)) +#define G0(x) (ROTR32(x, 7) ^ ROTR32(x, 18) ^ (x >> 3)) +#define G1(x) (ROTR32(x, 17) ^ ROTR32(x, 19) ^ (x >> 10)) +#define W0(in,i) (U8TO32_BE(&in[i * 4])) +#define W1(i) (G1(w[i - 2]) + w[i - 7] + G0(w[i - 15]) + w[i - 16]) +#define STEP(i) \ + t1 = S0(r[0]) + Maj(r[0], r[1], r[2]); \ + t0 = r[7] + S1(r[4]) + Ch(r[4], r[5], r[6]) + sha256_constants[i] + w[i]; \ + r[7] = r[6]; \ + r[6] = r[5]; \ + r[5] = r[4]; \ + r[4] = r[3] + t0; \ + r[3] = r[2]; \ + r[2] = r[1]; \ + r[1] = r[0]; \ + r[0] = t0 + t1; + +static void +sha256_blocks(scrypt_hash_state *S, const uint8_t *in, size_t blocks) { + uint32_t r[8], w[64], t0, t1; + size_t i; + + for (i = 0; i < 8; i++) r[i] = S->H[i]; + + while (blocks--) { + for (i = 0; i < 16; i++) { w[i] = W0(in, i); } + for (i = 16; i < 64; i++) { w[i] = W1(i); } + for (i = 0; i < 64; i++) { STEP(i); } + for (i = 0; i < 8; i++) { r[i] += S->H[i]; S->H[i] = r[i]; } + S->T += SCRYPT_HASH_BLOCK_SIZE * 8; + in += SCRYPT_HASH_BLOCK_SIZE; + } +} + +static void +scrypt_hash_init(scrypt_hash_state *S) { + S->H[0] = 0x6a09e667; + S->H[1] = 0xbb67ae85; + S->H[2] = 0x3c6ef372; + S->H[3] = 0xa54ff53a; + S->H[4] = 0x510e527f; + S->H[5] = 0x9b05688c; + S->H[6] = 0x1f83d9ab; + S->H[7] = 0x5be0cd19; + S->T = 0; + S->leftover = 0; +} + +static void +scrypt_hash_update(scrypt_hash_state *S, const uint8_t *in, size_t inlen) { + size_t blocks, want; + + /* handle the previous data */ + if (S->leftover) { + want = (SCRYPT_HASH_BLOCK_SIZE - S->leftover); + want = (want < inlen) ? want : inlen; + memcpy(S->buffer + S->leftover, in, want); + S->leftover += (uint32_t)want; + if (S->leftover < SCRYPT_HASH_BLOCK_SIZE) + return; + in += want; + inlen -= want; + sha256_blocks(S, S->buffer, 1); + } + + /* handle the current data */ + blocks = (inlen & ~(SCRYPT_HASH_BLOCK_SIZE - 1)); + S->leftover = (uint32_t)(inlen - blocks); + if (blocks) { + sha256_blocks(S, in, blocks / SCRYPT_HASH_BLOCK_SIZE); + in += blocks; + } + + /* handle leftover data */ + if (S->leftover) + memcpy(S->buffer, in, S->leftover); +} + +static void +scrypt_hash_finish(scrypt_hash_state *S, uint8_t *hash) { + uint64_t t = S->T + (S->leftover * 8); + + S->buffer[S->leftover] = 0x80; + if (S->leftover <= 55) { + memset(S->buffer + S->leftover + 1, 0, 55 - S->leftover); + } else { + memset(S->buffer + S->leftover + 1, 0, 63 - S->leftover); + sha256_blocks(S, S->buffer, 1); + memset(S->buffer, 0, 56); + } + + U64TO8_BE(S->buffer + 56, t); + sha256_blocks(S, S->buffer, 1); + + U32TO8_BE(&hash[ 0], S->H[0]); + U32TO8_BE(&hash[ 4], S->H[1]); + U32TO8_BE(&hash[ 8], S->H[2]); + U32TO8_BE(&hash[12], S->H[3]); + U32TO8_BE(&hash[16], S->H[4]); + U32TO8_BE(&hash[20], S->H[5]); + U32TO8_BE(&hash[24], S->H[6]); + U32TO8_BE(&hash[28], S->H[7]); +} + +static const uint8_t scrypt_test_hash_expected[SCRYPT_HASH_DIGEST_SIZE] = { + 0xee,0x36,0xae,0xa6,0x65,0xf0,0x28,0x7d,0xc9,0xde,0xd8,0xad,0x48,0x33,0x7d,0xbf, + 0xcb,0xc0,0x48,0xfa,0x5f,0x92,0xfd,0x0a,0x95,0x6f,0x34,0x8e,0x8c,0x1e,0x73,0xad, +}; diff --git a/deps/scrypt-jane-master/code/scrypt-jane-hash_sha512.h b/deps/scrypt-jane-master/code/scrypt-jane-hash_sha512.h new file mode 100644 index 000000000..3e3997d00 --- /dev/null +++ b/deps/scrypt-jane-master/code/scrypt-jane-hash_sha512.h @@ -0,0 +1,152 @@ +#define SCRYPT_HASH "SHA-2-512" +#define SCRYPT_HASH_BLOCK_SIZE 128 +#define SCRYPT_HASH_DIGEST_SIZE 64 + +typedef uint8_t scrypt_hash_digest[SCRYPT_HASH_DIGEST_SIZE]; + +typedef struct scrypt_hash_state_t { + uint64_t H[8]; + uint64_t T[2]; + uint32_t leftover; + uint8_t buffer[SCRYPT_HASH_BLOCK_SIZE]; +} scrypt_hash_state; + +static const uint64_t sha512_constants[80] = { + 0x428a2f98d728ae22ull, 0x7137449123ef65cdull, 0xb5c0fbcfec4d3b2full, 0xe9b5dba58189dbbcull, + 0x3956c25bf348b538ull, 0x59f111f1b605d019ull, 0x923f82a4af194f9bull, 0xab1c5ed5da6d8118ull, + 0xd807aa98a3030242ull, 0x12835b0145706fbeull, 0x243185be4ee4b28cull, 0x550c7dc3d5ffb4e2ull, + 0x72be5d74f27b896full, 0x80deb1fe3b1696b1ull, 0x9bdc06a725c71235ull, 0xc19bf174cf692694ull, + 0xe49b69c19ef14ad2ull, 0xefbe4786384f25e3ull, 0x0fc19dc68b8cd5b5ull, 0x240ca1cc77ac9c65ull, + 0x2de92c6f592b0275ull, 0x4a7484aa6ea6e483ull, 0x5cb0a9dcbd41fbd4ull, 0x76f988da831153b5ull, + 0x983e5152ee66dfabull, 0xa831c66d2db43210ull, 0xb00327c898fb213full, 0xbf597fc7beef0ee4ull, + 0xc6e00bf33da88fc2ull, 0xd5a79147930aa725ull, 0x06ca6351e003826full, 0x142929670a0e6e70ull, + 0x27b70a8546d22ffcull, 0x2e1b21385c26c926ull, 0x4d2c6dfc5ac42aedull, 0x53380d139d95b3dfull, + 0x650a73548baf63deull, 0x766a0abb3c77b2a8ull, 0x81c2c92e47edaee6ull, 0x92722c851482353bull, + 0xa2bfe8a14cf10364ull, 0xa81a664bbc423001ull, 0xc24b8b70d0f89791ull, 0xc76c51a30654be30ull, + 0xd192e819d6ef5218ull, 0xd69906245565a910ull, 0xf40e35855771202aull, 0x106aa07032bbd1b8ull, + 0x19a4c116b8d2d0c8ull, 0x1e376c085141ab53ull, 0x2748774cdf8eeb99ull, 0x34b0bcb5e19b48a8ull, + 0x391c0cb3c5c95a63ull, 0x4ed8aa4ae3418acbull, 0x5b9cca4f7763e373ull, 0x682e6ff3d6b2b8a3ull, + 0x748f82ee5defb2fcull, 0x78a5636f43172f60ull, 0x84c87814a1f0ab72ull, 0x8cc702081a6439ecull, + 0x90befffa23631e28ull, 0xa4506cebde82bde9ull, 0xbef9a3f7b2c67915ull, 0xc67178f2e372532bull, + 0xca273eceea26619cull, 0xd186b8c721c0c207ull, 0xeada7dd6cde0eb1eull, 0xf57d4f7fee6ed178ull, + 0x06f067aa72176fbaull, 0x0a637dc5a2c898a6ull, 0x113f9804bef90daeull, 0x1b710b35131c471bull, + 0x28db77f523047d84ull, 0x32caab7b40c72493ull, 0x3c9ebe0a15c9bebcull, 0x431d67c49c100d4cull, + 0x4cc5d4becb3e42b6ull, 0x597f299cfc657e2aull, 0x5fcb6fab3ad6faecull, 0x6c44198c4a475817ull +}; + +#define Ch(x,y,z) (z ^ (x & (y ^ z))) +#define Maj(x,y,z) (((x | y) & z) | (x & y)) +#define S0(x) (ROTR64(x, 28) ^ ROTR64(x, 34) ^ ROTR64(x, 39)) +#define S1(x) (ROTR64(x, 14) ^ ROTR64(x, 18) ^ ROTR64(x, 41)) +#define G0(x) (ROTR64(x, 1) ^ ROTR64(x, 8) ^ (x >> 7)) +#define G1(x) (ROTR64(x, 19) ^ ROTR64(x, 61) ^ (x >> 6)) +#define W0(in,i) (U8TO64_BE(&in[i * 8])) +#define W1(i) (G1(w[i - 2]) + w[i - 7] + G0(w[i - 15]) + w[i - 16]) +#define STEP(i) \ + t1 = S0(r[0]) + Maj(r[0], r[1], r[2]); \ + t0 = r[7] + S1(r[4]) + Ch(r[4], r[5], r[6]) + sha512_constants[i] + w[i]; \ + r[7] = r[6]; \ + r[6] = r[5]; \ + r[5] = r[4]; \ + r[4] = r[3] + t0; \ + r[3] = r[2]; \ + r[2] = r[1]; \ + r[1] = r[0]; \ + r[0] = t0 + t1; + +static void +sha512_blocks(scrypt_hash_state *S, const uint8_t *in, size_t blocks) { + uint64_t r[8], w[80], t0, t1; + size_t i; + + for (i = 0; i < 8; i++) r[i] = S->H[i]; + + while (blocks--) { + for (i = 0; i < 16; i++) { w[i] = W0(in, i); } + for (i = 16; i < 80; i++) { w[i] = W1(i); } + for (i = 0; i < 80; i++) { STEP(i); } + for (i = 0; i < 8; i++) { r[i] += S->H[i]; S->H[i] = r[i]; } + S->T[0] += SCRYPT_HASH_BLOCK_SIZE * 8; + S->T[1] += (!S->T[0]) ? 1 : 0; + in += SCRYPT_HASH_BLOCK_SIZE; + } +} + +static void +scrypt_hash_init(scrypt_hash_state *S) { + S->H[0] = 0x6a09e667f3bcc908ull; + S->H[1] = 0xbb67ae8584caa73bull; + S->H[2] = 0x3c6ef372fe94f82bull; + S->H[3] = 0xa54ff53a5f1d36f1ull; + S->H[4] = 0x510e527fade682d1ull; + S->H[5] = 0x9b05688c2b3e6c1full; + S->H[6] = 0x1f83d9abfb41bd6bull; + S->H[7] = 0x5be0cd19137e2179ull; + S->T[0] = 0; + S->T[1] = 0; + S->leftover = 0; +} + +static void +scrypt_hash_update(scrypt_hash_state *S, const uint8_t *in, size_t inlen) { + size_t blocks, want; + + /* handle the previous data */ + if (S->leftover) { + want = (SCRYPT_HASH_BLOCK_SIZE - S->leftover); + want = (want < inlen) ? want : inlen; + memcpy(S->buffer + S->leftover, in, want); + S->leftover += (uint32_t)want; + if (S->leftover < SCRYPT_HASH_BLOCK_SIZE) + return; + in += want; + inlen -= want; + sha512_blocks(S, S->buffer, 1); + } + + /* handle the current data */ + blocks = (inlen & ~(SCRYPT_HASH_BLOCK_SIZE - 1)); + S->leftover = (uint32_t)(inlen - blocks); + if (blocks) { + sha512_blocks(S, in, blocks / SCRYPT_HASH_BLOCK_SIZE); + in += blocks; + } + + /* handle leftover data */ + if (S->leftover) + memcpy(S->buffer, in, S->leftover); +} + +static void +scrypt_hash_finish(scrypt_hash_state *S, uint8_t *hash) { + uint64_t t0 = S->T[0] + (S->leftover * 8), t1 = S->T[1]; + + S->buffer[S->leftover] = 0x80; + if (S->leftover <= 111) { + memset(S->buffer + S->leftover + 1, 0, 111 - S->leftover); + } else { + memset(S->buffer + S->leftover + 1, 0, 127 - S->leftover); + sha512_blocks(S, S->buffer, 1); + memset(S->buffer, 0, 112); + } + + U64TO8_BE(S->buffer + 112, t1); + U64TO8_BE(S->buffer + 120, t0); + sha512_blocks(S, S->buffer, 1); + + U64TO8_BE(&hash[ 0], S->H[0]); + U64TO8_BE(&hash[ 8], S->H[1]); + U64TO8_BE(&hash[16], S->H[2]); + U64TO8_BE(&hash[24], S->H[3]); + U64TO8_BE(&hash[32], S->H[4]); + U64TO8_BE(&hash[40], S->H[5]); + U64TO8_BE(&hash[48], S->H[6]); + U64TO8_BE(&hash[56], S->H[7]); +} + +static const uint8_t scrypt_test_hash_expected[SCRYPT_HASH_DIGEST_SIZE] = { + 0xba,0xc3,0x80,0x2b,0x24,0x56,0x95,0x1f,0x19,0x7c,0xa2,0xd3,0x72,0x7c,0x9a,0x4d, + 0x1d,0x50,0x3a,0xa9,0x12,0x27,0xd8,0xe1,0xbe,0x76,0x53,0x87,0x5a,0x1e,0x82,0xec, + 0xc8,0xe1,0x6b,0x87,0xd0,0xb5,0x25,0x7e,0xe8,0x1e,0xd7,0x58,0xc6,0x2d,0xc2,0x9c, + 0x06,0x31,0x8f,0x5b,0x57,0x8e,0x76,0xba,0xd5,0xf6,0xec,0xfe,0x85,0x1f,0x34,0x0c, +}; diff --git a/deps/scrypt-jane-master/code/scrypt-jane-hash_skein512.h b/deps/scrypt-jane-master/code/scrypt-jane-hash_skein512.h new file mode 100644 index 000000000..736d893de --- /dev/null +++ b/deps/scrypt-jane-master/code/scrypt-jane-hash_skein512.h @@ -0,0 +1,188 @@ +#define SCRYPT_HASH "Skein-512" +#define SCRYPT_HASH_BLOCK_SIZE 64 +#define SCRYPT_HASH_DIGEST_SIZE 64 + +typedef uint8_t scrypt_hash_digest[SCRYPT_HASH_DIGEST_SIZE]; + +typedef struct scrypt_hash_state_t { + uint64_t X[8], T[2]; + uint32_t leftover; + uint8_t buffer[SCRYPT_HASH_BLOCK_SIZE]; +} scrypt_hash_state; + +#include + +static void +skein512_blocks(scrypt_hash_state *S, const uint8_t *in, size_t blocks, size_t add) { + uint64_t X[8], key[8], Xt[9+18], T[3+1]; + size_t r; + + while (blocks--) { + T[0] = S->T[0] + add; + T[1] = S->T[1]; + T[2] = T[0] ^ T[1]; + key[0] = U8TO64_LE(in + 0); Xt[0] = S->X[0]; X[0] = key[0] + Xt[0]; + key[1] = U8TO64_LE(in + 8); Xt[1] = S->X[1]; X[1] = key[1] + Xt[1]; + key[2] = U8TO64_LE(in + 16); Xt[2] = S->X[2]; X[2] = key[2] + Xt[2]; + key[3] = U8TO64_LE(in + 24); Xt[3] = S->X[3]; X[3] = key[3] + Xt[3]; + key[4] = U8TO64_LE(in + 32); Xt[4] = S->X[4]; X[4] = key[4] + Xt[4]; + key[5] = U8TO64_LE(in + 40); Xt[5] = S->X[5]; X[5] = key[5] + Xt[5] + T[0]; + key[6] = U8TO64_LE(in + 48); Xt[6] = S->X[6]; X[6] = key[6] + Xt[6] + T[1]; + key[7] = U8TO64_LE(in + 56); Xt[7] = S->X[7]; X[7] = key[7] + Xt[7]; + Xt[8] = 0x1BD11BDAA9FC1A22ull ^ Xt[0] ^ Xt[1] ^ Xt[2] ^ Xt[3] ^ Xt[4] ^ Xt[5] ^ Xt[6] ^ Xt[7]; + in += SCRYPT_HASH_BLOCK_SIZE; + + for (r = 0; r < 18; r++) + Xt[r + 9] = Xt[r + 0]; + + for (r = 0; r < 18; r += 2) { + X[0] += X[1]; X[1] = ROTL64(X[1], 46) ^ X[0]; + X[2] += X[3]; X[3] = ROTL64(X[3], 36) ^ X[2]; + X[4] += X[5]; X[5] = ROTL64(X[5], 19) ^ X[4]; + X[6] += X[7]; X[7] = ROTL64(X[7], 37) ^ X[6]; + X[2] += X[1]; X[1] = ROTL64(X[1], 33) ^ X[2]; + X[0] += X[3]; X[3] = ROTL64(X[3], 42) ^ X[0]; + X[6] += X[5]; X[5] = ROTL64(X[5], 14) ^ X[6]; + X[4] += X[7]; X[7] = ROTL64(X[7], 27) ^ X[4]; + X[4] += X[1]; X[1] = ROTL64(X[1], 17) ^ X[4]; + X[6] += X[3]; X[3] = ROTL64(X[3], 49) ^ X[6]; + X[0] += X[5]; X[5] = ROTL64(X[5], 36) ^ X[0]; + X[2] += X[7]; X[7] = ROTL64(X[7], 39) ^ X[2]; + X[6] += X[1]; X[1] = ROTL64(X[1], 44) ^ X[6]; + X[4] += X[3]; X[3] = ROTL64(X[3], 56) ^ X[4]; + X[2] += X[5]; X[5] = ROTL64(X[5], 54) ^ X[2]; + X[0] += X[7]; X[7] = ROTL64(X[7], 9) ^ X[0]; + + X[0] += Xt[r + 1]; + X[1] += Xt[r + 2]; + X[2] += Xt[r + 3]; + X[3] += Xt[r + 4]; + X[4] += Xt[r + 5]; + X[5] += Xt[r + 6] + T[1]; + X[6] += Xt[r + 7] + T[2]; + X[7] += Xt[r + 8] + r + 1; + + T[3] = T[0]; + T[0] = T[1]; + T[1] = T[2]; + T[2] = T[3]; + + X[0] += X[1]; X[1] = ROTL64(X[1], 39) ^ X[0]; + X[2] += X[3]; X[3] = ROTL64(X[3], 30) ^ X[2]; + X[4] += X[5]; X[5] = ROTL64(X[5], 34) ^ X[4]; + X[6] += X[7]; X[7] = ROTL64(X[7], 24) ^ X[6]; + X[2] += X[1]; X[1] = ROTL64(X[1], 13) ^ X[2]; + X[0] += X[3]; X[3] = ROTL64(X[3], 17) ^ X[0]; + X[6] += X[5]; X[5] = ROTL64(X[5], 10) ^ X[6]; + X[4] += X[7]; X[7] = ROTL64(X[7], 50) ^ X[4]; + X[4] += X[1]; X[1] = ROTL64(X[1], 25) ^ X[4]; + X[6] += X[3]; X[3] = ROTL64(X[3], 29) ^ X[6]; + X[0] += X[5]; X[5] = ROTL64(X[5], 39) ^ X[0]; + X[2] += X[7]; X[7] = ROTL64(X[7], 43) ^ X[2]; + X[6] += X[1]; X[1] = ROTL64(X[1], 8) ^ X[6]; + X[4] += X[3]; X[3] = ROTL64(X[3], 22) ^ X[4]; + X[2] += X[5]; X[5] = ROTL64(X[5], 56) ^ X[2]; + X[0] += X[7]; X[7] = ROTL64(X[7], 35) ^ X[0]; + + X[0] += Xt[r + 2]; + X[1] += Xt[r + 3]; + X[2] += Xt[r + 4]; + X[3] += Xt[r + 5]; + X[4] += Xt[r + 6]; + X[5] += Xt[r + 7] + T[1]; + X[6] += Xt[r + 8] + T[2]; + X[7] += Xt[r + 9] + r + 2; + + T[3] = T[0]; + T[0] = T[1]; + T[1] = T[2]; + T[2] = T[3]; + } + + S->X[0] = key[0] ^ X[0]; + S->X[1] = key[1] ^ X[1]; + S->X[2] = key[2] ^ X[2]; + S->X[3] = key[3] ^ X[3]; + S->X[4] = key[4] ^ X[4]; + S->X[5] = key[5] ^ X[5]; + S->X[6] = key[6] ^ X[6]; + S->X[7] = key[7] ^ X[7]; + + S->T[0] = T[0]; + S->T[1] = T[1] & ~0x4000000000000000ull; + } +} + +static void +scrypt_hash_init(scrypt_hash_state *S) { + S->X[0] = 0x4903ADFF749C51CEull; + S->X[1] = 0x0D95DE399746DF03ull; + S->X[2] = 0x8FD1934127C79BCEull; + S->X[3] = 0x9A255629FF352CB1ull; + S->X[4] = 0x5DB62599DF6CA7B0ull; + S->X[5] = 0xEABE394CA9D5C3F4ull; + S->X[6] = 0x991112C71A75B523ull; + S->X[7] = 0xAE18A40B660FCC33ull; + S->T[0] = 0x0000000000000000ull; + S->T[1] = 0x7000000000000000ull; + S->leftover = 0; +} + +static void +scrypt_hash_update(scrypt_hash_state *S, const uint8_t *in, size_t inlen) { + size_t blocks, want; + + /* skein processes the final <=64 bytes raw, so we can only update if there are at least 64+1 bytes available */ + if ((S->leftover + inlen) > SCRYPT_HASH_BLOCK_SIZE) { + /* handle the previous data, we know there is enough for at least one block */ + if (S->leftover) { + want = (SCRYPT_HASH_BLOCK_SIZE - S->leftover); + memcpy(S->buffer + S->leftover, in, want); + in += want; + inlen -= want; + S->leftover = 0; + skein512_blocks(S, S->buffer, 1, SCRYPT_HASH_BLOCK_SIZE); + } + + /* handle the current data if there's more than one block */ + if (inlen > SCRYPT_HASH_BLOCK_SIZE) { + blocks = ((inlen - 1) & ~(SCRYPT_HASH_BLOCK_SIZE - 1)); + skein512_blocks(S, in, blocks / SCRYPT_HASH_BLOCK_SIZE, SCRYPT_HASH_BLOCK_SIZE); + inlen -= blocks; + in += blocks; + } + } + + /* handle leftover data */ + memcpy(S->buffer + S->leftover, in, inlen); + S->leftover += inlen; +} + +static void +scrypt_hash_finish(scrypt_hash_state *S, uint8_t *hash) { + memset(S->buffer + S->leftover, 0, SCRYPT_HASH_BLOCK_SIZE - S->leftover); + S->T[1] |= 0x8000000000000000ull; + skein512_blocks(S, S->buffer, 1, S->leftover); + + memset(S->buffer, 0, SCRYPT_HASH_BLOCK_SIZE); + S->T[0] = 0; + S->T[1] = 0xff00000000000000ull; + skein512_blocks(S, S->buffer, 1, 8); + + U64TO8_LE(&hash[ 0], S->X[0]); + U64TO8_LE(&hash[ 8], S->X[1]); + U64TO8_LE(&hash[16], S->X[2]); + U64TO8_LE(&hash[24], S->X[3]); + U64TO8_LE(&hash[32], S->X[4]); + U64TO8_LE(&hash[40], S->X[5]); + U64TO8_LE(&hash[48], S->X[6]); + U64TO8_LE(&hash[56], S->X[7]); +} + + +static const uint8_t scrypt_test_hash_expected[SCRYPT_HASH_DIGEST_SIZE] = { + 0x4d,0x52,0x29,0xff,0x10,0xbc,0xd2,0x62,0xd1,0x61,0x83,0xc8,0xe6,0xf0,0x83,0xc4, + 0x9f,0xf5,0x6a,0x42,0x75,0x2a,0x26,0x4e,0xf0,0x28,0x72,0x28,0x47,0xe8,0x23,0xdf, + 0x1e,0x64,0xf1,0x51,0x38,0x35,0x9d,0xc2,0x83,0xfc,0x35,0x4e,0xc0,0x52,0x5f,0x41, + 0x6a,0x0b,0x7d,0xf5,0xce,0x98,0xde,0x6f,0x36,0xd8,0x51,0x15,0x78,0x78,0x93,0x67, +}; diff --git a/deps/scrypt-jane-master/code/scrypt-jane-mix_chacha-avx.h b/deps/scrypt-jane-master/code/scrypt-jane-mix_chacha-avx.h new file mode 100644 index 000000000..ddd3ee119 --- /dev/null +++ b/deps/scrypt-jane-master/code/scrypt-jane-mix_chacha-avx.h @@ -0,0 +1,368 @@ +/* x86 */ +#if defined(X86ASM_AVX) && (!defined(SCRYPT_CHOOSE_COMPILETIME) || !defined(SCRYPT_CHACHA_INCLUDED)) && !defined(CPU_X86_FORCE_INTRINSICS) + +#define SCRYPT_CHACHA_AVX + +asm_naked_fn_proto(void, scrypt_ChunkMix_avx)(uint32_t *Bout/*[chunkBytes]*/, uint32_t *Bin/*[chunkBytes]*/, uint32_t *Bxor/*[chunkBytes]*/, uint32_t r) +asm_naked_fn(scrypt_ChunkMix_avx) + a1(push ebx) + a1(push edi) + a1(push esi) + a1(push ebp) + a2(mov ebp,esp) + a2(mov edi,[ebp+20]) + a2(mov esi,[ebp+24]) + a2(mov eax,[ebp+28]) + a2(mov ebx,[ebp+32]) + a2(sub esp,64) + a2(and esp,~63) + a2(lea edx,[ebx*2]) + a2(shl edx,6) + a2(lea ecx,[edx-64]) + a2(and eax, eax) + a2(mov ebx, 0x01000302) + a2(vmovd xmm4, ebx) + a2(mov ebx, 0x05040706) + a2(vmovd xmm0, ebx) + a2(mov ebx, 0x09080b0a) + a2(vmovd xmm1, ebx) + a2(mov ebx, 0x0d0c0f0e) + a2(vmovd xmm2, ebx) + a2(mov ebx, 0x02010003) + a2(vmovd xmm5, ebx) + a2(mov ebx, 0x06050407) + a2(vmovd xmm3, ebx) + a2(mov ebx, 0x0a09080b) + a2(vmovd xmm6, ebx) + a2(mov ebx, 0x0e0d0c0f) + a2(vmovd xmm7, ebx) + a3(vpunpckldq xmm4, xmm4, xmm0) + a3(vpunpckldq xmm5, xmm5, xmm3) + a3(vpunpckldq xmm1, xmm1, xmm2) + a3(vpunpckldq xmm6, xmm6, xmm7) + a3(vpunpcklqdq xmm4, xmm4, xmm1) + a3(vpunpcklqdq xmm5, xmm5, xmm6) + a2(vmovdqa xmm0,[ecx+esi+0]) + a2(vmovdqa xmm1,[ecx+esi+16]) + a2(vmovdqa xmm2,[ecx+esi+32]) + a2(vmovdqa xmm3,[ecx+esi+48]) + aj(jz scrypt_ChunkMix_avx_no_xor1) + a3(vpxor xmm0,xmm0,[ecx+eax+0]) + a3(vpxor xmm1,xmm1,[ecx+eax+16]) + a3(vpxor xmm2,xmm2,[ecx+eax+32]) + a3(vpxor xmm3,xmm3,[ecx+eax+48]) + a1(scrypt_ChunkMix_avx_no_xor1:) + a2(xor ecx,ecx) + a2(xor ebx,ebx) + a1(scrypt_ChunkMix_avx_loop:) + a2(and eax, eax) + a3(vpxor xmm0,xmm0,[esi+ecx+0]) + a3(vpxor xmm1,xmm1,[esi+ecx+16]) + a3(vpxor xmm2,xmm2,[esi+ecx+32]) + a3(vpxor xmm3,xmm3,[esi+ecx+48]) + aj(jz scrypt_ChunkMix_avx_no_xor2) + a3(vpxor xmm0,xmm0,[eax+ecx+0]) + a3(vpxor xmm1,xmm1,[eax+ecx+16]) + a3(vpxor xmm2,xmm2,[eax+ecx+32]) + a3(vpxor xmm3,xmm3,[eax+ecx+48]) + a1(scrypt_ChunkMix_avx_no_xor2:) + a2(vmovdqa [esp+0],xmm0) + a2(vmovdqa [esp+16],xmm1) + a2(vmovdqa [esp+32],xmm2) + a2(vmovdqa [esp+48],xmm3) + a2(mov eax,8) + a1(scrypt_chacha_avx_loop: ) + a3(vpaddd xmm0,xmm0,xmm1) + a3(vpxor xmm3,xmm3,xmm0) + a3(vpshufb xmm3,xmm3,xmm4) + a3(vpaddd xmm2,xmm2,xmm3) + a3(vpxor xmm1,xmm1,xmm2) + a3(vpsrld xmm6,xmm1,20) + a3(vpslld xmm1,xmm1,12) + a3(vpxor xmm1,xmm1,xmm6) + a3(vpaddd xmm0,xmm0,xmm1) + a3(vpxor xmm3,xmm3,xmm0) + a3(vpshufb xmm3,xmm3,xmm5) + a3(vpshufd xmm0,xmm0,0x93) + a3(vpaddd xmm2,xmm2,xmm3) + a3(vpshufd xmm3,xmm3,0x4e) + a3(vpxor xmm1,xmm1,xmm2) + a3(vpshufd xmm2,xmm2,0x39) + a3(vpsrld xmm6,xmm1,25) + a3(vpslld xmm1,xmm1,7) + a3(vpxor xmm1,xmm1,xmm6) + a3(vpaddd xmm0,xmm0,xmm1) + a3(vpxor xmm3,xmm3,xmm0) + a3(vpshufb xmm3,xmm3,xmm4) + a3(vpaddd xmm2,xmm2,xmm3) + a3(vpxor xmm1,xmm1,xmm2) + a3(vpsrld xmm6,xmm1,20) + a3(vpslld xmm1,xmm1,12) + a3(vpxor xmm1,xmm1,xmm6) + a3(vpaddd xmm0,xmm0,xmm1) + a3(vpxor xmm3,xmm3,xmm0) + a3(vpshufb xmm3,xmm3,xmm5) + a3(vpshufd xmm0,xmm0,0x39) + a3(vpaddd xmm2,xmm2,xmm3) + a3(vpshufd xmm3,xmm3,0x4e) + a3(vpxor xmm1,xmm1,xmm2) + a3(vpshufd xmm2,xmm2,0x93) + a3(vpsrld xmm6,xmm1,25) + a3(vpslld xmm1,xmm1,7) + a3(vpxor xmm1,xmm1,xmm6) + a2(sub eax,2) + aj(ja scrypt_chacha_avx_loop) + a3(vpaddd xmm0,xmm0,[esp+0]) + a3(vpaddd xmm1,xmm1,[esp+16]) + a3(vpaddd xmm2,xmm2,[esp+32]) + a3(vpaddd xmm3,xmm3,[esp+48]) + a2(lea eax,[ebx+ecx]) + a2(xor ebx,edx) + a2(and eax,~0x7f) + a2(add ecx,64) + a2(shr eax,1) + a2(add eax, edi) + a2(cmp ecx,edx) + a2(vmovdqa [eax+0],xmm0) + a2(vmovdqa [eax+16],xmm1) + a2(vmovdqa [eax+32],xmm2) + a2(vmovdqa [eax+48],xmm3) + a2(mov eax,[ebp+28]) + aj(jne scrypt_ChunkMix_avx_loop) + a2(mov esp,ebp) + a1(pop ebp) + a1(pop esi) + a1(pop edi) + a1(pop ebx) + aret(16) +asm_naked_fn_end(scrypt_ChunkMix_avx) + +#endif + + + +/* x64 */ +#if defined(X86_64ASM_AVX) && (!defined(SCRYPT_CHOOSE_COMPILETIME) || !defined(SCRYPT_CHACHA_INCLUDED)) && !defined(CPU_X86_FORCE_INTRINSICS) + +#define SCRYPT_CHACHA_AVX + +asm_naked_fn_proto(void, scrypt_ChunkMix_avx)(uint32_t *Bout/*[chunkBytes]*/, uint32_t *Bin/*[chunkBytes]*/, uint32_t *Bxor/*[chunkBytes]*/, uint32_t r) +asm_naked_fn(scrypt_ChunkMix_avx) + a2(lea rcx,[ecx*2]) /* zero extend uint32_t by using ecx, win64 can leave garbage in the top half */ + a2(shl rcx,6) + a2(lea r9,[rcx-64]) + a2(lea rax,[rsi+r9]) + a2(lea r9,[rdx+r9]) + a2(and rdx, rdx) + a2(vmovdqa xmm0,[rax+0]) + a2(vmovdqa xmm1,[rax+16]) + a2(vmovdqa xmm2,[rax+32]) + a2(vmovdqa xmm3,[rax+48]) + a2(mov r8, 0x0504070601000302) + a2(mov rax, 0x0d0c0f0e09080b0a) + a2(movd xmm4, r8) + a2(movd xmm6, rax) + a2(mov r8, 0x0605040702010003) + a2(mov rax, 0x0e0d0c0f0a09080b) + a2(movd xmm5, r8) + a2(movd xmm7, rax) + a3(vpunpcklqdq xmm4, xmm4, xmm6) + a3(vpunpcklqdq xmm5, xmm5, xmm7) + aj(jz scrypt_ChunkMix_avx_no_xor1) + a3(vpxor xmm0,xmm0,[r9+0]) + a3(vpxor xmm1,xmm1,[r9+16]) + a3(vpxor xmm2,xmm2,[r9+32]) + a3(vpxor xmm3,xmm3,[r9+48]) + a1(scrypt_ChunkMix_avx_no_xor1:) + a2(xor r8,r8) + a2(xor r9,r9) + a1(scrypt_ChunkMix_avx_loop:) + a2(and rdx, rdx) + a3(vpxor xmm0,xmm0,[rsi+r9+0]) + a3(vpxor xmm1,xmm1,[rsi+r9+16]) + a3(vpxor xmm2,xmm2,[rsi+r9+32]) + a3(vpxor xmm3,xmm3,[rsi+r9+48]) + aj(jz scrypt_ChunkMix_avx_no_xor2) + a3(vpxor xmm0,xmm0,[rdx+r9+0]) + a3(vpxor xmm1,xmm1,[rdx+r9+16]) + a3(vpxor xmm2,xmm2,[rdx+r9+32]) + a3(vpxor xmm3,xmm3,[rdx+r9+48]) + a1(scrypt_ChunkMix_avx_no_xor2:) + a2(vmovdqa xmm8,xmm0) + a2(vmovdqa xmm9,xmm1) + a2(vmovdqa xmm10,xmm2) + a2(vmovdqa xmm11,xmm3) + a2(mov rax,8) + a1(scrypt_chacha_avx_loop: ) + a3(vpaddd xmm0,xmm0,xmm1) + a3(vpxor xmm3,xmm3,xmm0) + a3(vpshufb xmm3,xmm3,xmm4) + a3(vpaddd xmm2,xmm2,xmm3) + a3(vpxor xmm1,xmm1,xmm2) + a3(vpsrld xmm12,xmm1,20) + a3(vpslld xmm1,xmm1,12) + a3(vpxor xmm1,xmm1,xmm12) + a3(vpaddd xmm0,xmm0,xmm1) + a3(vpxor xmm3,xmm3,xmm0) + a3(vpshufb xmm3,xmm3,xmm5) + a3(vpshufd xmm0,xmm0,0x93) + a3(vpaddd xmm2,xmm2,xmm3) + a3(vpshufd xmm3,xmm3,0x4e) + a3(vpxor xmm1,xmm1,xmm2) + a3(vpshufd xmm2,xmm2,0x39) + a3(vpsrld xmm12,xmm1,25) + a3(vpslld xmm1,xmm1,7) + a3(vpxor xmm1,xmm1,xmm12) + a3(vpaddd xmm0,xmm0,xmm1) + a3(vpxor xmm3,xmm3,xmm0) + a3(vpshufb xmm3,xmm3,xmm4) + a3(vpaddd xmm2,xmm2,xmm3) + a3(vpxor xmm1,xmm1,xmm2) + a3(vpsrld xmm12,xmm1,20) + a3(vpslld xmm1,xmm1,12) + a3(vpxor xmm1,xmm1,xmm12) + a3(vpaddd xmm0,xmm0,xmm1) + a3(vpxor xmm3,xmm3,xmm0) + a3(vpshufb xmm3,xmm3,xmm5) + a3(vpshufd xmm0,xmm0,0x39) + a3(vpaddd xmm2,xmm2,xmm3) + a3(vpshufd xmm3,xmm3,0x4e) + a3(vpxor xmm1,xmm1,xmm2) + a3(vpshufd xmm2,xmm2,0x93) + a3(vpsrld xmm12,xmm1,25) + a3(vpslld xmm1,xmm1,7) + a3(vpxor xmm1,xmm1,xmm12) + a2(sub rax,2) + aj(ja scrypt_chacha_avx_loop) + a3(vpaddd xmm0,xmm0,xmm8) + a3(vpaddd xmm1,xmm1,xmm9) + a3(vpaddd xmm2,xmm2,xmm10) + a3(vpaddd xmm3,xmm3,xmm11) + a2(lea rax,[r8+r9]) + a2(xor r8,rcx) + a2(and rax,~0x7f) + a2(add r9,64) + a2(shr rax,1) + a2(add rax, rdi) + a2(cmp r9,rcx) + a2(vmovdqa [rax+0],xmm0) + a2(vmovdqa [rax+16],xmm1) + a2(vmovdqa [rax+32],xmm2) + a2(vmovdqa [rax+48],xmm3) + aj(jne scrypt_ChunkMix_avx_loop) + a1(ret) +asm_naked_fn_end(scrypt_ChunkMix_avx) + +#endif + + +/* intrinsic */ +#if defined(X86_INTRINSIC_AVX) && (!defined(SCRYPT_CHOOSE_COMPILETIME) || !defined(SCRYPT_CHACHA_INCLUDED)) + +#define SCRYPT_CHACHA_AVX + +static void asm_calling_convention NOINLINE +scrypt_ChunkMix_avx(uint32_t *Bout/*[chunkBytes]*/, uint32_t *Bin/*[chunkBytes]*/, uint32_t *Bxor/*[chunkBytes]*/, uint32_t r) { + uint32_t i, blocksPerChunk = r * 2, half = 0; + xmmi *xmmp,x0,x1,x2,x3,x6,t0,t1,t2,t3; + const xmmi x4 = *(xmmi *)&ssse3_rotl16_32bit, x5 = *(xmmi *)&ssse3_rotl8_32bit; + size_t rounds; + + /* 1: X = B_{2r - 1} */ + xmmp = (xmmi *)scrypt_block(Bin, blocksPerChunk - 1); + x0 = xmmp[0]; + x1 = xmmp[1]; + x2 = xmmp[2]; + x3 = xmmp[3]; + + if (Bxor) { + xmmp = (xmmi *)scrypt_block(Bxor, blocksPerChunk - 1); + x0 = _mm_xor_si128(x0, xmmp[0]); + x1 = _mm_xor_si128(x1, xmmp[1]); + x2 = _mm_xor_si128(x2, xmmp[2]); + x3 = _mm_xor_si128(x3, xmmp[3]); + } + + /* 2: for i = 0 to 2r - 1 do */ + for (i = 0; i < blocksPerChunk; i++, half ^= r) { + /* 3: X = H(X ^ B_i) */ + xmmp = (xmmi *)scrypt_block(Bin, i); + x0 = _mm_xor_si128(x0, xmmp[0]); + x1 = _mm_xor_si128(x1, xmmp[1]); + x2 = _mm_xor_si128(x2, xmmp[2]); + x3 = _mm_xor_si128(x3, xmmp[3]); + + if (Bxor) { + xmmp = (xmmi *)scrypt_block(Bxor, i); + x0 = _mm_xor_si128(x0, xmmp[0]); + x1 = _mm_xor_si128(x1, xmmp[1]); + x2 = _mm_xor_si128(x2, xmmp[2]); + x3 = _mm_xor_si128(x3, xmmp[3]); + } + + t0 = x0; + t1 = x1; + t2 = x2; + t3 = x3; + + for (rounds = 8; rounds; rounds -= 2) { + x0 = _mm_add_epi32(x0, x1); + x3 = _mm_xor_si128(x3, x0); + x3 = _mm_shuffle_epi8(x3, x4); + x2 = _mm_add_epi32(x2, x3); + x1 = _mm_xor_si128(x1, x2); + x6 = x1; + x1 = _mm_or_si128(_mm_slli_epi32(x1, 12), _mm_srli_epi32(x6, 20)); + x0 = _mm_add_epi32(x0, x1); + x3 = _mm_xor_si128(x3, x0); + x3 = _mm_shuffle_epi8(x3, x5); + x0 = _mm_shuffle_epi32(x0, 0x93); + x2 = _mm_add_epi32(x2, x3); + x3 = _mm_shuffle_epi32(x3, 0x4e); + x1 = _mm_xor_si128(x1, x2); + x2 = _mm_shuffle_epi32(x2, 0x39); + x6 = x1; + x1 = _mm_or_si128(_mm_slli_epi32(x1, 7), _mm_srli_epi32(x6, 25)); + x0 = _mm_add_epi32(x0, x1); + x3 = _mm_xor_si128(x3, x0); + x3 = _mm_shuffle_epi8(x3, x4); + x2 = _mm_add_epi32(x2, x3); + x1 = _mm_xor_si128(x1, x2); + x6 = x1; + x1 = _mm_or_si128(_mm_slli_epi32(x1, 12), _mm_srli_epi32(x6, 20)); + x0 = _mm_add_epi32(x0, x1); + x3 = _mm_xor_si128(x3, x0); + x3 = _mm_shuffle_epi8(x3, x5); + x0 = _mm_shuffle_epi32(x0, 0x39); + x2 = _mm_add_epi32(x2, x3); + x3 = _mm_shuffle_epi32(x3, 0x4e); + x1 = _mm_xor_si128(x1, x2); + x2 = _mm_shuffle_epi32(x2, 0x93); + x6 = x1; + x1 = _mm_or_si128(_mm_slli_epi32(x1, 7), _mm_srli_epi32(x6, 25)); + } + + x0 = _mm_add_epi32(x0, t0); + x1 = _mm_add_epi32(x1, t1); + x2 = _mm_add_epi32(x2, t2); + x3 = _mm_add_epi32(x3, t3); + + /* 4: Y_i = X */ + /* 6: B'[0..r-1] = Y_even */ + /* 6: B'[r..2r-1] = Y_odd */ + xmmp = (xmmi *)scrypt_block(Bout, (i / 2) + half); + xmmp[0] = x0; + xmmp[1] = x1; + xmmp[2] = x2; + xmmp[3] = x3; + } +} + +#endif + +#if defined(SCRYPT_CHACHA_AVX) + #undef SCRYPT_MIX + #define SCRYPT_MIX "ChaCha/8-AVX" + #undef SCRYPT_CHACHA_INCLUDED + #define SCRYPT_CHACHA_INCLUDED +#endif diff --git a/deps/scrypt-jane-master/code/scrypt-jane-mix_chacha-sse2.h b/deps/scrypt-jane-master/code/scrypt-jane-mix_chacha-sse2.h new file mode 100644 index 000000000..a8c2197ac --- /dev/null +++ b/deps/scrypt-jane-master/code/scrypt-jane-mix_chacha-sse2.h @@ -0,0 +1,363 @@ +/* x86 */ +#if defined(X86ASM_SSE2) && (!defined(SCRYPT_CHOOSE_COMPILETIME) || !defined(SCRYPT_CHACHA_INCLUDED)) && !defined(CPU_X86_FORCE_INTRINSICS) + +#define SCRYPT_CHACHA_SSE2 + +asm_naked_fn_proto(void, scrypt_ChunkMix_sse2)(uint32_t *Bout/*[chunkBytes]*/, uint32_t *Bin/*[chunkBytes]*/, uint32_t *Bxor/*[chunkBytes]*/, uint32_t r) +asm_naked_fn(scrypt_ChunkMix_sse2) + a1(push ebx) + a1(push edi) + a1(push esi) + a1(push ebp) + a2(mov ebp,esp) + a2(mov edi,[ebp+20]) + a2(mov esi,[ebp+24]) + a2(mov eax,[ebp+28]) + a2(mov ebx,[ebp+32]) + a2(sub esp,16) + a2(and esp,~15) + a2(lea edx,[ebx*2]) + a2(shl edx,6) + a2(lea ecx,[edx-64]) + a2(and eax, eax) + a2(movdqa xmm0,[ecx+esi+0]) + a2(movdqa xmm1,[ecx+esi+16]) + a2(movdqa xmm2,[ecx+esi+32]) + a2(movdqa xmm3,[ecx+esi+48]) + aj(jz scrypt_ChunkMix_sse2_no_xor1) + a2(pxor xmm0,[ecx+eax+0]) + a2(pxor xmm1,[ecx+eax+16]) + a2(pxor xmm2,[ecx+eax+32]) + a2(pxor xmm3,[ecx+eax+48]) + a1(scrypt_ChunkMix_sse2_no_xor1:) + a2(xor ecx,ecx) + a2(xor ebx,ebx) + a1(scrypt_ChunkMix_sse2_loop:) + a2(and eax, eax) + a2(pxor xmm0,[esi+ecx+0]) + a2(pxor xmm1,[esi+ecx+16]) + a2(pxor xmm2,[esi+ecx+32]) + a2(pxor xmm3,[esi+ecx+48]) + aj(jz scrypt_ChunkMix_sse2_no_xor2) + a2(pxor xmm0,[eax+ecx+0]) + a2(pxor xmm1,[eax+ecx+16]) + a2(pxor xmm2,[eax+ecx+32]) + a2(pxor xmm3,[eax+ecx+48]) + a1(scrypt_ChunkMix_sse2_no_xor2:) + a2(movdqa [esp+0],xmm0) + a2(movdqa xmm4,xmm1) + a2(movdqa xmm5,xmm2) + a2(movdqa xmm7,xmm3) + a2(mov eax,8) + a1(scrypt_chacha_sse2_loop: ) + a2(paddd xmm0,xmm1) + a2(pxor xmm3,xmm0) + a3(pshuflw xmm3,xmm3,0xb1) + a3(pshufhw xmm3,xmm3,0xb1) + a2(paddd xmm2,xmm3) + a2(pxor xmm1,xmm2) + a2(movdqa xmm6,xmm1) + a2(pslld xmm1,12) + a2(psrld xmm6,20) + a2(pxor xmm1,xmm6) + a2(paddd xmm0,xmm1) + a2(pxor xmm3,xmm0) + a2(movdqa xmm6,xmm3) + a2(pslld xmm3,8) + a2(psrld xmm6,24) + a2(pxor xmm3,xmm6) + a3(pshufd xmm0,xmm0,0x93) + a2(paddd xmm2,xmm3) + a3(pshufd xmm3,xmm3,0x4e) + a2(pxor xmm1,xmm2) + a3(pshufd xmm2,xmm2,0x39) + a2(movdqa xmm6,xmm1) + a2(pslld xmm1,7) + a2(psrld xmm6,25) + a2(pxor xmm1,xmm6) + a2(sub eax,2) + a2(paddd xmm0,xmm1) + a2(pxor xmm3,xmm0) + a3(pshuflw xmm3,xmm3,0xb1) + a3(pshufhw xmm3,xmm3,0xb1) + a2(paddd xmm2,xmm3) + a2(pxor xmm1,xmm2) + a2(movdqa xmm6,xmm1) + a2(pslld xmm1,12) + a2(psrld xmm6,20) + a2(pxor xmm1,xmm6) + a2(paddd xmm0,xmm1) + a2(pxor xmm3,xmm0) + a2(movdqa xmm6,xmm3) + a2(pslld xmm3,8) + a2(psrld xmm6,24) + a2(pxor xmm3,xmm6) + a3(pshufd xmm0,xmm0,0x39) + a2(paddd xmm2,xmm3) + a3(pshufd xmm3,xmm3,0x4e) + a2(pxor xmm1,xmm2) + a3(pshufd xmm2,xmm2,0x93) + a2(movdqa xmm6,xmm1) + a2(pslld xmm1,7) + a2(psrld xmm6,25) + a2(pxor xmm1,xmm6) + aj(ja scrypt_chacha_sse2_loop) + a2(paddd xmm0,[esp+0]) + a2(paddd xmm1,xmm4) + a2(paddd xmm2,xmm5) + a2(paddd xmm3,xmm7) + a2(lea eax,[ebx+ecx]) + a2(xor ebx,edx) + a2(and eax,~0x7f) + a2(add ecx,64) + a2(shr eax,1) + a2(add eax, edi) + a2(cmp ecx,edx) + a2(movdqa [eax+0],xmm0) + a2(movdqa [eax+16],xmm1) + a2(movdqa [eax+32],xmm2) + a2(movdqa [eax+48],xmm3) + a2(mov eax,[ebp+28]) + aj(jne scrypt_ChunkMix_sse2_loop) + a2(mov esp,ebp) + a1(pop ebp) + a1(pop esi) + a1(pop edi) + a1(pop ebx) + aret(16) +asm_naked_fn_end(scrypt_ChunkMix_sse2) + +#endif + + + +/* x64 */ +#if defined(X86_64ASM_SSE2) && (!defined(SCRYPT_CHOOSE_COMPILETIME) || !defined(SCRYPT_CHACHA_INCLUDED)) && !defined(CPU_X86_FORCE_INTRINSICS) + +#define SCRYPT_CHACHA_SSE2 + +asm_naked_fn_proto(void, scrypt_ChunkMix_sse2)(uint32_t *Bout/*[chunkBytes]*/, uint32_t *Bin/*[chunkBytes]*/, uint32_t *Bxor/*[chunkBytes]*/, uint32_t r) +asm_naked_fn(scrypt_ChunkMix_sse2) + a2(lea rcx,[ecx*2]) /* zero extend uint32_t by using ecx, win64 can leave garbage in the top half */ + a2(shl rcx,6) + a2(lea r9,[rcx-64]) + a2(lea rax,[rsi+r9]) + a2(lea r9,[rdx+r9]) + a2(and rdx, rdx) + a2(movdqa xmm0,[rax+0]) + a2(movdqa xmm1,[rax+16]) + a2(movdqa xmm2,[rax+32]) + a2(movdqa xmm3,[rax+48]) + aj(jz scrypt_ChunkMix_sse2_no_xor1) + a2(pxor xmm0,[r9+0]) + a2(pxor xmm1,[r9+16]) + a2(pxor xmm2,[r9+32]) + a2(pxor xmm3,[r9+48]) + a1(scrypt_ChunkMix_sse2_no_xor1:) + a2(xor r9,r9) + a2(xor r8,r8) + a1(scrypt_ChunkMix_sse2_loop:) + a2(and rdx, rdx) + a2(pxor xmm0,[rsi+r9+0]) + a2(pxor xmm1,[rsi+r9+16]) + a2(pxor xmm2,[rsi+r9+32]) + a2(pxor xmm3,[rsi+r9+48]) + aj(jz scrypt_ChunkMix_sse2_no_xor2) + a2(pxor xmm0,[rdx+r9+0]) + a2(pxor xmm1,[rdx+r9+16]) + a2(pxor xmm2,[rdx+r9+32]) + a2(pxor xmm3,[rdx+r9+48]) + a1(scrypt_ChunkMix_sse2_no_xor2:) + a2(movdqa xmm8,xmm0) + a2(movdqa xmm9,xmm1) + a2(movdqa xmm10,xmm2) + a2(movdqa xmm11,xmm3) + a2(mov rax,8) + a1(scrypt_chacha_sse2_loop: ) + a2(paddd xmm0,xmm1) + a2(pxor xmm3,xmm0) + a3(pshuflw xmm3,xmm3,0xb1) + a3(pshufhw xmm3,xmm3,0xb1) + a2(paddd xmm2,xmm3) + a2(pxor xmm1,xmm2) + a2(movdqa xmm6,xmm1) + a2(pslld xmm1,12) + a2(psrld xmm6,20) + a2(pxor xmm1,xmm6) + a2(paddd xmm0,xmm1) + a2(pxor xmm3,xmm0) + a2(movdqa xmm6,xmm3) + a2(pslld xmm3,8) + a2(psrld xmm6,24) + a2(pxor xmm3,xmm6) + a3(pshufd xmm0,xmm0,0x93) + a2(paddd xmm2,xmm3) + a3(pshufd xmm3,xmm3,0x4e) + a2(pxor xmm1,xmm2) + a3(pshufd xmm2,xmm2,0x39) + a2(movdqa xmm6,xmm1) + a2(pslld xmm1,7) + a2(psrld xmm6,25) + a2(pxor xmm1,xmm6) + a2(sub rax,2) + a2(paddd xmm0,xmm1) + a2(pxor xmm3,xmm0) + a3(pshuflw xmm3,xmm3,0xb1) + a3(pshufhw xmm3,xmm3,0xb1) + a2(paddd xmm2,xmm3) + a2(pxor xmm1,xmm2) + a2(movdqa xmm6,xmm1) + a2(pslld xmm1,12) + a2(psrld xmm6,20) + a2(pxor xmm1,xmm6) + a2(paddd xmm0,xmm1) + a2(pxor xmm3,xmm0) + a2(movdqa xmm6,xmm3) + a2(pslld xmm3,8) + a2(psrld xmm6,24) + a2(pxor xmm3,xmm6) + a3(pshufd xmm0,xmm0,0x39) + a2(paddd xmm2,xmm3) + a3(pshufd xmm3,xmm3,0x4e) + a2(pxor xmm1,xmm2) + a3(pshufd xmm2,xmm2,0x93) + a2(movdqa xmm6,xmm1) + a2(pslld xmm1,7) + a2(psrld xmm6,25) + a2(pxor xmm1,xmm6) + aj(ja scrypt_chacha_sse2_loop) + a2(paddd xmm0,xmm8) + a2(paddd xmm1,xmm9) + a2(paddd xmm2,xmm10) + a2(paddd xmm3,xmm11) + a2(lea rax,[r8+r9]) + a2(xor r8,rcx) + a2(and rax,~0x7f) + a2(add r9,64) + a2(shr rax,1) + a2(add rax, rdi) + a2(cmp r9,rcx) + a2(movdqa [rax+0],xmm0) + a2(movdqa [rax+16],xmm1) + a2(movdqa [rax+32],xmm2) + a2(movdqa [rax+48],xmm3) + aj(jne scrypt_ChunkMix_sse2_loop) + a1(ret) +asm_naked_fn_end(scrypt_ChunkMix_sse2) + +#endif + + +/* intrinsic */ +#if defined(X86_INTRINSIC_SSE2) && (!defined(SCRYPT_CHOOSE_COMPILETIME) || !defined(SCRYPT_CHACHA_INCLUDED)) + +#define SCRYPT_CHACHA_SSE2 + +static void NOINLINE asm_calling_convention +scrypt_ChunkMix_sse2(uint32_t *Bout/*[chunkBytes]*/, uint32_t *Bin/*[chunkBytes]*/, uint32_t *Bxor/*[chunkBytes]*/, uint32_t r) { + uint32_t i, blocksPerChunk = r * 2, half = 0; + xmmi *xmmp,x0,x1,x2,x3,x4,t0,t1,t2,t3; + size_t rounds; + + /* 1: X = B_{2r - 1} */ + xmmp = (xmmi *)scrypt_block(Bin, blocksPerChunk - 1); + x0 = xmmp[0]; + x1 = xmmp[1]; + x2 = xmmp[2]; + x3 = xmmp[3]; + + if (Bxor) { + xmmp = (xmmi *)scrypt_block(Bxor, blocksPerChunk - 1); + x0 = _mm_xor_si128(x0, xmmp[0]); + x1 = _mm_xor_si128(x1, xmmp[1]); + x2 = _mm_xor_si128(x2, xmmp[2]); + x3 = _mm_xor_si128(x3, xmmp[3]); + } + + /* 2: for i = 0 to 2r - 1 do */ + for (i = 0; i < blocksPerChunk; i++, half ^= r) { + /* 3: X = H(X ^ B_i) */ + xmmp = (xmmi *)scrypt_block(Bin, i); + x0 = _mm_xor_si128(x0, xmmp[0]); + x1 = _mm_xor_si128(x1, xmmp[1]); + x2 = _mm_xor_si128(x2, xmmp[2]); + x3 = _mm_xor_si128(x3, xmmp[3]); + + if (Bxor) { + xmmp = (xmmi *)scrypt_block(Bxor, i); + x0 = _mm_xor_si128(x0, xmmp[0]); + x1 = _mm_xor_si128(x1, xmmp[1]); + x2 = _mm_xor_si128(x2, xmmp[2]); + x3 = _mm_xor_si128(x3, xmmp[3]); + } + + t0 = x0; + t1 = x1; + t2 = x2; + t3 = x3; + + for (rounds = 8; rounds; rounds -= 2) { + x0 = _mm_add_epi32(x0, x1); + x3 = _mm_xor_si128(x3, x0); + x4 = x3; + x3 = _mm_shufflehi_epi16(_mm_shufflelo_epi16(x3, 0xb1), 0xb1); + x2 = _mm_add_epi32(x2, x3); + x1 = _mm_xor_si128(x1, x2); + x4 = x1; + x1 = _mm_or_si128(_mm_slli_epi32(x1, 12), _mm_srli_epi32(x4, 20)); + x0 = _mm_add_epi32(x0, x1); + x3 = _mm_xor_si128(x3, x0); + x4 = x3; + x3 = _mm_or_si128(_mm_slli_epi32(x3, 8), _mm_srli_epi32(x4, 24)); + x0 = _mm_shuffle_epi32(x0, 0x93); + x2 = _mm_add_epi32(x2, x3); + x3 = _mm_shuffle_epi32(x3, 0x4e); + x1 = _mm_xor_si128(x1, x2); + x2 = _mm_shuffle_epi32(x2, 0x39); + x4 = x1; + x1 = _mm_or_si128(_mm_slli_epi32(x1, 7), _mm_srli_epi32(x4, 25)); + x0 = _mm_add_epi32(x0, x1); + x3 = _mm_xor_si128(x3, x0); + x4 = x3; + x3 = _mm_shufflehi_epi16(_mm_shufflelo_epi16(x3, 0xb1), 0xb1); + x2 = _mm_add_epi32(x2, x3); + x1 = _mm_xor_si128(x1, x2); + x4 = x1; + x1 = _mm_or_si128(_mm_slli_epi32(x1, 12), _mm_srli_epi32(x4, 20)); + x0 = _mm_add_epi32(x0, x1); + x3 = _mm_xor_si128(x3, x0); + x4 = x3; + x3 = _mm_or_si128(_mm_slli_epi32(x3, 8), _mm_srli_epi32(x4, 24)); + x0 = _mm_shuffle_epi32(x0, 0x39); + x2 = _mm_add_epi32(x2, x3); + x3 = _mm_shuffle_epi32(x3, 0x4e); + x1 = _mm_xor_si128(x1, x2); + x2 = _mm_shuffle_epi32(x2, 0x93); + x4 = x1; + x1 = _mm_or_si128(_mm_slli_epi32(x1, 7), _mm_srli_epi32(x4, 25)); + } + + x0 = _mm_add_epi32(x0, t0); + x1 = _mm_add_epi32(x1, t1); + x2 = _mm_add_epi32(x2, t2); + x3 = _mm_add_epi32(x3, t3); + + /* 4: Y_i = X */ + /* 6: B'[0..r-1] = Y_even */ + /* 6: B'[r..2r-1] = Y_odd */ + xmmp = (xmmi *)scrypt_block(Bout, (i / 2) + half); + xmmp[0] = x0; + xmmp[1] = x1; + xmmp[2] = x2; + xmmp[3] = x3; + } +} + +#endif + +#if defined(SCRYPT_CHACHA_SSE2) + #undef SCRYPT_MIX + #define SCRYPT_MIX "ChaCha/8-SSE2" + #undef SCRYPT_CHACHA_INCLUDED + #define SCRYPT_CHACHA_INCLUDED +#endif diff --git a/deps/scrypt-jane-master/code/scrypt-jane-mix_chacha-ssse3.h b/deps/scrypt-jane-master/code/scrypt-jane-mix_chacha-ssse3.h new file mode 100644 index 000000000..894312e60 --- /dev/null +++ b/deps/scrypt-jane-master/code/scrypt-jane-mix_chacha-ssse3.h @@ -0,0 +1,376 @@ +/* x86 */ +#if defined(X86ASM_SSSE3) && (!defined(SCRYPT_CHOOSE_COMPILETIME) || !defined(SCRYPT_CHACHA_INCLUDED)) && !defined(CPU_X86_FORCE_INTRINSICS) + +#define SCRYPT_CHACHA_SSSE3 + +asm_naked_fn_proto(void, scrypt_ChunkMix_ssse3)(uint32_t *Bout/*[chunkBytes]*/, uint32_t *Bin/*[chunkBytes]*/, uint32_t *Bxor/*[chunkBytes]*/, uint32_t r) +asm_naked_fn(scrypt_ChunkMix_ssse3) + a1(push ebx) + a1(push edi) + a1(push esi) + a1(push ebp) + a2(mov ebp,esp) + a2(mov edi,[ebp+20]) + a2(mov esi,[ebp+24]) + a2(mov eax,[ebp+28]) + a2(mov ebx,[ebp+32]) + a2(sub esp,64) + a2(and esp,~63) + a2(lea edx,[ebx*2]) + a2(shl edx,6) + a2(lea ecx,[edx-64]) + a2(and eax, eax) + a2(mov ebx, 0x01000302) + a2(movd xmm4, ebx) + a2(mov ebx, 0x05040706) + a2(movd xmm0, ebx) + a2(mov ebx, 0x09080b0a) + a2(movd xmm1, ebx) + a2(mov ebx, 0x0d0c0f0e) + a2(movd xmm2, ebx) + a2(mov ebx, 0x02010003) + a2(movd xmm5, ebx) + a2(mov ebx, 0x06050407) + a2(movd xmm3, ebx) + a2(mov ebx, 0x0a09080b) + a2(movd xmm6, ebx) + a2(mov ebx, 0x0e0d0c0f) + a2(movd xmm7, ebx) + a2(punpckldq xmm4, xmm0) + a2(punpckldq xmm5, xmm3) + a2(punpckldq xmm1, xmm2) + a2(punpckldq xmm6, xmm7) + a2(punpcklqdq xmm4, xmm1) + a2(punpcklqdq xmm5, xmm6) + a2(movdqa xmm0,[ecx+esi+0]) + a2(movdqa xmm1,[ecx+esi+16]) + a2(movdqa xmm2,[ecx+esi+32]) + a2(movdqa xmm3,[ecx+esi+48]) + aj(jz scrypt_ChunkMix_ssse3_no_xor1) + a2(pxor xmm0,[ecx+eax+0]) + a2(pxor xmm1,[ecx+eax+16]) + a2(pxor xmm2,[ecx+eax+32]) + a2(pxor xmm3,[ecx+eax+48]) + a1(scrypt_ChunkMix_ssse3_no_xor1:) + a2(xor ecx,ecx) + a2(xor ebx,ebx) + a1(scrypt_ChunkMix_ssse3_loop:) + a2(and eax, eax) + a2(pxor xmm0,[esi+ecx+0]) + a2(pxor xmm1,[esi+ecx+16]) + a2(pxor xmm2,[esi+ecx+32]) + a2(pxor xmm3,[esi+ecx+48]) + aj(jz scrypt_ChunkMix_ssse3_no_xor2) + a2(pxor xmm0,[eax+ecx+0]) + a2(pxor xmm1,[eax+ecx+16]) + a2(pxor xmm2,[eax+ecx+32]) + a2(pxor xmm3,[eax+ecx+48]) + a1(scrypt_ChunkMix_ssse3_no_xor2:) + a2(movdqa [esp+0],xmm0) + a2(movdqa [esp+16],xmm1) + a2(movdqa [esp+32],xmm2) + a2(movdqa xmm7,xmm3) + a2(mov eax,8) + a1(scrypt_chacha_ssse3_loop: ) + a2(paddd xmm0,xmm1) + a2(pxor xmm3,xmm0) + a2(pshufb xmm3,xmm4) + a2(paddd xmm2,xmm3) + a2(pxor xmm1,xmm2) + a2(movdqa xmm6,xmm1) + a2(pslld xmm1,12) + a2(psrld xmm6,20) + a2(pxor xmm1,xmm6) + a2(paddd xmm0,xmm1) + a2(pxor xmm3,xmm0) + a2(pshufb xmm3,xmm5) + a3(pshufd xmm0,xmm0,0x93) + a2(paddd xmm2,xmm3) + a3(pshufd xmm3,xmm3,0x4e) + a2(pxor xmm1,xmm2) + a3(pshufd xmm2,xmm2,0x39) + a2(movdqa xmm6,xmm1) + a2(pslld xmm1,7) + a2(psrld xmm6,25) + a2(pxor xmm1,xmm6) + a2(sub eax,2) + a2(paddd xmm0,xmm1) + a2(pxor xmm3,xmm0) + a2(pshufb xmm3,xmm4) + a2(paddd xmm2,xmm3) + a2(pxor xmm1,xmm2) + a2(movdqa xmm6,xmm1) + a2(pslld xmm1,12) + a2(psrld xmm6,20) + a2(pxor xmm1,xmm6) + a2(paddd xmm0,xmm1) + a2(pxor xmm3,xmm0) + a2(pshufb xmm3,xmm5) + a3(pshufd xmm0,xmm0,0x39) + a2(paddd xmm2,xmm3) + a3(pshufd xmm3,xmm3,0x4e) + a2(pxor xmm1,xmm2) + a3(pshufd xmm2,xmm2,0x93) + a2(movdqa xmm6,xmm1) + a2(pslld xmm1,7) + a2(psrld xmm6,25) + a2(pxor xmm1,xmm6) + aj(ja scrypt_chacha_ssse3_loop) + a2(paddd xmm0,[esp+0]) + a2(paddd xmm1,[esp+16]) + a2(paddd xmm2,[esp+32]) + a2(paddd xmm3,xmm7) + a2(lea eax,[ebx+ecx]) + a2(xor ebx,edx) + a2(and eax,~0x7f) + a2(add ecx,64) + a2(shr eax,1) + a2(add eax, edi) + a2(cmp ecx,edx) + a2(movdqa [eax+0],xmm0) + a2(movdqa [eax+16],xmm1) + a2(movdqa [eax+32],xmm2) + a2(movdqa [eax+48],xmm3) + a2(mov eax,[ebp+28]) + aj(jne scrypt_ChunkMix_ssse3_loop) + a2(mov esp,ebp) + a1(pop ebp) + a1(pop esi) + a1(pop edi) + a1(pop ebx) + aret(16) +asm_naked_fn_end(scrypt_ChunkMix_ssse3) + +#endif + + + +/* x64 */ +#if defined(X86_64ASM_SSSE3) && (!defined(SCRYPT_CHOOSE_COMPILETIME) || !defined(SCRYPT_CHACHA_INCLUDED)) && !defined(CPU_X86_FORCE_INTRINSICS) + +#define SCRYPT_CHACHA_SSSE3 + +asm_naked_fn_proto(void, scrypt_ChunkMix_ssse3)(uint32_t *Bout/*[chunkBytes]*/, uint32_t *Bin/*[chunkBytes]*/, uint32_t *Bxor/*[chunkBytes]*/, uint32_t r) +asm_naked_fn(scrypt_ChunkMix_ssse3) + a2(lea rcx,[ecx*2]) /* zero extend uint32_t by using ecx, win64 can leave garbage in the top half */ + a2(shl rcx,6) + a2(lea r9,[rcx-64]) + a2(lea rax,[rsi+r9]) + a2(lea r9,[rdx+r9]) + a2(and rdx, rdx) + a2(movdqa xmm0,[rax+0]) + a2(movdqa xmm1,[rax+16]) + a2(movdqa xmm2,[rax+32]) + a2(movdqa xmm3,[rax+48]) + a2(mov r8, 0x0504070601000302) + a2(mov rax, 0x0d0c0f0e09080b0a) + a2(movd xmm4, r8) + a2(movd xmm6, rax) + a2(mov r8, 0x0605040702010003) + a2(mov rax, 0x0e0d0c0f0a09080b) + a2(movd xmm5, r8) + a2(movd xmm7, rax) + a2(punpcklqdq xmm4, xmm6) + a2(punpcklqdq xmm5, xmm7) + aj(jz scrypt_ChunkMix_ssse3_no_xor1) + a2(pxor xmm0,[r9+0]) + a2(pxor xmm1,[r9+16]) + a2(pxor xmm2,[r9+32]) + a2(pxor xmm3,[r9+48]) + a1(scrypt_ChunkMix_ssse3_no_xor1:) + a2(xor r8,r8) + a2(xor r9,r9) + a1(scrypt_ChunkMix_ssse3_loop:) + a2(and rdx, rdx) + a2(pxor xmm0,[rsi+r9+0]) + a2(pxor xmm1,[rsi+r9+16]) + a2(pxor xmm2,[rsi+r9+32]) + a2(pxor xmm3,[rsi+r9+48]) + aj(jz scrypt_ChunkMix_ssse3_no_xor2) + a2(pxor xmm0,[rdx+r9+0]) + a2(pxor xmm1,[rdx+r9+16]) + a2(pxor xmm2,[rdx+r9+32]) + a2(pxor xmm3,[rdx+r9+48]) + a1(scrypt_ChunkMix_ssse3_no_xor2:) + a2(movdqa xmm8,xmm0) + a2(movdqa xmm9,xmm1) + a2(movdqa xmm10,xmm2) + a2(movdqa xmm11,xmm3) + a2(mov rax,8) + a1(scrypt_chacha_ssse3_loop: ) + a2(paddd xmm0,xmm1) + a2(pxor xmm3,xmm0) + a2(pshufb xmm3,xmm4) + a2(paddd xmm2,xmm3) + a2(pxor xmm1,xmm2) + a2(movdqa xmm12,xmm1) + a2(pslld xmm1,12) + a2(psrld xmm12,20) + a2(pxor xmm1,xmm12) + a2(paddd xmm0,xmm1) + a2(pxor xmm3,xmm0) + a2(pshufb xmm3,xmm5) + a3(pshufd xmm0,xmm0,0x93) + a2(paddd xmm2,xmm3) + a3(pshufd xmm3,xmm3,0x4e) + a2(pxor xmm1,xmm2) + a3(pshufd xmm2,xmm2,0x39) + a2(movdqa xmm12,xmm1) + a2(pslld xmm1,7) + a2(psrld xmm12,25) + a2(pxor xmm1,xmm12) + a2(sub rax,2) + a2(paddd xmm0,xmm1) + a2(pxor xmm3,xmm0) + a2(pshufb xmm3,xmm4) + a2(paddd xmm2,xmm3) + a2(pxor xmm1,xmm2) + a2(movdqa xmm12,xmm1) + a2(pslld xmm1,12) + a2(psrld xmm12,20) + a2(pxor xmm1,xmm12) + a2(paddd xmm0,xmm1) + a2(pxor xmm3,xmm0) + a2(pshufb xmm3,xmm5) + a3(pshufd xmm0,xmm0,0x39) + a2(paddd xmm2,xmm3) + a3(pshufd xmm3,xmm3,0x4e) + a2(pxor xmm1,xmm2) + a3(pshufd xmm2,xmm2,0x93) + a2(movdqa xmm12,xmm1) + a2(pslld xmm1,7) + a2(psrld xmm12,25) + a2(pxor xmm1,xmm12) + aj(ja scrypt_chacha_ssse3_loop) + a2(paddd xmm0,xmm8) + a2(paddd xmm1,xmm9) + a2(paddd xmm2,xmm10) + a2(paddd xmm3,xmm11) + a2(lea rax,[r8+r9]) + a2(xor r8,rcx) + a2(and rax,~0x7f) + a2(add r9,64) + a2(shr rax,1) + a2(add rax, rdi) + a2(cmp r9,rcx) + a2(movdqa [rax+0],xmm0) + a2(movdqa [rax+16],xmm1) + a2(movdqa [rax+32],xmm2) + a2(movdqa [rax+48],xmm3) + aj(jne scrypt_ChunkMix_ssse3_loop) + a1(ret) +asm_naked_fn_end(scrypt_ChunkMix_ssse3) + +#endif + + +/* intrinsic */ +#if defined(X86_INTRINSIC_SSSE3) && (!defined(SCRYPT_CHOOSE_COMPILETIME) || !defined(SCRYPT_CHACHA_INCLUDED)) + +#define SCRYPT_CHACHA_SSSE3 + +static void NOINLINE asm_calling_convention +scrypt_ChunkMix_ssse3(uint32_t *Bout/*[chunkBytes]*/, uint32_t *Bin/*[chunkBytes]*/, uint32_t *Bxor/*[chunkBytes]*/, uint32_t r) { + uint32_t i, blocksPerChunk = r * 2, half = 0; + xmmi *xmmp,x0,x1,x2,x3,x6,t0,t1,t2,t3; + const xmmi x4 = *(xmmi *)&ssse3_rotl16_32bit, x5 = *(xmmi *)&ssse3_rotl8_32bit; + size_t rounds; + + /* 1: X = B_{2r - 1} */ + xmmp = (xmmi *)scrypt_block(Bin, blocksPerChunk - 1); + x0 = xmmp[0]; + x1 = xmmp[1]; + x2 = xmmp[2]; + x3 = xmmp[3]; + + if (Bxor) { + xmmp = (xmmi *)scrypt_block(Bxor, blocksPerChunk - 1); + x0 = _mm_xor_si128(x0, xmmp[0]); + x1 = _mm_xor_si128(x1, xmmp[1]); + x2 = _mm_xor_si128(x2, xmmp[2]); + x3 = _mm_xor_si128(x3, xmmp[3]); + } + + /* 2: for i = 0 to 2r - 1 do */ + for (i = 0; i < blocksPerChunk; i++, half ^= r) { + /* 3: X = H(X ^ B_i) */ + xmmp = (xmmi *)scrypt_block(Bin, i); + x0 = _mm_xor_si128(x0, xmmp[0]); + x1 = _mm_xor_si128(x1, xmmp[1]); + x2 = _mm_xor_si128(x2, xmmp[2]); + x3 = _mm_xor_si128(x3, xmmp[3]); + + if (Bxor) { + xmmp = (xmmi *)scrypt_block(Bxor, i); + x0 = _mm_xor_si128(x0, xmmp[0]); + x1 = _mm_xor_si128(x1, xmmp[1]); + x2 = _mm_xor_si128(x2, xmmp[2]); + x3 = _mm_xor_si128(x3, xmmp[3]); + } + + t0 = x0; + t1 = x1; + t2 = x2; + t3 = x3; + + for (rounds = 8; rounds; rounds -= 2) { + x0 = _mm_add_epi32(x0, x1); + x3 = _mm_xor_si128(x3, x0); + x3 = _mm_shuffle_epi8(x3, x4); + x2 = _mm_add_epi32(x2, x3); + x1 = _mm_xor_si128(x1, x2); + x6 = x1; + x1 = _mm_or_si128(_mm_slli_epi32(x1, 12), _mm_srli_epi32(x6, 20)); + x0 = _mm_add_epi32(x0, x1); + x3 = _mm_xor_si128(x3, x0); + x3 = _mm_shuffle_epi8(x3, x5); + x0 = _mm_shuffle_epi32(x0, 0x93); + x2 = _mm_add_epi32(x2, x3); + x3 = _mm_shuffle_epi32(x3, 0x4e); + x1 = _mm_xor_si128(x1, x2); + x2 = _mm_shuffle_epi32(x2, 0x39); + x6 = x1; + x1 = _mm_or_si128(_mm_slli_epi32(x1, 7), _mm_srli_epi32(x6, 25)); + x0 = _mm_add_epi32(x0, x1); + x3 = _mm_xor_si128(x3, x0); + x3 = _mm_shuffle_epi8(x3, x4); + x2 = _mm_add_epi32(x2, x3); + x1 = _mm_xor_si128(x1, x2); + x6 = x1; + x1 = _mm_or_si128(_mm_slli_epi32(x1, 12), _mm_srli_epi32(x6, 20)); + x0 = _mm_add_epi32(x0, x1); + x3 = _mm_xor_si128(x3, x0); + x3 = _mm_shuffle_epi8(x3, x5); + x0 = _mm_shuffle_epi32(x0, 0x39); + x2 = _mm_add_epi32(x2, x3); + x3 = _mm_shuffle_epi32(x3, 0x4e); + x1 = _mm_xor_si128(x1, x2); + x2 = _mm_shuffle_epi32(x2, 0x93); + x6 = x1; + x1 = _mm_or_si128(_mm_slli_epi32(x1, 7), _mm_srli_epi32(x6, 25)); + } + + x0 = _mm_add_epi32(x0, t0); + x1 = _mm_add_epi32(x1, t1); + x2 = _mm_add_epi32(x2, t2); + x3 = _mm_add_epi32(x3, t3); + + /* 4: Y_i = X */ + /* 6: B'[0..r-1] = Y_even */ + /* 6: B'[r..2r-1] = Y_odd */ + xmmp = (xmmi *)scrypt_block(Bout, (i / 2) + half); + xmmp[0] = x0; + xmmp[1] = x1; + xmmp[2] = x2; + xmmp[3] = x3; + } +} + +#endif + +#if defined(SCRYPT_CHACHA_SSSE3) + #undef SCRYPT_MIX + #define SCRYPT_MIX "ChaCha/8-SSSE3" + #undef SCRYPT_CHACHA_INCLUDED + #define SCRYPT_CHACHA_INCLUDED +#endif diff --git a/deps/scrypt-jane-master/code/scrypt-jane-mix_chacha-xop.h b/deps/scrypt-jane-master/code/scrypt-jane-mix_chacha-xop.h new file mode 100644 index 000000000..4c25d887e --- /dev/null +++ b/deps/scrypt-jane-master/code/scrypt-jane-mix_chacha-xop.h @@ -0,0 +1,315 @@ +/* x86 */ +#if defined(X86ASM_XOP) && (!defined(SCRYPT_CHOOSE_COMPILETIME) || !defined(SCRYPT_CHACHA_INCLUDED)) && !defined(CPU_X86_FORCE_INTRINSICS) + +#define SCRYPT_CHACHA_XOP + +asm_naked_fn_proto(void, scrypt_ChunkMix_xop)(uint32_t *Bout/*[chunkBytes]*/, uint32_t *Bin/*[chunkBytes]*/, uint32_t *Bxor/*[chunkBytes]*/, uint32_t r) +asm_naked_fn(scrypt_ChunkMix_xop) + a1(push ebx) + a1(push edi) + a1(push esi) + a1(push ebp) + a2(mov ebp,esp) + a2(mov edi,[ebp+20]) + a2(mov esi,[ebp+24]) + a2(mov eax,[ebp+28]) + a2(mov ebx,[ebp+32]) + a2(sub esp,64) + a2(and esp,~63) + a2(lea edx,[ebx*2]) + a2(shl edx,6) + a2(lea ecx,[edx-64]) + a2(and eax, eax) + a2(vmovdqa xmm0,[ecx+esi+0]) + a2(vmovdqa xmm1,[ecx+esi+16]) + a2(vmovdqa xmm2,[ecx+esi+32]) + a2(vmovdqa xmm3,[ecx+esi+48]) + aj(jz scrypt_ChunkMix_xop_no_xor1) + a3(vpxor xmm0,xmm0,[ecx+eax+0]) + a3(vpxor xmm1,xmm1,[ecx+eax+16]) + a3(vpxor xmm2,xmm2,[ecx+eax+32]) + a3(vpxor xmm3,xmm3,[ecx+eax+48]) + a1(scrypt_ChunkMix_xop_no_xor1:) + a2(xor ecx,ecx) + a2(xor ebx,ebx) + a1(scrypt_ChunkMix_xop_loop:) + a2(and eax, eax) + a3(vpxor xmm0,xmm0,[esi+ecx+0]) + a3(vpxor xmm1,xmm1,[esi+ecx+16]) + a3(vpxor xmm2,xmm2,[esi+ecx+32]) + a3(vpxor xmm3,xmm3,[esi+ecx+48]) + aj(jz scrypt_ChunkMix_xop_no_xor2) + a3(vpxor xmm0,xmm0,[eax+ecx+0]) + a3(vpxor xmm1,xmm1,[eax+ecx+16]) + a3(vpxor xmm2,xmm2,[eax+ecx+32]) + a3(vpxor xmm3,xmm3,[eax+ecx+48]) + a1(scrypt_ChunkMix_xop_no_xor2:) + a2(vmovdqa xmm4,xmm0) + a2(vmovdqa xmm5,xmm1) + a2(vmovdqa xmm6,xmm2) + a2(vmovdqa xmm7,xmm3) + a2(mov eax,8) + a1(scrypt_chacha_xop_loop: ) + a3(vpaddd xmm0,xmm0,xmm1) + a3(vpxor xmm3,xmm3,xmm0) + a3(vprotd xmm3,xmm3,16) + a3(vpaddd xmm2,xmm2,xmm3) + a3(vpxor xmm1,xmm1,xmm2) + a3(vprotd xmm1,xmm1,12) + a3(vpaddd xmm0,xmm0,xmm1) + a3(vpxor xmm3,xmm3,xmm0) + a3(vprotd xmm3,xmm3,8) + a3(vpaddd xmm2,xmm2,xmm3) + a3(vpshufd xmm0,xmm0,0x93) + a3(vpxor xmm1,xmm1,xmm2) + a3(vprotd xmm1,xmm1,7) + a3(vpshufd xmm3,xmm3,0x4e) + a3(vpaddd xmm0,xmm0,xmm1) + a3(vpshufd xmm2,xmm2,0x39) + a3(vpxor xmm3,xmm3,xmm0) + a3(vprotd xmm3,xmm3,16) + a3(vpaddd xmm2,xmm2,xmm3) + a3(vpxor xmm1,xmm1,xmm2) + a3(vprotd xmm1,xmm1,12) + a3(vpaddd xmm0,xmm0,xmm1) + a3(vpxor xmm3,xmm3,xmm0) + a3(vprotd xmm3,xmm3,8) + a3(vpaddd xmm2,xmm2,xmm3) + a3(vpxor xmm1,xmm1,xmm2) + a3(vpshufd xmm0,xmm0,0x39) + a3(vprotd xmm1,xmm1,7) + a3(pshufd xmm3,xmm3,0x4e) + a3(pshufd xmm2,xmm2,0x93) + a2(sub eax,2) + aj(ja scrypt_chacha_xop_loop) + a3(vpaddd xmm0,xmm0,xmm4) + a3(vpaddd xmm1,xmm1,xmm5) + a3(vpaddd xmm2,xmm2,xmm6) + a3(vpaddd xmm3,xmm3,xmm7) + a2(lea eax,[ebx+ecx]) + a2(xor ebx,edx) + a2(and eax,~0x7f) + a2(add ecx,64) + a2(shr eax,1) + a2(add eax, edi) + a2(cmp ecx,edx) + a2(vmovdqa [eax+0],xmm0) + a2(vmovdqa [eax+16],xmm1) + a2(vmovdqa [eax+32],xmm2) + a2(vmovdqa [eax+48],xmm3) + a2(mov eax,[ebp+28]) + aj(jne scrypt_ChunkMix_xop_loop) + a2(mov esp,ebp) + a1(pop ebp) + a1(pop esi) + a1(pop edi) + a1(pop ebx) + aret(16) +asm_naked_fn_end(scrypt_ChunkMix_xop) + +#endif + + + +/* x64 */ +#if defined(X86_64ASM_XOP) && (!defined(SCRYPT_CHOOSE_COMPILETIME) || !defined(SCRYPT_CHACHA_INCLUDED)) && !defined(CPU_X86_FORCE_INTRINSICS) + +#define SCRYPT_CHACHA_XOP + +asm_naked_fn_proto(void, scrypt_ChunkMix_xop)(uint32_t *Bout/*[chunkBytes]*/, uint32_t *Bin/*[chunkBytes]*/, uint32_t *Bxor/*[chunkBytes]*/, uint32_t r) +asm_naked_fn(scrypt_ChunkMix_xop) + a2(lea rcx,[ecx*2]) /* zero extend uint32_t by using ecx, win64 can leave garbage in the top half */ + a2(shl rcx,6) + a2(lea r9,[rcx-64]) + a2(lea rax,[rsi+r9]) + a2(lea r9,[rdx+r9]) + a2(and rdx, rdx) + a2(vmovdqa xmm0,[rax+0]) + a2(vmovdqa xmm1,[rax+16]) + a2(vmovdqa xmm2,[rax+32]) + a2(vmovdqa xmm3,[rax+48]) + aj(jz scrypt_ChunkMix_xop_no_xor1) + a3(vpxor xmm0,xmm0,[r9+0]) + a3(vpxor xmm1,xmm1,[r9+16]) + a3(vpxor xmm2,xmm2,[r9+32]) + a3(vpxor xmm3,xmm3,[r9+48]) + a1(scrypt_ChunkMix_xop_no_xor1:) + a2(xor r8,r8) + a2(xor r9,r9) + a1(scrypt_ChunkMix_xop_loop:) + a2(and rdx, rdx) + a3(vpxor xmm0,xmm0,[rsi+r9+0]) + a3(vpxor xmm1,xmm1,[rsi+r9+16]) + a3(vpxor xmm2,xmm2,[rsi+r9+32]) + a3(vpxor xmm3,xmm3,[rsi+r9+48]) + aj(jz scrypt_ChunkMix_xop_no_xor2) + a3(vpxor xmm0,xmm0,[rdx+r9+0]) + a3(vpxor xmm1,xmm1,[rdx+r9+16]) + a3(vpxor xmm2,xmm2,[rdx+r9+32]) + a3(vpxor xmm3,xmm3,[rdx+r9+48]) + a1(scrypt_ChunkMix_xop_no_xor2:) + a2(vmovdqa xmm4,xmm0) + a2(vmovdqa xmm5,xmm1) + a2(vmovdqa xmm6,xmm2) + a2(vmovdqa xmm7,xmm3) + a2(mov rax,8) + a1(scrypt_chacha_xop_loop: ) + a3(vpaddd xmm0,xmm0,xmm1) + a3(vpxor xmm3,xmm3,xmm0) + a3(vprotd xmm3,xmm3,16) + a3(vpaddd xmm2,xmm2,xmm3) + a3(vpxor xmm1,xmm1,xmm2) + a3(vprotd xmm1,xmm1,12) + a3(vpaddd xmm0,xmm0,xmm1) + a3(vpxor xmm3,xmm3,xmm0) + a3(vprotd xmm3,xmm3,8) + a3(vpaddd xmm2,xmm2,xmm3) + a3(vpshufd xmm0,xmm0,0x93) + a3(vpxor xmm1,xmm1,xmm2) + a3(vprotd xmm1,xmm1,7) + a3(vpshufd xmm3,xmm3,0x4e) + a3(vpaddd xmm0,xmm0,xmm1) + a3(vpshufd xmm2,xmm2,0x39) + a3(vpxor xmm3,xmm3,xmm0) + a3(vprotd xmm3,xmm3,16) + a3(vpaddd xmm2,xmm2,xmm3) + a3(vpxor xmm1,xmm1,xmm2) + a3(vprotd xmm1,xmm1,12) + a3(vpaddd xmm0,xmm0,xmm1) + a3(vpxor xmm3,xmm3,xmm0) + a3(vprotd xmm3,xmm3,8) + a3(vpaddd xmm2,xmm2,xmm3) + a3(vpxor xmm1,xmm1,xmm2) + a3(vpshufd xmm0,xmm0,0x39) + a3(vprotd xmm1,xmm1,7) + a3(pshufd xmm3,xmm3,0x4e) + a3(pshufd xmm2,xmm2,0x93) + a2(sub rax,2) + aj(ja scrypt_chacha_xop_loop) + a3(vpaddd xmm0,xmm0,xmm4) + a3(vpaddd xmm1,xmm1,xmm5) + a3(vpaddd xmm2,xmm2,xmm6) + a3(vpaddd xmm3,xmm3,xmm7) + a2(lea rax,[r8+r9]) + a2(xor r8,rcx) + a2(and rax,~0x7f) + a2(add r9,64) + a2(shr rax,1) + a2(add rax, rdi) + a2(cmp r9,rcx) + a2(vmovdqa [rax+0],xmm0) + a2(vmovdqa [rax+16],xmm1) + a2(vmovdqa [rax+32],xmm2) + a2(vmovdqa [rax+48],xmm3) + aj(jne scrypt_ChunkMix_xop_loop) + a1(ret) +asm_naked_fn_end(scrypt_ChunkMix_xop) + +#endif + + +/* intrinsic */ +#if defined(X86_INTRINSIC_XOP) && (!defined(SCRYPT_CHOOSE_COMPILETIME) || !defined(SCRYPT_CHACHA_INCLUDED)) + +#define SCRYPT_CHACHA_XOP + +static void asm_calling_convention NOINLINE +scrypt_ChunkMix_xop(uint32_t *Bout/*[chunkBytes]*/, uint32_t *Bin/*[chunkBytes]*/, uint32_t *Bxor/*[chunkBytes]*/, uint32_t r) { + uint32_t i, blocksPerChunk = r * 2, half = 0; + xmmi *xmmp,x0,x1,x2,x3,x6,t0,t1,t2,t3; + size_t rounds; + + /* 1: X = B_{2r - 1} */ + xmmp = (xmmi *)scrypt_block(Bin, blocksPerChunk - 1); + x0 = xmmp[0]; + x1 = xmmp[1]; + x2 = xmmp[2]; + x3 = xmmp[3]; + + if (Bxor) { + xmmp = (xmmi *)scrypt_block(Bxor, blocksPerChunk - 1); + x0 = _mm_xor_si128(x0, xmmp[0]); + x1 = _mm_xor_si128(x1, xmmp[1]); + x2 = _mm_xor_si128(x2, xmmp[2]); + x3 = _mm_xor_si128(x3, xmmp[3]); + } + + /* 2: for i = 0 to 2r - 1 do */ + for (i = 0; i < blocksPerChunk; i++, half ^= r) { + /* 3: X = H(X ^ B_i) */ + xmmp = (xmmi *)scrypt_block(Bin, i); + x0 = _mm_xor_si128(x0, xmmp[0]); + x1 = _mm_xor_si128(x1, xmmp[1]); + x2 = _mm_xor_si128(x2, xmmp[2]); + x3 = _mm_xor_si128(x3, xmmp[3]); + + if (Bxor) { + xmmp = (xmmi *)scrypt_block(Bxor, i); + x0 = _mm_xor_si128(x0, xmmp[0]); + x1 = _mm_xor_si128(x1, xmmp[1]); + x2 = _mm_xor_si128(x2, xmmp[2]); + x3 = _mm_xor_si128(x3, xmmp[3]); + } + + t0 = x0; + t1 = x1; + t2 = x2; + t3 = x3; + + for (rounds = 8; rounds; rounds -= 2) { + x0 = _mm_add_epi32(x0, x1); + x3 = _mm_xor_si128(x3, x0); + x3 = _mm_roti_epi32(x3, 16); + x2 = _mm_add_epi32(x2, x3); + x1 = _mm_xor_si128(x1, x2); + x1 = _mm_roti_epi32(x1, 12); + x0 = _mm_add_epi32(x0, x1); + x3 = _mm_xor_si128(x3, x0); + x3 = _mm_roti_epi32(x3, 8); + x2 = _mm_add_epi32(x2, x3); + x0 = _mm_shuffle_epi32(x0, 0x93); + x1 = _mm_xor_si128(x1, x2); + x1 = _mm_roti_epi32(x1, 7); + x3 = _mm_shuffle_epi32(x3, 0x4e); + x0 = _mm_add_epi32(x0, x1); + x2 = _mm_shuffle_epi32(x2, 0x39); + x3 = _mm_xor_si128(x3, x0); + x3 = _mm_roti_epi32(x3, 16); + x2 = _mm_add_epi32(x2, x3); + x1 = _mm_xor_si128(x1, x2); + x1 = _mm_roti_epi32(x1, 12); + x0 = _mm_add_epi32(x0, x1); + x3 = _mm_xor_si128(x3, x0); + x3 = _mm_roti_epi32(x3, 8); + x2 = _mm_add_epi32(x2, x3); + x1 = _mm_xor_si128(x1, x2); + x0 = _mm_shuffle_epi32(x0, 0x39); + x1 = _mm_roti_epi32(x1, 7); + x3 = _mm_shuffle_epi32(x3, 0x4e); + x2 = _mm_shuffle_epi32(x2, 0x93); + } + + x0 = _mm_add_epi32(x0, t0); + x1 = _mm_add_epi32(x1, t1); + x2 = _mm_add_epi32(x2, t2); + x3 = _mm_add_epi32(x3, t3); + + /* 4: Y_i = X */ + /* 6: B'[0..r-1] = Y_even */ + /* 6: B'[r..2r-1] = Y_odd */ + xmmp = (xmmi *)scrypt_block(Bout, (i / 2) + half); + xmmp[0] = x0; + xmmp[1] = x1; + xmmp[2] = x2; + xmmp[3] = x3; + } +} + +#endif + +#if defined(SCRYPT_CHACHA_XOP) + #undef SCRYPT_MIX + #define SCRYPT_MIX "ChaCha/8-XOP" + #undef SCRYPT_CHACHA_INCLUDED + #define SCRYPT_CHACHA_INCLUDED +#endif diff --git a/deps/scrypt-jane-master/code/scrypt-jane-mix_chacha.h b/deps/scrypt-jane-master/code/scrypt-jane-mix_chacha.h new file mode 100644 index 000000000..85ee9c1ce --- /dev/null +++ b/deps/scrypt-jane-master/code/scrypt-jane-mix_chacha.h @@ -0,0 +1,69 @@ +#if !defined(SCRYPT_CHOOSE_COMPILETIME) || !defined(SCRYPT_CHACHA_INCLUDED) + +#undef SCRYPT_MIX +#define SCRYPT_MIX "ChaCha20/8 Ref" + +#undef SCRYPT_CHACHA_INCLUDED +#define SCRYPT_CHACHA_INCLUDED +#define SCRYPT_CHACHA_BASIC + +static void +chacha_core_basic(uint32_t state[16]) { + size_t rounds = 8; + uint32_t x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15,t; + + x0 = state[0]; + x1 = state[1]; + x2 = state[2]; + x3 = state[3]; + x4 = state[4]; + x5 = state[5]; + x6 = state[6]; + x7 = state[7]; + x8 = state[8]; + x9 = state[9]; + x10 = state[10]; + x11 = state[11]; + x12 = state[12]; + x13 = state[13]; + x14 = state[14]; + x15 = state[15]; + + #define quarter(a,b,c,d) \ + a += b; t = d^a; d = ROTL32(t,16); \ + c += d; t = b^c; b = ROTL32(t,12); \ + a += b; t = d^a; d = ROTL32(t, 8); \ + c += d; t = b^c; b = ROTL32(t, 7); + + for (; rounds; rounds -= 2) { + quarter( x0, x4, x8,x12) + quarter( x1, x5, x9,x13) + quarter( x2, x6,x10,x14) + quarter( x3, x7,x11,x15) + quarter( x0, x5,x10,x15) + quarter( x1, x6,x11,x12) + quarter( x2, x7, x8,x13) + quarter( x3, x4, x9,x14) + } + + state[0] += x0; + state[1] += x1; + state[2] += x2; + state[3] += x3; + state[4] += x4; + state[5] += x5; + state[6] += x6; + state[7] += x7; + state[8] += x8; + state[9] += x9; + state[10] += x10; + state[11] += x11; + state[12] += x12; + state[13] += x13; + state[14] += x14; + state[15] += x15; + + #undef quarter +} + +#endif \ No newline at end of file diff --git a/deps/scrypt-jane-master/code/scrypt-jane-mix_salsa-avx.h b/deps/scrypt-jane-master/code/scrypt-jane-mix_salsa-avx.h new file mode 100644 index 000000000..259fae468 --- /dev/null +++ b/deps/scrypt-jane-master/code/scrypt-jane-mix_salsa-avx.h @@ -0,0 +1,381 @@ +/* x86 */ +#if defined(X86ASM_AVX) && (!defined(SCRYPT_CHOOSE_COMPILETIME) || !defined(SCRYPT_SALSA_INCLUDED)) && !defined(CPU_X86_FORCE_INTRINSICS) + +#define SCRYPT_SALSA_AVX + +asm_naked_fn_proto(void, scrypt_ChunkMix_avx)(uint32_t *Bout/*[chunkBytes]*/, uint32_t *Bin/*[chunkBytes]*/, uint32_t *Bxor/*[chunkBytes]*/, uint32_t r) +asm_naked_fn(scrypt_ChunkMix_avx) + a1(push ebx) + a1(push edi) + a1(push esi) + a1(push ebp) + a2(mov ebp,esp) + a2(mov edi,[ebp+20]) + a2(mov esi,[ebp+24]) + a2(mov eax,[ebp+28]) + a2(mov ebx,[ebp+32]) + a2(sub esp,32) + a2(and esp,~63) + a2(lea edx,[ebx*2]) + a2(shl edx,6) + a2(lea ecx,[edx-64]) + a2(and eax, eax) + a2(movdqa xmm0,[ecx+esi+0]) + a2(movdqa xmm1,[ecx+esi+16]) + a2(movdqa xmm2,[ecx+esi+32]) + a2(movdqa xmm3,[ecx+esi+48]) + aj(jz scrypt_ChunkMix_avx_no_xor1) + a3(vpxor xmm0,xmm0,[ecx+eax+0]) + a3(vpxor xmm1,xmm1,[ecx+eax+16]) + a3(vpxor xmm2,xmm2,[ecx+eax+32]) + a3(vpxor xmm3,xmm3,[ecx+eax+48]) + a1(scrypt_ChunkMix_avx_no_xor1:) + a2(xor ecx,ecx) + a2(xor ebx,ebx) + a1(scrypt_ChunkMix_avx_loop:) + a2(and eax, eax) + a3(vpxor xmm0,xmm0,[esi+ecx+0]) + a3(vpxor xmm1,xmm1,[esi+ecx+16]) + a3(vpxor xmm2,xmm2,[esi+ecx+32]) + a3(vpxor xmm3,xmm3,[esi+ecx+48]) + aj(jz scrypt_ChunkMix_avx_no_xor2) + a3(vpxor xmm0,xmm0,[eax+ecx+0]) + a3(vpxor xmm1,xmm1,[eax+ecx+16]) + a3(vpxor xmm2,xmm2,[eax+ecx+32]) + a3(vpxor xmm3,xmm3,[eax+ecx+48]) + a1(scrypt_ChunkMix_avx_no_xor2:) + a2(vmovdqa [esp+0],xmm0) + a2(vmovdqa [esp+16],xmm1) + a2(vmovdqa xmm6,xmm2) + a2(vmovdqa xmm7,xmm3) + a2(mov eax,8) + a1(scrypt_salsa_avx_loop: ) + a3(vpaddd xmm4, xmm1, xmm0) + a3(vpsrld xmm5, xmm4, 25) + a3(vpslld xmm4, xmm4, 7) + a3(vpxor xmm3, xmm3, xmm5) + a3(vpxor xmm3, xmm3, xmm4) + a3(vpaddd xmm4, xmm0, xmm3) + a3(vpsrld xmm5, xmm4, 23) + a3(vpslld xmm4, xmm4, 9) + a3(vpxor xmm2, xmm2, xmm5) + a3(vpxor xmm2, xmm2, xmm4) + a3(vpaddd xmm4, xmm3, xmm2) + a3(vpsrld xmm5, xmm4, 19) + a3(vpslld xmm4, xmm4, 13) + a3(vpxor xmm1, xmm1, xmm5) + a3(vpshufd xmm3, xmm3, 0x93) + a3(vpxor xmm1, xmm1, xmm4) + a3(vpaddd xmm4, xmm2, xmm1) + a3(vpsrld xmm5, xmm4, 14) + a3(vpslld xmm4, xmm4, 18) + a3(vpxor xmm0, xmm0, xmm5) + a3(vpshufd xmm2, xmm2, 0x4e) + a3(vpxor xmm0, xmm0, xmm4) + a3(vpaddd xmm4, xmm3, xmm0) + a3(vpshufd xmm1, xmm1, 0x39) + a3(vpsrld xmm5, xmm4, 25) + a3(vpslld xmm4, xmm4, 7) + a3(vpxor xmm1, xmm1, xmm5) + a3(vpxor xmm1, xmm1, xmm4) + a3(vpaddd xmm4, xmm0, xmm1) + a3(vpsrld xmm5, xmm4, 23) + a3(vpslld xmm4, xmm4, 9) + a3(vpxor xmm2, xmm2, xmm5) + a3(vpxor xmm2, xmm2, xmm4) + a3(vpaddd xmm4, xmm1, xmm2) + a3(vpsrld xmm5, xmm4, 19) + a3(vpslld xmm4, xmm4, 13) + a3(vpxor xmm3, xmm3, xmm5) + a3(vpshufd xmm1, xmm1, 0x93) + a3(vpxor xmm3, xmm3, xmm4) + a3(vpaddd xmm4, xmm2, xmm3) + a3(vpsrld xmm5, xmm4, 14) + a3(vpslld xmm4, xmm4, 18) + a3(vpxor xmm0, xmm0, xmm5) + a3(vpshufd xmm2, xmm2, 0x4e) + a3(vpxor xmm0, xmm0, xmm4) + a3(vpshufd xmm3, xmm3, 0x39) + a2(sub eax, 2) + aj(ja scrypt_salsa_avx_loop) + a3(vpaddd xmm0,xmm0,[esp+0]) + a3(vpaddd xmm1,xmm1,[esp+16]) + a3(vpaddd xmm2,xmm2,xmm6) + a3(vpaddd xmm3,xmm3,xmm7) + a2(lea eax,[ebx+ecx]) + a2(xor ebx,edx) + a2(and eax,~0x7f) + a2(add ecx,64) + a2(shr eax,1) + a2(add eax, edi) + a2(cmp ecx,edx) + a2(vmovdqa [eax+0],xmm0) + a2(vmovdqa [eax+16],xmm1) + a2(vmovdqa [eax+32],xmm2) + a2(vmovdqa [eax+48],xmm3) + a2(mov eax,[ebp+28]) + aj(jne scrypt_ChunkMix_avx_loop) + a2(mov esp,ebp) + a1(pop ebp) + a1(pop esi) + a1(pop edi) + a1(pop ebx) + aret(16) +asm_naked_fn_end(scrypt_ChunkMix_avx) + +#endif + + + +/* x64 */ +#if defined(X86_64ASM_AVX) && (!defined(SCRYPT_CHOOSE_COMPILETIME) || !defined(SCRYPT_SALSA_INCLUDED)) && !defined(CPU_X86_FORCE_INTRINSICS) + +#define SCRYPT_SALSA_AVX + +asm_naked_fn_proto(void, scrypt_ChunkMix_avx)(uint32_t *Bout/*[chunkBytes]*/, uint32_t *Bin/*[chunkBytes]*/, uint32_t *Bxor/*[chunkBytes]*/, uint32_t r) +asm_naked_fn(scrypt_ChunkMix_avx) + a2(lea rcx,[ecx*2]) /* zero extend uint32_t by using ecx, win64 can leave garbage in the top half */ + a2(shl rcx,6) + a2(lea r9,[rcx-64]) + a2(lea rax,[rsi+r9]) + a2(lea r9,[rdx+r9]) + a2(and rdx, rdx) + a2(vmovdqa xmm0,[rax+0]) + a2(vmovdqa xmm1,[rax+16]) + a2(vmovdqa xmm2,[rax+32]) + a2(vmovdqa xmm3,[rax+48]) + aj(jz scrypt_ChunkMix_avx_no_xor1) + a3(vpxor xmm0,xmm0,[r9+0]) + a3(vpxor xmm1,xmm1,[r9+16]) + a3(vpxor xmm2,xmm2,[r9+32]) + a3(vpxor xmm3,xmm3,[r9+48]) + a1(scrypt_ChunkMix_avx_no_xor1:) + a2(xor r9,r9) + a2(xor r8,r8) + a1(scrypt_ChunkMix_avx_loop:) + a2(and rdx, rdx) + a3(vpxor xmm0,xmm0,[rsi+r9+0]) + a3(vpxor xmm1,xmm1,[rsi+r9+16]) + a3(vpxor xmm2,xmm2,[rsi+r9+32]) + a3(vpxor xmm3,xmm3,[rsi+r9+48]) + aj(jz scrypt_ChunkMix_avx_no_xor2) + a3(vpxor xmm0,xmm0,[rdx+r9+0]) + a3(vpxor xmm1,xmm1,[rdx+r9+16]) + a3(vpxor xmm2,xmm2,[rdx+r9+32]) + a3(vpxor xmm3,xmm3,[rdx+r9+48]) + a1(scrypt_ChunkMix_avx_no_xor2:) + a2(vmovdqa xmm8,xmm0) + a2(vmovdqa xmm9,xmm1) + a2(vmovdqa xmm10,xmm2) + a2(vmovdqa xmm11,xmm3) + a2(mov rax,8) + a1(scrypt_salsa_avx_loop: ) + a3(vpaddd xmm4, xmm1, xmm0) + a3(vpsrld xmm5, xmm4, 25) + a3(vpslld xmm4, xmm4, 7) + a3(vpxor xmm3, xmm3, xmm5) + a3(vpxor xmm3, xmm3, xmm4) + a3(vpaddd xmm4, xmm0, xmm3) + a3(vpsrld xmm5, xmm4, 23) + a3(vpslld xmm4, xmm4, 9) + a3(vpxor xmm2, xmm2, xmm5) + a3(vpxor xmm2, xmm2, xmm4) + a3(vpaddd xmm4, xmm3, xmm2) + a3(vpsrld xmm5, xmm4, 19) + a3(vpslld xmm4, xmm4, 13) + a3(vpxor xmm1, xmm1, xmm5) + a3(vpshufd xmm3, xmm3, 0x93) + a3(vpxor xmm1, xmm1, xmm4) + a3(vpaddd xmm4, xmm2, xmm1) + a3(vpsrld xmm5, xmm4, 14) + a3(vpslld xmm4, xmm4, 18) + a3(vpxor xmm0, xmm0, xmm5) + a3(vpshufd xmm2, xmm2, 0x4e) + a3(vpxor xmm0, xmm0, xmm4) + a3(vpaddd xmm4, xmm3, xmm0) + a3(vpshufd xmm1, xmm1, 0x39) + a3(vpsrld xmm5, xmm4, 25) + a3(vpslld xmm4, xmm4, 7) + a3(vpxor xmm1, xmm1, xmm5) + a3(vpxor xmm1, xmm1, xmm4) + a3(vpaddd xmm4, xmm0, xmm1) + a3(vpsrld xmm5, xmm4, 23) + a3(vpslld xmm4, xmm4, 9) + a3(vpxor xmm2, xmm2, xmm5) + a3(vpxor xmm2, xmm2, xmm4) + a3(vpaddd xmm4, xmm1, xmm2) + a3(vpsrld xmm5, xmm4, 19) + a3(vpslld xmm4, xmm4, 13) + a3(vpxor xmm3, xmm3, xmm5) + a3(vpshufd xmm1, xmm1, 0x93) + a3(vpxor xmm3, xmm3, xmm4) + a3(vpaddd xmm4, xmm2, xmm3) + a3(vpsrld xmm5, xmm4, 14) + a3(vpslld xmm4, xmm4, 18) + a3(vpxor xmm0, xmm0, xmm5) + a3(vpshufd xmm2, xmm2, 0x4e) + a3(vpxor xmm0, xmm0, xmm4) + a3(vpshufd xmm3, xmm3, 0x39) + a2(sub rax, 2) + aj(ja scrypt_salsa_avx_loop) + a3(vpaddd xmm0,xmm0,xmm8) + a3(vpaddd xmm1,xmm1,xmm9) + a3(vpaddd xmm2,xmm2,xmm10) + a3(vpaddd xmm3,xmm3,xmm11) + a2(lea rax,[r8+r9]) + a2(xor r8,rcx) + a2(and rax,~0x7f) + a2(add r9,64) + a2(shr rax,1) + a2(add rax, rdi) + a2(cmp r9,rcx) + a2(vmovdqa [rax+0],xmm0) + a2(vmovdqa [rax+16],xmm1) + a2(vmovdqa [rax+32],xmm2) + a2(vmovdqa [rax+48],xmm3) + aj(jne scrypt_ChunkMix_avx_loop) + a1(ret) +asm_naked_fn_end(scrypt_ChunkMix_avx) + +#endif + + +/* intrinsic */ +#if defined(X86_INTRINSIC_AVX) && (!defined(SCRYPT_CHOOSE_COMPILETIME) || !defined(SCRYPT_SALSA_INCLUDED)) + +#define SCRYPT_SALSA_AVX + +static void asm_calling_convention NOINLINE +scrypt_ChunkMix_avx(uint32_t *Bout/*[chunkBytes]*/, uint32_t *Bin/*[chunkBytes]*/, uint32_t *Bxor/*[chunkBytes]*/, uint32_t r) { + uint32_t i, blocksPerChunk = r * 2, half = 0; + xmmi *xmmp,x0,x1,x2,x3,x4,x5,t0,t1,t2,t3; + size_t rounds; + + /* 1: X = B_{2r - 1} */ + xmmp = (xmmi *)scrypt_block(Bin, blocksPerChunk - 1); + x0 = xmmp[0]; + x1 = xmmp[1]; + x2 = xmmp[2]; + x3 = xmmp[3]; + + if (Bxor) { + xmmp = (xmmi *)scrypt_block(Bxor, blocksPerChunk - 1); + x0 = _mm_xor_si128(x0, xmmp[0]); + x1 = _mm_xor_si128(x1, xmmp[1]); + x2 = _mm_xor_si128(x2, xmmp[2]); + x3 = _mm_xor_si128(x3, xmmp[3]); + } + + /* 2: for i = 0 to 2r - 1 do */ + for (i = 0; i < blocksPerChunk; i++, half ^= r) { + /* 3: X = H(X ^ B_i) */ + xmmp = (xmmi *)scrypt_block(Bin, i); + x0 = _mm_xor_si128(x0, xmmp[0]); + x1 = _mm_xor_si128(x1, xmmp[1]); + x2 = _mm_xor_si128(x2, xmmp[2]); + x3 = _mm_xor_si128(x3, xmmp[3]); + + if (Bxor) { + xmmp = (xmmi *)scrypt_block(Bxor, i); + x0 = _mm_xor_si128(x0, xmmp[0]); + x1 = _mm_xor_si128(x1, xmmp[1]); + x2 = _mm_xor_si128(x2, xmmp[2]); + x3 = _mm_xor_si128(x3, xmmp[3]); + } + + t0 = x0; + t1 = x1; + t2 = x2; + t3 = x3; + + for (rounds = 8; rounds; rounds -= 2) { + x4 = x1; + x4 = _mm_add_epi32(x4, x0); + x5 = x4; + x4 = _mm_slli_epi32(x4, 7); + x5 = _mm_srli_epi32(x5, 25); + x3 = _mm_xor_si128(x3, x4); + x4 = x0; + x3 = _mm_xor_si128(x3, x5); + x4 = _mm_add_epi32(x4, x3); + x5 = x4; + x4 = _mm_slli_epi32(x4, 9); + x5 = _mm_srli_epi32(x5, 23); + x2 = _mm_xor_si128(x2, x4); + x4 = x3; + x2 = _mm_xor_si128(x2, x5); + x3 = _mm_shuffle_epi32(x3, 0x93); + x4 = _mm_add_epi32(x4, x2); + x5 = x4; + x4 = _mm_slli_epi32(x4, 13); + x5 = _mm_srli_epi32(x5, 19); + x1 = _mm_xor_si128(x1, x4); + x4 = x2; + x1 = _mm_xor_si128(x1, x5); + x2 = _mm_shuffle_epi32(x2, 0x4e); + x4 = _mm_add_epi32(x4, x1); + x5 = x4; + x4 = _mm_slli_epi32(x4, 18); + x5 = _mm_srli_epi32(x5, 14); + x0 = _mm_xor_si128(x0, x4); + x4 = x3; + x0 = _mm_xor_si128(x0, x5); + x1 = _mm_shuffle_epi32(x1, 0x39); + x4 = _mm_add_epi32(x4, x0); + x5 = x4; + x4 = _mm_slli_epi32(x4, 7); + x5 = _mm_srli_epi32(x5, 25); + x1 = _mm_xor_si128(x1, x4); + x4 = x0; + x1 = _mm_xor_si128(x1, x5); + x4 = _mm_add_epi32(x4, x1); + x5 = x4; + x4 = _mm_slli_epi32(x4, 9); + x5 = _mm_srli_epi32(x5, 23); + x2 = _mm_xor_si128(x2, x4); + x4 = x1; + x2 = _mm_xor_si128(x2, x5); + x1 = _mm_shuffle_epi32(x1, 0x93); + x4 = _mm_add_epi32(x4, x2); + x5 = x4; + x4 = _mm_slli_epi32(x4, 13); + x5 = _mm_srli_epi32(x5, 19); + x3 = _mm_xor_si128(x3, x4); + x4 = x2; + x3 = _mm_xor_si128(x3, x5); + x2 = _mm_shuffle_epi32(x2, 0x4e); + x4 = _mm_add_epi32(x4, x3); + x5 = x4; + x4 = _mm_slli_epi32(x4, 18); + x5 = _mm_srli_epi32(x5, 14); + x0 = _mm_xor_si128(x0, x4); + x3 = _mm_shuffle_epi32(x3, 0x39); + x0 = _mm_xor_si128(x0, x5); + } + + x0 = _mm_add_epi32(x0, t0); + x1 = _mm_add_epi32(x1, t1); + x2 = _mm_add_epi32(x2, t2); + x3 = _mm_add_epi32(x3, t3); + + /* 4: Y_i = X */ + /* 6: B'[0..r-1] = Y_even */ + /* 6: B'[r..2r-1] = Y_odd */ + xmmp = (xmmi *)scrypt_block(Bout, (i / 2) + half); + xmmp[0] = x0; + xmmp[1] = x1; + xmmp[2] = x2; + xmmp[3] = x3; + } +} + +#endif + +#if defined(SCRYPT_SALSA_AVX) + /* uses salsa_core_tangle_sse2 */ + + #undef SCRYPT_MIX + #define SCRYPT_MIX "Salsa/8-AVX" + #undef SCRYPT_SALSA_INCLUDED + #define SCRYPT_SALSA_INCLUDED +#endif diff --git a/deps/scrypt-jane-master/code/scrypt-jane-mix_salsa-sse2.h b/deps/scrypt-jane-master/code/scrypt-jane-mix_salsa-sse2.h new file mode 100644 index 000000000..d7ef969ca --- /dev/null +++ b/deps/scrypt-jane-master/code/scrypt-jane-mix_salsa-sse2.h @@ -0,0 +1,443 @@ +/* x86 */ +#if defined(X86ASM_SSE2) && (!defined(SCRYPT_CHOOSE_COMPILETIME) || !defined(SCRYPT_SALSA_INCLUDED)) && !defined(CPU_X86_FORCE_INTRINSICS) + +#define SCRYPT_SALSA_SSE2 + +asm_naked_fn_proto(void, scrypt_ChunkMix_sse2)(uint32_t *Bout/*[chunkBytes]*/, uint32_t *Bin/*[chunkBytes]*/, uint32_t *Bxor/*[chunkBytes]*/, uint32_t r) +asm_naked_fn(scrypt_ChunkMix_sse2) + a1(push ebx) + a1(push edi) + a1(push esi) + a1(push ebp) + a2(mov ebp,esp) + a2(mov edi,[ebp+20]) + a2(mov esi,[ebp+24]) + a2(mov eax,[ebp+28]) + a2(mov ebx,[ebp+32]) + a2(sub esp,32) + a2(and esp,~63) + a2(lea edx,[ebx*2]) + a2(shl edx,6) + a2(lea ecx,[edx-64]) + a2(and eax, eax) + a2(movdqa xmm0,[ecx+esi+0]) + a2(movdqa xmm1,[ecx+esi+16]) + a2(movdqa xmm2,[ecx+esi+32]) + a2(movdqa xmm3,[ecx+esi+48]) + aj(jz scrypt_ChunkMix_sse2_no_xor1) + a2(pxor xmm0,[ecx+eax+0]) + a2(pxor xmm1,[ecx+eax+16]) + a2(pxor xmm2,[ecx+eax+32]) + a2(pxor xmm3,[ecx+eax+48]) + a1(scrypt_ChunkMix_sse2_no_xor1:) + a2(xor ecx,ecx) + a2(xor ebx,ebx) + a1(scrypt_ChunkMix_sse2_loop:) + a2(and eax, eax) + a2(pxor xmm0,[esi+ecx+0]) + a2(pxor xmm1,[esi+ecx+16]) + a2(pxor xmm2,[esi+ecx+32]) + a2(pxor xmm3,[esi+ecx+48]) + aj(jz scrypt_ChunkMix_sse2_no_xor2) + a2(pxor xmm0,[eax+ecx+0]) + a2(pxor xmm1,[eax+ecx+16]) + a2(pxor xmm2,[eax+ecx+32]) + a2(pxor xmm3,[eax+ecx+48]) + a1(scrypt_ChunkMix_sse2_no_xor2:) + a2(movdqa [esp+0],xmm0) + a2(movdqa [esp+16],xmm1) + a2(movdqa xmm6,xmm2) + a2(movdqa xmm7,xmm3) + a2(mov eax,8) + a1(scrypt_salsa_sse2_loop: ) + a2(movdqa xmm4, xmm1) + a2(paddd xmm4, xmm0) + a2(movdqa xmm5, xmm4) + a2(pslld xmm4, 7) + a2(psrld xmm5, 25) + a2(pxor xmm3, xmm4) + a2(movdqa xmm4, xmm0) + a2(pxor xmm3, xmm5) + a2(paddd xmm4, xmm3) + a2(movdqa xmm5, xmm4) + a2(pslld xmm4, 9) + a2(psrld xmm5, 23) + a2(pxor xmm2, xmm4) + a2(movdqa xmm4, xmm3) + a2(pxor xmm2, xmm5) + a3(pshufd xmm3, xmm3, 0x93) + a2(paddd xmm4, xmm2) + a2(movdqa xmm5, xmm4) + a2(pslld xmm4, 13) + a2(psrld xmm5, 19) + a2(pxor xmm1, xmm4) + a2(movdqa xmm4, xmm2) + a2(pxor xmm1, xmm5) + a3(pshufd xmm2, xmm2, 0x4e) + a2(paddd xmm4, xmm1) + a2(movdqa xmm5, xmm4) + a2(pslld xmm4, 18) + a2(psrld xmm5, 14) + a2(pxor xmm0, xmm4) + a2(movdqa xmm4, xmm3) + a2(pxor xmm0, xmm5) + a3(pshufd xmm1, xmm1, 0x39) + a2(paddd xmm4, xmm0) + a2(movdqa xmm5, xmm4) + a2(pslld xmm4, 7) + a2(psrld xmm5, 25) + a2(pxor xmm1, xmm4) + a2(movdqa xmm4, xmm0) + a2(pxor xmm1, xmm5) + a2(paddd xmm4, xmm1) + a2(movdqa xmm5, xmm4) + a2(pslld xmm4, 9) + a2(psrld xmm5, 23) + a2(pxor xmm2, xmm4) + a2(movdqa xmm4, xmm1) + a2(pxor xmm2, xmm5) + a3(pshufd xmm1, xmm1, 0x93) + a2(paddd xmm4, xmm2) + a2(movdqa xmm5, xmm4) + a2(pslld xmm4, 13) + a2(psrld xmm5, 19) + a2(pxor xmm3, xmm4) + a2(movdqa xmm4, xmm2) + a2(pxor xmm3, xmm5) + a3(pshufd xmm2, xmm2, 0x4e) + a2(paddd xmm4, xmm3) + a2(sub eax, 2) + a2(movdqa xmm5, xmm4) + a2(pslld xmm4, 18) + a2(psrld xmm5, 14) + a2(pxor xmm0, xmm4) + a3(pshufd xmm3, xmm3, 0x39) + a2(pxor xmm0, xmm5) + aj(ja scrypt_salsa_sse2_loop) + a2(paddd xmm0,[esp+0]) + a2(paddd xmm1,[esp+16]) + a2(paddd xmm2,xmm6) + a2(paddd xmm3,xmm7) + a2(lea eax,[ebx+ecx]) + a2(xor ebx,edx) + a2(and eax,~0x7f) + a2(add ecx,64) + a2(shr eax,1) + a2(add eax, edi) + a2(cmp ecx,edx) + a2(movdqa [eax+0],xmm0) + a2(movdqa [eax+16],xmm1) + a2(movdqa [eax+32],xmm2) + a2(movdqa [eax+48],xmm3) + a2(mov eax,[ebp+28]) + aj(jne scrypt_ChunkMix_sse2_loop) + a2(mov esp,ebp) + a1(pop ebp) + a1(pop esi) + a1(pop edi) + a1(pop ebx) + aret(16) +asm_naked_fn_end(scrypt_ChunkMix_sse2) + +#endif + + + +/* x64 */ +#if defined(X86_64ASM_SSE2) && (!defined(SCRYPT_CHOOSE_COMPILETIME) || !defined(SCRYPT_SALSA_INCLUDED)) && !defined(CPU_X86_FORCE_INTRINSICS) + +#define SCRYPT_SALSA_SSE2 + +asm_naked_fn_proto(void, scrypt_ChunkMix_sse2)(uint32_t *Bout/*[chunkBytes]*/, uint32_t *Bin/*[chunkBytes]*/, uint32_t *Bxor/*[chunkBytes]*/, uint32_t r) +asm_naked_fn(scrypt_ChunkMix_sse2) + a2(lea rcx,[ecx*2]) /* zero extend uint32_t by using ecx, win64 can leave garbage in the top half */ + a2(shl rcx,6) + a2(lea r9,[rcx-64]) + a2(lea rax,[rsi+r9]) + a2(lea r9,[rdx+r9]) + a2(and rdx, rdx) + a2(movdqa xmm0,[rax+0]) + a2(movdqa xmm1,[rax+16]) + a2(movdqa xmm2,[rax+32]) + a2(movdqa xmm3,[rax+48]) + aj(jz scrypt_ChunkMix_sse2_no_xor1) + a2(pxor xmm0,[r9+0]) + a2(pxor xmm1,[r9+16]) + a2(pxor xmm2,[r9+32]) + a2(pxor xmm3,[r9+48]) + a1(scrypt_ChunkMix_sse2_no_xor1:) + a2(xor r9,r9) + a2(xor r8,r8) + a1(scrypt_ChunkMix_sse2_loop:) + a2(and rdx, rdx) + a2(pxor xmm0,[rsi+r9+0]) + a2(pxor xmm1,[rsi+r9+16]) + a2(pxor xmm2,[rsi+r9+32]) + a2(pxor xmm3,[rsi+r9+48]) + aj(jz scrypt_ChunkMix_sse2_no_xor2) + a2(pxor xmm0,[rdx+r9+0]) + a2(pxor xmm1,[rdx+r9+16]) + a2(pxor xmm2,[rdx+r9+32]) + a2(pxor xmm3,[rdx+r9+48]) + a1(scrypt_ChunkMix_sse2_no_xor2:) + a2(movdqa xmm8,xmm0) + a2(movdqa xmm9,xmm1) + a2(movdqa xmm10,xmm2) + a2(movdqa xmm11,xmm3) + a2(mov rax,8) + a1(scrypt_salsa_sse2_loop: ) + a2(movdqa xmm4, xmm1) + a2(paddd xmm4, xmm0) + a2(movdqa xmm5, xmm4) + a2(pslld xmm4, 7) + a2(psrld xmm5, 25) + a2(pxor xmm3, xmm4) + a2(movdqa xmm4, xmm0) + a2(pxor xmm3, xmm5) + a2(paddd xmm4, xmm3) + a2(movdqa xmm5, xmm4) + a2(pslld xmm4, 9) + a2(psrld xmm5, 23) + a2(pxor xmm2, xmm4) + a2(movdqa xmm4, xmm3) + a2(pxor xmm2, xmm5) + a3(pshufd xmm3, xmm3, 0x93) + a2(paddd xmm4, xmm2) + a2(movdqa xmm5, xmm4) + a2(pslld xmm4, 13) + a2(psrld xmm5, 19) + a2(pxor xmm1, xmm4) + a2(movdqa xmm4, xmm2) + a2(pxor xmm1, xmm5) + a3(pshufd xmm2, xmm2, 0x4e) + a2(paddd xmm4, xmm1) + a2(movdqa xmm5, xmm4) + a2(pslld xmm4, 18) + a2(psrld xmm5, 14) + a2(pxor xmm0, xmm4) + a2(movdqa xmm4, xmm3) + a2(pxor xmm0, xmm5) + a3(pshufd xmm1, xmm1, 0x39) + a2(paddd xmm4, xmm0) + a2(movdqa xmm5, xmm4) + a2(pslld xmm4, 7) + a2(psrld xmm5, 25) + a2(pxor xmm1, xmm4) + a2(movdqa xmm4, xmm0) + a2(pxor xmm1, xmm5) + a2(paddd xmm4, xmm1) + a2(movdqa xmm5, xmm4) + a2(pslld xmm4, 9) + a2(psrld xmm5, 23) + a2(pxor xmm2, xmm4) + a2(movdqa xmm4, xmm1) + a2(pxor xmm2, xmm5) + a3(pshufd xmm1, xmm1, 0x93) + a2(paddd xmm4, xmm2) + a2(movdqa xmm5, xmm4) + a2(pslld xmm4, 13) + a2(psrld xmm5, 19) + a2(pxor xmm3, xmm4) + a2(movdqa xmm4, xmm2) + a2(pxor xmm3, xmm5) + a3(pshufd xmm2, xmm2, 0x4e) + a2(paddd xmm4, xmm3) + a2(sub rax, 2) + a2(movdqa xmm5, xmm4) + a2(pslld xmm4, 18) + a2(psrld xmm5, 14) + a2(pxor xmm0, xmm4) + a3(pshufd xmm3, xmm3, 0x39) + a2(pxor xmm0, xmm5) + aj(ja scrypt_salsa_sse2_loop) + a2(paddd xmm0,xmm8) + a2(paddd xmm1,xmm9) + a2(paddd xmm2,xmm10) + a2(paddd xmm3,xmm11) + a2(lea rax,[r8+r9]) + a2(xor r8,rcx) + a2(and rax,~0x7f) + a2(add r9,64) + a2(shr rax,1) + a2(add rax, rdi) + a2(cmp r9,rcx) + a2(movdqa [rax+0],xmm0) + a2(movdqa [rax+16],xmm1) + a2(movdqa [rax+32],xmm2) + a2(movdqa [rax+48],xmm3) + aj(jne scrypt_ChunkMix_sse2_loop) + a1(ret) +asm_naked_fn_end(scrypt_ChunkMix_sse2) + +#endif + + +/* intrinsic */ +#if defined(X86_INTRINSIC_SSE2) && (!defined(SCRYPT_CHOOSE_COMPILETIME) || !defined(SCRYPT_SALSA_INCLUDED)) + +#define SCRYPT_SALSA_SSE2 + +static void NOINLINE asm_calling_convention +scrypt_ChunkMix_sse2(uint32_t *Bout/*[chunkBytes]*/, uint32_t *Bin/*[chunkBytes]*/, uint32_t *Bxor/*[chunkBytes]*/, uint32_t r) { + uint32_t i, blocksPerChunk = r * 2, half = 0; + xmmi *xmmp,x0,x1,x2,x3,x4,x5,t0,t1,t2,t3; + size_t rounds; + + /* 1: X = B_{2r - 1} */ + xmmp = (xmmi *)scrypt_block(Bin, blocksPerChunk - 1); + x0 = xmmp[0]; + x1 = xmmp[1]; + x2 = xmmp[2]; + x3 = xmmp[3]; + + if (Bxor) { + xmmp = (xmmi *)scrypt_block(Bxor, blocksPerChunk - 1); + x0 = _mm_xor_si128(x0, xmmp[0]); + x1 = _mm_xor_si128(x1, xmmp[1]); + x2 = _mm_xor_si128(x2, xmmp[2]); + x3 = _mm_xor_si128(x3, xmmp[3]); + } + + /* 2: for i = 0 to 2r - 1 do */ + for (i = 0; i < blocksPerChunk; i++, half ^= r) { + /* 3: X = H(X ^ B_i) */ + xmmp = (xmmi *)scrypt_block(Bin, i); + x0 = _mm_xor_si128(x0, xmmp[0]); + x1 = _mm_xor_si128(x1, xmmp[1]); + x2 = _mm_xor_si128(x2, xmmp[2]); + x3 = _mm_xor_si128(x3, xmmp[3]); + + if (Bxor) { + xmmp = (xmmi *)scrypt_block(Bxor, i); + x0 = _mm_xor_si128(x0, xmmp[0]); + x1 = _mm_xor_si128(x1, xmmp[1]); + x2 = _mm_xor_si128(x2, xmmp[2]); + x3 = _mm_xor_si128(x3, xmmp[3]); + } + + t0 = x0; + t1 = x1; + t2 = x2; + t3 = x3; + + for (rounds = 8; rounds; rounds -= 2) { + x4 = x1; + x4 = _mm_add_epi32(x4, x0); + x5 = x4; + x4 = _mm_slli_epi32(x4, 7); + x5 = _mm_srli_epi32(x5, 25); + x3 = _mm_xor_si128(x3, x4); + x4 = x0; + x3 = _mm_xor_si128(x3, x5); + x4 = _mm_add_epi32(x4, x3); + x5 = x4; + x4 = _mm_slli_epi32(x4, 9); + x5 = _mm_srli_epi32(x5, 23); + x2 = _mm_xor_si128(x2, x4); + x4 = x3; + x2 = _mm_xor_si128(x2, x5); + x3 = _mm_shuffle_epi32(x3, 0x93); + x4 = _mm_add_epi32(x4, x2); + x5 = x4; + x4 = _mm_slli_epi32(x4, 13); + x5 = _mm_srli_epi32(x5, 19); + x1 = _mm_xor_si128(x1, x4); + x4 = x2; + x1 = _mm_xor_si128(x1, x5); + x2 = _mm_shuffle_epi32(x2, 0x4e); + x4 = _mm_add_epi32(x4, x1); + x5 = x4; + x4 = _mm_slli_epi32(x4, 18); + x5 = _mm_srli_epi32(x5, 14); + x0 = _mm_xor_si128(x0, x4); + x4 = x3; + x0 = _mm_xor_si128(x0, x5); + x1 = _mm_shuffle_epi32(x1, 0x39); + x4 = _mm_add_epi32(x4, x0); + x5 = x4; + x4 = _mm_slli_epi32(x4, 7); + x5 = _mm_srli_epi32(x5, 25); + x1 = _mm_xor_si128(x1, x4); + x4 = x0; + x1 = _mm_xor_si128(x1, x5); + x4 = _mm_add_epi32(x4, x1); + x5 = x4; + x4 = _mm_slli_epi32(x4, 9); + x5 = _mm_srli_epi32(x5, 23); + x2 = _mm_xor_si128(x2, x4); + x4 = x1; + x2 = _mm_xor_si128(x2, x5); + x1 = _mm_shuffle_epi32(x1, 0x93); + x4 = _mm_add_epi32(x4, x2); + x5 = x4; + x4 = _mm_slli_epi32(x4, 13); + x5 = _mm_srli_epi32(x5, 19); + x3 = _mm_xor_si128(x3, x4); + x4 = x2; + x3 = _mm_xor_si128(x3, x5); + x2 = _mm_shuffle_epi32(x2, 0x4e); + x4 = _mm_add_epi32(x4, x3); + x5 = x4; + x4 = _mm_slli_epi32(x4, 18); + x5 = _mm_srli_epi32(x5, 14); + x0 = _mm_xor_si128(x0, x4); + x3 = _mm_shuffle_epi32(x3, 0x39); + x0 = _mm_xor_si128(x0, x5); + } + + x0 = _mm_add_epi32(x0, t0); + x1 = _mm_add_epi32(x1, t1); + x2 = _mm_add_epi32(x2, t2); + x3 = _mm_add_epi32(x3, t3); + + /* 4: Y_i = X */ + /* 6: B'[0..r-1] = Y_even */ + /* 6: B'[r..2r-1] = Y_odd */ + xmmp = (xmmi *)scrypt_block(Bout, (i / 2) + half); + xmmp[0] = x0; + xmmp[1] = x1; + xmmp[2] = x2; + xmmp[3] = x3; + } +} + +#endif + +#if defined(SCRYPT_SALSA_SSE2) + #undef SCRYPT_MIX + #define SCRYPT_MIX "Salsa/8-SSE2" + #undef SCRYPT_SALSA_INCLUDED + #define SCRYPT_SALSA_INCLUDED +#endif + +/* used by avx,etc as well */ +#if defined(SCRYPT_SALSA_INCLUDED) + /* + Default layout: + 0 1 2 3 + 4 5 6 7 + 8 9 10 11 + 12 13 14 15 + + SSE2 layout: + 0 5 10 15 + 12 1 6 11 + 8 13 2 7 + 4 9 14 3 + */ + + static void asm_calling_convention + salsa_core_tangle_sse2(uint32_t *blocks, size_t count) { + uint32_t t; + while (count--) { + t = blocks[1]; blocks[1] = blocks[5]; blocks[5] = t; + t = blocks[2]; blocks[2] = blocks[10]; blocks[10] = t; + t = blocks[3]; blocks[3] = blocks[15]; blocks[15] = t; + t = blocks[4]; blocks[4] = blocks[12]; blocks[12] = t; + t = blocks[7]; blocks[7] = blocks[11]; blocks[11] = t; + t = blocks[9]; blocks[9] = blocks[13]; blocks[13] = t; + blocks += 16; + } + } +#endif + diff --git a/deps/scrypt-jane-master/code/scrypt-jane-mix_salsa-xop.h b/deps/scrypt-jane-master/code/scrypt-jane-mix_salsa-xop.h new file mode 100644 index 000000000..1d014d2ac --- /dev/null +++ b/deps/scrypt-jane-master/code/scrypt-jane-mix_salsa-xop.h @@ -0,0 +1,317 @@ +/* x86 */ +#if defined(X86ASM_XOP) && (!defined(SCRYPT_CHOOSE_COMPILETIME) || !defined(SCRYPT_SALSA_INCLUDED)) && !defined(CPU_X86_FORCE_INTRINSICS) + +#define SCRYPT_SALSA_XOP + +asm_naked_fn_proto(void, scrypt_ChunkMix_xop)(uint32_t *Bout/*[chunkBytes]*/, uint32_t *Bin/*[chunkBytes]*/, uint32_t *Bxor/*[chunkBytes]*/, uint32_t r) +asm_naked_fn(scrypt_ChunkMix_xop) + a1(push ebx) + a1(push edi) + a1(push esi) + a1(push ebp) + a2(mov ebp,esp) + a2(mov edi,[ebp+20]) + a2(mov esi,[ebp+24]) + a2(mov eax,[ebp+28]) + a2(mov ebx,[ebp+32]) + a2(sub esp,32) + a2(and esp,~63) + a2(lea edx,[ebx*2]) + a2(shl edx,6) + a2(lea ecx,[edx-64]) + a2(and eax, eax) + a2(movdqa xmm0,[ecx+esi+0]) + a2(movdqa xmm1,[ecx+esi+16]) + a2(movdqa xmm2,[ecx+esi+32]) + a2(movdqa xmm3,[ecx+esi+48]) + aj(jz scrypt_ChunkMix_xop_no_xor1) + a3(vpxor xmm0,xmm0,[ecx+eax+0]) + a3(vpxor xmm1,xmm1,[ecx+eax+16]) + a3(vpxor xmm2,xmm2,[ecx+eax+32]) + a3(vpxor xmm3,xmm3,[ecx+eax+48]) + a1(scrypt_ChunkMix_xop_no_xor1:) + a2(xor ecx,ecx) + a2(xor ebx,ebx) + a1(scrypt_ChunkMix_xop_loop:) + a2(and eax, eax) + a3(vpxor xmm0,xmm0,[esi+ecx+0]) + a3(vpxor xmm1,xmm1,[esi+ecx+16]) + a3(vpxor xmm2,xmm2,[esi+ecx+32]) + a3(vpxor xmm3,xmm3,[esi+ecx+48]) + aj(jz scrypt_ChunkMix_xop_no_xor2) + a3(vpxor xmm0,xmm0,[eax+ecx+0]) + a3(vpxor xmm1,xmm1,[eax+ecx+16]) + a3(vpxor xmm2,xmm2,[eax+ecx+32]) + a3(vpxor xmm3,xmm3,[eax+ecx+48]) + a1(scrypt_ChunkMix_xop_no_xor2:) + a2(vmovdqa [esp+0],xmm0) + a2(vmovdqa [esp+16],xmm1) + a2(vmovdqa xmm6,xmm2) + a2(vmovdqa xmm7,xmm3) + a2(mov eax,8) + a1(scrypt_salsa_xop_loop: ) + a3(vpaddd xmm4, xmm1, xmm0) + a3(vprotd xmm4, xmm4, 7) + a3(vpxor xmm3, xmm3, xmm4) + a3(vpaddd xmm4, xmm0, xmm3) + a3(vprotd xmm4, xmm4, 9) + a3(vpxor xmm2, xmm2, xmm4) + a3(vpaddd xmm4, xmm3, xmm2) + a3(vprotd xmm4, xmm4, 13) + a3(vpxor xmm1, xmm1, xmm4) + a3(vpaddd xmm4, xmm2, xmm1) + a3(pshufd xmm3, xmm3, 0x93) + a3(vprotd xmm4, xmm4, 18) + a3(pshufd xmm2, xmm2, 0x4e) + a3(vpxor xmm0, xmm0, xmm4) + a3(pshufd xmm1, xmm1, 0x39) + a3(vpaddd xmm4, xmm3, xmm0) + a3(vprotd xmm4, xmm4, 7) + a3(vpxor xmm1, xmm1, xmm4) + a3(vpaddd xmm4, xmm0, xmm1) + a3(vprotd xmm4, xmm4, 9) + a3(vpxor xmm2, xmm2, xmm4) + a3(vpaddd xmm4, xmm1, xmm2) + a3(vprotd xmm4, xmm4, 13) + a3(vpxor xmm3, xmm3, xmm4) + a3(pshufd xmm1, xmm1, 0x93) + a3(vpaddd xmm4, xmm2, xmm3) + a3(pshufd xmm2, xmm2, 0x4e) + a3(vprotd xmm4, xmm4, 18) + a3(pshufd xmm3, xmm3, 0x39) + a3(vpxor xmm0, xmm0, xmm4) + a2(sub eax, 2) + aj(ja scrypt_salsa_xop_loop) + a3(vpaddd xmm0,xmm0,[esp+0]) + a3(vpaddd xmm1,xmm1,[esp+16]) + a3(vpaddd xmm2,xmm2,xmm6) + a3(vpaddd xmm3,xmm3,xmm7) + a2(lea eax,[ebx+ecx]) + a2(xor ebx,edx) + a2(and eax,~0x7f) + a2(add ecx,64) + a2(shr eax,1) + a2(add eax, edi) + a2(cmp ecx,edx) + a2(vmovdqa [eax+0],xmm0) + a2(vmovdqa [eax+16],xmm1) + a2(vmovdqa [eax+32],xmm2) + a2(vmovdqa [eax+48],xmm3) + a2(mov eax,[ebp+28]) + aj(jne scrypt_ChunkMix_xop_loop) + a2(mov esp,ebp) + a1(pop ebp) + a1(pop esi) + a1(pop edi) + a1(pop ebx) + aret(16) +asm_naked_fn_end(scrypt_ChunkMix_xop) + +#endif + + + +/* x64 */ +#if defined(X86_64ASM_XOP) && (!defined(SCRYPT_CHOOSE_COMPILETIME) || !defined(SCRYPT_SALSA_INCLUDED)) && !defined(CPU_X86_FORCE_INTRINSICS) + +#define SCRYPT_SALSA_XOP + +asm_naked_fn_proto(void, scrypt_ChunkMix_xop)(uint32_t *Bout/*[chunkBytes]*/, uint32_t *Bin/*[chunkBytes]*/, uint32_t *Bxor/*[chunkBytes]*/, uint32_t r) +asm_naked_fn(scrypt_ChunkMix_xop) + a2(lea rcx,[ecx*2]) /* zero extend uint32_t by using ecx, win64 can leave garbage in the top half */ + a2(shl rcx,6) + a2(lea r9,[rcx-64]) + a2(lea rax,[rsi+r9]) + a2(lea r9,[rdx+r9]) + a2(and rdx, rdx) + a2(vmovdqa xmm0,[rax+0]) + a2(vmovdqa xmm1,[rax+16]) + a2(vmovdqa xmm2,[rax+32]) + a2(vmovdqa xmm3,[rax+48]) + aj(jz scrypt_ChunkMix_xop_no_xor1) + a3(vpxor xmm0,xmm0,[r9+0]) + a3(vpxor xmm1,xmm1,[r9+16]) + a3(vpxor xmm2,xmm2,[r9+32]) + a3(vpxor xmm3,xmm3,[r9+48]) + a1(scrypt_ChunkMix_xop_no_xor1:) + a2(xor r9,r9) + a2(xor r8,r8) + a1(scrypt_ChunkMix_xop_loop:) + a2(and rdx, rdx) + a3(vpxor xmm0,xmm0,[rsi+r9+0]) + a3(vpxor xmm1,xmm1,[rsi+r9+16]) + a3(vpxor xmm2,xmm2,[rsi+r9+32]) + a3(vpxor xmm3,xmm3,[rsi+r9+48]) + aj(jz scrypt_ChunkMix_xop_no_xor2) + a3(vpxor xmm0,xmm0,[rdx+r9+0]) + a3(vpxor xmm1,xmm1,[rdx+r9+16]) + a3(vpxor xmm2,xmm2,[rdx+r9+32]) + a3(vpxor xmm3,xmm3,[rdx+r9+48]) + a1(scrypt_ChunkMix_xop_no_xor2:) + a2(vmovdqa xmm8,xmm0) + a2(vmovdqa xmm9,xmm1) + a2(vmovdqa xmm10,xmm2) + a2(vmovdqa xmm11,xmm3) + a2(mov rax,8) + a1(scrypt_salsa_xop_loop: ) + a3(vpaddd xmm4, xmm1, xmm0) + a3(vprotd xmm4, xmm4, 7) + a3(vpxor xmm3, xmm3, xmm4) + a3(vpaddd xmm4, xmm0, xmm3) + a3(vprotd xmm4, xmm4, 9) + a3(vpxor xmm2, xmm2, xmm4) + a3(vpaddd xmm4, xmm3, xmm2) + a3(vprotd xmm4, xmm4, 13) + a3(vpxor xmm1, xmm1, xmm4) + a3(vpaddd xmm4, xmm2, xmm1) + a3(pshufd xmm3, xmm3, 0x93) + a3(vprotd xmm4, xmm4, 18) + a3(pshufd xmm2, xmm2, 0x4e) + a3(vpxor xmm0, xmm0, xmm4) + a3(pshufd xmm1, xmm1, 0x39) + a3(vpaddd xmm4, xmm3, xmm0) + a3(vprotd xmm4, xmm4, 7) + a3(vpxor xmm1, xmm1, xmm4) + a3(vpaddd xmm4, xmm0, xmm1) + a3(vprotd xmm4, xmm4, 9) + a3(vpxor xmm2, xmm2, xmm4) + a3(vpaddd xmm4, xmm1, xmm2) + a3(vprotd xmm4, xmm4, 13) + a3(vpxor xmm3, xmm3, xmm4) + a3(pshufd xmm1, xmm1, 0x93) + a3(vpaddd xmm4, xmm2, xmm3) + a3(pshufd xmm2, xmm2, 0x4e) + a3(vprotd xmm4, xmm4, 18) + a3(pshufd xmm3, xmm3, 0x39) + a3(vpxor xmm0, xmm0, xmm4) + a2(sub rax, 2) + aj(ja scrypt_salsa_xop_loop) + a3(vpaddd xmm0,xmm0,xmm8) + a3(vpaddd xmm1,xmm1,xmm9) + a3(vpaddd xmm2,xmm2,xmm10) + a3(vpaddd xmm3,xmm3,xmm11) + a2(lea rax,[r8+r9]) + a2(xor r8,rcx) + a2(and rax,~0x7f) + a2(add r9,64) + a2(shr rax,1) + a2(add rax, rdi) + a2(cmp r9,rcx) + a2(vmovdqa [rax+0],xmm0) + a2(vmovdqa [rax+16],xmm1) + a2(vmovdqa [rax+32],xmm2) + a2(vmovdqa [rax+48],xmm3) + aj(jne scrypt_ChunkMix_xop_loop) + a1(ret) +asm_naked_fn_end(scrypt_ChunkMix_xop) + +#endif + + +/* intrinsic */ +#if defined(X86_INTRINSIC_XOP) && (!defined(SCRYPT_CHOOSE_COMPILETIME) || !defined(SCRYPT_SALSA_INCLUDED)) + +#define SCRYPT_SALSA_XOP + +static void asm_calling_convention NOINLINE +scrypt_ChunkMix_xop(uint32_t *Bout/*[chunkBytes]*/, uint32_t *Bin/*[chunkBytes]*/, uint32_t *Bxor/*[chunkBytes]*/, uint32_t r) { + uint32_t i, blocksPerChunk = r * 2, half = 0; + xmmi *xmmp,x0,x1,x2,x3,x4,x5,t0,t1,t2,t3; + size_t rounds; + + /* 1: X = B_{2r - 1} */ + xmmp = (xmmi *)scrypt_block(Bin, blocksPerChunk - 1); + x0 = xmmp[0]; + x1 = xmmp[1]; + x2 = xmmp[2]; + x3 = xmmp[3]; + + if (Bxor) { + xmmp = (xmmi *)scrypt_block(Bxor, blocksPerChunk - 1); + x0 = _mm_xor_si128(x0, xmmp[0]); + x1 = _mm_xor_si128(x1, xmmp[1]); + x2 = _mm_xor_si128(x2, xmmp[2]); + x3 = _mm_xor_si128(x3, xmmp[3]); + } + + /* 2: for i = 0 to 2r - 1 do */ + for (i = 0; i < blocksPerChunk; i++, half ^= r) { + /* 3: X = H(X ^ B_i) */ + xmmp = (xmmi *)scrypt_block(Bin, i); + x0 = _mm_xor_si128(x0, xmmp[0]); + x1 = _mm_xor_si128(x1, xmmp[1]); + x2 = _mm_xor_si128(x2, xmmp[2]); + x3 = _mm_xor_si128(x3, xmmp[3]); + + if (Bxor) { + xmmp = (xmmi *)scrypt_block(Bxor, i); + x0 = _mm_xor_si128(x0, xmmp[0]); + x1 = _mm_xor_si128(x1, xmmp[1]); + x2 = _mm_xor_si128(x2, xmmp[2]); + x3 = _mm_xor_si128(x3, xmmp[3]); + } + + t0 = x0; + t1 = x1; + t2 = x2; + t3 = x3; + + for (rounds = 8; rounds; rounds -= 2) { + x4 = _mm_add_epi32(x1, x0); + x4 = _mm_roti_epi32(x4, 7); + x3 = _mm_xor_si128(x3, x4); + x4 = _mm_add_epi32(x0, x3); + x4 = _mm_roti_epi32(x4, 9); + x2 = _mm_xor_si128(x2, x4); + x4 = _mm_add_epi32(x3, x2); + x4 = _mm_roti_epi32(x4, 13); + x1 = _mm_xor_si128(x1, x4); + x4 = _mm_add_epi32(x2, x1); + x4 = _mm_roti_epi32(x4, 18); + x0 = _mm_xor_si128(x0, x4); + x3 = _mm_shuffle_epi32(x3, 0x93); + x2 = _mm_shuffle_epi32(x2, 0x4e); + x1 = _mm_shuffle_epi32(x1, 0x39); + x4 = _mm_add_epi32(x3, x0); + x4 = _mm_roti_epi32(x4, 7); + x1 = _mm_xor_si128(x1, x4); + x4 = _mm_add_epi32(x0, x1); + x4 = _mm_roti_epi32(x4, 9); + x2 = _mm_xor_si128(x2, x4); + x4 = _mm_add_epi32(x1, x2); + x4 = _mm_roti_epi32(x4, 13); + x3 = _mm_xor_si128(x3, x4); + x4 = _mm_add_epi32(x2, x3); + x4 = _mm_roti_epi32(x4, 18); + x0 = _mm_xor_si128(x0, x4); + x1 = _mm_shuffle_epi32(x1, 0x93); + x2 = _mm_shuffle_epi32(x2, 0x4e); + x3 = _mm_shuffle_epi32(x3, 0x39); + } + + x0 = _mm_add_epi32(x0, t0); + x1 = _mm_add_epi32(x1, t1); + x2 = _mm_add_epi32(x2, t2); + x3 = _mm_add_epi32(x3, t3); + + /* 4: Y_i = X */ + /* 6: B'[0..r-1] = Y_even */ + /* 6: B'[r..2r-1] = Y_odd */ + xmmp = (xmmi *)scrypt_block(Bout, (i / 2) + half); + xmmp[0] = x0; + xmmp[1] = x1; + xmmp[2] = x2; + xmmp[3] = x3; + } +} + +#endif + +#if defined(SCRYPT_SALSA_XOP) + /* uses salsa_core_tangle_sse2 */ + + #undef SCRYPT_MIX + #define SCRYPT_MIX "Salsa/8-XOP" + #undef SCRYPT_SALSA_INCLUDED + #define SCRYPT_SALSA_INCLUDED +#endif diff --git a/deps/scrypt-jane-master/code/scrypt-jane-mix_salsa.h b/deps/scrypt-jane-master/code/scrypt-jane-mix_salsa.h new file mode 100644 index 000000000..33f334094 --- /dev/null +++ b/deps/scrypt-jane-master/code/scrypt-jane-mix_salsa.h @@ -0,0 +1,70 @@ +#if !defined(SCRYPT_CHOOSE_COMPILETIME) || !defined(SCRYPT_SALSA_INCLUDED) + +#undef SCRYPT_MIX +#define SCRYPT_MIX "Salsa20/8 Ref" + +#undef SCRYPT_SALSA_INCLUDED +#define SCRYPT_SALSA_INCLUDED +#define SCRYPT_SALSA_BASIC + +static void +salsa_core_basic(uint32_t state[16]) { + size_t rounds = 8; + uint32_t x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15,t; + + x0 = state[0]; + x1 = state[1]; + x2 = state[2]; + x3 = state[3]; + x4 = state[4]; + x5 = state[5]; + x6 = state[6]; + x7 = state[7]; + x8 = state[8]; + x9 = state[9]; + x10 = state[10]; + x11 = state[11]; + x12 = state[12]; + x13 = state[13]; + x14 = state[14]; + x15 = state[15]; + + #define quarter(a,b,c,d) \ + t = a+d; t = ROTL32(t, 7); b ^= t; \ + t = b+a; t = ROTL32(t, 9); c ^= t; \ + t = c+b; t = ROTL32(t, 13); d ^= t; \ + t = d+c; t = ROTL32(t, 18); a ^= t; \ + + for (; rounds; rounds -= 2) { + quarter( x0, x4, x8,x12) + quarter( x5, x9,x13, x1) + quarter(x10,x14, x2, x6) + quarter(x15, x3, x7,x11) + quarter( x0, x1, x2, x3) + quarter( x5, x6, x7, x4) + quarter(x10,x11, x8, x9) + quarter(x15,x12,x13,x14) + } + + state[0] += x0; + state[1] += x1; + state[2] += x2; + state[3] += x3; + state[4] += x4; + state[5] += x5; + state[6] += x6; + state[7] += x7; + state[8] += x8; + state[9] += x9; + state[10] += x10; + state[11] += x11; + state[12] += x12; + state[13] += x13; + state[14] += x14; + state[15] += x15; + + #undef quarter +} + +#endif + diff --git a/deps/scrypt-jane-master/code/scrypt-jane-mix_salsa64-avx.h b/deps/scrypt-jane-master/code/scrypt-jane-mix_salsa64-avx.h new file mode 100644 index 000000000..c6e41dc37 --- /dev/null +++ b/deps/scrypt-jane-master/code/scrypt-jane-mix_salsa64-avx.h @@ -0,0 +1,367 @@ +/* x64 */ +#if defined(X86_64ASM_AVX) && (!defined(SCRYPT_CHOOSE_COMPILETIME) || !defined(SCRYPT_SALSA64_INCLUDED)) && !defined(CPU_X86_FORCE_INTRINSICS) + +#define SCRYPT_SALSA64_AVX + +asm_naked_fn_proto(void, scrypt_ChunkMix_avx)(uint64_t *Bout/*[chunkBytes]*/, uint64_t *Bin/*[chunkBytes]*/, uint64_t *Bxor/*[chunkBytes]*/, uint32_t r) +asm_naked_fn(scrypt_ChunkMix_avx) + a1(push rbp) + a2(mov rbp, rsp) + a2(and rsp, ~63) + a2(sub rsp, 128) + a2(lea rcx,[ecx*2]) /* zero extend uint32_t by using ecx, win64 can leave garbage in the top half */ + a2(shl rcx,7) + a2(lea r9,[rcx-128]) + a2(lea rax,[rsi+r9]) + a2(lea r9,[rdx+r9]) + a2(and rdx, rdx) + a2(vmovdqa xmm0,[rax+0]) + a2(vmovdqa xmm1,[rax+16]) + a2(vmovdqa xmm2,[rax+32]) + a2(vmovdqa xmm3,[rax+48]) + a2(vmovdqa xmm4,[rax+64]) + a2(vmovdqa xmm5,[rax+80]) + a2(vmovdqa xmm6,[rax+96]) + a2(vmovdqa xmm7,[rax+112]) + aj(jz scrypt_ChunkMix_avx_no_xor1) + a3(vpxor xmm0,xmm0,[r9+0]) + a3(vpxor xmm1,xmm1,[r9+16]) + a3(vpxor xmm2,xmm2,[r9+32]) + a3(vpxor xmm3,xmm3,[r9+48]) + a3(vpxor xmm4,xmm4,[r9+64]) + a3(vpxor xmm5,xmm5,[r9+80]) + a3(vpxor xmm6,xmm6,[r9+96]) + a3(vpxor xmm7,xmm7,[r9+112]) + a1(scrypt_ChunkMix_avx_no_xor1:) + a2(xor r9,r9) + a2(xor r8,r8) + a1(scrypt_ChunkMix_avx_loop:) + a2(and rdx, rdx) + a3(vpxor xmm0,xmm0,[rsi+r9+0]) + a3(vpxor xmm1,xmm1,[rsi+r9+16]) + a3(vpxor xmm2,xmm2,[rsi+r9+32]) + a3(vpxor xmm3,xmm3,[rsi+r9+48]) + a3(vpxor xmm4,xmm4,[rsi+r9+64]) + a3(vpxor xmm5,xmm5,[rsi+r9+80]) + a3(vpxor xmm6,xmm6,[rsi+r9+96]) + a3(vpxor xmm7,xmm7,[rsi+r9+112]) + aj(jz scrypt_ChunkMix_avx_no_xor2) + a3(vpxor xmm0,xmm0,[rdx+r9+0]) + a3(vpxor xmm1,xmm1,[rdx+r9+16]) + a3(vpxor xmm2,xmm2,[rdx+r9+32]) + a3(vpxor xmm3,xmm3,[rdx+r9+48]) + a3(vpxor xmm4,xmm4,[rdx+r9+64]) + a3(vpxor xmm5,xmm5,[rdx+r9+80]) + a3(vpxor xmm6,xmm6,[rdx+r9+96]) + a3(vpxor xmm7,xmm7,[rdx+r9+112]) + a1(scrypt_ChunkMix_avx_no_xor2:) + a2(vmovdqa [rsp+0],xmm0) + a2(vmovdqa [rsp+16],xmm1) + a2(vmovdqa [rsp+32],xmm2) + a2(vmovdqa [rsp+48],xmm3) + a2(vmovdqa [rsp+64],xmm4) + a2(vmovdqa [rsp+80],xmm5) + a2(vmovdqa [rsp+96],xmm6) + a2(vmovdqa [rsp+112],xmm7) + a2(mov rax,8) + a1(scrypt_salsa64_avx_loop: ) + a3(vpaddq xmm8, xmm0, xmm2) + a3(vpaddq xmm9, xmm1, xmm3) + a3(vpshufd xmm8, xmm8, 0xb1) + a3(vpshufd xmm9, xmm9, 0xb1) + a3(vpxor xmm6, xmm6, xmm8) + a3(vpxor xmm7, xmm7, xmm9) + a3(vpaddq xmm10, xmm0, xmm6) + a3(vpaddq xmm11, xmm1, xmm7) + a3(vpsrlq xmm8, xmm10, 51) + a3(vpsrlq xmm9, xmm11, 51) + a3(vpsllq xmm10, xmm10, 13) + a3(vpsllq xmm11, xmm11, 13) + a3(vpxor xmm4, xmm4, xmm8) + a3(vpxor xmm5, xmm5, xmm9) + a3(vpxor xmm4, xmm4, xmm10) + a3(vpxor xmm5, xmm5, xmm11) + a3(vpaddq xmm8, xmm6, xmm4) + a3(vpaddq xmm9, xmm7, xmm5) + a3(vpsrlq xmm10, xmm8, 25) + a3(vpsrlq xmm11, xmm9, 25) + a3(vpsllq xmm8, xmm8, 39) + a3(vpsllq xmm9, xmm9, 39) + a3(vpxor xmm2, xmm2, xmm10) + a3(vpxor xmm3, xmm3, xmm11) + a3(vpxor xmm2, xmm2, xmm8) + a3(vpxor xmm3, xmm3, xmm9) + a3(vpaddq xmm10, xmm4, xmm2) + a3(vpaddq xmm11, xmm5, xmm3) + a3(vpshufd xmm10, xmm10, 0xb1) + a3(vpshufd xmm11, xmm11, 0xb1) + a3(vpxor xmm0, xmm0, xmm10) + a3(vpxor xmm1, xmm1, xmm11) + a2(vmovdqa xmm8, xmm2) + a2(vmovdqa xmm9, xmm3) + a4(vpalignr xmm2, xmm6, xmm7, 8) + a4(vpalignr xmm3, xmm7, xmm6, 8) + a4(vpalignr xmm6, xmm9, xmm8, 8) + a4(vpalignr xmm7, xmm8, xmm9, 8) + a3(vpaddq xmm10, xmm0, xmm2) + a3(vpaddq xmm11, xmm1, xmm3) + a3(vpshufd xmm10, xmm10, 0xb1) + a3(vpshufd xmm11, xmm11, 0xb1) + a3(vpxor xmm6, xmm6, xmm10) + a3(vpxor xmm7, xmm7, xmm11) + a3(vpaddq xmm8, xmm0, xmm6) + a3(vpaddq xmm9, xmm1, xmm7) + a3(vpsrlq xmm10, xmm8, 51) + a3(vpsrlq xmm11, xmm9, 51) + a3(vpsllq xmm8, xmm8, 13) + a3(vpsllq xmm9, xmm9, 13) + a3(vpxor xmm5, xmm5, xmm10) + a3(vpxor xmm4, xmm4, xmm11) + a3(vpxor xmm5, xmm5, xmm8) + a3(vpxor xmm4, xmm4, xmm9) + a3(vpaddq xmm10, xmm6, xmm5) + a3(vpaddq xmm11, xmm7, xmm4) + a3(vpsrlq xmm8, xmm10, 25) + a3(vpsrlq xmm9, xmm11, 25) + a3(vpsllq xmm10, xmm10, 39) + a3(vpsllq xmm11, xmm11, 39) + a3(vpxor xmm2, xmm2, xmm8) + a3(vpxor xmm3, xmm3, xmm9) + a3(vpxor xmm2, xmm2, xmm10) + a3(vpxor xmm3, xmm3, xmm11) + a3(vpaddq xmm8, xmm5, xmm2) + a3(vpaddq xmm9, xmm4, xmm3) + a3(vpshufd xmm8, xmm8, 0xb1) + a3(vpshufd xmm9, xmm9, 0xb1) + a3(vpxor xmm0, xmm0, xmm8) + a3(vpxor xmm1, xmm1, xmm9) + a2(vmovdqa xmm10, xmm2) + a2(vmovdqa xmm11, xmm3) + a4(vpalignr xmm2, xmm6, xmm7, 8) + a4(vpalignr xmm3, xmm7, xmm6, 8) + a4(vpalignr xmm6, xmm11, xmm10, 8) + a4(vpalignr xmm7, xmm10, xmm11, 8) + a2(sub rax, 2) + aj(ja scrypt_salsa64_avx_loop) + a3(vpaddq xmm0,xmm0,[rsp+0]) + a3(vpaddq xmm1,xmm1,[rsp+16]) + a3(vpaddq xmm2,xmm2,[rsp+32]) + a3(vpaddq xmm3,xmm3,[rsp+48]) + a3(vpaddq xmm4,xmm4,[rsp+64]) + a3(vpaddq xmm5,xmm5,[rsp+80]) + a3(vpaddq xmm6,xmm6,[rsp+96]) + a3(vpaddq xmm7,xmm7,[rsp+112]) + a2(lea rax,[r8+r9]) + a2(xor r8,rcx) + a2(and rax,~0xff) + a2(add r9,128) + a2(shr rax,1) + a2(add rax, rdi) + a2(cmp r9,rcx) + a2(vmovdqa [rax+0],xmm0) + a2(vmovdqa [rax+16],xmm1) + a2(vmovdqa [rax+32],xmm2) + a2(vmovdqa [rax+48],xmm3) + a2(vmovdqa [rax+64],xmm4) + a2(vmovdqa [rax+80],xmm5) + a2(vmovdqa [rax+96],xmm6) + a2(vmovdqa [rax+112],xmm7) + aj(jne scrypt_ChunkMix_avx_loop) + a2(mov rsp, rbp) + a1(pop rbp) + a1(ret) +asm_naked_fn_end(scrypt_ChunkMix_avx) + +#endif + + +/* intrinsic */ +#if defined(X86_INTRINSIC_AVX) && (!defined(SCRYPT_CHOOSE_COMPILETIME) || !defined(SCRYPT_SALSA64_INCLUDED)) + +#define SCRYPT_SALSA64_AVX + +static void asm_calling_convention +scrypt_ChunkMix_avx(uint64_t *Bout/*[chunkBytes]*/, uint64_t *Bin/*[chunkBytes]*/, uint64_t *Bxor/*[chunkBytes]*/, uint32_t r) { + uint32_t i, blocksPerChunk = r * 2, half = 0; + xmmi *xmmp,x0,x1,x2,x3,x4,x5,x6,x7,t0,t1,t2,t3,t4,t5,t6,t7,z0,z1,z2,z3; + size_t rounds; + + /* 1: X = B_{2r - 1} */ + xmmp = (xmmi *)scrypt_block(Bin, blocksPerChunk - 1); + x0 = xmmp[0]; + x1 = xmmp[1]; + x2 = xmmp[2]; + x3 = xmmp[3]; + x4 = xmmp[4]; + x5 = xmmp[5]; + x6 = xmmp[6]; + x7 = xmmp[7]; + + if (Bxor) { + xmmp = (xmmi *)scrypt_block(Bxor, blocksPerChunk - 1); + x0 = _mm_xor_si128(x0, xmmp[0]); + x1 = _mm_xor_si128(x1, xmmp[1]); + x2 = _mm_xor_si128(x2, xmmp[2]); + x3 = _mm_xor_si128(x3, xmmp[3]); + x4 = _mm_xor_si128(x4, xmmp[4]); + x5 = _mm_xor_si128(x5, xmmp[5]); + x6 = _mm_xor_si128(x6, xmmp[6]); + x7 = _mm_xor_si128(x7, xmmp[7]); + } + + /* 2: for i = 0 to 2r - 1 do */ + for (i = 0; i < blocksPerChunk; i++, half ^= r) { + /* 3: X = H(X ^ B_i) */ + xmmp = (xmmi *)scrypt_block(Bin, i); + x0 = _mm_xor_si128(x0, xmmp[0]); + x1 = _mm_xor_si128(x1, xmmp[1]); + x2 = _mm_xor_si128(x2, xmmp[2]); + x3 = _mm_xor_si128(x3, xmmp[3]); + x4 = _mm_xor_si128(x4, xmmp[4]); + x5 = _mm_xor_si128(x5, xmmp[5]); + x6 = _mm_xor_si128(x6, xmmp[6]); + x7 = _mm_xor_si128(x7, xmmp[7]); + + if (Bxor) { + xmmp = (xmmi *)scrypt_block(Bxor, i); + x0 = _mm_xor_si128(x0, xmmp[0]); + x1 = _mm_xor_si128(x1, xmmp[1]); + x2 = _mm_xor_si128(x2, xmmp[2]); + x3 = _mm_xor_si128(x3, xmmp[3]); + x4 = _mm_xor_si128(x4, xmmp[4]); + x5 = _mm_xor_si128(x5, xmmp[5]); + x6 = _mm_xor_si128(x6, xmmp[6]); + x7 = _mm_xor_si128(x7, xmmp[7]); + } + + t0 = x0; + t1 = x1; + t2 = x2; + t3 = x3; + t4 = x4; + t5 = x5; + t6 = x6; + t7 = x7; + + for (rounds = 8; rounds; rounds -= 2) { + z0 = _mm_add_epi64(x0, x2); + z1 = _mm_add_epi64(x1, x3); + z0 = _mm_shuffle_epi32(z0, _MM_SHUFFLE(2,3,0,1)); + z1 = _mm_shuffle_epi32(z1, _MM_SHUFFLE(2,3,0,1)); + x6 = _mm_xor_si128(x6, z0); + x7 = _mm_xor_si128(x7, z1); + + z0 = _mm_add_epi64(x6, x0); + z1 = _mm_add_epi64(x7, x1); + z2 = _mm_srli_epi64(z0, 64-13); + z3 = _mm_srli_epi64(z1, 64-13); + z0 = _mm_slli_epi64(z0, 13); + z1 = _mm_slli_epi64(z1, 13); + x4 = _mm_xor_si128(x4, z2); + x5 = _mm_xor_si128(x5, z3); + x4 = _mm_xor_si128(x4, z0); + x5 = _mm_xor_si128(x5, z1); + + z0 = _mm_add_epi64(x4, x6); + z1 = _mm_add_epi64(x5, x7); + z2 = _mm_srli_epi64(z0, 64-39); + z3 = _mm_srli_epi64(z1, 64-39); + z0 = _mm_slli_epi64(z0, 39); + z1 = _mm_slli_epi64(z1, 39); + x2 = _mm_xor_si128(x2, z2); + x3 = _mm_xor_si128(x3, z3); + x2 = _mm_xor_si128(x2, z0); + x3 = _mm_xor_si128(x3, z1); + + z0 = _mm_add_epi64(x2, x4); + z1 = _mm_add_epi64(x3, x5); + z0 = _mm_shuffle_epi32(z0, _MM_SHUFFLE(2,3,0,1)); + z1 = _mm_shuffle_epi32(z1, _MM_SHUFFLE(2,3,0,1)); + x0 = _mm_xor_si128(x0, z0); + x1 = _mm_xor_si128(x1, z1); + + z0 = x2; + z1 = x3; + x2 = _mm_alignr_epi8(x6, x7, 8); + x3 = _mm_alignr_epi8(x7, x6, 8); + x6 = _mm_alignr_epi8(z1, z0, 8); + x7 = _mm_alignr_epi8(z0, z1, 8); + + z0 = _mm_add_epi64(x0, x2); + z1 = _mm_add_epi64(x1, x3); + z0 = _mm_shuffle_epi32(z0, _MM_SHUFFLE(2,3,0,1)); + z1 = _mm_shuffle_epi32(z1, _MM_SHUFFLE(2,3,0,1)); + x6 = _mm_xor_si128(x6, z0); + x7 = _mm_xor_si128(x7, z1); + + z0 = _mm_add_epi64(x6, x0); + z1 = _mm_add_epi64(x7, x1); + z2 = _mm_srli_epi64(z0, 64-13); + z3 = _mm_srli_epi64(z1, 64-13); + z0 = _mm_slli_epi64(z0, 13); + z1 = _mm_slli_epi64(z1, 13); + x5 = _mm_xor_si128(x5, z2); + x4 = _mm_xor_si128(x4, z3); + x5 = _mm_xor_si128(x5, z0); + x4 = _mm_xor_si128(x4, z1); + + z0 = _mm_add_epi64(x5, x6); + z1 = _mm_add_epi64(x4, x7); + z2 = _mm_srli_epi64(z0, 64-39); + z3 = _mm_srli_epi64(z1, 64-39); + z0 = _mm_slli_epi64(z0, 39); + z1 = _mm_slli_epi64(z1, 39); + x2 = _mm_xor_si128(x2, z2); + x3 = _mm_xor_si128(x3, z3); + x2 = _mm_xor_si128(x2, z0); + x3 = _mm_xor_si128(x3, z1); + + z0 = _mm_add_epi64(x2, x5); + z1 = _mm_add_epi64(x3, x4); + z0 = _mm_shuffle_epi32(z0, _MM_SHUFFLE(2,3,0,1)); + z1 = _mm_shuffle_epi32(z1, _MM_SHUFFLE(2,3,0,1)); + x0 = _mm_xor_si128(x0, z0); + x1 = _mm_xor_si128(x1, z1); + + z0 = x2; + z1 = x3; + x2 = _mm_alignr_epi8(x6, x7, 8); + x3 = _mm_alignr_epi8(x7, x6, 8); + x6 = _mm_alignr_epi8(z1, z0, 8); + x7 = _mm_alignr_epi8(z0, z1, 8); + } + + x0 = _mm_add_epi64(x0, t0); + x1 = _mm_add_epi64(x1, t1); + x2 = _mm_add_epi64(x2, t2); + x3 = _mm_add_epi64(x3, t3); + x4 = _mm_add_epi64(x4, t4); + x5 = _mm_add_epi64(x5, t5); + x6 = _mm_add_epi64(x6, t6); + x7 = _mm_add_epi64(x7, t7); + + /* 4: Y_i = X */ + /* 6: B'[0..r-1] = Y_even */ + /* 6: B'[r..2r-1] = Y_odd */ + xmmp = (xmmi *)scrypt_block(Bout, (i / 2) + half); + xmmp[0] = x0; + xmmp[1] = x1; + xmmp[2] = x2; + xmmp[3] = x3; + xmmp[4] = x4; + xmmp[5] = x5; + xmmp[6] = x6; + xmmp[7] = x7; + } +} + +#endif + +#if defined(SCRYPT_SALSA64_AVX) + /* uses salsa64_core_tangle_sse2 */ + + #undef SCRYPT_MIX + #define SCRYPT_MIX "Salsa64/8-AVX" + #undef SCRYPT_SALSA64_INCLUDED + #define SCRYPT_SALSA64_INCLUDED +#endif diff --git a/deps/scrypt-jane-master/code/scrypt-jane-mix_salsa64-avx2.h b/deps/scrypt-jane-master/code/scrypt-jane-mix_salsa64-avx2.h new file mode 100644 index 000000000..a42e808b2 --- /dev/null +++ b/deps/scrypt-jane-master/code/scrypt-jane-mix_salsa64-avx2.h @@ -0,0 +1,221 @@ +/* x64 */ +#if defined(X86_64ASM_AVX2) && (!defined(SCRYPT_CHOOSE_COMPILETIME) || !defined(SCRYPT_SALSA64_INCLUDED)) && !defined(CPU_X86_FORCE_INTRINSICS) + +#define SCRYPT_SALSA64_AVX2 + +asm_naked_fn_proto(void, scrypt_ChunkMix_avx2)(uint64_t *Bout/*[chunkBytes]*/, uint64_t *Bin/*[chunkBytes]*/, uint64_t *Bxor/*[chunkBytes]*/, uint32_t r) +asm_naked_fn(scrypt_ChunkMix_avx2) + a2(lea rcx,[ecx*2]) /* zero extend uint32_t by using ecx, win64 can leave garbage in the top half */ + a2(shl rcx,7) + a2(lea r9,[rcx-128]) + a2(lea rax,[rsi+r9]) + a2(lea r9,[rdx+r9]) + a2(and rdx, rdx) + a2(vmovdqa ymm0,[rax+0]) + a2(vmovdqa ymm1,[rax+32]) + a2(vmovdqa ymm2,[rax+64]) + a2(vmovdqa ymm3,[rax+96]) + aj(jz scrypt_ChunkMix_avx2_no_xor1) + a3(vpxor ymm0,ymm0,[r9+0]) + a3(vpxor ymm1,ymm1,[r9+32]) + a3(vpxor ymm2,ymm2,[r9+64]) + a3(vpxor ymm3,ymm3,[r9+96]) + a1(scrypt_ChunkMix_avx2_no_xor1:) + a2(xor r9,r9) + a2(xor r8,r8) + a1(scrypt_ChunkMix_avx2_loop:) + a2(and rdx, rdx) + a3(vpxor ymm0,ymm0,[rsi+r9+0]) + a3(vpxor ymm1,ymm1,[rsi+r9+32]) + a3(vpxor ymm2,ymm2,[rsi+r9+64]) + a3(vpxor ymm3,ymm3,[rsi+r9+96]) + aj(jz scrypt_ChunkMix_avx2_no_xor2) + a3(vpxor ymm0,ymm0,[rdx+r9+0]) + a3(vpxor ymm1,ymm1,[rdx+r9+32]) + a3(vpxor ymm2,ymm2,[rdx+r9+64]) + a3(vpxor ymm3,ymm3,[rdx+r9+96]) + a1(scrypt_ChunkMix_avx2_no_xor2:) + a2(vmovdqa ymm6,ymm0) + a2(vmovdqa ymm7,ymm1) + a2(vmovdqa ymm8,ymm2) + a2(vmovdqa ymm9,ymm3) + a2(mov rax,4) + a1(scrypt_salsa64_avx2_loop: ) + a3(vpaddq ymm4, ymm1, ymm0) + a3(vpshufd ymm4, ymm4, 0xb1) + a3(vpxor ymm3, ymm3, ymm4) + a3(vpaddq ymm4, ymm0, ymm3) + a3(vpsrlq ymm5, ymm4, 51) + a3(vpxor ymm2, ymm2, ymm5) + a3(vpsllq ymm4, ymm4, 13) + a3(vpxor ymm2, ymm2, ymm4) + a3(vpaddq ymm4, ymm3, ymm2) + a3(vpsrlq ymm5, ymm4, 25) + a3(vpxor ymm1, ymm1, ymm5) + a3(vpsllq ymm4, ymm4, 39) + a3(vpxor ymm1, ymm1, ymm4) + a3(vpaddq ymm4, ymm2, ymm1) + a3(vpshufd ymm4, ymm4, 0xb1) + a3(vpermq ymm1, ymm1, 0x39) + a3(vpermq ymm10, ymm2, 0x4e) + a3(vpxor ymm0, ymm0, ymm4) + a3(vpermq ymm3, ymm3, 0x93) + a3(vpaddq ymm4, ymm3, ymm0) + a3(vpshufd ymm4, ymm4, 0xb1) + a3(vpxor ymm1, ymm1, ymm4) + a3(vpaddq ymm4, ymm0, ymm1) + a3(vpsrlq ymm5, ymm4, 51) + a3(vpxor ymm10, ymm10, ymm5) + a3(vpsllq ymm4, ymm4, 13) + a3(vpxor ymm10, ymm10, ymm4) + a3(vpaddq ymm4, ymm1, ymm10) + a3(vpsrlq ymm5, ymm4, 25) + a3(vpxor ymm3, ymm3, ymm5) + a3(vpsllq ymm4, ymm4, 39) + a3(vpermq ymm1, ymm1, 0x93) + a3(vpxor ymm3, ymm3, ymm4) + a3(vpermq ymm2, ymm10, 0x4e) + a3(vpaddq ymm4, ymm10, ymm3) + a3(vpshufd ymm4, ymm4, 0xb1) + a3(vpermq ymm3, ymm3, 0x39) + a3(vpxor ymm0, ymm0, ymm4) + a1(dec rax) + aj(jnz scrypt_salsa64_avx2_loop) + a3(vpaddq ymm0,ymm0,ymm6) + a3(vpaddq ymm1,ymm1,ymm7) + a3(vpaddq ymm2,ymm2,ymm8) + a3(vpaddq ymm3,ymm3,ymm9) + a2(lea rax,[r8+r9]) + a2(xor r8,rcx) + a2(and rax,~0xff) + a2(add r9,128) + a2(shr rax,1) + a2(add rax, rdi) + a2(cmp r9,rcx) + a2(vmovdqa [rax+0],ymm0) + a2(vmovdqa [rax+32],ymm1) + a2(vmovdqa [rax+64],ymm2) + a2(vmovdqa [rax+96],ymm3) + aj(jne scrypt_ChunkMix_avx2_loop) + a1(vzeroupper) + a1(ret) +asm_naked_fn_end(scrypt_ChunkMix_avx2) + +#endif + + +/* intrinsic */ +#if defined(X86_INTRINSIC_AVX2) && (!defined(SCRYPT_CHOOSE_COMPILETIME) || !defined(SCRYPT_SALSA64_INCLUDED)) + +#define SCRYPT_SALSA64_AVX2 + +static void asm_calling_convention +scrypt_ChunkMix_avx2(uint64_t *Bout/*[chunkBytes]*/, uint64_t *Bin/*[chunkBytes]*/, uint64_t *Bxor/*[chunkBytes]*/, uint32_t r) { + uint32_t i, blocksPerChunk = r * 2, half = 0; + ymmi *ymmp,y0,y1,y2,y3,t0,t1,t2,t3,z0,z1; + size_t rounds; + + /* 1: X = B_{2r - 1} */ + ymmp = (ymmi *)scrypt_block(Bin, blocksPerChunk - 1); + y0 = ymmp[0]; + y1 = ymmp[1]; + y2 = ymmp[2]; + y3 = ymmp[3]; + + if (Bxor) { + ymmp = (ymmi *)scrypt_block(Bxor, blocksPerChunk - 1); + y0 = _mm256_xor_si256(y0, ymmp[0]); + y1 = _mm256_xor_si256(y1, ymmp[1]); + y2 = _mm256_xor_si256(y2, ymmp[2]); + y3 = _mm256_xor_si256(y3, ymmp[3]); + } + + /* 2: for i = 0 to 2r - 1 do */ + for (i = 0; i < blocksPerChunk; i++, half ^= r) { + /* 3: X = H(X ^ B_i) */ + ymmp = (ymmi *)scrypt_block(Bin, i); + y0 = _mm256_xor_si256(y0, ymmp[0]); + y1 = _mm256_xor_si256(y1, ymmp[1]); + y2 = _mm256_xor_si256(y2, ymmp[2]); + y3 = _mm256_xor_si256(y3, ymmp[3]); + + if (Bxor) { + ymmp = (ymmi *)scrypt_block(Bxor, i); + y0 = _mm256_xor_si256(y0, ymmp[0]); + y1 = _mm256_xor_si256(y1, ymmp[1]); + y2 = _mm256_xor_si256(y2, ymmp[2]); + y3 = _mm256_xor_si256(y3, ymmp[3]); + } + + t0 = y0; + t1 = y1; + t2 = y2; + t3 = y3; + + for (rounds = 8; rounds; rounds -= 2) { + z0 = _mm256_add_epi64(y0, y1); + z0 = _mm256_shuffle_epi32(z0, _MM_SHUFFLE(2,3,0,1)); + y3 = _mm256_xor_si256(y3, z0); + z0 = _mm256_add_epi64(y3, y0); + z1 = _mm256_srli_epi64(z0, 64-13); + y2 = _mm256_xor_si256(y2, z1); + z0 = _mm256_slli_epi64(z0, 13); + y2 = _mm256_xor_si256(y2, z0); + z0 = _mm256_add_epi64(y2, y3); + z1 = _mm256_srli_epi64(z0, 64-39); + y1 = _mm256_xor_si256(y1, z1); + z0 = _mm256_slli_epi64(z0, 39); + y1 = _mm256_xor_si256(y1, z0); + y1 = _mm256_permute4x64_epi64(y1, _MM_SHUFFLE(0,3,2,1)); + y2 = _mm256_permute4x64_epi64(y2, _MM_SHUFFLE(1,0,3,2)); + y3 = _mm256_permute4x64_epi64(y3, _MM_SHUFFLE(2,1,0,3)); + z0 = _mm256_add_epi64(y1, y2); + z0 = _mm256_shuffle_epi32(z0, _MM_SHUFFLE(2,3,0,1)); + y0 = _mm256_xor_si256(y0, z0); + z0 = _mm256_add_epi64(y0, y3); + z0 = _mm256_shuffle_epi32(z0, _MM_SHUFFLE(2,3,0,1)); + y1 = _mm256_xor_si256(y1, z0); + z0 = _mm256_add_epi64(y1, y0); + z1 = _mm256_srli_epi64(z0, 64-13); + y2 = _mm256_xor_si256(y2, z1); + z0 = _mm256_slli_epi64(z0, 13); + y2 = _mm256_xor_si256(y2, z0); + z0 = _mm256_add_epi64(y2, y1); + z1 = _mm256_srli_epi64(z0, 64-39); + y3 = _mm256_xor_si256(y3, z1); + z0 = _mm256_slli_epi64(z0, 39); + y3 = _mm256_xor_si256(y3, z0); + z0 = _mm256_add_epi64(y3, y2); + z0 = _mm256_shuffle_epi32(z0, _MM_SHUFFLE(2,3,0,1)); + y0 = _mm256_xor_si256(y0, z0); + y1 = _mm256_permute4x64_epi64(y1, _MM_SHUFFLE(2,1,0,3)); + y2 = _mm256_permute4x64_epi64(y2, _MM_SHUFFLE(1,0,3,2)); + y3 = _mm256_permute4x64_epi64(y3, _MM_SHUFFLE(0,3,2,1)); + } + + y0 = _mm256_add_epi64(y0, t0); + y1 = _mm256_add_epi64(y1, t1); + y2 = _mm256_add_epi64(y2, t2); + y3 = _mm256_add_epi64(y3, t3); + + /* 4: Y_i = X */ + /* 6: B'[0..r-1] = Y_even */ + /* 6: B'[r..2r-1] = Y_odd */ + ymmp = (ymmi *)scrypt_block(Bout, (i / 2) + half); + ymmp[0] = y0; + ymmp[1] = y1; + ymmp[2] = y2; + ymmp[3] = y3; + } +} + +#endif + +#if defined(SCRYPT_SALSA64_AVX2) + /* uses salsa64_core_tangle_sse2 */ + + #undef SCRYPT_MIX + #define SCRYPT_MIX "Salsa64/8-AVX2" + #undef SCRYPT_SALSA64_INCLUDED + #define SCRYPT_SALSA64_INCLUDED +#endif diff --git a/deps/scrypt-jane-master/code/scrypt-jane-mix_salsa64-sse2.h b/deps/scrypt-jane-master/code/scrypt-jane-mix_salsa64-sse2.h new file mode 100644 index 000000000..971d98a35 --- /dev/null +++ b/deps/scrypt-jane-master/code/scrypt-jane-mix_salsa64-sse2.h @@ -0,0 +1,449 @@ +/* x64 */ +#if defined(X86_64ASM_SSE2) && (!defined(SCRYPT_CHOOSE_COMPILETIME) || !defined(SCRYPT_SALSA64_INCLUDED)) && !defined(CPU_X86_FORCE_INTRINSICS) + +#define SCRYPT_SALSA64_SSE2 + +asm_naked_fn_proto(void, scrypt_ChunkMix_sse2)(uint64_t *Bout/*[chunkBytes]*/, uint64_t *Bin/*[chunkBytes]*/, uint64_t *Bxor/*[chunkBytes]*/, uint32_t r) +asm_naked_fn(scrypt_ChunkMix_sse2) + a1(push rbp) + a2(mov rbp, rsp) + a2(and rsp, ~63) + a2(sub rsp, 128) + a2(lea rcx,[ecx*2]) /* zero extend uint32_t by using ecx, win64 can leave garbage in the top half */ + a2(shl rcx,7) + a2(lea r9,[rcx-128]) + a2(lea rax,[rsi+r9]) + a2(lea r9,[rdx+r9]) + a2(and rdx, rdx) + a2(movdqa xmm0,[rax+0]) + a2(movdqa xmm1,[rax+16]) + a2(movdqa xmm2,[rax+32]) + a2(movdqa xmm3,[rax+48]) + a2(movdqa xmm4,[rax+64]) + a2(movdqa xmm5,[rax+80]) + a2(movdqa xmm6,[rax+96]) + a2(movdqa xmm7,[rax+112]) + aj(jz scrypt_ChunkMix_sse2_no_xor1) + a2(pxor xmm0,[r9+0]) + a2(pxor xmm1,[r9+16]) + a2(pxor xmm2,[r9+32]) + a2(pxor xmm3,[r9+48]) + a2(pxor xmm4,[r9+64]) + a2(pxor xmm5,[r9+80]) + a2(pxor xmm6,[r9+96]) + a2(pxor xmm7,[r9+112]) + a1(scrypt_ChunkMix_sse2_no_xor1:) + a2(xor r9,r9) + a2(xor r8,r8) + a1(scrypt_ChunkMix_sse2_loop:) + a2(and rdx, rdx) + a2(pxor xmm0,[rsi+r9+0]) + a2(pxor xmm1,[rsi+r9+16]) + a2(pxor xmm2,[rsi+r9+32]) + a2(pxor xmm3,[rsi+r9+48]) + a2(pxor xmm4,[rsi+r9+64]) + a2(pxor xmm5,[rsi+r9+80]) + a2(pxor xmm6,[rsi+r9+96]) + a2(pxor xmm7,[rsi+r9+112]) + aj(jz scrypt_ChunkMix_sse2_no_xor2) + a2(pxor xmm0,[rdx+r9+0]) + a2(pxor xmm1,[rdx+r9+16]) + a2(pxor xmm2,[rdx+r9+32]) + a2(pxor xmm3,[rdx+r9+48]) + a2(pxor xmm4,[rdx+r9+64]) + a2(pxor xmm5,[rdx+r9+80]) + a2(pxor xmm6,[rdx+r9+96]) + a2(pxor xmm7,[rdx+r9+112]) + a1(scrypt_ChunkMix_sse2_no_xor2:) + a2(movdqa [rsp+0],xmm0) + a2(movdqa [rsp+16],xmm1) + a2(movdqa [rsp+32],xmm2) + a2(movdqa [rsp+48],xmm3) + a2(movdqa [rsp+64],xmm4) + a2(movdqa [rsp+80],xmm5) + a2(movdqa [rsp+96],xmm6) + a2(movdqa [rsp+112],xmm7) + a2(mov rax,8) + a1(scrypt_salsa64_sse2_loop: ) + a2(movdqa xmm8, xmm0) + a2(movdqa xmm9, xmm1) + a2(paddq xmm8, xmm2) + a2(paddq xmm9, xmm3) + a3(pshufd xmm8, xmm8, 0xb1) + a3(pshufd xmm9, xmm9, 0xb1) + a2(pxor xmm6, xmm8) + a2(pxor xmm7, xmm9) + a2(movdqa xmm10, xmm0) + a2(movdqa xmm11, xmm1) + a2(paddq xmm10, xmm6) + a2(paddq xmm11, xmm7) + a2(movdqa xmm8, xmm10) + a2(movdqa xmm9, xmm11) + a2(psrlq xmm10, 51) + a2(psrlq xmm11, 51) + a2(psllq xmm8, 13) + a2(psllq xmm9, 13) + a2(pxor xmm4, xmm10) + a2(pxor xmm5, xmm11) + a2(pxor xmm4, xmm8) + a2(pxor xmm5, xmm9) + a2(movdqa xmm10, xmm6) + a2(movdqa xmm11, xmm7) + a2(paddq xmm10, xmm4) + a2(paddq xmm11, xmm5) + a2(movdqa xmm8, xmm10) + a2(movdqa xmm9, xmm11) + a2(psrlq xmm10, 25) + a2(psrlq xmm11, 25) + a2(psllq xmm8, 39) + a2(psllq xmm9, 39) + a2(pxor xmm2, xmm10) + a2(pxor xmm3, xmm11) + a2(pxor xmm2, xmm8) + a2(pxor xmm3, xmm9) + a2(movdqa xmm8, xmm4) + a2(movdqa xmm9, xmm5) + a2(paddq xmm8, xmm2) + a2(paddq xmm9, xmm3) + a3(pshufd xmm8, xmm8, 0xb1) + a3(pshufd xmm9, xmm9, 0xb1) + a2(pxor xmm0, xmm8) + a2(pxor xmm1, xmm9) + a2(movdqa xmm8, xmm2) + a2(movdqa xmm9, xmm3) + a2(movdqa xmm10, xmm6) + a2(movdqa xmm11, xmm7) + a2(movdqa xmm2, xmm7) + a2(movdqa xmm3, xmm6) + a2(punpcklqdq xmm10, xmm6) + a2(punpcklqdq xmm11, xmm7) + a2(movdqa xmm6, xmm8) + a2(movdqa xmm7, xmm9) + a2(punpcklqdq xmm9, xmm9) + a2(punpcklqdq xmm8, xmm8) + a2(punpckhqdq xmm2, xmm10) + a2(punpckhqdq xmm3, xmm11) + a2(punpckhqdq xmm6, xmm9) + a2(punpckhqdq xmm7, xmm8) + a2(sub rax, 2) + a2(movdqa xmm8, xmm0) + a2(movdqa xmm9, xmm1) + a2(paddq xmm8, xmm2) + a2(paddq xmm9, xmm3) + a3(pshufd xmm8, xmm8, 0xb1) + a3(pshufd xmm9, xmm9, 0xb1) + a2(pxor xmm6, xmm8) + a2(pxor xmm7, xmm9) + a2(movdqa xmm10, xmm0) + a2(movdqa xmm11, xmm1) + a2(paddq xmm10, xmm6) + a2(paddq xmm11, xmm7) + a2(movdqa xmm8, xmm10) + a2(movdqa xmm9, xmm11) + a2(psrlq xmm10, 51) + a2(psrlq xmm11, 51) + a2(psllq xmm8, 13) + a2(psllq xmm9, 13) + a2(pxor xmm5, xmm10) + a2(pxor xmm4, xmm11) + a2(pxor xmm5, xmm8) + a2(pxor xmm4, xmm9) + a2(movdqa xmm10, xmm6) + a2(movdqa xmm11, xmm7) + a2(paddq xmm10, xmm5) + a2(paddq xmm11, xmm4) + a2(movdqa xmm8, xmm10) + a2(movdqa xmm9, xmm11) + a2(psrlq xmm10, 25) + a2(psrlq xmm11, 25) + a2(psllq xmm8, 39) + a2(psllq xmm9, 39) + a2(pxor xmm2, xmm10) + a2(pxor xmm3, xmm11) + a2(pxor xmm2, xmm8) + a2(pxor xmm3, xmm9) + a2(movdqa xmm8, xmm5) + a2(movdqa xmm9, xmm4) + a2(paddq xmm8, xmm2) + a2(paddq xmm9, xmm3) + a3(pshufd xmm8, xmm8, 0xb1) + a3(pshufd xmm9, xmm9, 0xb1) + a2(pxor xmm0, xmm8) + a2(pxor xmm1, xmm9) + a2(movdqa xmm8, xmm2) + a2(movdqa xmm9, xmm3) + a2(movdqa xmm10, xmm6) + a2(movdqa xmm11, xmm7) + a2(movdqa xmm2, xmm7) + a2(movdqa xmm3, xmm6) + a2(punpcklqdq xmm10, xmm6) + a2(punpcklqdq xmm11, xmm7) + a2(movdqa xmm6, xmm8) + a2(movdqa xmm7, xmm9) + a2(punpcklqdq xmm9, xmm9) + a2(punpcklqdq xmm8, xmm8) + a2(punpckhqdq xmm2, xmm10) + a2(punpckhqdq xmm3, xmm11) + a2(punpckhqdq xmm6, xmm9) + a2(punpckhqdq xmm7, xmm8) + aj(ja scrypt_salsa64_sse2_loop) + a2(paddq xmm0,[rsp+0]) + a2(paddq xmm1,[rsp+16]) + a2(paddq xmm2,[rsp+32]) + a2(paddq xmm3,[rsp+48]) + a2(paddq xmm4,[rsp+64]) + a2(paddq xmm5,[rsp+80]) + a2(paddq xmm6,[rsp+96]) + a2(paddq xmm7,[rsp+112]) + a2(lea rax,[r8+r9]) + a2(xor r8,rcx) + a2(and rax,~0xff) + a2(add r9,128) + a2(shr rax,1) + a2(add rax, rdi) + a2(cmp r9,rcx) + a2(movdqa [rax+0],xmm0) + a2(movdqa [rax+16],xmm1) + a2(movdqa [rax+32],xmm2) + a2(movdqa [rax+48],xmm3) + a2(movdqa [rax+64],xmm4) + a2(movdqa [rax+80],xmm5) + a2(movdqa [rax+96],xmm6) + a2(movdqa [rax+112],xmm7) + aj(jne scrypt_ChunkMix_sse2_loop) + a2(mov rsp, rbp) + a1(pop rbp) + a1(ret) +asm_naked_fn_end(scrypt_ChunkMix_sse2) + +#endif + + +/* intrinsic */ +#if defined(X86_INTRINSIC_SSE2) && (!defined(SCRYPT_CHOOSE_COMPILETIME) || !defined(SCRYPT_SALSA64_INCLUDED)) + +#define SCRYPT_SALSA64_SSE2 + +static void asm_calling_convention +scrypt_ChunkMix_sse2(uint64_t *Bout/*[chunkBytes]*/, uint64_t *Bin/*[chunkBytes]*/, uint64_t *Bxor/*[chunkBytes]*/, uint32_t r) { + uint32_t i, blocksPerChunk = r * 2, half = 0; + xmmi *xmmp,x0,x1,x2,x3,x4,x5,x6,x7,t0,t1,t2,t3,t4,t5,t6,t7,z0,z1,z2,z3; + size_t rounds; + + /* 1: X = B_{2r - 1} */ + xmmp = (xmmi *)scrypt_block(Bin, blocksPerChunk - 1); + x0 = xmmp[0]; + x1 = xmmp[1]; + x2 = xmmp[2]; + x3 = xmmp[3]; + x4 = xmmp[4]; + x5 = xmmp[5]; + x6 = xmmp[6]; + x7 = xmmp[7]; + + if (Bxor) { + xmmp = (xmmi *)scrypt_block(Bxor, blocksPerChunk - 1); + x0 = _mm_xor_si128(x0, xmmp[0]); + x1 = _mm_xor_si128(x1, xmmp[1]); + x2 = _mm_xor_si128(x2, xmmp[2]); + x3 = _mm_xor_si128(x3, xmmp[3]); + x4 = _mm_xor_si128(x4, xmmp[4]); + x5 = _mm_xor_si128(x5, xmmp[5]); + x6 = _mm_xor_si128(x6, xmmp[6]); + x7 = _mm_xor_si128(x7, xmmp[7]); + } + + /* 2: for i = 0 to 2r - 1 do */ + for (i = 0; i < blocksPerChunk; i++, half ^= r) { + /* 3: X = H(X ^ B_i) */ + xmmp = (xmmi *)scrypt_block(Bin, i); + x0 = _mm_xor_si128(x0, xmmp[0]); + x1 = _mm_xor_si128(x1, xmmp[1]); + x2 = _mm_xor_si128(x2, xmmp[2]); + x3 = _mm_xor_si128(x3, xmmp[3]); + x4 = _mm_xor_si128(x4, xmmp[4]); + x5 = _mm_xor_si128(x5, xmmp[5]); + x6 = _mm_xor_si128(x6, xmmp[6]); + x7 = _mm_xor_si128(x7, xmmp[7]); + + if (Bxor) { + xmmp = (xmmi *)scrypt_block(Bxor, i); + x0 = _mm_xor_si128(x0, xmmp[0]); + x1 = _mm_xor_si128(x1, xmmp[1]); + x2 = _mm_xor_si128(x2, xmmp[2]); + x3 = _mm_xor_si128(x3, xmmp[3]); + x4 = _mm_xor_si128(x4, xmmp[4]); + x5 = _mm_xor_si128(x5, xmmp[5]); + x6 = _mm_xor_si128(x6, xmmp[6]); + x7 = _mm_xor_si128(x7, xmmp[7]); + } + + t0 = x0; + t1 = x1; + t2 = x2; + t3 = x3; + t4 = x4; + t5 = x5; + t6 = x6; + t7 = x7; + + for (rounds = 8; rounds; rounds -= 2) { + z0 = _mm_add_epi64(x0, x2); + z1 = _mm_add_epi64(x1, x3); + z0 = _mm_shuffle_epi32(z0, _MM_SHUFFLE(2,3,0,1)); + z1 = _mm_shuffle_epi32(z1, _MM_SHUFFLE(2,3,0,1)); + x6 = _mm_xor_si128(x6, z0); + x7 = _mm_xor_si128(x7, z1); + + z0 = _mm_add_epi64(x6, x0); + z1 = _mm_add_epi64(x7, x1); + z2 = _mm_srli_epi64(z0, 64-13); + z3 = _mm_srli_epi64(z1, 64-13); + z0 = _mm_slli_epi64(z0, 13); + z1 = _mm_slli_epi64(z1, 13); + x4 = _mm_xor_si128(x4, z2); + x5 = _mm_xor_si128(x5, z3); + x4 = _mm_xor_si128(x4, z0); + x5 = _mm_xor_si128(x5, z1); + + z0 = _mm_add_epi64(x4, x6); + z1 = _mm_add_epi64(x5, x7); + z2 = _mm_srli_epi64(z0, 64-39); + z3 = _mm_srli_epi64(z1, 64-39); + z0 = _mm_slli_epi64(z0, 39); + z1 = _mm_slli_epi64(z1, 39); + x2 = _mm_xor_si128(x2, z2); + x3 = _mm_xor_si128(x3, z3); + x2 = _mm_xor_si128(x2, z0); + x3 = _mm_xor_si128(x3, z1); + + z0 = _mm_add_epi64(x2, x4); + z1 = _mm_add_epi64(x3, x5); + z0 = _mm_shuffle_epi32(z0, _MM_SHUFFLE(2,3,0,1)); + z1 = _mm_shuffle_epi32(z1, _MM_SHUFFLE(2,3,0,1)); + x0 = _mm_xor_si128(x0, z0); + x1 = _mm_xor_si128(x1, z1); + + z0 = x4; + z1 = x5; + z2 = x2; + z3 = x3; + x4 = z1; + x5 = z0; + x2 = _mm_unpackhi_epi64(x7, _mm_unpacklo_epi64(x6, x6)); + x3 = _mm_unpackhi_epi64(x6, _mm_unpacklo_epi64(x7, x7)); + x6 = _mm_unpackhi_epi64(z2, _mm_unpacklo_epi64(z3, z3)); + x7 = _mm_unpackhi_epi64(z3, _mm_unpacklo_epi64(z2, z2)); + + z0 = _mm_add_epi64(x0, x2); + z1 = _mm_add_epi64(x1, x3); + z0 = _mm_shuffle_epi32(z0, _MM_SHUFFLE(2,3,0,1)); + z1 = _mm_shuffle_epi32(z1, _MM_SHUFFLE(2,3,0,1)); + x6 = _mm_xor_si128(x6, z0); + x7 = _mm_xor_si128(x7, z1); + + z0 = _mm_add_epi64(x6, x0); + z1 = _mm_add_epi64(x7, x1); + z2 = _mm_srli_epi64(z0, 64-13); + z3 = _mm_srli_epi64(z1, 64-13); + z0 = _mm_slli_epi64(z0, 13); + z1 = _mm_slli_epi64(z1, 13); + x4 = _mm_xor_si128(x4, z2); + x5 = _mm_xor_si128(x5, z3); + x4 = _mm_xor_si128(x4, z0); + x5 = _mm_xor_si128(x5, z1); + + z0 = _mm_add_epi64(x4, x6); + z1 = _mm_add_epi64(x5, x7); + z2 = _mm_srli_epi64(z0, 64-39); + z3 = _mm_srli_epi64(z1, 64-39); + z0 = _mm_slli_epi64(z0, 39); + z1 = _mm_slli_epi64(z1, 39); + x2 = _mm_xor_si128(x2, z2); + x3 = _mm_xor_si128(x3, z3); + x2 = _mm_xor_si128(x2, z0); + x3 = _mm_xor_si128(x3, z1); + + z0 = _mm_add_epi64(x2, x4); + z1 = _mm_add_epi64(x3, x5); + z0 = _mm_shuffle_epi32(z0, _MM_SHUFFLE(2,3,0,1)); + z1 = _mm_shuffle_epi32(z1, _MM_SHUFFLE(2,3,0,1)); + x0 = _mm_xor_si128(x0, z0); + x1 = _mm_xor_si128(x1, z1); + + z0 = x4; + z1 = x5; + z2 = x2; + z3 = x3; + x4 = z1; + x5 = z0; + x2 = _mm_unpackhi_epi64(x7, _mm_unpacklo_epi64(x6, x6)); + x3 = _mm_unpackhi_epi64(x6, _mm_unpacklo_epi64(x7, x7)); + x6 = _mm_unpackhi_epi64(z2, _mm_unpacklo_epi64(z3, z3)); + x7 = _mm_unpackhi_epi64(z3, _mm_unpacklo_epi64(z2, z2)); + } + + x0 = _mm_add_epi64(x0, t0); + x1 = _mm_add_epi64(x1, t1); + x2 = _mm_add_epi64(x2, t2); + x3 = _mm_add_epi64(x3, t3); + x4 = _mm_add_epi64(x4, t4); + x5 = _mm_add_epi64(x5, t5); + x6 = _mm_add_epi64(x6, t6); + x7 = _mm_add_epi64(x7, t7); + + /* 4: Y_i = X */ + /* 6: B'[0..r-1] = Y_even */ + /* 6: B'[r..2r-1] = Y_odd */ + xmmp = (xmmi *)scrypt_block(Bout, (i / 2) + half); + xmmp[0] = x0; + xmmp[1] = x1; + xmmp[2] = x2; + xmmp[3] = x3; + xmmp[4] = x4; + xmmp[5] = x5; + xmmp[6] = x6; + xmmp[7] = x7; + } +} + +#endif + +#if defined(SCRYPT_SALSA64_SSE2) + #undef SCRYPT_MIX + #define SCRYPT_MIX "Salsa64/8-SSE2" + #undef SCRYPT_SALSA64_INCLUDED + #define SCRYPT_SALSA64_INCLUDED +#endif + +/* sse3/avx use this as well */ +#if defined(SCRYPT_SALSA64_INCLUDED) + /* + Default layout: + 0 1 2 3 + 4 5 6 7 + 8 9 10 11 + 12 13 14 15 + + SSE2 layout: + 0 5 10 15 + 12 1 6 11 + 8 13 2 7 + 4 9 14 3 + */ + + + static void asm_calling_convention + salsa64_core_tangle_sse2(uint64_t *blocks, size_t count) { + uint64_t t; + while (count--) { + t = blocks[1]; blocks[1] = blocks[5]; blocks[5] = t; + t = blocks[2]; blocks[2] = blocks[10]; blocks[10] = t; + t = blocks[3]; blocks[3] = blocks[15]; blocks[15] = t; + t = blocks[4]; blocks[4] = blocks[12]; blocks[12] = t; + t = blocks[7]; blocks[7] = blocks[11]; blocks[11] = t; + t = blocks[9]; blocks[9] = blocks[13]; blocks[13] = t; + blocks += 16; + } + } +#endif \ No newline at end of file diff --git a/deps/scrypt-jane-master/code/scrypt-jane-mix_salsa64-ssse3.h b/deps/scrypt-jane-master/code/scrypt-jane-mix_salsa64-ssse3.h new file mode 100644 index 000000000..d18412835 --- /dev/null +++ b/deps/scrypt-jane-master/code/scrypt-jane-mix_salsa64-ssse3.h @@ -0,0 +1,399 @@ +/* x64 */ +#if defined(X86_64ASM_SSSE3) && (!defined(SCRYPT_CHOOSE_COMPILETIME) || !defined(SCRYPT_SALSA64_INCLUDED)) && !defined(CPU_X86_FORCE_INTRINSICS) + +#define SCRYPT_SALSA64_SSSE3 + +asm_naked_fn_proto(void, scrypt_ChunkMix_ssse3)(uint64_t *Bout/*[chunkBytes]*/, uint64_t *Bin/*[chunkBytes]*/, uint64_t *Bxor/*[chunkBytes]*/, uint32_t r) +asm_naked_fn(scrypt_ChunkMix_ssse3) + a1(push rbp) + a2(mov rbp, rsp) + a2(and rsp, ~63) + a2(sub rsp, 128) + a2(lea rcx,[ecx*2]) /* zero extend uint32_t by using ecx, win64 can leave garbage in the top half */ + a2(shl rcx,7) + a2(lea r9,[rcx-128]) + a2(lea rax,[rsi+r9]) + a2(lea r9,[rdx+r9]) + a2(and rdx, rdx) + a2(movdqa xmm0,[rax+0]) + a2(movdqa xmm1,[rax+16]) + a2(movdqa xmm2,[rax+32]) + a2(movdqa xmm3,[rax+48]) + a2(movdqa xmm4,[rax+64]) + a2(movdqa xmm5,[rax+80]) + a2(movdqa xmm6,[rax+96]) + a2(movdqa xmm7,[rax+112]) + aj(jz scrypt_ChunkMix_ssse3_no_xor1) + a2(pxor xmm0,[r9+0]) + a2(pxor xmm1,[r9+16]) + a2(pxor xmm2,[r9+32]) + a2(pxor xmm3,[r9+48]) + a2(pxor xmm4,[r9+64]) + a2(pxor xmm5,[r9+80]) + a2(pxor xmm6,[r9+96]) + a2(pxor xmm7,[r9+112]) + a1(scrypt_ChunkMix_ssse3_no_xor1:) + a2(xor r9,r9) + a2(xor r8,r8) + a1(scrypt_ChunkMix_ssse3_loop:) + a2(and rdx, rdx) + a2(pxor xmm0,[rsi+r9+0]) + a2(pxor xmm1,[rsi+r9+16]) + a2(pxor xmm2,[rsi+r9+32]) + a2(pxor xmm3,[rsi+r9+48]) + a2(pxor xmm4,[rsi+r9+64]) + a2(pxor xmm5,[rsi+r9+80]) + a2(pxor xmm6,[rsi+r9+96]) + a2(pxor xmm7,[rsi+r9+112]) + aj(jz scrypt_ChunkMix_ssse3_no_xor2) + a2(pxor xmm0,[rdx+r9+0]) + a2(pxor xmm1,[rdx+r9+16]) + a2(pxor xmm2,[rdx+r9+32]) + a2(pxor xmm3,[rdx+r9+48]) + a2(pxor xmm4,[rdx+r9+64]) + a2(pxor xmm5,[rdx+r9+80]) + a2(pxor xmm6,[rdx+r9+96]) + a2(pxor xmm7,[rdx+r9+112]) + a1(scrypt_ChunkMix_ssse3_no_xor2:) + a2(movdqa [rsp+0],xmm0) + a2(movdqa [rsp+16],xmm1) + a2(movdqa [rsp+32],xmm2) + a2(movdqa [rsp+48],xmm3) + a2(movdqa [rsp+64],xmm4) + a2(movdqa [rsp+80],xmm5) + a2(movdqa [rsp+96],xmm6) + a2(movdqa [rsp+112],xmm7) + a2(mov rax,8) + a1(scrypt_salsa64_ssse3_loop: ) + a2(movdqa xmm8, xmm0) + a2(movdqa xmm9, xmm1) + a2(paddq xmm8, xmm2) + a2(paddq xmm9, xmm3) + a3(pshufd xmm8, xmm8, 0xb1) + a3(pshufd xmm9, xmm9, 0xb1) + a2(pxor xmm6, xmm8) + a2(pxor xmm7, xmm9) + a2(movdqa xmm10, xmm0) + a2(movdqa xmm11, xmm1) + a2(paddq xmm10, xmm6) + a2(paddq xmm11, xmm7) + a2(movdqa xmm8, xmm10) + a2(movdqa xmm9, xmm11) + a2(psrlq xmm10, 51) + a2(psrlq xmm11, 51) + a2(psllq xmm8, 13) + a2(psllq xmm9, 13) + a2(pxor xmm4, xmm10) + a2(pxor xmm5, xmm11) + a2(pxor xmm4, xmm8) + a2(pxor xmm5, xmm9) + a2(movdqa xmm10, xmm6) + a2(movdqa xmm11, xmm7) + a2(paddq xmm10, xmm4) + a2(paddq xmm11, xmm5) + a2(movdqa xmm8, xmm10) + a2(movdqa xmm9, xmm11) + a2(psrlq xmm10, 25) + a2(psrlq xmm11, 25) + a2(psllq xmm8, 39) + a2(psllq xmm9, 39) + a2(pxor xmm2, xmm10) + a2(pxor xmm3, xmm11) + a2(pxor xmm2, xmm8) + a2(pxor xmm3, xmm9) + a2(movdqa xmm8, xmm4) + a2(movdqa xmm9, xmm5) + a2(paddq xmm8, xmm2) + a2(paddq xmm9, xmm3) + a3(pshufd xmm8, xmm8, 0xb1) + a3(pshufd xmm9, xmm9, 0xb1) + a2(pxor xmm0, xmm8) + a2(pxor xmm1, xmm9) + a2(movdqa xmm10, xmm2) + a2(movdqa xmm11, xmm3) + a2(movdqa xmm2, xmm6) + a2(movdqa xmm3, xmm7) + a3(palignr xmm2, xmm7, 8) + a3(palignr xmm3, xmm6, 8) + a2(movdqa xmm6, xmm11) + a2(movdqa xmm7, xmm10) + a3(palignr xmm6, xmm10, 8) + a3(palignr xmm7, xmm11, 8) + a2(sub rax, 2) + a2(movdqa xmm8, xmm0) + a2(movdqa xmm9, xmm1) + a2(paddq xmm8, xmm2) + a2(paddq xmm9, xmm3) + a3(pshufd xmm8, xmm8, 0xb1) + a3(pshufd xmm9, xmm9, 0xb1) + a2(pxor xmm6, xmm8) + a2(pxor xmm7, xmm9) + a2(movdqa xmm10, xmm0) + a2(movdqa xmm11, xmm1) + a2(paddq xmm10, xmm6) + a2(paddq xmm11, xmm7) + a2(movdqa xmm8, xmm10) + a2(movdqa xmm9, xmm11) + a2(psrlq xmm10, 51) + a2(psrlq xmm11, 51) + a2(psllq xmm8, 13) + a2(psllq xmm9, 13) + a2(pxor xmm5, xmm10) + a2(pxor xmm4, xmm11) + a2(pxor xmm5, xmm8) + a2(pxor xmm4, xmm9) + a2(movdqa xmm10, xmm6) + a2(movdqa xmm11, xmm7) + a2(paddq xmm10, xmm5) + a2(paddq xmm11, xmm4) + a2(movdqa xmm8, xmm10) + a2(movdqa xmm9, xmm11) + a2(psrlq xmm10, 25) + a2(psrlq xmm11, 25) + a2(psllq xmm8, 39) + a2(psllq xmm9, 39) + a2(pxor xmm2, xmm10) + a2(pxor xmm3, xmm11) + a2(pxor xmm2, xmm8) + a2(pxor xmm3, xmm9) + a2(movdqa xmm8, xmm5) + a2(movdqa xmm9, xmm4) + a2(paddq xmm8, xmm2) + a2(paddq xmm9, xmm3) + a3(pshufd xmm8, xmm8, 0xb1) + a3(pshufd xmm9, xmm9, 0xb1) + a2(pxor xmm0, xmm8) + a2(pxor xmm1, xmm9) + a2(movdqa xmm10, xmm2) + a2(movdqa xmm11, xmm3) + a2(movdqa xmm2, xmm6) + a2(movdqa xmm3, xmm7) + a3(palignr xmm2, xmm7, 8) + a3(palignr xmm3, xmm6, 8) + a2(movdqa xmm6, xmm11) + a2(movdqa xmm7, xmm10) + a3(palignr xmm6, xmm10, 8) + a3(palignr xmm7, xmm11, 8) + aj(ja scrypt_salsa64_ssse3_loop) + a2(paddq xmm0,[rsp+0]) + a2(paddq xmm1,[rsp+16]) + a2(paddq xmm2,[rsp+32]) + a2(paddq xmm3,[rsp+48]) + a2(paddq xmm4,[rsp+64]) + a2(paddq xmm5,[rsp+80]) + a2(paddq xmm6,[rsp+96]) + a2(paddq xmm7,[rsp+112]) + a2(lea rax,[r8+r9]) + a2(xor r8,rcx) + a2(and rax,~0xff) + a2(add r9,128) + a2(shr rax,1) + a2(add rax, rdi) + a2(cmp r9,rcx) + a2(movdqa [rax+0],xmm0) + a2(movdqa [rax+16],xmm1) + a2(movdqa [rax+32],xmm2) + a2(movdqa [rax+48],xmm3) + a2(movdqa [rax+64],xmm4) + a2(movdqa [rax+80],xmm5) + a2(movdqa [rax+96],xmm6) + a2(movdqa [rax+112],xmm7) + aj(jne scrypt_ChunkMix_ssse3_loop) + a2(mov rsp, rbp) + a1(pop rbp) + a1(ret) +asm_naked_fn_end(scrypt_ChunkMix_ssse3) + +#endif + + +/* intrinsic */ +#if defined(X86_INTRINSIC_SSSE3) && (!defined(SCRYPT_CHOOSE_COMPILETIME) || !defined(SCRYPT_SALSA64_INCLUDED)) + +#define SCRYPT_SALSA64_SSSE3 + +static void asm_calling_convention +scrypt_ChunkMix_ssse3(uint64_t *Bout/*[chunkBytes]*/, uint64_t *Bin/*[chunkBytes]*/, uint64_t *Bxor/*[chunkBytes]*/, uint32_t r) { + uint32_t i, blocksPerChunk = r * 2, half = 0; + xmmi *xmmp,x0,x1,x2,x3,x4,x5,x6,x7,t0,t1,t2,t3,t4,t5,t6,t7,z0,z1,z2,z3; + size_t rounds; + + /* 1: X = B_{2r - 1} */ + xmmp = (xmmi *)scrypt_block(Bin, blocksPerChunk - 1); + x0 = xmmp[0]; + x1 = xmmp[1]; + x2 = xmmp[2]; + x3 = xmmp[3]; + x4 = xmmp[4]; + x5 = xmmp[5]; + x6 = xmmp[6]; + x7 = xmmp[7]; + + if (Bxor) { + xmmp = (xmmi *)scrypt_block(Bxor, blocksPerChunk - 1); + x0 = _mm_xor_si128(x0, xmmp[0]); + x1 = _mm_xor_si128(x1, xmmp[1]); + x2 = _mm_xor_si128(x2, xmmp[2]); + x3 = _mm_xor_si128(x3, xmmp[3]); + x4 = _mm_xor_si128(x4, xmmp[4]); + x5 = _mm_xor_si128(x5, xmmp[5]); + x6 = _mm_xor_si128(x6, xmmp[6]); + x7 = _mm_xor_si128(x7, xmmp[7]); + } + + /* 2: for i = 0 to 2r - 1 do */ + for (i = 0; i < blocksPerChunk; i++, half ^= r) { + /* 3: X = H(X ^ B_i) */ + xmmp = (xmmi *)scrypt_block(Bin, i); + x0 = _mm_xor_si128(x0, xmmp[0]); + x1 = _mm_xor_si128(x1, xmmp[1]); + x2 = _mm_xor_si128(x2, xmmp[2]); + x3 = _mm_xor_si128(x3, xmmp[3]); + x4 = _mm_xor_si128(x4, xmmp[4]); + x5 = _mm_xor_si128(x5, xmmp[5]); + x6 = _mm_xor_si128(x6, xmmp[6]); + x7 = _mm_xor_si128(x7, xmmp[7]); + + if (Bxor) { + xmmp = (xmmi *)scrypt_block(Bxor, i); + x0 = _mm_xor_si128(x0, xmmp[0]); + x1 = _mm_xor_si128(x1, xmmp[1]); + x2 = _mm_xor_si128(x2, xmmp[2]); + x3 = _mm_xor_si128(x3, xmmp[3]); + x4 = _mm_xor_si128(x4, xmmp[4]); + x5 = _mm_xor_si128(x5, xmmp[5]); + x6 = _mm_xor_si128(x6, xmmp[6]); + x7 = _mm_xor_si128(x7, xmmp[7]); + } + + t0 = x0; + t1 = x1; + t2 = x2; + t3 = x3; + t4 = x4; + t5 = x5; + t6 = x6; + t7 = x7; + + for (rounds = 8; rounds; rounds -= 2) { + z0 = _mm_add_epi64(x0, x2); + z1 = _mm_add_epi64(x1, x3); + z0 = _mm_shuffle_epi32(z0, _MM_SHUFFLE(2,3,0,1)); + z1 = _mm_shuffle_epi32(z1, _MM_SHUFFLE(2,3,0,1)); + x6 = _mm_xor_si128(x6, z0); + x7 = _mm_xor_si128(x7, z1); + + z0 = _mm_add_epi64(x6, x0); + z1 = _mm_add_epi64(x7, x1); + z2 = _mm_srli_epi64(z0, 64-13); + z3 = _mm_srli_epi64(z1, 64-13); + z0 = _mm_slli_epi64(z0, 13); + z1 = _mm_slli_epi64(z1, 13); + x4 = _mm_xor_si128(x4, z2); + x5 = _mm_xor_si128(x5, z3); + x4 = _mm_xor_si128(x4, z0); + x5 = _mm_xor_si128(x5, z1); + + z0 = _mm_add_epi64(x4, x6); + z1 = _mm_add_epi64(x5, x7); + z2 = _mm_srli_epi64(z0, 64-39); + z3 = _mm_srli_epi64(z1, 64-39); + z0 = _mm_slli_epi64(z0, 39); + z1 = _mm_slli_epi64(z1, 39); + x2 = _mm_xor_si128(x2, z2); + x3 = _mm_xor_si128(x3, z3); + x2 = _mm_xor_si128(x2, z0); + x3 = _mm_xor_si128(x3, z1); + + z0 = _mm_add_epi64(x2, x4); + z1 = _mm_add_epi64(x3, x5); + z0 = _mm_shuffle_epi32(z0, _MM_SHUFFLE(2,3,0,1)); + z1 = _mm_shuffle_epi32(z1, _MM_SHUFFLE(2,3,0,1)); + x0 = _mm_xor_si128(x0, z0); + x1 = _mm_xor_si128(x1, z1); + + z0 = x2; + z1 = x3; + x2 = _mm_alignr_epi8(x6, x7, 8); + x3 = _mm_alignr_epi8(x7, x6, 8); + x6 = _mm_alignr_epi8(z1, z0, 8); + x7 = _mm_alignr_epi8(z0, z1, 8); + + z0 = _mm_add_epi64(x0, x2); + z1 = _mm_add_epi64(x1, x3); + z0 = _mm_shuffle_epi32(z0, _MM_SHUFFLE(2,3,0,1)); + z1 = _mm_shuffle_epi32(z1, _MM_SHUFFLE(2,3,0,1)); + x6 = _mm_xor_si128(x6, z0); + x7 = _mm_xor_si128(x7, z1); + + z0 = _mm_add_epi64(x6, x0); + z1 = _mm_add_epi64(x7, x1); + z2 = _mm_srli_epi64(z0, 64-13); + z3 = _mm_srli_epi64(z1, 64-13); + z0 = _mm_slli_epi64(z0, 13); + z1 = _mm_slli_epi64(z1, 13); + x5 = _mm_xor_si128(x5, z2); + x4 = _mm_xor_si128(x4, z3); + x5 = _mm_xor_si128(x5, z0); + x4 = _mm_xor_si128(x4, z1); + + z0 = _mm_add_epi64(x5, x6); + z1 = _mm_add_epi64(x4, x7); + z2 = _mm_srli_epi64(z0, 64-39); + z3 = _mm_srli_epi64(z1, 64-39); + z0 = _mm_slli_epi64(z0, 39); + z1 = _mm_slli_epi64(z1, 39); + x2 = _mm_xor_si128(x2, z2); + x3 = _mm_xor_si128(x3, z3); + x2 = _mm_xor_si128(x2, z0); + x3 = _mm_xor_si128(x3, z1); + + z0 = _mm_add_epi64(x2, x5); + z1 = _mm_add_epi64(x3, x4); + z0 = _mm_shuffle_epi32(z0, _MM_SHUFFLE(2,3,0,1)); + z1 = _mm_shuffle_epi32(z1, _MM_SHUFFLE(2,3,0,1)); + x0 = _mm_xor_si128(x0, z0); + x1 = _mm_xor_si128(x1, z1); + + z0 = x2; + z1 = x3; + x2 = _mm_alignr_epi8(x6, x7, 8); + x3 = _mm_alignr_epi8(x7, x6, 8); + x6 = _mm_alignr_epi8(z1, z0, 8); + x7 = _mm_alignr_epi8(z0, z1, 8); + } + + x0 = _mm_add_epi64(x0, t0); + x1 = _mm_add_epi64(x1, t1); + x2 = _mm_add_epi64(x2, t2); + x3 = _mm_add_epi64(x3, t3); + x4 = _mm_add_epi64(x4, t4); + x5 = _mm_add_epi64(x5, t5); + x6 = _mm_add_epi64(x6, t6); + x7 = _mm_add_epi64(x7, t7); + + /* 4: Y_i = X */ + /* 6: B'[0..r-1] = Y_even */ + /* 6: B'[r..2r-1] = Y_odd */ + xmmp = (xmmi *)scrypt_block(Bout, (i / 2) + half); + xmmp[0] = x0; + xmmp[1] = x1; + xmmp[2] = x2; + xmmp[3] = x3; + xmmp[4] = x4; + xmmp[5] = x5; + xmmp[6] = x6; + xmmp[7] = x7; + } +} + +#endif + +#if defined(SCRYPT_SALSA64_SSSE3) + /* uses salsa64_core_tangle_sse2 */ + + #undef SCRYPT_MIX + #define SCRYPT_MIX "Salsa64/8-SSSE3" + #undef SCRYPT_SALSA64_INCLUDED + #define SCRYPT_SALSA64_INCLUDED +#endif diff --git a/deps/scrypt-jane-master/code/scrypt-jane-mix_salsa64-xop.h b/deps/scrypt-jane-master/code/scrypt-jane-mix_salsa64-xop.h new file mode 100644 index 000000000..d51d1121d --- /dev/null +++ b/deps/scrypt-jane-master/code/scrypt-jane-mix_salsa64-xop.h @@ -0,0 +1,335 @@ +/* x64 */ +#if defined(X86_64ASM_XOP) && (!defined(SCRYPT_CHOOSE_COMPILETIME) || !defined(SCRYPT_SALSA64_INCLUDED)) && !defined(CPU_X86_FORCE_INTRINSICS) + +#define SCRYPT_SALSA64_XOP + +asm_naked_fn_proto(void, scrypt_ChunkMix_xop)(uint64_t *Bout/*[chunkBytes]*/, uint64_t *Bin/*[chunkBytes]*/, uint64_t *Bxor/*[chunkBytes]*/, uint32_t r) +asm_naked_fn(scrypt_ChunkMix_xop) + a1(push rbp) + a2(mov rbp, rsp) + a2(and rsp, ~63) + a2(sub rsp, 128) + a2(lea rcx,[ecx*2]) /* zero extend uint32_t by using ecx, win64 can leave garbage in the top half */ + a2(shl rcx,7) + a2(lea r9,[rcx-128]) + a2(lea rax,[rsi+r9]) + a2(lea r9,[rdx+r9]) + a2(and rdx, rdx) + a2(vmovdqa xmm0,[rax+0]) + a2(vmovdqa xmm1,[rax+16]) + a2(vmovdqa xmm2,[rax+32]) + a2(vmovdqa xmm3,[rax+48]) + a2(vmovdqa xmm4,[rax+64]) + a2(vmovdqa xmm5,[rax+80]) + a2(vmovdqa xmm6,[rax+96]) + a2(vmovdqa xmm7,[rax+112]) + aj(jz scrypt_ChunkMix_xop_no_xor1) + a3(vpxor xmm0,xmm0,[r9+0]) + a3(vpxor xmm1,xmm1,[r9+16]) + a3(vpxor xmm2,xmm2,[r9+32]) + a3(vpxor xmm3,xmm3,[r9+48]) + a3(vpxor xmm4,xmm4,[r9+64]) + a3(vpxor xmm5,xmm5,[r9+80]) + a3(vpxor xmm6,xmm6,[r9+96]) + a3(vpxor xmm7,xmm7,[r9+112]) + a1(scrypt_ChunkMix_xop_no_xor1:) + a2(xor r9,r9) + a2(xor r8,r8) + a1(scrypt_ChunkMix_xop_loop:) + a2(and rdx, rdx) + a3(vpxor xmm0,xmm0,[rsi+r9+0]) + a3(vpxor xmm1,xmm1,[rsi+r9+16]) + a3(vpxor xmm2,xmm2,[rsi+r9+32]) + a3(vpxor xmm3,xmm3,[rsi+r9+48]) + a3(vpxor xmm4,xmm4,[rsi+r9+64]) + a3(vpxor xmm5,xmm5,[rsi+r9+80]) + a3(vpxor xmm6,xmm6,[rsi+r9+96]) + a3(vpxor xmm7,xmm7,[rsi+r9+112]) + aj(jz scrypt_ChunkMix_xop_no_xor2) + a3(vpxor xmm0,xmm0,[rdx+r9+0]) + a3(vpxor xmm1,xmm1,[rdx+r9+16]) + a3(vpxor xmm2,xmm2,[rdx+r9+32]) + a3(vpxor xmm3,xmm3,[rdx+r9+48]) + a3(vpxor xmm4,xmm4,[rdx+r9+64]) + a3(vpxor xmm5,xmm5,[rdx+r9+80]) + a3(vpxor xmm6,xmm6,[rdx+r9+96]) + a3(vpxor xmm7,xmm7,[rdx+r9+112]) + a1(scrypt_ChunkMix_xop_no_xor2:) + a2(vmovdqa [rsp+0],xmm0) + a2(vmovdqa [rsp+16],xmm1) + a2(vmovdqa [rsp+32],xmm2) + a2(vmovdqa [rsp+48],xmm3) + a2(vmovdqa [rsp+64],xmm4) + a2(vmovdqa [rsp+80],xmm5) + a2(vmovdqa [rsp+96],xmm6) + a2(vmovdqa [rsp+112],xmm7) + a2(mov rax,8) + a1(scrypt_salsa64_xop_loop: ) + a3(vpaddq xmm8, xmm0, xmm2) + a3(vpaddq xmm9, xmm1, xmm3) + a3(vpshufd xmm8, xmm8, 0xb1) + a3(vpshufd xmm9, xmm9, 0xb1) + a3(vpxor xmm6, xmm6, xmm8) + a3(vpxor xmm7, xmm7, xmm9) + a3(vpaddq xmm10, xmm0, xmm6) + a3(vpaddq xmm11, xmm1, xmm7) + a3(vprotq xmm10, xmm10, 13) + a3(vprotq xmm11, xmm11, 13) + a3(vpxor xmm4, xmm4, xmm10) + a3(vpxor xmm5, xmm5, xmm11) + a3(vpaddq xmm8, xmm6, xmm4) + a3(vpaddq xmm9, xmm7, xmm5) + a3(vprotq xmm8, xmm8, 39) + a3(vprotq xmm9, xmm9, 39) + a3(vpxor xmm2, xmm2, xmm8) + a3(vpxor xmm3, xmm3, xmm9) + a3(vpaddq xmm10, xmm4, xmm2) + a3(vpaddq xmm11, xmm5, xmm3) + a3(vpshufd xmm10, xmm10, 0xb1) + a3(vpshufd xmm11, xmm11, 0xb1) + a3(vpxor xmm0, xmm0, xmm10) + a3(vpxor xmm1, xmm1, xmm11) + a2(vmovdqa xmm8, xmm2) + a2(vmovdqa xmm9, xmm3) + a4(vpalignr xmm2, xmm6, xmm7, 8) + a4(vpalignr xmm3, xmm7, xmm6, 8) + a4(vpalignr xmm6, xmm9, xmm8, 8) + a4(vpalignr xmm7, xmm8, xmm9, 8) + a3(vpaddq xmm10, xmm0, xmm2) + a3(vpaddq xmm11, xmm1, xmm3) + a3(vpshufd xmm10, xmm10, 0xb1) + a3(vpshufd xmm11, xmm11, 0xb1) + a3(vpxor xmm6, xmm6, xmm10) + a3(vpxor xmm7, xmm7, xmm11) + a3(vpaddq xmm8, xmm0, xmm6) + a3(vpaddq xmm9, xmm1, xmm7) + a3(vprotq xmm8, xmm8, 13) + a3(vprotq xmm9, xmm9, 13) + a3(vpxor xmm5, xmm5, xmm8) + a3(vpxor xmm4, xmm4, xmm9) + a3(vpaddq xmm10, xmm6, xmm5) + a3(vpaddq xmm11, xmm7, xmm4) + a3(vprotq xmm10, xmm10, 39) + a3(vprotq xmm11, xmm11, 39) + a3(vpxor xmm2, xmm2, xmm10) + a3(vpxor xmm3, xmm3, xmm11) + a3(vpaddq xmm8, xmm5, xmm2) + a3(vpaddq xmm9, xmm4, xmm3) + a3(vpshufd xmm8, xmm8, 0xb1) + a3(vpshufd xmm9, xmm9, 0xb1) + a3(vpxor xmm0, xmm0, xmm8) + a3(vpxor xmm1, xmm1, xmm9) + a2(vmovdqa xmm10, xmm2) + a2(vmovdqa xmm11, xmm3) + a4(vpalignr xmm2, xmm6, xmm7, 8) + a4(vpalignr xmm3, xmm7, xmm6, 8) + a4(vpalignr xmm6, xmm11, xmm10, 8) + a4(vpalignr xmm7, xmm10, xmm11, 8) + a2(sub rax, 2) + aj(ja scrypt_salsa64_xop_loop) + a3(vpaddq xmm0,xmm0,[rsp+0]) + a3(vpaddq xmm1,xmm1,[rsp+16]) + a3(vpaddq xmm2,xmm2,[rsp+32]) + a3(vpaddq xmm3,xmm3,[rsp+48]) + a3(vpaddq xmm4,xmm4,[rsp+64]) + a3(vpaddq xmm5,xmm5,[rsp+80]) + a3(vpaddq xmm6,xmm6,[rsp+96]) + a3(vpaddq xmm7,xmm7,[rsp+112]) + a2(lea rax,[r8+r9]) + a2(xor r8,rcx) + a2(and rax,~0xff) + a2(add r9,128) + a2(shr rax,1) + a2(add rax, rdi) + a2(cmp r9,rcx) + a2(vmovdqa [rax+0],xmm0) + a2(vmovdqa [rax+16],xmm1) + a2(vmovdqa [rax+32],xmm2) + a2(vmovdqa [rax+48],xmm3) + a2(vmovdqa [rax+64],xmm4) + a2(vmovdqa [rax+80],xmm5) + a2(vmovdqa [rax+96],xmm6) + a2(vmovdqa [rax+112],xmm7) + aj(jne scrypt_ChunkMix_xop_loop) + a2(mov rsp, rbp) + a1(pop rbp) + a1(ret) +asm_naked_fn_end(scrypt_ChunkMix_xop) + +#endif + + +/* intrinsic */ +#if defined(X86_INTRINSIC_XOP) && (!defined(SCRYPT_CHOOSE_COMPILETIME) || !defined(SCRYPT_SALSA64_INCLUDED)) + +#define SCRYPT_SALSA64_XOP + +static void asm_calling_convention +scrypt_ChunkMix_xop(uint64_t *Bout/*[chunkBytes]*/, uint64_t *Bin/*[chunkBytes]*/, uint64_t *Bxor/*[chunkBytes]*/, uint32_t r) { + uint32_t i, blocksPerChunk = r * 2, half = 0; + xmmi *xmmp,x0,x1,x2,x3,x4,x5,x6,x7,t0,t1,t2,t3,t4,t5,t6,t7,z0,z1,z2,z3; + size_t rounds; + + /* 1: X = B_{2r - 1} */ + xmmp = (xmmi *)scrypt_block(Bin, blocksPerChunk - 1); + x0 = xmmp[0]; + x1 = xmmp[1]; + x2 = xmmp[2]; + x3 = xmmp[3]; + x4 = xmmp[4]; + x5 = xmmp[5]; + x6 = xmmp[6]; + x7 = xmmp[7]; + + if (Bxor) { + xmmp = (xmmi *)scrypt_block(Bxor, blocksPerChunk - 1); + x0 = _mm_xor_si128(x0, xmmp[0]); + x1 = _mm_xor_si128(x1, xmmp[1]); + x2 = _mm_xor_si128(x2, xmmp[2]); + x3 = _mm_xor_si128(x3, xmmp[3]); + x4 = _mm_xor_si128(x4, xmmp[4]); + x5 = _mm_xor_si128(x5, xmmp[5]); + x6 = _mm_xor_si128(x6, xmmp[6]); + x7 = _mm_xor_si128(x7, xmmp[7]); + } + + /* 2: for i = 0 to 2r - 1 do */ + for (i = 0; i < blocksPerChunk; i++, half ^= r) { + /* 3: X = H(X ^ B_i) */ + xmmp = (xmmi *)scrypt_block(Bin, i); + x0 = _mm_xor_si128(x0, xmmp[0]); + x1 = _mm_xor_si128(x1, xmmp[1]); + x2 = _mm_xor_si128(x2, xmmp[2]); + x3 = _mm_xor_si128(x3, xmmp[3]); + x4 = _mm_xor_si128(x4, xmmp[4]); + x5 = _mm_xor_si128(x5, xmmp[5]); + x6 = _mm_xor_si128(x6, xmmp[6]); + x7 = _mm_xor_si128(x7, xmmp[7]); + + if (Bxor) { + xmmp = (xmmi *)scrypt_block(Bxor, i); + x0 = _mm_xor_si128(x0, xmmp[0]); + x1 = _mm_xor_si128(x1, xmmp[1]); + x2 = _mm_xor_si128(x2, xmmp[2]); + x3 = _mm_xor_si128(x3, xmmp[3]); + x4 = _mm_xor_si128(x4, xmmp[4]); + x5 = _mm_xor_si128(x5, xmmp[5]); + x6 = _mm_xor_si128(x6, xmmp[6]); + x7 = _mm_xor_si128(x7, xmmp[7]); + } + + t0 = x0; + t1 = x1; + t2 = x2; + t3 = x3; + t4 = x4; + t5 = x5; + t6 = x6; + t7 = x7; + + for (rounds = 8; rounds; rounds -= 2) { + z0 = _mm_add_epi64(x0, x2); + z1 = _mm_add_epi64(x1, x3); + z0 = _mm_shuffle_epi32(z0, _MM_SHUFFLE(2,3,0,1)); + z1 = _mm_shuffle_epi32(z1, _MM_SHUFFLE(2,3,0,1)); + x6 = _mm_xor_si128(x6, z0); + x7 = _mm_xor_si128(x7, z1); + + z0 = _mm_add_epi64(x6, x0); + z1 = _mm_add_epi64(x7, x1); + z0 = _mm_roti_epi64(z0, 13); + z1 = _mm_roti_epi64(z1, 13); + x4 = _mm_xor_si128(x4, z0); + x5 = _mm_xor_si128(x5, z1); + + z0 = _mm_add_epi64(x4, x6); + z1 = _mm_add_epi64(x5, x7); + z0 = _mm_roti_epi64(z0, 39); + z1 = _mm_roti_epi64(z1, 39); + x2 = _mm_xor_si128(x2, z0); + x3 = _mm_xor_si128(x3, z1); + + z0 = _mm_add_epi64(x2, x4); + z1 = _mm_add_epi64(x3, x5); + z0 = _mm_shuffle_epi32(z0, _MM_SHUFFLE(2,3,0,1)); + z1 = _mm_shuffle_epi32(z1, _MM_SHUFFLE(2,3,0,1)); + x0 = _mm_xor_si128(x0, z0); + x1 = _mm_xor_si128(x1, z1); + + z0 = x2; + z1 = x3; + x2 = _mm_alignr_epi8(x6, x7, 8); + x3 = _mm_alignr_epi8(x7, x6, 8); + x6 = _mm_alignr_epi8(z1, z0, 8); + x7 = _mm_alignr_epi8(z0, z1, 8); + + z0 = _mm_add_epi64(x0, x2); + z1 = _mm_add_epi64(x1, x3); + z0 = _mm_shuffle_epi32(z0, _MM_SHUFFLE(2,3,0,1)); + z1 = _mm_shuffle_epi32(z1, _MM_SHUFFLE(2,3,0,1)); + x6 = _mm_xor_si128(x6, z0); + x7 = _mm_xor_si128(x7, z1); + + z0 = _mm_add_epi64(x6, x0); + z1 = _mm_add_epi64(x7, x1); + z0 = _mm_roti_epi64(z0, 13); + z1 = _mm_roti_epi64(z1, 13); + x5 = _mm_xor_si128(x5, z0); + x4 = _mm_xor_si128(x4, z1); + + z0 = _mm_add_epi64(x5, x6); + z1 = _mm_add_epi64(x4, x7); + z0 = _mm_roti_epi64(z0, 39); + z1 = _mm_roti_epi64(z1, 39); + x2 = _mm_xor_si128(x2, z0); + x3 = _mm_xor_si128(x3, z1); + + z0 = _mm_add_epi64(x2, x5); + z1 = _mm_add_epi64(x3, x4); + z0 = _mm_shuffle_epi32(z0, _MM_SHUFFLE(2,3,0,1)); + z1 = _mm_shuffle_epi32(z1, _MM_SHUFFLE(2,3,0,1)); + x0 = _mm_xor_si128(x0, z0); + x1 = _mm_xor_si128(x1, z1); + + z0 = x2; + z1 = x3; + x2 = _mm_alignr_epi8(x6, x7, 8); + x3 = _mm_alignr_epi8(x7, x6, 8); + x6 = _mm_alignr_epi8(z1, z0, 8); + x7 = _mm_alignr_epi8(z0, z1, 8); + } + + x0 = _mm_add_epi64(x0, t0); + x1 = _mm_add_epi64(x1, t1); + x2 = _mm_add_epi64(x2, t2); + x3 = _mm_add_epi64(x3, t3); + x4 = _mm_add_epi64(x4, t4); + x5 = _mm_add_epi64(x5, t5); + x6 = _mm_add_epi64(x6, t6); + x7 = _mm_add_epi64(x7, t7); + + /* 4: Y_i = X */ + /* 6: B'[0..r-1] = Y_even */ + /* 6: B'[r..2r-1] = Y_odd */ + xmmp = (xmmi *)scrypt_block(Bout, (i / 2) + half); + xmmp[0] = x0; + xmmp[1] = x1; + xmmp[2] = x2; + xmmp[3] = x3; + xmmp[4] = x4; + xmmp[5] = x5; + xmmp[6] = x6; + xmmp[7] = x7; + } +} + +#endif + +#if defined(SCRYPT_SALSA64_XOP) + /* uses salsa64_core_tangle_sse2 */ + + #undef SCRYPT_MIX + #define SCRYPT_MIX "Salsa64/8-XOP" + #undef SCRYPT_SALSA64_INCLUDED + #define SCRYPT_SALSA64_INCLUDED +#endif diff --git a/deps/scrypt-jane-master/code/scrypt-jane-mix_salsa64.h b/deps/scrypt-jane-master/code/scrypt-jane-mix_salsa64.h new file mode 100644 index 000000000..2aec04f33 --- /dev/null +++ b/deps/scrypt-jane-master/code/scrypt-jane-mix_salsa64.h @@ -0,0 +1,41 @@ +#if !defined(SCRYPT_CHOOSE_COMPILETIME) || !defined(SCRYPT_SALSA64_INCLUDED) + +#undef SCRYPT_MIX +#define SCRYPT_MIX "Salsa64/8 Ref" + +#undef SCRYPT_SALSA64_INCLUDED +#define SCRYPT_SALSA64_INCLUDED +#define SCRYPT_SALSA64_BASIC + +static void +salsa64_core_basic(uint64_t state[16]) { + const size_t rounds = 8; + uint64_t v[16], t; + size_t i; + + for (i = 0; i < 16; i++) v[i] = state[i]; + + #define G(a,b,c,d) \ + t = v[a]+v[d]; t = ROTL64(t, 32); v[b] ^= t; \ + t = v[b]+v[a]; t = ROTL64(t, 13); v[c] ^= t; \ + t = v[c]+v[b]; t = ROTL64(t, 39); v[d] ^= t; \ + t = v[d]+v[c]; t = ROTL64(t, 32); v[a] ^= t; \ + + for (i = 0; i < rounds; i += 2) { + G( 0, 4, 8,12); + G( 5, 9,13, 1); + G(10,14, 2, 6); + G(15, 3, 7,11); + G( 0, 1, 2, 3); + G( 5, 6, 7, 4); + G(10,11, 8, 9); + G(15,12,13,14); + } + + for (i = 0; i < 16; i++) state[i] += v[i]; + + #undef G +} + +#endif + diff --git a/deps/scrypt-jane-master/code/scrypt-jane-pbkdf2.h b/deps/scrypt-jane-master/code/scrypt-jane-pbkdf2.h new file mode 100644 index 000000000..711e3d633 --- /dev/null +++ b/deps/scrypt-jane-master/code/scrypt-jane-pbkdf2.h @@ -0,0 +1,112 @@ +typedef struct scrypt_hmac_state_t { + scrypt_hash_state inner, outer; +} scrypt_hmac_state; + + +static void +scrypt_hash(scrypt_hash_digest hash, const uint8_t *m, size_t mlen) { + scrypt_hash_state st; + scrypt_hash_init(&st); + scrypt_hash_update(&st, m, mlen); + scrypt_hash_finish(&st, hash); +} + +/* hmac */ +static void +scrypt_hmac_init(scrypt_hmac_state *st, const uint8_t *key, size_t keylen) { + uint8_t pad[SCRYPT_HASH_BLOCK_SIZE] = {0}; + size_t i; + + scrypt_hash_init(&st->inner); + scrypt_hash_init(&st->outer); + + if (keylen <= SCRYPT_HASH_BLOCK_SIZE) { + /* use the key directly if it's <= blocksize bytes */ + memcpy(pad, key, keylen); + } else { + /* if it's > blocksize bytes, hash it */ + scrypt_hash(pad, key, keylen); + } + + /* inner = (key ^ 0x36) */ + /* h(inner || ...) */ + for (i = 0; i < SCRYPT_HASH_BLOCK_SIZE; i++) + pad[i] ^= 0x36; + scrypt_hash_update(&st->inner, pad, SCRYPT_HASH_BLOCK_SIZE); + + /* outer = (key ^ 0x5c) */ + /* h(outer || ...) */ + for (i = 0; i < SCRYPT_HASH_BLOCK_SIZE; i++) + pad[i] ^= (0x5c ^ 0x36); + scrypt_hash_update(&st->outer, pad, SCRYPT_HASH_BLOCK_SIZE); + + scrypt_ensure_zero(pad, sizeof(pad)); +} + +static void +scrypt_hmac_update(scrypt_hmac_state *st, const uint8_t *m, size_t mlen) { + /* h(inner || m...) */ + scrypt_hash_update(&st->inner, m, mlen); +} + +static void +scrypt_hmac_finish(scrypt_hmac_state *st, scrypt_hash_digest mac) { + /* h(inner || m) */ + scrypt_hash_digest innerhash; + scrypt_hash_finish(&st->inner, innerhash); + + /* h(outer || h(inner || m)) */ + scrypt_hash_update(&st->outer, innerhash, sizeof(innerhash)); + scrypt_hash_finish(&st->outer, mac); + + scrypt_ensure_zero(st, sizeof(*st)); +} + +static void +scrypt_pbkdf2(const uint8_t *password, size_t password_len, const uint8_t *salt, size_t salt_len, uint64_t N, uint8_t *out, size_t bytes) { + scrypt_hmac_state hmac_pw, hmac_pw_salt, work; + scrypt_hash_digest ti, u; + uint8_t be[4]; + uint32_t i, j, blocks; + uint64_t c; + + /* bytes must be <= (0xffffffff - (SCRYPT_HASH_DIGEST_SIZE - 1)), which they will always be under scrypt */ + + /* hmac(password, ...) */ + scrypt_hmac_init(&hmac_pw, password, password_len); + + /* hmac(password, salt...) */ + hmac_pw_salt = hmac_pw; + scrypt_hmac_update(&hmac_pw_salt, salt, salt_len); + + blocks = ((uint32_t)bytes + (SCRYPT_HASH_DIGEST_SIZE - 1)) / SCRYPT_HASH_DIGEST_SIZE; + for (i = 1; i <= blocks; i++) { + /* U1 = hmac(password, salt || be(i)) */ + U32TO8_BE(be, i); + work = hmac_pw_salt; + scrypt_hmac_update(&work, be, 4); + scrypt_hmac_finish(&work, ti); + memcpy(u, ti, sizeof(u)); + + /* T[i] = U1 ^ U2 ^ U3... */ + for (c = 0; c < N - 1; c++) { + /* UX = hmac(password, U{X-1}) */ + work = hmac_pw; + scrypt_hmac_update(&work, u, SCRYPT_HASH_DIGEST_SIZE); + scrypt_hmac_finish(&work, u); + + /* T[i] ^= UX */ + for (j = 0; j < sizeof(u); j++) + ti[j] ^= u[j]; + } + + memcpy(out, ti, (bytes > SCRYPT_HASH_DIGEST_SIZE) ? SCRYPT_HASH_DIGEST_SIZE : bytes); + out += SCRYPT_HASH_DIGEST_SIZE; + bytes -= SCRYPT_HASH_DIGEST_SIZE; + } + + scrypt_ensure_zero(ti, sizeof(ti)); + scrypt_ensure_zero(u, sizeof(u)); + scrypt_ensure_zero(&hmac_pw, sizeof(hmac_pw)); + scrypt_ensure_zero(&hmac_pw_salt, sizeof(hmac_pw_salt)); +} diff --git a/deps/scrypt-jane-master/code/scrypt-jane-portable-x86.h b/deps/scrypt-jane-master/code/scrypt-jane-portable-x86.h new file mode 100644 index 000000000..7c1209087 --- /dev/null +++ b/deps/scrypt-jane-master/code/scrypt-jane-portable-x86.h @@ -0,0 +1,469 @@ +#if defined(CPU_X86) && (defined(COMPILER_MSVC) || defined(COMPILER_GCC)) + #define X86ASM + + /* gcc 2.95 royally screws up stack alignments on variables */ + #if ((defined(COMPILER_MSVC) && (COMPILER_MSVC >= COMPILER_MSVC_VS6PP)) || (defined(COMPILER_GCC) && (COMPILER_GCC >= 30000))) + #define X86ASM_SSE + #define X86ASM_SSE2 + #endif + #if ((defined(COMPILER_MSVC) && (COMPILER_MSVC >= COMPILER_MSVC_VS2005)) || (defined(COMPILER_GCC) && (COMPILER_GCC >= 40102))) + #define X86ASM_SSSE3 + #endif + #if ((defined(COMPILER_MSVC) && (COMPILER_MSVC >= COMPILER_MSVC_VS2010SP1)) || (defined(COMPILER_GCC) && (COMPILER_GCC >= 40400))) + #define X86ASM_AVX + #define X86ASM_XOP + #endif + #if ((defined(COMPILER_MSVC) && (COMPILER_MSVC >= COMPILER_MSVC_VS2012)) || (defined(COMPILER_GCC) && (COMPILER_GCC >= 40700))) + #define X86ASM_AVX2 + #endif +#endif + +#if defined(CPU_X86_64) && defined(COMPILER_GCC) + #define X86_64ASM + #define X86_64ASM_SSE2 + #if (COMPILER_GCC >= 40102) + #define X86_64ASM_SSSE3 + #endif + #if (COMPILER_GCC >= 40400) + #define X86_64ASM_AVX + #define X86_64ASM_XOP + #endif + #if (COMPILER_GCC >= 40700) + #define X86_64ASM_AVX2 + #endif +#endif + +#if defined(COMPILER_MSVC) && (defined(CPU_X86_FORCE_INTRINSICS) || defined(CPU_X86_64)) + #define X86_INTRINSIC + #if defined(CPU_X86_64) || defined(X86ASM_SSE) + #define X86_INTRINSIC_SSE + #endif + #if defined(CPU_X86_64) || defined(X86ASM_SSE2) + #define X86_INTRINSIC_SSE2 + #endif + #if (COMPILER_MSVC >= COMPILER_MSVC_VS2005) + #define X86_INTRINSIC_SSSE3 + #endif + #if (COMPILER_MSVC >= COMPILER_MSVC_VS2010SP1) + #define X86_INTRINSIC_AVX + #define X86_INTRINSIC_XOP + #endif + #if (COMPILER_MSVC >= COMPILER_MSVC_VS2012) + #define X86_INTRINSIC_AVX2 + #endif +#endif + +#if defined(COMPILER_GCC) && defined(CPU_X86_FORCE_INTRINSICS) + #define X86_INTRINSIC + #if defined(__SSE__) + #define X86_INTRINSIC_SSE + #endif + #if defined(__SSE2__) + #define X86_INTRINSIC_SSE2 + #endif + #if defined(__SSSE3__) + #define X86_INTRINSIC_SSSE3 + #endif + #if defined(__AVX__) + #define X86_INTRINSIC_AVX + #endif + #if defined(__XOP__) + #define X86_INTRINSIC_XOP + #endif + #if defined(__AVX2__) + #define X86_INTRINSIC_AVX2 + #endif +#endif + +/* only use simd on windows (or SSE2 on gcc)! */ +#if defined(CPU_X86_FORCE_INTRINSICS) || defined(X86_INTRINSIC) + #if defined(X86_INTRINSIC_SSE) + #include + #include + typedef __m64 qmm; + typedef __m128 xmm; + typedef __m128d xmmd; + #endif + #if defined(X86_INTRINSIC_SSE2) + #include + typedef __m128i xmmi; + #endif + #if defined(X86_INTRINSIC_SSSE3) + #include + #endif + #if defined(X86_INTRINSIC_AVX) + #include + #endif + #if defined(X86_INTRINSIC_XOP) + #if defined(COMPILER_MSVC) + #include + #else + #include + #endif + #endif + #if defined(X86_INTRINSIC_AVX2) + typedef __m256i ymmi; + #endif +#endif + +#if defined(X86_INTRINSIC_SSE2) + typedef union packedelem8_t { + uint8_t u[16]; + xmmi v; + } packedelem8; + + typedef union packedelem32_t { + uint32_t u[4]; + xmmi v; + } packedelem32; + + typedef union packedelem64_t { + uint64_t u[2]; + xmmi v; + } packedelem64; +#else + typedef union packedelem8_t { + uint8_t u[16]; + uint32_t dw[4]; + } packedelem8; + + typedef union packedelem32_t { + uint32_t u[4]; + uint8_t b[16]; + } packedelem32; + + typedef union packedelem64_t { + uint64_t u[2]; + uint8_t b[16]; + } packedelem64; +#endif + +#if defined(X86_INTRINSIC_SSSE3) + static const packedelem8 ALIGN(16) ssse3_rotl16_32bit = {{2,3,0,1,6,7,4,5,10,11,8,9,14,15,12,13}}; + static const packedelem8 ALIGN(16) ssse3_rotl8_32bit = {{3,0,1,2,7,4,5,6,11,8,9,10,15,12,13,14}}; +#endif + +/* + x86 inline asm for gcc/msvc. usage: + + asm_naked_fn_proto(return_type, name) (type parm1, type parm2..) + asm_naked_fn(name) + a1(..) + a2(.., ..) + a3(.., .., ..) + 64bit OR 0 paramters: a1(ret) + 32bit AND n parameters: aret(4n), eg aret(16) for 4 parameters + asm_naked_fn_end(name) +*/ + +#if defined(X86ASM) || defined(X86_64ASM) + +#if defined(COMPILER_MSVC) + #pragma warning(disable : 4731) /* frame pointer modified by inline assembly */ + #define a1(x) __asm {x} + #define a2(x, y) __asm {x, y} + #define a3(x, y, z) __asm {x, y, z} + #define a4(x, y, z, w) __asm {x, y, z, w} + #define aj(x) __asm {x} + #define asm_align8 a1(ALIGN 8) + #define asm_align16 a1(ALIGN 16) + + #define asm_calling_convention STDCALL + #define aret(n) a1(ret n) + #define asm_naked_fn_proto(type, fn) static NAKED type asm_calling_convention fn + #define asm_naked_fn(fn) { + #define asm_naked_fn_end(fn) } +#elif defined(COMPILER_GCC) + #define GNU_AS1(x) #x ";\n" + #define GNU_AS2(x, y) #x ", " #y ";\n" + #define GNU_AS3(x, y, z) #x ", " #y ", " #z ";\n" + #define GNU_AS4(x, y, z, w) #x ", " #y ", " #z ", " #w ";\n" + #define GNU_ASFN(x) "\n_" #x ":\n" #x ":\n" + #define GNU_ASJ(x) ".att_syntax prefix\n" #x "\n.intel_syntax noprefix\n" + + #define a1(x) GNU_AS1(x) + #define a2(x, y) GNU_AS2(x, y) + #define a3(x, y, z) GNU_AS3(x, y, z) + #define a4(x, y, z, w) GNU_AS4(x, y, z, w) + #define aj(x) GNU_ASJ(x) + #define asm_align8 ".p2align 3,,7" + #define asm_align16 ".p2align 4,,15" + + #if defined(OS_WINDOWS) + #define asm_calling_convention CDECL + #define aret(n) a1(ret) + + #if defined(X86_64ASM) + #define asm_naked_fn(fn) ; __asm__ ( \ + ".text\n" \ + asm_align16 GNU_ASFN(fn) \ + "subq $136, %rsp;" \ + "movdqa %xmm6, 0(%rsp);" \ + "movdqa %xmm7, 16(%rsp);" \ + "movdqa %xmm8, 32(%rsp);" \ + "movdqa %xmm9, 48(%rsp);" \ + "movdqa %xmm10, 64(%rsp);" \ + "movdqa %xmm11, 80(%rsp);" \ + "movdqa %xmm12, 96(%rsp);" \ + "movq %rdi, 112(%rsp);" \ + "movq %rsi, 120(%rsp);" \ + "movq %rcx, %rdi;" \ + "movq %rdx, %rsi;" \ + "movq %r8, %rdx;" \ + "movq %r9, %rcx;" \ + "call 1f;" \ + "movdqa 0(%rsp), %xmm6;" \ + "movdqa 16(%rsp), %xmm7;" \ + "movdqa 32(%rsp), %xmm8;" \ + "movdqa 48(%rsp), %xmm9;" \ + "movdqa 64(%rsp), %xmm10;" \ + "movdqa 80(%rsp), %xmm11;" \ + "movdqa 96(%rsp), %xmm12;" \ + "movq 112(%rsp), %rdi;" \ + "movq 120(%rsp), %rsi;" \ + "addq $136, %rsp;" \ + "ret;" \ + ".intel_syntax noprefix;" \ + ".p2align 4,,15;" \ + "1:;" + #else + #define asm_naked_fn(fn) ; __asm__ (".intel_syntax noprefix;\n.text\n" asm_align16 GNU_ASFN(fn) + #endif + #else + #define asm_calling_convention STDCALL + #define aret(n) a1(ret n) + #define asm_naked_fn(fn) ; __asm__ (".intel_syntax noprefix;\n.text\n" asm_align16 GNU_ASFN(fn) + #endif + + #define asm_naked_fn_proto(type, fn) extern type asm_calling_convention fn + #define asm_naked_fn_end(fn) ".att_syntax prefix;\n" ); + + #define asm_gcc() __asm__ __volatile__(".intel_syntax noprefix;\n" + #define asm_gcc_parms() ".att_syntax prefix;" + #define asm_gcc_trashed() __asm__ __volatile__("" ::: + #define asm_gcc_end() ); +#else + need x86 asm +#endif + +#endif /* X86ASM || X86_64ASM */ + + +#if defined(CPU_X86) || defined(CPU_X86_64) + +typedef enum cpu_flags_x86_t { + cpu_mmx = 1 << 0, + cpu_sse = 1 << 1, + cpu_sse2 = 1 << 2, + cpu_sse3 = 1 << 3, + cpu_ssse3 = 1 << 4, + cpu_sse4_1 = 1 << 5, + cpu_sse4_2 = 1 << 6, + cpu_avx = 1 << 7, + cpu_xop = 1 << 8, + cpu_avx2 = 1 << 9 +} cpu_flags_x86; + +typedef enum cpu_vendors_x86_t { + cpu_nobody, + cpu_intel, + cpu_amd +} cpu_vendors_x86; + +typedef struct x86_regs_t { + uint32_t eax, ebx, ecx, edx; +} x86_regs; + +#if defined(X86ASM) +asm_naked_fn_proto(int, has_cpuid)(void) +asm_naked_fn(has_cpuid) + a1(pushfd) + a1(pop eax) + a2(mov ecx, eax) + a2(xor eax, 0x200000) + a1(push eax) + a1(popfd) + a1(pushfd) + a1(pop eax) + a2(xor eax, ecx) + a2(shr eax, 21) + a2(and eax, 1) + a1(push ecx) + a1(popfd) + a1(ret) +asm_naked_fn_end(has_cpuid) +#endif /* X86ASM */ + + +static void NOINLINE +get_cpuid(x86_regs *regs, uint32_t flags) { +#if defined(COMPILER_MSVC) + __cpuid((int *)regs, (int)flags); +#else + #if defined(CPU_X86_64) + #define cpuid_bx rbx + #else + #define cpuid_bx ebx + #endif + + asm_gcc() + a1(push cpuid_bx) + a2(xor ecx, ecx) + a1(cpuid) + a2(mov [%1 + 0], eax) + a2(mov [%1 + 4], ebx) + a2(mov [%1 + 8], ecx) + a2(mov [%1 + 12], edx) + a1(pop cpuid_bx) + asm_gcc_parms() : "+a"(flags) : "S"(regs) : "%ecx", "%edx", "cc" + asm_gcc_end() +#endif +} + +#if defined(X86ASM_AVX) || defined(X86_64ASM_AVX) +static uint64_t NOINLINE +get_xgetbv(uint32_t flags) { +#if defined(COMPILER_MSVC) + return _xgetbv(flags); +#else + uint32_t lo, hi; + asm_gcc() + a1(xgetbv) + asm_gcc_parms() : "+c"(flags), "=a" (lo), "=d" (hi) + asm_gcc_end() + return ((uint64_t)lo | ((uint64_t)hi << 32)); +#endif +} +#endif // AVX support + +#if defined(SCRYPT_TEST_SPEED) +size_t cpu_detect_mask = (size_t)-1; +#endif + +static size_t +detect_cpu(void) { + union { uint8_t s[12]; uint32_t i[3]; } vendor_string; + cpu_vendors_x86 vendor = cpu_nobody; + x86_regs regs; + uint32_t max_level, max_ext_level; + size_t cpu_flags = 0; +#if defined(X86ASM_AVX) || defined(X86_64ASM_AVX) + uint64_t xgetbv_flags; +#endif + +#if defined(CPU_X86) + if (!has_cpuid()) + return cpu_flags; +#endif + + get_cpuid(®s, 0); + max_level = regs.eax; + vendor_string.i[0] = regs.ebx; + vendor_string.i[1] = regs.edx; + vendor_string.i[2] = regs.ecx; + + if (scrypt_verify(vendor_string.s, (const uint8_t *)"GenuineIntel", 12)) + vendor = cpu_intel; + else if (scrypt_verify(vendor_string.s, (const uint8_t *)"AuthenticAMD", 12)) + vendor = cpu_amd; + + if (max_level & 0x00000500) { + /* "Intel P5 pre-B0" */ + cpu_flags |= cpu_mmx; + return cpu_flags; + } + + if (max_level < 1) + return cpu_flags; + + get_cpuid(®s, 1); +#if defined(X86ASM_AVX) || defined(X86_64ASM_AVX) + /* xsave/xrestore */ + if (regs.ecx & (1 << 27)) { + xgetbv_flags = get_xgetbv(0); + if ((regs.ecx & (1 << 28)) && (xgetbv_flags & 0x6)) cpu_flags |= cpu_avx; + } +#endif + if (regs.ecx & (1 << 20)) cpu_flags |= cpu_sse4_2; + if (regs.ecx & (1 << 19)) cpu_flags |= cpu_sse4_2; + if (regs.ecx & (1 << 9)) cpu_flags |= cpu_ssse3; + if (regs.ecx & (1 )) cpu_flags |= cpu_sse3; + if (regs.edx & (1 << 26)) cpu_flags |= cpu_sse2; + if (regs.edx & (1 << 25)) cpu_flags |= cpu_sse; + if (regs.edx & (1 << 23)) cpu_flags |= cpu_mmx; + + if (cpu_flags & cpu_avx) { + if (max_level >= 7) { + get_cpuid(®s, 7); + if (regs.ebx & (1 << 5)) cpu_flags |= cpu_avx2; + } + + get_cpuid(®s, 0x80000000); + max_ext_level = regs.eax; + if (max_ext_level >= 0x80000001) { + get_cpuid(®s, 0x80000001); + if (regs.ecx & (1 << 11)) cpu_flags |= cpu_xop; + } + } + + +#if defined(SCRYPT_TEST_SPEED) + cpu_flags &= cpu_detect_mask; +#endif + + return cpu_flags; +} + +#if defined(SCRYPT_TEST_SPEED) +static const char * +get_top_cpuflag_desc(size_t flag) { + if (flag & cpu_avx2) return "AVX2"; + else if (flag & cpu_xop) return "XOP"; + else if (flag & cpu_avx) return "AVX"; + else if (flag & cpu_sse4_2) return "SSE4.2"; + else if (flag & cpu_sse4_1) return "SSE4.1"; + else if (flag & cpu_ssse3) return "SSSE3"; + else if (flag & cpu_sse2) return "SSE2"; + else if (flag & cpu_sse) return "SSE"; + else if (flag & cpu_mmx) return "MMX"; + else return "Basic"; +} +#endif + +/* enable the highest system-wide option */ +#if defined(SCRYPT_CHOOSE_COMPILETIME) + #if !defined(__AVX2__) + #undef X86_64ASM_AVX2 + #undef X86ASM_AVX2 + #undef X86_INTRINSIC_AVX2 + #endif + #if !defined(__XOP__) + #undef X86_64ASM_XOP + #undef X86ASM_XOP + #undef X86_INTRINSIC_XOP + #endif + #if !defined(__AVX__) + #undef X86_64ASM_AVX + #undef X86ASM_AVX + #undef X86_INTRINSIC_AVX + #endif + #if !defined(__SSSE3__) + #undef X86_64ASM_SSSE3 + #undef X86ASM_SSSE3 + #undef X86_INTRINSIC_SSSE3 + #endif + #if !defined(__SSE2__) + #undef X86_64ASM_SSE2 + #undef X86ASM_SSE2 + #undef X86_INTRINSIC_SSE2 + #endif +#endif + +#else + +static size_t +detect_cpu(void) { + return 0; +} + +#endif /* defined(CPU_X86) || defined(CPU_X86_64) */ \ No newline at end of file diff --git a/deps/scrypt-jane-master/code/scrypt-jane-portable.h b/deps/scrypt-jane-master/code/scrypt-jane-portable.h new file mode 100644 index 000000000..29095a10f --- /dev/null +++ b/deps/scrypt-jane-master/code/scrypt-jane-portable.h @@ -0,0 +1,307 @@ +/* determine os */ +#if defined(_WIN32) || defined(_WIN64) || defined(__TOS_WIN__) || defined(__WINDOWS__) + #include + #include + #define OS_WINDOWS +#elif defined(sun) || defined(__sun) || defined(__SVR4) || defined(__svr4__) + #include + #include + #include + + #define OS_SOLARIS +#else + #include + #include + #include /* need this to define BSD */ + #include + #include + + #define OS_NIX + #if defined(__linux__) + #include + #define OS_LINUX + #elif defined(BSD) + #define OS_BSD + + #if defined(MACOS_X) || (defined(__APPLE__) & defined(__MACH__)) + #define OS_OSX + #elif defined(macintosh) || defined(Macintosh) + #define OS_MAC + #elif defined(__OpenBSD__) + #define OS_OPENBSD + #endif + #endif +#endif + + +/* determine compiler */ +#if defined(_MSC_VER) + #define COMPILER_MSVC_VS6 120000000 + #define COMPILER_MSVC_VS6PP 121000000 + #define COMPILER_MSVC_VS2002 130000000 + #define COMPILER_MSVC_VS2003 131000000 + #define COMPILER_MSVC_VS2005 140050727 + #define COMPILER_MSVC_VS2008 150000000 + #define COMPILER_MSVC_VS2008SP1 150030729 + #define COMPILER_MSVC_VS2010 160000000 + #define COMPILER_MSVC_VS2010SP1 160040219 + #define COMPILER_MSVC_VS2012RC 170000000 + #define COMPILER_MSVC_VS2012 170050727 + + #if _MSC_FULL_VER > 100000000 + #define COMPILER_MSVC (_MSC_FULL_VER) + #else + #define COMPILER_MSVC (_MSC_FULL_VER * 10) + #endif + + #if ((_MSC_VER == 1200) && defined(_mm_free)) + #undef COMPILER_MSVC + #define COMPILER_MSVC COMPILER_MSVC_VS6PP + #endif + + #pragma warning(disable : 4127) /* conditional expression is constant */ + #pragma warning(disable : 4100) /* unreferenced formal parameter */ + + #define _CRT_SECURE_NO_WARNINGS + #include + #include /* _rotl */ + #include + + typedef unsigned char uint8_t; + typedef unsigned short uint16_t; + typedef unsigned int uint32_t; + typedef signed int int32_t; + typedef unsigned __int64 uint64_t; + typedef signed __int64 int64_t; + + #define ROTL32(a,b) _rotl(a,b) + #define ROTR32(a,b) _rotr(a,b) + #define ROTL64(a,b) _rotl64(a,b) + #define ROTR64(a,b) _rotr64(a,b) + #undef NOINLINE + #define NOINLINE __declspec(noinline) + #undef NORETURN + #define NORETURN + #undef INLINE + #define INLINE __forceinline + #undef FASTCALL + #define FASTCALL __fastcall + #undef CDECL + #define CDECL __cdecl + #undef STDCALL + #define STDCALL __stdcall + #undef NAKED + #define NAKED __declspec(naked) + #define JANE_ALIGN(n) __declspec(align(n)) +#endif +#if defined(__ICC) + #define COMPILER_INTEL +#endif +#if defined(__GNUC__) + #if (__GNUC__ >= 3) + #define COMPILER_GCC_PATCHLEVEL __GNUC_PATCHLEVEL__ + #else + #define COMPILER_GCC_PATCHLEVEL 0 + #endif + #define COMPILER_GCC (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + COMPILER_GCC_PATCHLEVEL) + #define ROTL32(a,b) (((a) << (b)) | ((a) >> (32 - b))) + #define ROTR32(a,b) (((a) >> (b)) | ((a) << (32 - b))) + #define ROTL64(a,b) (((a) << (b)) | ((a) >> (64 - b))) + #define ROTR64(a,b) (((a) >> (b)) | ((a) << (64 - b))) + #undef NOINLINE + #if (COMPILER_GCC >= 30000) + #define NOINLINE __attribute__((noinline)) + #else + #define NOINLINE + #endif + #undef NORETURN + #if (COMPILER_GCC >= 30000) + #define NORETURN __attribute__((noreturn)) + #else + #define NORETURN + #endif + #undef INLINE + #if (COMPILER_GCC >= 30000) + #define INLINE __attribute__((always_inline)) + #else + #define INLINE inline + #endif + #undef FASTCALL + #if (COMPILER_GCC >= 30400) + #define FASTCALL __attribute__((fastcall)) + #else + #define FASTCALL + #endif + #undef CDECL + #define CDECL __attribute__((cdecl)) + #undef STDCALL + #define STDCALL __attribute__((stdcall)) + #define JANE_ALIGN(n) __attribute__((aligned(n))) + #include +#endif +#if defined(__MINGW32__) || defined(__MINGW64__) + #define COMPILER_MINGW +#endif +#if defined(__PATHCC__) + #define COMPILER_PATHCC +#endif + +#define OPTIONAL_INLINE +#if defined(OPTIONAL_INLINE) + #undef OPTIONAL_INLINE + #define OPTIONAL_INLINE INLINE +#else + #define OPTIONAL_INLINE +#endif + +#define CRYPTO_FN NOINLINE STDCALL + +/* determine cpu */ +#if defined(__amd64__) || defined(__amd64) || defined(__x86_64__ ) || defined(_M_X64) + #define CPU_X86_64 +#elif defined(__i586__) || defined(__i686__) || (defined(_M_IX86) && (_M_IX86 >= 500)) + #define CPU_X86 500 +#elif defined(__i486__) || (defined(_M_IX86) && (_M_IX86 >= 400)) + #define CPU_X86 400 +#elif defined(__i386__) || (defined(_M_IX86) && (_M_IX86 >= 300)) || defined(__X86__) || defined(_X86_) || defined(__I86__) + #define CPU_X86 300 +#elif defined(__ia64__) || defined(_IA64) || defined(__IA64__) || defined(_M_IA64) || defined(__ia64) + #define CPU_IA64 +#endif + +#if defined(__sparc__) || defined(__sparc) || defined(__sparcv9) + #define CPU_SPARC + #if defined(__sparcv9) + #define CPU_SPARC64 + #endif +#endif + +#if defined(CPU_X86_64) || defined(CPU_IA64) || defined(CPU_SPARC64) || defined(__64BIT__) || defined(__LP64__) || defined(_LP64) || (defined(_MIPS_SZLONG) && (_MIPS_SZLONG == 64)) + #define CPU_64BITS + #undef FASTCALL + #define FASTCALL + #undef CDECL + #define CDECL + #undef STDCALL + #define STDCALL +#endif + +#if defined(powerpc) || defined(__PPC__) || defined(__ppc__) || defined(_ARCH_PPC) || defined(__powerpc__) || defined(__powerpc) || defined(POWERPC) || defined(_M_PPC) + #define CPU_PPC + #if defined(_ARCH_PWR7) + #define CPU_POWER7 + #elif defined(__64BIT__) + #define CPU_PPC64 + #else + #define CPU_PPC32 + #endif +#endif + +#if defined(__hppa__) || defined(__hppa) + #define CPU_HPPA +#endif + +#if defined(__alpha__) || defined(__alpha) || defined(_M_ALPHA) + #define CPU_ALPHA +#endif + +/* endian */ + +#if ((defined(__BYTE_ORDER) && defined(__LITTLE_ENDIAN) && (__BYTE_ORDER == __LITTLE_ENDIAN)) || \ + (defined(BYTE_ORDER) && defined(LITTLE_ENDIAN) && (BYTE_ORDER == LITTLE_ENDIAN)) || \ + (defined(CPU_X86) || defined(CPU_X86_64)) || \ + (defined(vax) || defined(MIPSEL) || defined(_MIPSEL))) +#define CPU_LE +#elif ((defined(__BYTE_ORDER) && defined(__BIG_ENDIAN) && (__BYTE_ORDER == __BIG_ENDIAN)) || \ + (defined(BYTE_ORDER) && defined(BIG_ENDIAN) && (BYTE_ORDER == BIG_ENDIAN)) || \ + (defined(CPU_SPARC) || defined(CPU_PPC) || defined(mc68000) || defined(sel)) || defined(_MIPSEB)) +#define CPU_BE +#else + /* unknown endian! */ +#endif + + +#define U8TO32_BE(p) \ + (((uint32_t)((p)[0]) << 24) | ((uint32_t)((p)[1]) << 16) | \ + ((uint32_t)((p)[2]) << 8) | ((uint32_t)((p)[3]) )) + +#define U8TO32_LE(p) \ + (((uint32_t)((p)[0]) ) | ((uint32_t)((p)[1]) << 8) | \ + ((uint32_t)((p)[2]) << 16) | ((uint32_t)((p)[3]) << 24)) + +#define U32TO8_BE(p, v) \ + (p)[0] = (uint8_t)((v) >> 24); (p)[1] = (uint8_t)((v) >> 16); \ + (p)[2] = (uint8_t)((v) >> 8); (p)[3] = (uint8_t)((v) ); + +#define U32TO8_LE(p, v) \ + (p)[0] = (uint8_t)((v) ); (p)[1] = (uint8_t)((v) >> 8); \ + (p)[2] = (uint8_t)((v) >> 16); (p)[3] = (uint8_t)((v) >> 24); + +#define U8TO64_BE(p) \ + (((uint64_t)U8TO32_BE(p) << 32) | (uint64_t)U8TO32_BE((p) + 4)) + +#define U8TO64_LE(p) \ + (((uint64_t)U8TO32_LE(p)) | ((uint64_t)U8TO32_LE((p) + 4) << 32)) + +#define U64TO8_BE(p, v) \ + U32TO8_BE((p), (uint32_t)((v) >> 32)); \ + U32TO8_BE((p) + 4, (uint32_t)((v) )); + +#define U64TO8_LE(p, v) \ + U32TO8_LE((p), (uint32_t)((v) )); \ + U32TO8_LE((p) + 4, (uint32_t)((v) >> 32)); + +#define U32_SWAP(v) { \ + (v) = (((v) << 8) & 0xFF00FF00 ) | (((v) >> 8) & 0xFF00FF ); \ + (v) = ((v) << 16) | ((v) >> 16); \ +} + +#define U64_SWAP(v) { \ + (v) = (((v) << 8) & 0xFF00FF00FF00FF00ull ) | (((v) >> 8) & 0x00FF00FF00FF00FFull ); \ + (v) = (((v) << 16) & 0xFFFF0000FFFF0000ull ) | (((v) >> 16) & 0x0000FFFF0000FFFFull ); \ + (v) = ((v) << 32) | ((v) >> 32); \ +} + +static int +scrypt_verify(const uint8_t *x, const uint8_t *y, size_t len) { + uint32_t differentbits = 0; + while (len--) + differentbits |= (*x++ ^ *y++); + return (1 & ((differentbits - 1) >> 8)); +} + +static void +scrypt_ensure_zero(void *p, size_t len) { +#if ((defined(CPU_X86) || defined(CPU_X86_64)) && defined(COMPILER_MSVC)) + __stosb((unsigned char *)p, 0, len); +#elif (defined(CPU_X86) && defined(COMPILER_GCC)) + __asm__ __volatile__( + "pushl %%edi;\n" + "pushl %%ecx;\n" + "rep stosb;\n" + "popl %%ecx;\n" + "popl %%edi;\n" + :: "a"(0), "D"(p), "c"(len) : "cc", "memory" + ); +#elif (defined(CPU_X86_64) && defined(COMPILER_GCC)) + __asm__ __volatile__( + "pushq %%rdi;\n" + "pushq %%rcx;\n" + "rep stosb;\n" + "popq %%rcx;\n" + "popq %%rdi;\n" + :: "a"(0), "D"(p), "c"(len) : "cc", "memory" + ); +#else + volatile uint8_t *b = (volatile uint8_t *)p; + size_t i; + for (i = 0; i < len; i++) + b[i] = 0; +#endif +} + +#include "scrypt-jane-portable-x86.h" + +#if !defined(asm_calling_convention) +#define asm_calling_convention +#endif diff --git a/deps/scrypt-jane-master/code/scrypt-jane-romix-basic.h b/deps/scrypt-jane-master/code/scrypt-jane-romix-basic.h new file mode 100644 index 000000000..16b59095d --- /dev/null +++ b/deps/scrypt-jane-master/code/scrypt-jane-romix-basic.h @@ -0,0 +1,74 @@ +#if !defined(SCRYPT_CHOOSE_COMPILETIME) +/* function type returned by scrypt_getROMix, used with cpu detection */ +typedef void (FASTCALL *scrypt_ROMixfn)(scrypt_mix_word_t *X/*[chunkWords]*/, scrypt_mix_word_t *Y/*[chunkWords]*/, scrypt_mix_word_t *V/*[chunkWords * N]*/, uint32_t N, uint32_t r); +#endif + +/* romix pre/post nop function */ +static void asm_calling_convention +scrypt_romix_nop(scrypt_mix_word_t *blocks, size_t nblocks) { + (void)blocks; (void)nblocks; +} + +/* romix pre/post endian conversion function */ +static void asm_calling_convention +scrypt_romix_convert_endian(scrypt_mix_word_t *blocks, size_t nblocks) { +#if !defined(CPU_LE) + static const union { uint8_t b[2]; uint16_t w; } endian_test = {{1,0}}; + size_t i; + if (endian_test.w == 0x100) { + nblocks *= SCRYPT_BLOCK_WORDS; + for (i = 0; i < nblocks; i++) { + SCRYPT_WORD_ENDIAN_SWAP(blocks[i]); + } + } +#else + (void)blocks; (void)nblocks; +#endif +} + +/* chunkmix test function */ +typedef void (asm_calling_convention *chunkmixfn)(scrypt_mix_word_t *Bout/*[chunkWords]*/, scrypt_mix_word_t *Bin/*[chunkWords]*/, scrypt_mix_word_t *Bxor/*[chunkWords]*/, uint32_t r); +typedef void (asm_calling_convention *blockfixfn)(scrypt_mix_word_t *blocks, size_t nblocks); + +static int +scrypt_test_mix_instance(chunkmixfn mixfn, blockfixfn prefn, blockfixfn postfn, const uint8_t expected[16]) { + /* r = 2, (2 * r) = 4 blocks in a chunk, 4 * SCRYPT_BLOCK_WORDS total */ + const uint32_t r = 2, blocks = 2 * r, words = blocks * SCRYPT_BLOCK_WORDS; +#if (defined(X86ASM_AVX2) || defined(X86_64ASM_AVX2) || defined(X86_INTRINSIC_AVX2)) + scrypt_mix_word_t JANE_ALIGN(32) chunk[2][4 * SCRYPT_BLOCK_WORDS], v; +#else + scrypt_mix_word_t JANE_ALIGN(16) chunk[2][4 * SCRYPT_BLOCK_WORDS], v; +#endif + uint8_t final[16]; + size_t i; + + for (i = 0; i < words; i++) { + v = (scrypt_mix_word_t)i; + v = (v << 8) | v; + v = (v << 16) | v; + chunk[0][i] = v; + } + + prefn(chunk[0], blocks); + mixfn(chunk[1], chunk[0], NULL, r); + postfn(chunk[1], blocks); + + /* grab the last 16 bytes of the final block */ + for (i = 0; i < 16; i += sizeof(scrypt_mix_word_t)) { + SCRYPT_WORDTO8_LE(final + i, chunk[1][words - (16 / sizeof(scrypt_mix_word_t)) + (i / sizeof(scrypt_mix_word_t))]); + } + + return scrypt_verify(expected, final, 16); +} + +/* returns a pointer to item i, where item is len scrypt_mix_word_t's long */ +static scrypt_mix_word_t * +scrypt_item(scrypt_mix_word_t *base, scrypt_mix_word_t i, scrypt_mix_word_t len) { + return base + (i * len); +} + +/* returns a pointer to block i */ +static scrypt_mix_word_t * +scrypt_block(scrypt_mix_word_t *base, scrypt_mix_word_t i) { + return base + (i * SCRYPT_BLOCK_WORDS); +} diff --git a/deps/scrypt-jane-master/code/scrypt-jane-romix-template.h b/deps/scrypt-jane-master/code/scrypt-jane-romix-template.h new file mode 100644 index 000000000..77c0114f4 --- /dev/null +++ b/deps/scrypt-jane-master/code/scrypt-jane-romix-template.h @@ -0,0 +1,122 @@ +#if !defined(SCRYPT_CHOOSE_COMPILETIME) || !defined(SCRYPT_HAVE_ROMIX) + +#if defined(SCRYPT_CHOOSE_COMPILETIME) +#undef SCRYPT_ROMIX_FN +#define SCRYPT_ROMIX_FN scrypt_ROMix +#endif + +#undef SCRYPT_HAVE_ROMIX +#define SCRYPT_HAVE_ROMIX + +#if !defined(SCRYPT_CHUNKMIX_FN) + +#define SCRYPT_CHUNKMIX_FN scrypt_ChunkMix_basic + +/* + Bout = ChunkMix(Bin) + + 2*r: number of blocks in the chunk +*/ +static void asm_calling_convention +SCRYPT_CHUNKMIX_FN(scrypt_mix_word_t *Bout/*[chunkWords]*/, scrypt_mix_word_t *Bin/*[chunkWords]*/, scrypt_mix_word_t *Bxor/*[chunkWords]*/, uint32_t r) { +#if (defined(X86ASM_AVX2) || defined(X86_64ASM_AVX2) || defined(X86_INTRINSIC_AVX2)) + scrypt_mix_word_t JANE_ALIGN(32) X[SCRYPT_BLOCK_WORDS], *block; +#else + scrypt_mix_word_t JANE_ALIGN(16) X[SCRYPT_BLOCK_WORDS], *block; +#endif + uint32_t i, j, blocksPerChunk = r * 2, half = 0; + + /* 1: X = B_{2r - 1} */ + block = scrypt_block(Bin, blocksPerChunk - 1); + for (i = 0; i < SCRYPT_BLOCK_WORDS; i++) + X[i] = block[i]; + + if (Bxor) { + block = scrypt_block(Bxor, blocksPerChunk - 1); + for (i = 0; i < SCRYPT_BLOCK_WORDS; i++) + X[i] ^= block[i]; + } + + /* 2: for i = 0 to 2r - 1 do */ + for (i = 0; i < blocksPerChunk; i++, half ^= r) { + /* 3: X = H(X ^ B_i) */ + block = scrypt_block(Bin, i); + for (j = 0; j < SCRYPT_BLOCK_WORDS; j++) + X[j] ^= block[j]; + + if (Bxor) { + block = scrypt_block(Bxor, i); + for (j = 0; j < SCRYPT_BLOCK_WORDS; j++) + X[j] ^= block[j]; + } + SCRYPT_MIX_FN(X); + + /* 4: Y_i = X */ + /* 6: B'[0..r-1] = Y_even */ + /* 6: B'[r..2r-1] = Y_odd */ + block = scrypt_block(Bout, (i / 2) + half); + for (j = 0; j < SCRYPT_BLOCK_WORDS; j++) + block[j] = X[j]; + } +} +#endif + +/* + X = ROMix(X) + + X: chunk to mix + Y: scratch chunk + N: number of rounds + V[N]: array of chunks to randomly index in to + 2*r: number of blocks in a chunk +*/ + +static void NOINLINE FASTCALL +SCRYPT_ROMIX_FN(scrypt_mix_word_t *X/*[chunkWords]*/, scrypt_mix_word_t *Y/*[chunkWords]*/, scrypt_mix_word_t *V/*[N * chunkWords]*/, uint32_t N, uint32_t r) { + uint32_t i, j, chunkWords = (uint32_t)(SCRYPT_BLOCK_WORDS * r * 2); + scrypt_mix_word_t *block = V; + + SCRYPT_ROMIX_TANGLE_FN(X, r * 2); + + /* 1: X = B */ + /* implicit */ + + /* 2: for i = 0 to N - 1 do */ + memcpy(block, X, chunkWords * sizeof(scrypt_mix_word_t)); + for (i = 0; i < N - 1; i++, block += chunkWords) { + /* 3: V_i = X */ + /* 4: X = H(X) */ + SCRYPT_CHUNKMIX_FN(block + chunkWords, block, NULL, r); + } + SCRYPT_CHUNKMIX_FN(X, block, NULL, r); + + /* 6: for i = 0 to N - 1 do */ + for (i = 0; i < N; i += 2) { + /* 7: j = Integerify(X) % N */ + j = X[chunkWords - SCRYPT_BLOCK_WORDS] & (N - 1); + + /* 8: X = H(Y ^ V_j) */ + SCRYPT_CHUNKMIX_FN(Y, X, scrypt_item(V, j, chunkWords), r); + + /* 7: j = Integerify(Y) % N */ + j = Y[chunkWords - SCRYPT_BLOCK_WORDS] & (N - 1); + + /* 8: X = H(Y ^ V_j) */ + SCRYPT_CHUNKMIX_FN(X, Y, scrypt_item(V, j, chunkWords), r); + } + + /* 10: B' = X */ + /* implicit */ + + SCRYPT_ROMIX_UNTANGLE_FN(X, r * 2); +} + +#endif /* !defined(SCRYPT_CHOOSE_COMPILETIME) || !defined(SCRYPT_HAVE_ROMIX) */ + + +#undef SCRYPT_CHUNKMIX_FN +#undef SCRYPT_ROMIX_FN +#undef SCRYPT_MIX_FN +#undef SCRYPT_ROMIX_TANGLE_FN +#undef SCRYPT_ROMIX_UNTANGLE_FN + diff --git a/deps/scrypt-jane-master/code/scrypt-jane-romix.h b/deps/scrypt-jane-master/code/scrypt-jane-romix.h new file mode 100644 index 000000000..84cf61201 --- /dev/null +++ b/deps/scrypt-jane-master/code/scrypt-jane-romix.h @@ -0,0 +1,27 @@ +#if defined(SCRYPT_CHACHA) +#include "scrypt-jane-chacha.h" +#elif defined(SCRYPT_SALSA) +#include "scrypt-jane-salsa.h" +#elif defined(SCRYPT_SALSA64) +#include "scrypt-jane-salsa64.h" +#else + #define SCRYPT_MIX_BASE "ERROR" + typedef uint32_t scrypt_mix_word_t; + #define SCRYPT_WORDTO8_LE U32TO8_LE + #define SCRYPT_WORD_ENDIAN_SWAP U32_SWAP + #define SCRYPT_BLOCK_BYTES 64 + #define SCRYPT_BLOCK_WORDS (SCRYPT_BLOCK_BYTES / sizeof(scrypt_mix_word_t)) + #if !defined(SCRYPT_CHOOSE_COMPILETIME) + static void FASTCALL scrypt_ROMix_error(scrypt_mix_word_t *X/*[chunkWords]*/, scrypt_mix_word_t *Y/*[chunkWords]*/, scrypt_mix_word_t *V/*[chunkWords * N]*/, uint32_t N, uint32_t r) {} + static scrypt_ROMixfn scrypt_getROMix(void) { return scrypt_ROMix_error; } + #else + static void FASTCALL scrypt_ROMix(scrypt_mix_word_t *X, scrypt_mix_word_t *Y, scrypt_mix_word_t *V, uint32_t N, uint32_t r) {} + #endif + static int scrypt_test_mix(void) { return 0; } + #error must define a mix function! +#endif + +#if !defined(SCRYPT_CHOOSE_COMPILETIME) +#undef SCRYPT_MIX +#define SCRYPT_MIX SCRYPT_MIX_BASE +#endif diff --git a/deps/scrypt-jane-master/code/scrypt-jane-salsa.h b/deps/scrypt-jane-master/code/scrypt-jane-salsa.h new file mode 100644 index 000000000..df0a3e0c0 --- /dev/null +++ b/deps/scrypt-jane-master/code/scrypt-jane-salsa.h @@ -0,0 +1,134 @@ +#define SCRYPT_MIX_BASE "Salsa20/8" + +typedef uint32_t scrypt_mix_word_t; + +#define SCRYPT_WORDTO8_LE U32TO8_LE +#define SCRYPT_WORD_ENDIAN_SWAP U32_SWAP + +#define SCRYPT_BLOCK_BYTES 64 +#define SCRYPT_BLOCK_WORDS (SCRYPT_BLOCK_BYTES / sizeof(scrypt_mix_word_t)) + +/* must have these here in case block bytes is ever != 64 */ +#include "scrypt-jane-romix-basic.h" + +#include "scrypt-jane-mix_salsa-xop.h" +#include "scrypt-jane-mix_salsa-avx.h" +#include "scrypt-jane-mix_salsa-sse2.h" +#include "scrypt-jane-mix_salsa.h" + +#if defined(SCRYPT_SALSA_XOP) + #define SCRYPT_CHUNKMIX_FN scrypt_ChunkMix_xop + #define SCRYPT_ROMIX_FN scrypt_ROMix_xop + #define SCRYPT_ROMIX_TANGLE_FN salsa_core_tangle_sse2 + #define SCRYPT_ROMIX_UNTANGLE_FN salsa_core_tangle_sse2 + #include "scrypt-jane-romix-template.h" +#endif + +#if defined(SCRYPT_SALSA_AVX) + #define SCRYPT_CHUNKMIX_FN scrypt_ChunkMix_avx + #define SCRYPT_ROMIX_FN scrypt_ROMix_avx + #define SCRYPT_ROMIX_TANGLE_FN salsa_core_tangle_sse2 + #define SCRYPT_ROMIX_UNTANGLE_FN salsa_core_tangle_sse2 + #include "scrypt-jane-romix-template.h" +#endif + +#if defined(SCRYPT_SALSA_SSE2) + #define SCRYPT_CHUNKMIX_FN scrypt_ChunkMix_sse2 + #define SCRYPT_ROMIX_FN scrypt_ROMix_sse2 + #define SCRYPT_MIX_FN salsa_core_sse2 + #define SCRYPT_ROMIX_TANGLE_FN salsa_core_tangle_sse2 + #define SCRYPT_ROMIX_UNTANGLE_FN salsa_core_tangle_sse2 + #include "scrypt-jane-romix-template.h" +#endif + +/* cpu agnostic */ +#define SCRYPT_ROMIX_FN scrypt_ROMix_basic +#define SCRYPT_MIX_FN salsa_core_basic +#define SCRYPT_ROMIX_TANGLE_FN scrypt_romix_convert_endian +#define SCRYPT_ROMIX_UNTANGLE_FN scrypt_romix_convert_endian +#include "scrypt-jane-romix-template.h" + +#if !defined(SCRYPT_CHOOSE_COMPILETIME) +static scrypt_ROMixfn +scrypt_getROMix(void) { + size_t cpuflags = detect_cpu(); + +#if defined(SCRYPT_SALSA_XOP) + if (cpuflags & cpu_xop) + return scrypt_ROMix_xop; + else +#endif + +#if defined(SCRYPT_SALSA_AVX) + if (cpuflags & cpu_avx) + return scrypt_ROMix_avx; + else +#endif + +#if defined(SCRYPT_SALSA_SSE2) + if (cpuflags & cpu_sse2) + return scrypt_ROMix_sse2; + else +#endif + + return scrypt_ROMix_basic; +} +#endif + + +#if defined(SCRYPT_TEST_SPEED) +static size_t +available_implementations(void) { + size_t cpuflags = detect_cpu(); + size_t flags = 0; + +#if defined(SCRYPT_SALSA_XOP) + if (cpuflags & cpu_xop) + flags |= cpu_xop; +#endif + +#if defined(SCRYPT_SALSA_AVX) + if (cpuflags & cpu_avx) + flags |= cpu_avx; +#endif + +#if defined(SCRYPT_SALSA_SSE2) + if (cpuflags & cpu_sse2) + flags |= cpu_sse2; +#endif + + return flags; +} +#endif + + +static int +scrypt_test_mix(void) { + static const uint8_t expected[16] = { + 0x41,0x1f,0x2e,0xa3,0xab,0xa3,0x1a,0x34,0x87,0x1d,0x8a,0x1c,0x76,0xa0,0x27,0x66, + }; + + int ret = 1; + size_t cpuflags = detect_cpu(); + +#if defined(SCRYPT_SALSA_XOP) + if (cpuflags & cpu_xop) + ret &= scrypt_test_mix_instance(scrypt_ChunkMix_xop, salsa_core_tangle_sse2, salsa_core_tangle_sse2, expected); +#endif + +#if defined(SCRYPT_SALSA_AVX) + if (cpuflags & cpu_avx) + ret &= scrypt_test_mix_instance(scrypt_ChunkMix_avx, salsa_core_tangle_sse2, salsa_core_tangle_sse2, expected); +#endif + +#if defined(SCRYPT_SALSA_SSE2) + if (cpuflags & cpu_sse2) + ret &= scrypt_test_mix_instance(scrypt_ChunkMix_sse2, salsa_core_tangle_sse2, salsa_core_tangle_sse2, expected); +#endif + +#if defined(SCRYPT_SALSA_BASIC) + ret &= scrypt_test_mix_instance(scrypt_ChunkMix_basic, scrypt_romix_convert_endian, scrypt_romix_convert_endian, expected); +#endif + + return ret; +} diff --git a/deps/scrypt-jane-master/code/scrypt-jane-salsa64.h b/deps/scrypt-jane-master/code/scrypt-jane-salsa64.h new file mode 100644 index 000000000..96b781360 --- /dev/null +++ b/deps/scrypt-jane-master/code/scrypt-jane-salsa64.h @@ -0,0 +1,183 @@ +#define SCRYPT_MIX_BASE "Salsa64/8" + +typedef uint64_t scrypt_mix_word_t; + +#define SCRYPT_WORDTO8_LE U64TO8_LE +#define SCRYPT_WORD_ENDIAN_SWAP U64_SWAP + +#define SCRYPT_BLOCK_BYTES 128 +#define SCRYPT_BLOCK_WORDS (SCRYPT_BLOCK_BYTES / sizeof(scrypt_mix_word_t)) + +/* must have these here in case block bytes is ever != 64 */ +#include "scrypt-jane-romix-basic.h" + +#include "scrypt-jane-mix_salsa64-avx2.h" +#include "scrypt-jane-mix_salsa64-xop.h" +#include "scrypt-jane-mix_salsa64-avx.h" +#include "scrypt-jane-mix_salsa64-ssse3.h" +#include "scrypt-jane-mix_salsa64-sse2.h" +#include "scrypt-jane-mix_salsa64.h" + +#if defined(SCRYPT_SALSA64_AVX2) + #define SCRYPT_CHUNKMIX_FN scrypt_ChunkMix_avx2 + #define SCRYPT_ROMIX_FN scrypt_ROMix_avx2 + #define SCRYPT_ROMIX_TANGLE_FN salsa64_core_tangle_sse2 + #define SCRYPT_ROMIX_UNTANGLE_FN salsa64_core_tangle_sse2 + #include "scrypt-jane-romix-template.h" +#endif + +#if defined(SCRYPT_SALSA64_XOP) + #define SCRYPT_CHUNKMIX_FN scrypt_ChunkMix_xop + #define SCRYPT_ROMIX_FN scrypt_ROMix_xop + #define SCRYPT_ROMIX_TANGLE_FN salsa64_core_tangle_sse2 + #define SCRYPT_ROMIX_UNTANGLE_FN salsa64_core_tangle_sse2 + #include "scrypt-jane-romix-template.h" +#endif + +#if defined(SCRYPT_SALSA64_AVX) + #define SCRYPT_CHUNKMIX_FN scrypt_ChunkMix_avx + #define SCRYPT_ROMIX_FN scrypt_ROMix_avx + #define SCRYPT_ROMIX_TANGLE_FN salsa64_core_tangle_sse2 + #define SCRYPT_ROMIX_UNTANGLE_FN salsa64_core_tangle_sse2 + #include "scrypt-jane-romix-template.h" +#endif + +#if defined(SCRYPT_SALSA64_SSSE3) + #define SCRYPT_CHUNKMIX_FN scrypt_ChunkMix_ssse3 + #define SCRYPT_ROMIX_FN scrypt_ROMix_ssse3 + #define SCRYPT_ROMIX_TANGLE_FN salsa64_core_tangle_sse2 + #define SCRYPT_ROMIX_UNTANGLE_FN salsa64_core_tangle_sse2 + #include "scrypt-jane-romix-template.h" +#endif + +#if defined(SCRYPT_SALSA64_SSE2) + #define SCRYPT_CHUNKMIX_FN scrypt_ChunkMix_sse2 + #define SCRYPT_ROMIX_FN scrypt_ROMix_sse2 + #define SCRYPT_ROMIX_TANGLE_FN salsa64_core_tangle_sse2 + #define SCRYPT_ROMIX_UNTANGLE_FN salsa64_core_tangle_sse2 + #include "scrypt-jane-romix-template.h" +#endif + +/* cpu agnostic */ +#define SCRYPT_ROMIX_FN scrypt_ROMix_basic +#define SCRYPT_MIX_FN salsa64_core_basic +#define SCRYPT_ROMIX_TANGLE_FN scrypt_romix_convert_endian +#define SCRYPT_ROMIX_UNTANGLE_FN scrypt_romix_convert_endian +#include "scrypt-jane-romix-template.h" + +#if !defined(SCRYPT_CHOOSE_COMPILETIME) +static scrypt_ROMixfn +scrypt_getROMix(void) { + size_t cpuflags = detect_cpu(); + +#if defined(SCRYPT_SALSA64_AVX2) + if (cpuflags & cpu_avx2) + return scrypt_ROMix_avx2; + else +#endif + +#if defined(SCRYPT_SALSA64_XOP) + if (cpuflags & cpu_xop) + return scrypt_ROMix_xop; + else +#endif + +#if defined(SCRYPT_SALSA64_AVX) + if (cpuflags & cpu_avx) + return scrypt_ROMix_avx; + else +#endif + +#if defined(SCRYPT_SALSA64_SSSE3) + if (cpuflags & cpu_ssse3) + return scrypt_ROMix_ssse3; + else +#endif + +#if defined(SCRYPT_SALSA64_SSE2) + if (cpuflags & cpu_sse2) + return scrypt_ROMix_sse2; + else +#endif + + return scrypt_ROMix_basic; +} +#endif + + +#if defined(SCRYPT_TEST_SPEED) +static size_t +available_implementations(void) { + size_t cpuflags = detect_cpu(); + size_t flags = 0; + +#if defined(SCRYPT_SALSA64_AVX2) + if (cpuflags & cpu_avx2) + flags |= cpu_avx2; +#endif + +#if defined(SCRYPT_SALSA64_XOP) + if (cpuflags & cpu_xop) + flags |= cpu_xop; +#endif + +#if defined(SCRYPT_SALSA64_AVX) + if (cpuflags & cpu_avx) + flags |= cpu_avx; +#endif + +#if defined(SCRYPT_SALSA64_SSSE3) + if (cpuflags & cpu_ssse3) + flags |= cpu_ssse3; +#endif + +#if defined(SCRYPT_SALSA64_SSE2) + if (cpuflags & cpu_sse2) + flags |= cpu_sse2; +#endif + + return flags; +} +#endif + +static int +scrypt_test_mix(void) { + static const uint8_t expected[16] = { + 0xf8,0x92,0x9b,0xf8,0xcc,0x1d,0xce,0x2e,0x13,0x82,0xac,0x96,0xb2,0x6c,0xee,0x2c, + }; + + int ret = 1; + size_t cpuflags = detect_cpu(); + +#if defined(SCRYPT_SALSA64_AVX2) + if (cpuflags & cpu_avx2) + ret &= scrypt_test_mix_instance(scrypt_ChunkMix_avx2, salsa64_core_tangle_sse2, salsa64_core_tangle_sse2, expected); +#endif + +#if defined(SCRYPT_SALSA64_XOP) + if (cpuflags & cpu_xop) + ret &= scrypt_test_mix_instance(scrypt_ChunkMix_xop, salsa64_core_tangle_sse2, salsa64_core_tangle_sse2, expected); +#endif + +#if defined(SCRYPT_SALSA64_AVX) + if (cpuflags & cpu_avx) + ret &= scrypt_test_mix_instance(scrypt_ChunkMix_avx, salsa64_core_tangle_sse2, salsa64_core_tangle_sse2, expected); +#endif + +#if defined(SCRYPT_SALSA64_SSSE3) + if (cpuflags & cpu_ssse3) + ret &= scrypt_test_mix_instance(scrypt_ChunkMix_ssse3, salsa64_core_tangle_sse2, salsa64_core_tangle_sse2, expected); +#endif + +#if defined(SCRYPT_SALSA64_SSE2) + if (cpuflags & cpu_sse2) + ret &= scrypt_test_mix_instance(scrypt_ChunkMix_sse2, salsa64_core_tangle_sse2, salsa64_core_tangle_sse2, expected); +#endif + +#if defined(SCRYPT_SALSA64_BASIC) + ret &= scrypt_test_mix_instance(scrypt_ChunkMix_basic, scrypt_romix_convert_endian, scrypt_romix_convert_endian, expected); +#endif + + return ret; +} + diff --git a/deps/scrypt-jane-master/code/scrypt-jane-test-vectors.h b/deps/scrypt-jane-master/code/scrypt-jane-test-vectors.h new file mode 100644 index 000000000..72a727634 --- /dev/null +++ b/deps/scrypt-jane-master/code/scrypt-jane-test-vectors.h @@ -0,0 +1,261 @@ +typedef struct scrypt_test_setting_t { + const char *pw, *salt; + uint8_t Nfactor, rfactor, pfactor; +} scrypt_test_setting; + +static const scrypt_test_setting post_settings[] = { + {"", "", 3, 0, 0}, + {"password", "NaCl", 9, 3, 4}, + {0, 0, 0, 0, 0} +}; + +#if defined(SCRYPT_SHA256) + #if defined(SCRYPT_SALSA) + /* sha256 + salsa20/8, the only 'official' test vectors! */ + static const uint8_t post_vectors[][64] = { + {0x77,0xd6,0x57,0x62,0x38,0x65,0x7b,0x20,0x3b,0x19,0xca,0x42,0xc1,0x8a,0x04,0x97, + 0xf1,0x6b,0x48,0x44,0xe3,0x07,0x4a,0xe8,0xdf,0xdf,0xfa,0x3f,0xed,0xe2,0x14,0x42, + 0xfc,0xd0,0x06,0x9d,0xed,0x09,0x48,0xf8,0x32,0x6a,0x75,0x3a,0x0f,0xc8,0x1f,0x17, + 0xe8,0xd3,0xe0,0xfb,0x2e,0x0d,0x36,0x28,0xcf,0x35,0xe2,0x0c,0x38,0xd1,0x89,0x06}, + {0xfd,0xba,0xbe,0x1c,0x9d,0x34,0x72,0x00,0x78,0x56,0xe7,0x19,0x0d,0x01,0xe9,0xfe, + 0x7c,0x6a,0xd7,0xcb,0xc8,0x23,0x78,0x30,0xe7,0x73,0x76,0x63,0x4b,0x37,0x31,0x62, + 0x2e,0xaf,0x30,0xd9,0x2e,0x22,0xa3,0x88,0x6f,0xf1,0x09,0x27,0x9d,0x98,0x30,0xda, + 0xc7,0x27,0xaf,0xb9,0x4a,0x83,0xee,0x6d,0x83,0x60,0xcb,0xdf,0xa2,0xcc,0x06,0x40} + }; + #elif defined(SCRYPT_CHACHA) + static const uint8_t post_vectors[][64] = { + {0xef,0x8f,0x44,0x8f,0xc3,0xef,0x78,0x13,0xb2,0x26,0xa7,0x2a,0x40,0xa1,0x98,0x7f, + 0xc8,0x7f,0x0d,0x5f,0x40,0x66,0xa2,0x05,0x07,0x4f,0xc7,0xac,0x3b,0x47,0x07,0x0c, + 0xf5,0x20,0x46,0x76,0x20,0x7b,0xee,0x51,0x6d,0x5f,0xfa,0x9c,0x27,0xac,0xa9,0x36, + 0x62,0xbd,0xde,0x0b,0xa3,0xc0,0x66,0x84,0xde,0x82,0xd0,0x1a,0xb4,0xd1,0xb5,0xfe}, + {0xf1,0x94,0xf7,0x5f,0x15,0x12,0x10,0x4d,0x6e,0xfb,0x04,0x8c,0x35,0xc4,0x51,0xb6, + 0x11,0x04,0xa7,0x9b,0xb0,0x46,0xaf,0x7b,0x47,0x39,0xf0,0xac,0xb2,0x8a,0xfa,0x45, + 0x09,0x86,0x8f,0x10,0x4b,0xc6,0xee,0x00,0x11,0x38,0x73,0x7a,0x6a,0xd8,0x25,0x67, + 0x85,0xa4,0x10,0x4e,0xa9,0x2f,0x15,0xfe,0xcf,0x63,0xe1,0xe8,0xcf,0xab,0xe8,0xbd} + }; + #elif defined(SCRYPT_SALSA64) + static const uint8_t post_vectors[][64] = { + {0xf4,0x87,0x29,0xf4,0xc3,0x31,0x8c,0xe8,0xdf,0xe5,0xd8,0x73,0xff,0xca,0x32,0xcf, + 0xd8,0xac,0xe7,0xf7,0x15,0xda,0x84,0x41,0x60,0x23,0x26,0x4a,0xc8,0x3e,0xee,0xa6, + 0xa5,0x6e,0x52,0xd6,0x64,0x55,0x16,0x31,0x3e,0x66,0x7b,0x65,0xd5,0xe2,0xc9,0x95, + 0x1b,0xf0,0x81,0x40,0xb7,0x2f,0xff,0xa6,0xe6,0x02,0xcc,0x63,0x08,0x4a,0x74,0x31}, + {0x7a,0xd8,0xad,0x02,0x9c,0xa5,0xf4,0x42,0x6a,0x29,0xd2,0xb5,0x53,0xf1,0x6d,0x1d, + 0x25,0xc8,0x70,0x48,0x80,0xb9,0xa3,0xf6,0x94,0xf8,0xfa,0xb8,0x52,0x42,0xcd,0x14, + 0x26,0x46,0x28,0x06,0xc7,0xf6,0x1f,0xa7,0x89,0x6d,0xc5,0xa0,0x36,0xcc,0xde,0xcb, + 0x73,0x0b,0xa4,0xe2,0xd3,0xd1,0x44,0x06,0x35,0x08,0xe0,0x35,0x5b,0xf8,0xd7,0xe7} + }; + #endif +#elif defined(SCRYPT_SHA512) + #if defined(SCRYPT_SALSA) + static const uint8_t post_vectors[][64] = { + {0xae,0x54,0xe7,0x74,0xe4,0x51,0x6b,0x0f,0xe1,0xe7,0x28,0x03,0x17,0xe4,0x8c,0xfa, + 0x2f,0x66,0x55,0x7f,0xdc,0x3b,0x40,0xab,0x47,0x84,0xc9,0x63,0x36,0x07,0x9d,0xe5, + 0x86,0x43,0x95,0x89,0xb6,0xc0,0x6c,0x72,0x64,0x00,0xc1,0x2a,0xd7,0x69,0x21,0x92, + 0x8e,0xba,0xa4,0x59,0x9f,0x00,0x14,0x3a,0x7c,0x12,0x58,0x91,0x09,0xa0,0x32,0xfe}, + {0xc5,0xb3,0xd6,0xea,0x0a,0x4b,0x1e,0xcc,0x40,0x00,0xe5,0x98,0x5c,0xdc,0x06,0x06, + 0x78,0x34,0x92,0x16,0xcf,0xe4,0x9f,0x03,0x96,0x2d,0x41,0x35,0x00,0x9b,0xff,0x74, + 0x60,0x19,0x6e,0xe6,0xa6,0x46,0xf7,0x37,0xcb,0xfa,0xd0,0x9f,0x80,0x72,0x2e,0x85, + 0x13,0x3e,0x1a,0x91,0x90,0x53,0xa1,0x33,0x85,0x51,0xdc,0x62,0x1c,0x0e,0x4d,0x30} + }; + #elif defined(SCRYPT_CHACHA) + static const uint8_t post_vectors[][64] = { + {0xe2,0x05,0x7c,0x44,0xf9,0x55,0x9f,0x64,0xbe,0xd5,0x7f,0x85,0x69,0xc7,0x8c,0x7f, + 0x2b,0x91,0xd6,0x9a,0x6c,0xf8,0x57,0x55,0x61,0x25,0x3d,0xee,0xb8,0xd5,0x8c,0xdc, + 0x2d,0xd5,0x53,0x84,0x8c,0x06,0xaa,0x37,0x77,0xa6,0xf0,0xf1,0x35,0xfe,0xb5,0xcb, + 0x61,0xd7,0x2c,0x67,0xf3,0x7e,0x8a,0x1b,0x04,0xa3,0xa3,0x43,0xa2,0xb2,0x29,0xf2}, + {0x82,0xda,0x29,0xb2,0x08,0x27,0xfc,0x78,0x22,0xc4,0xb8,0x7e,0xbc,0x36,0xcf,0xcd, + 0x17,0x4b,0xa1,0x30,0x16,0x4a,0x25,0x70,0xc7,0xcb,0xe0,0x2b,0x56,0xd3,0x16,0x4e, + 0x85,0xb6,0x84,0xe7,0x9b,0x7f,0x8b,0xb5,0x94,0x33,0xcf,0x33,0x44,0x65,0xc8,0xa1, + 0x46,0xf9,0xf5,0xfc,0x74,0x29,0x7e,0xd5,0x46,0xec,0xbd,0x95,0xc1,0x80,0x24,0xe4} + }; + #elif defined(SCRYPT_SALSA64) + static const uint8_t post_vectors[][64] = { + {0xa6,0xcb,0x77,0x9a,0x64,0x1f,0x95,0x02,0x53,0xe7,0x5c,0x78,0xdb,0xa3,0x43,0xff, + 0xbe,0x10,0x4c,0x7b,0xe4,0xe1,0x91,0xcf,0x67,0x69,0x5a,0x2c,0x12,0xd6,0x99,0x49, + 0x92,0xfd,0x5a,0xaa,0x12,0x4c,0x2e,0xf6,0x95,0x46,0x8f,0x5e,0x77,0x62,0x16,0x29, + 0xdb,0xe7,0xab,0x02,0x2b,0x9c,0x35,0x03,0xf8,0xd4,0x04,0x7d,0x2d,0x73,0x85,0xf1}, + {0x54,0xb7,0xca,0xbb,0xaf,0x0f,0xb0,0x5f,0xb7,0x10,0x63,0x48,0xb3,0x15,0xd8,0xb5, + 0x62,0x64,0x89,0x6a,0x59,0xc6,0x0f,0x86,0x96,0x38,0xf0,0xcf,0xd4,0x62,0x90,0x61, + 0x7d,0xce,0xd6,0x13,0x85,0x67,0x4a,0xf5,0x32,0x03,0x74,0x30,0x0b,0x5a,0x2f,0x86, + 0x82,0x6e,0x0c,0x3e,0x40,0x7a,0xde,0xbe,0x42,0x6e,0x80,0x2b,0xaf,0xdb,0xcc,0x94} + }; + #endif +#elif defined(SCRYPT_BLAKE512) + #if defined(SCRYPT_SALSA) + static const uint8_t post_vectors[][64] = { + {0x4a,0x48,0xb3,0xfa,0xdc,0xb0,0xb8,0xdb,0x54,0xee,0xf3,0x5c,0x27,0x65,0x6c,0x20, + 0xab,0x61,0x9a,0x5b,0xd5,0x1d,0xd9,0x95,0xab,0x88,0x0e,0x4d,0x1e,0x71,0x2f,0x11, + 0x43,0x2e,0xef,0x23,0xca,0x8a,0x49,0x3b,0x11,0x38,0xa5,0x28,0x61,0x2f,0xb7,0x89, + 0x5d,0xef,0x42,0x4c,0xc1,0x74,0xea,0x8a,0x56,0xbe,0x4a,0x82,0x76,0x15,0x1a,0x87}, + {0x96,0x24,0xbf,0x40,0xeb,0x03,0x8e,0xfe,0xc0,0xd5,0xa4,0x81,0x85,0x7b,0x09,0x88, + 0x52,0xb5,0xcb,0xc4,0x48,0xe1,0xb9,0x1d,0x3f,0x8b,0x3a,0xc6,0x38,0x32,0xc7,0x55, + 0x30,0x28,0x7a,0x42,0xa9,0x5d,0x54,0x33,0x62,0xf3,0xd9,0x3c,0x96,0x40,0xd1,0x80, + 0xe4,0x0e,0x7e,0xf0,0x64,0x53,0xfe,0x7b,0xd7,0x15,0xba,0xad,0x16,0x80,0x01,0xb5} + }; + #elif defined(SCRYPT_CHACHA) + static const uint8_t post_vectors[][64] = { + {0x45,0x42,0x22,0x31,0x26,0x13,0x5f,0x94,0xa4,0x00,0x04,0x47,0xe8,0x50,0x6d,0xd6, + 0xdd,0xd5,0x08,0xd4,0x90,0x64,0xe0,0x59,0x70,0x46,0xff,0xfc,0x29,0xb3,0x6a,0xc9, + 0x4d,0x45,0x97,0x95,0xa8,0xf0,0x53,0xe7,0xee,0x4b,0x6b,0x5d,0x1e,0xa5,0xb2,0x58, + 0x4b,0x93,0xc9,0x89,0x4c,0xa8,0xab,0x03,0x74,0x38,0xbd,0x54,0x97,0x6b,0xab,0x4a}, + {0x4b,0x4a,0x63,0x96,0x73,0x34,0x9f,0x39,0x64,0x51,0x0e,0x2e,0x3b,0x07,0xd5,0x1c, + 0xd2,0xf7,0xce,0x60,0xab,0xac,0x89,0xa4,0x16,0x0c,0x58,0x82,0xb3,0xd3,0x25,0x5b, + 0xd5,0x62,0x32,0xf4,0x86,0x5d,0xb2,0x4b,0xbf,0x8e,0xc6,0xc0,0xac,0x40,0x48,0xb4, + 0x69,0x08,0xba,0x40,0x4b,0x07,0x2a,0x13,0x9c,0x98,0x3b,0x8b,0x20,0x0c,0xac,0x9e} + }; + #elif defined(SCRYPT_SALSA64) + static const uint8_t post_vectors[][64] = { + {0xcb,0x4b,0xc2,0xd1,0xf4,0x77,0x32,0x3c,0x42,0x9d,0xf7,0x7d,0x1f,0x22,0x64,0xa4, + 0xe2,0x88,0x30,0x2d,0x54,0x9d,0xb6,0x26,0x89,0x25,0x30,0xc3,0x3d,0xdb,0xba,0x99, + 0xe9,0x8e,0x1e,0x5e,0x57,0x66,0x75,0x7c,0x24,0xda,0x00,0x6f,0x79,0xf7,0x47,0xf5, + 0xea,0x40,0x70,0x37,0xd2,0x91,0xc7,0x4d,0xdf,0x46,0xb6,0x3e,0x95,0x7d,0xcb,0xc1}, + {0x25,0xc2,0xcb,0x7f,0xc8,0x50,0xb7,0x0b,0x11,0x9e,0x1d,0x10,0xb2,0xa8,0x35,0x23, + 0x91,0x39,0xfb,0x45,0xf2,0xbf,0xe4,0xd0,0x84,0xec,0x72,0x33,0x6d,0x09,0xed,0x41, + 0x9a,0x7e,0x4f,0x10,0x73,0x97,0x22,0x76,0x58,0x93,0x39,0x24,0xdf,0xd2,0xaa,0x2f, + 0x6b,0x2b,0x64,0x48,0xa5,0xb7,0xf5,0x56,0x77,0x02,0xa7,0x71,0x46,0xe5,0x0e,0x8d}, + }; + #endif +#elif defined(SCRYPT_BLAKE256) + #if defined(SCRYPT_SALSA) + static const uint8_t post_vectors[][64] = { + {0xf1,0xf1,0x91,0x1a,0x81,0xe6,0x9f,0xc1,0xce,0x43,0xab,0xb1,0x1a,0x02,0x1e,0x16, + 0x08,0xc6,0xf9,0x00,0x50,0x1b,0x6d,0xf1,0x31,0x06,0x95,0x48,0x5d,0xf7,0x6c,0x00, + 0xa2,0x4c,0xb1,0x0e,0x52,0x66,0x94,0x7e,0x84,0xfc,0xa5,0x34,0xfd,0xf0,0xe9,0x57, + 0x85,0x2d,0x8c,0x05,0x5c,0x0f,0x04,0xd4,0x8d,0x3e,0x13,0x52,0x3d,0x90,0x2d,0x2c}, + {0xd5,0x42,0xd2,0x7b,0x06,0xae,0x63,0x90,0x9e,0x30,0x00,0x0e,0xd8,0xa4,0x3a,0x0b, + 0xee,0x4a,0xef,0xb2,0xc4,0x95,0x0d,0x72,0x07,0x70,0xcc,0xa3,0xf9,0x1e,0xc2,0x75, + 0xcf,0xaf,0xe1,0x44,0x1c,0x8c,0xe2,0x3e,0x0c,0x81,0xf3,0x92,0xe1,0x13,0xe6,0x4f, + 0x2d,0x27,0xc3,0x87,0xe5,0xb6,0xf9,0xd7,0x02,0x04,0x37,0x64,0x78,0x36,0x6e,0xb3} + }; + #elif defined(SCRYPT_CHACHA) + static const uint8_t post_vectors[][64] = { + {0xad,0x1b,0x4b,0xca,0xe3,0x26,0x1a,0xfd,0xb7,0x77,0x8c,0xde,0x8d,0x26,0x14,0xe1, + 0x54,0x38,0x42,0xf3,0xb3,0x66,0x29,0xf9,0x90,0x04,0xf1,0x82,0x7c,0x5a,0x6f,0xa8, + 0x7d,0xd6,0x08,0x0d,0x8b,0x78,0x04,0xad,0x31,0xea,0xd4,0x87,0x2d,0xf7,0x74,0x9a, + 0xe5,0xce,0x97,0xef,0xa3,0xbb,0x90,0x46,0x7c,0xf4,0x51,0x38,0xc7,0x60,0x53,0x21}, + {0x39,0xbb,0x56,0x3d,0x0d,0x7b,0x74,0x82,0xfe,0x5a,0x78,0x3d,0x66,0xe8,0x3a,0xdf, + 0x51,0x6f,0x3e,0xf4,0x86,0x20,0x8d,0xe1,0x81,0x22,0x02,0xf7,0x0d,0xb5,0x1a,0x0f, + 0xfc,0x59,0xb6,0x60,0xc9,0xdb,0x38,0x0b,0x5b,0x95,0xa5,0x94,0xda,0x42,0x2d,0x90, + 0x47,0xeb,0x73,0x31,0x9f,0x20,0xf6,0x81,0xc2,0xef,0x33,0x77,0x51,0xd8,0x2c,0xe4} + }; + #elif defined(SCRYPT_SALSA64) + static const uint8_t post_vectors[][64] = { + {0x9e,0xf2,0x60,0x7c,0xbd,0x7c,0x19,0x5c,0x79,0xc6,0x1b,0x7e,0xb0,0x65,0x1b,0xc3, + 0x70,0x0d,0x89,0xfc,0x72,0xb2,0x03,0x72,0x15,0xcb,0x8e,0x8c,0x49,0x50,0x4c,0x27, + 0x99,0xda,0x47,0x32,0x5e,0xb4,0xa2,0x07,0x83,0x51,0x6b,0x06,0x37,0x60,0x42,0xc4, + 0x59,0x49,0x99,0xdd,0xc0,0xd2,0x08,0x94,0x7f,0xe3,0x9e,0x4e,0x43,0x8e,0x5b,0xba}, + {0x86,0x6f,0x3b,0x11,0xb8,0xca,0x4b,0x6e,0xa7,0x6f,0xc2,0xc9,0x33,0xb7,0x8b,0x9f, + 0xa3,0xb9,0xf5,0xb5,0x62,0xa6,0x17,0x66,0xe4,0xc3,0x9d,0x9b,0xca,0x51,0xb0,0x2f, + 0xda,0x09,0xc1,0x77,0xed,0x8b,0x89,0xc2,0x69,0x5a,0x34,0x05,0x4a,0x1f,0x4d,0x76, + 0xcb,0xd5,0xa4,0x78,0xfa,0x1b,0xb9,0x5b,0xbc,0x3d,0xce,0x04,0x63,0x99,0xad,0x54} + }; + #endif +#elif defined(SCRYPT_SKEIN512) + #if defined(SCRYPT_SALSA) + static const uint8_t post_vectors[][64] = { + {0xe4,0x36,0xa0,0x9a,0xdb,0xf0,0xd1,0x45,0x56,0xda,0x25,0x53,0x00,0xf9,0x2c,0x69, + 0xa4,0xc2,0xa5,0x8e,0x1a,0x85,0xfa,0x53,0xbd,0x55,0x3d,0x11,0x2a,0x44,0x13,0x87, + 0x8f,0x81,0x88,0x13,0x1e,0x49,0xa8,0xc4,0xc5,0xcd,0x1f,0xe1,0x5f,0xf5,0xcb,0x2f, + 0x8b,0xab,0x57,0x38,0x59,0xeb,0x6b,0xac,0x3b,0x73,0x10,0xa6,0xe1,0xfe,0x17,0x3e}, + {0x6d,0x61,0xde,0x43,0xa9,0x38,0x53,0x5f,0xd8,0xf2,0x6d,0xf3,0xe4,0xd6,0xd8,0x5e, + 0x81,0x89,0xd0,0x0b,0x86,0x16,0xb1,0x91,0x65,0x76,0xd8,0xc1,0xf7,0x3b,0xca,0x8b, + 0x35,0x07,0x58,0xba,0x77,0xdf,0x11,0x6c,0xbc,0x58,0xee,0x11,0x59,0xf2,0xfe,0xcb, + 0x51,0xdc,0xcd,0x35,0x2e,0x46,0x22,0xa0,0xaa,0x55,0x60,0x7c,0x91,0x15,0xb8,0x00} + }; + #elif defined(SCRYPT_CHACHA) + static const uint8_t post_vectors[][64] = { + {0xd1,0x12,0x6d,0x64,0x10,0x0e,0x98,0x6c,0xbe,0x70,0x21,0xd9,0xc6,0x04,0x62,0xa4, + 0x29,0x13,0x9a,0x3c,0xf8,0xe9,0x1e,0x87,0x9f,0x88,0xf4,0x98,0x01,0x41,0x8e,0xce, + 0x60,0xf7,0xbe,0x17,0x0a,0xec,0xd6,0x30,0x80,0xcf,0x6b,0x1e,0xcf,0x95,0xa0,0x4d, + 0x37,0xed,0x3a,0x09,0xd1,0xeb,0x0c,0x80,0x82,0x22,0x8e,0xd3,0xb1,0x7f,0xd6,0xa8}, + {0x5c,0x5c,0x05,0xe2,0x75,0xa5,0xa4,0xec,0x81,0x97,0x9c,0x5b,0xd7,0x26,0xb3,0x16, + 0xb4,0x02,0x8c,0x56,0xe6,0x32,0x57,0x33,0x47,0x19,0x06,0x6c,0xde,0x68,0x41,0x37, + 0x5b,0x7d,0xa7,0xb3,0x73,0xeb,0x82,0xca,0x0f,0x86,0x2e,0x6b,0x47,0xa2,0x70,0x39, + 0x35,0xfd,0x2d,0x2e,0x7b,0xc3,0x68,0xbb,0x52,0x42,0x19,0x3b,0x78,0x96,0xe7,0xc8} + }; + #elif defined(SCRYPT_SALSA64) + static const uint8_t post_vectors[][64] = { + {0xd2,0xad,0x32,0x05,0xee,0x80,0xe3,0x44,0x70,0xc6,0x34,0xde,0x05,0xb6,0xcf,0x60, + 0x89,0x98,0x70,0xc0,0xb8,0xf5,0x54,0xf1,0xa6,0xb2,0xc8,0x76,0x34,0xec,0xc4,0x59, + 0x8e,0x64,0x42,0xd0,0xa9,0xed,0xe7,0x19,0xb2,0x8a,0x11,0xc6,0xa6,0xbf,0xa7,0xa9, + 0x4e,0x44,0x32,0x7e,0x12,0x91,0x9d,0xfe,0x52,0x48,0xa8,0x27,0xb3,0xfc,0xb1,0x89}, + {0xd6,0x67,0xd2,0x3e,0x30,0x1e,0x9d,0xe2,0x55,0x68,0x17,0x3d,0x2b,0x75,0x5a,0xe5, + 0x04,0xfb,0x3d,0x0e,0x86,0xe0,0xaa,0x1d,0xd4,0x72,0xda,0xb0,0x79,0x41,0xb7,0x99, + 0x68,0xe5,0xd9,0x55,0x79,0x7d,0xc3,0xd1,0xa6,0x56,0xc1,0xbe,0x0b,0x6c,0x62,0x23, + 0x66,0x67,0x91,0x47,0x99,0x13,0x6b,0xe3,0xda,0x59,0x55,0x18,0x67,0x8f,0x2e,0x3b} + }; + #endif +#elif defined(SCRYPT_KECCAK512) + #if defined(SCRYPT_SALSA) + static const uint8_t post_vectors[][64] = { + {0xc2,0x7b,0xbe,0x1d,0xf1,0x99,0xd8,0xe7,0x1b,0xac,0xe0,0x9d,0xeb,0x5a,0xfe,0x21, + 0x71,0xff,0x41,0x51,0x4f,0xbe,0x41,0x01,0x15,0xe2,0xb7,0xb9,0x55,0x15,0x25,0xa1, + 0x40,0x4c,0x66,0x29,0x32,0xb7,0xc9,0x62,0x60,0x88,0xe0,0x99,0x39,0xae,0xce,0x25, + 0x3c,0x11,0x89,0xdd,0xc6,0x14,0xd7,0x3e,0xa3,0x6d,0x07,0x2e,0x56,0xa0,0xff,0x97}, + {0x3c,0x91,0x12,0x4a,0x37,0x7d,0xd6,0x96,0xd2,0x9b,0x5d,0xea,0xb8,0xb9,0x82,0x4e, + 0x4f,0x6b,0x60,0x4c,0x59,0x01,0xe5,0x73,0xfd,0xf6,0xb8,0x9a,0x5a,0xd3,0x7c,0x7a, + 0xd2,0x4f,0x8e,0x74,0xc1,0x90,0x88,0xa0,0x3f,0x55,0x75,0x79,0x10,0xd0,0x09,0x79, + 0x0f,0x6c,0x74,0x0c,0x05,0x08,0x3c,0x8c,0x94,0x7b,0x30,0x56,0xca,0xdf,0xdf,0x34} + }; + #elif defined(SCRYPT_CHACHA) + static const uint8_t post_vectors[][64] = { + {0x77,0xcb,0x70,0xbf,0xae,0xd4,0x4c,0x5b,0xbc,0xd3,0xec,0x8a,0x82,0x43,0x8d,0xb3, + 0x7f,0x1f,0xfb,0x70,0x36,0x32,0x4d,0xa6,0xb7,0x13,0x37,0x77,0x30,0x0c,0x3c,0xfb, + 0x2c,0x20,0x8f,0x2a,0xf4,0x47,0x4d,0x69,0x8e,0xae,0x2d,0xad,0xba,0x35,0xe9,0x2f, + 0xe6,0x99,0x7a,0xf8,0xcf,0x70,0x78,0xbb,0x0c,0x72,0x64,0x95,0x8b,0x36,0x77,0x3d}, + {0xc6,0x43,0x17,0x16,0x87,0x09,0x5f,0x12,0xed,0x21,0xe2,0xb4,0xad,0x55,0xa1,0xa1, + 0x49,0x50,0x90,0x70,0xab,0x81,0x83,0x7a,0xcd,0xdf,0x23,0x52,0x19,0xc0,0xa2,0xd8, + 0x8e,0x98,0xeb,0xf0,0x37,0xab,0xad,0xfd,0x1c,0x04,0x97,0x18,0x42,0x85,0xf7,0x4b, + 0x18,0x2c,0x55,0xd3,0xa9,0xe6,0x89,0xfb,0x58,0x0a,0xb2,0x37,0xb9,0xf8,0xfb,0xc5} + }; + #elif defined(SCRYPT_SALSA64) + static const uint8_t post_vectors[][64] = { + {0xc7,0x34,0x95,0x02,0x5e,0x31,0x0d,0x1f,0x10,0x38,0x9c,0x3f,0x04,0x53,0xed,0x05, + 0x27,0x38,0xc1,0x3f,0x6a,0x0f,0xc5,0xa3,0x9b,0x73,0x8a,0x28,0x7e,0x5d,0x3c,0xdc, + 0x9d,0x5a,0x09,0xbf,0x8c,0x0a,0xad,0xe4,0x73,0x52,0xe3,0x6d,0xaa,0xd1,0x8b,0xbf, + 0xa3,0xb7,0xf0,0x58,0xad,0x22,0x24,0xc9,0xaa,0x96,0xb7,0x5d,0xfc,0x5f,0xb0,0xcf}, + {0x76,0x22,0xfd,0xe8,0xa2,0x79,0x8e,0x9d,0x43,0x8c,0x7a,0xba,0x78,0xb7,0x84,0xf1, + 0xc8,0xee,0x3b,0xae,0x31,0x89,0xbf,0x7e,0xd0,0x4b,0xc1,0x2d,0x58,0x5d,0x84,0x6b, + 0xec,0x86,0x56,0xe0,0x87,0x94,0x7f,0xbc,0xf9,0x48,0x92,0xef,0x54,0x7f,0x23,0x8d, + 0x4f,0x8b,0x0a,0x75,0xa7,0x39,0x0e,0x46,0x6e,0xee,0x58,0xc8,0xfa,0xea,0x90,0x53} + }; + #endif +#elif defined(SCRYPT_KECCAK256) + #if defined(SCRYPT_SALSA) + static const uint8_t post_vectors[][64] = { + {0x2e,0x96,0xd8,0x87,0x45,0xcd,0xd6,0xc8,0xf6,0xd2,0x87,0x33,0x50,0xc7,0x04,0xe5, + 0x3c,0x4b,0x48,0x44,0x57,0xc1,0x74,0x09,0x76,0x02,0xaa,0xd3,0x7b,0xf3,0xbf,0xed, + 0x4b,0x72,0xd7,0x1b,0x49,0x6b,0xe0,0x44,0x83,0xee,0x8f,0xaf,0xa1,0xb5,0x33,0xa9, + 0x9e,0x86,0xab,0xe2,0x9f,0xcf,0x68,0x6e,0x7e,0xbd,0xf5,0x7a,0x83,0x4b,0x1c,0x10}, + {0x42,0x7e,0xf9,0x4b,0x72,0x61,0xda,0x2d,0xb3,0x27,0x0e,0xe1,0xd9,0xde,0x5f,0x3e, + 0x64,0x2f,0xd6,0xda,0x90,0x59,0xce,0xbf,0x02,0x5b,0x32,0xf7,0x6d,0x94,0x51,0x7b, + 0xb6,0xa6,0x0d,0x99,0x3e,0x7f,0x39,0xbe,0x1b,0x1d,0x6c,0x97,0x12,0xd8,0xb7,0xfd, + 0x5b,0xb5,0xf3,0x73,0x5a,0x89,0xb2,0xdd,0xcc,0x3d,0x74,0x2e,0x3d,0x9e,0x3c,0x22} + }; + #elif defined(SCRYPT_CHACHA) + static const uint8_t post_vectors[][64] = { + {0x76,0x1d,0x5b,0x8f,0xa9,0xe1,0xa6,0x01,0xcb,0xc5,0x7a,0x5f,0x02,0x23,0xb6,0x82, + 0x57,0x79,0x60,0x2f,0x05,0x7f,0xb8,0x0a,0xcb,0x5e,0x54,0x11,0x49,0x2e,0xdd,0x85, + 0x83,0x30,0x67,0xb3,0x24,0x5c,0xce,0xfc,0x32,0xcf,0x12,0xc3,0xff,0xe0,0x79,0x36, + 0x74,0x17,0xa6,0x3e,0xcd,0xa0,0x7e,0xcb,0x37,0xeb,0xcb,0xb6,0xe1,0xb9,0xf5,0x15}, + {0xf5,0x66,0xa7,0x4c,0xe4,0xdc,0x18,0x56,0x2f,0x3e,0x86,0x4d,0x92,0xa5,0x5c,0x5a, + 0x8f,0xc3,0x6b,0x32,0xdb,0xe5,0x72,0x50,0x84,0xfc,0x6e,0x5d,0x15,0x77,0x3d,0xca, + 0xc5,0x2b,0x20,0x3c,0x78,0x37,0x80,0x78,0x23,0x56,0x91,0xa0,0xce,0xa4,0x06,0x5a, + 0x7f,0xe3,0xbf,0xab,0x51,0x57,0x32,0x2c,0x0a,0xf0,0xc5,0x6f,0xf4,0xcb,0xff,0x42} + }; + #elif defined(SCRYPT_SALSA64) + static const uint8_t post_vectors[][64] = { + {0xb0,0xb7,0x10,0xb5,0x1f,0x2b,0x7f,0xaf,0x9d,0x95,0x5f,0x4c,0x2d,0x98,0x7c,0xc1, + 0xbc,0x37,0x2f,0x50,0x8d,0xb2,0x9f,0xfd,0x48,0x0d,0xe0,0x44,0x19,0xdf,0x28,0x6c, + 0xab,0xbf,0x1e,0x17,0x26,0xcc,0x57,0x95,0x18,0x17,0x83,0x4c,0x12,0x48,0xd9,0xee, + 0x4b,0x00,0x29,0x06,0x31,0x01,0x6b,0x8c,0x26,0x39,0xbf,0xe4,0xe4,0xd4,0x6a,0x26}, + {0xa0,0x40,0xb2,0xf2,0x11,0xb6,0x5f,0x3d,0x4c,0x1e,0xef,0x59,0xd4,0x98,0xdb,0x14, + 0x01,0xff,0xe3,0x34,0xd7,0x19,0xcd,0xeb,0xde,0x52,0x1c,0xf4,0x86,0x43,0xc9,0xe2, + 0xfb,0xf9,0x4f,0x0a,0xbb,0x1f,0x5c,0x6a,0xdf,0xb9,0x28,0xfa,0xac,0xc4,0x48,0xed, + 0xcc,0xd2,0x2e,0x25,0x5f,0xf3,0x56,0x1d,0x2d,0x23,0x22,0xc1,0xbc,0xff,0x78,0x80} + }; + #endif +#else + static const uint8_t post_vectors[][64] = {{0}}; +#endif + diff --git a/deps/scrypt-jane-master/example.c b/deps/scrypt-jane-master/example.c new file mode 100644 index 000000000..6f290a13c --- /dev/null +++ b/deps/scrypt-jane-master/example.c @@ -0,0 +1,13 @@ +#include +#include "scrypt-jane.h" + + +int main(void) { + unsigned char digest[16]; + int i; + scrypt("pw", 2, "salt", 4, 0, 0, 0, digest, 16); + for (i = 0; i < sizeof(digest); i++) + printf("%02x, ", digest[i]); + printf("\n"); + return 0; +} \ No newline at end of file diff --git a/deps/scrypt-jane-master/scrypt-jane-speed.c b/deps/scrypt-jane-master/scrypt-jane-speed.c new file mode 100644 index 000000000..e8d61b3c0 --- /dev/null +++ b/deps/scrypt-jane-master/scrypt-jane-speed.c @@ -0,0 +1,121 @@ +#define SCRYPT_TEST_SPEED +#include "scrypt-jane.c" + +/* ticks - not tested on anything other than x86 */ +static uint64_t +get_ticks(void) { +#if defined(CPU_X86) || defined(CPU_X86_64) + #if defined(COMPILER_INTEL) + return _rdtsc(); + #elif defined(COMPILER_MSVC) + return __rdtsc(); + #elif defined(COMPILER_GCC) + uint32_t lo, hi; + __asm__ __volatile__("rdtsc" : "=a" (lo), "=d" (hi)); + return ((uint64_t)lo | ((uint64_t)hi << 32)); + #else + need rdtsc for this compiler + #endif +#elif defined(OS_SOLARIS) + return (uint64_t)gethrtime(); +#elif defined(CPU_SPARC) && !defined(OS_OPENBSD) + uint64_t t; + __asm__ __volatile__("rd %%tick, %0" : "=r" (t)); + return t; +#elif defined(CPU_PPC) + uint32_t lo = 0, hi = 0; + __asm__ __volatile__("mftbu %0; mftb %1" : "=r" (hi), "=r" (lo)); + return ((uint64_t)lo | ((uint64_t)hi << 32)); +#elif defined(CPU_IA64) + uint64_t t; + __asm__ __volatile__("mov %0=ar.itc" : "=r" (t)); + return t; +#elif defined(OS_NIX) + timeval t2; + gettimeofday(&t2, NULL); + t = ((uint64_t)t2.tv_usec << 32) | (uint64_t)t2.tv_sec; + return t; +#else + need ticks for this platform +#endif +} + +#define timeit(x,minvar) { \ + ticks = get_ticks(); \ + x; \ + ticks = get_ticks() - ticks; \ + if (ticks < minvar) \ + minvar = ticks; \ + } + +#define maxticks 0xffffffffffffffffull + +typedef struct scrypt_speed_settings_t { + const char *desc; + uint8_t Nfactor, rfactor, pfactor; +} scrypt_speed_settings; + +/* scrypt_r_32kb is set to a 32kb chunk, so (1 << (scrypt_r_32kb - 5)) = 1kb chunk */ +static const scrypt_speed_settings settings[] = { + {"scrypt high volume ( ~4mb)", 11, scrypt_r_32kb - 5, 0}, + {"scrypt interactive (~16mb)", 13, scrypt_r_32kb - 5, 0}, + {"scrypt non-interactive (~ 1gb)", 19, scrypt_r_32kb - 5, 0}, + {0} +}; + +int main(void) { + const scrypt_speed_settings *s; + uint8_t password[64], salt[24], digest[64]; + uint64_t minticks, ticks; + size_t i, passes; + size_t cpuflags, topbit; + + for (i = 0; i < sizeof(password); i++) + password[i] = (uint8_t)i; + for (i = 0; i < sizeof(salt); i++) + salt[i] = 255 - (uint8_t)i; + + /* warm up a little */ + scrypt(password, sizeof(password), salt, sizeof(salt), 15, 3, 4, digest, sizeof(digest)); + + cpuflags = available_implementations(); + topbit = 0; + for (i = cpuflags; i != 0; i >>= 1) + topbit++; + topbit = ((size_t)1 << topbit); + + while (1) { + #if defined(SCRYPT_CHOOSE_COMPILETIME) + printf("speed test for scrypt[%s,%s]\n", SCRYPT_HASH, SCRYPT_MIX); + #else + printf("speed test for scrypt[%s,%s,%s]\n", SCRYPT_HASH, SCRYPT_MIX, get_top_cpuflag_desc(cpuflags)); + #endif + + cpu_detect_mask = cpuflags; + for (i = 0; settings[i].desc; i++) { + s = &settings[i]; + minticks = maxticks; + for (passes = 0; passes < 16; passes++) + timeit(scrypt(password, sizeof(password), salt, sizeof(salt), s->Nfactor, s->rfactor, s->pfactor, digest, sizeof(digest)), minticks) + + printf("%s, %.0f ticks\n", s->desc, (double)minticks); + } + + #if defined(SCRYPT_CHOOSE_COMPILETIME) + break; + #else + while (topbit && ((cpuflags & topbit) == 0)) + topbit >>= 1; + cpuflags &= ~topbit; + + /* (cpuflags == 0) is the basic/portable version, don't bother timing it */ + if (!cpuflags) + break; + #endif + } + + printf("\n\n"); + + return 0; +} + diff --git a/deps/scrypt-jane-master/scrypt-jane-test.c b/deps/scrypt-jane-master/scrypt-jane-test.c new file mode 100644 index 000000000..808f84311 --- /dev/null +++ b/deps/scrypt-jane-master/scrypt-jane-test.c @@ -0,0 +1,12 @@ +#define SCRYPT_TEST +#include "scrypt-jane.c" + +int main(void) { + int res = scrypt_power_on_self_test(); + + printf("%s: test %s\n", SCRYPT_MIX, (res & 1) ? "ok" : "FAILED"); + printf("%s: test %s\n", SCRYPT_HASH, (res & 2) ? "ok" : "FAILED"); + printf("scrypt: test vectors %s\n", (res & 4) ? "ok" : "FAILED"); + + return ((res & 7) == 7) ? 0 : 1; +} diff --git a/deps/scrypt-jane-master/scrypt-jane.c b/deps/scrypt-jane-master/scrypt-jane.c new file mode 100644 index 000000000..e057c6d9a --- /dev/null +++ b/deps/scrypt-jane-master/scrypt-jane.c @@ -0,0 +1,182 @@ +/* + scrypt-jane by Andrew M, https://github.com/floodyberry/scrypt-jane + + Public Domain or MIT License, whichever is easier +*/ + +#include + +#include "scrypt-jane.h" +#include "code/scrypt-jane-portable.h" +#include "code/scrypt-jane-hash.h" +#include "code/scrypt-jane-romix.h" +#include "code/scrypt-jane-test-vectors.h" + + +#define scrypt_maxNfactor 30 /* (1 << (30 + 1)) = ~2 billion */ +#if (SCRYPT_BLOCK_BYTES == 64) +#define scrypt_r_32kb 8 /* (1 << 8) = 256 * 2 blocks in a chunk * 64 bytes = Max of 32kb in a chunk */ +#elif (SCRYPT_BLOCK_BYTES == 128) +#define scrypt_r_32kb 7 /* (1 << 7) = 128 * 2 blocks in a chunk * 128 bytes = Max of 32kb in a chunk */ +#elif (SCRYPT_BLOCK_BYTES == 256) +#define scrypt_r_32kb 6 /* (1 << 6) = 64 * 2 blocks in a chunk * 256 bytes = Max of 32kb in a chunk */ +#elif (SCRYPT_BLOCK_BYTES == 512) +#define scrypt_r_32kb 5 /* (1 << 5) = 32 * 2 blocks in a chunk * 512 bytes = Max of 32kb in a chunk */ +#endif +#define scrypt_maxrfactor scrypt_r_32kb /* 32kb */ +#define scrypt_maxpfactor 25 /* (1 << 25) = ~33 million */ + +#include +//#include + +static void NORETURN +scrypt_fatal_error_default(const char *msg) { + fprintf(stderr, "%s\n", msg); + exit(1); +} + +static scrypt_fatal_errorfn scrypt_fatal_error = scrypt_fatal_error_default; + +void +scrypt_set_fatal_error(scrypt_fatal_errorfn fn) { + scrypt_fatal_error = fn; +} + +static int +scrypt_power_on_self_test(void) { + const scrypt_test_setting *t; + uint8_t test_digest[64]; + uint32_t i; + int res = 7, scrypt_valid; + + if (!scrypt_test_mix()) { +#if !defined(SCRYPT_TEST) + scrypt_fatal_error("scrypt: mix function power-on-self-test failed"); +#endif + res &= ~1; + } + + if (!scrypt_test_hash()) { +#if !defined(SCRYPT_TEST) + scrypt_fatal_error("scrypt: hash function power-on-self-test failed"); +#endif + res &= ~2; + } + + for (i = 0, scrypt_valid = 1; post_settings[i].pw; i++) { + t = post_settings + i; + scrypt((uint8_t *)t->pw, strlen(t->pw), (uint8_t *)t->salt, strlen(t->salt), t->Nfactor, t->rfactor, t->pfactor, test_digest, sizeof(test_digest)); + scrypt_valid &= scrypt_verify(post_vectors[i], test_digest, sizeof(test_digest)); + } + + if (!scrypt_valid) { +#if !defined(SCRYPT_TEST) + scrypt_fatal_error("scrypt: scrypt power-on-self-test failed"); +#endif + res &= ~4; + } + + return res; +} + +typedef struct scrypt_aligned_alloc_t { + uint8_t *mem, *ptr; +} scrypt_aligned_alloc; + +#if defined(SCRYPT_TEST_SPEED) +static uint8_t *mem_base = (uint8_t *)0; +static size_t mem_bump = 0; + +/* allocations are assumed to be multiples of 64 bytes and total allocations not to exceed ~1.01gb */ +static scrypt_aligned_alloc +scrypt_alloc(uint64_t size) { + scrypt_aligned_alloc aa; + if (!mem_base) { + mem_base = (uint8_t *)malloc((1024 * 1024 * 1024) + (1024 * 1024) + (SCRYPT_BLOCK_BYTES - 1)); + if (!mem_base) + scrypt_fatal_error("scrypt: out of memory"); + mem_base = (uint8_t *)(((size_t)mem_base + (SCRYPT_BLOCK_BYTES - 1)) & ~(SCRYPT_BLOCK_BYTES - 1)); + } + aa.mem = mem_base + mem_bump; + aa.ptr = aa.mem; + mem_bump += (size_t)size; + return aa; +} + +static void +scrypt_free(scrypt_aligned_alloc *aa) { + mem_bump = 0; +} +#else +static scrypt_aligned_alloc +scrypt_alloc(uint64_t size) { + static const size_t max_alloc = (size_t)-1; + scrypt_aligned_alloc aa; + size += (SCRYPT_BLOCK_BYTES - 1); + if (size > max_alloc) + scrypt_fatal_error("scrypt: not enough address space on this CPU to allocate required memory"); + aa.mem = (uint8_t *)malloc((size_t)size); + aa.ptr = (uint8_t *)(((size_t)aa.mem + (SCRYPT_BLOCK_BYTES - 1)) & ~(SCRYPT_BLOCK_BYTES - 1)); + if (!aa.mem) + scrypt_fatal_error("scrypt: out of memory"); + return aa; +} + +static void +scrypt_free(scrypt_aligned_alloc *aa) { + free(aa->mem); +} +#endif + + +void +scrypt(const uint8_t *password, size_t password_len, const uint8_t *salt, size_t salt_len, uint8_t Nfactor, uint8_t rfactor, uint8_t pfactor, uint8_t *out, size_t bytes) { + scrypt_aligned_alloc YX, V; + uint8_t *X, *Y; + uint32_t N, r, p, chunk_bytes, i; + +#if !defined(SCRYPT_CHOOSE_COMPILETIME) + scrypt_ROMixfn scrypt_ROMix = scrypt_getROMix(); +#endif + +#if !defined(SCRYPT_TEST) + static int power_on_self_test = 0; + if (!power_on_self_test) { + power_on_self_test = 1; + if (!scrypt_power_on_self_test()) + scrypt_fatal_error("scrypt: power on self test failed"); + } +#endif + + if (Nfactor > scrypt_maxNfactor) + scrypt_fatal_error("scrypt: N out of range"); + if (rfactor > scrypt_maxrfactor) + scrypt_fatal_error("scrypt: r out of range"); + if (pfactor > scrypt_maxpfactor) + scrypt_fatal_error("scrypt: p out of range"); + + N = (1 << (Nfactor + 1)); + r = (1 << rfactor); + p = (1 << pfactor); + + chunk_bytes = SCRYPT_BLOCK_BYTES * r * 2; + V = scrypt_alloc((uint64_t)N * chunk_bytes); + YX = scrypt_alloc((p + 1) * chunk_bytes); + + /* 1: X = PBKDF2(password, salt) */ + Y = YX.ptr; + X = Y + chunk_bytes; + scrypt_pbkdf2(password, password_len, salt, salt_len, 1, X, chunk_bytes * p); + + /* 2: X = ROMix(X) */ + for (i = 0; i < p; i++) + scrypt_ROMix((scrypt_mix_word_t *)(X + (chunk_bytes * i)), (scrypt_mix_word_t *)Y, (scrypt_mix_word_t *)V.ptr, N, r); + + /* 3: Out = PBKDF2(password, X) */ + scrypt_pbkdf2(password, password_len, X, chunk_bytes * p, 1, out, bytes); + + scrypt_ensure_zero(YX.ptr, (p + 1) * chunk_bytes); + + scrypt_free(&V); + scrypt_free(&YX); +} diff --git a/deps/scrypt-jane-master/scrypt-jane.h b/deps/scrypt-jane-master/scrypt-jane.h new file mode 100644 index 000000000..1c0df6242 --- /dev/null +++ b/deps/scrypt-jane-master/scrypt-jane.h @@ -0,0 +1,27 @@ +#ifndef SCRYPT_JANE_H +#define SCRYPT_JANE_H + +/* + Nfactor: Increases CPU & Memory Hardness + N = (1 << (Nfactor + 1)): How many times to mix a chunk and how many temporary chunks are used + + rfactor: Increases Memory Hardness + r = (1 << rfactor): How large a chunk is + + pfactor: Increases CPU Hardness + p = (1 << pfactor): Number of times to mix the main chunk + + A block is the basic mixing unit (salsa/chacha block = 64 bytes) + A chunk is (2 * r) blocks + + ~Memory used = (N + 2) * ((2 * r) * block size) +*/ + +#include + +typedef void (*scrypt_fatal_errorfn)(const char *msg); +void scrypt_set_fatal_error(scrypt_fatal_errorfn fn); + +void scrypt(const unsigned char *password, size_t password_len, const unsigned char *salt, size_t salt_len, unsigned char Nfactor, unsigned char rfactor, unsigned char pfactor, unsigned char *out, size_t bytes); + +#endif /* SCRYPT_JANE_H */ diff --git a/deps/scrypt-jane-master/test-speed.sh b/deps/scrypt-jane-master/test-speed.sh new file mode 100644 index 000000000..f223dae49 --- /dev/null +++ b/deps/scrypt-jane-master/test-speed.sh @@ -0,0 +1,38 @@ +#!/bin/sh + +test() { + sleep 0.25 # mingw is stupid and will occasionally not have permission to overwrite scrypt_speed + gcc scrypt-jane-speed.c -O3 -DSCRYPT_$1 -DSCRYPT_$2 $3 -o scrypt_speed 2>/dev/null + local RC=$? + if [ $RC -ne 0 ]; then + echo "$1/$2: failed to compile " + return + fi + ./scrypt_speed +} + +testhash() { + test $1 SALSA $2 + test $1 CHACHA $2 + test $1 SALSA64 $2 +} + +testhashes() { + testhash SHA256 $1 + testhash SHA512 $1 + testhash BLAKE256 $1 + testhash BLAKE512 $1 + testhash SKEIN512 $1 + testhash KECCAK256 $1 + testhash KECCAK512 $1 +} + +if [ -z $1 ]; then + testhashes +elif [ $1 -eq 32 ]; then + testhashes -m32 +elif [ $1 -eq 64 ]; then + testhashes -m64 +fi + +rm -f scrypt_speed \ No newline at end of file diff --git a/deps/scrypt-jane-master/test.sh b/deps/scrypt-jane-master/test.sh new file mode 100644 index 000000000..f1a1f62ce --- /dev/null +++ b/deps/scrypt-jane-master/test.sh @@ -0,0 +1,44 @@ +#!/bin/sh + +test() { + sleep 0.25 # mingw is stupid and will occasionally not have permission to overwrite scrypt_test + gcc scrypt-jane-test.c -O3 -DSCRYPT_$1 -DSCRYPT_$2 $3 -o scrypt_test #2>/dev/null + local RC=$? + if [ $RC -ne 0 ]; then + echo "$1/$2: failed to compile " + return + fi + ./scrypt_test >/dev/null + local RC=$? + if [ $RC -ne 0 ]; then + echo "$1/$2: validation failed" + return + fi + echo "$1/$2: OK" +} + +testhash() { + test $1 SALSA $2 + test $1 CHACHA $2 + test $1 SALSA64 $2 +} + +testhashes() { + testhash SHA256 $1 + testhash SHA512 $1 + testhash BLAKE256 $1 + testhash BLAKE512 $1 + testhash SKEIN512 $1 + testhash KECCAK256 $1 + testhash KECCAK512 $1 +} + +if [ -z $1 ]; then + testhashes +elif [ $1 -eq 32 ]; then + testhashes -m32 +elif [ $1 -eq 64 ]; then + testhashes -m64 +fi + +rm -f scrypt_test diff --git a/deps/sse2neon/.ci/check-format.sh b/deps/sse2neon/.ci/check-format.sh new file mode 100755 index 000000000..de8aa178a --- /dev/null +++ b/deps/sse2neon/.ci/check-format.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash + +. .ci/common.sh + +set -x + +for file in ${SOURCES}; +do + clang-format-18 ${file} > expected-format + diff -u -p --label="${file}" --label="expected coding style" ${file} expected-format +done +exit $(clang-format-18 --output-replacements-xml ${SOURCES} | egrep -c "") diff --git a/deps/sse2neon/.ci/common.sh b/deps/sse2neon/.ci/common.sh new file mode 100644 index 000000000..e71682583 --- /dev/null +++ b/deps/sse2neon/.ci/common.sh @@ -0,0 +1,18 @@ +GCC_REL=14.2.rel1 +ARM_MIRROR=https://github.com/DLTcollab/toolchain-arm/raw/main + +SOURCES=$(find $(git rev-parse --show-toplevel) | egrep "\.(cpp|h)\$" | egrep -v "arm-gnu-toolchain-${GCC_REL}-x86_64-aarch64-none-linux-gnu|arm-gnu-toolchain-${GCC_REL}-x86_64-arm-none-linux-gnueabihf") + +# Expect host is Linux/x86_64 +check_platform() +{ + MACHINE_TYPE=`uname -m` + if [ ${MACHINE_TYPE} != 'x86_64' ]; then + exit + fi + + OS_TYPE=`uname -s` + if [ ${OS_TYPE} != 'Linux' ]; then + exit + fi +} diff --git a/deps/sse2neon/.ci/cross-check.sh b/deps/sse2neon/.ci/cross-check.sh new file mode 100755 index 000000000..c0f9fb849 --- /dev/null +++ b/deps/sse2neon/.ci/cross-check.sh @@ -0,0 +1,22 @@ +#!/usr/bin/env bash + +. .ci/common.sh + +check_platform + +# Clang/LLVM is natively a cross-compiler. +# TODO: Do cross-compilation using Clang +# https://clang.llvm.org/docs/CrossCompilation.html +if [ $(printenv CXX | grep clang) ]; then + exit +fi + +set -x + +make clean +export PATH=arm-gnu-toolchain-${GCC_REL}-x86_64-aarch64-none-linux-gnu/bin:$PATH +make CROSS_COMPILE=aarch64-none-linux-gnu- check || exit 1 # ARMv8-A + +make clean +export PATH=arm-gnu-toolchain-${GCC_REL}-x86_64-arm-none-linux-gnueabihf/bin:$PATH +make CROSS_COMPILE=arm-none-linux-gnueabihf- check || exit 1 # ARMv7-A diff --git a/deps/sse2neon/.ci/cross-tool.sh b/deps/sse2neon/.ci/cross-tool.sh new file mode 100755 index 000000000..c2013cb4d --- /dev/null +++ b/deps/sse2neon/.ci/cross-tool.sh @@ -0,0 +1,26 @@ +#!/usr/bin/env bash + +. .ci/common.sh + +check_platform + +sudo apt-get update -q -y +sudo apt-get install -q -y qemu-user + +# Clang/LLVM is natively a cross-compiler, meaning that one set of programs +# can compile to all targets by setting the -target option. +if [ $(printenv CXX | grep clang) ]; then + exit +fi + +set -x + +sudo apt-get install -y curl xz-utils + +curl -L \ + ${ARM_MIRROR}/arm-gnu-toolchain-${GCC_REL}-x86_64-arm-none-linux-gnueabihf.tar.xz \ + | tar -Jx || exit 1 + +curl -L \ + ${ARM_MIRROR}/arm-gnu-toolchain-${GCC_REL}-x86_64-aarch64-none-linux-gnu.tar.xz \ + | tar -Jx || exit 1 diff --git a/deps/sse2neon/.clang-format b/deps/sse2neon/.clang-format new file mode 100644 index 000000000..828c2be41 --- /dev/null +++ b/deps/sse2neon/.clang-format @@ -0,0 +1,22 @@ +BasedOnStyle: Chromium +Language: Cpp +MaxEmptyLinesToKeep: 3 +IndentCaseLabels: false +AllowShortIfStatementsOnASingleLine: false +AllowShortCaseLabelsOnASingleLine: false +AllowShortLoopsOnASingleLine: false +DerivePointerAlignment: false +PointerAlignment: Right +SpaceAfterCStyleCast: true +TabWidth: 4 +UseTab: Never +IndentWidth: 4 +BreakBeforeBraces: Linux +AccessModifierOffset: -4 +ForEachMacros: + - SET_FOREACH + - RB_FOREACH +AlignEscapedNewlines: Left +AttributeMacros: + - FORCE_INLINE + - ALIGN_STRUCT diff --git a/deps/sse2neon/.gitattributes b/deps/sse2neon/.gitattributes new file mode 100644 index 000000000..90767749d --- /dev/null +++ b/deps/sse2neon/.gitattributes @@ -0,0 +1,4 @@ +*.md text=auto +LICENSE text=auto + +sse2neon.h -text linguist-language=c diff --git a/deps/sse2neon/.github/CODEOWNERS b/deps/sse2neon/.github/CODEOWNERS new file mode 100644 index 000000000..e836a849c --- /dev/null +++ b/deps/sse2neon/.github/CODEOWNERS @@ -0,0 +1,5 @@ +# Lines starting with '#' are comments. +# More details are here: https://help.github.com/articles/about-codeowners/ + +# Global codeowners: +* @jserv @howjmay diff --git a/deps/sse2neon/.github/workflows/main.yml b/deps/sse2neon/.github/workflows/main.yml new file mode 100644 index 000000000..4ee284b26 --- /dev/null +++ b/deps/sse2neon/.github/workflows/main.yml @@ -0,0 +1,127 @@ +name: GitHub Actions + +on: [push, pull_request] + +jobs: + host-x86: + runs-on: ubuntu-24.04 + strategy: + matrix: + arch: [x86_64] + cxx_compiler: [g++, clang++] + steps: + - name: checkout code + uses: actions/checkout@v4 + - name: build artifact + env: + CXX: ${{ matrix.cxx_compiler }} + run: | + sh .ci/cross-tool.sh + make check + sh .ci/cross-check.sh + + host-win: + runs-on: windows-2022 + strategy: + matrix: + arch: + - x86_64 + - armv7 + - aarch64 + env: + LLVM_MINGW_URL: https://github.com/mstorsjo/llvm-mingw/releases/download/20241217/llvm-mingw-20241217-msvcrt-x86_64.zip + defaults: + run: + shell: bash + steps: + - name: unpack llvm-mingw + run: | + curl -L -O $LLVM_MINGW_URL + unzip -q llvm-mingw-*.zip + rm llvm-mingw-*.zip + mv llvm-mingw-* "$HOME/llvm-mingw" + echo "$HOME/llvm-mingw/bin" >> $GITHUB_PATH + - name: checkout code + uses: actions/checkout@v4 + - name: build artifact + env: + CXX: ${{ matrix.arch }}-w64-mingw32-clang++ + run: mingw32-make processor=${{ matrix.arch }} + - name: run tests + if: matrix.arch == 'x86_64' + run: mingw32-make check + + host-arm: + runs-on: ubuntu-24.04 + strategy: + matrix: + arch_with_features: [ + {arch: armv7, feature: none, arch_cflags: none}, + {arch: aarch64, feature: none, arch_cflags: none}, + {arch: aarch64, feature: crypto+crc, arch_cflags: none}, + {arch: armv7, feature: none, arch_cflags: '-mcpu=cortex-a32 -mfpu=neon-fp-armv8'} + ] + cxx_compiler: [g++, clang++-15] + steps: + - name: checkout code + uses: actions/checkout@v4 + - name: build artifact + # The Github Action for non-x86 CPU + # https://github.com/uraimo/run-on-arch-action + uses: uraimo/run-on-arch-action@v2 + with: + arch: ${{ matrix.arch_with_features.arch }} + distro: ubuntu22.04 + # Speed up builds by storing container images in a GitHub package registry. + githubToken: ${{ github.token }} + env: | + CXX: ${{ matrix.cxx_compiler }} + ARCH_CFLAGS: ${{ matrix.arch_with_features.arch_cflags }} + install: | + apt-get update -q -y + apt-get install -q -y gcc "${{ matrix.cxx_compiler }}" make + run: | + make FEATURE=${{ matrix.arch_with_features.feature }} check + + host-win-msvc: + runs-on: windows-2022 + steps: + - name: checkout code + uses: actions/checkout@v4 + + - name: add msbuild to PATH + uses: microsoft/setup-msbuild@v2 + + - name: build artifact + run: msbuild sse2neon.vcxproj -t:rebuild -property:Configuration=Release -property:Platform=ARM64 + + - name: upload artifact + uses: actions/upload-artifact@master + with: + name: msvc-arm64-artifact + path: ARM64 + + test-win-msvc: + runs-on: ubuntu-24.04 + container: linaro/wine-arm64 + needs: host-win-msvc + steps: + - name: download artifact + uses: actions/download-artifact@master + with: + name: msvc-arm64-artifact + + - name: Run tests + run: wine-arm64 cmd.exe /c 'Release\sse2neon.exe' + + + coding-style: + runs-on: ubuntu-24.04 + steps: + - name: checkout code + uses: actions/checkout@v4 + - name: style check + run: | + sudo apt-get install -q -y clang-format-18 + sh .ci/check-format.sh + shell: bash diff --git a/deps/sse2neon/.gitignore b/deps/sse2neon/.gitignore new file mode 100644 index 000000000..e8b0dfb31 --- /dev/null +++ b/deps/sse2neon/.gitignore @@ -0,0 +1,10 @@ +*.exe +*.o +*.gch +tests/*.d +tests/main +gcc-arm-* +.vs/ +Debug/ +Release/ +*.vcxproj.user diff --git a/deps/sse2neon/CONTRIBUTING.md b/deps/sse2neon/CONTRIBUTING.md new file mode 100644 index 000000000..60afe860c --- /dev/null +++ b/deps/sse2neon/CONTRIBUTING.md @@ -0,0 +1,462 @@ +# Contributing to SSE2NEON + +:+1::tada: First off, thanks for taking the time to contribute! :tada::+1: + +The following is a set of guidelines for contributing to [SSE2NEON](https://github.com/DLTcollab/sse2neon), +hosted on GitHub. These are mostly guidelines, not rules. Use your best +judgment, and feel free to propose changes to this document in a pull request. + +## Issues + +This project uses GitHub Issues to track ongoing development, discuss project plans, and keep track of bugs. Be sure to search for existing issues before you create another one. + +Visit our [Issues page on GitHub](https://github.com/DLTcollab/sse2neon/issues) to search and submit. + +## Add New Intrinsic + +The new intrinsic conversion should be added in the `sse2neon.h` file, +and it should be placed in the correct classification with the alphabetical order. +The classification can be referenced from [Intel Intrinsics Guide](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html). + +Classification: `SSE`, `SSE2`, `SSE3`, `SSSE3`, `SSE4.1`, `SSE4.2` + +## Coding Convention + +We welcome all contributions from corporate, acaddemic and individual developers. However, there are a number of fundamental ground rules that you must adhere to in order to participate. These rules are outlined as follows: +* All code must adhere to the existing C coding style (see below). While we are somewhat flexible in basic style, you will adhere to what is currently in place. Uncommented, complicated algorithmic constructs will be rejected. +* All external pull requests must contain sufficient documentation in the pull request comments in order to be accepted. + +Software requirement: [clang-format](https://clang.llvm.org/docs/ClangFormat.html) version 18 or later. + +Use the command `$ clang-format -i *.[ch]` to enforce a consistent coding style. + +## Naming Conventions + +There are some general rules. +* Names with leading and trailing underscores are reserved for system purposes, and most systems use them for names that the user should not have to know. +* Function, typedef, and variable names, as well as struct, union, and enum tag names should be in lower case. +* Many function-like macros are in all CAPS. +* Avoid names that differ only in case, like `foo` and `Foo`. Similarly, avoid `foobar` and `foo_bar`. The potential for confusion is considerable. +* Similarly, avoid names that look like each other. On many terminals and printers, `l`, `1` and `I` look quite similar. A variable named `l` is particularly bad because it looks so much like the constant `1`. + +In general, global names (including enums) should have a common prefix (`SSE2NEON_` for macros and enum constants; `_sse2neon_` for functions) identifying the module that they belong with. Globals may alternatively be grouped in a global structure. Typedeffed names often have `_t` appended to their name. + +Avoid using names that might conflict with other names used in standard libraries. There may be more library code included in some systems than you need. Your program could also be extended in the future. + +## Coding Style for Modern C + +This coding style is a variation of the K&R style. Some general principles: honor tradition, but accept progress; be consistent; +embrace the latest C standards; embrace modern compilers, their static analysis +capabilities and sanitizers. + +### Indentation + +Use 4 spaces rather than tabs. + +### Line length + +All lines should generally be within 80 characters. Wrap long lines. +There are some good reasons behind this: +* It forces the developer to write more succinct code; +* Humans are better at processing information in smaller quantity portions; +* It helps users of vi/vim (and potentially other editors) who use vertical splits. + +### Comments + +Multi-line comments shall have the opening and closing characters +in a separate line, with the lines containing the content prefixed by a space +and the `*` characters for alignment, e.g., +```c +/* + * This is a multi-line comment. + */ + +/* One line comment. */ +``` + +Use multi-line comments for more elaborative descriptions or before more +significant logical block of code. + +Single-line comments shall be written in C89 style: +```c + return (uintptr_t) val; /* return a bitfield */ +``` + +Leave two spaces between the statement and the inline comment. + +### Spacing and brackets + +Use one space after the conditional or loop keyword, no spaces around +their brackets, and one space before the opening curly bracket. + +Functions (their declarations or calls), `sizeof` operator or similar +macros shall not have a space after their name/keyword or around the +brackets, e.g., +```c +unsigned total_len = offsetof(obj_t, items[n]); +unsigned obj_len = sizeof(obj_t); +``` + +Use brackets to avoid ambiguity and with operators such as `sizeof`, +but otherwise avoid redundant or excessive brackets. + +### Variable names and declarations + +- Use descriptive names for global variables and short names for locals. +Find the right balance between descriptive and succinct. + +- Use [snakecase](https://en.wikipedia.org/wiki/Snake_case). +Do not use "camelcase". + +- Do not use Hungarian notation or other unnecessary prefixing or suffixing. + +- Use the following spacing for pointers: +```c +const char *name; /* const pointer; '*' with the name and space before it */ +conf_t * const cfg; /* pointer to a const data; spaces around 'const' */ +const uint8_t * const charmap; /* const pointer and const data */ +const void * restrict key; /* const pointer which does not alias */ +``` + +### Type definitions + +Declarations shall be on the same line, e.g., +```c +typedef void (*dir_iter_t)(void *, const char *, struct dirent *); +``` + +_Typedef_ structures rather than pointers. Note that structures can be kept +opaque if they are not dereferenced outside the translation unit where they +are defined. Pointers can be _typedefed_ only if there is a very compelling +reason. + +New types may be suffixed with `_t`. Structure name, when used within the +translation unit, may be omitted, e.g.: + +```c +typedef struct { + unsigned if_index; + unsigned addr_len; + addr_t next_hop; +} route_info_t; +``` + +### Initialization + +Embrace C99 structure initialization where reasonable, e.g., +```c +static const crypto_ops_t openssl_ops = { + .create = openssl_crypto_create, + .destroy = openssl_crypto_destroy, + .encrypt = openssl_crypto_encrypt, + .decrypt = openssl_crypto_decrypt, + .hmac = openssl_crypto_hmac, +}; +``` + +Embrace C99 array initialization, especially for the state machines, e.g., +```c +static const uint8_t tcp_fsm[TCP_NSTATES][2][TCPFC_COUNT] = { + [TCPS_CLOSED] = { + [FLOW_FORW] = { + /* Handshake (1): initial SYN. */ + [TCPFC_SYN] = TCPS_SYN_SENT, + }, + }, + ... +} +``` + +### Control structures + +Try to make the control flow easy to follow. Avoid long convoluted logic +expressions; try to split them where possible (into inline functions, +separate if-statements, etc). + +The control structure keyword and the expression in the brackets should be +separated by a single space. The opening curly bracket shall be in the +same line, also separated by a single space. Example: + +```c + for (;;) { + obj = get_first(); + while ((obj = get_next(obj))) { + ... + } + if (done) + break; + } +``` + +Do not add inner spaces around the brackets. There should be one space after +the semicolon when `for` has expressions: +```c + for (unsigned i = 0; i < __arraycount(items); i++) { + ... + } +``` + +#### Avoid unnecessary nesting levels + +Avoid: +```c +int inspect(obj_t *obj) +{ + if (cond) { + ... + /* long code block */ + ... + return 0; + } + return -1; +} +``` + +Consider: +```c +int inspect(obj_t *obj) +{ + if (!cond) + return -1; + + ... + return 0; +} +``` + +However, do not make logic more convoluted. + +### `if` statements + +Curly brackets and spacing follow the K&R style: +```c + if (a == b) { + .. + } else if (a < b) { + ... + } else { + ... + } +``` + +Simple and succinct one-line if-statements may omit curly brackets: +```c + if (!valid) + return -1; +``` + +However, do prefer curly brackets with multi-line or more complex statements. +If one branch uses curly brackets, then all other branches shall use the +curly brackets too. + +Wrap long conditions to the if-statement indentation adding extra 4 spaces: +```c + if (some_long_expression && + another_expression) { + ... + } +``` + +#### Avoid redundant `else` + +Avoid: +```c + if (flag & F_FEATURE_X) { + ... + return 0; + } else { + return -1; + } +``` + +Consider: +```c + if (flag & F_FEATURE_X) { + ... + return 0; + } + return -1; +``` + +### `switch` statements + +Switch statements should have the `case` blocks at the same indentation +level, e.g.: +```c + switch (expr) { + case A: + ... + break; + case B: + /* fallthrough */ + case C: + ... + break; + } +``` + +If the case block does not break, then it is strongly recommended to add a +comment containing "fallthrough" to indicate it. Modern compilers can also +be configured to require such comment (see gcc `-Wimplicit-fallthrough`). + +### Function definitions + +The opening and closing curly brackets shall also be in the separate lines (K&R style). + +```c +ssize_t hex_write(FILE *stream, const void *buf, size_t len) +{ + ... +} +``` + +Do not use old style K&R style C definitions. + +### Object abstraction + +Objects are often "simulated" by the C programmers with a `struct` and +its "public API". To enforce the information hiding principle, it is a +good idea to define the structure in the source file (translation unit) +and provide only the _declaration_ in the header. For example, `obj.c`: + +```c +#include "obj.h" + +struct obj { + int value; +} + +obj_t *obj_create(void) +{ + return calloc(1, sizeof(obj_t)); +} + +void obj_destroy(obj_t *obj) +{ + free(obj); +} +``` + +With an example `obj.h`: +```c +#ifndef _OBJ_H_ +#define _OBJ_H_ + +typedef struct obj; + +obj_t *obj_create(void); +void obj_destroy(obj_t *); + +#endif +``` + +Such structuring will prevent direct access of the `obj_t` members outside +the `obj.c` source file. The implementation (of such "class" or "module") +may be large and abstracted within separate source files. In such case, +consider separating structures and "methods" into separate headers (think of +different visibility), for example `obj_impl.h` (private) and `obj.h` (public). + +Consider `crypto_impl.h`: +```c +#ifndef _CRYPTO_IMPL_H_ +#define _CRYPTO_IMPL_H_ + +#if !defined(__CRYPTO_PRIVATE) +#error "only to be used by the crypto modules" +#endif + +#include "crypto.h" + +typedef struct crypto { + crypto_cipher_t cipher; + void *key; + size_t key_len; + ... +} +... + +#endif +``` + +And `crypto.h` (public API): + +```c +#ifndef _CRYPTO_H_ +#define _CRYPTO_H_ + +typedef struct crypto crypto_t; + +crypto_t *crypto_create(crypto_cipher_t); +void crypto_destroy(crypto_t *); +... + +#endif +``` + +### Use reasonable types + +Use `unsigned` for general iterators; use `size_t` for general sizes; use +`ssize_t` to return a size which may include an error. Of course, consider +possible overflows. + +Avoid using `uint8_t` or `uint16_t` or other sub-word types for general +iterators and similar cases, unless programming for micro-controllers or +other constrained environments. + +C has rather peculiar _type promotion rules_ and unnecessary use of sub-word +types might contribute to a bug once in a while. + +### Embrace portability + +#### Byte-order + +Do not assume x86 or little-endian architecture. Use endian conversion +functions for operating the on-disk and on-the-wire structures or other +cases where it is appropriate. + +#### Types + +- Do not assume a particular 32-bit vs 64-bit architecture, e.g., do not +assume the size of `long` or `unsigned long`. Use `int64_t` or `uint64_t` +for the 8-byte integers. + +- Do not assume `char` is signed; for example, on Arm it is unsigned. + +- Use C99 macros for constant prefixes or formatting of the fixed-width +types. + +Use: +```c +#define SOME_CONSTANT (UINT64_C(1) << 48) +printf("val %" PRIu64 "\n", SOME_CONSTANT); +``` + +Do not use: +```c +#define SOME_CONSTANT (1ULL << 48) +printf("val %lld\n", SOME_CONSTANT); +``` + +#### Avoid unaligned access + +Do not assume unaligned access is safe. It is not safe on Arm, POWER, +and various other architectures. Moreover, even on x86 unaligned access +is slower. + +#### Avoid extreme portability + +Unless programming for micro-controllers or exotic CPU architectures, +focus on the common denominator of the modern CPU architectures, avoiding +the very maximum portability which can make the code unnecessarily cumbersome. + +Some examples: +- It is fair to assume `sizeof(int) == 4` since it is the case on all modern +mainstream architectures. PDP-11 era is long gone. +- Using `1U` instead of `UINT32_C(1)` or `(uint32_t) 1` is also fine. +- It is fair to assume that `NULL` is matching `(uintptr_t) 0` and it is fair +to `memset()` structures with zero. Non-zero `NULL` is for retro computing. + +## References +- [Linux kernel coding style](https://www.kernel.org/doc/html/latest/process/coding-style.html) +- 1999, Brian W. Kernighan and Rob Pike, The Practice of Programming, Addison–Wesley. +- 1993, Bill Shannon, [C Style and Coding Standards for SunOS](https://devnull-cz.github.io/unix-linux-prog-in-c/cstyle.ms.pdf) diff --git a/deps/sse2neon/LICENSE b/deps/sse2neon/LICENSE new file mode 100644 index 000000000..edc36de51 --- /dev/null +++ b/deps/sse2neon/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2015-2025 SSE2NEON Contributors + +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. diff --git a/deps/sse2neon/Makefile b/deps/sse2neon/Makefile new file mode 100644 index 000000000..0a80e68d2 --- /dev/null +++ b/deps/sse2neon/Makefile @@ -0,0 +1,93 @@ +ifndef CC +override CC = gcc +endif + +ifndef CXX +override CXX = g++ +endif + +ifndef CROSS_COMPILE + processor := $(shell uname -m) +else # CROSS_COMPILE was set + CC = $(CROSS_COMPILE)gcc + CXX = $(CROSS_COMPILE)g++ + CXXFLAGS += -static + LDFLAGS += -static + check_arm := $(shell echo | $(CROSS_COMPILE)cpp -dM - | grep " __ARM_ARCH " | cut -c20-) + ifeq ($(check_arm),8) + processor = aarch64 + else ifeq ($(check_arm),7) # detect ARMv7-A only + processor = arm + else + $(error Unsupported cross-compiler) + endif +endif + +EXEC_WRAPPER = +ifdef CROSS_COMPILE +EXEC_WRAPPER = qemu-$(processor) +endif + +# Follow platform-specific configurations +ARCH_CFLAGS ?= +ARCH_CFLAGS_IS_SET = +ifeq ($(ARCH_CFLAGS),) + ARCH_CFLAGS_IS_SET = true +endif +ifeq ($(ARCH_CFLAGS),none) + ARCH_CFLAGS_IS_SET = true +endif +ifdef ARCH_CFLAGS_IS_SET + ifeq ($(processor),$(filter $(processor),aarch64 arm64)) + override ARCH_CFLAGS := -march=armv8-a+fp+simd + else ifeq ($(processor),$(filter $(processor),i386 x86_64)) + override ARCH_CFLAGS := -maes -mpclmul -mssse3 -msse4.2 + else ifeq ($(processor),$(filter $(processor),arm armv7 armv7l)) + override ARCH_CFLAGS := -mfpu=neon + else + $(error Unsupported architecture) + endif +endif + +FEATURE ?= +ifneq ($(FEATURE),) +ifneq ($(FEATURE),none) +COMMA:= , +ARCH_CFLAGS := $(ARCH_CFLAGS)+$(subst $(COMMA),+,$(FEATURE)) +endif +endif + +CXXFLAGS += -Wall -Wcast-qual -Wconversion -I. $(ARCH_CFLAGS) -std=gnu++14 +LDFLAGS += -lm +OBJS = \ + tests/binding.o \ + tests/common.o \ + tests/impl.o \ + tests/main.o +deps := $(OBJS:%.o=%.o.d) + +.SUFFIXES: .o .cpp +.cpp.o: + $(CXX) -o $@ $(CXXFLAGS) -c -MMD -MF $@.d $< + +EXEC = tests/main + +$(EXEC): $(OBJS) + $(CXX) $(LDFLAGS) -o $@ $^ + +check: tests/main +ifeq ($(processor),$(filter $(processor),aarch64 arm64 arm armv7l)) + $(CC) $(ARCH_CFLAGS) -c sse2neon.h +endif + $(EXEC_WRAPPER) $^ + +indent: + @echo "Formatting files with clang-format.." + @if ! hash clang-format-18; then echo "clang-format-18 is required to indent"; fi + clang-format-18 -i sse2neon.h tests/*.cpp tests/*.h + +.PHONY: clean check format +clean: + $(RM) $(OBJS) $(EXEC) $(deps) sse2neon.h.gch + +-include $(deps) diff --git a/deps/sse2neon/README.md b/deps/sse2neon/README.md new file mode 100644 index 000000000..cf6a38275 --- /dev/null +++ b/deps/sse2neon/README.md @@ -0,0 +1,300 @@ +# sse2neon +![GitHub Actions](https://github.com/DLTcollab/sse2neon/workflows/GitHub%20Actions/badge.svg) + +A C/C++ header file that converts Intel SSE intrinsics to Arm/Aarch64 NEON intrinsics. + +## Introduction + +`sse2neon` is a translator of Intel SSE (Streaming SIMD Extensions) intrinsics +to [Arm NEON](https://developer.arm.com/architectures/instruction-sets/simd-isas/neon), +shortening the time needed to get an Arm working program that then can be used to +extract profiles and to identify hot paths in the code. +The header file `sse2neon.h` contains several of the functions provided by Intel +intrinsic headers such as ``, only implemented with NEON-based counterparts +to produce the exact semantics of the intrinsics. + +## Mapping and Coverage + +Header file | Extension | +---|---| +`` | MMX | +`` | SSE | +`` | SSE2 | +`` | SSE3 | +`` | SSSE3 | +`` | SSE4.1 | +`` | SSE4.2 | +`` | AES | + +`sse2neon` aims to support SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2 and AES extension. + +In order to deliver NEON-equivalent intrinsics for all SSE intrinsics used widely, +please be aware that some SSE intrinsics exist a direct mapping with a concrete +NEON-equivalent intrinsic. Others, unfortunately, lack a 1:1 mapping, meaning that +their equivalents are built utilizing a number of NEON intrinsics. + +For example, SSE intrinsic `_mm_loadu_si128` has a direct NEON mapping (`vld1q_s32`), +but SSE intrinsic `_mm_maddubs_epi16` has to be implemented with 13+ NEON instructions. + +### Floating-point compatibility + +Some conversions require several NEON intrinsics, which may produce inconsistent results +compared to their SSE counterparts due to differences in the arithmetic rules of IEEE-754. + +Taking a possible conversion of `_mm_rsqrt_ps` as example: + +```c +__m128 _mm_rsqrt_ps(__m128 in) +{ + float32x4_t out = vrsqrteq_f32(vreinterpretq_f32_m128(in)); + + out = vmulq_f32( + out, vrsqrtsq_f32(vmulq_f32(vreinterpretq_f32_m128(in), out), out)); + + return vreinterpretq_m128_f32(out); +} +``` + +The `_mm_rsqrt_ps` conversion will produce NaN if a source value is `0.0` (first INF for the +reciprocal square root of `0.0`, then INF * `0.0` using `vmulq_f32`). In contrast, +the SSE counterpart produces INF if a source value is `0.0`. +As a result, additional treatments should be applied to ensure consistency between the conversion and its SSE counterpart. + +## Requirement + +Developers are advised to utilize sse2neon.h with GCC version 10 or higher, or Clang version 11 or higher. While sse2neon.h might be compatible with earlier versions, certain vector operation errors have been identified in those versions. For further details, refer to the discussion in issue [#622](https://github.com/DLTcollab/sse2neon/issues/622). + +## Usage + +- Put the file `sse2neon.h` in to your source code directory. + +- Locate the following SSE header files included in the code: +```C +#include +#include +``` + {p,t,s,n,w}mmintrin.h could be replaceable as well. + +- Replace them with: +```C +#include "sse2neon.h" +``` +- If you target Windows Arm64EC, pass `/D_DISABLE_SOFTINTRIN_=1` to MSVC or add `#define _DISABLE_SOFTINTRIN_ 1` in before `#include` any Windows header files to disable implicit inclusion of SSE header files. +- Explicitly specify platform-specific options to gcc/clang compilers. + * On ARMv8-A 64-bit targets, you should specify the following compiler option: (Remove `crypto` and/or `crc` if your architecture does not support cryptographic and/or CRC32 extensions) + ```shell + -march=armv8-a+fp+simd+crypto+crc + ``` + * On ARMv8-A 32-bit targets, you should specify the following compiler option: + ```shell + -mfpu=neon-fp-armv8 + ``` + * On ARMv7-A targets, you need to append the following compiler option: + ```shell + -mfpu=neon + ``` + +## Compile-time Configurations + +Though floating-point operations in NEON use the IEEE single-precision format, NEON does not fully comply to the IEEE standard when inputs or results are denormal or NaN values for minimizing power consumption as well as maximizing performance. +Considering the balance between correctness and performance, `sse2neon` recognizes the following compile-time configurations: +* `SSE2NEON_PRECISE_MINMAX`: Enable precise implementation of `_mm_min_{ps,pd}` and `_mm_max_{ps,pd}`. If you need consistent results such as handling with NaN values, enable it. +* `SSE2NEON_PRECISE_DIV`: Enable precise implementation of `_mm_rcp_ps` and `_mm_div_ps` by additional Netwon-Raphson iteration for accuracy. +* `SSE2NEON_PRECISE_SQRT`: Enable precise implementation of `_mm_sqrt_ps` and `_mm_rsqrt_ps` by additional Netwon-Raphson iteration for accuracy. +* `SSE2NEON_PRECISE_DP`: Enable precise implementation of `_mm_dp_pd`. When the conditional bit is not set, the corresponding multiplication would not be executed. +* `SSE2NEON_SUPPRESS_WARNINGS`: Set this macro to disable the warning which is emitted by default when optimizations are enabled. + +The above are turned off by default, and you should define the corresponding macro(s) as `1` before including `sse2neon.h` if you need the precise implementations. + +## Run Built-in Test Suite + +`sse2neon` provides a unified interface for developing test cases. These test +cases are located in `tests` directory, and the input data is specified at +runtime. Use the following commands to perform test cases: +```shell +$ make check +``` + +For running check with enabling features, you can use assign the features with `FEATURE` command. +If `none` is assigned, then the command will be the same as simply calling `make check`. +The following command enable `crypto` and `crc` features in the tests. +``` +$ make FEATURE=crypto+crc check +``` + +For running check on certain CPU, setting the mode of FPU, etc., +you can also assign the desired options with `ARCH_CFLAGS` command. +If `none` is assigned, the command acts as same as calling `make check`. +For instance, to run tests on Cortex-A53 with enabling ARM VFPv4 extension and NEON: +``` +$ make ARCH_CFLAGS="-mcpu=cortex-a53 -mfpu=neon-vfpv4" check +``` + +### Running tests on hosts other than ARM platform + +For running tests on hosts other than ARM platform, +you can specify GNU toolchain for cross compilation with `CROSS_COMPILE` command. +[QEMU](https://www.qemu.org/) should be installed in advance. + +For ARMv8-A running in 64-bit mode type: +```shell +$ make CROSS_COMPILE=aarch64-linux-gnu- check # ARMv8-A +``` + +For ARMv7-A type: +```shell +$ make CROSS_COMPILE=arm-linux-gnueabihf- check # ARMv7-A +``` + +For ARMv8-A running in 32-bit mode (A32 instruction set) type: +```shell +$ make \ + CROSS_COMPILE=arm-linux-gnueabihf- \ + ARCH_CFLAGS="-mcpu=cortex-a32 -mfpu=neon-fp-armv8" \ + check +``` + +Check the details via [Test Suite for SSE2NEON](tests/README.md). + +### Optimization + +The SSE2NEON project is designed with performance-sensitive scenarios in mind, and as such, optimization options (e.g. `O1`, `O2`) can lead to misbehavior under specific circumstances. For example, frequent changes to the rounding mode or repeated calls to `_MM_SET_DENORMALS_ZERO_MODE()` may introduce unintended behavior. + +Enforcing no optimizations for specific intrinsics could solve these boundary cases but may negatively impact general performance. Therefore, we have decided to prioritize performance and shift the responsibility for handling such edge cases to developers. + +It is important to be aware of these potential pitfalls when enabling optimizations and ensure that your code accounts for these scenarios if necessary. + + +## Adoptions +Here is a partial list of open source projects that have adopted `sse2neon` for Arm/Aarch64 support. +* [Aaru Data Preservation Suite](https://www.aaru.app/) is a fully-featured software package to preserve all storage media from the very old to the cutting edge, as well as to give detailed information about any supported image file (whether from Aaru or not) and to extract the files from those images. +* [aether-game-utils](https://github.com/johnhues/aether-game-utils) is a collection of cross platform utilities for quickly creating small game prototypes in C++. +* [ALE](https://github.com/sc932/ALE), aka Assembly Likelihood Evaluation, is a tool for evaluating accuracy of assemblies without the need of a reference genome. +* [AnchorWave](https://github.com/baoxingsong/AnchorWave), Anchored Wavefront Alignment, identifies collinear regions via conserved anchors (full-length CDS and full-length exon have been implemented currently) and breaks collinear regions into shorter fragments, i.e., anchor and inter-anchor intervals. +* [ATAK-CIV](https://github.com/deptofdefense/AndroidTacticalAssaultKit-CIV), Android Tactical Assault Kit for Civilian Use, is the official geospatial-temporal and situational awareness tool used by the US Government. +* [Apache Doris](https://doris.apache.org/) is a Massively Parallel Processing (MPP) based interactive SQL data warehousing for reporting and analysis. +* [Apache Impala](https://impala.apache.org/) is a lightning-fast, distributed SQL queries for petabytes of data stored in Apache Hadoop clusters. +* [Apache Kudu](https://kudu.apache.org/) completes Hadoop's storage layer to enable fast analytics on fast data. +* [apollo](https://github.com/ApolloAuto/apollo) is a high performance, flexible architecture which accelerates the development of Autonomous Vehicles. +* [ares](https://github.com/ares-emulator/ares) is a cross-platform, open source, multi-system emulator, focusing on accuracy and preservation. +* [ART](https://github.com/dinosaure/art) is an implementation in OCaml of [Adaptive Radix Tree](https://db.in.tum.de/~leis/papers/ART.pdf) (ART). +* [Async](https://github.com/romange/async) is a set of c++ primitives that allows efficient and rapid development in C++17 on GNU/Linux systems. +* [avec](https://github.com/unevens/avec) is a little library for using SIMD instructions on both x86 and Arm. +* [BEAGLE](https://github.com/beagle-dev/beagle-lib) is a high-performance library that can perform the core calculations at the heart of most Bayesian and Maximum Likelihood phylogenetics packages. +* [BitMagic](https://github.com/tlk00/BitMagic) implements compressed bit-vectors and containers (vectors) based on ideas of bit-slicing transform and Rank-Select compression, offering sets of method to architect your applications to use HPC techniques to save memory (thus be able to fit more data in one compute unit) and improve storage and traffic patterns when storing data vectors and models in files or object stores. +* [bipartite\_motif\_finder](https://github.com/soedinglab/bipartite_motif_finder) as known as BMF (Bipartite Motif Finder) is an open source tool for finding co-occurences of sequence motifs in genomic sequences. +* [Blender](https://www.blender.org/) is the free and open source 3D creation suite, supporting the entirety of the 3D pipeline. +* [Boo](https://github.com/AxioDL/boo) is a cross-platform windowing and event manager similar to SDL or SFML, with additional 3D rendering functionality. +* [Brickworks](https://github.com/sdangelo/brickworks) is a music DSP toolkit that supplies with the fundamental building blocks for creating and enhancing audio engines on any platform. +* [CARTA](https://github.com/CARTAvis/carta-backend) is a new visualization tool designed for viewing radio astronomy images in CASA, FITS, MIRIAD, and HDF5 formats (using the IDIA custom schema for HDF5). +* [Catcoon](https://github.com/i-evi/catcoon) is a [feedforward neural network](https://en.wikipedia.org/wiki/Feedforward_neural_network) implementation in C. +* [compute-runtime](https://github.com/intel/compute-runtime), the Intel Graphics Compute Runtime for oneAPI Level Zero and OpenCL Driver, provides compute API support (Level Zero, OpenCL) for Intel graphics hardware architectures (HD Graphics, Xe). +* [contour](https://github.com/contour-terminal/contour) is a modern and actually fast virtual terminal emulator. +* [Cog](https://github.com/losnoco/Cog) is a free and open source audio player for macOS. +* [dab-cmdline](https://github.com/JvanKatwijk/dab-cmdline) provides entries for the functionality to handle Digital audio broadcasting (DAB)/DAB+ through some simple calls. +* [DISTRHO](https://distrho.sourceforge.io/) is an open-source project for Cross-Platform Audio Plugins. +* [Dragonfly](https://github.com/dragonflydb/dragonfly) is a modern in-memory datastore, fully compatible with Redis and Memcached APIs. +* [EDGE](https://github.com/3dfxdev/EDGE) is an advanced OpenGL source port spawned from the DOOM engine, with focus on easy development and expansion for modders and end-users. +* [Embree](https://github.com/embree/embree) is a collection of high-performance ray tracing kernels. Its target users are graphics application engineers who want to improve the performance of their photo-realistic rendering application by leveraging Embree's performance-optimized ray tracing kernels. +* [emp-tool](https://github.com/emp-toolkit/emp-tool) aims to provide a benchmark for secure computation and allowing other researchers to experiment and extend. +* [Exudyn](https://github.com/jgerstmayr/EXUDYN) is a C++ based Python library for efficient simulation of flexible multibody dynamics systems. +* [FoundationDB](https://www.foundationdb.org) is a distributed database designed to handle large volumes of structured data across clusters of commodity servers. +* [fsrc](https://github.com/elsamuko/fsrc) is capable of searching large codebases for text snippets. +* [GDAL](https://gdal.org) is a translator library for raster and vector geospatial data formats that comes with a variety of useful command line utilities for data translation and processing. +* [gmmlib](https://github.com/intel/gmmlib) is the Intel Graphics Memory Management Library that provides device specific and buffer management for the Intel Graphics Compute Runtime for OpenCL and the Intel Media Driver for VAAPI. +* [HISE](https://github.com/christophhart/HISE) is a cross-platform open source audio application for building virtual instruments, emphasizing on sampling, but includes some basic synthesis features for making hybrid instruments as well as audio effects. +* [iqtree2](https://github.com/iqtree/iqtree2) is an efficient and versatile stochastic implementation to infer phylogenetic trees by maximum likelihood. +* [indelPost](https://github.com/stjude/indelPost) is a Python library for indel processing via realignment and read-based phasing to resolve alignment ambiguities. +* [IResearch](https://github.com/iresearch-toolkit/iresearch) is a cross-platform, high-performance document oriented search engine library written entirely in C++ with the focus on a pluggability of different ranking/similarity models. +* [Kraken](https://github.com/Wabi-Studios/Kraken) is a 3D animation platform redefining animation composition, collaborative workflows, simulation engines, skeletal rigging systems, and look development from storyboard to final render. +* [kram](https://github.com/alecazam/kram) is a wrapper to several popular encoders to and from PNG/[KTX](https://www.khronos.org/opengles/sdk/tools/KTX/file_format_spec/) files with [LDR/HDR and BC/ASTC/ETC2](https://developer.arm.com/solutions/graphics-and-gaming/developer-guides/learn-the-basics/adaptive-scalable-texture-compression/single-page). +* [Krita](https://invent.kde.org/graphics/krita) is a cross-platform application that offers an end-to-end solution for creating digital art files from scratch built on the KDE and Qt frameworks. +* [libCML](https://github.com/belosthomas/libCML) is a SLAM library and scientific tool, which include a novel fast thread-safe graph map implementation. +* [libhdfs3](https://github.com/ClickHouse/libhdfs3) is implemented based on native Hadoop RPC protocol and Hadoop Distributed File System (HDFS), a highly fault-tolerant distributed fs, data transfer protocol. +* [libpostal](https://github.com/openvenues/libpostal) is a C library for parsing/normalizing street addresses around the world using statistical NLP and open data. +* [libscapi](https://github.com/cryptobiu/libscapi) stands for the "Secure Computation API", providing reliable, efficient, and highly flexible cryptographic infrastructure. +* [libstreamvbyte](https://github.com/wst24365888/libstreamvbyte) is a C++ implementation of [StreamVByte](https://arxiv.org/abs/1709.08990). +* [libmatoya](https://github.com/matoya/libmatoya) is a cross-platform application development library, providing various features such as common cryptography tasks. +* [Loosejaw](https://github.com/TheHolyDiver/Loosejaw) provides deep hybrid CPU/GPU digital signal processing. +* [Madronalib](https://github.com/madronalabs/madronalib) enables efficient audio DSP on SIMD processors with readable and brief C++ code. +* [minimap2](https://github.com/lh3/minimap2) is a versatile sequence alignment program that aligns DNA or mRNA sequences against a large reference database. +* [mixed-fem](https://github.com/tytrusty/mixed-fem) is an open source reference implementation of Mixed Variational Finite Elements for Implicit Simulation of Deformables. +* [MMseqs2](https://github.com/soedinglab/MMseqs2) (Many-against-Many sequence searching) is a software suite to search and cluster huge protein and nucleotide sequence sets. +* [MRIcroGL](https://github.com/rordenlab/MRIcroGL) is a cross-platform tool for viewing NIfTI, DICOM, MGH, MHD, NRRD, AFNI format medical images. +* [N2](https://github.com/oddconcepts/n2o) is an approximate nearest neighborhoods algorithm library written in C++, providing a much faster search speed than other implementations when modeling large dataset. +* [nanors](https://github.com/sleepybishop/nanors) is a tiny, performant implementation of [Reed-Solomon codes](https://en.wikipedia.org/wiki/Reed%E2%80%93Solomon_error_correction), capable of reaching multi-gigabit speeds on a single core. +* [niimath](https://github.com/rordenlab/niimath) is a general image calculator with superior performance. +* [NVIDIA GameWorks](https://developer.nvidia.com/gameworks-source-github) has been already used in a lot of games. These repositories are public on GitHub. +* [Nx Meta Platform Open Source Components](https://github.com/networkoptix/nx_open) are used to build all Powered-by-Nx products including Nx Witness Video Management System (VMS). +* [ofxNDI](https://github.com/leadedge/ofxNDI) is an [openFrameworks](https://openframeworks.cc/) addon to allow sending and receiving images over a network using the [NewTek](https://en.wikipedia.org/wiki/NewTek) Network Device Protocol. +* [OGRE](https://github.com/OGRECave/ogre) is a scene-oriented, flexible 3D engine written in C++ designed to make it easier and more intuitive for developers to produce games and demos utilising 3D hardware. +* [Olive](https://github.com/olive-editor/olive) is a free non-linear video editor for Windows, macOS, and Linux. +* [OpenColorIO](https://github.com/AcademySoftwareFoundation/OpenColorIO) a complete color management solution geared towards motion picture production with an emphasis on visual effects and computer animation. +* [OpenXRay](https://github.com/OpenXRay/xray-16) is an improved version of the X-Ray engine, used in world famous S.T.A.L.K.E.R. game series by GSC Game World. +* [parallel-n64](https://github.com/libretro/parallel-n64) is an optimized/rewritten Nintendo 64 emulator made specifically for [Libretro](https://www.libretro.com/). +* [Pathfinder C++](https://github.com/floppyhammer/pathfinder-cpp) is a fast, practical, GPU-based rasterizer for fonts and vector graphics using Vulkan and C++. +* [PFFFT](https://github.com/marton78/pffft) does 1D Fast Fourier Transforms, of single precision real and complex vectors. +* [pixaccess](https://github.com/oliverue/pixaccess) provides the abstractions for integer and float bitmaps, pixels, and aliased (nearest neighbor) and anti-aliased (bi-linearly interpolated) pixel access. +* [PlutoSDR Firmware](https://github.com/seanstone/plutosdr-fw) is the customized firmware for the [PlutoSDR](https://wiki.analog.com/university/tools/pluto) that can be used to introduce fundamentals of Software Defined Radio (SDR) or Radio Frequency (RF) or Communications as advanced topics in electrical engineering in a self or instructor lead setting. +* [PowerToys](https://github.com/microsoft/PowerToys) is a set of utilities for power users to tune and streamline their Windows experience for greater productivity. +* [Pygame](https://www.pygame.org) is cross-platform and designed to make it easy to write multimedia software, such as games, in Python. +* [R:RandomFieldsUtils](https://cran.r-project.org/web/packages/RandomFieldsUtils) provides various utilities might be used in spatial statistics and elsewhere. (CRAN) +* [RAxML](https://github.com/stamatak/standard-RAxML) is tool for Phylogenetic Analysis and Post-Analysis of Large Phylogenies. +* [ReHLDS](https://github.com/gennadykataev/rehlds) is fully compatible with latest Half-Life Dedicated Server (HLDS) with a lot of defects and (potential) bugs fixed. +* [rkcommon](https://github.com/ospray/rkcommon) represents a common set of C++ infrastructure and CMake utilities used by various components of [Intel oneAPI Rendering Toolkit](https://www.intel.com/content/www/us/en/developer/tools/oneapi/rendering-toolkit.html). +* [RPCS3](https://github.com/RPCS3/rpcs3) is the world's first free and open-source PlayStation 3 emulator/debugger, written in C++. +* [simd\_utils](https://github.com/JishinMaster/simd_utils) is a header-only library implementing common mathematical functions using SIMD intrinsics. +* [Sire](https://github.com/OpenBioSim/sire) is a molecular modelling framework that provides extensive functionality to manipulate representations of biomolecular systems. +* [SMhasher](https://github.com/rurban/smhasher) provides comprehensive Hash function quality and speed tests. +* [SNN++](https://github.com/ianmkim/snnpp) implements a single layer non linear Spiking Neural Network for images classification and generation. +* [Spack](https://github.com/spack/spack) is a multi-platform package manager that builds and installs multiple versions and configurations of software. +* [SRA](https://github.com/ncbi/sra-tools) is a collection of tools and libraries for using data in the [INSDC Sequence Read Archives](https://www.ncbi.nlm.nih.gov/sra/docs/). +* [srsLTE](https://github.com/srsLTE/srsLTE) is an open source SDR LTE software suite. +* [SSW](https://github.com/mengyao/Complete-Striped-Smith-Waterman-Library) is a fast implementation of the [Smith-Waterman algorithm](https://en.wikipedia.org/wiki/Smith%E2%80%93Waterman_algorithm), which uses the SIMD instructions to parallelize the algorithm at the instruction level. +* [Surge](https://github.com/surge-synthesizer/surge) is an open source digital synthesizer. +* [The Forge](https://github.com/ConfettiFX/The-Forge) is a cross-platform rendering framework, providing building blocks to write your own game engine. +* [Typesense](https://github.com/typesense/typesense) is a fast, typo-tolerant search engine for building delightful search experiences. +* [Vcpkg](https://github.com/microsoft/vcpkg) is a C++ Library Manager for Windows, Linux, and macOS. +* [VelocyPack](https://github.com/arangodb/velocypack) is a fast and compact format for serialization and storage. +* [VOLK](https://github.com/gnuradio/volk), Vector-Optimized Library of Kernel, is a sub-project of [GNU Radio](https://www.gnuradio.org/). +* [Vowpal Wabbit](https://github.com/VowpalWabbit/vowpal_wabbit) is a machine learning system which pushes the frontier of machine learning with techniques such as online, hashing, allreduce, reductions, learning2search, active, and interactive learning. +* [Winter](https://github.com/rosenthj/Winter) is the top rated chess engine from Switzerland and has competed at top invite only computer chess events. +* [XEVE](https://github.com/mpeg5/xeve) (eXtra-fast Essential Video Encoder) is an open sourced and fast MPEG-5 EVC encoder. +* [XMRig](https://github.com/xmrig/xmrig) is an open source CPU miner for [Monero](https://web.getmonero.org/) cryptocurrency. +* [xsimd](https://github.com/xtensor-stack/xsimd) provides a unified means for using SIMD intrinsics and parallelized, optimized mathematical functions. +* [YACL](https://github.com/secretflow/yasl) is a C++ library contains modules and utilities which [SecretFlow](https://github.com/secretflow) code depends on. + +## Related Projects +* [SIMDe](https://github.com/simd-everywhere/simde): fast and portable implementations of SIMD + intrinsics on hardware which doesn't natively support them, such as calling SSE functions on ARM. +* [CatBoost's sse2neon](https://github.com/catboost/catboost/blob/master/library/cpp/sse/sse2neon.h) +* [ARM\_NEON\_2\_x86\_SSE](https://github.com/intel/ARM_NEON_2_x86_SSE) +* [AvxToNeon](https://github.com/kunpengcompute/AvxToNeon) +* [sse2rvv](https://github.com/FeddrickAquino/sse2rvv): C header file that converts Intel SSE intrinsics to RISC-V Vector intrinsic. +* [sse2msa](https://github.com/i-evi/sse2msa): A C/C++ header file that converts Intel SSE intrinsics to MIPS/MIPS64 MSA intrinsics. +* [sse2zig](https://github.com/aqrit/sse2zig): Intel SSE intrinsics mapped to [Zig](https://ziglang.org/) vector extensions. +* [POWER/PowerPC support for GCC](https://github.com/gcc-mirror/gcc/blob/master/gcc/config/rs6000) contains a series of headers simplifying porting x86\_64 code that makes explicit use of Intel intrinsics to powerpc64le (pure little-endian mode that has been introduced with the [POWER8](https://en.wikipedia.org/wiki/POWER8)). + - implementation: [xmmintrin.h](https://github.com/gcc-mirror/gcc/blob/master/gcc/config/rs6000/xmmintrin.h), [emmintrin.h](https://github.com/gcc-mirror/gcc/blob/master/gcc/config/rs6000/emmintrin.h), [pmmintrin.h](https://github.com/gcc-mirror/gcc/blob/master/gcc/config/rs6000/pmmintrin.h), [tmmintrin.h](https://github.com/gcc-mirror/gcc/blob/master/gcc/config/rs6000/tmmintrin.h), [smmintrin.h](https://github.com/gcc-mirror/gcc/blob/master/gcc/config/rs6000/smmintrin.h) + +## Reference +* [Intel Intrinsics Guide](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html) +* [Microsoft: x86 intrinsics list](https://learn.microsoft.com/en-us/cpp/intrinsics/x86-intrinsics-list) +* [Arm Neon Intrinsics Reference](https://developer.arm.com/architectures/instruction-sets/simd-isas/neon/intrinsics) +* [Neon Programmer's Guide for Armv8-A](https://developer.arm.com/architectures/instruction-sets/simd-isas/neon/neon-programmers-guide-for-armv8-a) +* [NEON Programmer's Guide](https://static.docs.arm.com/den0018/a/DEN0018A_neon_programmers_guide_en.pdf) +* [qemu/target/i386/ops\_sse.h](https://github.com/qemu/qemu/blob/master/target/i386/ops_sse.h): Comprehensive SSE instruction emulation in C. Ideal for semantic checks. +* [Porting Takua Renderer to 64-bit ARM- Part 1](https://blog.yiningkarlli.com/2021/05/porting-takua-to-arm-pt1.html) +* [Porting Takua Renderer to 64-bit ARM- Part 2](https://blog.yiningkarlli.com/2021/07/porting-takua-to-arm-pt2.html) +* [Comparing SIMD on x86-64 and arm64](https://blog.yiningkarlli.com/2021/09/neon-vs-sse.html) +* [Port with SSE2Neon and SIMDe](https://developer.arm.com/documentation/102581/0200/Port-with-SSE2Neon-and-SIMDe) +* [Genomics: Optimizing the BWA aligner for Arm Servers](https://community.arm.com/arm-community-blogs/b/high-performance-computing-blog/posts/optimizing-genomics-and-the-bwa-aligner-for-arm-servers) +* [Bit twiddling with Arm Neon: beating SSE movemasks, counting bits and more](https://community.arm.com/arm-community-blogs/b/infrastructure-solutions-blog/posts/porting-x86-vector-bitmask-optimizations-to-arm-neon) +* [C/C++ on Graviton](https://github.com/aws/aws-graviton-getting-started/blob/main/c-c%2B%2B.md) +* [C/C++ on NVIDIA Grace](https://nvidia.github.io/grace-cpu-benchmarking-guide/developer/languages/c-c++.html) +* [Tune graphics-intensive games for Apple silicon](https://developer.apple.com/games/pathway/) +* [Benchmarking and Testing of Qualcomm Snapdragon System-on-Chip for JPL Space Applications and Missions](https://ieeexplore.ieee.org/abstract/document/9843518) +* [Spotlight: Petrobras Speeds Up Linear Solvers for Reservoir Simulation Using NVIDIA Grace CPU](https://developer.nvidia.com/blog/spotlight-petrobras-accelerates-linear-solvers-for-reservoir-simulation-using-nvidia-grace-cpu/) + +## Licensing + +`sse2neon` is freely redistributable under the MIT License. diff --git a/deps/sse2neon/sse2neon.h b/deps/sse2neon/sse2neon.h new file mode 100644 index 000000000..67728aac4 --- /dev/null +++ b/deps/sse2neon/sse2neon.h @@ -0,0 +1,9447 @@ +#ifndef SSE2NEON_H +#define SSE2NEON_H + +/* + * sse2neon is freely redistributable under the MIT License. + * + * Copyright (c) 2015-2024 SSE2NEON Contributors. + * + * 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. + */ + +// This header file provides a simple API translation layer +// between SSE intrinsics to their corresponding Arm/Aarch64 NEON versions +// +// Contributors to this work are: +// John W. Ratcliff +// Brandon Rowlett +// Ken Fast +// Eric van Beurden +// Alexander Potylitsin +// Hasindu Gamaarachchi +// Jim Huang +// Mark Cheng +// Malcolm James MacLeod +// Devin Hussey (easyaspi314) +// Sebastian Pop +// Developer Ecosystem Engineering +// Danila Kutenin +// François Turban (JishinMaster) +// Pei-Hsuan Hung +// Yang-Hao Yuan +// Syoyo Fujita +// Brecht Van Lommel +// Jonathan Hue +// Cuda Chen +// Aymen Qader +// Anthony Roberts +// Sean Luchen + +/* Tunable configurations */ + +/* Enable precise implementation of math operations + * This would slow down the computation a bit, but gives consistent result with + * x86 SSE. (e.g. would solve a hole or NaN pixel in the rendering result) + */ +/* _mm_min|max_ps|ss|pd|sd */ +#ifndef SSE2NEON_PRECISE_MINMAX +#define SSE2NEON_PRECISE_MINMAX (0) +#endif +/* _mm_rcp_ps */ +#ifndef SSE2NEON_PRECISE_DIV +#define SSE2NEON_PRECISE_DIV (0) +#endif +/* _mm_sqrt_ps and _mm_rsqrt_ps */ +#ifndef SSE2NEON_PRECISE_SQRT +#define SSE2NEON_PRECISE_SQRT (0) +#endif +/* _mm_dp_pd */ +#ifndef SSE2NEON_PRECISE_DP +#define SSE2NEON_PRECISE_DP (0) +#endif + +/* Enable inclusion of windows.h on MSVC platforms + * This makes _mm_clflush functional on windows, as there is no builtin. + */ +#ifndef SSE2NEON_INCLUDE_WINDOWS_H +#define SSE2NEON_INCLUDE_WINDOWS_H (0) +#endif + +/* compiler specific definitions */ +#if defined(__GNUC__) || defined(__clang__) +#pragma push_macro("FORCE_INLINE") +#pragma push_macro("ALIGN_STRUCT") +#define FORCE_INLINE static inline __attribute__((always_inline)) +#define ALIGN_STRUCT(x) __attribute__((aligned(x))) +#define _sse2neon_likely(x) __builtin_expect(!!(x), 1) +#define _sse2neon_unlikely(x) __builtin_expect(!!(x), 0) +#elif defined(_MSC_VER) +#if _MSVC_TRADITIONAL +#error Using the traditional MSVC preprocessor is not supported! Use /Zc:preprocessor instead. +#endif +#ifndef FORCE_INLINE +#define FORCE_INLINE static inline +#endif +#ifndef ALIGN_STRUCT +#define ALIGN_STRUCT(x) __declspec(align(x)) +#endif +#define _sse2neon_likely(x) (x) +#define _sse2neon_unlikely(x) (x) +#else +#pragma message("Macro name collisions may happen with unsupported compilers.") +#endif + +#if !defined(__clang__) && defined(__GNUC__) && __GNUC__ < 10 +#warning "GCC versions earlier than 10 are not supported." +#endif + +#if defined(__OPTIMIZE__) && !defined(SSE2NEON_SUPPRESS_WARNINGS) +#warning \ + "Report any potential compiler optimization issues when using SSE2NEON. See the 'Optimization' section at https://github.com/DLTcollab/sse2neon." +#endif + +/* C language does not allow initializing a variable with a function call. */ +#ifdef __cplusplus +#define _sse2neon_const static const +#else +#define _sse2neon_const const +#endif + +#include +#include +#include +#include + +FORCE_INLINE double sse2neon_recast_u64_f64(uint64_t val) +{ + double tmp; + memcpy(&tmp, &val, sizeof(uint64_t)); + return tmp; +} +FORCE_INLINE int64_t sse2neon_recast_f64_s64(double val) +{ + int64_t tmp; + memcpy(&tmp, &val, sizeof(uint64_t)); + return tmp; +} + +#if defined(_WIN32) && !defined(__MINGW32__) +/* Definitions for _mm_{malloc,free} are provided by from MSVC. */ +#define SSE2NEON_ALLOC_DEFINED +#endif + +/* If using MSVC */ +#ifdef _MSC_VER +#if defined(_M_ARM64EC) +#define _DISABLE_SOFTINTRIN_ 1 +#endif +#include +#if SSE2NEON_INCLUDE_WINDOWS_H +#include +#include +#endif + +#if !defined(__cplusplus) +#error SSE2NEON only supports C++ compilation with this compiler +#endif + +#ifdef SSE2NEON_ALLOC_DEFINED +#include +#endif + +#if (defined(_M_AMD64) || defined(__x86_64__)) || \ + (defined(_M_ARM64) || defined(_M_ARM64EC) || defined(__arm64__)) +#define SSE2NEON_HAS_BITSCAN64 +#endif +#endif + +#if defined(__GNUC__) || defined(__clang__) +#define _sse2neon_define0(type, s, body) \ + __extension__({ \ + type _a = (s); \ + body \ + }) +#define _sse2neon_define1(type, s, body) \ + __extension__({ \ + type _a = (s); \ + body \ + }) +#define _sse2neon_define2(type, a, b, body) \ + __extension__({ \ + type _a = (a), _b = (b); \ + body \ + }) +#define _sse2neon_return(ret) (ret) +#else +#define _sse2neon_define0(type, a, body) [=](type _a) { body }(a) +#define _sse2neon_define1(type, a, body) [](type _a) { body }(a) +#define _sse2neon_define2(type, a, b, body) \ + [](type _a, type _b) { body }((a), (b)) +#define _sse2neon_return(ret) return ret +#endif + +#define _sse2neon_init(...) \ + { \ + __VA_ARGS__ \ + } + +/* Compiler barrier */ +#if defined(_MSC_VER) && !defined(__clang__) +#define SSE2NEON_BARRIER() _ReadWriteBarrier() +#else +#define SSE2NEON_BARRIER() \ + do { \ + __asm__ __volatile__("" ::: "memory"); \ + (void) 0; \ + } while (0) +#endif + +/* Memory barriers + * __atomic_thread_fence does not include a compiler barrier; instead, + * the barrier is part of __atomic_load/__atomic_store's "volatile-like" + * semantics. + */ +#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L) +#include +#endif + +FORCE_INLINE void _sse2neon_smp_mb(void) +{ + SSE2NEON_BARRIER(); +#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L) && \ + !defined(__STDC_NO_ATOMICS__) + atomic_thread_fence(memory_order_seq_cst); +#elif defined(__GNUC__) || defined(__clang__) + __atomic_thread_fence(__ATOMIC_SEQ_CST); +#else /* MSVC */ + __dmb(_ARM64_BARRIER_ISH); +#endif +} + +/* Architecture-specific build options */ +/* FIXME: #pragma GCC push_options is only available on GCC */ +#if defined(__GNUC__) +#if defined(__arm__) && __ARM_ARCH == 7 +/* According to ARM C Language Extensions Architecture specification, + * __ARM_NEON is defined to a value indicating the Advanced SIMD (NEON) + * architecture supported. + */ +#if !defined(__ARM_NEON) || !defined(__ARM_NEON__) +#error "You must enable NEON instructions (e.g. -mfpu=neon) to use SSE2NEON." +#endif +#if !defined(__clang__) +#pragma GCC push_options +#pragma GCC target("fpu=neon") +#endif +#elif defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) +#if !defined(__clang__) && !defined(_MSC_VER) +#pragma GCC push_options +#pragma GCC target("+simd") +#endif +#elif __ARM_ARCH == 8 +#if !defined(__ARM_NEON) || !defined(__ARM_NEON__) +#error \ + "You must enable NEON instructions (e.g. -mfpu=neon-fp-armv8) to use SSE2NEON." +#endif +#if !defined(__clang__) && !defined(_MSC_VER) +#pragma GCC push_options +#endif +#else +#error \ + "Unsupported target. Must be either ARMv7-A+NEON or ARMv8-A \ +(you could try setting target explicitly with -march or -mcpu)" +#endif +#endif + +#include +#if (!defined(__aarch64__) && !defined(_M_ARM64) && !defined(_M_ARM64EC)) && \ + (__ARM_ARCH == 8) +#if defined __has_include && __has_include() +#include +#endif +#endif + +/* Apple Silicon cache lines are double of what is commonly used by Intel, AMD + * and other Arm microarchitectures use. + * From sysctl -a on Apple M1: + * hw.cachelinesize: 128 + */ +#if defined(__APPLE__) && (defined(__aarch64__) || defined(__arm64__)) +#define SSE2NEON_CACHELINE_SIZE 128 +#else +#define SSE2NEON_CACHELINE_SIZE 64 +#endif + +/* Rounding functions require either Aarch64 instructions or libm fallback */ +#if !defined(__aarch64__) && !defined(_M_ARM64) && !defined(_M_ARM64EC) +#include +#endif + +/* On ARMv7, some registers, such as PMUSERENR and PMCCNTR, are read-only + * or even not accessible in user mode. + * To write or access to these registers in user mode, + * we have to perform syscall instead. + */ +#if !defined(__aarch64__) && !defined(_M_ARM64) && !defined(_M_ARM64EC) +#include +#endif + +/* "__has_builtin" can be used to query support for built-in functions + * provided by gcc/clang and other compilers that support it. + */ +#ifndef __has_builtin /* GCC prior to 10 or non-clang compilers */ +/* Compatibility with gcc <= 9 */ +#if defined(__GNUC__) && (__GNUC__ <= 9) +#define __has_builtin(x) HAS##x +#define HAS__builtin_popcount 1 +#define HAS__builtin_popcountll 1 + +// __builtin_shuffle introduced in GCC 4.7.0 +#if (__GNUC__ >= 5) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) +#define HAS__builtin_shuffle 1 +#else +#define HAS__builtin_shuffle 0 +#endif + +#define HAS__builtin_shufflevector 0 +#define HAS__builtin_nontemporal_store 0 +#else +#define __has_builtin(x) 0 +#endif +#endif + +/** + * MACRO for shuffle parameter for _mm_shuffle_ps(). + * Argument fp3 is a digit[0123] that represents the fp from argument "b" + * of mm_shuffle_ps that will be placed in fp3 of result. fp2 is the same + * for fp2 in result. fp1 is a digit[0123] that represents the fp from + * argument "a" of mm_shuffle_ps that will be places in fp1 of result. + * fp0 is the same for fp0 of result. + */ +#define _MM_SHUFFLE(fp3, fp2, fp1, fp0) \ + (((fp3) << 6) | ((fp2) << 4) | ((fp1) << 2) | ((fp0))) + +/** + * MACRO for shuffle parameter for _mm_shuffle_pd(). + * Argument fp1 is a digit[01] that represents the fp from argument "b" + * of mm_shuffle_pd that will be placed in fp1 of result. + * fp0 is a digit[01] that represents the fp from argument "a" of mm_shuffle_pd + * that will be placed in fp0 of result. + */ +#define _MM_SHUFFLE2(fp1, fp0) (((fp1) << 1) | (fp0)) + +#if __has_builtin(__builtin_shufflevector) +#define _sse2neon_shuffle(type, a, b, ...) \ + __builtin_shufflevector(a, b, __VA_ARGS__) +#elif __has_builtin(__builtin_shuffle) +#define _sse2neon_shuffle(type, a, b, ...) \ + __extension__({ \ + type tmp = {__VA_ARGS__}; \ + __builtin_shuffle(a, b, tmp); \ + }) +#endif + +#ifdef _sse2neon_shuffle +#define vshuffle_s16(a, b, ...) _sse2neon_shuffle(int16x4_t, a, b, __VA_ARGS__) +#define vshuffleq_s16(a, b, ...) _sse2neon_shuffle(int16x8_t, a, b, __VA_ARGS__) +#define vshuffle_s32(a, b, ...) _sse2neon_shuffle(int32x2_t, a, b, __VA_ARGS__) +#define vshuffleq_s32(a, b, ...) _sse2neon_shuffle(int32x4_t, a, b, __VA_ARGS__) +#define vshuffle_s64(a, b, ...) _sse2neon_shuffle(int64x1_t, a, b, __VA_ARGS__) +#define vshuffleq_s64(a, b, ...) _sse2neon_shuffle(int64x2_t, a, b, __VA_ARGS__) +#endif + +/* Rounding mode macros. */ +#define _MM_FROUND_TO_NEAREST_INT 0x00 +#define _MM_FROUND_TO_NEG_INF 0x01 +#define _MM_FROUND_TO_POS_INF 0x02 +#define _MM_FROUND_TO_ZERO 0x03 +#define _MM_FROUND_CUR_DIRECTION 0x04 +#define _MM_FROUND_NO_EXC 0x08 +#define _MM_FROUND_RAISE_EXC 0x00 +#define _MM_FROUND_NINT (_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_RAISE_EXC) +#define _MM_FROUND_FLOOR (_MM_FROUND_TO_NEG_INF | _MM_FROUND_RAISE_EXC) +#define _MM_FROUND_CEIL (_MM_FROUND_TO_POS_INF | _MM_FROUND_RAISE_EXC) +#define _MM_FROUND_TRUNC (_MM_FROUND_TO_ZERO | _MM_FROUND_RAISE_EXC) +#define _MM_FROUND_RINT (_MM_FROUND_CUR_DIRECTION | _MM_FROUND_RAISE_EXC) +#define _MM_FROUND_NEARBYINT (_MM_FROUND_CUR_DIRECTION | _MM_FROUND_NO_EXC) +#define _MM_ROUND_NEAREST 0x0000 +#define _MM_ROUND_DOWN 0x2000 +#define _MM_ROUND_UP 0x4000 +#define _MM_ROUND_TOWARD_ZERO 0x6000 +/* Flush zero mode macros. */ +#define _MM_FLUSH_ZERO_MASK 0x8000 +#define _MM_FLUSH_ZERO_ON 0x8000 +#define _MM_FLUSH_ZERO_OFF 0x0000 +/* Denormals are zeros mode macros. */ +#define _MM_DENORMALS_ZERO_MASK 0x0040 +#define _MM_DENORMALS_ZERO_ON 0x0040 +#define _MM_DENORMALS_ZERO_OFF 0x0000 + +/* indicate immediate constant argument in a given range */ +#define __constrange(a, b) const + +/* A few intrinsics accept traditional data types like ints or floats, but + * most operate on data types that are specific to SSE. + * If a vector type ends in d, it contains doubles, and if it does not have + * a suffix, it contains floats. An integer vector type can contain any type + * of integer, from chars to shorts to unsigned long longs. + */ +typedef int64x1_t __m64; +typedef float32x4_t __m128; /* 128-bit vector containing 4 floats */ +// On ARM 32-bit architecture, the float64x2_t is not supported. +// The data type __m128d should be represented in a different way for related +// intrinsic conversion. +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) +typedef float64x2_t __m128d; /* 128-bit vector containing 2 doubles */ +#else +typedef float32x4_t __m128d; +#endif +typedef int64x2_t __m128i; /* 128-bit vector containing integers */ + +// Some intrinsics operate on unaligned data types. +typedef int16_t ALIGN_STRUCT(1) unaligned_int16_t; +typedef int32_t ALIGN_STRUCT(1) unaligned_int32_t; +typedef int64_t ALIGN_STRUCT(1) unaligned_int64_t; + +// __int64 is defined in the Intrinsics Guide which maps to different datatype +// in different data model +#if !(defined(_WIN32) || defined(_WIN64) || defined(__int64)) +#if (defined(__x86_64__) || defined(__i386__)) +#define __int64 long long +#else +#define __int64 int64_t +#endif +#endif + +/* type-safe casting between types */ + +#define vreinterpretq_m128_f16(x) vreinterpretq_f32_f16(x) +#define vreinterpretq_m128_f32(x) (x) +#define vreinterpretq_m128_f64(x) vreinterpretq_f32_f64(x) + +#define vreinterpretq_m128_u8(x) vreinterpretq_f32_u8(x) +#define vreinterpretq_m128_u16(x) vreinterpretq_f32_u16(x) +#define vreinterpretq_m128_u32(x) vreinterpretq_f32_u32(x) +#define vreinterpretq_m128_u64(x) vreinterpretq_f32_u64(x) + +#define vreinterpretq_m128_s8(x) vreinterpretq_f32_s8(x) +#define vreinterpretq_m128_s16(x) vreinterpretq_f32_s16(x) +#define vreinterpretq_m128_s32(x) vreinterpretq_f32_s32(x) +#define vreinterpretq_m128_s64(x) vreinterpretq_f32_s64(x) + +#define vreinterpretq_f16_m128(x) vreinterpretq_f16_f32(x) +#define vreinterpretq_f32_m128(x) (x) +#define vreinterpretq_f64_m128(x) vreinterpretq_f64_f32(x) + +#define vreinterpretq_u8_m128(x) vreinterpretq_u8_f32(x) +#define vreinterpretq_u16_m128(x) vreinterpretq_u16_f32(x) +#define vreinterpretq_u32_m128(x) vreinterpretq_u32_f32(x) +#define vreinterpretq_u64_m128(x) vreinterpretq_u64_f32(x) + +#define vreinterpretq_s8_m128(x) vreinterpretq_s8_f32(x) +#define vreinterpretq_s16_m128(x) vreinterpretq_s16_f32(x) +#define vreinterpretq_s32_m128(x) vreinterpretq_s32_f32(x) +#define vreinterpretq_s64_m128(x) vreinterpretq_s64_f32(x) + +#define vreinterpretq_m128i_s8(x) vreinterpretq_s64_s8(x) +#define vreinterpretq_m128i_s16(x) vreinterpretq_s64_s16(x) +#define vreinterpretq_m128i_s32(x) vreinterpretq_s64_s32(x) +#define vreinterpretq_m128i_s64(x) (x) + +#define vreinterpretq_m128i_u8(x) vreinterpretq_s64_u8(x) +#define vreinterpretq_m128i_u16(x) vreinterpretq_s64_u16(x) +#define vreinterpretq_m128i_u32(x) vreinterpretq_s64_u32(x) +#define vreinterpretq_m128i_u64(x) vreinterpretq_s64_u64(x) + +#define vreinterpretq_f32_m128i(x) vreinterpretq_f32_s64(x) +#define vreinterpretq_f64_m128i(x) vreinterpretq_f64_s64(x) + +#define vreinterpretq_s8_m128i(x) vreinterpretq_s8_s64(x) +#define vreinterpretq_s16_m128i(x) vreinterpretq_s16_s64(x) +#define vreinterpretq_s32_m128i(x) vreinterpretq_s32_s64(x) +#define vreinterpretq_s64_m128i(x) (x) + +#define vreinterpretq_u8_m128i(x) vreinterpretq_u8_s64(x) +#define vreinterpretq_u16_m128i(x) vreinterpretq_u16_s64(x) +#define vreinterpretq_u32_m128i(x) vreinterpretq_u32_s64(x) +#define vreinterpretq_u64_m128i(x) vreinterpretq_u64_s64(x) + +#define vreinterpret_m64_s8(x) vreinterpret_s64_s8(x) +#define vreinterpret_m64_s16(x) vreinterpret_s64_s16(x) +#define vreinterpret_m64_s32(x) vreinterpret_s64_s32(x) +#define vreinterpret_m64_s64(x) (x) + +#define vreinterpret_m64_u8(x) vreinterpret_s64_u8(x) +#define vreinterpret_m64_u16(x) vreinterpret_s64_u16(x) +#define vreinterpret_m64_u32(x) vreinterpret_s64_u32(x) +#define vreinterpret_m64_u64(x) vreinterpret_s64_u64(x) + +#define vreinterpret_m64_f16(x) vreinterpret_s64_f16(x) +#define vreinterpret_m64_f32(x) vreinterpret_s64_f32(x) +#define vreinterpret_m64_f64(x) vreinterpret_s64_f64(x) + +#define vreinterpret_u8_m64(x) vreinterpret_u8_s64(x) +#define vreinterpret_u16_m64(x) vreinterpret_u16_s64(x) +#define vreinterpret_u32_m64(x) vreinterpret_u32_s64(x) +#define vreinterpret_u64_m64(x) vreinterpret_u64_s64(x) + +#define vreinterpret_s8_m64(x) vreinterpret_s8_s64(x) +#define vreinterpret_s16_m64(x) vreinterpret_s16_s64(x) +#define vreinterpret_s32_m64(x) vreinterpret_s32_s64(x) +#define vreinterpret_s64_m64(x) (x) + +#define vreinterpret_f32_m64(x) vreinterpret_f32_s64(x) + +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) +#define vreinterpretq_m128d_s32(x) vreinterpretq_f64_s32(x) +#define vreinterpretq_m128d_s64(x) vreinterpretq_f64_s64(x) + +#define vreinterpretq_m128d_u64(x) vreinterpretq_f64_u64(x) + +#define vreinterpretq_m128d_f32(x) vreinterpretq_f64_f32(x) +#define vreinterpretq_m128d_f64(x) (x) + +#define vreinterpretq_s64_m128d(x) vreinterpretq_s64_f64(x) + +#define vreinterpretq_u32_m128d(x) vreinterpretq_u32_f64(x) +#define vreinterpretq_u64_m128d(x) vreinterpretq_u64_f64(x) + +#define vreinterpretq_f64_m128d(x) (x) +#define vreinterpretq_f32_m128d(x) vreinterpretq_f32_f64(x) +#else +#define vreinterpretq_m128d_s32(x) vreinterpretq_f32_s32(x) +#define vreinterpretq_m128d_s64(x) vreinterpretq_f32_s64(x) + +#define vreinterpretq_m128d_u32(x) vreinterpretq_f32_u32(x) +#define vreinterpretq_m128d_u64(x) vreinterpretq_f32_u64(x) + +#define vreinterpretq_m128d_f32(x) (x) + +#define vreinterpretq_s64_m128d(x) vreinterpretq_s64_f32(x) + +#define vreinterpretq_u32_m128d(x) vreinterpretq_u32_f32(x) +#define vreinterpretq_u64_m128d(x) vreinterpretq_u64_f32(x) + +#define vreinterpretq_f32_m128d(x) (x) +#endif + +// A struct is defined in this header file called 'SIMDVec' which can be used +// by applications which attempt to access the contents of an __m128 struct +// directly. It is important to note that accessing the __m128 struct directly +// is bad coding practice by Microsoft: @see: +// https://learn.microsoft.com/en-us/cpp/cpp/m128 +// +// However, some legacy source code may try to access the contents of an __m128 +// struct directly so the developer can use the SIMDVec as an alias for it. Any +// casting must be done manually by the developer, as you cannot cast or +// otherwise alias the base NEON data type for intrinsic operations. +// +// union intended to allow direct access to an __m128 variable using the names +// that the MSVC compiler provides. This union should really only be used when +// trying to access the members of the vector as integer values. GCC/clang +// allow native access to the float members through a simple array access +// operator (in C since 4.6, in C++ since 4.8). +// +// Ideally direct accesses to SIMD vectors should not be used since it can cause +// a performance hit. If it really is needed however, the original __m128 +// variable can be aliased with a pointer to this union and used to access +// individual components. The use of this union should be hidden behind a macro +// that is used throughout the codebase to access the members instead of always +// declaring this type of variable. +typedef union ALIGN_STRUCT(16) SIMDVec { + float m128_f32[4]; // as floats - DON'T USE. Added for convenience. + int8_t m128_i8[16]; // as signed 8-bit integers. + int16_t m128_i16[8]; // as signed 16-bit integers. + int32_t m128_i32[4]; // as signed 32-bit integers. + int64_t m128_i64[2]; // as signed 64-bit integers. + uint8_t m128_u8[16]; // as unsigned 8-bit integers. + uint16_t m128_u16[8]; // as unsigned 16-bit integers. + uint32_t m128_u32[4]; // as unsigned 32-bit integers. + uint64_t m128_u64[2]; // as unsigned 64-bit integers. +} SIMDVec; + +// casting using SIMDVec +#define vreinterpretq_nth_u64_m128i(x, n) (((SIMDVec *) &x)->m128_u64[n]) +#define vreinterpretq_nth_u32_m128i(x, n) (((SIMDVec *) &x)->m128_u32[n]) +#define vreinterpretq_nth_u8_m128i(x, n) (((SIMDVec *) &x)->m128_u8[n]) + +/* SSE macros */ +#define _MM_GET_FLUSH_ZERO_MODE _sse2neon_mm_get_flush_zero_mode +#define _MM_SET_FLUSH_ZERO_MODE _sse2neon_mm_set_flush_zero_mode +#define _MM_GET_DENORMALS_ZERO_MODE _sse2neon_mm_get_denormals_zero_mode +#define _MM_SET_DENORMALS_ZERO_MODE _sse2neon_mm_set_denormals_zero_mode + +// Function declaration +// SSE +FORCE_INLINE unsigned int _MM_GET_ROUNDING_MODE(void); +FORCE_INLINE __m128 _mm_move_ss(__m128, __m128); +FORCE_INLINE __m128 _mm_or_ps(__m128, __m128); +FORCE_INLINE __m128 _mm_set_ps1(float); +FORCE_INLINE __m128 _mm_setzero_ps(void); +// SSE2 +FORCE_INLINE __m128i _mm_and_si128(__m128i, __m128i); +FORCE_INLINE __m128i _mm_castps_si128(__m128); +FORCE_INLINE __m128i _mm_cmpeq_epi32(__m128i, __m128i); +FORCE_INLINE __m128i _mm_cvtps_epi32(__m128); +FORCE_INLINE __m128d _mm_move_sd(__m128d, __m128d); +FORCE_INLINE __m128i _mm_or_si128(__m128i, __m128i); +FORCE_INLINE __m128i _mm_set_epi32(int, int, int, int); +FORCE_INLINE __m128i _mm_set_epi64x(int64_t, int64_t); +FORCE_INLINE __m128d _mm_set_pd(double, double); +FORCE_INLINE __m128i _mm_set1_epi32(int); +FORCE_INLINE __m128i _mm_setzero_si128(void); +// SSE4.1 +FORCE_INLINE __m128d _mm_ceil_pd(__m128d); +FORCE_INLINE __m128 _mm_ceil_ps(__m128); +FORCE_INLINE __m128d _mm_floor_pd(__m128d); +FORCE_INLINE __m128 _mm_floor_ps(__m128); +FORCE_INLINE __m128d _mm_round_pd(__m128d, int); +FORCE_INLINE __m128 _mm_round_ps(__m128, int); +// SSE4.2 +FORCE_INLINE uint32_t _mm_crc32_u8(uint32_t, uint8_t); + +/* Backwards compatibility for compilers with lack of specific type support */ + +// Older gcc does not define vld1q_u8_x4 type +#if defined(__GNUC__) && !defined(__clang__) && \ + ((__GNUC__ <= 13 && defined(__arm__)) || \ + (__GNUC__ == 10 && __GNUC_MINOR__ < 3 && defined(__aarch64__)) || \ + (__GNUC__ <= 9 && defined(__aarch64__))) +FORCE_INLINE uint8x16x4_t _sse2neon_vld1q_u8_x4(const uint8_t *p) +{ + uint8x16x4_t ret; + ret.val[0] = vld1q_u8(p + 0); + ret.val[1] = vld1q_u8(p + 16); + ret.val[2] = vld1q_u8(p + 32); + ret.val[3] = vld1q_u8(p + 48); + return ret; +} +#else +// Wraps vld1q_u8_x4 +FORCE_INLINE uint8x16x4_t _sse2neon_vld1q_u8_x4(const uint8_t *p) +{ + return vld1q_u8_x4(p); +} +#endif + +#if !defined(__aarch64__) && !defined(_M_ARM64) && !defined(_M_ARM64EC) +/* emulate vaddv u8 variant */ +FORCE_INLINE uint8_t _sse2neon_vaddv_u8(uint8x8_t v8) +{ + const uint64x1_t v1 = vpaddl_u32(vpaddl_u16(vpaddl_u8(v8))); + return vget_lane_u8(vreinterpret_u8_u64(v1), 0); +} +#else +// Wraps vaddv_u8 +FORCE_INLINE uint8_t _sse2neon_vaddv_u8(uint8x8_t v8) +{ + return vaddv_u8(v8); +} +#endif + +#if !defined(__aarch64__) && !defined(_M_ARM64) && !defined(_M_ARM64EC) +/* emulate vaddvq u8 variant */ +FORCE_INLINE uint8_t _sse2neon_vaddvq_u8(uint8x16_t a) +{ + uint8x8_t tmp = vpadd_u8(vget_low_u8(a), vget_high_u8(a)); + uint8_t res = 0; + for (int i = 0; i < 8; ++i) + res += tmp[i]; + return res; +} +#else +// Wraps vaddvq_u8 +FORCE_INLINE uint8_t _sse2neon_vaddvq_u8(uint8x16_t a) +{ + return vaddvq_u8(a); +} +#endif + +#if !defined(__aarch64__) && !defined(_M_ARM64) && !defined(_M_ARM64EC) +/* emulate vaddvq u16 variant */ +FORCE_INLINE uint16_t _sse2neon_vaddvq_u16(uint16x8_t a) +{ + uint32x4_t m = vpaddlq_u16(a); + uint64x2_t n = vpaddlq_u32(m); + uint64x1_t o = vget_low_u64(n) + vget_high_u64(n); + + return vget_lane_u32((uint32x2_t) o, 0); +} +#else +// Wraps vaddvq_u16 +FORCE_INLINE uint16_t _sse2neon_vaddvq_u16(uint16x8_t a) +{ + return vaddvq_u16(a); +} +#endif + +/* Function Naming Conventions + * The naming convention of SSE intrinsics is straightforward. A generic SSE + * intrinsic function is given as follows: + * _mm__ + * + * The parts of this format are given as follows: + * 1. describes the operation performed by the intrinsic + * 2. identifies the data type of the function's primary arguments + * + * This last part, , is a little complicated. It identifies the + * content of the input values, and can be set to any of the following values: + * + ps - vectors contain floats (ps stands for packed single-precision) + * + pd - vectors contain doubles (pd stands for packed double-precision) + * + epi8/epi16/epi32/epi64 - vectors contain 8-bit/16-bit/32-bit/64-bit + * signed integers + * + epu8/epu16/epu32/epu64 - vectors contain 8-bit/16-bit/32-bit/64-bit + * unsigned integers + * + si128 - unspecified 128-bit vector or 256-bit vector + * + m128/m128i/m128d - identifies input vector types when they are different + * than the type of the returned vector + * + * For example, _mm_setzero_ps. The _mm implies that the function returns + * a 128-bit vector. The _ps at the end implies that the argument vectors + * contain floats. + * + * A complete example: Byte Shuffle - pshufb (_mm_shuffle_epi8) + * // Set packed 16-bit integers. 128 bits, 8 short, per 16 bits + * __m128i v_in = _mm_setr_epi16(1, 2, 3, 4, 5, 6, 7, 8); + * // Set packed 8-bit integers + * // 128 bits, 16 chars, per 8 bits + * __m128i v_perm = _mm_setr_epi8(1, 0, 2, 3, 8, 9, 10, 11, + * 4, 5, 12, 13, 6, 7, 14, 15); + * // Shuffle packed 8-bit integers + * __m128i v_out = _mm_shuffle_epi8(v_in, v_perm); // pshufb + */ + +/* Constants for use with _mm_prefetch. */ +#if defined(_M_ARM64EC) +/* winnt.h already defines these constants as macros, so undefine them first. */ +#undef _MM_HINT_NTA +#undef _MM_HINT_T0 +#undef _MM_HINT_T1 +#undef _MM_HINT_T2 +#endif +enum _mm_hint { + _MM_HINT_NTA = 0, /* load data to L1 and L2 cache, mark it as NTA */ + _MM_HINT_T0 = 1, /* load data to L1 and L2 cache */ + _MM_HINT_T1 = 2, /* load data to L2 cache only */ + _MM_HINT_T2 = 3, /* load data to L2 cache only, mark it as NTA */ +}; + +// The bit field mapping to the FPCR(floating-point control register) +typedef struct { + uint16_t res0; + uint8_t res1 : 6; + uint8_t bit22 : 1; + uint8_t bit23 : 1; + uint8_t bit24 : 1; + uint8_t res2 : 7; +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + uint32_t res3; +#endif +} fpcr_bitfield; + +// Takes the upper 64 bits of a and places it in the low end of the result +// Takes the lower 64 bits of b and places it into the high end of the result. +FORCE_INLINE __m128 _mm_shuffle_ps_1032(__m128 a, __m128 b) +{ + float32x2_t a32 = vget_high_f32(vreinterpretq_f32_m128(a)); + float32x2_t b10 = vget_low_f32(vreinterpretq_f32_m128(b)); + return vreinterpretq_m128_f32(vcombine_f32(a32, b10)); +} + +// takes the lower two 32-bit values from a and swaps them and places in high +// end of result takes the higher two 32 bit values from b and swaps them and +// places in low end of result. +FORCE_INLINE __m128 _mm_shuffle_ps_2301(__m128 a, __m128 b) +{ + float32x2_t a01 = vrev64_f32(vget_low_f32(vreinterpretq_f32_m128(a))); + float32x2_t b23 = vrev64_f32(vget_high_f32(vreinterpretq_f32_m128(b))); + return vreinterpretq_m128_f32(vcombine_f32(a01, b23)); +} + +FORCE_INLINE __m128 _mm_shuffle_ps_0321(__m128 a, __m128 b) +{ + float32x2_t a21 = vget_high_f32( + vextq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(a), 3)); + float32x2_t b03 = vget_low_f32( + vextq_f32(vreinterpretq_f32_m128(b), vreinterpretq_f32_m128(b), 3)); + return vreinterpretq_m128_f32(vcombine_f32(a21, b03)); +} + +FORCE_INLINE __m128 _mm_shuffle_ps_2103(__m128 a, __m128 b) +{ + float32x2_t a03 = vget_low_f32( + vextq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(a), 3)); + float32x2_t b21 = vget_high_f32( + vextq_f32(vreinterpretq_f32_m128(b), vreinterpretq_f32_m128(b), 3)); + return vreinterpretq_m128_f32(vcombine_f32(a03, b21)); +} + +FORCE_INLINE __m128 _mm_shuffle_ps_1010(__m128 a, __m128 b) +{ + float32x2_t a10 = vget_low_f32(vreinterpretq_f32_m128(a)); + float32x2_t b10 = vget_low_f32(vreinterpretq_f32_m128(b)); + return vreinterpretq_m128_f32(vcombine_f32(a10, b10)); +} + +FORCE_INLINE __m128 _mm_shuffle_ps_1001(__m128 a, __m128 b) +{ + float32x2_t a01 = vrev64_f32(vget_low_f32(vreinterpretq_f32_m128(a))); + float32x2_t b10 = vget_low_f32(vreinterpretq_f32_m128(b)); + return vreinterpretq_m128_f32(vcombine_f32(a01, b10)); +} + +FORCE_INLINE __m128 _mm_shuffle_ps_0101(__m128 a, __m128 b) +{ + float32x2_t a01 = vrev64_f32(vget_low_f32(vreinterpretq_f32_m128(a))); + float32x2_t b01 = vrev64_f32(vget_low_f32(vreinterpretq_f32_m128(b))); + return vreinterpretq_m128_f32(vcombine_f32(a01, b01)); +} + +// keeps the low 64 bits of b in the low and puts the high 64 bits of a in the +// high +FORCE_INLINE __m128 _mm_shuffle_ps_3210(__m128 a, __m128 b) +{ + float32x2_t a10 = vget_low_f32(vreinterpretq_f32_m128(a)); + float32x2_t b32 = vget_high_f32(vreinterpretq_f32_m128(b)); + return vreinterpretq_m128_f32(vcombine_f32(a10, b32)); +} + +FORCE_INLINE __m128 _mm_shuffle_ps_0011(__m128 a, __m128 b) +{ + float32x2_t a11 = vdup_lane_f32(vget_low_f32(vreinterpretq_f32_m128(a)), 1); + float32x2_t b00 = vdup_lane_f32(vget_low_f32(vreinterpretq_f32_m128(b)), 0); + return vreinterpretq_m128_f32(vcombine_f32(a11, b00)); +} + +FORCE_INLINE __m128 _mm_shuffle_ps_0022(__m128 a, __m128 b) +{ + float32x2_t a22 = + vdup_lane_f32(vget_high_f32(vreinterpretq_f32_m128(a)), 0); + float32x2_t b00 = vdup_lane_f32(vget_low_f32(vreinterpretq_f32_m128(b)), 0); + return vreinterpretq_m128_f32(vcombine_f32(a22, b00)); +} + +FORCE_INLINE __m128 _mm_shuffle_ps_2200(__m128 a, __m128 b) +{ + float32x2_t a00 = vdup_lane_f32(vget_low_f32(vreinterpretq_f32_m128(a)), 0); + float32x2_t b22 = + vdup_lane_f32(vget_high_f32(vreinterpretq_f32_m128(b)), 0); + return vreinterpretq_m128_f32(vcombine_f32(a00, b22)); +} + +FORCE_INLINE __m128 _mm_shuffle_ps_3202(__m128 a, __m128 b) +{ + float32_t a0 = vgetq_lane_f32(vreinterpretq_f32_m128(a), 0); + float32x2_t a22 = + vdup_lane_f32(vget_high_f32(vreinterpretq_f32_m128(a)), 0); + float32x2_t a02 = vset_lane_f32(a0, a22, 1); /* TODO: use vzip ?*/ + float32x2_t b32 = vget_high_f32(vreinterpretq_f32_m128(b)); + return vreinterpretq_m128_f32(vcombine_f32(a02, b32)); +} + +FORCE_INLINE __m128 _mm_shuffle_ps_1133(__m128 a, __m128 b) +{ + float32x2_t a33 = + vdup_lane_f32(vget_high_f32(vreinterpretq_f32_m128(a)), 1); + float32x2_t b11 = vdup_lane_f32(vget_low_f32(vreinterpretq_f32_m128(b)), 1); + return vreinterpretq_m128_f32(vcombine_f32(a33, b11)); +} + +FORCE_INLINE __m128 _mm_shuffle_ps_2010(__m128 a, __m128 b) +{ + float32x2_t a10 = vget_low_f32(vreinterpretq_f32_m128(a)); + float32_t b2 = vgetq_lane_f32(vreinterpretq_f32_m128(b), 2); + float32x2_t b00 = vdup_lane_f32(vget_low_f32(vreinterpretq_f32_m128(b)), 0); + float32x2_t b20 = vset_lane_f32(b2, b00, 1); + return vreinterpretq_m128_f32(vcombine_f32(a10, b20)); +} + +FORCE_INLINE __m128 _mm_shuffle_ps_2001(__m128 a, __m128 b) +{ + float32x2_t a01 = vrev64_f32(vget_low_f32(vreinterpretq_f32_m128(a))); + float32_t b2 = vgetq_lane_f32(b, 2); + float32x2_t b00 = vdup_lane_f32(vget_low_f32(vreinterpretq_f32_m128(b)), 0); + float32x2_t b20 = vset_lane_f32(b2, b00, 1); + return vreinterpretq_m128_f32(vcombine_f32(a01, b20)); +} + +FORCE_INLINE __m128 _mm_shuffle_ps_2032(__m128 a, __m128 b) +{ + float32x2_t a32 = vget_high_f32(vreinterpretq_f32_m128(a)); + float32_t b2 = vgetq_lane_f32(b, 2); + float32x2_t b00 = vdup_lane_f32(vget_low_f32(vreinterpretq_f32_m128(b)), 0); + float32x2_t b20 = vset_lane_f32(b2, b00, 1); + return vreinterpretq_m128_f32(vcombine_f32(a32, b20)); +} + +// For MSVC, we check only if it is ARM64, as every single ARM64 processor +// supported by WoA has crypto extensions. If this changes in the future, +// this can be verified via the runtime-only method of: +// IsProcessorFeaturePresent(PF_ARM_V8_CRYPTO_INSTRUCTIONS_AVAILABLE) +#if ((defined(_M_ARM64) || defined(_M_ARM64EC)) && !defined(__clang__)) || \ + (defined(__ARM_FEATURE_CRYPTO) && \ + (defined(__aarch64__) || __has_builtin(__builtin_arm_crypto_vmullp64))) +// Wraps vmull_p64 +FORCE_INLINE uint64x2_t _sse2neon_vmull_p64(uint64x1_t _a, uint64x1_t _b) +{ + poly64_t a = vget_lane_p64(vreinterpret_p64_u64(_a), 0); + poly64_t b = vget_lane_p64(vreinterpret_p64_u64(_b), 0); +#if defined(_MSC_VER) && !defined(__clang__) + __n64 a1 = {a}, b1 = {b}; + return vreinterpretq_u64_p128(vmull_p64(a1, b1)); +#else + return vreinterpretq_u64_p128(vmull_p64(a, b)); +#endif +} +#else // ARMv7 polyfill +// ARMv7/some A64 lacks vmull_p64, but it has vmull_p8. +// +// vmull_p8 calculates 8 8-bit->16-bit polynomial multiplies, but we need a +// 64-bit->128-bit polynomial multiply. +// +// It needs some work and is somewhat slow, but it is still faster than all +// known scalar methods. +// +// Algorithm adapted to C from +// https://www.workofard.com/2017/07/ghash-for-low-end-cores/, which is adapted +// from "Fast Software Polynomial Multiplication on ARM Processors Using the +// NEON Engine" by Danilo Camara, Conrado Gouvea, Julio Lopez and Ricardo Dahab +// (https://hal.inria.fr/hal-01506572) +static uint64x2_t _sse2neon_vmull_p64(uint64x1_t _a, uint64x1_t _b) +{ + poly8x8_t a = vreinterpret_p8_u64(_a); + poly8x8_t b = vreinterpret_p8_u64(_b); + + // Masks + uint8x16_t k48_32 = vcombine_u8(vcreate_u8(0x0000ffffffffffff), + vcreate_u8(0x00000000ffffffff)); + uint8x16_t k16_00 = vcombine_u8(vcreate_u8(0x000000000000ffff), + vcreate_u8(0x0000000000000000)); + + // Do the multiplies, rotating with vext to get all combinations + uint8x16_t d = vreinterpretq_u8_p16(vmull_p8(a, b)); // D = A0 * B0 + uint8x16_t e = + vreinterpretq_u8_p16(vmull_p8(a, vext_p8(b, b, 1))); // E = A0 * B1 + uint8x16_t f = + vreinterpretq_u8_p16(vmull_p8(vext_p8(a, a, 1), b)); // F = A1 * B0 + uint8x16_t g = + vreinterpretq_u8_p16(vmull_p8(a, vext_p8(b, b, 2))); // G = A0 * B2 + uint8x16_t h = + vreinterpretq_u8_p16(vmull_p8(vext_p8(a, a, 2), b)); // H = A2 * B0 + uint8x16_t i = + vreinterpretq_u8_p16(vmull_p8(a, vext_p8(b, b, 3))); // I = A0 * B3 + uint8x16_t j = + vreinterpretq_u8_p16(vmull_p8(vext_p8(a, a, 3), b)); // J = A3 * B0 + uint8x16_t k = + vreinterpretq_u8_p16(vmull_p8(a, vext_p8(b, b, 4))); // L = A0 * B4 + + // Add cross products + uint8x16_t l = veorq_u8(e, f); // L = E + F + uint8x16_t m = veorq_u8(g, h); // M = G + H + uint8x16_t n = veorq_u8(i, j); // N = I + J + + // Interleave. Using vzip1 and vzip2 prevents Clang from emitting TBL + // instructions. +#if defined(__aarch64__) + uint8x16_t lm_p0 = vreinterpretq_u8_u64( + vzip1q_u64(vreinterpretq_u64_u8(l), vreinterpretq_u64_u8(m))); + uint8x16_t lm_p1 = vreinterpretq_u8_u64( + vzip2q_u64(vreinterpretq_u64_u8(l), vreinterpretq_u64_u8(m))); + uint8x16_t nk_p0 = vreinterpretq_u8_u64( + vzip1q_u64(vreinterpretq_u64_u8(n), vreinterpretq_u64_u8(k))); + uint8x16_t nk_p1 = vreinterpretq_u8_u64( + vzip2q_u64(vreinterpretq_u64_u8(n), vreinterpretq_u64_u8(k))); +#else + uint8x16_t lm_p0 = vcombine_u8(vget_low_u8(l), vget_low_u8(m)); + uint8x16_t lm_p1 = vcombine_u8(vget_high_u8(l), vget_high_u8(m)); + uint8x16_t nk_p0 = vcombine_u8(vget_low_u8(n), vget_low_u8(k)); + uint8x16_t nk_p1 = vcombine_u8(vget_high_u8(n), vget_high_u8(k)); +#endif + // t0 = (L) (P0 + P1) << 8 + // t1 = (M) (P2 + P3) << 16 + uint8x16_t t0t1_tmp = veorq_u8(lm_p0, lm_p1); + uint8x16_t t0t1_h = vandq_u8(lm_p1, k48_32); + uint8x16_t t0t1_l = veorq_u8(t0t1_tmp, t0t1_h); + + // t2 = (N) (P4 + P5) << 24 + // t3 = (K) (P6 + P7) << 32 + uint8x16_t t2t3_tmp = veorq_u8(nk_p0, nk_p1); + uint8x16_t t2t3_h = vandq_u8(nk_p1, k16_00); + uint8x16_t t2t3_l = veorq_u8(t2t3_tmp, t2t3_h); + + // De-interleave +#if defined(__aarch64__) + uint8x16_t t0 = vreinterpretq_u8_u64( + vuzp1q_u64(vreinterpretq_u64_u8(t0t1_l), vreinterpretq_u64_u8(t0t1_h))); + uint8x16_t t1 = vreinterpretq_u8_u64( + vuzp2q_u64(vreinterpretq_u64_u8(t0t1_l), vreinterpretq_u64_u8(t0t1_h))); + uint8x16_t t2 = vreinterpretq_u8_u64( + vuzp1q_u64(vreinterpretq_u64_u8(t2t3_l), vreinterpretq_u64_u8(t2t3_h))); + uint8x16_t t3 = vreinterpretq_u8_u64( + vuzp2q_u64(vreinterpretq_u64_u8(t2t3_l), vreinterpretq_u64_u8(t2t3_h))); +#else + uint8x16_t t1 = vcombine_u8(vget_high_u8(t0t1_l), vget_high_u8(t0t1_h)); + uint8x16_t t0 = vcombine_u8(vget_low_u8(t0t1_l), vget_low_u8(t0t1_h)); + uint8x16_t t3 = vcombine_u8(vget_high_u8(t2t3_l), vget_high_u8(t2t3_h)); + uint8x16_t t2 = vcombine_u8(vget_low_u8(t2t3_l), vget_low_u8(t2t3_h)); +#endif + // Shift the cross products + uint8x16_t t0_shift = vextq_u8(t0, t0, 15); // t0 << 8 + uint8x16_t t1_shift = vextq_u8(t1, t1, 14); // t1 << 16 + uint8x16_t t2_shift = vextq_u8(t2, t2, 13); // t2 << 24 + uint8x16_t t3_shift = vextq_u8(t3, t3, 12); // t3 << 32 + + // Accumulate the products + uint8x16_t cross1 = veorq_u8(t0_shift, t1_shift); + uint8x16_t cross2 = veorq_u8(t2_shift, t3_shift); + uint8x16_t mix = veorq_u8(d, cross1); + uint8x16_t r = veorq_u8(mix, cross2); + return vreinterpretq_u64_u8(r); +} +#endif // ARMv7 polyfill + +// C equivalent: +// __m128i _mm_shuffle_epi32_default(__m128i a, +// __constrange(0, 255) int imm) { +// __m128i ret; +// ret[0] = a[(imm) & 0x3]; ret[1] = a[((imm) >> 2) & 0x3]; +// ret[2] = a[((imm) >> 4) & 0x03]; ret[3] = a[((imm) >> 6) & 0x03]; +// return ret; +// } +#define _mm_shuffle_epi32_default(a, imm) \ + vreinterpretq_m128i_s32(vsetq_lane_s32( \ + vgetq_lane_s32(vreinterpretq_s32_m128i(a), ((imm) >> 6) & 0x3), \ + vsetq_lane_s32( \ + vgetq_lane_s32(vreinterpretq_s32_m128i(a), ((imm) >> 4) & 0x3), \ + vsetq_lane_s32(vgetq_lane_s32(vreinterpretq_s32_m128i(a), \ + ((imm) >> 2) & 0x3), \ + vmovq_n_s32(vgetq_lane_s32( \ + vreinterpretq_s32_m128i(a), (imm) & (0x3))), \ + 1), \ + 2), \ + 3)) + +// Takes the upper 64 bits of a and places it in the low end of the result +// Takes the lower 64 bits of a and places it into the high end of the result. +FORCE_INLINE __m128i _mm_shuffle_epi_1032(__m128i a) +{ + int32x2_t a32 = vget_high_s32(vreinterpretq_s32_m128i(a)); + int32x2_t a10 = vget_low_s32(vreinterpretq_s32_m128i(a)); + return vreinterpretq_m128i_s32(vcombine_s32(a32, a10)); +} + +// takes the lower two 32-bit values from a and swaps them and places in low end +// of result takes the higher two 32 bit values from a and swaps them and places +// in high end of result. +FORCE_INLINE __m128i _mm_shuffle_epi_2301(__m128i a) +{ + int32x2_t a01 = vrev64_s32(vget_low_s32(vreinterpretq_s32_m128i(a))); + int32x2_t a23 = vrev64_s32(vget_high_s32(vreinterpretq_s32_m128i(a))); + return vreinterpretq_m128i_s32(vcombine_s32(a01, a23)); +} + +// rotates the least significant 32 bits into the most significant 32 bits, and +// shifts the rest down +FORCE_INLINE __m128i _mm_shuffle_epi_0321(__m128i a) +{ + return vreinterpretq_m128i_s32( + vextq_s32(vreinterpretq_s32_m128i(a), vreinterpretq_s32_m128i(a), 1)); +} + +// rotates the most significant 32 bits into the least significant 32 bits, and +// shifts the rest up +FORCE_INLINE __m128i _mm_shuffle_epi_2103(__m128i a) +{ + return vreinterpretq_m128i_s32( + vextq_s32(vreinterpretq_s32_m128i(a), vreinterpretq_s32_m128i(a), 3)); +} + +// gets the lower 64 bits of a, and places it in the upper 64 bits +// gets the lower 64 bits of a and places it in the lower 64 bits +FORCE_INLINE __m128i _mm_shuffle_epi_1010(__m128i a) +{ + int32x2_t a10 = vget_low_s32(vreinterpretq_s32_m128i(a)); + return vreinterpretq_m128i_s32(vcombine_s32(a10, a10)); +} + +// gets the lower 64 bits of a, swaps the 0 and 1 elements, and places it in the +// lower 64 bits gets the lower 64 bits of a, and places it in the upper 64 bits +FORCE_INLINE __m128i _mm_shuffle_epi_1001(__m128i a) +{ + int32x2_t a01 = vrev64_s32(vget_low_s32(vreinterpretq_s32_m128i(a))); + int32x2_t a10 = vget_low_s32(vreinterpretq_s32_m128i(a)); + return vreinterpretq_m128i_s32(vcombine_s32(a01, a10)); +} + +// gets the lower 64 bits of a, swaps the 0 and 1 elements and places it in the +// upper 64 bits gets the lower 64 bits of a, swaps the 0 and 1 elements, and +// places it in the lower 64 bits +FORCE_INLINE __m128i _mm_shuffle_epi_0101(__m128i a) +{ + int32x2_t a01 = vrev64_s32(vget_low_s32(vreinterpretq_s32_m128i(a))); + return vreinterpretq_m128i_s32(vcombine_s32(a01, a01)); +} + +FORCE_INLINE __m128i _mm_shuffle_epi_2211(__m128i a) +{ + int32x2_t a11 = vdup_lane_s32(vget_low_s32(vreinterpretq_s32_m128i(a)), 1); + int32x2_t a22 = vdup_lane_s32(vget_high_s32(vreinterpretq_s32_m128i(a)), 0); + return vreinterpretq_m128i_s32(vcombine_s32(a11, a22)); +} + +FORCE_INLINE __m128i _mm_shuffle_epi_0122(__m128i a) +{ + int32x2_t a22 = vdup_lane_s32(vget_high_s32(vreinterpretq_s32_m128i(a)), 0); + int32x2_t a01 = vrev64_s32(vget_low_s32(vreinterpretq_s32_m128i(a))); + return vreinterpretq_m128i_s32(vcombine_s32(a22, a01)); +} + +FORCE_INLINE __m128i _mm_shuffle_epi_3332(__m128i a) +{ + int32x2_t a32 = vget_high_s32(vreinterpretq_s32_m128i(a)); + int32x2_t a33 = vdup_lane_s32(vget_high_s32(vreinterpretq_s32_m128i(a)), 1); + return vreinterpretq_m128i_s32(vcombine_s32(a32, a33)); +} + +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) +#define _mm_shuffle_epi32_splat(a, imm) \ + vreinterpretq_m128i_s32(vdupq_laneq_s32(vreinterpretq_s32_m128i(a), (imm))) +#else +#define _mm_shuffle_epi32_splat(a, imm) \ + vreinterpretq_m128i_s32( \ + vdupq_n_s32(vgetq_lane_s32(vreinterpretq_s32_m128i(a), (imm)))) +#endif + +// NEON does not support a general purpose permute intrinsic. +// Shuffle single-precision (32-bit) floating-point elements in a using the +// control in imm8, and store the results in dst. +// +// C equivalent: +// __m128 _mm_shuffle_ps_default(__m128 a, __m128 b, +// __constrange(0, 255) int imm) { +// __m128 ret; +// ret[0] = a[(imm) & 0x3]; ret[1] = a[((imm) >> 2) & 0x3]; +// ret[2] = b[((imm) >> 4) & 0x03]; ret[3] = b[((imm) >> 6) & 0x03]; +// return ret; +// } +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_shuffle_ps +#define _mm_shuffle_ps_default(a, b, imm) \ + vreinterpretq_m128_f32(vsetq_lane_f32( \ + vgetq_lane_f32(vreinterpretq_f32_m128(b), ((imm) >> 6) & 0x3), \ + vsetq_lane_f32( \ + vgetq_lane_f32(vreinterpretq_f32_m128(b), ((imm) >> 4) & 0x3), \ + vsetq_lane_f32( \ + vgetq_lane_f32(vreinterpretq_f32_m128(a), ((imm) >> 2) & 0x3), \ + vmovq_n_f32( \ + vgetq_lane_f32(vreinterpretq_f32_m128(a), (imm) & (0x3))), \ + 1), \ + 2), \ + 3)) + +// Shuffle 16-bit integers in the low 64 bits of a using the control in imm8. +// Store the results in the low 64 bits of dst, with the high 64 bits being +// copied from a to dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_shufflelo_epi16 +#define _mm_shufflelo_epi16_function(a, imm) \ + _sse2neon_define1( \ + __m128i, a, int16x8_t ret = vreinterpretq_s16_m128i(_a); \ + int16x4_t lowBits = vget_low_s16(ret); \ + ret = vsetq_lane_s16(vget_lane_s16(lowBits, (imm) & (0x3)), ret, 0); \ + ret = vsetq_lane_s16(vget_lane_s16(lowBits, ((imm) >> 2) & 0x3), ret, \ + 1); \ + ret = vsetq_lane_s16(vget_lane_s16(lowBits, ((imm) >> 4) & 0x3), ret, \ + 2); \ + ret = vsetq_lane_s16(vget_lane_s16(lowBits, ((imm) >> 6) & 0x3), ret, \ + 3); \ + _sse2neon_return(vreinterpretq_m128i_s16(ret));) + +// Shuffle 16-bit integers in the high 64 bits of a using the control in imm8. +// Store the results in the high 64 bits of dst, with the low 64 bits being +// copied from a to dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_shufflehi_epi16 +#define _mm_shufflehi_epi16_function(a, imm) \ + _sse2neon_define1( \ + __m128i, a, int16x8_t ret = vreinterpretq_s16_m128i(_a); \ + int16x4_t highBits = vget_high_s16(ret); \ + ret = vsetq_lane_s16(vget_lane_s16(highBits, (imm) & (0x3)), ret, 4); \ + ret = vsetq_lane_s16(vget_lane_s16(highBits, ((imm) >> 2) & 0x3), ret, \ + 5); \ + ret = vsetq_lane_s16(vget_lane_s16(highBits, ((imm) >> 4) & 0x3), ret, \ + 6); \ + ret = vsetq_lane_s16(vget_lane_s16(highBits, ((imm) >> 6) & 0x3), ret, \ + 7); \ + _sse2neon_return(vreinterpretq_m128i_s16(ret));) + +/* MMX */ + +//_mm_empty is a no-op on arm +FORCE_INLINE void _mm_empty(void) {} + +/* SSE */ + +// Add packed single-precision (32-bit) floating-point elements in a and b, and +// store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_add_ps +FORCE_INLINE __m128 _mm_add_ps(__m128 a, __m128 b) +{ + return vreinterpretq_m128_f32( + vaddq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b))); +} + +// Add the lower single-precision (32-bit) floating-point element in a and b, +// store the result in the lower element of dst, and copy the upper 3 packed +// elements from a to the upper elements of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_add_ss +FORCE_INLINE __m128 _mm_add_ss(__m128 a, __m128 b) +{ + float32_t b0 = vgetq_lane_f32(vreinterpretq_f32_m128(b), 0); + float32x4_t value = vsetq_lane_f32(b0, vdupq_n_f32(0), 0); + // the upper values in the result must be the remnants of . + return vreinterpretq_m128_f32(vaddq_f32(a, value)); +} + +// Compute the bitwise AND of packed single-precision (32-bit) floating-point +// elements in a and b, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_and_ps +FORCE_INLINE __m128 _mm_and_ps(__m128 a, __m128 b) +{ + return vreinterpretq_m128_s32( + vandq_s32(vreinterpretq_s32_m128(a), vreinterpretq_s32_m128(b))); +} + +// Compute the bitwise NOT of packed single-precision (32-bit) floating-point +// elements in a and then AND with b, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_andnot_ps +FORCE_INLINE __m128 _mm_andnot_ps(__m128 a, __m128 b) +{ + return vreinterpretq_m128_s32( + vbicq_s32(vreinterpretq_s32_m128(b), + vreinterpretq_s32_m128(a))); // *NOTE* argument swap +} + +// Average packed unsigned 16-bit integers in a and b, and store the results in +// dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_avg_pu16 +FORCE_INLINE __m64 _mm_avg_pu16(__m64 a, __m64 b) +{ + return vreinterpret_m64_u16( + vrhadd_u16(vreinterpret_u16_m64(a), vreinterpret_u16_m64(b))); +} + +// Average packed unsigned 8-bit integers in a and b, and store the results in +// dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_avg_pu8 +FORCE_INLINE __m64 _mm_avg_pu8(__m64 a, __m64 b) +{ + return vreinterpret_m64_u8( + vrhadd_u8(vreinterpret_u8_m64(a), vreinterpret_u8_m64(b))); +} + +// Compare packed single-precision (32-bit) floating-point elements in a and b +// for equality, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpeq_ps +FORCE_INLINE __m128 _mm_cmpeq_ps(__m128 a, __m128 b) +{ + return vreinterpretq_m128_u32( + vceqq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b))); +} + +// Compare the lower single-precision (32-bit) floating-point elements in a and +// b for equality, store the result in the lower element of dst, and copy the +// upper 3 packed elements from a to the upper elements of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpeq_ss +FORCE_INLINE __m128 _mm_cmpeq_ss(__m128 a, __m128 b) +{ + return _mm_move_ss(a, _mm_cmpeq_ps(a, b)); +} + +// Compare packed single-precision (32-bit) floating-point elements in a and b +// for greater-than-or-equal, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpge_ps +FORCE_INLINE __m128 _mm_cmpge_ps(__m128 a, __m128 b) +{ + return vreinterpretq_m128_u32( + vcgeq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b))); +} + +// Compare the lower single-precision (32-bit) floating-point elements in a and +// b for greater-than-or-equal, store the result in the lower element of dst, +// and copy the upper 3 packed elements from a to the upper elements of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpge_ss +FORCE_INLINE __m128 _mm_cmpge_ss(__m128 a, __m128 b) +{ + return _mm_move_ss(a, _mm_cmpge_ps(a, b)); +} + +// Compare packed single-precision (32-bit) floating-point elements in a and b +// for greater-than, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpgt_ps +FORCE_INLINE __m128 _mm_cmpgt_ps(__m128 a, __m128 b) +{ + return vreinterpretq_m128_u32( + vcgtq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b))); +} + +// Compare the lower single-precision (32-bit) floating-point elements in a and +// b for greater-than, store the result in the lower element of dst, and copy +// the upper 3 packed elements from a to the upper elements of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpgt_ss +FORCE_INLINE __m128 _mm_cmpgt_ss(__m128 a, __m128 b) +{ + return _mm_move_ss(a, _mm_cmpgt_ps(a, b)); +} + +// Compare packed single-precision (32-bit) floating-point elements in a and b +// for less-than-or-equal, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmple_ps +FORCE_INLINE __m128 _mm_cmple_ps(__m128 a, __m128 b) +{ + return vreinterpretq_m128_u32( + vcleq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b))); +} + +// Compare the lower single-precision (32-bit) floating-point elements in a and +// b for less-than-or-equal, store the result in the lower element of dst, and +// copy the upper 3 packed elements from a to the upper elements of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmple_ss +FORCE_INLINE __m128 _mm_cmple_ss(__m128 a, __m128 b) +{ + return _mm_move_ss(a, _mm_cmple_ps(a, b)); +} + +// Compare packed single-precision (32-bit) floating-point elements in a and b +// for less-than, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmplt_ps +FORCE_INLINE __m128 _mm_cmplt_ps(__m128 a, __m128 b) +{ + return vreinterpretq_m128_u32( + vcltq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b))); +} + +// Compare the lower single-precision (32-bit) floating-point elements in a and +// b for less-than, store the result in the lower element of dst, and copy the +// upper 3 packed elements from a to the upper elements of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmplt_ss +FORCE_INLINE __m128 _mm_cmplt_ss(__m128 a, __m128 b) +{ + return _mm_move_ss(a, _mm_cmplt_ps(a, b)); +} + +// Compare packed single-precision (32-bit) floating-point elements in a and b +// for not-equal, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpneq_ps +FORCE_INLINE __m128 _mm_cmpneq_ps(__m128 a, __m128 b) +{ + return vreinterpretq_m128_u32(vmvnq_u32( + vceqq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b)))); +} + +// Compare the lower single-precision (32-bit) floating-point elements in a and +// b for not-equal, store the result in the lower element of dst, and copy the +// upper 3 packed elements from a to the upper elements of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpneq_ss +FORCE_INLINE __m128 _mm_cmpneq_ss(__m128 a, __m128 b) +{ + return _mm_move_ss(a, _mm_cmpneq_ps(a, b)); +} + +// Compare packed single-precision (32-bit) floating-point elements in a and b +// for not-greater-than-or-equal, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpnge_ps +FORCE_INLINE __m128 _mm_cmpnge_ps(__m128 a, __m128 b) +{ + return vreinterpretq_m128_u32(vmvnq_u32( + vcgeq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b)))); +} + +// Compare the lower single-precision (32-bit) floating-point elements in a and +// b for not-greater-than-or-equal, store the result in the lower element of +// dst, and copy the upper 3 packed elements from a to the upper elements of +// dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpnge_ss +FORCE_INLINE __m128 _mm_cmpnge_ss(__m128 a, __m128 b) +{ + return _mm_move_ss(a, _mm_cmpnge_ps(a, b)); +} + +// Compare packed single-precision (32-bit) floating-point elements in a and b +// for not-greater-than, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpngt_ps +FORCE_INLINE __m128 _mm_cmpngt_ps(__m128 a, __m128 b) +{ + return vreinterpretq_m128_u32(vmvnq_u32( + vcgtq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b)))); +} + +// Compare the lower single-precision (32-bit) floating-point elements in a and +// b for not-greater-than, store the result in the lower element of dst, and +// copy the upper 3 packed elements from a to the upper elements of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpngt_ss +FORCE_INLINE __m128 _mm_cmpngt_ss(__m128 a, __m128 b) +{ + return _mm_move_ss(a, _mm_cmpngt_ps(a, b)); +} + +// Compare packed single-precision (32-bit) floating-point elements in a and b +// for not-less-than-or-equal, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpnle_ps +FORCE_INLINE __m128 _mm_cmpnle_ps(__m128 a, __m128 b) +{ + return vreinterpretq_m128_u32(vmvnq_u32( + vcleq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b)))); +} + +// Compare the lower single-precision (32-bit) floating-point elements in a and +// b for not-less-than-or-equal, store the result in the lower element of dst, +// and copy the upper 3 packed elements from a to the upper elements of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpnle_ss +FORCE_INLINE __m128 _mm_cmpnle_ss(__m128 a, __m128 b) +{ + return _mm_move_ss(a, _mm_cmpnle_ps(a, b)); +} + +// Compare packed single-precision (32-bit) floating-point elements in a and b +// for not-less-than, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpnlt_ps +FORCE_INLINE __m128 _mm_cmpnlt_ps(__m128 a, __m128 b) +{ + return vreinterpretq_m128_u32(vmvnq_u32( + vcltq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b)))); +} + +// Compare the lower single-precision (32-bit) floating-point elements in a and +// b for not-less-than, store the result in the lower element of dst, and copy +// the upper 3 packed elements from a to the upper elements of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpnlt_ss +FORCE_INLINE __m128 _mm_cmpnlt_ss(__m128 a, __m128 b) +{ + return _mm_move_ss(a, _mm_cmpnlt_ps(a, b)); +} + +// Compare packed single-precision (32-bit) floating-point elements in a and b +// to see if neither is NaN, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpord_ps +// +// See also: +// http://stackoverflow.com/questions/8627331/what-does-ordered-unordered-comparison-mean +// http://stackoverflow.com/questions/29349621/neon-isnanval-intrinsics +FORCE_INLINE __m128 _mm_cmpord_ps(__m128 a, __m128 b) +{ + // Note: NEON does not have ordered compare builtin + // Need to compare a eq a and b eq b to check for NaN + // Do AND of results to get final + uint32x4_t ceqaa = + vceqq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(a)); + uint32x4_t ceqbb = + vceqq_f32(vreinterpretq_f32_m128(b), vreinterpretq_f32_m128(b)); + return vreinterpretq_m128_u32(vandq_u32(ceqaa, ceqbb)); +} + +// Compare the lower single-precision (32-bit) floating-point elements in a and +// b to see if neither is NaN, store the result in the lower element of dst, and +// copy the upper 3 packed elements from a to the upper elements of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpord_ss +FORCE_INLINE __m128 _mm_cmpord_ss(__m128 a, __m128 b) +{ + return _mm_move_ss(a, _mm_cmpord_ps(a, b)); +} + +// Compare packed single-precision (32-bit) floating-point elements in a and b +// to see if either is NaN, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpunord_ps +FORCE_INLINE __m128 _mm_cmpunord_ps(__m128 a, __m128 b) +{ + uint32x4_t f32a = + vceqq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(a)); + uint32x4_t f32b = + vceqq_f32(vreinterpretq_f32_m128(b), vreinterpretq_f32_m128(b)); + return vreinterpretq_m128_u32(vmvnq_u32(vandq_u32(f32a, f32b))); +} + +// Compare the lower single-precision (32-bit) floating-point elements in a and +// b to see if either is NaN, store the result in the lower element of dst, and +// copy the upper 3 packed elements from a to the upper elements of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpunord_ss +FORCE_INLINE __m128 _mm_cmpunord_ss(__m128 a, __m128 b) +{ + return _mm_move_ss(a, _mm_cmpunord_ps(a, b)); +} + +// Compare the lower single-precision (32-bit) floating-point element in a and b +// for equality, and return the boolean result (0 or 1). +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_comieq_ss +FORCE_INLINE int _mm_comieq_ss(__m128 a, __m128 b) +{ + uint32x4_t a_eq_b = + vceqq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b)); + return vgetq_lane_u32(a_eq_b, 0) & 0x1; +} + +// Compare the lower single-precision (32-bit) floating-point element in a and b +// for greater-than-or-equal, and return the boolean result (0 or 1). +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_comige_ss +FORCE_INLINE int _mm_comige_ss(__m128 a, __m128 b) +{ + uint32x4_t a_ge_b = + vcgeq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b)); + return vgetq_lane_u32(a_ge_b, 0) & 0x1; +} + +// Compare the lower single-precision (32-bit) floating-point element in a and b +// for greater-than, and return the boolean result (0 or 1). +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_comigt_ss +FORCE_INLINE int _mm_comigt_ss(__m128 a, __m128 b) +{ + uint32x4_t a_gt_b = + vcgtq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b)); + return vgetq_lane_u32(a_gt_b, 0) & 0x1; +} + +// Compare the lower single-precision (32-bit) floating-point element in a and b +// for less-than-or-equal, and return the boolean result (0 or 1). +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_comile_ss +FORCE_INLINE int _mm_comile_ss(__m128 a, __m128 b) +{ + uint32x4_t a_le_b = + vcleq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b)); + return vgetq_lane_u32(a_le_b, 0) & 0x1; +} + +// Compare the lower single-precision (32-bit) floating-point element in a and b +// for less-than, and return the boolean result (0 or 1). +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_comilt_ss +FORCE_INLINE int _mm_comilt_ss(__m128 a, __m128 b) +{ + uint32x4_t a_lt_b = + vcltq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b)); + return vgetq_lane_u32(a_lt_b, 0) & 0x1; +} + +// Compare the lower single-precision (32-bit) floating-point element in a and b +// for not-equal, and return the boolean result (0 or 1). +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_comineq_ss +FORCE_INLINE int _mm_comineq_ss(__m128 a, __m128 b) +{ + return !_mm_comieq_ss(a, b); +} + +// Convert packed signed 32-bit integers in b to packed single-precision +// (32-bit) floating-point elements, store the results in the lower 2 elements +// of dst, and copy the upper 2 packed elements from a to the upper elements of +// dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvt_pi2ps +FORCE_INLINE __m128 _mm_cvt_pi2ps(__m128 a, __m64 b) +{ + return vreinterpretq_m128_f32( + vcombine_f32(vcvt_f32_s32(vreinterpret_s32_m64(b)), + vget_high_f32(vreinterpretq_f32_m128(a)))); +} + +// Convert packed single-precision (32-bit) floating-point elements in a to +// packed 32-bit integers, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvt_ps2pi +FORCE_INLINE __m64 _mm_cvt_ps2pi(__m128 a) +{ +#if (defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC)) || \ + defined(__ARM_FEATURE_DIRECTED_ROUNDING) + return vreinterpret_m64_s32( + vget_low_s32(vcvtnq_s32_f32(vrndiq_f32(vreinterpretq_f32_m128(a))))); +#else + return vreinterpret_m64_s32(vcvt_s32_f32(vget_low_f32( + vreinterpretq_f32_m128(_mm_round_ps(a, _MM_FROUND_CUR_DIRECTION))))); +#endif +} + +// Convert the signed 32-bit integer b to a single-precision (32-bit) +// floating-point element, store the result in the lower element of dst, and +// copy the upper 3 packed elements from a to the upper elements of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvt_si2ss +FORCE_INLINE __m128 _mm_cvt_si2ss(__m128 a, int b) +{ + return vreinterpretq_m128_f32( + vsetq_lane_f32((float) b, vreinterpretq_f32_m128(a), 0)); +} + +// Convert the lower single-precision (32-bit) floating-point element in a to a +// 32-bit integer, and store the result in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvt_ss2si +FORCE_INLINE int _mm_cvt_ss2si(__m128 a) +{ +#if (defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC)) || \ + defined(__ARM_FEATURE_DIRECTED_ROUNDING) + return vgetq_lane_s32(vcvtnq_s32_f32(vrndiq_f32(vreinterpretq_f32_m128(a))), + 0); +#else + float32_t data = vgetq_lane_f32( + vreinterpretq_f32_m128(_mm_round_ps(a, _MM_FROUND_CUR_DIRECTION)), 0); + return (int32_t) data; +#endif +} + +// Convert packed 16-bit integers in a to packed single-precision (32-bit) +// floating-point elements, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtpi16_ps +FORCE_INLINE __m128 _mm_cvtpi16_ps(__m64 a) +{ + return vreinterpretq_m128_f32( + vcvtq_f32_s32(vmovl_s16(vreinterpret_s16_m64(a)))); +} + +// Convert packed 32-bit integers in b to packed single-precision (32-bit) +// floating-point elements, store the results in the lower 2 elements of dst, +// and copy the upper 2 packed elements from a to the upper elements of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtpi32_ps +FORCE_INLINE __m128 _mm_cvtpi32_ps(__m128 a, __m64 b) +{ + return vreinterpretq_m128_f32( + vcombine_f32(vcvt_f32_s32(vreinterpret_s32_m64(b)), + vget_high_f32(vreinterpretq_f32_m128(a)))); +} + +// Convert packed signed 32-bit integers in a to packed single-precision +// (32-bit) floating-point elements, store the results in the lower 2 elements +// of dst, then convert the packed signed 32-bit integers in b to +// single-precision (32-bit) floating-point element, and store the results in +// the upper 2 elements of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtpi32x2_ps +FORCE_INLINE __m128 _mm_cvtpi32x2_ps(__m64 a, __m64 b) +{ + return vreinterpretq_m128_f32(vcvtq_f32_s32( + vcombine_s32(vreinterpret_s32_m64(a), vreinterpret_s32_m64(b)))); +} + +// Convert the lower packed 8-bit integers in a to packed single-precision +// (32-bit) floating-point elements, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtpi8_ps +FORCE_INLINE __m128 _mm_cvtpi8_ps(__m64 a) +{ + return vreinterpretq_m128_f32(vcvtq_f32_s32( + vmovl_s16(vget_low_s16(vmovl_s8(vreinterpret_s8_m64(a)))))); +} + +// Convert packed single-precision (32-bit) floating-point elements in a to +// packed 16-bit integers, and store the results in dst. Note: this intrinsic +// will generate 0x7FFF, rather than 0x8000, for input values between 0x7FFF and +// 0x7FFFFFFF. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtps_pi16 +FORCE_INLINE __m64 _mm_cvtps_pi16(__m128 a) +{ + return vreinterpret_m64_s16( + vqmovn_s32(vreinterpretq_s32_m128i(_mm_cvtps_epi32(a)))); +} + +// Convert packed single-precision (32-bit) floating-point elements in a to +// packed 32-bit integers, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtps_pi32 +#define _mm_cvtps_pi32(a) _mm_cvt_ps2pi(a) + +// Convert packed single-precision (32-bit) floating-point elements in a to +// packed 8-bit integers, and store the results in lower 4 elements of dst. +// Note: this intrinsic will generate 0x7F, rather than 0x80, for input values +// between 0x7F and 0x7FFFFFFF. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtps_pi8 +FORCE_INLINE __m64 _mm_cvtps_pi8(__m128 a) +{ + return vreinterpret_m64_s8(vqmovn_s16( + vcombine_s16(vreinterpret_s16_m64(_mm_cvtps_pi16(a)), vdup_n_s16(0)))); +} + +// Convert packed unsigned 16-bit integers in a to packed single-precision +// (32-bit) floating-point elements, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtpu16_ps +FORCE_INLINE __m128 _mm_cvtpu16_ps(__m64 a) +{ + return vreinterpretq_m128_f32( + vcvtq_f32_u32(vmovl_u16(vreinterpret_u16_m64(a)))); +} + +// Convert the lower packed unsigned 8-bit integers in a to packed +// single-precision (32-bit) floating-point elements, and store the results in +// dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtpu8_ps +FORCE_INLINE __m128 _mm_cvtpu8_ps(__m64 a) +{ + return vreinterpretq_m128_f32(vcvtq_f32_u32( + vmovl_u16(vget_low_u16(vmovl_u8(vreinterpret_u8_m64(a)))))); +} + +// Convert the signed 32-bit integer b to a single-precision (32-bit) +// floating-point element, store the result in the lower element of dst, and +// copy the upper 3 packed elements from a to the upper elements of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtsi32_ss +#define _mm_cvtsi32_ss(a, b) _mm_cvt_si2ss(a, b) + +// Convert the signed 64-bit integer b to a single-precision (32-bit) +// floating-point element, store the result in the lower element of dst, and +// copy the upper 3 packed elements from a to the upper elements of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtsi64_ss +FORCE_INLINE __m128 _mm_cvtsi64_ss(__m128 a, int64_t b) +{ + return vreinterpretq_m128_f32( + vsetq_lane_f32((float) b, vreinterpretq_f32_m128(a), 0)); +} + +// Copy the lower single-precision (32-bit) floating-point element of a to dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtss_f32 +FORCE_INLINE float _mm_cvtss_f32(__m128 a) +{ + return vgetq_lane_f32(vreinterpretq_f32_m128(a), 0); +} + +// Convert the lower single-precision (32-bit) floating-point element in a to a +// 32-bit integer, and store the result in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtss_si32 +#define _mm_cvtss_si32(a) _mm_cvt_ss2si(a) + +// Convert the lower single-precision (32-bit) floating-point element in a to a +// 64-bit integer, and store the result in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtss_si64 +FORCE_INLINE int64_t _mm_cvtss_si64(__m128 a) +{ +#if (defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC)) || \ + defined(__ARM_FEATURE_DIRECTED_ROUNDING) + return (int64_t) vgetq_lane_f32(vrndiq_f32(vreinterpretq_f32_m128(a)), 0); +#else + float32_t data = vgetq_lane_f32( + vreinterpretq_f32_m128(_mm_round_ps(a, _MM_FROUND_CUR_DIRECTION)), 0); + return (int64_t) data; +#endif +} + +// Convert packed single-precision (32-bit) floating-point elements in a to +// packed 32-bit integers with truncation, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtt_ps2pi +FORCE_INLINE __m64 _mm_cvtt_ps2pi(__m128 a) +{ + return vreinterpret_m64_s32( + vget_low_s32(vcvtq_s32_f32(vreinterpretq_f32_m128(a)))); +} + +// Convert the lower single-precision (32-bit) floating-point element in a to a +// 32-bit integer with truncation, and store the result in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtt_ss2si +FORCE_INLINE int _mm_cvtt_ss2si(__m128 a) +{ + return vgetq_lane_s32(vcvtq_s32_f32(vreinterpretq_f32_m128(a)), 0); +} + +// Convert packed single-precision (32-bit) floating-point elements in a to +// packed 32-bit integers with truncation, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvttps_pi32 +#define _mm_cvttps_pi32(a) _mm_cvtt_ps2pi(a) + +// Convert the lower single-precision (32-bit) floating-point element in a to a +// 32-bit integer with truncation, and store the result in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvttss_si32 +#define _mm_cvttss_si32(a) _mm_cvtt_ss2si(a) + +// Convert the lower single-precision (32-bit) floating-point element in a to a +// 64-bit integer with truncation, and store the result in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvttss_si64 +FORCE_INLINE int64_t _mm_cvttss_si64(__m128 a) +{ + return (int64_t) vgetq_lane_f32(vreinterpretq_f32_m128(a), 0); +} + +// Divide packed single-precision (32-bit) floating-point elements in a by +// packed elements in b, and store the results in dst. +// Due to ARMv7-A NEON's lack of a precise division intrinsic, we implement +// division by multiplying a by b's reciprocal before using the Newton-Raphson +// method to approximate the results. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_div_ps +FORCE_INLINE __m128 _mm_div_ps(__m128 a, __m128 b) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpretq_m128_f32( + vdivq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b))); +#else + float32x4_t recip = vrecpeq_f32(vreinterpretq_f32_m128(b)); + recip = vmulq_f32(recip, vrecpsq_f32(recip, vreinterpretq_f32_m128(b))); + // Additional Netwon-Raphson iteration for accuracy + recip = vmulq_f32(recip, vrecpsq_f32(recip, vreinterpretq_f32_m128(b))); + return vreinterpretq_m128_f32(vmulq_f32(vreinterpretq_f32_m128(a), recip)); +#endif +} + +// Divide the lower single-precision (32-bit) floating-point element in a by the +// lower single-precision (32-bit) floating-point element in b, store the result +// in the lower element of dst, and copy the upper 3 packed elements from a to +// the upper elements of dst. +// Warning: ARMv7-A does not produce the same result compared to Intel and not +// IEEE-compliant. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_div_ss +FORCE_INLINE __m128 _mm_div_ss(__m128 a, __m128 b) +{ + float32_t value = + vgetq_lane_f32(vreinterpretq_f32_m128(_mm_div_ps(a, b)), 0); + return vreinterpretq_m128_f32( + vsetq_lane_f32(value, vreinterpretq_f32_m128(a), 0)); +} + +// Extract a 16-bit integer from a, selected with imm8, and store the result in +// the lower element of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_extract_pi16 +#define _mm_extract_pi16(a, imm) \ + (int32_t) vget_lane_u16(vreinterpret_u16_m64(a), (imm)) + +// Free aligned memory that was allocated with _mm_malloc. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_free +#if !defined(SSE2NEON_ALLOC_DEFINED) +FORCE_INLINE void _mm_free(void *addr) +{ +#if defined(_WIN32) + _aligned_free(addr); +#else + free(addr); +#endif +} +#endif + +FORCE_INLINE uint64_t _sse2neon_get_fpcr(void) +{ + uint64_t value; +#if defined(_MSC_VER) && !defined(__clang__) + value = _ReadStatusReg(ARM64_FPCR); +#else + __asm__ __volatile__("mrs %0, FPCR" : "=r"(value)); /* read */ +#endif + return value; +} + +FORCE_INLINE void _sse2neon_set_fpcr(uint64_t value) +{ +#if defined(_MSC_VER) && !defined(__clang__) + _WriteStatusReg(ARM64_FPCR, value); +#else + __asm__ __volatile__("msr FPCR, %0" ::"r"(value)); /* write */ +#endif +} + +// Macro: Get the flush zero bits from the MXCSR control and status register. +// The flush zero may contain any of the following flags: _MM_FLUSH_ZERO_ON or +// _MM_FLUSH_ZERO_OFF +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_MM_GET_FLUSH_ZERO_MODE +FORCE_INLINE unsigned int _sse2neon_mm_get_flush_zero_mode(void) +{ + union { + fpcr_bitfield field; +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + uint64_t value; +#else + uint32_t value; +#endif + } r; + +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + r.value = _sse2neon_get_fpcr(); +#else + __asm__ __volatile__("vmrs %0, FPSCR" : "=r"(r.value)); /* read */ +#endif + + return r.field.bit24 ? _MM_FLUSH_ZERO_ON : _MM_FLUSH_ZERO_OFF; +} + +// Macro: Get the rounding mode bits from the MXCSR control and status register. +// The rounding mode may contain any of the following flags: _MM_ROUND_NEAREST, +// _MM_ROUND_DOWN, _MM_ROUND_UP, _MM_ROUND_TOWARD_ZERO +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_MM_GET_ROUNDING_MODE +FORCE_INLINE unsigned int _MM_GET_ROUNDING_MODE(void) +{ + switch (fegetround()) { + case FE_TONEAREST: + return _MM_ROUND_NEAREST; + case FE_DOWNWARD: + return _MM_ROUND_DOWN; + case FE_UPWARD: + return _MM_ROUND_UP; + case FE_TOWARDZERO: + return _MM_ROUND_TOWARD_ZERO; + default: + // fegetround() must return _MM_ROUND_NEAREST, _MM_ROUND_DOWN, + // _MM_ROUND_UP, _MM_ROUND_TOWARD_ZERO on success. all the other error + // cases we treat them as FE_TOWARDZERO (truncate). + return _MM_ROUND_TOWARD_ZERO; + } +} + +// Copy a to dst, and insert the 16-bit integer i into dst at the location +// specified by imm8. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_insert_pi16 +#define _mm_insert_pi16(a, b, imm) \ + vreinterpret_m64_s16(vset_lane_s16((b), vreinterpret_s16_m64(a), (imm))) + +// Load 128-bits (composed of 4 packed single-precision (32-bit) floating-point +// elements) from memory into dst. mem_addr must be aligned on a 16-byte +// boundary or a general-protection exception may be generated. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_load_ps +FORCE_INLINE __m128 _mm_load_ps(const float *p) +{ + return vreinterpretq_m128_f32(vld1q_f32(p)); +} + +// Load a single-precision (32-bit) floating-point element from memory into all +// elements of dst. +// +// dst[31:0] := MEM[mem_addr+31:mem_addr] +// dst[63:32] := MEM[mem_addr+31:mem_addr] +// dst[95:64] := MEM[mem_addr+31:mem_addr] +// dst[127:96] := MEM[mem_addr+31:mem_addr] +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_load_ps1 +#define _mm_load_ps1 _mm_load1_ps + +// Load a single-precision (32-bit) floating-point element from memory into the +// lower of dst, and zero the upper 3 elements. mem_addr does not need to be +// aligned on any particular boundary. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_load_ss +FORCE_INLINE __m128 _mm_load_ss(const float *p) +{ + return vreinterpretq_m128_f32(vsetq_lane_f32(*p, vdupq_n_f32(0), 0)); +} + +// Load a single-precision (32-bit) floating-point element from memory into all +// elements of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_load1_ps +FORCE_INLINE __m128 _mm_load1_ps(const float *p) +{ + return vreinterpretq_m128_f32(vld1q_dup_f32(p)); +} + +// Load 2 single-precision (32-bit) floating-point elements from memory into the +// upper 2 elements of dst, and copy the lower 2 elements from a to dst. +// mem_addr does not need to be aligned on any particular boundary. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_loadh_pi +FORCE_INLINE __m128 _mm_loadh_pi(__m128 a, __m64 const *p) +{ + return vreinterpretq_m128_f32( + vcombine_f32(vget_low_f32(a), vld1_f32((const float32_t *) p))); +} + +// Load 2 single-precision (32-bit) floating-point elements from memory into the +// lower 2 elements of dst, and copy the upper 2 elements from a to dst. +// mem_addr does not need to be aligned on any particular boundary. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_loadl_pi +FORCE_INLINE __m128 _mm_loadl_pi(__m128 a, __m64 const *p) +{ + return vreinterpretq_m128_f32( + vcombine_f32(vld1_f32((const float32_t *) p), vget_high_f32(a))); +} + +// Load 4 single-precision (32-bit) floating-point elements from memory into dst +// in reverse order. mem_addr must be aligned on a 16-byte boundary or a +// general-protection exception may be generated. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_loadr_ps +FORCE_INLINE __m128 _mm_loadr_ps(const float *p) +{ + float32x4_t v = vrev64q_f32(vld1q_f32(p)); + return vreinterpretq_m128_f32(vextq_f32(v, v, 2)); +} + +// Load 128-bits (composed of 4 packed single-precision (32-bit) floating-point +// elements) from memory into dst. mem_addr does not need to be aligned on any +// particular boundary. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_loadu_ps +FORCE_INLINE __m128 _mm_loadu_ps(const float *p) +{ + // for neon, alignment doesn't matter, so _mm_load_ps and _mm_loadu_ps are + // equivalent for neon + return vreinterpretq_m128_f32(vld1q_f32(p)); +} + +// Load unaligned 16-bit integer from memory into the first element of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_loadu_si16 +FORCE_INLINE __m128i _mm_loadu_si16(const void *p) +{ + return vreinterpretq_m128i_s16( + vsetq_lane_s16(*(const unaligned_int16_t *) p, vdupq_n_s16(0), 0)); +} + +// Load unaligned 64-bit integer from memory into the first element of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_loadu_si64 +FORCE_INLINE __m128i _mm_loadu_si64(const void *p) +{ + return vreinterpretq_m128i_s64( + vsetq_lane_s64(*(const unaligned_int64_t *) p, vdupq_n_s64(0), 0)); +} + +// Allocate size bytes of memory, aligned to the alignment specified in align, +// and return a pointer to the allocated memory. _mm_free should be used to free +// memory that is allocated with _mm_malloc. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_malloc +#if !defined(SSE2NEON_ALLOC_DEFINED) +FORCE_INLINE void *_mm_malloc(size_t size, size_t align) +{ +#if defined(_WIN32) + return _aligned_malloc(size, align); +#else + void *ptr; + if (align == 1) + return malloc(size); + if (align == 2 || (sizeof(void *) == 8 && align == 4)) + align = sizeof(void *); + if (!posix_memalign(&ptr, align, size)) + return ptr; + return NULL; +#endif +} +#endif + +// Conditionally store 8-bit integer elements from a into memory using mask +// (elements are not stored when the highest bit is not set in the corresponding +// element) and a non-temporal memory hint. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskmove_si64 +FORCE_INLINE void _mm_maskmove_si64(__m64 a, __m64 mask, char *mem_addr) +{ + int8x8_t shr_mask = vshr_n_s8(vreinterpret_s8_m64(mask), 7); + __m128 b = _mm_load_ps((const float *) mem_addr); + int8x8_t masked = + vbsl_s8(vreinterpret_u8_s8(shr_mask), vreinterpret_s8_m64(a), + vreinterpret_s8_u64(vget_low_u64(vreinterpretq_u64_m128(b)))); + vst1_s8((int8_t *) mem_addr, masked); +} + +// Conditionally store 8-bit integer elements from a into memory using mask +// (elements are not stored when the highest bit is not set in the corresponding +// element) and a non-temporal memory hint. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_m_maskmovq +#define _m_maskmovq(a, mask, mem_addr) _mm_maskmove_si64(a, mask, mem_addr) + +// Compare packed signed 16-bit integers in a and b, and store packed maximum +// values in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_max_pi16 +FORCE_INLINE __m64 _mm_max_pi16(__m64 a, __m64 b) +{ + return vreinterpret_m64_s16( + vmax_s16(vreinterpret_s16_m64(a), vreinterpret_s16_m64(b))); +} + +// Compare packed single-precision (32-bit) floating-point elements in a and b, +// and store packed maximum values in dst. dst does not follow the IEEE Standard +// for Floating-Point Arithmetic (IEEE 754) maximum value when inputs are NaN or +// signed-zero values. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_max_ps +FORCE_INLINE __m128 _mm_max_ps(__m128 a, __m128 b) +{ +#if SSE2NEON_PRECISE_MINMAX + float32x4_t _a = vreinterpretq_f32_m128(a); + float32x4_t _b = vreinterpretq_f32_m128(b); + return vreinterpretq_m128_f32(vbslq_f32(vcgtq_f32(_a, _b), _a, _b)); +#else + return vreinterpretq_m128_f32( + vmaxq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b))); +#endif +} + +// Compare packed unsigned 8-bit integers in a and b, and store packed maximum +// values in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_max_pu8 +FORCE_INLINE __m64 _mm_max_pu8(__m64 a, __m64 b) +{ + return vreinterpret_m64_u8( + vmax_u8(vreinterpret_u8_m64(a), vreinterpret_u8_m64(b))); +} + +// Compare the lower single-precision (32-bit) floating-point elements in a and +// b, store the maximum value in the lower element of dst, and copy the upper 3 +// packed elements from a to the upper element of dst. dst does not follow the +// IEEE Standard for Floating-Point Arithmetic (IEEE 754) maximum value when +// inputs are NaN or signed-zero values. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_max_ss +FORCE_INLINE __m128 _mm_max_ss(__m128 a, __m128 b) +{ + float32_t value = vgetq_lane_f32(_mm_max_ps(a, b), 0); + return vreinterpretq_m128_f32( + vsetq_lane_f32(value, vreinterpretq_f32_m128(a), 0)); +} + +// Compare packed signed 16-bit integers in a and b, and store packed minimum +// values in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_min_pi16 +FORCE_INLINE __m64 _mm_min_pi16(__m64 a, __m64 b) +{ + return vreinterpret_m64_s16( + vmin_s16(vreinterpret_s16_m64(a), vreinterpret_s16_m64(b))); +} + +// Compare packed single-precision (32-bit) floating-point elements in a and b, +// and store packed minimum values in dst. dst does not follow the IEEE Standard +// for Floating-Point Arithmetic (IEEE 754) minimum value when inputs are NaN or +// signed-zero values. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_min_ps +FORCE_INLINE __m128 _mm_min_ps(__m128 a, __m128 b) +{ +#if SSE2NEON_PRECISE_MINMAX + float32x4_t _a = vreinterpretq_f32_m128(a); + float32x4_t _b = vreinterpretq_f32_m128(b); + return vreinterpretq_m128_f32(vbslq_f32(vcltq_f32(_a, _b), _a, _b)); +#else + return vreinterpretq_m128_f32( + vminq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b))); +#endif +} + +// Compare packed unsigned 8-bit integers in a and b, and store packed minimum +// values in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_min_pu8 +FORCE_INLINE __m64 _mm_min_pu8(__m64 a, __m64 b) +{ + return vreinterpret_m64_u8( + vmin_u8(vreinterpret_u8_m64(a), vreinterpret_u8_m64(b))); +} + +// Compare the lower single-precision (32-bit) floating-point elements in a and +// b, store the minimum value in the lower element of dst, and copy the upper 3 +// packed elements from a to the upper element of dst. dst does not follow the +// IEEE Standard for Floating-Point Arithmetic (IEEE 754) minimum value when +// inputs are NaN or signed-zero values. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_min_ss +FORCE_INLINE __m128 _mm_min_ss(__m128 a, __m128 b) +{ + float32_t value = vgetq_lane_f32(_mm_min_ps(a, b), 0); + return vreinterpretq_m128_f32( + vsetq_lane_f32(value, vreinterpretq_f32_m128(a), 0)); +} + +// Move the lower single-precision (32-bit) floating-point element from b to the +// lower element of dst, and copy the upper 3 packed elements from a to the +// upper elements of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_move_ss +FORCE_INLINE __m128 _mm_move_ss(__m128 a, __m128 b) +{ + return vreinterpretq_m128_f32( + vsetq_lane_f32(vgetq_lane_f32(vreinterpretq_f32_m128(b), 0), + vreinterpretq_f32_m128(a), 0)); +} + +// Move the upper 2 single-precision (32-bit) floating-point elements from b to +// the lower 2 elements of dst, and copy the upper 2 elements from a to the +// upper 2 elements of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_movehl_ps +FORCE_INLINE __m128 _mm_movehl_ps(__m128 a, __m128 b) +{ +#if defined(aarch64__) + return vreinterpretq_m128_u64( + vzip2q_u64(vreinterpretq_u64_m128(b), vreinterpretq_u64_m128(a))); +#else + float32x2_t a32 = vget_high_f32(vreinterpretq_f32_m128(a)); + float32x2_t b32 = vget_high_f32(vreinterpretq_f32_m128(b)); + return vreinterpretq_m128_f32(vcombine_f32(b32, a32)); +#endif +} + +// Move the lower 2 single-precision (32-bit) floating-point elements from b to +// the upper 2 elements of dst, and copy the lower 2 elements from a to the +// lower 2 elements of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_movelh_ps +FORCE_INLINE __m128 _mm_movelh_ps(__m128 __A, __m128 __B) +{ + float32x2_t a10 = vget_low_f32(vreinterpretq_f32_m128(__A)); + float32x2_t b10 = vget_low_f32(vreinterpretq_f32_m128(__B)); + return vreinterpretq_m128_f32(vcombine_f32(a10, b10)); +} + +// Create mask from the most significant bit of each 8-bit element in a, and +// store the result in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_movemask_pi8 +FORCE_INLINE int _mm_movemask_pi8(__m64 a) +{ + uint8x8_t input = vreinterpret_u8_m64(a); +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + static const int8_t shift[8] = {0, 1, 2, 3, 4, 5, 6, 7}; + uint8x8_t tmp = vshr_n_u8(input, 7); + return vaddv_u8(vshl_u8(tmp, vld1_s8(shift))); +#else + // Refer the implementation of `_mm_movemask_epi8` + uint16x4_t high_bits = vreinterpret_u16_u8(vshr_n_u8(input, 7)); + uint32x2_t paired16 = + vreinterpret_u32_u16(vsra_n_u16(high_bits, high_bits, 7)); + uint8x8_t paired32 = + vreinterpret_u8_u32(vsra_n_u32(paired16, paired16, 14)); + return vget_lane_u8(paired32, 0) | ((int) vget_lane_u8(paired32, 4) << 4); +#endif +} + +// Set each bit of mask dst based on the most significant bit of the +// corresponding packed single-precision (32-bit) floating-point element in a. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_movemask_ps +FORCE_INLINE int _mm_movemask_ps(__m128 a) +{ + uint32x4_t input = vreinterpretq_u32_m128(a); +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + static const int32_t shift[4] = {0, 1, 2, 3}; + uint32x4_t tmp = vshrq_n_u32(input, 31); + return vaddvq_u32(vshlq_u32(tmp, vld1q_s32(shift))); +#else + // Uses the exact same method as _mm_movemask_epi8, see that for details. + // Shift out everything but the sign bits with a 32-bit unsigned shift + // right. + uint64x2_t high_bits = vreinterpretq_u64_u32(vshrq_n_u32(input, 31)); + // Merge the two pairs together with a 64-bit unsigned shift right + add. + uint8x16_t paired = + vreinterpretq_u8_u64(vsraq_n_u64(high_bits, high_bits, 31)); + // Extract the result. + return vgetq_lane_u8(paired, 0) | (vgetq_lane_u8(paired, 8) << 2); +#endif +} + +// Multiply packed single-precision (32-bit) floating-point elements in a and b, +// and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mul_ps +FORCE_INLINE __m128 _mm_mul_ps(__m128 a, __m128 b) +{ + return vreinterpretq_m128_f32( + vmulq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b))); +} + +// Multiply the lower single-precision (32-bit) floating-point element in a and +// b, store the result in the lower element of dst, and copy the upper 3 packed +// elements from a to the upper elements of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mul_ss +FORCE_INLINE __m128 _mm_mul_ss(__m128 a, __m128 b) +{ + return _mm_move_ss(a, _mm_mul_ps(a, b)); +} + +// Multiply the packed unsigned 16-bit integers in a and b, producing +// intermediate 32-bit integers, and store the high 16 bits of the intermediate +// integers in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mulhi_pu16 +FORCE_INLINE __m64 _mm_mulhi_pu16(__m64 a, __m64 b) +{ + return vreinterpret_m64_u16(vshrn_n_u32( + vmull_u16(vreinterpret_u16_m64(a), vreinterpret_u16_m64(b)), 16)); +} + +// Compute the bitwise OR of packed single-precision (32-bit) floating-point +// elements in a and b, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_or_ps +FORCE_INLINE __m128 _mm_or_ps(__m128 a, __m128 b) +{ + return vreinterpretq_m128_s32( + vorrq_s32(vreinterpretq_s32_m128(a), vreinterpretq_s32_m128(b))); +} + +// Average packed unsigned 8-bit integers in a and b, and store the results in +// dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_m_pavgb +#define _m_pavgb(a, b) _mm_avg_pu8(a, b) + +// Average packed unsigned 16-bit integers in a and b, and store the results in +// dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_m_pavgw +#define _m_pavgw(a, b) _mm_avg_pu16(a, b) + +// Extract a 16-bit integer from a, selected with imm8, and store the result in +// the lower element of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_m_pextrw +#define _m_pextrw(a, imm) _mm_extract_pi16(a, imm) + +// Copy a to dst, and insert the 16-bit integer i into dst at the location +// specified by imm8. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=m_pinsrw +#define _m_pinsrw(a, i, imm) _mm_insert_pi16(a, i, imm) + +// Compare packed signed 16-bit integers in a and b, and store packed maximum +// values in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_m_pmaxsw +#define _m_pmaxsw(a, b) _mm_max_pi16(a, b) + +// Compare packed unsigned 8-bit integers in a and b, and store packed maximum +// values in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_m_pmaxub +#define _m_pmaxub(a, b) _mm_max_pu8(a, b) + +// Compare packed signed 16-bit integers in a and b, and store packed minimum +// values in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_m_pminsw +#define _m_pminsw(a, b) _mm_min_pi16(a, b) + +// Compare packed unsigned 8-bit integers in a and b, and store packed minimum +// values in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_m_pminub +#define _m_pminub(a, b) _mm_min_pu8(a, b) + +// Create mask from the most significant bit of each 8-bit element in a, and +// store the result in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_m_pmovmskb +#define _m_pmovmskb(a) _mm_movemask_pi8(a) + +// Multiply the packed unsigned 16-bit integers in a and b, producing +// intermediate 32-bit integers, and store the high 16 bits of the intermediate +// integers in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_m_pmulhuw +#define _m_pmulhuw(a, b) _mm_mulhi_pu16(a, b) + +// Fetch the line of data from memory that contains address p to a location in +// the cache hierarchy specified by the locality hint i. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_prefetch +FORCE_INLINE void _mm_prefetch(char const *p, int i) +{ + (void) i; +#if defined(_MSC_VER) && !defined(__clang__) + switch (i) { + case _MM_HINT_NTA: + __prefetch2(p, 1); + break; + case _MM_HINT_T0: + __prefetch2(p, 0); + break; + case _MM_HINT_T1: + __prefetch2(p, 2); + break; + case _MM_HINT_T2: + __prefetch2(p, 4); + break; + } +#else + switch (i) { + case _MM_HINT_NTA: + __builtin_prefetch(p, 0, 0); + break; + case _MM_HINT_T0: + __builtin_prefetch(p, 0, 3); + break; + case _MM_HINT_T1: + __builtin_prefetch(p, 0, 2); + break; + case _MM_HINT_T2: + __builtin_prefetch(p, 0, 1); + break; + } +#endif +} + +// Compute the absolute differences of packed unsigned 8-bit integers in a and +// b, then horizontally sum each consecutive 8 differences to produce four +// unsigned 16-bit integers, and pack these unsigned 16-bit integers in the low +// 16 bits of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=m_psadbw +#define _m_psadbw(a, b) _mm_sad_pu8(a, b) + +// Shuffle 16-bit integers in a using the control in imm8, and store the results +// in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_m_pshufw +#define _m_pshufw(a, imm) _mm_shuffle_pi16(a, imm) + +// Compute the approximate reciprocal of packed single-precision (32-bit) +// floating-point elements in a, and store the results in dst. The maximum +// relative error for this approximation is less than 1.5*2^-12. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_rcp_ps +FORCE_INLINE __m128 _mm_rcp_ps(__m128 in) +{ + float32x4_t recip = vrecpeq_f32(vreinterpretq_f32_m128(in)); + recip = vmulq_f32(recip, vrecpsq_f32(recip, vreinterpretq_f32_m128(in))); +#if SSE2NEON_PRECISE_DIV + // Additional Netwon-Raphson iteration for accuracy + recip = vmulq_f32(recip, vrecpsq_f32(recip, vreinterpretq_f32_m128(in))); +#endif + return vreinterpretq_m128_f32(recip); +} + +// Compute the approximate reciprocal of the lower single-precision (32-bit) +// floating-point element in a, store the result in the lower element of dst, +// and copy the upper 3 packed elements from a to the upper elements of dst. The +// maximum relative error for this approximation is less than 1.5*2^-12. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_rcp_ss +FORCE_INLINE __m128 _mm_rcp_ss(__m128 a) +{ + return _mm_move_ss(a, _mm_rcp_ps(a)); +} + +// Compute the approximate reciprocal square root of packed single-precision +// (32-bit) floating-point elements in a, and store the results in dst. The +// maximum relative error for this approximation is less than 1.5*2^-12. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_rsqrt_ps +FORCE_INLINE __m128 _mm_rsqrt_ps(__m128 in) +{ + float32x4_t out = vrsqrteq_f32(vreinterpretq_f32_m128(in)); + + // Generate masks for detecting whether input has any 0.0f/-0.0f + // (which becomes positive/negative infinity by IEEE-754 arithmetic rules). + const uint32x4_t pos_inf = vdupq_n_u32(0x7F800000); + const uint32x4_t neg_inf = vdupq_n_u32(0xFF800000); + const uint32x4_t has_pos_zero = + vceqq_u32(pos_inf, vreinterpretq_u32_f32(out)); + const uint32x4_t has_neg_zero = + vceqq_u32(neg_inf, vreinterpretq_u32_f32(out)); + + out = vmulq_f32( + out, vrsqrtsq_f32(vmulq_f32(vreinterpretq_f32_m128(in), out), out)); +#if SSE2NEON_PRECISE_SQRT + // Additional Netwon-Raphson iteration for accuracy + out = vmulq_f32( + out, vrsqrtsq_f32(vmulq_f32(vreinterpretq_f32_m128(in), out), out)); +#endif + + // Set output vector element to infinity/negative-infinity if + // the corresponding input vector element is 0.0f/-0.0f. + out = vbslq_f32(has_pos_zero, (float32x4_t) pos_inf, out); + out = vbslq_f32(has_neg_zero, (float32x4_t) neg_inf, out); + + return vreinterpretq_m128_f32(out); +} + +// Compute the approximate reciprocal square root of the lower single-precision +// (32-bit) floating-point element in a, store the result in the lower element +// of dst, and copy the upper 3 packed elements from a to the upper elements of +// dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_rsqrt_ss +FORCE_INLINE __m128 _mm_rsqrt_ss(__m128 in) +{ + return vsetq_lane_f32(vgetq_lane_f32(_mm_rsqrt_ps(in), 0), in, 0); +} + +// Compute the absolute differences of packed unsigned 8-bit integers in a and +// b, then horizontally sum each consecutive 8 differences to produce four +// unsigned 16-bit integers, and pack these unsigned 16-bit integers in the low +// 16 bits of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sad_pu8 +FORCE_INLINE __m64 _mm_sad_pu8(__m64 a, __m64 b) +{ + uint64x1_t t = vpaddl_u32(vpaddl_u16( + vpaddl_u8(vabd_u8(vreinterpret_u8_m64(a), vreinterpret_u8_m64(b))))); + return vreinterpret_m64_u16( + vset_lane_u16((uint16_t) vget_lane_u64(t, 0), vdup_n_u16(0), 0)); +} + +// Macro: Set the flush zero bits of the MXCSR control and status register to +// the value in unsigned 32-bit integer a. The flush zero may contain any of the +// following flags: _MM_FLUSH_ZERO_ON or _MM_FLUSH_ZERO_OFF +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_MM_SET_FLUSH_ZERO_MODE +FORCE_INLINE void _sse2neon_mm_set_flush_zero_mode(unsigned int flag) +{ + // AArch32 Advanced SIMD arithmetic always uses the Flush-to-zero setting, + // regardless of the value of the FZ bit. + union { + fpcr_bitfield field; +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + uint64_t value; +#else + uint32_t value; +#endif + } r; + +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + r.value = _sse2neon_get_fpcr(); +#else + __asm__ __volatile__("vmrs %0, FPSCR" : "=r"(r.value)); /* read */ +#endif + + r.field.bit24 = (flag & _MM_FLUSH_ZERO_MASK) == _MM_FLUSH_ZERO_ON; + +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + _sse2neon_set_fpcr(r.value); +#else + __asm__ __volatile__("vmsr FPSCR, %0" ::"r"(r)); /* write */ +#endif +} + +// Set packed single-precision (32-bit) floating-point elements in dst with the +// supplied values. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_set_ps +FORCE_INLINE __m128 _mm_set_ps(float w, float z, float y, float x) +{ + float ALIGN_STRUCT(16) data[4] = {x, y, z, w}; + return vreinterpretq_m128_f32(vld1q_f32(data)); +} + +// Broadcast single-precision (32-bit) floating-point value a to all elements of +// dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_set_ps1 +FORCE_INLINE __m128 _mm_set_ps1(float _w) +{ + return vreinterpretq_m128_f32(vdupq_n_f32(_w)); +} + +// Macro: Set the rounding mode bits of the MXCSR control and status register to +// the value in unsigned 32-bit integer a. The rounding mode may contain any of +// the following flags: _MM_ROUND_NEAREST, _MM_ROUND_DOWN, _MM_ROUND_UP, +// _MM_ROUND_TOWARD_ZERO +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_MM_SET_ROUNDING_MODE +FORCE_INLINE void _MM_SET_ROUNDING_MODE(int rounding) +{ + switch (rounding) { + case _MM_ROUND_NEAREST: + rounding = FE_TONEAREST; + break; + case _MM_ROUND_DOWN: + rounding = FE_DOWNWARD; + break; + case _MM_ROUND_UP: + rounding = FE_UPWARD; + break; + case _MM_ROUND_TOWARD_ZERO: + rounding = FE_TOWARDZERO; + break; + default: + // rounding must be _MM_ROUND_NEAREST, _MM_ROUND_DOWN, _MM_ROUND_UP, + // _MM_ROUND_TOWARD_ZERO. all the other invalid values we treat them as + // FE_TOWARDZERO (truncate). + rounding = FE_TOWARDZERO; + } + fesetround(rounding); +} + +// Copy single-precision (32-bit) floating-point element a to the lower element +// of dst, and zero the upper 3 elements. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_set_ss +FORCE_INLINE __m128 _mm_set_ss(float a) +{ + return vreinterpretq_m128_f32(vsetq_lane_f32(a, vdupq_n_f32(0), 0)); +} + +// Broadcast single-precision (32-bit) floating-point value a to all elements of +// dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_set1_ps +FORCE_INLINE __m128 _mm_set1_ps(float _w) +{ + return vreinterpretq_m128_f32(vdupq_n_f32(_w)); +} + +// Set the MXCSR control and status register with the value in unsigned 32-bit +// integer a. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_setcsr +// FIXME: _mm_setcsr() implementation supports changing the rounding mode only. +FORCE_INLINE void _mm_setcsr(unsigned int a) +{ + _MM_SET_ROUNDING_MODE(a); +} + +// Get the unsigned 32-bit value of the MXCSR control and status register. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_getcsr +// FIXME: _mm_getcsr() implementation supports reading the rounding mode only. +FORCE_INLINE unsigned int _mm_getcsr(void) +{ + return _MM_GET_ROUNDING_MODE(); +} + +// Set packed single-precision (32-bit) floating-point elements in dst with the +// supplied values in reverse order. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_setr_ps +FORCE_INLINE __m128 _mm_setr_ps(float w, float z, float y, float x) +{ + float ALIGN_STRUCT(16) data[4] = {w, z, y, x}; + return vreinterpretq_m128_f32(vld1q_f32(data)); +} + +// Return vector of type __m128 with all elements set to zero. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_setzero_ps +FORCE_INLINE __m128 _mm_setzero_ps(void) +{ + return vreinterpretq_m128_f32(vdupq_n_f32(0)); +} + +// Shuffle 16-bit integers in a using the control in imm8, and store the results +// in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_shuffle_pi16 +#ifdef _sse2neon_shuffle +#define _mm_shuffle_pi16(a, imm) \ + vreinterpret_m64_s16(vshuffle_s16( \ + vreinterpret_s16_m64(a), vreinterpret_s16_m64(a), ((imm) & 0x3), \ + (((imm) >> 2) & 0x3), (((imm) >> 4) & 0x3), (((imm) >> 6) & 0x3))) +#else +#define _mm_shuffle_pi16(a, imm) \ + _sse2neon_define1( \ + __m64, a, int16x4_t ret; \ + ret = vmov_n_s16( \ + vget_lane_s16(vreinterpret_s16_m64(_a), (imm) & (0x3))); \ + ret = vset_lane_s16( \ + vget_lane_s16(vreinterpret_s16_m64(_a), ((imm) >> 2) & 0x3), ret, \ + 1); \ + ret = vset_lane_s16( \ + vget_lane_s16(vreinterpret_s16_m64(_a), ((imm) >> 4) & 0x3), ret, \ + 2); \ + ret = vset_lane_s16( \ + vget_lane_s16(vreinterpret_s16_m64(_a), ((imm) >> 6) & 0x3), ret, \ + 3); \ + _sse2neon_return(vreinterpret_m64_s16(ret));) +#endif + +// Perform a serializing operation on all store-to-memory instructions that were +// issued prior to this instruction. Guarantees that every store instruction +// that precedes, in program order, is globally visible before any store +// instruction which follows the fence in program order. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sfence +FORCE_INLINE void _mm_sfence(void) +{ + _sse2neon_smp_mb(); +} + +// Perform a serializing operation on all load-from-memory and store-to-memory +// instructions that were issued prior to this instruction. Guarantees that +// every memory access that precedes, in program order, the memory fence +// instruction is globally visible before any memory instruction which follows +// the fence in program order. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mfence +FORCE_INLINE void _mm_mfence(void) +{ + _sse2neon_smp_mb(); +} + +// Perform a serializing operation on all load-from-memory instructions that +// were issued prior to this instruction. Guarantees that every load instruction +// that precedes, in program order, is globally visible before any load +// instruction which follows the fence in program order. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_lfence +FORCE_INLINE void _mm_lfence(void) +{ + _sse2neon_smp_mb(); +} + +// FORCE_INLINE __m128 _mm_shuffle_ps(__m128 a, __m128 b, __constrange(0,255) +// int imm) +#ifdef _sse2neon_shuffle +#define _mm_shuffle_ps(a, b, imm) \ + __extension__({ \ + float32x4_t _input1 = vreinterpretq_f32_m128(a); \ + float32x4_t _input2 = vreinterpretq_f32_m128(b); \ + float32x4_t _shuf = \ + vshuffleq_s32(_input1, _input2, (imm) & (0x3), ((imm) >> 2) & 0x3, \ + (((imm) >> 4) & 0x3) + 4, (((imm) >> 6) & 0x3) + 4); \ + vreinterpretq_m128_f32(_shuf); \ + }) +#else // generic +#define _mm_shuffle_ps(a, b, imm) \ + _sse2neon_define2( \ + __m128, a, b, __m128 ret; switch (imm) { \ + case _MM_SHUFFLE(1, 0, 3, 2): \ + ret = _mm_shuffle_ps_1032(_a, _b); \ + break; \ + case _MM_SHUFFLE(2, 3, 0, 1): \ + ret = _mm_shuffle_ps_2301(_a, _b); \ + break; \ + case _MM_SHUFFLE(0, 3, 2, 1): \ + ret = _mm_shuffle_ps_0321(_a, _b); \ + break; \ + case _MM_SHUFFLE(2, 1, 0, 3): \ + ret = _mm_shuffle_ps_2103(_a, _b); \ + break; \ + case _MM_SHUFFLE(1, 0, 1, 0): \ + ret = _mm_movelh_ps(_a, _b); \ + break; \ + case _MM_SHUFFLE(1, 0, 0, 1): \ + ret = _mm_shuffle_ps_1001(_a, _b); \ + break; \ + case _MM_SHUFFLE(0, 1, 0, 1): \ + ret = _mm_shuffle_ps_0101(_a, _b); \ + break; \ + case _MM_SHUFFLE(3, 2, 1, 0): \ + ret = _mm_shuffle_ps_3210(_a, _b); \ + break; \ + case _MM_SHUFFLE(0, 0, 1, 1): \ + ret = _mm_shuffle_ps_0011(_a, _b); \ + break; \ + case _MM_SHUFFLE(0, 0, 2, 2): \ + ret = _mm_shuffle_ps_0022(_a, _b); \ + break; \ + case _MM_SHUFFLE(2, 2, 0, 0): \ + ret = _mm_shuffle_ps_2200(_a, _b); \ + break; \ + case _MM_SHUFFLE(3, 2, 0, 2): \ + ret = _mm_shuffle_ps_3202(_a, _b); \ + break; \ + case _MM_SHUFFLE(3, 2, 3, 2): \ + ret = _mm_movehl_ps(_b, _a); \ + break; \ + case _MM_SHUFFLE(1, 1, 3, 3): \ + ret = _mm_shuffle_ps_1133(_a, _b); \ + break; \ + case _MM_SHUFFLE(2, 0, 1, 0): \ + ret = _mm_shuffle_ps_2010(_a, _b); \ + break; \ + case _MM_SHUFFLE(2, 0, 0, 1): \ + ret = _mm_shuffle_ps_2001(_a, _b); \ + break; \ + case _MM_SHUFFLE(2, 0, 3, 2): \ + ret = _mm_shuffle_ps_2032(_a, _b); \ + break; \ + default: \ + ret = _mm_shuffle_ps_default(_a, _b, (imm)); \ + break; \ + } _sse2neon_return(ret);) +#endif + +// Compute the square root of packed single-precision (32-bit) floating-point +// elements in a, and store the results in dst. +// Due to ARMv7-A NEON's lack of a precise square root intrinsic, we implement +// square root by multiplying input in with its reciprocal square root before +// using the Newton-Raphson method to approximate the results. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sqrt_ps +FORCE_INLINE __m128 _mm_sqrt_ps(__m128 in) +{ +#if (defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC)) && \ + !SSE2NEON_PRECISE_SQRT + return vreinterpretq_m128_f32(vsqrtq_f32(vreinterpretq_f32_m128(in))); +#else + float32x4_t recip = vrsqrteq_f32(vreinterpretq_f32_m128(in)); + + // Test for vrsqrteq_f32(0) -> positive infinity case. + // Change to zero, so that s * 1/sqrt(s) result is zero too. + const uint32x4_t pos_inf = vdupq_n_u32(0x7F800000); + const uint32x4_t div_by_zero = + vceqq_u32(pos_inf, vreinterpretq_u32_f32(recip)); + recip = vreinterpretq_f32_u32( + vandq_u32(vmvnq_u32(div_by_zero), vreinterpretq_u32_f32(recip))); + + recip = vmulq_f32( + vrsqrtsq_f32(vmulq_f32(recip, recip), vreinterpretq_f32_m128(in)), + recip); + // Additional Netwon-Raphson iteration for accuracy + recip = vmulq_f32( + vrsqrtsq_f32(vmulq_f32(recip, recip), vreinterpretq_f32_m128(in)), + recip); + + // sqrt(s) = s * 1/sqrt(s) + return vreinterpretq_m128_f32(vmulq_f32(vreinterpretq_f32_m128(in), recip)); +#endif +} + +// Compute the square root of the lower single-precision (32-bit) floating-point +// element in a, store the result in the lower element of dst, and copy the +// upper 3 packed elements from a to the upper elements of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sqrt_ss +FORCE_INLINE __m128 _mm_sqrt_ss(__m128 in) +{ + float32_t value = + vgetq_lane_f32(vreinterpretq_f32_m128(_mm_sqrt_ps(in)), 0); + return vreinterpretq_m128_f32( + vsetq_lane_f32(value, vreinterpretq_f32_m128(in), 0)); +} + +// Store 128-bits (composed of 4 packed single-precision (32-bit) floating-point +// elements) from a into memory. mem_addr must be aligned on a 16-byte boundary +// or a general-protection exception may be generated. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_store_ps +FORCE_INLINE void _mm_store_ps(float *p, __m128 a) +{ + vst1q_f32(p, vreinterpretq_f32_m128(a)); +} + +// Store the lower single-precision (32-bit) floating-point element from a into +// 4 contiguous elements in memory. mem_addr must be aligned on a 16-byte +// boundary or a general-protection exception may be generated. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_store_ps1 +FORCE_INLINE void _mm_store_ps1(float *p, __m128 a) +{ + float32_t a0 = vgetq_lane_f32(vreinterpretq_f32_m128(a), 0); + vst1q_f32(p, vdupq_n_f32(a0)); +} + +// Store the lower single-precision (32-bit) floating-point element from a into +// memory. mem_addr does not need to be aligned on any particular boundary. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_store_ss +FORCE_INLINE void _mm_store_ss(float *p, __m128 a) +{ + vst1q_lane_f32(p, vreinterpretq_f32_m128(a), 0); +} + +// Store the lower single-precision (32-bit) floating-point element from a into +// 4 contiguous elements in memory. mem_addr must be aligned on a 16-byte +// boundary or a general-protection exception may be generated. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_store1_ps +#define _mm_store1_ps _mm_store_ps1 + +// Store the upper 2 single-precision (32-bit) floating-point elements from a +// into memory. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_storeh_pi +FORCE_INLINE void _mm_storeh_pi(__m64 *p, __m128 a) +{ + *p = vreinterpret_m64_f32(vget_high_f32(a)); +} + +// Store the lower 2 single-precision (32-bit) floating-point elements from a +// into memory. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_storel_pi +FORCE_INLINE void _mm_storel_pi(__m64 *p, __m128 a) +{ + *p = vreinterpret_m64_f32(vget_low_f32(a)); +} + +// Store 4 single-precision (32-bit) floating-point elements from a into memory +// in reverse order. mem_addr must be aligned on a 16-byte boundary or a +// general-protection exception may be generated. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_storer_ps +FORCE_INLINE void _mm_storer_ps(float *p, __m128 a) +{ + float32x4_t tmp = vrev64q_f32(vreinterpretq_f32_m128(a)); + float32x4_t rev = vextq_f32(tmp, tmp, 2); + vst1q_f32(p, rev); +} + +// Store 128-bits (composed of 4 packed single-precision (32-bit) floating-point +// elements) from a into memory. mem_addr does not need to be aligned on any +// particular boundary. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_storeu_ps +FORCE_INLINE void _mm_storeu_ps(float *p, __m128 a) +{ + vst1q_f32(p, vreinterpretq_f32_m128(a)); +} + +// Stores 16-bits of integer data a at the address p. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_storeu_si16 +FORCE_INLINE void _mm_storeu_si16(void *p, __m128i a) +{ + vst1q_lane_s16((int16_t *) p, vreinterpretq_s16_m128i(a), 0); +} + +// Stores 64-bits of integer data a at the address p. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_storeu_si64 +FORCE_INLINE void _mm_storeu_si64(void *p, __m128i a) +{ + vst1q_lane_s64((int64_t *) p, vreinterpretq_s64_m128i(a), 0); +} + +// Store 64-bits of integer data from a into memory using a non-temporal memory +// hint. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_stream_pi +FORCE_INLINE void _mm_stream_pi(__m64 *p, __m64 a) +{ + vst1_s64((int64_t *) p, vreinterpret_s64_m64(a)); +} + +// Store 128-bits (composed of 4 packed single-precision (32-bit) floating- +// point elements) from a into memory using a non-temporal memory hint. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_stream_ps +FORCE_INLINE void _mm_stream_ps(float *p, __m128 a) +{ +#if __has_builtin(__builtin_nontemporal_store) + __builtin_nontemporal_store(a, (float32x4_t *) p); +#else + vst1q_f32(p, vreinterpretq_f32_m128(a)); +#endif +} + +// Subtract packed single-precision (32-bit) floating-point elements in b from +// packed single-precision (32-bit) floating-point elements in a, and store the +// results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sub_ps +FORCE_INLINE __m128 _mm_sub_ps(__m128 a, __m128 b) +{ + return vreinterpretq_m128_f32( + vsubq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b))); +} + +// Subtract the lower single-precision (32-bit) floating-point element in b from +// the lower single-precision (32-bit) floating-point element in a, store the +// result in the lower element of dst, and copy the upper 3 packed elements from +// a to the upper elements of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sub_ss +FORCE_INLINE __m128 _mm_sub_ss(__m128 a, __m128 b) +{ + return _mm_move_ss(a, _mm_sub_ps(a, b)); +} + +// Macro: Transpose the 4x4 matrix formed by the 4 rows of single-precision +// (32-bit) floating-point elements in row0, row1, row2, and row3, and store the +// transposed matrix in these vectors (row0 now contains column 0, etc.). +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=MM_TRANSPOSE4_PS +#define _MM_TRANSPOSE4_PS(row0, row1, row2, row3) \ + do { \ + float32x4x2_t ROW01 = vtrnq_f32(row0, row1); \ + float32x4x2_t ROW23 = vtrnq_f32(row2, row3); \ + row0 = vcombine_f32(vget_low_f32(ROW01.val[0]), \ + vget_low_f32(ROW23.val[0])); \ + row1 = vcombine_f32(vget_low_f32(ROW01.val[1]), \ + vget_low_f32(ROW23.val[1])); \ + row2 = vcombine_f32(vget_high_f32(ROW01.val[0]), \ + vget_high_f32(ROW23.val[0])); \ + row3 = vcombine_f32(vget_high_f32(ROW01.val[1]), \ + vget_high_f32(ROW23.val[1])); \ + } while (0) + +// according to the documentation, these intrinsics behave the same as the +// non-'u' versions. We'll just alias them here. +#define _mm_ucomieq_ss _mm_comieq_ss +#define _mm_ucomige_ss _mm_comige_ss +#define _mm_ucomigt_ss _mm_comigt_ss +#define _mm_ucomile_ss _mm_comile_ss +#define _mm_ucomilt_ss _mm_comilt_ss +#define _mm_ucomineq_ss _mm_comineq_ss + +// Return vector of type __m128i with undefined elements. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_undefined_si128 +FORCE_INLINE __m128i _mm_undefined_si128(void) +{ +#if defined(__GNUC__) || defined(__clang__) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wuninitialized" +#endif + __m128i a; +#if defined(_MSC_VER) + a = _mm_setzero_si128(); +#endif + return a; +#if defined(__GNUC__) || defined(__clang__) +#pragma GCC diagnostic pop +#endif +} + +// Return vector of type __m128 with undefined elements. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_undefined_ps +FORCE_INLINE __m128 _mm_undefined_ps(void) +{ +#if defined(__GNUC__) || defined(__clang__) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wuninitialized" +#endif + __m128 a; +#if defined(_MSC_VER) + a = _mm_setzero_ps(); +#endif + return a; +#if defined(__GNUC__) || defined(__clang__) +#pragma GCC diagnostic pop +#endif +} + +// Unpack and interleave single-precision (32-bit) floating-point elements from +// the high half a and b, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_unpackhi_ps +FORCE_INLINE __m128 _mm_unpackhi_ps(__m128 a, __m128 b) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpretq_m128_f32( + vzip2q_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b))); +#else + float32x2_t a1 = vget_high_f32(vreinterpretq_f32_m128(a)); + float32x2_t b1 = vget_high_f32(vreinterpretq_f32_m128(b)); + float32x2x2_t result = vzip_f32(a1, b1); + return vreinterpretq_m128_f32(vcombine_f32(result.val[0], result.val[1])); +#endif +} + +// Unpack and interleave single-precision (32-bit) floating-point elements from +// the low half of a and b, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_unpacklo_ps +FORCE_INLINE __m128 _mm_unpacklo_ps(__m128 a, __m128 b) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpretq_m128_f32( + vzip1q_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b))); +#else + float32x2_t a1 = vget_low_f32(vreinterpretq_f32_m128(a)); + float32x2_t b1 = vget_low_f32(vreinterpretq_f32_m128(b)); + float32x2x2_t result = vzip_f32(a1, b1); + return vreinterpretq_m128_f32(vcombine_f32(result.val[0], result.val[1])); +#endif +} + +// Compute the bitwise XOR of packed single-precision (32-bit) floating-point +// elements in a and b, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_xor_ps +FORCE_INLINE __m128 _mm_xor_ps(__m128 a, __m128 b) +{ + return vreinterpretq_m128_s32( + veorq_s32(vreinterpretq_s32_m128(a), vreinterpretq_s32_m128(b))); +} + +/* SSE2 */ + +// Add packed 16-bit integers in a and b, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_add_epi16 +FORCE_INLINE __m128i _mm_add_epi16(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_s16( + vaddq_s16(vreinterpretq_s16_m128i(a), vreinterpretq_s16_m128i(b))); +} + +// Add packed 32-bit integers in a and b, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_add_epi32 +FORCE_INLINE __m128i _mm_add_epi32(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_s32( + vaddq_s32(vreinterpretq_s32_m128i(a), vreinterpretq_s32_m128i(b))); +} + +// Add packed 64-bit integers in a and b, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_add_epi64 +FORCE_INLINE __m128i _mm_add_epi64(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_s64( + vaddq_s64(vreinterpretq_s64_m128i(a), vreinterpretq_s64_m128i(b))); +} + +// Add packed 8-bit integers in a and b, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_add_epi8 +FORCE_INLINE __m128i _mm_add_epi8(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_s8( + vaddq_s8(vreinterpretq_s8_m128i(a), vreinterpretq_s8_m128i(b))); +} + +// Add packed double-precision (64-bit) floating-point elements in a and b, and +// store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_add_pd +FORCE_INLINE __m128d _mm_add_pd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpretq_m128d_f64( + vaddq_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(b))); +#else + double a0 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 0)); + double a1 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 1)); + double b0 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(b), 0)); + double b1 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(b), 1)); + double c[2]; + c[0] = a0 + b0; + c[1] = a1 + b1; + return vld1q_f32((float32_t *) c); +#endif +} + +// Add the lower double-precision (64-bit) floating-point element in a and b, +// store the result in the lower element of dst, and copy the upper element from +// a to the upper element of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_add_sd +FORCE_INLINE __m128d _mm_add_sd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return _mm_move_sd(a, _mm_add_pd(a, b)); +#else + double a0, a1, b0; + a0 = sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 0)); + a1 = sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 1)); + b0 = sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(b), 0)); + double c[2]; + c[0] = a0 + b0; + c[1] = a1; + return vld1q_f32((float32_t *) c); +#endif +} + +// Add 64-bit integers a and b, and store the result in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_add_si64 +FORCE_INLINE __m64 _mm_add_si64(__m64 a, __m64 b) +{ + return vreinterpret_m64_s64( + vadd_s64(vreinterpret_s64_m64(a), vreinterpret_s64_m64(b))); +} + +// Add packed signed 16-bit integers in a and b using saturation, and store the +// results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_adds_epi16 +FORCE_INLINE __m128i _mm_adds_epi16(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_s16( + vqaddq_s16(vreinterpretq_s16_m128i(a), vreinterpretq_s16_m128i(b))); +} + +// Add packed signed 8-bit integers in a and b using saturation, and store the +// results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_adds_epi8 +FORCE_INLINE __m128i _mm_adds_epi8(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_s8( + vqaddq_s8(vreinterpretq_s8_m128i(a), vreinterpretq_s8_m128i(b))); +} + +// Add packed unsigned 16-bit integers in a and b using saturation, and store +// the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_adds_epu16 +FORCE_INLINE __m128i _mm_adds_epu16(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_u16( + vqaddq_u16(vreinterpretq_u16_m128i(a), vreinterpretq_u16_m128i(b))); +} + +// Add packed unsigned 8-bit integers in a and b using saturation, and store the +// results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_adds_epu8 +FORCE_INLINE __m128i _mm_adds_epu8(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_u8( + vqaddq_u8(vreinterpretq_u8_m128i(a), vreinterpretq_u8_m128i(b))); +} + +// Compute the bitwise AND of packed double-precision (64-bit) floating-point +// elements in a and b, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_and_pd +FORCE_INLINE __m128d _mm_and_pd(__m128d a, __m128d b) +{ + return vreinterpretq_m128d_s64( + vandq_s64(vreinterpretq_s64_m128d(a), vreinterpretq_s64_m128d(b))); +} + +// Compute the bitwise AND of 128 bits (representing integer data) in a and b, +// and store the result in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_and_si128 +FORCE_INLINE __m128i _mm_and_si128(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_s32( + vandq_s32(vreinterpretq_s32_m128i(a), vreinterpretq_s32_m128i(b))); +} + +// Compute the bitwise NOT of packed double-precision (64-bit) floating-point +// elements in a and then AND with b, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_andnot_pd +FORCE_INLINE __m128d _mm_andnot_pd(__m128d a, __m128d b) +{ + // *NOTE* argument swap + return vreinterpretq_m128d_s64( + vbicq_s64(vreinterpretq_s64_m128d(b), vreinterpretq_s64_m128d(a))); +} + +// Compute the bitwise NOT of 128 bits (representing integer data) in a and then +// AND with b, and store the result in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_andnot_si128 +FORCE_INLINE __m128i _mm_andnot_si128(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_s32( + vbicq_s32(vreinterpretq_s32_m128i(b), + vreinterpretq_s32_m128i(a))); // *NOTE* argument swap +} + +// Average packed unsigned 16-bit integers in a and b, and store the results in +// dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_avg_epu16 +FORCE_INLINE __m128i _mm_avg_epu16(__m128i a, __m128i b) +{ + return (__m128i) vrhaddq_u16(vreinterpretq_u16_m128i(a), + vreinterpretq_u16_m128i(b)); +} + +// Average packed unsigned 8-bit integers in a and b, and store the results in +// dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_avg_epu8 +FORCE_INLINE __m128i _mm_avg_epu8(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_u8( + vrhaddq_u8(vreinterpretq_u8_m128i(a), vreinterpretq_u8_m128i(b))); +} + +// Shift a left by imm8 bytes while shifting in zeros, and store the results in +// dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_bslli_si128 +#define _mm_bslli_si128(a, imm) _mm_slli_si128(a, imm) + +// Shift a right by imm8 bytes while shifting in zeros, and store the results in +// dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_bsrli_si128 +#define _mm_bsrli_si128(a, imm) _mm_srli_si128(a, imm) + +// Cast vector of type __m128d to type __m128. This intrinsic is only used for +// compilation and does not generate any instructions, thus it has zero latency. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_castpd_ps +FORCE_INLINE __m128 _mm_castpd_ps(__m128d a) +{ + return vreinterpretq_m128_s64(vreinterpretq_s64_m128d(a)); +} + +// Cast vector of type __m128d to type __m128i. This intrinsic is only used for +// compilation and does not generate any instructions, thus it has zero latency. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_castpd_si128 +FORCE_INLINE __m128i _mm_castpd_si128(__m128d a) +{ + return vreinterpretq_m128i_s64(vreinterpretq_s64_m128d(a)); +} + +// Cast vector of type __m128 to type __m128d. This intrinsic is only used for +// compilation and does not generate any instructions, thus it has zero latency. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_castps_pd +FORCE_INLINE __m128d _mm_castps_pd(__m128 a) +{ + return vreinterpretq_m128d_s32(vreinterpretq_s32_m128(a)); +} + +// Cast vector of type __m128 to type __m128i. This intrinsic is only used for +// compilation and does not generate any instructions, thus it has zero latency. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_castps_si128 +FORCE_INLINE __m128i _mm_castps_si128(__m128 a) +{ + return vreinterpretq_m128i_s32(vreinterpretq_s32_m128(a)); +} + +// Cast vector of type __m128i to type __m128d. This intrinsic is only used for +// compilation and does not generate any instructions, thus it has zero latency. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_castsi128_pd +FORCE_INLINE __m128d _mm_castsi128_pd(__m128i a) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpretq_m128d_f64(vreinterpretq_f64_m128i(a)); +#else + return vreinterpretq_m128d_f32(vreinterpretq_f32_m128i(a)); +#endif +} + +// Cast vector of type __m128i to type __m128. This intrinsic is only used for +// compilation and does not generate any instructions, thus it has zero latency. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_castsi128_ps +FORCE_INLINE __m128 _mm_castsi128_ps(__m128i a) +{ + return vreinterpretq_m128_s32(vreinterpretq_s32_m128i(a)); +} + +// Invalidate and flush the cache line that contains p from all levels of the +// cache hierarchy. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_clflush +#if defined(__APPLE__) +#include +#endif +FORCE_INLINE void _mm_clflush(void const *p) +{ + (void) p; + + /* sys_icache_invalidate is supported since macOS 10.5. + * However, it does not work on non-jailbroken iOS devices, although the + * compilation is successful. + */ +#if defined(__APPLE__) + sys_icache_invalidate((void *) (uintptr_t) p, SSE2NEON_CACHELINE_SIZE); +#elif defined(__GNUC__) || defined(__clang__) + uintptr_t ptr = (uintptr_t) p; + __builtin___clear_cache((char *) ptr, + (char *) ptr + SSE2NEON_CACHELINE_SIZE); +#elif (_MSC_VER) && SSE2NEON_INCLUDE_WINDOWS_H + FlushInstructionCache(GetCurrentProcess(), p, SSE2NEON_CACHELINE_SIZE); +#endif +} + +// Compare packed 16-bit integers in a and b for equality, and store the results +// in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpeq_epi16 +FORCE_INLINE __m128i _mm_cmpeq_epi16(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_u16( + vceqq_s16(vreinterpretq_s16_m128i(a), vreinterpretq_s16_m128i(b))); +} + +// Compare packed 32-bit integers in a and b for equality, and store the results +// in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpeq_epi32 +FORCE_INLINE __m128i _mm_cmpeq_epi32(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_u32( + vceqq_s32(vreinterpretq_s32_m128i(a), vreinterpretq_s32_m128i(b))); +} + +// Compare packed 8-bit integers in a and b for equality, and store the results +// in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpeq_epi8 +FORCE_INLINE __m128i _mm_cmpeq_epi8(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_u8( + vceqq_s8(vreinterpretq_s8_m128i(a), vreinterpretq_s8_m128i(b))); +} + +// Compare packed double-precision (64-bit) floating-point elements in a and b +// for equality, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpeq_pd +FORCE_INLINE __m128d _mm_cmpeq_pd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpretq_m128d_u64( + vceqq_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(b))); +#else + // (a == b) -> (a_lo == b_lo) && (a_hi == b_hi) + uint32x4_t cmp = + vceqq_u32(vreinterpretq_u32_m128d(a), vreinterpretq_u32_m128d(b)); + uint32x4_t swapped = vrev64q_u32(cmp); + return vreinterpretq_m128d_u32(vandq_u32(cmp, swapped)); +#endif +} + +// Compare the lower double-precision (64-bit) floating-point elements in a and +// b for equality, store the result in the lower element of dst, and copy the +// upper element from a to the upper element of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpeq_sd +FORCE_INLINE __m128d _mm_cmpeq_sd(__m128d a, __m128d b) +{ + return _mm_move_sd(a, _mm_cmpeq_pd(a, b)); +} + +// Compare packed double-precision (64-bit) floating-point elements in a and b +// for greater-than-or-equal, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpge_pd +FORCE_INLINE __m128d _mm_cmpge_pd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpretq_m128d_u64( + vcgeq_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(b))); +#else + double a0 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 0)); + double a1 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 1)); + double b0 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(b), 0)); + double b1 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(b), 1)); + uint64_t d[2]; + d[0] = a0 >= b0 ? ~UINT64_C(0) : UINT64_C(0); + d[1] = a1 >= b1 ? ~UINT64_C(0) : UINT64_C(0); + + return vreinterpretq_m128d_u64(vld1q_u64(d)); +#endif +} + +// Compare the lower double-precision (64-bit) floating-point elements in a and +// b for greater-than-or-equal, store the result in the lower element of dst, +// and copy the upper element from a to the upper element of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpge_sd +FORCE_INLINE __m128d _mm_cmpge_sd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return _mm_move_sd(a, _mm_cmpge_pd(a, b)); +#else + // expand "_mm_cmpge_pd()" to reduce unnecessary operations + double a0, b0; + a0 = sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 0)); + uint64_t a1 = vgetq_lane_u64(vreinterpretq_u64_m128d(a), 1); + b0 = sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(b), 0)); + uint64_t d[2]; + d[0] = a0 >= b0 ? ~UINT64_C(0) : UINT64_C(0); + d[1] = a1; + + return vreinterpretq_m128d_u64(vld1q_u64(d)); +#endif +} + +// Compare packed signed 16-bit integers in a and b for greater-than, and store +// the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpgt_epi16 +FORCE_INLINE __m128i _mm_cmpgt_epi16(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_u16( + vcgtq_s16(vreinterpretq_s16_m128i(a), vreinterpretq_s16_m128i(b))); +} + +// Compare packed signed 32-bit integers in a and b for greater-than, and store +// the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpgt_epi32 +FORCE_INLINE __m128i _mm_cmpgt_epi32(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_u32( + vcgtq_s32(vreinterpretq_s32_m128i(a), vreinterpretq_s32_m128i(b))); +} + +// Compare packed signed 8-bit integers in a and b for greater-than, and store +// the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpgt_epi8 +FORCE_INLINE __m128i _mm_cmpgt_epi8(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_u8( + vcgtq_s8(vreinterpretq_s8_m128i(a), vreinterpretq_s8_m128i(b))); +} + +// Compare packed double-precision (64-bit) floating-point elements in a and b +// for greater-than, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpgt_pd +FORCE_INLINE __m128d _mm_cmpgt_pd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpretq_m128d_u64( + vcgtq_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(b))); +#else + double a0 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 0)); + double a1 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 1)); + double b0 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(b), 0)); + double b1 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(b), 1)); + uint64_t d[2]; + d[0] = a0 > b0 ? ~UINT64_C(0) : UINT64_C(0); + d[1] = a1 > b1 ? ~UINT64_C(0) : UINT64_C(0); + + return vreinterpretq_m128d_u64(vld1q_u64(d)); +#endif +} + +// Compare the lower double-precision (64-bit) floating-point elements in a and +// b for greater-than, store the result in the lower element of dst, and copy +// the upper element from a to the upper element of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpgt_sd +FORCE_INLINE __m128d _mm_cmpgt_sd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return _mm_move_sd(a, _mm_cmpgt_pd(a, b)); +#else + // expand "_mm_cmpge_pd()" to reduce unnecessary operations + double a0, b0; + a0 = sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 0)); + uint64_t a1 = vgetq_lane_u64(vreinterpretq_u64_m128d(a), 1); + b0 = sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(b), 0)); + uint64_t d[2]; + d[0] = a0 > b0 ? ~UINT64_C(0) : UINT64_C(0); + d[1] = a1; + + return vreinterpretq_m128d_u64(vld1q_u64(d)); +#endif +} + +// Compare packed double-precision (64-bit) floating-point elements in a and b +// for less-than-or-equal, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmple_pd +FORCE_INLINE __m128d _mm_cmple_pd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpretq_m128d_u64( + vcleq_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(b))); +#else + double a0 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 0)); + double a1 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 1)); + double b0 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(b), 0)); + double b1 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(b), 1)); + uint64_t d[2]; + d[0] = a0 <= b0 ? ~UINT64_C(0) : UINT64_C(0); + d[1] = a1 <= b1 ? ~UINT64_C(0) : UINT64_C(0); + + return vreinterpretq_m128d_u64(vld1q_u64(d)); +#endif +} + +// Compare the lower double-precision (64-bit) floating-point elements in a and +// b for less-than-or-equal, store the result in the lower element of dst, and +// copy the upper element from a to the upper element of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmple_sd +FORCE_INLINE __m128d _mm_cmple_sd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return _mm_move_sd(a, _mm_cmple_pd(a, b)); +#else + // expand "_mm_cmpge_pd()" to reduce unnecessary operations + double a0, b0; + a0 = sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 0)); + uint64_t a1 = vgetq_lane_u64(vreinterpretq_u64_m128d(a), 1); + b0 = sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(b), 0)); + uint64_t d[2]; + d[0] = a0 <= b0 ? ~UINT64_C(0) : UINT64_C(0); + d[1] = a1; + + return vreinterpretq_m128d_u64(vld1q_u64(d)); +#endif +} + +// Compare packed signed 16-bit integers in a and b for less-than, and store the +// results in dst. Note: This intrinsic emits the pcmpgtw instruction with the +// order of the operands switched. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmplt_epi16 +FORCE_INLINE __m128i _mm_cmplt_epi16(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_u16( + vcltq_s16(vreinterpretq_s16_m128i(a), vreinterpretq_s16_m128i(b))); +} + +// Compare packed signed 32-bit integers in a and b for less-than, and store the +// results in dst. Note: This intrinsic emits the pcmpgtd instruction with the +// order of the operands switched. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmplt_epi32 +FORCE_INLINE __m128i _mm_cmplt_epi32(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_u32( + vcltq_s32(vreinterpretq_s32_m128i(a), vreinterpretq_s32_m128i(b))); +} + +// Compare packed signed 8-bit integers in a and b for less-than, and store the +// results in dst. Note: This intrinsic emits the pcmpgtb instruction with the +// order of the operands switched. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmplt_epi8 +FORCE_INLINE __m128i _mm_cmplt_epi8(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_u8( + vcltq_s8(vreinterpretq_s8_m128i(a), vreinterpretq_s8_m128i(b))); +} + +// Compare packed double-precision (64-bit) floating-point elements in a and b +// for less-than, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmplt_pd +FORCE_INLINE __m128d _mm_cmplt_pd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpretq_m128d_u64( + vcltq_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(b))); +#else + double a0 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 0)); + double a1 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 1)); + double b0 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(b), 0)); + double b1 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(b), 1)); + uint64_t d[2]; + d[0] = a0 < b0 ? ~UINT64_C(0) : UINT64_C(0); + d[1] = a1 < b1 ? ~UINT64_C(0) : UINT64_C(0); + + return vreinterpretq_m128d_u64(vld1q_u64(d)); +#endif +} + +// Compare the lower double-precision (64-bit) floating-point elements in a and +// b for less-than, store the result in the lower element of dst, and copy the +// upper element from a to the upper element of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmplt_sd +FORCE_INLINE __m128d _mm_cmplt_sd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return _mm_move_sd(a, _mm_cmplt_pd(a, b)); +#else + double a0, b0; + a0 = sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 0)); + uint64_t a1 = vgetq_lane_u64(vreinterpretq_u64_m128d(a), 1); + b0 = sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(b), 0)); + uint64_t d[2]; + d[0] = a0 < b0 ? ~UINT64_C(0) : UINT64_C(0); + d[1] = a1; + + return vreinterpretq_m128d_u64(vld1q_u64(d)); +#endif +} + +// Compare packed double-precision (64-bit) floating-point elements in a and b +// for not-equal, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpneq_pd +FORCE_INLINE __m128d _mm_cmpneq_pd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpretq_m128d_s32(vmvnq_s32(vreinterpretq_s32_u64( + vceqq_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(b))))); +#else + // (a == b) -> (a_lo == b_lo) && (a_hi == b_hi) + uint32x4_t cmp = + vceqq_u32(vreinterpretq_u32_m128d(a), vreinterpretq_u32_m128d(b)); + uint32x4_t swapped = vrev64q_u32(cmp); + return vreinterpretq_m128d_u32(vmvnq_u32(vandq_u32(cmp, swapped))); +#endif +} + +// Compare the lower double-precision (64-bit) floating-point elements in a and +// b for not-equal, store the result in the lower element of dst, and copy the +// upper element from a to the upper element of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpneq_sd +FORCE_INLINE __m128d _mm_cmpneq_sd(__m128d a, __m128d b) +{ + return _mm_move_sd(a, _mm_cmpneq_pd(a, b)); +} + +// Compare packed double-precision (64-bit) floating-point elements in a and b +// for not-greater-than-or-equal, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpnge_pd +FORCE_INLINE __m128d _mm_cmpnge_pd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpretq_m128d_u64(veorq_u64( + vcgeq_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(b)), + vdupq_n_u64(UINT64_MAX))); +#else + double a0 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 0)); + double a1 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 1)); + double b0 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(b), 0)); + double b1 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(b), 1)); + uint64_t d[2]; + d[0] = !(a0 >= b0) ? ~UINT64_C(0) : UINT64_C(0); + d[1] = !(a1 >= b1) ? ~UINT64_C(0) : UINT64_C(0); + + return vreinterpretq_m128d_u64(vld1q_u64(d)); +#endif +} + +// Compare the lower double-precision (64-bit) floating-point elements in a and +// b for not-greater-than-or-equal, store the result in the lower element of +// dst, and copy the upper element from a to the upper element of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpnge_sd +FORCE_INLINE __m128d _mm_cmpnge_sd(__m128d a, __m128d b) +{ + return _mm_move_sd(a, _mm_cmpnge_pd(a, b)); +} + +// Compare packed double-precision (64-bit) floating-point elements in a and b +// for not-greater-than, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_cmpngt_pd +FORCE_INLINE __m128d _mm_cmpngt_pd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpretq_m128d_u64(veorq_u64( + vcgtq_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(b)), + vdupq_n_u64(UINT64_MAX))); +#else + double a0 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 0)); + double a1 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 1)); + double b0 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(b), 0)); + double b1 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(b), 1)); + uint64_t d[2]; + d[0] = !(a0 > b0) ? ~UINT64_C(0) : UINT64_C(0); + d[1] = !(a1 > b1) ? ~UINT64_C(0) : UINT64_C(0); + + return vreinterpretq_m128d_u64(vld1q_u64(d)); +#endif +} + +// Compare the lower double-precision (64-bit) floating-point elements in a and +// b for not-greater-than, store the result in the lower element of dst, and +// copy the upper element from a to the upper element of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpngt_sd +FORCE_INLINE __m128d _mm_cmpngt_sd(__m128d a, __m128d b) +{ + return _mm_move_sd(a, _mm_cmpngt_pd(a, b)); +} + +// Compare packed double-precision (64-bit) floating-point elements in a and b +// for not-less-than-or-equal, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpnle_pd +FORCE_INLINE __m128d _mm_cmpnle_pd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpretq_m128d_u64(veorq_u64( + vcleq_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(b)), + vdupq_n_u64(UINT64_MAX))); +#else + double a0 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 0)); + double a1 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 1)); + double b0 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(b), 0)); + double b1 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(b), 1)); + uint64_t d[2]; + d[0] = !(a0 <= b0) ? ~UINT64_C(0) : UINT64_C(0); + d[1] = !(a1 <= b1) ? ~UINT64_C(0) : UINT64_C(0); + + return vreinterpretq_m128d_u64(vld1q_u64(d)); +#endif +} + +// Compare the lower double-precision (64-bit) floating-point elements in a and +// b for not-less-than-or-equal, store the result in the lower element of dst, +// and copy the upper element from a to the upper element of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpnle_sd +FORCE_INLINE __m128d _mm_cmpnle_sd(__m128d a, __m128d b) +{ + return _mm_move_sd(a, _mm_cmpnle_pd(a, b)); +} + +// Compare packed double-precision (64-bit) floating-point elements in a and b +// for not-less-than, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpnlt_pd +FORCE_INLINE __m128d _mm_cmpnlt_pd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpretq_m128d_u64(veorq_u64( + vcltq_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(b)), + vdupq_n_u64(UINT64_MAX))); +#else + double a0 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 0)); + double a1 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 1)); + double b0 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(b), 0)); + double b1 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(b), 1)); + uint64_t d[2]; + d[0] = !(a0 < b0) ? ~UINT64_C(0) : UINT64_C(0); + d[1] = !(a1 < b1) ? ~UINT64_C(0) : UINT64_C(0); + + return vreinterpretq_m128d_u64(vld1q_u64(d)); +#endif +} + +// Compare the lower double-precision (64-bit) floating-point elements in a and +// b for not-less-than, store the result in the lower element of dst, and copy +// the upper element from a to the upper element of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpnlt_sd +FORCE_INLINE __m128d _mm_cmpnlt_sd(__m128d a, __m128d b) +{ + return _mm_move_sd(a, _mm_cmpnlt_pd(a, b)); +} + +// Compare packed double-precision (64-bit) floating-point elements in a and b +// to see if neither is NaN, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpord_pd +FORCE_INLINE __m128d _mm_cmpord_pd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + // Excluding NaNs, any two floating point numbers can be compared. + uint64x2_t not_nan_a = + vceqq_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(a)); + uint64x2_t not_nan_b = + vceqq_f64(vreinterpretq_f64_m128d(b), vreinterpretq_f64_m128d(b)); + return vreinterpretq_m128d_u64(vandq_u64(not_nan_a, not_nan_b)); +#else + double a0 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 0)); + double a1 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 1)); + double b0 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(b), 0)); + double b1 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(b), 1)); + uint64_t d[2]; + d[0] = (a0 == a0 && b0 == b0) ? ~UINT64_C(0) : UINT64_C(0); + d[1] = (a1 == a1 && b1 == b1) ? ~UINT64_C(0) : UINT64_C(0); + + return vreinterpretq_m128d_u64(vld1q_u64(d)); +#endif +} + +// Compare the lower double-precision (64-bit) floating-point elements in a and +// b to see if neither is NaN, store the result in the lower element of dst, and +// copy the upper element from a to the upper element of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpord_sd +FORCE_INLINE __m128d _mm_cmpord_sd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return _mm_move_sd(a, _mm_cmpord_pd(a, b)); +#else + double a0, b0; + a0 = sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 0)); + uint64_t a1 = vgetq_lane_u64(vreinterpretq_u64_m128d(a), 1); + b0 = sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(b), 0)); + uint64_t d[2]; + d[0] = (a0 == a0 && b0 == b0) ? ~UINT64_C(0) : UINT64_C(0); + d[1] = a1; + + return vreinterpretq_m128d_u64(vld1q_u64(d)); +#endif +} + +// Compare packed double-precision (64-bit) floating-point elements in a and b +// to see if either is NaN, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpunord_pd +FORCE_INLINE __m128d _mm_cmpunord_pd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + // Two NaNs are not equal in comparison operation. + uint64x2_t not_nan_a = + vceqq_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(a)); + uint64x2_t not_nan_b = + vceqq_f64(vreinterpretq_f64_m128d(b), vreinterpretq_f64_m128d(b)); + return vreinterpretq_m128d_s32( + vmvnq_s32(vreinterpretq_s32_u64(vandq_u64(not_nan_a, not_nan_b)))); +#else + double a0 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 0)); + double a1 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 1)); + double b0 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(b), 0)); + double b1 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(b), 1)); + uint64_t d[2]; + d[0] = (a0 == a0 && b0 == b0) ? UINT64_C(0) : ~UINT64_C(0); + d[1] = (a1 == a1 && b1 == b1) ? UINT64_C(0) : ~UINT64_C(0); + + return vreinterpretq_m128d_u64(vld1q_u64(d)); +#endif +} + +// Compare the lower double-precision (64-bit) floating-point elements in a and +// b to see if either is NaN, store the result in the lower element of dst, and +// copy the upper element from a to the upper element of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpunord_sd +FORCE_INLINE __m128d _mm_cmpunord_sd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return _mm_move_sd(a, _mm_cmpunord_pd(a, b)); +#else + double a0, b0; + a0 = sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 0)); + uint64_t a1 = vgetq_lane_u64(vreinterpretq_u64_m128d(a), 1); + b0 = sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(b), 0)); + uint64_t d[2]; + d[0] = (a0 == a0 && b0 == b0) ? UINT64_C(0) : ~UINT64_C(0); + d[1] = a1; + + return vreinterpretq_m128d_u64(vld1q_u64(d)); +#endif +} + +// Compare the lower double-precision (64-bit) floating-point element in a and b +// for greater-than-or-equal, and return the boolean result (0 or 1). +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_comige_sd +FORCE_INLINE int _mm_comige_sd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vgetq_lane_u64(vcgeq_f64(a, b), 0) & 0x1; +#else + double a0, b0; + a0 = sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 0)); + b0 = sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(b), 0)); + return a0 >= b0; +#endif +} + +// Compare the lower double-precision (64-bit) floating-point element in a and b +// for greater-than, and return the boolean result (0 or 1). +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_comigt_sd +FORCE_INLINE int _mm_comigt_sd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vgetq_lane_u64(vcgtq_f64(a, b), 0) & 0x1; +#else + double a0, b0; + a0 = sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 0)); + b0 = sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(b), 0)); + + return a0 > b0; +#endif +} + +// Compare the lower double-precision (64-bit) floating-point element in a and b +// for less-than-or-equal, and return the boolean result (0 or 1). +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_comile_sd +FORCE_INLINE int _mm_comile_sd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vgetq_lane_u64(vcleq_f64(a, b), 0) & 0x1; +#else + double a0, b0; + a0 = sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 0)); + b0 = sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(b), 0)); + + return a0 <= b0; +#endif +} + +// Compare the lower double-precision (64-bit) floating-point element in a and b +// for less-than, and return the boolean result (0 or 1). +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_comilt_sd +FORCE_INLINE int _mm_comilt_sd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vgetq_lane_u64(vcltq_f64(a, b), 0) & 0x1; +#else + double a0, b0; + a0 = sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 0)); + b0 = sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(b), 0)); + + return a0 < b0; +#endif +} + +// Compare the lower double-precision (64-bit) floating-point element in a and b +// for equality, and return the boolean result (0 or 1). +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_comieq_sd +FORCE_INLINE int _mm_comieq_sd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vgetq_lane_u64(vceqq_f64(a, b), 0) & 0x1; +#else + uint32x4_t a_not_nan = + vceqq_u32(vreinterpretq_u32_m128d(a), vreinterpretq_u32_m128d(a)); + uint32x4_t b_not_nan = + vceqq_u32(vreinterpretq_u32_m128d(b), vreinterpretq_u32_m128d(b)); + uint32x4_t a_and_b_not_nan = vandq_u32(a_not_nan, b_not_nan); + uint32x4_t a_eq_b = + vceqq_u32(vreinterpretq_u32_m128d(a), vreinterpretq_u32_m128d(b)); + uint64x2_t and_results = vandq_u64(vreinterpretq_u64_u32(a_and_b_not_nan), + vreinterpretq_u64_u32(a_eq_b)); + return vgetq_lane_u64(and_results, 0) & 0x1; +#endif +} + +// Compare the lower double-precision (64-bit) floating-point element in a and b +// for not-equal, and return the boolean result (0 or 1). +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_comineq_sd +FORCE_INLINE int _mm_comineq_sd(__m128d a, __m128d b) +{ + return !_mm_comieq_sd(a, b); +} + +// Convert packed signed 32-bit integers in a to packed double-precision +// (64-bit) floating-point elements, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtepi32_pd +FORCE_INLINE __m128d _mm_cvtepi32_pd(__m128i a) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpretq_m128d_f64( + vcvtq_f64_s64(vmovl_s32(vget_low_s32(vreinterpretq_s32_m128i(a))))); +#else + double a0 = (double) vgetq_lane_s32(vreinterpretq_s32_m128i(a), 0); + double a1 = (double) vgetq_lane_s32(vreinterpretq_s32_m128i(a), 1); + return _mm_set_pd(a1, a0); +#endif +} + +// Convert packed signed 32-bit integers in a to packed single-precision +// (32-bit) floating-point elements, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtepi32_ps +FORCE_INLINE __m128 _mm_cvtepi32_ps(__m128i a) +{ + return vreinterpretq_m128_f32(vcvtq_f32_s32(vreinterpretq_s32_m128i(a))); +} + +// Convert packed double-precision (64-bit) floating-point elements in a to +// packed 32-bit integers, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtpd_epi32 +FORCE_INLINE __m128i _mm_cvtpd_epi32(__m128d a) +{ +// vrnd32xq_f64 not supported on clang +#if defined(__ARM_FEATURE_FRINT) && !defined(__clang__) + float64x2_t rounded = vrnd32xq_f64(vreinterpretq_f64_m128d(a)); + int64x2_t integers = vcvtq_s64_f64(rounded); + return vreinterpretq_m128i_s32( + vcombine_s32(vmovn_s64(integers), vdup_n_s32(0))); +#else + __m128d rnd = _mm_round_pd(a, _MM_FROUND_CUR_DIRECTION); + double d0, d1; + d0 = sse2neon_recast_u64_f64( + vgetq_lane_u64(vreinterpretq_u64_m128d(rnd), 0)); + d1 = sse2neon_recast_u64_f64( + vgetq_lane_u64(vreinterpretq_u64_m128d(rnd), 1)); + return _mm_set_epi32(0, 0, (int32_t) d1, (int32_t) d0); +#endif +} + +// Convert packed double-precision (64-bit) floating-point elements in a to +// packed 32-bit integers, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtpd_pi32 +FORCE_INLINE __m64 _mm_cvtpd_pi32(__m128d a) +{ + __m128d rnd = _mm_round_pd(a, _MM_FROUND_CUR_DIRECTION); + double d0, d1; + d0 = sse2neon_recast_u64_f64( + vgetq_lane_u64(vreinterpretq_u64_m128d(rnd), 0)); + d1 = sse2neon_recast_u64_f64( + vgetq_lane_u64(vreinterpretq_u64_m128d(rnd), 1)); + int32_t ALIGN_STRUCT(16) data[2] = {(int32_t) d0, (int32_t) d1}; + return vreinterpret_m64_s32(vld1_s32(data)); +} + +// Convert packed double-precision (64-bit) floating-point elements in a to +// packed single-precision (32-bit) floating-point elements, and store the +// results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtpd_ps +FORCE_INLINE __m128 _mm_cvtpd_ps(__m128d a) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + float32x2_t tmp = vcvt_f32_f64(vreinterpretq_f64_m128d(a)); + return vreinterpretq_m128_f32(vcombine_f32(tmp, vdup_n_f32(0))); +#else + double a0, a1; + a0 = sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 0)); + a1 = sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 1)); + return _mm_set_ps(0, 0, (float) a1, (float) a0); +#endif +} + +// Convert packed signed 32-bit integers in a to packed double-precision +// (64-bit) floating-point elements, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtpi32_pd +FORCE_INLINE __m128d _mm_cvtpi32_pd(__m64 a) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpretq_m128d_f64( + vcvtq_f64_s64(vmovl_s32(vreinterpret_s32_m64(a)))); +#else + double a0 = (double) vget_lane_s32(vreinterpret_s32_m64(a), 0); + double a1 = (double) vget_lane_s32(vreinterpret_s32_m64(a), 1); + return _mm_set_pd(a1, a0); +#endif +} + +// Convert packed single-precision (32-bit) floating-point elements in a to +// packed 32-bit integers, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtps_epi32 +// *NOTE*. The default rounding mode on SSE is 'round to even', which ARMv7-A +// does not support! It is supported on ARMv8-A however. +FORCE_INLINE __m128i _mm_cvtps_epi32(__m128 a) +{ +#if defined(__ARM_FEATURE_FRINT) + return vreinterpretq_m128i_s32(vcvtq_s32_f32(vrnd32xq_f32(a))); +#elif (defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC)) || \ + defined(__ARM_FEATURE_DIRECTED_ROUNDING) + switch (_MM_GET_ROUNDING_MODE()) { + case _MM_ROUND_NEAREST: + return vreinterpretq_m128i_s32(vcvtnq_s32_f32(a)); + case _MM_ROUND_DOWN: + return vreinterpretq_m128i_s32(vcvtmq_s32_f32(a)); + case _MM_ROUND_UP: + return vreinterpretq_m128i_s32(vcvtpq_s32_f32(a)); + default: // _MM_ROUND_TOWARD_ZERO + return vreinterpretq_m128i_s32(vcvtq_s32_f32(a)); + } +#else + float *f = (float *) &a; + switch (_MM_GET_ROUNDING_MODE()) { + case _MM_ROUND_NEAREST: { + uint32x4_t signmask = vdupq_n_u32(0x80000000); + float32x4_t half = vbslq_f32(signmask, vreinterpretq_f32_m128(a), + vdupq_n_f32(0.5f)); /* +/- 0.5 */ + int32x4_t r_normal = vcvtq_s32_f32(vaddq_f32( + vreinterpretq_f32_m128(a), half)); /* round to integer: [a + 0.5]*/ + int32x4_t r_trunc = vcvtq_s32_f32( + vreinterpretq_f32_m128(a)); /* truncate to integer: [a] */ + int32x4_t plusone = vreinterpretq_s32_u32(vshrq_n_u32( + vreinterpretq_u32_s32(vnegq_s32(r_trunc)), 31)); /* 1 or 0 */ + int32x4_t r_even = vbicq_s32(vaddq_s32(r_trunc, plusone), + vdupq_n_s32(1)); /* ([a] + {0,1}) & ~1 */ + float32x4_t delta = vsubq_f32( + vreinterpretq_f32_m128(a), + vcvtq_f32_s32(r_trunc)); /* compute delta: delta = (a - [a]) */ + uint32x4_t is_delta_half = + vceqq_f32(delta, half); /* delta == +/- 0.5 */ + return vreinterpretq_m128i_s32( + vbslq_s32(is_delta_half, r_even, r_normal)); + } + case _MM_ROUND_DOWN: + return _mm_set_epi32(floorf(f[3]), floorf(f[2]), floorf(f[1]), + floorf(f[0])); + case _MM_ROUND_UP: + return _mm_set_epi32(ceilf(f[3]), ceilf(f[2]), ceilf(f[1]), + ceilf(f[0])); + default: // _MM_ROUND_TOWARD_ZERO + return _mm_set_epi32((int32_t) f[3], (int32_t) f[2], (int32_t) f[1], + (int32_t) f[0]); + } +#endif +} + +// Convert packed single-precision (32-bit) floating-point elements in a to +// packed double-precision (64-bit) floating-point elements, and store the +// results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtps_pd +FORCE_INLINE __m128d _mm_cvtps_pd(__m128 a) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpretq_m128d_f64( + vcvt_f64_f32(vget_low_f32(vreinterpretq_f32_m128(a)))); +#else + double a0 = (double) vgetq_lane_f32(vreinterpretq_f32_m128(a), 0); + double a1 = (double) vgetq_lane_f32(vreinterpretq_f32_m128(a), 1); + return _mm_set_pd(a1, a0); +#endif +} + +// Copy the lower double-precision (64-bit) floating-point element of a to dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtsd_f64 +FORCE_INLINE double _mm_cvtsd_f64(__m128d a) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return (double) vgetq_lane_f64(vreinterpretq_f64_m128d(a), 0); +#else + double _a = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 0)); + return _a; +#endif +} + +// Convert the lower double-precision (64-bit) floating-point element in a to a +// 32-bit integer, and store the result in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtsd_si32 +FORCE_INLINE int32_t _mm_cvtsd_si32(__m128d a) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return (int32_t) vgetq_lane_f64(vrndiq_f64(vreinterpretq_f64_m128d(a)), 0); +#else + __m128d rnd = _mm_round_pd(a, _MM_FROUND_CUR_DIRECTION); + double ret = sse2neon_recast_u64_f64( + vgetq_lane_u64(vreinterpretq_u64_m128d(rnd), 0)); + return (int32_t) ret; +#endif +} + +// Convert the lower double-precision (64-bit) floating-point element in a to a +// 64-bit integer, and store the result in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtsd_si64 +FORCE_INLINE int64_t _mm_cvtsd_si64(__m128d a) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return (int64_t) vgetq_lane_f64(vrndiq_f64(vreinterpretq_f64_m128d(a)), 0); +#else + __m128d rnd = _mm_round_pd(a, _MM_FROUND_CUR_DIRECTION); + double ret = sse2neon_recast_u64_f64( + vgetq_lane_u64(vreinterpretq_u64_m128d(rnd), 0)); + return (int64_t) ret; +#endif +} + +// Convert the lower double-precision (64-bit) floating-point element in a to a +// 64-bit integer, and store the result in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtsd_si64x +#define _mm_cvtsd_si64x _mm_cvtsd_si64 + +// Convert the lower double-precision (64-bit) floating-point element in b to a +// single-precision (32-bit) floating-point element, store the result in the +// lower element of dst, and copy the upper 3 packed elements from a to the +// upper elements of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtsd_ss +FORCE_INLINE __m128 _mm_cvtsd_ss(__m128 a, __m128d b) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpretq_m128_f32(vsetq_lane_f32( + vget_lane_f32(vcvt_f32_f64(vreinterpretq_f64_m128d(b)), 0), + vreinterpretq_f32_m128(a), 0)); +#else + double b0 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(b), 0)); + return vreinterpretq_m128_f32( + vsetq_lane_f32((float) b0, vreinterpretq_f32_m128(a), 0)); +#endif +} + +// Copy the lower 32-bit integer in a to dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtsi128_si32 +FORCE_INLINE int _mm_cvtsi128_si32(__m128i a) +{ + return vgetq_lane_s32(vreinterpretq_s32_m128i(a), 0); +} + +// Copy the lower 64-bit integer in a to dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtsi128_si64 +FORCE_INLINE int64_t _mm_cvtsi128_si64(__m128i a) +{ + return vgetq_lane_s64(vreinterpretq_s64_m128i(a), 0); +} + +// Copy the lower 64-bit integer in a to dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtsi128_si64x +#define _mm_cvtsi128_si64x(a) _mm_cvtsi128_si64(a) + +// Convert the signed 32-bit integer b to a double-precision (64-bit) +// floating-point element, store the result in the lower element of dst, and +// copy the upper element from a to the upper element of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtsi32_sd +FORCE_INLINE __m128d _mm_cvtsi32_sd(__m128d a, int32_t b) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpretq_m128d_f64( + vsetq_lane_f64((double) b, vreinterpretq_f64_m128d(a), 0)); +#else + int64_t _b = sse2neon_recast_f64_s64((double) b); + return vreinterpretq_m128d_s64( + vsetq_lane_s64(_b, vreinterpretq_s64_m128d(a), 0)); +#endif +} + +// Copy the lower 64-bit integer in a to dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtsi128_si64x +#define _mm_cvtsi128_si64x(a) _mm_cvtsi128_si64(a) + +// Copy 32-bit integer a to the lower elements of dst, and zero the upper +// elements of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtsi32_si128 +FORCE_INLINE __m128i _mm_cvtsi32_si128(int a) +{ + return vreinterpretq_m128i_s32(vsetq_lane_s32(a, vdupq_n_s32(0), 0)); +} + +// Convert the signed 64-bit integer b to a double-precision (64-bit) +// floating-point element, store the result in the lower element of dst, and +// copy the upper element from a to the upper element of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtsi64_sd +FORCE_INLINE __m128d _mm_cvtsi64_sd(__m128d a, int64_t b) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpretq_m128d_f64( + vsetq_lane_f64((double) b, vreinterpretq_f64_m128d(a), 0)); +#else + int64_t _b = sse2neon_recast_f64_s64((double) b); + return vreinterpretq_m128d_s64( + vsetq_lane_s64(_b, vreinterpretq_s64_m128d(a), 0)); +#endif +} + +// Copy 64-bit integer a to the lower element of dst, and zero the upper +// element. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtsi64_si128 +FORCE_INLINE __m128i _mm_cvtsi64_si128(int64_t a) +{ + return vreinterpretq_m128i_s64(vsetq_lane_s64(a, vdupq_n_s64(0), 0)); +} + +// Copy 64-bit integer a to the lower element of dst, and zero the upper +// element. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtsi64x_si128 +#define _mm_cvtsi64x_si128(a) _mm_cvtsi64_si128(a) + +// Convert the signed 64-bit integer b to a double-precision (64-bit) +// floating-point element, store the result in the lower element of dst, and +// copy the upper element from a to the upper element of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtsi64x_sd +#define _mm_cvtsi64x_sd(a, b) _mm_cvtsi64_sd(a, b) + +// Convert the lower single-precision (32-bit) floating-point element in b to a +// double-precision (64-bit) floating-point element, store the result in the +// lower element of dst, and copy the upper element from a to the upper element +// of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtss_sd +FORCE_INLINE __m128d _mm_cvtss_sd(__m128d a, __m128 b) +{ + double d = (double) vgetq_lane_f32(vreinterpretq_f32_m128(b), 0); +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpretq_m128d_f64( + vsetq_lane_f64(d, vreinterpretq_f64_m128d(a), 0)); +#else + return vreinterpretq_m128d_s64(vsetq_lane_s64( + sse2neon_recast_f64_s64(d), vreinterpretq_s64_m128d(a), 0)); +#endif +} + +// Convert packed double-precision (64-bit) floating-point elements in a to +// packed 32-bit integers with truncation, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvttpd_epi32 +FORCE_INLINE __m128i _mm_cvttpd_epi32(__m128d a) +{ + double a0, a1; + a0 = sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 0)); + a1 = sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 1)); + return _mm_set_epi32(0, 0, (int32_t) a1, (int32_t) a0); +} + +// Convert packed double-precision (64-bit) floating-point elements in a to +// packed 32-bit integers with truncation, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvttpd_pi32 +FORCE_INLINE __m64 _mm_cvttpd_pi32(__m128d a) +{ + double a0, a1; + a0 = sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 0)); + a1 = sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 1)); + int32_t ALIGN_STRUCT(16) data[2] = {(int32_t) a0, (int32_t) a1}; + return vreinterpret_m64_s32(vld1_s32(data)); +} + +// Convert packed single-precision (32-bit) floating-point elements in a to +// packed 32-bit integers with truncation, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvttps_epi32 +FORCE_INLINE __m128i _mm_cvttps_epi32(__m128 a) +{ + return vreinterpretq_m128i_s32(vcvtq_s32_f32(vreinterpretq_f32_m128(a))); +} + +// Convert the lower double-precision (64-bit) floating-point element in a to a +// 32-bit integer with truncation, and store the result in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvttsd_si32 +FORCE_INLINE int32_t _mm_cvttsd_si32(__m128d a) +{ + double _a = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 0)); + return (int32_t) _a; +} + +// Convert the lower double-precision (64-bit) floating-point element in a to a +// 64-bit integer with truncation, and store the result in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvttsd_si64 +FORCE_INLINE int64_t _mm_cvttsd_si64(__m128d a) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vgetq_lane_s64(vcvtq_s64_f64(vreinterpretq_f64_m128d(a)), 0); +#else + double _a = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 0)); + return (int64_t) _a; +#endif +} + +// Convert the lower double-precision (64-bit) floating-point element in a to a +// 64-bit integer with truncation, and store the result in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvttsd_si64x +#define _mm_cvttsd_si64x(a) _mm_cvttsd_si64(a) + +// Divide packed double-precision (64-bit) floating-point elements in a by +// packed elements in b, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_div_pd +FORCE_INLINE __m128d _mm_div_pd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpretq_m128d_f64( + vdivq_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(b))); +#else + double a0 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 0)); + double a1 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 1)); + double b0 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(b), 0)); + double b1 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(b), 1)); + double c[2]; + c[0] = a0 / b0; + c[1] = a1 / b1; + return vld1q_f32((float32_t *) c); +#endif +} + +// Divide the lower double-precision (64-bit) floating-point element in a by the +// lower double-precision (64-bit) floating-point element in b, store the result +// in the lower element of dst, and copy the upper element from a to the upper +// element of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_div_sd +FORCE_INLINE __m128d _mm_div_sd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + float64x2_t tmp = + vdivq_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(b)); + return vreinterpretq_m128d_f64( + vsetq_lane_f64(vgetq_lane_f64(vreinterpretq_f64_m128d(a), 1), tmp, 1)); +#else + return _mm_move_sd(a, _mm_div_pd(a, b)); +#endif +} + +// Extract a 16-bit integer from a, selected with imm8, and store the result in +// the lower element of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_extract_epi16 +// FORCE_INLINE int _mm_extract_epi16(__m128i a, __constrange(0,8) int imm) +#define _mm_extract_epi16(a, imm) \ + vgetq_lane_u16(vreinterpretq_u16_m128i(a), (imm)) + +// Copy a to dst, and insert the 16-bit integer i into dst at the location +// specified by imm8. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_insert_epi16 +// FORCE_INLINE __m128i _mm_insert_epi16(__m128i a, int b, +// __constrange(0,8) int imm) +#define _mm_insert_epi16(a, b, imm) \ + vreinterpretq_m128i_s16( \ + vsetq_lane_s16((b), vreinterpretq_s16_m128i(a), (imm))) + +// Load 128-bits (composed of 2 packed double-precision (64-bit) floating-point +// elements) from memory into dst. mem_addr must be aligned on a 16-byte +// boundary or a general-protection exception may be generated. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_load_pd +FORCE_INLINE __m128d _mm_load_pd(const double *p) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpretq_m128d_f64(vld1q_f64(p)); +#else + const float *fp = (const float *) p; + float ALIGN_STRUCT(16) data[4] = {fp[0], fp[1], fp[2], fp[3]}; + return vreinterpretq_m128d_f32(vld1q_f32(data)); +#endif +} + +// Load a double-precision (64-bit) floating-point element from memory into both +// elements of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_load_pd1 +#define _mm_load_pd1 _mm_load1_pd + +// Load a double-precision (64-bit) floating-point element from memory into the +// lower of dst, and zero the upper element. mem_addr does not need to be +// aligned on any particular boundary. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_load_sd +FORCE_INLINE __m128d _mm_load_sd(const double *p) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpretq_m128d_f64(vsetq_lane_f64(*p, vdupq_n_f64(0), 0)); +#else + const float *fp = (const float *) p; + float ALIGN_STRUCT(16) data[4] = {fp[0], fp[1], 0, 0}; + return vreinterpretq_m128d_f32(vld1q_f32(data)); +#endif +} + +// Load 128-bits of integer data from memory into dst. mem_addr must be aligned +// on a 16-byte boundary or a general-protection exception may be generated. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_load_si128 +FORCE_INLINE __m128i _mm_load_si128(const __m128i *p) +{ + return vreinterpretq_m128i_s32(vld1q_s32((const int32_t *) p)); +} + +// Load a double-precision (64-bit) floating-point element from memory into both +// elements of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_load1_pd +FORCE_INLINE __m128d _mm_load1_pd(const double *p) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpretq_m128d_f64(vld1q_dup_f64(p)); +#else + return vreinterpretq_m128d_s64(vdupq_n_s64(*(const int64_t *) p)); +#endif +} + +// Load a double-precision (64-bit) floating-point element from memory into the +// upper element of dst, and copy the lower element from a to dst. mem_addr does +// not need to be aligned on any particular boundary. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_loadh_pd +FORCE_INLINE __m128d _mm_loadh_pd(__m128d a, const double *p) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpretq_m128d_f64( + vcombine_f64(vget_low_f64(vreinterpretq_f64_m128d(a)), vld1_f64(p))); +#else + return vreinterpretq_m128d_f32(vcombine_f32( + vget_low_f32(vreinterpretq_f32_m128d(a)), vld1_f32((const float *) p))); +#endif +} + +// Load 64-bit integer from memory into the first element of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_loadl_epi64 +FORCE_INLINE __m128i _mm_loadl_epi64(__m128i const *p) +{ + /* Load the lower 64 bits of the value pointed to by p into the + * lower 64 bits of the result, zeroing the upper 64 bits of the result. + */ + return vreinterpretq_m128i_s32( + vcombine_s32(vld1_s32((int32_t const *) p), vcreate_s32(0))); +} + +// Load a double-precision (64-bit) floating-point element from memory into the +// lower element of dst, and copy the upper element from a to dst. mem_addr does +// not need to be aligned on any particular boundary. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_loadl_pd +FORCE_INLINE __m128d _mm_loadl_pd(__m128d a, const double *p) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpretq_m128d_f64( + vcombine_f64(vld1_f64(p), vget_high_f64(vreinterpretq_f64_m128d(a)))); +#else + return vreinterpretq_m128d_f32( + vcombine_f32(vld1_f32((const float *) p), + vget_high_f32(vreinterpretq_f32_m128d(a)))); +#endif +} + +// Load 2 double-precision (64-bit) floating-point elements from memory into dst +// in reverse order. mem_addr must be aligned on a 16-byte boundary or a +// general-protection exception may be generated. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_loadr_pd +FORCE_INLINE __m128d _mm_loadr_pd(const double *p) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + float64x2_t v = vld1q_f64(p); + return vreinterpretq_m128d_f64(vextq_f64(v, v, 1)); +#else + int64x2_t v = vld1q_s64((const int64_t *) p); + return vreinterpretq_m128d_s64(vextq_s64(v, v, 1)); +#endif +} + +// Loads two double-precision from unaligned memory, floating-point values. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_loadu_pd +FORCE_INLINE __m128d _mm_loadu_pd(const double *p) +{ + return _mm_load_pd(p); +} + +// Load 128-bits of integer data from memory into dst. mem_addr does not need to +// be aligned on any particular boundary. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_loadu_si128 +FORCE_INLINE __m128i _mm_loadu_si128(const __m128i *p) +{ + return vreinterpretq_m128i_s32(vld1q_s32((const unaligned_int32_t *) p)); +} + +// Load unaligned 32-bit integer from memory into the first element of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_loadu_si32 +FORCE_INLINE __m128i _mm_loadu_si32(const void *p) +{ + return vreinterpretq_m128i_s32( + vsetq_lane_s32(*(const unaligned_int32_t *) p, vdupq_n_s32(0), 0)); +} + +// Multiply packed signed 16-bit integers in a and b, producing intermediate +// signed 32-bit integers. Horizontally add adjacent pairs of intermediate +// 32-bit integers, and pack the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_madd_epi16 +FORCE_INLINE __m128i _mm_madd_epi16(__m128i a, __m128i b) +{ + int32x4_t low = vmull_s16(vget_low_s16(vreinterpretq_s16_m128i(a)), + vget_low_s16(vreinterpretq_s16_m128i(b))); +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + int32x4_t high = + vmull_high_s16(vreinterpretq_s16_m128i(a), vreinterpretq_s16_m128i(b)); + + return vreinterpretq_m128i_s32(vpaddq_s32(low, high)); +#else + int32x4_t high = vmull_s16(vget_high_s16(vreinterpretq_s16_m128i(a)), + vget_high_s16(vreinterpretq_s16_m128i(b))); + + int32x2_t low_sum = vpadd_s32(vget_low_s32(low), vget_high_s32(low)); + int32x2_t high_sum = vpadd_s32(vget_low_s32(high), vget_high_s32(high)); + + return vreinterpretq_m128i_s32(vcombine_s32(low_sum, high_sum)); +#endif +} + +// Conditionally store 8-bit integer elements from a into memory using mask +// (elements are not stored when the highest bit is not set in the corresponding +// element) and a non-temporal memory hint. mem_addr does not need to be aligned +// on any particular boundary. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskmoveu_si128 +FORCE_INLINE void _mm_maskmoveu_si128(__m128i a, __m128i mask, char *mem_addr) +{ + int8x16_t shr_mask = vshrq_n_s8(vreinterpretq_s8_m128i(mask), 7); + __m128 b = _mm_load_ps((const float *) mem_addr); + int8x16_t masked = + vbslq_s8(vreinterpretq_u8_s8(shr_mask), vreinterpretq_s8_m128i(a), + vreinterpretq_s8_m128(b)); + vst1q_s8((int8_t *) mem_addr, masked); +} + +// Compare packed signed 16-bit integers in a and b, and store packed maximum +// values in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_max_epi16 +FORCE_INLINE __m128i _mm_max_epi16(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_s16( + vmaxq_s16(vreinterpretq_s16_m128i(a), vreinterpretq_s16_m128i(b))); +} + +// Compare packed unsigned 8-bit integers in a and b, and store packed maximum +// values in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_max_epu8 +FORCE_INLINE __m128i _mm_max_epu8(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_u8( + vmaxq_u8(vreinterpretq_u8_m128i(a), vreinterpretq_u8_m128i(b))); +} + +// Compare packed double-precision (64-bit) floating-point elements in a and b, +// and store packed maximum values in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_max_pd +FORCE_INLINE __m128d _mm_max_pd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) +#if SSE2NEON_PRECISE_MINMAX + float64x2_t _a = vreinterpretq_f64_m128d(a); + float64x2_t _b = vreinterpretq_f64_m128d(b); + return vreinterpretq_m128d_f64(vbslq_f64(vcgtq_f64(_a, _b), _a, _b)); +#else + return vreinterpretq_m128d_f64( + vmaxq_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(b))); +#endif +#else + double a0 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 0)); + double a1 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 1)); + double b0 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(b), 0)); + double b1 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(b), 1)); + int64_t d[2]; + d[0] = a0 > b0 ? sse2neon_recast_f64_s64(a0) : sse2neon_recast_f64_s64(b0); + d[1] = a1 > b1 ? sse2neon_recast_f64_s64(a1) : sse2neon_recast_f64_s64(b1); + + return vreinterpretq_m128d_s64(vld1q_s64(d)); +#endif +} + +// Compare the lower double-precision (64-bit) floating-point elements in a and +// b, store the maximum value in the lower element of dst, and copy the upper +// element from a to the upper element of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_max_sd +FORCE_INLINE __m128d _mm_max_sd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return _mm_move_sd(a, _mm_max_pd(a, b)); +#else + double a0, a1, b0; + a0 = sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 0)); + a1 = sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 1)); + b0 = sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(b), 0)); + double c[2] = {a0 > b0 ? a0 : b0, a1}; + return vreinterpretq_m128d_f32(vld1q_f32((float32_t *) c)); +#endif +} + +// Compare packed signed 16-bit integers in a and b, and store packed minimum +// values in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_min_epi16 +FORCE_INLINE __m128i _mm_min_epi16(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_s16( + vminq_s16(vreinterpretq_s16_m128i(a), vreinterpretq_s16_m128i(b))); +} + +// Compare packed unsigned 8-bit integers in a and b, and store packed minimum +// values in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_min_epu8 +FORCE_INLINE __m128i _mm_min_epu8(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_u8( + vminq_u8(vreinterpretq_u8_m128i(a), vreinterpretq_u8_m128i(b))); +} + +// Compare packed double-precision (64-bit) floating-point elements in a and b, +// and store packed minimum values in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_min_pd +FORCE_INLINE __m128d _mm_min_pd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) +#if SSE2NEON_PRECISE_MINMAX + float64x2_t _a = vreinterpretq_f64_m128d(a); + float64x2_t _b = vreinterpretq_f64_m128d(b); + return vreinterpretq_m128d_f64(vbslq_f64(vcltq_f64(_a, _b), _a, _b)); +#else + return vreinterpretq_m128d_f64( + vminq_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(b))); +#endif +#else + double a0 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 0)); + double a1 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 1)); + double b0 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(b), 0)); + double b1 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(b), 1)); + int64_t d[2]; + d[0] = a0 < b0 ? sse2neon_recast_f64_s64(a0) : sse2neon_recast_f64_s64(b0); + d[1] = a1 < b1 ? sse2neon_recast_f64_s64(a1) : sse2neon_recast_f64_s64(b1); + return vreinterpretq_m128d_s64(vld1q_s64(d)); +#endif +} + +// Compare the lower double-precision (64-bit) floating-point elements in a and +// b, store the minimum value in the lower element of dst, and copy the upper +// element from a to the upper element of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_min_sd +FORCE_INLINE __m128d _mm_min_sd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return _mm_move_sd(a, _mm_min_pd(a, b)); +#else + double a0, a1, b0; + a0 = sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 0)); + a1 = sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 1)); + b0 = sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(b), 0)); + double c[2] = {a0 < b0 ? a0 : b0, a1}; + return vreinterpretq_m128d_f32(vld1q_f32((float32_t *) c)); +#endif +} + +// Copy the lower 64-bit integer in a to the lower element of dst, and zero the +// upper element. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_move_epi64 +FORCE_INLINE __m128i _mm_move_epi64(__m128i a) +{ + return vreinterpretq_m128i_s64( + vsetq_lane_s64(0, vreinterpretq_s64_m128i(a), 1)); +} + +// Move the lower double-precision (64-bit) floating-point element from b to the +// lower element of dst, and copy the upper element from a to the upper element +// of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_move_sd +FORCE_INLINE __m128d _mm_move_sd(__m128d a, __m128d b) +{ + return vreinterpretq_m128d_f32( + vcombine_f32(vget_low_f32(vreinterpretq_f32_m128d(b)), + vget_high_f32(vreinterpretq_f32_m128d(a)))); +} + +// Create mask from the most significant bit of each 8-bit element in a, and +// store the result in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_movemask_epi8 +FORCE_INLINE int _mm_movemask_epi8(__m128i a) +{ + // Use increasingly wide shifts+adds to collect the sign bits + // together. + // Since the widening shifts would be rather confusing to follow in little + // endian, everything will be illustrated in big endian order instead. This + // has a different result - the bits would actually be reversed on a big + // endian machine. + + // Starting input (only half the elements are shown): + // 89 ff 1d c0 00 10 99 33 + uint8x16_t input = vreinterpretq_u8_m128i(a); + + // Shift out everything but the sign bits with an unsigned shift right. + // + // Bytes of the vector:: + // 89 ff 1d c0 00 10 99 33 + // \ \ \ \ \ \ \ \ high_bits = (uint16x4_t)(input >> 7) + // | | | | | | | | + // 01 01 00 01 00 00 01 00 + // + // Bits of first important lane(s): + // 10001001 (89) + // \______ + // | + // 00000001 (01) + uint16x8_t high_bits = vreinterpretq_u16_u8(vshrq_n_u8(input, 7)); + + // Merge the even lanes together with a 16-bit unsigned shift right + add. + // 'xx' represents garbage data which will be ignored in the final result. + // In the important bytes, the add functions like a binary OR. + // + // 01 01 00 01 00 00 01 00 + // \_ | \_ | \_ | \_ | paired16 = (uint32x4_t)(input + (input >> 7)) + // \| \| \| \| + // xx 03 xx 01 xx 00 xx 02 + // + // 00000001 00000001 (01 01) + // \_______ | + // \| + // xxxxxxxx xxxxxx11 (xx 03) + uint32x4_t paired16 = + vreinterpretq_u32_u16(vsraq_n_u16(high_bits, high_bits, 7)); + + // Repeat with a wider 32-bit shift + add. + // xx 03 xx 01 xx 00 xx 02 + // \____ | \____ | paired32 = (uint64x1_t)(paired16 + (paired16 >> + // 14)) + // \| \| + // xx xx xx 0d xx xx xx 02 + // + // 00000011 00000001 (03 01) + // \\_____ || + // '----.\|| + // xxxxxxxx xxxx1101 (xx 0d) + uint64x2_t paired32 = + vreinterpretq_u64_u32(vsraq_n_u32(paired16, paired16, 14)); + + // Last, an even wider 64-bit shift + add to get our result in the low 8 bit + // lanes. xx xx xx 0d xx xx xx 02 + // \_________ | paired64 = (uint8x8_t)(paired32 + (paired32 >> + // 28)) + // \| + // xx xx xx xx xx xx xx d2 + // + // 00001101 00000010 (0d 02) + // \ \___ | | + // '---. \| | + // xxxxxxxx 11010010 (xx d2) + uint8x16_t paired64 = + vreinterpretq_u8_u64(vsraq_n_u64(paired32, paired32, 28)); + + // Extract the low 8 bits from each 64-bit lane with 2 8-bit extracts. + // xx xx xx xx xx xx xx d2 + // || return paired64[0] + // d2 + // Note: Little endian would return the correct value 4b (01001011) instead. + return vgetq_lane_u8(paired64, 0) | ((int) vgetq_lane_u8(paired64, 8) << 8); +} + +// Set each bit of mask dst based on the most significant bit of the +// corresponding packed double-precision (64-bit) floating-point element in a. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_movemask_pd +FORCE_INLINE int _mm_movemask_pd(__m128d a) +{ + uint64x2_t input = vreinterpretq_u64_m128d(a); + uint64x2_t high_bits = vshrq_n_u64(input, 63); + return (int) (vgetq_lane_u64(high_bits, 0) | + (vgetq_lane_u64(high_bits, 1) << 1)); +} + +// Copy the lower 64-bit integer in a to dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_movepi64_pi64 +FORCE_INLINE __m64 _mm_movepi64_pi64(__m128i a) +{ + return vreinterpret_m64_s64(vget_low_s64(vreinterpretq_s64_m128i(a))); +} + +// Copy the 64-bit integer a to the lower element of dst, and zero the upper +// element. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_movpi64_epi64 +FORCE_INLINE __m128i _mm_movpi64_epi64(__m64 a) +{ + return vreinterpretq_m128i_s64( + vcombine_s64(vreinterpret_s64_m64(a), vdup_n_s64(0))); +} + +// Multiply the low unsigned 32-bit integers from each packed 64-bit element in +// a and b, and store the unsigned 64-bit results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mul_epu32 +FORCE_INLINE __m128i _mm_mul_epu32(__m128i a, __m128i b) +{ + // vmull_u32 upcasts instead of masking, so we downcast. + uint32x2_t a_lo = vmovn_u64(vreinterpretq_u64_m128i(a)); + uint32x2_t b_lo = vmovn_u64(vreinterpretq_u64_m128i(b)); + return vreinterpretq_m128i_u64(vmull_u32(a_lo, b_lo)); +} + +// Multiply packed double-precision (64-bit) floating-point elements in a and b, +// and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mul_pd +FORCE_INLINE __m128d _mm_mul_pd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpretq_m128d_f64( + vmulq_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(b))); +#else + double a0 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 0)); + double a1 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 1)); + double b0 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(b), 0)); + double b1 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(b), 1)); + double c[2]; + c[0] = a0 * b0; + c[1] = a1 * b1; + return vld1q_f32((float32_t *) c); +#endif +} + +// Multiply the lower double-precision (64-bit) floating-point element in a and +// b, store the result in the lower element of dst, and copy the upper element +// from a to the upper element of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mul_sd +FORCE_INLINE __m128d _mm_mul_sd(__m128d a, __m128d b) +{ + return _mm_move_sd(a, _mm_mul_pd(a, b)); +} + +// Multiply the low unsigned 32-bit integers from a and b, and store the +// unsigned 64-bit result in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mul_su32 +FORCE_INLINE __m64 _mm_mul_su32(__m64 a, __m64 b) +{ + return vreinterpret_m64_u64(vget_low_u64( + vmull_u32(vreinterpret_u32_m64(a), vreinterpret_u32_m64(b)))); +} + +// Multiply the packed signed 16-bit integers in a and b, producing intermediate +// 32-bit integers, and store the high 16 bits of the intermediate integers in +// dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mulhi_epi16 +FORCE_INLINE __m128i _mm_mulhi_epi16(__m128i a, __m128i b) +{ + /* FIXME: issue with large values because of result saturation */ + // int16x8_t ret = vqdmulhq_s16(vreinterpretq_s16_m128i(a), + // vreinterpretq_s16_m128i(b)); /* =2*a*b */ return + // vreinterpretq_m128i_s16(vshrq_n_s16(ret, 1)); + int16x4_t a3210 = vget_low_s16(vreinterpretq_s16_m128i(a)); + int16x4_t b3210 = vget_low_s16(vreinterpretq_s16_m128i(b)); + int32x4_t ab3210 = vmull_s16(a3210, b3210); /* 3333222211110000 */ + int16x4_t a7654 = vget_high_s16(vreinterpretq_s16_m128i(a)); + int16x4_t b7654 = vget_high_s16(vreinterpretq_s16_m128i(b)); + int32x4_t ab7654 = vmull_s16(a7654, b7654); /* 7777666655554444 */ + uint16x8x2_t r = + vuzpq_u16(vreinterpretq_u16_s32(ab3210), vreinterpretq_u16_s32(ab7654)); + return vreinterpretq_m128i_u16(r.val[1]); +} + +// Multiply the packed unsigned 16-bit integers in a and b, producing +// intermediate 32-bit integers, and store the high 16 bits of the intermediate +// integers in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mulhi_epu16 +FORCE_INLINE __m128i _mm_mulhi_epu16(__m128i a, __m128i b) +{ + uint16x4_t a3210 = vget_low_u16(vreinterpretq_u16_m128i(a)); + uint16x4_t b3210 = vget_low_u16(vreinterpretq_u16_m128i(b)); + uint32x4_t ab3210 = vmull_u16(a3210, b3210); +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + uint32x4_t ab7654 = + vmull_high_u16(vreinterpretq_u16_m128i(a), vreinterpretq_u16_m128i(b)); + uint16x8_t r = vuzp2q_u16(vreinterpretq_u16_u32(ab3210), + vreinterpretq_u16_u32(ab7654)); + return vreinterpretq_m128i_u16(r); +#else + uint16x4_t a7654 = vget_high_u16(vreinterpretq_u16_m128i(a)); + uint16x4_t b7654 = vget_high_u16(vreinterpretq_u16_m128i(b)); + uint32x4_t ab7654 = vmull_u16(a7654, b7654); + uint16x8x2_t r = + vuzpq_u16(vreinterpretq_u16_u32(ab3210), vreinterpretq_u16_u32(ab7654)); + return vreinterpretq_m128i_u16(r.val[1]); +#endif +} + +// Multiply the packed 16-bit integers in a and b, producing intermediate 32-bit +// integers, and store the low 16 bits of the intermediate integers in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mullo_epi16 +FORCE_INLINE __m128i _mm_mullo_epi16(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_s16( + vmulq_s16(vreinterpretq_s16_m128i(a), vreinterpretq_s16_m128i(b))); +} + +// Compute the bitwise OR of packed double-precision (64-bit) floating-point +// elements in a and b, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_or_pd +FORCE_INLINE __m128d _mm_or_pd(__m128d a, __m128d b) +{ + return vreinterpretq_m128d_s64( + vorrq_s64(vreinterpretq_s64_m128d(a), vreinterpretq_s64_m128d(b))); +} + +// Compute the bitwise OR of 128 bits (representing integer data) in a and b, +// and store the result in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_or_si128 +FORCE_INLINE __m128i _mm_or_si128(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_s32( + vorrq_s32(vreinterpretq_s32_m128i(a), vreinterpretq_s32_m128i(b))); +} + +// Convert packed signed 16-bit integers from a and b to packed 8-bit integers +// using signed saturation, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_packs_epi16 +FORCE_INLINE __m128i _mm_packs_epi16(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_s8( + vcombine_s8(vqmovn_s16(vreinterpretq_s16_m128i(a)), + vqmovn_s16(vreinterpretq_s16_m128i(b)))); +} + +// Convert packed signed 32-bit integers from a and b to packed 16-bit integers +// using signed saturation, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_packs_epi32 +FORCE_INLINE __m128i _mm_packs_epi32(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_s16( + vcombine_s16(vqmovn_s32(vreinterpretq_s32_m128i(a)), + vqmovn_s32(vreinterpretq_s32_m128i(b)))); +} + +// Convert packed signed 16-bit integers from a and b to packed 8-bit integers +// using unsigned saturation, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_packus_epi16 +FORCE_INLINE __m128i _mm_packus_epi16(const __m128i a, const __m128i b) +{ + return vreinterpretq_m128i_u8( + vcombine_u8(vqmovun_s16(vreinterpretq_s16_m128i(a)), + vqmovun_s16(vreinterpretq_s16_m128i(b)))); +} + +// Pause the processor. This is typically used in spin-wait loops and depending +// on the x86 processor typical values are in the 40-100 cycle range. The +// 'yield' instruction isn't a good fit because it's effectively a nop on most +// Arm cores. Experience with several databases has shown has shown an 'isb' is +// a reasonable approximation. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_pause +FORCE_INLINE void _mm_pause(void) +{ +#if defined(_MSC_VER) && !defined(__clang__) + __isb(_ARM64_BARRIER_SY); +#else + __asm__ __volatile__("isb\n"); +#endif +} + +// Compute the absolute differences of packed unsigned 8-bit integers in a and +// b, then horizontally sum each consecutive 8 differences to produce two +// unsigned 16-bit integers, and pack these unsigned 16-bit integers in the low +// 16 bits of 64-bit elements in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sad_epu8 +FORCE_INLINE __m128i _mm_sad_epu8(__m128i a, __m128i b) +{ + uint16x8_t t = vpaddlq_u8(vabdq_u8((uint8x16_t) a, (uint8x16_t) b)); + return vreinterpretq_m128i_u64(vpaddlq_u32(vpaddlq_u16(t))); +} + +// Set packed 16-bit integers in dst with the supplied values. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_set_epi16 +FORCE_INLINE __m128i _mm_set_epi16(short i7, + short i6, + short i5, + short i4, + short i3, + short i2, + short i1, + short i0) +{ + int16_t ALIGN_STRUCT(16) data[8] = {i0, i1, i2, i3, i4, i5, i6, i7}; + return vreinterpretq_m128i_s16(vld1q_s16(data)); +} + +// Set packed 32-bit integers in dst with the supplied values. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_set_epi32 +FORCE_INLINE __m128i _mm_set_epi32(int i3, int i2, int i1, int i0) +{ + int32_t ALIGN_STRUCT(16) data[4] = {i0, i1, i2, i3}; + return vreinterpretq_m128i_s32(vld1q_s32(data)); +} + +// Set packed 64-bit integers in dst with the supplied values. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_set_epi64 +FORCE_INLINE __m128i _mm_set_epi64(__m64 i1, __m64 i2) +{ + return _mm_set_epi64x(vget_lane_s64(i1, 0), vget_lane_s64(i2, 0)); +} + +// Set packed 64-bit integers in dst with the supplied values. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_set_epi64x +FORCE_INLINE __m128i _mm_set_epi64x(int64_t i1, int64_t i2) +{ + return vreinterpretq_m128i_s64( + vcombine_s64(vcreate_s64(i2), vcreate_s64(i1))); +} + +// Set packed 8-bit integers in dst with the supplied values. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_set_epi8 +FORCE_INLINE __m128i _mm_set_epi8(signed char b15, + signed char b14, + signed char b13, + signed char b12, + signed char b11, + signed char b10, + signed char b9, + signed char b8, + signed char b7, + signed char b6, + signed char b5, + signed char b4, + signed char b3, + signed char b2, + signed char b1, + signed char b0) +{ + int8_t ALIGN_STRUCT(16) data[16] = { + (int8_t) b0, (int8_t) b1, (int8_t) b2, (int8_t) b3, + (int8_t) b4, (int8_t) b5, (int8_t) b6, (int8_t) b7, + (int8_t) b8, (int8_t) b9, (int8_t) b10, (int8_t) b11, + (int8_t) b12, (int8_t) b13, (int8_t) b14, (int8_t) b15}; + return (__m128i) vld1q_s8(data); +} + +// Set packed double-precision (64-bit) floating-point elements in dst with the +// supplied values. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_set_pd +FORCE_INLINE __m128d _mm_set_pd(double e1, double e0) +{ + double ALIGN_STRUCT(16) data[2] = {e0, e1}; +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpretq_m128d_f64(vld1q_f64((float64_t *) data)); +#else + return vreinterpretq_m128d_f32(vld1q_f32((float32_t *) data)); +#endif +} + +// Broadcast double-precision (64-bit) floating-point value a to all elements of +// dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_set_pd1 +#define _mm_set_pd1 _mm_set1_pd + +// Copy double-precision (64-bit) floating-point element a to the lower element +// of dst, and zero the upper element. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_set_sd +FORCE_INLINE __m128d _mm_set_sd(double a) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpretq_m128d_f64(vsetq_lane_f64(a, vdupq_n_f64(0), 0)); +#else + return _mm_set_pd(0, a); +#endif +} + +// Broadcast 16-bit integer a to all elements of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_set1_epi16 +FORCE_INLINE __m128i _mm_set1_epi16(short w) +{ + return vreinterpretq_m128i_s16(vdupq_n_s16(w)); +} + +// Broadcast 32-bit integer a to all elements of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_set1_epi32 +FORCE_INLINE __m128i _mm_set1_epi32(int _i) +{ + return vreinterpretq_m128i_s32(vdupq_n_s32(_i)); +} + +// Broadcast 64-bit integer a to all elements of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_set1_epi64 +FORCE_INLINE __m128i _mm_set1_epi64(__m64 _i) +{ + return vreinterpretq_m128i_s64(vdupq_lane_s64(_i, 0)); +} + +// Broadcast 64-bit integer a to all elements of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_set1_epi64x +FORCE_INLINE __m128i _mm_set1_epi64x(int64_t _i) +{ + return vreinterpretq_m128i_s64(vdupq_n_s64(_i)); +} + +// Broadcast 8-bit integer a to all elements of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_set1_epi8 +FORCE_INLINE __m128i _mm_set1_epi8(signed char w) +{ + return vreinterpretq_m128i_s8(vdupq_n_s8(w)); +} + +// Broadcast double-precision (64-bit) floating-point value a to all elements of +// dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_set1_pd +FORCE_INLINE __m128d _mm_set1_pd(double d) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpretq_m128d_f64(vdupq_n_f64(d)); +#else + int64_t _d = sse2neon_recast_f64_s64(d); + return vreinterpretq_m128d_s64(vdupq_n_s64(_d)); +#endif +} + +// Set packed 16-bit integers in dst with the supplied values in reverse order. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_setr_epi16 +FORCE_INLINE __m128i _mm_setr_epi16(short w0, + short w1, + short w2, + short w3, + short w4, + short w5, + short w6, + short w7) +{ + int16_t ALIGN_STRUCT(16) data[8] = {w0, w1, w2, w3, w4, w5, w6, w7}; + return vreinterpretq_m128i_s16(vld1q_s16((int16_t *) data)); +} + +// Set packed 32-bit integers in dst with the supplied values in reverse order. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_setr_epi32 +FORCE_INLINE __m128i _mm_setr_epi32(int i3, int i2, int i1, int i0) +{ + int32_t ALIGN_STRUCT(16) data[4] = {i3, i2, i1, i0}; + return vreinterpretq_m128i_s32(vld1q_s32(data)); +} + +// Set packed 64-bit integers in dst with the supplied values in reverse order. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_setr_epi64 +FORCE_INLINE __m128i _mm_setr_epi64(__m64 e1, __m64 e0) +{ + return vreinterpretq_m128i_s64(vcombine_s64(e1, e0)); +} + +// Set packed 8-bit integers in dst with the supplied values in reverse order. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_setr_epi8 +FORCE_INLINE __m128i _mm_setr_epi8(signed char b0, + signed char b1, + signed char b2, + signed char b3, + signed char b4, + signed char b5, + signed char b6, + signed char b7, + signed char b8, + signed char b9, + signed char b10, + signed char b11, + signed char b12, + signed char b13, + signed char b14, + signed char b15) +{ + int8_t ALIGN_STRUCT(16) data[16] = { + (int8_t) b0, (int8_t) b1, (int8_t) b2, (int8_t) b3, + (int8_t) b4, (int8_t) b5, (int8_t) b6, (int8_t) b7, + (int8_t) b8, (int8_t) b9, (int8_t) b10, (int8_t) b11, + (int8_t) b12, (int8_t) b13, (int8_t) b14, (int8_t) b15}; + return (__m128i) vld1q_s8(data); +} + +// Set packed double-precision (64-bit) floating-point elements in dst with the +// supplied values in reverse order. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_setr_pd +FORCE_INLINE __m128d _mm_setr_pd(double e1, double e0) +{ + return _mm_set_pd(e0, e1); +} + +// Return vector of type __m128d with all elements set to zero. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_setzero_pd +FORCE_INLINE __m128d _mm_setzero_pd(void) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpretq_m128d_f64(vdupq_n_f64(0)); +#else + return vreinterpretq_m128d_f32(vdupq_n_f32(0)); +#endif +} + +// Return vector of type __m128i with all elements set to zero. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_setzero_si128 +FORCE_INLINE __m128i _mm_setzero_si128(void) +{ + return vreinterpretq_m128i_s32(vdupq_n_s32(0)); +} + +// Shuffle 32-bit integers in a using the control in imm8, and store the results +// in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_shuffle_epi32 +// FORCE_INLINE __m128i _mm_shuffle_epi32(__m128i a, +// __constrange(0,255) int imm) +#if defined(_sse2neon_shuffle) +#define _mm_shuffle_epi32(a, imm) \ + __extension__({ \ + int32x4_t _input = vreinterpretq_s32_m128i(a); \ + int32x4_t _shuf = \ + vshuffleq_s32(_input, _input, (imm) & (0x3), ((imm) >> 2) & 0x3, \ + ((imm) >> 4) & 0x3, ((imm) >> 6) & 0x3); \ + vreinterpretq_m128i_s32(_shuf); \ + }) +#else // generic +#define _mm_shuffle_epi32(a, imm) \ + _sse2neon_define1( \ + __m128i, a, __m128i ret; switch (imm) { \ + case _MM_SHUFFLE(1, 0, 3, 2): \ + ret = _mm_shuffle_epi_1032(_a); \ + break; \ + case _MM_SHUFFLE(2, 3, 0, 1): \ + ret = _mm_shuffle_epi_2301(_a); \ + break; \ + case _MM_SHUFFLE(0, 3, 2, 1): \ + ret = _mm_shuffle_epi_0321(_a); \ + break; \ + case _MM_SHUFFLE(2, 1, 0, 3): \ + ret = _mm_shuffle_epi_2103(_a); \ + break; \ + case _MM_SHUFFLE(1, 0, 1, 0): \ + ret = _mm_shuffle_epi_1010(_a); \ + break; \ + case _MM_SHUFFLE(1, 0, 0, 1): \ + ret = _mm_shuffle_epi_1001(_a); \ + break; \ + case _MM_SHUFFLE(0, 1, 0, 1): \ + ret = _mm_shuffle_epi_0101(_a); \ + break; \ + case _MM_SHUFFLE(2, 2, 1, 1): \ + ret = _mm_shuffle_epi_2211(_a); \ + break; \ + case _MM_SHUFFLE(0, 1, 2, 2): \ + ret = _mm_shuffle_epi_0122(_a); \ + break; \ + case _MM_SHUFFLE(3, 3, 3, 2): \ + ret = _mm_shuffle_epi_3332(_a); \ + break; \ + case _MM_SHUFFLE(0, 0, 0, 0): \ + ret = _mm_shuffle_epi32_splat(_a, 0); \ + break; \ + case _MM_SHUFFLE(1, 1, 1, 1): \ + ret = _mm_shuffle_epi32_splat(_a, 1); \ + break; \ + case _MM_SHUFFLE(2, 2, 2, 2): \ + ret = _mm_shuffle_epi32_splat(_a, 2); \ + break; \ + case _MM_SHUFFLE(3, 3, 3, 3): \ + ret = _mm_shuffle_epi32_splat(_a, 3); \ + break; \ + default: \ + ret = _mm_shuffle_epi32_default(_a, (imm)); \ + break; \ + } _sse2neon_return(ret);) +#endif + +// Shuffle double-precision (64-bit) floating-point elements using the control +// in imm8, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_shuffle_pd +#ifdef _sse2neon_shuffle +#define _mm_shuffle_pd(a, b, imm8) \ + vreinterpretq_m128d_s64( \ + vshuffleq_s64(vreinterpretq_s64_m128d(a), vreinterpretq_s64_m128d(b), \ + (imm8) & 0x1, (((imm8) & 0x2) >> 1) + 2)) +#else +#define _mm_shuffle_pd(a, b, imm8) \ + _mm_castsi128_pd(_mm_set_epi64x( \ + vgetq_lane_s64(vreinterpretq_s64_m128d(b), ((imm8) & 0x2) >> 1), \ + vgetq_lane_s64(vreinterpretq_s64_m128d(a), (imm8) & 0x1))) +#endif + +// FORCE_INLINE __m128i _mm_shufflehi_epi16(__m128i a, +// __constrange(0,255) int imm) +#if defined(_sse2neon_shuffle) +#define _mm_shufflehi_epi16(a, imm) \ + __extension__({ \ + int16x8_t _input = vreinterpretq_s16_m128i(a); \ + int16x8_t _shuf = \ + vshuffleq_s16(_input, _input, 0, 1, 2, 3, ((imm) & (0x3)) + 4, \ + (((imm) >> 2) & 0x3) + 4, (((imm) >> 4) & 0x3) + 4, \ + (((imm) >> 6) & 0x3) + 4); \ + vreinterpretq_m128i_s16(_shuf); \ + }) +#else // generic +#define _mm_shufflehi_epi16(a, imm) _mm_shufflehi_epi16_function((a), (imm)) +#endif + +// FORCE_INLINE __m128i _mm_shufflelo_epi16(__m128i a, +// __constrange(0,255) int imm) +#if defined(_sse2neon_shuffle) +#define _mm_shufflelo_epi16(a, imm) \ + __extension__({ \ + int16x8_t _input = vreinterpretq_s16_m128i(a); \ + int16x8_t _shuf = vshuffleq_s16( \ + _input, _input, ((imm) & (0x3)), (((imm) >> 2) & 0x3), \ + (((imm) >> 4) & 0x3), (((imm) >> 6) & 0x3), 4, 5, 6, 7); \ + vreinterpretq_m128i_s16(_shuf); \ + }) +#else // generic +#define _mm_shufflelo_epi16(a, imm) _mm_shufflelo_epi16_function((a), (imm)) +#endif + +// Shift packed 16-bit integers in a left by count while shifting in zeros, and +// store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sll_epi16 +FORCE_INLINE __m128i _mm_sll_epi16(__m128i a, __m128i count) +{ + uint64_t c = vreinterpretq_nth_u64_m128i(count, 0); + if (_sse2neon_unlikely(c & ~15)) + return _mm_setzero_si128(); + + int16x8_t vc = vdupq_n_s16((int16_t) c); + return vreinterpretq_m128i_s16(vshlq_s16(vreinterpretq_s16_m128i(a), vc)); +} + +// Shift packed 32-bit integers in a left by count while shifting in zeros, and +// store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sll_epi32 +FORCE_INLINE __m128i _mm_sll_epi32(__m128i a, __m128i count) +{ + uint64_t c = vreinterpretq_nth_u64_m128i(count, 0); + if (_sse2neon_unlikely(c & ~31)) + return _mm_setzero_si128(); + + int32x4_t vc = vdupq_n_s32((int32_t) c); + return vreinterpretq_m128i_s32(vshlq_s32(vreinterpretq_s32_m128i(a), vc)); +} + +// Shift packed 64-bit integers in a left by count while shifting in zeros, and +// store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sll_epi64 +FORCE_INLINE __m128i _mm_sll_epi64(__m128i a, __m128i count) +{ + uint64_t c = vreinterpretq_nth_u64_m128i(count, 0); + if (_sse2neon_unlikely(c & ~63)) + return _mm_setzero_si128(); + + int64x2_t vc = vdupq_n_s64((int64_t) c); + return vreinterpretq_m128i_s64(vshlq_s64(vreinterpretq_s64_m128i(a), vc)); +} + +// Shift packed 16-bit integers in a left by imm8 while shifting in zeros, and +// store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_slli_epi16 +FORCE_INLINE __m128i _mm_slli_epi16(__m128i a, int imm) +{ + if (_sse2neon_unlikely(imm & ~15)) + return _mm_setzero_si128(); + return vreinterpretq_m128i_s16( + vshlq_s16(vreinterpretq_s16_m128i(a), vdupq_n_s16((int16_t) imm))); +} + +// Shift packed 32-bit integers in a left by imm8 while shifting in zeros, and +// store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_slli_epi32 +FORCE_INLINE __m128i _mm_slli_epi32(__m128i a, int imm) +{ + if (_sse2neon_unlikely(imm & ~31)) + return _mm_setzero_si128(); + return vreinterpretq_m128i_s32( + vshlq_s32(vreinterpretq_s32_m128i(a), vdupq_n_s32(imm))); +} + +// Shift packed 64-bit integers in a left by imm8 while shifting in zeros, and +// store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_slli_epi64 +FORCE_INLINE __m128i _mm_slli_epi64(__m128i a, int imm) +{ + if (_sse2neon_unlikely(imm & ~63)) + return _mm_setzero_si128(); + return vreinterpretq_m128i_s64( + vshlq_s64(vreinterpretq_s64_m128i(a), vdupq_n_s64(imm))); +} + +// Shift a left by imm8 bytes while shifting in zeros, and store the results in +// dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_slli_si128 +#define _mm_slli_si128(a, imm) \ + _sse2neon_define1( \ + __m128i, a, int8x16_t ret; \ + if (_sse2neon_unlikely((imm) == 0)) ret = vreinterpretq_s8_m128i(_a); \ + else if (_sse2neon_unlikely((imm) & ~15)) ret = vdupq_n_s8(0); \ + else ret = vextq_s8(vdupq_n_s8(0), vreinterpretq_s8_m128i(_a), \ + (((imm) <= 0 || (imm) > 15) ? 0 : (16 - (imm)))); \ + _sse2neon_return(vreinterpretq_m128i_s8(ret));) + +// Compute the square root of packed double-precision (64-bit) floating-point +// elements in a, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sqrt_pd +FORCE_INLINE __m128d _mm_sqrt_pd(__m128d a) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpretq_m128d_f64(vsqrtq_f64(vreinterpretq_f64_m128d(a))); +#else + double a0, a1; + a0 = sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 0)); + a1 = sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 1)); + double _a0 = sqrt(a0); + double _a1 = sqrt(a1); + return _mm_set_pd(_a1, _a0); +#endif +} + +// Compute the square root of the lower double-precision (64-bit) floating-point +// element in b, store the result in the lower element of dst, and copy the +// upper element from a to the upper element of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sqrt_sd +FORCE_INLINE __m128d _mm_sqrt_sd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return _mm_move_sd(a, _mm_sqrt_pd(b)); +#else + double _a, _b; + _a = sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 1)); + _b = sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(b), 0)); + return _mm_set_pd(_a, sqrt(_b)); +#endif +} + +// Shift packed 16-bit integers in a right by count while shifting in sign bits, +// and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sra_epi16 +FORCE_INLINE __m128i _mm_sra_epi16(__m128i a, __m128i count) +{ + int64_t c = vgetq_lane_s64(count, 0); + if (_sse2neon_unlikely(c & ~15)) + return _mm_cmplt_epi16(a, _mm_setzero_si128()); + return vreinterpretq_m128i_s16( + vshlq_s16((int16x8_t) a, vdupq_n_s16((int16_t) -c))); +} + +// Shift packed 32-bit integers in a right by count while shifting in sign bits, +// and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sra_epi32 +FORCE_INLINE __m128i _mm_sra_epi32(__m128i a, __m128i count) +{ + int64_t c = vgetq_lane_s64(count, 0); + if (_sse2neon_unlikely(c & ~31)) + return _mm_cmplt_epi32(a, _mm_setzero_si128()); + return vreinterpretq_m128i_s32( + vshlq_s32((int32x4_t) a, vdupq_n_s32((int) -c))); +} + +// Shift packed 16-bit integers in a right by imm8 while shifting in sign +// bits, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_srai_epi16 +FORCE_INLINE __m128i _mm_srai_epi16(__m128i a, int imm) +{ + const int16_t count = (imm & ~15) ? 15 : (int16_t) imm; + return (__m128i) vshlq_s16((int16x8_t) a, vdupq_n_s16(-count)); +} + +// Shift packed 32-bit integers in a right by imm8 while shifting in sign bits, +// and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_srai_epi32 +// FORCE_INLINE __m128i _mm_srai_epi32(__m128i a, __constrange(0,255) int imm) +#define _mm_srai_epi32(a, imm) \ + _sse2neon_define0( \ + __m128i, a, __m128i ret; if (_sse2neon_unlikely((imm) == 0)) { \ + ret = _a; \ + } else if (_sse2neon_likely(0 < (imm) && (imm) < 32)) { \ + ret = vreinterpretq_m128i_s32( \ + vshlq_s32(vreinterpretq_s32_m128i(_a), vdupq_n_s32(-(imm)))); \ + } else { \ + ret = vreinterpretq_m128i_s32( \ + vshrq_n_s32(vreinterpretq_s32_m128i(_a), 31)); \ + } _sse2neon_return(ret);) + +// Shift packed 16-bit integers in a right by count while shifting in zeros, and +// store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_srl_epi16 +FORCE_INLINE __m128i _mm_srl_epi16(__m128i a, __m128i count) +{ + uint64_t c = vreinterpretq_nth_u64_m128i(count, 0); + if (_sse2neon_unlikely(c & ~15)) + return _mm_setzero_si128(); + + int16x8_t vc = vdupq_n_s16(-(int16_t) c); + return vreinterpretq_m128i_u16(vshlq_u16(vreinterpretq_u16_m128i(a), vc)); +} + +// Shift packed 32-bit integers in a right by count while shifting in zeros, and +// store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_srl_epi32 +FORCE_INLINE __m128i _mm_srl_epi32(__m128i a, __m128i count) +{ + uint64_t c = vreinterpretq_nth_u64_m128i(count, 0); + if (_sse2neon_unlikely(c & ~31)) + return _mm_setzero_si128(); + + int32x4_t vc = vdupq_n_s32(-(int32_t) c); + return vreinterpretq_m128i_u32(vshlq_u32(vreinterpretq_u32_m128i(a), vc)); +} + +// Shift packed 64-bit integers in a right by count while shifting in zeros, and +// store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_srl_epi64 +FORCE_INLINE __m128i _mm_srl_epi64(__m128i a, __m128i count) +{ + uint64_t c = vreinterpretq_nth_u64_m128i(count, 0); + if (_sse2neon_unlikely(c & ~63)) + return _mm_setzero_si128(); + + int64x2_t vc = vdupq_n_s64(-(int64_t) c); + return vreinterpretq_m128i_u64(vshlq_u64(vreinterpretq_u64_m128i(a), vc)); +} + +// Shift packed 16-bit integers in a right by imm8 while shifting in zeros, and +// store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_srli_epi16 +#define _mm_srli_epi16(a, imm) \ + _sse2neon_define0( \ + __m128i, a, __m128i ret; if (_sse2neon_unlikely((imm) & ~15)) { \ + ret = _mm_setzero_si128(); \ + } else { \ + ret = vreinterpretq_m128i_u16(vshlq_u16( \ + vreinterpretq_u16_m128i(_a), vdupq_n_s16((int16_t) - (imm)))); \ + } _sse2neon_return(ret);) + +// Shift packed 32-bit integers in a right by imm8 while shifting in zeros, and +// store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_srli_epi32 +// FORCE_INLINE __m128i _mm_srli_epi32(__m128i a, __constrange(0,255) int imm) +#define _mm_srli_epi32(a, imm) \ + _sse2neon_define0( \ + __m128i, a, __m128i ret; if (_sse2neon_unlikely((imm) & ~31)) { \ + ret = _mm_setzero_si128(); \ + } else { \ + ret = vreinterpretq_m128i_u32( \ + vshlq_u32(vreinterpretq_u32_m128i(_a), vdupq_n_s32(-(imm)))); \ + } _sse2neon_return(ret);) + +// Shift packed 64-bit integers in a right by imm8 while shifting in zeros, and +// store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_srli_epi64 +#define _mm_srli_epi64(a, imm) \ + _sse2neon_define0( \ + __m128i, a, __m128i ret; if (_sse2neon_unlikely((imm) & ~63)) { \ + ret = _mm_setzero_si128(); \ + } else { \ + ret = vreinterpretq_m128i_u64( \ + vshlq_u64(vreinterpretq_u64_m128i(_a), vdupq_n_s64(-(imm)))); \ + } _sse2neon_return(ret);) + +// Shift a right by imm8 bytes while shifting in zeros, and store the results in +// dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_srli_si128 +#define _mm_srli_si128(a, imm) \ + _sse2neon_define1( \ + __m128i, a, int8x16_t ret; \ + if (_sse2neon_unlikely((imm) & ~15)) ret = vdupq_n_s8(0); \ + else ret = vextq_s8(vreinterpretq_s8_m128i(_a), vdupq_n_s8(0), \ + ((imm) > 15 ? 0 : (imm))); \ + _sse2neon_return(vreinterpretq_m128i_s8(ret));) + +// Store 128-bits (composed of 2 packed double-precision (64-bit) floating-point +// elements) from a into memory. mem_addr must be aligned on a 16-byte boundary +// or a general-protection exception may be generated. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_store_pd +FORCE_INLINE void _mm_store_pd(double *mem_addr, __m128d a) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + vst1q_f64((float64_t *) mem_addr, vreinterpretq_f64_m128d(a)); +#else + vst1q_f32((float32_t *) mem_addr, vreinterpretq_f32_m128d(a)); +#endif +} + +// Store the lower double-precision (64-bit) floating-point element from a into +// 2 contiguous elements in memory. mem_addr must be aligned on a 16-byte +// boundary or a general-protection exception may be generated. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_store_pd1 +FORCE_INLINE void _mm_store_pd1(double *mem_addr, __m128d a) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + float64x1_t a_low = vget_low_f64(vreinterpretq_f64_m128d(a)); + vst1q_f64((float64_t *) mem_addr, + vreinterpretq_f64_m128d(vcombine_f64(a_low, a_low))); +#else + float32x2_t a_low = vget_low_f32(vreinterpretq_f32_m128d(a)); + vst1q_f32((float32_t *) mem_addr, + vreinterpretq_f32_m128d(vcombine_f32(a_low, a_low))); +#endif +} + +// Store the lower double-precision (64-bit) floating-point element from a into +// memory. mem_addr does not need to be aligned on any particular boundary. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_store_sd +FORCE_INLINE void _mm_store_sd(double *mem_addr, __m128d a) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + vst1_f64((float64_t *) mem_addr, vget_low_f64(vreinterpretq_f64_m128d(a))); +#else + vst1_u64((uint64_t *) mem_addr, vget_low_u64(vreinterpretq_u64_m128d(a))); +#endif +} + +// Store 128-bits of integer data from a into memory. mem_addr must be aligned +// on a 16-byte boundary or a general-protection exception may be generated. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_store_si128 +FORCE_INLINE void _mm_store_si128(__m128i *p, __m128i a) +{ + vst1q_s32((int32_t *) p, vreinterpretq_s32_m128i(a)); +} + +// Store the lower double-precision (64-bit) floating-point element from a into +// 2 contiguous elements in memory. mem_addr must be aligned on a 16-byte +// boundary or a general-protection exception may be generated. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#expand=9,526,5601&text=_mm_store1_pd +#define _mm_store1_pd _mm_store_pd1 + +// Store the upper double-precision (64-bit) floating-point element from a into +// memory. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_storeh_pd +FORCE_INLINE void _mm_storeh_pd(double *mem_addr, __m128d a) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + vst1_f64((float64_t *) mem_addr, vget_high_f64(vreinterpretq_f64_m128d(a))); +#else + vst1_f32((float32_t *) mem_addr, vget_high_f32(vreinterpretq_f32_m128d(a))); +#endif +} + +// Store 64-bit integer from the first element of a into memory. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_storel_epi64 +FORCE_INLINE void _mm_storel_epi64(__m128i *a, __m128i b) +{ + vst1_u64((uint64_t *) a, vget_low_u64(vreinterpretq_u64_m128i(b))); +} + +// Store the lower double-precision (64-bit) floating-point element from a into +// memory. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_storel_pd +FORCE_INLINE void _mm_storel_pd(double *mem_addr, __m128d a) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + vst1_f64((float64_t *) mem_addr, vget_low_f64(vreinterpretq_f64_m128d(a))); +#else + vst1_f32((float32_t *) mem_addr, vget_low_f32(vreinterpretq_f32_m128d(a))); +#endif +} + +// Store 2 double-precision (64-bit) floating-point elements from a into memory +// in reverse order. mem_addr must be aligned on a 16-byte boundary or a +// general-protection exception may be generated. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_storer_pd +FORCE_INLINE void _mm_storer_pd(double *mem_addr, __m128d a) +{ + float32x4_t f = vreinterpretq_f32_m128d(a); + _mm_store_pd(mem_addr, vreinterpretq_m128d_f32(vextq_f32(f, f, 2))); +} + +// Store 128-bits (composed of 2 packed double-precision (64-bit) floating-point +// elements) from a into memory. mem_addr does not need to be aligned on any +// particular boundary. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_storeu_pd +FORCE_INLINE void _mm_storeu_pd(double *mem_addr, __m128d a) +{ + _mm_store_pd(mem_addr, a); +} + +// Store 128-bits of integer data from a into memory. mem_addr does not need to +// be aligned on any particular boundary. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_storeu_si128 +FORCE_INLINE void _mm_storeu_si128(__m128i *p, __m128i a) +{ + vst1q_s32((int32_t *) p, vreinterpretq_s32_m128i(a)); +} + +// Store 32-bit integer from the first element of a into memory. mem_addr does +// not need to be aligned on any particular boundary. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_storeu_si32 +FORCE_INLINE void _mm_storeu_si32(void *p, __m128i a) +{ + vst1q_lane_s32((int32_t *) p, vreinterpretq_s32_m128i(a), 0); +} + +// Store 128-bits (composed of 2 packed double-precision (64-bit) floating-point +// elements) from a into memory using a non-temporal memory hint. mem_addr must +// be aligned on a 16-byte boundary or a general-protection exception may be +// generated. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_stream_pd +FORCE_INLINE void _mm_stream_pd(double *p, __m128d a) +{ +#if __has_builtin(__builtin_nontemporal_store) + __builtin_nontemporal_store(a, (__m128d *) p); +#elif defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + vst1q_f64(p, vreinterpretq_f64_m128d(a)); +#else + vst1q_s64((int64_t *) p, vreinterpretq_s64_m128d(a)); +#endif +} + +// Store 128-bits of integer data from a into memory using a non-temporal memory +// hint. mem_addr must be aligned on a 16-byte boundary or a general-protection +// exception may be generated. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_stream_si128 +FORCE_INLINE void _mm_stream_si128(__m128i *p, __m128i a) +{ +#if __has_builtin(__builtin_nontemporal_store) + __builtin_nontemporal_store(a, p); +#else + vst1q_s64((int64_t *) p, vreinterpretq_s64_m128i(a)); +#endif +} + +// Store 32-bit integer a into memory using a non-temporal hint to minimize +// cache pollution. If the cache line containing address mem_addr is already in +// the cache, the cache will be updated. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_stream_si32 +FORCE_INLINE void _mm_stream_si32(int *p, int a) +{ + vst1q_lane_s32((int32_t *) p, vdupq_n_s32(a), 0); +} + +// Store 64-bit integer a into memory using a non-temporal hint to minimize +// cache pollution. If the cache line containing address mem_addr is already in +// the cache, the cache will be updated. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_stream_si64 +FORCE_INLINE void _mm_stream_si64(__int64 *p, __int64 a) +{ + vst1_s64((int64_t *) p, vdup_n_s64((int64_t) a)); +} + +// Subtract packed 16-bit integers in b from packed 16-bit integers in a, and +// store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sub_epi16 +FORCE_INLINE __m128i _mm_sub_epi16(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_s16( + vsubq_s16(vreinterpretq_s16_m128i(a), vreinterpretq_s16_m128i(b))); +} + +// Subtract packed 32-bit integers in b from packed 32-bit integers in a, and +// store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sub_epi32 +FORCE_INLINE __m128i _mm_sub_epi32(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_s32( + vsubq_s32(vreinterpretq_s32_m128i(a), vreinterpretq_s32_m128i(b))); +} + +// Subtract packed 64-bit integers in b from packed 64-bit integers in a, and +// store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sub_epi64 +FORCE_INLINE __m128i _mm_sub_epi64(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_s64( + vsubq_s64(vreinterpretq_s64_m128i(a), vreinterpretq_s64_m128i(b))); +} + +// Subtract packed 8-bit integers in b from packed 8-bit integers in a, and +// store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sub_epi8 +FORCE_INLINE __m128i _mm_sub_epi8(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_s8( + vsubq_s8(vreinterpretq_s8_m128i(a), vreinterpretq_s8_m128i(b))); +} + +// Subtract packed double-precision (64-bit) floating-point elements in b from +// packed double-precision (64-bit) floating-point elements in a, and store the +// results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_sub_pd +FORCE_INLINE __m128d _mm_sub_pd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpretq_m128d_f64( + vsubq_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(b))); +#else + double a0 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 0)); + double a1 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 1)); + double b0 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(b), 0)); + double b1 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(b), 1)); + double c[2]; + c[0] = a0 - b0; + c[1] = a1 - b1; + return vld1q_f32((float32_t *) c); +#endif +} + +// Subtract the lower double-precision (64-bit) floating-point element in b from +// the lower double-precision (64-bit) floating-point element in a, store the +// result in the lower element of dst, and copy the upper element from a to the +// upper element of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sub_sd +FORCE_INLINE __m128d _mm_sub_sd(__m128d a, __m128d b) +{ + return _mm_move_sd(a, _mm_sub_pd(a, b)); +} + +// Subtract 64-bit integer b from 64-bit integer a, and store the result in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sub_si64 +FORCE_INLINE __m64 _mm_sub_si64(__m64 a, __m64 b) +{ + return vreinterpret_m64_s64( + vsub_s64(vreinterpret_s64_m64(a), vreinterpret_s64_m64(b))); +} + +// Subtract packed signed 16-bit integers in b from packed 16-bit integers in a +// using saturation, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_subs_epi16 +FORCE_INLINE __m128i _mm_subs_epi16(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_s16( + vqsubq_s16(vreinterpretq_s16_m128i(a), vreinterpretq_s16_m128i(b))); +} + +// Subtract packed signed 8-bit integers in b from packed 8-bit integers in a +// using saturation, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_subs_epi8 +FORCE_INLINE __m128i _mm_subs_epi8(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_s8( + vqsubq_s8(vreinterpretq_s8_m128i(a), vreinterpretq_s8_m128i(b))); +} + +// Subtract packed unsigned 16-bit integers in b from packed unsigned 16-bit +// integers in a using saturation, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_subs_epu16 +FORCE_INLINE __m128i _mm_subs_epu16(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_u16( + vqsubq_u16(vreinterpretq_u16_m128i(a), vreinterpretq_u16_m128i(b))); +} + +// Subtract packed unsigned 8-bit integers in b from packed unsigned 8-bit +// integers in a using saturation, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_subs_epu8 +FORCE_INLINE __m128i _mm_subs_epu8(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_u8( + vqsubq_u8(vreinterpretq_u8_m128i(a), vreinterpretq_u8_m128i(b))); +} + +#define _mm_ucomieq_sd _mm_comieq_sd +#define _mm_ucomige_sd _mm_comige_sd +#define _mm_ucomigt_sd _mm_comigt_sd +#define _mm_ucomile_sd _mm_comile_sd +#define _mm_ucomilt_sd _mm_comilt_sd +#define _mm_ucomineq_sd _mm_comineq_sd + +// Return vector of type __m128d with undefined elements. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_undefined_pd +FORCE_INLINE __m128d _mm_undefined_pd(void) +{ +#if defined(__GNUC__) || defined(__clang__) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wuninitialized" +#endif + __m128d a; +#if defined(_MSC_VER) && !defined(__clang__) + a = _mm_setzero_pd(); +#endif + return a; +#if defined(__GNUC__) || defined(__clang__) +#pragma GCC diagnostic pop +#endif +} + +// Unpack and interleave 16-bit integers from the high half of a and b, and +// store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_unpackhi_epi16 +FORCE_INLINE __m128i _mm_unpackhi_epi16(__m128i a, __m128i b) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpretq_m128i_s16( + vzip2q_s16(vreinterpretq_s16_m128i(a), vreinterpretq_s16_m128i(b))); +#else + int16x4_t a1 = vget_high_s16(vreinterpretq_s16_m128i(a)); + int16x4_t b1 = vget_high_s16(vreinterpretq_s16_m128i(b)); + int16x4x2_t result = vzip_s16(a1, b1); + return vreinterpretq_m128i_s16(vcombine_s16(result.val[0], result.val[1])); +#endif +} + +// Unpack and interleave 32-bit integers from the high half of a and b, and +// store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_unpackhi_epi32 +FORCE_INLINE __m128i _mm_unpackhi_epi32(__m128i a, __m128i b) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpretq_m128i_s32( + vzip2q_s32(vreinterpretq_s32_m128i(a), vreinterpretq_s32_m128i(b))); +#else + int32x2_t a1 = vget_high_s32(vreinterpretq_s32_m128i(a)); + int32x2_t b1 = vget_high_s32(vreinterpretq_s32_m128i(b)); + int32x2x2_t result = vzip_s32(a1, b1); + return vreinterpretq_m128i_s32(vcombine_s32(result.val[0], result.val[1])); +#endif +} + +// Unpack and interleave 64-bit integers from the high half of a and b, and +// store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_unpackhi_epi64 +FORCE_INLINE __m128i _mm_unpackhi_epi64(__m128i a, __m128i b) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpretq_m128i_s64( + vzip2q_s64(vreinterpretq_s64_m128i(a), vreinterpretq_s64_m128i(b))); +#else + int64x1_t a_h = vget_high_s64(vreinterpretq_s64_m128i(a)); + int64x1_t b_h = vget_high_s64(vreinterpretq_s64_m128i(b)); + return vreinterpretq_m128i_s64(vcombine_s64(a_h, b_h)); +#endif +} + +// Unpack and interleave 8-bit integers from the high half of a and b, and store +// the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_unpackhi_epi8 +FORCE_INLINE __m128i _mm_unpackhi_epi8(__m128i a, __m128i b) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpretq_m128i_s8( + vzip2q_s8(vreinterpretq_s8_m128i(a), vreinterpretq_s8_m128i(b))); +#else + int8x8_t a1 = + vreinterpret_s8_s16(vget_high_s16(vreinterpretq_s16_m128i(a))); + int8x8_t b1 = + vreinterpret_s8_s16(vget_high_s16(vreinterpretq_s16_m128i(b))); + int8x8x2_t result = vzip_s8(a1, b1); + return vreinterpretq_m128i_s8(vcombine_s8(result.val[0], result.val[1])); +#endif +} + +// Unpack and interleave double-precision (64-bit) floating-point elements from +// the high half of a and b, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_unpackhi_pd +FORCE_INLINE __m128d _mm_unpackhi_pd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpretq_m128d_f64( + vzip2q_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(b))); +#else + return vreinterpretq_m128d_s64( + vcombine_s64(vget_high_s64(vreinterpretq_s64_m128d(a)), + vget_high_s64(vreinterpretq_s64_m128d(b)))); +#endif +} + +// Unpack and interleave 16-bit integers from the low half of a and b, and store +// the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_unpacklo_epi16 +FORCE_INLINE __m128i _mm_unpacklo_epi16(__m128i a, __m128i b) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpretq_m128i_s16( + vzip1q_s16(vreinterpretq_s16_m128i(a), vreinterpretq_s16_m128i(b))); +#else + int16x4_t a1 = vget_low_s16(vreinterpretq_s16_m128i(a)); + int16x4_t b1 = vget_low_s16(vreinterpretq_s16_m128i(b)); + int16x4x2_t result = vzip_s16(a1, b1); + return vreinterpretq_m128i_s16(vcombine_s16(result.val[0], result.val[1])); +#endif +} + +// Unpack and interleave 32-bit integers from the low half of a and b, and store +// the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_unpacklo_epi32 +FORCE_INLINE __m128i _mm_unpacklo_epi32(__m128i a, __m128i b) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpretq_m128i_s32( + vzip1q_s32(vreinterpretq_s32_m128i(a), vreinterpretq_s32_m128i(b))); +#else + int32x2_t a1 = vget_low_s32(vreinterpretq_s32_m128i(a)); + int32x2_t b1 = vget_low_s32(vreinterpretq_s32_m128i(b)); + int32x2x2_t result = vzip_s32(a1, b1); + return vreinterpretq_m128i_s32(vcombine_s32(result.val[0], result.val[1])); +#endif +} + +// Unpack and interleave 64-bit integers from the low half of a and b, and store +// the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_unpacklo_epi64 +FORCE_INLINE __m128i _mm_unpacklo_epi64(__m128i a, __m128i b) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpretq_m128i_s64( + vzip1q_s64(vreinterpretq_s64_m128i(a), vreinterpretq_s64_m128i(b))); +#else + int64x1_t a_l = vget_low_s64(vreinterpretq_s64_m128i(a)); + int64x1_t b_l = vget_low_s64(vreinterpretq_s64_m128i(b)); + return vreinterpretq_m128i_s64(vcombine_s64(a_l, b_l)); +#endif +} + +// Unpack and interleave 8-bit integers from the low half of a and b, and store +// the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_unpacklo_epi8 +FORCE_INLINE __m128i _mm_unpacklo_epi8(__m128i a, __m128i b) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpretq_m128i_s8( + vzip1q_s8(vreinterpretq_s8_m128i(a), vreinterpretq_s8_m128i(b))); +#else + int8x8_t a1 = vreinterpret_s8_s16(vget_low_s16(vreinterpretq_s16_m128i(a))); + int8x8_t b1 = vreinterpret_s8_s16(vget_low_s16(vreinterpretq_s16_m128i(b))); + int8x8x2_t result = vzip_s8(a1, b1); + return vreinterpretq_m128i_s8(vcombine_s8(result.val[0], result.val[1])); +#endif +} + +// Unpack and interleave double-precision (64-bit) floating-point elements from +// the low half of a and b, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_unpacklo_pd +FORCE_INLINE __m128d _mm_unpacklo_pd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpretq_m128d_f64( + vzip1q_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(b))); +#else + return vreinterpretq_m128d_s64( + vcombine_s64(vget_low_s64(vreinterpretq_s64_m128d(a)), + vget_low_s64(vreinterpretq_s64_m128d(b)))); +#endif +} + +// Compute the bitwise XOR of packed double-precision (64-bit) floating-point +// elements in a and b, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_xor_pd +FORCE_INLINE __m128d _mm_xor_pd(__m128d a, __m128d b) +{ + return vreinterpretq_m128d_s64( + veorq_s64(vreinterpretq_s64_m128d(a), vreinterpretq_s64_m128d(b))); +} + +// Compute the bitwise XOR of 128 bits (representing integer data) in a and b, +// and store the result in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_xor_si128 +FORCE_INLINE __m128i _mm_xor_si128(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_s32( + veorq_s32(vreinterpretq_s32_m128i(a), vreinterpretq_s32_m128i(b))); +} + +/* SSE3 */ + +// Alternatively add and subtract packed double-precision (64-bit) +// floating-point elements in a to/from packed elements in b, and store the +// results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_addsub_pd +FORCE_INLINE __m128d _mm_addsub_pd(__m128d a, __m128d b) +{ + _sse2neon_const __m128d mask = _mm_set_pd(1.0f, -1.0f); +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpretq_m128d_f64(vfmaq_f64(vreinterpretq_f64_m128d(a), + vreinterpretq_f64_m128d(b), + vreinterpretq_f64_m128d(mask))); +#else + return _mm_add_pd(_mm_mul_pd(b, mask), a); +#endif +} + +// Alternatively add and subtract packed single-precision (32-bit) +// floating-point elements in a to/from packed elements in b, and store the +// results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=addsub_ps +FORCE_INLINE __m128 _mm_addsub_ps(__m128 a, __m128 b) +{ + _sse2neon_const __m128 mask = _mm_setr_ps(-1.0f, 1.0f, -1.0f, 1.0f); +#if (defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC)) || \ + defined(__ARM_FEATURE_FMA) /* VFPv4+ */ + return vreinterpretq_m128_f32(vfmaq_f32(vreinterpretq_f32_m128(a), + vreinterpretq_f32_m128(mask), + vreinterpretq_f32_m128(b))); +#else + return _mm_add_ps(_mm_mul_ps(b, mask), a); +#endif +} + +// Horizontally add adjacent pairs of double-precision (64-bit) floating-point +// elements in a and b, and pack the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_hadd_pd +FORCE_INLINE __m128d _mm_hadd_pd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpretq_m128d_f64( + vpaddq_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(b))); +#else + double a0 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 0)); + double a1 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 1)); + double b0 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(b), 0)); + double b1 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(b), 1)); + double c[] = {a0 + a1, b0 + b1}; + return vreinterpretq_m128d_u64(vld1q_u64((uint64_t *) c)); +#endif +} + +// Horizontally add adjacent pairs of single-precision (32-bit) floating-point +// elements in a and b, and pack the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_hadd_ps +FORCE_INLINE __m128 _mm_hadd_ps(__m128 a, __m128 b) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpretq_m128_f32( + vpaddq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b))); +#else + float32x2_t a10 = vget_low_f32(vreinterpretq_f32_m128(a)); + float32x2_t a32 = vget_high_f32(vreinterpretq_f32_m128(a)); + float32x2_t b10 = vget_low_f32(vreinterpretq_f32_m128(b)); + float32x2_t b32 = vget_high_f32(vreinterpretq_f32_m128(b)); + return vreinterpretq_m128_f32( + vcombine_f32(vpadd_f32(a10, a32), vpadd_f32(b10, b32))); +#endif +} + +// Horizontally subtract adjacent pairs of double-precision (64-bit) +// floating-point elements in a and b, and pack the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_hsub_pd +FORCE_INLINE __m128d _mm_hsub_pd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + float64x2_t _a = vreinterpretq_f64_m128d(a); + float64x2_t _b = vreinterpretq_f64_m128d(b); + return vreinterpretq_m128d_f64( + vsubq_f64(vuzp1q_f64(_a, _b), vuzp2q_f64(_a, _b))); +#else + double a0 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 0)); + double a1 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 1)); + double b0 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(b), 0)); + double b1 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(b), 1)); + double c[] = {a0 - a1, b0 - b1}; + return vreinterpretq_m128d_u64(vld1q_u64((uint64_t *) c)); +#endif +} + +// Horizontally subtract adjacent pairs of single-precision (32-bit) +// floating-point elements in a and b, and pack the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_hsub_ps +FORCE_INLINE __m128 _mm_hsub_ps(__m128 _a, __m128 _b) +{ + float32x4_t a = vreinterpretq_f32_m128(_a); + float32x4_t b = vreinterpretq_f32_m128(_b); +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpretq_m128_f32( + vsubq_f32(vuzp1q_f32(a, b), vuzp2q_f32(a, b))); +#else + float32x4x2_t c = vuzpq_f32(a, b); + return vreinterpretq_m128_f32(vsubq_f32(c.val[0], c.val[1])); +#endif +} + +// Load 128-bits of integer data from unaligned memory into dst. This intrinsic +// may perform better than _mm_loadu_si128 when the data crosses a cache line +// boundary. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_lddqu_si128 +#define _mm_lddqu_si128 _mm_loadu_si128 + +// Load a double-precision (64-bit) floating-point element from memory into both +// elements of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_loaddup_pd +#define _mm_loaddup_pd _mm_load1_pd + +// Duplicate the low double-precision (64-bit) floating-point element from a, +// and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_movedup_pd +FORCE_INLINE __m128d _mm_movedup_pd(__m128d a) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpretq_m128d_f64( + vdupq_laneq_f64(vreinterpretq_f64_m128d(a), 0)); +#else + return vreinterpretq_m128d_u64( + vdupq_n_u64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 0))); +#endif +} + +// Duplicate odd-indexed single-precision (32-bit) floating-point elements +// from a, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_movehdup_ps +FORCE_INLINE __m128 _mm_movehdup_ps(__m128 a) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpretq_m128_f32( + vtrn2q_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(a))); +#elif defined(_sse2neon_shuffle) + return vreinterpretq_m128_f32(vshuffleq_s32( + vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(a), 1, 1, 3, 3)); +#else + float32_t a1 = vgetq_lane_f32(vreinterpretq_f32_m128(a), 1); + float32_t a3 = vgetq_lane_f32(vreinterpretq_f32_m128(a), 3); + float ALIGN_STRUCT(16) data[4] = {a1, a1, a3, a3}; + return vreinterpretq_m128_f32(vld1q_f32(data)); +#endif +} + +// Duplicate even-indexed single-precision (32-bit) floating-point elements +// from a, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_moveldup_ps +FORCE_INLINE __m128 _mm_moveldup_ps(__m128 a) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpretq_m128_f32( + vtrn1q_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(a))); +#elif defined(_sse2neon_shuffle) + return vreinterpretq_m128_f32(vshuffleq_s32( + vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(a), 0, 0, 2, 2)); +#else + float32_t a0 = vgetq_lane_f32(vreinterpretq_f32_m128(a), 0); + float32_t a2 = vgetq_lane_f32(vreinterpretq_f32_m128(a), 2); + float ALIGN_STRUCT(16) data[4] = {a0, a0, a2, a2}; + return vreinterpretq_m128_f32(vld1q_f32(data)); +#endif +} + +/* SSSE3 */ + +// Compute the absolute value of packed signed 16-bit integers in a, and store +// the unsigned results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_abs_epi16 +FORCE_INLINE __m128i _mm_abs_epi16(__m128i a) +{ + return vreinterpretq_m128i_s16(vabsq_s16(vreinterpretq_s16_m128i(a))); +} + +// Compute the absolute value of packed signed 32-bit integers in a, and store +// the unsigned results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_abs_epi32 +FORCE_INLINE __m128i _mm_abs_epi32(__m128i a) +{ + return vreinterpretq_m128i_s32(vabsq_s32(vreinterpretq_s32_m128i(a))); +} + +// Compute the absolute value of packed signed 8-bit integers in a, and store +// the unsigned results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_abs_epi8 +FORCE_INLINE __m128i _mm_abs_epi8(__m128i a) +{ + return vreinterpretq_m128i_s8(vabsq_s8(vreinterpretq_s8_m128i(a))); +} + +// Compute the absolute value of packed signed 16-bit integers in a, and store +// the unsigned results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_abs_pi16 +FORCE_INLINE __m64 _mm_abs_pi16(__m64 a) +{ + return vreinterpret_m64_s16(vabs_s16(vreinterpret_s16_m64(a))); +} + +// Compute the absolute value of packed signed 32-bit integers in a, and store +// the unsigned results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_abs_pi32 +FORCE_INLINE __m64 _mm_abs_pi32(__m64 a) +{ + return vreinterpret_m64_s32(vabs_s32(vreinterpret_s32_m64(a))); +} + +// Compute the absolute value of packed signed 8-bit integers in a, and store +// the unsigned results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_abs_pi8 +FORCE_INLINE __m64 _mm_abs_pi8(__m64 a) +{ + return vreinterpret_m64_s8(vabs_s8(vreinterpret_s8_m64(a))); +} + +// Concatenate 16-byte blocks in a and b into a 32-byte temporary result, shift +// the result right by imm8 bytes, and store the low 16 bytes in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_alignr_epi8 +#if defined(__GNUC__) && !defined(__clang__) +#define _mm_alignr_epi8(a, b, imm) \ + __extension__({ \ + uint8x16_t _a = vreinterpretq_u8_m128i(a); \ + uint8x16_t _b = vreinterpretq_u8_m128i(b); \ + __m128i ret; \ + if (_sse2neon_unlikely((imm) & ~31)) \ + ret = vreinterpretq_m128i_u8(vdupq_n_u8(0)); \ + else if ((imm) >= 16) \ + ret = _mm_srli_si128(a, (imm) >= 16 ? (imm) - 16 : 0); \ + else \ + ret = vreinterpretq_m128i_u8( \ + vextq_u8(_b, _a, (imm) < 16 ? (imm) : 0)); \ + ret; \ + }) + +#else +#define _mm_alignr_epi8(a, b, imm) \ + _sse2neon_define2( \ + __m128i, a, b, uint8x16_t __a = vreinterpretq_u8_m128i(_a); \ + uint8x16_t __b = vreinterpretq_u8_m128i(_b); __m128i ret; \ + if (_sse2neon_unlikely((imm) & ~31)) ret = \ + vreinterpretq_m128i_u8(vdupq_n_u8(0)); \ + else if ((imm) >= 16) ret = \ + _mm_srli_si128(_a, (imm) >= 16 ? (imm) - 16 : 0); \ + else ret = vreinterpretq_m128i_u8( \ + vextq_u8(__b, __a, (imm) < 16 ? (imm) : 0)); \ + _sse2neon_return(ret);) + +#endif + +// Concatenate 8-byte blocks in a and b into a 16-byte temporary result, shift +// the result right by imm8 bytes, and store the low 8 bytes in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_alignr_pi8 +#define _mm_alignr_pi8(a, b, imm) \ + _sse2neon_define2( \ + __m64, a, b, __m64 ret; if (_sse2neon_unlikely((imm) >= 16)) { \ + ret = vreinterpret_m64_s8(vdup_n_s8(0)); \ + } else { \ + uint8x8_t tmp_low; \ + uint8x8_t tmp_high; \ + if ((imm) >= 8) { \ + const int idx = (imm) - 8; \ + tmp_low = vreinterpret_u8_m64(_a); \ + tmp_high = vdup_n_u8(0); \ + ret = vreinterpret_m64_u8(vext_u8(tmp_low, tmp_high, idx)); \ + } else { \ + const int idx = (imm); \ + tmp_low = vreinterpret_u8_m64(_b); \ + tmp_high = vreinterpret_u8_m64(_a); \ + ret = vreinterpret_m64_u8(vext_u8(tmp_low, tmp_high, idx)); \ + } \ + } _sse2neon_return(ret);) + +// Horizontally add adjacent pairs of 16-bit integers in a and b, and pack the +// signed 16-bit results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_hadd_epi16 +FORCE_INLINE __m128i _mm_hadd_epi16(__m128i _a, __m128i _b) +{ + int16x8_t a = vreinterpretq_s16_m128i(_a); + int16x8_t b = vreinterpretq_s16_m128i(_b); +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpretq_m128i_s16(vpaddq_s16(a, b)); +#else + return vreinterpretq_m128i_s16( + vcombine_s16(vpadd_s16(vget_low_s16(a), vget_high_s16(a)), + vpadd_s16(vget_low_s16(b), vget_high_s16(b)))); +#endif +} + +// Horizontally add adjacent pairs of 32-bit integers in a and b, and pack the +// signed 32-bit results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_hadd_epi32 +FORCE_INLINE __m128i _mm_hadd_epi32(__m128i _a, __m128i _b) +{ + int32x4_t a = vreinterpretq_s32_m128i(_a); + int32x4_t b = vreinterpretq_s32_m128i(_b); +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpretq_m128i_s32(vpaddq_s32(a, b)); +#else + return vreinterpretq_m128i_s32( + vcombine_s32(vpadd_s32(vget_low_s32(a), vget_high_s32(a)), + vpadd_s32(vget_low_s32(b), vget_high_s32(b)))); +#endif +} + +// Horizontally add adjacent pairs of 16-bit integers in a and b, and pack the +// signed 16-bit results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_hadd_pi16 +FORCE_INLINE __m64 _mm_hadd_pi16(__m64 a, __m64 b) +{ + return vreinterpret_m64_s16( + vpadd_s16(vreinterpret_s16_m64(a), vreinterpret_s16_m64(b))); +} + +// Horizontally add adjacent pairs of 32-bit integers in a and b, and pack the +// signed 32-bit results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_hadd_pi32 +FORCE_INLINE __m64 _mm_hadd_pi32(__m64 a, __m64 b) +{ + return vreinterpret_m64_s32( + vpadd_s32(vreinterpret_s32_m64(a), vreinterpret_s32_m64(b))); +} + +// Horizontally add adjacent pairs of signed 16-bit integers in a and b using +// saturation, and pack the signed 16-bit results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_hadds_epi16 +FORCE_INLINE __m128i _mm_hadds_epi16(__m128i _a, __m128i _b) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + int16x8_t a = vreinterpretq_s16_m128i(_a); + int16x8_t b = vreinterpretq_s16_m128i(_b); + return vreinterpretq_s64_s16( + vqaddq_s16(vuzp1q_s16(a, b), vuzp2q_s16(a, b))); +#else + int32x4_t a = vreinterpretq_s32_m128i(_a); + int32x4_t b = vreinterpretq_s32_m128i(_b); + // Interleave using vshrn/vmovn + // [a0|a2|a4|a6|b0|b2|b4|b6] + // [a1|a3|a5|a7|b1|b3|b5|b7] + int16x8_t ab0246 = vcombine_s16(vmovn_s32(a), vmovn_s32(b)); + int16x8_t ab1357 = vcombine_s16(vshrn_n_s32(a, 16), vshrn_n_s32(b, 16)); + // Saturated add + return vreinterpretq_m128i_s16(vqaddq_s16(ab0246, ab1357)); +#endif +} + +// Horizontally add adjacent pairs of signed 16-bit integers in a and b using +// saturation, and pack the signed 16-bit results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_hadds_pi16 +FORCE_INLINE __m64 _mm_hadds_pi16(__m64 _a, __m64 _b) +{ + int16x4_t a = vreinterpret_s16_m64(_a); + int16x4_t b = vreinterpret_s16_m64(_b); +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpret_s64_s16(vqadd_s16(vuzp1_s16(a, b), vuzp2_s16(a, b))); +#else + int16x4x2_t res = vuzp_s16(a, b); + return vreinterpret_s64_s16(vqadd_s16(res.val[0], res.val[1])); +#endif +} + +// Horizontally subtract adjacent pairs of 16-bit integers in a and b, and pack +// the signed 16-bit results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_hsub_epi16 +FORCE_INLINE __m128i _mm_hsub_epi16(__m128i _a, __m128i _b) +{ + int16x8_t a = vreinterpretq_s16_m128i(_a); + int16x8_t b = vreinterpretq_s16_m128i(_b); +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpretq_m128i_s16( + vsubq_s16(vuzp1q_s16(a, b), vuzp2q_s16(a, b))); +#else + int16x8x2_t c = vuzpq_s16(a, b); + return vreinterpretq_m128i_s16(vsubq_s16(c.val[0], c.val[1])); +#endif +} + +// Horizontally subtract adjacent pairs of 32-bit integers in a and b, and pack +// the signed 32-bit results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_hsub_epi32 +FORCE_INLINE __m128i _mm_hsub_epi32(__m128i _a, __m128i _b) +{ + int32x4_t a = vreinterpretq_s32_m128i(_a); + int32x4_t b = vreinterpretq_s32_m128i(_b); +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpretq_m128i_s32( + vsubq_s32(vuzp1q_s32(a, b), vuzp2q_s32(a, b))); +#else + int32x4x2_t c = vuzpq_s32(a, b); + return vreinterpretq_m128i_s32(vsubq_s32(c.val[0], c.val[1])); +#endif +} + +// Horizontally subtract adjacent pairs of 16-bit integers in a and b, and pack +// the signed 16-bit results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_hsub_pi16 +FORCE_INLINE __m64 _mm_hsub_pi16(__m64 _a, __m64 _b) +{ + int16x4_t a = vreinterpret_s16_m64(_a); + int16x4_t b = vreinterpret_s16_m64(_b); +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpret_m64_s16(vsub_s16(vuzp1_s16(a, b), vuzp2_s16(a, b))); +#else + int16x4x2_t c = vuzp_s16(a, b); + return vreinterpret_m64_s16(vsub_s16(c.val[0], c.val[1])); +#endif +} + +// Horizontally subtract adjacent pairs of 32-bit integers in a and b, and pack +// the signed 32-bit results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_hsub_pi32 +FORCE_INLINE __m64 _mm_hsub_pi32(__m64 _a, __m64 _b) +{ + int32x2_t a = vreinterpret_s32_m64(_a); + int32x2_t b = vreinterpret_s32_m64(_b); +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpret_m64_s32(vsub_s32(vuzp1_s32(a, b), vuzp2_s32(a, b))); +#else + int32x2x2_t c = vuzp_s32(a, b); + return vreinterpret_m64_s32(vsub_s32(c.val[0], c.val[1])); +#endif +} + +// Horizontally subtract adjacent pairs of signed 16-bit integers in a and b +// using saturation, and pack the signed 16-bit results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_hsubs_epi16 +FORCE_INLINE __m128i _mm_hsubs_epi16(__m128i _a, __m128i _b) +{ + int16x8_t a = vreinterpretq_s16_m128i(_a); + int16x8_t b = vreinterpretq_s16_m128i(_b); +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpretq_m128i_s16( + vqsubq_s16(vuzp1q_s16(a, b), vuzp2q_s16(a, b))); +#else + int16x8x2_t c = vuzpq_s16(a, b); + return vreinterpretq_m128i_s16(vqsubq_s16(c.val[0], c.val[1])); +#endif +} + +// Horizontally subtract adjacent pairs of signed 16-bit integers in a and b +// using saturation, and pack the signed 16-bit results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_hsubs_pi16 +FORCE_INLINE __m64 _mm_hsubs_pi16(__m64 _a, __m64 _b) +{ + int16x4_t a = vreinterpret_s16_m64(_a); + int16x4_t b = vreinterpret_s16_m64(_b); +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpret_m64_s16(vqsub_s16(vuzp1_s16(a, b), vuzp2_s16(a, b))); +#else + int16x4x2_t c = vuzp_s16(a, b); + return vreinterpret_m64_s16(vqsub_s16(c.val[0], c.val[1])); +#endif +} + +// Vertically multiply each unsigned 8-bit integer from a with the corresponding +// signed 8-bit integer from b, producing intermediate signed 16-bit integers. +// Horizontally add adjacent pairs of intermediate signed 16-bit integers, +// and pack the saturated results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maddubs_epi16 +FORCE_INLINE __m128i _mm_maddubs_epi16(__m128i _a, __m128i _b) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + uint8x16_t a = vreinterpretq_u8_m128i(_a); + int8x16_t b = vreinterpretq_s8_m128i(_b); + int16x8_t tl = vmulq_s16(vreinterpretq_s16_u16(vmovl_u8(vget_low_u8(a))), + vmovl_s8(vget_low_s8(b))); + int16x8_t th = vmulq_s16(vreinterpretq_s16_u16(vmovl_u8(vget_high_u8(a))), + vmovl_s8(vget_high_s8(b))); + return vreinterpretq_m128i_s16( + vqaddq_s16(vuzp1q_s16(tl, th), vuzp2q_s16(tl, th))); +#else + // This would be much simpler if x86 would choose to zero extend OR sign + // extend, not both. This could probably be optimized better. + uint16x8_t a = vreinterpretq_u16_m128i(_a); + int16x8_t b = vreinterpretq_s16_m128i(_b); + + // Zero extend a + int16x8_t a_odd = vreinterpretq_s16_u16(vshrq_n_u16(a, 8)); + int16x8_t a_even = vreinterpretq_s16_u16(vbicq_u16(a, vdupq_n_u16(0xff00))); + + // Sign extend by shifting left then shifting right. + int16x8_t b_even = vshrq_n_s16(vshlq_n_s16(b, 8), 8); + int16x8_t b_odd = vshrq_n_s16(b, 8); + + // multiply + int16x8_t prod1 = vmulq_s16(a_even, b_even); + int16x8_t prod2 = vmulq_s16(a_odd, b_odd); + + // saturated add + return vreinterpretq_m128i_s16(vqaddq_s16(prod1, prod2)); +#endif +} + +// Vertically multiply each unsigned 8-bit integer from a with the corresponding +// signed 8-bit integer from b, producing intermediate signed 16-bit integers. +// Horizontally add adjacent pairs of intermediate signed 16-bit integers, and +// pack the saturated results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maddubs_pi16 +FORCE_INLINE __m64 _mm_maddubs_pi16(__m64 _a, __m64 _b) +{ + uint16x4_t a = vreinterpret_u16_m64(_a); + int16x4_t b = vreinterpret_s16_m64(_b); + + // Zero extend a + int16x4_t a_odd = vreinterpret_s16_u16(vshr_n_u16(a, 8)); + int16x4_t a_even = vreinterpret_s16_u16(vand_u16(a, vdup_n_u16(0xff))); + + // Sign extend by shifting left then shifting right. + int16x4_t b_even = vshr_n_s16(vshl_n_s16(b, 8), 8); + int16x4_t b_odd = vshr_n_s16(b, 8); + + // multiply + int16x4_t prod1 = vmul_s16(a_even, b_even); + int16x4_t prod2 = vmul_s16(a_odd, b_odd); + + // saturated add + return vreinterpret_m64_s16(vqadd_s16(prod1, prod2)); +} + +// Multiply packed signed 16-bit integers in a and b, producing intermediate +// signed 32-bit integers. Shift right by 15 bits while rounding up, and store +// the packed 16-bit integers in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mulhrs_epi16 +FORCE_INLINE __m128i _mm_mulhrs_epi16(__m128i a, __m128i b) +{ + // Has issues due to saturation + // return vreinterpretq_m128i_s16(vqrdmulhq_s16(a, b)); + + // Multiply + int32x4_t mul_lo = vmull_s16(vget_low_s16(vreinterpretq_s16_m128i(a)), + vget_low_s16(vreinterpretq_s16_m128i(b))); + int32x4_t mul_hi = vmull_s16(vget_high_s16(vreinterpretq_s16_m128i(a)), + vget_high_s16(vreinterpretq_s16_m128i(b))); + + // Rounding narrowing shift right + // narrow = (int16_t)((mul + 16384) >> 15); + int16x4_t narrow_lo = vrshrn_n_s32(mul_lo, 15); + int16x4_t narrow_hi = vrshrn_n_s32(mul_hi, 15); + + // Join together + return vreinterpretq_m128i_s16(vcombine_s16(narrow_lo, narrow_hi)); +} + +// Multiply packed signed 16-bit integers in a and b, producing intermediate +// signed 32-bit integers. Truncate each intermediate integer to the 18 most +// significant bits, round by adding 1, and store bits [16:1] to dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mulhrs_pi16 +FORCE_INLINE __m64 _mm_mulhrs_pi16(__m64 a, __m64 b) +{ + int32x4_t mul_extend = + vmull_s16((vreinterpret_s16_m64(a)), (vreinterpret_s16_m64(b))); + + // Rounding narrowing shift right + return vreinterpret_m64_s16(vrshrn_n_s32(mul_extend, 15)); +} + +// Shuffle packed 8-bit integers in a according to shuffle control mask in the +// corresponding 8-bit element of b, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_shuffle_epi8 +FORCE_INLINE __m128i _mm_shuffle_epi8(__m128i a, __m128i b) +{ + int8x16_t tbl = vreinterpretq_s8_m128i(a); // input a + uint8x16_t idx = vreinterpretq_u8_m128i(b); // input b + uint8x16_t idx_masked = + vandq_u8(idx, vdupq_n_u8(0x8F)); // avoid using meaningless bits +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpretq_m128i_s8(vqtbl1q_s8(tbl, idx_masked)); +#elif defined(__GNUC__) + int8x16_t ret; + // %e and %f represent the even and odd D registers + // respectively. + __asm__ __volatile__( + "vtbl.8 %e[ret], {%e[tbl], %f[tbl]}, %e[idx]\n" + "vtbl.8 %f[ret], {%e[tbl], %f[tbl]}, %f[idx]\n" + : [ret] "=&w"(ret) + : [tbl] "w"(tbl), [idx] "w"(idx_masked)); + return vreinterpretq_m128i_s8(ret); +#else + // use this line if testing on aarch64 + int8x8x2_t a_split = {vget_low_s8(tbl), vget_high_s8(tbl)}; + return vreinterpretq_m128i_s8( + vcombine_s8(vtbl2_s8(a_split, vget_low_u8(idx_masked)), + vtbl2_s8(a_split, vget_high_u8(idx_masked)))); +#endif +} + +// Shuffle packed 8-bit integers in a according to shuffle control mask in the +// corresponding 8-bit element of b, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_shuffle_pi8 +FORCE_INLINE __m64 _mm_shuffle_pi8(__m64 a, __m64 b) +{ + const int8x8_t controlMask = + vand_s8(vreinterpret_s8_m64(b), vdup_n_s8((int8_t) (0x1 << 7 | 0x07))); + int8x8_t res = vtbl1_s8(vreinterpret_s8_m64(a), controlMask); + return vreinterpret_m64_s8(res); +} + +// Negate packed 16-bit integers in a when the corresponding signed +// 16-bit integer in b is negative, and store the results in dst. +// Element in dst are zeroed out when the corresponding element +// in b is zero. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sign_epi16 +FORCE_INLINE __m128i _mm_sign_epi16(__m128i _a, __m128i _b) +{ + int16x8_t a = vreinterpretq_s16_m128i(_a); + int16x8_t b = vreinterpretq_s16_m128i(_b); + + // signed shift right: faster than vclt + // (b < 0) ? 0xFFFF : 0 + uint16x8_t ltMask = vreinterpretq_u16_s16(vshrq_n_s16(b, 15)); + // (b == 0) ? 0xFFFF : 0 +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + int16x8_t zeroMask = vreinterpretq_s16_u16(vceqzq_s16(b)); +#else + int16x8_t zeroMask = vreinterpretq_s16_u16(vceqq_s16(b, vdupq_n_s16(0))); +#endif + + // bitwise select either a or negative 'a' (vnegq_s16(a) equals to negative + // 'a') based on ltMask + int16x8_t masked = vbslq_s16(ltMask, vnegq_s16(a), a); + // res = masked & (~zeroMask) + int16x8_t res = vbicq_s16(masked, zeroMask); + return vreinterpretq_m128i_s16(res); +} + +// Negate packed 32-bit integers in a when the corresponding signed +// 32-bit integer in b is negative, and store the results in dst. +// Element in dst are zeroed out when the corresponding element +// in b is zero. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sign_epi32 +FORCE_INLINE __m128i _mm_sign_epi32(__m128i _a, __m128i _b) +{ + int32x4_t a = vreinterpretq_s32_m128i(_a); + int32x4_t b = vreinterpretq_s32_m128i(_b); + + // signed shift right: faster than vclt + // (b < 0) ? 0xFFFFFFFF : 0 + uint32x4_t ltMask = vreinterpretq_u32_s32(vshrq_n_s32(b, 31)); + + // (b == 0) ? 0xFFFFFFFF : 0 +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + int32x4_t zeroMask = vreinterpretq_s32_u32(vceqzq_s32(b)); +#else + int32x4_t zeroMask = vreinterpretq_s32_u32(vceqq_s32(b, vdupq_n_s32(0))); +#endif + + // bitwise select either a or negative 'a' (vnegq_s32(a) equals to negative + // 'a') based on ltMask + int32x4_t masked = vbslq_s32(ltMask, vnegq_s32(a), a); + // res = masked & (~zeroMask) + int32x4_t res = vbicq_s32(masked, zeroMask); + return vreinterpretq_m128i_s32(res); +} + +// Negate packed 8-bit integers in a when the corresponding signed +// 8-bit integer in b is negative, and store the results in dst. +// Element in dst are zeroed out when the corresponding element +// in b is zero. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sign_epi8 +FORCE_INLINE __m128i _mm_sign_epi8(__m128i _a, __m128i _b) +{ + int8x16_t a = vreinterpretq_s8_m128i(_a); + int8x16_t b = vreinterpretq_s8_m128i(_b); + + // signed shift right: faster than vclt + // (b < 0) ? 0xFF : 0 + uint8x16_t ltMask = vreinterpretq_u8_s8(vshrq_n_s8(b, 7)); + + // (b == 0) ? 0xFF : 0 +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + int8x16_t zeroMask = vreinterpretq_s8_u8(vceqzq_s8(b)); +#else + int8x16_t zeroMask = vreinterpretq_s8_u8(vceqq_s8(b, vdupq_n_s8(0))); +#endif + + // bitwise select either a or negative 'a' (vnegq_s8(a) return negative 'a') + // based on ltMask + int8x16_t masked = vbslq_s8(ltMask, vnegq_s8(a), a); + // res = masked & (~zeroMask) + int8x16_t res = vbicq_s8(masked, zeroMask); + + return vreinterpretq_m128i_s8(res); +} + +// Negate packed 16-bit integers in a when the corresponding signed 16-bit +// integer in b is negative, and store the results in dst. Element in dst are +// zeroed out when the corresponding element in b is zero. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sign_pi16 +FORCE_INLINE __m64 _mm_sign_pi16(__m64 _a, __m64 _b) +{ + int16x4_t a = vreinterpret_s16_m64(_a); + int16x4_t b = vreinterpret_s16_m64(_b); + + // signed shift right: faster than vclt + // (b < 0) ? 0xFFFF : 0 + uint16x4_t ltMask = vreinterpret_u16_s16(vshr_n_s16(b, 15)); + + // (b == 0) ? 0xFFFF : 0 +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + int16x4_t zeroMask = vreinterpret_s16_u16(vceqz_s16(b)); +#else + int16x4_t zeroMask = vreinterpret_s16_u16(vceq_s16(b, vdup_n_s16(0))); +#endif + + // bitwise select either a or negative 'a' (vneg_s16(a) return negative 'a') + // based on ltMask + int16x4_t masked = vbsl_s16(ltMask, vneg_s16(a), a); + // res = masked & (~zeroMask) + int16x4_t res = vbic_s16(masked, zeroMask); + + return vreinterpret_m64_s16(res); +} + +// Negate packed 32-bit integers in a when the corresponding signed 32-bit +// integer in b is negative, and store the results in dst. Element in dst are +// zeroed out when the corresponding element in b is zero. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sign_pi32 +FORCE_INLINE __m64 _mm_sign_pi32(__m64 _a, __m64 _b) +{ + int32x2_t a = vreinterpret_s32_m64(_a); + int32x2_t b = vreinterpret_s32_m64(_b); + + // signed shift right: faster than vclt + // (b < 0) ? 0xFFFFFFFF : 0 + uint32x2_t ltMask = vreinterpret_u32_s32(vshr_n_s32(b, 31)); + + // (b == 0) ? 0xFFFFFFFF : 0 +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + int32x2_t zeroMask = vreinterpret_s32_u32(vceqz_s32(b)); +#else + int32x2_t zeroMask = vreinterpret_s32_u32(vceq_s32(b, vdup_n_s32(0))); +#endif + + // bitwise select either a or negative 'a' (vneg_s32(a) return negative 'a') + // based on ltMask + int32x2_t masked = vbsl_s32(ltMask, vneg_s32(a), a); + // res = masked & (~zeroMask) + int32x2_t res = vbic_s32(masked, zeroMask); + + return vreinterpret_m64_s32(res); +} + +// Negate packed 8-bit integers in a when the corresponding signed 8-bit integer +// in b is negative, and store the results in dst. Element in dst are zeroed out +// when the corresponding element in b is zero. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sign_pi8 +FORCE_INLINE __m64 _mm_sign_pi8(__m64 _a, __m64 _b) +{ + int8x8_t a = vreinterpret_s8_m64(_a); + int8x8_t b = vreinterpret_s8_m64(_b); + + // signed shift right: faster than vclt + // (b < 0) ? 0xFF : 0 + uint8x8_t ltMask = vreinterpret_u8_s8(vshr_n_s8(b, 7)); + + // (b == 0) ? 0xFF : 0 +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + int8x8_t zeroMask = vreinterpret_s8_u8(vceqz_s8(b)); +#else + int8x8_t zeroMask = vreinterpret_s8_u8(vceq_s8(b, vdup_n_s8(0))); +#endif + + // bitwise select either a or negative 'a' (vneg_s8(a) return negative 'a') + // based on ltMask + int8x8_t masked = vbsl_s8(ltMask, vneg_s8(a), a); + // res = masked & (~zeroMask) + int8x8_t res = vbic_s8(masked, zeroMask); + + return vreinterpret_m64_s8(res); +} + +/* SSE4.1 */ + +// Blend packed 16-bit integers from a and b using control mask imm8, and store +// the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_blend_epi16 +// FORCE_INLINE __m128i _mm_blend_epi16(__m128i a, __m128i b, +// __constrange(0,255) int imm) +#define _mm_blend_epi16(a, b, imm) \ + _sse2neon_define2( \ + __m128i, a, b, \ + const uint16_t _mask[8] = \ + _sse2neon_init(((imm) & (1 << 0)) ? (uint16_t) - 1 : 0x0, \ + ((imm) & (1 << 1)) ? (uint16_t) - 1 : 0x0, \ + ((imm) & (1 << 2)) ? (uint16_t) - 1 : 0x0, \ + ((imm) & (1 << 3)) ? (uint16_t) - 1 : 0x0, \ + ((imm) & (1 << 4)) ? (uint16_t) - 1 : 0x0, \ + ((imm) & (1 << 5)) ? (uint16_t) - 1 : 0x0, \ + ((imm) & (1 << 6)) ? (uint16_t) - 1 : 0x0, \ + ((imm) & (1 << 7)) ? (uint16_t) - 1 : 0x0); \ + uint16x8_t _mask_vec = vld1q_u16(_mask); \ + uint16x8_t __a = vreinterpretq_u16_m128i(_a); \ + uint16x8_t __b = vreinterpretq_u16_m128i(_b); _sse2neon_return( \ + vreinterpretq_m128i_u16(vbslq_u16(_mask_vec, __b, __a)));) + +// Blend packed double-precision (64-bit) floating-point elements from a and b +// using control mask imm8, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_blend_pd +#define _mm_blend_pd(a, b, imm) \ + _sse2neon_define2( \ + __m128d, a, b, \ + const uint64_t _mask[2] = \ + _sse2neon_init(((imm) & (1 << 0)) ? ~UINT64_C(0) : UINT64_C(0), \ + ((imm) & (1 << 1)) ? ~UINT64_C(0) : UINT64_C(0)); \ + uint64x2_t _mask_vec = vld1q_u64(_mask); \ + uint64x2_t __a = vreinterpretq_u64_m128d(_a); \ + uint64x2_t __b = vreinterpretq_u64_m128d(_b); _sse2neon_return( \ + vreinterpretq_m128d_u64(vbslq_u64(_mask_vec, __b, __a)));) + +// Blend packed single-precision (32-bit) floating-point elements from a and b +// using mask, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_blend_ps +FORCE_INLINE __m128 _mm_blend_ps(__m128 _a, __m128 _b, const char imm8) +{ + const uint32_t ALIGN_STRUCT(16) data[4] = { + (imm8 & (1 << 0)) ? UINT32_MAX : 0, (imm8 & (1 << 1)) ? UINT32_MAX : 0, + (imm8 & (1 << 2)) ? UINT32_MAX : 0, (imm8 & (1 << 3)) ? UINT32_MAX : 0}; + uint32x4_t mask = vld1q_u32(data); + float32x4_t a = vreinterpretq_f32_m128(_a); + float32x4_t b = vreinterpretq_f32_m128(_b); + return vreinterpretq_m128_f32(vbslq_f32(mask, b, a)); +} + +// Blend packed 8-bit integers from a and b using mask, and store the results in +// dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_blendv_epi8 +FORCE_INLINE __m128i _mm_blendv_epi8(__m128i _a, __m128i _b, __m128i _mask) +{ + // Use a signed shift right to create a mask with the sign bit + uint8x16_t mask = + vreinterpretq_u8_s8(vshrq_n_s8(vreinterpretq_s8_m128i(_mask), 7)); + uint8x16_t a = vreinterpretq_u8_m128i(_a); + uint8x16_t b = vreinterpretq_u8_m128i(_b); + return vreinterpretq_m128i_u8(vbslq_u8(mask, b, a)); +} + +// Blend packed double-precision (64-bit) floating-point elements from a and b +// using mask, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_blendv_pd +FORCE_INLINE __m128d _mm_blendv_pd(__m128d _a, __m128d _b, __m128d _mask) +{ + uint64x2_t mask = + vreinterpretq_u64_s64(vshrq_n_s64(vreinterpretq_s64_m128d(_mask), 63)); +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + float64x2_t a = vreinterpretq_f64_m128d(_a); + float64x2_t b = vreinterpretq_f64_m128d(_b); + return vreinterpretq_m128d_f64(vbslq_f64(mask, b, a)); +#else + uint64x2_t a = vreinterpretq_u64_m128d(_a); + uint64x2_t b = vreinterpretq_u64_m128d(_b); + return vreinterpretq_m128d_u64(vbslq_u64(mask, b, a)); +#endif +} + +// Blend packed single-precision (32-bit) floating-point elements from a and b +// using mask, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_blendv_ps +FORCE_INLINE __m128 _mm_blendv_ps(__m128 _a, __m128 _b, __m128 _mask) +{ + // Use a signed shift right to create a mask with the sign bit + uint32x4_t mask = + vreinterpretq_u32_s32(vshrq_n_s32(vreinterpretq_s32_m128(_mask), 31)); + float32x4_t a = vreinterpretq_f32_m128(_a); + float32x4_t b = vreinterpretq_f32_m128(_b); + return vreinterpretq_m128_f32(vbslq_f32(mask, b, a)); +} + +// Round the packed double-precision (64-bit) floating-point elements in a up +// to an integer value, and store the results as packed double-precision +// floating-point elements in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_ceil_pd +FORCE_INLINE __m128d _mm_ceil_pd(__m128d a) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpretq_m128d_f64(vrndpq_f64(vreinterpretq_f64_m128d(a))); +#else + double a0, a1; + a0 = sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 0)); + a1 = sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 1)); + return _mm_set_pd(ceil(a1), ceil(a0)); +#endif +} + +// Round the packed single-precision (32-bit) floating-point elements in a up to +// an integer value, and store the results as packed single-precision +// floating-point elements in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_ceil_ps +FORCE_INLINE __m128 _mm_ceil_ps(__m128 a) +{ +#if (defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC)) || \ + defined(__ARM_FEATURE_DIRECTED_ROUNDING) + return vreinterpretq_m128_f32(vrndpq_f32(vreinterpretq_f32_m128(a))); +#else + float *f = (float *) &a; + return _mm_set_ps(ceilf(f[3]), ceilf(f[2]), ceilf(f[1]), ceilf(f[0])); +#endif +} + +// Round the lower double-precision (64-bit) floating-point element in b up to +// an integer value, store the result as a double-precision floating-point +// element in the lower element of dst, and copy the upper element from a to the +// upper element of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_ceil_sd +FORCE_INLINE __m128d _mm_ceil_sd(__m128d a, __m128d b) +{ + return _mm_move_sd(a, _mm_ceil_pd(b)); +} + +// Round the lower single-precision (32-bit) floating-point element in b up to +// an integer value, store the result as a single-precision floating-point +// element in the lower element of dst, and copy the upper 3 packed elements +// from a to the upper elements of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_ceil_ss +FORCE_INLINE __m128 _mm_ceil_ss(__m128 a, __m128 b) +{ + return _mm_move_ss(a, _mm_ceil_ps(b)); +} + +// Compare packed 64-bit integers in a and b for equality, and store the results +// in dst +FORCE_INLINE __m128i _mm_cmpeq_epi64(__m128i a, __m128i b) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpretq_m128i_u64( + vceqq_u64(vreinterpretq_u64_m128i(a), vreinterpretq_u64_m128i(b))); +#else + // ARMv7 lacks vceqq_u64 + // (a == b) -> (a_lo == b_lo) && (a_hi == b_hi) + uint32x4_t cmp = + vceqq_u32(vreinterpretq_u32_m128i(a), vreinterpretq_u32_m128i(b)); + uint32x4_t swapped = vrev64q_u32(cmp); + return vreinterpretq_m128i_u32(vandq_u32(cmp, swapped)); +#endif +} + +// Sign extend packed 16-bit integers in a to packed 32-bit integers, and store +// the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtepi16_epi32 +FORCE_INLINE __m128i _mm_cvtepi16_epi32(__m128i a) +{ + return vreinterpretq_m128i_s32( + vmovl_s16(vget_low_s16(vreinterpretq_s16_m128i(a)))); +} + +// Sign extend packed 16-bit integers in a to packed 64-bit integers, and store +// the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtepi16_epi64 +FORCE_INLINE __m128i _mm_cvtepi16_epi64(__m128i a) +{ + int16x8_t s16x8 = vreinterpretq_s16_m128i(a); /* xxxx xxxx xxxx 0B0A */ + int32x4_t s32x4 = vmovl_s16(vget_low_s16(s16x8)); /* 000x 000x 000B 000A */ + int64x2_t s64x2 = vmovl_s32(vget_low_s32(s32x4)); /* 0000 000B 0000 000A */ + return vreinterpretq_m128i_s64(s64x2); +} + +// Sign extend packed 32-bit integers in a to packed 64-bit integers, and store +// the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtepi32_epi64 +FORCE_INLINE __m128i _mm_cvtepi32_epi64(__m128i a) +{ + return vreinterpretq_m128i_s64( + vmovl_s32(vget_low_s32(vreinterpretq_s32_m128i(a)))); +} + +// Sign extend packed 8-bit integers in a to packed 16-bit integers, and store +// the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtepi8_epi16 +FORCE_INLINE __m128i _mm_cvtepi8_epi16(__m128i a) +{ + int8x16_t s8x16 = vreinterpretq_s8_m128i(a); /* xxxx xxxx xxxx DCBA */ + int16x8_t s16x8 = vmovl_s8(vget_low_s8(s8x16)); /* 0x0x 0x0x 0D0C 0B0A */ + return vreinterpretq_m128i_s16(s16x8); +} + +// Sign extend packed 8-bit integers in a to packed 32-bit integers, and store +// the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtepi8_epi32 +FORCE_INLINE __m128i _mm_cvtepi8_epi32(__m128i a) +{ + int8x16_t s8x16 = vreinterpretq_s8_m128i(a); /* xxxx xxxx xxxx DCBA */ + int16x8_t s16x8 = vmovl_s8(vget_low_s8(s8x16)); /* 0x0x 0x0x 0D0C 0B0A */ + int32x4_t s32x4 = vmovl_s16(vget_low_s16(s16x8)); /* 000D 000C 000B 000A */ + return vreinterpretq_m128i_s32(s32x4); +} + +// Sign extend packed 8-bit integers in the low 8 bytes of a to packed 64-bit +// integers, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtepi8_epi64 +FORCE_INLINE __m128i _mm_cvtepi8_epi64(__m128i a) +{ + int8x16_t s8x16 = vreinterpretq_s8_m128i(a); /* xxxx xxxx xxxx xxBA */ + int16x8_t s16x8 = vmovl_s8(vget_low_s8(s8x16)); /* 0x0x 0x0x 0x0x 0B0A */ + int32x4_t s32x4 = vmovl_s16(vget_low_s16(s16x8)); /* 000x 000x 000B 000A */ + int64x2_t s64x2 = vmovl_s32(vget_low_s32(s32x4)); /* 0000 000B 0000 000A */ + return vreinterpretq_m128i_s64(s64x2); +} + +// Zero extend packed unsigned 16-bit integers in a to packed 32-bit integers, +// and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtepu16_epi32 +FORCE_INLINE __m128i _mm_cvtepu16_epi32(__m128i a) +{ + return vreinterpretq_m128i_u32( + vmovl_u16(vget_low_u16(vreinterpretq_u16_m128i(a)))); +} + +// Zero extend packed unsigned 16-bit integers in a to packed 64-bit integers, +// and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtepu16_epi64 +FORCE_INLINE __m128i _mm_cvtepu16_epi64(__m128i a) +{ + uint16x8_t u16x8 = vreinterpretq_u16_m128i(a); /* xxxx xxxx xxxx 0B0A */ + uint32x4_t u32x4 = vmovl_u16(vget_low_u16(u16x8)); /* 000x 000x 000B 000A */ + uint64x2_t u64x2 = vmovl_u32(vget_low_u32(u32x4)); /* 0000 000B 0000 000A */ + return vreinterpretq_m128i_u64(u64x2); +} + +// Zero extend packed unsigned 32-bit integers in a to packed 64-bit integers, +// and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtepu32_epi64 +FORCE_INLINE __m128i _mm_cvtepu32_epi64(__m128i a) +{ + return vreinterpretq_m128i_u64( + vmovl_u32(vget_low_u32(vreinterpretq_u32_m128i(a)))); +} + +// Zero extend packed unsigned 8-bit integers in a to packed 16-bit integers, +// and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtepu8_epi16 +FORCE_INLINE __m128i _mm_cvtepu8_epi16(__m128i a) +{ + uint8x16_t u8x16 = vreinterpretq_u8_m128i(a); /* xxxx xxxx HGFE DCBA */ + uint16x8_t u16x8 = vmovl_u8(vget_low_u8(u8x16)); /* 0H0G 0F0E 0D0C 0B0A */ + return vreinterpretq_m128i_u16(u16x8); +} + +// Zero extend packed unsigned 8-bit integers in a to packed 32-bit integers, +// and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtepu8_epi32 +FORCE_INLINE __m128i _mm_cvtepu8_epi32(__m128i a) +{ + uint8x16_t u8x16 = vreinterpretq_u8_m128i(a); /* xxxx xxxx xxxx DCBA */ + uint16x8_t u16x8 = vmovl_u8(vget_low_u8(u8x16)); /* 0x0x 0x0x 0D0C 0B0A */ + uint32x4_t u32x4 = vmovl_u16(vget_low_u16(u16x8)); /* 000D 000C 000B 000A */ + return vreinterpretq_m128i_u32(u32x4); +} + +// Zero extend packed unsigned 8-bit integers in the low 8 bytes of a to packed +// 64-bit integers, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtepu8_epi64 +FORCE_INLINE __m128i _mm_cvtepu8_epi64(__m128i a) +{ + uint8x16_t u8x16 = vreinterpretq_u8_m128i(a); /* xxxx xxxx xxxx xxBA */ + uint16x8_t u16x8 = vmovl_u8(vget_low_u8(u8x16)); /* 0x0x 0x0x 0x0x 0B0A */ + uint32x4_t u32x4 = vmovl_u16(vget_low_u16(u16x8)); /* 000x 000x 000B 000A */ + uint64x2_t u64x2 = vmovl_u32(vget_low_u32(u32x4)); /* 0000 000B 0000 000A */ + return vreinterpretq_m128i_u64(u64x2); +} + +// Conditionally multiply the packed double-precision (64-bit) floating-point +// elements in a and b using the high 4 bits in imm8, sum the four products, and +// conditionally store the sum in dst using the low 4 bits of imm8. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_dp_pd +FORCE_INLINE __m128d _mm_dp_pd(__m128d a, __m128d b, const int imm) +{ + // Generate mask value from constant immediate bit value + const int64_t bit0Mask = imm & 0x01 ? UINT64_MAX : 0; + const int64_t bit1Mask = imm & 0x02 ? UINT64_MAX : 0; +#if !SSE2NEON_PRECISE_DP + const int64_t bit4Mask = imm & 0x10 ? UINT64_MAX : 0; + const int64_t bit5Mask = imm & 0x20 ? UINT64_MAX : 0; +#endif + // Conditional multiplication +#if !SSE2NEON_PRECISE_DP + __m128d mul = _mm_mul_pd(a, b); + const __m128d mulMask = + _mm_castsi128_pd(_mm_set_epi64x(bit5Mask, bit4Mask)); + __m128d tmp = _mm_and_pd(mul, mulMask); +#else +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + double d0 = (imm & 0x10) ? vgetq_lane_f64(vreinterpretq_f64_m128d(a), 0) * + vgetq_lane_f64(vreinterpretq_f64_m128d(b), 0) + : 0; + double d1 = (imm & 0x20) ? vgetq_lane_f64(vreinterpretq_f64_m128d(a), 1) * + vgetq_lane_f64(vreinterpretq_f64_m128d(b), 1) + : 0; +#else + double a0 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 0)); + double a1 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 1)); + double b0 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(b), 0)); + double b1 = + sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(b), 1)); + double d0 = (imm & 0x10) ? a0 * b0 : 0; + double d1 = (imm & 0x20) ? a1 * b1 : 0; +#endif + __m128d tmp = _mm_set_pd(d1, d0); +#endif + // Sum the products +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + double sum = vpaddd_f64(vreinterpretq_f64_m128d(tmp)); +#else + double _tmp0 = sse2neon_recast_u64_f64( + vgetq_lane_u64(vreinterpretq_u64_m128d(tmp), 0)); + double _tmp1 = sse2neon_recast_u64_f64( + vgetq_lane_u64(vreinterpretq_u64_m128d(tmp), 1)); + double sum = _tmp0 + _tmp1; +#endif + // Conditionally store the sum + const __m128d sumMask = + _mm_castsi128_pd(_mm_set_epi64x(bit1Mask, bit0Mask)); + __m128d res = _mm_and_pd(_mm_set_pd1(sum), sumMask); + return res; +} + +// Conditionally multiply the packed single-precision (32-bit) floating-point +// elements in a and b using the high 4 bits in imm8, sum the four products, +// and conditionally store the sum in dst using the low 4 bits of imm. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_dp_ps +FORCE_INLINE __m128 _mm_dp_ps(__m128 a, __m128 b, const int imm) +{ + float32x4_t elementwise_prod = _mm_mul_ps(a, b); + +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + /* shortcuts */ + if (imm == 0xFF) { + return _mm_set1_ps(vaddvq_f32(elementwise_prod)); + } + + if ((imm & 0x0F) == 0x0F) { + if (!(imm & (1 << 4))) + elementwise_prod = vsetq_lane_f32(0.0f, elementwise_prod, 0); + if (!(imm & (1 << 5))) + elementwise_prod = vsetq_lane_f32(0.0f, elementwise_prod, 1); + if (!(imm & (1 << 6))) + elementwise_prod = vsetq_lane_f32(0.0f, elementwise_prod, 2); + if (!(imm & (1 << 7))) + elementwise_prod = vsetq_lane_f32(0.0f, elementwise_prod, 3); + + return _mm_set1_ps(vaddvq_f32(elementwise_prod)); + } +#endif + + float s = 0.0f; + + if (imm & (1 << 4)) + s += vgetq_lane_f32(elementwise_prod, 0); + if (imm & (1 << 5)) + s += vgetq_lane_f32(elementwise_prod, 1); + if (imm & (1 << 6)) + s += vgetq_lane_f32(elementwise_prod, 2); + if (imm & (1 << 7)) + s += vgetq_lane_f32(elementwise_prod, 3); + + const float32_t res[4] = { + (imm & 0x1) ? s : 0.0f, + (imm & 0x2) ? s : 0.0f, + (imm & 0x4) ? s : 0.0f, + (imm & 0x8) ? s : 0.0f, + }; + return vreinterpretq_m128_f32(vld1q_f32(res)); +} + +// Extract a 32-bit integer from a, selected with imm8, and store the result in +// dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_extract_epi32 +// FORCE_INLINE int _mm_extract_epi32(__m128i a, __constrange(0,4) int imm) +#define _mm_extract_epi32(a, imm) \ + vgetq_lane_s32(vreinterpretq_s32_m128i(a), (imm)) + +// Extract a 64-bit integer from a, selected with imm8, and store the result in +// dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_extract_epi64 +// FORCE_INLINE __int64 _mm_extract_epi64(__m128i a, __constrange(0,2) int imm) +#define _mm_extract_epi64(a, imm) \ + vgetq_lane_s64(vreinterpretq_s64_m128i(a), (imm)) + +// Extract an 8-bit integer from a, selected with imm8, and store the result in +// the lower element of dst. FORCE_INLINE int _mm_extract_epi8(__m128i a, +// __constrange(0,16) int imm) +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_extract_epi8 +#define _mm_extract_epi8(a, imm) vgetq_lane_u8(vreinterpretq_u8_m128i(a), (imm)) + +// Extracts the selected single-precision (32-bit) floating-point from a. +// FORCE_INLINE int _mm_extract_ps(__m128 a, __constrange(0,4) int imm) +#define _mm_extract_ps(a, imm) vgetq_lane_s32(vreinterpretq_s32_m128(a), (imm)) + +// Round the packed double-precision (64-bit) floating-point elements in a down +// to an integer value, and store the results as packed double-precision +// floating-point elements in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_floor_pd +FORCE_INLINE __m128d _mm_floor_pd(__m128d a) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpretq_m128d_f64(vrndmq_f64(vreinterpretq_f64_m128d(a))); +#else + double a0, a1; + a0 = sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 0)); + a1 = sse2neon_recast_u64_f64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 1)); + return _mm_set_pd(floor(a1), floor(a0)); +#endif +} + +// Round the packed single-precision (32-bit) floating-point elements in a down +// to an integer value, and store the results as packed single-precision +// floating-point elements in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_floor_ps +FORCE_INLINE __m128 _mm_floor_ps(__m128 a) +{ +#if (defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC)) || \ + defined(__ARM_FEATURE_DIRECTED_ROUNDING) + return vreinterpretq_m128_f32(vrndmq_f32(vreinterpretq_f32_m128(a))); +#else + float *f = (float *) &a; + return _mm_set_ps(floorf(f[3]), floorf(f[2]), floorf(f[1]), floorf(f[0])); +#endif +} + +// Round the lower double-precision (64-bit) floating-point element in b down to +// an integer value, store the result as a double-precision floating-point +// element in the lower element of dst, and copy the upper element from a to the +// upper element of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_floor_sd +FORCE_INLINE __m128d _mm_floor_sd(__m128d a, __m128d b) +{ + return _mm_move_sd(a, _mm_floor_pd(b)); +} + +// Round the lower single-precision (32-bit) floating-point element in b down to +// an integer value, store the result as a single-precision floating-point +// element in the lower element of dst, and copy the upper 3 packed elements +// from a to the upper elements of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_floor_ss +FORCE_INLINE __m128 _mm_floor_ss(__m128 a, __m128 b) +{ + return _mm_move_ss(a, _mm_floor_ps(b)); +} + +// Copy a to dst, and insert the 32-bit integer i into dst at the location +// specified by imm8. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_insert_epi32 +// FORCE_INLINE __m128i _mm_insert_epi32(__m128i a, int b, +// __constrange(0,4) int imm) +#define _mm_insert_epi32(a, b, imm) \ + vreinterpretq_m128i_s32( \ + vsetq_lane_s32((b), vreinterpretq_s32_m128i(a), (imm))) + +// Copy a to dst, and insert the 64-bit integer i into dst at the location +// specified by imm8. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_insert_epi64 +// FORCE_INLINE __m128i _mm_insert_epi64(__m128i a, __int64 b, +// __constrange(0,2) int imm) +#define _mm_insert_epi64(a, b, imm) \ + vreinterpretq_m128i_s64( \ + vsetq_lane_s64((b), vreinterpretq_s64_m128i(a), (imm))) + +// Copy a to dst, and insert the lower 8-bit integer from i into dst at the +// location specified by imm8. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_insert_epi8 +// FORCE_INLINE __m128i _mm_insert_epi8(__m128i a, int b, +// __constrange(0,16) int imm) +#define _mm_insert_epi8(a, b, imm) \ + vreinterpretq_m128i_s8(vsetq_lane_s8((b), vreinterpretq_s8_m128i(a), (imm))) + +// Copy a to tmp, then insert a single-precision (32-bit) floating-point +// element from b into tmp using the control in imm8. Store tmp to dst using +// the mask in imm8 (elements are zeroed out when the corresponding bit is set). +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=insert_ps +#define _mm_insert_ps(a, b, imm8) \ + _sse2neon_define2( \ + __m128, a, b, \ + float32x4_t tmp1 = \ + vsetq_lane_f32(vgetq_lane_f32(_b, ((imm8) >> 6) & 0x3), \ + vreinterpretq_f32_m128(_a), 0); \ + float32x4_t tmp2 = \ + vsetq_lane_f32(vgetq_lane_f32(tmp1, 0), \ + vreinterpretq_f32_m128(_a), (((imm8) >> 4) & 0x3)); \ + const uint32_t data[4] = \ + _sse2neon_init(((imm8) & (1 << 0)) ? UINT32_MAX : 0, \ + ((imm8) & (1 << 1)) ? UINT32_MAX : 0, \ + ((imm8) & (1 << 2)) ? UINT32_MAX : 0, \ + ((imm8) & (1 << 3)) ? UINT32_MAX : 0); \ + uint32x4_t mask = vld1q_u32(data); \ + float32x4_t all_zeros = vdupq_n_f32(0); \ + \ + _sse2neon_return(vreinterpretq_m128_f32( \ + vbslq_f32(mask, all_zeros, vreinterpretq_f32_m128(tmp2))));) + +// Compare packed signed 32-bit integers in a and b, and store packed maximum +// values in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_max_epi32 +FORCE_INLINE __m128i _mm_max_epi32(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_s32( + vmaxq_s32(vreinterpretq_s32_m128i(a), vreinterpretq_s32_m128i(b))); +} + +// Compare packed signed 8-bit integers in a and b, and store packed maximum +// values in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_max_epi8 +FORCE_INLINE __m128i _mm_max_epi8(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_s8( + vmaxq_s8(vreinterpretq_s8_m128i(a), vreinterpretq_s8_m128i(b))); +} + +// Compare packed unsigned 16-bit integers in a and b, and store packed maximum +// values in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_max_epu16 +FORCE_INLINE __m128i _mm_max_epu16(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_u16( + vmaxq_u16(vreinterpretq_u16_m128i(a), vreinterpretq_u16_m128i(b))); +} + +// Compare packed unsigned 32-bit integers in a and b, and store packed maximum +// values in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_max_epu32 +FORCE_INLINE __m128i _mm_max_epu32(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_u32( + vmaxq_u32(vreinterpretq_u32_m128i(a), vreinterpretq_u32_m128i(b))); +} + +// Compare packed signed 32-bit integers in a and b, and store packed minimum +// values in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_min_epi32 +FORCE_INLINE __m128i _mm_min_epi32(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_s32( + vminq_s32(vreinterpretq_s32_m128i(a), vreinterpretq_s32_m128i(b))); +} + +// Compare packed signed 8-bit integers in a and b, and store packed minimum +// values in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_min_epi8 +FORCE_INLINE __m128i _mm_min_epi8(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_s8( + vminq_s8(vreinterpretq_s8_m128i(a), vreinterpretq_s8_m128i(b))); +} + +// Compare packed unsigned 16-bit integers in a and b, and store packed minimum +// values in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_min_epu16 +FORCE_INLINE __m128i _mm_min_epu16(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_u16( + vminq_u16(vreinterpretq_u16_m128i(a), vreinterpretq_u16_m128i(b))); +} + +// Compare packed unsigned 32-bit integers in a and b, and store packed minimum +// values in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_max_epu32 +FORCE_INLINE __m128i _mm_min_epu32(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_u32( + vminq_u32(vreinterpretq_u32_m128i(a), vreinterpretq_u32_m128i(b))); +} + +// Horizontally compute the minimum amongst the packed unsigned 16-bit integers +// in a, store the minimum and index in dst, and zero the remaining bits in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_minpos_epu16 +FORCE_INLINE __m128i _mm_minpos_epu16(__m128i a) +{ + __m128i dst; + uint16_t min, idx = 0; +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + // Find the minimum value + min = vminvq_u16(vreinterpretq_u16_m128i(a)); + + // Get the index of the minimum value + static const uint16_t idxv[] = {0, 1, 2, 3, 4, 5, 6, 7}; + uint16x8_t minv = vdupq_n_u16(min); + uint16x8_t cmeq = vceqq_u16(minv, vreinterpretq_u16_m128i(a)); + idx = vminvq_u16(vornq_u16(vld1q_u16(idxv), cmeq)); +#else + // Find the minimum value + __m64 tmp; + tmp = vreinterpret_m64_u16( + vmin_u16(vget_low_u16(vreinterpretq_u16_m128i(a)), + vget_high_u16(vreinterpretq_u16_m128i(a)))); + tmp = vreinterpret_m64_u16( + vpmin_u16(vreinterpret_u16_m64(tmp), vreinterpret_u16_m64(tmp))); + tmp = vreinterpret_m64_u16( + vpmin_u16(vreinterpret_u16_m64(tmp), vreinterpret_u16_m64(tmp))); + min = vget_lane_u16(vreinterpret_u16_m64(tmp), 0); + // Get the index of the minimum value + int i; + for (i = 0; i < 8; i++) { + if (min == vgetq_lane_u16(vreinterpretq_u16_m128i(a), 0)) { + idx = (uint16_t) i; + break; + } + a = _mm_srli_si128(a, 2); + } +#endif + // Generate result + dst = _mm_setzero_si128(); + dst = vreinterpretq_m128i_u16( + vsetq_lane_u16(min, vreinterpretq_u16_m128i(dst), 0)); + dst = vreinterpretq_m128i_u16( + vsetq_lane_u16(idx, vreinterpretq_u16_m128i(dst), 1)); + return dst; +} + +// Compute the sum of absolute differences (SADs) of quadruplets of unsigned +// 8-bit integers in a compared to those in b, and store the 16-bit results in +// dst. Eight SADs are performed using one quadruplet from b and eight +// quadruplets from a. One quadruplet is selected from b starting at on the +// offset specified in imm8. Eight quadruplets are formed from sequential 8-bit +// integers selected from a starting at the offset specified in imm8. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mpsadbw_epu8 +FORCE_INLINE __m128i _mm_mpsadbw_epu8(__m128i a, __m128i b, const int imm) +{ + uint8x16_t _a, _b; + + switch (imm & 0x4) { + case 0: + // do nothing + _a = vreinterpretq_u8_m128i(a); + break; + case 4: + _a = vreinterpretq_u8_u32(vextq_u32(vreinterpretq_u32_m128i(a), + vreinterpretq_u32_m128i(a), 1)); + break; + default: +#if defined(__GNUC__) || defined(__clang__) + __builtin_unreachable(); +#elif defined(_MSC_VER) + __assume(0); +#endif + break; + } + + switch (imm & 0x3) { + case 0: + _b = vreinterpretq_u8_u32( + vdupq_n_u32(vgetq_lane_u32(vreinterpretq_u32_m128i(b), 0))); + break; + case 1: + _b = vreinterpretq_u8_u32( + vdupq_n_u32(vgetq_lane_u32(vreinterpretq_u32_m128i(b), 1))); + break; + case 2: + _b = vreinterpretq_u8_u32( + vdupq_n_u32(vgetq_lane_u32(vreinterpretq_u32_m128i(b), 2))); + break; + case 3: + _b = vreinterpretq_u8_u32( + vdupq_n_u32(vgetq_lane_u32(vreinterpretq_u32_m128i(b), 3))); + break; + default: +#if defined(__GNUC__) || defined(__clang__) + __builtin_unreachable(); +#elif defined(_MSC_VER) + __assume(0); +#endif + break; + } + + int16x8_t c04, c15, c26, c37; + uint8x8_t low_b = vget_low_u8(_b); + c04 = vreinterpretq_s16_u16(vabdl_u8(vget_low_u8(_a), low_b)); + uint8x16_t _a_1 = vextq_u8(_a, _a, 1); + c15 = vreinterpretq_s16_u16(vabdl_u8(vget_low_u8(_a_1), low_b)); + uint8x16_t _a_2 = vextq_u8(_a, _a, 2); + c26 = vreinterpretq_s16_u16(vabdl_u8(vget_low_u8(_a_2), low_b)); + uint8x16_t _a_3 = vextq_u8(_a, _a, 3); + c37 = vreinterpretq_s16_u16(vabdl_u8(vget_low_u8(_a_3), low_b)); +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + // |0|4|2|6| + c04 = vpaddq_s16(c04, c26); + // |1|5|3|7| + c15 = vpaddq_s16(c15, c37); + + int32x4_t trn1_c = + vtrn1q_s32(vreinterpretq_s32_s16(c04), vreinterpretq_s32_s16(c15)); + int32x4_t trn2_c = + vtrn2q_s32(vreinterpretq_s32_s16(c04), vreinterpretq_s32_s16(c15)); + return vreinterpretq_m128i_s16(vpaddq_s16(vreinterpretq_s16_s32(trn1_c), + vreinterpretq_s16_s32(trn2_c))); +#else + int16x4_t c01, c23, c45, c67; + c01 = vpadd_s16(vget_low_s16(c04), vget_low_s16(c15)); + c23 = vpadd_s16(vget_low_s16(c26), vget_low_s16(c37)); + c45 = vpadd_s16(vget_high_s16(c04), vget_high_s16(c15)); + c67 = vpadd_s16(vget_high_s16(c26), vget_high_s16(c37)); + + return vreinterpretq_m128i_s16( + vcombine_s16(vpadd_s16(c01, c23), vpadd_s16(c45, c67))); +#endif +} + +// Multiply the low signed 32-bit integers from each packed 64-bit element in +// a and b, and store the signed 64-bit results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mul_epi32 +FORCE_INLINE __m128i _mm_mul_epi32(__m128i a, __m128i b) +{ + // vmull_s32 upcasts instead of masking, so we downcast. + int32x2_t a_lo = vmovn_s64(vreinterpretq_s64_m128i(a)); + int32x2_t b_lo = vmovn_s64(vreinterpretq_s64_m128i(b)); + return vreinterpretq_m128i_s64(vmull_s32(a_lo, b_lo)); +} + +// Multiply the packed 32-bit integers in a and b, producing intermediate 64-bit +// integers, and store the low 32 bits of the intermediate integers in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mullo_epi32 +FORCE_INLINE __m128i _mm_mullo_epi32(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_s32( + vmulq_s32(vreinterpretq_s32_m128i(a), vreinterpretq_s32_m128i(b))); +} + +// Convert packed signed 32-bit integers from a and b to packed 16-bit integers +// using unsigned saturation, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_packus_epi32 +FORCE_INLINE __m128i _mm_packus_epi32(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_u16( + vcombine_u16(vqmovun_s32(vreinterpretq_s32_m128i(a)), + vqmovun_s32(vreinterpretq_s32_m128i(b)))); +} + +// Round the packed double-precision (64-bit) floating-point elements in a using +// the rounding parameter, and store the results as packed double-precision +// floating-point elements in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_round_pd +FORCE_INLINE __m128d _mm_round_pd(__m128d a, int rounding) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + switch (rounding) { + case (_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC): + return vreinterpretq_m128d_f64(vrndnq_f64(vreinterpretq_f64_m128d(a))); + case (_MM_FROUND_TO_NEG_INF | _MM_FROUND_NO_EXC): + return _mm_floor_pd(a); + case (_MM_FROUND_TO_POS_INF | _MM_FROUND_NO_EXC): + return _mm_ceil_pd(a); + case (_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC): + return vreinterpretq_m128d_f64(vrndq_f64(vreinterpretq_f64_m128d(a))); + default: //_MM_FROUND_CUR_DIRECTION + return vreinterpretq_m128d_f64(vrndiq_f64(vreinterpretq_f64_m128d(a))); + } +#else + double *v_double = (double *) &a; + + if (rounding == (_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC) || + (rounding == _MM_FROUND_CUR_DIRECTION && + _MM_GET_ROUNDING_MODE() == _MM_ROUND_NEAREST)) { + double res[2], tmp; + for (int i = 0; i < 2; i++) { + tmp = (v_double[i] < 0) ? -v_double[i] : v_double[i]; + double roundDown = floor(tmp); // Round down value + double roundUp = ceil(tmp); // Round up value + double diffDown = tmp - roundDown; + double diffUp = roundUp - tmp; + if (diffDown < diffUp) { + /* If it's closer to the round down value, then use it */ + res[i] = roundDown; + } else if (diffDown > diffUp) { + /* If it's closer to the round up value, then use it */ + res[i] = roundUp; + } else { + /* If it's equidistant between round up and round down value, + * pick the one which is an even number */ + double half = roundDown / 2; + if (half != floor(half)) { + /* If the round down value is odd, return the round up value + */ + res[i] = roundUp; + } else { + /* If the round up value is odd, return the round down value + */ + res[i] = roundDown; + } + } + res[i] = (v_double[i] < 0) ? -res[i] : res[i]; + } + return _mm_set_pd(res[1], res[0]); + } else if (rounding == (_MM_FROUND_TO_NEG_INF | _MM_FROUND_NO_EXC) || + (rounding == _MM_FROUND_CUR_DIRECTION && + _MM_GET_ROUNDING_MODE() == _MM_ROUND_DOWN)) { + return _mm_floor_pd(a); + } else if (rounding == (_MM_FROUND_TO_POS_INF | _MM_FROUND_NO_EXC) || + (rounding == _MM_FROUND_CUR_DIRECTION && + _MM_GET_ROUNDING_MODE() == _MM_ROUND_UP)) { + return _mm_ceil_pd(a); + } + return _mm_set_pd(v_double[1] > 0 ? floor(v_double[1]) : ceil(v_double[1]), + v_double[0] > 0 ? floor(v_double[0]) : ceil(v_double[0])); +#endif +} + +// Round the packed single-precision (32-bit) floating-point elements in a using +// the rounding parameter, and store the results as packed single-precision +// floating-point elements in dst. +// software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_round_ps +FORCE_INLINE __m128 _mm_round_ps(__m128 a, int rounding) +{ +#if (defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC)) || \ + defined(__ARM_FEATURE_DIRECTED_ROUNDING) + switch (rounding) { + case (_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC): + return vreinterpretq_m128_f32(vrndnq_f32(vreinterpretq_f32_m128(a))); + case (_MM_FROUND_TO_NEG_INF | _MM_FROUND_NO_EXC): + return _mm_floor_ps(a); + case (_MM_FROUND_TO_POS_INF | _MM_FROUND_NO_EXC): + return _mm_ceil_ps(a); + case (_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC): + return vreinterpretq_m128_f32(vrndq_f32(vreinterpretq_f32_m128(a))); + default: //_MM_FROUND_CUR_DIRECTION + return vreinterpretq_m128_f32(vrndiq_f32(vreinterpretq_f32_m128(a))); + } +#else + float *v_float = (float *) &a; + + if (rounding == (_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC) || + (rounding == _MM_FROUND_CUR_DIRECTION && + _MM_GET_ROUNDING_MODE() == _MM_ROUND_NEAREST)) { + uint32x4_t signmask = vdupq_n_u32(0x80000000); + float32x4_t half = vbslq_f32(signmask, vreinterpretq_f32_m128(a), + vdupq_n_f32(0.5f)); /* +/- 0.5 */ + int32x4_t r_normal = vcvtq_s32_f32(vaddq_f32( + vreinterpretq_f32_m128(a), half)); /* round to integer: [a + 0.5]*/ + int32x4_t r_trunc = vcvtq_s32_f32( + vreinterpretq_f32_m128(a)); /* truncate to integer: [a] */ + int32x4_t plusone = vreinterpretq_s32_u32(vshrq_n_u32( + vreinterpretq_u32_s32(vnegq_s32(r_trunc)), 31)); /* 1 or 0 */ + int32x4_t r_even = vbicq_s32(vaddq_s32(r_trunc, plusone), + vdupq_n_s32(1)); /* ([a] + {0,1}) & ~1 */ + float32x4_t delta = vsubq_f32( + vreinterpretq_f32_m128(a), + vcvtq_f32_s32(r_trunc)); /* compute delta: delta = (a - [a]) */ + uint32x4_t is_delta_half = + vceqq_f32(delta, half); /* delta == +/- 0.5 */ + return vreinterpretq_m128_f32( + vcvtq_f32_s32(vbslq_s32(is_delta_half, r_even, r_normal))); + } else if (rounding == (_MM_FROUND_TO_NEG_INF | _MM_FROUND_NO_EXC) || + (rounding == _MM_FROUND_CUR_DIRECTION && + _MM_GET_ROUNDING_MODE() == _MM_ROUND_DOWN)) { + return _mm_floor_ps(a); + } else if (rounding == (_MM_FROUND_TO_POS_INF | _MM_FROUND_NO_EXC) || + (rounding == _MM_FROUND_CUR_DIRECTION && + _MM_GET_ROUNDING_MODE() == _MM_ROUND_UP)) { + return _mm_ceil_ps(a); + } + return _mm_set_ps(v_float[3] > 0 ? floorf(v_float[3]) : ceilf(v_float[3]), + v_float[2] > 0 ? floorf(v_float[2]) : ceilf(v_float[2]), + v_float[1] > 0 ? floorf(v_float[1]) : ceilf(v_float[1]), + v_float[0] > 0 ? floorf(v_float[0]) : ceilf(v_float[0])); +#endif +} + +// Round the lower double-precision (64-bit) floating-point element in b using +// the rounding parameter, store the result as a double-precision floating-point +// element in the lower element of dst, and copy the upper element from a to the +// upper element of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_round_sd +FORCE_INLINE __m128d _mm_round_sd(__m128d a, __m128d b, int rounding) +{ + return _mm_move_sd(a, _mm_round_pd(b, rounding)); +} + +// Round the lower single-precision (32-bit) floating-point element in b using +// the rounding parameter, store the result as a single-precision floating-point +// element in the lower element of dst, and copy the upper 3 packed elements +// from a to the upper elements of dst. Rounding is done according to the +// rounding[3:0] parameter, which can be one of: +// (_MM_FROUND_TO_NEAREST_INT |_MM_FROUND_NO_EXC) // round to nearest, and +// suppress exceptions +// (_MM_FROUND_TO_NEG_INF |_MM_FROUND_NO_EXC) // round down, and +// suppress exceptions +// (_MM_FROUND_TO_POS_INF |_MM_FROUND_NO_EXC) // round up, and suppress +// exceptions +// (_MM_FROUND_TO_ZERO |_MM_FROUND_NO_EXC) // truncate, and suppress +// exceptions _MM_FROUND_CUR_DIRECTION // use MXCSR.RC; see +// _MM_SET_ROUNDING_MODE +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_round_ss +FORCE_INLINE __m128 _mm_round_ss(__m128 a, __m128 b, int rounding) +{ + return _mm_move_ss(a, _mm_round_ps(b, rounding)); +} + +// Load 128-bits of integer data from memory into dst using a non-temporal +// memory hint. mem_addr must be aligned on a 16-byte boundary or a +// general-protection exception may be generated. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_stream_load_si128 +FORCE_INLINE __m128i _mm_stream_load_si128(__m128i *p) +{ +#if __has_builtin(__builtin_nontemporal_store) + return __builtin_nontemporal_load(p); +#else + return vreinterpretq_m128i_s64(vld1q_s64((int64_t *) p)); +#endif +} + +// Compute the bitwise NOT of a and then AND with a 128-bit vector containing +// all 1's, and return 1 if the result is zero, otherwise return 0. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_test_all_ones +FORCE_INLINE int _mm_test_all_ones(__m128i a) +{ + return (uint64_t) (vgetq_lane_s64(a, 0) & vgetq_lane_s64(a, 1)) == + ~(uint64_t) 0; +} + +// Compute the bitwise AND of 128 bits (representing integer data) in a and +// mask, and return 1 if the result is zero, otherwise return 0. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_test_all_zeros +FORCE_INLINE int _mm_test_all_zeros(__m128i a, __m128i mask) +{ + int64x2_t a_and_mask = + vandq_s64(vreinterpretq_s64_m128i(a), vreinterpretq_s64_m128i(mask)); + return !(vgetq_lane_s64(a_and_mask, 0) | vgetq_lane_s64(a_and_mask, 1)); +} + +// Compute the bitwise AND of 128 bits (representing integer data) in a and +// mask, and set ZF to 1 if the result is zero, otherwise set ZF to 0. Compute +// the bitwise NOT of a and then AND with mask, and set CF to 1 if the result is +// zero, otherwise set CF to 0. Return 1 if both the ZF and CF values are zero, +// otherwise return 0. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_test_mix_ones_zero +// Note: Argument names may be wrong in the Intel intrinsics guide. +FORCE_INLINE int _mm_test_mix_ones_zeros(__m128i a, __m128i mask) +{ + uint64x2_t v = vreinterpretq_u64_m128i(a); + uint64x2_t m = vreinterpretq_u64_m128i(mask); + + // find ones (set-bits) and zeros (clear-bits) under clip mask + uint64x2_t ones = vandq_u64(m, v); + uint64x2_t zeros = vbicq_u64(m, v); + + // If both 128-bit variables are populated (non-zero) then return 1. + // For comparison purposes, first compact each var down to 32-bits. + uint32x2_t reduced = vpmax_u32(vqmovn_u64(ones), vqmovn_u64(zeros)); + + // if folding minimum is non-zero then both vars must be non-zero + return (vget_lane_u32(vpmin_u32(reduced, reduced), 0) != 0); +} + +// Compute the bitwise AND of 128 bits (representing integer data) in a and b, +// and set ZF to 1 if the result is zero, otherwise set ZF to 0. Compute the +// bitwise NOT of a and then AND with b, and set CF to 1 if the result is zero, +// otherwise set CF to 0. Return the CF value. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_testc_si128 +FORCE_INLINE int _mm_testc_si128(__m128i a, __m128i b) +{ + int64x2_t s64_vec = + vbicq_s64(vreinterpretq_s64_m128i(b), vreinterpretq_s64_m128i(a)); + return !(vgetq_lane_s64(s64_vec, 0) | vgetq_lane_s64(s64_vec, 1)); +} + +// Compute the bitwise AND of 128 bits (representing integer data) in a and b, +// and set ZF to 1 if the result is zero, otherwise set ZF to 0. Compute the +// bitwise NOT of a and then AND with b, and set CF to 1 if the result is zero, +// otherwise set CF to 0. Return 1 if both the ZF and CF values are zero, +// otherwise return 0. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_testnzc_si128 +#define _mm_testnzc_si128(a, b) _mm_test_mix_ones_zeros(a, b) + +// Compute the bitwise AND of 128 bits (representing integer data) in a and b, +// and set ZF to 1 if the result is zero, otherwise set ZF to 0. Compute the +// bitwise NOT of a and then AND with b, and set CF to 1 if the result is zero, +// otherwise set CF to 0. Return the ZF value. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_testz_si128 +FORCE_INLINE int _mm_testz_si128(__m128i a, __m128i b) +{ + int64x2_t s64_vec = + vandq_s64(vreinterpretq_s64_m128i(a), vreinterpretq_s64_m128i(b)); + return !(vgetq_lane_s64(s64_vec, 0) | vgetq_lane_s64(s64_vec, 1)); +} + +/* SSE4.2 */ + +static const uint16_t ALIGN_STRUCT(16) _sse2neon_cmpestr_mask16b[8] = { + 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, +}; +static const uint8_t ALIGN_STRUCT(16) _sse2neon_cmpestr_mask8b[16] = { + 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, + 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, +}; + +/* specify the source data format */ +#define _SIDD_UBYTE_OPS 0x00 /* unsigned 8-bit characters */ +#define _SIDD_UWORD_OPS 0x01 /* unsigned 16-bit characters */ +#define _SIDD_SBYTE_OPS 0x02 /* signed 8-bit characters */ +#define _SIDD_SWORD_OPS 0x03 /* signed 16-bit characters */ + +/* specify the comparison operation */ +#define _SIDD_CMP_EQUAL_ANY 0x00 /* compare equal any: strchr */ +#define _SIDD_CMP_RANGES 0x04 /* compare ranges */ +#define _SIDD_CMP_EQUAL_EACH 0x08 /* compare equal each: strcmp */ +#define _SIDD_CMP_EQUAL_ORDERED 0x0C /* compare equal ordered */ + +/* specify the polarity */ +#define _SIDD_POSITIVE_POLARITY 0x00 +#define _SIDD_MASKED_POSITIVE_POLARITY 0x20 +#define _SIDD_NEGATIVE_POLARITY 0x10 /* negate results */ +#define _SIDD_MASKED_NEGATIVE_POLARITY \ + 0x30 /* negate results only before end of string */ + +/* specify the output selection in _mm_cmpXstri */ +#define _SIDD_LEAST_SIGNIFICANT 0x00 +#define _SIDD_MOST_SIGNIFICANT 0x40 + +/* specify the output selection in _mm_cmpXstrm */ +#define _SIDD_BIT_MASK 0x00 +#define _SIDD_UNIT_MASK 0x40 + +/* Pattern Matching for C macros. + * https://github.com/pfultz2/Cloak/wiki/C-Preprocessor-tricks,-tips,-and-idioms + */ + +/* catenate */ +#define SSE2NEON_PRIMITIVE_CAT(a, ...) a##__VA_ARGS__ +#define SSE2NEON_CAT(a, b) SSE2NEON_PRIMITIVE_CAT(a, b) + +#define SSE2NEON_IIF(c) SSE2NEON_PRIMITIVE_CAT(SSE2NEON_IIF_, c) +/* run the 2nd parameter */ +#define SSE2NEON_IIF_0(t, ...) __VA_ARGS__ +/* run the 1st parameter */ +#define SSE2NEON_IIF_1(t, ...) t + +#define SSE2NEON_COMPL(b) SSE2NEON_PRIMITIVE_CAT(SSE2NEON_COMPL_, b) +#define SSE2NEON_COMPL_0 1 +#define SSE2NEON_COMPL_1 0 + +#define SSE2NEON_DEC(x) SSE2NEON_PRIMITIVE_CAT(SSE2NEON_DEC_, x) +#define SSE2NEON_DEC_1 0 +#define SSE2NEON_DEC_2 1 +#define SSE2NEON_DEC_3 2 +#define SSE2NEON_DEC_4 3 +#define SSE2NEON_DEC_5 4 +#define SSE2NEON_DEC_6 5 +#define SSE2NEON_DEC_7 6 +#define SSE2NEON_DEC_8 7 +#define SSE2NEON_DEC_9 8 +#define SSE2NEON_DEC_10 9 +#define SSE2NEON_DEC_11 10 +#define SSE2NEON_DEC_12 11 +#define SSE2NEON_DEC_13 12 +#define SSE2NEON_DEC_14 13 +#define SSE2NEON_DEC_15 14 +#define SSE2NEON_DEC_16 15 + +/* detection */ +#define SSE2NEON_CHECK_N(x, n, ...) n +#define SSE2NEON_CHECK(...) SSE2NEON_CHECK_N(__VA_ARGS__, 0, ) +#define SSE2NEON_PROBE(x) x, 1, + +#define SSE2NEON_NOT(x) SSE2NEON_CHECK(SSE2NEON_PRIMITIVE_CAT(SSE2NEON_NOT_, x)) +#define SSE2NEON_NOT_0 SSE2NEON_PROBE(~) + +#define SSE2NEON_BOOL(x) SSE2NEON_COMPL(SSE2NEON_NOT(x)) +#define SSE2NEON_IF(c) SSE2NEON_IIF(SSE2NEON_BOOL(c)) + +#define SSE2NEON_EAT(...) +#define SSE2NEON_EXPAND(...) __VA_ARGS__ +#define SSE2NEON_WHEN(c) SSE2NEON_IF(c)(SSE2NEON_EXPAND, SSE2NEON_EAT) + +/* recursion */ +/* deferred expression */ +#define SSE2NEON_EMPTY() +#define SSE2NEON_DEFER(id) id SSE2NEON_EMPTY() +#define SSE2NEON_OBSTRUCT(...) __VA_ARGS__ SSE2NEON_DEFER(SSE2NEON_EMPTY)() +#define SSE2NEON_EXPAND(...) __VA_ARGS__ + +#define SSE2NEON_EVAL(...) \ + SSE2NEON_EVAL1(SSE2NEON_EVAL1(SSE2NEON_EVAL1(__VA_ARGS__))) +#define SSE2NEON_EVAL1(...) \ + SSE2NEON_EVAL2(SSE2NEON_EVAL2(SSE2NEON_EVAL2(__VA_ARGS__))) +#define SSE2NEON_EVAL2(...) \ + SSE2NEON_EVAL3(SSE2NEON_EVAL3(SSE2NEON_EVAL3(__VA_ARGS__))) +#define SSE2NEON_EVAL3(...) __VA_ARGS__ + +#define SSE2NEON_REPEAT(count, macro, ...) \ + SSE2NEON_WHEN(count) \ + (SSE2NEON_OBSTRUCT(SSE2NEON_REPEAT_INDIRECT)()( \ + SSE2NEON_DEC(count), macro, \ + __VA_ARGS__) SSE2NEON_OBSTRUCT(macro)(SSE2NEON_DEC(count), \ + __VA_ARGS__)) +#define SSE2NEON_REPEAT_INDIRECT() SSE2NEON_REPEAT + +#define SSE2NEON_SIZE_OF_byte 8 +#define SSE2NEON_NUMBER_OF_LANES_byte 16 +#define SSE2NEON_SIZE_OF_word 16 +#define SSE2NEON_NUMBER_OF_LANES_word 8 + +#define SSE2NEON_COMPARE_EQUAL_THEN_FILL_LANE(i, type) \ + mtx[i] = vreinterpretq_m128i_##type(vceqq_##type( \ + vdupq_n_##type(vgetq_lane_##type(vreinterpretq_##type##_m128i(b), i)), \ + vreinterpretq_##type##_m128i(a))); + +#define SSE2NEON_FILL_LANE(i, type) \ + vec_b[i] = \ + vdupq_n_##type(vgetq_lane_##type(vreinterpretq_##type##_m128i(b), i)); + +#define PCMPSTR_RANGES(a, b, mtx, data_type_prefix, type_prefix, size, \ + number_of_lanes, byte_or_word) \ + do { \ + SSE2NEON_CAT( \ + data_type_prefix, \ + SSE2NEON_CAT(size, \ + SSE2NEON_CAT(x, SSE2NEON_CAT(number_of_lanes, _t)))) \ + vec_b[number_of_lanes]; \ + __m128i mask = SSE2NEON_IIF(byte_or_word)( \ + vreinterpretq_m128i_u16(vdupq_n_u16(0xff)), \ + vreinterpretq_m128i_u32(vdupq_n_u32(0xffff))); \ + SSE2NEON_EVAL(SSE2NEON_REPEAT(number_of_lanes, SSE2NEON_FILL_LANE, \ + SSE2NEON_CAT(type_prefix, size))) \ + for (int i = 0; i < number_of_lanes; i++) { \ + mtx[i] = SSE2NEON_CAT(vreinterpretq_m128i_u, \ + size)(SSE2NEON_CAT(vbslq_u, size)( \ + SSE2NEON_CAT(vreinterpretq_u, \ + SSE2NEON_CAT(size, _m128i))(mask), \ + SSE2NEON_CAT(vcgeq_, SSE2NEON_CAT(type_prefix, size))( \ + vec_b[i], \ + SSE2NEON_CAT( \ + vreinterpretq_, \ + SSE2NEON_CAT(type_prefix, \ + SSE2NEON_CAT(size, _m128i(a))))), \ + SSE2NEON_CAT(vcleq_, SSE2NEON_CAT(type_prefix, size))( \ + vec_b[i], \ + SSE2NEON_CAT( \ + vreinterpretq_, \ + SSE2NEON_CAT(type_prefix, \ + SSE2NEON_CAT(size, _m128i(a))))))); \ + } \ + } while (0) + +#define PCMPSTR_EQ(a, b, mtx, size, number_of_lanes) \ + do { \ + SSE2NEON_EVAL(SSE2NEON_REPEAT(number_of_lanes, \ + SSE2NEON_COMPARE_EQUAL_THEN_FILL_LANE, \ + SSE2NEON_CAT(u, size))) \ + } while (0) + +#define SSE2NEON_CMP_EQUAL_ANY_IMPL(type) \ + static uint16_t _sse2neon_cmp_##type##_equal_any(__m128i a, int la, \ + __m128i b, int lb) \ + { \ + __m128i mtx[16]; \ + PCMPSTR_EQ(a, b, mtx, SSE2NEON_CAT(SSE2NEON_SIZE_OF_, type), \ + SSE2NEON_CAT(SSE2NEON_NUMBER_OF_LANES_, type)); \ + return SSE2NEON_CAT( \ + _sse2neon_aggregate_equal_any_, \ + SSE2NEON_CAT( \ + SSE2NEON_CAT(SSE2NEON_SIZE_OF_, type), \ + SSE2NEON_CAT(x, SSE2NEON_CAT(SSE2NEON_NUMBER_OF_LANES_, \ + type))))(la, lb, mtx); \ + } + +#define SSE2NEON_CMP_RANGES_IMPL(type, data_type, us, byte_or_word) \ + static uint16_t _sse2neon_cmp_##us##type##_ranges(__m128i a, int la, \ + __m128i b, int lb) \ + { \ + __m128i mtx[16]; \ + PCMPSTR_RANGES( \ + a, b, mtx, data_type, us, SSE2NEON_CAT(SSE2NEON_SIZE_OF_, type), \ + SSE2NEON_CAT(SSE2NEON_NUMBER_OF_LANES_, type), byte_or_word); \ + return SSE2NEON_CAT( \ + _sse2neon_aggregate_ranges_, \ + SSE2NEON_CAT( \ + SSE2NEON_CAT(SSE2NEON_SIZE_OF_, type), \ + SSE2NEON_CAT(x, SSE2NEON_CAT(SSE2NEON_NUMBER_OF_LANES_, \ + type))))(la, lb, mtx); \ + } + +#define SSE2NEON_CMP_EQUAL_ORDERED_IMPL(type) \ + static uint16_t _sse2neon_cmp_##type##_equal_ordered(__m128i a, int la, \ + __m128i b, int lb) \ + { \ + __m128i mtx[16]; \ + PCMPSTR_EQ(a, b, mtx, SSE2NEON_CAT(SSE2NEON_SIZE_OF_, type), \ + SSE2NEON_CAT(SSE2NEON_NUMBER_OF_LANES_, type)); \ + return SSE2NEON_CAT( \ + _sse2neon_aggregate_equal_ordered_, \ + SSE2NEON_CAT( \ + SSE2NEON_CAT(SSE2NEON_SIZE_OF_, type), \ + SSE2NEON_CAT(x, \ + SSE2NEON_CAT(SSE2NEON_NUMBER_OF_LANES_, type))))( \ + SSE2NEON_CAT(SSE2NEON_NUMBER_OF_LANES_, type), la, lb, mtx); \ + } + +static uint16_t _sse2neon_aggregate_equal_any_8x16(int la, + int lb, + __m128i mtx[16]) +{ + uint16_t res = 0; + int m = (1 << la) - 1; + uint8x8_t vec_mask = vld1_u8(_sse2neon_cmpestr_mask8b); + uint8x8_t t_lo = vtst_u8(vdup_n_u8((uint8_t) (m & 0xff)), vec_mask); + uint8x8_t t_hi = vtst_u8(vdup_n_u8((uint8_t) (m >> 8)), vec_mask); + uint8x16_t vec = vcombine_u8(t_lo, t_hi); + for (int j = 0; j < lb; j++) { + mtx[j] = vreinterpretq_m128i_u8( + vandq_u8(vec, vreinterpretq_u8_m128i(mtx[j]))); + mtx[j] = vreinterpretq_m128i_u8( + vshrq_n_u8(vreinterpretq_u8_m128i(mtx[j]), 7)); + uint16_t tmp = + _sse2neon_vaddvq_u8(vreinterpretq_u8_m128i(mtx[j])) ? 1 : 0; + res |= (tmp << j); + } + return res; +} + +static uint16_t _sse2neon_aggregate_equal_any_16x8(int la, + int lb, + __m128i mtx[16]) +{ + uint16_t res = 0; + uint16_t m = (uint16_t) (1 << la) - 1; + uint16x8_t vec = + vtstq_u16(vdupq_n_u16(m), vld1q_u16(_sse2neon_cmpestr_mask16b)); + for (int j = 0; j < lb; j++) { + mtx[j] = vreinterpretq_m128i_u16( + vandq_u16(vec, vreinterpretq_u16_m128i(mtx[j]))); + mtx[j] = vreinterpretq_m128i_u16( + vshrq_n_u16(vreinterpretq_u16_m128i(mtx[j]), 15)); + uint16_t tmp = + _sse2neon_vaddvq_u16(vreinterpretq_u16_m128i(mtx[j])) ? 1 : 0; + res |= (tmp << j); + } + return res; +} + +/* clang-format off */ +#define SSE2NEON_GENERATE_CMP_EQUAL_ANY(prefix) \ + prefix##IMPL(byte) \ + prefix##IMPL(word) +/* clang-format on */ + +SSE2NEON_GENERATE_CMP_EQUAL_ANY(SSE2NEON_CMP_EQUAL_ANY_) + +static uint16_t _sse2neon_aggregate_ranges_16x8(int la, int lb, __m128i mtx[16]) +{ + uint16_t res = 0; + uint16_t m = (uint16_t) (1 << la) - 1; + uint16x8_t vec = + vtstq_u16(vdupq_n_u16(m), vld1q_u16(_sse2neon_cmpestr_mask16b)); + for (int j = 0; j < lb; j++) { + mtx[j] = vreinterpretq_m128i_u16( + vandq_u16(vec, vreinterpretq_u16_m128i(mtx[j]))); + mtx[j] = vreinterpretq_m128i_u16( + vshrq_n_u16(vreinterpretq_u16_m128i(mtx[j]), 15)); + __m128i tmp = vreinterpretq_m128i_u32( + vshrq_n_u32(vreinterpretq_u32_m128i(mtx[j]), 16)); + uint32x4_t vec_res = vandq_u32(vreinterpretq_u32_m128i(mtx[j]), + vreinterpretq_u32_m128i(tmp)); +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + uint16_t t = vaddvq_u32(vec_res) ? 1 : 0; +#else + uint64x2_t sumh = vpaddlq_u32(vec_res); + uint16_t t = vgetq_lane_u64(sumh, 0) + vgetq_lane_u64(sumh, 1); +#endif + res |= (t << j); + } + return res; +} + +static uint16_t _sse2neon_aggregate_ranges_8x16(int la, int lb, __m128i mtx[16]) +{ + uint16_t res = 0; + uint16_t m = (uint16_t) ((1 << la) - 1); + uint8x8_t vec_mask = vld1_u8(_sse2neon_cmpestr_mask8b); + uint8x8_t t_lo = vtst_u8(vdup_n_u8((uint8_t) (m & 0xff)), vec_mask); + uint8x8_t t_hi = vtst_u8(vdup_n_u8((uint8_t) (m >> 8)), vec_mask); + uint8x16_t vec = vcombine_u8(t_lo, t_hi); + for (int j = 0; j < lb; j++) { + mtx[j] = vreinterpretq_m128i_u8( + vandq_u8(vec, vreinterpretq_u8_m128i(mtx[j]))); + mtx[j] = vreinterpretq_m128i_u8( + vshrq_n_u8(vreinterpretq_u8_m128i(mtx[j]), 7)); + __m128i tmp = vreinterpretq_m128i_u16( + vshrq_n_u16(vreinterpretq_u16_m128i(mtx[j]), 8)); + uint16x8_t vec_res = vandq_u16(vreinterpretq_u16_m128i(mtx[j]), + vreinterpretq_u16_m128i(tmp)); + uint16_t t = _sse2neon_vaddvq_u16(vec_res) ? 1 : 0; + res |= (t << j); + } + return res; +} + +#define SSE2NEON_CMP_RANGES_IS_BYTE 1 +#define SSE2NEON_CMP_RANGES_IS_WORD 0 + +/* clang-format off */ +#define SSE2NEON_GENERATE_CMP_RANGES(prefix) \ + prefix##IMPL(byte, uint, u, prefix##IS_BYTE) \ + prefix##IMPL(byte, int, s, prefix##IS_BYTE) \ + prefix##IMPL(word, uint, u, prefix##IS_WORD) \ + prefix##IMPL(word, int, s, prefix##IS_WORD) +/* clang-format on */ + +SSE2NEON_GENERATE_CMP_RANGES(SSE2NEON_CMP_RANGES_) + +#undef SSE2NEON_CMP_RANGES_IS_BYTE +#undef SSE2NEON_CMP_RANGES_IS_WORD + +static uint16_t _sse2neon_cmp_byte_equal_each(__m128i a, + int la, + __m128i b, + int lb) +{ + uint8x16_t mtx = + vceqq_u8(vreinterpretq_u8_m128i(a), vreinterpretq_u8_m128i(b)); + uint16_t m0 = (la < lb) ? 0 : (uint16_t) ((1 << la) - (1 << lb)); + uint16_t m1 = (uint16_t) (0x10000 - (1 << la)); + uint16_t tb = (uint16_t) (0x10000 - (1 << lb)); + uint8x8_t vec_mask, vec0_lo, vec0_hi, vec1_lo, vec1_hi; + uint8x8_t tmp_lo, tmp_hi, res_lo, res_hi; + vec_mask = vld1_u8(_sse2neon_cmpestr_mask8b); + vec0_lo = vtst_u8(vdup_n_u8((uint8_t) m0), vec_mask); + vec0_hi = vtst_u8(vdup_n_u8((uint8_t) (m0 >> 8)), vec_mask); + vec1_lo = vtst_u8(vdup_n_u8((uint8_t) m1), vec_mask); + vec1_hi = vtst_u8(vdup_n_u8((uint8_t) (m1 >> 8)), vec_mask); + tmp_lo = vtst_u8(vdup_n_u8((uint8_t) tb), vec_mask); + tmp_hi = vtst_u8(vdup_n_u8((uint8_t) (tb >> 8)), vec_mask); + + res_lo = vbsl_u8(vec0_lo, vdup_n_u8(0), vget_low_u8(mtx)); + res_hi = vbsl_u8(vec0_hi, vdup_n_u8(0), vget_high_u8(mtx)); + res_lo = vbsl_u8(vec1_lo, tmp_lo, res_lo); + res_hi = vbsl_u8(vec1_hi, tmp_hi, res_hi); + res_lo = vand_u8(res_lo, vec_mask); + res_hi = vand_u8(res_hi, vec_mask); + + return _sse2neon_vaddv_u8(res_lo) + + (uint16_t) (_sse2neon_vaddv_u8(res_hi) << 8); +} + +static uint16_t _sse2neon_cmp_word_equal_each(__m128i a, + int la, + __m128i b, + int lb) +{ + uint16x8_t mtx = + vceqq_u16(vreinterpretq_u16_m128i(a), vreinterpretq_u16_m128i(b)); + uint16_t m0 = (uint16_t) ((la < lb) ? 0 : ((1 << la) - (1 << lb))); + uint16_t m1 = (uint16_t) (0x100 - (1 << la)); + uint16_t tb = (uint16_t) (0x100 - (1 << lb)); + uint16x8_t vec_mask = vld1q_u16(_sse2neon_cmpestr_mask16b); + uint16x8_t vec0 = vtstq_u16(vdupq_n_u16(m0), vec_mask); + uint16x8_t vec1 = vtstq_u16(vdupq_n_u16(m1), vec_mask); + uint16x8_t tmp = vtstq_u16(vdupq_n_u16(tb), vec_mask); + mtx = vbslq_u16(vec0, vdupq_n_u16(0), mtx); + mtx = vbslq_u16(vec1, tmp, mtx); + mtx = vandq_u16(mtx, vec_mask); + return _sse2neon_vaddvq_u16(mtx); +} + +#define SSE2NEON_AGGREGATE_EQUAL_ORDER_IS_UBYTE 1 +#define SSE2NEON_AGGREGATE_EQUAL_ORDER_IS_UWORD 0 + +#define SSE2NEON_AGGREGATE_EQUAL_ORDER_IMPL(size, number_of_lanes, data_type) \ + static uint16_t \ + _sse2neon_aggregate_equal_ordered_##size##x##number_of_lanes( \ + int bound, int la, int lb, __m128i mtx[16]) \ + { \ + uint16_t res = 0; \ + uint16_t m1 = \ + (uint16_t) (SSE2NEON_IIF(data_type)(0x10000, 0x100) - (1 << la)); \ + uint##size##x8_t vec_mask = SSE2NEON_IIF(data_type)( \ + vld1_u##size(_sse2neon_cmpestr_mask##size##b), \ + vld1q_u##size(_sse2neon_cmpestr_mask##size##b)); \ + uint##size##x##number_of_lanes##_t vec1 = SSE2NEON_IIF(data_type)( \ + vcombine_u##size( \ + vtst_u##size(vdup_n_u##size((uint##size##_t) m1), vec_mask), \ + vtst_u##size(vdup_n_u##size((uint##size##_t)(m1 >> 8)), \ + vec_mask)), \ + vtstq_u##size(vdupq_n_u##size((uint##size##_t) m1), vec_mask)); \ + uint##size##x##number_of_lanes##_t vec_minusone = vdupq_n_u##size(-1); \ + uint##size##x##number_of_lanes##_t vec_zero = vdupq_n_u##size(0); \ + for (int j = 0; j < lb; j++) { \ + mtx[j] = vreinterpretq_m128i_u##size(vbslq_u##size( \ + vec1, vec_minusone, vreinterpretq_u##size##_m128i(mtx[j]))); \ + } \ + for (int j = lb; j < bound; j++) { \ + mtx[j] = vreinterpretq_m128i_u##size( \ + vbslq_u##size(vec1, vec_minusone, vec_zero)); \ + } \ + unsigned SSE2NEON_IIF(data_type)(char, short) *ptr = \ + (unsigned SSE2NEON_IIF(data_type)(char, short) *) mtx; \ + for (int i = 0; i < bound; i++) { \ + int val = 1; \ + for (int j = 0, k = i; j < bound - i && k < bound; j++, k++) \ + val &= ptr[k * bound + j]; \ + res += (uint16_t) (val << i); \ + } \ + return res; \ + } + +/* clang-format off */ +#define SSE2NEON_GENERATE_AGGREGATE_EQUAL_ORDER(prefix) \ + prefix##IMPL(8, 16, prefix##IS_UBYTE) \ + prefix##IMPL(16, 8, prefix##IS_UWORD) +/* clang-format on */ + +SSE2NEON_GENERATE_AGGREGATE_EQUAL_ORDER(SSE2NEON_AGGREGATE_EQUAL_ORDER_) + +#undef SSE2NEON_AGGREGATE_EQUAL_ORDER_IS_UBYTE +#undef SSE2NEON_AGGREGATE_EQUAL_ORDER_IS_UWORD + +/* clang-format off */ +#define SSE2NEON_GENERATE_CMP_EQUAL_ORDERED(prefix) \ + prefix##IMPL(byte) \ + prefix##IMPL(word) +/* clang-format on */ + +SSE2NEON_GENERATE_CMP_EQUAL_ORDERED(SSE2NEON_CMP_EQUAL_ORDERED_) + +#define SSE2NEON_CMPESTR_LIST \ + _(CMP_UBYTE_EQUAL_ANY, cmp_byte_equal_any) \ + _(CMP_UWORD_EQUAL_ANY, cmp_word_equal_any) \ + _(CMP_SBYTE_EQUAL_ANY, cmp_byte_equal_any) \ + _(CMP_SWORD_EQUAL_ANY, cmp_word_equal_any) \ + _(CMP_UBYTE_RANGES, cmp_ubyte_ranges) \ + _(CMP_UWORD_RANGES, cmp_uword_ranges) \ + _(CMP_SBYTE_RANGES, cmp_sbyte_ranges) \ + _(CMP_SWORD_RANGES, cmp_sword_ranges) \ + _(CMP_UBYTE_EQUAL_EACH, cmp_byte_equal_each) \ + _(CMP_UWORD_EQUAL_EACH, cmp_word_equal_each) \ + _(CMP_SBYTE_EQUAL_EACH, cmp_byte_equal_each) \ + _(CMP_SWORD_EQUAL_EACH, cmp_word_equal_each) \ + _(CMP_UBYTE_EQUAL_ORDERED, cmp_byte_equal_ordered) \ + _(CMP_UWORD_EQUAL_ORDERED, cmp_word_equal_ordered) \ + _(CMP_SBYTE_EQUAL_ORDERED, cmp_byte_equal_ordered) \ + _(CMP_SWORD_EQUAL_ORDERED, cmp_word_equal_ordered) + +enum { +#define _(name, func_suffix) name, + SSE2NEON_CMPESTR_LIST +#undef _ +}; +typedef uint16_t (*cmpestr_func_t)(__m128i a, int la, __m128i b, int lb); +static cmpestr_func_t _sse2neon_cmpfunc_table[] = { +#define _(name, func_suffix) _sse2neon_##func_suffix, + SSE2NEON_CMPESTR_LIST +#undef _ +}; + +FORCE_INLINE uint16_t _sse2neon_sido_negative(int res, + int lb, + int imm8, + int bound) +{ + switch (imm8 & 0x30) { + case _SIDD_NEGATIVE_POLARITY: + res ^= 0xffffffff; + break; + case _SIDD_MASKED_NEGATIVE_POLARITY: + res ^= (1 << lb) - 1; + break; + default: + break; + } + + return (uint16_t) (res & ((bound == 8) ? 0xFF : 0xFFFF)); +} + +FORCE_INLINE int _sse2neon_clz(unsigned int x) +{ +#if defined(_MSC_VER) && !defined(__clang__) + unsigned long cnt = 0; + if (_BitScanReverse(&cnt, x)) + return 31 - cnt; + return 32; +#else + return x != 0 ? __builtin_clz(x) : 32; +#endif +} + +FORCE_INLINE int _sse2neon_ctz(unsigned int x) +{ +#if defined(_MSC_VER) && !defined(__clang__) + unsigned long cnt = 0; + if (_BitScanForward(&cnt, x)) + return cnt; + return 32; +#else + return x != 0 ? __builtin_ctz(x) : 32; +#endif +} + +FORCE_INLINE int _sse2neon_ctzll(unsigned long long x) +{ +#ifdef _MSC_VER + unsigned long cnt; +#if defined(SSE2NEON_HAS_BITSCAN64) + if (_BitScanForward64(&cnt, x)) + return (int) (cnt); +#else + if (_BitScanForward(&cnt, (unsigned long) (x))) + return (int) cnt; + if (_BitScanForward(&cnt, (unsigned long) (x >> 32))) + return (int) (cnt + 32); +#endif /* SSE2NEON_HAS_BITSCAN64 */ + return 64; +#else /* assume GNU compatible compilers */ + return x != 0 ? __builtin_ctzll(x) : 64; +#endif +} + +#define SSE2NEON_MIN(x, y) (x) < (y) ? (x) : (y) + +#define SSE2NEON_CMPSTR_SET_UPPER(var, imm) \ + const int var = ((imm) & 0x01) ? 8 : 16 + +#define SSE2NEON_CMPESTRX_LEN_PAIR(a, b, la, lb) \ + int tmp1 = la ^ (la >> 31); \ + la = tmp1 - (la >> 31); \ + int tmp2 = lb ^ (lb >> 31); \ + lb = tmp2 - (lb >> 31); \ + la = SSE2NEON_MIN(la, bound); \ + lb = SSE2NEON_MIN(lb, bound) + +// Compare all pairs of character in string a and b, +// then aggregate the result. +// As the only difference of PCMPESTR* and PCMPISTR* is the way to calculate the +// length of string, we use SSE2NEON_CMP{I,E}STRX_GET_LEN to get the length of +// string a and b. +#define SSE2NEON_COMP_AGG(a, b, la, lb, imm8, IE) \ + SSE2NEON_CMPSTR_SET_UPPER(bound, imm8); \ + SSE2NEON_##IE##_LEN_PAIR(a, b, la, lb); \ + uint16_t r2 = (_sse2neon_cmpfunc_table[(imm8) & 0x0f])(a, la, b, lb); \ + r2 = _sse2neon_sido_negative(r2, lb, imm8, bound) + +#define SSE2NEON_CMPSTR_GENERATE_INDEX(r2, bound, imm8) \ + return (r2 == 0) ? bound \ + : (((imm8) & 0x40) ? (31 - _sse2neon_clz(r2)) \ + : _sse2neon_ctz(r2)) + +#define SSE2NEON_CMPSTR_GENERATE_MASK(dst) \ + __m128i dst = vreinterpretq_m128i_u8(vdupq_n_u8(0)); \ + if ((imm8) & 0x40) { \ + if (bound == 8) { \ + uint16x8_t tmp = vtstq_u16(vdupq_n_u16(r2), \ + vld1q_u16(_sse2neon_cmpestr_mask16b)); \ + dst = vreinterpretq_m128i_u16(vbslq_u16( \ + tmp, vdupq_n_u16(-1), vreinterpretq_u16_m128i(dst))); \ + } else { \ + uint8x16_t vec_r2 = vcombine_u8(vdup_n_u8((uint8_t) r2), \ + vdup_n_u8((uint8_t) (r2 >> 8))); \ + uint8x16_t tmp = \ + vtstq_u8(vec_r2, vld1q_u8(_sse2neon_cmpestr_mask8b)); \ + dst = vreinterpretq_m128i_u8( \ + vbslq_u8(tmp, vdupq_n_u8(-1), vreinterpretq_u8_m128i(dst))); \ + } \ + } else { \ + if (bound == 16) { \ + dst = vreinterpretq_m128i_u16( \ + vsetq_lane_u16(r2 & 0xffff, vreinterpretq_u16_m128i(dst), 0)); \ + } else { \ + dst = vreinterpretq_m128i_u8(vsetq_lane_u8( \ + (uint8_t) (r2 & 0xff), vreinterpretq_u8_m128i(dst), 0)); \ + } \ + } \ + return dst + +// Compare packed strings in a and b with lengths la and lb using the control +// in imm8, and returns 1 if b did not contain a null character and the +// resulting mask was zero, and 0 otherwise. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpestra +FORCE_INLINE int _mm_cmpestra(__m128i a, + int la, + __m128i b, + int lb, + const int imm8) +{ + int lb_cpy = lb; + SSE2NEON_COMP_AGG(a, b, la, lb, imm8, CMPESTRX); + return !r2 & (lb_cpy > bound); +} + +// Compare packed strings in a and b with lengths la and lb using the control in +// imm8, and returns 1 if the resulting mask was non-zero, and 0 otherwise. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpestrc +FORCE_INLINE int _mm_cmpestrc(__m128i a, + int la, + __m128i b, + int lb, + const int imm8) +{ + SSE2NEON_COMP_AGG(a, b, la, lb, imm8, CMPESTRX); + return r2 != 0; +} + +// Compare packed strings in a and b with lengths la and lb using the control +// in imm8, and store the generated index in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpestri +FORCE_INLINE int _mm_cmpestri(__m128i a, + int la, + __m128i b, + int lb, + const int imm8) +{ + SSE2NEON_COMP_AGG(a, b, la, lb, imm8, CMPESTRX); + SSE2NEON_CMPSTR_GENERATE_INDEX(r2, bound, imm8); +} + +// Compare packed strings in a and b with lengths la and lb using the control +// in imm8, and store the generated mask in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpestrm +FORCE_INLINE __m128i +_mm_cmpestrm(__m128i a, int la, __m128i b, int lb, const int imm8) +{ + SSE2NEON_COMP_AGG(a, b, la, lb, imm8, CMPESTRX); + SSE2NEON_CMPSTR_GENERATE_MASK(dst); +} + +// Compare packed strings in a and b with lengths la and lb using the control in +// imm8, and returns bit 0 of the resulting bit mask. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpestro +FORCE_INLINE int _mm_cmpestro(__m128i a, + int la, + __m128i b, + int lb, + const int imm8) +{ + SSE2NEON_COMP_AGG(a, b, la, lb, imm8, CMPESTRX); + return r2 & 1; +} + +// Compare packed strings in a and b with lengths la and lb using the control in +// imm8, and returns 1 if any character in a was null, and 0 otherwise. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpestrs +FORCE_INLINE int _mm_cmpestrs(__m128i a, + int la, + __m128i b, + int lb, + const int imm8) +{ + (void) a; + (void) b; + (void) lb; + SSE2NEON_CMPSTR_SET_UPPER(bound, imm8); + return la <= (bound - 1); +} + +// Compare packed strings in a and b with lengths la and lb using the control in +// imm8, and returns 1 if any character in b was null, and 0 otherwise. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpestrz +FORCE_INLINE int _mm_cmpestrz(__m128i a, + int la, + __m128i b, + int lb, + const int imm8) +{ + (void) a; + (void) b; + (void) la; + SSE2NEON_CMPSTR_SET_UPPER(bound, imm8); + return lb <= (bound - 1); +} + +#define SSE2NEON_CMPISTRX_LENGTH(str, len, imm8) \ + do { \ + if ((imm8) & 0x01) { \ + uint16x8_t equal_mask_##str = \ + vceqq_u16(vreinterpretq_u16_m128i(str), vdupq_n_u16(0)); \ + uint8x8_t res_##str = vshrn_n_u16(equal_mask_##str, 4); \ + uint64_t matches_##str = \ + vget_lane_u64(vreinterpret_u64_u8(res_##str), 0); \ + len = _sse2neon_ctzll(matches_##str) >> 3; \ + } else { \ + uint16x8_t equal_mask_##str = vreinterpretq_u16_u8( \ + vceqq_u8(vreinterpretq_u8_m128i(str), vdupq_n_u8(0))); \ + uint8x8_t res_##str = vshrn_n_u16(equal_mask_##str, 4); \ + uint64_t matches_##str = \ + vget_lane_u64(vreinterpret_u64_u8(res_##str), 0); \ + len = _sse2neon_ctzll(matches_##str) >> 2; \ + } \ + } while (0) + +#define SSE2NEON_CMPISTRX_LEN_PAIR(a, b, la, lb) \ + int la, lb; \ + do { \ + SSE2NEON_CMPISTRX_LENGTH(a, la, imm8); \ + SSE2NEON_CMPISTRX_LENGTH(b, lb, imm8); \ + } while (0) + +// Compare packed strings with implicit lengths in a and b using the control in +// imm8, and returns 1 if b did not contain a null character and the resulting +// mask was zero, and 0 otherwise. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpistra +FORCE_INLINE int _mm_cmpistra(__m128i a, __m128i b, const int imm8) +{ + SSE2NEON_COMP_AGG(a, b, la, lb, imm8, CMPISTRX); + return !r2 & (lb >= bound); +} + +// Compare packed strings with implicit lengths in a and b using the control in +// imm8, and returns 1 if the resulting mask was non-zero, and 0 otherwise. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpistrc +FORCE_INLINE int _mm_cmpistrc(__m128i a, __m128i b, const int imm8) +{ + SSE2NEON_COMP_AGG(a, b, la, lb, imm8, CMPISTRX); + return r2 != 0; +} + +// Compare packed strings with implicit lengths in a and b using the control in +// imm8, and store the generated index in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpistri +FORCE_INLINE int _mm_cmpistri(__m128i a, __m128i b, const int imm8) +{ + SSE2NEON_COMP_AGG(a, b, la, lb, imm8, CMPISTRX); + SSE2NEON_CMPSTR_GENERATE_INDEX(r2, bound, imm8); +} + +// Compare packed strings with implicit lengths in a and b using the control in +// imm8, and store the generated mask in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpistrm +FORCE_INLINE __m128i _mm_cmpistrm(__m128i a, __m128i b, const int imm8) +{ + SSE2NEON_COMP_AGG(a, b, la, lb, imm8, CMPISTRX); + SSE2NEON_CMPSTR_GENERATE_MASK(dst); +} + +// Compare packed strings with implicit lengths in a and b using the control in +// imm8, and returns bit 0 of the resulting bit mask. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpistro +FORCE_INLINE int _mm_cmpistro(__m128i a, __m128i b, const int imm8) +{ + SSE2NEON_COMP_AGG(a, b, la, lb, imm8, CMPISTRX); + return r2 & 1; +} + +// Compare packed strings with implicit lengths in a and b using the control in +// imm8, and returns 1 if any character in a was null, and 0 otherwise. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpistrs +FORCE_INLINE int _mm_cmpistrs(__m128i a, __m128i b, const int imm8) +{ + (void) b; + SSE2NEON_CMPSTR_SET_UPPER(bound, imm8); + int la; + SSE2NEON_CMPISTRX_LENGTH(a, la, imm8); + return la <= (bound - 1); +} + +// Compare packed strings with implicit lengths in a and b using the control in +// imm8, and returns 1 if any character in b was null, and 0 otherwise. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpistrz +FORCE_INLINE int _mm_cmpistrz(__m128i a, __m128i b, const int imm8) +{ + (void) a; + SSE2NEON_CMPSTR_SET_UPPER(bound, imm8); + int lb; + SSE2NEON_CMPISTRX_LENGTH(b, lb, imm8); + return lb <= (bound - 1); +} + +// Compares the 2 signed 64-bit integers in a and the 2 signed 64-bit integers +// in b for greater than. +FORCE_INLINE __m128i _mm_cmpgt_epi64(__m128i a, __m128i b) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + return vreinterpretq_m128i_u64( + vcgtq_s64(vreinterpretq_s64_m128i(a), vreinterpretq_s64_m128i(b))); +#else + return vreinterpretq_m128i_s64(vshrq_n_s64( + vqsubq_s64(vreinterpretq_s64_m128i(b), vreinterpretq_s64_m128i(a)), + 63)); +#endif +} + +// Starting with the initial value in crc, accumulates a CRC32 value for +// unsigned 16-bit integer v, and stores the result in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_crc32_u16 +FORCE_INLINE uint32_t _mm_crc32_u16(uint32_t crc, uint16_t v) +{ +#if defined(__aarch64__) && defined(__ARM_FEATURE_CRC32) + __asm__ __volatile__("crc32ch %w[c], %w[c], %w[v]\n\t" + : [c] "+r"(crc) + : [v] "r"(v)); +#elif ((__ARM_ARCH == 8) && defined(__ARM_FEATURE_CRC32)) || \ + ((defined(_M_ARM64) || defined(_M_ARM64EC)) && !defined(__clang__)) + crc = __crc32ch(crc, v); +#else + crc = _mm_crc32_u8(crc, (uint8_t) (v & 0xff)); + crc = _mm_crc32_u8(crc, (uint8_t) ((v >> 8) & 0xff)); +#endif + return crc; +} + +// Starting with the initial value in crc, accumulates a CRC32 value for +// unsigned 32-bit integer v, and stores the result in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_crc32_u32 +FORCE_INLINE uint32_t _mm_crc32_u32(uint32_t crc, uint32_t v) +{ +#if defined(__aarch64__) && defined(__ARM_FEATURE_CRC32) + __asm__ __volatile__("crc32cw %w[c], %w[c], %w[v]\n\t" + : [c] "+r"(crc) + : [v] "r"(v)); +#elif ((__ARM_ARCH == 8) && defined(__ARM_FEATURE_CRC32)) || \ + ((defined(_M_ARM64) || defined(_M_ARM64EC)) && !defined(__clang__)) + crc = __crc32cw(crc, v); +#else + crc = _mm_crc32_u16(crc, (uint16_t) (v & 0xffff)); + crc = _mm_crc32_u16(crc, (uint16_t) ((v >> 16) & 0xffff)); +#endif + return crc; +} + +// Starting with the initial value in crc, accumulates a CRC32 value for +// unsigned 64-bit integer v, and stores the result in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_crc32_u64 +FORCE_INLINE uint64_t _mm_crc32_u64(uint64_t crc, uint64_t v) +{ +#if defined(__aarch64__) && defined(__ARM_FEATURE_CRC32) + __asm__ __volatile__("crc32cx %w[c], %w[c], %x[v]\n\t" + : [c] "+r"(crc) + : [v] "r"(v)); +#elif ((defined(_M_ARM64) || defined(_M_ARM64EC)) && !defined(__clang__)) + crc = __crc32cd((uint32_t) crc, v); +#else + crc = _mm_crc32_u32((uint32_t) (crc), (uint32_t) (v & 0xffffffff)); + crc = _mm_crc32_u32((uint32_t) (crc), (uint32_t) ((v >> 32) & 0xffffffff)); +#endif + return crc; +} + +// Starting with the initial value in crc, accumulates a CRC32 value for +// unsigned 8-bit integer v, and stores the result in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_crc32_u8 +FORCE_INLINE uint32_t _mm_crc32_u8(uint32_t crc, uint8_t v) +{ +#if defined(__aarch64__) && defined(__ARM_FEATURE_CRC32) + __asm__ __volatile__("crc32cb %w[c], %w[c], %w[v]\n\t" + : [c] "+r"(crc) + : [v] "r"(v)); +#elif ((__ARM_ARCH == 8) && defined(__ARM_FEATURE_CRC32)) || \ + ((defined(_M_ARM64) || defined(_M_ARM64EC)) && !defined(__clang__)) + crc = __crc32cb(crc, v); +#else + crc ^= v; +#if defined(__ARM_FEATURE_CRYPTO) + // Adapted from: https://mary.rs/lab/crc32/ + // Barrent reduction + uint64x2_t orig = + vcombine_u64(vcreate_u64((uint64_t) (crc) << 24), vcreate_u64(0x0)); + uint64x2_t tmp = orig; + + // Polynomial P(x) of CRC32C + uint64_t p = 0x105EC76F1; + // Barrett Reduction (in bit-reflected form) constant mu_{64} = \lfloor + // 2^{64} / P(x) \rfloor = 0x11f91caf6 + uint64_t mu = 0x1dea713f1; + + // Multiply by mu_{64} + tmp = _sse2neon_vmull_p64(vget_low_u64(tmp), vcreate_u64(mu)); + // Divide by 2^{64} (mask away the unnecessary bits) + tmp = + vandq_u64(tmp, vcombine_u64(vcreate_u64(0xFFFFFFFF), vcreate_u64(0x0))); + // Multiply by P(x) (shifted left by 1 for alignment reasons) + tmp = _sse2neon_vmull_p64(vget_low_u64(tmp), vcreate_u64(p)); + // Subtract original from result + tmp = veorq_u64(tmp, orig); + + // Extract the 'lower' (in bit-reflected sense) 32 bits + crc = vgetq_lane_u32(vreinterpretq_u32_u64(tmp), 1); +#else // Fall back to the generic table lookup approach + // Adapted from: https://create.stephan-brumme.com/crc32/ + // Apply half-byte comparison algorithm for the best ratio between + // performance and lookup table. + + // The lookup table just needs to store every 16th entry + // of the standard look-up table. + static const uint32_t crc32_half_byte_tbl[] = { + 0x00000000, 0x105ec76f, 0x20bd8ede, 0x30e349b1, 0x417b1dbc, 0x5125dad3, + 0x61c69362, 0x7198540d, 0x82f63b78, 0x92a8fc17, 0xa24bb5a6, 0xb21572c9, + 0xc38d26c4, 0xd3d3e1ab, 0xe330a81a, 0xf36e6f75, + }; + + crc = (crc >> 4) ^ crc32_half_byte_tbl[crc & 0x0F]; + crc = (crc >> 4) ^ crc32_half_byte_tbl[crc & 0x0F]; +#endif +#endif + return crc; +} + +/* AES */ + +#if !defined(__ARM_FEATURE_CRYPTO) && \ + ((!defined(_M_ARM64) && !defined(_M_ARM64EC)) || defined(__clang__)) +/* clang-format off */ +#define SSE2NEON_AES_SBOX(w) \ + { \ + w(0x63), w(0x7c), w(0x77), w(0x7b), w(0xf2), w(0x6b), w(0x6f), \ + w(0xc5), w(0x30), w(0x01), w(0x67), w(0x2b), w(0xfe), w(0xd7), \ + w(0xab), w(0x76), w(0xca), w(0x82), w(0xc9), w(0x7d), w(0xfa), \ + w(0x59), w(0x47), w(0xf0), w(0xad), w(0xd4), w(0xa2), w(0xaf), \ + w(0x9c), w(0xa4), w(0x72), w(0xc0), w(0xb7), w(0xfd), w(0x93), \ + w(0x26), w(0x36), w(0x3f), w(0xf7), w(0xcc), w(0x34), w(0xa5), \ + w(0xe5), w(0xf1), w(0x71), w(0xd8), w(0x31), w(0x15), w(0x04), \ + w(0xc7), w(0x23), w(0xc3), w(0x18), w(0x96), w(0x05), w(0x9a), \ + w(0x07), w(0x12), w(0x80), w(0xe2), w(0xeb), w(0x27), w(0xb2), \ + w(0x75), w(0x09), w(0x83), w(0x2c), w(0x1a), w(0x1b), w(0x6e), \ + w(0x5a), w(0xa0), w(0x52), w(0x3b), w(0xd6), w(0xb3), w(0x29), \ + w(0xe3), w(0x2f), w(0x84), w(0x53), w(0xd1), w(0x00), w(0xed), \ + w(0x20), w(0xfc), w(0xb1), w(0x5b), w(0x6a), w(0xcb), w(0xbe), \ + w(0x39), w(0x4a), w(0x4c), w(0x58), w(0xcf), w(0xd0), w(0xef), \ + w(0xaa), w(0xfb), w(0x43), w(0x4d), w(0x33), w(0x85), w(0x45), \ + w(0xf9), w(0x02), w(0x7f), w(0x50), w(0x3c), w(0x9f), w(0xa8), \ + w(0x51), w(0xa3), w(0x40), w(0x8f), w(0x92), w(0x9d), w(0x38), \ + w(0xf5), w(0xbc), w(0xb6), w(0xda), w(0x21), w(0x10), w(0xff), \ + w(0xf3), w(0xd2), w(0xcd), w(0x0c), w(0x13), w(0xec), w(0x5f), \ + w(0x97), w(0x44), w(0x17), w(0xc4), w(0xa7), w(0x7e), w(0x3d), \ + w(0x64), w(0x5d), w(0x19), w(0x73), w(0x60), w(0x81), w(0x4f), \ + w(0xdc), w(0x22), w(0x2a), w(0x90), w(0x88), w(0x46), w(0xee), \ + w(0xb8), w(0x14), w(0xde), w(0x5e), w(0x0b), w(0xdb), w(0xe0), \ + w(0x32), w(0x3a), w(0x0a), w(0x49), w(0x06), w(0x24), w(0x5c), \ + w(0xc2), w(0xd3), w(0xac), w(0x62), w(0x91), w(0x95), w(0xe4), \ + w(0x79), w(0xe7), w(0xc8), w(0x37), w(0x6d), w(0x8d), w(0xd5), \ + w(0x4e), w(0xa9), w(0x6c), w(0x56), w(0xf4), w(0xea), w(0x65), \ + w(0x7a), w(0xae), w(0x08), w(0xba), w(0x78), w(0x25), w(0x2e), \ + w(0x1c), w(0xa6), w(0xb4), w(0xc6), w(0xe8), w(0xdd), w(0x74), \ + w(0x1f), w(0x4b), w(0xbd), w(0x8b), w(0x8a), w(0x70), w(0x3e), \ + w(0xb5), w(0x66), w(0x48), w(0x03), w(0xf6), w(0x0e), w(0x61), \ + w(0x35), w(0x57), w(0xb9), w(0x86), w(0xc1), w(0x1d), w(0x9e), \ + w(0xe1), w(0xf8), w(0x98), w(0x11), w(0x69), w(0xd9), w(0x8e), \ + w(0x94), w(0x9b), w(0x1e), w(0x87), w(0xe9), w(0xce), w(0x55), \ + w(0x28), w(0xdf), w(0x8c), w(0xa1), w(0x89), w(0x0d), w(0xbf), \ + w(0xe6), w(0x42), w(0x68), w(0x41), w(0x99), w(0x2d), w(0x0f), \ + w(0xb0), w(0x54), w(0xbb), w(0x16) \ + } +#define SSE2NEON_AES_RSBOX(w) \ + { \ + w(0x52), w(0x09), w(0x6a), w(0xd5), w(0x30), w(0x36), w(0xa5), \ + w(0x38), w(0xbf), w(0x40), w(0xa3), w(0x9e), w(0x81), w(0xf3), \ + w(0xd7), w(0xfb), w(0x7c), w(0xe3), w(0x39), w(0x82), w(0x9b), \ + w(0x2f), w(0xff), w(0x87), w(0x34), w(0x8e), w(0x43), w(0x44), \ + w(0xc4), w(0xde), w(0xe9), w(0xcb), w(0x54), w(0x7b), w(0x94), \ + w(0x32), w(0xa6), w(0xc2), w(0x23), w(0x3d), w(0xee), w(0x4c), \ + w(0x95), w(0x0b), w(0x42), w(0xfa), w(0xc3), w(0x4e), w(0x08), \ + w(0x2e), w(0xa1), w(0x66), w(0x28), w(0xd9), w(0x24), w(0xb2), \ + w(0x76), w(0x5b), w(0xa2), w(0x49), w(0x6d), w(0x8b), w(0xd1), \ + w(0x25), w(0x72), w(0xf8), w(0xf6), w(0x64), w(0x86), w(0x68), \ + w(0x98), w(0x16), w(0xd4), w(0xa4), w(0x5c), w(0xcc), w(0x5d), \ + w(0x65), w(0xb6), w(0x92), w(0x6c), w(0x70), w(0x48), w(0x50), \ + w(0xfd), w(0xed), w(0xb9), w(0xda), w(0x5e), w(0x15), w(0x46), \ + w(0x57), w(0xa7), w(0x8d), w(0x9d), w(0x84), w(0x90), w(0xd8), \ + w(0xab), w(0x00), w(0x8c), w(0xbc), w(0xd3), w(0x0a), w(0xf7), \ + w(0xe4), w(0x58), w(0x05), w(0xb8), w(0xb3), w(0x45), w(0x06), \ + w(0xd0), w(0x2c), w(0x1e), w(0x8f), w(0xca), w(0x3f), w(0x0f), \ + w(0x02), w(0xc1), w(0xaf), w(0xbd), w(0x03), w(0x01), w(0x13), \ + w(0x8a), w(0x6b), w(0x3a), w(0x91), w(0x11), w(0x41), w(0x4f), \ + w(0x67), w(0xdc), w(0xea), w(0x97), w(0xf2), w(0xcf), w(0xce), \ + w(0xf0), w(0xb4), w(0xe6), w(0x73), w(0x96), w(0xac), w(0x74), \ + w(0x22), w(0xe7), w(0xad), w(0x35), w(0x85), w(0xe2), w(0xf9), \ + w(0x37), w(0xe8), w(0x1c), w(0x75), w(0xdf), w(0x6e), w(0x47), \ + w(0xf1), w(0x1a), w(0x71), w(0x1d), w(0x29), w(0xc5), w(0x89), \ + w(0x6f), w(0xb7), w(0x62), w(0x0e), w(0xaa), w(0x18), w(0xbe), \ + w(0x1b), w(0xfc), w(0x56), w(0x3e), w(0x4b), w(0xc6), w(0xd2), \ + w(0x79), w(0x20), w(0x9a), w(0xdb), w(0xc0), w(0xfe), w(0x78), \ + w(0xcd), w(0x5a), w(0xf4), w(0x1f), w(0xdd), w(0xa8), w(0x33), \ + w(0x88), w(0x07), w(0xc7), w(0x31), w(0xb1), w(0x12), w(0x10), \ + w(0x59), w(0x27), w(0x80), w(0xec), w(0x5f), w(0x60), w(0x51), \ + w(0x7f), w(0xa9), w(0x19), w(0xb5), w(0x4a), w(0x0d), w(0x2d), \ + w(0xe5), w(0x7a), w(0x9f), w(0x93), w(0xc9), w(0x9c), w(0xef), \ + w(0xa0), w(0xe0), w(0x3b), w(0x4d), w(0xae), w(0x2a), w(0xf5), \ + w(0xb0), w(0xc8), w(0xeb), w(0xbb), w(0x3c), w(0x83), w(0x53), \ + w(0x99), w(0x61), w(0x17), w(0x2b), w(0x04), w(0x7e), w(0xba), \ + w(0x77), w(0xd6), w(0x26), w(0xe1), w(0x69), w(0x14), w(0x63), \ + w(0x55), w(0x21), w(0x0c), w(0x7d) \ + } +/* clang-format on */ + +/* X Macro trick. See https://en.wikipedia.org/wiki/X_Macro */ +#define SSE2NEON_AES_H0(x) (x) +static const uint8_t _sse2neon_sbox[256] = SSE2NEON_AES_SBOX(SSE2NEON_AES_H0); +static const uint8_t _sse2neon_rsbox[256] = SSE2NEON_AES_RSBOX(SSE2NEON_AES_H0); +#undef SSE2NEON_AES_H0 + +/* x_time function and matrix multiply function */ +#if !defined(__aarch64__) +#define SSE2NEON_XT(x) (((x) << 1) ^ ((((x) >> 7) & 1) * 0x1b)) +#define SSE2NEON_MULTIPLY(x, y) \ + (((y & 1) * x) ^ ((y >> 1 & 1) * SSE2NEON_XT(x)) ^ \ + ((y >> 2 & 1) * SSE2NEON_XT(SSE2NEON_XT(x))) ^ \ + ((y >> 3 & 1) * SSE2NEON_XT(SSE2NEON_XT(SSE2NEON_XT(x)))) ^ \ + ((y >> 4 & 1) * SSE2NEON_XT(SSE2NEON_XT(SSE2NEON_XT(SSE2NEON_XT(x)))))) +#endif + +// In the absence of crypto extensions, implement aesenc using regular NEON +// intrinsics instead. See: +// https://www.workofard.com/2017/01/accelerated-aes-for-the-arm64-linux-kernel/ +// https://www.workofard.com/2017/07/ghash-for-low-end-cores/ and +// for more information. +FORCE_INLINE __m128i _mm_aesenc_si128(__m128i a, __m128i RoundKey) +{ +#if defined(__aarch64__) + static const uint8_t shift_rows[] = { + 0x0, 0x5, 0xa, 0xf, 0x4, 0x9, 0xe, 0x3, + 0x8, 0xd, 0x2, 0x7, 0xc, 0x1, 0x6, 0xb, + }; + static const uint8_t ror32by8[] = { + 0x1, 0x2, 0x3, 0x0, 0x5, 0x6, 0x7, 0x4, + 0x9, 0xa, 0xb, 0x8, 0xd, 0xe, 0xf, 0xc, + }; + + uint8x16_t v; + uint8x16_t w = vreinterpretq_u8_m128i(a); + + /* shift rows */ + w = vqtbl1q_u8(w, vld1q_u8(shift_rows)); + + /* sub bytes */ + // Here, we separate the whole 256-bytes table into 4 64-bytes tables, and + // look up each of the table. After each lookup, we load the next table + // which locates at the next 64-bytes. In the meantime, the index in the + // table would be smaller than it was, so the index parameters of + // `vqtbx4q_u8()` need to be added the same constant as the loaded tables. + v = vqtbl4q_u8(_sse2neon_vld1q_u8_x4(_sse2neon_sbox), w); + // 'w-0x40' equals to 'vsubq_u8(w, vdupq_n_u8(0x40))' + v = vqtbx4q_u8(v, _sse2neon_vld1q_u8_x4(_sse2neon_sbox + 0x40), w - 0x40); + v = vqtbx4q_u8(v, _sse2neon_vld1q_u8_x4(_sse2neon_sbox + 0x80), w - 0x80); + v = vqtbx4q_u8(v, _sse2neon_vld1q_u8_x4(_sse2neon_sbox + 0xc0), w - 0xc0); + + /* mix columns */ + w = (v << 1) ^ (uint8x16_t) (((int8x16_t) v >> 7) & 0x1b); + w ^= (uint8x16_t) vrev32q_u16((uint16x8_t) v); + w ^= vqtbl1q_u8(v ^ w, vld1q_u8(ror32by8)); + + /* add round key */ + return vreinterpretq_m128i_u8(w) ^ RoundKey; + +#else /* ARMv7-A implementation for a table-based AES */ +#define SSE2NEON_AES_B2W(b0, b1, b2, b3) \ + (((uint32_t) (b3) << 24) | ((uint32_t) (b2) << 16) | \ + ((uint32_t) (b1) << 8) | (uint32_t) (b0)) +// multiplying 'x' by 2 in GF(2^8) +#define SSE2NEON_AES_F2(x) ((x << 1) ^ (((x >> 7) & 1) * 0x011b /* WPOLY */)) +// multiplying 'x' by 3 in GF(2^8) +#define SSE2NEON_AES_F3(x) (SSE2NEON_AES_F2(x) ^ x) +#define SSE2NEON_AES_U0(p) \ + SSE2NEON_AES_B2W(SSE2NEON_AES_F2(p), p, p, SSE2NEON_AES_F3(p)) +#define SSE2NEON_AES_U1(p) \ + SSE2NEON_AES_B2W(SSE2NEON_AES_F3(p), SSE2NEON_AES_F2(p), p, p) +#define SSE2NEON_AES_U2(p) \ + SSE2NEON_AES_B2W(p, SSE2NEON_AES_F3(p), SSE2NEON_AES_F2(p), p) +#define SSE2NEON_AES_U3(p) \ + SSE2NEON_AES_B2W(p, p, SSE2NEON_AES_F3(p), SSE2NEON_AES_F2(p)) + + // this generates a table containing every possible permutation of + // shift_rows() and sub_bytes() with mix_columns(). + static const uint32_t ALIGN_STRUCT(16) aes_table[4][256] = { + SSE2NEON_AES_SBOX(SSE2NEON_AES_U0), + SSE2NEON_AES_SBOX(SSE2NEON_AES_U1), + SSE2NEON_AES_SBOX(SSE2NEON_AES_U2), + SSE2NEON_AES_SBOX(SSE2NEON_AES_U3), + }; +#undef SSE2NEON_AES_B2W +#undef SSE2NEON_AES_F2 +#undef SSE2NEON_AES_F3 +#undef SSE2NEON_AES_U0 +#undef SSE2NEON_AES_U1 +#undef SSE2NEON_AES_U2 +#undef SSE2NEON_AES_U3 + + uint32_t x0 = _mm_cvtsi128_si32(a); // get a[31:0] + uint32_t x1 = + _mm_cvtsi128_si32(_mm_shuffle_epi32(a, 0x55)); // get a[63:32] + uint32_t x2 = + _mm_cvtsi128_si32(_mm_shuffle_epi32(a, 0xAA)); // get a[95:64] + uint32_t x3 = + _mm_cvtsi128_si32(_mm_shuffle_epi32(a, 0xFF)); // get a[127:96] + + // finish the modulo addition step in mix_columns() + __m128i out = _mm_set_epi32( + (aes_table[0][x3 & 0xff] ^ aes_table[1][(x0 >> 8) & 0xff] ^ + aes_table[2][(x1 >> 16) & 0xff] ^ aes_table[3][x2 >> 24]), + (aes_table[0][x2 & 0xff] ^ aes_table[1][(x3 >> 8) & 0xff] ^ + aes_table[2][(x0 >> 16) & 0xff] ^ aes_table[3][x1 >> 24]), + (aes_table[0][x1 & 0xff] ^ aes_table[1][(x2 >> 8) & 0xff] ^ + aes_table[2][(x3 >> 16) & 0xff] ^ aes_table[3][x0 >> 24]), + (aes_table[0][x0 & 0xff] ^ aes_table[1][(x1 >> 8) & 0xff] ^ + aes_table[2][(x2 >> 16) & 0xff] ^ aes_table[3][x3 >> 24])); + + return _mm_xor_si128(out, RoundKey); +#endif +} + +// Perform one round of an AES decryption flow on data (state) in a using the +// round key in RoundKey, and store the result in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_aesdec_si128 +FORCE_INLINE __m128i _mm_aesdec_si128(__m128i a, __m128i RoundKey) +{ +#if defined(__aarch64__) + static const uint8_t inv_shift_rows[] = { + 0x0, 0xd, 0xa, 0x7, 0x4, 0x1, 0xe, 0xb, + 0x8, 0x5, 0x2, 0xf, 0xc, 0x9, 0x6, 0x3, + }; + static const uint8_t ror32by8[] = { + 0x1, 0x2, 0x3, 0x0, 0x5, 0x6, 0x7, 0x4, + 0x9, 0xa, 0xb, 0x8, 0xd, 0xe, 0xf, 0xc, + }; + + uint8x16_t v; + uint8x16_t w = vreinterpretq_u8_m128i(a); + + // inverse shift rows + w = vqtbl1q_u8(w, vld1q_u8(inv_shift_rows)); + + // inverse sub bytes + v = vqtbl4q_u8(_sse2neon_vld1q_u8_x4(_sse2neon_rsbox), w); + v = vqtbx4q_u8(v, _sse2neon_vld1q_u8_x4(_sse2neon_rsbox + 0x40), w - 0x40); + v = vqtbx4q_u8(v, _sse2neon_vld1q_u8_x4(_sse2neon_rsbox + 0x80), w - 0x80); + v = vqtbx4q_u8(v, _sse2neon_vld1q_u8_x4(_sse2neon_rsbox + 0xc0), w - 0xc0); + + // inverse mix columns + // multiplying 'v' by 4 in GF(2^8) + w = (v << 1) ^ (uint8x16_t) (((int8x16_t) v >> 7) & 0x1b); + w = (w << 1) ^ (uint8x16_t) (((int8x16_t) w >> 7) & 0x1b); + v ^= w; + v ^= (uint8x16_t) vrev32q_u16((uint16x8_t) w); + + w = (v << 1) ^ (uint8x16_t) (((int8x16_t) v >> 7) & + 0x1b); // multiplying 'v' by 2 in GF(2^8) + w ^= (uint8x16_t) vrev32q_u16((uint16x8_t) v); + w ^= vqtbl1q_u8(v ^ w, vld1q_u8(ror32by8)); + + // add round key + return vreinterpretq_m128i_u8(w) ^ RoundKey; + +#else /* ARMv7-A NEON implementation */ + /* FIXME: optimized for NEON */ + uint8_t i, e, f, g, h, v[4][4]; + uint8_t *_a = (uint8_t *) &a; + for (i = 0; i < 16; ++i) { + v[((i / 4) + (i % 4)) % 4][i % 4] = _sse2neon_rsbox[_a[i]]; + } + + // inverse mix columns + for (i = 0; i < 4; ++i) { + e = v[i][0]; + f = v[i][1]; + g = v[i][2]; + h = v[i][3]; + + v[i][0] = SSE2NEON_MULTIPLY(e, 0x0e) ^ SSE2NEON_MULTIPLY(f, 0x0b) ^ + SSE2NEON_MULTIPLY(g, 0x0d) ^ SSE2NEON_MULTIPLY(h, 0x09); + v[i][1] = SSE2NEON_MULTIPLY(e, 0x09) ^ SSE2NEON_MULTIPLY(f, 0x0e) ^ + SSE2NEON_MULTIPLY(g, 0x0b) ^ SSE2NEON_MULTIPLY(h, 0x0d); + v[i][2] = SSE2NEON_MULTIPLY(e, 0x0d) ^ SSE2NEON_MULTIPLY(f, 0x09) ^ + SSE2NEON_MULTIPLY(g, 0x0e) ^ SSE2NEON_MULTIPLY(h, 0x0b); + v[i][3] = SSE2NEON_MULTIPLY(e, 0x0b) ^ SSE2NEON_MULTIPLY(f, 0x0d) ^ + SSE2NEON_MULTIPLY(g, 0x09) ^ SSE2NEON_MULTIPLY(h, 0x0e); + } + + return _mm_xor_si128(vreinterpretq_m128i_u8(vld1q_u8((uint8_t *) v)), + RoundKey); +#endif +} + +// Perform the last round of an AES encryption flow on data (state) in a using +// the round key in RoundKey, and store the result in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_aesenclast_si128 +FORCE_INLINE __m128i _mm_aesenclast_si128(__m128i a, __m128i RoundKey) +{ +#if defined(__aarch64__) + static const uint8_t shift_rows[] = { + 0x0, 0x5, 0xa, 0xf, 0x4, 0x9, 0xe, 0x3, + 0x8, 0xd, 0x2, 0x7, 0xc, 0x1, 0x6, 0xb, + }; + + uint8x16_t v; + uint8x16_t w = vreinterpretq_u8_m128i(a); + + // shift rows + w = vqtbl1q_u8(w, vld1q_u8(shift_rows)); + + // sub bytes + v = vqtbl4q_u8(_sse2neon_vld1q_u8_x4(_sse2neon_sbox), w); + v = vqtbx4q_u8(v, _sse2neon_vld1q_u8_x4(_sse2neon_sbox + 0x40), w - 0x40); + v = vqtbx4q_u8(v, _sse2neon_vld1q_u8_x4(_sse2neon_sbox + 0x80), w - 0x80); + v = vqtbx4q_u8(v, _sse2neon_vld1q_u8_x4(_sse2neon_sbox + 0xc0), w - 0xc0); + + // add round key + return vreinterpretq_m128i_u8(v) ^ RoundKey; + +#else /* ARMv7-A implementation */ + uint8_t v[16] = { + _sse2neon_sbox[vgetq_lane_u8(vreinterpretq_u8_m128i(a), 0)], + _sse2neon_sbox[vgetq_lane_u8(vreinterpretq_u8_m128i(a), 5)], + _sse2neon_sbox[vgetq_lane_u8(vreinterpretq_u8_m128i(a), 10)], + _sse2neon_sbox[vgetq_lane_u8(vreinterpretq_u8_m128i(a), 15)], + _sse2neon_sbox[vgetq_lane_u8(vreinterpretq_u8_m128i(a), 4)], + _sse2neon_sbox[vgetq_lane_u8(vreinterpretq_u8_m128i(a), 9)], + _sse2neon_sbox[vgetq_lane_u8(vreinterpretq_u8_m128i(a), 14)], + _sse2neon_sbox[vgetq_lane_u8(vreinterpretq_u8_m128i(a), 3)], + _sse2neon_sbox[vgetq_lane_u8(vreinterpretq_u8_m128i(a), 8)], + _sse2neon_sbox[vgetq_lane_u8(vreinterpretq_u8_m128i(a), 13)], + _sse2neon_sbox[vgetq_lane_u8(vreinterpretq_u8_m128i(a), 2)], + _sse2neon_sbox[vgetq_lane_u8(vreinterpretq_u8_m128i(a), 7)], + _sse2neon_sbox[vgetq_lane_u8(vreinterpretq_u8_m128i(a), 12)], + _sse2neon_sbox[vgetq_lane_u8(vreinterpretq_u8_m128i(a), 1)], + _sse2neon_sbox[vgetq_lane_u8(vreinterpretq_u8_m128i(a), 6)], + _sse2neon_sbox[vgetq_lane_u8(vreinterpretq_u8_m128i(a), 11)], + }; + + return _mm_xor_si128(vreinterpretq_m128i_u8(vld1q_u8(v)), RoundKey); +#endif +} + +// Perform the last round of an AES decryption flow on data (state) in a using +// the round key in RoundKey, and store the result in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_aesdeclast_si128 +FORCE_INLINE __m128i _mm_aesdeclast_si128(__m128i a, __m128i RoundKey) +{ +#if defined(__aarch64__) + static const uint8_t inv_shift_rows[] = { + 0x0, 0xd, 0xa, 0x7, 0x4, 0x1, 0xe, 0xb, + 0x8, 0x5, 0x2, 0xf, 0xc, 0x9, 0x6, 0x3, + }; + + uint8x16_t v; + uint8x16_t w = vreinterpretq_u8_m128i(a); + + // inverse shift rows + w = vqtbl1q_u8(w, vld1q_u8(inv_shift_rows)); + + // inverse sub bytes + v = vqtbl4q_u8(_sse2neon_vld1q_u8_x4(_sse2neon_rsbox), w); + v = vqtbx4q_u8(v, _sse2neon_vld1q_u8_x4(_sse2neon_rsbox + 0x40), w - 0x40); + v = vqtbx4q_u8(v, _sse2neon_vld1q_u8_x4(_sse2neon_rsbox + 0x80), w - 0x80); + v = vqtbx4q_u8(v, _sse2neon_vld1q_u8_x4(_sse2neon_rsbox + 0xc0), w - 0xc0); + + // add round key + return vreinterpretq_m128i_u8(v) ^ RoundKey; + +#else /* ARMv7-A NEON implementation */ + /* FIXME: optimized for NEON */ + uint8_t v[4][4]; + uint8_t *_a = (uint8_t *) &a; + for (int i = 0; i < 16; ++i) { + v[((i / 4) + (i % 4)) % 4][i % 4] = _sse2neon_rsbox[_a[i]]; + } + + return _mm_xor_si128(vreinterpretq_m128i_u8(vld1q_u8((uint8_t *) v)), + RoundKey); +#endif +} + +// Perform the InvMixColumns transformation on a and store the result in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_aesimc_si128 +FORCE_INLINE __m128i _mm_aesimc_si128(__m128i a) +{ +#if defined(__aarch64__) + static const uint8_t ror32by8[] = { + 0x1, 0x2, 0x3, 0x0, 0x5, 0x6, 0x7, 0x4, + 0x9, 0xa, 0xb, 0x8, 0xd, 0xe, 0xf, 0xc, + }; + uint8x16_t v = vreinterpretq_u8_m128i(a); + uint8x16_t w; + + // multiplying 'v' by 4 in GF(2^8) + w = (v << 1) ^ (uint8x16_t) (((int8x16_t) v >> 7) & 0x1b); + w = (w << 1) ^ (uint8x16_t) (((int8x16_t) w >> 7) & 0x1b); + v ^= w; + v ^= (uint8x16_t) vrev32q_u16((uint16x8_t) w); + + // multiplying 'v' by 2 in GF(2^8) + w = (v << 1) ^ (uint8x16_t) (((int8x16_t) v >> 7) & 0x1b); + w ^= (uint8x16_t) vrev32q_u16((uint16x8_t) v); + w ^= vqtbl1q_u8(v ^ w, vld1q_u8(ror32by8)); + return vreinterpretq_m128i_u8(w); + +#else /* ARMv7-A NEON implementation */ + uint8_t i, e, f, g, h, v[4][4]; + vst1q_u8((uint8_t *) v, vreinterpretq_u8_m128i(a)); + for (i = 0; i < 4; ++i) { + e = v[i][0]; + f = v[i][1]; + g = v[i][2]; + h = v[i][3]; + + v[i][0] = SSE2NEON_MULTIPLY(e, 0x0e) ^ SSE2NEON_MULTIPLY(f, 0x0b) ^ + SSE2NEON_MULTIPLY(g, 0x0d) ^ SSE2NEON_MULTIPLY(h, 0x09); + v[i][1] = SSE2NEON_MULTIPLY(e, 0x09) ^ SSE2NEON_MULTIPLY(f, 0x0e) ^ + SSE2NEON_MULTIPLY(g, 0x0b) ^ SSE2NEON_MULTIPLY(h, 0x0d); + v[i][2] = SSE2NEON_MULTIPLY(e, 0x0d) ^ SSE2NEON_MULTIPLY(f, 0x09) ^ + SSE2NEON_MULTIPLY(g, 0x0e) ^ SSE2NEON_MULTIPLY(h, 0x0b); + v[i][3] = SSE2NEON_MULTIPLY(e, 0x0b) ^ SSE2NEON_MULTIPLY(f, 0x0d) ^ + SSE2NEON_MULTIPLY(g, 0x09) ^ SSE2NEON_MULTIPLY(h, 0x0e); + } + + return vreinterpretq_m128i_u8(vld1q_u8((uint8_t *) v)); +#endif +} + +// Assist in expanding the AES cipher key by computing steps towards generating +// a round key for encryption cipher using data from a and an 8-bit round +// constant specified in imm8, and store the result in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_aeskeygenassist_si128 +// +// Emits the Advanced Encryption Standard (AES) instruction aeskeygenassist. +// This instruction generates a round key for AES encryption. See +// https://kazakov.life/2017/11/01/cryptocurrency-mining-on-ios-devices/ +// for details. +FORCE_INLINE __m128i _mm_aeskeygenassist_si128(__m128i a, const int rcon) +{ +#if defined(__aarch64__) + uint8x16_t _a = vreinterpretq_u8_m128i(a); + uint8x16_t v = vqtbl4q_u8(_sse2neon_vld1q_u8_x4(_sse2neon_sbox), _a); + v = vqtbx4q_u8(v, _sse2neon_vld1q_u8_x4(_sse2neon_sbox + 0x40), _a - 0x40); + v = vqtbx4q_u8(v, _sse2neon_vld1q_u8_x4(_sse2neon_sbox + 0x80), _a - 0x80); + v = vqtbx4q_u8(v, _sse2neon_vld1q_u8_x4(_sse2neon_sbox + 0xc0), _a - 0xc0); + + uint32x4_t v_u32 = vreinterpretq_u32_u8(v); + uint32x4_t ror_v = vorrq_u32(vshrq_n_u32(v_u32, 8), vshlq_n_u32(v_u32, 24)); + uint32x4_t ror_xor_v = veorq_u32(ror_v, vdupq_n_u32(rcon)); + + return vreinterpretq_m128i_u32(vtrn2q_u32(v_u32, ror_xor_v)); + +#else /* ARMv7-A NEON implementation */ + uint32_t X1 = _mm_cvtsi128_si32(_mm_shuffle_epi32(a, 0x55)); + uint32_t X3 = _mm_cvtsi128_si32(_mm_shuffle_epi32(a, 0xFF)); + for (int i = 0; i < 4; ++i) { + ((uint8_t *) &X1)[i] = _sse2neon_sbox[((uint8_t *) &X1)[i]]; + ((uint8_t *) &X3)[i] = _sse2neon_sbox[((uint8_t *) &X3)[i]]; + } + return _mm_set_epi32(((X3 >> 8) | (X3 << 24)) ^ rcon, X3, + ((X1 >> 8) | (X1 << 24)) ^ rcon, X1); +#endif +} +#undef SSE2NEON_AES_SBOX +#undef SSE2NEON_AES_RSBOX + +#if defined(__aarch64__) +#undef SSE2NEON_XT +#undef SSE2NEON_MULTIPLY +#endif + +#else /* __ARM_FEATURE_CRYPTO */ +// Implements equivalent of 'aesenc' by combining AESE (with an empty key) and +// AESMC and then manually applying the real key as an xor operation. This +// unfortunately means an additional xor op; the compiler should be able to +// optimize this away for repeated calls however. See +// https://blog.michaelbrase.com/2018/05/08/emulating-x86-aes-intrinsics-on-armv8-a +// for more details. +FORCE_INLINE __m128i _mm_aesenc_si128(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_u8(veorq_u8( + vaesmcq_u8(vaeseq_u8(vreinterpretq_u8_m128i(a), vdupq_n_u8(0))), + vreinterpretq_u8_m128i(b))); +} + +// Perform one round of an AES decryption flow on data (state) in a using the +// round key in RoundKey, and store the result in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_aesdec_si128 +FORCE_INLINE __m128i _mm_aesdec_si128(__m128i a, __m128i RoundKey) +{ + return vreinterpretq_m128i_u8(veorq_u8( + vaesimcq_u8(vaesdq_u8(vreinterpretq_u8_m128i(a), vdupq_n_u8(0))), + vreinterpretq_u8_m128i(RoundKey))); +} + +// Perform the last round of an AES encryption flow on data (state) in a using +// the round key in RoundKey, and store the result in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_aesenclast_si128 +FORCE_INLINE __m128i _mm_aesenclast_si128(__m128i a, __m128i RoundKey) +{ + return _mm_xor_si128(vreinterpretq_m128i_u8(vaeseq_u8( + vreinterpretq_u8_m128i(a), vdupq_n_u8(0))), + RoundKey); +} + +// Perform the last round of an AES decryption flow on data (state) in a using +// the round key in RoundKey, and store the result in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_aesdeclast_si128 +FORCE_INLINE __m128i _mm_aesdeclast_si128(__m128i a, __m128i RoundKey) +{ + return vreinterpretq_m128i_u8( + veorq_u8(vaesdq_u8(vreinterpretq_u8_m128i(a), vdupq_n_u8(0)), + vreinterpretq_u8_m128i(RoundKey))); +} + +// Perform the InvMixColumns transformation on a and store the result in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_aesimc_si128 +FORCE_INLINE __m128i _mm_aesimc_si128(__m128i a) +{ + return vreinterpretq_m128i_u8(vaesimcq_u8(vreinterpretq_u8_m128i(a))); +} + +// Assist in expanding the AES cipher key by computing steps towards generating +// a round key for encryption cipher using data from a and an 8-bit round +// constant specified in imm8, and store the result in dst." +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_aeskeygenassist_si128 +FORCE_INLINE __m128i _mm_aeskeygenassist_si128(__m128i a, const int rcon) +{ + // AESE does ShiftRows and SubBytes on A + uint8x16_t u8 = vaeseq_u8(vreinterpretq_u8_m128i(a), vdupq_n_u8(0)); + +#if !defined(_MSC_VER) || defined(__clang__) + uint8x16_t dest = { + // Undo ShiftRows step from AESE and extract X1 and X3 + u8[0x4], u8[0x1], u8[0xE], u8[0xB], // SubBytes(X1) + u8[0x1], u8[0xE], u8[0xB], u8[0x4], // ROT(SubBytes(X1)) + u8[0xC], u8[0x9], u8[0x6], u8[0x3], // SubBytes(X3) + u8[0x9], u8[0x6], u8[0x3], u8[0xC], // ROT(SubBytes(X3)) + }; + uint32x4_t r = {0, (unsigned) rcon, 0, (unsigned) rcon}; + return vreinterpretq_m128i_u8(dest) ^ vreinterpretq_m128i_u32(r); +#else + // We have to do this hack because MSVC is strictly adhering to the CPP + // standard, in particular C++03 8.5.1 sub-section 15, which states that + // unions must be initialized by their first member type. + + // As per the Windows ARM64 ABI, it is always little endian, so this works + __n128 dest{ + ((uint64_t) u8.n128_u8[0x4] << 0) | ((uint64_t) u8.n128_u8[0x1] << 8) | + ((uint64_t) u8.n128_u8[0xE] << 16) | + ((uint64_t) u8.n128_u8[0xB] << 24) | + ((uint64_t) u8.n128_u8[0x1] << 32) | + ((uint64_t) u8.n128_u8[0xE] << 40) | + ((uint64_t) u8.n128_u8[0xB] << 48) | + ((uint64_t) u8.n128_u8[0x4] << 56), + ((uint64_t) u8.n128_u8[0xC] << 0) | ((uint64_t) u8.n128_u8[0x9] << 8) | + ((uint64_t) u8.n128_u8[0x6] << 16) | + ((uint64_t) u8.n128_u8[0x3] << 24) | + ((uint64_t) u8.n128_u8[0x9] << 32) | + ((uint64_t) u8.n128_u8[0x6] << 40) | + ((uint64_t) u8.n128_u8[0x3] << 48) | + ((uint64_t) u8.n128_u8[0xC] << 56)}; + + dest.n128_u32[1] = dest.n128_u32[1] ^ rcon; + dest.n128_u32[3] = dest.n128_u32[3] ^ rcon; + + return dest; +#endif +} +#endif + +/* Others */ + +// Perform a carry-less multiplication of two 64-bit integers, selected from a +// and b according to imm8, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_clmulepi64_si128 +FORCE_INLINE __m128i _mm_clmulepi64_si128(__m128i _a, __m128i _b, const int imm) +{ + uint64x2_t a = vreinterpretq_u64_m128i(_a); + uint64x2_t b = vreinterpretq_u64_m128i(_b); + switch (imm & 0x11) { + case 0x00: + return vreinterpretq_m128i_u64( + _sse2neon_vmull_p64(vget_low_u64(a), vget_low_u64(b))); + case 0x01: + return vreinterpretq_m128i_u64( + _sse2neon_vmull_p64(vget_high_u64(a), vget_low_u64(b))); + case 0x10: + return vreinterpretq_m128i_u64( + _sse2neon_vmull_p64(vget_low_u64(a), vget_high_u64(b))); + case 0x11: + return vreinterpretq_m128i_u64( + _sse2neon_vmull_p64(vget_high_u64(a), vget_high_u64(b))); + default: + abort(); + } +} + +FORCE_INLINE unsigned int _sse2neon_mm_get_denormals_zero_mode(void) +{ + union { + fpcr_bitfield field; +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + uint64_t value; +#else + uint32_t value; +#endif + } r; + +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + r.value = _sse2neon_get_fpcr(); +#else + __asm__ __volatile__("vmrs %0, FPSCR" : "=r"(r.value)); /* read */ +#endif + + return r.field.bit24 ? _MM_DENORMALS_ZERO_ON : _MM_DENORMALS_ZERO_OFF; +} + +// Count the number of bits set to 1 in unsigned 32-bit integer a, and +// return that count in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_popcnt_u32 +FORCE_INLINE int _mm_popcnt_u32(unsigned int a) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) +#if __has_builtin(__builtin_popcount) + return __builtin_popcount(a); +#elif defined(_MSC_VER) + return _CountOneBits(a); +#else + return (int) vaddlv_u8(vcnt_u8(vcreate_u8((uint64_t) a))); +#endif +#else + uint32_t count = 0; + uint8x8_t input_val, count8x8_val; + uint16x4_t count16x4_val; + uint32x2_t count32x2_val; + + input_val = vld1_u8((uint8_t *) &a); + count8x8_val = vcnt_u8(input_val); + count16x4_val = vpaddl_u8(count8x8_val); + count32x2_val = vpaddl_u16(count16x4_val); + + vst1_u32(&count, count32x2_val); + return count; +#endif +} + +// Count the number of bits set to 1 in unsigned 64-bit integer a, and +// return that count in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_popcnt_u64 +FORCE_INLINE int64_t _mm_popcnt_u64(uint64_t a) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) +#if __has_builtin(__builtin_popcountll) + return __builtin_popcountll(a); +#elif defined(_MSC_VER) + return _CountOneBits64(a); +#else + return (int64_t) vaddlv_u8(vcnt_u8(vcreate_u8(a))); +#endif +#else + uint64_t count = 0; + uint8x8_t input_val, count8x8_val; + uint16x4_t count16x4_val; + uint32x2_t count32x2_val; + uint64x1_t count64x1_val; + + input_val = vld1_u8((uint8_t *) &a); + count8x8_val = vcnt_u8(input_val); + count16x4_val = vpaddl_u8(count8x8_val); + count32x2_val = vpaddl_u16(count16x4_val); + count64x1_val = vpaddl_u32(count32x2_val); + vst1_u64(&count, count64x1_val); + return count; +#endif +} + +FORCE_INLINE void _sse2neon_mm_set_denormals_zero_mode(unsigned int flag) +{ + // AArch32 Advanced SIMD arithmetic always uses the Flush-to-zero setting, + // regardless of the value of the FZ bit. + union { + fpcr_bitfield field; +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + uint64_t value; +#else + uint32_t value; +#endif + } r; + +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + r.value = _sse2neon_get_fpcr(); +#else + __asm__ __volatile__("vmrs %0, FPSCR" : "=r"(r.value)); /* read */ +#endif + + r.field.bit24 = (flag & _MM_DENORMALS_ZERO_MASK) == _MM_DENORMALS_ZERO_ON; + +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + _sse2neon_set_fpcr(r.value); +#else + __asm__ __volatile__("vmsr FPSCR, %0" ::"r"(r)); /* write */ +#endif +} + +// Return the current 64-bit value of the processor's time-stamp counter. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=rdtsc +FORCE_INLINE uint64_t _rdtsc(void) +{ +#if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) + uint64_t val; + + /* According to ARM DDI 0487F.c, from Armv8.0 to Armv8.5 inclusive, the + * system counter is at least 56 bits wide; from Armv8.6, the counter + * must be 64 bits wide. So the system counter could be less than 64 + * bits wide and it is attributed with the flag 'cap_user_time_short' + * is true. + */ +#if defined(_MSC_VER) && !defined(__clang__) + val = _ReadStatusReg(ARM64_SYSREG(3, 3, 14, 0, 2)); +#else + __asm__ __volatile__("mrs %0, cntvct_el0" : "=r"(val)); +#endif + + return val; +#else + uint32_t pmccntr, pmuseren, pmcntenset; + // Read the user mode Performance Monitoring Unit (PMU) + // User Enable Register (PMUSERENR) access permissions. + __asm__ __volatile__("mrc p15, 0, %0, c9, c14, 0" : "=r"(pmuseren)); + if (pmuseren & 1) { // Allows reading PMUSERENR for user mode code. + __asm__ __volatile__("mrc p15, 0, %0, c9, c12, 1" : "=r"(pmcntenset)); + if (pmcntenset & 0x80000000UL) { // Is it counting? + __asm__ __volatile__("mrc p15, 0, %0, c9, c13, 0" : "=r"(pmccntr)); + // The counter is set up to count every 64th cycle + return (uint64_t) (pmccntr) << 6; + } + } + + // Fallback to syscall as we can't enable PMUSERENR in user mode. + struct timeval tv; + gettimeofday(&tv, NULL); + return (uint64_t) (tv.tv_sec) * 1000000 + tv.tv_usec; +#endif +} + +#if defined(__GNUC__) || defined(__clang__) +#pragma pop_macro("ALIGN_STRUCT") +#pragma pop_macro("FORCE_INLINE") +#endif + +#if defined(__GNUC__) && !defined(__clang__) +#pragma GCC pop_options +#endif + +#endif diff --git a/deps/sse2neon/sse2neon.sln b/deps/sse2neon/sse2neon.sln new file mode 100644 index 000000000..28582e3dc --- /dev/null +++ b/deps/sse2neon/sse2neon.sln @@ -0,0 +1,37 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.3.32901.215 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sse2neon", "sse2neon.vcxproj", "{341BF194-865B-4DA6-8120-93173498E774}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|ARM = Debug|ARM + Debug|ARM64 = Debug|ARM64 + Debug|ARM64EC = Debug|ARM64EC + Release|ARM = Release|ARM + Release|ARM64 = Release|ARM64 + Release|ARM64EC = Release|ARM64EC + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {341BF194-865B-4DA6-8120-93173498E774}.Debug|ARM.ActiveCfg = Debug|ARM + {341BF194-865B-4DA6-8120-93173498E774}.Debug|ARM.Build.0 = Debug|ARM + {341BF194-865B-4DA6-8120-93173498E774}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {341BF194-865B-4DA6-8120-93173498E774}.Debug|ARM64.Build.0 = Debug|ARM64 + {341BF194-865B-4DA6-8120-93173498E774}.Debug|ARM64EC.ActiveCfg = Debug|ARM64EC + {341BF194-865B-4DA6-8120-93173498E774}.Debug|ARM64EC.Build.0 = Debug|ARM64EC + {341BF194-865B-4DA6-8120-93173498E774}.Release|ARM.ActiveCfg = Release|ARM + {341BF194-865B-4DA6-8120-93173498E774}.Release|ARM.Build.0 = Release|ARM + {341BF194-865B-4DA6-8120-93173498E774}.Release|ARM64.ActiveCfg = Release|ARM64 + {341BF194-865B-4DA6-8120-93173498E774}.Release|ARM64.Build.0 = Release|ARM64 + {341BF194-865B-4DA6-8120-93173498E774}.Release|ARM64EC.ActiveCfg = Release|ARM64EC + {341BF194-865B-4DA6-8120-93173498E774}.Release|ARM64EC.Build.0 = Release|ARM64EC + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {D503B299-AA05-4E05-A8D9-37C8D229ACB1} + EndGlobalSection +EndGlobal diff --git a/deps/sse2neon/sse2neon.vcxproj b/deps/sse2neon/sse2neon.vcxproj new file mode 100644 index 000000000..5397174e4 --- /dev/null +++ b/deps/sse2neon/sse2neon.vcxproj @@ -0,0 +1,217 @@ + + + + + Debug + ARM + + + Debug + ARM64 + + + Debug + ARM64EC + + + Release + ARM + + + Release + ARM64 + + + Release + ARM64EC + + + + 16.0 + Win32Proj + {341bf194-865b-4da6-8120-93173498e774} + sse2neon + 10.0 + + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + Application + true + v143 + Unicode + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + Application + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + + Level3 + true + __i386__;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + .;%(AdditionalIncludeDirectories) + + + Console + true + + + + + Level3 + true + true + true + __i386__;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + .;%(AdditionalIncludeDirectories) + + + Console + true + true + true + + + + + Level3 + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + .;%(AdditionalIncludeDirectories) + /Zc:preprocessor + true + + + Console + true + + + + + Level3 + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + .;%(AdditionalIncludeDirectories) + /Zc:preprocessor + true + stdcpp20 + false + + + Console + true + + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + .;%(AdditionalIncludeDirectories) + /Zc:preprocessor %(AdditionalOptions) + + + Console + true + true + true + + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + .;%(AdditionalIncludeDirectories) + /Zc:preprocessor %(AdditionalOptions) + false + + + Console + true + true + true + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/deps/sse2neon/sse2neon.vcxproj.filters b/deps/sse2neon/sse2neon.vcxproj.filters new file mode 100644 index 000000000..e4f5e0454 --- /dev/null +++ b/deps/sse2neon/sse2neon.vcxproj.filters @@ -0,0 +1,45 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + \ No newline at end of file diff --git a/deps/sse2neon/tests/README.md b/deps/sse2neon/tests/README.md new file mode 100644 index 000000000..b345b0857 --- /dev/null +++ b/deps/sse2neon/tests/README.md @@ -0,0 +1,29 @@ +# Test Suite for SSE2NEON + +:warning: **Warning: The test suite is based on the little-endian architecture.** + +## Add More Test Items +Once the conversion is implemented, the test can be added with the following steps: + +* File `tests/impl.h` + + Add the intrinsic under `INTRIN_LIST` macro. The naming convention + should be `mm_xxx`. + Place it in the correct classification with the alphabetical order. + The classification can be referenced from [Intel Intrinsics Guide](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html). + +* File `tests/impl.cpp` + ```c + result_t test_mm_xxx() + { + // The C implementation + ... + + // The Neon implementation + ret = _mm_xxx(); + + // Compare the result of two implementations and return either + // TEST_SUCCESS, TEST_FAIL, or TEST_UNIMPL + ... + } + ``` diff --git a/deps/sse2neon/tests/binding.cpp b/deps/sse2neon/tests/binding.cpp new file mode 100644 index 000000000..ca1bb57fe --- /dev/null +++ b/deps/sse2neon/tests/binding.cpp @@ -0,0 +1,35 @@ +#include "binding.h" + +#include +#include + +namespace SSE2NEON +{ +void *platformAlignedAlloc(size_t size) +{ + void *address; +#if defined(_WIN32) + address = _aligned_malloc(size, 16); + if (!address) { +#else + int ret = posix_memalign(&address, 16, size); + if (ret != 0) { +#endif + fprintf(stderr, "Error at File %s line number %d\n", __FILE__, + __LINE__); + exit(EXIT_FAILURE); + } + return address; +} + +void platformAlignedFree(void *ptr) +{ +#if defined(_WIN32) + _aligned_free(ptr); +#else + free(ptr); +#endif +} + + +} // namespace SSE2NEON diff --git a/deps/sse2neon/tests/binding.h b/deps/sse2neon/tests/binding.h new file mode 100644 index 000000000..64a9fa506 --- /dev/null +++ b/deps/sse2neon/tests/binding.h @@ -0,0 +1,19 @@ +#ifndef SSE2NEONBINDING_H +#define SSE2NEONBINDING_H + +#include + +// The SSE2NEON unit tests run both within our own internal project +// as well as within the open source framework. +// This header file is used to abstract any distinctions between +// those two build environments. +// +// Initially, this is for how 16 byte aligned memory is allocated +namespace SSE2NEON +{ +void *platformAlignedAlloc(size_t size); +void platformAlignedFree(void *ptr); + +} // namespace SSE2NEON + +#endif diff --git a/deps/sse2neon/tests/common.cpp b/deps/sse2neon/tests/common.cpp new file mode 100644 index 000000000..f1427aca1 --- /dev/null +++ b/deps/sse2neon/tests/common.cpp @@ -0,0 +1,414 @@ +#include "common.h" +#include +#include + +namespace SSE2NEON +{ +int32_t NaN = ~0; +int64_t NaN64 = ~0; + +result_t validateInt64(__m128i a, int64_t i0, int64_t i1) +{ + const int64_t *t = (const int64_t *) &a; + ASSERT_RETURN(t[0] == i0); + ASSERT_RETURN(t[1] == i1); + return TEST_SUCCESS; +} + +result_t validateInt64(__m64 a, int64_t i0) +{ + const int64_t *t = (const int64_t *) &a; + ASSERT_RETURN(t[0] == i0); + return TEST_SUCCESS; +} + +result_t validateUInt64(__m128i a, uint64_t u0, uint64_t u1) +{ + const uint64_t *t = (const uint64_t *) &a; + ASSERT_RETURN(t[0] == u0); + ASSERT_RETURN(t[1] == u1); + return TEST_SUCCESS; +} + +result_t validateUInt64(__m64 a, uint64_t u0) +{ + const uint64_t *t = (const uint64_t *) &a; + ASSERT_RETURN(t[0] == u0); + return TEST_SUCCESS; +} + +result_t validateInt32(__m128i a, + int32_t i0, + int32_t i1, + int32_t i2, + int32_t i3) +{ + const int32_t *t = (const int32_t *) &a; + ASSERT_RETURN(t[0] == i0); + ASSERT_RETURN(t[1] == i1); + ASSERT_RETURN(t[2] == i2); + ASSERT_RETURN(t[3] == i3); + return TEST_SUCCESS; +} + +result_t validateUInt32(__m128i a, + uint32_t u0, + uint32_t u1, + uint32_t u2, + uint32_t u3) +{ + const uint32_t *t = (const uint32_t *) &a; + ASSERT_RETURN(t[0] == u0); + ASSERT_RETURN(t[1] == u1); + ASSERT_RETURN(t[2] == u2); + ASSERT_RETURN(t[3] == u3); + return TEST_SUCCESS; +} + +result_t validateUInt32(__m64 a, uint32_t u0, uint32_t u1) +{ + const uint32_t *t = (const uint32_t *) &a; + ASSERT_RETURN(t[0] == u0); + ASSERT_RETURN(t[1] == u1); + return TEST_SUCCESS; +} + +result_t validateInt16(__m128i a, + int16_t i0, + int16_t i1, + int16_t i2, + int16_t i3, + int16_t i4, + int16_t i5, + int16_t i6, + int16_t i7) +{ + const int16_t *t = (const int16_t *) &a; + ASSERT_RETURN(t[0] == i0); + ASSERT_RETURN(t[1] == i1); + ASSERT_RETURN(t[2] == i2); + ASSERT_RETURN(t[3] == i3); + ASSERT_RETURN(t[4] == i4); + ASSERT_RETURN(t[5] == i5); + ASSERT_RETURN(t[6] == i6); + ASSERT_RETURN(t[7] == i7); + return TEST_SUCCESS; +} + +result_t validateInt16(__m64 a, int16_t i0, int16_t i1, int16_t i2, int16_t i3) +{ + const int16_t *t = (const int16_t *) &a; + ASSERT_RETURN(t[0] == i0); + ASSERT_RETURN(t[1] == i1); + ASSERT_RETURN(t[2] == i2); + ASSERT_RETURN(t[3] == i3); + return TEST_SUCCESS; +} + +result_t validateUInt16(__m128i a, + uint16_t u0, + uint16_t u1, + uint16_t u2, + uint16_t u3, + uint16_t u4, + uint16_t u5, + uint16_t u6, + uint16_t u7) +{ + const uint16_t *t = (const uint16_t *) &a; + ASSERT_RETURN(t[0] == u0); + ASSERT_RETURN(t[1] == u1); + ASSERT_RETURN(t[2] == u2); + ASSERT_RETURN(t[3] == u3); + ASSERT_RETURN(t[4] == u4); + ASSERT_RETURN(t[5] == u5); + ASSERT_RETURN(t[6] == u6); + ASSERT_RETURN(t[7] == u7); + return TEST_SUCCESS; +} + +result_t validateInt32(__m64 a, int32_t u0, int32_t u1) +{ + const int32_t *t = (const int32_t *) &a; + ASSERT_RETURN(t[0] == u0); + ASSERT_RETURN(t[1] == u1); + return TEST_SUCCESS; +} + +result_t validateUInt16(__m64 a, + uint16_t u0, + uint16_t u1, + uint16_t u2, + uint16_t u3) +{ + const uint16_t *t = (const uint16_t *) &a; + ASSERT_RETURN(t[0] == u0); + ASSERT_RETURN(t[1] == u1); + ASSERT_RETURN(t[2] == u2); + ASSERT_RETURN(t[3] == u3); + return TEST_SUCCESS; +} + +result_t validateInt8(__m128i a, + int8_t i0, + int8_t i1, + int8_t i2, + int8_t i3, + int8_t i4, + int8_t i5, + int8_t i6, + int8_t i7, + int8_t i8, + int8_t i9, + int8_t i10, + int8_t i11, + int8_t i12, + int8_t i13, + int8_t i14, + int8_t i15) +{ + const int8_t *t = (const int8_t *) &a; + ASSERT_RETURN(t[0] == i0); + ASSERT_RETURN(t[1] == i1); + ASSERT_RETURN(t[2] == i2); + ASSERT_RETURN(t[3] == i3); + ASSERT_RETURN(t[4] == i4); + ASSERT_RETURN(t[5] == i5); + ASSERT_RETURN(t[6] == i6); + ASSERT_RETURN(t[7] == i7); + ASSERT_RETURN(t[8] == i8); + ASSERT_RETURN(t[9] == i9); + ASSERT_RETURN(t[10] == i10); + ASSERT_RETURN(t[11] == i11); + ASSERT_RETURN(t[12] == i12); + ASSERT_RETURN(t[13] == i13); + ASSERT_RETURN(t[14] == i14); + ASSERT_RETURN(t[15] == i15); + return TEST_SUCCESS; +} + +result_t validateInt8(__m64 a, + int8_t i0, + int8_t i1, + int8_t i2, + int8_t i3, + int8_t i4, + int8_t i5, + int8_t i6, + int8_t i7) +{ + const int8_t *t = (const int8_t *) &a; + ASSERT_RETURN(t[0] == i0); + ASSERT_RETURN(t[1] == i1); + ASSERT_RETURN(t[2] == i2); + ASSERT_RETURN(t[3] == i3); + ASSERT_RETURN(t[4] == i4); + ASSERT_RETURN(t[5] == i5); + ASSERT_RETURN(t[6] == i6); + ASSERT_RETURN(t[7] == i7); + return TEST_SUCCESS; +} + +result_t validateUInt8(__m128i a, + uint8_t u0, + uint8_t u1, + uint8_t u2, + uint8_t u3, + uint8_t u4, + uint8_t u5, + uint8_t u6, + uint8_t u7, + uint8_t u8, + uint8_t u9, + uint8_t u10, + uint8_t u11, + uint8_t u12, + uint8_t u13, + uint8_t u14, + uint8_t u15) +{ + const uint8_t *t = (const uint8_t *) &a; + ASSERT_RETURN(t[0] == u0); + ASSERT_RETURN(t[1] == u1); + ASSERT_RETURN(t[2] == u2); + ASSERT_RETURN(t[3] == u3); + ASSERT_RETURN(t[4] == u4); + ASSERT_RETURN(t[5] == u5); + ASSERT_RETURN(t[6] == u6); + ASSERT_RETURN(t[7] == u7); + ASSERT_RETURN(t[8] == u8); + ASSERT_RETURN(t[9] == u9); + ASSERT_RETURN(t[10] == u10); + ASSERT_RETURN(t[11] == u11); + ASSERT_RETURN(t[12] == u12); + ASSERT_RETURN(t[13] == u13); + ASSERT_RETURN(t[14] == u14); + ASSERT_RETURN(t[15] == u15); + return TEST_SUCCESS; +} + +result_t validateUInt8(__m64 a, + uint8_t u0, + uint8_t u1, + uint8_t u2, + uint8_t u3, + uint8_t u4, + uint8_t u5, + uint8_t u6, + uint8_t u7) +{ + const uint8_t *t = (const uint8_t *) &a; + ASSERT_RETURN(t[0] == u0); + ASSERT_RETURN(t[1] == u1); + ASSERT_RETURN(t[2] == u2); + ASSERT_RETURN(t[3] == u3); + ASSERT_RETURN(t[4] == u4); + ASSERT_RETURN(t[5] == u5); + ASSERT_RETURN(t[6] == u6); + ASSERT_RETURN(t[7] == u7); + return TEST_SUCCESS; +} + +result_t validateSingleFloatPair(float a, float b) +{ + const uint32_t *ua = (const uint32_t *) &a; + const uint32_t *ub = (const uint32_t *) &b; + // We do an integer (binary) compare rather than a + // floating point compare to take NaNs and infinities + // into account as well. + return (*ua) == (*ub) ? TEST_SUCCESS : TEST_FAIL; +} + +result_t validateSingleDoublePair(double a, double b) +{ + const uint64_t *ua = (const uint64_t *) &a; + const uint64_t *ub = (const uint64_t *) &b; + // We do an integer (binary) compare rather than a + // floating point compare to take NaNs and infinities + // into account as well. + + if (std::isnan(a) && std::isnan(b)) { + return TEST_SUCCESS; + } + + return (*ua) == (*ub) ? TEST_SUCCESS : TEST_FAIL; +} + +result_t validateFloat(__m128 a, float f0, float f1, float f2, float f3) +{ + const float *t = (const float *) &a; + ASSERT_RETURN(validateSingleFloatPair(t[0], f0)); + ASSERT_RETURN(validateSingleFloatPair(t[1], f1)); + ASSERT_RETURN(validateSingleFloatPair(t[2], f2)); + ASSERT_RETURN(validateSingleFloatPair(t[3], f3)); + return TEST_SUCCESS; +} + +result_t validateFloatEpsilon(__m128 a, + float f0, + float f1, + float f2, + float f3, + float epsilon) +{ + const float *t = (const float *) &a; + float df0 = fabsf(t[0] - f0); + float df1 = fabsf(t[1] - f1); + float df2 = fabsf(t[2] - f2); + float df3 = fabsf(t[3] - f3); + + // Due to floating-point error, subtracting floating-point number with NaN + // and zero value usually produces erroneous result. Therefore, we directly + // define the difference of two floating-point numbers to zero if both + // numbers are NaN or zero. + if ((std::isnan(t[0]) && std::isnan(f0)) || (t[0] == 0 && f0 == 0)) { + df0 = 0; + } + + if ((std::isnan(t[1]) && std::isnan(f1)) || (t[1] == 0 && f1 == 0)) { + df1 = 0; + } + + if ((std::isnan(t[2]) && std::isnan(f2)) || (t[2] == 0 && f2 == 0)) { + df2 = 0; + } + + if ((std::isnan(t[3]) && std::isnan(f3)) || (t[3] == 0 && f3 == 0)) { + df3 = 0; + } + + ASSERT_RETURN(df0 < epsilon); + ASSERT_RETURN(df1 < epsilon); + ASSERT_RETURN(df2 < epsilon); + ASSERT_RETURN(df3 < epsilon); + return TEST_SUCCESS; +} + +result_t validateFloatError(__m128 a, + float f0, + float f1, + float f2, + float f3, + float err) +{ + const float *t = (const float *) &a; + float df0 = fabsf((t[0] - f0) / f0); + float df1 = fabsf((t[1] - f1) / f1); + float df2 = fabsf((t[2] - f2) / f2); + float df3 = fabsf((t[3] - f3) / f3); + + if ((std::isnan(t[0]) && std::isnan(f0)) || (t[0] == 0 && f0 == 0) || + (std::isinf(t[0]) && std::isinf(f0))) { + df0 = 0; + } + + if ((std::isnan(t[1]) && std::isnan(f1)) || (t[1] == 0 && f1 == 0) || + (std::isinf(t[1]) && std::isinf(f1))) { + df1 = 0; + } + + if ((std::isnan(t[2]) && std::isnan(f2)) || (t[2] == 0 && f2 == 0) || + (std::isinf(t[2]) && std::isinf(f2))) { + df2 = 0; + } + + if ((std::isnan(t[3]) && std::isnan(f3)) || (t[3] == 0 && f3 == 0) || + (std::isinf(t[3]) && std::isinf(f3))) { + df3 = 0; + } + + ASSERT_RETURN(df0 < err); + ASSERT_RETURN(df1 < err); + ASSERT_RETURN(df2 < err); + ASSERT_RETURN(df3 < err); + return TEST_SUCCESS; +} + +result_t validateDouble(__m128d a, double d0, double d1) +{ + const double *t = (const double *) &a; + ASSERT_RETURN(validateSingleDoublePair(t[0], d0)); + ASSERT_RETURN(validateSingleDoublePair(t[1], d1)); + return TEST_SUCCESS; +} + +result_t validateFloatError(__m128d a, double d0, double d1, double err) +{ + const double *t = (const double *) &a; + double td0 = fabs((t[0] - d0) / d0); + double td1 = fabs((t[1] - d1) / d1); + + if (std::isnan(t[0]) && std::isnan(d0)) { + td0 = 0; + } + + if (std::isnan(t[1]) && std::isnan(d1)) { + td1 = 0; + } + + ASSERT_RETURN(td0 < err); + ASSERT_RETURN(td1 < err); + return TEST_SUCCESS; +} + +} // namespace SSE2NEON diff --git a/deps/sse2neon/tests/common.h b/deps/sse2neon/tests/common.h new file mode 100644 index 000000000..74d6dea21 --- /dev/null +++ b/deps/sse2neon/tests/common.h @@ -0,0 +1,527 @@ +#ifndef SSE2NEONCOMMON_H +#define SSE2NEONCOMMON_H +#include +#if (defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC)) || \ + defined(__arm__) +#include "sse2neon.h" +#elif defined(__x86_64__) || defined(__i386__) +#include +#include +#include +#include +#include +#include + +// __int64 is defined in the Intrinsics Guide which maps to different datatype +// in different data model +#if !(defined(_WIN32) || defined(_WIN64) || defined(__int64)) +#if (defined(__x86_64__) || defined(__i386__)) +#define __int64 long long +#else +#define __int64 int64_t +#endif +#endif + +#if defined(__GNUC__) || defined(__clang__) +#pragma push_macro("ALIGN_STRUCT") +#define ALIGN_STRUCT(x) __attribute__((aligned(x))) +#else +#define ALIGN_STRUCT(x) __declspec(align(x)) +#endif + +typedef union ALIGN_STRUCT(16) SIMDVec { + float m128_f32[4]; // as floats - DON'T USE. Added for convenience. + int8_t m128_i8[16]; // as signed 8-bit integers. + int16_t m128_i16[8]; // as signed 16-bit integers. + int32_t m128_i32[4]; // as signed 32-bit integers. + int64_t m128_i64[2]; // as signed 64-bit integers. + uint8_t m128_u8[16]; // as unsigned 8-bit integers. + uint16_t m128_u16[8]; // as unsigned 16-bit integers. + uint32_t m128_u32[4]; // as unsigned 32-bit integers. + uint64_t m128_u64[2]; // as unsigned 64-bit integers. +} SIMDVec; + +#if defined(__GNUC__) || defined(__clang__) +#pragma pop_macro("ALIGN_STRUCT") +#endif + +/* Tunable testing configuration for precise testing */ +/* _mm_min|max_ps|ss|pd|sd */ +#ifndef SSE2NEON_PRECISE_MINMAX +#define SSE2NEON_PRECISE_MINMAX (0) +#endif +#endif + +#define ASSERT_RETURN(x) \ + if (!(x)) \ + return TEST_FAIL; + +namespace SSE2NEON +{ +enum result_t { + TEST_SUCCESS = 1, + TEST_FAIL = 0, + TEST_UNIMPL = -1, +}; +extern int32_t NaN; +extern int64_t NaN64; + +#if defined(__GNUC__) && !defined(__clang__) +#pragma push_macro("OPTNONE") +#define OPTNONE __attribute__((optimize("O0"))) +#elif defined(__clang__) +#pragma push_macro("OPTNONE") +#define OPTNONE __attribute__((optnone)) +#else +#define OPTNONE +#endif + +#include +static inline double sse2neon_tool_recast_f64(uint64_t u64) +{ + double f64; + memcpy(&f64, &u64, sizeof(uint64_t)); + return f64; +} +static inline int64_t sse2neon_tool_recast_i64(double f64) +{ + int64_t i64; + memcpy(&i64, &f64, sizeof(int64_t)); + return i64; +} +static inline float sse2neon_tool_recast_f32(uint32_t u32) +{ + float f32; + memcpy(&f32, &u32, sizeof(uint32_t)); + return f32; +} +static inline float sse2neon_tool_recast_f32(int32_t i32) +{ + float f32; + memcpy(&f32, &i32, sizeof(int32_t)); + return f32; +} +#define ALL_BIT_1_32 sse2neon_tool_recast_f32(UINT32_MAX) +#define ALL_BIT_1_64 sse2neon_tool_recast_f64(UINT64_MAX) + +template +result_t validate128(T a, T b) +{ + const int32_t *t1 = (const int32_t *) &a; + const int32_t *t2 = (const int32_t *) &b; + + ASSERT_RETURN(t1[0] == t2[0]); + ASSERT_RETURN(t1[1] == t2[1]); + ASSERT_RETURN(t1[2] == t2[2]); + ASSERT_RETURN(t1[3] == t2[3]); + return TEST_SUCCESS; +} +result_t validateInt64(__m128i a, int64_t i0, int64_t i1); +result_t validateInt64(__m64 a, int64_t i0); +result_t validateUInt64(__m128i a, uint64_t u0, uint64_t u1); +result_t validateUInt64(__m64 a, uint64_t u0); +result_t validateInt32(__m128i a, + int32_t i0, + int32_t i1, + int32_t i2, + int32_t i3); +result_t validateUInt32(__m128i a, + uint32_t u0, + uint32_t u1, + uint32_t u2, + uint32_t u3); +result_t validateUInt32(__m64 a, uint32_t u0, uint32_t u1); +result_t validateInt32(__m64 a, int32_t u0, int32_t u1); +result_t validateInt16(__m128i a, + int16_t i0, + int16_t i1, + int16_t i2, + int16_t i3, + int16_t i4, + int16_t i5, + int16_t i6, + int16_t i7); +result_t validateInt16(__m64 a, int16_t i0, int16_t i1, int16_t i2, int16_t i3); +result_t validateUInt16(__m128i a, + uint16_t u0, + uint16_t u1, + uint16_t u2, + uint16_t u3, + uint16_t u4, + uint16_t u5, + uint16_t u6, + uint16_t u7); +result_t validateUInt16(__m64 a, + uint16_t u0, + uint16_t u1, + uint16_t u2, + uint16_t u3); +result_t validateInt8(__m128i a, + int8_t i0, + int8_t i1, + int8_t i2, + int8_t i3, + int8_t i4, + int8_t i5, + int8_t i6, + int8_t i7, + int8_t i8, + int8_t i9, + int8_t i10, + int8_t i11, + int8_t i12, + int8_t i13, + int8_t i14, + int8_t i15); +result_t validateInt8(__m64 a, + int8_t i0, + int8_t i1, + int8_t i2, + int8_t i3, + int8_t i4, + int8_t i5, + int8_t i6, + int8_t i7); +result_t validateUInt8(__m128i a, + uint8_t u0, + uint8_t u1, + uint8_t u2, + uint8_t u3, + uint8_t u4, + uint8_t u5, + uint8_t u6, + uint8_t u7, + uint8_t u8, + uint8_t u9, + uint8_t u10, + uint8_t u11, + uint8_t u12, + uint8_t u13, + uint8_t u14, + uint8_t u15); +result_t validateUInt8(__m64 a, + uint8_t u0, + uint8_t u1, + uint8_t u2, + uint8_t u3, + uint8_t u4, + uint8_t u5, + uint8_t u6, + uint8_t u7); +result_t validateSingleFloatPair(float a, float b); +result_t validateSingleDoublePair(double a, double b); +result_t validateFloat(__m128 a, float f0, float f1, float f2, float f3); +result_t validateFloatEpsilon(__m128 a, + float f0, + float f1, + float f2, + float f3, + float epsilon); +result_t validateFloatError(__m128 a, + float f0, + float f1, + float f2, + float f3, + float err); +result_t validateDouble(__m128d a, double d0, double d1); +result_t validateFloatError(__m128d a, double d0, double d1, double err); + +#define VALIDATE_INT8_M128(A, B) \ + validateInt8(A, B[0], B[1], B[2], B[3], B[4], B[5], B[6], B[7], B[8], \ + B[9], B[10], B[11], B[12], B[13], B[14], B[15]) +#define VALIDATE_UINT8_M128(A, B) \ + validateUInt8(A, B[0], B[1], B[2], B[3], B[4], B[5], B[6], B[7], B[8], \ + B[9], B[10], B[11], B[12], B[13], B[14], B[15]) +#define VALIDATE_INT16_M128(A, B) \ + validateInt16(A, B[0], B[1], B[2], B[3], B[4], B[5], B[6], B[7]) +#define VALIDATE_UINT16_M128(A, B) \ + validateUInt16(A, B[0], B[1], B[2], B[3], B[4], B[5], B[6], B[7]) +#define VALIDATE_INT32_M128(A, B) validateInt32(A, B[0], B[1], B[2], B[3]) +#define VALIDATE_UINT32_M128(A, B) validateUInt32(A, B[0], B[1], B[2], B[3]) + +#define VALIDATE_INT8_M64(A, B) \ + validateInt8(A, B[0], B[1], B[2], B[3], B[4], B[5], B[6], B[7]) +#define VALIDATE_UINT8_M64(A, B) \ + validateUInt8(A, B[0], B[1], B[2], B[3], B[4], B[5], B[6], B[7]) +#define VALIDATE_INT16_M64(A, B) validateInt16(A, B[0], B[1], B[2], B[3]) +#define VALIDATE_UINT16_M64(A, B) validateUInt16(A, B[0], B[1], B[2], B[3]) +#define VALIDATE_INT32_M64(A, B) validateInt32(A, B[0], B[1]) +#define VALIDATE_UINT32_M64(A, B) validateUInt32(A, B[0], B[1]) +#define CHECK_RESULT(EXP) \ + if (EXP != TEST_SUCCESS) { \ + return TEST_FAIL; \ + } +#define IMM_2_ITER \ + TEST_IMPL(0) \ + TEST_IMPL(1) +#define IMM_4_ITER \ + IMM_2_ITER \ + TEST_IMPL(2) \ + TEST_IMPL(3) +#define IMM_8_ITER \ + IMM_4_ITER \ + TEST_IMPL(4) \ + TEST_IMPL(5) \ + TEST_IMPL(6) \ + TEST_IMPL(7) +#define IMM_16_ITER \ + IMM_8_ITER \ + TEST_IMPL(8) \ + TEST_IMPL(9) \ + TEST_IMPL(10) \ + TEST_IMPL(11) \ + TEST_IMPL(12) \ + TEST_IMPL(13) \ + TEST_IMPL(14) \ + TEST_IMPL(15) +#define IMM_32_ITER \ + IMM_16_ITER \ + TEST_IMPL(16) \ + TEST_IMPL(17) \ + TEST_IMPL(18) \ + TEST_IMPL(19) \ + TEST_IMPL(20) \ + TEST_IMPL(21) \ + TEST_IMPL(22) \ + TEST_IMPL(23) \ + TEST_IMPL(24) \ + TEST_IMPL(25) \ + TEST_IMPL(26) \ + TEST_IMPL(27) \ + TEST_IMPL(28) \ + TEST_IMPL(29) \ + TEST_IMPL(30) \ + TEST_IMPL(31) +#define IMM_64_ITER \ + IMM_32_ITER \ + TEST_IMPL(32) \ + TEST_IMPL(33) \ + TEST_IMPL(34) \ + TEST_IMPL(35) \ + TEST_IMPL(36) \ + TEST_IMPL(37) \ + TEST_IMPL(38) \ + TEST_IMPL(39) \ + TEST_IMPL(40) \ + TEST_IMPL(41) \ + TEST_IMPL(42) \ + TEST_IMPL(43) \ + TEST_IMPL(44) \ + TEST_IMPL(45) \ + TEST_IMPL(46) \ + TEST_IMPL(47) \ + TEST_IMPL(48) \ + TEST_IMPL(49) \ + TEST_IMPL(50) \ + TEST_IMPL(51) \ + TEST_IMPL(52) \ + TEST_IMPL(53) \ + TEST_IMPL(54) \ + TEST_IMPL(55) \ + TEST_IMPL(56) \ + TEST_IMPL(57) \ + TEST_IMPL(58) \ + TEST_IMPL(59) \ + TEST_IMPL(60) \ + TEST_IMPL(61) \ + TEST_IMPL(62) \ + TEST_IMPL(63) +#define IMM_128_ITER \ + IMM_64_ITER \ + TEST_IMPL(64) \ + TEST_IMPL(65) \ + TEST_IMPL(66) \ + TEST_IMPL(67) \ + TEST_IMPL(68) \ + TEST_IMPL(69) \ + TEST_IMPL(70) \ + TEST_IMPL(71) \ + TEST_IMPL(72) \ + TEST_IMPL(73) \ + TEST_IMPL(74) \ + TEST_IMPL(75) \ + TEST_IMPL(76) \ + TEST_IMPL(77) \ + TEST_IMPL(78) \ + TEST_IMPL(79) \ + TEST_IMPL(80) \ + TEST_IMPL(81) \ + TEST_IMPL(82) \ + TEST_IMPL(83) \ + TEST_IMPL(84) \ + TEST_IMPL(85) \ + TEST_IMPL(86) \ + TEST_IMPL(87) \ + TEST_IMPL(88) \ + TEST_IMPL(89) \ + TEST_IMPL(90) \ + TEST_IMPL(91) \ + TEST_IMPL(92) \ + TEST_IMPL(93) \ + TEST_IMPL(94) \ + TEST_IMPL(95) \ + TEST_IMPL(96) \ + TEST_IMPL(97) \ + TEST_IMPL(98) \ + TEST_IMPL(99) \ + TEST_IMPL(100) \ + TEST_IMPL(101) \ + TEST_IMPL(102) \ + TEST_IMPL(103) \ + TEST_IMPL(104) \ + TEST_IMPL(105) \ + TEST_IMPL(106) \ + TEST_IMPL(107) \ + TEST_IMPL(108) \ + TEST_IMPL(109) \ + TEST_IMPL(110) \ + TEST_IMPL(111) \ + TEST_IMPL(112) \ + TEST_IMPL(113) \ + TEST_IMPL(114) \ + TEST_IMPL(115) \ + TEST_IMPL(116) \ + TEST_IMPL(117) \ + TEST_IMPL(118) \ + TEST_IMPL(119) \ + TEST_IMPL(120) \ + TEST_IMPL(121) \ + TEST_IMPL(122) \ + TEST_IMPL(123) \ + TEST_IMPL(124) \ + TEST_IMPL(125) \ + TEST_IMPL(126) \ + TEST_IMPL(127) +#define IMM_256_ITER \ + IMM_128_ITER \ + TEST_IMPL(128) \ + TEST_IMPL(129) \ + TEST_IMPL(130) \ + TEST_IMPL(131) \ + TEST_IMPL(132) \ + TEST_IMPL(133) \ + TEST_IMPL(134) \ + TEST_IMPL(135) \ + TEST_IMPL(136) \ + TEST_IMPL(137) \ + TEST_IMPL(138) \ + TEST_IMPL(139) \ + TEST_IMPL(140) \ + TEST_IMPL(141) \ + TEST_IMPL(142) \ + TEST_IMPL(143) \ + TEST_IMPL(144) \ + TEST_IMPL(145) \ + TEST_IMPL(146) \ + TEST_IMPL(147) \ + TEST_IMPL(148) \ + TEST_IMPL(149) \ + TEST_IMPL(150) \ + TEST_IMPL(151) \ + TEST_IMPL(152) \ + TEST_IMPL(153) \ + TEST_IMPL(154) \ + TEST_IMPL(155) \ + TEST_IMPL(156) \ + TEST_IMPL(157) \ + TEST_IMPL(158) \ + TEST_IMPL(159) \ + TEST_IMPL(160) \ + TEST_IMPL(161) \ + TEST_IMPL(162) \ + TEST_IMPL(163) \ + TEST_IMPL(164) \ + TEST_IMPL(165) \ + TEST_IMPL(166) \ + TEST_IMPL(167) \ + TEST_IMPL(168) \ + TEST_IMPL(169) \ + TEST_IMPL(170) \ + TEST_IMPL(171) \ + TEST_IMPL(172) \ + TEST_IMPL(173) \ + TEST_IMPL(174) \ + TEST_IMPL(175) \ + TEST_IMPL(176) \ + TEST_IMPL(177) \ + TEST_IMPL(178) \ + TEST_IMPL(179) \ + TEST_IMPL(180) \ + TEST_IMPL(181) \ + TEST_IMPL(182) \ + TEST_IMPL(183) \ + TEST_IMPL(184) \ + TEST_IMPL(185) \ + TEST_IMPL(186) \ + TEST_IMPL(187) \ + TEST_IMPL(188) \ + TEST_IMPL(189) \ + TEST_IMPL(190) \ + TEST_IMPL(191) \ + TEST_IMPL(192) \ + TEST_IMPL(193) \ + TEST_IMPL(194) \ + TEST_IMPL(195) \ + TEST_IMPL(196) \ + TEST_IMPL(197) \ + TEST_IMPL(198) \ + TEST_IMPL(199) \ + TEST_IMPL(200) \ + TEST_IMPL(201) \ + TEST_IMPL(202) \ + TEST_IMPL(203) \ + TEST_IMPL(204) \ + TEST_IMPL(205) \ + TEST_IMPL(206) \ + TEST_IMPL(207) \ + TEST_IMPL(208) \ + TEST_IMPL(209) \ + TEST_IMPL(210) \ + TEST_IMPL(211) \ + TEST_IMPL(212) \ + TEST_IMPL(213) \ + TEST_IMPL(214) \ + TEST_IMPL(215) \ + TEST_IMPL(216) \ + TEST_IMPL(217) \ + TEST_IMPL(218) \ + TEST_IMPL(219) \ + TEST_IMPL(220) \ + TEST_IMPL(221) \ + TEST_IMPL(222) \ + TEST_IMPL(223) \ + TEST_IMPL(224) \ + TEST_IMPL(225) \ + TEST_IMPL(226) \ + TEST_IMPL(227) \ + TEST_IMPL(228) \ + TEST_IMPL(229) \ + TEST_IMPL(230) \ + TEST_IMPL(231) \ + TEST_IMPL(232) \ + TEST_IMPL(233) \ + TEST_IMPL(234) \ + TEST_IMPL(235) \ + TEST_IMPL(236) \ + TEST_IMPL(237) \ + TEST_IMPL(238) \ + TEST_IMPL(239) \ + TEST_IMPL(240) \ + TEST_IMPL(241) \ + TEST_IMPL(242) \ + TEST_IMPL(243) \ + TEST_IMPL(244) \ + TEST_IMPL(245) \ + TEST_IMPL(246) \ + TEST_IMPL(247) \ + TEST_IMPL(248) \ + TEST_IMPL(249) \ + TEST_IMPL(250) \ + TEST_IMPL(251) \ + TEST_IMPL(252) \ + TEST_IMPL(253) \ + TEST_IMPL(254) \ + TEST_IMPL(255) +} // namespace SSE2NEON + +#endif diff --git a/deps/sse2neon/tests/impl.cpp b/deps/sse2neon/tests/impl.cpp new file mode 100644 index 000000000..3140b5aa4 --- /dev/null +++ b/deps/sse2neon/tests/impl.cpp @@ -0,0 +1,11883 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "binding.h" +#include "impl.h" + +// Try 10,000 random floating point values for each test we run +#define MAX_TEST_VALUE 10000 + +/* Pattern Matching for C macros. + * https://github.com/pfultz2/Cloak/wiki/C-Preprocessor-tricks,-tips,-and-idioms + */ + +/* catenate */ +#define PRIMITIVE_CAT(a, ...) a##__VA_ARGS__ + +#define IIF(c) PRIMITIVE_CAT(IIF_, c) +/* run the 2nd parameter */ +#define IIF_0(t, ...) __VA_ARGS__ +/* run the 1st parameter */ +#define IIF_1(t, ...) t + +// Some intrinsics operate on unaligned data types. +#if defined(__GNUC__) || defined(__clang__) +#define ALIGN_STRUCT(x) __attribute__((aligned(x))) +#elif defined(_MSC_VER) +#ifndef ALIGN_STRUCT +#define ALIGN_STRUCT(x) __declspec(align(x)) +#endif +#endif + +typedef int16_t ALIGN_STRUCT(1) unaligned_int16_t; +typedef int32_t ALIGN_STRUCT(1) unaligned_int32_t; +typedef int64_t ALIGN_STRUCT(1) unaligned_int64_t; + +// This program a set of unit tests to ensure that each SSE call provide the +// output we expect. If this fires an assert, then something didn't match up. +// +// Functions with "test_" prefix will be called in runSingleTest. +namespace SSE2NEON +{ +// Forward declaration +class SSE2NEONTestImpl : public SSE2NEONTest +{ +public: + SSE2NEONTestImpl(void); + result_t loadTestFloatPointers(uint32_t i); + result_t loadTestIntPointers(uint32_t i); + result_t runSingleTest(InstructionTest test, uint32_t i); + + float *mTestFloatPointer1; + float *mTestFloatPointer2; + int32_t *mTestIntPointer1; + int32_t *mTestIntPointer2; + float mTestFloats[MAX_TEST_VALUE]; + int32_t mTestInts[MAX_TEST_VALUE]; + int8_t mTestUnalignedInts[32] = { + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + }; + + virtual ~SSE2NEONTestImpl(void) + { + platformAlignedFree(mTestFloatPointer1); + platformAlignedFree(mTestFloatPointer2); + platformAlignedFree(mTestIntPointer1); + platformAlignedFree(mTestIntPointer2); + } + virtual void release(void) { delete this; } + virtual result_t runTest(InstructionTest test) + { + result_t ret = TEST_SUCCESS; + + // Test a whole bunch of values + for (uint32_t i = 0; i < (MAX_TEST_VALUE - 8); i++) { + ret = loadTestFloatPointers(i); // Load some random float values + if (ret == TEST_FAIL) + break; // load test float failed?? + ret = loadTestIntPointers(i); // load some random int values + if (ret == TEST_FAIL) + break; // load test float failed?? + // If we are testing the reciprocal, then invert the input data + // (easier for debugging) + if (test == it_mm_rcp_ps) { + mTestFloatPointer1[0] = 1.0f / mTestFloatPointer1[0]; + mTestFloatPointer1[1] = 1.0f / mTestFloatPointer1[1]; + mTestFloatPointer1[2] = 1.0f / mTestFloatPointer1[2]; + mTestFloatPointer1[3] = 1.0f / mTestFloatPointer1[3]; + } + if (test == it_mm_rcp_ps || test == it_mm_rcp_ss || + test == it_mm_rsqrt_ps || test == it_mm_rsqrt_ss) { + if ((rand() & 3) == 0) { + uint32_t r1 = rand() & 3; + uint32_t r2 = rand() & 3; + uint32_t r3 = rand() & 3; + uint32_t r4 = rand() & 3; + uint32_t r5 = rand() & 3; + uint32_t r6 = rand() & 3; + uint32_t r7 = rand() & 3; + uint32_t r8 = rand() & 3; + mTestFloatPointer1[r1] = 0.0f; + mTestFloatPointer1[r2] = 0.0f; + mTestFloatPointer1[r3] = 0.0f; + mTestFloatPointer1[r4] = 0.0f; + mTestFloatPointer1[r5] = -0.0f; + mTestFloatPointer1[r6] = -0.0f; + mTestFloatPointer1[r7] = -0.0f; + mTestFloatPointer1[r8] = -0.0f; + } + } + if (test == it_mm_cmpge_ps || test == it_mm_cmpge_ss || + test == it_mm_cmple_ps || test == it_mm_cmple_ss || + test == it_mm_cmpeq_ps || test == it_mm_cmpeq_ss) { + // Make sure at least one value is the same. + mTestFloatPointer1[3] = mTestFloatPointer2[3]; + } + + if (test == it_mm_cmpord_ps || test == it_mm_cmpord_ss || + test == it_mm_cmpunord_ps || test == it_mm_cmpunord_ss || + test == it_mm_cmpeq_ps || test == it_mm_cmpeq_ss || + test == it_mm_cmpge_ps || test == it_mm_cmpge_ss || + test == it_mm_cmpgt_ps || test == it_mm_cmpgt_ss || + test == it_mm_cmple_ps || test == it_mm_cmple_ss || + test == it_mm_cmplt_ps || test == it_mm_cmplt_ss || + test == it_mm_cmpneq_ps || test == it_mm_cmpneq_ss || + test == it_mm_cmpnge_ps || test == it_mm_cmpnge_ss || + test == it_mm_cmpngt_ps || test == it_mm_cmpngt_ss || + test == it_mm_cmpnle_ps || test == it_mm_cmpnle_ss || + test == it_mm_cmpnlt_ps || test == it_mm_cmpnlt_ss || + test == it_mm_comieq_ss || test == it_mm_ucomieq_ss || + test == it_mm_comige_ss || test == it_mm_ucomige_ss || + test == it_mm_comigt_ss || test == it_mm_ucomigt_ss || + test == it_mm_comile_ss || test == it_mm_ucomile_ss || + test == it_mm_comilt_ss || test == it_mm_ucomilt_ss || + test == it_mm_comineq_ss || test == it_mm_ucomineq_ss) { + // Make sure the NaN values are included in the testing + // one out of four times. + if ((rand() & 3) == 0) { + uint32_t r1 = rand() & 3; + uint32_t r2 = rand() & 3; + mTestFloatPointer1[r1] = nanf(""); + mTestFloatPointer2[r2] = nanf(""); + } + } + + if (test == it_mm_cmpord_pd || test == it_mm_cmpord_sd || + test == it_mm_cmpunord_pd || test == it_mm_cmpunord_sd || + test == it_mm_cmpeq_pd || test == it_mm_cmpeq_sd || + test == it_mm_cmpge_pd || test == it_mm_cmpge_sd || + test == it_mm_cmpgt_pd || test == it_mm_cmpgt_sd || + test == it_mm_cmple_pd || test == it_mm_cmple_sd || + test == it_mm_cmplt_pd || test == it_mm_cmplt_sd || + test == it_mm_cmpneq_pd || test == it_mm_cmpneq_sd || + test == it_mm_cmpnge_pd || test == it_mm_cmpnge_sd || + test == it_mm_cmpngt_pd || test == it_mm_cmpngt_sd || + test == it_mm_cmpnle_pd || test == it_mm_cmpnle_sd || + test == it_mm_cmpnlt_pd || test == it_mm_cmpnlt_sd || + test == it_mm_comieq_sd || test == it_mm_ucomieq_sd || + test == it_mm_comige_sd || test == it_mm_ucomige_sd || + test == it_mm_comigt_sd || test == it_mm_ucomigt_sd || + test == it_mm_comile_sd || test == it_mm_ucomile_sd || + test == it_mm_comilt_sd || test == it_mm_ucomilt_sd || + test == it_mm_comineq_sd || test == it_mm_ucomineq_sd) { + // Make sure the NaN values are included in the testing + // one out of four times. + if ((rand() & 3) == 0) { + // FIXME: + // The argument "0xFFFFFFFFFFFF" is a tricky workaround to + // set the NaN value for doubles. The code is not intuitive + // and should be fixed in the future. + uint32_t r1 = ((rand() & 1) << 1) + 1; + uint32_t r2 = ((rand() & 1) << 1) + 1; + mTestFloatPointer1[r1] = nanf("0xFFFFFFFFFFFF"); + mTestFloatPointer2[r2] = nanf("0xFFFFFFFFFFFF"); + } + } + + if (test == it_mm_max_pd || test == it_mm_max_sd || + test == it_mm_min_pd || test == it_mm_min_sd) { + // Make sure the positive/negative inifinity values are included + // in the testing one out of four times. + if ((rand() & 3) == 0) { + uint32_t r1 = ((rand() & 1) << 1) + 1; + uint32_t r2 = ((rand() & 1) << 1) + 1; + uint32_t r3 = ((rand() & 1) << 1) + 1; + uint32_t r4 = ((rand() & 1) << 1) + 1; + mTestFloatPointer1[r1] = INFINITY; + mTestFloatPointer2[r2] = INFINITY; + mTestFloatPointer1[r3] = -INFINITY; + mTestFloatPointer1[r4] = -INFINITY; + } + } + +#if SSE2NEON_PRECISE_MINMAX + if (test == it_mm_max_ps || test == it_mm_max_ss || + test == it_mm_min_ps || test == it_mm_min_ss) { + // Make sure the NaN values are included in the testing + // one out of four times. + if ((rand() & 3) == 0) { + uint32_t r1 = rand() & 3; + uint32_t r2 = rand() & 3; + mTestFloatPointer1[r1] = nanf(""); + mTestFloatPointer2[r2] = nanf(""); + } + } + + if (test == it_mm_max_pd || test == it_mm_max_sd || + test == it_mm_min_pd || test == it_mm_min_sd) { + // Make sure the NaN values are included in the testing + // one out of four times. + if ((rand() & 3) == 0) { + // FIXME: + // The argument "0xFFFFFFFFFFFF" is a tricky workaround to + // set the NaN value for doubles. The code is not intuitive + // and should be fixed in the future. + uint32_t r1 = ((rand() & 1) << 1) + 1; + uint32_t r2 = ((rand() & 1) << 1) + 1; + mTestFloatPointer1[r1] = nanf("0xFFFFFFFFFFFF"); + mTestFloatPointer2[r2] = nanf("0xFFFFFFFFFFFF"); + } + } +#endif + + // one out of every random 64 times or so, mix up the test floats to + // contain some integer values + if ((rand() & 63) == 0) { + uint32_t option = rand() & 3; + switch (option) { + // All integers.. + case 0: + mTestFloatPointer1[0] = float(mTestIntPointer1[0]); + mTestFloatPointer1[1] = float(mTestIntPointer1[1]); + mTestFloatPointer1[2] = float(mTestIntPointer1[2]); + mTestFloatPointer1[3] = float(mTestIntPointer1[3]); + + mTestFloatPointer2[0] = float(mTestIntPointer2[0]); + mTestFloatPointer2[1] = float(mTestIntPointer2[1]); + mTestFloatPointer2[2] = float(mTestIntPointer2[2]); + mTestFloatPointer2[3] = float(mTestIntPointer2[3]); + + break; + case 1: { + uint32_t index = rand() & 3; + mTestFloatPointer1[index] = float(mTestIntPointer1[index]); + index = rand() & 3; + mTestFloatPointer2[index] = float(mTestIntPointer2[index]); + } break; + case 2: { + uint32_t index1 = rand() & 3; + uint32_t index2 = rand() & 3; + mTestFloatPointer1[index1] = + float(mTestIntPointer1[index1]); + mTestFloatPointer1[index2] = + float(mTestIntPointer1[index2]); + index1 = rand() & 3; + index2 = rand() & 3; + mTestFloatPointer1[index1] = + float(mTestIntPointer1[index1]); + mTestFloatPointer1[index2] = + float(mTestIntPointer1[index2]); + } break; + case 3: + mTestFloatPointer1[0] = float(mTestIntPointer1[0]); + mTestFloatPointer1[1] = float(mTestIntPointer1[1]); + mTestFloatPointer1[2] = float(mTestIntPointer1[2]); + mTestFloatPointer1[3] = float(mTestIntPointer1[3]); + break; + } + if ((rand() & 3) == 0) { // one out of 4 times, make halves + for (uint32_t j = 0; j < 4; j++) { + mTestFloatPointer1[j] *= 0.5f; + mTestFloatPointer2[j] *= 0.5f; + } + } + } + + ret = runSingleTest(test, i); + if (ret == TEST_FAIL) // the test failed... + { + // Set a breakpoint here if you want to step through the failure + // case in the debugger + ret = runSingleTest(test, i); + break; + } + } + return ret; + } +}; + +const char *instructionString[] = { +#define _(x) #x, + INTRIN_LIST +#undef _ +}; + +// Produce rounding which is the same as SSE instructions with _MM_ROUND_NEAREST +// rounding mode +static inline float bankersRounding(float val) +{ + if (val < 0) + return -bankersRounding(-val); + + float ret; + float roundDown = floorf(val); // Round down value + float roundUp = ceilf(val); // Round up value + float diffDown = val - roundDown; + float diffUp = roundUp - val; + + if (diffDown < diffUp) { + /* If it's closer to the round down value, then use it */ + ret = roundDown; + } else if (diffDown > diffUp) { + /* If it's closer to the round up value, then use it */ + ret = roundUp; + } else { + /* If it's equidistant between round up and round down value, pick the + * one which is an even number */ + float half = roundDown / 2; + if (half != floorf(half)) { + /* If the round down value is odd, return the round up value */ + ret = roundUp; + } else { + /* If the round up value is odd, return the round down value */ + ret = roundDown; + } + } + return ret; +} + +static inline double bankersRounding(double val) +{ + if (val < 0) + return -bankersRounding(-val); + + double ret; + double roundDown = floor(val); // Round down value + double roundUp = ceil(val); // Round up value + double diffDown = val - roundDown; + double diffUp = roundUp - val; + + if (diffDown < diffUp) { + /* If it's closer to the round down value, then use it */ + ret = roundDown; + } else if (diffDown > diffUp) { + /* If it's closer to the round up value, then use it */ + ret = roundUp; + } else { + /* If it's equidistant between round up and round down value, pick the + * one which is an even number */ + double half = roundDown / 2; + if (half != floor(half)) { + /* If the round down value is odd, return the round up value */ + ret = roundUp; + } else { + /* If the round up value is odd, return the round down value */ + ret = roundDown; + } + } + return ret; +} + +// SplitMix64 PRNG by Sebastiano Vigna, see: +// +static uint64_t state; // the state of SplitMix64 PRNG +const double TWOPOWER64 = pow(2, 64); + +#define SSE2NEON_INIT_RNG(seed) \ + do { \ + state = seed; \ + } while (0) + +static double next() +{ + uint64_t z = (state += 0x9e3779b97f4a7c15); + z = (z ^ (z >> 30)) * 0xbf58476d1ce4e5b9; + z = (z ^ (z >> 27)) * 0x94d049bb133111eb; + return (double) (z ^ (z >> 31)); +} + +static float ranf() +{ + return (float) (next() / TWOPOWER64); +} + +static float ranf(float low, float high) +{ + return ranf() * (high - low) + low; +} + +// Enable the tests which are using the macro of another tests +result_t test_mm_slli_si128(const SSE2NEONTestImpl &impl, uint32_t iter); +result_t test_mm_srli_si128(const SSE2NEONTestImpl &impl, uint32_t iter); +result_t test_mm_shuffle_pi16(const SSE2NEONTestImpl &impl, uint32_t iter); + +// This function is not called from "runSingleTest", but for other intrinsic +// tests that might need to call "_mm_set_epi32". +__m128i do_mm_set_epi32(int32_t x, int32_t y, int32_t z, int32_t w) +{ + __m128i a = _mm_set_epi32(x, y, z, w); + validateInt32(a, w, z, y, x); + return a; +} + +// This function is not called from "runSingleTest", but for other intrinsic +// tests that might need to load __m64 data. +template +__m64 load_m64(const T *p) +{ + return *((const __m64 *) p); +} + +// This function is not called from "runSingleTest", but for other intrinsic +// tests that might need to call "_mm_load_ps". +template +__m128 load_m128(const T *p) +{ + return _mm_loadu_ps((const float *) p); +} + +// This function is not called from "runSingleTest", but for other intrinsic +// tests that might need to call "_mm_load_ps". +template +__m128i load_m128i(const T *p) +{ + __m128 a = _mm_loadu_ps((const float *) p); + __m128i ia = _mm_castps_si128(a); + return ia; +} + +// This function is not called from "runSingleTest", but for other intrinsic +// tests that might need to call "_mm_load_pd". +template +__m128d load_m128d(const T *p) +{ + return _mm_loadu_pd((const double *) p); +} + +// This function is not called from "runSingleTest", but for other intrinsic +// tests that might need to call "_mm_store_ps". +result_t do_mm_store_ps(float *p, float x, float y, float z, float w) +{ + __m128 a = _mm_set_ps(x, y, z, w); + _mm_store_ps(p, a); + ASSERT_RETURN(p[0] == w); + ASSERT_RETURN(p[1] == z); + ASSERT_RETURN(p[2] == y); + ASSERT_RETURN(p[3] == x); + return TEST_SUCCESS; +} + +// This function is not called from "runSingleTest", but for other intrinsic +// tests that might need to call "_mm_store_ps". +result_t do_mm_store_ps(int32_t *p, int32_t x, int32_t y, int32_t z, int32_t w) +{ + __m128i a = _mm_set_epi32(x, y, z, w); + _mm_store_ps((float *) p, _mm_castsi128_ps(a)); + ASSERT_RETURN(p[0] == w); + ASSERT_RETURN(p[1] == z); + ASSERT_RETURN(p[2] == y); + ASSERT_RETURN(p[3] == x); + return TEST_SUCCESS; +} + +float cmp_noNaN(float a, float b) +{ + return (!isnan(a) && !isnan(b)) ? ALL_BIT_1_32 : 0.0f; +} + +double cmp_noNaN(double a, double b) +{ + return (!isnan(a) && !isnan(b)) ? ALL_BIT_1_64 : 0.0f; +} + +float cmp_hasNaN(float a, float b) +{ + return (isnan(a) || isnan(b)) ? ALL_BIT_1_32 : 0.0f; +} + +double cmp_hasNaN(double a, double b) +{ + return (isnan(a) || isnan(b)) ? ALL_BIT_1_64 : 0.0f; +} + +int32_t comilt_ss(float a, float b) +{ + if (isnan(a) || isnan(b)) + return 0; + return (a < b); +} + +int32_t comigt_ss(float a, float b) +{ + if (isnan(a) || isnan(b)) + return 0; + return (a > b); +} + +int32_t comile_ss(float a, float b) +{ + if (isnan(a) || isnan(b)) + return 0; + return (a <= b); +} + +int32_t comige_ss(float a, float b) +{ + if (isnan(a) || isnan(b)) + return 0; + return (a >= b); +} + +int32_t comieq_ss(float a, float b) +{ + if (isnan(a) || isnan(b)) + return 0; + return (a == b); +} + +int32_t comineq_ss(float a, float b) +{ + if (isnan(a) || isnan(b)) + return 1; + return (a != b); +} + +static inline int16_t saturate_i16(int32_t a) +{ + if (a > INT16_MAX) + return INT16_MAX; + if (a < INT16_MIN) + return INT16_MIN; + return (int16_t) a; +} + +static inline uint16_t saturate_u16(uint32_t a) +{ + if (a > UINT16_MAX) + return UINT16_MAX; + return (uint16_t) a; +} + +uint32_t canonical_crc32_u8(uint32_t crc, uint8_t v) +{ + crc ^= v; + for (int bit = 0; bit < 8; bit++) { + if (crc & 1) + crc = (crc >> 1) ^ UINT32_C(0x82f63b78); + else + crc = (crc >> 1); + } + return crc; +} + +uint32_t canonical_crc32_u16(uint32_t crc, uint16_t v) +{ + crc = canonical_crc32_u8(crc, (uint8_t) (v & 0xff)); + crc = canonical_crc32_u8(crc, (uint8_t) ((v >> 8) & 0xff)); + return crc; +} + +uint32_t canonical_crc32_u32(uint32_t crc, uint32_t v) +{ + crc = canonical_crc32_u16(crc, (uint16_t) (v & 0xffff)); + crc = canonical_crc32_u16(crc, (uint16_t) (v >> 16) & 0xffff); + return crc; +} + +uint64_t canonical_crc32_u64(uint64_t crc, uint64_t v) +{ + crc = canonical_crc32_u32((uint32_t) (crc), (uint32_t) (v & 0xffffffff)); + crc = canonical_crc32_u32((uint32_t) (crc), + (uint32_t) ((v >> 32) & 0xffffffff)); + return crc; +} + +static const uint8_t crypto_aes_sbox[256] = { + 0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, + 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, + 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, + 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, + 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, + 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, + 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, + 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, + 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, + 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, + 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, + 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, + 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, + 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, + 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, + 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, + 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, + 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, + 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, + 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, + 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, + 0xb0, 0x54, 0xbb, 0x16, +}; + +static const uint8_t crypto_aes_rsbox[256] = { + 0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, + 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, + 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, + 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, + 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, + 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, + 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, + 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, + 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, + 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, + 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, + 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, + 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, + 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, + 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, + 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, + 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, + 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, + 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, + 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, + 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, + 0x55, 0x21, 0x0c, 0x7d, +}; + +// XT is x_time function that muliplies 'x' by 2 in GF(2^8) +#define XT(x) (((x) << 1) ^ ((((x) >> 7) & 1) * 0x1b)) + +inline __m128i aesenc_128_reference(__m128i a, __m128i b) +{ + uint8_t i, t, u, v[4][4]; + for (i = 0; i < 16; ++i) { + v[((i / 4) + 4 - (i % 4)) % 4][i % 4] = + crypto_aes_sbox[((SIMDVec *) &a)->m128_u8[i]]; + } + for (i = 0; i < 4; ++i) { + t = v[i][0]; + u = v[i][0] ^ v[i][1] ^ v[i][2] ^ v[i][3]; + v[i][0] ^= u ^ XT(v[i][0] ^ v[i][1]); + v[i][1] ^= u ^ XT(v[i][1] ^ v[i][2]); + v[i][2] ^= u ^ XT(v[i][2] ^ v[i][3]); + v[i][3] ^= u ^ XT(v[i][3] ^ t); + } + + for (i = 0; i < 16; ++i) { + ((SIMDVec *) &a)->m128_u8[i] = + v[i / 4][i % 4] ^ ((SIMDVec *) &b)->m128_u8[i]; + } + + return a; +} + +#define MULTIPLY(x, y) \ + (((y & 1) * x) ^ ((y >> 1 & 1) * XT(x)) ^ ((y >> 2 & 1) * XT(XT(x))) ^ \ + ((y >> 3 & 1) * XT(XT(XT(x)))) ^ ((y >> 4 & 1) * XT(XT(XT(XT(x)))))) + +inline __m128i aesdec_128_reference(__m128i a, __m128i b) +{ + uint8_t i, e, f, g, h, v[4][4]; + for (i = 0; i < 16; ++i) { + v[((i / 4) + (i % 4)) % 4][i % 4] = + crypto_aes_rsbox[((SIMDVec *) &a)->m128_u8[i]]; + } + + for (i = 0; i < 4; ++i) { + e = v[i][0]; + f = v[i][1]; + g = v[i][2]; + h = v[i][3]; + + v[i][0] = (uint8_t) (MULTIPLY(e, 0x0e) ^ MULTIPLY(f, 0x0b) ^ + MULTIPLY(g, 0x0d) ^ MULTIPLY(h, 0x09)); + v[i][1] = (uint8_t) (MULTIPLY(e, 0x09) ^ MULTIPLY(f, 0x0e) ^ + MULTIPLY(g, 0x0b) ^ MULTIPLY(h, 0x0d)); + v[i][2] = (uint8_t) (MULTIPLY(e, 0x0d) ^ MULTIPLY(f, 0x09) ^ + MULTIPLY(g, 0x0e) ^ MULTIPLY(h, 0x0b)); + v[i][3] = (uint8_t) (MULTIPLY(e, 0x0b) ^ MULTIPLY(f, 0x0d) ^ + MULTIPLY(g, 0x09) ^ MULTIPLY(h, 0x0e)); + } + + for (i = 0; i < 16; ++i) { + ((SIMDVec *) &a)->m128_u8[i] = + v[i / 4][i % 4] ^ ((SIMDVec *) &b)->m128_u8[i]; + } + return a; +} + +inline __m128i aesenclast_128_reference(__m128i s, __m128i rk) +{ + uint8_t i, v[4][4]; + for (i = 0; i < 16; ++i) + v[((i / 4) + 4 - (i % 4)) % 4][i % 4] = + crypto_aes_sbox[((SIMDVec *) &s)->m128_u8[i]]; + for (i = 0; i < 16; ++i) + ((SIMDVec *) &s)->m128_u8[i] = + v[i / 4][i % 4] ^ ((SIMDVec *) &rk)->m128_u8[i]; + return s; +} + +// Rotates right (circular right shift) value by "amount" positions +static inline uint32_t rotr(uint32_t value, uint32_t amount) +{ + return (value >> amount) | (value << ((32 - amount) & 31)); +} + +static inline uint64_t MUL(uint32_t a, uint32_t b) +{ + return (uint64_t) a * (uint64_t) b; +} + +// From BearSSL. Performs a 32-bit->64-bit carryless/polynomial +// long multiply. +// +// This implementation was chosen because it is reasonably fast +// without a lookup table or branching. +// +// This does it by splitting up the bits in a way that they +// would not carry, then combine them together with xor (a +// carryless add). +// +// https://www.bearssl.org/gitweb/?p=BearSSL;a=blob;f=src/hash/ghash_ctmul.c;h=3623202;hb=5f045c7#l164 +static uint64_t clmul_32(uint32_t x, uint32_t y) +{ + uint32_t x0, x1, x2, x3; + uint32_t y0, y1, y2, y3; + uint64_t z0, z1, z2, z3; + + x0 = x & (uint32_t) 0x11111111; + x1 = x & (uint32_t) 0x22222222; + x2 = x & (uint32_t) 0x44444444; + x3 = x & (uint32_t) 0x88888888; + y0 = y & (uint32_t) 0x11111111; + y1 = y & (uint32_t) 0x22222222; + y2 = y & (uint32_t) 0x44444444; + y3 = y & (uint32_t) 0x88888888; + z0 = MUL(x0, y0) ^ MUL(x1, y3) ^ MUL(x2, y2) ^ MUL(x3, y1); + z1 = MUL(x0, y1) ^ MUL(x1, y0) ^ MUL(x2, y3) ^ MUL(x3, y2); + z2 = MUL(x0, y2) ^ MUL(x1, y1) ^ MUL(x2, y0) ^ MUL(x3, y3); + z3 = MUL(x0, y3) ^ MUL(x1, y2) ^ MUL(x2, y1) ^ MUL(x3, y0); + z0 &= (uint64_t) 0x1111111111111111; + z1 &= (uint64_t) 0x2222222222222222; + z2 &= (uint64_t) 0x4444444444444444; + z3 &= (uint64_t) 0x8888888888888888; + return z0 | z1 | z2 | z3; +} + +// Performs a 64x64->128-bit carryless/polynomial long +// multiply, using the above routine to calculate the +// subproducts needed for the full-size multiply. +// +// This uses the Karatsuba algorithm. +// +// Normally, the Karatsuba algorithm isn't beneficial +// until very large numbers due to carry tracking and +// multiplication being relatively cheap. +// +// However, we have no carries and multiplication is +// definitely not cheap, so the Karatsuba algorithm is +// a low cost and easy optimization. +// +// https://en.m.wikipedia.org/wiki/Karatsuba_algorithm +// +// Note that addition and subtraction are both +// performed with xor, since all operations are +// carryless. +// +// The comments represent the actual mathematical +// operations being performed (instead of the bitwise +// operations) and to reflect the linked Wikipedia article. +static std::pair clmul_64(uint64_t x, uint64_t y) +{ + // B = 2 + // m = 32 + // x = (x1 * B^m) + x0 + uint32_t x0 = (uint32_t) (x & 0xffffffff); + uint32_t x1 = (uint32_t) (x >> 32); + // y = (y1 * B^m) + y0 + uint32_t y0 = (uint32_t) (y & 0xffffffff); + uint32_t y1 = (uint32_t) (y >> 32); + + // z0 = x0 * y0 + uint64_t z0 = clmul_32(x0, y0); + // z2 = x1 * y1 + uint64_t z2 = clmul_32(x1, y1); + // z1 = (x0 + x1) * (y0 + y1) - z0 - z2 + uint64_t z1 = clmul_32(x0 ^ x1, y0 ^ y1) ^ z0 ^ z2; + + // xy = z0 + (z1 * B^m) + (z2 * B^2m) + // note: z1 is split between the low and high halves + uint64_t xy0 = z0 ^ (z1 << 32); + uint64_t xy1 = z2 ^ (z1 >> 32); + + return std::make_pair(xy0, xy1); +} + +/* MMX */ +result_t test_mm_empty(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + return TEST_SUCCESS; +} + +/* SSE */ +result_t test_mm_add_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + const float *_b = impl.mTestFloatPointer2; + float dx = _a[0] + _b[0]; + float dy = _a[1] + _b[1]; + float dz = _a[2] + _b[2]; + float dw = _a[3] + _b[3]; + + __m128 a = load_m128(_a); + __m128 b = load_m128(_b); + __m128 c = _mm_add_ps(a, b); + return validateFloat(c, dx, dy, dz, dw); +} + +result_t test_mm_add_ss(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + const float *_b = impl.mTestFloatPointer1; + + float f0 = _a[0] + _b[0]; + float f1 = _a[1]; + float f2 = _a[2]; + float f3 = _a[3]; + + __m128 a = _mm_load_ps(_a); + __m128 b = _mm_load_ps(_b); + __m128 c = _mm_add_ss(a, b); + + return validateFloat(c, f0, f1, f2, f3); +} + +result_t test_mm_and_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + const float *_b = impl.mTestFloatPointer2; + __m128 a = load_m128(_a); + __m128 b = load_m128(_b); + __m128 c = _mm_and_ps(a, b); + // now for the assertion... + const uint32_t *ia = (const uint32_t *) &a; + const uint32_t *ib = (const uint32_t *) &b; + uint32_t r[4]; + r[0] = ia[0] & ib[0]; + r[1] = ia[1] & ib[1]; + r[2] = ia[2] & ib[2]; + r[3] = ia[3] & ib[3]; + __m128i ret = do_mm_set_epi32(r[3], r[2], r[1], r[0]); + result_t res = VALIDATE_INT32_M128(_mm_castps_si128(c), r); + if (res) { + res = VALIDATE_INT32_M128(ret, r); + } + return res; +} + +// r0 := ~a0 & b0 +// r1 := ~a1 & b1 +// r2 := ~a2 & b2 +// r3 := ~a3 & b3 +result_t test_mm_andnot_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + const float *_b = impl.mTestFloatPointer2; + + __m128 a = load_m128(_a); + __m128 b = load_m128(_b); + __m128 c = _mm_andnot_ps(a, b); + // now for the assertion... + const uint32_t *ia = (const uint32_t *) &a; + const uint32_t *ib = (const uint32_t *) &b; + uint32_t r[4]; + r[0] = ~ia[0] & ib[0]; + r[1] = ~ia[1] & ib[1]; + r[2] = ~ia[2] & ib[2]; + r[3] = ~ia[3] & ib[3]; + __m128i ret = do_mm_set_epi32(r[3], r[2], r[1], r[0]); + result_t res = TEST_FAIL; + res = VALIDATE_INT32_M128(_mm_castps_si128(c), r); + if (res) { + res = VALIDATE_INT32_M128(ret, r); + } + return res; +} + +result_t test_mm_avg_pu16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const uint16_t *_a = (const uint16_t *) impl.mTestIntPointer1; + const uint16_t *_b = (const uint16_t *) impl.mTestIntPointer2; + uint16_t d[4]; + d[0] = (uint16_t) ((_a[0] + _b[0] + 1) >> 1); + d[1] = (uint16_t) ((_a[1] + _b[1] + 1) >> 1); + d[2] = (uint16_t) ((_a[2] + _b[2] + 1) >> 1); + d[3] = (uint16_t) ((_a[3] + _b[3] + 1) >> 1); + + __m64 a = load_m64(_a); + __m64 b = load_m64(_b); + __m64 c = _mm_avg_pu16(a, b); + + return VALIDATE_UINT16_M64(c, d); +} + +result_t test_mm_avg_pu8(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const uint8_t *_a = (const uint8_t *) impl.mTestIntPointer1; + const uint8_t *_b = (const uint8_t *) impl.mTestIntPointer2; + uint8_t d[8]; + d[0] = (uint8_t) ((_a[0] + _b[0] + 1) >> 1); + d[1] = (uint8_t) ((_a[1] + _b[1] + 1) >> 1); + d[2] = (uint8_t) ((_a[2] + _b[2] + 1) >> 1); + d[3] = (uint8_t) ((_a[3] + _b[3] + 1) >> 1); + d[4] = (uint8_t) ((_a[4] + _b[4] + 1) >> 1); + d[5] = (uint8_t) ((_a[5] + _b[5] + 1) >> 1); + d[6] = (uint8_t) ((_a[6] + _b[6] + 1) >> 1); + d[7] = (uint8_t) ((_a[7] + _b[7] + 1) >> 1); + + __m64 a = load_m64(_a); + __m64 b = load_m64(_b); + __m64 c = _mm_avg_pu8(a, b); + + return VALIDATE_UINT8_M64(c, d); +} + +result_t test_mm_cmpeq_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + const float *_b = impl.mTestFloatPointer2; + __m128 a = load_m128(_a); + __m128 b = load_m128(_b); + + int32_t result[4]; + result[0] = _a[0] == _b[0] ? -1 : 0; + result[1] = _a[1] == _b[1] ? -1 : 0; + result[2] = _a[2] == _b[2] ? -1 : 0; + result[3] = _a[3] == _b[3] ? -1 : 0; + + __m128 ret = _mm_cmpeq_ps(a, b); + __m128i iret = _mm_castps_si128(ret); + return VALIDATE_INT32_M128(iret, result); +} + +result_t test_mm_cmpeq_ss(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + const float *_b = impl.mTestFloatPointer2; + __m128 a = load_m128(_a); + __m128 b = load_m128(_b); + + float result[4]; + result[0] = _a[0] == _b[0] ? ALL_BIT_1_32 : 0; + result[1] = _a[1]; + result[2] = _a[2]; + result[3] = _a[3]; + + __m128 ret = _mm_cmpeq_ss(a, b); + return validateFloat(ret, result[0], result[1], result[2], result[3]); +} + +result_t test_mm_cmpge_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + const float *_b = impl.mTestFloatPointer2; + __m128 a = load_m128(_a); + __m128 b = load_m128(_b); + + int32_t result[4]; + result[0] = _a[0] >= _b[0] ? -1 : 0; + result[1] = _a[1] >= _b[1] ? -1 : 0; + result[2] = _a[2] >= _b[2] ? -1 : 0; + result[3] = _a[3] >= _b[3] ? -1 : 0; + + __m128 ret = _mm_cmpge_ps(a, b); + __m128i iret = _mm_castps_si128(ret); + return VALIDATE_INT32_M128(iret, result); +} + +result_t test_mm_cmpge_ss(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + const float *_b = impl.mTestFloatPointer2; + __m128 a = load_m128(_a); + __m128 b = load_m128(_b); + + float result[4]; + result[0] = _a[0] >= _b[0] ? ALL_BIT_1_32 : 0; + result[1] = _a[1]; + result[2] = _a[2]; + result[3] = _a[3]; + + __m128 ret = _mm_cmpge_ss(a, b); + return validateFloat(ret, result[0], result[1], result[2], result[3]); +} + +result_t test_mm_cmpgt_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + const float *_b = impl.mTestFloatPointer2; + __m128 a = load_m128(_a); + __m128 b = load_m128(_b); + + int32_t result[4]; + result[0] = _a[0] > _b[0] ? -1 : 0; + result[1] = _a[1] > _b[1] ? -1 : 0; + result[2] = _a[2] > _b[2] ? -1 : 0; + result[3] = _a[3] > _b[3] ? -1 : 0; + + __m128 ret = _mm_cmpgt_ps(a, b); + __m128i iret = _mm_castps_si128(ret); + return VALIDATE_INT32_M128(iret, result); +} + +result_t test_mm_cmpgt_ss(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + const float *_b = impl.mTestFloatPointer2; + __m128 a = load_m128(_a); + __m128 b = load_m128(_b); + + float result[4]; + result[0] = _a[0] > _b[0] ? ALL_BIT_1_32 : 0; + result[1] = _a[1]; + result[2] = _a[2]; + result[3] = _a[3]; + + __m128 ret = _mm_cmpgt_ss(a, b); + return validateFloat(ret, result[0], result[1], result[2], result[3]); +} + +result_t test_mm_cmple_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + const float *_b = impl.mTestFloatPointer2; + __m128 a = load_m128(_a); + __m128 b = load_m128(_b); + + int32_t result[4]; + result[0] = _a[0] <= _b[0] ? -1 : 0; + result[1] = _a[1] <= _b[1] ? -1 : 0; + result[2] = _a[2] <= _b[2] ? -1 : 0; + result[3] = _a[3] <= _b[3] ? -1 : 0; + + __m128 ret = _mm_cmple_ps(a, b); + __m128i iret = _mm_castps_si128(ret); + return VALIDATE_INT32_M128(iret, result); +} + +result_t test_mm_cmple_ss(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + const float *_b = impl.mTestFloatPointer2; + __m128 a = load_m128(_a); + __m128 b = load_m128(_b); + + float result[4]; + result[0] = _a[0] <= _b[0] ? ALL_BIT_1_32 : 0; + result[1] = _a[1]; + result[2] = _a[2]; + result[3] = _a[3]; + + __m128 ret = _mm_cmple_ss(a, b); + return validateFloat(ret, result[0], result[1], result[2], result[3]); +} + +result_t test_mm_cmplt_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + const float *_b = impl.mTestFloatPointer2; + __m128 a = load_m128(_a); + __m128 b = load_m128(_b); + + int32_t result[4]; + result[0] = _a[0] < _b[0] ? -1 : 0; + result[1] = _a[1] < _b[1] ? -1 : 0; + result[2] = _a[2] < _b[2] ? -1 : 0; + result[3] = _a[3] < _b[3] ? -1 : 0; + + __m128 ret = _mm_cmplt_ps(a, b); + __m128i iret = _mm_castps_si128(ret); + return VALIDATE_INT32_M128(iret, result); +} + +result_t test_mm_cmplt_ss(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + const float *_b = impl.mTestFloatPointer2; + + __m128 a = load_m128(_a); + __m128 b = load_m128(_b); + + float result[4]; + result[0] = _a[0] < _b[0] ? ALL_BIT_1_32 : 0; + result[1] = _a[1]; + result[2] = _a[2]; + result[3] = _a[3]; + + __m128 ret = _mm_cmplt_ss(a, b); + return validateFloat(ret, result[0], result[1], result[2], result[3]); +} + +result_t test_mm_cmpneq_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + const float *_b = impl.mTestFloatPointer2; + __m128 a = load_m128(_a); + __m128 b = load_m128(_b); + + int32_t result[4]; + result[0] = _a[0] != _b[0] ? -1 : 0; + result[1] = _a[1] != _b[1] ? -1 : 0; + result[2] = _a[2] != _b[2] ? -1 : 0; + result[3] = _a[3] != _b[3] ? -1 : 0; + + __m128 ret = _mm_cmpneq_ps(a, b); + __m128i iret = _mm_castps_si128(ret); + return VALIDATE_INT32_M128(iret, result); +} + +result_t test_mm_cmpneq_ss(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + const float *_b = impl.mTestFloatPointer2; + __m128 a = load_m128(_a); + __m128 b = load_m128(_b); + + float result[4]; + result[0] = _a[0] != _b[0] ? ALL_BIT_1_32 : 0; + result[1] = _a[1]; + result[2] = _a[2]; + result[3] = _a[3]; + + __m128 ret = _mm_cmpneq_ss(a, b); + return validateFloat(ret, result[0], result[1], result[2], result[3]); +} + +result_t test_mm_cmpnge_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + const float *_b = impl.mTestFloatPointer2; + __m128 a = load_m128(_a); + __m128 b = load_m128(_b); + + float result[4]; + result[0] = !(_a[0] >= _b[0]) ? ALL_BIT_1_32 : 0; + result[1] = !(_a[1] >= _b[1]) ? ALL_BIT_1_32 : 0; + result[2] = !(_a[2] >= _b[2]) ? ALL_BIT_1_32 : 0; + result[3] = !(_a[3] >= _b[3]) ? ALL_BIT_1_32 : 0; + + __m128 ret = _mm_cmpnge_ps(a, b); + return validateFloat(ret, result[0], result[1], result[2], result[3]); +} + +result_t test_mm_cmpnge_ss(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + const float *_b = impl.mTestFloatPointer2; + __m128 a = load_m128(_a); + __m128 b = load_m128(_b); + + float result[4]; + result[0] = !(_a[0] >= _b[0]) ? ALL_BIT_1_32 : 0; + result[1] = _a[1]; + result[2] = _a[2]; + result[3] = _a[3]; + + __m128 ret = _mm_cmpnge_ss(a, b); + return validateFloat(ret, result[0], result[1], result[2], result[3]); +} + +result_t test_mm_cmpngt_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + const float *_b = impl.mTestFloatPointer2; + __m128 a = load_m128(_a); + __m128 b = load_m128(_b); + + float result[4]; + result[0] = !(_a[0] > _b[0]) ? ALL_BIT_1_32 : 0; + result[1] = !(_a[1] > _b[1]) ? ALL_BIT_1_32 : 0; + result[2] = !(_a[2] > _b[2]) ? ALL_BIT_1_32 : 0; + result[3] = !(_a[3] > _b[3]) ? ALL_BIT_1_32 : 0; + + __m128 ret = _mm_cmpngt_ps(a, b); + return validateFloat(ret, result[0], result[1], result[2], result[3]); +} + +result_t test_mm_cmpngt_ss(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + const float *_b = impl.mTestFloatPointer2; + __m128 a = load_m128(_a); + __m128 b = load_m128(_b); + + float result[4]; + result[0] = !(_a[0] > _b[0]) ? ALL_BIT_1_32 : 0; + result[1] = _a[1]; + result[2] = _a[2]; + result[3] = _a[3]; + + __m128 ret = _mm_cmpngt_ss(a, b); + return validateFloat(ret, result[0], result[1], result[2], result[3]); +} + +result_t test_mm_cmpnle_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + const float *_b = impl.mTestFloatPointer2; + __m128 a = load_m128(_a); + __m128 b = load_m128(_b); + + float result[4]; + result[0] = !(_a[0] <= _b[0]) ? ALL_BIT_1_32 : 0; + result[1] = !(_a[1] <= _b[1]) ? ALL_BIT_1_32 : 0; + result[2] = !(_a[2] <= _b[2]) ? ALL_BIT_1_32 : 0; + result[3] = !(_a[3] <= _b[3]) ? ALL_BIT_1_32 : 0; + + __m128 ret = _mm_cmpnle_ps(a, b); + return validateFloat(ret, result[0], result[1], result[2], result[3]); +} + +result_t test_mm_cmpnle_ss(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + const float *_b = impl.mTestFloatPointer2; + __m128 a = load_m128(_a); + __m128 b = load_m128(_b); + + float result[4]; + result[0] = !(_a[0] <= _b[0]) ? ALL_BIT_1_32 : 0; + result[1] = _a[1]; + result[2] = _a[2]; + result[3] = _a[3]; + + __m128 ret = _mm_cmpnle_ss(a, b); + return validateFloat(ret, result[0], result[1], result[2], result[3]); +} + +result_t test_mm_cmpnlt_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + const float *_b = impl.mTestFloatPointer2; + __m128 a = load_m128(_a); + __m128 b = load_m128(_b); + + float result[4]; + result[0] = !(_a[0] < _b[0]) ? ALL_BIT_1_32 : 0; + result[1] = !(_a[1] < _b[1]) ? ALL_BIT_1_32 : 0; + result[2] = !(_a[2] < _b[2]) ? ALL_BIT_1_32 : 0; + result[3] = !(_a[3] < _b[3]) ? ALL_BIT_1_32 : 0; + + __m128 ret = _mm_cmpnlt_ps(a, b); + return validateFloat(ret, result[0], result[1], result[2], result[3]); +} + +result_t test_mm_cmpnlt_ss(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + const float *_b = impl.mTestFloatPointer2; + __m128 a = load_m128(_a); + __m128 b = load_m128(_b); + + float result[4]; + result[0] = !(_a[0] < _b[0]) ? ALL_BIT_1_32 : 0; + result[1] = _a[1]; + result[2] = _a[2]; + result[3] = _a[3]; + + __m128 ret = _mm_cmpnlt_ss(a, b); + return validateFloat(ret, result[0], result[1], result[2], result[3]); +} + +result_t test_mm_cmpord_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + const float *_b = impl.mTestFloatPointer2; + __m128 a = load_m128(_a); + __m128 b = load_m128(_b); + + float result[4]; + + for (uint32_t i = 0; i < 4; i++) { + result[i] = cmp_noNaN(_a[i], _b[i]); + } + + __m128 ret = _mm_cmpord_ps(a, b); + + return validateFloat(ret, result[0], result[1], result[2], result[3]); +} + +result_t test_mm_cmpord_ss(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + const float *_b = impl.mTestFloatPointer2; + __m128 a = load_m128(_a); + __m128 b = load_m128(_b); + + float result[4]; + result[0] = cmp_noNaN(_a[0], _b[0]); + result[1] = _a[1]; + result[2] = _a[2]; + result[3] = _a[3]; + + __m128 ret = _mm_cmpord_ss(a, b); + + return validateFloat(ret, result[0], result[1], result[2], result[3]); +} + +result_t test_mm_cmpunord_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + const float *_b = impl.mTestFloatPointer2; + __m128 a = load_m128(_a); + __m128 b = load_m128(_b); + + float result[4]; + + for (uint32_t i = 0; i < 4; i++) { + result[i] = cmp_hasNaN(_a[i], _b[i]); + } + + __m128 ret = _mm_cmpunord_ps(a, b); + + return validateFloat(ret, result[0], result[1], result[2], result[3]); +} + +result_t test_mm_cmpunord_ss(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + const float *_b = impl.mTestFloatPointer2; + __m128 a = load_m128(_a); + __m128 b = load_m128(_b); + + float result[4]; + result[0] = cmp_hasNaN(_a[0], _b[0]); + result[1] = _a[1]; + result[2] = _a[2]; + result[3] = _a[3]; + + __m128 ret = _mm_cmpunord_ss(a, b); + + return validateFloat(ret, result[0], result[1], result[2], result[3]); +} + +result_t test_mm_comieq_ss(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + // FIXME: + // The GCC does not implement _mm_comieq_ss correctly. + // See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98612 for more + // information. +#if defined(__GNUC__) && !defined(__clang__) + return TEST_UNIMPL; +#else + const float *_a = impl.mTestFloatPointer1; + const float *_b = impl.mTestFloatPointer2; + + __m128 a = load_m128(_a); + __m128 b = load_m128(_b); + + int32_t result = comieq_ss(_a[0], _b[0]); + int32_t ret = _mm_comieq_ss(a, b); + + return result == ret ? TEST_SUCCESS : TEST_FAIL; +#endif +} + +result_t test_mm_comige_ss(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + const float *_b = impl.mTestFloatPointer2; + __m128 a = load_m128(_a); + __m128 b = load_m128(_b); + + int32_t result = comige_ss(_a[0], _b[0]); + int32_t ret = _mm_comige_ss(a, b); + + return result == ret ? TEST_SUCCESS : TEST_FAIL; +} + +result_t test_mm_comigt_ss(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + const float *_b = impl.mTestFloatPointer2; + __m128 a = load_m128(_a); + __m128 b = load_m128(_b); + + int32_t result = comigt_ss(_a[0], _b[0]); + int32_t ret = _mm_comigt_ss(a, b); + + return result == ret ? TEST_SUCCESS : TEST_FAIL; +} + +result_t test_mm_comile_ss(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + // FIXME: + // The GCC does not implement _mm_comile_ss correctly. + // See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98612 for more + // information. +#if defined(__GNUC__) && !defined(__clang__) + return TEST_UNIMPL; +#else + const float *_a = impl.mTestFloatPointer1; + const float *_b = impl.mTestFloatPointer2; + __m128 a = load_m128(_a); + __m128 b = load_m128(_b); + + int32_t result = comile_ss(_a[0], _b[0]); + int32_t ret = _mm_comile_ss(a, b); + + return result == ret ? TEST_SUCCESS : TEST_FAIL; +#endif +} + +result_t test_mm_comilt_ss(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + // FIXME: + // The GCC does not implement _mm_comilt_ss correctly. + // See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98612 for more + // information. +#if defined(__GNUC__) && !defined(__clang__) + return TEST_UNIMPL; +#else + const float *_a = impl.mTestFloatPointer1; + const float *_b = impl.mTestFloatPointer2; + __m128 a = load_m128(_a); + __m128 b = load_m128(_b); + + int32_t result = comilt_ss(_a[0], _b[0]); + + int32_t ret = _mm_comilt_ss(a, b); + + return result == ret ? TEST_SUCCESS : TEST_FAIL; +#endif +} + +result_t test_mm_comineq_ss(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + // FIXME: + // The GCC does not implement _mm_comineq_ss correctly. + // See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98612 for more + // information. +#if defined(__GNUC__) && !defined(__clang__) + return TEST_UNIMPL; +#else + const float *_a = impl.mTestFloatPointer1; + const float *_b = impl.mTestFloatPointer2; + __m128 a = load_m128(_a); + __m128 b = load_m128(_b); + + int32_t result = comineq_ss(_a[0], _b[0]); + int32_t ret = _mm_comineq_ss(a, b); + + return result == ret ? TEST_SUCCESS : TEST_FAIL; +#endif +} + +result_t test_mm_cvt_pi2ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + const int32_t *_b = impl.mTestIntPointer2; + + float dx = (float) _b[0]; + float dy = (float) _b[1]; + float dz = _a[2]; + float dw = _a[3]; + + __m128 a = load_m128(_a); + __m64 b = load_m64(_b); + __m128 c = _mm_cvt_pi2ps(a, b); + + return validateFloat(c, dx, dy, dz, dw); +} + +result_t test_mm_cvt_ps2pi(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + int32_t d[2]; + + for (int idx = 0; idx < 2; idx++) { + switch (iter & 0x3) { + case 0: + _MM_SET_ROUNDING_MODE(_MM_ROUND_NEAREST); + d[idx] = (int32_t) (bankersRounding(_a[idx])); + break; + case 1: + _MM_SET_ROUNDING_MODE(_MM_ROUND_DOWN); + d[idx] = (int32_t) (floorf(_a[idx])); + break; + case 2: + _MM_SET_ROUNDING_MODE(_MM_ROUND_UP); + d[idx] = (int32_t) (ceilf(_a[idx])); + break; + case 3: + _MM_SET_ROUNDING_MODE(_MM_ROUND_TOWARD_ZERO); + d[idx] = (int32_t) (_a[idx]); + break; + } + } + + __m128 a = load_m128(_a); + __m64 ret = _mm_cvt_ps2pi(a); + + return VALIDATE_INT32_M64(ret, d); +} + +result_t test_mm_cvt_si2ss(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + const int32_t b = *impl.mTestIntPointer2; + + float dx = (float) b; + float dy = _a[1]; + float dz = _a[2]; + float dw = _a[3]; + + __m128 a = load_m128(_a); + __m128 c = _mm_cvt_si2ss(a, b); + + return validateFloat(c, dx, dy, dz, dw); +} + +result_t test_mm_cvt_ss2si(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + int32_t d0; + + switch (iter & 0x3) { + case 0: + _MM_SET_ROUNDING_MODE(_MM_ROUND_NEAREST); + d0 = (int32_t) (bankersRounding(_a[0])); + break; + case 1: + _MM_SET_ROUNDING_MODE(_MM_ROUND_DOWN); + d0 = (int32_t) (floorf(_a[0])); + break; + case 2: + _MM_SET_ROUNDING_MODE(_MM_ROUND_UP); + d0 = (int32_t) (ceilf(_a[0])); + break; + case 3: + _MM_SET_ROUNDING_MODE(_MM_ROUND_TOWARD_ZERO); + d0 = (int32_t) (_a[0]); + break; + } + + __m128 a = load_m128(_a); + int32_t ret = _mm_cvt_ss2si(a); + return ret == d0 ? TEST_SUCCESS : TEST_FAIL; +} + +result_t test_mm_cvtpi16_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int16_t *_a = (const int16_t *) impl.mTestIntPointer1; + + float dx = (float) _a[0]; + float dy = (float) _a[1]; + float dz = (float) _a[2]; + float dw = (float) _a[3]; + + __m64 a = load_m64(_a); + __m128 c = _mm_cvtpi16_ps(a); + + return validateFloat(c, dx, dy, dz, dw); +} + +result_t test_mm_cvtpi32_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + const int32_t *_b = (const int32_t *) impl.mTestIntPointer2; + + float dx = (float) _b[0]; + float dy = (float) _b[1]; + float dz = _a[2]; + float dw = _a[3]; + + __m128 a = load_m128(_a); + __m64 b = load_m64(_b); + __m128 c = _mm_cvtpi32_ps(a, b); + + return validateFloat(c, dx, dy, dz, dw); +} + +result_t test_mm_cvtpi32x2_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int32_t *_a = (const int32_t *) impl.mTestIntPointer1; + const int32_t *_b = (const int32_t *) impl.mTestIntPointer2; + + float dx = (float) _a[0]; + float dy = (float) _a[1]; + float dz = (float) _b[0]; + float dw = (float) _b[1]; + + __m64 a = load_m64(_a); + __m64 b = load_m64(_b); + __m128 c = _mm_cvtpi32x2_ps(a, b); + + return validateFloat(c, dx, dy, dz, dw); +} + +result_t test_mm_cvtpi8_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int8_t *_a = (const int8_t *) impl.mTestIntPointer1; + + float dx = (float) _a[0]; + float dy = (float) _a[1]; + float dz = (float) _a[2]; + float dw = (float) _a[3]; + + __m64 a = load_m64(_a); + __m128 c = _mm_cvtpi8_ps(a); + + return validateFloat(c, dx, dy, dz, dw); +} + +result_t test_mm_cvtps_pi16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + int16_t rnd[4]; + + for (int i = 0; i < 4; i++) { + if ((float) INT16_MAX <= _a[i] && _a[i] <= (float) INT32_MAX) { + rnd[i] = INT16_MAX; + } else if (INT16_MIN < _a[i] && _a[i] < INT16_MAX) { + switch (iter & 0x3) { + case 0: + _MM_SET_ROUNDING_MODE(_MM_ROUND_NEAREST); + rnd[i] = (int16_t) bankersRounding(_a[i]); + break; + case 1: + _MM_SET_ROUNDING_MODE(_MM_ROUND_DOWN); + rnd[i] = (int16_t) floorf(_a[i]); + break; + case 2: + _MM_SET_ROUNDING_MODE(_MM_ROUND_UP); + rnd[i] = (int16_t) ceilf(_a[i]); + break; + case 3: + _MM_SET_ROUNDING_MODE(_MM_ROUND_TOWARD_ZERO); + rnd[i] = (int16_t) _a[i]; + break; + } + } else { + rnd[i] = INT16_MIN; + } + } + + __m128 a = load_m128(_a); + __m64 ret = _mm_cvtps_pi16(a); + return VALIDATE_INT16_M64(ret, rnd); +} + +result_t test_mm_cvtps_pi32(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + int32_t d[2] = {}; + + switch (iter & 0x3) { + case 0: + _MM_SET_ROUNDING_MODE(_MM_ROUND_NEAREST); + d[0] = (int32_t) bankersRounding(_a[0]); + d[1] = (int32_t) bankersRounding(_a[1]); + break; + case 1: + _MM_SET_ROUNDING_MODE(_MM_ROUND_DOWN); + d[0] = (int32_t) floorf(_a[0]); + d[1] = (int32_t) floorf(_a[1]); + break; + case 2: + _MM_SET_ROUNDING_MODE(_MM_ROUND_UP); + d[0] = (int32_t) ceilf(_a[0]); + d[1] = (int32_t) ceilf(_a[1]); + break; + case 3: + _MM_SET_ROUNDING_MODE(_MM_ROUND_TOWARD_ZERO); + d[0] = (int32_t) _a[0]; + d[1] = (int32_t) _a[1]; + break; + } + + __m128 a = load_m128(_a); + __m64 ret = _mm_cvtps_pi32(a); + + return VALIDATE_INT32_M64(ret, d); +} + +result_t test_mm_cvtps_pi8(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + int8_t rnd[8] = {}; + + for (int i = 0; i < 4; i++) { + if ((float) INT8_MAX <= _a[i] && _a[i] <= (float) INT32_MAX) { + rnd[i] = INT8_MAX; + } else if (INT8_MIN < _a[i] && _a[i] < INT8_MAX) { + switch (iter & 0x3) { + case 0: + _MM_SET_ROUNDING_MODE(_MM_ROUND_NEAREST); + rnd[i] = (int8_t) bankersRounding(_a[i]); + break; + case 1: + _MM_SET_ROUNDING_MODE(_MM_ROUND_DOWN); + rnd[i] = (int8_t) floorf(_a[i]); + break; + case 2: + _MM_SET_ROUNDING_MODE(_MM_ROUND_UP); + rnd[i] = (int8_t) ceilf(_a[i]); + break; + case 3: + _MM_SET_ROUNDING_MODE(_MM_ROUND_TOWARD_ZERO); + rnd[i] = (int8_t) _a[i]; + break; + } + } else { + rnd[i] = INT8_MIN; + } + } + + __m128 a = load_m128(_a); + __m64 ret = _mm_cvtps_pi8(a); + return VALIDATE_INT8_M64(ret, rnd); +} + +result_t test_mm_cvtpu16_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const uint16_t *_a = (const uint16_t *) impl.mTestIntPointer1; + + float dx = (float) _a[0]; + float dy = (float) _a[1]; + float dz = (float) _a[2]; + float dw = (float) _a[3]; + + __m64 a = load_m64(_a); + __m128 c = _mm_cvtpu16_ps(a); + + return validateFloat(c, dx, dy, dz, dw); +} + +result_t test_mm_cvtpu8_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const uint8_t *_a = (const uint8_t *) impl.mTestIntPointer1; + + float dx = (float) _a[0]; + float dy = (float) _a[1]; + float dz = (float) _a[2]; + float dw = (float) _a[3]; + + __m64 a = load_m64(_a); + __m128 c = _mm_cvtpu8_ps(a); + + return validateFloat(c, dx, dy, dz, dw); +} + +result_t test_mm_cvtsi32_ss(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + const int32_t b = *impl.mTestIntPointer2; + + float dx = (float) b; + float dy = _a[1]; + float dz = _a[2]; + float dw = _a[3]; + + __m128 a = load_m128(_a); + __m128 c = _mm_cvtsi32_ss(a, b); + + return validateFloat(c, dx, dy, dz, dw); +} + +result_t test_mm_cvtsi64_ss(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + const int64_t b = *(int64_t *) impl.mTestIntPointer2; + + float dx = (float) b; + float dy = _a[1]; + float dz = _a[2]; + float dw = _a[3]; + + __m128 a = load_m128(_a); + __m128 c = _mm_cvtsi64_ss(a, b); + + return validateFloat(c, dx, dy, dz, dw); +} + +result_t test_mm_cvtss_f32(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + + float f = _a[0]; + + __m128 a = load_m128(_a); + float c = _mm_cvtss_f32(a); + + return f == c ? TEST_SUCCESS : TEST_FAIL; +} + +result_t test_mm_cvtss_si32(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + + int32_t d0 = 0; + switch (iter & 0x3) { + case 0: + _MM_SET_ROUNDING_MODE(_MM_ROUND_NEAREST); + d0 = (int32_t) (bankersRounding(_a[0])); + break; + case 1: + _MM_SET_ROUNDING_MODE(_MM_ROUND_DOWN); + d0 = (int32_t) (floorf(_a[0])); + break; + case 2: + _MM_SET_ROUNDING_MODE(_MM_ROUND_UP); + d0 = (int32_t) (ceilf(_a[0])); + break; + case 3: + _MM_SET_ROUNDING_MODE(_MM_ROUND_TOWARD_ZERO); + d0 = (int32_t) (_a[0]); + break; + } + + __m128 a = load_m128(_a); + int32_t ret = _mm_cvtss_si32(a); + + return ret == d0 ? TEST_SUCCESS : TEST_FAIL; +} + +result_t test_mm_cvtss_si64(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + + int64_t d0 = 0; + switch (iter & 0x3) { + case 0: + _MM_SET_ROUNDING_MODE(_MM_ROUND_NEAREST); + d0 = (int64_t) (bankersRounding(_a[0])); + break; + case 1: + _MM_SET_ROUNDING_MODE(_MM_ROUND_DOWN); + d0 = (int64_t) (floorf(_a[0])); + break; + case 2: + _MM_SET_ROUNDING_MODE(_MM_ROUND_UP); + d0 = (int64_t) (ceilf(_a[0])); + break; + case 3: + _MM_SET_ROUNDING_MODE(_MM_ROUND_TOWARD_ZERO); + d0 = (int64_t) (_a[0]); + break; + } + + __m128 a = load_m128(_a); + int64_t ret = _mm_cvtss_si64(a); + + return ret == d0 ? TEST_SUCCESS : TEST_FAIL; +} + +result_t test_mm_cvtt_ps2pi(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + int32_t d[2]; + + d[0] = (int32_t) _a[0]; + d[1] = (int32_t) _a[1]; + + __m128 a = load_m128(_a); + __m64 ret = _mm_cvtt_ps2pi(a); + + return VALIDATE_INT32_M64(ret, d); +} + +result_t test_mm_cvtt_ss2si(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + + __m128 a = load_m128(_a); + int ret = _mm_cvtt_ss2si(a); + + return ret == (int32_t) _a[0] ? TEST_SUCCESS : TEST_FAIL; +} + +result_t test_mm_cvttps_pi32(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + int32_t d[2]; + + d[0] = (int32_t) _a[0]; + d[1] = (int32_t) _a[1]; + + __m128 a = load_m128(_a); + __m64 ret = _mm_cvttps_pi32(a); + + return VALIDATE_INT32_M64(ret, d); +} + +result_t test_mm_cvttss_si32(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + + __m128 a = load_m128(_a); + int ret = _mm_cvttss_si32(a); + + return ret == (int32_t) _a[0] ? TEST_SUCCESS : TEST_FAIL; +} + +result_t test_mm_cvttss_si64(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + + __m128 a = load_m128(_a); + int64_t ret = _mm_cvttss_si64(a); + + return ret == (int64_t) _a[0] ? TEST_SUCCESS : TEST_FAIL; +} + +result_t test_mm_div_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + const float *_b = impl.mTestFloatPointer2; + float f0 = _a[0] / _b[0]; + float f1 = _a[1] / _b[1]; + float f2 = _a[2] / _b[2]; + float f3 = _a[3] / _b[3]; + + __m128 a = load_m128(_a); + __m128 b = load_m128(_b); + __m128 c = _mm_div_ps(a, b); + +#if defined(__arm__) && !defined(__aarch64__) && !defined(_M_ARM64) + // The implementation of "_mm_div_ps()" on ARM 32bit doesn't use "DIV" + // instruction directly, instead it uses "FRECPE" instruction to approximate + // it. Therefore, the precision is not as small as other architecture + return validateFloatError(c, f0, f1, f2, f3, 0.00001f); +#else + return validateFloat(c, f0, f1, f2, f3); +#endif +} + +result_t test_mm_div_ss(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + const float *_b = impl.mTestFloatPointer2; + + float d0 = _a[0] / _b[0]; + float d1 = _a[1]; + float d2 = _a[2]; + float d3 = _a[3]; + + __m128 a = load_m128(_a); + __m128 b = load_m128(_b); + __m128 c = _mm_div_ss(a, b); + +#if defined(__arm__) && !defined(__aarch64__) && !defined(_M_ARM64) + // The implementation of "_mm_div_ps()" on ARM 32bit doesn't use "DIV" + // instruction directly, instead it uses "FRECPE" instruction to approximate + // it. Therefore, the precision is not as small as other architecture + return validateFloatError(c, d0, d1, d2, d3, 0.00001f); +#else + return validateFloat(c, d0, d1, d2, d3); +#endif +} + +result_t test_mm_extract_pi16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + // FIXME GCC has bug on "_mm_extract_pi16" intrinsics. We will enable this + // test when GCC fix this bug. + // see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98495 for more + // information +#if defined(__clang__) || defined(_MSC_VER) + uint64_t *_a = (uint64_t *) impl.mTestIntPointer1; + const int idx = iter & 0x3; + + __m64 a = load_m64(_a); + int c; + switch (idx) { + case 0: + c = _mm_extract_pi16(a, 0); + break; + case 1: + c = _mm_extract_pi16(a, 1); + break; + case 2: + c = _mm_extract_pi16(a, 2); + break; + case 3: + c = _mm_extract_pi16(a, 3); + break; + } + + ASSERT_RETURN((uint64_t) c == ((*_a >> (idx * 16)) & 0xFFFF)); + ASSERT_RETURN(0 == ((uint64_t) c & 0xFFFF0000)); + return TEST_SUCCESS; +#else + return TEST_UNIMPL; +#endif +} + +result_t test_mm_malloc(const SSE2NEONTestImpl &impl, uint32_t iter); +result_t test_mm_free(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + /* We verify _mm_malloc first, and there is no need to check _mm_free . */ + return test_mm_malloc(impl, iter); +} + +result_t test_mm_get_flush_zero_mode(const SSE2NEONTestImpl &impl, + uint32_t iter) +{ + int res_flush_zero_on, res_flush_zero_off; + _MM_SET_FLUSH_ZERO_MODE(_MM_FLUSH_ZERO_ON); + res_flush_zero_on = _MM_GET_FLUSH_ZERO_MODE() == _MM_FLUSH_ZERO_ON; + _MM_SET_FLUSH_ZERO_MODE(_MM_FLUSH_ZERO_OFF); + res_flush_zero_off = _MM_GET_FLUSH_ZERO_MODE() == _MM_FLUSH_ZERO_OFF; + + return (res_flush_zero_on && res_flush_zero_off) ? TEST_SUCCESS : TEST_FAIL; +} + +result_t test_mm_get_rounding_mode(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + int res_toward_zero, res_to_neg_inf, res_to_pos_inf, res_nearest; + _MM_SET_ROUNDING_MODE(_MM_ROUND_TOWARD_ZERO); + res_toward_zero = _MM_GET_ROUNDING_MODE() == _MM_ROUND_TOWARD_ZERO ? 1 : 0; + _MM_SET_ROUNDING_MODE(_MM_ROUND_DOWN); + res_to_neg_inf = _MM_GET_ROUNDING_MODE() == _MM_ROUND_DOWN ? 1 : 0; + _MM_SET_ROUNDING_MODE(_MM_ROUND_UP); + res_to_pos_inf = _MM_GET_ROUNDING_MODE() == _MM_ROUND_UP ? 1 : 0; + _MM_SET_ROUNDING_MODE(_MM_ROUND_NEAREST); + res_nearest = _MM_GET_ROUNDING_MODE() == _MM_ROUND_NEAREST ? 1 : 0; + + if (res_toward_zero && res_to_neg_inf && res_to_pos_inf && res_nearest) { + return TEST_SUCCESS; + } else { + return TEST_FAIL; + } +} + +result_t test_mm_getcsr(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + // store original csr value for post test restoring + unsigned int originalCsr = _mm_getcsr(); + + unsigned int roundings[] = {_MM_ROUND_TOWARD_ZERO, _MM_ROUND_DOWN, + _MM_ROUND_UP, _MM_ROUND_NEAREST}; + for (size_t i = 0; i < sizeof(roundings) / sizeof(roundings[0]); i++) { + _mm_setcsr(_mm_getcsr() | roundings[i]); + if ((_mm_getcsr() & roundings[i]) != roundings[i]) { + return TEST_FAIL; + } + } + + // restore original csr value for remaining tests + _mm_setcsr(originalCsr); + + return TEST_SUCCESS; +} + +result_t test_mm_insert_pi16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int16_t *_a = (const int16_t *) impl.mTestIntPointer1; + const int16_t insert = (int16_t) impl.mTestInts[iter]; + __m64 a; + __m64 b; + +#define TEST_IMPL(IDX) \ + int16_t d##IDX[4]; \ + for (int i = 0; i < 4; i++) { \ + d##IDX[i] = _a[i]; \ + } \ + d##IDX[IDX] = insert; \ + \ + a = load_m64(_a); \ + b = _mm_insert_pi16(a, insert, IDX); \ + CHECK_RESULT(VALIDATE_INT16_M64(b, d##IDX)) + + IMM_4_ITER +#undef TEST_IMPL + return TEST_SUCCESS; +} + +result_t test_mm_load_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *addr = impl.mTestFloatPointer1; + + __m128 ret = _mm_load_ps(addr); + + return validateFloat(ret, addr[0], addr[1], addr[2], addr[3]); +} + +result_t test_mm_load_ps1(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *addr = impl.mTestFloatPointer1; + + __m128 ret = _mm_load_ps1(addr); + + return validateFloat(ret, addr[0], addr[0], addr[0], addr[0]); +} + +result_t test_mm_load_ss(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *addr = impl.mTestFloatPointer1; + + __m128 ret = _mm_load_ss(addr); + + return validateFloat(ret, addr[0], 0, 0, 0); +} + +result_t test_mm_load1_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *p = impl.mTestFloatPointer1; + __m128 a = _mm_load1_ps(p); + return validateFloat(a, p[0], p[0], p[0], p[0]); +} + +result_t test_mm_loadh_pi(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *p1 = impl.mTestFloatPointer1; + const float *p2 = impl.mTestFloatPointer2; + const __m64 *b = (const __m64 *) p2; + __m128 a = _mm_load_ps(p1); + __m128 c = _mm_loadh_pi(a, b); + + return validateFloat(c, p1[0], p1[1], p2[0], p2[1]); +} + +result_t test_mm_loadl_pi(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *p1 = impl.mTestFloatPointer1; + const float *p2 = impl.mTestFloatPointer2; + __m128 a = _mm_load_ps(p1); + const __m64 *b = (const __m64 *) p2; + __m128 c = _mm_loadl_pi(a, b); + + return validateFloat(c, p2[0], p2[1], p1[2], p1[3]); +} + +result_t test_mm_loadr_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *addr = impl.mTestFloatPointer1; + + __m128 ret = _mm_loadr_ps(addr); + + return validateFloat(ret, addr[3], addr[2], addr[1], addr[0]); +} + +result_t test_mm_loadu_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *addr = impl.mTestFloatPointer1; + + __m128 ret = _mm_loadu_ps(addr); + + return validateFloat(ret, addr[0], addr[1], addr[2], addr[3]); +} + +result_t test_mm_loadu_si16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + // The GCC version before 11 does not implement intrinsic function + // _mm_loadu_si16. Check https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95483 + // for more information. +#if (defined(__GNUC__) && !defined(__clang__)) && (__GNUC__ <= 10) + return TEST_UNIMPL; +#else + const unaligned_int16_t *addr = + (const unaligned_int16_t *) (impl.mTestUnalignedInts + 1); + + __m128i ret = _mm_loadu_si16((const void *) addr); + + return validateInt16(ret, addr[0], 0, 0, 0, 0, 0, 0, 0); +#endif +} + +result_t test_mm_loadu_si64(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + // Versions of GCC prior to 9 do not implement intrinsic function + // _mm_loadu_si64. Check https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78782 + // for more information. +#if (defined(__GNUC__) && !defined(__clang__)) && (__GNUC__ < 9) + return TEST_UNIMPL; +#else + const unaligned_int64_t *addr = + (const unaligned_int64_t *) (impl.mTestUnalignedInts + 1); + + __m128i ret = _mm_loadu_si64((const void *) addr); + + return validateInt64(ret, addr[0], 0); +#endif +} + +result_t test_mm_malloc(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const size_t *a = (const size_t *) impl.mTestIntPointer1; + const size_t *b = (const size_t *) impl.mTestIntPointer2; + size_t size = *a % (1024 * 16) + 1; + size_t align = 2 << (*b % 5); + + void *p = _mm_malloc(size, align); + if (!p) + return TEST_FAIL; + result_t res = (((uintptr_t) p % align) == 0) ? TEST_SUCCESS : TEST_FAIL; + _mm_free(p); + return res; +} + +result_t test_mm_maskmove_si64(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const uint8_t *_a = (const uint8_t *) impl.mTestIntPointer1; + const uint8_t *_mask = (const uint8_t *) impl.mTestIntPointer2; + char mem_addr[16]; + + const __m64 *a = (const __m64 *) _a; + const __m64 *mask = (const __m64 *) _mask; + _mm_maskmove_si64(*a, *mask, (char *) mem_addr); + + for (int i = 0; i < 8; i++) { + if (_mask[i] >> 7) { + ASSERT_RETURN(_a[i] == (uint8_t) mem_addr[i]); + } + } + + return TEST_SUCCESS; +} + +result_t test_m_maskmovq(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + return test_mm_maskmove_si64(impl, iter); +} + +result_t test_mm_max_pi16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int16_t *_a = (const int16_t *) impl.mTestIntPointer1; + const int16_t *_b = (const int16_t *) impl.mTestIntPointer2; + int16_t c[4]; + + c[0] = _a[0] > _b[0] ? _a[0] : _b[0]; + c[1] = _a[1] > _b[1] ? _a[1] : _b[1]; + c[2] = _a[2] > _b[2] ? _a[2] : _b[2]; + c[3] = _a[3] > _b[3] ? _a[3] : _b[3]; + + __m64 a = load_m64(_a); + __m64 b = load_m64(_b); + __m64 ret = _mm_max_pi16(a, b); + return VALIDATE_INT16_M64(ret, c); +} + +result_t test_mm_max_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + const float *_b = impl.mTestFloatPointer2; + float c[4]; + + c[0] = _a[0] > _b[0] ? _a[0] : _b[0]; + c[1] = _a[1] > _b[1] ? _a[1] : _b[1]; + c[2] = _a[2] > _b[2] ? _a[2] : _b[2]; + c[3] = _a[3] > _b[3] ? _a[3] : _b[3]; + + __m128 a = load_m128(_a); + __m128 b = load_m128(_b); + __m128 ret = _mm_max_ps(a, b); + return validateFloat(ret, c[0], c[1], c[2], c[3]); +} + +result_t test_mm_max_pu8(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const uint8_t *_a = (const uint8_t *) impl.mTestIntPointer1; + const uint8_t *_b = (const uint8_t *) impl.mTestIntPointer2; + uint8_t c[8]; + + c[0] = _a[0] > _b[0] ? _a[0] : _b[0]; + c[1] = _a[1] > _b[1] ? _a[1] : _b[1]; + c[2] = _a[2] > _b[2] ? _a[2] : _b[2]; + c[3] = _a[3] > _b[3] ? _a[3] : _b[3]; + c[4] = _a[4] > _b[4] ? _a[4] : _b[4]; + c[5] = _a[5] > _b[5] ? _a[5] : _b[5]; + c[6] = _a[6] > _b[6] ? _a[6] : _b[6]; + c[7] = _a[7] > _b[7] ? _a[7] : _b[7]; + + __m64 a = load_m64(_a); + __m64 b = load_m64(_b); + __m64 ret = _mm_max_pu8(a, b); + return VALIDATE_UINT8_M64(ret, c); +} + +result_t test_mm_max_ss(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + const float *_b = impl.mTestFloatPointer1; + + float f0 = _a[0] > _b[0] ? _a[0] : _b[0]; + float f1 = _a[1]; + float f2 = _a[2]; + float f3 = _a[3]; + + __m128 a = _mm_load_ps(_a); + __m128 b = _mm_load_ps(_b); + __m128 c = _mm_max_ss(a, b); + + return validateFloat(c, f0, f1, f2, f3); +} + +result_t test_mm_min_pi16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int16_t *_a = (const int16_t *) impl.mTestIntPointer1; + const int16_t *_b = (const int16_t *) impl.mTestIntPointer2; + int16_t c[4]; + + c[0] = _a[0] < _b[0] ? _a[0] : _b[0]; + c[1] = _a[1] < _b[1] ? _a[1] : _b[1]; + c[2] = _a[2] < _b[2] ? _a[2] : _b[2]; + c[3] = _a[3] < _b[3] ? _a[3] : _b[3]; + + __m64 a = load_m64(_a); + __m64 b = load_m64(_b); + __m64 ret = _mm_min_pi16(a, b); + return VALIDATE_INT16_M64(ret, c); +} + +result_t test_mm_min_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + const float *_b = impl.mTestFloatPointer2; + float c[4]; + + c[0] = _a[0] < _b[0] ? _a[0] : _b[0]; + c[1] = _a[1] < _b[1] ? _a[1] : _b[1]; + c[2] = _a[2] < _b[2] ? _a[2] : _b[2]; + c[3] = _a[3] < _b[3] ? _a[3] : _b[3]; + + __m128 a = load_m128(_a); + __m128 b = load_m128(_b); + __m128 ret = _mm_min_ps(a, b); + return validateFloat(ret, c[0], c[1], c[2], c[3]); +} + +result_t test_mm_min_pu8(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const uint8_t *_a = (const uint8_t *) impl.mTestIntPointer1; + const uint8_t *_b = (const uint8_t *) impl.mTestIntPointer2; + uint8_t c[8]; + + c[0] = _a[0] < _b[0] ? _a[0] : _b[0]; + c[1] = _a[1] < _b[1] ? _a[1] : _b[1]; + c[2] = _a[2] < _b[2] ? _a[2] : _b[2]; + c[3] = _a[3] < _b[3] ? _a[3] : _b[3]; + c[4] = _a[4] < _b[4] ? _a[4] : _b[4]; + c[5] = _a[5] < _b[5] ? _a[5] : _b[5]; + c[6] = _a[6] < _b[6] ? _a[6] : _b[6]; + c[7] = _a[7] < _b[7] ? _a[7] : _b[7]; + + __m64 a = load_m64(_a); + __m64 b = load_m64(_b); + __m64 ret = _mm_min_pu8(a, b); + return VALIDATE_UINT8_M64(ret, c); +} + +result_t test_mm_min_ss(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + const float *_b = impl.mTestFloatPointer2; + float c; + + c = _a[0] < _b[0] ? _a[0] : _b[0]; + + __m128 a = load_m128(_a); + __m128 b = load_m128(_b); + __m128 ret = _mm_min_ss(a, b); + + return validateFloat(ret, c, _a[1], _a[2], _a[3]); +} + +result_t test_mm_move_ss(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + const float *_b = impl.mTestFloatPointer2; + __m128 a = load_m128(_a); + __m128 b = load_m128(_b); + + float result[4]; + result[0] = _b[0]; + result[1] = _a[1]; + result[2] = _a[2]; + result[3] = _a[3]; + + __m128 ret = _mm_move_ss(a, b); + return validateFloat(ret, result[0], result[1], result[2], result[3]); +} + +result_t test_mm_movehl_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + const float *_b = impl.mTestFloatPointer2; + + float f0 = _b[2]; + float f1 = _b[3]; + float f2 = _a[2]; + float f3 = _a[3]; + + __m128 a = load_m128(_a); + __m128 b = load_m128(_b); + __m128 ret = _mm_movehl_ps(a, b); + + return validateFloat(ret, f0, f1, f2, f3); +} + +result_t test_mm_movelh_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + const float *_b = impl.mTestFloatPointer2; + + float f0 = _a[0]; + float f1 = _a[1]; + float f2 = _b[0]; + float f3 = _b[1]; + + __m128 a = load_m128(_a); + __m128 b = load_m128(_b); + __m128 ret = _mm_movelh_ps(a, b); + + return validateFloat(ret, f0, f1, f2, f3); +} + +result_t test_mm_movemask_pi8(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const uint8_t *_a = (const uint8_t *) impl.mTestIntPointer1; + unsigned int _c = 0; + for (int i = 0; i < 8; i++) { + if (_a[i] & 0x80) { + _c |= (1 << i); + } + } + + const __m64 *a = (const __m64 *) _a; + int c = _mm_movemask_pi8(*a); + + ASSERT_RETURN((unsigned int) c == _c); + return TEST_SUCCESS; +} + +result_t test_mm_movemask_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *p = impl.mTestFloatPointer1; + int ret = 0; + + const uint32_t *ip = (const uint32_t *) p; + if (ip[0] & 0x80000000) { + ret |= 1; + } + if (ip[1] & 0x80000000) { + ret |= 2; + } + if (ip[2] & 0x80000000) { + ret |= 4; + } + if (ip[3] & 0x80000000) { + ret |= 8; + } + __m128 a = load_m128(p); + int val = _mm_movemask_ps(a); + return val == ret ? TEST_SUCCESS : TEST_FAIL; +} + +result_t test_mm_mul_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + const float *_b = impl.mTestFloatPointer2; + float dx = _a[0] * _b[0]; + float dy = _a[1] * _b[1]; + float dz = _a[2] * _b[2]; + float dw = _a[3] * _b[3]; + + __m128 a = load_m128(_a); + __m128 b = load_m128(_b); + __m128 c = _mm_mul_ps(a, b); + return validateFloat(c, dx, dy, dz, dw); +} + +result_t test_mm_mul_ss(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + const float *_b = impl.mTestFloatPointer2; + + float dx = _a[0] * _b[0]; + float dy = _a[1]; + float dz = _a[2]; + float dw = _a[3]; + + __m128 a = load_m128(_a); + __m128 b = load_m128(_b); + __m128 c = _mm_mul_ss(a, b); + return validateFloat(c, dx, dy, dz, dw); +} + +result_t test_mm_mulhi_pu16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const uint16_t *_a = (const uint16_t *) impl.mTestIntPointer1; + const uint16_t *_b = (const uint16_t *) impl.mTestIntPointer2; + uint16_t d[4]; + for (uint32_t i = 0; i < 4; i++) { + uint32_t m = (uint32_t) _a[i] * (uint32_t) _b[i]; + d[i] = (uint16_t) (m >> 16); + } + + __m64 a = load_m64(_a); + __m64 b = load_m64(_b); + __m64 c = _mm_mulhi_pu16(a, b); + return VALIDATE_UINT16_M64(c, d); +} + +result_t test_mm_or_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + const float *_b = impl.mTestFloatPointer2; + __m128 a = load_m128(_a); + __m128 b = load_m128(_b); + __m128 c = _mm_or_ps(a, b); + // now for the assertion... + const uint32_t *ia = (const uint32_t *) &a; + const uint32_t *ib = (const uint32_t *) &b; + uint32_t r[4]; + r[0] = ia[0] | ib[0]; + r[1] = ia[1] | ib[1]; + r[2] = ia[2] | ib[2]; + r[3] = ia[3] | ib[3]; + __m128i ret = do_mm_set_epi32(r[3], r[2], r[1], r[0]); + result_t res = VALIDATE_INT32_M128(_mm_castps_si128(c), r); + if (res) { + res = VALIDATE_INT32_M128(ret, r); + } + + return res; +} + +result_t test_m_pavgb(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + return test_mm_avg_pu8(impl, iter); +} + +result_t test_m_pavgw(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + return test_mm_avg_pu16(impl, iter); +} + +result_t test_m_pextrw(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + return test_mm_extract_pi16(impl, iter); +} + +result_t test_m_pinsrw(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + return test_mm_insert_pi16(impl, iter); +} + +result_t test_m_pmaxsw(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + return test_mm_max_pi16(impl, iter); +} + +result_t test_m_pmaxub(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + return test_mm_max_pu8(impl, iter); +} + +result_t test_m_pminsw(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + return test_mm_min_pi16(impl, iter); +} + +result_t test_m_pminub(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + return test_mm_min_pu8(impl, iter); +} + +result_t test_m_pmovmskb(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + return test_mm_movemask_pi8(impl, iter); +} + +result_t test_m_pmulhuw(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + return test_mm_mulhi_pu16(impl, iter); +} + +result_t test_mm_prefetch(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + typedef struct { + __m128 a; + float r[4]; + } prefetch_test_t; + prefetch_test_t test_vec[8] = { + { + _mm_set_ps(-0.1f, 0.2f, 0.3f, 0.4f), + {0.4f, 0.3f, 0.2f, -0.1f}, + }, + { + _mm_set_ps(0.5f, 0.6f, -0.7f, -0.8f), + {-0.8f, -0.7f, 0.6f, 0.5f}, + }, + { + _mm_set_ps(0.9f, 0.10f, -0.11f, 0.12f), + {0.12f, -0.11f, 0.10f, 0.9f}, + }, + { + _mm_set_ps(-1.1f, -2.1f, -3.1f, -4.1f), + {-4.1f, -3.1f, -2.1f, -1.1f}, + }, + { + _mm_set_ps(100.0f, -110.0f, 120.0f, -130.0f), + {-130.0f, 120.0f, -110.0f, 100.0f}, + }, + { + _mm_set_ps(200.5f, 210.5f, -220.5f, 230.5f), + {995.74f, -93.04f, 144.03f, 902.50f}, + }, + { + _mm_set_ps(10.11f, -11.12f, -12.13f, 13.14f), + {13.14f, -12.13f, -11.12f, 10.11f}, + }, + { + _mm_set_ps(10.1f, -20.2f, 30.3f, 40.4f), + {40.4f, 30.3f, -20.2f, 10.1f}, + }, + }; + + for (size_t i = 0; i < (sizeof(test_vec) / (sizeof(test_vec[0]))); i++) { + _mm_prefetch(((const char *) &test_vec[i].a), _MM_HINT_T0); + _mm_prefetch(((const char *) &test_vec[i].a), _MM_HINT_T1); + _mm_prefetch(((const char *) &test_vec[i].a), _MM_HINT_T2); + _mm_prefetch(((const char *) &test_vec[i].a), _MM_HINT_NTA); + } + + return TEST_SUCCESS; +} + +result_t test_m_psadbw(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const uint8_t *_a = (const uint8_t *) impl.mTestIntPointer1; + const uint8_t *_b = (const uint8_t *) impl.mTestIntPointer2; + uint16_t d = 0; + for (int i = 0; i < 8; i++) { + d += (uint16_t) abs(_a[i] - _b[i]); + } + + __m64 a = load_m64(_a); + __m64 b = load_m64(_b); + __m64 c = _m_psadbw(a, b); + return validateUInt16(c, d, 0, 0, 0); +} + +result_t test_m_pshufw(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + return test_mm_shuffle_pi16(impl, iter); +} + +result_t test_mm_rcp_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + float dx = 1.0f / _a[0]; + float dy = 1.0f / _a[1]; + float dz = 1.0f / _a[2]; + float dw = 1.0f / _a[3]; + + __m128 a = load_m128(_a); + __m128 c = _mm_rcp_ps(a); + return validateFloatError(c, dx, dy, dz, dw, 0.001f); +} + +result_t test_mm_rcp_ss(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + + float dx = 1.0f / _a[0]; + float dy = _a[1]; + float dz = _a[2]; + float dw = _a[3]; + __m128 a = load_m128(_a); + __m128 c = _mm_rcp_ss(a); + return validateFloatError(c, dx, dy, dz, dw, 0.001f); +} + +result_t test_mm_rsqrt_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = (const float *) impl.mTestFloatPointer1; + + float f0 = 1 / sqrtf(_a[0]); + float f1 = 1 / sqrtf(_a[1]); + float f2 = 1 / sqrtf(_a[2]); + float f3 = 1 / sqrtf(_a[3]); + + __m128 a = load_m128(_a); + __m128 c = _mm_rsqrt_ps(a); + + // Here, we ensure the error rate of "_mm_rsqrt_ps()" is under 0.1% compared + // to the C implementation. + return validateFloatError(c, f0, f1, f2, f3, 0.001f); +} + +result_t test_mm_rsqrt_ss(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = (const float *) impl.mTestFloatPointer1; + + float f0 = 1 / sqrtf(_a[0]); + float f1 = _a[1]; + float f2 = _a[2]; + float f3 = _a[3]; + + __m128 a = load_m128(_a); + __m128 c = _mm_rsqrt_ss(a); + + // Here, we ensure the error rate of "_mm_rsqrt_ps()" is under 0.1% compared + // to the C implementation. + return validateFloatError(c, f0, f1, f2, f3, 0.001f); +} + +result_t test_mm_sad_pu8(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const uint8_t *_a = (const uint8_t *) impl.mTestIntPointer1; + const uint8_t *_b = (const uint8_t *) impl.mTestIntPointer2; + uint16_t d = 0; + for (int i = 0; i < 8; i++) { + d += (uint16_t) abs(_a[i] - _b[i]); + } + + __m64 a = load_m64(_a); + __m64 b = load_m64(_b); + __m64 c = _mm_sad_pu8(a, b); + return validateUInt16(c, d, 0, 0, 0); +} + +result_t test_mm_set_flush_zero_mode(const SSE2NEONTestImpl &impl, + uint32_t iter) +{ + // TODO: + // After the behavior of denormal number and flush zero mode is fully + // investigated, the testing would be added. + return TEST_UNIMPL; +} + +result_t test_mm_set_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + float x = impl.mTestFloats[iter]; + float y = impl.mTestFloats[iter + 1]; + float z = impl.mTestFloats[iter + 2]; + float w = impl.mTestFloats[iter + 3]; + __m128 a = _mm_set_ps(x, y, z, w); + return validateFloat(a, w, z, y, x); +} + +result_t test_mm_set_ps1(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + float a = impl.mTestFloats[iter]; + + __m128 ret = _mm_set_ps1(a); + + return validateFloat(ret, a, a, a, a); +} + +OPTNONE result_t test_mm_set_rounding_mode(const SSE2NEONTestImpl &impl, + uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + result_t res_toward_zero, res_to_neg_inf, res_to_pos_inf, res_nearest; + + __m128 a = load_m128(_a); + __m128 b = _mm_setzero_ps(), c = _mm_setzero_ps(); + + _MM_SET_ROUNDING_MODE(_MM_ROUND_TOWARD_ZERO); + b = _mm_round_ps(a, _MM_FROUND_CUR_DIRECTION); + c = _mm_round_ps(a, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); + res_toward_zero = validate128(c, b); + + _MM_SET_ROUNDING_MODE(_MM_ROUND_DOWN); + b = _mm_round_ps(a, _MM_FROUND_CUR_DIRECTION); + c = _mm_round_ps(a, _MM_FROUND_TO_NEG_INF | _MM_FROUND_NO_EXC); + res_to_neg_inf = validate128(c, b); + + _MM_SET_ROUNDING_MODE(_MM_ROUND_UP); + b = _mm_round_ps(a, _MM_FROUND_CUR_DIRECTION); + c = _mm_round_ps(a, _MM_FROUND_TO_POS_INF | _MM_FROUND_NO_EXC); + res_to_pos_inf = validate128(c, b); + + _MM_SET_ROUNDING_MODE(_MM_ROUND_NEAREST); + b = _mm_round_ps(a, _MM_FROUND_CUR_DIRECTION); + c = _mm_round_ps(a, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); + res_nearest = validate128(c, b); + + if (res_toward_zero == TEST_SUCCESS && res_to_neg_inf == TEST_SUCCESS && + res_to_pos_inf == TEST_SUCCESS && res_nearest == TEST_SUCCESS) { + return TEST_SUCCESS; + } else { + return TEST_FAIL; + } +} + +result_t test_mm_set_ss(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + float a = impl.mTestFloats[iter]; + __m128 c = _mm_set_ss(a); + return validateFloat(c, a, 0, 0, 0); +} + +result_t test_mm_set1_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + float w = impl.mTestFloats[iter]; + __m128 a = _mm_set1_ps(w); + return validateFloat(a, w, w, w, w); +} + +result_t test_mm_setcsr(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + return test_mm_set_rounding_mode(impl, iter); +} + +result_t test_mm_setr_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + float x = impl.mTestFloats[iter]; + float y = impl.mTestFloats[iter + 1]; + float z = impl.mTestFloats[iter + 2]; + float w = impl.mTestFloats[iter + 3]; + + __m128 ret = _mm_setr_ps(w, z, y, x); + + return validateFloat(ret, w, z, y, x); +} + +result_t test_mm_setzero_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + __m128 a = _mm_setzero_ps(); + return validateFloat(a, 0, 0, 0, 0); +} + +result_t test_mm_sfence(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + /* FIXME: Assume that memory barriers always function as intended. */ + return TEST_SUCCESS; +} + +result_t test_mm_shuffle_pi16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ +#if (__GNUC__ == 8) || (__GNUC__ == 9 && __GNUC_MINOR__ == 2) +#error Using older gcc versions can lead to an operand mismatch error. This issue affects all versions prior to gcc 10. +#else + const int16_t *_a = (const int16_t *) impl.mTestIntPointer1; + __m64 a; + __m64 d; + int16_t _d[4]; +#define TEST_IMPL(IDX) \ + a = load_m64(_a); \ + d = _mm_shuffle_pi16(a, IDX); \ + \ + _d[0] = _a[IDX & 0x3]; \ + _d[1] = _a[(IDX >> 2) & 0x3]; \ + _d[2] = _a[(IDX >> 4) & 0x3]; \ + _d[3] = _a[(IDX >> 6) & 0x3]; \ + if (VALIDATE_INT16_M64(d, _d) != TEST_SUCCESS) { \ + return TEST_FAIL; \ + } + + IMM_256_ITER +#undef TEST_IMPL + return TEST_SUCCESS; +#endif +} + +// Note, NEON does not have a general purpose shuffled command like SSE. +// When invoking this method, there is special code for a number of the most +// common shuffle permutations +result_t test_mm_shuffle_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + const float *_b = impl.mTestFloatPointer2; + result_t isValid = TEST_SUCCESS; + __m128 a = load_m128(_a); + __m128 b = load_m128(_b); + // Test many permutations of the shuffle operation, including all + // permutations which have an optimized/customized implementation + __m128 ret; + ret = _mm_shuffle_ps(a, b, _MM_SHUFFLE(0, 1, 2, 3)); + if (!validateFloat(ret, _a[3], _a[2], _b[1], _b[0])) { + isValid = TEST_FAIL; + } + ret = _mm_shuffle_ps(a, b, _MM_SHUFFLE(3, 2, 1, 0)); + if (!validateFloat(ret, _a[0], _a[1], _b[2], _b[3])) { + isValid = TEST_FAIL; + } + ret = _mm_shuffle_ps(a, b, _MM_SHUFFLE(0, 0, 1, 1)); + if (!validateFloat(ret, _a[1], _a[1], _b[0], _b[0])) { + isValid = TEST_FAIL; + } + ret = _mm_shuffle_ps(a, b, _MM_SHUFFLE(3, 1, 0, 2)); + if (!validateFloat(ret, _a[2], _a[0], _b[1], _b[3])) { + isValid = TEST_FAIL; + } + ret = _mm_shuffle_ps(a, b, _MM_SHUFFLE(1, 0, 3, 2)); + if (!validateFloat(ret, _a[2], _a[3], _b[0], _b[1])) { + isValid = TEST_FAIL; + } + ret = _mm_shuffle_ps(a, b, _MM_SHUFFLE(2, 3, 0, 1)); + if (!validateFloat(ret, _a[1], _a[0], _b[3], _b[2])) { + isValid = TEST_FAIL; + } + ret = _mm_shuffle_ps(a, b, _MM_SHUFFLE(0, 0, 2, 2)); + if (!validateFloat(ret, _a[2], _a[2], _b[0], _b[0])) { + isValid = TEST_FAIL; + } + ret = _mm_shuffle_ps(a, b, _MM_SHUFFLE(2, 2, 0, 0)); + if (!validateFloat(ret, _a[0], _a[0], _b[2], _b[2])) { + isValid = TEST_FAIL; + } + ret = _mm_shuffle_ps(a, b, _MM_SHUFFLE(3, 2, 0, 2)); + if (!validateFloat(ret, _a[2], _a[0], _b[2], _b[3])) { + isValid = TEST_FAIL; + } + ret = _mm_shuffle_ps(a, b, _MM_SHUFFLE(1, 1, 3, 3)); + if (!validateFloat(ret, _a[3], _a[3], _b[1], _b[1])) { + isValid = TEST_FAIL; + } + ret = _mm_shuffle_ps(a, b, _MM_SHUFFLE(2, 0, 1, 0)); + if (!validateFloat(ret, _a[0], _a[1], _b[0], _b[2])) { + isValid = TEST_FAIL; + } + ret = _mm_shuffle_ps(a, b, _MM_SHUFFLE(2, 0, 0, 1)); + if (!validateFloat(ret, _a[1], _a[0], _b[0], _b[2])) { + isValid = TEST_FAIL; + } + ret = _mm_shuffle_ps(a, b, _MM_SHUFFLE(2, 0, 3, 2)); + if (!validateFloat(ret, _a[2], _a[3], _b[0], _b[2])) { + isValid = TEST_FAIL; + } + + return isValid; +} + +result_t test_mm_sqrt_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = (const float *) impl.mTestFloatPointer1; + + float f0 = sqrtf(_a[0]); + float f1 = sqrtf(_a[1]); + float f2 = sqrtf(_a[2]); + float f3 = sqrtf(_a[3]); + + __m128 a = load_m128(_a); + __m128 c = _mm_sqrt_ps(a); + +#if defined(__arm__) && !defined(__arm64__) && !defined(_M_ARM64) + // Here, we ensure the error rate of "_mm_sqrt_ps()" ARMv7-A implementation + // is under 10^-4% compared to the C implementation. + return validateFloatError(c, f0, f1, f2, f3, 0.0001f); +#else + // Here, we ensure the error rate of "_mm_sqrt_ps()" is under 10^-6% + // compared to the C implementation. + return validateFloatError(c, f0, f1, f2, f3, 0.000001f); +#endif +} + +result_t test_mm_sqrt_ss(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = (const float *) impl.mTestFloatPointer1; + + float f0 = sqrtf(_a[0]); + float f1 = _a[1]; + float f2 = _a[2]; + float f3 = _a[3]; + + __m128 a = load_m128(_a); + __m128 c = _mm_sqrt_ss(a); + +#if defined(__arm__) && !defined(__arm64__) && !defined(_M_ARM64) + // Here, we ensure the error rate of "_mm_sqrt_ps()" ARMv7-A implementation + // is under 10^-4% compared to the C implementation. + return validateFloatError(c, f0, f1, f2, f3, 0.0001f); +#else + // Here, we ensure the error rate of "_mm_sqrt_ps()" is under 10^-6% + // compared to the C implementation. + return validateFloatError(c, f0, f1, f2, f3, 0.000001f); +#endif +} + +result_t test_mm_store_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + int32_t *p = impl.mTestIntPointer1; + int32_t x = impl.mTestInts[iter]; + int32_t y = impl.mTestInts[iter + 1]; + int32_t z = impl.mTestInts[iter + 2]; + int32_t w = impl.mTestInts[iter + 3]; + __m128i a = _mm_set_epi32(x, y, z, w); + _mm_store_ps((float *) p, _mm_castsi128_ps(a)); + ASSERT_RETURN(p[0] == w); + ASSERT_RETURN(p[1] == z); + ASSERT_RETURN(p[2] == y); + ASSERT_RETURN(p[3] == x); + return TEST_SUCCESS; +} + +result_t test_mm_store_ps1(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + float *p = impl.mTestFloatPointer1; + float d[4]; + + __m128 a = load_m128(p); + _mm_store_ps1(d, a); + + ASSERT_RETURN(d[0] == *p); + ASSERT_RETURN(d[1] == *p); + ASSERT_RETURN(d[2] == *p); + ASSERT_RETURN(d[3] == *p); + return TEST_SUCCESS; +} + +result_t test_mm_store_ss(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + float x = impl.mTestFloats[iter]; + float p[4]; + + __m128 a = _mm_set_ss(x); + _mm_store_ss(p, a); + ASSERT_RETURN(p[0] == x); + return TEST_SUCCESS; +} + +result_t test_mm_store1_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + float *p = impl.mTestFloatPointer1; + float d[4]; + + __m128 a = load_m128(p); + _mm_store1_ps(d, a); + + ASSERT_RETURN(d[0] == *p); + ASSERT_RETURN(d[1] == *p); + ASSERT_RETURN(d[2] == *p); + ASSERT_RETURN(d[3] == *p); + return TEST_SUCCESS; +} + +result_t test_mm_storeh_pi(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *p = impl.mTestFloatPointer1; + float d[4] = {1.0f, 2.0f, 3.0f, 4.0f}; + __m128 a = _mm_load_ps(p); + __m64 *b = (__m64 *) d; + + _mm_storeh_pi(b, a); + ASSERT_RETURN(d[0] == p[2]); + ASSERT_RETURN(d[1] == p[3]); + ASSERT_RETURN(d[2] == 3.0f); + ASSERT_RETURN(d[3] == 4.0f); + return TEST_SUCCESS; +} + +result_t test_mm_storel_pi(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *p = impl.mTestFloatPointer1; + float d[4] = {1.0f, 2.0f, 3.0f, 4.0f}; + __m128 a = _mm_load_ps(p); + __m64 *b = (__m64 *) d; + + _mm_storel_pi(b, a); + ASSERT_RETURN(d[0] == p[0]); + ASSERT_RETURN(d[1] == p[1]); + ASSERT_RETURN(d[2] == 3.0f); + ASSERT_RETURN(d[3] == 4.0f); + return TEST_SUCCESS; +} + +result_t test_mm_storer_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + float *p = impl.mTestFloatPointer1; + float d[4]; + + __m128 a = load_m128(p); + _mm_storer_ps(d, a); + + ASSERT_RETURN(d[0] == p[3]); + ASSERT_RETURN(d[1] == p[2]); + ASSERT_RETURN(d[2] == p[1]); + ASSERT_RETURN(d[3] == p[0]); + return TEST_SUCCESS; +} + +result_t test_mm_storeu_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + float *_a = impl.mTestFloatPointer1; + float f[4]; + __m128 a = _mm_load_ps(_a); + + _mm_storeu_ps(f, a); + return validateFloat(a, f[0], f[1], f[2], f[3]); +} + +result_t test_mm_storeu_si16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + // The GCC version before 11 does not implement intrinsic function + // _mm_storeu_si16. Check https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95483 + // for more information. +#if (defined(__GNUC__) && !defined(__clang__)) && (__GNUC__ <= 10) + return TEST_UNIMPL; +#else + const int32_t *_a = (const int32_t *) impl.mTestIntPointer1; + __m128i b = _mm_setzero_si128(); + __m128i a = load_m128i(_a); + _mm_storeu_si16(&b, a); + int16_t *_b = (int16_t *) &b; + int16_t *_c = (int16_t *) &a; + return validateInt16(b, _c[0], _b[1], _b[2], _b[3], _b[4], _b[5], _b[6], + _b[7]); +#endif +} + +result_t test_mm_storeu_si64(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + // Versions of GCC prior to 9 do not implement intrinsic function + // _mm_storeu_si64. Check https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87558 + // for more information. +#if (defined(__GNUC__) && !defined(__clang__)) && (__GNUC__ < 9) + return TEST_UNIMPL; +#else + const int32_t *_a = (const int32_t *) impl.mTestIntPointer1; + __m128i b = _mm_setzero_si128(); + __m128i a = load_m128i(_a); + _mm_storeu_si64(&b, a); + int64_t *_b = (int64_t *) &b; + int64_t *_c = (int64_t *) &a; + return validateInt64(b, _c[0], _b[1]); +#endif +} + +result_t test_mm_stream_pi(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int64_t *_a = (const int64_t *) impl.mTestIntPointer1; + __m64 a = load_m64(_a); + __m64 p; + + _mm_stream_pi(&p, a); + return validateInt64(p, _a[0]); +} + +result_t test_mm_stream_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + __m128 a = load_m128(_a); + alignas(16) float p[4]; + + _mm_stream_ps(p, a); + ASSERT_RETURN(p[0] == _a[0]); + ASSERT_RETURN(p[1] == _a[1]); + ASSERT_RETURN(p[2] == _a[2]); + ASSERT_RETURN(p[3] == _a[3]); + return TEST_SUCCESS; +} + +result_t test_mm_sub_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + const float *_b = impl.mTestFloatPointer2; + float dx = _a[0] - _b[0]; + float dy = _a[1] - _b[1]; + float dz = _a[2] - _b[2]; + float dw = _a[3] - _b[3]; + + __m128 a = load_m128(_a); + __m128 b = load_m128(_b); + __m128 c = _mm_sub_ps(a, b); + return validateFloat(c, dx, dy, dz, dw); +} + +result_t test_mm_sub_ss(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + const float *_b = impl.mTestFloatPointer2; + float dx = _a[0] - _b[0]; + float dy = _a[1]; + float dz = _a[2]; + float dw = _a[3]; + + __m128 a = load_m128(_a); + __m128 b = load_m128(_b); + __m128 c = _mm_sub_ss(a, b); + return validateFloat(c, dx, dy, dz, dw); +} + +result_t test_mm_ucomieq_ss(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + // _mm_ucomieq_ss is equal to _mm_comieq_ss + return test_mm_comieq_ss(impl, iter); +} + +result_t test_mm_ucomige_ss(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + // _mm_ucomige_ss is equal to _mm_comige_ss + return test_mm_comige_ss(impl, iter); +} + +result_t test_mm_ucomigt_ss(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + // _mm_ucomigt_ss is equal to _mm_comigt_ss + return test_mm_comigt_ss(impl, iter); +} + +result_t test_mm_ucomile_ss(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + // _mm_ucomile_ss is equal to _mm_comile_ss + return test_mm_comile_ss(impl, iter); +} + +result_t test_mm_ucomilt_ss(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + // _mm_ucomilt_ss is equal to _mm_comilt_ss + return test_mm_comilt_ss(impl, iter); +} + +result_t test_mm_ucomineq_ss(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + // _mm_ucomineq_ss is equal to _mm_comineq_ss + return test_mm_comineq_ss(impl, iter); +} + +result_t test_mm_undefined_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + __m128 a = _mm_undefined_ps(); + a = _mm_xor_ps(a, a); + return validateFloat(a, 0, 0, 0, 0); +} + +result_t test_mm_unpackhi_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + float *_a = impl.mTestFloatPointer1; + float *_b = impl.mTestFloatPointer1; + + float f0 = _a[2]; + float f1 = _b[2]; + float f2 = _a[3]; + float f3 = _b[3]; + + __m128 a = _mm_load_ps(_a); + __m128 b = _mm_load_ps(_b); + __m128 c = _mm_unpackhi_ps(a, b); + return validateFloat(c, f0, f1, f2, f3); +} + +result_t test_mm_unpacklo_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + float *_a = impl.mTestFloatPointer1; + float *_b = impl.mTestFloatPointer1; + + float f0 = _a[0]; + float f1 = _b[0]; + float f2 = _a[1]; + float f3 = _b[1]; + + __m128 a = _mm_load_ps(_a); + __m128 b = _mm_load_ps(_b); + __m128 c = _mm_unpacklo_ps(a, b); + + return validateFloat(c, f0, f1, f2, f3); +} + +result_t test_mm_xor_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int32_t *_a = (const int32_t *) impl.mTestFloatPointer1; + const int32_t *_b = (const int32_t *) impl.mTestFloatPointer2; + float d0 = sse2neon_tool_recast_f32(_a[0] ^ _b[0]); + float d1 = sse2neon_tool_recast_f32(_a[1] ^ _b[1]); + float d2 = sse2neon_tool_recast_f32(_a[2] ^ _b[2]); + float d3 = sse2neon_tool_recast_f32(_a[3] ^ _b[3]); + + __m128 a = load_m128(_a); + __m128 b = load_m128(_b); + __m128 c = _mm_xor_ps(a, b); + + return validateFloat(c, d0, d1, d2, d3); +} + +/* SSE2 */ +result_t test_mm_add_epi16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int16_t *_a = (const int16_t *) impl.mTestIntPointer1; + const int16_t *_b = (const int16_t *) impl.mTestIntPointer2; + + int16_t d[8]; + d[0] = _a[0] + _b[0]; + d[1] = _a[1] + _b[1]; + d[2] = _a[2] + _b[2]; + d[3] = _a[3] + _b[3]; + d[4] = _a[4] + _b[4]; + d[5] = _a[5] + _b[5]; + d[6] = _a[6] + _b[6]; + d[7] = _a[7] + _b[7]; + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i c = _mm_add_epi16(a, b); + + return VALIDATE_INT16_M128(c, d); +} + +result_t test_mm_add_epi32(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int32_t *_a = impl.mTestIntPointer1; + const int32_t *_b = impl.mTestIntPointer2; + int32_t d[4]; + d[0] = _a[0] + _b[0]; + d[1] = _a[1] + _b[1]; + d[2] = _a[2] + _b[2]; + d[3] = _a[3] + _b[3]; + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i c = _mm_add_epi32(a, b); + return VALIDATE_INT32_M128(c, d); +} + +result_t test_mm_add_epi64(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int64_t *_a = (const int64_t *) impl.mTestIntPointer1; + const int64_t *_b = (const int64_t *) impl.mTestIntPointer2; + + int64_t d0 = _a[0] + _b[0]; + int64_t d1 = _a[1] + _b[1]; + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i c = _mm_add_epi64(a, b); + + return validateInt64(c, d0, d1); +} + +result_t test_mm_add_epi8(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int8_t *_a = (const int8_t *) impl.mTestIntPointer1; + const int8_t *_b = (const int8_t *) impl.mTestIntPointer2; + int8_t d[16]; + d[0] = _a[0] + _b[0]; + d[1] = _a[1] + _b[1]; + d[2] = _a[2] + _b[2]; + d[3] = _a[3] + _b[3]; + d[4] = _a[4] + _b[4]; + d[5] = _a[5] + _b[5]; + d[6] = _a[6] + _b[6]; + d[7] = _a[7] + _b[7]; + d[8] = _a[8] + _b[8]; + d[9] = _a[9] + _b[9]; + d[10] = _a[10] + _b[10]; + d[11] = _a[11] + _b[11]; + d[12] = _a[12] + _b[12]; + d[13] = _a[13] + _b[13]; + d[14] = _a[14] + _b[14]; + d[15] = _a[15] + _b[15]; + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i c = _mm_add_epi8(a, b); + return VALIDATE_INT8_M128(c, d); +} + +result_t test_mm_add_pd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *_a = (const double *) impl.mTestFloatPointer1; + const double *_b = (const double *) impl.mTestFloatPointer2; + double d0 = _a[0] + _b[0]; + double d1 = _a[1] + _b[1]; + + __m128d a = load_m128d(_a); + __m128d b = load_m128d(_b); + __m128d c = _mm_add_pd(a, b); + return validateDouble(c, d0, d1); +} + +result_t test_mm_add_sd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *_a = (const double *) impl.mTestFloatPointer1; + const double *_b = (const double *) impl.mTestFloatPointer2; + double d0 = _a[0] + _b[0]; + double d1 = _a[1]; + + __m128d a = load_m128d(_a); + __m128d b = load_m128d(_b); + __m128d c = _mm_add_sd(a, b); + return validateDouble(c, d0, d1); +} + +result_t test_mm_add_si64(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int64_t *_a = (const int64_t *) impl.mTestIntPointer1; + const int64_t *_b = (const int64_t *) impl.mTestIntPointer2; + + int64_t d0 = _a[0] + _b[0]; + + __m64 a = load_m64(_a); + __m64 b = load_m64(_b); + __m64 c = _mm_add_si64(a, b); + + return validateInt64(c, d0); +} + +result_t test_mm_adds_epi16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int16_t *_a = (const int16_t *) impl.mTestIntPointer1; + const int16_t *_b = (const int16_t *) impl.mTestIntPointer2; + int16_t d[8]; + d[0] = saturate_i16((int32_t) _a[0] + (int32_t) _b[0]); + d[1] = saturate_i16((int32_t) _a[1] + (int32_t) _b[1]); + d[2] = saturate_i16((int32_t) _a[2] + (int32_t) _b[2]); + d[3] = saturate_i16((int32_t) _a[3] + (int32_t) _b[3]); + d[4] = saturate_i16((int32_t) _a[4] + (int32_t) _b[4]); + d[5] = saturate_i16((int32_t) _a[5] + (int32_t) _b[5]); + d[6] = saturate_i16((int32_t) _a[6] + (int32_t) _b[6]); + d[7] = saturate_i16((int32_t) _a[7] + (int32_t) _b[7]); + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + + __m128i c = _mm_adds_epi16(a, b); + return VALIDATE_INT16_M128(c, d); +} + +result_t test_mm_adds_epi8(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int8_t *_a = (const int8_t *) impl.mTestIntPointer1; + const int8_t *_b = (const int8_t *) impl.mTestIntPointer2; + + int16_t d[16]; + for (int i = 0; i < 16; i++) { + d[i] = (int16_t) _a[i] + (int16_t) _b[i]; + if (d[i] > 127) + d[i] = 127; + if (d[i] < -128) + d[i] = -128; + } + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i c = _mm_adds_epi8(a, b); + + return VALIDATE_INT8_M128(c, (int8_t) d); +} + +result_t test_mm_adds_epu16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const uint16_t *_a = (const uint16_t *) impl.mTestIntPointer1; + const uint16_t *_b = (const uint16_t *) impl.mTestIntPointer2; + + uint16_t d[8]; + d[0] = saturate_u16((uint32_t) _a[0] + (uint32_t) _b[0]); + d[1] = saturate_u16((uint32_t) _a[1] + (uint32_t) _b[1]); + d[2] = saturate_u16((uint32_t) _a[2] + (uint32_t) _b[2]); + d[3] = saturate_u16((uint32_t) _a[3] + (uint32_t) _b[3]); + d[4] = saturate_u16((uint32_t) _a[4] + (uint32_t) _b[4]); + d[5] = saturate_u16((uint32_t) _a[5] + (uint32_t) _b[5]); + d[6] = saturate_u16((uint32_t) _a[6] + (uint32_t) _b[6]); + d[7] = saturate_u16((uint32_t) _a[7] + (uint32_t) _b[7]); + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i c = _mm_adds_epu16(a, b); + + return VALIDATE_INT16_M128(c, d); +} + +result_t test_mm_adds_epu8(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int8_t *_a = (const int8_t *) impl.mTestIntPointer1; + const int8_t *_b = (const int8_t *) impl.mTestIntPointer2; + uint8_t d[16]; + d[0] = (uint8_t) _a[0] + (uint8_t) _b[0]; + if (d[0] < (uint8_t) _a[0]) + d[0] = 255; + d[1] = (uint8_t) _a[1] + (uint8_t) _b[1]; + if (d[1] < (uint8_t) _a[1]) + d[1] = 255; + d[2] = (uint8_t) _a[2] + (uint8_t) _b[2]; + if (d[2] < (uint8_t) _a[2]) + d[2] = 255; + d[3] = (uint8_t) _a[3] + (uint8_t) _b[3]; + if (d[3] < (uint8_t) _a[3]) + d[3] = 255; + d[4] = (uint8_t) _a[4] + (uint8_t) _b[4]; + if (d[4] < (uint8_t) _a[4]) + d[4] = 255; + d[5] = (uint8_t) _a[5] + (uint8_t) _b[5]; + if (d[5] < (uint8_t) _a[5]) + d[5] = 255; + d[6] = (uint8_t) _a[6] + (uint8_t) _b[6]; + if (d[6] < (uint8_t) _a[6]) + d[6] = 255; + d[7] = (uint8_t) _a[7] + (uint8_t) _b[7]; + if (d[7] < (uint8_t) _a[7]) + d[7] = 255; + d[8] = (uint8_t) _a[8] + (uint8_t) _b[8]; + if (d[8] < (uint8_t) _a[8]) + d[8] = 255; + d[9] = (uint8_t) _a[9] + (uint8_t) _b[9]; + if (d[9] < (uint8_t) _a[9]) + d[9] = 255; + d[10] = (uint8_t) _a[10] + (uint8_t) _b[10]; + if (d[10] < (uint8_t) _a[10]) + d[10] = 255; + d[11] = (uint8_t) _a[11] + (uint8_t) _b[11]; + if (d[11] < (uint8_t) _a[11]) + d[11] = 255; + d[12] = (uint8_t) _a[12] + (uint8_t) _b[12]; + if (d[12] < (uint8_t) _a[12]) + d[12] = 255; + d[13] = (uint8_t) _a[13] + (uint8_t) _b[13]; + if (d[13] < (uint8_t) _a[13]) + d[13] = 255; + d[14] = (uint8_t) _a[14] + (uint8_t) _b[14]; + if (d[14] < (uint8_t) _a[14]) + d[14] = 255; + d[15] = (uint8_t) _a[15] + (uint8_t) _b[15]; + if (d[15] < (uint8_t) _a[15]) + d[15] = 255; + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i c = _mm_adds_epu8(a, b); + return VALIDATE_INT8_M128(c, d); +} + +result_t test_mm_and_pd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int64_t *_a = (const int64_t *) impl.mTestFloatPointer1; + const int64_t *_b = (const int64_t *) impl.mTestFloatPointer2; + double d0 = sse2neon_tool_recast_f64(_a[0] & _b[0]); + double d1 = sse2neon_tool_recast_f64(_a[1] & _b[1]); + + __m128d a = load_m128d(_a); + __m128d b = load_m128d(_b); + __m128d c = _mm_and_pd(a, b); + + return validateDouble(c, d0, d1); +} + +result_t test_mm_and_si128(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int32_t *_a = impl.mTestIntPointer1; + const int32_t *_b = impl.mTestIntPointer2; + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128 fc = _mm_and_ps(_mm_castsi128_ps(a), _mm_castsi128_ps(b)); + __m128i c = _mm_castps_si128(fc); + // now for the assertion... + const uint32_t *ia = (const uint32_t *) &a; + const uint32_t *ib = (const uint32_t *) &b; + uint32_t r[4]; + r[0] = ia[0] & ib[0]; + r[1] = ia[1] & ib[1]; + r[2] = ia[2] & ib[2]; + r[3] = ia[3] & ib[3]; + __m128i ret = do_mm_set_epi32(r[3], r[2], r[1], r[0]); + result_t res = VALIDATE_INT32_M128(c, r); + if (res) { + res = VALIDATE_INT32_M128(ret, r); + } + return res; +} + +result_t test_mm_andnot_pd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *_a = (const double *) impl.mTestFloatPointer1; + const double *_b = (const double *) impl.mTestFloatPointer2; + + __m128d a = load_m128d(_a); + __m128d b = load_m128d(_b); + __m128d c = _mm_andnot_pd(a, b); + + // Take AND operation a complement of 'a' and 'b'. Bitwise operations are + // not allowed on float/double datatype, so 'a' and 'b' are calculated in + // uint64_t datatype. + const uint64_t *ia = (const uint64_t *) &a; + const uint64_t *ib = (const uint64_t *) &b; + uint64_t r0 = ~ia[0] & ib[0]; + uint64_t r1 = ~ia[1] & ib[1]; + return validateUInt64(_mm_castpd_si128(c), r0, r1); +} + +result_t test_mm_andnot_si128(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int32_t *_a = impl.mTestIntPointer1; + const int32_t *_b = impl.mTestIntPointer2; + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128 fc = _mm_andnot_ps(_mm_castsi128_ps(a), _mm_castsi128_ps(b)); + __m128i c = _mm_castps_si128(fc); + // now for the assertion... + const uint32_t *ia = (const uint32_t *) &a; + const uint32_t *ib = (const uint32_t *) &b; + uint32_t r[4]; + r[0] = ~ia[0] & ib[0]; + r[1] = ~ia[1] & ib[1]; + r[2] = ~ia[2] & ib[2]; + r[3] = ~ia[3] & ib[3]; + __m128i ret = do_mm_set_epi32(r[3], r[2], r[1], r[0]); + result_t res = TEST_SUCCESS; + res = VALIDATE_INT32_M128(c, r); + if (res) { + res = VALIDATE_INT32_M128(ret, r); + } + return res; +} + +result_t test_mm_avg_epu16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const uint16_t *_a = (const uint16_t *) impl.mTestIntPointer1; + const uint16_t *_b = (const uint16_t *) impl.mTestIntPointer2; + uint16_t d[8]; + d[0] = (uint16_t) ((_a[0] + _b[0] + 1) >> 1); + d[1] = (uint16_t) ((_a[1] + _b[1] + 1) >> 1); + d[2] = (uint16_t) ((_a[2] + _b[2] + 1) >> 1); + d[3] = (uint16_t) ((_a[3] + _b[3] + 1) >> 1); + d[4] = (uint16_t) ((_a[4] + _b[4] + 1) >> 1); + d[5] = (uint16_t) ((_a[5] + _b[5] + 1) >> 1); + d[6] = (uint16_t) ((_a[6] + _b[6] + 1) >> 1); + d[7] = (uint16_t) ((_a[7] + _b[7] + 1) >> 1); + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i c = _mm_avg_epu16(a, b); + return VALIDATE_UINT16_M128(c, d); +} + +result_t test_mm_avg_epu8(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const uint8_t *_a = (const uint8_t *) impl.mTestIntPointer1; + const uint8_t *_b = (const uint8_t *) impl.mTestIntPointer2; + uint8_t d[16]; + d[0] = (uint8_t) ((_a[0] + _b[0] + 1) >> 1); + d[1] = (uint8_t) ((_a[1] + _b[1] + 1) >> 1); + d[2] = (uint8_t) ((_a[2] + _b[2] + 1) >> 1); + d[3] = (uint8_t) ((_a[3] + _b[3] + 1) >> 1); + d[4] = (uint8_t) ((_a[4] + _b[4] + 1) >> 1); + d[5] = (uint8_t) ((_a[5] + _b[5] + 1) >> 1); + d[6] = (uint8_t) ((_a[6] + _b[6] + 1) >> 1); + d[7] = (uint8_t) ((_a[7] + _b[7] + 1) >> 1); + d[8] = (uint8_t) ((_a[8] + _b[8] + 1) >> 1); + d[9] = (uint8_t) ((_a[9] + _b[9] + 1) >> 1); + d[10] = (uint8_t) ((_a[10] + _b[10] + 1) >> 1); + d[11] = (uint8_t) ((_a[11] + _b[11] + 1) >> 1); + d[12] = (uint8_t) ((_a[12] + _b[12] + 1) >> 1); + d[13] = (uint8_t) ((_a[13] + _b[13] + 1) >> 1); + d[14] = (uint8_t) ((_a[14] + _b[14] + 1) >> 1); + d[15] = (uint8_t) ((_a[15] + _b[15] + 1) >> 1); + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i c = _mm_avg_epu8(a, b); + return VALIDATE_UINT8_M128(c, d); +} + +result_t test_mm_bslli_si128(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + return test_mm_slli_si128(impl, iter); +} + +result_t test_mm_bsrli_si128(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + return test_mm_srli_si128(impl, iter); +} + +result_t test_mm_castpd_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + const __m128d a = load_m128d(_a); + const __m128 _c = load_m128(_a); + + __m128 r = _mm_castpd_ps(a); + + return validate128(r, _c); +} + +result_t test_mm_castpd_si128(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + const __m128d a = load_m128d(_a); + const __m128i *_c = (const __m128i *) _a; + + __m128i r = _mm_castpd_si128(a); + + return validate128(r, *_c); +} + +result_t test_mm_castps_pd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + const __m128 a = load_m128(_a); + const __m128d *_c = (const __m128d *) _a; + + __m128d r = _mm_castps_pd(a); + + return validate128(r, *_c); +} + +result_t test_mm_castps_si128(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + + const __m128i *_c = (const __m128i *) _a; + + const __m128 a = load_m128(_a); + __m128i r = _mm_castps_si128(a); + + return validate128(r, *_c); +} + +result_t test_mm_castsi128_pd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int32_t *_a = impl.mTestIntPointer1; + + const __m128d *_c = (const __m128d *) _a; + + const __m128i a = load_m128i(_a); + __m128d r = _mm_castsi128_pd(a); + + return validate128(r, *_c); +} + +result_t test_mm_castsi128_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int32_t *_a = impl.mTestIntPointer1; + + const __m128 *_c = (const __m128 *) _a; + + const __m128i a = load_m128i(_a); + __m128 r = _mm_castsi128_ps(a); + + return validate128(r, *_c); +} + +result_t test_mm_clflush(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + /* FIXME: Assume that we have portable mechanisms to flush cache. */ + return TEST_SUCCESS; +} + +result_t test_mm_cmpeq_epi16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int16_t *_a = (const int16_t *) impl.mTestIntPointer1; + const int16_t *_b = (const int16_t *) impl.mTestIntPointer2; + int16_t d[8]; + d[0] = (_a[0] == _b[0]) ? ~UINT16_C(0) : 0x0; + d[1] = (_a[1] == _b[1]) ? ~UINT16_C(0) : 0x0; + d[2] = (_a[2] == _b[2]) ? ~UINT16_C(0) : 0x0; + d[3] = (_a[3] == _b[3]) ? ~UINT16_C(0) : 0x0; + d[4] = (_a[4] == _b[4]) ? ~UINT16_C(0) : 0x0; + d[5] = (_a[5] == _b[5]) ? ~UINT16_C(0) : 0x0; + d[6] = (_a[6] == _b[6]) ? ~UINT16_C(0) : 0x0; + d[7] = (_a[7] == _b[7]) ? ~UINT16_C(0) : 0x0; + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i c = _mm_cmpeq_epi16(a, b); + return VALIDATE_INT16_M128(c, d); +} + +result_t test_mm_cmpeq_epi32(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int32_t *_a = impl.mTestIntPointer1; + const int32_t *_b = impl.mTestIntPointer2; + + int32_t d[4]; + d[0] = (_a[0] == _b[0]) ? ~UINT32_C(0) : 0x0; + d[1] = (_a[1] == _b[1]) ? ~UINT32_C(0) : 0x0; + d[2] = (_a[2] == _b[2]) ? ~UINT32_C(0) : 0x0; + d[3] = (_a[3] == _b[3]) ? ~UINT32_C(0) : 0x0; + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i c = _mm_cmpeq_epi32(a, b); + + return VALIDATE_INT32_M128(c, d); +} + +result_t test_mm_cmpeq_epi8(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int8_t *_a = (const int8_t *) impl.mTestIntPointer1; + const int8_t *_b = (const int8_t *) impl.mTestIntPointer2; + int8_t d[16]; + d[0] = (_a[0] == _b[0]) ? ~UINT8_C(0) : 0x00; + d[1] = (_a[1] == _b[1]) ? ~UINT8_C(0) : 0x00; + d[2] = (_a[2] == _b[2]) ? ~UINT8_C(0) : 0x00; + d[3] = (_a[3] == _b[3]) ? ~UINT8_C(0) : 0x00; + d[4] = (_a[4] == _b[4]) ? ~UINT8_C(0) : 0x00; + d[5] = (_a[5] == _b[5]) ? ~UINT8_C(0) : 0x00; + d[6] = (_a[6] == _b[6]) ? ~UINT8_C(0) : 0x00; + d[7] = (_a[7] == _b[7]) ? ~UINT8_C(0) : 0x00; + d[8] = (_a[8] == _b[8]) ? ~UINT8_C(0) : 0x00; + d[9] = (_a[9] == _b[9]) ? ~UINT8_C(0) : 0x00; + d[10] = (_a[10] == _b[10]) ? ~UINT8_C(0) : 0x00; + d[11] = (_a[11] == _b[11]) ? ~UINT8_C(0) : 0x00; + d[12] = (_a[12] == _b[12]) ? ~UINT8_C(0) : 0x00; + d[13] = (_a[13] == _b[13]) ? ~UINT8_C(0) : 0x00; + d[14] = (_a[14] == _b[14]) ? ~UINT8_C(0) : 0x00; + d[15] = (_a[15] == _b[15]) ? ~UINT8_C(0) : 0x00; + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i c = _mm_cmpeq_epi8(a, b); + return VALIDATE_INT8_M128(c, d); +} + +result_t test_mm_cmpeq_pd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *_a = (const double *) impl.mTestFloatPointer1; + const double *_b = (const double *) impl.mTestFloatPointer2; + double d0 = (_a[0] == _b[0]) ? sse2neon_tool_recast_f64(UINT64_MAX) : 0; + double d1 = (_a[1] == _b[1]) ? sse2neon_tool_recast_f64(UINT64_MAX) : 0; + + __m128d a = load_m128d(_a); + __m128d b = load_m128d(_b); + __m128d c = _mm_cmpeq_pd(a, b); + return validateDouble(c, d0, d1); +} + +result_t test_mm_cmpeq_sd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *_a = (const double *) impl.mTestFloatPointer1; + const double *_b = (const double *) impl.mTestFloatPointer2; + double d0 = (_a[0] == _b[0]) ? ALL_BIT_1_64 : 0; + double d1 = _a[1]; + + __m128d a = load_m128d(_a); + __m128d b = load_m128d(_b); + __m128d c = _mm_cmpeq_sd(a, b); + + return validateDouble(c, d0, d1); +} + +result_t test_mm_cmpge_pd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *_a = (const double *) impl.mTestFloatPointer1; + const double *_b = (const double *) impl.mTestFloatPointer2; + double d0 = (_a[0] >= _b[0]) ? ALL_BIT_1_64 : 0; + double d1 = (_a[1] >= _b[1]) ? ALL_BIT_1_64 : 0; + + __m128d a = load_m128d(_a); + __m128d b = load_m128d(_b); + __m128d c = _mm_cmpge_pd(a, b); + + return validateDouble(c, d0, d1); +} + +result_t test_mm_cmpge_sd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + double *_a = (double *) impl.mTestFloatPointer1; + double *_b = (double *) impl.mTestFloatPointer2; + double d0 = (_a[0] >= _b[0]) ? ALL_BIT_1_64 : 0; + double d1 = _a[1]; + + __m128d a = load_m128d(_a); + __m128d b = load_m128d(_b); + __m128d c = _mm_cmpge_sd(a, b); + + return validateDouble(c, d0, d1); +} + +result_t test_mm_cmpgt_epi16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int16_t *_a = (const int16_t *) impl.mTestIntPointer1; + const int16_t *_b = (const int16_t *) impl.mTestIntPointer2; + uint16_t d[8]; + d[0] = _a[0] > _b[0] ? ~UINT16_C(0) : 0; + d[1] = _a[1] > _b[1] ? ~UINT16_C(0) : 0; + d[2] = _a[2] > _b[2] ? ~UINT16_C(0) : 0; + d[3] = _a[3] > _b[3] ? ~UINT16_C(0) : 0; + d[4] = _a[4] > _b[4] ? ~UINT16_C(0) : 0; + d[5] = _a[5] > _b[5] ? ~UINT16_C(0) : 0; + d[6] = _a[6] > _b[6] ? ~UINT16_C(0) : 0; + d[7] = _a[7] > _b[7] ? ~UINT16_C(0) : 0; + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i c = _mm_cmpgt_epi16(a, b); + + return VALIDATE_INT16_M128(c, d); +} + +result_t test_mm_cmpgt_epi32(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int32_t *_a = impl.mTestIntPointer1; + const int32_t *_b = impl.mTestIntPointer2; + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + + int32_t result[4]; + + result[0] = _a[0] > _b[0] ? -1 : 0; + result[1] = _a[1] > _b[1] ? -1 : 0; + result[2] = _a[2] > _b[2] ? -1 : 0; + result[3] = _a[3] > _b[3] ? -1 : 0; + + __m128i iret = _mm_cmpgt_epi32(a, b); + return VALIDATE_INT32_M128(iret, result); +} + +result_t test_mm_cmpgt_epi8(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int8_t *_a = (const int8_t *) impl.mTestIntPointer1; + const int8_t *_b = (const int8_t *) impl.mTestIntPointer2; + int8_t d[16]; + d[0] = (_a[0] > _b[0]) ? ~UINT8_C(0) : 0x00; + d[1] = (_a[1] > _b[1]) ? ~UINT8_C(0) : 0x00; + d[2] = (_a[2] > _b[2]) ? ~UINT8_C(0) : 0x00; + d[3] = (_a[3] > _b[3]) ? ~UINT8_C(0) : 0x00; + d[4] = (_a[4] > _b[4]) ? ~UINT8_C(0) : 0x00; + d[5] = (_a[5] > _b[5]) ? ~UINT8_C(0) : 0x00; + d[6] = (_a[6] > _b[6]) ? ~UINT8_C(0) : 0x00; + d[7] = (_a[7] > _b[7]) ? ~UINT8_C(0) : 0x00; + d[8] = (_a[8] > _b[8]) ? ~UINT8_C(0) : 0x00; + d[9] = (_a[9] > _b[9]) ? ~UINT8_C(0) : 0x00; + d[10] = (_a[10] > _b[10]) ? ~UINT8_C(0) : 0x00; + d[11] = (_a[11] > _b[11]) ? ~UINT8_C(0) : 0x00; + d[12] = (_a[12] > _b[12]) ? ~UINT8_C(0) : 0x00; + d[13] = (_a[13] > _b[13]) ? ~UINT8_C(0) : 0x00; + d[14] = (_a[14] > _b[14]) ? ~UINT8_C(0) : 0x00; + d[15] = (_a[15] > _b[15]) ? ~UINT8_C(0) : 0x00; + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i c = _mm_cmpgt_epi8(a, b); + return VALIDATE_INT8_M128(c, d); +} + +result_t test_mm_cmpgt_pd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *_a = (const double *) impl.mTestFloatPointer1; + const double *_b = (const double *) impl.mTestFloatPointer2; + double d0 = (_a[0] > _b[0]) ? ALL_BIT_1_64 : 0; + double d1 = (_a[1] > _b[1]) ? ALL_BIT_1_64 : 0; + + __m128d a = load_m128d(_a); + __m128d b = load_m128d(_b); + __m128d c = _mm_cmpgt_pd(a, b); + + return validateDouble(c, d0, d1); +} + +result_t test_mm_cmpgt_sd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + double *_a = (double *) impl.mTestFloatPointer1; + double *_b = (double *) impl.mTestFloatPointer2; + double d0 = (_a[0] > _b[0]) ? ALL_BIT_1_64 : 0; + double d1 = _a[1]; + + __m128d a = load_m128d(_a); + __m128d b = load_m128d(_b); + __m128d c = _mm_cmpgt_sd(a, b); + + return validateDouble(c, d0, d1); +} + +result_t test_mm_cmple_pd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *_a = (const double *) impl.mTestFloatPointer1; + const double *_b = (const double *) impl.mTestFloatPointer2; + double d0 = (_a[0] <= _b[0]) ? ALL_BIT_1_64 : 0; + double d1 = (_a[1] <= _b[1]) ? ALL_BIT_1_64 : 0; + + __m128d a = load_m128d(_a); + __m128d b = load_m128d(_b); + __m128d c = _mm_cmple_pd(a, b); + + return validateDouble(c, d0, d1); +} + +result_t test_mm_cmple_sd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + double *_a = (double *) impl.mTestFloatPointer1; + double *_b = (double *) impl.mTestFloatPointer2; + double d0 = (_a[0] <= _b[0]) ? ALL_BIT_1_64 : 0; + double d1 = _a[1]; + + __m128d a = load_m128d(_a); + __m128d b = load_m128d(_b); + __m128d c = _mm_cmple_sd(a, b); + + return validateDouble(c, d0, d1); +} + +result_t test_mm_cmplt_epi16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int16_t *_a = (const int16_t *) impl.mTestIntPointer1; + const int16_t *_b = (const int16_t *) impl.mTestIntPointer2; + uint16_t d[8]; + d[0] = _a[0] < _b[0] ? ~UINT16_C(0) : 0; + d[1] = _a[1] < _b[1] ? ~UINT16_C(0) : 0; + d[2] = _a[2] < _b[2] ? ~UINT16_C(0) : 0; + d[3] = _a[3] < _b[3] ? ~UINT16_C(0) : 0; + d[4] = _a[4] < _b[4] ? ~UINT16_C(0) : 0; + d[5] = _a[5] < _b[5] ? ~UINT16_C(0) : 0; + d[6] = _a[6] < _b[6] ? ~UINT16_C(0) : 0; + d[7] = _a[7] < _b[7] ? ~UINT16_C(0) : 0; + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i c = _mm_cmplt_epi16(a, b); + + return VALIDATE_UINT16_M128(c, d); +} + +result_t test_mm_cmplt_epi32(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int32_t *_a = impl.mTestIntPointer1; + const int32_t *_b = impl.mTestIntPointer2; + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + + int32_t result[4]; + result[0] = _a[0] < _b[0] ? -1 : 0; + result[1] = _a[1] < _b[1] ? -1 : 0; + result[2] = _a[2] < _b[2] ? -1 : 0; + result[3] = _a[3] < _b[3] ? -1 : 0; + + __m128i iret = _mm_cmplt_epi32(a, b); + return VALIDATE_INT32_M128(iret, result); +} + +result_t test_mm_cmplt_epi8(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int8_t *_a = (const int8_t *) impl.mTestIntPointer1; + const int8_t *_b = (const int8_t *) impl.mTestIntPointer2; + int8_t d[16]; + d[0] = (_a[0] < _b[0]) ? ~UINT8_C(0) : 0x00; + d[1] = (_a[1] < _b[1]) ? ~UINT8_C(0) : 0x00; + d[2] = (_a[2] < _b[2]) ? ~UINT8_C(0) : 0x00; + d[3] = (_a[3] < _b[3]) ? ~UINT8_C(0) : 0x00; + d[4] = (_a[4] < _b[4]) ? ~UINT8_C(0) : 0x00; + d[5] = (_a[5] < _b[5]) ? ~UINT8_C(0) : 0x00; + d[6] = (_a[6] < _b[6]) ? ~UINT8_C(0) : 0x00; + d[7] = (_a[7] < _b[7]) ? ~UINT8_C(0) : 0x00; + d[8] = (_a[8] < _b[8]) ? ~UINT8_C(0) : 0x00; + d[9] = (_a[9] < _b[9]) ? ~UINT8_C(0) : 0x00; + d[10] = (_a[10] < _b[10]) ? ~UINT8_C(0) : 0x00; + d[11] = (_a[11] < _b[11]) ? ~UINT8_C(0) : 0x00; + d[12] = (_a[12] < _b[12]) ? ~UINT8_C(0) : 0x00; + d[13] = (_a[13] < _b[13]) ? ~UINT8_C(0) : 0x00; + d[14] = (_a[14] < _b[14]) ? ~UINT8_C(0) : 0x00; + d[15] = (_a[15] < _b[15]) ? ~UINT8_C(0) : 0x00; + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i c = _mm_cmplt_epi8(a, b); + return VALIDATE_INT8_M128(c, d); +} + +result_t test_mm_cmplt_pd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *_a = (const double *) impl.mTestFloatPointer1; + const double *_b = (const double *) impl.mTestFloatPointer2; + double d0 = (_a[0] < _b[0]) ? ALL_BIT_1_64 : UINT64_C(0); + double d1 = (_a[1] < _b[1]) ? ALL_BIT_1_64 : UINT64_C(0); + + __m128d a = load_m128d(_a); + __m128d b = load_m128d(_b); + __m128d c = _mm_cmplt_pd(a, b); + + return validateDouble(c, d0, d1); +} + +result_t test_mm_cmplt_sd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + double *_a = (double *) impl.mTestFloatPointer1; + double *_b = (double *) impl.mTestFloatPointer2; + double d0 = (_a[0] < _b[0]) ? ALL_BIT_1_64 : 0; + double d1 = _a[1]; + + __m128d a = load_m128d(_a); + __m128d b = load_m128d(_b); + __m128d c = _mm_cmplt_sd(a, b); + + return validateDouble(c, d0, d1); +} + +result_t test_mm_cmpneq_pd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *_a = (const double *) impl.mTestFloatPointer1; + const double *_b = (const double *) impl.mTestFloatPointer2; + double d0 = (_a[0] != _b[0]) ? ALL_BIT_1_64 : UINT64_C(0); + double d1 = (_a[1] != _b[1]) ? ALL_BIT_1_64 : UINT64_C(0); + + __m128d a = load_m128d(_a); + __m128d b = load_m128d(_b); + __m128d c = _mm_cmpneq_pd(a, b); + + return validateDouble(c, d0, d1); +} + +result_t test_mm_cmpneq_sd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + double *_a = (double *) impl.mTestFloatPointer1; + double *_b = (double *) impl.mTestFloatPointer2; + double d0 = (_a[0] != _b[0]) ? ALL_BIT_1_64 : UINT64_C(0); + double d1 = _a[1]; + + __m128d a = load_m128d(_a); + __m128d b = load_m128d(_b); + __m128d c = _mm_cmpneq_sd(a, b); + + return validateDouble(c, d0, d1); +} + +result_t test_mm_cmpnge_pd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *_a = (const double *) impl.mTestFloatPointer1; + const double *_b = (const double *) impl.mTestFloatPointer2; + double d0 = !(_a[0] >= _b[0]) ? ALL_BIT_1_64 : 0; + double d1 = !(_a[1] >= _b[1]) ? ALL_BIT_1_64 : 0; + + __m128d a = load_m128d(_a); + __m128d b = load_m128d(_b); + __m128d c = _mm_cmpnge_pd(a, b); + + return validateDouble(c, d0, d1); +} + +result_t test_mm_cmpnge_sd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + double *_a = (double *) impl.mTestFloatPointer1; + double *_b = (double *) impl.mTestFloatPointer2; + double d0 = !(_a[0] >= _b[0]) ? ALL_BIT_1_64 : 0; + double d1 = _a[1]; + + __m128d a = load_m128d(_a); + __m128d b = load_m128d(_b); + __m128d c = _mm_cmpnge_sd(a, b); + + return validateDouble(c, d0, d1); +} + +result_t test_mm_cmpngt_pd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *_a = (const double *) impl.mTestFloatPointer1; + const double *_b = (const double *) impl.mTestFloatPointer2; + double d0 = !(_a[0] > _b[0]) ? ALL_BIT_1_64 : 0; + double d1 = !(_a[1] > _b[1]) ? ALL_BIT_1_64 : 0; + + __m128d a = load_m128d(_a); + __m128d b = load_m128d(_b); + __m128d c = _mm_cmpngt_pd(a, b); + + return validateDouble(c, d0, d1); +} + +result_t test_mm_cmpngt_sd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + double *_a = (double *) impl.mTestFloatPointer1; + double *_b = (double *) impl.mTestFloatPointer2; + double d0 = !(_a[0] > _b[0]) ? ALL_BIT_1_64 : 0; + double d1 = _a[1]; + + __m128d a = load_m128d(_a); + __m128d b = load_m128d(_b); + __m128d c = _mm_cmpngt_sd(a, b); + + return validateDouble(c, d0, d1); +} + +result_t test_mm_cmpnle_pd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *_a = (const double *) impl.mTestFloatPointer1; + const double *_b = (const double *) impl.mTestFloatPointer2; + double d0 = !(_a[0] <= _b[0]) ? ALL_BIT_1_64 : 0; + double d1 = !(_a[1] <= _b[1]) ? ALL_BIT_1_64 : 0; + + __m128d a = load_m128d(_a); + __m128d b = load_m128d(_b); + __m128d c = _mm_cmpnle_pd(a, b); + + return validateDouble(c, d0, d1); +} + +result_t test_mm_cmpnle_sd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + double *_a = (double *) impl.mTestFloatPointer1; + double *_b = (double *) impl.mTestFloatPointer2; + double d0 = !(_a[0] <= _b[0]) ? ALL_BIT_1_64 : 0; + double d1 = _a[1]; + + __m128d a = load_m128d(_a); + __m128d b = load_m128d(_b); + __m128d c = _mm_cmpnle_sd(a, b); + + return validateDouble(c, d0, d1); +} + +result_t test_mm_cmpnlt_pd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *_a = (const double *) impl.mTestFloatPointer1; + const double *_b = (const double *) impl.mTestFloatPointer2; + double d0 = !(_a[0] < _b[0]) ? ALL_BIT_1_64 : 0; + double d1 = !(_a[1] < _b[1]) ? ALL_BIT_1_64 : 0; + + __m128d a = load_m128d(_a); + __m128d b = load_m128d(_b); + __m128d c = _mm_cmpnlt_pd(a, b); + + return validateDouble(c, d0, d1); +} + +result_t test_mm_cmpnlt_sd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + double *_a = (double *) impl.mTestFloatPointer1; + double *_b = (double *) impl.mTestFloatPointer2; + double d0 = !(_a[0] < _b[0]) ? ALL_BIT_1_64 : 0; + double d1 = _a[1]; + + __m128d a = load_m128d(_a); + __m128d b = load_m128d(_b); + __m128d c = _mm_cmpnlt_sd(a, b); + + return validateDouble(c, d0, d1); +} + +result_t test_mm_cmpord_pd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *_a = (const double *) impl.mTestFloatPointer1; + const double *_b = (const double *) impl.mTestFloatPointer2; + __m128d a = _mm_load_pd(_a); + __m128d b = _mm_load_pd(_b); + + double result[2]; + + for (uint32_t i = 0; i < 2; i++) { + result[i] = cmp_noNaN(_a[i], _b[i]); + } + + __m128d ret = _mm_cmpord_pd(a, b); + + return validateDouble(ret, result[0], result[1]); +} + +result_t test_mm_cmpord_sd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *_a = (const double *) impl.mTestFloatPointer1; + const double *_b = (const double *) impl.mTestFloatPointer2; + __m128d a = _mm_load_pd(_a); + __m128d b = _mm_load_pd(_b); + + double c0 = cmp_noNaN(_a[0], _b[0]); + double c1 = _a[1]; + + __m128d ret = _mm_cmpord_sd(a, b); + return validateDouble(ret, c0, c1); +} + +result_t test_mm_cmpunord_pd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *_a = (const double *) impl.mTestFloatPointer1; + const double *_b = (const double *) impl.mTestFloatPointer2; + __m128d a = _mm_load_pd(_a); + __m128d b = _mm_load_pd(_b); + + double result[2]; + result[0] = cmp_hasNaN(_a[0], _b[0]); + result[1] = cmp_hasNaN(_a[1], _b[1]); + + __m128d ret = _mm_cmpunord_pd(a, b); + return validateDouble(ret, result[0], result[1]); +} + +result_t test_mm_cmpunord_sd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + double *_a = (double *) impl.mTestFloatPointer1; + double *_b = (double *) impl.mTestFloatPointer2; + __m128d a = _mm_load_pd(_a); + __m128d b = _mm_load_pd(_b); + + double result[2]; + result[0] = cmp_hasNaN(_a[0], _b[0]); + result[1] = _a[1]; + + __m128d ret = _mm_cmpunord_sd(a, b); + return validateDouble(ret, result[0], result[1]); +} + +result_t test_mm_comieq_sd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + // FIXME: + // The GCC does not implement _mm_comieq_sd correctly. + // See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98612 for more + // information. +#if defined(__GNUC__) && !defined(__clang__) + return TEST_UNIMPL; +#else + const double *_a = (const double *) impl.mTestFloatPointer1; + const double *_b = (const double *) impl.mTestFloatPointer2; + int32_t _c = (_a[0] == _b[0]) ? 1 : 0; + + __m128d a = load_m128d(_a); + __m128d b = load_m128d(_b); + int32_t c = _mm_comieq_sd(a, b); + + ASSERT_RETURN(c == _c); + return TEST_SUCCESS; +#endif +} + +result_t test_mm_comige_sd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *_a = (const double *) impl.mTestFloatPointer1; + const double *_b = (const double *) impl.mTestFloatPointer2; + int32_t _c = (_a[0] >= _b[0]) ? 1 : 0; + + __m128d a = load_m128d(_a); + __m128d b = load_m128d(_b); + int32_t c = _mm_comige_sd(a, b); + + ASSERT_RETURN(c == _c); + return TEST_SUCCESS; +} + +result_t test_mm_comigt_sd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *_a = (const double *) impl.mTestFloatPointer1; + const double *_b = (const double *) impl.mTestFloatPointer2; + int32_t _c = (_a[0] > _b[0]) ? 1 : 0; + + __m128d a = load_m128d(_a); + __m128d b = load_m128d(_b); + int32_t c = _mm_comigt_sd(a, b); + + ASSERT_RETURN(c == _c); + return TEST_SUCCESS; +} + +result_t test_mm_comile_sd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + // FIXME: + // The GCC does not implement _mm_comile_sd correctly. + // See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98612 for more + // information. +#if defined(__GNUC__) && !defined(__clang__) + return TEST_UNIMPL; +#else + const double *_a = (const double *) impl.mTestFloatPointer1; + const double *_b = (const double *) impl.mTestFloatPointer2; + int32_t _c = (_a[0] <= _b[0]) ? 1 : 0; + + __m128d a = load_m128d(_a); + __m128d b = load_m128d(_b); + int32_t c = _mm_comile_sd(a, b); + + ASSERT_RETURN(c == _c); + return TEST_SUCCESS; +#endif +} + +result_t test_mm_comilt_sd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + // FIXME: + // The GCC does not implement _mm_comilt_sd correctly. + // See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98612 for more + // information. +#if defined(__GNUC__) && !defined(__clang__) + return TEST_UNIMPL; +#else + const double *_a = (const double *) impl.mTestFloatPointer1; + const double *_b = (const double *) impl.mTestFloatPointer2; + int32_t _c = (_a[0] < _b[0]) ? 1 : 0; + + __m128d a = load_m128d(_a); + __m128d b = load_m128d(_b); + int32_t c = _mm_comilt_sd(a, b); + + ASSERT_RETURN(c == _c); + return TEST_SUCCESS; +#endif +} + +result_t test_mm_comineq_sd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + // FIXME: + // The GCC does not implement _mm_comineq_sd correctly. + // See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98612 for more + // information. +#if defined(__GNUC__) && !defined(__clang__) + return TEST_UNIMPL; +#else + const double *_a = (const double *) impl.mTestFloatPointer1; + const double *_b = (const double *) impl.mTestFloatPointer2; + int32_t _c = (_a[0] != _b[0]) ? 1 : 0; + + __m128d a = load_m128d(_a); + __m128d b = load_m128d(_b); + int32_t c = _mm_comineq_sd(a, b); + + ASSERT_RETURN(c == _c); + return TEST_SUCCESS; +#endif +} + +result_t test_mm_cvtepi32_pd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int32_t *_a = impl.mTestIntPointer1; + __m128i a = load_m128i(_a); + double trun[2] = {(double) _a[0], (double) _a[1]}; + + __m128d ret = _mm_cvtepi32_pd(a); + return validateDouble(ret, trun[0], trun[1]); +} + +result_t test_mm_cvtepi32_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int32_t *_a = impl.mTestIntPointer1; + __m128i a = load_m128i(_a); + float trun[4]; + for (uint32_t i = 0; i < 4; i++) { + trun[i] = (float) _a[i]; + } + + __m128 ret = _mm_cvtepi32_ps(a); + return validateFloat(ret, trun[0], trun[1], trun[2], trun[3]); +} + +OPTNONE result_t test_mm_cvtpd_epi32(const SSE2NEONTestImpl &impl, + uint32_t iter) +{ + const double *_a = (const double *) impl.mTestFloatPointer1; + int32_t d[2] = {}; + + switch (iter & 0x3) { + case 0: + _MM_SET_ROUNDING_MODE(_MM_ROUND_NEAREST); + d[0] = (int32_t) (bankersRounding(_a[0])); + d[1] = (int32_t) (bankersRounding(_a[1])); + break; + case 1: + _MM_SET_ROUNDING_MODE(_MM_ROUND_DOWN); + d[0] = (int32_t) (floor(_a[0])); + d[1] = (int32_t) (floor(_a[1])); + break; + case 2: + _MM_SET_ROUNDING_MODE(_MM_ROUND_UP); + d[0] = (int32_t) (ceil(_a[0])); + d[1] = (int32_t) (ceil(_a[1])); + break; + case 3: + _MM_SET_ROUNDING_MODE(_MM_ROUND_TOWARD_ZERO); + d[0] = (int32_t) (_a[0]); + d[1] = (int32_t) (_a[1]); + break; + } + +#if defined(__ARM_FEATURE_FRINT) && !defined(__clang__) + /* Floats that cannot fit into 32-bits should instead return + * indefinite integer value (INT32_MIN). This behaviour is + * currently only emulated when using the round-to-integral + * instructions. */ + for (int i = 0; i < 2; i++) { + if (_a[i] > (float) INT32_MAX || _a[i] < (float) INT32_MIN) + d[i] = INT32_MIN; + } +#endif + + __m128d a = load_m128d(_a); + __m128i ret = _mm_cvtpd_epi32(a); + + return validateInt32(ret, d[0], d[1], 0, 0); +} + +OPTNONE result_t test_mm_cvtpd_pi32(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *_a = (const double *) impl.mTestFloatPointer1; + int32_t d[2] = {}; + + switch (iter & 0x3) { + case 0: + _MM_SET_ROUNDING_MODE(_MM_ROUND_NEAREST); + d[0] = (int32_t) (bankersRounding(_a[0])); + d[1] = (int32_t) (bankersRounding(_a[1])); + break; + case 1: + _MM_SET_ROUNDING_MODE(_MM_ROUND_DOWN); + d[0] = (int32_t) (floor(_a[0])); + d[1] = (int32_t) (floor(_a[1])); + break; + case 2: + _MM_SET_ROUNDING_MODE(_MM_ROUND_UP); + d[0] = (int32_t) (ceil(_a[0])); + d[1] = (int32_t) (ceil(_a[1])); + break; + case 3: + _MM_SET_ROUNDING_MODE(_MM_ROUND_TOWARD_ZERO); + d[0] = (int32_t) (_a[0]); + d[1] = (int32_t) (_a[1]); + break; + } + + __m128d a = load_m128d(_a); + __m64 ret = _mm_cvtpd_pi32(a); + + return VALIDATE_INT32_M64(ret, d); +} + +result_t test_mm_cvtpd_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *_a = (const double *) impl.mTestFloatPointer1; + float f0 = (float) _a[0]; + float f1 = (float) _a[1]; + const __m128d a = load_m128d(_a); + + __m128 r = _mm_cvtpd_ps(a); + + return validateFloat(r, f0, f1, 0, 0); +} + +result_t test_mm_cvtpi32_pd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int32_t *_a = impl.mTestIntPointer1; + __m64 a = load_m64(_a); + + double trun[2] = {(double) _a[0], (double) _a[1]}; + + __m128d ret = _mm_cvtpi32_pd(a); + + return validateDouble(ret, trun[0], trun[1]); +} + +result_t test_mm_cvtps_epi32(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + __m128 a = load_m128(_a); + int32_t d[4]; + switch (iter & 0x3) { + case 0: + _MM_SET_ROUNDING_MODE(_MM_ROUND_NEAREST); + for (uint32_t i = 0; i < 4; i++) { + d[i] = (int32_t) (bankersRounding(_a[i])); + } + break; + case 1: + _MM_SET_ROUNDING_MODE(_MM_ROUND_DOWN); + for (uint32_t i = 0; i < 4; i++) { + d[i] = (int32_t) (floorf(_a[i])); + } + break; + case 2: + _MM_SET_ROUNDING_MODE(_MM_ROUND_UP); + for (uint32_t i = 0; i < 4; i++) { + d[i] = (int32_t) (ceilf(_a[i])); + } + break; + case 3: + _MM_SET_ROUNDING_MODE(_MM_ROUND_TOWARD_ZERO); + for (uint32_t i = 0; i < 4; i++) { + d[i] = (int32_t) (_a[i]); + } + break; + } + + __m128i ret = _mm_cvtps_epi32(a); + return VALIDATE_INT32_M128(ret, d); +} + +result_t test_mm_cvtps_pd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + double d0 = (double) _a[0]; + double d1 = (double) _a[1]; + const __m128 a = load_m128(_a); + + __m128d r = _mm_cvtps_pd(a); + + return validateDouble(r, d0, d1); +} + +result_t test_mm_cvtsd_f64(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *_a = (const double *) impl.mTestFloatPointer1; + + double d = _a[0]; + + const __m128d *a = (const __m128d *) _a; + double r = _mm_cvtsd_f64(*a); + + return r == d ? TEST_SUCCESS : TEST_FAIL; +} + +result_t test_mm_cvtsd_si32(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *_a = (const double *) impl.mTestFloatPointer1; + int32_t d; + + switch (iter & 0x3) { + case 0: + _MM_SET_ROUNDING_MODE(_MM_ROUND_NEAREST); + d = (int32_t) (bankersRounding(_a[0])); + break; + case 1: + _MM_SET_ROUNDING_MODE(_MM_ROUND_DOWN); + d = (int32_t) (floor(_a[0])); + break; + case 2: + _MM_SET_ROUNDING_MODE(_MM_ROUND_UP); + d = (int32_t) (ceil(_a[0])); + break; + case 3: + _MM_SET_ROUNDING_MODE(_MM_ROUND_TOWARD_ZERO); + d = (int32_t) (_a[0]); + break; + } + + __m128d a = load_m128d(_a); + int32_t ret = _mm_cvtsd_si32(a); + + return ret == d ? TEST_SUCCESS : TEST_FAIL; +} + +result_t test_mm_cvtsd_si64(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *_a = (const double *) impl.mTestFloatPointer1; + int64_t d = 0; + + switch (iter & 0x3) { + case 0: + _MM_SET_ROUNDING_MODE(_MM_ROUND_NEAREST); + d = (int64_t) (bankersRounding(_a[0])); + break; + case 1: + _MM_SET_ROUNDING_MODE(_MM_ROUND_DOWN); + d = (int64_t) (floor(_a[0])); + break; + case 2: + _MM_SET_ROUNDING_MODE(_MM_ROUND_UP); + d = (int64_t) (ceil(_a[0])); + break; + case 3: + _MM_SET_ROUNDING_MODE(_MM_ROUND_TOWARD_ZERO); + d = (int64_t) (_a[0]); + break; + } + + __m128d a = load_m128d(_a); + int64_t ret = _mm_cvtsd_si64(a); + + return ret == d ? TEST_SUCCESS : TEST_FAIL; +} + +result_t test_mm_cvtsd_si64x(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + return test_mm_cvtsd_si64(impl, iter); +} + +result_t test_mm_cvtsd_ss(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + const double *_b = (const double *) impl.mTestFloatPointer2; + + float f0 = (float) _b[0]; + float f1 = (float) _a[1]; + float f2 = (float) _a[2]; + float f3 = (float) _a[3]; + + __m128 a = load_m128(_a); + __m128d b = load_m128d(_b); + __m128 c = _mm_cvtsd_ss(a, b); + + return validateFloat(c, f0, f1, f2, f3); +} + +result_t test_mm_cvtsi128_si32(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int32_t *_a = (const int32_t *) impl.mTestIntPointer1; + + int32_t d = _a[0]; + + __m128i a = load_m128i(_a); + int c = _mm_cvtsi128_si32(a); + + return d == c ? TEST_SUCCESS : TEST_FAIL; +} + +result_t test_mm_cvtsi128_si64(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int64_t *_a = (const int64_t *) impl.mTestIntPointer1; + + int64_t d = _a[0]; + + __m128i a = load_m128i(_a); + int64_t c = _mm_cvtsi128_si64(a); + + return d == c ? TEST_SUCCESS : TEST_FAIL; +} + +result_t test_mm_cvtsi128_si64x(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + return test_mm_cvtsi128_si64(impl, iter); +} + +result_t test_mm_cvtsi32_sd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *_a = (const double *) impl.mTestFloatPointer1; + const int32_t b = (const int32_t) impl.mTestInts[iter]; + + __m128d a = load_m128d(_a); + __m128d c = _mm_cvtsi32_sd(a, b); + + return validateDouble(c, b, _a[1]); +} + +result_t test_mm_cvtsi32_si128(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int32_t *_a = (const int32_t *) impl.mTestIntPointer1; + + int32_t d = _a[0]; + + __m128i c = _mm_cvtsi32_si128(*_a); + + return validateInt32(c, d, 0, 0, 0); +} + +result_t test_mm_cvtsi64_sd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *_a = (const double *) impl.mTestFloatPointer1; + const int64_t b = (const int64_t) impl.mTestInts[iter]; + + __m128d a = load_m128d(_a); + __m128d c = _mm_cvtsi64_sd(a, b); + + return validateDouble(c, (double) b, _a[1]); +} + +result_t test_mm_cvtsi64_si128(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int64_t *_a = (const int64_t *) impl.mTestIntPointer1; + + int64_t d = _a[0]; + + __m128i c = _mm_cvtsi64_si128(*_a); + + return validateInt64(c, d, 0); +} + +result_t test_mm_cvtsi64x_sd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + return test_mm_cvtsi64_sd(impl, iter); +} + +result_t test_mm_cvtsi64x_si128(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + return test_mm_cvtsi64_si128(impl, iter); +} + +result_t test_mm_cvtss_sd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *_a = (const double *) impl.mTestFloatPointer1; + const float *_b = impl.mTestFloatPointer2; + double d0 = double(_b[0]); + double d1 = _a[1]; + + __m128d a = load_m128d(_a); + __m128 b = load_m128(_b); + __m128d c = _mm_cvtss_sd(a, b); + return validateDouble(c, d0, d1); +} + +result_t test_mm_cvttpd_epi32(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *_a = (const double *) impl.mTestFloatPointer1; + + __m128d a = load_m128d(_a); + int32_t d0 = (int32_t) (_a[0]); + int32_t d1 = (int32_t) (_a[1]); + + __m128i ret = _mm_cvttpd_epi32(a); + return validateInt32(ret, d0, d1, 0, 0); +} + +OPTNONE result_t test_mm_cvttpd_pi32(const SSE2NEONTestImpl &impl, + uint32_t iter) +{ + const double *_a = (const double *) impl.mTestFloatPointer1; + + __m128d a = load_m128d(_a); + int32_t d0 = (int32_t) (_a[0]); + int32_t d1 = (int32_t) (_a[1]); + + __m64 ret = _mm_cvttpd_pi32(a); + return validateInt32(ret, d0, d1); +} + +result_t test_mm_cvttps_epi32(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + __m128 a = load_m128(_a); + int32_t trun[4]; + for (uint32_t i = 0; i < 4; i++) { + trun[i] = (int32_t) _a[i]; + } + + __m128i ret = _mm_cvttps_epi32(a); + return VALIDATE_INT32_M128(ret, trun); +} + +result_t test_mm_cvttsd_si32(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *_a = (const double *) impl.mTestFloatPointer1; + + __m128d a = _mm_load_sd(_a); + int32_t ret = _mm_cvttsd_si32(a); + + return ret == (int32_t) _a[0] ? TEST_SUCCESS : TEST_FAIL; +} + +result_t test_mm_cvttsd_si64(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *_a = (const double *) impl.mTestFloatPointer1; + + __m128d a = _mm_load_sd(_a); + int64_t ret = _mm_cvttsd_si64(a); + + return ret == (int64_t) _a[0] ? TEST_SUCCESS : TEST_FAIL; +} + +result_t test_mm_cvttsd_si64x(const SSE2NEONTestImpl &impl, uint32_t iter) +{ +#if defined(__clang__) + // The intrinsic _mm_cvttsd_si64x() does not exist in Clang + return TEST_UNIMPL; +#else + const double *_a = (const double *) impl.mTestFloatPointer1; + + __m128d a = _mm_load_sd(_a); + int64_t ret = _mm_cvttsd_si64x(a); + + return ret == (int64_t) _a[0] ? TEST_SUCCESS : TEST_FAIL; +#endif +} + +result_t test_mm_div_pd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *_a = (const double *) impl.mTestFloatPointer1; + const double *_b = (const double *) impl.mTestFloatPointer2; + double d0 = 0.0, d1 = 0.0; + + if (_b[0] != 0.0) + d0 = _a[0] / _b[0]; + if (_b[1] != 0.0) + d1 = _a[1] / _b[1]; + + __m128d a = load_m128d(_a); + __m128d b = load_m128d(_b); + __m128d c = _mm_div_pd(a, b); + return validateDouble(c, d0, d1); +} + +result_t test_mm_div_sd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *_a = (const double *) impl.mTestFloatPointer1; + const double *_b = (const double *) impl.mTestFloatPointer2; + + double d0 = _a[0] / _b[0]; + double d1 = _a[1]; + + __m128d a = load_m128d(_a); + __m128d b = load_m128d(_b); + + __m128d c = _mm_div_sd(a, b); + + return validateDouble(c, d0, d1); +} + +result_t test_mm_extract_epi16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + uint16_t *_a = (uint16_t *) impl.mTestIntPointer1; + const int idx = iter & 0x7; + __m128i a = load_m128i(_a); + int c = 0; + switch (idx) { + case 0: + c = _mm_extract_epi16(a, 0); + break; + case 1: + c = _mm_extract_epi16(a, 1); + break; + case 2: + c = _mm_extract_epi16(a, 2); + break; + case 3: + c = _mm_extract_epi16(a, 3); + break; + case 4: + c = _mm_extract_epi16(a, 4); + break; + case 5: + c = _mm_extract_epi16(a, 5); + break; + case 6: + c = _mm_extract_epi16(a, 6); + break; + case 7: + c = _mm_extract_epi16(a, 7); + break; + } + + ASSERT_RETURN(c == *(_a + idx)); + return TEST_SUCCESS; +} + +result_t test_mm_insert_epi16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int16_t *_a = (const int16_t *) impl.mTestIntPointer1; + const int16_t insert = (int16_t) *impl.mTestIntPointer2; + +#define TEST_IMPL(IDX) \ + int16_t d##IDX[8]; \ + for (int i = 0; i < 8; i++) { \ + d##IDX[i] = _a[i]; \ + } \ + d##IDX[IDX] = insert; \ + \ + __m128i a##IDX = load_m128i(_a); \ + __m128i b##IDX = _mm_insert_epi16(a##IDX, insert, IDX); \ + CHECK_RESULT(VALIDATE_INT16_M128(b##IDX, d##IDX)) + + IMM_8_ITER +#undef TEST_IMPL + + return TEST_SUCCESS; +} + +result_t test_mm_lfence(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + /* FIXME: Assume that memory barriers always function as intended. */ + return TEST_SUCCESS; +} + +result_t test_mm_load_pd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *p = (const double *) impl.mTestFloatPointer1; + __m128d a = _mm_load_pd(p); + return validateDouble(a, p[0], p[1]); +} + +result_t test_mm_load_pd1(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *p = (const double *) impl.mTestFloatPointer1; + __m128d a = _mm_load_pd1(p); + return validateDouble(a, p[0], p[0]); +} + +result_t test_mm_load_sd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *p = (const double *) impl.mTestFloatPointer1; + __m128d a = _mm_load_sd(p); + return validateDouble(a, p[0], 0); +} + +result_t test_mm_load_si128(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int32_t *addr = impl.mTestIntPointer1; + + __m128i ret = _mm_load_si128((const __m128i *) addr); + + return VALIDATE_INT32_M128(ret, addr); +} + +result_t test_mm_load1_pd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *addr = (const double *) impl.mTestFloatPointer1; + + __m128d ret = _mm_load1_pd(addr); + + return validateDouble(ret, addr[0], addr[0]); +} + +result_t test_mm_loadh_pd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *_a = (const double *) impl.mTestFloatPointer1; + const double *addr = (const double *) impl.mTestFloatPointer2; + + __m128d a = load_m128d(_a); + __m128d ret = _mm_loadh_pd(a, addr); + + return validateDouble(ret, _a[0], addr[0]); +} + +result_t test_mm_loadl_epi64(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int64_t *addr = (const int64_t *) impl.mTestIntPointer1; + + __m128i ret = _mm_loadl_epi64((const __m128i *) addr); + + return validateInt64(ret, addr[0], 0); +} + +result_t test_mm_loadl_pd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *_a = (const double *) impl.mTestFloatPointer1; + const double *addr = (const double *) impl.mTestFloatPointer2; + + __m128d a = load_m128d(_a); + __m128d ret = _mm_loadl_pd(a, addr); + + return validateDouble(ret, addr[0], _a[1]); +} + +result_t test_mm_loadr_pd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *addr = (const double *) impl.mTestFloatPointer1; + + __m128d ret = _mm_loadr_pd(addr); + + return validateDouble(ret, addr[1], addr[0]); +} + +result_t test_mm_loadu_pd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *p = (const double *) impl.mTestFloatPointer1; + __m128d a = _mm_loadu_pd(p); + return validateDouble(a, p[0], p[1]); +} + +result_t test_mm_loadu_si128(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const unaligned_int32_t *_a = + (const unaligned_int32_t *) (impl.mTestUnalignedInts + 1); + __m128i c = _mm_loadu_si128((const __m128i *) _a); + return VALIDATE_INT32_M128(c, _a); +} + +result_t test_mm_loadu_si32(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + // The GCC version before 11 does not implement intrinsic function + // _mm_loadu_si32. Check https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95483 + // for more information. +#if (defined(__GNUC__) && !defined(__clang__)) && (__GNUC__ <= 10) + return TEST_UNIMPL; +#else + const unaligned_int32_t *addr = + (const unaligned_int32_t *) (impl.mTestUnalignedInts + 1); + + __m128i ret = _mm_loadu_si32((const void *) addr); + + return validateInt32(ret, addr[0], 0, 0, 0); +#endif +} + +result_t test_mm_madd_epi16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int16_t *_a = (const int16_t *) impl.mTestIntPointer1; + const int16_t *_b = (const int16_t *) impl.mTestIntPointer2; + int32_t d0 = (int32_t) _a[0] * _b[0]; + int32_t d1 = (int32_t) _a[1] * _b[1]; + int32_t d2 = (int32_t) _a[2] * _b[2]; + int32_t d3 = (int32_t) _a[3] * _b[3]; + int32_t d4 = (int32_t) _a[4] * _b[4]; + int32_t d5 = (int32_t) _a[5] * _b[5]; + int32_t d6 = (int32_t) _a[6] * _b[6]; + int32_t d7 = (int32_t) _a[7] * _b[7]; + + int32_t e[4]; + e[0] = d0 + d1; + e[1] = d2 + d3; + e[2] = d4 + d5; + e[3] = d6 + d7; + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i c = _mm_madd_epi16(a, b); + return VALIDATE_INT32_M128(c, e); +} + +result_t test_mm_maskmoveu_si128(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const uint8_t *_a = (const uint8_t *) impl.mTestIntPointer1; + const uint8_t *_mask = (const uint8_t *) impl.mTestIntPointer2; + char mem_addr[16]; + + __m128i a = load_m128i(_a); + __m128i mask = load_m128i(_mask); + _mm_maskmoveu_si128(a, mask, mem_addr); + + for (int i = 0; i < 16; i++) { + if (_mask[i] >> 7) { + ASSERT_RETURN(_a[i] == (uint8_t) mem_addr[i]); + } + } + + return TEST_SUCCESS; +} + +result_t test_mm_max_epi16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ +#if (__GNUC__ == 8) || (__GNUC__ == 9 && __GNUC_MINOR__ == 2) +#error Using older gcc versions can lead to an operand mismatch error. This issue affects all versions prior to gcc 10. +#else + const int16_t *_a = (const int16_t *) impl.mTestIntPointer1; + const int16_t *_b = (const int16_t *) impl.mTestIntPointer2; + int16_t d[8]; + d[0] = _a[0] > _b[0] ? _a[0] : _b[0]; + d[1] = _a[1] > _b[1] ? _a[1] : _b[1]; + d[2] = _a[2] > _b[2] ? _a[2] : _b[2]; + d[3] = _a[3] > _b[3] ? _a[3] : _b[3]; + d[4] = _a[4] > _b[4] ? _a[4] : _b[4]; + d[5] = _a[5] > _b[5] ? _a[5] : _b[5]; + d[6] = _a[6] > _b[6] ? _a[6] : _b[6]; + d[7] = _a[7] > _b[7] ? _a[7] : _b[7]; + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + + __m128i c = _mm_max_epi16(a, b); + return VALIDATE_INT16_M128(c, d); +#endif +} + +result_t test_mm_max_epu8(const SSE2NEONTestImpl &impl, uint32_t iter) +{ +#if (__GNUC__ == 8) || (__GNUC__ == 9 && __GNUC_MINOR__ == 2) +#error Using older gcc versions can lead to an operand mismatch error. This issue affects all versions prior to gcc 10. +#else + const int8_t *_a = (const int8_t *) impl.mTestIntPointer1; + const int8_t *_b = (const int8_t *) impl.mTestIntPointer2; + uint8_t d[16]; + d[0] = ((uint8_t) _a[0] > (uint8_t) _b[0]) ? ((uint8_t) _a[0]) + : ((uint8_t) _b[0]); + d[1] = ((uint8_t) _a[1] > (uint8_t) _b[1]) ? ((uint8_t) _a[1]) + : ((uint8_t) _b[1]); + d[2] = ((uint8_t) _a[2] > (uint8_t) _b[2]) ? ((uint8_t) _a[2]) + : ((uint8_t) _b[2]); + d[3] = ((uint8_t) _a[3] > (uint8_t) _b[3]) ? ((uint8_t) _a[3]) + : ((uint8_t) _b[3]); + d[4] = ((uint8_t) _a[4] > (uint8_t) _b[4]) ? ((uint8_t) _a[4]) + : ((uint8_t) _b[4]); + d[5] = ((uint8_t) _a[5] > (uint8_t) _b[5]) ? ((uint8_t) _a[5]) + : ((uint8_t) _b[5]); + d[6] = ((uint8_t) _a[6] > (uint8_t) _b[6]) ? ((uint8_t) _a[6]) + : ((uint8_t) _b[6]); + d[7] = ((uint8_t) _a[7] > (uint8_t) _b[7]) ? ((uint8_t) _a[7]) + : ((uint8_t) _b[7]); + d[8] = ((uint8_t) _a[8] > (uint8_t) _b[8]) ? ((uint8_t) _a[8]) + : ((uint8_t) _b[8]); + d[9] = ((uint8_t) _a[9] > (uint8_t) _b[9]) ? ((uint8_t) _a[9]) + : ((uint8_t) _b[9]); + d[10] = ((uint8_t) _a[10] > (uint8_t) _b[10]) ? ((uint8_t) _a[10]) + : ((uint8_t) _b[10]); + d[11] = ((uint8_t) _a[11] > (uint8_t) _b[11]) ? ((uint8_t) _a[11]) + : ((uint8_t) _b[11]); + d[12] = ((uint8_t) _a[12] > (uint8_t) _b[12]) ? ((uint8_t) _a[12]) + : ((uint8_t) _b[12]); + d[13] = ((uint8_t) _a[13] > (uint8_t) _b[13]) ? ((uint8_t) _a[13]) + : ((uint8_t) _b[13]); + d[14] = ((uint8_t) _a[14] > (uint8_t) _b[14]) ? ((uint8_t) _a[14]) + : ((uint8_t) _b[14]); + d[15] = ((uint8_t) _a[15] > (uint8_t) _b[15]) ? ((uint8_t) _a[15]) + : ((uint8_t) _b[15]); + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i c = _mm_max_epu8(a, b); + return VALIDATE_INT8_M128(c, d); +#endif +} + +result_t test_mm_max_pd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *_a = (const double *) impl.mTestFloatPointer1; + const double *_b = (const double *) impl.mTestFloatPointer2; + + double f0 = _a[0] > _b[0] ? _a[0] : _b[0]; + double f1 = _a[1] > _b[1] ? _a[1] : _b[1]; + + __m128d a = load_m128d(_a); + __m128d b = load_m128d(_b); + __m128d c = _mm_max_pd(a, b); + + return validateDouble(c, f0, f1); +} + +result_t test_mm_max_sd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *_a = (const double *) impl.mTestFloatPointer1; + const double *_b = (const double *) impl.mTestFloatPointer2; + double d0 = _a[0] > _b[0] ? _a[0] : _b[0]; + double d1 = _a[1]; + + __m128d a = load_m128d(_a); + __m128d b = load_m128d(_b); + __m128d c = _mm_max_sd(a, b); + + return validateDouble(c, d0, d1); +} + +result_t test_mm_mfence(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + /* FIXME: Assume that memory barriers always function as intended. */ + return TEST_SUCCESS; +} + +result_t test_mm_min_epi16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int16_t *_a = (const int16_t *) impl.mTestIntPointer1; + const int16_t *_b = (const int16_t *) impl.mTestIntPointer2; + int16_t d[8]; + d[0] = _a[0] < _b[0] ? _a[0] : _b[0]; + d[1] = _a[1] < _b[1] ? _a[1] : _b[1]; + d[2] = _a[2] < _b[2] ? _a[2] : _b[2]; + d[3] = _a[3] < _b[3] ? _a[3] : _b[3]; + d[4] = _a[4] < _b[4] ? _a[4] : _b[4]; + d[5] = _a[5] < _b[5] ? _a[5] : _b[5]; + d[6] = _a[6] < _b[6] ? _a[6] : _b[6]; + d[7] = _a[7] < _b[7] ? _a[7] : _b[7]; + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i c = _mm_min_epi16(a, b); + return VALIDATE_INT16_M128(c, d); +} + +result_t test_mm_min_epu8(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int8_t *_a = (const int8_t *) impl.mTestIntPointer1; + const int8_t *_b = (const int8_t *) impl.mTestIntPointer2; + uint8_t d[16]; + d[0] = + ((uint8_t) _a[0] < (uint8_t) _b[0]) ? (uint8_t) _a[0] : (uint8_t) _b[0]; + d[1] = + ((uint8_t) _a[1] < (uint8_t) _b[1]) ? (uint8_t) _a[1] : (uint8_t) _b[1]; + d[2] = + ((uint8_t) _a[2] < (uint8_t) _b[2]) ? (uint8_t) _a[2] : (uint8_t) _b[2]; + d[3] = + ((uint8_t) _a[3] < (uint8_t) _b[3]) ? (uint8_t) _a[3] : (uint8_t) _b[3]; + d[4] = + ((uint8_t) _a[4] < (uint8_t) _b[4]) ? (uint8_t) _a[4] : (uint8_t) _b[4]; + d[5] = + ((uint8_t) _a[5] < (uint8_t) _b[5]) ? (uint8_t) _a[5] : (uint8_t) _b[5]; + d[6] = + ((uint8_t) _a[6] < (uint8_t) _b[6]) ? (uint8_t) _a[6] : (uint8_t) _b[6]; + d[7] = + ((uint8_t) _a[7] < (uint8_t) _b[7]) ? (uint8_t) _a[7] : (uint8_t) _b[7]; + d[8] = + ((uint8_t) _a[8] < (uint8_t) _b[8]) ? (uint8_t) _a[8] : (uint8_t) _b[8]; + d[9] = + ((uint8_t) _a[9] < (uint8_t) _b[9]) ? (uint8_t) _a[9] : (uint8_t) _b[9]; + d[10] = ((uint8_t) _a[10] < (uint8_t) _b[10]) ? (uint8_t) _a[10] + : (uint8_t) _b[10]; + d[11] = ((uint8_t) _a[11] < (uint8_t) _b[11]) ? (uint8_t) _a[11] + : (uint8_t) _b[11]; + d[12] = ((uint8_t) _a[12] < (uint8_t) _b[12]) ? (uint8_t) _a[12] + : (uint8_t) _b[12]; + d[13] = ((uint8_t) _a[13] < (uint8_t) _b[13]) ? (uint8_t) _a[13] + : (uint8_t) _b[13]; + d[14] = ((uint8_t) _a[14] < (uint8_t) _b[14]) ? (uint8_t) _a[14] + : (uint8_t) _b[14]; + d[15] = ((uint8_t) _a[15] < (uint8_t) _b[15]) ? (uint8_t) _a[15] + : (uint8_t) _b[15]; + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i c = _mm_min_epu8(a, b); + return VALIDATE_INT8_M128(c, d); +} + +result_t test_mm_min_pd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *_a = (const double *) impl.mTestFloatPointer1; + const double *_b = (const double *) impl.mTestFloatPointer2; + double f0 = _a[0] < _b[0] ? _a[0] : _b[0]; + double f1 = _a[1] < _b[1] ? _a[1] : _b[1]; + + __m128d a = load_m128d(_a); + __m128d b = load_m128d(_b); + + __m128d c = _mm_min_pd(a, b); + return validateDouble(c, f0, f1); +} + +result_t test_mm_min_sd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *_a = (const double *) impl.mTestFloatPointer1; + const double *_b = (const double *) impl.mTestFloatPointer2; + double d0 = _a[0] < _b[0] ? _a[0] : _b[0]; + double d1 = _a[1]; + + __m128d a = load_m128d(_a); + __m128d b = load_m128d(_b); + __m128d c = _mm_min_sd(a, b); + + return validateDouble(c, d0, d1); +} + +result_t test_mm_move_epi64(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int64_t *_a = (const int64_t *) impl.mTestIntPointer1; + + int64_t d0 = _a[0]; + int64_t d1 = 0; + + __m128i a = load_m128i(_a); + __m128i c = _mm_move_epi64(a); + + return validateInt64(c, d0, d1); +} + +result_t test_mm_move_sd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *_a = (const double *) impl.mTestFloatPointer1; + const double *_b = (const double *) impl.mTestFloatPointer2; + __m128d a = load_m128d(_a); + __m128d b = load_m128d(_b); + + double result[2]; + result[0] = _b[0]; + result[1] = _a[1]; + + __m128d ret = _mm_move_sd(a, b); + return validateDouble(ret, result[0], result[1]); +} + +result_t test_mm_movemask_epi8(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int32_t *_a = impl.mTestIntPointer1; + __m128i a = load_m128i(_a); + + const uint8_t *ip = (const uint8_t *) _a; + int ret = 0; + uint32_t mask = 1; + for (uint32_t i = 0; i < 16; i++) { + if (ip[i] & 0x80) { + ret |= mask; + } + mask = mask << 1; + } + int test = _mm_movemask_epi8(a); + ASSERT_RETURN(test == ret); + return TEST_SUCCESS; +} + +result_t test_mm_movemask_pd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *_a = (const double *) impl.mTestFloatPointer1; + int _c = 0; + _c |= (int) (((*(const uint64_t *) _a) >> 63) & 0x1); + _c |= (((*(const uint64_t *) (_a + 1)) >> 62) & 0x2); + + __m128d a = load_m128d(_a); + int c = _mm_movemask_pd(a); + + ASSERT_RETURN(c == _c); + return TEST_SUCCESS; +} + +result_t test_mm_movepi64_pi64(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int64_t *_a = (const int64_t *) impl.mTestIntPointer1; + + int64_t d0 = _a[0]; + + __m128i a = load_m128i(_a); + __m64 c = _mm_movepi64_pi64(a); + + return validateInt64(c, d0); +} + +result_t test_mm_movpi64_epi64(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int64_t *_a = (const int64_t *) impl.mTestIntPointer1; + + int64_t d0 = _a[0]; + + __m64 a = load_m64(_a); + __m128i c = _mm_movpi64_epi64(a); + + return validateInt64(c, d0, 0); +} + +result_t test_mm_mul_epu32(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const uint32_t *_a = (const uint32_t *) impl.mTestIntPointer1; + const uint32_t *_b = (const uint32_t *) impl.mTestIntPointer2; + uint64_t dx = (uint64_t) (_a[0]) * (uint64_t) (_b[0]); + uint64_t dy = (uint64_t) (_a[2]) * (uint64_t) (_b[2]); + + __m128i a = _mm_loadu_si128((const __m128i *) _a); + __m128i b = _mm_loadu_si128((const __m128i *) _b); + __m128i r = _mm_mul_epu32(a, b); + return validateUInt64(r, dx, dy); +} + +result_t test_mm_mul_pd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *_a = (const double *) impl.mTestFloatPointer1; + const double *_b = (const double *) impl.mTestFloatPointer2; + double d0 = _a[0] * _b[0]; + double d1 = _a[1] * _b[1]; + + __m128d a = _mm_load_pd(_a); + __m128d b = _mm_load_pd(_b); + __m128d c = _mm_mul_pd(a, b); + return validateDouble(c, d0, d1); +} + +result_t test_mm_mul_sd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *_a = (const double *) impl.mTestFloatPointer1; + const double *_b = (const double *) impl.mTestFloatPointer2; + double dx = _a[0] * _b[0]; + double dy = _a[1]; + + __m128d a = load_m128d(_a); + __m128d b = load_m128d(_b); + __m128d c = _mm_mul_sd(a, b); + return validateDouble(c, dx, dy); +} + +result_t test_mm_mul_su32(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const uint32_t *_a = (const uint32_t *) impl.mTestIntPointer1; + const uint32_t *_b = (const uint32_t *) impl.mTestIntPointer2; + + uint64_t u = (uint64_t) (_a[0]) * (uint64_t) (_b[0]); + + __m64 a = load_m64(_a); + __m64 b = load_m64(_b); + __m64 r = _mm_mul_su32(a, b); + + return validateUInt64(r, u); +} + +result_t test_mm_mulhi_epi16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int16_t *_a = (const int16_t *) impl.mTestIntPointer1; + const int16_t *_b = (const int16_t *) impl.mTestIntPointer2; + int16_t d[8]; + for (uint32_t i = 0; i < 8; i++) { + int32_t m = (int32_t) _a[i] * (int32_t) _b[i]; + d[i] = (int16_t) (m >> 16); + } + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i c = _mm_mulhi_epi16(a, b); + return VALIDATE_INT16_M128(c, d); +} + +result_t test_mm_mulhi_epu16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const uint16_t *_a = (const uint16_t *) impl.mTestIntPointer1; + const uint16_t *_b = (const uint16_t *) impl.mTestIntPointer2; + uint16_t d[8]; + for (uint32_t i = 0; i < 8; i++) { + uint32_t m = (uint32_t) _a[i] * (uint32_t) _b[i]; + d[i] = (uint16_t) (m >> 16); + } + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i c = _mm_mulhi_epu16(a, b); + return VALIDATE_INT16_M128(c, d); +} + +result_t test_mm_mullo_epi16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int16_t *_a = (const int16_t *) impl.mTestIntPointer1; + const int16_t *_b = (const int16_t *) impl.mTestIntPointer2; + int16_t d[8]; + d[0] = _a[0] * _b[0]; + d[1] = _a[1] * _b[1]; + d[2] = _a[2] * _b[2]; + d[3] = _a[3] * _b[3]; + d[4] = _a[4] * _b[4]; + d[5] = _a[5] * _b[5]; + d[6] = _a[6] * _b[6]; + d[7] = _a[7] * _b[7]; + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i c = _mm_mullo_epi16(a, b); + return VALIDATE_INT16_M128(c, d); +} + +result_t test_mm_or_pd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int64_t *_a = (const int64_t *) impl.mTestFloatPointer1; + const int64_t *_b = (const int64_t *) impl.mTestFloatPointer2; + double d0 = sse2neon_tool_recast_f64(_a[0] | _b[0]); + double d1 = sse2neon_tool_recast_f64(_a[1] | _b[1]); + + __m128d a = load_m128d(_a); + __m128d b = load_m128d(_b); + __m128d c = _mm_or_pd(a, b); + + return validateDouble(c, d0, d1); +} + +result_t test_mm_or_si128(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int32_t *_a = impl.mTestIntPointer1; + const int32_t *_b = impl.mTestIntPointer2; + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128 fc = _mm_or_ps(_mm_castsi128_ps(a), _mm_castsi128_ps(b)); + __m128i c = _mm_castps_si128(fc); + // now for the assertion... + const uint32_t *ia = (const uint32_t *) &a; + const uint32_t *ib = (const uint32_t *) &b; + uint32_t r[4]; + r[0] = ia[0] | ib[0]; + r[1] = ia[1] | ib[1]; + r[2] = ia[2] | ib[2]; + r[3] = ia[3] | ib[3]; + __m128i ret = do_mm_set_epi32(r[3], r[2], r[1], r[0]); + result_t res = VALIDATE_INT32_M128(c, r); + if (res) { + res = VALIDATE_INT32_M128(ret, r); + } + return res; +} + +result_t test_mm_packs_epi16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + int8_t max = INT8_MAX; + int8_t min = INT8_MIN; + const int16_t *_a = (const int16_t *) impl.mTestIntPointer1; + const int16_t *_b = (const int16_t *) impl.mTestIntPointer2; + + int8_t d[16]; + for (int i = 0; i < 8; i++) { + if (_a[i] > max) + d[i] = max; + else if (_a[i] < min) + d[i] = min; + else + d[i] = (int8_t) _a[i]; + } + for (int i = 0; i < 8; i++) { + if (_b[i] > max) + d[i + 8] = max; + else if (_b[i] < min) + d[i + 8] = min; + else + d[i + 8] = (int8_t) _b[i]; + } + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i c = _mm_packs_epi16(a, b); + + return VALIDATE_INT8_M128(c, d); +} + +result_t test_mm_packs_epi32(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + int16_t max = INT16_MAX; + int16_t min = INT16_MIN; + const int32_t *_a = (const int32_t *) impl.mTestIntPointer1; + const int32_t *_b = (const int32_t *) impl.mTestIntPointer2; + + int16_t d[8]; + for (int i = 0; i < 4; i++) { + if (_a[i] > max) + d[i] = max; + else if (_a[i] < min) + d[i] = min; + else + d[i] = (int16_t) _a[i]; + } + for (int i = 0; i < 4; i++) { + if (_b[i] > max) + d[i + 4] = max; + else if (_b[i] < min) + d[i + 4] = min; + else + d[i + 4] = (int16_t) _b[i]; + } + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i c = _mm_packs_epi32(a, b); + + return VALIDATE_INT16_M128(c, d); +} + +result_t test_mm_packus_epi16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + uint8_t max = UINT8_MAX; + uint8_t min = 0; + const int16_t *_a = (const int16_t *) impl.mTestIntPointer1; + const int16_t *_b = (const int16_t *) impl.mTestIntPointer2; + + uint8_t d[16]; + for (int i = 0; i < 8; i++) { + if (_a[i] > (int16_t) max) + d[i] = max; + else if (_a[i] < (int16_t) min) + d[i] = min; + else + d[i] = (uint8_t) _a[i]; + } + for (int i = 0; i < 8; i++) { + if (_b[i] > (int16_t) max) + d[i + 8] = max; + else if (_b[i] < (int16_t) min) + d[i + 8] = min; + else + d[i + 8] = (uint8_t) _b[i]; + } + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i c = _mm_packus_epi16(a, b); + + return VALIDATE_UINT8_M128(c, d); +} + +result_t test_mm_pause(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + _mm_pause(); + return TEST_SUCCESS; +} + +result_t test_mm_sad_epu8(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const uint8_t *_a = (const uint8_t *) impl.mTestIntPointer1; + const uint8_t *_b = (const uint8_t *) impl.mTestIntPointer2; + uint16_t d0 = 0; + uint16_t d1 = 0; + for (int i = 0; i < 8; i++) { + d0 += (uint16_t) abs(_a[i] - _b[i]); + } + for (int i = 8; i < 16; i++) { + d1 += (uint16_t) abs(_a[i] - _b[i]); + } + + const __m128i a = load_m128i(_a); + const __m128i b = load_m128i(_b); + __m128i c = _mm_sad_epu8(a, b); + return validateUInt16(c, d0, 0, 0, 0, d1, 0, 0, 0); +} + +result_t test_mm_set_epi16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int16_t *_a = (const int16_t *) impl.mTestIntPointer1; + int16_t d[8]; + d[0] = _a[0]; + d[1] = _a[1]; + d[2] = _a[2]; + d[3] = _a[3]; + d[4] = _a[4]; + d[5] = _a[5]; + d[6] = _a[6]; + d[7] = _a[7]; + + __m128i c = _mm_set_epi16(d[7], d[6], d[5], d[4], d[3], d[2], d[1], d[0]); + return VALIDATE_INT16_M128(c, d); +} + +result_t test_mm_set_epi32(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + int32_t d[4]; + d[3] = impl.mTestInts[iter]; + d[2] = impl.mTestInts[iter + 1]; + d[1] = impl.mTestInts[iter + 2]; + d[0] = impl.mTestInts[iter + 3]; + __m128i a = _mm_set_epi32(d[3], d[2], d[1], d[0]); + return VALIDATE_INT32_M128(a, d); +} + +result_t test_mm_set_epi64(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int64_t *_a = (const int64_t *) impl.mTestIntPointer1; + + __m128i ret = _mm_set_epi64(load_m64(&_a[1]), load_m64(&_a[0])); + + return validateInt64(ret, _a[0], _a[1]); +} + +result_t test_mm_set_epi64x(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int64_t *_a = (const int64_t *) impl.mTestIntPointer1; + + __m128i ret = _mm_set_epi64x(_a[1], _a[0]); + + return validateInt64(ret, _a[0], _a[1]); +} + +result_t test_mm_set_epi8(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int8_t *_a = (const int8_t *) impl.mTestIntPointer1; + int8_t d[16]; + d[0] = _a[0]; + d[1] = _a[1]; + d[2] = _a[2]; + d[3] = _a[3]; + d[4] = _a[4]; + d[5] = _a[5]; + d[6] = _a[6]; + d[7] = _a[7]; + d[8] = _a[8]; + d[9] = _a[9]; + d[10] = _a[10]; + d[11] = _a[11]; + d[12] = _a[12]; + d[13] = _a[13]; + d[14] = _a[14]; + d[15] = _a[15]; + + __m128i c = + _mm_set_epi8(d[15], d[14], d[13], d[12], d[11], d[10], d[9], d[8], d[7], + d[6], d[5], d[4], d[3], d[2], d[1], d[0]); + return VALIDATE_INT8_M128(c, d); +} + +result_t test_mm_set_pd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *p = (const double *) impl.mTestFloatPointer1; + double x = p[0]; + double y = p[1]; + __m128d a = _mm_set_pd(x, y); + return validateDouble(a, y, x); +} + +result_t test_mm_set_pd1(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double _a = impl.mTestFloats[iter]; + + __m128d a = _mm_set_pd1(_a); + + return validateDouble(a, _a, _a); +} + +result_t test_mm_set_sd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *_a = (const double *) impl.mTestFloatPointer1; + + double f0 = _a[0]; + double f1 = 0.0; + + __m128d a = _mm_set_sd(_a[0]); + return validateDouble(a, f0, f1); +} + +result_t test_mm_set1_epi16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int16_t *_a = (const int16_t *) impl.mTestIntPointer1; + int16_t d0 = _a[0]; + + __m128i c = _mm_set1_epi16(d0); + return validateInt16(c, d0, d0, d0, d0, d0, d0, d0, d0); +} + +result_t test_mm_set1_epi32(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + int32_t x = impl.mTestInts[iter]; + __m128i a = _mm_set1_epi32(x); + return validateInt32(a, x, x, x, x); +} + +result_t test_mm_set1_epi64(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int64_t *_a = (const int64_t *) impl.mTestIntPointer1; + + __m128i ret = _mm_set1_epi64(load_m64(&_a[0])); + + return validateInt64(ret, _a[0], _a[0]); +} + +result_t test_mm_set1_epi64x(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int64_t *_a = (const int64_t *) impl.mTestIntPointer1; + + __m128i ret = _mm_set1_epi64x(_a[0]); + + return validateInt64(ret, _a[0], _a[0]); +} + +result_t test_mm_set1_epi8(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int8_t *_a = (const int8_t *) impl.mTestIntPointer1; + int8_t d0 = _a[0]; + __m128i c = _mm_set1_epi8(d0); + return validateInt8(c, d0, d0, d0, d0, d0, d0, d0, d0, d0, d0, d0, d0, d0, + d0, d0, d0); +} + +result_t test_mm_set1_pd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *_a = (const double *) impl.mTestFloatPointer1; + double d0 = _a[0]; + __m128d c = _mm_set1_pd(d0); + return validateDouble(c, d0, d0); +} + +result_t test_mm_setr_epi16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int16_t *_a = (const int16_t *) impl.mTestIntPointer1; + + __m128i c = + _mm_setr_epi16(_a[0], _a[1], _a[2], _a[3], _a[4], _a[5], _a[6], _a[7]); + + return VALIDATE_INT16_M128(c, _a); +} + +result_t test_mm_setr_epi32(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int32_t *_a = (const int32_t *) impl.mTestIntPointer1; + __m128i c = _mm_setr_epi32(_a[0], _a[1], _a[2], _a[3]); + return VALIDATE_INT32_M128(c, _a); +} + +result_t test_mm_setr_epi64(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int64_t *_a = (const int64_t *) impl.mTestIntPointer1; + __m128i c = _mm_setr_epi64(load_m64(&_a[0]), load_m64(&_a[1])); + return validateInt64(c, _a[0], _a[1]); +} + +result_t test_mm_setr_epi8(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int8_t *_a = (const int8_t *) impl.mTestIntPointer1; + + __m128i c = _mm_setr_epi8(_a[0], _a[1], _a[2], _a[3], _a[4], _a[5], _a[6], + _a[7], _a[8], _a[9], _a[10], _a[11], _a[12], + _a[13], _a[14], _a[15]); + + return VALIDATE_INT8_M128(c, _a); +} + +result_t test_mm_setr_pd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *p = (const double *) impl.mTestFloatPointer1; + + double x = p[0]; + double y = p[1]; + + __m128d a = _mm_setr_pd(x, y); + + return validateDouble(a, x, y); +} + +result_t test_mm_setzero_pd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + __m128d a = _mm_setzero_pd(); + return validateDouble(a, 0, 0); +} + +result_t test_mm_setzero_si128(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + __m128i a = _mm_setzero_si128(); + return validateInt32(a, 0, 0, 0, 0); +} + +result_t test_mm_shuffle_epi32(const SSE2NEONTestImpl &impl, uint32_t iter) +{ +#if (__GNUC__ == 8) || (__GNUC__ == 9 && __GNUC_MINOR__ == 2) +#error Using older gcc versions can lead to an operand mismatch error. This issue affects all versions prior to gcc 10. +#else + const int32_t *_a = impl.mTestIntPointer1; + __m128i a, c; + int32_t _d[4]; + +#define TEST_IMPL(IDX) \ + _d[0] = _a[((IDX) & 0x3)]; \ + _d[1] = _a[((IDX >> 2) & 0x3)]; \ + _d[2] = _a[((IDX >> 4) & 0x3)]; \ + _d[3] = _a[((IDX >> 6) & 0x3)]; \ + \ + a = load_m128i(_a); \ + c = _mm_shuffle_epi32(a, IDX); \ + CHECK_RESULT(VALIDATE_INT32_M128(c, _d)) + + IMM_256_ITER +#undef TEST_IMPL + return TEST_SUCCESS; +#endif +} + +result_t test_mm_shuffle_pd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *_a = (const double *) impl.mTestFloatPointer1; + const double *_b = (const double *) impl.mTestFloatPointer2; + __m128d a, b, c; + +#define TEST_IMPL(IDX) \ + a = load_m128d(_a); \ + b = load_m128d(_b); \ + c = _mm_shuffle_pd(a, b, IDX); \ + \ + double d0##IDX = _a[IDX & 0x1]; \ + double d1##IDX = _b[(IDX & 0x2) >> 1]; \ + CHECK_RESULT(validateDouble(c, d0##IDX, d1##IDX)) + + IMM_4_ITER +#undef TEST_IMPL + return TEST_SUCCESS; +} + +result_t test_mm_shufflehi_epi16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ +#if (__GNUC__ == 8) || (__GNUC__ == 9 && __GNUC_MINOR__ == 2) +#error Using older gcc versions can lead to an operand mismatch error. This issue affects all versions prior to gcc 10. +#else + const int16_t *_a = (const int16_t *) impl.mTestIntPointer1; + __m128i a, c; + + int16_t _d[8]; +#define TEST_IMPL(IDX) \ + _d[0] = _a[0]; \ + _d[1] = _a[1]; \ + _d[2] = _a[2]; \ + _d[3] = _a[3]; \ + _d[4] = (int16_t) (((const int64_t *) _a)[1] >> ((IDX & 0x3) * 16)); \ + _d[5] = \ + (int16_t) (((const int64_t *) _a)[1] >> (((IDX >> 2) & 0x3) * 16)); \ + _d[6] = \ + (int16_t) (((const int64_t *) _a)[1] >> (((IDX >> 4) & 0x3) * 16)); \ + _d[7] = \ + (int16_t) (((const int64_t *) _a)[1] >> (((IDX >> 6) & 0x3) * 16)); \ + \ + a = load_m128i(_a); \ + c = _mm_shufflehi_epi16(a, IDX); \ + \ + CHECK_RESULT(VALIDATE_INT16_M128(c, _d)) + + IMM_256_ITER +#undef TEST_IMPL + return TEST_SUCCESS; +#endif +} + +result_t test_mm_shufflelo_epi16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ +#if (__GNUC__ == 8) || (__GNUC__ == 9 && __GNUC_MINOR__ == 2) +#error Using older gcc versions can lead to an operand mismatch error. This issue affects all versions prior to gcc 10. +#else + const int16_t *_a = (const int16_t *) impl.mTestIntPointer1; + __m128i a, c; + int16_t _d[8]; + +#define TEST_IMPL(IDX) \ + _d[0] = (int16_t) (((const int64_t *) _a)[0] >> ((IDX & 0x3) * 16)); \ + _d[1] = \ + (int16_t) (((const int64_t *) _a)[0] >> (((IDX >> 2) & 0x3) * 16)); \ + _d[2] = \ + (int16_t) (((const int64_t *) _a)[0] >> (((IDX >> 4) & 0x3) * 16)); \ + _d[3] = \ + (int16_t) (((const int64_t *) _a)[0] >> (((IDX >> 6) & 0x3) * 16)); \ + _d[4] = _a[4]; \ + _d[5] = _a[5]; \ + _d[6] = _a[6]; \ + _d[7] = _a[7]; \ + \ + a = load_m128i(_a); \ + c = _mm_shufflelo_epi16(a, IDX); \ + \ + CHECK_RESULT(VALIDATE_INT16_M128(c, _d)) + + IMM_256_ITER +#undef TEST_IMPL + return TEST_SUCCESS; +#endif +} + +result_t test_mm_sll_epi16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int16_t *_a = (const int16_t *) impl.mTestIntPointer1; + __m128i a, b, c; + uint8_t idx; +#define TEST_IMPL(IDX) \ + uint16_t d##IDX[8]; \ + idx = IDX; \ + d##IDX[0] = (idx > 15) ? 0 : (uint16_t) (_a[0] << idx); \ + d##IDX[1] = (idx > 15) ? 0 : (uint16_t) (_a[1] << idx); \ + d##IDX[2] = (idx > 15) ? 0 : (uint16_t) (_a[2] << idx); \ + d##IDX[3] = (idx > 15) ? 0 : (uint16_t) (_a[3] << idx); \ + d##IDX[4] = (idx > 15) ? 0 : (uint16_t) (_a[4] << idx); \ + d##IDX[5] = (idx > 15) ? 0 : (uint16_t) (_a[5] << idx); \ + d##IDX[6] = (idx > 15) ? 0 : (uint16_t) (_a[6] << idx); \ + d##IDX[7] = (idx > 15) ? 0 : (uint16_t) (_a[7] << idx); \ + \ + a = load_m128i(_a); \ + b = _mm_set1_epi64x(IDX); \ + c = _mm_sll_epi16(a, b); \ + CHECK_RESULT(VALIDATE_INT16_M128(c, d##IDX)) + + IMM_64_ITER +#undef TEST_IMPL + + return TEST_SUCCESS; +} + +result_t test_mm_sll_epi32(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int32_t *_a = (const int32_t *) impl.mTestIntPointer1; + __m128i a, b, c; + uint8_t idx; + +#define TEST_IMPL(IDX) \ + uint32_t d##IDX[4]; \ + idx = IDX; \ + d##IDX[0] = (idx > 31) ? 0 : _a[0] << idx; \ + d##IDX[1] = (idx > 31) ? 0 : _a[1] << idx; \ + d##IDX[2] = (idx > 31) ? 0 : _a[2] << idx; \ + d##IDX[3] = (idx > 31) ? 0 : _a[3] << idx; \ + \ + a = load_m128i(_a); \ + b = _mm_set1_epi64x(IDX); \ + c = _mm_sll_epi32(a, b); \ + CHECK_RESULT(VALIDATE_INT32_M128(c, d##IDX)) + + IMM_64_ITER +#undef TEST_IMPL + return TEST_SUCCESS; +} + +result_t test_mm_sll_epi64(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int64_t *_a = (const int64_t *) impl.mTestIntPointer1; + __m128i a, b, c; + +#define TEST_IMPL(IDX) \ + uint64_t d0##IDX = (IDX & ~63) ? 0 : _a[0] << IDX; \ + uint64_t d1##IDX = (IDX & ~63) ? 0 : _a[1] << IDX; \ + \ + a = load_m128i(_a); \ + b = _mm_set1_epi64x(IDX); \ + c = _mm_sll_epi64(a, b); \ + \ + CHECK_RESULT(validateInt64(c, d0##IDX, d1##IDX)) + + IMM_64_ITER +#undef TEST_IMPL + return TEST_SUCCESS; +} + +result_t test_mm_slli_epi16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int16_t *_a = (const int16_t *) impl.mTestIntPointer1; + __m128i a, c; + uint8_t idx; +#define TEST_IMPL(IDX) \ + int16_t d##IDX[8]; \ + idx = IDX; \ + d##IDX[0] = (idx > 15) ? 0 : _a[0] << idx; \ + d##IDX[1] = (idx > 15) ? 0 : _a[1] << idx; \ + d##IDX[2] = (idx > 15) ? 0 : _a[2] << idx; \ + d##IDX[3] = (idx > 15) ? 0 : _a[3] << idx; \ + d##IDX[4] = (idx > 15) ? 0 : _a[4] << idx; \ + d##IDX[5] = (idx > 15) ? 0 : _a[5] << idx; \ + d##IDX[6] = (idx > 15) ? 0 : _a[6] << idx; \ + d##IDX[7] = (idx > 15) ? 0 : _a[7] << idx; \ + \ + a = load_m128i(_a); \ + c = _mm_slli_epi16(a, IDX); \ + CHECK_RESULT(VALIDATE_INT16_M128(c, d##IDX)) + + IMM_64_ITER +#undef TEST_IMPL + return TEST_SUCCESS; +} + +result_t test_mm_slli_epi32(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int32_t *_a = (const int32_t *) impl.mTestIntPointer1; +#if defined(__clang__) + // Clang compiler does not allow the second argument of _mm_slli_epi32() to + // be greater than 31. + const int count = (int) (iter % 33 - 1); // range: -1 ~ 31 +#else + const int count = (int) (iter % 34 - 1); // range: -1 ~ 32 +#endif + + int32_t d[4]; + d[0] = (count & ~31) ? 0 : _a[0] << count; + d[1] = (count & ~31) ? 0 : _a[1] << count; + d[2] = (count & ~31) ? 0 : _a[2] << count; + d[3] = (count & ~31) ? 0 : _a[3] << count; + + __m128i a = load_m128i(_a); + __m128i c = _mm_slli_epi32(a, count); + return VALIDATE_INT32_M128(c, d); +} + +result_t test_mm_slli_epi64(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int64_t *_a = (const int64_t *) impl.mTestIntPointer1; +#if defined(__clang__) + // Clang compiler does not allow the second argument of "_mm_slli_epi64()" + // to be greater than 63. + const int count = (int) (iter % 65 - 1); // range: -1 ~ 63 +#else + const int count = (int) (iter % 66 - 1); // range: -1 ~ 64 +#endif + int64_t d0 = (count & ~63) ? 0 : _a[0] << count; + int64_t d1 = (count & ~63) ? 0 : _a[1] << count; + + __m128i a = load_m128i(_a); + __m128i c = _mm_slli_epi64(a, count); + return validateInt64(c, d0, d1); +} + +result_t test_mm_slli_si128(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int32_t *_a = impl.mTestIntPointer1; + + int8_t d[16]; + int count = (iter % 5) << 2; + for (int i = 0; i < 16; i++) { + if (i < count) + d[i] = 0; + else + d[i] = ((const int8_t *) _a)[i - count]; + } + + __m128i a = load_m128i(_a); + __m128i ret = _mm_setzero_si128(); + switch (iter % 5) { + case 0: + ret = _mm_slli_si128(a, 0); + break; + case 1: + ret = _mm_slli_si128(a, 4); + break; + case 2: + ret = _mm_slli_si128(a, 8); + break; + case 3: + ret = _mm_slli_si128(a, 12); + break; + case 4: + ret = _mm_slli_si128(a, 16); + break; + } + + return VALIDATE_INT8_M128(ret, d); +} + +result_t test_mm_sqrt_pd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *_a = (const double *) impl.mTestFloatPointer1; + + double f0 = sqrt(_a[0]); + double f1 = sqrt(_a[1]); + + __m128d a = load_m128d(_a); + __m128d c = _mm_sqrt_pd(a); + + return validateFloatError(c, f0, f1, 1.0e-15); +} + +result_t test_mm_sqrt_sd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *_a = (const double *) impl.mTestFloatPointer1; + const double *_b = (const double *) impl.mTestFloatPointer2; + + double f0 = sqrt(_b[0]); + double f1 = _a[1]; + + __m128d a = load_m128d(_a); + __m128d b = load_m128d(_b); + __m128d c = _mm_sqrt_sd(a, b); + + return validateFloatError(c, f0, f1, 1.0e-15); +} + +result_t test_mm_sra_epi16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int16_t *_a = (const int16_t *) impl.mTestIntPointer1; + const int64_t count = (int64_t) (iter % 18 - 1); // range: -1 ~ 16 + + int16_t d[8]; + d[0] = (count & ~15) ? (_a[0] < 0 ? ~UINT16_C(0) : 0) : (_a[0] >> count); + d[1] = (count & ~15) ? (_a[1] < 0 ? ~UINT16_C(0) : 0) : (_a[1] >> count); + d[2] = (count & ~15) ? (_a[2] < 0 ? ~UINT16_C(0) : 0) : (_a[2] >> count); + d[3] = (count & ~15) ? (_a[3] < 0 ? ~UINT16_C(0) : 0) : (_a[3] >> count); + d[4] = (count & ~15) ? (_a[4] < 0 ? ~UINT16_C(0) : 0) : (_a[4] >> count); + d[5] = (count & ~15) ? (_a[5] < 0 ? ~UINT16_C(0) : 0) : (_a[5] >> count); + d[6] = (count & ~15) ? (_a[6] < 0 ? ~UINT16_C(0) : 0) : (_a[6] >> count); + d[7] = (count & ~15) ? (_a[7] < 0 ? ~UINT16_C(0) : 0) : (_a[7] >> count); + + __m128i a = _mm_load_si128((const __m128i *) _a); + __m128i b = _mm_set1_epi64x(count); + __m128i c = _mm_sra_epi16(a, b); + + return VALIDATE_INT16_M128(c, d); +} + +result_t test_mm_sra_epi32(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int32_t *_a = (const int32_t *) impl.mTestIntPointer1; + const int64_t count = (int64_t) (iter % 34 - 1); // range: -1 ~ 32 + + int32_t d[4]; + d[0] = (count & ~31) ? (_a[0] < 0 ? ~UINT32_C(0) : 0) : _a[0] >> count; + d[1] = (count & ~31) ? (_a[1] < 0 ? ~UINT32_C(0) : 0) : _a[1] >> count; + d[2] = (count & ~31) ? (_a[2] < 0 ? ~UINT32_C(0) : 0) : _a[2] >> count; + d[3] = (count & ~31) ? (_a[3] < 0 ? ~UINT32_C(0) : 0) : _a[3] >> count; + + __m128i a = _mm_load_si128((const __m128i *) _a); + __m128i b = _mm_set1_epi64x(count); + __m128i c = _mm_sra_epi32(a, b); + + return VALIDATE_INT32_M128(c, d); +} + +result_t test_mm_srai_epi16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int16_t *_a = (const int16_t *) impl.mTestIntPointer1; + const int32_t b = (int32_t) (iter % 18 - 1); // range: -1 ~ 16 + int16_t d[8]; + int count = (b & ~15) ? 15 : b; + + for (int i = 0; i < 8; i++) { + d[i] = _a[i] >> count; + } + + __m128i a = _mm_load_si128((const __m128i *) _a); + __m128i c = _mm_srai_epi16(a, b); + + return VALIDATE_INT16_M128(c, d); +} + +result_t test_mm_srai_epi32(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int32_t *_a = (const int32_t *) impl.mTestIntPointer1; + const int32_t b = (int32_t) (iter % 34 - 1); // range: -1 ~ 32 + + int32_t d[4]; + int count = (b & ~31) ? 31 : b; + for (int i = 0; i < 4; i++) { + d[i] = _a[i] >> count; + } + + __m128i a = _mm_load_si128((const __m128i *) _a); + __m128i c = _mm_srai_epi32(a, b); + + return VALIDATE_INT32_M128(c, d); +} + +result_t test_mm_srl_epi16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int16_t *_a = (const int16_t *) impl.mTestIntPointer1; + const int64_t count = (int64_t) (iter % 18 - 1); // range: -1 ~ 16 + + uint16_t d[8]; + d[0] = (count & ~15) ? 0 : (uint16_t) (_a[0]) >> count; + d[1] = (count & ~15) ? 0 : (uint16_t) (_a[1]) >> count; + d[2] = (count & ~15) ? 0 : (uint16_t) (_a[2]) >> count; + d[3] = (count & ~15) ? 0 : (uint16_t) (_a[3]) >> count; + d[4] = (count & ~15) ? 0 : (uint16_t) (_a[4]) >> count; + d[5] = (count & ~15) ? 0 : (uint16_t) (_a[5]) >> count; + d[6] = (count & ~15) ? 0 : (uint16_t) (_a[6]) >> count; + d[7] = (count & ~15) ? 0 : (uint16_t) (_a[7]) >> count; + + __m128i a = load_m128i(_a); + __m128i b = _mm_set1_epi64x(count); + __m128i c = _mm_srl_epi16(a, b); + + return VALIDATE_INT16_M128(c, d); +} + +result_t test_mm_srl_epi32(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int32_t *_a = (const int32_t *) impl.mTestIntPointer1; + const int64_t count = (int64_t) (iter % 34 - 1); // range: -1 ~ 32 + + uint32_t d[4]; + d[0] = (count & ~31) ? 0 : (uint32_t) (_a[0]) >> count; + d[1] = (count & ~31) ? 0 : (uint32_t) (_a[1]) >> count; + d[2] = (count & ~31) ? 0 : (uint32_t) (_a[2]) >> count; + d[3] = (count & ~31) ? 0 : (uint32_t) (_a[3]) >> count; + + __m128i a = load_m128i(_a); + __m128i b = _mm_set1_epi64x(count); + __m128i c = _mm_srl_epi32(a, b); + + return VALIDATE_INT32_M128(c, d); +} + +result_t test_mm_srl_epi64(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int64_t *_a = (const int64_t *) impl.mTestIntPointer1; + const int64_t count = (int64_t) (iter % 66 - 1); // range: -1 ~ 64 + + uint64_t d0 = (count & ~63) ? 0 : (uint64_t) (_a[0]) >> count; + uint64_t d1 = (count & ~63) ? 0 : (uint64_t) (_a[1]) >> count; + + __m128i a = load_m128i(_a); + __m128i b = _mm_set1_epi64x(count); + __m128i c = _mm_srl_epi64(a, b); + + return validateInt64(c, d0, d1); +} + +result_t test_mm_srli_epi16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const uint16_t *_a = (const uint16_t *) impl.mTestIntPointer1; + const int count = (int) (iter % 18 - 1); // range: -1 ~ 16 + + int16_t d[8]; + d[0] = count & (~15) ? 0 : (int16_t) (_a[0] >> count); + d[1] = count & (~15) ? 0 : (int16_t) (_a[1] >> count); + d[2] = count & (~15) ? 0 : (int16_t) (_a[2] >> count); + d[3] = count & (~15) ? 0 : (int16_t) (_a[3] >> count); + d[4] = count & (~15) ? 0 : (int16_t) (_a[4] >> count); + d[5] = count & (~15) ? 0 : (int16_t) (_a[5] >> count); + d[6] = count & (~15) ? 0 : (int16_t) (_a[6] >> count); + d[7] = count & (~15) ? 0 : (int16_t) (_a[7] >> count); + + __m128i a = load_m128i(_a); + __m128i c = _mm_srli_epi16(a, count); + + return VALIDATE_INT16_M128(c, d); +} + +result_t test_mm_srli_epi32(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const uint32_t *_a = (const uint32_t *) impl.mTestIntPointer1; + const int count = (int) (iter % 34 - 1); // range: -1 ~ 32 + + int32_t d[4]; + d[0] = count & (~31) ? 0 : (int32_t) (_a[0] >> count); + d[1] = count & (~31) ? 0 : (int32_t) (_a[1] >> count); + d[2] = count & (~31) ? 0 : (int32_t) (_a[2] >> count); + d[3] = count & (~31) ? 0 : (int32_t) (_a[3] >> count); + + __m128i a = load_m128i(_a); + __m128i c = _mm_srli_epi32(a, count); + + return VALIDATE_INT32_M128(c, d); +} + +result_t test_mm_srli_epi64(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int64_t *_a = (const int64_t *) impl.mTestIntPointer1; + const int count = (int) (iter % 66 - 1); // range: -1 ~ 64 + + int64_t d0 = count & (~63) ? 0 : (uint64_t) (_a[0]) >> count; + int64_t d1 = count & (~63) ? 0 : (uint64_t) (_a[1]) >> count; + + __m128i a = load_m128i(_a); + __m128i c = _mm_srli_epi64(a, count); + + return validateInt64(c, d0, d1); +} + +result_t test_mm_srli_si128(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int8_t *_a = (const int8_t *) impl.mTestIntPointer1; + const int count = (iter % 5) << 2; + + int8_t d[16]; + for (int i = 0; i < 16; i++) { + if (i >= (16 - count)) + d[i] = 0; + else + d[i] = _a[i + count]; + } + + __m128i a = load_m128i(_a); + __m128i ret = _mm_setzero_si128(); + switch (iter % 5) { + case 0: + ret = _mm_srli_si128(a, 0); + break; + case 1: + ret = _mm_srli_si128(a, 4); + break; + case 2: + ret = _mm_srli_si128(a, 8); + break; + case 3: + ret = _mm_srli_si128(a, 12); + break; + case 4: + ret = _mm_srli_si128(a, 16); + break; + } + + return VALIDATE_INT8_M128(ret, d); +} + +result_t test_mm_store_pd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + double *p = (double *) impl.mTestFloatPointer1; + double x = impl.mTestFloats[iter + 4]; + double y = impl.mTestFloats[iter + 6]; + + __m128d a = _mm_set_pd(x, y); + _mm_store_pd(p, a); + ASSERT_RETURN(p[0] == y); + ASSERT_RETURN(p[1] == x); + return TEST_SUCCESS; +} + +result_t test_mm_store_pd1(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + double *p = (double *) impl.mTestFloatPointer1; + double _a[2] = {(double) impl.mTestFloats[iter], + (double) impl.mTestFloats[iter + 1]}; + + __m128d a = load_m128d(_a); + _mm_store_pd1(p, a); + ASSERT_RETURN(p[0] == impl.mTestFloats[iter]); + ASSERT_RETURN(p[1] == impl.mTestFloats[iter]); + return TEST_SUCCESS; +} + +result_t test_mm_store_sd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + double *p = (double *) impl.mTestFloatPointer1; + double _a[2] = {(double) impl.mTestFloats[iter], + (double) impl.mTestFloats[iter + 1]}; + + __m128d a = load_m128d(_a); + _mm_store_sd(p, a); + ASSERT_RETURN(p[0] == impl.mTestFloats[iter]); + return TEST_SUCCESS; +} + +result_t test_mm_store_si128(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int32_t *_a = (const int32_t *) impl.mTestIntPointer1; + alignas(16) int32_t p[4]; + + __m128i a = load_m128i(_a); + _mm_store_si128((__m128i *) p, a); + + return VALIDATE_INT32_M128(a, p); +} + +result_t test_mm_store1_pd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + return test_mm_store_pd1(impl, iter); +} + +result_t test_mm_storeh_pd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + double *p = (double *) impl.mTestFloatPointer1; + double mem; + + __m128d a = load_m128d(p); + _mm_storeh_pd(&mem, a); + + ASSERT_RETURN(mem == p[1]); + return TEST_SUCCESS; +} + +result_t test_mm_storel_epi64(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + int64_t *p = (int64_t *) impl.mTestIntPointer1; + __m128i mem; + + __m128i a = load_m128i(p); + _mm_storel_epi64(&mem, a); + + ASSERT_RETURN(((SIMDVec *) &mem)->m128_u64[0] == (uint64_t) p[0]); + return TEST_SUCCESS; +} + +result_t test_mm_storel_pd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + double *p = (double *) impl.mTestFloatPointer1; + double mem; + + __m128d a = load_m128d(p); + _mm_storel_pd(&mem, a); + + ASSERT_RETURN(mem == p[0]); + return TEST_SUCCESS; +} + +result_t test_mm_storer_pd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + double *p = (double *) impl.mTestFloatPointer1; + double mem[2]; + + __m128d a = load_m128d(p); + _mm_storer_pd(mem, a); + + __m128d res = load_m128d(mem); + return validateDouble(res, p[1], p[0]); +} + +result_t test_mm_storeu_pd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + double *p = (double *) impl.mTestFloatPointer1; + double x = impl.mTestFloats[iter + 4]; + double y = impl.mTestFloats[iter + 6]; + + __m128d a = _mm_set_pd(x, y); + _mm_storeu_pd(p, a); + ASSERT_RETURN(p[0] == y); + ASSERT_RETURN(p[1] == x); + return TEST_SUCCESS; +} + +result_t test_mm_storeu_si128(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int32_t *_a = (const int32_t *) impl.mTestIntPointer1; + __m128i b; + __m128i a = load_m128i(_a); + _mm_storeu_si128(&b, a); + int32_t *_b = (int32_t *) &b; + return VALIDATE_INT32_M128(a, _b); +} + +result_t test_mm_storeu_si32(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + // The GCC version before 11 does not implement intrinsic function + // _mm_storeu_si32. Check https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95483 + // for more information. +#if (defined(__GNUC__) && !defined(__clang__)) && (__GNUC__ <= 10) + return TEST_UNIMPL; +#else + const int32_t *_a = (const int32_t *) impl.mTestIntPointer1; + __m128i b = _mm_setzero_si128(); + __m128i a = load_m128i(_a); + _mm_storeu_si32(&b, a); + int32_t *_b = (int32_t *) &b; + return validateInt32(b, _a[0], _b[1], _b[2], _b[3]); +#endif +} + +result_t test_mm_stream_pd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *_a = (const double *) impl.mTestFloatPointer1; + double p[2]; + + __m128d a = load_m128d(_a); + _mm_stream_pd(p, a); + + return validateDouble(a, p[0], p[1]); +} + +result_t test_mm_stream_si128(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int32_t *_a = (const int32_t *) impl.mTestIntPointer1; + alignas(16) int32_t p[4]; + + __m128i a = load_m128i(_a); + _mm_stream_si128((__m128i *) p, a); + + return VALIDATE_INT32_M128(a, p); +} + +result_t test_mm_stream_si32(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int32_t a = (const int32_t) impl.mTestInts[iter]; + int32_t p; + + _mm_stream_si32(&p, a); + + ASSERT_RETURN(a == p) + return TEST_SUCCESS; +} + +result_t test_mm_stream_si64(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int64_t a = (const int64_t) impl.mTestInts[iter]; + __int64 p[1]; + _mm_stream_si64(p, a); + ASSERT_RETURN(p[0] == a); + return TEST_SUCCESS; +} + +result_t test_mm_sub_epi16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int16_t *_a = (const int16_t *) impl.mTestIntPointer1; + const int16_t *_b = (const int16_t *) impl.mTestIntPointer2; + int16_t d[8]; + d[0] = _a[0] - _b[0]; + d[1] = _a[1] - _b[1]; + d[2] = _a[2] - _b[2]; + d[3] = _a[3] - _b[3]; + d[4] = _a[4] - _b[4]; + d[5] = _a[5] - _b[5]; + d[6] = _a[6] - _b[6]; + d[7] = _a[7] - _b[7]; + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i c = _mm_sub_epi16(a, b); + return VALIDATE_INT16_M128(c, d); +} + +result_t test_mm_sub_epi32(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int32_t *_a = impl.mTestIntPointer1; + const int32_t *_b = impl.mTestIntPointer2; + int32_t d[4]; + d[0] = _a[0] - _b[0]; + d[1] = _a[1] - _b[1]; + d[2] = _a[2] - _b[2]; + d[3] = _a[3] - _b[3]; + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i c = _mm_sub_epi32(a, b); + return VALIDATE_INT32_M128(c, d); +} + +result_t test_mm_sub_epi64(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int64_t *_a = (int64_t *) impl.mTestIntPointer1; + const int64_t *_b = (int64_t *) impl.mTestIntPointer2; + int64_t d0 = _a[0] - _b[0]; + int64_t d1 = _a[1] - _b[1]; + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i c = _mm_sub_epi64(a, b); + return validateInt64(c, d0, d1); +} + +result_t test_mm_sub_epi8(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int8_t *_a = (const int8_t *) impl.mTestIntPointer1; + const int8_t *_b = (const int8_t *) impl.mTestIntPointer2; + int8_t d[16]; + d[0] = _a[0] - _b[0]; + d[1] = _a[1] - _b[1]; + d[2] = _a[2] - _b[2]; + d[3] = _a[3] - _b[3]; + d[4] = _a[4] - _b[4]; + d[5] = _a[5] - _b[5]; + d[6] = _a[6] - _b[6]; + d[7] = _a[7] - _b[7]; + d[8] = _a[8] - _b[8]; + d[9] = _a[9] - _b[9]; + d[10] = _a[10] - _b[10]; + d[11] = _a[11] - _b[11]; + d[12] = _a[12] - _b[12]; + d[13] = _a[13] - _b[13]; + d[14] = _a[14] - _b[14]; + d[15] = _a[15] - _b[15]; + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i c = _mm_sub_epi8(a, b); + return VALIDATE_INT8_M128(c, d); +} + +result_t test_mm_sub_pd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *_a = (const double *) impl.mTestFloatPointer1; + const double *_b = (const double *) impl.mTestFloatPointer2; + double d0 = _a[0] - _b[0]; + double d1 = _a[1] - _b[1]; + + __m128d a = load_m128d(_a); + __m128d b = load_m128d(_b); + __m128d c = _mm_sub_pd(a, b); + return validateDouble(c, d0, d1); +} + +result_t test_mm_sub_sd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *_a = (const double *) impl.mTestFloatPointer1; + const double *_b = (const double *) impl.mTestFloatPointer2; + double d0 = _a[0] - _b[0]; + double d1 = _a[1]; + + __m128d a = load_m128d(_a); + __m128d b = load_m128d(_b); + __m128d c = _mm_sub_sd(a, b); + return validateDouble(c, d0, d1); +} + +result_t test_mm_sub_si64(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int64_t *_a = (const int64_t *) impl.mTestIntPointer1; + const int64_t *_b = (const int64_t *) impl.mTestIntPointer2; + + int64_t d = _a[0] - _b[0]; + + __m64 a = load_m64(_a); + __m64 b = load_m64(_b); + __m64 c = _mm_sub_si64(a, b); + + return validateInt64(c, d); +} + +result_t test_mm_subs_epi16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int16_t *_a = (const int16_t *) impl.mTestIntPointer1; + const int16_t *_b = (const int16_t *) impl.mTestIntPointer2; + + int16_t d[8]; + for (int i = 0; i < 8; i++) { + d[i] = saturate_i16((int32_t) _a[i] - (int32_t) _b[i]); + } + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i c = _mm_subs_epi16(a, b); + + return VALIDATE_INT16_M128(c, d); +} + +result_t test_mm_subs_epi8(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + int16_t max = 127; + int16_t min = -128; + const int8_t *_a = (const int8_t *) impl.mTestIntPointer1; + const int8_t *_b = (const int8_t *) impl.mTestIntPointer2; + + int8_t d[16]; + for (int i = 0; i < 16; i++) { + int16_t res = (int16_t) _a[i] - (int16_t) _b[i]; + if (res > max) + d[i] = (int8_t) max; + else if (res < min) + d[i] = (int8_t) min; + else + d[i] = (int8_t) res; + } + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i c = _mm_subs_epi8(a, b); + + return VALIDATE_INT8_M128(c, d); +} + +result_t test_mm_subs_epu16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int16_t *_a = (const int16_t *) impl.mTestIntPointer1; + const int16_t *_b = (const int16_t *) impl.mTestIntPointer2; + uint16_t d[8]; + d[0] = (uint16_t) _a[0] - (uint16_t) _b[0]; + if (d[0] > (uint16_t) _a[0]) + d[0] = 0; + d[1] = (uint16_t) _a[1] - (uint16_t) _b[1]; + if (d[1] > (uint16_t) _a[1]) + d[1] = 0; + d[2] = (uint16_t) _a[2] - (uint16_t) _b[2]; + if (d[2] > (uint16_t) _a[2]) + d[2] = 0; + d[3] = (uint16_t) _a[3] - (uint16_t) _b[3]; + if (d[3] > (uint16_t) _a[3]) + d[3] = 0; + d[4] = (uint16_t) _a[4] - (uint16_t) _b[4]; + if (d[4] > (uint16_t) _a[4]) + d[4] = 0; + d[5] = (uint16_t) _a[5] - (uint16_t) _b[5]; + if (d[5] > (uint16_t) _a[5]) + d[5] = 0; + d[6] = (uint16_t) _a[6] - (uint16_t) _b[6]; + if (d[6] > (uint16_t) _a[6]) + d[6] = 0; + d[7] = (uint16_t) _a[7] - (uint16_t) _b[7]; + if (d[7] > (uint16_t) _a[7]) + d[7] = 0; + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + + __m128i c = _mm_subs_epu16(a, b); + return VALIDATE_INT16_M128(c, d); +} + +result_t test_mm_subs_epu8(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int8_t *_a = (const int8_t *) impl.mTestIntPointer1; + const int8_t *_b = (const int8_t *) impl.mTestIntPointer2; + uint8_t d[16]; + d[0] = (uint8_t) _a[0] - (uint8_t) _b[0]; + if (d[0] > (uint8_t) _a[0]) + d[0] = 0; + d[1] = (uint8_t) _a[1] - (uint8_t) _b[1]; + if (d[1] > (uint8_t) _a[1]) + d[1] = 0; + d[2] = (uint8_t) _a[2] - (uint8_t) _b[2]; + if (d[2] > (uint8_t) _a[2]) + d[2] = 0; + d[3] = (uint8_t) _a[3] - (uint8_t) _b[3]; + if (d[3] > (uint8_t) _a[3]) + d[3] = 0; + d[4] = (uint8_t) _a[4] - (uint8_t) _b[4]; + if (d[4] > (uint8_t) _a[4]) + d[4] = 0; + d[5] = (uint8_t) _a[5] - (uint8_t) _b[5]; + if (d[5] > (uint8_t) _a[5]) + d[5] = 0; + d[6] = (uint8_t) _a[6] - (uint8_t) _b[6]; + if (d[6] > (uint8_t) _a[6]) + d[6] = 0; + d[7] = (uint8_t) _a[7] - (uint8_t) _b[7]; + if (d[7] > (uint8_t) _a[7]) + d[7] = 0; + d[8] = (uint8_t) _a[8] - (uint8_t) _b[8]; + if (d[8] > (uint8_t) _a[8]) + d[8] = 0; + d[9] = (uint8_t) _a[9] - (uint8_t) _b[9]; + if (d[9] > (uint8_t) _a[9]) + d[9] = 0; + d[10] = (uint8_t) _a[10] - (uint8_t) _b[10]; + if (d[10] > (uint8_t) _a[10]) + d[10] = 0; + d[11] = (uint8_t) _a[11] - (uint8_t) _b[11]; + if (d[11] > (uint8_t) _a[11]) + d[11] = 0; + d[12] = (uint8_t) _a[12] - (uint8_t) _b[12]; + if (d[12] > (uint8_t) _a[12]) + d[12] = 0; + d[13] = (uint8_t) _a[13] - (uint8_t) _b[13]; + if (d[13] > (uint8_t) _a[13]) + d[13] = 0; + d[14] = (uint8_t) _a[14] - (uint8_t) _b[14]; + if (d[14] > (uint8_t) _a[14]) + d[14] = 0; + d[15] = (uint8_t) _a[15] - (uint8_t) _b[15]; + if (d[15] > (uint8_t) _a[15]) + d[15] = 0; + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i c = _mm_subs_epu8(a, b); + return VALIDATE_INT8_M128(c, d); +} + +result_t test_mm_ucomieq_sd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + return test_mm_comieq_sd(impl, iter); +} + +result_t test_mm_ucomige_sd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + return test_mm_comige_sd(impl, iter); +} + +result_t test_mm_ucomigt_sd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + return test_mm_comigt_sd(impl, iter); +} + +result_t test_mm_ucomile_sd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + return test_mm_comile_sd(impl, iter); +} + +result_t test_mm_ucomilt_sd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + return test_mm_comilt_sd(impl, iter); +} + +result_t test_mm_ucomineq_sd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + return test_mm_comineq_sd(impl, iter); +} + +result_t test_mm_undefined_pd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + __m128d a = _mm_undefined_pd(); + a = _mm_xor_pd(a, a); + return validateDouble(a, 0, 0); +} + +result_t test_mm_undefined_si128(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + __m128i a = _mm_undefined_si128(); + a = _mm_xor_si128(a, a); + return validateInt64(a, 0, 0); +} + +result_t test_mm_unpackhi_epi16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int16_t *_a = (const int16_t *) impl.mTestIntPointer1; + const int16_t *_b = (const int16_t *) impl.mTestIntPointer2; + + int16_t d[8]; + d[0] = _a[4]; + d[1] = _b[4]; + d[2] = _a[5]; + d[3] = _b[5]; + d[4] = _a[6]; + d[5] = _b[6]; + d[6] = _a[7]; + d[7] = _b[7]; + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i ret = _mm_unpackhi_epi16(a, b); + + return VALIDATE_INT16_M128(ret, d); +} + +result_t test_mm_unpackhi_epi32(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int32_t *_a = (const int32_t *) impl.mTestIntPointer1; + const int32_t *_b = (const int32_t *) impl.mTestIntPointer2; + + int32_t d[4]; + d[0] = _a[2]; + d[1] = _b[2]; + d[2] = _a[3]; + d[3] = _b[3]; + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i ret = _mm_unpackhi_epi32(a, b); + + return VALIDATE_INT32_M128(ret, d); +} + +result_t test_mm_unpackhi_epi64(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int64_t *_a = (const int64_t *) impl.mTestIntPointer1; + const int64_t *_b = (const int64_t *) impl.mTestIntPointer2; + + int64_t i0 = _a[1]; + int64_t i1 = _b[1]; + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i ret = _mm_unpackhi_epi64(a, b); + + return validateInt64(ret, i0, i1); +} + +result_t test_mm_unpackhi_epi8(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int8_t *_a = (const int8_t *) impl.mTestIntPointer1; + const int8_t *_b = (const int8_t *) impl.mTestIntPointer2; + + int8_t d[16]; + d[0] = _a[8]; + d[1] = _b[8]; + d[2] = _a[9]; + d[3] = _b[9]; + d[4] = _a[10]; + d[5] = _b[10]; + d[6] = _a[11]; + d[7] = _b[11]; + d[8] = _a[12]; + d[9] = _b[12]; + d[10] = _a[13]; + d[11] = _b[13]; + d[12] = _a[14]; + d[13] = _b[14]; + d[14] = _a[15]; + d[15] = _b[15]; + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i ret = _mm_unpackhi_epi8(a, b); + + return VALIDATE_INT8_M128(ret, d); +} + +result_t test_mm_unpackhi_pd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *_a = (const double *) impl.mTestFloatPointer1; + const double *_b = (const double *) impl.mTestFloatPointer2; + + __m128d a = load_m128d(_a); + __m128d b = load_m128d(_b); + __m128d ret = _mm_unpackhi_pd(a, b); + + return validateDouble(ret, _a[1], _b[1]); +} + +result_t test_mm_unpacklo_epi16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int16_t *_a = (const int16_t *) impl.mTestIntPointer1; + const int16_t *_b = (const int16_t *) impl.mTestIntPointer2; + + int16_t d[8]; + d[0] = _a[0]; + d[1] = _b[0]; + d[2] = _a[1]; + d[3] = _b[1]; + d[4] = _a[2]; + d[5] = _b[2]; + d[6] = _a[3]; + d[7] = _b[3]; + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i ret = _mm_unpacklo_epi16(a, b); + + return VALIDATE_INT16_M128(ret, d); +} + +result_t test_mm_unpacklo_epi32(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int32_t *_a = (const int32_t *) impl.mTestIntPointer1; + const int32_t *_b = (const int32_t *) impl.mTestIntPointer2; + + int32_t d[4]; + d[0] = _a[0]; + d[1] = _b[0]; + d[2] = _a[1]; + d[3] = _b[1]; + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i ret = _mm_unpacklo_epi32(a, b); + + return VALIDATE_INT32_M128(ret, d); +} + +result_t test_mm_unpacklo_epi64(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int64_t *_a = (const int64_t *) impl.mTestIntPointer1; + const int64_t *_b = (const int64_t *) impl.mTestIntPointer2; + + int64_t i0 = _a[0]; + int64_t i1 = _b[0]; + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i ret = _mm_unpacklo_epi64(a, b); + + return validateInt64(ret, i0, i1); +} + +result_t test_mm_unpacklo_epi8(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int8_t *_a = (const int8_t *) impl.mTestIntPointer1; + const int8_t *_b = (const int8_t *) impl.mTestIntPointer2; + + int8_t d[16]; + d[0] = _a[0]; + d[1] = _b[0]; + d[2] = _a[1]; + d[3] = _b[1]; + d[4] = _a[2]; + d[5] = _b[2]; + d[6] = _a[3]; + d[7] = _b[3]; + d[8] = _a[4]; + d[9] = _b[4]; + d[10] = _a[5]; + d[11] = _b[5]; + d[12] = _a[6]; + d[13] = _b[6]; + d[14] = _a[7]; + d[15] = _b[7]; + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i ret = _mm_unpacklo_epi8(a, b); + + return VALIDATE_INT8_M128(ret, d); +} + +result_t test_mm_unpacklo_pd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *_a = (const double *) impl.mTestFloatPointer1; + const double *_b = (const double *) impl.mTestFloatPointer2; + + __m128d a = load_m128d(_a); + __m128d b = load_m128d(_b); + __m128d ret = _mm_unpacklo_pd(a, b); + + return validateDouble(ret, _a[0], _b[0]); +} + +result_t test_mm_xor_pd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int64_t *_a = (const int64_t *) impl.mTestFloatPointer1; + const int64_t *_b = (const int64_t *) impl.mTestFloatPointer2; + double d0 = sse2neon_tool_recast_f64(_a[0] ^ _b[0]); + double d1 = sse2neon_tool_recast_f64(_a[1] ^ _b[1]); + + __m128d a = load_m128d(_a); + __m128d b = load_m128d(_b); + __m128d c = _mm_xor_pd(a, b); + + return validateDouble(c, d0, d1); +} + +result_t test_mm_xor_si128(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int64_t *_a = (const int64_t *) impl.mTestIntPointer1; + const int64_t *_b = (const int64_t *) impl.mTestIntPointer2; + + int64_t d0 = _a[0] ^ _b[0]; + int64_t d1 = _a[1] ^ _b[1]; + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i c = _mm_xor_si128(a, b); + + return validateInt64(c, d0, d1); +} + +/* SSE3 */ +result_t test_mm_addsub_pd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *_a = (const double *) impl.mTestFloatPointer1; + const double *_b = (const double *) impl.mTestFloatPointer2; + + double d0 = _a[0] - _b[0]; + double d1 = _a[1] + _b[1]; + + __m128d a = load_m128d(_a); + __m128d b = load_m128d(_b); + __m128d c = _mm_addsub_pd(a, b); + + return validateDouble(c, d0, d1); +} + +result_t test_mm_addsub_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + // FIXME: The rounding mode would affect the testing result on ARM platform. + _MM_SET_ROUNDING_MODE(_MM_ROUND_NEAREST); + const float *_a = impl.mTestFloatPointer1; + const float *_b = impl.mTestFloatPointer2; + + float f0 = _a[0] - _b[0]; + float f1 = _a[1] + _b[1]; + float f2 = _a[2] - _b[2]; + float f3 = _a[3] + _b[3]; + + __m128 a = load_m128(_a); + __m128 b = load_m128(_b); + __m128 c = _mm_addsub_ps(a, b); + + return validateFloat(c, f0, f1, f2, f3); +} + +result_t test_mm_hadd_pd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *_a = (const double *) impl.mTestFloatPointer1; + const double *_b = (const double *) impl.mTestFloatPointer2; + + double f0 = _a[0] + _a[1]; + double f1 = _b[0] + _b[1]; + + __m128d a = load_m128d(_a); + __m128d b = load_m128d(_b); + __m128d c = _mm_hadd_pd(a, b); + + return validateDouble(c, f0, f1); +} + +result_t test_mm_hadd_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + // FIXME: The rounding mode would affect the testing result on ARM platform. + _MM_SET_ROUNDING_MODE(_MM_ROUND_NEAREST); + const float *_a = impl.mTestFloatPointer1; + const float *_b = impl.mTestFloatPointer2; + + float f0 = _a[0] + _a[1]; + float f1 = _a[2] + _a[3]; + float f2 = _b[0] + _b[1]; + float f3 = _b[2] + _b[3]; + + __m128 a = load_m128(_a); + __m128 b = load_m128(_b); + __m128 c = _mm_hadd_ps(a, b); + + return validateFloat(c, f0, f1, f2, f3); +} + +result_t test_mm_hsub_pd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *_a = (const double *) impl.mTestFloatPointer1; + const double *_b = (const double *) impl.mTestFloatPointer2; + + double f0 = _a[0] - _a[1]; + double f1 = _b[0] - _b[1]; + + __m128d a = load_m128d(_a); + __m128d b = load_m128d(_b); + __m128d c = _mm_hsub_pd(a, b); + + return validateDouble(c, f0, f1); +} + +result_t test_mm_hsub_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + // FIXME: The rounding mode would affect the testing result on ARM platform. + _MM_SET_ROUNDING_MODE(_MM_ROUND_NEAREST); + const float *_a = impl.mTestFloatPointer1; + const float *_b = impl.mTestFloatPointer2; + + float f0 = _a[0] - _a[1]; + float f1 = _a[2] - _a[3]; + float f2 = _b[0] - _b[1]; + float f3 = _b[2] - _b[3]; + + __m128 a = load_m128(_a); + __m128 b = load_m128(_b); + __m128 c = _mm_hsub_ps(a, b); + + return validateFloat(c, f0, f1, f2, f3); +} + +result_t test_mm_lddqu_si128(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + return test_mm_loadu_si128(impl, iter); +} + +result_t test_mm_loaddup_pd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *addr = (const double *) impl.mTestFloatPointer1; + + __m128d ret = _mm_loaddup_pd(addr); + + return validateDouble(ret, addr[0], addr[0]); +} + +result_t test_mm_movedup_pd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *p = (const double *) impl.mTestFloatPointer1; + __m128d a = load_m128d(p); + __m128d b = _mm_movedup_pd(a); + + return validateDouble(b, p[0], p[0]); +} + +result_t test_mm_movehdup_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *p = impl.mTestFloatPointer1; + __m128 a = load_m128(p); + return validateFloat(_mm_movehdup_ps(a), p[1], p[1], p[3], p[3]); +} + +result_t test_mm_moveldup_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *p = impl.mTestFloatPointer1; + __m128 a = load_m128(p); + return validateFloat(_mm_moveldup_ps(a), p[0], p[0], p[2], p[2]); +} + +/* SSSE3 */ +result_t test_mm_abs_epi16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int16_t *_a = (const int16_t *) impl.mTestIntPointer1; + __m128i a = load_m128i(_a); + __m128i c = _mm_abs_epi16(a); + + uint16_t d[8]; + d[0] = (_a[0] < 0) ? -_a[0] : _a[0]; + d[1] = (_a[1] < 0) ? -_a[1] : _a[1]; + d[2] = (_a[2] < 0) ? -_a[2] : _a[2]; + d[3] = (_a[3] < 0) ? -_a[3] : _a[3]; + d[4] = (_a[4] < 0) ? -_a[4] : _a[4]; + d[5] = (_a[5] < 0) ? -_a[5] : _a[5]; + d[6] = (_a[6] < 0) ? -_a[6] : _a[6]; + d[7] = (_a[7] < 0) ? -_a[7] : _a[7]; + + return VALIDATE_UINT16_M128(c, d); +} + +result_t test_mm_abs_epi32(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int32_t *_a = (const int32_t *) impl.mTestIntPointer1; + __m128i a = load_m128i(_a); + __m128i c = _mm_abs_epi32(a); + + uint32_t d[4]; + d[0] = (_a[0] < 0) ? -_a[0] : _a[0]; + d[1] = (_a[1] < 0) ? -_a[1] : _a[1]; + d[2] = (_a[2] < 0) ? -_a[2] : _a[2]; + d[3] = (_a[3] < 0) ? -_a[3] : _a[3]; + + return VALIDATE_UINT32_M128(c, d); +} + +result_t test_mm_abs_epi8(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int8_t *_a = (const int8_t *) impl.mTestIntPointer1; + __m128i a = load_m128i(_a); + __m128i c = _mm_abs_epi8(a); + + uint8_t d[16]; + for (int i = 0; i < 16; i++) { + d[i] = (_a[i] < 0) ? -_a[i] : _a[i]; + } + + return VALIDATE_UINT8_M128(c, d); +} + +result_t test_mm_abs_pi16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int16_t *_a = (const int16_t *) impl.mTestIntPointer1; + __m64 a = load_m64(_a); + __m64 c = _mm_abs_pi16(a); + + uint16_t d[4]; + d[0] = (_a[0] < 0) ? -_a[0] : _a[0]; + d[1] = (_a[1] < 0) ? -_a[1] : _a[1]; + d[2] = (_a[2] < 0) ? -_a[2] : _a[2]; + d[3] = (_a[3] < 0) ? -_a[3] : _a[3]; + + return VALIDATE_UINT16_M64(c, d); +} + +result_t test_mm_abs_pi32(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int32_t *_a = (const int32_t *) impl.mTestIntPointer1; + __m64 a = load_m64(_a); + __m64 c = _mm_abs_pi32(a); + + uint32_t d[2]; + d[0] = (_a[0] < 0) ? -_a[0] : _a[0]; + d[1] = (_a[1] < 0) ? -_a[1] : _a[1]; + + return VALIDATE_UINT32_M64(c, d); +} + +result_t test_mm_abs_pi8(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int8_t *_a = (const int8_t *) impl.mTestIntPointer1; + __m64 a = load_m64(_a); + __m64 c = _mm_abs_pi8(a); + + uint8_t d[8]; + d[0] = (_a[0] < 0) ? -_a[0] : _a[0]; + d[1] = (_a[1] < 0) ? -_a[1] : _a[1]; + d[2] = (_a[2] < 0) ? -_a[2] : _a[2]; + d[3] = (_a[3] < 0) ? -_a[3] : _a[3]; + d[4] = (_a[4] < 0) ? -_a[4] : _a[4]; + d[5] = (_a[5] < 0) ? -_a[5] : _a[5]; + d[6] = (_a[6] < 0) ? -_a[6] : _a[6]; + d[7] = (_a[7] < 0) ? -_a[7] : _a[7]; + + return VALIDATE_UINT8_M64(c, d); +} + +result_t test_mm_alignr_epi8(const SSE2NEONTestImpl &impl, uint32_t iter) +{ +#if defined(__clang__) + return TEST_UNIMPL; +#else + const uint8_t *_a = (const uint8_t *) impl.mTestIntPointer1; + const uint8_t *_b = (const uint8_t *) impl.mTestIntPointer2; + unsigned int shift = (iter % 5) << 3; + uint8_t d[32]; + + if (shift >= 32) { + memset((void *) d, 0, sizeof(d)); + } else { + memcpy((void *) d, (const void *) _b, 16); + memcpy((void *) (d + 16), (const void *) _a, 16); + // shifting + for (size_t x = 0; x < sizeof(d); x++) { + if (x + shift >= sizeof(d)) + d[x] = 0; + else + d[x] = d[x + shift]; + } + } + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i ret = _mm_setzero_si128(); + switch (iter % 5) { + case 0: + ret = _mm_alignr_epi8(a, b, 0); + break; + case 1: + ret = _mm_alignr_epi8(a, b, 8); + break; + case 2: + ret = _mm_alignr_epi8(a, b, 16); + break; + case 3: + ret = _mm_alignr_epi8(a, b, 24); + break; + case 4: + ret = _mm_alignr_epi8(a, b, 32); + break; + } + + return VALIDATE_UINT8_M128(ret, d); +#endif +} + +result_t test_mm_alignr_pi8(const SSE2NEONTestImpl &impl, uint32_t iter) +{ +#if defined(__clang__) + return TEST_UNIMPL; +#else + const uint8_t *_a = (const uint8_t *) impl.mTestIntPointer1; + const uint8_t *_b = (const uint8_t *) impl.mTestIntPointer2; + unsigned int shift = (iter % 3) << 3; + uint8_t d[16]; + + if (shift >= 16) { + memset((void *) d, 0, sizeof(d)); + } else { + memcpy((void *) d, (const void *) _b, 8); + memcpy((void *) (d + 8), (const void *) _a, 8); + // shifting + for (size_t x = 0; x < sizeof(d); x++) { + if (x + shift >= sizeof(d)) + d[x] = 0; + else + d[x] = d[x + shift]; + } + } + + __m64 a = load_m64(_a); + __m64 b = load_m64(_b); + uint8_t zeros[] = {0, 0, 0, 0, 0, 0, 0, 0}; + __m64 ret = load_m64(zeros); + switch (iter % 3) { + case 0: + ret = _mm_alignr_pi8(a, b, 0); + break; + case 1: + ret = _mm_alignr_pi8(a, b, 8); + break; + case 2: + ret = _mm_alignr_pi8(a, b, 16); + break; + } + + return VALIDATE_UINT8_M64(ret, d); +#endif +} + +result_t test_mm_hadd_epi16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int16_t *_a = (const int16_t *) impl.mTestIntPointer1; + const int16_t *_b = (const int16_t *) impl.mTestIntPointer2; + int16_t d[8]; + d[0] = _a[0] + _a[1]; + d[1] = _a[2] + _a[3]; + d[2] = _a[4] + _a[5]; + d[3] = _a[6] + _a[7]; + d[4] = _b[0] + _b[1]; + d[5] = _b[2] + _b[3]; + d[6] = _b[4] + _b[5]; + d[7] = _b[6] + _b[7]; + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i ret = _mm_hadd_epi16(a, b); + return VALIDATE_INT16_M128(ret, d); +} + +result_t test_mm_hadd_epi32(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int32_t *_a = (const int32_t *) impl.mTestIntPointer1; + const int32_t *_b = (const int32_t *) impl.mTestIntPointer2; + int32_t d[4]; + d[0] = _a[0] + _a[1]; + d[1] = _a[2] + _a[3]; + d[2] = _b[0] + _b[1]; + d[3] = _b[2] + _b[3]; + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i ret = _mm_hadd_epi32(a, b); + return VALIDATE_INT32_M128(ret, d); +} + +result_t test_mm_hadd_pi16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int16_t *_a = (const int16_t *) impl.mTestIntPointer1; + const int16_t *_b = (const int16_t *) impl.mTestIntPointer2; + int16_t d[4]; + d[0] = _a[0] + _a[1]; + d[1] = _a[2] + _a[3]; + d[2] = _b[0] + _b[1]; + d[3] = _b[2] + _b[3]; + __m64 a = load_m64(_a); + __m64 b = load_m64(_b); + __m64 ret = _mm_hadd_pi16(a, b); + return VALIDATE_INT16_M64(ret, d); +} + +result_t test_mm_hadd_pi32(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int32_t *_a = (const int32_t *) impl.mTestIntPointer1; + const int32_t *_b = (const int32_t *) impl.mTestIntPointer2; + int32_t d[2]; + d[0] = _a[0] + _a[1]; + d[1] = _b[0] + _b[1]; + __m64 a = load_m64(_a); + __m64 b = load_m64(_b); + __m64 ret = _mm_hadd_pi32(a, b); + return VALIDATE_INT32_M64(ret, d); +} + +result_t test_mm_hadds_epi16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int16_t *_a = (const int16_t *) impl.mTestIntPointer1; + const int16_t *_b = (const int16_t *) impl.mTestIntPointer1; + + int16_t d16[8]; + int32_t d32[8]; + d32[0] = (int32_t) _a[0] + (int32_t) _a[1]; + d32[1] = (int32_t) _a[2] + (int32_t) _a[3]; + d32[2] = (int32_t) _a[4] + (int32_t) _a[5]; + d32[3] = (int32_t) _a[6] + (int32_t) _a[7]; + d32[4] = (int32_t) _b[0] + (int32_t) _b[1]; + d32[5] = (int32_t) _b[2] + (int32_t) _b[3]; + d32[6] = (int32_t) _b[4] + (int32_t) _b[5]; + d32[7] = (int32_t) _b[6] + (int32_t) _b[7]; + for (int i = 0; i < 8; i++) { + if (d32[i] > (int32_t) INT16_MAX) + d16[i] = INT16_MAX; + else if (d32[i] < (int32_t) INT16_MIN) + d16[i] = INT16_MIN; + else + d16[i] = (int16_t) d32[i]; + } + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i c = _mm_hadds_epi16(a, b); + + return VALIDATE_INT16_M128(c, d16); +} + +result_t test_mm_hadds_pi16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int16_t *_a = (const int16_t *) impl.mTestIntPointer1; + const int16_t *_b = (const int16_t *) impl.mTestIntPointer1; + + int16_t d16[8]; + int32_t d32[8]; + d32[0] = (int32_t) _a[0] + (int32_t) _a[1]; + d32[1] = (int32_t) _a[2] + (int32_t) _a[3]; + d32[2] = (int32_t) _b[0] + (int32_t) _b[1]; + d32[3] = (int32_t) _b[2] + (int32_t) _b[3]; + for (int i = 0; i < 8; i++) { + if (d32[i] > (int32_t) INT16_MAX) + d16[i] = INT16_MAX; + else if (d32[i] < (int32_t) INT16_MIN) + d16[i] = INT16_MIN; + else + d16[i] = (int16_t) d32[i]; + } + + __m64 a = load_m64(_a); + __m64 b = load_m64(_b); + __m64 c = _mm_hadds_pi16(a, b); + + return VALIDATE_INT16_M64(c, d16); +} + +result_t test_mm_hsub_epi16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int16_t *_a = (const int16_t *) impl.mTestIntPointer1; + const int16_t *_b = (const int16_t *) impl.mTestIntPointer1; + + int16_t d[8]; + d[0] = _a[0] - _a[1]; + d[1] = _a[2] - _a[3]; + d[2] = _a[4] - _a[5]; + d[3] = _a[6] - _a[7]; + d[4] = _b[0] - _b[1]; + d[5] = _b[2] - _b[3]; + d[6] = _b[4] - _b[5]; + d[7] = _b[6] - _b[7]; + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i c = _mm_hsub_epi16(a, b); + + return VALIDATE_INT16_M128(c, d); +} + +result_t test_mm_hsub_epi32(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int32_t *_a = impl.mTestIntPointer1; + const int32_t *_b = impl.mTestIntPointer1; + + int32_t d[4]; + d[0] = _a[0] - _a[1]; + d[1] = _a[2] - _a[3]; + d[2] = _b[0] - _b[1]; + d[3] = _b[2] - _b[3]; + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i c = _mm_hsub_epi32(a, b); + + return VALIDATE_INT32_M128(c, d); +} + +result_t test_mm_hsub_pi16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int16_t *_a = (const int16_t *) impl.mTestIntPointer1; + const int16_t *_b = (const int16_t *) impl.mTestIntPointer2; + + int16_t d[4]; + d[0] = _a[0] - _a[1]; + d[1] = _a[2] - _a[3]; + d[2] = _b[0] - _b[1]; + d[3] = _b[2] - _b[3]; + __m64 a = load_m64(_a); + __m64 b = load_m64(_b); + __m64 c = _mm_hsub_pi16(a, b); + + return VALIDATE_INT16_M64(c, d); +} + +result_t test_mm_hsub_pi32(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int32_t *_a = impl.mTestIntPointer1; + const int32_t *_b = impl.mTestIntPointer2; + + int32_t d[2]; + d[0] = _a[0] - _a[1]; + d[1] = _b[0] - _b[1]; + + __m64 a = load_m64(_a); + __m64 b = load_m64(_b); + __m64 c = _mm_hsub_pi32(a, b); + + return VALIDATE_INT32_M64(c, d); +} + +result_t test_mm_hsubs_epi16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int16_t *_a = (const int16_t *) impl.mTestIntPointer1; + const int16_t *_b = (const int16_t *) impl.mTestIntPointer1; + + int16_t d16[8]; + d16[0] = saturate_i16((int32_t) _a[0] - (int32_t) _a[1]); + d16[1] = saturate_i16((int32_t) _a[2] - (int32_t) _a[3]); + d16[2] = saturate_i16((int32_t) _a[4] - (int32_t) _a[5]); + d16[3] = saturate_i16((int32_t) _a[6] - (int32_t) _a[7]); + d16[4] = saturate_i16((int32_t) _b[0] - (int32_t) _b[1]); + d16[5] = saturate_i16((int32_t) _b[2] - (int32_t) _b[3]); + d16[6] = saturate_i16((int32_t) _b[4] - (int32_t) _b[5]); + d16[7] = saturate_i16((int32_t) _b[6] - (int32_t) _b[7]); + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i c = _mm_hsubs_epi16(a, b); + + return VALIDATE_INT16_M128(c, d16); +} + +result_t test_mm_hsubs_pi16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int16_t *_a = (const int16_t *) impl.mTestIntPointer1; + const int16_t *_b = (const int16_t *) impl.mTestIntPointer1; + + int16_t _d[4]; + _d[0] = saturate_i16((int32_t) _a[0] - (int32_t) _a[1]); + _d[1] = saturate_i16((int32_t) _a[2] - (int32_t) _a[3]); + _d[2] = saturate_i16((int32_t) _b[0] - (int32_t) _b[1]); + _d[3] = saturate_i16((int32_t) _b[2] - (int32_t) _b[3]); + + __m64 a = load_m64(_a); + __m64 b = load_m64(_b); + __m64 c = _mm_hsubs_pi16(a, b); + + return VALIDATE_INT16_M64(c, _d); +} + +result_t test_mm_maddubs_epi16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const uint8_t *_a = (const uint8_t *) impl.mTestIntPointer1; + const int8_t *_b = (const int8_t *) impl.mTestIntPointer2; + int32_t d0 = (int32_t) (_a[0] * _b[0]); + int32_t d1 = (int32_t) (_a[1] * _b[1]); + int32_t d2 = (int32_t) (_a[2] * _b[2]); + int32_t d3 = (int32_t) (_a[3] * _b[3]); + int32_t d4 = (int32_t) (_a[4] * _b[4]); + int32_t d5 = (int32_t) (_a[5] * _b[5]); + int32_t d6 = (int32_t) (_a[6] * _b[6]); + int32_t d7 = (int32_t) (_a[7] * _b[7]); + int32_t d8 = (int32_t) (_a[8] * _b[8]); + int32_t d9 = (int32_t) (_a[9] * _b[9]); + int32_t d10 = (int32_t) (_a[10] * _b[10]); + int32_t d11 = (int32_t) (_a[11] * _b[11]); + int32_t d12 = (int32_t) (_a[12] * _b[12]); + int32_t d13 = (int32_t) (_a[13] * _b[13]); + int32_t d14 = (int32_t) (_a[14] * _b[14]); + int32_t d15 = (int32_t) (_a[15] * _b[15]); + + int16_t e[8]; + e[0] = saturate_i16(d0 + d1); + e[1] = saturate_i16(d2 + d3); + e[2] = saturate_i16(d4 + d5); + e[3] = saturate_i16(d6 + d7); + e[4] = saturate_i16(d8 + d9); + e[5] = saturate_i16(d10 + d11); + e[6] = saturate_i16(d12 + d13); + e[7] = saturate_i16(d14 + d15); + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i c = _mm_maddubs_epi16(a, b); + return VALIDATE_INT16_M128(c, e); +} + +result_t test_mm_maddubs_pi16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const uint8_t *_a = (const uint8_t *) impl.mTestIntPointer1; + const int8_t *_b = (const int8_t *) impl.mTestIntPointer2; + int16_t d0 = (int16_t) (_a[0] * _b[0]); + int16_t d1 = (int16_t) (_a[1] * _b[1]); + int16_t d2 = (int16_t) (_a[2] * _b[2]); + int16_t d3 = (int16_t) (_a[3] * _b[3]); + int16_t d4 = (int16_t) (_a[4] * _b[4]); + int16_t d5 = (int16_t) (_a[5] * _b[5]); + int16_t d6 = (int16_t) (_a[6] * _b[6]); + int16_t d7 = (int16_t) (_a[7] * _b[7]); + + int16_t e[4]; + e[0] = saturate_i16(d0 + d1); + e[1] = saturate_i16(d2 + d3); + e[2] = saturate_i16(d4 + d5); + e[3] = saturate_i16(d6 + d7); + + __m64 a = load_m64(_a); + __m64 b = load_m64(_b); + __m64 c = _mm_maddubs_pi16(a, b); + + return VALIDATE_INT16_M64(c, e); +} + +result_t test_mm_mulhrs_epi16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int16_t *_a = (const int16_t *) impl.mTestIntPointer1; + const int16_t *_b = (const int16_t *) impl.mTestIntPointer2; + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + int16_t _c[8]; + for (int i = 0; i < 8; i++) { + _c[i] = (int16_t) ((((((int32_t) _a[i] * (int32_t) _b[i]) >> 14) + 1) & + 0x1FFFE) >> + 1); + } + __m128i c = _mm_mulhrs_epi16(a, b); + + return VALIDATE_INT16_M128(c, _c); +} + +result_t test_mm_mulhrs_pi16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int16_t *_a = (const int16_t *) impl.mTestIntPointer1; + const int16_t *_b = (const int16_t *) impl.mTestIntPointer2; + + __m64 a = load_m64(_a); + __m64 b = load_m64(_b); + int16_t _c[4]; + for (int i = 0; i < 4; i++) { + _c[i] = (int16_t) ((((((int32_t) _a[i] * (int32_t) _b[i]) >> 14) + 1) & + 0x1FFFE) >> + 1); + } + __m64 c = _mm_mulhrs_pi16(a, b); + + return VALIDATE_INT16_M64(c, _c); +} + +result_t test_mm_shuffle_epi8(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int8_t *_a = (const int8_t *) impl.mTestIntPointer1; + const int8_t *_b = (const int8_t *) impl.mTestIntPointer2; + int8_t dst[16]; + + for (int i = 0; i < 16; i++) { + if (_b[i] & 0x80) { + dst[i] = 0; + } else { + dst[i] = _a[_b[i] & 0x0F]; + } + } + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i ret = _mm_shuffle_epi8(a, b); + + return VALIDATE_INT8_M128(ret, dst); +} + +result_t test_mm_shuffle_pi8(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int8_t *_a = (const int8_t *) impl.mTestIntPointer1; + const int8_t *_b = (const int8_t *) impl.mTestIntPointer2; + int8_t dst[8]; + + for (int i = 0; i < 8; i++) { + if (_b[i] & 0x80) { + dst[i] = 0; + } else { + dst[i] = _a[_b[i] & 0x07]; + } + } + + __m64 a = load_m64(_a); + __m64 b = load_m64(_b); + __m64 ret = _mm_shuffle_pi8(a, b); + + return VALIDATE_INT8_M64(ret, dst); +} + +result_t test_mm_sign_epi16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int16_t *_a = (const int16_t *) impl.mTestIntPointer1; + const int16_t *_b = (const int16_t *) impl.mTestIntPointer2; + + int16_t d[8]; + for (int i = 0; i < 8; i++) { + if (_b[i] < 0) { + d[i] = -_a[i]; + } else if (_b[i] == 0) { + d[i] = 0; + } else { + d[i] = _a[i]; + } + } + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i c = _mm_sign_epi16(a, b); + + return VALIDATE_INT16_M128(c, d); +} + +result_t test_mm_sign_epi32(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int32_t *_a = (const int32_t *) impl.mTestIntPointer1; + const int32_t *_b = (const int32_t *) impl.mTestIntPointer2; + + int32_t d[4]; + for (int i = 0; i < 4; i++) { + if (_b[i] < 0) { + d[i] = -_a[i]; + } else if (_b[i] == 0) { + d[i] = 0; + } else { + d[i] = _a[i]; + } + } + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i c = _mm_sign_epi32(a, b); + + return VALIDATE_INT32_M128(c, d); +} + +result_t test_mm_sign_epi8(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int8_t *_a = (const int8_t *) impl.mTestIntPointer1; + const int8_t *_b = (const int8_t *) impl.mTestIntPointer2; + + int8_t d[16]; + for (int i = 0; i < 16; i++) { + if (_b[i] < 0) { + d[i] = -_a[i]; + } else if (_b[i] == 0) { + d[i] = 0; + } else { + d[i] = _a[i]; + } + } + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i c = _mm_sign_epi8(a, b); + + return VALIDATE_INT8_M128(c, d); +} + +result_t test_mm_sign_pi16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int16_t *_a = (const int16_t *) impl.mTestIntPointer1; + const int16_t *_b = (const int16_t *) impl.mTestIntPointer2; + + int16_t d[4]; + for (int i = 0; i < 4; i++) { + if (_b[i] < 0) { + d[i] = -_a[i]; + } else if (_b[i] == 0) { + d[i] = 0; + } else { + d[i] = _a[i]; + } + } + + __m64 a = load_m64(_a); + __m64 b = load_m64(_b); + __m64 c = _mm_sign_pi16(a, b); + + return VALIDATE_INT16_M64(c, d); +} + +result_t test_mm_sign_pi32(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int32_t *_a = (const int32_t *) impl.mTestIntPointer1; + const int32_t *_b = (const int32_t *) impl.mTestIntPointer2; + + int32_t d[2]; + for (int i = 0; i < 2; i++) { + if (_b[i] < 0) { + d[i] = -_a[i]; + } else if (_b[i] == 0) { + d[i] = 0; + } else { + d[i] = _a[i]; + } + } + + __m64 a = load_m64(_a); + __m64 b = load_m64(_b); + __m64 c = _mm_sign_pi32(a, b); + + return VALIDATE_INT32_M64(c, d); +} + +result_t test_mm_sign_pi8(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int8_t *_a = (const int8_t *) impl.mTestIntPointer1; + const int8_t *_b = (const int8_t *) impl.mTestIntPointer2; + + int8_t d[8]; + for (int i = 0; i < 8; i++) { + if (_b[i] < 0) { + d[i] = -_a[i]; + } else if (_b[i] == 0) { + d[i] = 0; + } else { + d[i] = _a[i]; + } + } + + __m64 a = load_m64(_a); + __m64 b = load_m64(_b); + __m64 c = _mm_sign_pi8(a, b); + + return VALIDATE_INT8_M64(c, d); +} + +/* SSE4.1 */ +result_t test_mm_blend_epi16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int16_t *_a = (const int16_t *) impl.mTestIntPointer1; + const int16_t *_b = (const int16_t *) impl.mTestIntPointer2; + int16_t _c[8]; + __m128i a, b, c; + +#define TEST_IMPL(IDX) \ + for (int j = 0; j < 8; j++) { \ + if ((IDX >> j) & 0x1) { \ + _c[j] = _b[j]; \ + } else { \ + _c[j] = _a[j]; \ + } \ + } \ + a = load_m128i(_a); \ + b = load_m128i(_b); \ + c = _mm_blend_epi16(a, b, IDX); \ + CHECK_RESULT(VALIDATE_INT16_M128(c, _c)); + + IMM_256_ITER +#undef TEST_IMPL + return TEST_SUCCESS; +} + +result_t test_mm_blend_pd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *_a = (const double *) impl.mTestFloatPointer1; + const double *_b = (const double *) impl.mTestFloatPointer2; + __m128d a, b, c; + +#define TEST_IMPL(IDX) \ + double _c##IDX[2]; \ + for (int j = 0; j < 2; j++) { \ + if ((IDX >> j) & 0x1) { \ + _c##IDX[j] = _b[j]; \ + } else { \ + _c##IDX[j] = _a[j]; \ + } \ + } \ + \ + a = load_m128d(_a); \ + b = load_m128d(_b); \ + c = _mm_blend_pd(a, b, IDX); \ + CHECK_RESULT(validateDouble(c, _c##IDX[0], _c##IDX[1])) + + IMM_4_ITER +#undef TEST_IMPL + return TEST_SUCCESS; +} + +result_t test_mm_blend_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + const float *_b = impl.mTestFloatPointer2; + __m128 a = load_m128(_a); + __m128 b = load_m128(_b); + __m128 c; + + // gcc and clang can't compile call to _mm_blend_ps with 3rd argument as + // integer type due 4 bit size limitation. +#define TEST_IMPL(IDX) \ + float _c##IDX[4]; \ + for (int i = 0; i < 4; i++) { \ + if (IDX & (1 << i)) { \ + _c##IDX[i] = _b[i]; \ + } else { \ + _c##IDX[i] = _a[i]; \ + } \ + } \ + \ + c = _mm_blend_ps(a, b, IDX); \ + CHECK_RESULT( \ + validateFloat(c, _c##IDX[0], _c##IDX[1], _c##IDX[2], _c##IDX[3])) + + IMM_4_ITER +#undef TEST_IMPL + return TEST_SUCCESS; +} + +result_t test_mm_blendv_epi8(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int8_t *_a = (const int8_t *) impl.mTestIntPointer1; + const int8_t *_b = (const int8_t *) impl.mTestIntPointer2; + const int8_t _mask[16] = {(const int8_t) impl.mTestInts[iter], + (const int8_t) impl.mTestInts[iter + 1], + (const int8_t) impl.mTestInts[iter + 2], + (const int8_t) impl.mTestInts[iter + 3], + (const int8_t) impl.mTestInts[iter + 4], + (const int8_t) impl.mTestInts[iter + 5], + (const int8_t) impl.mTestInts[iter + 6], + (const int8_t) impl.mTestInts[iter + 7]}; + + int8_t _c[16]; + for (int i = 0; i < 16; i++) { + if (_mask[i] >> 7) { + _c[i] = _b[i]; + } else { + _c[i] = _a[i]; + } + } + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i mask = load_m128i(_mask); + __m128i c = _mm_blendv_epi8(a, b, mask); + + return VALIDATE_INT8_M128(c, _c); +} + +result_t test_mm_blendv_pd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *_a = (const double *) impl.mTestFloatPointer1; + const double *_b = (const double *) impl.mTestFloatPointer2; + const double _mask[] = {(double) impl.mTestFloats[iter], + (double) impl.mTestFloats[iter + 1]}; + + double _c[2]; + for (int i = 0; i < 2; i++) { + // signed shift right would return a result which is either all 1's from + // negative numbers or all 0's from positive numbers + int64_t m = sse2neon_tool_recast_i64(_mask[i]); + if (m >> 63) { + _c[i] = _b[i]; + } else { + _c[i] = _a[i]; + } + } + + __m128d a = load_m128d(_a); + __m128d b = load_m128d(_b); + __m128d mask = load_m128d(_mask); + + __m128d c = _mm_blendv_pd(a, b, mask); + + return validateDouble(c, _c[0], _c[1]); +} + +result_t test_mm_blendv_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + const float *_b = impl.mTestFloatPointer2; + const float _mask[] = {impl.mTestFloats[iter], impl.mTestFloats[iter + 1], + impl.mTestFloats[iter + 2], + impl.mTestFloats[iter + 3]}; + + float _c[4]; + for (int i = 0; i < 4; i++) { + // signed shift right would return a result which is either all 1's from + // negative numbers or all 0's from positive numbers + if ((*(const int32_t *) (_mask + i)) >> 31) { + _c[i] = _b[i]; + } else { + _c[i] = _a[i]; + } + } + + __m128 a = load_m128(_a); + __m128 b = load_m128(_b); + __m128 mask = load_m128(_mask); + + __m128 c = _mm_blendv_ps(a, b, mask); + + return validateFloat(c, _c[0], _c[1], _c[2], _c[3]); +} + +result_t test_mm_ceil_pd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *_a = (const double *) impl.mTestFloatPointer1; + + double dx = ceil(_a[0]); + double dy = ceil(_a[1]); + + __m128d a = load_m128d(_a); + __m128d ret = _mm_ceil_pd(a); + + return validateDouble(ret, dx, dy); +} + +result_t test_mm_ceil_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + float dx = ceilf(_a[0]); + float dy = ceilf(_a[1]); + float dz = ceilf(_a[2]); + float dw = ceilf(_a[3]); + + __m128 a = _mm_load_ps(_a); + __m128 c = _mm_ceil_ps(a); + return validateFloat(c, dx, dy, dz, dw); +} + +result_t test_mm_ceil_sd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *_a = (const double *) impl.mTestFloatPointer1; + const double *_b = (const double *) impl.mTestFloatPointer2; + + double dx = ceil(_b[0]); + double dy = _a[1]; + + __m128d a = load_m128d(_a); + __m128d b = load_m128d(_b); + __m128d ret = _mm_ceil_sd(a, b); + + return validateDouble(ret, dx, dy); +} + +result_t test_mm_ceil_ss(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + const float *_b = impl.mTestFloatPointer1; + + float f0 = ceilf(_b[0]); + + __m128 a = load_m128(_a); + __m128 b = load_m128(_b); + __m128 c = _mm_ceil_ss(a, b); + + return validateFloat(c, f0, _a[1], _a[2], _a[3]); +} + +result_t test_mm_cmpeq_epi64(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int64_t *_a = (const int64_t *) impl.mTestIntPointer1; + const int64_t *_b = (const int64_t *) impl.mTestIntPointer2; + int64_t d0 = (_a[0] == _b[0]) ? 0xffffffffffffffff : 0x0; + int64_t d1 = (_a[1] == _b[1]) ? 0xffffffffffffffff : 0x0; + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i c = _mm_cmpeq_epi64(a, b); + return validateInt64(c, d0, d1); +} + +result_t test_mm_cvtepi16_epi32(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int16_t *_a = (const int16_t *) impl.mTestIntPointer1; + + int32_t d[4]; + d[0] = (int32_t) _a[0]; + d[1] = (int32_t) _a[1]; + d[2] = (int32_t) _a[2]; + d[3] = (int32_t) _a[3]; + + __m128i a = load_m128i(_a); + __m128i ret = _mm_cvtepi16_epi32(a); + + return VALIDATE_INT32_M128(ret, d); +} + +result_t test_mm_cvtepi16_epi64(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int16_t *_a = (const int16_t *) impl.mTestIntPointer1; + + int64_t i0 = (int64_t) _a[0]; + int64_t i1 = (int64_t) _a[1]; + + __m128i a = load_m128i(_a); + __m128i ret = _mm_cvtepi16_epi64(a); + + return validateInt64(ret, i0, i1); +} + +result_t test_mm_cvtepi32_epi64(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int32_t *_a = (const int32_t *) impl.mTestIntPointer1; + + int64_t i0 = (int64_t) _a[0]; + int64_t i1 = (int64_t) _a[1]; + + __m128i a = load_m128i(_a); + __m128i ret = _mm_cvtepi32_epi64(a); + + return validateInt64(ret, i0, i1); +} + +result_t test_mm_cvtepi8_epi16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int8_t *_a = (const int8_t *) impl.mTestIntPointer1; + + int16_t d[8]; + d[0] = (int16_t) _a[0]; + d[1] = (int16_t) _a[1]; + d[2] = (int16_t) _a[2]; + d[3] = (int16_t) _a[3]; + d[4] = (int16_t) _a[4]; + d[5] = (int16_t) _a[5]; + d[6] = (int16_t) _a[6]; + d[7] = (int16_t) _a[7]; + + __m128i a = load_m128i(_a); + __m128i ret = _mm_cvtepi8_epi16(a); + + return VALIDATE_INT16_M128(ret, d); +} + +result_t test_mm_cvtepi8_epi32(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int8_t *_a = (const int8_t *) impl.mTestIntPointer1; + + int32_t d[4]; + d[0] = (int32_t) _a[0]; + d[1] = (int32_t) _a[1]; + d[2] = (int32_t) _a[2]; + d[3] = (int32_t) _a[3]; + + __m128i a = load_m128i(_a); + __m128i ret = _mm_cvtepi8_epi32(a); + + return VALIDATE_INT32_M128(ret, d); +} + +result_t test_mm_cvtepi8_epi64(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int8_t *_a = (const int8_t *) impl.mTestIntPointer1; + + int64_t i0 = (int64_t) _a[0]; + int64_t i1 = (int64_t) _a[1]; + + __m128i a = load_m128i(_a); + __m128i ret = _mm_cvtepi8_epi64(a); + + return validateInt64(ret, i0, i1); +} + +result_t test_mm_cvtepu16_epi32(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const uint16_t *_a = (const uint16_t *) impl.mTestIntPointer1; + + int32_t d[4]; + d[0] = (int32_t) _a[0]; + d[1] = (int32_t) _a[1]; + d[2] = (int32_t) _a[2]; + d[3] = (int32_t) _a[3]; + + __m128i a = load_m128i(_a); + __m128i ret = _mm_cvtepu16_epi32(a); + + return VALIDATE_INT32_M128(ret, d); +} + +result_t test_mm_cvtepu16_epi64(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const uint16_t *_a = (const uint16_t *) impl.mTestIntPointer1; + + int64_t i0 = (int64_t) _a[0]; + int64_t i1 = (int64_t) _a[1]; + + __m128i a = load_m128i(_a); + __m128i ret = _mm_cvtepu16_epi64(a); + + return validateInt64(ret, i0, i1); +} + +result_t test_mm_cvtepu32_epi64(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const uint32_t *_a = (const uint32_t *) impl.mTestIntPointer1; + + int64_t i0 = (int64_t) _a[0]; + int64_t i1 = (int64_t) _a[1]; + + __m128i a = load_m128i(_a); + __m128i ret = _mm_cvtepu32_epi64(a); + + return validateInt64(ret, i0, i1); +} + +result_t test_mm_cvtepu8_epi16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const uint8_t *_a = (const uint8_t *) impl.mTestIntPointer1; + + int16_t d[8]; + d[0] = (int16_t) _a[0]; + d[1] = (int16_t) _a[1]; + d[2] = (int16_t) _a[2]; + d[3] = (int16_t) _a[3]; + d[4] = (int16_t) _a[4]; + d[5] = (int16_t) _a[5]; + d[6] = (int16_t) _a[6]; + d[7] = (int16_t) _a[7]; + + __m128i a = load_m128i(_a); + __m128i ret = _mm_cvtepu8_epi16(a); + + return VALIDATE_INT16_M128(ret, d); +} + +result_t test_mm_cvtepu8_epi32(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const uint8_t *_a = (const uint8_t *) impl.mTestIntPointer1; + + int32_t d[4]; + d[0] = (int32_t) _a[0]; + d[1] = (int32_t) _a[1]; + d[2] = (int32_t) _a[2]; + d[3] = (int32_t) _a[3]; + + __m128i a = load_m128i(_a); + __m128i ret = _mm_cvtepu8_epi32(a); + + return VALIDATE_INT32_M128(ret, d); +} + +result_t test_mm_cvtepu8_epi64(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const uint8_t *_a = (const uint8_t *) impl.mTestIntPointer1; + + int64_t i0 = (int64_t) _a[0]; + int64_t i1 = (int64_t) _a[1]; + + __m128i a = load_m128i(_a); + __m128i ret = _mm_cvtepu8_epi64(a); + + return validateInt64(ret, i0, i1); +} + +#define MM_DP_PD_TEST_CASE_WITH(imm8) \ + do { \ + const double _a[] = {impl.mTestFloatPointer1[0], \ + impl.mTestFloatPointer1[1]}; \ + const double _b[] = {impl.mTestFloatPointer2[0], \ + impl.mTestFloatPointer2[1]}; \ + const int imm = imm8; \ + double d[2] = {0}; \ + double sum = 0; \ + for (size_t i = 0; i < 2; i++) \ + sum += ((imm) & (1 << (i + 4))) ? _a[i] * _b[i] : 0; \ + for (size_t i = 0; i < 2; i++) \ + d[i] = (imm & (1 << i)) ? sum : 0; \ + __m128d a = load_m128d(_a); \ + __m128d b = load_m128d(_b); \ + __m128d ret = _mm_dp_pd(a, b, imm); \ + if (validateDouble(ret, d[0], d[1]) != TEST_SUCCESS) \ + return TEST_FAIL; \ + } while (0) + +#define GENERATE_MM_DP_PD_TEST_CASES \ + MM_DP_PD_TEST_CASE_WITH(0xF0); \ + MM_DP_PD_TEST_CASE_WITH(0xF1); \ + MM_DP_PD_TEST_CASE_WITH(0xF2); \ + MM_DP_PD_TEST_CASE_WITH(0xFF); \ + MM_DP_PD_TEST_CASE_WITH(0x10); \ + MM_DP_PD_TEST_CASE_WITH(0x11); \ + MM_DP_PD_TEST_CASE_WITH(0x12); \ + MM_DP_PD_TEST_CASE_WITH(0x13); \ + MM_DP_PD_TEST_CASE_WITH(0x00); \ + MM_DP_PD_TEST_CASE_WITH(0x01); \ + MM_DP_PD_TEST_CASE_WITH(0x02); \ + MM_DP_PD_TEST_CASE_WITH(0x03); \ + MM_DP_PD_TEST_CASE_WITH(0x20); \ + MM_DP_PD_TEST_CASE_WITH(0x21); \ + MM_DP_PD_TEST_CASE_WITH(0x22); \ + MM_DP_PD_TEST_CASE_WITH(0x23); + +OPTNONE result_t test_mm_dp_pd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + GENERATE_MM_DP_PD_TEST_CASES + return TEST_SUCCESS; +} + +#define MM_DP_PS_TEST_CASE_WITH(IMM) \ + do { \ + const float *_a = impl.mTestFloatPointer1; \ + const float *_b = impl.mTestFloatPointer2; \ + const int imm = IMM; \ + __m128 a = load_m128(_a); \ + __m128 b = load_m128(_b); \ + __m128 out = _mm_dp_ps(a, b, imm); \ + float r[4]; /* the reference */ \ + float sum = 0; \ + for (size_t i = 0; i < 4; i++) \ + sum += ((imm) & (1 << (i + 4))) ? _a[i] * _b[i] : 0; \ + for (size_t i = 0; i < 4; i++) \ + r[i] = (imm & (1 << i)) ? sum : 0; \ + /* the epsilon has to be large enough, otherwise test suite fails. */ \ + if (validateFloatEpsilon(out, r[0], r[1], r[2], r[3], 2050.0f) != \ + TEST_SUCCESS) \ + return TEST_FAIL; \ + } while (0) + +#define GENERATE_MM_DP_PS_TEST_CASES \ + MM_DP_PS_TEST_CASE_WITH(0xFF); \ + MM_DP_PS_TEST_CASE_WITH(0x7F); \ + MM_DP_PS_TEST_CASE_WITH(0x9F); \ + MM_DP_PS_TEST_CASE_WITH(0x2F); \ + MM_DP_PS_TEST_CASE_WITH(0x0F); \ + MM_DP_PS_TEST_CASE_WITH(0x23); \ + MM_DP_PS_TEST_CASE_WITH(0xB5); + +OPTNONE result_t test_mm_dp_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + GENERATE_MM_DP_PS_TEST_CASES + return TEST_SUCCESS; +} + +result_t test_mm_extract_epi32(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + int32_t *_a = (int32_t *) impl.mTestIntPointer1; + __m128i a = load_m128i(_a); + int c; + +#define TEST_IMPL(IDX) \ + c = _mm_extract_epi32(a, IDX); \ + ASSERT_RETURN(c == *(_a + IDX)); + + IMM_4_ITER +#undef TEST_IMPL + return TEST_SUCCESS; +} + +result_t test_mm_extract_epi64(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + int64_t *_a = (int64_t *) impl.mTestIntPointer1; + __m128i a = load_m128i(_a); + __int64 c; + +#define TEST_IMPL(IDX) \ + c = _mm_extract_epi64(a, IDX); \ + ASSERT_RETURN(c == *(_a + IDX)); + + IMM_2_ITER +#undef TEST_IMPL + return TEST_SUCCESS; +} + +result_t test_mm_extract_epi8(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + uint8_t *_a = (uint8_t *) impl.mTestIntPointer1; + __m128i a = load_m128i(_a); + int c; + +#define TEST_IMPL(IDX) \ + c = _mm_extract_epi8(a, IDX); \ + ASSERT_RETURN(c == *(_a + IDX)); + + IMM_8_ITER +#undef TEST_IMPL + return TEST_SUCCESS; +} + +result_t test_mm_extract_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = (const float *) impl.mTestFloatPointer1; + + __m128 a = _mm_load_ps(_a); + int32_t c; + +#define TEST_IMPL(IDX) \ + c = _mm_extract_ps(a, IDX); \ + ASSERT_RETURN(c == *(const int32_t *) (_a + IDX)); + + IMM_4_ITER +#undef TEST_IMPL + return TEST_SUCCESS; +} + +result_t test_mm_floor_pd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *_a = (const double *) impl.mTestFloatPointer1; + + double dx = floor(_a[0]); + double dy = floor(_a[1]); + + __m128d a = load_m128d(_a); + __m128d ret = _mm_floor_pd(a); + + return validateDouble(ret, dx, dy); +} + +result_t test_mm_floor_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + float dx = floorf(_a[0]); + float dy = floorf(_a[1]); + float dz = floorf(_a[2]); + float dw = floorf(_a[3]); + + __m128 a = load_m128(_a); + __m128 c = _mm_floor_ps(a); + return validateFloat(c, dx, dy, dz, dw); +} + +result_t test_mm_floor_sd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *_a = (const double *) impl.mTestFloatPointer1; + const double *_b = (const double *) impl.mTestFloatPointer2; + + double dx = floor(_b[0]); + double dy = _a[1]; + + __m128d a = load_m128d(_a); + __m128d b = load_m128d(_b); + __m128d ret = _mm_floor_sd(a, b); + + return validateDouble(ret, dx, dy); +} + +result_t test_mm_floor_ss(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + const float *_b = impl.mTestFloatPointer1; + + float f0 = floorf(_b[0]); + + __m128 a = load_m128(_a); + __m128 b = load_m128(_b); + __m128 c = _mm_floor_ss(a, b); + + return validateFloat(c, f0, _a[1], _a[2], _a[3]); +} + +result_t test_mm_insert_epi32(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int32_t *_a = (const int32_t *) impl.mTestIntPointer1; + const int32_t insert = (int32_t) *impl.mTestIntPointer2; + __m128i a, b; + +#define TEST_IMPL(IDX) \ + int32_t d##IDX[4]; \ + for (int i = 0; i < 4; i++) { \ + d##IDX[i] = _a[i]; \ + } \ + d##IDX[IDX] = insert; \ + \ + a = load_m128i(_a); \ + b = _mm_insert_epi32(a, (int) insert, IDX); \ + CHECK_RESULT(VALIDATE_INT32_M128(b, d##IDX)); + + IMM_4_ITER +#undef TEST_IMPL + return TEST_SUCCESS; +} + +result_t test_mm_insert_epi64(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int64_t *_a = (const int64_t *) impl.mTestIntPointer1; + int64_t insert = (int64_t) *impl.mTestIntPointer2; + + __m128i a, b; + int64_t d[2]; +#define TEST_IMPL(IDX) \ + d[0] = _a[0]; \ + d[1] = _a[1]; \ + d[IDX] = insert; \ + a = load_m128i(_a); \ + b = _mm_insert_epi64(a, insert, IDX); \ + CHECK_RESULT(validateInt64(b, d[0], d[1])); + + IMM_2_ITER +#undef TEST_IMPL + return TEST_SUCCESS; +} + +result_t test_mm_insert_epi8(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int8_t *_a = (const int8_t *) impl.mTestIntPointer1; + const int8_t insert = (int8_t) *impl.mTestIntPointer2; + __m128i a, b; + int8_t d[16]; + +#define TEST_IMPL(IDX) \ + for (int i = 0; i < 16; i++) { \ + d[i] = _a[i]; \ + } \ + d[IDX] = insert; \ + a = load_m128i(_a); \ + b = _mm_insert_epi8(a, insert, IDX); \ + CHECK_RESULT(VALIDATE_INT8_M128(b, d)); + + IMM_16_ITER +#undef TEST_IMPL + return TEST_SUCCESS; +} + +result_t test_mm_insert_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + const float *_b = impl.mTestFloatPointer2; + + __m128 a, b, c; +#define TEST_IMPL(IDX) \ + float d##IDX[4] = {_a[0], _a[1], _a[2], _a[3]}; \ + d##IDX[(IDX >> 4) & 0x3] = _b[(IDX >> 6) & 0x3]; \ + \ + for (int j = 0; j < 4; j++) { \ + if (IDX & (1 << j)) { \ + d##IDX[j] = 0; \ + } \ + } \ + \ + a = _mm_load_ps(_a); \ + b = _mm_load_ps(_b); \ + c = _mm_insert_ps(a, b, IDX); \ + CHECK_RESULT(validateFloat(c, d##IDX[0], d##IDX[1], d##IDX[2], d##IDX[3])); + + IMM_256_ITER +#undef TEST_IMPL + return TEST_SUCCESS; +} + +result_t test_mm_max_epi32(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int32_t *_a = (const int32_t *) impl.mTestIntPointer1; + const int32_t *_b = (const int32_t *) impl.mTestIntPointer2; + + int32_t d[4]; + d[0] = _a[0] > _b[0] ? _a[0] : _b[0]; + d[1] = _a[1] > _b[1] ? _a[1] : _b[1]; + d[2] = _a[2] > _b[2] ? _a[2] : _b[2]; + d[3] = _a[3] > _b[3] ? _a[3] : _b[3]; + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i c = _mm_max_epi32(a, b); + + return VALIDATE_INT32_M128(c, d); +} + +result_t test_mm_max_epi8(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int8_t *_a = (const int8_t *) impl.mTestIntPointer1; + const int8_t *_b = (const int8_t *) impl.mTestIntPointer2; + int8_t d[16]; + d[0] = _a[0] > _b[0] ? _a[0] : _b[0]; + d[1] = _a[1] > _b[1] ? _a[1] : _b[1]; + d[2] = _a[2] > _b[2] ? _a[2] : _b[2]; + d[3] = _a[3] > _b[3] ? _a[3] : _b[3]; + d[4] = _a[4] > _b[4] ? _a[4] : _b[4]; + d[5] = _a[5] > _b[5] ? _a[5] : _b[5]; + d[6] = _a[6] > _b[6] ? _a[6] : _b[6]; + d[7] = _a[7] > _b[7] ? _a[7] : _b[7]; + d[8] = _a[8] > _b[8] ? _a[8] : _b[8]; + d[9] = _a[9] > _b[9] ? _a[9] : _b[9]; + d[10] = _a[10] > _b[10] ? _a[10] : _b[10]; + d[11] = _a[11] > _b[11] ? _a[11] : _b[11]; + d[12] = _a[12] > _b[12] ? _a[12] : _b[12]; + d[13] = _a[13] > _b[13] ? _a[13] : _b[13]; + d[14] = _a[14] > _b[14] ? _a[14] : _b[14]; + d[15] = _a[15] > _b[15] ? _a[15] : _b[15]; + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + + __m128i c = _mm_max_epi8(a, b); + return VALIDATE_INT8_M128(c, d); +} + +result_t test_mm_max_epu16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const uint16_t *_a = (const uint16_t *) impl.mTestIntPointer1; + const uint16_t *_b = (const uint16_t *) impl.mTestIntPointer2; + + uint16_t d[8]; + d[0] = _a[0] > _b[0] ? _a[0] : _b[0]; + d[1] = _a[1] > _b[1] ? _a[1] : _b[1]; + d[2] = _a[2] > _b[2] ? _a[2] : _b[2]; + d[3] = _a[3] > _b[3] ? _a[3] : _b[3]; + d[4] = _a[4] > _b[4] ? _a[4] : _b[4]; + d[5] = _a[5] > _b[5] ? _a[5] : _b[5]; + d[6] = _a[6] > _b[6] ? _a[6] : _b[6]; + d[7] = _a[7] > _b[7] ? _a[7] : _b[7]; + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i c = _mm_max_epu16(a, b); + + return VALIDATE_UINT16_M128(c, d); +} + +result_t test_mm_max_epu32(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const uint32_t *_a = (const uint32_t *) impl.mTestIntPointer1; + const uint32_t *_b = (const uint32_t *) impl.mTestIntPointer2; + + uint32_t d[4]; + d[0] = _a[0] > _b[0] ? _a[0] : _b[0]; + d[1] = _a[1] > _b[1] ? _a[1] : _b[1]; + d[2] = _a[2] > _b[2] ? _a[2] : _b[2]; + d[3] = _a[3] > _b[3] ? _a[3] : _b[3]; + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i c = _mm_max_epu32(a, b); + + return VALIDATE_UINT32_M128(c, d); +} + +result_t test_mm_min_epi32(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int32_t *_a = (const int32_t *) impl.mTestIntPointer1; + const int32_t *_b = (const int32_t *) impl.mTestIntPointer2; + + int32_t d[4]; + d[0] = _a[0] < _b[0] ? _a[0] : _b[0]; + d[1] = _a[1] < _b[1] ? _a[1] : _b[1]; + d[2] = _a[2] < _b[2] ? _a[2] : _b[2]; + d[3] = _a[3] < _b[3] ? _a[3] : _b[3]; + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i c = _mm_min_epi32(a, b); + + return VALIDATE_INT32_M128(c, d); +} + +result_t test_mm_min_epi8(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int8_t *_a = (const int8_t *) impl.mTestIntPointer1; + const int8_t *_b = (const int8_t *) impl.mTestIntPointer2; + + int8_t d[16]; + d[0] = _a[0] < _b[0] ? _a[0] : _b[0]; + d[1] = _a[1] < _b[1] ? _a[1] : _b[1]; + d[2] = _a[2] < _b[2] ? _a[2] : _b[2]; + d[3] = _a[3] < _b[3] ? _a[3] : _b[3]; + d[4] = _a[4] < _b[4] ? _a[4] : _b[4]; + d[5] = _a[5] < _b[5] ? _a[5] : _b[5]; + d[6] = _a[6] < _b[6] ? _a[6] : _b[6]; + d[7] = _a[7] < _b[7] ? _a[7] : _b[7]; + d[8] = _a[8] < _b[8] ? _a[8] : _b[8]; + d[9] = _a[9] < _b[9] ? _a[9] : _b[9]; + d[10] = _a[10] < _b[10] ? _a[10] : _b[10]; + d[11] = _a[11] < _b[11] ? _a[11] : _b[11]; + d[12] = _a[12] < _b[12] ? _a[12] : _b[12]; + d[13] = _a[13] < _b[13] ? _a[13] : _b[13]; + d[14] = _a[14] < _b[14] ? _a[14] : _b[14]; + d[15] = _a[15] < _b[15] ? _a[15] : _b[15]; + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + + __m128i c = _mm_min_epi8(a, b); + return VALIDATE_INT8_M128(c, d); +} + +result_t test_mm_min_epu16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const uint16_t *_a = (const uint16_t *) impl.mTestIntPointer1; + const uint16_t *_b = (const uint16_t *) impl.mTestIntPointer2; + + uint16_t d[8]; + d[0] = _a[0] < _b[0] ? _a[0] : _b[0]; + d[1] = _a[1] < _b[1] ? _a[1] : _b[1]; + d[2] = _a[2] < _b[2] ? _a[2] : _b[2]; + d[3] = _a[3] < _b[3] ? _a[3] : _b[3]; + d[4] = _a[4] < _b[4] ? _a[4] : _b[4]; + d[5] = _a[5] < _b[5] ? _a[5] : _b[5]; + d[6] = _a[6] < _b[6] ? _a[6] : _b[6]; + d[7] = _a[7] < _b[7] ? _a[7] : _b[7]; + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i c = _mm_min_epu16(a, b); + + return VALIDATE_UINT16_M128(c, d); +} + +result_t test_mm_min_epu32(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const uint32_t *_a = (const uint32_t *) impl.mTestIntPointer1; + const uint32_t *_b = (const uint32_t *) impl.mTestIntPointer2; + + uint32_t d[4]; + d[0] = _a[0] < _b[0] ? _a[0] : _b[0]; + d[1] = _a[1] < _b[1] ? _a[1] : _b[1]; + d[2] = _a[2] < _b[2] ? _a[2] : _b[2]; + d[3] = _a[3] < _b[3] ? _a[3] : _b[3]; + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i c = _mm_min_epu32(a, b); + + return VALIDATE_UINT32_M128(c, d); +} + +result_t test_mm_minpos_epu16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int16_t *_a = (const int16_t *) impl.mTestIntPointer1; + uint16_t index = 0, min = (uint16_t) _a[0]; + for (int i = 0; i < 8; i++) { + if ((uint16_t) _a[i] < min) { + index = (uint16_t) i; + min = (uint16_t) _a[i]; + } + } + + uint16_t d[8] = {min, index, 0, 0, 0, 0, 0, 0}; + + __m128i a = load_m128i(_a); + __m128i ret = _mm_minpos_epu16(a); + return VALIDATE_UINT16_M128(ret, d); +} + +result_t test_mm_mpsadbw_epu8(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const uint8_t *_a = (const uint8_t *) impl.mTestIntPointer1; + const uint8_t *_b = (const uint8_t *) impl.mTestIntPointer2; + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i c; +#define TEST_IMPL(IDX) \ + uint8_t a_offset##IDX = ((IDX >> 2) & 0x1) * 4; \ + uint8_t b_offset##IDX = (IDX & 0x3) * 4; \ + \ + uint16_t d##IDX[8] = {}; \ + for (int i = 0; i < 8; i++) { \ + for (int j = 0; j < 4; j++) { \ + d##IDX[i] += (uint16_t) abs(_a[(a_offset##IDX + i) + j] - \ + _b[b_offset##IDX + j]); \ + } \ + } \ + c = _mm_mpsadbw_epu8(a, b, IDX); \ + CHECK_RESULT(VALIDATE_UINT16_M128(c, d##IDX)); + + IMM_8_ITER +#undef TEST_IMPL + return TEST_SUCCESS; +} + +result_t test_mm_mul_epi32(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int32_t *_a = (const int32_t *) impl.mTestIntPointer1; + const int32_t *_b = (const int32_t *) impl.mTestIntPointer2; + + int64_t dx = (int64_t) (_a[0]) * (int64_t) (_b[0]); + int64_t dy = (int64_t) (_a[2]) * (int64_t) (_b[2]); + + __m128i a = _mm_loadu_si128((const __m128i *) _a); + __m128i b = _mm_loadu_si128((const __m128i *) _b); + __m128i r = _mm_mul_epi32(a, b); + + return validateInt64(r, dx, dy); +} + +result_t test_mm_mullo_epi32(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int32_t *_a = impl.mTestIntPointer1; + const int32_t *_b = impl.mTestIntPointer2; + int32_t d[4]; + + for (int i = 0; i < 4; i++) { + d[i] = (int32_t) ((int64_t) _a[i] * (int64_t) _b[i]); + } + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i c = _mm_mullo_epi32(a, b); + return VALIDATE_INT32_M128(c, d); +} + +result_t test_mm_packus_epi32(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + uint16_t max = UINT16_MAX; + uint16_t min = 0; + const int32_t *_a = (const int32_t *) impl.mTestIntPointer1; + const int32_t *_b = (const int32_t *) impl.mTestIntPointer2; + + uint16_t d[8]; + for (int i = 0; i < 4; i++) { + if (_a[i] > (int32_t) max) + d[i] = max; + else if (_a[i] < (int32_t) min) + d[i] = min; + else + d[i] = (uint16_t) _a[i]; + } + for (int i = 0; i < 4; i++) { + if (_b[i] > (int32_t) max) + d[i + 4] = max; + else if (_b[i] < (int32_t) min) + d[i + 4] = min; + else + d[i + 4] = (uint16_t) _b[i]; + } + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i c = _mm_packus_epi32(a, b); + + return VALIDATE_UINT16_M128(c, d); +} + +OPTNONE result_t test_mm_round_pd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *_a = (double *) impl.mTestFloatPointer1; + double d[2] = {}; + __m128d ret; + + __m128d a = load_m128d(_a); + switch (iter & 0x7) { + case 0: + d[0] = bankersRounding(_a[0]); + d[1] = bankersRounding(_a[1]); + + ret = _mm_round_pd(a, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); + break; + case 1: + d[0] = floor(_a[0]); + d[1] = floor(_a[1]); + + ret = _mm_round_pd(a, _MM_FROUND_TO_NEG_INF | _MM_FROUND_NO_EXC); + break; + case 2: + d[0] = ceil(_a[0]); + d[1] = ceil(_a[1]); + + ret = _mm_round_pd(a, _MM_FROUND_TO_POS_INF | _MM_FROUND_NO_EXC); + break; + case 3: + d[0] = _a[0] > 0 ? floor(_a[0]) : ceil(_a[0]); + d[1] = _a[1] > 0 ? floor(_a[1]) : ceil(_a[1]); + + ret = _mm_round_pd(a, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); + break; + case 4: + d[0] = bankersRounding(_a[0]); + d[1] = bankersRounding(_a[1]); + + _MM_SET_ROUNDING_MODE(_MM_ROUND_NEAREST); + ret = _mm_round_pd(a, _MM_FROUND_CUR_DIRECTION); + break; + case 5: + d[0] = floor(_a[0]); + d[1] = floor(_a[1]); + + _MM_SET_ROUNDING_MODE(_MM_ROUND_DOWN); + ret = _mm_round_pd(a, _MM_FROUND_CUR_DIRECTION); + break; + case 6: + d[0] = ceil(_a[0]); + d[1] = ceil(_a[1]); + + _MM_SET_ROUNDING_MODE(_MM_ROUND_UP); + ret = _mm_round_pd(a, _MM_FROUND_CUR_DIRECTION); + break; + case 7: + d[0] = _a[0] > 0 ? floor(_a[0]) : ceil(_a[0]); + d[1] = _a[1] > 0 ? floor(_a[1]) : ceil(_a[1]); + + _MM_SET_ROUNDING_MODE(_MM_ROUND_TOWARD_ZERO); + ret = _mm_round_pd(a, _MM_FROUND_CUR_DIRECTION); + break; + } + + return validateDouble(ret, d[0], d[1]); +} + +OPTNONE result_t test_mm_round_ps(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + float f[4] = {}; + __m128 ret; + + __m128 a = load_m128(_a); + switch (iter & 0x7) { + case 0: + f[0] = bankersRounding(_a[0]); + f[1] = bankersRounding(_a[1]); + f[2] = bankersRounding(_a[2]); + f[3] = bankersRounding(_a[3]); + + ret = _mm_round_ps(a, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); + break; + case 1: + f[0] = floorf(_a[0]); + f[1] = floorf(_a[1]); + f[2] = floorf(_a[2]); + f[3] = floorf(_a[3]); + + ret = _mm_round_ps(a, _MM_FROUND_TO_NEG_INF | _MM_FROUND_NO_EXC); + break; + case 2: + f[0] = ceilf(_a[0]); + f[1] = ceilf(_a[1]); + f[2] = ceilf(_a[2]); + f[3] = ceilf(_a[3]); + + ret = _mm_round_ps(a, _MM_FROUND_TO_POS_INF | _MM_FROUND_NO_EXC); + break; + case 3: + f[0] = _a[0] > 0 ? floorf(_a[0]) : ceilf(_a[0]); + f[1] = _a[1] > 0 ? floorf(_a[1]) : ceilf(_a[1]); + f[2] = _a[2] > 0 ? floorf(_a[2]) : ceilf(_a[2]); + f[3] = _a[3] > 0 ? floorf(_a[3]) : ceilf(_a[3]); + + ret = _mm_round_ps(a, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); + break; + case 4: + f[0] = bankersRounding(_a[0]); + f[1] = bankersRounding(_a[1]); + f[2] = bankersRounding(_a[2]); + f[3] = bankersRounding(_a[3]); + + _MM_SET_ROUNDING_MODE(_MM_ROUND_NEAREST); + ret = _mm_round_ps(a, _MM_FROUND_CUR_DIRECTION); + break; + case 5: + f[0] = floorf(_a[0]); + f[1] = floorf(_a[1]); + f[2] = floorf(_a[2]); + f[3] = floorf(_a[3]); + + _MM_SET_ROUNDING_MODE(_MM_ROUND_DOWN); + ret = _mm_round_ps(a, _MM_FROUND_CUR_DIRECTION); + break; + case 6: + f[0] = ceilf(_a[0]); + f[1] = ceilf(_a[1]); + f[2] = ceilf(_a[2]); + f[3] = ceilf(_a[3]); + + _MM_SET_ROUNDING_MODE(_MM_ROUND_UP); + ret = _mm_round_ps(a, _MM_FROUND_CUR_DIRECTION); + break; + case 7: + f[0] = _a[0] > 0 ? floorf(_a[0]) : ceilf(_a[0]); + f[1] = _a[1] > 0 ? floorf(_a[1]) : ceilf(_a[1]); + f[2] = _a[2] > 0 ? floorf(_a[2]) : ceilf(_a[2]); + f[3] = _a[3] > 0 ? floorf(_a[3]) : ceilf(_a[3]); + + _MM_SET_ROUNDING_MODE(_MM_ROUND_TOWARD_ZERO); + ret = _mm_round_ps(a, _MM_FROUND_CUR_DIRECTION); + break; + } + + return validateFloat(ret, f[0], f[1], f[2], f[3]); +} + +result_t test_mm_round_sd(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const double *_a = (double *) impl.mTestFloatPointer1; + const double *_b = (double *) impl.mTestFloatPointer2; + double d[2] = {}; + __m128d ret; + + __m128d a = load_m128d(_a); + __m128d b = load_m128d(_b); + d[1] = _a[1]; + switch (iter & 0x7) { + case 0: + d[0] = bankersRounding(_b[0]); + + ret = _mm_round_sd(a, b, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); + break; + case 1: + d[0] = floor(_b[0]); + + ret = _mm_round_sd(a, b, _MM_FROUND_TO_NEG_INF | _MM_FROUND_NO_EXC); + break; + case 2: + d[0] = ceil(_b[0]); + + ret = _mm_round_sd(a, b, _MM_FROUND_TO_POS_INF | _MM_FROUND_NO_EXC); + break; + case 3: + d[0] = _b[0] > 0 ? floor(_b[0]) : ceil(_b[0]); + + ret = _mm_round_sd(a, b, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); + break; + case 4: + d[0] = bankersRounding(_b[0]); + + _MM_SET_ROUNDING_MODE(_MM_ROUND_NEAREST); + ret = _mm_round_sd(a, b, _MM_FROUND_CUR_DIRECTION); + break; + case 5: + d[0] = floor(_b[0]); + + _MM_SET_ROUNDING_MODE(_MM_ROUND_DOWN); + ret = _mm_round_sd(a, b, _MM_FROUND_CUR_DIRECTION); + break; + case 6: + d[0] = ceil(_b[0]); + + _MM_SET_ROUNDING_MODE(_MM_ROUND_UP); + ret = _mm_round_sd(a, b, _MM_FROUND_CUR_DIRECTION); + break; + case 7: + d[0] = _b[0] > 0 ? floor(_b[0]) : ceil(_b[0]); + + _MM_SET_ROUNDING_MODE(_MM_ROUND_TOWARD_ZERO); + ret = _mm_round_sd(a, b, _MM_FROUND_CUR_DIRECTION); + break; + } + + return validateDouble(ret, d[0], d[1]); +} + +result_t test_mm_round_ss(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const float *_a = impl.mTestFloatPointer1; + const float *_b = impl.mTestFloatPointer2; + float f[4]; + __m128 ret; + + __m128 a = load_m128(_a); + __m128 b = load_m128(_b); + switch (iter & 0x7) { + case 0: + f[0] = bankersRounding(_b[0]); + + ret = _mm_round_ss(a, b, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); + break; + case 1: + f[0] = floorf(_b[0]); + + ret = _mm_round_ss(a, b, _MM_FROUND_TO_NEG_INF | _MM_FROUND_NO_EXC); + break; + case 2: + f[0] = ceilf(_b[0]); + + ret = _mm_round_ss(a, b, _MM_FROUND_TO_POS_INF | _MM_FROUND_NO_EXC); + break; + case 3: + f[0] = _b[0] > 0 ? floorf(_b[0]) : ceilf(_b[0]); + + ret = _mm_round_ss(a, b, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); + break; + case 4: + f[0] = bankersRounding(_b[0]); + + _MM_SET_ROUNDING_MODE(_MM_ROUND_NEAREST); + ret = _mm_round_ss(a, b, _MM_FROUND_CUR_DIRECTION); + break; + case 5: + f[0] = floorf(_b[0]); + + _MM_SET_ROUNDING_MODE(_MM_ROUND_DOWN); + ret = _mm_round_ss(a, b, _MM_FROUND_CUR_DIRECTION); + break; + case 6: + f[0] = ceilf(_b[0]); + + _MM_SET_ROUNDING_MODE(_MM_ROUND_UP); + ret = _mm_round_ss(a, b, _MM_FROUND_CUR_DIRECTION); + break; + case 7: + f[0] = _b[0] > 0 ? floorf(_b[0]) : ceilf(_b[0]); + + _MM_SET_ROUNDING_MODE(_MM_ROUND_TOWARD_ZERO); + ret = _mm_round_ss(a, b, _MM_FROUND_CUR_DIRECTION); + break; + } + f[1] = _a[1]; + f[2] = _a[2]; + f[3] = _a[3]; + + + return validateFloat(ret, f[0], f[1], f[2], f[3]); +} + +result_t test_mm_stream_load_si128(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + int32_t *addr = impl.mTestIntPointer1; + + __m128i ret = _mm_stream_load_si128((__m128i *) addr); + + return VALIDATE_INT32_M128(ret, addr); +} + +result_t test_mm_test_all_ones(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int32_t *_a = (const int32_t *) impl.mTestIntPointer1; + __m128i a = load_m128i(_a); + + int32_t d0 = ~_a[0] & (~(uint32_t) 0); + int32_t d1 = ~_a[1] & (~(uint32_t) 0); + int32_t d2 = ~_a[2] & (~(uint32_t) 0); + int32_t d3 = ~_a[3] & (~(uint32_t) 0); + int32_t result = ((d0 | d1 | d2 | d3) == 0) ? 1 : 0; + + int32_t ret = _mm_test_all_ones(a); + + return result == ret ? TEST_SUCCESS : TEST_FAIL; +} + +result_t test_mm_test_all_zeros(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int32_t *_a = (const int32_t *) impl.mTestIntPointer1; + const int32_t *_mask = (const int32_t *) impl.mTestIntPointer2; + __m128i a = load_m128i(_a); + __m128i mask = load_m128i(_mask); + + int32_t d0 = _a[0] & _mask[0]; + int32_t d1 = _a[1] & _mask[1]; + int32_t d2 = _a[2] & _mask[2]; + int32_t d3 = _a[3] & _mask[3]; + int32_t result = ((d0 | d1 | d2 | d3) == 0) ? 1 : 0; + + int32_t ret = _mm_test_all_zeros(a, mask); + + return result == ret ? TEST_SUCCESS : TEST_FAIL; +} + +result_t test_mm_test_mix_ones_zeros(const SSE2NEONTestImpl &impl, + uint32_t iter) +{ + const int32_t *_a = (const int32_t *) impl.mTestIntPointer1; + const int32_t *_mask = (const int32_t *) impl.mTestIntPointer2; + __m128i a = load_m128i(_a); + __m128i mask = load_m128i(_mask); + + int32_t ZF = 1; + int32_t CF = 1; + for (int i = 0; i < 4; i++) { + ZF &= ((_a[i] & _mask[i]) == 0); + CF &= ((~_a[i] & _mask[i]) == 0); + } + int32_t result = (ZF == 0 && CF == 0); + + int32_t ret = _mm_test_mix_ones_zeros(a, mask); + return result == ret ? TEST_SUCCESS : TEST_FAIL; +} + +result_t test_mm_testc_si128(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int32_t *_a = impl.mTestIntPointer1; + const int32_t *_b = impl.mTestIntPointer2; + __m128i a = _mm_load_si128((const __m128i *) _a); + __m128i b = _mm_load_si128((const __m128i *) _b); + int testc = 1; + for (int i = 0; i < 2; i++) { + if ((~(((SIMDVec *) &a)->m128_u64[i]) & + ((SIMDVec *) &b)->m128_u64[i])) { + testc = 0; + break; + } + } + return _mm_testc_si128(a, b) == testc ? TEST_SUCCESS : TEST_FAIL; +} + +result_t test_mm_testnzc_si128(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + return test_mm_test_mix_ones_zeros(impl, iter); +} + +result_t test_mm_testz_si128(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int32_t *_a = impl.mTestIntPointer1; + const int32_t *_b = impl.mTestIntPointer2; + __m128i a = _mm_load_si128((const __m128i *) _a); + __m128i b = _mm_load_si128((const __m128i *) _b); + int testz = 1; + for (int i = 0; i < 2; i++) { + if ((((SIMDVec *) &a)->m128_u64[i] & ((SIMDVec *) &b)->m128_u64[i])) { + testz = 0; + break; + } + } + return _mm_testz_si128(a, b) == testz ? TEST_SUCCESS : TEST_FAIL; +} + +/* SSE4.2 */ +#define IS_CMPESTRI 1 + +#define DEF_ENUM_MM_CMPESTRX_VARIANT(c, ...) c, + +#define EVAL_MM_CMPESTRX_TEST_CASE(c, type, data_type, im, IM) \ + do { \ + data_type *a = test_mm_##im##_##type##_data[c].a, \ + *b = test_mm_##im##_##type##_data[c].b; \ + int la = test_mm_##im##_##type##_data[c].la, \ + lb = test_mm_##im##_##type##_data[c].lb; \ + const int imm8 = IMM_##c; \ + IIF(IM) \ + (int expect = test_mm_##im##_##type##_data[c].expect, \ + data_type *expect = test_mm_##im##_##type##_data[c].expect); \ + __m128i ma, mb; \ + memcpy(&ma, a, sizeof(ma)); \ + memcpy(&mb, b, sizeof(mb)); \ + IIF(IM) \ + (int res = _mm_##im(ma, la, mb, lb, imm8), \ + __m128i res = _mm_##im(ma, la, mb, lb, imm8)); \ + if (IIF(IM)(res != expect, memcmp(expect, &res, sizeof(__m128i)))) \ + return TEST_FAIL; \ + } while (0); + +#define ENUM_MM_CMPESTRX_TEST_CASES(type, type_lower, data_type, func, FUNC, \ + IM) \ + enum { MM_##FUNC##_##type##_TEST_CASES(DEF_ENUM_MM_CMPESTRX_VARIANT) }; \ + MM_##FUNC##_##type##_TEST_CASES(EVAL_MM_CMPESTRX_TEST_CASE, type_lower, \ + data_type, func, IM) + +#define IMM_UBYTE_EACH_LEAST \ + (_SIDD_UBYTE_OPS | _SIDD_CMP_EQUAL_EACH | _SIDD_LEAST_SIGNIFICANT) +#define IMM_UBYTE_EACH_LEAST_NEGATIVE \ + (_SIDD_UBYTE_OPS | _SIDD_CMP_EQUAL_EACH | _SIDD_LEAST_SIGNIFICANT | \ + _SIDD_NEGATIVE_POLARITY) +#define IMM_UBYTE_EACH_LEAST_MASKED_NEGATIVE \ + (_SIDD_UBYTE_OPS | _SIDD_CMP_EQUAL_EACH | _SIDD_LEAST_SIGNIFICANT | \ + _SIDD_MASKED_NEGATIVE_POLARITY) +#define IMM_UBYTE_EACH_MOST \ + (_SIDD_UBYTE_OPS | _SIDD_CMP_EQUAL_EACH | _SIDD_MOST_SIGNIFICANT) +#define IMM_UBYTE_EACH_MOST_NEGATIVE \ + (_SIDD_UBYTE_OPS | _SIDD_CMP_EQUAL_EACH | _SIDD_MOST_SIGNIFICANT | \ + _SIDD_NEGATIVE_POLARITY) +#define IMM_UBYTE_EACH_MOST_MASKED_NEGATIVE \ + (_SIDD_UBYTE_OPS | _SIDD_CMP_EQUAL_EACH | _SIDD_MOST_SIGNIFICANT | \ + _SIDD_MASKED_NEGATIVE_POLARITY) +#define IMM_UBYTE_ANY_LEAST \ + (_SIDD_UBYTE_OPS | _SIDD_CMP_EQUAL_ANY | _SIDD_LEAST_SIGNIFICANT) +#define IMM_UBYTE_ANY_LEAST_NEGATIVE \ + (_SIDD_UBYTE_OPS | _SIDD_CMP_EQUAL_ANY | _SIDD_LEAST_SIGNIFICANT | \ + _SIDD_NEGATIVE_POLARITY) +#define IMM_UBYTE_ANY_LEAST_MASKED_NEGATIVE \ + (_SIDD_UBYTE_OPS | _SIDD_CMP_EQUAL_ANY | _SIDD_LEAST_SIGNIFICANT | \ + _SIDD_MASKED_NEGATIVE_POLARITY) +#define IMM_UBYTE_ANY_MOST \ + (_SIDD_UBYTE_OPS | _SIDD_CMP_EQUAL_ANY | _SIDD_MOST_SIGNIFICANT) +#define IMM_UBYTE_ANY_MOST_NEGATIVE \ + (_SIDD_UBYTE_OPS | _SIDD_CMP_EQUAL_ANY | _SIDD_MOST_SIGNIFICANT | \ + _SIDD_NEGATIVE_POLARITY) +#define IMM_UBYTE_ANY_MOST_MASKED_NEGATIVE \ + (_SIDD_UBYTE_OPS | _SIDD_CMP_EQUAL_ANY | _SIDD_MOST_SIGNIFICANT | \ + _SIDD_MASKED_NEGATIVE_POLARITY) +#define IMM_UBYTE_RANGES_LEAST \ + (_SIDD_UBYTE_OPS | _SIDD_CMP_RANGES | _SIDD_LEAST_SIGNIFICANT) +#define IMM_UBYTE_RANGES_MOST \ + (_SIDD_UBYTE_OPS | _SIDD_CMP_RANGES | _SIDD_MOST_SIGNIFICANT) +#define IMM_UBYTE_RANGES_LEAST_NEGATIVE \ + (_SIDD_UBYTE_OPS | _SIDD_CMP_RANGES | _SIDD_LEAST_SIGNIFICANT | \ + _SIDD_NEGATIVE_POLARITY) +#define IMM_UBYTE_RANGES_MOST_NEGATIVE \ + (_SIDD_UBYTE_OPS | _SIDD_CMP_RANGES | _SIDD_MOST_SIGNIFICANT | \ + _SIDD_NEGATIVE_POLARITY) +#define IMM_UBYTE_RANGES_LEAST_MASKED_NEGATIVE \ + (_SIDD_UBYTE_OPS | _SIDD_CMP_RANGES | _SIDD_LEAST_SIGNIFICANT | \ + _SIDD_MASKED_NEGATIVE_POLARITY) +#define IMM_UBYTE_RANGES_MOST_MASKED_NEGATIVE \ + (_SIDD_UBYTE_OPS | _SIDD_CMP_RANGES | _SIDD_MOST_SIGNIFICANT | \ + _SIDD_MASKED_NEGATIVE_POLARITY) +#define IMM_UBYTE_ORDERED_LEAST \ + (_SIDD_UBYTE_OPS | _SIDD_CMP_EQUAL_ORDERED | _SIDD_LEAST_SIGNIFICANT) +#define IMM_UBYTE_ORDERED_LEAST_NEGATIVE \ + (_SIDD_UBYTE_OPS | _SIDD_CMP_EQUAL_ORDERED | _SIDD_LEAST_SIGNIFICANT | \ + _SIDD_NEGATIVE_POLARITY) +#define IMM_UBYTE_ORDERED_MOST \ + (_SIDD_UBYTE_OPS | _SIDD_CMP_EQUAL_ORDERED | _SIDD_MOST_SIGNIFICANT) +#define IMM_UBYTE_ORDERED_MOST_NEGATIVE \ + (_SIDD_UBYTE_OPS | _SIDD_CMP_EQUAL_ORDERED | _SIDD_MOST_SIGNIFICANT | \ + _SIDD_NEGATIVE_POLARITY) +#define IMM_UBYTE_ORDERED_MOST_MASKED_NEGATIVE \ + (_SIDD_UBYTE_OPS | _SIDD_CMP_EQUAL_ORDERED | _SIDD_MOST_SIGNIFICANT | \ + _SIDD_MASKED_NEGATIVE_POLARITY) + +#define IMM_SBYTE_EACH_LEAST \ + (_SIDD_SBYTE_OPS | _SIDD_CMP_EQUAL_EACH | _SIDD_LEAST_SIGNIFICANT) +#define IMM_SBYTE_EACH_LEAST_NEGATIVE \ + (_SIDD_SBYTE_OPS | _SIDD_CMP_EQUAL_EACH | _SIDD_LEAST_SIGNIFICANT | \ + _SIDD_NEGATIVE_POLARITY) +#define IMM_SBYTE_EACH_LEAST_MASKED_NEGATIVE \ + (_SIDD_SBYTE_OPS | _SIDD_CMP_EQUAL_EACH | _SIDD_LEAST_SIGNIFICANT | \ + _SIDD_MASKED_NEGATIVE_POLARITY) +#define IMM_SBYTE_EACH_MOST \ + (_SIDD_SBYTE_OPS | _SIDD_CMP_EQUAL_EACH | _SIDD_MOST_SIGNIFICANT) +#define IMM_SBYTE_EACH_MOST_NEGATIVE \ + (_SIDD_SBYTE_OPS | _SIDD_CMP_EQUAL_EACH | _SIDD_MOST_SIGNIFICANT | \ + _SIDD_NEGATIVE_POLARITY) +#define IMM_SBYTE_EACH_MOST_MASKED_NEGATIVE \ + (_SIDD_SBYTE_OPS | _SIDD_CMP_EQUAL_EACH | _SIDD_MOST_SIGNIFICANT | \ + _SIDD_MASKED_NEGATIVE_POLARITY) +#define IMM_SBYTE_ANY_LEAST \ + (_SIDD_SBYTE_OPS | _SIDD_CMP_EQUAL_ANY | _SIDD_LEAST_SIGNIFICANT) +#define IMM_SBYTE_ANY_LEAST_NEGATIVE \ + (_SIDD_SBYTE_OPS | _SIDD_CMP_EQUAL_ANY | _SIDD_LEAST_SIGNIFICANT | \ + _SIDD_NEGATIVE_POLARITY) +#define IMM_SBYTE_ANY_MOST \ + (_SIDD_SBYTE_OPS | _SIDD_CMP_EQUAL_ANY | _SIDD_MOST_SIGNIFICANT) +#define IMM_SBYTE_ANY_MOST_MASKED_NEGATIVE \ + (_SIDD_SBYTE_OPS | _SIDD_CMP_EQUAL_ANY | _SIDD_LEAST_SIGNIFICANT | \ + _SIDD_MASKED_NEGATIVE_POLARITY) +#define IMM_SBYTE_RANGES_LEAST \ + (_SIDD_SBYTE_OPS | _SIDD_CMP_RANGES | _SIDD_LEAST_SIGNIFICANT) +#define IMM_SBYTE_RANGES_LEAST_NEGATIVE \ + (_SIDD_SBYTE_OPS | _SIDD_CMP_RANGES | _SIDD_LEAST_SIGNIFICANT | \ + _SIDD_NEGATIVE_POLARITY) +#define IMM_SBYTE_RANGES_LEAST_MASKED_NEGATIVE \ + (_SIDD_SBYTE_OPS | _SIDD_CMP_RANGES | _SIDD_LEAST_SIGNIFICANT | \ + _SIDD_MASKED_NEGATIVE_POLARITY) +#define IMM_SBYTE_RANGES_MOST \ + (_SIDD_SBYTE_OPS | _SIDD_CMP_RANGES | _SIDD_MOST_SIGNIFICANT) +#define IMM_SBYTE_RANGES_MOST_NEGATIVE \ + (_SIDD_SBYTE_OPS | _SIDD_CMP_RANGES | _SIDD_MOST_SIGNIFICANT | \ + _SIDD_NEGATIVE_POLARITY) +#define IMM_SBYTE_RANGES_MOST_MASKED_NEGATIVE \ + (_SIDD_SBYTE_OPS | _SIDD_CMP_RANGES | _SIDD_MOST_SIGNIFICANT | \ + _SIDD_MASKED_NEGATIVE_POLARITY) +#define IMM_SBYTE_ORDERED_LEAST \ + (_SIDD_SBYTE_OPS | _SIDD_CMP_EQUAL_ORDERED | _SIDD_LEAST_SIGNIFICANT) +#define IMM_SBYTE_ORDERED_LEAST_NEGATIVE \ + (_SIDD_SBYTE_OPS | _SIDD_CMP_EQUAL_ORDERED | _SIDD_LEAST_SIGNIFICANT | \ + _SIDD_NEGATIVE_POLARITY) +#define IMM_SBYTE_ORDERED_LEAST_MASKED_NEGATIVE \ + (_SIDD_SBYTE_OPS | _SIDD_CMP_EQUAL_ORDERED | _SIDD_LEAST_SIGNIFICANT | \ + _SIDD_MASKED_NEGATIVE_POLARITY) +#define IMM_SBYTE_ORDERED_MOST_NEGATIVE \ + (_SIDD_SBYTE_OPS | _SIDD_CMP_EQUAL_ORDERED | _SIDD_MOST_SIGNIFICANT | \ + _SIDD_NEGATIVE_POLARITY) +#define IMM_SBYTE_ORDERED_MOST \ + (_SIDD_SBYTE_OPS | _SIDD_CMP_EQUAL_ORDERED | _SIDD_MOST_SIGNIFICANT) +#define IMM_SBYTE_ORDERED_MOST_MASKED_NEGATIVE \ + (_SIDD_SBYTE_OPS | _SIDD_CMP_EQUAL_ORDERED | _SIDD_MOST_SIGNIFICANT | \ + _SIDD_MASKED_NEGATIVE_POLARITY) + +#define IMM_UWORD_RANGES_LEAST \ + (_SIDD_UWORD_OPS | _SIDD_CMP_RANGES | _SIDD_LEAST_SIGNIFICANT) +#define IMM_UWORD_RANGES_LEAST_NEGATIVE \ + (_SIDD_UWORD_OPS | _SIDD_CMP_RANGES | _SIDD_LEAST_SIGNIFICANT | \ + _SIDD_NEGATIVE_POLARITY) +#define IMM_UWORD_RANGES_LEAST_MASKED_NEGATIVE \ + (_SIDD_UWORD_OPS | _SIDD_CMP_RANGES | _SIDD_LEAST_SIGNIFICANT | \ + _SIDD_MASKED_NEGATIVE_POLARITY) +#define IMM_UWORD_RANGES_MOST \ + (_SIDD_UWORD_OPS | _SIDD_CMP_RANGES | _SIDD_MOST_SIGNIFICANT) +#define IMM_UWORD_RANGES_MOST_NEGATIVE \ + (_SIDD_UWORD_OPS | _SIDD_CMP_RANGES | _SIDD_MOST_SIGNIFICANT | \ + _SIDD_NEGATIVE_POLARITY) +#define IMM_UWORD_RANGES_MOST_MASKED_NEGATIVE \ + (_SIDD_UWORD_OPS | _SIDD_CMP_RANGES | _SIDD_MOST_SIGNIFICANT | \ + _SIDD_MASKED_NEGATIVE_POLARITY) +#define IMM_UWORD_EACH_LEAST \ + (_SIDD_UWORD_OPS | _SIDD_CMP_EQUAL_EACH | _SIDD_LEAST_SIGNIFICANT) +#define IMM_UWORD_EACH_MOST \ + (_SIDD_UWORD_OPS | _SIDD_CMP_EQUAL_EACH | _SIDD_MOST_SIGNIFICANT) +#define IMM_UWORD_EACH_LEAST_NEGATIVE \ + (_SIDD_UWORD_OPS | _SIDD_CMP_EQUAL_EACH | _SIDD_LEAST_SIGNIFICANT | \ + _SIDD_NEGATIVE_POLARITY) +#define IMM_UWORD_EACH_LEAST_MASKED_NEGATIVE \ + (_SIDD_UWORD_OPS | _SIDD_CMP_EQUAL_EACH | _SIDD_LEAST_SIGNIFICANT | \ + _SIDD_MASKED_NEGATIVE_POLARITY) +#define IMM_UWORD_EACH_MOST_MASKED_NEGATIVE \ + (_SIDD_UWORD_OPS | _SIDD_CMP_EQUAL_EACH | _SIDD_MOST_SIGNIFICANT | \ + _SIDD_MASKED_NEGATIVE_POLARITY) +#define IMM_UWORD_ANY_LEAST \ + (_SIDD_UWORD_OPS | _SIDD_CMP_EQUAL_ANY | _SIDD_LEAST_SIGNIFICANT) +#define IMM_UWORD_ANY_MOST \ + (_SIDD_UWORD_OPS | _SIDD_CMP_EQUAL_ANY | _SIDD_MOST_SIGNIFICANT) +#define IMM_UWORD_ANY_MOST_NEGATIVE \ + (_SIDD_UWORD_OPS | _SIDD_CMP_EQUAL_ANY | _SIDD_MOST_SIGNIFICANT | \ + _SIDD_MASKED_NEGATIVE_POLARITY) +#define IMM_UWORD_ANY_LEAST_NEGATIVE \ + (_SIDD_UWORD_OPS | _SIDD_CMP_EQUAL_ANY | _SIDD_LEAST_SIGNIFICANT | \ + _SIDD_NEGATIVE_POLARITY) +#define IMM_UWORD_ANY_LEAST_MASKED_NEGATIVE \ + (_SIDD_UWORD_OPS | _SIDD_CMP_EQUAL_ANY | _SIDD_LEAST_SIGNIFICANT | \ + _SIDD_MASKED_NEGATIVE_POLARITY) +#define IMM_UWORD_ORDERED_LEAST \ + (_SIDD_UWORD_OPS | _SIDD_CMP_EQUAL_ORDERED | _SIDD_LEAST_SIGNIFICANT) +#define IMM_UWORD_ORDERED_LEAST_NEGATIVE \ + (_SIDD_UWORD_OPS | _SIDD_CMP_EQUAL_ORDERED | _SIDD_LEAST_SIGNIFICANT | \ + _SIDD_NEGATIVE_POLARITY) +#define IMM_UWORD_ORDERED_LEAST_MASKED_NEGATIVE \ + (_SIDD_UWORD_OPS | _SIDD_CMP_EQUAL_ORDERED | _SIDD_LEAST_SIGNIFICANT | \ + _SIDD_MASKED_NEGATIVE_POLARITY) +#define IMM_UWORD_ORDERED_MOST \ + (_SIDD_UWORD_OPS | _SIDD_CMP_EQUAL_ORDERED | _SIDD_MOST_SIGNIFICANT) +#define IMM_UWORD_ORDERED_MOST_NEGATIVE \ + (_SIDD_UWORD_OPS | _SIDD_CMP_EQUAL_ORDERED | _SIDD_MOST_SIGNIFICANT | \ + _SIDD_NEGATIVE_POLARITY) +#define IMM_UWORD_ORDERED_MOST_MASKED_NEGATIVE \ + (_SIDD_UWORD_OPS | _SIDD_CMP_EQUAL_ORDERED | _SIDD_MOST_SIGNIFICANT | \ + _SIDD_MASKED_NEGATIVE_POLARITY) + +#define IMM_SWORD_RANGES_LEAST \ + (_SIDD_SWORD_OPS | _SIDD_CMP_RANGES | _SIDD_LEAST_SIGNIFICANT) +#define IMM_SWORD_RANGES_MOST \ + (_SIDD_SWORD_OPS | _SIDD_CMP_RANGES | _SIDD_MOST_SIGNIFICANT) +#define IMM_SWORD_RANGES_LEAST_NEGATIVE \ + (_SIDD_SWORD_OPS | _SIDD_CMP_RANGES | _SIDD_LEAST_SIGNIFICANT | \ + _SIDD_NEGATIVE_POLARITY) +#define IMM_SWORD_RANGES_LEAST_MASKED_NEGATIVE \ + (_SIDD_SWORD_OPS | _SIDD_CMP_RANGES | _SIDD_LEAST_SIGNIFICANT | \ + _SIDD_MASKED_NEGATIVE_POLARITY) +#define IMM_SWORD_RANGES_MOST_MASKED_NEGATIVE \ + (_SIDD_SWORD_OPS | _SIDD_CMP_RANGES | _SIDD_MOST_SIGNIFICANT | \ + _SIDD_MASKED_NEGATIVE_POLARITY) +#define IMM_SWORD_EACH_LEAST \ + (_SIDD_SWORD_OPS | _SIDD_CMP_EQUAL_EACH | _SIDD_LEAST_SIGNIFICANT) +#define IMM_SWORD_EACH_MOST \ + (_SIDD_SWORD_OPS | _SIDD_CMP_EQUAL_EACH | _SIDD_MOST_SIGNIFICANT) +#define IMM_SWORD_EACH_LEAST_NEGATIVE \ + (_SIDD_SWORD_OPS | _SIDD_CMP_EQUAL_EACH | _SIDD_LEAST_SIGNIFICANT | \ + _SIDD_NEGATIVE_POLARITY) +#define IMM_SWORD_EACH_LEAST_MASKED_NEGATIVE \ + (_SIDD_SWORD_OPS | _SIDD_CMP_EQUAL_EACH | _SIDD_LEAST_SIGNIFICANT | \ + _SIDD_MASKED_NEGATIVE_POLARITY) +#define IMM_SWORD_EACH_MOST_NEGATIVE \ + (_SIDD_SWORD_OPS | _SIDD_CMP_EQUAL_EACH | _SIDD_MOST_SIGNIFICANT | \ + _SIDD_NEGATIVE_POLARITY) +#define IMM_SWORD_EACH_MOST_MASKED_NEGATIVE \ + (_SIDD_SWORD_OPS | _SIDD_CMP_EQUAL_EACH | _SIDD_MOST_SIGNIFICANT | \ + _SIDD_MASKED_NEGATIVE_POLARITY) +#define IMM_SWORD_ANY_LEAST \ + (_SIDD_SWORD_OPS | _SIDD_CMP_EQUAL_ANY | _SIDD_LEAST_SIGNIFICANT) +#define IMM_SWORD_ANY_LEAST_NEGATIVE \ + (_SIDD_SWORD_OPS | _SIDD_CMP_EQUAL_ANY | _SIDD_LEAST_SIGNIFICANT) +#define IMM_SWORD_ANY_LEAST_MASKED_NEGATIVE \ + (_SIDD_SWORD_OPS | _SIDD_CMP_EQUAL_ANY | _SIDD_LEAST_SIGNIFICANT | \ + _SIDD_MASKED_NEGATIVE_POLARITY) +#define IMM_SWORD_ANY_MOST \ + (_SIDD_SWORD_OPS | _SIDD_CMP_EQUAL_ANY | _SIDD_MOST_SIGNIFICANT) +#define IMM_SWORD_ANY_MOST_NEGATIVE \ + (_SIDD_SWORD_OPS | _SIDD_CMP_EQUAL_ANY | _SIDD_MOST_SIGNIFICANT | \ + _SIDD_NEGATIVE_POLARITY) +#define IMM_SWORD_ANY_MOST_MASKED_NEGATIVE \ + (_SIDD_SWORD_OPS | _SIDD_CMP_EQUAL_ANY | _SIDD_MOST_SIGNIFICANT | \ + _SIDD_MASKED_NEGATIVE_POLARITY) +#define IMM_SWORD_ANY_MOST_MASKED_NEGATIVE \ + (_SIDD_SWORD_OPS | _SIDD_CMP_EQUAL_ANY | _SIDD_MOST_SIGNIFICANT | \ + _SIDD_MASKED_NEGATIVE_POLARITY) +#define IMM_SWORD_ORDERED_LEAST \ + (_SIDD_SWORD_OPS | _SIDD_CMP_EQUAL_ORDERED | _SIDD_LEAST_SIGNIFICANT) +#define IMM_SWORD_ORDERED_LEAST_NEGATIVE \ + (_SIDD_SWORD_OPS | _SIDD_CMP_EQUAL_ORDERED | _SIDD_LEAST_SIGNIFICANT | \ + _SIDD_NEGATIVE_POLARITY) +#define IMM_SWORD_ORDERED_LEAST_MASKED_NEGATIVE \ + (_SIDD_SWORD_OPS | _SIDD_CMP_EQUAL_ORDERED | _SIDD_LEAST_SIGNIFICANT | \ + _SIDD_MASKED_NEGATIVE_POLARITY) +#define IMM_SWORD_ORDERED_MOST \ + (_SIDD_SWORD_OPS | _SIDD_CMP_EQUAL_ORDERED | _SIDD_MOST_SIGNIFICANT) +#define IMM_SWORD_ORDERED_MOST_MASKED_NEGATIVE \ + (_SIDD_SWORD_OPS | _SIDD_CMP_EQUAL_ORDERED | _SIDD_MOST_SIGNIFICANT | \ + _SIDD_MASKED_NEGATIVE_POLARITY) + +typedef struct { + uint8_t a[16], b[16]; + int la, lb; + const int imm8; + int expect; +} test_mm_cmpestri_ubyte_data_t; +typedef struct { + int8_t a[16], b[16]; + int la, lb; + const int imm8; + int expect; +} test_mm_cmpestri_sbyte_data_t; +typedef struct { + uint16_t a[8], b[8]; + int la, lb; + const int imm8; + int expect; +} test_mm_cmpestri_uword_data_t; +typedef struct { + int16_t a[8], b[8]; + int la, lb; + const int imm8; + int expect; +} test_mm_cmpestri_sword_data_t; + +#define TEST_MM_CMPESTRA_UBYTE_DATA_LEN 3 +static test_mm_cmpestri_ubyte_data_t + test_mm_cmpestra_ubyte_data[TEST_MM_CMPESTRA_UBYTE_DATA_LEN] = { + {{20, 10, 33, 56, 78}, + {20, 10, 34, 98, 127, 20, 10, 32, 20, 10, 32, 11, 3, 20, 10, 31}, + 3, + 17, + IMM_UBYTE_ORDERED_MOST, + 1}, + {{20, 127, 0, 45, 77, 1, 34, 43, 109}, + {2, 127, 0, 54, 6, 43, 12, 110, 100}, + 9, + 20, + IMM_UBYTE_EACH_LEAST_NEGATIVE, + 0}, + {{22, 33, 90, 1}, + {22, 33, 90, 1, 1, 5, 4, 7, 98, 34, 1, 12, 13, 14, 15, 16}, + 4, + 11, + IMM_UBYTE_ANY_LEAST_MASKED_NEGATIVE, + 0}, +}; + +#define TEST_MM_CMPESTRA_SBYTE_DATA_LEN 3 +static test_mm_cmpestri_sbyte_data_t + test_mm_cmpestra_sbyte_data[TEST_MM_CMPESTRA_SBYTE_DATA_LEN] = { + {{45, -94, 38, -11, 84, -123, -43, -49, 25, -55, -121, -6, 57, 108, -55, + 69}, + {-26, -61, -21, -96, 48, -112, 95, -56, 29, -55, -121, -6, 57, 108, + -55, 69}, + 23, + 28, + IMM_SBYTE_RANGES_LEAST, + 0}, + {{-12, 8}, + {-12, 7, -12, 8, -13, 45, -12, 8}, + 2, + 8, + IMM_SBYTE_ORDERED_MOST_NEGATIVE, + 0}, + {{-100, -127, 56, 78, 21, -1, 9, 127, 45}, + {100, 126, 30, 65, 87, 54, 80, 81, -98, -101, 90, 1, 5, 60, -77, -65}, + 10, + 20, + IMM_SBYTE_ANY_LEAST, + 1}, +}; + +#define TEST_MM_CMPESTRA_UWORD_DATA_LEN 3 +static test_mm_cmpestri_uword_data_t + test_mm_cmpestra_uword_data[TEST_MM_CMPESTRA_UWORD_DATA_LEN] = { + {{10000, 20000, 30000, 40000, 50000}, + {40001, 50002, 10000, 20000, 30000, 40000, 50000}, + 5, + 10, + IMM_UWORD_ORDERED_LEAST, + 0}, + {{1001, 9487, 9487, 8000}, + {1001, 1002, 1003, 8709, 100, 1, 1000, 999}, + 4, + 6, + IMM_UWORD_RANGES_LEAST_MASKED_NEGATIVE, + 0}, + {{12, 21, 0, 45, 88, 10001, 10002, 65535}, + {22, 13, 3, 54, 888, 10003, 10000, 65530}, + 13, + 13, + IMM_UWORD_EACH_MOST, + 1}, +}; + +#define TEST_MM_CMPESTRA_SWORD_DATA_LEN 3 +static test_mm_cmpestri_sword_data_t + test_mm_cmpestra_sword_data[TEST_MM_CMPESTRA_SWORD_DATA_LEN] = { + {{-100, -80, -5, -1, 10, 1000}, + {-100, -99, -80, -2, 11, 789, 889, 999}, + 6, + 12, + IMM_SWORD_RANGES_LEAST_NEGATIVE, + 1}, + {{-30000, -90, -32766, 1200, 5}, + {-30001, 21, 10000, 1201, 888}, + 5, + 5, + IMM_SWORD_EACH_MOST, + 0}, + {{2001, -1928}, + {2000, 1928, 3000, 2289, 4000, 111, 2002, -1928}, + 2, + 9, + IMM_SWORD_ANY_LEAST_MASKED_NEGATIVE, + 0}, +}; + + +#define MM_CMPESTRA_UBYTE_TEST_CASES(_, ...) \ + _(UBYTE_ORDERED_MOST, __VA_ARGS__) \ + _(UBYTE_EACH_LEAST_NEGATIVE, __VA_ARGS__) \ + _(UBYTE_ANY_LEAST_MASKED_NEGATIVE, __VA_ARGS__) + +#define MM_CMPESTRA_SBYTE_TEST_CASES(_, ...) \ + _(SBYTE_RANGES_LEAST, __VA_ARGS__) \ + _(SBYTE_ORDERED_MOST_NEGATIVE, __VA_ARGS__) \ + _(SBYTE_ANY_LEAST, __VA_ARGS__) + +#define MM_CMPESTRA_UWORD_TEST_CASES(_, ...) \ + _(UWORD_ORDERED_LEAST, __VA_ARGS__) \ + _(UWORD_RANGES_LEAST_MASKED_NEGATIVE, __VA_ARGS__) \ + _(UWORD_EACH_MOST, __VA_ARGS__) + +#define MM_CMPESTRA_SWORD_TEST_CASES(_, ...) \ + _(SWORD_RANGES_LEAST_NEGATIVE, __VA_ARGS__) \ + _(SWORD_EACH_MOST, __VA_ARGS__) \ + _(SWORD_ANY_LEAST_MASKED_NEGATIVE, __VA_ARGS__) + +#define GENERATE_MM_CMPESTRA_TEST_CASES \ + ENUM_MM_CMPESTRX_TEST_CASES(UBYTE, ubyte, uint8_t, cmpestra, CMPESTRA, \ + IS_CMPESTRI) \ + ENUM_MM_CMPESTRX_TEST_CASES(SBYTE, sbyte, int8_t, cmpestra, CMPESTRA, \ + IS_CMPESTRI) \ + ENUM_MM_CMPESTRX_TEST_CASES(UWORD, uword, uint16_t, cmpestra, CMPESTRA, \ + IS_CMPESTRI) \ + ENUM_MM_CMPESTRX_TEST_CASES(SWORD, sword, int16_t, cmpestra, CMPESTRA, \ + IS_CMPESTRI) + +result_t test_mm_cmpestra(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + GENERATE_MM_CMPESTRA_TEST_CASES + return TEST_SUCCESS; +} + +#define TEST_MM_CMPESTRC_UBYTE_DATA_LEN 4 +static test_mm_cmpestri_ubyte_data_t + test_mm_cmpestrc_ubyte_data[TEST_MM_CMPESTRC_UBYTE_DATA_LEN] = { + {{66, 3, 3, 65}, + {66, 3, 3, 65, 67, 2, 2, 67, 56, 11, 1, 23, 66, 3, 3, 65}, + 4, + 16, + IMM_UBYTE_ORDERED_MOST_MASKED_NEGATIVE, + 1}, + {{1, 11, 2, 22, 3, 33, 4, 44, 5, 55, 6, 66, 7, 77, 8, 88}, + {2, 22, 3, 23, 5, 66, 255, 43, 6, 66, 7, 77, 9, 99, 10, 100}, + 16, + 16, + IMM_UBYTE_EACH_MOST, + 0}, + {{36, 72, 108}, {12, 24, 48, 96, 77, 84}, 3, 6, IMM_UBYTE_ANY_LEAST, 0}, + {{12, 24, 36, 48}, + {11, 49, 50, 56, 77, 15, 10}, + 4, + 7, + IMM_UBYTE_RANGES_LEAST_NEGATIVE, + 1}, +}; + +#define TEST_MM_CMPESTRC_SBYTE_DATA_LEN 4 +static test_mm_cmpestri_sbyte_data_t + test_mm_cmpestrc_sbyte_data[TEST_MM_CMPESTRC_SBYTE_DATA_LEN] = { + {{-22, -30, 40, 45}, + {-31, -32, 46, 77}, + 4, + 4, + IMM_SBYTE_RANGES_MOST, + 0}, + {{-12, -7, 33, 100, 12}, + {-12, -7, 33, 100, 11, -11, -7, 33, 100, 12}, + 5, + 10, + IMM_SBYTE_ORDERED_MOST_MASKED_NEGATIVE, + 1}, + {{1, 2, 3, 4, 5, -1, -2, -3, -4, -5}, + {1, 2, 3, 4, 5, -1, -2, -3, -5}, + 10, + 9, + IMM_SBYTE_ANY_MOST_MASKED_NEGATIVE, + 0}, + {{101, -128, -88, -76, 89, 109, 44, -12, -45, -100, 22, 1, 91}, + {102, -120, 88, -76, 98, 107, 33, 12, 45, -100, 22, 10, 19}, + 13, + 13, + IMM_SBYTE_EACH_MOST, + 1}, +}; + +#define TEST_MM_CMPESTRC_UWORD_DATA_LEN 4 +static test_mm_cmpestri_uword_data_t + test_mm_cmpestrc_uword_data[TEST_MM_CMPESTRC_UWORD_DATA_LEN] = { + {{1000, 2000, 4000, 8000, 16000}, + {40001, 1000, 2000, 40000, 8000, 16000}, + 5, + 6, + IMM_UWORD_ORDERED_LEAST_NEGATIVE, + 1}, + {{1111, 1212}, + {1110, 1213, 1110, 1214, 1100, 1220, 1000, 1233}, + 2, + 8, + IMM_UWORD_RANGES_MOST, + 0}, + {{10000, 9000, 8000, 7000, 6000, 5000, 4000, 3000}, + {9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000}, + 13, + 13, + IMM_UWORD_EACH_LEAST_MASKED_NEGATIVE, + 1}, + {{12}, {11, 13, 14, 15, 10}, 1, 5, IMM_UWORD_ANY_MOST, 0}, +}; + +#define TEST_MM_CMPESTRC_SWORD_DATA_LEN 4 +static test_mm_cmpestri_sword_data_t + test_mm_cmpestrc_sword_data[TEST_MM_CMPESTRC_SWORD_DATA_LEN] = { + {{-100, -90, -80, -66, 1}, + {-101, -102, -1000, 2, 67, 10000}, + 5, + 6, + IMM_SWORD_RANGES_LEAST, + 0}, + {{12, 13, -700, 888, 44, -987, 19}, + {12, 13, -700, 888, 44, -987, 19}, + 7, + 7, + IMM_SWORD_EACH_MOST_NEGATIVE, + 0}, + {{2001, -1992, 1995, 10007, 2000}, + {2000, 1928, 3000, 9822, 5000, 1111, 2002, -1928}, + 5, + 9, + IMM_SWORD_ANY_LEAST_NEGATIVE, + 1}, + {{13, -26, 39}, + {12, -25, 33, 13, -26, 39}, + 3, + 6, + IMM_SWORD_ORDERED_MOST, + 1}, +}; + + +#define MM_CMPESTRC_UBYTE_TEST_CASES(_, ...) \ + _(UBYTE_ORDERED_MOST_MASKED_NEGATIVE, __VA_ARGS__) \ + _(UBYTE_EACH_MOST, __VA_ARGS__) \ + _(UBYTE_ANY_LEAST, __VA_ARGS__) \ + _(UBYTE_RANGES_LEAST_NEGATIVE, __VA_ARGS__) + +#define MM_CMPESTRC_SBYTE_TEST_CASES(_, ...) \ + _(SBYTE_RANGES_MOST, __VA_ARGS__) \ + _(SBYTE_ORDERED_MOST_MASKED_NEGATIVE, __VA_ARGS__) \ + _(SBYTE_ANY_MOST_MASKED_NEGATIVE, __VA_ARGS__) \ + _(SBYTE_EACH_MOST, __VA_ARGS__) + +#define MM_CMPESTRC_UWORD_TEST_CASES(_, ...) \ + _(UWORD_ORDERED_LEAST_NEGATIVE, __VA_ARGS__) \ + _(UWORD_RANGES_MOST, __VA_ARGS__) \ + _(UWORD_EACH_LEAST_MASKED_NEGATIVE, __VA_ARGS__) \ + _(UWORD_ANY_MOST, __VA_ARGS__) + +#define MM_CMPESTRC_SWORD_TEST_CASES(_, ...) \ + _(SWORD_RANGES_LEAST, __VA_ARGS__) \ + _(SWORD_EACH_MOST_NEGATIVE, __VA_ARGS__) \ + _(SWORD_ANY_LEAST_NEGATIVE, __VA_ARGS__) \ + _(SWORD_ORDERED_MOST, __VA_ARGS__) + +#define GENERATE_MM_CMPESTRC_TEST_CASES \ + ENUM_MM_CMPESTRX_TEST_CASES(UBYTE, ubyte, uint8_t, cmpestrc, CMPESTRC, \ + IS_CMPESTRI) \ + ENUM_MM_CMPESTRX_TEST_CASES(SBYTE, sbyte, int8_t, cmpestrc, CMPESTRC, \ + IS_CMPESTRI) \ + ENUM_MM_CMPESTRX_TEST_CASES(UWORD, uword, uint16_t, cmpestrc, CMPESTRC, \ + IS_CMPESTRI) \ + ENUM_MM_CMPESTRX_TEST_CASES(SWORD, sword, int16_t, cmpestrc, CMPESTRC, \ + IS_CMPESTRI) + +result_t test_mm_cmpestrc(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + GENERATE_MM_CMPESTRC_TEST_CASES + return TEST_SUCCESS; +} + +#define TEST_MM_CMPESTRI_UBYTE_DATA_LEN 4 +static test_mm_cmpestri_ubyte_data_t + test_mm_cmpestri_ubyte_data[TEST_MM_CMPESTRI_UBYTE_DATA_LEN] = { + {{23, 89, 255, 0, 90, 45, 67, 12, 1, 56, 200, 141, 3, 4, 2, 76}, + {32, 89, 255, 128, 9, 54, 78, 12, 1, 56, 100, 41, 42, 68, 32, 5}, + 16, + 16, + IMM_UBYTE_ANY_LEAST_NEGATIVE, + 0}, + {{0, 83, 112, 12, 221, 54, 76, 83, 112, 10}, + {0, 83, 112, 83, 122, 45, 67, 83, 112, 9}, + 10, + 10, + IMM_UBYTE_EACH_LEAST, + 0}, + {{34, 78, 12}, + {56, 100, 11, 67, 35, 79, 67, 255, 0, 43, 121, 234, 225, 91, 31, 23}, + 3, + 16, + IMM_UBYTE_RANGES_LEAST, + 0}, + {{13, 10, 9, 32, 105, 103, 110, 111, 114, 101, 32, 116, 104, 105, 115, + 32}, + {83, 112, 108, 105, 116, 32, 13, 10, 9, 32, 108, 105, 110, 101, 32, + 32}, + 3, + 15, + IMM_UBYTE_ORDERED_LEAST, + 6}, +}; + +#define TEST_MM_CMPESTRI_SBYTE_DATA_LEN 4 +static test_mm_cmpestri_sbyte_data_t + test_mm_cmpestri_sbyte_data[TEST_MM_CMPESTRI_SBYTE_DATA_LEN] = { + {{-12, -1, 90, -128, 43, 6, 87, 127}, + {-1, -1, 9, -127, 126, 6, 78, 23}, + 8, + 8, + IMM_SBYTE_EACH_LEAST, + 1}, + {{34, 67, -90, 33, 123, -100, 43, 56}, + {43, 76, -90, 44, 20, -100, 54, 56}, + 8, + 8, + IMM_SBYTE_ANY_LEAST, + 0}, + {{-43, 67, 89}, + {-44, -54, -30, -128, 127, 34, 10, -62}, + 3, + 7, + IMM_SBYTE_RANGES_LEAST, + 2}, + {{90, 34, -32, 0, 5}, + {19, 34, -32, 90, 34, -32, 45, 0, 5, 90, 34, -32, 0, 5, 19, 87}, + 3, + 16, + IMM_SBYTE_ORDERED_LEAST, + 3}, +}; + +#define TEST_MM_CMPESTRI_UWORD_DATA_LEN 4 +static test_mm_cmpestri_uword_data_t + test_mm_cmpestri_uword_data[TEST_MM_CMPESTRI_UWORD_DATA_LEN] = { + {{45, 65535, 0, 87, 1000, 10, 45, 26}, + {65534, 0, 0, 78, 1000, 10, 32, 26}, + 8, + 8, + IMM_UWORD_EACH_LEAST, + 2}, + {{45, 23, 10, 54, 88, 10000, 20000, 100}, + {544, 10000, 20000, 1, 0, 2897, 2330, 2892}, + 8, + 8, + IMM_UWORD_ANY_LEAST, + 1}, + {{10000, 15000}, + {12, 45, 67, 899, 10001, 32, 15001, 15000}, + 2, + 8, + IMM_UWORD_RANGES_LEAST, + 4}, + {{0, 1, 54, 89, 100}, + {101, 102, 65535, 0, 1, 54, 89, 100}, + 5, + 8, + IMM_UWORD_ORDERED_LEAST, + 3}, +}; + +#define TEST_MM_CMPESTRI_SWORD_DATA_LEN 4 +static test_mm_cmpestri_sword_data_t + test_mm_cmpestri_sword_data[TEST_MM_CMPESTRI_SWORD_DATA_LEN] = { + {{13, 6, 5, 4, 3, 2, 1, 3}, + {-7, 16, 5, 4, -1, 6, 1, 3}, + 10, + 10, + IMM_SWORD_RANGES_MOST, + 7}, + {{13, 6, 5, 4, 3, 2, 1, 3}, + {-7, 16, 5, 4, -1, 6, 1, 3}, + 8, + 8, + IMM_SWORD_EACH_LEAST, + 2}, + {{-32768, 90, 455, 67, -1000, -10000, 21, 12}, + {-7, 61, 455, 67, -32768, 32767, 11, 888}, + 8, + 8, + IMM_SWORD_ANY_LEAST, + 2}, + {{-12, -56}, + {-7, 16, 555, 554, -12, 61, -16, 3}, + 2, + 8, + IMM_SWORD_ORDERED_LEAST, + 8}, +}; + +#define MM_CMPESTRI_UBYTE_TEST_CASES(_, ...) \ + _(UBYTE_ANY_LEAST_NEGATIVE, __VA_ARGS__) \ + _(UBYTE_EACH_LEAST, __VA_ARGS__) \ + _(UBYTE_RANGES_LEAST, __VA_ARGS__) \ + _(UBYTE_ORDERED_LEAST, __VA_ARGS__) + +#define MM_CMPESTRI_SBYTE_TEST_CASES(_, ...) \ + _(SBYTE_EACH_LEAST, __VA_ARGS__) \ + _(SBYTE_ANY_LEAST, __VA_ARGS__) \ + _(SBYTE_RANGES_LEAST, __VA_ARGS__) \ + _(SBYTE_ORDERED_LEAST, __VA_ARGS__) + +#define MM_CMPESTRI_UWORD_TEST_CASES(_, ...) \ + _(UWORD_EACH_LEAST, __VA_ARGS__) \ + _(UWORD_ANY_LEAST, __VA_ARGS__) \ + _(UWORD_RANGES_LEAST, __VA_ARGS__) \ + _(UWORD_ORDERED_LEAST, __VA_ARGS__) + +#define MM_CMPESTRI_SWORD_TEST_CASES(_, ...) \ + _(SWORD_RANGES_MOST, __VA_ARGS__) \ + _(SWORD_EACH_LEAST, __VA_ARGS__) \ + _(SWORD_ANY_LEAST, __VA_ARGS__) \ + _(SWORD_ORDERED_LEAST, __VA_ARGS__) + +#define GENERATE_MM_CMPESTRI_TEST_CASES \ + ENUM_MM_CMPESTRX_TEST_CASES(UBYTE, ubyte, uint8_t, cmpestri, CMPESTRI, \ + IS_CMPESTRI) \ + ENUM_MM_CMPESTRX_TEST_CASES(SBYTE, sbyte, int8_t, cmpestri, CMPESTRI, \ + IS_CMPESTRI) \ + ENUM_MM_CMPESTRX_TEST_CASES(UWORD, uword, uint16_t, cmpestri, CMPESTRI, \ + IS_CMPESTRI) \ + ENUM_MM_CMPESTRX_TEST_CASES(SWORD, sword, int16_t, cmpestri, CMPESTRI, \ + IS_CMPESTRI) + +result_t test_mm_cmpestri(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + GENERATE_MM_CMPESTRI_TEST_CASES + return TEST_SUCCESS; +} + +#define IS_CMPESTRM 0 + +typedef struct { + uint8_t a[16], b[16]; + int la, lb; + const int imm8; + uint8_t expect[16]; +} test_mm_cmpestrm_ubyte_data_t; +typedef struct { + int8_t a[16], b[16]; + int la, lb; + const int imm8; + int8_t expect[16]; +} test_mm_cmpestrm_sbyte_data_t; +typedef struct { + uint16_t a[8], b[8]; + int la, lb; + const int imm8; + uint16_t expect[8]; +} test_mm_cmpestrm_uword_data_t; +typedef struct { + int16_t a[8], b[8]; + int la, lb; + const int imm8; + int16_t expect[8]; +} test_mm_cmpestrm_sword_data_t; + +#define IMM_UBYTE_EACH_UNIT \ + (_SIDD_UBYTE_OPS | _SIDD_CMP_EQUAL_EACH | _SIDD_UNIT_MASK) +#define IMM_UBYTE_EACH_UNIT_NEGATIVE \ + (_SIDD_UBYTE_OPS | _SIDD_CMP_EQUAL_EACH | _SIDD_UNIT_MASK | \ + _SIDD_NEGATIVE_POLARITY) +#define IMM_UBYTE_ANY_UNIT \ + (_SIDD_UBYTE_OPS | _SIDD_CMP_EQUAL_ANY | _SIDD_UNIT_MASK) +#define IMM_UBYTE_ANY_BIT \ + (_SIDD_UBYTE_OPS | _SIDD_CMP_EQUAL_ANY | _SIDD_BIT_MASK) +#define IMM_UBYTE_RANGES_UNIT \ + (_SIDD_UBYTE_OPS | _SIDD_CMP_RANGES | _SIDD_UNIT_MASK) +#define IMM_UBYTE_ORDERED_UNIT \ + (_SIDD_UBYTE_OPS | _SIDD_CMP_EQUAL_ORDERED | _SIDD_UNIT_MASK) + +#define IMM_SBYTE_EACH_UNIT \ + (_SIDD_SBYTE_OPS | _SIDD_CMP_EQUAL_EACH | _SIDD_UNIT_MASK) +#define IMM_SBYTE_EACH_BIT_MASKED_NEGATIVE \ + (_SIDD_SBYTE_OPS | _SIDD_CMP_EQUAL_EACH | _SIDD_BIT_MASK | \ + _SIDD_MASKED_NEGATIVE_POLARITY) +#define IMM_SBYTE_ANY_UNIT \ + (_SIDD_SBYTE_OPS | _SIDD_CMP_EQUAL_ANY | _SIDD_UNIT_MASK) +#define IMM_SBYTE_ANY_UNIT_MASKED_NEGATIVE \ + (_SIDD_SBYTE_OPS | _SIDD_CMP_EQUAL_ANY | _SIDD_UNIT_MASK | \ + _SIDD_MASKED_NEGATIVE_POLARITY) +#define IMM_SBYTE_RANGES_UNIT \ + (_SIDD_SBYTE_OPS | _SIDD_CMP_RANGES | _SIDD_UNIT_MASK) +#define IMM_SBYTE_ORDERED_UNIT \ + (_SIDD_SBYTE_OPS | _SIDD_CMP_EQUAL_ORDERED | _SIDD_UNIT_MASK) + +#define IMM_UWORD_RANGES_UNIT \ + (_SIDD_UWORD_OPS | _SIDD_CMP_RANGES | _SIDD_UNIT_MASK) +#define IMM_UWORD_EACH_UNIT \ + (_SIDD_UWORD_OPS | _SIDD_CMP_EQUAL_EACH | _SIDD_UNIT_MASK) +#define IMM_UWORD_ANY_UNIT \ + (_SIDD_UWORD_OPS | _SIDD_CMP_EQUAL_ANY | _SIDD_UNIT_MASK) +#define IMM_UWORD_ANY_BIT \ + (_SIDD_UWORD_OPS | _SIDD_CMP_EQUAL_ANY | _SIDD_BIT_MASK) +#define IMM_UWORD_ORDERED_UNIT \ + (_SIDD_UWORD_OPS | _SIDD_CMP_EQUAL_ORDERED | _SIDD_UNIT_MASK) +#define IMM_UWORD_ORDERED_UNIT_NEGATIVE \ + (_SIDD_UWORD_OPS | _SIDD_CMP_EQUAL_ORDERED | _SIDD_UNIT_MASK | \ + _SIDD_NEGATIVE_POLARITY) + +#define IMM_SWORD_RANGES_UNIT \ + (_SIDD_SWORD_OPS | _SIDD_CMP_RANGES | _SIDD_UNIT_MASK) +#define IMM_SWORD_RANGES_BIT \ + (_SIDD_SWORD_OPS | _SIDD_CMP_RANGES | _SIDD_BIT_MASK) +#define IMM_SWORD_EACH_UNIT \ + (_SIDD_SWORD_OPS | _SIDD_CMP_EQUAL_EACH | _SIDD_UNIT_MASK) +#define IMM_SWORD_ANY_UNIT \ + (_SIDD_SWORD_OPS | _SIDD_CMP_EQUAL_ANY | _SIDD_UNIT_MASK) +#define IMM_SWORD_ORDERED_UNIT \ + (_SIDD_SWORD_OPS | _SIDD_CMP_EQUAL_ORDERED | _SIDD_UNIT_MASK) + +#define TEST_MM_CMPESTRM_UBYTE_DATA_LEN 4 +static test_mm_cmpestrm_ubyte_data_t + test_mm_cmpestrm_ubyte_data[TEST_MM_CMPESTRM_UBYTE_DATA_LEN] = { + {{85, 115, 101, 70, 108, 97, 116, 65, 115, 115, 101, 109, 98, 108, 101, + 114}, + {85, 115, 105, 110, 103, 65, 110, 65, 115, 115, 101, 109, 98, 108, 101, + 114}, + 16, + 16, + IMM_UBYTE_EACH_UNIT_NEGATIVE, + {0, 0, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, + {{97, 101, 105, 111, 117, 121}, + {89, 111, 117, 32, 68, 114, 105, 118, 101, 32, 77, 101, 32, 77, 97, + 100}, + 6, + 16, + IMM_UBYTE_ANY_UNIT, + {0, 255, 255, 0, 0, 0, 255, 0, 255, 0, 0, 255, 0, 0, 255, 0}}, + {{97, 122, 65, 90}, + {73, 39, 109, 32, 104, 101, 114, 101, 32, 98, 101, 99, 97, 117, 115, + 101}, + 4, + 16, + IMM_UBYTE_RANGES_UNIT, + {255, 0, 255, 0, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, + 255}}, + {{87, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + {87, 104, 101, 110, 87, 101, 87, 105, 108, 108, 66, 101, 87, 101, 100, + 33}, + 2, + 16, + IMM_UBYTE_ORDERED_UNIT, + {0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0}}, +}; + +#define TEST_MM_CMPESTRM_SBYTE_DATA_LEN 4 +static test_mm_cmpestrm_sbyte_data_t + test_mm_cmpestrm_sbyte_data[TEST_MM_CMPESTRM_SBYTE_DATA_LEN] = { + {{-127, -127, 34, 88, 0, 1, -1, 78, 90, 9, 23, 34, 3, -128, 127, 0}, + {0, -127, 34, 88, 12, 43, -128, 78, 8, 9, 43, 32, 7, 126, 115, 0}, + 16, + 16, + IMM_SBYTE_EACH_UNIT, + {0, -1, -1, -1, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, -1}}, + {{0, 32, 7, 115, -128, 44, 33}, + {0, -127, 34, 88, 12, 43, -128, 78, 8, 9, 43, 32, 7, 126, 115, 0}, + 7, + 10, + IMM_SBYTE_ANY_UNIT_MASKED_NEGATIVE, + {0, -1, -1, -1, -1, -1, 0, -1, -1, -1, 0, 0, 0, 0, 0, 0}}, + {{-128, -80, -90, 10, 33}, + {-126, -93, -80, -77, -56, -23, -10, -1, 0, 3, 10, 12, 13, 33, 34, 56}, + 5, + 16, + IMM_SBYTE_RANGES_UNIT, + {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0}}, + {{104, 9, -12}, + {0, 0, 87, 104, 9, -12, 89, -117, 9, 10, -11, 87, -114, 104, 9, -61}, + 3, + 16, + IMM_SBYTE_ORDERED_UNIT, + {0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, +}; + +#define TEST_MM_CMPESTRM_UWORD_DATA_LEN 4 +static test_mm_cmpestrm_uword_data_t + test_mm_cmpestrm_uword_data[TEST_MM_CMPESTRM_UWORD_DATA_LEN] = { + {{1, 5, 13, 19, 22}, + {12, 60000, 5, 1, 100, 1000, 34, 20}, + 5, + 8, + IMM_UWORD_RANGES_UNIT, + {0, 0, 65535, 65535, 0, 0, 0, 0}}, + {{65535, 12, 7, 9876, 3456, 12345, 10, 98}, + {65535, 0, 10, 9876, 3456, 0, 13, 32}, + 8, + 8, + IMM_UWORD_EACH_UNIT, + {65535, 0, 0, 65535, 65535, 0, 0, 0}}, + {{100, 0}, + {12345, 6766, 234, 0, 1, 34, 89, 100}, + 2, + 8, + IMM_UWORD_ANY_BIT, + {136, 0, 0, 0, 0, 0, 0, 0}}, + {{123, 67, 890}, + {123, 67, 890, 8900, 4, 0, 123, 67}, + 3, + 8, + IMM_UWORD_ORDERED_UNIT, + {65535, 0, 0, 0, 0, 0, 65535, 0}}, +}; + +#define TEST_MM_CMPESTRM_SWORD_DATA_LEN 4 +static test_mm_cmpestrm_sword_data_t + test_mm_cmpestrm_sword_data[TEST_MM_CMPESTRM_SWORD_DATA_LEN] = { + {{13, 6, 5, 4, 3, 2, 1, 3}, + {-7, 16, 5, 4, -1, 6, 1, 3}, + 10, + 10, + IMM_SWORD_RANGES_UNIT, + {0, 0, 0, 0, 0, 0, -1, -1}}, + {{85, 115, 101, 70, 108, 97, 116, 65}, + {85, 115, 105, 110, 103, 65, 110, 65}, + 8, + 8, + IMM_SWORD_EACH_UNIT, + {-1, -1, 0, 0, 0, 0, 0, -1}}, + {{-32768, 10000, 10, -13}, + {-32767, 32767, -32768, 90, 0, -13, 23, 45}, + 4, + 8, + IMM_SWORD_ANY_UNIT, + {0, 0, -1, 0, 0, -1, 0, 0}}, + {{10, 20, -10, 60}, + {0, 0, 0, 10, 20, -10, 60, 10}, + 4, + 8, + IMM_SWORD_ORDERED_UNIT, + {0, 0, 0, -1, 0, 0, 0, -1}}, +}; + +#define MM_CMPESTRM_UBYTE_TEST_CASES(_, ...) \ + _(UBYTE_EACH_UNIT_NEGATIVE, __VA_ARGS__) \ + _(UBYTE_ANY_UNIT, __VA_ARGS__) \ + _(UBYTE_RANGES_UNIT, __VA_ARGS__) \ + _(UBYTE_ORDERED_UNIT, __VA_ARGS__) + +#define MM_CMPESTRM_SBYTE_TEST_CASES(_, ...) \ + _(SBYTE_EACH_UNIT, __VA_ARGS__) \ + _(SBYTE_ANY_UNIT_MASKED_NEGATIVE, __VA_ARGS__) \ + _(SBYTE_RANGES_UNIT, __VA_ARGS__) \ + _(SBYTE_ORDERED_UNIT, __VA_ARGS__) + +#define MM_CMPESTRM_UWORD_TEST_CASES(_, ...) \ + _(UWORD_RANGES_UNIT, __VA_ARGS__) \ + _(UWORD_EACH_UNIT, __VA_ARGS__) \ + _(UWORD_ANY_BIT, __VA_ARGS__) \ + _(UWORD_ORDERED_UNIT, __VA_ARGS__) + +#define MM_CMPESTRM_SWORD_TEST_CASES(_, ...) \ + _(SWORD_RANGES_UNIT, __VA_ARGS__) \ + _(SWORD_EACH_UNIT, __VA_ARGS__) \ + _(SWORD_ANY_UNIT, __VA_ARGS__) \ + _(SWORD_ORDERED_UNIT, __VA_ARGS__) + +#define GENERATE_MM_CMPESTRM_TEST_CASES \ + ENUM_MM_CMPESTRX_TEST_CASES(UBYTE, ubyte, uint8_t, cmpestrm, CMPESTRM, \ + IS_CMPESTRM) \ + ENUM_MM_CMPESTRX_TEST_CASES(SBYTE, sbyte, int8_t, cmpestrm, CMPESTRM, \ + IS_CMPESTRM) \ + ENUM_MM_CMPESTRX_TEST_CASES(UWORD, uword, uint16_t, cmpestrm, CMPESTRM, \ + IS_CMPESTRM) \ + ENUM_MM_CMPESTRX_TEST_CASES(SWORD, sword, int16_t, cmpestrm, CMPESTRM, \ + IS_CMPESTRM) + +result_t test_mm_cmpestrm(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + GENERATE_MM_CMPESTRM_TEST_CASES + return TEST_SUCCESS; +} + +#undef IS_CMPESTRM + +#define TEST_MM_CMPESTRO_UBYTE_DATA_LEN 4 +static test_mm_cmpestri_ubyte_data_t + test_mm_cmpestro_ubyte_data[TEST_MM_CMPESTRO_UBYTE_DATA_LEN] = { + {{56, 78, 255, 1, 9}, + {56, 78, 43, 255, 1, 6, 9}, + 5, + 7, + IMM_UBYTE_ANY_MOST_NEGATIVE, + 0}, + {{33, 44, 100, 24, 3, 89, 127, 254, 33, 45, 250}, + {33, 44, 100, 22, 3, 98, 125, 254, 33, 4, 243}, + 11, + 11, + IMM_UBYTE_EACH_LEAST_MASKED_NEGATIVE, + 0}, + {{34, 27, 18, 9}, {}, 4, 16, IMM_UBYTE_RANGES_LEAST_MASKED_NEGATIVE, 1}, + {{3, 18, 216}, + {3, 18, 222, 3, 17, 216, 3, 18, 216}, + 3, + 9, + IMM_UBYTE_ORDERED_LEAST_NEGATIVE, + 1}, +}; + +#define TEST_MM_CMPESTRO_SBYTE_DATA_LEN 4 +static test_mm_cmpestri_sbyte_data_t + test_mm_cmpestro_sbyte_data[TEST_MM_CMPESTRO_SBYTE_DATA_LEN] = { + {{23, -23, 24, -24, 25, -25, 26, -26, 27, -27, 28, -28, -29, 29, 30, + 31}, + {24, -23, 25, -24, 25, -25, 26, -26, 27, -27, 28, -28, -29, 29, 30, + 31}, + 16, + 16, + IMM_SBYTE_EACH_MOST_NEGATIVE, + 1}, + {{34, 33, 67, 72, -90, 127, 33, -128, 123, -90, -100, 34, 43, 15, 56, + 3}, + {3, 14, 15, 65, 90, -127, 100, 100}, + 16, + 8, + IMM_SBYTE_ANY_MOST, + 1}, + {{-13, 0, 34}, + {-12, -11, 1, 12, 56, 57, 3, 2, -17}, + 6, + 9, + IMM_SBYTE_RANGES_MOST_MASKED_NEGATIVE, + 0}, + {{1, 2, 3, 4, 5, 6, 7, 8}, + {-1, -2, -3, -4, -5, -6, -7, -8, 1, 2, 3, 4, 5, 6, 7, 8}, + 8, + 16, + IMM_SBYTE_ORDERED_MOST, + 0}, +}; + +#define TEST_MM_CMPESTRO_UWORD_DATA_LEN 4 +static test_mm_cmpestri_uword_data_t + test_mm_cmpestro_uword_data[TEST_MM_CMPESTRO_UWORD_DATA_LEN] = { + {{0, 0, 0, 4, 4, 4, 8, 8}, + {0, 0, 0, 3, 3, 16653, 3333, 222}, + 8, + 8, + IMM_UWORD_EACH_MOST_MASKED_NEGATIVE, + 0}, + {{12, 666, 9456, 10000, 32, 444, 57, 0}, + {11, 777, 9999, 32767, 23}, + 8, + 5, + IMM_UWORD_ANY_LEAST_MASKED_NEGATIVE, + 1}, + {{23, 32, 45, 67}, + {10022, 23, 32, 44, 66, 67, 12, 22}, + 4, + 8, + IMM_UWORD_RANGES_LEAST_NEGATIVE, + 1}, + {{222, 45, 8989}, + {221, 222, 45, 8989, 222, 45, 8989}, + 3, + 7, + IMM_UWORD_ORDERED_MOST, + 0}, +}; + +#define TEST_MM_CMPESTRO_SWORD_DATA_LEN 4 +static test_mm_cmpestri_sword_data_t + test_mm_cmpestro_sword_data[TEST_MM_CMPESTRO_SWORD_DATA_LEN] = { + {{-9999, -9487, -5000, -4433, -3000, -2999, -2000, -1087}, + {-32767, -30000, -4998}, + 100, + 3, + IMM_SWORD_RANGES_MOST_MASKED_NEGATIVE, + 1}, + {{-30, 89, 7777}, + {-30, 89, 7777}, + 3, + 3, + IMM_SWORD_EACH_MOST_MASKED_NEGATIVE, + 0}, + {{8, 9, -100, 1000, -5000, -32000, 32000, 7}, + {29999, 32001, 5, 555}, + 8, + 4, + IMM_SWORD_ANY_MOST_MASKED_NEGATIVE, + 1}, + {{-1, 56, -888, 9000, -23, 12, -1, -1}, + {-1, 56, -888, 9000, -23, 12, -1, -1}, + 8, + 8, + IMM_SWORD_ORDERED_MOST_MASKED_NEGATIVE, + 0}, +}; + +#define MM_CMPESTRO_UBYTE_TEST_CASES(_, ...) \ + _(UBYTE_ANY_MOST_NEGATIVE, __VA_ARGS__) \ + _(UBYTE_EACH_LEAST_MASKED_NEGATIVE, __VA_ARGS__) \ + _(UBYTE_RANGES_LEAST_MASKED_NEGATIVE, __VA_ARGS__) \ + _(UBYTE_ORDERED_LEAST_NEGATIVE, __VA_ARGS__) + +#define MM_CMPESTRO_SBYTE_TEST_CASES(_, ...) \ + _(SBYTE_EACH_MOST_NEGATIVE, __VA_ARGS__) \ + _(SBYTE_ANY_MOST, __VA_ARGS__) \ + _(SBYTE_RANGES_MOST_MASKED_NEGATIVE, __VA_ARGS__) \ + _(SBYTE_ORDERED_MOST, __VA_ARGS__) + +#define MM_CMPESTRO_UWORD_TEST_CASES(_, ...) \ + _(UWORD_EACH_MOST_MASKED_NEGATIVE, __VA_ARGS__) \ + _(UWORD_ANY_LEAST_MASKED_NEGATIVE, __VA_ARGS__) \ + _(UWORD_RANGES_LEAST_NEGATIVE, __VA_ARGS__) \ + _(UWORD_ORDERED_MOST, __VA_ARGS__) + +#define MM_CMPESTRO_SWORD_TEST_CASES(_, ...) \ + _(SWORD_RANGES_MOST_MASKED_NEGATIVE, __VA_ARGS__) \ + _(SWORD_EACH_MOST_MASKED_NEGATIVE, __VA_ARGS__) \ + _(SWORD_ANY_MOST_MASKED_NEGATIVE, __VA_ARGS__) \ + _(SWORD_ORDERED_MOST_MASKED_NEGATIVE, __VA_ARGS__) + +#define GENERATE_MM_CMPESTRO_TEST_CASES \ + ENUM_MM_CMPESTRX_TEST_CASES(UBYTE, ubyte, uint8_t, cmpestro, CMPESTRO, \ + IS_CMPESTRI) \ + ENUM_MM_CMPESTRX_TEST_CASES(SBYTE, sbyte, int8_t, cmpestro, CMPESTRO, \ + IS_CMPESTRI) \ + ENUM_MM_CMPESTRX_TEST_CASES(UWORD, uword, uint16_t, cmpestro, CMPESTRO, \ + IS_CMPESTRI) \ + ENUM_MM_CMPESTRX_TEST_CASES(SWORD, sword, int16_t, cmpestro, CMPESTRO, \ + IS_CMPESTRI) + +result_t test_mm_cmpestro(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + GENERATE_MM_CMPESTRO_TEST_CASES + return TEST_SUCCESS; +} + +#define TEST_MM_CMPESTRS_UBYTE_DATA_LEN 2 +static test_mm_cmpestri_ubyte_data_t + test_mm_cmpestrs_ubyte_data[TEST_MM_CMPESTRS_UBYTE_DATA_LEN] = { + {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}, + {0}, + 16, + 0, + IMM_UBYTE_ANY_MOST, + 0}, + {{1, 2, 3}, {1, 2, 3}, 3, 8, IMM_UBYTE_RANGES_MOST, 1}, +}; + +#define TEST_MM_CMPESTRS_SBYTE_DATA_LEN 2 +static test_mm_cmpestri_sbyte_data_t + test_mm_cmpestrs_sbyte_data[TEST_MM_CMPESTRS_SBYTE_DATA_LEN] = { + {{-1, -2, -3, -4, -100, 100, 1, 2, 3, 4}, + {-90, -80, 111, 67, 88}, + 10, + 5, + IMM_SBYTE_EACH_LEAST_MASKED_NEGATIVE, + 1}, + {{99, 100, 101, -99, -100, -101, 56, 7}, + {-128, -126, 100, 127}, + 23, + 4, + IMM_SBYTE_ORDERED_LEAST_MASKED_NEGATIVE, + 0}, +}; + +#define TEST_MM_CMPESTRS_UWORD_DATA_LEN 2 +static test_mm_cmpestri_uword_data_t + test_mm_cmpestrs_uword_data[TEST_MM_CMPESTRS_UWORD_DATA_LEN] = { + {{1}, + {90, 65535, 63355, 12, 8, 5, 34, 10000}, + 100, + 7, + IMM_UWORD_ANY_MOST_NEGATIVE, + 0}, + {{}, {0}, 0, 28, IMM_UWORD_RANGES_MOST_MASKED_NEGATIVE, 1}, +}; + +#define TEST_MM_CMPESTRS_SWORD_DATA_LEN 2 +static test_mm_cmpestri_sword_data_t + test_mm_cmpestrs_sword_data[TEST_MM_CMPESTRS_SWORD_DATA_LEN] = { + {{-30000, 2897, 1111, -4455}, + {30, 40, 500, 6000, 20, -10, -789, -29999}, + 4, + 8, + IMM_SWORD_ORDERED_LEAST_MASKED_NEGATIVE, + 1}, + {{34, 56, 789, 1024, 2048, 4096, 8192, -16384}, + {3, 9, -27, 81, -216, 1011}, + 9, + 6, + IMM_SWORD_EACH_LEAST_NEGATIVE, + 0}, +}; + +#define MM_CMPESTRS_UBYTE_TEST_CASES(_, ...) \ + _(UBYTE_ANY_MOST, __VA_ARGS__) \ + _(UBYTE_RANGES_MOST, __VA_ARGS__) + +#define MM_CMPESTRS_SBYTE_TEST_CASES(_, ...) \ + _(SBYTE_EACH_LEAST_MASKED_NEGATIVE, __VA_ARGS__) \ + _(SBYTE_ORDERED_LEAST_MASKED_NEGATIVE, __VA_ARGS__) + +#define MM_CMPESTRS_UWORD_TEST_CASES(_, ...) \ + _(UWORD_ANY_MOST_NEGATIVE, __VA_ARGS__) \ + _(UWORD_RANGES_MOST_MASKED_NEGATIVE, __VA_ARGS__) + +#define MM_CMPESTRS_SWORD_TEST_CASES(_, ...) \ + _(SWORD_ANY_LEAST_MASKED_NEGATIVE, __VA_ARGS__) \ + _(SWORD_EACH_LEAST_NEGATIVE, __VA_ARGS__) + +#define GENERATE_MM_CMPESTRS_TEST_CASES \ + ENUM_MM_CMPESTRX_TEST_CASES(UBYTE, ubyte, uint8_t, cmpestrs, CMPESTRS, \ + IS_CMPESTRI) \ + ENUM_MM_CMPESTRX_TEST_CASES(SBYTE, sbyte, int8_t, cmpestrs, CMPESTRS, \ + IS_CMPESTRI) \ + ENUM_MM_CMPESTRX_TEST_CASES(UWORD, uword, uint16_t, cmpestrs, CMPESTRS, \ + IS_CMPESTRI) \ + ENUM_MM_CMPESTRX_TEST_CASES(SWORD, sword, int16_t, cmpestrs, CMPESTRS, \ + IS_CMPESTRI) + +result_t test_mm_cmpestrs(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + GENERATE_MM_CMPESTRS_TEST_CASES + return TEST_SUCCESS; +} + +#define TEST_MM_CMPESTRZ_UBYTE_DATA_LEN 2 +static test_mm_cmpestri_ubyte_data_t + test_mm_cmpestrz_ubyte_data[TEST_MM_CMPESTRZ_UBYTE_DATA_LEN] = { + {{0, 1, 2, 3, 4, 5, 6, 7}, + {12, 67, 0, 3}, + 8, + 4, + IMM_UBYTE_ANY_MOST_MASKED_NEGATIVE, + 1}, + {{255, 0, 127, 88}, + {1, 2, 4, 8, 16, 32, 64, 128, 254, 233, 209, 41, 66, 77, 90, 100}, + 4, + 16, + IMM_UBYTE_RANGES_MOST_MASKED_NEGATIVE, + 0}, +}; + +#define TEST_MM_CMPESTRZ_SBYTE_DATA_LEN 2 +static test_mm_cmpestri_sbyte_data_t + test_mm_cmpestrz_sbyte_data[TEST_MM_CMPESTRZ_SBYTE_DATA_LEN] = { + {{}, {-90, -80, 111, 67, 88}, 0, 18, IMM_SBYTE_EACH_LEAST_NEGATIVE, 0}, + {{9, 10, 10, -99, -100, -101, 56, 76}, + {-127, 127, -100, -120, 13, 108, 1, -66, -34, 89, -89, 123, 22, -19, + -8}, + 7, + 15, + IMM_SBYTE_ORDERED_LEAST_NEGATIVE, + 1}, +}; + +#define TEST_MM_CMPESTRZ_UWORD_DATA_LEN 2 +static test_mm_cmpestri_uword_data_t + test_mm_cmpestrz_uword_data[TEST_MM_CMPESTRZ_UWORD_DATA_LEN] = { + {{1}, + {9000, 33333, 63333, 120, 8, 55, 34, 100}, + 100, + 7, + IMM_UWORD_ANY_LEAST_NEGATIVE, + 1}, + {{1, 2, 3}, + {1, 10000, 65535, 8964, 9487, 32, 451, 666}, + 3, + 8, + IMM_UWORD_RANGES_MOST_NEGATIVE, + 0}, +}; + +#define TEST_MM_CMPESTRZ_SWORD_DATA_LEN 2 +static test_mm_cmpestri_sword_data_t + test_mm_cmpestrz_sword_data[TEST_MM_CMPESTRZ_SWORD_DATA_LEN] = { + {{30000, 28997, 11111, 4455}, + {30, 40, 500, 6000, 20, -10, -789, -29999}, + 4, + 8, + IMM_SWORD_ORDERED_LEAST_MASKED_NEGATIVE, + 0}, + {{789, 1024, 2048, 4096, 8192}, + {-3, 9, -27, 18, -217, 10111, 22222}, + 5, + 7, + IMM_SWORD_EACH_LEAST_MASKED_NEGATIVE, + 1}, +}; + +#define MM_CMPESTRZ_UBYTE_TEST_CASES(_, ...) \ + _(UBYTE_ANY_MOST, __VA_ARGS__) \ + _(UBYTE_RANGES_MOST, __VA_ARGS__) + +#define MM_CMPESTRZ_SBYTE_TEST_CASES(_, ...) \ + _(SBYTE_EACH_LEAST_NEGATIVE, __VA_ARGS__) \ + _(SBYTE_ORDERED_LEAST_NEGATIVE, __VA_ARGS__) + +#define MM_CMPESTRZ_UWORD_TEST_CASES(_, ...) \ + _(UWORD_ANY_LEAST_NEGATIVE, __VA_ARGS__) \ + _(UWORD_RANGES_MOST_NEGATIVE, __VA_ARGS__) + +#define MM_CMPESTRZ_SWORD_TEST_CASES(_, ...) \ + _(SWORD_ANY_LEAST_MASKED_NEGATIVE, __VA_ARGS__) \ + _(SWORD_EACH_LEAST_MASKED_NEGATIVE, __VA_ARGS__) + +#define GENERATE_MM_CMPESTRZ_TEST_CASES \ + ENUM_MM_CMPESTRX_TEST_CASES(UBYTE, ubyte, uint8_t, cmpestrz, CMPESTRZ, \ + IS_CMPESTRI) \ + ENUM_MM_CMPESTRX_TEST_CASES(SBYTE, sbyte, int8_t, cmpestrz, CMPESTRZ, \ + IS_CMPESTRI) \ + ENUM_MM_CMPESTRX_TEST_CASES(UWORD, uword, uint16_t, cmpestrz, CMPESTRZ, \ + IS_CMPESTRI) \ + ENUM_MM_CMPESTRX_TEST_CASES(SWORD, sword, int16_t, cmpestrz, CMPESTRZ, \ + IS_CMPESTRI) + +result_t test_mm_cmpestrz(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + GENERATE_MM_CMPESTRZ_TEST_CASES + return TEST_SUCCESS; +} + +#undef IS_CMPESTRI + +result_t test_mm_cmpgt_epi64(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int64_t *_a = (const int64_t *) impl.mTestIntPointer1; + const int64_t *_b = (const int64_t *) impl.mTestIntPointer2; + + int64_t result[2]; + result[0] = _a[0] > _b[0] ? -1 : 0; + result[1] = _a[1] > _b[1] ? -1 : 0; + + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + __m128i iret = _mm_cmpgt_epi64(a, b); + + return validateInt64(iret, result[0], result[1]); +} + +#define IS_CMPISTRI 1 + +#define DEF_ENUM_MM_CMPISTRX_VARIANT(c, ...) c, + +#define EVAL_MM_CMPISTRX_TEST_CASE(c, type, data_type, im, IM) \ + do { \ + data_type *a = test_mm_##im##_##type##_data[c].a, \ + *b = test_mm_##im##_##type##_data[c].b; \ + const int imm8 = IMM_##c; \ + IIF(IM) \ + (int expect = test_mm_##im##_##type##_data[c].expect, \ + data_type *expect = test_mm_##im##_##type##_data[c].expect); \ + __m128i ma, mb; \ + memcpy(&ma, a, sizeof(ma)); \ + memcpy(&mb, b, sizeof(mb)); \ + IIF(IM) \ + (int res = _mm_##im(ma, mb, imm8), \ + __m128i res = _mm_##im(ma, mb, imm8)); \ + if (IIF(IM)(res != expect, memcmp(expect, &res, sizeof(__m128i)))) \ + return TEST_FAIL; \ + } while (0); + +#define ENUM_MM_CMPISTRX_TEST_CASES(type, type_lower, data_type, func, FUNC, \ + IM) \ + enum { MM_##FUNC##_##type##_TEST_CASES(DEF_ENUM_MM_CMPISTRX_VARIANT) }; \ + MM_##FUNC##_##type##_TEST_CASES(EVAL_MM_CMPISTRX_TEST_CASE, type_lower, \ + data_type, func, IM) + +typedef struct { + uint8_t a[16], b[16]; + const int imm8; + int expect; +} test_mm_cmpistri_ubyte_data_t; +typedef struct { + int8_t a[16], b[16]; + const int imm8; + int expect; +} test_mm_cmpistri_sbyte_data_t; +typedef struct { + uint16_t a[8], b[8]; + const int imm8; + int expect; +} test_mm_cmpistri_uword_data_t; +typedef struct { + int16_t a[8], b[8]; + const int imm8; + int expect; +} test_mm_cmpistri_sword_data_t; + +#define TEST_MM_CMPISTRA_UBYTE_DATA_LEN 4 +static test_mm_cmpistri_ubyte_data_t + test_mm_cmpistra_ubyte_data[TEST_MM_CMPISTRA_UBYTE_DATA_LEN] = { + {{10, 11, 12, 13, 14, 15, 16, 17, 18, 9, 20, 98, 97, 96, 95, 127}, + {1, 2, 3, 4, 5, 6, 7, 8, 99, 100, 101, 102, 103, 104, 105, 106}, + IMM_UBYTE_ANY_LEAST, + 1}, + {{1, 22, 33, 44, 5, 66, 7, 88, 9, 10, 111, 0}, + {2, 23, 34, 21, 6, 65, 8, 84, 99, 100, 11, 112, 123, 14, 15, 6}, + IMM_UBYTE_EACH_LEAST, + 1}, + {{5, 15, 25, 35, 45, 55, 65, 75, 0}, + {4, 6, 14, 16, 24, 26, 34, 36, 44, 46, 54, 56, 74, 76}, + IMM_UBYTE_RANGES_LEAST, + 0}, + {{4, 14, 64, 84, 0}, + {4, 14, 64, 84, 0, 4, 14, 65, 84, 0, 4, 14, 64, 84, 0, 1}, + IMM_UBYTE_ORDERED_MOST_NEGATIVE, + 0}, +}; + +#define TEST_MM_CMPISTRA_SBYTE_DATA_LEN 4 +static test_mm_cmpistri_sbyte_data_t + test_mm_cmpistra_sbyte_data[TEST_MM_CMPISTRA_SBYTE_DATA_LEN] = { + {{-11, -13, -43, -50, 66, 77, 87, 98, -128, 127, 126, 99, 1, 2, 3, -5}, + {-12, -13, -43, -56, 66, 78, 88, 98, -125, 127, 120, 9, 100, 22, 54, + -10}, + IMM_SBYTE_EACH_LEAST, + 0}, + {{10, 11, 100, -90, 0}, + {8, 9, 10, 11, 0, 8, 9, 10, -90, 0}, + IMM_SBYTE_ANY_LEAST_NEGATIVE, + 0}, + {{-90, -60, -34, -25, 34, 56, 70, 79, 0}, + {-100, -59, -35, -24, -101, 33, 57, 69, 80, 81, -128, 100, 101, 102, + -101, -102}, + IMM_SBYTE_RANGES_LEAST, + 1}, + {{1, 1, 1, 1, -1, -1, -1, -1, -10, 10, -10, 10, 44, -44, 44, -44}, + {1, 1, -1, 1, -1, -1, -1, -1, -10, 10, -10, 10, 44, -44, 44, -44}, + IMM_SBYTE_ORDERED_LEAST, + 1}, +}; + +#define TEST_MM_CMPISTRA_UWORD_DATA_LEN 4 +static test_mm_cmpistri_uword_data_t + test_mm_cmpistra_uword_data[TEST_MM_CMPISTRA_UWORD_DATA_LEN] = { + {{88, 888, 8888, 31888, 10888, 18088, 10880, 28888}, + {888, 88, 8888, 32000, 10888, 18000, 10888, 28888}, + IMM_UWORD_EACH_LEAST_NEGATIVE, + 0}, + {{3, 4, 555, 6666, 7777, 888, 9, 100}, + {1, 2, 333, 4444, 5555, 666, 7, 8}, + IMM_UWORD_ANY_LEAST, + 1}, + {{1000, 2000, 2002, 3000, 3002, 4000, 5000, 5999}, + {999, 2001, 3001, 4001, 4002, 4999, 6000, 6001}, + IMM_UWORD_RANGES_LEAST, + 1}, + {{55, 66, 77, 888, 0}, + {55, 66, 77, 888, 0, 33, 2, 10000}, + IMM_UWORD_ORDERED_LEAST, + 0}, +}; + +#define TEST_MM_CMPISTRA_SWORD_DATA_LEN 4 +static test_mm_cmpistri_sword_data_t + test_mm_cmpistra_sword_data[TEST_MM_CMPISTRA_SWORD_DATA_LEN] = { + {{-32000, -28000, 0}, + {-32001, -29999, -28001, -28000, -27999, -26000, -32768}, + IMM_SWORD_RANGES_LEAST_MASKED_NEGATIVE, + 0}, + {{-12, -11, -10, -9, -8, -7, 90, 1000}, + {-13, -10, 9, -8, -7, 1000, 1000, 90}, + IMM_SWORD_EACH_LEAST, + 1}, + {{33, 44, 787, 23, 0}, + {32, 43, 788, 0, 32, 0, 43, 0}, + IMM_SWORD_ANY_LEAST, + 0}, + {{18, 78, 999, -56, 0}, + {18, 78, 999, 56, 18, 78, 999, 4}, + IMM_SWORD_ORDERED_LEAST, + 1}, +}; + +#define MM_CMPISTRA_UBYTE_TEST_CASES(_, ...) \ + _(UBYTE_ANY_LEAST, __VA_ARGS__) \ + _(UBYTE_EACH_LEAST, __VA_ARGS__) \ + _(UBYTE_RANGES_LEAST, __VA_ARGS__) \ + _(UBYTE_ORDERED_MOST_NEGATIVE, __VA_ARGS__) + +#define MM_CMPISTRA_SBYTE_TEST_CASES(_, ...) \ + _(SBYTE_EACH_LEAST, __VA_ARGS__) \ + _(SBYTE_ANY_LEAST_NEGATIVE, __VA_ARGS__) \ + _(SBYTE_RANGES_LEAST, __VA_ARGS__) \ + _(SBYTE_ORDERED_LEAST, __VA_ARGS__) + +#define MM_CMPISTRA_UWORD_TEST_CASES(_, ...) \ + _(UWORD_EACH_LEAST_NEGATIVE, __VA_ARGS__) \ + _(UWORD_ANY_LEAST, __VA_ARGS__) \ + _(UWORD_RANGES_LEAST, __VA_ARGS__) \ + _(UWORD_ORDERED_LEAST, __VA_ARGS__) + +#define MM_CMPISTRA_SWORD_TEST_CASES(_, ...) \ + _(SWORD_RANGES_LEAST_MASKED_NEGATIVE, __VA_ARGS__) \ + _(SWORD_EACH_LEAST, __VA_ARGS__) \ + _(SWORD_ANY_LEAST, __VA_ARGS__) \ + _(SWORD_ORDERED_LEAST, __VA_ARGS__) + +#define GENERATE_MM_CMPISTRA_TEST_CASES \ + ENUM_MM_CMPISTRX_TEST_CASES(UBYTE, ubyte, uint8_t, cmpistra, CMPISTRA, \ + IS_CMPISTRI) \ + ENUM_MM_CMPISTRX_TEST_CASES(SBYTE, sbyte, int8_t, cmpistra, CMPISTRA, \ + IS_CMPISTRI) \ + ENUM_MM_CMPISTRX_TEST_CASES(UWORD, uword, uint16_t, cmpistra, CMPISTRA, \ + IS_CMPISTRI) \ + ENUM_MM_CMPISTRX_TEST_CASES(SWORD, sword, int16_t, cmpistra, CMPISTRA, \ + IS_CMPISTRI) + +result_t test_mm_cmpistra(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + GENERATE_MM_CMPISTRA_TEST_CASES + return TEST_SUCCESS; +} + +#define TEST_MM_CMPISTRC_UBYTE_DATA_LEN 4 +static test_mm_cmpistri_ubyte_data_t + test_mm_cmpistrc_ubyte_data[TEST_MM_CMPISTRC_UBYTE_DATA_LEN] = { + {{89, 64, 88, 23, 11, 109, 34, 55, 0}, + {2, 64, 87, 32, 1, 110, 43, 66, 0}, + IMM_UBYTE_ANY_LEAST, + 1}, + {{99, 67, 2, 127, 125, 3, 24, 77, 32, 68, 96, 74, 70, 110, 111, 5}, + {98, 88, 67, 125, 111, 4, 56, 88, 33, 69, 99, 79, 123, 11, 10, 6}, + IMM_UBYTE_EACH_LEAST, + 0}, + {{2, 3, 74, 78, 81, 83, 85, 87, 89, 90, 0}, + {86, 90, 74, 85, 87, 81, 2, 3, 3, 3, 75, 76, 77, 78, 82, 85}, + IMM_UBYTE_RANGES_MOST_NEGATIVE, + 0}, + {{45, 67, 8, 9, 0}, + {67, 45, 67, 8, 9, 45, 67, 8, 9, 45, 67, 8, 9, 45, 67, 8}, + IMM_UBYTE_ORDERED_LEAST, + 1}, +}; + +#define TEST_MM_CMPISTRC_SBYTE_DATA_LEN 4 +static test_mm_cmpistri_sbyte_data_t + test_mm_cmpistrc_sbyte_data[TEST_MM_CMPISTRC_SBYTE_DATA_LEN] = { + {{35, -35, 67, -66, 34, 55, 12, -100, 34, -34, 66, -67, 52, 100, 127, + -128}, + {35, -35, 67, -66, 0, 55, 12, -100, 0, -34, 66, -67, 0, 100, 127, + -128}, + IMM_SBYTE_EACH_MOST_MASKED_NEGATIVE, + 0}, + {{-119, 112, 105, 104, 0}, + {119, -112, 105, -104, 104, -34, 112, -119, 0}, + IMM_SBYTE_ANY_LEAST, + 1}, + {{-79, -69, -40, -35, 34, 45, 67, 88, 0}, + {1, 2, 3, 4, 5, 6, 7, 8, 0}, + IMM_SBYTE_RANGES_LEAST, + 0}, + {{22, -109, 123, 115, -12, 0}, + {22, -109, 12, 115, 22, -109, 123, 115, -12, 0}, + IMM_SBYTE_ORDERED_LEAST, + 1}, +}; + +#define TEST_MM_CMPISTRC_UWORD_DATA_LEN 4 +static test_mm_cmpistri_uword_data_t + test_mm_cmpistrc_uword_data[TEST_MM_CMPISTRC_UWORD_DATA_LEN] = { + {{23, 45, 67, 89, 102, 121, 23, 45}, + {23, 45, 67, 89, 102, 121, 23, 44}, + IMM_UWORD_EACH_LEAST, + 1}, + {{1, 11, 55, 75}, {13, 14, 56, 77, 0}, IMM_UWORD_ANY_LEAST, 0}, + {{1, 9, 11, 19, 21, 29, 91, 99}, + {10, 29, 30, 40, 50, 60, 70, 80}, + IMM_UWORD_RANGES_LEAST, + 1}, + {{3, 4, 5, 0}, + {0, 3, 4, 5, 3, 4, 5, 0}, + IMM_UWORD_ORDERED_LEAST_MASKED_NEGATIVE, + 0}, +}; + +#define TEST_MM_CMPISTRC_SWORD_DATA_LEN 4 +static test_mm_cmpistri_sword_data_t + test_mm_cmpistrc_sword_data[TEST_MM_CMPISTRC_SWORD_DATA_LEN] = { + {{-78, -56, 1000, 1002}, + {-79, -55, -12, -13, 999, 1003, -80, 10000}, + IMM_SWORD_RANGES_LEAST, + 0}, + {{45, 32767, -30000, 2345, -23450, 0}, + {45, 32767, -30000, 2346, -23456, 0, 45, 333}, + IMM_SWORD_EACH_LEAST, + 1}, + {{-10000, -20000, -30000, 10000, 20000, 30000, 0}, + {10000, 20000, 30000, -10000, -20000, 20000, -30000, 12}, + IMM_SWORD_ANY_MOST_NEGATIVE, + 1}, + {{1, 2, -3, -55, -666, -7777, 8888}, + {2, -3, -55, -666, -7777, 8888, 1}, + IMM_SWORD_ORDERED_LEAST, + 0}, +}; + +#define MM_CMPISTRC_UBYTE_TEST_CASES(_, ...) \ + _(UBYTE_ANY_LEAST, __VA_ARGS__) \ + _(UBYTE_EACH_LEAST, __VA_ARGS__) \ + _(UBYTE_RANGES_MOST_NEGATIVE, __VA_ARGS__) \ + _(UBYTE_ORDERED_LEAST, __VA_ARGS__) + +#define MM_CMPISTRC_SBYTE_TEST_CASES(_, ...) \ + _(SBYTE_EACH_MOST_MASKED_NEGATIVE, __VA_ARGS__) \ + _(SBYTE_ANY_LEAST, __VA_ARGS__) \ + _(SBYTE_RANGES_LEAST, __VA_ARGS__) \ + _(SBYTE_ORDERED_LEAST, __VA_ARGS__) + +#define MM_CMPISTRC_UWORD_TEST_CASES(_, ...) \ + _(UWORD_EACH_LEAST, __VA_ARGS__) \ + _(UWORD_ANY_LEAST, __VA_ARGS__) \ + _(UWORD_RANGES_LEAST, __VA_ARGS__) \ + _(UWORD_ORDERED_LEAST_MASKED_NEGATIVE, __VA_ARGS__) + +#define MM_CMPISTRC_SWORD_TEST_CASES(_, ...) \ + _(SWORD_RANGES_LEAST, __VA_ARGS__) \ + _(SWORD_EACH_LEAST, __VA_ARGS__) \ + _(SWORD_ANY_MOST_NEGATIVE, __VA_ARGS__) \ + _(SWORD_ORDERED_LEAST, __VA_ARGS__) + +#define GENERATE_MM_CMPISTRC_TEST_CASES \ + ENUM_MM_CMPISTRX_TEST_CASES(UBYTE, ubyte, uint8_t, cmpistrc, CMPISTRC, \ + IS_CMPISTRI) \ + ENUM_MM_CMPISTRX_TEST_CASES(SBYTE, sbyte, int8_t, cmpistrc, CMPISTRC, \ + IS_CMPISTRI) \ + ENUM_MM_CMPISTRX_TEST_CASES(UWORD, uword, uint16_t, cmpistrc, CMPISTRC, \ + IS_CMPISTRI) \ + ENUM_MM_CMPISTRX_TEST_CASES(SWORD, sword, int16_t, cmpistrc, CMPISTRC, \ + IS_CMPISTRI) + +result_t test_mm_cmpistrc(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + GENERATE_MM_CMPISTRC_TEST_CASES + return TEST_SUCCESS; +} + +#define TEST_MM_CMPISTRI_UBYTE_DATA_LEN 4 +static test_mm_cmpistri_ubyte_data_t + test_mm_cmpistri_ubyte_data[TEST_MM_CMPISTRI_UBYTE_DATA_LEN] = { + {{104, 117, 110, 116, 114, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + {33, 64, 35, 36, 37, 94, 38, 42, 40, 41, 91, 93, 58, 59, 60, 62}, + IMM_UBYTE_ANY_LEAST, + 16}, + {{4, 5, 6, 7, 8, 111, 34, 21, 0, 0, 0, 0, 0, 0, 0, 0}, + {5, 6, 7, 8, 8, 111, 43, 12, 0, 0, 0, 0, 0, 0, 0, 0}, + IMM_UBYTE_EACH_MOST_MASKED_NEGATIVE, + 15}, + {{65, 90, 97, 122, 48, 57, 0}, + {47, 46, 43, 44, 42, 43, 45, 41, 40, 123, 124, 125, 126, 127, 1, 2}, + IMM_UBYTE_RANGES_LEAST, + 16}, + {{111, 222, 22, 0}, + {33, 44, 55, 66, 77, 88, 99, 111, 222, 22, 11, 0}, + IMM_UBYTE_ORDERED_LEAST, + 7}, +}; + +#define TEST_MM_CMPISTRI_SBYTE_DATA_LEN 4 +static test_mm_cmpistri_sbyte_data_t + test_mm_cmpistri_sbyte_data[TEST_MM_CMPISTRI_SBYTE_DATA_LEN] = { + {{1, 2, 3, 4, 5, -99, -128, -100, -1, 49, 0}, + {2, 3, 3, 4, 5, -100, -128, -99, 1, 44, 0}, + IMM_SBYTE_EACH_LEAST, + 2}, + {{99, 100, 23, -90, 0}, + {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 99, 100, 23, -90, -90, 100}, + IMM_SBYTE_ANY_LEAST, + 10}, + {{-10, -2, 89, 97, 0}, + {-11, -12, -3, 1, 97, 0}, + IMM_SBYTE_RANGES_LEAST_NEGATIVE, + 0}, + {{-10, -90, -22, 30, 87, 127, 0}, {0}, IMM_SBYTE_ORDERED_LEAST, 16}, +}; + +#define TEST_MM_CMPISTRI_UWORD_DATA_LEN 4 +static test_mm_cmpistri_uword_data_t + test_mm_cmpistri_uword_data[TEST_MM_CMPISTRI_UWORD_DATA_LEN] = { + {{38767, 99, 1234, 65535, 2222, 1, 34456, 11}, + {38768, 999, 1235, 4444, 2222, 1, 34456, 12}, + IMM_UWORD_EACH_LEAST, + 4}, + {{22222, 33333, 44444, 55555, 6000, 600, 60, 6}, + {0}, + IMM_UWORD_ANY_LEAST, + 8}, + {{34, 777, 1000, 1004, 0}, + {33, 32, 889, 1003, 0}, + IMM_UWORD_RANGES_LEAST, + 3}, + {{44, 555, 44, 0}, + {44, 555, 44, 555, 44, 555, 44, 0}, + IMM_UWORD_ORDERED_MOST_NEGATIVE, + 7}, +}; + +#define TEST_MM_CMPISTRI_SWORD_DATA_LEN 4 +static test_mm_cmpistri_sword_data_t + test_mm_cmpistri_sword_data[TEST_MM_CMPISTRI_SWORD_DATA_LEN] = { + {{-1, -5, 10, 30, 40, 0}, + {13, -2, 7, 80, 11, 0}, + IMM_SWORD_RANGES_LEAST, + 0}, + {{-12, 12, 6666, 777, 0}, + {11, 12, 6666, 777, 0}, + IMM_SWORD_EACH_LEAST, + 1}, + {{23, 22, 33, 567, 9999, 12345, 0}, + {23, 22, 23, 22, 23, 22, 23, 12222}, + IMM_SWORD_ANY_MOST, + 6}, + {{12, -234, -567, 8888, 0}, + {13, -234, -567, 8888, 12, -234, -567, 8889}, + IMM_SWORD_ORDERED_LEAST, + 8}, +}; + +#define MM_CMPISTRI_UBYTE_TEST_CASES(_, ...) \ + _(UBYTE_ANY_LEAST, __VA_ARGS__) \ + _(UBYTE_EACH_MOST_MASKED_NEGATIVE, __VA_ARGS__) \ + _(UBYTE_RANGES_LEAST, __VA_ARGS__) \ + _(UBYTE_ORDERED_LEAST, __VA_ARGS__) + +#define MM_CMPISTRI_SBYTE_TEST_CASES(_, ...) \ + _(SBYTE_EACH_LEAST, __VA_ARGS__) \ + _(SBYTE_ANY_LEAST, __VA_ARGS__) \ + _(SBYTE_RANGES_LEAST_NEGATIVE, __VA_ARGS__) \ + _(SBYTE_ORDERED_LEAST, __VA_ARGS__) + +#define MM_CMPISTRI_UWORD_TEST_CASES(_, ...) \ + _(UWORD_EACH_LEAST, __VA_ARGS__) \ + _(UWORD_ANY_LEAST, __VA_ARGS__) \ + _(UWORD_RANGES_LEAST, __VA_ARGS__) \ + _(UWORD_ORDERED_MOST_NEGATIVE, __VA_ARGS__) + +#define MM_CMPISTRI_SWORD_TEST_CASES(_, ...) \ + _(SWORD_RANGES_LEAST, __VA_ARGS__) \ + _(SWORD_EACH_LEAST, __VA_ARGS__) \ + _(SWORD_ANY_MOST, __VA_ARGS__) \ + _(SWORD_ORDERED_LEAST, __VA_ARGS__) + +#define GENERATE_MM_CMPISTRI_TEST_CASES \ + ENUM_MM_CMPISTRX_TEST_CASES(UBYTE, ubyte, uint8_t, cmpistri, CMPISTRI, \ + IS_CMPISTRI) \ + ENUM_MM_CMPISTRX_TEST_CASES(SBYTE, sbyte, int8_t, cmpistri, CMPISTRI, \ + IS_CMPISTRI) \ + ENUM_MM_CMPISTRX_TEST_CASES(UWORD, uword, uint16_t, cmpistri, CMPISTRI, \ + IS_CMPISTRI) \ + ENUM_MM_CMPISTRX_TEST_CASES(SWORD, sword, int16_t, cmpistri, CMPISTRI, \ + IS_CMPISTRI) + +result_t test_mm_cmpistri(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + GENERATE_MM_CMPISTRI_TEST_CASES + return TEST_SUCCESS; +} + +#define IS_CMPISTRM 0 + +typedef struct { + uint8_t a[16], b[16]; + const int imm8; + uint8_t expect[16]; +} test_mm_cmpistrm_ubyte_data_t; +typedef struct { + int8_t a[16], b[16]; + const int imm8; + int8_t expect[16]; +} test_mm_cmpistrm_sbyte_data_t; +typedef struct { + uint16_t a[8], b[8]; + const int imm8; + uint16_t expect[8]; +} test_mm_cmpistrm_uword_data_t; +typedef struct { + int16_t a[8], b[8]; + const int imm8; + int16_t expect[8]; +} test_mm_cmpistrm_sword_data_t; + +#define TEST_MM_CMPISTRM_UBYTE_DATA_LEN 4 +static test_mm_cmpistrm_ubyte_data_t + test_mm_cmpistrm_ubyte_data[TEST_MM_CMPISTRM_UBYTE_DATA_LEN] = { + {{88, 89, 90, 91, 92, 93, 0}, + {78, 88, 99, 127, 92, 93, 0}, + IMM_UBYTE_EACH_UNIT, + {0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255}}, + {{30, 41, 52, 63, 74, 85, 0}, + {30, 42, 51, 63, 74, 85, 0}, + IMM_UBYTE_ANY_BIT, + {57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, + {{34, 32, 21, 16, 7, 0}, + {34, 33, 32, 31, 30, 29, 10, 6, 0}, + IMM_UBYTE_RANGES_UNIT, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, + {{33, 21, 123, 89, 76, 56, 0}, + {33, 21, 124, 33, 21, 123, 89, 76, 56, 33, 21, 123, 89, 76, 56, 22}, + IMM_UBYTE_ORDERED_UNIT, + {0, 0, 0, 255, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0}}, +}; + +#define TEST_MM_CMPISTRM_SBYTE_DATA_LEN 4 +static test_mm_cmpistrm_sbyte_data_t + test_mm_cmpistrm_sbyte_data[TEST_MM_CMPISTRM_SBYTE_DATA_LEN] = { + {{-11, -90, -128, 127, 66, 45, 23, 32, 99, 10, 0}, + {-10, -90, -124, 33, 66, 45, 23, 22, 99, 100, 0}, + IMM_SBYTE_EACH_BIT_MASKED_NEGATIVE, + {-115, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, + {{13, 14, 55, 1, 32, 100, 101, 102, 103, 97, 23, 21, 45, 54, 55, 56}, + {22, 109, 87, 45, 1, 103, 22, 102, 43, 87, 78, 56, 65, 55, 44, 33}, + IMM_SBYTE_ANY_UNIT, + {0, 0, 0, -1, -1, -1, 0, -1, 0, 0, 0, -1, 0, -1, 0, 0}}, + {{-31, -28, -9, 10, 45, 67, 88, 0}, + {-30, -32, -33, -44, 93, 44, 9, 89, 0}, + IMM_SBYTE_RANGES_UNIT, + {-1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, + {{34, -10, 78, -99, -100, 100, 0}, + {34, 123, 88, 4, 34, -10, 78, -99, -100, 100, 34, -10, 78, -99, -100, + -100}, + IMM_SBYTE_ORDERED_UNIT, + {0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, +}; + +#define TEST_MM_CMPISTRM_UWORD_DATA_LEN 4 +static test_mm_cmpistrm_uword_data_t + test_mm_cmpistrm_uword_data[TEST_MM_CMPISTRM_UWORD_DATA_LEN] = { + {{1024, 2048, 4096, 5000, 0}, + {1023, 1000, 2047, 1596, 5566, 5666, 4477, 9487}, + IMM_UWORD_RANGES_UNIT, + {0, 0, 65535, 65535, 0, 0, 65535, 0}}, + {{1, 2, 345, 7788, 10000, 0}, + {2, 1, 345, 7788, 10000, 0}, + IMM_UWORD_EACH_UNIT, + {0, 0, 65535, 65535, 65535, 65535, 65535, 65535}}, + {{100, 0}, + {12345, 6766, 234, 0, 1, 34, 89, 100}, + IMM_UWORD_ANY_UNIT, + {0, 0, 0, 0, 0, 0, 0, 0}}, + {{34, 122, 9000, 0}, + {34, 122, 9000, 34, 122, 9000, 34, 122}, + IMM_UWORD_ORDERED_UNIT_NEGATIVE, + {0, 65535, 65535, 0, 65535, 65535, 0, 65535}}, +}; + +#define TEST_MM_CMPISTRM_SWORD_DATA_LEN 4 +static test_mm_cmpistrm_sword_data_t + test_mm_cmpistrm_sword_data[TEST_MM_CMPISTRM_SWORD_DATA_LEN] = { + {{-39, -10, 17, 89, 998, 1000, 1234, 4566}, + {-40, -52, -39, -29, 100, 1024, 4565, 4600}, + IMM_SWORD_RANGES_BIT, + {0, 0, -1, -1, 0, 0, -1, 0}}, + {{345, -1900, -10000, -30000, 50, 6789, 0}, + {103, -1901, -10000, 32767, 50, 6780, 0}, + IMM_SWORD_EACH_UNIT, + {0, 0, -1, 0, -1, 0, -1, -1}}, + {{677, 10001, 1001, 23, 0}, + {345, 677, 10001, 1003, 1001, 32, 23, 677}, + IMM_SWORD_ANY_UNIT, + {0, -1, -1, 0, -1, 0, -1, -1}}, + {{1024, -2288, 3752, -4096, 0}, + {1024, 1024, -2288, 3752, -4096, 1024, -2288, 3752}, + IMM_SWORD_ORDERED_UNIT, + {0, -1, 0, 0, 0, -1, 0, 0}}, +}; + +#define MM_CMPISTRM_UBYTE_TEST_CASES(_, ...) \ + _(UBYTE_EACH_UNIT, __VA_ARGS__) \ + _(UBYTE_ANY_BIT, __VA_ARGS__) \ + _(UBYTE_RANGES_UNIT, __VA_ARGS__) \ + _(UBYTE_ORDERED_UNIT, __VA_ARGS__) + +#define MM_CMPISTRM_SBYTE_TEST_CASES(_, ...) \ + _(SBYTE_EACH_BIT_MASKED_NEGATIVE, __VA_ARGS__) \ + _(SBYTE_ANY_UNIT, __VA_ARGS__) \ + _(SBYTE_RANGES_UNIT, __VA_ARGS__) \ + _(SBYTE_ORDERED_UNIT, __VA_ARGS__) + +#define MM_CMPISTRM_UWORD_TEST_CASES(_, ...) \ + _(UWORD_RANGES_UNIT, __VA_ARGS__) \ + _(UWORD_EACH_UNIT, __VA_ARGS__) \ + _(UWORD_ANY_UNIT, __VA_ARGS__) \ + _(UWORD_ORDERED_UNIT_NEGATIVE, __VA_ARGS__) + +#define MM_CMPISTRM_SWORD_TEST_CASES(_, ...) \ + _(SWORD_RANGES_UNIT, __VA_ARGS__) \ + _(SWORD_EACH_UNIT, __VA_ARGS__) \ + _(SWORD_ANY_UNIT, __VA_ARGS__) \ + _(SWORD_ORDERED_UNIT, __VA_ARGS__) + +#define GENERATE_MM_CMPISTRM_TEST_CASES \ + ENUM_MM_CMPISTRX_TEST_CASES(UBYTE, ubyte, uint8_t, cmpistrm, CMPISTRM, \ + IS_CMPISTRM) \ + ENUM_MM_CMPISTRX_TEST_CASES(SBYTE, sbyte, int8_t, cmpistrm, CMPISTRM, \ + IS_CMPISTRM) \ + ENUM_MM_CMPISTRX_TEST_CASES(UWORD, uword, uint16_t, cmpistrm, CMPISTRM, \ + IS_CMPISTRM) \ + ENUM_MM_CMPISTRX_TEST_CASES(SWORD, sword, int16_t, cmpistrm, CMPISTRM, \ + IS_CMPISTRM) + +result_t test_mm_cmpistrm(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + GENERATE_MM_CMPISTRM_TEST_CASES + return TEST_SUCCESS; +} + +#undef IS_CMPISTRM + +#define TEST_MM_CMPISTRO_UBYTE_DATA_LEN 4 +static test_mm_cmpistri_ubyte_data_t + test_mm_cmpistro_ubyte_data[TEST_MM_CMPISTRO_UBYTE_DATA_LEN] = { + {{3, 4, 5, 0}, {5, 5, 5, 4, 3, 0}, IMM_UBYTE_ANY_LEAST, 1}, + {{23, 127, 88, 3, 45, 6, 7, 2, 0}, + {32, 127, 87, 2, 44, 32, 1, 2, 0}, + IMM_UBYTE_EACH_MOST_NEGATIVE, + 1}, + {{3, 4, 55, 56, 0}, + {2, 3, 4, 5, 43, 54, 55, 56, 0}, + IMM_UBYTE_RANGES_LEAST, + 0}, + {{55, 66, 77, 11, 23, 0}, + {55, 55, 66, 77, 11, 23, 55, 66, 77, 11, 23, 33, 123, 18, 0}, + IMM_UBYTE_ORDERED_LEAST, + 0}, +}; + +#define TEST_MM_CMPISTRO_SBYTE_DATA_LEN 4 +static test_mm_cmpistri_sbyte_data_t + test_mm_cmpistro_sbyte_data[TEST_MM_CMPISTRO_SBYTE_DATA_LEN] = { + {{33, -33, 23, -32, -1, -1, 23, 46, 78, 34, 54, 100, 90, 91, 92, 101}, + {32, 33, 23, -33, -2, -3, 23, 46, -78, 43, 56, 10, 9, 91, 90, 126}, + IMM_SBYTE_EACH_LEAST, + 0}, + {{-1, -2, -3, -4, -5, -6, -7, -8, 87, 86, 85, 84, 83, 82, 81, 80}, + {87, 79, 0}, + IMM_SBYTE_ANY_LEAST, + 1}, + {{3, 4, 2, 0}, + {3, 3, 4, 5, 6, 2, 0}, + IMM_SBYTE_RANGES_MOST_NEGATIVE, + 0}, + {{23, 66, 1, 13, 17, 1, 13, 17, 0}, + {23, 66, 1, 13, 17, 1, 13, 17, 32, 23, 66, 1, 13, 17, 1, 13}, + IMM_SBYTE_ORDERED_LEAST, + 1}, +}; + +#define TEST_MM_CMPISTRO_UWORD_DATA_LEN 4 +static test_mm_cmpistri_uword_data_t + test_mm_cmpistro_uword_data[TEST_MM_CMPISTRO_UWORD_DATA_LEN] = { + {{3333, 4444, 10000, 20000, 40000, 50000, 65535, 0}, + {3332, 4443, 10000, 20001, 40000, 50000, 65534, 0}, + IMM_UWORD_EACH_LEAST, + 0}, + {{1, 2, 333, 4444, 55555, 7777, 23, 347}, + {4444, 7777, 55555, 23, 347, 2, 1, 0}, + IMM_UWORD_ANY_LEAST, + 1}, + {{356, 380, 320, 456, 0}, + {455, 379, 333, 319, 300, 299, 0}, + IMM_UWORD_RANGES_LEAST, + 1}, + {{3, 1001, 235, 0}, + {3, 1001, 235, 0, 3, 1001, 235, 0}, + IMM_UWORD_ORDERED_MOST_MASKED_NEGATIVE, + 0}, +}; + +#define TEST_MM_CMPISTRO_SWORD_DATA_LEN 4 +static test_mm_cmpistri_sword_data_t + test_mm_cmpistro_sword_data[TEST_MM_CMPISTRO_SWORD_DATA_LEN] = { + {{-10, -5, -100, -90, 45, 56, 1000, 1009}, + {54, -1, -5, -6, 1001, 10001, 1009, 1009}, + IMM_SWORD_RANGES_LEAST, + 1}, + {{456, -32768, 32767, 13, 0}, + {455, -32768, 32767, 31, 0}, + IMM_SWORD_EACH_LEAST, + 0}, + {{23, 46, -44, 32000, 0}, + {23, 66, -44, 678, 32000, 0}, + IMM_SWORD_ANY_MOST_MASKED_NEGATIVE, + 0}, + {{-7900, -101, -34, 666, 345, 0}, + {-7900, -101, -34, 666, 345, -7900, -191, -34}, + IMM_SWORD_ORDERED_LEAST, + 1}, +}; + +#define MM_CMPISTRO_UBYTE_TEST_CASES(_, ...) \ + _(UBYTE_ANY_LEAST, __VA_ARGS__) \ + _(UBYTE_EACH_MOST_NEGATIVE, __VA_ARGS__) \ + _(UBYTE_RANGES_LEAST, __VA_ARGS__) \ + _(UBYTE_ORDERED_LEAST, __VA_ARGS__) + +#define MM_CMPISTRO_SBYTE_TEST_CASES(_, ...) \ + _(SBYTE_EACH_LEAST, __VA_ARGS__) \ + _(SBYTE_ANY_LEAST, __VA_ARGS__) \ + _(SBYTE_RANGES_MOST_NEGATIVE, __VA_ARGS__) \ + _(SBYTE_ORDERED_LEAST, __VA_ARGS__) + +#define MM_CMPISTRO_UWORD_TEST_CASES(_, ...) \ + _(UWORD_EACH_LEAST, __VA_ARGS__) \ + _(UWORD_ANY_LEAST, __VA_ARGS__) \ + _(UWORD_RANGES_LEAST, __VA_ARGS__) \ + _(UWORD_ORDERED_MOST_MASKED_NEGATIVE, __VA_ARGS__) + +#define MM_CMPISTRO_SWORD_TEST_CASES(_, ...) \ + _(SWORD_RANGES_LEAST, __VA_ARGS__) \ + _(SWORD_EACH_LEAST, __VA_ARGS__) \ + _(SWORD_ANY_MOST_MASKED_NEGATIVE, __VA_ARGS__) \ + _(SWORD_ORDERED_LEAST, __VA_ARGS__) + +#define GENERATE_MM_CMPISTRO_TEST_CASES \ + ENUM_MM_CMPISTRX_TEST_CASES(UBYTE, ubyte, uint8_t, cmpistro, CMPISTRO, \ + IS_CMPISTRI) \ + ENUM_MM_CMPISTRX_TEST_CASES(SBYTE, sbyte, int8_t, cmpistro, CMPISTRO, \ + IS_CMPISTRI) \ + ENUM_MM_CMPISTRX_TEST_CASES(UWORD, uword, uint16_t, cmpistro, CMPISTRO, \ + IS_CMPISTRI) \ + ENUM_MM_CMPISTRX_TEST_CASES(SWORD, sword, int16_t, cmpistro, CMPISTRO, \ + IS_CMPISTRI) + +result_t test_mm_cmpistro(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + GENERATE_MM_CMPISTRO_TEST_CASES + return TEST_SUCCESS; +} + +#define TEST_MM_CMPISTRS_UBYTE_DATA_LEN 4 +static test_mm_cmpistri_ubyte_data_t + test_mm_cmpistrs_ubyte_data[TEST_MM_CMPISTRS_UBYTE_DATA_LEN] = { + {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}, + {1, 2, 3, 4, 5, 0}, + IMM_UBYTE_ANY_LEAST, + 0}, + {{127, 126, 125, 124, 0}, + {127, 1, 34, 43, 54, 0}, + IMM_UBYTE_EACH_LEAST, + 1}, + {{127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, + 127, 127}, + {56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 0}, + IMM_UBYTE_RANGES_LEAST, + 0}, + {{33, 44, 55, 78, 99, 100, 101, 102, 0}, + {0}, + IMM_UBYTE_ORDERED_LEAST, + 1}, +}; + +#define TEST_MM_CMPISTRS_SBYTE_DATA_LEN 4 +static test_mm_cmpistri_sbyte_data_t + test_mm_cmpistrs_sbyte_data[TEST_MM_CMPISTRS_SBYTE_DATA_LEN] = { + {{100, 99, 98, 97, -67, -4, -5, -6, -7, -1, -2, -3, -128, -128, -128, + -128}, + {0}, + IMM_SBYTE_EACH_LEAST, + 0}, + {{-128, -128, -128, -128, 127, 127, 127, 127, -128, -128, -128, -128, + 127, 127, 127, 127}, + {-1, -2, -11, -98, -12, 0}, + IMM_SBYTE_ANY_LEAST, + 0}, + {{0, 1, 2, 3, 4, 5, -6, -7}, + {0, 1, 2, 3, 4, 5, 6, 7}, + IMM_SBYTE_RANGES_LEAST, + 1}, + {{0, 1, 0, -1, 0, -2, 0, 0, -3, 4, 0, 0, 5, 6, 7, 8}, + {0}, + IMM_SBYTE_ORDERED_LEAST, + 1}, +}; + +#define TEST_MM_CMPISTRS_UWORD_DATA_LEN 4 +static test_mm_cmpistri_uword_data_t + test_mm_cmpistrs_uword_data[TEST_MM_CMPISTRS_UWORD_DATA_LEN] = { + {{0, 1, 2, 3, 65535, 0, 0, 0}, + {9, 8, 7, 6, 5, 4, 3, 2}, + IMM_UWORD_EACH_LEAST, + 1}, + {{4, 567, 65535, 32, 34, 0}, {0}, IMM_UWORD_ANY_LEAST, 1}, + {{65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535}, + {1, 2, 3, 4, 900, 7890, 6767, 0}, + IMM_UWORD_RANGES_LEAST, + 0}, + {{1, 2, 3, 4, 5, 6, 7, 8}, {1, 2, 3, 4, 0}, IMM_UWORD_ORDERED_LEAST, 0}, +}; + +#define TEST_MM_CMPISTRS_SWORD_DATA_LEN 4 +static test_mm_cmpistri_sword_data_t + test_mm_cmpistrs_sword_data[TEST_MM_CMPISTRS_SWORD_DATA_LEN] = { + {{-32768, -32768, -32768, -32768, -32768, -32768, -32768, -3276}, + {34, 45, 6, 7, 9, 8, 7, 6}, + IMM_SWORD_RANGES_LEAST, + 0}, + {{1000, 2000, 4000, 8000, 16000, 32000, 32767, 0}, + {3, 4, 56, 23, 0}, + IMM_SWORD_EACH_LEAST, + 1}, + {{0, 1, 3, 4, -32768, 9, 0, 1}, + {56, 47, 43, 999, 1111, 0}, + IMM_SWORD_ANY_LEAST, + 1}, + {{1111, 1212, 831, 2345, 32767, 32767, -32768, 32767}, + {0}, + IMM_SWORD_ORDERED_LEAST, + 0}, +}; + +#define MM_CMPISTRS_UBYTE_TEST_CASES(_, ...) \ + _(UBYTE_ANY_LEAST, __VA_ARGS__) \ + _(UBYTE_EACH_LEAST, __VA_ARGS__) \ + _(UBYTE_RANGES_LEAST, __VA_ARGS__) \ + _(UBYTE_ORDERED_LEAST, __VA_ARGS__) + +#define MM_CMPISTRS_SBYTE_TEST_CASES(_, ...) \ + _(SBYTE_EACH_LEAST, __VA_ARGS__) \ + _(SBYTE_ANY_LEAST, __VA_ARGS__) \ + _(SBYTE_RANGES_LEAST, __VA_ARGS__) \ + _(SBYTE_ORDERED_LEAST, __VA_ARGS__) + +#define MM_CMPISTRS_UWORD_TEST_CASES(_, ...) \ + _(UWORD_EACH_LEAST, __VA_ARGS__) \ + _(UWORD_ANY_LEAST, __VA_ARGS__) \ + _(UWORD_RANGES_LEAST, __VA_ARGS__) \ + _(UWORD_ORDERED_LEAST, __VA_ARGS__) + +#define MM_CMPISTRS_SWORD_TEST_CASES(_, ...) \ + _(SWORD_RANGES_LEAST, __VA_ARGS__) \ + _(SWORD_EACH_LEAST, __VA_ARGS__) \ + _(SWORD_ANY_LEAST, __VA_ARGS__) \ + _(SWORD_ORDERED_LEAST, __VA_ARGS__) + +#define GENERATE_MM_CMPISTRS_TEST_CASES \ + ENUM_MM_CMPISTRX_TEST_CASES(UBYTE, ubyte, uint8_t, cmpistrs, CMPISTRS, \ + IS_CMPISTRI) \ + ENUM_MM_CMPISTRX_TEST_CASES(SBYTE, sbyte, int8_t, cmpistrs, CMPISTRS, \ + IS_CMPISTRI) \ + ENUM_MM_CMPISTRX_TEST_CASES(UWORD, uword, uint16_t, cmpistrs, CMPISTRS, \ + IS_CMPISTRI) \ + ENUM_MM_CMPISTRX_TEST_CASES(SWORD, sword, int16_t, cmpistrs, CMPISTRS, \ + IS_CMPISTRI) + +result_t test_mm_cmpistrs(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + GENERATE_MM_CMPISTRS_TEST_CASES + return TEST_SUCCESS; +} + +#define TEST_MM_CMPISTRZ_UBYTE_DATA_LEN 4 +static test_mm_cmpistri_ubyte_data_t + test_mm_cmpistrz_ubyte_data[TEST_MM_CMPISTRZ_UBYTE_DATA_LEN] = { + {{0}, + {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255}, + IMM_UBYTE_ANY_LEAST, + 0}, + {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}, + {1, 1, 1, 1, 2, 2, 2, 2, 4, 5, 6, 7, 89, 89, 89, 89}, + IMM_UBYTE_EACH_LEAST, + 0}, + {{1, 2, 3, 4, 0}, {}, IMM_UBYTE_RANGES_LEAST, 1}, + {{127, 126, 125, 124, 124, 0}, + {100, 101, 123, 100, 111, 122, 0}, + IMM_UBYTE_ORDERED_LEAST, + 1}, +}; + +#define TEST_MM_CMPISTRZ_SBYTE_DATA_LEN 4 +static test_mm_cmpistri_sbyte_data_t + test_mm_cmpistrz_sbyte_data[TEST_MM_CMPISTRZ_SBYTE_DATA_LEN] = { + {{127, 126, 99, -100, 0}, + {-128, -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128}, + IMM_SBYTE_EACH_LEAST, + 0}, + {{120, 66, 54, 0}, {3, 4, 5, -99, -6, 0}, IMM_SBYTE_ANY_LEAST, 1}, + {{0}, + {127, 127, 127, 127, 126, 126, 126, 126, -127, -127, -127, -127, -1, + -1, -1, -1}, + IMM_SBYTE_RANGES_LEAST, + 0}, + {{12, 3, 4, 5, 6, 7, 8, 0}, + {-1, -2, -3, -4, -6, 75, 0}, + IMM_SBYTE_ORDERED_LEAST, + 1}, +}; + +#define TEST_MM_CMPISTRZ_UWORD_DATA_LEN 4 +static test_mm_cmpistri_uword_data_t + test_mm_cmpistrz_uword_data[TEST_MM_CMPISTRZ_UWORD_DATA_LEN] = { + {{10000, 20000, 50000, 40000, 0}, + {65535, 65533, 60000, 60000, 50000, 123, 1, 2}, + IMM_UWORD_EACH_LEAST, + 0}, + {{0}, + {65528, 65529, 65530, 65531, 65532, 65533, 65534, 65535}, + IMM_UWORD_ANY_LEAST, + 0}, + {{3, 333, 3333, 33333, 0}, {0}, IMM_UWORD_RANGES_LEAST, 1}, + {{123, 456, 7, 890, 0}, + {123, 456, 7, 900, 0}, + IMM_UWORD_ORDERED_LEAST, + 1}, +}; + +#define TEST_MM_CMPISTRZ_SWORD_DATA_LEN 4 +static test_mm_cmpistri_sword_data_t + test_mm_cmpistrz_sword_data[TEST_MM_CMPISTRZ_SWORD_DATA_LEN] = { + {{2, 22, 222, 2222, 22222, -2222, -222, -22}, + {-32768, 32767, -32767, 32766, -32766, 32765, -32768, 32767}, + IMM_SWORD_RANGES_LEAST, + 0}, + {{345, 10000, -10000, -30000, 0}, + {1, 2, 3, 4, 5, 6, 7, 0}, + IMM_SWORD_EACH_LEAST, + 1}, + {{}, {0}, IMM_SWORD_ANY_LEAST, 1}, + {{1, 2, -789, -1, -90, 0}, + {1, 10, 100, 1000, 10000, -10000, -1000, 1000}, + IMM_SWORD_ORDERED_LEAST, + 0}, +}; + +#define MM_CMPISTRZ_UBYTE_TEST_CASES(_, ...) \ + _(UBYTE_ANY_LEAST, __VA_ARGS__) \ + _(UBYTE_EACH_LEAST, __VA_ARGS__) \ + _(UBYTE_RANGES_LEAST, __VA_ARGS__) \ + _(UBYTE_ORDERED_LEAST, __VA_ARGS__) + +#define MM_CMPISTRZ_SBYTE_TEST_CASES(_, ...) \ + _(SBYTE_EACH_LEAST, __VA_ARGS__) \ + _(SBYTE_ANY_LEAST, __VA_ARGS__) \ + _(SBYTE_RANGES_LEAST, __VA_ARGS__) \ + _(SBYTE_ORDERED_LEAST, __VA_ARGS__) + +#define MM_CMPISTRZ_UWORD_TEST_CASES(_, ...) \ + _(UWORD_EACH_LEAST, __VA_ARGS__) \ + _(UWORD_ANY_LEAST, __VA_ARGS__) \ + _(UWORD_RANGES_LEAST, __VA_ARGS__) \ + _(UWORD_ORDERED_LEAST, __VA_ARGS__) + +#define MM_CMPISTRZ_SWORD_TEST_CASES(_, ...) \ + _(SWORD_RANGES_LEAST, __VA_ARGS__) \ + _(SWORD_EACH_LEAST, __VA_ARGS__) \ + _(SWORD_ANY_LEAST, __VA_ARGS__) \ + _(SWORD_ORDERED_LEAST, __VA_ARGS__) + +#define GENERATE_MM_CMPISTRZ_TEST_CASES \ + ENUM_MM_CMPISTRX_TEST_CASES(UBYTE, ubyte, uint8_t, cmpistrz, CMPISTRZ, \ + IS_CMPISTRI) \ + ENUM_MM_CMPISTRX_TEST_CASES(SBYTE, sbyte, int8_t, cmpistrz, CMPISTRZ, \ + IS_CMPISTRI) \ + ENUM_MM_CMPISTRX_TEST_CASES(UWORD, uword, uint16_t, cmpistrz, CMPISTRZ, \ + IS_CMPISTRI) \ + ENUM_MM_CMPISTRX_TEST_CASES(SWORD, sword, int16_t, cmpistrz, CMPISTRZ, \ + IS_CMPISTRI) + +result_t test_mm_cmpistrz(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + GENERATE_MM_CMPISTRZ_TEST_CASES + return TEST_SUCCESS; +} + +result_t test_mm_crc32_u16(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + uint32_t crc = *(const uint32_t *) impl.mTestIntPointer1; + uint16_t v = (uint16_t) iter; + uint32_t result = _mm_crc32_u16(crc, v); + ASSERT_RETURN(result == canonical_crc32_u16(crc, v)); + return TEST_SUCCESS; +} + +result_t test_mm_crc32_u32(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + uint32_t crc = *(const uint32_t *) impl.mTestIntPointer1; + uint32_t v = *(const uint32_t *) impl.mTestIntPointer2; + uint32_t result = _mm_crc32_u32(crc, v); + ASSERT_RETURN(result == canonical_crc32_u32(crc, v)); + return TEST_SUCCESS; +} + +result_t test_mm_crc32_u64(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + uint64_t crc = *(const uint64_t *) impl.mTestIntPointer1; + uint64_t v = *(const uint64_t *) impl.mTestIntPointer2; + uint64_t result = _mm_crc32_u64(crc, v); + ASSERT_RETURN(result == canonical_crc32_u64(crc, v)); + return TEST_SUCCESS; +} + +result_t test_mm_crc32_u8(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + uint32_t crc = *(const uint32_t *) impl.mTestIntPointer1; + uint8_t v = (uint8_t) iter; + uint32_t result = _mm_crc32_u8(crc, v); + ASSERT_RETURN(result == canonical_crc32_u8(crc, v)); + return TEST_SUCCESS; +} + +/* AES */ +result_t test_mm_aesenc_si128(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int32_t *a = (int32_t *) impl.mTestIntPointer1; + const int32_t *b = (int32_t *) impl.mTestIntPointer2; + __m128i data = _mm_loadu_si128((const __m128i *) a); + __m128i rk = _mm_loadu_si128((const __m128i *) b); + + __m128i resultReference = aesenc_128_reference(data, rk); + __m128i resultIntrinsic = _mm_aesenc_si128(data, rk); + + return validate128(resultReference, resultIntrinsic); +} + +result_t test_mm_aesdec_si128(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int32_t *a = (int32_t *) impl.mTestIntPointer1; + const int32_t *b = (int32_t *) impl.mTestIntPointer2; + __m128i data = _mm_loadu_si128((const __m128i *) a); + __m128i rk = _mm_loadu_si128((const __m128i *) b); + + __m128i resultReference = aesdec_128_reference(data, rk); + __m128i resultIntrinsic = _mm_aesdec_si128(data, rk); + + return validate128(resultReference, resultIntrinsic); +} + +result_t test_mm_aesenclast_si128(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const int32_t *a = (const int32_t *) impl.mTestIntPointer1; + const int32_t *b = (const int32_t *) impl.mTestIntPointer2; + __m128i data = _mm_loadu_si128((const __m128i *) a); + __m128i rk = _mm_loadu_si128((const __m128i *) b); + + __m128i resultReference = aesenclast_128_reference(data, rk); + __m128i resultIntrinsic = _mm_aesenclast_si128(data, rk); + + return validate128(resultReference, resultIntrinsic); +} + +result_t test_mm_aesdeclast_si128(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const uint8_t *a = (uint8_t *) impl.mTestIntPointer1; + const uint8_t *rk = (uint8_t *) impl.mTestIntPointer2; + __m128i _a = _mm_loadu_si128((const __m128i *) a); + __m128i _rk = _mm_loadu_si128((const __m128i *) rk); + uint8_t c[16] = {}; + + uint8_t v[4][4]; + for (int i = 0; i < 16; ++i) { + v[((i / 4) + (i % 4)) % 4][i % 4] = crypto_aes_rsbox[a[i]]; + } + for (int i = 0; i < 16; ++i) { + c[i] = v[i / 4][i % 4] ^ rk[i]; + } + + __m128i result_reference = _mm_loadu_si128((const __m128i *) c); + __m128i result_intrinsic = _mm_aesdeclast_si128(_a, _rk); + + return validate128(result_reference, result_intrinsic); +} + +result_t test_mm_aesimc_si128(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const uint8_t *a = (uint8_t *) impl.mTestIntPointer1; + __m128i _a = _mm_loadu_si128((const __m128i *) a); + + uint8_t e, f, g, h, v[4][4]; + for (int i = 0; i < 16; ++i) { + ((uint8_t *) v)[i] = a[i]; + } + for (int i = 0; i < 4; ++i) { + e = v[i][0]; + f = v[i][1]; + g = v[i][2]; + h = v[i][3]; + + v[i][0] = (uint8_t) (MULTIPLY(e, 0x0e) ^ MULTIPLY(f, 0x0b) ^ + MULTIPLY(g, 0x0d) ^ MULTIPLY(h, 0x09)); + v[i][1] = (uint8_t) (MULTIPLY(e, 0x09) ^ MULTIPLY(f, 0x0e) ^ + MULTIPLY(g, 0x0b) ^ MULTIPLY(h, 0x0d)); + v[i][2] = (uint8_t) (MULTIPLY(e, 0x0d) ^ MULTIPLY(f, 0x09) ^ + MULTIPLY(g, 0x0e) ^ MULTIPLY(h, 0x0b)); + v[i][3] = (uint8_t) (MULTIPLY(e, 0x0b) ^ MULTIPLY(f, 0x0d) ^ + MULTIPLY(g, 0x09) ^ MULTIPLY(h, 0x0e)); + } + + __m128i result_reference = _mm_loadu_si128((const __m128i *) v); + __m128i result_intrinsic = _mm_aesimc_si128(_a); + + return validate128(result_reference, result_intrinsic); +} + +static inline uint32_t sub_word(uint32_t in) +{ + return (crypto_aes_sbox[(in >> 24) & 0xff] << 24) | + (crypto_aes_sbox[(in >> 16) & 0xff] << 16) | + (crypto_aes_sbox[(in >> 8) & 0xff] << 8) | + (crypto_aes_sbox[in & 0xff]); +} + +// FIXME: improve the test case for AES-256 key expansion. +// Reference: +// https://github.com/randombit/botan/blob/master/src/lib/block/aes/aes_ni/aes_ni.cpp +result_t test_mm_aeskeygenassist_si128(const SSE2NEONTestImpl &impl, + uint32_t iter) +{ + const uint32_t *a = (uint32_t *) impl.mTestIntPointer1; + __m128i data = load_m128i(a); + uint32_t sub_x1 = sub_word(a[1]); + uint32_t sub_x3 = sub_word(a[3]); + __m128i result_reference; + __m128i result_intrinsic; +#define TEST_IMPL(IDX) \ + uint32_t res##IDX[4] = { \ + sub_x1, \ + rotr(sub_x1, 8) ^ IDX, \ + sub_x3, \ + rotr(sub_x3, 8) ^ IDX, \ + }; \ + result_reference = load_m128i(res##IDX); \ + result_intrinsic = _mm_aeskeygenassist_si128(data, IDX); \ + CHECK_RESULT(validate128(result_reference, result_intrinsic)); + + IMM_256_ITER +#undef TEST_IMPL + return TEST_SUCCESS; +} + +/* Others */ +result_t test_mm_clmulepi64_si128(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const uint64_t *_a = (const uint64_t *) impl.mTestIntPointer1; + const uint64_t *_b = (const uint64_t *) impl.mTestIntPointer2; + __m128i a = load_m128i(_a); + __m128i b = load_m128i(_b); + auto result = clmul_64(_a[0], _b[0]); + if (!validateUInt64(_mm_clmulepi64_si128(a, b, 0x00), result.first, + result.second)) + return TEST_FAIL; + result = clmul_64(_a[1], _b[0]); + if (!validateUInt64(_mm_clmulepi64_si128(a, b, 0x01), result.first, + result.second)) + return TEST_FAIL; + result = clmul_64(_a[0], _b[1]); + if (!validateUInt64(_mm_clmulepi64_si128(a, b, 0x10), result.first, + result.second)) + return TEST_FAIL; + result = clmul_64(_a[1], _b[1]); + if (!validateUInt64(_mm_clmulepi64_si128(a, b, 0x11), result.first, + result.second)) + return TEST_FAIL; + return TEST_SUCCESS; +} + +result_t test_mm_get_denormals_zero_mode(const SSE2NEONTestImpl &impl, + uint32_t iter) +{ + int res_denormals_zero_on, res_denormals_zero_off; + + _MM_SET_DENORMALS_ZERO_MODE(_MM_DENORMALS_ZERO_ON); + res_denormals_zero_on = + _MM_GET_DENORMALS_ZERO_MODE() == _MM_DENORMALS_ZERO_ON; + + _MM_SET_DENORMALS_ZERO_MODE(_MM_DENORMALS_ZERO_OFF); + res_denormals_zero_off = + _MM_GET_DENORMALS_ZERO_MODE() == _MM_DENORMALS_ZERO_OFF; + + return (res_denormals_zero_on && res_denormals_zero_off) ? TEST_SUCCESS + : TEST_FAIL; +} + +static int popcnt_reference(uint64_t a) +{ + int count = 0; + while (a != 0) { + count += a & 1; + a >>= 1; + } + return count; +} + +result_t test_mm_popcnt_u32(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const uint64_t *a = (const uint64_t *) impl.mTestIntPointer1; + ASSERT_RETURN(popcnt_reference((uint32_t) a[0]) == + _mm_popcnt_u32((unsigned int) a[0])); + return TEST_SUCCESS; +} + +result_t test_mm_popcnt_u64(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + const uint64_t *a = (const uint64_t *) impl.mTestIntPointer1; + ASSERT_RETURN(popcnt_reference(a[0]) == _mm_popcnt_u64(a[0])); + return TEST_SUCCESS; +} + +OPTNONE result_t test_mm_set_denormals_zero_mode(const SSE2NEONTestImpl &impl, + uint32_t iter) +{ + result_t res_set_denormals_zero_on, res_set_denormals_zero_off; + float factor = 2; + float denormal = FLT_MIN / factor; + float denormals[4] = {denormal, denormal, denormal, denormal}; + float factors[4] = {factor, factor, factor, factor}; + __m128 ret = _mm_setzero_ps(); + + _MM_SET_DENORMALS_ZERO_MODE(_MM_DENORMALS_ZERO_ON); + ret = _mm_mul_ps(load_m128(denormals), load_m128(factors)); + res_set_denormals_zero_on = validateFloat(ret, 0, 0, 0, 0); + + _MM_SET_DENORMALS_ZERO_MODE(_MM_DENORMALS_ZERO_OFF); + ret = _mm_mul_ps(load_m128(denormals), load_m128(factors)); +#if defined(__arm__) + // AArch32 Advanced SIMD arithmetic always uses the Flush-to-zero setting, + // regardless of the value of the FZ bit. + res_set_denormals_zero_off = validateFloat(ret, 0, 0, 0, 0); +#else + res_set_denormals_zero_off = + validateFloat(ret, FLT_MIN, FLT_MIN, FLT_MIN, FLT_MIN); +#endif + + if (res_set_denormals_zero_on == TEST_FAIL || + res_set_denormals_zero_off == TEST_FAIL) + return TEST_FAIL; + return TEST_SUCCESS; +} + +result_t test_rdtsc(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + uint64_t start = _rdtsc(); + for (int i = 0; i < 100000; i++) { +#if defined(_MSC_VER) + _ReadWriteBarrier(); +#else + __asm__ __volatile__("" ::: "memory"); +#endif + } + uint64_t end = _rdtsc(); + return end > start ? TEST_SUCCESS : TEST_FAIL; +} + +SSE2NEONTestImpl::SSE2NEONTestImpl(void) +{ + mTestFloatPointer1 = (float *) platformAlignedAlloc(sizeof(__m128)); + mTestFloatPointer2 = (float *) platformAlignedAlloc(sizeof(__m128)); + mTestIntPointer1 = (int32_t *) platformAlignedAlloc(sizeof(__m128i)); + mTestIntPointer2 = (int32_t *) platformAlignedAlloc(sizeof(__m128i)); + SSE2NEON_INIT_RNG(123456); + for (uint32_t i = 0; i < MAX_TEST_VALUE; i++) { + mTestFloats[i] = ranf(-100000, 100000); + mTestInts[i] = (int32_t) ranf(-100000, 100000); + } +} + +// Dummy function to match the case label in runSingleTest. +result_t test_last(const SSE2NEONTestImpl &impl, uint32_t iter) +{ + return TEST_SUCCESS; +} + +result_t SSE2NEONTestImpl::loadTestFloatPointers(uint32_t i) +{ + result_t ret = + do_mm_store_ps(mTestFloatPointer1, mTestFloats[i], mTestFloats[i + 1], + mTestFloats[i + 2], mTestFloats[i + 3]); + if (ret == TEST_SUCCESS) { + ret = do_mm_store_ps(mTestFloatPointer2, mTestFloats[i + 4], + mTestFloats[i + 5], mTestFloats[i + 6], + mTestFloats[i + 7]); + } + return ret; +} + +result_t SSE2NEONTestImpl::loadTestIntPointers(uint32_t i) +{ + result_t ret = + do_mm_store_ps(mTestIntPointer1, mTestInts[i], mTestInts[i + 1], + mTestInts[i + 2], mTestInts[i + 3]); + if (ret == TEST_SUCCESS) { + ret = + do_mm_store_ps(mTestIntPointer2, mTestInts[i + 4], mTestInts[i + 5], + mTestInts[i + 6], mTestInts[i + 7]); + } + + return ret; +} + +result_t SSE2NEONTestImpl::runSingleTest(InstructionTest test, uint32_t i) +{ + result_t ret = TEST_SUCCESS; + + switch (test) { +#define _(x) \ + case it_##x: \ + ret = test_##x(*this, i); \ + break; + INTRIN_LIST +#undef _ + } + + return ret; +} + +SSE2NEONTest *SSE2NEONTest::create(void) +{ + SSE2NEONTestImpl *st = new SSE2NEONTestImpl; + return static_cast(st); +} + +} // namespace SSE2NEON diff --git a/deps/sse2neon/tests/impl.h b/deps/sse2neon/tests/impl.h new file mode 100644 index 000000000..5cc5a6f8c --- /dev/null +++ b/deps/sse2neon/tests/impl.h @@ -0,0 +1,572 @@ +#ifndef SSE2NEONTEST_H +#define SSE2NEONTEST_H + +#include "common.h" + +#define INTRIN_LIST \ + /* MMX */ \ + _(mm_empty) \ + /* SSE */ \ + _(mm_add_ps) \ + _(mm_add_ss) \ + _(mm_and_ps) \ + _(mm_andnot_ps) \ + _(mm_avg_pu16) \ + _(mm_avg_pu8) \ + _(mm_cmpeq_ps) \ + _(mm_cmpeq_ss) \ + _(mm_cmpge_ps) \ + _(mm_cmpge_ss) \ + _(mm_cmpgt_ps) \ + _(mm_cmpgt_ss) \ + _(mm_cmple_ps) \ + _(mm_cmple_ss) \ + _(mm_cmplt_ps) \ + _(mm_cmplt_ss) \ + _(mm_cmpneq_ps) \ + _(mm_cmpneq_ss) \ + _(mm_cmpnge_ps) \ + _(mm_cmpnge_ss) \ + _(mm_cmpngt_ps) \ + _(mm_cmpngt_ss) \ + _(mm_cmpnle_ps) \ + _(mm_cmpnle_ss) \ + _(mm_cmpnlt_ps) \ + _(mm_cmpnlt_ss) \ + _(mm_cmpord_ps) \ + _(mm_cmpord_ss) \ + _(mm_cmpunord_ps) \ + _(mm_cmpunord_ss) \ + _(mm_comieq_ss) \ + _(mm_comige_ss) \ + _(mm_comigt_ss) \ + _(mm_comile_ss) \ + _(mm_comilt_ss) \ + _(mm_comineq_ss) \ + _(mm_cvt_pi2ps) \ + _(mm_cvt_ps2pi) \ + _(mm_cvt_si2ss) \ + _(mm_cvt_ss2si) \ + _(mm_cvtpi16_ps) \ + _(mm_cvtpi32_ps) \ + _(mm_cvtpi32x2_ps) \ + _(mm_cvtpi8_ps) \ + _(mm_cvtps_pi16) \ + _(mm_cvtps_pi32) \ + _(mm_cvtps_pi8) \ + _(mm_cvtpu16_ps) \ + _(mm_cvtpu8_ps) \ + _(mm_cvtsi32_ss) \ + _(mm_cvtsi64_ss) \ + _(mm_cvtss_f32) \ + _(mm_cvtss_si32) \ + _(mm_cvtss_si64) \ + _(mm_cvtt_ps2pi) \ + _(mm_cvtt_ss2si) \ + _(mm_cvttps_pi32) \ + _(mm_cvttss_si32) \ + _(mm_cvttss_si64) \ + _(mm_div_ps) \ + _(mm_div_ss) \ + _(mm_extract_pi16) \ + _(mm_free) \ + _(mm_get_flush_zero_mode) \ + _(mm_get_rounding_mode) \ + _(mm_getcsr) \ + _(mm_insert_pi16) \ + _(mm_load_ps) \ + _(mm_load_ps1) \ + _(mm_load_ss) \ + _(mm_load1_ps) \ + _(mm_loadh_pi) \ + _(mm_loadl_pi) \ + _(mm_loadr_ps) \ + _(mm_loadu_ps) \ + _(mm_loadu_si16) \ + _(mm_loadu_si64) \ + _(mm_malloc) \ + _(mm_maskmove_si64) \ + _(m_maskmovq) \ + _(mm_max_pi16) \ + _(mm_max_ps) \ + _(mm_max_pu8) \ + _(mm_max_ss) \ + _(mm_min_pi16) \ + _(mm_min_ps) \ + _(mm_min_pu8) \ + _(mm_min_ss) \ + _(mm_move_ss) \ + _(mm_movehl_ps) \ + _(mm_movelh_ps) \ + _(mm_movemask_pi8) \ + _(mm_movemask_ps) \ + _(mm_mul_ps) \ + _(mm_mul_ss) \ + _(mm_mulhi_pu16) \ + _(mm_or_ps) \ + _(m_pavgb) \ + _(m_pavgw) \ + _(m_pextrw) \ + _(m_pinsrw) \ + _(m_pmaxsw) \ + _(m_pmaxub) \ + _(m_pminsw) \ + _(m_pminub) \ + _(m_pmovmskb) \ + _(m_pmulhuw) \ + _(mm_prefetch) \ + _(m_psadbw) \ + _(m_pshufw) \ + _(mm_rcp_ps) \ + _(mm_rcp_ss) \ + _(mm_rsqrt_ps) \ + _(mm_rsqrt_ss) \ + _(mm_sad_pu8) \ + _(mm_set_flush_zero_mode) \ + _(mm_set_ps) \ + _(mm_set_ps1) \ + _(mm_set_rounding_mode) \ + _(mm_set_ss) \ + _(mm_set1_ps) \ + _(mm_setcsr) \ + _(mm_setr_ps) \ + _(mm_setzero_ps) \ + _(mm_sfence) \ + _(mm_shuffle_pi16) \ + _(mm_shuffle_ps) \ + _(mm_sqrt_ps) \ + _(mm_sqrt_ss) \ + _(mm_store_ps) \ + _(mm_store_ps1) \ + _(mm_store_ss) \ + _(mm_store1_ps) \ + _(mm_storeh_pi) \ + _(mm_storel_pi) \ + _(mm_storer_ps) \ + _(mm_storeu_ps) \ + _(mm_storeu_si16) \ + _(mm_storeu_si64) \ + _(mm_stream_pi) \ + _(mm_stream_ps) \ + _(mm_sub_ps) \ + _(mm_sub_ss) \ + _(mm_ucomieq_ss) \ + _(mm_ucomige_ss) \ + _(mm_ucomigt_ss) \ + _(mm_ucomile_ss) \ + _(mm_ucomilt_ss) \ + _(mm_ucomineq_ss) \ + _(mm_undefined_ps) \ + _(mm_unpackhi_ps) \ + _(mm_unpacklo_ps) \ + _(mm_xor_ps) \ + /* SSE2 */ \ + _(mm_add_epi16) \ + _(mm_add_epi32) \ + _(mm_add_epi64) \ + _(mm_add_epi8) \ + _(mm_add_pd) \ + _(mm_add_sd) \ + _(mm_add_si64) \ + _(mm_adds_epi16) \ + _(mm_adds_epi8) \ + _(mm_adds_epu16) \ + _(mm_adds_epu8) \ + _(mm_and_pd) \ + _(mm_and_si128) \ + _(mm_andnot_pd) \ + _(mm_andnot_si128) \ + _(mm_avg_epu16) \ + _(mm_avg_epu8) \ + _(mm_bslli_si128) \ + _(mm_bsrli_si128) \ + _(mm_castpd_ps) \ + _(mm_castpd_si128) \ + _(mm_castps_pd) \ + _(mm_castps_si128) \ + _(mm_castsi128_pd) \ + _(mm_castsi128_ps) \ + _(mm_clflush) \ + _(mm_cmpeq_epi16) \ + _(mm_cmpeq_epi32) \ + _(mm_cmpeq_epi8) \ + _(mm_cmpeq_pd) \ + _(mm_cmpeq_sd) \ + _(mm_cmpge_pd) \ + _(mm_cmpge_sd) \ + _(mm_cmpgt_epi16) \ + _(mm_cmpgt_epi32) \ + _(mm_cmpgt_epi8) \ + _(mm_cmpgt_pd) \ + _(mm_cmpgt_sd) \ + _(mm_cmple_pd) \ + _(mm_cmple_sd) \ + _(mm_cmplt_epi16) \ + _(mm_cmplt_epi32) \ + _(mm_cmplt_epi8) \ + _(mm_cmplt_pd) \ + _(mm_cmplt_sd) \ + _(mm_cmpneq_pd) \ + _(mm_cmpneq_sd) \ + _(mm_cmpnge_pd) \ + _(mm_cmpnge_sd) \ + _(mm_cmpngt_pd) \ + _(mm_cmpngt_sd) \ + _(mm_cmpnle_pd) \ + _(mm_cmpnle_sd) \ + _(mm_cmpnlt_pd) \ + _(mm_cmpnlt_sd) \ + _(mm_cmpord_pd) \ + _(mm_cmpord_sd) \ + _(mm_cmpunord_pd) \ + _(mm_cmpunord_sd) \ + _(mm_comieq_sd) \ + _(mm_comige_sd) \ + _(mm_comigt_sd) \ + _(mm_comile_sd) \ + _(mm_comilt_sd) \ + _(mm_comineq_sd) \ + _(mm_cvtepi32_pd) \ + _(mm_cvtepi32_ps) \ + _(mm_cvtpd_epi32) \ + _(mm_cvtpd_pi32) \ + _(mm_cvtpd_ps) \ + _(mm_cvtpi32_pd) \ + _(mm_cvtps_epi32) \ + _(mm_cvtps_pd) \ + _(mm_cvtsd_f64) \ + _(mm_cvtsd_si32) \ + _(mm_cvtsd_si64) \ + _(mm_cvtsd_si64x) \ + _(mm_cvtsd_ss) \ + _(mm_cvtsi128_si32) \ + _(mm_cvtsi128_si64) \ + _(mm_cvtsi128_si64x) \ + _(mm_cvtsi32_sd) \ + _(mm_cvtsi32_si128) \ + _(mm_cvtsi64_sd) \ + _(mm_cvtsi64_si128) \ + _(mm_cvtsi64x_sd) \ + _(mm_cvtsi64x_si128) \ + _(mm_cvtss_sd) \ + _(mm_cvttpd_epi32) \ + _(mm_cvttpd_pi32) \ + _(mm_cvttps_epi32) \ + _(mm_cvttsd_si32) \ + _(mm_cvttsd_si64) \ + _(mm_cvttsd_si64x) \ + _(mm_div_pd) \ + _(mm_div_sd) \ + _(mm_extract_epi16) \ + _(mm_insert_epi16) \ + _(mm_lfence) \ + _(mm_load_pd) \ + _(mm_load_pd1) \ + _(mm_load_sd) \ + _(mm_load_si128) \ + _(mm_load1_pd) \ + _(mm_loadh_pd) \ + _(mm_loadl_epi64) \ + _(mm_loadl_pd) \ + _(mm_loadr_pd) \ + _(mm_loadu_pd) \ + _(mm_loadu_si128) \ + _(mm_loadu_si32) \ + _(mm_madd_epi16) \ + _(mm_maskmoveu_si128) \ + _(mm_max_epi16) \ + _(mm_max_epu8) \ + _(mm_max_pd) \ + _(mm_max_sd) \ + _(mm_mfence) \ + _(mm_min_epi16) \ + _(mm_min_epu8) \ + _(mm_min_pd) \ + _(mm_min_sd) \ + _(mm_move_epi64) \ + _(mm_move_sd) \ + _(mm_movemask_epi8) \ + _(mm_movemask_pd) \ + _(mm_movepi64_pi64) \ + _(mm_movpi64_epi64) \ + _(mm_mul_epu32) \ + _(mm_mul_pd) \ + _(mm_mul_sd) \ + _(mm_mul_su32) \ + _(mm_mulhi_epi16) \ + _(mm_mulhi_epu16) \ + _(mm_mullo_epi16) \ + _(mm_or_pd) \ + _(mm_or_si128) \ + _(mm_packs_epi16) \ + _(mm_packs_epi32) \ + _(mm_packus_epi16) \ + _(mm_pause) \ + _(mm_sad_epu8) \ + _(mm_set_epi16) \ + _(mm_set_epi32) \ + _(mm_set_epi64) \ + _(mm_set_epi64x) \ + _(mm_set_epi8) \ + _(mm_set_pd) \ + _(mm_set_pd1) \ + _(mm_set_sd) \ + _(mm_set1_epi16) \ + _(mm_set1_epi32) \ + _(mm_set1_epi64) \ + _(mm_set1_epi64x) \ + _(mm_set1_epi8) \ + _(mm_set1_pd) \ + _(mm_setr_epi16) \ + _(mm_setr_epi32) \ + _(mm_setr_epi64) \ + _(mm_setr_epi8) \ + _(mm_setr_pd) \ + _(mm_setzero_pd) \ + _(mm_setzero_si128) \ + _(mm_shuffle_epi32) \ + _(mm_shuffle_pd) \ + _(mm_shufflehi_epi16) \ + _(mm_shufflelo_epi16) \ + _(mm_sll_epi16) \ + _(mm_sll_epi32) \ + _(mm_sll_epi64) \ + _(mm_slli_epi16) \ + _(mm_slli_epi32) \ + _(mm_slli_epi64) \ + _(mm_slli_si128) \ + _(mm_sqrt_pd) \ + _(mm_sqrt_sd) \ + _(mm_sra_epi16) \ + _(mm_sra_epi32) \ + _(mm_srai_epi16) \ + _(mm_srai_epi32) \ + _(mm_srl_epi16) \ + _(mm_srl_epi32) \ + _(mm_srl_epi64) \ + _(mm_srli_epi16) \ + _(mm_srli_epi32) \ + _(mm_srli_epi64) \ + _(mm_srli_si128) \ + _(mm_store_pd) \ + _(mm_store_pd1) \ + _(mm_store_sd) \ + _(mm_store_si128) \ + _(mm_store1_pd) \ + _(mm_storeh_pd) \ + _(mm_storel_epi64) \ + _(mm_storel_pd) \ + _(mm_storer_pd) \ + _(mm_storeu_pd) \ + _(mm_storeu_si128) \ + _(mm_storeu_si32) \ + _(mm_stream_pd) \ + _(mm_stream_si128) \ + _(mm_stream_si32) \ + _(mm_stream_si64) \ + _(mm_sub_epi16) \ + _(mm_sub_epi32) \ + _(mm_sub_epi64) \ + _(mm_sub_epi8) \ + _(mm_sub_pd) \ + _(mm_sub_sd) \ + _(mm_sub_si64) \ + _(mm_subs_epi16) \ + _(mm_subs_epi8) \ + _(mm_subs_epu16) \ + _(mm_subs_epu8) \ + _(mm_ucomieq_sd) \ + _(mm_ucomige_sd) \ + _(mm_ucomigt_sd) \ + _(mm_ucomile_sd) \ + _(mm_ucomilt_sd) \ + _(mm_ucomineq_sd) \ + _(mm_undefined_pd) \ + _(mm_undefined_si128) \ + _(mm_unpackhi_epi16) \ + _(mm_unpackhi_epi32) \ + _(mm_unpackhi_epi64) \ + _(mm_unpackhi_epi8) \ + _(mm_unpackhi_pd) \ + _(mm_unpacklo_epi16) \ + _(mm_unpacklo_epi32) \ + _(mm_unpacklo_epi64) \ + _(mm_unpacklo_epi8) \ + _(mm_unpacklo_pd) \ + _(mm_xor_pd) \ + _(mm_xor_si128) \ + /* SSE3 */ \ + _(mm_addsub_pd) \ + _(mm_addsub_ps) \ + _(mm_hadd_pd) \ + _(mm_hadd_ps) \ + _(mm_hsub_pd) \ + _(mm_hsub_ps) \ + _(mm_lddqu_si128) \ + _(mm_loaddup_pd) \ + _(mm_movedup_pd) \ + _(mm_movehdup_ps) \ + _(mm_moveldup_ps) \ + /* SSSE3 */ \ + _(mm_abs_epi16) \ + _(mm_abs_epi32) \ + _(mm_abs_epi8) \ + _(mm_abs_pi16) \ + _(mm_abs_pi32) \ + _(mm_abs_pi8) \ + _(mm_alignr_epi8) \ + _(mm_alignr_pi8) \ + _(mm_hadd_epi16) \ + _(mm_hadd_epi32) \ + _(mm_hadd_pi16) \ + _(mm_hadd_pi32) \ + _(mm_hadds_epi16) \ + _(mm_hadds_pi16) \ + _(mm_hsub_epi16) \ + _(mm_hsub_epi32) \ + _(mm_hsub_pi16) \ + _(mm_hsub_pi32) \ + _(mm_hsubs_epi16) \ + _(mm_hsubs_pi16) \ + _(mm_maddubs_epi16) \ + _(mm_maddubs_pi16) \ + _(mm_mulhrs_epi16) \ + _(mm_mulhrs_pi16) \ + _(mm_shuffle_epi8) \ + _(mm_shuffle_pi8) \ + _(mm_sign_epi16) \ + _(mm_sign_epi32) \ + _(mm_sign_epi8) \ + _(mm_sign_pi16) \ + _(mm_sign_pi32) \ + _(mm_sign_pi8) \ + /* SSE4.1 */ \ + _(mm_blend_epi16) \ + _(mm_blend_pd) \ + _(mm_blend_ps) \ + _(mm_blendv_epi8) \ + _(mm_blendv_pd) \ + _(mm_blendv_ps) \ + _(mm_ceil_pd) \ + _(mm_ceil_ps) \ + _(mm_ceil_sd) \ + _(mm_ceil_ss) \ + _(mm_cmpeq_epi64) \ + _(mm_cvtepi16_epi32) \ + _(mm_cvtepi16_epi64) \ + _(mm_cvtepi32_epi64) \ + _(mm_cvtepi8_epi16) \ + _(mm_cvtepi8_epi32) \ + _(mm_cvtepi8_epi64) \ + _(mm_cvtepu16_epi32) \ + _(mm_cvtepu16_epi64) \ + _(mm_cvtepu32_epi64) \ + _(mm_cvtepu8_epi16) \ + _(mm_cvtepu8_epi32) \ + _(mm_cvtepu8_epi64) \ + _(mm_dp_pd) \ + _(mm_dp_ps) \ + _(mm_extract_epi32) \ + _(mm_extract_epi64) \ + _(mm_extract_epi8) \ + _(mm_extract_ps) \ + _(mm_floor_pd) \ + _(mm_floor_ps) \ + _(mm_floor_sd) \ + _(mm_floor_ss) \ + _(mm_insert_epi32) \ + _(mm_insert_epi64) \ + _(mm_insert_epi8) \ + _(mm_insert_ps) \ + _(mm_max_epi32) \ + _(mm_max_epi8) \ + _(mm_max_epu16) \ + _(mm_max_epu32) \ + _(mm_min_epi32) \ + _(mm_min_epi8) \ + _(mm_min_epu16) \ + _(mm_min_epu32) \ + _(mm_minpos_epu16) \ + _(mm_mpsadbw_epu8) \ + _(mm_mul_epi32) \ + _(mm_mullo_epi32) \ + _(mm_packus_epi32) \ + _(mm_round_pd) \ + _(mm_round_ps) \ + _(mm_round_sd) \ + _(mm_round_ss) \ + _(mm_stream_load_si128) \ + _(mm_test_all_ones) \ + _(mm_test_all_zeros) \ + _(mm_test_mix_ones_zeros) \ + _(mm_testc_si128) \ + _(mm_testnzc_si128) \ + _(mm_testz_si128) \ + /* SSE4.2 */ \ + _(mm_cmpestra) \ + _(mm_cmpestrc) \ + _(mm_cmpestri) \ + _(mm_cmpestrm) \ + _(mm_cmpestro) \ + _(mm_cmpestrs) \ + _(mm_cmpestrz) \ + _(mm_cmpgt_epi64) \ + _(mm_cmpistra) \ + _(mm_cmpistrc) \ + _(mm_cmpistri) \ + _(mm_cmpistrm) \ + _(mm_cmpistro) \ + _(mm_cmpistrs) \ + _(mm_cmpistrz) \ + _(mm_crc32_u16) \ + _(mm_crc32_u32) \ + _(mm_crc32_u64) \ + _(mm_crc32_u8) \ + /* AES */ \ + _(mm_aesenc_si128) \ + _(mm_aesdec_si128) \ + _(mm_aesenclast_si128) \ + _(mm_aesdeclast_si128) \ + _(mm_aesimc_si128) \ + _(mm_aeskeygenassist_si128) \ + /* Others */ \ + _(mm_clmulepi64_si128) \ + _(mm_get_denormals_zero_mode) \ + _(mm_popcnt_u32) \ + _(mm_popcnt_u64) \ + _(mm_set_denormals_zero_mode) \ + _(rdtsc) \ + _(last) /* This indicates the end of macros */ + +namespace SSE2NEON +{ +// The way unit tests are implemented is that 10,000 random floating point and +// integer vec4 numbers are generated as sample data. +// +// A short C implementation of every intrinsic is implemented and compared to +// the actual expected results from the corresponding SSE intrinsic against all +// of the 10,000 randomized input vectors. When running on ARM, then the results +// are compared to the NEON approximate version. +extern const char *instructionString[]; +enum InstructionTest { +#define _(x) it_##x, + INTRIN_LIST +#undef _ +}; + +class SSE2NEONTest +{ +public: + static SSE2NEONTest *create(void); // create the test. + + // Run test of this instruction; + // Passed: TEST_SUCCESS (1) + // Failed: TEST_FAIL (0) + // Unimplemented: TEST_UNIMPL (-1) + virtual result_t runTest(InstructionTest test) = 0; + virtual void release(void) = 0; +}; + +} // namespace SSE2NEON + +#endif diff --git a/deps/sse2neon/tests/main.cpp b/deps/sse2neon/tests/main.cpp new file mode 100644 index 000000000..844353e08 --- /dev/null +++ b/deps/sse2neon/tests/main.cpp @@ -0,0 +1,39 @@ +#include +#include +#include "impl.h" + +int main(int /*argc*/, const char ** /*argv*/) +{ + SSE2NEON::SSE2NEONTest *test = SSE2NEON::SSE2NEONTest::create(); + uint32_t passCount = 0; + uint32_t failedCount = 0; + uint32_t ignoreCount = 0; + for (uint32_t i = 0; i < SSE2NEON::it_last; i++) { + SSE2NEON::InstructionTest it = SSE2NEON::InstructionTest(i); + SSE2NEON::result_t ret = test->runTest(it); + // If the test fails, we will run it again so we can step into the + // debugger and figure out why! + if (ret == SSE2NEON::TEST_FAIL) { + printf("Test %-30s failed\n", SSE2NEON::instructionString[it]); + failedCount++; + } else if (ret == SSE2NEON::TEST_UNIMPL) { + printf("Test %-30s skipped\n", SSE2NEON::instructionString[it]); + ignoreCount++; + } else { + printf("Test %-30s passed\n", SSE2NEON::instructionString[it]); + passCount++; + } + } + test->release(); + printf( + "SSE2NEONTest Complete!\n" + "Passed: %d\n" + "Failed: %d\n" + "Ignored: %d\n" + "Coverage rate: %.2f%%\n", + passCount, failedCount, ignoreCount, + (float) passCount / (float) (passCount + failedCount + ignoreCount) * + 100); + + return failedCount ? -1 : 0; +} diff --git a/deps/unrar/hc_decompress_rar.cpp b/deps/unrar/hc_decompress_rar.cpp index 7266c0877..59ffea5fd 100644 --- a/deps/unrar/hc_decompress_rar.cpp +++ b/deps/unrar/hc_decompress_rar.cpp @@ -12,7 +12,7 @@ #define SOLID false #define METHOD VER_UNPACK // 29 for RAR3 archives -extern "C" unsigned int hc_decompress_rar (unsigned char *Win, unsigned char *Inp, unsigned char *VM, unsigned char *PPM, const unsigned int OutputSize, const unsigned char *Input, const unsigned int PackSize, const unsigned int UnpackSize, const unsigned char *Key, const unsigned char *IV) +extern "C" unsigned int hc_decompress_rar (unsigned char *Win, unsigned char *Inp, unsigned char *VM, unsigned char *PPM, const unsigned int OutputSize, const unsigned char *Input, const unsigned int PackSize, const unsigned int UnpackSize, const unsigned char *Key, const unsigned char *IV, unsigned int *unpack_failed) { ComprDataIO DataIO; @@ -47,6 +47,8 @@ extern "C" unsigned int hc_decompress_rar (unsigned char *Win, unsigned char *In Unp.DoUnpack (METHOD, SOLID); // sets output + *unpack_failed = (Unp.WrittenFileSize != UnpackSize); + unsigned int crc32 = (unsigned int) DataIO.UnpHash.GetCRC32 (); return crc32; diff --git a/deps/unrar/unpack.hpp b/deps/unrar/unpack.hpp index 3e23cd320..769fac467 100644 --- a/deps/unrar/unpack.hpp +++ b/deps/unrar/unpack.hpp @@ -279,7 +279,6 @@ class Unpack:PackDef bool Suspended; bool UnpAllBuf; bool UnpSomeRead; - int64 WrittenFileSize; bool FileExtracted; @@ -389,6 +388,8 @@ class Unpack:PackDef void UnpackDecode(UnpackThreadData &D); #endif + int64 WrittenFileSize; + byte *hcwin; byte *hcppm; diff --git a/deps/xxHash/.gitattributes b/deps/xxHash/.gitattributes deleted file mode 100644 index fbcf75b55..000000000 --- a/deps/xxHash/.gitattributes +++ /dev/null @@ -1,10 +0,0 @@ -# Set the default behavior -* text eol=lf - -# Explicitly declare source files -*.c text eol=lf -*.h text eol=lf - -# Denote files that should not be modified. -*.odt binary - diff --git a/deps/xxHash/.gitignore b/deps/xxHash/.gitignore deleted file mode 100644 index d0ce9aac3..000000000 --- a/deps/xxHash/.gitignore +++ /dev/null @@ -1,47 +0,0 @@ -# objects -*.o -*.obj -*.s - -# libraries -libxxhash.* -!libxxhash.pc.in - -# Executables -*.exe -xxh32sum -xxh64sum -xxh128sum -xxhsum -xxhsum32 -xxhsum_privateXXH -xxhsum_inlinedXXH -dispatch -tests/generate_unicode_test - -# compilation chain -.clang_complete - -# Mac OS-X artefacts -*.dSYM -.DS_Store - -# Wasm / emcc / emscripten artefacts -*.html -*.wasm -*.js - -# CMake build directories -build*/ - -# project managers artifacts -.projectile - -# analyzer artifacts -infer-out - -# test artifacts -.test* -tmp* -tests/*.unicode -tests/unicode_test* diff --git a/deps/xxHash/.travis.yml b/deps/xxHash/.travis.yml deleted file mode 100644 index 2f3a21680..000000000 --- a/deps/xxHash/.travis.yml +++ /dev/null @@ -1,132 +0,0 @@ -language: c - -# Dump CPU info before start -before_install: - - cat /proc/cpuinfo - -matrix: - fast_finish: true - include: - - - name: General linux tests (Xenial) - dist: xenial - arch: amd64 - addons: - apt: - packages: - - clang - - g++-multilib - - gcc-multilib - - cppcheck - script: - - make -B test-all - - make clean - - make dispatch - - make clean - - CC=g++ CFLAGS="-O1 -mavx512f" make - - make clean - - CC=g++ CFLAGS="-Wall -Wextra" make DISPATCH=1 - - - - name: Check results consistency on x64 - arch: amd64 - script: - - CPPFLAGS=-DXXH_VECTOR=XXH_SCALAR make check # Scalar code path - - make clean - - CPPFLAGS=-DXXH_VECTOR=XXH_SSE2 make check # SSE2 code path - - make clean - - CPPFLAGS="-mavx2 -DXXH_VECTOR=XXH_AVX2" make check # AVX2 code path - - make clean - - CPPFLAGS="-mavx512f -DXXH_VECTOR=XXH_AVX512" make check # AVX512 code path - - make clean - - CPPFLAGS=-DXXH_REROLL=1 make check # reroll code path (#240) - - make -C tests/bench - - - name: ARM compilation and consistency checks (Qemu) - dist: xenial - arch: amd64 - addons: - apt: - packages: - - qemu-system-arm - - qemu-user-static - - gcc-arm-linux-gnueabi - - libc6-dev-armel-cross - script: - # arm (32-bit) - - CC=arm-linux-gnueabi-gcc CPPFLAGS=-DXXH_VECTOR=XXH_SCALAR LDFLAGS=-static RUN_ENV=qemu-arm-static make check # Scalar code path - - make clean - # NEON (32-bit) - - CC=arm-linux-gnueabi-gcc CPPFLAGS=-DXXH_VECTOR=XXH_NEON CFLAGS="-O3 -march=armv7-a -fPIC -mfloat-abi=softfp -mfpu=neon-vfpv4" LDFLAGS=-static RUN_ENV=qemu-arm-static make check # NEON code path - - - name: aarch64 compilation and consistency checks - dist: xenial - arch: arm64 - script: - # aarch64 - - CPPFLAGS=-DXXH_VECTOR=XXH_SCALAR make check # Scalar code path - # NEON (64-bit) - - make clean - - CPPFLAGS=-DXXH_VECTOR=XXH_NEON make check # NEON code path - # clang - - make clean - - CC=clang CPPFLAGS=-DXXH_VECTOR=XXH_SCALAR make check # Scalar code path - # clang + NEON - - make clean - - CC=clang CPPFLAGS=-DXXH_VECTOR=XXH_NEON make check # NEON code path - - # We need Bionic here because the QEMU versions shipped in the older repos - # do not support POWER8 emulation, and compiling QEMU from source is a pain. - - name: PowerPC + PPC64 compilation and consistency checks (Qemu on Bionic) - dist: bionic - arch: amd64 - addons: - apt: - packages: - - qemu-system-ppc - - qemu-user-static - - gcc-powerpc-linux-gnu - - gcc-powerpc64-linux-gnu - - libc6-dev-powerpc-cross - - libc6-dev-ppc64-cross - script: - - CC=powerpc-linux-gnu-gcc RUN_ENV=qemu-ppc-static LDFLAGS=-static make check # Scalar code path - - make clean - - CC=powerpc64-linux-gnu-gcc RUN_ENV=qemu-ppc64-static CPPFLAGS=-DXXH_VECTOR=XXH_SCALAR CFLAGS="-O3" LDFLAGS="-static -m64" make check # Scalar code path - # VSX code - - make clean - - CC=powerpc64-linux-gnu-gcc RUN_ENV="qemu-ppc64-static -cpu power8" CPPFLAGS=-DXXH_VECTOR=XXH_VSX CFLAGS="-O3 -maltivec -mvsx -mcpu=power8 -mpower8-vector" LDFLAGS="-static -m64" make check # VSX code path - # altivec.h redefinition issue #426 - - make clean - - CC=powerpc64-linux-gnu-gcc CPPFLAGS=-DXXH_VECTOR=XXH_VSX CFLAGS="-maltivec -mvsx -mcpu=power8 -mpower8-vector" make -C tests test_ppc_redefine - - - name: PPC64LE compilation and consistency checks - dist: xenial - arch: ppc64le - script: - # Scalar (universal) code path - - CPPFLAGS=-DXXH_VECTOR=XXH_SCALAR LDFLAGS=-static make check - # VSX code path (64-bit) - - make clean - - CPPFLAGS=-DXXH_VECTOR=XXH_VSX CFLAGS="-O3 -maltivec -mvsx -mpower8-vector -mcpu=power8" LDFLAGS="-static" make check - # altivec.h redefinition issue #426 - - make clean - - CPPFLAGS=-DXXH_VECTOR=XXH_VSX CFLAGS="-maltivec -mvsx -mcpu=power8 -mpower8-vector" make -C tests test_ppc_redefine - - - name: IBM s390x compilation and consistency checks - dist: bionic - arch: s390x - script: - # Scalar (universal) code path - - CPPFLAGS=-DXXH_VECTOR=XXH_SCALAR LDFLAGS=-static make check - # s390x code path (64-bit) - - make clean - - CPPFLAGS=-DXXH_VECTOR=XXH_VSX CFLAGS="-O3 -march=arch11 -mzvector" LDFLAGS="-static" make check - - - name: cmake build test - script: - - cd cmake_unofficial - - mkdir build - - cd build - - cmake .. - - make diff --git a/deps/xxHash/CHANGELOG b/deps/xxHash/CHANGELOG index 23870756b..0eaba6116 100644 --- a/deps/xxHash/CHANGELOG +++ b/deps/xxHash/CHANGELOG @@ -1,3 +1,55 @@ +v0.8.3 +- fix : variant `XXH3_128bits_withSecretandSeed()` could produce an invalid result in some specific set of conditions, #894 by @hltj +- cli : vector extension detected at runtime on x86/x64, enabled by default +- cli : new commands `--filelist` and `--files-from`, by @Ian-Clowes +- cli : XXH3 64-bits GNU format can now be generated and checked (command `-H3`) +- portability: LoongArch SX SIMD extension, by @lrzlin +- portability: can build on AIX, suggested by @likema +- portability: validated for SPARC cpus + +v0.8.2 +- fix : XXH3 S390x vector implementation (@hzhuang1) +- fix : PowerPC vector compilation with IBM XL compiler (@MaxiBoether) +- perf : improved WASM speed by x2/x3 using SIMD128 (@easyaspi314) +- perf : improved speed (+20%) for XXH3 on ARM NEON (@easyaspi314) +- cli : Fix filename contain /LF character (@t-mat) +- cli : Support # comment lines in --check files (@t-mat) +- cli : Support commands --binary and --ignore-missing (@t-mat) +- build: fix -Og compilation (@easyaspi314, @t-mat) +- build: fix pkgconfig generation with cmake (@ilya-fedin) +- build: fix icc compilation +- build: fix cmake install directories +- build: new build options XXH_NO_XXH3, XXH_SIZE_OPT and XXH_NO_STREAM to reduce binary size (@easyaspi314) +- build: dedicated install targets (@ffontaine) +- build: support DISPATCH mode in cmake (@hzhuang1) +- portability: fix x86dispatch when building with Visual + clang-cl (@t-mat) +- portability: SVE vector implementation of XXH3 (@hzhuang1) +- portability: compatibility with freestanding environments, using XXH_NO_STDLIB +- portability: can build on Haiku (@Begasus) +- portability: validated on m68k and risc-v +- doc : XXH3 specification (@Adrien1018) +- doc : improved doxygen documentation (@easyaspi314, @t-mat) +- misc : dedicated sanity test binary (@t-mat) + +v0.8.1 +- perf : much improved performance for XXH3 streaming variants, notably on gcc and msvc +- perf : improved XXH64 speed and latency on small inputs +- perf : small XXH32 speed and latency improvement on small inputs of random size +- perf : minor stack usage improvement for XXH32 and XXH64 +- api : new experimental variants XXH3_*_withSecretandSeed() +- api : update XXH3_generateSecret(), can no generate secret of any size (>= XXH3_SECRET_SIZE_MIN) +- cli : xxhsum can now generate and check XXH3 checksums, using command `-H3` +- build: can build xxhash without XXH3, with new build macro XXH_NO_XXH3 +- build: fix xxh_x86dispatch build with MSVC, by @apankrat +- build: XXH_INLINE_ALL can always be used safely, even after XXH_NAMESPACE or a previous XXH_INLINE_ALL +- build: improved PPC64LE vector support, by @mpe +- install: fix pkgconfig, by @ellert +- install: compatibility with Haiku, by @Begasus +- doc : code comments made compatible with doxygen, by @easyaspi314 +- misc : XXH_ACCEPT_NULL_INPUT_POINTER is no longer necessary, all functions can accept NULL input pointers, as long as size == 0 +- misc : complete refactor of CI tests on Github Actions, offering much larger coverage, by @t-mat +- misc : xxhsum code base split into multiple specialized units, within directory cli/, by @easyaspi314 + v0.8.0 - api : stabilize XXH3 - cli : xxhsum can parse BSD-style --check lines, by @WayneD diff --git a/deps/xxHash/Doxyfile b/deps/xxHash/Doxyfile new file mode 100644 index 000000000..d25dd1e3d --- /dev/null +++ b/deps/xxHash/Doxyfile @@ -0,0 +1,64 @@ +# Doxygen config for xxHash +DOXYFILE_ENCODING = UTF-8 + +PROJECT_NAME = "xxHash" +PROJECT_NUMBER = "0.8.3" +PROJECT_BRIEF = "Extremely fast non-cryptographic hash function" +OUTPUT_DIRECTORY = doxygen +OUTPUT_LANGUAGE = English + +# We already separate the internal docs. +INTERNAL_DOCS = NO +# Consistency +SORT_MEMBER_DOCS = NO +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = YES + +# Warnings +QUIET = YES +# Until we document everything +WARN_IF_UNDOCUMENTED = NO + +# TODO: Add the other files. It is just xxhash.h for now. +FILE_PATTERNS = xxhash.h xxh_x86dispatch.c +# Note: xxHash's source files are technically ASCII only. +INPUT_ENCODING = UTF-8 +TAB_SIZE = 4 +MARKDOWN_SUPPORT = YES + +# xxHash is a C library +OPTIMIZE_OUTPUT_FOR_C = YES +# We hide private part from public document +EXTRACT_STATIC = NO +# We hide private part from public document +EXTRACT_PRIVATE = NO +# Document the macros +MACRO_EXPANSION = YES +EXPAND_ONLY_PREDEF = YES +# Predefine some macros to clean up the output. +PREDEFINED = "XXH_DOXYGEN=" \ + "XXH_PUBLIC_API=" \ + "XXH_NOESCAPE=" \ + "XXH_FORCE_INLINE=static inline" \ + "XXH_NO_INLINE=static" \ + "XXH_RESTRICT=restrict" \ + "XSUM_API=" \ + "XXH_STATIC_LINKING_ONLY" \ + "XXH_IMPLEMENTATION" \ + "XXH_PUREF=[[gnu::pure]]" \ + "XXH_CONSTF=[[gnu::const]]" \ + "XXH_MALLOCF=[[gnu::malloc]]" \ + "XXH_ALIGN(N)=alignas(N)" \ + "XXH_ALIGN_MEMBER(align,type)=alignas(align) type" + +# We want HTML docs +GENERATE_HTML = YES +HTML_OUTPUT = html +HTML_FILE_EXTENSION = .html +# Tweak the colors a bit +HTML_COLORSTYLE_HUE = 220 +HTML_COLORSTYLE_GAMMA = 100 +HTML_COLORSTYLE_SAT = 100 + +# We don't want LaTeX. +GENERATE_LATEX = NO diff --git a/deps/xxHash/Doxyfile-internal b/deps/xxHash/Doxyfile-internal new file mode 100644 index 000000000..2efcef500 --- /dev/null +++ b/deps/xxHash/Doxyfile-internal @@ -0,0 +1,64 @@ +# Doxygen config for xxHash +DOXYFILE_ENCODING = UTF-8 + +PROJECT_NAME = "xxHash" +PROJECT_NUMBER = "0.8.2" +PROJECT_BRIEF = "Extremely fast non-cryptographic hash function" +OUTPUT_DIRECTORY = doxygen +OUTPUT_LANGUAGE = English + +# We already separate the internal docs. +INTERNAL_DOCS = YES +# Consistency +SORT_MEMBER_DOCS = NO +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = YES + +# Warnings +QUIET = YES +# Until we document everything +WARN_IF_UNDOCUMENTED = NO + +# TODO: Add the other files. It is just xxhash.h for now. +FILE_PATTERNS = xxhash.h xxh_x86dispatch.c +# Note: xxHash's source files are technically ASCII only. +INPUT_ENCODING = UTF-8 +TAB_SIZE = 4 +MARKDOWN_SUPPORT = YES + +# xxHash is a C library +OPTIMIZE_OUTPUT_FOR_C = YES +# So we can document the internals +EXTRACT_STATIC = YES +# We show private part in the internal document +EXTRACT_PRIVATE = YES +# Document the macros +MACRO_EXPANSION = YES +EXPAND_ONLY_PREDEF = YES +# Predefine some macros to clean up the output. +PREDEFINED = "XXH_DOXYGEN=" \ + "XXH_PUBLIC_API=" \ + "XXH_NOESCAPE=" \ + "XXH_FORCE_INLINE=static inline" \ + "XXH_NO_INLINE=static" \ + "XXH_RESTRICT=restrict" \ + "XSUM_API=" \ + "XXH_STATIC_LINKING_ONLY" \ + "XXH_IMPLEMENTATION" \ + "XXH_PUREF=[[gnu::pure]]" \ + "XXH_CONSTF=[[gnu::const]]" \ + "XXH_MALLOCF=[[gnu::malloc]]" \ + "XXH_ALIGN(N)=alignas(N)" \ + "XXH_ALIGN_MEMBER(align,type)=alignas(align) type" + +# We want HTML docs +GENERATE_HTML = YES +HTML_OUTPUT = html +HTML_FILE_EXTENSION = .html +# Tweak the colors a bit +HTML_COLORSTYLE_HUE = 220 +HTML_COLORSTYLE_GAMMA = 100 +HTML_COLORSTYLE_SAT = 100 + +# We don't want LaTeX. +GENERATE_LATEX = NO diff --git a/deps/xxHash/LICENSE b/deps/xxHash/LICENSE index fa20595dc..e4c5da723 100644 --- a/deps/xxHash/LICENSE +++ b/deps/xxHash/LICENSE @@ -1,5 +1,5 @@ xxHash Library -Copyright (c) 2012-2020 Yann Collet +Copyright (c) 2012-2021 Yann Collet All rights reserved. BSD 2-Clause License (https://www.opensource.org/licenses/bsd-license.php) @@ -24,25 +24,3 @@ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - ----------------------------------------------------- - -xxhsum command line interface -Copyright (c) 2013-2020 Yann Collet -All rights reserved. - -GPL v2 License - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along -with this program; if not, write to the Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. diff --git a/deps/xxHash/Makefile b/deps/xxHash/Makefile index ef24e94c6..fa510d5bb 100644 --- a/deps/xxHash/Makefile +++ b/deps/xxHash/Makefile @@ -1,6 +1,6 @@ # ################################################################ # xxHash Makefile -# Copyright (C) 2012-2020 Yann Collet +# Copyright (C) 2012-2024 Yann Collet # # GPL v2 License # @@ -55,6 +55,20 @@ else EXT = endif +# automatically enable runtime vector dispatch on x86/64 targets +detect_x86_arch = $(shell $(CC) -dumpmachine | grep -E 'i[3-6]86|x86_64') +ifneq ($(strip $(call detect_x86_arch)),) + #note: can be overridden at compile time, by setting DISPATCH=0 + DISPATCH ?= 1 +endif + +ifeq ($(NODE_JS),1) + # Link in unrestricted filesystem support + LDFLAGS += -sNODERAWFS + # Set flag to fix isatty() support + CPPFLAGS += -DXSUM_NODE_JS=1 +endif + # OS X linker doesn't support -soname, and use different extension # see: https://developer.apple.com/library/mac/documentation/DeveloperTools/Conceptual/DynamicLibraries/100-Articles/DynamicLibraryDesignGuidelines.html ifeq ($(UNAME), Darwin) @@ -71,6 +85,20 @@ endif LIBXXH = libxxhash.$(SHARED_EXT_VER) +XXHSUM_SRC_DIR = cli +XXHSUM_SPLIT_SRCS = $(XXHSUM_SRC_DIR)/xxhsum.c \ + $(XXHSUM_SRC_DIR)/xsum_os_specific.c \ + $(XXHSUM_SRC_DIR)/xsum_arch.c \ + $(XXHSUM_SRC_DIR)/xsum_output.c \ + $(XXHSUM_SRC_DIR)/xsum_sanity_check.c \ + $(XXHSUM_SRC_DIR)/xsum_bench.c +XXHSUM_SPLIT_OBJS = $(XXHSUM_SPLIT_SRCS:.c=.o) +XXHSUM_HEADERS = $(XXHSUM_SRC_DIR)/xsum_config.h \ + $(XXHSUM_SRC_DIR)/xsum_arch.h \ + $(XXHSUM_SRC_DIR)/xsum_os_specific.h \ + $(XXHSUM_SRC_DIR)/xsum_output.h \ + $(XXHSUM_SRC_DIR)/xsum_sanity_check.h \ + $(XXHSUM_SRC_DIR)/xsum_bench.h ## generate CLI and libraries in release mode (default for `make`) .PHONY: default @@ -85,31 +113,32 @@ ifeq ($(DISPATCH),1) xxhsum: CPPFLAGS += -DXXHSUM_DISPATCH=1 xxhsum: xxh_x86dispatch.o endif -xxhsum: xxhash.o xxhsum.o +xxhsum: xxhash.o $(XXHSUM_SPLIT_OBJS) $(CC) $(FLAGS) $^ $(LDFLAGS) -o $@$(EXT) xxhsum32: CFLAGS += -m32 ## generate CLI in 32-bits mode -xxhsum32: xxhash.c xxhsum.c ## do not generate object (avoid mixing different ABI) +xxhsum32: xxhash.c $(XXHSUM_SPLIT_SRCS) ## do not generate object (avoid mixing different ABI) $(CC) $(FLAGS) $^ $(LDFLAGS) -o $@$(EXT) ## dispatch only works for x86/x64 systems dispatch: CPPFLAGS += -DXXHSUM_DISPATCH=1 -dispatch: xxhash.o xxh_x86dispatch.o xxhsum.c +dispatch: xxhash.o xxh_x86dispatch.o $(XXHSUM_SPLIT_SRCS) $(CC) $(FLAGS) $^ $(LDFLAGS) -o $@$(EXT) xxhash.o: xxhash.c xxhash.h -xxhsum.o: xxhsum.c xxhash.h xxh_x86dispatch.h +xxhsum.o: $(XXHSUM_SRC_DIR)/xxhsum.c $(XXHSUM_HEADERS) \ + xxhash.h xxh_x86dispatch.h xxh_x86dispatch.o: xxh_x86dispatch.c xxh_x86dispatch.h xxhash.h .PHONY: xxhsum_and_links -xxhsum_and_links: xxhsum xxh32sum xxh64sum xxh128sum +xxhsum_and_links: xxhsum xxh32sum xxh64sum xxh128sum xxh3sum -xxh32sum xxh64sum xxh128sum: xxhsum +xxh32sum xxh64sum xxh128sum xxh3sum: xxhsum ln -sf $<$(EXT) $@$(EXT) xxhsum_inlinedXXH: CPPFLAGS += -DXXH_INLINE_ALL -xxhsum_inlinedXXH: xxhsum.c - $(CC) $(FLAGS) $^ -o $@$(EXT) +xxhsum_inlinedXXH: $(XXHSUM_SPLIT_SRCS) + $(CC) $(FLAGS) $< -o $@$(EXT) # library @@ -122,7 +151,7 @@ $(LIBXXH): LDFLAGS += -shared ifeq (,$(filter Windows%,$(OS))) $(LIBXXH): CFLAGS += -fPIC endif -ifeq ($(DISPATCH),1) +ifeq ($(LIBXXH_DISPATCH),1) $(LIBXXH): xxh_x86dispatch.c endif $(LIBXXH): xxhash.c @@ -140,9 +169,10 @@ lib: libxxhash.a libxxhash # helper targets -AWK = awk +AWK = awk GREP = grep SORT = sort +NM = nm .PHONY: list list: ## list all Makefile targets @@ -157,9 +187,15 @@ help: ## list documented targets .PHONY: clean clean: ## remove all build artifacts $(Q)$(RM) -r *.dSYM # Mac OS-X specific - $(Q)$(RM) core *.o *.$(SHARED_EXT) *.$(SHARED_EXT).* *.a libxxhash.pc + $(Q)$(RM) core *.o *.obj *.$(SHARED_EXT) *.$(SHARED_EXT).* *.a libxxhash.pc $(Q)$(RM) xxhsum$(EXT) xxhsum32$(EXT) xxhsum_inlinedXXH$(EXT) dispatch$(EXT) - $(Q)$(RM) xxh32sum$(EXT) xxh64sum$(EXT) xxh128sum$(EXT) + $(Q)$(RM) xxhsum.wasm xxhsum.js xxhsum.html + $(Q)$(RM) xxh32sum$(EXT) xxh64sum$(EXT) xxh128sum$(EXT) xxh3sum$(EXT) + $(Q)$(RM) fuzzer + $(Q)$(RM) $(XXHSUM_SRC_DIR)/*.o $(XXHSUM_SRC_DIR)/*.obj + $(MAKE) -C tests clean + $(MAKE) -C tests/bench clean + $(MAKE) -C tests/collisions clean @echo cleaning completed @@ -170,11 +206,12 @@ clean: ## remove all build artifacts # make check can be run with cross-compiled binaries on emulated environments (qemu user mode) # by setting $(RUN_ENV) to the target emulation environment .PHONY: check -check: xxhsum ## basic tests for xxhsum CLI, set RUN_ENV for emulated environments +check: xxhsum test_sanity ## basic tests for xxhsum CLI, set RUN_ENV for emulated environments # stdin + # If you get "Wrong parameters" on Emscripten+Node.js, recompile with `NODE_JS=1` $(RUN_ENV) ./xxhsum$(EXT) < xxhash.c # multiple files - $(RUN_ENV) ./xxhsum$(EXT) xxhash.* xxhsum.* + $(RUN_ENV) ./xxhsum$(EXT) xxhash.* # internal bench $(RUN_ENV) ./xxhsum$(EXT) -bi0 # long bench command @@ -187,6 +224,8 @@ check: xxhsum ## basic tests for xxhsum CLI, set RUN_ENV for emulated environm $(RUN_ENV) ./xxhsum$(EXT) -H0 xxhash.c # 128-bit $(RUN_ENV) ./xxhsum$(EXT) -H2 xxhash.c + # XXH3 (enforce BSD style) + $(RUN_ENV) ./xxhsum$(EXT) -H3 xxhash.c | grep "XXH3" # request incorrect variant $(RUN_ENV) ./xxhsum$(EXT) -H9 xxhash.c ; test $$? -eq 1 @printf "\n ....... checks completed successfully ....... \n" @@ -195,46 +234,60 @@ check: xxhsum ## basic tests for xxhsum CLI, set RUN_ENV for emulated environm test-unicode: $(MAKE) -C tests test_unicode +.PHONY: test_sanity +test_sanity: + $(MAKE) -C tests test_sanity + .PHONY: test-mem VALGRIND = valgrind --leak-check=yes --error-exitcode=1 test-mem: RUN_ENV = $(VALGRIND) test-mem: xxhsum check .PHONY: test32 -test32: clean xxhsum32 +test32: xxhsum32 @echo ---- test 32-bit ---- - ./xxhsum32 -bi1 xxhash.c + ./xxhsum32 -bi0 xxhash.c +TEST_FILES = xxhsum$(EXT) xxhash.c xxhash.h .PHONY: test-xxhsum-c test-xxhsum-c: xxhsum # xxhsum to/from pipe - ./xxhsum xxh* | ./xxhsum -c - - ./xxhsum -H0 xxh* | ./xxhsum -c - + ./xxhsum $(TEST_FILES) | ./xxhsum -c - + ./xxhsum -H0 $(TEST_FILES) | ./xxhsum -c - + # xxhsum -c is unable to verify checksum of file from STDIN (#470) + ./xxhsum < README.md > .test.README.md.xxh + ./xxhsum -c .test.README.md.xxh < README.md # xxhsum -q does not display "Loading" message into stderr (#251) - ! ./xxhsum -q xxh* 2>&1 | grep Loading + ! ./xxhsum -q $(TEST_FILES) 2>&1 | grep Loading # xxhsum does not display "Loading" message into stderr either - ! ./xxhsum xxh* 2>&1 | grep Loading + ! ./xxhsum $(TEST_FILES) 2>&1 | grep Loading # Check that xxhsum do display filename that it failed to open. LC_ALL=C ./xxhsum nonexistent 2>&1 | grep "Error: Could not open 'nonexistent'" # xxhsum to/from file, shell redirection - ./xxhsum xxh* > .test.xxh64 - ./xxhsum --tag xxh* > .test.xxh64_tag - ./xxhsum --little-endian xxh* > .test.le_xxh64 - ./xxhsum --tag --little-endian xxh* > .test.le_xxh64_tag - ./xxhsum -H0 xxh* > .test.xxh32 - ./xxhsum -H0 --tag xxh* > .test.xxh32_tag - ./xxhsum -H0 --little-endian xxh* > .test.le_xxh32 - ./xxhsum -H0 --tag --little-endian xxh* > .test.le_xxh32_tag - ./xxhsum -H2 xxh* > .test.xxh128 - ./xxhsum -H2 --tag xxh* > .test.xxh128_tag - ./xxhsum -H2 --little-endian xxh* > .test.le_xxh128 - ./xxhsum -H2 --tag --little-endian xxh* > .test.le_xxh128_tag + ./xxhsum $(TEST_FILES) > .test.xxh64 + ./xxhsum --tag $(TEST_FILES) > .test.xxh64_tag + ./xxhsum --little-endian $(TEST_FILES) > .test.le_xxh64 + ./xxhsum --tag --little-endian $(TEST_FILES) > .test.le_xxh64_tag + ./xxhsum -H0 $(TEST_FILES) > .test.xxh32 + ./xxhsum -H0 --tag $(TEST_FILES) > .test.xxh32_tag + ./xxhsum -H0 --little-endian $(TEST_FILES) > .test.le_xxh32 + ./xxhsum -H0 --tag --little-endian $(TEST_FILES) > .test.le_xxh32_tag + ./xxhsum -H2 $(TEST_FILES) > .test.xxh128 + ./xxhsum -H2 --tag $(TEST_FILES) > .test.xxh128_tag + ./xxhsum -H2 --little-endian $(TEST_FILES) > .test.le_xxh128 + ./xxhsum -H2 --tag --little-endian $(TEST_FILES) > .test.le_xxh128_tag + ./xxhsum -H3 $(TEST_FILES) > .test.xxh3 + ./xxhsum -H3 --tag $(TEST_FILES) > .test.xxh3_tag + ./xxhsum -H3 --little-endian $(TEST_FILES) > .test.le_xxh3 + ./xxhsum -H3 --tag --little-endian $(TEST_FILES) > .test.le_xxh3_tag ./xxhsum -c .test.xxh* ./xxhsum -c --little-endian .test.le_xxh* ./xxhsum -c .test.*_tag # read list of files from stdin - ./xxhsum -c < .test.xxh64 ./xxhsum -c < .test.xxh32 + ./xxhsum -c < .test.xxh64 + ./xxhsum -c < .test.xxh128 + ./xxhsum -c < .test.xxh3 cat .test.xxh* | ./xxhsum -c - # check variant with '*' marker as second separator $(SED) 's/ / \*/' .test.xxh32 | ./xxhsum -c @@ -243,12 +296,15 @@ test-xxhsum-c: xxhsum ./xxhsum --tag -H0 xxhsum* | $(GREP) XXH32 ./xxhsum --tag -H1 xxhsum* | $(GREP) XXH64 ./xxhsum --tag -H2 xxhsum* | $(GREP) XXH128 + ./xxhsum --tag -H3 xxhsum* | $(GREP) XXH3 + ./xxhsum -H3 xxhsum* | $(GREP) XXH3_ # prefix for GNU format ./xxhsum --tag -H32 xxhsum* | $(GREP) XXH32 ./xxhsum --tag -H64 xxhsum* | $(GREP) XXH64 ./xxhsum --tag -H128 xxhsum* | $(GREP) XXH128 ./xxhsum --tag -H0 --little-endian xxhsum* | $(GREP) XXH32_LE ./xxhsum --tag -H1 --little-endian xxhsum* | $(GREP) XXH64_LE ./xxhsum --tag -H2 --little-endian xxhsum* | $(GREP) XXH128_LE + ./xxhsum --tag -H3 --little-endian xxhsum* | $(GREP) XXH3_LE ./xxhsum --tag -H32 --little-endian xxhsum* | $(GREP) XXH32_LE ./xxhsum --tag -H64 --little-endian xxhsum* | $(GREP) XXH64_LE ./xxhsum --tag -H128 --little-endian xxhsum* | $(GREP) XXH128_LE @@ -266,23 +322,59 @@ test-xxhsum-c: xxhsum # Expects "FAILED open or read" echo "0000000000000000 test-expects-file-not-found" | ./xxhsum -c -; test $$? -eq 1 echo "00000000 test-expects-file-not-found" | ./xxhsum -c -; test $$? -eq 1 + # --filelist + echo xxhash.c > .test.filenames + $(RUN_ENV) ./xxhsum$(EXT) --filelist .test.filenames + # --filelist from stdin + cat .test.filenames | $(RUN_ENV) ./xxhsum$(EXT) --filelist @$(RM) .test.* +LIB_FUZZING_ENGINE?="-fsanitize=fuzzer" +CC_VERSION := $(shell $(CC) --version) +ifneq (,$(findstring clang,$(CC_VERSION))) +fuzzer: libxxhash.a fuzz/fuzzer.c + $(CC) $(CFLAGS) $(LIB_FUZZING_ENGINE) -I. -o fuzzer fuzz/fuzzer.c -L. -Wl,-Bstatic -lxxhash -Wl,-Bdynamic +endif + +.PHONY: test-filename-escape +test-filename-escape: + $(MAKE) -C tests test_filename_escape + +.PHONY: test-cli-comment-line +test-cli-comment-line: + $(MAKE) -C tests test_cli_comment_line + +.PHONY: test-cli-ignore-missing +test-cli-ignore-missing: + $(MAKE) -C tests test_cli_ignore_missing + .PHONY: armtest armtest: clean @echo ---- test ARM compilation ---- CC=arm-linux-gnueabi-gcc MOREFLAGS="-Werror -static" $(MAKE) xxhsum +.PHONY: arm64test +arm64test: clean + @echo ---- test ARM64 compilation ---- + CC=aarch64-linux-gnu-gcc MOREFLAGS="-Werror -static" $(MAKE) xxhsum + .PHONY: clangtest clangtest: clean @echo ---- test clang compilation ---- CC=clang MOREFLAGS="-Werror -Wconversion -Wno-sign-conversion" $(MAKE) all +.PHONY: gcc-og-test +gcc-og-test: clean + @echo ---- test gcc -Og compilation ---- + CFLAGS="-Og -Wall -Wextra -Wundef -Wshadow -Wcast-align -Werror -fPIC" CPPFLAGS="-DXXH_NO_INLINE_HINTS" MOREFLAGS="-Werror" $(MAKE) all + .PHONY: cxxtest cxxtest: clean @echo ---- test C++ compilation ---- CC="$(CXX) -Wno-deprecated" $(MAKE) all CFLAGS="-O3 -Wall -Wextra -Wundef -Wshadow -Wcast-align -Werror -fPIC" +# In strict C90 mode, there is no `long long` type support, +# consequently, only XXH32 can be compiled. .PHONY: c90test ifeq ($(NO_C90_TEST),true) c90test: @@ -293,10 +385,41 @@ c90test: CFLAGS += -std=c90 -Werror -pedantic c90test: xxhash.c @echo ---- test strict C90 compilation [xxh32 only] ---- $(RM) xxhash.o - $(CC) $(FLAGS) $^ $(LDFLAGS) -c + $(CC) $(FLAGS) $^ -c + $(NM) xxhash.o | $(GREP) XXH64 ; test $$? -eq 1 $(RM) xxhash.o endif +.PHONY: noxxh3test +noxxh3test: CPPFLAGS += -DXXH_NO_XXH3 +noxxh3test: CFLAGS += -Werror -pedantic -Wno-long-long # XXH64 requires long long support +noxxh3test: OFILE = xxh_noxxh3.o +noxxh3test: xxhash.c + @echo ---- test compilation without XXH3 ---- + $(CC) $(FLAGS) -c $^ -o $(OFILE) + $(NM) $(OFILE) | $(GREP) XXH3_ ; test $$? -eq 1 + $(RM) $(OFILE) + +.PHONY: nostreamtest +nostreamtest: CPPFLAGS += -DXXH_NO_STREAM +nostreamtest: CFLAGS += -Werror -pedantic -Wno-long-long # XXH64 requires long long support +nostreamtest: OFILE = xxh_nostream.o +nostreamtest: xxhash.c + @echo ---- test compilation without streaming ---- + $(CC) $(FLAGS) -c $^ -o $(OFILE) + $(NM) $(OFILE) | $(GREP) update ; test $$? -eq 1 + $(RM) $(OFILE) + +.PHONY: nostdlibtest +nostdlibtest: CPPFLAGS += -DXXH_NO_STDLIB +nostdlibtest: CFLAGS += -Werror -pedantic -Wno-long-long # XXH64 requires long long support +nostdlibtest: OFILE = xxh_nostdlib.o +nostdlibtest: xxhash.c + @echo ---- test compilation without \ ---- + $(CC) $(FLAGS) -c $^ -o $(OFILE) + $(NM) $(OFILE) | $(GREP) "U _free\|U free" ; test $$? -eq 1 + $(RM) $(OFILE) + .PHONY: usan usan: CC=clang usan: CXX=clang++ @@ -321,16 +444,17 @@ cppcheck: ## check C source files using $(CPPCHECK) static analyzer namespaceTest: ## ensure XXH_NAMESPACE redefines all public symbols $(CC) -c xxhash.c $(CC) -DXXH_NAMESPACE=TEST_ -c xxhash.c -o xxhash2.o - $(CC) xxhash.o xxhash2.o xxhsum.c -o xxhsum2 # will fail if one namespace missing (symbol collision) + $(CC) xxhash.o xxhash2.o $(XXHSUM_SPLIT_SRCS) -o xxhsum2 # will fail if one namespace missing (symbol collision) $(RM) *.o xxhsum2 # clean +MAN = $(XXHSUM_SRC_DIR)/xxhsum.1 MD2ROFF ?= ronn MD2ROFF_FLAGS ?= --roff --warnings --manual="User Commands" --organization="xxhsum $(XXHSUM_VERSION)" -xxhsum.1: xxhsum.1.md xxhash.h +$(MAN): $(XXHSUM_SRC_DIR)/xxhsum.1.md xxhash.h cat $< | $(MD2ROFF) $(MD2ROFF_FLAGS) | $(SED) -n '/^\.\\\".*/!p' > $@ .PHONY: man -man: xxhsum.1 ## generate man page from markdown source +man: $(MAN) ## generate man page from markdown source .PHONY: clean-man clean-man: @@ -342,20 +466,68 @@ preview-man: man .PHONY: test test: DEBUGFLAGS += -DXXH_DEBUGLEVEL=1 -test: all namespaceTest check test-xxhsum-c c90test test-tools +test: all namespaceTest check test-xxhsum-c c90test test-tools noxxh3test nostdlibtest + +# this test checks that including "xxhash.h" multiple times and with different directives still compiles properly +.PHONY: test-multiInclude +test-multiInclude: + $(MAKE) -C tests test_multiInclude + +.PHONY: test-inline-notexposed +test-inline-notexposed: xxhsum_inlinedXXH + $(NM) xxhsum_inlinedXXH | $(GREP) "t _XXH32_" ; test $$? -eq 1 # no XXH32 symbol should be left + $(NM) xxhsum_inlinedXXH | $(GREP) "t _XXH64_" ; test $$? -eq 1 # no XXH64 symbol should be left .PHONY: test-inline -test-inline: - $(MAKE) -C tests test_multiInclude +test-inline: test-inline-notexposed test-multiInclude + .PHONY: test-all test-all: CFLAGS += -Werror -test-all: test test32 clangtest cxxtest usan test-inline listL120 trailingWhitespace test-unicode +test-all: test test32 test-unicode clangtest gcc-og-test cxxtest usan test-inline listL120 trailingWhitespace test-xxh-nnn-sums .PHONY: test-tools test-tools: CFLAGS=-Werror $(MAKE) -C tests/bench - CFLAGS=-Werror $(MAKE) -C tests/collisions + CFLAGS=-Werror $(MAKE) -C tests/collisions check + +.PHONY: test-xxh-nnn-sums +test-xxh-nnn-sums: xxhsum_and_links + ./xxhsum README.md > tmp.xxhsum.out # xxhsum outputs xxh64 + ./xxh32sum README.md > tmp.xxh32sum.out + ./xxh64sum README.md > tmp.xxh64sum.out + ./xxh128sum README.md > tmp.xxh128sum.out + ./xxh3sum README.md > tmp.xxh3sum.out + cat tmp.xxhsum.out + cat tmp.xxh32sum.out + cat tmp.xxh64sum.out + cat tmp.xxh128sum.out + cat tmp.xxh3sum.out + ./xxhsum -c tmp.xxhsum.out + ./xxhsum -c tmp.xxh32sum.out + ./xxhsum -c tmp.xxh64sum.out + ./xxhsum -c tmp.xxh128sum.out + ./xxhsum -c tmp.xxh3sum.out + ./xxh32sum -c tmp.xxhsum.out ; test $$? -eq 1 # expects "no properly formatted" + ./xxh32sum -c tmp.xxh32sum.out + ./xxh32sum -c tmp.xxh64sum.out ; test $$? -eq 1 # expects "no properly formatted" + ./xxh32sum -c tmp.xxh128sum.out ; test $$? -eq 1 # expects "no properly formatted" + ./xxh32sum -c tmp.xxh3sum.out ; test $$? -eq 1 # expects "no properly formatted" + ./xxh64sum -c tmp.xxhsum.out + ./xxh64sum -c tmp.xxh32sum.out ; test $$? -eq 1 # expects "no properly formatted" + ./xxh64sum -c tmp.xxh64sum.out + ./xxh64sum -c tmp.xxh128sum.out ; test $$? -eq 1 # expects "no properly formatted" + ./xxh64sum -c tmp.xxh3sum.out ; test $$? -eq 1 # expects "no properly formatted" + ./xxh128sum -c tmp.xxhsum.out ; test $$? -eq 1 # expects "no properly formatted" + ./xxh128sum -c tmp.xxh32sum.out ; test $$? -eq 1 # expects "no properly formatted" + ./xxh128sum -c tmp.xxh64sum.out ; test $$? -eq 1 # expects "no properly formatted" + ./xxh128sum -c tmp.xxh128sum.out + ./xxh128sum -c tmp.xxh3sum.out ; test $$? -eq 1 # expects "no properly formatted" + ./xxh3sum -c tmp.xxhsum.out ; test $$? -eq 1 # expects "no properly formatted" + ./xxh3sum -c tmp.xxh32sum.out ; test $$? -eq 1 # expects "no properly formatted" + ./xxh3sum -c tmp.xxh64sum.out ; test $$? -eq 1 # expects "no properly formatted" + ./xxh3sum -c tmp.xxh128sum.out ; test $$? -eq 1 # expects "no properly formatted" + ./xxh3sum -c tmp.xxh3sum.out .PHONY: listL120 listL120: # extract lines >= 120 characters in *.{c,h}, by Takayuki Matsuoka (note: $$, for Makefile compatibility) @@ -363,13 +535,16 @@ listL120: # extract lines >= 120 characters in *.{c,h}, by Takayuki Matsuoka (n .PHONY: trailingWhitespace trailingWhitespace: - ! $(GREP) -E "`printf '[ \\t]$$'`" xxhsum.1 *.c *.h LICENSE Makefile cmake_unofficial/CMakeLists.txt + ! $(GREP) -E "`printf '[ \\t]$$'`" cli/*.c cli/*.h cli/*.1 *.c *.h LICENSE Makefile cmake_unofficial/CMakeLists.txt +.PHONY: lint-unicode +lint-unicode: + ./tests/unicode_lint.sh # ========================================================= # make install is validated only for the following targets # ========================================================= -ifneq (,$(filter Linux Darwin GNU/kFreeBSD GNU OpenBSD FreeBSD NetBSD DragonFly SunOS CYGWIN% , $(UNAME))) +ifneq (,$(filter Linux Darwin GNU/kFreeBSD GNU Haiku OpenBSD FreeBSD NetBSD DragonFly SunOS CYGWIN% , $(UNAME))) DESTDIR ?= # directory variables: GNU conventions prefer lowercase @@ -395,7 +570,7 @@ else PKGCONFIGDIR ?= $(LIBDIR)/pkgconfig endif -ifneq (,$(filter $(UNAME),OpenBSD FreeBSD NetBSD DragonFly SunOS)) +ifneq (,$(filter $(UNAME),OpenBSD NetBSD DragonFly SunOS)) MANDIR ?= $(PREFIX)/man/man1 else MANDIR ?= $(man1dir) @@ -409,16 +584,21 @@ endif INSTALL_PROGRAM ?= $(INSTALL) INSTALL_DATA ?= $(INSTALL) -m 644 +MAKE_DIR ?= $(INSTALL) -d -m 755 -PCLIBDIR ?= $(shell echo "$(LIBDIR)" | $(SED) -n $(SED_ERE_OPT) -e "s@^$(EXEC_PREFIX)(/|$$)@@p") -PCINCDIR ?= $(shell echo "$(INCLUDEDIR)" | $(SED) -n $(SED_ERE_OPT) -e "s@^$(PREFIX)(/|$$)@@p") +# Escape special symbols by putting each character into its separate class +EXEC_PREFIX_REGEX ?= $(shell echo "$(EXEC_PREFIX)" | $(SED) $(SED_ERE_OPT) -e "s/([^^])/[\1]/g" -e "s/\\^/\\\\^/g") +PREFIX_REGEX ?= $(shell echo "$(PREFIX)" | $(SED) $(SED_ERE_OPT) -e "s/([^^])/[\1]/g" -e "s/\\^/\\\\^/g") + +PCLIBDIR ?= $(shell echo "$(LIBDIR)" | $(SED) -n $(SED_ERE_OPT) -e "s@^$(EXEC_PREFIX_REGEX)(/|$$)@@p") +PCINCDIR ?= $(shell echo "$(INCLUDEDIR)" | $(SED) -n $(SED_ERE_OPT) -e "s@^$(PREFIX_REGEX)(/|$$)@@p") PCEXECDIR?= $(if $(filter $(PREFIX),$(EXEC_PREFIX)),$$\{prefix\},$(EXEC_PREFIX)) ifeq (,$(PCLIBDIR)) # Additional prefix check is required, since the empty string is technically a # valid PCLIBDIR -ifeq (,$(shell echo "$(LIBDIR)" | $(SED) -n $(SED_ERE_OPT) -e "\\@^$(EXEC_PREFIX)(/|$$)@ p")) +ifeq (,$(shell echo "$(LIBDIR)" | $(SED) -n $(SED_ERE_OPT) -e "\\@^$(EXEC_PREFIX_REGEX)(/|$$)@ p")) $(error configured libdir ($(LIBDIR)) is outside of exec_prefix ($(EXEC_PREFIX)), can't generate pkg-config file) endif endif @@ -426,7 +606,7 @@ endif ifeq (,$(PCINCDIR)) # Additional prefix check is required, since the empty string is technically a # valid PCINCDIR -ifeq (,$(shell echo "$(INCLUDEDIR)" | $(SED) -n $(SED_ERE_OPT) -e "\\@^$(PREFIX)(/|$$)@ p")) +ifeq (,$(shell echo "$(INCLUDEDIR)" | $(SED) -n $(SED_ERE_OPT) -e "\\@^$(PREFIX_REGEX)(/|$$)@ p")) $(error configured includedir ($(INCLUDEDIR)) is outside of prefix ($(PREFIX)), can't generate pkg-config file) endif endif @@ -435,40 +615,58 @@ libxxhash.pc: libxxhash.pc.in @echo creating pkgconfig $(Q)$(SED) $(SED_ERE_OPT) -e 's|@PREFIX@|$(PREFIX)|' \ -e 's|@EXECPREFIX@|$(PCEXECDIR)|' \ - -e 's|@LIBDIR@|$(PCLIBDIR)|' \ - -e 's|@INCLUDEDIR@|$(PCINCDIR)|' \ - -e 's|@VERSION@|$(VERSION)|' \ + -e 's|@LIBDIR@|$$\{exec_prefix\}/$(PCLIBDIR)|' \ + -e 's|@INCLUDEDIR@|$$\{prefix\}/$(PCINCDIR)|' \ + -e 's|@VERSION@|$(LIBVER)|' \ $< > $@ -.PHONY: install -install: lib libxxhash.pc xxhsum ## install libraries, CLI, links and man page - @echo Installing libxxhash - $(Q)$(INSTALL) -d -m 755 $(DESTDIR)$(LIBDIR) +install_libxxhash.a: libxxhash.a + @echo Installing libxxhash.a + $(Q)$(MAKE_DIR) $(DESTDIR)$(LIBDIR) $(Q)$(INSTALL_DATA) libxxhash.a $(DESTDIR)$(LIBDIR) + +install_libxxhash: libxxhash + @echo Installing libxxhash + $(Q)$(MAKE_DIR) $(DESTDIR)$(LIBDIR) $(Q)$(INSTALL_PROGRAM) $(LIBXXH) $(DESTDIR)$(LIBDIR) $(Q)ln -sf $(LIBXXH) $(DESTDIR)$(LIBDIR)/libxxhash.$(SHARED_EXT_MAJOR) $(Q)ln -sf $(LIBXXH) $(DESTDIR)$(LIBDIR)/libxxhash.$(SHARED_EXT) + +install_libxxhash.includes: $(Q)$(INSTALL) -d -m 755 $(DESTDIR)$(INCLUDEDIR) # includes $(Q)$(INSTALL_DATA) xxhash.h $(DESTDIR)$(INCLUDEDIR) $(Q)$(INSTALL_DATA) xxh3.h $(DESTDIR)$(INCLUDEDIR) # for compatibility, will be removed in v0.9.0 -ifeq ($(DISPATCH),1) +ifeq ($(LIBXXH_DISPATCH),1) $(Q)$(INSTALL_DATA) xxh_x86dispatch.h $(DESTDIR)$(INCLUDEDIR) endif + +install_libxxhash.pc: libxxhash.pc @echo Installing pkgconfig - $(Q)$(INSTALL) -d -m 755 $(DESTDIR)$(PKGCONFIGDIR)/ + $(Q)$(MAKE_DIR) $(DESTDIR)$(PKGCONFIGDIR)/ $(Q)$(INSTALL_DATA) libxxhash.pc $(DESTDIR)$(PKGCONFIGDIR)/ + +install_xxhsum: xxhsum @echo Installing xxhsum - $(Q)$(INSTALL) -d -m 755 $(DESTDIR)$(BINDIR)/ $(DESTDIR)$(MANDIR)/ - $(Q)$(INSTALL_PROGRAM) xxhsum $(DESTDIR)$(BINDIR)/xxhsum - $(Q)ln -sf xxhsum $(DESTDIR)$(BINDIR)/xxh32sum - $(Q)ln -sf xxhsum $(DESTDIR)$(BINDIR)/xxh64sum - $(Q)ln -sf xxhsum $(DESTDIR)$(BINDIR)/xxh128sum + $(Q)$(MAKE_DIR) $(DESTDIR)$(BINDIR)/ + $(Q)$(INSTALL_PROGRAM) xxhsum$(EXT) $(DESTDIR)$(BINDIR)/xxhsum$(EXT) + $(Q)ln -sf xxhsum$(EXT) $(DESTDIR)$(BINDIR)/xxh32sum$(EXT) + $(Q)ln -sf xxhsum$(EXT) $(DESTDIR)$(BINDIR)/xxh64sum$(EXT) + $(Q)ln -sf xxhsum$(EXT) $(DESTDIR)$(BINDIR)/xxh128sum$(EXT) + $(Q)ln -sf xxhsum$(EXT) $(DESTDIR)$(BINDIR)/xxh3sum$(EXT) + +install_man: @echo Installing man pages - $(Q)$(INSTALL_DATA) xxhsum.1 $(DESTDIR)$(MANDIR)/xxhsum.1 + $(Q)$(MAKE_DIR) $(DESTDIR)$(MANDIR)/ + $(Q)$(INSTALL_DATA) $(MAN) $(DESTDIR)$(MANDIR)/xxhsum.1 $(Q)ln -sf xxhsum.1 $(DESTDIR)$(MANDIR)/xxh32sum.1 $(Q)ln -sf xxhsum.1 $(DESTDIR)$(MANDIR)/xxh64sum.1 $(Q)ln -sf xxhsum.1 $(DESTDIR)$(MANDIR)/xxh128sum.1 + $(Q)ln -sf xxhsum.1 $(DESTDIR)$(MANDIR)/xxh3sum.1 + +.PHONY: install +## install libraries, CLI, links and man pages +install: install_libxxhash.a install_libxxhash install_libxxhash.includes install_libxxhash.pc install_xxhsum install_man @echo xxhash installation completed .PHONY: uninstall @@ -484,10 +682,12 @@ uninstall: ## uninstall libraries, CLI, links and man page $(Q)$(RM) $(DESTDIR)$(BINDIR)/xxh32sum $(Q)$(RM) $(DESTDIR)$(BINDIR)/xxh64sum $(Q)$(RM) $(DESTDIR)$(BINDIR)/xxh128sum + $(Q)$(RM) $(DESTDIR)$(BINDIR)/xxh3sum $(Q)$(RM) $(DESTDIR)$(BINDIR)/xxhsum $(Q)$(RM) $(DESTDIR)$(MANDIR)/xxh32sum.1 $(Q)$(RM) $(DESTDIR)$(MANDIR)/xxh64sum.1 $(Q)$(RM) $(DESTDIR)$(MANDIR)/xxh128sum.1 + $(Q)$(RM) $(DESTDIR)$(MANDIR)/xxh3sum.1 $(Q)$(RM) $(DESTDIR)$(MANDIR)/xxhsum.1 @echo xxhsum successfully uninstalled diff --git a/deps/xxHash/README.md b/deps/xxHash/README.md index 01637f499..1ff987b0a 100644 --- a/deps/xxHash/README.md +++ b/deps/xxHash/README.md @@ -1,146 +1,181 @@ + xxHash - Extremely fast hash algorithm ====================================== - -xxHash is an Extremely fast Hash algorithm, running at RAM speed limits. -It successfully completes the [SMHasher](https://code.google.com/p/smhasher/wiki/SMHasher) test suite -which evaluates collision, dispersion and randomness qualities of hash functions. -Code is highly portable, and hashes are identical on all platforms (little / big endian). +xxHash is an Extremely fast Hash algorithm, processing at RAM speed limits. +Code is highly portable, and produces hashes identical across all platforms (little / big endian). +The library includes the following algorithms : +- XXH32 : generates 32-bit hashes, using 32-bit arithmetic +- XXH64 : generates 64-bit hashes, using 64-bit arithmetic +- XXH3 (since `v0.8.0`): generates 64 or 128-bit hashes, using vectorized arithmetic. + The 128-bit variant is called XXH128. + +All variants successfully complete the [SMHasher](https://code.google.com/p/smhasher/wiki/SMHasher) test suite +which evaluates the quality of hash functions (collision, dispersion and randomness). +Additional tests, which evaluate more thoroughly speed and collision properties of 64-bit hashes, [are also provided](https://github.com/Cyan4973/xxHash/tree/dev/tests). |Branch |Status | |------------|---------| -|master | [![Build Status](https://travis-ci.org/Cyan4973/xxHash.svg?branch=master)](https://travis-ci.org/Cyan4973/xxHash?branch=master) | -|dev | [![Build Status](https://travis-ci.org/Cyan4973/xxHash.svg?branch=dev)](https://travis-ci.org/Cyan4973/xxHash?branch=dev) | - +|release | [![Build Status](https://github.com/Cyan4973/xxHash/actions/workflows/ci.yml/badge.svg?branch=release)](https://github.com/Cyan4973/xxHash/actions?query=branch%3Arelease+) | +|dev | [![Build Status](https://github.com/Cyan4973/xxHash/actions/workflows/ci.yml/badge.svg?branch=dev)](https://github.com/Cyan4973/xxHash/actions?query=branch%3Adev+) | Benchmarks ------------------------- -The benchmark uses SMHasher speed test, compiled with Visual 2010 on a Windows Seven 32-bit box. -The reference system uses a Core 2 Duo @3GHz +The benchmarked reference system uses an Intel i7-9700K cpu, and runs Ubuntu x64 20.04. +The [open source benchmark program] is compiled with `clang` v10.0 using `-O3` flag. +| Hash Name | Width | Bandwidth (GB/s) | Small Data Velocity | Quality | Comment | +| --------- | ----- | ---------------- | ----- | --- | --- | +| __XXH3__ (SSE2) | 64 | 31.5 GB/s | 133.1 | 10 +| __XXH128__ (SSE2) | 128 | 29.6 GB/s | 118.1 | 10 +| _RAM sequential read_ | N/A | 28.0 GB/s | N/A | N/A | _for reference_ +| City64 | 64 | 22.0 GB/s | 76.6 | 10 +| T1ha2 | 64 | 22.0 GB/s | 99.0 | 9 | Slightly worse [collisions] +| City128 | 128 | 21.7 GB/s | 57.7 | 10 +| __XXH64__ | 64 | 19.4 GB/s | 71.0 | 10 +| SpookyHash | 64 | 19.3 GB/s | 53.2 | 10 +| Mum | 64 | 18.0 GB/s | 67.0 | 9 | Slightly worse [collisions] +| __XXH32__ | 32 | 9.7 GB/s | 71.9 | 10 +| City32 | 32 | 9.1 GB/s | 66.0 | 10 +| Murmur3 | 32 | 3.9 GB/s | 56.1 | 10 +| SipHash | 64 | 3.0 GB/s | 43.2 | 10 +| FNV64 | 64 | 1.2 GB/s | 62.7 | 5 | Poor avalanche properties +| Blake2 | 256 | 1.1 GB/s | 5.1 | 10 | Cryptographic +| SHA1 | 160 | 0.8 GB/s | 5.6 | 10 | Cryptographic but broken +| MD5 | 128 | 0.6 GB/s | 7.8 | 10 | Cryptographic but broken -| Name | Speed | Quality | Author | -|---------------|--------------------|:-------:|-------------------| -| [xxHash] | 5.4 GB/s | 10 | Y.C. | -| MurmurHash 3a | 2.7 GB/s | 10 | Austin Appleby | -| SBox | 1.4 GB/s | 9 | Bret Mulvey | -| Lookup3 | 1.2 GB/s | 9 | Bob Jenkins | -| CityHash64 | 1.05 GB/s | 10 | Pike & Alakuijala | -| FNV | 0.55 GB/s | 5 | Fowler, Noll, Vo | -| CRC32 | 0.43 GB/s † | 9 | | -| MD5-32 | 0.33 GB/s | 10 | Ronald L.Rivest | -| SHA1-32 | 0.28 GB/s | 10 | | +[open source benchmark program]: https://github.com/Cyan4973/xxHash/tree/release/tests/bench +[collisions]: https://github.com/Cyan4973/xxHash/wiki/Collision-ratio-comparison#collision-study -[xxHash]: https://www.xxhash.com +note 1: Small data velocity is a _rough_ evaluation of algorithm's efficiency on small data. For more detailed analysis, please refer to next paragraph. -Note †: SMHasher's CRC32 implementation is known to be slow. Faster implementations exist. +note 2: some algorithms feature _faster than RAM_ speed. In which case, they can only reach their full speed potential when input is already in CPU cache (L3 or better). Otherwise, they max out on RAM speed limit. -Q.Score is a measure of quality of the hash function. -It depends on successfully passing SMHasher test set. -10 is a perfect score. -Algorithms with a score < 5 are not listed on this table. +### Small data -A more recent version, XXH64, has been created thanks to [Mathias Westerdahl](https://github.com/JCash), -which offers superior speed and dispersion for 64-bit systems. -Note however that 32-bit applications will still run faster using the 32-bit version. +Performance on large data is only one part of the picture. +Hashing is also very useful in constructions like hash tables and bloom filters. +In these use cases, it's frequent to hash a lot of small data (starting at a few bytes). +Algorithm's performance can be very different for such scenarios, since parts of the algorithm, +such as initialization or finalization, become fixed cost. +The impact of branch mis-prediction also becomes much more present. -SMHasher speed test, compiled using GCC 4.8.2, on Linux Mint 64-bit. -The reference system uses a Core i5-3340M @2.7GHz - -| Version | Speed on 64-bit | Speed on 32-bit | -|------------|------------------|------------------| -| XXH64 | 13.8 GB/s | 1.9 GB/s | -| XXH32 | 6.8 GB/s | 6.0 GB/s | - -This project also includes a command line utility, named `xxhsum`, offering similar features to `md5sum`, -thanks to [Takayuki Matsuoka](https://github.com/t-mat)'s contributions. - - -### License - -The library files `xxhash.c` and `xxhash.h` are BSD licensed. -The utility `xxhsum` is GPL licensed. - - -### New hash algorithms - -Starting with `v0.7.0`, the library includes a new algorithm named `XXH3`, -which is able to generate 64 and 128-bit hashes. - -The new algorithm is much faster than its predecessors for both long and small inputs, -which can be observed in the following graphs: - -![XXH3, bargraph](https://user-images.githubusercontent.com/750081/61976096-b3a35f00-af9f-11e9-8229-e0afc506c6ec.png) +XXH3 has been designed for excellent performance on both long and small inputs, +which can be observed in the following graph: ![XXH3, latency, random size](https://user-images.githubusercontent.com/750081/61976089-aedeab00-af9f-11e9-9239-e5375d6c080f.png) -To access these new prototypes, one needs to unlock their declaration, using the build macro `XXH_STATIC_LINKING_ONLY`. +For a more detailed analysis, please visit the wiki : +https://github.com/Cyan4973/xxHash/wiki/Performance-comparison#benchmarks-concentrating-on-small-data- -The algorithm is currently in development, meaning its return values might still change in future versions. -However, the API is stable, and can be used in production, -typically for generation of ephemeral hashes (produced and consumed in same session). +Quality +------------------------- -`XXH3` has now reached "release candidate" status. -If everything remains fine, its format will be "frozen" and become final. -After which, return values of `XXH3` and `XXH128` will no longer change in future versions. -`XXH3`'s return values will be officially finalized upon reaching `v0.8.0`. +Speed is not the only property that matters. +Produced hash values must respect excellent dispersion and randomness properties, +so that any sub-section of it can be used to maximally spread out a table or index, +as well as reduce the amount of collisions to the minimal theoretical level, following the [birthday paradox]. + +`xxHash` has been tested with Austin Appleby's excellent SMHasher test suite, +and passes all tests, ensuring reasonable quality levels. +It also passes extended tests from [newer forks of SMHasher], featuring additional scenarios and conditions. + +Finally, xxHash provides its own [massive collision tester](https://github.com/Cyan4973/xxHash/tree/dev/tests/collisions), +able to generate and compare billions of hashes to test the limits of 64-bit hash algorithms. +On this front too, xxHash features good results, in line with the [birthday paradox]. +A more detailed analysis is documented [in the wiki](https://github.com/Cyan4973/xxHash/wiki/Collision-ratio-comparison). + +[birthday paradox]: https://en.wikipedia.org/wiki/Birthday_problem +[newer forks of SMHasher]: https://github.com/rurban/smhasher ### Build modifiers -The following macros can be set at compilation time to modify libxxhash's behavior. They are generally disabled by default. +The following macros can be set at compilation time to modify `libxxhash`'s behavior. They are generally disabled by default. -- `XXH_INLINE_ALL`: Make all functions `inline`, with implementations being directly included within `xxhash.h`. - Inlining functions is beneficial for speed on small keys. - It's _extremely effective_ when key length is expressed as _a compile time constant_, +- `XXH_INLINE_ALL`: Make all functions `inline`, implementation is directly included within `xxhash.h`. + Inlining functions is beneficial for speed, notably for small keys. + It's _extremely effective_ when key's length is expressed as _a compile time constant_, with performance improvements observed in the +200% range . See [this article](https://fastcompression.blogspot.com/2018/03/xxhash-for-small-keys-impressive-power.html) for details. - `XXH_PRIVATE_API`: same outcome as `XXH_INLINE_ALL`. Still available for legacy support. - The name underlines that `XXH_*` symbols will not be exported. + The name underlines that `XXH_*` symbol names will not be exported. +- `XXH_STATIC_LINKING_ONLY`: gives access to internal state declaration, required for static allocation. + Incompatible with dynamic linking, due to risks of ABI changes. - `XXH_NAMESPACE`: Prefixes all symbols with the value of `XXH_NAMESPACE`. This macro can only use compilable character set. Useful to evade symbol naming collisions, in case of multiple inclusions of xxHash's source code. Client applications still use the regular function names, as symbols are automatically translated through `xxhash.h`. -- `XXH_FORCE_MEMORY_ACCESS`: The default method `0` uses a portable `memcpy()` notation. - Method `1` uses a gcc-specific `packed` attribute, which can provide better performance for some targets. - Method `2` forces unaligned reads, which is not standards compliant, but might sometimes be the only way to extract better read performance. - Method `3` uses a byteshift operation, which is best for old compilers which don't inline `memcpy()` or big-endian systems without a byteswap instruction - `XXH_FORCE_ALIGN_CHECK`: Use a faster direct read path when input is aligned. - This option can result in dramatic performance improvement when input to hash is aligned on 32 or 64-bit boundaries, - when running on architectures unable to load memory from unaligned addresses, or suffering a performance penalty from it. + This option can result in dramatic performance improvement on architectures unable to load memory from unaligned addresses + when input to hash happens to be aligned on 32 or 64-bit boundaries. It is (slightly) detrimental on platform with good unaligned memory access performance (same instruction for both aligned and unaligned accesses). This option is automatically disabled on `x86`, `x64` and `aarch64`, and enabled on all other platforms. -- `XXH_VECTOR` : manually select a vector instruction set (default: auto-selected at compilation time). Available instruction sets are `XXH_SCALAR`, `XXH_SSE2`, `XXH_AVX2`, `XXH_AVX512`, `XXH_NEON` and `XXH_VSX`. Compiler may require additional flags to ensure proper support (for example, `gcc` on linux will require `-mavx2` for AVX2, and `-mavx512f` for AVX512). -- `XXH_NO_PREFETCH` : disable prefetching. XXH3 only. -- `XXH_PREFETCH_DIST` : select prefecting distance. XXH3 only. +- `XXH_FORCE_MEMORY_ACCESS`: The default method `0` uses a portable `memcpy()` notation. + Method `1` uses a gcc-specific `packed` attribute, which can provide better performance for some targets. + Method `2` forces unaligned reads, which is not standard compliant, but might sometimes be the only way to extract better read performance. + Method `3` uses a byteshift operation, which is best for old compilers which don't inline `memcpy()` or big-endian systems without a byteswap instruction. +- `XXH_CPU_LITTLE_ENDIAN`: By default, endianness is determined by a runtime test resolved at compile time. + If, for some reason, the compiler cannot simplify the runtime test, it can cost performance. + It's possible to skip auto-detection and simply state that the architecture is little-endian by setting this macro to 1. + Setting it to 0 states big-endian. +- `XXH_ENABLE_AUTOVECTORIZE`: Auto-vectorization may be triggered for XXH32 and XXH64, depending on cpu vector capabilities and compiler version. + Note: auto-vectorization tends to be triggered more easily with recent versions of `clang`. + For XXH32, SSE4.1 or equivalent (NEON) is enough, while XXH64 requires AVX512. + Unfortunately, auto-vectorization is generally detrimental to XXH performance. + For this reason, the xxhash source code tries to prevent auto-vectorization by default. + That being said, systems evolve, and this conclusion is not forthcoming. + For example, it has been reported that recent Zen4 cpus are more likely to improve performance with vectorization. + Therefore, should you prefer or want to test vectorized code, you can enable this flag: + it will remove the no-vectorization protection code, thus making it more likely for XXH32 and XXH64 to be auto-vectorized. +- `XXH32_ENDJMP`: Switch multi-branch finalization stage of XXH32 by a single jump. + This is generally undesirable for performance, especially when hashing inputs of random sizes. + But depending on exact architecture and compiler, a jump might provide slightly better performance on small inputs. Disabled by default. +- `XXH_IMPORT`: MSVC specific: should only be defined for dynamic linking, as it prevents linkage errors. +- `XXH_NO_STDLIB`: Disable invocation of `` functions, notably `malloc()` and `free()`. + `libxxhash`'s `XXH*_createState()` will always fail and return `NULL`. + But one-shot hashing (like `XXH32()`) or streaming using statically allocated states + still work as expected. + This build flag is useful for embedded environments without dynamic allocation. +- `XXH_memcpy`, `XXH_memset`, `XXH_memcmp` : redirect `memcpy()`, `memset()` and `memcmp()` to some user-selected symbol at compile time. + Redirecting all 3 removes the need to include `` standard library. +- `XXH_NO_EXTERNC_GUARD`: When `xxhash.h` is compiled in C++ mode, removes the `extern "C" { .. }` block guard. +- `XXH_DEBUGLEVEL` : When set to any value >= 1, enables `assert()` statements. + This (slightly) slows down execution, but may help finding bugs during debugging sessions. + +#### Binary size control +- `XXH_NO_XXH3` : removes symbols related to `XXH3` (both 64 & 128 bits) from generated binary. + `XXH3` is by far the largest contributor to `libxxhash` size, + so it's useful to reduce binary size for applications which do not employ `XXH3`. +- `XXH_NO_LONG_LONG`: removes compilation of algorithms relying on 64-bit `long long` types + which include `XXH3` and `XXH64`. + Only `XXH32` will be compiled. + Useful for targets (architectures and compilers) without 64-bit support. +- `XXH_NO_STREAM`: Disables the streaming API, limiting the library to single shot variants only. - `XXH_NO_INLINE_HINTS`: By default, xxHash uses `__attribute__((always_inline))` and `__forceinline` to improve performance at the cost of code size. Defining this macro to 1 will mark all internal functions as `static`, allowing the compiler to decide whether to inline a function or not. This is very useful when optimizing for smallest binary size, and is automatically defined when compiling with `-O0`, `-Os`, `-Oz`, or `-fno-inline` on GCC and Clang. - This may also increase performance depending on compiler and architecture. -- `XXH_REROLL`: Reduces the size of the generated code by not unrolling some loops. - Impact on performance may vary, depending on platform and algorithm. -- `XXH_ACCEPT_NULL_INPUT_POINTER`: if set to `1`, when input is a `NULL` pointer, - xxHash'd result is the same as a zero-length input - (instead of a dereference segfault). - Adds one branch at the beginning of each hash. -- `XXH_STATIC_LINKING_ONLY`: gives access to the state declaration for static allocation. - Incompatible with dynamic linking, due to risks of ABI changes. -- `XXH_NO_LONG_LONG`: removes compilation of algorithms relying on 64-bit types (XXH3 and XXH64). Only XXH32 will be compiled. - Useful for targets (architectures and compilers) without 64-bit support. -- `XXH_IMPORT`: MSVC specific: should only be defined for dynamic linking, as it prevents linkage errors. -- `XXH_CPU_LITTLE_ENDIAN`: By default, endianess is determined by a runtime test resolved at compile time. - If, for some reason, the compiler cannot simplify the runtime test, it can cost performance. - It's possible to skip auto-detection and simply state that the architecture is little-endian by setting this macro to 1. - Setting it to 0 states big-endian. + It may also be required to successfully compile using `-Og`, depending on compiler version. +- `XXH_SIZE_OPT`: `0`: default, optimize for speed + `1`: default for `-Os` and `-Oz`: disables some speed hacks for size optimization + `2`: makes code as small as possible, performance may cry -For the Command Line Interface `xxhsum`, the following environment variables can also be set : -- `DISPATCH=1` : use `xxh_x86dispatch.c`, to automatically select between `scalar`, `sse2`, `avx2` or `avx512` instruction set at runtime, depending on local host. This option is only valid for `x86`/`x64` systems. +#### Build modifiers specific for XXH3 +- `XXH_VECTOR` : manually select a vector instruction set (default: auto-selected at compilation time). Available instruction sets are `XXH_SCALAR`, `XXH_SSE2`, `XXH_AVX2`, `XXH_AVX512`, `XXH_NEON` and `XXH_VSX`. Compiler may require additional flags to ensure proper support (for example, `gcc` on x86_64 requires `-mavx2` for `AVX2`, or `-mavx512f` for `AVX512`). +- `XXH_PREFETCH_DIST` : select prefetching distance. For close-to-metal adaptation to specific hardware platforms. XXH3 only. +- `XXH_NO_PREFETCH` : disable prefetching. Some platforms or situations may perform better without prefetching. XXH3 only. +#### Makefile variables +When compiling the Command Line Interface `xxhsum` using `make`, the following environment variables can also be set : +- `DISPATCH=1` : use `xxh_x86dispatch.c`, select at runtime between `scalar`, `sse2`, `avx2` or `avx512` instruction set. This option is only valid for `x86`/`x64` systems. It is enabled by default when target `x86`/`x64` is detected. It can be forcefully turned off using `DISPATCH=0`. +- `LIBXXH_DISPATCH=1` : same idea, implemented a runtime vector extension detector, but within `libxxhash`. This parameter is disabled by default. When enabled (only valid for `x86`/`x64` systems), new symbols published in `xxh_x86dispatch.h` become accessible. At the time of this writing, it's required to include `xxh_x86dispatch.h` in order to access the symbols with runtime vector extension detection. +- `XXH_1ST_SPEED_TARGET` : select an initial speed target, expressed in MB/s, for the first speed test in benchmark mode. Benchmark will adjust the target at subsequent iterations, but the first test is made "blindly" by targeting this speed. Currently conservatively set to 10 MB/s, to support very slow (emulated) platforms. +- `NODE_JS=1` : When compiling `xxhsum` for Node.js with Emscripten, this links the `NODERAWFS` library for unrestricted filesystem access and patches `isatty` to make the command line utility correctly detect the terminal. This does make the binary specific to Node.js. ### Building xxHash - Using vcpkg @@ -154,10 +189,10 @@ You can download and install xxHash using the [vcpkg](https://github.com/Microso The xxHash port in vcpkg is kept up to date by Microsoft team members and community contributors. If the version is out of date, please [create an issue or pull request](https://github.com/Microsoft/vcpkg) on the vcpkg repository. - ### Example -Calling xxhash 64-bit variant from a C program: +The simplest example calls xxhash 64-bit variant as a one-shot function +generating a hash value from a single buffer, and invoked from a C/C++ program: ```C #include "xxhash.h" @@ -167,7 +202,8 @@ Calling xxhash 64-bit variant from a C program: } ``` -Using streaming variant is more involved, but makes it possible to provide data incrementally: +Streaming variant is more involved, but makes it possible to provide data incrementally: + ```C #include "stdlib.h" /* abort() */ #include "xxhash.h" @@ -189,17 +225,17 @@ XXH64_hash_t calcul_hash_streaming(FileHandler fh) /* Feed the state with input data, any size, any number of times */ (...) - while ( /* any condition */ ) { + while ( /* some data left */ ) { size_t const length = get_more_data(buffer, bufferSize, fh); if (XXH64_update(state, buffer, length) == XXH_ERROR) abort(); (...) } (...) - /* Get the hash */ + /* Produce the final hash value */ XXH64_hash_t const hash = XXH64_digest(state); - /* State can be re-used; in this example, it is simply freed */ + /* State could be re-used; but in this example, it is simply freed */ free(buffer); XXH64_freeState(state); @@ -208,19 +244,31 @@ XXH64_hash_t calcul_hash_streaming(FileHandler fh) ``` +### License + +The library files `xxhash.c` and `xxhash.h` are BSD licensed. +The utility `xxhsum` is GPL licensed. + + ### Other programming languages -Aside from the C reference version, -xxHash is also available in many different programming languages, -thanks to many great contributors. -They are [listed here](https://www.xxhash.com/#other-languages). +Beyond the C reference version, +xxHash is also available from many different programming languages, +thanks to great contributors. +They are [listed here](http://www.xxhash.com/#other-languages). -### Branch Policy +### Packaging status -> - The "master" branch is considered stable, at all times. -> - The "dev" branch is the one where all contributions must be merged - before being promoted to master. -> + If you plan to propose a patch, please commit into the "dev" branch, - or its own feature branch. - Direct commit to "master" are not permitted. +Many distributions bundle a package manager +which allows easy xxhash installation as both a `libxxhash` library +and `xxhsum` command line interface. + +[![Packaging status](https://repology.org/badge/vertical-allrepos/xxhash.svg)](https://repology.org/project/xxhash/versions) + + +### Special Thanks + +- Takayuki Matsuoka, aka @t-mat, for creating `xxhsum -c` and great support during early xxh releases +- Mathias Westerdahl, aka @JCash, for introducing the first version of `XXH64` +- Devin Hussey, aka @easyaspi314, for incredible low-level optimizations on `XXH3` and `XXH128` diff --git a/deps/xxHash/SECURITY.md b/deps/xxHash/SECURITY.md new file mode 100644 index 000000000..2a8b4c8e5 --- /dev/null +++ b/deps/xxHash/SECURITY.md @@ -0,0 +1,13 @@ +# Security Policy + +## Supported Versions + +Security updates are applied only to the latest release. + +## Reporting a Vulnerability + +If you have discovered a security vulnerability in this project, please report it privately. **Do not disclose it as a public issue.** This gives us time to work with you to fix the issue before public exposure, reducing the chance that the exploit will be used before a patch is released. + +Please disclose it at [security advisory](https://github.com/Cyan4973/xxHash/security/advisories/new). + +This project is maintained by a team of volunteers on a reasonable-effort basis. As such, please give us at least 90 days to work on a fix before public exposure. diff --git a/deps/xxHash/appveyor.yml b/deps/xxHash/appveyor.yml index 850f48b14..7aef900fc 100644 --- a/deps/xxHash/appveyor.yml +++ b/deps/xxHash/appveyor.yml @@ -13,10 +13,6 @@ environment: - COMPILER: "visual" ARCH: "x64" TEST_XXHSUM: "true" - - COMPILER: "visual" - ARCH: "x64" - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 - TEST_XXHSUM: "true" - COMPILER: "visual" ARCH: "Win32" TEST_XXHSUM: "true" @@ -26,16 +22,24 @@ environment: TEST_XXHSUM: "true" - COMPILER: "visual" ARCH: "ARM" - - COMPILER: "visual" - ARCH: "ARM64" - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 - # note: ARM64 is not available with Visual Studio 14 2015, which is default for Appveyor - - COMPILER: "gcc" - PLATFORM: "mingw64" - - COMPILER: "gcc" - PLATFORM: "mingw32" - - COMPILER: "gcc" - PLATFORM: "clang" +# Below tests are now disabled due to redundancy. +# Their equivalent already runs correctly on Github Actions. +# - COMPILER: "visual" +# ARCH: "x64" +# APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 +# TEST_XXHSUM: "true" +# - COMPILER: "visual" +# ARCH: "ARM64" +# APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 +# # note: ARM64 is not available with Visual Studio 14 2015, which is default for Appveyor + +# The following tests were also flacky on Appveyor, for various reasons. +# - COMPILER: "gcc" +# PLATFORM: "mingw64" +# - COMPILER: "gcc" +# PLATFORM: "mingw32" +# - COMPILER: "gcc" +# PLATFORM: "clang" install: - ECHO Installing %COMPILER% %PLATFORM% %ARCH% diff --git a/deps/xxHash/cli/.tipi/deps b/deps/xxHash/cli/.tipi/deps new file mode 100644 index 000000000..653dbe108 --- /dev/null +++ b/deps/xxHash/cli/.tipi/deps @@ -0,0 +1,3 @@ +{ + "Cyan4973/xxHash": { } +} \ No newline at end of file diff --git a/deps/xxHash/cli/COPYING b/deps/xxHash/cli/COPYING new file mode 100644 index 000000000..d159169d1 --- /dev/null +++ b/deps/xxHash/cli/COPYING @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/deps/xxHash/cli/README.md b/deps/xxHash/cli/README.md new file mode 100644 index 000000000..a60a945fc --- /dev/null +++ b/deps/xxHash/cli/README.md @@ -0,0 +1,4 @@ +This directory contains source code dedicated to the `xxhsum` command line utility, +which is a user program of `libxxhash`. + +Note that, in contrast with the library `libxxhash`, the command line utility `xxhsum` ships with GPLv2 license. diff --git a/deps/xxHash/cli/xsum_arch.c b/deps/xxHash/cli/xsum_arch.c new file mode 100644 index 000000000..a6ad0c57e --- /dev/null +++ b/deps/xxHash/cli/xsum_arch.c @@ -0,0 +1,51 @@ +/* + * xxhsum - Command line interface for xxhash algorithms + * Copyright (C) 2013-2024 Yann Collet + * + * GPL v2 License + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * You can contact the author at: + * - xxHash homepage: https://www.xxhash.com + * - xxHash source repository: https://github.com/Cyan4973/xxHash + */ + +int g_xsumarch_avoid_empty_unit = 0; + +#if ((defined(__x86_64__) || defined(_M_X64)) && !defined(_M_ARM64EC)) || defined(__i386__) || defined(_M_IX86) || defined(_M_IX86_FP) +#if defined(XXHSUM_DISPATCH) + +#include "../xxh_x86dispatch.h" + +const char* XSUM_autox86(void) +{ + int vecVersion = XXH_featureTest(); + switch(vecVersion) { + case XXH_SCALAR: + return "x86 autoVec (scalar: no vector extension detected)"; + case XXH_SSE2: + return "x86 autoVec (SSE2 detected)"; + case XXH_AVX2: + return "x86 autoVec (AVX2 detected)"; + case XXH_AVX512: + return "x86 autoVec (AVX512 detected)"; + default:; + } + return " autoVec (error detecting vector extension)"; +} + +#endif /* XXHSUM_DISPATCH */ +#endif /* x86 */ diff --git a/deps/xxHash/cli/xsum_arch.h b/deps/xxHash/cli/xsum_arch.h new file mode 100644 index 000000000..83a0bfb79 --- /dev/null +++ b/deps/xxHash/cli/xsum_arch.h @@ -0,0 +1,178 @@ +/* + * xxhsum - Command line interface for xxhash algorithms + * Copyright (C) 2013-2021 Yann Collet + * + * GPL v2 License + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * You can contact the author at: + * - xxHash homepage: https://www.xxhash.com + * - xxHash source repository: https://github.com/Cyan4973/xxHash + */ + +/* + * Checks for predefined macros by the compiler to try and get both the arch + * and the compiler version. + */ +#ifndef XSUM_ARCH_H +#define XSUM_ARCH_H + +#include "xsum_config.h" + +#define XSUM_LIB_VERSION XXH_VERSION_MAJOR.XXH_VERSION_MINOR.XXH_VERSION_RELEASE +#define XSUM_QUOTE(str) #str +#define XSUM_EXPAND_AND_QUOTE(str) XSUM_QUOTE(str) +#define XSUM_PROGRAM_VERSION XSUM_EXPAND_AND_QUOTE(XSUM_LIB_VERSION) + + +/* Show compiler versions in WELCOME_MESSAGE. XSUM_CC_VERSION_FMT will return the printf specifiers, + * and VERSION will contain the comma separated list of arguments to the XSUM_CC_VERSION_FMT string. */ +#if defined(__clang_version__) +/* Clang does its own thing. */ +# ifdef __apple_build_version__ +# define XSUM_CC_VERSION_FMT "Apple Clang %s" +# else +# define XSUM_CC_VERSION_FMT "Clang %s" +# endif +# define XSUM_CC_VERSION __clang_version__ +#elif defined(__VERSION__) +/* GCC and ICC */ +# define XSUM_CC_VERSION_FMT "%s" +# ifdef __INTEL_COMPILER /* icc adds its prefix */ +# define XSUM_CC_VERSION __VERSION__ +# else /* assume GCC */ +# define XSUM_CC_VERSION "GCC " __VERSION__ +# endif +#elif defined(_MSC_FULL_VER) && defined(_MSC_BUILD) +/* + * MSVC + * "For example, if the version number of the Visual C++ compiler is + * 15.00.20706.01, the _MSC_FULL_VER macro evaluates to 150020706." + * + * https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros?view=vs-2017 + */ +# define XSUM_CC_VERSION_FMT "MSVC %02i.%02i.%05i.%02i" +# define XSUM_CC_VERSION _MSC_FULL_VER / 10000000 % 100, _MSC_FULL_VER / 100000 % 100, _MSC_FULL_VER % 100000, _MSC_BUILD +#elif defined(_MSC_VER) /* old MSVC */ +# define XSUM_CC_VERSION_FMT "MSVC %02i.%02i" +# define XSUM_CC_VERSION _MSC_VER / 100, _MSC_VER % 100 +#elif defined(__TINYC__) +/* tcc stores its version in the __TINYC__ macro. */ +# define XSUM_CC_VERSION_FMT "tcc %i.%i.%i" +# define XSUM_CC_VERSION __TINYC__ / 10000 % 100, __TINYC__ / 100 % 100, __TINYC__ % 100 +#else +# define XSUM_CC_VERSION_FMT "%s" +# define XSUM_CC_VERSION "unknown compiler" +#endif + +/* makes the next part easier */ +#if (defined(__x86_64__) || defined(_M_X64)) && !defined(_M_ARM64EC) +# define XSUM_ARCH_X64 1 +# define XSUM_ARCH_X86 "x86_64" +#elif defined(__i386__) || defined(_M_IX86) || defined(_M_IX86_FP) +# define XSUM_ARCH_X86 "i386" +#endif + +/* Try to detect the architecture. */ +#if defined(XSUM_ARCH_X86) +# if defined(XXHSUM_DISPATCH) + const char* XSUM_autox86(void); +# define XSUM_ARCH XSUM_autox86() +# elif defined(__AVX512F__) +# define XSUM_ARCH XSUM_ARCH_X86 " + AVX512" +# elif defined(__AVX2__) +# define XSUM_ARCH XSUM_ARCH_X86 " + AVX2" +# elif defined(__AVX__) +# define XSUM_ARCH XSUM_ARCH_X86 " + AVX" +# elif defined(_M_X64) || defined(__x86_64__) \ + || defined(__SSE2__) || (defined(_M_IX86_FP) && _M_IX86_FP == 2) +# define XSUM_ARCH XSUM_ARCH_X86 " + SSE2" +# else +# define XSUM_ARCH XSUM_ARCH_X86 +# endif +#elif defined(__aarch64__) || defined(__arm64__) || defined(_M_ARM64) || defined(_M_ARM64EC) +# if defined(__ARM_FEATURE_SVE) +# define XSUM_ARCH "aarch64 + SVE" +# else +# define XSUM_ARCH "aarch64 + NEON" +# endif +#elif defined(__arm__) || defined(__thumb__) || defined(__thumb2__) || defined(_M_ARM) +/* ARM has a lot of different features that can change xxHash significantly. */ +# ifdef __ARM_ARCH +# define XSUM_ARCH_ARM_VER XSUM_EXPAND_AND_QUOTE(__ARM_ARCH) +# else +# define XSUM_ARCH_ARM_VER XSUM_EXPAND_AND_QUOTE(_M_ARM) +# endif +# if defined(_M_ARM) /* windows arm is always thumb-2 */ \ + || defined(__thumb2__) || (defined(__thumb__) && (__thumb__ == 2 || __ARM_ARCH >= 7)) +# define XSUM_ARCH_THUMB " Thumb-2" +# elif defined(__thumb__) +# define XSUM_ARCH_THUMB " Thumb-1" +# else +# define XSUM_ARCH_THUMB "" +# endif +/* ARMv7 has unaligned by default */ +# if defined(__ARM_FEATURE_UNALIGNED) || __ARM_ARCH >= 7 || defined(_M_ARM) +# define XSUM_ARCH_UNALIGNED " + unaligned" +# else +# define XSUM_ARCH_UNALIGNED "" +# endif +# if defined(__ARM_NEON) || defined(__ARM_NEON__) || defined(_M_ARM) +# define XSUM_ARCH_NEON " + NEON" +# else +# define XSUM_ARCH_NEON "" +# endif +# define XSUM_ARCH "ARMv" XSUM_ARCH_ARM_VER XSUM_ARCH_THUMB XSUM_ARCH_NEON XSUM_ARCH_UNALIGNED +#elif defined(__powerpc64__) || defined(__ppc64__) || defined(__PPC64__) +# if defined(__GNUC__) && defined(__POWER9_VECTOR__) +# define XSUM_ARCH "ppc64 + POWER9 vector" +# elif defined(__GNUC__) && defined(__POWER8_VECTOR__) +# define XSUM_ARCH "ppc64 + POWER8 vector" +# else +# define XSUM_ARCH "ppc64" +# endif +#elif defined(__powerpc__) || defined(__ppc__) || defined(__PPC__) +# define XSUM_ARCH "ppc" +#elif defined(__AVR) +# define XSUM_ARCH "AVR" +#elif defined(__mips64) +# define XSUM_ARCH "mips64" +#elif defined(__mips) +# define XSUM_ARCH "mips" +#elif defined(__s390x__) +# define XSUM_ARCH "s390x" +#elif defined(__s390__) +# define XSUM_ARCH "s390" +#elif defined(__wasm__) || defined(__asmjs__) || defined(__EMSCRIPTEN__) +# if defined(__wasm_simd128__) +# define XSUM_ARCH "wasm/asmjs + simd128" +# else +# define XSUM_ARCH "wasm/asmjs" +# endif +#elif defined(__loongarch_lp64) +# if defined(__loongarch_asx) +# define XSUM_ARCH "loongarch64 + lasx" +# elif defined(__loongarch_sx) +# define XSUM_ARCH "loongarch64 + lsx" +# else +# define XSUM_ARCH "loongarch64" +# endif +#else +# define XSUM_ARCH "unknown" +#endif + + +#endif /* XSUM_ARCH_H */ diff --git a/deps/xxHash/cli/xsum_bench.c b/deps/xxHash/cli/xsum_bench.c new file mode 100644 index 000000000..7f67969ac --- /dev/null +++ b/deps/xxHash/cli/xsum_bench.c @@ -0,0 +1,452 @@ +/* + * xsum_bench - Benchmark functions for xxhsum + * Copyright (C) 2013-2021 Yann Collet + * + * GPL v2 License + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * You can contact the author at: + * - xxHash homepage: https://www.xxhash.com + * - xxHash source repository: https://github.com/Cyan4973/xxHash + */ + +#include "xsum_output.h" /* XSUM_logLevel */ +#include "xsum_bench.h" +#include "xsum_sanity_check.h" /* XSUM_fillTestBuffer */ +#include "xsum_os_specific.h" /* XSUM_getFileSize */ +#ifndef XXH_STATIC_LINKING_ONLY +# define XXH_STATIC_LINKING_ONLY +#endif +#include "../xxhash.h" +#ifdef XXHSUM_DISPATCH +# include "../xxh_x86dispatch.h" /* activate _dispatch() redirectors */ +#endif + +#include /* malloc, free */ +#include +#include /* strlen, memcpy */ +#include /* clock_t, clock, CLOCKS_PER_SEC */ +#include /* errno */ + +#define TIMELOOP_S 1 +#define TIMELOOP (TIMELOOP_S * CLOCKS_PER_SEC) /* target timing per iteration */ +#define TIMELOOP_MIN (TIMELOOP / 2) /* minimum timing to validate a result */ + +/* Each benchmark iteration attempts to match TIMELOOP (1 second). + * The nb of loops is adjusted at each iteration to reach that target. + * However, initially, there is no information, so 1st iteration blindly targets an arbitrary speed. + * If it's too small, it will be adjusted, and a new attempt will be made. + * But if it's too large, the first iteration can be very long, + * before being fixed at second attempt. + * So prefer starting with small speed targets. + * XXH_1ST_SPEED_TARGET is defined in MB/s */ +#ifndef XXH_1ST_SPEED_TARGET +# define XXH_1ST_SPEED_TARGET 10 +#endif + +#define MAX_MEM (2 GB - 64 MB) + +static clock_t XSUM_clockSpan( clock_t start ) +{ + return clock() - start; /* works even if overflow; Typical max span ~ 30 mn */ +} + +static size_t XSUM_findMaxMem(XSUM_U64 requiredMem) +{ + size_t const step = 64 MB; + void* testmem = NULL; + + requiredMem = (((requiredMem >> 26) + 1) << 26); + requiredMem += 2*step; + if (requiredMem > MAX_MEM) requiredMem = MAX_MEM; + + while (!testmem) { + if (requiredMem > step) requiredMem -= step; + else requiredMem >>= 1; + testmem = malloc ((size_t)requiredMem); + } + free (testmem); + + /* keep some space available */ + if (requiredMem > step) requiredMem -= step; + else requiredMem >>= 1; + + return (size_t)requiredMem; +} + +/* + * A secret buffer used for benchmarking XXH3's withSecret variants. + * + * In order for the bench to be realistic, the secret buffer would need to be + * pre-generated. + * + * Adding a pointer to the parameter list would be messy. + */ +static XSUM_U8 g_benchSecretBuf[XXH3_SECRET_SIZE_MIN]; + +/* + * Wrappers for the benchmark. + * + * If you would like to add other hashes to the bench, create a wrapper and add + * it to the g_hashesToBench table. It will automatically be added. + */ +typedef XSUM_U32 (*hashFunction)(const void* buffer, size_t bufferSize, XSUM_U32 seed); + +static XSUM_U32 localXXH32(const void* buffer, size_t bufferSize, XSUM_U32 seed) +{ + return XXH32(buffer, bufferSize, seed); +} +static XSUM_U32 localXXH32_stream(const void* buffer, size_t bufferSize, XSUM_U32 seed) +{ + XXH32_state_t state; + (void)seed; + XXH32_reset(&state, seed); + XXH32_update(&state, buffer, bufferSize); + return (XSUM_U32)XXH32_digest(&state); +} +static XSUM_U32 localXXH64(const void* buffer, size_t bufferSize, XSUM_U32 seed) +{ + return (XSUM_U32)XXH64(buffer, bufferSize, seed); +} +static XSUM_U32 localXXH64_stream(const void* buffer, size_t bufferSize, XSUM_U32 seed) +{ + XXH64_state_t state; + (void)seed; + XXH64_reset(&state, seed); + XXH64_update(&state, buffer, bufferSize); + return (XSUM_U32)XXH64_digest(&state); +} +static XSUM_U32 localXXH3_64b(const void* buffer, size_t bufferSize, XSUM_U32 seed) +{ + (void)seed; + return (XSUM_U32)XXH3_64bits(buffer, bufferSize); +} +static XSUM_U32 localXXH3_64b_seeded(const void* buffer, size_t bufferSize, XSUM_U32 seed) +{ + return (XSUM_U32)XXH3_64bits_withSeed(buffer, bufferSize, seed); +} +static XSUM_U32 localXXH3_64b_secret(const void* buffer, size_t bufferSize, XSUM_U32 seed) +{ + (void)seed; + return (XSUM_U32)XXH3_64bits_withSecret(buffer, bufferSize, g_benchSecretBuf, sizeof(g_benchSecretBuf)); +} +static XSUM_U32 localXXH3_128b(const void* buffer, size_t bufferSize, XSUM_U32 seed) +{ + (void)seed; + return (XSUM_U32)(XXH3_128bits(buffer, bufferSize).low64); +} +static XSUM_U32 localXXH3_128b_seeded(const void* buffer, size_t bufferSize, XSUM_U32 seed) +{ + return (XSUM_U32)(XXH3_128bits_withSeed(buffer, bufferSize, seed).low64); +} +static XSUM_U32 localXXH3_128b_secret(const void* buffer, size_t bufferSize, XSUM_U32 seed) +{ + (void)seed; + return (XSUM_U32)(XXH3_128bits_withSecret(buffer, bufferSize, g_benchSecretBuf, sizeof(g_benchSecretBuf)).low64); +} +static XSUM_U32 localXXH3_stream(const void* buffer, size_t bufferSize, XSUM_U32 seed) +{ + XXH3_state_t state; + (void)seed; + XXH3_64bits_reset(&state); + XXH3_64bits_update(&state, buffer, bufferSize); + return (XSUM_U32)XXH3_64bits_digest(&state); +} +static XSUM_U32 localXXH3_stream_seeded(const void* buffer, size_t bufferSize, XSUM_U32 seed) +{ + XXH3_state_t state; + XXH3_INITSTATE(&state); + XXH3_64bits_reset_withSeed(&state, (XXH64_hash_t)seed); + XXH3_64bits_update(&state, buffer, bufferSize); + return (XSUM_U32)XXH3_64bits_digest(&state); +} +static XSUM_U32 localXXH128_stream(const void* buffer, size_t bufferSize, XSUM_U32 seed) +{ + XXH3_state_t state; + (void)seed; + XXH3_128bits_reset(&state); + XXH3_128bits_update(&state, buffer, bufferSize); + return (XSUM_U32)(XXH3_128bits_digest(&state).low64); +} +static XSUM_U32 localXXH128_stream_seeded(const void* buffer, size_t bufferSize, XSUM_U32 seed) +{ + XXH3_state_t state; + XXH3_INITSTATE(&state); + XXH3_128bits_reset_withSeed(&state, (XXH64_hash_t)seed); + XXH3_128bits_update(&state, buffer, bufferSize); + return (XSUM_U32)(XXH3_128bits_digest(&state).low64); +} + + +typedef struct { + const char* name; + hashFunction func; +} hashInfo; + +static const hashInfo g_hashesToBench[] = { + { "XXH32", &localXXH32 }, + { "XXH64", &localXXH64 }, + { "XXH3_64b", &localXXH3_64b }, + { "XXH3_64b w/seed", &localXXH3_64b_seeded }, + { "XXH3_64b w/secret", &localXXH3_64b_secret }, + { "XXH128", &localXXH3_128b }, + { "XXH128 w/seed", &localXXH3_128b_seeded }, + { "XXH128 w/secret", &localXXH3_128b_secret }, + { "XXH32_stream", &localXXH32_stream }, + { "XXH64_stream", &localXXH64_stream }, + { "XXH3_stream", &localXXH3_stream }, + { "XXH3_stream w/seed",&localXXH3_stream_seeded }, + { "XXH128_stream", &localXXH128_stream }, + { "XXH128_stream w/seed",&localXXH128_stream_seeded }, +}; +#define NB_HASHFUNC (sizeof(g_hashesToBench) / sizeof(*g_hashesToBench)) + +#define NB_TESTFUNC (1 + 2 * NB_HASHFUNC) +int const g_nbTestFunctions = NB_TESTFUNC; +char g_testIDs[NB_TESTFUNC] = { 0 }; +const char k_testIDs_default[NB_TESTFUNC] = { 0, + 1 /*XXH32*/, 0, + 1 /*XXH64*/, 0, + 1 /*XXH3*/, 0, 0, 0, 0, 0, + 1 /*XXH128*/ }; + +int g_nbIterations = NBLOOPS_DEFAULT; +#define HASHNAME_MAX 29 +static void XSUM_benchHash(hashFunction h, const char* hName, int testID, + const void* buffer, size_t bufferSize) +{ + XSUM_U32 nbh_perIteration = (XSUM_U32)((XXH_1ST_SPEED_TARGET MB) / (bufferSize+1)) + 1; + int iterationNb, nbIterations = g_nbIterations + !g_nbIterations /* min 1 */; + double fastestH = 100000000.; + assert(HASHNAME_MAX > 2); + XSUM_logVerbose(2, "\r%80s\r", ""); /* Clean display line */ + + for (iterationNb = 1; iterationNb <= nbIterations; iterationNb++) { + XSUM_U32 r=0; + clock_t cStart; + + XSUM_logVerbose(2, "%2i-%-*.*s : %10u ->\r", + iterationNb, + HASHNAME_MAX, HASHNAME_MAX, hName, + (unsigned)bufferSize); + cStart = clock(); + while (clock() == cStart); /* starts clock() at its exact beginning */ + cStart = clock(); + + { XSUM_U32 u; + for (u=0; u (double)(4000U<<20)) nbh_perSecond = (double)(4000U<<20); /* avoid overflow */ + nbh_perIteration = (XSUM_U32)nbh_perSecond; + } + /* g_nbIterations==0 => quick evaluation, no claim of accuracy */ + if (g_nbIterations>0) { + iterationNb--; /* new round for a more accurate speed evaluation */ + continue; + } + } + if (ticksPerHash < fastestH) fastestH = ticksPerHash; + if (fastestH>0.) { /* avoid div by zero */ + XSUM_logVerbose(2, "%2i-%-*.*s : %10u -> %8.0f it/s (%7.1f MB/s) \r", + iterationNb, + HASHNAME_MAX, HASHNAME_MAX, hName, + (unsigned)bufferSize, + (double)1 / fastestH, + ((double)bufferSize / (1 MB)) / fastestH); + } } + { double nbh_perSecond = (1 / fastestH) + 1; + if (nbh_perSecond > (double)(4000U<<20)) nbh_perSecond = (double)(4000U<<20); /* avoid overflow */ + nbh_perIteration = (XSUM_U32)nbh_perSecond; + } + } + XSUM_logVerbose(1, "%2i#%-*.*s : %10u -> %8.0f it/s (%7.1f MB/s) \n", + testID, + HASHNAME_MAX, HASHNAME_MAX, hName, + (unsigned)bufferSize, + (double)1 / fastestH, + ((double)bufferSize / (1 MB)) / fastestH); + if (XSUM_logLevel<1) + XSUM_logVerbose(0, "%u, ", (unsigned)((double)1 / fastestH)); +} + + +/* + * Allocates a string containing s1 and s2 concatenated. Acts like strdup. + * The result must be freed. + */ +static char* XSUM_strcatDup(const char* s1, const char* s2) +{ + assert(s1 != NULL); + assert(s2 != NULL); + { size_t len1 = strlen(s1); + size_t len2 = strlen(s2); + char* buf = (char*)malloc(len1 + len2 + 1); + if (buf != NULL) { + /* strcpy(buf, s1) */ + memcpy(buf, s1, len1); + /* strcat(buf, s2) */ + memcpy(buf + len1, s2, len2 + 1); + } + return buf; + } +} + + +/*! + * XSUM_benchMem(): + * Benchmark provided content up to twice per function: + * - once at provided aligned memory address (%16) + * - second time at unaligned memory address (+3) + * Enabled functions and modes are provided via @g_hashesToBench global variable. + * @buffer: Must be 16-byte aligned. + * The allocated size of underlying @buffer must be >= (@bufferSize+3). + * This function also fills @g_benchSecretBuf, to bench XXH3's _withSecret() variants. + */ +static void XSUM_benchMem(const void* buffer, size_t bufferSize) +{ + assert((((size_t)buffer) & 15) == 0); /* ensure alignment */ + XSUM_fillTestBuffer(g_benchSecretBuf, sizeof(g_benchSecretBuf)); + { int i; + for (i = 1; i < (int)NB_TESTFUNC; i++) { + int const hashFuncID = (i-1) / 2; + assert(g_hashesToBench[hashFuncID].name != NULL); + if (g_testIDs[i] == 0) continue; + /* aligned */ + if ((i % 2) == 1) { + XSUM_benchHash(g_hashesToBench[hashFuncID].func, g_hashesToBench[hashFuncID].name, i, buffer, bufferSize); + } + /* unaligned */ + if ((i % 2) == 0) { + /* Append "unaligned". */ + char* const hashNameBuf = XSUM_strcatDup(g_hashesToBench[hashFuncID].name, " unaligned"); + assert(hashNameBuf != NULL); + XSUM_benchHash(g_hashesToBench[hashFuncID].func, hashNameBuf, i, ((const char*)buffer)+3, bufferSize); + free(hashNameBuf); + } + } } +} + +static size_t XSUM_selectBenchedSize(const char* fileName) +{ + XSUM_U64 const inFileSize = XSUM_getFileSize(fileName); + size_t benchedSize = (size_t) XSUM_findMaxMem(inFileSize); + if ((XSUM_U64)benchedSize > inFileSize) benchedSize = (size_t)inFileSize; + if (benchedSize < inFileSize) { + XSUM_log("Not enough memory for '%s' full size; testing %i MB only...\n", fileName, (int)(benchedSize>>20)); + } + return benchedSize; +} + + +int XSUM_benchFiles(const char* fileNamesTable[], int nbFiles) +{ + int fileIdx; + for (fileIdx=0; fileIdx 10 KB) { + XSUM_logVerbose(1, "%u KB", (unsigned)(keySize >> 10)); + } else { + XSUM_logVerbose(1, "%u bytes", (unsigned)keySize); + } + XSUM_logVerbose(1, "... \n"); + + XSUM_benchMem(alignedBuffer, keySize); + free(buffer); + } + return 0; +} diff --git a/deps/xxHash/cli/xsum_bench.h b/deps/xxHash/cli/xsum_bench.h new file mode 100644 index 000000000..6faaec8c9 --- /dev/null +++ b/deps/xxHash/cli/xsum_bench.h @@ -0,0 +1,51 @@ +/* + * xsum_bench - Benchmark functions for xxhsum + * Copyright (C) 2013-2021 Yann Collet + * + * GPL v2 License + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * You can contact the author at: + * - xxHash homepage: https://www.xxhash.com + * - xxHash source repository: https://github.com/Cyan4973/xxHash + */ + +#ifndef XSUM_BENCH_H +#define XSUM_BENCH_H + +#include /* size_t */ + +#define NBLOOPS_DEFAULT 3 /* Default number of benchmark iterations */ + +extern int const g_nbTestFunctions; +extern char g_testIDs[]; /* size : g_nbTestFunctions */ +extern const char k_testIDs_default[]; +extern int g_nbIterations; + +int XSUM_benchInternal(size_t keySize); +int XSUM_benchFiles(const char* fileNamesTable[], int nbFiles); + + +#ifdef __cplusplus +extern "C" { +#endif + + +#ifdef __cplusplus +} +#endif + +#endif /* XSUM_BENCH_H */ diff --git a/deps/xxHash/cli/xsum_config.h b/deps/xxHash/cli/xsum_config.h new file mode 100644 index 000000000..eec5528db --- /dev/null +++ b/deps/xxHash/cli/xsum_config.h @@ -0,0 +1,214 @@ +/* + * xxhsum - Command line interface for xxhash algorithms + * Copyright (C) 2013-2021 Yann Collet + * + * GPL v2 License + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * You can contact the author at: + * - xxHash homepage: https://www.xxhash.com + * - xxHash source repository: https://github.com/Cyan4973/xxHash + */ + +/* + * This contains various configuration parameters and feature detection for + * xxhsum. + * + * Similar to config.h in Autotools, this should be the first header included. + */ + +#ifndef XSUM_CONFIG_H +#define XSUM_CONFIG_H + + +/* ************************************ + * Compiler Options + **************************************/ +/* + * Disable Visual C's warnings when using the "insecure" CRT functions instead + * of the "secure" _s functions. + * + * These functions are not portable, and aren't necessary if you are using the + * original functions properly. + */ +#if defined(_MSC_VER) || defined(_WIN32) +# ifndef _CRT_SECURE_NO_WARNINGS +# define _CRT_SECURE_NO_WARNINGS +# endif +#endif + +/* Under Linux at least, pull in the *64 commands */ +#ifndef _LARGEFILE64_SOURCE +# define _LARGEFILE64_SOURCE +#endif +#ifndef _FILE_OFFSET_BITS +# define _FILE_OFFSET_BITS 64 +#endif + +/* + * So we can use __attribute__((__format__)) + */ +#ifdef __GNUC__ +# define XSUM_ATTRIBUTE(x) __attribute__(x) +#else +# define XSUM_ATTRIBUTE(x) +#endif + +#if !defined(_WIN32) && (defined(__unix__) || defined(__unix) || (defined(__APPLE__) && defined(__MACH__)) /* UNIX-like OS */ \ + || defined(__midipix__) || defined(__VMS)) +# if (defined(__APPLE__) && defined(__MACH__)) || defined(__SVR4) || defined(_AIX) || defined(__hpux) /* POSIX.1-2001 (SUSv3) conformant */ \ + || defined(__DragonFly__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) /* BSD distros */ +# define XSUM_PLATFORM_POSIX_VERSION 200112L +# else +# if defined(__linux__) || defined(__linux) +# ifndef _POSIX_C_SOURCE +# define _POSIX_C_SOURCE 200112L /* use feature test macro */ +# endif +# endif +# include /* declares _POSIX_VERSION */ +# if defined(_POSIX_VERSION) /* POSIX compliant */ +# define XSUM_PLATFORM_POSIX_VERSION _POSIX_VERSION +# else +# define XSUM_PLATFORM_POSIX_VERSION 0 +# endif +# endif +#endif +#if !defined(XSUM_PLATFORM_POSIX_VERSION) +# define XSUM_PLATFORM_POSIX_VERSION -1 +#endif + +#if !defined(S_ISREG) +# define S_ISREG(x) (((x) & S_IFMT) == S_IFREG) +#endif + + +/* ************************************ + * Windows helpers + **************************************/ + +/* + * Whether to use the Windows UTF-16 APIs instead of the portable libc 8-bit + * ("ANSI") APIs. + * + * Windows is not UTF-8 clean by default, and the only way to access every file + * on the OS is to use UTF-16. + * + * Do note that xxhsum uses UTF-8 internally and only uses UTF-16 for command + * line arguments, console I/O, and opening files. + * + * Additionally, this guarantees all piped output is UTF-8. + */ +#if defined(XSUM_WIN32_USE_WCHAR) && !defined(_WIN32) +/* We use Windows APIs, only use this on Windows. */ +# undef XSUM_WIN32_USE_WCHAR +#endif + +#ifndef XSUM_WIN32_USE_WCHAR +# if defined(_WIN32) +# include +# if WCHAR_MAX == 0xFFFFU /* UTF-16 wchar_t */ +# define XSUM_WIN32_USE_WCHAR 1 +# else +# define XSUM_WIN32_USE_WCHAR 0 +# endif +# else +# define XSUM_WIN32_USE_WCHAR 0 +# endif +#endif + +#if !XSUM_WIN32_USE_WCHAR +/* + * It doesn't make sense to have one without the other. + * Due to XSUM_WIN32_USE_WCHAR being undef'd, this also handles + * non-WIN32 platforms. + */ +# undef XSUM_WIN32_USE_WMAIN +# define XSUM_WIN32_USE_WMAIN 0 +#else +/* + * Whether to use wmain() or main(). + * + * wmain() is preferred because we don't have to mess with internal hidden + * APIs. + * + * It always works on MSVC, but in MinGW, it only works on MinGW-w64 with the + * -municode flag. + * + * Therefore we have to use main() -- there is no better option. + */ +# ifndef XSUM_WIN32_USE_WMAIN +# if defined(_UNICODE) || defined(UNICODE) /* MinGW -municode */ \ + || defined(_MSC_VER) /* MSVC */ +# define XSUM_WIN32_USE_WMAIN 1 +# else +# define XSUM_WIN32_USE_WMAIN 0 +# endif +# endif +/* + * It is always good practice to define these to prevent accidental use of the + * ANSI APIs, even if the program primarily uses UTF-8. + */ +# ifndef _UNICODE +# define _UNICODE +# endif +# ifndef UNICODE +# define UNICODE +# endif +#endif /* XSUM_WIN32_USE_WCHAR */ + +#ifndef XSUM_API +# ifdef XXH_INLINE_ALL +# define XSUM_API static +# else +# define XSUM_API +# endif +#endif + +#ifndef XSUM_NO_TESTS +# define XSUM_NO_TESTS 0 +#endif + +/* *************************** + * Basic types + * ***************************/ + +#if defined(__cplusplus) /* C++ */ \ + || (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) /* C99 */ +# include + typedef uint8_t XSUM_U8; + typedef uint32_t XSUM_U32; + typedef uint64_t XSUM_U64; +# else +# include + typedef unsigned char XSUM_U8; +# if UINT_MAX == 0xFFFFFFFFUL + typedef unsigned int XSUM_U32; +# else + typedef unsigned long XSUM_U32; +# endif + typedef unsigned long long XSUM_U64; +#endif /* not C++/C99 */ + +/* *************************** + * Common constants + * ***************************/ + +#define KB *( 1<<10) +#define MB *( 1<<20) +#define GB *(1U<<30) + + +#endif /* XSUM_CONFIG_H */ diff --git a/deps/xxHash/cli/xsum_os_specific.c b/deps/xxHash/cli/xsum_os_specific.c new file mode 100644 index 000000000..8438d0cf1 --- /dev/null +++ b/deps/xxHash/cli/xsum_os_specific.c @@ -0,0 +1,523 @@ +/* + * xxhsum - Command line interface for xxhash algorithms + * Copyright (C) 2013-2021 Yann Collet + * + * GPL v2 License + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * You can contact the author at: + * - xxHash homepage: https://www.xxhash.com + * - xxHash source repository: https://github.com/Cyan4973/xxHash + */ + +#include "xsum_os_specific.h" /* XSUM_API */ +#include /* stat() / _stat64() */ + +/* + * This file contains all of the ugly boilerplate to make xxhsum work across + * platforms. + */ +#if defined(_MSC_VER) || XSUM_WIN32_USE_WCHAR + typedef struct __stat64 XSUM_stat_t; +# if defined(_MSC_VER) + typedef int mode_t; +# endif +#else + typedef struct stat XSUM_stat_t; +#endif + +#if defined(__EMSCRIPTEN__) && defined(XSUM_NODE_JS) +# include /* isatty */ +# include /* EM_ASM_INT */ + +/* The Emscripten SDK does not properly detect when the standard streams + * are piped to node.js, and there does not seem to be any way to tell in + * plain C. To work around it, inline JavaScript is used to call Node's + * isatty() function. */ +static int XSUM_IS_CONSOLE(FILE* stdStream) +{ + /* https://github.com/iliakan/detect-node */ + int is_node = EM_ASM_INT(( + return (Object.prototype.toString.call( + typeof process !== 'undefined' ? process : 0 + ) == '[object process]') | 0 + )); + if (is_node) { + return EM_ASM_INT( + return require('node:tty').isatty($0), + fileno(stdStream) + ); + } else { + return isatty(fileno(stdStream)); + } +} +#elif defined(__EMSCRIPTEN__) || (defined(__linux__) && (XSUM_PLATFORM_POSIX_VERSION >= 1)) \ + || (XSUM_PLATFORM_POSIX_VERSION >= 200112L) \ + || defined(__DJGPP__) \ + || defined(__MSYS__) \ + || defined(__HAIKU__) +# ifdef __OpenBSD__ +# include /* errno */ +# include /* strerror */ +# include "xsum_output.h" /* XSUM_log */ +# endif +# include /* isatty */ +# define XSUM_IS_CONSOLE(stdStream) isatty(fileno(stdStream)) +#elif defined(MSDOS) || defined(OS2) +# include /* _isatty */ +# define XSUM_IS_CONSOLE(stdStream) _isatty(_fileno(stdStream)) +#elif defined(_WIN32) +# include /* _isatty */ +# include /* DeviceIoControl, HANDLE, FSCTL_SET_SPARSE */ +# include /* FILE */ +static __inline int XSUM_IS_CONSOLE(FILE* stdStream) +{ + DWORD dummy; + return _isatty(_fileno(stdStream)) && GetConsoleMode((HANDLE)_get_osfhandle(_fileno(stdStream)), &dummy); +} +#else +# define XSUM_IS_CONSOLE(stdStream) 0 +#endif + +#if defined(MSDOS) || defined(OS2) || defined(_WIN32) +# include /* _O_BINARY */ +# include /* _setmode, _fileno, _get_osfhandle */ +# if !defined(__DJGPP__) +# include /* DeviceIoControl, HANDLE, FSCTL_SET_SPARSE */ +# include /* FSCTL_SET_SPARSE */ +# define XSUM_SET_BINARY_MODE(file) { int const unused=_setmode(_fileno(file), _O_BINARY); (void)unused; } +# else +# define XSUM_SET_BINARY_MODE(file) setmode(fileno(file), O_BINARY) +# endif +#else +# define XSUM_SET_BINARY_MODE(file) ((void)file) +#endif + +XSUM_API int XSUM_isConsole(FILE* stream) +{ + return XSUM_IS_CONSOLE(stream); +} + +XSUM_API void XSUM_setBinaryMode(FILE* stream) +{ + XSUM_SET_BINARY_MODE(stream); +} + +#if !XSUM_WIN32_USE_WCHAR + +XSUM_API FILE* XSUM_fopen(const char* filename, const char* mode) +{ + return fopen(filename, mode); +} +XSUM_ATTRIBUTE((__format__(__printf__, 2, 0))) +XSUM_API int XSUM_vfprintf(FILE* stream, const char* format, va_list ap) +{ + return vfprintf(stream, format, ap); +} + +static int XSUM_stat(const char* infilename, XSUM_stat_t* statbuf) +{ +#if defined(_MSC_VER) + return _stat64(infilename, statbuf); +#else + return stat(infilename, statbuf); +#endif +} + +#ifndef XSUM_NO_MAIN +int main(int argc, const char* argv[]) +{ +#ifdef __OpenBSD__ + /* + * xxhsum(1) does not create or write files, permit reading only. + */ + if (pledge("stdio rpath", NULL) == -1) { + XSUM_log("pledge: %s\n", strerror(errno)); + return 1; + } +#endif + + return XSUM_main(argc, argv); +} +#endif + +/* Unicode helpers for Windows to make UTF-8 act as it should. */ +#else +# include +# include + +/***************************************************************************** + * Unicode conversion tools + *****************************************************************************/ + +/* + * Converts a UTF-8 string to UTF-16. Acts like strdup. The string must be freed afterwards. + * This version allows keeping the output length. + */ +static wchar_t* XSUM_widenString(const char* str, int* lenOut) +{ + int const len = MultiByteToWideChar(CP_UTF8, 0, str, -1, NULL, 0); + if (lenOut != NULL) *lenOut = len; + if (len == 0) return NULL; + { wchar_t* buf = (wchar_t*)malloc((size_t)len * sizeof(wchar_t)); + if (buf != NULL) { + if (MultiByteToWideChar(CP_UTF8, 0, str, -1, buf, len) == 0) { + free(buf); + return NULL; + } } + return buf; + } +} + +/* + * Converts a UTF-16 string to UTF-8. Acts like strdup. The string must be freed afterwards. + * This version allows keeping the output length. + */ +static char* XSUM_narrowString(const wchar_t *str, int *lenOut) +{ + int len = WideCharToMultiByte(CP_UTF8, 0, str, -1, NULL, 0, NULL, NULL); + if (lenOut != NULL) *lenOut = len; + if (len == 0) return NULL; + { char* const buf = (char*)malloc((size_t)len * sizeof(char)); + if (buf != NULL) { + if (WideCharToMultiByte(CP_UTF8, 0, str, -1, buf, len, NULL, NULL) == 0) { + free(buf); + return NULL; + } } + return buf; + } +} + + + +/***************************************************************************** + * File helpers + *****************************************************************************/ +/* + * fopen wrapper that supports UTF-8 + * + * fopen will only accept ANSI filenames, which means that we can't open Unicode filenames. + * + * In order to open a Unicode filename, we need to convert filenames to UTF-16 and use _wfopen. + */ +XSUM_API FILE* XSUM_fopen(const char* filename, const char* mode) +{ + FILE* f = NULL; + wchar_t* const wide_filename = XSUM_widenString(filename, NULL); + if (wide_filename != NULL) { + wchar_t* const wide_mode = XSUM_widenString(mode, NULL); + if (wide_mode != NULL) { + f = _wfopen(wide_filename, wide_mode); + free(wide_mode); + } + free(wide_filename); + } + return f; +} + +/* + * stat() wrapper which supports UTF-8 filenames. + */ +static int XSUM_stat(const char* infilename, XSUM_stat_t* statbuf) +{ + int r = -1; + wchar_t* const wide_filename = XSUM_widenString(infilename, NULL); + if (wide_filename != NULL) { + r = _wstat64(wide_filename, statbuf); + free(wide_filename); + } + return r; +} + +/* + * In case it isn't available, this is what MSVC 2019 defines in stdarg.h. + */ +#if defined(_MSC_VER) && !defined(__clang__) && !defined(va_copy) +# define XSUM_va_copy(destination, source) ((destination) = (source)) +#else +# define XSUM_va_copy(destination, source) va_copy(destination, source) +#endif + +/* + * vasprintf for Windows. + */ +XSUM_ATTRIBUTE((__format__(__printf__, 2, 0))) +static int XSUM_vasprintf(char** strp, const char* format, va_list ap) +{ + int size; + va_list copy; + /* + * To be safe, make a va_copy. + * + * Note that Microsoft doesn't use va_copy in its sample code: + * https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/vsprintf-vsprintf-l-vswprintf-vswprintf-l-vswprintf-l?view=vs-2019 + */ + XSUM_va_copy(copy, ap); + /* Calculate how many characters we need */ + size = _vscprintf(format, ap); + va_end(copy); + + if (size < 0) { + *strp = NULL; + return size; + } else { + int ret; + *strp = (char*) malloc((size_t)size + 1); + if (*strp == NULL) { + return -1; + } + /* vsprintf into the new buffer */ + ret = vsprintf(*strp, format, ap); + if (ret < 0) { + free(*strp); + *strp = NULL; + } + return ret; + } +} + +/* + * fprintf wrapper that supports UTF-8. + * + * fprintf doesn't properly handle Unicode on Windows. + * + * Additionally, it is codepage sensitive on console and may crash the program. + * + * Instead, we use vsnprintf, and either print with fwrite or convert to UTF-16 + * for console output and use the codepage-independent WriteConsoleW. + * + * Credit to t-mat: https://github.com/t-mat/xxHash/commit/5691423 + */ +XSUM_ATTRIBUTE((__format__(__printf__, 2, 0))) +XSUM_API int XSUM_vfprintf(FILE *stream, const char *format, va_list ap) +{ + int result; + char* u8_str = NULL; + + /* + * Generate the UTF-8 output string with vasprintf. + */ + result = XSUM_vasprintf(&u8_str, format, ap); + + if (result >= 0) { + const size_t nchar = (size_t)result + 1; + + /* + * Check if we are outputting to a console. Don't use XSUM_isConsole + * directly -- we don't need to call _get_osfhandle twice. + */ + int fileNb = _fileno(stream); + intptr_t handle_raw = _get_osfhandle(fileNb); + HANDLE handle = (HANDLE)handle_raw; + DWORD dwTemp; + + if (handle_raw < 0) { + result = -1; + } else if (_isatty(fileNb) && GetConsoleMode(handle, &dwTemp)) { + /* + * Convert to UTF-16 and output with WriteConsoleW. + * + * This is codepage independent and works on Windows XP's default + * msvcrt.dll. + */ + int len; + wchar_t* const u16_buf = XSUM_widenString(u8_str, &len); + if (u16_buf == NULL) { + result = -1; + } else { + if (WriteConsoleW(handle, u16_buf, (DWORD)len - 1, &dwTemp, NULL)) { + result = (int)dwTemp; + } else { + result = -1; + } + free(u16_buf); + } + } else { + /* fwrite the UTF-8 string if we are printing to a file */ + result = (int)fwrite(u8_str, 1, nchar - 1, stream); + if (result == 0) { + result = -1; + } + } + free(u8_str); + } + return result; +} + +#ifndef XSUM_NO_MAIN +/***************************************************************************** + * Command Line argument parsing + *****************************************************************************/ + +/* Converts a UTF-16 argv to UTF-8. */ +static char** XSUM_convertArgv(int argc, wchar_t* utf16_argv[]) +{ + char** const utf8_argv = (char**)malloc((size_t)(argc + 1) * sizeof(char*)); + if (utf8_argv != NULL) { + int i; + for (i = 0; i < argc; i++) { + utf8_argv[i] = XSUM_narrowString(utf16_argv[i], NULL); + if (utf8_argv[i] == NULL) { + /* Out of memory, whoops. */ + while (i-- > 0) { + free(utf8_argv[i]); + } + free(utf8_argv); + return NULL; + } + } + utf8_argv[argc] = NULL; + } + return utf8_argv; +} +/* Frees arguments returned by XSUM_convertArgv */ +static void XSUM_freeArgv(int argc, char** argv) +{ + int i; + if (argv == NULL) { + return; + } + for (i = 0; i < argc; i++) { + free(argv[i]); + } + free(argv); +} + +static int XSUM_wmain(int argc, wchar_t* utf16_argv[]) +{ + /* Convert the UTF-16 arguments to UTF-8. */ + char** utf8_argv = XSUM_convertArgv(argc, utf16_argv); + + if (utf8_argv == NULL) { + /* An unfortunate but incredibly unlikely error. */ + fprintf(stderr, "xxhsum: error converting command line arguments!\n"); + abort(); + } else { + int ret; + + /* + * MinGW's terminal uses full block buffering for stderr. + * + * This is nonstandard behavior and causes text to not display until + * the buffer fills. + * + * `setvbuf()` can easily correct this to make text display instantly. + */ + setvbuf(stderr, NULL, _IONBF, 0); + + /* Call our real main function */ + ret = XSUM_main(argc, (void*)utf8_argv); + + /* Cleanup */ + XSUM_freeArgv(argc, utf8_argv); + return ret; + } +} + +#if XSUM_WIN32_USE_WMAIN + +/* + * The preferred method of obtaining the real UTF-16 arguments. Always works + * on MSVC, sometimes works on MinGW-w64 depending on the compiler flags. + */ +#ifdef __cplusplus +extern "C" +#endif +int __cdecl wmain(int argc, wchar_t* utf16_argv[]) +{ + return XSUM_wmain(argc, utf16_argv); +} +#else /* !XSUM_WIN32_USE_WMAIN */ + +/* + * Wrap `XSUM_wmain()` using `main()` and `__wgetmainargs()` on MinGW without + * Unicode support. + * + * `__wgetmainargs()` is used in the CRT startup to retrieve the arguments for + * `wmain()`, so we use it on MinGW to emulate `wmain()`. + * + * It is an internal function and not declared in any public headers, so we + * have to declare it manually. + * + * An alternative that doesn't mess with internal APIs is `GetCommandLineW()` + * with `CommandLineToArgvW()`, but the former doesn't expand wildcards and the + * latter requires linking to Shell32.dll and its numerous dependencies. + * + * This method keeps our dependencies to kernel32.dll and the CRT. + * + * https://docs.microsoft.com/en-us/cpp/c-runtime-library/getmainargs-wgetmainargs?view=vs-2019 + */ +typedef struct { + int newmode; +} _startupinfo; + +#ifdef __cplusplus +extern "C" +#endif +int __cdecl __wgetmainargs( + int* Argc, + wchar_t*** Argv, + wchar_t*** Env, + int DoWildCard, + _startupinfo* StartInfo +); + +int main(int ansi_argc, const char* ansi_argv[]) +{ + int utf16_argc; + wchar_t** utf16_argv; + wchar_t** utf16_envp; /* Unused but required */ + _startupinfo startinfo = {0}; /* 0 == don't change new mode */ + + /* Get wmain's UTF-16 arguments. Make sure we expand wildcards. */ + if (__wgetmainargs(&utf16_argc, &utf16_argv, &utf16_envp, 1, &startinfo) < 0) + /* In the very unlikely case of an error, use the ANSI arguments. */ + return XSUM_main(ansi_argc, ansi_argv); + + /* Call XSUM_wmain with our UTF-16 arguments */ + return XSUM_wmain(utf16_argc, utf16_argv); +} + +#endif /* !XSUM_WIN32_USE_WMAIN */ +#endif /* !XSUM_NO_MAIN */ +#endif /* XSUM_WIN32_USE_WCHAR */ + + +/* + * Determines whether the file at filename is a directory. + */ +XSUM_API int XSUM_isDirectory(const char* filename) +{ + XSUM_stat_t statbuf; + int r = XSUM_stat(filename, &statbuf); +#ifdef _MSC_VER + if (!r && (statbuf.st_mode & _S_IFDIR)) return 1; +#else + if (!r && S_ISDIR(statbuf.st_mode)) return 1; +#endif + return 0; +} + +/* + * Returns the filesize of the file at filename. + */ +XSUM_API XSUM_U64 XSUM_getFileSize(const char* filename) +{ + XSUM_stat_t statbuf; + int r = XSUM_stat(filename, &statbuf); + if (r || !S_ISREG(statbuf.st_mode)) return 0; /* No good... */ + return (XSUM_U64)statbuf.st_size; +} diff --git a/deps/xxHash/cli/xsum_os_specific.h b/deps/xxHash/cli/xsum_os_specific.h new file mode 100644 index 000000000..e1e080a43 --- /dev/null +++ b/deps/xxHash/cli/xsum_os_specific.h @@ -0,0 +1,89 @@ +/* + * xxhsum - Command line interface for xxhash algorithms + * Copyright (C) 2013-2021 Yann Collet + * + * GPL v2 License + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * You can contact the author at: + * - xxHash homepage: https://www.xxhash.com + * - xxHash source repository: https://github.com/Cyan4973/xxHash + */ + +#ifndef XSUM_OS_SPECIFIC_H +#define XSUM_OS_SPECIFIC_H + +#include "xsum_config.h" +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Declared here to be implemented in user code. + * + * Functions like main(), but is passed UTF-8 arguments even on Windows. + */ +XSUM_API int XSUM_main(int argc, const char* argv[]); + +/* + * Returns whether stream is a console. + * + * Functionally equivalent to isatty(fileno(stream)). + */ +XSUM_API int XSUM_isConsole(FILE* stream); + +/* + * Sets stream to pure binary mode (a.k.a. no CRLF conversions). + */ +XSUM_API void XSUM_setBinaryMode(FILE* stream); + +/* + * Returns whether the file at filename is a directory. + */ +XSUM_API int XSUM_isDirectory(const char* filename); + +/* + * Returns the file size of the file at filename. + */ +XSUM_API XSUM_U64 XSUM_getFileSize(const char* filename); + +/* + * UTF-8 stdio wrappers primarily for Windows + */ + +/* + * fopen() wrapper. Accepts UTF-8 filenames on Windows. + * + * Specifically, on Windows, the arguments will be converted to UTF-16 + * and passed to _wfopen(). + */ +XSUM_API FILE* XSUM_fopen(const char* filename, const char* mode); + +/* + * vfprintf() wrapper which prints UTF-8 strings to Windows consoles + * if applicable. + */ +XSUM_ATTRIBUTE((__format__(__printf__, 2, 0))) +XSUM_API int XSUM_vfprintf(FILE* stream, const char* format, va_list ap); + +#ifdef __cplusplus +} +#endif + +#endif /* XSUM_OS_SPECIFIC_H */ diff --git a/deps/xxHash/cli/xsum_output.c b/deps/xxHash/cli/xsum_output.c new file mode 100644 index 000000000..ee7002bd4 --- /dev/null +++ b/deps/xxHash/cli/xsum_output.c @@ -0,0 +1,66 @@ +/* + * xxhsum - Command line interface for xxhash algorithms + * Copyright (C) 2013-2021 Yann Collet + * + * GPL v2 License + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * You can contact the author at: + * - xxHash homepage: https://www.xxhash.com + * - xxHash source repository: https://github.com/Cyan4973/xxHash + */ + +#include "xsum_output.h" +#include "xsum_os_specific.h" /* XSUM_API */ + +int XSUM_logLevel = 2; + +XSUM_ATTRIBUTE((__format__(__printf__, 1, 2))) +XSUM_API int XSUM_log(const char* format, ...) +{ + int ret; + va_list ap; + va_start(ap, format); + ret = XSUM_vfprintf(stderr, format, ap); + va_end(ap); + return ret; +} + + +XSUM_ATTRIBUTE((__format__(__printf__, 1, 2))) +XSUM_API int XSUM_output(const char* format, ...) +{ + int ret; + va_list ap; + va_start(ap, format); + ret = XSUM_vfprintf(stdout, format, ap); + va_end(ap); + return ret; +} + +XSUM_ATTRIBUTE((__format__(__printf__, 2, 3))) +XSUM_API int XSUM_logVerbose(int minLevel, const char* format, ...) +{ + if (XSUM_logLevel >= minLevel) { + int ret; + va_list ap; + va_start(ap, format); + ret = XSUM_vfprintf(stderr, format, ap); + va_end(ap); + return ret; + } + return 0; +} diff --git a/deps/xxHash/cli/xsum_output.h b/deps/xxHash/cli/xsum_output.h new file mode 100644 index 000000000..9a7926dfc --- /dev/null +++ b/deps/xxHash/cli/xsum_output.h @@ -0,0 +1,62 @@ +/* + * xxhsum - Command line interface for xxhash algorithms + * Copyright (C) 2013-2021 Yann Collet + * + * GPL v2 License + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * You can contact the author at: + * - xxHash homepage: https://www.xxhash.com + * - xxHash source repository: https://github.com/Cyan4973/xxHash + */ + +#ifndef XSUM_OUTPUT_H +#define XSUM_OUTPUT_H + +#include "xsum_config.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * How verbose the output is. + */ +extern int XSUM_logLevel; + +/* + * Same as fprintf(stderr, format, ...) + */ +XSUM_ATTRIBUTE((__format__(__printf__, 1, 2))) +XSUM_API int XSUM_log(const char *format, ...); + +/* + * Like XSUM_log, but only outputs if XSUM_logLevel >= minLevel. + */ +XSUM_ATTRIBUTE((__format__(__printf__, 2, 3))) +XSUM_API int XSUM_logVerbose(int minLevel, const char *format, ...); + +/* + * Same as printf(format, ...) + */ +XSUM_ATTRIBUTE((__format__(__printf__, 1, 2))) +XSUM_API int XSUM_output(const char *format, ...); + +#ifdef __cplusplus +} +#endif + +#endif /* XSUM_OUTPUT_H */ diff --git a/deps/xxHash/cli/xsum_sanity_check.c b/deps/xxHash/cli/xsum_sanity_check.c new file mode 100644 index 000000000..c83ec1f61 --- /dev/null +++ b/deps/xxHash/cli/xsum_sanity_check.c @@ -0,0 +1,733 @@ +/* + * xxhsum - Command line interface for xxhash algorithms + * Copyright (C) 2013-2021 Yann Collet + * + * GPL v2 License + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * You can contact the author at: + * - xxHash homepage: https://www.xxhash.com + * - xxHash source repository: https://github.com/Cyan4973/xxHash + */ + +#include "xsum_sanity_check.h" +#include "xsum_output.h" /* XSUM_log */ +#ifndef XXH_STATIC_LINKING_ONLY +# define XXH_STATIC_LINKING_ONLY +#endif +#include "../xxhash.h" + +#include /* exit */ +#include +#include /* memcmp */ + +/* use #define to make them constant, required for initialization */ +#define PRIME32 2654435761U +#define PRIME64 11400714785074694797ULL + +/* + * Fills a test buffer with pseudorandom data. + * + * This is used in the sanity check - its values must not be changed. + */ +XSUM_API void XSUM_fillTestBuffer(XSUM_U8* buffer, size_t len) +{ + XSUM_U64 byteGen = PRIME32; + size_t i; + + assert(buffer != NULL); + + for (i=0; i>56); + byteGen *= PRIME64; + } +} + + + +/* ************************************************ + * Self-test: + * ensure results consistency across platforms + *********************************************** */ +#if XSUM_NO_TESTS +XSUM_API void XSUM_sanityCheck(void) +{ + XSUM_log("This version of xxhsum is not verified.\n"); +} +#else + +/* + * Test data vectors + */ +typedef struct { + XSUM_U32 len; + XSUM_U32 seed; + XSUM_U32 Nresult; +} XSUM_testdata32_t; + +typedef struct { + XSUM_U32 len; + XSUM_U64 seed; + XSUM_U64 Nresult; +} XSUM_testdata64_t; + +typedef struct { + XSUM_U32 len; + XSUM_U64 seed; + XXH128_hash_t Nresult; +} XSUM_testdata128_t; + +#define SECRET_SAMPLE_NBBYTES 5 +typedef struct { + XSUM_U32 seedLen; + XSUM_U32 secretLen; + XSUM_U8 byte[SECRET_SAMPLE_NBBYTES]; +} XSUM_testdata_sample_t; + +/* XXH32 */ +static const XSUM_testdata32_t XSUM_XXH32_testdata[] = { + { 0, 0, 0x02CC5D05U }, + { 0, PRIME32, 0x36B78AE7U }, + { 1, 0, 0xCF65B03EU }, + { 1, PRIME32, 0xB4545AA4U }, + { 14, 0, 0x1208E7E2U }, + { 14, PRIME32, 0x6AF1D1FEU }, + { 222, 0, 0x5BD11DBDU }, + { 222, PRIME32, 0x58803C5FU } +}; + +/* XXH64 */ +static const XSUM_testdata64_t XSUM_XXH64_testdata[] = { + { 0, 0, 0xEF46DB3751D8E999ULL }, + { 0, PRIME32, 0xAC75FDA2929B17EFULL }, + { 1, 0, 0xE934A84ADB052768ULL }, + { 1, PRIME32, 0x5014607643A9B4C3ULL }, + { 4, 0, 0x9136A0DCA57457EEULL }, + { 14, 0, 0x8282DCC4994E35C8ULL }, + { 14, PRIME32, 0xC3BD6BF63DEB6DF0ULL }, + { 222, 0, 0xB641AE8CB691C174ULL }, + { 222, PRIME32, 0x20CB8AB7AE10C14AULL } +}; +/* + * XXH3: + * Due to being a more complex hash function with specializations for certain + * lengths, a more extensive test is used for XXH3. + */ + +/* XXH3_64bits, seeded */ +static const XSUM_testdata64_t XSUM_XXH3_testdata[] = { + { 0, 0, 0x2D06800538D394C2ULL }, /* empty string */ + { 0, PRIME64, 0xA8A6B918B2F0364AULL }, + { 1, 0, 0xC44BDFF4074EECDBULL }, /* 1 - 3 */ + { 1, PRIME64, 0x032BE332DD766EF8ULL }, + { 6, 0, 0x27B56A84CD2D7325ULL }, /* 4 - 8 */ + { 6, PRIME64, 0x84589C116AB59AB9ULL }, + { 12, 0, 0xA713DAF0DFBB77E7ULL }, /* 9 - 16 */ + { 12, PRIME64, 0xE7303E1B2336DE0EULL }, + { 24, 0, 0xA3FE70BF9D3510EBULL }, /* 17 - 32 */ + { 24, PRIME64, 0x850E80FC35BDD690ULL }, + { 48, 0, 0x397DA259ECBA1F11ULL }, /* 33 - 64 */ + { 48, PRIME64, 0xADC2CBAA44ACC616ULL }, + { 80, 0, 0xBCDEFBBB2C47C90AULL }, /* 65 - 96 */ + { 80, PRIME64, 0xC6DD0CB699532E73ULL }, + { 195, 0, 0xCD94217EE362EC3AULL }, /* 129-240 */ + { 195, PRIME64, 0xBA68003D370CB3D9ULL }, + + { 403, 0, 0xCDEB804D65C6DEA4ULL }, /* one block, last stripe is overlapping */ + { 403, PRIME64, 0x6259F6ECFD6443FDULL }, + { 512, 0, 0x617E49599013CB6BULL }, /* one block, finishing at stripe boundary */ + { 512, PRIME64, 0x3CE457DE14C27708ULL }, + { 2048, 0, 0xDD59E2C3A5F038E0ULL }, /* 2 blocks, finishing at block boundary */ + { 2048, PRIME64, 0x66F81670669ABABCULL }, + { 2099, 0, 0xC6B9D9B3FC9AC765ULL }, /* 2 blocks + 1 partial block, to detect off-by-one scrambling issues, like #816 */ + { 2099, PRIME64, 0x184F316843663974ULL }, + { 2240, 0, 0x6E73A90539CF2948ULL }, /* 3 blocks, finishing at stripe boundary */ + { 2240, PRIME64, 0x757BA8487D1B5247ULL }, + { 2367, 0, 0xCB37AEB9E5D361EDULL }, /* 3 blocks, last stripe is overlapping */ + { 2367, PRIME64, 0xD2DB3415B942B42AULL } +}; +/* XXH3_64bits, custom secret */ +static const XSUM_testdata64_t XSUM_XXH3_withSecret_testdata[] = { + { 0, 0, 0x3559D64878C5C66CULL }, /* empty string */ + { 1, 0, 0x8A52451418B2DA4DULL }, /* 1 - 3 */ + { 6, 0, 0x82C90AB0519369ADULL }, /* 4 - 8 */ + { 12, 0, 0x14631E773B78EC57ULL }, /* 9 - 16 */ + { 24, 0, 0xCDD5542E4A9D9FE8ULL }, /* 17 - 32 */ + { 48, 0, 0x33ABD54D094B2534ULL }, /* 33 - 64 */ + { 80, 0, 0xE687BA1684965297ULL }, /* 65 - 96 */ + { 195, 0, 0xA057273F5EECFB20ULL }, /* 129-240 */ + + { 403, 0, 0x14546019124D43B8ULL }, /* one block, last stripe is overlapping */ + { 512, 0, 0x7564693DD526E28DULL }, /* one block, finishing at stripe boundary */ + { 2048, 0, 0xD32E975821D6519FULL }, /* >= 2 blodcks, at least one scrambling */ + { 2367, 0, 0x293FA8E5173BB5E7ULL }, /* >= 2 blocks, at least one scrambling, last stripe unaligned */ + + { 64*10*3, 0, 0x751D2EC54BC6038BULL } /* exactly 3 full blocks, not a multiple of 256 */ +}; +/* XXH3_128bits, seeded */ +static const XSUM_testdata128_t XSUM_XXH128_testdata[] = { + { 0, 0, { 0x6001C324468D497FULL, 0x99AA06D3014798D8ULL } }, /* empty string */ + { 0, PRIME32, { 0x5444F7869C671AB0ULL, 0x92220AE55E14AB50ULL } }, + { 1, 0, { 0xC44BDFF4074EECDBULL, 0xA6CD5E9392000F6AULL } }, /* 1 - 3 */ + { 1, PRIME32, { 0xB53D5557E7F76F8DULL, 0x89B99554BA22467CULL } }, + { 6, 0, { 0x3E7039BDDA43CFC6ULL, 0x082AFE0B8162D12AULL } }, /* 4 - 8 */ + { 6, PRIME32, { 0x269D8F70BE98856EULL, 0x5A865B5389ABD2B1ULL } }, + { 12, 0, { 0x061A192713F69AD9ULL, 0x6E3EFD8FC7802B18ULL } }, /* 9 - 16 */ + { 12, PRIME32, { 0x9BE9F9A67F3C7DFBULL, 0xD7E09D518A3405D3ULL } }, + { 24, 0, { 0x1E7044D28B1B901DULL, 0x0CE966E4678D3761ULL } }, /* 17 - 32 */ + { 24, PRIME32, { 0xD7304C54EBAD40A9ULL, 0x3162026714A6A243ULL } }, + { 48, 0, { 0xF942219AED80F67BULL, 0xA002AC4E5478227EULL } }, /* 33 - 64 */ + { 48, PRIME32, { 0x7BA3C3E453A1934EULL, 0x163ADDE36C072295ULL } }, + { 81, 0, { 0x5E8BAFB9F95FB803ULL, 0x4952F58181AB0042ULL } }, /* 65 - 96 */ + { 81, PRIME32, { 0x703FBB3D7A5F755CULL, 0x2724EC7ADC750FB6ULL } }, + { 222, 0, { 0xF1AEBD597CEC6B3AULL, 0x337E09641B948717ULL } }, /* 129-240 */ + { 222, PRIME32, { 0xAE995BB8AF917A8DULL, 0x91820016621E97F1ULL } }, + + { 403, 0, { 0xCDEB804D65C6DEA4ULL, 0x1B6DE21E332DD73DULL } }, /* one block, last stripe is overlapping */ + { 403, PRIME64, { 0x6259F6ECFD6443FDULL, 0xBED311971E0BE8F2ULL } }, + { 512, 0, { 0x617E49599013CB6BULL, 0x18D2D110DCC9BCA1ULL } }, /* one block, finishing at stripe boundary */ + { 512, PRIME64, { 0x3CE457DE14C27708ULL, 0x925D06B8EC5B8040ULL } }, + { 2048, 0, { 0xDD59E2C3A5F038E0ULL, 0xF736557FD47073A5ULL } }, /* 2 blocks, finishing at block boundary */ + { 2048, PRIME32, { 0x230D43F30206260BULL, 0x7FB03F7E7186C3EAULL } }, + { 2240, 0, { 0x6E73A90539CF2948ULL, 0xCCB134FBFA7CE49DULL } }, /* 3 blocks, finishing at stripe boundary */ + { 2240, PRIME32, { 0xED385111126FBA6FULL, 0x50A1FE17B338995FULL } }, + { 2367, 0, { 0xCB37AEB9E5D361EDULL, 0xE89C0F6FF369B427ULL } }, /* 3 blocks, last stripe is overlapping */ + { 2367, PRIME32, { 0x6F5360AE69C2F406ULL, 0xD23AAE4B76C31ECBULL } } +}; + +/* XXH128, custom secret */ +static const XSUM_testdata128_t XSUM_XXH128_withSecret_testdata[] = { + { 0, 0, { 0x005923CCEECBE8AEULL, 0x5F70F4EA232F1D38ULL } }, /* empty string */ + { 1, 0, { 0x8A52451418B2DA4DULL, 0x3A66AF5A9819198EULL } }, /* 1 - 3 */ + { 6, 0, { 0x0B61C8ACA7D4778FULL, 0x376BD91B6432F36DULL } }, /* 4 - 8 */ + { 12, 0, { 0xAF82F6EBA263D7D8ULL, 0x90A3C2D839F57D0FULL } } /* 9 - 16 */ +}; + +#define SECRET_SIZE_MAX 9867 +static const XSUM_testdata_sample_t XSUM_XXH3_generateSecret_testdata[] = { + { 0, 192, { 0xE7, 0x8C, 0x77, 0x77, 0x00 } }, + { 1, 240, { 0x2B, 0x3E, 0xDE, 0xC1, 0x00 } }, + { XXH3_SECRET_SIZE_MIN - 1, 277, { 0xE8, 0x39, 0x6C, 0xCC, 0x7B } }, + { XXH3_SECRET_DEFAULT_SIZE + 500, SECRET_SIZE_MAX, { 0xD6, 0x1C, 0x41, 0x17, 0xB3 } } +}; + +static void XSUM_checkResult32(XXH32_hash_t r1, XXH32_hash_t r2) +{ + static int nbTests = 1; + if (r1!=r2) { + XSUM_log("\rError: 32-bit hash test %i: Internal sanity check failed!\n", nbTests); + XSUM_log("\rGot 0x%08X, expected 0x%08X.\n", (unsigned)r1, (unsigned)r2); + XSUM_log("\rNote: If you modified the hash functions, make sure to either update the values\n" + "or temporarily recompile with XSUM_NO_TESTS=1.\n"); + exit(1); + } + nbTests++; +} + +static void XSUM_checkResult64(XXH64_hash_t r1, XXH64_hash_t r2) +{ + static int nbTests = 1; + if (r1!=r2) { + XSUM_log("\rError: 64-bit hash test %i: Internal sanity check failed!\n", nbTests); + XSUM_log("\rGot 0x%08X%08XULL, expected 0x%08X%08XULL.\n", + (unsigned)(r1>>32), (unsigned)r1, (unsigned)(r2>>32), (unsigned)r2); + XSUM_log("\rNote: If you modified the hash functions, make sure to either update the values\n" + "or temporarily recompile with XSUM_NO_TESTS=1.\n"); + exit(1); + } + nbTests++; +} + +static void XSUM_checkResult128(XXH128_hash_t r1, XXH128_hash_t r2) +{ + static int nbTests = 1; + if ((r1.low64 != r2.low64) || (r1.high64 != r2.high64)) { + XSUM_log("\rError: 128-bit hash test %i: Internal sanity check failed.\n", nbTests); + XSUM_log("\rGot { 0x%08X%08XULL, 0x%08X%08XULL }, expected { 0x%08X%08XULL, 0x%08X%08XULL } \n", + (unsigned)(r1.low64>>32), (unsigned)r1.low64, (unsigned)(r1.high64>>32), (unsigned)r1.high64, + (unsigned)(r2.low64>>32), (unsigned)r2.low64, (unsigned)(r2.high64>>32), (unsigned)r2.high64 ); + XSUM_log("\rNote: If you modified the hash functions, make sure to either update the values\n" + "or temporarily recompile with XSUM_NO_TESTS=1.\n"); + exit(1); + } + nbTests++; +} + + +static void XSUM_testXXH32(const void* data, const XSUM_testdata32_t* testData) +{ + XXH32_state_t *state = XXH32_createState(); + size_t pos; + + size_t len = testData->len; + XSUM_U32 seed = testData->seed; + XSUM_U32 Nresult = testData->Nresult; + + if (len == 0) { + data = NULL; + } else { + assert(data != NULL); + } + + assert(state != NULL); + + XSUM_checkResult32(XXH32(data, len, seed), Nresult); + + (void)XXH32_reset(state, seed); + (void)XXH32_update(state, data, len); + XSUM_checkResult32(XXH32_digest(state), Nresult); + + (void)XXH32_reset(state, seed); + for (pos=0; poslen; + XSUM_U64 seed = testData->seed; + XSUM_U64 Nresult = testData->Nresult; + + if (len == 0) { + data = NULL; + } else { + assert(data != NULL); + } + + assert(state != NULL); + + XSUM_checkResult64(XXH64(data, len, seed), Nresult); + + (void)XXH64_reset(state, seed); + (void)XXH64_update(state, data, len); + XSUM_checkResult64(XXH64_digest(state), Nresult); + + (void)XXH64_reset(state, seed); + for (pos=0; pos> 40); +} + +/* + * Technically, XXH3_64bits_update is identical to XXH3_128bits_update as of + * v0.8.0, but we treat them as separate. + */ +typedef XXH_errorcode (*XSUM_XXH3_update_t)(XXH_NOESCAPE XXH3_state_t* state, XXH_NOESCAPE const void* input, size_t length); + +/* + * Runs the passed XXH3_update variant on random lengths. This is to test the + * more complex logic of the update function, catching bugs like this one: + * https://github.com/Cyan4973/xxHash/issues/378 + */ +static void XSUM_XXH3_randomUpdate(XXH3_state_t* state, const void* data, + size_t len, XSUM_XXH3_update_t update_fn) +{ + size_t p = 0; + while (p < len) { + size_t const modulo = len > 2 ? len : 2; + size_t l = (size_t)(XSUM_rand()) % modulo; + if (p + l > len) l = len - p; + (void)update_fn(state, (const char*)data+p, l); + p += l; + } +} + +static void XSUM_testXXH3(const void* data, const XSUM_testdata64_t* testData) +{ + size_t len = testData->len; + XSUM_U64 seed = testData->seed; + XSUM_U64 Nresult = testData->Nresult; + if (len == 0) { + data = NULL; + } else { + assert(data != NULL); + } + { XSUM_U64 const Dresult = XXH3_64bits_withSeed(data, len, seed); + XSUM_checkResult64(Dresult, Nresult); + } + + /* check that the no-seed variant produces same result as seed==0 */ + if (seed == 0) { + XSUM_U64 const Dresult = XXH3_64bits(data, len); + XSUM_checkResult64(Dresult, Nresult); + } + + /* check that the combination of + * XXH3_generateSecret_fromSeed() and XXH3_64bits_withSecretandSeed() + * results in exactly the same hash generation as XXH3_64bits_withSeed() */ + { char secretBuffer[XXH3_SECRET_DEFAULT_SIZE+1]; + char* const secret = secretBuffer + 1; /* intentional unalignment */ + XXH3_generateSecret_fromSeed(secret, seed); + { XSUM_U64 const Dresult = XXH3_64bits_withSecretandSeed(data, len, secret, XXH3_SECRET_DEFAULT_SIZE, seed); + XSUM_checkResult64(Dresult, Nresult); + } + + /* check that XXH3_64bits_withSecretandSeed() + * results in exactly the same return value as XXH3_64bits_withSeed() + * when len <= XXH3_MIDSIZE_MAX, whatever the content of @secret */ + memset(secret, 0x99, 9); + if (len <= XXH3_MIDSIZE_MAX) { + XSUM_U64 const Dresult = XXH3_64bits_withSecretandSeed(data, len, secret, XXH3_SECRET_DEFAULT_SIZE, seed); + XSUM_checkResult64(Dresult, Nresult); + } + } + + /* streaming API test */ + { XXH3_state_t* const state = XXH3_createState(); + assert(state != NULL); + /* single ingestion */ + (void)XXH3_64bits_reset_withSeed(state, seed); + (void)XXH3_64bits_update(state, data, len); + XSUM_checkResult64(XXH3_64bits_digest(state), Nresult); + + /* random ingestion */ + (void)XXH3_64bits_reset_withSeed(state, seed); + XSUM_XXH3_randomUpdate(state, data, len, XXH3_64bits_update); + XSUM_checkResult64(XXH3_64bits_digest(state), Nresult); + + /* byte by byte ingestion */ + { size_t pos; + (void)XXH3_64bits_reset_withSeed(state, seed); + for (pos=0; poslen; + XSUM_U64 Nresult = testData->Nresult; + + if (len == 0) { + data = NULL; + } else { + assert(data != NULL); + } + { XSUM_U64 const Dresult = XXH3_64bits_withSecret(data, len, secret, secretSize); + XSUM_checkResult64(Dresult, Nresult); + } + + /* check that XXH3_64bits_withSecretandSeed() + * results in exactly the same return value as XXH3_64bits_withSecret() */ + if (len > XXH3_MIDSIZE_MAX) + { XSUM_U64 const Dresult = XXH3_64bits_withSecretandSeed(data, len, secret, secretSize, 0); + XSUM_checkResult64(Dresult, Nresult); + } + + /* streaming API test */ + { XXH3_state_t *state = XXH3_createState(); + assert(state != NULL); + (void)XXH3_64bits_reset_withSecret(state, secret, secretSize); + (void)XXH3_64bits_update(state, data, len); + XSUM_checkResult64(XXH3_64bits_digest(state), Nresult); + + /* random ingestion */ + (void)XXH3_64bits_reset_withSecret(state, secret, secretSize); + XSUM_XXH3_randomUpdate(state, data, len, XXH3_64bits_update); + XSUM_checkResult64(XXH3_64bits_digest(state), Nresult); + + /* byte by byte ingestion */ + { size_t pos; + (void)XXH3_64bits_reset_withSecret(state, secret, secretSize); + for (pos=0; pos XXH3_MIDSIZE_MAX, whatever the value of @seed */ + if (len > XXH3_MIDSIZE_MAX) { + /* single ingestion */ + (void)XXH3_64bits_reset_withSecretandSeed(state, secret, secretSize, 17); + (void)XXH3_64bits_update(state, data, len); + XSUM_checkResult64(XXH3_64bits_digest(state), Nresult); + } + + XXH3_freeState(state); + } +} + +static void XSUM_testXXH128(const void* data, const XSUM_testdata128_t* testData) +{ + size_t len = (size_t)testData->len; + XSUM_U64 seed = testData->seed; + XXH128_hash_t const Nresult = testData->Nresult; + if (len == 0) { + data = NULL; + } else { + assert(data != NULL); + } + + { XXH128_hash_t const Dresult = XXH3_128bits_withSeed(data, len, seed); + XSUM_checkResult128(Dresult, Nresult); + } + + /* check that XXH128() is identical to XXH3_128bits_withSeed() */ + { XXH128_hash_t const Dresult2 = XXH128(data, len, seed); + XSUM_checkResult128(Dresult2, Nresult); + } + + /* check that the no-seed variant produces same result as seed==0 */ + if (seed == 0) { + XXH128_hash_t const Dresult = XXH3_128bits(data, len); + XSUM_checkResult128(Dresult, Nresult); + } + + /* check that the combination of + * XXH3_generateSecret_fromSeed() and XXH3_128bits_withSecretandSeed() + * results in exactly the same hash generation as XXH3_64bits_withSeed() */ + { char secretBuffer[XXH3_SECRET_DEFAULT_SIZE+1]; + char* const secret = secretBuffer + 1; /* intentional unalignment */ + XXH3_generateSecret_fromSeed(secret, seed); + { XXH128_hash_t const Dresult = XXH3_128bits_withSecretandSeed(data, len, secret, XXH3_SECRET_DEFAULT_SIZE, seed); + XSUM_checkResult128(Dresult, Nresult); + } + + /* check that XXH3_128bits_withSecretandSeed() + * results in exactly the same return value as XXH3_128bits_withSeed() + * if len <= XXH3_MIDSIZE_MAX, whatever the content of @secret */ + memset(secret, 0x99, 9); + if (len <= XXH3_MIDSIZE_MAX) { + XXH128_hash_t const Dresult = XXH3_128bits_withSecretandSeed(data, len, secret, XXH3_SECRET_DEFAULT_SIZE, seed); + XSUM_checkResult128(Dresult, Nresult); + } + } + + /* streaming API test */ + { XXH3_state_t *state = XXH3_createState(); + assert(state != NULL); + + /* single ingestion */ + (void)XXH3_128bits_reset_withSeed(state, seed); + (void)XXH3_128bits_update(state, data, len); + XSUM_checkResult128(XXH3_128bits_digest(state), Nresult); + + /* random ingestion */ + (void)XXH3_128bits_reset_withSeed(state, seed); + XSUM_XXH3_randomUpdate(state, data, len, XXH3_128bits_update); + XSUM_checkResult128(XXH3_128bits_digest(state), Nresult); + + /* byte by byte ingestion */ + { size_t pos; + (void)XXH3_128bits_reset_withSeed(state, seed); + for (pos=0; poslen; + XXH128_hash_t Nresult = testData->Nresult; + if (len == 0) { + data = NULL; + } else { + assert(data != NULL); + } + { XXH128_hash_t const Dresult = XXH3_128bits_withSecret(data, len, secret, secretSize); + XSUM_checkResult128(Dresult, Nresult); + } + + /* check that XXH3_128bits_withSecretandSeed() + * results in exactly the same return value as XXH3_128bits_withSecret() */ + if (len > XXH3_MIDSIZE_MAX) + { XXH128_hash_t const Dresult = XXH3_128bits_withSecretandSeed(data, len, secret, secretSize, 0); + XSUM_checkResult128(Dresult, Nresult); + } + + /* streaming API test */ + { XXH3_state_t* const state = XXH3_createState(); + assert(state != NULL); + (void)XXH3_128bits_reset_withSecret(state, secret, secretSize); + (void)XXH3_128bits_update(state, data, len); + XSUM_checkResult128(XXH3_128bits_digest(state), Nresult); + + /* random ingestion */ + (void)XXH3_128bits_reset_withSecret(state, secret, secretSize); + XSUM_XXH3_randomUpdate(state, data, len, XXH3_128bits_update); + XSUM_checkResult128(XXH3_128bits_digest(state), Nresult); + + /* byte by byte ingestion */ + { size_t pos; + (void)XXH3_128bits_reset_withSecret(state, secret, secretSize); + for (pos=0; pos XXH3_MIDSIZE_MAX) { + /* single ingestion */ + (void)XXH3_128bits_reset_withSecretandSeed(state, secret, secretSize, 0); + (void)XXH3_128bits_update(state, data, len); + XSUM_checkResult128(XXH3_128bits_digest(state), Nresult); + } + + XXH3_freeState(state); + } +} + +static void XSUM_testSecretGenerator(const void* customSeed, const XSUM_testdata_sample_t* testData) +{ + static int nbTests = 1; + const int sampleIndex[SECRET_SAMPLE_NBBYTES] = { 0, 62, 131, 191, 241 }; /* position of sampled bytes */ + XSUM_U8 secretBuffer[SECRET_SIZE_MAX] = {0}; + XSUM_U8 samples[SECRET_SAMPLE_NBBYTES]; + int i; + + assert(testData->secretLen <= SECRET_SIZE_MAX); + XXH3_generateSecret(secretBuffer, testData->secretLen, customSeed, testData->seedLen); + for (i=0; ibyte, sizeof(testData->byte))) { + XSUM_log("\rError: Secret generation test %i: Internal sanity check failed. \n", nbTests); + XSUM_log("\rGot { 0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%02X }, expected { 0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%02X } \n", + samples[0], samples[1], samples[2], samples[3], samples[4], + testData->byte[0], testData->byte[1], testData->byte[2], testData->byte[3], testData->byte[4] ); + exit(1); + } + nbTests++; +} + +/*! + * XSUM_sanityCheck(): + * Runs a sanity check before the benchmark. + * + * Exits on an incorrect output. + */ +XSUM_API void XSUM_sanityCheck(void) +{ + size_t i; +#define SANITY_BUFFER_SIZE 2367 + XSUM_U8 sanityBuffer[SANITY_BUFFER_SIZE]; + const void* const secret = sanityBuffer + 7; + const size_t secretSize = XXH3_SECRET_SIZE_MIN + 11; + assert(sizeof(sanityBuffer) >= 7 + secretSize); + + XSUM_fillTestBuffer(sanityBuffer, sizeof(sanityBuffer)); + + /* XXH32 */ + for (i = 0; i < (sizeof(XSUM_XXH32_testdata)/sizeof(XSUM_XXH32_testdata[0])); i++) { + XSUM_testXXH32(sanityBuffer, &XSUM_XXH32_testdata[i]); + } + /* XXH64 */ + for (i = 0; i < (sizeof(XSUM_XXH64_testdata)/sizeof(XSUM_XXH64_testdata[0])); i++) { + XSUM_testXXH64(sanityBuffer, &XSUM_XXH64_testdata[i]); + } + /* XXH3_64bits, seeded */ + for (i = 0; i < (sizeof(XSUM_XXH3_testdata)/sizeof(XSUM_XXH3_testdata[0])); i++) { + XSUM_testXXH3(sanityBuffer, &XSUM_XXH3_testdata[i]); + } + /* XXH3_64bits, custom secret */ + for (i = 0; i < (sizeof(XSUM_XXH3_withSecret_testdata)/sizeof(XSUM_XXH3_withSecret_testdata[0])); i++) { + XSUM_testXXH3_withSecret(sanityBuffer, secret, secretSize, &XSUM_XXH3_withSecret_testdata[i]); + } + /* XXH128 */ + for (i = 0; i < (sizeof(XSUM_XXH128_testdata)/sizeof(XSUM_XXH128_testdata[0])); i++) { + XSUM_testXXH128(sanityBuffer, &XSUM_XXH128_testdata[i]); + } + /* XXH128 with custom Secret */ + for (i = 0; i < (sizeof(XSUM_XXH128_withSecret_testdata)/sizeof(XSUM_XXH128_withSecret_testdata[0])); i++) { + XSUM_testXXH128_withSecret(sanityBuffer, secret, secretSize, &XSUM_XXH128_withSecret_testdata[i]); + } + /* secret generator */ + for (i = 0; i < (sizeof(XSUM_XXH3_generateSecret_testdata)/sizeof(XSUM_XXH3_generateSecret_testdata[0])); i++) { + assert(XSUM_XXH3_generateSecret_testdata[i].seedLen <= SANITY_BUFFER_SIZE); + XSUM_testSecretGenerator(sanityBuffer, &XSUM_XXH3_generateSecret_testdata[i]); + } + + XSUM_logVerbose(3, "\r%70s\r", ""); /* Clean display line */ + XSUM_logVerbose(3, "Sanity check -- all tests ok\n"); +} + +#endif /* !XSUM_NO_TESTS */ diff --git a/deps/xxHash/cli/xsum_sanity_check.h b/deps/xxHash/cli/xsum_sanity_check.h new file mode 100644 index 000000000..af766dfa4 --- /dev/null +++ b/deps/xxHash/cli/xsum_sanity_check.h @@ -0,0 +1,60 @@ +/* + * xxhsum - Command line interface for xxhash algorithms + * Copyright (C) 2013-2021 Yann Collet + * + * GPL v2 License + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * You can contact the author at: + * - xxHash homepage: https://www.xxhash.com + * - xxHash source repository: https://github.com/Cyan4973/xxHash + */ + +#ifndef XSUM_SANITY_CHECK_H +#define XSUM_SANITY_CHECK_H + +#include "xsum_config.h" /* XSUM_API, XSUM_U8 */ + +#include /* size_t */ + + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Runs a series of self-tests. + * + * Exits if any of these tests fail, printing a message to stderr. + * + * If XSUM_NO_TESTS is defined to non-zero, + * this will instead print a warning if this is called (e.g. via xxhsum -b). + */ +XSUM_API void XSUM_sanityCheck(void); + +/* + * Fills a test buffer with pseudorandom data. + * + * This is used in the sanity check and the benchmarks. + * Its values must not be changed. + */ +XSUM_API void XSUM_fillTestBuffer(XSUM_U8* buffer, size_t len); + +#ifdef __cplusplus +} +#endif + +#endif /* XSUM_SANITY_CHECK_H */ diff --git a/deps/xxHash/cli/xxhsum.c b/deps/xxHash/cli/xxhsum.c new file mode 100644 index 000000000..5ddbb8d68 --- /dev/null +++ b/deps/xxHash/cli/xxhsum.c @@ -0,0 +1,1681 @@ +/* + * xxhsum - Command line interface for xxhash algorithms + * Copyright (C) 2013-2023 Yann Collet + * + * GPL v2 License + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * You can contact the author at: + * - xxHash homepage: https://www.xxhash.com + * - xxHash source repository: https://github.com/Cyan4973/xxHash + */ + +/* + * xxhsum: + * Provides hash value of a file content, or a list of files, or stdin + * Display convention is Big Endian, for both 32 and 64 bits algorithms + */ + +/* Transitional headers */ +#include "xsum_arch.h" /* XSUM_PROGRAM_VERSION */ +#include "xsum_os_specific.h" /* XSUM_setBinaryMode */ +#include "xsum_output.h" /* XSUM_output */ +#include "xsum_sanity_check.h" /* XSUM_sanityCheck */ +#include "xsum_bench.h" /* NBLOOPS_DEFAULT */ +#ifdef XXH_INLINE_ALL +# include "xsum_os_specific.c" +# include "xsum_output.c" +# include "xsum_sanity_check.c" +# include "xsum_bench.c" +#endif + +/* ************************************ + * Includes + **************************************/ +#include /* malloc, calloc, free, exit */ +#include /* strerror, strcmp, memcpy */ +#include /* assert */ +#include /* errno */ + +#define XXH_STATIC_LINKING_ONLY /* *_state_t */ +#include "../xxhash.h" + +#ifdef XXHSUM_DISPATCH +# include "../xxh_x86dispatch.h" +#endif + +static unsigned XSUM_isLittleEndian(void) +{ + const union { XSUM_U32 u; XSUM_U8 c[4]; } one = { 1 }; /* don't use static: performance detrimental */ + return one.c[0]; +} + +static const int g_nbBits = (int)(sizeof(void*)*8); +static const char g_lename[] = "little endian"; +static const char g_bename[] = "big endian"; +#define ENDIAN_NAME (XSUM_isLittleEndian() ? g_lename : g_bename) +static const char author[] = "Yann Collet"; +#define WELCOME_MESSAGE(exename) "%s %s by %s \n", exename, XSUM_PROGRAM_VERSION, author +#define FULL_WELCOME_MESSAGE(exename) "%s %s by %s \n" \ + "compiled as %i-bit %s %s with " XSUM_CC_VERSION_FMT " \n", \ + exename, XSUM_PROGRAM_VERSION, author, \ + g_nbBits, XSUM_ARCH, ENDIAN_NAME, XSUM_CC_VERSION + + +static const char stdinName[] = "-"; +static const char stdinFileName[] = "stdin"; +typedef enum { algo_xxh32=0, algo_xxh64=1, algo_xxh128=2, algo_xxh3=3 } AlgoSelected; +static AlgoSelected g_defaultAlgo = algo_xxh64; /* required within main() & XSUM_usage() */ + +typedef enum { + algo_bitmask_xxh32 = 1 << algo_xxh32, /* 1 << 0 */ + algo_bitmask_xxh64 = 1 << algo_xxh64, /* 1 << 1 */ + algo_bitmask_xxh128 = 1 << algo_xxh128, /* 1 << 2 */ + algo_bitmask_xxh3 = 1 << algo_xxh3, /* 1 << 3 */ + algo_bitmask_all = algo_bitmask_xxh32 /* All algorithms */ + | algo_bitmask_xxh64 + | algo_bitmask_xxh128 + | algo_bitmask_xxh3 +} AlgoBitmask; + + +/* <16 hex char> <'\0'> + * '4096' is typical Linux PATH_MAX configuration. */ +#define DEFAULT_LINE_LENGTH (sizeof(XXH64_hash_t) * 2 + 2 + 4096 + 1) + +/* Maximum acceptable line length. */ +#define MAX_LINE_LENGTH (32 KB) + +static size_t XSUM_DEFAULT_SAMPLE_SIZE = 100 KB; + + +/* ******************************************************** +* Filename (un)escaping +**********************************************************/ +static int XSUM_filenameNeedsEscape(const char* filename) { + return strchr(filename, '\\') + || strchr(filename, '\n') + || strchr(filename, '\r'); +} + +static int XSUM_lineNeedsUnescape(const char* line) { + /* Skip white-space characters */ + while (*line == ' ' || *line == '\t') { + ++line; + } + /* Returns true if first non-white-space character is '\\' (0x5c) */ + return *line == '\\'; +} + +static void XSUM_printFilename(const char* filename, int needsEscape) { + if (!needsEscape) { + XSUM_output("%s", filename); + } else { + const char* p; + for (p = filename; *p != '\0'; ++p) { + switch (*p) + { + case '\n': + XSUM_output("\\n"); + break; + case '\r': + XSUM_output("\\r"); + break; + case '\\': + XSUM_output("\\\\"); + break; + default: + XSUM_output("%c", *p); + break; + } + } + } +} + +/* Unescape filename in place. + + - Replace '\\', 'n' (0x5c, 0x6e) with '\n' (0x0a). + - Replace '\\', 'r' (0x5c, 0x72) with '\r' (0x0d). + - Replace '\\', '\\' (0x5c, 0x5c) with '\\' (0x5c). + - filename may not contain other backslash sequences. + - filename may not ends with backslash. + - filename may not contain NUL (0x00). + + Return filename if everything is okay. + Return NULL if something wrong. +*/ +static char* XSUM_filenameUnescape(char* filename, size_t filenameLen) { + char *p = filename; + size_t i; + for (i = 0; i < filenameLen; ++i) { + switch (filename[i]) + { + case '\\': + ++i; + if (i == filenameLen) { + return NULL; /* Don't accept '\\', */ + } + switch (filename[i]) + { + case 'n': + *p++ = '\n'; + break; + case 'r': + *p++ = '\r'; + break; + case '\\': + *p++ = '\\'; + break; + default: + return NULL; /* Don't accept any other backslash sequence */ + } + break; + case '\0': + return NULL; /* Don't accept NUL (0x00) */ + default: + *p++ = filename[i]; + break; + } + } + if (p < filename + filenameLen) { + *p = '\0'; + } + return filename; +} + + +/* ******************************************************** +* Algorithm Bitmask +**********************************************************/ +/* Compute AlgoBitmask (as a U32) from AlgoSelected */ +static XSUM_U32 XSUM_algoBitmask_ComputeAlgoBitmaskFromAlgoSelected(AlgoSelected algoSelected) { + return (XSUM_U32) (1U << algoSelected); +} + +/* Returns true (!0) if algoBitmask contains (accepts) parsedLineAlgo */ +static int XSUM_algoBitmask_Accepts(XSUM_U32 algoBitmask, AlgoSelected parsedLineAlgo) { + const XSUM_U32 mask = XSUM_algoBitmask_ComputeAlgoBitmaskFromAlgoSelected(parsedLineAlgo); + return (algoBitmask & mask) != 0; +} + + +/* ******************************************************** +* File Hashing +**********************************************************/ + +#define XXHSUM32_DEFAULT_SEED 0 /* Default seed for algo_xxh32 */ +#define XXHSUM64_DEFAULT_SEED 0 /* Default seed for algo_xxh64 */ + +/* for support of --little-endian display mode */ +static void XSUM_display_LittleEndian(const void* ptr, size_t length) +{ + const XSUM_U8* const p = (const XSUM_U8*)ptr; + size_t idx; + for (idx=length-1; idx 0) { + switch(hashType) + { + case algo_xxh32: + (void)XXH32_update(&state32, buffer, readSize); + break; + case algo_xxh64: + (void)XXH64_update(&state64, buffer, readSize); + break; + case algo_xxh128: + (void)XXH3_128bits_update(&state3, buffer, readSize); + break; + case algo_xxh3: + (void)XXH3_64bits_update(&state3, buffer, readSize); + break; + default: + assert(0); + } + } + if (ferror(inFile)) { + XSUM_log("Error: a failure occurred reading the input file.\n"); + exit(1); + } } + + { Multihash finalHash = {0}; + switch(hashType) + { + case algo_xxh32: + finalHash.hash32 = XXH32_digest(&state32); + break; + case algo_xxh64: + finalHash.hash64 = XXH64_digest(&state64); + break; + case algo_xxh128: + finalHash.hash128 = XXH3_128bits_digest(&state3); + break; + case algo_xxh3: + finalHash.hash64 = XXH3_64bits_digest(&state3); + break; + default: + assert(0); + } + return finalHash; + } +} + + /* algo_xxh32, algo_xxh64, algo_xxh128 */ +static const char* XSUM_algoName[] = { "XXH32", "XXH64", "XXH128", "XXH3" }; +static const char* XSUM_algoLE_name[] = { "XXH32_LE", "XXH64_LE", "XXH128_LE", "XXH3_LE" }; +static const size_t XSUM_algoLength[] = { 4, 8, 16, 8 }; + +#define XSUM_TABLE_ELT_SIZE(table) (sizeof(table) / sizeof(*table)) + +typedef void (*XSUM_displayHash_f)(const void*, size_t); /* display function signature */ + +static void XSUM_printLine_BSD_internal(const char* filename, + const void* canonicalHash, const AlgoSelected hashType, + const char* algoString[], + XSUM_displayHash_f f_displayHash) +{ + assert(0 <= hashType && (size_t)hashType <= XSUM_TABLE_ELT_SIZE(XSUM_algoName)); + { const char* const typeString = algoString[hashType]; + const size_t hashLength = XSUM_algoLength[hashType]; + const int needsEscape = XSUM_filenameNeedsEscape(filename); + if (needsEscape) { + XSUM_output("%c", '\\'); + } + XSUM_output("%s (", typeString); + XSUM_printFilename(filename, needsEscape); + XSUM_output(") = "); + f_displayHash(canonicalHash, hashLength); + XSUM_output("\n"); +} } + +static void XSUM_printLine_BSD_LE(const char* filename, const void* canonicalHash, const AlgoSelected hashType) +{ + XSUM_printLine_BSD_internal(filename, canonicalHash, hashType, XSUM_algoLE_name, XSUM_display_LittleEndian); +} + +static void XSUM_printLine_BSD(const char* filename, const void* canonicalHash, const AlgoSelected hashType) +{ + XSUM_printLine_BSD_internal(filename, canonicalHash, hashType, XSUM_algoName, XSUM_display_BigEndian); +} + +static void XSUM_displayPrefix(const AlgoSelected hashType) +{ + assert(0 <= hashType && (size_t)hashType <= XSUM_TABLE_ELT_SIZE(XSUM_algoName)); + if (hashType == algo_xxh3) { + XSUM_output("XXH3_"); + } +} + +static void XSUM_printLine_GNU_internal(const char* filename, + const void* canonicalHash, const AlgoSelected hashType, + XSUM_displayHash_f f_displayHash) +{ + assert(0 <= hashType && (size_t)hashType <= XSUM_TABLE_ELT_SIZE(XSUM_algoName)); + { const size_t hashLength = XSUM_algoLength[hashType]; + const int needsEscape = XSUM_filenameNeedsEscape(filename); + if (needsEscape) { + XSUM_output("%c", '\\'); + } + XSUM_displayPrefix(hashType); + f_displayHash(canonicalHash, hashLength); + XSUM_output(" "); + XSUM_printFilename(filename, needsEscape); + XSUM_output("\n"); +} } + +static void XSUM_printLine_GNU(const char* filename, + const void* canonicalHash, const AlgoSelected hashType) +{ + XSUM_printLine_GNU_internal(filename, canonicalHash, hashType, XSUM_display_BigEndian); +} + +static void XSUM_printLine_GNU_LE(const char* filename, + const void* canonicalHash, const AlgoSelected hashType) +{ + XSUM_printLine_GNU_internal(filename, canonicalHash, hashType, XSUM_display_LittleEndian); +} + +typedef enum { big_endian, little_endian} Display_endianness; + +typedef enum { display_gnu, display_bsd } Display_convention; + +typedef void (*XSUM_displayLine_f)(const char*, const void*, AlgoSelected); /* line display signature */ + +typedef enum { + LineStatus_hashOk, + LineStatus_hashFailed, + LineStatus_failedToOpen, + LineStatus_isDirectory, + LineStatus_memoryError +} LineStatus; + +static XSUM_displayLine_f XSUM_kDisplayLine_fTable[2][2] = { + { XSUM_printLine_GNU, XSUM_printLine_GNU_LE }, + { XSUM_printLine_BSD, XSUM_printLine_BSD_LE } +}; + +static LineStatus XSUM_hashFile(const char* fileName, + const AlgoSelected hashType, + const Display_endianness displayEndianness, + const Display_convention convention) +{ + size_t const blockSize = 64 KB; + XSUM_displayLine_f const f_displayLine = XSUM_kDisplayLine_fTable[convention][displayEndianness]; + FILE* inFile; + Multihash hashValue; + assert(displayEndianness==big_endian || displayEndianness==little_endian); + assert(convention==display_gnu || convention==display_bsd); + + /* Check file existence */ + if (fileName == stdinName) { + inFile = stdin; + fileName = stdinFileName; /* "stdin" */ + XSUM_setBinaryMode(stdin); + } else { + if (XSUM_isDirectory(fileName)) { + return LineStatus_isDirectory; + } + inFile = XSUM_fopen( fileName, "rb" ); + if (inFile==NULL) { + XSUM_log("Error: unable to open input\n"); + return LineStatus_failedToOpen; + } } + + /* Memory allocation & streaming */ + { void* const buffer = malloc(blockSize); + if (buffer == NULL) { + XSUM_log("\nError: Out of memory.\n"); + fclose(inFile); + return LineStatus_memoryError; + } + + /* Stream file & update hash */ + hashValue = XSUM_hashStream(inFile, hashType, buffer, blockSize); + + fclose(inFile); + free(buffer); + } + + /* display Hash value in selected format */ + switch(hashType) + { + case algo_xxh32: + { XXH32_canonical_t hcbe32; + (void)XXH32_canonicalFromHash(&hcbe32, hashValue.hash32); + f_displayLine(fileName, &hcbe32, hashType); + break; + } + case algo_xxh64: + { XXH64_canonical_t hcbe64; + (void)XXH64_canonicalFromHash(&hcbe64, hashValue.hash64); + f_displayLine(fileName, &hcbe64, hashType); + break; + } + case algo_xxh128: + { XXH128_canonical_t hcbe128; + (void)XXH128_canonicalFromHash(&hcbe128, hashValue.hash128); + f_displayLine(fileName, &hcbe128, hashType); + break; + } + case algo_xxh3: + { XXH64_canonical_t hcbe64; + (void)XXH64_canonicalFromHash(&hcbe64, hashValue.hash64); + f_displayLine(fileName, &hcbe64, hashType); + break; + } + default: + assert(0); /* not possible */ + } + + return LineStatus_hashOk; +} + + +/* + * XSUM_hashFiles: + * If fnTotal==0, read from stdin instead. + */ +static int XSUM_hashFiles(const char* fnList[], int fnTotal, + AlgoSelected hashType, + Display_endianness displayEndianness, + Display_convention convention) +{ + int fnNb; + int result = 0; + + if (fnTotal == 0) + { + LineStatus filestatus = XSUM_hashFile(stdinName, hashType, displayEndianness, convention); + switch (filestatus) + { + case LineStatus_hashOk: + case LineStatus_hashFailed: + break; + case LineStatus_isDirectory: + XSUM_log("xxhsum: %s: Is a directory \n", stdinName); + break; + case LineStatus_failedToOpen: + XSUM_log("Error: Could not open '%s': %s. \n", stdinName, strerror(errno)); + break; + case LineStatus_memoryError: + XSUM_log("\nError: Out of memory.\n"); + break; + } + + if (filestatus != LineStatus_hashOk) + result = 1; + } + + + for (fnNb = 0; fnNb < fnTotal; fnNb++) + { + LineStatus filestatus = XSUM_hashFile(fnList[fnNb], hashType, displayEndianness, convention); + switch (filestatus) + { + case LineStatus_hashOk: + case LineStatus_hashFailed: + break; + case LineStatus_isDirectory: + XSUM_log("xxhsum: %s: Is a directory \n", fnList[fnNb]); + break; + case LineStatus_failedToOpen: + XSUM_log("Error: Could not open '%s': %s. \n", fnList[fnNb], strerror(errno)); + break; + case LineStatus_memoryError: + XSUM_log("\nError: Out of memory.\n"); + break; + } + + if (filestatus != LineStatus_hashOk) + result = 1; + } + + return result; +} + + +typedef enum { + GetLine_ok, + GetLine_comment, + GetLine_eof, + GetLine_exceedMaxLineLength, + GetLine_outOfMemory +} GetLineResult; + +typedef enum { + CanonicalFromString_ok, + CanonicalFromString_invalidFormat +} CanonicalFromStringResult; + +typedef enum { + ParseLine_ok, + ParseLine_invalidFormat +} ParseLineResult; + +typedef union { + XXH32_canonical_t xxh32; + XXH64_canonical_t xxh64; + XXH128_canonical_t xxh128; +} Canonical; + +typedef struct { + Canonical canonical; + const char* filename; + AlgoSelected algo; +} ParsedLine; + +typedef struct { + unsigned long nProperlyFormattedLines; + unsigned long nImproperlyFormattedLines; + unsigned long nMismatchedChecksums; + unsigned long nMatchedChecksums; + unsigned long nOpenOrReadFailures; + unsigned long nMixedFormatLines; + unsigned long nMissing; + int quit; +} ParseFileReport; + +typedef struct { + const char* inFileName; + FILE* inFile; + int lineMax; + char* lineBuf; + size_t blockSize; + char* blockBuf; + int strictMode; + int statusOnly; + int ignoreMissing; + int warn; + int quiet; + XSUM_U32 algoBitmask; + ParseFileReport report; +} ParseFileArg; + + +/* + * Reads a line from stream `inFile`. + * Returns GetLine_ok, if it reads line successfully. + * Returns GetLine_comment, if the line is beginning with '#'. + * Returns GetLine_eof, if stream reaches EOF. + * Returns GetLine_exceedMaxLineLength, if line length is longer than MAX_LINE_LENGTH. + * Returns GetLine_outOfMemory, if line buffer memory allocation failed. + */ +static GetLineResult XSUM_getLine(char** lineBuf, int* lineMax, FILE* inFile) +{ + GetLineResult result = GetLine_ok; + size_t len = 0; + + if ((*lineBuf == NULL) || (*lineMax<1)) { + free(*lineBuf); /* in case it's != NULL */ + *lineMax = 0; + *lineBuf = (char*)malloc(DEFAULT_LINE_LENGTH); + if(*lineBuf == NULL) return GetLine_outOfMemory; + *lineMax = DEFAULT_LINE_LENGTH; + } + + for (;;) { + const int c = fgetc(inFile); + if (c == EOF) { + /* + * If we meet EOF before first character, returns GetLine_eof, + * otherwise GetLine_ok. + */ + if (len == 0) result = GetLine_eof; + break; + } + + /* Make enough space for len+1 (for final NUL) bytes. */ + if (len+1 >= (size_t)*lineMax) { + char* newLineBuf = NULL; + size_t newBufSize = (size_t)*lineMax; + + newBufSize += (newBufSize/2) + 1; /* x 1.5 */ + if (newBufSize > MAX_LINE_LENGTH) newBufSize = MAX_LINE_LENGTH; + if (len+1 >= newBufSize) return GetLine_exceedMaxLineLength; + + newLineBuf = (char*) realloc(*lineBuf, newBufSize); + if (newLineBuf == NULL) return GetLine_outOfMemory; + + *lineBuf = newLineBuf; + *lineMax = (int)newBufSize; + } + + if (c == '\n') break; + (*lineBuf)[len++] = (char) c; + } + + (*lineBuf)[len] = '\0'; + + /* Ignore comment lines, which begin with a '#' character. */ + if (result == GetLine_ok && len > 0 && ((*lineBuf)[0] == '#')) { + result = GetLine_comment; + } + + return result; +} + + +/* + * Converts one hexadecimal character to integer. + * Returns -1 if the given character is not hexadecimal. + */ +static int charToHex(char c) +{ + int result = -1; + if (c >= '0' && c <= '9') { + result = (int) (c - '0'); + } else if (c >= 'A' && c <= 'F') { + result = (int) (c - 'A') + 0x0a; + } else if (c >= 'a' && c <= 'f') { + result = (int) (c - 'a') + 0x0a; + } + return result; +} + + +/* + * Converts canonical ASCII hexadecimal string `hashStr` + * to the big endian binary representation in unsigned char array `dst`. + * + * Returns CanonicalFromString_invalidFormat if hashStr is not well formatted. + * Returns CanonicalFromString_ok if hashStr is parsed successfully. + */ +static CanonicalFromStringResult XSUM_canonicalFromString(unsigned char* dst, + size_t dstSize, + const char* hashStr, + int reverseBytes) +{ + size_t i; + for (i = 0; i < dstSize; ++i) { + int h0, h1; + size_t j = reverseBytes ? dstSize - i - 1 : i; + + h0 = charToHex(hashStr[j*2 + 0]); + if (h0 < 0) return CanonicalFromString_invalidFormat; + + h1 = charToHex(hashStr[j*2 + 1]); + if (h1 < 0) return CanonicalFromString_invalidFormat; + + dst[i] = (unsigned char) ((h0 << 4) | h1); + } + return CanonicalFromString_ok; +} + + +/* + * Parse single line of xxHash checksum file. + * Returns ParseLine_invalidFormat if the line is not well formatted. + * Returns ParseLine_ok if the line is parsed successfully. + * And members of XSUM_parseLine will be filled by parsed values. + * + * - line must be terminated with '\0' without a trailing newline. + * - Since parsedLine.filename will point within given argument `line`, + * users must keep `line`s content when they are using parsedLine. + * - The line may be modified to carve up the information it contains. + * + * xxHash checksum lines should have the following format: + * + * <8, 16, or 32 hexadecimal char> <'\0'> + * + * or: + * + * <' ('> <') = '> <'\0'> + */ +static ParseLineResult XSUM_parseLine1(ParsedLine* parsedLine, char* line, int rev, int needsUnescape, XSUM_U32 algoBitmask) +{ + char* const firstSpace = strchr(line, ' '); + const char* hash_ptr; + size_t hash_len; + + parsedLine->filename = NULL; + parsedLine->algo = algo_xxh64; /* default - will be overwritten */ + if (firstSpace == NULL || !firstSpace[1]) return ParseLine_invalidFormat; + + if (firstSpace[1] == '(') { + char* lastSpace = strrchr(line, ' '); + if (lastSpace - firstSpace < 5) return ParseLine_invalidFormat; + if (lastSpace[-1] != '=' || lastSpace[-2] != ' ' || lastSpace[-3] != ')') return ParseLine_invalidFormat; + lastSpace[-3] = '\0'; /* Terminate the filename */ + *firstSpace = '\0'; + rev = strstr(line, "_LE") != NULL; /* was output little-endian */ + hash_ptr = lastSpace + 1; + hash_len = strlen(hash_ptr); + if (!memcmp(line, "XXH3", 4)) parsedLine->algo = algo_xxh3; + if (!memcmp(line, "XXH32", 5)) parsedLine->algo = algo_xxh32; + if (!memcmp(line, "XXH64", 5)) parsedLine->algo = algo_xxh64; + if (!memcmp(line, "XXH128", 6)) parsedLine->algo = algo_xxh128; + } else { + hash_ptr = line; + hash_len = (size_t)(firstSpace - line); + if (hash_len==8) parsedLine->algo = algo_xxh32; + if (hash_len==16) parsedLine->algo = algo_xxh64; + if (hash_len==21) parsedLine->algo = algo_xxh3; + if (hash_len==32) parsedLine->algo = algo_xxh128; + } + + /* Check current CLI accepts the algorithm or not */ + if(! XSUM_algoBitmask_Accepts(algoBitmask, parsedLine->algo)) { + return ParseLine_invalidFormat; + } + + switch (hash_len) + { + case 8: + if (parsedLine->algo != algo_xxh32) return ParseLine_invalidFormat; + { XXH32_canonical_t* xxh32c = &parsedLine->canonical.xxh32; + if (XSUM_canonicalFromString(xxh32c->digest, sizeof(xxh32c->digest), hash_ptr, rev) + != CanonicalFromString_ok) { + return ParseLine_invalidFormat; + } + break; + } + + case 16: + if (parsedLine->algo != algo_xxh64 && parsedLine->algo != algo_xxh3) return ParseLine_invalidFormat; + { XXH64_canonical_t* xxh64c = &parsedLine->canonical.xxh64; + if (XSUM_canonicalFromString(xxh64c->digest, sizeof(xxh64c->digest), hash_ptr, rev) + != CanonicalFromString_ok) { + return ParseLine_invalidFormat; + } + break; + } + + case 21: + if (parsedLine->algo != algo_xxh3) return ParseLine_invalidFormat; + /* check XXH3 prefix*/ + if (memcmp(hash_ptr, "XXH3_", 5) != 0) return ParseLine_invalidFormat; + { XXH64_canonical_t* xxh64c = &parsedLine->canonical.xxh64; + if (XSUM_canonicalFromString(xxh64c->digest, sizeof(xxh64c->digest), (const char*)hash_ptr+5, rev) + != CanonicalFromString_ok) { + return ParseLine_invalidFormat; + } + break; + } + + case 32: + if (parsedLine->algo != algo_xxh128) return ParseLine_invalidFormat; + { XXH128_canonical_t* xxh128c = &parsedLine->canonical.xxh128; + if (XSUM_canonicalFromString(xxh128c->digest, sizeof(xxh128c->digest), hash_ptr, rev) + != CanonicalFromString_ok) { + return ParseLine_invalidFormat; + } + break; + } + + default: + return ParseLine_invalidFormat; + break; + } + + /* note : skipping second separation character, which can be anything, + * allowing insertion of custom markers such as '*' */ + { + char* const filename = firstSpace + 2; + const size_t filenameLen = strlen(filename); + if (needsUnescape) { + char* const result = XSUM_filenameUnescape(filename, filenameLen); + if (result == NULL) { + return ParseLine_invalidFormat; + } + } + parsedLine->filename = filename; + } + return ParseLine_ok; +} + +static ParseLineResult XSUM_parseLine(ParsedLine* parsedLine, char* line, int rev, XSUM_U32 algoBitmask) { + const int needsUnescape = XSUM_lineNeedsUnescape(line); + if (needsUnescape) { + ++line; + } + return XSUM_parseLine1(parsedLine, line, rev, needsUnescape, algoBitmask); +} + + + +/*! + * Parse xxHash checksum file. + */ +static void XSUM_parseFile1(ParseFileArg* XSUM_parseFileArg, int rev) +{ + const char* const inFileName = XSUM_parseFileArg->inFileName; + ParseFileReport* const report = &XSUM_parseFileArg->report; + + unsigned long lineNumber = 0; + memset(report, 0, sizeof(*report)); + + while (!report->quit) { + LineStatus lineStatus = LineStatus_hashFailed; + ParsedLine parsedLine; + memset(&parsedLine, 0, sizeof(parsedLine)); + + lineNumber++; + if (lineNumber == 0) { + /* This is unlikely happen, but md5sum.c has this error check. */ + XSUM_log("%s: Error: Too many checksum lines\n", inFileName); + report->quit = 1; + break; + } + + { GetLineResult const XSUM_getLineResult = + XSUM_getLine(&XSUM_parseFileArg->lineBuf, + &XSUM_parseFileArg->lineMax, + XSUM_parseFileArg->inFile); + + /* Ignore comment lines */ + if (XSUM_getLineResult == GetLine_comment) { + continue; + } + + if (XSUM_getLineResult != GetLine_ok) { + if (XSUM_getLineResult == GetLine_eof) break; + + switch (XSUM_getLineResult) + { + case GetLine_ok: + case GetLine_comment: + case GetLine_eof: + /* These cases never happen. See above XSUM_getLineResult related "if"s. + They exist just for make gcc's -Wswitch-enum happy. */ + assert(0); + break; + + default: + XSUM_log("%s:%lu: Error: Unknown error.\n", inFileName, lineNumber); + break; + + case GetLine_exceedMaxLineLength: + XSUM_log("%s:%lu: Error: Line too long.\n", inFileName, lineNumber); + break; + + case GetLine_outOfMemory: + XSUM_log("%s:%lu: Error: Out of memory.\n", inFileName, lineNumber); + break; + } + report->quit = 1; + break; + } } + + if (XSUM_parseLine(&parsedLine, XSUM_parseFileArg->lineBuf, rev, XSUM_parseFileArg->algoBitmask) != ParseLine_ok) { + report->nImproperlyFormattedLines++; + if (XSUM_parseFileArg->warn) { + XSUM_log("%s:%lu: Error: Improperly formatted checksum line.\n", + inFileName, lineNumber); + } + continue; + } + + report->nProperlyFormattedLines++; + + do { + int const fnameIsStdin = (strcmp(parsedLine.filename, stdinFileName) == 0); /* "stdin" */ + FILE* const fp = fnameIsStdin ? stdin : XSUM_fopen(parsedLine.filename, "rb"); + if (fp == stdin) { + XSUM_setBinaryMode(stdin); + } + if (fp == NULL) { + lineStatus = LineStatus_failedToOpen; + break; + } + lineStatus = LineStatus_hashFailed; + { Multihash const xxh = XSUM_hashStream(fp, parsedLine.algo, XSUM_parseFileArg->blockBuf, XSUM_parseFileArg->blockSize); + switch (parsedLine.algo) + { + case algo_xxh32: + if (xxh.hash32 == XXH32_hashFromCanonical(&parsedLine.canonical.xxh32)) { + lineStatus = LineStatus_hashOk; + } + break; + + case algo_xxh64: + case algo_xxh3: + if (xxh.hash64 == XXH64_hashFromCanonical(&parsedLine.canonical.xxh64)) { + lineStatus = LineStatus_hashOk; + } + break; + + case algo_xxh128: + if (XXH128_isEqual(xxh.hash128, XXH128_hashFromCanonical(&parsedLine.canonical.xxh128))) { + lineStatus = LineStatus_hashOk; + } + break; + + default: + break; + } + } + if (fp != stdin) fclose(fp); + } while (0); + + switch (lineStatus) + { + default: + XSUM_log("%s: Error: Unknown error.\n", inFileName); + report->quit = 1; + break; + + case LineStatus_memoryError: + case LineStatus_isDirectory: + assert(0); /* Never happens on these paths */ + break; + + case LineStatus_failedToOpen: + if (XSUM_parseFileArg->ignoreMissing) { + report->nMissing++; + } else { + report->nOpenOrReadFailures++; + if (!XSUM_parseFileArg->statusOnly) { + XSUM_output("%s:%lu: Could not open or read '%s': %s.\n", + inFileName, lineNumber, parsedLine.filename, strerror(errno)); + } + } + break; + + case LineStatus_hashOk: + case LineStatus_hashFailed: + { int b = 1; + if (lineStatus == LineStatus_hashOk) { + report->nMatchedChecksums++; + /* If --quiet is specified, don't display "OK" */ + if (XSUM_parseFileArg->quiet) b = 0; + } else { + report->nMismatchedChecksums++; + } + + if (b && !XSUM_parseFileArg->statusOnly) { + const int needsEscape = XSUM_filenameNeedsEscape(parsedLine.filename); + if (needsEscape) { + XSUM_output("%c", '\\'); + } + XSUM_printFilename(parsedLine.filename, needsEscape); + XSUM_output(": %s\n", lineStatus == LineStatus_hashOk ? "OK" : "FAILED"); + } } + break; + } + } /* while (!report->quit) */ +} + + +/* Parse xxHash checksum file. + * Returns 1, if all procedures were succeeded. + * Returns 0, if any procedures was failed. + * + * If strictMode != 0, return error code if any line is invalid. + * If statusOnly != 0, don't generate any output. + * If ignoreMissing != 0, ignore missing file. But if no file was verified, returns 0 (failed). + * If warn != 0, print a warning message to stderr. + * If quiet != 0, suppress "OK" line. + * + * "All procedures are succeeded" means: + * - Checksum file contains at least one line and less than SIZE_T_MAX lines. + * - All files are properly opened and read. + * - All hash values match with its content. + * - (strict mode) All lines in checksum file are consistent and well formatted. + */ +static int XSUM_checkFile(const char* inFileName, + const Display_endianness displayEndianness, + int strictMode, + int statusOnly, + int ignoreMissing, + int warn, + int quiet, + XSUM_U32 algoBitmask) +{ + int result = 0; + FILE* inFile = NULL; + ParseFileArg XSUM_parseFileArgBody; + ParseFileArg* const XSUM_parseFileArg = &XSUM_parseFileArgBody; + ParseFileReport* const report = &XSUM_parseFileArg->report; + + /* note: stdinName is special constant pointer. It is not a string. */ + if (inFileName == stdinName) { + /* + * Note: Since we expect text input for xxhash -c mode, + * we don't set binary mode for stdin. + */ + inFileName = stdinFileName; /* "stdin" */ + inFile = stdin; + } else { + inFile = XSUM_fopen( inFileName, "rt" ); + } + + if (inFile == NULL) { + XSUM_log("Error: Could not open '%s': %s\n", inFileName, strerror(errno)); + return 0; + } + + XSUM_parseFileArg->inFileName = inFileName; + XSUM_parseFileArg->inFile = inFile; + XSUM_parseFileArg->lineMax = DEFAULT_LINE_LENGTH; + XSUM_parseFileArg->lineBuf = (char*) malloc((size_t)XSUM_parseFileArg->lineMax); + XSUM_parseFileArg->blockSize = 64 * 1024; + XSUM_parseFileArg->blockBuf = (char*) malloc(XSUM_parseFileArg->blockSize); + XSUM_parseFileArg->strictMode = strictMode; + XSUM_parseFileArg->statusOnly = statusOnly; + XSUM_parseFileArg->ignoreMissing = ignoreMissing; + XSUM_parseFileArg->warn = warn; + XSUM_parseFileArg->quiet = quiet; + XSUM_parseFileArg->algoBitmask = algoBitmask; + + if ( (XSUM_parseFileArg->lineBuf == NULL) + || (XSUM_parseFileArg->blockBuf == NULL) ) { + XSUM_log("Error: : memory allocation failed \n"); + exit(1); + } + XSUM_parseFile1(XSUM_parseFileArg, displayEndianness != big_endian); + + free(XSUM_parseFileArg->blockBuf); + free(XSUM_parseFileArg->lineBuf); + + if (inFile != stdin) fclose(inFile); + + /* Show error/warning messages. All messages are copied from md5sum.c + */ + if (report->nProperlyFormattedLines == 0) { + XSUM_log("%s: no properly formatted xxHash checksum lines found\n", inFileName); + } else if (!statusOnly) { + if (report->nImproperlyFormattedLines) { + XSUM_output("%lu %s improperly formatted\n" + , report->nImproperlyFormattedLines + , report->nImproperlyFormattedLines == 1 ? "line is" : "lines are"); + } + if (report->nOpenOrReadFailures) { + XSUM_output("%lu listed %s could not be read\n" + , report->nOpenOrReadFailures + , report->nOpenOrReadFailures == 1 ? "file" : "files"); + } + if (report->nMismatchedChecksums) { + XSUM_output("%lu computed %s did NOT match\n" + , report->nMismatchedChecksums + , report->nMismatchedChecksums == 1 ? "checksum" : "checksums"); + } } + + /* Result (exit) code logic is copied from + * gnu coreutils/src/md5sum.c digest_check() */ + result = report->nProperlyFormattedLines != 0 + && report->nMismatchedChecksums == 0 + && report->nOpenOrReadFailures == 0 + && (!strictMode || report->nImproperlyFormattedLines == 0) + && report->quit == 0; + + /* If "--ignore-missing" is enabled and there's no matched checksum, report it as error. + * See https://github.com/coreutils/coreutils/blob/2f1cffe07ab0f0b4135a52d95f1689d7fc7f26c9/src/digest.c#L1325-L1328 */ + if (ignoreMissing && report->nMatchedChecksums == 0) { + XSUM_output("%s: no file was verified\n", inFileName); + result = 0; + } + + return result; +} + + +static int XSUM_checkFiles(const char* fnList[], int fnTotal, + const Display_endianness displayEndianness, + int strictMode, + int statusOnly, + int ignoreMissing, + int warn, + int quiet, + XSUM_U32 algoBitmask) +{ + int ok = 1; + + /* Special case for stdinName "-", + * note: stdinName is not a string. It's special pointer. */ + if (fnTotal==0) { + ok &= XSUM_checkFile(stdinName, displayEndianness, strictMode, statusOnly, ignoreMissing, warn, quiet, algoBitmask); + } else { + int fnNb; + for (fnNb=0; fnNbfilename = NULL; + return ParseLine_invalidFormat; + } + } + + parsedLine->filename = filename; + + return ParseLine_ok; +} + +/* + * Parse gen source file. + */ +static void XSUM_parseGenFile1(ParseFileArg* XSUM_parseGenArg, + AlgoSelected hashType, + Display_endianness displayEndianness, + Display_convention convention) +{ + const char* const inFileName = XSUM_parseGenArg->inFileName; + ParseFileReport* const report = &XSUM_parseGenArg->report; + + unsigned long lineNumber = 0; + memset(report, 0, sizeof(*report)); + + while (!report->quit) { + LineStatus lineStatus = LineStatus_hashFailed; + ParsedLine parsedLine; + memset(&parsedLine, 0, sizeof(parsedLine)); + + lineNumber++; + if (lineNumber == 0) { + /* This is unlikely happen, but md5sum.c has this error check. */ + XSUM_log("%s: Error: Too many generate lines\n", inFileName); + report->quit = 1; + break; + } + + { GetLineResult const XSUM_getLineResult = XSUM_getLine(&XSUM_parseGenArg->lineBuf, + &XSUM_parseGenArg->lineMax, + XSUM_parseGenArg->inFile); + + /* Ignore comment lines */ + if (XSUM_getLineResult == GetLine_comment) { + continue; + } + + if (XSUM_getLineResult != GetLine_ok) { + if (XSUM_getLineResult == GetLine_eof) break; + + switch (XSUM_getLineResult) + { + case GetLine_ok: + case GetLine_comment: + case GetLine_eof: + /* These cases never happen. See above XSUM_getLineResult related "if"s. + They exist just for make gcc's -Wswitch-enum happy. */ + assert(0); + break; + + default: + XSUM_log("%s:%lu: Error: Unknown error.\n", inFileName, lineNumber); + break; + + case GetLine_exceedMaxLineLength: + XSUM_log("%s:%lu: Error: Line too long.\n", inFileName, lineNumber); + break; + + case GetLine_outOfMemory: + XSUM_log("%s:%lu: Error: Out of memory.\n", inFileName, lineNumber); + break; + } + report->quit = 1; + break; + } } + + if (XSUM_parseGenLine(&parsedLine, XSUM_parseGenArg->lineBuf) != ParseLine_ok) { + report->nImproperlyFormattedLines++; + if (XSUM_parseGenArg->warn) { + XSUM_log("%s:%lu: Error: Improperly formatted line.\n", + inFileName, lineNumber); + } + continue; + } + + report->nProperlyFormattedLines++; + + lineStatus = XSUM_hashFile(parsedLine.filename, hashType, displayEndianness, convention); + + switch (lineStatus) + { + default: + XSUM_log("%s: Error: Unknown error.\n", parsedLine.filename); + report->quit = 1; + break; + + case LineStatus_memoryError: + XSUM_log("\nError: Out of memory.\n"); + break; + + case LineStatus_failedToOpen: + case LineStatus_isDirectory: + if (XSUM_parseGenArg->ignoreMissing) { + report->nMissing++; + } + else { + report->nOpenOrReadFailures++; + if (!XSUM_parseGenArg->statusOnly) { + XSUM_output( + lineStatus == LineStatus_failedToOpen ? + "%s:%lu: Could not open or read '%s': %s.\n" : + "%s:%lu: Target is a directory '%s'.\n", /* Leaves errno argument unconsumed */ + inFileName, lineNumber, parsedLine.filename, strerror(errno)); + } + } + break; + + case LineStatus_hashOk: + case LineStatus_hashFailed: + break; + } + } /* while (!report->quit) */ +} + + +/* Parse text file for list of targets. + */ +static int XSUM_generateFile(const char* inFileName, + AlgoSelected hashType, + Display_endianness displayEndianness, + Display_convention convention, + int statusOnly, + int ignoreMissing, + int warn) +{ + int result = 0; + FILE* inFile = NULL; + ParseFileArg XSUM_parseGenArgBody; + ParseFileArg* const XSUM_parseGenArg = &XSUM_parseGenArgBody; + ParseFileReport* const report = &XSUM_parseGenArg->report; + + /* note: stdinName is special constant pointer. It is not a string. */ + if (inFileName == stdinName) { + /* + * Note: Since we expect text input for xxhash -c mode, + * we don't set binary mode for stdin. + */ + inFileName = stdinFileName; /* "stdin" */ + inFile = stdin; + } + else { + inFile = XSUM_fopen(inFileName, "rt"); + } + + if (inFile == NULL) { + XSUM_log("Error: Could not open '%s': %s\n", inFileName, strerror(errno)); + return 0; + } + + XSUM_parseGenArg->inFileName = inFileName; + XSUM_parseGenArg->inFile = inFile; + XSUM_parseGenArg->lineMax = DEFAULT_LINE_LENGTH; + XSUM_parseGenArg->lineBuf = (char*)malloc((size_t)XSUM_parseGenArg->lineMax); + XSUM_parseGenArg->blockSize = 64 * 1024; + XSUM_parseGenArg->blockBuf = (char*)malloc(XSUM_parseGenArg->blockSize); + XSUM_parseGenArg->statusOnly = statusOnly; + XSUM_parseGenArg->ignoreMissing = ignoreMissing; + XSUM_parseGenArg->warn = warn; + + if ((XSUM_parseGenArg->lineBuf == NULL) + || (XSUM_parseGenArg->blockBuf == NULL)) { + XSUM_log("Error: : memory allocation failed \n"); + exit(1); + } + XSUM_parseGenFile1(XSUM_parseGenArg, hashType, displayEndianness, convention); + + free(XSUM_parseGenArg->blockBuf); + free(XSUM_parseGenArg->lineBuf); + + if (inFile != stdin) fclose(inFile); + + /* Show error/warning messages. All messages are copied from md5sum.c + */ + if (report->nProperlyFormattedLines == 0) { + XSUM_log("%s: no properly formatted filename lines found\n", inFileName); + } + if (report->nImproperlyFormattedLines) { + XSUM_output("%lu %s improperly formatted\n" + , report->nImproperlyFormattedLines + , report->nImproperlyFormattedLines == 1 ? "line is" : "lines are"); + } + if (report->nOpenOrReadFailures) { + XSUM_output("%lu listed %s could not be read\n" + , report->nOpenOrReadFailures + , report->nOpenOrReadFailures == 1 ? "file" : "files"); + } + /* Result (exit) code logic is copied from + * gnu coreutils/src/md5sum.c digest_check() */ + result = report->nProperlyFormattedLines != 0 + && report->nOpenOrReadFailures == 0 + && (report->nImproperlyFormattedLines == 0) + && report->quit == 0; + + return result; +} + +static int XSUM_generateFiles(const char* fnList[], int fnTotal, + AlgoSelected hashType, + Display_endianness displayEndianness, + Display_convention convention, + int statusOnly, + int ignoreMissing, + int warn) +{ + int ok = 1; + + /* Special case for stdinName "-", + * note: stdinName is not a string. It's special pointer. */ + if (fnTotal == 0) { + ok &= XSUM_generateFile(stdinName, hashType, displayEndianness, convention, statusOnly, ignoreMissing, warn); + } + else { + int fnNb; + for (fnNb = 0; fnNb < fnTotal; fnNb++) + ok &= XSUM_generateFile(fnList[fnNb], hashType, displayEndianness, convention, statusOnly, ignoreMissing, warn); + } + return ok ? 0 : 1; +} + + +/* ******************************************************** +* Main +**********************************************************/ + +static int XSUM_usage(const char* exename) +{ + XSUM_log( WELCOME_MESSAGE(exename) ); + XSUM_log( "Create or verify checksums using fast non-cryptographic algorithm xxHash \n\n" ); + XSUM_log( "Usage: %s [options] [files] \n\n", exename); + XSUM_log( "When no filename provided or when '-' is provided, uses stdin as input. \n"); + XSUM_log( "\nOptions: \n"); + XSUM_log( " -H# select an xxhash algorithm (default: %i) \n", (int)g_defaultAlgo); + XSUM_log( " 0: XXH32 \n"); + XSUM_log( " 1: XXH64 \n"); + XSUM_log( " 2: XXH128 (also called XXH3_128bits) \n"); + XSUM_log( " 3: XXH3 (also called XXH3_64bits) \n"); + XSUM_log( " -c, --check read xxHash checksum from [files] and check them \n"); + XSUM_log( " --files-from generate hashes for files listed in [files] \n"); + XSUM_log( " --filelist generate hashes for files listed in [files] \n"); + XSUM_log( " - forces stdin as input, even if it's the console \n"); + XSUM_log( " -h, --help display a long help page about advanced options \n"); + return 0; +} + +static int XSUM_usage_advanced(const char* exename) +{ + XSUM_usage(exename); + XSUM_log( "\nAdvanced: \n"); + XSUM_log( " -V, --version Display version information \n"); + XSUM_log( " --tag Produce BSD-style checksum lines \n"); + XSUM_log( " --little-endian Checksum values use little endian convention (default: big endian) \n"); + XSUM_log( " --binary Read in binary mode \n"); + XSUM_log( " -b Run benchmark \n"); + XSUM_log( " -b# Bench only algorithm variant # \n"); + XSUM_log( " -i# Number of times to run the benchmark (default: %i) \n", NBLOOPS_DEFAULT); + XSUM_log( " -q, --quiet Don't display version header in benchmark mode \n"); + XSUM_log( "\n"); + XSUM_log( "The following five options are useful only when using lists in [files] to verify or generate checksums: \n"); + XSUM_log( " -q, --quiet Don't print OK for each successfully verified hash \n"); + XSUM_log( " --status Don't output anything, status code shows success \n"); + XSUM_log( " --strict Exit non-zero for improperly formatted lines in [files] \n"); + XSUM_log( " --warn Warn about improperly formatted lines in [files] \n"); + XSUM_log( " --ignore-missing Don't fail or report status for missing files \n"); + return 0; +} + +static int XSUM_badusage(const char* exename) +{ + XSUM_log("Wrong parameters\n\n"); + XSUM_usage(exename); + return 1; +} + +static void errorOut(const char* msg) +{ + XSUM_log("%s \n", msg); + exit(1); +} + +static const char* XSUM_lastNameFromPath(const char* path) +{ + const char* name = path; + if (strrchr(name, '/')) name = strrchr(name, '/') + 1; + if (strrchr(name, '\\')) name = strrchr(name, '\\') + 1; /* windows */ + return name; +} + +/*! + * XSUM_readU32FromCharChecked(): + * @return 0 if success, and store the result in *value. + * Allows and interprets K, KB, KiB, M, MB and MiB suffix. + * Will also modify `*stringPtr`, advancing it to position where it stopped reading. + * @return 1 if an overflow error occurs + */ +static int XSUM_readU32FromCharChecked(const char** stringPtr, XSUM_U32* value) +{ + static const XSUM_U32 max = (((XSUM_U32)(-1)) / 10) - 1; + XSUM_U32 result = 0; + while ((**stringPtr >='0') && (**stringPtr <='9')) { + if (result > max) return 1; /* overflow error */ + result *= 10; + result += (XSUM_U32)(**stringPtr - '0'); + (*stringPtr)++ ; + } + if ((**stringPtr=='K') || (**stringPtr=='M')) { + XSUM_U32 const maxK = ((XSUM_U32)(-1)) >> 10; + if (result > maxK) return 1; /* overflow error */ + result <<= 10; + if (**stringPtr=='M') { + if (result > maxK) return 1; /* overflow error */ + result <<= 10; + } + (*stringPtr)++; /* skip `K` or `M` */ + if (**stringPtr=='i') (*stringPtr)++; + if (**stringPtr=='B') (*stringPtr)++; + } + *value = result; + return 0; +} + +/*! + * XSUM_readU32FromChar(): + * @return: unsigned integer value read from input in `char` format. + * allows and interprets K, KB, KiB, M, MB and MiB suffix. + * Will also modify `*stringPtr`, advancing it to position where it stopped reading. + * Note: function will exit() program if digit sequence overflows + */ +static XSUM_U32 XSUM_readU32FromChar(const char** stringPtr) { + XSUM_U32 result; + if (XSUM_readU32FromCharChecked(stringPtr, &result)) { + static const char errorMsg[] = "Error: numeric value too large"; + errorOut(errorMsg); + } + return result; +} + +XSUM_API int XSUM_main(int argc, const char* argv[]) +{ + int i, filenamesStart = 0; + const char* const exename = XSUM_lastNameFromPath(argv[0]); + int benchmarkMode = 0; + int fileCheckMode = 0; + int readFilenamesMode = 0; + int strictMode = 0; + int statusOnly = 0; + int warn = 0; + int ignoreMissing = 0; + XSUM_U32 algoBitmask = algo_bitmask_all; + int explicitStdin = 0; + XSUM_U32 selectBenchIDs= 0; /* 0 == use default k_testIDs_default, kBenchAll == bench all */ + static const XSUM_U32 kBenchAll = 99; + size_t keySize = XSUM_DEFAULT_SAMPLE_SIZE; + AlgoSelected algo = g_defaultAlgo; + Display_endianness displayEndianness = big_endian; + Display_convention convention = display_gnu; + int nbIterations = NBLOOPS_DEFAULT; + + /* special case: xxhNNsum default to NN bits checksum */ + if (strstr(exename, "xxh32sum") != NULL) { algo = g_defaultAlgo = algo_xxh32; algoBitmask = algo_bitmask_xxh32; } + if (strstr(exename, "xxh64sum") != NULL) { algo = g_defaultAlgo = algo_xxh64; algoBitmask = algo_bitmask_xxh64; } + if (strstr(exename, "xxh128sum") != NULL) { algo = g_defaultAlgo = algo_xxh128; algoBitmask = algo_bitmask_xxh128; } + if (strstr(exename, "xxh3sum") != NULL) { algo = g_defaultAlgo = algo_xxh3; algoBitmask = algo_bitmask_xxh3; } + + for (i=1; i. -cmake_minimum_required (VERSION 2.8.12 FATAL_ERROR) +cmake_minimum_required (VERSION 3.10 FATAL_ERROR) set(XXHASH_DIR "${CMAKE_CURRENT_SOURCE_DIR}/..") @@ -25,14 +25,10 @@ if("${CMAKE_VERSION}" VERSION_LESS "3.13") else() cmake_policy (SET CMP0077 NEW) endif() -if("${CMAKE_VERSION}" VERSION_LESS "3.0") - project(xxHash C) -else() - cmake_policy (SET CMP0048 NEW) - project(xxHash - VERSION ${XXHASH_VERSION_STRING} - LANGUAGES C) -endif() +cmake_policy (SET CMP0048 NEW) +project(xxHash + VERSION ${XXHASH_VERSION_STRING} + LANGUAGES C) if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Project build type" FORCE) @@ -43,8 +39,17 @@ if(NOT CMAKE_CONFIGURATION_TYPES) message(STATUS "xxHash build type: ${CMAKE_BUILD_TYPE}") endif() +# Enable assert() statements in debug builds +if("${CMAKE_BUILD_TYPE}" STREQUAL "Debug") + if("${CMAKE_VERSION}" VERSION_LESS "3.12") + # add_compile_definitions is not available for older cmake => do nothing + else() + add_compile_definitions(XXH_DEBUGLEVEL=1) + endif() +endif() + option(BUILD_SHARED_LIBS "Build shared library" ON) -set(XXHASH_BUILD_XXHSUM ON CACHE BOOL "Build the xxhsum binary") +option(XXHASH_BUILD_XXHSUM "Build the xxhsum binary" ON) # If XXHASH is being bundled in another project, we don't want to # install anything. However, we want to let people override this, so @@ -66,8 +71,26 @@ mark_as_advanced(XXHASH_BUNDLED_MODE) include(CMakeDependentOption) CMAKE_DEPENDENT_OPTION(BUILD_SHARED_LIBS "Build shared libraries" ON "NOT XXHASH_BUNDLED_MODE" OFF) +# detect architecture for DISPATCH mode +CMAKE_HOST_SYSTEM_INFORMATION(RESULT PLATFORM QUERY OS_PLATFORM) +message(STATUS "Architecture: ${PLATFORM}") + # libxxhash -add_library(xxhash "${XXHASH_DIR}/xxhash.c") +if((DEFINED DISPATCH) AND (DEFINED PLATFORM)) + # Only support DISPATCH option on x86_64. + if(("${PLATFORM}" STREQUAL "x86_64") OR ("${PLATFORM}" STREQUAL "AMD64")) + set(XXHSUM_DISPATCH ON) + message(STATUS "Enable xxHash dispatch mode") + add_library(xxhash "${XXHASH_DIR}/xxh_x86dispatch.c" + "${XXHASH_DIR}/xxhash.c" + ) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DXXHSUM_DISPATCH=1") + else() + add_library(xxhash "${XXHASH_DIR}/xxhash.c") + endif() +else() + add_library(xxhash "${XXHASH_DIR}/xxhash.c") +endif() add_library(${PROJECT_NAME}::xxhash ALIAS xxhash) target_include_directories(xxhash @@ -78,12 +101,24 @@ if (BUILD_SHARED_LIBS) target_compile_definitions(xxhash PUBLIC XXH_EXPORT) endif () set_target_properties(xxhash PROPERTIES - SOVERSION "${XXHASH_VERSION_STRING}" + SOVERSION "${XXHASH_LIB_SOVERSION}" VERSION "${XXHASH_VERSION_STRING}") if(XXHASH_BUILD_XXHSUM) + set(XXHSUM_DIR "${XXHASH_DIR}/cli") # xxhsum - add_executable(xxhsum "${XXHASH_DIR}/xxhsum.c") + set(XXHSUM_SOURCES) + if (XXHSUM_DISPATCH) + list(APPEND XXHSUM_SOURCES "${XXHASH_DIR}/xxh_x86dispatch.c") + endif() + list(APPEND XXHSUM_SOURCES "${XXHSUM_DIR}/xxhsum.c" + "${XXHSUM_DIR}/xsum_arch.c" + "${XXHSUM_DIR}/xsum_os_specific.c" + "${XXHSUM_DIR}/xsum_output.c" + "${XXHSUM_DIR}/xsum_sanity_check.c" + "${XXHSUM_DIR}/xsum_bench.c" + ) + add_executable(xxhsum ${XXHSUM_SOURCES}) add_executable(${PROJECT_NAME}::xxhsum ALIAS xxhsum) target_link_libraries(xxhsum PRIVATE xxhash) @@ -95,23 +130,6 @@ include (CheckCCompilerFlag) if (XXHASH_C_FLAGS) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${XXHASH_C_FLAGS}") endif() -foreach (flag - -Wall -Wextra -Wcast-qual -Wcast-align -Wshadow - -Wstrict-aliasing=1 -Wswitch-enum -Wdeclaration-after-statement - -Wstrict-prototypes -Wundef) - # Because https://gcc.gnu.org/wiki/FAQ#wnowarning - string(REGEX REPLACE "\\-Wno\\-(.+)" "-W\\1" flag_to_test "${flag}") - string(REGEX REPLACE "[^a-zA-Z0-9]+" "_" test_name "CFLAG_${flag_to_test}") - - check_c_compiler_flag("${ADD_COMPILER_FLAGS_PREPEND} ${flag_to_test}" ${test_name}) - - if(${test_name}) - set(CMAKE_C_FLAGS "${flag} ${CMAKE_C_FLAGS}") - endif() - - unset(test_name) - unset(flag_to_test) -endforeach (flag) if(NOT XXHASH_BUNDLED_MODE) include(GNUInstallDirs) @@ -125,11 +143,15 @@ if(NOT XXHASH_BUNDLED_MODE) DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}") install(FILES "${XXHASH_DIR}/xxh3.h" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}") + if(DISPATCH) + install(FILES "${XXHASH_DIR}/xxh_x86dispatch.h" + DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}") + endif() if(XXHASH_BUILD_XXHSUM) install(TARGETS xxhsum EXPORT xxHashTargets RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}") - install(FILES "${XXHASH_DIR}/xxhsum.1" + install(FILES "${XXHSUM_DIR}/xxhsum.1" DESTINATION "${CMAKE_INSTALL_MANDIR}/man1") endif(XXHASH_BUILD_XXHSUM) @@ -146,23 +168,28 @@ if(NOT XXHASH_BUNDLED_MODE) ${PROJECT_SOURCE_DIR}/xxHashConfig.cmake.in ${xxHash_PROJECT_CONFIG} INSTALL_DESTINATION ${xxHash_CONFIG_INSTALL_DIR}) - if("${CMAKE_VERSION}" VERSION_LESS "3.0") - set(XXHASH_EXPORT_SET xxhash) - if(XXHASH_BUILD_XXHSUM) - set(XXHASH_EXPORT_SET ${XXHASH_EXPORT_SET} xxhsum) - endif() - export(TARGETS ${XXHASH_EXPORT_SET} - FILE ${xxHash_TARGETS_CONFIG} - NAMESPACE ${PROJECT_NAME}::) - else() export(EXPORT xxHashTargets FILE ${xxHash_TARGETS_CONFIG} NAMESPACE ${PROJECT_NAME}::) - endif() install(FILES ${xxHash_PROJECT_CONFIG} ${xxHash_VERSION_CONFIG} DESTINATION ${xxHash_CONFIG_INSTALL_DIR}) install(EXPORT xxHashTargets DESTINATION ${xxHash_CONFIG_INSTALL_DIR} NAMESPACE ${PROJECT_NAME}::) + + # configure and install pkg-config + include(JoinPaths.cmake) + set(PREFIX ${CMAKE_INSTALL_PREFIX}) + set(EXECPREFIX "\${prefix}") + join_paths(INCLUDEDIR "\${prefix}" "${CMAKE_INSTALL_INCLUDEDIR}") + join_paths(LIBDIR "\${prefix}" "${CMAKE_INSTALL_LIBDIR}") + set(VERSION "${XXHASH_VERSION_STRING}") + configure_file(${XXHASH_DIR}/libxxhash.pc.in ${CMAKE_BINARY_DIR}/libxxhash.pc @ONLY) + + install(FILES ${CMAKE_BINARY_DIR}/libxxhash.pc + DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) + endif(NOT XXHASH_BUNDLED_MODE) + +include(CPack) diff --git a/deps/xxHash/cmake_unofficial/JoinPaths.cmake b/deps/xxHash/cmake_unofficial/JoinPaths.cmake new file mode 100644 index 000000000..c68d91b84 --- /dev/null +++ b/deps/xxHash/cmake_unofficial/JoinPaths.cmake @@ -0,0 +1,23 @@ +# This module provides function for joining paths +# known from most languages +# +# SPDX-License-Identifier: (MIT OR CC0-1.0) +# Copyright 2020 Jan Tojnar +# https://github.com/jtojnar/cmake-snips +# +# Modelled after Python’s os.path.join +# https://docs.python.org/3.7/library/os.path.html#os.path.join +# Windows not supported +function(join_paths joined_path first_path_segment) + set(temp_path "${first_path_segment}") + foreach(current_segment IN LISTS ARGN) + if(NOT ("${current_segment}" STREQUAL "")) + if(IS_ABSOLUTE "${current_segment}") + set(temp_path "${current_segment}") + else() + set(temp_path "${temp_path}/${current_segment}") + endif() + endif() + endforeach() + set(${joined_path} "${temp_path}" PARENT_SCOPE) +endfunction() diff --git a/deps/xxHash/cmake_unofficial/README.md b/deps/xxHash/cmake_unofficial/README.md index 554c55a2e..373391241 100644 --- a/deps/xxHash/cmake_unofficial/README.md +++ b/deps/xxHash/cmake_unofficial/README.md @@ -16,6 +16,7 @@ Where possible options are: - `-DXXHASH_BUILD_XXHSUM=`: build the command line binary. ON by default - `-DBUILD_SHARED_LIBS=`: build dynamic library. ON by default. - `-DCMAKE_INSTALL_PREFIX=`: use custom install prefix path. +- `-DDISPATCH=`: enable dispatch mode. OFF by default. Add lines into downstream CMakeLists.txt: @@ -26,7 +27,7 @@ Add lines into downstream CMakeLists.txt: ### Way 2: Add subdirectory Add lines into downstream CMakeLists.txt: - option(BUILD_SHARE_LIBS "Build shared libs" OFF) #optional + option(BUILD_SHARED_LIBS "Build shared libs" OFF) #optional ... set(XXHASH_BUILD_ENABLE_INLINE_API OFF) #optional set(XXHASH_BUILD_XXHSUM OFF) #optional diff --git a/deps/xxHash/doc/xxhash_spec.md b/deps/xxHash/doc/xxhash_spec.md index cd593d4ec..1a544e9ba 100644 --- a/deps/xxHash/doc/xxhash_spec.md +++ b/deps/xxHash/doc/xxhash_spec.md @@ -16,7 +16,7 @@ Distribution of this document is unlimited. ### Version -0.1.1 (10/10/18) +0.2.0 (29/06/23) Table of Contents @@ -24,6 +24,10 @@ Table of Contents - [Introduction](#introduction) - [XXH32 algorithm description](#xxh32-algorithm-description) - [XXH64 algorithm description](#xxh64-algorithm-description) +- [XXH3 algorithm description](#xxh3-algorithm-overview) + - [Small inputs](#xxh3-algorithm-description-for-small-inputs) + - [Medium inputs](#xxh3-algorithm-description-for-medium-inputs) + - [Large inputs](#xxh3-algorithm-description-for-large-inputs) - [Performance considerations](#performance-considerations) - [Reference Implementation](#reference-implementation) @@ -43,13 +47,20 @@ However, a given variant shall produce exactly the same output, irrespective of ### Operation notations All operations are performed modulo {32,64} bits. Arithmetic overflows are expected. -`XXH32` uses 32-bit modular operations. `XXH64` uses 64-bit modular operations. +`XXH32` uses 32-bit modular operations. +`XXH64` and `XXH3` use 64-bit modular operations. +When an operation ingests input or secret as multi-bytes values, it reads it using little-endian convention. - `+`: denotes modular addition +- `-`: denotes modular subtraction - `*`: denotes modular multiplication + - **Exception:** In `XXH3`, if it is in the form `(u128)x * (u128)y`, it denotes 64-bit by 64-bit normal multiplication into a full 128-bit result. - `X <<< s`: denotes the value obtained by circularly shifting (rotating) `X` left by `s` bit positions. - `X >> s`: denotes the value obtained by shifting `X` right by s bit positions. Upper `s` bits become `0`. +- `X << s`: denotes the value obtained by shifting `X` left by s bit positions. Lower `s` bits become `0`. - `X xor Y`: denotes the bit-wise XOR of `X` and `Y` (same width). +- `X | Y`: denotes the bit-wise OR of `X` and `Y` (same width). +- `~X`: denotes the bit-wise negation of `X`. XXH32 Algorithm Description @@ -63,11 +74,13 @@ The algorithm collect and transform input in _stripes_ of 16 bytes. The transfor The algorithm uses 32-bits addition, multiplication, rotate, shift and xor operations. Many operations require some 32-bits prime number constants, all defined below: - static const u32 PRIME32_1 = 0x9E3779B1U; // 0b10011110001101110111100110110001 - static const u32 PRIME32_2 = 0x85EBCA77U; // 0b10000101111010111100101001110111 - static const u32 PRIME32_3 = 0xC2B2AE3DU; // 0b11000010101100101010111000111101 - static const u32 PRIME32_4 = 0x27D4EB2FU; // 0b00100111110101001110101100101111 - static const u32 PRIME32_5 = 0x165667B1U; // 0b00010110010101100110011110110001 +```c + static const u32 PRIME32_1 = 0x9E3779B1U; // 0b10011110001101110111100110110001 + static const u32 PRIME32_2 = 0x85EBCA77U; // 0b10000101111010111100101001110111 + static const u32 PRIME32_3 = 0xC2B2AE3DU; // 0b11000010101100101010111000111101 + static const u32 PRIME32_4 = 0x27D4EB2FU; // 0b00100111110101001110101100101111 + static const u32 PRIME32_5 = 0x165667B1U; // 0b00010110010101100110011110110001 +``` These constants are prime numbers, and feature a good mix of bits 1 and 0, neither too regular, nor too dissymmetric. These properties help dispersion capabilities. @@ -75,10 +88,12 @@ These constants are prime numbers, and feature a good mix of bits 1 and 0, neith Each accumulator gets an initial value based on optional `seed` input. Since the `seed` is optional, it can be `0`. - u32 acc1 = seed + PRIME32_1 + PRIME32_2; - u32 acc2 = seed + PRIME32_2; - u32 acc3 = seed + 0; - u32 acc4 = seed - PRIME32_1; +```c + u32 acc1 = seed + PRIME32_1 + PRIME32_2; + u32 acc2 = seed + PRIME32_2; + u32 acc3 = seed + 0; + u32 acc4 = seed - PRIME32_1; +``` #### Special case: input is less than 16 bytes @@ -86,7 +101,9 @@ When the input is too small (< 16 bytes), the algorithm will not process any str In this case, a simplified initialization is performed, using a single accumulator: - u32 acc = seed + PRIME32_5; +```c + u32 acc = seed + PRIME32_5; +``` The algorithm then proceeds directly to step 4. @@ -100,9 +117,11 @@ Each lane read its associated 32-bit value using __little-endian__ convention. For each {lane, accumulator}, the update process is called a _round_, and applies the following formula: - accN = accN + (laneN * PRIME32_2); - accN = accN <<< 13; - accN = accN * PRIME32_1; +```c + accN = accN + (laneN * PRIME32_2); + accN = accN <<< 13; + accN = accN * PRIME32_1; +``` This shuffles the bits so that any bit from input _lane_ impacts several bits in output _accumulator_. All operations are performed modulo 2^32. @@ -113,13 +132,17 @@ When that happens, move to step 3. All 4 lane accumulators from the previous steps are merged to produce a single remaining accumulator of the same width (32-bit). The associated formula is as follows: - acc = (acc1 <<< 1) + (acc2 <<< 7) + (acc3 <<< 12) + (acc4 <<< 18); +```c + acc = (acc1 <<< 1) + (acc2 <<< 7) + (acc3 <<< 12) + (acc4 <<< 18); +``` ### Step 4. Add input length The input total length is presumed known at this stage. This step is just about adding the length to accumulator, so that it participates to final mixing. - acc = acc + (u32)inputLength; +```c + acc = acc + (u32)inputLength; +``` Note that, if input length is so large that it requires more than 32-bits, only the lower 32-bits are added to the accumulator. @@ -128,19 +151,21 @@ Note that, if input length is so large that it requires more than 32-bits, only There may be up to 15 bytes remaining to consume from the input. The final stage will digest them according to following pseudo-code: - while (remainingLength >= 4) { - lane = read_32bit_little_endian(input_ptr); - acc = acc + lane * PRIME32_3; - acc = (acc <<< 17) * PRIME32_4; - input_ptr += 4; remainingLength -= 4; - } +```c + while (remainingLength >= 4) { + lane = read_32bit_little_endian(input_ptr); + acc = acc + lane * PRIME32_3; + acc = (acc <<< 17) * PRIME32_4; + input_ptr += 4; remainingLength -= 4; + } - while (remainingLength >= 1) { - lane = read_byte(input_ptr); - acc = acc + lane * PRIME32_5; - acc = (acc <<< 11) * PRIME32_1; - input_ptr += 1; remainingLength -= 1; - } + while (remainingLength >= 1) { + lane = read_byte(input_ptr); + acc = acc + lane * PRIME32_5; + acc = (acc <<< 11) * PRIME32_1; + input_ptr += 1; remainingLength -= 1; + } +``` This process ensures that all input bytes are present in the final mix. @@ -148,11 +173,13 @@ This process ensures that all input bytes are present in the final mix. The final mix ensures that all input bits have a chance to impact any bit in the output digest, resulting in an unbiased distribution. This is also called avalanche effect. - acc = acc xor (acc >> 15); - acc = acc * PRIME32_2; - acc = acc xor (acc >> 13); - acc = acc * PRIME32_3; - acc = acc xor (acc >> 16); +```c + acc = acc xor (acc >> 15); + acc = acc * PRIME32_2; + acc = acc xor (acc >> 13); + acc = acc * PRIME32_3; + acc = acc xor (acc >> 16); +``` ### Step 7. Output @@ -172,22 +199,26 @@ The algorithm collects and transforms input in _stripes_ of 32 bytes. The transf The algorithm uses 64-bit addition, multiplication, rotate, shift and xor operations. Many operations require some 64-bit prime number constants, all defined below: - static const u64 PRIME64_1 = 0x9E3779B185EBCA87ULL; // 0b1001111000110111011110011011000110000101111010111100101010000111 - static const u64 PRIME64_2 = 0xC2B2AE3D27D4EB4FULL; // 0b1100001010110010101011100011110100100111110101001110101101001111 - static const u64 PRIME64_3 = 0x165667B19E3779F9ULL; // 0b0001011001010110011001111011000110011110001101110111100111111001 - static const u64 PRIME64_4 = 0x85EBCA77C2B2AE63ULL; // 0b1000010111101011110010100111011111000010101100101010111001100011 - static const u64 PRIME64_5 = 0x27D4EB2F165667C5ULL; // 0b0010011111010100111010110010111100010110010101100110011111000101 +```c + static const u64 PRIME64_1 = 0x9E3779B185EBCA87ULL; // 0b1001111000110111011110011011000110000101111010111100101010000111 + static const u64 PRIME64_2 = 0xC2B2AE3D27D4EB4FULL; // 0b1100001010110010101011100011110100100111110101001110101101001111 + static const u64 PRIME64_3 = 0x165667B19E3779F9ULL; // 0b0001011001010110011001111011000110011110001101110111100111111001 + static const u64 PRIME64_4 = 0x85EBCA77C2B2AE63ULL; // 0b1000010111101011110010100111011111000010101100101010111001100011 + static const u64 PRIME64_5 = 0x27D4EB2F165667C5ULL; // 0b0010011111010100111010110010111100010110010101100110011111000101 +``` These constants are prime numbers, and feature a good mix of bits 1 and 0, neither too regular, nor too dissymmetric. These properties help dispersion capabilities. -### Step 1. Initialise internal accumulators +### Step 1. Initialize internal accumulators Each accumulator gets an initial value based on optional `seed` input. Since the `seed` is optional, it can be `0`. - u64 acc1 = seed + PRIME64_1 + PRIME64_2; - u64 acc2 = seed + PRIME64_2; - u64 acc3 = seed + 0; - u64 acc4 = seed - PRIME64_1; +```c + u64 acc1 = seed + PRIME64_1 + PRIME64_2; + u64 acc2 = seed + PRIME64_2; + u64 acc3 = seed + 0; + u64 acc4 = seed - PRIME64_1; +``` #### Special case: input is less than 32 bytes @@ -195,7 +226,9 @@ When the input is too small (< 32 bytes), the algorithm will not process any str In this case, a simplified initialization is performed, using a single accumulator: - u64 acc = seed + PRIME64_5; +```c + u64 acc = seed + PRIME64_5; +``` The algorithm then proceeds directly to step 4. @@ -209,10 +242,12 @@ Each lane read its associated 64-bit value using __little-endian__ convention. For each {lane, accumulator}, the update process is called a _round_, and applies the following formula: - round(accN,laneN): - accN = accN + (laneN * PRIME64_2); - accN = accN <<< 31; - return accN * PRIME64_1; +```c +round(accN,laneN): + accN = accN + (laneN * PRIME64_2); + accN = accN <<< 31; + return accN * PRIME64_1; +``` This shuffles the bits so that any bit from input _lane_ impacts several bits in output _accumulator_. All operations are performed modulo 2^64. @@ -225,52 +260,60 @@ All 4 lane accumulators from previous steps are merged to produce a single remai Note that accumulator convergence is more complex than 32-bit variant, and requires to define another function called _mergeAccumulator()_: - mergeAccumulator(acc,accN): - acc = acc xor round(0, accN); - acc = acc * PRIME64_1 - return acc + PRIME64_4; +```c +mergeAccumulator(acc,accN): + acc = acc xor round(0, accN); + acc = acc * PRIME64_1; + return acc + PRIME64_4; +``` which is then used in the convergence formula: - acc = (acc1 <<< 1) + (acc2 <<< 7) + (acc3 <<< 12) + (acc4 <<< 18); - acc = mergeAccumulator(acc, acc1); - acc = mergeAccumulator(acc, acc2); - acc = mergeAccumulator(acc, acc3); - acc = mergeAccumulator(acc, acc4); +```c + acc = (acc1 <<< 1) + (acc2 <<< 7) + (acc3 <<< 12) + (acc4 <<< 18); + acc = mergeAccumulator(acc, acc1); + acc = mergeAccumulator(acc, acc2); + acc = mergeAccumulator(acc, acc3); + acc = mergeAccumulator(acc, acc4); +``` ### Step 4. Add input length The input total length is presumed known at this stage. This step is just about adding the length to accumulator, so that it participates to final mixing. - acc = acc + inputLength; +```c + acc = acc + inputLength; +``` ### Step 5. Consume remaining input There may be up to 31 bytes remaining to consume from the input. The final stage will digest them according to following pseudo-code: - while (remainingLength >= 8) { - lane = read_64bit_little_endian(input_ptr); - acc = acc xor round(0, lane); - acc = (acc <<< 27) * PRIME64_1; - acc = acc + PRIME64_4; - input_ptr += 8; remainingLength -= 8; - } +```c + while (remainingLength >= 8) { + lane = read_64bit_little_endian(input_ptr); + acc = acc xor round(0, lane); + acc = (acc <<< 27) * PRIME64_1; + acc = acc + PRIME64_4; + input_ptr += 8; remainingLength -= 8; + } - if (remainingLength >= 4) { - lane = read_32bit_little_endian(input_ptr); - acc = acc xor (lane * PRIME64_1); - acc = (acc <<< 23) * PRIME64_2; - acc = acc + PRIME64_3; - input_ptr += 4; remainingLength -= 4; - } + if (remainingLength >= 4) { + lane = read_32bit_little_endian(input_ptr); + acc = acc xor (lane * PRIME64_1); + acc = (acc <<< 23) * PRIME64_2; + acc = acc + PRIME64_3; + input_ptr += 4; remainingLength -= 4; + } - while (remainingLength >= 1) { - lane = read_byte(input_ptr); - acc = acc xor (lane * PRIME64_5); - acc = (acc <<< 11) * PRIME64_1; - input_ptr += 1; remainingLength -= 1; - } + while (remainingLength >= 1) { + lane = read_byte(input_ptr); + acc = acc xor (lane * PRIME64_5); + acc = (acc <<< 11) * PRIME64_1; + input_ptr += 1; remainingLength -= 1; + } +``` This process ensures that all input bytes are present in the final mix. @@ -278,11 +321,13 @@ This process ensures that all input bytes are present in the final mix. The final mix ensures that all input bits have a chance to impact any bit in the output digest, resulting in an unbiased distribution. This is also called avalanche effect. - acc = acc xor (acc >> 33); - acc = acc * PRIME64_2; - acc = acc xor (acc >> 29); - acc = acc * PRIME64_3; - acc = acc xor (acc >> 32); +```c + acc = acc xor (acc >> 33); + acc = acc * PRIME64_2; + acc = acc xor (acc >> 29); + acc = acc * PRIME64_3; + acc = acc xor (acc >> 32); +``` ### Step 7. Output @@ -290,6 +335,462 @@ The `XXH64()` function produces an unsigned 64-bit value as output. For systems which require to store and/or display the result in binary or hexadecimal format, the canonical format is defined to reproduce the same value as the natural decimal format, hence follows __big-endian__ convention (most significant byte first). +XXH3 Algorithm Overview +------------------------------------- + +XXH3 comes in two different versions: XXH3-64 and XXH3-128 (or XXH128), producing 64 and 128 bits of output, respectively. + +XXH3 uses different algorithms for small (0-16 bytes), medium (17-240 bytes), and large (241+ bytes) inputs. The algorithms for small and medium inputs are optimized for performance. The three algorithms are described in the following sections. + +Many operations require some 64-bit prime number constants, which are mostly the same constants used in XXH32 and XXH64, all defined below: + +```c + static const u64 PRIME32_1 = 0x9E3779B1U; // 0b10011110001101110111100110110001 + static const u64 PRIME32_2 = 0x85EBCA77U; // 0b10000101111010111100101001110111 + static const u64 PRIME32_3 = 0xC2B2AE3DU; // 0b11000010101100101010111000111101 + static const u64 PRIME64_1 = 0x9E3779B185EBCA87ULL; // 0b1001111000110111011110011011000110000101111010111100101010000111 + static const u64 PRIME64_2 = 0xC2B2AE3D27D4EB4FULL; // 0b1100001010110010101011100011110100100111110101001110101101001111 + static const u64 PRIME64_3 = 0x165667B19E3779F9ULL; // 0b0001011001010110011001111011000110011110001101110111100111111001 + static const u64 PRIME64_4 = 0x85EBCA77C2B2AE63ULL; // 0b1000010111101011110010100111011111000010101100101010111001100011 + static const u64 PRIME64_5 = 0x27D4EB2F165667C5ULL; // 0b0010011111010100111010110010111100010110010101100110011111000101 + static const u64 PRIME_MX1 = 0x165667919E3779F9ULL; // 0b0001011001010110011001111001000110011110001101110111100111111001 + static const u64 PRIME_MX2 = 0x9FB21C651E98DF25ULL; // 0b1001111110110010000111000110010100011110100110001101111100100101 +``` + +The `XXH3_64bits()` function produces an unsigned 64-bit value. +The `XXH3_128bits()` function produces a `XXH128_hash_t` struct containing `low64` and `high64` - the lower and higher 64-bit half values of the result, respectively. + +For systems requiring storing and/or displaying the result in binary or hexadecimal format, the canonical format is defined to reproduce the same value as the natural decimal format, hence following **big-endian** convention (most significant byte first). + +### Seed and Secret + +XXH3 provides seeded hashing by introducing two configurable constants used in the hashing process: the seed and the secret. The seed is an unsigned 64-bit value, and the secret is an array of bytes that is at least 136 bytes in size. The default seed is 0, and the default secret is the following 192-byte value: + +```c +static const u8 defaultSecret[192] = { + 0xb8, 0xfe, 0x6c, 0x39, 0x23, 0xa4, 0x4b, 0xbe, 0x7c, 0x01, 0x81, 0x2c, 0xf7, 0x21, 0xad, 0x1c, + 0xde, 0xd4, 0x6d, 0xe9, 0x83, 0x90, 0x97, 0xdb, 0x72, 0x40, 0xa4, 0xa4, 0xb7, 0xb3, 0x67, 0x1f, + 0xcb, 0x79, 0xe6, 0x4e, 0xcc, 0xc0, 0xe5, 0x78, 0x82, 0x5a, 0xd0, 0x7d, 0xcc, 0xff, 0x72, 0x21, + 0xb8, 0x08, 0x46, 0x74, 0xf7, 0x43, 0x24, 0x8e, 0xe0, 0x35, 0x90, 0xe6, 0x81, 0x3a, 0x26, 0x4c, + 0x3c, 0x28, 0x52, 0xbb, 0x91, 0xc3, 0x00, 0xcb, 0x88, 0xd0, 0x65, 0x8b, 0x1b, 0x53, 0x2e, 0xa3, + 0x71, 0x64, 0x48, 0x97, 0xa2, 0x0d, 0xf9, 0x4e, 0x38, 0x19, 0xef, 0x46, 0xa9, 0xde, 0xac, 0xd8, + 0xa8, 0xfa, 0x76, 0x3f, 0xe3, 0x9c, 0x34, 0x3f, 0xf9, 0xdc, 0xbb, 0xc7, 0xc7, 0x0b, 0x4f, 0x1d, + 0x8a, 0x51, 0xe0, 0x4b, 0xcd, 0xb4, 0x59, 0x31, 0xc8, 0x9f, 0x7e, 0xc9, 0xd9, 0x78, 0x73, 0x64, + 0xea, 0xc5, 0xac, 0x83, 0x34, 0xd3, 0xeb, 0xc3, 0xc5, 0x81, 0xa0, 0xff, 0xfa, 0x13, 0x63, 0xeb, + 0x17, 0x0d, 0xdd, 0x51, 0xb7, 0xf0, 0xda, 0x49, 0xd3, 0x16, 0x55, 0x26, 0x29, 0xd4, 0x68, 0x9e, + 0x2b, 0x16, 0xbe, 0x58, 0x7d, 0x47, 0xa1, 0xfc, 0x8f, 0xf8, 0xb8, 0xd1, 0x7a, 0xd0, 0x31, 0xce, + 0x45, 0xcb, 0x3a, 0x8f, 0x95, 0x16, 0x04, 0x28, 0xaf, 0xd7, 0xfb, 0xca, 0xbb, 0x4b, 0x40, 0x7e, +}; +``` + +The seed and the secret can be optionally specified using the `*_withSecret` and `*_withSeed` versions of the hash function. + +The seed and the secret cannot be specified simultaneously (`*_withSecretAndSeed` is actually `*_withSeed` for short and medium inputs <= 240 bytes, and `*_withSecret` for large inputs). When one is specified, the other one uses the default value. +There is one exception though: when input is large (> 240 bytes) and a seed is given, a secret is derived from the seed value and the default secret using the following procedure: + +```c +deriveSecret(u64 seed): + u64 derivedSecret[24] = defaultSecret[0:192]; + for (i = 0; i < 12; i++) { + derivedSecret[i*2] += seed; + derivedSecret[i*2+1] -= seed; + } + return derivedSecret; // convert to u8[192] (little-endian) +``` + +The derivation treats the secrets as 24 64-bit values. In XXH3 algorithms, the secret is always read similarly by treating a contiguous segment of the array as one or more 32-bit or 64-bit values. **The secret values are always read using little-endian convention**. + +### Final Mixing Step (avalanche) + +To make sure that all input bits have a chance to impact any bit in the output digest (avalanche effect), the final step of the XXH3 algorithm is usually one of the two fixed operations that mix the bits in a 64-bit value. These operations are denoted `avalanche()` and `avalanche_XXH64()` in the following XXH3 description. + +```c +avalanche(u64 x): + x = x xor (x >> 37); + x = x * PRIME_MX1; + x = x xor (x >> 32); + return x; + +avalanche_XXH64(u64 x): + x = x xor (x >> 33); + x = x * PRIME64_2; + x = x xor (x >> 29); + x = x * PRIME64_3; + x = x xor (x >> 32); + return x; +``` + +XXH3 Algorithm Description (for small inputs) +------------------------------------- + +The algorithm for small inputs (0-16 bytes of input) is further divided into 4 cases: empty, 1-3 bytes, 4-8 bytes, and 9-16 bytes of input. + +The algorithm uses byte-swap operations. The byte-swap operation reverses the byte order in a 32-bit or 64-bit value. It is denoted `bswap32` and `bswap64` for its 32-bit and 64-bit versions, respectively. + +### Empty input + +The hash of empty input is calculated from the seed and a segment of the secret: + +```c +XXH3_64_empty(): + u64 secretWords[2] = secret[56:72]; + return avalanche_XXH64(seed xor secretWords[0] xor secretWords[1]); + +XXH3_128_empty(): + u64 secretWords[4] = secret[64:96]; + return {avalanche_XXH64(seed xor secretWords[0] xor secretWords[1]), // lower half + avalanche_XXH64(seed xor secretWords[2] xor secretWords[3])}; // higher half +``` + +### 1-3 bytes of input + +The algorithm starts from a single 32-bit value combining the input bytes and its length: + +```c +u32 combined = (u32)input[inputLength-1] | ((u32)inputLength << 8) | + ((u32)input[0] << 16) | ((u32)input[inputLength>>1] << 24); +// LSB 8 16 24 MSB +// | last byte | length | first byte | middle-or-last byte | +``` + +Then the final output is calculated from the value and the first 8 bytes (XXH3-64) or 16 bytes (XXH3-128) of the secret to produce the final result. The secret here is read as 32-bit values instead of the usual 64-bit values. + +```c +XXH3_64_1to3(): + u32 secretWords[2] = secret[0:8]; + u64 value = ((u64)(secretWords[0] xor secretWords[1]) + seed) xor (u64)combined; + return avalanche_XXH64(value); + +XXH3_128_1to3(): + u32 secretWords[4] = secret[0:16]; + u64 low = ((u64)(secretWords[0] xor secretWords[1]) + seed) xor (u64)combined; + u64 high = ((u64)(secretWords[2] xor secretWords[3]) - seed) xor (u64)(bswap32(combined) <<< 13); + // note that the bswap32(combined) <<< 13 above is 32-bit rotate + return {avalanche_XXH64(low), // lower half + avalanche_XXH64(high)}; // higher half +``` + +Note that the XXH3-64 result is the lower half of XXH3-128 result. + +### 4-8 bytes of input + +The algorithm starts from reading the first and last 4 bytes of the input as little-endian 32-bit values, and a modified seed: + +```c +u32 inputFirst = input[0:4]; +u32 inputLast = input[inputLength-4:inputLength]; +u64 modifiedSeed = seed xor ((u64)bswap32((u32)lowerHalf(seed)) << 32); +``` + +Again, these values are combined with a segment of the secret to produce the final value. + +```c +XXH3_64_4to8(): + u64 secretWords[2] = secret[8:24]; + u64 combined = (u64)inputLast | ((u64)inputFirst << 32); + u64 value = ((secretWords[0] xor secretWords[1]) - modifiedSeed) xor combined; + value = value xor (value <<< 49) xor (value <<< 24); + value = value * PRIME_MX2; + value = value xor ((value >> 35) + inputLength); + value = value * PRIME_MX2; + value = value xor (value >> 28); + return value; + +XXH3_128_4to8(): + u64 secretWords[2] = secret[16:32]; + u64 combined = (u64)inputFirst | ((u64)inputLast << 32); + u64 value = ((secretWords[0] xor secretWords[1]) + modifiedSeed) xor combined; + u128 mulResult = (u128)value * (u128)(PRIME64_1 + (inputLength << 2)); + u64 high = higherHalf(mulResult); // mulResult >> 64 + u64 low = lowerHalf(mulResult); // mulResult & 0xFFFFFFFFFFFFFFFF + high = high + (low << 1); + low = low xor (high >> 3); + low = low xor (low >> 35); + low = low * PRIME_MX2; + low = low xor (low >> 28); + high = avalanche(high); + return {low, high}; +``` + +### 9-16 bytes of input + +The algorithm starts from reading the first and last 8 bytes of the input as little-endian 64-bit values: + +```c +u64 inputFirst = input[0:8]; +u64 inputLast = input[inputLength-8:inputLength]; +``` + +Once again, these values are combined with a segment of the secret to produce the final value. + +```c +XXH3_64_9to16(): + u64 secretWords[4] = secret[24:56]; + u64 low = ((secretWords[0] xor secretWords[1]) + seed) xor inputFirst; + u64 high = ((secretWords[2] xor secretWords[3]) - seed) xor inputLast; + u128 mulResult = (u128)low * (u128)high; + u64 value = inputLength + bswap64(low) + high + (u64)(lowerHalf(mulResult) xor higherHalf(mulResult)); + return avalanche(value); + +XXH3_128_9to16(): + u64 secretWords[4] = secret[32:64]; + u64 val1 = ((secretWords[0] xor secretWords[1]) - seed) xor inputFirst xor inputLast; + u64 val2 = ((secretWords[2] xor secretWords[3]) + seed) xor inputLast; + u128 mulResult = (u128)val1 * (u128)PRIME64_1; + u64 low = lowerHalf(mulResult) + ((u64)(inputLength - 1) << 54); + u64 high = higherHalf(mulResult) + ((u64)higherHalf(val2) << 32) + (u64)lowerHalf(val2) * PRIME32_2; + // the above line can also be simplified to higherHalf(mulResult) + val2 + (u64)lowerHalf(val2) * (PRIME32_2 - 1); + low = low xor bswap64(high); + // the following three lines are in fact a 128x64 -> 128 multiplication ({low,high} = (u128){low,high} * PRIME64_2) + u128 mulResult2 = (u128)low * (u128)PRIME64_2; + low = lowerHalf(mulResult2); + high = higherHalf(mulResult2) + high * PRIME64_2; + return {avalanche(low), // lower half + avalanche(high)}; // higher half +``` + + +XXH3 Algorithm Description (for medium inputs) +------------------------------------- + +This algorithm is used for medium inputs (17-240 bytes of input). Its internal hash state is stored inside 1 (XXH3-64) or 2 (XXH3-128) "accumulators", each storing an unsigned 64-bit value. + +### Step 1. Initialize internal accumulators + +The accumulator(s) are initialized based on the input length. + +```c +// For XXH3-64 +u64 acc = inputLength * PRIME64_1; + +// For XXH3-128 +u64 acc[2] = {inputLength * PRIME64_1, 0}; +``` + +### Step 2. Process the input + +This step is further divided into two cases: one for 17-128 bytes of input, and one for 129-240 bytes of input. + +#### Mixing operation + +This step uses a mixing operation that mixes a 16-byte segment of data, a 16-byte segment of secret and the seed into a 64-bit value as a building block. This operation treat the segment of data and secret as little-endian 64-bit values. + +```c +mixStep(u8 data[16], size secretOffset, u64 seed): + u64 dataWords[2] = data[0:16]; + u64 secretWords[2] = secret[secretOffset:secretOffset+16]; + u128 mulResult = (u128)(dataWords[0] xor (secretWords[0] + seed)) * + (u128)(dataWords[1] xor (secretWords[1] - seed)); + return lowerHalf(mulResult) xor higherHalf(mulResult); +``` + +The mixing operation is always invoked in groups of two in XXH3-128, where two 16-byte segments of data are mixed with a 32-byte segment of secret, and the accumulators are updated accordingly. + +```c +mixTwoChunks(u8 data1[16], u8 data2[16], size secretOffset, u64 seed): + u64 dataWords1[2] = data1[0:16]; // again, little-endian conversion + u64 dataWords2[2] = data2[0:16]; + acc[0] = acc[0] + mixStep(data1, secretOffset, seed); + acc[1] = acc[1] + mixStep(data2, secretOffset + 16, seed); + acc[0] = acc[0] xor (dataWords2[0] + dataWords2[1]); + acc[1] = acc[1] xor (dataWords1[0] + dataWords1[1]); +``` + +The input is split into several 16-byte chunks and mixed, and the result is added to the accumulator(s). + +#### 17-128 bytes of input + +The input is read as *N* 16-byte chunks starting from the beginning and *N* chunks starting from the end, where *N* is the smallest number that these 2*N* chunks cover the whole input. These chunks are paired up and mixed, and the results are accumulated to the accumulator(s). + +```c +// the loop variable `i` should be signed to avoid underflow in implementation +processInput_XXH3_64_17to128(): + u64 numRounds = ((inputLength - 1) >> 5) + 1; + for (i = numRounds - 1; i >= 0; i--) { + size offsetStart = i*16; + size offsetEnd = inputLength - i*16 - 16; + acc += mixStep(input[offsetStart:offsetStart+16], i*32, seed); + acc += mixStep(input[offsetEnd:offsetEnd+16], i*32+16, seed); + } + +processInput_XXH3_128_17to128(): + u64 numRounds = ((inputLength - 1) >> 5) + 1; + for (i = numRounds - 1; i >= 0; i--) { + size offsetStart = i*16; + size offsetEnd = inputLength - i*16 - 16; + mixTwoChunks(input[offsetStart:offsetStart+16], input[offsetEnd:offsetEnd+16], i*32, seed); + } +``` + +#### 129-240 bytes of input + +The input is split into 16-byte (XXH3-64) or 32-byte (XXH3-128) chunks. The first 128 bytes are first mixed chunk by chunk, followed by an intermediate avalanche operation. Then the remaining full chunks are processed, and finally the last 16/32 bytes are treated as a chunk to process. + +```c +processInput_XXH3_64_129to240(): + u64 numChunks = inputLength >> 4; + for (i = 0; i < 8; i++) { + acc += mixStep(input[i*16:i*16+16], i*16, seed); + } + acc = avalanche(acc); + for (i = 8; i < numChunks; i++) { + acc += mixStep(input[i*16:i*16+16], (i-8)*16 + 3, seed); + } + acc += mixStep(input[inputLength-16:inputLength], 119, seed); + +processInput_XXH3_128_129to240(): + u64 numChunks = inputLength >> 5; + for (i = 0; i < 4; i++) { + mixTwoChunks(input[i*32:i*32+16], input[i*32+16:i*32+32], i*32, seed); + } + acc[0] = avalanche(acc[0]); + acc[1] = avalanche(acc[1]); + for (i = 4; i < numChunks; i++) { + mixTwoChunks(input[i*32:i*32+16], input[i*32+16:i*32+32], (i-4)*32 + 3, seed); + } + // note that the half-chunk order and the seed is different here + mixTwoChunks(input[inputLength-16:inputLength], input[inputLength-32:inputLength-16], 103, (u64)0 - seed); +``` + +### Step 3. Finalization + +The final result is extracted from the accumulator(s). + +```c +XXH3_64_17to240(): + return avalanche(acc); + +XXH3_128_17to240(): + u64 low = acc[0] + acc[1]; + u64 high = (acc[0] * PRIME64_1) + (acc[1] * PRIME64_4) + (((u64)inputLength - seed) * PRIME64_2); + return {avalanche(low), // lower half + (u64)0 - avalanche(high)}; // higher half +``` + +XXH3 Algorithm Description (for large inputs) +------------------------------------- + +This algorithm is used for inputs larger than 240 bytes. The internal hash state is stored inside 8 "accumulators", each one storing an unsigned 64-bit value. + +### Step 1. Initialize internal accumulators + +The accumulators are initialized to fixed constants: + +```c +u64 acc[8] = { + PRIME32_3, PRIME64_1, PRIME64_2, PRIME64_3, + PRIME64_4, PRIME32_2, PRIME64_5, PRIME32_1}; +``` + +### Step 2. Process blocks + +The input is consumed and processed one full block at a time. The size of the block depends on the length of the secret. Specifically, a block consists of several 64-byte stripes. The number of stripes per block is `floor((secretLength-64)/8)` . For the default 192-byte secret, there are 16 stripes in a block, and thus the block size is 1024 bytes. + +```c +secretLength = lengthInBytes(secret); // default 192; at least 136 +stripesPerBlock = (secretLength-64) / 8; // default 16; at least 9 +blockSize = 64 * stripesPerBlock; // default 1024; at least 576 +``` + +The process of processing a full block is called a *round*. It consists of the following two sub-steps: + +#### Step 2-1. Process stripes in the block + +A stripe is evenly divided into 8 lanes, of 8 bytes each. In an accumulation step, one stripe and a 64-byte contiguous segment of the secret are used to update the accumulators. Each lane reads its associated 64-bit value using little-endian convention. + +The accumulation step applies the following procedure: + +```c +accumulate(u64 stripe[8], size secretOffset): + u64 secretWords[8] = secret[secretOffset:secretOffset+64]; + for (i = 0; i < 8; i++) { + u64 value = stripe[i] xor secretWords[i]; + acc[i xor 1] = acc[i xor 1] + stripe[i]; + acc[i] = acc[i] + (u64)lowerHalf(value) * (u64)higherHalf(value); + // (value and 0xFFFFFFFF) * (value >> 32) + } +``` + +The accumulation step is repeated for all stripes in a block, using different segments of the secret, starting from the first 64 bytes for the first stripe, and offset by 8 bytes for each following round: + +```c +round_accumulate(u8 block[blockSize]): + for (n = 0; n < stripesPerBlock; n++) { + u64 stripe[8] = block[n*64:n*64+64]; // 64 bytes = 8 u64s + accumulate(stripe, n*8); + } +``` + +#### Step 2-2. Scramble accumulators + +After the accumulation steps are finished for all stripes in the block, the accumulators are scrambled using the last 64 bytes of the secret. + +```c +round_scramble(): + u64 secretWords[8] = secret[secretLength-64:secretLength]; + for (i = 0; i < 8; i++) { + acc[i] = acc[i] xor (acc[i] >> 47); + acc[i] = acc[i] xor secretWords[i]; + acc[i] = acc[i] * PRIME32_1; + } +``` + +A round is thus a `round_accumulate` followed by a `round_scramble`: + +```c +round(u8 block[blockSize]): + round_accumulate(block); + round_scramble(); +``` + +Step 2 is looped to consume the input until there are less than or equal to `blockSize` bytes of input left. Note that we leave the last block to the next step even if it is a full block. + +### Step 3. Process the last block and the last 64 bytes + +Accumulation steps are run for the stripes in the last block, except for the last stripe (whether it is full or not). After that, run a final accumulation step by treating the last 64 bytes as a stripe. Note that the last 64 bytes might overlap with the second-to-last block. + +```c +// len is the size of the last block (1 <= len <= blockSize) +lastRound(u8 block[], size len, u64 lastStripe[8]): + size nFullStripes = (len-1)/64; + for (n = 0; n < nFullStripes; n++) { + u64 stripe[8] = block[n*64:n*64+64]; + accumulate(stripe, n * 8); + } + accumulate(lastStripe, secretLength - 71); +``` + +### Step 4. Finalization + +In the finalization step, a merging procedure is used to extract a single 64-bit value from the accumulators, using an initial seed value and a 64-byte segment of the secret. + +```c +finalMerge(u64 initValue, size secretOffset): + u64 secretWords[8] = secret[secretOffset:secretOffset+64]; + u64 result = initValue; + for (i = 0; i < 4; i++) { + // 64-bit by 64-bit multiplication to 128-bit full result + u128 mulResult = (u128)(acc[i*2] xor secretWords[i*2]) * + (u128)(acc[i*2+1] xor secretWords[i*2+1]); + result = result + (lowerHalf(mulResult) xor higherHalf(mulResult)); + // (mulResult and 0xFFFFFFFFFFFFFFFF) xor (mulResult >> 64) + } + return avalanche(result); +``` + +XXH3-128 runs the merging procedure twice for the two halves of the result, using different secret segments and different initial values derived from the total input length. +The XXH3-64 result is just the lower half of the XXH3-128 result. + +```c +XXH3_64_large(): + return finalMerge((u64)inputLength * PRIME64_1, 11); + +XXH3_128_large(): + return {finalMerge((u64)inputLength * PRIME64_1, 11), // lower half + finalMerge(~((u64)inputLength * PRIME64_2), secretLength - 75)}; // higher half +``` + + Performance considerations ---------------------------------- @@ -301,6 +802,8 @@ On 64-bit systems, the 64-bit variant `XXH64` is generally faster to compute, so On 32-bit systems though, positions are reversed: `XXH64` performance is reduced, due to its usage of 64-bit arithmetic. `XXH32` becomes a faster variant. +Finally, when vector operations are possible, `XXH3` is likely the faster variant. + Reference Implementation ---------------------------------------- @@ -312,6 +815,6 @@ It links to the [github project page](https://github.com/Cyan4973/xxHash) where Version changes -------------------- -v0.7.3: Minor fixes +v0.2.0: added XXH3 specification, by Adrien Wu v0.1.1: added a note on rationale for selection of constants v0.1.0: initial release diff --git a/deps/xxHash/fuzz/fuzzer.c b/deps/xxHash/fuzz/fuzzer.c new file mode 100644 index 000000000..731ba4d49 --- /dev/null +++ b/deps/xxHash/fuzz/fuzzer.c @@ -0,0 +1,11 @@ +#include +#include "xxhash.h" + + +int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { + volatile XXH64_hash_t hash64 = XXH64(data, size, 0); + (void)hash64; + volatile XXH32_hash_t hash32 = XXH32(data, size, 0); + (void)hash32; + return 0; +} diff --git a/deps/xxHash/libxxhash.pc.in b/deps/xxHash/libxxhash.pc.in index 0a52dde20..fc59344ca 100644 --- a/deps/xxHash/libxxhash.pc.in +++ b/deps/xxHash/libxxhash.pc.in @@ -1,15 +1,15 @@ # xxHash - Extremely fast hash algorithm -# Copyright (C) 2012-2020, Yann Collet, Facebook +# Copyright (C) 2012-2021, Yann Collet, Facebook # BSD 2-Clause License (https://www.opensource.org/licenses/bsd-license.php) prefix=@PREFIX@ exec_prefix=@EXECPREFIX@ -includedir=${prefix}/@INCLUDEDIR@ -libdir=${exec_prefix}/@LIBDIR@ +includedir=@INCLUDEDIR@ +libdir=@LIBDIR@ Name: xxhash Description: extremely fast hash algorithm -URL: https://www.xxhash.com/ +URL: http://www.xxhash.com/ Version: @VERSION@ Libs: -L${libdir} -lxxhash Cflags: -I${includedir} diff --git a/deps/xxHash/tests/Makefile b/deps/xxHash/tests/Makefile index 361032fde..b9e45b0ae 100644 --- a/deps/xxHash/tests/Makefile +++ b/deps/xxHash/tests/Makefile @@ -1,7 +1,35 @@ +# ################################################################ +# xxHash Makefile +# Copyright (C) 2012-2021 Yann Collet +# +# GPL v2 License +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# +# You can contact the author at: +# - xxHash homepage: https://www.xxhash.com +# - xxHash source repository: https://github.com/Cyan4973/xxHash +# ################################################################ + CFLAGS += -Wall -Wextra -Wundef -g +CP = cp NM = nm GREP = grep +XXHSUM_DIR = .. +XXHSUM = $(XXHSUM_DIR)/xxhsum # Define *.exe as extension for Windows systems ifneq (,$(filter Windows%,$(OS))) @@ -23,7 +51,7 @@ default: all all: test .PHONY: test -test: test_multiInclude test_unicode +test: test_multiInclude test_unicode test_sanity .PHONY: test_multiInclude test_multiInclude: @@ -35,25 +63,26 @@ test_multiInclude: # compile with xxhash.o, to detect duplicated symbols $(MAKE) multiInclude_withxxhash @$(MAKE) clean - # Note: XXH_INLINE_ALL with XXH_NAMESPACE is currently disabled - # compile with XXH_NAMESPACE - # CPPFLAGS=-DXXH_NAMESPACE=TESTN_ $(MAKE) multiInclude_withxxhash + # compile with XXH_NAMESPACE before XXH_INLINE_ALL + CPPFLAGS=-DXXH_NAMESPACE=TESTN_ $(MAKE) multiInclude # no symbol prefixed TESTN_ should exist - # ! $(NM) multiInclude_withxxhash | $(GREP) TESTN_ - #$(MAKE) clean - # compile with XXH_NAMESPACE and without xxhash.o - # CPPFLAGS=-DXXH_NAMESPACE=TESTN_ $(MAKE) multiInclude - # no symbol prefixed TESTN_ should exist - # ! $(NM) multiInclude | $(GREP) TESTN_ - #@$(MAKE) clean + ! $(NM) multiInclude | $(GREP) TESTN_ + $(MAKE) clean + # compile xxhash.o with XXH_NAMESPACE + CPPFLAGS=-DXXH_NAMESPACE=TESTN_ $(MAKE) multiInclude_withxxhash + # symbols prefixed TESTN_ should exist in xxhash.o (though not be invoked) + $(NM) multiInclude_withxxhash | $(GREP) TESTN_ + $(MAKE) clean .PHONY: test_ppc_redefine test_ppc_redefine: ppc_define.c @$(MAKE) clean $(CC) $(CPPFLAGS) $(CFLAGS) -c $^ -xxhsum$(EXT): ../xxhash.c ../xxhash.h ../xxhsum.c - $(CC) $(CFLAGS) $(LDFLAGS) ../xxhash.c ../xxhsum.c -o $@ +.PHONY: $(XXHSUM) +$(XXHSUM): + $(MAKE) -C $(XXHSUM_DIR) xxhsum + $(CP) $(XXHSUM) . # Make sure that Unicode filenames work. # https://github.com/Cyan4973/xxHash/issues/293 @@ -63,7 +92,7 @@ test_unicode: @echo "Skipping Unicode test, your terminal doesn't appear to support UTF-8." @echo "Try with ENABLE_UNICODE=1" else -test_unicode: xxhsum$(EXT) generate_unicode_test.c +test_unicode: $(XXHSUM) generate_unicode_test.c # Generate a Unicode filename test dynamically # to keep UTF-8 out of the source tree. $(CC) $(CFLAGS) $(LDFLAGS) generate_unicode_test.c -o generate_unicode_test$(EXT) @@ -71,6 +100,28 @@ test_unicode: xxhsum$(EXT) generate_unicode_test.c $(SHELL) ./unicode_test.sh endif +.PHONY: test_filename_escape +test_filename_escape: $(XXHSUM) + ./filename-escape.sh + +.PHONY: test_cli_comment_line +test_cli_comment_line: $(XXHSUM) + $(SHELL) ./cli-comment-line.sh + +.PHONY: test_cli_ignore_missing +test_cli_ignore_missing: $(XXHSUM) + $(SHELL) ./cli-ignore-missing.sh + +.PHONY: test_sanity +test_sanity: sanity_test.c + $(CC) $(CFLAGS) $(LDFLAGS) sanity_test.c -o sanity_test$(EXT) + $(RUN_ENV) ./sanity_test$(EXT) + +.PHONY: sanity_test_vectors.h +sanity_test_vectors.h: sanity_test_vectors_generator.c + $(CC) $(CFLAGS) $(LDFLAGS) sanity_test_vectors_generator.c -o sanity_test_vectors_generator$(EXT) + ./sanity_test_vectors_generator$(EXT) + xxhash.o: ../xxhash.c ../xxhash.h $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -c -o $@ $< @@ -80,4 +131,5 @@ multiInclude_withxxhash: multiInclude.o xxhash.o clean: @$(RM) *.o @$(RM) multiInclude multiInclude_withxxhash - @$(RM) *.unicode generate_unicode_test$(EXT) unicode_test.* xxhsum$(EXT) + @$(RM) *.unicode generate_unicode_test$(EXT) unicode_test.* xxhsum* + @$(RM) sanity_test$(EXT) sanity_test_vectors_generator$(EXT) diff --git a/deps/xxHash/tests/bench/.clang_complete b/deps/xxHash/tests/bench/.clang_complete new file mode 100644 index 000000000..87dff6b82 --- /dev/null +++ b/deps/xxHash/tests/bench/.clang_complete @@ -0,0 +1 @@ +-I../.. diff --git a/deps/xxHash/tests/bench/.gitignore b/deps/xxHash/tests/bench/.gitignore index ede2d5880..93f3e073b 100644 --- a/deps/xxHash/tests/bench/.gitignore +++ b/deps/xxHash/tests/bench/.gitignore @@ -4,6 +4,7 @@ benchHash benchHash32 benchHash_avx2 +benchHash_avx512 benchHash_hw # test files diff --git a/deps/xxHash/tests/bench/Makefile b/deps/xxHash/tests/bench/Makefile index cdccfffd6..a7edd4866 100644 --- a/deps/xxHash/tests/bench/Makefile +++ b/deps/xxHash/tests/bench/Makefile @@ -1,6 +1,6 @@ # ################################################################ # xxHash benchHash Makefile -# Copyright (C) 2019-2020 Yann Collet +# Copyright (C) 2019-2021 Yann Collet # # GPL v2 License # @@ -29,7 +29,8 @@ CPPFLAGS += -I../.. # directory of xxHash source files CFLAGS ?= -O3 -CFLAGS += -std=c99 -Wall -Wextra -Wstrict-aliasing=1 +CFLAGS += -Wall -Wextra -Wstrict-aliasing=1 \ + -std=c99 CFLAGS += $(MOREFLAGS) # custom way to add flags CXXFLAGS ?= -O3 LDFLAGS += $(MOREFLAGS) @@ -48,11 +49,14 @@ benchHash32: CXXFLAGS += -m32 benchHash_avx2: CFLAGS += -mavx2 benchHash_avx2: CXXFLAGS += -mavx2 +benchHash_avx512: CFLAGS += -mavx512f +benchHash_avx512: CXXFLAGS += -mavx512f + benchHash_hw: CPPFLAGS += -DHARDWARE_SUPPORT benchHash_hw: CFLAGS += -mavx2 -maes benchHash_hw: CXXFLAGS += -mavx2 -mpclmul -std=c++14 -benchHash benchHash32 benchHash_avx2 benchHash_nosimd benchHash_hw: $(OBJ_LIST) +benchHash benchHash32 benchHash_avx2 benchHash_avx512 benchHash_nosimd benchHash_hw: $(OBJ_LIST) $(CXX) $(CPPFLAGS) $(CXXFLAGS) $^ $(LDFLAGS) -o $@ @@ -64,4 +68,4 @@ benchHash.o: benchHash.h clean: - $(RM) *.o benchHash benchHash32 benchHash_avx2 benchHash_hw + $(RM) *.o benchHash benchHash32 benchHash_avx2 benchHash_avx512 benchHash_hw diff --git a/deps/xxHash/tests/bench/benchHash.c b/deps/xxHash/tests/bench/benchHash.c index 05739c7b5..5da4678e5 100644 --- a/deps/xxHash/tests/bench/benchHash.c +++ b/deps/xxHash/tests/bench/benchHash.c @@ -1,7 +1,7 @@ /* * Hash benchmark module * Part of the xxHash project -* Copyright (C) 2019-2020 Yann Collet +* Copyright (C) 2019-2021 Yann Collet * * GPL v2 License * @@ -28,6 +28,7 @@ #include // malloc #include +#include #include "benchHash.h" @@ -104,6 +105,7 @@ bench_hash_internal(BMK_benchFn_t hashfn, void* payload, }; BMK_runOutcome_t result; + memset(&result, 0, sizeof(result)); while (!BMK_isCompleted_TimedFn(txf)) { result = BMK_benchTimedFn(txf, params); assert(BMK_isSuccessful_runOutcome(result)); diff --git a/deps/xxHash/tests/bench/benchHash.h b/deps/xxHash/tests/bench/benchHash.h index 6c9ba9104..9caa0a73f 100644 --- a/deps/xxHash/tests/bench/benchHash.h +++ b/deps/xxHash/tests/bench/benchHash.h @@ -1,7 +1,7 @@ /* * Hash benchmark module * Part of the xxHash project -* Copyright (C) 2019-2020 Yann Collet +* Copyright (C) 2019-2021 Yann Collet * * GPL v2 License * diff --git a/deps/xxHash/tests/bench/benchfn.c b/deps/xxHash/tests/bench/benchfn.c index ec7e9a25d..9d8f7265f 100644 --- a/deps/xxHash/tests/bench/benchfn.c +++ b/deps/xxHash/tests/bench/benchfn.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2016-2020 Yann Collet, Facebook, Inc. + * Copyright (C) 2016-2021 Yann Collet, Facebook, Inc. * All rights reserved. * * This source code is licensed under both the BSD-style license (found in the @@ -90,6 +90,7 @@ static BMK_runOutcome_t BMK_runOutcome_error(size_t errorResult) static BMK_runOutcome_t BMK_setValid_runTime(BMK_runTime_t runTime) { BMK_runOutcome_t outcome; + memset(&outcome, 0, sizeof(outcome)); outcome.error_tag_never_ever_use_directly = 0; outcome.internal_never_ever_use_directly = runTime; return outcome; diff --git a/deps/xxHash/tests/bench/benchfn.h b/deps/xxHash/tests/bench/benchfn.h index 42d103383..82f165571 100644 --- a/deps/xxHash/tests/bench/benchfn.h +++ b/deps/xxHash/tests/bench/benchfn.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2016-2020 Yann Collet, Facebook, Inc. + * Copyright (C) 2016-2021 Yann Collet, Facebook, Inc. * All rights reserved. * * This source code is licensed under both the BSD-style license (found in the diff --git a/deps/xxHash/tests/bench/bhDisplay.c b/deps/xxHash/tests/bench/bhDisplay.c index 6cf1a5375..eb9c197e1 100644 --- a/deps/xxHash/tests/bench/bhDisplay.c +++ b/deps/xxHash/tests/bench/bhDisplay.c @@ -1,7 +1,7 @@ /* * CSV Display module for the hash benchmark program * Part of the xxHash project -* Copyright (C) 2019-2020 Yann Collet +* Copyright (C) 2019-2021 Yann Collet * * GPL v2 License * @@ -84,7 +84,8 @@ static void bench_throughput_oneHash_smallInputs(Bench_Entry hashDesc, size_t si void bench_throughput_smallInputs(Bench_Entry const* hashDescTable, int nbHashes, size_t sizeMin, size_t sizeMax) { - printf("Throughput small inputs of fixed size : \n"); + printf("Throughput small inputs of fixed size (from %zu to %zu bytes): \n", + sizeMin, sizeMax); for (int i=0; i ./.test.xxh +echo '# Test comment line' | cat - ./.test.xxh > temp && mv temp ./.test.xxh +./xxhsum --check ./.test.xxh + +# XXH32 +./xxhsum -H32 ./Makefile > ./.test.xxh32 +echo '# Test comment line' | cat - ./.test.xxh32 > temp && mv temp ./.test.xxh32 +./xxhsum --check ./.test.xxh32 + +# XXH64 +./xxhsum -H64 ./Makefile > ./.test.xxh64 +echo '# Test comment line' | cat - ./.test.xxh64 > temp && mv temp ./.test.xxh64 +./xxhsum --check ./.test.xxh64 + +# XXH128 +./xxhsum -H128 ./Makefile > ./.test.xxh128 +echo '# Test comment line' | cat - ./.test.xxh128 > temp && mv temp ./.test.xxh128 +./xxhsum --check ./.test.xxh128 + + +rm ./.test.xxh +rm ./.test.xxh32 +rm ./.test.xxh64 +rm ./.test.xxh128 diff --git a/deps/xxHash/tests/cli-ignore-missing.sh b/deps/xxHash/tests/cli-ignore-missing.sh new file mode 100644 index 000000000..4b961699a --- /dev/null +++ b/deps/xxHash/tests/cli-ignore-missing.sh @@ -0,0 +1,51 @@ +#!/bin/bash + +# Exit immediately if any command fails. +# https://stackoverflow.com/a/2871034 +set -e -u -x + + +# Normal +./xxhsum ./Makefile > ./.test.xxh +./xxhsum --check ./.test.xxh + + +# Missing, expect error +# (1) Create checksum file. +# (2) Remove one of them. +# (3) --check it +# (4) Expect NG (missing file) +cp Makefile .test.makefile +./xxhsum ./.test.makefile > ./.test.xxh +rm ./.test.makefile +! ./xxhsum --check ./.test.xxh # Put '!' for expecting error + + +# Missing, --ignore-missing +# (1) Create checksum file. +# (2) Remove one of them. +# (3) --check it with --ignore-missing. +# (4) Expect OK + +cp Makefile .test.makefile +./xxhsum Makefile ./.test.makefile > ./.test.xxh +rm ./.test.makefile +./xxhsum --check --ignore-missing ./.test.xxh + + +# Missing, --ignore-missing, expect error +# (1) Create checksum file. +# (2) Remove all of them. +# (3) --check it with --ignore-missing. +# (4) Expect NG (no file was verified). + +cp Makefile .test.makefile +./xxhsum ./.test.makefile > ./.test.xxh +rm ./.test.makefile +! ./xxhsum --check --ignore-missing ./.test.xxh # Put '!' for expecting error + + +# Cleanup +( rm ./.test.* ) || true + +echo OK diff --git a/deps/xxHash/tests/collisions/Makefile b/deps/xxHash/tests/collisions/Makefile index bad9835b0..eee4b59e3 100644 --- a/deps/xxHash/tests/collisions/Makefile +++ b/deps/xxHash/tests/collisions/Makefile @@ -1,6 +1,6 @@ # Brute force collision tester for 64-bit hashes # Part of xxHash project -# Copyright (C) 2019-2020 Yann Collet +# Copyright (C) 2019-2021 Yann Collet # # GPL v2 License # @@ -26,11 +26,12 @@ SRC_DIRS = ./ ../../ allcodecs/ VPATH = $(SRC_DIRS) CPPFLAGS += $(addprefix -I ,$(SRC_DIRS)) -CFLAGS ?= -std=c99 \ - -Wall -Wextra -Wconversion -CXXFLAGS ?= -Wall -Wextra -Wconversion -std=c++11 +CFLAGS += -Wall -Wextra -Wconversion \ + -std=c11 +CXXFLAGS += -Wall -Wextra -Wconversion \ + -std=c++11 LDFLAGS += -pthread -TESTHASHES = 110000000 +TESTHASHES = 3200000 HASH_SRC := $(sort $(wildcard allcodecs/*.c allcodecs/*.cc)) HASH_OBJ := $(patsubst %.c,%.o,$(HASH_SRC)) @@ -61,11 +62,14 @@ check: test .PHONY: test test: debug @echo "" - @echo "## $(TESTHASHES) hashes with original and 0 threads" + @echo "## $(TESTHASHES) hashes" @time ./collisionsTest --nbh=$(TESTHASHES) @echo "" - @echo "## $(TESTHASHES) hashes with original and 4 threads" - @time ./collisionsTest --nbh=$(TESTHASHES) --threadlog=2 + @echo "## $(TESTHASHES) hashes with filter" + @time ./collisionsTest --nbh=$(TESTHASHES) --filter + @echo "" + @echo "## $(TESTHASHES) hashes with 2 threads" + @time ./collisionsTest --nbh=$(TESTHASHES) --threadlog=1 @echo "" .PHONY: clean diff --git a/deps/xxHash/tests/collisions/hashes.h b/deps/xxHash/tests/collisions/hashes.h index 0b7223d9f..7a648421f 100644 --- a/deps/xxHash/tests/collisions/hashes.h +++ b/deps/xxHash/tests/collisions/hashes.h @@ -1,7 +1,7 @@ /* * List of hashes for the brute force collision tester * Part of xxHash project - * Copyright (C) 2019-2020 Yann Collet + * Copyright (C) 2019-2021 Yann Collet * * GPL v2 License * diff --git a/deps/xxHash/tests/collisions/main.c b/deps/xxHash/tests/collisions/main.c index 3cdf5b4e4..30aee4a4f 100644 --- a/deps/xxHash/tests/collisions/main.c +++ b/deps/xxHash/tests/collisions/main.c @@ -1,7 +1,7 @@ /* * Brute force collision tester for 64-bit hashes * Part of the xxHash project - * Copyright (C) 2019-2020 Yann Collet + * Copyright (C) 2019-2021 Yann Collet * * GPL v2 License * @@ -54,12 +54,22 @@ #include "sort.hh" /* sort64 */ +#ifdef __MINGW32__ +/* MINGW claims C11 complians, yet doesn't provide aligned_alloc(). + * _aligned_malloc() isn't a good workaround, + * as it seems incompatible with realloc(). + * Let's use malloc() instead, array will not be fully aligned, + * resulting in some performance degradation, but nothing major. + * This policy can be updated once MINGW becomes really C11 compliant. + */ +# define aligned_alloc(a,s) ((void)(a), malloc(s)) +#endif typedef enum { ht32, ht64, ht128 } Htype_e; /* === Debug === */ -#define EXIT(...) { printf(__VA_ARGS__); printf("\n"); exit(1); } +#define EXIT(...) { fprintf(stderr, __VA_ARGS__); fprintf(stderr, "\n"); fflush(NULL); exit(1); } static void hexRaw(const void* buffer, size_t size) { @@ -69,13 +79,7 @@ static void hexRaw(const void* buffer, size_t size) } } -void hexDisp(const void* buffer, size_t size) -{ - hexRaw(buffer, size); - printf("\n"); -} - -static void printHash(const void* table, size_t n, Htype_e htype) +void printHash(const void* table, size_t n, Htype_e htype) { if ((htype == ht64) || (htype == ht32)){ uint64_t const h64 = ((const uint64_t*)table)[n]; @@ -112,7 +116,7 @@ static uint64_t avalanche64(uint64_t h64) return h64; } -static unsigned char randomByte(size_t n) +static unsigned char randomByte(uint64_t n) { uint64_t n64 = avalanche64(n+1); n64 *= prime64_1; @@ -212,7 +216,7 @@ static double Cnm(int n, int m) { assert(n > 0); assert(m > 0); - assert(m <= m); + assert(m <= n); double acc = 1; for (int i=0; i> 3; + size_t const pos = (size_t)(bitID >> 3); unsigned char const mask = (unsigned char)(1 << (bitID & 7)); unsigned char* const p = (unsigned char*)buffer; p[pos] ^= mask; @@ -338,10 +342,14 @@ typedef unsigned char Filter; Filter* create_Filter(int bflog) { assert(bflog < 64 && bflog > 1); - size_t bfsize = (size_t)1 << bflog; - Filter* bf = malloc(bfsize); - assert(((void)"Filter creation failed", bf)); - memset(bf, 0, bfsize); + size_t const bfsize = (size_t)1 << bflog; + size_t const cacheline_size = 64; + Filter* const bf = aligned_alloc(cacheline_size, bfsize); // requires C11 + if (bf==NULL) { + fprintf(stderr, "Filter creation failed (need %zu MB) \n", bfsize >> 20); + exit(1); + } + memset(bf, 0, bfsize); // we want memory to be actually used return bf; } @@ -410,70 +418,82 @@ inline int Filter_check(const Filter* bf, int bflog, uint64_t hash) * Attach hash to 2 slots * return: Nb of potential candidates detected * 0: position not yet occupied - * 2: position previously occupied by a single candidate (at most) - * 1: position already occupied by multiple candidates + * 1: position may be already occupied */ static inline int Filter_insert(Filter* bf, int bflog, uint64_t hash) - { - hash = avalanche64(hash); - unsigned const slot1 = hash & 255; - hash >>= 8; - unsigned const slot2 = hash & 255; - hash >>= 8; +{ + hash = avalanche64(hash); + unsigned const slot1 = hash & 255; + hash >>= 8; + unsigned const slot2 = hash & 255; + hash >>= 8; - size_t const fclmask = ((size_t)1 << (bflog-6)) - 1; - size_t const cacheLineNb = hash & fclmask; + size_t const fclmask = ((size_t)1 << (bflog-6)) - 1; + size_t const cacheLineNb = (size_t)hash & fclmask; - size_t const pos1 = (cacheLineNb << 6) + (slot1 >> 2); - unsigned const shift1 = (slot1 & 3) * 2; - unsigned const ex1 = (bf[pos1] >> shift1) & 3; + size_t const pos1 = (cacheLineNb << 6) + (slot1 >> 3); + unsigned const shift1 = slot1 & 7; + unsigned const bit1 = 1U << shift1; + unsigned present1 = bf[pos1] & bit1; - size_t const pos2 = (cacheLineNb << 6) + (slot2 >> 2); - unsigned const shift2 = (slot2 & 3) * 2; - unsigned const ex2 = (bf[pos2] >> shift2) & 3; + size_t const pos2 = (cacheLineNb << 6) + (slot2 >> 3); + unsigned const shift2 = slot2 & 7; + unsigned const bit2 = 1U << shift2; + unsigned present2 = bf[pos2] & bit2; - unsigned const existing = MIN(ex1, ex2); + unsigned const maybePresent = (present1 >> shift1) & (present2 >> shift2); + present1 &= -maybePresent; + present2 &= -maybePresent; - static const int addCandidates[4] = { 0, 2, 1, 1 }; - static const unsigned nextValue[4] = { 1, 2, 3, 3 }; + // Write presence + bf[pos1 + 32] |= (Filter)present1; + bf[pos2 + 32] |= (Filter)present2; + bf[pos1] |= (Filter)bit1; + bf[pos2] |= (Filter)bit2; - bf[pos1] &= (Filter)(~(3 << shift1)); /* erase previous value */ - bf[pos1] |= (Filter)(MAX(ex1, nextValue[existing]) << shift1); - bf[pos2] |= (Filter)(MAX(ex2, nextValue[existing]) << shift2); + return (int)maybePresent; +} - return addCandidates[existing]; - } +static Filter* Filter_reduce(Filter* bf, int bflog) +{ + assert(6 < bflog && bflog < 64); + size_t const nbLines = (size_t)1 << (bflog - 6); + for (size_t lineNb = 0; lineNb < nbLines; lineNb++) { + memcpy(bf + lineNb*32, bf + lineNb*64 + 32, 32); + } + return realloc(bf, nbLines << 5); +} /* * Check if provided 64-bit hash is a collision candidate - * Requires the slot to be occupied by at least 2 candidates. + * Requires both bit positions to be set. * return >0 if hash is a collision candidate * 0 otherwise (slot unoccupied, or only one candidate) * note: unoccupied slots should not happen in this algorithm, * since all hashes are supposed to have been inserted at least once. */ static inline int Filter_check(const Filter* bf, int bflog, uint64_t hash) - { - hash = avalanche64(hash); - unsigned const slot1 = hash & 255; - hash >>= 8; - unsigned const slot2 = hash & 255; - hash >>= 8; +{ + hash = avalanche64(hash); + unsigned const slot1 = hash & 255; + hash >>= 8; + unsigned const slot2 = hash & 255; + hash >>= 8; - size_t const fclmask = ((size_t)1 << (bflog-6)) - 1; - size_t const cacheLineNb = hash & fclmask; + size_t const fclmask = ((size_t)1 << (bflog-6)) - 1; + size_t const lineNb = (size_t)hash & fclmask; - size_t const pos1 = (cacheLineNb << 6) + (slot1 >> 2); - unsigned const shift1 = (slot1 & 3) * 2; - unsigned const ex1 = (bf[pos1] >> shift1) & 3; + size_t const pos1 = (lineNb << 5) + (slot1 >> 3); + unsigned const shift1 = slot1 & 7; + unsigned const present1 = (bf[pos1] >> shift1) & 1; - size_t const pos2 = (cacheLineNb << 6) + (slot2 >> 2); - unsigned const shift2 = (slot2 & 3) * 2; - unsigned const ex2 = (bf[pos2] >> shift2) & 3; + size_t const pos2 = (lineNb << 5) + (slot2 >> 3); + unsigned const shift2 = slot2 & 7; + unsigned const present2 = (bf[pos2] >> shift2) & 1; - return (ex1 >= 2) && (ex2 >= 2); - } + return (int)(present1 & present2); +} #endif // FILTER_1_PROBE @@ -673,7 +693,7 @@ static size_t search_collisions( /* === filter hashes (optional) === */ Filter* bf = NULL; - uint64_t nbPresents = totalH; + uint64_t maxNbH = totalH; if (filter) { time_t const filterTBegin = time(NULL); @@ -681,10 +701,9 @@ static size_t search_collisions( bf = create_Filter(bflog); if (!bf) EXIT("not enough memory for filter"); - DISPLAY(" Generate %llu hashes from samples of %u bytes \n", (unsigned long long)totalH, (unsigned)sampleSize); - nbPresents = 0; + maxNbH = 0; for (uint64_t n=0; n < totalH; n++) { if (display && ((n&0xFFFFF) == 1) ) @@ -694,10 +713,10 @@ static size_t search_collisions( UniHash const h = hfunction(sf->buffer, sampleSize); if ((h.h64 & hMask) != hSelector) continue; - nbPresents += (uint64_t)Filter_insert(bf, bflog, h.h64); + maxNbH += 2 * (uint64_t)Filter_insert(bf, bflog, h.h64); } - if (nbPresents==0) { + if (maxNbH==0) { DISPLAY(" Analysis completed: No collision detected \n"); if (param.resultPtr) param.resultPtr->nbCollisions = 0; free_Filter(bf); @@ -707,16 +726,19 @@ static size_t search_collisions( { double const filterDelay = difftime(time(NULL), filterTBegin); DISPLAY(" Generation and filter completed in %s, detected up to %llu candidates \n", - displayDelay(filterDelay), (unsigned long long) nbPresents); - } } + displayDelay(filterDelay), (unsigned long long) maxNbH); + } + bf = Filter_reduce(bf, bflog); + if (bf == NULL) EXIT("filter reduction failed"); + } /* === store hash candidates: duplicates will be present here === */ time_t const storeTBegin = time(NULL); size_t const hashByteSize = (htype == ht128) ? 16 : 8; - size_t const tableSize = (nbPresents+1) * hashByteSize; - assert(tableSize > nbPresents); /* check tableSize calculation overflow */ + size_t const tableSize = (size_t)((maxNbH+1) * hashByteSize); + assert(tableSize > maxNbH); /* check tableSize calculation overflow */ DISPLAY(" Storing hash candidates (%i MB) \n", (int)(tableSize >> 20)); /* Generate and store hashes */ @@ -733,15 +755,16 @@ static size_t search_collisions( if (filter) { if (Filter_check(bf, bflog, h.h64)) { - assert(nbCandidates < nbPresents); + //printf("found %zu candidates / %llu generated \n", nbCandidates, n); + assert(nbCandidates < maxNbH); addHashCandidate(hashCandidates, h, htype, nbCandidates++); } } else { - assert(nbCandidates < nbPresents); + assert(nbCandidates < maxNbH); addHashCandidate(hashCandidates, h, htype, nbCandidates++); } } - if (nbCandidates < nbPresents) { + if (nbCandidates < maxNbH) { /* Try to mitigate gnuc_quicksort behavior, by reducing allocated memory, * since gnuc_quicksort uses a lot of additional memory for mergesort */ void* const checkPtr = realloc(hashCandidates, nbCandidates * hashByteSize); @@ -785,11 +808,13 @@ static size_t search_collisions( size_t collisions = 0; for (size_t n=1; n nbCandidates * 100) /* within range for meaningfull collision analysis results */ + if ( (nbSlots > nbCandidates * 100) /* within range for meaningful collision analysis results */ && (expectedCollisions > 18.0) ) { int const rShift = hashBits - nbHBits; size_t HBits_collisions = 0; @@ -839,6 +864,7 @@ static size_t search_collisions( #if defined(__MACH__) || defined(__linux__) + #include static size_t getProcessMemUsage(int children) { @@ -847,8 +873,9 @@ static size_t getProcessMemUsage(int children) return (size_t)stats.ru_maxrss; return 0; } + #else -static size_t getProcessMemUsage(int ignore) { return 0; } +static size_t getProcessMemUsage(int ignore) { (void)ignore; return 0; } #endif void time_collisions(searchCollisions_parameters param) @@ -985,7 +1012,7 @@ int bad_argument(const char* exeName) int main(int argc, const char** argv) { - if (sizeof(size_t) < 8) return 1; // cannot work on systems without ability to allocate objects >= 4 GB + printf(" *** Collision tester for 64+ bit hashes *** \n\n"); assert(argc > 0); const char* const exeName = argv[0]; @@ -1031,11 +1058,10 @@ int main(int argc, const char** argv) if (bflog == 0) bflog = highestBitSet(totalH) + 1; /* auto-size filter */ if (!filter) bflog = -1; // disable filter - if (sizeof(size_t) < 8) - EXIT("This program has not been validated on architectures other than " - "64bit \n"); + if (sizeof(size_t) < 8) { + printf("warning: in 32-bit mode, the program is more likely going to lack address space \n"); + } - printf(" *** Collision tester for 64+ bit hashes *** \n\n"); printf("Testing %s algorithm (%i-bit) \n", hname, hwidth); printf("This program will allocate a lot of memory,\n"); printf("generate %llu %i-bit hashes from samples of %u bytes, \n", @@ -1074,9 +1100,9 @@ int main(int argc, const char** argv) time_t const programTBegin = time(NULL); POOL_ctx* const pt = POOL_create((size_t)nbThreads, 1); if (!pt) EXIT("not enough memory for threads"); - searchCollisions_results* const MTresults = calloc (sizeof(searchCollisions_results), (size_t)nbThreads); + searchCollisions_results* const MTresults = calloc ((size_t)nbThreads, sizeof(searchCollisions_results)); if (!MTresults) EXIT("not enough memory"); - searchCollisions_parameters* const MTparams = calloc (sizeof(searchCollisions_parameters), (size_t)nbThreads); + searchCollisions_parameters* const MTparams = calloc ((size_t)nbThreads, sizeof(searchCollisions_parameters)); if (!MTparams) EXIT("not enough memory"); /* distribute jobs */ diff --git a/deps/xxHash/tests/collisions/pool.c b/deps/xxHash/tests/collisions/pool.c index c0eaefd47..e6f2b797c 100644 --- a/deps/xxHash/tests/collisions/pool.c +++ b/deps/xxHash/tests/collisions/pool.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2016-2020 Yann Collet, Facebook, Inc. + * Copyright (C) 2016-2021 Yann Collet, Facebook, Inc. * All rights reserved. * * This source code is licensed under both the BSD-style license (found in the diff --git a/deps/xxHash/tests/collisions/pool.h b/deps/xxHash/tests/collisions/pool.h index 7c5e867d2..0ca7cc785 100644 --- a/deps/xxHash/tests/collisions/pool.h +++ b/deps/xxHash/tests/collisions/pool.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016-2020 Yann Collet, Facebook, Inc. + * Copyright (c) 2016-2021 Yann Collet, Facebook, Inc. * All rights reserved. * * This source code is licensed under both the BSD-style license (found in the diff --git a/deps/xxHash/tests/collisions/sort.cc b/deps/xxHash/tests/collisions/sort.cc index 237a114fc..c0cacda29 100644 --- a/deps/xxHash/tests/collisions/sort.cc +++ b/deps/xxHash/tests/collisions/sort.cc @@ -1,6 +1,6 @@ /* * sort.cc - C++ sort functions - * Copyright (C) 2019-2020 Yann Collet + * Copyright (C) 2019-2021 Yann Collet * GPL v2 License * * This program is free software; you can redistribute it and/or modify diff --git a/deps/xxHash/tests/collisions/sort.hh b/deps/xxHash/tests/collisions/sort.hh index 278ce05c6..16374c1b9 100644 --- a/deps/xxHash/tests/collisions/sort.hh +++ b/deps/xxHash/tests/collisions/sort.hh @@ -1,6 +1,6 @@ /* * sort.hh - headers for C++ sort functions - * Copyright (C) 2019-2020 Yann Collet + * Copyright (C) 2019-2021 Yann Collet * GPL v2 License * * This program is free software; you can redistribute it and/or modify diff --git a/deps/xxHash/tests/filename-escape.sh b/deps/xxHash/tests/filename-escape.sh new file mode 100644 index 000000000..7c52e7ea1 --- /dev/null +++ b/deps/xxHash/tests/filename-escape.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +# Exit immediately if any command fails. +# https://stackoverflow.com/a/2871034 +set -euxo pipefail + +echo filename-escape-test-string > $'filename-escape-foo\nbar' + +./xxhsum $'filename-escape-foo\nbar' | tee filename-escape-xxh64.txt +cat filename-escape-xxh64.txt +./xxhsum -c filename-escape-xxh64.txt +hexdump -C filename-escape-xxh64.txt + +./xxhsum --tag $'filename-escape-foo\nbar' | tee filename-escape-xxh64-tag.txt +cat filename-escape-xxh64-tag.txt +./xxhsum -c filename-escape-xxh64-tag.txt +hexdump -C filename-escape-xxh64-tag.txt + +rm filename-escape-xxh64-tag.txt +rm filename-escape-xxh64.txt +rm $'filename-escape-foo\nbar' diff --git a/deps/xxHash/tests/multiInclude.c b/deps/xxHash/tests/multiInclude.c index 7d2bc8a9f..8912771dd 100644 --- a/deps/xxHash/tests/multiInclude.c +++ b/deps/xxHash/tests/multiInclude.c @@ -30,29 +30,38 @@ /* Normal include, gives access to public symbols */ #include "../xxhash.h" +/* Multiple consecutive inclusions are handled properly. */ +#include "../xxhash.h" + /* * Advanced include, gives access to experimental symbols - * This test ensure that xxhash.h can be included multiple times and in any - * order. This order is more difficult: Without care, the declaration of - * experimental symbols could be skipped. + * This test ensures that xxhash.h can be included multiple times + * and in any order. The tested order is more difficult: + * without care, the declaration of experimental symbols could be skipped. */ #define XXH_STATIC_LINKING_ONLY #include "../xxhash.h" /* - * Inlining: Re-define all identifiers, keep them private to the unit. + * Inlining: redefine all identifiers, keep them private to the unit. * Note: Without specific efforts, the identifier names would collide. * - * To be linked with and without xxhash.o to test the symbol's presence and - * naming collisions. + * To be linked with and without xxhash.o + * to test the symbol's presence and naming collisions. + */ +#define XXH_INLINE_ALL +#include "../xxhash.h" + +/* + * Multiple consecutive inclusions with XXH_INLINE_ALL are handled properly. */ #define XXH_INLINE_ALL #include "../xxhash.h" -int main(void) +void hash_advanced(void) { - XXH3_state_t state; /* part of experimental API */ + XXH3_state_t state; /* this type is part of experimental API */ XXH3_64bits_reset(&state); const char input[] = "Hello World !"; @@ -61,6 +70,9 @@ int main(void) XXH64_hash_t const h = XXH3_64bits_digest(&state); printf("hash '%s': %08x%08x \n", input, (unsigned)(h >> 32), (unsigned)h); - - return 0; +} + +int main(void) +{ + hash_advanced(); } diff --git a/deps/xxHash/tests/sanity_test.c b/deps/xxHash/tests/sanity_test.c new file mode 100644 index 000000000..3e3d4f161 --- /dev/null +++ b/deps/xxHash/tests/sanity_test.c @@ -0,0 +1,803 @@ +// xxHash/tests/sanity_test.c +// SPDX-License-Identifier: GPL-2.0-only +// +// Building +// ======== +// +// cc sanity_test.c && ./a.out +// +/* +notes or changes: + +main() +------ + +- All test methods (XXH32, XXH64, ...) are context free. + - It means that there's no restriction by order of tests and # of test. (Ready for multi-threaded / distributed test) + - To achieve it, some test has dedicated 'randSeed' to decouple dependency between tests. + - Note that for() loop is not ready for distributed test. + - randSeed still needs to be computed step by step in the for() loop so far. + +*/ +#define XXH_STATIC_LINKING_ONLY +#define XXH_IMPLEMENTATION /* access definitions */ +#include "../cli/xsum_arch.h" +#include "../cli/xsum_os_specific.h" +#include "../cli/xsum_output.h" +#include "../cli/xsum_output.c" +#define XSUM_NO_MAIN 1 +#include "../cli/xsum_os_specific.h" +#include "../cli/xsum_os_specific.c" +#include "../xxhash.h" +#include "sanity_test_vectors.h" + +#include /* assert */ + +/* use #define to make them constant, required for initialization */ +#define PRIME32 2654435761U +#define PRIME64 11400714785074694797ULL + +#define SANITY_BUFFER_SIZE (4096 + 64 + 1) + + +/**/ +static int abortByError = 1; + + +/**/ +static void abortSanityTest(void) { + /* ??? : Should we show this message? */ + XSUM_log("\rNote: If you modified the hash functions, make sure to either update tests/sanity_test_vectors.h with the following command\n" + "\r make -C tests sanity_test_vectors.h\n"); + XSUM_log("\rAbort.\n"); + exit(1); +} + +/* TODO : Share this function with sanity_check.c and xsum_sanity_check.c */ +/* + * Fills a test buffer with pseudorandom data. + * + * This is used in the sanity check - its values must not be changed. + */ +static void fillTestBuffer(XSUM_U8* buffer, size_t bufferLenInBytes) +{ + XSUM_U64 byteGen = PRIME32; + size_t i; + + assert(buffer != NULL); + + for (i = 0; i < bufferLenInBytes; ++i) { + buffer[i] = (XSUM_U8)(byteGen>>56); + byteGen *= PRIME64; + } +} + + +/* TODO : Share this function with sanity_check.c and xsum_sanity_check.c */ +/* + * Create (malloc) and fill buffer with pseudorandom data for sanity check. + * + * Use releaseSanityBuffer() to delete the buffer. + */ +static XSUM_U8* createSanityBuffer(size_t bufferLenInBytes) +{ + XSUM_U8* buffer = (XSUM_U8*) malloc(bufferLenInBytes); + assert(buffer != NULL); + fillTestBuffer(buffer, bufferLenInBytes); + return buffer; +} + + +/* TODO : Share this function with sanity_check.c and xsum_sanity_check.c */ +/* + * Delete (free) the buffer which has been genereated by createSanityBuffer() + */ +static void releaseSanityBuffer(XSUM_U8* buffer) +{ + assert(buffer != NULL); + free(buffer); +} + + +/* TODO : Share this function with xsum_sanity_check.c */ +/**/ +static void checkResult32(XXH32_hash_t r1, XXH32_hash_t r2, const char* testName, size_t testNb, size_t lineNb) +{ + if(r1 == r2) { + return; + } + + XSUM_log("\rError: %s #%zd, line #%zd: Sanity check failed!\n", testName, testNb, lineNb); + XSUM_log("\rGot 0x%08X, expected 0x%08X.\n", (unsigned)r1, (unsigned)r2); + + if(abortByError) { + abortSanityTest(); + } +} + + +/* TODO : Share this function with xsum_sanity_check.c */ +/**/ +static void checkResult64(XXH64_hash_t r1, XXH64_hash_t r2, const char* testName, size_t testNb, size_t lineNb) +{ + if(r1 == r2) { + return; + } + + XSUM_log("\rError: %s #%zd, line #%zd: Sanity check failed!\n", testName, testNb, lineNb); + XSUM_log("\rGot 0x%08X%08XULL, expected 0x%08X%08XULL.\n", + (unsigned)(r1>>32), (unsigned)r1, (unsigned)(r2>>32), (unsigned)r2); + + if(abortByError) { + abortSanityTest(); + } +} + + +/* TODO : Share this function with xsum_sanity_check.c */ +/**/ +static void checkResult128(XXH128_hash_t r1, XXH128_hash_t r2, const char* testName, size_t testNb, size_t lineNb) +{ + if ((r1.low64 == r2.low64) && (r1.high64 == r2.high64)) { + return; + } + + XSUM_log("\rError: %s #%zd, line #%zd: Sanity check failed!\n", testName, testNb, lineNb); + XSUM_log("\rGot { 0x%08X%08XULL, 0x%08X%08XULL }, expected { 0x%08X%08XULL, 0x%08X%08XULL } \n", + (unsigned)(r1.low64>>32), (unsigned)r1.low64, (unsigned)(r1.high64>>32), (unsigned)r1.high64, + (unsigned)(r2.low64>>32), (unsigned)r2.low64, (unsigned)(r2.high64>>32), (unsigned)r2.high64 ); + + if(abortByError) { + abortSanityTest(); + } +} + + +/* TODO : Share this function with xsum_sanity_check.c */ +/**/ +static void checkResultTestDataSample(const XSUM_U8* r1, const XSUM_U8* r2, const char* testName, size_t testNb, size_t lineNb) +{ + if(memcmp(r1, r2, SECRET_SAMPLE_NBBYTES) == 0) { + return; + } + + XSUM_log("\rError: %s #%zd, line #%zd: Sanity check failed!\n", testName, testNb, lineNb); + XSUM_log("\rGot { 0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%02X }, expected { 0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%02X } \n", + r1[0], r1[1], r1[2], r1[3], r1[4], + r2[0], r2[1], r2[2], r2[3], r2[4] ); + + if(abortByError) { + abortSanityTest(); + } +} + + +/* TODO : Share this function with xsum_sanity_check.c */ +/**/ +static void testXXH32( + const void* data, + const XSUM_testdata32_t* testData, + const char* testName, + size_t testNb +) { + size_t const len = testData->len; + XSUM_U32 const seed = testData->seed; + XSUM_U32 const Nresult = testData->Nresult; + + XXH32_state_t * const state = XXH32_createState(); + + if (len == 0) { + data = NULL; + } else { + assert(data != NULL); + } + + assert(state != NULL); + + checkResult32(XXH32(data, len, seed), Nresult, testName, testNb, __LINE__); + + (void)XXH32_reset(state, seed); + (void)XXH32_update(state, data, len); + checkResult32(XXH32_digest(state), Nresult, testName, testNb, __LINE__); + + (void)XXH32_reset(state, seed); + { + size_t pos; + for (pos = 0; pos < len; ++pos) { + (void)XXH32_update(state, ((const char*)data)+pos, 1); + } + } + checkResult32(XXH32_digest(state), Nresult, testName, testNb, __LINE__); + + XXH32_freeState(state); +} + + +/* TODO : Share this function with xsum_sanity_check.c */ +/**/ +static void testXXH64( + const void* data, + const XSUM_testdata64_t* testData, + const char* testName, + size_t testNb +) +{ + size_t const len = (size_t)testData->len; + XSUM_U64 const seed = testData->seed; + XSUM_U64 const Nresult = testData->Nresult; + + XXH64_state_t * const state = XXH64_createState(); + + if (len == 0) { + data = NULL; + } else { + assert(data != NULL); + } + + assert(state != NULL); + + checkResult64(XXH64(data, len, seed), Nresult, testName, testNb, __LINE__); + + (void)XXH64_reset(state, seed); + (void)XXH64_update(state, data, len); + checkResult64(XXH64_digest(state), Nresult, testName, testNb, __LINE__); + + (void)XXH64_reset(state, seed); + { + size_t pos; + for (pos = 0; pos < len; ++pos) { + (void)XXH64_update(state, ((const char*)data)+pos, 1); + } + } + checkResult64(XXH64_digest(state), Nresult, testName, testNb, __LINE__); + XXH64_freeState(state); +} + + +/* TODO : Share this function with xsum_sanity_check.c */ +/* + * Used to get "random" (but actually 100% reproducible) lengths for + * XSUM_XXH3_randomUpdate. + */ +static XSUM_U32 SANITY_TEST_rand(XSUM_U64* pRandSeed) +{ + XSUM_U64 seed = *pRandSeed; + seed *= PRIME64; + *pRandSeed = seed; + return (XSUM_U32)(seed >> 40); +} + + +/* TODO : Share this function with xsum_sanity_check.c */ +/**/ +static XSUM_U64 SANITY_TEST_computeRandSeed(size_t step) +{ + XSUM_U64 randSeed = PRIME32; + size_t i = 0; + for(i = 0; i < step; ++i) { + SANITY_TEST_rand(&randSeed); + } + return randSeed; +} + + +/* TODO : Share this definition with xsum_sanity_check.c */ +/* + * Technically, XXH3_64bits_update is identical to XXH3_128bits_update as of + * v0.8.0, but we treat them as separate. + */ +typedef XXH_errorcode (*SANITY_TEST_XXH3_update_t)(XXH3_state_t* state, const void* input, size_t length); + + +/* TODO : Share this function with xsum_sanity_check.c */ +/* + * Runs the passed XXH3_update variant on random lengths. This is to test the + * more complex logic of the update function, catching bugs like this one: + * https://github.com/Cyan4973/xxHash/issues/378 + */ +static void SANITY_TEST_XXH3_randomUpdate( + XXH3_state_t* state, + const void* data, + size_t len, + XSUM_U64* pRandSeed, + SANITY_TEST_XXH3_update_t update_fn +) +{ + size_t p = 0; + while (p < len) { + size_t const modulo = len > 2 ? len : 2; + size_t l = (size_t)(SANITY_TEST_rand(pRandSeed)) % modulo; + if (p + l > len) l = len - p; + (void)update_fn(state, (const char*)data+p, l); + p += l; + } +} + + +/* TODO : Share this function with xsum_sanity_check.c */ +/**/ +static void testXXH3( + const void* data, + const void* secret, + size_t secretSize, + const XSUM_testdata64_t* testData, + XSUM_U64* pRandSeed, + const char* testName, + size_t testNb +) +{ + size_t const len = testData->len; + XSUM_U64 const seed = testData->seed; + XSUM_U64 const Nresult = testData->Nresult; + if (len == 0) { + data = NULL; + } else { + assert(data != NULL); + } + { XSUM_U64 const Dresult = XXH3_64bits_withSeed(data, len, seed); + checkResult64(Dresult, Nresult, testName, testNb, __LINE__); + } + + /* check that the no-seed variant produces same result as seed==0 */ + if (seed == 0) { + XSUM_U64 const Dresult = XXH3_64bits(data, len); + checkResult64(Dresult, Nresult, testName, testNb, __LINE__); + } + + /* check that the combination of + * XXH3_generateSecret_fromSeed() and XXH3_64bits_withSecretandSeed() + * results in exactly the same hash generation as XXH3_64bits_withSeed() */ + { char secretBuffer[XXH3_SECRET_DEFAULT_SIZE+1]; + char* const secretFromSeed = secretBuffer + 1; /* intentional unalignment */ + XXH3_generateSecret_fromSeed(secretFromSeed, seed); + { XSUM_U64 const Dresult = XXH3_64bits_withSecretandSeed(data, len, secretFromSeed, XXH3_SECRET_DEFAULT_SIZE, seed); + checkResult64(Dresult, Nresult, testName, testNb, __LINE__); + } } + + /* check that XXH3_64bits_withSecretandSeed() + * results in exactly the same return value as XXH3_64bits_withSeed() */ + if (len <= XXH3_MIDSIZE_MAX) { + XSUM_U64 const Dresult = XXH3_64bits_withSecretandSeed(data, len, secret, secretSize, seed); + checkResult64(Dresult, Nresult, testName, testNb, __LINE__); + } + + /* streaming API test */ + { XXH3_state_t* const state = XXH3_createState(); + assert(state != NULL); + /* single ingestion */ + (void)XXH3_64bits_reset_withSeed(state, seed); + (void)XXH3_64bits_update(state, data, len); + checkResult64(XXH3_64bits_digest(state), Nresult, testName, testNb, __LINE__); + + /* random ingestion */ + (void)XXH3_64bits_reset_withSeed(state, seed); + SANITY_TEST_XXH3_randomUpdate(state, data, len, pRandSeed, &XXH3_64bits_update); + checkResult64(XXH3_64bits_digest(state), Nresult, testName, testNb, __LINE__); + + /* byte by byte ingestion */ + { size_t pos; + (void)XXH3_64bits_reset_withSeed(state, seed); + for (pos=0; poslen; + XSUM_U64 const Nresult = testData->Nresult; + + if (len == 0) { + data = NULL; + } else { + assert(data != NULL); + } + { XSUM_U64 const Dresult = XXH3_64bits_withSecret(data, len, secret, secretSize); + checkResult64(Dresult, Nresult, testName, testNb, __LINE__); + } + + /* check that XXH3_64bits_withSecretandSeed() + * results in exactly the same return value as XXH3_64bits_withSecret() */ + if (len > XXH3_MIDSIZE_MAX) + { XSUM_U64 const Dresult = XXH3_64bits_withSecretandSeed(data, len, secret, secretSize, 0); + checkResult64(Dresult, Nresult, testName, testNb, __LINE__); + } + + /* streaming API test */ + { XXH3_state_t * const state = XXH3_createState(); + assert(state != NULL); + (void)XXH3_64bits_reset_withSecret(state, secret, secretSize); + (void)XXH3_64bits_update(state, data, len); + checkResult64(XXH3_64bits_digest(state), Nresult, testName, testNb, __LINE__); + + /* random ingestion */ + (void)XXH3_64bits_reset_withSecret(state, secret, secretSize); + SANITY_TEST_XXH3_randomUpdate(state, data, len, pRandSeed, &XXH3_64bits_update); + checkResult64(XXH3_64bits_digest(state), Nresult, testName, testNb, __LINE__); + + /* byte by byte ingestion */ + { size_t pos; + (void)XXH3_64bits_reset_withSecret(state, secret, secretSize); + for (pos=0; pos XXH3_MIDSIZE_MAX) { + /* single ingestion */ + (void)XXH3_64bits_reset_withSecretandSeed(state, secret, secretSize, 0); + (void)XXH3_64bits_update(state, data, len); + checkResult64(XXH3_64bits_digest(state), Nresult, testName, testNb, __LINE__); + } + + XXH3_freeState(state); + } +} + + +/* TODO : Share this function with xsum_sanity_check.c */ +/**/ +static void testXXH128( + const void* data, + const void* secret, + size_t secretSize, + const XSUM_testdata128_t* testData, + XSUM_U64* pRandSeed, + const char* testName, + size_t testNb +) +{ + size_t const len = (size_t)testData->len; + XSUM_U64 const seed = testData->seed; + XXH128_hash_t const Nresult = testData->Nresult; + if (len == 0) { + data = NULL; + } else { + assert(data != NULL); + } + + { XXH128_hash_t const Dresult = XXH3_128bits_withSeed(data, len, seed); + checkResult128(Dresult, Nresult, testName, testNb, __LINE__); + } + + /* check that XXH128() is identical to XXH3_128bits_withSeed() */ + { XXH128_hash_t const Dresult2 = XXH128(data, len, seed); + checkResult128(Dresult2, Nresult, testName, testNb, __LINE__); + } + + /* check that the no-seed variant produces same result as seed==0 */ + if (seed == 0) { + XXH128_hash_t const Dresult = XXH3_128bits(data, len); + checkResult128(Dresult, Nresult, testName, testNb, __LINE__); + } + + /* check that the combination of + * XXH3_generateSecret_fromSeed() and XXH3_128bits_withSecretandSeed() + * results in exactly the same hash generation as XXH3_64bits_withSeed() */ + { char secretBuffer[XXH3_SECRET_DEFAULT_SIZE+1]; + char* const secretFromSeed = secretBuffer + 1; /* intentional unalignment */ + XXH3_generateSecret_fromSeed(secretFromSeed, seed); + { XXH128_hash_t const Dresult = XXH3_128bits_withSecretandSeed(data, len, secretFromSeed, XXH3_SECRET_DEFAULT_SIZE, seed); + checkResult128(Dresult, Nresult, testName, testNb, __LINE__); + } } + + /* check that XXH3_128bits_withSecretandSeed() + * results in exactly the same return value as XXH3_128bits_withSeed() */ + if (len <= XXH3_MIDSIZE_MAX) { + XXH128_hash_t const Dresult = XXH3_128bits_withSecretandSeed(data, len, secret, secretSize, seed); + checkResult128(Dresult, Nresult, testName, testNb, __LINE__); + } + + /* streaming API test */ + { XXH3_state_t * const state = XXH3_createState(); + assert(state != NULL); + + /* single ingestion */ + (void)XXH3_128bits_reset_withSeed(state, seed); + (void)XXH3_128bits_update(state, data, len); + checkResult128(XXH3_128bits_digest(state), Nresult, testName, testNb, __LINE__); + + /* random ingestion */ + (void)XXH3_128bits_reset_withSeed(state, seed); + SANITY_TEST_XXH3_randomUpdate(state, data, len, pRandSeed, &XXH3_128bits_update); + checkResult128(XXH3_128bits_digest(state), Nresult, testName, testNb, __LINE__); + + /* byte by byte ingestion */ + { size_t pos; + (void)XXH3_128bits_reset_withSeed(state, seed); + for (pos=0; poslen; + XXH128_hash_t const Nresult = testData->Nresult; + if (len == 0) { + data = NULL; + } else { + assert(data != NULL); + } + + { XXH128_hash_t const Dresult = XXH3_128bits_withSecret(data, len, secret, secretSize); + checkResult128(Dresult, Nresult, testName, testNb, __LINE__); + } + + /* check that XXH3_128bits_withSecretandSeed() + * results in exactly the same return value as XXH3_128bits_withSecret() */ + if (len > XXH3_MIDSIZE_MAX) + { XXH128_hash_t const Dresult = XXH3_128bits_withSecretandSeed(data, len, secret, secretSize, 0); + checkResult128(Dresult, Nresult, testName, testNb, __LINE__); + } + + /* streaming API test */ + { XXH3_state_t* const state = XXH3_createState(); + assert(state != NULL); + (void)XXH3_128bits_reset_withSecret(state, secret, secretSize); + (void)XXH3_128bits_update(state, data, len); + checkResult128(XXH3_128bits_digest(state), Nresult, testName, testNb, __LINE__); + + /* random ingestion */ + (void)XXH3_128bits_reset_withSecret(state, secret, secretSize); + SANITY_TEST_XXH3_randomUpdate(state, data, len, pRandSeed, &XXH3_128bits_update); + checkResult128(XXH3_128bits_digest(state), Nresult, testName, testNb, __LINE__); + + /* byte by byte ingestion */ + { size_t pos; + (void)XXH3_128bits_reset_withSecret(state, secret, secretSize); + for (pos=0; pos XXH3_MIDSIZE_MAX) { + /* single ingestion */ + (void)XXH3_128bits_reset_withSecretandSeed(state, secret, secretSize, 0); + (void)XXH3_128bits_update(state, data, len); + checkResult128(XXH3_128bits_digest(state), Nresult, testName, testNb, __LINE__); + } + + XXH3_freeState(state); + } +} + + +/* TODO : Share this function with xsum_sanity_check.c */ +/**/ +static void testSecretGenerator( + const void* customSeed, + const XSUM_testdata_sample_t* testData, + const char* testName, + size_t testNb +) +{ + /* TODO : Share this array with sanity_check.c and xsum_sanity_check.c */ + static const int sampleIndex[SECRET_SAMPLE_NBBYTES] = { 0, 62, 131, 191, 241 }; /* position of sampled bytes */ + XSUM_U8 secretBuffer[SECRET_SIZE_MAX] = {0}; + XSUM_U8 samples[SECRET_SAMPLE_NBBYTES]; + int i; + + assert(testData->secretLen <= SECRET_SIZE_MAX); + XXH3_generateSecret(secretBuffer, testData->secretLen, customSeed, testData->seedLen); + for (i=0; ibyte, testName, testNb, __LINE__); +} + + +/**/ +int main(int argc, const char* argv[]) +{ + size_t testCount = 0; + size_t const sanityBufferSizeInBytes = SANITY_BUFFER_SIZE; + XSUM_U8* const sanityBuffer = createSanityBuffer(sanityBufferSizeInBytes); + const void* const secret = sanityBuffer + 7; + size_t const secretSize = XXH3_SECRET_SIZE_MIN + 11; + assert(sanityBufferSizeInBytes >= 7 + secretSize); + (void) argc; + (void) argv; + + { + /* XXH32 */ + size_t const n = sizeof(XSUM_XXH32_testdata) / sizeof(XSUM_XXH32_testdata[0]); + size_t i; + for (i = 0; i < n; ++i, ++testCount) { + testXXH32( + sanityBuffer, + &XSUM_XXH32_testdata[i], + "XSUM_XXH32_testdata", + i + ); + } + } + + { + /* XXH64 */ + size_t const n = sizeof(XSUM_XXH64_testdata) / sizeof(XSUM_XXH64_testdata[0]); + size_t i; + for (i = 0; i < n; ++i, ++testCount) { + testXXH64( + sanityBuffer, + &XSUM_XXH64_testdata[i], + "XSUM_XXH64_testdata", + i + ); + } + } + + { + /* XXH3_64bits, seeded */ + size_t const randCount = 0; + XSUM_U64 randSeed = SANITY_TEST_computeRandSeed(randCount); + size_t const n = sizeof(XSUM_XXH3_testdata) / sizeof(XSUM_XXH3_testdata[0]); + size_t i; + for (i = 0; i < n; ++i, ++testCount) { + testXXH3( + sanityBuffer, + secret, + secretSize, + &XSUM_XXH3_testdata[i], + &randSeed, + "XSUM_XXH3_testdata", + i + ); + } + } + + { + /* XXH3_64bits, custom secret */ + size_t const randCount = 22730; + XSUM_U64 randSeed = SANITY_TEST_computeRandSeed(randCount); + size_t const n = sizeof(XSUM_XXH3_withSecret_testdata) / sizeof(XSUM_XXH3_withSecret_testdata[0]); + size_t i; + for (i = 0; i < n; ++i, ++testCount) { + testXXH3_withSecret( + sanityBuffer, + secret, + secretSize, + &XSUM_XXH3_withSecret_testdata[i], + &randSeed, + "XSUM_XXH3_withSecret_testdata", + i + ); + testCount++; + } + } + + { + /* XXH128 */ + size_t const randCount = 34068; + XSUM_U64 randSeed = SANITY_TEST_computeRandSeed(randCount); + size_t const n = (sizeof(XSUM_XXH128_testdata)/sizeof(XSUM_XXH128_testdata[0])); + size_t i; + for (i = 0; i < n; ++i, ++testCount) { + testXXH128( + sanityBuffer, + secret, + secretSize, + &XSUM_XXH128_testdata[i], + &randSeed, + "XSUM_XXH128_testdata", + i + ); + } + } + + { + /* XXH128 with custom Secret */ + size_t const randCount = 68019; + XSUM_U64 randSeed = SANITY_TEST_computeRandSeed(randCount); + size_t const n = (sizeof(XSUM_XXH128_withSecret_testdata)/sizeof(XSUM_XXH128_withSecret_testdata[0])); + size_t i; + for (i = 0; i < n; ++i, ++testCount) { + testXXH128_withSecret( + sanityBuffer, + secret, + secretSize, + &XSUM_XXH128_withSecret_testdata[i], + &randSeed, + "XSUM_XXH128_withSecret_testdata", + i + ); + } + } + + { + /* secret generator */ + size_t const n = sizeof(XSUM_XXH3_generateSecret_testdata) / sizeof(XSUM_XXH3_generateSecret_testdata[0]); + size_t i; + for (i = 0; i < n; ++i, ++testCount) { + assert(XSUM_XXH3_generateSecret_testdata[i].seedLen <= SANITY_BUFFER_SIZE); + testSecretGenerator( + sanityBuffer, + &XSUM_XXH3_generateSecret_testdata[i], + "XSUM_XXH3_generateSecret_testdata", + i + ); + } + } + + releaseSanityBuffer(sanityBuffer); + + XSUM_log("\rOK. (passes %zd tests)\n", testCount); + + return EXIT_SUCCESS; +} diff --git a/deps/xxHash/tests/sanity_test_vectors.h b/deps/xxHash/tests/sanity_test_vectors.h new file mode 100644 index 000000000..a5025a2d3 --- /dev/null +++ b/deps/xxHash/tests/sanity_test_vectors.h @@ -0,0 +1,45832 @@ +typedef struct { + XSUM_U32 len; + XSUM_U32 seed; + XSUM_U32 Nresult; +} XSUM_testdata32_t; + +typedef struct { + XSUM_U32 len; + XSUM_U64 seed; + XSUM_U64 Nresult; +} XSUM_testdata64_t; + +typedef struct { + XSUM_U32 len; + XSUM_U64 seed; + XXH128_hash_t Nresult; +} XSUM_testdata128_t; + +#ifndef SECRET_SAMPLE_NBBYTES +#define SECRET_SAMPLE_NBBYTES 5 +#endif + +typedef struct { + XSUM_U32 seedLen; + XSUM_U32 secretLen; + XSUM_U8 byte[SECRET_SAMPLE_NBBYTES]; +} XSUM_testdata_sample_t; + +#ifndef SECRET_SIZE_MAX +#define SECRET_SIZE_MAX 9867 +#endif +static const XSUM_testdata32_t XSUM_XXH32_testdata[] = { + { 0, 0x00000000U, 0x02CC5D05U }, /* XSUM_XXH32_testdata[0] */ + { 0, 0x9E3779B1U, 0x36B78AE7U }, /* XSUM_XXH32_testdata[1] */ + { 1, 0x00000000U, 0xCF65B03EU }, /* XSUM_XXH32_testdata[2] */ + { 1, 0x9E3779B1U, 0xB4545AA4U }, /* XSUM_XXH32_testdata[3] */ + { 2, 0x00000000U, 0x1151BEE4U }, /* XSUM_XXH32_testdata[4] */ + { 2, 0x9E3779B1U, 0x1EDB879AU }, /* XSUM_XXH32_testdata[5] */ + { 3, 0x00000000U, 0xC23884F5U }, /* XSUM_XXH32_testdata[6] */ + { 3, 0x9E3779B1U, 0x1A269947U }, /* XSUM_XXH32_testdata[7] */ + { 4, 0x00000000U, 0xA9DE7CE9U }, /* XSUM_XXH32_testdata[8] */ + { 4, 0x9E3779B1U, 0x2BAAFE83U }, /* XSUM_XXH32_testdata[9] */ + { 5, 0x00000000U, 0xEB1734BBU }, /* XSUM_XXH32_testdata[10] */ + { 5, 0x9E3779B1U, 0x5874DAB0U }, /* XSUM_XXH32_testdata[11] */ + { 6, 0x00000000U, 0x659F0C97U }, /* XSUM_XXH32_testdata[12] */ + { 6, 0x9E3779B1U, 0x0BCF25C5U }, /* XSUM_XXH32_testdata[13] */ + { 7, 0x00000000U, 0x5E1056CDU }, /* XSUM_XXH32_testdata[14] */ + { 7, 0x9E3779B1U, 0x3ED9D3FCU }, /* XSUM_XXH32_testdata[15] */ + { 8, 0x00000000U, 0xA3F6F44BU }, /* XSUM_XXH32_testdata[16] */ + { 8, 0x9E3779B1U, 0xC2A8E239U }, /* XSUM_XXH32_testdata[17] */ + { 9, 0x00000000U, 0xFFB82A24U }, /* XSUM_XXH32_testdata[18] */ + { 9, 0x9E3779B1U, 0xD35632C6U }, /* XSUM_XXH32_testdata[19] */ + { 10, 0x00000000U, 0xB1E5032EU }, /* XSUM_XXH32_testdata[20] */ + { 10, 0x9E3779B1U, 0x18679D60U }, /* XSUM_XXH32_testdata[21] */ + { 11, 0x00000000U, 0x0CF2F032U }, /* XSUM_XXH32_testdata[22] */ + { 11, 0x9E3779B1U, 0xE0E99838U }, /* XSUM_XXH32_testdata[23] */ + { 12, 0x00000000U, 0xE89B5F9BU }, /* XSUM_XXH32_testdata[24] */ + { 12, 0x9E3779B1U, 0x05A6C4B5U }, /* XSUM_XXH32_testdata[25] */ + { 13, 0x00000000U, 0xC537DE02U }, /* XSUM_XXH32_testdata[26] */ + { 13, 0x9E3779B1U, 0x1298ADD0U }, /* XSUM_XXH32_testdata[27] */ + { 14, 0x00000000U, 0x1208E7E2U }, /* XSUM_XXH32_testdata[28] */ + { 14, 0x9E3779B1U, 0x6AF1D1FEU }, /* XSUM_XXH32_testdata[29] */ + { 15, 0x00000000U, 0x6B859E14U }, /* XSUM_XXH32_testdata[30] */ + { 15, 0x9E3779B1U, 0xAD53090DU }, /* XSUM_XXH32_testdata[31] */ + { 16, 0x00000000U, 0x93BA3759U }, /* XSUM_XXH32_testdata[32] */ + { 16, 0x9E3779B1U, 0xA94FC1E1U }, /* XSUM_XXH32_testdata[33] */ + { 17, 0x00000000U, 0x89FDC23EU }, /* XSUM_XXH32_testdata[34] */ + { 17, 0x9E3779B1U, 0xC9910739U }, /* XSUM_XXH32_testdata[35] */ + { 18, 0x00000000U, 0x16B53F56U }, /* XSUM_XXH32_testdata[36] */ + { 18, 0x9E3779B1U, 0x5E88116EU }, /* XSUM_XXH32_testdata[37] */ + { 19, 0x00000000U, 0x858FC8EAU }, /* XSUM_XXH32_testdata[38] */ + { 19, 0x9E3779B1U, 0x63826A8FU }, /* XSUM_XXH32_testdata[39] */ + { 20, 0x00000000U, 0x38374A35U }, /* XSUM_XXH32_testdata[40] */ + { 20, 0x9E3779B1U, 0xC691A55AU }, /* XSUM_XXH32_testdata[41] */ + { 21, 0x00000000U, 0x646A88D6U }, /* XSUM_XXH32_testdata[42] */ + { 21, 0x9E3779B1U, 0x9668CDABU }, /* XSUM_XXH32_testdata[43] */ + { 22, 0x00000000U, 0xB5CCC747U }, /* XSUM_XXH32_testdata[44] */ + { 22, 0x9E3779B1U, 0x96F6C6A1U }, /* XSUM_XXH32_testdata[45] */ + { 23, 0x00000000U, 0xCC7B3099U }, /* XSUM_XXH32_testdata[46] */ + { 23, 0x9E3779B1U, 0x174910FEU }, /* XSUM_XXH32_testdata[47] */ + { 24, 0x00000000U, 0xA6276FF0U }, /* XSUM_XXH32_testdata[48] */ + { 24, 0x9E3779B1U, 0x7AD49212U }, /* XSUM_XXH32_testdata[49] */ + { 25, 0x00000000U, 0x221B959BU }, /* XSUM_XXH32_testdata[50] */ + { 25, 0x9E3779B1U, 0xA1899908U }, /* XSUM_XXH32_testdata[51] */ + { 26, 0x00000000U, 0x3F2F5961U }, /* XSUM_XXH32_testdata[52] */ + { 26, 0x9E3779B1U, 0x6A936E6BU }, /* XSUM_XXH32_testdata[53] */ + { 27, 0x00000000U, 0x9501BDDDU }, /* XSUM_XXH32_testdata[54] */ + { 27, 0x9E3779B1U, 0x61A4E18BU }, /* XSUM_XXH32_testdata[55] */ + { 28, 0x00000000U, 0xDA976167U }, /* XSUM_XXH32_testdata[56] */ + { 28, 0x9E3779B1U, 0x261F77CFU }, /* XSUM_XXH32_testdata[57] */ + { 29, 0x00000000U, 0x249CC065U }, /* XSUM_XXH32_testdata[58] */ + { 29, 0x9E3779B1U, 0xC8EC8904U }, /* XSUM_XXH32_testdata[59] */ + { 30, 0x00000000U, 0x36BC3693U }, /* XSUM_XXH32_testdata[60] */ + { 30, 0x9E3779B1U, 0xA2800E16U }, /* XSUM_XXH32_testdata[61] */ + { 31, 0x00000000U, 0x5F40E562U }, /* XSUM_XXH32_testdata[62] */ + { 31, 0x9E3779B1U, 0x5C0C3350U }, /* XSUM_XXH32_testdata[63] */ + { 32, 0x00000000U, 0xD89829ECU }, /* XSUM_XXH32_testdata[64] */ + { 32, 0x9E3779B1U, 0xA5C44467U }, /* XSUM_XXH32_testdata[65] */ + { 33, 0x00000000U, 0x31A427E5U }, /* XSUM_XXH32_testdata[66] */ + { 33, 0x9E3779B1U, 0x0DE5B1F9U }, /* XSUM_XXH32_testdata[67] */ + { 34, 0x00000000U, 0x80B8584BU }, /* XSUM_XXH32_testdata[68] */ + { 34, 0x9E3779B1U, 0x7FFCCCFEU }, /* XSUM_XXH32_testdata[69] */ + { 35, 0x00000000U, 0x7627760AU }, /* XSUM_XXH32_testdata[70] */ + { 35, 0x9E3779B1U, 0xD060F480U }, /* XSUM_XXH32_testdata[71] */ + { 36, 0x00000000U, 0xED4F560FU }, /* XSUM_XXH32_testdata[72] */ + { 36, 0x9E3779B1U, 0x24321F47U }, /* XSUM_XXH32_testdata[73] */ + { 37, 0x00000000U, 0x1241D245U }, /* XSUM_XXH32_testdata[74] */ + { 37, 0x9E3779B1U, 0x09EFB299U }, /* XSUM_XXH32_testdata[75] */ + { 38, 0x00000000U, 0x5E1CC178U }, /* XSUM_XXH32_testdata[76] */ + { 38, 0x9E3779B1U, 0xC1322A61U }, /* XSUM_XXH32_testdata[77] */ + { 39, 0x00000000U, 0xBA125684U }, /* XSUM_XXH32_testdata[78] */ + { 39, 0x9E3779B1U, 0x2D6246FFU }, /* XSUM_XXH32_testdata[79] */ + { 40, 0x00000000U, 0xB22A36ABU }, /* XSUM_XXH32_testdata[80] */ + { 40, 0x9E3779B1U, 0xBF491205U }, /* XSUM_XXH32_testdata[81] */ + { 41, 0x00000000U, 0x161223AFU }, /* XSUM_XXH32_testdata[82] */ + { 41, 0x9E3779B1U, 0x0CB4D70FU }, /* XSUM_XXH32_testdata[83] */ + { 42, 0x00000000U, 0x11586B3FU }, /* XSUM_XXH32_testdata[84] */ + { 42, 0x9E3779B1U, 0x29218DC3U }, /* XSUM_XXH32_testdata[85] */ + { 43, 0x00000000U, 0x0A1C7CC9U }, /* XSUM_XXH32_testdata[86] */ + { 43, 0x9E3779B1U, 0x4D7337ABU }, /* XSUM_XXH32_testdata[87] */ + { 44, 0x00000000U, 0xF0910CD3U }, /* XSUM_XXH32_testdata[88] */ + { 44, 0x9E3779B1U, 0xF33E0443U }, /* XSUM_XXH32_testdata[89] */ + { 45, 0x00000000U, 0xDD97A408U }, /* XSUM_XXH32_testdata[90] */ + { 45, 0x9E3779B1U, 0x8CEC6D9CU }, /* XSUM_XXH32_testdata[91] */ + { 46, 0x00000000U, 0x3A609997U }, /* XSUM_XXH32_testdata[92] */ + { 46, 0x9E3779B1U, 0xBD3BA412U }, /* XSUM_XXH32_testdata[93] */ + { 47, 0x00000000U, 0xD5E9364EU }, /* XSUM_XXH32_testdata[94] */ + { 47, 0x9E3779B1U, 0xA463C5A4U }, /* XSUM_XXH32_testdata[95] */ + { 48, 0x00000000U, 0xBFD05CBDU }, /* XSUM_XXH32_testdata[96] */ + { 48, 0x9E3779B1U, 0x0ECCC06EU }, /* XSUM_XXH32_testdata[97] */ + { 49, 0x00000000U, 0xED9B7E81U }, /* XSUM_XXH32_testdata[98] */ + { 49, 0x9E3779B1U, 0xA7E98491U }, /* XSUM_XXH32_testdata[99] */ + { 50, 0x00000000U, 0xBDF553E2U }, /* XSUM_XXH32_testdata[100] */ + { 50, 0x9E3779B1U, 0xA937E7EDU }, /* XSUM_XXH32_testdata[101] */ + { 51, 0x00000000U, 0x3CDEED0FU }, /* XSUM_XXH32_testdata[102] */ + { 51, 0x9E3779B1U, 0x9E2ED4B1U }, /* XSUM_XXH32_testdata[103] */ + { 52, 0x00000000U, 0x27D50857U }, /* XSUM_XXH32_testdata[104] */ + { 52, 0x9E3779B1U, 0x4682E48BU }, /* XSUM_XXH32_testdata[105] */ + { 53, 0x00000000U, 0x62E63D09U }, /* XSUM_XXH32_testdata[106] */ + { 53, 0x9E3779B1U, 0x1FF1A182U }, /* XSUM_XXH32_testdata[107] */ + { 54, 0x00000000U, 0x30BACCFAU }, /* XSUM_XXH32_testdata[108] */ + { 54, 0x9E3779B1U, 0x955B14A7U }, /* XSUM_XXH32_testdata[109] */ + { 55, 0x00000000U, 0xEA5D7666U }, /* XSUM_XXH32_testdata[110] */ + { 55, 0x9E3779B1U, 0x300DDE4DU }, /* XSUM_XXH32_testdata[111] */ + { 56, 0x00000000U, 0xC8D07416U }, /* XSUM_XXH32_testdata[112] */ + { 56, 0x9E3779B1U, 0x8952E674U }, /* XSUM_XXH32_testdata[113] */ + { 57, 0x00000000U, 0xDF6987F5U }, /* XSUM_XXH32_testdata[114] */ + { 57, 0x9E3779B1U, 0x98D545E4U }, /* XSUM_XXH32_testdata[115] */ + { 58, 0x00000000U, 0x447DCE59U }, /* XSUM_XXH32_testdata[116] */ + { 58, 0x9E3779B1U, 0x1CFC5C29U }, /* XSUM_XXH32_testdata[117] */ + { 59, 0x00000000U, 0x4529090DU }, /* XSUM_XXH32_testdata[118] */ + { 59, 0x9E3779B1U, 0xE3ACD84EU }, /* XSUM_XXH32_testdata[119] */ + { 60, 0x00000000U, 0xA48E8818U }, /* XSUM_XXH32_testdata[120] */ + { 60, 0x9E3779B1U, 0x31CA20F1U }, /* XSUM_XXH32_testdata[121] */ + { 61, 0x00000000U, 0xB1C4FBB5U }, /* XSUM_XXH32_testdata[122] */ + { 61, 0x9E3779B1U, 0x21749FC9U }, /* XSUM_XXH32_testdata[123] */ + { 62, 0x00000000U, 0x84145F58U }, /* XSUM_XXH32_testdata[124] */ + { 62, 0x9E3779B1U, 0x0374E669U }, /* XSUM_XXH32_testdata[125] */ + { 63, 0x00000000U, 0xF1D48FDBU }, /* XSUM_XXH32_testdata[126] */ + { 63, 0x9E3779B1U, 0x956B3D77U }, /* XSUM_XXH32_testdata[127] */ + { 64, 0x00000000U, 0x02E95DBBU }, /* XSUM_XXH32_testdata[128] */ + { 64, 0x9E3779B1U, 0xCF82F830U }, /* XSUM_XXH32_testdata[129] */ + { 65, 0x00000000U, 0x16992B3DU }, /* XSUM_XXH32_testdata[130] */ + { 65, 0x9E3779B1U, 0x428EEC5FU }, /* XSUM_XXH32_testdata[131] */ + { 66, 0x00000000U, 0xDEFD9E68U }, /* XSUM_XXH32_testdata[132] */ + { 66, 0x9E3779B1U, 0xCED81C34U }, /* XSUM_XXH32_testdata[133] */ + { 67, 0x00000000U, 0x9667C027U }, /* XSUM_XXH32_testdata[134] */ + { 67, 0x9E3779B1U, 0x56E465E2U }, /* XSUM_XXH32_testdata[135] */ + { 68, 0x00000000U, 0xBC606CAAU }, /* XSUM_XXH32_testdata[136] */ + { 68, 0x9E3779B1U, 0x3679A1D9U }, /* XSUM_XXH32_testdata[137] */ + { 69, 0x00000000U, 0xE7069479U }, /* XSUM_XXH32_testdata[138] */ + { 69, 0x9E3779B1U, 0x5D4B3836U }, /* XSUM_XXH32_testdata[139] */ + { 70, 0x00000000U, 0xF6EBE19DU }, /* XSUM_XXH32_testdata[140] */ + { 70, 0x9E3779B1U, 0x64AD7E72U }, /* XSUM_XXH32_testdata[141] */ + { 71, 0x00000000U, 0x7ACA94AAU }, /* XSUM_XXH32_testdata[142] */ + { 71, 0x9E3779B1U, 0xA5496174U }, /* XSUM_XXH32_testdata[143] */ + { 72, 0x00000000U, 0xB78CCDD2U }, /* XSUM_XXH32_testdata[144] */ + { 72, 0x9E3779B1U, 0x6003D7C1U }, /* XSUM_XXH32_testdata[145] */ + { 73, 0x00000000U, 0x20957640U }, /* XSUM_XXH32_testdata[146] */ + { 73, 0x9E3779B1U, 0x28188381U }, /* XSUM_XXH32_testdata[147] */ + { 74, 0x00000000U, 0xC8FEB4EAU }, /* XSUM_XXH32_testdata[148] */ + { 74, 0x9E3779B1U, 0x2F41F670U }, /* XSUM_XXH32_testdata[149] */ + { 75, 0x00000000U, 0xE1299536U }, /* XSUM_XXH32_testdata[150] */ + { 75, 0x9E3779B1U, 0x7EC75712U }, /* XSUM_XXH32_testdata[151] */ + { 76, 0x00000000U, 0x120EBEC9U }, /* XSUM_XXH32_testdata[152] */ + { 76, 0x9E3779B1U, 0x174F8A9CU }, /* XSUM_XXH32_testdata[153] */ + { 77, 0x00000000U, 0x5F6F8059U }, /* XSUM_XXH32_testdata[154] */ + { 77, 0x9E3779B1U, 0xE13D45E7U }, /* XSUM_XXH32_testdata[155] */ + { 78, 0x00000000U, 0x2D18D24CU }, /* XSUM_XXH32_testdata[156] */ + { 78, 0x9E3779B1U, 0xFA4D7DC7U }, /* XSUM_XXH32_testdata[157] */ + { 79, 0x00000000U, 0x162FFDDCU }, /* XSUM_XXH32_testdata[158] */ + { 79, 0x9E3779B1U, 0x17E69038U }, /* XSUM_XXH32_testdata[159] */ + { 80, 0x00000000U, 0xB8D7E581U }, /* XSUM_XXH32_testdata[160] */ + { 80, 0x9E3779B1U, 0x65D85230U }, /* XSUM_XXH32_testdata[161] */ + { 81, 0x00000000U, 0xB13BC253U }, /* XSUM_XXH32_testdata[162] */ + { 81, 0x9E3779B1U, 0xAB0B3D44U }, /* XSUM_XXH32_testdata[163] */ + { 82, 0x00000000U, 0xA459BF95U }, /* XSUM_XXH32_testdata[164] */ + { 82, 0x9E3779B1U, 0xABB92571U }, /* XSUM_XXH32_testdata[165] */ + { 83, 0x00000000U, 0x02042BB9U }, /* XSUM_XXH32_testdata[166] */ + { 83, 0x9E3779B1U, 0x44F624EDU }, /* XSUM_XXH32_testdata[167] */ + { 84, 0x00000000U, 0x5AAC85A4U }, /* XSUM_XXH32_testdata[168] */ + { 84, 0x9E3779B1U, 0x890C0E47U }, /* XSUM_XXH32_testdata[169] */ + { 85, 0x00000000U, 0x938629B3U }, /* XSUM_XXH32_testdata[170] */ + { 85, 0x9E3779B1U, 0x2F13BAC8U }, /* XSUM_XXH32_testdata[171] */ + { 86, 0x00000000U, 0xE59B177EU }, /* XSUM_XXH32_testdata[172] */ + { 86, 0x9E3779B1U, 0x24624EDCU }, /* XSUM_XXH32_testdata[173] */ + { 87, 0x00000000U, 0xA1874DCCU }, /* XSUM_XXH32_testdata[174] */ + { 87, 0x9E3779B1U, 0xD6C644BDU }, /* XSUM_XXH32_testdata[175] */ + { 88, 0x00000000U, 0xAB18B20CU }, /* XSUM_XXH32_testdata[176] */ + { 88, 0x9E3779B1U, 0x91094C63U }, /* XSUM_XXH32_testdata[177] */ + { 89, 0x00000000U, 0x0BB0289BU }, /* XSUM_XXH32_testdata[178] */ + { 89, 0x9E3779B1U, 0x0A79DCB2U }, /* XSUM_XXH32_testdata[179] */ + { 90, 0x00000000U, 0x92AA4D3CU }, /* XSUM_XXH32_testdata[180] */ + { 90, 0x9E3779B1U, 0x5892CA32U }, /* XSUM_XXH32_testdata[181] */ + { 91, 0x00000000U, 0x88F76854U }, /* XSUM_XXH32_testdata[182] */ + { 91, 0x9E3779B1U, 0x2398BEDAU }, /* XSUM_XXH32_testdata[183] */ + { 92, 0x00000000U, 0xD4B4E941U }, /* XSUM_XXH32_testdata[184] */ + { 92, 0x9E3779B1U, 0xCBC76755U }, /* XSUM_XXH32_testdata[185] */ + { 93, 0x00000000U, 0x44CC8539U }, /* XSUM_XXH32_testdata[186] */ + { 93, 0x9E3779B1U, 0x1A2B1728U }, /* XSUM_XXH32_testdata[187] */ + { 94, 0x00000000U, 0xEC02C59FU }, /* XSUM_XXH32_testdata[188] */ + { 94, 0x9E3779B1U, 0xA2302AFEU }, /* XSUM_XXH32_testdata[189] */ + { 95, 0x00000000U, 0xF081F6AAU }, /* XSUM_XXH32_testdata[190] */ + { 95, 0x9E3779B1U, 0x7A8F0916U }, /* XSUM_XXH32_testdata[191] */ + { 96, 0x00000000U, 0x4CCF41E0U }, /* XSUM_XXH32_testdata[192] */ + { 96, 0x9E3779B1U, 0xCFA0AAECU }, /* XSUM_XXH32_testdata[193] */ + { 97, 0x00000000U, 0x914082D0U }, /* XSUM_XXH32_testdata[194] */ + { 97, 0x9E3779B1U, 0x9FCA3CB0U }, /* XSUM_XXH32_testdata[195] */ + { 98, 0x00000000U, 0x5B313627U }, /* XSUM_XXH32_testdata[196] */ + { 98, 0x9E3779B1U, 0x47F152BAU }, /* XSUM_XXH32_testdata[197] */ + { 99, 0x00000000U, 0xCC0A29F7U }, /* XSUM_XXH32_testdata[198] */ + { 99, 0x9E3779B1U, 0xE3ACED83U }, /* XSUM_XXH32_testdata[199] */ + { 100, 0x00000000U, 0x96AD8143U }, /* XSUM_XXH32_testdata[200] */ + { 100, 0x9E3779B1U, 0x83D48124U }, /* XSUM_XXH32_testdata[201] */ + { 101, 0x00000000U, 0x1B305CDBU }, /* XSUM_XXH32_testdata[202] */ + { 101, 0x9E3779B1U, 0x5839BFA6U }, /* XSUM_XXH32_testdata[203] */ + { 102, 0x00000000U, 0x3BD5DBACU }, /* XSUM_XXH32_testdata[204] */ + { 102, 0x9E3779B1U, 0x78187AB1U }, /* XSUM_XXH32_testdata[205] */ + { 103, 0x00000000U, 0x65688574U }, /* XSUM_XXH32_testdata[206] */ + { 103, 0x9E3779B1U, 0xEC1A502CU }, /* XSUM_XXH32_testdata[207] */ + { 104, 0x00000000U, 0x78861916U }, /* XSUM_XXH32_testdata[208] */ + { 104, 0x9E3779B1U, 0x0F8AC709U }, /* XSUM_XXH32_testdata[209] */ + { 105, 0x00000000U, 0x321DE7A2U }, /* XSUM_XXH32_testdata[210] */ + { 105, 0x9E3779B1U, 0x2A383E68U }, /* XSUM_XXH32_testdata[211] */ + { 106, 0x00000000U, 0x66021791U }, /* XSUM_XXH32_testdata[212] */ + { 106, 0x9E3779B1U, 0x48DBC967U }, /* XSUM_XXH32_testdata[213] */ + { 107, 0x00000000U, 0x4FBEEA6DU }, /* XSUM_XXH32_testdata[214] */ + { 107, 0x9E3779B1U, 0x81DFC749U }, /* XSUM_XXH32_testdata[215] */ + { 108, 0x00000000U, 0xBF6E81DAU }, /* XSUM_XXH32_testdata[216] */ + { 108, 0x9E3779B1U, 0x6552FB4CU }, /* XSUM_XXH32_testdata[217] */ + { 109, 0x00000000U, 0xAB53BD6CU }, /* XSUM_XXH32_testdata[218] */ + { 109, 0x9E3779B1U, 0x47045E87U }, /* XSUM_XXH32_testdata[219] */ + { 110, 0x00000000U, 0x80684E97U }, /* XSUM_XXH32_testdata[220] */ + { 110, 0x9E3779B1U, 0xEFD4C511U }, /* XSUM_XXH32_testdata[221] */ + { 111, 0x00000000U, 0xB2B2A43DU }, /* XSUM_XXH32_testdata[222] */ + { 111, 0x9E3779B1U, 0x7C42B0B3U }, /* XSUM_XXH32_testdata[223] */ + { 112, 0x00000000U, 0xBFD42090U }, /* XSUM_XXH32_testdata[224] */ + { 112, 0x9E3779B1U, 0xB8FED29FU }, /* XSUM_XXH32_testdata[225] */ + { 113, 0x00000000U, 0x17957E56U }, /* XSUM_XXH32_testdata[226] */ + { 113, 0x9E3779B1U, 0x1F838248U }, /* XSUM_XXH32_testdata[227] */ + { 114, 0x00000000U, 0x0825AA87U }, /* XSUM_XXH32_testdata[228] */ + { 114, 0x9E3779B1U, 0x588CD5CDU }, /* XSUM_XXH32_testdata[229] */ + { 115, 0x00000000U, 0x9A1D6116U }, /* XSUM_XXH32_testdata[230] */ + { 115, 0x9E3779B1U, 0xB39272D7U }, /* XSUM_XXH32_testdata[231] */ + { 116, 0x00000000U, 0x12A0643EU }, /* XSUM_XXH32_testdata[232] */ + { 116, 0x9E3779B1U, 0x0B1A2B23U }, /* XSUM_XXH32_testdata[233] */ + { 117, 0x00000000U, 0xB0D0F17BU }, /* XSUM_XXH32_testdata[234] */ + { 117, 0x9E3779B1U, 0x60C609A0U }, /* XSUM_XXH32_testdata[235] */ + { 118, 0x00000000U, 0xCDA9A095U }, /* XSUM_XXH32_testdata[236] */ + { 118, 0x9E3779B1U, 0xE0C95C1FU }, /* XSUM_XXH32_testdata[237] */ + { 119, 0x00000000U, 0x176D3D10U }, /* XSUM_XXH32_testdata[238] */ + { 119, 0x9E3779B1U, 0x18AF97ADU }, /* XSUM_XXH32_testdata[239] */ + { 120, 0x00000000U, 0xEAA71DC5U }, /* XSUM_XXH32_testdata[240] */ + { 120, 0x9E3779B1U, 0x820F245AU }, /* XSUM_XXH32_testdata[241] */ + { 121, 0x00000000U, 0x42171963U }, /* XSUM_XXH32_testdata[242] */ + { 121, 0x9E3779B1U, 0x7DA93D33U }, /* XSUM_XXH32_testdata[243] */ + { 122, 0x00000000U, 0x744024B1U }, /* XSUM_XXH32_testdata[244] */ + { 122, 0x9E3779B1U, 0x27D5D087U }, /* XSUM_XXH32_testdata[245] */ + { 123, 0x00000000U, 0x7A501B1DU }, /* XSUM_XXH32_testdata[246] */ + { 123, 0x9E3779B1U, 0xA90DADD0U }, /* XSUM_XXH32_testdata[247] */ + { 124, 0x00000000U, 0xEEF0D529U }, /* XSUM_XXH32_testdata[248] */ + { 124, 0x9E3779B1U, 0x7CC63F33U }, /* XSUM_XXH32_testdata[249] */ + { 125, 0x00000000U, 0x842E47E2U }, /* XSUM_XXH32_testdata[250] */ + { 125, 0x9E3779B1U, 0xF486621CU }, /* XSUM_XXH32_testdata[251] */ + { 126, 0x00000000U, 0xED06DF9FU }, /* XSUM_XXH32_testdata[252] */ + { 126, 0x9E3779B1U, 0xB2EC41E8U }, /* XSUM_XXH32_testdata[253] */ + { 127, 0x00000000U, 0x1E49F7FCU }, /* XSUM_XXH32_testdata[254] */ + { 127, 0x9E3779B1U, 0xC926CE8FU }, /* XSUM_XXH32_testdata[255] */ + { 128, 0x00000000U, 0x0FD07B71U }, /* XSUM_XXH32_testdata[256] */ + { 128, 0x9E3779B1U, 0x3BD1140EU }, /* XSUM_XXH32_testdata[257] */ + { 129, 0x00000000U, 0x68C9EC37U }, /* XSUM_XXH32_testdata[258] */ + { 129, 0x9E3779B1U, 0x2A9476A5U }, /* XSUM_XXH32_testdata[259] */ + { 130, 0x00000000U, 0x6F668C0EU }, /* XSUM_XXH32_testdata[260] */ + { 130, 0x9E3779B1U, 0x8FEA8125U }, /* XSUM_XXH32_testdata[261] */ + { 131, 0x00000000U, 0x250C2751U }, /* XSUM_XXH32_testdata[262] */ + { 131, 0x9E3779B1U, 0xE2620299U }, /* XSUM_XXH32_testdata[263] */ + { 132, 0x00000000U, 0x467FF462U }, /* XSUM_XXH32_testdata[264] */ + { 132, 0x9E3779B1U, 0x2B74691CU }, /* XSUM_XXH32_testdata[265] */ + { 133, 0x00000000U, 0x3433F9DBU }, /* XSUM_XXH32_testdata[266] */ + { 133, 0x9E3779B1U, 0xFF609B27U }, /* XSUM_XXH32_testdata[267] */ + { 134, 0x00000000U, 0x77D99961U }, /* XSUM_XXH32_testdata[268] */ + { 134, 0x9E3779B1U, 0x74391A4CU }, /* XSUM_XXH32_testdata[269] */ + { 135, 0x00000000U, 0x5F75EBB8U }, /* XSUM_XXH32_testdata[270] */ + { 135, 0x9E3779B1U, 0x91EE2559U }, /* XSUM_XXH32_testdata[271] */ + { 136, 0x00000000U, 0x28FB329FU }, /* XSUM_XXH32_testdata[272] */ + { 136, 0x9E3779B1U, 0x7448C47DU }, /* XSUM_XXH32_testdata[273] */ + { 137, 0x00000000U, 0xB70B14C2U }, /* XSUM_XXH32_testdata[274] */ + { 137, 0x9E3779B1U, 0x3C1F9CFAU }, /* XSUM_XXH32_testdata[275] */ + { 138, 0x00000000U, 0xF96CC1F5U }, /* XSUM_XXH32_testdata[276] */ + { 138, 0x9E3779B1U, 0xAD05AE47U }, /* XSUM_XXH32_testdata[277] */ + { 139, 0x00000000U, 0x226BFE7FU }, /* XSUM_XXH32_testdata[278] */ + { 139, 0x9E3779B1U, 0x26367250U }, /* XSUM_XXH32_testdata[279] */ + { 140, 0x00000000U, 0xE084C6C2U }, /* XSUM_XXH32_testdata[280] */ + { 140, 0x9E3779B1U, 0x0CB176A1U }, /* XSUM_XXH32_testdata[281] */ + { 141, 0x00000000U, 0x2BD9ACDEU }, /* XSUM_XXH32_testdata[282] */ + { 141, 0x9E3779B1U, 0x0D7330CCU }, /* XSUM_XXH32_testdata[283] */ + { 142, 0x00000000U, 0xE8491C05U }, /* XSUM_XXH32_testdata[284] */ + { 142, 0x9E3779B1U, 0xE39C9562U }, /* XSUM_XXH32_testdata[285] */ + { 143, 0x00000000U, 0x8C232E66U }, /* XSUM_XXH32_testdata[286] */ + { 143, 0x9E3779B1U, 0x0CB48D29U }, /* XSUM_XXH32_testdata[287] */ + { 144, 0x00000000U, 0x07505878U }, /* XSUM_XXH32_testdata[288] */ + { 144, 0x9E3779B1U, 0x6BA28596U }, /* XSUM_XXH32_testdata[289] */ + { 145, 0x00000000U, 0x9010ABAEU }, /* XSUM_XXH32_testdata[290] */ + { 145, 0x9E3779B1U, 0x76A5F3D8U }, /* XSUM_XXH32_testdata[291] */ + { 146, 0x00000000U, 0x6C421E2EU }, /* XSUM_XXH32_testdata[292] */ + { 146, 0x9E3779B1U, 0x81A9CA9EU }, /* XSUM_XXH32_testdata[293] */ + { 147, 0x00000000U, 0xF166561EU }, /* XSUM_XXH32_testdata[294] */ + { 147, 0x9E3779B1U, 0x9F47EC56U }, /* XSUM_XXH32_testdata[295] */ + { 148, 0x00000000U, 0xE5F95DE0U }, /* XSUM_XXH32_testdata[296] */ + { 148, 0x9E3779B1U, 0xE83F34DFU }, /* XSUM_XXH32_testdata[297] */ + { 149, 0x00000000U, 0x4B285245U }, /* XSUM_XXH32_testdata[298] */ + { 149, 0x9E3779B1U, 0x6E8BF7D1U }, /* XSUM_XXH32_testdata[299] */ + { 150, 0x00000000U, 0xAAC19EF4U }, /* XSUM_XXH32_testdata[300] */ + { 150, 0x9E3779B1U, 0xB1DA61CBU }, /* XSUM_XXH32_testdata[301] */ + { 151, 0x00000000U, 0x40BD0BF1U }, /* XSUM_XXH32_testdata[302] */ + { 151, 0x9E3779B1U, 0x1B4E44AEU }, /* XSUM_XXH32_testdata[303] */ + { 152, 0x00000000U, 0x3371B10DU }, /* XSUM_XXH32_testdata[304] */ + { 152, 0x9E3779B1U, 0x41CAA047U }, /* XSUM_XXH32_testdata[305] */ + { 153, 0x00000000U, 0x26BABAF8U }, /* XSUM_XXH32_testdata[306] */ + { 153, 0x9E3779B1U, 0x7F2C8740U }, /* XSUM_XXH32_testdata[307] */ + { 154, 0x00000000U, 0x66A6367BU }, /* XSUM_XXH32_testdata[308] */ + { 154, 0x9E3779B1U, 0x5F647E67U }, /* XSUM_XXH32_testdata[309] */ + { 155, 0x00000000U, 0x1A3170B4U }, /* XSUM_XXH32_testdata[310] */ + { 155, 0x9E3779B1U, 0x517CD1A2U }, /* XSUM_XXH32_testdata[311] */ + { 156, 0x00000000U, 0x829D9B68U }, /* XSUM_XXH32_testdata[312] */ + { 156, 0x9E3779B1U, 0x357D5E8CU }, /* XSUM_XXH32_testdata[313] */ + { 157, 0x00000000U, 0x1595DF79U }, /* XSUM_XXH32_testdata[314] */ + { 157, 0x9E3779B1U, 0x2AA95120U }, /* XSUM_XXH32_testdata[315] */ + { 158, 0x00000000U, 0xCC70600FU }, /* XSUM_XXH32_testdata[316] */ + { 158, 0x9E3779B1U, 0x2794A046U }, /* XSUM_XXH32_testdata[317] */ + { 159, 0x00000000U, 0xD0EBBC26U }, /* XSUM_XXH32_testdata[318] */ + { 159, 0x9E3779B1U, 0xA16EAAD4U }, /* XSUM_XXH32_testdata[319] */ + { 160, 0x00000000U, 0x468BAE76U }, /* XSUM_XXH32_testdata[320] */ + { 160, 0x9E3779B1U, 0xAD988AA2U }, /* XSUM_XXH32_testdata[321] */ + { 161, 0x00000000U, 0x49E4DC27U }, /* XSUM_XXH32_testdata[322] */ + { 161, 0x9E3779B1U, 0x1BD4400CU }, /* XSUM_XXH32_testdata[323] */ + { 162, 0x00000000U, 0x95E85961U }, /* XSUM_XXH32_testdata[324] */ + { 162, 0x9E3779B1U, 0xCEEB08DFU }, /* XSUM_XXH32_testdata[325] */ + { 163, 0x00000000U, 0x147A5E77U }, /* XSUM_XXH32_testdata[326] */ + { 163, 0x9E3779B1U, 0x6B876F53U }, /* XSUM_XXH32_testdata[327] */ + { 164, 0x00000000U, 0xF3D3DECDU }, /* XSUM_XXH32_testdata[328] */ + { 164, 0x9E3779B1U, 0xFD669393U }, /* XSUM_XXH32_testdata[329] */ + { 165, 0x00000000U, 0xE529B75BU }, /* XSUM_XXH32_testdata[330] */ + { 165, 0x9E3779B1U, 0x7D257F34U }, /* XSUM_XXH32_testdata[331] */ + { 166, 0x00000000U, 0x2C7251F6U }, /* XSUM_XXH32_testdata[332] */ + { 166, 0x9E3779B1U, 0x4569F86EU }, /* XSUM_XXH32_testdata[333] */ + { 167, 0x00000000U, 0x0EE0E8CCU }, /* XSUM_XXH32_testdata[334] */ + { 167, 0x9E3779B1U, 0x73C2A8EBU }, /* XSUM_XXH32_testdata[335] */ + { 168, 0x00000000U, 0xC00D25A0U }, /* XSUM_XXH32_testdata[336] */ + { 168, 0x9E3779B1U, 0xC37F2027U }, /* XSUM_XXH32_testdata[337] */ + { 169, 0x00000000U, 0x6DDDAF3DU }, /* XSUM_XXH32_testdata[338] */ + { 169, 0x9E3779B1U, 0xB8EF05AFU }, /* XSUM_XXH32_testdata[339] */ + { 170, 0x00000000U, 0xEFAAC76BU }, /* XSUM_XXH32_testdata[340] */ + { 170, 0x9E3779B1U, 0x7BD34115U }, /* XSUM_XXH32_testdata[341] */ + { 171, 0x00000000U, 0x00331D4BU }, /* XSUM_XXH32_testdata[342] */ + { 171, 0x9E3779B1U, 0xDCE4C464U }, /* XSUM_XXH32_testdata[343] */ + { 172, 0x00000000U, 0xCE08A470U }, /* XSUM_XXH32_testdata[344] */ + { 172, 0x9E3779B1U, 0x89988159U }, /* XSUM_XXH32_testdata[345] */ + { 173, 0x00000000U, 0xAC3606B0U }, /* XSUM_XXH32_testdata[346] */ + { 173, 0x9E3779B1U, 0x45BC9345U }, /* XSUM_XXH32_testdata[347] */ + { 174, 0x00000000U, 0xE38EE399U }, /* XSUM_XXH32_testdata[348] */ + { 174, 0x9E3779B1U, 0xE9DB0906U }, /* XSUM_XXH32_testdata[349] */ + { 175, 0x00000000U, 0xC3B39539U }, /* XSUM_XXH32_testdata[350] */ + { 175, 0x9E3779B1U, 0x4DA8A320U }, /* XSUM_XXH32_testdata[351] */ + { 176, 0x00000000U, 0x01C0ADB8U }, /* XSUM_XXH32_testdata[352] */ + { 176, 0x9E3779B1U, 0x63DF5EA5U }, /* XSUM_XXH32_testdata[353] */ + { 177, 0x00000000U, 0xC7CC4DDEU }, /* XSUM_XXH32_testdata[354] */ + { 177, 0x9E3779B1U, 0xB2A8BFD6U }, /* XSUM_XXH32_testdata[355] */ + { 178, 0x00000000U, 0x4D8EFD3EU }, /* XSUM_XXH32_testdata[356] */ + { 178, 0x9E3779B1U, 0x23346DEDU }, /* XSUM_XXH32_testdata[357] */ + { 179, 0x00000000U, 0xDB8C3D00U }, /* XSUM_XXH32_testdata[358] */ + { 179, 0x9E3779B1U, 0xD958AFB0U }, /* XSUM_XXH32_testdata[359] */ + { 180, 0x00000000U, 0x87630F0BU }, /* XSUM_XXH32_testdata[360] */ + { 180, 0x9E3779B1U, 0x0EF4A915U }, /* XSUM_XXH32_testdata[361] */ + { 181, 0x00000000U, 0xEA494866U }, /* XSUM_XXH32_testdata[362] */ + { 181, 0x9E3779B1U, 0x802BA360U }, /* XSUM_XXH32_testdata[363] */ + { 182, 0x00000000U, 0x974E6EC9U }, /* XSUM_XXH32_testdata[364] */ + { 182, 0x9E3779B1U, 0x16D34030U }, /* XSUM_XXH32_testdata[365] */ + { 183, 0x00000000U, 0x0852ACF7U }, /* XSUM_XXH32_testdata[366] */ + { 183, 0x9E3779B1U, 0xE5DCC283U }, /* XSUM_XXH32_testdata[367] */ + { 184, 0x00000000U, 0x72568284U }, /* XSUM_XXH32_testdata[368] */ + { 184, 0x9E3779B1U, 0x7B3EBBB5U }, /* XSUM_XXH32_testdata[369] */ + { 185, 0x00000000U, 0xE657B65DU }, /* XSUM_XXH32_testdata[370] */ + { 185, 0x9E3779B1U, 0xD14C4260U }, /* XSUM_XXH32_testdata[371] */ + { 186, 0x00000000U, 0xAA4D1F29U }, /* XSUM_XXH32_testdata[372] */ + { 186, 0x9E3779B1U, 0xB2957E22U }, /* XSUM_XXH32_testdata[373] */ + { 187, 0x00000000U, 0xEE027F29U }, /* XSUM_XXH32_testdata[374] */ + { 187, 0x9E3779B1U, 0xAF51CEECU }, /* XSUM_XXH32_testdata[375] */ + { 188, 0x00000000U, 0x881E82E7U }, /* XSUM_XXH32_testdata[376] */ + { 188, 0x9E3779B1U, 0x27197D64U }, /* XSUM_XXH32_testdata[377] */ + { 189, 0x00000000U, 0x34E829DAU }, /* XSUM_XXH32_testdata[378] */ + { 189, 0x9E3779B1U, 0xD72BB840U }, /* XSUM_XXH32_testdata[379] */ + { 190, 0x00000000U, 0x2A466969U }, /* XSUM_XXH32_testdata[380] */ + { 190, 0x9E3779B1U, 0xEA2A0159U }, /* XSUM_XXH32_testdata[381] */ + { 191, 0x00000000U, 0x1B97EE64U }, /* XSUM_XXH32_testdata[382] */ + { 191, 0x9E3779B1U, 0xDB59761CU }, /* XSUM_XXH32_testdata[383] */ + { 192, 0x00000000U, 0x40EA7C2FU }, /* XSUM_XXH32_testdata[384] */ + { 192, 0x9E3779B1U, 0x45FFCD43U }, /* XSUM_XXH32_testdata[385] */ + { 193, 0x00000000U, 0xCF7EF1BAU }, /* XSUM_XXH32_testdata[386] */ + { 193, 0x9E3779B1U, 0x972A1C6CU }, /* XSUM_XXH32_testdata[387] */ + { 194, 0x00000000U, 0xC048459EU }, /* XSUM_XXH32_testdata[388] */ + { 194, 0x9E3779B1U, 0xCEF37E3DU }, /* XSUM_XXH32_testdata[389] */ + { 195, 0x00000000U, 0x70536B96U }, /* XSUM_XXH32_testdata[390] */ + { 195, 0x9E3779B1U, 0x5637D2B9U }, /* XSUM_XXH32_testdata[391] */ + { 196, 0x00000000U, 0xB5248A61U }, /* XSUM_XXH32_testdata[392] */ + { 196, 0x9E3779B1U, 0x45B5F8CDU }, /* XSUM_XXH32_testdata[393] */ + { 197, 0x00000000U, 0x41BD629EU }, /* XSUM_XXH32_testdata[394] */ + { 197, 0x9E3779B1U, 0xE4467DAAU }, /* XSUM_XXH32_testdata[395] */ + { 198, 0x00000000U, 0x07F2D13FU }, /* XSUM_XXH32_testdata[396] */ + { 198, 0x9E3779B1U, 0xDF6B5563U }, /* XSUM_XXH32_testdata[397] */ + { 199, 0x00000000U, 0x04C1895FU }, /* XSUM_XXH32_testdata[398] */ + { 199, 0x9E3779B1U, 0x160380CDU }, /* XSUM_XXH32_testdata[399] */ + { 200, 0x00000000U, 0x21B47598U }, /* XSUM_XXH32_testdata[400] */ + { 200, 0x9E3779B1U, 0xA2CD69EDU }, /* XSUM_XXH32_testdata[401] */ + { 201, 0x00000000U, 0xFE4BCD4FU }, /* XSUM_XXH32_testdata[402] */ + { 201, 0x9E3779B1U, 0x90D46DB3U }, /* XSUM_XXH32_testdata[403] */ + { 202, 0x00000000U, 0xFEEC392CU }, /* XSUM_XXH32_testdata[404] */ + { 202, 0x9E3779B1U, 0xB2F49A0CU }, /* XSUM_XXH32_testdata[405] */ + { 203, 0x00000000U, 0x69548705U }, /* XSUM_XXH32_testdata[406] */ + { 203, 0x9E3779B1U, 0x87F156CCU }, /* XSUM_XXH32_testdata[407] */ + { 204, 0x00000000U, 0xDEA84C5FU }, /* XSUM_XXH32_testdata[408] */ + { 204, 0x9E3779B1U, 0x57A9236DU }, /* XSUM_XXH32_testdata[409] */ + { 205, 0x00000000U, 0xCB0685A3U }, /* XSUM_XXH32_testdata[410] */ + { 205, 0x9E3779B1U, 0x072BBA0BU }, /* XSUM_XXH32_testdata[411] */ + { 206, 0x00000000U, 0x010B5AF7U }, /* XSUM_XXH32_testdata[412] */ + { 206, 0x9E3779B1U, 0x606A02CAU }, /* XSUM_XXH32_testdata[413] */ + { 207, 0x00000000U, 0x45EA54DCU }, /* XSUM_XXH32_testdata[414] */ + { 207, 0x9E3779B1U, 0xD48744A0U }, /* XSUM_XXH32_testdata[415] */ + { 208, 0x00000000U, 0x7E8AAE87U }, /* XSUM_XXH32_testdata[416] */ + { 208, 0x9E3779B1U, 0x8F46A337U }, /* XSUM_XXH32_testdata[417] */ + { 209, 0x00000000U, 0xE7FC6C7DU }, /* XSUM_XXH32_testdata[418] */ + { 209, 0x9E3779B1U, 0x2F1B064EU }, /* XSUM_XXH32_testdata[419] */ + { 210, 0x00000000U, 0x96FBF40EU }, /* XSUM_XXH32_testdata[420] */ + { 210, 0x9E3779B1U, 0xBEE2100BU }, /* XSUM_XXH32_testdata[421] */ + { 211, 0x00000000U, 0xC0BE1A6DU }, /* XSUM_XXH32_testdata[422] */ + { 211, 0x9E3779B1U, 0x5E032ABCU }, /* XSUM_XXH32_testdata[423] */ + { 212, 0x00000000U, 0xA3FF15AEU }, /* XSUM_XXH32_testdata[424] */ + { 212, 0x9E3779B1U, 0xA1749364U }, /* XSUM_XXH32_testdata[425] */ + { 213, 0x00000000U, 0x46F95C4CU }, /* XSUM_XXH32_testdata[426] */ + { 213, 0x9E3779B1U, 0x03ED3FACU }, /* XSUM_XXH32_testdata[427] */ + { 214, 0x00000000U, 0x8D6C0F56U }, /* XSUM_XXH32_testdata[428] */ + { 214, 0x9E3779B1U, 0x4307C70AU }, /* XSUM_XXH32_testdata[429] */ + { 215, 0x00000000U, 0x51B02367U }, /* XSUM_XXH32_testdata[430] */ + { 215, 0x9E3779B1U, 0x0516313CU }, /* XSUM_XXH32_testdata[431] */ + { 216, 0x00000000U, 0xFD9F6A62U }, /* XSUM_XXH32_testdata[432] */ + { 216, 0x9E3779B1U, 0xFC05201EU }, /* XSUM_XXH32_testdata[433] */ + { 217, 0x00000000U, 0x8E62A788U }, /* XSUM_XXH32_testdata[434] */ + { 217, 0x9E3779B1U, 0xCE658A4EU }, /* XSUM_XXH32_testdata[435] */ + { 218, 0x00000000U, 0xEE9AE53EU }, /* XSUM_XXH32_testdata[436] */ + { 218, 0x9E3779B1U, 0x00B84CCFU }, /* XSUM_XXH32_testdata[437] */ + { 219, 0x00000000U, 0x1E43262AU }, /* XSUM_XXH32_testdata[438] */ + { 219, 0x9E3779B1U, 0xB4488BF6U }, /* XSUM_XXH32_testdata[439] */ + { 220, 0x00000000U, 0x5A6411DAU }, /* XSUM_XXH32_testdata[440] */ + { 220, 0x9E3779B1U, 0xA54EB98DU }, /* XSUM_XXH32_testdata[441] */ + { 221, 0x00000000U, 0xB158BC7BU }, /* XSUM_XXH32_testdata[442] */ + { 221, 0x9E3779B1U, 0x1F831198U }, /* XSUM_XXH32_testdata[443] */ + { 222, 0x00000000U, 0x5BD11DBDU }, /* XSUM_XXH32_testdata[444] */ + { 222, 0x9E3779B1U, 0x58803C5FU }, /* XSUM_XXH32_testdata[445] */ + { 223, 0x00000000U, 0xABBBBE2CU }, /* XSUM_XXH32_testdata[446] */ + { 223, 0x9E3779B1U, 0xFAFEF6E3U }, /* XSUM_XXH32_testdata[447] */ + { 224, 0x00000000U, 0x77996A88U }, /* XSUM_XXH32_testdata[448] */ + { 224, 0x9E3779B1U, 0xF9B4EBE5U }, /* XSUM_XXH32_testdata[449] */ + { 225, 0x00000000U, 0x58B792A6U }, /* XSUM_XXH32_testdata[450] */ + { 225, 0x9E3779B1U, 0x5F1CE2D5U }, /* XSUM_XXH32_testdata[451] */ + { 226, 0x00000000U, 0x3AA80B8FU }, /* XSUM_XXH32_testdata[452] */ + { 226, 0x9E3779B1U, 0x42BAFC0BU }, /* XSUM_XXH32_testdata[453] */ + { 227, 0x00000000U, 0xDCB4AAD3U }, /* XSUM_XXH32_testdata[454] */ + { 227, 0x9E3779B1U, 0xF51CBA0AU }, /* XSUM_XXH32_testdata[455] */ + { 228, 0x00000000U, 0xAD3652F9U }, /* XSUM_XXH32_testdata[456] */ + { 228, 0x9E3779B1U, 0xCD3FF465U }, /* XSUM_XXH32_testdata[457] */ + { 229, 0x00000000U, 0xA7E2F595U }, /* XSUM_XXH32_testdata[458] */ + { 229, 0x9E3779B1U, 0x0BBD609BU }, /* XSUM_XXH32_testdata[459] */ + { 230, 0x00000000U, 0x077419EDU }, /* XSUM_XXH32_testdata[460] */ + { 230, 0x9E3779B1U, 0xC7742FBFU }, /* XSUM_XXH32_testdata[461] */ + { 231, 0x00000000U, 0x0E6006C7U }, /* XSUM_XXH32_testdata[462] */ + { 231, 0x9E3779B1U, 0x7B7DEA5AU }, /* XSUM_XXH32_testdata[463] */ + { 232, 0x00000000U, 0x61BA51D3U }, /* XSUM_XXH32_testdata[464] */ + { 232, 0x9E3779B1U, 0x248CD26EU }, /* XSUM_XXH32_testdata[465] */ + { 233, 0x00000000U, 0xAAA4C78AU }, /* XSUM_XXH32_testdata[466] */ + { 233, 0x9E3779B1U, 0x06503C12U }, /* XSUM_XXH32_testdata[467] */ + { 234, 0x00000000U, 0x6CBD3AAFU }, /* XSUM_XXH32_testdata[468] */ + { 234, 0x9E3779B1U, 0x6968AC95U }, /* XSUM_XXH32_testdata[469] */ + { 235, 0x00000000U, 0x1FFDE8D3U }, /* XSUM_XXH32_testdata[470] */ + { 235, 0x9E3779B1U, 0x2BF5B0BCU }, /* XSUM_XXH32_testdata[471] */ + { 236, 0x00000000U, 0x0A722C4CU }, /* XSUM_XXH32_testdata[472] */ + { 236, 0x9E3779B1U, 0x3130CB0CU }, /* XSUM_XXH32_testdata[473] */ + { 237, 0x00000000U, 0x392B8349U }, /* XSUM_XXH32_testdata[474] */ + { 237, 0x9E3779B1U, 0x0C7E319DU }, /* XSUM_XXH32_testdata[475] */ + { 238, 0x00000000U, 0x5A40B925U }, /* XSUM_XXH32_testdata[476] */ + { 238, 0x9E3779B1U, 0x35D94906U }, /* XSUM_XXH32_testdata[477] */ + { 239, 0x00000000U, 0x7B84D789U }, /* XSUM_XXH32_testdata[478] */ + { 239, 0x9E3779B1U, 0x6B6ACD8DU }, /* XSUM_XXH32_testdata[479] */ + { 240, 0x00000000U, 0xFA6B6557U }, /* XSUM_XXH32_testdata[480] */ + { 240, 0x9E3779B1U, 0x55DF41D9U }, /* XSUM_XXH32_testdata[481] */ + { 241, 0x00000000U, 0xE5F7C54DU }, /* XSUM_XXH32_testdata[482] */ + { 241, 0x9E3779B1U, 0x13B52081U }, /* XSUM_XXH32_testdata[483] */ + { 242, 0x00000000U, 0xDB51CFEFU }, /* XSUM_XXH32_testdata[484] */ + { 242, 0x9E3779B1U, 0xEA71D8F1U }, /* XSUM_XXH32_testdata[485] */ + { 243, 0x00000000U, 0x1C39FE79U }, /* XSUM_XXH32_testdata[486] */ + { 243, 0x9E3779B1U, 0x09465000U }, /* XSUM_XXH32_testdata[487] */ + { 244, 0x00000000U, 0x9BA349FFU }, /* XSUM_XXH32_testdata[488] */ + { 244, 0x9E3779B1U, 0x0752C3A7U }, /* XSUM_XXH32_testdata[489] */ + { 245, 0x00000000U, 0x68006247U }, /* XSUM_XXH32_testdata[490] */ + { 245, 0x9E3779B1U, 0x6FB5D6BCU }, /* XSUM_XXH32_testdata[491] */ + { 246, 0x00000000U, 0xBD690B67U }, /* XSUM_XXH32_testdata[492] */ + { 246, 0x9E3779B1U, 0x8083E6ADU }, /* XSUM_XXH32_testdata[493] */ + { 247, 0x00000000U, 0x88E644F7U }, /* XSUM_XXH32_testdata[494] */ + { 247, 0x9E3779B1U, 0x6C439B41U }, /* XSUM_XXH32_testdata[495] */ + { 248, 0x00000000U, 0xDBD38174U }, /* XSUM_XXH32_testdata[496] */ + { 248, 0x9E3779B1U, 0xC21A4CFAU }, /* XSUM_XXH32_testdata[497] */ + { 249, 0x00000000U, 0x7A9A3922U }, /* XSUM_XXH32_testdata[498] */ + { 249, 0x9E3779B1U, 0x4AA70D45U }, /* XSUM_XXH32_testdata[499] */ + { 250, 0x00000000U, 0xDCA8BCBEU }, /* XSUM_XXH32_testdata[500] */ + { 250, 0x9E3779B1U, 0x57D86074U }, /* XSUM_XXH32_testdata[501] */ + { 251, 0x00000000U, 0x1CC7C17BU }, /* XSUM_XXH32_testdata[502] */ + { 251, 0x9E3779B1U, 0x5A960706U }, /* XSUM_XXH32_testdata[503] */ + { 252, 0x00000000U, 0x7DDAADACU }, /* XSUM_XXH32_testdata[504] */ + { 252, 0x9E3779B1U, 0xC8C004DCU }, /* XSUM_XXH32_testdata[505] */ + { 253, 0x00000000U, 0x72FD8191U }, /* XSUM_XXH32_testdata[506] */ + { 253, 0x9E3779B1U, 0x2F101B03U }, /* XSUM_XXH32_testdata[507] */ + { 254, 0x00000000U, 0x0D07F150U }, /* XSUM_XXH32_testdata[508] */ + { 254, 0x9E3779B1U, 0x21F78D0DU }, /* XSUM_XXH32_testdata[509] */ + { 255, 0x00000000U, 0xE048E445U }, /* XSUM_XXH32_testdata[510] */ + { 255, 0x9E3779B1U, 0x9A92B749U }, /* XSUM_XXH32_testdata[511] */ + { 256, 0x00000000U, 0x520CB910U }, /* XSUM_XXH32_testdata[512] */ + { 256, 0x9E3779B1U, 0x734E8A8DU }, /* XSUM_XXH32_testdata[513] */ + { 257, 0x00000000U, 0x9566588EU }, /* XSUM_XXH32_testdata[514] */ + { 257, 0x9E3779B1U, 0x4A06AC3FU }, /* XSUM_XXH32_testdata[515] */ + { 258, 0x00000000U, 0x58EFFE56U }, /* XSUM_XXH32_testdata[516] */ + { 258, 0x9E3779B1U, 0x0284D4DCU }, /* XSUM_XXH32_testdata[517] */ + { 259, 0x00000000U, 0x1F6CB68FU }, /* XSUM_XXH32_testdata[518] */ + { 259, 0x9E3779B1U, 0xC6DD38D6U }, /* XSUM_XXH32_testdata[519] */ + { 260, 0x00000000U, 0x0177FBC0U }, /* XSUM_XXH32_testdata[520] */ + { 260, 0x9E3779B1U, 0xCA9AC0CEU }, /* XSUM_XXH32_testdata[521] */ + { 261, 0x00000000U, 0x437BA246U }, /* XSUM_XXH32_testdata[522] */ + { 261, 0x9E3779B1U, 0x6424A4E4U }, /* XSUM_XXH32_testdata[523] */ + { 262, 0x00000000U, 0x7DFD15E7U }, /* XSUM_XXH32_testdata[524] */ + { 262, 0x9E3779B1U, 0x067EEDF2U }, /* XSUM_XXH32_testdata[525] */ + { 263, 0x00000000U, 0x7BFD60CEU }, /* XSUM_XXH32_testdata[526] */ + { 263, 0x9E3779B1U, 0xEDEE5E47U }, /* XSUM_XXH32_testdata[527] */ + { 264, 0x00000000U, 0x92E3EC8DU }, /* XSUM_XXH32_testdata[528] */ + { 264, 0x9E3779B1U, 0x467D0FCCU }, /* XSUM_XXH32_testdata[529] */ + { 265, 0x00000000U, 0xC9057B25U }, /* XSUM_XXH32_testdata[530] */ + { 265, 0x9E3779B1U, 0x2D4D5572U }, /* XSUM_XXH32_testdata[531] */ + { 266, 0x00000000U, 0xBF4A38C0U }, /* XSUM_XXH32_testdata[532] */ + { 266, 0x9E3779B1U, 0x6D9BC26BU }, /* XSUM_XXH32_testdata[533] */ + { 267, 0x00000000U, 0xAD9D6E04U }, /* XSUM_XXH32_testdata[534] */ + { 267, 0x9E3779B1U, 0x9D13F48EU }, /* XSUM_XXH32_testdata[535] */ + { 268, 0x00000000U, 0xE8818377U }, /* XSUM_XXH32_testdata[536] */ + { 268, 0x9E3779B1U, 0xA1ADFAB5U }, /* XSUM_XXH32_testdata[537] */ + { 269, 0x00000000U, 0x4050B828U }, /* XSUM_XXH32_testdata[538] */ + { 269, 0x9E3779B1U, 0x1F388E55U }, /* XSUM_XXH32_testdata[539] */ + { 270, 0x00000000U, 0xA5151E7EU }, /* XSUM_XXH32_testdata[540] */ + { 270, 0x9E3779B1U, 0x748B3C1FU }, /* XSUM_XXH32_testdata[541] */ + { 271, 0x00000000U, 0xBB29ABC8U }, /* XSUM_XXH32_testdata[542] */ + { 271, 0x9E3779B1U, 0x9E262EFAU }, /* XSUM_XXH32_testdata[543] */ + { 272, 0x00000000U, 0x42AB99E9U }, /* XSUM_XXH32_testdata[544] */ + { 272, 0x9E3779B1U, 0x14F2C194U }, /* XSUM_XXH32_testdata[545] */ + { 273, 0x00000000U, 0xF34DBFE3U }, /* XSUM_XXH32_testdata[546] */ + { 273, 0x9E3779B1U, 0xB212E03EU }, /* XSUM_XXH32_testdata[547] */ + { 274, 0x00000000U, 0x1988AD89U }, /* XSUM_XXH32_testdata[548] */ + { 274, 0x9E3779B1U, 0x03EEFF8CU }, /* XSUM_XXH32_testdata[549] */ + { 275, 0x00000000U, 0xAEE9CE0EU }, /* XSUM_XXH32_testdata[550] */ + { 275, 0x9E3779B1U, 0x23A4F5C0U }, /* XSUM_XXH32_testdata[551] */ + { 276, 0x00000000U, 0xD0C6849BU }, /* XSUM_XXH32_testdata[552] */ + { 276, 0x9E3779B1U, 0xADD3AB66U }, /* XSUM_XXH32_testdata[553] */ + { 277, 0x00000000U, 0x4FC91B31U }, /* XSUM_XXH32_testdata[554] */ + { 277, 0x9E3779B1U, 0xABDC0BC8U }, /* XSUM_XXH32_testdata[555] */ + { 278, 0x00000000U, 0xEDFEAB16U }, /* XSUM_XXH32_testdata[556] */ + { 278, 0x9E3779B1U, 0x24893F33U }, /* XSUM_XXH32_testdata[557] */ + { 279, 0x00000000U, 0xF6F08914U }, /* XSUM_XXH32_testdata[558] */ + { 279, 0x9E3779B1U, 0xD7F6AD57U }, /* XSUM_XXH32_testdata[559] */ + { 280, 0x00000000U, 0xF87B452FU }, /* XSUM_XXH32_testdata[560] */ + { 280, 0x9E3779B1U, 0xA9E93011U }, /* XSUM_XXH32_testdata[561] */ + { 281, 0x00000000U, 0x078401F1U }, /* XSUM_XXH32_testdata[562] */ + { 281, 0x9E3779B1U, 0x537B2015U }, /* XSUM_XXH32_testdata[563] */ + { 282, 0x00000000U, 0x4DC6BCCBU }, /* XSUM_XXH32_testdata[564] */ + { 282, 0x9E3779B1U, 0x9B22B136U }, /* XSUM_XXH32_testdata[565] */ + { 283, 0x00000000U, 0x45CCD5A9U }, /* XSUM_XXH32_testdata[566] */ + { 283, 0x9E3779B1U, 0x599DDBF5U }, /* XSUM_XXH32_testdata[567] */ + { 284, 0x00000000U, 0xF1545F6CU }, /* XSUM_XXH32_testdata[568] */ + { 284, 0x9E3779B1U, 0xD12B1BB5U }, /* XSUM_XXH32_testdata[569] */ + { 285, 0x00000000U, 0x55151707U }, /* XSUM_XXH32_testdata[570] */ + { 285, 0x9E3779B1U, 0xE4E65E93U }, /* XSUM_XXH32_testdata[571] */ + { 286, 0x00000000U, 0x4864CB10U }, /* XSUM_XXH32_testdata[572] */ + { 286, 0x9E3779B1U, 0xEB22E05EU }, /* XSUM_XXH32_testdata[573] */ + { 287, 0x00000000U, 0x71733C3CU }, /* XSUM_XXH32_testdata[574] */ + { 287, 0x9E3779B1U, 0x9D7C06B6U }, /* XSUM_XXH32_testdata[575] */ + { 288, 0x00000000U, 0x65FC8E1AU }, /* XSUM_XXH32_testdata[576] */ + { 288, 0x9E3779B1U, 0x0C7FE1DCU }, /* XSUM_XXH32_testdata[577] */ + { 289, 0x00000000U, 0x10C0CE0DU }, /* XSUM_XXH32_testdata[578] */ + { 289, 0x9E3779B1U, 0x24DF0067U }, /* XSUM_XXH32_testdata[579] */ + { 290, 0x00000000U, 0x052E2F18U }, /* XSUM_XXH32_testdata[580] */ + { 290, 0x9E3779B1U, 0xC8C18E54U }, /* XSUM_XXH32_testdata[581] */ + { 291, 0x00000000U, 0x5BC0E4A1U }, /* XSUM_XXH32_testdata[582] */ + { 291, 0x9E3779B1U, 0x6B4A2DD2U }, /* XSUM_XXH32_testdata[583] */ + { 292, 0x00000000U, 0x1A23A055U }, /* XSUM_XXH32_testdata[584] */ + { 292, 0x9E3779B1U, 0x7E5D990EU }, /* XSUM_XXH32_testdata[585] */ + { 293, 0x00000000U, 0xC61E0D0CU }, /* XSUM_XXH32_testdata[586] */ + { 293, 0x9E3779B1U, 0xF4589434U }, /* XSUM_XXH32_testdata[587] */ + { 294, 0x00000000U, 0x4C387BCEU }, /* XSUM_XXH32_testdata[588] */ + { 294, 0x9E3779B1U, 0x1B11D015U }, /* XSUM_XXH32_testdata[589] */ + { 295, 0x00000000U, 0x510F75D4U }, /* XSUM_XXH32_testdata[590] */ + { 295, 0x9E3779B1U, 0x6CB21524U }, /* XSUM_XXH32_testdata[591] */ + { 296, 0x00000000U, 0xF6BEA3C9U }, /* XSUM_XXH32_testdata[592] */ + { 296, 0x9E3779B1U, 0xC980EDEAU }, /* XSUM_XXH32_testdata[593] */ + { 297, 0x00000000U, 0x9985E9F7U }, /* XSUM_XXH32_testdata[594] */ + { 297, 0x9E3779B1U, 0x6202CEA4U }, /* XSUM_XXH32_testdata[595] */ + { 298, 0x00000000U, 0x846241BEU }, /* XSUM_XXH32_testdata[596] */ + { 298, 0x9E3779B1U, 0xD6270150U }, /* XSUM_XXH32_testdata[597] */ + { 299, 0x00000000U, 0xCF8AE62AU }, /* XSUM_XXH32_testdata[598] */ + { 299, 0x9E3779B1U, 0xA113A485U }, /* XSUM_XXH32_testdata[599] */ + { 300, 0x00000000U, 0xEC9EA372U }, /* XSUM_XXH32_testdata[600] */ + { 300, 0x9E3779B1U, 0x3715A8EDU }, /* XSUM_XXH32_testdata[601] */ + { 301, 0x00000000U, 0x94D2F234U }, /* XSUM_XXH32_testdata[602] */ + { 301, 0x9E3779B1U, 0xA2C6BCB3U }, /* XSUM_XXH32_testdata[603] */ + { 302, 0x00000000U, 0xC39BF654U }, /* XSUM_XXH32_testdata[604] */ + { 302, 0x9E3779B1U, 0x326D48D3U }, /* XSUM_XXH32_testdata[605] */ + { 303, 0x00000000U, 0xFA12C6C5U }, /* XSUM_XXH32_testdata[606] */ + { 303, 0x9E3779B1U, 0x1A29A870U }, /* XSUM_XXH32_testdata[607] */ + { 304, 0x00000000U, 0xE7065CF3U }, /* XSUM_XXH32_testdata[608] */ + { 304, 0x9E3779B1U, 0xEBF7E110U }, /* XSUM_XXH32_testdata[609] */ + { 305, 0x00000000U, 0x1CBFCB1DU }, /* XSUM_XXH32_testdata[610] */ + { 305, 0x9E3779B1U, 0xADE0F9DDU }, /* XSUM_XXH32_testdata[611] */ + { 306, 0x00000000U, 0xBA26761FU }, /* XSUM_XXH32_testdata[612] */ + { 306, 0x9E3779B1U, 0x4FBDDDF2U }, /* XSUM_XXH32_testdata[613] */ + { 307, 0x00000000U, 0xE5E8634BU }, /* XSUM_XXH32_testdata[614] */ + { 307, 0x9E3779B1U, 0x6CBB8159U }, /* XSUM_XXH32_testdata[615] */ + { 308, 0x00000000U, 0xCFFE7DC2U }, /* XSUM_XXH32_testdata[616] */ + { 308, 0x9E3779B1U, 0x92A11674U }, /* XSUM_XXH32_testdata[617] */ + { 309, 0x00000000U, 0x2B58D124U }, /* XSUM_XXH32_testdata[618] */ + { 309, 0x9E3779B1U, 0x48AAAEE0U }, /* XSUM_XXH32_testdata[619] */ + { 310, 0x00000000U, 0xD18C8493U }, /* XSUM_XXH32_testdata[620] */ + { 310, 0x9E3779B1U, 0x1317A5AAU }, /* XSUM_XXH32_testdata[621] */ + { 311, 0x00000000U, 0x8EF639B9U }, /* XSUM_XXH32_testdata[622] */ + { 311, 0x9E3779B1U, 0x4A7CC97FU }, /* XSUM_XXH32_testdata[623] */ + { 312, 0x00000000U, 0x3DBFE4F9U }, /* XSUM_XXH32_testdata[624] */ + { 312, 0x9E3779B1U, 0xAF633803U }, /* XSUM_XXH32_testdata[625] */ + { 313, 0x00000000U, 0x51DFDAC5U }, /* XSUM_XXH32_testdata[626] */ + { 313, 0x9E3779B1U, 0x9BE6E6E2U }, /* XSUM_XXH32_testdata[627] */ + { 314, 0x00000000U, 0x1B519B9BU }, /* XSUM_XXH32_testdata[628] */ + { 314, 0x9E3779B1U, 0x5C65F410U }, /* XSUM_XXH32_testdata[629] */ + { 315, 0x00000000U, 0x48404B91U }, /* XSUM_XXH32_testdata[630] */ + { 315, 0x9E3779B1U, 0x93E7D7E5U }, /* XSUM_XXH32_testdata[631] */ + { 316, 0x00000000U, 0xB1544BECU }, /* XSUM_XXH32_testdata[632] */ + { 316, 0x9E3779B1U, 0xCC7A607DU }, /* XSUM_XXH32_testdata[633] */ + { 317, 0x00000000U, 0x6AA52990U }, /* XSUM_XXH32_testdata[634] */ + { 317, 0x9E3779B1U, 0xEB8D1460U }, /* XSUM_XXH32_testdata[635] */ + { 318, 0x00000000U, 0xB4727934U }, /* XSUM_XXH32_testdata[636] */ + { 318, 0x9E3779B1U, 0x105DBBF1U }, /* XSUM_XXH32_testdata[637] */ + { 319, 0x00000000U, 0x6A4013B2U }, /* XSUM_XXH32_testdata[638] */ + { 319, 0x9E3779B1U, 0x35D6E00BU }, /* XSUM_XXH32_testdata[639] */ + { 320, 0x00000000U, 0x49D521A8U }, /* XSUM_XXH32_testdata[640] */ + { 320, 0x9E3779B1U, 0x2D187FE0U }, /* XSUM_XXH32_testdata[641] */ + { 321, 0x00000000U, 0x3B5AB7A6U }, /* XSUM_XXH32_testdata[642] */ + { 321, 0x9E3779B1U, 0x2C2DA227U }, /* XSUM_XXH32_testdata[643] */ + { 322, 0x00000000U, 0x67551411U }, /* XSUM_XXH32_testdata[644] */ + { 322, 0x9E3779B1U, 0xB2F00616U }, /* XSUM_XXH32_testdata[645] */ + { 323, 0x00000000U, 0xFD5DEC59U }, /* XSUM_XXH32_testdata[646] */ + { 323, 0x9E3779B1U, 0x8A31C568U }, /* XSUM_XXH32_testdata[647] */ + { 324, 0x00000000U, 0x3F132747U }, /* XSUM_XXH32_testdata[648] */ + { 324, 0x9E3779B1U, 0x76587E1FU }, /* XSUM_XXH32_testdata[649] */ + { 325, 0x00000000U, 0xEEFDDEB3U }, /* XSUM_XXH32_testdata[650] */ + { 325, 0x9E3779B1U, 0x8ECB0743U }, /* XSUM_XXH32_testdata[651] */ + { 326, 0x00000000U, 0x45608CD3U }, /* XSUM_XXH32_testdata[652] */ + { 326, 0x9E3779B1U, 0xE5BC60C0U }, /* XSUM_XXH32_testdata[653] */ + { 327, 0x00000000U, 0xF6525A8EU }, /* XSUM_XXH32_testdata[654] */ + { 327, 0x9E3779B1U, 0x73E65050U }, /* XSUM_XXH32_testdata[655] */ + { 328, 0x00000000U, 0xD04FADF7U }, /* XSUM_XXH32_testdata[656] */ + { 328, 0x9E3779B1U, 0x2DA359EDU }, /* XSUM_XXH32_testdata[657] */ + { 329, 0x00000000U, 0x9B67E7C9U }, /* XSUM_XXH32_testdata[658] */ + { 329, 0x9E3779B1U, 0xFBB252BEU }, /* XSUM_XXH32_testdata[659] */ + { 330, 0x00000000U, 0xA4C77DFEU }, /* XSUM_XXH32_testdata[660] */ + { 330, 0x9E3779B1U, 0xA6A3DBD0U }, /* XSUM_XXH32_testdata[661] */ + { 331, 0x00000000U, 0x1BDC8DACU }, /* XSUM_XXH32_testdata[662] */ + { 331, 0x9E3779B1U, 0xDCA45209U }, /* XSUM_XXH32_testdata[663] */ + { 332, 0x00000000U, 0xB9AA8A58U }, /* XSUM_XXH32_testdata[664] */ + { 332, 0x9E3779B1U, 0x2A50940AU }, /* XSUM_XXH32_testdata[665] */ + { 333, 0x00000000U, 0xABD700B2U }, /* XSUM_XXH32_testdata[666] */ + { 333, 0x9E3779B1U, 0x2D3B5B12U }, /* XSUM_XXH32_testdata[667] */ + { 334, 0x00000000U, 0x602228A2U }, /* XSUM_XXH32_testdata[668] */ + { 334, 0x9E3779B1U, 0xFE23801EU }, /* XSUM_XXH32_testdata[669] */ + { 335, 0x00000000U, 0xE6806E19U }, /* XSUM_XXH32_testdata[670] */ + { 335, 0x9E3779B1U, 0x133CD99CU }, /* XSUM_XXH32_testdata[671] */ + { 336, 0x00000000U, 0x8A2CC656U }, /* XSUM_XXH32_testdata[672] */ + { 336, 0x9E3779B1U, 0x4732A952U }, /* XSUM_XXH32_testdata[673] */ + { 337, 0x00000000U, 0xCB430B24U }, /* XSUM_XXH32_testdata[674] */ + { 337, 0x9E3779B1U, 0x6EDB7F8BU }, /* XSUM_XXH32_testdata[675] */ + { 338, 0x00000000U, 0x7E23FA9BU }, /* XSUM_XXH32_testdata[676] */ + { 338, 0x9E3779B1U, 0x9F4999B8U }, /* XSUM_XXH32_testdata[677] */ + { 339, 0x00000000U, 0xFEA69FF3U }, /* XSUM_XXH32_testdata[678] */ + { 339, 0x9E3779B1U, 0xFE349AB8U }, /* XSUM_XXH32_testdata[679] */ + { 340, 0x00000000U, 0xA3E9BCB4U }, /* XSUM_XXH32_testdata[680] */ + { 340, 0x9E3779B1U, 0x6B9FF0B9U }, /* XSUM_XXH32_testdata[681] */ + { 341, 0x00000000U, 0xC76AB0B1U }, /* XSUM_XXH32_testdata[682] */ + { 341, 0x9E3779B1U, 0xB518A754U }, /* XSUM_XXH32_testdata[683] */ + { 342, 0x00000000U, 0xC53F6198U }, /* XSUM_XXH32_testdata[684] */ + { 342, 0x9E3779B1U, 0x3AF65171U }, /* XSUM_XXH32_testdata[685] */ + { 343, 0x00000000U, 0x3CE265B5U }, /* XSUM_XXH32_testdata[686] */ + { 343, 0x9E3779B1U, 0x26BA7450U }, /* XSUM_XXH32_testdata[687] */ + { 344, 0x00000000U, 0xE8E20ACEU }, /* XSUM_XXH32_testdata[688] */ + { 344, 0x9E3779B1U, 0xFDF720D1U }, /* XSUM_XXH32_testdata[689] */ + { 345, 0x00000000U, 0x80E40F24U }, /* XSUM_XXH32_testdata[690] */ + { 345, 0x9E3779B1U, 0xE0C03B0DU }, /* XSUM_XXH32_testdata[691] */ + { 346, 0x00000000U, 0x4B108213U }, /* XSUM_XXH32_testdata[692] */ + { 346, 0x9E3779B1U, 0x41A07629U }, /* XSUM_XXH32_testdata[693] */ + { 347, 0x00000000U, 0xAB337557U }, /* XSUM_XXH32_testdata[694] */ + { 347, 0x9E3779B1U, 0x9C945052U }, /* XSUM_XXH32_testdata[695] */ + { 348, 0x00000000U, 0x712F7232U }, /* XSUM_XXH32_testdata[696] */ + { 348, 0x9E3779B1U, 0xEB74617CU }, /* XSUM_XXH32_testdata[697] */ + { 349, 0x00000000U, 0xB57F971FU }, /* XSUM_XXH32_testdata[698] */ + { 349, 0x9E3779B1U, 0xC4BF19C5U }, /* XSUM_XXH32_testdata[699] */ + { 350, 0x00000000U, 0xF7D8DEDEU }, /* XSUM_XXH32_testdata[700] */ + { 350, 0x9E3779B1U, 0x61A8BC19U }, /* XSUM_XXH32_testdata[701] */ + { 351, 0x00000000U, 0x7C7F64BDU }, /* XSUM_XXH32_testdata[702] */ + { 351, 0x9E3779B1U, 0x76556F07U }, /* XSUM_XXH32_testdata[703] */ + { 352, 0x00000000U, 0x0A6A2125U }, /* XSUM_XXH32_testdata[704] */ + { 352, 0x9E3779B1U, 0x8378198AU }, /* XSUM_XXH32_testdata[705] */ + { 353, 0x00000000U, 0x33C0055AU }, /* XSUM_XXH32_testdata[706] */ + { 353, 0x9E3779B1U, 0xD31544F6U }, /* XSUM_XXH32_testdata[707] */ + { 354, 0x00000000U, 0x35A00295U }, /* XSUM_XXH32_testdata[708] */ + { 354, 0x9E3779B1U, 0xB29C8615U }, /* XSUM_XXH32_testdata[709] */ + { 355, 0x00000000U, 0x74FF6311U }, /* XSUM_XXH32_testdata[710] */ + { 355, 0x9E3779B1U, 0xB9AE081CU }, /* XSUM_XXH32_testdata[711] */ + { 356, 0x00000000U, 0xC86E7A0CU }, /* XSUM_XXH32_testdata[712] */ + { 356, 0x9E3779B1U, 0x63EC2C92U }, /* XSUM_XXH32_testdata[713] */ + { 357, 0x00000000U, 0x9D6FAB85U }, /* XSUM_XXH32_testdata[714] */ + { 357, 0x9E3779B1U, 0x0279C7ABU }, /* XSUM_XXH32_testdata[715] */ + { 358, 0x00000000U, 0x17E5E33EU }, /* XSUM_XXH32_testdata[716] */ + { 358, 0x9E3779B1U, 0xB3604FDFU }, /* XSUM_XXH32_testdata[717] */ + { 359, 0x00000000U, 0x3386545EU }, /* XSUM_XXH32_testdata[718] */ + { 359, 0x9E3779B1U, 0x366CBB5CU }, /* XSUM_XXH32_testdata[719] */ + { 360, 0x00000000U, 0xC61A7338U }, /* XSUM_XXH32_testdata[720] */ + { 360, 0x9E3779B1U, 0x4AF57A44U }, /* XSUM_XXH32_testdata[721] */ + { 361, 0x00000000U, 0x43F1AF2AU }, /* XSUM_XXH32_testdata[722] */ + { 361, 0x9E3779B1U, 0xB8DC3EB8U }, /* XSUM_XXH32_testdata[723] */ + { 362, 0x00000000U, 0x486B7D18U }, /* XSUM_XXH32_testdata[724] */ + { 362, 0x9E3779B1U, 0x824748A0U }, /* XSUM_XXH32_testdata[725] */ + { 363, 0x00000000U, 0x3A5BF026U }, /* XSUM_XXH32_testdata[726] */ + { 363, 0x9E3779B1U, 0x25BF3D9AU }, /* XSUM_XXH32_testdata[727] */ + { 364, 0x00000000U, 0xC7C1FA0AU }, /* XSUM_XXH32_testdata[728] */ + { 364, 0x9E3779B1U, 0xBDEDD6EEU }, /* XSUM_XXH32_testdata[729] */ + { 365, 0x00000000U, 0x19A7CDDFU }, /* XSUM_XXH32_testdata[730] */ + { 365, 0x9E3779B1U, 0x042C940AU }, /* XSUM_XXH32_testdata[731] */ + { 366, 0x00000000U, 0x3581C349U }, /* XSUM_XXH32_testdata[732] */ + { 366, 0x9E3779B1U, 0xC5F48B19U }, /* XSUM_XXH32_testdata[733] */ + { 367, 0x00000000U, 0x280BC93FU }, /* XSUM_XXH32_testdata[734] */ + { 367, 0x9E3779B1U, 0x8030A20BU }, /* XSUM_XXH32_testdata[735] */ + { 368, 0x00000000U, 0xBC95D911U }, /* XSUM_XXH32_testdata[736] */ + { 368, 0x9E3779B1U, 0x374BEB53U }, /* XSUM_XXH32_testdata[737] */ + { 369, 0x00000000U, 0x9F3068D0U }, /* XSUM_XXH32_testdata[738] */ + { 369, 0x9E3779B1U, 0x65458A66U }, /* XSUM_XXH32_testdata[739] */ + { 370, 0x00000000U, 0x6F8EADAEU }, /* XSUM_XXH32_testdata[740] */ + { 370, 0x9E3779B1U, 0xFE1D6768U }, /* XSUM_XXH32_testdata[741] */ + { 371, 0x00000000U, 0x3E36A074U }, /* XSUM_XXH32_testdata[742] */ + { 371, 0x9E3779B1U, 0x2D3887B0U }, /* XSUM_XXH32_testdata[743] */ + { 372, 0x00000000U, 0x12C2A151U }, /* XSUM_XXH32_testdata[744] */ + { 372, 0x9E3779B1U, 0x051647D3U }, /* XSUM_XXH32_testdata[745] */ + { 373, 0x00000000U, 0x27BF5245U }, /* XSUM_XXH32_testdata[746] */ + { 373, 0x9E3779B1U, 0xA67650A5U }, /* XSUM_XXH32_testdata[747] */ + { 374, 0x00000000U, 0x0BEF5B6AU }, /* XSUM_XXH32_testdata[748] */ + { 374, 0x9E3779B1U, 0xAE3E4EEFU }, /* XSUM_XXH32_testdata[749] */ + { 375, 0x00000000U, 0x599E4F08U }, /* XSUM_XXH32_testdata[750] */ + { 375, 0x9E3779B1U, 0xA5998BA7U }, /* XSUM_XXH32_testdata[751] */ + { 376, 0x00000000U, 0x36609F25U }, /* XSUM_XXH32_testdata[752] */ + { 376, 0x9E3779B1U, 0x42604EA1U }, /* XSUM_XXH32_testdata[753] */ + { 377, 0x00000000U, 0xE7B39A2FU }, /* XSUM_XXH32_testdata[754] */ + { 377, 0x9E3779B1U, 0x697661E0U }, /* XSUM_XXH32_testdata[755] */ + { 378, 0x00000000U, 0xE7509987U }, /* XSUM_XXH32_testdata[756] */ + { 378, 0x9E3779B1U, 0x85F246DCU }, /* XSUM_XXH32_testdata[757] */ + { 379, 0x00000000U, 0x48B7E112U }, /* XSUM_XXH32_testdata[758] */ + { 379, 0x9E3779B1U, 0x7480F47DU }, /* XSUM_XXH32_testdata[759] */ + { 380, 0x00000000U, 0xCA811579U }, /* XSUM_XXH32_testdata[760] */ + { 380, 0x9E3779B1U, 0x1E9F7D79U }, /* XSUM_XXH32_testdata[761] */ + { 381, 0x00000000U, 0xF8DE86DDU }, /* XSUM_XXH32_testdata[762] */ + { 381, 0x9E3779B1U, 0xF4B4B8D7U }, /* XSUM_XXH32_testdata[763] */ + { 382, 0x00000000U, 0xC8263BE0U }, /* XSUM_XXH32_testdata[764] */ + { 382, 0x9E3779B1U, 0xBABF4799U }, /* XSUM_XXH32_testdata[765] */ + { 383, 0x00000000U, 0xEC62F99DU }, /* XSUM_XXH32_testdata[766] */ + { 383, 0x9E3779B1U, 0x042733CCU }, /* XSUM_XXH32_testdata[767] */ + { 384, 0x00000000U, 0x331E1EE8U }, /* XSUM_XXH32_testdata[768] */ + { 384, 0x9E3779B1U, 0xEDB1100CU }, /* XSUM_XXH32_testdata[769] */ + { 385, 0x00000000U, 0xEE508486U }, /* XSUM_XXH32_testdata[770] */ + { 385, 0x9E3779B1U, 0x6ECCA303U }, /* XSUM_XXH32_testdata[771] */ + { 386, 0x00000000U, 0xEB4A5B0AU }, /* XSUM_XXH32_testdata[772] */ + { 386, 0x9E3779B1U, 0x97D933C9U }, /* XSUM_XXH32_testdata[773] */ + { 387, 0x00000000U, 0x3104541CU }, /* XSUM_XXH32_testdata[774] */ + { 387, 0x9E3779B1U, 0xA5D8A58BU }, /* XSUM_XXH32_testdata[775] */ + { 388, 0x00000000U, 0x4E969069U }, /* XSUM_XXH32_testdata[776] */ + { 388, 0x9E3779B1U, 0x111C7F65U }, /* XSUM_XXH32_testdata[777] */ + { 389, 0x00000000U, 0x014B7E47U }, /* XSUM_XXH32_testdata[778] */ + { 389, 0x9E3779B1U, 0x475107DCU }, /* XSUM_XXH32_testdata[779] */ + { 390, 0x00000000U, 0x643A23B8U }, /* XSUM_XXH32_testdata[780] */ + { 390, 0x9E3779B1U, 0xCEF1A493U }, /* XSUM_XXH32_testdata[781] */ + { 391, 0x00000000U, 0xBB874C44U }, /* XSUM_XXH32_testdata[782] */ + { 391, 0x9E3779B1U, 0x5965F7E0U }, /* XSUM_XXH32_testdata[783] */ + { 392, 0x00000000U, 0x3223BC1BU }, /* XSUM_XXH32_testdata[784] */ + { 392, 0x9E3779B1U, 0xFCC9F419U }, /* XSUM_XXH32_testdata[785] */ + { 393, 0x00000000U, 0x0B32747CU }, /* XSUM_XXH32_testdata[786] */ + { 393, 0x9E3779B1U, 0x4D51E1A1U }, /* XSUM_XXH32_testdata[787] */ + { 394, 0x00000000U, 0x0D6B374AU }, /* XSUM_XXH32_testdata[788] */ + { 394, 0x9E3779B1U, 0x907A9B49U }, /* XSUM_XXH32_testdata[789] */ + { 395, 0x00000000U, 0xE2BD516EU }, /* XSUM_XXH32_testdata[790] */ + { 395, 0x9E3779B1U, 0xECB4F843U }, /* XSUM_XXH32_testdata[791] */ + { 396, 0x00000000U, 0xC65D7F81U }, /* XSUM_XXH32_testdata[792] */ + { 396, 0x9E3779B1U, 0xEEA47B8FU }, /* XSUM_XXH32_testdata[793] */ + { 397, 0x00000000U, 0x619EB9A8U }, /* XSUM_XXH32_testdata[794] */ + { 397, 0x9E3779B1U, 0x14B06F84U }, /* XSUM_XXH32_testdata[795] */ + { 398, 0x00000000U, 0xD7735CAFU }, /* XSUM_XXH32_testdata[796] */ + { 398, 0x9E3779B1U, 0x4C09296AU }, /* XSUM_XXH32_testdata[797] */ + { 399, 0x00000000U, 0xF62123A8U }, /* XSUM_XXH32_testdata[798] */ + { 399, 0x9E3779B1U, 0x6743524FU }, /* XSUM_XXH32_testdata[799] */ + { 400, 0x00000000U, 0x3B64DD3FU }, /* XSUM_XXH32_testdata[800] */ + { 400, 0x9E3779B1U, 0x3B929C82U }, /* XSUM_XXH32_testdata[801] */ + { 401, 0x00000000U, 0x9F142B89U }, /* XSUM_XXH32_testdata[802] */ + { 401, 0x9E3779B1U, 0xE4073DAAU }, /* XSUM_XXH32_testdata[803] */ + { 402, 0x00000000U, 0xBC88BE0CU }, /* XSUM_XXH32_testdata[804] */ + { 402, 0x9E3779B1U, 0x0F66FD8DU }, /* XSUM_XXH32_testdata[805] */ + { 403, 0x00000000U, 0x6675FF5AU }, /* XSUM_XXH32_testdata[806] */ + { 403, 0x9E3779B1U, 0xBDE7AAB8U }, /* XSUM_XXH32_testdata[807] */ + { 404, 0x00000000U, 0x9D206630U }, /* XSUM_XXH32_testdata[808] */ + { 404, 0x9E3779B1U, 0xC1D77C42U }, /* XSUM_XXH32_testdata[809] */ + { 405, 0x00000000U, 0xEE14FA6FU }, /* XSUM_XXH32_testdata[810] */ + { 405, 0x9E3779B1U, 0x5BF87816U }, /* XSUM_XXH32_testdata[811] */ + { 406, 0x00000000U, 0x4388EF50U }, /* XSUM_XXH32_testdata[812] */ + { 406, 0x9E3779B1U, 0x8FEAFDACU }, /* XSUM_XXH32_testdata[813] */ + { 407, 0x00000000U, 0xACC118FEU }, /* XSUM_XXH32_testdata[814] */ + { 407, 0x9E3779B1U, 0x9E582945U }, /* XSUM_XXH32_testdata[815] */ + { 408, 0x00000000U, 0xF48A158DU }, /* XSUM_XXH32_testdata[816] */ + { 408, 0x9E3779B1U, 0xDB6ABD2EU }, /* XSUM_XXH32_testdata[817] */ + { 409, 0x00000000U, 0xAB172472U }, /* XSUM_XXH32_testdata[818] */ + { 409, 0x9E3779B1U, 0x3EF39FA7U }, /* XSUM_XXH32_testdata[819] */ + { 410, 0x00000000U, 0x308A5996U }, /* XSUM_XXH32_testdata[820] */ + { 410, 0x9E3779B1U, 0xDF58D30DU }, /* XSUM_XXH32_testdata[821] */ + { 411, 0x00000000U, 0x8E6632CCU }, /* XSUM_XXH32_testdata[822] */ + { 411, 0x9E3779B1U, 0x53D2AC13U }, /* XSUM_XXH32_testdata[823] */ + { 412, 0x00000000U, 0xF490CD0AU }, /* XSUM_XXH32_testdata[824] */ + { 412, 0x9E3779B1U, 0x0FCE7F43U }, /* XSUM_XXH32_testdata[825] */ + { 413, 0x00000000U, 0x7E9F0399U }, /* XSUM_XXH32_testdata[826] */ + { 413, 0x9E3779B1U, 0x21014515U }, /* XSUM_XXH32_testdata[827] */ + { 414, 0x00000000U, 0x859E5F00U }, /* XSUM_XXH32_testdata[828] */ + { 414, 0x9E3779B1U, 0x686DF7E3U }, /* XSUM_XXH32_testdata[829] */ + { 415, 0x00000000U, 0xE1E7F4E5U }, /* XSUM_XXH32_testdata[830] */ + { 415, 0x9E3779B1U, 0xD821669EU }, /* XSUM_XXH32_testdata[831] */ + { 416, 0x00000000U, 0x8E71476EU }, /* XSUM_XXH32_testdata[832] */ + { 416, 0x9E3779B1U, 0x3C03901EU }, /* XSUM_XXH32_testdata[833] */ + { 417, 0x00000000U, 0x9F24CA04U }, /* XSUM_XXH32_testdata[834] */ + { 417, 0x9E3779B1U, 0x2F51519CU }, /* XSUM_XXH32_testdata[835] */ + { 418, 0x00000000U, 0xDC70F04CU }, /* XSUM_XXH32_testdata[836] */ + { 418, 0x9E3779B1U, 0x8F28D8E8U }, /* XSUM_XXH32_testdata[837] */ + { 419, 0x00000000U, 0x214BD5BDU }, /* XSUM_XXH32_testdata[838] */ + { 419, 0x9E3779B1U, 0x1B23494CU }, /* XSUM_XXH32_testdata[839] */ + { 420, 0x00000000U, 0x7F7E0759U }, /* XSUM_XXH32_testdata[840] */ + { 420, 0x9E3779B1U, 0x825F8A94U }, /* XSUM_XXH32_testdata[841] */ + { 421, 0x00000000U, 0xB23F1C90U }, /* XSUM_XXH32_testdata[842] */ + { 421, 0x9E3779B1U, 0x2F551E69U }, /* XSUM_XXH32_testdata[843] */ + { 422, 0x00000000U, 0xE81A4E34U }, /* XSUM_XXH32_testdata[844] */ + { 422, 0x9E3779B1U, 0xEBBE70E4U }, /* XSUM_XXH32_testdata[845] */ + { 423, 0x00000000U, 0x4AAE47A6U }, /* XSUM_XXH32_testdata[846] */ + { 423, 0x9E3779B1U, 0xAC4140ABU }, /* XSUM_XXH32_testdata[847] */ + { 424, 0x00000000U, 0xFD906A48U }, /* XSUM_XXH32_testdata[848] */ + { 424, 0x9E3779B1U, 0x6A88714BU }, /* XSUM_XXH32_testdata[849] */ + { 425, 0x00000000U, 0x7570F9CEU }, /* XSUM_XXH32_testdata[850] */ + { 425, 0x9E3779B1U, 0xFB986106U }, /* XSUM_XXH32_testdata[851] */ + { 426, 0x00000000U, 0xEBD5D72BU }, /* XSUM_XXH32_testdata[852] */ + { 426, 0x9E3779B1U, 0xBECD7793U }, /* XSUM_XXH32_testdata[853] */ + { 427, 0x00000000U, 0x6C04F6E8U }, /* XSUM_XXH32_testdata[854] */ + { 427, 0x9E3779B1U, 0xCC887616U }, /* XSUM_XXH32_testdata[855] */ + { 428, 0x00000000U, 0x6514CD26U }, /* XSUM_XXH32_testdata[856] */ + { 428, 0x9E3779B1U, 0x41F71FC5U }, /* XSUM_XXH32_testdata[857] */ + { 429, 0x00000000U, 0xA287F178U }, /* XSUM_XXH32_testdata[858] */ + { 429, 0x9E3779B1U, 0xA1536EDFU }, /* XSUM_XXH32_testdata[859] */ + { 430, 0x00000000U, 0x62B099D8U }, /* XSUM_XXH32_testdata[860] */ + { 430, 0x9E3779B1U, 0x5C5504C2U }, /* XSUM_XXH32_testdata[861] */ + { 431, 0x00000000U, 0x1F6DC602U }, /* XSUM_XXH32_testdata[862] */ + { 431, 0x9E3779B1U, 0x5AE9F727U }, /* XSUM_XXH32_testdata[863] */ + { 432, 0x00000000U, 0xF248875CU }, /* XSUM_XXH32_testdata[864] */ + { 432, 0x9E3779B1U, 0x74099376U }, /* XSUM_XXH32_testdata[865] */ + { 433, 0x00000000U, 0x5590F9BAU }, /* XSUM_XXH32_testdata[866] */ + { 433, 0x9E3779B1U, 0x5ECB00D4U }, /* XSUM_XXH32_testdata[867] */ + { 434, 0x00000000U, 0x2021D0DDU }, /* XSUM_XXH32_testdata[868] */ + { 434, 0x9E3779B1U, 0x4EFAF456U }, /* XSUM_XXH32_testdata[869] */ + { 435, 0x00000000U, 0x0EACB2AAU }, /* XSUM_XXH32_testdata[870] */ + { 435, 0x9E3779B1U, 0xC5637245U }, /* XSUM_XXH32_testdata[871] */ + { 436, 0x00000000U, 0xCE6D872CU }, /* XSUM_XXH32_testdata[872] */ + { 436, 0x9E3779B1U, 0x1C276456U }, /* XSUM_XXH32_testdata[873] */ + { 437, 0x00000000U, 0x8F82A80FU }, /* XSUM_XXH32_testdata[874] */ + { 437, 0x9E3779B1U, 0x7029494BU }, /* XSUM_XXH32_testdata[875] */ + { 438, 0x00000000U, 0x4E427015U }, /* XSUM_XXH32_testdata[876] */ + { 438, 0x9E3779B1U, 0x368A39D9U }, /* XSUM_XXH32_testdata[877] */ + { 439, 0x00000000U, 0x245B6031U }, /* XSUM_XXH32_testdata[878] */ + { 439, 0x9E3779B1U, 0x80B0B122U }, /* XSUM_XXH32_testdata[879] */ + { 440, 0x00000000U, 0xAD5AFF03U }, /* XSUM_XXH32_testdata[880] */ + { 440, 0x9E3779B1U, 0xF3BC5BC5U }, /* XSUM_XXH32_testdata[881] */ + { 441, 0x00000000U, 0xCD89EA32U }, /* XSUM_XXH32_testdata[882] */ + { 441, 0x9E3779B1U, 0x5BE88559U }, /* XSUM_XXH32_testdata[883] */ + { 442, 0x00000000U, 0x57F22820U }, /* XSUM_XXH32_testdata[884] */ + { 442, 0x9E3779B1U, 0x6C60E5F3U }, /* XSUM_XXH32_testdata[885] */ + { 443, 0x00000000U, 0xB2C31C2CU }, /* XSUM_XXH32_testdata[886] */ + { 443, 0x9E3779B1U, 0xC13DF407U }, /* XSUM_XXH32_testdata[887] */ + { 444, 0x00000000U, 0x8D863D75U }, /* XSUM_XXH32_testdata[888] */ + { 444, 0x9E3779B1U, 0xC2102CEFU }, /* XSUM_XXH32_testdata[889] */ + { 445, 0x00000000U, 0x00D80351U }, /* XSUM_XXH32_testdata[890] */ + { 445, 0x9E3779B1U, 0x7A5AA759U }, /* XSUM_XXH32_testdata[891] */ + { 446, 0x00000000U, 0x6F884EE2U }, /* XSUM_XXH32_testdata[892] */ + { 446, 0x9E3779B1U, 0x093D3AFBU }, /* XSUM_XXH32_testdata[893] */ + { 447, 0x00000000U, 0xDE51F8A6U }, /* XSUM_XXH32_testdata[894] */ + { 447, 0x9E3779B1U, 0x05C1C15BU }, /* XSUM_XXH32_testdata[895] */ + { 448, 0x00000000U, 0x432830F5U }, /* XSUM_XXH32_testdata[896] */ + { 448, 0x9E3779B1U, 0xC6AECF11U }, /* XSUM_XXH32_testdata[897] */ + { 449, 0x00000000U, 0x26F802C7U }, /* XSUM_XXH32_testdata[898] */ + { 449, 0x9E3779B1U, 0xCE969CDBU }, /* XSUM_XXH32_testdata[899] */ + { 450, 0x00000000U, 0x38E984BEU }, /* XSUM_XXH32_testdata[900] */ + { 450, 0x9E3779B1U, 0xE120F08AU }, /* XSUM_XXH32_testdata[901] */ + { 451, 0x00000000U, 0x5832D435U }, /* XSUM_XXH32_testdata[902] */ + { 451, 0x9E3779B1U, 0x7F2E93ADU }, /* XSUM_XXH32_testdata[903] */ + { 452, 0x00000000U, 0x5689682DU }, /* XSUM_XXH32_testdata[904] */ + { 452, 0x9E3779B1U, 0x85793AD6U }, /* XSUM_XXH32_testdata[905] */ + { 453, 0x00000000U, 0xD777485DU }, /* XSUM_XXH32_testdata[906] */ + { 453, 0x9E3779B1U, 0x20A0C4FBU }, /* XSUM_XXH32_testdata[907] */ + { 454, 0x00000000U, 0x973A7FB6U }, /* XSUM_XXH32_testdata[908] */ + { 454, 0x9E3779B1U, 0xE7C00D0DU }, /* XSUM_XXH32_testdata[909] */ + { 455, 0x00000000U, 0x49563743U }, /* XSUM_XXH32_testdata[910] */ + { 455, 0x9E3779B1U, 0xBC845A31U }, /* XSUM_XXH32_testdata[911] */ + { 456, 0x00000000U, 0x54C77C2DU }, /* XSUM_XXH32_testdata[912] */ + { 456, 0x9E3779B1U, 0x8A4F4F36U }, /* XSUM_XXH32_testdata[913] */ + { 457, 0x00000000U, 0x664D3559U }, /* XSUM_XXH32_testdata[914] */ + { 457, 0x9E3779B1U, 0xECFB3EFAU }, /* XSUM_XXH32_testdata[915] */ + { 458, 0x00000000U, 0x98277A3BU }, /* XSUM_XXH32_testdata[916] */ + { 458, 0x9E3779B1U, 0xEE732216U }, /* XSUM_XXH32_testdata[917] */ + { 459, 0x00000000U, 0xFEB56F14U }, /* XSUM_XXH32_testdata[918] */ + { 459, 0x9E3779B1U, 0xD156A399U }, /* XSUM_XXH32_testdata[919] */ + { 460, 0x00000000U, 0xCCDE1DE4U }, /* XSUM_XXH32_testdata[920] */ + { 460, 0x9E3779B1U, 0x45B526F0U }, /* XSUM_XXH32_testdata[921] */ + { 461, 0x00000000U, 0x40BDF622U }, /* XSUM_XXH32_testdata[922] */ + { 461, 0x9E3779B1U, 0x4E5385C5U }, /* XSUM_XXH32_testdata[923] */ + { 462, 0x00000000U, 0xB49A5412U }, /* XSUM_XXH32_testdata[924] */ + { 462, 0x9E3779B1U, 0x2027820EU }, /* XSUM_XXH32_testdata[925] */ + { 463, 0x00000000U, 0xD56A74EDU }, /* XSUM_XXH32_testdata[926] */ + { 463, 0x9E3779B1U, 0x18E3A285U }, /* XSUM_XXH32_testdata[927] */ + { 464, 0x00000000U, 0x87536B30U }, /* XSUM_XXH32_testdata[928] */ + { 464, 0x9E3779B1U, 0xCBC6694CU }, /* XSUM_XXH32_testdata[929] */ + { 465, 0x00000000U, 0x5C57EBE2U }, /* XSUM_XXH32_testdata[930] */ + { 465, 0x9E3779B1U, 0xD3B0BBE1U }, /* XSUM_XXH32_testdata[931] */ + { 466, 0x00000000U, 0x0D6F434FU }, /* XSUM_XXH32_testdata[932] */ + { 466, 0x9E3779B1U, 0xB1D8E552U }, /* XSUM_XXH32_testdata[933] */ + { 467, 0x00000000U, 0x63C5A6D6U }, /* XSUM_XXH32_testdata[934] */ + { 467, 0x9E3779B1U, 0x60A72A01U }, /* XSUM_XXH32_testdata[935] */ + { 468, 0x00000000U, 0x9DF34052U }, /* XSUM_XXH32_testdata[936] */ + { 468, 0x9E3779B1U, 0x4B0919FAU }, /* XSUM_XXH32_testdata[937] */ + { 469, 0x00000000U, 0xA0893A83U }, /* XSUM_XXH32_testdata[938] */ + { 469, 0x9E3779B1U, 0xF828D25AU }, /* XSUM_XXH32_testdata[939] */ + { 470, 0x00000000U, 0x268E79E7U }, /* XSUM_XXH32_testdata[940] */ + { 470, 0x9E3779B1U, 0xE113114BU }, /* XSUM_XXH32_testdata[941] */ + { 471, 0x00000000U, 0x7B180A13U }, /* XSUM_XXH32_testdata[942] */ + { 471, 0x9E3779B1U, 0x5114F053U }, /* XSUM_XXH32_testdata[943] */ + { 472, 0x00000000U, 0x715EEEB8U }, /* XSUM_XXH32_testdata[944] */ + { 472, 0x9E3779B1U, 0xEE2237DBU }, /* XSUM_XXH32_testdata[945] */ + { 473, 0x00000000U, 0x9675D294U }, /* XSUM_XXH32_testdata[946] */ + { 473, 0x9E3779B1U, 0xDE0E0126U }, /* XSUM_XXH32_testdata[947] */ + { 474, 0x00000000U, 0x4FD98BFFU }, /* XSUM_XXH32_testdata[948] */ + { 474, 0x9E3779B1U, 0x9EB9ED42U }, /* XSUM_XXH32_testdata[949] */ + { 475, 0x00000000U, 0x82C70BFDU }, /* XSUM_XXH32_testdata[950] */ + { 475, 0x9E3779B1U, 0x2F7A5ACBU }, /* XSUM_XXH32_testdata[951] */ + { 476, 0x00000000U, 0x3E9A1572U }, /* XSUM_XXH32_testdata[952] */ + { 476, 0x9E3779B1U, 0x297C9081U }, /* XSUM_XXH32_testdata[953] */ + { 477, 0x00000000U, 0x00D57F59U }, /* XSUM_XXH32_testdata[954] */ + { 477, 0x9E3779B1U, 0x8A3B48ADU }, /* XSUM_XXH32_testdata[955] */ + { 478, 0x00000000U, 0x968C46FDU }, /* XSUM_XXH32_testdata[956] */ + { 478, 0x9E3779B1U, 0x9E6D5422U }, /* XSUM_XXH32_testdata[957] */ + { 479, 0x00000000U, 0x13D44DEDU }, /* XSUM_XXH32_testdata[958] */ + { 479, 0x9E3779B1U, 0xE0AC51ECU }, /* XSUM_XXH32_testdata[959] */ + { 480, 0x00000000U, 0xFA701665U }, /* XSUM_XXH32_testdata[960] */ + { 480, 0x9E3779B1U, 0x279E4B73U }, /* XSUM_XXH32_testdata[961] */ + { 481, 0x00000000U, 0xA02F2709U }, /* XSUM_XXH32_testdata[962] */ + { 481, 0x9E3779B1U, 0xDC94B814U }, /* XSUM_XXH32_testdata[963] */ + { 482, 0x00000000U, 0xE77711F6U }, /* XSUM_XXH32_testdata[964] */ + { 482, 0x9E3779B1U, 0xE68C3BD2U }, /* XSUM_XXH32_testdata[965] */ + { 483, 0x00000000U, 0x95470A4AU }, /* XSUM_XXH32_testdata[966] */ + { 483, 0x9E3779B1U, 0xB0E8A315U }, /* XSUM_XXH32_testdata[967] */ + { 484, 0x00000000U, 0x6702FC8EU }, /* XSUM_XXH32_testdata[968] */ + { 484, 0x9E3779B1U, 0x5230264BU }, /* XSUM_XXH32_testdata[969] */ + { 485, 0x00000000U, 0x98C3DBA5U }, /* XSUM_XXH32_testdata[970] */ + { 485, 0x9E3779B1U, 0x93949CC3U }, /* XSUM_XXH32_testdata[971] */ + { 486, 0x00000000U, 0x28C00DA0U }, /* XSUM_XXH32_testdata[972] */ + { 486, 0x9E3779B1U, 0x909F67EBU }, /* XSUM_XXH32_testdata[973] */ + { 487, 0x00000000U, 0xDBEC9175U }, /* XSUM_XXH32_testdata[974] */ + { 487, 0x9E3779B1U, 0xAD48356FU }, /* XSUM_XXH32_testdata[975] */ + { 488, 0x00000000U, 0xEF419D7BU }, /* XSUM_XXH32_testdata[976] */ + { 488, 0x9E3779B1U, 0xC6D3D6ABU }, /* XSUM_XXH32_testdata[977] */ + { 489, 0x00000000U, 0x3D4F87B3U }, /* XSUM_XXH32_testdata[978] */ + { 489, 0x9E3779B1U, 0xE3ADF317U }, /* XSUM_XXH32_testdata[979] */ + { 490, 0x00000000U, 0x2EDA373CU }, /* XSUM_XXH32_testdata[980] */ + { 490, 0x9E3779B1U, 0x8488A6BAU }, /* XSUM_XXH32_testdata[981] */ + { 491, 0x00000000U, 0xBD2D6FE1U }, /* XSUM_XXH32_testdata[982] */ + { 491, 0x9E3779B1U, 0xF99ED7DEU }, /* XSUM_XXH32_testdata[983] */ + { 492, 0x00000000U, 0x58CD817BU }, /* XSUM_XXH32_testdata[984] */ + { 492, 0x9E3779B1U, 0x7DE35E46U }, /* XSUM_XXH32_testdata[985] */ + { 493, 0x00000000U, 0xE4D1B854U }, /* XSUM_XXH32_testdata[986] */ + { 493, 0x9E3779B1U, 0x9C57E5C8U }, /* XSUM_XXH32_testdata[987] */ + { 494, 0x00000000U, 0x23E0C3CDU }, /* XSUM_XXH32_testdata[988] */ + { 494, 0x9E3779B1U, 0xD00A9348U }, /* XSUM_XXH32_testdata[989] */ + { 495, 0x00000000U, 0x673567E4U }, /* XSUM_XXH32_testdata[990] */ + { 495, 0x9E3779B1U, 0x393D7A9DU }, /* XSUM_XXH32_testdata[991] */ + { 496, 0x00000000U, 0xD8A934B3U }, /* XSUM_XXH32_testdata[992] */ + { 496, 0x9E3779B1U, 0xEAA0A65DU }, /* XSUM_XXH32_testdata[993] */ + { 497, 0x00000000U, 0x0611B201U }, /* XSUM_XXH32_testdata[994] */ + { 497, 0x9E3779B1U, 0xC30359CBU }, /* XSUM_XXH32_testdata[995] */ + { 498, 0x00000000U, 0x6561A6B7U }, /* XSUM_XXH32_testdata[996] */ + { 498, 0x9E3779B1U, 0x9E9C406FU }, /* XSUM_XXH32_testdata[997] */ + { 499, 0x00000000U, 0xC8F50206U }, /* XSUM_XXH32_testdata[998] */ + { 499, 0x9E3779B1U, 0x8428371CU }, /* XSUM_XXH32_testdata[999] */ + { 500, 0x00000000U, 0x8BEB3775U }, /* XSUM_XXH32_testdata[1000] */ + { 500, 0x9E3779B1U, 0xA901249EU }, /* XSUM_XXH32_testdata[1001] */ + { 501, 0x00000000U, 0x98582798U }, /* XSUM_XXH32_testdata[1002] */ + { 501, 0x9E3779B1U, 0x672E0008U }, /* XSUM_XXH32_testdata[1003] */ + { 502, 0x00000000U, 0x9B80E88AU }, /* XSUM_XXH32_testdata[1004] */ + { 502, 0x9E3779B1U, 0x567F3B9BU }, /* XSUM_XXH32_testdata[1005] */ + { 503, 0x00000000U, 0x322C52B7U }, /* XSUM_XXH32_testdata[1006] */ + { 503, 0x9E3779B1U, 0xD2A4AD6FU }, /* XSUM_XXH32_testdata[1007] */ + { 504, 0x00000000U, 0x06002976U }, /* XSUM_XXH32_testdata[1008] */ + { 504, 0x9E3779B1U, 0x83DC804DU }, /* XSUM_XXH32_testdata[1009] */ + { 505, 0x00000000U, 0x304BC8CEU }, /* XSUM_XXH32_testdata[1010] */ + { 505, 0x9E3779B1U, 0xC498DFE4U }, /* XSUM_XXH32_testdata[1011] */ + { 506, 0x00000000U, 0x34A20E8DU }, /* XSUM_XXH32_testdata[1012] */ + { 506, 0x9E3779B1U, 0x946BAC08U }, /* XSUM_XXH32_testdata[1013] */ + { 507, 0x00000000U, 0x992B910AU }, /* XSUM_XXH32_testdata[1014] */ + { 507, 0x9E3779B1U, 0xD20E8CDFU }, /* XSUM_XXH32_testdata[1015] */ + { 508, 0x00000000U, 0x8319D68AU }, /* XSUM_XXH32_testdata[1016] */ + { 508, 0x9E3779B1U, 0x3110E267U }, /* XSUM_XXH32_testdata[1017] */ + { 509, 0x00000000U, 0xAF0775DFU }, /* XSUM_XXH32_testdata[1018] */ + { 509, 0x9E3779B1U, 0x8A6D215BU }, /* XSUM_XXH32_testdata[1019] */ + { 510, 0x00000000U, 0x798D69BBU }, /* XSUM_XXH32_testdata[1020] */ + { 510, 0x9E3779B1U, 0xE958E92BU }, /* XSUM_XXH32_testdata[1021] */ + { 511, 0x00000000U, 0xC79D6F2EU }, /* XSUM_XXH32_testdata[1022] */ + { 511, 0x9E3779B1U, 0x4486B549U }, /* XSUM_XXH32_testdata[1023] */ + { 512, 0x00000000U, 0xD485C30AU }, /* XSUM_XXH32_testdata[1024] */ + { 512, 0x9E3779B1U, 0x6CCF94A9U }, /* XSUM_XXH32_testdata[1025] */ + { 513, 0x00000000U, 0x6C63C50EU }, /* XSUM_XXH32_testdata[1026] */ + { 513, 0x9E3779B1U, 0xAB0CEFD4U }, /* XSUM_XXH32_testdata[1027] */ + { 514, 0x00000000U, 0x2DC9B41AU }, /* XSUM_XXH32_testdata[1028] */ + { 514, 0x9E3779B1U, 0x5EC73449U }, /* XSUM_XXH32_testdata[1029] */ + { 515, 0x00000000U, 0xB0FB9A38U }, /* XSUM_XXH32_testdata[1030] */ + { 515, 0x9E3779B1U, 0xB0AC3757U }, /* XSUM_XXH32_testdata[1031] */ + { 516, 0x00000000U, 0x4A8C1861U }, /* XSUM_XXH32_testdata[1032] */ + { 516, 0x9E3779B1U, 0xFE9B0BE8U }, /* XSUM_XXH32_testdata[1033] */ + { 517, 0x00000000U, 0x75DE8B99U }, /* XSUM_XXH32_testdata[1034] */ + { 517, 0x9E3779B1U, 0x60C1EB2EU }, /* XSUM_XXH32_testdata[1035] */ + { 518, 0x00000000U, 0x008C3D32U }, /* XSUM_XXH32_testdata[1036] */ + { 518, 0x9E3779B1U, 0xF287822AU }, /* XSUM_XXH32_testdata[1037] */ + { 519, 0x00000000U, 0xF919FEFDU }, /* XSUM_XXH32_testdata[1038] */ + { 519, 0x9E3779B1U, 0x56698312U }, /* XSUM_XXH32_testdata[1039] */ + { 520, 0x00000000U, 0x1D2F12D6U }, /* XSUM_XXH32_testdata[1040] */ + { 520, 0x9E3779B1U, 0x731D9AE6U }, /* XSUM_XXH32_testdata[1041] */ + { 521, 0x00000000U, 0x2CD568BCU }, /* XSUM_XXH32_testdata[1042] */ + { 521, 0x9E3779B1U, 0x7AEC499BU }, /* XSUM_XXH32_testdata[1043] */ + { 522, 0x00000000U, 0xB03EEA72U }, /* XSUM_XXH32_testdata[1044] */ + { 522, 0x9E3779B1U, 0x7FC900D3U }, /* XSUM_XXH32_testdata[1045] */ + { 523, 0x00000000U, 0x93312B2FU }, /* XSUM_XXH32_testdata[1046] */ + { 523, 0x9E3779B1U, 0x872516FFU }, /* XSUM_XXH32_testdata[1047] */ + { 524, 0x00000000U, 0x879A2BACU }, /* XSUM_XXH32_testdata[1048] */ + { 524, 0x9E3779B1U, 0xC7E2B1C2U }, /* XSUM_XXH32_testdata[1049] */ + { 525, 0x00000000U, 0x3F152E85U }, /* XSUM_XXH32_testdata[1050] */ + { 525, 0x9E3779B1U, 0x4CAE54F1U }, /* XSUM_XXH32_testdata[1051] */ + { 526, 0x00000000U, 0xC047BF75U }, /* XSUM_XXH32_testdata[1052] */ + { 526, 0x9E3779B1U, 0xA83C9F31U }, /* XSUM_XXH32_testdata[1053] */ + { 527, 0x00000000U, 0xFFC3CA2FU }, /* XSUM_XXH32_testdata[1054] */ + { 527, 0x9E3779B1U, 0x3381A5B9U }, /* XSUM_XXH32_testdata[1055] */ + { 528, 0x00000000U, 0xCADCFDD7U }, /* XSUM_XXH32_testdata[1056] */ + { 528, 0x9E3779B1U, 0xDDEB2437U }, /* XSUM_XXH32_testdata[1057] */ + { 529, 0x00000000U, 0x8D43B097U }, /* XSUM_XXH32_testdata[1058] */ + { 529, 0x9E3779B1U, 0x079A294CU }, /* XSUM_XXH32_testdata[1059] */ + { 530, 0x00000000U, 0xEA80C01AU }, /* XSUM_XXH32_testdata[1060] */ + { 530, 0x9E3779B1U, 0x3B254F04U }, /* XSUM_XXH32_testdata[1061] */ + { 531, 0x00000000U, 0x6C09961BU }, /* XSUM_XXH32_testdata[1062] */ + { 531, 0x9E3779B1U, 0x1EFEDE87U }, /* XSUM_XXH32_testdata[1063] */ + { 532, 0x00000000U, 0xACEF9E82U }, /* XSUM_XXH32_testdata[1064] */ + { 532, 0x9E3779B1U, 0xDDB9C9A0U }, /* XSUM_XXH32_testdata[1065] */ + { 533, 0x00000000U, 0xE2656FE5U }, /* XSUM_XXH32_testdata[1066] */ + { 533, 0x9E3779B1U, 0x996A254DU }, /* XSUM_XXH32_testdata[1067] */ + { 534, 0x00000000U, 0x59FED3E4U }, /* XSUM_XXH32_testdata[1068] */ + { 534, 0x9E3779B1U, 0x4B0827ACU }, /* XSUM_XXH32_testdata[1069] */ + { 535, 0x00000000U, 0x59CC55B2U }, /* XSUM_XXH32_testdata[1070] */ + { 535, 0x9E3779B1U, 0x01DA2A1FU }, /* XSUM_XXH32_testdata[1071] */ + { 536, 0x00000000U, 0x9AD1040CU }, /* XSUM_XXH32_testdata[1072] */ + { 536, 0x9E3779B1U, 0x9B682F40U }, /* XSUM_XXH32_testdata[1073] */ + { 537, 0x00000000U, 0x2A68CF02U }, /* XSUM_XXH32_testdata[1074] */ + { 537, 0x9E3779B1U, 0xD02EBBC5U }, /* XSUM_XXH32_testdata[1075] */ + { 538, 0x00000000U, 0x6B4A67A0U }, /* XSUM_XXH32_testdata[1076] */ + { 538, 0x9E3779B1U, 0xA52541F3U }, /* XSUM_XXH32_testdata[1077] */ + { 539, 0x00000000U, 0x83C21C2FU }, /* XSUM_XXH32_testdata[1078] */ + { 539, 0x9E3779B1U, 0xEEBCB4DAU }, /* XSUM_XXH32_testdata[1079] */ + { 540, 0x00000000U, 0xA828F35EU }, /* XSUM_XXH32_testdata[1080] */ + { 540, 0x9E3779B1U, 0xC835265CU }, /* XSUM_XXH32_testdata[1081] */ + { 541, 0x00000000U, 0xFCAE55B9U }, /* XSUM_XXH32_testdata[1082] */ + { 541, 0x9E3779B1U, 0x48F7ED44U }, /* XSUM_XXH32_testdata[1083] */ + { 542, 0x00000000U, 0xE7803526U }, /* XSUM_XXH32_testdata[1084] */ + { 542, 0x9E3779B1U, 0xCF19C0EEU }, /* XSUM_XXH32_testdata[1085] */ + { 543, 0x00000000U, 0xF8B11AD8U }, /* XSUM_XXH32_testdata[1086] */ + { 543, 0x9E3779B1U, 0xA52AAE1BU }, /* XSUM_XXH32_testdata[1087] */ + { 544, 0x00000000U, 0x383709D8U }, /* XSUM_XXH32_testdata[1088] */ + { 544, 0x9E3779B1U, 0x2E987E7BU }, /* XSUM_XXH32_testdata[1089] */ + { 545, 0x00000000U, 0xEECB594AU }, /* XSUM_XXH32_testdata[1090] */ + { 545, 0x9E3779B1U, 0x26F3333DU }, /* XSUM_XXH32_testdata[1091] */ + { 546, 0x00000000U, 0xD2CAE8AAU }, /* XSUM_XXH32_testdata[1092] */ + { 546, 0x9E3779B1U, 0xF2E2CBE9U }, /* XSUM_XXH32_testdata[1093] */ + { 547, 0x00000000U, 0xF3F44D9DU }, /* XSUM_XXH32_testdata[1094] */ + { 547, 0x9E3779B1U, 0xC7D21280U }, /* XSUM_XXH32_testdata[1095] */ + { 548, 0x00000000U, 0x057CA1BBU }, /* XSUM_XXH32_testdata[1096] */ + { 548, 0x9E3779B1U, 0xD31CB27FU }, /* XSUM_XXH32_testdata[1097] */ + { 549, 0x00000000U, 0x523D1215U }, /* XSUM_XXH32_testdata[1098] */ + { 549, 0x9E3779B1U, 0x905365FFU }, /* XSUM_XXH32_testdata[1099] */ + { 550, 0x00000000U, 0x51D76F9BU }, /* XSUM_XXH32_testdata[1100] */ + { 550, 0x9E3779B1U, 0x70DFAC47U }, /* XSUM_XXH32_testdata[1101] */ + { 551, 0x00000000U, 0xFE574440U }, /* XSUM_XXH32_testdata[1102] */ + { 551, 0x9E3779B1U, 0x249EFE5CU }, /* XSUM_XXH32_testdata[1103] */ + { 552, 0x00000000U, 0x6D7C3E20U }, /* XSUM_XXH32_testdata[1104] */ + { 552, 0x9E3779B1U, 0x5F2E27D0U }, /* XSUM_XXH32_testdata[1105] */ + { 553, 0x00000000U, 0xE21902BAU }, /* XSUM_XXH32_testdata[1106] */ + { 553, 0x9E3779B1U, 0xF5FFC3CEU }, /* XSUM_XXH32_testdata[1107] */ + { 554, 0x00000000U, 0xCCB9D7D4U }, /* XSUM_XXH32_testdata[1108] */ + { 554, 0x9E3779B1U, 0x12733CD2U }, /* XSUM_XXH32_testdata[1109] */ + { 555, 0x00000000U, 0x9D220DE7U }, /* XSUM_XXH32_testdata[1110] */ + { 555, 0x9E3779B1U, 0x6B962E79U }, /* XSUM_XXH32_testdata[1111] */ + { 556, 0x00000000U, 0xD63A2252U }, /* XSUM_XXH32_testdata[1112] */ + { 556, 0x9E3779B1U, 0x137B28C0U }, /* XSUM_XXH32_testdata[1113] */ + { 557, 0x00000000U, 0x11075667U }, /* XSUM_XXH32_testdata[1114] */ + { 557, 0x9E3779B1U, 0x26D76C43U }, /* XSUM_XXH32_testdata[1115] */ + { 558, 0x00000000U, 0x93F39FA3U }, /* XSUM_XXH32_testdata[1116] */ + { 558, 0x9E3779B1U, 0x0675020DU }, /* XSUM_XXH32_testdata[1117] */ + { 559, 0x00000000U, 0xA3FE62E4U }, /* XSUM_XXH32_testdata[1118] */ + { 559, 0x9E3779B1U, 0x8B4B11B7U }, /* XSUM_XXH32_testdata[1119] */ + { 560, 0x00000000U, 0x6FCD562DU }, /* XSUM_XXH32_testdata[1120] */ + { 560, 0x9E3779B1U, 0x143B2E0EU }, /* XSUM_XXH32_testdata[1121] */ + { 561, 0x00000000U, 0xC3958E40U }, /* XSUM_XXH32_testdata[1122] */ + { 561, 0x9E3779B1U, 0x9861878AU }, /* XSUM_XXH32_testdata[1123] */ + { 562, 0x00000000U, 0x5BACD6A1U }, /* XSUM_XXH32_testdata[1124] */ + { 562, 0x9E3779B1U, 0xAA2290E9U }, /* XSUM_XXH32_testdata[1125] */ + { 563, 0x00000000U, 0x54B7AAB1U }, /* XSUM_XXH32_testdata[1126] */ + { 563, 0x9E3779B1U, 0xEF35B304U }, /* XSUM_XXH32_testdata[1127] */ + { 564, 0x00000000U, 0x3B7E557CU }, /* XSUM_XXH32_testdata[1128] */ + { 564, 0x9E3779B1U, 0xED950428U }, /* XSUM_XXH32_testdata[1129] */ + { 565, 0x00000000U, 0xCE795C36U }, /* XSUM_XXH32_testdata[1130] */ + { 565, 0x9E3779B1U, 0x0CC7CCE5U }, /* XSUM_XXH32_testdata[1131] */ + { 566, 0x00000000U, 0x3BAFE1EDU }, /* XSUM_XXH32_testdata[1132] */ + { 566, 0x9E3779B1U, 0xFC15F349U }, /* XSUM_XXH32_testdata[1133] */ + { 567, 0x00000000U, 0xC17A3D7AU }, /* XSUM_XXH32_testdata[1134] */ + { 567, 0x9E3779B1U, 0xAB844BA3U }, /* XSUM_XXH32_testdata[1135] */ + { 568, 0x00000000U, 0xB3E09646U }, /* XSUM_XXH32_testdata[1136] */ + { 568, 0x9E3779B1U, 0x02B655DBU }, /* XSUM_XXH32_testdata[1137] */ + { 569, 0x00000000U, 0xC9B1669EU }, /* XSUM_XXH32_testdata[1138] */ + { 569, 0x9E3779B1U, 0x3B334D34U }, /* XSUM_XXH32_testdata[1139] */ + { 570, 0x00000000U, 0x4D92E21DU }, /* XSUM_XXH32_testdata[1140] */ + { 570, 0x9E3779B1U, 0x0599D5AAU }, /* XSUM_XXH32_testdata[1141] */ + { 571, 0x00000000U, 0xC5628243U }, /* XSUM_XXH32_testdata[1142] */ + { 571, 0x9E3779B1U, 0x09B85AFCU }, /* XSUM_XXH32_testdata[1143] */ + { 572, 0x00000000U, 0xDD38AF07U }, /* XSUM_XXH32_testdata[1144] */ + { 572, 0x9E3779B1U, 0x141F339BU }, /* XSUM_XXH32_testdata[1145] */ + { 573, 0x00000000U, 0x039D9106U }, /* XSUM_XXH32_testdata[1146] */ + { 573, 0x9E3779B1U, 0x54588C33U }, /* XSUM_XXH32_testdata[1147] */ + { 574, 0x00000000U, 0xF0BBF203U }, /* XSUM_XXH32_testdata[1148] */ + { 574, 0x9E3779B1U, 0x10292D58U }, /* XSUM_XXH32_testdata[1149] */ + { 575, 0x00000000U, 0x64FA4DF4U }, /* XSUM_XXH32_testdata[1150] */ + { 575, 0x9E3779B1U, 0x416CCC54U }, /* XSUM_XXH32_testdata[1151] */ + { 576, 0x00000000U, 0xFF8BC9EAU }, /* XSUM_XXH32_testdata[1152] */ + { 576, 0x9E3779B1U, 0x94A8013FU }, /* XSUM_XXH32_testdata[1153] */ + { 577, 0x00000000U, 0x995CD6D4U }, /* XSUM_XXH32_testdata[1154] */ + { 577, 0x9E3779B1U, 0xF747C40DU }, /* XSUM_XXH32_testdata[1155] */ + { 578, 0x00000000U, 0x77F76E65U }, /* XSUM_XXH32_testdata[1156] */ + { 578, 0x9E3779B1U, 0x5A4E2FDFU }, /* XSUM_XXH32_testdata[1157] */ + { 579, 0x00000000U, 0x9204876BU }, /* XSUM_XXH32_testdata[1158] */ + { 579, 0x9E3779B1U, 0xC7AEDD9DU }, /* XSUM_XXH32_testdata[1159] */ + { 580, 0x00000000U, 0x8A281BF8U }, /* XSUM_XXH32_testdata[1160] */ + { 580, 0x9E3779B1U, 0x45A1BC23U }, /* XSUM_XXH32_testdata[1161] */ + { 581, 0x00000000U, 0x5E8176BBU }, /* XSUM_XXH32_testdata[1162] */ + { 581, 0x9E3779B1U, 0x6285049CU }, /* XSUM_XXH32_testdata[1163] */ + { 582, 0x00000000U, 0xC35C3FC5U }, /* XSUM_XXH32_testdata[1164] */ + { 582, 0x9E3779B1U, 0xD3E56414U }, /* XSUM_XXH32_testdata[1165] */ + { 583, 0x00000000U, 0x1E69E8BBU }, /* XSUM_XXH32_testdata[1166] */ + { 583, 0x9E3779B1U, 0xF7C983E5U }, /* XSUM_XXH32_testdata[1167] */ + { 584, 0x00000000U, 0xCFA3E33AU }, /* XSUM_XXH32_testdata[1168] */ + { 584, 0x9E3779B1U, 0x062AC722U }, /* XSUM_XXH32_testdata[1169] */ + { 585, 0x00000000U, 0x40DC036AU }, /* XSUM_XXH32_testdata[1170] */ + { 585, 0x9E3779B1U, 0xF7CA6DF7U }, /* XSUM_XXH32_testdata[1171] */ + { 586, 0x00000000U, 0x9038913EU }, /* XSUM_XXH32_testdata[1172] */ + { 586, 0x9E3779B1U, 0xAC07FED8U }, /* XSUM_XXH32_testdata[1173] */ + { 587, 0x00000000U, 0xCA36B71CU }, /* XSUM_XXH32_testdata[1174] */ + { 587, 0x9E3779B1U, 0x8298F8FBU }, /* XSUM_XXH32_testdata[1175] */ + { 588, 0x00000000U, 0x2C155240U }, /* XSUM_XXH32_testdata[1176] */ + { 588, 0x9E3779B1U, 0x47328FEBU }, /* XSUM_XXH32_testdata[1177] */ + { 589, 0x00000000U, 0xCCEF92BBU }, /* XSUM_XXH32_testdata[1178] */ + { 589, 0x9E3779B1U, 0x2EA2B429U }, /* XSUM_XXH32_testdata[1179] */ + { 590, 0x00000000U, 0x5FF56AB1U }, /* XSUM_XXH32_testdata[1180] */ + { 590, 0x9E3779B1U, 0x6B35A0ADU }, /* XSUM_XXH32_testdata[1181] */ + { 591, 0x00000000U, 0xD608BA57U }, /* XSUM_XXH32_testdata[1182] */ + { 591, 0x9E3779B1U, 0x4B4A5F5EU }, /* XSUM_XXH32_testdata[1183] */ + { 592, 0x00000000U, 0x5B1FEEECU }, /* XSUM_XXH32_testdata[1184] */ + { 592, 0x9E3779B1U, 0x20756839U }, /* XSUM_XXH32_testdata[1185] */ + { 593, 0x00000000U, 0x1ED67745U }, /* XSUM_XXH32_testdata[1186] */ + { 593, 0x9E3779B1U, 0x22C665D0U }, /* XSUM_XXH32_testdata[1187] */ + { 594, 0x00000000U, 0xF1E02CEAU }, /* XSUM_XXH32_testdata[1188] */ + { 594, 0x9E3779B1U, 0x2ACD85F8U }, /* XSUM_XXH32_testdata[1189] */ + { 595, 0x00000000U, 0x803B46A3U }, /* XSUM_XXH32_testdata[1190] */ + { 595, 0x9E3779B1U, 0xB73A088BU }, /* XSUM_XXH32_testdata[1191] */ + { 596, 0x00000000U, 0x557A2BD9U }, /* XSUM_XXH32_testdata[1192] */ + { 596, 0x9E3779B1U, 0x176BE304U }, /* XSUM_XXH32_testdata[1193] */ + { 597, 0x00000000U, 0xB7E6FAC5U }, /* XSUM_XXH32_testdata[1194] */ + { 597, 0x9E3779B1U, 0xA2028D7AU }, /* XSUM_XXH32_testdata[1195] */ + { 598, 0x00000000U, 0x48713AE1U }, /* XSUM_XXH32_testdata[1196] */ + { 598, 0x9E3779B1U, 0x6596C8A1U }, /* XSUM_XXH32_testdata[1197] */ + { 599, 0x00000000U, 0xF92390F6U }, /* XSUM_XXH32_testdata[1198] */ + { 599, 0x9E3779B1U, 0x88CE3FA5U }, /* XSUM_XXH32_testdata[1199] */ + { 600, 0x00000000U, 0x5929F25FU }, /* XSUM_XXH32_testdata[1200] */ + { 600, 0x9E3779B1U, 0xD8659733U }, /* XSUM_XXH32_testdata[1201] */ + { 601, 0x00000000U, 0x6934EF0FU }, /* XSUM_XXH32_testdata[1202] */ + { 601, 0x9E3779B1U, 0x1A66369AU }, /* XSUM_XXH32_testdata[1203] */ + { 602, 0x00000000U, 0xD62AFDCAU }, /* XSUM_XXH32_testdata[1204] */ + { 602, 0x9E3779B1U, 0x90A99973U }, /* XSUM_XXH32_testdata[1205] */ + { 603, 0x00000000U, 0x30DF07C5U }, /* XSUM_XXH32_testdata[1206] */ + { 603, 0x9E3779B1U, 0xFB1DC5EDU }, /* XSUM_XXH32_testdata[1207] */ + { 604, 0x00000000U, 0x354A95CCU }, /* XSUM_XXH32_testdata[1208] */ + { 604, 0x9E3779B1U, 0xF75E1BE4U }, /* XSUM_XXH32_testdata[1209] */ + { 605, 0x00000000U, 0xB644F7B0U }, /* XSUM_XXH32_testdata[1210] */ + { 605, 0x9E3779B1U, 0xF5DE009EU }, /* XSUM_XXH32_testdata[1211] */ + { 606, 0x00000000U, 0xA800018BU }, /* XSUM_XXH32_testdata[1212] */ + { 606, 0x9E3779B1U, 0x59C644D4U }, /* XSUM_XXH32_testdata[1213] */ + { 607, 0x00000000U, 0x22BFC8CFU }, /* XSUM_XXH32_testdata[1214] */ + { 607, 0x9E3779B1U, 0x9579DEC2U }, /* XSUM_XXH32_testdata[1215] */ + { 608, 0x00000000U, 0x7269CBF8U }, /* XSUM_XXH32_testdata[1216] */ + { 608, 0x9E3779B1U, 0x2C6EDB87U }, /* XSUM_XXH32_testdata[1217] */ + { 609, 0x00000000U, 0x2E68554DU }, /* XSUM_XXH32_testdata[1218] */ + { 609, 0x9E3779B1U, 0xDF2360BBU }, /* XSUM_XXH32_testdata[1219] */ + { 610, 0x00000000U, 0xE07AEE88U }, /* XSUM_XXH32_testdata[1220] */ + { 610, 0x9E3779B1U, 0x7272F640U }, /* XSUM_XXH32_testdata[1221] */ + { 611, 0x00000000U, 0x39486655U }, /* XSUM_XXH32_testdata[1222] */ + { 611, 0x9E3779B1U, 0xCF4AFAC3U }, /* XSUM_XXH32_testdata[1223] */ + { 612, 0x00000000U, 0x9276FE8AU }, /* XSUM_XXH32_testdata[1224] */ + { 612, 0x9E3779B1U, 0x85DCC42CU }, /* XSUM_XXH32_testdata[1225] */ + { 613, 0x00000000U, 0x0F2EF2F3U }, /* XSUM_XXH32_testdata[1226] */ + { 613, 0x9E3779B1U, 0xF34BE8BAU }, /* XSUM_XXH32_testdata[1227] */ + { 614, 0x00000000U, 0x4484C1D8U }, /* XSUM_XXH32_testdata[1228] */ + { 614, 0x9E3779B1U, 0x57E2CF3FU }, /* XSUM_XXH32_testdata[1229] */ + { 615, 0x00000000U, 0x61418265U }, /* XSUM_XXH32_testdata[1230] */ + { 615, 0x9E3779B1U, 0xC35AF718U }, /* XSUM_XXH32_testdata[1231] */ + { 616, 0x00000000U, 0x92A0ED48U }, /* XSUM_XXH32_testdata[1232] */ + { 616, 0x9E3779B1U, 0x017052A7U }, /* XSUM_XXH32_testdata[1233] */ + { 617, 0x00000000U, 0x7043FD18U }, /* XSUM_XXH32_testdata[1234] */ + { 617, 0x9E3779B1U, 0x9C2DDF98U }, /* XSUM_XXH32_testdata[1235] */ + { 618, 0x00000000U, 0x5D07E007U }, /* XSUM_XXH32_testdata[1236] */ + { 618, 0x9E3779B1U, 0x59434CB8U }, /* XSUM_XXH32_testdata[1237] */ + { 619, 0x00000000U, 0xB8FECF84U }, /* XSUM_XXH32_testdata[1238] */ + { 619, 0x9E3779B1U, 0xD91C95D4U }, /* XSUM_XXH32_testdata[1239] */ + { 620, 0x00000000U, 0x25F891A0U }, /* XSUM_XXH32_testdata[1240] */ + { 620, 0x9E3779B1U, 0x55BF001EU }, /* XSUM_XXH32_testdata[1241] */ + { 621, 0x00000000U, 0x8643600FU }, /* XSUM_XXH32_testdata[1242] */ + { 621, 0x9E3779B1U, 0x5D8AD780U }, /* XSUM_XXH32_testdata[1243] */ + { 622, 0x00000000U, 0xB45B415AU }, /* XSUM_XXH32_testdata[1244] */ + { 622, 0x9E3779B1U, 0xB7AF9ADDU }, /* XSUM_XXH32_testdata[1245] */ + { 623, 0x00000000U, 0xFFEDFB0CU }, /* XSUM_XXH32_testdata[1246] */ + { 623, 0x9E3779B1U, 0xD3D56B63U }, /* XSUM_XXH32_testdata[1247] */ + { 624, 0x00000000U, 0x299D5311U }, /* XSUM_XXH32_testdata[1248] */ + { 624, 0x9E3779B1U, 0xEC9EF02BU }, /* XSUM_XXH32_testdata[1249] */ + { 625, 0x00000000U, 0x1EC898BFU }, /* XSUM_XXH32_testdata[1250] */ + { 625, 0x9E3779B1U, 0x0FE4171DU }, /* XSUM_XXH32_testdata[1251] */ + { 626, 0x00000000U, 0x3D220B0DU }, /* XSUM_XXH32_testdata[1252] */ + { 626, 0x9E3779B1U, 0x4F611A36U }, /* XSUM_XXH32_testdata[1253] */ + { 627, 0x00000000U, 0xDF0C13CAU }, /* XSUM_XXH32_testdata[1254] */ + { 627, 0x9E3779B1U, 0xB3F9C65FU }, /* XSUM_XXH32_testdata[1255] */ + { 628, 0x00000000U, 0x74DBEB01U }, /* XSUM_XXH32_testdata[1256] */ + { 628, 0x9E3779B1U, 0x7062283CU }, /* XSUM_XXH32_testdata[1257] */ + { 629, 0x00000000U, 0xD3CE1024U }, /* XSUM_XXH32_testdata[1258] */ + { 629, 0x9E3779B1U, 0xCF5147D8U }, /* XSUM_XXH32_testdata[1259] */ + { 630, 0x00000000U, 0x248FAA29U }, /* XSUM_XXH32_testdata[1260] */ + { 630, 0x9E3779B1U, 0xCFAC6BACU }, /* XSUM_XXH32_testdata[1261] */ + { 631, 0x00000000U, 0xC369F007U }, /* XSUM_XXH32_testdata[1262] */ + { 631, 0x9E3779B1U, 0xC33F685FU }, /* XSUM_XXH32_testdata[1263] */ + { 632, 0x00000000U, 0x6FACA56EU }, /* XSUM_XXH32_testdata[1264] */ + { 632, 0x9E3779B1U, 0x05D0B46FU }, /* XSUM_XXH32_testdata[1265] */ + { 633, 0x00000000U, 0xEAF23F22U }, /* XSUM_XXH32_testdata[1266] */ + { 633, 0x9E3779B1U, 0x046AD846U }, /* XSUM_XXH32_testdata[1267] */ + { 634, 0x00000000U, 0xD97464A2U }, /* XSUM_XXH32_testdata[1268] */ + { 634, 0x9E3779B1U, 0x14A38A1BU }, /* XSUM_XXH32_testdata[1269] */ + { 635, 0x00000000U, 0x15E01FC1U }, /* XSUM_XXH32_testdata[1270] */ + { 635, 0x9E3779B1U, 0xC1C5F8B0U }, /* XSUM_XXH32_testdata[1271] */ + { 636, 0x00000000U, 0xB302CED9U }, /* XSUM_XXH32_testdata[1272] */ + { 636, 0x9E3779B1U, 0x580BE287U }, /* XSUM_XXH32_testdata[1273] */ + { 637, 0x00000000U, 0xADF7611AU }, /* XSUM_XXH32_testdata[1274] */ + { 637, 0x9E3779B1U, 0x6D7D7523U }, /* XSUM_XXH32_testdata[1275] */ + { 638, 0x00000000U, 0x8945B249U }, /* XSUM_XXH32_testdata[1276] */ + { 638, 0x9E3779B1U, 0x9B6F82ACU }, /* XSUM_XXH32_testdata[1277] */ + { 639, 0x00000000U, 0xBE350C50U }, /* XSUM_XXH32_testdata[1278] */ + { 639, 0x9E3779B1U, 0x7DDF8BBCU }, /* XSUM_XXH32_testdata[1279] */ + { 640, 0x00000000U, 0xAAA8DFC1U }, /* XSUM_XXH32_testdata[1280] */ + { 640, 0x9E3779B1U, 0xB4D5E8FFU }, /* XSUM_XXH32_testdata[1281] */ + { 641, 0x00000000U, 0xA9C2ADB2U }, /* XSUM_XXH32_testdata[1282] */ + { 641, 0x9E3779B1U, 0x124D8FEDU }, /* XSUM_XXH32_testdata[1283] */ + { 642, 0x00000000U, 0xFE8F7FEEU }, /* XSUM_XXH32_testdata[1284] */ + { 642, 0x9E3779B1U, 0x7AA9B6BFU }, /* XSUM_XXH32_testdata[1285] */ + { 643, 0x00000000U, 0x36FBB591U }, /* XSUM_XXH32_testdata[1286] */ + { 643, 0x9E3779B1U, 0x959814C7U }, /* XSUM_XXH32_testdata[1287] */ + { 644, 0x00000000U, 0x8CBC476EU }, /* XSUM_XXH32_testdata[1288] */ + { 644, 0x9E3779B1U, 0xCEA8C841U }, /* XSUM_XXH32_testdata[1289] */ + { 645, 0x00000000U, 0xC0365E3EU }, /* XSUM_XXH32_testdata[1290] */ + { 645, 0x9E3779B1U, 0xF98C999CU }, /* XSUM_XXH32_testdata[1291] */ + { 646, 0x00000000U, 0x06A6FEA3U }, /* XSUM_XXH32_testdata[1292] */ + { 646, 0x9E3779B1U, 0xB5648C61U }, /* XSUM_XXH32_testdata[1293] */ + { 647, 0x00000000U, 0x8982E615U }, /* XSUM_XXH32_testdata[1294] */ + { 647, 0x9E3779B1U, 0xB45AA50FU }, /* XSUM_XXH32_testdata[1295] */ + { 648, 0x00000000U, 0x7B446A4DU }, /* XSUM_XXH32_testdata[1296] */ + { 648, 0x9E3779B1U, 0xB7C22655U }, /* XSUM_XXH32_testdata[1297] */ + { 649, 0x00000000U, 0xA49903F7U }, /* XSUM_XXH32_testdata[1298] */ + { 649, 0x9E3779B1U, 0x5D1AC3EDU }, /* XSUM_XXH32_testdata[1299] */ + { 650, 0x00000000U, 0x1B0AE1F9U }, /* XSUM_XXH32_testdata[1300] */ + { 650, 0x9E3779B1U, 0x0532737CU }, /* XSUM_XXH32_testdata[1301] */ + { 651, 0x00000000U, 0x1487D63EU }, /* XSUM_XXH32_testdata[1302] */ + { 651, 0x9E3779B1U, 0x1919626DU }, /* XSUM_XXH32_testdata[1303] */ + { 652, 0x00000000U, 0x17824638U }, /* XSUM_XXH32_testdata[1304] */ + { 652, 0x9E3779B1U, 0xAC008CCBU }, /* XSUM_XXH32_testdata[1305] */ + { 653, 0x00000000U, 0x57824066U }, /* XSUM_XXH32_testdata[1306] */ + { 653, 0x9E3779B1U, 0xB0831EDFU }, /* XSUM_XXH32_testdata[1307] */ + { 654, 0x00000000U, 0xAD58606BU }, /* XSUM_XXH32_testdata[1308] */ + { 654, 0x9E3779B1U, 0x7DB42B57U }, /* XSUM_XXH32_testdata[1309] */ + { 655, 0x00000000U, 0xB7F5AFC1U }, /* XSUM_XXH32_testdata[1310] */ + { 655, 0x9E3779B1U, 0x0BC6BA89U }, /* XSUM_XXH32_testdata[1311] */ + { 656, 0x00000000U, 0x7BAC0653U }, /* XSUM_XXH32_testdata[1312] */ + { 656, 0x9E3779B1U, 0xCE8F2116U }, /* XSUM_XXH32_testdata[1313] */ + { 657, 0x00000000U, 0xAFF34289U }, /* XSUM_XXH32_testdata[1314] */ + { 657, 0x9E3779B1U, 0xC178DA60U }, /* XSUM_XXH32_testdata[1315] */ + { 658, 0x00000000U, 0x988F9DA6U }, /* XSUM_XXH32_testdata[1316] */ + { 658, 0x9E3779B1U, 0x6F20A426U }, /* XSUM_XXH32_testdata[1317] */ + { 659, 0x00000000U, 0xC97BC454U }, /* XSUM_XXH32_testdata[1318] */ + { 659, 0x9E3779B1U, 0xC174B4D1U }, /* XSUM_XXH32_testdata[1319] */ + { 660, 0x00000000U, 0x044A07E1U }, /* XSUM_XXH32_testdata[1320] */ + { 660, 0x9E3779B1U, 0xFF03D5A0U }, /* XSUM_XXH32_testdata[1321] */ + { 661, 0x00000000U, 0x2C8C1123U }, /* XSUM_XXH32_testdata[1322] */ + { 661, 0x9E3779B1U, 0xE8D2D489U }, /* XSUM_XXH32_testdata[1323] */ + { 662, 0x00000000U, 0xB2D9096CU }, /* XSUM_XXH32_testdata[1324] */ + { 662, 0x9E3779B1U, 0x9A752C8CU }, /* XSUM_XXH32_testdata[1325] */ + { 663, 0x00000000U, 0x65F5C022U }, /* XSUM_XXH32_testdata[1326] */ + { 663, 0x9E3779B1U, 0xD2885DA5U }, /* XSUM_XXH32_testdata[1327] */ + { 664, 0x00000000U, 0x1A9822F7U }, /* XSUM_XXH32_testdata[1328] */ + { 664, 0x9E3779B1U, 0x70B0EDD7U }, /* XSUM_XXH32_testdata[1329] */ + { 665, 0x00000000U, 0x6DF79264U }, /* XSUM_XXH32_testdata[1330] */ + { 665, 0x9E3779B1U, 0x5A08A975U }, /* XSUM_XXH32_testdata[1331] */ + { 666, 0x00000000U, 0x65033F15U }, /* XSUM_XXH32_testdata[1332] */ + { 666, 0x9E3779B1U, 0xF4350D2EU }, /* XSUM_XXH32_testdata[1333] */ + { 667, 0x00000000U, 0xA431E989U }, /* XSUM_XXH32_testdata[1334] */ + { 667, 0x9E3779B1U, 0xA3ED338BU }, /* XSUM_XXH32_testdata[1335] */ + { 668, 0x00000000U, 0x865A9B80U }, /* XSUM_XXH32_testdata[1336] */ + { 668, 0x9E3779B1U, 0xA35711A4U }, /* XSUM_XXH32_testdata[1337] */ + { 669, 0x00000000U, 0x9E0B83CEU }, /* XSUM_XXH32_testdata[1338] */ + { 669, 0x9E3779B1U, 0x4A0318C2U }, /* XSUM_XXH32_testdata[1339] */ + { 670, 0x00000000U, 0x1C1AA01AU }, /* XSUM_XXH32_testdata[1340] */ + { 670, 0x9E3779B1U, 0xCA0F79FFU }, /* XSUM_XXH32_testdata[1341] */ + { 671, 0x00000000U, 0xFD44F183U }, /* XSUM_XXH32_testdata[1342] */ + { 671, 0x9E3779B1U, 0xAE73FEF1U }, /* XSUM_XXH32_testdata[1343] */ + { 672, 0x00000000U, 0x54E2B7E3U }, /* XSUM_XXH32_testdata[1344] */ + { 672, 0x9E3779B1U, 0x53202297U }, /* XSUM_XXH32_testdata[1345] */ + { 673, 0x00000000U, 0x4E909F92U }, /* XSUM_XXH32_testdata[1346] */ + { 673, 0x9E3779B1U, 0x710B69A1U }, /* XSUM_XXH32_testdata[1347] */ + { 674, 0x00000000U, 0xAAAB145DU }, /* XSUM_XXH32_testdata[1348] */ + { 674, 0x9E3779B1U, 0x5F50BEFDU }, /* XSUM_XXH32_testdata[1349] */ + { 675, 0x00000000U, 0x4067EDF2U }, /* XSUM_XXH32_testdata[1350] */ + { 675, 0x9E3779B1U, 0x7A37B9EDU }, /* XSUM_XXH32_testdata[1351] */ + { 676, 0x00000000U, 0x3006022CU }, /* XSUM_XXH32_testdata[1352] */ + { 676, 0x9E3779B1U, 0x0FCBC3D7U }, /* XSUM_XXH32_testdata[1353] */ + { 677, 0x00000000U, 0x1D0886D2U }, /* XSUM_XXH32_testdata[1354] */ + { 677, 0x9E3779B1U, 0x33CF6C14U }, /* XSUM_XXH32_testdata[1355] */ + { 678, 0x00000000U, 0x3608EA67U }, /* XSUM_XXH32_testdata[1356] */ + { 678, 0x9E3779B1U, 0x729B2135U }, /* XSUM_XXH32_testdata[1357] */ + { 679, 0x00000000U, 0xF7434B2FU }, /* XSUM_XXH32_testdata[1358] */ + { 679, 0x9E3779B1U, 0x675F3A89U }, /* XSUM_XXH32_testdata[1359] */ + { 680, 0x00000000U, 0xFD470505U }, /* XSUM_XXH32_testdata[1360] */ + { 680, 0x9E3779B1U, 0xA7873132U }, /* XSUM_XXH32_testdata[1361] */ + { 681, 0x00000000U, 0xC1C147A7U }, /* XSUM_XXH32_testdata[1362] */ + { 681, 0x9E3779B1U, 0x76B23786U }, /* XSUM_XXH32_testdata[1363] */ + { 682, 0x00000000U, 0x91C067A6U }, /* XSUM_XXH32_testdata[1364] */ + { 682, 0x9E3779B1U, 0xEC9BED86U }, /* XSUM_XXH32_testdata[1365] */ + { 683, 0x00000000U, 0x681F83ACU }, /* XSUM_XXH32_testdata[1366] */ + { 683, 0x9E3779B1U, 0x1AFAFF43U }, /* XSUM_XXH32_testdata[1367] */ + { 684, 0x00000000U, 0x7BBBD8DFU }, /* XSUM_XXH32_testdata[1368] */ + { 684, 0x9E3779B1U, 0x09FBBFD8U }, /* XSUM_XXH32_testdata[1369] */ + { 685, 0x00000000U, 0xE646357AU }, /* XSUM_XXH32_testdata[1370] */ + { 685, 0x9E3779B1U, 0x7B379021U }, /* XSUM_XXH32_testdata[1371] */ + { 686, 0x00000000U, 0x31402396U }, /* XSUM_XXH32_testdata[1372] */ + { 686, 0x9E3779B1U, 0x56878528U }, /* XSUM_XXH32_testdata[1373] */ + { 687, 0x00000000U, 0xB72268D9U }, /* XSUM_XXH32_testdata[1374] */ + { 687, 0x9E3779B1U, 0xDAEBFD80U }, /* XSUM_XXH32_testdata[1375] */ + { 688, 0x00000000U, 0x75D3FE03U }, /* XSUM_XXH32_testdata[1376] */ + { 688, 0x9E3779B1U, 0xEA936796U }, /* XSUM_XXH32_testdata[1377] */ + { 689, 0x00000000U, 0xE99A21F6U }, /* XSUM_XXH32_testdata[1378] */ + { 689, 0x9E3779B1U, 0x123FA3BAU }, /* XSUM_XXH32_testdata[1379] */ + { 690, 0x00000000U, 0x7FF977A0U }, /* XSUM_XXH32_testdata[1380] */ + { 690, 0x9E3779B1U, 0xA9411D49U }, /* XSUM_XXH32_testdata[1381] */ + { 691, 0x00000000U, 0x9FC7E0DFU }, /* XSUM_XXH32_testdata[1382] */ + { 691, 0x9E3779B1U, 0x565EC388U }, /* XSUM_XXH32_testdata[1383] */ + { 692, 0x00000000U, 0xD6C3B2D8U }, /* XSUM_XXH32_testdata[1384] */ + { 692, 0x9E3779B1U, 0x457EE6AFU }, /* XSUM_XXH32_testdata[1385] */ + { 693, 0x00000000U, 0x4F8F5D69U }, /* XSUM_XXH32_testdata[1386] */ + { 693, 0x9E3779B1U, 0x717DE12DU }, /* XSUM_XXH32_testdata[1387] */ + { 694, 0x00000000U, 0x2562840AU }, /* XSUM_XXH32_testdata[1388] */ + { 694, 0x9E3779B1U, 0x3A2D71CFU }, /* XSUM_XXH32_testdata[1389] */ + { 695, 0x00000000U, 0x7181A588U }, /* XSUM_XXH32_testdata[1390] */ + { 695, 0x9E3779B1U, 0xDF26790AU }, /* XSUM_XXH32_testdata[1391] */ + { 696, 0x00000000U, 0x70AA2253U }, /* XSUM_XXH32_testdata[1392] */ + { 696, 0x9E3779B1U, 0x86D6EEAFU }, /* XSUM_XXH32_testdata[1393] */ + { 697, 0x00000000U, 0x9A44444DU }, /* XSUM_XXH32_testdata[1394] */ + { 697, 0x9E3779B1U, 0xE2854AC5U }, /* XSUM_XXH32_testdata[1395] */ + { 698, 0x00000000U, 0x57209128U }, /* XSUM_XXH32_testdata[1396] */ + { 698, 0x9E3779B1U, 0x455841A1U }, /* XSUM_XXH32_testdata[1397] */ + { 699, 0x00000000U, 0x8B06B883U }, /* XSUM_XXH32_testdata[1398] */ + { 699, 0x9E3779B1U, 0xB1748D9CU }, /* XSUM_XXH32_testdata[1399] */ + { 700, 0x00000000U, 0x92B71ECFU }, /* XSUM_XXH32_testdata[1400] */ + { 700, 0x9E3779B1U, 0x05DF9579U }, /* XSUM_XXH32_testdata[1401] */ + { 701, 0x00000000U, 0xD1806AB4U }, /* XSUM_XXH32_testdata[1402] */ + { 701, 0x9E3779B1U, 0x1564D2F9U }, /* XSUM_XXH32_testdata[1403] */ + { 702, 0x00000000U, 0x5E124C4BU }, /* XSUM_XXH32_testdata[1404] */ + { 702, 0x9E3779B1U, 0xC8C222C8U }, /* XSUM_XXH32_testdata[1405] */ + { 703, 0x00000000U, 0x2FDEFB21U }, /* XSUM_XXH32_testdata[1406] */ + { 703, 0x9E3779B1U, 0x96077C64U }, /* XSUM_XXH32_testdata[1407] */ + { 704, 0x00000000U, 0xEA6C2F2FU }, /* XSUM_XXH32_testdata[1408] */ + { 704, 0x9E3779B1U, 0x0E95CE2BU }, /* XSUM_XXH32_testdata[1409] */ + { 705, 0x00000000U, 0xBD1EA8DDU }, /* XSUM_XXH32_testdata[1410] */ + { 705, 0x9E3779B1U, 0xBD7512D2U }, /* XSUM_XXH32_testdata[1411] */ + { 706, 0x00000000U, 0x94221891U }, /* XSUM_XXH32_testdata[1412] */ + { 706, 0x9E3779B1U, 0x4BF7FB3DU }, /* XSUM_XXH32_testdata[1413] */ + { 707, 0x00000000U, 0xE095EB99U }, /* XSUM_XXH32_testdata[1414] */ + { 707, 0x9E3779B1U, 0x158CBC7AU }, /* XSUM_XXH32_testdata[1415] */ + { 708, 0x00000000U, 0x191074F2U }, /* XSUM_XXH32_testdata[1416] */ + { 708, 0x9E3779B1U, 0x13CC2B28U }, /* XSUM_XXH32_testdata[1417] */ + { 709, 0x00000000U, 0x0C01D9C0U }, /* XSUM_XXH32_testdata[1418] */ + { 709, 0x9E3779B1U, 0x941F1CF7U }, /* XSUM_XXH32_testdata[1419] */ + { 710, 0x00000000U, 0x2E351C94U }, /* XSUM_XXH32_testdata[1420] */ + { 710, 0x9E3779B1U, 0x8DC7405AU }, /* XSUM_XXH32_testdata[1421] */ + { 711, 0x00000000U, 0x649D385FU }, /* XSUM_XXH32_testdata[1422] */ + { 711, 0x9E3779B1U, 0x26719578U }, /* XSUM_XXH32_testdata[1423] */ + { 712, 0x00000000U, 0x1500F311U }, /* XSUM_XXH32_testdata[1424] */ + { 712, 0x9E3779B1U, 0x28E55B9EU }, /* XSUM_XXH32_testdata[1425] */ + { 713, 0x00000000U, 0xBFE4916EU }, /* XSUM_XXH32_testdata[1426] */ + { 713, 0x9E3779B1U, 0xAE001B78U }, /* XSUM_XXH32_testdata[1427] */ + { 714, 0x00000000U, 0x85221436U }, /* XSUM_XXH32_testdata[1428] */ + { 714, 0x9E3779B1U, 0x976F358BU }, /* XSUM_XXH32_testdata[1429] */ + { 715, 0x00000000U, 0xA583E7F8U }, /* XSUM_XXH32_testdata[1430] */ + { 715, 0x9E3779B1U, 0x0B4CA222U }, /* XSUM_XXH32_testdata[1431] */ + { 716, 0x00000000U, 0x09A08B97U }, /* XSUM_XXH32_testdata[1432] */ + { 716, 0x9E3779B1U, 0x5C4CBF41U }, /* XSUM_XXH32_testdata[1433] */ + { 717, 0x00000000U, 0xB5270B17U }, /* XSUM_XXH32_testdata[1434] */ + { 717, 0x9E3779B1U, 0x7F9F8805U }, /* XSUM_XXH32_testdata[1435] */ + { 718, 0x00000000U, 0x648FC4FCU }, /* XSUM_XXH32_testdata[1436] */ + { 718, 0x9E3779B1U, 0x280633CFU }, /* XSUM_XXH32_testdata[1437] */ + { 719, 0x00000000U, 0x438E4331U }, /* XSUM_XXH32_testdata[1438] */ + { 719, 0x9E3779B1U, 0x0D90CD0FU }, /* XSUM_XXH32_testdata[1439] */ + { 720, 0x00000000U, 0x5F5E67E6U }, /* XSUM_XXH32_testdata[1440] */ + { 720, 0x9E3779B1U, 0xB0BE79BDU }, /* XSUM_XXH32_testdata[1441] */ + { 721, 0x00000000U, 0x233A5C24U }, /* XSUM_XXH32_testdata[1442] */ + { 721, 0x9E3779B1U, 0x540F87BEU }, /* XSUM_XXH32_testdata[1443] */ + { 722, 0x00000000U, 0xC6A457E0U }, /* XSUM_XXH32_testdata[1444] */ + { 722, 0x9E3779B1U, 0xBA54D79DU }, /* XSUM_XXH32_testdata[1445] */ + { 723, 0x00000000U, 0xD6F57142U }, /* XSUM_XXH32_testdata[1446] */ + { 723, 0x9E3779B1U, 0x2D82EB5DU }, /* XSUM_XXH32_testdata[1447] */ + { 724, 0x00000000U, 0xC8F8634EU }, /* XSUM_XXH32_testdata[1448] */ + { 724, 0x9E3779B1U, 0x6F0B4A2CU }, /* XSUM_XXH32_testdata[1449] */ + { 725, 0x00000000U, 0x1B8F2C06U }, /* XSUM_XXH32_testdata[1450] */ + { 725, 0x9E3779B1U, 0xFDAE3F35U }, /* XSUM_XXH32_testdata[1451] */ + { 726, 0x00000000U, 0x58D06CFDU }, /* XSUM_XXH32_testdata[1452] */ + { 726, 0x9E3779B1U, 0xFBCC9165U }, /* XSUM_XXH32_testdata[1453] */ + { 727, 0x00000000U, 0x23DBAC8AU }, /* XSUM_XXH32_testdata[1454] */ + { 727, 0x9E3779B1U, 0x12ACF0E2U }, /* XSUM_XXH32_testdata[1455] */ + { 728, 0x00000000U, 0x89BF6E7FU }, /* XSUM_XXH32_testdata[1456] */ + { 728, 0x9E3779B1U, 0x5F804B41U }, /* XSUM_XXH32_testdata[1457] */ + { 729, 0x00000000U, 0xECF6498DU }, /* XSUM_XXH32_testdata[1458] */ + { 729, 0x9E3779B1U, 0xFBE4A699U }, /* XSUM_XXH32_testdata[1459] */ + { 730, 0x00000000U, 0x60979E7CU }, /* XSUM_XXH32_testdata[1460] */ + { 730, 0x9E3779B1U, 0xB7D0F58EU }, /* XSUM_XXH32_testdata[1461] */ + { 731, 0x00000000U, 0x1BC1FCD2U }, /* XSUM_XXH32_testdata[1462] */ + { 731, 0x9E3779B1U, 0x7F7750BFU }, /* XSUM_XXH32_testdata[1463] */ + { 732, 0x00000000U, 0x4C801024U }, /* XSUM_XXH32_testdata[1464] */ + { 732, 0x9E3779B1U, 0xA88C2776U }, /* XSUM_XXH32_testdata[1465] */ + { 733, 0x00000000U, 0xFD4608DAU }, /* XSUM_XXH32_testdata[1466] */ + { 733, 0x9E3779B1U, 0x2BE0F44BU }, /* XSUM_XXH32_testdata[1467] */ + { 734, 0x00000000U, 0x8683B929U }, /* XSUM_XXH32_testdata[1468] */ + { 734, 0x9E3779B1U, 0x35C57CB2U }, /* XSUM_XXH32_testdata[1469] */ + { 735, 0x00000000U, 0x5CE51D32U }, /* XSUM_XXH32_testdata[1470] */ + { 735, 0x9E3779B1U, 0xF8AD23C2U }, /* XSUM_XXH32_testdata[1471] */ + { 736, 0x00000000U, 0x916BE77FU }, /* XSUM_XXH32_testdata[1472] */ + { 736, 0x9E3779B1U, 0xDC94008DU }, /* XSUM_XXH32_testdata[1473] */ + { 737, 0x00000000U, 0xD5CD0CA2U }, /* XSUM_XXH32_testdata[1474] */ + { 737, 0x9E3779B1U, 0x01A4E15BU }, /* XSUM_XXH32_testdata[1475] */ + { 738, 0x00000000U, 0xB5A8991EU }, /* XSUM_XXH32_testdata[1476] */ + { 738, 0x9E3779B1U, 0x0FA8AB0DU }, /* XSUM_XXH32_testdata[1477] */ + { 739, 0x00000000U, 0x7BA03CDAU }, /* XSUM_XXH32_testdata[1478] */ + { 739, 0x9E3779B1U, 0xE677124BU }, /* XSUM_XXH32_testdata[1479] */ + { 740, 0x00000000U, 0x3460C7E0U }, /* XSUM_XXH32_testdata[1480] */ + { 740, 0x9E3779B1U, 0x1AB720E0U }, /* XSUM_XXH32_testdata[1481] */ + { 741, 0x00000000U, 0xD8189CB8U }, /* XSUM_XXH32_testdata[1482] */ + { 741, 0x9E3779B1U, 0x7FD2D6A7U }, /* XSUM_XXH32_testdata[1483] */ + { 742, 0x00000000U, 0x3F86374AU }, /* XSUM_XXH32_testdata[1484] */ + { 742, 0x9E3779B1U, 0xA87D05D7U }, /* XSUM_XXH32_testdata[1485] */ + { 743, 0x00000000U, 0xA978176FU }, /* XSUM_XXH32_testdata[1486] */ + { 743, 0x9E3779B1U, 0x424243F1U }, /* XSUM_XXH32_testdata[1487] */ + { 744, 0x00000000U, 0x4921F712U }, /* XSUM_XXH32_testdata[1488] */ + { 744, 0x9E3779B1U, 0x351D077EU }, /* XSUM_XXH32_testdata[1489] */ + { 745, 0x00000000U, 0xB412AF31U }, /* XSUM_XXH32_testdata[1490] */ + { 745, 0x9E3779B1U, 0xA15FC17DU }, /* XSUM_XXH32_testdata[1491] */ + { 746, 0x00000000U, 0x399725E9U }, /* XSUM_XXH32_testdata[1492] */ + { 746, 0x9E3779B1U, 0x3DE0BDE4U }, /* XSUM_XXH32_testdata[1493] */ + { 747, 0x00000000U, 0xB9C3918BU }, /* XSUM_XXH32_testdata[1494] */ + { 747, 0x9E3779B1U, 0x75129AB4U }, /* XSUM_XXH32_testdata[1495] */ + { 748, 0x00000000U, 0x6A74AB66U }, /* XSUM_XXH32_testdata[1496] */ + { 748, 0x9E3779B1U, 0x5BC783CFU }, /* XSUM_XXH32_testdata[1497] */ + { 749, 0x00000000U, 0xDA3A9061U }, /* XSUM_XXH32_testdata[1498] */ + { 749, 0x9E3779B1U, 0xD4F68C29U }, /* XSUM_XXH32_testdata[1499] */ + { 750, 0x00000000U, 0x6C6EB9BCU }, /* XSUM_XXH32_testdata[1500] */ + { 750, 0x9E3779B1U, 0xA07B0392U }, /* XSUM_XXH32_testdata[1501] */ + { 751, 0x00000000U, 0x3788DC46U }, /* XSUM_XXH32_testdata[1502] */ + { 751, 0x9E3779B1U, 0xE11ACCDAU }, /* XSUM_XXH32_testdata[1503] */ + { 752, 0x00000000U, 0x6D2F3AFDU }, /* XSUM_XXH32_testdata[1504] */ + { 752, 0x9E3779B1U, 0xD9E6ECBAU }, /* XSUM_XXH32_testdata[1505] */ + { 753, 0x00000000U, 0x7B87AB1CU }, /* XSUM_XXH32_testdata[1506] */ + { 753, 0x9E3779B1U, 0x1BC482ECU }, /* XSUM_XXH32_testdata[1507] */ + { 754, 0x00000000U, 0x8EC9696BU }, /* XSUM_XXH32_testdata[1508] */ + { 754, 0x9E3779B1U, 0x4DD8F1D8U }, /* XSUM_XXH32_testdata[1509] */ + { 755, 0x00000000U, 0x74EF1C43U }, /* XSUM_XXH32_testdata[1510] */ + { 755, 0x9E3779B1U, 0xBD88304EU }, /* XSUM_XXH32_testdata[1511] */ + { 756, 0x00000000U, 0x612AF8F5U }, /* XSUM_XXH32_testdata[1512] */ + { 756, 0x9E3779B1U, 0xDE656DA4U }, /* XSUM_XXH32_testdata[1513] */ + { 757, 0x00000000U, 0x9DD69924U }, /* XSUM_XXH32_testdata[1514] */ + { 757, 0x9E3779B1U, 0xD9905A8BU }, /* XSUM_XXH32_testdata[1515] */ + { 758, 0x00000000U, 0x39B40A78U }, /* XSUM_XXH32_testdata[1516] */ + { 758, 0x9E3779B1U, 0xD730505BU }, /* XSUM_XXH32_testdata[1517] */ + { 759, 0x00000000U, 0x149AB890U }, /* XSUM_XXH32_testdata[1518] */ + { 759, 0x9E3779B1U, 0x2944A2A0U }, /* XSUM_XXH32_testdata[1519] */ + { 760, 0x00000000U, 0x2875A5BAU }, /* XSUM_XXH32_testdata[1520] */ + { 760, 0x9E3779B1U, 0xF27711C0U }, /* XSUM_XXH32_testdata[1521] */ + { 761, 0x00000000U, 0x3880C284U }, /* XSUM_XXH32_testdata[1522] */ + { 761, 0x9E3779B1U, 0xCB288583U }, /* XSUM_XXH32_testdata[1523] */ + { 762, 0x00000000U, 0x8A947976U }, /* XSUM_XXH32_testdata[1524] */ + { 762, 0x9E3779B1U, 0x4D87BA63U }, /* XSUM_XXH32_testdata[1525] */ + { 763, 0x00000000U, 0xB32330A3U }, /* XSUM_XXH32_testdata[1526] */ + { 763, 0x9E3779B1U, 0x9E2EF837U }, /* XSUM_XXH32_testdata[1527] */ + { 764, 0x00000000U, 0x43DF832BU }, /* XSUM_XXH32_testdata[1528] */ + { 764, 0x9E3779B1U, 0x90190D1BU }, /* XSUM_XXH32_testdata[1529] */ + { 765, 0x00000000U, 0xFFF4987CU }, /* XSUM_XXH32_testdata[1530] */ + { 765, 0x9E3779B1U, 0xD9FEC95DU }, /* XSUM_XXH32_testdata[1531] */ + { 766, 0x00000000U, 0xE34251AEU }, /* XSUM_XXH32_testdata[1532] */ + { 766, 0x9E3779B1U, 0xD6236F68U }, /* XSUM_XXH32_testdata[1533] */ + { 767, 0x00000000U, 0x0EE8121CU }, /* XSUM_XXH32_testdata[1534] */ + { 767, 0x9E3779B1U, 0xA478A20CU }, /* XSUM_XXH32_testdata[1535] */ + { 768, 0x00000000U, 0xCA5128E2U }, /* XSUM_XXH32_testdata[1536] */ + { 768, 0x9E3779B1U, 0x2B7FC8B4U }, /* XSUM_XXH32_testdata[1537] */ + { 769, 0x00000000U, 0x1BF02E61U }, /* XSUM_XXH32_testdata[1538] */ + { 769, 0x9E3779B1U, 0x5BE6D729U }, /* XSUM_XXH32_testdata[1539] */ + { 770, 0x00000000U, 0xF328DB39U }, /* XSUM_XXH32_testdata[1540] */ + { 770, 0x9E3779B1U, 0x7DB3B037U }, /* XSUM_XXH32_testdata[1541] */ + { 771, 0x00000000U, 0x203C70BCU }, /* XSUM_XXH32_testdata[1542] */ + { 771, 0x9E3779B1U, 0xC919E129U }, /* XSUM_XXH32_testdata[1543] */ + { 772, 0x00000000U, 0x4C7F0C56U }, /* XSUM_XXH32_testdata[1544] */ + { 772, 0x9E3779B1U, 0x33A4929FU }, /* XSUM_XXH32_testdata[1545] */ + { 773, 0x00000000U, 0x5B47E012U }, /* XSUM_XXH32_testdata[1546] */ + { 773, 0x9E3779B1U, 0x44306653U }, /* XSUM_XXH32_testdata[1547] */ + { 774, 0x00000000U, 0x13A7A0A2U }, /* XSUM_XXH32_testdata[1548] */ + { 774, 0x9E3779B1U, 0xD3A9B1C5U }, /* XSUM_XXH32_testdata[1549] */ + { 775, 0x00000000U, 0xFF21193DU }, /* XSUM_XXH32_testdata[1550] */ + { 775, 0x9E3779B1U, 0xB7E86889U }, /* XSUM_XXH32_testdata[1551] */ + { 776, 0x00000000U, 0x535B5EF2U }, /* XSUM_XXH32_testdata[1552] */ + { 776, 0x9E3779B1U, 0xE00F76FDU }, /* XSUM_XXH32_testdata[1553] */ + { 777, 0x00000000U, 0x94797D58U }, /* XSUM_XXH32_testdata[1554] */ + { 777, 0x9E3779B1U, 0xEE685D23U }, /* XSUM_XXH32_testdata[1555] */ + { 778, 0x00000000U, 0x79BE2677U }, /* XSUM_XXH32_testdata[1556] */ + { 778, 0x9E3779B1U, 0xDB3DA974U }, /* XSUM_XXH32_testdata[1557] */ + { 779, 0x00000000U, 0xBCB775EBU }, /* XSUM_XXH32_testdata[1558] */ + { 779, 0x9E3779B1U, 0x8D9747A4U }, /* XSUM_XXH32_testdata[1559] */ + { 780, 0x00000000U, 0xB3EFEB6FU }, /* XSUM_XXH32_testdata[1560] */ + { 780, 0x9E3779B1U, 0x10342289U }, /* XSUM_XXH32_testdata[1561] */ + { 781, 0x00000000U, 0x2A9EAC26U }, /* XSUM_XXH32_testdata[1562] */ + { 781, 0x9E3779B1U, 0xE66F075AU }, /* XSUM_XXH32_testdata[1563] */ + { 782, 0x00000000U, 0xA22BF0CBU }, /* XSUM_XXH32_testdata[1564] */ + { 782, 0x9E3779B1U, 0xFA8744A0U }, /* XSUM_XXH32_testdata[1565] */ + { 783, 0x00000000U, 0xF8F97E0FU }, /* XSUM_XXH32_testdata[1566] */ + { 783, 0x9E3779B1U, 0x497A21C1U }, /* XSUM_XXH32_testdata[1567] */ + { 784, 0x00000000U, 0xC4A0816BU }, /* XSUM_XXH32_testdata[1568] */ + { 784, 0x9E3779B1U, 0x29F27769U }, /* XSUM_XXH32_testdata[1569] */ + { 785, 0x00000000U, 0xEDAD452EU }, /* XSUM_XXH32_testdata[1570] */ + { 785, 0x9E3779B1U, 0xF809A80DU }, /* XSUM_XXH32_testdata[1571] */ + { 786, 0x00000000U, 0xEDB20314U }, /* XSUM_XXH32_testdata[1572] */ + { 786, 0x9E3779B1U, 0xAD493881U }, /* XSUM_XXH32_testdata[1573] */ + { 787, 0x00000000U, 0xBC2EE0C9U }, /* XSUM_XXH32_testdata[1574] */ + { 787, 0x9E3779B1U, 0x820B9F81U }, /* XSUM_XXH32_testdata[1575] */ + { 788, 0x00000000U, 0x9A18694AU }, /* XSUM_XXH32_testdata[1576] */ + { 788, 0x9E3779B1U, 0x432C0DBAU }, /* XSUM_XXH32_testdata[1577] */ + { 789, 0x00000000U, 0xE16F826FU }, /* XSUM_XXH32_testdata[1578] */ + { 789, 0x9E3779B1U, 0xB12DEFF6U }, /* XSUM_XXH32_testdata[1579] */ + { 790, 0x00000000U, 0x74997B00U }, /* XSUM_XXH32_testdata[1580] */ + { 790, 0x9E3779B1U, 0xF2F0240FU }, /* XSUM_XXH32_testdata[1581] */ + { 791, 0x00000000U, 0xAF9343E2U }, /* XSUM_XXH32_testdata[1582] */ + { 791, 0x9E3779B1U, 0x543DE858U }, /* XSUM_XXH32_testdata[1583] */ + { 792, 0x00000000U, 0x7C24394DU }, /* XSUM_XXH32_testdata[1584] */ + { 792, 0x9E3779B1U, 0x7DC5595BU }, /* XSUM_XXH32_testdata[1585] */ + { 793, 0x00000000U, 0x14D83702U }, /* XSUM_XXH32_testdata[1586] */ + { 793, 0x9E3779B1U, 0xF53C71C4U }, /* XSUM_XXH32_testdata[1587] */ + { 794, 0x00000000U, 0x608703B9U }, /* XSUM_XXH32_testdata[1588] */ + { 794, 0x9E3779B1U, 0xAB22EDD0U }, /* XSUM_XXH32_testdata[1589] */ + { 795, 0x00000000U, 0x18D15D7EU }, /* XSUM_XXH32_testdata[1590] */ + { 795, 0x9E3779B1U, 0x09A50326U }, /* XSUM_XXH32_testdata[1591] */ + { 796, 0x00000000U, 0x560C13BBU }, /* XSUM_XXH32_testdata[1592] */ + { 796, 0x9E3779B1U, 0x0754045CU }, /* XSUM_XXH32_testdata[1593] */ + { 797, 0x00000000U, 0x36288D35U }, /* XSUM_XXH32_testdata[1594] */ + { 797, 0x9E3779B1U, 0x5F10ADC0U }, /* XSUM_XXH32_testdata[1595] */ + { 798, 0x00000000U, 0x572027D4U }, /* XSUM_XXH32_testdata[1596] */ + { 798, 0x9E3779B1U, 0x2D089D82U }, /* XSUM_XXH32_testdata[1597] */ + { 799, 0x00000000U, 0x349A7EC0U }, /* XSUM_XXH32_testdata[1598] */ + { 799, 0x9E3779B1U, 0xE1C4B3BCU }, /* XSUM_XXH32_testdata[1599] */ + { 800, 0x00000000U, 0x799ACE3AU }, /* XSUM_XXH32_testdata[1600] */ + { 800, 0x9E3779B1U, 0x94557779U }, /* XSUM_XXH32_testdata[1601] */ + { 801, 0x00000000U, 0x6006B6AEU }, /* XSUM_XXH32_testdata[1602] */ + { 801, 0x9E3779B1U, 0x3B80BC1BU }, /* XSUM_XXH32_testdata[1603] */ + { 802, 0x00000000U, 0xCB8EEF30U }, /* XSUM_XXH32_testdata[1604] */ + { 802, 0x9E3779B1U, 0x53E99BBBU }, /* XSUM_XXH32_testdata[1605] */ + { 803, 0x00000000U, 0x3CA5935FU }, /* XSUM_XXH32_testdata[1606] */ + { 803, 0x9E3779B1U, 0x79AE63A2U }, /* XSUM_XXH32_testdata[1607] */ + { 804, 0x00000000U, 0xFFCBE36BU }, /* XSUM_XXH32_testdata[1608] */ + { 804, 0x9E3779B1U, 0x42991898U }, /* XSUM_XXH32_testdata[1609] */ + { 805, 0x00000000U, 0x9E9AEB10U }, /* XSUM_XXH32_testdata[1610] */ + { 805, 0x9E3779B1U, 0xC917EBB7U }, /* XSUM_XXH32_testdata[1611] */ + { 806, 0x00000000U, 0x792D9C19U }, /* XSUM_XXH32_testdata[1612] */ + { 806, 0x9E3779B1U, 0x47430CB1U }, /* XSUM_XXH32_testdata[1613] */ + { 807, 0x00000000U, 0x0383FB25U }, /* XSUM_XXH32_testdata[1614] */ + { 807, 0x9E3779B1U, 0x87727B7EU }, /* XSUM_XXH32_testdata[1615] */ + { 808, 0x00000000U, 0x9B7DDE3FU }, /* XSUM_XXH32_testdata[1616] */ + { 808, 0x9E3779B1U, 0x1ACE553EU }, /* XSUM_XXH32_testdata[1617] */ + { 809, 0x00000000U, 0x0C585D82U }, /* XSUM_XXH32_testdata[1618] */ + { 809, 0x9E3779B1U, 0x0DBEE1DAU }, /* XSUM_XXH32_testdata[1619] */ + { 810, 0x00000000U, 0x426BD099U }, /* XSUM_XXH32_testdata[1620] */ + { 810, 0x9E3779B1U, 0xAA00D6C4U }, /* XSUM_XXH32_testdata[1621] */ + { 811, 0x00000000U, 0x5CA58FCDU }, /* XSUM_XXH32_testdata[1622] */ + { 811, 0x9E3779B1U, 0x200CD49BU }, /* XSUM_XXH32_testdata[1623] */ + { 812, 0x00000000U, 0xA005B5F3U }, /* XSUM_XXH32_testdata[1624] */ + { 812, 0x9E3779B1U, 0xC93B3EAFU }, /* XSUM_XXH32_testdata[1625] */ + { 813, 0x00000000U, 0x70ED3432U }, /* XSUM_XXH32_testdata[1626] */ + { 813, 0x9E3779B1U, 0x58CE8E37U }, /* XSUM_XXH32_testdata[1627] */ + { 814, 0x00000000U, 0x581F1F5BU }, /* XSUM_XXH32_testdata[1628] */ + { 814, 0x9E3779B1U, 0x87A7138AU }, /* XSUM_XXH32_testdata[1629] */ + { 815, 0x00000000U, 0xE01F98DBU }, /* XSUM_XXH32_testdata[1630] */ + { 815, 0x9E3779B1U, 0x2DD3C645U }, /* XSUM_XXH32_testdata[1631] */ + { 816, 0x00000000U, 0x9197D655U }, /* XSUM_XXH32_testdata[1632] */ + { 816, 0x9E3779B1U, 0x88181254U }, /* XSUM_XXH32_testdata[1633] */ + { 817, 0x00000000U, 0x8BEA65B4U }, /* XSUM_XXH32_testdata[1634] */ + { 817, 0x9E3779B1U, 0xA96D339EU }, /* XSUM_XXH32_testdata[1635] */ + { 818, 0x00000000U, 0x527578DBU }, /* XSUM_XXH32_testdata[1636] */ + { 818, 0x9E3779B1U, 0x1CB5CB64U }, /* XSUM_XXH32_testdata[1637] */ + { 819, 0x00000000U, 0x630CCD19U }, /* XSUM_XXH32_testdata[1638] */ + { 819, 0x9E3779B1U, 0xED107A3FU }, /* XSUM_XXH32_testdata[1639] */ + { 820, 0x00000000U, 0x41F3C92CU }, /* XSUM_XXH32_testdata[1640] */ + { 820, 0x9E3779B1U, 0x1ABE7E73U }, /* XSUM_XXH32_testdata[1641] */ + { 821, 0x00000000U, 0x19821DAFU }, /* XSUM_XXH32_testdata[1642] */ + { 821, 0x9E3779B1U, 0xDD0B94C3U }, /* XSUM_XXH32_testdata[1643] */ + { 822, 0x00000000U, 0xEA9FD68AU }, /* XSUM_XXH32_testdata[1644] */ + { 822, 0x9E3779B1U, 0x76282216U }, /* XSUM_XXH32_testdata[1645] */ + { 823, 0x00000000U, 0x298B22DFU }, /* XSUM_XXH32_testdata[1646] */ + { 823, 0x9E3779B1U, 0xCAB9201FU }, /* XSUM_XXH32_testdata[1647] */ + { 824, 0x00000000U, 0x1B6C1EBFU }, /* XSUM_XXH32_testdata[1648] */ + { 824, 0x9E3779B1U, 0xF79DCCE4U }, /* XSUM_XXH32_testdata[1649] */ + { 825, 0x00000000U, 0xF610D9B6U }, /* XSUM_XXH32_testdata[1650] */ + { 825, 0x9E3779B1U, 0x73062BC6U }, /* XSUM_XXH32_testdata[1651] */ + { 826, 0x00000000U, 0xBEA861F5U }, /* XSUM_XXH32_testdata[1652] */ + { 826, 0x9E3779B1U, 0x3B8CD69DU }, /* XSUM_XXH32_testdata[1653] */ + { 827, 0x00000000U, 0x3900262DU }, /* XSUM_XXH32_testdata[1654] */ + { 827, 0x9E3779B1U, 0x851AB34BU }, /* XSUM_XXH32_testdata[1655] */ + { 828, 0x00000000U, 0xD53836B9U }, /* XSUM_XXH32_testdata[1656] */ + { 828, 0x9E3779B1U, 0xC93C8FB4U }, /* XSUM_XXH32_testdata[1657] */ + { 829, 0x00000000U, 0xCC01D7B4U }, /* XSUM_XXH32_testdata[1658] */ + { 829, 0x9E3779B1U, 0x239420A2U }, /* XSUM_XXH32_testdata[1659] */ + { 830, 0x00000000U, 0x11A2A8FFU }, /* XSUM_XXH32_testdata[1660] */ + { 830, 0x9E3779B1U, 0x1C7A6CBEU }, /* XSUM_XXH32_testdata[1661] */ + { 831, 0x00000000U, 0x140A2E34U }, /* XSUM_XXH32_testdata[1662] */ + { 831, 0x9E3779B1U, 0xC8E75164U }, /* XSUM_XXH32_testdata[1663] */ + { 832, 0x00000000U, 0x0783E95AU }, /* XSUM_XXH32_testdata[1664] */ + { 832, 0x9E3779B1U, 0x021FF221U }, /* XSUM_XXH32_testdata[1665] */ + { 833, 0x00000000U, 0x8FB9CA1BU }, /* XSUM_XXH32_testdata[1666] */ + { 833, 0x9E3779B1U, 0xA1CC2DF9U }, /* XSUM_XXH32_testdata[1667] */ + { 834, 0x00000000U, 0x746A9750U }, /* XSUM_XXH32_testdata[1668] */ + { 834, 0x9E3779B1U, 0x5F16C1DDU }, /* XSUM_XXH32_testdata[1669] */ + { 835, 0x00000000U, 0x14B12F5FU }, /* XSUM_XXH32_testdata[1670] */ + { 835, 0x9E3779B1U, 0xC5005296U }, /* XSUM_XXH32_testdata[1671] */ + { 836, 0x00000000U, 0xBB9ACFA0U }, /* XSUM_XXH32_testdata[1672] */ + { 836, 0x9E3779B1U, 0x0DC8DAAFU }, /* XSUM_XXH32_testdata[1673] */ + { 837, 0x00000000U, 0x7205DC59U }, /* XSUM_XXH32_testdata[1674] */ + { 837, 0x9E3779B1U, 0xEEFC11DBU }, /* XSUM_XXH32_testdata[1675] */ + { 838, 0x00000000U, 0x0B52C9B9U }, /* XSUM_XXH32_testdata[1676] */ + { 838, 0x9E3779B1U, 0xAF1725DAU }, /* XSUM_XXH32_testdata[1677] */ + { 839, 0x00000000U, 0x464E264DU }, /* XSUM_XXH32_testdata[1678] */ + { 839, 0x9E3779B1U, 0xF8ABC41AU }, /* XSUM_XXH32_testdata[1679] */ + { 840, 0x00000000U, 0x6FE0DFAEU }, /* XSUM_XXH32_testdata[1680] */ + { 840, 0x9E3779B1U, 0x5C313325U }, /* XSUM_XXH32_testdata[1681] */ + { 841, 0x00000000U, 0x9DEE1514U }, /* XSUM_XXH32_testdata[1682] */ + { 841, 0x9E3779B1U, 0xB3EA0CA6U }, /* XSUM_XXH32_testdata[1683] */ + { 842, 0x00000000U, 0xD3A7EDCEU }, /* XSUM_XXH32_testdata[1684] */ + { 842, 0x9E3779B1U, 0x8694FFA8U }, /* XSUM_XXH32_testdata[1685] */ + { 843, 0x00000000U, 0xE842112CU }, /* XSUM_XXH32_testdata[1686] */ + { 843, 0x9E3779B1U, 0x3A6171E5U }, /* XSUM_XXH32_testdata[1687] */ + { 844, 0x00000000U, 0xD2B2F892U }, /* XSUM_XXH32_testdata[1688] */ + { 844, 0x9E3779B1U, 0xA413C6D0U }, /* XSUM_XXH32_testdata[1689] */ + { 845, 0x00000000U, 0xFEFB4745U }, /* XSUM_XXH32_testdata[1690] */ + { 845, 0x9E3779B1U, 0xE6672924U }, /* XSUM_XXH32_testdata[1691] */ + { 846, 0x00000000U, 0xAA00C849U }, /* XSUM_XXH32_testdata[1692] */ + { 846, 0x9E3779B1U, 0x2F20E493U }, /* XSUM_XXH32_testdata[1693] */ + { 847, 0x00000000U, 0x3BAB9A06U }, /* XSUM_XXH32_testdata[1694] */ + { 847, 0x9E3779B1U, 0xFD48FEABU }, /* XSUM_XXH32_testdata[1695] */ + { 848, 0x00000000U, 0x1732CE34U }, /* XSUM_XXH32_testdata[1696] */ + { 848, 0x9E3779B1U, 0xF693EFE5U }, /* XSUM_XXH32_testdata[1697] */ + { 849, 0x00000000U, 0x164D3308U }, /* XSUM_XXH32_testdata[1698] */ + { 849, 0x9E3779B1U, 0x31DB60C9U }, /* XSUM_XXH32_testdata[1699] */ + { 850, 0x00000000U, 0x2D570248U }, /* XSUM_XXH32_testdata[1700] */ + { 850, 0x9E3779B1U, 0xFFDE72F1U }, /* XSUM_XXH32_testdata[1701] */ + { 851, 0x00000000U, 0x6B8793C4U }, /* XSUM_XXH32_testdata[1702] */ + { 851, 0x9E3779B1U, 0xF8F00489U }, /* XSUM_XXH32_testdata[1703] */ + { 852, 0x00000000U, 0xEAC2EDADU }, /* XSUM_XXH32_testdata[1704] */ + { 852, 0x9E3779B1U, 0x0F2CE5ADU }, /* XSUM_XXH32_testdata[1705] */ + { 853, 0x00000000U, 0x56A12C9DU }, /* XSUM_XXH32_testdata[1706] */ + { 853, 0x9E3779B1U, 0xDA401320U }, /* XSUM_XXH32_testdata[1707] */ + { 854, 0x00000000U, 0xE1784C92U }, /* XSUM_XXH32_testdata[1708] */ + { 854, 0x9E3779B1U, 0xDC0796F4U }, /* XSUM_XXH32_testdata[1709] */ + { 855, 0x00000000U, 0xEF177BC4U }, /* XSUM_XXH32_testdata[1710] */ + { 855, 0x9E3779B1U, 0x879E8F48U }, /* XSUM_XXH32_testdata[1711] */ + { 856, 0x00000000U, 0x9F93E91FU }, /* XSUM_XXH32_testdata[1712] */ + { 856, 0x9E3779B1U, 0xFB085F0EU }, /* XSUM_XXH32_testdata[1713] */ + { 857, 0x00000000U, 0x4A47A2C0U }, /* XSUM_XXH32_testdata[1714] */ + { 857, 0x9E3779B1U, 0x9970434FU }, /* XSUM_XXH32_testdata[1715] */ + { 858, 0x00000000U, 0x0A564BC8U }, /* XSUM_XXH32_testdata[1716] */ + { 858, 0x9E3779B1U, 0x94ACD42EU }, /* XSUM_XXH32_testdata[1717] */ + { 859, 0x00000000U, 0x37664233U }, /* XSUM_XXH32_testdata[1718] */ + { 859, 0x9E3779B1U, 0x1A64836FU }, /* XSUM_XXH32_testdata[1719] */ + { 860, 0x00000000U, 0x4308CA3DU }, /* XSUM_XXH32_testdata[1720] */ + { 860, 0x9E3779B1U, 0x0E4E177DU }, /* XSUM_XXH32_testdata[1721] */ + { 861, 0x00000000U, 0xD5B7C564U }, /* XSUM_XXH32_testdata[1722] */ + { 861, 0x9E3779B1U, 0xD903E606U }, /* XSUM_XXH32_testdata[1723] */ + { 862, 0x00000000U, 0x82037110U }, /* XSUM_XXH32_testdata[1724] */ + { 862, 0x9E3779B1U, 0x75554B56U }, /* XSUM_XXH32_testdata[1725] */ + { 863, 0x00000000U, 0x145B2AE2U }, /* XSUM_XXH32_testdata[1726] */ + { 863, 0x9E3779B1U, 0x7E743179U }, /* XSUM_XXH32_testdata[1727] */ + { 864, 0x00000000U, 0x16C8B28CU }, /* XSUM_XXH32_testdata[1728] */ + { 864, 0x9E3779B1U, 0xB51D2BCFU }, /* XSUM_XXH32_testdata[1729] */ + { 865, 0x00000000U, 0x8C82C8E0U }, /* XSUM_XXH32_testdata[1730] */ + { 865, 0x9E3779B1U, 0xB2F697C2U }, /* XSUM_XXH32_testdata[1731] */ + { 866, 0x00000000U, 0xBE274BB3U }, /* XSUM_XXH32_testdata[1732] */ + { 866, 0x9E3779B1U, 0xE17C3BA2U }, /* XSUM_XXH32_testdata[1733] */ + { 867, 0x00000000U, 0x476BE8BFU }, /* XSUM_XXH32_testdata[1734] */ + { 867, 0x9E3779B1U, 0x71FAF09BU }, /* XSUM_XXH32_testdata[1735] */ + { 868, 0x00000000U, 0xAF268721U }, /* XSUM_XXH32_testdata[1736] */ + { 868, 0x9E3779B1U, 0x0F7FA222U }, /* XSUM_XXH32_testdata[1737] */ + { 869, 0x00000000U, 0x0EAD1E2AU }, /* XSUM_XXH32_testdata[1738] */ + { 869, 0x9E3779B1U, 0xF0C7FCBCU }, /* XSUM_XXH32_testdata[1739] */ + { 870, 0x00000000U, 0x63CA6795U }, /* XSUM_XXH32_testdata[1740] */ + { 870, 0x9E3779B1U, 0x6D43A2B2U }, /* XSUM_XXH32_testdata[1741] */ + { 871, 0x00000000U, 0x255F838FU }, /* XSUM_XXH32_testdata[1742] */ + { 871, 0x9E3779B1U, 0x3308BEFBU }, /* XSUM_XXH32_testdata[1743] */ + { 872, 0x00000000U, 0xB8926545U }, /* XSUM_XXH32_testdata[1744] */ + { 872, 0x9E3779B1U, 0xDD5AA75EU }, /* XSUM_XXH32_testdata[1745] */ + { 873, 0x00000000U, 0x2A1062E6U }, /* XSUM_XXH32_testdata[1746] */ + { 873, 0x9E3779B1U, 0x4B6C2322U }, /* XSUM_XXH32_testdata[1747] */ + { 874, 0x00000000U, 0xE1288231U }, /* XSUM_XXH32_testdata[1748] */ + { 874, 0x9E3779B1U, 0xF167892FU }, /* XSUM_XXH32_testdata[1749] */ + { 875, 0x00000000U, 0xC6473C63U }, /* XSUM_XXH32_testdata[1750] */ + { 875, 0x9E3779B1U, 0xDF7EE803U }, /* XSUM_XXH32_testdata[1751] */ + { 876, 0x00000000U, 0xADC3ACFBU }, /* XSUM_XXH32_testdata[1752] */ + { 876, 0x9E3779B1U, 0x5B2393CDU }, /* XSUM_XXH32_testdata[1753] */ + { 877, 0x00000000U, 0x58D5C9BAU }, /* XSUM_XXH32_testdata[1754] */ + { 877, 0x9E3779B1U, 0x4B013380U }, /* XSUM_XXH32_testdata[1755] */ + { 878, 0x00000000U, 0xC063426BU }, /* XSUM_XXH32_testdata[1756] */ + { 878, 0x9E3779B1U, 0x3431792AU }, /* XSUM_XXH32_testdata[1757] */ + { 879, 0x00000000U, 0x6F25BC05U }, /* XSUM_XXH32_testdata[1758] */ + { 879, 0x9E3779B1U, 0x2463EDABU }, /* XSUM_XXH32_testdata[1759] */ + { 880, 0x00000000U, 0x6941D23BU }, /* XSUM_XXH32_testdata[1760] */ + { 880, 0x9E3779B1U, 0x133CF5DAU }, /* XSUM_XXH32_testdata[1761] */ + { 881, 0x00000000U, 0xFE478A0CU }, /* XSUM_XXH32_testdata[1762] */ + { 881, 0x9E3779B1U, 0xDF743D6CU }, /* XSUM_XXH32_testdata[1763] */ + { 882, 0x00000000U, 0x5C20FC4BU }, /* XSUM_XXH32_testdata[1764] */ + { 882, 0x9E3779B1U, 0x0764B5DFU }, /* XSUM_XXH32_testdata[1765] */ + { 883, 0x00000000U, 0xB4D49683U }, /* XSUM_XXH32_testdata[1766] */ + { 883, 0x9E3779B1U, 0x16722D88U }, /* XSUM_XXH32_testdata[1767] */ + { 884, 0x00000000U, 0xC170FFA9U }, /* XSUM_XXH32_testdata[1768] */ + { 884, 0x9E3779B1U, 0xA536EECCU }, /* XSUM_XXH32_testdata[1769] */ + { 885, 0x00000000U, 0x4E655C59U }, /* XSUM_XXH32_testdata[1770] */ + { 885, 0x9E3779B1U, 0x39CA43A8U }, /* XSUM_XXH32_testdata[1771] */ + { 886, 0x00000000U, 0xF2B5A26DU }, /* XSUM_XXH32_testdata[1772] */ + { 886, 0x9E3779B1U, 0x8B2A6110U }, /* XSUM_XXH32_testdata[1773] */ + { 887, 0x00000000U, 0xE71437F1U }, /* XSUM_XXH32_testdata[1774] */ + { 887, 0x9E3779B1U, 0x0D3C607DU }, /* XSUM_XXH32_testdata[1775] */ + { 888, 0x00000000U, 0xB46B5CBDU }, /* XSUM_XXH32_testdata[1776] */ + { 888, 0x9E3779B1U, 0x4A74B7E8U }, /* XSUM_XXH32_testdata[1777] */ + { 889, 0x00000000U, 0xE006D455U }, /* XSUM_XXH32_testdata[1778] */ + { 889, 0x9E3779B1U, 0x471546A0U }, /* XSUM_XXH32_testdata[1779] */ + { 890, 0x00000000U, 0x02ECA8AAU }, /* XSUM_XXH32_testdata[1780] */ + { 890, 0x9E3779B1U, 0xD35D3207U }, /* XSUM_XXH32_testdata[1781] */ + { 891, 0x00000000U, 0xCEF23CC1U }, /* XSUM_XXH32_testdata[1782] */ + { 891, 0x9E3779B1U, 0x24E82C65U }, /* XSUM_XXH32_testdata[1783] */ + { 892, 0x00000000U, 0xAA24508EU }, /* XSUM_XXH32_testdata[1784] */ + { 892, 0x9E3779B1U, 0x76F48F31U }, /* XSUM_XXH32_testdata[1785] */ + { 893, 0x00000000U, 0xB2F9155FU }, /* XSUM_XXH32_testdata[1786] */ + { 893, 0x9E3779B1U, 0xEE7AD2F9U }, /* XSUM_XXH32_testdata[1787] */ + { 894, 0x00000000U, 0xE7B59BB7U }, /* XSUM_XXH32_testdata[1788] */ + { 894, 0x9E3779B1U, 0x926416CFU }, /* XSUM_XXH32_testdata[1789] */ + { 895, 0x00000000U, 0xC04896A1U }, /* XSUM_XXH32_testdata[1790] */ + { 895, 0x9E3779B1U, 0x119328BFU }, /* XSUM_XXH32_testdata[1791] */ + { 896, 0x00000000U, 0xA1C7A923U }, /* XSUM_XXH32_testdata[1792] */ + { 896, 0x9E3779B1U, 0x46149B0DU }, /* XSUM_XXH32_testdata[1793] */ + { 897, 0x00000000U, 0xFF4ED8D4U }, /* XSUM_XXH32_testdata[1794] */ + { 897, 0x9E3779B1U, 0x0F3F65EFU }, /* XSUM_XXH32_testdata[1795] */ + { 898, 0x00000000U, 0x1F82826EU }, /* XSUM_XXH32_testdata[1796] */ + { 898, 0x9E3779B1U, 0x759A1CB3U }, /* XSUM_XXH32_testdata[1797] */ + { 899, 0x00000000U, 0x1A934DC6U }, /* XSUM_XXH32_testdata[1798] */ + { 899, 0x9E3779B1U, 0x8B0E5440U }, /* XSUM_XXH32_testdata[1799] */ + { 900, 0x00000000U, 0x4C71F332U }, /* XSUM_XXH32_testdata[1800] */ + { 900, 0x9E3779B1U, 0xC9E617F3U }, /* XSUM_XXH32_testdata[1801] */ + { 901, 0x00000000U, 0x52FBDF77U }, /* XSUM_XXH32_testdata[1802] */ + { 901, 0x9E3779B1U, 0x432B13F4U }, /* XSUM_XXH32_testdata[1803] */ + { 902, 0x00000000U, 0x25D0AF8FU }, /* XSUM_XXH32_testdata[1804] */ + { 902, 0x9E3779B1U, 0x2B3F63B6U }, /* XSUM_XXH32_testdata[1805] */ + { 903, 0x00000000U, 0x311F9CD9U }, /* XSUM_XXH32_testdata[1806] */ + { 903, 0x9E3779B1U, 0x8B1E128FU }, /* XSUM_XXH32_testdata[1807] */ + { 904, 0x00000000U, 0x865F9281U }, /* XSUM_XXH32_testdata[1808] */ + { 904, 0x9E3779B1U, 0xFAA8D0FFU }, /* XSUM_XXH32_testdata[1809] */ + { 905, 0x00000000U, 0x3C320F49U }, /* XSUM_XXH32_testdata[1810] */ + { 905, 0x9E3779B1U, 0x4D968269U }, /* XSUM_XXH32_testdata[1811] */ + { 906, 0x00000000U, 0xA44A8B08U }, /* XSUM_XXH32_testdata[1812] */ + { 906, 0x9E3779B1U, 0xC1157174U }, /* XSUM_XXH32_testdata[1813] */ + { 907, 0x00000000U, 0x2933D62FU }, /* XSUM_XXH32_testdata[1814] */ + { 907, 0x9E3779B1U, 0x68DCB4D9U }, /* XSUM_XXH32_testdata[1815] */ + { 908, 0x00000000U, 0x87947414U }, /* XSUM_XXH32_testdata[1816] */ + { 908, 0x9E3779B1U, 0xD1237AD5U }, /* XSUM_XXH32_testdata[1817] */ + { 909, 0x00000000U, 0xB9C03AA0U }, /* XSUM_XXH32_testdata[1818] */ + { 909, 0x9E3779B1U, 0x04B9C681U }, /* XSUM_XXH32_testdata[1819] */ + { 910, 0x00000000U, 0xCFB8C5DFU }, /* XSUM_XXH32_testdata[1820] */ + { 910, 0x9E3779B1U, 0x35216418U }, /* XSUM_XXH32_testdata[1821] */ + { 911, 0x00000000U, 0xEA4DECC1U }, /* XSUM_XXH32_testdata[1822] */ + { 911, 0x9E3779B1U, 0xB83DE5CEU }, /* XSUM_XXH32_testdata[1823] */ + { 912, 0x00000000U, 0x3AD296A2U }, /* XSUM_XXH32_testdata[1824] */ + { 912, 0x9E3779B1U, 0xE594F5CAU }, /* XSUM_XXH32_testdata[1825] */ + { 913, 0x00000000U, 0xDB55306AU }, /* XSUM_XXH32_testdata[1826] */ + { 913, 0x9E3779B1U, 0xC726427BU }, /* XSUM_XXH32_testdata[1827] */ + { 914, 0x00000000U, 0x8205386AU }, /* XSUM_XXH32_testdata[1828] */ + { 914, 0x9E3779B1U, 0xC08D372AU }, /* XSUM_XXH32_testdata[1829] */ + { 915, 0x00000000U, 0xCC88B456U }, /* XSUM_XXH32_testdata[1830] */ + { 915, 0x9E3779B1U, 0xF81340A5U }, /* XSUM_XXH32_testdata[1831] */ + { 916, 0x00000000U, 0x3B2EC5E8U }, /* XSUM_XXH32_testdata[1832] */ + { 916, 0x9E3779B1U, 0xD06186E9U }, /* XSUM_XXH32_testdata[1833] */ + { 917, 0x00000000U, 0xB19BCF79U }, /* XSUM_XXH32_testdata[1834] */ + { 917, 0x9E3779B1U, 0xF0878A1DU }, /* XSUM_XXH32_testdata[1835] */ + { 918, 0x00000000U, 0x51B6D0B7U }, /* XSUM_XXH32_testdata[1836] */ + { 918, 0x9E3779B1U, 0xD03ABD0CU }, /* XSUM_XXH32_testdata[1837] */ + { 919, 0x00000000U, 0xA2388411U }, /* XSUM_XXH32_testdata[1838] */ + { 919, 0x9E3779B1U, 0x77D39263U }, /* XSUM_XXH32_testdata[1839] */ + { 920, 0x00000000U, 0x26B9033EU }, /* XSUM_XXH32_testdata[1840] */ + { 920, 0x9E3779B1U, 0x6FAFC1D6U }, /* XSUM_XXH32_testdata[1841] */ + { 921, 0x00000000U, 0xB1252094U }, /* XSUM_XXH32_testdata[1842] */ + { 921, 0x9E3779B1U, 0xF9A756DBU }, /* XSUM_XXH32_testdata[1843] */ + { 922, 0x00000000U, 0xFB2EA3FDU }, /* XSUM_XXH32_testdata[1844] */ + { 922, 0x9E3779B1U, 0x0CBF81BCU }, /* XSUM_XXH32_testdata[1845] */ + { 923, 0x00000000U, 0x9608E6B4U }, /* XSUM_XXH32_testdata[1846] */ + { 923, 0x9E3779B1U, 0x31D3955DU }, /* XSUM_XXH32_testdata[1847] */ + { 924, 0x00000000U, 0x7B791E4AU }, /* XSUM_XXH32_testdata[1848] */ + { 924, 0x9E3779B1U, 0x5C8FF5C1U }, /* XSUM_XXH32_testdata[1849] */ + { 925, 0x00000000U, 0xC0ADA68DU }, /* XSUM_XXH32_testdata[1850] */ + { 925, 0x9E3779B1U, 0x8A6E43EAU }, /* XSUM_XXH32_testdata[1851] */ + { 926, 0x00000000U, 0x7BE7336DU }, /* XSUM_XXH32_testdata[1852] */ + { 926, 0x9E3779B1U, 0x18617776U }, /* XSUM_XXH32_testdata[1853] */ + { 927, 0x00000000U, 0xF6508F24U }, /* XSUM_XXH32_testdata[1854] */ + { 927, 0x9E3779B1U, 0xAA0D461BU }, /* XSUM_XXH32_testdata[1855] */ + { 928, 0x00000000U, 0x2605B12DU }, /* XSUM_XXH32_testdata[1856] */ + { 928, 0x9E3779B1U, 0x35BA61DBU }, /* XSUM_XXH32_testdata[1857] */ + { 929, 0x00000000U, 0xB3E42749U }, /* XSUM_XXH32_testdata[1858] */ + { 929, 0x9E3779B1U, 0xF4153CE5U }, /* XSUM_XXH32_testdata[1859] */ + { 930, 0x00000000U, 0x9F218688U }, /* XSUM_XXH32_testdata[1860] */ + { 930, 0x9E3779B1U, 0x7FE70E23U }, /* XSUM_XXH32_testdata[1861] */ + { 931, 0x00000000U, 0xF434AA75U }, /* XSUM_XXH32_testdata[1862] */ + { 931, 0x9E3779B1U, 0x1CB726C8U }, /* XSUM_XXH32_testdata[1863] */ + { 932, 0x00000000U, 0xE73BFEFCU }, /* XSUM_XXH32_testdata[1864] */ + { 932, 0x9E3779B1U, 0xC93F71D1U }, /* XSUM_XXH32_testdata[1865] */ + { 933, 0x00000000U, 0xE5FEB2B6U }, /* XSUM_XXH32_testdata[1866] */ + { 933, 0x9E3779B1U, 0x11A57E5FU }, /* XSUM_XXH32_testdata[1867] */ + { 934, 0x00000000U, 0x8AB6D185U }, /* XSUM_XXH32_testdata[1868] */ + { 934, 0x9E3779B1U, 0xCDA30A60U }, /* XSUM_XXH32_testdata[1869] */ + { 935, 0x00000000U, 0x84C03046U }, /* XSUM_XXH32_testdata[1870] */ + { 935, 0x9E3779B1U, 0xEA293516U }, /* XSUM_XXH32_testdata[1871] */ + { 936, 0x00000000U, 0xE6975E35U }, /* XSUM_XXH32_testdata[1872] */ + { 936, 0x9E3779B1U, 0xF098711DU }, /* XSUM_XXH32_testdata[1873] */ + { 937, 0x00000000U, 0x9FC3BFBBU }, /* XSUM_XXH32_testdata[1874] */ + { 937, 0x9E3779B1U, 0x6AAEBE5DU }, /* XSUM_XXH32_testdata[1875] */ + { 938, 0x00000000U, 0xDC8B6DCBU }, /* XSUM_XXH32_testdata[1876] */ + { 938, 0x9E3779B1U, 0xDB967172U }, /* XSUM_XXH32_testdata[1877] */ + { 939, 0x00000000U, 0x9E2B4A28U }, /* XSUM_XXH32_testdata[1878] */ + { 939, 0x9E3779B1U, 0xE04AD3FFU }, /* XSUM_XXH32_testdata[1879] */ + { 940, 0x00000000U, 0xB3DC35ECU }, /* XSUM_XXH32_testdata[1880] */ + { 940, 0x9E3779B1U, 0x2B7F469CU }, /* XSUM_XXH32_testdata[1881] */ + { 941, 0x00000000U, 0xDDF34EFEU }, /* XSUM_XXH32_testdata[1882] */ + { 941, 0x9E3779B1U, 0x11037D75U }, /* XSUM_XXH32_testdata[1883] */ + { 942, 0x00000000U, 0x072116FCU }, /* XSUM_XXH32_testdata[1884] */ + { 942, 0x9E3779B1U, 0x9F32CC8BU }, /* XSUM_XXH32_testdata[1885] */ + { 943, 0x00000000U, 0xBF800F4BU }, /* XSUM_XXH32_testdata[1886] */ + { 943, 0x9E3779B1U, 0x3A408F9BU }, /* XSUM_XXH32_testdata[1887] */ + { 944, 0x00000000U, 0xEBE4533EU }, /* XSUM_XXH32_testdata[1888] */ + { 944, 0x9E3779B1U, 0x7BB63CF7U }, /* XSUM_XXH32_testdata[1889] */ + { 945, 0x00000000U, 0xE713F9ECU }, /* XSUM_XXH32_testdata[1890] */ + { 945, 0x9E3779B1U, 0xC244D3CEU }, /* XSUM_XXH32_testdata[1891] */ + { 946, 0x00000000U, 0xDE1D81AFU }, /* XSUM_XXH32_testdata[1892] */ + { 946, 0x9E3779B1U, 0x03CC2FFEU }, /* XSUM_XXH32_testdata[1893] */ + { 947, 0x00000000U, 0x830982E4U }, /* XSUM_XXH32_testdata[1894] */ + { 947, 0x9E3779B1U, 0x6CE1CADBU }, /* XSUM_XXH32_testdata[1895] */ + { 948, 0x00000000U, 0x318761FDU }, /* XSUM_XXH32_testdata[1896] */ + { 948, 0x9E3779B1U, 0x4529AC5FU }, /* XSUM_XXH32_testdata[1897] */ + { 949, 0x00000000U, 0xF750B50EU }, /* XSUM_XXH32_testdata[1898] */ + { 949, 0x9E3779B1U, 0x532E8599U }, /* XSUM_XXH32_testdata[1899] */ + { 950, 0x00000000U, 0xC8144FB8U }, /* XSUM_XXH32_testdata[1900] */ + { 950, 0x9E3779B1U, 0x3903F70FU }, /* XSUM_XXH32_testdata[1901] */ + { 951, 0x00000000U, 0x30BC4442U }, /* XSUM_XXH32_testdata[1902] */ + { 951, 0x9E3779B1U, 0x67AA8772U }, /* XSUM_XXH32_testdata[1903] */ + { 952, 0x00000000U, 0x8AE5991CU }, /* XSUM_XXH32_testdata[1904] */ + { 952, 0x9E3779B1U, 0xEA70DD9DU }, /* XSUM_XXH32_testdata[1905] */ + { 953, 0x00000000U, 0xE463B964U }, /* XSUM_XXH32_testdata[1906] */ + { 953, 0x9E3779B1U, 0xCAD6C042U }, /* XSUM_XXH32_testdata[1907] */ + { 954, 0x00000000U, 0x046D9095U }, /* XSUM_XXH32_testdata[1908] */ + { 954, 0x9E3779B1U, 0x78A6F70BU }, /* XSUM_XXH32_testdata[1909] */ + { 955, 0x00000000U, 0xF183D423U }, /* XSUM_XXH32_testdata[1910] */ + { 955, 0x9E3779B1U, 0x296EAF67U }, /* XSUM_XXH32_testdata[1911] */ + { 956, 0x00000000U, 0x739F78EEU }, /* XSUM_XXH32_testdata[1912] */ + { 956, 0x9E3779B1U, 0x49771B8AU }, /* XSUM_XXH32_testdata[1913] */ + { 957, 0x00000000U, 0xDE23CFCFU }, /* XSUM_XXH32_testdata[1914] */ + { 957, 0x9E3779B1U, 0xF0D2D9D7U }, /* XSUM_XXH32_testdata[1915] */ + { 958, 0x00000000U, 0xBDD6F4C1U }, /* XSUM_XXH32_testdata[1916] */ + { 958, 0x9E3779B1U, 0x363CA0A6U }, /* XSUM_XXH32_testdata[1917] */ + { 959, 0x00000000U, 0x2A85181AU }, /* XSUM_XXH32_testdata[1918] */ + { 959, 0x9E3779B1U, 0x7CE3C843U }, /* XSUM_XXH32_testdata[1919] */ + { 960, 0x00000000U, 0x93E1BD3CU }, /* XSUM_XXH32_testdata[1920] */ + { 960, 0x9E3779B1U, 0x89A288CFU }, /* XSUM_XXH32_testdata[1921] */ + { 961, 0x00000000U, 0xD94CFDC8U }, /* XSUM_XXH32_testdata[1922] */ + { 961, 0x9E3779B1U, 0xBC19A71AU }, /* XSUM_XXH32_testdata[1923] */ + { 962, 0x00000000U, 0xC174D2F7U }, /* XSUM_XXH32_testdata[1924] */ + { 962, 0x9E3779B1U, 0x953C5DD6U }, /* XSUM_XXH32_testdata[1925] */ + { 963, 0x00000000U, 0x8795CD3FU }, /* XSUM_XXH32_testdata[1926] */ + { 963, 0x9E3779B1U, 0x0A3071C8U }, /* XSUM_XXH32_testdata[1927] */ + { 964, 0x00000000U, 0xED5C5EF5U }, /* XSUM_XXH32_testdata[1928] */ + { 964, 0x9E3779B1U, 0x94F63473U }, /* XSUM_XXH32_testdata[1929] */ + { 965, 0x00000000U, 0x71C1F386U }, /* XSUM_XXH32_testdata[1930] */ + { 965, 0x9E3779B1U, 0x5A0A59F9U }, /* XSUM_XXH32_testdata[1931] */ + { 966, 0x00000000U, 0xF6DE7763U }, /* XSUM_XXH32_testdata[1932] */ + { 966, 0x9E3779B1U, 0xC2F383ADU }, /* XSUM_XXH32_testdata[1933] */ + { 967, 0x00000000U, 0x90EAAAAFU }, /* XSUM_XXH32_testdata[1934] */ + { 967, 0x9E3779B1U, 0x2D44AE3FU }, /* XSUM_XXH32_testdata[1935] */ + { 968, 0x00000000U, 0xFAFC5822U }, /* XSUM_XXH32_testdata[1936] */ + { 968, 0x9E3779B1U, 0x91FC5EDBU }, /* XSUM_XXH32_testdata[1937] */ + { 969, 0x00000000U, 0x3E9EDE6FU }, /* XSUM_XXH32_testdata[1938] */ + { 969, 0x9E3779B1U, 0x6182457CU }, /* XSUM_XXH32_testdata[1939] */ + { 970, 0x00000000U, 0xBBEA0543U }, /* XSUM_XXH32_testdata[1940] */ + { 970, 0x9E3779B1U, 0x069DEDF2U }, /* XSUM_XXH32_testdata[1941] */ + { 971, 0x00000000U, 0x1BECCC7FU }, /* XSUM_XXH32_testdata[1942] */ + { 971, 0x9E3779B1U, 0x5A2067D5U }, /* XSUM_XXH32_testdata[1943] */ + { 972, 0x00000000U, 0x2A6A0B06U }, /* XSUM_XXH32_testdata[1944] */ + { 972, 0x9E3779B1U, 0xCC3897B7U }, /* XSUM_XXH32_testdata[1945] */ + { 973, 0x00000000U, 0xD15F6FEAU }, /* XSUM_XXH32_testdata[1946] */ + { 973, 0x9E3779B1U, 0x91C4A037U }, /* XSUM_XXH32_testdata[1947] */ + { 974, 0x00000000U, 0xADB16A16U }, /* XSUM_XXH32_testdata[1948] */ + { 974, 0x9E3779B1U, 0xBB605662U }, /* XSUM_XXH32_testdata[1949] */ + { 975, 0x00000000U, 0xD8C78CAEU }, /* XSUM_XXH32_testdata[1950] */ + { 975, 0x9E3779B1U, 0x52F2C394U }, /* XSUM_XXH32_testdata[1951] */ + { 976, 0x00000000U, 0xF97B4816U }, /* XSUM_XXH32_testdata[1952] */ + { 976, 0x9E3779B1U, 0x1207ADA6U }, /* XSUM_XXH32_testdata[1953] */ + { 977, 0x00000000U, 0x77E56C8FU }, /* XSUM_XXH32_testdata[1954] */ + { 977, 0x9E3779B1U, 0x8DB37A95U }, /* XSUM_XXH32_testdata[1955] */ + { 978, 0x00000000U, 0x3819C3C4U }, /* XSUM_XXH32_testdata[1956] */ + { 978, 0x9E3779B1U, 0xD986DDA8U }, /* XSUM_XXH32_testdata[1957] */ + { 979, 0x00000000U, 0xA06EEB5EU }, /* XSUM_XXH32_testdata[1958] */ + { 979, 0x9E3779B1U, 0xCC9CAE2FU }, /* XSUM_XXH32_testdata[1959] */ + { 980, 0x00000000U, 0x74F8A163U }, /* XSUM_XXH32_testdata[1960] */ + { 980, 0x9E3779B1U, 0x1B694F97U }, /* XSUM_XXH32_testdata[1961] */ + { 981, 0x00000000U, 0x0D9030F4U }, /* XSUM_XXH32_testdata[1962] */ + { 981, 0x9E3779B1U, 0xC5C3D737U }, /* XSUM_XXH32_testdata[1963] */ + { 982, 0x00000000U, 0x188F83C8U }, /* XSUM_XXH32_testdata[1964] */ + { 982, 0x9E3779B1U, 0x468E9E56U }, /* XSUM_XXH32_testdata[1965] */ + { 983, 0x00000000U, 0x0506C18BU }, /* XSUM_XXH32_testdata[1966] */ + { 983, 0x9E3779B1U, 0x257A6015U }, /* XSUM_XXH32_testdata[1967] */ + { 984, 0x00000000U, 0xB7353DC6U }, /* XSUM_XXH32_testdata[1968] */ + { 984, 0x9E3779B1U, 0x65636F3CU }, /* XSUM_XXH32_testdata[1969] */ + { 985, 0x00000000U, 0x4A096F56U }, /* XSUM_XXH32_testdata[1970] */ + { 985, 0x9E3779B1U, 0x43F37A61U }, /* XSUM_XXH32_testdata[1971] */ + { 986, 0x00000000U, 0x7A00909CU }, /* XSUM_XXH32_testdata[1972] */ + { 986, 0x9E3779B1U, 0xCBEC7147U }, /* XSUM_XXH32_testdata[1973] */ + { 987, 0x00000000U, 0x31E3A48EU }, /* XSUM_XXH32_testdata[1974] */ + { 987, 0x9E3779B1U, 0xE8344DC5U }, /* XSUM_XXH32_testdata[1975] */ + { 988, 0x00000000U, 0x3A0D29FDU }, /* XSUM_XXH32_testdata[1976] */ + { 988, 0x9E3779B1U, 0x536C8206U }, /* XSUM_XXH32_testdata[1977] */ + { 989, 0x00000000U, 0xC5B7A4DDU }, /* XSUM_XXH32_testdata[1978] */ + { 989, 0x9E3779B1U, 0xCB9642ADU }, /* XSUM_XXH32_testdata[1979] */ + { 990, 0x00000000U, 0x17CF9745U }, /* XSUM_XXH32_testdata[1980] */ + { 990, 0x9E3779B1U, 0xEB0493B9U }, /* XSUM_XXH32_testdata[1981] */ + { 991, 0x00000000U, 0xDBD6EFD9U }, /* XSUM_XXH32_testdata[1982] */ + { 991, 0x9E3779B1U, 0xF8175615U }, /* XSUM_XXH32_testdata[1983] */ + { 992, 0x00000000U, 0xFF072340U }, /* XSUM_XXH32_testdata[1984] */ + { 992, 0x9E3779B1U, 0xF683DCEDU }, /* XSUM_XXH32_testdata[1985] */ + { 993, 0x00000000U, 0x07C9E5E6U }, /* XSUM_XXH32_testdata[1986] */ + { 993, 0x9E3779B1U, 0x4F3CBD36U }, /* XSUM_XXH32_testdata[1987] */ + { 994, 0x00000000U, 0x1D20BCE5U }, /* XSUM_XXH32_testdata[1988] */ + { 994, 0x9E3779B1U, 0x13A765F5U }, /* XSUM_XXH32_testdata[1989] */ + { 995, 0x00000000U, 0x1479E861U }, /* XSUM_XXH32_testdata[1990] */ + { 995, 0x9E3779B1U, 0x9859B8A4U }, /* XSUM_XXH32_testdata[1991] */ + { 996, 0x00000000U, 0x1071C16FU }, /* XSUM_XXH32_testdata[1992] */ + { 996, 0x9E3779B1U, 0x3648A1FAU }, /* XSUM_XXH32_testdata[1993] */ + { 997, 0x00000000U, 0xAA229676U }, /* XSUM_XXH32_testdata[1994] */ + { 997, 0x9E3779B1U, 0x3DBEDEDCU }, /* XSUM_XXH32_testdata[1995] */ + { 998, 0x00000000U, 0xF927434EU }, /* XSUM_XXH32_testdata[1996] */ + { 998, 0x9E3779B1U, 0x362876E7U }, /* XSUM_XXH32_testdata[1997] */ + { 999, 0x00000000U, 0x959FAFE8U }, /* XSUM_XXH32_testdata[1998] */ + { 999, 0x9E3779B1U, 0x46EA763FU }, /* XSUM_XXH32_testdata[1999] */ + { 1000, 0x00000000U, 0x2052D698U }, /* XSUM_XXH32_testdata[2000] */ + { 1000, 0x9E3779B1U, 0xD38B6679U }, /* XSUM_XXH32_testdata[2001] */ + { 1001, 0x00000000U, 0x2EAA0E22U }, /* XSUM_XXH32_testdata[2002] */ + { 1001, 0x9E3779B1U, 0x175578E1U }, /* XSUM_XXH32_testdata[2003] */ + { 1002, 0x00000000U, 0x69E28DCFU }, /* XSUM_XXH32_testdata[2004] */ + { 1002, 0x9E3779B1U, 0x9B74A874U }, /* XSUM_XXH32_testdata[2005] */ + { 1003, 0x00000000U, 0x91D77759U }, /* XSUM_XXH32_testdata[2006] */ + { 1003, 0x9E3779B1U, 0xC7EAE51DU }, /* XSUM_XXH32_testdata[2007] */ + { 1004, 0x00000000U, 0x749A0B26U }, /* XSUM_XXH32_testdata[2008] */ + { 1004, 0x9E3779B1U, 0x71D4363AU }, /* XSUM_XXH32_testdata[2009] */ + { 1005, 0x00000000U, 0x5FCDC293U }, /* XSUM_XXH32_testdata[2010] */ + { 1005, 0x9E3779B1U, 0xD9DFC560U }, /* XSUM_XXH32_testdata[2011] */ + { 1006, 0x00000000U, 0x9A7312D6U }, /* XSUM_XXH32_testdata[2012] */ + { 1006, 0x9E3779B1U, 0x029B937DU }, /* XSUM_XXH32_testdata[2013] */ + { 1007, 0x00000000U, 0x048E1C88U }, /* XSUM_XXH32_testdata[2014] */ + { 1007, 0x9E3779B1U, 0xE2F0F1DCU }, /* XSUM_XXH32_testdata[2015] */ + { 1008, 0x00000000U, 0x4A2E1A5EU }, /* XSUM_XXH32_testdata[2016] */ + { 1008, 0x9E3779B1U, 0x60AAE1B0U }, /* XSUM_XXH32_testdata[2017] */ + { 1009, 0x00000000U, 0x25C1658CU }, /* XSUM_XXH32_testdata[2018] */ + { 1009, 0x9E3779B1U, 0x7913AD41U }, /* XSUM_XXH32_testdata[2019] */ + { 1010, 0x00000000U, 0x5AC9C738U }, /* XSUM_XXH32_testdata[2020] */ + { 1010, 0x9E3779B1U, 0x9D671F2DU }, /* XSUM_XXH32_testdata[2021] */ + { 1011, 0x00000000U, 0x3FEBFA72U }, /* XSUM_XXH32_testdata[2022] */ + { 1011, 0x9E3779B1U, 0xE0B18591U }, /* XSUM_XXH32_testdata[2023] */ + { 1012, 0x00000000U, 0xC9D40D6DU }, /* XSUM_XXH32_testdata[2024] */ + { 1012, 0x9E3779B1U, 0xBE34FA85U }, /* XSUM_XXH32_testdata[2025] */ + { 1013, 0x00000000U, 0x9ADC9853U }, /* XSUM_XXH32_testdata[2026] */ + { 1013, 0x9E3779B1U, 0xF0DDB499U }, /* XSUM_XXH32_testdata[2027] */ + { 1014, 0x00000000U, 0xC5B8FFCEU }, /* XSUM_XXH32_testdata[2028] */ + { 1014, 0x9E3779B1U, 0x91C3CF2BU }, /* XSUM_XXH32_testdata[2029] */ + { 1015, 0x00000000U, 0x39D712DCU }, /* XSUM_XXH32_testdata[2030] */ + { 1015, 0x9E3779B1U, 0x16A75B67U }, /* XSUM_XXH32_testdata[2031] */ + { 1016, 0x00000000U, 0x93AA1B3CU }, /* XSUM_XXH32_testdata[2032] */ + { 1016, 0x9E3779B1U, 0x66A9A7BFU }, /* XSUM_XXH32_testdata[2033] */ + { 1017, 0x00000000U, 0x35963E31U }, /* XSUM_XXH32_testdata[2034] */ + { 1017, 0x9E3779B1U, 0x0A347870U }, /* XSUM_XXH32_testdata[2035] */ + { 1018, 0x00000000U, 0xE04FB799U }, /* XSUM_XXH32_testdata[2036] */ + { 1018, 0x9E3779B1U, 0x997B946BU }, /* XSUM_XXH32_testdata[2037] */ + { 1019, 0x00000000U, 0xDB06CDA3U }, /* XSUM_XXH32_testdata[2038] */ + { 1019, 0x9E3779B1U, 0xBA96DA73U }, /* XSUM_XXH32_testdata[2039] */ + { 1020, 0x00000000U, 0xEAC224C3U }, /* XSUM_XXH32_testdata[2040] */ + { 1020, 0x9E3779B1U, 0x9150FB03U }, /* XSUM_XXH32_testdata[2041] */ + { 1021, 0x00000000U, 0xC634C8A4U }, /* XSUM_XXH32_testdata[2042] */ + { 1021, 0x9E3779B1U, 0xED35004FU }, /* XSUM_XXH32_testdata[2043] */ + { 1022, 0x00000000U, 0x92C9F946U }, /* XSUM_XXH32_testdata[2044] */ + { 1022, 0x9E3779B1U, 0x8F9EEE88U }, /* XSUM_XXH32_testdata[2045] */ + { 1023, 0x00000000U, 0x57AA590FU }, /* XSUM_XXH32_testdata[2046] */ + { 1023, 0x9E3779B1U, 0x40CF6B0AU }, /* XSUM_XXH32_testdata[2047] */ + { 1024, 0x00000000U, 0xC08E0A35U }, /* XSUM_XXH32_testdata[2048] */ + { 1024, 0x9E3779B1U, 0x1D62EA25U }, /* XSUM_XXH32_testdata[2049] */ + { 1025, 0x00000000U, 0x75B3B8A1U }, /* XSUM_XXH32_testdata[2050] */ + { 1025, 0x9E3779B1U, 0xE3FB365AU }, /* XSUM_XXH32_testdata[2051] */ + { 1026, 0x00000000U, 0x8A547721U }, /* XSUM_XXH32_testdata[2052] */ + { 1026, 0x9E3779B1U, 0x4F243BD2U }, /* XSUM_XXH32_testdata[2053] */ + { 1027, 0x00000000U, 0x01C7549BU }, /* XSUM_XXH32_testdata[2054] */ + { 1027, 0x9E3779B1U, 0xB86E9BB2U }, /* XSUM_XXH32_testdata[2055] */ + { 1028, 0x00000000U, 0x9FD0C14DU }, /* XSUM_XXH32_testdata[2056] */ + { 1028, 0x9E3779B1U, 0x293B695CU }, /* XSUM_XXH32_testdata[2057] */ + { 1029, 0x00000000U, 0x879686E2U }, /* XSUM_XXH32_testdata[2058] */ + { 1029, 0x9E3779B1U, 0x59900271U }, /* XSUM_XXH32_testdata[2059] */ + { 1030, 0x00000000U, 0x2294579FU }, /* XSUM_XXH32_testdata[2060] */ + { 1030, 0x9E3779B1U, 0xDC2AB8A5U }, /* XSUM_XXH32_testdata[2061] */ + { 1031, 0x00000000U, 0xB2E43FE4U }, /* XSUM_XXH32_testdata[2062] */ + { 1031, 0x9E3779B1U, 0x13F41993U }, /* XSUM_XXH32_testdata[2063] */ + { 1032, 0x00000000U, 0x2A7DA48DU }, /* XSUM_XXH32_testdata[2064] */ + { 1032, 0x9E3779B1U, 0x534C0B43U }, /* XSUM_XXH32_testdata[2065] */ + { 1033, 0x00000000U, 0x5B83A015U }, /* XSUM_XXH32_testdata[2066] */ + { 1033, 0x9E3779B1U, 0xDABAC127U }, /* XSUM_XXH32_testdata[2067] */ + { 1034, 0x00000000U, 0x21DA5779U }, /* XSUM_XXH32_testdata[2068] */ + { 1034, 0x9E3779B1U, 0xBFE62480U }, /* XSUM_XXH32_testdata[2069] */ + { 1035, 0x00000000U, 0xE0985119U }, /* XSUM_XXH32_testdata[2070] */ + { 1035, 0x9E3779B1U, 0xEE508960U }, /* XSUM_XXH32_testdata[2071] */ + { 1036, 0x00000000U, 0x69F48301U }, /* XSUM_XXH32_testdata[2072] */ + { 1036, 0x9E3779B1U, 0xE8E2CABAU }, /* XSUM_XXH32_testdata[2073] */ + { 1037, 0x00000000U, 0x9FA6B478U }, /* XSUM_XXH32_testdata[2074] */ + { 1037, 0x9E3779B1U, 0x34F0858AU }, /* XSUM_XXH32_testdata[2075] */ + { 1038, 0x00000000U, 0x6F710A1EU }, /* XSUM_XXH32_testdata[2076] */ + { 1038, 0x9E3779B1U, 0xF2F3BC16U }, /* XSUM_XXH32_testdata[2077] */ + { 1039, 0x00000000U, 0x27AACA5BU }, /* XSUM_XXH32_testdata[2078] */ + { 1039, 0x9E3779B1U, 0x43E48B1FU }, /* XSUM_XXH32_testdata[2079] */ + { 1040, 0x00000000U, 0x1A5AEF00U }, /* XSUM_XXH32_testdata[2080] */ + { 1040, 0x9E3779B1U, 0xA1D1FF9CU }, /* XSUM_XXH32_testdata[2081] */ + { 1041, 0x00000000U, 0xC7CC8B3AU }, /* XSUM_XXH32_testdata[2082] */ + { 1041, 0x9E3779B1U, 0xDA22CDFAU }, /* XSUM_XXH32_testdata[2083] */ + { 1042, 0x00000000U, 0x6D5359DBU }, /* XSUM_XXH32_testdata[2084] */ + { 1042, 0x9E3779B1U, 0x16878CF8U }, /* XSUM_XXH32_testdata[2085] */ + { 1043, 0x00000000U, 0x4EDB8EE4U }, /* XSUM_XXH32_testdata[2086] */ + { 1043, 0x9E3779B1U, 0x8B14C369U }, /* XSUM_XXH32_testdata[2087] */ + { 1044, 0x00000000U, 0xDB5DE323U }, /* XSUM_XXH32_testdata[2088] */ + { 1044, 0x9E3779B1U, 0x045C871DU }, /* XSUM_XXH32_testdata[2089] */ + { 1045, 0x00000000U, 0xBBE68A80U }, /* XSUM_XXH32_testdata[2090] */ + { 1045, 0x9E3779B1U, 0x7D011233U }, /* XSUM_XXH32_testdata[2091] */ + { 1046, 0x00000000U, 0xF9E7FC3FU }, /* XSUM_XXH32_testdata[2092] */ + { 1046, 0x9E3779B1U, 0xA0D9661FU }, /* XSUM_XXH32_testdata[2093] */ + { 1047, 0x00000000U, 0x90AD6395U }, /* XSUM_XXH32_testdata[2094] */ + { 1047, 0x9E3779B1U, 0x5AC7215BU }, /* XSUM_XXH32_testdata[2095] */ + { 1048, 0x00000000U, 0x7945197AU }, /* XSUM_XXH32_testdata[2096] */ + { 1048, 0x9E3779B1U, 0x3C3E4834U }, /* XSUM_XXH32_testdata[2097] */ + { 1049, 0x00000000U, 0x64DD8B17U }, /* XSUM_XXH32_testdata[2098] */ + { 1049, 0x9E3779B1U, 0xA23725ABU }, /* XSUM_XXH32_testdata[2099] */ + { 1050, 0x00000000U, 0xA8E664CEU }, /* XSUM_XXH32_testdata[2100] */ + { 1050, 0x9E3779B1U, 0x37018E95U }, /* XSUM_XXH32_testdata[2101] */ + { 1051, 0x00000000U, 0xE2FC3D22U }, /* XSUM_XXH32_testdata[2102] */ + { 1051, 0x9E3779B1U, 0x0DAAAC18U }, /* XSUM_XXH32_testdata[2103] */ + { 1052, 0x00000000U, 0x57336162U }, /* XSUM_XXH32_testdata[2104] */ + { 1052, 0x9E3779B1U, 0x1410CB8AU }, /* XSUM_XXH32_testdata[2105] */ + { 1053, 0x00000000U, 0xACC8EAA8U }, /* XSUM_XXH32_testdata[2106] */ + { 1053, 0x9E3779B1U, 0x6B0B55CDU }, /* XSUM_XXH32_testdata[2107] */ + { 1054, 0x00000000U, 0xF1FDACF5U }, /* XSUM_XXH32_testdata[2108] */ + { 1054, 0x9E3779B1U, 0x023B6E05U }, /* XSUM_XXH32_testdata[2109] */ + { 1055, 0x00000000U, 0x9ADE3125U }, /* XSUM_XXH32_testdata[2110] */ + { 1055, 0x9E3779B1U, 0x21D168B8U }, /* XSUM_XXH32_testdata[2111] */ + { 1056, 0x00000000U, 0x2360F02DU }, /* XSUM_XXH32_testdata[2112] */ + { 1056, 0x9E3779B1U, 0x168528ABU }, /* XSUM_XXH32_testdata[2113] */ + { 1057, 0x00000000U, 0x558C8FBFU }, /* XSUM_XXH32_testdata[2114] */ + { 1057, 0x9E3779B1U, 0x6277C8FCU }, /* XSUM_XXH32_testdata[2115] */ + { 1058, 0x00000000U, 0x3972BBDFU }, /* XSUM_XXH32_testdata[2116] */ + { 1058, 0x9E3779B1U, 0xEC06EA1FU }, /* XSUM_XXH32_testdata[2117] */ + { 1059, 0x00000000U, 0x5AD25CF0U }, /* XSUM_XXH32_testdata[2118] */ + { 1059, 0x9E3779B1U, 0xBF038D64U }, /* XSUM_XXH32_testdata[2119] */ + { 1060, 0x00000000U, 0x87BB3AEDU }, /* XSUM_XXH32_testdata[2120] */ + { 1060, 0x9E3779B1U, 0xAC417030U }, /* XSUM_XXH32_testdata[2121] */ + { 1061, 0x00000000U, 0x3CA255CEU }, /* XSUM_XXH32_testdata[2122] */ + { 1061, 0x9E3779B1U, 0x34BAFD11U }, /* XSUM_XXH32_testdata[2123] */ + { 1062, 0x00000000U, 0xBFED7A26U }, /* XSUM_XXH32_testdata[2124] */ + { 1062, 0x9E3779B1U, 0xC2F51083U }, /* XSUM_XXH32_testdata[2125] */ + { 1063, 0x00000000U, 0x177C5860U }, /* XSUM_XXH32_testdata[2126] */ + { 1063, 0x9E3779B1U, 0xB008BA49U }, /* XSUM_XXH32_testdata[2127] */ + { 1064, 0x00000000U, 0xBD827070U }, /* XSUM_XXH32_testdata[2128] */ + { 1064, 0x9E3779B1U, 0x678934F0U }, /* XSUM_XXH32_testdata[2129] */ + { 1065, 0x00000000U, 0xB3568AD2U }, /* XSUM_XXH32_testdata[2130] */ + { 1065, 0x9E3779B1U, 0x67DEDF17U }, /* XSUM_XXH32_testdata[2131] */ + { 1066, 0x00000000U, 0x82EAE591U }, /* XSUM_XXH32_testdata[2132] */ + { 1066, 0x9E3779B1U, 0xF36D85BBU }, /* XSUM_XXH32_testdata[2133] */ + { 1067, 0x00000000U, 0x773A5E32U }, /* XSUM_XXH32_testdata[2134] */ + { 1067, 0x9E3779B1U, 0x580B1974U }, /* XSUM_XXH32_testdata[2135] */ + { 1068, 0x00000000U, 0xCA2C3486U }, /* XSUM_XXH32_testdata[2136] */ + { 1068, 0x9E3779B1U, 0x947F4341U }, /* XSUM_XXH32_testdata[2137] */ + { 1069, 0x00000000U, 0xFBC29794U }, /* XSUM_XXH32_testdata[2138] */ + { 1069, 0x9E3779B1U, 0x0D564165U }, /* XSUM_XXH32_testdata[2139] */ + { 1070, 0x00000000U, 0x34ADD445U }, /* XSUM_XXH32_testdata[2140] */ + { 1070, 0x9E3779B1U, 0xB3458EB4U }, /* XSUM_XXH32_testdata[2141] */ + { 1071, 0x00000000U, 0x3D40EE5AU }, /* XSUM_XXH32_testdata[2142] */ + { 1071, 0x9E3779B1U, 0x51B93541U }, /* XSUM_XXH32_testdata[2143] */ + { 1072, 0x00000000U, 0x54EE3A70U }, /* XSUM_XXH32_testdata[2144] */ + { 1072, 0x9E3779B1U, 0x37C0DFCDU }, /* XSUM_XXH32_testdata[2145] */ + { 1073, 0x00000000U, 0x473346C9U }, /* XSUM_XXH32_testdata[2146] */ + { 1073, 0x9E3779B1U, 0x10F112D8U }, /* XSUM_XXH32_testdata[2147] */ + { 1074, 0x00000000U, 0x4AF885E3U }, /* XSUM_XXH32_testdata[2148] */ + { 1074, 0x9E3779B1U, 0x70044FC2U }, /* XSUM_XXH32_testdata[2149] */ + { 1075, 0x00000000U, 0x198358B8U }, /* XSUM_XXH32_testdata[2150] */ + { 1075, 0x9E3779B1U, 0x9294EA2AU }, /* XSUM_XXH32_testdata[2151] */ + { 1076, 0x00000000U, 0x9DD6EF1AU }, /* XSUM_XXH32_testdata[2152] */ + { 1076, 0x9E3779B1U, 0x46235CBCU }, /* XSUM_XXH32_testdata[2153] */ + { 1077, 0x00000000U, 0x4CC83416U }, /* XSUM_XXH32_testdata[2154] */ + { 1077, 0x9E3779B1U, 0x707C64ECU }, /* XSUM_XXH32_testdata[2155] */ + { 1078, 0x00000000U, 0x8BDDC22EU }, /* XSUM_XXH32_testdata[2156] */ + { 1078, 0x9E3779B1U, 0xFF932B8BU }, /* XSUM_XXH32_testdata[2157] */ + { 1079, 0x00000000U, 0x24144C82U }, /* XSUM_XXH32_testdata[2158] */ + { 1079, 0x9E3779B1U, 0xBF5B8D89U }, /* XSUM_XXH32_testdata[2159] */ + { 1080, 0x00000000U, 0x628B9202U }, /* XSUM_XXH32_testdata[2160] */ + { 1080, 0x9E3779B1U, 0x51139113U }, /* XSUM_XXH32_testdata[2161] */ + { 1081, 0x00000000U, 0xF5638DCEU }, /* XSUM_XXH32_testdata[2162] */ + { 1081, 0x9E3779B1U, 0x7025E1D7U }, /* XSUM_XXH32_testdata[2163] */ + { 1082, 0x00000000U, 0x7FA5BC40U }, /* XSUM_XXH32_testdata[2164] */ + { 1082, 0x9E3779B1U, 0x359E9DFDU }, /* XSUM_XXH32_testdata[2165] */ + { 1083, 0x00000000U, 0x5D45BE3BU }, /* XSUM_XXH32_testdata[2166] */ + { 1083, 0x9E3779B1U, 0x05136309U }, /* XSUM_XXH32_testdata[2167] */ + { 1084, 0x00000000U, 0xDB9406E9U }, /* XSUM_XXH32_testdata[2168] */ + { 1084, 0x9E3779B1U, 0xA2F2FB71U }, /* XSUM_XXH32_testdata[2169] */ + { 1085, 0x00000000U, 0x86CC2786U }, /* XSUM_XXH32_testdata[2170] */ + { 1085, 0x9E3779B1U, 0xFF60906BU }, /* XSUM_XXH32_testdata[2171] */ + { 1086, 0x00000000U, 0x7D782445U }, /* XSUM_XXH32_testdata[2172] */ + { 1086, 0x9E3779B1U, 0x5B819CFDU }, /* XSUM_XXH32_testdata[2173] */ + { 1087, 0x00000000U, 0xBDF23638U }, /* XSUM_XXH32_testdata[2174] */ + { 1087, 0x9E3779B1U, 0xA840336EU }, /* XSUM_XXH32_testdata[2175] */ + { 1088, 0x00000000U, 0x23197D27U }, /* XSUM_XXH32_testdata[2176] */ + { 1088, 0x9E3779B1U, 0x4C7C9667U }, /* XSUM_XXH32_testdata[2177] */ + { 1089, 0x00000000U, 0xD8C0B8CCU }, /* XSUM_XXH32_testdata[2178] */ + { 1089, 0x9E3779B1U, 0x379C7B23U }, /* XSUM_XXH32_testdata[2179] */ + { 1090, 0x00000000U, 0x17228791U }, /* XSUM_XXH32_testdata[2180] */ + { 1090, 0x9E3779B1U, 0x61FA775EU }, /* XSUM_XXH32_testdata[2181] */ + { 1091, 0x00000000U, 0x780389C1U }, /* XSUM_XXH32_testdata[2182] */ + { 1091, 0x9E3779B1U, 0x73D6B2A1U }, /* XSUM_XXH32_testdata[2183] */ + { 1092, 0x00000000U, 0x60A4F630U }, /* XSUM_XXH32_testdata[2184] */ + { 1092, 0x9E3779B1U, 0xBDE591C6U }, /* XSUM_XXH32_testdata[2185] */ + { 1093, 0x00000000U, 0xDE644393U }, /* XSUM_XXH32_testdata[2186] */ + { 1093, 0x9E3779B1U, 0x5A500945U }, /* XSUM_XXH32_testdata[2187] */ + { 1094, 0x00000000U, 0x828B6985U }, /* XSUM_XXH32_testdata[2188] */ + { 1094, 0x9E3779B1U, 0x4337D8A6U }, /* XSUM_XXH32_testdata[2189] */ + { 1095, 0x00000000U, 0x8D4BEE0CU }, /* XSUM_XXH32_testdata[2190] */ + { 1095, 0x9E3779B1U, 0x78107E43U }, /* XSUM_XXH32_testdata[2191] */ + { 1096, 0x00000000U, 0x6DCEDB65U }, /* XSUM_XXH32_testdata[2192] */ + { 1096, 0x9E3779B1U, 0x7170920FU }, /* XSUM_XXH32_testdata[2193] */ + { 1097, 0x00000000U, 0xDE059DC1U }, /* XSUM_XXH32_testdata[2194] */ + { 1097, 0x9E3779B1U, 0x4B591746U }, /* XSUM_XXH32_testdata[2195] */ + { 1098, 0x00000000U, 0x651C323AU }, /* XSUM_XXH32_testdata[2196] */ + { 1098, 0x9E3779B1U, 0xD8919B48U }, /* XSUM_XXH32_testdata[2197] */ + { 1099, 0x00000000U, 0x29B6CED7U }, /* XSUM_XXH32_testdata[2198] */ + { 1099, 0x9E3779B1U, 0xCB69A781U }, /* XSUM_XXH32_testdata[2199] */ + { 1100, 0x00000000U, 0x648280E2U }, /* XSUM_XXH32_testdata[2200] */ + { 1100, 0x9E3779B1U, 0xA1955AC2U }, /* XSUM_XXH32_testdata[2201] */ + { 1101, 0x00000000U, 0x10985119U }, /* XSUM_XXH32_testdata[2202] */ + { 1101, 0x9E3779B1U, 0x89D6293EU }, /* XSUM_XXH32_testdata[2203] */ + { 1102, 0x00000000U, 0x8D5A31ADU }, /* XSUM_XXH32_testdata[2204] */ + { 1102, 0x9E3779B1U, 0x365F03FAU }, /* XSUM_XXH32_testdata[2205] */ + { 1103, 0x00000000U, 0x6939913FU }, /* XSUM_XXH32_testdata[2206] */ + { 1103, 0x9E3779B1U, 0xD066F511U }, /* XSUM_XXH32_testdata[2207] */ + { 1104, 0x00000000U, 0xD9EBC27CU }, /* XSUM_XXH32_testdata[2208] */ + { 1104, 0x9E3779B1U, 0x07CCDEECU }, /* XSUM_XXH32_testdata[2209] */ + { 1105, 0x00000000U, 0x45DCD964U }, /* XSUM_XXH32_testdata[2210] */ + { 1105, 0x9E3779B1U, 0x7B4B66E2U }, /* XSUM_XXH32_testdata[2211] */ + { 1106, 0x00000000U, 0xD214E256U }, /* XSUM_XXH32_testdata[2212] */ + { 1106, 0x9E3779B1U, 0x74A40958U }, /* XSUM_XXH32_testdata[2213] */ + { 1107, 0x00000000U, 0x9329C598U }, /* XSUM_XXH32_testdata[2214] */ + { 1107, 0x9E3779B1U, 0x8DC68A56U }, /* XSUM_XXH32_testdata[2215] */ + { 1108, 0x00000000U, 0x43C5D077U }, /* XSUM_XXH32_testdata[2216] */ + { 1108, 0x9E3779B1U, 0x328844F5U }, /* XSUM_XXH32_testdata[2217] */ + { 1109, 0x00000000U, 0xDF2535E4U }, /* XSUM_XXH32_testdata[2218] */ + { 1109, 0x9E3779B1U, 0xD1ACD1CFU }, /* XSUM_XXH32_testdata[2219] */ + { 1110, 0x00000000U, 0xDE6CE5DBU }, /* XSUM_XXH32_testdata[2220] */ + { 1110, 0x9E3779B1U, 0x0E2B868FU }, /* XSUM_XXH32_testdata[2221] */ + { 1111, 0x00000000U, 0xAB308EBDU }, /* XSUM_XXH32_testdata[2222] */ + { 1111, 0x9E3779B1U, 0xF35DE130U }, /* XSUM_XXH32_testdata[2223] */ + { 1112, 0x00000000U, 0xAD69BA13U }, /* XSUM_XXH32_testdata[2224] */ + { 1112, 0x9E3779B1U, 0x8A9C5F48U }, /* XSUM_XXH32_testdata[2225] */ + { 1113, 0x00000000U, 0xDD3CC30BU }, /* XSUM_XXH32_testdata[2226] */ + { 1113, 0x9E3779B1U, 0x6920848BU }, /* XSUM_XXH32_testdata[2227] */ + { 1114, 0x00000000U, 0xBB8E77EDU }, /* XSUM_XXH32_testdata[2228] */ + { 1114, 0x9E3779B1U, 0xD3FE90DDU }, /* XSUM_XXH32_testdata[2229] */ + { 1115, 0x00000000U, 0x082F674CU }, /* XSUM_XXH32_testdata[2230] */ + { 1115, 0x9E3779B1U, 0x3A405F30U }, /* XSUM_XXH32_testdata[2231] */ + { 1116, 0x00000000U, 0xAED38B9FU }, /* XSUM_XXH32_testdata[2232] */ + { 1116, 0x9E3779B1U, 0x275E3165U }, /* XSUM_XXH32_testdata[2233] */ + { 1117, 0x00000000U, 0x93E3C004U }, /* XSUM_XXH32_testdata[2234] */ + { 1117, 0x9E3779B1U, 0xAD6D4403U }, /* XSUM_XXH32_testdata[2235] */ + { 1118, 0x00000000U, 0x47B760C6U }, /* XSUM_XXH32_testdata[2236] */ + { 1118, 0x9E3779B1U, 0x2E1601C6U }, /* XSUM_XXH32_testdata[2237] */ + { 1119, 0x00000000U, 0x16BC49ABU }, /* XSUM_XXH32_testdata[2238] */ + { 1119, 0x9E3779B1U, 0x5EA405B9U }, /* XSUM_XXH32_testdata[2239] */ + { 1120, 0x00000000U, 0xC59EC900U }, /* XSUM_XXH32_testdata[2240] */ + { 1120, 0x9E3779B1U, 0xB34C0AD4U }, /* XSUM_XXH32_testdata[2241] */ + { 1121, 0x00000000U, 0xF32BE6D8U }, /* XSUM_XXH32_testdata[2242] */ + { 1121, 0x9E3779B1U, 0x0C7A26CBU }, /* XSUM_XXH32_testdata[2243] */ + { 1122, 0x00000000U, 0xCD4DEB83U }, /* XSUM_XXH32_testdata[2244] */ + { 1122, 0x9E3779B1U, 0xD9B6086FU }, /* XSUM_XXH32_testdata[2245] */ + { 1123, 0x00000000U, 0x5B563DB9U }, /* XSUM_XXH32_testdata[2246] */ + { 1123, 0x9E3779B1U, 0x8F011FEAU }, /* XSUM_XXH32_testdata[2247] */ + { 1124, 0x00000000U, 0x1D7BF599U }, /* XSUM_XXH32_testdata[2248] */ + { 1124, 0x9E3779B1U, 0x4A2D8907U }, /* XSUM_XXH32_testdata[2249] */ + { 1125, 0x00000000U, 0xC73448C3U }, /* XSUM_XXH32_testdata[2250] */ + { 1125, 0x9E3779B1U, 0xB8578745U }, /* XSUM_XXH32_testdata[2251] */ + { 1126, 0x00000000U, 0x9681D013U }, /* XSUM_XXH32_testdata[2252] */ + { 1126, 0x9E3779B1U, 0x9FBAE5F8U }, /* XSUM_XXH32_testdata[2253] */ + { 1127, 0x00000000U, 0x7BD19AF8U }, /* XSUM_XXH32_testdata[2254] */ + { 1127, 0x9E3779B1U, 0x62760CFCU }, /* XSUM_XXH32_testdata[2255] */ + { 1128, 0x00000000U, 0x6792051DU }, /* XSUM_XXH32_testdata[2256] */ + { 1128, 0x9E3779B1U, 0x2686447DU }, /* XSUM_XXH32_testdata[2257] */ + { 1129, 0x00000000U, 0xAC7AC7A8U }, /* XSUM_XXH32_testdata[2258] */ + { 1129, 0x9E3779B1U, 0x52E3F07AU }, /* XSUM_XXH32_testdata[2259] */ + { 1130, 0x00000000U, 0x652C2B30U }, /* XSUM_XXH32_testdata[2260] */ + { 1130, 0x9E3779B1U, 0x19F9FD83U }, /* XSUM_XXH32_testdata[2261] */ + { 1131, 0x00000000U, 0x9657F7D2U }, /* XSUM_XXH32_testdata[2262] */ + { 1131, 0x9E3779B1U, 0xB87E2204U }, /* XSUM_XXH32_testdata[2263] */ + { 1132, 0x00000000U, 0x105D2302U }, /* XSUM_XXH32_testdata[2264] */ + { 1132, 0x9E3779B1U, 0x0CEC52C5U }, /* XSUM_XXH32_testdata[2265] */ + { 1133, 0x00000000U, 0xB6D388D0U }, /* XSUM_XXH32_testdata[2266] */ + { 1133, 0x9E3779B1U, 0x29D2E495U }, /* XSUM_XXH32_testdata[2267] */ + { 1134, 0x00000000U, 0x02009A0CU }, /* XSUM_XXH32_testdata[2268] */ + { 1134, 0x9E3779B1U, 0x8455DE4DU }, /* XSUM_XXH32_testdata[2269] */ + { 1135, 0x00000000U, 0x2236051CU }, /* XSUM_XXH32_testdata[2270] */ + { 1135, 0x9E3779B1U, 0xED09AEA1U }, /* XSUM_XXH32_testdata[2271] */ + { 1136, 0x00000000U, 0x14C19087U }, /* XSUM_XXH32_testdata[2272] */ + { 1136, 0x9E3779B1U, 0x43853C21U }, /* XSUM_XXH32_testdata[2273] */ + { 1137, 0x00000000U, 0xC5142F70U }, /* XSUM_XXH32_testdata[2274] */ + { 1137, 0x9E3779B1U, 0x0F8730F4U }, /* XSUM_XXH32_testdata[2275] */ + { 1138, 0x00000000U, 0x8F701CBFU }, /* XSUM_XXH32_testdata[2276] */ + { 1138, 0x9E3779B1U, 0x0532601BU }, /* XSUM_XXH32_testdata[2277] */ + { 1139, 0x00000000U, 0x0F9FE493U }, /* XSUM_XXH32_testdata[2278] */ + { 1139, 0x9E3779B1U, 0xB0C649ACU }, /* XSUM_XXH32_testdata[2279] */ + { 1140, 0x00000000U, 0xF76EC761U }, /* XSUM_XXH32_testdata[2280] */ + { 1140, 0x9E3779B1U, 0x4E489FB2U }, /* XSUM_XXH32_testdata[2281] */ + { 1141, 0x00000000U, 0xAAC872F2U }, /* XSUM_XXH32_testdata[2282] */ + { 1141, 0x9E3779B1U, 0xD5235209U }, /* XSUM_XXH32_testdata[2283] */ + { 1142, 0x00000000U, 0x0FA2BBA4U }, /* XSUM_XXH32_testdata[2284] */ + { 1142, 0x9E3779B1U, 0x832FF451U }, /* XSUM_XXH32_testdata[2285] */ + { 1143, 0x00000000U, 0x1AD96E36U }, /* XSUM_XXH32_testdata[2286] */ + { 1143, 0x9E3779B1U, 0x6F3E9DFDU }, /* XSUM_XXH32_testdata[2287] */ + { 1144, 0x00000000U, 0x1423AEDFU }, /* XSUM_XXH32_testdata[2288] */ + { 1144, 0x9E3779B1U, 0x4629D110U }, /* XSUM_XXH32_testdata[2289] */ + { 1145, 0x00000000U, 0xB06A1AB2U }, /* XSUM_XXH32_testdata[2290] */ + { 1145, 0x9E3779B1U, 0x29560AD3U }, /* XSUM_XXH32_testdata[2291] */ + { 1146, 0x00000000U, 0xD3115493U }, /* XSUM_XXH32_testdata[2292] */ + { 1146, 0x9E3779B1U, 0x47214197U }, /* XSUM_XXH32_testdata[2293] */ + { 1147, 0x00000000U, 0xDA9EF2B5U }, /* XSUM_XXH32_testdata[2294] */ + { 1147, 0x9E3779B1U, 0xBB23D7ABU }, /* XSUM_XXH32_testdata[2295] */ + { 1148, 0x00000000U, 0xB8CD0CC8U }, /* XSUM_XXH32_testdata[2296] */ + { 1148, 0x9E3779B1U, 0x78D65EB7U }, /* XSUM_XXH32_testdata[2297] */ + { 1149, 0x00000000U, 0xA81E9D5DU }, /* XSUM_XXH32_testdata[2298] */ + { 1149, 0x9E3779B1U, 0x41651ADCU }, /* XSUM_XXH32_testdata[2299] */ + { 1150, 0x00000000U, 0x1C36D26CU }, /* XSUM_XXH32_testdata[2300] */ + { 1150, 0x9E3779B1U, 0x60886177U }, /* XSUM_XXH32_testdata[2301] */ + { 1151, 0x00000000U, 0x1D6A7DBAU }, /* XSUM_XXH32_testdata[2302] */ + { 1151, 0x9E3779B1U, 0xD83BE4A6U }, /* XSUM_XXH32_testdata[2303] */ + { 1152, 0x00000000U, 0x8939EF84U }, /* XSUM_XXH32_testdata[2304] */ + { 1152, 0x9E3779B1U, 0x213932A9U }, /* XSUM_XXH32_testdata[2305] */ + { 1153, 0x00000000U, 0x99A1AF03U }, /* XSUM_XXH32_testdata[2306] */ + { 1153, 0x9E3779B1U, 0x2DB68808U }, /* XSUM_XXH32_testdata[2307] */ + { 1154, 0x00000000U, 0x4AAD569FU }, /* XSUM_XXH32_testdata[2308] */ + { 1154, 0x9E3779B1U, 0x332B51DDU }, /* XSUM_XXH32_testdata[2309] */ + { 1155, 0x00000000U, 0x60F26E61U }, /* XSUM_XXH32_testdata[2310] */ + { 1155, 0x9E3779B1U, 0xDB739023U }, /* XSUM_XXH32_testdata[2311] */ + { 1156, 0x00000000U, 0x6F82F443U }, /* XSUM_XXH32_testdata[2312] */ + { 1156, 0x9E3779B1U, 0xC8431321U }, /* XSUM_XXH32_testdata[2313] */ + { 1157, 0x00000000U, 0x4E6E2FD0U }, /* XSUM_XXH32_testdata[2314] */ + { 1157, 0x9E3779B1U, 0xD60B4DA7U }, /* XSUM_XXH32_testdata[2315] */ + { 1158, 0x00000000U, 0xD205E3BFU }, /* XSUM_XXH32_testdata[2316] */ + { 1158, 0x9E3779B1U, 0xC453C261U }, /* XSUM_XXH32_testdata[2317] */ + { 1159, 0x00000000U, 0x17B4C147U }, /* XSUM_XXH32_testdata[2318] */ + { 1159, 0x9E3779B1U, 0x895E5CA0U }, /* XSUM_XXH32_testdata[2319] */ + { 1160, 0x00000000U, 0x16CF7D89U }, /* XSUM_XXH32_testdata[2320] */ + { 1160, 0x9E3779B1U, 0x3FCBE48BU }, /* XSUM_XXH32_testdata[2321] */ + { 1161, 0x00000000U, 0x6EA386C2U }, /* XSUM_XXH32_testdata[2322] */ + { 1161, 0x9E3779B1U, 0xAA9F4BC1U }, /* XSUM_XXH32_testdata[2323] */ + { 1162, 0x00000000U, 0x755960F2U }, /* XSUM_XXH32_testdata[2324] */ + { 1162, 0x9E3779B1U, 0xA5615BF2U }, /* XSUM_XXH32_testdata[2325] */ + { 1163, 0x00000000U, 0xC93F7546U }, /* XSUM_XXH32_testdata[2326] */ + { 1163, 0x9E3779B1U, 0xEE990ECEU }, /* XSUM_XXH32_testdata[2327] */ + { 1164, 0x00000000U, 0xE79AA5FAU }, /* XSUM_XXH32_testdata[2328] */ + { 1164, 0x9E3779B1U, 0xBF7C1F8CU }, /* XSUM_XXH32_testdata[2329] */ + { 1165, 0x00000000U, 0x1BF68339U }, /* XSUM_XXH32_testdata[2330] */ + { 1165, 0x9E3779B1U, 0x4F4ACACEU }, /* XSUM_XXH32_testdata[2331] */ + { 1166, 0x00000000U, 0x83069E82U }, /* XSUM_XXH32_testdata[2332] */ + { 1166, 0x9E3779B1U, 0xE0816A0FU }, /* XSUM_XXH32_testdata[2333] */ + { 1167, 0x00000000U, 0x8C7CF7E6U }, /* XSUM_XXH32_testdata[2334] */ + { 1167, 0x9E3779B1U, 0x60CD3724U }, /* XSUM_XXH32_testdata[2335] */ + { 1168, 0x00000000U, 0x37A453D3U }, /* XSUM_XXH32_testdata[2336] */ + { 1168, 0x9E3779B1U, 0xD6A5CEABU }, /* XSUM_XXH32_testdata[2337] */ + { 1169, 0x00000000U, 0xA130C800U }, /* XSUM_XXH32_testdata[2338] */ + { 1169, 0x9E3779B1U, 0xA9CDFD7BU }, /* XSUM_XXH32_testdata[2339] */ + { 1170, 0x00000000U, 0x1EA973ABU }, /* XSUM_XXH32_testdata[2340] */ + { 1170, 0x9E3779B1U, 0xCF888F1BU }, /* XSUM_XXH32_testdata[2341] */ + { 1171, 0x00000000U, 0x5202D829U }, /* XSUM_XXH32_testdata[2342] */ + { 1171, 0x9E3779B1U, 0xF36A38CAU }, /* XSUM_XXH32_testdata[2343] */ + { 1172, 0x00000000U, 0xF8F63A3DU }, /* XSUM_XXH32_testdata[2344] */ + { 1172, 0x9E3779B1U, 0xE9BA638AU }, /* XSUM_XXH32_testdata[2345] */ + { 1173, 0x00000000U, 0xD4C6B4F2U }, /* XSUM_XXH32_testdata[2346] */ + { 1173, 0x9E3779B1U, 0x479F41F6U }, /* XSUM_XXH32_testdata[2347] */ + { 1174, 0x00000000U, 0xE0DE6614U }, /* XSUM_XXH32_testdata[2348] */ + { 1174, 0x9E3779B1U, 0x43C7C3B2U }, /* XSUM_XXH32_testdata[2349] */ + { 1175, 0x00000000U, 0xD0038ACEU }, /* XSUM_XXH32_testdata[2350] */ + { 1175, 0x9E3779B1U, 0x2EA445FCU }, /* XSUM_XXH32_testdata[2351] */ + { 1176, 0x00000000U, 0x51236C50U }, /* XSUM_XXH32_testdata[2352] */ + { 1176, 0x9E3779B1U, 0x6C93A64CU }, /* XSUM_XXH32_testdata[2353] */ + { 1177, 0x00000000U, 0x77279DADU }, /* XSUM_XXH32_testdata[2354] */ + { 1177, 0x9E3779B1U, 0x2CDB5679U }, /* XSUM_XXH32_testdata[2355] */ + { 1178, 0x00000000U, 0x69730B90U }, /* XSUM_XXH32_testdata[2356] */ + { 1178, 0x9E3779B1U, 0x27787C9FU }, /* XSUM_XXH32_testdata[2357] */ + { 1179, 0x00000000U, 0x5441912EU }, /* XSUM_XXH32_testdata[2358] */ + { 1179, 0x9E3779B1U, 0x71A64E8BU }, /* XSUM_XXH32_testdata[2359] */ + { 1180, 0x00000000U, 0xEBE71841U }, /* XSUM_XXH32_testdata[2360] */ + { 1180, 0x9E3779B1U, 0x000F3EBAU }, /* XSUM_XXH32_testdata[2361] */ + { 1181, 0x00000000U, 0x7200E618U }, /* XSUM_XXH32_testdata[2362] */ + { 1181, 0x9E3779B1U, 0xE9A76CC3U }, /* XSUM_XXH32_testdata[2363] */ + { 1182, 0x00000000U, 0x7B0E020FU }, /* XSUM_XXH32_testdata[2364] */ + { 1182, 0x9E3779B1U, 0xD92D1012U }, /* XSUM_XXH32_testdata[2365] */ + { 1183, 0x00000000U, 0x4A8311BFU }, /* XSUM_XXH32_testdata[2366] */ + { 1183, 0x9E3779B1U, 0xD77133BFU }, /* XSUM_XXH32_testdata[2367] */ + { 1184, 0x00000000U, 0x3BC2EE12U }, /* XSUM_XXH32_testdata[2368] */ + { 1184, 0x9E3779B1U, 0x91A24B1DU }, /* XSUM_XXH32_testdata[2369] */ + { 1185, 0x00000000U, 0x7C1E4330U }, /* XSUM_XXH32_testdata[2370] */ + { 1185, 0x9E3779B1U, 0x3D0954DFU }, /* XSUM_XXH32_testdata[2371] */ + { 1186, 0x00000000U, 0x871B4E42U }, /* XSUM_XXH32_testdata[2372] */ + { 1186, 0x9E3779B1U, 0xA3540010U }, /* XSUM_XXH32_testdata[2373] */ + { 1187, 0x00000000U, 0x150BAECFU }, /* XSUM_XXH32_testdata[2374] */ + { 1187, 0x9E3779B1U, 0x0A9DFC4BU }, /* XSUM_XXH32_testdata[2375] */ + { 1188, 0x00000000U, 0xEB16B50BU }, /* XSUM_XXH32_testdata[2376] */ + { 1188, 0x9E3779B1U, 0xF33EA1FFU }, /* XSUM_XXH32_testdata[2377] */ + { 1189, 0x00000000U, 0x98F0B37BU }, /* XSUM_XXH32_testdata[2378] */ + { 1189, 0x9E3779B1U, 0xEF1F676FU }, /* XSUM_XXH32_testdata[2379] */ + { 1190, 0x00000000U, 0x27B6AA12U }, /* XSUM_XXH32_testdata[2380] */ + { 1190, 0x9E3779B1U, 0xFE0046B3U }, /* XSUM_XXH32_testdata[2381] */ + { 1191, 0x00000000U, 0xABC6CCFAU }, /* XSUM_XXH32_testdata[2382] */ + { 1191, 0x9E3779B1U, 0x32570C88U }, /* XSUM_XXH32_testdata[2383] */ + { 1192, 0x00000000U, 0x25887CC5U }, /* XSUM_XXH32_testdata[2384] */ + { 1192, 0x9E3779B1U, 0x9A9BFBBCU }, /* XSUM_XXH32_testdata[2385] */ + { 1193, 0x00000000U, 0x33BA8F99U }, /* XSUM_XXH32_testdata[2386] */ + { 1193, 0x9E3779B1U, 0x6A79A1D1U }, /* XSUM_XXH32_testdata[2387] */ + { 1194, 0x00000000U, 0xC544328AU }, /* XSUM_XXH32_testdata[2388] */ + { 1194, 0x9E3779B1U, 0xE0C08B6EU }, /* XSUM_XXH32_testdata[2389] */ + { 1195, 0x00000000U, 0x87AB1EE7U }, /* XSUM_XXH32_testdata[2390] */ + { 1195, 0x9E3779B1U, 0xF83CCDB5U }, /* XSUM_XXH32_testdata[2391] */ + { 1196, 0x00000000U, 0x5F78223FU }, /* XSUM_XXH32_testdata[2392] */ + { 1196, 0x9E3779B1U, 0x9E63E1DAU }, /* XSUM_XXH32_testdata[2393] */ + { 1197, 0x00000000U, 0xE60493C9U }, /* XSUM_XXH32_testdata[2394] */ + { 1197, 0x9E3779B1U, 0xD9933DC9U }, /* XSUM_XXH32_testdata[2395] */ + { 1198, 0x00000000U, 0x69D8E4F9U }, /* XSUM_XXH32_testdata[2396] */ + { 1198, 0x9E3779B1U, 0xBC11B3EDU }, /* XSUM_XXH32_testdata[2397] */ + { 1199, 0x00000000U, 0xE9F0E205U }, /* XSUM_XXH32_testdata[2398] */ + { 1199, 0x9E3779B1U, 0x7D96B61DU }, /* XSUM_XXH32_testdata[2399] */ + { 1200, 0x00000000U, 0x3837ED71U }, /* XSUM_XXH32_testdata[2400] */ + { 1200, 0x9E3779B1U, 0xB8E1DD53U }, /* XSUM_XXH32_testdata[2401] */ + { 1201, 0x00000000U, 0xFC4619C6U }, /* XSUM_XXH32_testdata[2402] */ + { 1201, 0x9E3779B1U, 0x19EF8948U }, /* XSUM_XXH32_testdata[2403] */ + { 1202, 0x00000000U, 0xB4695527U }, /* XSUM_XXH32_testdata[2404] */ + { 1202, 0x9E3779B1U, 0xDE11A2FBU }, /* XSUM_XXH32_testdata[2405] */ + { 1203, 0x00000000U, 0x7D08BED9U }, /* XSUM_XXH32_testdata[2406] */ + { 1203, 0x9E3779B1U, 0x5735FA80U }, /* XSUM_XXH32_testdata[2407] */ + { 1204, 0x00000000U, 0x88D2712BU }, /* XSUM_XXH32_testdata[2408] */ + { 1204, 0x9E3779B1U, 0xA7EDB85DU }, /* XSUM_XXH32_testdata[2409] */ + { 1205, 0x00000000U, 0x710A2AA7U }, /* XSUM_XXH32_testdata[2410] */ + { 1205, 0x9E3779B1U, 0x41B50419U }, /* XSUM_XXH32_testdata[2411] */ + { 1206, 0x00000000U, 0x356F2AC2U }, /* XSUM_XXH32_testdata[2412] */ + { 1206, 0x9E3779B1U, 0xCD13BFBCU }, /* XSUM_XXH32_testdata[2413] */ + { 1207, 0x00000000U, 0xCF6089DEU }, /* XSUM_XXH32_testdata[2414] */ + { 1207, 0x9E3779B1U, 0x64F9EEAAU }, /* XSUM_XXH32_testdata[2415] */ + { 1208, 0x00000000U, 0xE7BC737BU }, /* XSUM_XXH32_testdata[2416] */ + { 1208, 0x9E3779B1U, 0x843C0F46U }, /* XSUM_XXH32_testdata[2417] */ + { 1209, 0x00000000U, 0x77951332U }, /* XSUM_XXH32_testdata[2418] */ + { 1209, 0x9E3779B1U, 0x067CE62AU }, /* XSUM_XXH32_testdata[2419] */ + { 1210, 0x00000000U, 0xE5E13970U }, /* XSUM_XXH32_testdata[2420] */ + { 1210, 0x9E3779B1U, 0xECFCFD62U }, /* XSUM_XXH32_testdata[2421] */ + { 1211, 0x00000000U, 0xD0FC61AFU }, /* XSUM_XXH32_testdata[2422] */ + { 1211, 0x9E3779B1U, 0x700BBC98U }, /* XSUM_XXH32_testdata[2423] */ + { 1212, 0x00000000U, 0x50EFB786U }, /* XSUM_XXH32_testdata[2424] */ + { 1212, 0x9E3779B1U, 0x837A46F8U }, /* XSUM_XXH32_testdata[2425] */ + { 1213, 0x00000000U, 0x42A74DCDU }, /* XSUM_XXH32_testdata[2426] */ + { 1213, 0x9E3779B1U, 0x5B3253E2U }, /* XSUM_XXH32_testdata[2427] */ + { 1214, 0x00000000U, 0x8A993EB7U }, /* XSUM_XXH32_testdata[2428] */ + { 1214, 0x9E3779B1U, 0x52B27341U }, /* XSUM_XXH32_testdata[2429] */ + { 1215, 0x00000000U, 0x1AFEB769U }, /* XSUM_XXH32_testdata[2430] */ + { 1215, 0x9E3779B1U, 0x8EE2261FU }, /* XSUM_XXH32_testdata[2431] */ + { 1216, 0x00000000U, 0x32378261U }, /* XSUM_XXH32_testdata[2432] */ + { 1216, 0x9E3779B1U, 0x83790135U }, /* XSUM_XXH32_testdata[2433] */ + { 1217, 0x00000000U, 0xFF983CBBU }, /* XSUM_XXH32_testdata[2434] */ + { 1217, 0x9E3779B1U, 0x4DD6F776U }, /* XSUM_XXH32_testdata[2435] */ + { 1218, 0x00000000U, 0x7A16A07EU }, /* XSUM_XXH32_testdata[2436] */ + { 1218, 0x9E3779B1U, 0xF0B4B626U }, /* XSUM_XXH32_testdata[2437] */ + { 1219, 0x00000000U, 0xE8FB831BU }, /* XSUM_XXH32_testdata[2438] */ + { 1219, 0x9E3779B1U, 0x2B56D3E6U }, /* XSUM_XXH32_testdata[2439] */ + { 1220, 0x00000000U, 0x76B95829U }, /* XSUM_XXH32_testdata[2440] */ + { 1220, 0x9E3779B1U, 0x74BCFD94U }, /* XSUM_XXH32_testdata[2441] */ + { 1221, 0x00000000U, 0x8B37590EU }, /* XSUM_XXH32_testdata[2442] */ + { 1221, 0x9E3779B1U, 0x97291E81U }, /* XSUM_XXH32_testdata[2443] */ + { 1222, 0x00000000U, 0x6262F879U }, /* XSUM_XXH32_testdata[2444] */ + { 1222, 0x9E3779B1U, 0xB9E152C9U }, /* XSUM_XXH32_testdata[2445] */ + { 1223, 0x00000000U, 0x5BEB836AU }, /* XSUM_XXH32_testdata[2446] */ + { 1223, 0x9E3779B1U, 0xBA412E6AU }, /* XSUM_XXH32_testdata[2447] */ + { 1224, 0x00000000U, 0xB0D158EEU }, /* XSUM_XXH32_testdata[2448] */ + { 1224, 0x9E3779B1U, 0xC7AD3C4EU }, /* XSUM_XXH32_testdata[2449] */ + { 1225, 0x00000000U, 0x0BC682CFU }, /* XSUM_XXH32_testdata[2450] */ + { 1225, 0x9E3779B1U, 0x43AB19D1U }, /* XSUM_XXH32_testdata[2451] */ + { 1226, 0x00000000U, 0x89B07639U }, /* XSUM_XXH32_testdata[2452] */ + { 1226, 0x9E3779B1U, 0xE60EC963U }, /* XSUM_XXH32_testdata[2453] */ + { 1227, 0x00000000U, 0x8650C70AU }, /* XSUM_XXH32_testdata[2454] */ + { 1227, 0x9E3779B1U, 0xB02C48C6U }, /* XSUM_XXH32_testdata[2455] */ + { 1228, 0x00000000U, 0x2509FFFEU }, /* XSUM_XXH32_testdata[2456] */ + { 1228, 0x9E3779B1U, 0xC1897133U }, /* XSUM_XXH32_testdata[2457] */ + { 1229, 0x00000000U, 0x380B923CU }, /* XSUM_XXH32_testdata[2458] */ + { 1229, 0x9E3779B1U, 0xF444AB6CU }, /* XSUM_XXH32_testdata[2459] */ + { 1230, 0x00000000U, 0xE1A7E33EU }, /* XSUM_XXH32_testdata[2460] */ + { 1230, 0x9E3779B1U, 0xC0576797U }, /* XSUM_XXH32_testdata[2461] */ + { 1231, 0x00000000U, 0x576DA834U }, /* XSUM_XXH32_testdata[2462] */ + { 1231, 0x9E3779B1U, 0x06787E9BU }, /* XSUM_XXH32_testdata[2463] */ + { 1232, 0x00000000U, 0x34370BCDU }, /* XSUM_XXH32_testdata[2464] */ + { 1232, 0x9E3779B1U, 0x5FB3307DU }, /* XSUM_XXH32_testdata[2465] */ + { 1233, 0x00000000U, 0x5890D760U }, /* XSUM_XXH32_testdata[2466] */ + { 1233, 0x9E3779B1U, 0xF7C1AF2FU }, /* XSUM_XXH32_testdata[2467] */ + { 1234, 0x00000000U, 0x73E0A073U }, /* XSUM_XXH32_testdata[2468] */ + { 1234, 0x9E3779B1U, 0x2BD51E0EU }, /* XSUM_XXH32_testdata[2469] */ + { 1235, 0x00000000U, 0xFA5A819CU }, /* XSUM_XXH32_testdata[2470] */ + { 1235, 0x9E3779B1U, 0xFE0A936FU }, /* XSUM_XXH32_testdata[2471] */ + { 1236, 0x00000000U, 0x66E90262U }, /* XSUM_XXH32_testdata[2472] */ + { 1236, 0x9E3779B1U, 0xB22E5BB5U }, /* XSUM_XXH32_testdata[2473] */ + { 1237, 0x00000000U, 0xA4F94E8AU }, /* XSUM_XXH32_testdata[2474] */ + { 1237, 0x9E3779B1U, 0xAC47F02CU }, /* XSUM_XXH32_testdata[2475] */ + { 1238, 0x00000000U, 0x70E2CCF2U }, /* XSUM_XXH32_testdata[2476] */ + { 1238, 0x9E3779B1U, 0xE66DA26CU }, /* XSUM_XXH32_testdata[2477] */ + { 1239, 0x00000000U, 0x1C5AC9ADU }, /* XSUM_XXH32_testdata[2478] */ + { 1239, 0x9E3779B1U, 0x1CB4A6ACU }, /* XSUM_XXH32_testdata[2479] */ + { 1240, 0x00000000U, 0x388F8391U }, /* XSUM_XXH32_testdata[2480] */ + { 1240, 0x9E3779B1U, 0x91060E92U }, /* XSUM_XXH32_testdata[2481] */ + { 1241, 0x00000000U, 0x23FFA3FEU }, /* XSUM_XXH32_testdata[2482] */ + { 1241, 0x9E3779B1U, 0x3A416412U }, /* XSUM_XXH32_testdata[2483] */ + { 1242, 0x00000000U, 0x251FFE0AU }, /* XSUM_XXH32_testdata[2484] */ + { 1242, 0x9E3779B1U, 0x2E9FA9BEU }, /* XSUM_XXH32_testdata[2485] */ + { 1243, 0x00000000U, 0x74585D9CU }, /* XSUM_XXH32_testdata[2486] */ + { 1243, 0x9E3779B1U, 0xCD1B299AU }, /* XSUM_XXH32_testdata[2487] */ + { 1244, 0x00000000U, 0x67E4FD06U }, /* XSUM_XXH32_testdata[2488] */ + { 1244, 0x9E3779B1U, 0x13E07EDDU }, /* XSUM_XXH32_testdata[2489] */ + { 1245, 0x00000000U, 0x629BF7D8U }, /* XSUM_XXH32_testdata[2490] */ + { 1245, 0x9E3779B1U, 0xCD7B95CFU }, /* XSUM_XXH32_testdata[2491] */ + { 1246, 0x00000000U, 0xE19E25CAU }, /* XSUM_XXH32_testdata[2492] */ + { 1246, 0x9E3779B1U, 0x7BED7559U }, /* XSUM_XXH32_testdata[2493] */ + { 1247, 0x00000000U, 0x28770A98U }, /* XSUM_XXH32_testdata[2494] */ + { 1247, 0x9E3779B1U, 0xF8C689C3U }, /* XSUM_XXH32_testdata[2495] */ + { 1248, 0x00000000U, 0x53636FA6U }, /* XSUM_XXH32_testdata[2496] */ + { 1248, 0x9E3779B1U, 0xBCD974FEU }, /* XSUM_XXH32_testdata[2497] */ + { 1249, 0x00000000U, 0x995EE694U }, /* XSUM_XXH32_testdata[2498] */ + { 1249, 0x9E3779B1U, 0xDE6D2059U }, /* XSUM_XXH32_testdata[2499] */ + { 1250, 0x00000000U, 0x5727421AU }, /* XSUM_XXH32_testdata[2500] */ + { 1250, 0x9E3779B1U, 0x99F8CA7CU }, /* XSUM_XXH32_testdata[2501] */ + { 1251, 0x00000000U, 0x8E9171A5U }, /* XSUM_XXH32_testdata[2502] */ + { 1251, 0x9E3779B1U, 0xFD502552U }, /* XSUM_XXH32_testdata[2503] */ + { 1252, 0x00000000U, 0x17B3A980U }, /* XSUM_XXH32_testdata[2504] */ + { 1252, 0x9E3779B1U, 0x574E9EF9U }, /* XSUM_XXH32_testdata[2505] */ + { 1253, 0x00000000U, 0xEC51217CU }, /* XSUM_XXH32_testdata[2506] */ + { 1253, 0x9E3779B1U, 0x8DC0D26FU }, /* XSUM_XXH32_testdata[2507] */ + { 1254, 0x00000000U, 0x411271CFU }, /* XSUM_XXH32_testdata[2508] */ + { 1254, 0x9E3779B1U, 0xE25435A0U }, /* XSUM_XXH32_testdata[2509] */ + { 1255, 0x00000000U, 0x664FB4F9U }, /* XSUM_XXH32_testdata[2510] */ + { 1255, 0x9E3779B1U, 0xF91B6733U }, /* XSUM_XXH32_testdata[2511] */ + { 1256, 0x00000000U, 0x1FD58D25U }, /* XSUM_XXH32_testdata[2512] */ + { 1256, 0x9E3779B1U, 0x073F8259U }, /* XSUM_XXH32_testdata[2513] */ + { 1257, 0x00000000U, 0x5CF6EC0DU }, /* XSUM_XXH32_testdata[2514] */ + { 1257, 0x9E3779B1U, 0xDE1860E3U }, /* XSUM_XXH32_testdata[2515] */ + { 1258, 0x00000000U, 0xAB8872F8U }, /* XSUM_XXH32_testdata[2516] */ + { 1258, 0x9E3779B1U, 0x840A1DABU }, /* XSUM_XXH32_testdata[2517] */ + { 1259, 0x00000000U, 0xF543FDE0U }, /* XSUM_XXH32_testdata[2518] */ + { 1259, 0x9E3779B1U, 0xC2C19E71U }, /* XSUM_XXH32_testdata[2519] */ + { 1260, 0x00000000U, 0x2487744CU }, /* XSUM_XXH32_testdata[2520] */ + { 1260, 0x9E3779B1U, 0x133A67A2U }, /* XSUM_XXH32_testdata[2521] */ + { 1261, 0x00000000U, 0x9B8EF115U }, /* XSUM_XXH32_testdata[2522] */ + { 1261, 0x9E3779B1U, 0xF0469C7AU }, /* XSUM_XXH32_testdata[2523] */ + { 1262, 0x00000000U, 0x15970213U }, /* XSUM_XXH32_testdata[2524] */ + { 1262, 0x9E3779B1U, 0x42B663DDU }, /* XSUM_XXH32_testdata[2525] */ + { 1263, 0x00000000U, 0xA0953660U }, /* XSUM_XXH32_testdata[2526] */ + { 1263, 0x9E3779B1U, 0x964B8A94U }, /* XSUM_XXH32_testdata[2527] */ + { 1264, 0x00000000U, 0x8E07AE6FU }, /* XSUM_XXH32_testdata[2528] */ + { 1264, 0x9E3779B1U, 0x1DA26D93U }, /* XSUM_XXH32_testdata[2529] */ + { 1265, 0x00000000U, 0xF993B00BU }, /* XSUM_XXH32_testdata[2530] */ + { 1265, 0x9E3779B1U, 0xD3F2FA99U }, /* XSUM_XXH32_testdata[2531] */ + { 1266, 0x00000000U, 0xD0131D4AU }, /* XSUM_XXH32_testdata[2532] */ + { 1266, 0x9E3779B1U, 0x90B272F9U }, /* XSUM_XXH32_testdata[2533] */ + { 1267, 0x00000000U, 0xF1DF1C1EU }, /* XSUM_XXH32_testdata[2534] */ + { 1267, 0x9E3779B1U, 0x70C5631FU }, /* XSUM_XXH32_testdata[2535] */ + { 1268, 0x00000000U, 0xECCBEC12U }, /* XSUM_XXH32_testdata[2536] */ + { 1268, 0x9E3779B1U, 0x2C27652BU }, /* XSUM_XXH32_testdata[2537] */ + { 1269, 0x00000000U, 0xA8ABBE10U }, /* XSUM_XXH32_testdata[2538] */ + { 1269, 0x9E3779B1U, 0xE38FEE6CU }, /* XSUM_XXH32_testdata[2539] */ + { 1270, 0x00000000U, 0x9DD606C0U }, /* XSUM_XXH32_testdata[2540] */ + { 1270, 0x9E3779B1U, 0xC2BF63EEU }, /* XSUM_XXH32_testdata[2541] */ + { 1271, 0x00000000U, 0x01F80B9CU }, /* XSUM_XXH32_testdata[2542] */ + { 1271, 0x9E3779B1U, 0x89FCD27FU }, /* XSUM_XXH32_testdata[2543] */ + { 1272, 0x00000000U, 0x89E9AFC7U }, /* XSUM_XXH32_testdata[2544] */ + { 1272, 0x9E3779B1U, 0x05639959U }, /* XSUM_XXH32_testdata[2545] */ + { 1273, 0x00000000U, 0x4752B0C3U }, /* XSUM_XXH32_testdata[2546] */ + { 1273, 0x9E3779B1U, 0x9E90A542U }, /* XSUM_XXH32_testdata[2547] */ + { 1274, 0x00000000U, 0xEF38B0D4U }, /* XSUM_XXH32_testdata[2548] */ + { 1274, 0x9E3779B1U, 0x16B994DCU }, /* XSUM_XXH32_testdata[2549] */ + { 1275, 0x00000000U, 0x46195024U }, /* XSUM_XXH32_testdata[2550] */ + { 1275, 0x9E3779B1U, 0x51A1C37DU }, /* XSUM_XXH32_testdata[2551] */ + { 1276, 0x00000000U, 0x0EE0441EU }, /* XSUM_XXH32_testdata[2552] */ + { 1276, 0x9E3779B1U, 0xB834298EU }, /* XSUM_XXH32_testdata[2553] */ + { 1277, 0x00000000U, 0x8643799EU }, /* XSUM_XXH32_testdata[2554] */ + { 1277, 0x9E3779B1U, 0x7EB6266EU }, /* XSUM_XXH32_testdata[2555] */ + { 1278, 0x00000000U, 0x1466B4A6U }, /* XSUM_XXH32_testdata[2556] */ + { 1278, 0x9E3779B1U, 0xCB60768BU }, /* XSUM_XXH32_testdata[2557] */ + { 1279, 0x00000000U, 0xEEC1E880U }, /* XSUM_XXH32_testdata[2558] */ + { 1279, 0x9E3779B1U, 0x3AC5CDF6U }, /* XSUM_XXH32_testdata[2559] */ + { 1280, 0x00000000U, 0x3A7D59BFU }, /* XSUM_XXH32_testdata[2560] */ + { 1280, 0x9E3779B1U, 0xA349EC49U }, /* XSUM_XXH32_testdata[2561] */ + { 1281, 0x00000000U, 0x7D71B06CU }, /* XSUM_XXH32_testdata[2562] */ + { 1281, 0x9E3779B1U, 0xFA3E3998U }, /* XSUM_XXH32_testdata[2563] */ + { 1282, 0x00000000U, 0x158406DEU }, /* XSUM_XXH32_testdata[2564] */ + { 1282, 0x9E3779B1U, 0x2F7381BFU }, /* XSUM_XXH32_testdata[2565] */ + { 1283, 0x00000000U, 0x9272967AU }, /* XSUM_XXH32_testdata[2566] */ + { 1283, 0x9E3779B1U, 0x378C6054U }, /* XSUM_XXH32_testdata[2567] */ + { 1284, 0x00000000U, 0x43A43229U }, /* XSUM_XXH32_testdata[2568] */ + { 1284, 0x9E3779B1U, 0x367A390DU }, /* XSUM_XXH32_testdata[2569] */ + { 1285, 0x00000000U, 0xDD831C1FU }, /* XSUM_XXH32_testdata[2570] */ + { 1285, 0x9E3779B1U, 0x96724406U }, /* XSUM_XXH32_testdata[2571] */ + { 1286, 0x00000000U, 0xBBB772E8U }, /* XSUM_XXH32_testdata[2572] */ + { 1286, 0x9E3779B1U, 0x8DFB225DU }, /* XSUM_XXH32_testdata[2573] */ + { 1287, 0x00000000U, 0x16EBE500U }, /* XSUM_XXH32_testdata[2574] */ + { 1287, 0x9E3779B1U, 0x13C81E0DU }, /* XSUM_XXH32_testdata[2575] */ + { 1288, 0x00000000U, 0x1AE5A4DFU }, /* XSUM_XXH32_testdata[2576] */ + { 1288, 0x9E3779B1U, 0x5E53D10FU }, /* XSUM_XXH32_testdata[2577] */ + { 1289, 0x00000000U, 0x248A8AB2U }, /* XSUM_XXH32_testdata[2578] */ + { 1289, 0x9E3779B1U, 0x3844206AU }, /* XSUM_XXH32_testdata[2579] */ + { 1290, 0x00000000U, 0x1E9E2CE5U }, /* XSUM_XXH32_testdata[2580] */ + { 1290, 0x9E3779B1U, 0x6AD98606U }, /* XSUM_XXH32_testdata[2581] */ + { 1291, 0x00000000U, 0x9ADEF56BU }, /* XSUM_XXH32_testdata[2582] */ + { 1291, 0x9E3779B1U, 0xC41BD1F1U }, /* XSUM_XXH32_testdata[2583] */ + { 1292, 0x00000000U, 0xFCA4A1D6U }, /* XSUM_XXH32_testdata[2584] */ + { 1292, 0x9E3779B1U, 0x46429A63U }, /* XSUM_XXH32_testdata[2585] */ + { 1293, 0x00000000U, 0xBCBEF56CU }, /* XSUM_XXH32_testdata[2586] */ + { 1293, 0x9E3779B1U, 0xF25C8609U }, /* XSUM_XXH32_testdata[2587] */ + { 1294, 0x00000000U, 0xCB5593A6U }, /* XSUM_XXH32_testdata[2588] */ + { 1294, 0x9E3779B1U, 0x576BBFBBU }, /* XSUM_XXH32_testdata[2589] */ + { 1295, 0x00000000U, 0xB8CFFF93U }, /* XSUM_XXH32_testdata[2590] */ + { 1295, 0x9E3779B1U, 0x6DAA5212U }, /* XSUM_XXH32_testdata[2591] */ + { 1296, 0x00000000U, 0x40E4F5EBU }, /* XSUM_XXH32_testdata[2592] */ + { 1296, 0x9E3779B1U, 0xA937F09CU }, /* XSUM_XXH32_testdata[2593] */ + { 1297, 0x00000000U, 0xC253CF4FU }, /* XSUM_XXH32_testdata[2594] */ + { 1297, 0x9E3779B1U, 0xB11282D0U }, /* XSUM_XXH32_testdata[2595] */ + { 1298, 0x00000000U, 0x2A6C6F76U }, /* XSUM_XXH32_testdata[2596] */ + { 1298, 0x9E3779B1U, 0x6B668879U }, /* XSUM_XXH32_testdata[2597] */ + { 1299, 0x00000000U, 0x468FA26BU }, /* XSUM_XXH32_testdata[2598] */ + { 1299, 0x9E3779B1U, 0xF7E41D7CU }, /* XSUM_XXH32_testdata[2599] */ + { 1300, 0x00000000U, 0x209C6B5DU }, /* XSUM_XXH32_testdata[2600] */ + { 1300, 0x9E3779B1U, 0xF5B5CF78U }, /* XSUM_XXH32_testdata[2601] */ + { 1301, 0x00000000U, 0x3A693473U }, /* XSUM_XXH32_testdata[2602] */ + { 1301, 0x9E3779B1U, 0x80B60DE5U }, /* XSUM_XXH32_testdata[2603] */ + { 1302, 0x00000000U, 0x7F9E9BA5U }, /* XSUM_XXH32_testdata[2604] */ + { 1302, 0x9E3779B1U, 0xC6C7CB6EU }, /* XSUM_XXH32_testdata[2605] */ + { 1303, 0x00000000U, 0xEE7AC24AU }, /* XSUM_XXH32_testdata[2606] */ + { 1303, 0x9E3779B1U, 0xF9FF514AU }, /* XSUM_XXH32_testdata[2607] */ + { 1304, 0x00000000U, 0x4818F809U }, /* XSUM_XXH32_testdata[2608] */ + { 1304, 0x9E3779B1U, 0xD2E62D34U }, /* XSUM_XXH32_testdata[2609] */ + { 1305, 0x00000000U, 0xCBE8890FU }, /* XSUM_XXH32_testdata[2610] */ + { 1305, 0x9E3779B1U, 0x63674791U }, /* XSUM_XXH32_testdata[2611] */ + { 1306, 0x00000000U, 0x8E7AA579U }, /* XSUM_XXH32_testdata[2612] */ + { 1306, 0x9E3779B1U, 0x3E3749A5U }, /* XSUM_XXH32_testdata[2613] */ + { 1307, 0x00000000U, 0x93822890U }, /* XSUM_XXH32_testdata[2614] */ + { 1307, 0x9E3779B1U, 0x2B2ADA9FU }, /* XSUM_XXH32_testdata[2615] */ + { 1308, 0x00000000U, 0xF56F9743U }, /* XSUM_XXH32_testdata[2616] */ + { 1308, 0x9E3779B1U, 0x64B58491U }, /* XSUM_XXH32_testdata[2617] */ + { 1309, 0x00000000U, 0x20682B4AU }, /* XSUM_XXH32_testdata[2618] */ + { 1309, 0x9E3779B1U, 0x7ED542FCU }, /* XSUM_XXH32_testdata[2619] */ + { 1310, 0x00000000U, 0x94D0BA6AU }, /* XSUM_XXH32_testdata[2620] */ + { 1310, 0x9E3779B1U, 0xCC1D2EEAU }, /* XSUM_XXH32_testdata[2621] */ + { 1311, 0x00000000U, 0x659608A6U }, /* XSUM_XXH32_testdata[2622] */ + { 1311, 0x9E3779B1U, 0x3B166B06U }, /* XSUM_XXH32_testdata[2623] */ + { 1312, 0x00000000U, 0x332A8EE0U }, /* XSUM_XXH32_testdata[2624] */ + { 1312, 0x9E3779B1U, 0xCCB40380U }, /* XSUM_XXH32_testdata[2625] */ + { 1313, 0x00000000U, 0xEC5A7C00U }, /* XSUM_XXH32_testdata[2626] */ + { 1313, 0x9E3779B1U, 0xBFBD7EB8U }, /* XSUM_XXH32_testdata[2627] */ + { 1314, 0x00000000U, 0x876FAAA0U }, /* XSUM_XXH32_testdata[2628] */ + { 1314, 0x9E3779B1U, 0x2BD64B48U }, /* XSUM_XXH32_testdata[2629] */ + { 1315, 0x00000000U, 0xF880F710U }, /* XSUM_XXH32_testdata[2630] */ + { 1315, 0x9E3779B1U, 0x0BACA9EDU }, /* XSUM_XXH32_testdata[2631] */ + { 1316, 0x00000000U, 0x71711259U }, /* XSUM_XXH32_testdata[2632] */ + { 1316, 0x9E3779B1U, 0xF25110A5U }, /* XSUM_XXH32_testdata[2633] */ + { 1317, 0x00000000U, 0x2812251BU }, /* XSUM_XXH32_testdata[2634] */ + { 1317, 0x9E3779B1U, 0x5A42BB9FU }, /* XSUM_XXH32_testdata[2635] */ + { 1318, 0x00000000U, 0xBF018379U }, /* XSUM_XXH32_testdata[2636] */ + { 1318, 0x9E3779B1U, 0x40CA971CU }, /* XSUM_XXH32_testdata[2637] */ + { 1319, 0x00000000U, 0x090A3E78U }, /* XSUM_XXH32_testdata[2638] */ + { 1319, 0x9E3779B1U, 0xD1AE8554U }, /* XSUM_XXH32_testdata[2639] */ + { 1320, 0x00000000U, 0xC4ECE7E5U }, /* XSUM_XXH32_testdata[2640] */ + { 1320, 0x9E3779B1U, 0x030264F7U }, /* XSUM_XXH32_testdata[2641] */ + { 1321, 0x00000000U, 0x2B6CCAF7U }, /* XSUM_XXH32_testdata[2642] */ + { 1321, 0x9E3779B1U, 0x52292B0FU }, /* XSUM_XXH32_testdata[2643] */ + { 1322, 0x00000000U, 0x7E716BBEU }, /* XSUM_XXH32_testdata[2644] */ + { 1322, 0x9E3779B1U, 0x41EAB24FU }, /* XSUM_XXH32_testdata[2645] */ + { 1323, 0x00000000U, 0xAF8250C9U }, /* XSUM_XXH32_testdata[2646] */ + { 1323, 0x9E3779B1U, 0x351086A2U }, /* XSUM_XXH32_testdata[2647] */ + { 1324, 0x00000000U, 0x17690F50U }, /* XSUM_XXH32_testdata[2648] */ + { 1324, 0x9E3779B1U, 0x1B44CC23U }, /* XSUM_XXH32_testdata[2649] */ + { 1325, 0x00000000U, 0xC02F41B3U }, /* XSUM_XXH32_testdata[2650] */ + { 1325, 0x9E3779B1U, 0xAB5BC75DU }, /* XSUM_XXH32_testdata[2651] */ + { 1326, 0x00000000U, 0xF6B26054U }, /* XSUM_XXH32_testdata[2652] */ + { 1326, 0x9E3779B1U, 0x3A50A9BBU }, /* XSUM_XXH32_testdata[2653] */ + { 1327, 0x00000000U, 0x1A98D09BU }, /* XSUM_XXH32_testdata[2654] */ + { 1327, 0x9E3779B1U, 0xF732461FU }, /* XSUM_XXH32_testdata[2655] */ + { 1328, 0x00000000U, 0xB39B192CU }, /* XSUM_XXH32_testdata[2656] */ + { 1328, 0x9E3779B1U, 0x6151A4F5U }, /* XSUM_XXH32_testdata[2657] */ + { 1329, 0x00000000U, 0x8C40F824U }, /* XSUM_XXH32_testdata[2658] */ + { 1329, 0x9E3779B1U, 0x99555511U }, /* XSUM_XXH32_testdata[2659] */ + { 1330, 0x00000000U, 0x13879480U }, /* XSUM_XXH32_testdata[2660] */ + { 1330, 0x9E3779B1U, 0x939B3510U }, /* XSUM_XXH32_testdata[2661] */ + { 1331, 0x00000000U, 0xD703BB14U }, /* XSUM_XXH32_testdata[2662] */ + { 1331, 0x9E3779B1U, 0xD116A1F9U }, /* XSUM_XXH32_testdata[2663] */ + { 1332, 0x00000000U, 0x87F1C5D9U }, /* XSUM_XXH32_testdata[2664] */ + { 1332, 0x9E3779B1U, 0x14597EF7U }, /* XSUM_XXH32_testdata[2665] */ + { 1333, 0x00000000U, 0x69B31BACU }, /* XSUM_XXH32_testdata[2666] */ + { 1333, 0x9E3779B1U, 0x2CE8FA3AU }, /* XSUM_XXH32_testdata[2667] */ + { 1334, 0x00000000U, 0x37A6A8C4U }, /* XSUM_XXH32_testdata[2668] */ + { 1334, 0x9E3779B1U, 0x3779624AU }, /* XSUM_XXH32_testdata[2669] */ + { 1335, 0x00000000U, 0x941F386DU }, /* XSUM_XXH32_testdata[2670] */ + { 1335, 0x9E3779B1U, 0x1B70E156U }, /* XSUM_XXH32_testdata[2671] */ + { 1336, 0x00000000U, 0x1586CEFAU }, /* XSUM_XXH32_testdata[2672] */ + { 1336, 0x9E3779B1U, 0x84A84E53U }, /* XSUM_XXH32_testdata[2673] */ + { 1337, 0x00000000U, 0xF488CFDCU }, /* XSUM_XXH32_testdata[2674] */ + { 1337, 0x9E3779B1U, 0xEA961D61U }, /* XSUM_XXH32_testdata[2675] */ + { 1338, 0x00000000U, 0xF7828592U }, /* XSUM_XXH32_testdata[2676] */ + { 1338, 0x9E3779B1U, 0x73B68612U }, /* XSUM_XXH32_testdata[2677] */ + { 1339, 0x00000000U, 0xC60B6CACU }, /* XSUM_XXH32_testdata[2678] */ + { 1339, 0x9E3779B1U, 0x4144EA47U }, /* XSUM_XXH32_testdata[2679] */ + { 1340, 0x00000000U, 0x23D2167FU }, /* XSUM_XXH32_testdata[2680] */ + { 1340, 0x9E3779B1U, 0x7CE2B4B1U }, /* XSUM_XXH32_testdata[2681] */ + { 1341, 0x00000000U, 0x77C5C3BAU }, /* XSUM_XXH32_testdata[2682] */ + { 1341, 0x9E3779B1U, 0x26CAA0AAU }, /* XSUM_XXH32_testdata[2683] */ + { 1342, 0x00000000U, 0x9BB7390FU }, /* XSUM_XXH32_testdata[2684] */ + { 1342, 0x9E3779B1U, 0xD220E867U }, /* XSUM_XXH32_testdata[2685] */ + { 1343, 0x00000000U, 0x9AA3006FU }, /* XSUM_XXH32_testdata[2686] */ + { 1343, 0x9E3779B1U, 0x2EFE362BU }, /* XSUM_XXH32_testdata[2687] */ + { 1344, 0x00000000U, 0x7C3973CCU }, /* XSUM_XXH32_testdata[2688] */ + { 1344, 0x9E3779B1U, 0xBE444DC4U }, /* XSUM_XXH32_testdata[2689] */ + { 1345, 0x00000000U, 0x67FDA757U }, /* XSUM_XXH32_testdata[2690] */ + { 1345, 0x9E3779B1U, 0xE609D277U }, /* XSUM_XXH32_testdata[2691] */ + { 1346, 0x00000000U, 0x61965DEDU }, /* XSUM_XXH32_testdata[2692] */ + { 1346, 0x9E3779B1U, 0x793F34BBU }, /* XSUM_XXH32_testdata[2693] */ + { 1347, 0x00000000U, 0xB4861186U }, /* XSUM_XXH32_testdata[2694] */ + { 1347, 0x9E3779B1U, 0xF54A959EU }, /* XSUM_XXH32_testdata[2695] */ + { 1348, 0x00000000U, 0x4F4E0553U }, /* XSUM_XXH32_testdata[2696] */ + { 1348, 0x9E3779B1U, 0xE29AA5F5U }, /* XSUM_XXH32_testdata[2697] */ + { 1349, 0x00000000U, 0xCD296EA3U }, /* XSUM_XXH32_testdata[2698] */ + { 1349, 0x9E3779B1U, 0xAADE20F2U }, /* XSUM_XXH32_testdata[2699] */ + { 1350, 0x00000000U, 0x53C5FBFCU }, /* XSUM_XXH32_testdata[2700] */ + { 1350, 0x9E3779B1U, 0xFCB744F0U }, /* XSUM_XXH32_testdata[2701] */ + { 1351, 0x00000000U, 0xF24020ECU }, /* XSUM_XXH32_testdata[2702] */ + { 1351, 0x9E3779B1U, 0xD13DDB18U }, /* XSUM_XXH32_testdata[2703] */ + { 1352, 0x00000000U, 0xC95FAC0DU }, /* XSUM_XXH32_testdata[2704] */ + { 1352, 0x9E3779B1U, 0x4F93839EU }, /* XSUM_XXH32_testdata[2705] */ + { 1353, 0x00000000U, 0xEA326090U }, /* XSUM_XXH32_testdata[2706] */ + { 1353, 0x9E3779B1U, 0x0622F5D2U }, /* XSUM_XXH32_testdata[2707] */ + { 1354, 0x00000000U, 0x86E4DDA8U }, /* XSUM_XXH32_testdata[2708] */ + { 1354, 0x9E3779B1U, 0xB6DF4E6BU }, /* XSUM_XXH32_testdata[2709] */ + { 1355, 0x00000000U, 0xB87A0703U }, /* XSUM_XXH32_testdata[2710] */ + { 1355, 0x9E3779B1U, 0xD5C87EB7U }, /* XSUM_XXH32_testdata[2711] */ + { 1356, 0x00000000U, 0x1C342F7FU }, /* XSUM_XXH32_testdata[2712] */ + { 1356, 0x9E3779B1U, 0x23736B55U }, /* XSUM_XXH32_testdata[2713] */ + { 1357, 0x00000000U, 0x0E011104U }, /* XSUM_XXH32_testdata[2714] */ + { 1357, 0x9E3779B1U, 0xDE0F61ACU }, /* XSUM_XXH32_testdata[2715] */ + { 1358, 0x00000000U, 0x0976CE50U }, /* XSUM_XXH32_testdata[2716] */ + { 1358, 0x9E3779B1U, 0xF51DA101U }, /* XSUM_XXH32_testdata[2717] */ + { 1359, 0x00000000U, 0x72B42BB6U }, /* XSUM_XXH32_testdata[2718] */ + { 1359, 0x9E3779B1U, 0x7074D178U }, /* XSUM_XXH32_testdata[2719] */ + { 1360, 0x00000000U, 0xA5166671U }, /* XSUM_XXH32_testdata[2720] */ + { 1360, 0x9E3779B1U, 0xD522E653U }, /* XSUM_XXH32_testdata[2721] */ + { 1361, 0x00000000U, 0x43A03D77U }, /* XSUM_XXH32_testdata[2722] */ + { 1361, 0x9E3779B1U, 0x82F19731U }, /* XSUM_XXH32_testdata[2723] */ + { 1362, 0x00000000U, 0x01760E55U }, /* XSUM_XXH32_testdata[2724] */ + { 1362, 0x9E3779B1U, 0x2452BAD7U }, /* XSUM_XXH32_testdata[2725] */ + { 1363, 0x00000000U, 0x813B822CU }, /* XSUM_XXH32_testdata[2726] */ + { 1363, 0x9E3779B1U, 0x678CC0ECU }, /* XSUM_XXH32_testdata[2727] */ + { 1364, 0x00000000U, 0x6E2EAA8CU }, /* XSUM_XXH32_testdata[2728] */ + { 1364, 0x9E3779B1U, 0xCCADC6DCU }, /* XSUM_XXH32_testdata[2729] */ + { 1365, 0x00000000U, 0xFD1C6D1BU }, /* XSUM_XXH32_testdata[2730] */ + { 1365, 0x9E3779B1U, 0x0417DFBBU }, /* XSUM_XXH32_testdata[2731] */ + { 1366, 0x00000000U, 0x03A77FA3U }, /* XSUM_XXH32_testdata[2732] */ + { 1366, 0x9E3779B1U, 0xBB44CC3EU }, /* XSUM_XXH32_testdata[2733] */ + { 1367, 0x00000000U, 0x691B3F30U }, /* XSUM_XXH32_testdata[2734] */ + { 1367, 0x9E3779B1U, 0xEEAB3786U }, /* XSUM_XXH32_testdata[2735] */ + { 1368, 0x00000000U, 0x5EF7B99BU }, /* XSUM_XXH32_testdata[2736] */ + { 1368, 0x9E3779B1U, 0xF846521AU }, /* XSUM_XXH32_testdata[2737] */ + { 1369, 0x00000000U, 0x41F32CE8U }, /* XSUM_XXH32_testdata[2738] */ + { 1369, 0x9E3779B1U, 0x1378FC71U }, /* XSUM_XXH32_testdata[2739] */ + { 1370, 0x00000000U, 0xCF2A06E8U }, /* XSUM_XXH32_testdata[2740] */ + { 1370, 0x9E3779B1U, 0x1D8D45DEU }, /* XSUM_XXH32_testdata[2741] */ + { 1371, 0x00000000U, 0x29EAE45CU }, /* XSUM_XXH32_testdata[2742] */ + { 1371, 0x9E3779B1U, 0x7318BB02U }, /* XSUM_XXH32_testdata[2743] */ + { 1372, 0x00000000U, 0xE39F1B94U }, /* XSUM_XXH32_testdata[2744] */ + { 1372, 0x9E3779B1U, 0x76BE5B11U }, /* XSUM_XXH32_testdata[2745] */ + { 1373, 0x00000000U, 0x9A1A4D06U }, /* XSUM_XXH32_testdata[2746] */ + { 1373, 0x9E3779B1U, 0x4598B26EU }, /* XSUM_XXH32_testdata[2747] */ + { 1374, 0x00000000U, 0x688A7E3CU }, /* XSUM_XXH32_testdata[2748] */ + { 1374, 0x9E3779B1U, 0x27616B17U }, /* XSUM_XXH32_testdata[2749] */ + { 1375, 0x00000000U, 0xAF99A477U }, /* XSUM_XXH32_testdata[2750] */ + { 1375, 0x9E3779B1U, 0x6DA8288DU }, /* XSUM_XXH32_testdata[2751] */ + { 1376, 0x00000000U, 0x1EBE7C58U }, /* XSUM_XXH32_testdata[2752] */ + { 1376, 0x9E3779B1U, 0x51C696AAU }, /* XSUM_XXH32_testdata[2753] */ + { 1377, 0x00000000U, 0xEB84C288U }, /* XSUM_XXH32_testdata[2754] */ + { 1377, 0x9E3779B1U, 0x1CD6C654U }, /* XSUM_XXH32_testdata[2755] */ + { 1378, 0x00000000U, 0x7E837336U }, /* XSUM_XXH32_testdata[2756] */ + { 1378, 0x9E3779B1U, 0x6750EC5BU }, /* XSUM_XXH32_testdata[2757] */ + { 1379, 0x00000000U, 0xDA0750E5U }, /* XSUM_XXH32_testdata[2758] */ + { 1379, 0x9E3779B1U, 0x81CA570DU }, /* XSUM_XXH32_testdata[2759] */ + { 1380, 0x00000000U, 0x5543619FU }, /* XSUM_XXH32_testdata[2760] */ + { 1380, 0x9E3779B1U, 0xC381E5DBU }, /* XSUM_XXH32_testdata[2761] */ + { 1381, 0x00000000U, 0x616B4BDCU }, /* XSUM_XXH32_testdata[2762] */ + { 1381, 0x9E3779B1U, 0x6B75A005U }, /* XSUM_XXH32_testdata[2763] */ + { 1382, 0x00000000U, 0xF12E20FCU }, /* XSUM_XXH32_testdata[2764] */ + { 1382, 0x9E3779B1U, 0xE3D3E62EU }, /* XSUM_XXH32_testdata[2765] */ + { 1383, 0x00000000U, 0x59F2C73CU }, /* XSUM_XXH32_testdata[2766] */ + { 1383, 0x9E3779B1U, 0x5464F444U }, /* XSUM_XXH32_testdata[2767] */ + { 1384, 0x00000000U, 0x28DB96CAU }, /* XSUM_XXH32_testdata[2768] */ + { 1384, 0x9E3779B1U, 0xB7253994U }, /* XSUM_XXH32_testdata[2769] */ + { 1385, 0x00000000U, 0x11660CF1U }, /* XSUM_XXH32_testdata[2770] */ + { 1385, 0x9E3779B1U, 0x0F206FCFU }, /* XSUM_XXH32_testdata[2771] */ + { 1386, 0x00000000U, 0xE16504ADU }, /* XSUM_XXH32_testdata[2772] */ + { 1386, 0x9E3779B1U, 0xA3182A6EU }, /* XSUM_XXH32_testdata[2773] */ + { 1387, 0x00000000U, 0x8CFC9B9AU }, /* XSUM_XXH32_testdata[2774] */ + { 1387, 0x9E3779B1U, 0x9755A534U }, /* XSUM_XXH32_testdata[2775] */ + { 1388, 0x00000000U, 0xCDC0D867U }, /* XSUM_XXH32_testdata[2776] */ + { 1388, 0x9E3779B1U, 0x43F6B298U }, /* XSUM_XXH32_testdata[2777] */ + { 1389, 0x00000000U, 0x889A1EDAU }, /* XSUM_XXH32_testdata[2778] */ + { 1389, 0x9E3779B1U, 0x2C6A9486U }, /* XSUM_XXH32_testdata[2779] */ + { 1390, 0x00000000U, 0xD59AFB14U }, /* XSUM_XXH32_testdata[2780] */ + { 1390, 0x9E3779B1U, 0xD5FEEDF1U }, /* XSUM_XXH32_testdata[2781] */ + { 1391, 0x00000000U, 0x9ABE6F46U }, /* XSUM_XXH32_testdata[2782] */ + { 1391, 0x9E3779B1U, 0x2931C68CU }, /* XSUM_XXH32_testdata[2783] */ + { 1392, 0x00000000U, 0xC7A77F4CU }, /* XSUM_XXH32_testdata[2784] */ + { 1392, 0x9E3779B1U, 0xC2B5B646U }, /* XSUM_XXH32_testdata[2785] */ + { 1393, 0x00000000U, 0xF6642296U }, /* XSUM_XXH32_testdata[2786] */ + { 1393, 0x9E3779B1U, 0xA7DD4B43U }, /* XSUM_XXH32_testdata[2787] */ + { 1394, 0x00000000U, 0xB6E621FDU }, /* XSUM_XXH32_testdata[2788] */ + { 1394, 0x9E3779B1U, 0xB0B5AA8EU }, /* XSUM_XXH32_testdata[2789] */ + { 1395, 0x00000000U, 0xFC8E12A3U }, /* XSUM_XXH32_testdata[2790] */ + { 1395, 0x9E3779B1U, 0x17C09522U }, /* XSUM_XXH32_testdata[2791] */ + { 1396, 0x00000000U, 0x6C554B8AU }, /* XSUM_XXH32_testdata[2792] */ + { 1396, 0x9E3779B1U, 0x0A71965EU }, /* XSUM_XXH32_testdata[2793] */ + { 1397, 0x00000000U, 0x97EF74A7U }, /* XSUM_XXH32_testdata[2794] */ + { 1397, 0x9E3779B1U, 0xC6413DC4U }, /* XSUM_XXH32_testdata[2795] */ + { 1398, 0x00000000U, 0xAE94CB53U }, /* XSUM_XXH32_testdata[2796] */ + { 1398, 0x9E3779B1U, 0x590FD2BFU }, /* XSUM_XXH32_testdata[2797] */ + { 1399, 0x00000000U, 0xBC69B6C3U }, /* XSUM_XXH32_testdata[2798] */ + { 1399, 0x9E3779B1U, 0x97457FE4U }, /* XSUM_XXH32_testdata[2799] */ + { 1400, 0x00000000U, 0x2A72F074U }, /* XSUM_XXH32_testdata[2800] */ + { 1400, 0x9E3779B1U, 0x9C74A24CU }, /* XSUM_XXH32_testdata[2801] */ + { 1401, 0x00000000U, 0x4B6BFCC1U }, /* XSUM_XXH32_testdata[2802] */ + { 1401, 0x9E3779B1U, 0xD74133C7U }, /* XSUM_XXH32_testdata[2803] */ + { 1402, 0x00000000U, 0x7FC2D82CU }, /* XSUM_XXH32_testdata[2804] */ + { 1402, 0x9E3779B1U, 0xDC12A98DU }, /* XSUM_XXH32_testdata[2805] */ + { 1403, 0x00000000U, 0x10A30F0BU }, /* XSUM_XXH32_testdata[2806] */ + { 1403, 0x9E3779B1U, 0x556C6675U }, /* XSUM_XXH32_testdata[2807] */ + { 1404, 0x00000000U, 0x66F3957BU }, /* XSUM_XXH32_testdata[2808] */ + { 1404, 0x9E3779B1U, 0x4DFE2282U }, /* XSUM_XXH32_testdata[2809] */ + { 1405, 0x00000000U, 0x5D7B7674U }, /* XSUM_XXH32_testdata[2810] */ + { 1405, 0x9E3779B1U, 0x911584B8U }, /* XSUM_XXH32_testdata[2811] */ + { 1406, 0x00000000U, 0xD5D49314U }, /* XSUM_XXH32_testdata[2812] */ + { 1406, 0x9E3779B1U, 0xB575832DU }, /* XSUM_XXH32_testdata[2813] */ + { 1407, 0x00000000U, 0xC89A1F79U }, /* XSUM_XXH32_testdata[2814] */ + { 1407, 0x9E3779B1U, 0xBC0E196BU }, /* XSUM_XXH32_testdata[2815] */ + { 1408, 0x00000000U, 0x0DFE8294U }, /* XSUM_XXH32_testdata[2816] */ + { 1408, 0x9E3779B1U, 0xED10BD15U }, /* XSUM_XXH32_testdata[2817] */ + { 1409, 0x00000000U, 0xD19CDC2EU }, /* XSUM_XXH32_testdata[2818] */ + { 1409, 0x9E3779B1U, 0x725BD2E1U }, /* XSUM_XXH32_testdata[2819] */ + { 1410, 0x00000000U, 0x4119B72EU }, /* XSUM_XXH32_testdata[2820] */ + { 1410, 0x9E3779B1U, 0x593BC6C4U }, /* XSUM_XXH32_testdata[2821] */ + { 1411, 0x00000000U, 0x45CCE29BU }, /* XSUM_XXH32_testdata[2822] */ + { 1411, 0x9E3779B1U, 0x13D96973U }, /* XSUM_XXH32_testdata[2823] */ + { 1412, 0x00000000U, 0x21CB0B9AU }, /* XSUM_XXH32_testdata[2824] */ + { 1412, 0x9E3779B1U, 0x4A7EE4C4U }, /* XSUM_XXH32_testdata[2825] */ + { 1413, 0x00000000U, 0xA7997074U }, /* XSUM_XXH32_testdata[2826] */ + { 1413, 0x9E3779B1U, 0xBF713AB1U }, /* XSUM_XXH32_testdata[2827] */ + { 1414, 0x00000000U, 0xA2CEC4F5U }, /* XSUM_XXH32_testdata[2828] */ + { 1414, 0x9E3779B1U, 0x1FA79D80U }, /* XSUM_XXH32_testdata[2829] */ + { 1415, 0x00000000U, 0x0F814A6EU }, /* XSUM_XXH32_testdata[2830] */ + { 1415, 0x9E3779B1U, 0xA3884D73U }, /* XSUM_XXH32_testdata[2831] */ + { 1416, 0x00000000U, 0x20679E8BU }, /* XSUM_XXH32_testdata[2832] */ + { 1416, 0x9E3779B1U, 0x005C56DFU }, /* XSUM_XXH32_testdata[2833] */ + { 1417, 0x00000000U, 0x0432202FU }, /* XSUM_XXH32_testdata[2834] */ + { 1417, 0x9E3779B1U, 0xB631CD97U }, /* XSUM_XXH32_testdata[2835] */ + { 1418, 0x00000000U, 0x7D08D0FAU }, /* XSUM_XXH32_testdata[2836] */ + { 1418, 0x9E3779B1U, 0x04349D10U }, /* XSUM_XXH32_testdata[2837] */ + { 1419, 0x00000000U, 0xC3EBF980U }, /* XSUM_XXH32_testdata[2838] */ + { 1419, 0x9E3779B1U, 0x7692E29DU }, /* XSUM_XXH32_testdata[2839] */ + { 1420, 0x00000000U, 0xA56505C3U }, /* XSUM_XXH32_testdata[2840] */ + { 1420, 0x9E3779B1U, 0x5EAF087AU }, /* XSUM_XXH32_testdata[2841] */ + { 1421, 0x00000000U, 0x78CE85ACU }, /* XSUM_XXH32_testdata[2842] */ + { 1421, 0x9E3779B1U, 0x98EC1EC8U }, /* XSUM_XXH32_testdata[2843] */ + { 1422, 0x00000000U, 0xB4E81E27U }, /* XSUM_XXH32_testdata[2844] */ + { 1422, 0x9E3779B1U, 0xEE79131EU }, /* XSUM_XXH32_testdata[2845] */ + { 1423, 0x00000000U, 0x1300FB1DU }, /* XSUM_XXH32_testdata[2846] */ + { 1423, 0x9E3779B1U, 0xA6AAD254U }, /* XSUM_XXH32_testdata[2847] */ + { 1424, 0x00000000U, 0xB9F71B65U }, /* XSUM_XXH32_testdata[2848] */ + { 1424, 0x9E3779B1U, 0xFDB3F66BU }, /* XSUM_XXH32_testdata[2849] */ + { 1425, 0x00000000U, 0x21176B58U }, /* XSUM_XXH32_testdata[2850] */ + { 1425, 0x9E3779B1U, 0x0A9DAB87U }, /* XSUM_XXH32_testdata[2851] */ + { 1426, 0x00000000U, 0xA773945FU }, /* XSUM_XXH32_testdata[2852] */ + { 1426, 0x9E3779B1U, 0xF6FCF60AU }, /* XSUM_XXH32_testdata[2853] */ + { 1427, 0x00000000U, 0x9FDBE7B3U }, /* XSUM_XXH32_testdata[2854] */ + { 1427, 0x9E3779B1U, 0x670BB1A7U }, /* XSUM_XXH32_testdata[2855] */ + { 1428, 0x00000000U, 0x661DB06EU }, /* XSUM_XXH32_testdata[2856] */ + { 1428, 0x9E3779B1U, 0x4FD661AAU }, /* XSUM_XXH32_testdata[2857] */ + { 1429, 0x00000000U, 0xFB224CC2U }, /* XSUM_XXH32_testdata[2858] */ + { 1429, 0x9E3779B1U, 0x3C85B32CU }, /* XSUM_XXH32_testdata[2859] */ + { 1430, 0x00000000U, 0x463C1DC8U }, /* XSUM_XXH32_testdata[2860] */ + { 1430, 0x9E3779B1U, 0x8EB2F324U }, /* XSUM_XXH32_testdata[2861] */ + { 1431, 0x00000000U, 0x2243C699U }, /* XSUM_XXH32_testdata[2862] */ + { 1431, 0x9E3779B1U, 0x60ADE561U }, /* XSUM_XXH32_testdata[2863] */ + { 1432, 0x00000000U, 0xE0327A81U }, /* XSUM_XXH32_testdata[2864] */ + { 1432, 0x9E3779B1U, 0x6EA60C2CU }, /* XSUM_XXH32_testdata[2865] */ + { 1433, 0x00000000U, 0x299D8963U }, /* XSUM_XXH32_testdata[2866] */ + { 1433, 0x9E3779B1U, 0x959A1254U }, /* XSUM_XXH32_testdata[2867] */ + { 1434, 0x00000000U, 0x638EDEA5U }, /* XSUM_XXH32_testdata[2868] */ + { 1434, 0x9E3779B1U, 0xE9F0D047U }, /* XSUM_XXH32_testdata[2869] */ + { 1435, 0x00000000U, 0x388EC35AU }, /* XSUM_XXH32_testdata[2870] */ + { 1435, 0x9E3779B1U, 0xA946B3CAU }, /* XSUM_XXH32_testdata[2871] */ + { 1436, 0x00000000U, 0x9784535EU }, /* XSUM_XXH32_testdata[2872] */ + { 1436, 0x9E3779B1U, 0xFD5C545BU }, /* XSUM_XXH32_testdata[2873] */ + { 1437, 0x00000000U, 0xB85C3D80U }, /* XSUM_XXH32_testdata[2874] */ + { 1437, 0x9E3779B1U, 0xB1A43ACAU }, /* XSUM_XXH32_testdata[2875] */ + { 1438, 0x00000000U, 0xD980C334U }, /* XSUM_XXH32_testdata[2876] */ + { 1438, 0x9E3779B1U, 0xA16E1773U }, /* XSUM_XXH32_testdata[2877] */ + { 1439, 0x00000000U, 0x5C5B3834U }, /* XSUM_XXH32_testdata[2878] */ + { 1439, 0x9E3779B1U, 0xE50ED1FFU }, /* XSUM_XXH32_testdata[2879] */ + { 1440, 0x00000000U, 0x05D63325U }, /* XSUM_XXH32_testdata[2880] */ + { 1440, 0x9E3779B1U, 0x6EFDF566U }, /* XSUM_XXH32_testdata[2881] */ + { 1441, 0x00000000U, 0x453E6103U }, /* XSUM_XXH32_testdata[2882] */ + { 1441, 0x9E3779B1U, 0x1FAD079BU }, /* XSUM_XXH32_testdata[2883] */ + { 1442, 0x00000000U, 0x4171244AU }, /* XSUM_XXH32_testdata[2884] */ + { 1442, 0x9E3779B1U, 0x73A2B038U }, /* XSUM_XXH32_testdata[2885] */ + { 1443, 0x00000000U, 0x1ADE526BU }, /* XSUM_XXH32_testdata[2886] */ + { 1443, 0x9E3779B1U, 0xAAA56805U }, /* XSUM_XXH32_testdata[2887] */ + { 1444, 0x00000000U, 0x3B321083U }, /* XSUM_XXH32_testdata[2888] */ + { 1444, 0x9E3779B1U, 0xC84F89FAU }, /* XSUM_XXH32_testdata[2889] */ + { 1445, 0x00000000U, 0x2A2E4FCAU }, /* XSUM_XXH32_testdata[2890] */ + { 1445, 0x9E3779B1U, 0x646272DCU }, /* XSUM_XXH32_testdata[2891] */ + { 1446, 0x00000000U, 0x3F2FF28FU }, /* XSUM_XXH32_testdata[2892] */ + { 1446, 0x9E3779B1U, 0x5906DC49U }, /* XSUM_XXH32_testdata[2893] */ + { 1447, 0x00000000U, 0x897B22D0U }, /* XSUM_XXH32_testdata[2894] */ + { 1447, 0x9E3779B1U, 0x89A088E7U }, /* XSUM_XXH32_testdata[2895] */ + { 1448, 0x00000000U, 0x4C898B3AU }, /* XSUM_XXH32_testdata[2896] */ + { 1448, 0x9E3779B1U, 0x12C8E645U }, /* XSUM_XXH32_testdata[2897] */ + { 1449, 0x00000000U, 0xC5B555C4U }, /* XSUM_XXH32_testdata[2898] */ + { 1449, 0x9E3779B1U, 0x3A8EE208U }, /* XSUM_XXH32_testdata[2899] */ + { 1450, 0x00000000U, 0xC81121CEU }, /* XSUM_XXH32_testdata[2900] */ + { 1450, 0x9E3779B1U, 0x2C11D7DFU }, /* XSUM_XXH32_testdata[2901] */ + { 1451, 0x00000000U, 0x27EBC1E1U }, /* XSUM_XXH32_testdata[2902] */ + { 1451, 0x9E3779B1U, 0x150C1A09U }, /* XSUM_XXH32_testdata[2903] */ + { 1452, 0x00000000U, 0xF57F7F47U }, /* XSUM_XXH32_testdata[2904] */ + { 1452, 0x9E3779B1U, 0xC896F626U }, /* XSUM_XXH32_testdata[2905] */ + { 1453, 0x00000000U, 0xB15772A2U }, /* XSUM_XXH32_testdata[2906] */ + { 1453, 0x9E3779B1U, 0xBD60C28BU }, /* XSUM_XXH32_testdata[2907] */ + { 1454, 0x00000000U, 0x8E2D55E3U }, /* XSUM_XXH32_testdata[2908] */ + { 1454, 0x9E3779B1U, 0xDF18385DU }, /* XSUM_XXH32_testdata[2909] */ + { 1455, 0x00000000U, 0x7D0BC3ADU }, /* XSUM_XXH32_testdata[2910] */ + { 1455, 0x9E3779B1U, 0x48DCD49FU }, /* XSUM_XXH32_testdata[2911] */ + { 1456, 0x00000000U, 0x99FB477DU }, /* XSUM_XXH32_testdata[2912] */ + { 1456, 0x9E3779B1U, 0x902CA6AAU }, /* XSUM_XXH32_testdata[2913] */ + { 1457, 0x00000000U, 0xB267EB4CU }, /* XSUM_XXH32_testdata[2914] */ + { 1457, 0x9E3779B1U, 0x56DA93D9U }, /* XSUM_XXH32_testdata[2915] */ + { 1458, 0x00000000U, 0x4F1C3B24U }, /* XSUM_XXH32_testdata[2916] */ + { 1458, 0x9E3779B1U, 0x2F707029U }, /* XSUM_XXH32_testdata[2917] */ + { 1459, 0x00000000U, 0xE192EC10U }, /* XSUM_XXH32_testdata[2918] */ + { 1459, 0x9E3779B1U, 0xE99EEC91U }, /* XSUM_XXH32_testdata[2919] */ + { 1460, 0x00000000U, 0x64563F28U }, /* XSUM_XXH32_testdata[2920] */ + { 1460, 0x9E3779B1U, 0x793DB711U }, /* XSUM_XXH32_testdata[2921] */ + { 1461, 0x00000000U, 0xD772C184U }, /* XSUM_XXH32_testdata[2922] */ + { 1461, 0x9E3779B1U, 0x0FE2DAF3U }, /* XSUM_XXH32_testdata[2923] */ + { 1462, 0x00000000U, 0x76E3DC31U }, /* XSUM_XXH32_testdata[2924] */ + { 1462, 0x9E3779B1U, 0x254AD675U }, /* XSUM_XXH32_testdata[2925] */ + { 1463, 0x00000000U, 0xB1942E60U }, /* XSUM_XXH32_testdata[2926] */ + { 1463, 0x9E3779B1U, 0xE1825B19U }, /* XSUM_XXH32_testdata[2927] */ + { 1464, 0x00000000U, 0x56275E1AU }, /* XSUM_XXH32_testdata[2928] */ + { 1464, 0x9E3779B1U, 0xECF903CDU }, /* XSUM_XXH32_testdata[2929] */ + { 1465, 0x00000000U, 0x2AF29989U }, /* XSUM_XXH32_testdata[2930] */ + { 1465, 0x9E3779B1U, 0xD9420B30U }, /* XSUM_XXH32_testdata[2931] */ + { 1466, 0x00000000U, 0x27E74C8BU }, /* XSUM_XXH32_testdata[2932] */ + { 1466, 0x9E3779B1U, 0xDA1E69CBU }, /* XSUM_XXH32_testdata[2933] */ + { 1467, 0x00000000U, 0xA04901DBU }, /* XSUM_XXH32_testdata[2934] */ + { 1467, 0x9E3779B1U, 0x607C8CAAU }, /* XSUM_XXH32_testdata[2935] */ + { 1468, 0x00000000U, 0xBBE4680AU }, /* XSUM_XXH32_testdata[2936] */ + { 1468, 0x9E3779B1U, 0x064A986EU }, /* XSUM_XXH32_testdata[2937] */ + { 1469, 0x00000000U, 0x3DADD008U }, /* XSUM_XXH32_testdata[2938] */ + { 1469, 0x9E3779B1U, 0xD2A871C1U }, /* XSUM_XXH32_testdata[2939] */ + { 1470, 0x00000000U, 0xCA095253U }, /* XSUM_XXH32_testdata[2940] */ + { 1470, 0x9E3779B1U, 0x8CA6E1BBU }, /* XSUM_XXH32_testdata[2941] */ + { 1471, 0x00000000U, 0x5AF8F550U }, /* XSUM_XXH32_testdata[2942] */ + { 1471, 0x9E3779B1U, 0xCEDC8EC4U }, /* XSUM_XXH32_testdata[2943] */ + { 1472, 0x00000000U, 0xA07B441AU }, /* XSUM_XXH32_testdata[2944] */ + { 1472, 0x9E3779B1U, 0x5507B3F0U }, /* XSUM_XXH32_testdata[2945] */ + { 1473, 0x00000000U, 0xAAF45E2FU }, /* XSUM_XXH32_testdata[2946] */ + { 1473, 0x9E3779B1U, 0x1ED667D2U }, /* XSUM_XXH32_testdata[2947] */ + { 1474, 0x00000000U, 0xB5CA74FDU }, /* XSUM_XXH32_testdata[2948] */ + { 1474, 0x9E3779B1U, 0x43524B7DU }, /* XSUM_XXH32_testdata[2949] */ + { 1475, 0x00000000U, 0xCF8DFD2EU }, /* XSUM_XXH32_testdata[2950] */ + { 1475, 0x9E3779B1U, 0x6F25725DU }, /* XSUM_XXH32_testdata[2951] */ + { 1476, 0x00000000U, 0xA89A68F6U }, /* XSUM_XXH32_testdata[2952] */ + { 1476, 0x9E3779B1U, 0xAB183A36U }, /* XSUM_XXH32_testdata[2953] */ + { 1477, 0x00000000U, 0x83496213U }, /* XSUM_XXH32_testdata[2954] */ + { 1477, 0x9E3779B1U, 0xA407EEF5U }, /* XSUM_XXH32_testdata[2955] */ + { 1478, 0x00000000U, 0x156DA784U }, /* XSUM_XXH32_testdata[2956] */ + { 1478, 0x9E3779B1U, 0x0A2FCEFAU }, /* XSUM_XXH32_testdata[2957] */ + { 1479, 0x00000000U, 0x629390E3U }, /* XSUM_XXH32_testdata[2958] */ + { 1479, 0x9E3779B1U, 0xF6438AD7U }, /* XSUM_XXH32_testdata[2959] */ + { 1480, 0x00000000U, 0x964F5433U }, /* XSUM_XXH32_testdata[2960] */ + { 1480, 0x9E3779B1U, 0xC87AA437U }, /* XSUM_XXH32_testdata[2961] */ + { 1481, 0x00000000U, 0x4FFB969CU }, /* XSUM_XXH32_testdata[2962] */ + { 1481, 0x9E3779B1U, 0xB06FCA77U }, /* XSUM_XXH32_testdata[2963] */ + { 1482, 0x00000000U, 0x29FA6415U }, /* XSUM_XXH32_testdata[2964] */ + { 1482, 0x9E3779B1U, 0x32D0A061U }, /* XSUM_XXH32_testdata[2965] */ + { 1483, 0x00000000U, 0x7AC08121U }, /* XSUM_XXH32_testdata[2966] */ + { 1483, 0x9E3779B1U, 0x6018A9D9U }, /* XSUM_XXH32_testdata[2967] */ + { 1484, 0x00000000U, 0x563D07CBU }, /* XSUM_XXH32_testdata[2968] */ + { 1484, 0x9E3779B1U, 0x4E5044BAU }, /* XSUM_XXH32_testdata[2969] */ + { 1485, 0x00000000U, 0xECEE3205U }, /* XSUM_XXH32_testdata[2970] */ + { 1485, 0x9E3779B1U, 0xF26D5CFBU }, /* XSUM_XXH32_testdata[2971] */ + { 1486, 0x00000000U, 0x2058A8BAU }, /* XSUM_XXH32_testdata[2972] */ + { 1486, 0x9E3779B1U, 0xC3DA1C88U }, /* XSUM_XXH32_testdata[2973] */ + { 1487, 0x00000000U, 0x5F4FBAA4U }, /* XSUM_XXH32_testdata[2974] */ + { 1487, 0x9E3779B1U, 0x129D0986U }, /* XSUM_XXH32_testdata[2975] */ + { 1488, 0x00000000U, 0xCF6B03FCU }, /* XSUM_XXH32_testdata[2976] */ + { 1488, 0x9E3779B1U, 0xDD6944C8U }, /* XSUM_XXH32_testdata[2977] */ + { 1489, 0x00000000U, 0xB619554CU }, /* XSUM_XXH32_testdata[2978] */ + { 1489, 0x9E3779B1U, 0xCDC97809U }, /* XSUM_XXH32_testdata[2979] */ + { 1490, 0x00000000U, 0xAD7132F7U }, /* XSUM_XXH32_testdata[2980] */ + { 1490, 0x9E3779B1U, 0x386790A9U }, /* XSUM_XXH32_testdata[2981] */ + { 1491, 0x00000000U, 0x9A87DD2BU }, /* XSUM_XXH32_testdata[2982] */ + { 1491, 0x9E3779B1U, 0x54B35790U }, /* XSUM_XXH32_testdata[2983] */ + { 1492, 0x00000000U, 0x02C8444FU }, /* XSUM_XXH32_testdata[2984] */ + { 1492, 0x9E3779B1U, 0xCFB45FEEU }, /* XSUM_XXH32_testdata[2985] */ + { 1493, 0x00000000U, 0xCE87416BU }, /* XSUM_XXH32_testdata[2986] */ + { 1493, 0x9E3779B1U, 0x0C212296U }, /* XSUM_XXH32_testdata[2987] */ + { 1494, 0x00000000U, 0x4D57C6D5U }, /* XSUM_XXH32_testdata[2988] */ + { 1494, 0x9E3779B1U, 0x53F52AE8U }, /* XSUM_XXH32_testdata[2989] */ + { 1495, 0x00000000U, 0xF4F18C65U }, /* XSUM_XXH32_testdata[2990] */ + { 1495, 0x9E3779B1U, 0x2F34B21FU }, /* XSUM_XXH32_testdata[2991] */ + { 1496, 0x00000000U, 0x331FD711U }, /* XSUM_XXH32_testdata[2992] */ + { 1496, 0x9E3779B1U, 0xDD314583U }, /* XSUM_XXH32_testdata[2993] */ + { 1497, 0x00000000U, 0x64D5DAD8U }, /* XSUM_XXH32_testdata[2994] */ + { 1497, 0x9E3779B1U, 0x77C85656U }, /* XSUM_XXH32_testdata[2995] */ + { 1498, 0x00000000U, 0x3DB5FA68U }, /* XSUM_XXH32_testdata[2996] */ + { 1498, 0x9E3779B1U, 0xD7507175U }, /* XSUM_XXH32_testdata[2997] */ + { 1499, 0x00000000U, 0x9418E95AU }, /* XSUM_XXH32_testdata[2998] */ + { 1499, 0x9E3779B1U, 0x918D3ADFU }, /* XSUM_XXH32_testdata[2999] */ + { 1500, 0x00000000U, 0x674259FFU }, /* XSUM_XXH32_testdata[3000] */ + { 1500, 0x9E3779B1U, 0xE0EFA6CCU }, /* XSUM_XXH32_testdata[3001] */ + { 1501, 0x00000000U, 0x4E07DE91U }, /* XSUM_XXH32_testdata[3002] */ + { 1501, 0x9E3779B1U, 0xBA624772U }, /* XSUM_XXH32_testdata[3003] */ + { 1502, 0x00000000U, 0x03110631U }, /* XSUM_XXH32_testdata[3004] */ + { 1502, 0x9E3779B1U, 0xA888214EU }, /* XSUM_XXH32_testdata[3005] */ + { 1503, 0x00000000U, 0x87144AA6U }, /* XSUM_XXH32_testdata[3006] */ + { 1503, 0x9E3779B1U, 0x84E14834U }, /* XSUM_XXH32_testdata[3007] */ + { 1504, 0x00000000U, 0x41785DE7U }, /* XSUM_XXH32_testdata[3008] */ + { 1504, 0x9E3779B1U, 0x33C2EC4EU }, /* XSUM_XXH32_testdata[3009] */ + { 1505, 0x00000000U, 0xCE8FEAFDU }, /* XSUM_XXH32_testdata[3010] */ + { 1505, 0x9E3779B1U, 0x4CBF6CA8U }, /* XSUM_XXH32_testdata[3011] */ + { 1506, 0x00000000U, 0xE26FDA0CU }, /* XSUM_XXH32_testdata[3012] */ + { 1506, 0x9E3779B1U, 0x14F27E32U }, /* XSUM_XXH32_testdata[3013] */ + { 1507, 0x00000000U, 0xE07C8111U }, /* XSUM_XXH32_testdata[3014] */ + { 1507, 0x9E3779B1U, 0xEDA376E0U }, /* XSUM_XXH32_testdata[3015] */ + { 1508, 0x00000000U, 0x6E8003DDU }, /* XSUM_XXH32_testdata[3016] */ + { 1508, 0x9E3779B1U, 0x82A82D30U }, /* XSUM_XXH32_testdata[3017] */ + { 1509, 0x00000000U, 0xD137BE39U }, /* XSUM_XXH32_testdata[3018] */ + { 1509, 0x9E3779B1U, 0x4F015C3EU }, /* XSUM_XXH32_testdata[3019] */ + { 1510, 0x00000000U, 0xFEDEB13BU }, /* XSUM_XXH32_testdata[3020] */ + { 1510, 0x9E3779B1U, 0x132FBE15U }, /* XSUM_XXH32_testdata[3021] */ + { 1511, 0x00000000U, 0x7325E15FU }, /* XSUM_XXH32_testdata[3022] */ + { 1511, 0x9E3779B1U, 0xEB95FE4EU }, /* XSUM_XXH32_testdata[3023] */ + { 1512, 0x00000000U, 0xC2A22C8CU }, /* XSUM_XXH32_testdata[3024] */ + { 1512, 0x9E3779B1U, 0x383E1AC9U }, /* XSUM_XXH32_testdata[3025] */ + { 1513, 0x00000000U, 0xFDD37C10U }, /* XSUM_XXH32_testdata[3026] */ + { 1513, 0x9E3779B1U, 0xFBDC4EA7U }, /* XSUM_XXH32_testdata[3027] */ + { 1514, 0x00000000U, 0x4CBC00D0U }, /* XSUM_XXH32_testdata[3028] */ + { 1514, 0x9E3779B1U, 0x98C3F136U }, /* XSUM_XXH32_testdata[3029] */ + { 1515, 0x00000000U, 0xDB7E0D03U }, /* XSUM_XXH32_testdata[3030] */ + { 1515, 0x9E3779B1U, 0xEBB98383U }, /* XSUM_XXH32_testdata[3031] */ + { 1516, 0x00000000U, 0x95410C0FU }, /* XSUM_XXH32_testdata[3032] */ + { 1516, 0x9E3779B1U, 0x40AFA4BDU }, /* XSUM_XXH32_testdata[3033] */ + { 1517, 0x00000000U, 0x7FA84979U }, /* XSUM_XXH32_testdata[3034] */ + { 1517, 0x9E3779B1U, 0x3357E626U }, /* XSUM_XXH32_testdata[3035] */ + { 1518, 0x00000000U, 0x0D1F40E5U }, /* XSUM_XXH32_testdata[3036] */ + { 1518, 0x9E3779B1U, 0x2D2C352FU }, /* XSUM_XXH32_testdata[3037] */ + { 1519, 0x00000000U, 0xB0A1BE9FU }, /* XSUM_XXH32_testdata[3038] */ + { 1519, 0x9E3779B1U, 0x0F550ACAU }, /* XSUM_XXH32_testdata[3039] */ + { 1520, 0x00000000U, 0x7474BFB8U }, /* XSUM_XXH32_testdata[3040] */ + { 1520, 0x9E3779B1U, 0x17693B78U }, /* XSUM_XXH32_testdata[3041] */ + { 1521, 0x00000000U, 0x626CDFA2U }, /* XSUM_XXH32_testdata[3042] */ + { 1521, 0x9E3779B1U, 0xCC95C9AFU }, /* XSUM_XXH32_testdata[3043] */ + { 1522, 0x00000000U, 0x19509450U }, /* XSUM_XXH32_testdata[3044] */ + { 1522, 0x9E3779B1U, 0xD2009357U }, /* XSUM_XXH32_testdata[3045] */ + { 1523, 0x00000000U, 0x769D6B1FU }, /* XSUM_XXH32_testdata[3046] */ + { 1523, 0x9E3779B1U, 0xADB558C6U }, /* XSUM_XXH32_testdata[3047] */ + { 1524, 0x00000000U, 0x4D443049U }, /* XSUM_XXH32_testdata[3048] */ + { 1524, 0x9E3779B1U, 0xB3A1687CU }, /* XSUM_XXH32_testdata[3049] */ + { 1525, 0x00000000U, 0xFB204799U }, /* XSUM_XXH32_testdata[3050] */ + { 1525, 0x9E3779B1U, 0xD2C092DEU }, /* XSUM_XXH32_testdata[3051] */ + { 1526, 0x00000000U, 0xBF3CA14CU }, /* XSUM_XXH32_testdata[3052] */ + { 1526, 0x9E3779B1U, 0x39D0056CU }, /* XSUM_XXH32_testdata[3053] */ + { 1527, 0x00000000U, 0xAE18783FU }, /* XSUM_XXH32_testdata[3054] */ + { 1527, 0x9E3779B1U, 0x8815EF45U }, /* XSUM_XXH32_testdata[3055] */ + { 1528, 0x00000000U, 0x0E703449U }, /* XSUM_XXH32_testdata[3056] */ + { 1528, 0x9E3779B1U, 0x328B093AU }, /* XSUM_XXH32_testdata[3057] */ + { 1529, 0x00000000U, 0x05471860U }, /* XSUM_XXH32_testdata[3058] */ + { 1529, 0x9E3779B1U, 0x17CE7233U }, /* XSUM_XXH32_testdata[3059] */ + { 1530, 0x00000000U, 0x6A0B50F5U }, /* XSUM_XXH32_testdata[3060] */ + { 1530, 0x9E3779B1U, 0x057CCE6DU }, /* XSUM_XXH32_testdata[3061] */ + { 1531, 0x00000000U, 0x7A6F6CFFU }, /* XSUM_XXH32_testdata[3062] */ + { 1531, 0x9E3779B1U, 0xE16B59A3U }, /* XSUM_XXH32_testdata[3063] */ + { 1532, 0x00000000U, 0x14E75DF7U }, /* XSUM_XXH32_testdata[3064] */ + { 1532, 0x9E3779B1U, 0x9E23C989U }, /* XSUM_XXH32_testdata[3065] */ + { 1533, 0x00000000U, 0xDDDFCE27U }, /* XSUM_XXH32_testdata[3066] */ + { 1533, 0x9E3779B1U, 0xF4B30D84U }, /* XSUM_XXH32_testdata[3067] */ + { 1534, 0x00000000U, 0x9E6E08B2U }, /* XSUM_XXH32_testdata[3068] */ + { 1534, 0x9E3779B1U, 0x41E04963U }, /* XSUM_XXH32_testdata[3069] */ + { 1535, 0x00000000U, 0xEF50F869U }, /* XSUM_XXH32_testdata[3070] */ + { 1535, 0x9E3779B1U, 0xFAFD83C0U }, /* XSUM_XXH32_testdata[3071] */ + { 1536, 0x00000000U, 0xCAEAC495U }, /* XSUM_XXH32_testdata[3072] */ + { 1536, 0x9E3779B1U, 0xA8CC0205U }, /* XSUM_XXH32_testdata[3073] */ + { 1537, 0x00000000U, 0xE3D25FD3U }, /* XSUM_XXH32_testdata[3074] */ + { 1537, 0x9E3779B1U, 0x5D16D2F5U }, /* XSUM_XXH32_testdata[3075] */ + { 1538, 0x00000000U, 0x487B3691U }, /* XSUM_XXH32_testdata[3076] */ + { 1538, 0x9E3779B1U, 0xF3978D4AU }, /* XSUM_XXH32_testdata[3077] */ + { 1539, 0x00000000U, 0x3898029BU }, /* XSUM_XXH32_testdata[3078] */ + { 1539, 0x9E3779B1U, 0x3FCC4B91U }, /* XSUM_XXH32_testdata[3079] */ + { 1540, 0x00000000U, 0xB7DDBCA0U }, /* XSUM_XXH32_testdata[3080] */ + { 1540, 0x9E3779B1U, 0x45E04D2CU }, /* XSUM_XXH32_testdata[3081] */ + { 1541, 0x00000000U, 0xC37F7E70U }, /* XSUM_XXH32_testdata[3082] */ + { 1541, 0x9E3779B1U, 0xFE16DD89U }, /* XSUM_XXH32_testdata[3083] */ + { 1542, 0x00000000U, 0x060AE3DEU }, /* XSUM_XXH32_testdata[3084] */ + { 1542, 0x9E3779B1U, 0x85B6EC0AU }, /* XSUM_XXH32_testdata[3085] */ + { 1543, 0x00000000U, 0xBB725132U }, /* XSUM_XXH32_testdata[3086] */ + { 1543, 0x9E3779B1U, 0x71782E92U }, /* XSUM_XXH32_testdata[3087] */ + { 1544, 0x00000000U, 0x7EE2D172U }, /* XSUM_XXH32_testdata[3088] */ + { 1544, 0x9E3779B1U, 0xFF5C12C6U }, /* XSUM_XXH32_testdata[3089] */ + { 1545, 0x00000000U, 0x5295D2E4U }, /* XSUM_XXH32_testdata[3090] */ + { 1545, 0x9E3779B1U, 0x052C95F6U }, /* XSUM_XXH32_testdata[3091] */ + { 1546, 0x00000000U, 0xE67BAB10U }, /* XSUM_XXH32_testdata[3092] */ + { 1546, 0x9E3779B1U, 0x15F52144U }, /* XSUM_XXH32_testdata[3093] */ + { 1547, 0x00000000U, 0x6503A0A3U }, /* XSUM_XXH32_testdata[3094] */ + { 1547, 0x9E3779B1U, 0xD4ACA0DEU }, /* XSUM_XXH32_testdata[3095] */ + { 1548, 0x00000000U, 0x3362BDCEU }, /* XSUM_XXH32_testdata[3096] */ + { 1548, 0x9E3779B1U, 0x517AF9BAU }, /* XSUM_XXH32_testdata[3097] */ + { 1549, 0x00000000U, 0x60F74AC9U }, /* XSUM_XXH32_testdata[3098] */ + { 1549, 0x9E3779B1U, 0x43271084U }, /* XSUM_XXH32_testdata[3099] */ + { 1550, 0x00000000U, 0x0476F312U }, /* XSUM_XXH32_testdata[3100] */ + { 1550, 0x9E3779B1U, 0xB42F9F68U }, /* XSUM_XXH32_testdata[3101] */ + { 1551, 0x00000000U, 0xCDBF47ADU }, /* XSUM_XXH32_testdata[3102] */ + { 1551, 0x9E3779B1U, 0xCAEA9D94U }, /* XSUM_XXH32_testdata[3103] */ + { 1552, 0x00000000U, 0xBCD69D2EU }, /* XSUM_XXH32_testdata[3104] */ + { 1552, 0x9E3779B1U, 0x7107F2FBU }, /* XSUM_XXH32_testdata[3105] */ + { 1553, 0x00000000U, 0x142B122FU }, /* XSUM_XXH32_testdata[3106] */ + { 1553, 0x9E3779B1U, 0x71FDE2CAU }, /* XSUM_XXH32_testdata[3107] */ + { 1554, 0x00000000U, 0x45AABBB8U }, /* XSUM_XXH32_testdata[3108] */ + { 1554, 0x9E3779B1U, 0x64AFA993U }, /* XSUM_XXH32_testdata[3109] */ + { 1555, 0x00000000U, 0xB539794DU }, /* XSUM_XXH32_testdata[3110] */ + { 1555, 0x9E3779B1U, 0x27D686FDU }, /* XSUM_XXH32_testdata[3111] */ + { 1556, 0x00000000U, 0x101D2A68U }, /* XSUM_XXH32_testdata[3112] */ + { 1556, 0x9E3779B1U, 0xD5A4C045U }, /* XSUM_XXH32_testdata[3113] */ + { 1557, 0x00000000U, 0x97A150AAU }, /* XSUM_XXH32_testdata[3114] */ + { 1557, 0x9E3779B1U, 0xA46B85DDU }, /* XSUM_XXH32_testdata[3115] */ + { 1558, 0x00000000U, 0xBDD558BAU }, /* XSUM_XXH32_testdata[3116] */ + { 1558, 0x9E3779B1U, 0xC886C618U }, /* XSUM_XXH32_testdata[3117] */ + { 1559, 0x00000000U, 0xD4F7AFE9U }, /* XSUM_XXH32_testdata[3118] */ + { 1559, 0x9E3779B1U, 0x318E5D9EU }, /* XSUM_XXH32_testdata[3119] */ + { 1560, 0x00000000U, 0x2F45D9FBU }, /* XSUM_XXH32_testdata[3120] */ + { 1560, 0x9E3779B1U, 0x331208FBU }, /* XSUM_XXH32_testdata[3121] */ + { 1561, 0x00000000U, 0x008C885AU }, /* XSUM_XXH32_testdata[3122] */ + { 1561, 0x9E3779B1U, 0xA70D4FFEU }, /* XSUM_XXH32_testdata[3123] */ + { 1562, 0x00000000U, 0xF71796C8U }, /* XSUM_XXH32_testdata[3124] */ + { 1562, 0x9E3779B1U, 0x252BDB47U }, /* XSUM_XXH32_testdata[3125] */ + { 1563, 0x00000000U, 0xC6774B56U }, /* XSUM_XXH32_testdata[3126] */ + { 1563, 0x9E3779B1U, 0xEB767076U }, /* XSUM_XXH32_testdata[3127] */ + { 1564, 0x00000000U, 0x4C0A4B6CU }, /* XSUM_XXH32_testdata[3128] */ + { 1564, 0x9E3779B1U, 0x57529A30U }, /* XSUM_XXH32_testdata[3129] */ + { 1565, 0x00000000U, 0x5A136E53U }, /* XSUM_XXH32_testdata[3130] */ + { 1565, 0x9E3779B1U, 0xE07A7093U }, /* XSUM_XXH32_testdata[3131] */ + { 1566, 0x00000000U, 0x3E12759FU }, /* XSUM_XXH32_testdata[3132] */ + { 1566, 0x9E3779B1U, 0xCE2C10E2U }, /* XSUM_XXH32_testdata[3133] */ + { 1567, 0x00000000U, 0x6C45240DU }, /* XSUM_XXH32_testdata[3134] */ + { 1567, 0x9E3779B1U, 0x80B2D8D4U }, /* XSUM_XXH32_testdata[3135] */ + { 1568, 0x00000000U, 0xC345288AU }, /* XSUM_XXH32_testdata[3136] */ + { 1568, 0x9E3779B1U, 0x61A52DC6U }, /* XSUM_XXH32_testdata[3137] */ + { 1569, 0x00000000U, 0x941F7F2AU }, /* XSUM_XXH32_testdata[3138] */ + { 1569, 0x9E3779B1U, 0xAEF866E2U }, /* XSUM_XXH32_testdata[3139] */ + { 1570, 0x00000000U, 0x5AC3E1E9U }, /* XSUM_XXH32_testdata[3140] */ + { 1570, 0x9E3779B1U, 0x82C08BD8U }, /* XSUM_XXH32_testdata[3141] */ + { 1571, 0x00000000U, 0xE83EE277U }, /* XSUM_XXH32_testdata[3142] */ + { 1571, 0x9E3779B1U, 0xEDEE8879U }, /* XSUM_XXH32_testdata[3143] */ + { 1572, 0x00000000U, 0xE74B6772U }, /* XSUM_XXH32_testdata[3144] */ + { 1572, 0x9E3779B1U, 0xF3A1613FU }, /* XSUM_XXH32_testdata[3145] */ + { 1573, 0x00000000U, 0xA76838E6U }, /* XSUM_XXH32_testdata[3146] */ + { 1573, 0x9E3779B1U, 0x6D41138BU }, /* XSUM_XXH32_testdata[3147] */ + { 1574, 0x00000000U, 0x0A8F13C0U }, /* XSUM_XXH32_testdata[3148] */ + { 1574, 0x9E3779B1U, 0x612E7A18U }, /* XSUM_XXH32_testdata[3149] */ + { 1575, 0x00000000U, 0xF5AF3C9FU }, /* XSUM_XXH32_testdata[3150] */ + { 1575, 0x9E3779B1U, 0x3B7FA341U }, /* XSUM_XXH32_testdata[3151] */ + { 1576, 0x00000000U, 0xD27B3DCEU }, /* XSUM_XXH32_testdata[3152] */ + { 1576, 0x9E3779B1U, 0x1F31D76DU }, /* XSUM_XXH32_testdata[3153] */ + { 1577, 0x00000000U, 0xB55D9484U }, /* XSUM_XXH32_testdata[3154] */ + { 1577, 0x9E3779B1U, 0x46B6C803U }, /* XSUM_XXH32_testdata[3155] */ + { 1578, 0x00000000U, 0x3752DBDDU }, /* XSUM_XXH32_testdata[3156] */ + { 1578, 0x9E3779B1U, 0x247E932FU }, /* XSUM_XXH32_testdata[3157] */ + { 1579, 0x00000000U, 0x912CDF3DU }, /* XSUM_XXH32_testdata[3158] */ + { 1579, 0x9E3779B1U, 0x9836AF33U }, /* XSUM_XXH32_testdata[3159] */ + { 1580, 0x00000000U, 0xA9DE063CU }, /* XSUM_XXH32_testdata[3160] */ + { 1580, 0x9E3779B1U, 0xF4EE7FA9U }, /* XSUM_XXH32_testdata[3161] */ + { 1581, 0x00000000U, 0x06749F4FU }, /* XSUM_XXH32_testdata[3162] */ + { 1581, 0x9E3779B1U, 0xFCC5252DU }, /* XSUM_XXH32_testdata[3163] */ + { 1582, 0x00000000U, 0x5DC1592BU }, /* XSUM_XXH32_testdata[3164] */ + { 1582, 0x9E3779B1U, 0xFF68F018U }, /* XSUM_XXH32_testdata[3165] */ + { 1583, 0x00000000U, 0x743D7A27U }, /* XSUM_XXH32_testdata[3166] */ + { 1583, 0x9E3779B1U, 0xAAEF044BU }, /* XSUM_XXH32_testdata[3167] */ + { 1584, 0x00000000U, 0xD5404470U }, /* XSUM_XXH32_testdata[3168] */ + { 1584, 0x9E3779B1U, 0xF132B470U }, /* XSUM_XXH32_testdata[3169] */ + { 1585, 0x00000000U, 0xDA7360D4U }, /* XSUM_XXH32_testdata[3170] */ + { 1585, 0x9E3779B1U, 0x1EC1B37EU }, /* XSUM_XXH32_testdata[3171] */ + { 1586, 0x00000000U, 0x445FB92CU }, /* XSUM_XXH32_testdata[3172] */ + { 1586, 0x9E3779B1U, 0x7481A47FU }, /* XSUM_XXH32_testdata[3173] */ + { 1587, 0x00000000U, 0x5BD2477EU }, /* XSUM_XXH32_testdata[3174] */ + { 1587, 0x9E3779B1U, 0xD4489185U }, /* XSUM_XXH32_testdata[3175] */ + { 1588, 0x00000000U, 0x7DD85E84U }, /* XSUM_XXH32_testdata[3176] */ + { 1588, 0x9E3779B1U, 0xEA64C606U }, /* XSUM_XXH32_testdata[3177] */ + { 1589, 0x00000000U, 0x903FC496U }, /* XSUM_XXH32_testdata[3178] */ + { 1589, 0x9E3779B1U, 0x825283F5U }, /* XSUM_XXH32_testdata[3179] */ + { 1590, 0x00000000U, 0x81277601U }, /* XSUM_XXH32_testdata[3180] */ + { 1590, 0x9E3779B1U, 0x27B1C618U }, /* XSUM_XXH32_testdata[3181] */ + { 1591, 0x00000000U, 0x07B54E36U }, /* XSUM_XXH32_testdata[3182] */ + { 1591, 0x9E3779B1U, 0x5DAB41E4U }, /* XSUM_XXH32_testdata[3183] */ + { 1592, 0x00000000U, 0x62DFFFF5U }, /* XSUM_XXH32_testdata[3184] */ + { 1592, 0x9E3779B1U, 0x3DCF3AA5U }, /* XSUM_XXH32_testdata[3185] */ + { 1593, 0x00000000U, 0xF3330310U }, /* XSUM_XXH32_testdata[3186] */ + { 1593, 0x9E3779B1U, 0x3FC691CBU }, /* XSUM_XXH32_testdata[3187] */ + { 1594, 0x00000000U, 0xDEEEDC03U }, /* XSUM_XXH32_testdata[3188] */ + { 1594, 0x9E3779B1U, 0xA95E5A7DU }, /* XSUM_XXH32_testdata[3189] */ + { 1595, 0x00000000U, 0x2EE08B7FU }, /* XSUM_XXH32_testdata[3190] */ + { 1595, 0x9E3779B1U, 0x88555D5BU }, /* XSUM_XXH32_testdata[3191] */ + { 1596, 0x00000000U, 0xC4578E00U }, /* XSUM_XXH32_testdata[3192] */ + { 1596, 0x9E3779B1U, 0xBB0305A3U }, /* XSUM_XXH32_testdata[3193] */ + { 1597, 0x00000000U, 0xDE6AE940U }, /* XSUM_XXH32_testdata[3194] */ + { 1597, 0x9E3779B1U, 0x2BA92E4EU }, /* XSUM_XXH32_testdata[3195] */ + { 1598, 0x00000000U, 0x792980E1U }, /* XSUM_XXH32_testdata[3196] */ + { 1598, 0x9E3779B1U, 0x0ED42502U }, /* XSUM_XXH32_testdata[3197] */ + { 1599, 0x00000000U, 0x24F0A805U }, /* XSUM_XXH32_testdata[3198] */ + { 1599, 0x9E3779B1U, 0x199FF9E1U }, /* XSUM_XXH32_testdata[3199] */ + { 1600, 0x00000000U, 0x69C3E0B8U }, /* XSUM_XXH32_testdata[3200] */ + { 1600, 0x9E3779B1U, 0xE6E788CAU }, /* XSUM_XXH32_testdata[3201] */ + { 1601, 0x00000000U, 0x22AC8B9AU }, /* XSUM_XXH32_testdata[3202] */ + { 1601, 0x9E3779B1U, 0x31651B71U }, /* XSUM_XXH32_testdata[3203] */ + { 1602, 0x00000000U, 0x98B5775BU }, /* XSUM_XXH32_testdata[3204] */ + { 1602, 0x9E3779B1U, 0xFFDBEAF5U }, /* XSUM_XXH32_testdata[3205] */ + { 1603, 0x00000000U, 0x53229D3EU }, /* XSUM_XXH32_testdata[3206] */ + { 1603, 0x9E3779B1U, 0xAEA4EA2BU }, /* XSUM_XXH32_testdata[3207] */ + { 1604, 0x00000000U, 0xC0BEAF77U }, /* XSUM_XXH32_testdata[3208] */ + { 1604, 0x9E3779B1U, 0x2E8891E7U }, /* XSUM_XXH32_testdata[3209] */ + { 1605, 0x00000000U, 0x62124272U }, /* XSUM_XXH32_testdata[3210] */ + { 1605, 0x9E3779B1U, 0x4FE4E574U }, /* XSUM_XXH32_testdata[3211] */ + { 1606, 0x00000000U, 0x70586C78U }, /* XSUM_XXH32_testdata[3212] */ + { 1606, 0x9E3779B1U, 0xF068C21FU }, /* XSUM_XXH32_testdata[3213] */ + { 1607, 0x00000000U, 0xEE89B69AU }, /* XSUM_XXH32_testdata[3214] */ + { 1607, 0x9E3779B1U, 0x723FAE30U }, /* XSUM_XXH32_testdata[3215] */ + { 1608, 0x00000000U, 0x9ADB5F45U }, /* XSUM_XXH32_testdata[3216] */ + { 1608, 0x9E3779B1U, 0xDDE5745AU }, /* XSUM_XXH32_testdata[3217] */ + { 1609, 0x00000000U, 0x8FA79B0DU }, /* XSUM_XXH32_testdata[3218] */ + { 1609, 0x9E3779B1U, 0x7C99609CU }, /* XSUM_XXH32_testdata[3219] */ + { 1610, 0x00000000U, 0x16B32173U }, /* XSUM_XXH32_testdata[3220] */ + { 1610, 0x9E3779B1U, 0x0497F374U }, /* XSUM_XXH32_testdata[3221] */ + { 1611, 0x00000000U, 0xCBA2143CU }, /* XSUM_XXH32_testdata[3222] */ + { 1611, 0x9E3779B1U, 0xDF9010FEU }, /* XSUM_XXH32_testdata[3223] */ + { 1612, 0x00000000U, 0xADE62487U }, /* XSUM_XXH32_testdata[3224] */ + { 1612, 0x9E3779B1U, 0xB44C25B3U }, /* XSUM_XXH32_testdata[3225] */ + { 1613, 0x00000000U, 0x452CEDE9U }, /* XSUM_XXH32_testdata[3226] */ + { 1613, 0x9E3779B1U, 0xF9AC73F0U }, /* XSUM_XXH32_testdata[3227] */ + { 1614, 0x00000000U, 0xCC64BBE5U }, /* XSUM_XXH32_testdata[3228] */ + { 1614, 0x9E3779B1U, 0x51E6057AU }, /* XSUM_XXH32_testdata[3229] */ + { 1615, 0x00000000U, 0x4320809CU }, /* XSUM_XXH32_testdata[3230] */ + { 1615, 0x9E3779B1U, 0x8388B4D2U }, /* XSUM_XXH32_testdata[3231] */ + { 1616, 0x00000000U, 0x93DF3953U }, /* XSUM_XXH32_testdata[3232] */ + { 1616, 0x9E3779B1U, 0x671A3AACU }, /* XSUM_XXH32_testdata[3233] */ + { 1617, 0x00000000U, 0x04202C23U }, /* XSUM_XXH32_testdata[3234] */ + { 1617, 0x9E3779B1U, 0x413FC0A0U }, /* XSUM_XXH32_testdata[3235] */ + { 1618, 0x00000000U, 0x361C6485U }, /* XSUM_XXH32_testdata[3236] */ + { 1618, 0x9E3779B1U, 0xF8111A49U }, /* XSUM_XXH32_testdata[3237] */ + { 1619, 0x00000000U, 0x8A111046U }, /* XSUM_XXH32_testdata[3238] */ + { 1619, 0x9E3779B1U, 0x48044B1DU }, /* XSUM_XXH32_testdata[3239] */ + { 1620, 0x00000000U, 0x13D4185AU }, /* XSUM_XXH32_testdata[3240] */ + { 1620, 0x9E3779B1U, 0xE93AD7B2U }, /* XSUM_XXH32_testdata[3241] */ + { 1621, 0x00000000U, 0x5153C5C2U }, /* XSUM_XXH32_testdata[3242] */ + { 1621, 0x9E3779B1U, 0xCB800472U }, /* XSUM_XXH32_testdata[3243] */ + { 1622, 0x00000000U, 0x269D3B69U }, /* XSUM_XXH32_testdata[3244] */ + { 1622, 0x9E3779B1U, 0xCDE65B27U }, /* XSUM_XXH32_testdata[3245] */ + { 1623, 0x00000000U, 0x66377C72U }, /* XSUM_XXH32_testdata[3246] */ + { 1623, 0x9E3779B1U, 0x810A240DU }, /* XSUM_XXH32_testdata[3247] */ + { 1624, 0x00000000U, 0x6C594B68U }, /* XSUM_XXH32_testdata[3248] */ + { 1624, 0x9E3779B1U, 0x0EB0699DU }, /* XSUM_XXH32_testdata[3249] */ + { 1625, 0x00000000U, 0x9A5DC06AU }, /* XSUM_XXH32_testdata[3250] */ + { 1625, 0x9E3779B1U, 0xDCC172F6U }, /* XSUM_XXH32_testdata[3251] */ + { 1626, 0x00000000U, 0x0C1B45B9U }, /* XSUM_XXH32_testdata[3252] */ + { 1626, 0x9E3779B1U, 0x34CC574DU }, /* XSUM_XXH32_testdata[3253] */ + { 1627, 0x00000000U, 0x310CBE13U }, /* XSUM_XXH32_testdata[3254] */ + { 1627, 0x9E3779B1U, 0xA9CB0D8AU }, /* XSUM_XXH32_testdata[3255] */ + { 1628, 0x00000000U, 0xEDFF967DU }, /* XSUM_XXH32_testdata[3256] */ + { 1628, 0x9E3779B1U, 0x8ED7DEA9U }, /* XSUM_XXH32_testdata[3257] */ + { 1629, 0x00000000U, 0x651BF2CCU }, /* XSUM_XXH32_testdata[3258] */ + { 1629, 0x9E3779B1U, 0x119A0D04U }, /* XSUM_XXH32_testdata[3259] */ + { 1630, 0x00000000U, 0x71D3637AU }, /* XSUM_XXH32_testdata[3260] */ + { 1630, 0x9E3779B1U, 0x50D31238U }, /* XSUM_XXH32_testdata[3261] */ + { 1631, 0x00000000U, 0x67842A4CU }, /* XSUM_XXH32_testdata[3262] */ + { 1631, 0x9E3779B1U, 0x78723313U }, /* XSUM_XXH32_testdata[3263] */ + { 1632, 0x00000000U, 0x317673D3U }, /* XSUM_XXH32_testdata[3264] */ + { 1632, 0x9E3779B1U, 0xBA999B66U }, /* XSUM_XXH32_testdata[3265] */ + { 1633, 0x00000000U, 0xF9327254U }, /* XSUM_XXH32_testdata[3266] */ + { 1633, 0x9E3779B1U, 0xA929E8BFU }, /* XSUM_XXH32_testdata[3267] */ + { 1634, 0x00000000U, 0x4A8CEBC0U }, /* XSUM_XXH32_testdata[3268] */ + { 1634, 0x9E3779B1U, 0xD7871C32U }, /* XSUM_XXH32_testdata[3269] */ + { 1635, 0x00000000U, 0x2C3EAE94U }, /* XSUM_XXH32_testdata[3270] */ + { 1635, 0x9E3779B1U, 0x9621F9C9U }, /* XSUM_XXH32_testdata[3271] */ + { 1636, 0x00000000U, 0x3A9F4086U }, /* XSUM_XXH32_testdata[3272] */ + { 1636, 0x9E3779B1U, 0x1FB22723U }, /* XSUM_XXH32_testdata[3273] */ + { 1637, 0x00000000U, 0x4E05810FU }, /* XSUM_XXH32_testdata[3274] */ + { 1637, 0x9E3779B1U, 0xA3FD1E61U }, /* XSUM_XXH32_testdata[3275] */ + { 1638, 0x00000000U, 0x20673048U }, /* XSUM_XXH32_testdata[3276] */ + { 1638, 0x9E3779B1U, 0xE63ECC6EU }, /* XSUM_XXH32_testdata[3277] */ + { 1639, 0x00000000U, 0x78D87CC7U }, /* XSUM_XXH32_testdata[3278] */ + { 1639, 0x9E3779B1U, 0x05F211C2U }, /* XSUM_XXH32_testdata[3279] */ + { 1640, 0x00000000U, 0xDD0E43C9U }, /* XSUM_XXH32_testdata[3280] */ + { 1640, 0x9E3779B1U, 0x80F9B51CU }, /* XSUM_XXH32_testdata[3281] */ + { 1641, 0x00000000U, 0xEFE929FEU }, /* XSUM_XXH32_testdata[3282] */ + { 1641, 0x9E3779B1U, 0x061AD4EDU }, /* XSUM_XXH32_testdata[3283] */ + { 1642, 0x00000000U, 0x8F7B4847U }, /* XSUM_XXH32_testdata[3284] */ + { 1642, 0x9E3779B1U, 0x569C592AU }, /* XSUM_XXH32_testdata[3285] */ + { 1643, 0x00000000U, 0xC3378BE1U }, /* XSUM_XXH32_testdata[3286] */ + { 1643, 0x9E3779B1U, 0x55CC7380U }, /* XSUM_XXH32_testdata[3287] */ + { 1644, 0x00000000U, 0x664C36C2U }, /* XSUM_XXH32_testdata[3288] */ + { 1644, 0x9E3779B1U, 0x81CC0C9DU }, /* XSUM_XXH32_testdata[3289] */ + { 1645, 0x00000000U, 0xF33D179FU }, /* XSUM_XXH32_testdata[3290] */ + { 1645, 0x9E3779B1U, 0xA233BFEAU }, /* XSUM_XXH32_testdata[3291] */ + { 1646, 0x00000000U, 0x6818BCFBU }, /* XSUM_XXH32_testdata[3292] */ + { 1646, 0x9E3779B1U, 0xAD02A241U }, /* XSUM_XXH32_testdata[3293] */ + { 1647, 0x00000000U, 0xDFEDABA5U }, /* XSUM_XXH32_testdata[3294] */ + { 1647, 0x9E3779B1U, 0xFEF25E03U }, /* XSUM_XXH32_testdata[3295] */ + { 1648, 0x00000000U, 0x5AB37E18U }, /* XSUM_XXH32_testdata[3296] */ + { 1648, 0x9E3779B1U, 0x4F27E3E9U }, /* XSUM_XXH32_testdata[3297] */ + { 1649, 0x00000000U, 0x64272622U }, /* XSUM_XXH32_testdata[3298] */ + { 1649, 0x9E3779B1U, 0x538E70B4U }, /* XSUM_XXH32_testdata[3299] */ + { 1650, 0x00000000U, 0xCCD30467U }, /* XSUM_XXH32_testdata[3300] */ + { 1650, 0x9E3779B1U, 0xD2E7EF12U }, /* XSUM_XXH32_testdata[3301] */ + { 1651, 0x00000000U, 0xBAF49CE7U }, /* XSUM_XXH32_testdata[3302] */ + { 1651, 0x9E3779B1U, 0x05D32855U }, /* XSUM_XXH32_testdata[3303] */ + { 1652, 0x00000000U, 0x7AA0EDE0U }, /* XSUM_XXH32_testdata[3304] */ + { 1652, 0x9E3779B1U, 0xC7605BC2U }, /* XSUM_XXH32_testdata[3305] */ + { 1653, 0x00000000U, 0x27455A35U }, /* XSUM_XXH32_testdata[3306] */ + { 1653, 0x9E3779B1U, 0xCB4D341DU }, /* XSUM_XXH32_testdata[3307] */ + { 1654, 0x00000000U, 0x59C4E522U }, /* XSUM_XXH32_testdata[3308] */ + { 1654, 0x9E3779B1U, 0x1F3255BEU }, /* XSUM_XXH32_testdata[3309] */ + { 1655, 0x00000000U, 0x9CFAFF1DU }, /* XSUM_XXH32_testdata[3310] */ + { 1655, 0x9E3779B1U, 0x4CB680F2U }, /* XSUM_XXH32_testdata[3311] */ + { 1656, 0x00000000U, 0x5B310E7FU }, /* XSUM_XXH32_testdata[3312] */ + { 1656, 0x9E3779B1U, 0x9B4C866FU }, /* XSUM_XXH32_testdata[3313] */ + { 1657, 0x00000000U, 0x17AC02D8U }, /* XSUM_XXH32_testdata[3314] */ + { 1657, 0x9E3779B1U, 0xB31D5FFFU }, /* XSUM_XXH32_testdata[3315] */ + { 1658, 0x00000000U, 0x5B6F4445U }, /* XSUM_XXH32_testdata[3316] */ + { 1658, 0x9E3779B1U, 0xD29EC0B9U }, /* XSUM_XXH32_testdata[3317] */ + { 1659, 0x00000000U, 0xCC11B11FU }, /* XSUM_XXH32_testdata[3318] */ + { 1659, 0x9E3779B1U, 0x4F398D58U }, /* XSUM_XXH32_testdata[3319] */ + { 1660, 0x00000000U, 0x33E681A4U }, /* XSUM_XXH32_testdata[3320] */ + { 1660, 0x9E3779B1U, 0x2C1373E0U }, /* XSUM_XXH32_testdata[3321] */ + { 1661, 0x00000000U, 0x60E1313DU }, /* XSUM_XXH32_testdata[3322] */ + { 1661, 0x9E3779B1U, 0x822F8D03U }, /* XSUM_XXH32_testdata[3323] */ + { 1662, 0x00000000U, 0x62A047B0U }, /* XSUM_XXH32_testdata[3324] */ + { 1662, 0x9E3779B1U, 0x46A24926U }, /* XSUM_XXH32_testdata[3325] */ + { 1663, 0x00000000U, 0x3012204EU }, /* XSUM_XXH32_testdata[3326] */ + { 1663, 0x9E3779B1U, 0x7169EF8BU }, /* XSUM_XXH32_testdata[3327] */ + { 1664, 0x00000000U, 0x408F3A81U }, /* XSUM_XXH32_testdata[3328] */ + { 1664, 0x9E3779B1U, 0x7C50BB58U }, /* XSUM_XXH32_testdata[3329] */ + { 1665, 0x00000000U, 0x6C39225AU }, /* XSUM_XXH32_testdata[3330] */ + { 1665, 0x9E3779B1U, 0xB669E5A9U }, /* XSUM_XXH32_testdata[3331] */ + { 1666, 0x00000000U, 0x599550BBU }, /* XSUM_XXH32_testdata[3332] */ + { 1666, 0x9E3779B1U, 0x65003175U }, /* XSUM_XXH32_testdata[3333] */ + { 1667, 0x00000000U, 0xD404013CU }, /* XSUM_XXH32_testdata[3334] */ + { 1667, 0x9E3779B1U, 0x60DFC657U }, /* XSUM_XXH32_testdata[3335] */ + { 1668, 0x00000000U, 0xCD4EBD76U }, /* XSUM_XXH32_testdata[3336] */ + { 1668, 0x9E3779B1U, 0x72EA10FEU }, /* XSUM_XXH32_testdata[3337] */ + { 1669, 0x00000000U, 0xA679D904U }, /* XSUM_XXH32_testdata[3338] */ + { 1669, 0x9E3779B1U, 0x37B164BAU }, /* XSUM_XXH32_testdata[3339] */ + { 1670, 0x00000000U, 0x4DB14B0FU }, /* XSUM_XXH32_testdata[3340] */ + { 1670, 0x9E3779B1U, 0xF5DC18A1U }, /* XSUM_XXH32_testdata[3341] */ + { 1671, 0x00000000U, 0xB096F444U }, /* XSUM_XXH32_testdata[3342] */ + { 1671, 0x9E3779B1U, 0xEFFB5BEFU }, /* XSUM_XXH32_testdata[3343] */ + { 1672, 0x00000000U, 0x81FCEF81U }, /* XSUM_XXH32_testdata[3344] */ + { 1672, 0x9E3779B1U, 0x8D2965EBU }, /* XSUM_XXH32_testdata[3345] */ + { 1673, 0x00000000U, 0x8265AD62U }, /* XSUM_XXH32_testdata[3346] */ + { 1673, 0x9E3779B1U, 0x49271FBEU }, /* XSUM_XXH32_testdata[3347] */ + { 1674, 0x00000000U, 0x8E7C7FF9U }, /* XSUM_XXH32_testdata[3348] */ + { 1674, 0x9E3779B1U, 0xADEB3401U }, /* XSUM_XXH32_testdata[3349] */ + { 1675, 0x00000000U, 0x9A5E2DA0U }, /* XSUM_XXH32_testdata[3350] */ + { 1675, 0x9E3779B1U, 0xEC9D7A32U }, /* XSUM_XXH32_testdata[3351] */ + { 1676, 0x00000000U, 0x68E9E370U }, /* XSUM_XXH32_testdata[3352] */ + { 1676, 0x9E3779B1U, 0xDB6F560BU }, /* XSUM_XXH32_testdata[3353] */ + { 1677, 0x00000000U, 0x8E02268DU }, /* XSUM_XXH32_testdata[3354] */ + { 1677, 0x9E3779B1U, 0x0B56E3D6U }, /* XSUM_XXH32_testdata[3355] */ + { 1678, 0x00000000U, 0x45CC6C57U }, /* XSUM_XXH32_testdata[3356] */ + { 1678, 0x9E3779B1U, 0xCC9779C0U }, /* XSUM_XXH32_testdata[3357] */ + { 1679, 0x00000000U, 0x2324FBA7U }, /* XSUM_XXH32_testdata[3358] */ + { 1679, 0x9E3779B1U, 0x244537E0U }, /* XSUM_XXH32_testdata[3359] */ + { 1680, 0x00000000U, 0xC62F556DU }, /* XSUM_XXH32_testdata[3360] */ + { 1680, 0x9E3779B1U, 0x9B94A640U }, /* XSUM_XXH32_testdata[3361] */ + { 1681, 0x00000000U, 0x681F98E5U }, /* XSUM_XXH32_testdata[3362] */ + { 1681, 0x9E3779B1U, 0x17D4BAEAU }, /* XSUM_XXH32_testdata[3363] */ + { 1682, 0x00000000U, 0x99E09BB2U }, /* XSUM_XXH32_testdata[3364] */ + { 1682, 0x9E3779B1U, 0xF72A51BAU }, /* XSUM_XXH32_testdata[3365] */ + { 1683, 0x00000000U, 0x042B1A8DU }, /* XSUM_XXH32_testdata[3366] */ + { 1683, 0x9E3779B1U, 0xD0CAD102U }, /* XSUM_XXH32_testdata[3367] */ + { 1684, 0x00000000U, 0x82EB1661U }, /* XSUM_XXH32_testdata[3368] */ + { 1684, 0x9E3779B1U, 0x82776D3AU }, /* XSUM_XXH32_testdata[3369] */ + { 1685, 0x00000000U, 0x3E97EED3U }, /* XSUM_XXH32_testdata[3370] */ + { 1685, 0x9E3779B1U, 0xE5135CF4U }, /* XSUM_XXH32_testdata[3371] */ + { 1686, 0x00000000U, 0x3D0D6E6DU }, /* XSUM_XXH32_testdata[3372] */ + { 1686, 0x9E3779B1U, 0x9809AEAFU }, /* XSUM_XXH32_testdata[3373] */ + { 1687, 0x00000000U, 0x615E6059U }, /* XSUM_XXH32_testdata[3374] */ + { 1687, 0x9E3779B1U, 0xCCFCDC15U }, /* XSUM_XXH32_testdata[3375] */ + { 1688, 0x00000000U, 0x3B63CFFAU }, /* XSUM_XXH32_testdata[3376] */ + { 1688, 0x9E3779B1U, 0xA2D1E698U }, /* XSUM_XXH32_testdata[3377] */ + { 1689, 0x00000000U, 0xCA855ACEU }, /* XSUM_XXH32_testdata[3378] */ + { 1689, 0x9E3779B1U, 0xE49B6DF2U }, /* XSUM_XXH32_testdata[3379] */ + { 1690, 0x00000000U, 0xDAD3ECACU }, /* XSUM_XXH32_testdata[3380] */ + { 1690, 0x9E3779B1U, 0xFE88C14AU }, /* XSUM_XXH32_testdata[3381] */ + { 1691, 0x00000000U, 0x52FA0946U }, /* XSUM_XXH32_testdata[3382] */ + { 1691, 0x9E3779B1U, 0x1A782519U }, /* XSUM_XXH32_testdata[3383] */ + { 1692, 0x00000000U, 0xFDB31695U }, /* XSUM_XXH32_testdata[3384] */ + { 1692, 0x9E3779B1U, 0xF7CBB51DU }, /* XSUM_XXH32_testdata[3385] */ + { 1693, 0x00000000U, 0xE9D5F2BAU }, /* XSUM_XXH32_testdata[3386] */ + { 1693, 0x9E3779B1U, 0x99A31C9BU }, /* XSUM_XXH32_testdata[3387] */ + { 1694, 0x00000000U, 0x5459DBAFU }, /* XSUM_XXH32_testdata[3388] */ + { 1694, 0x9E3779B1U, 0xDBBCD8B0U }, /* XSUM_XXH32_testdata[3389] */ + { 1695, 0x00000000U, 0xBA88B7F2U }, /* XSUM_XXH32_testdata[3390] */ + { 1695, 0x9E3779B1U, 0xB0FC5975U }, /* XSUM_XXH32_testdata[3391] */ + { 1696, 0x00000000U, 0x542E753BU }, /* XSUM_XXH32_testdata[3392] */ + { 1696, 0x9E3779B1U, 0x6F41F0EAU }, /* XSUM_XXH32_testdata[3393] */ + { 1697, 0x00000000U, 0xD747761AU }, /* XSUM_XXH32_testdata[3394] */ + { 1697, 0x9E3779B1U, 0x46E6312CU }, /* XSUM_XXH32_testdata[3395] */ + { 1698, 0x00000000U, 0x9548110BU }, /* XSUM_XXH32_testdata[3396] */ + { 1698, 0x9E3779B1U, 0xA42C1D06U }, /* XSUM_XXH32_testdata[3397] */ + { 1699, 0x00000000U, 0x2CF0AAE6U }, /* XSUM_XXH32_testdata[3398] */ + { 1699, 0x9E3779B1U, 0x10780840U }, /* XSUM_XXH32_testdata[3399] */ + { 1700, 0x00000000U, 0xA6AA95F5U }, /* XSUM_XXH32_testdata[3400] */ + { 1700, 0x9E3779B1U, 0xE9B158A6U }, /* XSUM_XXH32_testdata[3401] */ + { 1701, 0x00000000U, 0x5A9A645CU }, /* XSUM_XXH32_testdata[3402] */ + { 1701, 0x9E3779B1U, 0x3BAE2478U }, /* XSUM_XXH32_testdata[3403] */ + { 1702, 0x00000000U, 0x192C8773U }, /* XSUM_XXH32_testdata[3404] */ + { 1702, 0x9E3779B1U, 0xBD13D3E0U }, /* XSUM_XXH32_testdata[3405] */ + { 1703, 0x00000000U, 0xD5B93B41U }, /* XSUM_XXH32_testdata[3406] */ + { 1703, 0x9E3779B1U, 0xEB0829E6U }, /* XSUM_XXH32_testdata[3407] */ + { 1704, 0x00000000U, 0xF7C7918FU }, /* XSUM_XXH32_testdata[3408] */ + { 1704, 0x9E3779B1U, 0x680E768AU }, /* XSUM_XXH32_testdata[3409] */ + { 1705, 0x00000000U, 0x2372E6A7U }, /* XSUM_XXH32_testdata[3410] */ + { 1705, 0x9E3779B1U, 0x6F0D01F4U }, /* XSUM_XXH32_testdata[3411] */ + { 1706, 0x00000000U, 0x990AAEB1U }, /* XSUM_XXH32_testdata[3412] */ + { 1706, 0x9E3779B1U, 0xF97347BEU }, /* XSUM_XXH32_testdata[3413] */ + { 1707, 0x00000000U, 0xF3E40C65U }, /* XSUM_XXH32_testdata[3414] */ + { 1707, 0x9E3779B1U, 0x8D0EBE91U }, /* XSUM_XXH32_testdata[3415] */ + { 1708, 0x00000000U, 0xCC7C23B9U }, /* XSUM_XXH32_testdata[3416] */ + { 1708, 0x9E3779B1U, 0xBE9A8B09U }, /* XSUM_XXH32_testdata[3417] */ + { 1709, 0x00000000U, 0x9CA6781BU }, /* XSUM_XXH32_testdata[3418] */ + { 1709, 0x9E3779B1U, 0x1A91A40BU }, /* XSUM_XXH32_testdata[3419] */ + { 1710, 0x00000000U, 0xB05A9E99U }, /* XSUM_XXH32_testdata[3420] */ + { 1710, 0x9E3779B1U, 0x64C37B87U }, /* XSUM_XXH32_testdata[3421] */ + { 1711, 0x00000000U, 0x97D3C609U }, /* XSUM_XXH32_testdata[3422] */ + { 1711, 0x9E3779B1U, 0x333DD359U }, /* XSUM_XXH32_testdata[3423] */ + { 1712, 0x00000000U, 0x7DE5FD3CU }, /* XSUM_XXH32_testdata[3424] */ + { 1712, 0x9E3779B1U, 0x574A505AU }, /* XSUM_XXH32_testdata[3425] */ + { 1713, 0x00000000U, 0xBD7B8FF1U }, /* XSUM_XXH32_testdata[3426] */ + { 1713, 0x9E3779B1U, 0x99E5EC63U }, /* XSUM_XXH32_testdata[3427] */ + { 1714, 0x00000000U, 0x5041BAB5U }, /* XSUM_XXH32_testdata[3428] */ + { 1714, 0x9E3779B1U, 0x2300775CU }, /* XSUM_XXH32_testdata[3429] */ + { 1715, 0x00000000U, 0xDB53444BU }, /* XSUM_XXH32_testdata[3430] */ + { 1715, 0x9E3779B1U, 0x0BB5DBF6U }, /* XSUM_XXH32_testdata[3431] */ + { 1716, 0x00000000U, 0x01921E73U }, /* XSUM_XXH32_testdata[3432] */ + { 1716, 0x9E3779B1U, 0xF334E07BU }, /* XSUM_XXH32_testdata[3433] */ + { 1717, 0x00000000U, 0xC33C0305U }, /* XSUM_XXH32_testdata[3434] */ + { 1717, 0x9E3779B1U, 0xF43B5057U }, /* XSUM_XXH32_testdata[3435] */ + { 1718, 0x00000000U, 0xA4CD39C0U }, /* XSUM_XXH32_testdata[3436] */ + { 1718, 0x9E3779B1U, 0xC4493765U }, /* XSUM_XXH32_testdata[3437] */ + { 1719, 0x00000000U, 0x892D8D24U }, /* XSUM_XXH32_testdata[3438] */ + { 1719, 0x9E3779B1U, 0x7E599228U }, /* XSUM_XXH32_testdata[3439] */ + { 1720, 0x00000000U, 0xFC19B5D6U }, /* XSUM_XXH32_testdata[3440] */ + { 1720, 0x9E3779B1U, 0x8EBD8BA9U }, /* XSUM_XXH32_testdata[3441] */ + { 1721, 0x00000000U, 0x600EDC39U }, /* XSUM_XXH32_testdata[3442] */ + { 1721, 0x9E3779B1U, 0x6F2BAF03U }, /* XSUM_XXH32_testdata[3443] */ + { 1722, 0x00000000U, 0x8C008B7EU }, /* XSUM_XXH32_testdata[3444] */ + { 1722, 0x9E3779B1U, 0xD0009FE0U }, /* XSUM_XXH32_testdata[3445] */ + { 1723, 0x00000000U, 0xDB386119U }, /* XSUM_XXH32_testdata[3446] */ + { 1723, 0x9E3779B1U, 0xA4F84879U }, /* XSUM_XXH32_testdata[3447] */ + { 1724, 0x00000000U, 0xCC3A4EF6U }, /* XSUM_XXH32_testdata[3448] */ + { 1724, 0x9E3779B1U, 0x3DE35C10U }, /* XSUM_XXH32_testdata[3449] */ + { 1725, 0x00000000U, 0xEC3ADBB3U }, /* XSUM_XXH32_testdata[3450] */ + { 1725, 0x9E3779B1U, 0xE9E89B01U }, /* XSUM_XXH32_testdata[3451] */ + { 1726, 0x00000000U, 0xFB3D4CDDU }, /* XSUM_XXH32_testdata[3452] */ + { 1726, 0x9E3779B1U, 0x4D9E72E2U }, /* XSUM_XXH32_testdata[3453] */ + { 1727, 0x00000000U, 0x7EE25B8BU }, /* XSUM_XXH32_testdata[3454] */ + { 1727, 0x9E3779B1U, 0x04D4A624U }, /* XSUM_XXH32_testdata[3455] */ + { 1728, 0x00000000U, 0x24DAB79DU }, /* XSUM_XXH32_testdata[3456] */ + { 1728, 0x9E3779B1U, 0x1DF8B05DU }, /* XSUM_XXH32_testdata[3457] */ + { 1729, 0x00000000U, 0x0F742CEDU }, /* XSUM_XXH32_testdata[3458] */ + { 1729, 0x9E3779B1U, 0x3BCAA4B5U }, /* XSUM_XXH32_testdata[3459] */ + { 1730, 0x00000000U, 0xFF497C79U }, /* XSUM_XXH32_testdata[3460] */ + { 1730, 0x9E3779B1U, 0x3C7DEDCCU }, /* XSUM_XXH32_testdata[3461] */ + { 1731, 0x00000000U, 0x3765E5C4U }, /* XSUM_XXH32_testdata[3462] */ + { 1731, 0x9E3779B1U, 0x59492CF8U }, /* XSUM_XXH32_testdata[3463] */ + { 1732, 0x00000000U, 0x7635BA6EU }, /* XSUM_XXH32_testdata[3464] */ + { 1732, 0x9E3779B1U, 0x0BEBDC87U }, /* XSUM_XXH32_testdata[3465] */ + { 1733, 0x00000000U, 0x19307110U }, /* XSUM_XXH32_testdata[3466] */ + { 1733, 0x9E3779B1U, 0xC3516C3CU }, /* XSUM_XXH32_testdata[3467] */ + { 1734, 0x00000000U, 0xCCEAB411U }, /* XSUM_XXH32_testdata[3468] */ + { 1734, 0x9E3779B1U, 0x74845921U }, /* XSUM_XXH32_testdata[3469] */ + { 1735, 0x00000000U, 0x13D97A5DU }, /* XSUM_XXH32_testdata[3470] */ + { 1735, 0x9E3779B1U, 0x2AE04859U }, /* XSUM_XXH32_testdata[3471] */ + { 1736, 0x00000000U, 0x061C3AE4U }, /* XSUM_XXH32_testdata[3472] */ + { 1736, 0x9E3779B1U, 0x57B7A0BEU }, /* XSUM_XXH32_testdata[3473] */ + { 1737, 0x00000000U, 0x51D52105U }, /* XSUM_XXH32_testdata[3474] */ + { 1737, 0x9E3779B1U, 0x8F0844D0U }, /* XSUM_XXH32_testdata[3475] */ + { 1738, 0x00000000U, 0x98BDFE27U }, /* XSUM_XXH32_testdata[3476] */ + { 1738, 0x9E3779B1U, 0xA9E0EBDEU }, /* XSUM_XXH32_testdata[3477] */ + { 1739, 0x00000000U, 0x763FFEC3U }, /* XSUM_XXH32_testdata[3478] */ + { 1739, 0x9E3779B1U, 0x931260F2U }, /* XSUM_XXH32_testdata[3479] */ + { 1740, 0x00000000U, 0xD1B7D887U }, /* XSUM_XXH32_testdata[3480] */ + { 1740, 0x9E3779B1U, 0x7A9B1234U }, /* XSUM_XXH32_testdata[3481] */ + { 1741, 0x00000000U, 0xD9102280U }, /* XSUM_XXH32_testdata[3482] */ + { 1741, 0x9E3779B1U, 0xDF4A9EE5U }, /* XSUM_XXH32_testdata[3483] */ + { 1742, 0x00000000U, 0x2243E274U }, /* XSUM_XXH32_testdata[3484] */ + { 1742, 0x9E3779B1U, 0xD4C0E6CDU }, /* XSUM_XXH32_testdata[3485] */ + { 1743, 0x00000000U, 0xE7DD634CU }, /* XSUM_XXH32_testdata[3486] */ + { 1743, 0x9E3779B1U, 0x954E5D7CU }, /* XSUM_XXH32_testdata[3487] */ + { 1744, 0x00000000U, 0xBFC75BBAU }, /* XSUM_XXH32_testdata[3488] */ + { 1744, 0x9E3779B1U, 0x168A72BFU }, /* XSUM_XXH32_testdata[3489] */ + { 1745, 0x00000000U, 0x2ED3FFF3U }, /* XSUM_XXH32_testdata[3490] */ + { 1745, 0x9E3779B1U, 0x7A3B8B52U }, /* XSUM_XXH32_testdata[3491] */ + { 1746, 0x00000000U, 0x6E707159U }, /* XSUM_XXH32_testdata[3492] */ + { 1746, 0x9E3779B1U, 0x6094673DU }, /* XSUM_XXH32_testdata[3493] */ + { 1747, 0x00000000U, 0x277394B3U }, /* XSUM_XXH32_testdata[3494] */ + { 1747, 0x9E3779B1U, 0xE99C979CU }, /* XSUM_XXH32_testdata[3495] */ + { 1748, 0x00000000U, 0x53F423D8U }, /* XSUM_XXH32_testdata[3496] */ + { 1748, 0x9E3779B1U, 0xE7A545EFU }, /* XSUM_XXH32_testdata[3497] */ + { 1749, 0x00000000U, 0x630AE151U }, /* XSUM_XXH32_testdata[3498] */ + { 1749, 0x9E3779B1U, 0xFE4E5696U }, /* XSUM_XXH32_testdata[3499] */ + { 1750, 0x00000000U, 0xC5593C27U }, /* XSUM_XXH32_testdata[3500] */ + { 1750, 0x9E3779B1U, 0xB1CA7B86U }, /* XSUM_XXH32_testdata[3501] */ + { 1751, 0x00000000U, 0x5AE5BBB9U }, /* XSUM_XXH32_testdata[3502] */ + { 1751, 0x9E3779B1U, 0x56989C77U }, /* XSUM_XXH32_testdata[3503] */ + { 1752, 0x00000000U, 0x78521C51U }, /* XSUM_XXH32_testdata[3504] */ + { 1752, 0x9E3779B1U, 0x366E0D0CU }, /* XSUM_XXH32_testdata[3505] */ + { 1753, 0x00000000U, 0x6A4BF3BFU }, /* XSUM_XXH32_testdata[3506] */ + { 1753, 0x9E3779B1U, 0x9EDABA80U }, /* XSUM_XXH32_testdata[3507] */ + { 1754, 0x00000000U, 0xB9387E10U }, /* XSUM_XXH32_testdata[3508] */ + { 1754, 0x9E3779B1U, 0x00D382A8U }, /* XSUM_XXH32_testdata[3509] */ + { 1755, 0x00000000U, 0x4A2FD2B4U }, /* XSUM_XXH32_testdata[3510] */ + { 1755, 0x9E3779B1U, 0x9AA8406DU }, /* XSUM_XXH32_testdata[3511] */ + { 1756, 0x00000000U, 0x00C5BC25U }, /* XSUM_XXH32_testdata[3512] */ + { 1756, 0x9E3779B1U, 0xFD11C9F2U }, /* XSUM_XXH32_testdata[3513] */ + { 1757, 0x00000000U, 0xEC01B48EU }, /* XSUM_XXH32_testdata[3514] */ + { 1757, 0x9E3779B1U, 0xEB47E67EU }, /* XSUM_XXH32_testdata[3515] */ + { 1758, 0x00000000U, 0x378AF63AU }, /* XSUM_XXH32_testdata[3516] */ + { 1758, 0x9E3779B1U, 0x16E2DA1CU }, /* XSUM_XXH32_testdata[3517] */ + { 1759, 0x00000000U, 0x2864F6F9U }, /* XSUM_XXH32_testdata[3518] */ + { 1759, 0x9E3779B1U, 0x5F0FBAF9U }, /* XSUM_XXH32_testdata[3519] */ + { 1760, 0x00000000U, 0x55CB3E32U }, /* XSUM_XXH32_testdata[3520] */ + { 1760, 0x9E3779B1U, 0x1748E0A1U }, /* XSUM_XXH32_testdata[3521] */ + { 1761, 0x00000000U, 0x0929BB1EU }, /* XSUM_XXH32_testdata[3522] */ + { 1761, 0x9E3779B1U, 0x0FAFECC7U }, /* XSUM_XXH32_testdata[3523] */ + { 1762, 0x00000000U, 0xE6B5CF33U }, /* XSUM_XXH32_testdata[3524] */ + { 1762, 0x9E3779B1U, 0xF4F85670U }, /* XSUM_XXH32_testdata[3525] */ + { 1763, 0x00000000U, 0x9F1F7730U }, /* XSUM_XXH32_testdata[3526] */ + { 1763, 0x9E3779B1U, 0x01DFC99DU }, /* XSUM_XXH32_testdata[3527] */ + { 1764, 0x00000000U, 0x71DFC0ADU }, /* XSUM_XXH32_testdata[3528] */ + { 1764, 0x9E3779B1U, 0x3B84DE0BU }, /* XSUM_XXH32_testdata[3529] */ + { 1765, 0x00000000U, 0xD3A3110CU }, /* XSUM_XXH32_testdata[3530] */ + { 1765, 0x9E3779B1U, 0xC93FD24EU }, /* XSUM_XXH32_testdata[3531] */ + { 1766, 0x00000000U, 0xC3610593U }, /* XSUM_XXH32_testdata[3532] */ + { 1766, 0x9E3779B1U, 0x312499FAU }, /* XSUM_XXH32_testdata[3533] */ + { 1767, 0x00000000U, 0x68688EBFU }, /* XSUM_XXH32_testdata[3534] */ + { 1767, 0x9E3779B1U, 0x2D91AB3AU }, /* XSUM_XXH32_testdata[3535] */ + { 1768, 0x00000000U, 0xCACAD38CU }, /* XSUM_XXH32_testdata[3536] */ + { 1768, 0x9E3779B1U, 0x7E15B8CDU }, /* XSUM_XXH32_testdata[3537] */ + { 1769, 0x00000000U, 0x58BFB196U }, /* XSUM_XXH32_testdata[3538] */ + { 1769, 0x9E3779B1U, 0x175D758AU }, /* XSUM_XXH32_testdata[3539] */ + { 1770, 0x00000000U, 0x24F3AE05U }, /* XSUM_XXH32_testdata[3540] */ + { 1770, 0x9E3779B1U, 0x81AD7357U }, /* XSUM_XXH32_testdata[3541] */ + { 1771, 0x00000000U, 0xA70DA8D8U }, /* XSUM_XXH32_testdata[3542] */ + { 1771, 0x9E3779B1U, 0xD6AFAB19U }, /* XSUM_XXH32_testdata[3543] */ + { 1772, 0x00000000U, 0xFC2574B0U }, /* XSUM_XXH32_testdata[3544] */ + { 1772, 0x9E3779B1U, 0xE172024BU }, /* XSUM_XXH32_testdata[3545] */ + { 1773, 0x00000000U, 0xF6FDBC2FU }, /* XSUM_XXH32_testdata[3546] */ + { 1773, 0x9E3779B1U, 0xEA6581AEU }, /* XSUM_XXH32_testdata[3547] */ + { 1774, 0x00000000U, 0x35DB2870U }, /* XSUM_XXH32_testdata[3548] */ + { 1774, 0x9E3779B1U, 0x69F112FEU }, /* XSUM_XXH32_testdata[3549] */ + { 1775, 0x00000000U, 0xE6706FFAU }, /* XSUM_XXH32_testdata[3550] */ + { 1775, 0x9E3779B1U, 0x6966DF53U }, /* XSUM_XXH32_testdata[3551] */ + { 1776, 0x00000000U, 0xE877A90AU }, /* XSUM_XXH32_testdata[3552] */ + { 1776, 0x9E3779B1U, 0x29B895B6U }, /* XSUM_XXH32_testdata[3553] */ + { 1777, 0x00000000U, 0xBE2511A5U }, /* XSUM_XXH32_testdata[3554] */ + { 1777, 0x9E3779B1U, 0x39900621U }, /* XSUM_XXH32_testdata[3555] */ + { 1778, 0x00000000U, 0xA165C1D0U }, /* XSUM_XXH32_testdata[3556] */ + { 1778, 0x9E3779B1U, 0x74D4FB26U }, /* XSUM_XXH32_testdata[3557] */ + { 1779, 0x00000000U, 0xA0429FDBU }, /* XSUM_XXH32_testdata[3558] */ + { 1779, 0x9E3779B1U, 0x9C833D53U }, /* XSUM_XXH32_testdata[3559] */ + { 1780, 0x00000000U, 0xE2D89452U }, /* XSUM_XXH32_testdata[3560] */ + { 1780, 0x9E3779B1U, 0x9FC1796DU }, /* XSUM_XXH32_testdata[3561] */ + { 1781, 0x00000000U, 0x4DEB03BDU }, /* XSUM_XXH32_testdata[3562] */ + { 1781, 0x9E3779B1U, 0xC03B780EU }, /* XSUM_XXH32_testdata[3563] */ + { 1782, 0x00000000U, 0x7BA5D015U }, /* XSUM_XXH32_testdata[3564] */ + { 1782, 0x9E3779B1U, 0x82D3F686U }, /* XSUM_XXH32_testdata[3565] */ + { 1783, 0x00000000U, 0xBFC22D50U }, /* XSUM_XXH32_testdata[3566] */ + { 1783, 0x9E3779B1U, 0xBCB54CB7U }, /* XSUM_XXH32_testdata[3567] */ + { 1784, 0x00000000U, 0x13148452U }, /* XSUM_XXH32_testdata[3568] */ + { 1784, 0x9E3779B1U, 0x102E0045U }, /* XSUM_XXH32_testdata[3569] */ + { 1785, 0x00000000U, 0x78100DF0U }, /* XSUM_XXH32_testdata[3570] */ + { 1785, 0x9E3779B1U, 0x5048C9C9U }, /* XSUM_XXH32_testdata[3571] */ + { 1786, 0x00000000U, 0x17DB38E9U }, /* XSUM_XXH32_testdata[3572] */ + { 1786, 0x9E3779B1U, 0x31BF2171U }, /* XSUM_XXH32_testdata[3573] */ + { 1787, 0x00000000U, 0x6629FD8DU }, /* XSUM_XXH32_testdata[3574] */ + { 1787, 0x9E3779B1U, 0x3D471279U }, /* XSUM_XXH32_testdata[3575] */ + { 1788, 0x00000000U, 0xD2113A3BU }, /* XSUM_XXH32_testdata[3576] */ + { 1788, 0x9E3779B1U, 0x53FB034FU }, /* XSUM_XXH32_testdata[3577] */ + { 1789, 0x00000000U, 0xBB1272A4U }, /* XSUM_XXH32_testdata[3578] */ + { 1789, 0x9E3779B1U, 0xAC115D7EU }, /* XSUM_XXH32_testdata[3579] */ + { 1790, 0x00000000U, 0x8B226487U }, /* XSUM_XXH32_testdata[3580] */ + { 1790, 0x9E3779B1U, 0xCEA61776U }, /* XSUM_XXH32_testdata[3581] */ + { 1791, 0x00000000U, 0xD605D290U }, /* XSUM_XXH32_testdata[3582] */ + { 1791, 0x9E3779B1U, 0x1BBC5AFBU }, /* XSUM_XXH32_testdata[3583] */ + { 1792, 0x00000000U, 0xBE8D8D76U }, /* XSUM_XXH32_testdata[3584] */ + { 1792, 0x9E3779B1U, 0x66BA8C59U }, /* XSUM_XXH32_testdata[3585] */ + { 1793, 0x00000000U, 0x14857281U }, /* XSUM_XXH32_testdata[3586] */ + { 1793, 0x9E3779B1U, 0x7A0703D7U }, /* XSUM_XXH32_testdata[3587] */ + { 1794, 0x00000000U, 0x5658F513U }, /* XSUM_XXH32_testdata[3588] */ + { 1794, 0x9E3779B1U, 0x72DC0CFAU }, /* XSUM_XXH32_testdata[3589] */ + { 1795, 0x00000000U, 0x752BEC93U }, /* XSUM_XXH32_testdata[3590] */ + { 1795, 0x9E3779B1U, 0xC0081D69U }, /* XSUM_XXH32_testdata[3591] */ + { 1796, 0x00000000U, 0x6476840BU }, /* XSUM_XXH32_testdata[3592] */ + { 1796, 0x9E3779B1U, 0x7889C41CU }, /* XSUM_XXH32_testdata[3593] */ + { 1797, 0x00000000U, 0x0CFF8F75U }, /* XSUM_XXH32_testdata[3594] */ + { 1797, 0x9E3779B1U, 0x639154B1U }, /* XSUM_XXH32_testdata[3595] */ + { 1798, 0x00000000U, 0xA9C6831CU }, /* XSUM_XXH32_testdata[3596] */ + { 1798, 0x9E3779B1U, 0x71A27D1FU }, /* XSUM_XXH32_testdata[3597] */ + { 1799, 0x00000000U, 0x89CF677AU }, /* XSUM_XXH32_testdata[3598] */ + { 1799, 0x9E3779B1U, 0xBB85DD8EU }, /* XSUM_XXH32_testdata[3599] */ + { 1800, 0x00000000U, 0x1223F2C2U }, /* XSUM_XXH32_testdata[3600] */ + { 1800, 0x9E3779B1U, 0xC1880B38U }, /* XSUM_XXH32_testdata[3601] */ + { 1801, 0x00000000U, 0xB845B8E0U }, /* XSUM_XXH32_testdata[3602] */ + { 1801, 0x9E3779B1U, 0x7C590E01U }, /* XSUM_XXH32_testdata[3603] */ + { 1802, 0x00000000U, 0x2A43CFD1U }, /* XSUM_XXH32_testdata[3604] */ + { 1802, 0x9E3779B1U, 0x015D6FB5U }, /* XSUM_XXH32_testdata[3605] */ + { 1803, 0x00000000U, 0x93B783D2U }, /* XSUM_XXH32_testdata[3606] */ + { 1803, 0x9E3779B1U, 0xE0DBE536U }, /* XSUM_XXH32_testdata[3607] */ + { 1804, 0x00000000U, 0xFEC27017U }, /* XSUM_XXH32_testdata[3608] */ + { 1804, 0x9E3779B1U, 0xA4EA1580U }, /* XSUM_XXH32_testdata[3609] */ + { 1805, 0x00000000U, 0x8CC3CE1AU }, /* XSUM_XXH32_testdata[3610] */ + { 1805, 0x9E3779B1U, 0xBE3AC11DU }, /* XSUM_XXH32_testdata[3611] */ + { 1806, 0x00000000U, 0x51C1FF40U }, /* XSUM_XXH32_testdata[3612] */ + { 1806, 0x9E3779B1U, 0xD340B9A1U }, /* XSUM_XXH32_testdata[3613] */ + { 1807, 0x00000000U, 0x757E3F6BU }, /* XSUM_XXH32_testdata[3614] */ + { 1807, 0x9E3779B1U, 0x2AB07ACDU }, /* XSUM_XXH32_testdata[3615] */ + { 1808, 0x00000000U, 0x23F89184U }, /* XSUM_XXH32_testdata[3616] */ + { 1808, 0x9E3779B1U, 0x87971AC1U }, /* XSUM_XXH32_testdata[3617] */ + { 1809, 0x00000000U, 0xFC2994F1U }, /* XSUM_XXH32_testdata[3618] */ + { 1809, 0x9E3779B1U, 0x9E2FA412U }, /* XSUM_XXH32_testdata[3619] */ + { 1810, 0x00000000U, 0x21881031U }, /* XSUM_XXH32_testdata[3620] */ + { 1810, 0x9E3779B1U, 0xECDB5201U }, /* XSUM_XXH32_testdata[3621] */ + { 1811, 0x00000000U, 0x45CA23E5U }, /* XSUM_XXH32_testdata[3622] */ + { 1811, 0x9E3779B1U, 0xB6344F2AU }, /* XSUM_XXH32_testdata[3623] */ + { 1812, 0x00000000U, 0x786BABFCU }, /* XSUM_XXH32_testdata[3624] */ + { 1812, 0x9E3779B1U, 0x8AC7B376U }, /* XSUM_XXH32_testdata[3625] */ + { 1813, 0x00000000U, 0x7FC15759U }, /* XSUM_XXH32_testdata[3626] */ + { 1813, 0x9E3779B1U, 0x772AB3D6U }, /* XSUM_XXH32_testdata[3627] */ + { 1814, 0x00000000U, 0xAE95D00AU }, /* XSUM_XXH32_testdata[3628] */ + { 1814, 0x9E3779B1U, 0x1A3AADA7U }, /* XSUM_XXH32_testdata[3629] */ + { 1815, 0x00000000U, 0x691FE11BU }, /* XSUM_XXH32_testdata[3630] */ + { 1815, 0x9E3779B1U, 0x454A104CU }, /* XSUM_XXH32_testdata[3631] */ + { 1816, 0x00000000U, 0x879BE524U }, /* XSUM_XXH32_testdata[3632] */ + { 1816, 0x9E3779B1U, 0xD4F14B55U }, /* XSUM_XXH32_testdata[3633] */ + { 1817, 0x00000000U, 0x324367F6U }, /* XSUM_XXH32_testdata[3634] */ + { 1817, 0x9E3779B1U, 0xCD7C3424U }, /* XSUM_XXH32_testdata[3635] */ + { 1818, 0x00000000U, 0x806AC2C6U }, /* XSUM_XXH32_testdata[3636] */ + { 1818, 0x9E3779B1U, 0xB1D59D27U }, /* XSUM_XXH32_testdata[3637] */ + { 1819, 0x00000000U, 0x1304BC0FU }, /* XSUM_XXH32_testdata[3638] */ + { 1819, 0x9E3779B1U, 0xA8435FC1U }, /* XSUM_XXH32_testdata[3639] */ + { 1820, 0x00000000U, 0x9D554B46U }, /* XSUM_XXH32_testdata[3640] */ + { 1820, 0x9E3779B1U, 0x5E964343U }, /* XSUM_XXH32_testdata[3641] */ + { 1821, 0x00000000U, 0xB36C2C88U }, /* XSUM_XXH32_testdata[3642] */ + { 1821, 0x9E3779B1U, 0x48EF1982U }, /* XSUM_XXH32_testdata[3643] */ + { 1822, 0x00000000U, 0xDEBA7341U }, /* XSUM_XXH32_testdata[3644] */ + { 1822, 0x9E3779B1U, 0xAD09EC67U }, /* XSUM_XXH32_testdata[3645] */ + { 1823, 0x00000000U, 0x175EA52BU }, /* XSUM_XXH32_testdata[3646] */ + { 1823, 0x9E3779B1U, 0xA8574931U }, /* XSUM_XXH32_testdata[3647] */ + { 1824, 0x00000000U, 0x2F5DCC8CU }, /* XSUM_XXH32_testdata[3648] */ + { 1824, 0x9E3779B1U, 0xF2D4B7C2U }, /* XSUM_XXH32_testdata[3649] */ + { 1825, 0x00000000U, 0xCB4DEF13U }, /* XSUM_XXH32_testdata[3650] */ + { 1825, 0x9E3779B1U, 0xF8D9DA7CU }, /* XSUM_XXH32_testdata[3651] */ + { 1826, 0x00000000U, 0x4E1A72E1U }, /* XSUM_XXH32_testdata[3652] */ + { 1826, 0x9E3779B1U, 0x41811E2CU }, /* XSUM_XXH32_testdata[3653] */ + { 1827, 0x00000000U, 0xA58FC1D7U }, /* XSUM_XXH32_testdata[3654] */ + { 1827, 0x9E3779B1U, 0x3F880806U }, /* XSUM_XXH32_testdata[3655] */ + { 1828, 0x00000000U, 0x0275E715U }, /* XSUM_XXH32_testdata[3656] */ + { 1828, 0x9E3779B1U, 0x530CDE35U }, /* XSUM_XXH32_testdata[3657] */ + { 1829, 0x00000000U, 0xCAF2B117U }, /* XSUM_XXH32_testdata[3658] */ + { 1829, 0x9E3779B1U, 0x65EDEA16U }, /* XSUM_XXH32_testdata[3659] */ + { 1830, 0x00000000U, 0xE20DACBBU }, /* XSUM_XXH32_testdata[3660] */ + { 1830, 0x9E3779B1U, 0x35440710U }, /* XSUM_XXH32_testdata[3661] */ + { 1831, 0x00000000U, 0xD4D95AA5U }, /* XSUM_XXH32_testdata[3662] */ + { 1831, 0x9E3779B1U, 0x1E810AD6U }, /* XSUM_XXH32_testdata[3663] */ + { 1832, 0x00000000U, 0xA20D541FU }, /* XSUM_XXH32_testdata[3664] */ + { 1832, 0x9E3779B1U, 0x7E0C0B5EU }, /* XSUM_XXH32_testdata[3665] */ + { 1833, 0x00000000U, 0xC119D0B6U }, /* XSUM_XXH32_testdata[3666] */ + { 1833, 0x9E3779B1U, 0x1FFB7EBAU }, /* XSUM_XXH32_testdata[3667] */ + { 1834, 0x00000000U, 0x8D17CD37U }, /* XSUM_XXH32_testdata[3668] */ + { 1834, 0x9E3779B1U, 0xC4C176EBU }, /* XSUM_XXH32_testdata[3669] */ + { 1835, 0x00000000U, 0x675B3F12U }, /* XSUM_XXH32_testdata[3670] */ + { 1835, 0x9E3779B1U, 0x6A1EAE37U }, /* XSUM_XXH32_testdata[3671] */ + { 1836, 0x00000000U, 0x1B214A29U }, /* XSUM_XXH32_testdata[3672] */ + { 1836, 0x9E3779B1U, 0xB1C040B4U }, /* XSUM_XXH32_testdata[3673] */ + { 1837, 0x00000000U, 0xA1ECBA48U }, /* XSUM_XXH32_testdata[3674] */ + { 1837, 0x9E3779B1U, 0x5746365EU }, /* XSUM_XXH32_testdata[3675] */ + { 1838, 0x00000000U, 0x5112DAB6U }, /* XSUM_XXH32_testdata[3676] */ + { 1838, 0x9E3779B1U, 0x1BE9DB5EU }, /* XSUM_XXH32_testdata[3677] */ + { 1839, 0x00000000U, 0x777392A2U }, /* XSUM_XXH32_testdata[3678] */ + { 1839, 0x9E3779B1U, 0xBA81062EU }, /* XSUM_XXH32_testdata[3679] */ + { 1840, 0x00000000U, 0x51F8185EU }, /* XSUM_XXH32_testdata[3680] */ + { 1840, 0x9E3779B1U, 0x72FFCF3EU }, /* XSUM_XXH32_testdata[3681] */ + { 1841, 0x00000000U, 0x99BA6C88U }, /* XSUM_XXH32_testdata[3682] */ + { 1841, 0x9E3779B1U, 0x9C58C6ABU }, /* XSUM_XXH32_testdata[3683] */ + { 1842, 0x00000000U, 0xA6A21A54U }, /* XSUM_XXH32_testdata[3684] */ + { 1842, 0x9E3779B1U, 0x44C74437U }, /* XSUM_XXH32_testdata[3685] */ + { 1843, 0x00000000U, 0x252CA0DEU }, /* XSUM_XXH32_testdata[3686] */ + { 1843, 0x9E3779B1U, 0x3FB62BB2U }, /* XSUM_XXH32_testdata[3687] */ + { 1844, 0x00000000U, 0x06DE7EABU }, /* XSUM_XXH32_testdata[3688] */ + { 1844, 0x9E3779B1U, 0x50E2A47AU }, /* XSUM_XXH32_testdata[3689] */ + { 1845, 0x00000000U, 0xA65D3237U }, /* XSUM_XXH32_testdata[3690] */ + { 1845, 0x9E3779B1U, 0x0A2D01FAU }, /* XSUM_XXH32_testdata[3691] */ + { 1846, 0x00000000U, 0x04F43A59U }, /* XSUM_XXH32_testdata[3692] */ + { 1846, 0x9E3779B1U, 0x51111F7EU }, /* XSUM_XXH32_testdata[3693] */ + { 1847, 0x00000000U, 0x6F4019A8U }, /* XSUM_XXH32_testdata[3694] */ + { 1847, 0x9E3779B1U, 0xE20F3576U }, /* XSUM_XXH32_testdata[3695] */ + { 1848, 0x00000000U, 0xD866CDA1U }, /* XSUM_XXH32_testdata[3696] */ + { 1848, 0x9E3779B1U, 0x1AC08626U }, /* XSUM_XXH32_testdata[3697] */ + { 1849, 0x00000000U, 0x0A51B4EAU }, /* XSUM_XXH32_testdata[3698] */ + { 1849, 0x9E3779B1U, 0xAC6041B3U }, /* XSUM_XXH32_testdata[3699] */ + { 1850, 0x00000000U, 0x0AC59D71U }, /* XSUM_XXH32_testdata[3700] */ + { 1850, 0x9E3779B1U, 0x88F8915EU }, /* XSUM_XXH32_testdata[3701] */ + { 1851, 0x00000000U, 0x5F92FA39U }, /* XSUM_XXH32_testdata[3702] */ + { 1851, 0x9E3779B1U, 0xF25E4F80U }, /* XSUM_XXH32_testdata[3703] */ + { 1852, 0x00000000U, 0x2D213040U }, /* XSUM_XXH32_testdata[3704] */ + { 1852, 0x9E3779B1U, 0x54C7D298U }, /* XSUM_XXH32_testdata[3705] */ + { 1853, 0x00000000U, 0x1B95E174U }, /* XSUM_XXH32_testdata[3706] */ + { 1853, 0x9E3779B1U, 0xAE824BB0U }, /* XSUM_XXH32_testdata[3707] */ + { 1854, 0x00000000U, 0xA15D6FF6U }, /* XSUM_XXH32_testdata[3708] */ + { 1854, 0x9E3779B1U, 0x0681ACF4U }, /* XSUM_XXH32_testdata[3709] */ + { 1855, 0x00000000U, 0xEBD376F2U }, /* XSUM_XXH32_testdata[3710] */ + { 1855, 0x9E3779B1U, 0x6D348553U }, /* XSUM_XXH32_testdata[3711] */ + { 1856, 0x00000000U, 0x578A3039U }, /* XSUM_XXH32_testdata[3712] */ + { 1856, 0x9E3779B1U, 0xBE3F47FEU }, /* XSUM_XXH32_testdata[3713] */ + { 1857, 0x00000000U, 0xA3F62009U }, /* XSUM_XXH32_testdata[3714] */ + { 1857, 0x9E3779B1U, 0xA618308CU }, /* XSUM_XXH32_testdata[3715] */ + { 1858, 0x00000000U, 0x5D53EC58U }, /* XSUM_XXH32_testdata[3716] */ + { 1858, 0x9E3779B1U, 0x9EFF05C1U }, /* XSUM_XXH32_testdata[3717] */ + { 1859, 0x00000000U, 0xC0BA7D48U }, /* XSUM_XXH32_testdata[3718] */ + { 1859, 0x9E3779B1U, 0x83FBDC4CU }, /* XSUM_XXH32_testdata[3719] */ + { 1860, 0x00000000U, 0x90EAE29DU }, /* XSUM_XXH32_testdata[3720] */ + { 1860, 0x9E3779B1U, 0xDD27AD43U }, /* XSUM_XXH32_testdata[3721] */ + { 1861, 0x00000000U, 0xAA9C88CCU }, /* XSUM_XXH32_testdata[3722] */ + { 1861, 0x9E3779B1U, 0x11555FE1U }, /* XSUM_XXH32_testdata[3723] */ + { 1862, 0x00000000U, 0x04799A10U }, /* XSUM_XXH32_testdata[3724] */ + { 1862, 0x9E3779B1U, 0xA9ACC8FBU }, /* XSUM_XXH32_testdata[3725] */ + { 1863, 0x00000000U, 0xED292432U }, /* XSUM_XXH32_testdata[3726] */ + { 1863, 0x9E3779B1U, 0x8E3C1F47U }, /* XSUM_XXH32_testdata[3727] */ + { 1864, 0x00000000U, 0x43C09E40U }, /* XSUM_XXH32_testdata[3728] */ + { 1864, 0x9E3779B1U, 0xBFB300C8U }, /* XSUM_XXH32_testdata[3729] */ + { 1865, 0x00000000U, 0x7BE1BF3EU }, /* XSUM_XXH32_testdata[3730] */ + { 1865, 0x9E3779B1U, 0x58621FC8U }, /* XSUM_XXH32_testdata[3731] */ + { 1866, 0x00000000U, 0x99F615E2U }, /* XSUM_XXH32_testdata[3732] */ + { 1866, 0x9E3779B1U, 0x4638A085U }, /* XSUM_XXH32_testdata[3733] */ + { 1867, 0x00000000U, 0x602FF217U }, /* XSUM_XXH32_testdata[3734] */ + { 1867, 0x9E3779B1U, 0xCB54058AU }, /* XSUM_XXH32_testdata[3735] */ + { 1868, 0x00000000U, 0xBB4A90B4U }, /* XSUM_XXH32_testdata[3736] */ + { 1868, 0x9E3779B1U, 0x812A8213U }, /* XSUM_XXH32_testdata[3737] */ + { 1869, 0x00000000U, 0xDBAB5AE4U }, /* XSUM_XXH32_testdata[3738] */ + { 1869, 0x9E3779B1U, 0x9FB2B073U }, /* XSUM_XXH32_testdata[3739] */ + { 1870, 0x00000000U, 0xE9C0B924U }, /* XSUM_XXH32_testdata[3740] */ + { 1870, 0x9E3779B1U, 0xCF33FD14U }, /* XSUM_XXH32_testdata[3741] */ + { 1871, 0x00000000U, 0x4C150BD1U }, /* XSUM_XXH32_testdata[3742] */ + { 1871, 0x9E3779B1U, 0x6FC102DEU }, /* XSUM_XXH32_testdata[3743] */ + { 1872, 0x00000000U, 0x128952FFU }, /* XSUM_XXH32_testdata[3744] */ + { 1872, 0x9E3779B1U, 0xF056CC68U }, /* XSUM_XXH32_testdata[3745] */ + { 1873, 0x00000000U, 0x2F630230U }, /* XSUM_XXH32_testdata[3746] */ + { 1873, 0x9E3779B1U, 0x6200B0A0U }, /* XSUM_XXH32_testdata[3747] */ + { 1874, 0x00000000U, 0x95113D65U }, /* XSUM_XXH32_testdata[3748] */ + { 1874, 0x9E3779B1U, 0xA2266DC8U }, /* XSUM_XXH32_testdata[3749] */ + { 1875, 0x00000000U, 0xEB5EC5FAU }, /* XSUM_XXH32_testdata[3750] */ + { 1875, 0x9E3779B1U, 0x258ED07AU }, /* XSUM_XXH32_testdata[3751] */ + { 1876, 0x00000000U, 0xBC41D480U }, /* XSUM_XXH32_testdata[3752] */ + { 1876, 0x9E3779B1U, 0xF6ECF7E5U }, /* XSUM_XXH32_testdata[3753] */ + { 1877, 0x00000000U, 0x53A61D66U }, /* XSUM_XXH32_testdata[3754] */ + { 1877, 0x9E3779B1U, 0x7161D2FEU }, /* XSUM_XXH32_testdata[3755] */ + { 1878, 0x00000000U, 0x6E525359U }, /* XSUM_XXH32_testdata[3756] */ + { 1878, 0x9E3779B1U, 0x55E29EB2U }, /* XSUM_XXH32_testdata[3757] */ + { 1879, 0x00000000U, 0x4B6C6614U }, /* XSUM_XXH32_testdata[3758] */ + { 1879, 0x9E3779B1U, 0xD6467881U }, /* XSUM_XXH32_testdata[3759] */ + { 1880, 0x00000000U, 0xB04444F7U }, /* XSUM_XXH32_testdata[3760] */ + { 1880, 0x9E3779B1U, 0x268DC86DU }, /* XSUM_XXH32_testdata[3761] */ + { 1881, 0x00000000U, 0xD6941295U }, /* XSUM_XXH32_testdata[3762] */ + { 1881, 0x9E3779B1U, 0xD7407476U }, /* XSUM_XXH32_testdata[3763] */ + { 1882, 0x00000000U, 0x1B195D84U }, /* XSUM_XXH32_testdata[3764] */ + { 1882, 0x9E3779B1U, 0x677236D7U }, /* XSUM_XXH32_testdata[3765] */ + { 1883, 0x00000000U, 0xBB4F8831U }, /* XSUM_XXH32_testdata[3766] */ + { 1883, 0x9E3779B1U, 0x7355DFAEU }, /* XSUM_XXH32_testdata[3767] */ + { 1884, 0x00000000U, 0xBE445C3DU }, /* XSUM_XXH32_testdata[3768] */ + { 1884, 0x9E3779B1U, 0xC7418A25U }, /* XSUM_XXH32_testdata[3769] */ + { 1885, 0x00000000U, 0x0F1B2DC8U }, /* XSUM_XXH32_testdata[3770] */ + { 1885, 0x9E3779B1U, 0x58763266U }, /* XSUM_XXH32_testdata[3771] */ + { 1886, 0x00000000U, 0x151A031CU }, /* XSUM_XXH32_testdata[3772] */ + { 1886, 0x9E3779B1U, 0xE5227743U }, /* XSUM_XXH32_testdata[3773] */ + { 1887, 0x00000000U, 0x8A90D1CDU }, /* XSUM_XXH32_testdata[3774] */ + { 1887, 0x9E3779B1U, 0xCAD9223CU }, /* XSUM_XXH32_testdata[3775] */ + { 1888, 0x00000000U, 0x8EAAA692U }, /* XSUM_XXH32_testdata[3776] */ + { 1888, 0x9E3779B1U, 0x71B65B2EU }, /* XSUM_XXH32_testdata[3777] */ + { 1889, 0x00000000U, 0x3CAEBA43U }, /* XSUM_XXH32_testdata[3778] */ + { 1889, 0x9E3779B1U, 0x548D96ABU }, /* XSUM_XXH32_testdata[3779] */ + { 1890, 0x00000000U, 0x02A753A0U }, /* XSUM_XXH32_testdata[3780] */ + { 1890, 0x9E3779B1U, 0xF2819E92U }, /* XSUM_XXH32_testdata[3781] */ + { 1891, 0x00000000U, 0x79338331U }, /* XSUM_XXH32_testdata[3782] */ + { 1891, 0x9E3779B1U, 0x501DC079U }, /* XSUM_XXH32_testdata[3783] */ + { 1892, 0x00000000U, 0x8B0F6D10U }, /* XSUM_XXH32_testdata[3784] */ + { 1892, 0x9E3779B1U, 0x9084EBAEU }, /* XSUM_XXH32_testdata[3785] */ + { 1893, 0x00000000U, 0xD2717BE6U }, /* XSUM_XXH32_testdata[3786] */ + { 1893, 0x9E3779B1U, 0x2707C7AAU }, /* XSUM_XXH32_testdata[3787] */ + { 1894, 0x00000000U, 0x0DF2C2A8U }, /* XSUM_XXH32_testdata[3788] */ + { 1894, 0x9E3779B1U, 0xC9DC005EU }, /* XSUM_XXH32_testdata[3789] */ + { 1895, 0x00000000U, 0x0226E73AU }, /* XSUM_XXH32_testdata[3790] */ + { 1895, 0x9E3779B1U, 0x8710F413U }, /* XSUM_XXH32_testdata[3791] */ + { 1896, 0x00000000U, 0x2A3AEE59U }, /* XSUM_XXH32_testdata[3792] */ + { 1896, 0x9E3779B1U, 0x851FB087U }, /* XSUM_XXH32_testdata[3793] */ + { 1897, 0x00000000U, 0x9E7C31B8U }, /* XSUM_XXH32_testdata[3794] */ + { 1897, 0x9E3779B1U, 0x65F68117U }, /* XSUM_XXH32_testdata[3795] */ + { 1898, 0x00000000U, 0x0049DB67U }, /* XSUM_XXH32_testdata[3796] */ + { 1898, 0x9E3779B1U, 0x0095735EU }, /* XSUM_XXH32_testdata[3797] */ + { 1899, 0x00000000U, 0x2A359B32U }, /* XSUM_XXH32_testdata[3798] */ + { 1899, 0x9E3779B1U, 0x6B86292AU }, /* XSUM_XXH32_testdata[3799] */ + { 1900, 0x00000000U, 0x5035F959U }, /* XSUM_XXH32_testdata[3800] */ + { 1900, 0x9E3779B1U, 0x38350BD6U }, /* XSUM_XXH32_testdata[3801] */ + { 1901, 0x00000000U, 0xF1F7F830U }, /* XSUM_XXH32_testdata[3802] */ + { 1901, 0x9E3779B1U, 0x8CE3F218U }, /* XSUM_XXH32_testdata[3803] */ + { 1902, 0x00000000U, 0x2DD3318CU }, /* XSUM_XXH32_testdata[3804] */ + { 1902, 0x9E3779B1U, 0x765A45E8U }, /* XSUM_XXH32_testdata[3805] */ + { 1903, 0x00000000U, 0xD75689F9U }, /* XSUM_XXH32_testdata[3806] */ + { 1903, 0x9E3779B1U, 0x4787E4F4U }, /* XSUM_XXH32_testdata[3807] */ + { 1904, 0x00000000U, 0xF860CFF0U }, /* XSUM_XXH32_testdata[3808] */ + { 1904, 0x9E3779B1U, 0xF51D4BFEU }, /* XSUM_XXH32_testdata[3809] */ + { 1905, 0x00000000U, 0xFF9A6461U }, /* XSUM_XXH32_testdata[3810] */ + { 1905, 0x9E3779B1U, 0x4408E97AU }, /* XSUM_XXH32_testdata[3811] */ + { 1906, 0x00000000U, 0xF6F3050EU }, /* XSUM_XXH32_testdata[3812] */ + { 1906, 0x9E3779B1U, 0xC621019AU }, /* XSUM_XXH32_testdata[3813] */ + { 1907, 0x00000000U, 0x8BFA355EU }, /* XSUM_XXH32_testdata[3814] */ + { 1907, 0x9E3779B1U, 0x9F55973DU }, /* XSUM_XXH32_testdata[3815] */ + { 1908, 0x00000000U, 0xAFFA76B1U }, /* XSUM_XXH32_testdata[3816] */ + { 1908, 0x9E3779B1U, 0x0DABD32CU }, /* XSUM_XXH32_testdata[3817] */ + { 1909, 0x00000000U, 0x10F56148U }, /* XSUM_XXH32_testdata[3818] */ + { 1909, 0x9E3779B1U, 0xA90D4AD4U }, /* XSUM_XXH32_testdata[3819] */ + { 1910, 0x00000000U, 0x02851F1BU }, /* XSUM_XXH32_testdata[3820] */ + { 1910, 0x9E3779B1U, 0xB316A5DDU }, /* XSUM_XXH32_testdata[3821] */ + { 1911, 0x00000000U, 0x53824F89U }, /* XSUM_XXH32_testdata[3822] */ + { 1911, 0x9E3779B1U, 0x4078E403U }, /* XSUM_XXH32_testdata[3823] */ + { 1912, 0x00000000U, 0x00B86DC6U }, /* XSUM_XXH32_testdata[3824] */ + { 1912, 0x9E3779B1U, 0x4542E1B4U }, /* XSUM_XXH32_testdata[3825] */ + { 1913, 0x00000000U, 0x207B79BCU }, /* XSUM_XXH32_testdata[3826] */ + { 1913, 0x9E3779B1U, 0x832092D8U }, /* XSUM_XXH32_testdata[3827] */ + { 1914, 0x00000000U, 0x623E4AB0U }, /* XSUM_XXH32_testdata[3828] */ + { 1914, 0x9E3779B1U, 0xC6ACF116U }, /* XSUM_XXH32_testdata[3829] */ + { 1915, 0x00000000U, 0x8576A5AFU }, /* XSUM_XXH32_testdata[3830] */ + { 1915, 0x9E3779B1U, 0xBC2AEF5BU }, /* XSUM_XXH32_testdata[3831] */ + { 1916, 0x00000000U, 0x4C3376B5U }, /* XSUM_XXH32_testdata[3832] */ + { 1916, 0x9E3779B1U, 0x183EAF12U }, /* XSUM_XXH32_testdata[3833] */ + { 1917, 0x00000000U, 0x14A58F16U }, /* XSUM_XXH32_testdata[3834] */ + { 1917, 0x9E3779B1U, 0x8B011085U }, /* XSUM_XXH32_testdata[3835] */ + { 1918, 0x00000000U, 0xB9291E03U }, /* XSUM_XXH32_testdata[3836] */ + { 1918, 0x9E3779B1U, 0x7B9DE8A7U }, /* XSUM_XXH32_testdata[3837] */ + { 1919, 0x00000000U, 0xD38621DCU }, /* XSUM_XXH32_testdata[3838] */ + { 1919, 0x9E3779B1U, 0x8BF327B8U }, /* XSUM_XXH32_testdata[3839] */ + { 1920, 0x00000000U, 0x49AB85BDU }, /* XSUM_XXH32_testdata[3840] */ + { 1920, 0x9E3779B1U, 0xF9B3B5ACU }, /* XSUM_XXH32_testdata[3841] */ + { 1921, 0x00000000U, 0x5BA98FC5U }, /* XSUM_XXH32_testdata[3842] */ + { 1921, 0x9E3779B1U, 0x26AD3EAAU }, /* XSUM_XXH32_testdata[3843] */ + { 1922, 0x00000000U, 0x27483D1DU }, /* XSUM_XXH32_testdata[3844] */ + { 1922, 0x9E3779B1U, 0xBBC84864U }, /* XSUM_XXH32_testdata[3845] */ + { 1923, 0x00000000U, 0xF96BB397U }, /* XSUM_XXH32_testdata[3846] */ + { 1923, 0x9E3779B1U, 0x5140D7C4U }, /* XSUM_XXH32_testdata[3847] */ + { 1924, 0x00000000U, 0xE2D12306U }, /* XSUM_XXH32_testdata[3848] */ + { 1924, 0x9E3779B1U, 0x0B58D501U }, /* XSUM_XXH32_testdata[3849] */ + { 1925, 0x00000000U, 0x89667BBCU }, /* XSUM_XXH32_testdata[3850] */ + { 1925, 0x9E3779B1U, 0xCE96E91BU }, /* XSUM_XXH32_testdata[3851] */ + { 1926, 0x00000000U, 0x5744E350U }, /* XSUM_XXH32_testdata[3852] */ + { 1926, 0x9E3779B1U, 0x06ADC8A8U }, /* XSUM_XXH32_testdata[3853] */ + { 1927, 0x00000000U, 0x39ED429DU }, /* XSUM_XXH32_testdata[3854] */ + { 1927, 0x9E3779B1U, 0x981292C6U }, /* XSUM_XXH32_testdata[3855] */ + { 1928, 0x00000000U, 0x707AF21FU }, /* XSUM_XXH32_testdata[3856] */ + { 1928, 0x9E3779B1U, 0x4732C9F9U }, /* XSUM_XXH32_testdata[3857] */ + { 1929, 0x00000000U, 0xD88D5DA0U }, /* XSUM_XXH32_testdata[3858] */ + { 1929, 0x9E3779B1U, 0x472D33A8U }, /* XSUM_XXH32_testdata[3859] */ + { 1930, 0x00000000U, 0xFA892672U }, /* XSUM_XXH32_testdata[3860] */ + { 1930, 0x9E3779B1U, 0xADDEA018U }, /* XSUM_XXH32_testdata[3861] */ + { 1931, 0x00000000U, 0x633B2910U }, /* XSUM_XXH32_testdata[3862] */ + { 1931, 0x9E3779B1U, 0xC4E35504U }, /* XSUM_XXH32_testdata[3863] */ + { 1932, 0x00000000U, 0x50BBBD88U }, /* XSUM_XXH32_testdata[3864] */ + { 1932, 0x9E3779B1U, 0xA16C8C2CU }, /* XSUM_XXH32_testdata[3865] */ + { 1933, 0x00000000U, 0xD203BEF6U }, /* XSUM_XXH32_testdata[3866] */ + { 1933, 0x9E3779B1U, 0x889F74E9U }, /* XSUM_XXH32_testdata[3867] */ + { 1934, 0x00000000U, 0x1C50E58BU }, /* XSUM_XXH32_testdata[3868] */ + { 1934, 0x9E3779B1U, 0x783C3F67U }, /* XSUM_XXH32_testdata[3869] */ + { 1935, 0x00000000U, 0xBFA4C0CBU }, /* XSUM_XXH32_testdata[3870] */ + { 1935, 0x9E3779B1U, 0x1A0B89C2U }, /* XSUM_XXH32_testdata[3871] */ + { 1936, 0x00000000U, 0xBD617A8AU }, /* XSUM_XXH32_testdata[3872] */ + { 1936, 0x9E3779B1U, 0x87E01870U }, /* XSUM_XXH32_testdata[3873] */ + { 1937, 0x00000000U, 0x87EA5DC3U }, /* XSUM_XXH32_testdata[3874] */ + { 1937, 0x9E3779B1U, 0x4867250EU }, /* XSUM_XXH32_testdata[3875] */ + { 1938, 0x00000000U, 0xD5875D68U }, /* XSUM_XXH32_testdata[3876] */ + { 1938, 0x9E3779B1U, 0x8BBE9DFCU }, /* XSUM_XXH32_testdata[3877] */ + { 1939, 0x00000000U, 0x7F7F4B00U }, /* XSUM_XXH32_testdata[3878] */ + { 1939, 0x9E3779B1U, 0x4E6C73F8U }, /* XSUM_XXH32_testdata[3879] */ + { 1940, 0x00000000U, 0xAF99DF0CU }, /* XSUM_XXH32_testdata[3880] */ + { 1940, 0x9E3779B1U, 0xA56AAD63U }, /* XSUM_XXH32_testdata[3881] */ + { 1941, 0x00000000U, 0xF3152C3DU }, /* XSUM_XXH32_testdata[3882] */ + { 1941, 0x9E3779B1U, 0xD7916DC8U }, /* XSUM_XXH32_testdata[3883] */ + { 1942, 0x00000000U, 0xFD04A455U }, /* XSUM_XXH32_testdata[3884] */ + { 1942, 0x9E3779B1U, 0xF136DE7FU }, /* XSUM_XXH32_testdata[3885] */ + { 1943, 0x00000000U, 0xA93B1B18U }, /* XSUM_XXH32_testdata[3886] */ + { 1943, 0x9E3779B1U, 0xC872BB06U }, /* XSUM_XXH32_testdata[3887] */ + { 1944, 0x00000000U, 0x962FB20FU }, /* XSUM_XXH32_testdata[3888] */ + { 1944, 0x9E3779B1U, 0xB2EEF395U }, /* XSUM_XXH32_testdata[3889] */ + { 1945, 0x00000000U, 0xF987B8ECU }, /* XSUM_XXH32_testdata[3890] */ + { 1945, 0x9E3779B1U, 0x35E6AC22U }, /* XSUM_XXH32_testdata[3891] */ + { 1946, 0x00000000U, 0xA30BFF7BU }, /* XSUM_XXH32_testdata[3892] */ + { 1946, 0x9E3779B1U, 0x5FF3CF8EU }, /* XSUM_XXH32_testdata[3893] */ + { 1947, 0x00000000U, 0xAF72D6DCU }, /* XSUM_XXH32_testdata[3894] */ + { 1947, 0x9E3779B1U, 0x67E062DAU }, /* XSUM_XXH32_testdata[3895] */ + { 1948, 0x00000000U, 0x9C2C4E68U }, /* XSUM_XXH32_testdata[3896] */ + { 1948, 0x9E3779B1U, 0x0BEC12E0U }, /* XSUM_XXH32_testdata[3897] */ + { 1949, 0x00000000U, 0xD511ED41U }, /* XSUM_XXH32_testdata[3898] */ + { 1949, 0x9E3779B1U, 0xC59C84E8U }, /* XSUM_XXH32_testdata[3899] */ + { 1950, 0x00000000U, 0x2226F2DFU }, /* XSUM_XXH32_testdata[3900] */ + { 1950, 0x9E3779B1U, 0x5BF021A6U }, /* XSUM_XXH32_testdata[3901] */ + { 1951, 0x00000000U, 0x14357E71U }, /* XSUM_XXH32_testdata[3902] */ + { 1951, 0x9E3779B1U, 0xEC388F23U }, /* XSUM_XXH32_testdata[3903] */ + { 1952, 0x00000000U, 0xE8CDBE8FU }, /* XSUM_XXH32_testdata[3904] */ + { 1952, 0x9E3779B1U, 0x9DF13FFAU }, /* XSUM_XXH32_testdata[3905] */ + { 1953, 0x00000000U, 0x3DD52872U }, /* XSUM_XXH32_testdata[3906] */ + { 1953, 0x9E3779B1U, 0x48A62A8DU }, /* XSUM_XXH32_testdata[3907] */ + { 1954, 0x00000000U, 0x5172EAD4U }, /* XSUM_XXH32_testdata[3908] */ + { 1954, 0x9E3779B1U, 0xCC04ABF1U }, /* XSUM_XXH32_testdata[3909] */ + { 1955, 0x00000000U, 0x065D2470U }, /* XSUM_XXH32_testdata[3910] */ + { 1955, 0x9E3779B1U, 0xAE85008FU }, /* XSUM_XXH32_testdata[3911] */ + { 1956, 0x00000000U, 0x4A2CE749U }, /* XSUM_XXH32_testdata[3912] */ + { 1956, 0x9E3779B1U, 0x3A9E2B0AU }, /* XSUM_XXH32_testdata[3913] */ + { 1957, 0x00000000U, 0xC6194778U }, /* XSUM_XXH32_testdata[3914] */ + { 1957, 0x9E3779B1U, 0x18BD3E49U }, /* XSUM_XXH32_testdata[3915] */ + { 1958, 0x00000000U, 0xF325B7A3U }, /* XSUM_XXH32_testdata[3916] */ + { 1958, 0x9E3779B1U, 0xDD8614E3U }, /* XSUM_XXH32_testdata[3917] */ + { 1959, 0x00000000U, 0x0F194FC1U }, /* XSUM_XXH32_testdata[3918] */ + { 1959, 0x9E3779B1U, 0x9627C2D2U }, /* XSUM_XXH32_testdata[3919] */ + { 1960, 0x00000000U, 0x5BC110A1U }, /* XSUM_XXH32_testdata[3920] */ + { 1960, 0x9E3779B1U, 0x3304A55DU }, /* XSUM_XXH32_testdata[3921] */ + { 1961, 0x00000000U, 0x177639DFU }, /* XSUM_XXH32_testdata[3922] */ + { 1961, 0x9E3779B1U, 0x39EDE8A5U }, /* XSUM_XXH32_testdata[3923] */ + { 1962, 0x00000000U, 0xC27D185FU }, /* XSUM_XXH32_testdata[3924] */ + { 1962, 0x9E3779B1U, 0x394DD9B5U }, /* XSUM_XXH32_testdata[3925] */ + { 1963, 0x00000000U, 0x16AA8A49U }, /* XSUM_XXH32_testdata[3926] */ + { 1963, 0x9E3779B1U, 0x1762A04EU }, /* XSUM_XXH32_testdata[3927] */ + { 1964, 0x00000000U, 0x83C97FEBU }, /* XSUM_XXH32_testdata[3928] */ + { 1964, 0x9E3779B1U, 0xC84B8AFFU }, /* XSUM_XXH32_testdata[3929] */ + { 1965, 0x00000000U, 0x6A0C7F6FU }, /* XSUM_XXH32_testdata[3930] */ + { 1965, 0x9E3779B1U, 0x9887FA64U }, /* XSUM_XXH32_testdata[3931] */ + { 1966, 0x00000000U, 0x1CB29578U }, /* XSUM_XXH32_testdata[3932] */ + { 1966, 0x9E3779B1U, 0x314BCCE7U }, /* XSUM_XXH32_testdata[3933] */ + { 1967, 0x00000000U, 0xA894A59EU }, /* XSUM_XXH32_testdata[3934] */ + { 1967, 0x9E3779B1U, 0x69BF2268U }, /* XSUM_XXH32_testdata[3935] */ + { 1968, 0x00000000U, 0xC101BB45U }, /* XSUM_XXH32_testdata[3936] */ + { 1968, 0x9E3779B1U, 0x857C3BDAU }, /* XSUM_XXH32_testdata[3937] */ + { 1969, 0x00000000U, 0xED88C3A2U }, /* XSUM_XXH32_testdata[3938] */ + { 1969, 0x9E3779B1U, 0x61A6BE5AU }, /* XSUM_XXH32_testdata[3939] */ + { 1970, 0x00000000U, 0xF5331032U }, /* XSUM_XXH32_testdata[3940] */ + { 1970, 0x9E3779B1U, 0xAFEE656DU }, /* XSUM_XXH32_testdata[3941] */ + { 1971, 0x00000000U, 0xB20670B0U }, /* XSUM_XXH32_testdata[3942] */ + { 1971, 0x9E3779B1U, 0x4DCEA155U }, /* XSUM_XXH32_testdata[3943] */ + { 1972, 0x00000000U, 0xF86E69E0U }, /* XSUM_XXH32_testdata[3944] */ + { 1972, 0x9E3779B1U, 0xF140AED0U }, /* XSUM_XXH32_testdata[3945] */ + { 1973, 0x00000000U, 0x3540BC0FU }, /* XSUM_XXH32_testdata[3946] */ + { 1973, 0x9E3779B1U, 0x0EADCC04U }, /* XSUM_XXH32_testdata[3947] */ + { 1974, 0x00000000U, 0x2E735174U }, /* XSUM_XXH32_testdata[3948] */ + { 1974, 0x9E3779B1U, 0x2A939E78U }, /* XSUM_XXH32_testdata[3949] */ + { 1975, 0x00000000U, 0xA9F52C85U }, /* XSUM_XXH32_testdata[3950] */ + { 1975, 0x9E3779B1U, 0xAD17FC4FU }, /* XSUM_XXH32_testdata[3951] */ + { 1976, 0x00000000U, 0xF9FA268AU }, /* XSUM_XXH32_testdata[3952] */ + { 1976, 0x9E3779B1U, 0x971874D5U }, /* XSUM_XXH32_testdata[3953] */ + { 1977, 0x00000000U, 0xF4428F75U }, /* XSUM_XXH32_testdata[3954] */ + { 1977, 0x9E3779B1U, 0x57FBDA89U }, /* XSUM_XXH32_testdata[3955] */ + { 1978, 0x00000000U, 0x1AAC8291U }, /* XSUM_XXH32_testdata[3956] */ + { 1978, 0x9E3779B1U, 0x9E007DFDU }, /* XSUM_XXH32_testdata[3957] */ + { 1979, 0x00000000U, 0xC352B7ABU }, /* XSUM_XXH32_testdata[3958] */ + { 1979, 0x9E3779B1U, 0x4E785FFFU }, /* XSUM_XXH32_testdata[3959] */ + { 1980, 0x00000000U, 0xBAC98FF1U }, /* XSUM_XXH32_testdata[3960] */ + { 1980, 0x9E3779B1U, 0x76595F3EU }, /* XSUM_XXH32_testdata[3961] */ + { 1981, 0x00000000U, 0xA45E63FFU }, /* XSUM_XXH32_testdata[3962] */ + { 1981, 0x9E3779B1U, 0xAD3D3BD3U }, /* XSUM_XXH32_testdata[3963] */ + { 1982, 0x00000000U, 0x39DB4A7FU }, /* XSUM_XXH32_testdata[3964] */ + { 1982, 0x9E3779B1U, 0xA3E7F0FBU }, /* XSUM_XXH32_testdata[3965] */ + { 1983, 0x00000000U, 0xB66503D4U }, /* XSUM_XXH32_testdata[3966] */ + { 1983, 0x9E3779B1U, 0x1E8E1994U }, /* XSUM_XXH32_testdata[3967] */ + { 1984, 0x00000000U, 0xCF5DE874U }, /* XSUM_XXH32_testdata[3968] */ + { 1984, 0x9E3779B1U, 0x2C1B6B3CU }, /* XSUM_XXH32_testdata[3969] */ + { 1985, 0x00000000U, 0xE10E48A7U }, /* XSUM_XXH32_testdata[3970] */ + { 1985, 0x9E3779B1U, 0x07559361U }, /* XSUM_XXH32_testdata[3971] */ + { 1986, 0x00000000U, 0x066E22A7U }, /* XSUM_XXH32_testdata[3972] */ + { 1986, 0x9E3779B1U, 0x7AC5E452U }, /* XSUM_XXH32_testdata[3973] */ + { 1987, 0x00000000U, 0x188BA693U }, /* XSUM_XXH32_testdata[3974] */ + { 1987, 0x9E3779B1U, 0x8A682BCDU }, /* XSUM_XXH32_testdata[3975] */ + { 1988, 0x00000000U, 0xD0ED0A0CU }, /* XSUM_XXH32_testdata[3976] */ + { 1988, 0x9E3779B1U, 0x4FB3B028U }, /* XSUM_XXH32_testdata[3977] */ + { 1989, 0x00000000U, 0x474E34F9U }, /* XSUM_XXH32_testdata[3978] */ + { 1989, 0x9E3779B1U, 0xFBCF3FE0U }, /* XSUM_XXH32_testdata[3979] */ + { 1990, 0x00000000U, 0xD02693EFU }, /* XSUM_XXH32_testdata[3980] */ + { 1990, 0x9E3779B1U, 0x1BB07C3CU }, /* XSUM_XXH32_testdata[3981] */ + { 1991, 0x00000000U, 0x1C4CF83DU }, /* XSUM_XXH32_testdata[3982] */ + { 1991, 0x9E3779B1U, 0x20338234U }, /* XSUM_XXH32_testdata[3983] */ + { 1992, 0x00000000U, 0x6AABD9CEU }, /* XSUM_XXH32_testdata[3984] */ + { 1992, 0x9E3779B1U, 0x8EB483CAU }, /* XSUM_XXH32_testdata[3985] */ + { 1993, 0x00000000U, 0x1E773C8BU }, /* XSUM_XXH32_testdata[3986] */ + { 1993, 0x9E3779B1U, 0xB64A5A21U }, /* XSUM_XXH32_testdata[3987] */ + { 1994, 0x00000000U, 0x35AFF519U }, /* XSUM_XXH32_testdata[3988] */ + { 1994, 0x9E3779B1U, 0x473FDCE8U }, /* XSUM_XXH32_testdata[3989] */ + { 1995, 0x00000000U, 0xDC9FA8CDU }, /* XSUM_XXH32_testdata[3990] */ + { 1995, 0x9E3779B1U, 0x892138B0U }, /* XSUM_XXH32_testdata[3991] */ + { 1996, 0x00000000U, 0x6DEF8AD0U }, /* XSUM_XXH32_testdata[3992] */ + { 1996, 0x9E3779B1U, 0x457FE27BU }, /* XSUM_XXH32_testdata[3993] */ + { 1997, 0x00000000U, 0x890FB3E4U }, /* XSUM_XXH32_testdata[3994] */ + { 1997, 0x9E3779B1U, 0x1F5B9CEBU }, /* XSUM_XXH32_testdata[3995] */ + { 1998, 0x00000000U, 0xB64776BEU }, /* XSUM_XXH32_testdata[3996] */ + { 1998, 0x9E3779B1U, 0xB101B5F3U }, /* XSUM_XXH32_testdata[3997] */ + { 1999, 0x00000000U, 0xF2E14CBEU }, /* XSUM_XXH32_testdata[3998] */ + { 1999, 0x9E3779B1U, 0xCC0E148DU }, /* XSUM_XXH32_testdata[3999] */ + { 2000, 0x00000000U, 0x037244F1U }, /* XSUM_XXH32_testdata[4000] */ + { 2000, 0x9E3779B1U, 0xB2FBE118U }, /* XSUM_XXH32_testdata[4001] */ + { 2001, 0x00000000U, 0x50448CFCU }, /* XSUM_XXH32_testdata[4002] */ + { 2001, 0x9E3779B1U, 0xFA843DEBU }, /* XSUM_XXH32_testdata[4003] */ + { 2002, 0x00000000U, 0x06B8CE0AU }, /* XSUM_XXH32_testdata[4004] */ + { 2002, 0x9E3779B1U, 0x3A40336AU }, /* XSUM_XXH32_testdata[4005] */ + { 2003, 0x00000000U, 0xA630739DU }, /* XSUM_XXH32_testdata[4006] */ + { 2003, 0x9E3779B1U, 0xDB23BC34U }, /* XSUM_XXH32_testdata[4007] */ + { 2004, 0x00000000U, 0x6353FAE6U }, /* XSUM_XXH32_testdata[4008] */ + { 2004, 0x9E3779B1U, 0x3F8D9741U }, /* XSUM_XXH32_testdata[4009] */ + { 2005, 0x00000000U, 0xA60FF8FBU }, /* XSUM_XXH32_testdata[4010] */ + { 2005, 0x9E3779B1U, 0x2D6B8550U }, /* XSUM_XXH32_testdata[4011] */ + { 2006, 0x00000000U, 0x3AE24C4BU }, /* XSUM_XXH32_testdata[4012] */ + { 2006, 0x9E3779B1U, 0x5A116536U }, /* XSUM_XXH32_testdata[4013] */ + { 2007, 0x00000000U, 0x9648CE72U }, /* XSUM_XXH32_testdata[4014] */ + { 2007, 0x9E3779B1U, 0x516E552AU }, /* XSUM_XXH32_testdata[4015] */ + { 2008, 0x00000000U, 0x59A961B3U }, /* XSUM_XXH32_testdata[4016] */ + { 2008, 0x9E3779B1U, 0xEFBF6827U }, /* XSUM_XXH32_testdata[4017] */ + { 2009, 0x00000000U, 0xAD34FA0CU }, /* XSUM_XXH32_testdata[4018] */ + { 2009, 0x9E3779B1U, 0x31A65802U }, /* XSUM_XXH32_testdata[4019] */ + { 2010, 0x00000000U, 0xA35EAFE9U }, /* XSUM_XXH32_testdata[4020] */ + { 2010, 0x9E3779B1U, 0x46793AC6U }, /* XSUM_XXH32_testdata[4021] */ + { 2011, 0x00000000U, 0x7A55F70EU }, /* XSUM_XXH32_testdata[4022] */ + { 2011, 0x9E3779B1U, 0xB5CB7FE3U }, /* XSUM_XXH32_testdata[4023] */ + { 2012, 0x00000000U, 0x245FE661U }, /* XSUM_XXH32_testdata[4024] */ + { 2012, 0x9E3779B1U, 0xAB3CC11BU }, /* XSUM_XXH32_testdata[4025] */ + { 2013, 0x00000000U, 0x5D03D1B8U }, /* XSUM_XXH32_testdata[4026] */ + { 2013, 0x9E3779B1U, 0xD588E35EU }, /* XSUM_XXH32_testdata[4027] */ + { 2014, 0x00000000U, 0x9E86CEFCU }, /* XSUM_XXH32_testdata[4028] */ + { 2014, 0x9E3779B1U, 0x5A2E2EBEU }, /* XSUM_XXH32_testdata[4029] */ + { 2015, 0x00000000U, 0x08B88BD0U }, /* XSUM_XXH32_testdata[4030] */ + { 2015, 0x9E3779B1U, 0x089F95BFU }, /* XSUM_XXH32_testdata[4031] */ + { 2016, 0x00000000U, 0xC49A0201U }, /* XSUM_XXH32_testdata[4032] */ + { 2016, 0x9E3779B1U, 0x083A01CCU }, /* XSUM_XXH32_testdata[4033] */ + { 2017, 0x00000000U, 0xA8BFCB32U }, /* XSUM_XXH32_testdata[4034] */ + { 2017, 0x9E3779B1U, 0x5F51E2E9U }, /* XSUM_XXH32_testdata[4035] */ + { 2018, 0x00000000U, 0x56D0D478U }, /* XSUM_XXH32_testdata[4036] */ + { 2018, 0x9E3779B1U, 0xE86FE06CU }, /* XSUM_XXH32_testdata[4037] */ + { 2019, 0x00000000U, 0x16E681BEU }, /* XSUM_XXH32_testdata[4038] */ + { 2019, 0x9E3779B1U, 0xB4EB93CBU }, /* XSUM_XXH32_testdata[4039] */ + { 2020, 0x00000000U, 0x8A7C8329U }, /* XSUM_XXH32_testdata[4040] */ + { 2020, 0x9E3779B1U, 0x2DAACEAFU }, /* XSUM_XXH32_testdata[4041] */ + { 2021, 0x00000000U, 0xC2766DBAU }, /* XSUM_XXH32_testdata[4042] */ + { 2021, 0x9E3779B1U, 0x8FB8125FU }, /* XSUM_XXH32_testdata[4043] */ + { 2022, 0x00000000U, 0x7E60D1C2U }, /* XSUM_XXH32_testdata[4044] */ + { 2022, 0x9E3779B1U, 0xD07D751EU }, /* XSUM_XXH32_testdata[4045] */ + { 2023, 0x00000000U, 0x6214655CU }, /* XSUM_XXH32_testdata[4046] */ + { 2023, 0x9E3779B1U, 0x291474CCU }, /* XSUM_XXH32_testdata[4047] */ + { 2024, 0x00000000U, 0xBBD6C077U }, /* XSUM_XXH32_testdata[4048] */ + { 2024, 0x9E3779B1U, 0x69720F53U }, /* XSUM_XXH32_testdata[4049] */ + { 2025, 0x00000000U, 0x90AFACE9U }, /* XSUM_XXH32_testdata[4050] */ + { 2025, 0x9E3779B1U, 0x0A4A2677U }, /* XSUM_XXH32_testdata[4051] */ + { 2026, 0x00000000U, 0xEE7FA58BU }, /* XSUM_XXH32_testdata[4052] */ + { 2026, 0x9E3779B1U, 0x4C4FB263U }, /* XSUM_XXH32_testdata[4053] */ + { 2027, 0x00000000U, 0x40DC1676U }, /* XSUM_XXH32_testdata[4054] */ + { 2027, 0x9E3779B1U, 0x9B66BBC7U }, /* XSUM_XXH32_testdata[4055] */ + { 2028, 0x00000000U, 0xF053E1D4U }, /* XSUM_XXH32_testdata[4056] */ + { 2028, 0x9E3779B1U, 0xA60B2337U }, /* XSUM_XXH32_testdata[4057] */ + { 2029, 0x00000000U, 0x775F2608U }, /* XSUM_XXH32_testdata[4058] */ + { 2029, 0x9E3779B1U, 0xD31BB491U }, /* XSUM_XXH32_testdata[4059] */ + { 2030, 0x00000000U, 0x637D5315U }, /* XSUM_XXH32_testdata[4060] */ + { 2030, 0x9E3779B1U, 0x7F0210C2U }, /* XSUM_XXH32_testdata[4061] */ + { 2031, 0x00000000U, 0x5EBF2AA7U }, /* XSUM_XXH32_testdata[4062] */ + { 2031, 0x9E3779B1U, 0xE71ABE86U }, /* XSUM_XXH32_testdata[4063] */ + { 2032, 0x00000000U, 0x1C72071DU }, /* XSUM_XXH32_testdata[4064] */ + { 2032, 0x9E3779B1U, 0x07F4C560U }, /* XSUM_XXH32_testdata[4065] */ + { 2033, 0x00000000U, 0x41418F2CU }, /* XSUM_XXH32_testdata[4066] */ + { 2033, 0x9E3779B1U, 0x7EE8E647U }, /* XSUM_XXH32_testdata[4067] */ + { 2034, 0x00000000U, 0x45D9462AU }, /* XSUM_XXH32_testdata[4068] */ + { 2034, 0x9E3779B1U, 0xAF1BE5F1U }, /* XSUM_XXH32_testdata[4069] */ + { 2035, 0x00000000U, 0x21BC7874U }, /* XSUM_XXH32_testdata[4070] */ + { 2035, 0x9E3779B1U, 0xE29E0AF3U }, /* XSUM_XXH32_testdata[4071] */ + { 2036, 0x00000000U, 0xA4975122U }, /* XSUM_XXH32_testdata[4072] */ + { 2036, 0x9E3779B1U, 0xA304FF25U }, /* XSUM_XXH32_testdata[4073] */ + { 2037, 0x00000000U, 0xEFBA9648U }, /* XSUM_XXH32_testdata[4074] */ + { 2037, 0x9E3779B1U, 0x374C61BAU }, /* XSUM_XXH32_testdata[4075] */ + { 2038, 0x00000000U, 0xE1C05541U }, /* XSUM_XXH32_testdata[4076] */ + { 2038, 0x9E3779B1U, 0x4B71A074U }, /* XSUM_XXH32_testdata[4077] */ + { 2039, 0x00000000U, 0x80957D94U }, /* XSUM_XXH32_testdata[4078] */ + { 2039, 0x9E3779B1U, 0xC49E1925U }, /* XSUM_XXH32_testdata[4079] */ + { 2040, 0x00000000U, 0x6D4D1C66U }, /* XSUM_XXH32_testdata[4080] */ + { 2040, 0x9E3779B1U, 0xE1C650D3U }, /* XSUM_XXH32_testdata[4081] */ + { 2041, 0x00000000U, 0x6D646431U }, /* XSUM_XXH32_testdata[4082] */ + { 2041, 0x9E3779B1U, 0x00891D66U }, /* XSUM_XXH32_testdata[4083] */ + { 2042, 0x00000000U, 0x71099C2DU }, /* XSUM_XXH32_testdata[4084] */ + { 2042, 0x9E3779B1U, 0x4F7223C7U }, /* XSUM_XXH32_testdata[4085] */ + { 2043, 0x00000000U, 0x4A04521BU }, /* XSUM_XXH32_testdata[4086] */ + { 2043, 0x9E3779B1U, 0x139BD0D3U }, /* XSUM_XXH32_testdata[4087] */ + { 2044, 0x00000000U, 0x9E81B0E0U }, /* XSUM_XXH32_testdata[4088] */ + { 2044, 0x9E3779B1U, 0xA2D3A39BU }, /* XSUM_XXH32_testdata[4089] */ + { 2045, 0x00000000U, 0x4469E1A8U }, /* XSUM_XXH32_testdata[4090] */ + { 2045, 0x9E3779B1U, 0x7C93C1A4U }, /* XSUM_XXH32_testdata[4091] */ + { 2046, 0x00000000U, 0xB69D2E91U }, /* XSUM_XXH32_testdata[4092] */ + { 2046, 0x9E3779B1U, 0x56B9ACCEU }, /* XSUM_XXH32_testdata[4093] */ + { 2047, 0x00000000U, 0x05CF4C53U }, /* XSUM_XXH32_testdata[4094] */ + { 2047, 0x9E3779B1U, 0xDAC740B5U }, /* XSUM_XXH32_testdata[4095] */ + { 2048, 0x00000000U, 0x7C535464U }, /* XSUM_XXH32_testdata[4096] */ + { 2048, 0x9E3779B1U, 0x89688D5EU }, /* XSUM_XXH32_testdata[4097] */ + { 2049, 0x00000000U, 0x880E455CU }, /* XSUM_XXH32_testdata[4098] */ + { 2049, 0x9E3779B1U, 0x0C3F5225U }, /* XSUM_XXH32_testdata[4099] */ + { 2050, 0x00000000U, 0x0CD5328AU }, /* XSUM_XXH32_testdata[4100] */ + { 2050, 0x9E3779B1U, 0x5E4CECABU }, /* XSUM_XXH32_testdata[4101] */ + { 2051, 0x00000000U, 0xB02EC05BU }, /* XSUM_XXH32_testdata[4102] */ + { 2051, 0x9E3779B1U, 0x8EB1CA2EU }, /* XSUM_XXH32_testdata[4103] */ + { 2052, 0x00000000U, 0x819785B4U }, /* XSUM_XXH32_testdata[4104] */ + { 2052, 0x9E3779B1U, 0xEE4DC00FU }, /* XSUM_XXH32_testdata[4105] */ + { 2053, 0x00000000U, 0xBB02DD05U }, /* XSUM_XXH32_testdata[4106] */ + { 2053, 0x9E3779B1U, 0xE0B03346U }, /* XSUM_XXH32_testdata[4107] */ + { 2054, 0x00000000U, 0x9BB201E3U }, /* XSUM_XXH32_testdata[4108] */ + { 2054, 0x9E3779B1U, 0xA50B6FEFU }, /* XSUM_XXH32_testdata[4109] */ + { 2055, 0x00000000U, 0x5EB9E721U }, /* XSUM_XXH32_testdata[4110] */ + { 2055, 0x9E3779B1U, 0x84B80A21U }, /* XSUM_XXH32_testdata[4111] */ + { 2056, 0x00000000U, 0x4A8BB9DBU }, /* XSUM_XXH32_testdata[4112] */ + { 2056, 0x9E3779B1U, 0xFBFB5F35U }, /* XSUM_XXH32_testdata[4113] */ + { 2057, 0x00000000U, 0x621A3AE1U }, /* XSUM_XXH32_testdata[4114] */ + { 2057, 0x9E3779B1U, 0xE62B3DA9U }, /* XSUM_XXH32_testdata[4115] */ + { 2058, 0x00000000U, 0xD433D0D2U }, /* XSUM_XXH32_testdata[4116] */ + { 2058, 0x9E3779B1U, 0x023E0618U }, /* XSUM_XXH32_testdata[4117] */ + { 2059, 0x00000000U, 0x8D358340U }, /* XSUM_XXH32_testdata[4118] */ + { 2059, 0x9E3779B1U, 0x98103E37U }, /* XSUM_XXH32_testdata[4119] */ + { 2060, 0x00000000U, 0x1C734A82U }, /* XSUM_XXH32_testdata[4120] */ + { 2060, 0x9E3779B1U, 0xA5157D21U }, /* XSUM_XXH32_testdata[4121] */ + { 2061, 0x00000000U, 0xE4C01B2FU }, /* XSUM_XXH32_testdata[4122] */ + { 2061, 0x9E3779B1U, 0xEA9E2AE1U }, /* XSUM_XXH32_testdata[4123] */ + { 2062, 0x00000000U, 0x1EE4F10EU }, /* XSUM_XXH32_testdata[4124] */ + { 2062, 0x9E3779B1U, 0x93956AB3U }, /* XSUM_XXH32_testdata[4125] */ + { 2063, 0x00000000U, 0xA568A1D0U }, /* XSUM_XXH32_testdata[4126] */ + { 2063, 0x9E3779B1U, 0x490518BFU }, /* XSUM_XXH32_testdata[4127] */ + { 2064, 0x00000000U, 0x0894677FU }, /* XSUM_XXH32_testdata[4128] */ + { 2064, 0x9E3779B1U, 0x82829756U }, /* XSUM_XXH32_testdata[4129] */ + { 2065, 0x00000000U, 0xB2DA6FCFU }, /* XSUM_XXH32_testdata[4130] */ + { 2065, 0x9E3779B1U, 0x35F8DBEBU }, /* XSUM_XXH32_testdata[4131] */ + { 2066, 0x00000000U, 0x4A995E77U }, /* XSUM_XXH32_testdata[4132] */ + { 2066, 0x9E3779B1U, 0x67F7EB59U }, /* XSUM_XXH32_testdata[4133] */ + { 2067, 0x00000000U, 0x241E6D99U }, /* XSUM_XXH32_testdata[4134] */ + { 2067, 0x9E3779B1U, 0x7FB35950U }, /* XSUM_XXH32_testdata[4135] */ + { 2068, 0x00000000U, 0x807203FFU }, /* XSUM_XXH32_testdata[4136] */ + { 2068, 0x9E3779B1U, 0x84F6AADCU }, /* XSUM_XXH32_testdata[4137] */ + { 2069, 0x00000000U, 0x713F8660U }, /* XSUM_XXH32_testdata[4138] */ + { 2069, 0x9E3779B1U, 0x28046D70U }, /* XSUM_XXH32_testdata[4139] */ + { 2070, 0x00000000U, 0x8BB2D1DCU }, /* XSUM_XXH32_testdata[4140] */ + { 2070, 0x9E3779B1U, 0x88B61103U }, /* XSUM_XXH32_testdata[4141] */ + { 2071, 0x00000000U, 0x6952D726U }, /* XSUM_XXH32_testdata[4142] */ + { 2071, 0x9E3779B1U, 0xCA5E851DU }, /* XSUM_XXH32_testdata[4143] */ + { 2072, 0x00000000U, 0xBC494A9DU }, /* XSUM_XXH32_testdata[4144] */ + { 2072, 0x9E3779B1U, 0x2245A660U }, /* XSUM_XXH32_testdata[4145] */ + { 2073, 0x00000000U, 0xEF4414E3U }, /* XSUM_XXH32_testdata[4146] */ + { 2073, 0x9E3779B1U, 0x1720471BU }, /* XSUM_XXH32_testdata[4147] */ + { 2074, 0x00000000U, 0x498A6F0BU }, /* XSUM_XXH32_testdata[4148] */ + { 2074, 0x9E3779B1U, 0x6BC7CB59U }, /* XSUM_XXH32_testdata[4149] */ + { 2075, 0x00000000U, 0x7436EB2CU }, /* XSUM_XXH32_testdata[4150] */ + { 2075, 0x9E3779B1U, 0xD1770A41U }, /* XSUM_XXH32_testdata[4151] */ + { 2076, 0x00000000U, 0xE7ED09E0U }, /* XSUM_XXH32_testdata[4152] */ + { 2076, 0x9E3779B1U, 0xFE421D54U }, /* XSUM_XXH32_testdata[4153] */ + { 2077, 0x00000000U, 0x884E145EU }, /* XSUM_XXH32_testdata[4154] */ + { 2077, 0x9E3779B1U, 0x5106C772U }, /* XSUM_XXH32_testdata[4155] */ + { 2078, 0x00000000U, 0xA0483532U }, /* XSUM_XXH32_testdata[4156] */ + { 2078, 0x9E3779B1U, 0x807EC1E3U }, /* XSUM_XXH32_testdata[4157] */ + { 2079, 0x00000000U, 0x6E5D2A65U }, /* XSUM_XXH32_testdata[4158] */ + { 2079, 0x9E3779B1U, 0xE0AECE5AU }, /* XSUM_XXH32_testdata[4159] */ + { 2080, 0x00000000U, 0xDDFF4A1FU }, /* XSUM_XXH32_testdata[4160] */ + { 2080, 0x9E3779B1U, 0x74896BB0U }, /* XSUM_XXH32_testdata[4161] */ + { 2081, 0x00000000U, 0x8E2E4382U }, /* XSUM_XXH32_testdata[4162] */ + { 2081, 0x9E3779B1U, 0x6F62BBFFU }, /* XSUM_XXH32_testdata[4163] */ + { 2082, 0x00000000U, 0x2BA6E39CU }, /* XSUM_XXH32_testdata[4164] */ + { 2082, 0x9E3779B1U, 0x83A3C889U }, /* XSUM_XXH32_testdata[4165] */ + { 2083, 0x00000000U, 0x6108A48CU }, /* XSUM_XXH32_testdata[4166] */ + { 2083, 0x9E3779B1U, 0xAC9D1C66U }, /* XSUM_XXH32_testdata[4167] */ + { 2084, 0x00000000U, 0x0F218683U }, /* XSUM_XXH32_testdata[4168] */ + { 2084, 0x9E3779B1U, 0x9812C2A7U }, /* XSUM_XXH32_testdata[4169] */ + { 2085, 0x00000000U, 0xCFCA7398U }, /* XSUM_XXH32_testdata[4170] */ + { 2085, 0x9E3779B1U, 0xDCEBCDDDU }, /* XSUM_XXH32_testdata[4171] */ + { 2086, 0x00000000U, 0x56C5D691U }, /* XSUM_XXH32_testdata[4172] */ + { 2086, 0x9E3779B1U, 0xC37D8A9FU }, /* XSUM_XXH32_testdata[4173] */ + { 2087, 0x00000000U, 0x23C0782DU }, /* XSUM_XXH32_testdata[4174] */ + { 2087, 0x9E3779B1U, 0x32D0C4E7U }, /* XSUM_XXH32_testdata[4175] */ + { 2088, 0x00000000U, 0x52055550U }, /* XSUM_XXH32_testdata[4176] */ + { 2088, 0x9E3779B1U, 0x8153DC52U }, /* XSUM_XXH32_testdata[4177] */ + { 2089, 0x00000000U, 0x396A700FU }, /* XSUM_XXH32_testdata[4178] */ + { 2089, 0x9E3779B1U, 0x86CC74C0U }, /* XSUM_XXH32_testdata[4179] */ + { 2090, 0x00000000U, 0x3C1E21A9U }, /* XSUM_XXH32_testdata[4180] */ + { 2090, 0x9E3779B1U, 0xAA919D65U }, /* XSUM_XXH32_testdata[4181] */ + { 2091, 0x00000000U, 0xA1EE86D3U }, /* XSUM_XXH32_testdata[4182] */ + { 2091, 0x9E3779B1U, 0x7508F175U }, /* XSUM_XXH32_testdata[4183] */ + { 2092, 0x00000000U, 0x0C0C92CEU }, /* XSUM_XXH32_testdata[4184] */ + { 2092, 0x9E3779B1U, 0x31AAE533U }, /* XSUM_XXH32_testdata[4185] */ + { 2093, 0x00000000U, 0x0FED09E1U }, /* XSUM_XXH32_testdata[4186] */ + { 2093, 0x9E3779B1U, 0xA71F16A2U }, /* XSUM_XXH32_testdata[4187] */ + { 2094, 0x00000000U, 0x2B97260DU }, /* XSUM_XXH32_testdata[4188] */ + { 2094, 0x9E3779B1U, 0x1F320538U }, /* XSUM_XXH32_testdata[4189] */ + { 2095, 0x00000000U, 0x226857ECU }, /* XSUM_XXH32_testdata[4190] */ + { 2095, 0x9E3779B1U, 0xBE2AA830U }, /* XSUM_XXH32_testdata[4191] */ + { 2096, 0x00000000U, 0x483AF09AU }, /* XSUM_XXH32_testdata[4192] */ + { 2096, 0x9E3779B1U, 0xEB914369U }, /* XSUM_XXH32_testdata[4193] */ + { 2097, 0x00000000U, 0x2D17844DU }, /* XSUM_XXH32_testdata[4194] */ + { 2097, 0x9E3779B1U, 0xA950DEBDU }, /* XSUM_XXH32_testdata[4195] */ + { 2098, 0x00000000U, 0x1439FDE2U }, /* XSUM_XXH32_testdata[4196] */ + { 2098, 0x9E3779B1U, 0x26FE8A85U }, /* XSUM_XXH32_testdata[4197] */ + { 2099, 0x00000000U, 0x5772718CU }, /* XSUM_XXH32_testdata[4198] */ + { 2099, 0x9E3779B1U, 0x4FCA33C3U }, /* XSUM_XXH32_testdata[4199] */ + { 2100, 0x00000000U, 0xD9EB2B50U }, /* XSUM_XXH32_testdata[4200] */ + { 2100, 0x9E3779B1U, 0xE8F459E0U }, /* XSUM_XXH32_testdata[4201] */ + { 2101, 0x00000000U, 0xA28FB819U }, /* XSUM_XXH32_testdata[4202] */ + { 2101, 0x9E3779B1U, 0x9280CA2FU }, /* XSUM_XXH32_testdata[4203] */ + { 2102, 0x00000000U, 0xEBCFFDB8U }, /* XSUM_XXH32_testdata[4204] */ + { 2102, 0x9E3779B1U, 0xEB017DC5U }, /* XSUM_XXH32_testdata[4205] */ + { 2103, 0x00000000U, 0x54058833U }, /* XSUM_XXH32_testdata[4206] */ + { 2103, 0x9E3779B1U, 0x28EB819FU }, /* XSUM_XXH32_testdata[4207] */ + { 2104, 0x00000000U, 0xE578AD4EU }, /* XSUM_XXH32_testdata[4208] */ + { 2104, 0x9E3779B1U, 0x98998373U }, /* XSUM_XXH32_testdata[4209] */ + { 2105, 0x00000000U, 0x75DD1E49U }, /* XSUM_XXH32_testdata[4210] */ + { 2105, 0x9E3779B1U, 0x55FB4D69U }, /* XSUM_XXH32_testdata[4211] */ + { 2106, 0x00000000U, 0x266483CAU }, /* XSUM_XXH32_testdata[4212] */ + { 2106, 0x9E3779B1U, 0x1B37FDC4U }, /* XSUM_XXH32_testdata[4213] */ + { 2107, 0x00000000U, 0x2703FCA6U }, /* XSUM_XXH32_testdata[4214] */ + { 2107, 0x9E3779B1U, 0x668C4D82U }, /* XSUM_XXH32_testdata[4215] */ + { 2108, 0x00000000U, 0xCCFF2548U }, /* XSUM_XXH32_testdata[4216] */ + { 2108, 0x9E3779B1U, 0x22EBB2C2U }, /* XSUM_XXH32_testdata[4217] */ + { 2109, 0x00000000U, 0x02A027B1U }, /* XSUM_XXH32_testdata[4218] */ + { 2109, 0x9E3779B1U, 0xC8F3C892U }, /* XSUM_XXH32_testdata[4219] */ + { 2110, 0x00000000U, 0x1F3AD215U }, /* XSUM_XXH32_testdata[4220] */ + { 2110, 0x9E3779B1U, 0xF89BB413U }, /* XSUM_XXH32_testdata[4221] */ + { 2111, 0x00000000U, 0x75B32021U }, /* XSUM_XXH32_testdata[4222] */ + { 2111, 0x9E3779B1U, 0x9E179034U }, /* XSUM_XXH32_testdata[4223] */ + { 2112, 0x00000000U, 0x90BA76C2U }, /* XSUM_XXH32_testdata[4224] */ + { 2112, 0x9E3779B1U, 0x89BC588FU }, /* XSUM_XXH32_testdata[4225] */ + { 2113, 0x00000000U, 0xA4E0D6B2U }, /* XSUM_XXH32_testdata[4226] */ + { 2113, 0x9E3779B1U, 0xE5F97F9AU }, /* XSUM_XXH32_testdata[4227] */ + { 2114, 0x00000000U, 0x9B30F92FU }, /* XSUM_XXH32_testdata[4228] */ + { 2114, 0x9E3779B1U, 0xB072872FU }, /* XSUM_XXH32_testdata[4229] */ + { 2115, 0x00000000U, 0xFB8EE30EU }, /* XSUM_XXH32_testdata[4230] */ + { 2115, 0x9E3779B1U, 0xA965355EU }, /* XSUM_XXH32_testdata[4231] */ + { 2116, 0x00000000U, 0x4ECD0C57U }, /* XSUM_XXH32_testdata[4232] */ + { 2116, 0x9E3779B1U, 0x66DCD701U }, /* XSUM_XXH32_testdata[4233] */ + { 2117, 0x00000000U, 0xBDED9E14U }, /* XSUM_XXH32_testdata[4234] */ + { 2117, 0x9E3779B1U, 0x8330F84CU }, /* XSUM_XXH32_testdata[4235] */ + { 2118, 0x00000000U, 0x6636A7CBU }, /* XSUM_XXH32_testdata[4236] */ + { 2118, 0x9E3779B1U, 0xC1305149U }, /* XSUM_XXH32_testdata[4237] */ + { 2119, 0x00000000U, 0xEE6E1F55U }, /* XSUM_XXH32_testdata[4238] */ + { 2119, 0x9E3779B1U, 0x883D1A16U }, /* XSUM_XXH32_testdata[4239] */ + { 2120, 0x00000000U, 0xA3D44D6BU }, /* XSUM_XXH32_testdata[4240] */ + { 2120, 0x9E3779B1U, 0x29A7B351U }, /* XSUM_XXH32_testdata[4241] */ + { 2121, 0x00000000U, 0x8155248FU }, /* XSUM_XXH32_testdata[4242] */ + { 2121, 0x9E3779B1U, 0x115824D3U }, /* XSUM_XXH32_testdata[4243] */ + { 2122, 0x00000000U, 0xDAB244E4U }, /* XSUM_XXH32_testdata[4244] */ + { 2122, 0x9E3779B1U, 0x538CF5D7U }, /* XSUM_XXH32_testdata[4245] */ + { 2123, 0x00000000U, 0xCCADAA76U }, /* XSUM_XXH32_testdata[4246] */ + { 2123, 0x9E3779B1U, 0x79CE1918U }, /* XSUM_XXH32_testdata[4247] */ + { 2124, 0x00000000U, 0x291A0B1EU }, /* XSUM_XXH32_testdata[4248] */ + { 2124, 0x9E3779B1U, 0x0B6DFEACU }, /* XSUM_XXH32_testdata[4249] */ + { 2125, 0x00000000U, 0x6722DAE9U }, /* XSUM_XXH32_testdata[4250] */ + { 2125, 0x9E3779B1U, 0x0FE2989AU }, /* XSUM_XXH32_testdata[4251] */ + { 2126, 0x00000000U, 0xCA5552BDU }, /* XSUM_XXH32_testdata[4252] */ + { 2126, 0x9E3779B1U, 0x62FA78A6U }, /* XSUM_XXH32_testdata[4253] */ + { 2127, 0x00000000U, 0xD4D05195U }, /* XSUM_XXH32_testdata[4254] */ + { 2127, 0x9E3779B1U, 0x96D74687U }, /* XSUM_XXH32_testdata[4255] */ + { 2128, 0x00000000U, 0xAA1B18EFU }, /* XSUM_XXH32_testdata[4256] */ + { 2128, 0x9E3779B1U, 0x3916A04DU }, /* XSUM_XXH32_testdata[4257] */ + { 2129, 0x00000000U, 0x77BEC316U }, /* XSUM_XXH32_testdata[4258] */ + { 2129, 0x9E3779B1U, 0xEC73137EU }, /* XSUM_XXH32_testdata[4259] */ + { 2130, 0x00000000U, 0xB447EDE9U }, /* XSUM_XXH32_testdata[4260] */ + { 2130, 0x9E3779B1U, 0x2BAD6C2EU }, /* XSUM_XXH32_testdata[4261] */ + { 2131, 0x00000000U, 0xC4EABAB1U }, /* XSUM_XXH32_testdata[4262] */ + { 2131, 0x9E3779B1U, 0xBF962F78U }, /* XSUM_XXH32_testdata[4263] */ + { 2132, 0x00000000U, 0xF5D647AEU }, /* XSUM_XXH32_testdata[4264] */ + { 2132, 0x9E3779B1U, 0x453B9698U }, /* XSUM_XXH32_testdata[4265] */ + { 2133, 0x00000000U, 0xC067D3EBU }, /* XSUM_XXH32_testdata[4266] */ + { 2133, 0x9E3779B1U, 0x31C65AC9U }, /* XSUM_XXH32_testdata[4267] */ + { 2134, 0x00000000U, 0xED35F95BU }, /* XSUM_XXH32_testdata[4268] */ + { 2134, 0x9E3779B1U, 0x694511F0U }, /* XSUM_XXH32_testdata[4269] */ + { 2135, 0x00000000U, 0x66EAE8A9U }, /* XSUM_XXH32_testdata[4270] */ + { 2135, 0x9E3779B1U, 0xD92C573CU }, /* XSUM_XXH32_testdata[4271] */ + { 2136, 0x00000000U, 0xCB07B88BU }, /* XSUM_XXH32_testdata[4272] */ + { 2136, 0x9E3779B1U, 0x2E05A315U }, /* XSUM_XXH32_testdata[4273] */ + { 2137, 0x00000000U, 0xA507A109U }, /* XSUM_XXH32_testdata[4274] */ + { 2137, 0x9E3779B1U, 0x8F57286CU }, /* XSUM_XXH32_testdata[4275] */ + { 2138, 0x00000000U, 0xC7ED3A83U }, /* XSUM_XXH32_testdata[4276] */ + { 2138, 0x9E3779B1U, 0x79911DEEU }, /* XSUM_XXH32_testdata[4277] */ + { 2139, 0x00000000U, 0x92FC8AB7U }, /* XSUM_XXH32_testdata[4278] */ + { 2139, 0x9E3779B1U, 0x32875F23U }, /* XSUM_XXH32_testdata[4279] */ + { 2140, 0x00000000U, 0x2B0CBB1FU }, /* XSUM_XXH32_testdata[4280] */ + { 2140, 0x9E3779B1U, 0x36F822AAU }, /* XSUM_XXH32_testdata[4281] */ + { 2141, 0x00000000U, 0xC597BD36U }, /* XSUM_XXH32_testdata[4282] */ + { 2141, 0x9E3779B1U, 0x7CC8B801U }, /* XSUM_XXH32_testdata[4283] */ + { 2142, 0x00000000U, 0x7EB11318U }, /* XSUM_XXH32_testdata[4284] */ + { 2142, 0x9E3779B1U, 0x74617AD2U }, /* XSUM_XXH32_testdata[4285] */ + { 2143, 0x00000000U, 0x27275139U }, /* XSUM_XXH32_testdata[4286] */ + { 2143, 0x9E3779B1U, 0xC5EDC2F3U }, /* XSUM_XXH32_testdata[4287] */ + { 2144, 0x00000000U, 0x6A643B07U }, /* XSUM_XXH32_testdata[4288] */ + { 2144, 0x9E3779B1U, 0xF7B9436FU }, /* XSUM_XXH32_testdata[4289] */ + { 2145, 0x00000000U, 0x5015717CU }, /* XSUM_XXH32_testdata[4290] */ + { 2145, 0x9E3779B1U, 0x43760B37U }, /* XSUM_XXH32_testdata[4291] */ + { 2146, 0x00000000U, 0x2E2265F8U }, /* XSUM_XXH32_testdata[4292] */ + { 2146, 0x9E3779B1U, 0xF6DA51EEU }, /* XSUM_XXH32_testdata[4293] */ + { 2147, 0x00000000U, 0x42FBB597U }, /* XSUM_XXH32_testdata[4294] */ + { 2147, 0x9E3779B1U, 0x00330918U }, /* XSUM_XXH32_testdata[4295] */ + { 2148, 0x00000000U, 0x3FC0AD5CU }, /* XSUM_XXH32_testdata[4296] */ + { 2148, 0x9E3779B1U, 0x045DBF11U }, /* XSUM_XXH32_testdata[4297] */ + { 2149, 0x00000000U, 0x4020BF41U }, /* XSUM_XXH32_testdata[4298] */ + { 2149, 0x9E3779B1U, 0xFB478550U }, /* XSUM_XXH32_testdata[4299] */ + { 2150, 0x00000000U, 0xBA072C74U }, /* XSUM_XXH32_testdata[4300] */ + { 2150, 0x9E3779B1U, 0xE472A9E7U }, /* XSUM_XXH32_testdata[4301] */ + { 2151, 0x00000000U, 0x815645CAU }, /* XSUM_XXH32_testdata[4302] */ + { 2151, 0x9E3779B1U, 0x37ED1656U }, /* XSUM_XXH32_testdata[4303] */ + { 2152, 0x00000000U, 0x3B2B5205U }, /* XSUM_XXH32_testdata[4304] */ + { 2152, 0x9E3779B1U, 0x14752F3FU }, /* XSUM_XXH32_testdata[4305] */ + { 2153, 0x00000000U, 0x6916B481U }, /* XSUM_XXH32_testdata[4306] */ + { 2153, 0x9E3779B1U, 0xC59879F7U }, /* XSUM_XXH32_testdata[4307] */ + { 2154, 0x00000000U, 0x2306D44EU }, /* XSUM_XXH32_testdata[4308] */ + { 2154, 0x9E3779B1U, 0xC4ED179DU }, /* XSUM_XXH32_testdata[4309] */ + { 2155, 0x00000000U, 0x1CE7C121U }, /* XSUM_XXH32_testdata[4310] */ + { 2155, 0x9E3779B1U, 0x14F705A5U }, /* XSUM_XXH32_testdata[4311] */ + { 2156, 0x00000000U, 0x91321AECU }, /* XSUM_XXH32_testdata[4312] */ + { 2156, 0x9E3779B1U, 0x5A27F995U }, /* XSUM_XXH32_testdata[4313] */ + { 2157, 0x00000000U, 0x5A862E05U }, /* XSUM_XXH32_testdata[4314] */ + { 2157, 0x9E3779B1U, 0xBEFE3051U }, /* XSUM_XXH32_testdata[4315] */ + { 2158, 0x00000000U, 0x53C1D508U }, /* XSUM_XXH32_testdata[4316] */ + { 2158, 0x9E3779B1U, 0x08B825C0U }, /* XSUM_XXH32_testdata[4317] */ + { 2159, 0x00000000U, 0x998646FEU }, /* XSUM_XXH32_testdata[4318] */ + { 2159, 0x9E3779B1U, 0xE9F9CB10U }, /* XSUM_XXH32_testdata[4319] */ + { 2160, 0x00000000U, 0x73BA8D96U }, /* XSUM_XXH32_testdata[4320] */ + { 2160, 0x9E3779B1U, 0xE29F6E85U }, /* XSUM_XXH32_testdata[4321] */ + { 2161, 0x00000000U, 0xFE8E8571U }, /* XSUM_XXH32_testdata[4322] */ + { 2161, 0x9E3779B1U, 0x8702B7E4U }, /* XSUM_XXH32_testdata[4323] */ + { 2162, 0x00000000U, 0x50C31782U }, /* XSUM_XXH32_testdata[4324] */ + { 2162, 0x9E3779B1U, 0xA3CF4F8AU }, /* XSUM_XXH32_testdata[4325] */ + { 2163, 0x00000000U, 0x52332400U }, /* XSUM_XXH32_testdata[4326] */ + { 2163, 0x9E3779B1U, 0xD4753852U }, /* XSUM_XXH32_testdata[4327] */ + { 2164, 0x00000000U, 0x11981CA0U }, /* XSUM_XXH32_testdata[4328] */ + { 2164, 0x9E3779B1U, 0xB951C4E7U }, /* XSUM_XXH32_testdata[4329] */ + { 2165, 0x00000000U, 0x020CB658U }, /* XSUM_XXH32_testdata[4330] */ + { 2165, 0x9E3779B1U, 0x1C62E9FFU }, /* XSUM_XXH32_testdata[4331] */ + { 2166, 0x00000000U, 0x66A765C7U }, /* XSUM_XXH32_testdata[4332] */ + { 2166, 0x9E3779B1U, 0xD9A9267AU }, /* XSUM_XXH32_testdata[4333] */ + { 2167, 0x00000000U, 0x98D114F3U }, /* XSUM_XXH32_testdata[4334] */ + { 2167, 0x9E3779B1U, 0x26FCF092U }, /* XSUM_XXH32_testdata[4335] */ + { 2168, 0x00000000U, 0xA00817D1U }, /* XSUM_XXH32_testdata[4336] */ + { 2168, 0x9E3779B1U, 0x750C35A2U }, /* XSUM_XXH32_testdata[4337] */ + { 2169, 0x00000000U, 0xF1ACE5ADU }, /* XSUM_XXH32_testdata[4338] */ + { 2169, 0x9E3779B1U, 0x3DE1E6ABU }, /* XSUM_XXH32_testdata[4339] */ + { 2170, 0x00000000U, 0xF03CF8E3U }, /* XSUM_XXH32_testdata[4340] */ + { 2170, 0x9E3779B1U, 0x40412AD8U }, /* XSUM_XXH32_testdata[4341] */ + { 2171, 0x00000000U, 0x928C9B01U }, /* XSUM_XXH32_testdata[4342] */ + { 2171, 0x9E3779B1U, 0xA5794E20U }, /* XSUM_XXH32_testdata[4343] */ + { 2172, 0x00000000U, 0x691771D3U }, /* XSUM_XXH32_testdata[4344] */ + { 2172, 0x9E3779B1U, 0xC39FA55AU }, /* XSUM_XXH32_testdata[4345] */ + { 2173, 0x00000000U, 0xB979130AU }, /* XSUM_XXH32_testdata[4346] */ + { 2173, 0x9E3779B1U, 0x3B4ED784U }, /* XSUM_XXH32_testdata[4347] */ + { 2174, 0x00000000U, 0x4A0FD14CU }, /* XSUM_XXH32_testdata[4348] */ + { 2174, 0x9E3779B1U, 0xBD90DDE8U }, /* XSUM_XXH32_testdata[4349] */ + { 2175, 0x00000000U, 0x8B696624U }, /* XSUM_XXH32_testdata[4350] */ + { 2175, 0x9E3779B1U, 0xE712EE46U }, /* XSUM_XXH32_testdata[4351] */ + { 2176, 0x00000000U, 0x7FB86E80U }, /* XSUM_XXH32_testdata[4352] */ + { 2176, 0x9E3779B1U, 0x58063193U }, /* XSUM_XXH32_testdata[4353] */ + { 2177, 0x00000000U, 0x13A7F525U }, /* XSUM_XXH32_testdata[4354] */ + { 2177, 0x9E3779B1U, 0x4A13744DU }, /* XSUM_XXH32_testdata[4355] */ + { 2178, 0x00000000U, 0x4B1E442FU }, /* XSUM_XXH32_testdata[4356] */ + { 2178, 0x9E3779B1U, 0x94CBE9E3U }, /* XSUM_XXH32_testdata[4357] */ + { 2179, 0x00000000U, 0x498768E4U }, /* XSUM_XXH32_testdata[4358] */ + { 2179, 0x9E3779B1U, 0xA719C141U }, /* XSUM_XXH32_testdata[4359] */ + { 2180, 0x00000000U, 0xA8BDEA9FU }, /* XSUM_XXH32_testdata[4360] */ + { 2180, 0x9E3779B1U, 0x1442B51EU }, /* XSUM_XXH32_testdata[4361] */ + { 2181, 0x00000000U, 0xF7591169U }, /* XSUM_XXH32_testdata[4362] */ + { 2181, 0x9E3779B1U, 0xEE9E089EU }, /* XSUM_XXH32_testdata[4363] */ + { 2182, 0x00000000U, 0x48B900C1U }, /* XSUM_XXH32_testdata[4364] */ + { 2182, 0x9E3779B1U, 0x8B41080FU }, /* XSUM_XXH32_testdata[4365] */ + { 2183, 0x00000000U, 0x443E9B4AU }, /* XSUM_XXH32_testdata[4366] */ + { 2183, 0x9E3779B1U, 0x7417F2E4U }, /* XSUM_XXH32_testdata[4367] */ + { 2184, 0x00000000U, 0xB2464C2AU }, /* XSUM_XXH32_testdata[4368] */ + { 2184, 0x9E3779B1U, 0x700183B9U }, /* XSUM_XXH32_testdata[4369] */ + { 2185, 0x00000000U, 0xC3B03C48U }, /* XSUM_XXH32_testdata[4370] */ + { 2185, 0x9E3779B1U, 0xEBF56618U }, /* XSUM_XXH32_testdata[4371] */ + { 2186, 0x00000000U, 0x5022D513U }, /* XSUM_XXH32_testdata[4372] */ + { 2186, 0x9E3779B1U, 0xC86FB5F9U }, /* XSUM_XXH32_testdata[4373] */ + { 2187, 0x00000000U, 0xB9EE8EE7U }, /* XSUM_XXH32_testdata[4374] */ + { 2187, 0x9E3779B1U, 0x1FD9084AU }, /* XSUM_XXH32_testdata[4375] */ + { 2188, 0x00000000U, 0x5E026F1FU }, /* XSUM_XXH32_testdata[4376] */ + { 2188, 0x9E3779B1U, 0xBD338AC9U }, /* XSUM_XXH32_testdata[4377] */ + { 2189, 0x00000000U, 0xBA92F986U }, /* XSUM_XXH32_testdata[4378] */ + { 2189, 0x9E3779B1U, 0x96B1EB29U }, /* XSUM_XXH32_testdata[4379] */ + { 2190, 0x00000000U, 0xFA8B5152U }, /* XSUM_XXH32_testdata[4380] */ + { 2190, 0x9E3779B1U, 0xD2DE3CCEU }, /* XSUM_XXH32_testdata[4381] */ + { 2191, 0x00000000U, 0x14A1B5C2U }, /* XSUM_XXH32_testdata[4382] */ + { 2191, 0x9E3779B1U, 0x9F3DF200U }, /* XSUM_XXH32_testdata[4383] */ + { 2192, 0x00000000U, 0xAFBC0996U }, /* XSUM_XXH32_testdata[4384] */ + { 2192, 0x9E3779B1U, 0x419F8378U }, /* XSUM_XXH32_testdata[4385] */ + { 2193, 0x00000000U, 0x0662AD6CU }, /* XSUM_XXH32_testdata[4386] */ + { 2193, 0x9E3779B1U, 0x79AA6AB8U }, /* XSUM_XXH32_testdata[4387] */ + { 2194, 0x00000000U, 0x2714B7E6U }, /* XSUM_XXH32_testdata[4388] */ + { 2194, 0x9E3779B1U, 0xF529B3ADU }, /* XSUM_XXH32_testdata[4389] */ + { 2195, 0x00000000U, 0x563D02D5U }, /* XSUM_XXH32_testdata[4390] */ + { 2195, 0x9E3779B1U, 0x4065D039U }, /* XSUM_XXH32_testdata[4391] */ + { 2196, 0x00000000U, 0x36DCE091U }, /* XSUM_XXH32_testdata[4392] */ + { 2196, 0x9E3779B1U, 0xEABCEC00U }, /* XSUM_XXH32_testdata[4393] */ + { 2197, 0x00000000U, 0x67F9681CU }, /* XSUM_XXH32_testdata[4394] */ + { 2197, 0x9E3779B1U, 0x0E885D58U }, /* XSUM_XXH32_testdata[4395] */ + { 2198, 0x00000000U, 0xC933CA0FU }, /* XSUM_XXH32_testdata[4396] */ + { 2198, 0x9E3779B1U, 0xF1EDF626U }, /* XSUM_XXH32_testdata[4397] */ + { 2199, 0x00000000U, 0xB00C6C80U }, /* XSUM_XXH32_testdata[4398] */ + { 2199, 0x9E3779B1U, 0x65775351U }, /* XSUM_XXH32_testdata[4399] */ + { 2200, 0x00000000U, 0xD8577660U }, /* XSUM_XXH32_testdata[4400] */ + { 2200, 0x9E3779B1U, 0xB5D27E08U }, /* XSUM_XXH32_testdata[4401] */ + { 2201, 0x00000000U, 0x806C4319U }, /* XSUM_XXH32_testdata[4402] */ + { 2201, 0x9E3779B1U, 0x38C83A91U }, /* XSUM_XXH32_testdata[4403] */ + { 2202, 0x00000000U, 0xBFBBF483U }, /* XSUM_XXH32_testdata[4404] */ + { 2202, 0x9E3779B1U, 0xC3D62234U }, /* XSUM_XXH32_testdata[4405] */ + { 2203, 0x00000000U, 0xD3D92983U }, /* XSUM_XXH32_testdata[4406] */ + { 2203, 0x9E3779B1U, 0xFB1AA5C4U }, /* XSUM_XXH32_testdata[4407] */ + { 2204, 0x00000000U, 0x1627B9FEU }, /* XSUM_XXH32_testdata[4408] */ + { 2204, 0x9E3779B1U, 0x81EBA0B9U }, /* XSUM_XXH32_testdata[4409] */ + { 2205, 0x00000000U, 0x1FB26F2DU }, /* XSUM_XXH32_testdata[4410] */ + { 2205, 0x9E3779B1U, 0x7EF255DDU }, /* XSUM_XXH32_testdata[4411] */ + { 2206, 0x00000000U, 0xFED27284U }, /* XSUM_XXH32_testdata[4412] */ + { 2206, 0x9E3779B1U, 0x69255805U }, /* XSUM_XXH32_testdata[4413] */ + { 2207, 0x00000000U, 0xD708979EU }, /* XSUM_XXH32_testdata[4414] */ + { 2207, 0x9E3779B1U, 0xCDA17E54U }, /* XSUM_XXH32_testdata[4415] */ + { 2208, 0x00000000U, 0xA8550B50U }, /* XSUM_XXH32_testdata[4416] */ + { 2208, 0x9E3779B1U, 0x1F647E63U }, /* XSUM_XXH32_testdata[4417] */ + { 2209, 0x00000000U, 0x0B4BD972U }, /* XSUM_XXH32_testdata[4418] */ + { 2209, 0x9E3779B1U, 0x65BBC998U }, /* XSUM_XXH32_testdata[4419] */ + { 2210, 0x00000000U, 0x8ECE7003U }, /* XSUM_XXH32_testdata[4420] */ + { 2210, 0x9E3779B1U, 0x7929D7ABU }, /* XSUM_XXH32_testdata[4421] */ + { 2211, 0x00000000U, 0x321F41EDU }, /* XSUM_XXH32_testdata[4422] */ + { 2211, 0x9E3779B1U, 0x88B3A9FAU }, /* XSUM_XXH32_testdata[4423] */ + { 2212, 0x00000000U, 0x7FA5938FU }, /* XSUM_XXH32_testdata[4424] */ + { 2212, 0x9E3779B1U, 0xD1EC32D3U }, /* XSUM_XXH32_testdata[4425] */ + { 2213, 0x00000000U, 0x20819556U }, /* XSUM_XXH32_testdata[4426] */ + { 2213, 0x9E3779B1U, 0x609F550AU }, /* XSUM_XXH32_testdata[4427] */ + { 2214, 0x00000000U, 0xD257A8C1U }, /* XSUM_XXH32_testdata[4428] */ + { 2214, 0x9E3779B1U, 0x8C57DF62U }, /* XSUM_XXH32_testdata[4429] */ + { 2215, 0x00000000U, 0xF131CE75U }, /* XSUM_XXH32_testdata[4430] */ + { 2215, 0x9E3779B1U, 0xC2B31ED6U }, /* XSUM_XXH32_testdata[4431] */ + { 2216, 0x00000000U, 0x073FB52BU }, /* XSUM_XXH32_testdata[4432] */ + { 2216, 0x9E3779B1U, 0x308905ABU }, /* XSUM_XXH32_testdata[4433] */ + { 2217, 0x00000000U, 0x646B7573U }, /* XSUM_XXH32_testdata[4434] */ + { 2217, 0x9E3779B1U, 0x28DFBE07U }, /* XSUM_XXH32_testdata[4435] */ + { 2218, 0x00000000U, 0x5205F129U }, /* XSUM_XXH32_testdata[4436] */ + { 2218, 0x9E3779B1U, 0x5475F01BU }, /* XSUM_XXH32_testdata[4437] */ + { 2219, 0x00000000U, 0x03D8C19DU }, /* XSUM_XXH32_testdata[4438] */ + { 2219, 0x9E3779B1U, 0xCF68004DU }, /* XSUM_XXH32_testdata[4439] */ + { 2220, 0x00000000U, 0xDB6D9660U }, /* XSUM_XXH32_testdata[4440] */ + { 2220, 0x9E3779B1U, 0x66ADB310U }, /* XSUM_XXH32_testdata[4441] */ + { 2221, 0x00000000U, 0xEFD92A58U }, /* XSUM_XXH32_testdata[4442] */ + { 2221, 0x9E3779B1U, 0x93610C4FU }, /* XSUM_XXH32_testdata[4443] */ + { 2222, 0x00000000U, 0xB2F22C69U }, /* XSUM_XXH32_testdata[4444] */ + { 2222, 0x9E3779B1U, 0x20D78E8CU }, /* XSUM_XXH32_testdata[4445] */ + { 2223, 0x00000000U, 0xAB091A36U }, /* XSUM_XXH32_testdata[4446] */ + { 2223, 0x9E3779B1U, 0xD9C75461U }, /* XSUM_XXH32_testdata[4447] */ + { 2224, 0x00000000U, 0xAE997C55U }, /* XSUM_XXH32_testdata[4448] */ + { 2224, 0x9E3779B1U, 0xA8959027U }, /* XSUM_XXH32_testdata[4449] */ + { 2225, 0x00000000U, 0x7CB4E344U }, /* XSUM_XXH32_testdata[4450] */ + { 2225, 0x9E3779B1U, 0x13A10FFDU }, /* XSUM_XXH32_testdata[4451] */ + { 2226, 0x00000000U, 0x008888FBU }, /* XSUM_XXH32_testdata[4452] */ + { 2226, 0x9E3779B1U, 0xD1897F17U }, /* XSUM_XXH32_testdata[4453] */ + { 2227, 0x00000000U, 0xB6838035U }, /* XSUM_XXH32_testdata[4454] */ + { 2227, 0x9E3779B1U, 0xF7829F51U }, /* XSUM_XXH32_testdata[4455] */ + { 2228, 0x00000000U, 0xC4C87039U }, /* XSUM_XXH32_testdata[4456] */ + { 2228, 0x9E3779B1U, 0x47F00E7AU }, /* XSUM_XXH32_testdata[4457] */ + { 2229, 0x00000000U, 0xF6196C05U }, /* XSUM_XXH32_testdata[4458] */ + { 2229, 0x9E3779B1U, 0x07F98FD1U }, /* XSUM_XXH32_testdata[4459] */ + { 2230, 0x00000000U, 0xD717B53AU }, /* XSUM_XXH32_testdata[4460] */ + { 2230, 0x9E3779B1U, 0x88751237U }, /* XSUM_XXH32_testdata[4461] */ + { 2231, 0x00000000U, 0xEE206236U }, /* XSUM_XXH32_testdata[4462] */ + { 2231, 0x9E3779B1U, 0x9FD88083U }, /* XSUM_XXH32_testdata[4463] */ + { 2232, 0x00000000U, 0x20289B58U }, /* XSUM_XXH32_testdata[4464] */ + { 2232, 0x9E3779B1U, 0x5256A839U }, /* XSUM_XXH32_testdata[4465] */ + { 2233, 0x00000000U, 0xA031CD1CU }, /* XSUM_XXH32_testdata[4466] */ + { 2233, 0x9E3779B1U, 0x64590B58U }, /* XSUM_XXH32_testdata[4467] */ + { 2234, 0x00000000U, 0x2C82C500U }, /* XSUM_XXH32_testdata[4468] */ + { 2234, 0x9E3779B1U, 0x05802F24U }, /* XSUM_XXH32_testdata[4469] */ + { 2235, 0x00000000U, 0x7A008763U }, /* XSUM_XXH32_testdata[4470] */ + { 2235, 0x9E3779B1U, 0x99B6356BU }, /* XSUM_XXH32_testdata[4471] */ + { 2236, 0x00000000U, 0xF3EC5D8AU }, /* XSUM_XXH32_testdata[4472] */ + { 2236, 0x9E3779B1U, 0x51ACE959U }, /* XSUM_XXH32_testdata[4473] */ + { 2237, 0x00000000U, 0xC991D693U }, /* XSUM_XXH32_testdata[4474] */ + { 2237, 0x9E3779B1U, 0x298B272FU }, /* XSUM_XXH32_testdata[4475] */ + { 2238, 0x00000000U, 0x477DAD59U }, /* XSUM_XXH32_testdata[4476] */ + { 2238, 0x9E3779B1U, 0x012ADC64U }, /* XSUM_XXH32_testdata[4477] */ + { 2239, 0x00000000U, 0x9FBB59D9U }, /* XSUM_XXH32_testdata[4478] */ + { 2239, 0x9E3779B1U, 0x177BC5E0U }, /* XSUM_XXH32_testdata[4479] */ + { 2240, 0x00000000U, 0x59E4583DU }, /* XSUM_XXH32_testdata[4480] */ + { 2240, 0x9E3779B1U, 0x60DD71F3U }, /* XSUM_XXH32_testdata[4481] */ + { 2241, 0x00000000U, 0x2E8608B1U }, /* XSUM_XXH32_testdata[4482] */ + { 2241, 0x9E3779B1U, 0x10A1CA8BU }, /* XSUM_XXH32_testdata[4483] */ + { 2242, 0x00000000U, 0xA45E517FU }, /* XSUM_XXH32_testdata[4484] */ + { 2242, 0x9E3779B1U, 0x6C61A6D1U }, /* XSUM_XXH32_testdata[4485] */ + { 2243, 0x00000000U, 0x320E7EE7U }, /* XSUM_XXH32_testdata[4486] */ + { 2243, 0x9E3779B1U, 0x3B102816U }, /* XSUM_XXH32_testdata[4487] */ + { 2244, 0x00000000U, 0xBFF1F106U }, /* XSUM_XXH32_testdata[4488] */ + { 2244, 0x9E3779B1U, 0xF4E8F959U }, /* XSUM_XXH32_testdata[4489] */ + { 2245, 0x00000000U, 0xA2B49300U }, /* XSUM_XXH32_testdata[4490] */ + { 2245, 0x9E3779B1U, 0x659488D0U }, /* XSUM_XXH32_testdata[4491] */ + { 2246, 0x00000000U, 0xDCBC760EU }, /* XSUM_XXH32_testdata[4492] */ + { 2246, 0x9E3779B1U, 0xA95EAB52U }, /* XSUM_XXH32_testdata[4493] */ + { 2247, 0x00000000U, 0x4722715BU }, /* XSUM_XXH32_testdata[4494] */ + { 2247, 0x9E3779B1U, 0x741AC8D1U }, /* XSUM_XXH32_testdata[4495] */ + { 2248, 0x00000000U, 0x6C74A6C0U }, /* XSUM_XXH32_testdata[4496] */ + { 2248, 0x9E3779B1U, 0x9FD6C9D7U }, /* XSUM_XXH32_testdata[4497] */ + { 2249, 0x00000000U, 0x3CFE9D18U }, /* XSUM_XXH32_testdata[4498] */ + { 2249, 0x9E3779B1U, 0xE7E7597FU }, /* XSUM_XXH32_testdata[4499] */ + { 2250, 0x00000000U, 0x573EA547U }, /* XSUM_XXH32_testdata[4500] */ + { 2250, 0x9E3779B1U, 0x2FF14E69U }, /* XSUM_XXH32_testdata[4501] */ + { 2251, 0x00000000U, 0xEB0578DBU }, /* XSUM_XXH32_testdata[4502] */ + { 2251, 0x9E3779B1U, 0xA9E4F642U }, /* XSUM_XXH32_testdata[4503] */ + { 2252, 0x00000000U, 0xE69A2BBAU }, /* XSUM_XXH32_testdata[4504] */ + { 2252, 0x9E3779B1U, 0x7BADDE34U }, /* XSUM_XXH32_testdata[4505] */ + { 2253, 0x00000000U, 0x3A897C9BU }, /* XSUM_XXH32_testdata[4506] */ + { 2253, 0x9E3779B1U, 0x3A63B9D9U }, /* XSUM_XXH32_testdata[4507] */ + { 2254, 0x00000000U, 0x8C745A56U }, /* XSUM_XXH32_testdata[4508] */ + { 2254, 0x9E3779B1U, 0x3E75BE33U }, /* XSUM_XXH32_testdata[4509] */ + { 2255, 0x00000000U, 0x78A82E54U }, /* XSUM_XXH32_testdata[4510] */ + { 2255, 0x9E3779B1U, 0x54611400U }, /* XSUM_XXH32_testdata[4511] */ + { 2256, 0x00000000U, 0x7206E96CU }, /* XSUM_XXH32_testdata[4512] */ + { 2256, 0x9E3779B1U, 0x424F505DU }, /* XSUM_XXH32_testdata[4513] */ + { 2257, 0x00000000U, 0xA49636FBU }, /* XSUM_XXH32_testdata[4514] */ + { 2257, 0x9E3779B1U, 0xBD432C53U }, /* XSUM_XXH32_testdata[4515] */ + { 2258, 0x00000000U, 0x2D876C2EU }, /* XSUM_XXH32_testdata[4516] */ + { 2258, 0x9E3779B1U, 0x4EFD5C8EU }, /* XSUM_XXH32_testdata[4517] */ + { 2259, 0x00000000U, 0x2C02E2B2U }, /* XSUM_XXH32_testdata[4518] */ + { 2259, 0x9E3779B1U, 0x7300D02BU }, /* XSUM_XXH32_testdata[4519] */ + { 2260, 0x00000000U, 0x42BA6CC6U }, /* XSUM_XXH32_testdata[4520] */ + { 2260, 0x9E3779B1U, 0xF2036C3CU }, /* XSUM_XXH32_testdata[4521] */ + { 2261, 0x00000000U, 0x6AA72F1DU }, /* XSUM_XXH32_testdata[4522] */ + { 2261, 0x9E3779B1U, 0xE5959C13U }, /* XSUM_XXH32_testdata[4523] */ + { 2262, 0x00000000U, 0x93C4F084U }, /* XSUM_XXH32_testdata[4524] */ + { 2262, 0x9E3779B1U, 0x766A49E6U }, /* XSUM_XXH32_testdata[4525] */ + { 2263, 0x00000000U, 0x70D7F9C4U }, /* XSUM_XXH32_testdata[4526] */ + { 2263, 0x9E3779B1U, 0x6C15DAAFU }, /* XSUM_XXH32_testdata[4527] */ + { 2264, 0x00000000U, 0xC565B441U }, /* XSUM_XXH32_testdata[4528] */ + { 2264, 0x9E3779B1U, 0xAA9F3900U }, /* XSUM_XXH32_testdata[4529] */ + { 2265, 0x00000000U, 0x7462F69AU }, /* XSUM_XXH32_testdata[4530] */ + { 2265, 0x9E3779B1U, 0x6E3615C4U }, /* XSUM_XXH32_testdata[4531] */ + { 2266, 0x00000000U, 0x592C9892U }, /* XSUM_XXH32_testdata[4532] */ + { 2266, 0x9E3779B1U, 0xBC7837EEU }, /* XSUM_XXH32_testdata[4533] */ + { 2267, 0x00000000U, 0xEDF627B2U }, /* XSUM_XXH32_testdata[4534] */ + { 2267, 0x9E3779B1U, 0x448558C3U }, /* XSUM_XXH32_testdata[4535] */ + { 2268, 0x00000000U, 0xA8B7BC3BU }, /* XSUM_XXH32_testdata[4536] */ + { 2268, 0x9E3779B1U, 0x79DC8E55U }, /* XSUM_XXH32_testdata[4537] */ + { 2269, 0x00000000U, 0xB9BFE565U }, /* XSUM_XXH32_testdata[4538] */ + { 2269, 0x9E3779B1U, 0x6324D471U }, /* XSUM_XXH32_testdata[4539] */ + { 2270, 0x00000000U, 0x92F58D74U }, /* XSUM_XXH32_testdata[4540] */ + { 2270, 0x9E3779B1U, 0xBFC6C93CU }, /* XSUM_XXH32_testdata[4541] */ + { 2271, 0x00000000U, 0x4620E3A7U }, /* XSUM_XXH32_testdata[4542] */ + { 2271, 0x9E3779B1U, 0x24D8917CU }, /* XSUM_XXH32_testdata[4543] */ + { 2272, 0x00000000U, 0x2A361FAFU }, /* XSUM_XXH32_testdata[4544] */ + { 2272, 0x9E3779B1U, 0x6B84FA34U }, /* XSUM_XXH32_testdata[4545] */ + { 2273, 0x00000000U, 0x07FBAE52U }, /* XSUM_XXH32_testdata[4546] */ + { 2273, 0x9E3779B1U, 0x41ECD574U }, /* XSUM_XXH32_testdata[4547] */ + { 2274, 0x00000000U, 0x25316CD6U }, /* XSUM_XXH32_testdata[4548] */ + { 2274, 0x9E3779B1U, 0x980BECB7U }, /* XSUM_XXH32_testdata[4549] */ + { 2275, 0x00000000U, 0xA4C5373AU }, /* XSUM_XXH32_testdata[4550] */ + { 2275, 0x9E3779B1U, 0x39DB36E6U }, /* XSUM_XXH32_testdata[4551] */ + { 2276, 0x00000000U, 0x0A3648BBU }, /* XSUM_XXH32_testdata[4552] */ + { 2276, 0x9E3779B1U, 0x6F92247BU }, /* XSUM_XXH32_testdata[4553] */ + { 2277, 0x00000000U, 0x73337FA8U }, /* XSUM_XXH32_testdata[4554] */ + { 2277, 0x9E3779B1U, 0x4805FBC1U }, /* XSUM_XXH32_testdata[4555] */ + { 2278, 0x00000000U, 0x3D49A6E8U }, /* XSUM_XXH32_testdata[4556] */ + { 2278, 0x9E3779B1U, 0x6C7322F6U }, /* XSUM_XXH32_testdata[4557] */ + { 2279, 0x00000000U, 0x3338F5C0U }, /* XSUM_XXH32_testdata[4558] */ + { 2279, 0x9E3779B1U, 0x983C08C1U }, /* XSUM_XXH32_testdata[4559] */ + { 2280, 0x00000000U, 0x6EF8CFDAU }, /* XSUM_XXH32_testdata[4560] */ + { 2280, 0x9E3779B1U, 0xD70B484AU }, /* XSUM_XXH32_testdata[4561] */ + { 2281, 0x00000000U, 0x5A564CDFU }, /* XSUM_XXH32_testdata[4562] */ + { 2281, 0x9E3779B1U, 0x5C353DB4U }, /* XSUM_XXH32_testdata[4563] */ + { 2282, 0x00000000U, 0xC98A1064U }, /* XSUM_XXH32_testdata[4564] */ + { 2282, 0x9E3779B1U, 0x85EA76C6U }, /* XSUM_XXH32_testdata[4565] */ + { 2283, 0x00000000U, 0x8291CA32U }, /* XSUM_XXH32_testdata[4566] */ + { 2283, 0x9E3779B1U, 0x650EC76CU }, /* XSUM_XXH32_testdata[4567] */ + { 2284, 0x00000000U, 0xC3838346U }, /* XSUM_XXH32_testdata[4568] */ + { 2284, 0x9E3779B1U, 0x5C479DB6U }, /* XSUM_XXH32_testdata[4569] */ + { 2285, 0x00000000U, 0x2CA08A67U }, /* XSUM_XXH32_testdata[4570] */ + { 2285, 0x9E3779B1U, 0xF7340062U }, /* XSUM_XXH32_testdata[4571] */ + { 2286, 0x00000000U, 0x08745CDBU }, /* XSUM_XXH32_testdata[4572] */ + { 2286, 0x9E3779B1U, 0x06C8F4D1U }, /* XSUM_XXH32_testdata[4573] */ + { 2287, 0x00000000U, 0xA91F06E5U }, /* XSUM_XXH32_testdata[4574] */ + { 2287, 0x9E3779B1U, 0xC51815EFU }, /* XSUM_XXH32_testdata[4575] */ + { 2288, 0x00000000U, 0xA828DF5AU }, /* XSUM_XXH32_testdata[4576] */ + { 2288, 0x9E3779B1U, 0xD6CFD867U }, /* XSUM_XXH32_testdata[4577] */ + { 2289, 0x00000000U, 0x10695E42U }, /* XSUM_XXH32_testdata[4578] */ + { 2289, 0x9E3779B1U, 0xBE01DB37U }, /* XSUM_XXH32_testdata[4579] */ + { 2290, 0x00000000U, 0x9F7828BBU }, /* XSUM_XXH32_testdata[4580] */ + { 2290, 0x9E3779B1U, 0xB9766D05U }, /* XSUM_XXH32_testdata[4581] */ + { 2291, 0x00000000U, 0xEB54B2C6U }, /* XSUM_XXH32_testdata[4582] */ + { 2291, 0x9E3779B1U, 0x9D299329U }, /* XSUM_XXH32_testdata[4583] */ + { 2292, 0x00000000U, 0x1FC1F1CEU }, /* XSUM_XXH32_testdata[4584] */ + { 2292, 0x9E3779B1U, 0x76496642U }, /* XSUM_XXH32_testdata[4585] */ + { 2293, 0x00000000U, 0xB0C01399U }, /* XSUM_XXH32_testdata[4586] */ + { 2293, 0x9E3779B1U, 0x96F2E86AU }, /* XSUM_XXH32_testdata[4587] */ + { 2294, 0x00000000U, 0xFC0D7251U }, /* XSUM_XXH32_testdata[4588] */ + { 2294, 0x9E3779B1U, 0x6D2E955CU }, /* XSUM_XXH32_testdata[4589] */ + { 2295, 0x00000000U, 0x8391A466U }, /* XSUM_XXH32_testdata[4590] */ + { 2295, 0x9E3779B1U, 0x6F51DBCFU }, /* XSUM_XXH32_testdata[4591] */ + { 2296, 0x00000000U, 0x48546BE8U }, /* XSUM_XXH32_testdata[4592] */ + { 2296, 0x9E3779B1U, 0x5B47746BU }, /* XSUM_XXH32_testdata[4593] */ + { 2297, 0x00000000U, 0xB0BC78D8U }, /* XSUM_XXH32_testdata[4594] */ + { 2297, 0x9E3779B1U, 0xCFE99C9FU }, /* XSUM_XXH32_testdata[4595] */ + { 2298, 0x00000000U, 0x75CD83B5U }, /* XSUM_XXH32_testdata[4596] */ + { 2298, 0x9E3779B1U, 0x450083C7U }, /* XSUM_XXH32_testdata[4597] */ + { 2299, 0x00000000U, 0x38A051CDU }, /* XSUM_XXH32_testdata[4598] */ + { 2299, 0x9E3779B1U, 0xD4FB313FU }, /* XSUM_XXH32_testdata[4599] */ + { 2300, 0x00000000U, 0x99441C7FU }, /* XSUM_XXH32_testdata[4600] */ + { 2300, 0x9E3779B1U, 0x1CB8212EU }, /* XSUM_XXH32_testdata[4601] */ + { 2301, 0x00000000U, 0x0D53CF1BU }, /* XSUM_XXH32_testdata[4602] */ + { 2301, 0x9E3779B1U, 0x8A004DB5U }, /* XSUM_XXH32_testdata[4603] */ + { 2302, 0x00000000U, 0xCB001B0DU }, /* XSUM_XXH32_testdata[4604] */ + { 2302, 0x9E3779B1U, 0x00778E53U }, /* XSUM_XXH32_testdata[4605] */ + { 2303, 0x00000000U, 0xBA8260FAU }, /* XSUM_XXH32_testdata[4606] */ + { 2303, 0x9E3779B1U, 0x5F12DB08U }, /* XSUM_XXH32_testdata[4607] */ + { 2304, 0x00000000U, 0xBCEA8F53U }, /* XSUM_XXH32_testdata[4608] */ + { 2304, 0x9E3779B1U, 0x7B889175U }, /* XSUM_XXH32_testdata[4609] */ + { 2305, 0x00000000U, 0x430978EFU }, /* XSUM_XXH32_testdata[4610] */ + { 2305, 0x9E3779B1U, 0x8AF48587U }, /* XSUM_XXH32_testdata[4611] */ + { 2306, 0x00000000U, 0x8C6893DCU }, /* XSUM_XXH32_testdata[4612] */ + { 2306, 0x9E3779B1U, 0xA6C6D34CU }, /* XSUM_XXH32_testdata[4613] */ + { 2307, 0x00000000U, 0x50CD4BC8U }, /* XSUM_XXH32_testdata[4614] */ + { 2307, 0x9E3779B1U, 0x5B7B0AF5U }, /* XSUM_XXH32_testdata[4615] */ + { 2308, 0x00000000U, 0x41D30BF1U }, /* XSUM_XXH32_testdata[4616] */ + { 2308, 0x9E3779B1U, 0xF34044F6U }, /* XSUM_XXH32_testdata[4617] */ + { 2309, 0x00000000U, 0x76F916DAU }, /* XSUM_XXH32_testdata[4618] */ + { 2309, 0x9E3779B1U, 0xC7F44596U }, /* XSUM_XXH32_testdata[4619] */ + { 2310, 0x00000000U, 0x3EFDC8B8U }, /* XSUM_XXH32_testdata[4620] */ + { 2310, 0x9E3779B1U, 0x586BA8C0U }, /* XSUM_XXH32_testdata[4621] */ + { 2311, 0x00000000U, 0x7F910E8DU }, /* XSUM_XXH32_testdata[4622] */ + { 2311, 0x9E3779B1U, 0xBD823BCCU }, /* XSUM_XXH32_testdata[4623] */ + { 2312, 0x00000000U, 0xB6617DFAU }, /* XSUM_XXH32_testdata[4624] */ + { 2312, 0x9E3779B1U, 0x2C490E37U }, /* XSUM_XXH32_testdata[4625] */ + { 2313, 0x00000000U, 0x5DF58E40U }, /* XSUM_XXH32_testdata[4626] */ + { 2313, 0x9E3779B1U, 0xA92E5FDAU }, /* XSUM_XXH32_testdata[4627] */ + { 2314, 0x00000000U, 0x9129B3B7U }, /* XSUM_XXH32_testdata[4628] */ + { 2314, 0x9E3779B1U, 0x371184EFU }, /* XSUM_XXH32_testdata[4629] */ + { 2315, 0x00000000U, 0x708281D2U }, /* XSUM_XXH32_testdata[4630] */ + { 2315, 0x9E3779B1U, 0xE00BC470U }, /* XSUM_XXH32_testdata[4631] */ + { 2316, 0x00000000U, 0x88AEDFBCU }, /* XSUM_XXH32_testdata[4632] */ + { 2316, 0x9E3779B1U, 0x75F9331EU }, /* XSUM_XXH32_testdata[4633] */ + { 2317, 0x00000000U, 0x973A2135U }, /* XSUM_XXH32_testdata[4634] */ + { 2317, 0x9E3779B1U, 0x97C86A9FU }, /* XSUM_XXH32_testdata[4635] */ + { 2318, 0x00000000U, 0xEFABBB53U }, /* XSUM_XXH32_testdata[4636] */ + { 2318, 0x9E3779B1U, 0xD395FF0EU }, /* XSUM_XXH32_testdata[4637] */ + { 2319, 0x00000000U, 0x3636A669U }, /* XSUM_XXH32_testdata[4638] */ + { 2319, 0x9E3779B1U, 0x7DA41EAAU }, /* XSUM_XXH32_testdata[4639] */ + { 2320, 0x00000000U, 0xAF1B89BAU }, /* XSUM_XXH32_testdata[4640] */ + { 2320, 0x9E3779B1U, 0x2A4DF877U }, /* XSUM_XXH32_testdata[4641] */ + { 2321, 0x00000000U, 0x91C2F6A0U }, /* XSUM_XXH32_testdata[4642] */ + { 2321, 0x9E3779B1U, 0x8BCA9801U }, /* XSUM_XXH32_testdata[4643] */ + { 2322, 0x00000000U, 0x08CCBEC2U }, /* XSUM_XXH32_testdata[4644] */ + { 2322, 0x9E3779B1U, 0x7F838AB9U }, /* XSUM_XXH32_testdata[4645] */ + { 2323, 0x00000000U, 0x3E33B29BU }, /* XSUM_XXH32_testdata[4646] */ + { 2323, 0x9E3779B1U, 0xA247360BU }, /* XSUM_XXH32_testdata[4647] */ + { 2324, 0x00000000U, 0xCC83AD4AU }, /* XSUM_XXH32_testdata[4648] */ + { 2324, 0x9E3779B1U, 0xBD508C8CU }, /* XSUM_XXH32_testdata[4649] */ + { 2325, 0x00000000U, 0x809318BEU }, /* XSUM_XXH32_testdata[4650] */ + { 2325, 0x9E3779B1U, 0x95AF3438U }, /* XSUM_XXH32_testdata[4651] */ + { 2326, 0x00000000U, 0x4D8E2E9AU }, /* XSUM_XXH32_testdata[4652] */ + { 2326, 0x9E3779B1U, 0xA6FA96D0U }, /* XSUM_XXH32_testdata[4653] */ + { 2327, 0x00000000U, 0xA07CA81CU }, /* XSUM_XXH32_testdata[4654] */ + { 2327, 0x9E3779B1U, 0x499D93B5U }, /* XSUM_XXH32_testdata[4655] */ + { 2328, 0x00000000U, 0xA6470A51U }, /* XSUM_XXH32_testdata[4656] */ + { 2328, 0x9E3779B1U, 0x26ED845DU }, /* XSUM_XXH32_testdata[4657] */ + { 2329, 0x00000000U, 0x1C554C77U }, /* XSUM_XXH32_testdata[4658] */ + { 2329, 0x9E3779B1U, 0xB3627F76U }, /* XSUM_XXH32_testdata[4659] */ + { 2330, 0x00000000U, 0x7AAD0FF8U }, /* XSUM_XXH32_testdata[4660] */ + { 2330, 0x9E3779B1U, 0xBBA8C728U }, /* XSUM_XXH32_testdata[4661] */ + { 2331, 0x00000000U, 0x5A567C6FU }, /* XSUM_XXH32_testdata[4662] */ + { 2331, 0x9E3779B1U, 0x5A06BE2FU }, /* XSUM_XXH32_testdata[4663] */ + { 2332, 0x00000000U, 0x6BA98891U }, /* XSUM_XXH32_testdata[4664] */ + { 2332, 0x9E3779B1U, 0x205C0FE4U }, /* XSUM_XXH32_testdata[4665] */ + { 2333, 0x00000000U, 0x82522B2BU }, /* XSUM_XXH32_testdata[4666] */ + { 2333, 0x9E3779B1U, 0x076C9707U }, /* XSUM_XXH32_testdata[4667] */ + { 2334, 0x00000000U, 0x4DC1958BU }, /* XSUM_XXH32_testdata[4668] */ + { 2334, 0x9E3779B1U, 0xFA396A37U }, /* XSUM_XXH32_testdata[4669] */ + { 2335, 0x00000000U, 0x3AC57A52U }, /* XSUM_XXH32_testdata[4670] */ + { 2335, 0x9E3779B1U, 0xF12C465AU }, /* XSUM_XXH32_testdata[4671] */ + { 2336, 0x00000000U, 0xE3B1A4E8U }, /* XSUM_XXH32_testdata[4672] */ + { 2336, 0x9E3779B1U, 0x12C0298BU }, /* XSUM_XXH32_testdata[4673] */ + { 2337, 0x00000000U, 0xF44984F1U }, /* XSUM_XXH32_testdata[4674] */ + { 2337, 0x9E3779B1U, 0xB4DFA682U }, /* XSUM_XXH32_testdata[4675] */ + { 2338, 0x00000000U, 0x2FFF7824U }, /* XSUM_XXH32_testdata[4676] */ + { 2338, 0x9E3779B1U, 0x0973012BU }, /* XSUM_XXH32_testdata[4677] */ + { 2339, 0x00000000U, 0x30EC8C56U }, /* XSUM_XXH32_testdata[4678] */ + { 2339, 0x9E3779B1U, 0x2F7B75ADU }, /* XSUM_XXH32_testdata[4679] */ + { 2340, 0x00000000U, 0x781E8077U }, /* XSUM_XXH32_testdata[4680] */ + { 2340, 0x9E3779B1U, 0x4D1F9FE6U }, /* XSUM_XXH32_testdata[4681] */ + { 2341, 0x00000000U, 0xA7CA3DBCU }, /* XSUM_XXH32_testdata[4682] */ + { 2341, 0x9E3779B1U, 0x63A36898U }, /* XSUM_XXH32_testdata[4683] */ + { 2342, 0x00000000U, 0x8ADA3F4CU }, /* XSUM_XXH32_testdata[4684] */ + { 2342, 0x9E3779B1U, 0x81C0BBB3U }, /* XSUM_XXH32_testdata[4685] */ + { 2343, 0x00000000U, 0x8B054AC2U }, /* XSUM_XXH32_testdata[4686] */ + { 2343, 0x9E3779B1U, 0x0AF990F3U }, /* XSUM_XXH32_testdata[4687] */ + { 2344, 0x00000000U, 0x92205A23U }, /* XSUM_XXH32_testdata[4688] */ + { 2344, 0x9E3779B1U, 0x03054242U }, /* XSUM_XXH32_testdata[4689] */ + { 2345, 0x00000000U, 0xA6BE0EF5U }, /* XSUM_XXH32_testdata[4690] */ + { 2345, 0x9E3779B1U, 0xC5D4391DU }, /* XSUM_XXH32_testdata[4691] */ + { 2346, 0x00000000U, 0x401B0499U }, /* XSUM_XXH32_testdata[4692] */ + { 2346, 0x9E3779B1U, 0x7A70E3F5U }, /* XSUM_XXH32_testdata[4693] */ + { 2347, 0x00000000U, 0x061FF802U }, /* XSUM_XXH32_testdata[4694] */ + { 2347, 0x9E3779B1U, 0xF2EFAAA5U }, /* XSUM_XXH32_testdata[4695] */ + { 2348, 0x00000000U, 0xB9A50735U }, /* XSUM_XXH32_testdata[4696] */ + { 2348, 0x9E3779B1U, 0x07B543A3U }, /* XSUM_XXH32_testdata[4697] */ + { 2349, 0x00000000U, 0xD42FE578U }, /* XSUM_XXH32_testdata[4698] */ + { 2349, 0x9E3779B1U, 0x4B6ED460U }, /* XSUM_XXH32_testdata[4699] */ + { 2350, 0x00000000U, 0x48ABC923U }, /* XSUM_XXH32_testdata[4700] */ + { 2350, 0x9E3779B1U, 0x3FDAD781U }, /* XSUM_XXH32_testdata[4701] */ + { 2351, 0x00000000U, 0xA1FA455DU }, /* XSUM_XXH32_testdata[4702] */ + { 2351, 0x9E3779B1U, 0xAC421C38U }, /* XSUM_XXH32_testdata[4703] */ + { 2352, 0x00000000U, 0xF214EB71U }, /* XSUM_XXH32_testdata[4704] */ + { 2352, 0x9E3779B1U, 0xE112B0D4U }, /* XSUM_XXH32_testdata[4705] */ + { 2353, 0x00000000U, 0x8B75B819U }, /* XSUM_XXH32_testdata[4706] */ + { 2353, 0x9E3779B1U, 0x5586B7DDU }, /* XSUM_XXH32_testdata[4707] */ + { 2354, 0x00000000U, 0x205A741CU }, /* XSUM_XXH32_testdata[4708] */ + { 2354, 0x9E3779B1U, 0xC87CB465U }, /* XSUM_XXH32_testdata[4709] */ + { 2355, 0x00000000U, 0xD12DC954U }, /* XSUM_XXH32_testdata[4710] */ + { 2355, 0x9E3779B1U, 0x7DB71299U }, /* XSUM_XXH32_testdata[4711] */ + { 2356, 0x00000000U, 0xA9F34CF6U }, /* XSUM_XXH32_testdata[4712] */ + { 2356, 0x9E3779B1U, 0x7B5908E5U }, /* XSUM_XXH32_testdata[4713] */ + { 2357, 0x00000000U, 0xE634B0E9U }, /* XSUM_XXH32_testdata[4714] */ + { 2357, 0x9E3779B1U, 0x6FDD888DU }, /* XSUM_XXH32_testdata[4715] */ + { 2358, 0x00000000U, 0x31C599C4U }, /* XSUM_XXH32_testdata[4716] */ + { 2358, 0x9E3779B1U, 0x866EAF3AU }, /* XSUM_XXH32_testdata[4717] */ + { 2359, 0x00000000U, 0xE0989B24U }, /* XSUM_XXH32_testdata[4718] */ + { 2359, 0x9E3779B1U, 0xA981AD4FU }, /* XSUM_XXH32_testdata[4719] */ + { 2360, 0x00000000U, 0x6D387974U }, /* XSUM_XXH32_testdata[4720] */ + { 2360, 0x9E3779B1U, 0xF2454878U }, /* XSUM_XXH32_testdata[4721] */ + { 2361, 0x00000000U, 0xC2E39A3FU }, /* XSUM_XXH32_testdata[4722] */ + { 2361, 0x9E3779B1U, 0xFD5459E5U }, /* XSUM_XXH32_testdata[4723] */ + { 2362, 0x00000000U, 0x323EB5EBU }, /* XSUM_XXH32_testdata[4724] */ + { 2362, 0x9E3779B1U, 0xE74DCA8CU }, /* XSUM_XXH32_testdata[4725] */ + { 2363, 0x00000000U, 0x2CECE601U }, /* XSUM_XXH32_testdata[4726] */ + { 2363, 0x9E3779B1U, 0x36CD01FEU }, /* XSUM_XXH32_testdata[4727] */ + { 2364, 0x00000000U, 0x66FEC502U }, /* XSUM_XXH32_testdata[4728] */ + { 2364, 0x9E3779B1U, 0x4B2D4558U }, /* XSUM_XXH32_testdata[4729] */ + { 2365, 0x00000000U, 0x14B0C970U }, /* XSUM_XXH32_testdata[4730] */ + { 2365, 0x9E3779B1U, 0x0B4936DAU }, /* XSUM_XXH32_testdata[4731] */ + { 2366, 0x00000000U, 0xF0060AE0U }, /* XSUM_XXH32_testdata[4732] */ + { 2366, 0x9E3779B1U, 0x2654E924U }, /* XSUM_XXH32_testdata[4733] */ + { 2367, 0x00000000U, 0x4C8A9773U }, /* XSUM_XXH32_testdata[4734] */ + { 2367, 0x9E3779B1U, 0x6D5366F6U }, /* XSUM_XXH32_testdata[4735] */ + { 2368, 0x00000000U, 0xF548E34BU }, /* XSUM_XXH32_testdata[4736] */ + { 2368, 0x9E3779B1U, 0xE7AD6B44U }, /* XSUM_XXH32_testdata[4737] */ + { 2369, 0x00000000U, 0x65D503DFU }, /* XSUM_XXH32_testdata[4738] */ + { 2369, 0x9E3779B1U, 0x5BDF6961U }, /* XSUM_XXH32_testdata[4739] */ + { 2370, 0x00000000U, 0x5F26B595U }, /* XSUM_XXH32_testdata[4740] */ + { 2370, 0x9E3779B1U, 0x14CE703BU }, /* XSUM_XXH32_testdata[4741] */ + { 2371, 0x00000000U, 0xF0A01EDFU }, /* XSUM_XXH32_testdata[4742] */ + { 2371, 0x9E3779B1U, 0xB6258CA7U }, /* XSUM_XXH32_testdata[4743] */ + { 2372, 0x00000000U, 0xC0D4B27DU }, /* XSUM_XXH32_testdata[4744] */ + { 2372, 0x9E3779B1U, 0x0D321D6CU }, /* XSUM_XXH32_testdata[4745] */ + { 2373, 0x00000000U, 0xB6AB63B0U }, /* XSUM_XXH32_testdata[4746] */ + { 2373, 0x9E3779B1U, 0x7896B7C8U }, /* XSUM_XXH32_testdata[4747] */ + { 2374, 0x00000000U, 0x419BDBEBU }, /* XSUM_XXH32_testdata[4748] */ + { 2374, 0x9E3779B1U, 0xC9C20BCEU }, /* XSUM_XXH32_testdata[4749] */ + { 2375, 0x00000000U, 0x3AAF5C47U }, /* XSUM_XXH32_testdata[4750] */ + { 2375, 0x9E3779B1U, 0x1D6C7324U }, /* XSUM_XXH32_testdata[4751] */ + { 2376, 0x00000000U, 0xA02F14DBU }, /* XSUM_XXH32_testdata[4752] */ + { 2376, 0x9E3779B1U, 0x97305628U }, /* XSUM_XXH32_testdata[4753] */ + { 2377, 0x00000000U, 0x2446F15EU }, /* XSUM_XXH32_testdata[4754] */ + { 2377, 0x9E3779B1U, 0x990E91A9U }, /* XSUM_XXH32_testdata[4755] */ + { 2378, 0x00000000U, 0xBFF1B80DU }, /* XSUM_XXH32_testdata[4756] */ + { 2378, 0x9E3779B1U, 0x207555C6U }, /* XSUM_XXH32_testdata[4757] */ + { 2379, 0x00000000U, 0xCBB9DE50U }, /* XSUM_XXH32_testdata[4758] */ + { 2379, 0x9E3779B1U, 0x7C35E937U }, /* XSUM_XXH32_testdata[4759] */ + { 2380, 0x00000000U, 0xB16132E9U }, /* XSUM_XXH32_testdata[4760] */ + { 2380, 0x9E3779B1U, 0x612C4735U }, /* XSUM_XXH32_testdata[4761] */ + { 2381, 0x00000000U, 0xFA94BF99U }, /* XSUM_XXH32_testdata[4762] */ + { 2381, 0x9E3779B1U, 0xCB323A7DU }, /* XSUM_XXH32_testdata[4763] */ + { 2382, 0x00000000U, 0x66E1CCFEU }, /* XSUM_XXH32_testdata[4764] */ + { 2382, 0x9E3779B1U, 0x6172EACFU }, /* XSUM_XXH32_testdata[4765] */ + { 2383, 0x00000000U, 0x0DBA1027U }, /* XSUM_XXH32_testdata[4766] */ + { 2383, 0x9E3779B1U, 0x32B3A053U }, /* XSUM_XXH32_testdata[4767] */ + { 2384, 0x00000000U, 0x2A061A21U }, /* XSUM_XXH32_testdata[4768] */ + { 2384, 0x9E3779B1U, 0x63842046U }, /* XSUM_XXH32_testdata[4769] */ + { 2385, 0x00000000U, 0x31F706D8U }, /* XSUM_XXH32_testdata[4770] */ + { 2385, 0x9E3779B1U, 0x07065BDDU }, /* XSUM_XXH32_testdata[4771] */ + { 2386, 0x00000000U, 0xC89FFCF2U }, /* XSUM_XXH32_testdata[4772] */ + { 2386, 0x9E3779B1U, 0x380EB6D6U }, /* XSUM_XXH32_testdata[4773] */ + { 2387, 0x00000000U, 0x3ED8B0B0U }, /* XSUM_XXH32_testdata[4774] */ + { 2387, 0x9E3779B1U, 0xC87C9DA2U }, /* XSUM_XXH32_testdata[4775] */ + { 2388, 0x00000000U, 0x9166C2BDU }, /* XSUM_XXH32_testdata[4776] */ + { 2388, 0x9E3779B1U, 0x06CECF8AU }, /* XSUM_XXH32_testdata[4777] */ + { 2389, 0x00000000U, 0xE525B308U }, /* XSUM_XXH32_testdata[4778] */ + { 2389, 0x9E3779B1U, 0x20A21E29U }, /* XSUM_XXH32_testdata[4779] */ + { 2390, 0x00000000U, 0x7D3019E4U }, /* XSUM_XXH32_testdata[4780] */ + { 2390, 0x9E3779B1U, 0x0292C707U }, /* XSUM_XXH32_testdata[4781] */ + { 2391, 0x00000000U, 0x13B25959U }, /* XSUM_XXH32_testdata[4782] */ + { 2391, 0x9E3779B1U, 0xDAC018B5U }, /* XSUM_XXH32_testdata[4783] */ + { 2392, 0x00000000U, 0x162AD860U }, /* XSUM_XXH32_testdata[4784] */ + { 2392, 0x9E3779B1U, 0xB87FE27AU }, /* XSUM_XXH32_testdata[4785] */ + { 2393, 0x00000000U, 0x561FA10DU }, /* XSUM_XXH32_testdata[4786] */ + { 2393, 0x9E3779B1U, 0x7B07FDEAU }, /* XSUM_XXH32_testdata[4787] */ + { 2394, 0x00000000U, 0xD874B0F3U }, /* XSUM_XXH32_testdata[4788] */ + { 2394, 0x9E3779B1U, 0xA6E4675DU }, /* XSUM_XXH32_testdata[4789] */ + { 2395, 0x00000000U, 0x6C94309CU }, /* XSUM_XXH32_testdata[4790] */ + { 2395, 0x9E3779B1U, 0x236ED104U }, /* XSUM_XXH32_testdata[4791] */ + { 2396, 0x00000000U, 0xA0EEE992U }, /* XSUM_XXH32_testdata[4792] */ + { 2396, 0x9E3779B1U, 0x91A0C722U }, /* XSUM_XXH32_testdata[4793] */ + { 2397, 0x00000000U, 0x0C399ADAU }, /* XSUM_XXH32_testdata[4794] */ + { 2397, 0x9E3779B1U, 0xA7F1A6D5U }, /* XSUM_XXH32_testdata[4795] */ + { 2398, 0x00000000U, 0x378368A6U }, /* XSUM_XXH32_testdata[4796] */ + { 2398, 0x9E3779B1U, 0x0C3AB8E1U }, /* XSUM_XXH32_testdata[4797] */ + { 2399, 0x00000000U, 0xA358B395U }, /* XSUM_XXH32_testdata[4798] */ + { 2399, 0x9E3779B1U, 0x6FFB1BA8U }, /* XSUM_XXH32_testdata[4799] */ + { 2400, 0x00000000U, 0x70C3BAC4U }, /* XSUM_XXH32_testdata[4800] */ + { 2400, 0x9E3779B1U, 0x12C956F8U }, /* XSUM_XXH32_testdata[4801] */ + { 2401, 0x00000000U, 0xF80E72F2U }, /* XSUM_XXH32_testdata[4802] */ + { 2401, 0x9E3779B1U, 0x68936275U }, /* XSUM_XXH32_testdata[4803] */ + { 2402, 0x00000000U, 0x27E902BBU }, /* XSUM_XXH32_testdata[4804] */ + { 2402, 0x9E3779B1U, 0xDCEBAE57U }, /* XSUM_XXH32_testdata[4805] */ + { 2403, 0x00000000U, 0x0A2F00E2U }, /* XSUM_XXH32_testdata[4806] */ + { 2403, 0x9E3779B1U, 0x5134A646U }, /* XSUM_XXH32_testdata[4807] */ + { 2404, 0x00000000U, 0x7EAA4C6BU }, /* XSUM_XXH32_testdata[4808] */ + { 2404, 0x9E3779B1U, 0x0EFC5F02U }, /* XSUM_XXH32_testdata[4809] */ + { 2405, 0x00000000U, 0xF19F7631U }, /* XSUM_XXH32_testdata[4810] */ + { 2405, 0x9E3779B1U, 0x2033E2E1U }, /* XSUM_XXH32_testdata[4811] */ + { 2406, 0x00000000U, 0x5CA90E57U }, /* XSUM_XXH32_testdata[4812] */ + { 2406, 0x9E3779B1U, 0x795BF9ECU }, /* XSUM_XXH32_testdata[4813] */ + { 2407, 0x00000000U, 0xD113AA64U }, /* XSUM_XXH32_testdata[4814] */ + { 2407, 0x9E3779B1U, 0x79177ACFU }, /* XSUM_XXH32_testdata[4815] */ + { 2408, 0x00000000U, 0x50F9A43DU }, /* XSUM_XXH32_testdata[4816] */ + { 2408, 0x9E3779B1U, 0x7E3349F4U }, /* XSUM_XXH32_testdata[4817] */ + { 2409, 0x00000000U, 0x027C208DU }, /* XSUM_XXH32_testdata[4818] */ + { 2409, 0x9E3779B1U, 0x88EE986EU }, /* XSUM_XXH32_testdata[4819] */ + { 2410, 0x00000000U, 0xC32D3332U }, /* XSUM_XXH32_testdata[4820] */ + { 2410, 0x9E3779B1U, 0x34A75026U }, /* XSUM_XXH32_testdata[4821] */ + { 2411, 0x00000000U, 0x17E590DCU }, /* XSUM_XXH32_testdata[4822] */ + { 2411, 0x9E3779B1U, 0x63890C5BU }, /* XSUM_XXH32_testdata[4823] */ + { 2412, 0x00000000U, 0x5BC68CEDU }, /* XSUM_XXH32_testdata[4824] */ + { 2412, 0x9E3779B1U, 0x670759F6U }, /* XSUM_XXH32_testdata[4825] */ + { 2413, 0x00000000U, 0x657E7361U }, /* XSUM_XXH32_testdata[4826] */ + { 2413, 0x9E3779B1U, 0x14D537A3U }, /* XSUM_XXH32_testdata[4827] */ + { 2414, 0x00000000U, 0x85686695U }, /* XSUM_XXH32_testdata[4828] */ + { 2414, 0x9E3779B1U, 0xF128E84EU }, /* XSUM_XXH32_testdata[4829] */ + { 2415, 0x00000000U, 0xC665F573U }, /* XSUM_XXH32_testdata[4830] */ + { 2415, 0x9E3779B1U, 0x17C0AB75U }, /* XSUM_XXH32_testdata[4831] */ + { 2416, 0x00000000U, 0xF1043438U }, /* XSUM_XXH32_testdata[4832] */ + { 2416, 0x9E3779B1U, 0x201D2400U }, /* XSUM_XXH32_testdata[4833] */ + { 2417, 0x00000000U, 0xAF8760FDU }, /* XSUM_XXH32_testdata[4834] */ + { 2417, 0x9E3779B1U, 0xC37A051BU }, /* XSUM_XXH32_testdata[4835] */ + { 2418, 0x00000000U, 0xFE2E7C31U }, /* XSUM_XXH32_testdata[4836] */ + { 2418, 0x9E3779B1U, 0x81779EAFU }, /* XSUM_XXH32_testdata[4837] */ + { 2419, 0x00000000U, 0xE509F698U }, /* XSUM_XXH32_testdata[4838] */ + { 2419, 0x9E3779B1U, 0xD50B9B0CU }, /* XSUM_XXH32_testdata[4839] */ + { 2420, 0x00000000U, 0x5081BD39U }, /* XSUM_XXH32_testdata[4840] */ + { 2420, 0x9E3779B1U, 0x8FC0450BU }, /* XSUM_XXH32_testdata[4841] */ + { 2421, 0x00000000U, 0x81C008F1U }, /* XSUM_XXH32_testdata[4842] */ + { 2421, 0x9E3779B1U, 0xAEB2E7F2U }, /* XSUM_XXH32_testdata[4843] */ + { 2422, 0x00000000U, 0x4AE97E0DU }, /* XSUM_XXH32_testdata[4844] */ + { 2422, 0x9E3779B1U, 0xF3C343F8U }, /* XSUM_XXH32_testdata[4845] */ + { 2423, 0x00000000U, 0x607DFFD1U }, /* XSUM_XXH32_testdata[4846] */ + { 2423, 0x9E3779B1U, 0x9E312A8EU }, /* XSUM_XXH32_testdata[4847] */ + { 2424, 0x00000000U, 0xEC94619AU }, /* XSUM_XXH32_testdata[4848] */ + { 2424, 0x9E3779B1U, 0xD8ACEDE4U }, /* XSUM_XXH32_testdata[4849] */ + { 2425, 0x00000000U, 0x43825EDBU }, /* XSUM_XXH32_testdata[4850] */ + { 2425, 0x9E3779B1U, 0x84833C10U }, /* XSUM_XXH32_testdata[4851] */ + { 2426, 0x00000000U, 0x9C339CC3U }, /* XSUM_XXH32_testdata[4852] */ + { 2426, 0x9E3779B1U, 0x8336AA1BU }, /* XSUM_XXH32_testdata[4853] */ + { 2427, 0x00000000U, 0xC27DE396U }, /* XSUM_XXH32_testdata[4854] */ + { 2427, 0x9E3779B1U, 0xF97DAA8BU }, /* XSUM_XXH32_testdata[4855] */ + { 2428, 0x00000000U, 0x2F3248A4U }, /* XSUM_XXH32_testdata[4856] */ + { 2428, 0x9E3779B1U, 0xC713E2CEU }, /* XSUM_XXH32_testdata[4857] */ + { 2429, 0x00000000U, 0x4540EC38U }, /* XSUM_XXH32_testdata[4858] */ + { 2429, 0x9E3779B1U, 0xEC4D25B6U }, /* XSUM_XXH32_testdata[4859] */ + { 2430, 0x00000000U, 0xA05E2C3AU }, /* XSUM_XXH32_testdata[4860] */ + { 2430, 0x9E3779B1U, 0x9921546BU }, /* XSUM_XXH32_testdata[4861] */ + { 2431, 0x00000000U, 0x810A1384U }, /* XSUM_XXH32_testdata[4862] */ + { 2431, 0x9E3779B1U, 0x50C98DB6U }, /* XSUM_XXH32_testdata[4863] */ + { 2432, 0x00000000U, 0x7FB4B17BU }, /* XSUM_XXH32_testdata[4864] */ + { 2432, 0x9E3779B1U, 0xF241483CU }, /* XSUM_XXH32_testdata[4865] */ + { 2433, 0x00000000U, 0x0D389605U }, /* XSUM_XXH32_testdata[4866] */ + { 2433, 0x9E3779B1U, 0xBC07E8A4U }, /* XSUM_XXH32_testdata[4867] */ + { 2434, 0x00000000U, 0x168C2350U }, /* XSUM_XXH32_testdata[4868] */ + { 2434, 0x9E3779B1U, 0x8801D1ABU }, /* XSUM_XXH32_testdata[4869] */ + { 2435, 0x00000000U, 0x5283B60CU }, /* XSUM_XXH32_testdata[4870] */ + { 2435, 0x9E3779B1U, 0x10E4870AU }, /* XSUM_XXH32_testdata[4871] */ + { 2436, 0x00000000U, 0x0421D54CU }, /* XSUM_XXH32_testdata[4872] */ + { 2436, 0x9E3779B1U, 0x6E3B449BU }, /* XSUM_XXH32_testdata[4873] */ + { 2437, 0x00000000U, 0x5361F4CCU }, /* XSUM_XXH32_testdata[4874] */ + { 2437, 0x9E3779B1U, 0xFB59F19CU }, /* XSUM_XXH32_testdata[4875] */ + { 2438, 0x00000000U, 0x20D19D1FU }, /* XSUM_XXH32_testdata[4876] */ + { 2438, 0x9E3779B1U, 0x2893EAC6U }, /* XSUM_XXH32_testdata[4877] */ + { 2439, 0x00000000U, 0xDE177718U }, /* XSUM_XXH32_testdata[4878] */ + { 2439, 0x9E3779B1U, 0x3EB39364U }, /* XSUM_XXH32_testdata[4879] */ + { 2440, 0x00000000U, 0xE79B2719U }, /* XSUM_XXH32_testdata[4880] */ + { 2440, 0x9E3779B1U, 0x312643B1U }, /* XSUM_XXH32_testdata[4881] */ + { 2441, 0x00000000U, 0x4F5DFDF0U }, /* XSUM_XXH32_testdata[4882] */ + { 2441, 0x9E3779B1U, 0xED612CE1U }, /* XSUM_XXH32_testdata[4883] */ + { 2442, 0x00000000U, 0x95180588U }, /* XSUM_XXH32_testdata[4884] */ + { 2442, 0x9E3779B1U, 0x88F3CABEU }, /* XSUM_XXH32_testdata[4885] */ + { 2443, 0x00000000U, 0x0C0F7A4DU }, /* XSUM_XXH32_testdata[4886] */ + { 2443, 0x9E3779B1U, 0x2ED4F445U }, /* XSUM_XXH32_testdata[4887] */ + { 2444, 0x00000000U, 0xB880E238U }, /* XSUM_XXH32_testdata[4888] */ + { 2444, 0x9E3779B1U, 0x40A637ABU }, /* XSUM_XXH32_testdata[4889] */ + { 2445, 0x00000000U, 0xAD670B07U }, /* XSUM_XXH32_testdata[4890] */ + { 2445, 0x9E3779B1U, 0x11F26435U }, /* XSUM_XXH32_testdata[4891] */ + { 2446, 0x00000000U, 0x56C94B98U }, /* XSUM_XXH32_testdata[4892] */ + { 2446, 0x9E3779B1U, 0x60504FB2U }, /* XSUM_XXH32_testdata[4893] */ + { 2447, 0x00000000U, 0x076B6ABDU }, /* XSUM_XXH32_testdata[4894] */ + { 2447, 0x9E3779B1U, 0x642D3A22U }, /* XSUM_XXH32_testdata[4895] */ + { 2448, 0x00000000U, 0xBDCE2439U }, /* XSUM_XXH32_testdata[4896] */ + { 2448, 0x9E3779B1U, 0x7F00BA89U }, /* XSUM_XXH32_testdata[4897] */ + { 2449, 0x00000000U, 0xDFAAF476U }, /* XSUM_XXH32_testdata[4898] */ + { 2449, 0x9E3779B1U, 0x050B1532U }, /* XSUM_XXH32_testdata[4899] */ + { 2450, 0x00000000U, 0x1F1C1A57U }, /* XSUM_XXH32_testdata[4900] */ + { 2450, 0x9E3779B1U, 0xCDB6FD63U }, /* XSUM_XXH32_testdata[4901] */ + { 2451, 0x00000000U, 0xF823D563U }, /* XSUM_XXH32_testdata[4902] */ + { 2451, 0x9E3779B1U, 0xCA835153U }, /* XSUM_XXH32_testdata[4903] */ + { 2452, 0x00000000U, 0x51B522C4U }, /* XSUM_XXH32_testdata[4904] */ + { 2452, 0x9E3779B1U, 0x45900CF0U }, /* XSUM_XXH32_testdata[4905] */ + { 2453, 0x00000000U, 0x5235F781U }, /* XSUM_XXH32_testdata[4906] */ + { 2453, 0x9E3779B1U, 0x2D5AA19FU }, /* XSUM_XXH32_testdata[4907] */ + { 2454, 0x00000000U, 0x18BAE005U }, /* XSUM_XXH32_testdata[4908] */ + { 2454, 0x9E3779B1U, 0x6C048095U }, /* XSUM_XXH32_testdata[4909] */ + { 2455, 0x00000000U, 0x3AA89246U }, /* XSUM_XXH32_testdata[4910] */ + { 2455, 0x9E3779B1U, 0x38AE9554U }, /* XSUM_XXH32_testdata[4911] */ + { 2456, 0x00000000U, 0x69D553FFU }, /* XSUM_XXH32_testdata[4912] */ + { 2456, 0x9E3779B1U, 0xC31AA130U }, /* XSUM_XXH32_testdata[4913] */ + { 2457, 0x00000000U, 0xABCFC613U }, /* XSUM_XXH32_testdata[4914] */ + { 2457, 0x9E3779B1U, 0x1CFCC09FU }, /* XSUM_XXH32_testdata[4915] */ + { 2458, 0x00000000U, 0xDEFD37F7U }, /* XSUM_XXH32_testdata[4916] */ + { 2458, 0x9E3779B1U, 0x3D2B931EU }, /* XSUM_XXH32_testdata[4917] */ + { 2459, 0x00000000U, 0xC766C583U }, /* XSUM_XXH32_testdata[4918] */ + { 2459, 0x9E3779B1U, 0xF614CE02U }, /* XSUM_XXH32_testdata[4919] */ + { 2460, 0x00000000U, 0x354DE099U }, /* XSUM_XXH32_testdata[4920] */ + { 2460, 0x9E3779B1U, 0xD92DE3CEU }, /* XSUM_XXH32_testdata[4921] */ + { 2461, 0x00000000U, 0x672C6106U }, /* XSUM_XXH32_testdata[4922] */ + { 2461, 0x9E3779B1U, 0x1EB302CBU }, /* XSUM_XXH32_testdata[4923] */ + { 2462, 0x00000000U, 0xBB87002CU }, /* XSUM_XXH32_testdata[4924] */ + { 2462, 0x9E3779B1U, 0x0CFF9B2CU }, /* XSUM_XXH32_testdata[4925] */ + { 2463, 0x00000000U, 0x8E000EEEU }, /* XSUM_XXH32_testdata[4926] */ + { 2463, 0x9E3779B1U, 0x38A79CF8U }, /* XSUM_XXH32_testdata[4927] */ + { 2464, 0x00000000U, 0x690461FCU }, /* XSUM_XXH32_testdata[4928] */ + { 2464, 0x9E3779B1U, 0x2B4836B0U }, /* XSUM_XXH32_testdata[4929] */ + { 2465, 0x00000000U, 0xEEF46B6CU }, /* XSUM_XXH32_testdata[4930] */ + { 2465, 0x9E3779B1U, 0xD465986EU }, /* XSUM_XXH32_testdata[4931] */ + { 2466, 0x00000000U, 0xFB754DC6U }, /* XSUM_XXH32_testdata[4932] */ + { 2466, 0x9E3779B1U, 0xFCE69DA1U }, /* XSUM_XXH32_testdata[4933] */ + { 2467, 0x00000000U, 0xA88E1A09U }, /* XSUM_XXH32_testdata[4934] */ + { 2467, 0x9E3779B1U, 0x57214C12U }, /* XSUM_XXH32_testdata[4935] */ + { 2468, 0x00000000U, 0x78BB1C9CU }, /* XSUM_XXH32_testdata[4936] */ + { 2468, 0x9E3779B1U, 0xDF185410U }, /* XSUM_XXH32_testdata[4937] */ + { 2469, 0x00000000U, 0x6213889FU }, /* XSUM_XXH32_testdata[4938] */ + { 2469, 0x9E3779B1U, 0xAFA9F475U }, /* XSUM_XXH32_testdata[4939] */ + { 2470, 0x00000000U, 0x95B72151U }, /* XSUM_XXH32_testdata[4940] */ + { 2470, 0x9E3779B1U, 0x88128454U }, /* XSUM_XXH32_testdata[4941] */ + { 2471, 0x00000000U, 0x4BF42AACU }, /* XSUM_XXH32_testdata[4942] */ + { 2471, 0x9E3779B1U, 0x13142328U }, /* XSUM_XXH32_testdata[4943] */ + { 2472, 0x00000000U, 0x60CFC8A3U }, /* XSUM_XXH32_testdata[4944] */ + { 2472, 0x9E3779B1U, 0x9E5B1C19U }, /* XSUM_XXH32_testdata[4945] */ + { 2473, 0x00000000U, 0x5E5AB692U }, /* XSUM_XXH32_testdata[4946] */ + { 2473, 0x9E3779B1U, 0x15692D3AU }, /* XSUM_XXH32_testdata[4947] */ + { 2474, 0x00000000U, 0x10EC98B1U }, /* XSUM_XXH32_testdata[4948] */ + { 2474, 0x9E3779B1U, 0x37643386U }, /* XSUM_XXH32_testdata[4949] */ + { 2475, 0x00000000U, 0x5BDDCAADU }, /* XSUM_XXH32_testdata[4950] */ + { 2475, 0x9E3779B1U, 0xC3C71E98U }, /* XSUM_XXH32_testdata[4951] */ + { 2476, 0x00000000U, 0xB69D9411U }, /* XSUM_XXH32_testdata[4952] */ + { 2476, 0x9E3779B1U, 0x1EC82D48U }, /* XSUM_XXH32_testdata[4953] */ + { 2477, 0x00000000U, 0x8EAFEDCEU }, /* XSUM_XXH32_testdata[4954] */ + { 2477, 0x9E3779B1U, 0xB095B864U }, /* XSUM_XXH32_testdata[4955] */ + { 2478, 0x00000000U, 0x9D33ED47U }, /* XSUM_XXH32_testdata[4956] */ + { 2478, 0x9E3779B1U, 0xB36E84D2U }, /* XSUM_XXH32_testdata[4957] */ + { 2479, 0x00000000U, 0x20CA8E34U }, /* XSUM_XXH32_testdata[4958] */ + { 2479, 0x9E3779B1U, 0x92D7D0D2U }, /* XSUM_XXH32_testdata[4959] */ + { 2480, 0x00000000U, 0x6EBC10CFU }, /* XSUM_XXH32_testdata[4960] */ + { 2480, 0x9E3779B1U, 0xC769351EU }, /* XSUM_XXH32_testdata[4961] */ + { 2481, 0x00000000U, 0x283A9AB3U }, /* XSUM_XXH32_testdata[4962] */ + { 2481, 0x9E3779B1U, 0xE8274634U }, /* XSUM_XXH32_testdata[4963] */ + { 2482, 0x00000000U, 0x1D4783FBU }, /* XSUM_XXH32_testdata[4964] */ + { 2482, 0x9E3779B1U, 0x94EDEA3EU }, /* XSUM_XXH32_testdata[4965] */ + { 2483, 0x00000000U, 0xA4C2B354U }, /* XSUM_XXH32_testdata[4966] */ + { 2483, 0x9E3779B1U, 0xFA13A4EAU }, /* XSUM_XXH32_testdata[4967] */ + { 2484, 0x00000000U, 0xE2905647U }, /* XSUM_XXH32_testdata[4968] */ + { 2484, 0x9E3779B1U, 0x5CE8F0B5U }, /* XSUM_XXH32_testdata[4969] */ + { 2485, 0x00000000U, 0x9BFFBED8U }, /* XSUM_XXH32_testdata[4970] */ + { 2485, 0x9E3779B1U, 0xD476BD5EU }, /* XSUM_XXH32_testdata[4971] */ + { 2486, 0x00000000U, 0xA87A215CU }, /* XSUM_XXH32_testdata[4972] */ + { 2486, 0x9E3779B1U, 0x007637D1U }, /* XSUM_XXH32_testdata[4973] */ + { 2487, 0x00000000U, 0x88B5055DU }, /* XSUM_XXH32_testdata[4974] */ + { 2487, 0x9E3779B1U, 0x33151CAEU }, /* XSUM_XXH32_testdata[4975] */ + { 2488, 0x00000000U, 0x3B0D952CU }, /* XSUM_XXH32_testdata[4976] */ + { 2488, 0x9E3779B1U, 0x042DC20EU }, /* XSUM_XXH32_testdata[4977] */ + { 2489, 0x00000000U, 0xB2DF6455U }, /* XSUM_XXH32_testdata[4978] */ + { 2489, 0x9E3779B1U, 0xA0A9E1AEU }, /* XSUM_XXH32_testdata[4979] */ + { 2490, 0x00000000U, 0xC4719A06U }, /* XSUM_XXH32_testdata[4980] */ + { 2490, 0x9E3779B1U, 0xCC0EB049U }, /* XSUM_XXH32_testdata[4981] */ + { 2491, 0x00000000U, 0x9D0BF4D3U }, /* XSUM_XXH32_testdata[4982] */ + { 2491, 0x9E3779B1U, 0xDA2AB850U }, /* XSUM_XXH32_testdata[4983] */ + { 2492, 0x00000000U, 0xD5566A5DU }, /* XSUM_XXH32_testdata[4984] */ + { 2492, 0x9E3779B1U, 0xE31015C5U }, /* XSUM_XXH32_testdata[4985] */ + { 2493, 0x00000000U, 0x62C54019U }, /* XSUM_XXH32_testdata[4986] */ + { 2493, 0x9E3779B1U, 0x30F08047U }, /* XSUM_XXH32_testdata[4987] */ + { 2494, 0x00000000U, 0x1F8E0294U }, /* XSUM_XXH32_testdata[4988] */ + { 2494, 0x9E3779B1U, 0x05B20621U }, /* XSUM_XXH32_testdata[4989] */ + { 2495, 0x00000000U, 0xBDD763A8U }, /* XSUM_XXH32_testdata[4990] */ + { 2495, 0x9E3779B1U, 0x2B89039CU }, /* XSUM_XXH32_testdata[4991] */ + { 2496, 0x00000000U, 0xDBCA267CU }, /* XSUM_XXH32_testdata[4992] */ + { 2496, 0x9E3779B1U, 0x248B0E37U }, /* XSUM_XXH32_testdata[4993] */ + { 2497, 0x00000000U, 0x4687D6C4U }, /* XSUM_XXH32_testdata[4994] */ + { 2497, 0x9E3779B1U, 0x71A4D797U }, /* XSUM_XXH32_testdata[4995] */ + { 2498, 0x00000000U, 0x223F45C3U }, /* XSUM_XXH32_testdata[4996] */ + { 2498, 0x9E3779B1U, 0x1C480C65U }, /* XSUM_XXH32_testdata[4997] */ + { 2499, 0x00000000U, 0x71870690U }, /* XSUM_XXH32_testdata[4998] */ + { 2499, 0x9E3779B1U, 0x88ACAA6CU }, /* XSUM_XXH32_testdata[4999] */ + { 2500, 0x00000000U, 0x266F7989U }, /* XSUM_XXH32_testdata[5000] */ + { 2500, 0x9E3779B1U, 0x8997FD8DU }, /* XSUM_XXH32_testdata[5001] */ + { 2501, 0x00000000U, 0x1CBC94A7U }, /* XSUM_XXH32_testdata[5002] */ + { 2501, 0x9E3779B1U, 0xBA035B1FU }, /* XSUM_XXH32_testdata[5003] */ + { 2502, 0x00000000U, 0x8D7DED02U }, /* XSUM_XXH32_testdata[5004] */ + { 2502, 0x9E3779B1U, 0x2B388041U }, /* XSUM_XXH32_testdata[5005] */ + { 2503, 0x00000000U, 0xFEC91094U }, /* XSUM_XXH32_testdata[5006] */ + { 2503, 0x9E3779B1U, 0x8D9BE43FU }, /* XSUM_XXH32_testdata[5007] */ + { 2504, 0x00000000U, 0xEC4C3E01U }, /* XSUM_XXH32_testdata[5008] */ + { 2504, 0x9E3779B1U, 0x55830CC0U }, /* XSUM_XXH32_testdata[5009] */ + { 2505, 0x00000000U, 0xC516CBBFU }, /* XSUM_XXH32_testdata[5010] */ + { 2505, 0x9E3779B1U, 0xB86FAF5AU }, /* XSUM_XXH32_testdata[5011] */ + { 2506, 0x00000000U, 0x79747E1AU }, /* XSUM_XXH32_testdata[5012] */ + { 2506, 0x9E3779B1U, 0x99099909U }, /* XSUM_XXH32_testdata[5013] */ + { 2507, 0x00000000U, 0xCE63B747U }, /* XSUM_XXH32_testdata[5014] */ + { 2507, 0x9E3779B1U, 0xF6B7F760U }, /* XSUM_XXH32_testdata[5015] */ + { 2508, 0x00000000U, 0xA95B498BU }, /* XSUM_XXH32_testdata[5016] */ + { 2508, 0x9E3779B1U, 0xDA4A2178U }, /* XSUM_XXH32_testdata[5017] */ + { 2509, 0x00000000U, 0xE2908F0AU }, /* XSUM_XXH32_testdata[5018] */ + { 2509, 0x9E3779B1U, 0x92D2C2DAU }, /* XSUM_XXH32_testdata[5019] */ + { 2510, 0x00000000U, 0x4F23E994U }, /* XSUM_XXH32_testdata[5020] */ + { 2510, 0x9E3779B1U, 0xABFE546BU }, /* XSUM_XXH32_testdata[5021] */ + { 2511, 0x00000000U, 0xC3BA44D3U }, /* XSUM_XXH32_testdata[5022] */ + { 2511, 0x9E3779B1U, 0x380C4B29U }, /* XSUM_XXH32_testdata[5023] */ + { 2512, 0x00000000U, 0x1B0BBAF2U }, /* XSUM_XXH32_testdata[5024] */ + { 2512, 0x9E3779B1U, 0xDE65FD1BU }, /* XSUM_XXH32_testdata[5025] */ + { 2513, 0x00000000U, 0x77AA4D39U }, /* XSUM_XXH32_testdata[5026] */ + { 2513, 0x9E3779B1U, 0x054A6BF2U }, /* XSUM_XXH32_testdata[5027] */ + { 2514, 0x00000000U, 0x8A698619U }, /* XSUM_XXH32_testdata[5028] */ + { 2514, 0x9E3779B1U, 0x83B311DAU }, /* XSUM_XXH32_testdata[5029] */ + { 2515, 0x00000000U, 0x3DD07C59U }, /* XSUM_XXH32_testdata[5030] */ + { 2515, 0x9E3779B1U, 0x95DFCC93U }, /* XSUM_XXH32_testdata[5031] */ + { 2516, 0x00000000U, 0xAA71782EU }, /* XSUM_XXH32_testdata[5032] */ + { 2516, 0x9E3779B1U, 0x930CB31AU }, /* XSUM_XXH32_testdata[5033] */ + { 2517, 0x00000000U, 0xC10E46FBU }, /* XSUM_XXH32_testdata[5034] */ + { 2517, 0x9E3779B1U, 0x4E714751U }, /* XSUM_XXH32_testdata[5035] */ + { 2518, 0x00000000U, 0x00E44351U }, /* XSUM_XXH32_testdata[5036] */ + { 2518, 0x9E3779B1U, 0xA573A27FU }, /* XSUM_XXH32_testdata[5037] */ + { 2519, 0x00000000U, 0x3BBDD323U }, /* XSUM_XXH32_testdata[5038] */ + { 2519, 0x9E3779B1U, 0x7CD2EC98U }, /* XSUM_XXH32_testdata[5039] */ + { 2520, 0x00000000U, 0x56F5F0F5U }, /* XSUM_XXH32_testdata[5040] */ + { 2520, 0x9E3779B1U, 0x6DBFC220U }, /* XSUM_XXH32_testdata[5041] */ + { 2521, 0x00000000U, 0xBFCFEA1CU }, /* XSUM_XXH32_testdata[5042] */ + { 2521, 0x9E3779B1U, 0x77380567U }, /* XSUM_XXH32_testdata[5043] */ + { 2522, 0x00000000U, 0x53123268U }, /* XSUM_XXH32_testdata[5044] */ + { 2522, 0x9E3779B1U, 0xDD6DA0B4U }, /* XSUM_XXH32_testdata[5045] */ + { 2523, 0x00000000U, 0xCB49F211U }, /* XSUM_XXH32_testdata[5046] */ + { 2523, 0x9E3779B1U, 0x5B1A4A5DU }, /* XSUM_XXH32_testdata[5047] */ + { 2524, 0x00000000U, 0xBB216C60U }, /* XSUM_XXH32_testdata[5048] */ + { 2524, 0x9E3779B1U, 0xBE78F201U }, /* XSUM_XXH32_testdata[5049] */ + { 2525, 0x00000000U, 0x2BDFFA60U }, /* XSUM_XXH32_testdata[5050] */ + { 2525, 0x9E3779B1U, 0xD0766490U }, /* XSUM_XXH32_testdata[5051] */ + { 2526, 0x00000000U, 0xA3DE9270U }, /* XSUM_XXH32_testdata[5052] */ + { 2526, 0x9E3779B1U, 0xCEC85BF3U }, /* XSUM_XXH32_testdata[5053] */ + { 2527, 0x00000000U, 0xEFC57AFCU }, /* XSUM_XXH32_testdata[5054] */ + { 2527, 0x9E3779B1U, 0xC999C77CU }, /* XSUM_XXH32_testdata[5055] */ + { 2528, 0x00000000U, 0x1155BA9CU }, /* XSUM_XXH32_testdata[5056] */ + { 2528, 0x9E3779B1U, 0xF22757C6U }, /* XSUM_XXH32_testdata[5057] */ + { 2529, 0x00000000U, 0xBB71EAD2U }, /* XSUM_XXH32_testdata[5058] */ + { 2529, 0x9E3779B1U, 0x6F4EF984U }, /* XSUM_XXH32_testdata[5059] */ + { 2530, 0x00000000U, 0xEDEB9999U }, /* XSUM_XXH32_testdata[5060] */ + { 2530, 0x9E3779B1U, 0x0AA10A5FU }, /* XSUM_XXH32_testdata[5061] */ + { 2531, 0x00000000U, 0x32C51A6CU }, /* XSUM_XXH32_testdata[5062] */ + { 2531, 0x9E3779B1U, 0x2EAD7681U }, /* XSUM_XXH32_testdata[5063] */ + { 2532, 0x00000000U, 0x3495B28CU }, /* XSUM_XXH32_testdata[5064] */ + { 2532, 0x9E3779B1U, 0x5723E1FAU }, /* XSUM_XXH32_testdata[5065] */ + { 2533, 0x00000000U, 0x9AB8397EU }, /* XSUM_XXH32_testdata[5066] */ + { 2533, 0x9E3779B1U, 0xCDCF0996U }, /* XSUM_XXH32_testdata[5067] */ + { 2534, 0x00000000U, 0xFA84032BU }, /* XSUM_XXH32_testdata[5068] */ + { 2534, 0x9E3779B1U, 0x8EBFB96BU }, /* XSUM_XXH32_testdata[5069] */ + { 2535, 0x00000000U, 0xB247D845U }, /* XSUM_XXH32_testdata[5070] */ + { 2535, 0x9E3779B1U, 0xC9DC4D84U }, /* XSUM_XXH32_testdata[5071] */ + { 2536, 0x00000000U, 0xDE3C3124U }, /* XSUM_XXH32_testdata[5072] */ + { 2536, 0x9E3779B1U, 0x1B134AA2U }, /* XSUM_XXH32_testdata[5073] */ + { 2537, 0x00000000U, 0x748D3C2FU }, /* XSUM_XXH32_testdata[5074] */ + { 2537, 0x9E3779B1U, 0x137D499FU }, /* XSUM_XXH32_testdata[5075] */ + { 2538, 0x00000000U, 0x30184606U }, /* XSUM_XXH32_testdata[5076] */ + { 2538, 0x9E3779B1U, 0x1390D88DU }, /* XSUM_XXH32_testdata[5077] */ + { 2539, 0x00000000U, 0xA9BB1A2EU }, /* XSUM_XXH32_testdata[5078] */ + { 2539, 0x9E3779B1U, 0xD13D5416U }, /* XSUM_XXH32_testdata[5079] */ + { 2540, 0x00000000U, 0xBD9DECB4U }, /* XSUM_XXH32_testdata[5080] */ + { 2540, 0x9E3779B1U, 0x58AED3D4U }, /* XSUM_XXH32_testdata[5081] */ + { 2541, 0x00000000U, 0x871352E8U }, /* XSUM_XXH32_testdata[5082] */ + { 2541, 0x9E3779B1U, 0x78668F9CU }, /* XSUM_XXH32_testdata[5083] */ + { 2542, 0x00000000U, 0x2D251116U }, /* XSUM_XXH32_testdata[5084] */ + { 2542, 0x9E3779B1U, 0x3D6AE30FU }, /* XSUM_XXH32_testdata[5085] */ + { 2543, 0x00000000U, 0xB0B1A048U }, /* XSUM_XXH32_testdata[5086] */ + { 2543, 0x9E3779B1U, 0xF05AD391U }, /* XSUM_XXH32_testdata[5087] */ + { 2544, 0x00000000U, 0x64A2DB5FU }, /* XSUM_XXH32_testdata[5088] */ + { 2544, 0x9E3779B1U, 0x330B551FU }, /* XSUM_XXH32_testdata[5089] */ + { 2545, 0x00000000U, 0x1AAB93F5U }, /* XSUM_XXH32_testdata[5090] */ + { 2545, 0x9E3779B1U, 0x4B872B25U }, /* XSUM_XXH32_testdata[5091] */ + { 2546, 0x00000000U, 0x3DA05328U }, /* XSUM_XXH32_testdata[5092] */ + { 2546, 0x9E3779B1U, 0x79A5FA89U }, /* XSUM_XXH32_testdata[5093] */ + { 2547, 0x00000000U, 0xDE555F91U }, /* XSUM_XXH32_testdata[5094] */ + { 2547, 0x9E3779B1U, 0x390DB61CU }, /* XSUM_XXH32_testdata[5095] */ + { 2548, 0x00000000U, 0x8ECFAF26U }, /* XSUM_XXH32_testdata[5096] */ + { 2548, 0x9E3779B1U, 0x4DD32C3BU }, /* XSUM_XXH32_testdata[5097] */ + { 2549, 0x00000000U, 0x5F0ED460U }, /* XSUM_XXH32_testdata[5098] */ + { 2549, 0x9E3779B1U, 0x7A0BB25CU }, /* XSUM_XXH32_testdata[5099] */ + { 2550, 0x00000000U, 0xC3E328B0U }, /* XSUM_XXH32_testdata[5100] */ + { 2550, 0x9E3779B1U, 0xC8C02925U }, /* XSUM_XXH32_testdata[5101] */ + { 2551, 0x00000000U, 0x9B95BB28U }, /* XSUM_XXH32_testdata[5102] */ + { 2551, 0x9E3779B1U, 0x6609D410U }, /* XSUM_XXH32_testdata[5103] */ + { 2552, 0x00000000U, 0x7FC5A65FU }, /* XSUM_XXH32_testdata[5104] */ + { 2552, 0x9E3779B1U, 0xC0E9A0ADU }, /* XSUM_XXH32_testdata[5105] */ + { 2553, 0x00000000U, 0x5D323F7DU }, /* XSUM_XXH32_testdata[5106] */ + { 2553, 0x9E3779B1U, 0x38FBB4D5U }, /* XSUM_XXH32_testdata[5107] */ + { 2554, 0x00000000U, 0xAD3C2619U }, /* XSUM_XXH32_testdata[5108] */ + { 2554, 0x9E3779B1U, 0x4CBE5431U }, /* XSUM_XXH32_testdata[5109] */ + { 2555, 0x00000000U, 0x2DEDCDDDU }, /* XSUM_XXH32_testdata[5110] */ + { 2555, 0x9E3779B1U, 0xF121C811U }, /* XSUM_XXH32_testdata[5111] */ + { 2556, 0x00000000U, 0xBCC6DA50U }, /* XSUM_XXH32_testdata[5112] */ + { 2556, 0x9E3779B1U, 0x0EE12681U }, /* XSUM_XXH32_testdata[5113] */ + { 2557, 0x00000000U, 0x13BE5756U }, /* XSUM_XXH32_testdata[5114] */ + { 2557, 0x9E3779B1U, 0x773E8E4DU }, /* XSUM_XXH32_testdata[5115] */ + { 2558, 0x00000000U, 0x1CA3BA3FU }, /* XSUM_XXH32_testdata[5116] */ + { 2558, 0x9E3779B1U, 0xCACA1974U }, /* XSUM_XXH32_testdata[5117] */ + { 2559, 0x00000000U, 0x153CAD63U }, /* XSUM_XXH32_testdata[5118] */ + { 2559, 0x9E3779B1U, 0xD046722DU }, /* XSUM_XXH32_testdata[5119] */ + { 2560, 0x00000000U, 0x1ABA29BAU }, /* XSUM_XXH32_testdata[5120] */ + { 2560, 0x9E3779B1U, 0x51D83022U }, /* XSUM_XXH32_testdata[5121] */ + { 2561, 0x00000000U, 0xADE87E35U }, /* XSUM_XXH32_testdata[5122] */ + { 2561, 0x9E3779B1U, 0x97BC0802U }, /* XSUM_XXH32_testdata[5123] */ + { 2562, 0x00000000U, 0x7C693BDEU }, /* XSUM_XXH32_testdata[5124] */ + { 2562, 0x9E3779B1U, 0x3610DFC4U }, /* XSUM_XXH32_testdata[5125] */ + { 2563, 0x00000000U, 0xCAB42EDAU }, /* XSUM_XXH32_testdata[5126] */ + { 2563, 0x9E3779B1U, 0x9C98F65BU }, /* XSUM_XXH32_testdata[5127] */ + { 2564, 0x00000000U, 0x1BEE92DEU }, /* XSUM_XXH32_testdata[5128] */ + { 2564, 0x9E3779B1U, 0xA092C145U }, /* XSUM_XXH32_testdata[5129] */ + { 2565, 0x00000000U, 0x5340661FU }, /* XSUM_XXH32_testdata[5130] */ + { 2565, 0x9E3779B1U, 0xFC3013D6U }, /* XSUM_XXH32_testdata[5131] */ + { 2566, 0x00000000U, 0xA00BE528U }, /* XSUM_XXH32_testdata[5132] */ + { 2566, 0x9E3779B1U, 0x88E43904U }, /* XSUM_XXH32_testdata[5133] */ + { 2567, 0x00000000U, 0x5B70F3CAU }, /* XSUM_XXH32_testdata[5134] */ + { 2567, 0x9E3779B1U, 0x963DBA98U }, /* XSUM_XXH32_testdata[5135] */ + { 2568, 0x00000000U, 0xCA186675U }, /* XSUM_XXH32_testdata[5136] */ + { 2568, 0x9E3779B1U, 0x771ED8ACU }, /* XSUM_XXH32_testdata[5137] */ + { 2569, 0x00000000U, 0x8ADF1BD0U }, /* XSUM_XXH32_testdata[5138] */ + { 2569, 0x9E3779B1U, 0x566F3C4EU }, /* XSUM_XXH32_testdata[5139] */ + { 2570, 0x00000000U, 0x95E0C3ECU }, /* XSUM_XXH32_testdata[5140] */ + { 2570, 0x9E3779B1U, 0xC33D4E92U }, /* XSUM_XXH32_testdata[5141] */ + { 2571, 0x00000000U, 0xB2EF66DFU }, /* XSUM_XXH32_testdata[5142] */ + { 2571, 0x9E3779B1U, 0x0F8D7D36U }, /* XSUM_XXH32_testdata[5143] */ + { 2572, 0x00000000U, 0xA700C815U }, /* XSUM_XXH32_testdata[5144] */ + { 2572, 0x9E3779B1U, 0xA8B82AC3U }, /* XSUM_XXH32_testdata[5145] */ + { 2573, 0x00000000U, 0x2898B84AU }, /* XSUM_XXH32_testdata[5146] */ + { 2573, 0x9E3779B1U, 0x338AE2C0U }, /* XSUM_XXH32_testdata[5147] */ + { 2574, 0x00000000U, 0x0B8D628AU }, /* XSUM_XXH32_testdata[5148] */ + { 2574, 0x9E3779B1U, 0x999867C3U }, /* XSUM_XXH32_testdata[5149] */ + { 2575, 0x00000000U, 0x80E4BAD6U }, /* XSUM_XXH32_testdata[5150] */ + { 2575, 0x9E3779B1U, 0x2F4350BFU }, /* XSUM_XXH32_testdata[5151] */ + { 2576, 0x00000000U, 0x5A4BF4F5U }, /* XSUM_XXH32_testdata[5152] */ + { 2576, 0x9E3779B1U, 0xB583DD59U }, /* XSUM_XXH32_testdata[5153] */ + { 2577, 0x00000000U, 0xCBBEE1FFU }, /* XSUM_XXH32_testdata[5154] */ + { 2577, 0x9E3779B1U, 0x19C5CAB0U }, /* XSUM_XXH32_testdata[5155] */ + { 2578, 0x00000000U, 0x84DA9375U }, /* XSUM_XXH32_testdata[5156] */ + { 2578, 0x9E3779B1U, 0x302900F6U }, /* XSUM_XXH32_testdata[5157] */ + { 2579, 0x00000000U, 0xD61C2E53U }, /* XSUM_XXH32_testdata[5158] */ + { 2579, 0x9E3779B1U, 0xC8B528EBU }, /* XSUM_XXH32_testdata[5159] */ + { 2580, 0x00000000U, 0xDB46C259U }, /* XSUM_XXH32_testdata[5160] */ + { 2580, 0x9E3779B1U, 0x24565891U }, /* XSUM_XXH32_testdata[5161] */ + { 2581, 0x00000000U, 0x3B9B6E50U }, /* XSUM_XXH32_testdata[5162] */ + { 2581, 0x9E3779B1U, 0xE31D1333U }, /* XSUM_XXH32_testdata[5163] */ + { 2582, 0x00000000U, 0xC2192C93U }, /* XSUM_XXH32_testdata[5164] */ + { 2582, 0x9E3779B1U, 0xB4ECDB50U }, /* XSUM_XXH32_testdata[5165] */ + { 2583, 0x00000000U, 0xEE3138CFU }, /* XSUM_XXH32_testdata[5166] */ + { 2583, 0x9E3779B1U, 0x97A34761U }, /* XSUM_XXH32_testdata[5167] */ + { 2584, 0x00000000U, 0xB947C19AU }, /* XSUM_XXH32_testdata[5168] */ + { 2584, 0x9E3779B1U, 0x7ABB56ABU }, /* XSUM_XXH32_testdata[5169] */ + { 2585, 0x00000000U, 0xC1FD5E79U }, /* XSUM_XXH32_testdata[5170] */ + { 2585, 0x9E3779B1U, 0x1EF60D93U }, /* XSUM_XXH32_testdata[5171] */ + { 2586, 0x00000000U, 0x29B23FB2U }, /* XSUM_XXH32_testdata[5172] */ + { 2586, 0x9E3779B1U, 0x788A9EFDU }, /* XSUM_XXH32_testdata[5173] */ + { 2587, 0x00000000U, 0xE86DD88FU }, /* XSUM_XXH32_testdata[5174] */ + { 2587, 0x9E3779B1U, 0x84FAFF47U }, /* XSUM_XXH32_testdata[5175] */ + { 2588, 0x00000000U, 0x4AE06B62U }, /* XSUM_XXH32_testdata[5176] */ + { 2588, 0x9E3779B1U, 0xACA1A31DU }, /* XSUM_XXH32_testdata[5177] */ + { 2589, 0x00000000U, 0x972BB1C4U }, /* XSUM_XXH32_testdata[5178] */ + { 2589, 0x9E3779B1U, 0xB2BA8F34U }, /* XSUM_XXH32_testdata[5179] */ + { 2590, 0x00000000U, 0xBA75790CU }, /* XSUM_XXH32_testdata[5180] */ + { 2590, 0x9E3779B1U, 0x6521A567U }, /* XSUM_XXH32_testdata[5181] */ + { 2591, 0x00000000U, 0x0051F6F3U }, /* XSUM_XXH32_testdata[5182] */ + { 2591, 0x9E3779B1U, 0xAB35F09EU }, /* XSUM_XXH32_testdata[5183] */ + { 2592, 0x00000000U, 0xC086C3D6U }, /* XSUM_XXH32_testdata[5184] */ + { 2592, 0x9E3779B1U, 0xD999A842U }, /* XSUM_XXH32_testdata[5185] */ + { 2593, 0x00000000U, 0x2FAAE8F6U }, /* XSUM_XXH32_testdata[5186] */ + { 2593, 0x9E3779B1U, 0xE28218AFU }, /* XSUM_XXH32_testdata[5187] */ + { 2594, 0x00000000U, 0x6FF01C64U }, /* XSUM_XXH32_testdata[5188] */ + { 2594, 0x9E3779B1U, 0xF4979DCBU }, /* XSUM_XXH32_testdata[5189] */ + { 2595, 0x00000000U, 0x2E66493DU }, /* XSUM_XXH32_testdata[5190] */ + { 2595, 0x9E3779B1U, 0x0C3FF755U }, /* XSUM_XXH32_testdata[5191] */ + { 2596, 0x00000000U, 0xF3CA0A8FU }, /* XSUM_XXH32_testdata[5192] */ + { 2596, 0x9E3779B1U, 0xBE5665A9U }, /* XSUM_XXH32_testdata[5193] */ + { 2597, 0x00000000U, 0xA3D1F12DU }, /* XSUM_XXH32_testdata[5194] */ + { 2597, 0x9E3779B1U, 0xE37C6962U }, /* XSUM_XXH32_testdata[5195] */ + { 2598, 0x00000000U, 0x1BC5E3FCU }, /* XSUM_XXH32_testdata[5196] */ + { 2598, 0x9E3779B1U, 0x508C0A20U }, /* XSUM_XXH32_testdata[5197] */ + { 2599, 0x00000000U, 0x6A9E3256U }, /* XSUM_XXH32_testdata[5198] */ + { 2599, 0x9E3779B1U, 0x1550A26EU }, /* XSUM_XXH32_testdata[5199] */ + { 2600, 0x00000000U, 0xEF3A2069U }, /* XSUM_XXH32_testdata[5200] */ + { 2600, 0x9E3779B1U, 0x5DC7FA5FU }, /* XSUM_XXH32_testdata[5201] */ + { 2601, 0x00000000U, 0x7011A874U }, /* XSUM_XXH32_testdata[5202] */ + { 2601, 0x9E3779B1U, 0x90ECDBA0U }, /* XSUM_XXH32_testdata[5203] */ + { 2602, 0x00000000U, 0xDF051DEFU }, /* XSUM_XXH32_testdata[5204] */ + { 2602, 0x9E3779B1U, 0xD9E10336U }, /* XSUM_XXH32_testdata[5205] */ + { 2603, 0x00000000U, 0x4F7B4CAAU }, /* XSUM_XXH32_testdata[5206] */ + { 2603, 0x9E3779B1U, 0xFD43224AU }, /* XSUM_XXH32_testdata[5207] */ + { 2604, 0x00000000U, 0xABE84A3AU }, /* XSUM_XXH32_testdata[5208] */ + { 2604, 0x9E3779B1U, 0x4BD78879U }, /* XSUM_XXH32_testdata[5209] */ + { 2605, 0x00000000U, 0x9EF62713U }, /* XSUM_XXH32_testdata[5210] */ + { 2605, 0x9E3779B1U, 0xB2B119F8U }, /* XSUM_XXH32_testdata[5211] */ + { 2606, 0x00000000U, 0x88919716U }, /* XSUM_XXH32_testdata[5212] */ + { 2606, 0x9E3779B1U, 0xC7B45CF4U }, /* XSUM_XXH32_testdata[5213] */ + { 2607, 0x00000000U, 0x9C077C09U }, /* XSUM_XXH32_testdata[5214] */ + { 2607, 0x9E3779B1U, 0xFE7EE296U }, /* XSUM_XXH32_testdata[5215] */ + { 2608, 0x00000000U, 0x54E5DF23U }, /* XSUM_XXH32_testdata[5216] */ + { 2608, 0x9E3779B1U, 0x7A0EA04FU }, /* XSUM_XXH32_testdata[5217] */ + { 2609, 0x00000000U, 0x266D2A26U }, /* XSUM_XXH32_testdata[5218] */ + { 2609, 0x9E3779B1U, 0x60D9C6FAU }, /* XSUM_XXH32_testdata[5219] */ + { 2610, 0x00000000U, 0x46D08D97U }, /* XSUM_XXH32_testdata[5220] */ + { 2610, 0x9E3779B1U, 0xC4DA710AU }, /* XSUM_XXH32_testdata[5221] */ + { 2611, 0x00000000U, 0x94B7EAA8U }, /* XSUM_XXH32_testdata[5222] */ + { 2611, 0x9E3779B1U, 0xB5140456U }, /* XSUM_XXH32_testdata[5223] */ + { 2612, 0x00000000U, 0xA16CC5CAU }, /* XSUM_XXH32_testdata[5224] */ + { 2612, 0x9E3779B1U, 0x0579FFFAU }, /* XSUM_XXH32_testdata[5225] */ + { 2613, 0x00000000U, 0x1506CC2CU }, /* XSUM_XXH32_testdata[5226] */ + { 2613, 0x9E3779B1U, 0x18EFF4DFU }, /* XSUM_XXH32_testdata[5227] */ + { 2614, 0x00000000U, 0xED5C7F33U }, /* XSUM_XXH32_testdata[5228] */ + { 2614, 0x9E3779B1U, 0x8B398C71U }, /* XSUM_XXH32_testdata[5229] */ + { 2615, 0x00000000U, 0xC9F9F086U }, /* XSUM_XXH32_testdata[5230] */ + { 2615, 0x9E3779B1U, 0x0149AC29U }, /* XSUM_XXH32_testdata[5231] */ + { 2616, 0x00000000U, 0x0BC9D6D6U }, /* XSUM_XXH32_testdata[5232] */ + { 2616, 0x9E3779B1U, 0x09DD4562U }, /* XSUM_XXH32_testdata[5233] */ + { 2617, 0x00000000U, 0xA6ECDE67U }, /* XSUM_XXH32_testdata[5234] */ + { 2617, 0x9E3779B1U, 0x87D85AC8U }, /* XSUM_XXH32_testdata[5235] */ + { 2618, 0x00000000U, 0x6F24D814U }, /* XSUM_XXH32_testdata[5236] */ + { 2618, 0x9E3779B1U, 0xC1778CE5U }, /* XSUM_XXH32_testdata[5237] */ + { 2619, 0x00000000U, 0xDEE74062U }, /* XSUM_XXH32_testdata[5238] */ + { 2619, 0x9E3779B1U, 0xA13874B9U }, /* XSUM_XXH32_testdata[5239] */ + { 2620, 0x00000000U, 0x935BF986U }, /* XSUM_XXH32_testdata[5240] */ + { 2620, 0x9E3779B1U, 0x105E8B4AU }, /* XSUM_XXH32_testdata[5241] */ + { 2621, 0x00000000U, 0x2B8941E8U }, /* XSUM_XXH32_testdata[5242] */ + { 2621, 0x9E3779B1U, 0x1987630FU }, /* XSUM_XXH32_testdata[5243] */ + { 2622, 0x00000000U, 0xD5B55ED9U }, /* XSUM_XXH32_testdata[5244] */ + { 2622, 0x9E3779B1U, 0x558D1D07U }, /* XSUM_XXH32_testdata[5245] */ + { 2623, 0x00000000U, 0x4B90FD59U }, /* XSUM_XXH32_testdata[5246] */ + { 2623, 0x9E3779B1U, 0x7174560EU }, /* XSUM_XXH32_testdata[5247] */ + { 2624, 0x00000000U, 0x819572F5U }, /* XSUM_XXH32_testdata[5248] */ + { 2624, 0x9E3779B1U, 0x2ADEBAFDU }, /* XSUM_XXH32_testdata[5249] */ + { 2625, 0x00000000U, 0x7FF479D5U }, /* XSUM_XXH32_testdata[5250] */ + { 2625, 0x9E3779B1U, 0x316797DAU }, /* XSUM_XXH32_testdata[5251] */ + { 2626, 0x00000000U, 0x9CA96662U }, /* XSUM_XXH32_testdata[5252] */ + { 2626, 0x9E3779B1U, 0xF5640CB8U }, /* XSUM_XXH32_testdata[5253] */ + { 2627, 0x00000000U, 0xDB9DC926U }, /* XSUM_XXH32_testdata[5254] */ + { 2627, 0x9E3779B1U, 0x6C4A6A53U }, /* XSUM_XXH32_testdata[5255] */ + { 2628, 0x00000000U, 0x3253A88DU }, /* XSUM_XXH32_testdata[5256] */ + { 2628, 0x9E3779B1U, 0xA0FAD05EU }, /* XSUM_XXH32_testdata[5257] */ + { 2629, 0x00000000U, 0xB216A6C4U }, /* XSUM_XXH32_testdata[5258] */ + { 2629, 0x9E3779B1U, 0x86743372U }, /* XSUM_XXH32_testdata[5259] */ + { 2630, 0x00000000U, 0x5675D3D6U }, /* XSUM_XXH32_testdata[5260] */ + { 2630, 0x9E3779B1U, 0xA48FCF88U }, /* XSUM_XXH32_testdata[5261] */ + { 2631, 0x00000000U, 0x29C3CF00U }, /* XSUM_XXH32_testdata[5262] */ + { 2631, 0x9E3779B1U, 0x744F824FU }, /* XSUM_XXH32_testdata[5263] */ + { 2632, 0x00000000U, 0xFFE94921U }, /* XSUM_XXH32_testdata[5264] */ + { 2632, 0x9E3779B1U, 0x7A2AD348U }, /* XSUM_XXH32_testdata[5265] */ + { 2633, 0x00000000U, 0x8ED862F3U }, /* XSUM_XXH32_testdata[5266] */ + { 2633, 0x9E3779B1U, 0xEF43D56CU }, /* XSUM_XXH32_testdata[5267] */ + { 2634, 0x00000000U, 0x79B104B1U }, /* XSUM_XXH32_testdata[5268] */ + { 2634, 0x9E3779B1U, 0x5996D647U }, /* XSUM_XXH32_testdata[5269] */ + { 2635, 0x00000000U, 0x6E8F6903U }, /* XSUM_XXH32_testdata[5270] */ + { 2635, 0x9E3779B1U, 0x17B9C1DFU }, /* XSUM_XXH32_testdata[5271] */ + { 2636, 0x00000000U, 0x147555C3U }, /* XSUM_XXH32_testdata[5272] */ + { 2636, 0x9E3779B1U, 0x84E2C5A8U }, /* XSUM_XXH32_testdata[5273] */ + { 2637, 0x00000000U, 0x5AFDD73CU }, /* XSUM_XXH32_testdata[5274] */ + { 2637, 0x9E3779B1U, 0xBF3F9C0EU }, /* XSUM_XXH32_testdata[5275] */ + { 2638, 0x00000000U, 0x0EF90C7EU }, /* XSUM_XXH32_testdata[5276] */ + { 2638, 0x9E3779B1U, 0xCDC67BAEU }, /* XSUM_XXH32_testdata[5277] */ + { 2639, 0x00000000U, 0xA64BB85EU }, /* XSUM_XXH32_testdata[5278] */ + { 2639, 0x9E3779B1U, 0xE96E9BA0U }, /* XSUM_XXH32_testdata[5279] */ + { 2640, 0x00000000U, 0x28DFAE9AU }, /* XSUM_XXH32_testdata[5280] */ + { 2640, 0x9E3779B1U, 0xD42DC543U }, /* XSUM_XXH32_testdata[5281] */ + { 2641, 0x00000000U, 0xF10ACA82U }, /* XSUM_XXH32_testdata[5282] */ + { 2641, 0x9E3779B1U, 0x38BAB76EU }, /* XSUM_XXH32_testdata[5283] */ + { 2642, 0x00000000U, 0xB1958BE4U }, /* XSUM_XXH32_testdata[5284] */ + { 2642, 0x9E3779B1U, 0xCAF2760FU }, /* XSUM_XXH32_testdata[5285] */ + { 2643, 0x00000000U, 0x2EC97AD3U }, /* XSUM_XXH32_testdata[5286] */ + { 2643, 0x9E3779B1U, 0xC4D00FC1U }, /* XSUM_XXH32_testdata[5287] */ + { 2644, 0x00000000U, 0xEE0453E5U }, /* XSUM_XXH32_testdata[5288] */ + { 2644, 0x9E3779B1U, 0xFBECD6EEU }, /* XSUM_XXH32_testdata[5289] */ + { 2645, 0x00000000U, 0x89C63061U }, /* XSUM_XXH32_testdata[5290] */ + { 2645, 0x9E3779B1U, 0x2FBDEC89U }, /* XSUM_XXH32_testdata[5291] */ + { 2646, 0x00000000U, 0xADF740ACU }, /* XSUM_XXH32_testdata[5292] */ + { 2646, 0x9E3779B1U, 0x8E60E397U }, /* XSUM_XXH32_testdata[5293] */ + { 2647, 0x00000000U, 0x67DDA68EU }, /* XSUM_XXH32_testdata[5294] */ + { 2647, 0x9E3779B1U, 0xBA2934E0U }, /* XSUM_XXH32_testdata[5295] */ + { 2648, 0x00000000U, 0x5425D298U }, /* XSUM_XXH32_testdata[5296] */ + { 2648, 0x9E3779B1U, 0xF4B9737FU }, /* XSUM_XXH32_testdata[5297] */ + { 2649, 0x00000000U, 0x65390777U }, /* XSUM_XXH32_testdata[5298] */ + { 2649, 0x9E3779B1U, 0x79237015U }, /* XSUM_XXH32_testdata[5299] */ + { 2650, 0x00000000U, 0x3E1D5015U }, /* XSUM_XXH32_testdata[5300] */ + { 2650, 0x9E3779B1U, 0xEAEF8B71U }, /* XSUM_XXH32_testdata[5301] */ + { 2651, 0x00000000U, 0xE4ABFBF2U }, /* XSUM_XXH32_testdata[5302] */ + { 2651, 0x9E3779B1U, 0xE280D30FU }, /* XSUM_XXH32_testdata[5303] */ + { 2652, 0x00000000U, 0xE3FAC3F0U }, /* XSUM_XXH32_testdata[5304] */ + { 2652, 0x9E3779B1U, 0x47DB7B3CU }, /* XSUM_XXH32_testdata[5305] */ + { 2653, 0x00000000U, 0x0829971DU }, /* XSUM_XXH32_testdata[5306] */ + { 2653, 0x9E3779B1U, 0xA515CF6CU }, /* XSUM_XXH32_testdata[5307] */ + { 2654, 0x00000000U, 0x63FE1B1EU }, /* XSUM_XXH32_testdata[5308] */ + { 2654, 0x9E3779B1U, 0x80D208D6U }, /* XSUM_XXH32_testdata[5309] */ + { 2655, 0x00000000U, 0x345AC2C8U }, /* XSUM_XXH32_testdata[5310] */ + { 2655, 0x9E3779B1U, 0x55214C47U }, /* XSUM_XXH32_testdata[5311] */ + { 2656, 0x00000000U, 0x728C3834U }, /* XSUM_XXH32_testdata[5312] */ + { 2656, 0x9E3779B1U, 0xF24FCD50U }, /* XSUM_XXH32_testdata[5313] */ + { 2657, 0x00000000U, 0xF7D04B18U }, /* XSUM_XXH32_testdata[5314] */ + { 2657, 0x9E3779B1U, 0x09A5503BU }, /* XSUM_XXH32_testdata[5315] */ + { 2658, 0x00000000U, 0xE5F59CD4U }, /* XSUM_XXH32_testdata[5316] */ + { 2658, 0x9E3779B1U, 0xB9F629E2U }, /* XSUM_XXH32_testdata[5317] */ + { 2659, 0x00000000U, 0x91819CE5U }, /* XSUM_XXH32_testdata[5318] */ + { 2659, 0x9E3779B1U, 0xB26BA83BU }, /* XSUM_XXH32_testdata[5319] */ + { 2660, 0x00000000U, 0x386059D9U }, /* XSUM_XXH32_testdata[5320] */ + { 2660, 0x9E3779B1U, 0x9F695DE7U }, /* XSUM_XXH32_testdata[5321] */ + { 2661, 0x00000000U, 0x35755CCBU }, /* XSUM_XXH32_testdata[5322] */ + { 2661, 0x9E3779B1U, 0x8E9E3C73U }, /* XSUM_XXH32_testdata[5323] */ + { 2662, 0x00000000U, 0x296ED7F5U }, /* XSUM_XXH32_testdata[5324] */ + { 2662, 0x9E3779B1U, 0x3B09C74DU }, /* XSUM_XXH32_testdata[5325] */ + { 2663, 0x00000000U, 0xEBBEFEBAU }, /* XSUM_XXH32_testdata[5326] */ + { 2663, 0x9E3779B1U, 0xCAE4636CU }, /* XSUM_XXH32_testdata[5327] */ + { 2664, 0x00000000U, 0x9069B173U }, /* XSUM_XXH32_testdata[5328] */ + { 2664, 0x9E3779B1U, 0x54F2649BU }, /* XSUM_XXH32_testdata[5329] */ + { 2665, 0x00000000U, 0x466182B7U }, /* XSUM_XXH32_testdata[5330] */ + { 2665, 0x9E3779B1U, 0xD35EBF1CU }, /* XSUM_XXH32_testdata[5331] */ + { 2666, 0x00000000U, 0x3E076B02U }, /* XSUM_XXH32_testdata[5332] */ + { 2666, 0x9E3779B1U, 0xB53173B8U }, /* XSUM_XXH32_testdata[5333] */ + { 2667, 0x00000000U, 0x87A62EE5U }, /* XSUM_XXH32_testdata[5334] */ + { 2667, 0x9E3779B1U, 0xC71A70A9U }, /* XSUM_XXH32_testdata[5335] */ + { 2668, 0x00000000U, 0x19FA51B7U }, /* XSUM_XXH32_testdata[5336] */ + { 2668, 0x9E3779B1U, 0x5DE5FB17U }, /* XSUM_XXH32_testdata[5337] */ + { 2669, 0x00000000U, 0xBF6DD183U }, /* XSUM_XXH32_testdata[5338] */ + { 2669, 0x9E3779B1U, 0x6F2E3E6BU }, /* XSUM_XXH32_testdata[5339] */ + { 2670, 0x00000000U, 0xFEC8B9C5U }, /* XSUM_XXH32_testdata[5340] */ + { 2670, 0x9E3779B1U, 0x81523330U }, /* XSUM_XXH32_testdata[5341] */ + { 2671, 0x00000000U, 0x128F0CF7U }, /* XSUM_XXH32_testdata[5342] */ + { 2671, 0x9E3779B1U, 0x71D3FE04U }, /* XSUM_XXH32_testdata[5343] */ + { 2672, 0x00000000U, 0xDC954677U }, /* XSUM_XXH32_testdata[5344] */ + { 2672, 0x9E3779B1U, 0x14D1AEC6U }, /* XSUM_XXH32_testdata[5345] */ + { 2673, 0x00000000U, 0x1F9C8546U }, /* XSUM_XXH32_testdata[5346] */ + { 2673, 0x9E3779B1U, 0x72873EECU }, /* XSUM_XXH32_testdata[5347] */ + { 2674, 0x00000000U, 0xAA8C6432U }, /* XSUM_XXH32_testdata[5348] */ + { 2674, 0x9E3779B1U, 0x04FD8FF0U }, /* XSUM_XXH32_testdata[5349] */ + { 2675, 0x00000000U, 0xC5D6F479U }, /* XSUM_XXH32_testdata[5350] */ + { 2675, 0x9E3779B1U, 0xA06A12AEU }, /* XSUM_XXH32_testdata[5351] */ + { 2676, 0x00000000U, 0x78436351U }, /* XSUM_XXH32_testdata[5352] */ + { 2676, 0x9E3779B1U, 0xA9966893U }, /* XSUM_XXH32_testdata[5353] */ + { 2677, 0x00000000U, 0x7B747ED2U }, /* XSUM_XXH32_testdata[5354] */ + { 2677, 0x9E3779B1U, 0x54487A50U }, /* XSUM_XXH32_testdata[5355] */ + { 2678, 0x00000000U, 0x00C30B81U }, /* XSUM_XXH32_testdata[5356] */ + { 2678, 0x9E3779B1U, 0x511DD715U }, /* XSUM_XXH32_testdata[5357] */ + { 2679, 0x00000000U, 0xC21D907DU }, /* XSUM_XXH32_testdata[5358] */ + { 2679, 0x9E3779B1U, 0x931E5DC7U }, /* XSUM_XXH32_testdata[5359] */ + { 2680, 0x00000000U, 0x23DCC170U }, /* XSUM_XXH32_testdata[5360] */ + { 2680, 0x9E3779B1U, 0xAE6B07C2U }, /* XSUM_XXH32_testdata[5361] */ + { 2681, 0x00000000U, 0x61289FF0U }, /* XSUM_XXH32_testdata[5362] */ + { 2681, 0x9E3779B1U, 0x430C1894U }, /* XSUM_XXH32_testdata[5363] */ + { 2682, 0x00000000U, 0x6467A6D4U }, /* XSUM_XXH32_testdata[5364] */ + { 2682, 0x9E3779B1U, 0xBAC82073U }, /* XSUM_XXH32_testdata[5365] */ + { 2683, 0x00000000U, 0x9C3AF95BU }, /* XSUM_XXH32_testdata[5366] */ + { 2683, 0x9E3779B1U, 0x600880A9U }, /* XSUM_XXH32_testdata[5367] */ + { 2684, 0x00000000U, 0x883BF584U }, /* XSUM_XXH32_testdata[5368] */ + { 2684, 0x9E3779B1U, 0xD23A72C2U }, /* XSUM_XXH32_testdata[5369] */ + { 2685, 0x00000000U, 0x4283CB47U }, /* XSUM_XXH32_testdata[5370] */ + { 2685, 0x9E3779B1U, 0xF4643357U }, /* XSUM_XXH32_testdata[5371] */ + { 2686, 0x00000000U, 0x775547D9U }, /* XSUM_XXH32_testdata[5372] */ + { 2686, 0x9E3779B1U, 0xFAA2E46EU }, /* XSUM_XXH32_testdata[5373] */ + { 2687, 0x00000000U, 0xA8F45C39U }, /* XSUM_XXH32_testdata[5374] */ + { 2687, 0x9E3779B1U, 0x20E0FCD6U }, /* XSUM_XXH32_testdata[5375] */ + { 2688, 0x00000000U, 0x3D03700BU }, /* XSUM_XXH32_testdata[5376] */ + { 2688, 0x9E3779B1U, 0x53452CDBU }, /* XSUM_XXH32_testdata[5377] */ + { 2689, 0x00000000U, 0xBDD6E7E9U }, /* XSUM_XXH32_testdata[5378] */ + { 2689, 0x9E3779B1U, 0x427DE32BU }, /* XSUM_XXH32_testdata[5379] */ + { 2690, 0x00000000U, 0x48D79403U }, /* XSUM_XXH32_testdata[5380] */ + { 2690, 0x9E3779B1U, 0xC1E8052AU }, /* XSUM_XXH32_testdata[5381] */ + { 2691, 0x00000000U, 0x6724D420U }, /* XSUM_XXH32_testdata[5382] */ + { 2691, 0x9E3779B1U, 0x6658D971U }, /* XSUM_XXH32_testdata[5383] */ + { 2692, 0x00000000U, 0x34410C1CU }, /* XSUM_XXH32_testdata[5384] */ + { 2692, 0x9E3779B1U, 0x61CF4F0DU }, /* XSUM_XXH32_testdata[5385] */ + { 2693, 0x00000000U, 0x78330DFCU }, /* XSUM_XXH32_testdata[5386] */ + { 2693, 0x9E3779B1U, 0x7366F99EU }, /* XSUM_XXH32_testdata[5387] */ + { 2694, 0x00000000U, 0x6A6BC845U }, /* XSUM_XXH32_testdata[5388] */ + { 2694, 0x9E3779B1U, 0x113DA139U }, /* XSUM_XXH32_testdata[5389] */ + { 2695, 0x00000000U, 0x870BA124U }, /* XSUM_XXH32_testdata[5390] */ + { 2695, 0x9E3779B1U, 0xE779D60DU }, /* XSUM_XXH32_testdata[5391] */ + { 2696, 0x00000000U, 0xF11ABFF6U }, /* XSUM_XXH32_testdata[5392] */ + { 2696, 0x9E3779B1U, 0x4B8BF8C6U }, /* XSUM_XXH32_testdata[5393] */ + { 2697, 0x00000000U, 0x6661B68CU }, /* XSUM_XXH32_testdata[5394] */ + { 2697, 0x9E3779B1U, 0xF777EE84U }, /* XSUM_XXH32_testdata[5395] */ + { 2698, 0x00000000U, 0xB705B4BDU }, /* XSUM_XXH32_testdata[5396] */ + { 2698, 0x9E3779B1U, 0x8EFBED1DU }, /* XSUM_XXH32_testdata[5397] */ + { 2699, 0x00000000U, 0x25D23917U }, /* XSUM_XXH32_testdata[5398] */ + { 2699, 0x9E3779B1U, 0xD602C138U }, /* XSUM_XXH32_testdata[5399] */ + { 2700, 0x00000000U, 0x96D45C73U }, /* XSUM_XXH32_testdata[5400] */ + { 2700, 0x9E3779B1U, 0x7B6D5D92U }, /* XSUM_XXH32_testdata[5401] */ + { 2701, 0x00000000U, 0x2404B012U }, /* XSUM_XXH32_testdata[5402] */ + { 2701, 0x9E3779B1U, 0xF80257D4U }, /* XSUM_XXH32_testdata[5403] */ + { 2702, 0x00000000U, 0xB3BB7ED1U }, /* XSUM_XXH32_testdata[5404] */ + { 2702, 0x9E3779B1U, 0x8751A09EU }, /* XSUM_XXH32_testdata[5405] */ + { 2703, 0x00000000U, 0x406E0E4EU }, /* XSUM_XXH32_testdata[5406] */ + { 2703, 0x9E3779B1U, 0x7AC0153FU }, /* XSUM_XXH32_testdata[5407] */ + { 2704, 0x00000000U, 0xB2B82914U }, /* XSUM_XXH32_testdata[5408] */ + { 2704, 0x9E3779B1U, 0xA0D20F9EU }, /* XSUM_XXH32_testdata[5409] */ + { 2705, 0x00000000U, 0x1D0F4FFAU }, /* XSUM_XXH32_testdata[5410] */ + { 2705, 0x9E3779B1U, 0xC7FD7E08U }, /* XSUM_XXH32_testdata[5411] */ + { 2706, 0x00000000U, 0x132C7D2AU }, /* XSUM_XXH32_testdata[5412] */ + { 2706, 0x9E3779B1U, 0xDD1FBC98U }, /* XSUM_XXH32_testdata[5413] */ + { 2707, 0x00000000U, 0xB2F7BCBAU }, /* XSUM_XXH32_testdata[5414] */ + { 2707, 0x9E3779B1U, 0xF037EF59U }, /* XSUM_XXH32_testdata[5415] */ + { 2708, 0x00000000U, 0x9D308CA4U }, /* XSUM_XXH32_testdata[5416] */ + { 2708, 0x9E3779B1U, 0xB2843B4DU }, /* XSUM_XXH32_testdata[5417] */ + { 2709, 0x00000000U, 0x294E4D94U }, /* XSUM_XXH32_testdata[5418] */ + { 2709, 0x9E3779B1U, 0x77E7910DU }, /* XSUM_XXH32_testdata[5419] */ + { 2710, 0x00000000U, 0x538C9176U }, /* XSUM_XXH32_testdata[5420] */ + { 2710, 0x9E3779B1U, 0xD89C74B6U }, /* XSUM_XXH32_testdata[5421] */ + { 2711, 0x00000000U, 0xF850B7E3U }, /* XSUM_XXH32_testdata[5422] */ + { 2711, 0x9E3779B1U, 0xA9EAEFEAU }, /* XSUM_XXH32_testdata[5423] */ + { 2712, 0x00000000U, 0x59A65DF2U }, /* XSUM_XXH32_testdata[5424] */ + { 2712, 0x9E3779B1U, 0xE1E2DDC5U }, /* XSUM_XXH32_testdata[5425] */ + { 2713, 0x00000000U, 0x96F15385U }, /* XSUM_XXH32_testdata[5426] */ + { 2713, 0x9E3779B1U, 0xB5658981U }, /* XSUM_XXH32_testdata[5427] */ + { 2714, 0x00000000U, 0xF5D23C46U }, /* XSUM_XXH32_testdata[5428] */ + { 2714, 0x9E3779B1U, 0xCFC11CD5U }, /* XSUM_XXH32_testdata[5429] */ + { 2715, 0x00000000U, 0xC50611ADU }, /* XSUM_XXH32_testdata[5430] */ + { 2715, 0x9E3779B1U, 0x489ADED0U }, /* XSUM_XXH32_testdata[5431] */ + { 2716, 0x00000000U, 0x9B9FC940U }, /* XSUM_XXH32_testdata[5432] */ + { 2716, 0x9E3779B1U, 0x6A23E943U }, /* XSUM_XXH32_testdata[5433] */ + { 2717, 0x00000000U, 0xF0BB20F0U }, /* XSUM_XXH32_testdata[5434] */ + { 2717, 0x9E3779B1U, 0x8B640A2AU }, /* XSUM_XXH32_testdata[5435] */ + { 2718, 0x00000000U, 0xE5B2613CU }, /* XSUM_XXH32_testdata[5436] */ + { 2718, 0x9E3779B1U, 0x68D0ACDCU }, /* XSUM_XXH32_testdata[5437] */ + { 2719, 0x00000000U, 0x168B4FFCU }, /* XSUM_XXH32_testdata[5438] */ + { 2719, 0x9E3779B1U, 0x99AC56D5U }, /* XSUM_XXH32_testdata[5439] */ + { 2720, 0x00000000U, 0x1C967381U }, /* XSUM_XXH32_testdata[5440] */ + { 2720, 0x9E3779B1U, 0xA0C87AB2U }, /* XSUM_XXH32_testdata[5441] */ + { 2721, 0x00000000U, 0x3B941315U }, /* XSUM_XXH32_testdata[5442] */ + { 2721, 0x9E3779B1U, 0xD91E6380U }, /* XSUM_XXH32_testdata[5443] */ + { 2722, 0x00000000U, 0x3FA50533U }, /* XSUM_XXH32_testdata[5444] */ + { 2722, 0x9E3779B1U, 0x9E249CCDU }, /* XSUM_XXH32_testdata[5445] */ + { 2723, 0x00000000U, 0x866AFD00U }, /* XSUM_XXH32_testdata[5446] */ + { 2723, 0x9E3779B1U, 0x2CC6E1E5U }, /* XSUM_XXH32_testdata[5447] */ + { 2724, 0x00000000U, 0x47D70775U }, /* XSUM_XXH32_testdata[5448] */ + { 2724, 0x9E3779B1U, 0x0AE88051U }, /* XSUM_XXH32_testdata[5449] */ + { 2725, 0x00000000U, 0xCD1BA69FU }, /* XSUM_XXH32_testdata[5450] */ + { 2725, 0x9E3779B1U, 0x96DECF85U }, /* XSUM_XXH32_testdata[5451] */ + { 2726, 0x00000000U, 0xA8625423U }, /* XSUM_XXH32_testdata[5452] */ + { 2726, 0x9E3779B1U, 0xA2410F18U }, /* XSUM_XXH32_testdata[5453] */ + { 2727, 0x00000000U, 0x38195889U }, /* XSUM_XXH32_testdata[5454] */ + { 2727, 0x9E3779B1U, 0x4BD38529U }, /* XSUM_XXH32_testdata[5455] */ + { 2728, 0x00000000U, 0x070F89C8U }, /* XSUM_XXH32_testdata[5456] */ + { 2728, 0x9E3779B1U, 0xDF06AF11U }, /* XSUM_XXH32_testdata[5457] */ + { 2729, 0x00000000U, 0x8E80915AU }, /* XSUM_XXH32_testdata[5458] */ + { 2729, 0x9E3779B1U, 0x4A06DCA0U }, /* XSUM_XXH32_testdata[5459] */ + { 2730, 0x00000000U, 0xBC112A49U }, /* XSUM_XXH32_testdata[5460] */ + { 2730, 0x9E3779B1U, 0x05C9CC27U }, /* XSUM_XXH32_testdata[5461] */ + { 2731, 0x00000000U, 0xA1B81A7EU }, /* XSUM_XXH32_testdata[5462] */ + { 2731, 0x9E3779B1U, 0xB3633441U }, /* XSUM_XXH32_testdata[5463] */ + { 2732, 0x00000000U, 0xD4268862U }, /* XSUM_XXH32_testdata[5464] */ + { 2732, 0x9E3779B1U, 0x3E627514U }, /* XSUM_XXH32_testdata[5465] */ + { 2733, 0x00000000U, 0x5593FD89U }, /* XSUM_XXH32_testdata[5466] */ + { 2733, 0x9E3779B1U, 0xCA01BBF0U }, /* XSUM_XXH32_testdata[5467] */ + { 2734, 0x00000000U, 0x851FDB7DU }, /* XSUM_XXH32_testdata[5468] */ + { 2734, 0x9E3779B1U, 0xB7DE2200U }, /* XSUM_XXH32_testdata[5469] */ + { 2735, 0x00000000U, 0xA0230D8AU }, /* XSUM_XXH32_testdata[5470] */ + { 2735, 0x9E3779B1U, 0x4C98ECC3U }, /* XSUM_XXH32_testdata[5471] */ + { 2736, 0x00000000U, 0x91523E73U }, /* XSUM_XXH32_testdata[5472] */ + { 2736, 0x9E3779B1U, 0x45AD598CU }, /* XSUM_XXH32_testdata[5473] */ + { 2737, 0x00000000U, 0xBF5C144EU }, /* XSUM_XXH32_testdata[5474] */ + { 2737, 0x9E3779B1U, 0xF0A520B6U }, /* XSUM_XXH32_testdata[5475] */ + { 2738, 0x00000000U, 0x55D29805U }, /* XSUM_XXH32_testdata[5476] */ + { 2738, 0x9E3779B1U, 0x7E76F531U }, /* XSUM_XXH32_testdata[5477] */ + { 2739, 0x00000000U, 0xE77D999EU }, /* XSUM_XXH32_testdata[5478] */ + { 2739, 0x9E3779B1U, 0x97489CB6U }, /* XSUM_XXH32_testdata[5479] */ + { 2740, 0x00000000U, 0xC08CF749U }, /* XSUM_XXH32_testdata[5480] */ + { 2740, 0x9E3779B1U, 0x54BBEB2EU }, /* XSUM_XXH32_testdata[5481] */ + { 2741, 0x00000000U, 0x23664C44U }, /* XSUM_XXH32_testdata[5482] */ + { 2741, 0x9E3779B1U, 0x3247CE9AU }, /* XSUM_XXH32_testdata[5483] */ + { 2742, 0x00000000U, 0x5FF2A503U }, /* XSUM_XXH32_testdata[5484] */ + { 2742, 0x9E3779B1U, 0x8C517D75U }, /* XSUM_XXH32_testdata[5485] */ + { 2743, 0x00000000U, 0x6167CF50U }, /* XSUM_XXH32_testdata[5486] */ + { 2743, 0x9E3779B1U, 0x0E019D74U }, /* XSUM_XXH32_testdata[5487] */ + { 2744, 0x00000000U, 0x54917AA2U }, /* XSUM_XXH32_testdata[5488] */ + { 2744, 0x9E3779B1U, 0xB54B21B8U }, /* XSUM_XXH32_testdata[5489] */ + { 2745, 0x00000000U, 0x7B8C955DU }, /* XSUM_XXH32_testdata[5490] */ + { 2745, 0x9E3779B1U, 0x9003306DU }, /* XSUM_XXH32_testdata[5491] */ + { 2746, 0x00000000U, 0xBF41C4B3U }, /* XSUM_XXH32_testdata[5492] */ + { 2746, 0x9E3779B1U, 0xE42BCDF3U }, /* XSUM_XXH32_testdata[5493] */ + { 2747, 0x00000000U, 0xECAF5690U }, /* XSUM_XXH32_testdata[5494] */ + { 2747, 0x9E3779B1U, 0x8F078525U }, /* XSUM_XXH32_testdata[5495] */ + { 2748, 0x00000000U, 0x649FBA7FU }, /* XSUM_XXH32_testdata[5496] */ + { 2748, 0x9E3779B1U, 0x3891C62EU }, /* XSUM_XXH32_testdata[5497] */ + { 2749, 0x00000000U, 0x92F8A489U }, /* XSUM_XXH32_testdata[5498] */ + { 2749, 0x9E3779B1U, 0x9ED412CDU }, /* XSUM_XXH32_testdata[5499] */ + { 2750, 0x00000000U, 0x5D6125DBU }, /* XSUM_XXH32_testdata[5500] */ + { 2750, 0x9E3779B1U, 0xC04AD3C5U }, /* XSUM_XXH32_testdata[5501] */ + { 2751, 0x00000000U, 0xDA1B2BBAU }, /* XSUM_XXH32_testdata[5502] */ + { 2751, 0x9E3779B1U, 0xCD87B55CU }, /* XSUM_XXH32_testdata[5503] */ + { 2752, 0x00000000U, 0x5D54F5CFU }, /* XSUM_XXH32_testdata[5504] */ + { 2752, 0x9E3779B1U, 0x1CA0D0CFU }, /* XSUM_XXH32_testdata[5505] */ + { 2753, 0x00000000U, 0x38093FF9U }, /* XSUM_XXH32_testdata[5506] */ + { 2753, 0x9E3779B1U, 0x8DAFB0D3U }, /* XSUM_XXH32_testdata[5507] */ + { 2754, 0x00000000U, 0xC8289512U }, /* XSUM_XXH32_testdata[5508] */ + { 2754, 0x9E3779B1U, 0x5F94DF3BU }, /* XSUM_XXH32_testdata[5509] */ + { 2755, 0x00000000U, 0x80111DEEU }, /* XSUM_XXH32_testdata[5510] */ + { 2755, 0x9E3779B1U, 0xACBEEEE5U }, /* XSUM_XXH32_testdata[5511] */ + { 2756, 0x00000000U, 0x6DA1C5D4U }, /* XSUM_XXH32_testdata[5512] */ + { 2756, 0x9E3779B1U, 0x8EC6544EU }, /* XSUM_XXH32_testdata[5513] */ + { 2757, 0x00000000U, 0xFB1AF805U }, /* XSUM_XXH32_testdata[5514] */ + { 2757, 0x9E3779B1U, 0xC454EF93U }, /* XSUM_XXH32_testdata[5515] */ + { 2758, 0x00000000U, 0x292A653DU }, /* XSUM_XXH32_testdata[5516] */ + { 2758, 0x9E3779B1U, 0x103F2718U }, /* XSUM_XXH32_testdata[5517] */ + { 2759, 0x00000000U, 0x8AFD632FU }, /* XSUM_XXH32_testdata[5518] */ + { 2759, 0x9E3779B1U, 0xD6D5797CU }, /* XSUM_XXH32_testdata[5519] */ + { 2760, 0x00000000U, 0x12DB2265U }, /* XSUM_XXH32_testdata[5520] */ + { 2760, 0x9E3779B1U, 0x8FCCDBF8U }, /* XSUM_XXH32_testdata[5521] */ + { 2761, 0x00000000U, 0x5ADE7086U }, /* XSUM_XXH32_testdata[5522] */ + { 2761, 0x9E3779B1U, 0x48E1E9A1U }, /* XSUM_XXH32_testdata[5523] */ + { 2762, 0x00000000U, 0xAC10836EU }, /* XSUM_XXH32_testdata[5524] */ + { 2762, 0x9E3779B1U, 0x1FF522F5U }, /* XSUM_XXH32_testdata[5525] */ + { 2763, 0x00000000U, 0x6AA04729U }, /* XSUM_XXH32_testdata[5526] */ + { 2763, 0x9E3779B1U, 0x55E9EB83U }, /* XSUM_XXH32_testdata[5527] */ + { 2764, 0x00000000U, 0xDCC2CB34U }, /* XSUM_XXH32_testdata[5528] */ + { 2764, 0x9E3779B1U, 0xC0422B11U }, /* XSUM_XXH32_testdata[5529] */ + { 2765, 0x00000000U, 0x744A85FEU }, /* XSUM_XXH32_testdata[5530] */ + { 2765, 0x9E3779B1U, 0x7831CF41U }, /* XSUM_XXH32_testdata[5531] */ + { 2766, 0x00000000U, 0xE438101FU }, /* XSUM_XXH32_testdata[5532] */ + { 2766, 0x9E3779B1U, 0x00C9AF6EU }, /* XSUM_XXH32_testdata[5533] */ + { 2767, 0x00000000U, 0xB4AFAC85U }, /* XSUM_XXH32_testdata[5534] */ + { 2767, 0x9E3779B1U, 0xA5015D0FU }, /* XSUM_XXH32_testdata[5535] */ + { 2768, 0x00000000U, 0xFB673462U }, /* XSUM_XXH32_testdata[5536] */ + { 2768, 0x9E3779B1U, 0xAD10C891U }, /* XSUM_XXH32_testdata[5537] */ + { 2769, 0x00000000U, 0x54B334F5U }, /* XSUM_XXH32_testdata[5538] */ + { 2769, 0x9E3779B1U, 0x57657ABAU }, /* XSUM_XXH32_testdata[5539] */ + { 2770, 0x00000000U, 0x067159E8U }, /* XSUM_XXH32_testdata[5540] */ + { 2770, 0x9E3779B1U, 0x570E14C6U }, /* XSUM_XXH32_testdata[5541] */ + { 2771, 0x00000000U, 0xCF730C58U }, /* XSUM_XXH32_testdata[5542] */ + { 2771, 0x9E3779B1U, 0xF1BEFB0BU }, /* XSUM_XXH32_testdata[5543] */ + { 2772, 0x00000000U, 0xA6555537U }, /* XSUM_XXH32_testdata[5544] */ + { 2772, 0x9E3779B1U, 0x44986ACBU }, /* XSUM_XXH32_testdata[5545] */ + { 2773, 0x00000000U, 0x4CB31427U }, /* XSUM_XXH32_testdata[5546] */ + { 2773, 0x9E3779B1U, 0xF7F7EA4EU }, /* XSUM_XXH32_testdata[5547] */ + { 2774, 0x00000000U, 0x8DED665AU }, /* XSUM_XXH32_testdata[5548] */ + { 2774, 0x9E3779B1U, 0xD0BF38CCU }, /* XSUM_XXH32_testdata[5549] */ + { 2775, 0x00000000U, 0xB9A7FCE0U }, /* XSUM_XXH32_testdata[5550] */ + { 2775, 0x9E3779B1U, 0x7C3DBA58U }, /* XSUM_XXH32_testdata[5551] */ + { 2776, 0x00000000U, 0x6B8A34C2U }, /* XSUM_XXH32_testdata[5552] */ + { 2776, 0x9E3779B1U, 0xC489B547U }, /* XSUM_XXH32_testdata[5553] */ + { 2777, 0x00000000U, 0x6A80AC94U }, /* XSUM_XXH32_testdata[5554] */ + { 2777, 0x9E3779B1U, 0xD3D9B559U }, /* XSUM_XXH32_testdata[5555] */ + { 2778, 0x00000000U, 0x1EA784DFU }, /* XSUM_XXH32_testdata[5556] */ + { 2778, 0x9E3779B1U, 0x0F72F335U }, /* XSUM_XXH32_testdata[5557] */ + { 2779, 0x00000000U, 0xEC658F01U }, /* XSUM_XXH32_testdata[5558] */ + { 2779, 0x9E3779B1U, 0x50864FBAU }, /* XSUM_XXH32_testdata[5559] */ + { 2780, 0x00000000U, 0x7BE8A68DU }, /* XSUM_XXH32_testdata[5560] */ + { 2780, 0x9E3779B1U, 0x6239E532U }, /* XSUM_XXH32_testdata[5561] */ + { 2781, 0x00000000U, 0xA0C81CFDU }, /* XSUM_XXH32_testdata[5562] */ + { 2781, 0x9E3779B1U, 0x9625D6DEU }, /* XSUM_XXH32_testdata[5563] */ + { 2782, 0x00000000U, 0x49DC7164U }, /* XSUM_XXH32_testdata[5564] */ + { 2782, 0x9E3779B1U, 0x9EA1983AU }, /* XSUM_XXH32_testdata[5565] */ + { 2783, 0x00000000U, 0xCA12B02EU }, /* XSUM_XXH32_testdata[5566] */ + { 2783, 0x9E3779B1U, 0xFE2C3732U }, /* XSUM_XXH32_testdata[5567] */ + { 2784, 0x00000000U, 0xF26C69B4U }, /* XSUM_XXH32_testdata[5568] */ + { 2784, 0x9E3779B1U, 0x2CE3B4F4U }, /* XSUM_XXH32_testdata[5569] */ + { 2785, 0x00000000U, 0x9E2A7683U }, /* XSUM_XXH32_testdata[5570] */ + { 2785, 0x9E3779B1U, 0x03CC5D74U }, /* XSUM_XXH32_testdata[5571] */ + { 2786, 0x00000000U, 0x7D464299U }, /* XSUM_XXH32_testdata[5572] */ + { 2786, 0x9E3779B1U, 0xEC2A1AEDU }, /* XSUM_XXH32_testdata[5573] */ + { 2787, 0x00000000U, 0x37D18702U }, /* XSUM_XXH32_testdata[5574] */ + { 2787, 0x9E3779B1U, 0x985AAE49U }, /* XSUM_XXH32_testdata[5575] */ + { 2788, 0x00000000U, 0x09A47F14U }, /* XSUM_XXH32_testdata[5576] */ + { 2788, 0x9E3779B1U, 0x7F4C942CU }, /* XSUM_XXH32_testdata[5577] */ + { 2789, 0x00000000U, 0x10275B1BU }, /* XSUM_XXH32_testdata[5578] */ + { 2789, 0x9E3779B1U, 0x75FF3962U }, /* XSUM_XXH32_testdata[5579] */ + { 2790, 0x00000000U, 0x921922CCU }, /* XSUM_XXH32_testdata[5580] */ + { 2790, 0x9E3779B1U, 0x408DAE7AU }, /* XSUM_XXH32_testdata[5581] */ + { 2791, 0x00000000U, 0x5752654DU }, /* XSUM_XXH32_testdata[5582] */ + { 2791, 0x9E3779B1U, 0xE2F27F6BU }, /* XSUM_XXH32_testdata[5583] */ + { 2792, 0x00000000U, 0x545600A6U }, /* XSUM_XXH32_testdata[5584] */ + { 2792, 0x9E3779B1U, 0x6E72E1DFU }, /* XSUM_XXH32_testdata[5585] */ + { 2793, 0x00000000U, 0xE0128B8DU }, /* XSUM_XXH32_testdata[5586] */ + { 2793, 0x9E3779B1U, 0xF726FF9EU }, /* XSUM_XXH32_testdata[5587] */ + { 2794, 0x00000000U, 0x051387C8U }, /* XSUM_XXH32_testdata[5588] */ + { 2794, 0x9E3779B1U, 0x90A42546U }, /* XSUM_XXH32_testdata[5589] */ + { 2795, 0x00000000U, 0xE96E9CC2U }, /* XSUM_XXH32_testdata[5590] */ + { 2795, 0x9E3779B1U, 0x545F6201U }, /* XSUM_XXH32_testdata[5591] */ + { 2796, 0x00000000U, 0x2D5C8D96U }, /* XSUM_XXH32_testdata[5592] */ + { 2796, 0x9E3779B1U, 0x5769B737U }, /* XSUM_XXH32_testdata[5593] */ + { 2797, 0x00000000U, 0x1ACC992CU }, /* XSUM_XXH32_testdata[5594] */ + { 2797, 0x9E3779B1U, 0xB2871004U }, /* XSUM_XXH32_testdata[5595] */ + { 2798, 0x00000000U, 0x64E3753FU }, /* XSUM_XXH32_testdata[5596] */ + { 2798, 0x9E3779B1U, 0x9E91644EU }, /* XSUM_XXH32_testdata[5597] */ + { 2799, 0x00000000U, 0xC098EC8CU }, /* XSUM_XXH32_testdata[5598] */ + { 2799, 0x9E3779B1U, 0xF75A5C44U }, /* XSUM_XXH32_testdata[5599] */ + { 2800, 0x00000000U, 0x0AEC90EEU }, /* XSUM_XXH32_testdata[5600] */ + { 2800, 0x9E3779B1U, 0x3483BEAAU }, /* XSUM_XXH32_testdata[5601] */ + { 2801, 0x00000000U, 0x66C8AF32U }, /* XSUM_XXH32_testdata[5602] */ + { 2801, 0x9E3779B1U, 0x20257751U }, /* XSUM_XXH32_testdata[5603] */ + { 2802, 0x00000000U, 0x0208B7C5U }, /* XSUM_XXH32_testdata[5604] */ + { 2802, 0x9E3779B1U, 0xEE231D12U }, /* XSUM_XXH32_testdata[5605] */ + { 2803, 0x00000000U, 0x2FB02482U }, /* XSUM_XXH32_testdata[5606] */ + { 2803, 0x9E3779B1U, 0xBBEEEB6DU }, /* XSUM_XXH32_testdata[5607] */ + { 2804, 0x00000000U, 0x7455071DU }, /* XSUM_XXH32_testdata[5608] */ + { 2804, 0x9E3779B1U, 0xB69F8B50U }, /* XSUM_XXH32_testdata[5609] */ + { 2805, 0x00000000U, 0xAD0079AEU }, /* XSUM_XXH32_testdata[5610] */ + { 2805, 0x9E3779B1U, 0xED7C62B3U }, /* XSUM_XXH32_testdata[5611] */ + { 2806, 0x00000000U, 0x0B164DE3U }, /* XSUM_XXH32_testdata[5612] */ + { 2806, 0x9E3779B1U, 0x929CE95FU }, /* XSUM_XXH32_testdata[5613] */ + { 2807, 0x00000000U, 0x8129C829U }, /* XSUM_XXH32_testdata[5614] */ + { 2807, 0x9E3779B1U, 0xEE7F1D68U }, /* XSUM_XXH32_testdata[5615] */ + { 2808, 0x00000000U, 0x2F31A376U }, /* XSUM_XXH32_testdata[5616] */ + { 2808, 0x9E3779B1U, 0xEA574A56U }, /* XSUM_XXH32_testdata[5617] */ + { 2809, 0x00000000U, 0x3DC19066U }, /* XSUM_XXH32_testdata[5618] */ + { 2809, 0x9E3779B1U, 0xA10720CBU }, /* XSUM_XXH32_testdata[5619] */ + { 2810, 0x00000000U, 0x413B2F37U }, /* XSUM_XXH32_testdata[5620] */ + { 2810, 0x9E3779B1U, 0xF5BDA1A6U }, /* XSUM_XXH32_testdata[5621] */ + { 2811, 0x00000000U, 0x32C6535CU }, /* XSUM_XXH32_testdata[5622] */ + { 2811, 0x9E3779B1U, 0x75B7D6E5U }, /* XSUM_XXH32_testdata[5623] */ + { 2812, 0x00000000U, 0xFE287DF2U }, /* XSUM_XXH32_testdata[5624] */ + { 2812, 0x9E3779B1U, 0x58E50093U }, /* XSUM_XXH32_testdata[5625] */ + { 2813, 0x00000000U, 0x2E51BC73U }, /* XSUM_XXH32_testdata[5626] */ + { 2813, 0x9E3779B1U, 0x44718D78U }, /* XSUM_XXH32_testdata[5627] */ + { 2814, 0x00000000U, 0x96B81EC3U }, /* XSUM_XXH32_testdata[5628] */ + { 2814, 0x9E3779B1U, 0x6BF333FBU }, /* XSUM_XXH32_testdata[5629] */ + { 2815, 0x00000000U, 0x1ACD00E5U }, /* XSUM_XXH32_testdata[5630] */ + { 2815, 0x9E3779B1U, 0xCA53EF2CU }, /* XSUM_XXH32_testdata[5631] */ + { 2816, 0x00000000U, 0x6BDD0B9CU }, /* XSUM_XXH32_testdata[5632] */ + { 2816, 0x9E3779B1U, 0x01EE1441U }, /* XSUM_XXH32_testdata[5633] */ + { 2817, 0x00000000U, 0xD72F2478U }, /* XSUM_XXH32_testdata[5634] */ + { 2817, 0x9E3779B1U, 0xA648EA45U }, /* XSUM_XXH32_testdata[5635] */ + { 2818, 0x00000000U, 0xE9E3DFC2U }, /* XSUM_XXH32_testdata[5636] */ + { 2818, 0x9E3779B1U, 0x3B09D998U }, /* XSUM_XXH32_testdata[5637] */ + { 2819, 0x00000000U, 0x5BFE487EU }, /* XSUM_XXH32_testdata[5638] */ + { 2819, 0x9E3779B1U, 0x40E7F952U }, /* XSUM_XXH32_testdata[5639] */ + { 2820, 0x00000000U, 0x2D077C99U }, /* XSUM_XXH32_testdata[5640] */ + { 2820, 0x9E3779B1U, 0xB59A99EDU }, /* XSUM_XXH32_testdata[5641] */ + { 2821, 0x00000000U, 0xAEDF4A0BU }, /* XSUM_XXH32_testdata[5642] */ + { 2821, 0x9E3779B1U, 0x91D03418U }, /* XSUM_XXH32_testdata[5643] */ + { 2822, 0x00000000U, 0x5C97CF3EU }, /* XSUM_XXH32_testdata[5644] */ + { 2822, 0x9E3779B1U, 0x5A6F09DFU }, /* XSUM_XXH32_testdata[5645] */ + { 2823, 0x00000000U, 0x110E78AFU }, /* XSUM_XXH32_testdata[5646] */ + { 2823, 0x9E3779B1U, 0x707B42A0U }, /* XSUM_XXH32_testdata[5647] */ + { 2824, 0x00000000U, 0x07781E1EU }, /* XSUM_XXH32_testdata[5648] */ + { 2824, 0x9E3779B1U, 0xDE3F08A5U }, /* XSUM_XXH32_testdata[5649] */ + { 2825, 0x00000000U, 0xF82A8FC4U }, /* XSUM_XXH32_testdata[5650] */ + { 2825, 0x9E3779B1U, 0x418A4F5DU }, /* XSUM_XXH32_testdata[5651] */ + { 2826, 0x00000000U, 0x2D0B6892U }, /* XSUM_XXH32_testdata[5652] */ + { 2826, 0x9E3779B1U, 0x64A44926U }, /* XSUM_XXH32_testdata[5653] */ + { 2827, 0x00000000U, 0x3370A87CU }, /* XSUM_XXH32_testdata[5654] */ + { 2827, 0x9E3779B1U, 0x55EEFDBBU }, /* XSUM_XXH32_testdata[5655] */ + { 2828, 0x00000000U, 0x90FB19E2U }, /* XSUM_XXH32_testdata[5656] */ + { 2828, 0x9E3779B1U, 0x948565EEU }, /* XSUM_XXH32_testdata[5657] */ + { 2829, 0x00000000U, 0x59677021U }, /* XSUM_XXH32_testdata[5658] */ + { 2829, 0x9E3779B1U, 0x93BEFBCAU }, /* XSUM_XXH32_testdata[5659] */ + { 2830, 0x00000000U, 0xC6E84587U }, /* XSUM_XXH32_testdata[5660] */ + { 2830, 0x9E3779B1U, 0x47745AC8U }, /* XSUM_XXH32_testdata[5661] */ + { 2831, 0x00000000U, 0xAC2EBA34U }, /* XSUM_XXH32_testdata[5662] */ + { 2831, 0x9E3779B1U, 0x18176CA3U }, /* XSUM_XXH32_testdata[5663] */ + { 2832, 0x00000000U, 0xCFD418B7U }, /* XSUM_XXH32_testdata[5664] */ + { 2832, 0x9E3779B1U, 0x05243DC9U }, /* XSUM_XXH32_testdata[5665] */ + { 2833, 0x00000000U, 0x8B9FA14CU }, /* XSUM_XXH32_testdata[5666] */ + { 2833, 0x9E3779B1U, 0x99EEDC11U }, /* XSUM_XXH32_testdata[5667] */ + { 2834, 0x00000000U, 0x2F8EA61CU }, /* XSUM_XXH32_testdata[5668] */ + { 2834, 0x9E3779B1U, 0x84FFD078U }, /* XSUM_XXH32_testdata[5669] */ + { 2835, 0x00000000U, 0xB93FA3DDU }, /* XSUM_XXH32_testdata[5670] */ + { 2835, 0x9E3779B1U, 0x6FA5DFE1U }, /* XSUM_XXH32_testdata[5671] */ + { 2836, 0x00000000U, 0x4B3E099DU }, /* XSUM_XXH32_testdata[5672] */ + { 2836, 0x9E3779B1U, 0x1D5C6DDCU }, /* XSUM_XXH32_testdata[5673] */ + { 2837, 0x00000000U, 0x7E5E5805U }, /* XSUM_XXH32_testdata[5674] */ + { 2837, 0x9E3779B1U, 0x8AA6C4E6U }, /* XSUM_XXH32_testdata[5675] */ + { 2838, 0x00000000U, 0x0388F8F1U }, /* XSUM_XXH32_testdata[5676] */ + { 2838, 0x9E3779B1U, 0x5AF9FE66U }, /* XSUM_XXH32_testdata[5677] */ + { 2839, 0x00000000U, 0xB2D948DAU }, /* XSUM_XXH32_testdata[5678] */ + { 2839, 0x9E3779B1U, 0xDADF89C9U }, /* XSUM_XXH32_testdata[5679] */ + { 2840, 0x00000000U, 0x4375D874U }, /* XSUM_XXH32_testdata[5680] */ + { 2840, 0x9E3779B1U, 0x1D4E417EU }, /* XSUM_XXH32_testdata[5681] */ + { 2841, 0x00000000U, 0xB97066F7U }, /* XSUM_XXH32_testdata[5682] */ + { 2841, 0x9E3779B1U, 0x986F05F1U }, /* XSUM_XXH32_testdata[5683] */ + { 2842, 0x00000000U, 0x126921E0U }, /* XSUM_XXH32_testdata[5684] */ + { 2842, 0x9E3779B1U, 0xB451A61BU }, /* XSUM_XXH32_testdata[5685] */ + { 2843, 0x00000000U, 0xE8165EF7U }, /* XSUM_XXH32_testdata[5686] */ + { 2843, 0x9E3779B1U, 0x504AD607U }, /* XSUM_XXH32_testdata[5687] */ + { 2844, 0x00000000U, 0xE016BE32U }, /* XSUM_XXH32_testdata[5688] */ + { 2844, 0x9E3779B1U, 0x65417295U }, /* XSUM_XXH32_testdata[5689] */ + { 2845, 0x00000000U, 0xE0447CFFU }, /* XSUM_XXH32_testdata[5690] */ + { 2845, 0x9E3779B1U, 0x01D677B9U }, /* XSUM_XXH32_testdata[5691] */ + { 2846, 0x00000000U, 0xA1743CAFU }, /* XSUM_XXH32_testdata[5692] */ + { 2846, 0x9E3779B1U, 0xEC062830U }, /* XSUM_XXH32_testdata[5693] */ + { 2847, 0x00000000U, 0x64D64BB9U }, /* XSUM_XXH32_testdata[5694] */ + { 2847, 0x9E3779B1U, 0xA6E518C8U }, /* XSUM_XXH32_testdata[5695] */ + { 2848, 0x00000000U, 0x10FDCB68U }, /* XSUM_XXH32_testdata[5696] */ + { 2848, 0x9E3779B1U, 0x3F1F7470U }, /* XSUM_XXH32_testdata[5697] */ + { 2849, 0x00000000U, 0xE475F379U }, /* XSUM_XXH32_testdata[5698] */ + { 2849, 0x9E3779B1U, 0x264D6363U }, /* XSUM_XXH32_testdata[5699] */ + { 2850, 0x00000000U, 0x5FD4DB79U }, /* XSUM_XXH32_testdata[5700] */ + { 2850, 0x9E3779B1U, 0x44BBF0CCU }, /* XSUM_XXH32_testdata[5701] */ + { 2851, 0x00000000U, 0x956431FEU }, /* XSUM_XXH32_testdata[5702] */ + { 2851, 0x9E3779B1U, 0x4BF184ECU }, /* XSUM_XXH32_testdata[5703] */ + { 2852, 0x00000000U, 0x0FDB9858U }, /* XSUM_XXH32_testdata[5704] */ + { 2852, 0x9E3779B1U, 0xED1B181FU }, /* XSUM_XXH32_testdata[5705] */ + { 2853, 0x00000000U, 0x7476CFEBU }, /* XSUM_XXH32_testdata[5706] */ + { 2853, 0x9E3779B1U, 0x5CB7A179U }, /* XSUM_XXH32_testdata[5707] */ + { 2854, 0x00000000U, 0xD38082C1U }, /* XSUM_XXH32_testdata[5708] */ + { 2854, 0x9E3779B1U, 0x4858100AU }, /* XSUM_XXH32_testdata[5709] */ + { 2855, 0x00000000U, 0x95E8C751U }, /* XSUM_XXH32_testdata[5710] */ + { 2855, 0x9E3779B1U, 0xE669B64FU }, /* XSUM_XXH32_testdata[5711] */ + { 2856, 0x00000000U, 0xB80005D4U }, /* XSUM_XXH32_testdata[5712] */ + { 2856, 0x9E3779B1U, 0x9C85A331U }, /* XSUM_XXH32_testdata[5713] */ + { 2857, 0x00000000U, 0x2F4CF2C5U }, /* XSUM_XXH32_testdata[5714] */ + { 2857, 0x9E3779B1U, 0xB500F804U }, /* XSUM_XXH32_testdata[5715] */ + { 2858, 0x00000000U, 0xB5D502EBU }, /* XSUM_XXH32_testdata[5716] */ + { 2858, 0x9E3779B1U, 0x0C960597U }, /* XSUM_XXH32_testdata[5717] */ + { 2859, 0x00000000U, 0x86386B7DU }, /* XSUM_XXH32_testdata[5718] */ + { 2859, 0x9E3779B1U, 0x5F3F38FEU }, /* XSUM_XXH32_testdata[5719] */ + { 2860, 0x00000000U, 0x50454BDAU }, /* XSUM_XXH32_testdata[5720] */ + { 2860, 0x9E3779B1U, 0xC628A4F9U }, /* XSUM_XXH32_testdata[5721] */ + { 2861, 0x00000000U, 0x6C4F9758U }, /* XSUM_XXH32_testdata[5722] */ + { 2861, 0x9E3779B1U, 0xB39F1641U }, /* XSUM_XXH32_testdata[5723] */ + { 2862, 0x00000000U, 0x535393C8U }, /* XSUM_XXH32_testdata[5724] */ + { 2862, 0x9E3779B1U, 0x0F17E5C2U }, /* XSUM_XXH32_testdata[5725] */ + { 2863, 0x00000000U, 0x9D8AB6D8U }, /* XSUM_XXH32_testdata[5726] */ + { 2863, 0x9E3779B1U, 0xF00959D4U }, /* XSUM_XXH32_testdata[5727] */ + { 2864, 0x00000000U, 0x34669285U }, /* XSUM_XXH32_testdata[5728] */ + { 2864, 0x9E3779B1U, 0x74806FACU }, /* XSUM_XXH32_testdata[5729] */ + { 2865, 0x00000000U, 0xAABDB643U }, /* XSUM_XXH32_testdata[5730] */ + { 2865, 0x9E3779B1U, 0x287840A3U }, /* XSUM_XXH32_testdata[5731] */ + { 2866, 0x00000000U, 0xC6251F32U }, /* XSUM_XXH32_testdata[5732] */ + { 2866, 0x9E3779B1U, 0x49856D67U }, /* XSUM_XXH32_testdata[5733] */ + { 2867, 0x00000000U, 0xE205A26AU }, /* XSUM_XXH32_testdata[5734] */ + { 2867, 0x9E3779B1U, 0x9436CDD1U }, /* XSUM_XXH32_testdata[5735] */ + { 2868, 0x00000000U, 0x4E5E7323U }, /* XSUM_XXH32_testdata[5736] */ + { 2868, 0x9E3779B1U, 0x2AFAB027U }, /* XSUM_XXH32_testdata[5737] */ + { 2869, 0x00000000U, 0x7646C51DU }, /* XSUM_XXH32_testdata[5738] */ + { 2869, 0x9E3779B1U, 0x40E60330U }, /* XSUM_XXH32_testdata[5739] */ + { 2870, 0x00000000U, 0xEC6BFE35U }, /* XSUM_XXH32_testdata[5740] */ + { 2870, 0x9E3779B1U, 0xDFDC9D76U }, /* XSUM_XXH32_testdata[5741] */ + { 2871, 0x00000000U, 0xA4E2C93AU }, /* XSUM_XXH32_testdata[5742] */ + { 2871, 0x9E3779B1U, 0x2A12988BU }, /* XSUM_XXH32_testdata[5743] */ + { 2872, 0x00000000U, 0xD49AC4CEU }, /* XSUM_XXH32_testdata[5744] */ + { 2872, 0x9E3779B1U, 0x556DD939U }, /* XSUM_XXH32_testdata[5745] */ + { 2873, 0x00000000U, 0xC2D8F776U }, /* XSUM_XXH32_testdata[5746] */ + { 2873, 0x9E3779B1U, 0x8BB1AE11U }, /* XSUM_XXH32_testdata[5747] */ + { 2874, 0x00000000U, 0x8502FA30U }, /* XSUM_XXH32_testdata[5748] */ + { 2874, 0x9E3779B1U, 0xC729E56CU }, /* XSUM_XXH32_testdata[5749] */ + { 2875, 0x00000000U, 0x5F809ED5U }, /* XSUM_XXH32_testdata[5750] */ + { 2875, 0x9E3779B1U, 0x8CC6EAAFU }, /* XSUM_XXH32_testdata[5751] */ + { 2876, 0x00000000U, 0xBD800A9FU }, /* XSUM_XXH32_testdata[5752] */ + { 2876, 0x9E3779B1U, 0xED6C0E0EU }, /* XSUM_XXH32_testdata[5753] */ + { 2877, 0x00000000U, 0xCD191B6CU }, /* XSUM_XXH32_testdata[5754] */ + { 2877, 0x9E3779B1U, 0x018F583DU }, /* XSUM_XXH32_testdata[5755] */ + { 2878, 0x00000000U, 0x33D204D4U }, /* XSUM_XXH32_testdata[5756] */ + { 2878, 0x9E3779B1U, 0x87DFAF4DU }, /* XSUM_XXH32_testdata[5757] */ + { 2879, 0x00000000U, 0xCCCE92A0U }, /* XSUM_XXH32_testdata[5758] */ + { 2879, 0x9E3779B1U, 0x11CDE586U }, /* XSUM_XXH32_testdata[5759] */ + { 2880, 0x00000000U, 0xF131872CU }, /* XSUM_XXH32_testdata[5760] */ + { 2880, 0x9E3779B1U, 0xF433CAD6U }, /* XSUM_XXH32_testdata[5761] */ + { 2881, 0x00000000U, 0xE272C8CFU }, /* XSUM_XXH32_testdata[5762] */ + { 2881, 0x9E3779B1U, 0x3E6034EDU }, /* XSUM_XXH32_testdata[5763] */ + { 2882, 0x00000000U, 0xFBF2C98EU }, /* XSUM_XXH32_testdata[5764] */ + { 2882, 0x9E3779B1U, 0x1F9B0EB8U }, /* XSUM_XXH32_testdata[5765] */ + { 2883, 0x00000000U, 0x064096BDU }, /* XSUM_XXH32_testdata[5766] */ + { 2883, 0x9E3779B1U, 0xE2BC2B69U }, /* XSUM_XXH32_testdata[5767] */ + { 2884, 0x00000000U, 0x370670E3U }, /* XSUM_XXH32_testdata[5768] */ + { 2884, 0x9E3779B1U, 0x894D74A5U }, /* XSUM_XXH32_testdata[5769] */ + { 2885, 0x00000000U, 0x89CDD613U }, /* XSUM_XXH32_testdata[5770] */ + { 2885, 0x9E3779B1U, 0x268A843FU }, /* XSUM_XXH32_testdata[5771] */ + { 2886, 0x00000000U, 0x7C9A130CU }, /* XSUM_XXH32_testdata[5772] */ + { 2886, 0x9E3779B1U, 0xBCB743A2U }, /* XSUM_XXH32_testdata[5773] */ + { 2887, 0x00000000U, 0xC8E7C80AU }, /* XSUM_XXH32_testdata[5774] */ + { 2887, 0x9E3779B1U, 0x81B18AA9U }, /* XSUM_XXH32_testdata[5775] */ + { 2888, 0x00000000U, 0x530EF44CU }, /* XSUM_XXH32_testdata[5776] */ + { 2888, 0x9E3779B1U, 0x60599386U }, /* XSUM_XXH32_testdata[5777] */ + { 2889, 0x00000000U, 0x3F360F6DU }, /* XSUM_XXH32_testdata[5778] */ + { 2889, 0x9E3779B1U, 0x57F16D0BU }, /* XSUM_XXH32_testdata[5779] */ + { 2890, 0x00000000U, 0x751F5D7BU }, /* XSUM_XXH32_testdata[5780] */ + { 2890, 0x9E3779B1U, 0x90E5254FU }, /* XSUM_XXH32_testdata[5781] */ + { 2891, 0x00000000U, 0xFB9505C7U }, /* XSUM_XXH32_testdata[5782] */ + { 2891, 0x9E3779B1U, 0xBF6BE72EU }, /* XSUM_XXH32_testdata[5783] */ + { 2892, 0x00000000U, 0xAB270177U }, /* XSUM_XXH32_testdata[5784] */ + { 2892, 0x9E3779B1U, 0x578E1EA3U }, /* XSUM_XXH32_testdata[5785] */ + { 2893, 0x00000000U, 0x9BE1BF35U }, /* XSUM_XXH32_testdata[5786] */ + { 2893, 0x9E3779B1U, 0x2AEC40CAU }, /* XSUM_XXH32_testdata[5787] */ + { 2894, 0x00000000U, 0x6DA78B70U }, /* XSUM_XXH32_testdata[5788] */ + { 2894, 0x9E3779B1U, 0xFE6E9BFBU }, /* XSUM_XXH32_testdata[5789] */ + { 2895, 0x00000000U, 0x92D76350U }, /* XSUM_XXH32_testdata[5790] */ + { 2895, 0x9E3779B1U, 0x649C5A2AU }, /* XSUM_XXH32_testdata[5791] */ + { 2896, 0x00000000U, 0x2F25D0AEU }, /* XSUM_XXH32_testdata[5792] */ + { 2896, 0x9E3779B1U, 0x637B907BU }, /* XSUM_XXH32_testdata[5793] */ + { 2897, 0x00000000U, 0xCFFEE0E2U }, /* XSUM_XXH32_testdata[5794] */ + { 2897, 0x9E3779B1U, 0x1F5775C9U }, /* XSUM_XXH32_testdata[5795] */ + { 2898, 0x00000000U, 0x3E71B1EFU }, /* XSUM_XXH32_testdata[5796] */ + { 2898, 0x9E3779B1U, 0xDD09C98EU }, /* XSUM_XXH32_testdata[5797] */ + { 2899, 0x00000000U, 0x4194541FU }, /* XSUM_XXH32_testdata[5798] */ + { 2899, 0x9E3779B1U, 0x180A0CEEU }, /* XSUM_XXH32_testdata[5799] */ + { 2900, 0x00000000U, 0x2B09A958U }, /* XSUM_XXH32_testdata[5800] */ + { 2900, 0x9E3779B1U, 0xDF682AB5U }, /* XSUM_XXH32_testdata[5801] */ + { 2901, 0x00000000U, 0x8300C2E7U }, /* XSUM_XXH32_testdata[5802] */ + { 2901, 0x9E3779B1U, 0xDBB03537U }, /* XSUM_XXH32_testdata[5803] */ + { 2902, 0x00000000U, 0x18A07793U }, /* XSUM_XXH32_testdata[5804] */ + { 2902, 0x9E3779B1U, 0xAF0FB9BFU }, /* XSUM_XXH32_testdata[5805] */ + { 2903, 0x00000000U, 0x43D7A654U }, /* XSUM_XXH32_testdata[5806] */ + { 2903, 0x9E3779B1U, 0xF60FD833U }, /* XSUM_XXH32_testdata[5807] */ + { 2904, 0x00000000U, 0x8F82C0F9U }, /* XSUM_XXH32_testdata[5808] */ + { 2904, 0x9E3779B1U, 0xF736225AU }, /* XSUM_XXH32_testdata[5809] */ + { 2905, 0x00000000U, 0x636F2D35U }, /* XSUM_XXH32_testdata[5810] */ + { 2905, 0x9E3779B1U, 0xE5A521DAU }, /* XSUM_XXH32_testdata[5811] */ + { 2906, 0x00000000U, 0x8159C1B4U }, /* XSUM_XXH32_testdata[5812] */ + { 2906, 0x9E3779B1U, 0x236C551DU }, /* XSUM_XXH32_testdata[5813] */ + { 2907, 0x00000000U, 0xDF4CA751U }, /* XSUM_XXH32_testdata[5814] */ + { 2907, 0x9E3779B1U, 0x9A9CEC7CU }, /* XSUM_XXH32_testdata[5815] */ + { 2908, 0x00000000U, 0x8F62FC0AU }, /* XSUM_XXH32_testdata[5816] */ + { 2908, 0x9E3779B1U, 0x694589B4U }, /* XSUM_XXH32_testdata[5817] */ + { 2909, 0x00000000U, 0xD6E638AEU }, /* XSUM_XXH32_testdata[5818] */ + { 2909, 0x9E3779B1U, 0x26E452DDU }, /* XSUM_XXH32_testdata[5819] */ + { 2910, 0x00000000U, 0x820F9440U }, /* XSUM_XXH32_testdata[5820] */ + { 2910, 0x9E3779B1U, 0xB2D048E1U }, /* XSUM_XXH32_testdata[5821] */ + { 2911, 0x00000000U, 0x2670DD96U }, /* XSUM_XXH32_testdata[5822] */ + { 2911, 0x9E3779B1U, 0xCEDC28EBU }, /* XSUM_XXH32_testdata[5823] */ + { 2912, 0x00000000U, 0x1A911C9AU }, /* XSUM_XXH32_testdata[5824] */ + { 2912, 0x9E3779B1U, 0xC62A7A09U }, /* XSUM_XXH32_testdata[5825] */ + { 2913, 0x00000000U, 0xCF2B7C95U }, /* XSUM_XXH32_testdata[5826] */ + { 2913, 0x9E3779B1U, 0x44D7DAC9U }, /* XSUM_XXH32_testdata[5827] */ + { 2914, 0x00000000U, 0x28225B2CU }, /* XSUM_XXH32_testdata[5828] */ + { 2914, 0x9E3779B1U, 0xA545F9C8U }, /* XSUM_XXH32_testdata[5829] */ + { 2915, 0x00000000U, 0x91882039U }, /* XSUM_XXH32_testdata[5830] */ + { 2915, 0x9E3779B1U, 0x14584116U }, /* XSUM_XXH32_testdata[5831] */ + { 2916, 0x00000000U, 0x872E972DU }, /* XSUM_XXH32_testdata[5832] */ + { 2916, 0x9E3779B1U, 0x738A66FEU }, /* XSUM_XXH32_testdata[5833] */ + { 2917, 0x00000000U, 0x00B45E1CU }, /* XSUM_XXH32_testdata[5834] */ + { 2917, 0x9E3779B1U, 0xBFFF306DU }, /* XSUM_XXH32_testdata[5835] */ + { 2918, 0x00000000U, 0x47C8F697U }, /* XSUM_XXH32_testdata[5836] */ + { 2918, 0x9E3779B1U, 0x13D3E8CFU }, /* XSUM_XXH32_testdata[5837] */ + { 2919, 0x00000000U, 0x0A7E8141U }, /* XSUM_XXH32_testdata[5838] */ + { 2919, 0x9E3779B1U, 0x415D09D6U }, /* XSUM_XXH32_testdata[5839] */ + { 2920, 0x00000000U, 0xF911F0F0U }, /* XSUM_XXH32_testdata[5840] */ + { 2920, 0x9E3779B1U, 0x865BA41AU }, /* XSUM_XXH32_testdata[5841] */ + { 2921, 0x00000000U, 0x4CB65FE2U }, /* XSUM_XXH32_testdata[5842] */ + { 2921, 0x9E3779B1U, 0x0E62F2C1U }, /* XSUM_XXH32_testdata[5843] */ + { 2922, 0x00000000U, 0x1BE816F4U }, /* XSUM_XXH32_testdata[5844] */ + { 2922, 0x9E3779B1U, 0x778E6D31U }, /* XSUM_XXH32_testdata[5845] */ + { 2923, 0x00000000U, 0x20B0B680U }, /* XSUM_XXH32_testdata[5846] */ + { 2923, 0x9E3779B1U, 0xCB15CF45U }, /* XSUM_XXH32_testdata[5847] */ + { 2924, 0x00000000U, 0x6FADEEE9U }, /* XSUM_XXH32_testdata[5848] */ + { 2924, 0x9E3779B1U, 0xFB61B056U }, /* XSUM_XXH32_testdata[5849] */ + { 2925, 0x00000000U, 0xDDF3D4DCU }, /* XSUM_XXH32_testdata[5850] */ + { 2925, 0x9E3779B1U, 0x1C9E2FFCU }, /* XSUM_XXH32_testdata[5851] */ + { 2926, 0x00000000U, 0x15DCD8E9U }, /* XSUM_XXH32_testdata[5852] */ + { 2926, 0x9E3779B1U, 0x27691377U }, /* XSUM_XXH32_testdata[5853] */ + { 2927, 0x00000000U, 0xBD3AA7B5U }, /* XSUM_XXH32_testdata[5854] */ + { 2927, 0x9E3779B1U, 0xE59A1F2FU }, /* XSUM_XXH32_testdata[5855] */ + { 2928, 0x00000000U, 0xEDC462CEU }, /* XSUM_XXH32_testdata[5856] */ + { 2928, 0x9E3779B1U, 0x8632E73CU }, /* XSUM_XXH32_testdata[5857] */ + { 2929, 0x00000000U, 0xC7912A14U }, /* XSUM_XXH32_testdata[5858] */ + { 2929, 0x9E3779B1U, 0xC31A06D8U }, /* XSUM_XXH32_testdata[5859] */ + { 2930, 0x00000000U, 0x41F1DED3U }, /* XSUM_XXH32_testdata[5860] */ + { 2930, 0x9E3779B1U, 0x198EA7C0U }, /* XSUM_XXH32_testdata[5861] */ + { 2931, 0x00000000U, 0x7BFC4567U }, /* XSUM_XXH32_testdata[5862] */ + { 2931, 0x9E3779B1U, 0xD277E97BU }, /* XSUM_XXH32_testdata[5863] */ + { 2932, 0x00000000U, 0x500D6E61U }, /* XSUM_XXH32_testdata[5864] */ + { 2932, 0x9E3779B1U, 0xBBB97B59U }, /* XSUM_XXH32_testdata[5865] */ + { 2933, 0x00000000U, 0x833B0AB5U }, /* XSUM_XXH32_testdata[5866] */ + { 2933, 0x9E3779B1U, 0xF362690DU }, /* XSUM_XXH32_testdata[5867] */ + { 2934, 0x00000000U, 0x9D0DF51CU }, /* XSUM_XXH32_testdata[5868] */ + { 2934, 0x9E3779B1U, 0xA9CD2FF5U }, /* XSUM_XXH32_testdata[5869] */ + { 2935, 0x00000000U, 0x25B61DBEU }, /* XSUM_XXH32_testdata[5870] */ + { 2935, 0x9E3779B1U, 0x3DF906B1U }, /* XSUM_XXH32_testdata[5871] */ + { 2936, 0x00000000U, 0x2711D6BEU }, /* XSUM_XXH32_testdata[5872] */ + { 2936, 0x9E3779B1U, 0x0E945370U }, /* XSUM_XXH32_testdata[5873] */ + { 2937, 0x00000000U, 0xC486EEA6U }, /* XSUM_XXH32_testdata[5874] */ + { 2937, 0x9E3779B1U, 0x847F9D58U }, /* XSUM_XXH32_testdata[5875] */ + { 2938, 0x00000000U, 0xF6028851U }, /* XSUM_XXH32_testdata[5876] */ + { 2938, 0x9E3779B1U, 0x3D0DAB96U }, /* XSUM_XXH32_testdata[5877] */ + { 2939, 0x00000000U, 0x2F554587U }, /* XSUM_XXH32_testdata[5878] */ + { 2939, 0x9E3779B1U, 0x9EE4A0E0U }, /* XSUM_XXH32_testdata[5879] */ + { 2940, 0x00000000U, 0xB63D3442U }, /* XSUM_XXH32_testdata[5880] */ + { 2940, 0x9E3779B1U, 0xC9176E49U }, /* XSUM_XXH32_testdata[5881] */ + { 2941, 0x00000000U, 0x6E61DBD1U }, /* XSUM_XXH32_testdata[5882] */ + { 2941, 0x9E3779B1U, 0x9B40EADAU }, /* XSUM_XXH32_testdata[5883] */ + { 2942, 0x00000000U, 0x6BF948A1U }, /* XSUM_XXH32_testdata[5884] */ + { 2942, 0x9E3779B1U, 0x335D0A7BU }, /* XSUM_XXH32_testdata[5885] */ + { 2943, 0x00000000U, 0x59F3204CU }, /* XSUM_XXH32_testdata[5886] */ + { 2943, 0x9E3779B1U, 0x1A5FB81BU }, /* XSUM_XXH32_testdata[5887] */ + { 2944, 0x00000000U, 0x856DD3C0U }, /* XSUM_XXH32_testdata[5888] */ + { 2944, 0x9E3779B1U, 0x3DE6DE92U }, /* XSUM_XXH32_testdata[5889] */ + { 2945, 0x00000000U, 0x5C326DD2U }, /* XSUM_XXH32_testdata[5890] */ + { 2945, 0x9E3779B1U, 0xC885EB29U }, /* XSUM_XXH32_testdata[5891] */ + { 2946, 0x00000000U, 0x1198D533U }, /* XSUM_XXH32_testdata[5892] */ + { 2946, 0x9E3779B1U, 0xBFBB9DAEU }, /* XSUM_XXH32_testdata[5893] */ + { 2947, 0x00000000U, 0x56278EAEU }, /* XSUM_XXH32_testdata[5894] */ + { 2947, 0x9E3779B1U, 0x6EF003F5U }, /* XSUM_XXH32_testdata[5895] */ + { 2948, 0x00000000U, 0x321CB244U }, /* XSUM_XXH32_testdata[5896] */ + { 2948, 0x9E3779B1U, 0x4572AAC0U }, /* XSUM_XXH32_testdata[5897] */ + { 2949, 0x00000000U, 0x43702D7FU }, /* XSUM_XXH32_testdata[5898] */ + { 2949, 0x9E3779B1U, 0x16C3BED0U }, /* XSUM_XXH32_testdata[5899] */ + { 2950, 0x00000000U, 0x1E097144U }, /* XSUM_XXH32_testdata[5900] */ + { 2950, 0x9E3779B1U, 0x03960131U }, /* XSUM_XXH32_testdata[5901] */ + { 2951, 0x00000000U, 0x8A47F205U }, /* XSUM_XXH32_testdata[5902] */ + { 2951, 0x9E3779B1U, 0xF2B9301EU }, /* XSUM_XXH32_testdata[5903] */ + { 2952, 0x00000000U, 0xB1487765U }, /* XSUM_XXH32_testdata[5904] */ + { 2952, 0x9E3779B1U, 0xCC9F40BFU }, /* XSUM_XXH32_testdata[5905] */ + { 2953, 0x00000000U, 0xA008001EU }, /* XSUM_XXH32_testdata[5906] */ + { 2953, 0x9E3779B1U, 0xD017F867U }, /* XSUM_XXH32_testdata[5907] */ + { 2954, 0x00000000U, 0x4F292665U }, /* XSUM_XXH32_testdata[5908] */ + { 2954, 0x9E3779B1U, 0xE416E73CU }, /* XSUM_XXH32_testdata[5909] */ + { 2955, 0x00000000U, 0xE0AFE330U }, /* XSUM_XXH32_testdata[5910] */ + { 2955, 0x9E3779B1U, 0x47EFEF4BU }, /* XSUM_XXH32_testdata[5911] */ + { 2956, 0x00000000U, 0xF6C977D5U }, /* XSUM_XXH32_testdata[5912] */ + { 2956, 0x9E3779B1U, 0x57E7630EU }, /* XSUM_XXH32_testdata[5913] */ + { 2957, 0x00000000U, 0x2CE47441U }, /* XSUM_XXH32_testdata[5914] */ + { 2957, 0x9E3779B1U, 0x32FA12B7U }, /* XSUM_XXH32_testdata[5915] */ + { 2958, 0x00000000U, 0x55908F04U }, /* XSUM_XXH32_testdata[5916] */ + { 2958, 0x9E3779B1U, 0x172D8645U }, /* XSUM_XXH32_testdata[5917] */ + { 2959, 0x00000000U, 0xB019060CU }, /* XSUM_XXH32_testdata[5918] */ + { 2959, 0x9E3779B1U, 0xC4D8CA7FU }, /* XSUM_XXH32_testdata[5919] */ + { 2960, 0x00000000U, 0xBBD31580U }, /* XSUM_XXH32_testdata[5920] */ + { 2960, 0x9E3779B1U, 0x2C9C790AU }, /* XSUM_XXH32_testdata[5921] */ + { 2961, 0x00000000U, 0x0A25CF53U }, /* XSUM_XXH32_testdata[5922] */ + { 2961, 0x9E3779B1U, 0xC7F0BBA8U }, /* XSUM_XXH32_testdata[5923] */ + { 2962, 0x00000000U, 0xC4C287B0U }, /* XSUM_XXH32_testdata[5924] */ + { 2962, 0x9E3779B1U, 0x07D2E01FU }, /* XSUM_XXH32_testdata[5925] */ + { 2963, 0x00000000U, 0x867F489CU }, /* XSUM_XXH32_testdata[5926] */ + { 2963, 0x9E3779B1U, 0x3C370C6FU }, /* XSUM_XXH32_testdata[5927] */ + { 2964, 0x00000000U, 0xFCB9A78CU }, /* XSUM_XXH32_testdata[5928] */ + { 2964, 0x9E3779B1U, 0x9BC99E56U }, /* XSUM_XXH32_testdata[5929] */ + { 2965, 0x00000000U, 0x954D08E4U }, /* XSUM_XXH32_testdata[5930] */ + { 2965, 0x9E3779B1U, 0x79D09F28U }, /* XSUM_XXH32_testdata[5931] */ + { 2966, 0x00000000U, 0x011EC304U }, /* XSUM_XXH32_testdata[5932] */ + { 2966, 0x9E3779B1U, 0x7A62A282U }, /* XSUM_XXH32_testdata[5933] */ + { 2967, 0x00000000U, 0xDBB4AED4U }, /* XSUM_XXH32_testdata[5934] */ + { 2967, 0x9E3779B1U, 0x8CF782A7U }, /* XSUM_XXH32_testdata[5935] */ + { 2968, 0x00000000U, 0x82E2A299U }, /* XSUM_XXH32_testdata[5936] */ + { 2968, 0x9E3779B1U, 0x8318B8C8U }, /* XSUM_XXH32_testdata[5937] */ + { 2969, 0x00000000U, 0x737E90A1U }, /* XSUM_XXH32_testdata[5938] */ + { 2969, 0x9E3779B1U, 0xE3DCDCD5U }, /* XSUM_XXH32_testdata[5939] */ + { 2970, 0x00000000U, 0xFB4B300DU }, /* XSUM_XXH32_testdata[5940] */ + { 2970, 0x9E3779B1U, 0xFC6BA74CU }, /* XSUM_XXH32_testdata[5941] */ + { 2971, 0x00000000U, 0x5B5D301AU }, /* XSUM_XXH32_testdata[5942] */ + { 2971, 0x9E3779B1U, 0x70A97341U }, /* XSUM_XXH32_testdata[5943] */ + { 2972, 0x00000000U, 0x707F8706U }, /* XSUM_XXH32_testdata[5944] */ + { 2972, 0x9E3779B1U, 0x8208FF05U }, /* XSUM_XXH32_testdata[5945] */ + { 2973, 0x00000000U, 0xD46D3BD7U }, /* XSUM_XXH32_testdata[5946] */ + { 2973, 0x9E3779B1U, 0xF97FD829U }, /* XSUM_XXH32_testdata[5947] */ + { 2974, 0x00000000U, 0x3B853D38U }, /* XSUM_XXH32_testdata[5948] */ + { 2974, 0x9E3779B1U, 0xB068F481U }, /* XSUM_XXH32_testdata[5949] */ + { 2975, 0x00000000U, 0x18B0B34FU }, /* XSUM_XXH32_testdata[5950] */ + { 2975, 0x9E3779B1U, 0xF295B71EU }, /* XSUM_XXH32_testdata[5951] */ + { 2976, 0x00000000U, 0xB9EAA1ACU }, /* XSUM_XXH32_testdata[5952] */ + { 2976, 0x9E3779B1U, 0x8FCC965FU }, /* XSUM_XXH32_testdata[5953] */ + { 2977, 0x00000000U, 0xBE611863U }, /* XSUM_XXH32_testdata[5954] */ + { 2977, 0x9E3779B1U, 0x379F5EBFU }, /* XSUM_XXH32_testdata[5955] */ + { 2978, 0x00000000U, 0x1111B83CU }, /* XSUM_XXH32_testdata[5956] */ + { 2978, 0x9E3779B1U, 0x66FF91B8U }, /* XSUM_XXH32_testdata[5957] */ + { 2979, 0x00000000U, 0x1BCCB558U }, /* XSUM_XXH32_testdata[5958] */ + { 2979, 0x9E3779B1U, 0x20658C38U }, /* XSUM_XXH32_testdata[5959] */ + { 2980, 0x00000000U, 0xAAB5B933U }, /* XSUM_XXH32_testdata[5960] */ + { 2980, 0x9E3779B1U, 0x84DCB796U }, /* XSUM_XXH32_testdata[5961] */ + { 2981, 0x00000000U, 0xF373FDC4U }, /* XSUM_XXH32_testdata[5962] */ + { 2981, 0x9E3779B1U, 0x6DE7A7A8U }, /* XSUM_XXH32_testdata[5963] */ + { 2982, 0x00000000U, 0x0195E191U }, /* XSUM_XXH32_testdata[5964] */ + { 2982, 0x9E3779B1U, 0xDE816C61U }, /* XSUM_XXH32_testdata[5965] */ + { 2983, 0x00000000U, 0x29193BCEU }, /* XSUM_XXH32_testdata[5966] */ + { 2983, 0x9E3779B1U, 0x1CE6F15BU }, /* XSUM_XXH32_testdata[5967] */ + { 2984, 0x00000000U, 0x5A489757U }, /* XSUM_XXH32_testdata[5968] */ + { 2984, 0x9E3779B1U, 0xE84C9D02U }, /* XSUM_XXH32_testdata[5969] */ + { 2985, 0x00000000U, 0x9A8D2836U }, /* XSUM_XXH32_testdata[5970] */ + { 2985, 0x9E3779B1U, 0x561AD322U }, /* XSUM_XXH32_testdata[5971] */ + { 2986, 0x00000000U, 0xA334309EU }, /* XSUM_XXH32_testdata[5972] */ + { 2986, 0x9E3779B1U, 0x4D373B75U }, /* XSUM_XXH32_testdata[5973] */ + { 2987, 0x00000000U, 0x0C989056U }, /* XSUM_XXH32_testdata[5974] */ + { 2987, 0x9E3779B1U, 0xECD70EC8U }, /* XSUM_XXH32_testdata[5975] */ + { 2988, 0x00000000U, 0xDC615020U }, /* XSUM_XXH32_testdata[5976] */ + { 2988, 0x9E3779B1U, 0x492373CAU }, /* XSUM_XXH32_testdata[5977] */ + { 2989, 0x00000000U, 0x8B3CF068U }, /* XSUM_XXH32_testdata[5978] */ + { 2989, 0x9E3779B1U, 0x86B08886U }, /* XSUM_XXH32_testdata[5979] */ + { 2990, 0x00000000U, 0x4391DB09U }, /* XSUM_XXH32_testdata[5980] */ + { 2990, 0x9E3779B1U, 0xD8CF567FU }, /* XSUM_XXH32_testdata[5981] */ + { 2991, 0x00000000U, 0x1A7A1BF9U }, /* XSUM_XXH32_testdata[5982] */ + { 2991, 0x9E3779B1U, 0x5B31BE82U }, /* XSUM_XXH32_testdata[5983] */ + { 2992, 0x00000000U, 0x423A109DU }, /* XSUM_XXH32_testdata[5984] */ + { 2992, 0x9E3779B1U, 0xD62AB7FCU }, /* XSUM_XXH32_testdata[5985] */ + { 2993, 0x00000000U, 0x2910FCA6U }, /* XSUM_XXH32_testdata[5986] */ + { 2993, 0x9E3779B1U, 0xF6C41F6AU }, /* XSUM_XXH32_testdata[5987] */ + { 2994, 0x00000000U, 0x9225C21CU }, /* XSUM_XXH32_testdata[5988] */ + { 2994, 0x9E3779B1U, 0x176B2457U }, /* XSUM_XXH32_testdata[5989] */ + { 2995, 0x00000000U, 0x8B56A4DEU }, /* XSUM_XXH32_testdata[5990] */ + { 2995, 0x9E3779B1U, 0x0F4E15FAU }, /* XSUM_XXH32_testdata[5991] */ + { 2996, 0x00000000U, 0x3470DB81U }, /* XSUM_XXH32_testdata[5992] */ + { 2996, 0x9E3779B1U, 0x48D239ECU }, /* XSUM_XXH32_testdata[5993] */ + { 2997, 0x00000000U, 0xC466E875U }, /* XSUM_XXH32_testdata[5994] */ + { 2997, 0x9E3779B1U, 0x40297694U }, /* XSUM_XXH32_testdata[5995] */ + { 2998, 0x00000000U, 0x310D7935U }, /* XSUM_XXH32_testdata[5996] */ + { 2998, 0x9E3779B1U, 0x9C82CD08U }, /* XSUM_XXH32_testdata[5997] */ + { 2999, 0x00000000U, 0x1410789DU }, /* XSUM_XXH32_testdata[5998] */ + { 2999, 0x9E3779B1U, 0xA34ACC55U }, /* XSUM_XXH32_testdata[5999] */ + { 3000, 0x00000000U, 0x7DE4955CU }, /* XSUM_XXH32_testdata[6000] */ + { 3000, 0x9E3779B1U, 0x595FB316U }, /* XSUM_XXH32_testdata[6001] */ + { 3001, 0x00000000U, 0xC33AC27EU }, /* XSUM_XXH32_testdata[6002] */ + { 3001, 0x9E3779B1U, 0x76BCAFEFU }, /* XSUM_XXH32_testdata[6003] */ + { 3002, 0x00000000U, 0x824DD320U }, /* XSUM_XXH32_testdata[6004] */ + { 3002, 0x9E3779B1U, 0x6F7D851AU }, /* XSUM_XXH32_testdata[6005] */ + { 3003, 0x00000000U, 0x59B47801U }, /* XSUM_XXH32_testdata[6006] */ + { 3003, 0x9E3779B1U, 0xDD67D6A4U }, /* XSUM_XXH32_testdata[6007] */ + { 3004, 0x00000000U, 0xB8395F2CU }, /* XSUM_XXH32_testdata[6008] */ + { 3004, 0x9E3779B1U, 0xFE7A73A1U }, /* XSUM_XXH32_testdata[6009] */ + { 3005, 0x00000000U, 0xE66147FFU }, /* XSUM_XXH32_testdata[6010] */ + { 3005, 0x9E3779B1U, 0x781AA1FCU }, /* XSUM_XXH32_testdata[6011] */ + { 3006, 0x00000000U, 0x05B76570U }, /* XSUM_XXH32_testdata[6012] */ + { 3006, 0x9E3779B1U, 0xC560E325U }, /* XSUM_XXH32_testdata[6013] */ + { 3007, 0x00000000U, 0x74B4319FU }, /* XSUM_XXH32_testdata[6014] */ + { 3007, 0x9E3779B1U, 0x783B331CU }, /* XSUM_XXH32_testdata[6015] */ + { 3008, 0x00000000U, 0x0A1A629DU }, /* XSUM_XXH32_testdata[6016] */ + { 3008, 0x9E3779B1U, 0x9ADD6ABCU }, /* XSUM_XXH32_testdata[6017] */ + { 3009, 0x00000000U, 0xCD70D942U }, /* XSUM_XXH32_testdata[6018] */ + { 3009, 0x9E3779B1U, 0x1BFB81F6U }, /* XSUM_XXH32_testdata[6019] */ + { 3010, 0x00000000U, 0x56694BEBU }, /* XSUM_XXH32_testdata[6020] */ + { 3010, 0x9E3779B1U, 0xD4D15900U }, /* XSUM_XXH32_testdata[6021] */ + { 3011, 0x00000000U, 0x0B8F4451U }, /* XSUM_XXH32_testdata[6022] */ + { 3011, 0x9E3779B1U, 0x4228C4E0U }, /* XSUM_XXH32_testdata[6023] */ + { 3012, 0x00000000U, 0xD42EC927U }, /* XSUM_XXH32_testdata[6024] */ + { 3012, 0x9E3779B1U, 0x24EC861AU }, /* XSUM_XXH32_testdata[6025] */ + { 3013, 0x00000000U, 0x6226F2C5U }, /* XSUM_XXH32_testdata[6026] */ + { 3013, 0x9E3779B1U, 0xF6840F72U }, /* XSUM_XXH32_testdata[6027] */ + { 3014, 0x00000000U, 0x7AD77FF1U }, /* XSUM_XXH32_testdata[6028] */ + { 3014, 0x9E3779B1U, 0xBC3F2621U }, /* XSUM_XXH32_testdata[6029] */ + { 3015, 0x00000000U, 0x5413594DU }, /* XSUM_XXH32_testdata[6030] */ + { 3015, 0x9E3779B1U, 0xE96FE3EFU }, /* XSUM_XXH32_testdata[6031] */ + { 3016, 0x00000000U, 0x163019CFU }, /* XSUM_XXH32_testdata[6032] */ + { 3016, 0x9E3779B1U, 0xCE696F0BU }, /* XSUM_XXH32_testdata[6033] */ + { 3017, 0x00000000U, 0x94ECA3C3U }, /* XSUM_XXH32_testdata[6034] */ + { 3017, 0x9E3779B1U, 0x34FE249DU }, /* XSUM_XXH32_testdata[6035] */ + { 3018, 0x00000000U, 0xEB15CF8FU }, /* XSUM_XXH32_testdata[6036] */ + { 3018, 0x9E3779B1U, 0x168B5B6EU }, /* XSUM_XXH32_testdata[6037] */ + { 3019, 0x00000000U, 0xA918E275U }, /* XSUM_XXH32_testdata[6038] */ + { 3019, 0x9E3779B1U, 0xD91220BCU }, /* XSUM_XXH32_testdata[6039] */ + { 3020, 0x00000000U, 0xFC191ABBU }, /* XSUM_XXH32_testdata[6040] */ + { 3020, 0x9E3779B1U, 0x0AE2796BU }, /* XSUM_XXH32_testdata[6041] */ + { 3021, 0x00000000U, 0xDE6669BBU }, /* XSUM_XXH32_testdata[6042] */ + { 3021, 0x9E3779B1U, 0xEFEB930FU }, /* XSUM_XXH32_testdata[6043] */ + { 3022, 0x00000000U, 0xDD2D73A8U }, /* XSUM_XXH32_testdata[6044] */ + { 3022, 0x9E3779B1U, 0xD6D9CBB8U }, /* XSUM_XXH32_testdata[6045] */ + { 3023, 0x00000000U, 0xCBEE8272U }, /* XSUM_XXH32_testdata[6046] */ + { 3023, 0x9E3779B1U, 0x215FC772U }, /* XSUM_XXH32_testdata[6047] */ + { 3024, 0x00000000U, 0x014C13C3U }, /* XSUM_XXH32_testdata[6048] */ + { 3024, 0x9E3779B1U, 0x5EF83E31U }, /* XSUM_XXH32_testdata[6049] */ + { 3025, 0x00000000U, 0xEDE35D61U }, /* XSUM_XXH32_testdata[6050] */ + { 3025, 0x9E3779B1U, 0x82738A51U }, /* XSUM_XXH32_testdata[6051] */ + { 3026, 0x00000000U, 0x668B22B4U }, /* XSUM_XXH32_testdata[6052] */ + { 3026, 0x9E3779B1U, 0xB422F746U }, /* XSUM_XXH32_testdata[6053] */ + { 3027, 0x00000000U, 0x31087B46U }, /* XSUM_XXH32_testdata[6054] */ + { 3027, 0x9E3779B1U, 0x094281ACU }, /* XSUM_XXH32_testdata[6055] */ + { 3028, 0x00000000U, 0x57F41E72U }, /* XSUM_XXH32_testdata[6056] */ + { 3028, 0x9E3779B1U, 0xFFB08C2EU }, /* XSUM_XXH32_testdata[6057] */ + { 3029, 0x00000000U, 0xAF9E9E7BU }, /* XSUM_XXH32_testdata[6058] */ + { 3029, 0x9E3779B1U, 0x5CD8A1DEU }, /* XSUM_XXH32_testdata[6059] */ + { 3030, 0x00000000U, 0x75D5BFA0U }, /* XSUM_XXH32_testdata[6060] */ + { 3030, 0x9E3779B1U, 0x52FBDEF0U }, /* XSUM_XXH32_testdata[6061] */ + { 3031, 0x00000000U, 0x6E8543CFU }, /* XSUM_XXH32_testdata[6062] */ + { 3031, 0x9E3779B1U, 0x663E33ADU }, /* XSUM_XXH32_testdata[6063] */ + { 3032, 0x00000000U, 0xFDF76881U }, /* XSUM_XXH32_testdata[6064] */ + { 3032, 0x9E3779B1U, 0xE519B676U }, /* XSUM_XXH32_testdata[6065] */ + { 3033, 0x00000000U, 0x7AEFA9CAU }, /* XSUM_XXH32_testdata[6066] */ + { 3033, 0x9E3779B1U, 0x865C3370U }, /* XSUM_XXH32_testdata[6067] */ + { 3034, 0x00000000U, 0x00EF3B72U }, /* XSUM_XXH32_testdata[6068] */ + { 3034, 0x9E3779B1U, 0x5721E410U }, /* XSUM_XXH32_testdata[6069] */ + { 3035, 0x00000000U, 0x1C6729ABU }, /* XSUM_XXH32_testdata[6070] */ + { 3035, 0x9E3779B1U, 0x8D18CB9AU }, /* XSUM_XXH32_testdata[6071] */ + { 3036, 0x00000000U, 0xECE697A3U }, /* XSUM_XXH32_testdata[6072] */ + { 3036, 0x9E3779B1U, 0x2065FD13U }, /* XSUM_XXH32_testdata[6073] */ + { 3037, 0x00000000U, 0xC0F2C8CCU }, /* XSUM_XXH32_testdata[6074] */ + { 3037, 0x9E3779B1U, 0xED60F9EEU }, /* XSUM_XXH32_testdata[6075] */ + { 3038, 0x00000000U, 0xDD7D2260U }, /* XSUM_XXH32_testdata[6076] */ + { 3038, 0x9E3779B1U, 0x869C9DFDU }, /* XSUM_XXH32_testdata[6077] */ + { 3039, 0x00000000U, 0x87DEC6DAU }, /* XSUM_XXH32_testdata[6078] */ + { 3039, 0x9E3779B1U, 0x41D284ADU }, /* XSUM_XXH32_testdata[6079] */ + { 3040, 0x00000000U, 0xCA8DA6B0U }, /* XSUM_XXH32_testdata[6080] */ + { 3040, 0x9E3779B1U, 0xFBAB5DD5U }, /* XSUM_XXH32_testdata[6081] */ + { 3041, 0x00000000U, 0x68A1D3EDU }, /* XSUM_XXH32_testdata[6082] */ + { 3041, 0x9E3779B1U, 0x41249766U }, /* XSUM_XXH32_testdata[6083] */ + { 3042, 0x00000000U, 0x3E4E842BU }, /* XSUM_XXH32_testdata[6084] */ + { 3042, 0x9E3779B1U, 0xB3C5D77DU }, /* XSUM_XXH32_testdata[6085] */ + { 3043, 0x00000000U, 0xE0EEA85BU }, /* XSUM_XXH32_testdata[6086] */ + { 3043, 0x9E3779B1U, 0x05EFB10DU }, /* XSUM_XXH32_testdata[6087] */ + { 3044, 0x00000000U, 0x477537C9U }, /* XSUM_XXH32_testdata[6088] */ + { 3044, 0x9E3779B1U, 0xF583F875U }, /* XSUM_XXH32_testdata[6089] */ + { 3045, 0x00000000U, 0x99C55376U }, /* XSUM_XXH32_testdata[6090] */ + { 3045, 0x9E3779B1U, 0x8492D63DU }, /* XSUM_XXH32_testdata[6091] */ + { 3046, 0x00000000U, 0x9D2314F3U }, /* XSUM_XXH32_testdata[6092] */ + { 3046, 0x9E3779B1U, 0x2A17457BU }, /* XSUM_XXH32_testdata[6093] */ + { 3047, 0x00000000U, 0xF520B774U }, /* XSUM_XXH32_testdata[6094] */ + { 3047, 0x9E3779B1U, 0xCBC0E177U }, /* XSUM_XXH32_testdata[6095] */ + { 3048, 0x00000000U, 0x7DF6260AU }, /* XSUM_XXH32_testdata[6096] */ + { 3048, 0x9E3779B1U, 0x2B849C8EU }, /* XSUM_XXH32_testdata[6097] */ + { 3049, 0x00000000U, 0x2316EEF0U }, /* XSUM_XXH32_testdata[6098] */ + { 3049, 0x9E3779B1U, 0x8C00785BU }, /* XSUM_XXH32_testdata[6099] */ + { 3050, 0x00000000U, 0x8BF00BADU }, /* XSUM_XXH32_testdata[6100] */ + { 3050, 0x9E3779B1U, 0x08C199F5U }, /* XSUM_XXH32_testdata[6101] */ + { 3051, 0x00000000U, 0xD9EB661CU }, /* XSUM_XXH32_testdata[6102] */ + { 3051, 0x9E3779B1U, 0x1615E50DU }, /* XSUM_XXH32_testdata[6103] */ + { 3052, 0x00000000U, 0x09AF9665U }, /* XSUM_XXH32_testdata[6104] */ + { 3052, 0x9E3779B1U, 0x8001C98FU }, /* XSUM_XXH32_testdata[6105] */ + { 3053, 0x00000000U, 0x213FC05FU }, /* XSUM_XXH32_testdata[6106] */ + { 3053, 0x9E3779B1U, 0xFDB85DACU }, /* XSUM_XXH32_testdata[6107] */ + { 3054, 0x00000000U, 0x330167EEU }, /* XSUM_XXH32_testdata[6108] */ + { 3054, 0x9E3779B1U, 0x8C7954D3U }, /* XSUM_XXH32_testdata[6109] */ + { 3055, 0x00000000U, 0x1114A4F7U }, /* XSUM_XXH32_testdata[6110] */ + { 3055, 0x9E3779B1U, 0x8DD32A76U }, /* XSUM_XXH32_testdata[6111] */ + { 3056, 0x00000000U, 0xA84F141BU }, /* XSUM_XXH32_testdata[6112] */ + { 3056, 0x9E3779B1U, 0xA0CFB287U }, /* XSUM_XXH32_testdata[6113] */ + { 3057, 0x00000000U, 0x46408A5AU }, /* XSUM_XXH32_testdata[6114] */ + { 3057, 0x9E3779B1U, 0xB332175BU }, /* XSUM_XXH32_testdata[6115] */ + { 3058, 0x00000000U, 0xE3780AA0U }, /* XSUM_XXH32_testdata[6116] */ + { 3058, 0x9E3779B1U, 0x00A8A855U }, /* XSUM_XXH32_testdata[6117] */ + { 3059, 0x00000000U, 0x764D099DU }, /* XSUM_XXH32_testdata[6118] */ + { 3059, 0x9E3779B1U, 0x092B48AEU }, /* XSUM_XXH32_testdata[6119] */ + { 3060, 0x00000000U, 0x436F6078U }, /* XSUM_XXH32_testdata[6120] */ + { 3060, 0x9E3779B1U, 0x4589D0DAU }, /* XSUM_XXH32_testdata[6121] */ + { 3061, 0x00000000U, 0x2391A33DU }, /* XSUM_XXH32_testdata[6122] */ + { 3061, 0x9E3779B1U, 0x355113B7U }, /* XSUM_XXH32_testdata[6123] */ + { 3062, 0x00000000U, 0x60163C95U }, /* XSUM_XXH32_testdata[6124] */ + { 3062, 0x9E3779B1U, 0xB5CC6958U }, /* XSUM_XXH32_testdata[6125] */ + { 3063, 0x00000000U, 0x02740200U }, /* XSUM_XXH32_testdata[6126] */ + { 3063, 0x9E3779B1U, 0x8E0E8A88U }, /* XSUM_XXH32_testdata[6127] */ + { 3064, 0x00000000U, 0x7846D7E6U }, /* XSUM_XXH32_testdata[6128] */ + { 3064, 0x9E3779B1U, 0x54DBB912U }, /* XSUM_XXH32_testdata[6129] */ + { 3065, 0x00000000U, 0x6F098C1FU }, /* XSUM_XXH32_testdata[6130] */ + { 3065, 0x9E3779B1U, 0xD14C4216U }, /* XSUM_XXH32_testdata[6131] */ + { 3066, 0x00000000U, 0x99225C5CU }, /* XSUM_XXH32_testdata[6132] */ + { 3066, 0x9E3779B1U, 0x2BF95082U }, /* XSUM_XXH32_testdata[6133] */ + { 3067, 0x00000000U, 0x296ED4B0U }, /* XSUM_XXH32_testdata[6134] */ + { 3067, 0x9E3779B1U, 0xE209F1E1U }, /* XSUM_XXH32_testdata[6135] */ + { 3068, 0x00000000U, 0x36F7B802U }, /* XSUM_XXH32_testdata[6136] */ + { 3068, 0x9E3779B1U, 0x26E5BE90U }, /* XSUM_XXH32_testdata[6137] */ + { 3069, 0x00000000U, 0x3B4B7916U }, /* XSUM_XXH32_testdata[6138] */ + { 3069, 0x9E3779B1U, 0x72E4B2A2U }, /* XSUM_XXH32_testdata[6139] */ + { 3070, 0x00000000U, 0x625DFF2CU }, /* XSUM_XXH32_testdata[6140] */ + { 3070, 0x9E3779B1U, 0x29B404B8U }, /* XSUM_XXH32_testdata[6141] */ + { 3071, 0x00000000U, 0x449F449CU }, /* XSUM_XXH32_testdata[6142] */ + { 3071, 0x9E3779B1U, 0xE9AD9AB3U }, /* XSUM_XXH32_testdata[6143] */ + { 3072, 0x00000000U, 0xA0FDFF1BU }, /* XSUM_XXH32_testdata[6144] */ + { 3072, 0x9E3779B1U, 0x67E35938U }, /* XSUM_XXH32_testdata[6145] */ + { 3073, 0x00000000U, 0xE7483D94U }, /* XSUM_XXH32_testdata[6146] */ + { 3073, 0x9E3779B1U, 0x566A16BDU }, /* XSUM_XXH32_testdata[6147] */ + { 3074, 0x00000000U, 0x00EA37A4U }, /* XSUM_XXH32_testdata[6148] */ + { 3074, 0x9E3779B1U, 0x29F448B2U }, /* XSUM_XXH32_testdata[6149] */ + { 3075, 0x00000000U, 0x053238F7U }, /* XSUM_XXH32_testdata[6150] */ + { 3075, 0x9E3779B1U, 0x957262A4U }, /* XSUM_XXH32_testdata[6151] */ + { 3076, 0x00000000U, 0xA3EB26E9U }, /* XSUM_XXH32_testdata[6152] */ + { 3076, 0x9E3779B1U, 0xDCF26BFCU }, /* XSUM_XXH32_testdata[6153] */ + { 3077, 0x00000000U, 0xE50C072DU }, /* XSUM_XXH32_testdata[6154] */ + { 3077, 0x9E3779B1U, 0xC56D7FF2U }, /* XSUM_XXH32_testdata[6155] */ + { 3078, 0x00000000U, 0xBD5A413EU }, /* XSUM_XXH32_testdata[6156] */ + { 3078, 0x9E3779B1U, 0x1BBBAC67U }, /* XSUM_XXH32_testdata[6157] */ + { 3079, 0x00000000U, 0x58F5D25FU }, /* XSUM_XXH32_testdata[6158] */ + { 3079, 0x9E3779B1U, 0x27668595U }, /* XSUM_XXH32_testdata[6159] */ + { 3080, 0x00000000U, 0x4BD9A8AAU }, /* XSUM_XXH32_testdata[6160] */ + { 3080, 0x9E3779B1U, 0x318CA866U }, /* XSUM_XXH32_testdata[6161] */ + { 3081, 0x00000000U, 0x1F2B243EU }, /* XSUM_XXH32_testdata[6162] */ + { 3081, 0x9E3779B1U, 0x51FF079AU }, /* XSUM_XXH32_testdata[6163] */ + { 3082, 0x00000000U, 0x75347DC4U }, /* XSUM_XXH32_testdata[6164] */ + { 3082, 0x9E3779B1U, 0x88703B3FU }, /* XSUM_XXH32_testdata[6165] */ + { 3083, 0x00000000U, 0x9BD5BAF2U }, /* XSUM_XXH32_testdata[6166] */ + { 3083, 0x9E3779B1U, 0xA2670D17U }, /* XSUM_XXH32_testdata[6167] */ + { 3084, 0x00000000U, 0xB6727943U }, /* XSUM_XXH32_testdata[6168] */ + { 3084, 0x9E3779B1U, 0x339583BBU }, /* XSUM_XXH32_testdata[6169] */ + { 3085, 0x00000000U, 0xCAEE49F3U }, /* XSUM_XXH32_testdata[6170] */ + { 3085, 0x9E3779B1U, 0xB30FD443U }, /* XSUM_XXH32_testdata[6171] */ + { 3086, 0x00000000U, 0x2AD794ABU }, /* XSUM_XXH32_testdata[6172] */ + { 3086, 0x9E3779B1U, 0x30BF0A02U }, /* XSUM_XXH32_testdata[6173] */ + { 3087, 0x00000000U, 0x8ECFAC3DU }, /* XSUM_XXH32_testdata[6174] */ + { 3087, 0x9E3779B1U, 0xA0320348U }, /* XSUM_XXH32_testdata[6175] */ + { 3088, 0x00000000U, 0xCEEB962BU }, /* XSUM_XXH32_testdata[6176] */ + { 3088, 0x9E3779B1U, 0xD2F41917U }, /* XSUM_XXH32_testdata[6177] */ + { 3089, 0x00000000U, 0x186BB4CEU }, /* XSUM_XXH32_testdata[6178] */ + { 3089, 0x9E3779B1U, 0xF9B675D1U }, /* XSUM_XXH32_testdata[6179] */ + { 3090, 0x00000000U, 0xAF0165C0U }, /* XSUM_XXH32_testdata[6180] */ + { 3090, 0x9E3779B1U, 0x19541AE7U }, /* XSUM_XXH32_testdata[6181] */ + { 3091, 0x00000000U, 0xA0B93DFAU }, /* XSUM_XXH32_testdata[6182] */ + { 3091, 0x9E3779B1U, 0xAFF891FFU }, /* XSUM_XXH32_testdata[6183] */ + { 3092, 0x00000000U, 0xAA524FCBU }, /* XSUM_XXH32_testdata[6184] */ + { 3092, 0x9E3779B1U, 0x54BEF5C6U }, /* XSUM_XXH32_testdata[6185] */ + { 3093, 0x00000000U, 0x2E513252U }, /* XSUM_XXH32_testdata[6186] */ + { 3093, 0x9E3779B1U, 0xF5B2F5A5U }, /* XSUM_XXH32_testdata[6187] */ + { 3094, 0x00000000U, 0xFDFB5811U }, /* XSUM_XXH32_testdata[6188] */ + { 3094, 0x9E3779B1U, 0x4C7D0E64U }, /* XSUM_XXH32_testdata[6189] */ + { 3095, 0x00000000U, 0x0B08D5F4U }, /* XSUM_XXH32_testdata[6190] */ + { 3095, 0x9E3779B1U, 0x0541E8D7U }, /* XSUM_XXH32_testdata[6191] */ + { 3096, 0x00000000U, 0x174F7F78U }, /* XSUM_XXH32_testdata[6192] */ + { 3096, 0x9E3779B1U, 0xBCD26B40U }, /* XSUM_XXH32_testdata[6193] */ + { 3097, 0x00000000U, 0x3B422793U }, /* XSUM_XXH32_testdata[6194] */ + { 3097, 0x9E3779B1U, 0x19FF9E1BU }, /* XSUM_XXH32_testdata[6195] */ + { 3098, 0x00000000U, 0xCB4C9567U }, /* XSUM_XXH32_testdata[6196] */ + { 3098, 0x9E3779B1U, 0x224AFEA0U }, /* XSUM_XXH32_testdata[6197] */ + { 3099, 0x00000000U, 0x79993C02U }, /* XSUM_XXH32_testdata[6198] */ + { 3099, 0x9E3779B1U, 0x12D464AFU }, /* XSUM_XXH32_testdata[6199] */ + { 3100, 0x00000000U, 0x833D2386U }, /* XSUM_XXH32_testdata[6200] */ + { 3100, 0x9E3779B1U, 0x332575C2U }, /* XSUM_XXH32_testdata[6201] */ + { 3101, 0x00000000U, 0x3BA959DBU }, /* XSUM_XXH32_testdata[6202] */ + { 3101, 0x9E3779B1U, 0x64EA3277U }, /* XSUM_XXH32_testdata[6203] */ + { 3102, 0x00000000U, 0x0B933AEDU }, /* XSUM_XXH32_testdata[6204] */ + { 3102, 0x9E3779B1U, 0x2C396C64U }, /* XSUM_XXH32_testdata[6205] */ + { 3103, 0x00000000U, 0xAB31C79EU }, /* XSUM_XXH32_testdata[6206] */ + { 3103, 0x9E3779B1U, 0x4DE25C64U }, /* XSUM_XXH32_testdata[6207] */ + { 3104, 0x00000000U, 0xF2F76764U }, /* XSUM_XXH32_testdata[6208] */ + { 3104, 0x9E3779B1U, 0x30D3520BU }, /* XSUM_XXH32_testdata[6209] */ + { 3105, 0x00000000U, 0x18099809U }, /* XSUM_XXH32_testdata[6210] */ + { 3105, 0x9E3779B1U, 0xCA479E4AU }, /* XSUM_XXH32_testdata[6211] */ + { 3106, 0x00000000U, 0xB620278DU }, /* XSUM_XXH32_testdata[6212] */ + { 3106, 0x9E3779B1U, 0x5A2F5AE2U }, /* XSUM_XXH32_testdata[6213] */ + { 3107, 0x00000000U, 0x8FAA78E5U }, /* XSUM_XXH32_testdata[6214] */ + { 3107, 0x9E3779B1U, 0x3E9DEEA2U }, /* XSUM_XXH32_testdata[6215] */ + { 3108, 0x00000000U, 0xC9A6E1ABU }, /* XSUM_XXH32_testdata[6216] */ + { 3108, 0x9E3779B1U, 0xE7E01671U }, /* XSUM_XXH32_testdata[6217] */ + { 3109, 0x00000000U, 0x71F31355U }, /* XSUM_XXH32_testdata[6218] */ + { 3109, 0x9E3779B1U, 0xA757003BU }, /* XSUM_XXH32_testdata[6219] */ + { 3110, 0x00000000U, 0x80FC6DEBU }, /* XSUM_XXH32_testdata[6220] */ + { 3110, 0x9E3779B1U, 0xF9C8D1B2U }, /* XSUM_XXH32_testdata[6221] */ + { 3111, 0x00000000U, 0xB7982649U }, /* XSUM_XXH32_testdata[6222] */ + { 3111, 0x9E3779B1U, 0x434F40DBU }, /* XSUM_XXH32_testdata[6223] */ + { 3112, 0x00000000U, 0x26397B91U }, /* XSUM_XXH32_testdata[6224] */ + { 3112, 0x9E3779B1U, 0xCBA9B3DFU }, /* XSUM_XXH32_testdata[6225] */ + { 3113, 0x00000000U, 0x00DEBAE6U }, /* XSUM_XXH32_testdata[6226] */ + { 3113, 0x9E3779B1U, 0x5202E198U }, /* XSUM_XXH32_testdata[6227] */ + { 3114, 0x00000000U, 0x47E96515U }, /* XSUM_XXH32_testdata[6228] */ + { 3114, 0x9E3779B1U, 0xD871FFC3U }, /* XSUM_XXH32_testdata[6229] */ + { 3115, 0x00000000U, 0x03EC5B87U }, /* XSUM_XXH32_testdata[6230] */ + { 3115, 0x9E3779B1U, 0xB64CD958U }, /* XSUM_XXH32_testdata[6231] */ + { 3116, 0x00000000U, 0x8164EC50U }, /* XSUM_XXH32_testdata[6232] */ + { 3116, 0x9E3779B1U, 0x0250BA05U }, /* XSUM_XXH32_testdata[6233] */ + { 3117, 0x00000000U, 0x598FF0FBU }, /* XSUM_XXH32_testdata[6234] */ + { 3117, 0x9E3779B1U, 0x342BA701U }, /* XSUM_XXH32_testdata[6235] */ + { 3118, 0x00000000U, 0x361F1A0AU }, /* XSUM_XXH32_testdata[6236] */ + { 3118, 0x9E3779B1U, 0x588F5B9CU }, /* XSUM_XXH32_testdata[6237] */ + { 3119, 0x00000000U, 0x1F8B80AAU }, /* XSUM_XXH32_testdata[6238] */ + { 3119, 0x9E3779B1U, 0xD8BEDE1BU }, /* XSUM_XXH32_testdata[6239] */ + { 3120, 0x00000000U, 0x4FEE03B1U }, /* XSUM_XXH32_testdata[6240] */ + { 3120, 0x9E3779B1U, 0x23DB3750U }, /* XSUM_XXH32_testdata[6241] */ + { 3121, 0x00000000U, 0x16C4B329U }, /* XSUM_XXH32_testdata[6242] */ + { 3121, 0x9E3779B1U, 0x751AFB46U }, /* XSUM_XXH32_testdata[6243] */ + { 3122, 0x00000000U, 0x74F2D8D3U }, /* XSUM_XXH32_testdata[6244] */ + { 3122, 0x9E3779B1U, 0xF8BCDCBCU }, /* XSUM_XXH32_testdata[6245] */ + { 3123, 0x00000000U, 0x1DA68D82U }, /* XSUM_XXH32_testdata[6246] */ + { 3123, 0x9E3779B1U, 0x4E3CB62AU }, /* XSUM_XXH32_testdata[6247] */ + { 3124, 0x00000000U, 0x471A6C7EU }, /* XSUM_XXH32_testdata[6248] */ + { 3124, 0x9E3779B1U, 0xD9C5D9F6U }, /* XSUM_XXH32_testdata[6249] */ + { 3125, 0x00000000U, 0xC71BD5AAU }, /* XSUM_XXH32_testdata[6250] */ + { 3125, 0x9E3779B1U, 0xB402481FU }, /* XSUM_XXH32_testdata[6251] */ + { 3126, 0x00000000U, 0xDFBB31E5U }, /* XSUM_XXH32_testdata[6252] */ + { 3126, 0x9E3779B1U, 0xACDDED03U }, /* XSUM_XXH32_testdata[6253] */ + { 3127, 0x00000000U, 0xA088651FU }, /* XSUM_XXH32_testdata[6254] */ + { 3127, 0x9E3779B1U, 0x9E391935U }, /* XSUM_XXH32_testdata[6255] */ + { 3128, 0x00000000U, 0x2849F292U }, /* XSUM_XXH32_testdata[6256] */ + { 3128, 0x9E3779B1U, 0x8F1F943FU }, /* XSUM_XXH32_testdata[6257] */ + { 3129, 0x00000000U, 0x7D1EA42DU }, /* XSUM_XXH32_testdata[6258] */ + { 3129, 0x9E3779B1U, 0x6F54117CU }, /* XSUM_XXH32_testdata[6259] */ + { 3130, 0x00000000U, 0x4896187BU }, /* XSUM_XXH32_testdata[6260] */ + { 3130, 0x9E3779B1U, 0x6496E34FU }, /* XSUM_XXH32_testdata[6261] */ + { 3131, 0x00000000U, 0x7997DF9CU }, /* XSUM_XXH32_testdata[6262] */ + { 3131, 0x9E3779B1U, 0x6B8184D4U }, /* XSUM_XXH32_testdata[6263] */ + { 3132, 0x00000000U, 0x0C2D23BDU }, /* XSUM_XXH32_testdata[6264] */ + { 3132, 0x9E3779B1U, 0x45D10366U }, /* XSUM_XXH32_testdata[6265] */ + { 3133, 0x00000000U, 0x33D90B93U }, /* XSUM_XXH32_testdata[6266] */ + { 3133, 0x9E3779B1U, 0x087A7D97U }, /* XSUM_XXH32_testdata[6267] */ + { 3134, 0x00000000U, 0xAF4AA558U }, /* XSUM_XXH32_testdata[6268] */ + { 3134, 0x9E3779B1U, 0x61497C38U }, /* XSUM_XXH32_testdata[6269] */ + { 3135, 0x00000000U, 0xEE45D13BU }, /* XSUM_XXH32_testdata[6270] */ + { 3135, 0x9E3779B1U, 0xB08E73A5U }, /* XSUM_XXH32_testdata[6271] */ + { 3136, 0x00000000U, 0xD235FE2DU }, /* XSUM_XXH32_testdata[6272] */ + { 3136, 0x9E3779B1U, 0xFE40CD43U }, /* XSUM_XXH32_testdata[6273] */ + { 3137, 0x00000000U, 0xD12843BEU }, /* XSUM_XXH32_testdata[6274] */ + { 3137, 0x9E3779B1U, 0xF1FD0CBEU }, /* XSUM_XXH32_testdata[6275] */ + { 3138, 0x00000000U, 0x264EB7F5U }, /* XSUM_XXH32_testdata[6276] */ + { 3138, 0x9E3779B1U, 0x02B75CFFU }, /* XSUM_XXH32_testdata[6277] */ + { 3139, 0x00000000U, 0x8C7DFB2FU }, /* XSUM_XXH32_testdata[6278] */ + { 3139, 0x9E3779B1U, 0xEC45FCE8U }, /* XSUM_XXH32_testdata[6279] */ + { 3140, 0x00000000U, 0x9146025EU }, /* XSUM_XXH32_testdata[6280] */ + { 3140, 0x9E3779B1U, 0x1F38B156U }, /* XSUM_XXH32_testdata[6281] */ + { 3141, 0x00000000U, 0x5FF2766DU }, /* XSUM_XXH32_testdata[6282] */ + { 3141, 0x9E3779B1U, 0xA5413F98U }, /* XSUM_XXH32_testdata[6283] */ + { 3142, 0x00000000U, 0xA88969E3U }, /* XSUM_XXH32_testdata[6284] */ + { 3142, 0x9E3779B1U, 0x55805C1EU }, /* XSUM_XXH32_testdata[6285] */ + { 3143, 0x00000000U, 0x9283DCF7U }, /* XSUM_XXH32_testdata[6286] */ + { 3143, 0x9E3779B1U, 0x1A6B8D1DU }, /* XSUM_XXH32_testdata[6287] */ + { 3144, 0x00000000U, 0x37318368U }, /* XSUM_XXH32_testdata[6288] */ + { 3144, 0x9E3779B1U, 0xFE217DF2U }, /* XSUM_XXH32_testdata[6289] */ + { 3145, 0x00000000U, 0x65E78447U }, /* XSUM_XXH32_testdata[6290] */ + { 3145, 0x9E3779B1U, 0xB5E1F43CU }, /* XSUM_XXH32_testdata[6291] */ + { 3146, 0x00000000U, 0x59069A59U }, /* XSUM_XXH32_testdata[6292] */ + { 3146, 0x9E3779B1U, 0x860F50C8U }, /* XSUM_XXH32_testdata[6293] */ + { 3147, 0x00000000U, 0x3C9225C4U }, /* XSUM_XXH32_testdata[6294] */ + { 3147, 0x9E3779B1U, 0xDB0DF5B5U }, /* XSUM_XXH32_testdata[6295] */ + { 3148, 0x00000000U, 0x7747A93EU }, /* XSUM_XXH32_testdata[6296] */ + { 3148, 0x9E3779B1U, 0x031DF7FDU }, /* XSUM_XXH32_testdata[6297] */ + { 3149, 0x00000000U, 0xA195194BU }, /* XSUM_XXH32_testdata[6298] */ + { 3149, 0x9E3779B1U, 0xF6475F00U }, /* XSUM_XXH32_testdata[6299] */ + { 3150, 0x00000000U, 0xBD2CE7F4U }, /* XSUM_XXH32_testdata[6300] */ + { 3150, 0x9E3779B1U, 0x80BE1634U }, /* XSUM_XXH32_testdata[6301] */ + { 3151, 0x00000000U, 0xA2F026E9U }, /* XSUM_XXH32_testdata[6302] */ + { 3151, 0x9E3779B1U, 0x4E2A5D06U }, /* XSUM_XXH32_testdata[6303] */ + { 3152, 0x00000000U, 0xEF5C95F2U }, /* XSUM_XXH32_testdata[6304] */ + { 3152, 0x9E3779B1U, 0xC301871FU }, /* XSUM_XXH32_testdata[6305] */ + { 3153, 0x00000000U, 0x112EE61CU }, /* XSUM_XXH32_testdata[6306] */ + { 3153, 0x9E3779B1U, 0xF76C766DU }, /* XSUM_XXH32_testdata[6307] */ + { 3154, 0x00000000U, 0x8EC20863U }, /* XSUM_XXH32_testdata[6308] */ + { 3154, 0x9E3779B1U, 0xF2A61858U }, /* XSUM_XXH32_testdata[6309] */ + { 3155, 0x00000000U, 0xEBB89A0FU }, /* XSUM_XXH32_testdata[6310] */ + { 3155, 0x9E3779B1U, 0x22C16BCBU }, /* XSUM_XXH32_testdata[6311] */ + { 3156, 0x00000000U, 0xB496ED4FU }, /* XSUM_XXH32_testdata[6312] */ + { 3156, 0x9E3779B1U, 0x419F8EE7U }, /* XSUM_XXH32_testdata[6313] */ + { 3157, 0x00000000U, 0x611F6C8CU }, /* XSUM_XXH32_testdata[6314] */ + { 3157, 0x9E3779B1U, 0x5C7EF2CAU }, /* XSUM_XXH32_testdata[6315] */ + { 3158, 0x00000000U, 0xB9CA36BCU }, /* XSUM_XXH32_testdata[6316] */ + { 3158, 0x9E3779B1U, 0xD95D24EEU }, /* XSUM_XXH32_testdata[6317] */ + { 3159, 0x00000000U, 0xC94B8371U }, /* XSUM_XXH32_testdata[6318] */ + { 3159, 0x9E3779B1U, 0x532BD4BCU }, /* XSUM_XXH32_testdata[6319] */ + { 3160, 0x00000000U, 0x0713B8A6U }, /* XSUM_XXH32_testdata[6320] */ + { 3160, 0x9E3779B1U, 0xE2490945U }, /* XSUM_XXH32_testdata[6321] */ + { 3161, 0x00000000U, 0x14E2DDAEU }, /* XSUM_XXH32_testdata[6322] */ + { 3161, 0x9E3779B1U, 0x877A32C8U }, /* XSUM_XXH32_testdata[6323] */ + { 3162, 0x00000000U, 0x7EEC98C5U }, /* XSUM_XXH32_testdata[6324] */ + { 3162, 0x9E3779B1U, 0xEF999B5CU }, /* XSUM_XXH32_testdata[6325] */ + { 3163, 0x00000000U, 0xD21604D0U }, /* XSUM_XXH32_testdata[6326] */ + { 3163, 0x9E3779B1U, 0x192C3A4EU }, /* XSUM_XXH32_testdata[6327] */ + { 3164, 0x00000000U, 0x5C9A13EFU }, /* XSUM_XXH32_testdata[6328] */ + { 3164, 0x9E3779B1U, 0x40AF4518U }, /* XSUM_XXH32_testdata[6329] */ + { 3165, 0x00000000U, 0xC5088103U }, /* XSUM_XXH32_testdata[6330] */ + { 3165, 0x9E3779B1U, 0xC613F458U }, /* XSUM_XXH32_testdata[6331] */ + { 3166, 0x00000000U, 0x0D89262FU }, /* XSUM_XXH32_testdata[6332] */ + { 3166, 0x9E3779B1U, 0x313ED00CU }, /* XSUM_XXH32_testdata[6333] */ + { 3167, 0x00000000U, 0x965FEE6BU }, /* XSUM_XXH32_testdata[6334] */ + { 3167, 0x9E3779B1U, 0x53FD0764U }, /* XSUM_XXH32_testdata[6335] */ + { 3168, 0x00000000U, 0x09D04E0FU }, /* XSUM_XXH32_testdata[6336] */ + { 3168, 0x9E3779B1U, 0xB4378BE3U }, /* XSUM_XXH32_testdata[6337] */ + { 3169, 0x00000000U, 0xAE61180AU }, /* XSUM_XXH32_testdata[6338] */ + { 3169, 0x9E3779B1U, 0x330D2027U }, /* XSUM_XXH32_testdata[6339] */ + { 3170, 0x00000000U, 0x115A2C00U }, /* XSUM_XXH32_testdata[6340] */ + { 3170, 0x9E3779B1U, 0x5DB53F41U }, /* XSUM_XXH32_testdata[6341] */ + { 3171, 0x00000000U, 0xF96AE1B0U }, /* XSUM_XXH32_testdata[6342] */ + { 3171, 0x9E3779B1U, 0xE269BB5CU }, /* XSUM_XXH32_testdata[6343] */ + { 3172, 0x00000000U, 0xFB374AAFU }, /* XSUM_XXH32_testdata[6344] */ + { 3172, 0x9E3779B1U, 0xD5DFB27EU }, /* XSUM_XXH32_testdata[6345] */ + { 3173, 0x00000000U, 0x212415C0U }, /* XSUM_XXH32_testdata[6346] */ + { 3173, 0x9E3779B1U, 0xFB23A2BEU }, /* XSUM_XXH32_testdata[6347] */ + { 3174, 0x00000000U, 0x0FF88F21U }, /* XSUM_XXH32_testdata[6348] */ + { 3174, 0x9E3779B1U, 0xAC6B2D0CU }, /* XSUM_XXH32_testdata[6349] */ + { 3175, 0x00000000U, 0x2B0AC506U }, /* XSUM_XXH32_testdata[6350] */ + { 3175, 0x9E3779B1U, 0xE2CD58E9U }, /* XSUM_XXH32_testdata[6351] */ + { 3176, 0x00000000U, 0x0E676CF2U }, /* XSUM_XXH32_testdata[6352] */ + { 3176, 0x9E3779B1U, 0x17B54D7EU }, /* XSUM_XXH32_testdata[6353] */ + { 3177, 0x00000000U, 0x62421C20U }, /* XSUM_XXH32_testdata[6354] */ + { 3177, 0x9E3779B1U, 0xB4D551BBU }, /* XSUM_XXH32_testdata[6355] */ + { 3178, 0x00000000U, 0x35816186U }, /* XSUM_XXH32_testdata[6356] */ + { 3178, 0x9E3779B1U, 0xB05D3C93U }, /* XSUM_XXH32_testdata[6357] */ + { 3179, 0x00000000U, 0x90EE14C0U }, /* XSUM_XXH32_testdata[6358] */ + { 3179, 0x9E3779B1U, 0x45D85FA8U }, /* XSUM_XXH32_testdata[6359] */ + { 3180, 0x00000000U, 0xC4ECE2CEU }, /* XSUM_XXH32_testdata[6360] */ + { 3180, 0x9E3779B1U, 0xA092A0F6U }, /* XSUM_XXH32_testdata[6361] */ + { 3181, 0x00000000U, 0x2155D5C7U }, /* XSUM_XXH32_testdata[6362] */ + { 3181, 0x9E3779B1U, 0xC55B2AEAU }, /* XSUM_XXH32_testdata[6363] */ + { 3182, 0x00000000U, 0x17639761U }, /* XSUM_XXH32_testdata[6364] */ + { 3182, 0x9E3779B1U, 0x529DF2B9U }, /* XSUM_XXH32_testdata[6365] */ + { 3183, 0x00000000U, 0x0BA30CB0U }, /* XSUM_XXH32_testdata[6366] */ + { 3183, 0x9E3779B1U, 0x18813F17U }, /* XSUM_XXH32_testdata[6367] */ + { 3184, 0x00000000U, 0xCC152381U }, /* XSUM_XXH32_testdata[6368] */ + { 3184, 0x9E3779B1U, 0xE548D846U }, /* XSUM_XXH32_testdata[6369] */ + { 3185, 0x00000000U, 0x8918EC23U }, /* XSUM_XXH32_testdata[6370] */ + { 3185, 0x9E3779B1U, 0xD118CA7DU }, /* XSUM_XXH32_testdata[6371] */ + { 3186, 0x00000000U, 0x40AF52E9U }, /* XSUM_XXH32_testdata[6372] */ + { 3186, 0x9E3779B1U, 0x6664BF7BU }, /* XSUM_XXH32_testdata[6373] */ + { 3187, 0x00000000U, 0x6ACE34EDU }, /* XSUM_XXH32_testdata[6374] */ + { 3187, 0x9E3779B1U, 0x57488E57U }, /* XSUM_XXH32_testdata[6375] */ + { 3188, 0x00000000U, 0xAD9D0E93U }, /* XSUM_XXH32_testdata[6376] */ + { 3188, 0x9E3779B1U, 0xA4560825U }, /* XSUM_XXH32_testdata[6377] */ + { 3189, 0x00000000U, 0xF5DEF529U }, /* XSUM_XXH32_testdata[6378] */ + { 3189, 0x9E3779B1U, 0xFCE7A71DU }, /* XSUM_XXH32_testdata[6379] */ + { 3190, 0x00000000U, 0x403D7389U }, /* XSUM_XXH32_testdata[6380] */ + { 3190, 0x9E3779B1U, 0xABDB9466U }, /* XSUM_XXH32_testdata[6381] */ + { 3191, 0x00000000U, 0xC3D5BFEBU }, /* XSUM_XXH32_testdata[6382] */ + { 3191, 0x9E3779B1U, 0x7904F565U }, /* XSUM_XXH32_testdata[6383] */ + { 3192, 0x00000000U, 0xCD931FA8U }, /* XSUM_XXH32_testdata[6384] */ + { 3192, 0x9E3779B1U, 0x45C5A5C4U }, /* XSUM_XXH32_testdata[6385] */ + { 3193, 0x00000000U, 0x756DB004U }, /* XSUM_XXH32_testdata[6386] */ + { 3193, 0x9E3779B1U, 0x53280EDEU }, /* XSUM_XXH32_testdata[6387] */ + { 3194, 0x00000000U, 0x106C7308U }, /* XSUM_XXH32_testdata[6388] */ + { 3194, 0x9E3779B1U, 0x93A20298U }, /* XSUM_XXH32_testdata[6389] */ + { 3195, 0x00000000U, 0x04E4CE1CU }, /* XSUM_XXH32_testdata[6390] */ + { 3195, 0x9E3779B1U, 0x6A2726FFU }, /* XSUM_XXH32_testdata[6391] */ + { 3196, 0x00000000U, 0x246BC429U }, /* XSUM_XXH32_testdata[6392] */ + { 3196, 0x9E3779B1U, 0xFFBAE096U }, /* XSUM_XXH32_testdata[6393] */ + { 3197, 0x00000000U, 0x8E3FDEE9U }, /* XSUM_XXH32_testdata[6394] */ + { 3197, 0x9E3779B1U, 0xE8B5A42EU }, /* XSUM_XXH32_testdata[6395] */ + { 3198, 0x00000000U, 0x6BD846A6U }, /* XSUM_XXH32_testdata[6396] */ + { 3198, 0x9E3779B1U, 0x7CEFF93FU }, /* XSUM_XXH32_testdata[6397] */ + { 3199, 0x00000000U, 0xC1B4CAFAU }, /* XSUM_XXH32_testdata[6398] */ + { 3199, 0x9E3779B1U, 0xD936CDCEU }, /* XSUM_XXH32_testdata[6399] */ + { 3200, 0x00000000U, 0xE0342D1DU }, /* XSUM_XXH32_testdata[6400] */ + { 3200, 0x9E3779B1U, 0xA5385573U }, /* XSUM_XXH32_testdata[6401] */ + { 3201, 0x00000000U, 0xF619D53CU }, /* XSUM_XXH32_testdata[6402] */ + { 3201, 0x9E3779B1U, 0xD3253FC8U }, /* XSUM_XXH32_testdata[6403] */ + { 3202, 0x00000000U, 0x19ADCC70U }, /* XSUM_XXH32_testdata[6404] */ + { 3202, 0x9E3779B1U, 0xF3ADCBF6U }, /* XSUM_XXH32_testdata[6405] */ + { 3203, 0x00000000U, 0x1DC16C5BU }, /* XSUM_XXH32_testdata[6406] */ + { 3203, 0x9E3779B1U, 0x5EA1E98FU }, /* XSUM_XXH32_testdata[6407] */ + { 3204, 0x00000000U, 0xC99E62DBU }, /* XSUM_XXH32_testdata[6408] */ + { 3204, 0x9E3779B1U, 0x16AA36C0U }, /* XSUM_XXH32_testdata[6409] */ + { 3205, 0x00000000U, 0x265E1D17U }, /* XSUM_XXH32_testdata[6410] */ + { 3205, 0x9E3779B1U, 0x94A4586DU }, /* XSUM_XXH32_testdata[6411] */ + { 3206, 0x00000000U, 0xCD877560U }, /* XSUM_XXH32_testdata[6412] */ + { 3206, 0x9E3779B1U, 0x0DA48480U }, /* XSUM_XXH32_testdata[6413] */ + { 3207, 0x00000000U, 0x00592DEFU }, /* XSUM_XXH32_testdata[6414] */ + { 3207, 0x9E3779B1U, 0x51CCAEDAU }, /* XSUM_XXH32_testdata[6415] */ + { 3208, 0x00000000U, 0x445C408FU }, /* XSUM_XXH32_testdata[6416] */ + { 3208, 0x9E3779B1U, 0x3856ADA4U }, /* XSUM_XXH32_testdata[6417] */ + { 3209, 0x00000000U, 0x9741E838U }, /* XSUM_XXH32_testdata[6418] */ + { 3209, 0x9E3779B1U, 0x1BDF26D8U }, /* XSUM_XXH32_testdata[6419] */ + { 3210, 0x00000000U, 0x1417F232U }, /* XSUM_XXH32_testdata[6420] */ + { 3210, 0x9E3779B1U, 0x62DD81B7U }, /* XSUM_XXH32_testdata[6421] */ + { 3211, 0x00000000U, 0x62DA5B7CU }, /* XSUM_XXH32_testdata[6422] */ + { 3211, 0x9E3779B1U, 0x5B196DA5U }, /* XSUM_XXH32_testdata[6423] */ + { 3212, 0x00000000U, 0x3B069509U }, /* XSUM_XXH32_testdata[6424] */ + { 3212, 0x9E3779B1U, 0x5B29F17AU }, /* XSUM_XXH32_testdata[6425] */ + { 3213, 0x00000000U, 0xC5A43851U }, /* XSUM_XXH32_testdata[6426] */ + { 3213, 0x9E3779B1U, 0xB25ADC0EU }, /* XSUM_XXH32_testdata[6427] */ + { 3214, 0x00000000U, 0xCC590B5AU }, /* XSUM_XXH32_testdata[6428] */ + { 3214, 0x9E3779B1U, 0x007C1AD1U }, /* XSUM_XXH32_testdata[6429] */ + { 3215, 0x00000000U, 0xA8607CE5U }, /* XSUM_XXH32_testdata[6430] */ + { 3215, 0x9E3779B1U, 0xA573BD8CU }, /* XSUM_XXH32_testdata[6431] */ + { 3216, 0x00000000U, 0x42F28507U }, /* XSUM_XXH32_testdata[6432] */ + { 3216, 0x9E3779B1U, 0x6D4E9010U }, /* XSUM_XXH32_testdata[6433] */ + { 3217, 0x00000000U, 0x839D5D2DU }, /* XSUM_XXH32_testdata[6434] */ + { 3217, 0x9E3779B1U, 0x574C747CU }, /* XSUM_XXH32_testdata[6435] */ + { 3218, 0x00000000U, 0x1771DE8AU }, /* XSUM_XXH32_testdata[6436] */ + { 3218, 0x9E3779B1U, 0x93F7D225U }, /* XSUM_XXH32_testdata[6437] */ + { 3219, 0x00000000U, 0x95534138U }, /* XSUM_XXH32_testdata[6438] */ + { 3219, 0x9E3779B1U, 0x102DBB95U }, /* XSUM_XXH32_testdata[6439] */ + { 3220, 0x00000000U, 0x05ABC536U }, /* XSUM_XXH32_testdata[6440] */ + { 3220, 0x9E3779B1U, 0xD753739BU }, /* XSUM_XXH32_testdata[6441] */ + { 3221, 0x00000000U, 0xEE982049U }, /* XSUM_XXH32_testdata[6442] */ + { 3221, 0x9E3779B1U, 0x959F3AA2U }, /* XSUM_XXH32_testdata[6443] */ + { 3222, 0x00000000U, 0x73868AFFU }, /* XSUM_XXH32_testdata[6444] */ + { 3222, 0x9E3779B1U, 0xAC70F02EU }, /* XSUM_XXH32_testdata[6445] */ + { 3223, 0x00000000U, 0xF75C05ECU }, /* XSUM_XXH32_testdata[6446] */ + { 3223, 0x9E3779B1U, 0x99CAF52FU }, /* XSUM_XXH32_testdata[6447] */ + { 3224, 0x00000000U, 0xBC3692D0U }, /* XSUM_XXH32_testdata[6448] */ + { 3224, 0x9E3779B1U, 0x81AC3805U }, /* XSUM_XXH32_testdata[6449] */ + { 3225, 0x00000000U, 0x680E5B4DU }, /* XSUM_XXH32_testdata[6450] */ + { 3225, 0x9E3779B1U, 0x4B1EF946U }, /* XSUM_XXH32_testdata[6451] */ + { 3226, 0x00000000U, 0x019B60A0U }, /* XSUM_XXH32_testdata[6452] */ + { 3226, 0x9E3779B1U, 0x2937E9F3U }, /* XSUM_XXH32_testdata[6453] */ + { 3227, 0x00000000U, 0x2F301897U }, /* XSUM_XXH32_testdata[6454] */ + { 3227, 0x9E3779B1U, 0x6185A47AU }, /* XSUM_XXH32_testdata[6455] */ + { 3228, 0x00000000U, 0xA7869CF4U }, /* XSUM_XXH32_testdata[6456] */ + { 3228, 0x9E3779B1U, 0x609D5F20U }, /* XSUM_XXH32_testdata[6457] */ + { 3229, 0x00000000U, 0x8819EF16U }, /* XSUM_XXH32_testdata[6458] */ + { 3229, 0x9E3779B1U, 0x6D4AA29DU }, /* XSUM_XXH32_testdata[6459] */ + { 3230, 0x00000000U, 0x06F31D35U }, /* XSUM_XXH32_testdata[6460] */ + { 3230, 0x9E3779B1U, 0x05DBEF3FU }, /* XSUM_XXH32_testdata[6461] */ + { 3231, 0x00000000U, 0x741E61C3U }, /* XSUM_XXH32_testdata[6462] */ + { 3231, 0x9E3779B1U, 0x4A0AD26DU }, /* XSUM_XXH32_testdata[6463] */ + { 3232, 0x00000000U, 0x856224CDU }, /* XSUM_XXH32_testdata[6464] */ + { 3232, 0x9E3779B1U, 0x972BF207U }, /* XSUM_XXH32_testdata[6465] */ + { 3233, 0x00000000U, 0xCA67A7CCU }, /* XSUM_XXH32_testdata[6466] */ + { 3233, 0x9E3779B1U, 0xB910A3C8U }, /* XSUM_XXH32_testdata[6467] */ + { 3234, 0x00000000U, 0x655C5B3AU }, /* XSUM_XXH32_testdata[6468] */ + { 3234, 0x9E3779B1U, 0x6FE6356AU }, /* XSUM_XXH32_testdata[6469] */ + { 3235, 0x00000000U, 0x25B00DDAU }, /* XSUM_XXH32_testdata[6470] */ + { 3235, 0x9E3779B1U, 0x2C7197EBU }, /* XSUM_XXH32_testdata[6471] */ + { 3236, 0x00000000U, 0x4AD29ACBU }, /* XSUM_XXH32_testdata[6472] */ + { 3236, 0x9E3779B1U, 0x111614C2U }, /* XSUM_XXH32_testdata[6473] */ + { 3237, 0x00000000U, 0x1AA35D49U }, /* XSUM_XXH32_testdata[6474] */ + { 3237, 0x9E3779B1U, 0x41BC4F23U }, /* XSUM_XXH32_testdata[6475] */ + { 3238, 0x00000000U, 0xF7B66E12U }, /* XSUM_XXH32_testdata[6476] */ + { 3238, 0x9E3779B1U, 0x0B48F6B8U }, /* XSUM_XXH32_testdata[6477] */ + { 3239, 0x00000000U, 0x204E3726U }, /* XSUM_XXH32_testdata[6478] */ + { 3239, 0x9E3779B1U, 0x18E915A1U }, /* XSUM_XXH32_testdata[6479] */ + { 3240, 0x00000000U, 0x95E7D6EAU }, /* XSUM_XXH32_testdata[6480] */ + { 3240, 0x9E3779B1U, 0x6E612374U }, /* XSUM_XXH32_testdata[6481] */ + { 3241, 0x00000000U, 0x61754B6BU }, /* XSUM_XXH32_testdata[6482] */ + { 3241, 0x9E3779B1U, 0xB623D164U }, /* XSUM_XXH32_testdata[6483] */ + { 3242, 0x00000000U, 0x085B90DBU }, /* XSUM_XXH32_testdata[6484] */ + { 3242, 0x9E3779B1U, 0x6331B57BU }, /* XSUM_XXH32_testdata[6485] */ + { 3243, 0x00000000U, 0x476C0FFFU }, /* XSUM_XXH32_testdata[6486] */ + { 3243, 0x9E3779B1U, 0xE28C1525U }, /* XSUM_XXH32_testdata[6487] */ + { 3244, 0x00000000U, 0x8D803DB5U }, /* XSUM_XXH32_testdata[6488] */ + { 3244, 0x9E3779B1U, 0x3199AB10U }, /* XSUM_XXH32_testdata[6489] */ + { 3245, 0x00000000U, 0xF488DA7FU }, /* XSUM_XXH32_testdata[6490] */ + { 3245, 0x9E3779B1U, 0x5F7DA49EU }, /* XSUM_XXH32_testdata[6491] */ + { 3246, 0x00000000U, 0x8812A715U }, /* XSUM_XXH32_testdata[6492] */ + { 3246, 0x9E3779B1U, 0x917B42E4U }, /* XSUM_XXH32_testdata[6493] */ + { 3247, 0x00000000U, 0x5F4C12EEU }, /* XSUM_XXH32_testdata[6494] */ + { 3247, 0x9E3779B1U, 0x35A623D9U }, /* XSUM_XXH32_testdata[6495] */ + { 3248, 0x00000000U, 0x600E82ADU }, /* XSUM_XXH32_testdata[6496] */ + { 3248, 0x9E3779B1U, 0x8AD5A40BU }, /* XSUM_XXH32_testdata[6497] */ + { 3249, 0x00000000U, 0x23BE9DCBU }, /* XSUM_XXH32_testdata[6498] */ + { 3249, 0x9E3779B1U, 0x3491D915U }, /* XSUM_XXH32_testdata[6499] */ + { 3250, 0x00000000U, 0x4CAD4682U }, /* XSUM_XXH32_testdata[6500] */ + { 3250, 0x9E3779B1U, 0x6FE0CEC1U }, /* XSUM_XXH32_testdata[6501] */ + { 3251, 0x00000000U, 0xD1E7C008U }, /* XSUM_XXH32_testdata[6502] */ + { 3251, 0x9E3779B1U, 0x5DBE5109U }, /* XSUM_XXH32_testdata[6503] */ + { 3252, 0x00000000U, 0x3013DBCFU }, /* XSUM_XXH32_testdata[6504] */ + { 3252, 0x9E3779B1U, 0x11640895U }, /* XSUM_XXH32_testdata[6505] */ + { 3253, 0x00000000U, 0x386A63A5U }, /* XSUM_XXH32_testdata[6506] */ + { 3253, 0x9E3779B1U, 0x4473A915U }, /* XSUM_XXH32_testdata[6507] */ + { 3254, 0x00000000U, 0x10BDF5D0U }, /* XSUM_XXH32_testdata[6508] */ + { 3254, 0x9E3779B1U, 0x182894D9U }, /* XSUM_XXH32_testdata[6509] */ + { 3255, 0x00000000U, 0xC6E614F4U }, /* XSUM_XXH32_testdata[6510] */ + { 3255, 0x9E3779B1U, 0x91906BF1U }, /* XSUM_XXH32_testdata[6511] */ + { 3256, 0x00000000U, 0xB93BC1D1U }, /* XSUM_XXH32_testdata[6512] */ + { 3256, 0x9E3779B1U, 0xC22C454FU }, /* XSUM_XXH32_testdata[6513] */ + { 3257, 0x00000000U, 0xAA6B81D5U }, /* XSUM_XXH32_testdata[6514] */ + { 3257, 0x9E3779B1U, 0xFEC51FE4U }, /* XSUM_XXH32_testdata[6515] */ + { 3258, 0x00000000U, 0xC0126AEDU }, /* XSUM_XXH32_testdata[6516] */ + { 3258, 0x9E3779B1U, 0xBA3A1845U }, /* XSUM_XXH32_testdata[6517] */ + { 3259, 0x00000000U, 0x3EC9BC82U }, /* XSUM_XXH32_testdata[6518] */ + { 3259, 0x9E3779B1U, 0xEBB0C4A6U }, /* XSUM_XXH32_testdata[6519] */ + { 3260, 0x00000000U, 0xC6858062U }, /* XSUM_XXH32_testdata[6520] */ + { 3260, 0x9E3779B1U, 0x40FA8953U }, /* XSUM_XXH32_testdata[6521] */ + { 3261, 0x00000000U, 0xC6774D9FU }, /* XSUM_XXH32_testdata[6522] */ + { 3261, 0x9E3779B1U, 0x3DDF5844U }, /* XSUM_XXH32_testdata[6523] */ + { 3262, 0x00000000U, 0x2C0441B5U }, /* XSUM_XXH32_testdata[6524] */ + { 3262, 0x9E3779B1U, 0x27F83A50U }, /* XSUM_XXH32_testdata[6525] */ + { 3263, 0x00000000U, 0xFAE26B64U }, /* XSUM_XXH32_testdata[6526] */ + { 3263, 0x9E3779B1U, 0x54963B15U }, /* XSUM_XXH32_testdata[6527] */ + { 3264, 0x00000000U, 0x8E95005CU }, /* XSUM_XXH32_testdata[6528] */ + { 3264, 0x9E3779B1U, 0x40337F85U }, /* XSUM_XXH32_testdata[6529] */ + { 3265, 0x00000000U, 0x93AFC1C9U }, /* XSUM_XXH32_testdata[6530] */ + { 3265, 0x9E3779B1U, 0x19F2A63CU }, /* XSUM_XXH32_testdata[6531] */ + { 3266, 0x00000000U, 0x484E3BF5U }, /* XSUM_XXH32_testdata[6532] */ + { 3266, 0x9E3779B1U, 0x4EDD46CAU }, /* XSUM_XXH32_testdata[6533] */ + { 3267, 0x00000000U, 0x35B83394U }, /* XSUM_XXH32_testdata[6534] */ + { 3267, 0x9E3779B1U, 0x3052221CU }, /* XSUM_XXH32_testdata[6535] */ + { 3268, 0x00000000U, 0x1F2BECC8U }, /* XSUM_XXH32_testdata[6536] */ + { 3268, 0x9E3779B1U, 0xD01AD33CU }, /* XSUM_XXH32_testdata[6537] */ + { 3269, 0x00000000U, 0xD99E9DB5U }, /* XSUM_XXH32_testdata[6538] */ + { 3269, 0x9E3779B1U, 0xD988BDD6U }, /* XSUM_XXH32_testdata[6539] */ + { 3270, 0x00000000U, 0x64E5A176U }, /* XSUM_XXH32_testdata[6540] */ + { 3270, 0x9E3779B1U, 0x6514AB22U }, /* XSUM_XXH32_testdata[6541] */ + { 3271, 0x00000000U, 0x8ECB2A37U }, /* XSUM_XXH32_testdata[6542] */ + { 3271, 0x9E3779B1U, 0x5EB59754U }, /* XSUM_XXH32_testdata[6543] */ + { 3272, 0x00000000U, 0x001A88FDU }, /* XSUM_XXH32_testdata[6544] */ + { 3272, 0x9E3779B1U, 0x6C99D017U }, /* XSUM_XXH32_testdata[6545] */ + { 3273, 0x00000000U, 0x70C5F135U }, /* XSUM_XXH32_testdata[6546] */ + { 3273, 0x9E3779B1U, 0xB93B796DU }, /* XSUM_XXH32_testdata[6547] */ + { 3274, 0x00000000U, 0x3E8BE3C1U }, /* XSUM_XXH32_testdata[6548] */ + { 3274, 0x9E3779B1U, 0xEA03C59EU }, /* XSUM_XXH32_testdata[6549] */ + { 3275, 0x00000000U, 0x999E80DDU }, /* XSUM_XXH32_testdata[6550] */ + { 3275, 0x9E3779B1U, 0xD7876DEDU }, /* XSUM_XXH32_testdata[6551] */ + { 3276, 0x00000000U, 0x4A617B84U }, /* XSUM_XXH32_testdata[6552] */ + { 3276, 0x9E3779B1U, 0x0E09E1B4U }, /* XSUM_XXH32_testdata[6553] */ + { 3277, 0x00000000U, 0xFA0B3567U }, /* XSUM_XXH32_testdata[6554] */ + { 3277, 0x9E3779B1U, 0x030A9FBFU }, /* XSUM_XXH32_testdata[6555] */ + { 3278, 0x00000000U, 0x6D9D94ABU }, /* XSUM_XXH32_testdata[6556] */ + { 3278, 0x9E3779B1U, 0x05520D91U }, /* XSUM_XXH32_testdata[6557] */ + { 3279, 0x00000000U, 0x75D64587U }, /* XSUM_XXH32_testdata[6558] */ + { 3279, 0x9E3779B1U, 0xA4C1FBC4U }, /* XSUM_XXH32_testdata[6559] */ + { 3280, 0x00000000U, 0xF2CBB41AU }, /* XSUM_XXH32_testdata[6560] */ + { 3280, 0x9E3779B1U, 0x4CF0113FU }, /* XSUM_XXH32_testdata[6561] */ + { 3281, 0x00000000U, 0x7E6C071AU }, /* XSUM_XXH32_testdata[6562] */ + { 3281, 0x9E3779B1U, 0x79C7392CU }, /* XSUM_XXH32_testdata[6563] */ + { 3282, 0x00000000U, 0xDF2161B2U }, /* XSUM_XXH32_testdata[6564] */ + { 3282, 0x9E3779B1U, 0x7073AE35U }, /* XSUM_XXH32_testdata[6565] */ + { 3283, 0x00000000U, 0xF5BF713CU }, /* XSUM_XXH32_testdata[6566] */ + { 3283, 0x9E3779B1U, 0x07DF0FB4U }, /* XSUM_XXH32_testdata[6567] */ + { 3284, 0x00000000U, 0xD36272D0U }, /* XSUM_XXH32_testdata[6568] */ + { 3284, 0x9E3779B1U, 0xD2286D32U }, /* XSUM_XXH32_testdata[6569] */ + { 3285, 0x00000000U, 0x6C541941U }, /* XSUM_XXH32_testdata[6570] */ + { 3285, 0x9E3779B1U, 0xBF65CACCU }, /* XSUM_XXH32_testdata[6571] */ + { 3286, 0x00000000U, 0xB0358C54U }, /* XSUM_XXH32_testdata[6572] */ + { 3286, 0x9E3779B1U, 0x4497AC3BU }, /* XSUM_XXH32_testdata[6573] */ + { 3287, 0x00000000U, 0xDA8C13B8U }, /* XSUM_XXH32_testdata[6574] */ + { 3287, 0x9E3779B1U, 0x960CA993U }, /* XSUM_XXH32_testdata[6575] */ + { 3288, 0x00000000U, 0xCEB2AEB0U }, /* XSUM_XXH32_testdata[6576] */ + { 3288, 0x9E3779B1U, 0x2B3C60E8U }, /* XSUM_XXH32_testdata[6577] */ + { 3289, 0x00000000U, 0xE03FA93BU }, /* XSUM_XXH32_testdata[6578] */ + { 3289, 0x9E3779B1U, 0x87D22071U }, /* XSUM_XXH32_testdata[6579] */ + { 3290, 0x00000000U, 0xFA43B184U }, /* XSUM_XXH32_testdata[6580] */ + { 3290, 0x9E3779B1U, 0x6CC7A70BU }, /* XSUM_XXH32_testdata[6581] */ + { 3291, 0x00000000U, 0x6BB4FA54U }, /* XSUM_XXH32_testdata[6582] */ + { 3291, 0x9E3779B1U, 0xE8F1671CU }, /* XSUM_XXH32_testdata[6583] */ + { 3292, 0x00000000U, 0x5318921EU }, /* XSUM_XXH32_testdata[6584] */ + { 3292, 0x9E3779B1U, 0xB317068AU }, /* XSUM_XXH32_testdata[6585] */ + { 3293, 0x00000000U, 0x107B4E00U }, /* XSUM_XXH32_testdata[6586] */ + { 3293, 0x9E3779B1U, 0x7CB5ECC2U }, /* XSUM_XXH32_testdata[6587] */ + { 3294, 0x00000000U, 0xFC4B0B17U }, /* XSUM_XXH32_testdata[6588] */ + { 3294, 0x9E3779B1U, 0x4B3BE6A4U }, /* XSUM_XXH32_testdata[6589] */ + { 3295, 0x00000000U, 0x07F8C4D0U }, /* XSUM_XXH32_testdata[6590] */ + { 3295, 0x9E3779B1U, 0x73F62641U }, /* XSUM_XXH32_testdata[6591] */ + { 3296, 0x00000000U, 0x0FEEE0A8U }, /* XSUM_XXH32_testdata[6592] */ + { 3296, 0x9E3779B1U, 0x3FA23F94U }, /* XSUM_XXH32_testdata[6593] */ + { 3297, 0x00000000U, 0x7D4C4277U }, /* XSUM_XXH32_testdata[6594] */ + { 3297, 0x9E3779B1U, 0x23C17F37U }, /* XSUM_XXH32_testdata[6595] */ + { 3298, 0x00000000U, 0xE11F6DC7U }, /* XSUM_XXH32_testdata[6596] */ + { 3298, 0x9E3779B1U, 0x7D7B875DU }, /* XSUM_XXH32_testdata[6597] */ + { 3299, 0x00000000U, 0xB9D1CC35U }, /* XSUM_XXH32_testdata[6598] */ + { 3299, 0x9E3779B1U, 0x8A36EC90U }, /* XSUM_XXH32_testdata[6599] */ + { 3300, 0x00000000U, 0x83ED4387U }, /* XSUM_XXH32_testdata[6600] */ + { 3300, 0x9E3779B1U, 0x66BEE4E5U }, /* XSUM_XXH32_testdata[6601] */ + { 3301, 0x00000000U, 0xB98D4538U }, /* XSUM_XXH32_testdata[6602] */ + { 3301, 0x9E3779B1U, 0x7A1A984BU }, /* XSUM_XXH32_testdata[6603] */ + { 3302, 0x00000000U, 0xBD40F729U }, /* XSUM_XXH32_testdata[6604] */ + { 3302, 0x9E3779B1U, 0x3363FB98U }, /* XSUM_XXH32_testdata[6605] */ + { 3303, 0x00000000U, 0xD0A01436U }, /* XSUM_XXH32_testdata[6606] */ + { 3303, 0x9E3779B1U, 0x1D8FCD96U }, /* XSUM_XXH32_testdata[6607] */ + { 3304, 0x00000000U, 0xEB9230FFU }, /* XSUM_XXH32_testdata[6608] */ + { 3304, 0x9E3779B1U, 0x3D3098D7U }, /* XSUM_XXH32_testdata[6609] */ + { 3305, 0x00000000U, 0x913C866BU }, /* XSUM_XXH32_testdata[6610] */ + { 3305, 0x9E3779B1U, 0x3C6393A2U }, /* XSUM_XXH32_testdata[6611] */ + { 3306, 0x00000000U, 0x744F4934U }, /* XSUM_XXH32_testdata[6612] */ + { 3306, 0x9E3779B1U, 0x813925DBU }, /* XSUM_XXH32_testdata[6613] */ + { 3307, 0x00000000U, 0x48B5E911U }, /* XSUM_XXH32_testdata[6614] */ + { 3307, 0x9E3779B1U, 0xFB0FC1A8U }, /* XSUM_XXH32_testdata[6615] */ + { 3308, 0x00000000U, 0xD3EB7DEDU }, /* XSUM_XXH32_testdata[6616] */ + { 3308, 0x9E3779B1U, 0xECC64AAFU }, /* XSUM_XXH32_testdata[6617] */ + { 3309, 0x00000000U, 0x2BC20FB7U }, /* XSUM_XXH32_testdata[6618] */ + { 3309, 0x9E3779B1U, 0x5F771BB7U }, /* XSUM_XXH32_testdata[6619] */ + { 3310, 0x00000000U, 0x8AF8E44CU }, /* XSUM_XXH32_testdata[6620] */ + { 3310, 0x9E3779B1U, 0xF5F8505FU }, /* XSUM_XXH32_testdata[6621] */ + { 3311, 0x00000000U, 0xD4D67552U }, /* XSUM_XXH32_testdata[6622] */ + { 3311, 0x9E3779B1U, 0x7CF9D505U }, /* XSUM_XXH32_testdata[6623] */ + { 3312, 0x00000000U, 0x94241D0BU }, /* XSUM_XXH32_testdata[6624] */ + { 3312, 0x9E3779B1U, 0x32E2A2D5U }, /* XSUM_XXH32_testdata[6625] */ + { 3313, 0x00000000U, 0x1D813A73U }, /* XSUM_XXH32_testdata[6626] */ + { 3313, 0x9E3779B1U, 0xA5091361U }, /* XSUM_XXH32_testdata[6627] */ + { 3314, 0x00000000U, 0xAB534D10U }, /* XSUM_XXH32_testdata[6628] */ + { 3314, 0x9E3779B1U, 0x60E473FEU }, /* XSUM_XXH32_testdata[6629] */ + { 3315, 0x00000000U, 0xD5DECAF9U }, /* XSUM_XXH32_testdata[6630] */ + { 3315, 0x9E3779B1U, 0xE0F56CDCU }, /* XSUM_XXH32_testdata[6631] */ + { 3316, 0x00000000U, 0x82F968BCU }, /* XSUM_XXH32_testdata[6632] */ + { 3316, 0x9E3779B1U, 0xB1B5F75BU }, /* XSUM_XXH32_testdata[6633] */ + { 3317, 0x00000000U, 0x138AEFE4U }, /* XSUM_XXH32_testdata[6634] */ + { 3317, 0x9E3779B1U, 0xB255A6C2U }, /* XSUM_XXH32_testdata[6635] */ + { 3318, 0x00000000U, 0x69A181ADU }, /* XSUM_XXH32_testdata[6636] */ + { 3318, 0x9E3779B1U, 0x86B4EA3EU }, /* XSUM_XXH32_testdata[6637] */ + { 3319, 0x00000000U, 0xC8B3AE86U }, /* XSUM_XXH32_testdata[6638] */ + { 3319, 0x9E3779B1U, 0x965A64FEU }, /* XSUM_XXH32_testdata[6639] */ + { 3320, 0x00000000U, 0x29E2268CU }, /* XSUM_XXH32_testdata[6640] */ + { 3320, 0x9E3779B1U, 0x3EAE6CA9U }, /* XSUM_XXH32_testdata[6641] */ + { 3321, 0x00000000U, 0x0EF824EAU }, /* XSUM_XXH32_testdata[6642] */ + { 3321, 0x9E3779B1U, 0x1C77FCB9U }, /* XSUM_XXH32_testdata[6643] */ + { 3322, 0x00000000U, 0x853ECF62U }, /* XSUM_XXH32_testdata[6644] */ + { 3322, 0x9E3779B1U, 0xE09A7953U }, /* XSUM_XXH32_testdata[6645] */ + { 3323, 0x00000000U, 0x0806AC59U }, /* XSUM_XXH32_testdata[6646] */ + { 3323, 0x9E3779B1U, 0x7F63946CU }, /* XSUM_XXH32_testdata[6647] */ + { 3324, 0x00000000U, 0x70BA2499U }, /* XSUM_XXH32_testdata[6648] */ + { 3324, 0x9E3779B1U, 0x967776BEU }, /* XSUM_XXH32_testdata[6649] */ + { 3325, 0x00000000U, 0x05AA012BU }, /* XSUM_XXH32_testdata[6650] */ + { 3325, 0x9E3779B1U, 0xF44D90EBU }, /* XSUM_XXH32_testdata[6651] */ + { 3326, 0x00000000U, 0xC7B69097U }, /* XSUM_XXH32_testdata[6652] */ + { 3326, 0x9E3779B1U, 0x15A5DA45U }, /* XSUM_XXH32_testdata[6653] */ + { 3327, 0x00000000U, 0xA3DC485CU }, /* XSUM_XXH32_testdata[6654] */ + { 3327, 0x9E3779B1U, 0x1E4EFCA3U }, /* XSUM_XXH32_testdata[6655] */ + { 3328, 0x00000000U, 0xE31EFB4AU }, /* XSUM_XXH32_testdata[6656] */ + { 3328, 0x9E3779B1U, 0x719157B7U }, /* XSUM_XXH32_testdata[6657] */ + { 3329, 0x00000000U, 0x536C88A7U }, /* XSUM_XXH32_testdata[6658] */ + { 3329, 0x9E3779B1U, 0x16356812U }, /* XSUM_XXH32_testdata[6659] */ + { 3330, 0x00000000U, 0x4D8830E4U }, /* XSUM_XXH32_testdata[6660] */ + { 3330, 0x9E3779B1U, 0x356D307FU }, /* XSUM_XXH32_testdata[6661] */ + { 3331, 0x00000000U, 0x123A0463U }, /* XSUM_XXH32_testdata[6662] */ + { 3331, 0x9E3779B1U, 0x0F92401CU }, /* XSUM_XXH32_testdata[6663] */ + { 3332, 0x00000000U, 0xBA475FC1U }, /* XSUM_XXH32_testdata[6664] */ + { 3332, 0x9E3779B1U, 0x042517BEU }, /* XSUM_XXH32_testdata[6665] */ + { 3333, 0x00000000U, 0xD309F04AU }, /* XSUM_XXH32_testdata[6666] */ + { 3333, 0x9E3779B1U, 0xA865254DU }, /* XSUM_XXH32_testdata[6667] */ + { 3334, 0x00000000U, 0xA2709322U }, /* XSUM_XXH32_testdata[6668] */ + { 3334, 0x9E3779B1U, 0xD639FD0BU }, /* XSUM_XXH32_testdata[6669] */ + { 3335, 0x00000000U, 0xC64579F6U }, /* XSUM_XXH32_testdata[6670] */ + { 3335, 0x9E3779B1U, 0x5BF001CFU }, /* XSUM_XXH32_testdata[6671] */ + { 3336, 0x00000000U, 0x8F5936F7U }, /* XSUM_XXH32_testdata[6672] */ + { 3336, 0x9E3779B1U, 0x3C764EEBU }, /* XSUM_XXH32_testdata[6673] */ + { 3337, 0x00000000U, 0xEABCB66DU }, /* XSUM_XXH32_testdata[6674] */ + { 3337, 0x9E3779B1U, 0x14777341U }, /* XSUM_XXH32_testdata[6675] */ + { 3338, 0x00000000U, 0xBBCC4AF6U }, /* XSUM_XXH32_testdata[6676] */ + { 3338, 0x9E3779B1U, 0x1104C65CU }, /* XSUM_XXH32_testdata[6677] */ + { 3339, 0x00000000U, 0x51321A17U }, /* XSUM_XXH32_testdata[6678] */ + { 3339, 0x9E3779B1U, 0x1959B657U }, /* XSUM_XXH32_testdata[6679] */ + { 3340, 0x00000000U, 0x5B5DBB59U }, /* XSUM_XXH32_testdata[6680] */ + { 3340, 0x9E3779B1U, 0x9842D89BU }, /* XSUM_XXH32_testdata[6681] */ + { 3341, 0x00000000U, 0xF1E4FCEDU }, /* XSUM_XXH32_testdata[6682] */ + { 3341, 0x9E3779B1U, 0x049D82FCU }, /* XSUM_XXH32_testdata[6683] */ + { 3342, 0x00000000U, 0xA0B75023U }, /* XSUM_XXH32_testdata[6684] */ + { 3342, 0x9E3779B1U, 0xB1B92726U }, /* XSUM_XXH32_testdata[6685] */ + { 3343, 0x00000000U, 0xCB46965FU }, /* XSUM_XXH32_testdata[6686] */ + { 3343, 0x9E3779B1U, 0x6BDD191BU }, /* XSUM_XXH32_testdata[6687] */ + { 3344, 0x00000000U, 0x8413E631U }, /* XSUM_XXH32_testdata[6688] */ + { 3344, 0x9E3779B1U, 0xCB34899EU }, /* XSUM_XXH32_testdata[6689] */ + { 3345, 0x00000000U, 0x5379CDACU }, /* XSUM_XXH32_testdata[6690] */ + { 3345, 0x9E3779B1U, 0x7F70593DU }, /* XSUM_XXH32_testdata[6691] */ + { 3346, 0x00000000U, 0xCCBBACCBU }, /* XSUM_XXH32_testdata[6692] */ + { 3346, 0x9E3779B1U, 0x486EE3C0U }, /* XSUM_XXH32_testdata[6693] */ + { 3347, 0x00000000U, 0x7FB8DF71U }, /* XSUM_XXH32_testdata[6694] */ + { 3347, 0x9E3779B1U, 0xEFA5EFBCU }, /* XSUM_XXH32_testdata[6695] */ + { 3348, 0x00000000U, 0x9028FC89U }, /* XSUM_XXH32_testdata[6696] */ + { 3348, 0x9E3779B1U, 0x7897B1B9U }, /* XSUM_XXH32_testdata[6697] */ + { 3349, 0x00000000U, 0x110326ABU }, /* XSUM_XXH32_testdata[6698] */ + { 3349, 0x9E3779B1U, 0xE4650A9FU }, /* XSUM_XXH32_testdata[6699] */ + { 3350, 0x00000000U, 0x6A5F0854U }, /* XSUM_XXH32_testdata[6700] */ + { 3350, 0x9E3779B1U, 0x44BF80D6U }, /* XSUM_XXH32_testdata[6701] */ + { 3351, 0x00000000U, 0xB2F03EB8U }, /* XSUM_XXH32_testdata[6702] */ + { 3351, 0x9E3779B1U, 0xCE2152AFU }, /* XSUM_XXH32_testdata[6703] */ + { 3352, 0x00000000U, 0x4D09E75FU }, /* XSUM_XXH32_testdata[6704] */ + { 3352, 0x9E3779B1U, 0xE45FF7EBU }, /* XSUM_XXH32_testdata[6705] */ + { 3353, 0x00000000U, 0x6054DE76U }, /* XSUM_XXH32_testdata[6706] */ + { 3353, 0x9E3779B1U, 0xC14F850BU }, /* XSUM_XXH32_testdata[6707] */ + { 3354, 0x00000000U, 0x25E58B49U }, /* XSUM_XXH32_testdata[6708] */ + { 3354, 0x9E3779B1U, 0x8191EB72U }, /* XSUM_XXH32_testdata[6709] */ + { 3355, 0x00000000U, 0x03C78393U }, /* XSUM_XXH32_testdata[6710] */ + { 3355, 0x9E3779B1U, 0x739347B9U }, /* XSUM_XXH32_testdata[6711] */ + { 3356, 0x00000000U, 0xAA0B0CBCU }, /* XSUM_XXH32_testdata[6712] */ + { 3356, 0x9E3779B1U, 0x65B2F344U }, /* XSUM_XXH32_testdata[6713] */ + { 3357, 0x00000000U, 0x77D5CB0EU }, /* XSUM_XXH32_testdata[6714] */ + { 3357, 0x9E3779B1U, 0x8F5490AFU }, /* XSUM_XXH32_testdata[6715] */ + { 3358, 0x00000000U, 0x0936406FU }, /* XSUM_XXH32_testdata[6716] */ + { 3358, 0x9E3779B1U, 0x142DA509U }, /* XSUM_XXH32_testdata[6717] */ + { 3359, 0x00000000U, 0x769A4780U }, /* XSUM_XXH32_testdata[6718] */ + { 3359, 0x9E3779B1U, 0xA184030AU }, /* XSUM_XXH32_testdata[6719] */ + { 3360, 0x00000000U, 0xB5CDE27CU }, /* XSUM_XXH32_testdata[6720] */ + { 3360, 0x9E3779B1U, 0xD76A8C16U }, /* XSUM_XXH32_testdata[6721] */ + { 3361, 0x00000000U, 0x24C2738EU }, /* XSUM_XXH32_testdata[6722] */ + { 3361, 0x9E3779B1U, 0xEC04CFA7U }, /* XSUM_XXH32_testdata[6723] */ + { 3362, 0x00000000U, 0x25BDDA8FU }, /* XSUM_XXH32_testdata[6724] */ + { 3362, 0x9E3779B1U, 0x4E4D0E8EU }, /* XSUM_XXH32_testdata[6725] */ + { 3363, 0x00000000U, 0x808A12FDU }, /* XSUM_XXH32_testdata[6726] */ + { 3363, 0x9E3779B1U, 0x6DAF7733U }, /* XSUM_XXH32_testdata[6727] */ + { 3364, 0x00000000U, 0x5D69DFFCU }, /* XSUM_XXH32_testdata[6728] */ + { 3364, 0x9E3779B1U, 0xB4404515U }, /* XSUM_XXH32_testdata[6729] */ + { 3365, 0x00000000U, 0xD92A2946U }, /* XSUM_XXH32_testdata[6730] */ + { 3365, 0x9E3779B1U, 0xD0889582U }, /* XSUM_XXH32_testdata[6731] */ + { 3366, 0x00000000U, 0x9D147716U }, /* XSUM_XXH32_testdata[6732] */ + { 3366, 0x9E3779B1U, 0xD9326756U }, /* XSUM_XXH32_testdata[6733] */ + { 3367, 0x00000000U, 0x043BC86FU }, /* XSUM_XXH32_testdata[6734] */ + { 3367, 0x9E3779B1U, 0x00C2EC57U }, /* XSUM_XXH32_testdata[6735] */ + { 3368, 0x00000000U, 0xB2AA9F17U }, /* XSUM_XXH32_testdata[6736] */ + { 3368, 0x9E3779B1U, 0x7D8C4F0DU }, /* XSUM_XXH32_testdata[6737] */ + { 3369, 0x00000000U, 0xA020BC35U }, /* XSUM_XXH32_testdata[6738] */ + { 3369, 0x9E3779B1U, 0x60847A5AU }, /* XSUM_XXH32_testdata[6739] */ + { 3370, 0x00000000U, 0x7EE77BFFU }, /* XSUM_XXH32_testdata[6740] */ + { 3370, 0x9E3779B1U, 0xF6B3404CU }, /* XSUM_XXH32_testdata[6741] */ + { 3371, 0x00000000U, 0x97731867U }, /* XSUM_XXH32_testdata[6742] */ + { 3371, 0x9E3779B1U, 0xF945EBD4U }, /* XSUM_XXH32_testdata[6743] */ + { 3372, 0x00000000U, 0x5826C410U }, /* XSUM_XXH32_testdata[6744] */ + { 3372, 0x9E3779B1U, 0x5E0A2B89U }, /* XSUM_XXH32_testdata[6745] */ + { 3373, 0x00000000U, 0xAA457AE4U }, /* XSUM_XXH32_testdata[6746] */ + { 3373, 0x9E3779B1U, 0xA92F0D06U }, /* XSUM_XXH32_testdata[6747] */ + { 3374, 0x00000000U, 0x7D1F056DU }, /* XSUM_XXH32_testdata[6748] */ + { 3374, 0x9E3779B1U, 0xEC3252A8U }, /* XSUM_XXH32_testdata[6749] */ + { 3375, 0x00000000U, 0x6BEAD6CFU }, /* XSUM_XXH32_testdata[6750] */ + { 3375, 0x9E3779B1U, 0x9A6CC743U }, /* XSUM_XXH32_testdata[6751] */ + { 3376, 0x00000000U, 0x74F067ABU }, /* XSUM_XXH32_testdata[6752] */ + { 3376, 0x9E3779B1U, 0x2323210CU }, /* XSUM_XXH32_testdata[6753] */ + { 3377, 0x00000000U, 0xA73C775EU }, /* XSUM_XXH32_testdata[6754] */ + { 3377, 0x9E3779B1U, 0xCD94E18BU }, /* XSUM_XXH32_testdata[6755] */ + { 3378, 0x00000000U, 0x0C31FFBFU }, /* XSUM_XXH32_testdata[6756] */ + { 3378, 0x9E3779B1U, 0x102F6983U }, /* XSUM_XXH32_testdata[6757] */ + { 3379, 0x00000000U, 0xCC684E33U }, /* XSUM_XXH32_testdata[6758] */ + { 3379, 0x9E3779B1U, 0xE3E0B246U }, /* XSUM_XXH32_testdata[6759] */ + { 3380, 0x00000000U, 0xBEF5BA70U }, /* XSUM_XXH32_testdata[6760] */ + { 3380, 0x9E3779B1U, 0x0CA9BEF2U }, /* XSUM_XXH32_testdata[6761] */ + { 3381, 0x00000000U, 0x5156A4DBU }, /* XSUM_XXH32_testdata[6762] */ + { 3381, 0x9E3779B1U, 0x6ED7742BU }, /* XSUM_XXH32_testdata[6763] */ + { 3382, 0x00000000U, 0x2FCB35B0U }, /* XSUM_XXH32_testdata[6764] */ + { 3382, 0x9E3779B1U, 0x21972DBBU }, /* XSUM_XXH32_testdata[6765] */ + { 3383, 0x00000000U, 0x3C271778U }, /* XSUM_XXH32_testdata[6766] */ + { 3383, 0x9E3779B1U, 0xB6B2235AU }, /* XSUM_XXH32_testdata[6767] */ + { 3384, 0x00000000U, 0x2EC18C38U }, /* XSUM_XXH32_testdata[6768] */ + { 3384, 0x9E3779B1U, 0xA95A64ADU }, /* XSUM_XXH32_testdata[6769] */ + { 3385, 0x00000000U, 0xDE7DBE69U }, /* XSUM_XXH32_testdata[6770] */ + { 3385, 0x9E3779B1U, 0xC7035DE2U }, /* XSUM_XXH32_testdata[6771] */ + { 3386, 0x00000000U, 0x875AB117U }, /* XSUM_XXH32_testdata[6772] */ + { 3386, 0x9E3779B1U, 0x72CAC56FU }, /* XSUM_XXH32_testdata[6773] */ + { 3387, 0x00000000U, 0x3DE24FFFU }, /* XSUM_XXH32_testdata[6774] */ + { 3387, 0x9E3779B1U, 0x7E7E5AB6U }, /* XSUM_XXH32_testdata[6775] */ + { 3388, 0x00000000U, 0x9DC35FC1U }, /* XSUM_XXH32_testdata[6776] */ + { 3388, 0x9E3779B1U, 0x236146F2U }, /* XSUM_XXH32_testdata[6777] */ + { 3389, 0x00000000U, 0x766DCC65U }, /* XSUM_XXH32_testdata[6778] */ + { 3389, 0x9E3779B1U, 0x91D03786U }, /* XSUM_XXH32_testdata[6779] */ + { 3390, 0x00000000U, 0xE7EE8FE5U }, /* XSUM_XXH32_testdata[6780] */ + { 3390, 0x9E3779B1U, 0xB8BDF469U }, /* XSUM_XXH32_testdata[6781] */ + { 3391, 0x00000000U, 0x0283AC68U }, /* XSUM_XXH32_testdata[6782] */ + { 3391, 0x9E3779B1U, 0x305D6B75U }, /* XSUM_XXH32_testdata[6783] */ + { 3392, 0x00000000U, 0xAEB53FAAU }, /* XSUM_XXH32_testdata[6784] */ + { 3392, 0x9E3779B1U, 0x0AAC2941U }, /* XSUM_XXH32_testdata[6785] */ + { 3393, 0x00000000U, 0xFEEEA860U }, /* XSUM_XXH32_testdata[6786] */ + { 3393, 0x9E3779B1U, 0x4C0D5752U }, /* XSUM_XXH32_testdata[6787] */ + { 3394, 0x00000000U, 0x25472594U }, /* XSUM_XXH32_testdata[6788] */ + { 3394, 0x9E3779B1U, 0x04C78A34U }, /* XSUM_XXH32_testdata[6789] */ + { 3395, 0x00000000U, 0x5328D77BU }, /* XSUM_XXH32_testdata[6790] */ + { 3395, 0x9E3779B1U, 0x8F2F9AE5U }, /* XSUM_XXH32_testdata[6791] */ + { 3396, 0x00000000U, 0x5357180CU }, /* XSUM_XXH32_testdata[6792] */ + { 3396, 0x9E3779B1U, 0x0F498F93U }, /* XSUM_XXH32_testdata[6793] */ + { 3397, 0x00000000U, 0x9EDF44F8U }, /* XSUM_XXH32_testdata[6794] */ + { 3397, 0x9E3779B1U, 0xF33B41A9U }, /* XSUM_XXH32_testdata[6795] */ + { 3398, 0x00000000U, 0xEEC4FDA8U }, /* XSUM_XXH32_testdata[6796] */ + { 3398, 0x9E3779B1U, 0x790B3886U }, /* XSUM_XXH32_testdata[6797] */ + { 3399, 0x00000000U, 0x301F31D3U }, /* XSUM_XXH32_testdata[6798] */ + { 3399, 0x9E3779B1U, 0x27703E74U }, /* XSUM_XXH32_testdata[6799] */ + { 3400, 0x00000000U, 0x5BBDB3EDU }, /* XSUM_XXH32_testdata[6800] */ + { 3400, 0x9E3779B1U, 0xB12EAF07U }, /* XSUM_XXH32_testdata[6801] */ + { 3401, 0x00000000U, 0xA45AE1A2U }, /* XSUM_XXH32_testdata[6802] */ + { 3401, 0x9E3779B1U, 0xA082C410U }, /* XSUM_XXH32_testdata[6803] */ + { 3402, 0x00000000U, 0x203C222DU }, /* XSUM_XXH32_testdata[6804] */ + { 3402, 0x9E3779B1U, 0x906BEE72U }, /* XSUM_XXH32_testdata[6805] */ + { 3403, 0x00000000U, 0xE01B1E46U }, /* XSUM_XXH32_testdata[6806] */ + { 3403, 0x9E3779B1U, 0x6B0A432CU }, /* XSUM_XXH32_testdata[6807] */ + { 3404, 0x00000000U, 0xF5383067U }, /* XSUM_XXH32_testdata[6808] */ + { 3404, 0x9E3779B1U, 0xF9046D3FU }, /* XSUM_XXH32_testdata[6809] */ + { 3405, 0x00000000U, 0x0B575A75U }, /* XSUM_XXH32_testdata[6810] */ + { 3405, 0x9E3779B1U, 0x066DFBB2U }, /* XSUM_XXH32_testdata[6811] */ + { 3406, 0x00000000U, 0x71959F26U }, /* XSUM_XXH32_testdata[6812] */ + { 3406, 0x9E3779B1U, 0xF57BB062U }, /* XSUM_XXH32_testdata[6813] */ + { 3407, 0x00000000U, 0xCB1FD322U }, /* XSUM_XXH32_testdata[6814] */ + { 3407, 0x9E3779B1U, 0xFA006638U }, /* XSUM_XXH32_testdata[6815] */ + { 3408, 0x00000000U, 0x2B7AC79FU }, /* XSUM_XXH32_testdata[6816] */ + { 3408, 0x9E3779B1U, 0xC0EBEFB2U }, /* XSUM_XXH32_testdata[6817] */ + { 3409, 0x00000000U, 0xFBD4E663U }, /* XSUM_XXH32_testdata[6818] */ + { 3409, 0x9E3779B1U, 0x1F944A57U }, /* XSUM_XXH32_testdata[6819] */ + { 3410, 0x00000000U, 0x6524AB8EU }, /* XSUM_XXH32_testdata[6820] */ + { 3410, 0x9E3779B1U, 0xD7B4501AU }, /* XSUM_XXH32_testdata[6821] */ + { 3411, 0x00000000U, 0x02082787U }, /* XSUM_XXH32_testdata[6822] */ + { 3411, 0x9E3779B1U, 0xA46256A5U }, /* XSUM_XXH32_testdata[6823] */ + { 3412, 0x00000000U, 0x5609EBBAU }, /* XSUM_XXH32_testdata[6824] */ + { 3412, 0x9E3779B1U, 0x0C20C9BEU }, /* XSUM_XXH32_testdata[6825] */ + { 3413, 0x00000000U, 0xCFF88265U }, /* XSUM_XXH32_testdata[6826] */ + { 3413, 0x9E3779B1U, 0x8ABBB4D6U }, /* XSUM_XXH32_testdata[6827] */ + { 3414, 0x00000000U, 0x6756791CU }, /* XSUM_XXH32_testdata[6828] */ + { 3414, 0x9E3779B1U, 0x9A22BE7CU }, /* XSUM_XXH32_testdata[6829] */ + { 3415, 0x00000000U, 0x1AF57BF0U }, /* XSUM_XXH32_testdata[6830] */ + { 3415, 0x9E3779B1U, 0xC5FB4E2CU }, /* XSUM_XXH32_testdata[6831] */ + { 3416, 0x00000000U, 0x2115DE5EU }, /* XSUM_XXH32_testdata[6832] */ + { 3416, 0x9E3779B1U, 0x15F334C8U }, /* XSUM_XXH32_testdata[6833] */ + { 3417, 0x00000000U, 0xF81CF209U }, /* XSUM_XXH32_testdata[6834] */ + { 3417, 0x9E3779B1U, 0xF4A8A5ACU }, /* XSUM_XXH32_testdata[6835] */ + { 3418, 0x00000000U, 0x249AC50EU }, /* XSUM_XXH32_testdata[6836] */ + { 3418, 0x9E3779B1U, 0x638DB79CU }, /* XSUM_XXH32_testdata[6837] */ + { 3419, 0x00000000U, 0xC3697E3FU }, /* XSUM_XXH32_testdata[6838] */ + { 3419, 0x9E3779B1U, 0xADEEDE3AU }, /* XSUM_XXH32_testdata[6839] */ + { 3420, 0x00000000U, 0x75EBDDD2U }, /* XSUM_XXH32_testdata[6840] */ + { 3420, 0x9E3779B1U, 0x33683C34U }, /* XSUM_XXH32_testdata[6841] */ + { 3421, 0x00000000U, 0x10A377DBU }, /* XSUM_XXH32_testdata[6842] */ + { 3421, 0x9E3779B1U, 0xCF59A4D2U }, /* XSUM_XXH32_testdata[6843] */ + { 3422, 0x00000000U, 0xF341E29FU }, /* XSUM_XXH32_testdata[6844] */ + { 3422, 0x9E3779B1U, 0x260F37E7U }, /* XSUM_XXH32_testdata[6845] */ + { 3423, 0x00000000U, 0x0BA23FD5U }, /* XSUM_XXH32_testdata[6846] */ + { 3423, 0x9E3779B1U, 0xBBFC1663U }, /* XSUM_XXH32_testdata[6847] */ + { 3424, 0x00000000U, 0x5F1143BCU }, /* XSUM_XXH32_testdata[6848] */ + { 3424, 0x9E3779B1U, 0x008AE617U }, /* XSUM_XXH32_testdata[6849] */ + { 3425, 0x00000000U, 0xE0491B24U }, /* XSUM_XXH32_testdata[6850] */ + { 3425, 0x9E3779B1U, 0x17BFEA97U }, /* XSUM_XXH32_testdata[6851] */ + { 3426, 0x00000000U, 0xEA7763B2U }, /* XSUM_XXH32_testdata[6852] */ + { 3426, 0x9E3779B1U, 0x37D44B7AU }, /* XSUM_XXH32_testdata[6853] */ + { 3427, 0x00000000U, 0x4A00A5DDU }, /* XSUM_XXH32_testdata[6854] */ + { 3427, 0x9E3779B1U, 0xDC107BDFU }, /* XSUM_XXH32_testdata[6855] */ + { 3428, 0x00000000U, 0xB8976EDAU }, /* XSUM_XXH32_testdata[6856] */ + { 3428, 0x9E3779B1U, 0x93BE08F8U }, /* XSUM_XXH32_testdata[6857] */ + { 3429, 0x00000000U, 0xAB38E11BU }, /* XSUM_XXH32_testdata[6858] */ + { 3429, 0x9E3779B1U, 0xF5C27F53U }, /* XSUM_XXH32_testdata[6859] */ + { 3430, 0x00000000U, 0x03F96055U }, /* XSUM_XXH32_testdata[6860] */ + { 3430, 0x9E3779B1U, 0xEB4A5CC9U }, /* XSUM_XXH32_testdata[6861] */ + { 3431, 0x00000000U, 0x1F16FD93U }, /* XSUM_XXH32_testdata[6862] */ + { 3431, 0x9E3779B1U, 0x9471EEA6U }, /* XSUM_XXH32_testdata[6863] */ + { 3432, 0x00000000U, 0xE65A87CEU }, /* XSUM_XXH32_testdata[6864] */ + { 3432, 0x9E3779B1U, 0x59324147U }, /* XSUM_XXH32_testdata[6865] */ + { 3433, 0x00000000U, 0x717D73AAU }, /* XSUM_XXH32_testdata[6866] */ + { 3433, 0x9E3779B1U, 0xEDB32A85U }, /* XSUM_XXH32_testdata[6867] */ + { 3434, 0x00000000U, 0xC991171BU }, /* XSUM_XXH32_testdata[6868] */ + { 3434, 0x9E3779B1U, 0x77FC09FEU }, /* XSUM_XXH32_testdata[6869] */ + { 3435, 0x00000000U, 0x56B78DD6U }, /* XSUM_XXH32_testdata[6870] */ + { 3435, 0x9E3779B1U, 0x34EF0410U }, /* XSUM_XXH32_testdata[6871] */ + { 3436, 0x00000000U, 0x5F5F52C1U }, /* XSUM_XXH32_testdata[6872] */ + { 3436, 0x9E3779B1U, 0x60FE20A3U }, /* XSUM_XXH32_testdata[6873] */ + { 3437, 0x00000000U, 0x9B0434C3U }, /* XSUM_XXH32_testdata[6874] */ + { 3437, 0x9E3779B1U, 0xB78B9362U }, /* XSUM_XXH32_testdata[6875] */ + { 3438, 0x00000000U, 0x26B8E3D3U }, /* XSUM_XXH32_testdata[6876] */ + { 3438, 0x9E3779B1U, 0xEE2B5766U }, /* XSUM_XXH32_testdata[6877] */ + { 3439, 0x00000000U, 0xC0C09177U }, /* XSUM_XXH32_testdata[6878] */ + { 3439, 0x9E3779B1U, 0xDB2B6A3DU }, /* XSUM_XXH32_testdata[6879] */ + { 3440, 0x00000000U, 0xA8B9E919U }, /* XSUM_XXH32_testdata[6880] */ + { 3440, 0x9E3779B1U, 0x4D59CBE2U }, /* XSUM_XXH32_testdata[6881] */ + { 3441, 0x00000000U, 0x1638A859U }, /* XSUM_XXH32_testdata[6882] */ + { 3441, 0x9E3779B1U, 0x51D3D4CBU }, /* XSUM_XXH32_testdata[6883] */ + { 3442, 0x00000000U, 0xD24B0990U }, /* XSUM_XXH32_testdata[6884] */ + { 3442, 0x9E3779B1U, 0x7FE3FBCFU }, /* XSUM_XXH32_testdata[6885] */ + { 3443, 0x00000000U, 0xD11D6C53U }, /* XSUM_XXH32_testdata[6886] */ + { 3443, 0x9E3779B1U, 0x0A7ABF1AU }, /* XSUM_XXH32_testdata[6887] */ + { 3444, 0x00000000U, 0x8BE72E70U }, /* XSUM_XXH32_testdata[6888] */ + { 3444, 0x9E3779B1U, 0x1B62BA1DU }, /* XSUM_XXH32_testdata[6889] */ + { 3445, 0x00000000U, 0x733E0E94U }, /* XSUM_XXH32_testdata[6890] */ + { 3445, 0x9E3779B1U, 0xC0680C78U }, /* XSUM_XXH32_testdata[6891] */ + { 3446, 0x00000000U, 0x4C1B8249U }, /* XSUM_XXH32_testdata[6892] */ + { 3446, 0x9E3779B1U, 0xF733F468U }, /* XSUM_XXH32_testdata[6893] */ + { 3447, 0x00000000U, 0x9764625CU }, /* XSUM_XXH32_testdata[6894] */ + { 3447, 0x9E3779B1U, 0xC56D44A3U }, /* XSUM_XXH32_testdata[6895] */ + { 3448, 0x00000000U, 0xE512CF48U }, /* XSUM_XXH32_testdata[6896] */ + { 3448, 0x9E3779B1U, 0x64488BE0U }, /* XSUM_XXH32_testdata[6897] */ + { 3449, 0x00000000U, 0xDCD9FD0BU }, /* XSUM_XXH32_testdata[6898] */ + { 3449, 0x9E3779B1U, 0x1E74CCBAU }, /* XSUM_XXH32_testdata[6899] */ + { 3450, 0x00000000U, 0x05AC75D2U }, /* XSUM_XXH32_testdata[6900] */ + { 3450, 0x9E3779B1U, 0x2ADAC3D2U }, /* XSUM_XXH32_testdata[6901] */ + { 3451, 0x00000000U, 0x69FE7FBEU }, /* XSUM_XXH32_testdata[6902] */ + { 3451, 0x9E3779B1U, 0x1BEB2256U }, /* XSUM_XXH32_testdata[6903] */ + { 3452, 0x00000000U, 0x3C6CBA89U }, /* XSUM_XXH32_testdata[6904] */ + { 3452, 0x9E3779B1U, 0x33072D54U }, /* XSUM_XXH32_testdata[6905] */ + { 3453, 0x00000000U, 0xC5B30423U }, /* XSUM_XXH32_testdata[6906] */ + { 3453, 0x9E3779B1U, 0x53393BDFU }, /* XSUM_XXH32_testdata[6907] */ + { 3454, 0x00000000U, 0xCF2718A5U }, /* XSUM_XXH32_testdata[6908] */ + { 3454, 0x9E3779B1U, 0xE38FFB89U }, /* XSUM_XXH32_testdata[6909] */ + { 3455, 0x00000000U, 0x23ECAE24U }, /* XSUM_XXH32_testdata[6910] */ + { 3455, 0x9E3779B1U, 0x92B38816U }, /* XSUM_XXH32_testdata[6911] */ + { 3456, 0x00000000U, 0x2068B156U }, /* XSUM_XXH32_testdata[6912] */ + { 3456, 0x9E3779B1U, 0xA4706587U }, /* XSUM_XXH32_testdata[6913] */ + { 3457, 0x00000000U, 0x295FCAEDU }, /* XSUM_XXH32_testdata[6914] */ + { 3457, 0x9E3779B1U, 0xEFCCBF79U }, /* XSUM_XXH32_testdata[6915] */ + { 3458, 0x00000000U, 0x3EA0F67FU }, /* XSUM_XXH32_testdata[6916] */ + { 3458, 0x9E3779B1U, 0xB8DD7F54U }, /* XSUM_XXH32_testdata[6917] */ + { 3459, 0x00000000U, 0x69929055U }, /* XSUM_XXH32_testdata[6918] */ + { 3459, 0x9E3779B1U, 0x7E1F127FU }, /* XSUM_XXH32_testdata[6919] */ + { 3460, 0x00000000U, 0x97BC7E81U }, /* XSUM_XXH32_testdata[6920] */ + { 3460, 0x9E3779B1U, 0x0DD5A367U }, /* XSUM_XXH32_testdata[6921] */ + { 3461, 0x00000000U, 0x250C0660U }, /* XSUM_XXH32_testdata[6922] */ + { 3461, 0x9E3779B1U, 0x6FE7FB70U }, /* XSUM_XXH32_testdata[6923] */ + { 3462, 0x00000000U, 0xDEFF6292U }, /* XSUM_XXH32_testdata[6924] */ + { 3462, 0x9E3779B1U, 0xD8B81F51U }, /* XSUM_XXH32_testdata[6925] */ + { 3463, 0x00000000U, 0x906A34F4U }, /* XSUM_XXH32_testdata[6926] */ + { 3463, 0x9E3779B1U, 0x78805F14U }, /* XSUM_XXH32_testdata[6927] */ + { 3464, 0x00000000U, 0x509D8C8DU }, /* XSUM_XXH32_testdata[6928] */ + { 3464, 0x9E3779B1U, 0xA49A1719U }, /* XSUM_XXH32_testdata[6929] */ + { 3465, 0x00000000U, 0x89984810U }, /* XSUM_XXH32_testdata[6930] */ + { 3465, 0x9E3779B1U, 0x3D4A6AF1U }, /* XSUM_XXH32_testdata[6931] */ + { 3466, 0x00000000U, 0xB4B40A28U }, /* XSUM_XXH32_testdata[6932] */ + { 3466, 0x9E3779B1U, 0x51FF0F9DU }, /* XSUM_XXH32_testdata[6933] */ + { 3467, 0x00000000U, 0x68FD4910U }, /* XSUM_XXH32_testdata[6934] */ + { 3467, 0x9E3779B1U, 0x94CC21CDU }, /* XSUM_XXH32_testdata[6935] */ + { 3468, 0x00000000U, 0xCC20A756U }, /* XSUM_XXH32_testdata[6936] */ + { 3468, 0x9E3779B1U, 0xD5210C7EU }, /* XSUM_XXH32_testdata[6937] */ + { 3469, 0x00000000U, 0xC3204A36U }, /* XSUM_XXH32_testdata[6938] */ + { 3469, 0x9E3779B1U, 0xB49F44B9U }, /* XSUM_XXH32_testdata[6939] */ + { 3470, 0x00000000U, 0x06026F45U }, /* XSUM_XXH32_testdata[6940] */ + { 3470, 0x9E3779B1U, 0x8E034BD2U }, /* XSUM_XXH32_testdata[6941] */ + { 3471, 0x00000000U, 0xF0193F99U }, /* XSUM_XXH32_testdata[6942] */ + { 3471, 0x9E3779B1U, 0xB82C7EF6U }, /* XSUM_XXH32_testdata[6943] */ + { 3472, 0x00000000U, 0x6A506014U }, /* XSUM_XXH32_testdata[6944] */ + { 3472, 0x9E3779B1U, 0xF19AC666U }, /* XSUM_XXH32_testdata[6945] */ + { 3473, 0x00000000U, 0xD9309451U }, /* XSUM_XXH32_testdata[6946] */ + { 3473, 0x9E3779B1U, 0x5C62FE76U }, /* XSUM_XXH32_testdata[6947] */ + { 3474, 0x00000000U, 0x08AE31CBU }, /* XSUM_XXH32_testdata[6948] */ + { 3474, 0x9E3779B1U, 0x1D01F5E3U }, /* XSUM_XXH32_testdata[6949] */ + { 3475, 0x00000000U, 0x7D938D2CU }, /* XSUM_XXH32_testdata[6950] */ + { 3475, 0x9E3779B1U, 0xA20BD86BU }, /* XSUM_XXH32_testdata[6951] */ + { 3476, 0x00000000U, 0xBF98511EU }, /* XSUM_XXH32_testdata[6952] */ + { 3476, 0x9E3779B1U, 0x728F2E00U }, /* XSUM_XXH32_testdata[6953] */ + { 3477, 0x00000000U, 0x2DF29085U }, /* XSUM_XXH32_testdata[6954] */ + { 3477, 0x9E3779B1U, 0x641E0D83U }, /* XSUM_XXH32_testdata[6955] */ + { 3478, 0x00000000U, 0xD67817ACU }, /* XSUM_XXH32_testdata[6956] */ + { 3478, 0x9E3779B1U, 0x5B16D790U }, /* XSUM_XXH32_testdata[6957] */ + { 3479, 0x00000000U, 0xBF955B2DU }, /* XSUM_XXH32_testdata[6958] */ + { 3479, 0x9E3779B1U, 0x71BFD9A4U }, /* XSUM_XXH32_testdata[6959] */ + { 3480, 0x00000000U, 0x35902249U }, /* XSUM_XXH32_testdata[6960] */ + { 3480, 0x9E3779B1U, 0x983AE947U }, /* XSUM_XXH32_testdata[6961] */ + { 3481, 0x00000000U, 0x4BABEB46U }, /* XSUM_XXH32_testdata[6962] */ + { 3481, 0x9E3779B1U, 0xFDD16A9EU }, /* XSUM_XXH32_testdata[6963] */ + { 3482, 0x00000000U, 0x115C555DU }, /* XSUM_XXH32_testdata[6964] */ + { 3482, 0x9E3779B1U, 0xCFB53ADAU }, /* XSUM_XXH32_testdata[6965] */ + { 3483, 0x00000000U, 0xAAD5BEBDU }, /* XSUM_XXH32_testdata[6966] */ + { 3483, 0x9E3779B1U, 0xE0E737E4U }, /* XSUM_XXH32_testdata[6967] */ + { 3484, 0x00000000U, 0xF6096817U }, /* XSUM_XXH32_testdata[6968] */ + { 3484, 0x9E3779B1U, 0xE1DAC5D0U }, /* XSUM_XXH32_testdata[6969] */ + { 3485, 0x00000000U, 0x4264CC84U }, /* XSUM_XXH32_testdata[6970] */ + { 3485, 0x9E3779B1U, 0x874B1917U }, /* XSUM_XXH32_testdata[6971] */ + { 3486, 0x00000000U, 0x48136F2CU }, /* XSUM_XXH32_testdata[6972] */ + { 3486, 0x9E3779B1U, 0x2BA2ECB7U }, /* XSUM_XXH32_testdata[6973] */ + { 3487, 0x00000000U, 0xE3D3F58BU }, /* XSUM_XXH32_testdata[6974] */ + { 3487, 0x9E3779B1U, 0x50851C6BU }, /* XSUM_XXH32_testdata[6975] */ + { 3488, 0x00000000U, 0x398C6B2BU }, /* XSUM_XXH32_testdata[6976] */ + { 3488, 0x9E3779B1U, 0x4AAD8E7AU }, /* XSUM_XXH32_testdata[6977] */ + { 3489, 0x00000000U, 0xDCF35413U }, /* XSUM_XXH32_testdata[6978] */ + { 3489, 0x9E3779B1U, 0x9622B255U }, /* XSUM_XXH32_testdata[6979] */ + { 3490, 0x00000000U, 0xA3826B53U }, /* XSUM_XXH32_testdata[6980] */ + { 3490, 0x9E3779B1U, 0xDB328E1EU }, /* XSUM_XXH32_testdata[6981] */ + { 3491, 0x00000000U, 0x451A3160U }, /* XSUM_XXH32_testdata[6982] */ + { 3491, 0x9E3779B1U, 0x4508B0DCU }, /* XSUM_XXH32_testdata[6983] */ + { 3492, 0x00000000U, 0x044F047FU }, /* XSUM_XXH32_testdata[6984] */ + { 3492, 0x9E3779B1U, 0x501D4005U }, /* XSUM_XXH32_testdata[6985] */ + { 3493, 0x00000000U, 0xC0C2AC4EU }, /* XSUM_XXH32_testdata[6986] */ + { 3493, 0x9E3779B1U, 0x7814B99DU }, /* XSUM_XXH32_testdata[6987] */ + { 3494, 0x00000000U, 0x35EEAB21U }, /* XSUM_XXH32_testdata[6988] */ + { 3494, 0x9E3779B1U, 0x6607923FU }, /* XSUM_XXH32_testdata[6989] */ + { 3495, 0x00000000U, 0xBA4E99EEU }, /* XSUM_XXH32_testdata[6990] */ + { 3495, 0x9E3779B1U, 0xA56E19CDU }, /* XSUM_XXH32_testdata[6991] */ + { 3496, 0x00000000U, 0x364AEAA2U }, /* XSUM_XXH32_testdata[6992] */ + { 3496, 0x9E3779B1U, 0xA1C547C7U }, /* XSUM_XXH32_testdata[6993] */ + { 3497, 0x00000000U, 0xCC867552U }, /* XSUM_XXH32_testdata[6994] */ + { 3497, 0x9E3779B1U, 0x9775CA37U }, /* XSUM_XXH32_testdata[6995] */ + { 3498, 0x00000000U, 0x6CF8FB77U }, /* XSUM_XXH32_testdata[6996] */ + { 3498, 0x9E3779B1U, 0x81B04ED0U }, /* XSUM_XXH32_testdata[6997] */ + { 3499, 0x00000000U, 0x14B86A6AU }, /* XSUM_XXH32_testdata[6998] */ + { 3499, 0x9E3779B1U, 0x13CDBE00U }, /* XSUM_XXH32_testdata[6999] */ + { 3500, 0x00000000U, 0x7DCB439DU }, /* XSUM_XXH32_testdata[7000] */ + { 3500, 0x9E3779B1U, 0xF39EAA12U }, /* XSUM_XXH32_testdata[7001] */ + { 3501, 0x00000000U, 0xAB9D75CAU }, /* XSUM_XXH32_testdata[7002] */ + { 3501, 0x9E3779B1U, 0x9D1B57F0U }, /* XSUM_XXH32_testdata[7003] */ + { 3502, 0x00000000U, 0x2D241857U }, /* XSUM_XXH32_testdata[7004] */ + { 3502, 0x9E3779B1U, 0x47CFA606U }, /* XSUM_XXH32_testdata[7005] */ + { 3503, 0x00000000U, 0x82F56DF6U }, /* XSUM_XXH32_testdata[7006] */ + { 3503, 0x9E3779B1U, 0x625947AEU }, /* XSUM_XXH32_testdata[7007] */ + { 3504, 0x00000000U, 0xC6461692U }, /* XSUM_XXH32_testdata[7008] */ + { 3504, 0x9E3779B1U, 0xABC51768U }, /* XSUM_XXH32_testdata[7009] */ + { 3505, 0x00000000U, 0x997C0476U }, /* XSUM_XXH32_testdata[7010] */ + { 3505, 0x9E3779B1U, 0x264A5C81U }, /* XSUM_XXH32_testdata[7011] */ + { 3506, 0x00000000U, 0xDA324FC8U }, /* XSUM_XXH32_testdata[7012] */ + { 3506, 0x9E3779B1U, 0xCEAB447EU }, /* XSUM_XXH32_testdata[7013] */ + { 3507, 0x00000000U, 0x18F00157U }, /* XSUM_XXH32_testdata[7014] */ + { 3507, 0x9E3779B1U, 0x64EC96ABU }, /* XSUM_XXH32_testdata[7015] */ + { 3508, 0x00000000U, 0xB936F439U }, /* XSUM_XXH32_testdata[7016] */ + { 3508, 0x9E3779B1U, 0x59EBF7A4U }, /* XSUM_XXH32_testdata[7017] */ + { 3509, 0x00000000U, 0xAF357164U }, /* XSUM_XXH32_testdata[7018] */ + { 3509, 0x9E3779B1U, 0x435C7B3AU }, /* XSUM_XXH32_testdata[7019] */ + { 3510, 0x00000000U, 0x2AD409A9U }, /* XSUM_XXH32_testdata[7020] */ + { 3510, 0x9E3779B1U, 0xD34AF9A1U }, /* XSUM_XXH32_testdata[7021] */ + { 3511, 0x00000000U, 0x28FBD7BAU }, /* XSUM_XXH32_testdata[7022] */ + { 3511, 0x9E3779B1U, 0xC33EF4C7U }, /* XSUM_XXH32_testdata[7023] */ + { 3512, 0x00000000U, 0xD0F9EEFAU }, /* XSUM_XXH32_testdata[7024] */ + { 3512, 0x9E3779B1U, 0xF8E26840U }, /* XSUM_XXH32_testdata[7025] */ + { 3513, 0x00000000U, 0xF4FB0DABU }, /* XSUM_XXH32_testdata[7026] */ + { 3513, 0x9E3779B1U, 0x1190481DU }, /* XSUM_XXH32_testdata[7027] */ + { 3514, 0x00000000U, 0xF8362507U }, /* XSUM_XXH32_testdata[7028] */ + { 3514, 0x9E3779B1U, 0x5EEA6C56U }, /* XSUM_XXH32_testdata[7029] */ + { 3515, 0x00000000U, 0x6617EB1FU }, /* XSUM_XXH32_testdata[7030] */ + { 3515, 0x9E3779B1U, 0x23870DE7U }, /* XSUM_XXH32_testdata[7031] */ + { 3516, 0x00000000U, 0x1B5CE31FU }, /* XSUM_XXH32_testdata[7032] */ + { 3516, 0x9E3779B1U, 0x95E40107U }, /* XSUM_XXH32_testdata[7033] */ + { 3517, 0x00000000U, 0x4679F3F7U }, /* XSUM_XXH32_testdata[7034] */ + { 3517, 0x9E3779B1U, 0xEB9B67E9U }, /* XSUM_XXH32_testdata[7035] */ + { 3518, 0x00000000U, 0xEB172620U }, /* XSUM_XXH32_testdata[7036] */ + { 3518, 0x9E3779B1U, 0xB0B1FECCU }, /* XSUM_XXH32_testdata[7037] */ + { 3519, 0x00000000U, 0x8C884DA0U }, /* XSUM_XXH32_testdata[7038] */ + { 3519, 0x9E3779B1U, 0xC275DBE3U }, /* XSUM_XXH32_testdata[7039] */ + { 3520, 0x00000000U, 0xB9B89945U }, /* XSUM_XXH32_testdata[7040] */ + { 3520, 0x9E3779B1U, 0x4A84FE06U }, /* XSUM_XXH32_testdata[7041] */ + { 3521, 0x00000000U, 0x4F03DD19U }, /* XSUM_XXH32_testdata[7042] */ + { 3521, 0x9E3779B1U, 0x145C3B1DU }, /* XSUM_XXH32_testdata[7043] */ + { 3522, 0x00000000U, 0x9F71B20CU }, /* XSUM_XXH32_testdata[7044] */ + { 3522, 0x9E3779B1U, 0x4DD77F83U }, /* XSUM_XXH32_testdata[7045] */ + { 3523, 0x00000000U, 0xCA98EC84U }, /* XSUM_XXH32_testdata[7046] */ + { 3523, 0x9E3779B1U, 0xF41B4990U }, /* XSUM_XXH32_testdata[7047] */ + { 3524, 0x00000000U, 0xD01C61EDU }, /* XSUM_XXH32_testdata[7048] */ + { 3524, 0x9E3779B1U, 0x20155BE7U }, /* XSUM_XXH32_testdata[7049] */ + { 3525, 0x00000000U, 0x4A604702U }, /* XSUM_XXH32_testdata[7050] */ + { 3525, 0x9E3779B1U, 0xA1260022U }, /* XSUM_XXH32_testdata[7051] */ + { 3526, 0x00000000U, 0x065E509BU }, /* XSUM_XXH32_testdata[7052] */ + { 3526, 0x9E3779B1U, 0xD72E819DU }, /* XSUM_XXH32_testdata[7053] */ + { 3527, 0x00000000U, 0xE9792075U }, /* XSUM_XXH32_testdata[7054] */ + { 3527, 0x9E3779B1U, 0x1701622EU }, /* XSUM_XXH32_testdata[7055] */ + { 3528, 0x00000000U, 0x35B37877U }, /* XSUM_XXH32_testdata[7056] */ + { 3528, 0x9E3779B1U, 0x476E1658U }, /* XSUM_XXH32_testdata[7057] */ + { 3529, 0x00000000U, 0x1730D7A9U }, /* XSUM_XXH32_testdata[7058] */ + { 3529, 0x9E3779B1U, 0x40DBBCFFU }, /* XSUM_XXH32_testdata[7059] */ + { 3530, 0x00000000U, 0x62A5E278U }, /* XSUM_XXH32_testdata[7060] */ + { 3530, 0x9E3779B1U, 0xEB1DF0C7U }, /* XSUM_XXH32_testdata[7061] */ + { 3531, 0x00000000U, 0x5517A733U }, /* XSUM_XXH32_testdata[7062] */ + { 3531, 0x9E3779B1U, 0xBD815BD5U }, /* XSUM_XXH32_testdata[7063] */ + { 3532, 0x00000000U, 0x16CC0FA9U }, /* XSUM_XXH32_testdata[7064] */ + { 3532, 0x9E3779B1U, 0x37AAE186U }, /* XSUM_XXH32_testdata[7065] */ + { 3533, 0x00000000U, 0x1B5D51E6U }, /* XSUM_XXH32_testdata[7066] */ + { 3533, 0x9E3779B1U, 0x1BB9142FU }, /* XSUM_XXH32_testdata[7067] */ + { 3534, 0x00000000U, 0xD57E81A1U }, /* XSUM_XXH32_testdata[7068] */ + { 3534, 0x9E3779B1U, 0x22B33257U }, /* XSUM_XXH32_testdata[7069] */ + { 3535, 0x00000000U, 0x2C9C4DFBU }, /* XSUM_XXH32_testdata[7070] */ + { 3535, 0x9E3779B1U, 0xEC8E3D7AU }, /* XSUM_XXH32_testdata[7071] */ + { 3536, 0x00000000U, 0xC8051139U }, /* XSUM_XXH32_testdata[7072] */ + { 3536, 0x9E3779B1U, 0x66A8B1B2U }, /* XSUM_XXH32_testdata[7073] */ + { 3537, 0x00000000U, 0x6304DB45U }, /* XSUM_XXH32_testdata[7074] */ + { 3537, 0x9E3779B1U, 0x83BB1FDFU }, /* XSUM_XXH32_testdata[7075] */ + { 3538, 0x00000000U, 0xC0EC1FDFU }, /* XSUM_XXH32_testdata[7076] */ + { 3538, 0x9E3779B1U, 0x788F25ADU }, /* XSUM_XXH32_testdata[7077] */ + { 3539, 0x00000000U, 0xD3784BD2U }, /* XSUM_XXH32_testdata[7078] */ + { 3539, 0x9E3779B1U, 0x32FEC42AU }, /* XSUM_XXH32_testdata[7079] */ + { 3540, 0x00000000U, 0xBA5A0529U }, /* XSUM_XXH32_testdata[7080] */ + { 3540, 0x9E3779B1U, 0x3589D353U }, /* XSUM_XXH32_testdata[7081] */ + { 3541, 0x00000000U, 0xD7EB3631U }, /* XSUM_XXH32_testdata[7082] */ + { 3541, 0x9E3779B1U, 0xE4710E85U }, /* XSUM_XXH32_testdata[7083] */ + { 3542, 0x00000000U, 0x3D32669CU }, /* XSUM_XXH32_testdata[7084] */ + { 3542, 0x9E3779B1U, 0x616B634DU }, /* XSUM_XXH32_testdata[7085] */ + { 3543, 0x00000000U, 0xC60FC5D1U }, /* XSUM_XXH32_testdata[7086] */ + { 3543, 0x9E3779B1U, 0x9DB69990U }, /* XSUM_XXH32_testdata[7087] */ + { 3544, 0x00000000U, 0x1A75BAFFU }, /* XSUM_XXH32_testdata[7088] */ + { 3544, 0x9E3779B1U, 0xC360F2F0U }, /* XSUM_XXH32_testdata[7089] */ + { 3545, 0x00000000U, 0xC8030778U }, /* XSUM_XXH32_testdata[7090] */ + { 3545, 0x9E3779B1U, 0xC8B7F46CU }, /* XSUM_XXH32_testdata[7091] */ + { 3546, 0x00000000U, 0x9CFA61D4U }, /* XSUM_XXH32_testdata[7092] */ + { 3546, 0x9E3779B1U, 0xB72B3A6BU }, /* XSUM_XXH32_testdata[7093] */ + { 3547, 0x00000000U, 0x465B0498U }, /* XSUM_XXH32_testdata[7094] */ + { 3547, 0x9E3779B1U, 0x1A23E3BCU }, /* XSUM_XXH32_testdata[7095] */ + { 3548, 0x00000000U, 0xF6705104U }, /* XSUM_XXH32_testdata[7096] */ + { 3548, 0x9E3779B1U, 0x0969FAC1U }, /* XSUM_XXH32_testdata[7097] */ + { 3549, 0x00000000U, 0x2D995AE5U }, /* XSUM_XXH32_testdata[7098] */ + { 3549, 0x9E3779B1U, 0x705FF6A2U }, /* XSUM_XXH32_testdata[7099] */ + { 3550, 0x00000000U, 0xAC0277ECU }, /* XSUM_XXH32_testdata[7100] */ + { 3550, 0x9E3779B1U, 0x3A46B72AU }, /* XSUM_XXH32_testdata[7101] */ + { 3551, 0x00000000U, 0x153B0F38U }, /* XSUM_XXH32_testdata[7102] */ + { 3551, 0x9E3779B1U, 0xF734C0FFU }, /* XSUM_XXH32_testdata[7103] */ + { 3552, 0x00000000U, 0xADB62613U }, /* XSUM_XXH32_testdata[7104] */ + { 3552, 0x9E3779B1U, 0x476D2E99U }, /* XSUM_XXH32_testdata[7105] */ + { 3553, 0x00000000U, 0x40E549F9U }, /* XSUM_XXH32_testdata[7106] */ + { 3553, 0x9E3779B1U, 0x8D5DC517U }, /* XSUM_XXH32_testdata[7107] */ + { 3554, 0x00000000U, 0x5A9AE8F6U }, /* XSUM_XXH32_testdata[7108] */ + { 3554, 0x9E3779B1U, 0xD167867FU }, /* XSUM_XXH32_testdata[7109] */ + { 3555, 0x00000000U, 0x9C4BECFAU }, /* XSUM_XXH32_testdata[7110] */ + { 3555, 0x9E3779B1U, 0x1B257CF9U }, /* XSUM_XXH32_testdata[7111] */ + { 3556, 0x00000000U, 0x7BF50C64U }, /* XSUM_XXH32_testdata[7112] */ + { 3556, 0x9E3779B1U, 0xEDDE9A0AU }, /* XSUM_XXH32_testdata[7113] */ + { 3557, 0x00000000U, 0x3958598AU }, /* XSUM_XXH32_testdata[7114] */ + { 3557, 0x9E3779B1U, 0xAEC3F855U }, /* XSUM_XXH32_testdata[7115] */ + { 3558, 0x00000000U, 0x6F1B8B73U }, /* XSUM_XXH32_testdata[7116] */ + { 3558, 0x9E3779B1U, 0x0EAA923CU }, /* XSUM_XXH32_testdata[7117] */ + { 3559, 0x00000000U, 0x8DF1829EU }, /* XSUM_XXH32_testdata[7118] */ + { 3559, 0x9E3779B1U, 0x52DE3C01U }, /* XSUM_XXH32_testdata[7119] */ + { 3560, 0x00000000U, 0xA33B30D8U }, /* XSUM_XXH32_testdata[7120] */ + { 3560, 0x9E3779B1U, 0xEF5E67F0U }, /* XSUM_XXH32_testdata[7121] */ + { 3561, 0x00000000U, 0xFA8B0F56U }, /* XSUM_XXH32_testdata[7122] */ + { 3561, 0x9E3779B1U, 0x090388C0U }, /* XSUM_XXH32_testdata[7123] */ + { 3562, 0x00000000U, 0xC6871C47U }, /* XSUM_XXH32_testdata[7124] */ + { 3562, 0x9E3779B1U, 0x395BA54BU }, /* XSUM_XXH32_testdata[7125] */ + { 3563, 0x00000000U, 0x673C9DD3U }, /* XSUM_XXH32_testdata[7126] */ + { 3563, 0x9E3779B1U, 0x968E8EADU }, /* XSUM_XXH32_testdata[7127] */ + { 3564, 0x00000000U, 0x7D9EBDF6U }, /* XSUM_XXH32_testdata[7128] */ + { 3564, 0x9E3779B1U, 0x61ADCCE9U }, /* XSUM_XXH32_testdata[7129] */ + { 3565, 0x00000000U, 0xB7A2296BU }, /* XSUM_XXH32_testdata[7130] */ + { 3565, 0x9E3779B1U, 0xC1A5B56CU }, /* XSUM_XXH32_testdata[7131] */ + { 3566, 0x00000000U, 0x15D3EAF5U }, /* XSUM_XXH32_testdata[7132] */ + { 3566, 0x9E3779B1U, 0xEE84F700U }, /* XSUM_XXH32_testdata[7133] */ + { 3567, 0x00000000U, 0x68AD4088U }, /* XSUM_XXH32_testdata[7134] */ + { 3567, 0x9E3779B1U, 0x4959A852U }, /* XSUM_XXH32_testdata[7135] */ + { 3568, 0x00000000U, 0x9C9EB0E2U }, /* XSUM_XXH32_testdata[7136] */ + { 3568, 0x9E3779B1U, 0x46346CE5U }, /* XSUM_XXH32_testdata[7137] */ + { 3569, 0x00000000U, 0xF28C4CF0U }, /* XSUM_XXH32_testdata[7138] */ + { 3569, 0x9E3779B1U, 0xFD31C9EAU }, /* XSUM_XXH32_testdata[7139] */ + { 3570, 0x00000000U, 0x51E28226U }, /* XSUM_XXH32_testdata[7140] */ + { 3570, 0x9E3779B1U, 0xF971C6F2U }, /* XSUM_XXH32_testdata[7141] */ + { 3571, 0x00000000U, 0x5C531B22U }, /* XSUM_XXH32_testdata[7142] */ + { 3571, 0x9E3779B1U, 0x18A2DDFBU }, /* XSUM_XXH32_testdata[7143] */ + { 3572, 0x00000000U, 0x6E283669U }, /* XSUM_XXH32_testdata[7144] */ + { 3572, 0x9E3779B1U, 0xDB304732U }, /* XSUM_XXH32_testdata[7145] */ + { 3573, 0x00000000U, 0xC3C10F98U }, /* XSUM_XXH32_testdata[7146] */ + { 3573, 0x9E3779B1U, 0x2CEEBE73U }, /* XSUM_XXH32_testdata[7147] */ + { 3574, 0x00000000U, 0x5155011CU }, /* XSUM_XXH32_testdata[7148] */ + { 3574, 0x9E3779B1U, 0xBB0C964DU }, /* XSUM_XXH32_testdata[7149] */ + { 3575, 0x00000000U, 0x9DED4077U }, /* XSUM_XXH32_testdata[7150] */ + { 3575, 0x9E3779B1U, 0x9A75980BU }, /* XSUM_XXH32_testdata[7151] */ + { 3576, 0x00000000U, 0x93DC6857U }, /* XSUM_XXH32_testdata[7152] */ + { 3576, 0x9E3779B1U, 0x2702EE0FU }, /* XSUM_XXH32_testdata[7153] */ + { 3577, 0x00000000U, 0x1A1C2D2EU }, /* XSUM_XXH32_testdata[7154] */ + { 3577, 0x9E3779B1U, 0x716CE1D3U }, /* XSUM_XXH32_testdata[7155] */ + { 3578, 0x00000000U, 0x636F90BBU }, /* XSUM_XXH32_testdata[7156] */ + { 3578, 0x9E3779B1U, 0x1A7FA949U }, /* XSUM_XXH32_testdata[7157] */ + { 3579, 0x00000000U, 0xC822F241U }, /* XSUM_XXH32_testdata[7158] */ + { 3579, 0x9E3779B1U, 0x96E16D96U }, /* XSUM_XXH32_testdata[7159] */ + { 3580, 0x00000000U, 0xF0A8735AU }, /* XSUM_XXH32_testdata[7160] */ + { 3580, 0x9E3779B1U, 0x0156D3B9U }, /* XSUM_XXH32_testdata[7161] */ + { 3581, 0x00000000U, 0xAC8804A7U }, /* XSUM_XXH32_testdata[7162] */ + { 3581, 0x9E3779B1U, 0x5D17F278U }, /* XSUM_XXH32_testdata[7163] */ + { 3582, 0x00000000U, 0xBCBBC758U }, /* XSUM_XXH32_testdata[7164] */ + { 3582, 0x9E3779B1U, 0x03BE88E3U }, /* XSUM_XXH32_testdata[7165] */ + { 3583, 0x00000000U, 0x58DA2037U }, /* XSUM_XXH32_testdata[7166] */ + { 3583, 0x9E3779B1U, 0xFEB8042FU }, /* XSUM_XXH32_testdata[7167] */ + { 3584, 0x00000000U, 0x6893F203U }, /* XSUM_XXH32_testdata[7168] */ + { 3584, 0x9E3779B1U, 0xD884346AU }, /* XSUM_XXH32_testdata[7169] */ + { 3585, 0x00000000U, 0x920F97D0U }, /* XSUM_XXH32_testdata[7170] */ + { 3585, 0x9E3779B1U, 0xD290ACA9U }, /* XSUM_XXH32_testdata[7171] */ + { 3586, 0x00000000U, 0x9F9A51CEU }, /* XSUM_XXH32_testdata[7172] */ + { 3586, 0x9E3779B1U, 0x16637BACU }, /* XSUM_XXH32_testdata[7173] */ + { 3587, 0x00000000U, 0x1945E691U }, /* XSUM_XXH32_testdata[7174] */ + { 3587, 0x9E3779B1U, 0x26D280AEU }, /* XSUM_XXH32_testdata[7175] */ + { 3588, 0x00000000U, 0xB3C7F86DU }, /* XSUM_XXH32_testdata[7176] */ + { 3588, 0x9E3779B1U, 0x53FD0536U }, /* XSUM_XXH32_testdata[7177] */ + { 3589, 0x00000000U, 0xBBEB446AU }, /* XSUM_XXH32_testdata[7178] */ + { 3589, 0x9E3779B1U, 0xB3E8B406U }, /* XSUM_XXH32_testdata[7179] */ + { 3590, 0x00000000U, 0x9747DA45U }, /* XSUM_XXH32_testdata[7180] */ + { 3590, 0x9E3779B1U, 0x11E00421U }, /* XSUM_XXH32_testdata[7181] */ + { 3591, 0x00000000U, 0x31C26A3AU }, /* XSUM_XXH32_testdata[7182] */ + { 3591, 0x9E3779B1U, 0x80FB18F7U }, /* XSUM_XXH32_testdata[7183] */ + { 3592, 0x00000000U, 0x81BDA98BU }, /* XSUM_XXH32_testdata[7184] */ + { 3592, 0x9E3779B1U, 0xC4D7CF42U }, /* XSUM_XXH32_testdata[7185] */ + { 3593, 0x00000000U, 0x195B87A6U }, /* XSUM_XXH32_testdata[7186] */ + { 3593, 0x9E3779B1U, 0x9F2C004FU }, /* XSUM_XXH32_testdata[7187] */ + { 3594, 0x00000000U, 0xFB20D9DBU }, /* XSUM_XXH32_testdata[7188] */ + { 3594, 0x9E3779B1U, 0x2BE017EEU }, /* XSUM_XXH32_testdata[7189] */ + { 3595, 0x00000000U, 0x41657EB8U }, /* XSUM_XXH32_testdata[7190] */ + { 3595, 0x9E3779B1U, 0x37B3AD5BU }, /* XSUM_XXH32_testdata[7191] */ + { 3596, 0x00000000U, 0x0833A515U }, /* XSUM_XXH32_testdata[7192] */ + { 3596, 0x9E3779B1U, 0xD054E897U }, /* XSUM_XXH32_testdata[7193] */ + { 3597, 0x00000000U, 0xC9E91D55U }, /* XSUM_XXH32_testdata[7194] */ + { 3597, 0x9E3779B1U, 0x5EEA1C9BU }, /* XSUM_XXH32_testdata[7195] */ + { 3598, 0x00000000U, 0x536B10ACU }, /* XSUM_XXH32_testdata[7196] */ + { 3598, 0x9E3779B1U, 0x57C11BBEU }, /* XSUM_XXH32_testdata[7197] */ + { 3599, 0x00000000U, 0x62ACCDF1U }, /* XSUM_XXH32_testdata[7198] */ + { 3599, 0x9E3779B1U, 0xC80B67A2U }, /* XSUM_XXH32_testdata[7199] */ + { 3600, 0x00000000U, 0x248FA81BU }, /* XSUM_XXH32_testdata[7200] */ + { 3600, 0x9E3779B1U, 0x9A7F6193U }, /* XSUM_XXH32_testdata[7201] */ + { 3601, 0x00000000U, 0x612F2F5CU }, /* XSUM_XXH32_testdata[7202] */ + { 3601, 0x9E3779B1U, 0x68243746U }, /* XSUM_XXH32_testdata[7203] */ + { 3602, 0x00000000U, 0xDD0AF8AEU }, /* XSUM_XXH32_testdata[7204] */ + { 3602, 0x9E3779B1U, 0x69725F6BU }, /* XSUM_XXH32_testdata[7205] */ + { 3603, 0x00000000U, 0x4E426DD5U }, /* XSUM_XXH32_testdata[7206] */ + { 3603, 0x9E3779B1U, 0xA633F6E4U }, /* XSUM_XXH32_testdata[7207] */ + { 3604, 0x00000000U, 0xDB9ACEBEU }, /* XSUM_XXH32_testdata[7208] */ + { 3604, 0x9E3779B1U, 0x1F65BD5AU }, /* XSUM_XXH32_testdata[7209] */ + { 3605, 0x00000000U, 0x0926AFE3U }, /* XSUM_XXH32_testdata[7210] */ + { 3605, 0x9E3779B1U, 0xDBD7C475U }, /* XSUM_XXH32_testdata[7211] */ + { 3606, 0x00000000U, 0x7B5FCD93U }, /* XSUM_XXH32_testdata[7212] */ + { 3606, 0x9E3779B1U, 0xC5220832U }, /* XSUM_XXH32_testdata[7213] */ + { 3607, 0x00000000U, 0xABE80EF3U }, /* XSUM_XXH32_testdata[7214] */ + { 3607, 0x9E3779B1U, 0xCE0C1C05U }, /* XSUM_XXH32_testdata[7215] */ + { 3608, 0x00000000U, 0xB1BDDC30U }, /* XSUM_XXH32_testdata[7216] */ + { 3608, 0x9E3779B1U, 0x20010F7CU }, /* XSUM_XXH32_testdata[7217] */ + { 3609, 0x00000000U, 0x07CFED4AU }, /* XSUM_XXH32_testdata[7218] */ + { 3609, 0x9E3779B1U, 0x85A74074U }, /* XSUM_XXH32_testdata[7219] */ + { 3610, 0x00000000U, 0xDBD8BA2DU }, /* XSUM_XXH32_testdata[7220] */ + { 3610, 0x9E3779B1U, 0xFC3E98F8U }, /* XSUM_XXH32_testdata[7221] */ + { 3611, 0x00000000U, 0x8FE9E2FBU }, /* XSUM_XXH32_testdata[7222] */ + { 3611, 0x9E3779B1U, 0xFA564F48U }, /* XSUM_XXH32_testdata[7223] */ + { 3612, 0x00000000U, 0x05C87C18U }, /* XSUM_XXH32_testdata[7224] */ + { 3612, 0x9E3779B1U, 0x33734232U }, /* XSUM_XXH32_testdata[7225] */ + { 3613, 0x00000000U, 0x3D6E0DE9U }, /* XSUM_XXH32_testdata[7226] */ + { 3613, 0x9E3779B1U, 0x3B09945EU }, /* XSUM_XXH32_testdata[7227] */ + { 3614, 0x00000000U, 0x2E2805ACU }, /* XSUM_XXH32_testdata[7228] */ + { 3614, 0x9E3779B1U, 0x746DD566U }, /* XSUM_XXH32_testdata[7229] */ + { 3615, 0x00000000U, 0x23B192C0U }, /* XSUM_XXH32_testdata[7230] */ + { 3615, 0x9E3779B1U, 0xF8A65F68U }, /* XSUM_XXH32_testdata[7231] */ + { 3616, 0x00000000U, 0x6D4B9060U }, /* XSUM_XXH32_testdata[7232] */ + { 3616, 0x9E3779B1U, 0x9FB9D735U }, /* XSUM_XXH32_testdata[7233] */ + { 3617, 0x00000000U, 0xD0D5B57EU }, /* XSUM_XXH32_testdata[7234] */ + { 3617, 0x9E3779B1U, 0xFFC976E4U }, /* XSUM_XXH32_testdata[7235] */ + { 3618, 0x00000000U, 0x018D8944U }, /* XSUM_XXH32_testdata[7236] */ + { 3618, 0x9E3779B1U, 0x1181CB90U }, /* XSUM_XXH32_testdata[7237] */ + { 3619, 0x00000000U, 0x91CA159AU }, /* XSUM_XXH32_testdata[7238] */ + { 3619, 0x9E3779B1U, 0x55CBBA05U }, /* XSUM_XXH32_testdata[7239] */ + { 3620, 0x00000000U, 0x3A3822BAU }, /* XSUM_XXH32_testdata[7240] */ + { 3620, 0x9E3779B1U, 0x405DE479U }, /* XSUM_XXH32_testdata[7241] */ + { 3621, 0x00000000U, 0xE3008463U }, /* XSUM_XXH32_testdata[7242] */ + { 3621, 0x9E3779B1U, 0xBC60BB0CU }, /* XSUM_XXH32_testdata[7243] */ + { 3622, 0x00000000U, 0x0D7781DFU }, /* XSUM_XXH32_testdata[7244] */ + { 3622, 0x9E3779B1U, 0xBC99B44AU }, /* XSUM_XXH32_testdata[7245] */ + { 3623, 0x00000000U, 0xA6A82918U }, /* XSUM_XXH32_testdata[7246] */ + { 3623, 0x9E3779B1U, 0x04574148U }, /* XSUM_XXH32_testdata[7247] */ + { 3624, 0x00000000U, 0xCE79503BU }, /* XSUM_XXH32_testdata[7248] */ + { 3624, 0x9E3779B1U, 0xF13AE2DAU }, /* XSUM_XXH32_testdata[7249] */ + { 3625, 0x00000000U, 0xDD749303U }, /* XSUM_XXH32_testdata[7250] */ + { 3625, 0x9E3779B1U, 0x7A3FA3F5U }, /* XSUM_XXH32_testdata[7251] */ + { 3626, 0x00000000U, 0x05F3B13FU }, /* XSUM_XXH32_testdata[7252] */ + { 3626, 0x9E3779B1U, 0xDCCCA732U }, /* XSUM_XXH32_testdata[7253] */ + { 3627, 0x00000000U, 0xFD0ED277U }, /* XSUM_XXH32_testdata[7254] */ + { 3627, 0x9E3779B1U, 0x292D4ED1U }, /* XSUM_XXH32_testdata[7255] */ + { 3628, 0x00000000U, 0xE0E69D0DU }, /* XSUM_XXH32_testdata[7256] */ + { 3628, 0x9E3779B1U, 0x7A94BC7AU }, /* XSUM_XXH32_testdata[7257] */ + { 3629, 0x00000000U, 0xB1729762U }, /* XSUM_XXH32_testdata[7258] */ + { 3629, 0x9E3779B1U, 0x78782C54U }, /* XSUM_XXH32_testdata[7259] */ + { 3630, 0x00000000U, 0xA53435FFU }, /* XSUM_XXH32_testdata[7260] */ + { 3630, 0x9E3779B1U, 0x05E96413U }, /* XSUM_XXH32_testdata[7261] */ + { 3631, 0x00000000U, 0x24E8B9BAU }, /* XSUM_XXH32_testdata[7262] */ + { 3631, 0x9E3779B1U, 0x068F987BU }, /* XSUM_XXH32_testdata[7263] */ + { 3632, 0x00000000U, 0xA1D8B4CBU }, /* XSUM_XXH32_testdata[7264] */ + { 3632, 0x9E3779B1U, 0xBD6FD879U }, /* XSUM_XXH32_testdata[7265] */ + { 3633, 0x00000000U, 0x2F81612CU }, /* XSUM_XXH32_testdata[7266] */ + { 3633, 0x9E3779B1U, 0xE3CE4F02U }, /* XSUM_XXH32_testdata[7267] */ + { 3634, 0x00000000U, 0x4BECD281U }, /* XSUM_XXH32_testdata[7268] */ + { 3634, 0x9E3779B1U, 0x42D777B6U }, /* XSUM_XXH32_testdata[7269] */ + { 3635, 0x00000000U, 0xF72EB756U }, /* XSUM_XXH32_testdata[7270] */ + { 3635, 0x9E3779B1U, 0x80D63D29U }, /* XSUM_XXH32_testdata[7271] */ + { 3636, 0x00000000U, 0x1F6CE3B9U }, /* XSUM_XXH32_testdata[7272] */ + { 3636, 0x9E3779B1U, 0x100715A4U }, /* XSUM_XXH32_testdata[7273] */ + { 3637, 0x00000000U, 0x6345D314U }, /* XSUM_XXH32_testdata[7274] */ + { 3637, 0x9E3779B1U, 0xFF5303AAU }, /* XSUM_XXH32_testdata[7275] */ + { 3638, 0x00000000U, 0xF7EA7332U }, /* XSUM_XXH32_testdata[7276] */ + { 3638, 0x9E3779B1U, 0x913E1D4AU }, /* XSUM_XXH32_testdata[7277] */ + { 3639, 0x00000000U, 0xD940F160U }, /* XSUM_XXH32_testdata[7278] */ + { 3639, 0x9E3779B1U, 0x32B83120U }, /* XSUM_XXH32_testdata[7279] */ + { 3640, 0x00000000U, 0xBAA4E80DU }, /* XSUM_XXH32_testdata[7280] */ + { 3640, 0x9E3779B1U, 0xDDA189EBU }, /* XSUM_XXH32_testdata[7281] */ + { 3641, 0x00000000U, 0x090BB8C3U }, /* XSUM_XXH32_testdata[7282] */ + { 3641, 0x9E3779B1U, 0xF3477C4CU }, /* XSUM_XXH32_testdata[7283] */ + { 3642, 0x00000000U, 0xE0AE7710U }, /* XSUM_XXH32_testdata[7284] */ + { 3642, 0x9E3779B1U, 0x352779AAU }, /* XSUM_XXH32_testdata[7285] */ + { 3643, 0x00000000U, 0xEE0DDE23U }, /* XSUM_XXH32_testdata[7286] */ + { 3643, 0x9E3779B1U, 0x99297192U }, /* XSUM_XXH32_testdata[7287] */ + { 3644, 0x00000000U, 0x4FE78ECFU }, /* XSUM_XXH32_testdata[7288] */ + { 3644, 0x9E3779B1U, 0xC295548CU }, /* XSUM_XXH32_testdata[7289] */ + { 3645, 0x00000000U, 0x8003E9D6U }, /* XSUM_XXH32_testdata[7290] */ + { 3645, 0x9E3779B1U, 0xF8A5B12CU }, /* XSUM_XXH32_testdata[7291] */ + { 3646, 0x00000000U, 0xBB44D6ECU }, /* XSUM_XXH32_testdata[7292] */ + { 3646, 0x9E3779B1U, 0x4D278668U }, /* XSUM_XXH32_testdata[7293] */ + { 3647, 0x00000000U, 0x66D490B2U }, /* XSUM_XXH32_testdata[7294] */ + { 3647, 0x9E3779B1U, 0xC9BFAE22U }, /* XSUM_XXH32_testdata[7295] */ + { 3648, 0x00000000U, 0x433EEDFBU }, /* XSUM_XXH32_testdata[7296] */ + { 3648, 0x9E3779B1U, 0x6DF2AB93U }, /* XSUM_XXH32_testdata[7297] */ + { 3649, 0x00000000U, 0xAE3CC2A2U }, /* XSUM_XXH32_testdata[7298] */ + { 3649, 0x9E3779B1U, 0xFBA61A0BU }, /* XSUM_XXH32_testdata[7299] */ + { 3650, 0x00000000U, 0xD4B857B4U }, /* XSUM_XXH32_testdata[7300] */ + { 3650, 0x9E3779B1U, 0x8613D6D3U }, /* XSUM_XXH32_testdata[7301] */ + { 3651, 0x00000000U, 0xACA5779EU }, /* XSUM_XXH32_testdata[7302] */ + { 3651, 0x9E3779B1U, 0x2F99119FU }, /* XSUM_XXH32_testdata[7303] */ + { 3652, 0x00000000U, 0x6A73923DU }, /* XSUM_XXH32_testdata[7304] */ + { 3652, 0x9E3779B1U, 0xD6FE0D5EU }, /* XSUM_XXH32_testdata[7305] */ + { 3653, 0x00000000U, 0x4BB6A2B8U }, /* XSUM_XXH32_testdata[7306] */ + { 3653, 0x9E3779B1U, 0x5F5A48D4U }, /* XSUM_XXH32_testdata[7307] */ + { 3654, 0x00000000U, 0x264DC18AU }, /* XSUM_XXH32_testdata[7308] */ + { 3654, 0x9E3779B1U, 0xAA205A02U }, /* XSUM_XXH32_testdata[7309] */ + { 3655, 0x00000000U, 0x7702D38EU }, /* XSUM_XXH32_testdata[7310] */ + { 3655, 0x9E3779B1U, 0xD7A9C885U }, /* XSUM_XXH32_testdata[7311] */ + { 3656, 0x00000000U, 0xA2341A92U }, /* XSUM_XXH32_testdata[7312] */ + { 3656, 0x9E3779B1U, 0xEDA179DBU }, /* XSUM_XXH32_testdata[7313] */ + { 3657, 0x00000000U, 0xB2C78F40U }, /* XSUM_XXH32_testdata[7314] */ + { 3657, 0x9E3779B1U, 0x34D8E18AU }, /* XSUM_XXH32_testdata[7315] */ + { 3658, 0x00000000U, 0xF46825EAU }, /* XSUM_XXH32_testdata[7316] */ + { 3658, 0x9E3779B1U, 0x6BA4000DU }, /* XSUM_XXH32_testdata[7317] */ + { 3659, 0x00000000U, 0x272A1414U }, /* XSUM_XXH32_testdata[7318] */ + { 3659, 0x9E3779B1U, 0x1C225E88U }, /* XSUM_XXH32_testdata[7319] */ + { 3660, 0x00000000U, 0x4D40BB27U }, /* XSUM_XXH32_testdata[7320] */ + { 3660, 0x9E3779B1U, 0x86F6E4B7U }, /* XSUM_XXH32_testdata[7321] */ + { 3661, 0x00000000U, 0xE47B2164U }, /* XSUM_XXH32_testdata[7322] */ + { 3661, 0x9E3779B1U, 0x057B0989U }, /* XSUM_XXH32_testdata[7323] */ + { 3662, 0x00000000U, 0xF4F3B211U }, /* XSUM_XXH32_testdata[7324] */ + { 3662, 0x9E3779B1U, 0xA37ED698U }, /* XSUM_XXH32_testdata[7325] */ + { 3663, 0x00000000U, 0x66F56DEAU }, /* XSUM_XXH32_testdata[7326] */ + { 3663, 0x9E3779B1U, 0xB1A96290U }, /* XSUM_XXH32_testdata[7327] */ + { 3664, 0x00000000U, 0xD7C9727FU }, /* XSUM_XXH32_testdata[7328] */ + { 3664, 0x9E3779B1U, 0x23D3D26EU }, /* XSUM_XXH32_testdata[7329] */ + { 3665, 0x00000000U, 0xECEF42D3U }, /* XSUM_XXH32_testdata[7330] */ + { 3665, 0x9E3779B1U, 0x3F7AF7EBU }, /* XSUM_XXH32_testdata[7331] */ + { 3666, 0x00000000U, 0x8C1A3722U }, /* XSUM_XXH32_testdata[7332] */ + { 3666, 0x9E3779B1U, 0x5053CF8BU }, /* XSUM_XXH32_testdata[7333] */ + { 3667, 0x00000000U, 0xC0B70BF5U }, /* XSUM_XXH32_testdata[7334] */ + { 3667, 0x9E3779B1U, 0xE9C1437BU }, /* XSUM_XXH32_testdata[7335] */ + { 3668, 0x00000000U, 0xAFF57195U }, /* XSUM_XXH32_testdata[7336] */ + { 3668, 0x9E3779B1U, 0x631E9AB7U }, /* XSUM_XXH32_testdata[7337] */ + { 3669, 0x00000000U, 0xC7AAE176U }, /* XSUM_XXH32_testdata[7338] */ + { 3669, 0x9E3779B1U, 0x221A00AAU }, /* XSUM_XXH32_testdata[7339] */ + { 3670, 0x00000000U, 0x1352CD2BU }, /* XSUM_XXH32_testdata[7340] */ + { 3670, 0x9E3779B1U, 0x82FE38E4U }, /* XSUM_XXH32_testdata[7341] */ + { 3671, 0x00000000U, 0xF32EE209U }, /* XSUM_XXH32_testdata[7342] */ + { 3671, 0x9E3779B1U, 0xEDB27D0BU }, /* XSUM_XXH32_testdata[7343] */ + { 3672, 0x00000000U, 0x745030EEU }, /* XSUM_XXH32_testdata[7344] */ + { 3672, 0x9E3779B1U, 0x0A815D11U }, /* XSUM_XXH32_testdata[7345] */ + { 3673, 0x00000000U, 0x45973C5EU }, /* XSUM_XXH32_testdata[7346] */ + { 3673, 0x9E3779B1U, 0x7E73FDC1U }, /* XSUM_XXH32_testdata[7347] */ + { 3674, 0x00000000U, 0x031151AEU }, /* XSUM_XXH32_testdata[7348] */ + { 3674, 0x9E3779B1U, 0x88D82AA3U }, /* XSUM_XXH32_testdata[7349] */ + { 3675, 0x00000000U, 0x1AC982C5U }, /* XSUM_XXH32_testdata[7350] */ + { 3675, 0x9E3779B1U, 0xC63D047FU }, /* XSUM_XXH32_testdata[7351] */ + { 3676, 0x00000000U, 0x4C2E7260U }, /* XSUM_XXH32_testdata[7352] */ + { 3676, 0x9E3779B1U, 0x33271915U }, /* XSUM_XXH32_testdata[7353] */ + { 3677, 0x00000000U, 0x74A66944U }, /* XSUM_XXH32_testdata[7354] */ + { 3677, 0x9E3779B1U, 0xB8EC2F48U }, /* XSUM_XXH32_testdata[7355] */ + { 3678, 0x00000000U, 0xED58C98DU }, /* XSUM_XXH32_testdata[7356] */ + { 3678, 0x9E3779B1U, 0x61D8E0C5U }, /* XSUM_XXH32_testdata[7357] */ + { 3679, 0x00000000U, 0x5903CF0FU }, /* XSUM_XXH32_testdata[7358] */ + { 3679, 0x9E3779B1U, 0x7F4C3174U }, /* XSUM_XXH32_testdata[7359] */ + { 3680, 0x00000000U, 0x82CFC45FU }, /* XSUM_XXH32_testdata[7360] */ + { 3680, 0x9E3779B1U, 0x1058A07EU }, /* XSUM_XXH32_testdata[7361] */ + { 3681, 0x00000000U, 0x4D663B2DU }, /* XSUM_XXH32_testdata[7362] */ + { 3681, 0x9E3779B1U, 0xFAA5E9A8U }, /* XSUM_XXH32_testdata[7363] */ + { 3682, 0x00000000U, 0xA72C0F91U }, /* XSUM_XXH32_testdata[7364] */ + { 3682, 0x9E3779B1U, 0x9FD90FFBU }, /* XSUM_XXH32_testdata[7365] */ + { 3683, 0x00000000U, 0xA45A9480U }, /* XSUM_XXH32_testdata[7366] */ + { 3683, 0x9E3779B1U, 0x34593515U }, /* XSUM_XXH32_testdata[7367] */ + { 3684, 0x00000000U, 0xD9F22F8BU }, /* XSUM_XXH32_testdata[7368] */ + { 3684, 0x9E3779B1U, 0xE6B8FE71U }, /* XSUM_XXH32_testdata[7369] */ + { 3685, 0x00000000U, 0xEE13ABA8U }, /* XSUM_XXH32_testdata[7370] */ + { 3685, 0x9E3779B1U, 0x804A8630U }, /* XSUM_XXH32_testdata[7371] */ + { 3686, 0x00000000U, 0x6DFA7CE4U }, /* XSUM_XXH32_testdata[7372] */ + { 3686, 0x9E3779B1U, 0x67D09C0DU }, /* XSUM_XXH32_testdata[7373] */ + { 3687, 0x00000000U, 0x6EF8729AU }, /* XSUM_XXH32_testdata[7374] */ + { 3687, 0x9E3779B1U, 0x7B09E3BBU }, /* XSUM_XXH32_testdata[7375] */ + { 3688, 0x00000000U, 0x386E29C6U }, /* XSUM_XXH32_testdata[7376] */ + { 3688, 0x9E3779B1U, 0x601345A1U }, /* XSUM_XXH32_testdata[7377] */ + { 3689, 0x00000000U, 0xC36A10CCU }, /* XSUM_XXH32_testdata[7378] */ + { 3689, 0x9E3779B1U, 0xE62B5109U }, /* XSUM_XXH32_testdata[7379] */ + { 3690, 0x00000000U, 0x260FCC1BU }, /* XSUM_XXH32_testdata[7380] */ + { 3690, 0x9E3779B1U, 0x2B7E8B72U }, /* XSUM_XXH32_testdata[7381] */ + { 3691, 0x00000000U, 0xACA468F6U }, /* XSUM_XXH32_testdata[7382] */ + { 3691, 0x9E3779B1U, 0x6069FDF5U }, /* XSUM_XXH32_testdata[7383] */ + { 3692, 0x00000000U, 0x542352E4U }, /* XSUM_XXH32_testdata[7384] */ + { 3692, 0x9E3779B1U, 0x0B605099U }, /* XSUM_XXH32_testdata[7385] */ + { 3693, 0x00000000U, 0xA17F3D6EU }, /* XSUM_XXH32_testdata[7386] */ + { 3693, 0x9E3779B1U, 0x8063C86CU }, /* XSUM_XXH32_testdata[7387] */ + { 3694, 0x00000000U, 0x4F62B431U }, /* XSUM_XXH32_testdata[7388] */ + { 3694, 0x9E3779B1U, 0xB2BEC7F3U }, /* XSUM_XXH32_testdata[7389] */ + { 3695, 0x00000000U, 0xA8029317U }, /* XSUM_XXH32_testdata[7390] */ + { 3695, 0x9E3779B1U, 0x43618226U }, /* XSUM_XXH32_testdata[7391] */ + { 3696, 0x00000000U, 0x45706DF3U }, /* XSUM_XXH32_testdata[7392] */ + { 3696, 0x9E3779B1U, 0x2F35E653U }, /* XSUM_XXH32_testdata[7393] */ + { 3697, 0x00000000U, 0x5B284F60U }, /* XSUM_XXH32_testdata[7394] */ + { 3697, 0x9E3779B1U, 0x9852317AU }, /* XSUM_XXH32_testdata[7395] */ + { 3698, 0x00000000U, 0x758BF7CDU }, /* XSUM_XXH32_testdata[7396] */ + { 3698, 0x9E3779B1U, 0xEB4568B2U }, /* XSUM_XXH32_testdata[7397] */ + { 3699, 0x00000000U, 0x5D4C2318U }, /* XSUM_XXH32_testdata[7398] */ + { 3699, 0x9E3779B1U, 0x2D32982BU }, /* XSUM_XXH32_testdata[7399] */ + { 3700, 0x00000000U, 0x33C10122U }, /* XSUM_XXH32_testdata[7400] */ + { 3700, 0x9E3779B1U, 0xA3651514U }, /* XSUM_XXH32_testdata[7401] */ + { 3701, 0x00000000U, 0x83547B57U }, /* XSUM_XXH32_testdata[7402] */ + { 3701, 0x9E3779B1U, 0x1C474766U }, /* XSUM_XXH32_testdata[7403] */ + { 3702, 0x00000000U, 0xDA116714U }, /* XSUM_XXH32_testdata[7404] */ + { 3702, 0x9E3779B1U, 0x5BD04190U }, /* XSUM_XXH32_testdata[7405] */ + { 3703, 0x00000000U, 0x3065CE83U }, /* XSUM_XXH32_testdata[7406] */ + { 3703, 0x9E3779B1U, 0xE016429DU }, /* XSUM_XXH32_testdata[7407] */ + { 3704, 0x00000000U, 0xE1CCEF1BU }, /* XSUM_XXH32_testdata[7408] */ + { 3704, 0x9E3779B1U, 0xE2B2E9FAU }, /* XSUM_XXH32_testdata[7409] */ + { 3705, 0x00000000U, 0x6178948AU }, /* XSUM_XXH32_testdata[7410] */ + { 3705, 0x9E3779B1U, 0x034FF7A6U }, /* XSUM_XXH32_testdata[7411] */ + { 3706, 0x00000000U, 0xC843319DU }, /* XSUM_XXH32_testdata[7412] */ + { 3706, 0x9E3779B1U, 0x4DD7EADBU }, /* XSUM_XXH32_testdata[7413] */ + { 3707, 0x00000000U, 0x9DF614D2U }, /* XSUM_XXH32_testdata[7414] */ + { 3707, 0x9E3779B1U, 0xF556E4DFU }, /* XSUM_XXH32_testdata[7415] */ + { 3708, 0x00000000U, 0x65256DF7U }, /* XSUM_XXH32_testdata[7416] */ + { 3708, 0x9E3779B1U, 0x0360C7BBU }, /* XSUM_XXH32_testdata[7417] */ + { 3709, 0x00000000U, 0xC64ECC4EU }, /* XSUM_XXH32_testdata[7418] */ + { 3709, 0x9E3779B1U, 0x1A9836B5U }, /* XSUM_XXH32_testdata[7419] */ + { 3710, 0x00000000U, 0x2C4F1519U }, /* XSUM_XXH32_testdata[7420] */ + { 3710, 0x9E3779B1U, 0x94413DBFU }, /* XSUM_XXH32_testdata[7421] */ + { 3711, 0x00000000U, 0x7B951D8AU }, /* XSUM_XXH32_testdata[7422] */ + { 3711, 0x9E3779B1U, 0x7A753A37U }, /* XSUM_XXH32_testdata[7423] */ + { 3712, 0x00000000U, 0x94551EA8U }, /* XSUM_XXH32_testdata[7424] */ + { 3712, 0x9E3779B1U, 0xC355F747U }, /* XSUM_XXH32_testdata[7425] */ + { 3713, 0x00000000U, 0x7CC26887U }, /* XSUM_XXH32_testdata[7426] */ + { 3713, 0x9E3779B1U, 0xDD12E48CU }, /* XSUM_XXH32_testdata[7427] */ + { 3714, 0x00000000U, 0x42DDCC2AU }, /* XSUM_XXH32_testdata[7428] */ + { 3714, 0x9E3779B1U, 0x1018E2A0U }, /* XSUM_XXH32_testdata[7429] */ + { 3715, 0x00000000U, 0xA9C63B4EU }, /* XSUM_XXH32_testdata[7430] */ + { 3715, 0x9E3779B1U, 0xC20D4B7BU }, /* XSUM_XXH32_testdata[7431] */ + { 3716, 0x00000000U, 0x2655A769U }, /* XSUM_XXH32_testdata[7432] */ + { 3716, 0x9E3779B1U, 0x76B93468U }, /* XSUM_XXH32_testdata[7433] */ + { 3717, 0x00000000U, 0x58CDE87FU }, /* XSUM_XXH32_testdata[7434] */ + { 3717, 0x9E3779B1U, 0x3C90FD52U }, /* XSUM_XXH32_testdata[7435] */ + { 3718, 0x00000000U, 0xCE78CC65U }, /* XSUM_XXH32_testdata[7436] */ + { 3718, 0x9E3779B1U, 0x06DA3AC6U }, /* XSUM_XXH32_testdata[7437] */ + { 3719, 0x00000000U, 0xD1AD787DU }, /* XSUM_XXH32_testdata[7438] */ + { 3719, 0x9E3779B1U, 0x86BD7E31U }, /* XSUM_XXH32_testdata[7439] */ + { 3720, 0x00000000U, 0xCE8A56A4U }, /* XSUM_XXH32_testdata[7440] */ + { 3720, 0x9E3779B1U, 0x76F383CBU }, /* XSUM_XXH32_testdata[7441] */ + { 3721, 0x00000000U, 0xDC59A031U }, /* XSUM_XXH32_testdata[7442] */ + { 3721, 0x9E3779B1U, 0x63EA3B1FU }, /* XSUM_XXH32_testdata[7443] */ + { 3722, 0x00000000U, 0xD4705B0BU }, /* XSUM_XXH32_testdata[7444] */ + { 3722, 0x9E3779B1U, 0x56FBC37BU }, /* XSUM_XXH32_testdata[7445] */ + { 3723, 0x00000000U, 0xE62BD3C4U }, /* XSUM_XXH32_testdata[7446] */ + { 3723, 0x9E3779B1U, 0x0B23AB6FU }, /* XSUM_XXH32_testdata[7447] */ + { 3724, 0x00000000U, 0xE40798AEU }, /* XSUM_XXH32_testdata[7448] */ + { 3724, 0x9E3779B1U, 0xEC2AC096U }, /* XSUM_XXH32_testdata[7449] */ + { 3725, 0x00000000U, 0xC3396E38U }, /* XSUM_XXH32_testdata[7450] */ + { 3725, 0x9E3779B1U, 0x983FAF13U }, /* XSUM_XXH32_testdata[7451] */ + { 3726, 0x00000000U, 0x987997A1U }, /* XSUM_XXH32_testdata[7452] */ + { 3726, 0x9E3779B1U, 0x9DC3BBBCU }, /* XSUM_XXH32_testdata[7453] */ + { 3727, 0x00000000U, 0xE340542AU }, /* XSUM_XXH32_testdata[7454] */ + { 3727, 0x9E3779B1U, 0xBF89855AU }, /* XSUM_XXH32_testdata[7455] */ + { 3728, 0x00000000U, 0xCF6DD7D7U }, /* XSUM_XXH32_testdata[7456] */ + { 3728, 0x9E3779B1U, 0x320DCDC9U }, /* XSUM_XXH32_testdata[7457] */ + { 3729, 0x00000000U, 0x1D4EC2D6U }, /* XSUM_XXH32_testdata[7458] */ + { 3729, 0x9E3779B1U, 0x4858512FU }, /* XSUM_XXH32_testdata[7459] */ + { 3730, 0x00000000U, 0xB1C37596U }, /* XSUM_XXH32_testdata[7460] */ + { 3730, 0x9E3779B1U, 0x510EC4C0U }, /* XSUM_XXH32_testdata[7461] */ + { 3731, 0x00000000U, 0xF1148C52U }, /* XSUM_XXH32_testdata[7462] */ + { 3731, 0x9E3779B1U, 0x6C7F9A14U }, /* XSUM_XXH32_testdata[7463] */ + { 3732, 0x00000000U, 0x28583BAFU }, /* XSUM_XXH32_testdata[7464] */ + { 3732, 0x9E3779B1U, 0x7EEABB00U }, /* XSUM_XXH32_testdata[7465] */ + { 3733, 0x00000000U, 0xC21AD3E6U }, /* XSUM_XXH32_testdata[7466] */ + { 3733, 0x9E3779B1U, 0x30102CDDU }, /* XSUM_XXH32_testdata[7467] */ + { 3734, 0x00000000U, 0xD2817B73U }, /* XSUM_XXH32_testdata[7468] */ + { 3734, 0x9E3779B1U, 0x5E22FAD0U }, /* XSUM_XXH32_testdata[7469] */ + { 3735, 0x00000000U, 0x8A649B6DU }, /* XSUM_XXH32_testdata[7470] */ + { 3735, 0x9E3779B1U, 0xD78309FDU }, /* XSUM_XXH32_testdata[7471] */ + { 3736, 0x00000000U, 0xC45E2BFAU }, /* XSUM_XXH32_testdata[7472] */ + { 3736, 0x9E3779B1U, 0xBF3DE1C6U }, /* XSUM_XXH32_testdata[7473] */ + { 3737, 0x00000000U, 0x69636B85U }, /* XSUM_XXH32_testdata[7474] */ + { 3737, 0x9E3779B1U, 0x5D086E83U }, /* XSUM_XXH32_testdata[7475] */ + { 3738, 0x00000000U, 0x27896AF6U }, /* XSUM_XXH32_testdata[7476] */ + { 3738, 0x9E3779B1U, 0xDC7033BEU }, /* XSUM_XXH32_testdata[7477] */ + { 3739, 0x00000000U, 0xC06DD178U }, /* XSUM_XXH32_testdata[7478] */ + { 3739, 0x9E3779B1U, 0x3293F1A1U }, /* XSUM_XXH32_testdata[7479] */ + { 3740, 0x00000000U, 0x582BFEF5U }, /* XSUM_XXH32_testdata[7480] */ + { 3740, 0x9E3779B1U, 0xA3943411U }, /* XSUM_XXH32_testdata[7481] */ + { 3741, 0x00000000U, 0x9AA2E420U }, /* XSUM_XXH32_testdata[7482] */ + { 3741, 0x9E3779B1U, 0x57C2A2BBU }, /* XSUM_XXH32_testdata[7483] */ + { 3742, 0x00000000U, 0xF3A7CAABU }, /* XSUM_XXH32_testdata[7484] */ + { 3742, 0x9E3779B1U, 0x282ECF0CU }, /* XSUM_XXH32_testdata[7485] */ + { 3743, 0x00000000U, 0x1EAB3669U }, /* XSUM_XXH32_testdata[7486] */ + { 3743, 0x9E3779B1U, 0xF735DC31U }, /* XSUM_XXH32_testdata[7487] */ + { 3744, 0x00000000U, 0x0F98E12BU }, /* XSUM_XXH32_testdata[7488] */ + { 3744, 0x9E3779B1U, 0xDDB74BD3U }, /* XSUM_XXH32_testdata[7489] */ + { 3745, 0x00000000U, 0x2A215D59U }, /* XSUM_XXH32_testdata[7490] */ + { 3745, 0x9E3779B1U, 0x1009D718U }, /* XSUM_XXH32_testdata[7491] */ + { 3746, 0x00000000U, 0xD2BCF5A7U }, /* XSUM_XXH32_testdata[7492] */ + { 3746, 0x9E3779B1U, 0x7CD00940U }, /* XSUM_XXH32_testdata[7493] */ + { 3747, 0x00000000U, 0x6ACD349DU }, /* XSUM_XXH32_testdata[7494] */ + { 3747, 0x9E3779B1U, 0x0E293019U }, /* XSUM_XXH32_testdata[7495] */ + { 3748, 0x00000000U, 0x7FCC22EDU }, /* XSUM_XXH32_testdata[7496] */ + { 3748, 0x9E3779B1U, 0xBE7BF9D8U }, /* XSUM_XXH32_testdata[7497] */ + { 3749, 0x00000000U, 0xDE21C74CU }, /* XSUM_XXH32_testdata[7498] */ + { 3749, 0x9E3779B1U, 0xC41A1848U }, /* XSUM_XXH32_testdata[7499] */ + { 3750, 0x00000000U, 0x4721843AU }, /* XSUM_XXH32_testdata[7500] */ + { 3750, 0x9E3779B1U, 0x2001D2FFU }, /* XSUM_XXH32_testdata[7501] */ + { 3751, 0x00000000U, 0x72F4FA40U }, /* XSUM_XXH32_testdata[7502] */ + { 3751, 0x9E3779B1U, 0xEBC00440U }, /* XSUM_XXH32_testdata[7503] */ + { 3752, 0x00000000U, 0x36E7C784U }, /* XSUM_XXH32_testdata[7504] */ + { 3752, 0x9E3779B1U, 0x6D483275U }, /* XSUM_XXH32_testdata[7505] */ + { 3753, 0x00000000U, 0x0066FD36U }, /* XSUM_XXH32_testdata[7506] */ + { 3753, 0x9E3779B1U, 0x88F76FBCU }, /* XSUM_XXH32_testdata[7507] */ + { 3754, 0x00000000U, 0x8518918BU }, /* XSUM_XXH32_testdata[7508] */ + { 3754, 0x9E3779B1U, 0x186D0EC1U }, /* XSUM_XXH32_testdata[7509] */ + { 3755, 0x00000000U, 0x0DA7E4B3U }, /* XSUM_XXH32_testdata[7510] */ + { 3755, 0x9E3779B1U, 0xF003D842U }, /* XSUM_XXH32_testdata[7511] */ + { 3756, 0x00000000U, 0x4A2A9BACU }, /* XSUM_XXH32_testdata[7512] */ + { 3756, 0x9E3779B1U, 0x014FE30AU }, /* XSUM_XXH32_testdata[7513] */ + { 3757, 0x00000000U, 0xC8C74DADU }, /* XSUM_XXH32_testdata[7514] */ + { 3757, 0x9E3779B1U, 0x3B03D198U }, /* XSUM_XXH32_testdata[7515] */ + { 3758, 0x00000000U, 0x85394D70U }, /* XSUM_XXH32_testdata[7516] */ + { 3758, 0x9E3779B1U, 0x79633D94U }, /* XSUM_XXH32_testdata[7517] */ + { 3759, 0x00000000U, 0xA9AFA1F8U }, /* XSUM_XXH32_testdata[7518] */ + { 3759, 0x9E3779B1U, 0x0C1AD4B0U }, /* XSUM_XXH32_testdata[7519] */ + { 3760, 0x00000000U, 0x3FDBC6FCU }, /* XSUM_XXH32_testdata[7520] */ + { 3760, 0x9E3779B1U, 0x7CE81D25U }, /* XSUM_XXH32_testdata[7521] */ + { 3761, 0x00000000U, 0xAFB9F7D6U }, /* XSUM_XXH32_testdata[7522] */ + { 3761, 0x9E3779B1U, 0xBF8B8874U }, /* XSUM_XXH32_testdata[7523] */ + { 3762, 0x00000000U, 0xC6FDAD8EU }, /* XSUM_XXH32_testdata[7524] */ + { 3762, 0x9E3779B1U, 0x7893396FU }, /* XSUM_XXH32_testdata[7525] */ + { 3763, 0x00000000U, 0x01EDA010U }, /* XSUM_XXH32_testdata[7526] */ + { 3763, 0x9E3779B1U, 0xCA04CD1AU }, /* XSUM_XXH32_testdata[7527] */ + { 3764, 0x00000000U, 0xBA4019EAU }, /* XSUM_XXH32_testdata[7528] */ + { 3764, 0x9E3779B1U, 0x9A4E4382U }, /* XSUM_XXH32_testdata[7529] */ + { 3765, 0x00000000U, 0xA38F0B87U }, /* XSUM_XXH32_testdata[7530] */ + { 3765, 0x9E3779B1U, 0xAC29BF75U }, /* XSUM_XXH32_testdata[7531] */ + { 3766, 0x00000000U, 0x781A7878U }, /* XSUM_XXH32_testdata[7532] */ + { 3766, 0x9E3779B1U, 0xE7BC06E5U }, /* XSUM_XXH32_testdata[7533] */ + { 3767, 0x00000000U, 0x625E85B7U }, /* XSUM_XXH32_testdata[7534] */ + { 3767, 0x9E3779B1U, 0xAF1024E5U }, /* XSUM_XXH32_testdata[7535] */ + { 3768, 0x00000000U, 0xDEB97F02U }, /* XSUM_XXH32_testdata[7536] */ + { 3768, 0x9E3779B1U, 0xA00DB23EU }, /* XSUM_XXH32_testdata[7537] */ + { 3769, 0x00000000U, 0x7A62CC22U }, /* XSUM_XXH32_testdata[7538] */ + { 3769, 0x9E3779B1U, 0x1F907841U }, /* XSUM_XXH32_testdata[7539] */ + { 3770, 0x00000000U, 0xE0BDD2E2U }, /* XSUM_XXH32_testdata[7540] */ + { 3770, 0x9E3779B1U, 0xE86684CAU }, /* XSUM_XXH32_testdata[7541] */ + { 3771, 0x00000000U, 0xAF4703E1U }, /* XSUM_XXH32_testdata[7542] */ + { 3771, 0x9E3779B1U, 0x9479705BU }, /* XSUM_XXH32_testdata[7543] */ + { 3772, 0x00000000U, 0xB1BAD969U }, /* XSUM_XXH32_testdata[7544] */ + { 3772, 0x9E3779B1U, 0x385EE455U }, /* XSUM_XXH32_testdata[7545] */ + { 3773, 0x00000000U, 0x259496C2U }, /* XSUM_XXH32_testdata[7546] */ + { 3773, 0x9E3779B1U, 0x40506A4DU }, /* XSUM_XXH32_testdata[7547] */ + { 3774, 0x00000000U, 0xC617BBDBU }, /* XSUM_XXH32_testdata[7548] */ + { 3774, 0x9E3779B1U, 0xC3DA4B56U }, /* XSUM_XXH32_testdata[7549] */ + { 3775, 0x00000000U, 0x16887332U }, /* XSUM_XXH32_testdata[7550] */ + { 3775, 0x9E3779B1U, 0xC76DD0CAU }, /* XSUM_XXH32_testdata[7551] */ + { 3776, 0x00000000U, 0x4042E3EAU }, /* XSUM_XXH32_testdata[7552] */ + { 3776, 0x9E3779B1U, 0x0B214C11U }, /* XSUM_XXH32_testdata[7553] */ + { 3777, 0x00000000U, 0x2B97F997U }, /* XSUM_XXH32_testdata[7554] */ + { 3777, 0x9E3779B1U, 0x7830BAECU }, /* XSUM_XXH32_testdata[7555] */ + { 3778, 0x00000000U, 0x9CD1ECA8U }, /* XSUM_XXH32_testdata[7556] */ + { 3778, 0x9E3779B1U, 0x2A17A4A8U }, /* XSUM_XXH32_testdata[7557] */ + { 3779, 0x00000000U, 0x7A679A14U }, /* XSUM_XXH32_testdata[7558] */ + { 3779, 0x9E3779B1U, 0xC2C58E4CU }, /* XSUM_XXH32_testdata[7559] */ + { 3780, 0x00000000U, 0xDBE9D278U }, /* XSUM_XXH32_testdata[7560] */ + { 3780, 0x9E3779B1U, 0xDD4BBC34U }, /* XSUM_XXH32_testdata[7561] */ + { 3781, 0x00000000U, 0x671FAA61U }, /* XSUM_XXH32_testdata[7562] */ + { 3781, 0x9E3779B1U, 0x8740D41EU }, /* XSUM_XXH32_testdata[7563] */ + { 3782, 0x00000000U, 0xF6B28D11U }, /* XSUM_XXH32_testdata[7564] */ + { 3782, 0x9E3779B1U, 0x5A6708FBU }, /* XSUM_XXH32_testdata[7565] */ + { 3783, 0x00000000U, 0xBB097B12U }, /* XSUM_XXH32_testdata[7566] */ + { 3783, 0x9E3779B1U, 0x2248392FU }, /* XSUM_XXH32_testdata[7567] */ + { 3784, 0x00000000U, 0x36755952U }, /* XSUM_XXH32_testdata[7568] */ + { 3784, 0x9E3779B1U, 0x8FFAE0DDU }, /* XSUM_XXH32_testdata[7569] */ + { 3785, 0x00000000U, 0x4DCBDF78U }, /* XSUM_XXH32_testdata[7570] */ + { 3785, 0x9E3779B1U, 0x3A50A1F1U }, /* XSUM_XXH32_testdata[7571] */ + { 3786, 0x00000000U, 0x3464AA46U }, /* XSUM_XXH32_testdata[7572] */ + { 3786, 0x9E3779B1U, 0x2BF1CB29U }, /* XSUM_XXH32_testdata[7573] */ + { 3787, 0x00000000U, 0x9D818D4BU }, /* XSUM_XXH32_testdata[7574] */ + { 3787, 0x9E3779B1U, 0x950296B4U }, /* XSUM_XXH32_testdata[7575] */ + { 3788, 0x00000000U, 0x5B5E0AEEU }, /* XSUM_XXH32_testdata[7576] */ + { 3788, 0x9E3779B1U, 0x5EE69D48U }, /* XSUM_XXH32_testdata[7577] */ + { 3789, 0x00000000U, 0x93107692U }, /* XSUM_XXH32_testdata[7578] */ + { 3789, 0x9E3779B1U, 0x3F119A9BU }, /* XSUM_XXH32_testdata[7579] */ + { 3790, 0x00000000U, 0xFB077236U }, /* XSUM_XXH32_testdata[7580] */ + { 3790, 0x9E3779B1U, 0x8F497AD8U }, /* XSUM_XXH32_testdata[7581] */ + { 3791, 0x00000000U, 0x073F52A2U }, /* XSUM_XXH32_testdata[7582] */ + { 3791, 0x9E3779B1U, 0x4CF022B4U }, /* XSUM_XXH32_testdata[7583] */ + { 3792, 0x00000000U, 0xB0AC0606U }, /* XSUM_XXH32_testdata[7584] */ + { 3792, 0x9E3779B1U, 0x57004481U }, /* XSUM_XXH32_testdata[7585] */ + { 3793, 0x00000000U, 0xCC986268U }, /* XSUM_XXH32_testdata[7586] */ + { 3793, 0x9E3779B1U, 0x7A84AE37U }, /* XSUM_XXH32_testdata[7587] */ + { 3794, 0x00000000U, 0xAF087FC8U }, /* XSUM_XXH32_testdata[7588] */ + { 3794, 0x9E3779B1U, 0x0D7BDB8CU }, /* XSUM_XXH32_testdata[7589] */ + { 3795, 0x00000000U, 0xA08FDF3FU }, /* XSUM_XXH32_testdata[7590] */ + { 3795, 0x9E3779B1U, 0xE5312F02U }, /* XSUM_XXH32_testdata[7591] */ + { 3796, 0x00000000U, 0xD158C24EU }, /* XSUM_XXH32_testdata[7592] */ + { 3796, 0x9E3779B1U, 0x1C34B816U }, /* XSUM_XXH32_testdata[7593] */ + { 3797, 0x00000000U, 0xD14A0C71U }, /* XSUM_XXH32_testdata[7594] */ + { 3797, 0x9E3779B1U, 0x98E2F625U }, /* XSUM_XXH32_testdata[7595] */ + { 3798, 0x00000000U, 0x0ED185A9U }, /* XSUM_XXH32_testdata[7596] */ + { 3798, 0x9E3779B1U, 0xD2B4209AU }, /* XSUM_XXH32_testdata[7597] */ + { 3799, 0x00000000U, 0x16B4D836U }, /* XSUM_XXH32_testdata[7598] */ + { 3799, 0x9E3779B1U, 0x6935896EU }, /* XSUM_XXH32_testdata[7599] */ + { 3800, 0x00000000U, 0xBD7F5CF3U }, /* XSUM_XXH32_testdata[7600] */ + { 3800, 0x9E3779B1U, 0x6BF1228DU }, /* XSUM_XXH32_testdata[7601] */ + { 3801, 0x00000000U, 0xA9D604E6U }, /* XSUM_XXH32_testdata[7602] */ + { 3801, 0x9E3779B1U, 0xB64EF668U }, /* XSUM_XXH32_testdata[7603] */ + { 3802, 0x00000000U, 0x566C56C5U }, /* XSUM_XXH32_testdata[7604] */ + { 3802, 0x9E3779B1U, 0xE65408A8U }, /* XSUM_XXH32_testdata[7605] */ + { 3803, 0x00000000U, 0x2261D4C1U }, /* XSUM_XXH32_testdata[7606] */ + { 3803, 0x9E3779B1U, 0xBE7B5254U }, /* XSUM_XXH32_testdata[7607] */ + { 3804, 0x00000000U, 0xC3A4C591U }, /* XSUM_XXH32_testdata[7608] */ + { 3804, 0x9E3779B1U, 0xABB60F26U }, /* XSUM_XXH32_testdata[7609] */ + { 3805, 0x00000000U, 0x0808A5BCU }, /* XSUM_XXH32_testdata[7610] */ + { 3805, 0x9E3779B1U, 0xDA62707BU }, /* XSUM_XXH32_testdata[7611] */ + { 3806, 0x00000000U, 0x6D063B6FU }, /* XSUM_XXH32_testdata[7612] */ + { 3806, 0x9E3779B1U, 0x9066E12FU }, /* XSUM_XXH32_testdata[7613] */ + { 3807, 0x00000000U, 0xA5AF8879U }, /* XSUM_XXH32_testdata[7614] */ + { 3807, 0x9E3779B1U, 0x6555225CU }, /* XSUM_XXH32_testdata[7615] */ + { 3808, 0x00000000U, 0xA57B153DU }, /* XSUM_XXH32_testdata[7616] */ + { 3808, 0x9E3779B1U, 0xF6C144DAU }, /* XSUM_XXH32_testdata[7617] */ + { 3809, 0x00000000U, 0xF11EA55CU }, /* XSUM_XXH32_testdata[7618] */ + { 3809, 0x9E3779B1U, 0x3B29FAF8U }, /* XSUM_XXH32_testdata[7619] */ + { 3810, 0x00000000U, 0x9B122E12U }, /* XSUM_XXH32_testdata[7620] */ + { 3810, 0x9E3779B1U, 0x9443C58AU }, /* XSUM_XXH32_testdata[7621] */ + { 3811, 0x00000000U, 0x7EAD437FU }, /* XSUM_XXH32_testdata[7622] */ + { 3811, 0x9E3779B1U, 0x8CE36F70U }, /* XSUM_XXH32_testdata[7623] */ + { 3812, 0x00000000U, 0x8C581351U }, /* XSUM_XXH32_testdata[7624] */ + { 3812, 0x9E3779B1U, 0xB0B57046U }, /* XSUM_XXH32_testdata[7625] */ + { 3813, 0x00000000U, 0xF805D1E0U }, /* XSUM_XXH32_testdata[7626] */ + { 3813, 0x9E3779B1U, 0x60660F61U }, /* XSUM_XXH32_testdata[7627] */ + { 3814, 0x00000000U, 0xFA3ABD3FU }, /* XSUM_XXH32_testdata[7628] */ + { 3814, 0x9E3779B1U, 0xD7010979U }, /* XSUM_XXH32_testdata[7629] */ + { 3815, 0x00000000U, 0x3E9877B7U }, /* XSUM_XXH32_testdata[7630] */ + { 3815, 0x9E3779B1U, 0xBB1A7C10U }, /* XSUM_XXH32_testdata[7631] */ + { 3816, 0x00000000U, 0xE97C2563U }, /* XSUM_XXH32_testdata[7632] */ + { 3816, 0x9E3779B1U, 0x3CF2051DU }, /* XSUM_XXH32_testdata[7633] */ + { 3817, 0x00000000U, 0x512A015BU }, /* XSUM_XXH32_testdata[7634] */ + { 3817, 0x9E3779B1U, 0x6396EE27U }, /* XSUM_XXH32_testdata[7635] */ + { 3818, 0x00000000U, 0x268308C0U }, /* XSUM_XXH32_testdata[7636] */ + { 3818, 0x9E3779B1U, 0x25CA8BF5U }, /* XSUM_XXH32_testdata[7637] */ + { 3819, 0x00000000U, 0xFA027E7FU }, /* XSUM_XXH32_testdata[7638] */ + { 3819, 0x9E3779B1U, 0x2178B807U }, /* XSUM_XXH32_testdata[7639] */ + { 3820, 0x00000000U, 0x1A694F3BU }, /* XSUM_XXH32_testdata[7640] */ + { 3820, 0x9E3779B1U, 0x5B528996U }, /* XSUM_XXH32_testdata[7641] */ + { 3821, 0x00000000U, 0xE0D67F72U }, /* XSUM_XXH32_testdata[7642] */ + { 3821, 0x9E3779B1U, 0x660ED706U }, /* XSUM_XXH32_testdata[7643] */ + { 3822, 0x00000000U, 0x25F7F4C1U }, /* XSUM_XXH32_testdata[7644] */ + { 3822, 0x9E3779B1U, 0x4D57BCC8U }, /* XSUM_XXH32_testdata[7645] */ + { 3823, 0x00000000U, 0x13CF3B49U }, /* XSUM_XXH32_testdata[7646] */ + { 3823, 0x9E3779B1U, 0xFB34077BU }, /* XSUM_XXH32_testdata[7647] */ + { 3824, 0x00000000U, 0x7C963D51U }, /* XSUM_XXH32_testdata[7648] */ + { 3824, 0x9E3779B1U, 0xC6EC5647U }, /* XSUM_XXH32_testdata[7649] */ + { 3825, 0x00000000U, 0x6F471912U }, /* XSUM_XXH32_testdata[7650] */ + { 3825, 0x9E3779B1U, 0x59897DA7U }, /* XSUM_XXH32_testdata[7651] */ + { 3826, 0x00000000U, 0xD89CE092U }, /* XSUM_XXH32_testdata[7652] */ + { 3826, 0x9E3779B1U, 0x3E629F91U }, /* XSUM_XXH32_testdata[7653] */ + { 3827, 0x00000000U, 0xDDFAFBAFU }, /* XSUM_XXH32_testdata[7654] */ + { 3827, 0x9E3779B1U, 0xF21FA718U }, /* XSUM_XXH32_testdata[7655] */ + { 3828, 0x00000000U, 0x26D168AEU }, /* XSUM_XXH32_testdata[7656] */ + { 3828, 0x9E3779B1U, 0xDF449306U }, /* XSUM_XXH32_testdata[7657] */ + { 3829, 0x00000000U, 0x8482205CU }, /* XSUM_XXH32_testdata[7658] */ + { 3829, 0x9E3779B1U, 0xD1CCF932U }, /* XSUM_XXH32_testdata[7659] */ + { 3830, 0x00000000U, 0xA386DD25U }, /* XSUM_XXH32_testdata[7660] */ + { 3830, 0x9E3779B1U, 0x4466D061U }, /* XSUM_XXH32_testdata[7661] */ + { 3831, 0x00000000U, 0x29149F44U }, /* XSUM_XXH32_testdata[7662] */ + { 3831, 0x9E3779B1U, 0xE1423FA6U }, /* XSUM_XXH32_testdata[7663] */ + { 3832, 0x00000000U, 0xCC7C6F70U }, /* XSUM_XXH32_testdata[7664] */ + { 3832, 0x9E3779B1U, 0x30CBCB2CU }, /* XSUM_XXH32_testdata[7665] */ + { 3833, 0x00000000U, 0x4A008AB4U }, /* XSUM_XXH32_testdata[7666] */ + { 3833, 0x9E3779B1U, 0xCDFB2F33U }, /* XSUM_XXH32_testdata[7667] */ + { 3834, 0x00000000U, 0x80B74D26U }, /* XSUM_XXH32_testdata[7668] */ + { 3834, 0x9E3779B1U, 0x5BB29910U }, /* XSUM_XXH32_testdata[7669] */ + { 3835, 0x00000000U, 0x4155EB27U }, /* XSUM_XXH32_testdata[7670] */ + { 3835, 0x9E3779B1U, 0xFFEFD30FU }, /* XSUM_XXH32_testdata[7671] */ + { 3836, 0x00000000U, 0xF3D0515CU }, /* XSUM_XXH32_testdata[7672] */ + { 3836, 0x9E3779B1U, 0x77030B2EU }, /* XSUM_XXH32_testdata[7673] */ + { 3837, 0x00000000U, 0x603D19D6U }, /* XSUM_XXH32_testdata[7674] */ + { 3837, 0x9E3779B1U, 0xCDE0AA3DU }, /* XSUM_XXH32_testdata[7675] */ + { 3838, 0x00000000U, 0x1E970D29U }, /* XSUM_XXH32_testdata[7676] */ + { 3838, 0x9E3779B1U, 0x72E45077U }, /* XSUM_XXH32_testdata[7677] */ + { 3839, 0x00000000U, 0x4A13FC3EU }, /* XSUM_XXH32_testdata[7678] */ + { 3839, 0x9E3779B1U, 0xA36D50B6U }, /* XSUM_XXH32_testdata[7679] */ + { 3840, 0x00000000U, 0x64D71DADU }, /* XSUM_XXH32_testdata[7680] */ + { 3840, 0x9E3779B1U, 0x6FAB21D5U }, /* XSUM_XXH32_testdata[7681] */ + { 3841, 0x00000000U, 0x83A03B00U }, /* XSUM_XXH32_testdata[7682] */ + { 3841, 0x9E3779B1U, 0xF97B1C8CU }, /* XSUM_XXH32_testdata[7683] */ + { 3842, 0x00000000U, 0x830B4696U }, /* XSUM_XXH32_testdata[7684] */ + { 3842, 0x9E3779B1U, 0xBC261080U }, /* XSUM_XXH32_testdata[7685] */ + { 3843, 0x00000000U, 0x43F48F8FU }, /* XSUM_XXH32_testdata[7686] */ + { 3843, 0x9E3779B1U, 0xC96C1B20U }, /* XSUM_XXH32_testdata[7687] */ + { 3844, 0x00000000U, 0xB2B8692AU }, /* XSUM_XXH32_testdata[7688] */ + { 3844, 0x9E3779B1U, 0xF84BCF24U }, /* XSUM_XXH32_testdata[7689] */ + { 3845, 0x00000000U, 0x75280EB8U }, /* XSUM_XXH32_testdata[7690] */ + { 3845, 0x9E3779B1U, 0xE8B4575EU }, /* XSUM_XXH32_testdata[7691] */ + { 3846, 0x00000000U, 0x6B463EF9U }, /* XSUM_XXH32_testdata[7692] */ + { 3846, 0x9E3779B1U, 0x1307B6EDU }, /* XSUM_XXH32_testdata[7693] */ + { 3847, 0x00000000U, 0x66EE509EU }, /* XSUM_XXH32_testdata[7694] */ + { 3847, 0x9E3779B1U, 0xDCF0B9CFU }, /* XSUM_XXH32_testdata[7695] */ + { 3848, 0x00000000U, 0x488C3A77U }, /* XSUM_XXH32_testdata[7696] */ + { 3848, 0x9E3779B1U, 0x8D622662U }, /* XSUM_XXH32_testdata[7697] */ + { 3849, 0x00000000U, 0xA370F7D5U }, /* XSUM_XXH32_testdata[7698] */ + { 3849, 0x9E3779B1U, 0xA4247CBCU }, /* XSUM_XXH32_testdata[7699] */ + { 3850, 0x00000000U, 0x14665E34U }, /* XSUM_XXH32_testdata[7700] */ + { 3850, 0x9E3779B1U, 0x5D5F50ADU }, /* XSUM_XXH32_testdata[7701] */ + { 3851, 0x00000000U, 0xF10DCC81U }, /* XSUM_XXH32_testdata[7702] */ + { 3851, 0x9E3779B1U, 0x291946B7U }, /* XSUM_XXH32_testdata[7703] */ + { 3852, 0x00000000U, 0x54BA6F1EU }, /* XSUM_XXH32_testdata[7704] */ + { 3852, 0x9E3779B1U, 0x51A1C613U }, /* XSUM_XXH32_testdata[7705] */ + { 3853, 0x00000000U, 0x67B561A9U }, /* XSUM_XXH32_testdata[7706] */ + { 3853, 0x9E3779B1U, 0xD13A6719U }, /* XSUM_XXH32_testdata[7707] */ + { 3854, 0x00000000U, 0x99279AD5U }, /* XSUM_XXH32_testdata[7708] */ + { 3854, 0x9E3779B1U, 0xD67F6BBBU }, /* XSUM_XXH32_testdata[7709] */ + { 3855, 0x00000000U, 0xCCCC7C11U }, /* XSUM_XXH32_testdata[7710] */ + { 3855, 0x9E3779B1U, 0x541B5801U }, /* XSUM_XXH32_testdata[7711] */ + { 3856, 0x00000000U, 0x59FF8418U }, /* XSUM_XXH32_testdata[7712] */ + { 3856, 0x9E3779B1U, 0xFE5C4262U }, /* XSUM_XXH32_testdata[7713] */ + { 3857, 0x00000000U, 0x24A5A1F1U }, /* XSUM_XXH32_testdata[7714] */ + { 3857, 0x9E3779B1U, 0x3ED6437EU }, /* XSUM_XXH32_testdata[7715] */ + { 3858, 0x00000000U, 0xC835939BU }, /* XSUM_XXH32_testdata[7716] */ + { 3858, 0x9E3779B1U, 0x12D23740U }, /* XSUM_XXH32_testdata[7717] */ + { 3859, 0x00000000U, 0x9CBBF05FU }, /* XSUM_XXH32_testdata[7718] */ + { 3859, 0x9E3779B1U, 0xCA6961F0U }, /* XSUM_XXH32_testdata[7719] */ + { 3860, 0x00000000U, 0x47D3D358U }, /* XSUM_XXH32_testdata[7720] */ + { 3860, 0x9E3779B1U, 0x81C043AFU }, /* XSUM_XXH32_testdata[7721] */ + { 3861, 0x00000000U, 0xE6F8D009U }, /* XSUM_XXH32_testdata[7722] */ + { 3861, 0x9E3779B1U, 0x2DB9D6BBU }, /* XSUM_XXH32_testdata[7723] */ + { 3862, 0x00000000U, 0xEE9D8258U }, /* XSUM_XXH32_testdata[7724] */ + { 3862, 0x9E3779B1U, 0x0AD8BB66U }, /* XSUM_XXH32_testdata[7725] */ + { 3863, 0x00000000U, 0x17F39421U }, /* XSUM_XXH32_testdata[7726] */ + { 3863, 0x9E3779B1U, 0x76FBB713U }, /* XSUM_XXH32_testdata[7727] */ + { 3864, 0x00000000U, 0x7EB5E7ABU }, /* XSUM_XXH32_testdata[7728] */ + { 3864, 0x9E3779B1U, 0x09DAB747U }, /* XSUM_XXH32_testdata[7729] */ + { 3865, 0x00000000U, 0x6553C5DCU }, /* XSUM_XXH32_testdata[7730] */ + { 3865, 0x9E3779B1U, 0x86094D79U }, /* XSUM_XXH32_testdata[7731] */ + { 3866, 0x00000000U, 0x6F06720CU }, /* XSUM_XXH32_testdata[7732] */ + { 3866, 0x9E3779B1U, 0x6BE9B218U }, /* XSUM_XXH32_testdata[7733] */ + { 3867, 0x00000000U, 0x78D7B8B4U }, /* XSUM_XXH32_testdata[7734] */ + { 3867, 0x9E3779B1U, 0x699D3157U }, /* XSUM_XXH32_testdata[7735] */ + { 3868, 0x00000000U, 0xA32123A3U }, /* XSUM_XXH32_testdata[7736] */ + { 3868, 0x9E3779B1U, 0x5520DC8DU }, /* XSUM_XXH32_testdata[7737] */ + { 3869, 0x00000000U, 0x03A02F04U }, /* XSUM_XXH32_testdata[7738] */ + { 3869, 0x9E3779B1U, 0x9F1F35F4U }, /* XSUM_XXH32_testdata[7739] */ + { 3870, 0x00000000U, 0x2E556B27U }, /* XSUM_XXH32_testdata[7740] */ + { 3870, 0x9E3779B1U, 0xFB34034EU }, /* XSUM_XXH32_testdata[7741] */ + { 3871, 0x00000000U, 0x9BE507B0U }, /* XSUM_XXH32_testdata[7742] */ + { 3871, 0x9E3779B1U, 0x77D459E3U }, /* XSUM_XXH32_testdata[7743] */ + { 3872, 0x00000000U, 0xF8867EF6U }, /* XSUM_XXH32_testdata[7744] */ + { 3872, 0x9E3779B1U, 0xAAB8F729U }, /* XSUM_XXH32_testdata[7745] */ + { 3873, 0x00000000U, 0xB86F54E8U }, /* XSUM_XXH32_testdata[7746] */ + { 3873, 0x9E3779B1U, 0xADEA6037U }, /* XSUM_XXH32_testdata[7747] */ + { 3874, 0x00000000U, 0xF0F47855U }, /* XSUM_XXH32_testdata[7748] */ + { 3874, 0x9E3779B1U, 0xAD8A0372U }, /* XSUM_XXH32_testdata[7749] */ + { 3875, 0x00000000U, 0x4BFE45F6U }, /* XSUM_XXH32_testdata[7750] */ + { 3875, 0x9E3779B1U, 0xE9A92812U }, /* XSUM_XXH32_testdata[7751] */ + { 3876, 0x00000000U, 0x85664BBDU }, /* XSUM_XXH32_testdata[7752] */ + { 3876, 0x9E3779B1U, 0x475BCD1CU }, /* XSUM_XXH32_testdata[7753] */ + { 3877, 0x00000000U, 0x08B6213CU }, /* XSUM_XXH32_testdata[7754] */ + { 3877, 0x9E3779B1U, 0x1C8A380BU }, /* XSUM_XXH32_testdata[7755] */ + { 3878, 0x00000000U, 0xFC13434DU }, /* XSUM_XXH32_testdata[7756] */ + { 3878, 0x9E3779B1U, 0x50D6DEC6U }, /* XSUM_XXH32_testdata[7757] */ + { 3879, 0x00000000U, 0xAF9F3EF2U }, /* XSUM_XXH32_testdata[7758] */ + { 3879, 0x9E3779B1U, 0xAA199D3FU }, /* XSUM_XXH32_testdata[7759] */ + { 3880, 0x00000000U, 0x0FB75606U }, /* XSUM_XXH32_testdata[7760] */ + { 3880, 0x9E3779B1U, 0xFF0F8F02U }, /* XSUM_XXH32_testdata[7761] */ + { 3881, 0x00000000U, 0x7895EC0AU }, /* XSUM_XXH32_testdata[7762] */ + { 3881, 0x9E3779B1U, 0x7E7178EDU }, /* XSUM_XXH32_testdata[7763] */ + { 3882, 0x00000000U, 0xE5093ED9U }, /* XSUM_XXH32_testdata[7764] */ + { 3882, 0x9E3779B1U, 0x79C61301U }, /* XSUM_XXH32_testdata[7765] */ + { 3883, 0x00000000U, 0x3E9FF4E9U }, /* XSUM_XXH32_testdata[7766] */ + { 3883, 0x9E3779B1U, 0x4812F2BAU }, /* XSUM_XXH32_testdata[7767] */ + { 3884, 0x00000000U, 0xC5D7B46BU }, /* XSUM_XXH32_testdata[7768] */ + { 3884, 0x9E3779B1U, 0x1FD4AEA0U }, /* XSUM_XXH32_testdata[7769] */ + { 3885, 0x00000000U, 0xACCFF8B2U }, /* XSUM_XXH32_testdata[7770] */ + { 3885, 0x9E3779B1U, 0xB0D6E70DU }, /* XSUM_XXH32_testdata[7771] */ + { 3886, 0x00000000U, 0xD883BCFEU }, /* XSUM_XXH32_testdata[7772] */ + { 3886, 0x9E3779B1U, 0x8B5A2BA1U }, /* XSUM_XXH32_testdata[7773] */ + { 3887, 0x00000000U, 0x2D8E54D0U }, /* XSUM_XXH32_testdata[7774] */ + { 3887, 0x9E3779B1U, 0x9C204837U }, /* XSUM_XXH32_testdata[7775] */ + { 3888, 0x00000000U, 0x83CD7601U }, /* XSUM_XXH32_testdata[7776] */ + { 3888, 0x9E3779B1U, 0x15F8C4A8U }, /* XSUM_XXH32_testdata[7777] */ + { 3889, 0x00000000U, 0xCE768A19U }, /* XSUM_XXH32_testdata[7778] */ + { 3889, 0x9E3779B1U, 0xE06D4D94U }, /* XSUM_XXH32_testdata[7779] */ + { 3890, 0x00000000U, 0xD90533A1U }, /* XSUM_XXH32_testdata[7780] */ + { 3890, 0x9E3779B1U, 0x56FD9684U }, /* XSUM_XXH32_testdata[7781] */ + { 3891, 0x00000000U, 0xEC927BDDU }, /* XSUM_XXH32_testdata[7782] */ + { 3891, 0x9E3779B1U, 0xAA9D091FU }, /* XSUM_XXH32_testdata[7783] */ + { 3892, 0x00000000U, 0x1E6EF7E6U }, /* XSUM_XXH32_testdata[7784] */ + { 3892, 0x9E3779B1U, 0x7565B2A7U }, /* XSUM_XXH32_testdata[7785] */ + { 3893, 0x00000000U, 0xD01A9944U }, /* XSUM_XXH32_testdata[7786] */ + { 3893, 0x9E3779B1U, 0x46811809U }, /* XSUM_XXH32_testdata[7787] */ + { 3894, 0x00000000U, 0x68D85B5CU }, /* XSUM_XXH32_testdata[7788] */ + { 3894, 0x9E3779B1U, 0x792D991FU }, /* XSUM_XXH32_testdata[7789] */ + { 3895, 0x00000000U, 0x7A269257U }, /* XSUM_XXH32_testdata[7790] */ + { 3895, 0x9E3779B1U, 0xEF7146FDU }, /* XSUM_XXH32_testdata[7791] */ + { 3896, 0x00000000U, 0x61AE98B1U }, /* XSUM_XXH32_testdata[7792] */ + { 3896, 0x9E3779B1U, 0xCD2B36A1U }, /* XSUM_XXH32_testdata[7793] */ + { 3897, 0x00000000U, 0x92ED305CU }, /* XSUM_XXH32_testdata[7794] */ + { 3897, 0x9E3779B1U, 0xD8ABAA0EU }, /* XSUM_XXH32_testdata[7795] */ + { 3898, 0x00000000U, 0x07C20D7CU }, /* XSUM_XXH32_testdata[7796] */ + { 3898, 0x9E3779B1U, 0xC1063B7FU }, /* XSUM_XXH32_testdata[7797] */ + { 3899, 0x00000000U, 0xDD9669A3U }, /* XSUM_XXH32_testdata[7798] */ + { 3899, 0x9E3779B1U, 0xA57E9460U }, /* XSUM_XXH32_testdata[7799] */ + { 3900, 0x00000000U, 0xBD5481DFU }, /* XSUM_XXH32_testdata[7800] */ + { 3900, 0x9E3779B1U, 0x87A60CCFU }, /* XSUM_XXH32_testdata[7801] */ + { 3901, 0x00000000U, 0x7FB1EEE6U }, /* XSUM_XXH32_testdata[7802] */ + { 3901, 0x9E3779B1U, 0x4F7549F0U }, /* XSUM_XXH32_testdata[7803] */ + { 3902, 0x00000000U, 0xCB8ED671U }, /* XSUM_XXH32_testdata[7804] */ + { 3902, 0x9E3779B1U, 0x2DE0C434U }, /* XSUM_XXH32_testdata[7805] */ + { 3903, 0x00000000U, 0x38873EFCU }, /* XSUM_XXH32_testdata[7806] */ + { 3903, 0x9E3779B1U, 0x447605A5U }, /* XSUM_XXH32_testdata[7807] */ + { 3904, 0x00000000U, 0x46A2EE4AU }, /* XSUM_XXH32_testdata[7808] */ + { 3904, 0x9E3779B1U, 0xA6D803FDU }, /* XSUM_XXH32_testdata[7809] */ + { 3905, 0x00000000U, 0x97E737CCU }, /* XSUM_XXH32_testdata[7810] */ + { 3905, 0x9E3779B1U, 0x894E7EE9U }, /* XSUM_XXH32_testdata[7811] */ + { 3906, 0x00000000U, 0x1713685FU }, /* XSUM_XXH32_testdata[7812] */ + { 3906, 0x9E3779B1U, 0xEC134F11U }, /* XSUM_XXH32_testdata[7813] */ + { 3907, 0x00000000U, 0x5DF44D5AU }, /* XSUM_XXH32_testdata[7814] */ + { 3907, 0x9E3779B1U, 0x25DEE6CBU }, /* XSUM_XXH32_testdata[7815] */ + { 3908, 0x00000000U, 0xB7A8E6E6U }, /* XSUM_XXH32_testdata[7816] */ + { 3908, 0x9E3779B1U, 0xAA650AD6U }, /* XSUM_XXH32_testdata[7817] */ + { 3909, 0x00000000U, 0xD63DF9F8U }, /* XSUM_XXH32_testdata[7818] */ + { 3909, 0x9E3779B1U, 0x266C114FU }, /* XSUM_XXH32_testdata[7819] */ + { 3910, 0x00000000U, 0xC710C6DEU }, /* XSUM_XXH32_testdata[7820] */ + { 3910, 0x9E3779B1U, 0x2A41CE4BU }, /* XSUM_XXH32_testdata[7821] */ + { 3911, 0x00000000U, 0x4BF1284FU }, /* XSUM_XXH32_testdata[7822] */ + { 3911, 0x9E3779B1U, 0x10E356B0U }, /* XSUM_XXH32_testdata[7823] */ + { 3912, 0x00000000U, 0x54348B47U }, /* XSUM_XXH32_testdata[7824] */ + { 3912, 0x9E3779B1U, 0xDBF14B37U }, /* XSUM_XXH32_testdata[7825] */ + { 3913, 0x00000000U, 0xDA2E2CADU }, /* XSUM_XXH32_testdata[7826] */ + { 3913, 0x9E3779B1U, 0xB4777FA0U }, /* XSUM_XXH32_testdata[7827] */ + { 3914, 0x00000000U, 0x4BCD511EU }, /* XSUM_XXH32_testdata[7828] */ + { 3914, 0x9E3779B1U, 0xEAA2A15AU }, /* XSUM_XXH32_testdata[7829] */ + { 3915, 0x00000000U, 0xC2D02485U }, /* XSUM_XXH32_testdata[7830] */ + { 3915, 0x9E3779B1U, 0x0F51CB6CU }, /* XSUM_XXH32_testdata[7831] */ + { 3916, 0x00000000U, 0xAD53BE44U }, /* XSUM_XXH32_testdata[7832] */ + { 3916, 0x9E3779B1U, 0xEB0D8BE7U }, /* XSUM_XXH32_testdata[7833] */ + { 3917, 0x00000000U, 0x8D170B53U }, /* XSUM_XXH32_testdata[7834] */ + { 3917, 0x9E3779B1U, 0xF5CDEE73U }, /* XSUM_XXH32_testdata[7835] */ + { 3918, 0x00000000U, 0x12B42C2BU }, /* XSUM_XXH32_testdata[7836] */ + { 3918, 0x9E3779B1U, 0xB844C9A8U }, /* XSUM_XXH32_testdata[7837] */ + { 3919, 0x00000000U, 0x94AE50ECU }, /* XSUM_XXH32_testdata[7838] */ + { 3919, 0x9E3779B1U, 0x7B615242U }, /* XSUM_XXH32_testdata[7839] */ + { 3920, 0x00000000U, 0x57849A04U }, /* XSUM_XXH32_testdata[7840] */ + { 3920, 0x9E3779B1U, 0x6D1542C2U }, /* XSUM_XXH32_testdata[7841] */ + { 3921, 0x00000000U, 0x96A96FD8U }, /* XSUM_XXH32_testdata[7842] */ + { 3921, 0x9E3779B1U, 0xE12C8EEFU }, /* XSUM_XXH32_testdata[7843] */ + { 3922, 0x00000000U, 0xF71871BEU }, /* XSUM_XXH32_testdata[7844] */ + { 3922, 0x9E3779B1U, 0x8F550F7BU }, /* XSUM_XXH32_testdata[7845] */ + { 3923, 0x00000000U, 0x515B05FFU }, /* XSUM_XXH32_testdata[7846] */ + { 3923, 0x9E3779B1U, 0x4232D861U }, /* XSUM_XXH32_testdata[7847] */ + { 3924, 0x00000000U, 0x62186A5FU }, /* XSUM_XXH32_testdata[7848] */ + { 3924, 0x9E3779B1U, 0x4BF60E1BU }, /* XSUM_XXH32_testdata[7849] */ + { 3925, 0x00000000U, 0x1C04CC6BU }, /* XSUM_XXH32_testdata[7850] */ + { 3925, 0x9E3779B1U, 0x8FC09811U }, /* XSUM_XXH32_testdata[7851] */ + { 3926, 0x00000000U, 0xB38B7CF9U }, /* XSUM_XXH32_testdata[7852] */ + { 3926, 0x9E3779B1U, 0x098EE93AU }, /* XSUM_XXH32_testdata[7853] */ + { 3927, 0x00000000U, 0x80BBC3AAU }, /* XSUM_XXH32_testdata[7854] */ + { 3927, 0x9E3779B1U, 0x477A7F6BU }, /* XSUM_XXH32_testdata[7855] */ + { 3928, 0x00000000U, 0xC01A0F3FU }, /* XSUM_XXH32_testdata[7856] */ + { 3928, 0x9E3779B1U, 0x129F6D8DU }, /* XSUM_XXH32_testdata[7857] */ + { 3929, 0x00000000U, 0x30349E91U }, /* XSUM_XXH32_testdata[7858] */ + { 3929, 0x9E3779B1U, 0xE38A368AU }, /* XSUM_XXH32_testdata[7859] */ + { 3930, 0x00000000U, 0xBAF0D68EU }, /* XSUM_XXH32_testdata[7860] */ + { 3930, 0x9E3779B1U, 0xEBD52E84U }, /* XSUM_XXH32_testdata[7861] */ + { 3931, 0x00000000U, 0x0E54AD93U }, /* XSUM_XXH32_testdata[7862] */ + { 3931, 0x9E3779B1U, 0x7771D682U }, /* XSUM_XXH32_testdata[7863] */ + { 3932, 0x00000000U, 0x70120C61U }, /* XSUM_XXH32_testdata[7864] */ + { 3932, 0x9E3779B1U, 0xF323E4D6U }, /* XSUM_XXH32_testdata[7865] */ + { 3933, 0x00000000U, 0x5A195A5CU }, /* XSUM_XXH32_testdata[7866] */ + { 3933, 0x9E3779B1U, 0x58A3D0A0U }, /* XSUM_XXH32_testdata[7867] */ + { 3934, 0x00000000U, 0xFD5D41A3U }, /* XSUM_XXH32_testdata[7868] */ + { 3934, 0x9E3779B1U, 0x74E5A0B1U }, /* XSUM_XXH32_testdata[7869] */ + { 3935, 0x00000000U, 0xB8A50FC6U }, /* XSUM_XXH32_testdata[7870] */ + { 3935, 0x9E3779B1U, 0xAF48DB2FU }, /* XSUM_XXH32_testdata[7871] */ + { 3936, 0x00000000U, 0xD2E8CD3AU }, /* XSUM_XXH32_testdata[7872] */ + { 3936, 0x9E3779B1U, 0x65B29308U }, /* XSUM_XXH32_testdata[7873] */ + { 3937, 0x00000000U, 0x15DD43EBU }, /* XSUM_XXH32_testdata[7874] */ + { 3937, 0x9E3779B1U, 0xB22163F3U }, /* XSUM_XXH32_testdata[7875] */ + { 3938, 0x00000000U, 0xE03CAE50U }, /* XSUM_XXH32_testdata[7876] */ + { 3938, 0x9E3779B1U, 0x0AF06A23U }, /* XSUM_XXH32_testdata[7877] */ + { 3939, 0x00000000U, 0xD9BDF54BU }, /* XSUM_XXH32_testdata[7878] */ + { 3939, 0x9E3779B1U, 0xC642397DU }, /* XSUM_XXH32_testdata[7879] */ + { 3940, 0x00000000U, 0x3D38D03DU }, /* XSUM_XXH32_testdata[7880] */ + { 3940, 0x9E3779B1U, 0x5FEEE2C6U }, /* XSUM_XXH32_testdata[7881] */ + { 3941, 0x00000000U, 0xE6E32787U }, /* XSUM_XXH32_testdata[7882] */ + { 3941, 0x9E3779B1U, 0xFFF4B40EU }, /* XSUM_XXH32_testdata[7883] */ + { 3942, 0x00000000U, 0x2F4D6A83U }, /* XSUM_XXH32_testdata[7884] */ + { 3942, 0x9E3779B1U, 0x784F3FDCU }, /* XSUM_XXH32_testdata[7885] */ + { 3943, 0x00000000U, 0x1861DBEAU }, /* XSUM_XXH32_testdata[7886] */ + { 3943, 0x9E3779B1U, 0xE65491B0U }, /* XSUM_XXH32_testdata[7887] */ + { 3944, 0x00000000U, 0xED77B61DU }, /* XSUM_XXH32_testdata[7888] */ + { 3944, 0x9E3779B1U, 0xDF5998F8U }, /* XSUM_XXH32_testdata[7889] */ + { 3945, 0x00000000U, 0x3DFEDD18U }, /* XSUM_XXH32_testdata[7890] */ + { 3945, 0x9E3779B1U, 0x98A63717U }, /* XSUM_XXH32_testdata[7891] */ + { 3946, 0x00000000U, 0xD30679BCU }, /* XSUM_XXH32_testdata[7892] */ + { 3946, 0x9E3779B1U, 0x47FFDD09U }, /* XSUM_XXH32_testdata[7893] */ + { 3947, 0x00000000U, 0xBBF4185CU }, /* XSUM_XXH32_testdata[7894] */ + { 3947, 0x9E3779B1U, 0x2A5BE174U }, /* XSUM_XXH32_testdata[7895] */ + { 3948, 0x00000000U, 0xBBF7C3ACU }, /* XSUM_XXH32_testdata[7896] */ + { 3948, 0x9E3779B1U, 0x739B0E6DU }, /* XSUM_XXH32_testdata[7897] */ + { 3949, 0x00000000U, 0xFDEF3CD4U }, /* XSUM_XXH32_testdata[7898] */ + { 3949, 0x9E3779B1U, 0xD7F204B5U }, /* XSUM_XXH32_testdata[7899] */ + { 3950, 0x00000000U, 0xD6077D53U }, /* XSUM_XXH32_testdata[7900] */ + { 3950, 0x9E3779B1U, 0xD71B24FCU }, /* XSUM_XXH32_testdata[7901] */ + { 3951, 0x00000000U, 0x02183811U }, /* XSUM_XXH32_testdata[7902] */ + { 3951, 0x9E3779B1U, 0x6EB8E187U }, /* XSUM_XXH32_testdata[7903] */ + { 3952, 0x00000000U, 0x91A2A9D7U }, /* XSUM_XXH32_testdata[7904] */ + { 3952, 0x9E3779B1U, 0xAEB507EBU }, /* XSUM_XXH32_testdata[7905] */ + { 3953, 0x00000000U, 0x009FD0ABU }, /* XSUM_XXH32_testdata[7906] */ + { 3953, 0x9E3779B1U, 0x379C3117U }, /* XSUM_XXH32_testdata[7907] */ + { 3954, 0x00000000U, 0xF43CF27BU }, /* XSUM_XXH32_testdata[7908] */ + { 3954, 0x9E3779B1U, 0x041CED72U }, /* XSUM_XXH32_testdata[7909] */ + { 3955, 0x00000000U, 0xB8E4417DU }, /* XSUM_XXH32_testdata[7910] */ + { 3955, 0x9E3779B1U, 0x2D607114U }, /* XSUM_XXH32_testdata[7911] */ + { 3956, 0x00000000U, 0xED6BB1E7U }, /* XSUM_XXH32_testdata[7912] */ + { 3956, 0x9E3779B1U, 0xBC5E1C33U }, /* XSUM_XXH32_testdata[7913] */ + { 3957, 0x00000000U, 0xA5DBB09CU }, /* XSUM_XXH32_testdata[7914] */ + { 3957, 0x9E3779B1U, 0x5D23CCD5U }, /* XSUM_XXH32_testdata[7915] */ + { 3958, 0x00000000U, 0x546EB3A1U }, /* XSUM_XXH32_testdata[7916] */ + { 3958, 0x9E3779B1U, 0x996CC849U }, /* XSUM_XXH32_testdata[7917] */ + { 3959, 0x00000000U, 0x129F18C6U }, /* XSUM_XXH32_testdata[7918] */ + { 3959, 0x9E3779B1U, 0x0C81A2F7U }, /* XSUM_XXH32_testdata[7919] */ + { 3960, 0x00000000U, 0x4C9C18FCU }, /* XSUM_XXH32_testdata[7920] */ + { 3960, 0x9E3779B1U, 0x93EC97C6U }, /* XSUM_XXH32_testdata[7921] */ + { 3961, 0x00000000U, 0xB130E577U }, /* XSUM_XXH32_testdata[7922] */ + { 3961, 0x9E3779B1U, 0x8399678EU }, /* XSUM_XXH32_testdata[7923] */ + { 3962, 0x00000000U, 0x16815988U }, /* XSUM_XXH32_testdata[7924] */ + { 3962, 0x9E3779B1U, 0x37CEA8F9U }, /* XSUM_XXH32_testdata[7925] */ + { 3963, 0x00000000U, 0x5F727B8BU }, /* XSUM_XXH32_testdata[7926] */ + { 3963, 0x9E3779B1U, 0x94EF49EBU }, /* XSUM_XXH32_testdata[7927] */ + { 3964, 0x00000000U, 0x005FE263U }, /* XSUM_XXH32_testdata[7928] */ + { 3964, 0x9E3779B1U, 0x3509DBD5U }, /* XSUM_XXH32_testdata[7929] */ + { 3965, 0x00000000U, 0xFA8A772DU }, /* XSUM_XXH32_testdata[7930] */ + { 3965, 0x9E3779B1U, 0x374BF0C0U }, /* XSUM_XXH32_testdata[7931] */ + { 3966, 0x00000000U, 0x340C8BD0U }, /* XSUM_XXH32_testdata[7932] */ + { 3966, 0x9E3779B1U, 0x8809F49EU }, /* XSUM_XXH32_testdata[7933] */ + { 3967, 0x00000000U, 0x8469698DU }, /* XSUM_XXH32_testdata[7934] */ + { 3967, 0x9E3779B1U, 0x2689C53EU }, /* XSUM_XXH32_testdata[7935] */ + { 3968, 0x00000000U, 0x4AA457D5U }, /* XSUM_XXH32_testdata[7936] */ + { 3968, 0x9E3779B1U, 0x7D34F283U }, /* XSUM_XXH32_testdata[7937] */ + { 3969, 0x00000000U, 0xBC3DD886U }, /* XSUM_XXH32_testdata[7938] */ + { 3969, 0x9E3779B1U, 0xE76AF62EU }, /* XSUM_XXH32_testdata[7939] */ + { 3970, 0x00000000U, 0xDEF74F9FU }, /* XSUM_XXH32_testdata[7940] */ + { 3970, 0x9E3779B1U, 0xF1CCA937U }, /* XSUM_XXH32_testdata[7941] */ + { 3971, 0x00000000U, 0xA06416ADU }, /* XSUM_XXH32_testdata[7942] */ + { 3971, 0x9E3779B1U, 0x8E5F9379U }, /* XSUM_XXH32_testdata[7943] */ + { 3972, 0x00000000U, 0xF56A5888U }, /* XSUM_XXH32_testdata[7944] */ + { 3972, 0x9E3779B1U, 0x4FC281A3U }, /* XSUM_XXH32_testdata[7945] */ + { 3973, 0x00000000U, 0x9A4D2068U }, /* XSUM_XXH32_testdata[7946] */ + { 3973, 0x9E3779B1U, 0x757745DDU }, /* XSUM_XXH32_testdata[7947] */ + { 3974, 0x00000000U, 0x349B228AU }, /* XSUM_XXH32_testdata[7948] */ + { 3974, 0x9E3779B1U, 0x4051D17AU }, /* XSUM_XXH32_testdata[7949] */ + { 3975, 0x00000000U, 0x82E47D9BU }, /* XSUM_XXH32_testdata[7950] */ + { 3975, 0x9E3779B1U, 0x4E14B2E8U }, /* XSUM_XXH32_testdata[7951] */ + { 3976, 0x00000000U, 0x994667A4U }, /* XSUM_XXH32_testdata[7952] */ + { 3976, 0x9E3779B1U, 0x0D7851F9U }, /* XSUM_XXH32_testdata[7953] */ + { 3977, 0x00000000U, 0x469709EFU }, /* XSUM_XXH32_testdata[7954] */ + { 3977, 0x9E3779B1U, 0xB18B1384U }, /* XSUM_XXH32_testdata[7955] */ + { 3978, 0x00000000U, 0x8D55D7C5U }, /* XSUM_XXH32_testdata[7956] */ + { 3978, 0x9E3779B1U, 0xCE7564AEU }, /* XSUM_XXH32_testdata[7957] */ + { 3979, 0x00000000U, 0x159A2019U }, /* XSUM_XXH32_testdata[7958] */ + { 3979, 0x9E3779B1U, 0xBF610D39U }, /* XSUM_XXH32_testdata[7959] */ + { 3980, 0x00000000U, 0xF245B84DU }, /* XSUM_XXH32_testdata[7960] */ + { 3980, 0x9E3779B1U, 0xCBBC6035U }, /* XSUM_XXH32_testdata[7961] */ + { 3981, 0x00000000U, 0x0B7121F2U }, /* XSUM_XXH32_testdata[7962] */ + { 3981, 0x9E3779B1U, 0xEAB0A310U }, /* XSUM_XXH32_testdata[7963] */ + { 3982, 0x00000000U, 0xFBD15931U }, /* XSUM_XXH32_testdata[7964] */ + { 3982, 0x9E3779B1U, 0xDB262017U }, /* XSUM_XXH32_testdata[7965] */ + { 3983, 0x00000000U, 0x30CF793EU }, /* XSUM_XXH32_testdata[7966] */ + { 3983, 0x9E3779B1U, 0x1B7B6BB1U }, /* XSUM_XXH32_testdata[7967] */ + { 3984, 0x00000000U, 0x43672487U }, /* XSUM_XXH32_testdata[7968] */ + { 3984, 0x9E3779B1U, 0x9F640EBDU }, /* XSUM_XXH32_testdata[7969] */ + { 3985, 0x00000000U, 0x45177CD5U }, /* XSUM_XXH32_testdata[7970] */ + { 3985, 0x9E3779B1U, 0x5DE8E756U }, /* XSUM_XXH32_testdata[7971] */ + { 3986, 0x00000000U, 0xF894E893U }, /* XSUM_XXH32_testdata[7972] */ + { 3986, 0x9E3779B1U, 0xABC53110U }, /* XSUM_XXH32_testdata[7973] */ + { 3987, 0x00000000U, 0x279056D5U }, /* XSUM_XXH32_testdata[7974] */ + { 3987, 0x9E3779B1U, 0x749207ADU }, /* XSUM_XXH32_testdata[7975] */ + { 3988, 0x00000000U, 0x95BF77B3U }, /* XSUM_XXH32_testdata[7976] */ + { 3988, 0x9E3779B1U, 0xF627095EU }, /* XSUM_XXH32_testdata[7977] */ + { 3989, 0x00000000U, 0x24E19A4EU }, /* XSUM_XXH32_testdata[7978] */ + { 3989, 0x9E3779B1U, 0x83E75840U }, /* XSUM_XXH32_testdata[7979] */ + { 3990, 0x00000000U, 0x59D793D9U }, /* XSUM_XXH32_testdata[7980] */ + { 3990, 0x9E3779B1U, 0x17A72D02U }, /* XSUM_XXH32_testdata[7981] */ + { 3991, 0x00000000U, 0xBD090BCBU }, /* XSUM_XXH32_testdata[7982] */ + { 3991, 0x9E3779B1U, 0x939877B5U }, /* XSUM_XXH32_testdata[7983] */ + { 3992, 0x00000000U, 0x67E8E064U }, /* XSUM_XXH32_testdata[7984] */ + { 3992, 0x9E3779B1U, 0x6060328CU }, /* XSUM_XXH32_testdata[7985] */ + { 3993, 0x00000000U, 0x48D8FDAEU }, /* XSUM_XXH32_testdata[7986] */ + { 3993, 0x9E3779B1U, 0x7311B50CU }, /* XSUM_XXH32_testdata[7987] */ + { 3994, 0x00000000U, 0x1BE7A43EU }, /* XSUM_XXH32_testdata[7988] */ + { 3994, 0x9E3779B1U, 0xC3A4718BU }, /* XSUM_XXH32_testdata[7989] */ + { 3995, 0x00000000U, 0x4BF31EBEU }, /* XSUM_XXH32_testdata[7990] */ + { 3995, 0x9E3779B1U, 0xBD9BA34CU }, /* XSUM_XXH32_testdata[7991] */ + { 3996, 0x00000000U, 0x838F4913U }, /* XSUM_XXH32_testdata[7992] */ + { 3996, 0x9E3779B1U, 0x73E4E8D2U }, /* XSUM_XXH32_testdata[7993] */ + { 3997, 0x00000000U, 0x815D59F1U }, /* XSUM_XXH32_testdata[7994] */ + { 3997, 0x9E3779B1U, 0x77177E48U }, /* XSUM_XXH32_testdata[7995] */ + { 3998, 0x00000000U, 0xD6870B9CU }, /* XSUM_XXH32_testdata[7996] */ + { 3998, 0x9E3779B1U, 0x46C13DA0U }, /* XSUM_XXH32_testdata[7997] */ + { 3999, 0x00000000U, 0xB8303538U }, /* XSUM_XXH32_testdata[7998] */ + { 3999, 0x9E3779B1U, 0x90C2C4CEU }, /* XSUM_XXH32_testdata[7999] */ + { 4000, 0x00000000U, 0x27407F75U }, /* XSUM_XXH32_testdata[8000] */ + { 4000, 0x9E3779B1U, 0x9F60B3E1U }, /* XSUM_XXH32_testdata[8001] */ + { 4001, 0x00000000U, 0x8C75FC02U }, /* XSUM_XXH32_testdata[8002] */ + { 4001, 0x9E3779B1U, 0x075FE27BU }, /* XSUM_XXH32_testdata[8003] */ + { 4002, 0x00000000U, 0x668757FAU }, /* XSUM_XXH32_testdata[8004] */ + { 4002, 0x9E3779B1U, 0x9A5616C3U }, /* XSUM_XXH32_testdata[8005] */ + { 4003, 0x00000000U, 0x10D1AD83U }, /* XSUM_XXH32_testdata[8006] */ + { 4003, 0x9E3779B1U, 0x20A8D9BDU }, /* XSUM_XXH32_testdata[8007] */ + { 4004, 0x00000000U, 0xE31D6BD4U }, /* XSUM_XXH32_testdata[8008] */ + { 4004, 0x9E3779B1U, 0x4DE21981U }, /* XSUM_XXH32_testdata[8009] */ + { 4005, 0x00000000U, 0xC41F6246U }, /* XSUM_XXH32_testdata[8010] */ + { 4005, 0x9E3779B1U, 0x54D65F89U }, /* XSUM_XXH32_testdata[8011] */ + { 4006, 0x00000000U, 0xEEF158DDU }, /* XSUM_XXH32_testdata[8012] */ + { 4006, 0x9E3779B1U, 0x4CE9BE5CU }, /* XSUM_XXH32_testdata[8013] */ + { 4007, 0x00000000U, 0xAAB85330U }, /* XSUM_XXH32_testdata[8014] */ + { 4007, 0x9E3779B1U, 0xF35F8C3FU }, /* XSUM_XXH32_testdata[8015] */ + { 4008, 0x00000000U, 0x4B0AD61FU }, /* XSUM_XXH32_testdata[8016] */ + { 4008, 0x9E3779B1U, 0xCE41BE43U }, /* XSUM_XXH32_testdata[8017] */ + { 4009, 0x00000000U, 0xBD7AB7C8U }, /* XSUM_XXH32_testdata[8018] */ + { 4009, 0x9E3779B1U, 0x5F212BA3U }, /* XSUM_XXH32_testdata[8019] */ + { 4010, 0x00000000U, 0x7A529E7BU }, /* XSUM_XXH32_testdata[8020] */ + { 4010, 0x9E3779B1U, 0xE12B9138U }, /* XSUM_XXH32_testdata[8021] */ + { 4011, 0x00000000U, 0x3315EE74U }, /* XSUM_XXH32_testdata[8022] */ + { 4011, 0x9E3779B1U, 0x5509D419U }, /* XSUM_XXH32_testdata[8023] */ + { 4012, 0x00000000U, 0x5DF1D007U }, /* XSUM_XXH32_testdata[8024] */ + { 4012, 0x9E3779B1U, 0x5CE608C5U }, /* XSUM_XXH32_testdata[8025] */ + { 4013, 0x00000000U, 0x10D81114U }, /* XSUM_XXH32_testdata[8026] */ + { 4013, 0x9E3779B1U, 0x8D7E4E9AU }, /* XSUM_XXH32_testdata[8027] */ + { 4014, 0x00000000U, 0xE141A08CU }, /* XSUM_XXH32_testdata[8028] */ + { 4014, 0x9E3779B1U, 0xD3CD9162U }, /* XSUM_XXH32_testdata[8029] */ + { 4015, 0x00000000U, 0x785E18CEU }, /* XSUM_XXH32_testdata[8030] */ + { 4015, 0x9E3779B1U, 0x2B4422DEU }, /* XSUM_XXH32_testdata[8031] */ + { 4016, 0x00000000U, 0x74DD10AAU }, /* XSUM_XXH32_testdata[8032] */ + { 4016, 0x9E3779B1U, 0xB009AEB1U }, /* XSUM_XXH32_testdata[8033] */ + { 4017, 0x00000000U, 0xF52E9BA0U }, /* XSUM_XXH32_testdata[8034] */ + { 4017, 0x9E3779B1U, 0x5DFE3133U }, /* XSUM_XXH32_testdata[8035] */ + { 4018, 0x00000000U, 0x00D05915U }, /* XSUM_XXH32_testdata[8036] */ + { 4018, 0x9E3779B1U, 0x5A1BE64AU }, /* XSUM_XXH32_testdata[8037] */ + { 4019, 0x00000000U, 0x729F4B02U }, /* XSUM_XXH32_testdata[8038] */ + { 4019, 0x9E3779B1U, 0x34F450B5U }, /* XSUM_XXH32_testdata[8039] */ + { 4020, 0x00000000U, 0x355A8E3FU }, /* XSUM_XXH32_testdata[8040] */ + { 4020, 0x9E3779B1U, 0xFBCECC94U }, /* XSUM_XXH32_testdata[8041] */ + { 4021, 0x00000000U, 0x3BB86C47U }, /* XSUM_XXH32_testdata[8042] */ + { 4021, 0x9E3779B1U, 0x333F75E3U }, /* XSUM_XXH32_testdata[8043] */ + { 4022, 0x00000000U, 0x1858F728U }, /* XSUM_XXH32_testdata[8044] */ + { 4022, 0x9E3779B1U, 0x6CB1F916U }, /* XSUM_XXH32_testdata[8045] */ + { 4023, 0x00000000U, 0x94A2212CU }, /* XSUM_XXH32_testdata[8046] */ + { 4023, 0x9E3779B1U, 0x5E99258AU }, /* XSUM_XXH32_testdata[8047] */ + { 4024, 0x00000000U, 0xD01C1181U }, /* XSUM_XXH32_testdata[8048] */ + { 4024, 0x9E3779B1U, 0x9DAE3749U }, /* XSUM_XXH32_testdata[8049] */ + { 4025, 0x00000000U, 0x333E547CU }, /* XSUM_XXH32_testdata[8050] */ + { 4025, 0x9E3779B1U, 0x2BC8BF53U }, /* XSUM_XXH32_testdata[8051] */ + { 4026, 0x00000000U, 0xD4EB535CU }, /* XSUM_XXH32_testdata[8052] */ + { 4026, 0x9E3779B1U, 0xC8DEB70FU }, /* XSUM_XXH32_testdata[8053] */ + { 4027, 0x00000000U, 0x609CBC4CU }, /* XSUM_XXH32_testdata[8054] */ + { 4027, 0x9E3779B1U, 0x7C9D1E6AU }, /* XSUM_XXH32_testdata[8055] */ + { 4028, 0x00000000U, 0xEF78537DU }, /* XSUM_XXH32_testdata[8056] */ + { 4028, 0x9E3779B1U, 0xD8FDF2FCU }, /* XSUM_XXH32_testdata[8057] */ + { 4029, 0x00000000U, 0x2B6F86F1U }, /* XSUM_XXH32_testdata[8058] */ + { 4029, 0x9E3779B1U, 0x5B3AC784U }, /* XSUM_XXH32_testdata[8059] */ + { 4030, 0x00000000U, 0xB85A6678U }, /* XSUM_XXH32_testdata[8060] */ + { 4030, 0x9E3779B1U, 0xDDF004C4U }, /* XSUM_XXH32_testdata[8061] */ + { 4031, 0x00000000U, 0x6F14ADD5U }, /* XSUM_XXH32_testdata[8062] */ + { 4031, 0x9E3779B1U, 0x1459C82CU }, /* XSUM_XXH32_testdata[8063] */ + { 4032, 0x00000000U, 0x863FA53FU }, /* XSUM_XXH32_testdata[8064] */ + { 4032, 0x9E3779B1U, 0x95987777U }, /* XSUM_XXH32_testdata[8065] */ + { 4033, 0x00000000U, 0x46DE0517U }, /* XSUM_XXH32_testdata[8066] */ + { 4033, 0x9E3779B1U, 0x32074119U }, /* XSUM_XXH32_testdata[8067] */ + { 4034, 0x00000000U, 0xA5F02A8DU }, /* XSUM_XXH32_testdata[8068] */ + { 4034, 0x9E3779B1U, 0x89779F09U }, /* XSUM_XXH32_testdata[8069] */ + { 4035, 0x00000000U, 0xCC1ED34AU }, /* XSUM_XXH32_testdata[8070] */ + { 4035, 0x9E3779B1U, 0x8422F396U }, /* XSUM_XXH32_testdata[8071] */ + { 4036, 0x00000000U, 0xB7A415EBU }, /* XSUM_XXH32_testdata[8072] */ + { 4036, 0x9E3779B1U, 0x0C0FF63DU }, /* XSUM_XXH32_testdata[8073] */ + { 4037, 0x00000000U, 0x80B450EAU }, /* XSUM_XXH32_testdata[8074] */ + { 4037, 0x9E3779B1U, 0xD8AE13BCU }, /* XSUM_XXH32_testdata[8075] */ + { 4038, 0x00000000U, 0x122DEC1FU }, /* XSUM_XXH32_testdata[8076] */ + { 4038, 0x9E3779B1U, 0x9BA31287U }, /* XSUM_XXH32_testdata[8077] */ + { 4039, 0x00000000U, 0xC6C7FC76U }, /* XSUM_XXH32_testdata[8078] */ + { 4039, 0x9E3779B1U, 0xB9415F2AU }, /* XSUM_XXH32_testdata[8079] */ + { 4040, 0x00000000U, 0x84A802A6U }, /* XSUM_XXH32_testdata[8080] */ + { 4040, 0x9E3779B1U, 0x9C9EEC4EU }, /* XSUM_XXH32_testdata[8081] */ + { 4041, 0x00000000U, 0x2FED28BDU }, /* XSUM_XXH32_testdata[8082] */ + { 4041, 0x9E3779B1U, 0x864352F3U }, /* XSUM_XXH32_testdata[8083] */ + { 4042, 0x00000000U, 0x5CC559CEU }, /* XSUM_XXH32_testdata[8084] */ + { 4042, 0x9E3779B1U, 0x41FF23D3U }, /* XSUM_XXH32_testdata[8085] */ + { 4043, 0x00000000U, 0xAABE7A66U }, /* XSUM_XXH32_testdata[8086] */ + { 4043, 0x9E3779B1U, 0x3F907706U }, /* XSUM_XXH32_testdata[8087] */ + { 4044, 0x00000000U, 0x14EE8A88U }, /* XSUM_XXH32_testdata[8088] */ + { 4044, 0x9E3779B1U, 0x63CA9945U }, /* XSUM_XXH32_testdata[8089] */ + { 4045, 0x00000000U, 0xB87A99C1U }, /* XSUM_XXH32_testdata[8090] */ + { 4045, 0x9E3779B1U, 0xB81E7D82U }, /* XSUM_XXH32_testdata[8091] */ + { 4046, 0x00000000U, 0x5AB2D0F7U }, /* XSUM_XXH32_testdata[8092] */ + { 4046, 0x9E3779B1U, 0x7ECE396FU }, /* XSUM_XXH32_testdata[8093] */ + { 4047, 0x00000000U, 0x0EBE0F7FU }, /* XSUM_XXH32_testdata[8094] */ + { 4047, 0x9E3779B1U, 0x402F64D8U }, /* XSUM_XXH32_testdata[8095] */ + { 4048, 0x00000000U, 0xBDE1B276U }, /* XSUM_XXH32_testdata[8096] */ + { 4048, 0x9E3779B1U, 0xD5E7985EU }, /* XSUM_XXH32_testdata[8097] */ + { 4049, 0x00000000U, 0xA9015113U }, /* XSUM_XXH32_testdata[8098] */ + { 4049, 0x9E3779B1U, 0xDEAA02E7U }, /* XSUM_XXH32_testdata[8099] */ + { 4050, 0x00000000U, 0x9CA24240U }, /* XSUM_XXH32_testdata[8100] */ + { 4050, 0x9E3779B1U, 0xE91714A1U }, /* XSUM_XXH32_testdata[8101] */ + { 4051, 0x00000000U, 0x38CCE861U }, /* XSUM_XXH32_testdata[8102] */ + { 4051, 0x9E3779B1U, 0x6C4924E9U }, /* XSUM_XXH32_testdata[8103] */ + { 4052, 0x00000000U, 0x796669FAU }, /* XSUM_XXH32_testdata[8104] */ + { 4052, 0x9E3779B1U, 0xA0522CE8U }, /* XSUM_XXH32_testdata[8105] */ + { 4053, 0x00000000U, 0x7926AE74U }, /* XSUM_XXH32_testdata[8106] */ + { 4053, 0x9E3779B1U, 0xDC82F8C5U }, /* XSUM_XXH32_testdata[8107] */ + { 4054, 0x00000000U, 0xBEE9EA69U }, /* XSUM_XXH32_testdata[8108] */ + { 4054, 0x9E3779B1U, 0x6F804B98U }, /* XSUM_XXH32_testdata[8109] */ + { 4055, 0x00000000U, 0xA8274B12U }, /* XSUM_XXH32_testdata[8110] */ + { 4055, 0x9E3779B1U, 0xEC8F3D79U }, /* XSUM_XXH32_testdata[8111] */ + { 4056, 0x00000000U, 0xA348EED1U }, /* XSUM_XXH32_testdata[8112] */ + { 4056, 0x9E3779B1U, 0x2AFBA006U }, /* XSUM_XXH32_testdata[8113] */ + { 4057, 0x00000000U, 0xB7CE9F4FU }, /* XSUM_XXH32_testdata[8114] */ + { 4057, 0x9E3779B1U, 0x6FD0BA10U }, /* XSUM_XXH32_testdata[8115] */ + { 4058, 0x00000000U, 0x0D366AE5U }, /* XSUM_XXH32_testdata[8116] */ + { 4058, 0x9E3779B1U, 0x0D29F3C7U }, /* XSUM_XXH32_testdata[8117] */ + { 4059, 0x00000000U, 0x97351AF6U }, /* XSUM_XXH32_testdata[8118] */ + { 4059, 0x9E3779B1U, 0x540BC27EU }, /* XSUM_XXH32_testdata[8119] */ + { 4060, 0x00000000U, 0xF5ACE84CU }, /* XSUM_XXH32_testdata[8120] */ + { 4060, 0x9E3779B1U, 0x9ED58AF6U }, /* XSUM_XXH32_testdata[8121] */ + { 4061, 0x00000000U, 0x2F267ADEU }, /* XSUM_XXH32_testdata[8122] */ + { 4061, 0x9E3779B1U, 0x045F43FDU }, /* XSUM_XXH32_testdata[8123] */ + { 4062, 0x00000000U, 0xE515091BU }, /* XSUM_XXH32_testdata[8124] */ + { 4062, 0x9E3779B1U, 0xC026D971U }, /* XSUM_XXH32_testdata[8125] */ + { 4063, 0x00000000U, 0x68A4439CU }, /* XSUM_XXH32_testdata[8126] */ + { 4063, 0x9E3779B1U, 0x7422AA11U }, /* XSUM_XXH32_testdata[8127] */ + { 4064, 0x00000000U, 0x57AB14B9U }, /* XSUM_XXH32_testdata[8128] */ + { 4064, 0x9E3779B1U, 0xD6529D78U }, /* XSUM_XXH32_testdata[8129] */ + { 4065, 0x00000000U, 0x19F521CAU }, /* XSUM_XXH32_testdata[8130] */ + { 4065, 0x9E3779B1U, 0xDD745494U }, /* XSUM_XXH32_testdata[8131] */ + { 4066, 0x00000000U, 0xE41A92FDU }, /* XSUM_XXH32_testdata[8132] */ + { 4066, 0x9E3779B1U, 0xDA97A4C3U }, /* XSUM_XXH32_testdata[8133] */ + { 4067, 0x00000000U, 0xB6F50C6AU }, /* XSUM_XXH32_testdata[8134] */ + { 4067, 0x9E3779B1U, 0x87752A24U }, /* XSUM_XXH32_testdata[8135] */ + { 4068, 0x00000000U, 0x6A4E1762U }, /* XSUM_XXH32_testdata[8136] */ + { 4068, 0x9E3779B1U, 0x507C48A6U }, /* XSUM_XXH32_testdata[8137] */ + { 4069, 0x00000000U, 0xA31C6923U }, /* XSUM_XXH32_testdata[8138] */ + { 4069, 0x9E3779B1U, 0xFBFC01CBU }, /* XSUM_XXH32_testdata[8139] */ + { 4070, 0x00000000U, 0x57335D73U }, /* XSUM_XXH32_testdata[8140] */ + { 4070, 0x9E3779B1U, 0x1CA5241CU }, /* XSUM_XXH32_testdata[8141] */ + { 4071, 0x00000000U, 0xD984C0CDU }, /* XSUM_XXH32_testdata[8142] */ + { 4071, 0x9E3779B1U, 0xE9FDD332U }, /* XSUM_XXH32_testdata[8143] */ + { 4072, 0x00000000U, 0x2A66B234U }, /* XSUM_XXH32_testdata[8144] */ + { 4072, 0x9E3779B1U, 0x490249A8U }, /* XSUM_XXH32_testdata[8145] */ + { 4073, 0x00000000U, 0x37D2696AU }, /* XSUM_XXH32_testdata[8146] */ + { 4073, 0x9E3779B1U, 0x193E992AU }, /* XSUM_XXH32_testdata[8147] */ + { 4074, 0x00000000U, 0x50277800U }, /* XSUM_XXH32_testdata[8148] */ + { 4074, 0x9E3779B1U, 0x8B52B126U }, /* XSUM_XXH32_testdata[8149] */ + { 4075, 0x00000000U, 0x356B2944U }, /* XSUM_XXH32_testdata[8150] */ + { 4075, 0x9E3779B1U, 0x7C61D14AU }, /* XSUM_XXH32_testdata[8151] */ + { 4076, 0x00000000U, 0xDDA77E6FU }, /* XSUM_XXH32_testdata[8152] */ + { 4076, 0x9E3779B1U, 0xB7294E5DU }, /* XSUM_XXH32_testdata[8153] */ + { 4077, 0x00000000U, 0x7C52C919U }, /* XSUM_XXH32_testdata[8154] */ + { 4077, 0x9E3779B1U, 0xCC94BCCDU }, /* XSUM_XXH32_testdata[8155] */ + { 4078, 0x00000000U, 0xA76D48CEU }, /* XSUM_XXH32_testdata[8156] */ + { 4078, 0x9E3779B1U, 0x201A68B0U }, /* XSUM_XXH32_testdata[8157] */ + { 4079, 0x00000000U, 0x5A4DB117U }, /* XSUM_XXH32_testdata[8158] */ + { 4079, 0x9E3779B1U, 0x8B78046DU }, /* XSUM_XXH32_testdata[8159] */ + { 4080, 0x00000000U, 0x85A2345BU }, /* XSUM_XXH32_testdata[8160] */ + { 4080, 0x9E3779B1U, 0x45092E05U }, /* XSUM_XXH32_testdata[8161] */ + { 4081, 0x00000000U, 0x865AF0D2U }, /* XSUM_XXH32_testdata[8162] */ + { 4081, 0x9E3779B1U, 0xE61764D9U }, /* XSUM_XXH32_testdata[8163] */ + { 4082, 0x00000000U, 0x6ACB0408U }, /* XSUM_XXH32_testdata[8164] */ + { 4082, 0x9E3779B1U, 0x173D774BU }, /* XSUM_XXH32_testdata[8165] */ + { 4083, 0x00000000U, 0x31BC507AU }, /* XSUM_XXH32_testdata[8166] */ + { 4083, 0x9E3779B1U, 0x5E9CB759U }, /* XSUM_XXH32_testdata[8167] */ + { 4084, 0x00000000U, 0x73A3ADD3U }, /* XSUM_XXH32_testdata[8168] */ + { 4084, 0x9E3779B1U, 0x6B00AF58U }, /* XSUM_XXH32_testdata[8169] */ + { 4085, 0x00000000U, 0x8A21EEF2U }, /* XSUM_XXH32_testdata[8170] */ + { 4085, 0x9E3779B1U, 0x87E6D65FU }, /* XSUM_XXH32_testdata[8171] */ + { 4086, 0x00000000U, 0x5C9E19F3U }, /* XSUM_XXH32_testdata[8172] */ + { 4086, 0x9E3779B1U, 0x0841C9C4U }, /* XSUM_XXH32_testdata[8173] */ + { 4087, 0x00000000U, 0x3AF521C9U }, /* XSUM_XXH32_testdata[8174] */ + { 4087, 0x9E3779B1U, 0x156EE57EU }, /* XSUM_XXH32_testdata[8175] */ + { 4088, 0x00000000U, 0xBA4262C2U }, /* XSUM_XXH32_testdata[8176] */ + { 4088, 0x9E3779B1U, 0x8DF52DDBU }, /* XSUM_XXH32_testdata[8177] */ + { 4089, 0x00000000U, 0x47EEC3E1U }, /* XSUM_XXH32_testdata[8178] */ + { 4089, 0x9E3779B1U, 0x91AD069EU }, /* XSUM_XXH32_testdata[8179] */ + { 4090, 0x00000000U, 0x2ACC967DU }, /* XSUM_XXH32_testdata[8180] */ + { 4090, 0x9E3779B1U, 0x168F6AF1U }, /* XSUM_XXH32_testdata[8181] */ + { 4091, 0x00000000U, 0xFC796CBDU }, /* XSUM_XXH32_testdata[8182] */ + { 4091, 0x9E3779B1U, 0x23C45836U }, /* XSUM_XXH32_testdata[8183] */ + { 4092, 0x00000000U, 0xE43AD822U }, /* XSUM_XXH32_testdata[8184] */ + { 4092, 0x9E3779B1U, 0x86F738C3U }, /* XSUM_XXH32_testdata[8185] */ + { 4093, 0x00000000U, 0x36108F97U }, /* XSUM_XXH32_testdata[8186] */ + { 4093, 0x9E3779B1U, 0x73933287U }, /* XSUM_XXH32_testdata[8187] */ + { 4094, 0x00000000U, 0xDEA6DC51U }, /* XSUM_XXH32_testdata[8188] */ + { 4094, 0x9E3779B1U, 0x6453B5F7U }, /* XSUM_XXH32_testdata[8189] */ + { 4095, 0x00000000U, 0x26E3D566U }, /* XSUM_XXH32_testdata[8190] */ + { 4095, 0x9E3779B1U, 0xEC26C02CU }, /* XSUM_XXH32_testdata[8191] */ + { 4096, 0x00000000U, 0x20FC444FU }, /* XSUM_XXH32_testdata[8192] */ + { 4096, 0x9E3779B1U, 0x102AD417U }, /* XSUM_XXH32_testdata[8193] */ + { 4097, 0x00000000U, 0x4115D4E2U }, /* XSUM_XXH32_testdata[8194] */ + { 4097, 0x9E3779B1U, 0xD0552AEDU }, /* XSUM_XXH32_testdata[8195] */ + { 4098, 0x00000000U, 0x1E565A59U }, /* XSUM_XXH32_testdata[8196] */ + { 4098, 0x9E3779B1U, 0x3E708270U }, /* XSUM_XXH32_testdata[8197] */ + { 4099, 0x00000000U, 0x64E581B2U }, /* XSUM_XXH32_testdata[8198] */ + { 4099, 0x9E3779B1U, 0x9D961E05U }, /* XSUM_XXH32_testdata[8199] */ + { 4100, 0x00000000U, 0xB5468144U }, /* XSUM_XXH32_testdata[8200] */ + { 4100, 0x9E3779B1U, 0x16BAD555U }, /* XSUM_XXH32_testdata[8201] */ + { 4101, 0x00000000U, 0x591F0AE5U }, /* XSUM_XXH32_testdata[8202] */ + { 4101, 0x9E3779B1U, 0x11021719U }, /* XSUM_XXH32_testdata[8203] */ + { 4102, 0x00000000U, 0x370AB735U }, /* XSUM_XXH32_testdata[8204] */ + { 4102, 0x9E3779B1U, 0xF4458FFFU }, /* XSUM_XXH32_testdata[8205] */ + { 4103, 0x00000000U, 0x8C357473U }, /* XSUM_XXH32_testdata[8206] */ + { 4103, 0x9E3779B1U, 0x0AB98C5AU }, /* XSUM_XXH32_testdata[8207] */ + { 4104, 0x00000000U, 0x283E1806U }, /* XSUM_XXH32_testdata[8208] */ + { 4104, 0x9E3779B1U, 0xFE797FC0U }, /* XSUM_XXH32_testdata[8209] */ + { 4105, 0x00000000U, 0x1AF40E88U }, /* XSUM_XXH32_testdata[8210] */ + { 4105, 0x9E3779B1U, 0x3C68E643U }, /* XSUM_XXH32_testdata[8211] */ + { 4106, 0x00000000U, 0xF62C711BU }, /* XSUM_XXH32_testdata[8212] */ + { 4106, 0x9E3779B1U, 0xDE75FF88U }, /* XSUM_XXH32_testdata[8213] */ + { 4107, 0x00000000U, 0xF0717C1EU }, /* XSUM_XXH32_testdata[8214] */ + { 4107, 0x9E3779B1U, 0xC4B3B75AU }, /* XSUM_XXH32_testdata[8215] */ + { 4108, 0x00000000U, 0x28D9C58CU }, /* XSUM_XXH32_testdata[8216] */ + { 4108, 0x9E3779B1U, 0xC7989E18U }, /* XSUM_XXH32_testdata[8217] */ + { 4109, 0x00000000U, 0x078E1B73U }, /* XSUM_XXH32_testdata[8218] */ + { 4109, 0x9E3779B1U, 0xCC0F8DF5U }, /* XSUM_XXH32_testdata[8219] */ + { 4110, 0x00000000U, 0xE1122F9FU }, /* XSUM_XXH32_testdata[8220] */ + { 4110, 0x9E3779B1U, 0xF194A1B1U }, /* XSUM_XXH32_testdata[8221] */ + { 4111, 0x00000000U, 0x3BF2AEDDU }, /* XSUM_XXH32_testdata[8222] */ + { 4111, 0x9E3779B1U, 0x9A333866U }, /* XSUM_XXH32_testdata[8223] */ + { 4112, 0x00000000U, 0x904888B6U }, /* XSUM_XXH32_testdata[8224] */ + { 4112, 0x9E3779B1U, 0xABED9738U }, /* XSUM_XXH32_testdata[8225] */ + { 4113, 0x00000000U, 0xC373E6B2U }, /* XSUM_XXH32_testdata[8226] */ + { 4113, 0x9E3779B1U, 0xCCB77D39U }, /* XSUM_XXH32_testdata[8227] */ + { 4114, 0x00000000U, 0x341B9A96U }, /* XSUM_XXH32_testdata[8228] */ + { 4114, 0x9E3779B1U, 0xF855A055U }, /* XSUM_XXH32_testdata[8229] */ + { 4115, 0x00000000U, 0x3F4DCD64U }, /* XSUM_XXH32_testdata[8230] */ + { 4115, 0x9E3779B1U, 0xA3931670U }, /* XSUM_XXH32_testdata[8231] */ + { 4116, 0x00000000U, 0x540DAE3BU }, /* XSUM_XXH32_testdata[8232] */ + { 4116, 0x9E3779B1U, 0x68BD730DU }, /* XSUM_XXH32_testdata[8233] */ + { 4117, 0x00000000U, 0x903AD8BBU }, /* XSUM_XXH32_testdata[8234] */ + { 4117, 0x9E3779B1U, 0x2AA39C72U }, /* XSUM_XXH32_testdata[8235] */ + { 4118, 0x00000000U, 0x4C14E1EAU }, /* XSUM_XXH32_testdata[8236] */ + { 4118, 0x9E3779B1U, 0x9A3AD35EU }, /* XSUM_XXH32_testdata[8237] */ + { 4119, 0x00000000U, 0x3CAED5A3U }, /* XSUM_XXH32_testdata[8238] */ + { 4119, 0x9E3779B1U, 0xF2676329U }, /* XSUM_XXH32_testdata[8239] */ + { 4120, 0x00000000U, 0x7C84DE93U }, /* XSUM_XXH32_testdata[8240] */ + { 4120, 0x9E3779B1U, 0xE2EBED75U }, /* XSUM_XXH32_testdata[8241] */ + { 4121, 0x00000000U, 0x308FBD62U }, /* XSUM_XXH32_testdata[8242] */ + { 4121, 0x9E3779B1U, 0x20FBC7F3U }, /* XSUM_XXH32_testdata[8243] */ + { 4122, 0x00000000U, 0x758B8DD7U }, /* XSUM_XXH32_testdata[8244] */ + { 4122, 0x9E3779B1U, 0x13AAFF2BU }, /* XSUM_XXH32_testdata[8245] */ + { 4123, 0x00000000U, 0x8D1DF04EU }, /* XSUM_XXH32_testdata[8246] */ + { 4123, 0x9E3779B1U, 0xC81AC618U }, /* XSUM_XXH32_testdata[8247] */ + { 4124, 0x00000000U, 0x4DD18430U }, /* XSUM_XXH32_testdata[8248] */ + { 4124, 0x9E3779B1U, 0x914C8A76U }, /* XSUM_XXH32_testdata[8249] */ + { 4125, 0x00000000U, 0x97F719B8U }, /* XSUM_XXH32_testdata[8250] */ + { 4125, 0x9E3779B1U, 0x6057F01AU }, /* XSUM_XXH32_testdata[8251] */ + { 4126, 0x00000000U, 0x5B0750EEU }, /* XSUM_XXH32_testdata[8252] */ + { 4126, 0x9E3779B1U, 0xC787DAA4U }, /* XSUM_XXH32_testdata[8253] */ + { 4127, 0x00000000U, 0x85C97EB1U }, /* XSUM_XXH32_testdata[8254] */ + { 4127, 0x9E3779B1U, 0x4897C062U }, /* XSUM_XXH32_testdata[8255] */ + { 4128, 0x00000000U, 0x53423C9BU }, /* XSUM_XXH32_testdata[8256] */ + { 4128, 0x9E3779B1U, 0xC869D009U }, /* XSUM_XXH32_testdata[8257] */ + { 4129, 0x00000000U, 0x96EA42C3U }, /* XSUM_XXH32_testdata[8258] */ + { 4129, 0x9E3779B1U, 0xF3BA51D5U }, /* XSUM_XXH32_testdata[8259] */ + { 4130, 0x00000000U, 0xE8C15073U }, /* XSUM_XXH32_testdata[8260] */ + { 4130, 0x9E3779B1U, 0xFFE5EDA2U }, /* XSUM_XXH32_testdata[8261] */ + { 4131, 0x00000000U, 0x72C26EFCU }, /* XSUM_XXH32_testdata[8262] */ + { 4131, 0x9E3779B1U, 0x4186C6F1U }, /* XSUM_XXH32_testdata[8263] */ + { 4132, 0x00000000U, 0x30C2A80AU }, /* XSUM_XXH32_testdata[8264] */ + { 4132, 0x9E3779B1U, 0x56EEE369U }, /* XSUM_XXH32_testdata[8265] */ + { 4133, 0x00000000U, 0xEC136775U }, /* XSUM_XXH32_testdata[8266] */ + { 4133, 0x9E3779B1U, 0x05B90E20U }, /* XSUM_XXH32_testdata[8267] */ + { 4134, 0x00000000U, 0x55C86666U }, /* XSUM_XXH32_testdata[8268] */ + { 4134, 0x9E3779B1U, 0x9D888733U }, /* XSUM_XXH32_testdata[8269] */ + { 4135, 0x00000000U, 0xE33DCE33U }, /* XSUM_XXH32_testdata[8270] */ + { 4135, 0x9E3779B1U, 0x4A21932AU }, /* XSUM_XXH32_testdata[8271] */ + { 4136, 0x00000000U, 0x820CC721U }, /* XSUM_XXH32_testdata[8272] */ + { 4136, 0x9E3779B1U, 0x3720E417U }, /* XSUM_XXH32_testdata[8273] */ + { 4137, 0x00000000U, 0x91484716U }, /* XSUM_XXH32_testdata[8274] */ + { 4137, 0x9E3779B1U, 0x8A2F206CU }, /* XSUM_XXH32_testdata[8275] */ + { 4138, 0x00000000U, 0xB0BDDA46U }, /* XSUM_XXH32_testdata[8276] */ + { 4138, 0x9E3779B1U, 0xF3D55FA1U }, /* XSUM_XXH32_testdata[8277] */ + { 4139, 0x00000000U, 0x997CD6F3U }, /* XSUM_XXH32_testdata[8278] */ + { 4139, 0x9E3779B1U, 0x13136455U }, /* XSUM_XXH32_testdata[8279] */ + { 4140, 0x00000000U, 0x421FEE6EU }, /* XSUM_XXH32_testdata[8280] */ + { 4140, 0x9E3779B1U, 0x30749385U }, /* XSUM_XXH32_testdata[8281] */ + { 4141, 0x00000000U, 0xF1BBA08CU }, /* XSUM_XXH32_testdata[8282] */ + { 4141, 0x9E3779B1U, 0x20778E8AU }, /* XSUM_XXH32_testdata[8283] */ + { 4142, 0x00000000U, 0xE1843725U }, /* XSUM_XXH32_testdata[8284] */ + { 4142, 0x9E3779B1U, 0x4999E467U }, /* XSUM_XXH32_testdata[8285] */ + { 4143, 0x00000000U, 0x6E278223U }, /* XSUM_XXH32_testdata[8286] */ + { 4143, 0x9E3779B1U, 0x60853FB5U }, /* XSUM_XXH32_testdata[8287] */ + { 4144, 0x00000000U, 0xE3DF5E5EU }, /* XSUM_XXH32_testdata[8288] */ + { 4144, 0x9E3779B1U, 0x32859AA0U }, /* XSUM_XXH32_testdata[8289] */ + { 4145, 0x00000000U, 0xF17B8246U }, /* XSUM_XXH32_testdata[8290] */ + { 4145, 0x9E3779B1U, 0x1F94021AU }, /* XSUM_XXH32_testdata[8291] */ + { 4146, 0x00000000U, 0x059FE179U }, /* XSUM_XXH32_testdata[8292] */ + { 4146, 0x9E3779B1U, 0x1A19570EU }, /* XSUM_XXH32_testdata[8293] */ + { 4147, 0x00000000U, 0x1377A418U }, /* XSUM_XXH32_testdata[8294] */ + { 4147, 0x9E3779B1U, 0x725131CAU }, /* XSUM_XXH32_testdata[8295] */ + { 4148, 0x00000000U, 0x68F6D614U }, /* XSUM_XXH32_testdata[8296] */ + { 4148, 0x9E3779B1U, 0x8D6DBDEAU }, /* XSUM_XXH32_testdata[8297] */ + { 4149, 0x00000000U, 0xFAD39F40U }, /* XSUM_XXH32_testdata[8298] */ + { 4149, 0x9E3779B1U, 0xF4A552D3U }, /* XSUM_XXH32_testdata[8299] */ + { 4150, 0x00000000U, 0x0C4CC8C3U }, /* XSUM_XXH32_testdata[8300] */ + { 4150, 0x9E3779B1U, 0xF48E8895U }, /* XSUM_XXH32_testdata[8301] */ + { 4151, 0x00000000U, 0xB0753CE2U }, /* XSUM_XXH32_testdata[8302] */ + { 4151, 0x9E3779B1U, 0x3641D63EU }, /* XSUM_XXH32_testdata[8303] */ + { 4152, 0x00000000U, 0xC8CCFD46U }, /* XSUM_XXH32_testdata[8304] */ + { 4152, 0x9E3779B1U, 0x26553A09U }, /* XSUM_XXH32_testdata[8305] */ + { 4153, 0x00000000U, 0x798B4CFEU }, /* XSUM_XXH32_testdata[8306] */ + { 4153, 0x9E3779B1U, 0x3B876753U }, /* XSUM_XXH32_testdata[8307] */ + { 4154, 0x00000000U, 0x1CB63AABU }, /* XSUM_XXH32_testdata[8308] */ + { 4154, 0x9E3779B1U, 0x8A16C774U }, /* XSUM_XXH32_testdata[8309] */ + { 4155, 0x00000000U, 0x8280F4A8U }, /* XSUM_XXH32_testdata[8310] */ + { 4155, 0x9E3779B1U, 0x7B81E441U }, /* XSUM_XXH32_testdata[8311] */ + { 4156, 0x00000000U, 0xB870853EU }, /* XSUM_XXH32_testdata[8312] */ + { 4156, 0x9E3779B1U, 0x3C16BA4EU }, /* XSUM_XXH32_testdata[8313] */ + { 4157, 0x00000000U, 0xA8A1494BU }, /* XSUM_XXH32_testdata[8314] */ + { 4157, 0x9E3779B1U, 0x1D297001U }, /* XSUM_XXH32_testdata[8315] */ + { 4158, 0x00000000U, 0xF4F3E125U }, /* XSUM_XXH32_testdata[8316] */ + { 4158, 0x9E3779B1U, 0x2D68E87BU }, /* XSUM_XXH32_testdata[8317] */ + { 4159, 0x00000000U, 0x58A67826U }, /* XSUM_XXH32_testdata[8318] */ + { 4159, 0x9E3779B1U, 0x1C86EDD0U }, /* XSUM_XXH32_testdata[8319] */ + { 4160, 0x00000000U, 0xDB0D9141U }, /* XSUM_XXH32_testdata[8320] */ + { 4160, 0x9E3779B1U, 0xCCA10DF5U }, /* XSUM_XXH32_testdata[8321] */ +}; +static const XSUM_testdata64_t XSUM_XXH64_testdata[] = { + { 0, 0x0000000000000000ULL, 0xEF46DB3751D8E999ULL }, /* XSUM_XXH64_testdata[0] */ + { 0, 0x000000009E3779B1ULL, 0xAC75FDA2929B17EFULL }, /* XSUM_XXH64_testdata[1] */ + { 1, 0x0000000000000000ULL, 0xE934A84ADB052768ULL }, /* XSUM_XXH64_testdata[2] */ + { 1, 0x000000009E3779B1ULL, 0x5014607643A9B4C3ULL }, /* XSUM_XXH64_testdata[3] */ + { 2, 0x0000000000000000ULL, 0x5D48CD60A77E23FFULL }, /* XSUM_XXH64_testdata[4] */ + { 2, 0x000000009E3779B1ULL, 0x9E93152232D54A39ULL }, /* XSUM_XXH64_testdata[5] */ + { 3, 0x0000000000000000ULL, 0xFF7E1959CB50794AULL }, /* XSUM_XXH64_testdata[6] */ + { 3, 0x000000009E3779B1ULL, 0xAA8584E83660F7D1ULL }, /* XSUM_XXH64_testdata[7] */ + { 4, 0x0000000000000000ULL, 0x9136A0DCA57457EEULL }, /* XSUM_XXH64_testdata[8] */ + { 4, 0x000000009E3779B1ULL, 0xCAAB286BD8E9FDB5ULL }, /* XSUM_XXH64_testdata[9] */ + { 5, 0x0000000000000000ULL, 0x9B046FB1397F09A5ULL }, /* XSUM_XXH64_testdata[10] */ + { 5, 0x000000009E3779B1ULL, 0x2AF5249930F984ECULL }, /* XSUM_XXH64_testdata[11] */ + { 6, 0x0000000000000000ULL, 0xC72565B7154268A8ULL }, /* XSUM_XXH64_testdata[12] */ + { 6, 0x000000009E3779B1ULL, 0xCA4C6723580E8EF6ULL }, /* XSUM_XXH64_testdata[13] */ + { 7, 0x0000000000000000ULL, 0x6C83909A9F01ED25ULL }, /* XSUM_XXH64_testdata[14] */ + { 7, 0x000000009E3779B1ULL, 0xF98D03B1AD6F9293ULL }, /* XSUM_XXH64_testdata[15] */ + { 8, 0x0000000000000000ULL, 0xCDBCF538E71D1348ULL }, /* XSUM_XXH64_testdata[16] */ + { 8, 0x000000009E3779B1ULL, 0xFE0C047A5353CDACULL }, /* XSUM_XXH64_testdata[17] */ + { 9, 0x0000000000000000ULL, 0x554B1AE991EDA6B6ULL }, /* XSUM_XXH64_testdata[18] */ + { 9, 0x000000009E3779B1ULL, 0x7908265248F6D73FULL }, /* XSUM_XXH64_testdata[19] */ + { 10, 0x0000000000000000ULL, 0x5D00E7351392EA84ULL }, /* XSUM_XXH64_testdata[20] */ + { 10, 0x000000009E3779B1ULL, 0x2A8AE16B86CD2F12ULL }, /* XSUM_XXH64_testdata[21] */ + { 11, 0x0000000000000000ULL, 0x6345D5746F35DA70ULL }, /* XSUM_XXH64_testdata[22] */ + { 11, 0x000000009E3779B1ULL, 0xEAA08A8C8BE3CCCFULL }, /* XSUM_XXH64_testdata[23] */ + { 12, 0x0000000000000000ULL, 0x0723BF50086EAD9AULL }, /* XSUM_XXH64_testdata[24] */ + { 12, 0x000000009E3779B1ULL, 0x8252819F4E506951ULL }, /* XSUM_XXH64_testdata[25] */ + { 13, 0x0000000000000000ULL, 0xC2E5013E3C40BCF7ULL }, /* XSUM_XXH64_testdata[26] */ + { 13, 0x000000009E3779B1ULL, 0x4DF437A291CB1039ULL }, /* XSUM_XXH64_testdata[27] */ + { 14, 0x0000000000000000ULL, 0x8282DCC4994E35C8ULL }, /* XSUM_XXH64_testdata[28] */ + { 14, 0x000000009E3779B1ULL, 0xC3BD6BF63DEB6DF0ULL }, /* XSUM_XXH64_testdata[29] */ + { 15, 0x0000000000000000ULL, 0x180719316D622D84ULL }, /* XSUM_XXH64_testdata[30] */ + { 15, 0x000000009E3779B1ULL, 0xD61105C20E91F99FULL }, /* XSUM_XXH64_testdata[31] */ + { 16, 0x0000000000000000ULL, 0x98C90B57FDFCB55CULL }, /* XSUM_XXH64_testdata[32] */ + { 16, 0x000000009E3779B1ULL, 0xC900AD2D536B607EULL }, /* XSUM_XXH64_testdata[33] */ + { 17, 0x0000000000000000ULL, 0x0D39A2D051A30C2CULL }, /* XSUM_XXH64_testdata[34] */ + { 17, 0x000000009E3779B1ULL, 0x495CD68A647C7A22ULL }, /* XSUM_XXH64_testdata[35] */ + { 18, 0x0000000000000000ULL, 0x33E84A4333B2B2EBULL }, /* XSUM_XXH64_testdata[36] */ + { 18, 0x000000009E3779B1ULL, 0x2325A30CCA1A66DDULL }, /* XSUM_XXH64_testdata[37] */ + { 19, 0x0000000000000000ULL, 0xE91C6EF31FC08F82ULL }, /* XSUM_XXH64_testdata[38] */ + { 19, 0x000000009E3779B1ULL, 0x06809662799B7D6FULL }, /* XSUM_XXH64_testdata[39] */ + { 20, 0x0000000000000000ULL, 0x5F8C68355769439EULL }, /* XSUM_XXH64_testdata[40] */ + { 20, 0x000000009E3779B1ULL, 0x97218696C2D29602ULL }, /* XSUM_XXH64_testdata[41] */ + { 21, 0x0000000000000000ULL, 0x42B0B8EE353AC461ULL }, /* XSUM_XXH64_testdata[42] */ + { 21, 0x000000009E3779B1ULL, 0x7FC0BB451B83A633ULL }, /* XSUM_XXH64_testdata[43] */ + { 22, 0x0000000000000000ULL, 0x65C935C6978098B1ULL }, /* XSUM_XXH64_testdata[44] */ + { 22, 0x000000009E3779B1ULL, 0xC4A0DD14BF835C13ULL }, /* XSUM_XXH64_testdata[45] */ + { 23, 0x0000000000000000ULL, 0xD2460ECC840B74DDULL }, /* XSUM_XXH64_testdata[46] */ + { 23, 0x000000009E3779B1ULL, 0x4B44E8DE7A396773ULL }, /* XSUM_XXH64_testdata[47] */ + { 24, 0x0000000000000000ULL, 0xF75A6DEA42DC5BF4ULL }, /* XSUM_XXH64_testdata[48] */ + { 24, 0x000000009E3779B1ULL, 0x8B7C67EB59778E22ULL }, /* XSUM_XXH64_testdata[49] */ + { 25, 0x0000000000000000ULL, 0x52FAA43C3F20B994ULL }, /* XSUM_XXH64_testdata[50] */ + { 25, 0x000000009E3779B1ULL, 0xC4FEC92EAC2C3B8AULL }, /* XSUM_XXH64_testdata[51] */ + { 26, 0x0000000000000000ULL, 0x8DB7831EC345F9A3ULL }, /* XSUM_XXH64_testdata[52] */ + { 26, 0x000000009E3779B1ULL, 0x2C2A80BCAD321466ULL }, /* XSUM_XXH64_testdata[53] */ + { 27, 0x0000000000000000ULL, 0x88945AA08051FC2DULL }, /* XSUM_XXH64_testdata[54] */ + { 27, 0x000000009E3779B1ULL, 0x3401AF8EF28FD410ULL }, /* XSUM_XXH64_testdata[55] */ + { 28, 0x0000000000000000ULL, 0x64CD9E8C96A9E2DDULL }, /* XSUM_XXH64_testdata[56] */ + { 28, 0x000000009E3779B1ULL, 0x8160FB8C20B48287ULL }, /* XSUM_XXH64_testdata[57] */ + { 29, 0x0000000000000000ULL, 0x8C8F345B634AC2B9ULL }, /* XSUM_XXH64_testdata[58] */ + { 29, 0x000000009E3779B1ULL, 0x5A327C78E4AD6678ULL }, /* XSUM_XXH64_testdata[59] */ + { 30, 0x0000000000000000ULL, 0xE2677241D4C46CAFULL }, /* XSUM_XXH64_testdata[60] */ + { 30, 0x000000009E3779B1ULL, 0xB1B2B51C93AF4866ULL }, /* XSUM_XXH64_testdata[61] */ + { 31, 0x0000000000000000ULL, 0x299B39A290E6D783ULL }, /* XSUM_XXH64_testdata[62] */ + { 31, 0x000000009E3779B1ULL, 0xDA673D5FEB5C1D79ULL }, /* XSUM_XXH64_testdata[63] */ + { 32, 0x0000000000000000ULL, 0x18B216492BB44B70ULL }, /* XSUM_XXH64_testdata[64] */ + { 32, 0x000000009E3779B1ULL, 0xB3F33BDF93ADE409ULL }, /* XSUM_XXH64_testdata[65] */ + { 33, 0x0000000000000000ULL, 0x55C8DC3E578F5B59ULL }, /* XSUM_XXH64_testdata[66] */ + { 33, 0x000000009E3779B1ULL, 0xE92C292F64BC3071ULL }, /* XSUM_XXH64_testdata[67] */ + { 34, 0x0000000000000000ULL, 0xD0CE7CBAE371BEB2ULL }, /* XSUM_XXH64_testdata[68] */ + { 34, 0x000000009E3779B1ULL, 0xC509C460280BBB12ULL }, /* XSUM_XXH64_testdata[69] */ + { 35, 0x0000000000000000ULL, 0xCB0AA8E2A7A29707ULL }, /* XSUM_XXH64_testdata[70] */ + { 35, 0x000000009E3779B1ULL, 0xECE3515C236504C7ULL }, /* XSUM_XXH64_testdata[71] */ + { 36, 0x0000000000000000ULL, 0x0AE67584084DC6A4ULL }, /* XSUM_XXH64_testdata[72] */ + { 36, 0x000000009E3779B1ULL, 0x57C73F9E3A6FC2C6ULL }, /* XSUM_XXH64_testdata[73] */ + { 37, 0x0000000000000000ULL, 0x292F5332C92B73CEULL }, /* XSUM_XXH64_testdata[74] */ + { 37, 0x000000009E3779B1ULL, 0x7762425B2E89DAD3ULL }, /* XSUM_XXH64_testdata[75] */ + { 38, 0x0000000000000000ULL, 0x5F398E2A8478BED3ULL }, /* XSUM_XXH64_testdata[76] */ + { 38, 0x000000009E3779B1ULL, 0xE842D306DC53E621ULL }, /* XSUM_XXH64_testdata[77] */ + { 39, 0x0000000000000000ULL, 0xB888CAF07592B1B3ULL }, /* XSUM_XXH64_testdata[78] */ + { 39, 0x000000009E3779B1ULL, 0x602E74D43465AC3DULL }, /* XSUM_XXH64_testdata[79] */ + { 40, 0x0000000000000000ULL, 0x23B3810D7D8B1731ULL }, /* XSUM_XXH64_testdata[80] */ + { 40, 0x000000009E3779B1ULL, 0x5A57F246772BC540ULL }, /* XSUM_XXH64_testdata[81] */ + { 41, 0x0000000000000000ULL, 0x5342C966C7F3D5F4ULL }, /* XSUM_XXH64_testdata[82] */ + { 41, 0x000000009E3779B1ULL, 0xB213FFB25FEB1CCDULL }, /* XSUM_XXH64_testdata[83] */ + { 42, 0x0000000000000000ULL, 0x77454B74F1DBBF63ULL }, /* XSUM_XXH64_testdata[84] */ + { 42, 0x000000009E3779B1ULL, 0xAED0CE7EA4202741ULL }, /* XSUM_XXH64_testdata[85] */ + { 43, 0x0000000000000000ULL, 0x9904C9350F597190ULL }, /* XSUM_XXH64_testdata[86] */ + { 43, 0x000000009E3779B1ULL, 0xA071200735E57A6AULL }, /* XSUM_XXH64_testdata[87] */ + { 44, 0x0000000000000000ULL, 0x24EC2B3D0E442641ULL }, /* XSUM_XXH64_testdata[88] */ + { 44, 0x000000009E3779B1ULL, 0x831B7452E64EB328ULL }, /* XSUM_XXH64_testdata[89] */ + { 45, 0x0000000000000000ULL, 0x4EC307EBE0A650A4ULL }, /* XSUM_XXH64_testdata[90] */ + { 45, 0x000000009E3779B1ULL, 0x66BDA694A1FD3023ULL }, /* XSUM_XXH64_testdata[91] */ + { 46, 0x0000000000000000ULL, 0x7DD1C5514B2240EFULL }, /* XSUM_XXH64_testdata[92] */ + { 46, 0x000000009E3779B1ULL, 0xD238E617805EA9BBULL }, /* XSUM_XXH64_testdata[93] */ + { 47, 0x0000000000000000ULL, 0x84A42E167CBD1FEFULL }, /* XSUM_XXH64_testdata[94] */ + { 47, 0x000000009E3779B1ULL, 0xA474B31A5132A541ULL }, /* XSUM_XXH64_testdata[95] */ + { 48, 0x0000000000000000ULL, 0xFD0FEEAC7A939933ULL }, /* XSUM_XXH64_testdata[96] */ + { 48, 0x000000009E3779B1ULL, 0x6FFE2F43A24C2302ULL }, /* XSUM_XXH64_testdata[97] */ + { 49, 0x0000000000000000ULL, 0xA91BFF78A7185B66ULL }, /* XSUM_XXH64_testdata[98] */ + { 49, 0x000000009E3779B1ULL, 0xE858B13C918498ECULL }, /* XSUM_XXH64_testdata[99] */ + { 50, 0x0000000000000000ULL, 0xDFFE9F293DDD101DULL }, /* XSUM_XXH64_testdata[100] */ + { 50, 0x000000009E3779B1ULL, 0x46521A048859CE7AULL }, /* XSUM_XXH64_testdata[101] */ + { 51, 0x0000000000000000ULL, 0x2332585C18D7483AULL }, /* XSUM_XXH64_testdata[102] */ + { 51, 0x000000009E3779B1ULL, 0x788846B44826A5D1ULL }, /* XSUM_XXH64_testdata[103] */ + { 52, 0x0000000000000000ULL, 0x5A0056511F9DD653ULL }, /* XSUM_XXH64_testdata[104] */ + { 52, 0x000000009E3779B1ULL, 0x1C0081F84C6D32DBULL }, /* XSUM_XXH64_testdata[105] */ + { 53, 0x0000000000000000ULL, 0x4426A2F5C8D59469ULL }, /* XSUM_XXH64_testdata[106] */ + { 53, 0x000000009E3779B1ULL, 0x4270188315F2CC31ULL }, /* XSUM_XXH64_testdata[107] */ + { 54, 0x0000000000000000ULL, 0x39EAF8893520636AULL }, /* XSUM_XXH64_testdata[108] */ + { 54, 0x000000009E3779B1ULL, 0xB6D6E8B68C7EF7A2ULL }, /* XSUM_XXH64_testdata[109] */ + { 55, 0x0000000000000000ULL, 0xAFEA98CC4E92F7E1ULL }, /* XSUM_XXH64_testdata[110] */ + { 55, 0x000000009E3779B1ULL, 0xE6D5C88B9135E579ULL }, /* XSUM_XXH64_testdata[111] */ + { 56, 0x0000000000000000ULL, 0xB7A6414B8D3E2597ULL }, /* XSUM_XXH64_testdata[112] */ + { 56, 0x000000009E3779B1ULL, 0xB6BD2CBFB6A64017ULL }, /* XSUM_XXH64_testdata[113] */ + { 57, 0x0000000000000000ULL, 0xF33D64569CD4B1C0ULL }, /* XSUM_XXH64_testdata[114] */ + { 57, 0x000000009E3779B1ULL, 0xB9B235447E24CA28ULL }, /* XSUM_XXH64_testdata[115] */ + { 58, 0x0000000000000000ULL, 0x93FA072F0E8FE7CAULL }, /* XSUM_XXH64_testdata[116] */ + { 58, 0x000000009E3779B1ULL, 0xB8D0D6211B80EA15ULL }, /* XSUM_XXH64_testdata[117] */ + { 59, 0x0000000000000000ULL, 0x4F2890576949D6EDULL }, /* XSUM_XXH64_testdata[118] */ + { 59, 0x000000009E3779B1ULL, 0x11E586B470B7224EULL }, /* XSUM_XXH64_testdata[119] */ + { 60, 0x0000000000000000ULL, 0x3378C44F459C290BULL }, /* XSUM_XXH64_testdata[120] */ + { 60, 0x000000009E3779B1ULL, 0xA7C18F722446E5C8ULL }, /* XSUM_XXH64_testdata[121] */ + { 61, 0x0000000000000000ULL, 0x40D486FDDDAD5CB7ULL }, /* XSUM_XXH64_testdata[122] */ + { 61, 0x000000009E3779B1ULL, 0x980BDE3212E2F025ULL }, /* XSUM_XXH64_testdata[123] */ + { 62, 0x0000000000000000ULL, 0x21664C60C551CC87ULL }, /* XSUM_XXH64_testdata[124] */ + { 62, 0x000000009E3779B1ULL, 0x128AC6F704B8A0F7ULL }, /* XSUM_XXH64_testdata[125] */ + { 63, 0x0000000000000000ULL, 0xA9EFBE0FA0F3F4E7ULL }, /* XSUM_XXH64_testdata[126] */ + { 63, 0x000000009E3779B1ULL, 0x6C911FADB05B6FC2ULL }, /* XSUM_XXH64_testdata[127] */ + { 64, 0x0000000000000000ULL, 0xEF558F8ACAC2B5CDULL }, /* XSUM_XXH64_testdata[128] */ + { 64, 0x000000009E3779B1ULL, 0xB5EEBA99264CC44FULL }, /* XSUM_XXH64_testdata[129] */ + { 65, 0x0000000000000000ULL, 0xDE0F20DC2631AF7AULL }, /* XSUM_XXH64_testdata[130] */ + { 65, 0x000000009E3779B1ULL, 0xD3F6FF3941E310CAULL }, /* XSUM_XXH64_testdata[131] */ + { 66, 0x0000000000000000ULL, 0xCF1E52EDE1C505C4ULL }, /* XSUM_XXH64_testdata[132] */ + { 66, 0x000000009E3779B1ULL, 0xBCE7B3488A29EFB1ULL }, /* XSUM_XXH64_testdata[133] */ + { 67, 0x0000000000000000ULL, 0x0965DF7219D2E741ULL }, /* XSUM_XXH64_testdata[134] */ + { 67, 0x000000009E3779B1ULL, 0x1862E884ABDC704CULL }, /* XSUM_XXH64_testdata[135] */ + { 68, 0x0000000000000000ULL, 0x1B8378E923B247A7ULL }, /* XSUM_XXH64_testdata[136] */ + { 68, 0x000000009E3779B1ULL, 0x25E6F985E36492EFULL }, /* XSUM_XXH64_testdata[137] */ + { 69, 0x0000000000000000ULL, 0x43F2B606AD9BA362ULL }, /* XSUM_XXH64_testdata[138] */ + { 69, 0x000000009E3779B1ULL, 0x81F00574A346F668ULL }, /* XSUM_XXH64_testdata[139] */ + { 70, 0x0000000000000000ULL, 0xD9C3413222F1DEA4ULL }, /* XSUM_XXH64_testdata[140] */ + { 70, 0x000000009E3779B1ULL, 0xE01652426AA1774CULL }, /* XSUM_XXH64_testdata[141] */ + { 71, 0x0000000000000000ULL, 0x3D6ECAB2BCFBE3FFULL }, /* XSUM_XXH64_testdata[142] */ + { 71, 0x000000009E3779B1ULL, 0xAAB5C313DFAC5A44ULL }, /* XSUM_XXH64_testdata[143] */ + { 72, 0x0000000000000000ULL, 0xEA8573B60D5A8800ULL }, /* XSUM_XXH64_testdata[144] */ + { 72, 0x000000009E3779B1ULL, 0xBDEE6BA43947EB30ULL }, /* XSUM_XXH64_testdata[145] */ + { 73, 0x0000000000000000ULL, 0xE372599E31F8CFFDULL }, /* XSUM_XXH64_testdata[146] */ + { 73, 0x000000009E3779B1ULL, 0xF1597384DE9FBD93ULL }, /* XSUM_XXH64_testdata[147] */ + { 74, 0x0000000000000000ULL, 0x02B86794A00BDBE8ULL }, /* XSUM_XXH64_testdata[148] */ + { 74, 0x000000009E3779B1ULL, 0x5FB940B90D39A1E6ULL }, /* XSUM_XXH64_testdata[149] */ + { 75, 0x0000000000000000ULL, 0xCA1A21FB24979810ULL }, /* XSUM_XXH64_testdata[150] */ + { 75, 0x000000009E3779B1ULL, 0x76214D8E3B169CF5ULL }, /* XSUM_XXH64_testdata[151] */ + { 76, 0x0000000000000000ULL, 0x60DFF17BEC07766DULL }, /* XSUM_XXH64_testdata[152] */ + { 76, 0x000000009E3779B1ULL, 0x9A8133A1DDAF07DBULL }, /* XSUM_XXH64_testdata[153] */ + { 77, 0x0000000000000000ULL, 0xF4AF74828DE6862DULL }, /* XSUM_XXH64_testdata[154] */ + { 77, 0x000000009E3779B1ULL, 0xD73AEC54F785E384ULL }, /* XSUM_XXH64_testdata[155] */ + { 78, 0x0000000000000000ULL, 0x828E4C8C5257CC15ULL }, /* XSUM_XXH64_testdata[156] */ + { 78, 0x000000009E3779B1ULL, 0xD2317E57923E664CULL }, /* XSUM_XXH64_testdata[157] */ + { 79, 0x0000000000000000ULL, 0x91F7F9D6008299A0ULL }, /* XSUM_XXH64_testdata[158] */ + { 79, 0x000000009E3779B1ULL, 0xE863995625F7AD52ULL }, /* XSUM_XXH64_testdata[159] */ + { 80, 0x0000000000000000ULL, 0x99BD5D25EB211099ULL }, /* XSUM_XXH64_testdata[160] */ + { 80, 0x000000009E3779B1ULL, 0x5281D5357D0B8AC4ULL }, /* XSUM_XXH64_testdata[161] */ + { 81, 0x0000000000000000ULL, 0xCB329A8F102F05BCULL }, /* XSUM_XXH64_testdata[162] */ + { 81, 0x000000009E3779B1ULL, 0x7E77B483A01E4AEDULL }, /* XSUM_XXH64_testdata[163] */ + { 82, 0x0000000000000000ULL, 0x993A0B6E6D5DF0CBULL }, /* XSUM_XXH64_testdata[164] */ + { 82, 0x000000009E3779B1ULL, 0x6DBD4234F13A5DC1ULL }, /* XSUM_XXH64_testdata[165] */ + { 83, 0x0000000000000000ULL, 0x818F4CEC407D8CF9ULL }, /* XSUM_XXH64_testdata[166] */ + { 83, 0x000000009E3779B1ULL, 0x0367C5363E62AEC3ULL }, /* XSUM_XXH64_testdata[167] */ + { 84, 0x0000000000000000ULL, 0xAF57F8CD340FB1B6ULL }, /* XSUM_XXH64_testdata[168] */ + { 84, 0x000000009E3779B1ULL, 0xC7623B4C4E6844C1ULL }, /* XSUM_XXH64_testdata[169] */ + { 85, 0x0000000000000000ULL, 0x50789F0F60EBAD3AULL }, /* XSUM_XXH64_testdata[170] */ + { 85, 0x000000009E3779B1ULL, 0xB88DA3150AAF44BEULL }, /* XSUM_XXH64_testdata[171] */ + { 86, 0x0000000000000000ULL, 0xF3214750C1A6455EULL }, /* XSUM_XXH64_testdata[172] */ + { 86, 0x000000009E3779B1ULL, 0x56C1A7FB96DE0E82ULL }, /* XSUM_XXH64_testdata[173] */ + { 87, 0x0000000000000000ULL, 0x8DBE8913BE346D20ULL }, /* XSUM_XXH64_testdata[174] */ + { 87, 0x000000009E3779B1ULL, 0x899E381BD46D1409ULL }, /* XSUM_XXH64_testdata[175] */ + { 88, 0x0000000000000000ULL, 0xA130814F81F87E43ULL }, /* XSUM_XXH64_testdata[176] */ + { 88, 0x000000009E3779B1ULL, 0xA3BF96F3D593C759ULL }, /* XSUM_XXH64_testdata[177] */ + { 89, 0x0000000000000000ULL, 0x0023276D258EDA58ULL }, /* XSUM_XXH64_testdata[178] */ + { 89, 0x000000009E3779B1ULL, 0x6779DE8C67483444ULL }, /* XSUM_XXH64_testdata[179] */ + { 90, 0x0000000000000000ULL, 0x0A0571F769B40C93ULL }, /* XSUM_XXH64_testdata[180] */ + { 90, 0x000000009E3779B1ULL, 0x9C915D4DA4BE05A6ULL }, /* XSUM_XXH64_testdata[181] */ + { 91, 0x0000000000000000ULL, 0x14A2F5051E8893C8ULL }, /* XSUM_XXH64_testdata[182] */ + { 91, 0x000000009E3779B1ULL, 0x46F62B0B3D1B66AFULL }, /* XSUM_XXH64_testdata[183] */ + { 92, 0x0000000000000000ULL, 0x4FBBE74E062367B0ULL }, /* XSUM_XXH64_testdata[184] */ + { 92, 0x000000009E3779B1ULL, 0x3190419611427263ULL }, /* XSUM_XXH64_testdata[185] */ + { 93, 0x0000000000000000ULL, 0x4B375CEF503586FCULL }, /* XSUM_XXH64_testdata[186] */ + { 93, 0x000000009E3779B1ULL, 0x821D5495DDDC7C82ULL }, /* XSUM_XXH64_testdata[187] */ + { 94, 0x0000000000000000ULL, 0x6AD4B96E4286EB70ULL }, /* XSUM_XXH64_testdata[188] */ + { 94, 0x000000009E3779B1ULL, 0x553DDDB89F3CB523ULL }, /* XSUM_XXH64_testdata[189] */ + { 95, 0x0000000000000000ULL, 0xFF9F46BDCC644624ULL }, /* XSUM_XXH64_testdata[190] */ + { 95, 0x000000009E3779B1ULL, 0x72E75A560EF624A3ULL }, /* XSUM_XXH64_testdata[191] */ + { 96, 0x0000000000000000ULL, 0x105064E743EDD1D9ULL }, /* XSUM_XXH64_testdata[192] */ + { 96, 0x000000009E3779B1ULL, 0x8FF0B4ABEE6F03CCULL }, /* XSUM_XXH64_testdata[193] */ + { 97, 0x0000000000000000ULL, 0x097B16E4E9B0A2E3ULL }, /* XSUM_XXH64_testdata[194] */ + { 97, 0x000000009E3779B1ULL, 0x9704E5147FDCC4F4ULL }, /* XSUM_XXH64_testdata[195] */ + { 98, 0x0000000000000000ULL, 0x06662519E8393FF2ULL }, /* XSUM_XXH64_testdata[196] */ + { 98, 0x000000009E3779B1ULL, 0xB2889379EAD9C5CFULL }, /* XSUM_XXH64_testdata[197] */ + { 99, 0x0000000000000000ULL, 0xB51CB5BA2957AB0BULL }, /* XSUM_XXH64_testdata[198] */ + { 99, 0x000000009E3779B1ULL, 0x5C10E54DEC4B0FA9ULL }, /* XSUM_XXH64_testdata[199] */ + { 100, 0x0000000000000000ULL, 0x4BFE019CD91D9EA4ULL }, /* XSUM_XXH64_testdata[200] */ + { 100, 0x000000009E3779B1ULL, 0x4853706DC9625CAEULL }, /* XSUM_XXH64_testdata[201] */ + { 101, 0x0000000000000000ULL, 0xA51EA2101B2D114CULL }, /* XSUM_XXH64_testdata[202] */ + { 101, 0x000000009E3779B1ULL, 0x6B38A5BBBA1F049CULL }, /* XSUM_XXH64_testdata[203] */ + { 102, 0x0000000000000000ULL, 0x26259500AD475ACFULL }, /* XSUM_XXH64_testdata[204] */ + { 102, 0x000000009E3779B1ULL, 0x6CDC4C9926C04118ULL }, /* XSUM_XXH64_testdata[205] */ + { 103, 0x0000000000000000ULL, 0x74A97F547BB8C845ULL }, /* XSUM_XXH64_testdata[206] */ + { 103, 0x000000009E3779B1ULL, 0x6A027096FB146E74ULL }, /* XSUM_XXH64_testdata[207] */ + { 104, 0x0000000000000000ULL, 0x23ED252F132DFA0FULL }, /* XSUM_XXH64_testdata[208] */ + { 104, 0x000000009E3779B1ULL, 0x1683C40FE4F3EC6EULL }, /* XSUM_XXH64_testdata[209] */ + { 105, 0x0000000000000000ULL, 0x1E03CFB52F4E43F2ULL }, /* XSUM_XXH64_testdata[210] */ + { 105, 0x000000009E3779B1ULL, 0x8399AE3FAC887392ULL }, /* XSUM_XXH64_testdata[211] */ + { 106, 0x0000000000000000ULL, 0xB3C7FBBF1E2E9E9FULL }, /* XSUM_XXH64_testdata[212] */ + { 106, 0x000000009E3779B1ULL, 0x205158F71E4AD7DAULL }, /* XSUM_XXH64_testdata[213] */ + { 107, 0x0000000000000000ULL, 0xC85AF48447573841ULL }, /* XSUM_XXH64_testdata[214] */ + { 107, 0x000000009E3779B1ULL, 0x42BE4CF154BDCB6FULL }, /* XSUM_XXH64_testdata[215] */ + { 108, 0x0000000000000000ULL, 0x395022FA4E7C679DULL }, /* XSUM_XXH64_testdata[216] */ + { 108, 0x000000009E3779B1ULL, 0x76577A7F0C793723ULL }, /* XSUM_XXH64_testdata[217] */ + { 109, 0x0000000000000000ULL, 0x931CE3A962248CB1ULL }, /* XSUM_XXH64_testdata[218] */ + { 109, 0x000000009E3779B1ULL, 0x3F3AFDE1CBFB2D78ULL }, /* XSUM_XXH64_testdata[219] */ + { 110, 0x0000000000000000ULL, 0x46A7A7126CE7D4E6ULL }, /* XSUM_XXH64_testdata[220] */ + { 110, 0x000000009E3779B1ULL, 0x6CC264DBC30D3EDCULL }, /* XSUM_XXH64_testdata[221] */ + { 111, 0x0000000000000000ULL, 0xB7AFFC461C9ECE18ULL }, /* XSUM_XXH64_testdata[222] */ + { 111, 0x000000009E3779B1ULL, 0x7D83E9E9160317ECULL }, /* XSUM_XXH64_testdata[223] */ + { 112, 0x0000000000000000ULL, 0xE5752EA6E2B34417ULL }, /* XSUM_XXH64_testdata[224] */ + { 112, 0x000000009E3779B1ULL, 0xEECB8B56A5BD00DBULL }, /* XSUM_XXH64_testdata[225] */ + { 113, 0x0000000000000000ULL, 0xFDA17FD84B50AD25ULL }, /* XSUM_XXH64_testdata[226] */ + { 113, 0x000000009E3779B1ULL, 0x47E8C074796FD671ULL }, /* XSUM_XXH64_testdata[227] */ + { 114, 0x0000000000000000ULL, 0x8751DAC0314381B6ULL }, /* XSUM_XXH64_testdata[228] */ + { 114, 0x000000009E3779B1ULL, 0xB880FBDD4FB6B274ULL }, /* XSUM_XXH64_testdata[229] */ + { 115, 0x0000000000000000ULL, 0xF7CB3E3DFCE93157ULL }, /* XSUM_XXH64_testdata[230] */ + { 115, 0x000000009E3779B1ULL, 0x55033F2004F0E78CULL }, /* XSUM_XXH64_testdata[231] */ + { 116, 0x0000000000000000ULL, 0x0A29AECEA5D8240FULL }, /* XSUM_XXH64_testdata[232] */ + { 116, 0x000000009E3779B1ULL, 0xD85DE10D5AD4E0A2ULL }, /* XSUM_XXH64_testdata[233] */ + { 117, 0x0000000000000000ULL, 0x6731FD15B033D86FULL }, /* XSUM_XXH64_testdata[234] */ + { 117, 0x000000009E3779B1ULL, 0xFC63C52FB7E3C2F5ULL }, /* XSUM_XXH64_testdata[235] */ + { 118, 0x0000000000000000ULL, 0x00BB7740D233CCA9ULL }, /* XSUM_XXH64_testdata[236] */ + { 118, 0x000000009E3779B1ULL, 0x13B679C13A3D0514ULL }, /* XSUM_XXH64_testdata[237] */ + { 119, 0x0000000000000000ULL, 0xC9577B1D5E99EADDULL }, /* XSUM_XXH64_testdata[238] */ + { 119, 0x000000009E3779B1ULL, 0xF935B21C4FB17FA0ULL }, /* XSUM_XXH64_testdata[239] */ + { 120, 0x0000000000000000ULL, 0x35E51D65936602F0ULL }, /* XSUM_XXH64_testdata[240] */ + { 120, 0x000000009E3779B1ULL, 0x8F28106B8EDD0B62ULL }, /* XSUM_XXH64_testdata[241] */ + { 121, 0x0000000000000000ULL, 0xD11761D6683C7490ULL }, /* XSUM_XXH64_testdata[242] */ + { 121, 0x000000009E3779B1ULL, 0xE48065BAFEE225FFULL }, /* XSUM_XXH64_testdata[243] */ + { 122, 0x0000000000000000ULL, 0xEC6AFA468D61B584ULL }, /* XSUM_XXH64_testdata[244] */ + { 122, 0x000000009E3779B1ULL, 0x562C3376F70E4A29ULL }, /* XSUM_XXH64_testdata[245] */ + { 123, 0x0000000000000000ULL, 0x147F4024677727ECULL }, /* XSUM_XXH64_testdata[246] */ + { 123, 0x000000009E3779B1ULL, 0x4980EF3E9B77DC0CULL }, /* XSUM_XXH64_testdata[247] */ + { 124, 0x0000000000000000ULL, 0x47FD33A91C14F035ULL }, /* XSUM_XXH64_testdata[248] */ + { 124, 0x000000009E3779B1ULL, 0x89EEA88E5DFFEBBFULL }, /* XSUM_XXH64_testdata[249] */ + { 125, 0x0000000000000000ULL, 0x7B385D8B837FAA3EULL }, /* XSUM_XXH64_testdata[250] */ + { 125, 0x000000009E3779B1ULL, 0xFE949E5EF83C19B5ULL }, /* XSUM_XXH64_testdata[251] */ + { 126, 0x0000000000000000ULL, 0xA0E5EC3ED6068228ULL }, /* XSUM_XXH64_testdata[252] */ + { 126, 0x000000009E3779B1ULL, 0x27EDDF566EA1935CULL }, /* XSUM_XXH64_testdata[253] */ + { 127, 0x0000000000000000ULL, 0x3C7A21119AA662B0ULL }, /* XSUM_XXH64_testdata[254] */ + { 127, 0x000000009E3779B1ULL, 0xB0D6DC189C06CEEDULL }, /* XSUM_XXH64_testdata[255] */ + { 128, 0x0000000000000000ULL, 0x90CA021457D96DC5ULL }, /* XSUM_XXH64_testdata[256] */ + { 128, 0x000000009E3779B1ULL, 0xED9340A202BCD1CFULL }, /* XSUM_XXH64_testdata[257] */ + { 129, 0x0000000000000000ULL, 0x41C280132D697ABAULL }, /* XSUM_XXH64_testdata[258] */ + { 129, 0x000000009E3779B1ULL, 0x1668B87489935FF5ULL }, /* XSUM_XXH64_testdata[259] */ + { 130, 0x0000000000000000ULL, 0xFCEB19904FA5852EULL }, /* XSUM_XXH64_testdata[260] */ + { 130, 0x000000009E3779B1ULL, 0x531E7902F11E5233ULL }, /* XSUM_XXH64_testdata[261] */ + { 131, 0x0000000000000000ULL, 0xA855AB9C545E3AA0ULL }, /* XSUM_XXH64_testdata[262] */ + { 131, 0x000000009E3779B1ULL, 0x38EEF63349D48351ULL }, /* XSUM_XXH64_testdata[263] */ + { 132, 0x0000000000000000ULL, 0x92FF5FE9DF03B47EULL }, /* XSUM_XXH64_testdata[264] */ + { 132, 0x000000009E3779B1ULL, 0x25499A366A4F582AULL }, /* XSUM_XXH64_testdata[265] */ + { 133, 0x0000000000000000ULL, 0xBEBABB79841EEFE3ULL }, /* XSUM_XXH64_testdata[266] */ + { 133, 0x000000009E3779B1ULL, 0x086D173652FF2C7BULL }, /* XSUM_XXH64_testdata[267] */ + { 134, 0x0000000000000000ULL, 0x83484B9261651B21ULL }, /* XSUM_XXH64_testdata[268] */ + { 134, 0x000000009E3779B1ULL, 0xF6DF65E34A988A05ULL }, /* XSUM_XXH64_testdata[269] */ + { 135, 0x0000000000000000ULL, 0x1FA13853B96095B6ULL }, /* XSUM_XXH64_testdata[270] */ + { 135, 0x000000009E3779B1ULL, 0xAE76A9DBD7A050B5ULL }, /* XSUM_XXH64_testdata[271] */ + { 136, 0x0000000000000000ULL, 0xDED15F1F9BA92FEFULL }, /* XSUM_XXH64_testdata[272] */ + { 136, 0x000000009E3779B1ULL, 0xE0DC505D8B6C72AAULL }, /* XSUM_XXH64_testdata[273] */ + { 137, 0x0000000000000000ULL, 0x413F6647912DD2EAULL }, /* XSUM_XXH64_testdata[274] */ + { 137, 0x000000009E3779B1ULL, 0x49402EC5661AF438ULL }, /* XSUM_XXH64_testdata[275] */ + { 138, 0x0000000000000000ULL, 0xBF93F15916B89700ULL }, /* XSUM_XXH64_testdata[276] */ + { 138, 0x000000009E3779B1ULL, 0x5C8B85C8837C3FF6ULL }, /* XSUM_XXH64_testdata[277] */ + { 139, 0x0000000000000000ULL, 0x9B4FD36F05521437ULL }, /* XSUM_XXH64_testdata[278] */ + { 139, 0x000000009E3779B1ULL, 0x1A2A4E33EEA8A6CCULL }, /* XSUM_XXH64_testdata[279] */ + { 140, 0x0000000000000000ULL, 0xAF1F8B36AFE6DF4FULL }, /* XSUM_XXH64_testdata[280] */ + { 140, 0x000000009E3779B1ULL, 0xA001BF8A9FA78B49ULL }, /* XSUM_XXH64_testdata[281] */ + { 141, 0x0000000000000000ULL, 0x6948F778B10726CBULL }, /* XSUM_XXH64_testdata[282] */ + { 141, 0x000000009E3779B1ULL, 0x357064D8FE34DE45ULL }, /* XSUM_XXH64_testdata[283] */ + { 142, 0x0000000000000000ULL, 0x57DE58AC79A084E8ULL }, /* XSUM_XXH64_testdata[284] */ + { 142, 0x000000009E3779B1ULL, 0xBF0781313D72D5E8ULL }, /* XSUM_XXH64_testdata[285] */ + { 143, 0x0000000000000000ULL, 0xD2CA0115A4F272AAULL }, /* XSUM_XXH64_testdata[286] */ + { 143, 0x000000009E3779B1ULL, 0x7529563A8C6AAAD6ULL }, /* XSUM_XXH64_testdata[287] */ + { 144, 0x0000000000000000ULL, 0x47999F1F28EC88A6ULL }, /* XSUM_XXH64_testdata[288] */ + { 144, 0x000000009E3779B1ULL, 0x2221C4C0807FE0F4ULL }, /* XSUM_XXH64_testdata[289] */ + { 145, 0x0000000000000000ULL, 0x18F519801BB62003ULL }, /* XSUM_XXH64_testdata[290] */ + { 145, 0x000000009E3779B1ULL, 0x98022684CD4C5A22ULL }, /* XSUM_XXH64_testdata[291] */ + { 146, 0x0000000000000000ULL, 0x15C761F415F97578ULL }, /* XSUM_XXH64_testdata[292] */ + { 146, 0x000000009E3779B1ULL, 0xB193B77D0F63741CULL }, /* XSUM_XXH64_testdata[293] */ + { 147, 0x0000000000000000ULL, 0x4BA2A072E1FF588FULL }, /* XSUM_XXH64_testdata[294] */ + { 147, 0x000000009E3779B1ULL, 0xBF8E502C905E18F7ULL }, /* XSUM_XXH64_testdata[295] */ + { 148, 0x0000000000000000ULL, 0xF2E4CB94F60F07D2ULL }, /* XSUM_XXH64_testdata[296] */ + { 148, 0x000000009E3779B1ULL, 0x7838B9B817007E06ULL }, /* XSUM_XXH64_testdata[297] */ + { 149, 0x0000000000000000ULL, 0xAFBD86DEE66EFE56ULL }, /* XSUM_XXH64_testdata[298] */ + { 149, 0x000000009E3779B1ULL, 0xC39859A0DE79A89BULL }, /* XSUM_XXH64_testdata[299] */ + { 150, 0x0000000000000000ULL, 0xC1B4E21FDB2FECE6ULL }, /* XSUM_XXH64_testdata[300] */ + { 150, 0x000000009E3779B1ULL, 0xF1B1B1CDDB38FFC7ULL }, /* XSUM_XXH64_testdata[301] */ + { 151, 0x0000000000000000ULL, 0x4DDEA4A0F2AA9CF8ULL }, /* XSUM_XXH64_testdata[302] */ + { 151, 0x000000009E3779B1ULL, 0xDA1F611EB1C2BE56ULL }, /* XSUM_XXH64_testdata[303] */ + { 152, 0x0000000000000000ULL, 0x62A15F4D530A7EA5ULL }, /* XSUM_XXH64_testdata[304] */ + { 152, 0x000000009E3779B1ULL, 0x2F0F73C639D3BAB3ULL }, /* XSUM_XXH64_testdata[305] */ + { 153, 0x0000000000000000ULL, 0x9B84F22525275E62ULL }, /* XSUM_XXH64_testdata[306] */ + { 153, 0x000000009E3779B1ULL, 0x335D15302C3E1B23ULL }, /* XSUM_XXH64_testdata[307] */ + { 154, 0x0000000000000000ULL, 0x2EEB0441C9451B1FULL }, /* XSUM_XXH64_testdata[308] */ + { 154, 0x000000009E3779B1ULL, 0x97C17A5309E528DDULL }, /* XSUM_XXH64_testdata[309] */ + { 155, 0x0000000000000000ULL, 0x1DE7F80736C5FD1FULL }, /* XSUM_XXH64_testdata[310] */ + { 155, 0x000000009E3779B1ULL, 0x122D55162B11AA70ULL }, /* XSUM_XXH64_testdata[311] */ + { 156, 0x0000000000000000ULL, 0x73745EC8FDABF21CULL }, /* XSUM_XXH64_testdata[312] */ + { 156, 0x000000009E3779B1ULL, 0x4B29B9C80C11731EULL }, /* XSUM_XXH64_testdata[313] */ + { 157, 0x0000000000000000ULL, 0x8A2890AE42E4DBC0ULL }, /* XSUM_XXH64_testdata[314] */ + { 157, 0x000000009E3779B1ULL, 0x606C98DA0FFF5E99ULL }, /* XSUM_XXH64_testdata[315] */ + { 158, 0x0000000000000000ULL, 0x6B4F62CFF8A43B80ULL }, /* XSUM_XXH64_testdata[316] */ + { 158, 0x000000009E3779B1ULL, 0x71974C55ACE70505ULL }, /* XSUM_XXH64_testdata[317] */ + { 159, 0x0000000000000000ULL, 0x5E02EFAF7ACDF19CULL }, /* XSUM_XXH64_testdata[318] */ + { 159, 0x000000009E3779B1ULL, 0x0981A09CBBBEADFDULL }, /* XSUM_XXH64_testdata[319] */ + { 160, 0x0000000000000000ULL, 0x5B11EFE8DE350A3BULL }, /* XSUM_XXH64_testdata[320] */ + { 160, 0x000000009E3779B1ULL, 0x96C22CBA2A6BC16FULL }, /* XSUM_XXH64_testdata[321] */ + { 161, 0x0000000000000000ULL, 0xAD813CA7B0D54781ULL }, /* XSUM_XXH64_testdata[322] */ + { 161, 0x000000009E3779B1ULL, 0xF782F5A5F3183FC5ULL }, /* XSUM_XXH64_testdata[323] */ + { 162, 0x0000000000000000ULL, 0xD2EC094A8B3CA48FULL }, /* XSUM_XXH64_testdata[324] */ + { 162, 0x000000009E3779B1ULL, 0x6DE21A60EE5C4ED9ULL }, /* XSUM_XXH64_testdata[325] */ + { 163, 0x0000000000000000ULL, 0x4BF3D48D5ACBF6ACULL }, /* XSUM_XXH64_testdata[326] */ + { 163, 0x000000009E3779B1ULL, 0x3A4037A4F77B80F7ULL }, /* XSUM_XXH64_testdata[327] */ + { 164, 0x0000000000000000ULL, 0xE41F05B876F996E6ULL }, /* XSUM_XXH64_testdata[328] */ + { 164, 0x000000009E3779B1ULL, 0xDF59454C354263C0ULL }, /* XSUM_XXH64_testdata[329] */ + { 165, 0x0000000000000000ULL, 0x46C8500698B33143ULL }, /* XSUM_XXH64_testdata[330] */ + { 165, 0x000000009E3779B1ULL, 0xE61470FE106DAEB6ULL }, /* XSUM_XXH64_testdata[331] */ + { 166, 0x0000000000000000ULL, 0x1FF837B89DFF74C6ULL }, /* XSUM_XXH64_testdata[332] */ + { 166, 0x000000009E3779B1ULL, 0x35EF16A3CAB6DBD8ULL }, /* XSUM_XXH64_testdata[333] */ + { 167, 0x0000000000000000ULL, 0x8A9FE53D0989B9DBULL }, /* XSUM_XXH64_testdata[334] */ + { 167, 0x000000009E3779B1ULL, 0xF09AA4A5D0C8946AULL }, /* XSUM_XXH64_testdata[335] */ + { 168, 0x0000000000000000ULL, 0x1AED20C477BA590AULL }, /* XSUM_XXH64_testdata[336] */ + { 168, 0x000000009E3779B1ULL, 0xC4AF5415867E8187ULL }, /* XSUM_XXH64_testdata[337] */ + { 169, 0x0000000000000000ULL, 0x5678A561F39E4B7FULL }, /* XSUM_XXH64_testdata[338] */ + { 169, 0x000000009E3779B1ULL, 0x79174EB2FCB8E1B5ULL }, /* XSUM_XXH64_testdata[339] */ + { 170, 0x0000000000000000ULL, 0x07BC9808A99E91CCULL }, /* XSUM_XXH64_testdata[340] */ + { 170, 0x000000009E3779B1ULL, 0xA34F995ABD6E23E9ULL }, /* XSUM_XXH64_testdata[341] */ + { 171, 0x0000000000000000ULL, 0x1A1E7EFCFC5A377FULL }, /* XSUM_XXH64_testdata[342] */ + { 171, 0x000000009E3779B1ULL, 0xD47735EC5421D191ULL }, /* XSUM_XXH64_testdata[343] */ + { 172, 0x0000000000000000ULL, 0x625449E505BB4352ULL }, /* XSUM_XXH64_testdata[344] */ + { 172, 0x000000009E3779B1ULL, 0xCBB1E8F887B1A5E1ULL }, /* XSUM_XXH64_testdata[345] */ + { 173, 0x0000000000000000ULL, 0x16D6028DF84F9C3FULL }, /* XSUM_XXH64_testdata[346] */ + { 173, 0x000000009E3779B1ULL, 0xB0635E32B423501EULL }, /* XSUM_XXH64_testdata[347] */ + { 174, 0x0000000000000000ULL, 0x10902519949F206EULL }, /* XSUM_XXH64_testdata[348] */ + { 174, 0x000000009E3779B1ULL, 0xC39AFB66FBA93BE8ULL }, /* XSUM_XXH64_testdata[349] */ + { 175, 0x0000000000000000ULL, 0x8B8F04B20E8F9322ULL }, /* XSUM_XXH64_testdata[350] */ + { 175, 0x000000009E3779B1ULL, 0xD54B025F1F25CBA5ULL }, /* XSUM_XXH64_testdata[351] */ + { 176, 0x0000000000000000ULL, 0xDF9F79B4EA272F55ULL }, /* XSUM_XXH64_testdata[352] */ + { 176, 0x000000009E3779B1ULL, 0xBEB6CC6C04783A4DULL }, /* XSUM_XXH64_testdata[353] */ + { 177, 0x0000000000000000ULL, 0x05E8B1B61DBD0B71ULL }, /* XSUM_XXH64_testdata[354] */ + { 177, 0x000000009E3779B1ULL, 0xD71F05251A958C88ULL }, /* XSUM_XXH64_testdata[355] */ + { 178, 0x0000000000000000ULL, 0xA046B4F8050FF19FULL }, /* XSUM_XXH64_testdata[356] */ + { 178, 0x000000009E3779B1ULL, 0xF01A6ADA9BB9BB7FULL }, /* XSUM_XXH64_testdata[357] */ + { 179, 0x0000000000000000ULL, 0xC3C9B9967B78F65EULL }, /* XSUM_XXH64_testdata[358] */ + { 179, 0x000000009E3779B1ULL, 0x1766738809D8F120ULL }, /* XSUM_XXH64_testdata[359] */ + { 180, 0x0000000000000000ULL, 0x07557C6E01438898ULL }, /* XSUM_XXH64_testdata[360] */ + { 180, 0x000000009E3779B1ULL, 0xFFE5FEAB5B3B9BFDULL }, /* XSUM_XXH64_testdata[361] */ + { 181, 0x0000000000000000ULL, 0x8EB6B9EA889592E4ULL }, /* XSUM_XXH64_testdata[362] */ + { 181, 0x000000009E3779B1ULL, 0x1CB0DBF962768311ULL }, /* XSUM_XXH64_testdata[363] */ + { 182, 0x0000000000000000ULL, 0xB563B680EAF93D1CULL }, /* XSUM_XXH64_testdata[364] */ + { 182, 0x000000009E3779B1ULL, 0x8096F4E5CDAB3BA8ULL }, /* XSUM_XXH64_testdata[365] */ + { 183, 0x0000000000000000ULL, 0xDC0A598546EEF8D5ULL }, /* XSUM_XXH64_testdata[366] */ + { 183, 0x000000009E3779B1ULL, 0x6FE275B936FF8655ULL }, /* XSUM_XXH64_testdata[367] */ + { 184, 0x0000000000000000ULL, 0x3DEAE67F2AF3D038ULL }, /* XSUM_XXH64_testdata[368] */ + { 184, 0x000000009E3779B1ULL, 0xBF37C0A167A2A840ULL }, /* XSUM_XXH64_testdata[369] */ + { 185, 0x0000000000000000ULL, 0xDFF0E8388895A23EULL }, /* XSUM_XXH64_testdata[370] */ + { 185, 0x000000009E3779B1ULL, 0x36B6AF6C692E8CB9ULL }, /* XSUM_XXH64_testdata[371] */ + { 186, 0x0000000000000000ULL, 0x984EF85C5A5328F2ULL }, /* XSUM_XXH64_testdata[372] */ + { 186, 0x000000009E3779B1ULL, 0x2245AB8648BF626AULL }, /* XSUM_XXH64_testdata[373] */ + { 187, 0x0000000000000000ULL, 0xFDAD135D4A190C32ULL }, /* XSUM_XXH64_testdata[374] */ + { 187, 0x000000009E3779B1ULL, 0xD5C57A08C7C4BD87ULL }, /* XSUM_XXH64_testdata[375] */ + { 188, 0x0000000000000000ULL, 0x891447ACCCE59C8AULL }, /* XSUM_XXH64_testdata[376] */ + { 188, 0x000000009E3779B1ULL, 0xFC5497CD2A840F45ULL }, /* XSUM_XXH64_testdata[377] */ + { 189, 0x0000000000000000ULL, 0x3C44BB5E8E0B8C55ULL }, /* XSUM_XXH64_testdata[378] */ + { 189, 0x000000009E3779B1ULL, 0x918834CE94A648BAULL }, /* XSUM_XXH64_testdata[379] */ + { 190, 0x0000000000000000ULL, 0xA6479C9DDC0E5E00ULL }, /* XSUM_XXH64_testdata[380] */ + { 190, 0x000000009E3779B1ULL, 0x6A01F0D349AAD4D3ULL }, /* XSUM_XXH64_testdata[381] */ + { 191, 0x0000000000000000ULL, 0xF8329DA3AD4249E8ULL }, /* XSUM_XXH64_testdata[382] */ + { 191, 0x000000009E3779B1ULL, 0xE9CCF0337B2F9F6CULL }, /* XSUM_XXH64_testdata[383] */ + { 192, 0x0000000000000000ULL, 0xB76A434AC1E4768BULL }, /* XSUM_XXH64_testdata[384] */ + { 192, 0x000000009E3779B1ULL, 0xC12D08F273988FD5ULL }, /* XSUM_XXH64_testdata[385] */ + { 193, 0x0000000000000000ULL, 0x2CDF52488C4A2F81ULL }, /* XSUM_XXH64_testdata[386] */ + { 193, 0x000000009E3779B1ULL, 0x863D55C54A8D3ED1ULL }, /* XSUM_XXH64_testdata[387] */ + { 194, 0x0000000000000000ULL, 0x46A382CC7B5D8281ULL }, /* XSUM_XXH64_testdata[388] */ + { 194, 0x000000009E3779B1ULL, 0xFD7645CA691DFB7DULL }, /* XSUM_XXH64_testdata[389] */ + { 195, 0x0000000000000000ULL, 0x52B73ECDB3EF30E4ULL }, /* XSUM_XXH64_testdata[390] */ + { 195, 0x000000009E3779B1ULL, 0x9159A6288CD2ED9CULL }, /* XSUM_XXH64_testdata[391] */ + { 196, 0x0000000000000000ULL, 0xEB9ACBEFC9258D5CULL }, /* XSUM_XXH64_testdata[392] */ + { 196, 0x000000009E3779B1ULL, 0x935F16E68F6BD8EDULL }, /* XSUM_XXH64_testdata[393] */ + { 197, 0x0000000000000000ULL, 0x3356A9D81CFB5929ULL }, /* XSUM_XXH64_testdata[394] */ + { 197, 0x000000009E3779B1ULL, 0xDDAB613134C2333BULL }, /* XSUM_XXH64_testdata[395] */ + { 198, 0x0000000000000000ULL, 0xE781C3C6402BEA01ULL }, /* XSUM_XXH64_testdata[396] */ + { 198, 0x000000009E3779B1ULL, 0xF453BBAFAC16D837ULL }, /* XSUM_XXH64_testdata[397] */ + { 199, 0x0000000000000000ULL, 0xE37FEF4496509A87ULL }, /* XSUM_XXH64_testdata[398] */ + { 199, 0x000000009E3779B1ULL, 0xCC30E66C6A06D8F7ULL }, /* XSUM_XXH64_testdata[399] */ + { 200, 0x0000000000000000ULL, 0x4D863378A2052D65ULL }, /* XSUM_XXH64_testdata[400] */ + { 200, 0x000000009E3779B1ULL, 0x254AF7CA5C98A77EULL }, /* XSUM_XXH64_testdata[401] */ + { 201, 0x0000000000000000ULL, 0xF24E8A1EFDFF290CULL }, /* XSUM_XXH64_testdata[402] */ + { 201, 0x000000009E3779B1ULL, 0xB8D8C9E545CE2F59ULL }, /* XSUM_XXH64_testdata[403] */ + { 202, 0x0000000000000000ULL, 0x5C98EE8DFA4EFCBFULL }, /* XSUM_XXH64_testdata[404] */ + { 202, 0x000000009E3779B1ULL, 0x46517A8D9B9B7E59ULL }, /* XSUM_XXH64_testdata[405] */ + { 203, 0x0000000000000000ULL, 0x836063377C48824AULL }, /* XSUM_XXH64_testdata[406] */ + { 203, 0x000000009E3779B1ULL, 0x190AF984AAAAF457ULL }, /* XSUM_XXH64_testdata[407] */ + { 204, 0x0000000000000000ULL, 0xAAB407230B8C829CULL }, /* XSUM_XXH64_testdata[408] */ + { 204, 0x000000009E3779B1ULL, 0x8649C4337A9C12D8ULL }, /* XSUM_XXH64_testdata[409] */ + { 205, 0x0000000000000000ULL, 0xAFA6E4AA2AE03314ULL }, /* XSUM_XXH64_testdata[410] */ + { 205, 0x000000009E3779B1ULL, 0xFDB87A419B4094E3ULL }, /* XSUM_XXH64_testdata[411] */ + { 206, 0x0000000000000000ULL, 0xB258FED114D4FBE6ULL }, /* XSUM_XXH64_testdata[412] */ + { 206, 0x000000009E3779B1ULL, 0x2D3CA3EE5D2578C4ULL }, /* XSUM_XXH64_testdata[413] */ + { 207, 0x0000000000000000ULL, 0xC7054B982C73EB13ULL }, /* XSUM_XXH64_testdata[414] */ + { 207, 0x000000009E3779B1ULL, 0x4E0E7EA5A365B668ULL }, /* XSUM_XXH64_testdata[415] */ + { 208, 0x0000000000000000ULL, 0x9EB4B1067F96C311ULL }, /* XSUM_XXH64_testdata[416] */ + { 208, 0x000000009E3779B1ULL, 0x0DD3A0B6D0D0B379ULL }, /* XSUM_XXH64_testdata[417] */ + { 209, 0x0000000000000000ULL, 0x7344195C54279951ULL }, /* XSUM_XXH64_testdata[418] */ + { 209, 0x000000009E3779B1ULL, 0xFBB6E34768AF7349ULL }, /* XSUM_XXH64_testdata[419] */ + { 210, 0x0000000000000000ULL, 0x84812698B4B8BF44ULL }, /* XSUM_XXH64_testdata[420] */ + { 210, 0x000000009E3779B1ULL, 0xC18DC56C45886E5DULL }, /* XSUM_XXH64_testdata[421] */ + { 211, 0x0000000000000000ULL, 0x821B3108CD99A5A8ULL }, /* XSUM_XXH64_testdata[422] */ + { 211, 0x000000009E3779B1ULL, 0x33019E48E1DAFCCCULL }, /* XSUM_XXH64_testdata[423] */ + { 212, 0x0000000000000000ULL, 0x8E8E68151D5E419DULL }, /* XSUM_XXH64_testdata[424] */ + { 212, 0x000000009E3779B1ULL, 0x6366BDDFF5532071ULL }, /* XSUM_XXH64_testdata[425] */ + { 213, 0x0000000000000000ULL, 0xFD0B5E2A5921C14AULL }, /* XSUM_XXH64_testdata[426] */ + { 213, 0x000000009E3779B1ULL, 0xA064370AB08A06A3ULL }, /* XSUM_XXH64_testdata[427] */ + { 214, 0x0000000000000000ULL, 0x87FA20EB6126D0CCULL }, /* XSUM_XXH64_testdata[428] */ + { 214, 0x000000009E3779B1ULL, 0xC98AF5F597B2D97EULL }, /* XSUM_XXH64_testdata[429] */ + { 215, 0x0000000000000000ULL, 0xA38BDC1F221B4DDCULL }, /* XSUM_XXH64_testdata[430] */ + { 215, 0x000000009E3779B1ULL, 0x6A97D20B094B06CAULL }, /* XSUM_XXH64_testdata[431] */ + { 216, 0x0000000000000000ULL, 0xD997AAAE88AE9C5FULL }, /* XSUM_XXH64_testdata[432] */ + { 216, 0x000000009E3779B1ULL, 0xCAAB4027894BCCB2ULL }, /* XSUM_XXH64_testdata[433] */ + { 217, 0x0000000000000000ULL, 0x8E031800E9DE75D5ULL }, /* XSUM_XXH64_testdata[434] */ + { 217, 0x000000009E3779B1ULL, 0x5C20B9E6594A579EULL }, /* XSUM_XXH64_testdata[435] */ + { 218, 0x0000000000000000ULL, 0x2EE2208AE332E79DULL }, /* XSUM_XXH64_testdata[436] */ + { 218, 0x000000009E3779B1ULL, 0xAAF5F7238DDF1EE6ULL }, /* XSUM_XXH64_testdata[437] */ + { 219, 0x0000000000000000ULL, 0x21B874601A4DAC92ULL }, /* XSUM_XXH64_testdata[438] */ + { 219, 0x000000009E3779B1ULL, 0x0DD13A547AAB12B7ULL }, /* XSUM_XXH64_testdata[439] */ + { 220, 0x0000000000000000ULL, 0xB44A85B423E04207ULL }, /* XSUM_XXH64_testdata[440] */ + { 220, 0x000000009E3779B1ULL, 0x959091592F4A6B26ULL }, /* XSUM_XXH64_testdata[441] */ + { 221, 0x0000000000000000ULL, 0x7C8CB92ECFE982DCULL }, /* XSUM_XXH64_testdata[442] */ + { 221, 0x000000009E3779B1ULL, 0xBE6B813AF6B8657CULL }, /* XSUM_XXH64_testdata[443] */ + { 222, 0x0000000000000000ULL, 0xB641AE8CB691C174ULL }, /* XSUM_XXH64_testdata[444] */ + { 222, 0x000000009E3779B1ULL, 0x20CB8AB7AE10C14AULL }, /* XSUM_XXH64_testdata[445] */ + { 223, 0x0000000000000000ULL, 0x3204FA238CB7A119ULL }, /* XSUM_XXH64_testdata[446] */ + { 223, 0x000000009E3779B1ULL, 0x6976AE81215D0A31ULL }, /* XSUM_XXH64_testdata[447] */ + { 224, 0x0000000000000000ULL, 0x560A22F68D44BAA4ULL }, /* XSUM_XXH64_testdata[448] */ + { 224, 0x000000009E3779B1ULL, 0xCE6601FBB696A3CBULL }, /* XSUM_XXH64_testdata[449] */ + { 225, 0x0000000000000000ULL, 0x26034ED8D4CAE4DCULL }, /* XSUM_XXH64_testdata[450] */ + { 225, 0x000000009E3779B1ULL, 0x7721221845330B35ULL }, /* XSUM_XXH64_testdata[451] */ + { 226, 0x0000000000000000ULL, 0x6C44B98E3A56766FULL }, /* XSUM_XXH64_testdata[452] */ + { 226, 0x000000009E3779B1ULL, 0xBA55D8AAECB6D3F7ULL }, /* XSUM_XXH64_testdata[453] */ + { 227, 0x0000000000000000ULL, 0x84D9943F84B3F48CULL }, /* XSUM_XXH64_testdata[454] */ + { 227, 0x000000009E3779B1ULL, 0xA1EA6FD991AB6CAFULL }, /* XSUM_XXH64_testdata[455] */ + { 228, 0x0000000000000000ULL, 0x07FBF61C952C73A0ULL }, /* XSUM_XXH64_testdata[456] */ + { 228, 0x000000009E3779B1ULL, 0x2D1ADCE3A026DB2AULL }, /* XSUM_XXH64_testdata[457] */ + { 229, 0x0000000000000000ULL, 0x7650089C595D1589ULL }, /* XSUM_XXH64_testdata[458] */ + { 229, 0x000000009E3779B1ULL, 0x39EABB22FCAE07B7ULL }, /* XSUM_XXH64_testdata[459] */ + { 230, 0x0000000000000000ULL, 0xA6E2C789AE523788ULL }, /* XSUM_XXH64_testdata[460] */ + { 230, 0x000000009E3779B1ULL, 0x75964501197A7C29ULL }, /* XSUM_XXH64_testdata[461] */ + { 231, 0x0000000000000000ULL, 0x1678FC0F21A2D189ULL }, /* XSUM_XXH64_testdata[462] */ + { 231, 0x000000009E3779B1ULL, 0xC90DE1DD55859773ULL }, /* XSUM_XXH64_testdata[463] */ + { 232, 0x0000000000000000ULL, 0x08837FC18CF9DC21ULL }, /* XSUM_XXH64_testdata[464] */ + { 232, 0x000000009E3779B1ULL, 0x7ED72B5DAD65C52FULL }, /* XSUM_XXH64_testdata[465] */ + { 233, 0x0000000000000000ULL, 0x2B8CBB3C1BE4B134ULL }, /* XSUM_XXH64_testdata[466] */ + { 233, 0x000000009E3779B1ULL, 0x52A41D95CE99F400ULL }, /* XSUM_XXH64_testdata[467] */ + { 234, 0x0000000000000000ULL, 0x48502CC375AEDE41ULL }, /* XSUM_XXH64_testdata[468] */ + { 234, 0x000000009E3779B1ULL, 0x2D3525D1960F2D21ULL }, /* XSUM_XXH64_testdata[469] */ + { 235, 0x0000000000000000ULL, 0xC9136721158E47F6ULL }, /* XSUM_XXH64_testdata[470] */ + { 235, 0x000000009E3779B1ULL, 0x777C310AFC011284ULL }, /* XSUM_XXH64_testdata[471] */ + { 236, 0x0000000000000000ULL, 0x6252A7317AF95FD4ULL }, /* XSUM_XXH64_testdata[472] */ + { 236, 0x000000009E3779B1ULL, 0xD4B0539A256E0DB4ULL }, /* XSUM_XXH64_testdata[473] */ + { 237, 0x0000000000000000ULL, 0x6FD0AAE0666C5A27ULL }, /* XSUM_XXH64_testdata[474] */ + { 237, 0x000000009E3779B1ULL, 0x23E7D04D7E99A2B7ULL }, /* XSUM_XXH64_testdata[475] */ + { 238, 0x0000000000000000ULL, 0x0C2CE719985CD28CULL }, /* XSUM_XXH64_testdata[476] */ + { 238, 0x000000009E3779B1ULL, 0xCD34C05EA95F2F61ULL }, /* XSUM_XXH64_testdata[477] */ + { 239, 0x0000000000000000ULL, 0xB93713464372DA03ULL }, /* XSUM_XXH64_testdata[478] */ + { 239, 0x000000009E3779B1ULL, 0x4BFC609CBFAEED9BULL }, /* XSUM_XXH64_testdata[479] */ + { 240, 0x0000000000000000ULL, 0xB81838D483BAEE53ULL }, /* XSUM_XXH64_testdata[480] */ + { 240, 0x000000009E3779B1ULL, 0xA4B3F965B6FE67F8ULL }, /* XSUM_XXH64_testdata[481] */ + { 241, 0x0000000000000000ULL, 0x95D76C8B4D8FC4D6ULL }, /* XSUM_XXH64_testdata[482] */ + { 241, 0x000000009E3779B1ULL, 0x19D5AD5F4BD6CB9FULL }, /* XSUM_XXH64_testdata[483] */ + { 242, 0x0000000000000000ULL, 0xF90D9317A58AACCAULL }, /* XSUM_XXH64_testdata[484] */ + { 242, 0x000000009E3779B1ULL, 0x2B3D64CA68F954F6ULL }, /* XSUM_XXH64_testdata[485] */ + { 243, 0x0000000000000000ULL, 0xDA027E06C3DAAC3FULL }, /* XSUM_XXH64_testdata[486] */ + { 243, 0x000000009E3779B1ULL, 0xD36ED0285CC2C704ULL }, /* XSUM_XXH64_testdata[487] */ + { 244, 0x0000000000000000ULL, 0x3DA619F5D6E8F158ULL }, /* XSUM_XXH64_testdata[488] */ + { 244, 0x000000009E3779B1ULL, 0x10CD0F2DB5B8EDFFULL }, /* XSUM_XXH64_testdata[489] */ + { 245, 0x0000000000000000ULL, 0x711082146B76E24FULL }, /* XSUM_XXH64_testdata[490] */ + { 245, 0x000000009E3779B1ULL, 0xD24594468B28F2D1ULL }, /* XSUM_XXH64_testdata[491] */ + { 246, 0x0000000000000000ULL, 0x598FBCF46F00187FULL }, /* XSUM_XXH64_testdata[492] */ + { 246, 0x000000009E3779B1ULL, 0xBE543D6D5301F479ULL }, /* XSUM_XXH64_testdata[493] */ + { 247, 0x0000000000000000ULL, 0x9E1B0082378B40CDULL }, /* XSUM_XXH64_testdata[494] */ + { 247, 0x000000009E3779B1ULL, 0x1CC20CEC10C69CE0ULL }, /* XSUM_XXH64_testdata[495] */ + { 248, 0x0000000000000000ULL, 0x6C8D0BD0802CEE09ULL }, /* XSUM_XXH64_testdata[496] */ + { 248, 0x000000009E3779B1ULL, 0xE4E00E9C08E9D9BEULL }, /* XSUM_XXH64_testdata[497] */ + { 249, 0x0000000000000000ULL, 0x902EECCB98DB38D7ULL }, /* XSUM_XXH64_testdata[498] */ + { 249, 0x000000009E3779B1ULL, 0x826F17162AAE3546ULL }, /* XSUM_XXH64_testdata[499] */ + { 250, 0x0000000000000000ULL, 0x98733C2D429FF9EEULL }, /* XSUM_XXH64_testdata[500] */ + { 250, 0x000000009E3779B1ULL, 0xC00A5A94ADD5C591ULL }, /* XSUM_XXH64_testdata[501] */ + { 251, 0x0000000000000000ULL, 0xD278B54D9FEC3B13ULL }, /* XSUM_XXH64_testdata[502] */ + { 251, 0x000000009E3779B1ULL, 0x22E6DA603138549CULL }, /* XSUM_XXH64_testdata[503] */ + { 252, 0x0000000000000000ULL, 0x502316D885591F05ULL }, /* XSUM_XXH64_testdata[504] */ + { 252, 0x000000009E3779B1ULL, 0x365C19466B1CE6F6ULL }, /* XSUM_XXH64_testdata[505] */ + { 253, 0x0000000000000000ULL, 0x4F27F34D5F7363B4ULL }, /* XSUM_XXH64_testdata[506] */ + { 253, 0x000000009E3779B1ULL, 0x6598472FCB3C9FDDULL }, /* XSUM_XXH64_testdata[507] */ + { 254, 0x0000000000000000ULL, 0xA8FA70BEAF15A0D5ULL }, /* XSUM_XXH64_testdata[508] */ + { 254, 0x000000009E3779B1ULL, 0xA3D08118E33A36FBULL }, /* XSUM_XXH64_testdata[509] */ + { 255, 0x0000000000000000ULL, 0xA80F35BB0DC8E3A7ULL }, /* XSUM_XXH64_testdata[510] */ + { 255, 0x000000009E3779B1ULL, 0x8E7A59762640754FULL }, /* XSUM_XXH64_testdata[511] */ + { 256, 0x0000000000000000ULL, 0x5E3F5BF94D574981ULL }, /* XSUM_XXH64_testdata[512] */ + { 256, 0x000000009E3779B1ULL, 0x34733CBD9CC1B0D5ULL }, /* XSUM_XXH64_testdata[513] */ + { 257, 0x0000000000000000ULL, 0xD36CF327DCF12221ULL }, /* XSUM_XXH64_testdata[514] */ + { 257, 0x000000009E3779B1ULL, 0x0E59955420F8807BULL }, /* XSUM_XXH64_testdata[515] */ + { 258, 0x0000000000000000ULL, 0x800D25DAF5B3E79DULL }, /* XSUM_XXH64_testdata[516] */ + { 258, 0x000000009E3779B1ULL, 0xE72AEBE1FEAA93EEULL }, /* XSUM_XXH64_testdata[517] */ + { 259, 0x0000000000000000ULL, 0x2099FA654952427CULL }, /* XSUM_XXH64_testdata[518] */ + { 259, 0x000000009E3779B1ULL, 0xBB868FAB515A5C72ULL }, /* XSUM_XXH64_testdata[519] */ + { 260, 0x0000000000000000ULL, 0xCF364A2C3982921FULL }, /* XSUM_XXH64_testdata[520] */ + { 260, 0x000000009E3779B1ULL, 0x1731084B861DFD5DULL }, /* XSUM_XXH64_testdata[521] */ + { 261, 0x0000000000000000ULL, 0x97105F1DC4406772ULL }, /* XSUM_XXH64_testdata[522] */ + { 261, 0x000000009E3779B1ULL, 0xC8574A38FBEA058EULL }, /* XSUM_XXH64_testdata[523] */ + { 262, 0x0000000000000000ULL, 0xE71A640DCC730EC5ULL }, /* XSUM_XXH64_testdata[524] */ + { 262, 0x000000009E3779B1ULL, 0x7F76151B92A28B07ULL }, /* XSUM_XXH64_testdata[525] */ + { 263, 0x0000000000000000ULL, 0xB872B62D16AE5FEEULL }, /* XSUM_XXH64_testdata[526] */ + { 263, 0x000000009E3779B1ULL, 0x9E8A8BAC522A967AULL }, /* XSUM_XXH64_testdata[527] */ + { 264, 0x0000000000000000ULL, 0xC6937E5613AACCFEULL }, /* XSUM_XXH64_testdata[528] */ + { 264, 0x000000009E3779B1ULL, 0x7FE5F28BAC9B0E91ULL }, /* XSUM_XXH64_testdata[529] */ + { 265, 0x0000000000000000ULL, 0x12471155ADA2E18EULL }, /* XSUM_XXH64_testdata[530] */ + { 265, 0x000000009E3779B1ULL, 0xBE1A23BB9138EE34ULL }, /* XSUM_XXH64_testdata[531] */ + { 266, 0x0000000000000000ULL, 0x601C8089C5387DCEULL }, /* XSUM_XXH64_testdata[532] */ + { 266, 0x000000009E3779B1ULL, 0xC462F2DD5F793449ULL }, /* XSUM_XXH64_testdata[533] */ + { 267, 0x0000000000000000ULL, 0x1352BBD50D07866DULL }, /* XSUM_XXH64_testdata[534] */ + { 267, 0x000000009E3779B1ULL, 0x234608404DFCB571ULL }, /* XSUM_XXH64_testdata[535] */ + { 268, 0x0000000000000000ULL, 0x04882F6EC3504AEEULL }, /* XSUM_XXH64_testdata[536] */ + { 268, 0x000000009E3779B1ULL, 0xC746A0D7B2CAFC8DULL }, /* XSUM_XXH64_testdata[537] */ + { 269, 0x0000000000000000ULL, 0x663D2CCDC3DB5BC9ULL }, /* XSUM_XXH64_testdata[538] */ + { 269, 0x000000009E3779B1ULL, 0x1939299519486F59ULL }, /* XSUM_XXH64_testdata[539] */ + { 270, 0x0000000000000000ULL, 0x340E8B9B5C26CA95ULL }, /* XSUM_XXH64_testdata[540] */ + { 270, 0x000000009E3779B1ULL, 0x877F54E49EC58468ULL }, /* XSUM_XXH64_testdata[541] */ + { 271, 0x0000000000000000ULL, 0xB7BD56BC66F72DA9ULL }, /* XSUM_XXH64_testdata[542] */ + { 271, 0x000000009E3779B1ULL, 0x54D0A98978531FFBULL }, /* XSUM_XXH64_testdata[543] */ + { 272, 0x0000000000000000ULL, 0xF3977B31ADA68DD8ULL }, /* XSUM_XXH64_testdata[544] */ + { 272, 0x000000009E3779B1ULL, 0x887F590222AD2734ULL }, /* XSUM_XXH64_testdata[545] */ + { 273, 0x0000000000000000ULL, 0x2C18D3B96A486E0CULL }, /* XSUM_XXH64_testdata[546] */ + { 273, 0x000000009E3779B1ULL, 0x8258EA6B5E58AB4BULL }, /* XSUM_XXH64_testdata[547] */ + { 274, 0x0000000000000000ULL, 0x969C6033EE1AF2D4ULL }, /* XSUM_XXH64_testdata[548] */ + { 274, 0x000000009E3779B1ULL, 0x9490360BADD540EEULL }, /* XSUM_XXH64_testdata[549] */ + { 275, 0x0000000000000000ULL, 0x530A8F55ED7C10B3ULL }, /* XSUM_XXH64_testdata[550] */ + { 275, 0x000000009E3779B1ULL, 0x73D1E106641AA053ULL }, /* XSUM_XXH64_testdata[551] */ + { 276, 0x0000000000000000ULL, 0x5A25F6FF03024991ULL }, /* XSUM_XXH64_testdata[552] */ + { 276, 0x000000009E3779B1ULL, 0x8AB6A691AE70F34DULL }, /* XSUM_XXH64_testdata[553] */ + { 277, 0x0000000000000000ULL, 0xF3CA1E4C597206CCULL }, /* XSUM_XXH64_testdata[554] */ + { 277, 0x000000009E3779B1ULL, 0x0798F4E8A10FCE28ULL }, /* XSUM_XXH64_testdata[555] */ + { 278, 0x0000000000000000ULL, 0xCAAC375345392108ULL }, /* XSUM_XXH64_testdata[556] */ + { 278, 0x000000009E3779B1ULL, 0x5DFF0C04C19ADF91ULL }, /* XSUM_XXH64_testdata[557] */ + { 279, 0x0000000000000000ULL, 0xCF3E45285F4C5CA9ULL }, /* XSUM_XXH64_testdata[558] */ + { 279, 0x000000009E3779B1ULL, 0xDFD2B2FF6DD9FB76ULL }, /* XSUM_XXH64_testdata[559] */ + { 280, 0x0000000000000000ULL, 0xA41A5712EB1CC987ULL }, /* XSUM_XXH64_testdata[560] */ + { 280, 0x000000009E3779B1ULL, 0xF2486AE97DF0E3CEULL }, /* XSUM_XXH64_testdata[561] */ + { 281, 0x0000000000000000ULL, 0xED5A862D4541F940ULL }, /* XSUM_XXH64_testdata[562] */ + { 281, 0x000000009E3779B1ULL, 0xABE603FE4B35C536ULL }, /* XSUM_XXH64_testdata[563] */ + { 282, 0x0000000000000000ULL, 0xA867E8D706EBA08BULL }, /* XSUM_XXH64_testdata[564] */ + { 282, 0x000000009E3779B1ULL, 0x33CA320204412931ULL }, /* XSUM_XXH64_testdata[565] */ + { 283, 0x0000000000000000ULL, 0x10B0AA9588751826ULL }, /* XSUM_XXH64_testdata[566] */ + { 283, 0x000000009E3779B1ULL, 0x6EB2D706DA6DFEECULL }, /* XSUM_XXH64_testdata[567] */ + { 284, 0x0000000000000000ULL, 0x93AD619F2B351D3FULL }, /* XSUM_XXH64_testdata[568] */ + { 284, 0x000000009E3779B1ULL, 0x9A2AFEB1654E116BULL }, /* XSUM_XXH64_testdata[569] */ + { 285, 0x0000000000000000ULL, 0x7CD2577EA97A138AULL }, /* XSUM_XXH64_testdata[570] */ + { 285, 0x000000009E3779B1ULL, 0xEC346D3CD94C94EFULL }, /* XSUM_XXH64_testdata[571] */ + { 286, 0x0000000000000000ULL, 0x345637D13E12AE04ULL }, /* XSUM_XXH64_testdata[572] */ + { 286, 0x000000009E3779B1ULL, 0x15CE12FB9BBEBCC3ULL }, /* XSUM_XXH64_testdata[573] */ + { 287, 0x0000000000000000ULL, 0x92EFB98F22F668D0ULL }, /* XSUM_XXH64_testdata[574] */ + { 287, 0x000000009E3779B1ULL, 0x0FB316B3FA8B793AULL }, /* XSUM_XXH64_testdata[575] */ + { 288, 0x0000000000000000ULL, 0x319C1E822541C647ULL }, /* XSUM_XXH64_testdata[576] */ + { 288, 0x000000009E3779B1ULL, 0x9787CAEFEC335434ULL }, /* XSUM_XXH64_testdata[577] */ + { 289, 0x0000000000000000ULL, 0xF7E6D446C8EF7C47ULL }, /* XSUM_XXH64_testdata[578] */ + { 289, 0x000000009E3779B1ULL, 0x4A0A6E963C092DA4ULL }, /* XSUM_XXH64_testdata[579] */ + { 290, 0x0000000000000000ULL, 0x585D390D6FDEF06AULL }, /* XSUM_XXH64_testdata[580] */ + { 290, 0x000000009E3779B1ULL, 0xC6B32828386DA2E9ULL }, /* XSUM_XXH64_testdata[581] */ + { 291, 0x0000000000000000ULL, 0x21F05A66A9EB9A58ULL }, /* XSUM_XXH64_testdata[582] */ + { 291, 0x000000009E3779B1ULL, 0xD00817CB66D5CB2DULL }, /* XSUM_XXH64_testdata[583] */ + { 292, 0x0000000000000000ULL, 0xBC9224537B00F4B6ULL }, /* XSUM_XXH64_testdata[584] */ + { 292, 0x000000009E3779B1ULL, 0xF733A843A9ACA128ULL }, /* XSUM_XXH64_testdata[585] */ + { 293, 0x0000000000000000ULL, 0x5979A617929E48D0ULL }, /* XSUM_XXH64_testdata[586] */ + { 293, 0x000000009E3779B1ULL, 0x7C1017B8E9589375ULL }, /* XSUM_XXH64_testdata[587] */ + { 294, 0x0000000000000000ULL, 0x4946824DD663797AULL }, /* XSUM_XXH64_testdata[588] */ + { 294, 0x000000009E3779B1ULL, 0x0488AC62F9398C6FULL }, /* XSUM_XXH64_testdata[589] */ + { 295, 0x0000000000000000ULL, 0xD9AA3E6E5ED4D24DULL }, /* XSUM_XXH64_testdata[590] */ + { 295, 0x000000009E3779B1ULL, 0x159CEEF3E08C94F6ULL }, /* XSUM_XXH64_testdata[591] */ + { 296, 0x0000000000000000ULL, 0xCC06B4824EB0D11CULL }, /* XSUM_XXH64_testdata[592] */ + { 296, 0x000000009E3779B1ULL, 0xDD5CE847198C7FE1ULL }, /* XSUM_XXH64_testdata[593] */ + { 297, 0x0000000000000000ULL, 0x4DB8E56BE4E55AC4ULL }, /* XSUM_XXH64_testdata[594] */ + { 297, 0x000000009E3779B1ULL, 0x5C053B0CD2FA23A8ULL }, /* XSUM_XXH64_testdata[595] */ + { 298, 0x0000000000000000ULL, 0x694A1B6625D43319ULL }, /* XSUM_XXH64_testdata[596] */ + { 298, 0x000000009E3779B1ULL, 0x9048FE0F555AC1A7ULL }, /* XSUM_XXH64_testdata[597] */ + { 299, 0x0000000000000000ULL, 0xD2EB28971B0A6A92ULL }, /* XSUM_XXH64_testdata[598] */ + { 299, 0x000000009E3779B1ULL, 0x46FB015EDC4F13CEULL }, /* XSUM_XXH64_testdata[599] */ + { 300, 0x0000000000000000ULL, 0x27D0E073EC12824FULL }, /* XSUM_XXH64_testdata[600] */ + { 300, 0x000000009E3779B1ULL, 0x36CB189D9F3B6AD6ULL }, /* XSUM_XXH64_testdata[601] */ + { 301, 0x0000000000000000ULL, 0xC30B134412F5070FULL }, /* XSUM_XXH64_testdata[602] */ + { 301, 0x000000009E3779B1ULL, 0x779864C9F8A50F68ULL }, /* XSUM_XXH64_testdata[603] */ + { 302, 0x0000000000000000ULL, 0x806071550D0D3FD1ULL }, /* XSUM_XXH64_testdata[604] */ + { 302, 0x000000009E3779B1ULL, 0x56848E98C174FD5EULL }, /* XSUM_XXH64_testdata[605] */ + { 303, 0x0000000000000000ULL, 0xAE4B7555B7E934ABULL }, /* XSUM_XXH64_testdata[606] */ + { 303, 0x000000009E3779B1ULL, 0x8BE172D74D5D222EULL }, /* XSUM_XXH64_testdata[607] */ + { 304, 0x0000000000000000ULL, 0xCD9F47E076057508ULL }, /* XSUM_XXH64_testdata[608] */ + { 304, 0x000000009E3779B1ULL, 0x4CCFF45F9DEE4002ULL }, /* XSUM_XXH64_testdata[609] */ + { 305, 0x0000000000000000ULL, 0xC254B8F12F935411ULL }, /* XSUM_XXH64_testdata[610] */ + { 305, 0x000000009E3779B1ULL, 0x4D3FB6613D00FE12ULL }, /* XSUM_XXH64_testdata[611] */ + { 306, 0x0000000000000000ULL, 0x8025085C29EA30FCULL }, /* XSUM_XXH64_testdata[612] */ + { 306, 0x000000009E3779B1ULL, 0x75B4382E5391B03FULL }, /* XSUM_XXH64_testdata[613] */ + { 307, 0x0000000000000000ULL, 0xD8F8D06F0951E5BEULL }, /* XSUM_XXH64_testdata[614] */ + { 307, 0x000000009E3779B1ULL, 0xE6F3F862E8BBDA07ULL }, /* XSUM_XXH64_testdata[615] */ + { 308, 0x0000000000000000ULL, 0xD77A53671A5277DDULL }, /* XSUM_XXH64_testdata[616] */ + { 308, 0x000000009E3779B1ULL, 0xEFF507C34BD9988BULL }, /* XSUM_XXH64_testdata[617] */ + { 309, 0x0000000000000000ULL, 0x165D2435E023D1C2ULL }, /* XSUM_XXH64_testdata[618] */ + { 309, 0x000000009E3779B1ULL, 0x026DB09252D02941ULL }, /* XSUM_XXH64_testdata[619] */ + { 310, 0x0000000000000000ULL, 0x58942C7734E43C86ULL }, /* XSUM_XXH64_testdata[620] */ + { 310, 0x000000009E3779B1ULL, 0xEA5278E0A3CF506FULL }, /* XSUM_XXH64_testdata[621] */ + { 311, 0x0000000000000000ULL, 0xF09F13BD4FB740EBULL }, /* XSUM_XXH64_testdata[622] */ + { 311, 0x000000009E3779B1ULL, 0x9D3738BA96BB04F3ULL }, /* XSUM_XXH64_testdata[623] */ + { 312, 0x0000000000000000ULL, 0xE183DB6F48250246ULL }, /* XSUM_XXH64_testdata[624] */ + { 312, 0x000000009E3779B1ULL, 0x28FE2DF7C30D67C9ULL }, /* XSUM_XXH64_testdata[625] */ + { 313, 0x0000000000000000ULL, 0x68A5156112811C33ULL }, /* XSUM_XXH64_testdata[626] */ + { 313, 0x000000009E3779B1ULL, 0xDDC06A1B585C4789ULL }, /* XSUM_XXH64_testdata[627] */ + { 314, 0x0000000000000000ULL, 0xA13A1BEC2CD910E4ULL }, /* XSUM_XXH64_testdata[628] */ + { 314, 0x000000009E3779B1ULL, 0xBD6698A5440ABE1AULL }, /* XSUM_XXH64_testdata[629] */ + { 315, 0x0000000000000000ULL, 0xCC2808E72EAC151BULL }, /* XSUM_XXH64_testdata[630] */ + { 315, 0x000000009E3779B1ULL, 0x2746FA4F2A0F9416ULL }, /* XSUM_XXH64_testdata[631] */ + { 316, 0x0000000000000000ULL, 0xAFBC014DCE3257E2ULL }, /* XSUM_XXH64_testdata[632] */ + { 316, 0x000000009E3779B1ULL, 0x9BBD080ACAE33B5CULL }, /* XSUM_XXH64_testdata[633] */ + { 317, 0x0000000000000000ULL, 0x4324504321847E60ULL }, /* XSUM_XXH64_testdata[634] */ + { 317, 0x000000009E3779B1ULL, 0xEE59F87AF88DFE30ULL }, /* XSUM_XXH64_testdata[635] */ + { 318, 0x0000000000000000ULL, 0x4CBA36B197D9BC3FULL }, /* XSUM_XXH64_testdata[636] */ + { 318, 0x000000009E3779B1ULL, 0x1C789101AF5830C5ULL }, /* XSUM_XXH64_testdata[637] */ + { 319, 0x0000000000000000ULL, 0x2AE10520FA6DE2E4ULL }, /* XSUM_XXH64_testdata[638] */ + { 319, 0x000000009E3779B1ULL, 0x8410CB2FBE004576ULL }, /* XSUM_XXH64_testdata[639] */ + { 320, 0x0000000000000000ULL, 0xE770CC78CD4C49D4ULL }, /* XSUM_XXH64_testdata[640] */ + { 320, 0x000000009E3779B1ULL, 0x4652D88D496EE7ADULL }, /* XSUM_XXH64_testdata[641] */ + { 321, 0x0000000000000000ULL, 0x191E5FAA4E98D58CULL }, /* XSUM_XXH64_testdata[642] */ + { 321, 0x000000009E3779B1ULL, 0x3C28DB4679112EE5ULL }, /* XSUM_XXH64_testdata[643] */ + { 322, 0x0000000000000000ULL, 0xA10BF168FB663D3EULL }, /* XSUM_XXH64_testdata[644] */ + { 322, 0x000000009E3779B1ULL, 0x7606D121C819C6B6ULL }, /* XSUM_XXH64_testdata[645] */ + { 323, 0x0000000000000000ULL, 0xD397D1291236CF7FULL }, /* XSUM_XXH64_testdata[646] */ + { 323, 0x000000009E3779B1ULL, 0x1378631DC20BFF42ULL }, /* XSUM_XXH64_testdata[647] */ + { 324, 0x0000000000000000ULL, 0x6E1A465CA0B8D8BEULL }, /* XSUM_XXH64_testdata[648] */ + { 324, 0x000000009E3779B1ULL, 0xAFEF3035641946F9ULL }, /* XSUM_XXH64_testdata[649] */ + { 325, 0x0000000000000000ULL, 0x966AC1912DA3CD24ULL }, /* XSUM_XXH64_testdata[650] */ + { 325, 0x000000009E3779B1ULL, 0xD8AF365A4401EA55ULL }, /* XSUM_XXH64_testdata[651] */ + { 326, 0x0000000000000000ULL, 0x3DE3C5C8F6E0A0A1ULL }, /* XSUM_XXH64_testdata[652] */ + { 326, 0x000000009E3779B1ULL, 0x335FDF7E051D4A87ULL }, /* XSUM_XXH64_testdata[653] */ + { 327, 0x0000000000000000ULL, 0xE8AE29289DA7F119ULL }, /* XSUM_XXH64_testdata[654] */ + { 327, 0x000000009E3779B1ULL, 0x0F26E6096850CD15ULL }, /* XSUM_XXH64_testdata[655] */ + { 328, 0x0000000000000000ULL, 0x4C35F169173D834CULL }, /* XSUM_XXH64_testdata[656] */ + { 328, 0x000000009E3779B1ULL, 0x22762DF3D9B9DF31ULL }, /* XSUM_XXH64_testdata[657] */ + { 329, 0x0000000000000000ULL, 0x5D481C44947F7A73ULL }, /* XSUM_XXH64_testdata[658] */ + { 329, 0x000000009E3779B1ULL, 0x73E1E3B8E9F181BBULL }, /* XSUM_XXH64_testdata[659] */ + { 330, 0x0000000000000000ULL, 0xC0A08CEF0DD56B16ULL }, /* XSUM_XXH64_testdata[660] */ + { 330, 0x000000009E3779B1ULL, 0x6AA1FE1042A0F6A5ULL }, /* XSUM_XXH64_testdata[661] */ + { 331, 0x0000000000000000ULL, 0x0D4449FCD664BB45ULL }, /* XSUM_XXH64_testdata[662] */ + { 331, 0x000000009E3779B1ULL, 0x4296B5AEE7D960D4ULL }, /* XSUM_XXH64_testdata[663] */ + { 332, 0x0000000000000000ULL, 0x7529CB2646E8601CULL }, /* XSUM_XXH64_testdata[664] */ + { 332, 0x000000009E3779B1ULL, 0x70CDF1FAE1A878AFULL }, /* XSUM_XXH64_testdata[665] */ + { 333, 0x0000000000000000ULL, 0x8CFBC1AF9BD2A321ULL }, /* XSUM_XXH64_testdata[666] */ + { 333, 0x000000009E3779B1ULL, 0xF642F676F8CFF339ULL }, /* XSUM_XXH64_testdata[667] */ + { 334, 0x0000000000000000ULL, 0x616AC7C331B6A379ULL }, /* XSUM_XXH64_testdata[668] */ + { 334, 0x000000009E3779B1ULL, 0x8C29C7765F64AC97ULL }, /* XSUM_XXH64_testdata[669] */ + { 335, 0x0000000000000000ULL, 0x5C3A4577DF83FB01ULL }, /* XSUM_XXH64_testdata[670] */ + { 335, 0x000000009E3779B1ULL, 0x3CAD8492DFE500A4ULL }, /* XSUM_XXH64_testdata[671] */ + { 336, 0x0000000000000000ULL, 0x0D0983F796109E3DULL }, /* XSUM_XXH64_testdata[672] */ + { 336, 0x000000009E3779B1ULL, 0x06A6E12B6D47E200ULL }, /* XSUM_XXH64_testdata[673] */ + { 337, 0x0000000000000000ULL, 0x375888A1F50EDEE0ULL }, /* XSUM_XXH64_testdata[674] */ + { 337, 0x000000009E3779B1ULL, 0xBFF6310116784CE9ULL }, /* XSUM_XXH64_testdata[675] */ + { 338, 0x0000000000000000ULL, 0xA9B57EAD56662EECULL }, /* XSUM_XXH64_testdata[676] */ + { 338, 0x000000009E3779B1ULL, 0xEDFAA3154B5EE34BULL }, /* XSUM_XXH64_testdata[677] */ + { 339, 0x0000000000000000ULL, 0x818B61D1D857C97DULL }, /* XSUM_XXH64_testdata[678] */ + { 339, 0x000000009E3779B1ULL, 0x7B41B412D222608FULL }, /* XSUM_XXH64_testdata[679] */ + { 340, 0x0000000000000000ULL, 0x2F55039F446BA2DFULL }, /* XSUM_XXH64_testdata[680] */ + { 340, 0x000000009E3779B1ULL, 0x5EBDD5B7B6C5917BULL }, /* XSUM_XXH64_testdata[681] */ + { 341, 0x0000000000000000ULL, 0x836263DF89FE557DULL }, /* XSUM_XXH64_testdata[682] */ + { 341, 0x000000009E3779B1ULL, 0x12695533AB8FE708ULL }, /* XSUM_XXH64_testdata[683] */ + { 342, 0x0000000000000000ULL, 0x4A9263DB83996FA5ULL }, /* XSUM_XXH64_testdata[684] */ + { 342, 0x000000009E3779B1ULL, 0x0A34062AD2C76F1BULL }, /* XSUM_XXH64_testdata[685] */ + { 343, 0x0000000000000000ULL, 0xE40DE98BA957A505ULL }, /* XSUM_XXH64_testdata[686] */ + { 343, 0x000000009E3779B1ULL, 0x70506F583223C18CULL }, /* XSUM_XXH64_testdata[687] */ + { 344, 0x0000000000000000ULL, 0x08DEF25D96644105ULL }, /* XSUM_XXH64_testdata[688] */ + { 344, 0x000000009E3779B1ULL, 0x4D182E0D30243BFDULL }, /* XSUM_XXH64_testdata[689] */ + { 345, 0x0000000000000000ULL, 0x430A1250DDCFD26AULL }, /* XSUM_XXH64_testdata[690] */ + { 345, 0x000000009E3779B1ULL, 0x767C2332AE03BF1BULL }, /* XSUM_XXH64_testdata[691] */ + { 346, 0x0000000000000000ULL, 0x6DE8E7F8FC988E06ULL }, /* XSUM_XXH64_testdata[692] */ + { 346, 0x000000009E3779B1ULL, 0x6F0B8A6C503A5982ULL }, /* XSUM_XXH64_testdata[693] */ + { 347, 0x0000000000000000ULL, 0x6EBE56879F51960FULL }, /* XSUM_XXH64_testdata[694] */ + { 347, 0x000000009E3779B1ULL, 0x05F00C77B7FBCBCEULL }, /* XSUM_XXH64_testdata[695] */ + { 348, 0x0000000000000000ULL, 0xBCC17D27EF9C445AULL }, /* XSUM_XXH64_testdata[696] */ + { 348, 0x000000009E3779B1ULL, 0xAE5F3DEE5E85E080ULL }, /* XSUM_XXH64_testdata[697] */ + { 349, 0x0000000000000000ULL, 0x3B2F742FD0129AAEULL }, /* XSUM_XXH64_testdata[698] */ + { 349, 0x000000009E3779B1ULL, 0xEF74A89286BBE7F9ULL }, /* XSUM_XXH64_testdata[699] */ + { 350, 0x0000000000000000ULL, 0xCBF689D13535396EULL }, /* XSUM_XXH64_testdata[700] */ + { 350, 0x000000009E3779B1ULL, 0x06E946C3CFEE32A7ULL }, /* XSUM_XXH64_testdata[701] */ + { 351, 0x0000000000000000ULL, 0x5A8B9393DD9C54ECULL }, /* XSUM_XXH64_testdata[702] */ + { 351, 0x000000009E3779B1ULL, 0x6A1E24082412D6A4ULL }, /* XSUM_XXH64_testdata[703] */ + { 352, 0x0000000000000000ULL, 0x2C7A4C67DCF81AF3ULL }, /* XSUM_XXH64_testdata[704] */ + { 352, 0x000000009E3779B1ULL, 0x2C5D8C15D3D96C34ULL }, /* XSUM_XXH64_testdata[705] */ + { 353, 0x0000000000000000ULL, 0xDC132C498167B6C6ULL }, /* XSUM_XXH64_testdata[706] */ + { 353, 0x000000009E3779B1ULL, 0x0DBF72487E53B8B6ULL }, /* XSUM_XXH64_testdata[707] */ + { 354, 0x0000000000000000ULL, 0xA73CE21C9CC96F7DULL }, /* XSUM_XXH64_testdata[708] */ + { 354, 0x000000009E3779B1ULL, 0x1904A79793369265ULL }, /* XSUM_XXH64_testdata[709] */ + { 355, 0x0000000000000000ULL, 0xA7BCA484D8B42B9DULL }, /* XSUM_XXH64_testdata[710] */ + { 355, 0x000000009E3779B1ULL, 0x96FBEA063C7BA4F2ULL }, /* XSUM_XXH64_testdata[711] */ + { 356, 0x0000000000000000ULL, 0x361759F3E6F9EC99ULL }, /* XSUM_XXH64_testdata[712] */ + { 356, 0x000000009E3779B1ULL, 0x64D86C055445C97AULL }, /* XSUM_XXH64_testdata[713] */ + { 357, 0x0000000000000000ULL, 0x9BF1088365B88CA3ULL }, /* XSUM_XXH64_testdata[714] */ + { 357, 0x000000009E3779B1ULL, 0xA2B5B2F58A05693FULL }, /* XSUM_XXH64_testdata[715] */ + { 358, 0x0000000000000000ULL, 0x44AC7D4F4A0C26C8ULL }, /* XSUM_XXH64_testdata[716] */ + { 358, 0x000000009E3779B1ULL, 0x3F397BE0323EA4E0ULL }, /* XSUM_XXH64_testdata[717] */ + { 359, 0x0000000000000000ULL, 0x51C7C0F6CC75485FULL }, /* XSUM_XXH64_testdata[718] */ + { 359, 0x000000009E3779B1ULL, 0x04B53C70E8DBCC8BULL }, /* XSUM_XXH64_testdata[719] */ + { 360, 0x0000000000000000ULL, 0x312CECE43F5ACA33ULL }, /* XSUM_XXH64_testdata[720] */ + { 360, 0x000000009E3779B1ULL, 0x9AA901719AEEE25EULL }, /* XSUM_XXH64_testdata[721] */ + { 361, 0x0000000000000000ULL, 0xA2B589598EFBBD69ULL }, /* XSUM_XXH64_testdata[722] */ + { 361, 0x000000009E3779B1ULL, 0xC2CD9A769996D0E0ULL }, /* XSUM_XXH64_testdata[723] */ + { 362, 0x0000000000000000ULL, 0x04E4833AF8933BDAULL }, /* XSUM_XXH64_testdata[724] */ + { 362, 0x000000009E3779B1ULL, 0xE6B3E1DCCA12DF05ULL }, /* XSUM_XXH64_testdata[725] */ + { 363, 0x0000000000000000ULL, 0xC84FCB24B5A21862ULL }, /* XSUM_XXH64_testdata[726] */ + { 363, 0x000000009E3779B1ULL, 0x4B89934B473558EBULL }, /* XSUM_XXH64_testdata[727] */ + { 364, 0x0000000000000000ULL, 0xF7471F5A29253EF2ULL }, /* XSUM_XXH64_testdata[728] */ + { 364, 0x000000009E3779B1ULL, 0x6CEBAFE4C3BDCD21ULL }, /* XSUM_XXH64_testdata[729] */ + { 365, 0x0000000000000000ULL, 0xC97282DCCFD2AC9EULL }, /* XSUM_XXH64_testdata[730] */ + { 365, 0x000000009E3779B1ULL, 0xFFA92422FC37582DULL }, /* XSUM_XXH64_testdata[731] */ + { 366, 0x0000000000000000ULL, 0x34ADF90A87D9BB7DULL }, /* XSUM_XXH64_testdata[732] */ + { 366, 0x000000009E3779B1ULL, 0xAE168FF3C354DA52ULL }, /* XSUM_XXH64_testdata[733] */ + { 367, 0x0000000000000000ULL, 0x3865884F1F2DBBB2ULL }, /* XSUM_XXH64_testdata[734] */ + { 367, 0x000000009E3779B1ULL, 0x32B6B3F002D03F45ULL }, /* XSUM_XXH64_testdata[735] */ + { 368, 0x0000000000000000ULL, 0xCEBBEF4F781C4FAEULL }, /* XSUM_XXH64_testdata[736] */ + { 368, 0x000000009E3779B1ULL, 0x48BB98F0956C5C45ULL }, /* XSUM_XXH64_testdata[737] */ + { 369, 0x0000000000000000ULL, 0x218BE4022357C2C5ULL }, /* XSUM_XXH64_testdata[738] */ + { 369, 0x000000009E3779B1ULL, 0x506B06A33BB769A2ULL }, /* XSUM_XXH64_testdata[739] */ + { 370, 0x0000000000000000ULL, 0xD0B8F04E8CB45BE2ULL }, /* XSUM_XXH64_testdata[740] */ + { 370, 0x000000009E3779B1ULL, 0xD6681A2EE58347F9ULL }, /* XSUM_XXH64_testdata[741] */ + { 371, 0x0000000000000000ULL, 0x21D5DF5AFD923E04ULL }, /* XSUM_XXH64_testdata[742] */ + { 371, 0x000000009E3779B1ULL, 0xF1749A54F9A73D6FULL }, /* XSUM_XXH64_testdata[743] */ + { 372, 0x0000000000000000ULL, 0xA1169572F334E450ULL }, /* XSUM_XXH64_testdata[744] */ + { 372, 0x000000009E3779B1ULL, 0x23B8C35AD1D75D48ULL }, /* XSUM_XXH64_testdata[745] */ + { 373, 0x0000000000000000ULL, 0x4BD2BB4765F571B7ULL }, /* XSUM_XXH64_testdata[746] */ + { 373, 0x000000009E3779B1ULL, 0xD65A00D88A0E022AULL }, /* XSUM_XXH64_testdata[747] */ + { 374, 0x0000000000000000ULL, 0x278416509AB11649ULL }, /* XSUM_XXH64_testdata[748] */ + { 374, 0x000000009E3779B1ULL, 0x59BE56940BF9E73DULL }, /* XSUM_XXH64_testdata[749] */ + { 375, 0x0000000000000000ULL, 0xA2F864D1E63B240AULL }, /* XSUM_XXH64_testdata[750] */ + { 375, 0x000000009E3779B1ULL, 0x04D060D22C824ED2ULL }, /* XSUM_XXH64_testdata[751] */ + { 376, 0x0000000000000000ULL, 0xC4DCB1D27FDE7788ULL }, /* XSUM_XXH64_testdata[752] */ + { 376, 0x000000009E3779B1ULL, 0x0AD31776E94CBA79ULL }, /* XSUM_XXH64_testdata[753] */ + { 377, 0x0000000000000000ULL, 0xC2F3DB934411070CULL }, /* XSUM_XXH64_testdata[754] */ + { 377, 0x000000009E3779B1ULL, 0xC28025FBB8DFD75DULL }, /* XSUM_XXH64_testdata[755] */ + { 378, 0x0000000000000000ULL, 0x0FDAEA3335593148ULL }, /* XSUM_XXH64_testdata[756] */ + { 378, 0x000000009E3779B1ULL, 0xAECA4BDA06ED5D61ULL }, /* XSUM_XXH64_testdata[757] */ + { 379, 0x0000000000000000ULL, 0x3175159612EA7796ULL }, /* XSUM_XXH64_testdata[758] */ + { 379, 0x000000009E3779B1ULL, 0xE9376AFDEF694BEEULL }, /* XSUM_XXH64_testdata[759] */ + { 380, 0x0000000000000000ULL, 0xF1C40441D14C95A5ULL }, /* XSUM_XXH64_testdata[760] */ + { 380, 0x000000009E3779B1ULL, 0x1D7886AF1856F4B6ULL }, /* XSUM_XXH64_testdata[761] */ + { 381, 0x0000000000000000ULL, 0x9B98BE37385CEB7BULL }, /* XSUM_XXH64_testdata[762] */ + { 381, 0x000000009E3779B1ULL, 0xE57C93942ADF4947ULL }, /* XSUM_XXH64_testdata[763] */ + { 382, 0x0000000000000000ULL, 0x31BFA4652E07BEB8ULL }, /* XSUM_XXH64_testdata[764] */ + { 382, 0x000000009E3779B1ULL, 0x805635A220015E23ULL }, /* XSUM_XXH64_testdata[765] */ + { 383, 0x0000000000000000ULL, 0xE612E19B7CC4D5ABULL }, /* XSUM_XXH64_testdata[766] */ + { 383, 0x000000009E3779B1ULL, 0xDEF132C77950801EULL }, /* XSUM_XXH64_testdata[767] */ + { 384, 0x0000000000000000ULL, 0xE0EFB85215C71C09ULL }, /* XSUM_XXH64_testdata[768] */ + { 384, 0x000000009E3779B1ULL, 0x0A7FF923C9D036CDULL }, /* XSUM_XXH64_testdata[769] */ + { 385, 0x0000000000000000ULL, 0xAEFC22C7F317BF44ULL }, /* XSUM_XXH64_testdata[770] */ + { 385, 0x000000009E3779B1ULL, 0xE071B502D2531E63ULL }, /* XSUM_XXH64_testdata[771] */ + { 386, 0x0000000000000000ULL, 0x21346B0FA207752DULL }, /* XSUM_XXH64_testdata[772] */ + { 386, 0x000000009E3779B1ULL, 0x295A64CDEA6E786AULL }, /* XSUM_XXH64_testdata[773] */ + { 387, 0x0000000000000000ULL, 0x7853D7E6049A5157ULL }, /* XSUM_XXH64_testdata[774] */ + { 387, 0x000000009E3779B1ULL, 0xB6C4FCDAF2B28B72ULL }, /* XSUM_XXH64_testdata[775] */ + { 388, 0x0000000000000000ULL, 0x0D44D47A8B8E172CULL }, /* XSUM_XXH64_testdata[776] */ + { 388, 0x000000009E3779B1ULL, 0xF56543F493851BB7ULL }, /* XSUM_XXH64_testdata[777] */ + { 389, 0x0000000000000000ULL, 0xBFCF76A043BEE0E5ULL }, /* XSUM_XXH64_testdata[778] */ + { 389, 0x000000009E3779B1ULL, 0x48AEE947021D9686ULL }, /* XSUM_XXH64_testdata[779] */ + { 390, 0x0000000000000000ULL, 0xFEB1F719F2BA4419ULL }, /* XSUM_XXH64_testdata[780] */ + { 390, 0x000000009E3779B1ULL, 0x8A90FB918044D765ULL }, /* XSUM_XXH64_testdata[781] */ + { 391, 0x0000000000000000ULL, 0x0B48DCCB968D6FB3ULL }, /* XSUM_XXH64_testdata[782] */ + { 391, 0x000000009E3779B1ULL, 0x4E3EA393AECE6242ULL }, /* XSUM_XXH64_testdata[783] */ + { 392, 0x0000000000000000ULL, 0x6ACEAB40DD45ECCDULL }, /* XSUM_XXH64_testdata[784] */ + { 392, 0x000000009E3779B1ULL, 0x7E79892276BB1BA3ULL }, /* XSUM_XXH64_testdata[785] */ + { 393, 0x0000000000000000ULL, 0xDB6C617D44B49B81ULL }, /* XSUM_XXH64_testdata[786] */ + { 393, 0x000000009E3779B1ULL, 0x734D33A4E578EA33ULL }, /* XSUM_XXH64_testdata[787] */ + { 394, 0x0000000000000000ULL, 0xD38D57BE8C1EFF36ULL }, /* XSUM_XXH64_testdata[788] */ + { 394, 0x000000009E3779B1ULL, 0xF131EC2E96911189ULL }, /* XSUM_XXH64_testdata[789] */ + { 395, 0x0000000000000000ULL, 0x55006129C21598FEULL }, /* XSUM_XXH64_testdata[790] */ + { 395, 0x000000009E3779B1ULL, 0x01E693808CD6B787ULL }, /* XSUM_XXH64_testdata[791] */ + { 396, 0x0000000000000000ULL, 0xDBBD4E2B7C59BEDBULL }, /* XSUM_XXH64_testdata[792] */ + { 396, 0x000000009E3779B1ULL, 0x66A1F230AB0C46B7ULL }, /* XSUM_XXH64_testdata[793] */ + { 397, 0x0000000000000000ULL, 0x2C92852B92663F53ULL }, /* XSUM_XXH64_testdata[794] */ + { 397, 0x000000009E3779B1ULL, 0xC0B250BE62D42F4DULL }, /* XSUM_XXH64_testdata[795] */ + { 398, 0x0000000000000000ULL, 0x9BD8C1E03800118DULL }, /* XSUM_XXH64_testdata[796] */ + { 398, 0x000000009E3779B1ULL, 0x29CBE4CF16F108FBULL }, /* XSUM_XXH64_testdata[797] */ + { 399, 0x0000000000000000ULL, 0xE7760069A9415F4FULL }, /* XSUM_XXH64_testdata[798] */ + { 399, 0x000000009E3779B1ULL, 0x7F3C35AE058EED4CULL }, /* XSUM_XXH64_testdata[799] */ + { 400, 0x0000000000000000ULL, 0x4581242DB7868377ULL }, /* XSUM_XXH64_testdata[800] */ + { 400, 0x000000009E3779B1ULL, 0xE3D38D3FDE215586ULL }, /* XSUM_XXH64_testdata[801] */ + { 401, 0x0000000000000000ULL, 0xE297524B7CD2F598ULL }, /* XSUM_XXH64_testdata[802] */ + { 401, 0x000000009E3779B1ULL, 0x81A7F82E9D6D490CULL }, /* XSUM_XXH64_testdata[803] */ + { 402, 0x0000000000000000ULL, 0xD479FDBC4B4D4793ULL }, /* XSUM_XXH64_testdata[804] */ + { 402, 0x000000009E3779B1ULL, 0xFB789B6F1DB92E25ULL }, /* XSUM_XXH64_testdata[805] */ + { 403, 0x0000000000000000ULL, 0xD99858FEE82283DFULL }, /* XSUM_XXH64_testdata[806] */ + { 403, 0x000000009E3779B1ULL, 0xF66589734AD3CF7EULL }, /* XSUM_XXH64_testdata[807] */ + { 404, 0x0000000000000000ULL, 0x404C0164C810B890ULL }, /* XSUM_XXH64_testdata[808] */ + { 404, 0x000000009E3779B1ULL, 0x21DF4FB8D1B99324ULL }, /* XSUM_XXH64_testdata[809] */ + { 405, 0x0000000000000000ULL, 0x0173F6874E867210ULL }, /* XSUM_XXH64_testdata[810] */ + { 405, 0x000000009E3779B1ULL, 0x145D25DD60D253B9ULL }, /* XSUM_XXH64_testdata[811] */ + { 406, 0x0000000000000000ULL, 0x68C576ADB1EBE2A3ULL }, /* XSUM_XXH64_testdata[812] */ + { 406, 0x000000009E3779B1ULL, 0xFF2169289AA10522ULL }, /* XSUM_XXH64_testdata[813] */ + { 407, 0x0000000000000000ULL, 0x6B44FA7F771A2E3EULL }, /* XSUM_XXH64_testdata[814] */ + { 407, 0x000000009E3779B1ULL, 0x72664ECE337B7043ULL }, /* XSUM_XXH64_testdata[815] */ + { 408, 0x0000000000000000ULL, 0xDD7E906896FDE2F9ULL }, /* XSUM_XXH64_testdata[816] */ + { 408, 0x000000009E3779B1ULL, 0x7BCE9F34F477DBE1ULL }, /* XSUM_XXH64_testdata[817] */ + { 409, 0x0000000000000000ULL, 0x51B9F33A8AF1319AULL }, /* XSUM_XXH64_testdata[818] */ + { 409, 0x000000009E3779B1ULL, 0x75ABF9D8FB23947EULL }, /* XSUM_XXH64_testdata[819] */ + { 410, 0x0000000000000000ULL, 0x9CD79D8A4344916BULL }, /* XSUM_XXH64_testdata[820] */ + { 410, 0x000000009E3779B1ULL, 0x1243A2C29B5721AEULL }, /* XSUM_XXH64_testdata[821] */ + { 411, 0x0000000000000000ULL, 0x40CE5A49AC1C190BULL }, /* XSUM_XXH64_testdata[822] */ + { 411, 0x000000009E3779B1ULL, 0x01ECCE7208EC5F51ULL }, /* XSUM_XXH64_testdata[823] */ + { 412, 0x0000000000000000ULL, 0x8EA0FA92E59FC1F1ULL }, /* XSUM_XXH64_testdata[824] */ + { 412, 0x000000009E3779B1ULL, 0x24E0A17C768CB4FDULL }, /* XSUM_XXH64_testdata[825] */ + { 413, 0x0000000000000000ULL, 0x091E8C2D14A662E0ULL }, /* XSUM_XXH64_testdata[826] */ + { 413, 0x000000009E3779B1ULL, 0xB47F5C5528F3F634ULL }, /* XSUM_XXH64_testdata[827] */ + { 414, 0x0000000000000000ULL, 0x00E32E71E9EF3717ULL }, /* XSUM_XXH64_testdata[828] */ + { 414, 0x000000009E3779B1ULL, 0x759D6135223861C1ULL }, /* XSUM_XXH64_testdata[829] */ + { 415, 0x0000000000000000ULL, 0xD21126D6F7FF3852ULL }, /* XSUM_XXH64_testdata[830] */ + { 415, 0x000000009E3779B1ULL, 0x7AA162EC31C286EDULL }, /* XSUM_XXH64_testdata[831] */ + { 416, 0x0000000000000000ULL, 0x7319F2B5C775AB3EULL }, /* XSUM_XXH64_testdata[832] */ + { 416, 0x000000009E3779B1ULL, 0xD21E77D8AC120FFFULL }, /* XSUM_XXH64_testdata[833] */ + { 417, 0x0000000000000000ULL, 0xF0DEB8D5833F3556ULL }, /* XSUM_XXH64_testdata[834] */ + { 417, 0x000000009E3779B1ULL, 0x71F0FCA245F29550ULL }, /* XSUM_XXH64_testdata[835] */ + { 418, 0x0000000000000000ULL, 0x3E6400FE386BF36FULL }, /* XSUM_XXH64_testdata[836] */ + { 418, 0x000000009E3779B1ULL, 0x099A003EAD1CA662ULL }, /* XSUM_XXH64_testdata[837] */ + { 419, 0x0000000000000000ULL, 0x46DCEAFF1EBC6577ULL }, /* XSUM_XXH64_testdata[838] */ + { 419, 0x000000009E3779B1ULL, 0x45C133F35B871816ULL }, /* XSUM_XXH64_testdata[839] */ + { 420, 0x0000000000000000ULL, 0x6127CB28225B3CB6ULL }, /* XSUM_XXH64_testdata[840] */ + { 420, 0x000000009E3779B1ULL, 0x1D53D6AD66E9F1C3ULL }, /* XSUM_XXH64_testdata[841] */ + { 421, 0x0000000000000000ULL, 0xCA87D1BA12B8D930ULL }, /* XSUM_XXH64_testdata[842] */ + { 421, 0x000000009E3779B1ULL, 0x11F62E4EBE932275ULL }, /* XSUM_XXH64_testdata[843] */ + { 422, 0x0000000000000000ULL, 0xFED2A07192168432ULL }, /* XSUM_XXH64_testdata[844] */ + { 422, 0x000000009E3779B1ULL, 0x7455916DCEFBACE1ULL }, /* XSUM_XXH64_testdata[845] */ + { 423, 0x0000000000000000ULL, 0x41196C0E245B0D9CULL }, /* XSUM_XXH64_testdata[846] */ + { 423, 0x000000009E3779B1ULL, 0xD90B0BAFE79A67C5ULL }, /* XSUM_XXH64_testdata[847] */ + { 424, 0x0000000000000000ULL, 0xDBA935092D6CC79FULL }, /* XSUM_XXH64_testdata[848] */ + { 424, 0x000000009E3779B1ULL, 0xF2FDF5EADABD6ECCULL }, /* XSUM_XXH64_testdata[849] */ + { 425, 0x0000000000000000ULL, 0x63655D005F220917ULL }, /* XSUM_XXH64_testdata[850] */ + { 425, 0x000000009E3779B1ULL, 0x0B7A33C49D258122ULL }, /* XSUM_XXH64_testdata[851] */ + { 426, 0x0000000000000000ULL, 0x42368F69311633D2ULL }, /* XSUM_XXH64_testdata[852] */ + { 426, 0x000000009E3779B1ULL, 0x73A1B6D645252287ULL }, /* XSUM_XXH64_testdata[853] */ + { 427, 0x0000000000000000ULL, 0x791554672DB58205ULL }, /* XSUM_XXH64_testdata[854] */ + { 427, 0x000000009E3779B1ULL, 0x3D739071089B6F16ULL }, /* XSUM_XXH64_testdata[855] */ + { 428, 0x0000000000000000ULL, 0xCE86BADA84179A50ULL }, /* XSUM_XXH64_testdata[856] */ + { 428, 0x000000009E3779B1ULL, 0xA71BA1A04BACABC6ULL }, /* XSUM_XXH64_testdata[857] */ + { 429, 0x0000000000000000ULL, 0x1B142012B60D624BULL }, /* XSUM_XXH64_testdata[858] */ + { 429, 0x000000009E3779B1ULL, 0x9D9EF3D9162F92E8ULL }, /* XSUM_XXH64_testdata[859] */ + { 430, 0x0000000000000000ULL, 0xFF2A20FBA8523036ULL }, /* XSUM_XXH64_testdata[860] */ + { 430, 0x000000009E3779B1ULL, 0x8CCFAFAA584CF34DULL }, /* XSUM_XXH64_testdata[861] */ + { 431, 0x0000000000000000ULL, 0x4F9F87B4591B0FBBULL }, /* XSUM_XXH64_testdata[862] */ + { 431, 0x000000009E3779B1ULL, 0xE09B6C699939EFA2ULL }, /* XSUM_XXH64_testdata[863] */ + { 432, 0x0000000000000000ULL, 0xF6D48B6DF8091F1EULL }, /* XSUM_XXH64_testdata[864] */ + { 432, 0x000000009E3779B1ULL, 0x7C99553C30148610ULL }, /* XSUM_XXH64_testdata[865] */ + { 433, 0x0000000000000000ULL, 0xF94E03AA24E6CF00ULL }, /* XSUM_XXH64_testdata[866] */ + { 433, 0x000000009E3779B1ULL, 0x94EFD2E9E10439A9ULL }, /* XSUM_XXH64_testdata[867] */ + { 434, 0x0000000000000000ULL, 0xF8E9464218ECE1B1ULL }, /* XSUM_XXH64_testdata[868] */ + { 434, 0x000000009E3779B1ULL, 0x1CAA675030E23E0AULL }, /* XSUM_XXH64_testdata[869] */ + { 435, 0x0000000000000000ULL, 0x945E7FFC4F72CB7AULL }, /* XSUM_XXH64_testdata[870] */ + { 435, 0x000000009E3779B1ULL, 0x016819919A72D6D1ULL }, /* XSUM_XXH64_testdata[871] */ + { 436, 0x0000000000000000ULL, 0xE5FF7BE5AD6B2401ULL }, /* XSUM_XXH64_testdata[872] */ + { 436, 0x000000009E3779B1ULL, 0x7B600C69E72AEB87ULL }, /* XSUM_XXH64_testdata[873] */ + { 437, 0x0000000000000000ULL, 0x378488B2F434ECCFULL }, /* XSUM_XXH64_testdata[874] */ + { 437, 0x000000009E3779B1ULL, 0xF2BAF2947B71BEACULL }, /* XSUM_XXH64_testdata[875] */ + { 438, 0x0000000000000000ULL, 0xAB608A8B906F7B02ULL }, /* XSUM_XXH64_testdata[876] */ + { 438, 0x000000009E3779B1ULL, 0xD452A1154FFB4456ULL }, /* XSUM_XXH64_testdata[877] */ + { 439, 0x0000000000000000ULL, 0x7AB6E12E2A2073FBULL }, /* XSUM_XXH64_testdata[878] */ + { 439, 0x000000009E3779B1ULL, 0x89F275B2098CA649ULL }, /* XSUM_XXH64_testdata[879] */ + { 440, 0x0000000000000000ULL, 0x01F8A9639790AC66ULL }, /* XSUM_XXH64_testdata[880] */ + { 440, 0x000000009E3779B1ULL, 0x765CB9BD0A0B4968ULL }, /* XSUM_XXH64_testdata[881] */ + { 441, 0x0000000000000000ULL, 0x8579DB651855FC52ULL }, /* XSUM_XXH64_testdata[882] */ + { 441, 0x000000009E3779B1ULL, 0xD696CA959FC01D27ULL }, /* XSUM_XXH64_testdata[883] */ + { 442, 0x0000000000000000ULL, 0xCB4348957960911AULL }, /* XSUM_XXH64_testdata[884] */ + { 442, 0x000000009E3779B1ULL, 0x2E64B87578774199ULL }, /* XSUM_XXH64_testdata[885] */ + { 443, 0x0000000000000000ULL, 0xD1F4906E8D06391EULL }, /* XSUM_XXH64_testdata[886] */ + { 443, 0x000000009E3779B1ULL, 0x00B7AB143869613FULL }, /* XSUM_XXH64_testdata[887] */ + { 444, 0x0000000000000000ULL, 0xA2DFAE5D5A67884FULL }, /* XSUM_XXH64_testdata[888] */ + { 444, 0x000000009E3779B1ULL, 0x70857EC5BC9AEB3CULL }, /* XSUM_XXH64_testdata[889] */ + { 445, 0x0000000000000000ULL, 0x6646E1735503A3C0ULL }, /* XSUM_XXH64_testdata[890] */ + { 445, 0x000000009E3779B1ULL, 0xD9C49B6909F3636EULL }, /* XSUM_XXH64_testdata[891] */ + { 446, 0x0000000000000000ULL, 0x8F03204478ACAF49ULL }, /* XSUM_XXH64_testdata[892] */ + { 446, 0x000000009E3779B1ULL, 0x2FF81F47418A77F5ULL }, /* XSUM_XXH64_testdata[893] */ + { 447, 0x0000000000000000ULL, 0x0EDC27091B085A82ULL }, /* XSUM_XXH64_testdata[894] */ + { 447, 0x000000009E3779B1ULL, 0x135DE1C596499D0CULL }, /* XSUM_XXH64_testdata[895] */ + { 448, 0x0000000000000000ULL, 0x465FBDC140F3780FULL }, /* XSUM_XXH64_testdata[896] */ + { 448, 0x000000009E3779B1ULL, 0xCCAD9E903167223EULL }, /* XSUM_XXH64_testdata[897] */ + { 449, 0x0000000000000000ULL, 0x51E2A5C66C3C7345ULL }, /* XSUM_XXH64_testdata[898] */ + { 449, 0x000000009E3779B1ULL, 0x27B78EE3D6A73779ULL }, /* XSUM_XXH64_testdata[899] */ + { 450, 0x0000000000000000ULL, 0x83D7FA2D0551B412ULL }, /* XSUM_XXH64_testdata[900] */ + { 450, 0x000000009E3779B1ULL, 0x008C6A8908F2EDF3ULL }, /* XSUM_XXH64_testdata[901] */ + { 451, 0x0000000000000000ULL, 0xABAFD3ABA227706EULL }, /* XSUM_XXH64_testdata[902] */ + { 451, 0x000000009E3779B1ULL, 0x7F3B2B83DA239881ULL }, /* XSUM_XXH64_testdata[903] */ + { 452, 0x0000000000000000ULL, 0x10F4E85F0D32CA78ULL }, /* XSUM_XXH64_testdata[904] */ + { 452, 0x000000009E3779B1ULL, 0xD870BB8743C029F1ULL }, /* XSUM_XXH64_testdata[905] */ + { 453, 0x0000000000000000ULL, 0xD88E868BB3172267ULL }, /* XSUM_XXH64_testdata[906] */ + { 453, 0x000000009E3779B1ULL, 0x5994B79B64070DC4ULL }, /* XSUM_XXH64_testdata[907] */ + { 454, 0x0000000000000000ULL, 0x8F7ADE427C362DEAULL }, /* XSUM_XXH64_testdata[908] */ + { 454, 0x000000009E3779B1ULL, 0x0D2D3FB152C5059DULL }, /* XSUM_XXH64_testdata[909] */ + { 455, 0x0000000000000000ULL, 0x9DD51DD63505C82DULL }, /* XSUM_XXH64_testdata[910] */ + { 455, 0x000000009E3779B1ULL, 0xC752BA5B462F513EULL }, /* XSUM_XXH64_testdata[911] */ + { 456, 0x0000000000000000ULL, 0xD68678A01FBF1CEDULL }, /* XSUM_XXH64_testdata[912] */ + { 456, 0x000000009E3779B1ULL, 0xCBCC6C108F790420ULL }, /* XSUM_XXH64_testdata[913] */ + { 457, 0x0000000000000000ULL, 0x4A8DFA47A5243AB4ULL }, /* XSUM_XXH64_testdata[914] */ + { 457, 0x000000009E3779B1ULL, 0x609D3971A15C7CABULL }, /* XSUM_XXH64_testdata[915] */ + { 458, 0x0000000000000000ULL, 0x60216DC8DBBEB687ULL }, /* XSUM_XXH64_testdata[916] */ + { 458, 0x000000009E3779B1ULL, 0x0EEF86168490597EULL }, /* XSUM_XXH64_testdata[917] */ + { 459, 0x0000000000000000ULL, 0x7E52C5716A1E2461ULL }, /* XSUM_XXH64_testdata[918] */ + { 459, 0x000000009E3779B1ULL, 0x96EFF1C70AD8F962ULL }, /* XSUM_XXH64_testdata[919] */ + { 460, 0x0000000000000000ULL, 0xDADEE2B3BC9207F5ULL }, /* XSUM_XXH64_testdata[920] */ + { 460, 0x000000009E3779B1ULL, 0x02FF311FBFE92500ULL }, /* XSUM_XXH64_testdata[921] */ + { 461, 0x0000000000000000ULL, 0x0B96DB78FF730BC9ULL }, /* XSUM_XXH64_testdata[922] */ + { 461, 0x000000009E3779B1ULL, 0x4F89125C297A641CULL }, /* XSUM_XXH64_testdata[923] */ + { 462, 0x0000000000000000ULL, 0x600B43E4F562B855ULL }, /* XSUM_XXH64_testdata[924] */ + { 462, 0x000000009E3779B1ULL, 0x9A01F7838C7E76C1ULL }, /* XSUM_XXH64_testdata[925] */ + { 463, 0x0000000000000000ULL, 0xAF11D3DA14ECEA77ULL }, /* XSUM_XXH64_testdata[926] */ + { 463, 0x000000009E3779B1ULL, 0xD3EC40A69FCC3A01ULL }, /* XSUM_XXH64_testdata[927] */ + { 464, 0x0000000000000000ULL, 0x63F9939CAF710AB3ULL }, /* XSUM_XXH64_testdata[928] */ + { 464, 0x000000009E3779B1ULL, 0x27F1AE18B0000F32ULL }, /* XSUM_XXH64_testdata[929] */ + { 465, 0x0000000000000000ULL, 0x9E3B6A4665E25791ULL }, /* XSUM_XXH64_testdata[930] */ + { 465, 0x000000009E3779B1ULL, 0x392522093E3FB48CULL }, /* XSUM_XXH64_testdata[931] */ + { 466, 0x0000000000000000ULL, 0x04D9792DD944E6FAULL }, /* XSUM_XXH64_testdata[932] */ + { 466, 0x000000009E3779B1ULL, 0x26C2C96305BB5022ULL }, /* XSUM_XXH64_testdata[933] */ + { 467, 0x0000000000000000ULL, 0x068711B25A6E0D92ULL }, /* XSUM_XXH64_testdata[934] */ + { 467, 0x000000009E3779B1ULL, 0xBD83F17500969511ULL }, /* XSUM_XXH64_testdata[935] */ + { 468, 0x0000000000000000ULL, 0x1B5A437C7788771FULL }, /* XSUM_XXH64_testdata[936] */ + { 468, 0x000000009E3779B1ULL, 0x0C932D15E6922ABDULL }, /* XSUM_XXH64_testdata[937] */ + { 469, 0x0000000000000000ULL, 0x59016F221D4813C4ULL }, /* XSUM_XXH64_testdata[938] */ + { 469, 0x000000009E3779B1ULL, 0xE26458A377C9D1ABULL }, /* XSUM_XXH64_testdata[939] */ + { 470, 0x0000000000000000ULL, 0x2663563FDE9F1831ULL }, /* XSUM_XXH64_testdata[940] */ + { 470, 0x000000009E3779B1ULL, 0x5092D399CE4818FBULL }, /* XSUM_XXH64_testdata[941] */ + { 471, 0x0000000000000000ULL, 0x0AB3383195958DFCULL }, /* XSUM_XXH64_testdata[942] */ + { 471, 0x000000009E3779B1ULL, 0xC56EF2EB4CC708AAULL }, /* XSUM_XXH64_testdata[943] */ + { 472, 0x0000000000000000ULL, 0x62059C47D32E4D90ULL }, /* XSUM_XXH64_testdata[944] */ + { 472, 0x000000009E3779B1ULL, 0x8C30EEDEA66C724EULL }, /* XSUM_XXH64_testdata[945] */ + { 473, 0x0000000000000000ULL, 0x2CB293E9758D5BECULL }, /* XSUM_XXH64_testdata[946] */ + { 473, 0x000000009E3779B1ULL, 0xEE1698A529650FD2ULL }, /* XSUM_XXH64_testdata[947] */ + { 474, 0x0000000000000000ULL, 0xCFADBE86FBA36BB3ULL }, /* XSUM_XXH64_testdata[948] */ + { 474, 0x000000009E3779B1ULL, 0x35995964704111EBULL }, /* XSUM_XXH64_testdata[949] */ + { 475, 0x0000000000000000ULL, 0x574C11EBD764D1DDULL }, /* XSUM_XXH64_testdata[950] */ + { 475, 0x000000009E3779B1ULL, 0xFC3ADBB622E9B7DCULL }, /* XSUM_XXH64_testdata[951] */ + { 476, 0x0000000000000000ULL, 0xE3D070118B3B303DULL }, /* XSUM_XXH64_testdata[952] */ + { 476, 0x000000009E3779B1ULL, 0xA7FED066373DEE9FULL }, /* XSUM_XXH64_testdata[953] */ + { 477, 0x0000000000000000ULL, 0xEA289911F5201680ULL }, /* XSUM_XXH64_testdata[954] */ + { 477, 0x000000009E3779B1ULL, 0xEB390BFDC716AA91ULL }, /* XSUM_XXH64_testdata[955] */ + { 478, 0x0000000000000000ULL, 0x8DA3DCA0B281372BULL }, /* XSUM_XXH64_testdata[956] */ + { 478, 0x000000009E3779B1ULL, 0x4349FEE4D2B17020ULL }, /* XSUM_XXH64_testdata[957] */ + { 479, 0x0000000000000000ULL, 0x02B1BBA6B8DC460BULL }, /* XSUM_XXH64_testdata[958] */ + { 479, 0x000000009E3779B1ULL, 0xDB069B2D229E4780ULL }, /* XSUM_XXH64_testdata[959] */ + { 480, 0x0000000000000000ULL, 0x40031EFCE44584AFULL }, /* XSUM_XXH64_testdata[960] */ + { 480, 0x000000009E3779B1ULL, 0x1612CF8E737DD856ULL }, /* XSUM_XXH64_testdata[961] */ + { 481, 0x0000000000000000ULL, 0x6AEC129F22336227ULL }, /* XSUM_XXH64_testdata[962] */ + { 481, 0x000000009E3779B1ULL, 0xDA87FF4EB7992996ULL }, /* XSUM_XXH64_testdata[963] */ + { 482, 0x0000000000000000ULL, 0x0843ED2BFCA993EAULL }, /* XSUM_XXH64_testdata[964] */ + { 482, 0x000000009E3779B1ULL, 0x9821FC8DB9D8022EULL }, /* XSUM_XXH64_testdata[965] */ + { 483, 0x0000000000000000ULL, 0x178E105C1B1E0134ULL }, /* XSUM_XXH64_testdata[966] */ + { 483, 0x000000009E3779B1ULL, 0x86D480B7F76DFBE9ULL }, /* XSUM_XXH64_testdata[967] */ + { 484, 0x0000000000000000ULL, 0x0DCA6F3508C285BAULL }, /* XSUM_XXH64_testdata[968] */ + { 484, 0x000000009E3779B1ULL, 0xE6C29284FF7590C5ULL }, /* XSUM_XXH64_testdata[969] */ + { 485, 0x0000000000000000ULL, 0xC023B1DB24605E35ULL }, /* XSUM_XXH64_testdata[970] */ + { 485, 0x000000009E3779B1ULL, 0xE68814F0AB2B750AULL }, /* XSUM_XXH64_testdata[971] */ + { 486, 0x0000000000000000ULL, 0x41E31D83E4F93D06ULL }, /* XSUM_XXH64_testdata[972] */ + { 486, 0x000000009E3779B1ULL, 0xEF55AE9D5E5CEA59ULL }, /* XSUM_XXH64_testdata[973] */ + { 487, 0x0000000000000000ULL, 0x093DA0BBAED7F232ULL }, /* XSUM_XXH64_testdata[974] */ + { 487, 0x000000009E3779B1ULL, 0xD220B6221C6C63A4ULL }, /* XSUM_XXH64_testdata[975] */ + { 488, 0x0000000000000000ULL, 0x761742AE716591FDULL }, /* XSUM_XXH64_testdata[976] */ + { 488, 0x000000009E3779B1ULL, 0x793924E36DBEB9A7ULL }, /* XSUM_XXH64_testdata[977] */ + { 489, 0x0000000000000000ULL, 0x0F1737AE93F62C74ULL }, /* XSUM_XXH64_testdata[978] */ + { 489, 0x000000009E3779B1ULL, 0xC0A6A71FA00BF57CULL }, /* XSUM_XXH64_testdata[979] */ + { 490, 0x0000000000000000ULL, 0xEB9D10098EF0CB74ULL }, /* XSUM_XXH64_testdata[980] */ + { 490, 0x000000009E3779B1ULL, 0x3E6998ACEDA2EE67ULL }, /* XSUM_XXH64_testdata[981] */ + { 491, 0x0000000000000000ULL, 0x5B9D47EABDA691FAULL }, /* XSUM_XXH64_testdata[982] */ + { 491, 0x000000009E3779B1ULL, 0x4CF38592DC8904D6ULL }, /* XSUM_XXH64_testdata[983] */ + { 492, 0x0000000000000000ULL, 0x6DC29C7B23F5F15EULL }, /* XSUM_XXH64_testdata[984] */ + { 492, 0x000000009E3779B1ULL, 0x7F19DF774B1928D5ULL }, /* XSUM_XXH64_testdata[985] */ + { 493, 0x0000000000000000ULL, 0x7F76280BB7FCE69FULL }, /* XSUM_XXH64_testdata[986] */ + { 493, 0x000000009E3779B1ULL, 0x522AB77524338A16ULL }, /* XSUM_XXH64_testdata[987] */ + { 494, 0x0000000000000000ULL, 0x3FC2B6A8DD5F66C4ULL }, /* XSUM_XXH64_testdata[988] */ + { 494, 0x000000009E3779B1ULL, 0x00A39203BBE1E330ULL }, /* XSUM_XXH64_testdata[989] */ + { 495, 0x0000000000000000ULL, 0xABE2CE0D9471F427ULL }, /* XSUM_XXH64_testdata[990] */ + { 495, 0x000000009E3779B1ULL, 0x7E0DB81889B923E1ULL }, /* XSUM_XXH64_testdata[991] */ + { 496, 0x0000000000000000ULL, 0x3985E21DBD3CDEF3ULL }, /* XSUM_XXH64_testdata[992] */ + { 496, 0x000000009E3779B1ULL, 0x42F6DBAC22AD2A14ULL }, /* XSUM_XXH64_testdata[993] */ + { 497, 0x0000000000000000ULL, 0x4CA22D526CAD42B4ULL }, /* XSUM_XXH64_testdata[994] */ + { 497, 0x000000009E3779B1ULL, 0x7BF4B9AEA2185F63ULL }, /* XSUM_XXH64_testdata[995] */ + { 498, 0x0000000000000000ULL, 0x1DC9E82F7DC4EE75ULL }, /* XSUM_XXH64_testdata[996] */ + { 498, 0x000000009E3779B1ULL, 0xA0E9D167061A5ADCULL }, /* XSUM_XXH64_testdata[997] */ + { 499, 0x0000000000000000ULL, 0x20667D1D1F953BF2ULL }, /* XSUM_XXH64_testdata[998] */ + { 499, 0x000000009E3779B1ULL, 0x92B92E43DC4E26C6ULL }, /* XSUM_XXH64_testdata[999] */ + { 500, 0x0000000000000000ULL, 0x0B5403D7FCC8AB6DULL }, /* XSUM_XXH64_testdata[1000] */ + { 500, 0x000000009E3779B1ULL, 0xFF6DB0A01DEE34B4ULL }, /* XSUM_XXH64_testdata[1001] */ + { 501, 0x0000000000000000ULL, 0x304D87F89595490BULL }, /* XSUM_XXH64_testdata[1002] */ + { 501, 0x000000009E3779B1ULL, 0x75173066F3589C33ULL }, /* XSUM_XXH64_testdata[1003] */ + { 502, 0x0000000000000000ULL, 0x298DB12D23F6EB97ULL }, /* XSUM_XXH64_testdata[1004] */ + { 502, 0x000000009E3779B1ULL, 0x369BFC08CF1E6A34ULL }, /* XSUM_XXH64_testdata[1005] */ + { 503, 0x0000000000000000ULL, 0xBC6611E986B7648FULL }, /* XSUM_XXH64_testdata[1006] */ + { 503, 0x000000009E3779B1ULL, 0xAC9FB74CEDFA9A33ULL }, /* XSUM_XXH64_testdata[1007] */ + { 504, 0x0000000000000000ULL, 0xA4811FB6290D19F9ULL }, /* XSUM_XXH64_testdata[1008] */ + { 504, 0x000000009E3779B1ULL, 0x78D79342AAEF81B9ULL }, /* XSUM_XXH64_testdata[1009] */ + { 505, 0x0000000000000000ULL, 0x1F791A9F0E20AD3AULL }, /* XSUM_XXH64_testdata[1010] */ + { 505, 0x000000009E3779B1ULL, 0x85570A633C613AD7ULL }, /* XSUM_XXH64_testdata[1011] */ + { 506, 0x0000000000000000ULL, 0x8AB2AE971FC81669ULL }, /* XSUM_XXH64_testdata[1012] */ + { 506, 0x000000009E3779B1ULL, 0x0C27D432268D95C9ULL }, /* XSUM_XXH64_testdata[1013] */ + { 507, 0x0000000000000000ULL, 0xA0FCE9F8B08AFAEBULL }, /* XSUM_XXH64_testdata[1014] */ + { 507, 0x000000009E3779B1ULL, 0x0CA0718807CFCA08ULL }, /* XSUM_XXH64_testdata[1015] */ + { 508, 0x0000000000000000ULL, 0xD1A9A871AD298D60ULL }, /* XSUM_XXH64_testdata[1016] */ + { 508, 0x000000009E3779B1ULL, 0xB927B690D2AB5A51ULL }, /* XSUM_XXH64_testdata[1017] */ + { 509, 0x0000000000000000ULL, 0x5CBF1E76AEF61ACFULL }, /* XSUM_XXH64_testdata[1018] */ + { 509, 0x000000009E3779B1ULL, 0x0B7DAC8575664A12ULL }, /* XSUM_XXH64_testdata[1019] */ + { 510, 0x0000000000000000ULL, 0xAB5553DFA36E8E31ULL }, /* XSUM_XXH64_testdata[1020] */ + { 510, 0x000000009E3779B1ULL, 0x88C9D9A5B729CE18ULL }, /* XSUM_XXH64_testdata[1021] */ + { 511, 0x0000000000000000ULL, 0xC049A218675DC378ULL }, /* XSUM_XXH64_testdata[1022] */ + { 511, 0x000000009E3779B1ULL, 0x127FF202F0810F95ULL }, /* XSUM_XXH64_testdata[1023] */ + { 512, 0x0000000000000000ULL, 0x4358D2FDD62B58A7ULL }, /* XSUM_XXH64_testdata[1024] */ + { 512, 0x000000009E3779B1ULL, 0x0DED69C4804C47BAULL }, /* XSUM_XXH64_testdata[1025] */ + { 513, 0x0000000000000000ULL, 0xC2240D6F6A431697ULL }, /* XSUM_XXH64_testdata[1026] */ + { 513, 0x000000009E3779B1ULL, 0x88BFA9216A4D96C9ULL }, /* XSUM_XXH64_testdata[1027] */ + { 514, 0x0000000000000000ULL, 0x901495B937ED3AE6ULL }, /* XSUM_XXH64_testdata[1028] */ + { 514, 0x000000009E3779B1ULL, 0x8129269C8C7CE568ULL }, /* XSUM_XXH64_testdata[1029] */ + { 515, 0x0000000000000000ULL, 0xC5B49EEF519A5AAEULL }, /* XSUM_XXH64_testdata[1030] */ + { 515, 0x000000009E3779B1ULL, 0xA9B6E57E112DF80DULL }, /* XSUM_XXH64_testdata[1031] */ + { 516, 0x0000000000000000ULL, 0x24BB9E47246405FBULL }, /* XSUM_XXH64_testdata[1032] */ + { 516, 0x000000009E3779B1ULL, 0x5658E4997FAE1149ULL }, /* XSUM_XXH64_testdata[1033] */ + { 517, 0x0000000000000000ULL, 0x5002F24B8C916818ULL }, /* XSUM_XXH64_testdata[1034] */ + { 517, 0x000000009E3779B1ULL, 0x1E3BAEC8B3E92684ULL }, /* XSUM_XXH64_testdata[1035] */ + { 518, 0x0000000000000000ULL, 0x98B0ED88B8DC1803ULL }, /* XSUM_XXH64_testdata[1036] */ + { 518, 0x000000009E3779B1ULL, 0x1C6643C6D7C79888ULL }, /* XSUM_XXH64_testdata[1037] */ + { 519, 0x0000000000000000ULL, 0x67A3E92CBC5AAEB8ULL }, /* XSUM_XXH64_testdata[1038] */ + { 519, 0x000000009E3779B1ULL, 0xF6B6745DD2ABEED0ULL }, /* XSUM_XXH64_testdata[1039] */ + { 520, 0x0000000000000000ULL, 0x3E765FC98AF555B2ULL }, /* XSUM_XXH64_testdata[1040] */ + { 520, 0x000000009E3779B1ULL, 0x271854A81B1F55F5ULL }, /* XSUM_XXH64_testdata[1041] */ + { 521, 0x0000000000000000ULL, 0x1481FAAE140DB52DULL }, /* XSUM_XXH64_testdata[1042] */ + { 521, 0x000000009E3779B1ULL, 0xC9CD4CF70210991DULL }, /* XSUM_XXH64_testdata[1043] */ + { 522, 0x0000000000000000ULL, 0x7076E5064B3D72D9ULL }, /* XSUM_XXH64_testdata[1044] */ + { 522, 0x000000009E3779B1ULL, 0x0A0FE463D5D1F237ULL }, /* XSUM_XXH64_testdata[1045] */ + { 523, 0x0000000000000000ULL, 0x5BFCF54F2C534E84ULL }, /* XSUM_XXH64_testdata[1046] */ + { 523, 0x000000009E3779B1ULL, 0x5129D643B208FDA0ULL }, /* XSUM_XXH64_testdata[1047] */ + { 524, 0x0000000000000000ULL, 0x6E26EA3B29E6865BULL }, /* XSUM_XXH64_testdata[1048] */ + { 524, 0x000000009E3779B1ULL, 0x535354E5D22B7C5CULL }, /* XSUM_XXH64_testdata[1049] */ + { 525, 0x0000000000000000ULL, 0x3478B4D8BC39B944ULL }, /* XSUM_XXH64_testdata[1050] */ + { 525, 0x000000009E3779B1ULL, 0x259DCF1DB85D237EULL }, /* XSUM_XXH64_testdata[1051] */ + { 526, 0x0000000000000000ULL, 0x3915A0F0D2A49F64ULL }, /* XSUM_XXH64_testdata[1052] */ + { 526, 0x000000009E3779B1ULL, 0x5A3E939F7A624CF3ULL }, /* XSUM_XXH64_testdata[1053] */ + { 527, 0x0000000000000000ULL, 0x24505C82F7CEFBB6ULL }, /* XSUM_XXH64_testdata[1054] */ + { 527, 0x000000009E3779B1ULL, 0x922D119813FC4C0EULL }, /* XSUM_XXH64_testdata[1055] */ + { 528, 0x0000000000000000ULL, 0x67B4C2454D384A60ULL }, /* XSUM_XXH64_testdata[1056] */ + { 528, 0x000000009E3779B1ULL, 0xBCF3D6E31A6EE429ULL }, /* XSUM_XXH64_testdata[1057] */ + { 529, 0x0000000000000000ULL, 0x5F59A1C17DDE57D7ULL }, /* XSUM_XXH64_testdata[1058] */ + { 529, 0x000000009E3779B1ULL, 0xC46DD68E234BF321ULL }, /* XSUM_XXH64_testdata[1059] */ + { 530, 0x0000000000000000ULL, 0xCCFBE89BF3BE2A25ULL }, /* XSUM_XXH64_testdata[1060] */ + { 530, 0x000000009E3779B1ULL, 0xA25E7E65BB76FDBAULL }, /* XSUM_XXH64_testdata[1061] */ + { 531, 0x0000000000000000ULL, 0xFD302CE018C30F51ULL }, /* XSUM_XXH64_testdata[1062] */ + { 531, 0x000000009E3779B1ULL, 0x5E44DD12B585935FULL }, /* XSUM_XXH64_testdata[1063] */ + { 532, 0x0000000000000000ULL, 0x4EF1804541C532FAULL }, /* XSUM_XXH64_testdata[1064] */ + { 532, 0x000000009E3779B1ULL, 0x99EB3A06D5E6614BULL }, /* XSUM_XXH64_testdata[1065] */ + { 533, 0x0000000000000000ULL, 0x74CC32C533C176DEULL }, /* XSUM_XXH64_testdata[1066] */ + { 533, 0x000000009E3779B1ULL, 0x3C2E21FF7EBFE1A0ULL }, /* XSUM_XXH64_testdata[1067] */ + { 534, 0x0000000000000000ULL, 0x7BB34158B6944958ULL }, /* XSUM_XXH64_testdata[1068] */ + { 534, 0x000000009E3779B1ULL, 0x4E8CEBA257509C52ULL }, /* XSUM_XXH64_testdata[1069] */ + { 535, 0x0000000000000000ULL, 0x94B0291AEC55F5BFULL }, /* XSUM_XXH64_testdata[1070] */ + { 535, 0x000000009E3779B1ULL, 0xCB9727B59D579EF7ULL }, /* XSUM_XXH64_testdata[1071] */ + { 536, 0x0000000000000000ULL, 0x514EF0CA1A6C2F67ULL }, /* XSUM_XXH64_testdata[1072] */ + { 536, 0x000000009E3779B1ULL, 0x1BB7E00DA01F12C0ULL }, /* XSUM_XXH64_testdata[1073] */ + { 537, 0x0000000000000000ULL, 0x5E457DC4B64AAE54ULL }, /* XSUM_XXH64_testdata[1074] */ + { 537, 0x000000009E3779B1ULL, 0xEED370DEDD42FABDULL }, /* XSUM_XXH64_testdata[1075] */ + { 538, 0x0000000000000000ULL, 0x666A59574A49612EULL }, /* XSUM_XXH64_testdata[1076] */ + { 538, 0x000000009E3779B1ULL, 0xFDC8FB5DB3AE0F27ULL }, /* XSUM_XXH64_testdata[1077] */ + { 539, 0x0000000000000000ULL, 0x943547AD457E482EULL }, /* XSUM_XXH64_testdata[1078] */ + { 539, 0x000000009E3779B1ULL, 0x26D0A12D8B1C7873ULL }, /* XSUM_XXH64_testdata[1079] */ + { 540, 0x0000000000000000ULL, 0xCEC717DEACCC2F1DULL }, /* XSUM_XXH64_testdata[1080] */ + { 540, 0x000000009E3779B1ULL, 0x25EA3202F903390FULL }, /* XSUM_XXH64_testdata[1081] */ + { 541, 0x0000000000000000ULL, 0xF9757DEF684219BBULL }, /* XSUM_XXH64_testdata[1082] */ + { 541, 0x000000009E3779B1ULL, 0xB51832F75506A45EULL }, /* XSUM_XXH64_testdata[1083] */ + { 542, 0x0000000000000000ULL, 0xF7FC4492A561E7DAULL }, /* XSUM_XXH64_testdata[1084] */ + { 542, 0x000000009E3779B1ULL, 0x520BDFABB1884D86ULL }, /* XSUM_XXH64_testdata[1085] */ + { 543, 0x0000000000000000ULL, 0x8CB6F74873BDF64DULL }, /* XSUM_XXH64_testdata[1086] */ + { 543, 0x000000009E3779B1ULL, 0xC1299E715C3A18EBULL }, /* XSUM_XXH64_testdata[1087] */ + { 544, 0x0000000000000000ULL, 0x1D91E7B1C88F52C1ULL }, /* XSUM_XXH64_testdata[1088] */ + { 544, 0x000000009E3779B1ULL, 0xB5DF68D5A96BF409ULL }, /* XSUM_XXH64_testdata[1089] */ + { 545, 0x0000000000000000ULL, 0x24A9D36A04E17F94ULL }, /* XSUM_XXH64_testdata[1090] */ + { 545, 0x000000009E3779B1ULL, 0x2631158788B7FB7BULL }, /* XSUM_XXH64_testdata[1091] */ + { 546, 0x0000000000000000ULL, 0xE9C08E1B73912007ULL }, /* XSUM_XXH64_testdata[1092] */ + { 546, 0x000000009E3779B1ULL, 0x7B172914DFC09111ULL }, /* XSUM_XXH64_testdata[1093] */ + { 547, 0x0000000000000000ULL, 0x75510DA9593070E1ULL }, /* XSUM_XXH64_testdata[1094] */ + { 547, 0x000000009E3779B1ULL, 0x41964CCFD38F3137ULL }, /* XSUM_XXH64_testdata[1095] */ + { 548, 0x0000000000000000ULL, 0x1677E77B436F885CULL }, /* XSUM_XXH64_testdata[1096] */ + { 548, 0x000000009E3779B1ULL, 0xAA706D5BF3D8D95FULL }, /* XSUM_XXH64_testdata[1097] */ + { 549, 0x0000000000000000ULL, 0x1A9F3999C9E39344ULL }, /* XSUM_XXH64_testdata[1098] */ + { 549, 0x000000009E3779B1ULL, 0x9F68FF0B00AE68F2ULL }, /* XSUM_XXH64_testdata[1099] */ + { 550, 0x0000000000000000ULL, 0x9D2016D72904F805ULL }, /* XSUM_XXH64_testdata[1100] */ + { 550, 0x000000009E3779B1ULL, 0x0141F8BC73F52A90ULL }, /* XSUM_XXH64_testdata[1101] */ + { 551, 0x0000000000000000ULL, 0x5CF03DF3A2F5D357ULL }, /* XSUM_XXH64_testdata[1102] */ + { 551, 0x000000009E3779B1ULL, 0x559C544C2056D112ULL }, /* XSUM_XXH64_testdata[1103] */ + { 552, 0x0000000000000000ULL, 0x01A97348A8EE6F91ULL }, /* XSUM_XXH64_testdata[1104] */ + { 552, 0x000000009E3779B1ULL, 0xE3AEC5D553649427ULL }, /* XSUM_XXH64_testdata[1105] */ + { 553, 0x0000000000000000ULL, 0x3F522FF45232CF2EULL }, /* XSUM_XXH64_testdata[1106] */ + { 553, 0x000000009E3779B1ULL, 0x34503F23E309AFAFULL }, /* XSUM_XXH64_testdata[1107] */ + { 554, 0x0000000000000000ULL, 0xA18266734BEE9F94ULL }, /* XSUM_XXH64_testdata[1108] */ + { 554, 0x000000009E3779B1ULL, 0x3D24F99B1E3B76D8ULL }, /* XSUM_XXH64_testdata[1109] */ + { 555, 0x0000000000000000ULL, 0xA0717DFB4A3B8E1EULL }, /* XSUM_XXH64_testdata[1110] */ + { 555, 0x000000009E3779B1ULL, 0xEEE4A23C2D8F50EFULL }, /* XSUM_XXH64_testdata[1111] */ + { 556, 0x0000000000000000ULL, 0x7F0F85DD67193185ULL }, /* XSUM_XXH64_testdata[1112] */ + { 556, 0x000000009E3779B1ULL, 0xDB42BAEA785B2CB9ULL }, /* XSUM_XXH64_testdata[1113] */ + { 557, 0x0000000000000000ULL, 0x56A244A82BC8FBB4ULL }, /* XSUM_XXH64_testdata[1114] */ + { 557, 0x000000009E3779B1ULL, 0x7D0F150511B37485ULL }, /* XSUM_XXH64_testdata[1115] */ + { 558, 0x0000000000000000ULL, 0x4E45075F05021681ULL }, /* XSUM_XXH64_testdata[1116] */ + { 558, 0x000000009E3779B1ULL, 0x036D48A8992DB51EULL }, /* XSUM_XXH64_testdata[1117] */ + { 559, 0x0000000000000000ULL, 0x5A9F9E3AD472B0DBULL }, /* XSUM_XXH64_testdata[1118] */ + { 559, 0x000000009E3779B1ULL, 0x65ACD2DF8EE4A20AULL }, /* XSUM_XXH64_testdata[1119] */ + { 560, 0x0000000000000000ULL, 0xDB6966B993245525ULL }, /* XSUM_XXH64_testdata[1120] */ + { 560, 0x000000009E3779B1ULL, 0x9DCE7E5C13232340ULL }, /* XSUM_XXH64_testdata[1121] */ + { 561, 0x0000000000000000ULL, 0xAD93CA30948BDB63ULL }, /* XSUM_XXH64_testdata[1122] */ + { 561, 0x000000009E3779B1ULL, 0xEEF7F0283AA720D3ULL }, /* XSUM_XXH64_testdata[1123] */ + { 562, 0x0000000000000000ULL, 0xE43B35E92AF3AED6ULL }, /* XSUM_XXH64_testdata[1124] */ + { 562, 0x000000009E3779B1ULL, 0xCF95BF0F3A88C074ULL }, /* XSUM_XXH64_testdata[1125] */ + { 563, 0x0000000000000000ULL, 0x8D5DC0F3EB4873F9ULL }, /* XSUM_XXH64_testdata[1126] */ + { 563, 0x000000009E3779B1ULL, 0x45754281C1FD99F2ULL }, /* XSUM_XXH64_testdata[1127] */ + { 564, 0x0000000000000000ULL, 0x6A293EBAB01624BCULL }, /* XSUM_XXH64_testdata[1128] */ + { 564, 0x000000009E3779B1ULL, 0xC0FFC55AEE6317FAULL }, /* XSUM_XXH64_testdata[1129] */ + { 565, 0x0000000000000000ULL, 0x04741407F8BBB92FULL }, /* XSUM_XXH64_testdata[1130] */ + { 565, 0x000000009E3779B1ULL, 0x5899532191106E6EULL }, /* XSUM_XXH64_testdata[1131] */ + { 566, 0x0000000000000000ULL, 0x9D090CF34641EA52ULL }, /* XSUM_XXH64_testdata[1132] */ + { 566, 0x000000009E3779B1ULL, 0x4C746EC3F55074D9ULL }, /* XSUM_XXH64_testdata[1133] */ + { 567, 0x0000000000000000ULL, 0x0955E5CEEA8A41C1ULL }, /* XSUM_XXH64_testdata[1134] */ + { 567, 0x000000009E3779B1ULL, 0xE976A4DD31668716ULL }, /* XSUM_XXH64_testdata[1135] */ + { 568, 0x0000000000000000ULL, 0x7E5B64DDD4B51173ULL }, /* XSUM_XXH64_testdata[1136] */ + { 568, 0x000000009E3779B1ULL, 0xB346F41C71BE5806ULL }, /* XSUM_XXH64_testdata[1137] */ + { 569, 0x0000000000000000ULL, 0xCCE1D2AA0FC3A229ULL }, /* XSUM_XXH64_testdata[1138] */ + { 569, 0x000000009E3779B1ULL, 0x94EDCA9E6CE6743AULL }, /* XSUM_XXH64_testdata[1139] */ + { 570, 0x0000000000000000ULL, 0xB8705873FE1AEB54ULL }, /* XSUM_XXH64_testdata[1140] */ + { 570, 0x000000009E3779B1ULL, 0xEA45C5C50E85D3B7ULL }, /* XSUM_XXH64_testdata[1141] */ + { 571, 0x0000000000000000ULL, 0x0DABE51C143E792AULL }, /* XSUM_XXH64_testdata[1142] */ + { 571, 0x000000009E3779B1ULL, 0x1C56D10D1F87A8B0ULL }, /* XSUM_XXH64_testdata[1143] */ + { 572, 0x0000000000000000ULL, 0x4AD363C1BC6EC5E1ULL }, /* XSUM_XXH64_testdata[1144] */ + { 572, 0x000000009E3779B1ULL, 0xCE9FC944B8F09C8DULL }, /* XSUM_XXH64_testdata[1145] */ + { 573, 0x0000000000000000ULL, 0x75FB48E97E37D8B8ULL }, /* XSUM_XXH64_testdata[1146] */ + { 573, 0x000000009E3779B1ULL, 0x6BB43FB17FC5B762ULL }, /* XSUM_XXH64_testdata[1147] */ + { 574, 0x0000000000000000ULL, 0xB3D328EB50D0CCF5ULL }, /* XSUM_XXH64_testdata[1148] */ + { 574, 0x000000009E3779B1ULL, 0x035E5DC924C3C493ULL }, /* XSUM_XXH64_testdata[1149] */ + { 575, 0x0000000000000000ULL, 0x31420D29B1218EE8ULL }, /* XSUM_XXH64_testdata[1150] */ + { 575, 0x000000009E3779B1ULL, 0x277A0972E51FEAE4ULL }, /* XSUM_XXH64_testdata[1151] */ + { 576, 0x0000000000000000ULL, 0x9A82A3688076DCA1ULL }, /* XSUM_XXH64_testdata[1152] */ + { 576, 0x000000009E3779B1ULL, 0xA26BA461FC9451F1ULL }, /* XSUM_XXH64_testdata[1153] */ + { 577, 0x0000000000000000ULL, 0xCD1C01B9E3F1FA6FULL }, /* XSUM_XXH64_testdata[1154] */ + { 577, 0x000000009E3779B1ULL, 0xD9CE5187CF5048DDULL }, /* XSUM_XXH64_testdata[1155] */ + { 578, 0x0000000000000000ULL, 0xDE91D2575FDAB0DBULL }, /* XSUM_XXH64_testdata[1156] */ + { 578, 0x000000009E3779B1ULL, 0x61B5D02A3741CFC2ULL }, /* XSUM_XXH64_testdata[1157] */ + { 579, 0x0000000000000000ULL, 0xB54C7DB3BB30256CULL }, /* XSUM_XXH64_testdata[1158] */ + { 579, 0x000000009E3779B1ULL, 0xA6689FBB8F816805ULL }, /* XSUM_XXH64_testdata[1159] */ + { 580, 0x0000000000000000ULL, 0x23530C044B342D2EULL }, /* XSUM_XXH64_testdata[1160] */ + { 580, 0x000000009E3779B1ULL, 0x5FC0A8196624DB66ULL }, /* XSUM_XXH64_testdata[1161] */ + { 581, 0x0000000000000000ULL, 0x839FB2088E05923FULL }, /* XSUM_XXH64_testdata[1162] */ + { 581, 0x000000009E3779B1ULL, 0xD6FE4112CBF7C688ULL }, /* XSUM_XXH64_testdata[1163] */ + { 582, 0x0000000000000000ULL, 0x677D89AEFB86101EULL }, /* XSUM_XXH64_testdata[1164] */ + { 582, 0x000000009E3779B1ULL, 0xFF958987E17A9409ULL }, /* XSUM_XXH64_testdata[1165] */ + { 583, 0x0000000000000000ULL, 0xDADE9284EBA56704ULL }, /* XSUM_XXH64_testdata[1166] */ + { 583, 0x000000009E3779B1ULL, 0x739B92BAF2F89A1FULL }, /* XSUM_XXH64_testdata[1167] */ + { 584, 0x0000000000000000ULL, 0x57209EFE0BAED0A7ULL }, /* XSUM_XXH64_testdata[1168] */ + { 584, 0x000000009E3779B1ULL, 0x68C502B2E4B75E2FULL }, /* XSUM_XXH64_testdata[1169] */ + { 585, 0x0000000000000000ULL, 0x0824099ACA7DEF3AULL }, /* XSUM_XXH64_testdata[1170] */ + { 585, 0x000000009E3779B1ULL, 0x31FBE2758EA5B59DULL }, /* XSUM_XXH64_testdata[1171] */ + { 586, 0x0000000000000000ULL, 0x2132D0949E6F7FDFULL }, /* XSUM_XXH64_testdata[1172] */ + { 586, 0x000000009E3779B1ULL, 0x625DB41B865B407DULL }, /* XSUM_XXH64_testdata[1173] */ + { 587, 0x0000000000000000ULL, 0x0E4746C2D50D5917ULL }, /* XSUM_XXH64_testdata[1174] */ + { 587, 0x000000009E3779B1ULL, 0x6DD623628AAC1761ULL }, /* XSUM_XXH64_testdata[1175] */ + { 588, 0x0000000000000000ULL, 0x77E3B32584EC50B4ULL }, /* XSUM_XXH64_testdata[1176] */ + { 588, 0x000000009E3779B1ULL, 0x69BE02B1BD3E7D37ULL }, /* XSUM_XXH64_testdata[1177] */ + { 589, 0x0000000000000000ULL, 0x3211124140F15B9DULL }, /* XSUM_XXH64_testdata[1178] */ + { 589, 0x000000009E3779B1ULL, 0x22EF084D2775F861ULL }, /* XSUM_XXH64_testdata[1179] */ + { 590, 0x0000000000000000ULL, 0xB4FA8435F567A322ULL }, /* XSUM_XXH64_testdata[1180] */ + { 590, 0x000000009E3779B1ULL, 0x21555016402E2716ULL }, /* XSUM_XXH64_testdata[1181] */ + { 591, 0x0000000000000000ULL, 0x3818FA95FE7ACB51ULL }, /* XSUM_XXH64_testdata[1182] */ + { 591, 0x000000009E3779B1ULL, 0x0E3BECB4E1C24C8BULL }, /* XSUM_XXH64_testdata[1183] */ + { 592, 0x0000000000000000ULL, 0x028C1C95C8857B29ULL }, /* XSUM_XXH64_testdata[1184] */ + { 592, 0x000000009E3779B1ULL, 0xBD7D4EFBF0828800ULL }, /* XSUM_XXH64_testdata[1185] */ + { 593, 0x0000000000000000ULL, 0x13C771779493B733ULL }, /* XSUM_XXH64_testdata[1186] */ + { 593, 0x000000009E3779B1ULL, 0x1018A1A348C8529CULL }, /* XSUM_XXH64_testdata[1187] */ + { 594, 0x0000000000000000ULL, 0xCDEBCA2E7F9D61E2ULL }, /* XSUM_XXH64_testdata[1188] */ + { 594, 0x000000009E3779B1ULL, 0x8309751820BD5BD3ULL }, /* XSUM_XXH64_testdata[1189] */ + { 595, 0x0000000000000000ULL, 0xE5478C3566BAB476ULL }, /* XSUM_XXH64_testdata[1190] */ + { 595, 0x000000009E3779B1ULL, 0x2BF32F50757E7FC1ULL }, /* XSUM_XXH64_testdata[1191] */ + { 596, 0x0000000000000000ULL, 0xF06A6CF2E8013156ULL }, /* XSUM_XXH64_testdata[1192] */ + { 596, 0x000000009E3779B1ULL, 0xBEF2B245D5C55DCCULL }, /* XSUM_XXH64_testdata[1193] */ + { 597, 0x0000000000000000ULL, 0x266F81CA0C23969BULL }, /* XSUM_XXH64_testdata[1194] */ + { 597, 0x000000009E3779B1ULL, 0x43642EFFD2FF7FEBULL }, /* XSUM_XXH64_testdata[1195] */ + { 598, 0x0000000000000000ULL, 0xA1BF901879F23F2AULL }, /* XSUM_XXH64_testdata[1196] */ + { 598, 0x000000009E3779B1ULL, 0xD3B509D517D12EC2ULL }, /* XSUM_XXH64_testdata[1197] */ + { 599, 0x0000000000000000ULL, 0x7C28CEDF6719474CULL }, /* XSUM_XXH64_testdata[1198] */ + { 599, 0x000000009E3779B1ULL, 0x6C5EAF85A7EC336AULL }, /* XSUM_XXH64_testdata[1199] */ + { 600, 0x0000000000000000ULL, 0x4CF9BF91EEB83F5EULL }, /* XSUM_XXH64_testdata[1200] */ + { 600, 0x000000009E3779B1ULL, 0x8EB951D069F91173ULL }, /* XSUM_XXH64_testdata[1201] */ + { 601, 0x0000000000000000ULL, 0x76E4539EA0EC590AULL }, /* XSUM_XXH64_testdata[1202] */ + { 601, 0x000000009E3779B1ULL, 0x22D996A8C929BE36ULL }, /* XSUM_XXH64_testdata[1203] */ + { 602, 0x0000000000000000ULL, 0x6FC0470B9D6EF4BEULL }, /* XSUM_XXH64_testdata[1204] */ + { 602, 0x000000009E3779B1ULL, 0x732C159EF613A0AAULL }, /* XSUM_XXH64_testdata[1205] */ + { 603, 0x0000000000000000ULL, 0xDDE052EA3BE2DACBULL }, /* XSUM_XXH64_testdata[1206] */ + { 603, 0x000000009E3779B1ULL, 0xCD49648FB4255D9DULL }, /* XSUM_XXH64_testdata[1207] */ + { 604, 0x0000000000000000ULL, 0xC90718CBA116E8EBULL }, /* XSUM_XXH64_testdata[1208] */ + { 604, 0x000000009E3779B1ULL, 0x10D6EC864F249926ULL }, /* XSUM_XXH64_testdata[1209] */ + { 605, 0x0000000000000000ULL, 0x1D58456BD464E73BULL }, /* XSUM_XXH64_testdata[1210] */ + { 605, 0x000000009E3779B1ULL, 0x4E90CC7890B43AAFULL }, /* XSUM_XXH64_testdata[1211] */ + { 606, 0x0000000000000000ULL, 0x597B6B3D90474AF9ULL }, /* XSUM_XXH64_testdata[1212] */ + { 606, 0x000000009E3779B1ULL, 0xF194718DA7019B29ULL }, /* XSUM_XXH64_testdata[1213] */ + { 607, 0x0000000000000000ULL, 0x33FCE41AECD21B33ULL }, /* XSUM_XXH64_testdata[1214] */ + { 607, 0x000000009E3779B1ULL, 0x43A2FA652A93584FULL }, /* XSUM_XXH64_testdata[1215] */ + { 608, 0x0000000000000000ULL, 0x2C0D59728FC01D2DULL }, /* XSUM_XXH64_testdata[1216] */ + { 608, 0x000000009E3779B1ULL, 0x44658B1996C7C0BDULL }, /* XSUM_XXH64_testdata[1217] */ + { 609, 0x0000000000000000ULL, 0xC7F6D6C4F5DC29E2ULL }, /* XSUM_XXH64_testdata[1218] */ + { 609, 0x000000009E3779B1ULL, 0xEED87EFF534007FFULL }, /* XSUM_XXH64_testdata[1219] */ + { 610, 0x0000000000000000ULL, 0x9AFB66E22BB9905FULL }, /* XSUM_XXH64_testdata[1220] */ + { 610, 0x000000009E3779B1ULL, 0xE106E1D712DD0192ULL }, /* XSUM_XXH64_testdata[1221] */ + { 611, 0x0000000000000000ULL, 0xF6B2DF840401FA0AULL }, /* XSUM_XXH64_testdata[1222] */ + { 611, 0x000000009E3779B1ULL, 0xA28BFC4E5702604BULL }, /* XSUM_XXH64_testdata[1223] */ + { 612, 0x0000000000000000ULL, 0xC8162570DC9FD003ULL }, /* XSUM_XXH64_testdata[1224] */ + { 612, 0x000000009E3779B1ULL, 0xA3E7D200D05B2D62ULL }, /* XSUM_XXH64_testdata[1225] */ + { 613, 0x0000000000000000ULL, 0x0286AC3D8F903D14ULL }, /* XSUM_XXH64_testdata[1226] */ + { 613, 0x000000009E3779B1ULL, 0xA33D10BDF53F315FULL }, /* XSUM_XXH64_testdata[1227] */ + { 614, 0x0000000000000000ULL, 0xBFF52353CB1757B4ULL }, /* XSUM_XXH64_testdata[1228] */ + { 614, 0x000000009E3779B1ULL, 0x86A97CDCA9B5A477ULL }, /* XSUM_XXH64_testdata[1229] */ + { 615, 0x0000000000000000ULL, 0x48B8C108F7D13A60ULL }, /* XSUM_XXH64_testdata[1230] */ + { 615, 0x000000009E3779B1ULL, 0xE25292046D57587AULL }, /* XSUM_XXH64_testdata[1231] */ + { 616, 0x0000000000000000ULL, 0x91D2D038C70D3A71ULL }, /* XSUM_XXH64_testdata[1232] */ + { 616, 0x000000009E3779B1ULL, 0x3E83FEBD509A00F4ULL }, /* XSUM_XXH64_testdata[1233] */ + { 617, 0x0000000000000000ULL, 0xCCB0593427579E67ULL }, /* XSUM_XXH64_testdata[1234] */ + { 617, 0x000000009E3779B1ULL, 0x13666E020DA9824EULL }, /* XSUM_XXH64_testdata[1235] */ + { 618, 0x0000000000000000ULL, 0x19ED6CED369FD9A3ULL }, /* XSUM_XXH64_testdata[1236] */ + { 618, 0x000000009E3779B1ULL, 0xFBDBF98D38F54A6DULL }, /* XSUM_XXH64_testdata[1237] */ + { 619, 0x0000000000000000ULL, 0xCBAB11A3AB6AF17BULL }, /* XSUM_XXH64_testdata[1238] */ + { 619, 0x000000009E3779B1ULL, 0x3ED046C76C444D61ULL }, /* XSUM_XXH64_testdata[1239] */ + { 620, 0x0000000000000000ULL, 0x5BD2185552367428ULL }, /* XSUM_XXH64_testdata[1240] */ + { 620, 0x000000009E3779B1ULL, 0xA2F581AE68859F21ULL }, /* XSUM_XXH64_testdata[1241] */ + { 621, 0x0000000000000000ULL, 0x47C5D42249D5D9B2ULL }, /* XSUM_XXH64_testdata[1242] */ + { 621, 0x000000009E3779B1ULL, 0x5D6F07C76B82CCC5ULL }, /* XSUM_XXH64_testdata[1243] */ + { 622, 0x0000000000000000ULL, 0x28488E1E8D7C584FULL }, /* XSUM_XXH64_testdata[1244] */ + { 622, 0x000000009E3779B1ULL, 0xABEEE1826D2B7A8BULL }, /* XSUM_XXH64_testdata[1245] */ + { 623, 0x0000000000000000ULL, 0xA55B551214AC23E0ULL }, /* XSUM_XXH64_testdata[1246] */ + { 623, 0x000000009E3779B1ULL, 0x688F5CD0E04C6158ULL }, /* XSUM_XXH64_testdata[1247] */ + { 624, 0x0000000000000000ULL, 0xAEB650EBD621F387ULL }, /* XSUM_XXH64_testdata[1248] */ + { 624, 0x000000009E3779B1ULL, 0x33B2FE54265F02CFULL }, /* XSUM_XXH64_testdata[1249] */ + { 625, 0x0000000000000000ULL, 0x897A1A0D4829023CULL }, /* XSUM_XXH64_testdata[1250] */ + { 625, 0x000000009E3779B1ULL, 0x6683A75899BE3D91ULL }, /* XSUM_XXH64_testdata[1251] */ + { 626, 0x0000000000000000ULL, 0x04884E809EB22519ULL }, /* XSUM_XXH64_testdata[1252] */ + { 626, 0x000000009E3779B1ULL, 0x80BFEB79D9034898ULL }, /* XSUM_XXH64_testdata[1253] */ + { 627, 0x0000000000000000ULL, 0xDC7E98BD10C22E76ULL }, /* XSUM_XXH64_testdata[1254] */ + { 627, 0x000000009E3779B1ULL, 0x1E634DBF400D8600ULL }, /* XSUM_XXH64_testdata[1255] */ + { 628, 0x0000000000000000ULL, 0x1E7241D5A438AFABULL }, /* XSUM_XXH64_testdata[1256] */ + { 628, 0x000000009E3779B1ULL, 0xADEFCEE39DE12098ULL }, /* XSUM_XXH64_testdata[1257] */ + { 629, 0x0000000000000000ULL, 0xD61E28979B7A48A1ULL }, /* XSUM_XXH64_testdata[1258] */ + { 629, 0x000000009E3779B1ULL, 0x445F302C5BD6ED7AULL }, /* XSUM_XXH64_testdata[1259] */ + { 630, 0x0000000000000000ULL, 0xF8260CCD2AC544A4ULL }, /* XSUM_XXH64_testdata[1260] */ + { 630, 0x000000009E3779B1ULL, 0x9EC84ADBE50F237DULL }, /* XSUM_XXH64_testdata[1261] */ + { 631, 0x0000000000000000ULL, 0xE6AA30BF55D14345ULL }, /* XSUM_XXH64_testdata[1262] */ + { 631, 0x000000009E3779B1ULL, 0x67C96B811EF88722ULL }, /* XSUM_XXH64_testdata[1263] */ + { 632, 0x0000000000000000ULL, 0x649255ED735C6898ULL }, /* XSUM_XXH64_testdata[1264] */ + { 632, 0x000000009E3779B1ULL, 0x943C3B50B2F484B4ULL }, /* XSUM_XXH64_testdata[1265] */ + { 633, 0x0000000000000000ULL, 0xCF71E354BD84268CULL }, /* XSUM_XXH64_testdata[1266] */ + { 633, 0x000000009E3779B1ULL, 0xAF7DF853CDB8079DULL }, /* XSUM_XXH64_testdata[1267] */ + { 634, 0x0000000000000000ULL, 0x46D4D303191EE5B0ULL }, /* XSUM_XXH64_testdata[1268] */ + { 634, 0x000000009E3779B1ULL, 0xB609739F92C47F52ULL }, /* XSUM_XXH64_testdata[1269] */ + { 635, 0x0000000000000000ULL, 0x1C9F320B91A6BB9EULL }, /* XSUM_XXH64_testdata[1270] */ + { 635, 0x000000009E3779B1ULL, 0xA12B660719BE10E3ULL }, /* XSUM_XXH64_testdata[1271] */ + { 636, 0x0000000000000000ULL, 0x26AC22CAE7CF5B0CULL }, /* XSUM_XXH64_testdata[1272] */ + { 636, 0x000000009E3779B1ULL, 0xD9C080A364645562ULL }, /* XSUM_XXH64_testdata[1273] */ + { 637, 0x0000000000000000ULL, 0xBCD103BB91439585ULL }, /* XSUM_XXH64_testdata[1274] */ + { 637, 0x000000009E3779B1ULL, 0xAD2616E969EDA0EFULL }, /* XSUM_XXH64_testdata[1275] */ + { 638, 0x0000000000000000ULL, 0xB1D101AC570CF57EULL }, /* XSUM_XXH64_testdata[1276] */ + { 638, 0x000000009E3779B1ULL, 0xA0F62D7CBDFFD19CULL }, /* XSUM_XXH64_testdata[1277] */ + { 639, 0x0000000000000000ULL, 0x7B534B7165B57FD2ULL }, /* XSUM_XXH64_testdata[1278] */ + { 639, 0x000000009E3779B1ULL, 0x436F1881A21AE883ULL }, /* XSUM_XXH64_testdata[1279] */ + { 640, 0x0000000000000000ULL, 0x05FF3E1DB4BB4690ULL }, /* XSUM_XXH64_testdata[1280] */ + { 640, 0x000000009E3779B1ULL, 0xF03DB7272A4E48BCULL }, /* XSUM_XXH64_testdata[1281] */ + { 641, 0x0000000000000000ULL, 0xA29AA8B123F0C7F1ULL }, /* XSUM_XXH64_testdata[1282] */ + { 641, 0x000000009E3779B1ULL, 0x2B2A53BDE1F1B6F1ULL }, /* XSUM_XXH64_testdata[1283] */ + { 642, 0x0000000000000000ULL, 0x4A2ACEC0CBF88F2BULL }, /* XSUM_XXH64_testdata[1284] */ + { 642, 0x000000009E3779B1ULL, 0x01B05DE3AB4B6341ULL }, /* XSUM_XXH64_testdata[1285] */ + { 643, 0x0000000000000000ULL, 0x56CB71243229B81AULL }, /* XSUM_XXH64_testdata[1286] */ + { 643, 0x000000009E3779B1ULL, 0x827F91416F18F758ULL }, /* XSUM_XXH64_testdata[1287] */ + { 644, 0x0000000000000000ULL, 0x59535655F5B6529FULL }, /* XSUM_XXH64_testdata[1288] */ + { 644, 0x000000009E3779B1ULL, 0x8B72B8ACC3F15BB2ULL }, /* XSUM_XXH64_testdata[1289] */ + { 645, 0x0000000000000000ULL, 0x19163BB1ACEBC103ULL }, /* XSUM_XXH64_testdata[1290] */ + { 645, 0x000000009E3779B1ULL, 0x84C375B214BB34A2ULL }, /* XSUM_XXH64_testdata[1291] */ + { 646, 0x0000000000000000ULL, 0x431590E65CE3BBE9ULL }, /* XSUM_XXH64_testdata[1292] */ + { 646, 0x000000009E3779B1ULL, 0xA93010265389DB3AULL }, /* XSUM_XXH64_testdata[1293] */ + { 647, 0x0000000000000000ULL, 0x55A15D30750F36CAULL }, /* XSUM_XXH64_testdata[1294] */ + { 647, 0x000000009E3779B1ULL, 0x350FE3E8E02421DFULL }, /* XSUM_XXH64_testdata[1295] */ + { 648, 0x0000000000000000ULL, 0x2D05962C50F073CBULL }, /* XSUM_XXH64_testdata[1296] */ + { 648, 0x000000009E3779B1ULL, 0x067196515DD251BAULL }, /* XSUM_XXH64_testdata[1297] */ + { 649, 0x0000000000000000ULL, 0xF72F7CCCF5391A99ULL }, /* XSUM_XXH64_testdata[1298] */ + { 649, 0x000000009E3779B1ULL, 0x6047D16A8BC7DCCAULL }, /* XSUM_XXH64_testdata[1299] */ + { 650, 0x0000000000000000ULL, 0x471707CBCF6299A1ULL }, /* XSUM_XXH64_testdata[1300] */ + { 650, 0x000000009E3779B1ULL, 0x8A929579D2BED71EULL }, /* XSUM_XXH64_testdata[1301] */ + { 651, 0x0000000000000000ULL, 0xECA5BBC4C934388AULL }, /* XSUM_XXH64_testdata[1302] */ + { 651, 0x000000009E3779B1ULL, 0x26713BCB28E26A79ULL }, /* XSUM_XXH64_testdata[1303] */ + { 652, 0x0000000000000000ULL, 0xB4772705B6696A70ULL }, /* XSUM_XXH64_testdata[1304] */ + { 652, 0x000000009E3779B1ULL, 0xB3784B97F8AC34F5ULL }, /* XSUM_XXH64_testdata[1305] */ + { 653, 0x0000000000000000ULL, 0x814AAD0468A8B2EFULL }, /* XSUM_XXH64_testdata[1306] */ + { 653, 0x000000009E3779B1ULL, 0x4D1AA4C88DD2F9FDULL }, /* XSUM_XXH64_testdata[1307] */ + { 654, 0x0000000000000000ULL, 0xE553302216B85C57ULL }, /* XSUM_XXH64_testdata[1308] */ + { 654, 0x000000009E3779B1ULL, 0x369F72F1FB7D7B94ULL }, /* XSUM_XXH64_testdata[1309] */ + { 655, 0x0000000000000000ULL, 0x70081023630B7CF1ULL }, /* XSUM_XXH64_testdata[1310] */ + { 655, 0x000000009E3779B1ULL, 0x6CFAFD089A4295E9ULL }, /* XSUM_XXH64_testdata[1311] */ + { 656, 0x0000000000000000ULL, 0x03DC7B218DF637FDULL }, /* XSUM_XXH64_testdata[1312] */ + { 656, 0x000000009E3779B1ULL, 0xFD697A1126BB52AEULL }, /* XSUM_XXH64_testdata[1313] */ + { 657, 0x0000000000000000ULL, 0xF57606558F42A829ULL }, /* XSUM_XXH64_testdata[1314] */ + { 657, 0x000000009E3779B1ULL, 0xD0704822BBF6FCFAULL }, /* XSUM_XXH64_testdata[1315] */ + { 658, 0x0000000000000000ULL, 0xDD9B01EA7E6EC4E4ULL }, /* XSUM_XXH64_testdata[1316] */ + { 658, 0x000000009E3779B1ULL, 0x7EE41C884D6306A7ULL }, /* XSUM_XXH64_testdata[1317] */ + { 659, 0x0000000000000000ULL, 0x57C8B061FA3665FEULL }, /* XSUM_XXH64_testdata[1318] */ + { 659, 0x000000009E3779B1ULL, 0xF40AB81323746F5AULL }, /* XSUM_XXH64_testdata[1319] */ + { 660, 0x0000000000000000ULL, 0xE02D3157266D7735ULL }, /* XSUM_XXH64_testdata[1320] */ + { 660, 0x000000009E3779B1ULL, 0x5EC929E844079B91ULL }, /* XSUM_XXH64_testdata[1321] */ + { 661, 0x0000000000000000ULL, 0x3CAA66663E9CFD4AULL }, /* XSUM_XXH64_testdata[1322] */ + { 661, 0x000000009E3779B1ULL, 0xF95ED3862F7671BEULL }, /* XSUM_XXH64_testdata[1323] */ + { 662, 0x0000000000000000ULL, 0xE5B2C7FAB00FB483ULL }, /* XSUM_XXH64_testdata[1324] */ + { 662, 0x000000009E3779B1ULL, 0x296B751149F59309ULL }, /* XSUM_XXH64_testdata[1325] */ + { 663, 0x0000000000000000ULL, 0xD6B2C560C538FB20ULL }, /* XSUM_XXH64_testdata[1326] */ + { 663, 0x000000009E3779B1ULL, 0x95F844EFCBB88297ULL }, /* XSUM_XXH64_testdata[1327] */ + { 664, 0x0000000000000000ULL, 0x2F3AB5ED460D5A41ULL }, /* XSUM_XXH64_testdata[1328] */ + { 664, 0x000000009E3779B1ULL, 0x38B74AA4AB2849DDULL }, /* XSUM_XXH64_testdata[1329] */ + { 665, 0x0000000000000000ULL, 0x8EDDAD24C85225B3ULL }, /* XSUM_XXH64_testdata[1330] */ + { 665, 0x000000009E3779B1ULL, 0x31A63232E799EF65ULL }, /* XSUM_XXH64_testdata[1331] */ + { 666, 0x0000000000000000ULL, 0x2281EA033306A216ULL }, /* XSUM_XXH64_testdata[1332] */ + { 666, 0x000000009E3779B1ULL, 0xD6EE53C2002531F5ULL }, /* XSUM_XXH64_testdata[1333] */ + { 667, 0x0000000000000000ULL, 0xC48A2E048533D300ULL }, /* XSUM_XXH64_testdata[1334] */ + { 667, 0x000000009E3779B1ULL, 0x4372C9C6DD4EC657ULL }, /* XSUM_XXH64_testdata[1335] */ + { 668, 0x0000000000000000ULL, 0x192DB67E9199A52EULL }, /* XSUM_XXH64_testdata[1336] */ + { 668, 0x000000009E3779B1ULL, 0x0FE34901633955EBULL }, /* XSUM_XXH64_testdata[1337] */ + { 669, 0x0000000000000000ULL, 0xE90A5997740C4248ULL }, /* XSUM_XXH64_testdata[1338] */ + { 669, 0x000000009E3779B1ULL, 0x076611986F06BB7BULL }, /* XSUM_XXH64_testdata[1339] */ + { 670, 0x0000000000000000ULL, 0x51E21FF885EE405BULL }, /* XSUM_XXH64_testdata[1340] */ + { 670, 0x000000009E3779B1ULL, 0x49B0128D84D9EFDBULL }, /* XSUM_XXH64_testdata[1341] */ + { 671, 0x0000000000000000ULL, 0xC5FDFD16766CAD4FULL }, /* XSUM_XXH64_testdata[1342] */ + { 671, 0x000000009E3779B1ULL, 0x0B0C59B2630F465AULL }, /* XSUM_XXH64_testdata[1343] */ + { 672, 0x0000000000000000ULL, 0x1BE3A090C1434100ULL }, /* XSUM_XXH64_testdata[1344] */ + { 672, 0x000000009E3779B1ULL, 0x845A616FF80C3155ULL }, /* XSUM_XXH64_testdata[1345] */ + { 673, 0x0000000000000000ULL, 0x490401AA5582784CULL }, /* XSUM_XXH64_testdata[1346] */ + { 673, 0x000000009E3779B1ULL, 0x0E9BE22886BD6FC4ULL }, /* XSUM_XXH64_testdata[1347] */ + { 674, 0x0000000000000000ULL, 0x0B104279E4777227ULL }, /* XSUM_XXH64_testdata[1348] */ + { 674, 0x000000009E3779B1ULL, 0xE153FD5F3A568AB9ULL }, /* XSUM_XXH64_testdata[1349] */ + { 675, 0x0000000000000000ULL, 0x7A1B59E94AD0BD16ULL }, /* XSUM_XXH64_testdata[1350] */ + { 675, 0x000000009E3779B1ULL, 0xAA176933FF6DC264ULL }, /* XSUM_XXH64_testdata[1351] */ + { 676, 0x0000000000000000ULL, 0xCBE6FA0E2978808AULL }, /* XSUM_XXH64_testdata[1352] */ + { 676, 0x000000009E3779B1ULL, 0xA6746B4110BC5B8EULL }, /* XSUM_XXH64_testdata[1353] */ + { 677, 0x0000000000000000ULL, 0x2AF1F2BAA896BF3FULL }, /* XSUM_XXH64_testdata[1354] */ + { 677, 0x000000009E3779B1ULL, 0x1CDC19AA2BB2BFA1ULL }, /* XSUM_XXH64_testdata[1355] */ + { 678, 0x0000000000000000ULL, 0xCF271A2B03E29283ULL }, /* XSUM_XXH64_testdata[1356] */ + { 678, 0x000000009E3779B1ULL, 0xF60C189AA7559BD8ULL }, /* XSUM_XXH64_testdata[1357] */ + { 679, 0x0000000000000000ULL, 0xB23EDF020B943EA0ULL }, /* XSUM_XXH64_testdata[1358] */ + { 679, 0x000000009E3779B1ULL, 0x5425739195F5C00CULL }, /* XSUM_XXH64_testdata[1359] */ + { 680, 0x0000000000000000ULL, 0xDA85E4B3126B21DBULL }, /* XSUM_XXH64_testdata[1360] */ + { 680, 0x000000009E3779B1ULL, 0xD3665DDE6B323975ULL }, /* XSUM_XXH64_testdata[1361] */ + { 681, 0x0000000000000000ULL, 0xB96F22C931B7A78BULL }, /* XSUM_XXH64_testdata[1362] */ + { 681, 0x000000009E3779B1ULL, 0x737917FC9F3DFDBEULL }, /* XSUM_XXH64_testdata[1363] */ + { 682, 0x0000000000000000ULL, 0x23D788241F7C70F4ULL }, /* XSUM_XXH64_testdata[1364] */ + { 682, 0x000000009E3779B1ULL, 0x4609B4CED6A47DE3ULL }, /* XSUM_XXH64_testdata[1365] */ + { 683, 0x0000000000000000ULL, 0x495242859DB54586ULL }, /* XSUM_XXH64_testdata[1366] */ + { 683, 0x000000009E3779B1ULL, 0x29120312D672CDD9ULL }, /* XSUM_XXH64_testdata[1367] */ + { 684, 0x0000000000000000ULL, 0x5BE5B8806940EBB1ULL }, /* XSUM_XXH64_testdata[1368] */ + { 684, 0x000000009E3779B1ULL, 0xF58F2D336C043805ULL }, /* XSUM_XXH64_testdata[1369] */ + { 685, 0x0000000000000000ULL, 0x4E2DCB4DF2BA078CULL }, /* XSUM_XXH64_testdata[1370] */ + { 685, 0x000000009E3779B1ULL, 0x6BEC5D8411B5C5ABULL }, /* XSUM_XXH64_testdata[1371] */ + { 686, 0x0000000000000000ULL, 0xC27F045E440D82E1ULL }, /* XSUM_XXH64_testdata[1372] */ + { 686, 0x000000009E3779B1ULL, 0x6184A044E5F84F33ULL }, /* XSUM_XXH64_testdata[1373] */ + { 687, 0x0000000000000000ULL, 0x45EB29A7913AFE09ULL }, /* XSUM_XXH64_testdata[1374] */ + { 687, 0x000000009E3779B1ULL, 0x365B61CB3BE73A26ULL }, /* XSUM_XXH64_testdata[1375] */ + { 688, 0x0000000000000000ULL, 0x8111415B9A605841ULL }, /* XSUM_XXH64_testdata[1376] */ + { 688, 0x000000009E3779B1ULL, 0xD4365B0DBF613534ULL }, /* XSUM_XXH64_testdata[1377] */ + { 689, 0x0000000000000000ULL, 0x203E45B644BDB08CULL }, /* XSUM_XXH64_testdata[1378] */ + { 689, 0x000000009E3779B1ULL, 0x4DDFEF03E0077CD3ULL }, /* XSUM_XXH64_testdata[1379] */ + { 690, 0x0000000000000000ULL, 0x23F495E0695600BBULL }, /* XSUM_XXH64_testdata[1380] */ + { 690, 0x000000009E3779B1ULL, 0x4B9493FF4E180341ULL }, /* XSUM_XXH64_testdata[1381] */ + { 691, 0x0000000000000000ULL, 0xF5DA20A3FA1CCBF0ULL }, /* XSUM_XXH64_testdata[1382] */ + { 691, 0x000000009E3779B1ULL, 0x80DC95CB42AA3040ULL }, /* XSUM_XXH64_testdata[1383] */ + { 692, 0x0000000000000000ULL, 0x6086216334B1099FULL }, /* XSUM_XXH64_testdata[1384] */ + { 692, 0x000000009E3779B1ULL, 0x202D03318BB5C23EULL }, /* XSUM_XXH64_testdata[1385] */ + { 693, 0x0000000000000000ULL, 0xA30002512E9FD4D6ULL }, /* XSUM_XXH64_testdata[1386] */ + { 693, 0x000000009E3779B1ULL, 0xF3E418E8E77B26F2ULL }, /* XSUM_XXH64_testdata[1387] */ + { 694, 0x0000000000000000ULL, 0x96828F3F86928C1BULL }, /* XSUM_XXH64_testdata[1388] */ + { 694, 0x000000009E3779B1ULL, 0xD68CA98AF0A1C386ULL }, /* XSUM_XXH64_testdata[1389] */ + { 695, 0x0000000000000000ULL, 0x1BB181CD4DBB454EULL }, /* XSUM_XXH64_testdata[1390] */ + { 695, 0x000000009E3779B1ULL, 0x373BD8F68C3C46D7ULL }, /* XSUM_XXH64_testdata[1391] */ + { 696, 0x0000000000000000ULL, 0xB0232C45D98C3FE2ULL }, /* XSUM_XXH64_testdata[1392] */ + { 696, 0x000000009E3779B1ULL, 0x9B50610C42819A28ULL }, /* XSUM_XXH64_testdata[1393] */ + { 697, 0x0000000000000000ULL, 0x9202956062E5FB18ULL }, /* XSUM_XXH64_testdata[1394] */ + { 697, 0x000000009E3779B1ULL, 0x8E311C53E693B3E8ULL }, /* XSUM_XXH64_testdata[1395] */ + { 698, 0x0000000000000000ULL, 0x8FC572079C9A24A4ULL }, /* XSUM_XXH64_testdata[1396] */ + { 698, 0x000000009E3779B1ULL, 0xADFE770D69BF07C8ULL }, /* XSUM_XXH64_testdata[1397] */ + { 699, 0x0000000000000000ULL, 0xA2B5A9750E746425ULL }, /* XSUM_XXH64_testdata[1398] */ + { 699, 0x000000009E3779B1ULL, 0xD4EB32CD53EB3148ULL }, /* XSUM_XXH64_testdata[1399] */ + { 700, 0x0000000000000000ULL, 0xC685236A544B5D40ULL }, /* XSUM_XXH64_testdata[1400] */ + { 700, 0x000000009E3779B1ULL, 0x32478E6520378C30ULL }, /* XSUM_XXH64_testdata[1401] */ + { 701, 0x0000000000000000ULL, 0x2D92BC4741267973ULL }, /* XSUM_XXH64_testdata[1402] */ + { 701, 0x000000009E3779B1ULL, 0xB78789A086DECE21ULL }, /* XSUM_XXH64_testdata[1403] */ + { 702, 0x0000000000000000ULL, 0x453111B594EF4545ULL }, /* XSUM_XXH64_testdata[1404] */ + { 702, 0x000000009E3779B1ULL, 0xFAE1FA4060B2A98EULL }, /* XSUM_XXH64_testdata[1405] */ + { 703, 0x0000000000000000ULL, 0x3BF9F17B5FBDBCA4ULL }, /* XSUM_XXH64_testdata[1406] */ + { 703, 0x000000009E3779B1ULL, 0xE66E66041C5B5F87ULL }, /* XSUM_XXH64_testdata[1407] */ + { 704, 0x0000000000000000ULL, 0x221C7CC7895C1B5AULL }, /* XSUM_XXH64_testdata[1408] */ + { 704, 0x000000009E3779B1ULL, 0x5C2C536AFF933B18ULL }, /* XSUM_XXH64_testdata[1409] */ + { 705, 0x0000000000000000ULL, 0x1027CEB18C4E43C4ULL }, /* XSUM_XXH64_testdata[1410] */ + { 705, 0x000000009E3779B1ULL, 0x3C54F98CE994DEB3ULL }, /* XSUM_XXH64_testdata[1411] */ + { 706, 0x0000000000000000ULL, 0x6B713027F4B7A434ULL }, /* XSUM_XXH64_testdata[1412] */ + { 706, 0x000000009E3779B1ULL, 0x5EF378BC5519FC55ULL }, /* XSUM_XXH64_testdata[1413] */ + { 707, 0x0000000000000000ULL, 0x07AF4FA7880E2DD5ULL }, /* XSUM_XXH64_testdata[1414] */ + { 707, 0x000000009E3779B1ULL, 0xBAD0E90C34FBB62DULL }, /* XSUM_XXH64_testdata[1415] */ + { 708, 0x0000000000000000ULL, 0xDD099BE5AD5AA854ULL }, /* XSUM_XXH64_testdata[1416] */ + { 708, 0x000000009E3779B1ULL, 0x084D4A032981B899ULL }, /* XSUM_XXH64_testdata[1417] */ + { 709, 0x0000000000000000ULL, 0x180DC3778B7A2100ULL }, /* XSUM_XXH64_testdata[1418] */ + { 709, 0x000000009E3779B1ULL, 0xE4CF857778B079C5ULL }, /* XSUM_XXH64_testdata[1419] */ + { 710, 0x0000000000000000ULL, 0x5561E952ABEB2F53ULL }, /* XSUM_XXH64_testdata[1420] */ + { 710, 0x000000009E3779B1ULL, 0x238148B86DC01222ULL }, /* XSUM_XXH64_testdata[1421] */ + { 711, 0x0000000000000000ULL, 0xC25EF08D840957C8ULL }, /* XSUM_XXH64_testdata[1422] */ + { 711, 0x000000009E3779B1ULL, 0x145BCD25D86DE9A4ULL }, /* XSUM_XXH64_testdata[1423] */ + { 712, 0x0000000000000000ULL, 0xDBA9489B8EA3BD12ULL }, /* XSUM_XXH64_testdata[1424] */ + { 712, 0x000000009E3779B1ULL, 0x6B809097A99748E1ULL }, /* XSUM_XXH64_testdata[1425] */ + { 713, 0x0000000000000000ULL, 0x2C78A12EE6FE7105ULL }, /* XSUM_XXH64_testdata[1426] */ + { 713, 0x000000009E3779B1ULL, 0x7DAA11C6EB88B381ULL }, /* XSUM_XXH64_testdata[1427] */ + { 714, 0x0000000000000000ULL, 0xD4482CCF3336E3A4ULL }, /* XSUM_XXH64_testdata[1428] */ + { 714, 0x000000009E3779B1ULL, 0x0B30DEDD0A128848ULL }, /* XSUM_XXH64_testdata[1429] */ + { 715, 0x0000000000000000ULL, 0x5EC939F5D2CE811EULL }, /* XSUM_XXH64_testdata[1430] */ + { 715, 0x000000009E3779B1ULL, 0xBBF2EE793BE646CCULL }, /* XSUM_XXH64_testdata[1431] */ + { 716, 0x0000000000000000ULL, 0xCEF19224A1B63059ULL }, /* XSUM_XXH64_testdata[1432] */ + { 716, 0x000000009E3779B1ULL, 0x42B62A02271CAE3EULL }, /* XSUM_XXH64_testdata[1433] */ + { 717, 0x0000000000000000ULL, 0xD1CDE6EAA8E955A4ULL }, /* XSUM_XXH64_testdata[1434] */ + { 717, 0x000000009E3779B1ULL, 0xB05C5979A8EB4D8DULL }, /* XSUM_XXH64_testdata[1435] */ + { 718, 0x0000000000000000ULL, 0x74FD5086482BDB49ULL }, /* XSUM_XXH64_testdata[1436] */ + { 718, 0x000000009E3779B1ULL, 0xAC8628777E410441ULL }, /* XSUM_XXH64_testdata[1437] */ + { 719, 0x0000000000000000ULL, 0x83BA9E556F56DE47ULL }, /* XSUM_XXH64_testdata[1438] */ + { 719, 0x000000009E3779B1ULL, 0x41974491D12AE57DULL }, /* XSUM_XXH64_testdata[1439] */ + { 720, 0x0000000000000000ULL, 0x41D78BFB072D6955ULL }, /* XSUM_XXH64_testdata[1440] */ + { 720, 0x000000009E3779B1ULL, 0x6E56FC95B3CA8858ULL }, /* XSUM_XXH64_testdata[1441] */ + { 721, 0x0000000000000000ULL, 0xDC1307F878A05384ULL }, /* XSUM_XXH64_testdata[1442] */ + { 721, 0x000000009E3779B1ULL, 0xBBA5463D39D44606ULL }, /* XSUM_XXH64_testdata[1443] */ + { 722, 0x0000000000000000ULL, 0x1A7901D614CEA7E4ULL }, /* XSUM_XXH64_testdata[1444] */ + { 722, 0x000000009E3779B1ULL, 0xD195AB8D56B8C297ULL }, /* XSUM_XXH64_testdata[1445] */ + { 723, 0x0000000000000000ULL, 0xE378D2D8F0A9D233ULL }, /* XSUM_XXH64_testdata[1446] */ + { 723, 0x000000009E3779B1ULL, 0x3AAC7F8069B98068ULL }, /* XSUM_XXH64_testdata[1447] */ + { 724, 0x0000000000000000ULL, 0xC5E98F64860ED0DEULL }, /* XSUM_XXH64_testdata[1448] */ + { 724, 0x000000009E3779B1ULL, 0x1A16DA9A78A3D792ULL }, /* XSUM_XXH64_testdata[1449] */ + { 725, 0x0000000000000000ULL, 0x2D548C668F4C9CC8ULL }, /* XSUM_XXH64_testdata[1450] */ + { 725, 0x000000009E3779B1ULL, 0x72C2E7DAE390ECF5ULL }, /* XSUM_XXH64_testdata[1451] */ + { 726, 0x0000000000000000ULL, 0x5BE3903DFCCAF22AULL }, /* XSUM_XXH64_testdata[1452] */ + { 726, 0x000000009E3779B1ULL, 0x9D7678A1266E1D72ULL }, /* XSUM_XXH64_testdata[1453] */ + { 727, 0x0000000000000000ULL, 0x6EBC13C6253B8B87ULL }, /* XSUM_XXH64_testdata[1454] */ + { 727, 0x000000009E3779B1ULL, 0x6C80182322695419ULL }, /* XSUM_XXH64_testdata[1455] */ + { 728, 0x0000000000000000ULL, 0xF0B1D686881496D0ULL }, /* XSUM_XXH64_testdata[1456] */ + { 728, 0x000000009E3779B1ULL, 0xAC7388304F442298ULL }, /* XSUM_XXH64_testdata[1457] */ + { 729, 0x0000000000000000ULL, 0xA8A6323813358307ULL }, /* XSUM_XXH64_testdata[1458] */ + { 729, 0x000000009E3779B1ULL, 0x29E6255CAC3E756DULL }, /* XSUM_XXH64_testdata[1459] */ + { 730, 0x0000000000000000ULL, 0xEAB6F0F43D64E0EBULL }, /* XSUM_XXH64_testdata[1460] */ + { 730, 0x000000009E3779B1ULL, 0xC5D79ECC5A3DCE90ULL }, /* XSUM_XXH64_testdata[1461] */ + { 731, 0x0000000000000000ULL, 0x3FFBEC0BA96E15DAULL }, /* XSUM_XXH64_testdata[1462] */ + { 731, 0x000000009E3779B1ULL, 0xFD1DFB6EAFA6F941ULL }, /* XSUM_XXH64_testdata[1463] */ + { 732, 0x0000000000000000ULL, 0xFA7F6D9816284150ULL }, /* XSUM_XXH64_testdata[1464] */ + { 732, 0x000000009E3779B1ULL, 0xB505D90355732F73ULL }, /* XSUM_XXH64_testdata[1465] */ + { 733, 0x0000000000000000ULL, 0xBF7712DE11B23D60ULL }, /* XSUM_XXH64_testdata[1466] */ + { 733, 0x000000009E3779B1ULL, 0xD6D9778AB869F1A4ULL }, /* XSUM_XXH64_testdata[1467] */ + { 734, 0x0000000000000000ULL, 0x93B0129C62CD6483ULL }, /* XSUM_XXH64_testdata[1468] */ + { 734, 0x000000009E3779B1ULL, 0x71E33EA3FA54C82AULL }, /* XSUM_XXH64_testdata[1469] */ + { 735, 0x0000000000000000ULL, 0xAF90158120DD29D6ULL }, /* XSUM_XXH64_testdata[1470] */ + { 735, 0x000000009E3779B1ULL, 0x62B8A52E35675EFEULL }, /* XSUM_XXH64_testdata[1471] */ + { 736, 0x0000000000000000ULL, 0xAC99EFF2DE436A5BULL }, /* XSUM_XXH64_testdata[1472] */ + { 736, 0x000000009E3779B1ULL, 0x7956AC5141242D4BULL }, /* XSUM_XXH64_testdata[1473] */ + { 737, 0x0000000000000000ULL, 0x3678E8F6C0821FD4ULL }, /* XSUM_XXH64_testdata[1474] */ + { 737, 0x000000009E3779B1ULL, 0xE9616361A44679CEULL }, /* XSUM_XXH64_testdata[1475] */ + { 738, 0x0000000000000000ULL, 0x8CD45A4EF5E7BFE5ULL }, /* XSUM_XXH64_testdata[1476] */ + { 738, 0x000000009E3779B1ULL, 0x3B31AAA739321126ULL }, /* XSUM_XXH64_testdata[1477] */ + { 739, 0x0000000000000000ULL, 0xD852E97DF516658BULL }, /* XSUM_XXH64_testdata[1478] */ + { 739, 0x000000009E3779B1ULL, 0xD7568EE876CDB7C3ULL }, /* XSUM_XXH64_testdata[1479] */ + { 740, 0x0000000000000000ULL, 0x10208312ED98A058ULL }, /* XSUM_XXH64_testdata[1480] */ + { 740, 0x000000009E3779B1ULL, 0x89AD07BF20F746A7ULL }, /* XSUM_XXH64_testdata[1481] */ + { 741, 0x0000000000000000ULL, 0x2A3406B22E762D03ULL }, /* XSUM_XXH64_testdata[1482] */ + { 741, 0x000000009E3779B1ULL, 0xA2578EBFB90F4C86ULL }, /* XSUM_XXH64_testdata[1483] */ + { 742, 0x0000000000000000ULL, 0x41012644AFCCE0E2ULL }, /* XSUM_XXH64_testdata[1484] */ + { 742, 0x000000009E3779B1ULL, 0x47C71214AAB43236ULL }, /* XSUM_XXH64_testdata[1485] */ + { 743, 0x0000000000000000ULL, 0xAFD2C945A23906BDULL }, /* XSUM_XXH64_testdata[1486] */ + { 743, 0x000000009E3779B1ULL, 0xCAF53509CAD0E259ULL }, /* XSUM_XXH64_testdata[1487] */ + { 744, 0x0000000000000000ULL, 0x40C4074DDD7A4199ULL }, /* XSUM_XXH64_testdata[1488] */ + { 744, 0x000000009E3779B1ULL, 0x14392ED852039B17ULL }, /* XSUM_XXH64_testdata[1489] */ + { 745, 0x0000000000000000ULL, 0x0E635EC64C432656ULL }, /* XSUM_XXH64_testdata[1490] */ + { 745, 0x000000009E3779B1ULL, 0xB5041FAC4DAB2AB0ULL }, /* XSUM_XXH64_testdata[1491] */ + { 746, 0x0000000000000000ULL, 0x12949B52C0D92A41ULL }, /* XSUM_XXH64_testdata[1492] */ + { 746, 0x000000009E3779B1ULL, 0x9608DEE9DCA6F74EULL }, /* XSUM_XXH64_testdata[1493] */ + { 747, 0x0000000000000000ULL, 0xAA84DA7017D17172ULL }, /* XSUM_XXH64_testdata[1494] */ + { 747, 0x000000009E3779B1ULL, 0x87852EF7548AD5B8ULL }, /* XSUM_XXH64_testdata[1495] */ + { 748, 0x0000000000000000ULL, 0xC6149B58A4E811F2ULL }, /* XSUM_XXH64_testdata[1496] */ + { 748, 0x000000009E3779B1ULL, 0x8DEEFC88819EB751ULL }, /* XSUM_XXH64_testdata[1497] */ + { 749, 0x0000000000000000ULL, 0xC0CF66EF7524697BULL }, /* XSUM_XXH64_testdata[1498] */ + { 749, 0x000000009E3779B1ULL, 0x56FBFE7D523FDC0EULL }, /* XSUM_XXH64_testdata[1499] */ + { 750, 0x0000000000000000ULL, 0x84442F5D7AC2D4D7ULL }, /* XSUM_XXH64_testdata[1500] */ + { 750, 0x000000009E3779B1ULL, 0xE6C9014C67D770C9ULL }, /* XSUM_XXH64_testdata[1501] */ + { 751, 0x0000000000000000ULL, 0x042BC7070FC1C626ULL }, /* XSUM_XXH64_testdata[1502] */ + { 751, 0x000000009E3779B1ULL, 0xAE26CFD0D282BC95ULL }, /* XSUM_XXH64_testdata[1503] */ + { 752, 0x0000000000000000ULL, 0xCB8763AD53DB25AEULL }, /* XSUM_XXH64_testdata[1504] */ + { 752, 0x000000009E3779B1ULL, 0x5E2821B40151038EULL }, /* XSUM_XXH64_testdata[1505] */ + { 753, 0x0000000000000000ULL, 0x51F94118E16AD413ULL }, /* XSUM_XXH64_testdata[1506] */ + { 753, 0x000000009E3779B1ULL, 0x0151DFC5364A1F91ULL }, /* XSUM_XXH64_testdata[1507] */ + { 754, 0x0000000000000000ULL, 0x3FDF1F3AC306E680ULL }, /* XSUM_XXH64_testdata[1508] */ + { 754, 0x000000009E3779B1ULL, 0x36212321B09E9071ULL }, /* XSUM_XXH64_testdata[1509] */ + { 755, 0x0000000000000000ULL, 0x0A7445F6011589ECULL }, /* XSUM_XXH64_testdata[1510] */ + { 755, 0x000000009E3779B1ULL, 0x3FFFD038C2BC48C6ULL }, /* XSUM_XXH64_testdata[1511] */ + { 756, 0x0000000000000000ULL, 0x627C2A6EA247B4E6ULL }, /* XSUM_XXH64_testdata[1512] */ + { 756, 0x000000009E3779B1ULL, 0x3110EA20AC9FEBB0ULL }, /* XSUM_XXH64_testdata[1513] */ + { 757, 0x0000000000000000ULL, 0x7ABBD897E50C6155ULL }, /* XSUM_XXH64_testdata[1514] */ + { 757, 0x000000009E3779B1ULL, 0x05CCFF7801E0D207ULL }, /* XSUM_XXH64_testdata[1515] */ + { 758, 0x0000000000000000ULL, 0xBABC92D700C378B8ULL }, /* XSUM_XXH64_testdata[1516] */ + { 758, 0x000000009E3779B1ULL, 0x2E0D94DB0C5E777EULL }, /* XSUM_XXH64_testdata[1517] */ + { 759, 0x0000000000000000ULL, 0xFDABE8AF396803F7ULL }, /* XSUM_XXH64_testdata[1518] */ + { 759, 0x000000009E3779B1ULL, 0x09151F2D27F87BD3ULL }, /* XSUM_XXH64_testdata[1519] */ + { 760, 0x0000000000000000ULL, 0xFCBE111F73F24456ULL }, /* XSUM_XXH64_testdata[1520] */ + { 760, 0x000000009E3779B1ULL, 0xD76B618BA8891AA9ULL }, /* XSUM_XXH64_testdata[1521] */ + { 761, 0x0000000000000000ULL, 0x9EB27A0CC2B6CE7FULL }, /* XSUM_XXH64_testdata[1522] */ + { 761, 0x000000009E3779B1ULL, 0x6DFBE8E85472A47EULL }, /* XSUM_XXH64_testdata[1523] */ + { 762, 0x0000000000000000ULL, 0xE364C7174EDBB495ULL }, /* XSUM_XXH64_testdata[1524] */ + { 762, 0x000000009E3779B1ULL, 0xA818EF1E36FA4AEFULL }, /* XSUM_XXH64_testdata[1525] */ + { 763, 0x0000000000000000ULL, 0x1965DA80EA08BB81ULL }, /* XSUM_XXH64_testdata[1526] */ + { 763, 0x000000009E3779B1ULL, 0x40B75D3F3A5E2D29ULL }, /* XSUM_XXH64_testdata[1527] */ + { 764, 0x0000000000000000ULL, 0xD23A065A7AA7C4A3ULL }, /* XSUM_XXH64_testdata[1528] */ + { 764, 0x000000009E3779B1ULL, 0x5736DA672BE838E9ULL }, /* XSUM_XXH64_testdata[1529] */ + { 765, 0x0000000000000000ULL, 0x1BFE99DED9A1BBA2ULL }, /* XSUM_XXH64_testdata[1530] */ + { 765, 0x000000009E3779B1ULL, 0x99F69E39BB7B664DULL }, /* XSUM_XXH64_testdata[1531] */ + { 766, 0x0000000000000000ULL, 0x833432C61A9ED439ULL }, /* XSUM_XXH64_testdata[1532] */ + { 766, 0x000000009E3779B1ULL, 0x162BCE222B455C24ULL }, /* XSUM_XXH64_testdata[1533] */ + { 767, 0x0000000000000000ULL, 0x4181C71628F08B1CULL }, /* XSUM_XXH64_testdata[1534] */ + { 767, 0x000000009E3779B1ULL, 0xB1488838AA3F10DAULL }, /* XSUM_XXH64_testdata[1535] */ + { 768, 0x0000000000000000ULL, 0x0E8BBB1F9B435E52ULL }, /* XSUM_XXH64_testdata[1536] */ + { 768, 0x000000009E3779B1ULL, 0x1DC7319A8ADE3B81ULL }, /* XSUM_XXH64_testdata[1537] */ + { 769, 0x0000000000000000ULL, 0xE860CAE272EA80B9ULL }, /* XSUM_XXH64_testdata[1538] */ + { 769, 0x000000009E3779B1ULL, 0x23C04C46FC231044ULL }, /* XSUM_XXH64_testdata[1539] */ + { 770, 0x0000000000000000ULL, 0x6236B3FB13743810ULL }, /* XSUM_XXH64_testdata[1540] */ + { 770, 0x000000009E3779B1ULL, 0x67DF8E2782ABA69BULL }, /* XSUM_XXH64_testdata[1541] */ + { 771, 0x0000000000000000ULL, 0xED4C203B6774E7CEULL }, /* XSUM_XXH64_testdata[1542] */ + { 771, 0x000000009E3779B1ULL, 0x552052A7444466E6ULL }, /* XSUM_XXH64_testdata[1543] */ + { 772, 0x0000000000000000ULL, 0x8CE6CDEF16AE6884ULL }, /* XSUM_XXH64_testdata[1544] */ + { 772, 0x000000009E3779B1ULL, 0x48F644C568470FA1ULL }, /* XSUM_XXH64_testdata[1545] */ + { 773, 0x0000000000000000ULL, 0x64C403D54E028867ULL }, /* XSUM_XXH64_testdata[1546] */ + { 773, 0x000000009E3779B1ULL, 0xD16C062B043553D3ULL }, /* XSUM_XXH64_testdata[1547] */ + { 774, 0x0000000000000000ULL, 0xF812CC33F77F2D44ULL }, /* XSUM_XXH64_testdata[1548] */ + { 774, 0x000000009E3779B1ULL, 0xFBCCE522CB2B8F29ULL }, /* XSUM_XXH64_testdata[1549] */ + { 775, 0x0000000000000000ULL, 0xFFF547F98ABF6895ULL }, /* XSUM_XXH64_testdata[1550] */ + { 775, 0x000000009E3779B1ULL, 0x20105BF22CEF4FD0ULL }, /* XSUM_XXH64_testdata[1551] */ + { 776, 0x0000000000000000ULL, 0x8B88372929BDEA9AULL }, /* XSUM_XXH64_testdata[1552] */ + { 776, 0x000000009E3779B1ULL, 0xFC1C6E3B87A91E85ULL }, /* XSUM_XXH64_testdata[1553] */ + { 777, 0x0000000000000000ULL, 0xF672F4ECB438B978ULL }, /* XSUM_XXH64_testdata[1554] */ + { 777, 0x000000009E3779B1ULL, 0x21D821B6C3257703ULL }, /* XSUM_XXH64_testdata[1555] */ + { 778, 0x0000000000000000ULL, 0x57B5CE95D2B999D9ULL }, /* XSUM_XXH64_testdata[1556] */ + { 778, 0x000000009E3779B1ULL, 0xEC2F3620E8EA8F78ULL }, /* XSUM_XXH64_testdata[1557] */ + { 779, 0x0000000000000000ULL, 0x9316E0487B446BD0ULL }, /* XSUM_XXH64_testdata[1558] */ + { 779, 0x000000009E3779B1ULL, 0x827337D4BE47D7E5ULL }, /* XSUM_XXH64_testdata[1559] */ + { 780, 0x0000000000000000ULL, 0xC3A2083FED8BB647ULL }, /* XSUM_XXH64_testdata[1560] */ + { 780, 0x000000009E3779B1ULL, 0x0041BC77E1938345ULL }, /* XSUM_XXH64_testdata[1561] */ + { 781, 0x0000000000000000ULL, 0xDBFBDA21100250E2ULL }, /* XSUM_XXH64_testdata[1562] */ + { 781, 0x000000009E3779B1ULL, 0xA3E23F2210DCAE3AULL }, /* XSUM_XXH64_testdata[1563] */ + { 782, 0x0000000000000000ULL, 0xB32650EC85A8E89FULL }, /* XSUM_XXH64_testdata[1564] */ + { 782, 0x000000009E3779B1ULL, 0x0BBAB579A14A004EULL }, /* XSUM_XXH64_testdata[1565] */ + { 783, 0x0000000000000000ULL, 0x0F8892E334EBFEDEULL }, /* XSUM_XXH64_testdata[1566] */ + { 783, 0x000000009E3779B1ULL, 0xF8143EE621E4AB31ULL }, /* XSUM_XXH64_testdata[1567] */ + { 784, 0x0000000000000000ULL, 0xBF068128DEE1921BULL }, /* XSUM_XXH64_testdata[1568] */ + { 784, 0x000000009E3779B1ULL, 0x9B65026776A13013ULL }, /* XSUM_XXH64_testdata[1569] */ + { 785, 0x0000000000000000ULL, 0x64CDF4EA244DF2B4ULL }, /* XSUM_XXH64_testdata[1570] */ + { 785, 0x000000009E3779B1ULL, 0x10EAC153A44AD4DDULL }, /* XSUM_XXH64_testdata[1571] */ + { 786, 0x0000000000000000ULL, 0x87B568D354323734ULL }, /* XSUM_XXH64_testdata[1572] */ + { 786, 0x000000009E3779B1ULL, 0xD48FCD6C08DA914EULL }, /* XSUM_XXH64_testdata[1573] */ + { 787, 0x0000000000000000ULL, 0x38C6ED425960C0E3ULL }, /* XSUM_XXH64_testdata[1574] */ + { 787, 0x000000009E3779B1ULL, 0xEBB7C1C275F63D62ULL }, /* XSUM_XXH64_testdata[1575] */ + { 788, 0x0000000000000000ULL, 0x8C44FE365B657772ULL }, /* XSUM_XXH64_testdata[1576] */ + { 788, 0x000000009E3779B1ULL, 0xD1B95B6CFF78274DULL }, /* XSUM_XXH64_testdata[1577] */ + { 789, 0x0000000000000000ULL, 0x3E3499D6967BAEE5ULL }, /* XSUM_XXH64_testdata[1578] */ + { 789, 0x000000009E3779B1ULL, 0x441E0EEB1BF63691ULL }, /* XSUM_XXH64_testdata[1579] */ + { 790, 0x0000000000000000ULL, 0x3C6390B33F391A0EULL }, /* XSUM_XXH64_testdata[1580] */ + { 790, 0x000000009E3779B1ULL, 0x72B21F7207AE0919ULL }, /* XSUM_XXH64_testdata[1581] */ + { 791, 0x0000000000000000ULL, 0x51D21456E0E73F66ULL }, /* XSUM_XXH64_testdata[1582] */ + { 791, 0x000000009E3779B1ULL, 0x1BACAF65F7984266ULL }, /* XSUM_XXH64_testdata[1583] */ + { 792, 0x0000000000000000ULL, 0x8C7368A49E49CC53ULL }, /* XSUM_XXH64_testdata[1584] */ + { 792, 0x000000009E3779B1ULL, 0x0CB319EAD0DE8855ULL }, /* XSUM_XXH64_testdata[1585] */ + { 793, 0x0000000000000000ULL, 0xCA68FA5D6F365ED0ULL }, /* XSUM_XXH64_testdata[1586] */ + { 793, 0x000000009E3779B1ULL, 0x2DEC7894FA59249EULL }, /* XSUM_XXH64_testdata[1587] */ + { 794, 0x0000000000000000ULL, 0x38C01A76599E30DEULL }, /* XSUM_XXH64_testdata[1588] */ + { 794, 0x000000009E3779B1ULL, 0xCF66B041DCA10B35ULL }, /* XSUM_XXH64_testdata[1589] */ + { 795, 0x0000000000000000ULL, 0xB0A8FC8D3F57896FULL }, /* XSUM_XXH64_testdata[1590] */ + { 795, 0x000000009E3779B1ULL, 0x27A3200AD7C3DC6AULL }, /* XSUM_XXH64_testdata[1591] */ + { 796, 0x0000000000000000ULL, 0xBA5D75B684F4BC67ULL }, /* XSUM_XXH64_testdata[1592] */ + { 796, 0x000000009E3779B1ULL, 0xA66532CCF59A4609ULL }, /* XSUM_XXH64_testdata[1593] */ + { 797, 0x0000000000000000ULL, 0x1BD78A442184A931ULL }, /* XSUM_XXH64_testdata[1594] */ + { 797, 0x000000009E3779B1ULL, 0x7E00B4870724948BULL }, /* XSUM_XXH64_testdata[1595] */ + { 798, 0x0000000000000000ULL, 0x6AFAB3B116CB725EULL }, /* XSUM_XXH64_testdata[1596] */ + { 798, 0x000000009E3779B1ULL, 0x6540810BA11F814EULL }, /* XSUM_XXH64_testdata[1597] */ + { 799, 0x0000000000000000ULL, 0x5A0EB3EF550813BAULL }, /* XSUM_XXH64_testdata[1598] */ + { 799, 0x000000009E3779B1ULL, 0x854F440E0C3C0B35ULL }, /* XSUM_XXH64_testdata[1599] */ + { 800, 0x0000000000000000ULL, 0x244E56B2868A0944ULL }, /* XSUM_XXH64_testdata[1600] */ + { 800, 0x000000009E3779B1ULL, 0x56EF1FA810F64E8DULL }, /* XSUM_XXH64_testdata[1601] */ + { 801, 0x0000000000000000ULL, 0xDA930E45B6312ECBULL }, /* XSUM_XXH64_testdata[1602] */ + { 801, 0x000000009E3779B1ULL, 0x4E0D99BAE5F0886FULL }, /* XSUM_XXH64_testdata[1603] */ + { 802, 0x0000000000000000ULL, 0xF6182C524C449150ULL }, /* XSUM_XXH64_testdata[1604] */ + { 802, 0x000000009E3779B1ULL, 0x7CB2C154B4E3EC88ULL }, /* XSUM_XXH64_testdata[1605] */ + { 803, 0x0000000000000000ULL, 0xCF26324B8DA162DFULL }, /* XSUM_XXH64_testdata[1606] */ + { 803, 0x000000009E3779B1ULL, 0x78FB10568FCC433EULL }, /* XSUM_XXH64_testdata[1607] */ + { 804, 0x0000000000000000ULL, 0x42C4682264A9671BULL }, /* XSUM_XXH64_testdata[1608] */ + { 804, 0x000000009E3779B1ULL, 0x41CAC9D65E5A3DC1ULL }, /* XSUM_XXH64_testdata[1609] */ + { 805, 0x0000000000000000ULL, 0xB0DD0D6AC91A338BULL }, /* XSUM_XXH64_testdata[1610] */ + { 805, 0x000000009E3779B1ULL, 0x39E04426DC2028BBULL }, /* XSUM_XXH64_testdata[1611] */ + { 806, 0x0000000000000000ULL, 0xA1CBC14F0F3C3470ULL }, /* XSUM_XXH64_testdata[1612] */ + { 806, 0x000000009E3779B1ULL, 0x07FA9B7D8AE43063ULL }, /* XSUM_XXH64_testdata[1613] */ + { 807, 0x0000000000000000ULL, 0x7ED2B5BF5CB35E5BULL }, /* XSUM_XXH64_testdata[1614] */ + { 807, 0x000000009E3779B1ULL, 0xFC15449D36A6772BULL }, /* XSUM_XXH64_testdata[1615] */ + { 808, 0x0000000000000000ULL, 0xD1DF37277BE7DFA2ULL }, /* XSUM_XXH64_testdata[1616] */ + { 808, 0x000000009E3779B1ULL, 0xD49C8B4D78D976FEULL }, /* XSUM_XXH64_testdata[1617] */ + { 809, 0x0000000000000000ULL, 0xF4F1B57FC8C040A8ULL }, /* XSUM_XXH64_testdata[1618] */ + { 809, 0x000000009E3779B1ULL, 0x01F7D6B05F87A1ECULL }, /* XSUM_XXH64_testdata[1619] */ + { 810, 0x0000000000000000ULL, 0x82EF84CF79BB87A4ULL }, /* XSUM_XXH64_testdata[1620] */ + { 810, 0x000000009E3779B1ULL, 0x0ED3237E7B220E42ULL }, /* XSUM_XXH64_testdata[1621] */ + { 811, 0x0000000000000000ULL, 0x443A0FF4897979D6ULL }, /* XSUM_XXH64_testdata[1622] */ + { 811, 0x000000009E3779B1ULL, 0x2B903EF2F3BA86D0ULL }, /* XSUM_XXH64_testdata[1623] */ + { 812, 0x0000000000000000ULL, 0x72BC3E80D2A90898ULL }, /* XSUM_XXH64_testdata[1624] */ + { 812, 0x000000009E3779B1ULL, 0xF6B7CC07E96C2CE5ULL }, /* XSUM_XXH64_testdata[1625] */ + { 813, 0x0000000000000000ULL, 0xB51DAA1C83EEF3F2ULL }, /* XSUM_XXH64_testdata[1626] */ + { 813, 0x000000009E3779B1ULL, 0xDC6A3D3DB077BFC6ULL }, /* XSUM_XXH64_testdata[1627] */ + { 814, 0x0000000000000000ULL, 0x881C1225846B1F06ULL }, /* XSUM_XXH64_testdata[1628] */ + { 814, 0x000000009E3779B1ULL, 0xE38BBFD98A656883ULL }, /* XSUM_XXH64_testdata[1629] */ + { 815, 0x0000000000000000ULL, 0x4E66F384826BD596ULL }, /* XSUM_XXH64_testdata[1630] */ + { 815, 0x000000009E3779B1ULL, 0xF4A1FC10695C98A6ULL }, /* XSUM_XXH64_testdata[1631] */ + { 816, 0x0000000000000000ULL, 0x353A363E0972420BULL }, /* XSUM_XXH64_testdata[1632] */ + { 816, 0x000000009E3779B1ULL, 0x7D4B7B24CB16C5B0ULL }, /* XSUM_XXH64_testdata[1633] */ + { 817, 0x0000000000000000ULL, 0x7A42B99973DFAB20ULL }, /* XSUM_XXH64_testdata[1634] */ + { 817, 0x000000009E3779B1ULL, 0x5AE58B1762159F8BULL }, /* XSUM_XXH64_testdata[1635] */ + { 818, 0x0000000000000000ULL, 0x2BB206E8538ACE55ULL }, /* XSUM_XXH64_testdata[1636] */ + { 818, 0x000000009E3779B1ULL, 0xED2363516B645D7FULL }, /* XSUM_XXH64_testdata[1637] */ + { 819, 0x0000000000000000ULL, 0x84B50FF7722D4142ULL }, /* XSUM_XXH64_testdata[1638] */ + { 819, 0x000000009E3779B1ULL, 0x0811B5A596470497ULL }, /* XSUM_XXH64_testdata[1639] */ + { 820, 0x0000000000000000ULL, 0xA0AD40767F613E0FULL }, /* XSUM_XXH64_testdata[1640] */ + { 820, 0x000000009E3779B1ULL, 0x018E5F50754DE2D4ULL }, /* XSUM_XXH64_testdata[1641] */ + { 821, 0x0000000000000000ULL, 0xA2B047AF06AE5BE2ULL }, /* XSUM_XXH64_testdata[1642] */ + { 821, 0x000000009E3779B1ULL, 0xD9CC9EDDFF3E06E6ULL }, /* XSUM_XXH64_testdata[1643] */ + { 822, 0x0000000000000000ULL, 0x0315BEEF76458DB0ULL }, /* XSUM_XXH64_testdata[1644] */ + { 822, 0x000000009E3779B1ULL, 0x5E77353EC42C0616ULL }, /* XSUM_XXH64_testdata[1645] */ + { 823, 0x0000000000000000ULL, 0xF5446208089F49D3ULL }, /* XSUM_XXH64_testdata[1646] */ + { 823, 0x000000009E3779B1ULL, 0xC1EB228206F03473ULL }, /* XSUM_XXH64_testdata[1647] */ + { 824, 0x0000000000000000ULL, 0xF0300A6A0C72D595ULL }, /* XSUM_XXH64_testdata[1648] */ + { 824, 0x000000009E3779B1ULL, 0xB93F9E28D37ED75BULL }, /* XSUM_XXH64_testdata[1649] */ + { 825, 0x0000000000000000ULL, 0xE38D4F27372C9836ULL }, /* XSUM_XXH64_testdata[1650] */ + { 825, 0x000000009E3779B1ULL, 0xA6E982E62AB658DAULL }, /* XSUM_XXH64_testdata[1651] */ + { 826, 0x0000000000000000ULL, 0x6A11FF2CB76790F6ULL }, /* XSUM_XXH64_testdata[1652] */ + { 826, 0x000000009E3779B1ULL, 0x4C7256B58304E77DULL }, /* XSUM_XXH64_testdata[1653] */ + { 827, 0x0000000000000000ULL, 0x878674A0772ED595ULL }, /* XSUM_XXH64_testdata[1654] */ + { 827, 0x000000009E3779B1ULL, 0xF0F34E88479A2D89ULL }, /* XSUM_XXH64_testdata[1655] */ + { 828, 0x0000000000000000ULL, 0x13E960559E0CE9B7ULL }, /* XSUM_XXH64_testdata[1656] */ + { 828, 0x000000009E3779B1ULL, 0x1487F52D81EDF8DFULL }, /* XSUM_XXH64_testdata[1657] */ + { 829, 0x0000000000000000ULL, 0xACEA80F8C6E44192ULL }, /* XSUM_XXH64_testdata[1658] */ + { 829, 0x000000009E3779B1ULL, 0x52EA26606D24635CULL }, /* XSUM_XXH64_testdata[1659] */ + { 830, 0x0000000000000000ULL, 0x2ED7C1D98D3AE131ULL }, /* XSUM_XXH64_testdata[1660] */ + { 830, 0x000000009E3779B1ULL, 0xD76EAA945F2154B3ULL }, /* XSUM_XXH64_testdata[1661] */ + { 831, 0x0000000000000000ULL, 0xCDB1D04F55C2F84BULL }, /* XSUM_XXH64_testdata[1662] */ + { 831, 0x000000009E3779B1ULL, 0x447BFC74CBAB8F87ULL }, /* XSUM_XXH64_testdata[1663] */ + { 832, 0x0000000000000000ULL, 0x3D5BAE42715B0A4DULL }, /* XSUM_XXH64_testdata[1664] */ + { 832, 0x000000009E3779B1ULL, 0x2B7257C21CFC4A6EULL }, /* XSUM_XXH64_testdata[1665] */ + { 833, 0x0000000000000000ULL, 0x14903D37319352FDULL }, /* XSUM_XXH64_testdata[1666] */ + { 833, 0x000000009E3779B1ULL, 0x6A57053BF3B5FB80ULL }, /* XSUM_XXH64_testdata[1667] */ + { 834, 0x0000000000000000ULL, 0x187F9B803814D2D1ULL }, /* XSUM_XXH64_testdata[1668] */ + { 834, 0x000000009E3779B1ULL, 0x885529ECCED2ADA8ULL }, /* XSUM_XXH64_testdata[1669] */ + { 835, 0x0000000000000000ULL, 0x644EE28E3AD57EEFULL }, /* XSUM_XXH64_testdata[1670] */ + { 835, 0x000000009E3779B1ULL, 0xD7968228B0C69B5CULL }, /* XSUM_XXH64_testdata[1671] */ + { 836, 0x0000000000000000ULL, 0xF19A2B5515B47595ULL }, /* XSUM_XXH64_testdata[1672] */ + { 836, 0x000000009E3779B1ULL, 0xD72A1257C29B5741ULL }, /* XSUM_XXH64_testdata[1673] */ + { 837, 0x0000000000000000ULL, 0x16389D633B41A832ULL }, /* XSUM_XXH64_testdata[1674] */ + { 837, 0x000000009E3779B1ULL, 0xADD0AB275CDC5412ULL }, /* XSUM_XXH64_testdata[1675] */ + { 838, 0x0000000000000000ULL, 0x24F087F628F098B7ULL }, /* XSUM_XXH64_testdata[1676] */ + { 838, 0x000000009E3779B1ULL, 0x876D727FA2EC8878ULL }, /* XSUM_XXH64_testdata[1677] */ + { 839, 0x0000000000000000ULL, 0x8BC940DB4A965289ULL }, /* XSUM_XXH64_testdata[1678] */ + { 839, 0x000000009E3779B1ULL, 0x90D59D4D67730DF3ULL }, /* XSUM_XXH64_testdata[1679] */ + { 840, 0x0000000000000000ULL, 0x13F577CF676D19EFULL }, /* XSUM_XXH64_testdata[1680] */ + { 840, 0x000000009E3779B1ULL, 0x352763C726049A02ULL }, /* XSUM_XXH64_testdata[1681] */ + { 841, 0x0000000000000000ULL, 0x22865F907214C8F1ULL }, /* XSUM_XXH64_testdata[1682] */ + { 841, 0x000000009E3779B1ULL, 0xFD7850074C82CF88ULL }, /* XSUM_XXH64_testdata[1683] */ + { 842, 0x0000000000000000ULL, 0xD0BADDA2D0D96347ULL }, /* XSUM_XXH64_testdata[1684] */ + { 842, 0x000000009E3779B1ULL, 0xB818EFDB230697ACULL }, /* XSUM_XXH64_testdata[1685] */ + { 843, 0x0000000000000000ULL, 0x0BEF1A213934ED65ULL }, /* XSUM_XXH64_testdata[1686] */ + { 843, 0x000000009E3779B1ULL, 0xDA78886C69D7CBA5ULL }, /* XSUM_XXH64_testdata[1687] */ + { 844, 0x0000000000000000ULL, 0xE10659BDCD007C7BULL }, /* XSUM_XXH64_testdata[1688] */ + { 844, 0x000000009E3779B1ULL, 0xBC34E6853275F1D3ULL }, /* XSUM_XXH64_testdata[1689] */ + { 845, 0x0000000000000000ULL, 0x618D077757488504ULL }, /* XSUM_XXH64_testdata[1690] */ + { 845, 0x000000009E3779B1ULL, 0xB4FCE3B927B285D3ULL }, /* XSUM_XXH64_testdata[1691] */ + { 846, 0x0000000000000000ULL, 0xBC3E4ECBCB0E099AULL }, /* XSUM_XXH64_testdata[1692] */ + { 846, 0x000000009E3779B1ULL, 0xF58A5039F831A050ULL }, /* XSUM_XXH64_testdata[1693] */ + { 847, 0x0000000000000000ULL, 0x2AF26B61A1340B8DULL }, /* XSUM_XXH64_testdata[1694] */ + { 847, 0x000000009E3779B1ULL, 0x1EF4C8078AF7027BULL }, /* XSUM_XXH64_testdata[1695] */ + { 848, 0x0000000000000000ULL, 0xF79ED3B2C96B1A54ULL }, /* XSUM_XXH64_testdata[1696] */ + { 848, 0x000000009E3779B1ULL, 0x96FBFA709C8819BEULL }, /* XSUM_XXH64_testdata[1697] */ + { 849, 0x0000000000000000ULL, 0x96756A37A3210EADULL }, /* XSUM_XXH64_testdata[1698] */ + { 849, 0x000000009E3779B1ULL, 0xC29466933248138FULL }, /* XSUM_XXH64_testdata[1699] */ + { 850, 0x0000000000000000ULL, 0x14F7DC8FC7D2E823ULL }, /* XSUM_XXH64_testdata[1700] */ + { 850, 0x000000009E3779B1ULL, 0xD6B9613FC6CD622AULL }, /* XSUM_XXH64_testdata[1701] */ + { 851, 0x0000000000000000ULL, 0x4623123A3E51EA8EULL }, /* XSUM_XXH64_testdata[1702] */ + { 851, 0x000000009E3779B1ULL, 0x4C7610EDC37BC6FCULL }, /* XSUM_XXH64_testdata[1703] */ + { 852, 0x0000000000000000ULL, 0x7A51C1212D0B090EULL }, /* XSUM_XXH64_testdata[1704] */ + { 852, 0x000000009E3779B1ULL, 0xA59FEBF6A4C5DE71ULL }, /* XSUM_XXH64_testdata[1705] */ + { 853, 0x0000000000000000ULL, 0x7A0E98E60EB6AAF8ULL }, /* XSUM_XXH64_testdata[1706] */ + { 853, 0x000000009E3779B1ULL, 0x34DC1180870A5B26ULL }, /* XSUM_XXH64_testdata[1707] */ + { 854, 0x0000000000000000ULL, 0xB102435DDFA595A1ULL }, /* XSUM_XXH64_testdata[1708] */ + { 854, 0x000000009E3779B1ULL, 0xF0D311DEA553C143ULL }, /* XSUM_XXH64_testdata[1709] */ + { 855, 0x0000000000000000ULL, 0x34FE3D73223764B1ULL }, /* XSUM_XXH64_testdata[1710] */ + { 855, 0x000000009E3779B1ULL, 0x6BE2B2985F732D96ULL }, /* XSUM_XXH64_testdata[1711] */ + { 856, 0x0000000000000000ULL, 0x20598ABFBD474FECULL }, /* XSUM_XXH64_testdata[1712] */ + { 856, 0x000000009E3779B1ULL, 0x23EF0E301BD9C9F4ULL }, /* XSUM_XXH64_testdata[1713] */ + { 857, 0x0000000000000000ULL, 0x78FA616B50E3AD85ULL }, /* XSUM_XXH64_testdata[1714] */ + { 857, 0x000000009E3779B1ULL, 0xE6C6095C888BCCE7ULL }, /* XSUM_XXH64_testdata[1715] */ + { 858, 0x0000000000000000ULL, 0xB01B0E699EB746EBULL }, /* XSUM_XXH64_testdata[1716] */ + { 858, 0x000000009E3779B1ULL, 0xB28D543D22BF9F46ULL }, /* XSUM_XXH64_testdata[1717] */ + { 859, 0x0000000000000000ULL, 0x00EDD4B3544BC2EBULL }, /* XSUM_XXH64_testdata[1718] */ + { 859, 0x000000009E3779B1ULL, 0x7ABBBB750FA86995ULL }, /* XSUM_XXH64_testdata[1719] */ + { 860, 0x0000000000000000ULL, 0x653CFAF1456F5C13ULL }, /* XSUM_XXH64_testdata[1720] */ + { 860, 0x000000009E3779B1ULL, 0xD81F68EC451802ADULL }, /* XSUM_XXH64_testdata[1721] */ + { 861, 0x0000000000000000ULL, 0x5AA0BA4E43D1C793ULL }, /* XSUM_XXH64_testdata[1722] */ + { 861, 0x000000009E3779B1ULL, 0x862D2B34AB6D6026ULL }, /* XSUM_XXH64_testdata[1723] */ + { 862, 0x0000000000000000ULL, 0x8FC68F658FE9A5CBULL }, /* XSUM_XXH64_testdata[1724] */ + { 862, 0x000000009E3779B1ULL, 0xD1042671C598BBE5ULL }, /* XSUM_XXH64_testdata[1725] */ + { 863, 0x0000000000000000ULL, 0xFA0BAC7815DF9FD5ULL }, /* XSUM_XXH64_testdata[1726] */ + { 863, 0x000000009E3779B1ULL, 0xFD84DE08D873DD81ULL }, /* XSUM_XXH64_testdata[1727] */ + { 864, 0x0000000000000000ULL, 0x6373353385388B37ULL }, /* XSUM_XXH64_testdata[1728] */ + { 864, 0x000000009E3779B1ULL, 0x4FC416586122807FULL }, /* XSUM_XXH64_testdata[1729] */ + { 865, 0x0000000000000000ULL, 0x835E5BC3000B56D9ULL }, /* XSUM_XXH64_testdata[1730] */ + { 865, 0x000000009E3779B1ULL, 0xBBDB205A685690D8ULL }, /* XSUM_XXH64_testdata[1731] */ + { 866, 0x0000000000000000ULL, 0xB707397892276BE4ULL }, /* XSUM_XXH64_testdata[1732] */ + { 866, 0x000000009E3779B1ULL, 0x103F64ECB55F4F46ULL }, /* XSUM_XXH64_testdata[1733] */ + { 867, 0x0000000000000000ULL, 0x9EA0EC20007A11B1ULL }, /* XSUM_XXH64_testdata[1734] */ + { 867, 0x000000009E3779B1ULL, 0xA5E19F6A316EAB66ULL }, /* XSUM_XXH64_testdata[1735] */ + { 868, 0x0000000000000000ULL, 0xB80C7041CCF517D6ULL }, /* XSUM_XXH64_testdata[1736] */ + { 868, 0x000000009E3779B1ULL, 0xCE738A5D8C69D9B3ULL }, /* XSUM_XXH64_testdata[1737] */ + { 869, 0x0000000000000000ULL, 0x11F02C4D181DB0C4ULL }, /* XSUM_XXH64_testdata[1738] */ + { 869, 0x000000009E3779B1ULL, 0x1ABBF191C6AC687DULL }, /* XSUM_XXH64_testdata[1739] */ + { 870, 0x0000000000000000ULL, 0x1D5062D6896F877BULL }, /* XSUM_XXH64_testdata[1740] */ + { 870, 0x000000009E3779B1ULL, 0x1DCC8C9627E6FCB2ULL }, /* XSUM_XXH64_testdata[1741] */ + { 871, 0x0000000000000000ULL, 0xD7AB279F53AE77E1ULL }, /* XSUM_XXH64_testdata[1742] */ + { 871, 0x000000009E3779B1ULL, 0x52EE0D0915817876ULL }, /* XSUM_XXH64_testdata[1743] */ + { 872, 0x0000000000000000ULL, 0x6100FBA816FBE4B7ULL }, /* XSUM_XXH64_testdata[1744] */ + { 872, 0x000000009E3779B1ULL, 0x05F758578F82E391ULL }, /* XSUM_XXH64_testdata[1745] */ + { 873, 0x0000000000000000ULL, 0x6DDA6AD4BA4323C2ULL }, /* XSUM_XXH64_testdata[1746] */ + { 873, 0x000000009E3779B1ULL, 0xFCEC2E73753D4906ULL }, /* XSUM_XXH64_testdata[1747] */ + { 874, 0x0000000000000000ULL, 0xEA548563BD01937AULL }, /* XSUM_XXH64_testdata[1748] */ + { 874, 0x000000009E3779B1ULL, 0x90EAC483FD3859BEULL }, /* XSUM_XXH64_testdata[1749] */ + { 875, 0x0000000000000000ULL, 0x30CC37EC769EFFFEULL }, /* XSUM_XXH64_testdata[1750] */ + { 875, 0x000000009E3779B1ULL, 0xCD0C3D904462D60BULL }, /* XSUM_XXH64_testdata[1751] */ + { 876, 0x0000000000000000ULL, 0x63353497BD23E476ULL }, /* XSUM_XXH64_testdata[1752] */ + { 876, 0x000000009E3779B1ULL, 0x76AF9EAEA230D908ULL }, /* XSUM_XXH64_testdata[1753] */ + { 877, 0x0000000000000000ULL, 0x0EC5420E89F88130ULL }, /* XSUM_XXH64_testdata[1754] */ + { 877, 0x000000009E3779B1ULL, 0xE1BF1BE604D2B4C2ULL }, /* XSUM_XXH64_testdata[1755] */ + { 878, 0x0000000000000000ULL, 0xBBE3953E2005F359ULL }, /* XSUM_XXH64_testdata[1756] */ + { 878, 0x000000009E3779B1ULL, 0xDAAFEE6A0B433A74ULL }, /* XSUM_XXH64_testdata[1757] */ + { 879, 0x0000000000000000ULL, 0x90D3F6F33135D83CULL }, /* XSUM_XXH64_testdata[1758] */ + { 879, 0x000000009E3779B1ULL, 0x7C78584945F9D2A3ULL }, /* XSUM_XXH64_testdata[1759] */ + { 880, 0x0000000000000000ULL, 0x2173BFC7F9032555ULL }, /* XSUM_XXH64_testdata[1760] */ + { 880, 0x000000009E3779B1ULL, 0x902DC15CC0AA4C5AULL }, /* XSUM_XXH64_testdata[1761] */ + { 881, 0x0000000000000000ULL, 0x2DED0B261F610F06ULL }, /* XSUM_XXH64_testdata[1762] */ + { 881, 0x000000009E3779B1ULL, 0xA08653A777086DCEULL }, /* XSUM_XXH64_testdata[1763] */ + { 882, 0x0000000000000000ULL, 0x0ACB705226711CA0ULL }, /* XSUM_XXH64_testdata[1764] */ + { 882, 0x000000009E3779B1ULL, 0x67539F629AA80FCDULL }, /* XSUM_XXH64_testdata[1765] */ + { 883, 0x0000000000000000ULL, 0xFB4F87330ACE424FULL }, /* XSUM_XXH64_testdata[1766] */ + { 883, 0x000000009E3779B1ULL, 0xFBBF941BBD03CA43ULL }, /* XSUM_XXH64_testdata[1767] */ + { 884, 0x0000000000000000ULL, 0xFD0C5105ACA1A57CULL }, /* XSUM_XXH64_testdata[1768] */ + { 884, 0x000000009E3779B1ULL, 0x9162AAFE35995B6AULL }, /* XSUM_XXH64_testdata[1769] */ + { 885, 0x0000000000000000ULL, 0x617C8D7EBF788394ULL }, /* XSUM_XXH64_testdata[1770] */ + { 885, 0x000000009E3779B1ULL, 0xD0D668987E17D7A3ULL }, /* XSUM_XXH64_testdata[1771] */ + { 886, 0x0000000000000000ULL, 0x8104F0CAB9035C58ULL }, /* XSUM_XXH64_testdata[1772] */ + { 886, 0x000000009E3779B1ULL, 0x4942ACF21CD8A90DULL }, /* XSUM_XXH64_testdata[1773] */ + { 887, 0x0000000000000000ULL, 0x2FADF9CA07A368FEULL }, /* XSUM_XXH64_testdata[1774] */ + { 887, 0x000000009E3779B1ULL, 0xA350EC17F8C8EAD1ULL }, /* XSUM_XXH64_testdata[1775] */ + { 888, 0x0000000000000000ULL, 0x51137DC208D0EB75ULL }, /* XSUM_XXH64_testdata[1776] */ + { 888, 0x000000009E3779B1ULL, 0x46F46544CFC2FC22ULL }, /* XSUM_XXH64_testdata[1777] */ + { 889, 0x0000000000000000ULL, 0x266CEF1EB52AF50CULL }, /* XSUM_XXH64_testdata[1778] */ + { 889, 0x000000009E3779B1ULL, 0xE63F8CD1C1F84E55ULL }, /* XSUM_XXH64_testdata[1779] */ + { 890, 0x0000000000000000ULL, 0xDDD3DCFD409BF671ULL }, /* XSUM_XXH64_testdata[1780] */ + { 890, 0x000000009E3779B1ULL, 0xD6AF89F86CDAFE00ULL }, /* XSUM_XXH64_testdata[1781] */ + { 891, 0x0000000000000000ULL, 0xA0F0F0A8BAF698BCULL }, /* XSUM_XXH64_testdata[1782] */ + { 891, 0x000000009E3779B1ULL, 0x65A52A08268C9FA9ULL }, /* XSUM_XXH64_testdata[1783] */ + { 892, 0x0000000000000000ULL, 0x948FAAF326AA6BC8ULL }, /* XSUM_XXH64_testdata[1784] */ + { 892, 0x000000009E3779B1ULL, 0xD36A712FA68B81BCULL }, /* XSUM_XXH64_testdata[1785] */ + { 893, 0x0000000000000000ULL, 0x9D1294E8EA5B2767ULL }, /* XSUM_XXH64_testdata[1786] */ + { 893, 0x000000009E3779B1ULL, 0xC748D486CA7151A5ULL }, /* XSUM_XXH64_testdata[1787] */ + { 894, 0x0000000000000000ULL, 0xEE40D26539640704ULL }, /* XSUM_XXH64_testdata[1788] */ + { 894, 0x000000009E3779B1ULL, 0x463157CD339EF85DULL }, /* XSUM_XXH64_testdata[1789] */ + { 895, 0x0000000000000000ULL, 0xB7D94BB4FB407B22ULL }, /* XSUM_XXH64_testdata[1790] */ + { 895, 0x000000009E3779B1ULL, 0x6B4D2776EEE18DDFULL }, /* XSUM_XXH64_testdata[1791] */ + { 896, 0x0000000000000000ULL, 0xACA27EEA7D739BABULL }, /* XSUM_XXH64_testdata[1792] */ + { 896, 0x000000009E3779B1ULL, 0xD91B812648A1A30EULL }, /* XSUM_XXH64_testdata[1793] */ + { 897, 0x0000000000000000ULL, 0xA9524B99C07C465CULL }, /* XSUM_XXH64_testdata[1794] */ + { 897, 0x000000009E3779B1ULL, 0x30A74381F6CDEBAFULL }, /* XSUM_XXH64_testdata[1795] */ + { 898, 0x0000000000000000ULL, 0x3F76A1A71AFF82FEULL }, /* XSUM_XXH64_testdata[1796] */ + { 898, 0x000000009E3779B1ULL, 0xB6BE86367CAAA2A8ULL }, /* XSUM_XXH64_testdata[1797] */ + { 899, 0x0000000000000000ULL, 0x48B60A2794AFDF38ULL }, /* XSUM_XXH64_testdata[1798] */ + { 899, 0x000000009E3779B1ULL, 0xCF13844A85C42640ULL }, /* XSUM_XXH64_testdata[1799] */ + { 900, 0x0000000000000000ULL, 0x34FC8153AD7AB930ULL }, /* XSUM_XXH64_testdata[1800] */ + { 900, 0x000000009E3779B1ULL, 0x8F7622513B1D9DC2ULL }, /* XSUM_XXH64_testdata[1801] */ + { 901, 0x0000000000000000ULL, 0xC3486BA9844E54A7ULL }, /* XSUM_XXH64_testdata[1802] */ + { 901, 0x000000009E3779B1ULL, 0x47B809760623D391ULL }, /* XSUM_XXH64_testdata[1803] */ + { 902, 0x0000000000000000ULL, 0x71853AD64F8289DAULL }, /* XSUM_XXH64_testdata[1804] */ + { 902, 0x000000009E3779B1ULL, 0x90F5DD5F5F64F358ULL }, /* XSUM_XXH64_testdata[1805] */ + { 903, 0x0000000000000000ULL, 0xC8E0F8220B712E0CULL }, /* XSUM_XXH64_testdata[1806] */ + { 903, 0x000000009E3779B1ULL, 0xD6F6EC9CBAA986FEULL }, /* XSUM_XXH64_testdata[1807] */ + { 904, 0x0000000000000000ULL, 0x872BB676473843EAULL }, /* XSUM_XXH64_testdata[1808] */ + { 904, 0x000000009E3779B1ULL, 0xBCA66531B355FBA8ULL }, /* XSUM_XXH64_testdata[1809] */ + { 905, 0x0000000000000000ULL, 0x91511FB251237F8AULL }, /* XSUM_XXH64_testdata[1810] */ + { 905, 0x000000009E3779B1ULL, 0x732F8750B0A8C0DEULL }, /* XSUM_XXH64_testdata[1811] */ + { 906, 0x0000000000000000ULL, 0x334A87FB35C0DCBFULL }, /* XSUM_XXH64_testdata[1812] */ + { 906, 0x000000009E3779B1ULL, 0x3EF0B3C2B540234BULL }, /* XSUM_XXH64_testdata[1813] */ + { 907, 0x0000000000000000ULL, 0xAB9CD37F1726884CULL }, /* XSUM_XXH64_testdata[1814] */ + { 907, 0x000000009E3779B1ULL, 0x65C05C61A776363CULL }, /* XSUM_XXH64_testdata[1815] */ + { 908, 0x0000000000000000ULL, 0x7E2163FB2CF4B65AULL }, /* XSUM_XXH64_testdata[1816] */ + { 908, 0x000000009E3779B1ULL, 0xA053852AB27A3076ULL }, /* XSUM_XXH64_testdata[1817] */ + { 909, 0x0000000000000000ULL, 0xF29A55BE01944078ULL }, /* XSUM_XXH64_testdata[1818] */ + { 909, 0x000000009E3779B1ULL, 0xF63E99236BD744CCULL }, /* XSUM_XXH64_testdata[1819] */ + { 910, 0x0000000000000000ULL, 0xC1C060207E6E3340ULL }, /* XSUM_XXH64_testdata[1820] */ + { 910, 0x000000009E3779B1ULL, 0x132569AFF75C4781ULL }, /* XSUM_XXH64_testdata[1821] */ + { 911, 0x0000000000000000ULL, 0xB854EDCBD1292F42ULL }, /* XSUM_XXH64_testdata[1822] */ + { 911, 0x000000009E3779B1ULL, 0x9678D0C55D435CEBULL }, /* XSUM_XXH64_testdata[1823] */ + { 912, 0x0000000000000000ULL, 0x3D2DCB63A651366CULL }, /* XSUM_XXH64_testdata[1824] */ + { 912, 0x000000009E3779B1ULL, 0x866B93392C2CBE06ULL }, /* XSUM_XXH64_testdata[1825] */ + { 913, 0x0000000000000000ULL, 0xD91CC0E55EB42EDAULL }, /* XSUM_XXH64_testdata[1826] */ + { 913, 0x000000009E3779B1ULL, 0xC1A3DFD9745C4E38ULL }, /* XSUM_XXH64_testdata[1827] */ + { 914, 0x0000000000000000ULL, 0x61431AC8BB741ED2ULL }, /* XSUM_XXH64_testdata[1828] */ + { 914, 0x000000009E3779B1ULL, 0x1B60366055266CF4ULL }, /* XSUM_XXH64_testdata[1829] */ + { 915, 0x0000000000000000ULL, 0xE743BE3F686C9A6AULL }, /* XSUM_XXH64_testdata[1830] */ + { 915, 0x000000009E3779B1ULL, 0xA1E4CE411D17F0AEULL }, /* XSUM_XXH64_testdata[1831] */ + { 916, 0x0000000000000000ULL, 0x1BC2C6AD98A4B8EBULL }, /* XSUM_XXH64_testdata[1832] */ + { 916, 0x000000009E3779B1ULL, 0xBDB94942A6166561ULL }, /* XSUM_XXH64_testdata[1833] */ + { 917, 0x0000000000000000ULL, 0x061C077FABCD4E19ULL }, /* XSUM_XXH64_testdata[1834] */ + { 917, 0x000000009E3779B1ULL, 0xA9D76EFF6A1B71A7ULL }, /* XSUM_XXH64_testdata[1835] */ + { 918, 0x0000000000000000ULL, 0xF64A0DD5B51C30E5ULL }, /* XSUM_XXH64_testdata[1836] */ + { 918, 0x000000009E3779B1ULL, 0x32F10E67903A0CEAULL }, /* XSUM_XXH64_testdata[1837] */ + { 919, 0x0000000000000000ULL, 0x6B41A712104E4FF4ULL }, /* XSUM_XXH64_testdata[1838] */ + { 919, 0x000000009E3779B1ULL, 0xE1B719F756DA4F87ULL }, /* XSUM_XXH64_testdata[1839] */ + { 920, 0x0000000000000000ULL, 0xB3C2A0619DEA5257ULL }, /* XSUM_XXH64_testdata[1840] */ + { 920, 0x000000009E3779B1ULL, 0x56D919AF131CF2D0ULL }, /* XSUM_XXH64_testdata[1841] */ + { 921, 0x0000000000000000ULL, 0x51D960A7EB378757ULL }, /* XSUM_XXH64_testdata[1842] */ + { 921, 0x000000009E3779B1ULL, 0x34CBFFC317CEF49DULL }, /* XSUM_XXH64_testdata[1843] */ + { 922, 0x0000000000000000ULL, 0x21636E83700D176AULL }, /* XSUM_XXH64_testdata[1844] */ + { 922, 0x000000009E3779B1ULL, 0xCCD650B5D80B7A42ULL }, /* XSUM_XXH64_testdata[1845] */ + { 923, 0x0000000000000000ULL, 0x9CBA9ADDA8FD08A0ULL }, /* XSUM_XXH64_testdata[1846] */ + { 923, 0x000000009E3779B1ULL, 0x0019FD4DEAE8E468ULL }, /* XSUM_XXH64_testdata[1847] */ + { 924, 0x0000000000000000ULL, 0x1A52459A2BA85BB9ULL }, /* XSUM_XXH64_testdata[1848] */ + { 924, 0x000000009E3779B1ULL, 0x4F90992B6872BFC9ULL }, /* XSUM_XXH64_testdata[1849] */ + { 925, 0x0000000000000000ULL, 0x3C288D42FD23A661ULL }, /* XSUM_XXH64_testdata[1850] */ + { 925, 0x000000009E3779B1ULL, 0xE0C5567515568C70ULL }, /* XSUM_XXH64_testdata[1851] */ + { 926, 0x0000000000000000ULL, 0xEB52082513C838E7ULL }, /* XSUM_XXH64_testdata[1852] */ + { 926, 0x000000009E3779B1ULL, 0xC6ACA51B377583F2ULL }, /* XSUM_XXH64_testdata[1853] */ + { 927, 0x0000000000000000ULL, 0xCFA52F73570DA102ULL }, /* XSUM_XXH64_testdata[1854] */ + { 927, 0x000000009E3779B1ULL, 0x181B265D9E12C92AULL }, /* XSUM_XXH64_testdata[1855] */ + { 928, 0x0000000000000000ULL, 0xB1D71859CCDC145CULL }, /* XSUM_XXH64_testdata[1856] */ + { 928, 0x000000009E3779B1ULL, 0xD6CF4B6547EC69EEULL }, /* XSUM_XXH64_testdata[1857] */ + { 929, 0x0000000000000000ULL, 0x875AA57CF1490668ULL }, /* XSUM_XXH64_testdata[1858] */ + { 929, 0x000000009E3779B1ULL, 0x7EBEC9A7306FD4F9ULL }, /* XSUM_XXH64_testdata[1859] */ + { 930, 0x0000000000000000ULL, 0x72F30568D01F232CULL }, /* XSUM_XXH64_testdata[1860] */ + { 930, 0x000000009E3779B1ULL, 0x5A8008AC4C3FB332ULL }, /* XSUM_XXH64_testdata[1861] */ + { 931, 0x0000000000000000ULL, 0xBCD03F6C010345C6ULL }, /* XSUM_XXH64_testdata[1862] */ + { 931, 0x000000009E3779B1ULL, 0x7A2F074904B3B410ULL }, /* XSUM_XXH64_testdata[1863] */ + { 932, 0x0000000000000000ULL, 0x8903490B16E17640ULL }, /* XSUM_XXH64_testdata[1864] */ + { 932, 0x000000009E3779B1ULL, 0x223416F08376FDE5ULL }, /* XSUM_XXH64_testdata[1865] */ + { 933, 0x0000000000000000ULL, 0xF1A6803FE1DDC5C9ULL }, /* XSUM_XXH64_testdata[1866] */ + { 933, 0x000000009E3779B1ULL, 0xD15553FF4F1ED44CULL }, /* XSUM_XXH64_testdata[1867] */ + { 934, 0x0000000000000000ULL, 0xA525D3097874B9A2ULL }, /* XSUM_XXH64_testdata[1868] */ + { 934, 0x000000009E3779B1ULL, 0xAA2A747CD00B136FULL }, /* XSUM_XXH64_testdata[1869] */ + { 935, 0x0000000000000000ULL, 0x7F0CF6FBE99304A9ULL }, /* XSUM_XXH64_testdata[1870] */ + { 935, 0x000000009E3779B1ULL, 0xFBD72C7CC65544ADULL }, /* XSUM_XXH64_testdata[1871] */ + { 936, 0x0000000000000000ULL, 0x271BA1F7BA69FDD6ULL }, /* XSUM_XXH64_testdata[1872] */ + { 936, 0x000000009E3779B1ULL, 0xFCEAFEE0E7192C17ULL }, /* XSUM_XXH64_testdata[1873] */ + { 937, 0x0000000000000000ULL, 0xE247C25676C513CBULL }, /* XSUM_XXH64_testdata[1874] */ + { 937, 0x000000009E3779B1ULL, 0xE033EC0A4174FF52ULL }, /* XSUM_XXH64_testdata[1875] */ + { 938, 0x0000000000000000ULL, 0xBEFB4A77652C56CCULL }, /* XSUM_XXH64_testdata[1876] */ + { 938, 0x000000009E3779B1ULL, 0xC2B61FDD3ADF5FF7ULL }, /* XSUM_XXH64_testdata[1877] */ + { 939, 0x0000000000000000ULL, 0x6DCDECDEAB57050CULL }, /* XSUM_XXH64_testdata[1878] */ + { 939, 0x000000009E3779B1ULL, 0x92EFA9FA284D912AULL }, /* XSUM_XXH64_testdata[1879] */ + { 940, 0x0000000000000000ULL, 0xE4E419CBB76D0043ULL }, /* XSUM_XXH64_testdata[1880] */ + { 940, 0x000000009E3779B1ULL, 0x8839ADEFCB662FDFULL }, /* XSUM_XXH64_testdata[1881] */ + { 941, 0x0000000000000000ULL, 0x3068ACB573BD2B6EULL }, /* XSUM_XXH64_testdata[1882] */ + { 941, 0x000000009E3779B1ULL, 0x839D40868319A3C4ULL }, /* XSUM_XXH64_testdata[1883] */ + { 942, 0x0000000000000000ULL, 0x344DEE28071338FBULL }, /* XSUM_XXH64_testdata[1884] */ + { 942, 0x000000009E3779B1ULL, 0x83E70B9C55EF5493ULL }, /* XSUM_XXH64_testdata[1885] */ + { 943, 0x0000000000000000ULL, 0xFDB4A05A196ED5EDULL }, /* XSUM_XXH64_testdata[1886] */ + { 943, 0x000000009E3779B1ULL, 0xAED74734787C4863ULL }, /* XSUM_XXH64_testdata[1887] */ + { 944, 0x0000000000000000ULL, 0xE722DCF003C977BAULL }, /* XSUM_XXH64_testdata[1888] */ + { 944, 0x000000009E3779B1ULL, 0x895309BDF32FDDE3ULL }, /* XSUM_XXH64_testdata[1889] */ + { 945, 0x0000000000000000ULL, 0x43B3463ABE9F927AULL }, /* XSUM_XXH64_testdata[1890] */ + { 945, 0x000000009E3779B1ULL, 0x576727D13DE3DD5DULL }, /* XSUM_XXH64_testdata[1891] */ + { 946, 0x0000000000000000ULL, 0x5B9767F7D6B88323ULL }, /* XSUM_XXH64_testdata[1892] */ + { 946, 0x000000009E3779B1ULL, 0x3E216AC3955B31C0ULL }, /* XSUM_XXH64_testdata[1893] */ + { 947, 0x0000000000000000ULL, 0xDA3134F286975C2FULL }, /* XSUM_XXH64_testdata[1894] */ + { 947, 0x000000009E3779B1ULL, 0x3295559B81610B4BULL }, /* XSUM_XXH64_testdata[1895] */ + { 948, 0x0000000000000000ULL, 0xA97793ACCF18126EULL }, /* XSUM_XXH64_testdata[1896] */ + { 948, 0x000000009E3779B1ULL, 0x9B108BD762652A33ULL }, /* XSUM_XXH64_testdata[1897] */ + { 949, 0x0000000000000000ULL, 0xF23C83E1404A8C17ULL }, /* XSUM_XXH64_testdata[1898] */ + { 949, 0x000000009E3779B1ULL, 0x4716B3E039D6BFD9ULL }, /* XSUM_XXH64_testdata[1899] */ + { 950, 0x0000000000000000ULL, 0x599BE2B47286251CULL }, /* XSUM_XXH64_testdata[1900] */ + { 950, 0x000000009E3779B1ULL, 0x913010210E777D39ULL }, /* XSUM_XXH64_testdata[1901] */ + { 951, 0x0000000000000000ULL, 0x5F0420471473F3BDULL }, /* XSUM_XXH64_testdata[1902] */ + { 951, 0x000000009E3779B1ULL, 0xEA9D059F7016A352ULL }, /* XSUM_XXH64_testdata[1903] */ + { 952, 0x0000000000000000ULL, 0x1AA24C2CFDFF7C48ULL }, /* XSUM_XXH64_testdata[1904] */ + { 952, 0x000000009E3779B1ULL, 0x2E1A1CC2C2611FA7ULL }, /* XSUM_XXH64_testdata[1905] */ + { 953, 0x0000000000000000ULL, 0xB5CA404C3C988EBBULL }, /* XSUM_XXH64_testdata[1906] */ + { 953, 0x000000009E3779B1ULL, 0xA348801D1DF18709ULL }, /* XSUM_XXH64_testdata[1907] */ + { 954, 0x0000000000000000ULL, 0x8046EC1FBE642994ULL }, /* XSUM_XXH64_testdata[1908] */ + { 954, 0x000000009E3779B1ULL, 0x4238910281F31EDCULL }, /* XSUM_XXH64_testdata[1909] */ + { 955, 0x0000000000000000ULL, 0x56649EB17A8DC510ULL }, /* XSUM_XXH64_testdata[1910] */ + { 955, 0x000000009E3779B1ULL, 0x0750A96F3B397545ULL }, /* XSUM_XXH64_testdata[1911] */ + { 956, 0x0000000000000000ULL, 0xEEDA845627F4B952ULL }, /* XSUM_XXH64_testdata[1912] */ + { 956, 0x000000009E3779B1ULL, 0x538BB5300412CE68ULL }, /* XSUM_XXH64_testdata[1913] */ + { 957, 0x0000000000000000ULL, 0x4696EADEEF6FBB6CULL }, /* XSUM_XXH64_testdata[1914] */ + { 957, 0x000000009E3779B1ULL, 0x9B474549A6AC64E8ULL }, /* XSUM_XXH64_testdata[1915] */ + { 958, 0x0000000000000000ULL, 0xEC5A49A32C3DC271ULL }, /* XSUM_XXH64_testdata[1916] */ + { 958, 0x000000009E3779B1ULL, 0xB5F40B5A8E733749ULL }, /* XSUM_XXH64_testdata[1917] */ + { 959, 0x0000000000000000ULL, 0x5939F158CAAEDA6EULL }, /* XSUM_XXH64_testdata[1918] */ + { 959, 0x000000009E3779B1ULL, 0x69E7CA70696BC500ULL }, /* XSUM_XXH64_testdata[1919] */ + { 960, 0x0000000000000000ULL, 0x750E09CF7E1CD3B8ULL }, /* XSUM_XXH64_testdata[1920] */ + { 960, 0x000000009E3779B1ULL, 0x2DB5F46D063160B3ULL }, /* XSUM_XXH64_testdata[1921] */ + { 961, 0x0000000000000000ULL, 0xE11E19248104134FULL }, /* XSUM_XXH64_testdata[1922] */ + { 961, 0x000000009E3779B1ULL, 0x8989828CDDFD747BULL }, /* XSUM_XXH64_testdata[1923] */ + { 962, 0x0000000000000000ULL, 0xF3454B991D6A8D90ULL }, /* XSUM_XXH64_testdata[1924] */ + { 962, 0x000000009E3779B1ULL, 0xD35E5E9384812064ULL }, /* XSUM_XXH64_testdata[1925] */ + { 963, 0x0000000000000000ULL, 0x8C2C92FDDA8B6524ULL }, /* XSUM_XXH64_testdata[1926] */ + { 963, 0x000000009E3779B1ULL, 0xBAC996F4F66E2BDDULL }, /* XSUM_XXH64_testdata[1927] */ + { 964, 0x0000000000000000ULL, 0xF6E54E080621A525ULL }, /* XSUM_XXH64_testdata[1928] */ + { 964, 0x000000009E3779B1ULL, 0x112E799830BA167BULL }, /* XSUM_XXH64_testdata[1929] */ + { 965, 0x0000000000000000ULL, 0x556DEB77E1B98F4CULL }, /* XSUM_XXH64_testdata[1930] */ + { 965, 0x000000009E3779B1ULL, 0xBA1546C614ABD0BBULL }, /* XSUM_XXH64_testdata[1931] */ + { 966, 0x0000000000000000ULL, 0xA2171D71218B9848ULL }, /* XSUM_XXH64_testdata[1932] */ + { 966, 0x000000009E3779B1ULL, 0xC1C9BADEC2E1B280ULL }, /* XSUM_XXH64_testdata[1933] */ + { 967, 0x0000000000000000ULL, 0xB7A00C303A4192B5ULL }, /* XSUM_XXH64_testdata[1934] */ + { 967, 0x000000009E3779B1ULL, 0xD184F4CA5B2CC460ULL }, /* XSUM_XXH64_testdata[1935] */ + { 968, 0x0000000000000000ULL, 0xF80B7C0CFBC3B4CDULL }, /* XSUM_XXH64_testdata[1936] */ + { 968, 0x000000009E3779B1ULL, 0xFB099CFB0AD9D389ULL }, /* XSUM_XXH64_testdata[1937] */ + { 969, 0x0000000000000000ULL, 0x742DC7518702E796ULL }, /* XSUM_XXH64_testdata[1938] */ + { 969, 0x000000009E3779B1ULL, 0x5EE337A15CA15E00ULL }, /* XSUM_XXH64_testdata[1939] */ + { 970, 0x0000000000000000ULL, 0xAE0EA7F413CA1EF5ULL }, /* XSUM_XXH64_testdata[1940] */ + { 970, 0x000000009E3779B1ULL, 0xC353E324D2A28D0DULL }, /* XSUM_XXH64_testdata[1941] */ + { 971, 0x0000000000000000ULL, 0xD26E87F51DA81652ULL }, /* XSUM_XXH64_testdata[1942] */ + { 971, 0x000000009E3779B1ULL, 0xC0F3AFC9249B3637ULL }, /* XSUM_XXH64_testdata[1943] */ + { 972, 0x0000000000000000ULL, 0xA9799503AF071AC9ULL }, /* XSUM_XXH64_testdata[1944] */ + { 972, 0x000000009E3779B1ULL, 0xF24AF0EF07F25EB6ULL }, /* XSUM_XXH64_testdata[1945] */ + { 973, 0x0000000000000000ULL, 0xC66DE0325C52A78DULL }, /* XSUM_XXH64_testdata[1946] */ + { 973, 0x000000009E3779B1ULL, 0x8F7ED5FF94D75176ULL }, /* XSUM_XXH64_testdata[1947] */ + { 974, 0x0000000000000000ULL, 0xD3FB599095E7A29FULL }, /* XSUM_XXH64_testdata[1948] */ + { 974, 0x000000009E3779B1ULL, 0xFEC405E51028CA41ULL }, /* XSUM_XXH64_testdata[1949] */ + { 975, 0x0000000000000000ULL, 0x99449A872FBB65DDULL }, /* XSUM_XXH64_testdata[1950] */ + { 975, 0x000000009E3779B1ULL, 0x7DB3947E8EB8D55FULL }, /* XSUM_XXH64_testdata[1951] */ + { 976, 0x0000000000000000ULL, 0x4A47B732F5E06E99ULL }, /* XSUM_XXH64_testdata[1952] */ + { 976, 0x000000009E3779B1ULL, 0xB56FBA2825D13A23ULL }, /* XSUM_XXH64_testdata[1953] */ + { 977, 0x0000000000000000ULL, 0x8C0847CAF410EA6DULL }, /* XSUM_XXH64_testdata[1954] */ + { 977, 0x000000009E3779B1ULL, 0x39FEBA2B4BAA9F00ULL }, /* XSUM_XXH64_testdata[1955] */ + { 978, 0x0000000000000000ULL, 0xF16D4BE3E3B511DCULL }, /* XSUM_XXH64_testdata[1956] */ + { 978, 0x000000009E3779B1ULL, 0x6389B4C8B6BEA831ULL }, /* XSUM_XXH64_testdata[1957] */ + { 979, 0x0000000000000000ULL, 0x2A296AC3FC625219ULL }, /* XSUM_XXH64_testdata[1958] */ + { 979, 0x000000009E3779B1ULL, 0xAC9ADB163AA0D18EULL }, /* XSUM_XXH64_testdata[1959] */ + { 980, 0x0000000000000000ULL, 0x6061CEB7EFF73662ULL }, /* XSUM_XXH64_testdata[1960] */ + { 980, 0x000000009E3779B1ULL, 0x18034E6036C02D60ULL }, /* XSUM_XXH64_testdata[1961] */ + { 981, 0x0000000000000000ULL, 0xE8F825B506A92E90ULL }, /* XSUM_XXH64_testdata[1962] */ + { 981, 0x000000009E3779B1ULL, 0xF5ECF8C154445F4BULL }, /* XSUM_XXH64_testdata[1963] */ + { 982, 0x0000000000000000ULL, 0x79E9D50DD462C193ULL }, /* XSUM_XXH64_testdata[1964] */ + { 982, 0x000000009E3779B1ULL, 0xE0D4033A724A9A79ULL }, /* XSUM_XXH64_testdata[1965] */ + { 983, 0x0000000000000000ULL, 0x98C1114F8ACBAB27ULL }, /* XSUM_XXH64_testdata[1966] */ + { 983, 0x000000009E3779B1ULL, 0xB4C9B0F97A001F59ULL }, /* XSUM_XXH64_testdata[1967] */ + { 984, 0x0000000000000000ULL, 0xF8C65A26261594B9ULL }, /* XSUM_XXH64_testdata[1968] */ + { 984, 0x000000009E3779B1ULL, 0x8AD9570512182DDDULL }, /* XSUM_XXH64_testdata[1969] */ + { 985, 0x0000000000000000ULL, 0x53C6D93F6D817304ULL }, /* XSUM_XXH64_testdata[1970] */ + { 985, 0x000000009E3779B1ULL, 0x49FF2408C49B698CULL }, /* XSUM_XXH64_testdata[1971] */ + { 986, 0x0000000000000000ULL, 0x0E9C26B081B5C0DCULL }, /* XSUM_XXH64_testdata[1972] */ + { 986, 0x000000009E3779B1ULL, 0x914E0F78AFD29E54ULL }, /* XSUM_XXH64_testdata[1973] */ + { 987, 0x0000000000000000ULL, 0xAF2249EC5A9D91ADULL }, /* XSUM_XXH64_testdata[1974] */ + { 987, 0x000000009E3779B1ULL, 0xE23567B62D4EFE9FULL }, /* XSUM_XXH64_testdata[1975] */ + { 988, 0x0000000000000000ULL, 0x30B27E44725B629AULL }, /* XSUM_XXH64_testdata[1976] */ + { 988, 0x000000009E3779B1ULL, 0x0BD2A9B438B4B30FULL }, /* XSUM_XXH64_testdata[1977] */ + { 989, 0x0000000000000000ULL, 0x9E9883AB49E285CCULL }, /* XSUM_XXH64_testdata[1978] */ + { 989, 0x000000009E3779B1ULL, 0xE9C1EB98F3FE856DULL }, /* XSUM_XXH64_testdata[1979] */ + { 990, 0x0000000000000000ULL, 0xC2579D0DF7A48C58ULL }, /* XSUM_XXH64_testdata[1980] */ + { 990, 0x000000009E3779B1ULL, 0x4E470CD8DAF8A1C6ULL }, /* XSUM_XXH64_testdata[1981] */ + { 991, 0x0000000000000000ULL, 0x8750F562170FF762ULL }, /* XSUM_XXH64_testdata[1982] */ + { 991, 0x000000009E3779B1ULL, 0xF404CA139E272C7AULL }, /* XSUM_XXH64_testdata[1983] */ + { 992, 0x0000000000000000ULL, 0x82625FC90DB9FC5EULL }, /* XSUM_XXH64_testdata[1984] */ + { 992, 0x000000009E3779B1ULL, 0x207215F0735B9C0CULL }, /* XSUM_XXH64_testdata[1985] */ + { 993, 0x0000000000000000ULL, 0x36C84A9DEAF54B57ULL }, /* XSUM_XXH64_testdata[1986] */ + { 993, 0x000000009E3779B1ULL, 0x7AD5887EF9DFDB3DULL }, /* XSUM_XXH64_testdata[1987] */ + { 994, 0x0000000000000000ULL, 0xBCA6A33B0126DCC6ULL }, /* XSUM_XXH64_testdata[1988] */ + { 994, 0x000000009E3779B1ULL, 0x254933D9522A4338ULL }, /* XSUM_XXH64_testdata[1989] */ + { 995, 0x0000000000000000ULL, 0xCC817C7754AC069BULL }, /* XSUM_XXH64_testdata[1990] */ + { 995, 0x000000009E3779B1ULL, 0x6C6D7066AC64843BULL }, /* XSUM_XXH64_testdata[1991] */ + { 996, 0x0000000000000000ULL, 0x69D1CFAB4B334AD9ULL }, /* XSUM_XXH64_testdata[1992] */ + { 996, 0x000000009E3779B1ULL, 0x7506295E03E5E62AULL }, /* XSUM_XXH64_testdata[1993] */ + { 997, 0x0000000000000000ULL, 0x6A00AAEDCE614EE0ULL }, /* XSUM_XXH64_testdata[1994] */ + { 997, 0x000000009E3779B1ULL, 0xF14BBA7E77A4116AULL }, /* XSUM_XXH64_testdata[1995] */ + { 998, 0x0000000000000000ULL, 0xE62B6467D2FDE480ULL }, /* XSUM_XXH64_testdata[1996] */ + { 998, 0x000000009E3779B1ULL, 0x94CCD1F6294C3BCDULL }, /* XSUM_XXH64_testdata[1997] */ + { 999, 0x0000000000000000ULL, 0x22EAC650671B0AA7ULL }, /* XSUM_XXH64_testdata[1998] */ + { 999, 0x000000009E3779B1ULL, 0x66285FFFD248F989ULL }, /* XSUM_XXH64_testdata[1999] */ + { 1000, 0x0000000000000000ULL, 0x52BD1358F22E9EF7ULL }, /* XSUM_XXH64_testdata[2000] */ + { 1000, 0x000000009E3779B1ULL, 0x72751A2408017E26ULL }, /* XSUM_XXH64_testdata[2001] */ + { 1001, 0x0000000000000000ULL, 0xB480E8B7515D04DDULL }, /* XSUM_XXH64_testdata[2002] */ + { 1001, 0x000000009E3779B1ULL, 0xEDE672D0F1EA02AAULL }, /* XSUM_XXH64_testdata[2003] */ + { 1002, 0x0000000000000000ULL, 0x84F40BC5966C5FABULL }, /* XSUM_XXH64_testdata[2004] */ + { 1002, 0x000000009E3779B1ULL, 0x1D0A524CA46775BBULL }, /* XSUM_XXH64_testdata[2005] */ + { 1003, 0x0000000000000000ULL, 0xBF6A62F786B68292ULL }, /* XSUM_XXH64_testdata[2006] */ + { 1003, 0x000000009E3779B1ULL, 0x03998F6F4F74F640ULL }, /* XSUM_XXH64_testdata[2007] */ + { 1004, 0x0000000000000000ULL, 0xFB534827BF545747ULL }, /* XSUM_XXH64_testdata[2008] */ + { 1004, 0x000000009E3779B1ULL, 0x677EAF30B29F2891ULL }, /* XSUM_XXH64_testdata[2009] */ + { 1005, 0x0000000000000000ULL, 0xB5E4615A2184A07FULL }, /* XSUM_XXH64_testdata[2010] */ + { 1005, 0x000000009E3779B1ULL, 0x9E6062FC87389D70ULL }, /* XSUM_XXH64_testdata[2011] */ + { 1006, 0x0000000000000000ULL, 0xFF6939DED1FF7ED2ULL }, /* XSUM_XXH64_testdata[2012] */ + { 1006, 0x000000009E3779B1ULL, 0xE53E5A582CA4C1C5ULL }, /* XSUM_XXH64_testdata[2013] */ + { 1007, 0x0000000000000000ULL, 0xA8D82A9AE2D6E8DCULL }, /* XSUM_XXH64_testdata[2014] */ + { 1007, 0x000000009E3779B1ULL, 0xDB3B18216E4DB05DULL }, /* XSUM_XXH64_testdata[2015] */ + { 1008, 0x0000000000000000ULL, 0x448D96F74D9C48EFULL }, /* XSUM_XXH64_testdata[2016] */ + { 1008, 0x000000009E3779B1ULL, 0x1B7D1895174728EBULL }, /* XSUM_XXH64_testdata[2017] */ + { 1009, 0x0000000000000000ULL, 0xACF2E9D6BAC53EC4ULL }, /* XSUM_XXH64_testdata[2018] */ + { 1009, 0x000000009E3779B1ULL, 0x8B93A579D90FA20FULL }, /* XSUM_XXH64_testdata[2019] */ + { 1010, 0x0000000000000000ULL, 0x3836C816BD0EFA4FULL }, /* XSUM_XXH64_testdata[2020] */ + { 1010, 0x000000009E3779B1ULL, 0xD9E2AA4EFB329F75ULL }, /* XSUM_XXH64_testdata[2021] */ + { 1011, 0x0000000000000000ULL, 0x0C2C0B4BA7A25E09ULL }, /* XSUM_XXH64_testdata[2022] */ + { 1011, 0x000000009E3779B1ULL, 0x2606C925EE0F0419ULL }, /* XSUM_XXH64_testdata[2023] */ + { 1012, 0x0000000000000000ULL, 0x62AC5C1F4CB7928CULL }, /* XSUM_XXH64_testdata[2024] */ + { 1012, 0x000000009E3779B1ULL, 0x24D52EAC502F74F7ULL }, /* XSUM_XXH64_testdata[2025] */ + { 1013, 0x0000000000000000ULL, 0x786BB0D229F29B54ULL }, /* XSUM_XXH64_testdata[2026] */ + { 1013, 0x000000009E3779B1ULL, 0x747E6DFAE1FF2BBCULL }, /* XSUM_XXH64_testdata[2027] */ + { 1014, 0x0000000000000000ULL, 0xDBFE59C341076FA5ULL }, /* XSUM_XXH64_testdata[2028] */ + { 1014, 0x000000009E3779B1ULL, 0xCB68F2361C5AD1FBULL }, /* XSUM_XXH64_testdata[2029] */ + { 1015, 0x0000000000000000ULL, 0x931E78AA3285CAFFULL }, /* XSUM_XXH64_testdata[2030] */ + { 1015, 0x000000009E3779B1ULL, 0x78236895F00A5AA5ULL }, /* XSUM_XXH64_testdata[2031] */ + { 1016, 0x0000000000000000ULL, 0xF26CB2AB4B1409CEULL }, /* XSUM_XXH64_testdata[2032] */ + { 1016, 0x000000009E3779B1ULL, 0xE9199F83511D52E5ULL }, /* XSUM_XXH64_testdata[2033] */ + { 1017, 0x0000000000000000ULL, 0x5E13E01057523404ULL }, /* XSUM_XXH64_testdata[2034] */ + { 1017, 0x000000009E3779B1ULL, 0x7A28922AECB03E49ULL }, /* XSUM_XXH64_testdata[2035] */ + { 1018, 0x0000000000000000ULL, 0x92274DAF25DCFCBBULL }, /* XSUM_XXH64_testdata[2036] */ + { 1018, 0x000000009E3779B1ULL, 0x4D436A00DB8CB24EULL }, /* XSUM_XXH64_testdata[2037] */ + { 1019, 0x0000000000000000ULL, 0x491D3C12E9452FECULL }, /* XSUM_XXH64_testdata[2038] */ + { 1019, 0x000000009E3779B1ULL, 0xBDE075C6FEA8DE02ULL }, /* XSUM_XXH64_testdata[2039] */ + { 1020, 0x0000000000000000ULL, 0x2EE1FABEA33935D6ULL }, /* XSUM_XXH64_testdata[2040] */ + { 1020, 0x000000009E3779B1ULL, 0x26737225155A83FEULL }, /* XSUM_XXH64_testdata[2041] */ + { 1021, 0x0000000000000000ULL, 0xA1B09D2D377A1D66ULL }, /* XSUM_XXH64_testdata[2042] */ + { 1021, 0x000000009E3779B1ULL, 0x92DEEB2EF1083DCAULL }, /* XSUM_XXH64_testdata[2043] */ + { 1022, 0x0000000000000000ULL, 0x791952F3D2A33E0AULL }, /* XSUM_XXH64_testdata[2044] */ + { 1022, 0x000000009E3779B1ULL, 0x663E52964338A17DULL }, /* XSUM_XXH64_testdata[2045] */ + { 1023, 0x0000000000000000ULL, 0xAAC72718B7620924ULL }, /* XSUM_XXH64_testdata[2046] */ + { 1023, 0x000000009E3779B1ULL, 0xE0935AF8C59B7E98ULL }, /* XSUM_XXH64_testdata[2047] */ + { 1024, 0x0000000000000000ULL, 0x4775BF7CACE4D177ULL }, /* XSUM_XXH64_testdata[2048] */ + { 1024, 0x000000009E3779B1ULL, 0x238CF9296898B465ULL }, /* XSUM_XXH64_testdata[2049] */ + { 1025, 0x0000000000000000ULL, 0x847FA6006D7C2AC0ULL }, /* XSUM_XXH64_testdata[2050] */ + { 1025, 0x000000009E3779B1ULL, 0xB2A65F21FB8D0F5EULL }, /* XSUM_XXH64_testdata[2051] */ + { 1026, 0x0000000000000000ULL, 0x9400810EBDD39C5AULL }, /* XSUM_XXH64_testdata[2052] */ + { 1026, 0x000000009E3779B1ULL, 0x82E3F353C6A49DF3ULL }, /* XSUM_XXH64_testdata[2053] */ + { 1027, 0x0000000000000000ULL, 0x2DE816315ECE98EDULL }, /* XSUM_XXH64_testdata[2054] */ + { 1027, 0x000000009E3779B1ULL, 0xF76930161775C1AAULL }, /* XSUM_XXH64_testdata[2055] */ + { 1028, 0x0000000000000000ULL, 0x2F727A3F02CF40ACULL }, /* XSUM_XXH64_testdata[2056] */ + { 1028, 0x000000009E3779B1ULL, 0xACC9532D67E1F412ULL }, /* XSUM_XXH64_testdata[2057] */ + { 1029, 0x0000000000000000ULL, 0x1FAEED43381CC350ULL }, /* XSUM_XXH64_testdata[2058] */ + { 1029, 0x000000009E3779B1ULL, 0x4A59E208A708A00EULL }, /* XSUM_XXH64_testdata[2059] */ + { 1030, 0x0000000000000000ULL, 0xA9A789D6B3ED2AB5ULL }, /* XSUM_XXH64_testdata[2060] */ + { 1030, 0x000000009E3779B1ULL, 0x4FC79BE7BADF83C8ULL }, /* XSUM_XXH64_testdata[2061] */ + { 1031, 0x0000000000000000ULL, 0x7ED4616339789533ULL }, /* XSUM_XXH64_testdata[2062] */ + { 1031, 0x000000009E3779B1ULL, 0xF4E55A1CA96AA533ULL }, /* XSUM_XXH64_testdata[2063] */ + { 1032, 0x0000000000000000ULL, 0x50A67DFFCFE9DCA9ULL }, /* XSUM_XXH64_testdata[2064] */ + { 1032, 0x000000009E3779B1ULL, 0x20C6042F883EE813ULL }, /* XSUM_XXH64_testdata[2065] */ + { 1033, 0x0000000000000000ULL, 0x4C267E0F8B0394BAULL }, /* XSUM_XXH64_testdata[2066] */ + { 1033, 0x000000009E3779B1ULL, 0xB5368D1175B5F4A3ULL }, /* XSUM_XXH64_testdata[2067] */ + { 1034, 0x0000000000000000ULL, 0x9A6F2DAE8F28DD5DULL }, /* XSUM_XXH64_testdata[2068] */ + { 1034, 0x000000009E3779B1ULL, 0x58A4412A0EC58060ULL }, /* XSUM_XXH64_testdata[2069] */ + { 1035, 0x0000000000000000ULL, 0xE353FDB7C8FC8D15ULL }, /* XSUM_XXH64_testdata[2070] */ + { 1035, 0x000000009E3779B1ULL, 0xD05C111B7F5DBB91ULL }, /* XSUM_XXH64_testdata[2071] */ + { 1036, 0x0000000000000000ULL, 0xC1DA0CC2EB62B342ULL }, /* XSUM_XXH64_testdata[2072] */ + { 1036, 0x000000009E3779B1ULL, 0xEE69BDE57BE759A4ULL }, /* XSUM_XXH64_testdata[2073] */ + { 1037, 0x0000000000000000ULL, 0xF7B88F7002C5A4A4ULL }, /* XSUM_XXH64_testdata[2074] */ + { 1037, 0x000000009E3779B1ULL, 0xECB187C58898BCE0ULL }, /* XSUM_XXH64_testdata[2075] */ + { 1038, 0x0000000000000000ULL, 0xC3FB1D1518ECC87EULL }, /* XSUM_XXH64_testdata[2076] */ + { 1038, 0x000000009E3779B1ULL, 0xBBA21C6E6134ECBFULL }, /* XSUM_XXH64_testdata[2077] */ + { 1039, 0x0000000000000000ULL, 0xE5B4095F61120E36ULL }, /* XSUM_XXH64_testdata[2078] */ + { 1039, 0x000000009E3779B1ULL, 0xB504E4EF8CBCCF5DULL }, /* XSUM_XXH64_testdata[2079] */ + { 1040, 0x0000000000000000ULL, 0x1B53D42AA76BD71AULL }, /* XSUM_XXH64_testdata[2080] */ + { 1040, 0x000000009E3779B1ULL, 0x3ECA620E8CA0E162ULL }, /* XSUM_XXH64_testdata[2081] */ + { 1041, 0x0000000000000000ULL, 0x473D4779C838A069ULL }, /* XSUM_XXH64_testdata[2082] */ + { 1041, 0x000000009E3779B1ULL, 0xFF807BE46C510E36ULL }, /* XSUM_XXH64_testdata[2083] */ + { 1042, 0x0000000000000000ULL, 0x1D9940A24B80F97FULL }, /* XSUM_XXH64_testdata[2084] */ + { 1042, 0x000000009E3779B1ULL, 0xBD60D6ED58A888C3ULL }, /* XSUM_XXH64_testdata[2085] */ + { 1043, 0x0000000000000000ULL, 0x35252855430B9A3AULL }, /* XSUM_XXH64_testdata[2086] */ + { 1043, 0x000000009E3779B1ULL, 0x12394E6629A2394FULL }, /* XSUM_XXH64_testdata[2087] */ + { 1044, 0x0000000000000000ULL, 0x04EDD587E551081DULL }, /* XSUM_XXH64_testdata[2088] */ + { 1044, 0x000000009E3779B1ULL, 0x1AE86BF0CABD862BULL }, /* XSUM_XXH64_testdata[2089] */ + { 1045, 0x0000000000000000ULL, 0xB8F2D42D37481FA5ULL }, /* XSUM_XXH64_testdata[2090] */ + { 1045, 0x000000009E3779B1ULL, 0x250AB92B17C7DD2EULL }, /* XSUM_XXH64_testdata[2091] */ + { 1046, 0x0000000000000000ULL, 0x004A1C0FA3C6CD18ULL }, /* XSUM_XXH64_testdata[2092] */ + { 1046, 0x000000009E3779B1ULL, 0x807402EA52F8EFF7ULL }, /* XSUM_XXH64_testdata[2093] */ + { 1047, 0x0000000000000000ULL, 0xB034FAD5832FB8C0ULL }, /* XSUM_XXH64_testdata[2094] */ + { 1047, 0x000000009E3779B1ULL, 0x53274E56DE083226ULL }, /* XSUM_XXH64_testdata[2095] */ + { 1048, 0x0000000000000000ULL, 0x17542E3F48CFD64EULL }, /* XSUM_XXH64_testdata[2096] */ + { 1048, 0x000000009E3779B1ULL, 0xB2C45D680285EACBULL }, /* XSUM_XXH64_testdata[2097] */ + { 1049, 0x0000000000000000ULL, 0x7BA19DF2AE6AFBA2ULL }, /* XSUM_XXH64_testdata[2098] */ + { 1049, 0x000000009E3779B1ULL, 0x0709B30BB9936974ULL }, /* XSUM_XXH64_testdata[2099] */ + { 1050, 0x0000000000000000ULL, 0xC1DF9499D4B9556EULL }, /* XSUM_XXH64_testdata[2100] */ + { 1050, 0x000000009E3779B1ULL, 0x5E335FADC2BC52EBULL }, /* XSUM_XXH64_testdata[2101] */ + { 1051, 0x0000000000000000ULL, 0x85D1DD53E32148C0ULL }, /* XSUM_XXH64_testdata[2102] */ + { 1051, 0x000000009E3779B1ULL, 0xA65B59B05420991AULL }, /* XSUM_XXH64_testdata[2103] */ + { 1052, 0x0000000000000000ULL, 0x18D6BEE1C8D19D55ULL }, /* XSUM_XXH64_testdata[2104] */ + { 1052, 0x000000009E3779B1ULL, 0x405C984C9EC5674CULL }, /* XSUM_XXH64_testdata[2105] */ + { 1053, 0x0000000000000000ULL, 0x73BFFE4CF55749FAULL }, /* XSUM_XXH64_testdata[2106] */ + { 1053, 0x000000009E3779B1ULL, 0x4047C36707DA2790ULL }, /* XSUM_XXH64_testdata[2107] */ + { 1054, 0x0000000000000000ULL, 0xD8F7B9A27877D772ULL }, /* XSUM_XXH64_testdata[2108] */ + { 1054, 0x000000009E3779B1ULL, 0x7BDB2E27BC8F53ECULL }, /* XSUM_XXH64_testdata[2109] */ + { 1055, 0x0000000000000000ULL, 0x8B856CFA292934DAULL }, /* XSUM_XXH64_testdata[2110] */ + { 1055, 0x000000009E3779B1ULL, 0xF2EB44BED91BD79EULL }, /* XSUM_XXH64_testdata[2111] */ + { 1056, 0x0000000000000000ULL, 0x1F97894F15918722ULL }, /* XSUM_XXH64_testdata[2112] */ + { 1056, 0x000000009E3779B1ULL, 0x910D84B7344C3A34ULL }, /* XSUM_XXH64_testdata[2113] */ + { 1057, 0x0000000000000000ULL, 0x68A161AB02FA67BDULL }, /* XSUM_XXH64_testdata[2114] */ + { 1057, 0x000000009E3779B1ULL, 0x9FBB3C4E81B805C9ULL }, /* XSUM_XXH64_testdata[2115] */ + { 1058, 0x0000000000000000ULL, 0x0F169E5CA75D12A7ULL }, /* XSUM_XXH64_testdata[2116] */ + { 1058, 0x000000009E3779B1ULL, 0xAF84CC9EACA77C82ULL }, /* XSUM_XXH64_testdata[2117] */ + { 1059, 0x0000000000000000ULL, 0xE45264695EBCA721ULL }, /* XSUM_XXH64_testdata[2118] */ + { 1059, 0x000000009E3779B1ULL, 0xFB6D5AB1BA69E123ULL }, /* XSUM_XXH64_testdata[2119] */ + { 1060, 0x0000000000000000ULL, 0x235E2A1946DE1C9BULL }, /* XSUM_XXH64_testdata[2120] */ + { 1060, 0x000000009E3779B1ULL, 0x87B2A8A0FE63C375ULL }, /* XSUM_XXH64_testdata[2121] */ + { 1061, 0x0000000000000000ULL, 0xBF9C20F217025612ULL }, /* XSUM_XXH64_testdata[2122] */ + { 1061, 0x000000009E3779B1ULL, 0x41197864FF94B0B5ULL }, /* XSUM_XXH64_testdata[2123] */ + { 1062, 0x0000000000000000ULL, 0x515EAE35A8201954ULL }, /* XSUM_XXH64_testdata[2124] */ + { 1062, 0x000000009E3779B1ULL, 0xD84D1477C3289A04ULL }, /* XSUM_XXH64_testdata[2125] */ + { 1063, 0x0000000000000000ULL, 0xFC6AF0AC0CBBDE96ULL }, /* XSUM_XXH64_testdata[2126] */ + { 1063, 0x000000009E3779B1ULL, 0x68DAD59819FB9704ULL }, /* XSUM_XXH64_testdata[2127] */ + { 1064, 0x0000000000000000ULL, 0x9E00693AED5C571FULL }, /* XSUM_XXH64_testdata[2128] */ + { 1064, 0x000000009E3779B1ULL, 0xB90ADE1CFD9DE43FULL }, /* XSUM_XXH64_testdata[2129] */ + { 1065, 0x0000000000000000ULL, 0x99866D8AFB9F261EULL }, /* XSUM_XXH64_testdata[2130] */ + { 1065, 0x000000009E3779B1ULL, 0x8F2886A69BC0DA49ULL }, /* XSUM_XXH64_testdata[2131] */ + { 1066, 0x0000000000000000ULL, 0x8E32E6D4CE722645ULL }, /* XSUM_XXH64_testdata[2132] */ + { 1066, 0x000000009E3779B1ULL, 0xAF0C5BD253C608DEULL }, /* XSUM_XXH64_testdata[2133] */ + { 1067, 0x0000000000000000ULL, 0x763B7C6F61794267ULL }, /* XSUM_XXH64_testdata[2134] */ + { 1067, 0x000000009E3779B1ULL, 0x710D42A53E21F189ULL }, /* XSUM_XXH64_testdata[2135] */ + { 1068, 0x0000000000000000ULL, 0x2AAF42B037E263D2ULL }, /* XSUM_XXH64_testdata[2136] */ + { 1068, 0x000000009E3779B1ULL, 0xE75A9C9818B8E9A2ULL }, /* XSUM_XXH64_testdata[2137] */ + { 1069, 0x0000000000000000ULL, 0xD0B124FEAA8BC17CULL }, /* XSUM_XXH64_testdata[2138] */ + { 1069, 0x000000009E3779B1ULL, 0x2C447E9FB310EEFEULL }, /* XSUM_XXH64_testdata[2139] */ + { 1070, 0x0000000000000000ULL, 0x811421D866CFE3A3ULL }, /* XSUM_XXH64_testdata[2140] */ + { 1070, 0x000000009E3779B1ULL, 0x3BE32827DD550FA2ULL }, /* XSUM_XXH64_testdata[2141] */ + { 1071, 0x0000000000000000ULL, 0xE50EF5BA589F2FC3ULL }, /* XSUM_XXH64_testdata[2142] */ + { 1071, 0x000000009E3779B1ULL, 0xE19F7B8C367E5887ULL }, /* XSUM_XXH64_testdata[2143] */ + { 1072, 0x0000000000000000ULL, 0x737EFC7B06D47CBDULL }, /* XSUM_XXH64_testdata[2144] */ + { 1072, 0x000000009E3779B1ULL, 0xC081A3138E6D55AAULL }, /* XSUM_XXH64_testdata[2145] */ + { 1073, 0x0000000000000000ULL, 0xDE1791F5A69D7BEDULL }, /* XSUM_XXH64_testdata[2146] */ + { 1073, 0x000000009E3779B1ULL, 0x14507D40277164EBULL }, /* XSUM_XXH64_testdata[2147] */ + { 1074, 0x0000000000000000ULL, 0x544D569F180718FAULL }, /* XSUM_XXH64_testdata[2148] */ + { 1074, 0x000000009E3779B1ULL, 0x69DD83FEECAE8C7CULL }, /* XSUM_XXH64_testdata[2149] */ + { 1075, 0x0000000000000000ULL, 0x5BBDA56F78F9E485ULL }, /* XSUM_XXH64_testdata[2150] */ + { 1075, 0x000000009E3779B1ULL, 0x0AD509D729D0FB11ULL }, /* XSUM_XXH64_testdata[2151] */ + { 1076, 0x0000000000000000ULL, 0x68A91DF67CF9D691ULL }, /* XSUM_XXH64_testdata[2152] */ + { 1076, 0x000000009E3779B1ULL, 0xE4F216B27A707FD6ULL }, /* XSUM_XXH64_testdata[2153] */ + { 1077, 0x0000000000000000ULL, 0x647E9EBB14A16875ULL }, /* XSUM_XXH64_testdata[2154] */ + { 1077, 0x000000009E3779B1ULL, 0xD361DEC7B3FD8447ULL }, /* XSUM_XXH64_testdata[2155] */ + { 1078, 0x0000000000000000ULL, 0x6BCCC123273D16DDULL }, /* XSUM_XXH64_testdata[2156] */ + { 1078, 0x000000009E3779B1ULL, 0x2A2D1667E8534641ULL }, /* XSUM_XXH64_testdata[2157] */ + { 1079, 0x0000000000000000ULL, 0x0469DF5210B0A319ULL }, /* XSUM_XXH64_testdata[2158] */ + { 1079, 0x000000009E3779B1ULL, 0x8ED90D0C1A1A55F7ULL }, /* XSUM_XXH64_testdata[2159] */ + { 1080, 0x0000000000000000ULL, 0xBBB4D377BC41D40CULL }, /* XSUM_XXH64_testdata[2160] */ + { 1080, 0x000000009E3779B1ULL, 0x56EEA659CBFE6C71ULL }, /* XSUM_XXH64_testdata[2161] */ + { 1081, 0x0000000000000000ULL, 0x795A4C700E6DA14FULL }, /* XSUM_XXH64_testdata[2162] */ + { 1081, 0x000000009E3779B1ULL, 0x112E11E4FA4F38A1ULL }, /* XSUM_XXH64_testdata[2163] */ + { 1082, 0x0000000000000000ULL, 0x4B6E46F3FFD5BBDBULL }, /* XSUM_XXH64_testdata[2164] */ + { 1082, 0x000000009E3779B1ULL, 0xB0AC59178769887DULL }, /* XSUM_XXH64_testdata[2165] */ + { 1083, 0x0000000000000000ULL, 0x94E9689B67388F6FULL }, /* XSUM_XXH64_testdata[2166] */ + { 1083, 0x000000009E3779B1ULL, 0x2E94DA5C4AA8C222ULL }, /* XSUM_XXH64_testdata[2167] */ + { 1084, 0x0000000000000000ULL, 0xDCD358B889D0E2DCULL }, /* XSUM_XXH64_testdata[2168] */ + { 1084, 0x000000009E3779B1ULL, 0x60BB19C570953807ULL }, /* XSUM_XXH64_testdata[2169] */ + { 1085, 0x0000000000000000ULL, 0x1DD076F36B610A34ULL }, /* XSUM_XXH64_testdata[2170] */ + { 1085, 0x000000009E3779B1ULL, 0x0E388F4CE044B784ULL }, /* XSUM_XXH64_testdata[2171] */ + { 1086, 0x0000000000000000ULL, 0xA0D41FB4573E4663ULL }, /* XSUM_XXH64_testdata[2172] */ + { 1086, 0x000000009E3779B1ULL, 0x19B04148C5762DE0ULL }, /* XSUM_XXH64_testdata[2173] */ + { 1087, 0x0000000000000000ULL, 0x2ED91C113ADEB4E2ULL }, /* XSUM_XXH64_testdata[2174] */ + { 1087, 0x000000009E3779B1ULL, 0x990F97AC0A97687BULL }, /* XSUM_XXH64_testdata[2175] */ + { 1088, 0x0000000000000000ULL, 0xFD460A306F72CB1BULL }, /* XSUM_XXH64_testdata[2176] */ + { 1088, 0x000000009E3779B1ULL, 0xADC92E18954D9DE3ULL }, /* XSUM_XXH64_testdata[2177] */ + { 1089, 0x0000000000000000ULL, 0x760381BAB3D0091EULL }, /* XSUM_XXH64_testdata[2178] */ + { 1089, 0x000000009E3779B1ULL, 0x8E2D2D722A6305EEULL }, /* XSUM_XXH64_testdata[2179] */ + { 1090, 0x0000000000000000ULL, 0xAD195A94E1A4181BULL }, /* XSUM_XXH64_testdata[2180] */ + { 1090, 0x000000009E3779B1ULL, 0xE28BFA2C7B79AA88ULL }, /* XSUM_XXH64_testdata[2181] */ + { 1091, 0x0000000000000000ULL, 0x7ECE1AD155B15433ULL }, /* XSUM_XXH64_testdata[2182] */ + { 1091, 0x000000009E3779B1ULL, 0xF0E411DC6DE53E8CULL }, /* XSUM_XXH64_testdata[2183] */ + { 1092, 0x0000000000000000ULL, 0x1C52AF648C034FD3ULL }, /* XSUM_XXH64_testdata[2184] */ + { 1092, 0x000000009E3779B1ULL, 0x92879E26235BDDE5ULL }, /* XSUM_XXH64_testdata[2185] */ + { 1093, 0x0000000000000000ULL, 0x78F1C0D5738C5B7BULL }, /* XSUM_XXH64_testdata[2186] */ + { 1093, 0x000000009E3779B1ULL, 0x194884189103099EULL }, /* XSUM_XXH64_testdata[2187] */ + { 1094, 0x0000000000000000ULL, 0x094F82164FC2F627ULL }, /* XSUM_XXH64_testdata[2188] */ + { 1094, 0x000000009E3779B1ULL, 0x3E19EF4057FD11FFULL }, /* XSUM_XXH64_testdata[2189] */ + { 1095, 0x0000000000000000ULL, 0x54BEC413CC381E17ULL }, /* XSUM_XXH64_testdata[2190] */ + { 1095, 0x000000009E3779B1ULL, 0x34DA38067783BF0CULL }, /* XSUM_XXH64_testdata[2191] */ + { 1096, 0x0000000000000000ULL, 0xF5D1EAFEB0E65349ULL }, /* XSUM_XXH64_testdata[2192] */ + { 1096, 0x000000009E3779B1ULL, 0x55BCD771E3C2205FULL }, /* XSUM_XXH64_testdata[2193] */ + { 1097, 0x0000000000000000ULL, 0xC516358FA266550FULL }, /* XSUM_XXH64_testdata[2194] */ + { 1097, 0x000000009E3779B1ULL, 0x29DDD72541A268E4ULL }, /* XSUM_XXH64_testdata[2195] */ + { 1098, 0x0000000000000000ULL, 0xFA68CB989E20C255ULL }, /* XSUM_XXH64_testdata[2196] */ + { 1098, 0x000000009E3779B1ULL, 0x87F38CE2E7ABDAE6ULL }, /* XSUM_XXH64_testdata[2197] */ + { 1099, 0x0000000000000000ULL, 0x367D1901C5FCF67FULL }, /* XSUM_XXH64_testdata[2198] */ + { 1099, 0x000000009E3779B1ULL, 0xC92DB29414420FF7ULL }, /* XSUM_XXH64_testdata[2199] */ + { 1100, 0x0000000000000000ULL, 0x12D589E96BF39DE3ULL }, /* XSUM_XXH64_testdata[2200] */ + { 1100, 0x000000009E3779B1ULL, 0x668C0582557401FEULL }, /* XSUM_XXH64_testdata[2201] */ + { 1101, 0x0000000000000000ULL, 0x5595F02F28A75172ULL }, /* XSUM_XXH64_testdata[2202] */ + { 1101, 0x000000009E3779B1ULL, 0x38382D209D505743ULL }, /* XSUM_XXH64_testdata[2203] */ + { 1102, 0x0000000000000000ULL, 0xD4A991EF58C4FF7EULL }, /* XSUM_XXH64_testdata[2204] */ + { 1102, 0x000000009E3779B1ULL, 0x2EF0CD65E3434824ULL }, /* XSUM_XXH64_testdata[2205] */ + { 1103, 0x0000000000000000ULL, 0x6CDE39F1651D3864ULL }, /* XSUM_XXH64_testdata[2206] */ + { 1103, 0x000000009E3779B1ULL, 0xA952A8112F3F1C6FULL }, /* XSUM_XXH64_testdata[2207] */ + { 1104, 0x0000000000000000ULL, 0xE907C2A215074EACULL }, /* XSUM_XXH64_testdata[2208] */ + { 1104, 0x000000009E3779B1ULL, 0x372CCCC9380C4522ULL }, /* XSUM_XXH64_testdata[2209] */ + { 1105, 0x0000000000000000ULL, 0x3E7461E33C9C35E7ULL }, /* XSUM_XXH64_testdata[2210] */ + { 1105, 0x000000009E3779B1ULL, 0x2C4184886BB73F25ULL }, /* XSUM_XXH64_testdata[2211] */ + { 1106, 0x0000000000000000ULL, 0x0E30173DD9269D5DULL }, /* XSUM_XXH64_testdata[2212] */ + { 1106, 0x000000009E3779B1ULL, 0x637FDD34CF4F27EEULL }, /* XSUM_XXH64_testdata[2213] */ + { 1107, 0x0000000000000000ULL, 0xB7C113A6FF4307D7ULL }, /* XSUM_XXH64_testdata[2214] */ + { 1107, 0x000000009E3779B1ULL, 0x87D2A6B45D4AB6FFULL }, /* XSUM_XXH64_testdata[2215] */ + { 1108, 0x0000000000000000ULL, 0x78FDDCB965009322ULL }, /* XSUM_XXH64_testdata[2216] */ + { 1108, 0x000000009E3779B1ULL, 0xB19EBDCE7BB2ADDDULL }, /* XSUM_XXH64_testdata[2217] */ + { 1109, 0x0000000000000000ULL, 0x0D0889E52A5C010CULL }, /* XSUM_XXH64_testdata[2218] */ + { 1109, 0x000000009E3779B1ULL, 0xAF1004C57A6F9DE0ULL }, /* XSUM_XXH64_testdata[2219] */ + { 1110, 0x0000000000000000ULL, 0x3B9DC9C1F4E9DE7AULL }, /* XSUM_XXH64_testdata[2220] */ + { 1110, 0x000000009E3779B1ULL, 0x527752B49538B0F2ULL }, /* XSUM_XXH64_testdata[2221] */ + { 1111, 0x0000000000000000ULL, 0xF859004CA4B1561AULL }, /* XSUM_XXH64_testdata[2222] */ + { 1111, 0x000000009E3779B1ULL, 0x6AB43BEFD21472E2ULL }, /* XSUM_XXH64_testdata[2223] */ + { 1112, 0x0000000000000000ULL, 0x4752619FE11B12C1ULL }, /* XSUM_XXH64_testdata[2224] */ + { 1112, 0x000000009E3779B1ULL, 0x579C10B3F6468855ULL }, /* XSUM_XXH64_testdata[2225] */ + { 1113, 0x0000000000000000ULL, 0xF445865A468E2559ULL }, /* XSUM_XXH64_testdata[2226] */ + { 1113, 0x000000009E3779B1ULL, 0x879B0858BF9F8B12ULL }, /* XSUM_XXH64_testdata[2227] */ + { 1114, 0x0000000000000000ULL, 0x188FC1F04125E582ULL }, /* XSUM_XXH64_testdata[2228] */ + { 1114, 0x000000009E3779B1ULL, 0x4B3B438A7FE86BDBULL }, /* XSUM_XXH64_testdata[2229] */ + { 1115, 0x0000000000000000ULL, 0x2757DE9950DB7B34ULL }, /* XSUM_XXH64_testdata[2230] */ + { 1115, 0x000000009E3779B1ULL, 0xE0277B35CFDF8FC9ULL }, /* XSUM_XXH64_testdata[2231] */ + { 1116, 0x0000000000000000ULL, 0x2432631A9914E56DULL }, /* XSUM_XXH64_testdata[2232] */ + { 1116, 0x000000009E3779B1ULL, 0xE1ECA45CBFC450D1ULL }, /* XSUM_XXH64_testdata[2233] */ + { 1117, 0x0000000000000000ULL, 0x784986E0B24A7B76ULL }, /* XSUM_XXH64_testdata[2234] */ + { 1117, 0x000000009E3779B1ULL, 0xF79A46B492BD36F5ULL }, /* XSUM_XXH64_testdata[2235] */ + { 1118, 0x0000000000000000ULL, 0x334AF852416C3E51ULL }, /* XSUM_XXH64_testdata[2236] */ + { 1118, 0x000000009E3779B1ULL, 0x4377DC81D3C0709EULL }, /* XSUM_XXH64_testdata[2237] */ + { 1119, 0x0000000000000000ULL, 0xB92AD21BC4B87A72ULL }, /* XSUM_XXH64_testdata[2238] */ + { 1119, 0x000000009E3779B1ULL, 0x65E4A386510740ACULL }, /* XSUM_XXH64_testdata[2239] */ + { 1120, 0x0000000000000000ULL, 0x95617FD81C67DCC5ULL }, /* XSUM_XXH64_testdata[2240] */ + { 1120, 0x000000009E3779B1ULL, 0x22B02A44A9800701ULL }, /* XSUM_XXH64_testdata[2241] */ + { 1121, 0x0000000000000000ULL, 0xA811DFF2AD0B59FCULL }, /* XSUM_XXH64_testdata[2242] */ + { 1121, 0x000000009E3779B1ULL, 0x8CE4D290DAD5AC1AULL }, /* XSUM_XXH64_testdata[2243] */ + { 1122, 0x0000000000000000ULL, 0x1F3E5BD6C132B6E7ULL }, /* XSUM_XXH64_testdata[2244] */ + { 1122, 0x000000009E3779B1ULL, 0x7B6B1A0DCA9A79FEULL }, /* XSUM_XXH64_testdata[2245] */ + { 1123, 0x0000000000000000ULL, 0xBABFE4C7669A7A10ULL }, /* XSUM_XXH64_testdata[2246] */ + { 1123, 0x000000009E3779B1ULL, 0x1700A80B4222D0D9ULL }, /* XSUM_XXH64_testdata[2247] */ + { 1124, 0x0000000000000000ULL, 0x600135D9B1CD6D10ULL }, /* XSUM_XXH64_testdata[2248] */ + { 1124, 0x000000009E3779B1ULL, 0x3703C7E34E5C0F81ULL }, /* XSUM_XXH64_testdata[2249] */ + { 1125, 0x0000000000000000ULL, 0x272EFE5F1BE54486ULL }, /* XSUM_XXH64_testdata[2250] */ + { 1125, 0x000000009E3779B1ULL, 0x9B10466FEE9AA53CULL }, /* XSUM_XXH64_testdata[2251] */ + { 1126, 0x0000000000000000ULL, 0x6E68BC9459FDF676ULL }, /* XSUM_XXH64_testdata[2252] */ + { 1126, 0x000000009E3779B1ULL, 0x7F012D428795FECFULL }, /* XSUM_XXH64_testdata[2253] */ + { 1127, 0x0000000000000000ULL, 0x36354AAF87F918B0ULL }, /* XSUM_XXH64_testdata[2254] */ + { 1127, 0x000000009E3779B1ULL, 0x39CDE43E8781C078ULL }, /* XSUM_XXH64_testdata[2255] */ + { 1128, 0x0000000000000000ULL, 0x400E307D555C9833ULL }, /* XSUM_XXH64_testdata[2256] */ + { 1128, 0x000000009E3779B1ULL, 0x583DBE10736315E8ULL }, /* XSUM_XXH64_testdata[2257] */ + { 1129, 0x0000000000000000ULL, 0x05EA9E6AC9B27A81ULL }, /* XSUM_XXH64_testdata[2258] */ + { 1129, 0x000000009E3779B1ULL, 0x6A692E0C09AEF41CULL }, /* XSUM_XXH64_testdata[2259] */ + { 1130, 0x0000000000000000ULL, 0xDC58A6438477CAACULL }, /* XSUM_XXH64_testdata[2260] */ + { 1130, 0x000000009E3779B1ULL, 0x8388F7B4F0802E67ULL }, /* XSUM_XXH64_testdata[2261] */ + { 1131, 0x0000000000000000ULL, 0xC574095AA26C05A0ULL }, /* XSUM_XXH64_testdata[2262] */ + { 1131, 0x000000009E3779B1ULL, 0xDC2383D39CFBF56DULL }, /* XSUM_XXH64_testdata[2263] */ + { 1132, 0x0000000000000000ULL, 0x94064E01CD2A6FE0ULL }, /* XSUM_XXH64_testdata[2264] */ + { 1132, 0x000000009E3779B1ULL, 0x6A9067CE69D02464ULL }, /* XSUM_XXH64_testdata[2265] */ + { 1133, 0x0000000000000000ULL, 0x884EF021B54F562AULL }, /* XSUM_XXH64_testdata[2266] */ + { 1133, 0x000000009E3779B1ULL, 0xE5DC362A735474C2ULL }, /* XSUM_XXH64_testdata[2267] */ + { 1134, 0x0000000000000000ULL, 0x591662DDD26BFC25ULL }, /* XSUM_XXH64_testdata[2268] */ + { 1134, 0x000000009E3779B1ULL, 0x3054E14A201DD8AFULL }, /* XSUM_XXH64_testdata[2269] */ + { 1135, 0x0000000000000000ULL, 0xE1A61BA71F2A3D5CULL }, /* XSUM_XXH64_testdata[2270] */ + { 1135, 0x000000009E3779B1ULL, 0xCC8FD2796D352F91ULL }, /* XSUM_XXH64_testdata[2271] */ + { 1136, 0x0000000000000000ULL, 0x57251DDEA62C943BULL }, /* XSUM_XXH64_testdata[2272] */ + { 1136, 0x000000009E3779B1ULL, 0xA3C18F7908E93DCAULL }, /* XSUM_XXH64_testdata[2273] */ + { 1137, 0x0000000000000000ULL, 0xE616EE8FCC325DD9ULL }, /* XSUM_XXH64_testdata[2274] */ + { 1137, 0x000000009E3779B1ULL, 0x14B5984BA4854C63ULL }, /* XSUM_XXH64_testdata[2275] */ + { 1138, 0x0000000000000000ULL, 0x0D39F4FC469C0357ULL }, /* XSUM_XXH64_testdata[2276] */ + { 1138, 0x000000009E3779B1ULL, 0x5E931C3934A4E81CULL }, /* XSUM_XXH64_testdata[2277] */ + { 1139, 0x0000000000000000ULL, 0x15CF3D6F0E7255E7ULL }, /* XSUM_XXH64_testdata[2278] */ + { 1139, 0x000000009E3779B1ULL, 0xBF60E1ADBF19203AULL }, /* XSUM_XXH64_testdata[2279] */ + { 1140, 0x0000000000000000ULL, 0xA64D34B6C8F3EFC1ULL }, /* XSUM_XXH64_testdata[2280] */ + { 1140, 0x000000009E3779B1ULL, 0x6C47E635AE407E84ULL }, /* XSUM_XXH64_testdata[2281] */ + { 1141, 0x0000000000000000ULL, 0xACF821860B451FCEULL }, /* XSUM_XXH64_testdata[2282] */ + { 1141, 0x000000009E3779B1ULL, 0x71F4165B85DAA4F4ULL }, /* XSUM_XXH64_testdata[2283] */ + { 1142, 0x0000000000000000ULL, 0x99BDECD90D1C556FULL }, /* XSUM_XXH64_testdata[2284] */ + { 1142, 0x000000009E3779B1ULL, 0x336571C12EC4D692ULL }, /* XSUM_XXH64_testdata[2285] */ + { 1143, 0x0000000000000000ULL, 0x259E2BDD0BE78EAFULL }, /* XSUM_XXH64_testdata[2286] */ + { 1143, 0x000000009E3779B1ULL, 0x188F8DA02C1FC2ECULL }, /* XSUM_XXH64_testdata[2287] */ + { 1144, 0x0000000000000000ULL, 0x1EE5F1941FC489BEULL }, /* XSUM_XXH64_testdata[2288] */ + { 1144, 0x000000009E3779B1ULL, 0xFD2302544F9E3F28ULL }, /* XSUM_XXH64_testdata[2289] */ + { 1145, 0x0000000000000000ULL, 0xC1DCDCBB7AEFF4A0ULL }, /* XSUM_XXH64_testdata[2290] */ + { 1145, 0x000000009E3779B1ULL, 0x7825C283C62D149BULL }, /* XSUM_XXH64_testdata[2291] */ + { 1146, 0x0000000000000000ULL, 0xFE00C6F8B53471A4ULL }, /* XSUM_XXH64_testdata[2292] */ + { 1146, 0x000000009E3779B1ULL, 0x1A4AA51ABFFCF0D9ULL }, /* XSUM_XXH64_testdata[2293] */ + { 1147, 0x0000000000000000ULL, 0x2A168E528A7AF3B2ULL }, /* XSUM_XXH64_testdata[2294] */ + { 1147, 0x000000009E3779B1ULL, 0x087D47D143B332A7ULL }, /* XSUM_XXH64_testdata[2295] */ + { 1148, 0x0000000000000000ULL, 0x015FCA9C7C890189ULL }, /* XSUM_XXH64_testdata[2296] */ + { 1148, 0x000000009E3779B1ULL, 0x9C4815A4F92DA120ULL }, /* XSUM_XXH64_testdata[2297] */ + { 1149, 0x0000000000000000ULL, 0x7B0353BD972DC808ULL }, /* XSUM_XXH64_testdata[2298] */ + { 1149, 0x000000009E3779B1ULL, 0xB5BBC5E9063D325EULL }, /* XSUM_XXH64_testdata[2299] */ + { 1150, 0x0000000000000000ULL, 0x1DD0D8B978883013ULL }, /* XSUM_XXH64_testdata[2300] */ + { 1150, 0x000000009E3779B1ULL, 0x9A3DD1A5571A33F6ULL }, /* XSUM_XXH64_testdata[2301] */ + { 1151, 0x0000000000000000ULL, 0xB41A8F0808C8F74FULL }, /* XSUM_XXH64_testdata[2302] */ + { 1151, 0x000000009E3779B1ULL, 0x7F89F5FC585C35F2ULL }, /* XSUM_XXH64_testdata[2303] */ + { 1152, 0x0000000000000000ULL, 0x19299073B367095BULL }, /* XSUM_XXH64_testdata[2304] */ + { 1152, 0x000000009E3779B1ULL, 0xC9B3C9DFDD08DFDAULL }, /* XSUM_XXH64_testdata[2305] */ + { 1153, 0x0000000000000000ULL, 0x5932E340EC7286BFULL }, /* XSUM_XXH64_testdata[2306] */ + { 1153, 0x000000009E3779B1ULL, 0x851B8D860BC35C79ULL }, /* XSUM_XXH64_testdata[2307] */ + { 1154, 0x0000000000000000ULL, 0x06F2A17411E8A3EBULL }, /* XSUM_XXH64_testdata[2308] */ + { 1154, 0x000000009E3779B1ULL, 0x9932BDD1CDE62B64ULL }, /* XSUM_XXH64_testdata[2309] */ + { 1155, 0x0000000000000000ULL, 0x88D143F288A22EDFULL }, /* XSUM_XXH64_testdata[2310] */ + { 1155, 0x000000009E3779B1ULL, 0x03231A1762E1AABEULL }, /* XSUM_XXH64_testdata[2311] */ + { 1156, 0x0000000000000000ULL, 0x5D85DEC090DF9397ULL }, /* XSUM_XXH64_testdata[2312] */ + { 1156, 0x000000009E3779B1ULL, 0x178C30FF5FC153DDULL }, /* XSUM_XXH64_testdata[2313] */ + { 1157, 0x0000000000000000ULL, 0x05FFA1FA6F91696EULL }, /* XSUM_XXH64_testdata[2314] */ + { 1157, 0x000000009E3779B1ULL, 0x5CB67BAA9C962418ULL }, /* XSUM_XXH64_testdata[2315] */ + { 1158, 0x0000000000000000ULL, 0xC80FB4BFAB1B9084ULL }, /* XSUM_XXH64_testdata[2316] */ + { 1158, 0x000000009E3779B1ULL, 0x412066FE4F363F24ULL }, /* XSUM_XXH64_testdata[2317] */ + { 1159, 0x0000000000000000ULL, 0xEF36F48EE689911EULL }, /* XSUM_XXH64_testdata[2318] */ + { 1159, 0x000000009E3779B1ULL, 0x4839BA4B8E17E0C8ULL }, /* XSUM_XXH64_testdata[2319] */ + { 1160, 0x0000000000000000ULL, 0x6D61FCBAA6DB87A4ULL }, /* XSUM_XXH64_testdata[2320] */ + { 1160, 0x000000009E3779B1ULL, 0x16A4E424A4FA0453ULL }, /* XSUM_XXH64_testdata[2321] */ + { 1161, 0x0000000000000000ULL, 0xBED318F98DB4C4E8ULL }, /* XSUM_XXH64_testdata[2322] */ + { 1161, 0x000000009E3779B1ULL, 0x23668F33B18A4BEBULL }, /* XSUM_XXH64_testdata[2323] */ + { 1162, 0x0000000000000000ULL, 0xFD31ACBCFBC6AD11ULL }, /* XSUM_XXH64_testdata[2324] */ + { 1162, 0x000000009E3779B1ULL, 0x050D8302FEAFB128ULL }, /* XSUM_XXH64_testdata[2325] */ + { 1163, 0x0000000000000000ULL, 0xCA568513811EF5BBULL }, /* XSUM_XXH64_testdata[2326] */ + { 1163, 0x000000009E3779B1ULL, 0x265BE8CF72F7AC15ULL }, /* XSUM_XXH64_testdata[2327] */ + { 1164, 0x0000000000000000ULL, 0x27F4365CEB48E09DULL }, /* XSUM_XXH64_testdata[2328] */ + { 1164, 0x000000009E3779B1ULL, 0x6EA0E954F8CC9F28ULL }, /* XSUM_XXH64_testdata[2329] */ + { 1165, 0x0000000000000000ULL, 0xC4BAA96C8811F3A8ULL }, /* XSUM_XXH64_testdata[2330] */ + { 1165, 0x000000009E3779B1ULL, 0x6E1CDCC80574DA15ULL }, /* XSUM_XXH64_testdata[2331] */ + { 1166, 0x0000000000000000ULL, 0xD929F2B0CBC2D114ULL }, /* XSUM_XXH64_testdata[2332] */ + { 1166, 0x000000009E3779B1ULL, 0x8BB7D3CC05EC477AULL }, /* XSUM_XXH64_testdata[2333] */ + { 1167, 0x0000000000000000ULL, 0x07CDEC2DC1D4F277ULL }, /* XSUM_XXH64_testdata[2334] */ + { 1167, 0x000000009E3779B1ULL, 0x224D339D5431A954ULL }, /* XSUM_XXH64_testdata[2335] */ + { 1168, 0x0000000000000000ULL, 0x61F0F00477994DA9ULL }, /* XSUM_XXH64_testdata[2336] */ + { 1168, 0x000000009E3779B1ULL, 0x17A041B59D2A3095ULL }, /* XSUM_XXH64_testdata[2337] */ + { 1169, 0x0000000000000000ULL, 0x11D00BAC17A2CCBCULL }, /* XSUM_XXH64_testdata[2338] */ + { 1169, 0x000000009E3779B1ULL, 0xD3D1406E4C63388DULL }, /* XSUM_XXH64_testdata[2339] */ + { 1170, 0x0000000000000000ULL, 0xF32C0F3CBE07DB46ULL }, /* XSUM_XXH64_testdata[2340] */ + { 1170, 0x000000009E3779B1ULL, 0x784B0288B54047F3ULL }, /* XSUM_XXH64_testdata[2341] */ + { 1171, 0x0000000000000000ULL, 0x83B6BF8C214040C4ULL }, /* XSUM_XXH64_testdata[2342] */ + { 1171, 0x000000009E3779B1ULL, 0x33D255BCE663322AULL }, /* XSUM_XXH64_testdata[2343] */ + { 1172, 0x0000000000000000ULL, 0xD0488365B79E9B3EULL }, /* XSUM_XXH64_testdata[2344] */ + { 1172, 0x000000009E3779B1ULL, 0xDC1741BBC24625C0ULL }, /* XSUM_XXH64_testdata[2345] */ + { 1173, 0x0000000000000000ULL, 0xF6EB55C349B2D4E9ULL }, /* XSUM_XXH64_testdata[2346] */ + { 1173, 0x000000009E3779B1ULL, 0x9D98A4C8A46FBD91ULL }, /* XSUM_XXH64_testdata[2347] */ + { 1174, 0x0000000000000000ULL, 0x3797AFA18CA75B65ULL }, /* XSUM_XXH64_testdata[2348] */ + { 1174, 0x000000009E3779B1ULL, 0xE2A7BA7D2E0507F1ULL }, /* XSUM_XXH64_testdata[2349] */ + { 1175, 0x0000000000000000ULL, 0x60019E1F20F136ABULL }, /* XSUM_XXH64_testdata[2350] */ + { 1175, 0x000000009E3779B1ULL, 0x8A49874B1CF28677ULL }, /* XSUM_XXH64_testdata[2351] */ + { 1176, 0x0000000000000000ULL, 0x16733C73052055DCULL }, /* XSUM_XXH64_testdata[2352] */ + { 1176, 0x000000009E3779B1ULL, 0xDA424093EE2A4003ULL }, /* XSUM_XXH64_testdata[2353] */ + { 1177, 0x0000000000000000ULL, 0xAA5A32E8F609A8BEULL }, /* XSUM_XXH64_testdata[2354] */ + { 1177, 0x000000009E3779B1ULL, 0xBFD91A5EB0FE6C8CULL }, /* XSUM_XXH64_testdata[2355] */ + { 1178, 0x0000000000000000ULL, 0x6B83C2851782FF4AULL }, /* XSUM_XXH64_testdata[2356] */ + { 1178, 0x000000009E3779B1ULL, 0x49342F0F95C2EEE4ULL }, /* XSUM_XXH64_testdata[2357] */ + { 1179, 0x0000000000000000ULL, 0x954B1ADBA2381E5FULL }, /* XSUM_XXH64_testdata[2358] */ + { 1179, 0x000000009E3779B1ULL, 0xA20D6149D5427C1AULL }, /* XSUM_XXH64_testdata[2359] */ + { 1180, 0x0000000000000000ULL, 0x603B9A19DCFF5CB2ULL }, /* XSUM_XXH64_testdata[2360] */ + { 1180, 0x000000009E3779B1ULL, 0xB841AC8384BB8411ULL }, /* XSUM_XXH64_testdata[2361] */ + { 1181, 0x0000000000000000ULL, 0x51691426D289A80FULL }, /* XSUM_XXH64_testdata[2362] */ + { 1181, 0x000000009E3779B1ULL, 0x7F8A490E89A3BF94ULL }, /* XSUM_XXH64_testdata[2363] */ + { 1182, 0x0000000000000000ULL, 0xFEBFD0B41A829058ULL }, /* XSUM_XXH64_testdata[2364] */ + { 1182, 0x000000009E3779B1ULL, 0x14B98F8A153E1C30ULL }, /* XSUM_XXH64_testdata[2365] */ + { 1183, 0x0000000000000000ULL, 0x25AF016AE33CBD1AULL }, /* XSUM_XXH64_testdata[2366] */ + { 1183, 0x000000009E3779B1ULL, 0xC75FCDB74B967884ULL }, /* XSUM_XXH64_testdata[2367] */ + { 1184, 0x0000000000000000ULL, 0x8CBA134148EC71F9ULL }, /* XSUM_XXH64_testdata[2368] */ + { 1184, 0x000000009E3779B1ULL, 0x5DB47CCDF0979822ULL }, /* XSUM_XXH64_testdata[2369] */ + { 1185, 0x0000000000000000ULL, 0x9E8F0A368CB1C464ULL }, /* XSUM_XXH64_testdata[2370] */ + { 1185, 0x000000009E3779B1ULL, 0x419591366CD6E563ULL }, /* XSUM_XXH64_testdata[2371] */ + { 1186, 0x0000000000000000ULL, 0xB474F625CC1A199AULL }, /* XSUM_XXH64_testdata[2372] */ + { 1186, 0x000000009E3779B1ULL, 0x89146F83CE0A3E62ULL }, /* XSUM_XXH64_testdata[2373] */ + { 1187, 0x0000000000000000ULL, 0x16D86EAE8BDE1ADFULL }, /* XSUM_XXH64_testdata[2374] */ + { 1187, 0x000000009E3779B1ULL, 0xDC1A57B254C5CA1AULL }, /* XSUM_XXH64_testdata[2375] */ + { 1188, 0x0000000000000000ULL, 0x7EFE00D599C5D016ULL }, /* XSUM_XXH64_testdata[2376] */ + { 1188, 0x000000009E3779B1ULL, 0x8A21FBD75CA322F6ULL }, /* XSUM_XXH64_testdata[2377] */ + { 1189, 0x0000000000000000ULL, 0x67FAF88309EDF12BULL }, /* XSUM_XXH64_testdata[2378] */ + { 1189, 0x000000009E3779B1ULL, 0xAEBE493AFE2A6936ULL }, /* XSUM_XXH64_testdata[2379] */ + { 1190, 0x0000000000000000ULL, 0x29B4A61FEEE3442DULL }, /* XSUM_XXH64_testdata[2380] */ + { 1190, 0x000000009E3779B1ULL, 0xACC85878200FE439ULL }, /* XSUM_XXH64_testdata[2381] */ + { 1191, 0x0000000000000000ULL, 0x9D502E7F7FA7C40FULL }, /* XSUM_XXH64_testdata[2382] */ + { 1191, 0x000000009E3779B1ULL, 0x640172B0CA181D3BULL }, /* XSUM_XXH64_testdata[2383] */ + { 1192, 0x0000000000000000ULL, 0xF910BB146476145AULL }, /* XSUM_XXH64_testdata[2384] */ + { 1192, 0x000000009E3779B1ULL, 0xA7D3E542B5D7FBD5ULL }, /* XSUM_XXH64_testdata[2385] */ + { 1193, 0x0000000000000000ULL, 0xEE6EDC237138173AULL }, /* XSUM_XXH64_testdata[2386] */ + { 1193, 0x000000009E3779B1ULL, 0xD43F10425C748F89ULL }, /* XSUM_XXH64_testdata[2387] */ + { 1194, 0x0000000000000000ULL, 0xE24B4A7F0E76E783ULL }, /* XSUM_XXH64_testdata[2388] */ + { 1194, 0x000000009E3779B1ULL, 0x2320E33A5302A4D5ULL }, /* XSUM_XXH64_testdata[2389] */ + { 1195, 0x0000000000000000ULL, 0x7978C40AEFC877D0ULL }, /* XSUM_XXH64_testdata[2390] */ + { 1195, 0x000000009E3779B1ULL, 0x8D73ABDFA5720846ULL }, /* XSUM_XXH64_testdata[2391] */ + { 1196, 0x0000000000000000ULL, 0xE691FED11EDFF221ULL }, /* XSUM_XXH64_testdata[2392] */ + { 1196, 0x000000009E3779B1ULL, 0x8EAB2E32B082FC73ULL }, /* XSUM_XXH64_testdata[2393] */ + { 1197, 0x0000000000000000ULL, 0x3E9542A45384F0F6ULL }, /* XSUM_XXH64_testdata[2394] */ + { 1197, 0x000000009E3779B1ULL, 0x4A2E556C5707C4F5ULL }, /* XSUM_XXH64_testdata[2395] */ + { 1198, 0x0000000000000000ULL, 0xF802820EB3AD6070ULL }, /* XSUM_XXH64_testdata[2396] */ + { 1198, 0x000000009E3779B1ULL, 0x5718062EBB4800CDULL }, /* XSUM_XXH64_testdata[2397] */ + { 1199, 0x0000000000000000ULL, 0x9D2D4751EF93B51CULL }, /* XSUM_XXH64_testdata[2398] */ + { 1199, 0x000000009E3779B1ULL, 0x3CC9E217D7BD6672ULL }, /* XSUM_XXH64_testdata[2399] */ + { 1200, 0x0000000000000000ULL, 0x73CDFEC0002BC5E1ULL }, /* XSUM_XXH64_testdata[2400] */ + { 1200, 0x000000009E3779B1ULL, 0x155B5DE4EE0A0D69ULL }, /* XSUM_XXH64_testdata[2401] */ + { 1201, 0x0000000000000000ULL, 0xC9517C4AAA35A42AULL }, /* XSUM_XXH64_testdata[2402] */ + { 1201, 0x000000009E3779B1ULL, 0xE76B0F144E7074CAULL }, /* XSUM_XXH64_testdata[2403] */ + { 1202, 0x0000000000000000ULL, 0x0E5C02541611F938ULL }, /* XSUM_XXH64_testdata[2404] */ + { 1202, 0x000000009E3779B1ULL, 0x06640F4567E510C8ULL }, /* XSUM_XXH64_testdata[2405] */ + { 1203, 0x0000000000000000ULL, 0x526346FC056B4ECCULL }, /* XSUM_XXH64_testdata[2406] */ + { 1203, 0x000000009E3779B1ULL, 0x62166B520E3472B9ULL }, /* XSUM_XXH64_testdata[2407] */ + { 1204, 0x0000000000000000ULL, 0xF05E21326F4C017AULL }, /* XSUM_XXH64_testdata[2408] */ + { 1204, 0x000000009E3779B1ULL, 0xA2A6CE0C2C6ED983ULL }, /* XSUM_XXH64_testdata[2409] */ + { 1205, 0x0000000000000000ULL, 0xC46EEBBC8B7C1603ULL }, /* XSUM_XXH64_testdata[2410] */ + { 1205, 0x000000009E3779B1ULL, 0xBAE8603180B08E2BULL }, /* XSUM_XXH64_testdata[2411] */ + { 1206, 0x0000000000000000ULL, 0x51A55AAC52816910ULL }, /* XSUM_XXH64_testdata[2412] */ + { 1206, 0x000000009E3779B1ULL, 0x2387042F1109188DULL }, /* XSUM_XXH64_testdata[2413] */ + { 1207, 0x0000000000000000ULL, 0x26198421168E2E66ULL }, /* XSUM_XXH64_testdata[2414] */ + { 1207, 0x000000009E3779B1ULL, 0x23A27911E90F259AULL }, /* XSUM_XXH64_testdata[2415] */ + { 1208, 0x0000000000000000ULL, 0x9A99D5A5C9343767ULL }, /* XSUM_XXH64_testdata[2416] */ + { 1208, 0x000000009E3779B1ULL, 0xFB830D9101644EECULL }, /* XSUM_XXH64_testdata[2417] */ + { 1209, 0x0000000000000000ULL, 0xA2E2D8A60B7FF51FULL }, /* XSUM_XXH64_testdata[2418] */ + { 1209, 0x000000009E3779B1ULL, 0xCFBED9FCC3B850C9ULL }, /* XSUM_XXH64_testdata[2419] */ + { 1210, 0x0000000000000000ULL, 0xF1ADA080F3C3C553ULL }, /* XSUM_XXH64_testdata[2420] */ + { 1210, 0x000000009E3779B1ULL, 0xF0834836F99E1490ULL }, /* XSUM_XXH64_testdata[2421] */ + { 1211, 0x0000000000000000ULL, 0x7CDBE0F7EA5B896EULL }, /* XSUM_XXH64_testdata[2422] */ + { 1211, 0x000000009E3779B1ULL, 0x70D4AE6F9E51886BULL }, /* XSUM_XXH64_testdata[2423] */ + { 1212, 0x0000000000000000ULL, 0xCE770894F4D5D15DULL }, /* XSUM_XXH64_testdata[2424] */ + { 1212, 0x000000009E3779B1ULL, 0x755452B89ED9F2D1ULL }, /* XSUM_XXH64_testdata[2425] */ + { 1213, 0x0000000000000000ULL, 0xBB83E0EFFA7DFA54ULL }, /* XSUM_XXH64_testdata[2426] */ + { 1213, 0x000000009E3779B1ULL, 0x58FB723E54294F76ULL }, /* XSUM_XXH64_testdata[2427] */ + { 1214, 0x0000000000000000ULL, 0x54C03BCFC0E5458BULL }, /* XSUM_XXH64_testdata[2428] */ + { 1214, 0x000000009E3779B1ULL, 0xEAB3B6A957D1DF6FULL }, /* XSUM_XXH64_testdata[2429] */ + { 1215, 0x0000000000000000ULL, 0xB5E8FDA67A9FA240ULL }, /* XSUM_XXH64_testdata[2430] */ + { 1215, 0x000000009E3779B1ULL, 0x56E89D36D1AB6C1DULL }, /* XSUM_XXH64_testdata[2431] */ + { 1216, 0x0000000000000000ULL, 0xDE77182C65201337ULL }, /* XSUM_XXH64_testdata[2432] */ + { 1216, 0x000000009E3779B1ULL, 0x28975264E8B4E338ULL }, /* XSUM_XXH64_testdata[2433] */ + { 1217, 0x0000000000000000ULL, 0x9BEE0EB2647A7EEBULL }, /* XSUM_XXH64_testdata[2434] */ + { 1217, 0x000000009E3779B1ULL, 0x2E8CBA0CDC387C20ULL }, /* XSUM_XXH64_testdata[2435] */ + { 1218, 0x0000000000000000ULL, 0xB62D99439AFDAEDBULL }, /* XSUM_XXH64_testdata[2436] */ + { 1218, 0x000000009E3779B1ULL, 0xA4DB5D64DDD956BBULL }, /* XSUM_XXH64_testdata[2437] */ + { 1219, 0x0000000000000000ULL, 0xE8D11AC02B8EAB7BULL }, /* XSUM_XXH64_testdata[2438] */ + { 1219, 0x000000009E3779B1ULL, 0x2DBE469FA220C472ULL }, /* XSUM_XXH64_testdata[2439] */ + { 1220, 0x0000000000000000ULL, 0xCBAD51EEDD66816DULL }, /* XSUM_XXH64_testdata[2440] */ + { 1220, 0x000000009E3779B1ULL, 0xBA02659904B857E0ULL }, /* XSUM_XXH64_testdata[2441] */ + { 1221, 0x0000000000000000ULL, 0x93EA7CF6DCB8AD89ULL }, /* XSUM_XXH64_testdata[2442] */ + { 1221, 0x000000009E3779B1ULL, 0xED8BA7BA701C9FFEULL }, /* XSUM_XXH64_testdata[2443] */ + { 1222, 0x0000000000000000ULL, 0x3E659462BCDB4687ULL }, /* XSUM_XXH64_testdata[2444] */ + { 1222, 0x000000009E3779B1ULL, 0xF6E9E66FE5D72528ULL }, /* XSUM_XXH64_testdata[2445] */ + { 1223, 0x0000000000000000ULL, 0xC50CB9759B1EF03DULL }, /* XSUM_XXH64_testdata[2446] */ + { 1223, 0x000000009E3779B1ULL, 0x0D5298DFA1E249D0ULL }, /* XSUM_XXH64_testdata[2447] */ + { 1224, 0x0000000000000000ULL, 0xEC928828A817C2A7ULL }, /* XSUM_XXH64_testdata[2448] */ + { 1224, 0x000000009E3779B1ULL, 0xFAF833E82E2D9640ULL }, /* XSUM_XXH64_testdata[2449] */ + { 1225, 0x0000000000000000ULL, 0x76B7DC3535DA6818ULL }, /* XSUM_XXH64_testdata[2450] */ + { 1225, 0x000000009E3779B1ULL, 0x065AFF3ACD0996B8ULL }, /* XSUM_XXH64_testdata[2451] */ + { 1226, 0x0000000000000000ULL, 0x06383BC6E3D960A7ULL }, /* XSUM_XXH64_testdata[2452] */ + { 1226, 0x000000009E3779B1ULL, 0xCBE4D0EE4ABA90F7ULL }, /* XSUM_XXH64_testdata[2453] */ + { 1227, 0x0000000000000000ULL, 0xC68FF1A111675934ULL }, /* XSUM_XXH64_testdata[2454] */ + { 1227, 0x000000009E3779B1ULL, 0xC31BAFCB29D08595ULL }, /* XSUM_XXH64_testdata[2455] */ + { 1228, 0x0000000000000000ULL, 0x2C26E822520C7733ULL }, /* XSUM_XXH64_testdata[2456] */ + { 1228, 0x000000009E3779B1ULL, 0x2D125AC8523AAB2CULL }, /* XSUM_XXH64_testdata[2457] */ + { 1229, 0x0000000000000000ULL, 0xC00294B5D505B24FULL }, /* XSUM_XXH64_testdata[2458] */ + { 1229, 0x000000009E3779B1ULL, 0x7540334EDC7C1BF0ULL }, /* XSUM_XXH64_testdata[2459] */ + { 1230, 0x0000000000000000ULL, 0x10E88D954C31D7F0ULL }, /* XSUM_XXH64_testdata[2460] */ + { 1230, 0x000000009E3779B1ULL, 0x2F6F2890F1D3C877ULL }, /* XSUM_XXH64_testdata[2461] */ + { 1231, 0x0000000000000000ULL, 0xCA6D15CAFAEA0146ULL }, /* XSUM_XXH64_testdata[2462] */ + { 1231, 0x000000009E3779B1ULL, 0xA3D94C473B19D016ULL }, /* XSUM_XXH64_testdata[2463] */ + { 1232, 0x0000000000000000ULL, 0x640B2E1F424F09FAULL }, /* XSUM_XXH64_testdata[2464] */ + { 1232, 0x000000009E3779B1ULL, 0x1DCCFB4B6FE20C99ULL }, /* XSUM_XXH64_testdata[2465] */ + { 1233, 0x0000000000000000ULL, 0xB4790504226D3011ULL }, /* XSUM_XXH64_testdata[2466] */ + { 1233, 0x000000009E3779B1ULL, 0xFF1DD978AD406AC1ULL }, /* XSUM_XXH64_testdata[2467] */ + { 1234, 0x0000000000000000ULL, 0x3A4525188BB049C2ULL }, /* XSUM_XXH64_testdata[2468] */ + { 1234, 0x000000009E3779B1ULL, 0x12E61CAA320BD366ULL }, /* XSUM_XXH64_testdata[2469] */ + { 1235, 0x0000000000000000ULL, 0x993465458AA35087ULL }, /* XSUM_XXH64_testdata[2470] */ + { 1235, 0x000000009E3779B1ULL, 0x178B9FFD8135E6FEULL }, /* XSUM_XXH64_testdata[2471] */ + { 1236, 0x0000000000000000ULL, 0xCD6BBCA73EA4BE8BULL }, /* XSUM_XXH64_testdata[2472] */ + { 1236, 0x000000009E3779B1ULL, 0xEE2B003F9D074AE6ULL }, /* XSUM_XXH64_testdata[2473] */ + { 1237, 0x0000000000000000ULL, 0x90A512E03AFCD3E9ULL }, /* XSUM_XXH64_testdata[2474] */ + { 1237, 0x000000009E3779B1ULL, 0x7C04E47203E1752EULL }, /* XSUM_XXH64_testdata[2475] */ + { 1238, 0x0000000000000000ULL, 0x9F8C688C51ADDEB9ULL }, /* XSUM_XXH64_testdata[2476] */ + { 1238, 0x000000009E3779B1ULL, 0x60C6FEF44E7BF23FULL }, /* XSUM_XXH64_testdata[2477] */ + { 1239, 0x0000000000000000ULL, 0xD6D6BC345847890EULL }, /* XSUM_XXH64_testdata[2478] */ + { 1239, 0x000000009E3779B1ULL, 0x21AB7B16F663A955ULL }, /* XSUM_XXH64_testdata[2479] */ + { 1240, 0x0000000000000000ULL, 0x12A0469391C4DA89ULL }, /* XSUM_XXH64_testdata[2480] */ + { 1240, 0x000000009E3779B1ULL, 0xBA448958A73046ACULL }, /* XSUM_XXH64_testdata[2481] */ + { 1241, 0x0000000000000000ULL, 0xB5A18E47A7361A03ULL }, /* XSUM_XXH64_testdata[2482] */ + { 1241, 0x000000009E3779B1ULL, 0xFF8A6D2D8C8066FFULL }, /* XSUM_XXH64_testdata[2483] */ + { 1242, 0x0000000000000000ULL, 0x1BB832B76D7ED273ULL }, /* XSUM_XXH64_testdata[2484] */ + { 1242, 0x000000009E3779B1ULL, 0xCE8B78067B96E1DAULL }, /* XSUM_XXH64_testdata[2485] */ + { 1243, 0x0000000000000000ULL, 0x5D5C95147DF7BAB7ULL }, /* XSUM_XXH64_testdata[2486] */ + { 1243, 0x000000009E3779B1ULL, 0x9CC5328E65DFC6BCULL }, /* XSUM_XXH64_testdata[2487] */ + { 1244, 0x0000000000000000ULL, 0xBA1913F9F322F428ULL }, /* XSUM_XXH64_testdata[2488] */ + { 1244, 0x000000009E3779B1ULL, 0x59347B04EEAC3308ULL }, /* XSUM_XXH64_testdata[2489] */ + { 1245, 0x0000000000000000ULL, 0x258263D261040E96ULL }, /* XSUM_XXH64_testdata[2490] */ + { 1245, 0x000000009E3779B1ULL, 0x8D389AEAE6B4F1C1ULL }, /* XSUM_XXH64_testdata[2491] */ + { 1246, 0x0000000000000000ULL, 0x760FF274356E9C5FULL }, /* XSUM_XXH64_testdata[2492] */ + { 1246, 0x000000009E3779B1ULL, 0x7783C41F0339CCDAULL }, /* XSUM_XXH64_testdata[2493] */ + { 1247, 0x0000000000000000ULL, 0xAF849E2A261EB492ULL }, /* XSUM_XXH64_testdata[2494] */ + { 1247, 0x000000009E3779B1ULL, 0xACC69D37544594A8ULL }, /* XSUM_XXH64_testdata[2495] */ + { 1248, 0x0000000000000000ULL, 0x0DE54E89CB210CDCULL }, /* XSUM_XXH64_testdata[2496] */ + { 1248, 0x000000009E3779B1ULL, 0x61E849CA2EBEF9FFULL }, /* XSUM_XXH64_testdata[2497] */ + { 1249, 0x0000000000000000ULL, 0x5A3C8D08EB806BCEULL }, /* XSUM_XXH64_testdata[2498] */ + { 1249, 0x000000009E3779B1ULL, 0x379DC4974782BDD9ULL }, /* XSUM_XXH64_testdata[2499] */ + { 1250, 0x0000000000000000ULL, 0x368DC1131379B9FEULL }, /* XSUM_XXH64_testdata[2500] */ + { 1250, 0x000000009E3779B1ULL, 0x13325A3E8F165C63ULL }, /* XSUM_XXH64_testdata[2501] */ + { 1251, 0x0000000000000000ULL, 0x0F27CA33D9737A85ULL }, /* XSUM_XXH64_testdata[2502] */ + { 1251, 0x000000009E3779B1ULL, 0xC9A06B73A3CD97BCULL }, /* XSUM_XXH64_testdata[2503] */ + { 1252, 0x0000000000000000ULL, 0xF7138A9DA0358357ULL }, /* XSUM_XXH64_testdata[2504] */ + { 1252, 0x000000009E3779B1ULL, 0x483D37B4699A0BA5ULL }, /* XSUM_XXH64_testdata[2505] */ + { 1253, 0x0000000000000000ULL, 0xBB6044EAFE2A37DDULL }, /* XSUM_XXH64_testdata[2506] */ + { 1253, 0x000000009E3779B1ULL, 0xE832E33610F21528ULL }, /* XSUM_XXH64_testdata[2507] */ + { 1254, 0x0000000000000000ULL, 0x93F9A5C948795368ULL }, /* XSUM_XXH64_testdata[2508] */ + { 1254, 0x000000009E3779B1ULL, 0x9B5F496CB9421EBFULL }, /* XSUM_XXH64_testdata[2509] */ + { 1255, 0x0000000000000000ULL, 0x50BCB44F97A7E98EULL }, /* XSUM_XXH64_testdata[2510] */ + { 1255, 0x000000009E3779B1ULL, 0x89449A81F35B0468ULL }, /* XSUM_XXH64_testdata[2511] */ + { 1256, 0x0000000000000000ULL, 0xA300597AED91639AULL }, /* XSUM_XXH64_testdata[2512] */ + { 1256, 0x000000009E3779B1ULL, 0x612B85ADF15F21D6ULL }, /* XSUM_XXH64_testdata[2513] */ + { 1257, 0x0000000000000000ULL, 0x368F340A4488595CULL }, /* XSUM_XXH64_testdata[2514] */ + { 1257, 0x000000009E3779B1ULL, 0x669D33F4ABDF123CULL }, /* XSUM_XXH64_testdata[2515] */ + { 1258, 0x0000000000000000ULL, 0xABDFE2C1351C975CULL }, /* XSUM_XXH64_testdata[2516] */ + { 1258, 0x000000009E3779B1ULL, 0xD62D73141A7B16D3ULL }, /* XSUM_XXH64_testdata[2517] */ + { 1259, 0x0000000000000000ULL, 0x80E36E7DF86965A4ULL }, /* XSUM_XXH64_testdata[2518] */ + { 1259, 0x000000009E3779B1ULL, 0x4625C93A0EA7D013ULL }, /* XSUM_XXH64_testdata[2519] */ + { 1260, 0x0000000000000000ULL, 0xFB4CBD33B3DF9999ULL }, /* XSUM_XXH64_testdata[2520] */ + { 1260, 0x000000009E3779B1ULL, 0x363E4DFFEAFD4E6BULL }, /* XSUM_XXH64_testdata[2521] */ + { 1261, 0x0000000000000000ULL, 0x0E91C1D363780BBAULL }, /* XSUM_XXH64_testdata[2522] */ + { 1261, 0x000000009E3779B1ULL, 0x79DAFA2A931AA790ULL }, /* XSUM_XXH64_testdata[2523] */ + { 1262, 0x0000000000000000ULL, 0xB598E511B92FA54DULL }, /* XSUM_XXH64_testdata[2524] */ + { 1262, 0x000000009E3779B1ULL, 0x7452FF1D15408118ULL }, /* XSUM_XXH64_testdata[2525] */ + { 1263, 0x0000000000000000ULL, 0x6619E94FE3900A83ULL }, /* XSUM_XXH64_testdata[2526] */ + { 1263, 0x000000009E3779B1ULL, 0x4FB18DBBE813F3E0ULL }, /* XSUM_XXH64_testdata[2527] */ + { 1264, 0x0000000000000000ULL, 0xD06D2CBB6A4B4E8CULL }, /* XSUM_XXH64_testdata[2528] */ + { 1264, 0x000000009E3779B1ULL, 0x9AF61B3055DDFE08ULL }, /* XSUM_XXH64_testdata[2529] */ + { 1265, 0x0000000000000000ULL, 0xD1900B0CC6086C0EULL }, /* XSUM_XXH64_testdata[2530] */ + { 1265, 0x000000009E3779B1ULL, 0xE4063D30E4B884C2ULL }, /* XSUM_XXH64_testdata[2531] */ + { 1266, 0x0000000000000000ULL, 0x98AA9D73F2DAC51FULL }, /* XSUM_XXH64_testdata[2532] */ + { 1266, 0x000000009E3779B1ULL, 0x2E7DA66C23F348FDULL }, /* XSUM_XXH64_testdata[2533] */ + { 1267, 0x0000000000000000ULL, 0xA4EE1CAA73D39420ULL }, /* XSUM_XXH64_testdata[2534] */ + { 1267, 0x000000009E3779B1ULL, 0xB4D806D4A19DE853ULL }, /* XSUM_XXH64_testdata[2535] */ + { 1268, 0x0000000000000000ULL, 0x94AB4731B858F960ULL }, /* XSUM_XXH64_testdata[2536] */ + { 1268, 0x000000009E3779B1ULL, 0x5A8A9DC20D29F6BFULL }, /* XSUM_XXH64_testdata[2537] */ + { 1269, 0x0000000000000000ULL, 0x3876F287061992F2ULL }, /* XSUM_XXH64_testdata[2538] */ + { 1269, 0x000000009E3779B1ULL, 0xFC975910A170AA4AULL }, /* XSUM_XXH64_testdata[2539] */ + { 1270, 0x0000000000000000ULL, 0x5FD5A4DB54952F6CULL }, /* XSUM_XXH64_testdata[2540] */ + { 1270, 0x000000009E3779B1ULL, 0x036428121B4923F4ULL }, /* XSUM_XXH64_testdata[2541] */ + { 1271, 0x0000000000000000ULL, 0x6829473CA97E14F9ULL }, /* XSUM_XXH64_testdata[2542] */ + { 1271, 0x000000009E3779B1ULL, 0x01B5CD722CC40F2AULL }, /* XSUM_XXH64_testdata[2543] */ + { 1272, 0x0000000000000000ULL, 0xBE8A58BE020D3230ULL }, /* XSUM_XXH64_testdata[2544] */ + { 1272, 0x000000009E3779B1ULL, 0x6DAF9D0FE539903FULL }, /* XSUM_XXH64_testdata[2545] */ + { 1273, 0x0000000000000000ULL, 0x72AB5959633F5E27ULL }, /* XSUM_XXH64_testdata[2546] */ + { 1273, 0x000000009E3779B1ULL, 0x7D6F1923C6515C62ULL }, /* XSUM_XXH64_testdata[2547] */ + { 1274, 0x0000000000000000ULL, 0x8061916A374A52D9ULL }, /* XSUM_XXH64_testdata[2548] */ + { 1274, 0x000000009E3779B1ULL, 0x658A01111D5ACD46ULL }, /* XSUM_XXH64_testdata[2549] */ + { 1275, 0x0000000000000000ULL, 0xB7824002D110E264ULL }, /* XSUM_XXH64_testdata[2550] */ + { 1275, 0x000000009E3779B1ULL, 0xED42D01CB92B156CULL }, /* XSUM_XXH64_testdata[2551] */ + { 1276, 0x0000000000000000ULL, 0x0DBB0A3AEAD70D92ULL }, /* XSUM_XXH64_testdata[2552] */ + { 1276, 0x000000009E3779B1ULL, 0xAA81164963B74FD9ULL }, /* XSUM_XXH64_testdata[2553] */ + { 1277, 0x0000000000000000ULL, 0x601AD4BD37F3E98AULL }, /* XSUM_XXH64_testdata[2554] */ + { 1277, 0x000000009E3779B1ULL, 0x5E3395B8DE13A1AFULL }, /* XSUM_XXH64_testdata[2555] */ + { 1278, 0x0000000000000000ULL, 0x090F1C6FAB3195D0ULL }, /* XSUM_XXH64_testdata[2556] */ + { 1278, 0x000000009E3779B1ULL, 0x270DA22809FB4A56ULL }, /* XSUM_XXH64_testdata[2557] */ + { 1279, 0x0000000000000000ULL, 0x5522EF6FB953BBB7ULL }, /* XSUM_XXH64_testdata[2558] */ + { 1279, 0x000000009E3779B1ULL, 0xE0D3915752724221ULL }, /* XSUM_XXH64_testdata[2559] */ + { 1280, 0x0000000000000000ULL, 0x620780F4DA000BA0ULL }, /* XSUM_XXH64_testdata[2560] */ + { 1280, 0x000000009E3779B1ULL, 0x411FCE4EC0CD4D04ULL }, /* XSUM_XXH64_testdata[2561] */ + { 1281, 0x0000000000000000ULL, 0x8BE240B151E4AFB4ULL }, /* XSUM_XXH64_testdata[2562] */ + { 1281, 0x000000009E3779B1ULL, 0x5BC1006A8ECC7A82ULL }, /* XSUM_XXH64_testdata[2563] */ + { 1282, 0x0000000000000000ULL, 0x393728DEF8661B73ULL }, /* XSUM_XXH64_testdata[2564] */ + { 1282, 0x000000009E3779B1ULL, 0xFE7B502FFA49EF1AULL }, /* XSUM_XXH64_testdata[2565] */ + { 1283, 0x0000000000000000ULL, 0x96216CB0767E98B0ULL }, /* XSUM_XXH64_testdata[2566] */ + { 1283, 0x000000009E3779B1ULL, 0x5F796F16052AEC6BULL }, /* XSUM_XXH64_testdata[2567] */ + { 1284, 0x0000000000000000ULL, 0x4A72C5266407E593ULL }, /* XSUM_XXH64_testdata[2568] */ + { 1284, 0x000000009E3779B1ULL, 0xEBB729E300EC6656ULL }, /* XSUM_XXH64_testdata[2569] */ + { 1285, 0x0000000000000000ULL, 0x45BF8D6F7DC8DD11ULL }, /* XSUM_XXH64_testdata[2570] */ + { 1285, 0x000000009E3779B1ULL, 0x0FD93C9A526ED216ULL }, /* XSUM_XXH64_testdata[2571] */ + { 1286, 0x0000000000000000ULL, 0x7D95824B549B71CBULL }, /* XSUM_XXH64_testdata[2572] */ + { 1286, 0x000000009E3779B1ULL, 0xC2401042E5370568ULL }, /* XSUM_XXH64_testdata[2573] */ + { 1287, 0x0000000000000000ULL, 0x2CBFD6B6589C2905ULL }, /* XSUM_XXH64_testdata[2574] */ + { 1287, 0x000000009E3779B1ULL, 0x45C807941C51E844ULL }, /* XSUM_XXH64_testdata[2575] */ + { 1288, 0x0000000000000000ULL, 0x161BF2E173FFE0A0ULL }, /* XSUM_XXH64_testdata[2576] */ + { 1288, 0x000000009E3779B1ULL, 0x4BA7064E1EE3ABABULL }, /* XSUM_XXH64_testdata[2577] */ + { 1289, 0x0000000000000000ULL, 0x96EBFEDE5314C917ULL }, /* XSUM_XXH64_testdata[2578] */ + { 1289, 0x000000009E3779B1ULL, 0xC41857D925B1C574ULL }, /* XSUM_XXH64_testdata[2579] */ + { 1290, 0x0000000000000000ULL, 0xD3DBD1B2793B3913ULL }, /* XSUM_XXH64_testdata[2580] */ + { 1290, 0x000000009E3779B1ULL, 0x1BB19D4D9BC8C1EFULL }, /* XSUM_XXH64_testdata[2581] */ + { 1291, 0x0000000000000000ULL, 0x504C62B822A74FEDULL }, /* XSUM_XXH64_testdata[2582] */ + { 1291, 0x000000009E3779B1ULL, 0xD74421D8EF71F824ULL }, /* XSUM_XXH64_testdata[2583] */ + { 1292, 0x0000000000000000ULL, 0x0420AE710D4369F1ULL }, /* XSUM_XXH64_testdata[2584] */ + { 1292, 0x000000009E3779B1ULL, 0x6F9E7625EBB09291ULL }, /* XSUM_XXH64_testdata[2585] */ + { 1293, 0x0000000000000000ULL, 0x625A4E46766C5A3CULL }, /* XSUM_XXH64_testdata[2586] */ + { 1293, 0x000000009E3779B1ULL, 0xA9AE6496FE24B1CDULL }, /* XSUM_XXH64_testdata[2587] */ + { 1294, 0x0000000000000000ULL, 0x6D2D56B92F532AA1ULL }, /* XSUM_XXH64_testdata[2588] */ + { 1294, 0x000000009E3779B1ULL, 0xA365E105007B3D4BULL }, /* XSUM_XXH64_testdata[2589] */ + { 1295, 0x0000000000000000ULL, 0x6CE423EEB218BA1EULL }, /* XSUM_XXH64_testdata[2590] */ + { 1295, 0x000000009E3779B1ULL, 0x362275B2201E775DULL }, /* XSUM_XXH64_testdata[2591] */ + { 1296, 0x0000000000000000ULL, 0x57E7A8881FE5AE81ULL }, /* XSUM_XXH64_testdata[2592] */ + { 1296, 0x000000009E3779B1ULL, 0xF0A74F821C1AD1C1ULL }, /* XSUM_XXH64_testdata[2593] */ + { 1297, 0x0000000000000000ULL, 0xF1303BE97BB4A246ULL }, /* XSUM_XXH64_testdata[2594] */ + { 1297, 0x000000009E3779B1ULL, 0xC5DC38AFF72A9152ULL }, /* XSUM_XXH64_testdata[2595] */ + { 1298, 0x0000000000000000ULL, 0x9F66761CFFCB45B1ULL }, /* XSUM_XXH64_testdata[2596] */ + { 1298, 0x000000009E3779B1ULL, 0x046041DA0532975AULL }, /* XSUM_XXH64_testdata[2597] */ + { 1299, 0x0000000000000000ULL, 0x251386907EF2F085ULL }, /* XSUM_XXH64_testdata[2598] */ + { 1299, 0x000000009E3779B1ULL, 0x0BF0ADBD09C1AC4EULL }, /* XSUM_XXH64_testdata[2599] */ + { 1300, 0x0000000000000000ULL, 0x0A02074E30FC36FFULL }, /* XSUM_XXH64_testdata[2600] */ + { 1300, 0x000000009E3779B1ULL, 0x1AA00DE7FB6AB7DDULL }, /* XSUM_XXH64_testdata[2601] */ + { 1301, 0x0000000000000000ULL, 0x4B39E4D9BFA370EAULL }, /* XSUM_XXH64_testdata[2602] */ + { 1301, 0x000000009E3779B1ULL, 0xF4F19AD9A6F4277AULL }, /* XSUM_XXH64_testdata[2603] */ + { 1302, 0x0000000000000000ULL, 0x4672255174D95AF2ULL }, /* XSUM_XXH64_testdata[2604] */ + { 1302, 0x000000009E3779B1ULL, 0x9B8F68A596C484DBULL }, /* XSUM_XXH64_testdata[2605] */ + { 1303, 0x0000000000000000ULL, 0x0B3FA19454D12CDCULL }, /* XSUM_XXH64_testdata[2606] */ + { 1303, 0x000000009E3779B1ULL, 0xDE31CEA673ABFB4AULL }, /* XSUM_XXH64_testdata[2607] */ + { 1304, 0x0000000000000000ULL, 0x5AD5DD0AECCD49D6ULL }, /* XSUM_XXH64_testdata[2608] */ + { 1304, 0x000000009E3779B1ULL, 0x1CB9C7C2176B6770ULL }, /* XSUM_XXH64_testdata[2609] */ + { 1305, 0x0000000000000000ULL, 0xA5577C5E9001E583ULL }, /* XSUM_XXH64_testdata[2610] */ + { 1305, 0x000000009E3779B1ULL, 0xE9E3B6DE8FA67E13ULL }, /* XSUM_XXH64_testdata[2611] */ + { 1306, 0x0000000000000000ULL, 0x0F74C89D25ECBA2EULL }, /* XSUM_XXH64_testdata[2612] */ + { 1306, 0x000000009E3779B1ULL, 0x77A114AD8C9712BBULL }, /* XSUM_XXH64_testdata[2613] */ + { 1307, 0x0000000000000000ULL, 0x8F12CD107793E8ACULL }, /* XSUM_XXH64_testdata[2614] */ + { 1307, 0x000000009E3779B1ULL, 0x78D700D966328A18ULL }, /* XSUM_XXH64_testdata[2615] */ + { 1308, 0x0000000000000000ULL, 0xFD0109A81B799CFFULL }, /* XSUM_XXH64_testdata[2616] */ + { 1308, 0x000000009E3779B1ULL, 0x5EEBECB070F7B11CULL }, /* XSUM_XXH64_testdata[2617] */ + { 1309, 0x0000000000000000ULL, 0x9CBB8CE45E0B230AULL }, /* XSUM_XXH64_testdata[2618] */ + { 1309, 0x000000009E3779B1ULL, 0x6B756934FB7B7EDDULL }, /* XSUM_XXH64_testdata[2619] */ + { 1310, 0x0000000000000000ULL, 0x1DCD7B65323353C2ULL }, /* XSUM_XXH64_testdata[2620] */ + { 1310, 0x000000009E3779B1ULL, 0xAF699F491E0422D0ULL }, /* XSUM_XXH64_testdata[2621] */ + { 1311, 0x0000000000000000ULL, 0xACBDD24166A3D165ULL }, /* XSUM_XXH64_testdata[2622] */ + { 1311, 0x000000009E3779B1ULL, 0x048EA11D235CC86AULL }, /* XSUM_XXH64_testdata[2623] */ + { 1312, 0x0000000000000000ULL, 0x86C56523EB82696FULL }, /* XSUM_XXH64_testdata[2624] */ + { 1312, 0x000000009E3779B1ULL, 0x9A7B448CE5801A12ULL }, /* XSUM_XXH64_testdata[2625] */ + { 1313, 0x0000000000000000ULL, 0x1CE9B1FF5C0DF599ULL }, /* XSUM_XXH64_testdata[2626] */ + { 1313, 0x000000009E3779B1ULL, 0x1B23F0FD44BB34B8ULL }, /* XSUM_XXH64_testdata[2627] */ + { 1314, 0x0000000000000000ULL, 0xD5BF5A00BCBAC10CULL }, /* XSUM_XXH64_testdata[2628] */ + { 1314, 0x000000009E3779B1ULL, 0x9D4D890FA4E2EDA9ULL }, /* XSUM_XXH64_testdata[2629] */ + { 1315, 0x0000000000000000ULL, 0x6114C5E7EA3AD99DULL }, /* XSUM_XXH64_testdata[2630] */ + { 1315, 0x000000009E3779B1ULL, 0x3157827C67062E52ULL }, /* XSUM_XXH64_testdata[2631] */ + { 1316, 0x0000000000000000ULL, 0xC19238B4711F0A91ULL }, /* XSUM_XXH64_testdata[2632] */ + { 1316, 0x000000009E3779B1ULL, 0x3218A499FC46F348ULL }, /* XSUM_XXH64_testdata[2633] */ + { 1317, 0x0000000000000000ULL, 0xD424E17CF418A27EULL }, /* XSUM_XXH64_testdata[2634] */ + { 1317, 0x000000009E3779B1ULL, 0x9298929DB8C68228ULL }, /* XSUM_XXH64_testdata[2635] */ + { 1318, 0x0000000000000000ULL, 0xDA58D90A8397A6E7ULL }, /* XSUM_XXH64_testdata[2636] */ + { 1318, 0x000000009E3779B1ULL, 0x895B8F957AF9E3B0ULL }, /* XSUM_XXH64_testdata[2637] */ + { 1319, 0x0000000000000000ULL, 0xA9AC97A1B9A9C335ULL }, /* XSUM_XXH64_testdata[2638] */ + { 1319, 0x000000009E3779B1ULL, 0x44069E8EC3A9AE46ULL }, /* XSUM_XXH64_testdata[2639] */ + { 1320, 0x0000000000000000ULL, 0xB05F1E644ED3F09AULL }, /* XSUM_XXH64_testdata[2640] */ + { 1320, 0x000000009E3779B1ULL, 0x2741CB1FB955D529ULL }, /* XSUM_XXH64_testdata[2641] */ + { 1321, 0x0000000000000000ULL, 0x636235DE7AD43328ULL }, /* XSUM_XXH64_testdata[2642] */ + { 1321, 0x000000009E3779B1ULL, 0x1FDC0680D864142DULL }, /* XSUM_XXH64_testdata[2643] */ + { 1322, 0x0000000000000000ULL, 0x821690F2B23DD596ULL }, /* XSUM_XXH64_testdata[2644] */ + { 1322, 0x000000009E3779B1ULL, 0x8EFC06CACA6C24D1ULL }, /* XSUM_XXH64_testdata[2645] */ + { 1323, 0x0000000000000000ULL, 0xDD18B16D27A40B8CULL }, /* XSUM_XXH64_testdata[2646] */ + { 1323, 0x000000009E3779B1ULL, 0xB6044F19A110EE6AULL }, /* XSUM_XXH64_testdata[2647] */ + { 1324, 0x0000000000000000ULL, 0x3A038D0F25729ED8ULL }, /* XSUM_XXH64_testdata[2648] */ + { 1324, 0x000000009E3779B1ULL, 0x5A3FC610059044EBULL }, /* XSUM_XXH64_testdata[2649] */ + { 1325, 0x0000000000000000ULL, 0x35DC34B52F743250ULL }, /* XSUM_XXH64_testdata[2650] */ + { 1325, 0x000000009E3779B1ULL, 0xFF15107CAF2EF318ULL }, /* XSUM_XXH64_testdata[2651] */ + { 1326, 0x0000000000000000ULL, 0x1F2499166B03FD84ULL }, /* XSUM_XXH64_testdata[2652] */ + { 1326, 0x000000009E3779B1ULL, 0x8C304B194F9E4407ULL }, /* XSUM_XXH64_testdata[2653] */ + { 1327, 0x0000000000000000ULL, 0xD1D3D9937F31EBB3ULL }, /* XSUM_XXH64_testdata[2654] */ + { 1327, 0x000000009E3779B1ULL, 0x79B78D9E74862661ULL }, /* XSUM_XXH64_testdata[2655] */ + { 1328, 0x0000000000000000ULL, 0xE709EE1A35098365ULL }, /* XSUM_XXH64_testdata[2656] */ + { 1328, 0x000000009E3779B1ULL, 0xE1CFAFF78C6B23D2ULL }, /* XSUM_XXH64_testdata[2657] */ + { 1329, 0x0000000000000000ULL, 0xB12C7D1FBF2660FDULL }, /* XSUM_XXH64_testdata[2658] */ + { 1329, 0x000000009E3779B1ULL, 0x0EB7314B42C4782DULL }, /* XSUM_XXH64_testdata[2659] */ + { 1330, 0x0000000000000000ULL, 0x45E695DC6211BF44ULL }, /* XSUM_XXH64_testdata[2660] */ + { 1330, 0x000000009E3779B1ULL, 0x449D2A747B882733ULL }, /* XSUM_XXH64_testdata[2661] */ + { 1331, 0x0000000000000000ULL, 0x51BFFC24CED5C05DULL }, /* XSUM_XXH64_testdata[2662] */ + { 1331, 0x000000009E3779B1ULL, 0x4C643504A0EA9A5CULL }, /* XSUM_XXH64_testdata[2663] */ + { 1332, 0x0000000000000000ULL, 0x0C0F3DD79316A847ULL }, /* XSUM_XXH64_testdata[2664] */ + { 1332, 0x000000009E3779B1ULL, 0x54F568721DE3221DULL }, /* XSUM_XXH64_testdata[2665] */ + { 1333, 0x0000000000000000ULL, 0x6CE58BECEE8FEDB8ULL }, /* XSUM_XXH64_testdata[2666] */ + { 1333, 0x000000009E3779B1ULL, 0xDEE477768D9FAB72ULL }, /* XSUM_XXH64_testdata[2667] */ + { 1334, 0x0000000000000000ULL, 0x438579D86A9C15ACULL }, /* XSUM_XXH64_testdata[2668] */ + { 1334, 0x000000009E3779B1ULL, 0x16B36B7128883832ULL }, /* XSUM_XXH64_testdata[2669] */ + { 1335, 0x0000000000000000ULL, 0x0CBE8973D7F46722ULL }, /* XSUM_XXH64_testdata[2670] */ + { 1335, 0x000000009E3779B1ULL, 0xAB6A2F42B23D166FULL }, /* XSUM_XXH64_testdata[2671] */ + { 1336, 0x0000000000000000ULL, 0xD59552DAA0FA53B7ULL }, /* XSUM_XXH64_testdata[2672] */ + { 1336, 0x000000009E3779B1ULL, 0x548AB163F16CCAE5ULL }, /* XSUM_XXH64_testdata[2673] */ + { 1337, 0x0000000000000000ULL, 0xF46DD30316E0C084ULL }, /* XSUM_XXH64_testdata[2674] */ + { 1337, 0x000000009E3779B1ULL, 0xEDEA0A122A6A072BULL }, /* XSUM_XXH64_testdata[2675] */ + { 1338, 0x0000000000000000ULL, 0x452088C712C624D5ULL }, /* XSUM_XXH64_testdata[2676] */ + { 1338, 0x000000009E3779B1ULL, 0x83540FF52504F1B8ULL }, /* XSUM_XXH64_testdata[2677] */ + { 1339, 0x0000000000000000ULL, 0xA560912E46111B7FULL }, /* XSUM_XXH64_testdata[2678] */ + { 1339, 0x000000009E3779B1ULL, 0x2D6BB8E5263346E6ULL }, /* XSUM_XXH64_testdata[2679] */ + { 1340, 0x0000000000000000ULL, 0x6DA14D62717846D8ULL }, /* XSUM_XXH64_testdata[2680] */ + { 1340, 0x000000009E3779B1ULL, 0x114E2AE65121AD4DULL }, /* XSUM_XXH64_testdata[2681] */ + { 1341, 0x0000000000000000ULL, 0x918717AC22073D5BULL }, /* XSUM_XXH64_testdata[2682] */ + { 1341, 0x000000009E3779B1ULL, 0x6BC0B407F5C02975ULL }, /* XSUM_XXH64_testdata[2683] */ + { 1342, 0x0000000000000000ULL, 0x57444473A4A9CC90ULL }, /* XSUM_XXH64_testdata[2684] */ + { 1342, 0x000000009E3779B1ULL, 0x276AD11CD9F35079ULL }, /* XSUM_XXH64_testdata[2685] */ + { 1343, 0x0000000000000000ULL, 0x7AEE235559D4C0C8ULL }, /* XSUM_XXH64_testdata[2686] */ + { 1343, 0x000000009E3779B1ULL, 0x5D1427663CCB9705ULL }, /* XSUM_XXH64_testdata[2687] */ + { 1344, 0x0000000000000000ULL, 0x15DC7B5D5799797DULL }, /* XSUM_XXH64_testdata[2688] */ + { 1344, 0x000000009E3779B1ULL, 0x2B4E77316D560D11ULL }, /* XSUM_XXH64_testdata[2689] */ + { 1345, 0x0000000000000000ULL, 0x769B557586674FE0ULL }, /* XSUM_XXH64_testdata[2690] */ + { 1345, 0x000000009E3779B1ULL, 0x5D1B1868C61F2FB8ULL }, /* XSUM_XXH64_testdata[2691] */ + { 1346, 0x0000000000000000ULL, 0xF9ACBC483F6B3B7AULL }, /* XSUM_XXH64_testdata[2692] */ + { 1346, 0x000000009E3779B1ULL, 0x0C3B4817F0C6B1DBULL }, /* XSUM_XXH64_testdata[2693] */ + { 1347, 0x0000000000000000ULL, 0x501B6E21E12B9E60ULL }, /* XSUM_XXH64_testdata[2694] */ + { 1347, 0x000000009E3779B1ULL, 0x227D23F3803B24CDULL }, /* XSUM_XXH64_testdata[2695] */ + { 1348, 0x0000000000000000ULL, 0x54E43E94FB42C61EULL }, /* XSUM_XXH64_testdata[2696] */ + { 1348, 0x000000009E3779B1ULL, 0x04AF23C4A0B4EB7FULL }, /* XSUM_XXH64_testdata[2697] */ + { 1349, 0x0000000000000000ULL, 0x197CC234355FD003ULL }, /* XSUM_XXH64_testdata[2698] */ + { 1349, 0x000000009E3779B1ULL, 0xBEB7DF3E0B8F389AULL }, /* XSUM_XXH64_testdata[2699] */ + { 1350, 0x0000000000000000ULL, 0x8E6D5D488D4DD6E3ULL }, /* XSUM_XXH64_testdata[2700] */ + { 1350, 0x000000009E3779B1ULL, 0xE7BE820CD7CEE527ULL }, /* XSUM_XXH64_testdata[2701] */ + { 1351, 0x0000000000000000ULL, 0x1CBB77C52C65DA71ULL }, /* XSUM_XXH64_testdata[2702] */ + { 1351, 0x000000009E3779B1ULL, 0x9B6867A790593D53ULL }, /* XSUM_XXH64_testdata[2703] */ + { 1352, 0x0000000000000000ULL, 0x6DFB8558EA5E0582ULL }, /* XSUM_XXH64_testdata[2704] */ + { 1352, 0x000000009E3779B1ULL, 0x27E3CED0D26CE4CBULL }, /* XSUM_XXH64_testdata[2705] */ + { 1353, 0x0000000000000000ULL, 0xF378009D91F1DCB5ULL }, /* XSUM_XXH64_testdata[2706] */ + { 1353, 0x000000009E3779B1ULL, 0x47C62E6F224B1F7AULL }, /* XSUM_XXH64_testdata[2707] */ + { 1354, 0x0000000000000000ULL, 0x927F840AE002C3F2ULL }, /* XSUM_XXH64_testdata[2708] */ + { 1354, 0x000000009E3779B1ULL, 0x2317F37121D094C8ULL }, /* XSUM_XXH64_testdata[2709] */ + { 1355, 0x0000000000000000ULL, 0xC6E08DB10CE995E1ULL }, /* XSUM_XXH64_testdata[2710] */ + { 1355, 0x000000009E3779B1ULL, 0x6F44B118D871357DULL }, /* XSUM_XXH64_testdata[2711] */ + { 1356, 0x0000000000000000ULL, 0x1393620564EC0EB1ULL }, /* XSUM_XXH64_testdata[2712] */ + { 1356, 0x000000009E3779B1ULL, 0x622FFF1D7F8177E8ULL }, /* XSUM_XXH64_testdata[2713] */ + { 1357, 0x0000000000000000ULL, 0x983262A18B586007ULL }, /* XSUM_XXH64_testdata[2714] */ + { 1357, 0x000000009E3779B1ULL, 0xBF042E03A98F6AE4ULL }, /* XSUM_XXH64_testdata[2715] */ + { 1358, 0x0000000000000000ULL, 0x859C256485F976E7ULL }, /* XSUM_XXH64_testdata[2716] */ + { 1358, 0x000000009E3779B1ULL, 0x6503CE93831EC22EULL }, /* XSUM_XXH64_testdata[2717] */ + { 1359, 0x0000000000000000ULL, 0x1D100ED534A2B810ULL }, /* XSUM_XXH64_testdata[2718] */ + { 1359, 0x000000009E3779B1ULL, 0xA8C9E649EB779358ULL }, /* XSUM_XXH64_testdata[2719] */ + { 1360, 0x0000000000000000ULL, 0x695F3D196CEEC9DDULL }, /* XSUM_XXH64_testdata[2720] */ + { 1360, 0x000000009E3779B1ULL, 0x961139EEE9C207DAULL }, /* XSUM_XXH64_testdata[2721] */ + { 1361, 0x0000000000000000ULL, 0xA3AC9A161CE70ADDULL }, /* XSUM_XXH64_testdata[2722] */ + { 1361, 0x000000009E3779B1ULL, 0x766B37641FF3F02BULL }, /* XSUM_XXH64_testdata[2723] */ + { 1362, 0x0000000000000000ULL, 0x36222398650CAC27ULL }, /* XSUM_XXH64_testdata[2724] */ + { 1362, 0x000000009E3779B1ULL, 0x05E749AF5E2B7653ULL }, /* XSUM_XXH64_testdata[2725] */ + { 1363, 0x0000000000000000ULL, 0x92379CCF5DA590BCULL }, /* XSUM_XXH64_testdata[2726] */ + { 1363, 0x000000009E3779B1ULL, 0x9ACD63E8D7AF8CB5ULL }, /* XSUM_XXH64_testdata[2727] */ + { 1364, 0x0000000000000000ULL, 0x1380DE1F0C1F2EF6ULL }, /* XSUM_XXH64_testdata[2728] */ + { 1364, 0x000000009E3779B1ULL, 0x3E66D65956E4E057ULL }, /* XSUM_XXH64_testdata[2729] */ + { 1365, 0x0000000000000000ULL, 0x2781F7BF3D5E0C02ULL }, /* XSUM_XXH64_testdata[2730] */ + { 1365, 0x000000009E3779B1ULL, 0x763FBFD7344F4B5CULL }, /* XSUM_XXH64_testdata[2731] */ + { 1366, 0x0000000000000000ULL, 0x52B1CD098243A478ULL }, /* XSUM_XXH64_testdata[2732] */ + { 1366, 0x000000009E3779B1ULL, 0xE989DD600715A8B2ULL }, /* XSUM_XXH64_testdata[2733] */ + { 1367, 0x0000000000000000ULL, 0xAB8832B33745668DULL }, /* XSUM_XXH64_testdata[2734] */ + { 1367, 0x000000009E3779B1ULL, 0xF2DB0271B62431EEULL }, /* XSUM_XXH64_testdata[2735] */ + { 1368, 0x0000000000000000ULL, 0x3E10A789EF2DE6B5ULL }, /* XSUM_XXH64_testdata[2736] */ + { 1368, 0x000000009E3779B1ULL, 0x3ACEDB96AA1231A4ULL }, /* XSUM_XXH64_testdata[2737] */ + { 1369, 0x0000000000000000ULL, 0x718FA0567EF47573ULL }, /* XSUM_XXH64_testdata[2738] */ + { 1369, 0x000000009E3779B1ULL, 0x0495FC84A8D0A331ULL }, /* XSUM_XXH64_testdata[2739] */ + { 1370, 0x0000000000000000ULL, 0xD508D60043853DE7ULL }, /* XSUM_XXH64_testdata[2740] */ + { 1370, 0x000000009E3779B1ULL, 0xBD970E64AB9E7DA5ULL }, /* XSUM_XXH64_testdata[2741] */ + { 1371, 0x0000000000000000ULL, 0xFEC8D842F5B0DFEBULL }, /* XSUM_XXH64_testdata[2742] */ + { 1371, 0x000000009E3779B1ULL, 0xC0CEBE8A2FB49D51ULL }, /* XSUM_XXH64_testdata[2743] */ + { 1372, 0x0000000000000000ULL, 0x80A3B95D583AA0B2ULL }, /* XSUM_XXH64_testdata[2744] */ + { 1372, 0x000000009E3779B1ULL, 0x420BE2BCA48D8E97ULL }, /* XSUM_XXH64_testdata[2745] */ + { 1373, 0x0000000000000000ULL, 0xB79CCFDC858203FFULL }, /* XSUM_XXH64_testdata[2746] */ + { 1373, 0x000000009E3779B1ULL, 0x1DC28B3C9F574291ULL }, /* XSUM_XXH64_testdata[2747] */ + { 1374, 0x0000000000000000ULL, 0x1BAA88C3B3C9655FULL }, /* XSUM_XXH64_testdata[2748] */ + { 1374, 0x000000009E3779B1ULL, 0x9EE63A79A32A3662ULL }, /* XSUM_XXH64_testdata[2749] */ + { 1375, 0x0000000000000000ULL, 0xA2AC5951A4B81E9AULL }, /* XSUM_XXH64_testdata[2750] */ + { 1375, 0x000000009E3779B1ULL, 0xB605B0B60623303DULL }, /* XSUM_XXH64_testdata[2751] */ + { 1376, 0x0000000000000000ULL, 0x05105AD85ED25464ULL }, /* XSUM_XXH64_testdata[2752] */ + { 1376, 0x000000009E3779B1ULL, 0x1B3486DF856CA7EAULL }, /* XSUM_XXH64_testdata[2753] */ + { 1377, 0x0000000000000000ULL, 0x9B980D34293F34CAULL }, /* XSUM_XXH64_testdata[2754] */ + { 1377, 0x000000009E3779B1ULL, 0xC8C8C18F611F229CULL }, /* XSUM_XXH64_testdata[2755] */ + { 1378, 0x0000000000000000ULL, 0x9E22C0A652672D0BULL }, /* XSUM_XXH64_testdata[2756] */ + { 1378, 0x000000009E3779B1ULL, 0x6BFAB8641B1E621CULL }, /* XSUM_XXH64_testdata[2757] */ + { 1379, 0x0000000000000000ULL, 0x5086E3821CC8406CULL }, /* XSUM_XXH64_testdata[2758] */ + { 1379, 0x000000009E3779B1ULL, 0xCFBF4F87BB412E3BULL }, /* XSUM_XXH64_testdata[2759] */ + { 1380, 0x0000000000000000ULL, 0x7BE9601EBCC8286CULL }, /* XSUM_XXH64_testdata[2760] */ + { 1380, 0x000000009E3779B1ULL, 0x4C80BA36A25C0399ULL }, /* XSUM_XXH64_testdata[2761] */ + { 1381, 0x0000000000000000ULL, 0x3C89911C7DA656CDULL }, /* XSUM_XXH64_testdata[2762] */ + { 1381, 0x000000009E3779B1ULL, 0xCE71438C1CC0C506ULL }, /* XSUM_XXH64_testdata[2763] */ + { 1382, 0x0000000000000000ULL, 0x2C3784F266003B55ULL }, /* XSUM_XXH64_testdata[2764] */ + { 1382, 0x000000009E3779B1ULL, 0x49AAE7ECA652DF1DULL }, /* XSUM_XXH64_testdata[2765] */ + { 1383, 0x0000000000000000ULL, 0x4F25B23A35CA6D18ULL }, /* XSUM_XXH64_testdata[2766] */ + { 1383, 0x000000009E3779B1ULL, 0xA5CAAD495EC98DBEULL }, /* XSUM_XXH64_testdata[2767] */ + { 1384, 0x0000000000000000ULL, 0x55FD1C3883B8E6E7ULL }, /* XSUM_XXH64_testdata[2768] */ + { 1384, 0x000000009E3779B1ULL, 0x3F9B9CE0F835FF7AULL }, /* XSUM_XXH64_testdata[2769] */ + { 1385, 0x0000000000000000ULL, 0x8CA9E11FCAFEE78EULL }, /* XSUM_XXH64_testdata[2770] */ + { 1385, 0x000000009E3779B1ULL, 0x1773739BA321ECF7ULL }, /* XSUM_XXH64_testdata[2771] */ + { 1386, 0x0000000000000000ULL, 0x4A3412EB728E91AEULL }, /* XSUM_XXH64_testdata[2772] */ + { 1386, 0x000000009E3779B1ULL, 0x64440665090CEF4CULL }, /* XSUM_XXH64_testdata[2773] */ + { 1387, 0x0000000000000000ULL, 0xFCB0771B2EB57A0AULL }, /* XSUM_XXH64_testdata[2774] */ + { 1387, 0x000000009E3779B1ULL, 0x426FCFEBF3D6E5E8ULL }, /* XSUM_XXH64_testdata[2775] */ + { 1388, 0x0000000000000000ULL, 0x2F30B02AA699CBE8ULL }, /* XSUM_XXH64_testdata[2776] */ + { 1388, 0x000000009E3779B1ULL, 0x64A446AB9B571DD2ULL }, /* XSUM_XXH64_testdata[2777] */ + { 1389, 0x0000000000000000ULL, 0x9DA2036562427656ULL }, /* XSUM_XXH64_testdata[2778] */ + { 1389, 0x000000009E3779B1ULL, 0xF1AEE90EAE91F957ULL }, /* XSUM_XXH64_testdata[2779] */ + { 1390, 0x0000000000000000ULL, 0xB2B8977223C5D2C1ULL }, /* XSUM_XXH64_testdata[2780] */ + { 1390, 0x000000009E3779B1ULL, 0x9462EFF8DE381453ULL }, /* XSUM_XXH64_testdata[2781] */ + { 1391, 0x0000000000000000ULL, 0x4C42F170AAD91664ULL }, /* XSUM_XXH64_testdata[2782] */ + { 1391, 0x000000009E3779B1ULL, 0x50AE4C1857E9ADD3ULL }, /* XSUM_XXH64_testdata[2783] */ + { 1392, 0x0000000000000000ULL, 0x69303B567524C0A3ULL }, /* XSUM_XXH64_testdata[2784] */ + { 1392, 0x000000009E3779B1ULL, 0x92374DE46EACAFE2ULL }, /* XSUM_XXH64_testdata[2785] */ + { 1393, 0x0000000000000000ULL, 0x7FB292558526C18EULL }, /* XSUM_XXH64_testdata[2786] */ + { 1393, 0x000000009E3779B1ULL, 0x162A2B64E1C9C595ULL }, /* XSUM_XXH64_testdata[2787] */ + { 1394, 0x0000000000000000ULL, 0xAF95D1BFD104F5AAULL }, /* XSUM_XXH64_testdata[2788] */ + { 1394, 0x000000009E3779B1ULL, 0x8F14240BD0721EC1ULL }, /* XSUM_XXH64_testdata[2789] */ + { 1395, 0x0000000000000000ULL, 0xDDF9460952022AC9ULL }, /* XSUM_XXH64_testdata[2790] */ + { 1395, 0x000000009E3779B1ULL, 0x9BD0060C13A38E86ULL }, /* XSUM_XXH64_testdata[2791] */ + { 1396, 0x0000000000000000ULL, 0xED4C2D524DC349FEULL }, /* XSUM_XXH64_testdata[2792] */ + { 1396, 0x000000009E3779B1ULL, 0x1941F5B34399C0CDULL }, /* XSUM_XXH64_testdata[2793] */ + { 1397, 0x0000000000000000ULL, 0xFA075133A00FB771ULL }, /* XSUM_XXH64_testdata[2794] */ + { 1397, 0x000000009E3779B1ULL, 0x140CCF6A98392415ULL }, /* XSUM_XXH64_testdata[2795] */ + { 1398, 0x0000000000000000ULL, 0xD3EFE91A84274D6CULL }, /* XSUM_XXH64_testdata[2796] */ + { 1398, 0x000000009E3779B1ULL, 0x85C4C7E082426AE9ULL }, /* XSUM_XXH64_testdata[2797] */ + { 1399, 0x0000000000000000ULL, 0x35F2EF47A529872BULL }, /* XSUM_XXH64_testdata[2798] */ + { 1399, 0x000000009E3779B1ULL, 0xA41F8535D0C66086ULL }, /* XSUM_XXH64_testdata[2799] */ + { 1400, 0x0000000000000000ULL, 0x2764EB1CFCCB0F47ULL }, /* XSUM_XXH64_testdata[2800] */ + { 1400, 0x000000009E3779B1ULL, 0x0729A7AEF3131B33ULL }, /* XSUM_XXH64_testdata[2801] */ + { 1401, 0x0000000000000000ULL, 0x434C8FAC341BAB69ULL }, /* XSUM_XXH64_testdata[2802] */ + { 1401, 0x000000009E3779B1ULL, 0xDBA0C947AACE6DE8ULL }, /* XSUM_XXH64_testdata[2803] */ + { 1402, 0x0000000000000000ULL, 0x8515BF3CB931F6ADULL }, /* XSUM_XXH64_testdata[2804] */ + { 1402, 0x000000009E3779B1ULL, 0x70BE88885AA321D6ULL }, /* XSUM_XXH64_testdata[2805] */ + { 1403, 0x0000000000000000ULL, 0x31F9D7532FC60CFCULL }, /* XSUM_XXH64_testdata[2806] */ + { 1403, 0x000000009E3779B1ULL, 0xB316CD5AC2EB3017ULL }, /* XSUM_XXH64_testdata[2807] */ + { 1404, 0x0000000000000000ULL, 0x9D5FF3DA416DCDA2ULL }, /* XSUM_XXH64_testdata[2808] */ + { 1404, 0x000000009E3779B1ULL, 0x1A55EC8281BF14D8ULL }, /* XSUM_XXH64_testdata[2809] */ + { 1405, 0x0000000000000000ULL, 0x52AFE94D8A457BDAULL }, /* XSUM_XXH64_testdata[2810] */ + { 1405, 0x000000009E3779B1ULL, 0x9A5FE08630205E30ULL }, /* XSUM_XXH64_testdata[2811] */ + { 1406, 0x0000000000000000ULL, 0x89FA771920AB788DULL }, /* XSUM_XXH64_testdata[2812] */ + { 1406, 0x000000009E3779B1ULL, 0xABCF86246F306DC7ULL }, /* XSUM_XXH64_testdata[2813] */ + { 1407, 0x0000000000000000ULL, 0xBD3CED06760E9D9DULL }, /* XSUM_XXH64_testdata[2814] */ + { 1407, 0x000000009E3779B1ULL, 0xBCB2C1C8334FD29DULL }, /* XSUM_XXH64_testdata[2815] */ + { 1408, 0x0000000000000000ULL, 0xB8ED29057DB3F656ULL }, /* XSUM_XXH64_testdata[2816] */ + { 1408, 0x000000009E3779B1ULL, 0x96B558FE2F7EC951ULL }, /* XSUM_XXH64_testdata[2817] */ + { 1409, 0x0000000000000000ULL, 0x387FB5D4FE9557F1ULL }, /* XSUM_XXH64_testdata[2818] */ + { 1409, 0x000000009E3779B1ULL, 0xBBC531AECA8C2299ULL }, /* XSUM_XXH64_testdata[2819] */ + { 1410, 0x0000000000000000ULL, 0x6B67D1773FBAC3A4ULL }, /* XSUM_XXH64_testdata[2820] */ + { 1410, 0x000000009E3779B1ULL, 0xAAA8764F5D162926ULL }, /* XSUM_XXH64_testdata[2821] */ + { 1411, 0x0000000000000000ULL, 0xAA9D378A0E424E33ULL }, /* XSUM_XXH64_testdata[2822] */ + { 1411, 0x000000009E3779B1ULL, 0xB5DE4BFAEDA569BBULL }, /* XSUM_XXH64_testdata[2823] */ + { 1412, 0x0000000000000000ULL, 0xD8ED1C02753A0C2AULL }, /* XSUM_XXH64_testdata[2824] */ + { 1412, 0x000000009E3779B1ULL, 0xBCF9F94C5EADD3C4ULL }, /* XSUM_XXH64_testdata[2825] */ + { 1413, 0x0000000000000000ULL, 0x930DCAE693006F34ULL }, /* XSUM_XXH64_testdata[2826] */ + { 1413, 0x000000009E3779B1ULL, 0x10885D81C03734B8ULL }, /* XSUM_XXH64_testdata[2827] */ + { 1414, 0x0000000000000000ULL, 0x7671A5E7871645B3ULL }, /* XSUM_XXH64_testdata[2828] */ + { 1414, 0x000000009E3779B1ULL, 0x38ACBF3BA2708BADULL }, /* XSUM_XXH64_testdata[2829] */ + { 1415, 0x0000000000000000ULL, 0x62C922A90C9D4771ULL }, /* XSUM_XXH64_testdata[2830] */ + { 1415, 0x000000009E3779B1ULL, 0x3314D5D248121BE8ULL }, /* XSUM_XXH64_testdata[2831] */ + { 1416, 0x0000000000000000ULL, 0x7FCFC2B8D7A05E7EULL }, /* XSUM_XXH64_testdata[2832] */ + { 1416, 0x000000009E3779B1ULL, 0xD3E65C430D8FED2BULL }, /* XSUM_XXH64_testdata[2833] */ + { 1417, 0x0000000000000000ULL, 0x05384040B0FFAE41ULL }, /* XSUM_XXH64_testdata[2834] */ + { 1417, 0x000000009E3779B1ULL, 0xCAB435B84527AA8DULL }, /* XSUM_XXH64_testdata[2835] */ + { 1418, 0x0000000000000000ULL, 0x14C7773C9211B772ULL }, /* XSUM_XXH64_testdata[2836] */ + { 1418, 0x000000009E3779B1ULL, 0x75D192F74DF1E368ULL }, /* XSUM_XXH64_testdata[2837] */ + { 1419, 0x0000000000000000ULL, 0x7BBDAEB0D052C59FULL }, /* XSUM_XXH64_testdata[2838] */ + { 1419, 0x000000009E3779B1ULL, 0x2F77DF0021087209ULL }, /* XSUM_XXH64_testdata[2839] */ + { 1420, 0x0000000000000000ULL, 0x5AB24699346A8A33ULL }, /* XSUM_XXH64_testdata[2840] */ + { 1420, 0x000000009E3779B1ULL, 0x8C007172379EB0E3ULL }, /* XSUM_XXH64_testdata[2841] */ + { 1421, 0x0000000000000000ULL, 0x88F6070327945BE5ULL }, /* XSUM_XXH64_testdata[2842] */ + { 1421, 0x000000009E3779B1ULL, 0xCA801BBAF31272C9ULL }, /* XSUM_XXH64_testdata[2843] */ + { 1422, 0x0000000000000000ULL, 0x51A1B2F87302C6D8ULL }, /* XSUM_XXH64_testdata[2844] */ + { 1422, 0x000000009E3779B1ULL, 0x5C16264DA6393D7DULL }, /* XSUM_XXH64_testdata[2845] */ + { 1423, 0x0000000000000000ULL, 0x5A0AF8D5F6D877BAULL }, /* XSUM_XXH64_testdata[2846] */ + { 1423, 0x000000009E3779B1ULL, 0xEF006D3E22294420ULL }, /* XSUM_XXH64_testdata[2847] */ + { 1424, 0x0000000000000000ULL, 0x1035CD2451591B7EULL }, /* XSUM_XXH64_testdata[2848] */ + { 1424, 0x000000009E3779B1ULL, 0xEA6BB73F47B12F70ULL }, /* XSUM_XXH64_testdata[2849] */ + { 1425, 0x0000000000000000ULL, 0x31B4370AECA70AF0ULL }, /* XSUM_XXH64_testdata[2850] */ + { 1425, 0x000000009E3779B1ULL, 0xD85F64E7BD1AEFB1ULL }, /* XSUM_XXH64_testdata[2851] */ + { 1426, 0x0000000000000000ULL, 0x8A5128B550E364E4ULL }, /* XSUM_XXH64_testdata[2852] */ + { 1426, 0x000000009E3779B1ULL, 0x8E9FC61253F0B806ULL }, /* XSUM_XXH64_testdata[2853] */ + { 1427, 0x0000000000000000ULL, 0x49D52BC80042A3C9ULL }, /* XSUM_XXH64_testdata[2854] */ + { 1427, 0x000000009E3779B1ULL, 0xBEF93A8BF95E29B2ULL }, /* XSUM_XXH64_testdata[2855] */ + { 1428, 0x0000000000000000ULL, 0x9AFAFC896AF5135AULL }, /* XSUM_XXH64_testdata[2856] */ + { 1428, 0x000000009E3779B1ULL, 0xEF0E6C08921028E0ULL }, /* XSUM_XXH64_testdata[2857] */ + { 1429, 0x0000000000000000ULL, 0xD716A4A02703FCD6ULL }, /* XSUM_XXH64_testdata[2858] */ + { 1429, 0x000000009E3779B1ULL, 0x2DEA819EEF6B4595ULL }, /* XSUM_XXH64_testdata[2859] */ + { 1430, 0x0000000000000000ULL, 0xEA46BF1375B51E01ULL }, /* XSUM_XXH64_testdata[2860] */ + { 1430, 0x000000009E3779B1ULL, 0x10E8697EA20375CDULL }, /* XSUM_XXH64_testdata[2861] */ + { 1431, 0x0000000000000000ULL, 0xD1677286E49D7AE9ULL }, /* XSUM_XXH64_testdata[2862] */ + { 1431, 0x000000009E3779B1ULL, 0x4684D4C0C84A53A7ULL }, /* XSUM_XXH64_testdata[2863] */ + { 1432, 0x0000000000000000ULL, 0xB8443E3175950346ULL }, /* XSUM_XXH64_testdata[2864] */ + { 1432, 0x000000009E3779B1ULL, 0x393277B05E885C65ULL }, /* XSUM_XXH64_testdata[2865] */ + { 1433, 0x0000000000000000ULL, 0x3C09ACEBA05DDEF4ULL }, /* XSUM_XXH64_testdata[2866] */ + { 1433, 0x000000009E3779B1ULL, 0x4A00F39B99CE0EA0ULL }, /* XSUM_XXH64_testdata[2867] */ + { 1434, 0x0000000000000000ULL, 0x269F19470CAE3C69ULL }, /* XSUM_XXH64_testdata[2868] */ + { 1434, 0x000000009E3779B1ULL, 0x6C690DC42C3A9A43ULL }, /* XSUM_XXH64_testdata[2869] */ + { 1435, 0x0000000000000000ULL, 0x347414263504B8C2ULL }, /* XSUM_XXH64_testdata[2870] */ + { 1435, 0x000000009E3779B1ULL, 0x62412B4D4DC300C8ULL }, /* XSUM_XXH64_testdata[2871] */ + { 1436, 0x0000000000000000ULL, 0x540681AD51327B7EULL }, /* XSUM_XXH64_testdata[2872] */ + { 1436, 0x000000009E3779B1ULL, 0x7632FBF9FD453F12ULL }, /* XSUM_XXH64_testdata[2873] */ + { 1437, 0x0000000000000000ULL, 0xA25FC78176580D43ULL }, /* XSUM_XXH64_testdata[2874] */ + { 1437, 0x000000009E3779B1ULL, 0xE088E98CDF324070ULL }, /* XSUM_XXH64_testdata[2875] */ + { 1438, 0x0000000000000000ULL, 0x2DDB228C75DB7167ULL }, /* XSUM_XXH64_testdata[2876] */ + { 1438, 0x000000009E3779B1ULL, 0xA867E2DCDC56505BULL }, /* XSUM_XXH64_testdata[2877] */ + { 1439, 0x0000000000000000ULL, 0x34A7198C97C57F64ULL }, /* XSUM_XXH64_testdata[2878] */ + { 1439, 0x000000009E3779B1ULL, 0x6ECEA6835BC51709ULL }, /* XSUM_XXH64_testdata[2879] */ + { 1440, 0x0000000000000000ULL, 0x8566C095BF096EA9ULL }, /* XSUM_XXH64_testdata[2880] */ + { 1440, 0x000000009E3779B1ULL, 0xE716D1071B5C5BA9ULL }, /* XSUM_XXH64_testdata[2881] */ + { 1441, 0x0000000000000000ULL, 0x3140D9FE67215224ULL }, /* XSUM_XXH64_testdata[2882] */ + { 1441, 0x000000009E3779B1ULL, 0x747696972CAD69FAULL }, /* XSUM_XXH64_testdata[2883] */ + { 1442, 0x0000000000000000ULL, 0xBAFFEBF129E5962FULL }, /* XSUM_XXH64_testdata[2884] */ + { 1442, 0x000000009E3779B1ULL, 0xF3CD672ADDC8AED5ULL }, /* XSUM_XXH64_testdata[2885] */ + { 1443, 0x0000000000000000ULL, 0xAE9E2011F52A8A64ULL }, /* XSUM_XXH64_testdata[2886] */ + { 1443, 0x000000009E3779B1ULL, 0xC7A6748860A43455ULL }, /* XSUM_XXH64_testdata[2887] */ + { 1444, 0x0000000000000000ULL, 0x92FE8E709EE3B9EAULL }, /* XSUM_XXH64_testdata[2888] */ + { 1444, 0x000000009E3779B1ULL, 0xFCE8A337561D1A7BULL }, /* XSUM_XXH64_testdata[2889] */ + { 1445, 0x0000000000000000ULL, 0x261231C0CF704346ULL }, /* XSUM_XXH64_testdata[2890] */ + { 1445, 0x000000009E3779B1ULL, 0x68215EE9EB5B80DAULL }, /* XSUM_XXH64_testdata[2891] */ + { 1446, 0x0000000000000000ULL, 0x7719D7F38F357225ULL }, /* XSUM_XXH64_testdata[2892] */ + { 1446, 0x000000009E3779B1ULL, 0x45D4AB2DF7BEC909ULL }, /* XSUM_XXH64_testdata[2893] */ + { 1447, 0x0000000000000000ULL, 0x4FD64C4CD3E8675BULL }, /* XSUM_XXH64_testdata[2894] */ + { 1447, 0x000000009E3779B1ULL, 0x76D0FA7C6F361546ULL }, /* XSUM_XXH64_testdata[2895] */ + { 1448, 0x0000000000000000ULL, 0x4C299D06102A101EULL }, /* XSUM_XXH64_testdata[2896] */ + { 1448, 0x000000009E3779B1ULL, 0xE91228A4672BF68EULL }, /* XSUM_XXH64_testdata[2897] */ + { 1449, 0x0000000000000000ULL, 0x0DE12AFCC005F1E1ULL }, /* XSUM_XXH64_testdata[2898] */ + { 1449, 0x000000009E3779B1ULL, 0x48A847A19C7DEFA6ULL }, /* XSUM_XXH64_testdata[2899] */ + { 1450, 0x0000000000000000ULL, 0xED52DD144A739FBCULL }, /* XSUM_XXH64_testdata[2900] */ + { 1450, 0x000000009E3779B1ULL, 0xFDF107770AF5E161ULL }, /* XSUM_XXH64_testdata[2901] */ + { 1451, 0x0000000000000000ULL, 0xBADF26C68BC84826ULL }, /* XSUM_XXH64_testdata[2902] */ + { 1451, 0x000000009E3779B1ULL, 0x9D3308507D63B6F7ULL }, /* XSUM_XXH64_testdata[2903] */ + { 1452, 0x0000000000000000ULL, 0x7FA6FFA49A4A597FULL }, /* XSUM_XXH64_testdata[2904] */ + { 1452, 0x000000009E3779B1ULL, 0x7B13FC644B3772EBULL }, /* XSUM_XXH64_testdata[2905] */ + { 1453, 0x0000000000000000ULL, 0xF39D65107F93CB0FULL }, /* XSUM_XXH64_testdata[2906] */ + { 1453, 0x000000009E3779B1ULL, 0xA48CAD1CA608E6B7ULL }, /* XSUM_XXH64_testdata[2907] */ + { 1454, 0x0000000000000000ULL, 0x101EFEAB0DCB65D3ULL }, /* XSUM_XXH64_testdata[2908] */ + { 1454, 0x000000009E3779B1ULL, 0xC7FA192E41805983ULL }, /* XSUM_XXH64_testdata[2909] */ + { 1455, 0x0000000000000000ULL, 0x8833E666865F2E5FULL }, /* XSUM_XXH64_testdata[2910] */ + { 1455, 0x000000009E3779B1ULL, 0x8278069ED1F682CBULL }, /* XSUM_XXH64_testdata[2911] */ + { 1456, 0x0000000000000000ULL, 0x2F01BD0C433E5550ULL }, /* XSUM_XXH64_testdata[2912] */ + { 1456, 0x000000009E3779B1ULL, 0xBD143DC1B73859B4ULL }, /* XSUM_XXH64_testdata[2913] */ + { 1457, 0x0000000000000000ULL, 0x272159E114DAB7EBULL }, /* XSUM_XXH64_testdata[2914] */ + { 1457, 0x000000009E3779B1ULL, 0x97E408F3690958EDULL }, /* XSUM_XXH64_testdata[2915] */ + { 1458, 0x0000000000000000ULL, 0x1045EEFF406CBEDEULL }, /* XSUM_XXH64_testdata[2916] */ + { 1458, 0x000000009E3779B1ULL, 0xFB2CAC5E57A0B6F1ULL }, /* XSUM_XXH64_testdata[2917] */ + { 1459, 0x0000000000000000ULL, 0x32211FA3D50BA16DULL }, /* XSUM_XXH64_testdata[2918] */ + { 1459, 0x000000009E3779B1ULL, 0xD1E9E3DDD13972C0ULL }, /* XSUM_XXH64_testdata[2919] */ + { 1460, 0x0000000000000000ULL, 0x3009626300D1513EULL }, /* XSUM_XXH64_testdata[2920] */ + { 1460, 0x000000009E3779B1ULL, 0xDB1A55314DFB90A1ULL }, /* XSUM_XXH64_testdata[2921] */ + { 1461, 0x0000000000000000ULL, 0x456D11EF8FC39F93ULL }, /* XSUM_XXH64_testdata[2922] */ + { 1461, 0x000000009E3779B1ULL, 0x4B2A5A2199951E7EULL }, /* XSUM_XXH64_testdata[2923] */ + { 1462, 0x0000000000000000ULL, 0x125C836BF1538374ULL }, /* XSUM_XXH64_testdata[2924] */ + { 1462, 0x000000009E3779B1ULL, 0x5BD1ED70A5E5E950ULL }, /* XSUM_XXH64_testdata[2925] */ + { 1463, 0x0000000000000000ULL, 0xD569E05067BE5FA6ULL }, /* XSUM_XXH64_testdata[2926] */ + { 1463, 0x000000009E3779B1ULL, 0x103170624ACB74ABULL }, /* XSUM_XXH64_testdata[2927] */ + { 1464, 0x0000000000000000ULL, 0x2B4483710726096CULL }, /* XSUM_XXH64_testdata[2928] */ + { 1464, 0x000000009E3779B1ULL, 0xA13F3D60CD7133E4ULL }, /* XSUM_XXH64_testdata[2929] */ + { 1465, 0x0000000000000000ULL, 0xDF0C24A1FA0470F3ULL }, /* XSUM_XXH64_testdata[2930] */ + { 1465, 0x000000009E3779B1ULL, 0x39A95CB70B9EAE27ULL }, /* XSUM_XXH64_testdata[2931] */ + { 1466, 0x0000000000000000ULL, 0x8E29827A525351CBULL }, /* XSUM_XXH64_testdata[2932] */ + { 1466, 0x000000009E3779B1ULL, 0xE1E83603AE96EA0EULL }, /* XSUM_XXH64_testdata[2933] */ + { 1467, 0x0000000000000000ULL, 0x79F1FA1757DC13FFULL }, /* XSUM_XXH64_testdata[2934] */ + { 1467, 0x000000009E3779B1ULL, 0x172D6678D6609F86ULL }, /* XSUM_XXH64_testdata[2935] */ + { 1468, 0x0000000000000000ULL, 0x0FD8ADA93856A4A6ULL }, /* XSUM_XXH64_testdata[2936] */ + { 1468, 0x000000009E3779B1ULL, 0xE246CD70954E2E67ULL }, /* XSUM_XXH64_testdata[2937] */ + { 1469, 0x0000000000000000ULL, 0x09ED73602ECE33F0ULL }, /* XSUM_XXH64_testdata[2938] */ + { 1469, 0x000000009E3779B1ULL, 0x0482AAB6C267ED20ULL }, /* XSUM_XXH64_testdata[2939] */ + { 1470, 0x0000000000000000ULL, 0x44F7890CFD1AF2BEULL }, /* XSUM_XXH64_testdata[2940] */ + { 1470, 0x000000009E3779B1ULL, 0xB20C1E6581F2C18DULL }, /* XSUM_XXH64_testdata[2941] */ + { 1471, 0x0000000000000000ULL, 0x3D3D725CA5A2DA86ULL }, /* XSUM_XXH64_testdata[2942] */ + { 1471, 0x000000009E3779B1ULL, 0x1562DCAD2E6FD432ULL }, /* XSUM_XXH64_testdata[2943] */ + { 1472, 0x0000000000000000ULL, 0xEDDF8EAA95CE1B30ULL }, /* XSUM_XXH64_testdata[2944] */ + { 1472, 0x000000009E3779B1ULL, 0x39B4C49D392F7522ULL }, /* XSUM_XXH64_testdata[2945] */ + { 1473, 0x0000000000000000ULL, 0xE1CFBD74D188ACC2ULL }, /* XSUM_XXH64_testdata[2946] */ + { 1473, 0x000000009E3779B1ULL, 0xCBF75E181751BF3BULL }, /* XSUM_XXH64_testdata[2947] */ + { 1474, 0x0000000000000000ULL, 0xC20EAB96671D3FBAULL }, /* XSUM_XXH64_testdata[2948] */ + { 1474, 0x000000009E3779B1ULL, 0x9099CABD8C20F483ULL }, /* XSUM_XXH64_testdata[2949] */ + { 1475, 0x0000000000000000ULL, 0x7FB5C672D39D8864ULL }, /* XSUM_XXH64_testdata[2950] */ + { 1475, 0x000000009E3779B1ULL, 0x2227B1D484DA4061ULL }, /* XSUM_XXH64_testdata[2951] */ + { 1476, 0x0000000000000000ULL, 0x7433E07CCD9FAA25ULL }, /* XSUM_XXH64_testdata[2952] */ + { 1476, 0x000000009E3779B1ULL, 0x980331CE0A840E3FULL }, /* XSUM_XXH64_testdata[2953] */ + { 1477, 0x0000000000000000ULL, 0x8B91EDB08E1B72A3ULL }, /* XSUM_XXH64_testdata[2954] */ + { 1477, 0x000000009E3779B1ULL, 0x5D0A2226FAFC9E03ULL }, /* XSUM_XXH64_testdata[2955] */ + { 1478, 0x0000000000000000ULL, 0xB3B50DB7128872C6ULL }, /* XSUM_XXH64_testdata[2956] */ + { 1478, 0x000000009E3779B1ULL, 0x061A1F8E4F13FB16ULL }, /* XSUM_XXH64_testdata[2957] */ + { 1479, 0x0000000000000000ULL, 0x70F03B127FD08568ULL }, /* XSUM_XXH64_testdata[2958] */ + { 1479, 0x000000009E3779B1ULL, 0x499DD506010B6EA9ULL }, /* XSUM_XXH64_testdata[2959] */ + { 1480, 0x0000000000000000ULL, 0x4840230663D42556ULL }, /* XSUM_XXH64_testdata[2960] */ + { 1480, 0x000000009E3779B1ULL, 0x466F19B2D39C2627ULL }, /* XSUM_XXH64_testdata[2961] */ + { 1481, 0x0000000000000000ULL, 0x60617B08B4FF6838ULL }, /* XSUM_XXH64_testdata[2962] */ + { 1481, 0x000000009E3779B1ULL, 0x7922EF1E30FFABABULL }, /* XSUM_XXH64_testdata[2963] */ + { 1482, 0x0000000000000000ULL, 0xE9D77667FA81C7E5ULL }, /* XSUM_XXH64_testdata[2964] */ + { 1482, 0x000000009E3779B1ULL, 0xFAF7EE8CA5BEAF83ULL }, /* XSUM_XXH64_testdata[2965] */ + { 1483, 0x0000000000000000ULL, 0xF33B1A5501ADF046ULL }, /* XSUM_XXH64_testdata[2966] */ + { 1483, 0x000000009E3779B1ULL, 0xB3C0C8D4B5DAF9CAULL }, /* XSUM_XXH64_testdata[2967] */ + { 1484, 0x0000000000000000ULL, 0x5418DB822BB143E5ULL }, /* XSUM_XXH64_testdata[2968] */ + { 1484, 0x000000009E3779B1ULL, 0x1091DA12D1F48071ULL }, /* XSUM_XXH64_testdata[2969] */ + { 1485, 0x0000000000000000ULL, 0x3A11E24EC8CB7555ULL }, /* XSUM_XXH64_testdata[2970] */ + { 1485, 0x000000009E3779B1ULL, 0x39D3027FDE2D55A6ULL }, /* XSUM_XXH64_testdata[2971] */ + { 1486, 0x0000000000000000ULL, 0x6E51DA2B6722709EULL }, /* XSUM_XXH64_testdata[2972] */ + { 1486, 0x000000009E3779B1ULL, 0x863BED60E6ED9AD0ULL }, /* XSUM_XXH64_testdata[2973] */ + { 1487, 0x0000000000000000ULL, 0x4D9DFD5C2924D020ULL }, /* XSUM_XXH64_testdata[2974] */ + { 1487, 0x000000009E3779B1ULL, 0x29BB8A2629150931ULL }, /* XSUM_XXH64_testdata[2975] */ + { 1488, 0x0000000000000000ULL, 0xAA5704F96972733BULL }, /* XSUM_XXH64_testdata[2976] */ + { 1488, 0x000000009E3779B1ULL, 0x337B4425C4848725ULL }, /* XSUM_XXH64_testdata[2977] */ + { 1489, 0x0000000000000000ULL, 0x8AF06779F20C39DEULL }, /* XSUM_XXH64_testdata[2978] */ + { 1489, 0x000000009E3779B1ULL, 0xDE53377A6AD53842ULL }, /* XSUM_XXH64_testdata[2979] */ + { 1490, 0x0000000000000000ULL, 0xF1288F7B9DF99262ULL }, /* XSUM_XXH64_testdata[2980] */ + { 1490, 0x000000009E3779B1ULL, 0x3C915FE67DD9348BULL }, /* XSUM_XXH64_testdata[2981] */ + { 1491, 0x0000000000000000ULL, 0x5BDCF7CD9ECF3DCEULL }, /* XSUM_XXH64_testdata[2982] */ + { 1491, 0x000000009E3779B1ULL, 0x7F29B947A05EA0DAULL }, /* XSUM_XXH64_testdata[2983] */ + { 1492, 0x0000000000000000ULL, 0xCB901C6DA9D69A57ULL }, /* XSUM_XXH64_testdata[2984] */ + { 1492, 0x000000009E3779B1ULL, 0x8B83F2BC74BEAFA6ULL }, /* XSUM_XXH64_testdata[2985] */ + { 1493, 0x0000000000000000ULL, 0x23FB34D375386B32ULL }, /* XSUM_XXH64_testdata[2986] */ + { 1493, 0x000000009E3779B1ULL, 0xFCFF53156B0A9FAEULL }, /* XSUM_XXH64_testdata[2987] */ + { 1494, 0x0000000000000000ULL, 0x47583913FCEB818DULL }, /* XSUM_XXH64_testdata[2988] */ + { 1494, 0x000000009E3779B1ULL, 0xA59F8BB05241C034ULL }, /* XSUM_XXH64_testdata[2989] */ + { 1495, 0x0000000000000000ULL, 0x3E827FBDE37ACFCEULL }, /* XSUM_XXH64_testdata[2990] */ + { 1495, 0x000000009E3779B1ULL, 0x591486946B610E70ULL }, /* XSUM_XXH64_testdata[2991] */ + { 1496, 0x0000000000000000ULL, 0x9F48EF32A6B79352ULL }, /* XSUM_XXH64_testdata[2992] */ + { 1496, 0x000000009E3779B1ULL, 0xEAC2A17B2E1FA603ULL }, /* XSUM_XXH64_testdata[2993] */ + { 1497, 0x0000000000000000ULL, 0x12C974795020ACD6ULL }, /* XSUM_XXH64_testdata[2994] */ + { 1497, 0x000000009E3779B1ULL, 0xB6B3EE57D83EB29BULL }, /* XSUM_XXH64_testdata[2995] */ + { 1498, 0x0000000000000000ULL, 0x022E0F7E3F965FC9ULL }, /* XSUM_XXH64_testdata[2996] */ + { 1498, 0x000000009E3779B1ULL, 0x8CF81EA9ACE4AB66ULL }, /* XSUM_XXH64_testdata[2997] */ + { 1499, 0x0000000000000000ULL, 0xE4626BF4E5922AF6ULL }, /* XSUM_XXH64_testdata[2998] */ + { 1499, 0x000000009E3779B1ULL, 0x28928FAAA1160219ULL }, /* XSUM_XXH64_testdata[2999] */ + { 1500, 0x0000000000000000ULL, 0x49560C97A8F0B46DULL }, /* XSUM_XXH64_testdata[3000] */ + { 1500, 0x000000009E3779B1ULL, 0xBE35D3678E4AEDF0ULL }, /* XSUM_XXH64_testdata[3001] */ + { 1501, 0x0000000000000000ULL, 0xF8F70D98A391B902ULL }, /* XSUM_XXH64_testdata[3002] */ + { 1501, 0x000000009E3779B1ULL, 0x35D59E740161C82EULL }, /* XSUM_XXH64_testdata[3003] */ + { 1502, 0x0000000000000000ULL, 0xDCC846D54234A2A9ULL }, /* XSUM_XXH64_testdata[3004] */ + { 1502, 0x000000009E3779B1ULL, 0x57001FF0F0ED9F15ULL }, /* XSUM_XXH64_testdata[3005] */ + { 1503, 0x0000000000000000ULL, 0x1945AF0AB4941D24ULL }, /* XSUM_XXH64_testdata[3006] */ + { 1503, 0x000000009E3779B1ULL, 0xC297BE0E382A662AULL }, /* XSUM_XXH64_testdata[3007] */ + { 1504, 0x0000000000000000ULL, 0x140DAF514AAD15B2ULL }, /* XSUM_XXH64_testdata[3008] */ + { 1504, 0x000000009E3779B1ULL, 0x9EF4891CA7E01BD0ULL }, /* XSUM_XXH64_testdata[3009] */ + { 1505, 0x0000000000000000ULL, 0x9561D082D9630409ULL }, /* XSUM_XXH64_testdata[3010] */ + { 1505, 0x000000009E3779B1ULL, 0x5D00D4D29A7BF531ULL }, /* XSUM_XXH64_testdata[3011] */ + { 1506, 0x0000000000000000ULL, 0x5190DC70ACD67724ULL }, /* XSUM_XXH64_testdata[3012] */ + { 1506, 0x000000009E3779B1ULL, 0xA96FDC925CE8F8FCULL }, /* XSUM_XXH64_testdata[3013] */ + { 1507, 0x0000000000000000ULL, 0x8E2BF8EACF31556AULL }, /* XSUM_XXH64_testdata[3014] */ + { 1507, 0x000000009E3779B1ULL, 0x03C9362F5DAB21E9ULL }, /* XSUM_XXH64_testdata[3015] */ + { 1508, 0x0000000000000000ULL, 0x217DB2B9AFAAD59BULL }, /* XSUM_XXH64_testdata[3016] */ + { 1508, 0x000000009E3779B1ULL, 0xCF853125C93523BFULL }, /* XSUM_XXH64_testdata[3017] */ + { 1509, 0x0000000000000000ULL, 0xF77FE60B27C52651ULL }, /* XSUM_XXH64_testdata[3018] */ + { 1509, 0x000000009E3779B1ULL, 0xC614821DCC4F07CCULL }, /* XSUM_XXH64_testdata[3019] */ + { 1510, 0x0000000000000000ULL, 0xEFE0D0198C565516ULL }, /* XSUM_XXH64_testdata[3020] */ + { 1510, 0x000000009E3779B1ULL, 0xA0887694F684205FULL }, /* XSUM_XXH64_testdata[3021] */ + { 1511, 0x0000000000000000ULL, 0x9E614D0CA40E1302ULL }, /* XSUM_XXH64_testdata[3022] */ + { 1511, 0x000000009E3779B1ULL, 0x52ED8B09FC3CF69CULL }, /* XSUM_XXH64_testdata[3023] */ + { 1512, 0x0000000000000000ULL, 0x19A560C966281136ULL }, /* XSUM_XXH64_testdata[3024] */ + { 1512, 0x000000009E3779B1ULL, 0xDE06A3D32E757E63ULL }, /* XSUM_XXH64_testdata[3025] */ + { 1513, 0x0000000000000000ULL, 0x5C7D84A24F21BD7AULL }, /* XSUM_XXH64_testdata[3026] */ + { 1513, 0x000000009E3779B1ULL, 0x68C92B8E68FE37C1ULL }, /* XSUM_XXH64_testdata[3027] */ + { 1514, 0x0000000000000000ULL, 0x549A43A8DF101AB2ULL }, /* XSUM_XXH64_testdata[3028] */ + { 1514, 0x000000009E3779B1ULL, 0x84570A879E8BDE41ULL }, /* XSUM_XXH64_testdata[3029] */ + { 1515, 0x0000000000000000ULL, 0x261A16A715DD3A2CULL }, /* XSUM_XXH64_testdata[3030] */ + { 1515, 0x000000009E3779B1ULL, 0xDB81470AAB634064ULL }, /* XSUM_XXH64_testdata[3031] */ + { 1516, 0x0000000000000000ULL, 0x99205CC8604F4359ULL }, /* XSUM_XXH64_testdata[3032] */ + { 1516, 0x000000009E3779B1ULL, 0xEFFFF995FE389291ULL }, /* XSUM_XXH64_testdata[3033] */ + { 1517, 0x0000000000000000ULL, 0xB80FD45BD6EFAA4FULL }, /* XSUM_XXH64_testdata[3034] */ + { 1517, 0x000000009E3779B1ULL, 0x487E7F148DCDAA5CULL }, /* XSUM_XXH64_testdata[3035] */ + { 1518, 0x0000000000000000ULL, 0x7D89BBEE9BBEF1C2ULL }, /* XSUM_XXH64_testdata[3036] */ + { 1518, 0x000000009E3779B1ULL, 0xD829A4AFE2E74E6AULL }, /* XSUM_XXH64_testdata[3037] */ + { 1519, 0x0000000000000000ULL, 0x25D1A26DBB0DC766ULL }, /* XSUM_XXH64_testdata[3038] */ + { 1519, 0x000000009E3779B1ULL, 0x51564685DEC4644DULL }, /* XSUM_XXH64_testdata[3039] */ + { 1520, 0x0000000000000000ULL, 0x0410748EEB5D5C22ULL }, /* XSUM_XXH64_testdata[3040] */ + { 1520, 0x000000009E3779B1ULL, 0x75CE75D294B3D04EULL }, /* XSUM_XXH64_testdata[3041] */ + { 1521, 0x0000000000000000ULL, 0xA8DFCD137707184EULL }, /* XSUM_XXH64_testdata[3042] */ + { 1521, 0x000000009E3779B1ULL, 0x6C0F885BFE39671EULL }, /* XSUM_XXH64_testdata[3043] */ + { 1522, 0x0000000000000000ULL, 0xDDC03FE01448EF49ULL }, /* XSUM_XXH64_testdata[3044] */ + { 1522, 0x000000009E3779B1ULL, 0xF3DE000FD7CCA6C8ULL }, /* XSUM_XXH64_testdata[3045] */ + { 1523, 0x0000000000000000ULL, 0xB4DF1A01C919AC8EULL }, /* XSUM_XXH64_testdata[3046] */ + { 1523, 0x000000009E3779B1ULL, 0x3AA57E8D2536BE21ULL }, /* XSUM_XXH64_testdata[3047] */ + { 1524, 0x0000000000000000ULL, 0xCD95EC15CB6D6E8DULL }, /* XSUM_XXH64_testdata[3048] */ + { 1524, 0x000000009E3779B1ULL, 0xE017E1103B241C15ULL }, /* XSUM_XXH64_testdata[3049] */ + { 1525, 0x0000000000000000ULL, 0xD2ECF6A326B27053ULL }, /* XSUM_XXH64_testdata[3050] */ + { 1525, 0x000000009E3779B1ULL, 0xE92ED4414E528E5AULL }, /* XSUM_XXH64_testdata[3051] */ + { 1526, 0x0000000000000000ULL, 0xD3FDC6B4B5A4EF92ULL }, /* XSUM_XXH64_testdata[3052] */ + { 1526, 0x000000009E3779B1ULL, 0x67E70AF6B2EFDE98ULL }, /* XSUM_XXH64_testdata[3053] */ + { 1527, 0x0000000000000000ULL, 0xE33B29BC261879F4ULL }, /* XSUM_XXH64_testdata[3054] */ + { 1527, 0x000000009E3779B1ULL, 0xC83AF2EE8BD9C666ULL }, /* XSUM_XXH64_testdata[3055] */ + { 1528, 0x0000000000000000ULL, 0xB1F1AB2114E0467EULL }, /* XSUM_XXH64_testdata[3056] */ + { 1528, 0x000000009E3779B1ULL, 0x5A0E27DD8B0DEB6BULL }, /* XSUM_XXH64_testdata[3057] */ + { 1529, 0x0000000000000000ULL, 0xE5B01782BD8D2103ULL }, /* XSUM_XXH64_testdata[3058] */ + { 1529, 0x000000009E3779B1ULL, 0x42ECC0C12EC1C396ULL }, /* XSUM_XXH64_testdata[3059] */ + { 1530, 0x0000000000000000ULL, 0x646670CF7FB6B60AULL }, /* XSUM_XXH64_testdata[3060] */ + { 1530, 0x000000009E3779B1ULL, 0x211B9A0BD0481ECAULL }, /* XSUM_XXH64_testdata[3061] */ + { 1531, 0x0000000000000000ULL, 0xD3930BB3B9FAC74AULL }, /* XSUM_XXH64_testdata[3062] */ + { 1531, 0x000000009E3779B1ULL, 0x08267ED1D7853CB2ULL }, /* XSUM_XXH64_testdata[3063] */ + { 1532, 0x0000000000000000ULL, 0x2069C958E2831898ULL }, /* XSUM_XXH64_testdata[3064] */ + { 1532, 0x000000009E3779B1ULL, 0xB5B8F1289B0974D0ULL }, /* XSUM_XXH64_testdata[3065] */ + { 1533, 0x0000000000000000ULL, 0xF6B03D02363C8B8DULL }, /* XSUM_XXH64_testdata[3066] */ + { 1533, 0x000000009E3779B1ULL, 0x95B05185B655D15BULL }, /* XSUM_XXH64_testdata[3067] */ + { 1534, 0x0000000000000000ULL, 0x54BA2E9539684FEBULL }, /* XSUM_XXH64_testdata[3068] */ + { 1534, 0x000000009E3779B1ULL, 0xFE4A363F9830E8F7ULL }, /* XSUM_XXH64_testdata[3069] */ + { 1535, 0x0000000000000000ULL, 0xB0A26C84A6D11794ULL }, /* XSUM_XXH64_testdata[3070] */ + { 1535, 0x000000009E3779B1ULL, 0xCEC2818C895599C7ULL }, /* XSUM_XXH64_testdata[3071] */ + { 1536, 0x0000000000000000ULL, 0x93BF99716366979FULL }, /* XSUM_XXH64_testdata[3072] */ + { 1536, 0x000000009E3779B1ULL, 0x7E445D56CB1C8732ULL }, /* XSUM_XXH64_testdata[3073] */ + { 1537, 0x0000000000000000ULL, 0x9FC5D763D81BD858ULL }, /* XSUM_XXH64_testdata[3074] */ + { 1537, 0x000000009E3779B1ULL, 0x52068B9CCF4C0277ULL }, /* XSUM_XXH64_testdata[3075] */ + { 1538, 0x0000000000000000ULL, 0x286A6D3BCE9EB9E5ULL }, /* XSUM_XXH64_testdata[3076] */ + { 1538, 0x000000009E3779B1ULL, 0xC04C9A4F363F6E29ULL }, /* XSUM_XXH64_testdata[3077] */ + { 1539, 0x0000000000000000ULL, 0x9610AFA59919D4BAULL }, /* XSUM_XXH64_testdata[3078] */ + { 1539, 0x000000009E3779B1ULL, 0x4F4929DF19379AAFULL }, /* XSUM_XXH64_testdata[3079] */ + { 1540, 0x0000000000000000ULL, 0xEEEC97C382795547ULL }, /* XSUM_XXH64_testdata[3080] */ + { 1540, 0x000000009E3779B1ULL, 0x2EAA8EC92FF8606DULL }, /* XSUM_XXH64_testdata[3081] */ + { 1541, 0x0000000000000000ULL, 0xC377BAA07CE1DD52ULL }, /* XSUM_XXH64_testdata[3082] */ + { 1541, 0x000000009E3779B1ULL, 0xEB796C83C9161003ULL }, /* XSUM_XXH64_testdata[3083] */ + { 1542, 0x0000000000000000ULL, 0x6189163679466377ULL }, /* XSUM_XXH64_testdata[3084] */ + { 1542, 0x000000009E3779B1ULL, 0xC795510F3036FF96ULL }, /* XSUM_XXH64_testdata[3085] */ + { 1543, 0x0000000000000000ULL, 0x8C0B48F97001490AULL }, /* XSUM_XXH64_testdata[3086] */ + { 1543, 0x000000009E3779B1ULL, 0x6C55158C1900B04BULL }, /* XSUM_XXH64_testdata[3087] */ + { 1544, 0x0000000000000000ULL, 0x10848522BA467A66ULL }, /* XSUM_XXH64_testdata[3088] */ + { 1544, 0x000000009E3779B1ULL, 0xAEBF7D36EEFC2568ULL }, /* XSUM_XXH64_testdata[3089] */ + { 1545, 0x0000000000000000ULL, 0xC36279AFB7971084ULL }, /* XSUM_XXH64_testdata[3090] */ + { 1545, 0x000000009E3779B1ULL, 0xBB09452E4DBC5D4FULL }, /* XSUM_XXH64_testdata[3091] */ + { 1546, 0x0000000000000000ULL, 0xF45A7E196D676EACULL }, /* XSUM_XXH64_testdata[3092] */ + { 1546, 0x000000009E3779B1ULL, 0xA58E3E21633C2833ULL }, /* XSUM_XXH64_testdata[3093] */ + { 1547, 0x0000000000000000ULL, 0x005C53B4E2B5F377ULL }, /* XSUM_XXH64_testdata[3094] */ + { 1547, 0x000000009E3779B1ULL, 0x943C7C8DDB84A1D2ULL }, /* XSUM_XXH64_testdata[3095] */ + { 1548, 0x0000000000000000ULL, 0x7D01D4EE629526A4ULL }, /* XSUM_XXH64_testdata[3096] */ + { 1548, 0x000000009E3779B1ULL, 0x11FC97DD54BFFF8FULL }, /* XSUM_XXH64_testdata[3097] */ + { 1549, 0x0000000000000000ULL, 0x0E4043E8E33564C7ULL }, /* XSUM_XXH64_testdata[3098] */ + { 1549, 0x000000009E3779B1ULL, 0x2C995886C7EA17E7ULL }, /* XSUM_XXH64_testdata[3099] */ + { 1550, 0x0000000000000000ULL, 0xF8021D46BA65DF46ULL }, /* XSUM_XXH64_testdata[3100] */ + { 1550, 0x000000009E3779B1ULL, 0x91E0272C80001330ULL }, /* XSUM_XXH64_testdata[3101] */ + { 1551, 0x0000000000000000ULL, 0xA1E2458DA689D9E0ULL }, /* XSUM_XXH64_testdata[3102] */ + { 1551, 0x000000009E3779B1ULL, 0xA6B710E397E83EE2ULL }, /* XSUM_XXH64_testdata[3103] */ + { 1552, 0x0000000000000000ULL, 0xC2B34609E3A5DC14ULL }, /* XSUM_XXH64_testdata[3104] */ + { 1552, 0x000000009E3779B1ULL, 0xF320C3DE0B1EAB67ULL }, /* XSUM_XXH64_testdata[3105] */ + { 1553, 0x0000000000000000ULL, 0xB43D8867AEE8AB7FULL }, /* XSUM_XXH64_testdata[3106] */ + { 1553, 0x000000009E3779B1ULL, 0xA52347876530CFD9ULL }, /* XSUM_XXH64_testdata[3107] */ + { 1554, 0x0000000000000000ULL, 0x16FF1F94505413E3ULL }, /* XSUM_XXH64_testdata[3108] */ + { 1554, 0x000000009E3779B1ULL, 0xB2496CB93C48C094ULL }, /* XSUM_XXH64_testdata[3109] */ + { 1555, 0x0000000000000000ULL, 0x189FCC4C4E4781BAULL }, /* XSUM_XXH64_testdata[3110] */ + { 1555, 0x000000009E3779B1ULL, 0xA7759F8B7D2DCABBULL }, /* XSUM_XXH64_testdata[3111] */ + { 1556, 0x0000000000000000ULL, 0x51C94AF7D2982AD7ULL }, /* XSUM_XXH64_testdata[3112] */ + { 1556, 0x000000009E3779B1ULL, 0xB8BDBF48798BF342ULL }, /* XSUM_XXH64_testdata[3113] */ + { 1557, 0x0000000000000000ULL, 0x8F07C1447350EC53ULL }, /* XSUM_XXH64_testdata[3114] */ + { 1557, 0x000000009E3779B1ULL, 0x07523DED634377B7ULL }, /* XSUM_XXH64_testdata[3115] */ + { 1558, 0x0000000000000000ULL, 0x64A8CDEC92FAD967ULL }, /* XSUM_XXH64_testdata[3116] */ + { 1558, 0x000000009E3779B1ULL, 0x67FE403B54CDDC5FULL }, /* XSUM_XXH64_testdata[3117] */ + { 1559, 0x0000000000000000ULL, 0x8D623B73C2F588A0ULL }, /* XSUM_XXH64_testdata[3118] */ + { 1559, 0x000000009E3779B1ULL, 0x451D946E1A1FB9DFULL }, /* XSUM_XXH64_testdata[3119] */ + { 1560, 0x0000000000000000ULL, 0x60C695F43F54B472ULL }, /* XSUM_XXH64_testdata[3120] */ + { 1560, 0x000000009E3779B1ULL, 0x453847F38F311A8CULL }, /* XSUM_XXH64_testdata[3121] */ + { 1561, 0x0000000000000000ULL, 0xAE980B4DDFD44E42ULL }, /* XSUM_XXH64_testdata[3122] */ + { 1561, 0x000000009E3779B1ULL, 0x1C2992ED0ECD4EF3ULL }, /* XSUM_XXH64_testdata[3123] */ + { 1562, 0x0000000000000000ULL, 0x585C095BEFD8EAC9ULL }, /* XSUM_XXH64_testdata[3124] */ + { 1562, 0x000000009E3779B1ULL, 0x3F9984D7A7167C0DULL }, /* XSUM_XXH64_testdata[3125] */ + { 1563, 0x0000000000000000ULL, 0x743C525FEC711C01ULL }, /* XSUM_XXH64_testdata[3126] */ + { 1563, 0x000000009E3779B1ULL, 0xAB26476612988EFFULL }, /* XSUM_XXH64_testdata[3127] */ + { 1564, 0x0000000000000000ULL, 0x42A4CB3320FF979AULL }, /* XSUM_XXH64_testdata[3128] */ + { 1564, 0x000000009E3779B1ULL, 0x106B29B01FF34ED4ULL }, /* XSUM_XXH64_testdata[3129] */ + { 1565, 0x0000000000000000ULL, 0xB0F830C7FA264EDFULL }, /* XSUM_XXH64_testdata[3130] */ + { 1565, 0x000000009E3779B1ULL, 0x4DAD9D8019E55A12ULL }, /* XSUM_XXH64_testdata[3131] */ + { 1566, 0x0000000000000000ULL, 0xEB1F580DDB952B6CULL }, /* XSUM_XXH64_testdata[3132] */ + { 1566, 0x000000009E3779B1ULL, 0x171CF524B44C545BULL }, /* XSUM_XXH64_testdata[3133] */ + { 1567, 0x0000000000000000ULL, 0xBEA76E6CFBF6D8A4ULL }, /* XSUM_XXH64_testdata[3134] */ + { 1567, 0x000000009E3779B1ULL, 0x55FFA73D711616A4ULL }, /* XSUM_XXH64_testdata[3135] */ + { 1568, 0x0000000000000000ULL, 0x0C56F9DC52C64626ULL }, /* XSUM_XXH64_testdata[3136] */ + { 1568, 0x000000009E3779B1ULL, 0x9ED44FAD3502E08BULL }, /* XSUM_XXH64_testdata[3137] */ + { 1569, 0x0000000000000000ULL, 0x74BB475D124451F2ULL }, /* XSUM_XXH64_testdata[3138] */ + { 1569, 0x000000009E3779B1ULL, 0x6D5697379E50ABDDULL }, /* XSUM_XXH64_testdata[3139] */ + { 1570, 0x0000000000000000ULL, 0x3459CFA4C466B401ULL }, /* XSUM_XXH64_testdata[3140] */ + { 1570, 0x000000009E3779B1ULL, 0x58AF1D4DE8A081E9ULL }, /* XSUM_XXH64_testdata[3141] */ + { 1571, 0x0000000000000000ULL, 0x42EE4433929FB9C6ULL }, /* XSUM_XXH64_testdata[3142] */ + { 1571, 0x000000009E3779B1ULL, 0x6D23E9AC6BD0804EULL }, /* XSUM_XXH64_testdata[3143] */ + { 1572, 0x0000000000000000ULL, 0xBE6AB6819A1B14B9ULL }, /* XSUM_XXH64_testdata[3144] */ + { 1572, 0x000000009E3779B1ULL, 0x27D38A33FDBB2AE5ULL }, /* XSUM_XXH64_testdata[3145] */ + { 1573, 0x0000000000000000ULL, 0xA2D8D1C4B8CEBFAEULL }, /* XSUM_XXH64_testdata[3146] */ + { 1573, 0x000000009E3779B1ULL, 0xF2A66ABD6B0145E9ULL }, /* XSUM_XXH64_testdata[3147] */ + { 1574, 0x0000000000000000ULL, 0xF8EAAA44A6BFD85CULL }, /* XSUM_XXH64_testdata[3148] */ + { 1574, 0x000000009E3779B1ULL, 0xE440BFD46148B50CULL }, /* XSUM_XXH64_testdata[3149] */ + { 1575, 0x0000000000000000ULL, 0xCC43F254AFBF800EULL }, /* XSUM_XXH64_testdata[3150] */ + { 1575, 0x000000009E3779B1ULL, 0x5495F19D53F7D925ULL }, /* XSUM_XXH64_testdata[3151] */ + { 1576, 0x0000000000000000ULL, 0xB8D18F5980CEC6BEULL }, /* XSUM_XXH64_testdata[3152] */ + { 1576, 0x000000009E3779B1ULL, 0x40B27A51F0B3E7DEULL }, /* XSUM_XXH64_testdata[3153] */ + { 1577, 0x0000000000000000ULL, 0x4CD7B81A400F8189ULL }, /* XSUM_XXH64_testdata[3154] */ + { 1577, 0x000000009E3779B1ULL, 0xF50C038651B4F7A0ULL }, /* XSUM_XXH64_testdata[3155] */ + { 1578, 0x0000000000000000ULL, 0xEF03C71CB8F2D000ULL }, /* XSUM_XXH64_testdata[3156] */ + { 1578, 0x000000009E3779B1ULL, 0x8B5FD6C755A68609ULL }, /* XSUM_XXH64_testdata[3157] */ + { 1579, 0x0000000000000000ULL, 0x62B67C941C552C28ULL }, /* XSUM_XXH64_testdata[3158] */ + { 1579, 0x000000009E3779B1ULL, 0x3C0789BB1801D2DEULL }, /* XSUM_XXH64_testdata[3159] */ + { 1580, 0x0000000000000000ULL, 0xF33379DC817BF81BULL }, /* XSUM_XXH64_testdata[3160] */ + { 1580, 0x000000009E3779B1ULL, 0xBD9393A65FCAC2FFULL }, /* XSUM_XXH64_testdata[3161] */ + { 1581, 0x0000000000000000ULL, 0xF9715C825CE09491ULL }, /* XSUM_XXH64_testdata[3162] */ + { 1581, 0x000000009E3779B1ULL, 0xBAAFD2B30168DE05ULL }, /* XSUM_XXH64_testdata[3163] */ + { 1582, 0x0000000000000000ULL, 0x4B314D195D75CC70ULL }, /* XSUM_XXH64_testdata[3164] */ + { 1582, 0x000000009E3779B1ULL, 0x6AE7B8E9F9C615E2ULL }, /* XSUM_XXH64_testdata[3165] */ + { 1583, 0x0000000000000000ULL, 0x46382D7DFAFCA254ULL }, /* XSUM_XXH64_testdata[3166] */ + { 1583, 0x000000009E3779B1ULL, 0xD9FB78478622157CULL }, /* XSUM_XXH64_testdata[3167] */ + { 1584, 0x0000000000000000ULL, 0x193C567AFDCE3DECULL }, /* XSUM_XXH64_testdata[3168] */ + { 1584, 0x000000009E3779B1ULL, 0x4564C95AB688D1B5ULL }, /* XSUM_XXH64_testdata[3169] */ + { 1585, 0x0000000000000000ULL, 0xCC54A68E3551DAB2ULL }, /* XSUM_XXH64_testdata[3170] */ + { 1585, 0x000000009E3779B1ULL, 0x8EB928FC7D44A911ULL }, /* XSUM_XXH64_testdata[3171] */ + { 1586, 0x0000000000000000ULL, 0x090FCEF6F92B0F3FULL }, /* XSUM_XXH64_testdata[3172] */ + { 1586, 0x000000009E3779B1ULL, 0x103F7599B36BD36DULL }, /* XSUM_XXH64_testdata[3173] */ + { 1587, 0x0000000000000000ULL, 0x05796452679CEA0DULL }, /* XSUM_XXH64_testdata[3174] */ + { 1587, 0x000000009E3779B1ULL, 0x7D92BC205561E616ULL }, /* XSUM_XXH64_testdata[3175] */ + { 1588, 0x0000000000000000ULL, 0x02253E746FC15B3FULL }, /* XSUM_XXH64_testdata[3176] */ + { 1588, 0x000000009E3779B1ULL, 0x3A35E5AAEFD3EB40ULL }, /* XSUM_XXH64_testdata[3177] */ + { 1589, 0x0000000000000000ULL, 0x2307DC21C2837496ULL }, /* XSUM_XXH64_testdata[3178] */ + { 1589, 0x000000009E3779B1ULL, 0x695ED2350A995E40ULL }, /* XSUM_XXH64_testdata[3179] */ + { 1590, 0x0000000000000000ULL, 0xFC7711C90DE93C22ULL }, /* XSUM_XXH64_testdata[3180] */ + { 1590, 0x000000009E3779B1ULL, 0x14D1EAD13B3F5219ULL }, /* XSUM_XXH64_testdata[3181] */ + { 1591, 0x0000000000000000ULL, 0x7FD3951CDDBE0BE9ULL }, /* XSUM_XXH64_testdata[3182] */ + { 1591, 0x000000009E3779B1ULL, 0xEA6B0D12249D4D56ULL }, /* XSUM_XXH64_testdata[3183] */ + { 1592, 0x0000000000000000ULL, 0xB9D5C6943B50DFE2ULL }, /* XSUM_XXH64_testdata[3184] */ + { 1592, 0x000000009E3779B1ULL, 0x7842AF14A4F83CFBULL }, /* XSUM_XXH64_testdata[3185] */ + { 1593, 0x0000000000000000ULL, 0xBC180FE1656F115CULL }, /* XSUM_XXH64_testdata[3186] */ + { 1593, 0x000000009E3779B1ULL, 0xF049D5310D20D841ULL }, /* XSUM_XXH64_testdata[3187] */ + { 1594, 0x0000000000000000ULL, 0xEF818D5332AEE3F9ULL }, /* XSUM_XXH64_testdata[3188] */ + { 1594, 0x000000009E3779B1ULL, 0x55F7DFCA9870A7BCULL }, /* XSUM_XXH64_testdata[3189] */ + { 1595, 0x0000000000000000ULL, 0x9A2E28E971D74BAFULL }, /* XSUM_XXH64_testdata[3190] */ + { 1595, 0x000000009E3779B1ULL, 0x1C0143F3594AED4BULL }, /* XSUM_XXH64_testdata[3191] */ + { 1596, 0x0000000000000000ULL, 0x2B35448A45DF6294ULL }, /* XSUM_XXH64_testdata[3192] */ + { 1596, 0x000000009E3779B1ULL, 0x00FAAA174712FF8AULL }, /* XSUM_XXH64_testdata[3193] */ + { 1597, 0x0000000000000000ULL, 0xCBCEEB8DDEF9CCB4ULL }, /* XSUM_XXH64_testdata[3194] */ + { 1597, 0x000000009E3779B1ULL, 0xD79C67A53A94CA38ULL }, /* XSUM_XXH64_testdata[3195] */ + { 1598, 0x0000000000000000ULL, 0xC60F8FB2BE7D4317ULL }, /* XSUM_XXH64_testdata[3196] */ + { 1598, 0x000000009E3779B1ULL, 0x1CF14314FE8BE210ULL }, /* XSUM_XXH64_testdata[3197] */ + { 1599, 0x0000000000000000ULL, 0x37AE9CF7A5E15FA5ULL }, /* XSUM_XXH64_testdata[3198] */ + { 1599, 0x000000009E3779B1ULL, 0x3791ADC4DE86513BULL }, /* XSUM_XXH64_testdata[3199] */ + { 1600, 0x0000000000000000ULL, 0x6C6DD95327AD9AB8ULL }, /* XSUM_XXH64_testdata[3200] */ + { 1600, 0x000000009E3779B1ULL, 0x3E37F89EC2EFB644ULL }, /* XSUM_XXH64_testdata[3201] */ + { 1601, 0x0000000000000000ULL, 0x907803F3AA9FB862ULL }, /* XSUM_XXH64_testdata[3202] */ + { 1601, 0x000000009E3779B1ULL, 0xD6FDB6B002A596C3ULL }, /* XSUM_XXH64_testdata[3203] */ + { 1602, 0x0000000000000000ULL, 0x64537A0034130DA7ULL }, /* XSUM_XXH64_testdata[3204] */ + { 1602, 0x000000009E3779B1ULL, 0x35A80F8EA516EDBAULL }, /* XSUM_XXH64_testdata[3205] */ + { 1603, 0x0000000000000000ULL, 0x0450A0D72CCBAD01ULL }, /* XSUM_XXH64_testdata[3206] */ + { 1603, 0x000000009E3779B1ULL, 0x1A2987931EFF8C26ULL }, /* XSUM_XXH64_testdata[3207] */ + { 1604, 0x0000000000000000ULL, 0xA44A0FED7FD8A11DULL }, /* XSUM_XXH64_testdata[3208] */ + { 1604, 0x000000009E3779B1ULL, 0x178A03C8E664AE08ULL }, /* XSUM_XXH64_testdata[3209] */ + { 1605, 0x0000000000000000ULL, 0x21536C43FA9ABAECULL }, /* XSUM_XXH64_testdata[3210] */ + { 1605, 0x000000009E3779B1ULL, 0xDC9B93185FFCF61FULL }, /* XSUM_XXH64_testdata[3211] */ + { 1606, 0x0000000000000000ULL, 0x200300F3BDECE679ULL }, /* XSUM_XXH64_testdata[3212] */ + { 1606, 0x000000009E3779B1ULL, 0x8A977089E14004DCULL }, /* XSUM_XXH64_testdata[3213] */ + { 1607, 0x0000000000000000ULL, 0xEF11D3D95E4E9294ULL }, /* XSUM_XXH64_testdata[3214] */ + { 1607, 0x000000009E3779B1ULL, 0xFDD068F60B2BC87EULL }, /* XSUM_XXH64_testdata[3215] */ + { 1608, 0x0000000000000000ULL, 0xFB6D69DD48D705A6ULL }, /* XSUM_XXH64_testdata[3216] */ + { 1608, 0x000000009E3779B1ULL, 0x5388ACBE24785350ULL }, /* XSUM_XXH64_testdata[3217] */ + { 1609, 0x0000000000000000ULL, 0x1E8A12632A3E3559ULL }, /* XSUM_XXH64_testdata[3218] */ + { 1609, 0x000000009E3779B1ULL, 0x5B4560D30A34F10CULL }, /* XSUM_XXH64_testdata[3219] */ + { 1610, 0x0000000000000000ULL, 0x9F86E451D3613F2DULL }, /* XSUM_XXH64_testdata[3220] */ + { 1610, 0x000000009E3779B1ULL, 0x96E9B33D44BF5D32ULL }, /* XSUM_XXH64_testdata[3221] */ + { 1611, 0x0000000000000000ULL, 0x7061A3E327AAB9A0ULL }, /* XSUM_XXH64_testdata[3222] */ + { 1611, 0x000000009E3779B1ULL, 0x2BB881112C9614F5ULL }, /* XSUM_XXH64_testdata[3223] */ + { 1612, 0x0000000000000000ULL, 0xAB8BA282F8F8AC43ULL }, /* XSUM_XXH64_testdata[3224] */ + { 1612, 0x000000009E3779B1ULL, 0x5264565685763403ULL }, /* XSUM_XXH64_testdata[3225] */ + { 1613, 0x0000000000000000ULL, 0x99C51EC586C4E8DFULL }, /* XSUM_XXH64_testdata[3226] */ + { 1613, 0x000000009E3779B1ULL, 0x3C2F8F920CB53EDCULL }, /* XSUM_XXH64_testdata[3227] */ + { 1614, 0x0000000000000000ULL, 0x49B3A0D6F1B619FAULL }, /* XSUM_XXH64_testdata[3228] */ + { 1614, 0x000000009E3779B1ULL, 0xC17BE04BBEEA1E89ULL }, /* XSUM_XXH64_testdata[3229] */ + { 1615, 0x0000000000000000ULL, 0x54EE93FDA11B6508ULL }, /* XSUM_XXH64_testdata[3230] */ + { 1615, 0x000000009E3779B1ULL, 0x2850CF718384D587ULL }, /* XSUM_XXH64_testdata[3231] */ + { 1616, 0x0000000000000000ULL, 0xC0A298ABFCAF2D99ULL }, /* XSUM_XXH64_testdata[3232] */ + { 1616, 0x000000009E3779B1ULL, 0x8912F04097F3062BULL }, /* XSUM_XXH64_testdata[3233] */ + { 1617, 0x0000000000000000ULL, 0x9565A5026C4A889DULL }, /* XSUM_XXH64_testdata[3234] */ + { 1617, 0x000000009E3779B1ULL, 0xBB1B629837C85C8EULL }, /* XSUM_XXH64_testdata[3235] */ + { 1618, 0x0000000000000000ULL, 0xB09CA9A19B1CB2A7ULL }, /* XSUM_XXH64_testdata[3236] */ + { 1618, 0x000000009E3779B1ULL, 0x0F65114B5A7292B0ULL }, /* XSUM_XXH64_testdata[3237] */ + { 1619, 0x0000000000000000ULL, 0xC16ABB4F5D05D510ULL }, /* XSUM_XXH64_testdata[3238] */ + { 1619, 0x000000009E3779B1ULL, 0x02D429A89937808DULL }, /* XSUM_XXH64_testdata[3239] */ + { 1620, 0x0000000000000000ULL, 0x3BB888CA930151C2ULL }, /* XSUM_XXH64_testdata[3240] */ + { 1620, 0x000000009E3779B1ULL, 0x3776AE69D3929F2EULL }, /* XSUM_XXH64_testdata[3241] */ + { 1621, 0x0000000000000000ULL, 0x6B161AF813DE14E0ULL }, /* XSUM_XXH64_testdata[3242] */ + { 1621, 0x000000009E3779B1ULL, 0xE4E901EB765CC055ULL }, /* XSUM_XXH64_testdata[3243] */ + { 1622, 0x0000000000000000ULL, 0x229C1A5F35070B6AULL }, /* XSUM_XXH64_testdata[3244] */ + { 1622, 0x000000009E3779B1ULL, 0x3BC4DD9FAD5D4E0EULL }, /* XSUM_XXH64_testdata[3245] */ + { 1623, 0x0000000000000000ULL, 0x94E1A54B5F09482DULL }, /* XSUM_XXH64_testdata[3246] */ + { 1623, 0x000000009E3779B1ULL, 0x8B8361A4293F42E3ULL }, /* XSUM_XXH64_testdata[3247] */ + { 1624, 0x0000000000000000ULL, 0xB79965DAA3E11D8FULL }, /* XSUM_XXH64_testdata[3248] */ + { 1624, 0x000000009E3779B1ULL, 0x39D9421CAB673FE0ULL }, /* XSUM_XXH64_testdata[3249] */ + { 1625, 0x0000000000000000ULL, 0x636C06CDA0161CB0ULL }, /* XSUM_XXH64_testdata[3250] */ + { 1625, 0x000000009E3779B1ULL, 0x771061B116642DDEULL }, /* XSUM_XXH64_testdata[3251] */ + { 1626, 0x0000000000000000ULL, 0xDA3F8A4D83AF7E97ULL }, /* XSUM_XXH64_testdata[3252] */ + { 1626, 0x000000009E3779B1ULL, 0x638E932AE98CCCA8ULL }, /* XSUM_XXH64_testdata[3253] */ + { 1627, 0x0000000000000000ULL, 0xB1C532D9C70C068BULL }, /* XSUM_XXH64_testdata[3254] */ + { 1627, 0x000000009E3779B1ULL, 0x048D897FC8BDE7BAULL }, /* XSUM_XXH64_testdata[3255] */ + { 1628, 0x0000000000000000ULL, 0x6ACCADAB0F8EF249ULL }, /* XSUM_XXH64_testdata[3256] */ + { 1628, 0x000000009E3779B1ULL, 0x3D5FD981B4CC16D3ULL }, /* XSUM_XXH64_testdata[3257] */ + { 1629, 0x0000000000000000ULL, 0x207F623CE92C4BD3ULL }, /* XSUM_XXH64_testdata[3258] */ + { 1629, 0x000000009E3779B1ULL, 0x34179AE45B7510AEULL }, /* XSUM_XXH64_testdata[3259] */ + { 1630, 0x0000000000000000ULL, 0xE96B777D4D364C96ULL }, /* XSUM_XXH64_testdata[3260] */ + { 1630, 0x000000009E3779B1ULL, 0x18ED908117AE1D73ULL }, /* XSUM_XXH64_testdata[3261] */ + { 1631, 0x0000000000000000ULL, 0x204424CE5002EAA5ULL }, /* XSUM_XXH64_testdata[3262] */ + { 1631, 0x000000009E3779B1ULL, 0xAC3539D300323399ULL }, /* XSUM_XXH64_testdata[3263] */ + { 1632, 0x0000000000000000ULL, 0xCE58A2CBA4494E66ULL }, /* XSUM_XXH64_testdata[3264] */ + { 1632, 0x000000009E3779B1ULL, 0xD722A1D00AC10A2FULL }, /* XSUM_XXH64_testdata[3265] */ + { 1633, 0x0000000000000000ULL, 0x49053FC53A197E2BULL }, /* XSUM_XXH64_testdata[3266] */ + { 1633, 0x000000009E3779B1ULL, 0x520A424E8E369406ULL }, /* XSUM_XXH64_testdata[3267] */ + { 1634, 0x0000000000000000ULL, 0x4F80E0D668BED51DULL }, /* XSUM_XXH64_testdata[3268] */ + { 1634, 0x000000009E3779B1ULL, 0x35F901BE3880E537ULL }, /* XSUM_XXH64_testdata[3269] */ + { 1635, 0x0000000000000000ULL, 0xC581E64E62BE5EB7ULL }, /* XSUM_XXH64_testdata[3270] */ + { 1635, 0x000000009E3779B1ULL, 0xAEBB7AD8588E0E56ULL }, /* XSUM_XXH64_testdata[3271] */ + { 1636, 0x0000000000000000ULL, 0xB4B8AAD2EBCAF803ULL }, /* XSUM_XXH64_testdata[3272] */ + { 1636, 0x000000009E3779B1ULL, 0xBD8DA8D6D5BBFF9FULL }, /* XSUM_XXH64_testdata[3273] */ + { 1637, 0x0000000000000000ULL, 0xF55828797D67A8ADULL }, /* XSUM_XXH64_testdata[3274] */ + { 1637, 0x000000009E3779B1ULL, 0x3DD0DC30CBE981BCULL }, /* XSUM_XXH64_testdata[3275] */ + { 1638, 0x0000000000000000ULL, 0x6DD7D9CBFC80A384ULL }, /* XSUM_XXH64_testdata[3276] */ + { 1638, 0x000000009E3779B1ULL, 0x93006E8C54C2CC8EULL }, /* XSUM_XXH64_testdata[3277] */ + { 1639, 0x0000000000000000ULL, 0x5BF801F38EA6C087ULL }, /* XSUM_XXH64_testdata[3278] */ + { 1639, 0x000000009E3779B1ULL, 0x5174BCB31752426AULL }, /* XSUM_XXH64_testdata[3279] */ + { 1640, 0x0000000000000000ULL, 0x0F233B0C0B128CA8ULL }, /* XSUM_XXH64_testdata[3280] */ + { 1640, 0x000000009E3779B1ULL, 0x7B14BAC52D3DD748ULL }, /* XSUM_XXH64_testdata[3281] */ + { 1641, 0x0000000000000000ULL, 0xD70D9B2CF3BD8665ULL }, /* XSUM_XXH64_testdata[3282] */ + { 1641, 0x000000009E3779B1ULL, 0xB443706BB2658309ULL }, /* XSUM_XXH64_testdata[3283] */ + { 1642, 0x0000000000000000ULL, 0x9FF8A37309F256E7ULL }, /* XSUM_XXH64_testdata[3284] */ + { 1642, 0x000000009E3779B1ULL, 0xD36A1438415D306EULL }, /* XSUM_XXH64_testdata[3285] */ + { 1643, 0x0000000000000000ULL, 0x9E120470D0779E8CULL }, /* XSUM_XXH64_testdata[3286] */ + { 1643, 0x000000009E3779B1ULL, 0x9AF8535DCACEC23FULL }, /* XSUM_XXH64_testdata[3287] */ + { 1644, 0x0000000000000000ULL, 0x2E8F3258593AF633ULL }, /* XSUM_XXH64_testdata[3288] */ + { 1644, 0x000000009E3779B1ULL, 0xC17FDCC70B62469FULL }, /* XSUM_XXH64_testdata[3289] */ + { 1645, 0x0000000000000000ULL, 0xE00ED1D3307E2D7BULL }, /* XSUM_XXH64_testdata[3290] */ + { 1645, 0x000000009E3779B1ULL, 0x95871F1F52636B14ULL }, /* XSUM_XXH64_testdata[3291] */ + { 1646, 0x0000000000000000ULL, 0x255B902A051238C1ULL }, /* XSUM_XXH64_testdata[3292] */ + { 1646, 0x000000009E3779B1ULL, 0x9F132DAFBE6BC93EULL }, /* XSUM_XXH64_testdata[3293] */ + { 1647, 0x0000000000000000ULL, 0xEF26A09CFB3F1706ULL }, /* XSUM_XXH64_testdata[3294] */ + { 1647, 0x000000009E3779B1ULL, 0x63AF896134E96129ULL }, /* XSUM_XXH64_testdata[3295] */ + { 1648, 0x0000000000000000ULL, 0x41E287447C7ACA72ULL }, /* XSUM_XXH64_testdata[3296] */ + { 1648, 0x000000009E3779B1ULL, 0x1201E1D2C55E4388ULL }, /* XSUM_XXH64_testdata[3297] */ + { 1649, 0x0000000000000000ULL, 0xD004CEDEF08B501CULL }, /* XSUM_XXH64_testdata[3298] */ + { 1649, 0x000000009E3779B1ULL, 0xD26C59D4578D32E2ULL }, /* XSUM_XXH64_testdata[3299] */ + { 1650, 0x0000000000000000ULL, 0x5269130062237423ULL }, /* XSUM_XXH64_testdata[3300] */ + { 1650, 0x000000009E3779B1ULL, 0x7E6C88EDADE17465ULL }, /* XSUM_XXH64_testdata[3301] */ + { 1651, 0x0000000000000000ULL, 0xD295B04F2893D550ULL }, /* XSUM_XXH64_testdata[3302] */ + { 1651, 0x000000009E3779B1ULL, 0x46551AA2C8EC7618ULL }, /* XSUM_XXH64_testdata[3303] */ + { 1652, 0x0000000000000000ULL, 0x00C565D934FBC073ULL }, /* XSUM_XXH64_testdata[3304] */ + { 1652, 0x000000009E3779B1ULL, 0xF335B0CB382444A1ULL }, /* XSUM_XXH64_testdata[3305] */ + { 1653, 0x0000000000000000ULL, 0x8972311D0FB8650BULL }, /* XSUM_XXH64_testdata[3306] */ + { 1653, 0x000000009E3779B1ULL, 0x544FF9079E902640ULL }, /* XSUM_XXH64_testdata[3307] */ + { 1654, 0x0000000000000000ULL, 0xF5586D62BB829B6FULL }, /* XSUM_XXH64_testdata[3308] */ + { 1654, 0x000000009E3779B1ULL, 0x7A3BA876138968C6ULL }, /* XSUM_XXH64_testdata[3309] */ + { 1655, 0x0000000000000000ULL, 0x6E0D7273096BD6EEULL }, /* XSUM_XXH64_testdata[3310] */ + { 1655, 0x000000009E3779B1ULL, 0x35EA8EC77D2F786CULL }, /* XSUM_XXH64_testdata[3311] */ + { 1656, 0x0000000000000000ULL, 0x7733E29A2C88DDA4ULL }, /* XSUM_XXH64_testdata[3312] */ + { 1656, 0x000000009E3779B1ULL, 0x2E4FC9EB0FEACCB9ULL }, /* XSUM_XXH64_testdata[3313] */ + { 1657, 0x0000000000000000ULL, 0xF5F186833A8EEC6FULL }, /* XSUM_XXH64_testdata[3314] */ + { 1657, 0x000000009E3779B1ULL, 0x828D4948F7B6A583ULL }, /* XSUM_XXH64_testdata[3315] */ + { 1658, 0x0000000000000000ULL, 0x68A818B7C263F74AULL }, /* XSUM_XXH64_testdata[3316] */ + { 1658, 0x000000009E3779B1ULL, 0x4A005BB85D0A79F7ULL }, /* XSUM_XXH64_testdata[3317] */ + { 1659, 0x0000000000000000ULL, 0x018B356CA3C9A9F1ULL }, /* XSUM_XXH64_testdata[3318] */ + { 1659, 0x000000009E3779B1ULL, 0x388F3CA3346F2B33ULL }, /* XSUM_XXH64_testdata[3319] */ + { 1660, 0x0000000000000000ULL, 0xEB801C9F3FBA55D1ULL }, /* XSUM_XXH64_testdata[3320] */ + { 1660, 0x000000009E3779B1ULL, 0x1B596F329DF90548ULL }, /* XSUM_XXH64_testdata[3321] */ + { 1661, 0x0000000000000000ULL, 0x1D2D873ADE00A4A1ULL }, /* XSUM_XXH64_testdata[3322] */ + { 1661, 0x000000009E3779B1ULL, 0x973B0041FA5B0DF4ULL }, /* XSUM_XXH64_testdata[3323] */ + { 1662, 0x0000000000000000ULL, 0x3FA2D1ADA4259173ULL }, /* XSUM_XXH64_testdata[3324] */ + { 1662, 0x000000009E3779B1ULL, 0xC4EFA6F2BA28926AULL }, /* XSUM_XXH64_testdata[3325] */ + { 1663, 0x0000000000000000ULL, 0x60BE83EC5E5F9868ULL }, /* XSUM_XXH64_testdata[3326] */ + { 1663, 0x000000009E3779B1ULL, 0x2EFF0EB2F239950EULL }, /* XSUM_XXH64_testdata[3327] */ + { 1664, 0x0000000000000000ULL, 0x5FAA366ACE68C4F9ULL }, /* XSUM_XXH64_testdata[3328] */ + { 1664, 0x000000009E3779B1ULL, 0x4FEE07A316F52D4FULL }, /* XSUM_XXH64_testdata[3329] */ + { 1665, 0x0000000000000000ULL, 0x04CAB9B038E28DB8ULL }, /* XSUM_XXH64_testdata[3330] */ + { 1665, 0x000000009E3779B1ULL, 0xB71811C91CA5D8C9ULL }, /* XSUM_XXH64_testdata[3331] */ + { 1666, 0x0000000000000000ULL, 0xD75FD910B590EF87ULL }, /* XSUM_XXH64_testdata[3332] */ + { 1666, 0x000000009E3779B1ULL, 0xE5FCABDA6312565FULL }, /* XSUM_XXH64_testdata[3333] */ + { 1667, 0x0000000000000000ULL, 0xAD550BC55A9A0F10ULL }, /* XSUM_XXH64_testdata[3334] */ + { 1667, 0x000000009E3779B1ULL, 0xD3D8AD861DEDB7ABULL }, /* XSUM_XXH64_testdata[3335] */ + { 1668, 0x0000000000000000ULL, 0xAC77F130F26CEBBFULL }, /* XSUM_XXH64_testdata[3336] */ + { 1668, 0x000000009E3779B1ULL, 0x7858391A2B46D82EULL }, /* XSUM_XXH64_testdata[3337] */ + { 1669, 0x0000000000000000ULL, 0x2244FA4B806CE1EBULL }, /* XSUM_XXH64_testdata[3338] */ + { 1669, 0x000000009E3779B1ULL, 0x3736AC22C458A0E4ULL }, /* XSUM_XXH64_testdata[3339] */ + { 1670, 0x0000000000000000ULL, 0x8638660334868725ULL }, /* XSUM_XXH64_testdata[3340] */ + { 1670, 0x000000009E3779B1ULL, 0x1C4496255C405FA6ULL }, /* XSUM_XXH64_testdata[3341] */ + { 1671, 0x0000000000000000ULL, 0x604D3DE86B3F1083ULL }, /* XSUM_XXH64_testdata[3342] */ + { 1671, 0x000000009E3779B1ULL, 0xF7A76A7454BD3A80ULL }, /* XSUM_XXH64_testdata[3343] */ + { 1672, 0x0000000000000000ULL, 0xE8287C45CA4FF145ULL }, /* XSUM_XXH64_testdata[3344] */ + { 1672, 0x000000009E3779B1ULL, 0x3BF83A8D746BAEB6ULL }, /* XSUM_XXH64_testdata[3345] */ + { 1673, 0x0000000000000000ULL, 0x54ACE1C76FEF5A27ULL }, /* XSUM_XXH64_testdata[3346] */ + { 1673, 0x000000009E3779B1ULL, 0x1C8B2E909DBEEB02ULL }, /* XSUM_XXH64_testdata[3347] */ + { 1674, 0x0000000000000000ULL, 0x2ECCDD3A05EA6AFCULL }, /* XSUM_XXH64_testdata[3348] */ + { 1674, 0x000000009E3779B1ULL, 0xBCD32AFAA9714D34ULL }, /* XSUM_XXH64_testdata[3349] */ + { 1675, 0x0000000000000000ULL, 0x837A229C386F65A6ULL }, /* XSUM_XXH64_testdata[3350] */ + { 1675, 0x000000009E3779B1ULL, 0xC1A1D814697E54D0ULL }, /* XSUM_XXH64_testdata[3351] */ + { 1676, 0x0000000000000000ULL, 0x5571732C93A2FE8BULL }, /* XSUM_XXH64_testdata[3352] */ + { 1676, 0x000000009E3779B1ULL, 0xCEBAC1E61ADF2DD4ULL }, /* XSUM_XXH64_testdata[3353] */ + { 1677, 0x0000000000000000ULL, 0xB8E3F65B4B00D676ULL }, /* XSUM_XXH64_testdata[3354] */ + { 1677, 0x000000009E3779B1ULL, 0x30482500656C48D8ULL }, /* XSUM_XXH64_testdata[3355] */ + { 1678, 0x0000000000000000ULL, 0xEB5EA8EB33DF1260ULL }, /* XSUM_XXH64_testdata[3356] */ + { 1678, 0x000000009E3779B1ULL, 0x60F5E62863A90828ULL }, /* XSUM_XXH64_testdata[3357] */ + { 1679, 0x0000000000000000ULL, 0x873F74310484F3E2ULL }, /* XSUM_XXH64_testdata[3358] */ + { 1679, 0x000000009E3779B1ULL, 0xB3FE1D83C98D4018ULL }, /* XSUM_XXH64_testdata[3359] */ + { 1680, 0x0000000000000000ULL, 0x0E314B095320C272ULL }, /* XSUM_XXH64_testdata[3360] */ + { 1680, 0x000000009E3779B1ULL, 0xA037C4F60E8E8C53ULL }, /* XSUM_XXH64_testdata[3361] */ + { 1681, 0x0000000000000000ULL, 0x9EB8189409EAFE58ULL }, /* XSUM_XXH64_testdata[3362] */ + { 1681, 0x000000009E3779B1ULL, 0xF1511B15429BC2EDULL }, /* XSUM_XXH64_testdata[3363] */ + { 1682, 0x0000000000000000ULL, 0xCD1A7CBA6D35158EULL }, /* XSUM_XXH64_testdata[3364] */ + { 1682, 0x000000009E3779B1ULL, 0xE0ECD12A13D6F323ULL }, /* XSUM_XXH64_testdata[3365] */ + { 1683, 0x0000000000000000ULL, 0xA1E6031EDAA25021ULL }, /* XSUM_XXH64_testdata[3366] */ + { 1683, 0x000000009E3779B1ULL, 0x16431DA2D43D7E83ULL }, /* XSUM_XXH64_testdata[3367] */ + { 1684, 0x0000000000000000ULL, 0x68B9E7598EEE21CAULL }, /* XSUM_XXH64_testdata[3368] */ + { 1684, 0x000000009E3779B1ULL, 0xADBA4CF078501597ULL }, /* XSUM_XXH64_testdata[3369] */ + { 1685, 0x0000000000000000ULL, 0x07CBF0A892F18C8CULL }, /* XSUM_XXH64_testdata[3370] */ + { 1685, 0x000000009E3779B1ULL, 0x4239A4DC9DE3B36FULL }, /* XSUM_XXH64_testdata[3371] */ + { 1686, 0x0000000000000000ULL, 0x3BBC196D8E9799B1ULL }, /* XSUM_XXH64_testdata[3372] */ + { 1686, 0x000000009E3779B1ULL, 0x767056D4CAD16E3AULL }, /* XSUM_XXH64_testdata[3373] */ + { 1687, 0x0000000000000000ULL, 0x5CBC8DBE3E6EF374ULL }, /* XSUM_XXH64_testdata[3374] */ + { 1687, 0x000000009E3779B1ULL, 0x8EBA46CA3F79A2E6ULL }, /* XSUM_XXH64_testdata[3375] */ + { 1688, 0x0000000000000000ULL, 0x7990C9FB13C5F12FULL }, /* XSUM_XXH64_testdata[3376] */ + { 1688, 0x000000009E3779B1ULL, 0xD8AEE7B73A86B131ULL }, /* XSUM_XXH64_testdata[3377] */ + { 1689, 0x0000000000000000ULL, 0xF22ADB86330554B4ULL }, /* XSUM_XXH64_testdata[3378] */ + { 1689, 0x000000009E3779B1ULL, 0x566E072DD513F8F6ULL }, /* XSUM_XXH64_testdata[3379] */ + { 1690, 0x0000000000000000ULL, 0xE4AC9CCE0113D3EBULL }, /* XSUM_XXH64_testdata[3380] */ + { 1690, 0x000000009E3779B1ULL, 0xDC18EFF19F4BFD31ULL }, /* XSUM_XXH64_testdata[3381] */ + { 1691, 0x0000000000000000ULL, 0x38115722334A3A66ULL }, /* XSUM_XXH64_testdata[3382] */ + { 1691, 0x000000009E3779B1ULL, 0xD4AD1B7F5C71DAC5ULL }, /* XSUM_XXH64_testdata[3383] */ + { 1692, 0x0000000000000000ULL, 0xE3276958E27BD95BULL }, /* XSUM_XXH64_testdata[3384] */ + { 1692, 0x000000009E3779B1ULL, 0xD74995A3CE7105B2ULL }, /* XSUM_XXH64_testdata[3385] */ + { 1693, 0x0000000000000000ULL, 0xC124BF02CD1FE936ULL }, /* XSUM_XXH64_testdata[3386] */ + { 1693, 0x000000009E3779B1ULL, 0x92F385A153692D0EULL }, /* XSUM_XXH64_testdata[3387] */ + { 1694, 0x0000000000000000ULL, 0xB0AF477397845F74ULL }, /* XSUM_XXH64_testdata[3388] */ + { 1694, 0x000000009E3779B1ULL, 0x04A7686B95001DD1ULL }, /* XSUM_XXH64_testdata[3389] */ + { 1695, 0x0000000000000000ULL, 0x7E05C9BE12CCE045ULL }, /* XSUM_XXH64_testdata[3390] */ + { 1695, 0x000000009E3779B1ULL, 0xCD6751AF8425EFD1ULL }, /* XSUM_XXH64_testdata[3391] */ + { 1696, 0x0000000000000000ULL, 0x4D2DB77F05A32425ULL }, /* XSUM_XXH64_testdata[3392] */ + { 1696, 0x000000009E3779B1ULL, 0x7732D72F5C76B1ECULL }, /* XSUM_XXH64_testdata[3393] */ + { 1697, 0x0000000000000000ULL, 0x09B9647CD1788055ULL }, /* XSUM_XXH64_testdata[3394] */ + { 1697, 0x000000009E3779B1ULL, 0xAF6E876FF2859051ULL }, /* XSUM_XXH64_testdata[3395] */ + { 1698, 0x0000000000000000ULL, 0xB3DE9C30D8CE5026ULL }, /* XSUM_XXH64_testdata[3396] */ + { 1698, 0x000000009E3779B1ULL, 0x6F06D8990008C3CBULL }, /* XSUM_XXH64_testdata[3397] */ + { 1699, 0x0000000000000000ULL, 0x342F47AC47AB3006ULL }, /* XSUM_XXH64_testdata[3398] */ + { 1699, 0x000000009E3779B1ULL, 0x1D1A6133D0FF4C28ULL }, /* XSUM_XXH64_testdata[3399] */ + { 1700, 0x0000000000000000ULL, 0xA3F8F2A97AB4543FULL }, /* XSUM_XXH64_testdata[3400] */ + { 1700, 0x000000009E3779B1ULL, 0xDE1F6E4CC71FAD03ULL }, /* XSUM_XXH64_testdata[3401] */ + { 1701, 0x0000000000000000ULL, 0xCC9C82EE8B57E96EULL }, /* XSUM_XXH64_testdata[3402] */ + { 1701, 0x000000009E3779B1ULL, 0x5BC8EFDB884B44ACULL }, /* XSUM_XXH64_testdata[3403] */ + { 1702, 0x0000000000000000ULL, 0xACCF70A9F06D4370ULL }, /* XSUM_XXH64_testdata[3404] */ + { 1702, 0x000000009E3779B1ULL, 0xE93D7A098026AE00ULL }, /* XSUM_XXH64_testdata[3405] */ + { 1703, 0x0000000000000000ULL, 0xC4F6C35ED815945BULL }, /* XSUM_XXH64_testdata[3406] */ + { 1703, 0x000000009E3779B1ULL, 0x8D8BEA6F4860E769ULL }, /* XSUM_XXH64_testdata[3407] */ + { 1704, 0x0000000000000000ULL, 0xDB47BC574089F55EULL }, /* XSUM_XXH64_testdata[3408] */ + { 1704, 0x000000009E3779B1ULL, 0x37D6D08840E3EF1EULL }, /* XSUM_XXH64_testdata[3409] */ + { 1705, 0x0000000000000000ULL, 0x2699F136DC53C798ULL }, /* XSUM_XXH64_testdata[3410] */ + { 1705, 0x000000009E3779B1ULL, 0x824255446F2EE361ULL }, /* XSUM_XXH64_testdata[3411] */ + { 1706, 0x0000000000000000ULL, 0xD62A889F292EC17EULL }, /* XSUM_XXH64_testdata[3412] */ + { 1706, 0x000000009E3779B1ULL, 0x1702CF9052C58735ULL }, /* XSUM_XXH64_testdata[3413] */ + { 1707, 0x0000000000000000ULL, 0x123BBAD844BBBC53ULL }, /* XSUM_XXH64_testdata[3414] */ + { 1707, 0x000000009E3779B1ULL, 0x89E311328DE51A98ULL }, /* XSUM_XXH64_testdata[3415] */ + { 1708, 0x0000000000000000ULL, 0x986AF39AF32D574BULL }, /* XSUM_XXH64_testdata[3416] */ + { 1708, 0x000000009E3779B1ULL, 0x70CC35BDA77D6ADEULL }, /* XSUM_XXH64_testdata[3417] */ + { 1709, 0x0000000000000000ULL, 0x1A023DD314C33689ULL }, /* XSUM_XXH64_testdata[3418] */ + { 1709, 0x000000009E3779B1ULL, 0xF50BEDE2B839A5C7ULL }, /* XSUM_XXH64_testdata[3419] */ + { 1710, 0x0000000000000000ULL, 0x60156579D9C1682EULL }, /* XSUM_XXH64_testdata[3420] */ + { 1710, 0x000000009E3779B1ULL, 0xBD1260444B1116DEULL }, /* XSUM_XXH64_testdata[3421] */ + { 1711, 0x0000000000000000ULL, 0x6C75FE0558CEF727ULL }, /* XSUM_XXH64_testdata[3422] */ + { 1711, 0x000000009E3779B1ULL, 0xA58E6DF0E53E819BULL }, /* XSUM_XXH64_testdata[3423] */ + { 1712, 0x0000000000000000ULL, 0x26A14DF448C0EBFBULL }, /* XSUM_XXH64_testdata[3424] */ + { 1712, 0x000000009E3779B1ULL, 0xC3BF20CA60750F16ULL }, /* XSUM_XXH64_testdata[3425] */ + { 1713, 0x0000000000000000ULL, 0xA3232BB3E7D13BF6ULL }, /* XSUM_XXH64_testdata[3426] */ + { 1713, 0x000000009E3779B1ULL, 0xEF838C8BF19BA816ULL }, /* XSUM_XXH64_testdata[3427] */ + { 1714, 0x0000000000000000ULL, 0x40EC017D27585BDCULL }, /* XSUM_XXH64_testdata[3428] */ + { 1714, 0x000000009E3779B1ULL, 0xBA76ECA3CA312676ULL }, /* XSUM_XXH64_testdata[3429] */ + { 1715, 0x0000000000000000ULL, 0xC202F3FA97954C32ULL }, /* XSUM_XXH64_testdata[3430] */ + { 1715, 0x000000009E3779B1ULL, 0x1DD23BA390FCFD77ULL }, /* XSUM_XXH64_testdata[3431] */ + { 1716, 0x0000000000000000ULL, 0x2D5BDA0248D035E2ULL }, /* XSUM_XXH64_testdata[3432] */ + { 1716, 0x000000009E3779B1ULL, 0x4F18A2F451223D88ULL }, /* XSUM_XXH64_testdata[3433] */ + { 1717, 0x0000000000000000ULL, 0xCC629A50E1667D14ULL }, /* XSUM_XXH64_testdata[3434] */ + { 1717, 0x000000009E3779B1ULL, 0x5730B39D7267ACF9ULL }, /* XSUM_XXH64_testdata[3435] */ + { 1718, 0x0000000000000000ULL, 0x5DCD78358AA3F8FAULL }, /* XSUM_XXH64_testdata[3436] */ + { 1718, 0x000000009E3779B1ULL, 0x4B071F9361A8B85EULL }, /* XSUM_XXH64_testdata[3437] */ + { 1719, 0x0000000000000000ULL, 0x6E80D2B9D82AEC43ULL }, /* XSUM_XXH64_testdata[3438] */ + { 1719, 0x000000009E3779B1ULL, 0x9ABD21AF82BC2D22ULL }, /* XSUM_XXH64_testdata[3439] */ + { 1720, 0x0000000000000000ULL, 0x2E9BC0FD5B1144FAULL }, /* XSUM_XXH64_testdata[3440] */ + { 1720, 0x000000009E3779B1ULL, 0xAD26D0AADFF06BC0ULL }, /* XSUM_XXH64_testdata[3441] */ + { 1721, 0x0000000000000000ULL, 0xB20B4A6727108B05ULL }, /* XSUM_XXH64_testdata[3442] */ + { 1721, 0x000000009E3779B1ULL, 0xB4BF4FF0CCC60866ULL }, /* XSUM_XXH64_testdata[3443] */ + { 1722, 0x0000000000000000ULL, 0x4240A18611B1D564ULL }, /* XSUM_XXH64_testdata[3444] */ + { 1722, 0x000000009E3779B1ULL, 0x44C1A81F8C0FB9F3ULL }, /* XSUM_XXH64_testdata[3445] */ + { 1723, 0x0000000000000000ULL, 0x5A7E212678293D5EULL }, /* XSUM_XXH64_testdata[3446] */ + { 1723, 0x000000009E3779B1ULL, 0x636EAFEF598703C5ULL }, /* XSUM_XXH64_testdata[3447] */ + { 1724, 0x0000000000000000ULL, 0x7D24EDD7355947F3ULL }, /* XSUM_XXH64_testdata[3448] */ + { 1724, 0x000000009E3779B1ULL, 0xEACFEE7DC598917CULL }, /* XSUM_XXH64_testdata[3449] */ + { 1725, 0x0000000000000000ULL, 0xF701ACF26677B7CDULL }, /* XSUM_XXH64_testdata[3450] */ + { 1725, 0x000000009E3779B1ULL, 0x18BB5E518BB85FF0ULL }, /* XSUM_XXH64_testdata[3451] */ + { 1726, 0x0000000000000000ULL, 0x1A46F2A428198B34ULL }, /* XSUM_XXH64_testdata[3452] */ + { 1726, 0x000000009E3779B1ULL, 0x08FB0151F8801A5AULL }, /* XSUM_XXH64_testdata[3453] */ + { 1727, 0x0000000000000000ULL, 0x915235E50A57D275ULL }, /* XSUM_XXH64_testdata[3454] */ + { 1727, 0x000000009E3779B1ULL, 0xEF705C921F5F1D28ULL }, /* XSUM_XXH64_testdata[3455] */ + { 1728, 0x0000000000000000ULL, 0x56E2C19A75F9E8BFULL }, /* XSUM_XXH64_testdata[3456] */ + { 1728, 0x000000009E3779B1ULL, 0xC02056594E646313ULL }, /* XSUM_XXH64_testdata[3457] */ + { 1729, 0x0000000000000000ULL, 0x3F8E58DFE327BD04ULL }, /* XSUM_XXH64_testdata[3458] */ + { 1729, 0x000000009E3779B1ULL, 0x590DD51947592217ULL }, /* XSUM_XXH64_testdata[3459] */ + { 1730, 0x0000000000000000ULL, 0xAD89489011AE7DFBULL }, /* XSUM_XXH64_testdata[3460] */ + { 1730, 0x000000009E3779B1ULL, 0x640EB7CE43ABA139ULL }, /* XSUM_XXH64_testdata[3461] */ + { 1731, 0x0000000000000000ULL, 0x70D754BAB814C9A3ULL }, /* XSUM_XXH64_testdata[3462] */ + { 1731, 0x000000009E3779B1ULL, 0xDD95E3F13F98049CULL }, /* XSUM_XXH64_testdata[3463] */ + { 1732, 0x0000000000000000ULL, 0xD80046DF363DC0FAULL }, /* XSUM_XXH64_testdata[3464] */ + { 1732, 0x000000009E3779B1ULL, 0xB0E778FF4B6E1568ULL }, /* XSUM_XXH64_testdata[3465] */ + { 1733, 0x0000000000000000ULL, 0xA1E4A4E0D47FFFA7ULL }, /* XSUM_XXH64_testdata[3466] */ + { 1733, 0x000000009E3779B1ULL, 0x6698FD93B0670C93ULL }, /* XSUM_XXH64_testdata[3467] */ + { 1734, 0x0000000000000000ULL, 0xB6DD5980B566FC2FULL }, /* XSUM_XXH64_testdata[3468] */ + { 1734, 0x000000009E3779B1ULL, 0x9DF21FF82ECAEF8BULL }, /* XSUM_XXH64_testdata[3469] */ + { 1735, 0x0000000000000000ULL, 0x9CCA793DAEC20CD8ULL }, /* XSUM_XXH64_testdata[3470] */ + { 1735, 0x000000009E3779B1ULL, 0x82EE3D976B3AF857ULL }, /* XSUM_XXH64_testdata[3471] */ + { 1736, 0x0000000000000000ULL, 0x9993E1397960F0DCULL }, /* XSUM_XXH64_testdata[3472] */ + { 1736, 0x000000009E3779B1ULL, 0xABB404039B73356CULL }, /* XSUM_XXH64_testdata[3473] */ + { 1737, 0x0000000000000000ULL, 0x35365EFD5C4471E2ULL }, /* XSUM_XXH64_testdata[3474] */ + { 1737, 0x000000009E3779B1ULL, 0x3257BDA08CC6ADAFULL }, /* XSUM_XXH64_testdata[3475] */ + { 1738, 0x0000000000000000ULL, 0x25F45BFE56B5CA9FULL }, /* XSUM_XXH64_testdata[3476] */ + { 1738, 0x000000009E3779B1ULL, 0x38ECE062CDC477A9ULL }, /* XSUM_XXH64_testdata[3477] */ + { 1739, 0x0000000000000000ULL, 0x8A38339E51186E6CULL }, /* XSUM_XXH64_testdata[3478] */ + { 1739, 0x000000009E3779B1ULL, 0xBD31F2E8AD9CD7A1ULL }, /* XSUM_XXH64_testdata[3479] */ + { 1740, 0x0000000000000000ULL, 0x12EF7936960AA308ULL }, /* XSUM_XXH64_testdata[3480] */ + { 1740, 0x000000009E3779B1ULL, 0x520B9AE652F337FCULL }, /* XSUM_XXH64_testdata[3481] */ + { 1741, 0x0000000000000000ULL, 0x6920C0FE251C374AULL }, /* XSUM_XXH64_testdata[3482] */ + { 1741, 0x000000009E3779B1ULL, 0x21654D8CF6D1A26DULL }, /* XSUM_XXH64_testdata[3483] */ + { 1742, 0x0000000000000000ULL, 0xB42CB16FC4BDAD49ULL }, /* XSUM_XXH64_testdata[3484] */ + { 1742, 0x000000009E3779B1ULL, 0x67E081A036D992D4ULL }, /* XSUM_XXH64_testdata[3485] */ + { 1743, 0x0000000000000000ULL, 0x0B5CD16F4CD4C660ULL }, /* XSUM_XXH64_testdata[3486] */ + { 1743, 0x000000009E3779B1ULL, 0x6E0E44C0AD41A008ULL }, /* XSUM_XXH64_testdata[3487] */ + { 1744, 0x0000000000000000ULL, 0x96E48BC1BBD85CF2ULL }, /* XSUM_XXH64_testdata[3488] */ + { 1744, 0x000000009E3779B1ULL, 0xC3F71B97D808D9C7ULL }, /* XSUM_XXH64_testdata[3489] */ + { 1745, 0x0000000000000000ULL, 0xE54F350E6AA7BCE9ULL }, /* XSUM_XXH64_testdata[3490] */ + { 1745, 0x000000009E3779B1ULL, 0x9AEFC9FC7BF6B0B9ULL }, /* XSUM_XXH64_testdata[3491] */ + { 1746, 0x0000000000000000ULL, 0x2971C6B8B26DCB67ULL }, /* XSUM_XXH64_testdata[3492] */ + { 1746, 0x000000009E3779B1ULL, 0xFD0BDBD97F50A52CULL }, /* XSUM_XXH64_testdata[3493] */ + { 1747, 0x0000000000000000ULL, 0x4FA4323493ACF24EULL }, /* XSUM_XXH64_testdata[3494] */ + { 1747, 0x000000009E3779B1ULL, 0x261F1370DD014DBDULL }, /* XSUM_XXH64_testdata[3495] */ + { 1748, 0x0000000000000000ULL, 0xDBA05A1AF9C1851AULL }, /* XSUM_XXH64_testdata[3496] */ + { 1748, 0x000000009E3779B1ULL, 0x3E12342B2B1A44F2ULL }, /* XSUM_XXH64_testdata[3497] */ + { 1749, 0x0000000000000000ULL, 0x0B9E82AC9F549857ULL }, /* XSUM_XXH64_testdata[3498] */ + { 1749, 0x000000009E3779B1ULL, 0x57170AED497AA965ULL }, /* XSUM_XXH64_testdata[3499] */ + { 1750, 0x0000000000000000ULL, 0xFC04C903251ED260ULL }, /* XSUM_XXH64_testdata[3500] */ + { 1750, 0x000000009E3779B1ULL, 0x24DB576773E75308ULL }, /* XSUM_XXH64_testdata[3501] */ + { 1751, 0x0000000000000000ULL, 0x50FF5014BD62F3DCULL }, /* XSUM_XXH64_testdata[3502] */ + { 1751, 0x000000009E3779B1ULL, 0x4E4A900C0F31FE5CULL }, /* XSUM_XXH64_testdata[3503] */ + { 1752, 0x0000000000000000ULL, 0x04FBB508FE01A73FULL }, /* XSUM_XXH64_testdata[3504] */ + { 1752, 0x000000009E3779B1ULL, 0x73C9C4B50A322B1EULL }, /* XSUM_XXH64_testdata[3505] */ + { 1753, 0x0000000000000000ULL, 0x8062F35168DFB18BULL }, /* XSUM_XXH64_testdata[3506] */ + { 1753, 0x000000009E3779B1ULL, 0x70B9D085B260C9ADULL }, /* XSUM_XXH64_testdata[3507] */ + { 1754, 0x0000000000000000ULL, 0x06E0EB228BB7ACBFULL }, /* XSUM_XXH64_testdata[3508] */ + { 1754, 0x000000009E3779B1ULL, 0x9518BB6476D67689ULL }, /* XSUM_XXH64_testdata[3509] */ + { 1755, 0x0000000000000000ULL, 0x37B87425B1FAA058ULL }, /* XSUM_XXH64_testdata[3510] */ + { 1755, 0x000000009E3779B1ULL, 0xB1955FAE0B147711ULL }, /* XSUM_XXH64_testdata[3511] */ + { 1756, 0x0000000000000000ULL, 0xF65468407B4553E1ULL }, /* XSUM_XXH64_testdata[3512] */ + { 1756, 0x000000009E3779B1ULL, 0x00F053BF395B2106ULL }, /* XSUM_XXH64_testdata[3513] */ + { 1757, 0x0000000000000000ULL, 0xFFB10BB605C9110EULL }, /* XSUM_XXH64_testdata[3514] */ + { 1757, 0x000000009E3779B1ULL, 0x1640DD5715A690F4ULL }, /* XSUM_XXH64_testdata[3515] */ + { 1758, 0x0000000000000000ULL, 0x5DEE77F59466D50BULL }, /* XSUM_XXH64_testdata[3516] */ + { 1758, 0x000000009E3779B1ULL, 0x8AA5DE5E6985EB84ULL }, /* XSUM_XXH64_testdata[3517] */ + { 1759, 0x0000000000000000ULL, 0x6DF102C54A4FAB83ULL }, /* XSUM_XXH64_testdata[3518] */ + { 1759, 0x000000009E3779B1ULL, 0x08FE7F7878532F68ULL }, /* XSUM_XXH64_testdata[3519] */ + { 1760, 0x0000000000000000ULL, 0xEF2CF03EDE2830EAULL }, /* XSUM_XXH64_testdata[3520] */ + { 1760, 0x000000009E3779B1ULL, 0x754AC7CE9010BD9CULL }, /* XSUM_XXH64_testdata[3521] */ + { 1761, 0x0000000000000000ULL, 0xCB7D1DFB7B2DB3BFULL }, /* XSUM_XXH64_testdata[3522] */ + { 1761, 0x000000009E3779B1ULL, 0x4247787E1084A707ULL }, /* XSUM_XXH64_testdata[3523] */ + { 1762, 0x0000000000000000ULL, 0x9D8A3065B8D7CBA0ULL }, /* XSUM_XXH64_testdata[3524] */ + { 1762, 0x000000009E3779B1ULL, 0x9B5DDCAE88071197ULL }, /* XSUM_XXH64_testdata[3525] */ + { 1763, 0x0000000000000000ULL, 0x193834739464B2BEULL }, /* XSUM_XXH64_testdata[3526] */ + { 1763, 0x000000009E3779B1ULL, 0x1C1D93E5112B6E9FULL }, /* XSUM_XXH64_testdata[3527] */ + { 1764, 0x0000000000000000ULL, 0x7494E37B90846CC1ULL }, /* XSUM_XXH64_testdata[3528] */ + { 1764, 0x000000009E3779B1ULL, 0x4F0FD3084E953A93ULL }, /* XSUM_XXH64_testdata[3529] */ + { 1765, 0x0000000000000000ULL, 0xC56C38A579B304A3ULL }, /* XSUM_XXH64_testdata[3530] */ + { 1765, 0x000000009E3779B1ULL, 0x48742B364F37C808ULL }, /* XSUM_XXH64_testdata[3531] */ + { 1766, 0x0000000000000000ULL, 0x153DB0985BE55DBDULL }, /* XSUM_XXH64_testdata[3532] */ + { 1766, 0x000000009E3779B1ULL, 0x02993D14529623B8ULL }, /* XSUM_XXH64_testdata[3533] */ + { 1767, 0x0000000000000000ULL, 0x493FC92A4186CB01ULL }, /* XSUM_XXH64_testdata[3534] */ + { 1767, 0x000000009E3779B1ULL, 0xF9C334FFA2FB7CECULL }, /* XSUM_XXH64_testdata[3535] */ + { 1768, 0x0000000000000000ULL, 0x502140C5FC4E24ECULL }, /* XSUM_XXH64_testdata[3536] */ + { 1768, 0x000000009E3779B1ULL, 0xF86DE152E0F26681ULL }, /* XSUM_XXH64_testdata[3537] */ + { 1769, 0x0000000000000000ULL, 0x84A97F4662C50091ULL }, /* XSUM_XXH64_testdata[3538] */ + { 1769, 0x000000009E3779B1ULL, 0x77D9E20B45659C55ULL }, /* XSUM_XXH64_testdata[3539] */ + { 1770, 0x0000000000000000ULL, 0xD00AC20E8B16543FULL }, /* XSUM_XXH64_testdata[3540] */ + { 1770, 0x000000009E3779B1ULL, 0x5FD0E9B86F32AF5AULL }, /* XSUM_XXH64_testdata[3541] */ + { 1771, 0x0000000000000000ULL, 0xA7F827B58C969A73ULL }, /* XSUM_XXH64_testdata[3542] */ + { 1771, 0x000000009E3779B1ULL, 0xA2A0F0E3BBF1149BULL }, /* XSUM_XXH64_testdata[3543] */ + { 1772, 0x0000000000000000ULL, 0x9364429C55E2B620ULL }, /* XSUM_XXH64_testdata[3544] */ + { 1772, 0x000000009E3779B1ULL, 0xE2D9CF031122FEE6ULL }, /* XSUM_XXH64_testdata[3545] */ + { 1773, 0x0000000000000000ULL, 0x4A75DEDCB338134FULL }, /* XSUM_XXH64_testdata[3546] */ + { 1773, 0x000000009E3779B1ULL, 0xABC8F48D7763BB2EULL }, /* XSUM_XXH64_testdata[3547] */ + { 1774, 0x0000000000000000ULL, 0xB2CFCD53A763AE9DULL }, /* XSUM_XXH64_testdata[3548] */ + { 1774, 0x000000009E3779B1ULL, 0x3ADD0CEE6C14D479ULL }, /* XSUM_XXH64_testdata[3549] */ + { 1775, 0x0000000000000000ULL, 0x6EC4D430924F55D4ULL }, /* XSUM_XXH64_testdata[3550] */ + { 1775, 0x000000009E3779B1ULL, 0xB90CB8273928BE7AULL }, /* XSUM_XXH64_testdata[3551] */ + { 1776, 0x0000000000000000ULL, 0x2BD368A7FC564A38ULL }, /* XSUM_XXH64_testdata[3552] */ + { 1776, 0x000000009E3779B1ULL, 0x23E7EF417A8811CAULL }, /* XSUM_XXH64_testdata[3553] */ + { 1777, 0x0000000000000000ULL, 0x24CC01996464C9EFULL }, /* XSUM_XXH64_testdata[3554] */ + { 1777, 0x000000009E3779B1ULL, 0xBFD73DB7C55CB28DULL }, /* XSUM_XXH64_testdata[3555] */ + { 1778, 0x0000000000000000ULL, 0xEB932D3915FE55F9ULL }, /* XSUM_XXH64_testdata[3556] */ + { 1778, 0x000000009E3779B1ULL, 0xEFC0BA40F2927379ULL }, /* XSUM_XXH64_testdata[3557] */ + { 1779, 0x0000000000000000ULL, 0xDB3C509D1A756424ULL }, /* XSUM_XXH64_testdata[3558] */ + { 1779, 0x000000009E3779B1ULL, 0x082688D72DD818EBULL }, /* XSUM_XXH64_testdata[3559] */ + { 1780, 0x0000000000000000ULL, 0x56F36053787856BEULL }, /* XSUM_XXH64_testdata[3560] */ + { 1780, 0x000000009E3779B1ULL, 0x63DCA8789B8F6C87ULL }, /* XSUM_XXH64_testdata[3561] */ + { 1781, 0x0000000000000000ULL, 0xAA4E0A7E6030B219ULL }, /* XSUM_XXH64_testdata[3562] */ + { 1781, 0x000000009E3779B1ULL, 0xD60D910581742446ULL }, /* XSUM_XXH64_testdata[3563] */ + { 1782, 0x0000000000000000ULL, 0x3105DE21BB957E66ULL }, /* XSUM_XXH64_testdata[3564] */ + { 1782, 0x000000009E3779B1ULL, 0x9E1C3E19EE168BE2ULL }, /* XSUM_XXH64_testdata[3565] */ + { 1783, 0x0000000000000000ULL, 0xB283E1DC6A55B445ULL }, /* XSUM_XXH64_testdata[3566] */ + { 1783, 0x000000009E3779B1ULL, 0x04F503CBEA9F2228ULL }, /* XSUM_XXH64_testdata[3567] */ + { 1784, 0x0000000000000000ULL, 0xB4D8AFD6504D88BCULL }, /* XSUM_XXH64_testdata[3568] */ + { 1784, 0x000000009E3779B1ULL, 0x18F18EB1F72820E0ULL }, /* XSUM_XXH64_testdata[3569] */ + { 1785, 0x0000000000000000ULL, 0x9D77A31559648691ULL }, /* XSUM_XXH64_testdata[3570] */ + { 1785, 0x000000009E3779B1ULL, 0xB583BDCB829E1064ULL }, /* XSUM_XXH64_testdata[3571] */ + { 1786, 0x0000000000000000ULL, 0xFCFC3C66D9B1FB0BULL }, /* XSUM_XXH64_testdata[3572] */ + { 1786, 0x000000009E3779B1ULL, 0xB1DD390373C80DCDULL }, /* XSUM_XXH64_testdata[3573] */ + { 1787, 0x0000000000000000ULL, 0xE5EBB1B705841BF8ULL }, /* XSUM_XXH64_testdata[3574] */ + { 1787, 0x000000009E3779B1ULL, 0x0C7566581024DAF4ULL }, /* XSUM_XXH64_testdata[3575] */ + { 1788, 0x0000000000000000ULL, 0xF286AA4EDF5166A3ULL }, /* XSUM_XXH64_testdata[3576] */ + { 1788, 0x000000009E3779B1ULL, 0xDC7964276E9FD51AULL }, /* XSUM_XXH64_testdata[3577] */ + { 1789, 0x0000000000000000ULL, 0x927D938D54E2D0BAULL }, /* XSUM_XXH64_testdata[3578] */ + { 1789, 0x000000009E3779B1ULL, 0x299905EE59AD6AD7ULL }, /* XSUM_XXH64_testdata[3579] */ + { 1790, 0x0000000000000000ULL, 0xA240FF78B36282EBULL }, /* XSUM_XXH64_testdata[3580] */ + { 1790, 0x000000009E3779B1ULL, 0x1912DED7D855378BULL }, /* XSUM_XXH64_testdata[3581] */ + { 1791, 0x0000000000000000ULL, 0xBB569C0D13C72242ULL }, /* XSUM_XXH64_testdata[3582] */ + { 1791, 0x000000009E3779B1ULL, 0xF926FD9CE3306EAEULL }, /* XSUM_XXH64_testdata[3583] */ + { 1792, 0x0000000000000000ULL, 0x3594A8E12E7A2590ULL }, /* XSUM_XXH64_testdata[3584] */ + { 1792, 0x000000009E3779B1ULL, 0xFE7F8AC76E5222C7ULL }, /* XSUM_XXH64_testdata[3585] */ + { 1793, 0x0000000000000000ULL, 0xDA50DDCB0825B3A6ULL }, /* XSUM_XXH64_testdata[3586] */ + { 1793, 0x000000009E3779B1ULL, 0xA1AB5CD29A3E14A9ULL }, /* XSUM_XXH64_testdata[3587] */ + { 1794, 0x0000000000000000ULL, 0x3F624E16FA68231FULL }, /* XSUM_XXH64_testdata[3588] */ + { 1794, 0x000000009E3779B1ULL, 0x7A0A78827045F625ULL }, /* XSUM_XXH64_testdata[3589] */ + { 1795, 0x0000000000000000ULL, 0x60305DA92FE860C1ULL }, /* XSUM_XXH64_testdata[3590] */ + { 1795, 0x000000009E3779B1ULL, 0xB21F264C0BF1D7D3ULL }, /* XSUM_XXH64_testdata[3591] */ + { 1796, 0x0000000000000000ULL, 0x826CF8B3BA1621DEULL }, /* XSUM_XXH64_testdata[3592] */ + { 1796, 0x000000009E3779B1ULL, 0xC2C476B658F20AF5ULL }, /* XSUM_XXH64_testdata[3593] */ + { 1797, 0x0000000000000000ULL, 0x72028C29B2FF8EF0ULL }, /* XSUM_XXH64_testdata[3594] */ + { 1797, 0x000000009E3779B1ULL, 0x0FA8FC5021DA98E1ULL }, /* XSUM_XXH64_testdata[3595] */ + { 1798, 0x0000000000000000ULL, 0x889AD4971681649AULL }, /* XSUM_XXH64_testdata[3596] */ + { 1798, 0x000000009E3779B1ULL, 0x01072B1F6245DB87ULL }, /* XSUM_XXH64_testdata[3597] */ + { 1799, 0x0000000000000000ULL, 0xE51F50DAC98D2CBBULL }, /* XSUM_XXH64_testdata[3598] */ + { 1799, 0x000000009E3779B1ULL, 0xF6999B80038E33D4ULL }, /* XSUM_XXH64_testdata[3599] */ + { 1800, 0x0000000000000000ULL, 0x075F283A158F02A9ULL }, /* XSUM_XXH64_testdata[3600] */ + { 1800, 0x000000009E3779B1ULL, 0xD80B80BACD6F6F53ULL }, /* XSUM_XXH64_testdata[3601] */ + { 1801, 0x0000000000000000ULL, 0xA993ACFF34C9D4CFULL }, /* XSUM_XXH64_testdata[3602] */ + { 1801, 0x000000009E3779B1ULL, 0xEB84D07671DABBA8ULL }, /* XSUM_XXH64_testdata[3603] */ + { 1802, 0x0000000000000000ULL, 0x9C37159086DA00E1ULL }, /* XSUM_XXH64_testdata[3604] */ + { 1802, 0x000000009E3779B1ULL, 0xFCC389D22B416502ULL }, /* XSUM_XXH64_testdata[3605] */ + { 1803, 0x0000000000000000ULL, 0x73219CD3384CCCC6ULL }, /* XSUM_XXH64_testdata[3606] */ + { 1803, 0x000000009E3779B1ULL, 0x8B5B8A7C3D14378EULL }, /* XSUM_XXH64_testdata[3607] */ + { 1804, 0x0000000000000000ULL, 0xF38DD0C046F408ADULL }, /* XSUM_XXH64_testdata[3608] */ + { 1804, 0x000000009E3779B1ULL, 0x4A8F1C4377DC0166ULL }, /* XSUM_XXH64_testdata[3609] */ + { 1805, 0x0000000000000000ULL, 0x8E791C1AD85881B5ULL }, /* XSUM_XXH64_testdata[3610] */ + { 1805, 0x000000009E3779B1ULL, 0x3F9DC16100D4FEB1ULL }, /* XSUM_XXH64_testdata[3611] */ + { 1806, 0x0000000000000000ULL, 0x2949624FB4CF675BULL }, /* XSUM_XXH64_testdata[3612] */ + { 1806, 0x000000009E3779B1ULL, 0xDC5D223E234BCB17ULL }, /* XSUM_XXH64_testdata[3613] */ + { 1807, 0x0000000000000000ULL, 0xC78DDFCD803DDFB3ULL }, /* XSUM_XXH64_testdata[3614] */ + { 1807, 0x000000009E3779B1ULL, 0x66C95C37EA43F8E9ULL }, /* XSUM_XXH64_testdata[3615] */ + { 1808, 0x0000000000000000ULL, 0x514782D24DD9D675ULL }, /* XSUM_XXH64_testdata[3616] */ + { 1808, 0x000000009E3779B1ULL, 0x8AE9E4457A74112AULL }, /* XSUM_XXH64_testdata[3617] */ + { 1809, 0x0000000000000000ULL, 0x8E0056C99BA79308ULL }, /* XSUM_XXH64_testdata[3618] */ + { 1809, 0x000000009E3779B1ULL, 0x90AA3F44B95C0790ULL }, /* XSUM_XXH64_testdata[3619] */ + { 1810, 0x0000000000000000ULL, 0x8CA329CC8E73179EULL }, /* XSUM_XXH64_testdata[3620] */ + { 1810, 0x000000009E3779B1ULL, 0x20FBEB6D64A2A9D7ULL }, /* XSUM_XXH64_testdata[3621] */ + { 1811, 0x0000000000000000ULL, 0x84694CD3D1CE1919ULL }, /* XSUM_XXH64_testdata[3622] */ + { 1811, 0x000000009E3779B1ULL, 0xDD8D80CF51F72CFAULL }, /* XSUM_XXH64_testdata[3623] */ + { 1812, 0x0000000000000000ULL, 0x785A195F3A0B95ACULL }, /* XSUM_XXH64_testdata[3624] */ + { 1812, 0x000000009E3779B1ULL, 0x35C8FFAD7F518909ULL }, /* XSUM_XXH64_testdata[3625] */ + { 1813, 0x0000000000000000ULL, 0x7AF977910D4CFF53ULL }, /* XSUM_XXH64_testdata[3626] */ + { 1813, 0x000000009E3779B1ULL, 0x02588030BA682EABULL }, /* XSUM_XXH64_testdata[3627] */ + { 1814, 0x0000000000000000ULL, 0x767DE7936A4FE947ULL }, /* XSUM_XXH64_testdata[3628] */ + { 1814, 0x000000009E3779B1ULL, 0x8AB1FD1128031449ULL }, /* XSUM_XXH64_testdata[3629] */ + { 1815, 0x0000000000000000ULL, 0xE8749E9ADB914ABEULL }, /* XSUM_XXH64_testdata[3630] */ + { 1815, 0x000000009E3779B1ULL, 0x03D39D7F57862FE6ULL }, /* XSUM_XXH64_testdata[3631] */ + { 1816, 0x0000000000000000ULL, 0x641C019CE87F8B88ULL }, /* XSUM_XXH64_testdata[3632] */ + { 1816, 0x000000009E3779B1ULL, 0x46E2D2FA5D3DF9F6ULL }, /* XSUM_XXH64_testdata[3633] */ + { 1817, 0x0000000000000000ULL, 0x1B7679A6B712C9A4ULL }, /* XSUM_XXH64_testdata[3634] */ + { 1817, 0x000000009E3779B1ULL, 0xEFC59F59C75060AAULL }, /* XSUM_XXH64_testdata[3635] */ + { 1818, 0x0000000000000000ULL, 0x8E7AD231C665EE44ULL }, /* XSUM_XXH64_testdata[3636] */ + { 1818, 0x000000009E3779B1ULL, 0x489A400AAA27FB83ULL }, /* XSUM_XXH64_testdata[3637] */ + { 1819, 0x0000000000000000ULL, 0x6C5631CF03ED9F59ULL }, /* XSUM_XXH64_testdata[3638] */ + { 1819, 0x000000009E3779B1ULL, 0x6751FB633FA15C59ULL }, /* XSUM_XXH64_testdata[3639] */ + { 1820, 0x0000000000000000ULL, 0x5DA956031BF8C94AULL }, /* XSUM_XXH64_testdata[3640] */ + { 1820, 0x000000009E3779B1ULL, 0x77D9BF48CD0BAA03ULL }, /* XSUM_XXH64_testdata[3641] */ + { 1821, 0x0000000000000000ULL, 0xB0A0E37C71B862AAULL }, /* XSUM_XXH64_testdata[3642] */ + { 1821, 0x000000009E3779B1ULL, 0x24687C4E7EE4CC59ULL }, /* XSUM_XXH64_testdata[3643] */ + { 1822, 0x0000000000000000ULL, 0xE42477D88E0F5AF7ULL }, /* XSUM_XXH64_testdata[3644] */ + { 1822, 0x000000009E3779B1ULL, 0x55EA10EFFA49BD8FULL }, /* XSUM_XXH64_testdata[3645] */ + { 1823, 0x0000000000000000ULL, 0xA13F57925BAC9F89ULL }, /* XSUM_XXH64_testdata[3646] */ + { 1823, 0x000000009E3779B1ULL, 0xA4D92E0E33FDA69EULL }, /* XSUM_XXH64_testdata[3647] */ + { 1824, 0x0000000000000000ULL, 0x8FA8E11212591F35ULL }, /* XSUM_XXH64_testdata[3648] */ + { 1824, 0x000000009E3779B1ULL, 0xB0F6C86A9EC4D627ULL }, /* XSUM_XXH64_testdata[3649] */ + { 1825, 0x0000000000000000ULL, 0xD0450465C595F872ULL }, /* XSUM_XXH64_testdata[3650] */ + { 1825, 0x000000009E3779B1ULL, 0xAA7E7064DF30CBE7ULL }, /* XSUM_XXH64_testdata[3651] */ + { 1826, 0x0000000000000000ULL, 0x97963B0EA0A1F5D0ULL }, /* XSUM_XXH64_testdata[3652] */ + { 1826, 0x000000009E3779B1ULL, 0x5A01CBA7BEF40882ULL }, /* XSUM_XXH64_testdata[3653] */ + { 1827, 0x0000000000000000ULL, 0xB40DBEEBBCB8D8ABULL }, /* XSUM_XXH64_testdata[3654] */ + { 1827, 0x000000009E3779B1ULL, 0x9AFBAD78FD7A1C7DULL }, /* XSUM_XXH64_testdata[3655] */ + { 1828, 0x0000000000000000ULL, 0x7053541B0C1AB395ULL }, /* XSUM_XXH64_testdata[3656] */ + { 1828, 0x000000009E3779B1ULL, 0x581F636679AF086BULL }, /* XSUM_XXH64_testdata[3657] */ + { 1829, 0x0000000000000000ULL, 0x7EC791BA03FCE492ULL }, /* XSUM_XXH64_testdata[3658] */ + { 1829, 0x000000009E3779B1ULL, 0x60B0DDDA8A70DF86ULL }, /* XSUM_XXH64_testdata[3659] */ + { 1830, 0x0000000000000000ULL, 0x67A2D183F5D03E2FULL }, /* XSUM_XXH64_testdata[3660] */ + { 1830, 0x000000009E3779B1ULL, 0xD528B12BD0B8D672ULL }, /* XSUM_XXH64_testdata[3661] */ + { 1831, 0x0000000000000000ULL, 0x67095D4F93F6E553ULL }, /* XSUM_XXH64_testdata[3662] */ + { 1831, 0x000000009E3779B1ULL, 0x304B433FA638E8BFULL }, /* XSUM_XXH64_testdata[3663] */ + { 1832, 0x0000000000000000ULL, 0x4C24C4C869106A95ULL }, /* XSUM_XXH64_testdata[3664] */ + { 1832, 0x000000009E3779B1ULL, 0xA180123F5C90E7A6ULL }, /* XSUM_XXH64_testdata[3665] */ + { 1833, 0x0000000000000000ULL, 0x21CE8B9EF29D0F98ULL }, /* XSUM_XXH64_testdata[3666] */ + { 1833, 0x000000009E3779B1ULL, 0xD7DE264A3846C875ULL }, /* XSUM_XXH64_testdata[3667] */ + { 1834, 0x0000000000000000ULL, 0xC50213C47C9958FBULL }, /* XSUM_XXH64_testdata[3668] */ + { 1834, 0x000000009E3779B1ULL, 0x42F6D146EFCE1583ULL }, /* XSUM_XXH64_testdata[3669] */ + { 1835, 0x0000000000000000ULL, 0x7E0E1533A208D7ECULL }, /* XSUM_XXH64_testdata[3670] */ + { 1835, 0x000000009E3779B1ULL, 0x0A07445114390317ULL }, /* XSUM_XXH64_testdata[3671] */ + { 1836, 0x0000000000000000ULL, 0xFBDD009852DE3524ULL }, /* XSUM_XXH64_testdata[3672] */ + { 1836, 0x000000009E3779B1ULL, 0x618838F56C9E5AB5ULL }, /* XSUM_XXH64_testdata[3673] */ + { 1837, 0x0000000000000000ULL, 0x676676CA10702072ULL }, /* XSUM_XXH64_testdata[3674] */ + { 1837, 0x000000009E3779B1ULL, 0xF179132BDD4BDAABULL }, /* XSUM_XXH64_testdata[3675] */ + { 1838, 0x0000000000000000ULL, 0xA4CBF37225582A90ULL }, /* XSUM_XXH64_testdata[3676] */ + { 1838, 0x000000009E3779B1ULL, 0x15BE563CC879BA7CULL }, /* XSUM_XXH64_testdata[3677] */ + { 1839, 0x0000000000000000ULL, 0x2F3ADF19315F7B23ULL }, /* XSUM_XXH64_testdata[3678] */ + { 1839, 0x000000009E3779B1ULL, 0x54405A06065FFD92ULL }, /* XSUM_XXH64_testdata[3679] */ + { 1840, 0x0000000000000000ULL, 0x83C859C0BACD65C2ULL }, /* XSUM_XXH64_testdata[3680] */ + { 1840, 0x000000009E3779B1ULL, 0x93AEBE7C2F426C81ULL }, /* XSUM_XXH64_testdata[3681] */ + { 1841, 0x0000000000000000ULL, 0x2E2E0354DB51681EULL }, /* XSUM_XXH64_testdata[3682] */ + { 1841, 0x000000009E3779B1ULL, 0x53A91CDED50F56E5ULL }, /* XSUM_XXH64_testdata[3683] */ + { 1842, 0x0000000000000000ULL, 0x8DE944AC4FA75183ULL }, /* XSUM_XXH64_testdata[3684] */ + { 1842, 0x000000009E3779B1ULL, 0x39C8893E34B9E6EFULL }, /* XSUM_XXH64_testdata[3685] */ + { 1843, 0x0000000000000000ULL, 0x0A23FBE54BCA92FAULL }, /* XSUM_XXH64_testdata[3686] */ + { 1843, 0x000000009E3779B1ULL, 0x95DDEB83526CB960ULL }, /* XSUM_XXH64_testdata[3687] */ + { 1844, 0x0000000000000000ULL, 0xC8A92677F1B07BC6ULL }, /* XSUM_XXH64_testdata[3688] */ + { 1844, 0x000000009E3779B1ULL, 0x640867D93ABFC476ULL }, /* XSUM_XXH64_testdata[3689] */ + { 1845, 0x0000000000000000ULL, 0xA648255EB632C796ULL }, /* XSUM_XXH64_testdata[3690] */ + { 1845, 0x000000009E3779B1ULL, 0x9F6CDE95BFDDCBB1ULL }, /* XSUM_XXH64_testdata[3691] */ + { 1846, 0x0000000000000000ULL, 0x30E382C8BCE8B80EULL }, /* XSUM_XXH64_testdata[3692] */ + { 1846, 0x000000009E3779B1ULL, 0xB5E55AD6BDF29F97ULL }, /* XSUM_XXH64_testdata[3693] */ + { 1847, 0x0000000000000000ULL, 0x8FD8106336630653ULL }, /* XSUM_XXH64_testdata[3694] */ + { 1847, 0x000000009E3779B1ULL, 0x0629F6712228ED3DULL }, /* XSUM_XXH64_testdata[3695] */ + { 1848, 0x0000000000000000ULL, 0x79B1CD7DAA94A618ULL }, /* XSUM_XXH64_testdata[3696] */ + { 1848, 0x000000009E3779B1ULL, 0x4114CA65265D35A8ULL }, /* XSUM_XXH64_testdata[3697] */ + { 1849, 0x0000000000000000ULL, 0x3AB01D69EB0EC09BULL }, /* XSUM_XXH64_testdata[3698] */ + { 1849, 0x000000009E3779B1ULL, 0x67ED35FD7918B8D9ULL }, /* XSUM_XXH64_testdata[3699] */ + { 1850, 0x0000000000000000ULL, 0xF62C3364D92DB928ULL }, /* XSUM_XXH64_testdata[3700] */ + { 1850, 0x000000009E3779B1ULL, 0x77B5F04363801A45ULL }, /* XSUM_XXH64_testdata[3701] */ + { 1851, 0x0000000000000000ULL, 0x098DD4D5B1ACF93CULL }, /* XSUM_XXH64_testdata[3702] */ + { 1851, 0x000000009E3779B1ULL, 0x60E13D42467485CEULL }, /* XSUM_XXH64_testdata[3703] */ + { 1852, 0x0000000000000000ULL, 0x00A4CC77EB00DD8CULL }, /* XSUM_XXH64_testdata[3704] */ + { 1852, 0x000000009E3779B1ULL, 0x264CB5B9B244E326ULL }, /* XSUM_XXH64_testdata[3705] */ + { 1853, 0x0000000000000000ULL, 0x368BD39B027D2F55ULL }, /* XSUM_XXH64_testdata[3706] */ + { 1853, 0x000000009E3779B1ULL, 0x7D5B5C6BB7248846ULL }, /* XSUM_XXH64_testdata[3707] */ + { 1854, 0x0000000000000000ULL, 0xC21D8794C543BBD3ULL }, /* XSUM_XXH64_testdata[3708] */ + { 1854, 0x000000009E3779B1ULL, 0x6C9849FC2608223CULL }, /* XSUM_XXH64_testdata[3709] */ + { 1855, 0x0000000000000000ULL, 0xB6540CCCF144B408ULL }, /* XSUM_XXH64_testdata[3710] */ + { 1855, 0x000000009E3779B1ULL, 0xB3FF3C8C9BB34DB2ULL }, /* XSUM_XXH64_testdata[3711] */ + { 1856, 0x0000000000000000ULL, 0x1FD57CC3A28B8B2FULL }, /* XSUM_XXH64_testdata[3712] */ + { 1856, 0x000000009E3779B1ULL, 0x0AC9224B7A7DE1A3ULL }, /* XSUM_XXH64_testdata[3713] */ + { 1857, 0x0000000000000000ULL, 0x8E5BEF30C4CCCE13ULL }, /* XSUM_XXH64_testdata[3714] */ + { 1857, 0x000000009E3779B1ULL, 0x0DC284EF18A34E94ULL }, /* XSUM_XXH64_testdata[3715] */ + { 1858, 0x0000000000000000ULL, 0xD183A589101F350DULL }, /* XSUM_XXH64_testdata[3716] */ + { 1858, 0x000000009E3779B1ULL, 0x6974B50A5ED9C55EULL }, /* XSUM_XXH64_testdata[3717] */ + { 1859, 0x0000000000000000ULL, 0x8A760EA06A32DCA4ULL }, /* XSUM_XXH64_testdata[3718] */ + { 1859, 0x000000009E3779B1ULL, 0x279374754D9ACB15ULL }, /* XSUM_XXH64_testdata[3719] */ + { 1860, 0x0000000000000000ULL, 0x67A71611B4E28F90ULL }, /* XSUM_XXH64_testdata[3720] */ + { 1860, 0x000000009E3779B1ULL, 0x46E1ADAAD0C971C7ULL }, /* XSUM_XXH64_testdata[3721] */ + { 1861, 0x0000000000000000ULL, 0xA2DEFC2A9887F526ULL }, /* XSUM_XXH64_testdata[3722] */ + { 1861, 0x000000009E3779B1ULL, 0x3BF6FC439ED5CBB4ULL }, /* XSUM_XXH64_testdata[3723] */ + { 1862, 0x0000000000000000ULL, 0x3FDA4CB9D1B4E91FULL }, /* XSUM_XXH64_testdata[3724] */ + { 1862, 0x000000009E3779B1ULL, 0x9A414C868F5DA835ULL }, /* XSUM_XXH64_testdata[3725] */ + { 1863, 0x0000000000000000ULL, 0xDB51F7445602B84FULL }, /* XSUM_XXH64_testdata[3726] */ + { 1863, 0x000000009E3779B1ULL, 0x5F1CEC7931D75D05ULL }, /* XSUM_XXH64_testdata[3727] */ + { 1864, 0x0000000000000000ULL, 0x0F58BB727F134477ULL }, /* XSUM_XXH64_testdata[3728] */ + { 1864, 0x000000009E3779B1ULL, 0xDF6DD5AB012398DAULL }, /* XSUM_XXH64_testdata[3729] */ + { 1865, 0x0000000000000000ULL, 0x74671FC0F2F2353CULL }, /* XSUM_XXH64_testdata[3730] */ + { 1865, 0x000000009E3779B1ULL, 0x34C10B2DC838DE09ULL }, /* XSUM_XXH64_testdata[3731] */ + { 1866, 0x0000000000000000ULL, 0xD15EF99D440333D1ULL }, /* XSUM_XXH64_testdata[3732] */ + { 1866, 0x000000009E3779B1ULL, 0xD6C76CB377C44611ULL }, /* XSUM_XXH64_testdata[3733] */ + { 1867, 0x0000000000000000ULL, 0xE32B4DCEAB692564ULL }, /* XSUM_XXH64_testdata[3734] */ + { 1867, 0x000000009E3779B1ULL, 0x9C31B2522984FD1FULL }, /* XSUM_XXH64_testdata[3735] */ + { 1868, 0x0000000000000000ULL, 0x12E8A18B72B4EB64ULL }, /* XSUM_XXH64_testdata[3736] */ + { 1868, 0x000000009E3779B1ULL, 0x210B2AC415D693BEULL }, /* XSUM_XXH64_testdata[3737] */ + { 1869, 0x0000000000000000ULL, 0x4707734110EF4F89ULL }, /* XSUM_XXH64_testdata[3738] */ + { 1869, 0x000000009E3779B1ULL, 0x573E3DACBFA62409ULL }, /* XSUM_XXH64_testdata[3739] */ + { 1870, 0x0000000000000000ULL, 0xE33A3E826B08855FULL }, /* XSUM_XXH64_testdata[3740] */ + { 1870, 0x000000009E3779B1ULL, 0x57EC447641925F48ULL }, /* XSUM_XXH64_testdata[3741] */ + { 1871, 0x0000000000000000ULL, 0x91F75B9458D06D71ULL }, /* XSUM_XXH64_testdata[3742] */ + { 1871, 0x000000009E3779B1ULL, 0x75A44826FFAB2417ULL }, /* XSUM_XXH64_testdata[3743] */ + { 1872, 0x0000000000000000ULL, 0x67F9F3BCA1F98F91ULL }, /* XSUM_XXH64_testdata[3744] */ + { 1872, 0x000000009E3779B1ULL, 0x7140DE7D50A0F686ULL }, /* XSUM_XXH64_testdata[3745] */ + { 1873, 0x0000000000000000ULL, 0x29FB2618263CC7A5ULL }, /* XSUM_XXH64_testdata[3746] */ + { 1873, 0x000000009E3779B1ULL, 0x390F98420FB3744FULL }, /* XSUM_XXH64_testdata[3747] */ + { 1874, 0x0000000000000000ULL, 0x2FEF3A35EA158263ULL }, /* XSUM_XXH64_testdata[3748] */ + { 1874, 0x000000009E3779B1ULL, 0x47B812A89C42F79FULL }, /* XSUM_XXH64_testdata[3749] */ + { 1875, 0x0000000000000000ULL, 0xD35E467343E1C3EBULL }, /* XSUM_XXH64_testdata[3750] */ + { 1875, 0x000000009E3779B1ULL, 0x470C019EC0977AEBULL }, /* XSUM_XXH64_testdata[3751] */ + { 1876, 0x0000000000000000ULL, 0xD866F27E7D33E219ULL }, /* XSUM_XXH64_testdata[3752] */ + { 1876, 0x000000009E3779B1ULL, 0x7B9C180CDE847FBFULL }, /* XSUM_XXH64_testdata[3753] */ + { 1877, 0x0000000000000000ULL, 0x2F4FE98177598E11ULL }, /* XSUM_XXH64_testdata[3754] */ + { 1877, 0x000000009E3779B1ULL, 0xAB02B72BF07B98D3ULL }, /* XSUM_XXH64_testdata[3755] */ + { 1878, 0x0000000000000000ULL, 0x2A420724B7DFB3B4ULL }, /* XSUM_XXH64_testdata[3756] */ + { 1878, 0x000000009E3779B1ULL, 0x2220B4D002F11057ULL }, /* XSUM_XXH64_testdata[3757] */ + { 1879, 0x0000000000000000ULL, 0x975DA402B27ACDB9ULL }, /* XSUM_XXH64_testdata[3758] */ + { 1879, 0x000000009E3779B1ULL, 0x5A444D678026DE66ULL }, /* XSUM_XXH64_testdata[3759] */ + { 1880, 0x0000000000000000ULL, 0x6454317F3170F18FULL }, /* XSUM_XXH64_testdata[3760] */ + { 1880, 0x000000009E3779B1ULL, 0x0BF5C212FBBFB2B9ULL }, /* XSUM_XXH64_testdata[3761] */ + { 1881, 0x0000000000000000ULL, 0x1996DEE2EE0411F4ULL }, /* XSUM_XXH64_testdata[3762] */ + { 1881, 0x000000009E3779B1ULL, 0xF07AAC423BD2698FULL }, /* XSUM_XXH64_testdata[3763] */ + { 1882, 0x0000000000000000ULL, 0xE3DA0CA62EB2881DULL }, /* XSUM_XXH64_testdata[3764] */ + { 1882, 0x000000009E3779B1ULL, 0xDF5429E239AA2430ULL }, /* XSUM_XXH64_testdata[3765] */ + { 1883, 0x0000000000000000ULL, 0xBEDD401C30B15316ULL }, /* XSUM_XXH64_testdata[3766] */ + { 1883, 0x000000009E3779B1ULL, 0x54AF0513CEF2A9FCULL }, /* XSUM_XXH64_testdata[3767] */ + { 1884, 0x0000000000000000ULL, 0x9E5CB412E4FB4F2CULL }, /* XSUM_XXH64_testdata[3768] */ + { 1884, 0x000000009E3779B1ULL, 0x7380BEC5F8F6BCBEULL }, /* XSUM_XXH64_testdata[3769] */ + { 1885, 0x0000000000000000ULL, 0xBCC7A7AAF9189A73ULL }, /* XSUM_XXH64_testdata[3770] */ + { 1885, 0x000000009E3779B1ULL, 0xD916FB038C5B8A56ULL }, /* XSUM_XXH64_testdata[3771] */ + { 1886, 0x0000000000000000ULL, 0xFF1F7499DA4C60BFULL }, /* XSUM_XXH64_testdata[3772] */ + { 1886, 0x000000009E3779B1ULL, 0x1D69724F18C1D7A0ULL }, /* XSUM_XXH64_testdata[3773] */ + { 1887, 0x0000000000000000ULL, 0xE04F9872D49D7344ULL }, /* XSUM_XXH64_testdata[3774] */ + { 1887, 0x000000009E3779B1ULL, 0xAC821F6DF95BB2B1ULL }, /* XSUM_XXH64_testdata[3775] */ + { 1888, 0x0000000000000000ULL, 0xC5C66830F2119D9EULL }, /* XSUM_XXH64_testdata[3776] */ + { 1888, 0x000000009E3779B1ULL, 0xA4FC5298D9EBB759ULL }, /* XSUM_XXH64_testdata[3777] */ + { 1889, 0x0000000000000000ULL, 0x681BA4449171958CULL }, /* XSUM_XXH64_testdata[3778] */ + { 1889, 0x000000009E3779B1ULL, 0x12E0521ED047B501ULL }, /* XSUM_XXH64_testdata[3779] */ + { 1890, 0x0000000000000000ULL, 0x4E9510238C49AD2FULL }, /* XSUM_XXH64_testdata[3780] */ + { 1890, 0x000000009E3779B1ULL, 0xBA954E0BF88B5829ULL }, /* XSUM_XXH64_testdata[3781] */ + { 1891, 0x0000000000000000ULL, 0xFB5221E42BB0C833ULL }, /* XSUM_XXH64_testdata[3782] */ + { 1891, 0x000000009E3779B1ULL, 0x2AA5F1095C25A2BCULL }, /* XSUM_XXH64_testdata[3783] */ + { 1892, 0x0000000000000000ULL, 0x8E970A1906282CFAULL }, /* XSUM_XXH64_testdata[3784] */ + { 1892, 0x000000009E3779B1ULL, 0xBFC9EBEAF7BA9C55ULL }, /* XSUM_XXH64_testdata[3785] */ + { 1893, 0x0000000000000000ULL, 0x4575D188C3A5152CULL }, /* XSUM_XXH64_testdata[3786] */ + { 1893, 0x000000009E3779B1ULL, 0x42AA1A42C891711AULL }, /* XSUM_XXH64_testdata[3787] */ + { 1894, 0x0000000000000000ULL, 0x4F68CCD0752A3DBBULL }, /* XSUM_XXH64_testdata[3788] */ + { 1894, 0x000000009E3779B1ULL, 0x71E062B6046D5CB9ULL }, /* XSUM_XXH64_testdata[3789] */ + { 1895, 0x0000000000000000ULL, 0xB224B2F6630C6397ULL }, /* XSUM_XXH64_testdata[3790] */ + { 1895, 0x000000009E3779B1ULL, 0xD8CCCD3D84F09463ULL }, /* XSUM_XXH64_testdata[3791] */ + { 1896, 0x0000000000000000ULL, 0x409D41078E0B8250ULL }, /* XSUM_XXH64_testdata[3792] */ + { 1896, 0x000000009E3779B1ULL, 0x469F0A5A48B3AA1EULL }, /* XSUM_XXH64_testdata[3793] */ + { 1897, 0x0000000000000000ULL, 0xEA88E6A7BE7CE0EFULL }, /* XSUM_XXH64_testdata[3794] */ + { 1897, 0x000000009E3779B1ULL, 0xB27CD3B095339B9CULL }, /* XSUM_XXH64_testdata[3795] */ + { 1898, 0x0000000000000000ULL, 0x29D39C1B14C470F8ULL }, /* XSUM_XXH64_testdata[3796] */ + { 1898, 0x000000009E3779B1ULL, 0x0A7CCABF2F95AB4FULL }, /* XSUM_XXH64_testdata[3797] */ + { 1899, 0x0000000000000000ULL, 0x7276FC8C2732236AULL }, /* XSUM_XXH64_testdata[3798] */ + { 1899, 0x000000009E3779B1ULL, 0x0CC2058938976D69ULL }, /* XSUM_XXH64_testdata[3799] */ + { 1900, 0x0000000000000000ULL, 0xA193F2EFD70BA805ULL }, /* XSUM_XXH64_testdata[3800] */ + { 1900, 0x000000009E3779B1ULL, 0x5D0CDC160A8675DDULL }, /* XSUM_XXH64_testdata[3801] */ + { 1901, 0x0000000000000000ULL, 0x61CC8DAE752C620EULL }, /* XSUM_XXH64_testdata[3802] */ + { 1901, 0x000000009E3779B1ULL, 0x973ABA1FD4F6A337ULL }, /* XSUM_XXH64_testdata[3803] */ + { 1902, 0x0000000000000000ULL, 0xA0A19AB5E1E3B64AULL }, /* XSUM_XXH64_testdata[3804] */ + { 1902, 0x000000009E3779B1ULL, 0xC50B5833783C2774ULL }, /* XSUM_XXH64_testdata[3805] */ + { 1903, 0x0000000000000000ULL, 0xE8299E51B678F032ULL }, /* XSUM_XXH64_testdata[3806] */ + { 1903, 0x000000009E3779B1ULL, 0xE1EE9F03CB62A3C6ULL }, /* XSUM_XXH64_testdata[3807] */ + { 1904, 0x0000000000000000ULL, 0x4A30720C9E532B7DULL }, /* XSUM_XXH64_testdata[3808] */ + { 1904, 0x000000009E3779B1ULL, 0x950B36638292336EULL }, /* XSUM_XXH64_testdata[3809] */ + { 1905, 0x0000000000000000ULL, 0x8732252AF5EA79CFULL }, /* XSUM_XXH64_testdata[3810] */ + { 1905, 0x000000009E3779B1ULL, 0xE34EEEEE1668D061ULL }, /* XSUM_XXH64_testdata[3811] */ + { 1906, 0x0000000000000000ULL, 0xECDDE30992D9DEC1ULL }, /* XSUM_XXH64_testdata[3812] */ + { 1906, 0x000000009E3779B1ULL, 0x53A447722B822E76ULL }, /* XSUM_XXH64_testdata[3813] */ + { 1907, 0x0000000000000000ULL, 0xB7E5AADB1BC4AC8BULL }, /* XSUM_XXH64_testdata[3814] */ + { 1907, 0x000000009E3779B1ULL, 0x82F497683FEACCD8ULL }, /* XSUM_XXH64_testdata[3815] */ + { 1908, 0x0000000000000000ULL, 0xD7311D87C9F93721ULL }, /* XSUM_XXH64_testdata[3816] */ + { 1908, 0x000000009E3779B1ULL, 0x51BF57BB18AFFAB4ULL }, /* XSUM_XXH64_testdata[3817] */ + { 1909, 0x0000000000000000ULL, 0x893B2C069A06A810ULL }, /* XSUM_XXH64_testdata[3818] */ + { 1909, 0x000000009E3779B1ULL, 0x0A450D1442501FD1ULL }, /* XSUM_XXH64_testdata[3819] */ + { 1910, 0x0000000000000000ULL, 0x38CB9156B3DE406EULL }, /* XSUM_XXH64_testdata[3820] */ + { 1910, 0x000000009E3779B1ULL, 0xCECCEBA93C6318D6ULL }, /* XSUM_XXH64_testdata[3821] */ + { 1911, 0x0000000000000000ULL, 0x2DA4871734515E8DULL }, /* XSUM_XXH64_testdata[3822] */ + { 1911, 0x000000009E3779B1ULL, 0x5644DD2251463DEEULL }, /* XSUM_XXH64_testdata[3823] */ + { 1912, 0x0000000000000000ULL, 0xD1216FF4E187173BULL }, /* XSUM_XXH64_testdata[3824] */ + { 1912, 0x000000009E3779B1ULL, 0x75F6605758F96652ULL }, /* XSUM_XXH64_testdata[3825] */ + { 1913, 0x0000000000000000ULL, 0xA55106AD72FF20F7ULL }, /* XSUM_XXH64_testdata[3826] */ + { 1913, 0x000000009E3779B1ULL, 0x4C4E77E22AC19C68ULL }, /* XSUM_XXH64_testdata[3827] */ + { 1914, 0x0000000000000000ULL, 0xF2475FD5C8971EDEULL }, /* XSUM_XXH64_testdata[3828] */ + { 1914, 0x000000009E3779B1ULL, 0x7350C8F7A15C7BFBULL }, /* XSUM_XXH64_testdata[3829] */ + { 1915, 0x0000000000000000ULL, 0x9E3EB7DB43AAACC3ULL }, /* XSUM_XXH64_testdata[3830] */ + { 1915, 0x000000009E3779B1ULL, 0x6510016F6BD747CAULL }, /* XSUM_XXH64_testdata[3831] */ + { 1916, 0x0000000000000000ULL, 0xD20A8FC57EABF467ULL }, /* XSUM_XXH64_testdata[3832] */ + { 1916, 0x000000009E3779B1ULL, 0xEFEEC3C059548C34ULL }, /* XSUM_XXH64_testdata[3833] */ + { 1917, 0x0000000000000000ULL, 0x537B84A9E4A2CFC7ULL }, /* XSUM_XXH64_testdata[3834] */ + { 1917, 0x000000009E3779B1ULL, 0xA2201494985BC745ULL }, /* XSUM_XXH64_testdata[3835] */ + { 1918, 0x0000000000000000ULL, 0x5294A1D07CC928B2ULL }, /* XSUM_XXH64_testdata[3836] */ + { 1918, 0x000000009E3779B1ULL, 0xFE7492D9CC08EE91ULL }, /* XSUM_XXH64_testdata[3837] */ + { 1919, 0x0000000000000000ULL, 0xD888A0374241D67DULL }, /* XSUM_XXH64_testdata[3838] */ + { 1919, 0x000000009E3779B1ULL, 0x52F7BE1192F8B0ABULL }, /* XSUM_XXH64_testdata[3839] */ + { 1920, 0x0000000000000000ULL, 0xAA3A4331FBFB9253ULL }, /* XSUM_XXH64_testdata[3840] */ + { 1920, 0x000000009E3779B1ULL, 0xB78B7AC8C44DC573ULL }, /* XSUM_XXH64_testdata[3841] */ + { 1921, 0x0000000000000000ULL, 0x8A55562623C20B73ULL }, /* XSUM_XXH64_testdata[3842] */ + { 1921, 0x000000009E3779B1ULL, 0xD920F4EDFE36E3F5ULL }, /* XSUM_XXH64_testdata[3843] */ + { 1922, 0x0000000000000000ULL, 0x1244034630E45543ULL }, /* XSUM_XXH64_testdata[3844] */ + { 1922, 0x000000009E3779B1ULL, 0x50F2479E6884A940ULL }, /* XSUM_XXH64_testdata[3845] */ + { 1923, 0x0000000000000000ULL, 0xE887672177AC3D01ULL }, /* XSUM_XXH64_testdata[3846] */ + { 1923, 0x000000009E3779B1ULL, 0x049C7CDB2AC31032ULL }, /* XSUM_XXH64_testdata[3847] */ + { 1924, 0x0000000000000000ULL, 0x1ADAC6C8C8DAD1DCULL }, /* XSUM_XXH64_testdata[3848] */ + { 1924, 0x000000009E3779B1ULL, 0x4D40152D5A550466ULL }, /* XSUM_XXH64_testdata[3849] */ + { 1925, 0x0000000000000000ULL, 0x999E55C1CBBB589BULL }, /* XSUM_XXH64_testdata[3850] */ + { 1925, 0x000000009E3779B1ULL, 0x9C0AA49DE94A3E94ULL }, /* XSUM_XXH64_testdata[3851] */ + { 1926, 0x0000000000000000ULL, 0xEDA1333D6075BB82ULL }, /* XSUM_XXH64_testdata[3852] */ + { 1926, 0x000000009E3779B1ULL, 0x144C5654454EF3F9ULL }, /* XSUM_XXH64_testdata[3853] */ + { 1927, 0x0000000000000000ULL, 0xA912F39DDF660890ULL }, /* XSUM_XXH64_testdata[3854] */ + { 1927, 0x000000009E3779B1ULL, 0x117170CF22EB5CAAULL }, /* XSUM_XXH64_testdata[3855] */ + { 1928, 0x0000000000000000ULL, 0xF39D5BCE889B4EF8ULL }, /* XSUM_XXH64_testdata[3856] */ + { 1928, 0x000000009E3779B1ULL, 0x8473A57B4487767DULL }, /* XSUM_XXH64_testdata[3857] */ + { 1929, 0x0000000000000000ULL, 0x78B0C0B645BE305FULL }, /* XSUM_XXH64_testdata[3858] */ + { 1929, 0x000000009E3779B1ULL, 0x4F878D6CDAB1AAE9ULL }, /* XSUM_XXH64_testdata[3859] */ + { 1930, 0x0000000000000000ULL, 0x2E57F3980656C1E4ULL }, /* XSUM_XXH64_testdata[3860] */ + { 1930, 0x000000009E3779B1ULL, 0xD5CCAFD481116352ULL }, /* XSUM_XXH64_testdata[3861] */ + { 1931, 0x0000000000000000ULL, 0x4516616F1D35FF2DULL }, /* XSUM_XXH64_testdata[3862] */ + { 1931, 0x000000009E3779B1ULL, 0xDA186B536C18DCDEULL }, /* XSUM_XXH64_testdata[3863] */ + { 1932, 0x0000000000000000ULL, 0x98DBC2BE1A771D87ULL }, /* XSUM_XXH64_testdata[3864] */ + { 1932, 0x000000009E3779B1ULL, 0xC202F6422D28EF77ULL }, /* XSUM_XXH64_testdata[3865] */ + { 1933, 0x0000000000000000ULL, 0xE9EAC37CF11571CCULL }, /* XSUM_XXH64_testdata[3866] */ + { 1933, 0x000000009E3779B1ULL, 0xA70CB2C1A5CC87EDULL }, /* XSUM_XXH64_testdata[3867] */ + { 1934, 0x0000000000000000ULL, 0x85155A8728EC7D6DULL }, /* XSUM_XXH64_testdata[3868] */ + { 1934, 0x000000009E3779B1ULL, 0x176EA6806965497EULL }, /* XSUM_XXH64_testdata[3869] */ + { 1935, 0x0000000000000000ULL, 0xCF04A6647082FE76ULL }, /* XSUM_XXH64_testdata[3870] */ + { 1935, 0x000000009E3779B1ULL, 0x26A991B9518896C7ULL }, /* XSUM_XXH64_testdata[3871] */ + { 1936, 0x0000000000000000ULL, 0x23D3266C6C71FF2AULL }, /* XSUM_XXH64_testdata[3872] */ + { 1936, 0x000000009E3779B1ULL, 0xEEF61E4054BD033AULL }, /* XSUM_XXH64_testdata[3873] */ + { 1937, 0x0000000000000000ULL, 0x8428AC7F24DAC012ULL }, /* XSUM_XXH64_testdata[3874] */ + { 1937, 0x000000009E3779B1ULL, 0xA3951A07D9E6417DULL }, /* XSUM_XXH64_testdata[3875] */ + { 1938, 0x0000000000000000ULL, 0x688DBBD59ABD11E0ULL }, /* XSUM_XXH64_testdata[3876] */ + { 1938, 0x000000009E3779B1ULL, 0x09780B80B2A7B063ULL }, /* XSUM_XXH64_testdata[3877] */ + { 1939, 0x0000000000000000ULL, 0x89D94BFD2170692FULL }, /* XSUM_XXH64_testdata[3878] */ + { 1939, 0x000000009E3779B1ULL, 0x61E2AE56DA6B4DF8ULL }, /* XSUM_XXH64_testdata[3879] */ + { 1940, 0x0000000000000000ULL, 0x2EAE10D307800B7CULL }, /* XSUM_XXH64_testdata[3880] */ + { 1940, 0x000000009E3779B1ULL, 0x4BA2D93551E4276EULL }, /* XSUM_XXH64_testdata[3881] */ + { 1941, 0x0000000000000000ULL, 0x20AB4C7DC9ADD088ULL }, /* XSUM_XXH64_testdata[3882] */ + { 1941, 0x000000009E3779B1ULL, 0x0B8F7EF29FD0F005ULL }, /* XSUM_XXH64_testdata[3883] */ + { 1942, 0x0000000000000000ULL, 0xA4B7BA7CC53C3F67ULL }, /* XSUM_XXH64_testdata[3884] */ + { 1942, 0x000000009E3779B1ULL, 0xF82EABF938492265ULL }, /* XSUM_XXH64_testdata[3885] */ + { 1943, 0x0000000000000000ULL, 0x6DBF7A2FBCC0D6EFULL }, /* XSUM_XXH64_testdata[3886] */ + { 1943, 0x000000009E3779B1ULL, 0x910DA317A1674C64ULL }, /* XSUM_XXH64_testdata[3887] */ + { 1944, 0x0000000000000000ULL, 0xC817FCD2CBAFE750ULL }, /* XSUM_XXH64_testdata[3888] */ + { 1944, 0x000000009E3779B1ULL, 0xAA77E3610948AC81ULL }, /* XSUM_XXH64_testdata[3889] */ + { 1945, 0x0000000000000000ULL, 0x5FE7345255630096ULL }, /* XSUM_XXH64_testdata[3890] */ + { 1945, 0x000000009E3779B1ULL, 0xE749917062D92DE7ULL }, /* XSUM_XXH64_testdata[3891] */ + { 1946, 0x0000000000000000ULL, 0xE331D9E9299AADE8ULL }, /* XSUM_XXH64_testdata[3892] */ + { 1946, 0x000000009E3779B1ULL, 0x7BB4C81772B72580ULL }, /* XSUM_XXH64_testdata[3893] */ + { 1947, 0x0000000000000000ULL, 0x6AD92255D909ADFEULL }, /* XSUM_XXH64_testdata[3894] */ + { 1947, 0x000000009E3779B1ULL, 0x705C8D49236F29EDULL }, /* XSUM_XXH64_testdata[3895] */ + { 1948, 0x0000000000000000ULL, 0xAF80A33543B24E74ULL }, /* XSUM_XXH64_testdata[3896] */ + { 1948, 0x000000009E3779B1ULL, 0x8CE985712CDED01DULL }, /* XSUM_XXH64_testdata[3897] */ + { 1949, 0x0000000000000000ULL, 0x1A9A50D9743F2CFBULL }, /* XSUM_XXH64_testdata[3898] */ + { 1949, 0x000000009E3779B1ULL, 0xDD1B5EDF471B43AEULL }, /* XSUM_XXH64_testdata[3899] */ + { 1950, 0x0000000000000000ULL, 0xB23316DCFC81CCE9ULL }, /* XSUM_XXH64_testdata[3900] */ + { 1950, 0x000000009E3779B1ULL, 0x65A71ED6591E8982ULL }, /* XSUM_XXH64_testdata[3901] */ + { 1951, 0x0000000000000000ULL, 0x02ECCECBB39F953EULL }, /* XSUM_XXH64_testdata[3902] */ + { 1951, 0x000000009E3779B1ULL, 0x352A3F5F8390B079ULL }, /* XSUM_XXH64_testdata[3903] */ + { 1952, 0x0000000000000000ULL, 0x4B9DBE938BE2BBC2ULL }, /* XSUM_XXH64_testdata[3904] */ + { 1952, 0x000000009E3779B1ULL, 0xBF092C83744F1D7BULL }, /* XSUM_XXH64_testdata[3905] */ + { 1953, 0x0000000000000000ULL, 0xC85DB2749C4ACC47ULL }, /* XSUM_XXH64_testdata[3906] */ + { 1953, 0x000000009E3779B1ULL, 0xC5AA2240F4A7991CULL }, /* XSUM_XXH64_testdata[3907] */ + { 1954, 0x0000000000000000ULL, 0x83296B902D443812ULL }, /* XSUM_XXH64_testdata[3908] */ + { 1954, 0x000000009E3779B1ULL, 0x7D7A444F595EE483ULL }, /* XSUM_XXH64_testdata[3909] */ + { 1955, 0x0000000000000000ULL, 0x1ACC00E9129B7D59ULL }, /* XSUM_XXH64_testdata[3910] */ + { 1955, 0x000000009E3779B1ULL, 0x05BE7458D58E40A4ULL }, /* XSUM_XXH64_testdata[3911] */ + { 1956, 0x0000000000000000ULL, 0x2D994C6301AC08ACULL }, /* XSUM_XXH64_testdata[3912] */ + { 1956, 0x000000009E3779B1ULL, 0x15E6435017A01DE2ULL }, /* XSUM_XXH64_testdata[3913] */ + { 1957, 0x0000000000000000ULL, 0xD9EA1E578DC991B5ULL }, /* XSUM_XXH64_testdata[3914] */ + { 1957, 0x000000009E3779B1ULL, 0x94E049848E9F64C9ULL }, /* XSUM_XXH64_testdata[3915] */ + { 1958, 0x0000000000000000ULL, 0x78CEF1BA0440649BULL }, /* XSUM_XXH64_testdata[3916] */ + { 1958, 0x000000009E3779B1ULL, 0x6C882F0C1CF8028EULL }, /* XSUM_XXH64_testdata[3917] */ + { 1959, 0x0000000000000000ULL, 0x329FB8413C9058DBULL }, /* XSUM_XXH64_testdata[3918] */ + { 1959, 0x000000009E3779B1ULL, 0x78C774AB8CFFFD21ULL }, /* XSUM_XXH64_testdata[3919] */ + { 1960, 0x0000000000000000ULL, 0x17428B7B845AC341ULL }, /* XSUM_XXH64_testdata[3920] */ + { 1960, 0x000000009E3779B1ULL, 0xDD61181F6611204CULL }, /* XSUM_XXH64_testdata[3921] */ + { 1961, 0x0000000000000000ULL, 0xD745F8EF20D58947ULL }, /* XSUM_XXH64_testdata[3922] */ + { 1961, 0x000000009E3779B1ULL, 0xF46BF355CCACFBDCULL }, /* XSUM_XXH64_testdata[3923] */ + { 1962, 0x0000000000000000ULL, 0x58DC08544B290C03ULL }, /* XSUM_XXH64_testdata[3924] */ + { 1962, 0x000000009E3779B1ULL, 0x0D7F75871539BFA0ULL }, /* XSUM_XXH64_testdata[3925] */ + { 1963, 0x0000000000000000ULL, 0x5580F80FE25E642DULL }, /* XSUM_XXH64_testdata[3926] */ + { 1963, 0x000000009E3779B1ULL, 0x2866096338373E52ULL }, /* XSUM_XXH64_testdata[3927] */ + { 1964, 0x0000000000000000ULL, 0x5CCA0BC526A9C3BDULL }, /* XSUM_XXH64_testdata[3928] */ + { 1964, 0x000000009E3779B1ULL, 0x614943C253C46CC1ULL }, /* XSUM_XXH64_testdata[3929] */ + { 1965, 0x0000000000000000ULL, 0x3D80DFF7A798BE56ULL }, /* XSUM_XXH64_testdata[3930] */ + { 1965, 0x000000009E3779B1ULL, 0x200D8CC2426C8C6EULL }, /* XSUM_XXH64_testdata[3931] */ + { 1966, 0x0000000000000000ULL, 0x09509DE6E6B24C25ULL }, /* XSUM_XXH64_testdata[3932] */ + { 1966, 0x000000009E3779B1ULL, 0x750D6423ABB6BE0CULL }, /* XSUM_XXH64_testdata[3933] */ + { 1967, 0x0000000000000000ULL, 0x302C505B14EF6D5DULL }, /* XSUM_XXH64_testdata[3934] */ + { 1967, 0x000000009E3779B1ULL, 0xBE588C12741DF4FDULL }, /* XSUM_XXH64_testdata[3935] */ + { 1968, 0x0000000000000000ULL, 0xBBEFAE279DA04E62ULL }, /* XSUM_XXH64_testdata[3936] */ + { 1968, 0x000000009E3779B1ULL, 0x87FE20E0B3EDE474ULL }, /* XSUM_XXH64_testdata[3937] */ + { 1969, 0x0000000000000000ULL, 0xD37E7E583D7775E2ULL }, /* XSUM_XXH64_testdata[3938] */ + { 1969, 0x000000009E3779B1ULL, 0x4AB1C29A196EE7FFULL }, /* XSUM_XXH64_testdata[3939] */ + { 1970, 0x0000000000000000ULL, 0x809FBD5697D7D9AAULL }, /* XSUM_XXH64_testdata[3940] */ + { 1970, 0x000000009E3779B1ULL, 0xCF4FC79D89D9CA91ULL }, /* XSUM_XXH64_testdata[3941] */ + { 1971, 0x0000000000000000ULL, 0xE68AACB19FA51DBFULL }, /* XSUM_XXH64_testdata[3942] */ + { 1971, 0x000000009E3779B1ULL, 0xC89AF0ABBB0B5079ULL }, /* XSUM_XXH64_testdata[3943] */ + { 1972, 0x0000000000000000ULL, 0x8AEBA0D906EA87DCULL }, /* XSUM_XXH64_testdata[3944] */ + { 1972, 0x000000009E3779B1ULL, 0xE232F48721B619F7ULL }, /* XSUM_XXH64_testdata[3945] */ + { 1973, 0x0000000000000000ULL, 0xDD791CC66475568EULL }, /* XSUM_XXH64_testdata[3946] */ + { 1973, 0x000000009E3779B1ULL, 0xCEEF7A9275FBA21CULL }, /* XSUM_XXH64_testdata[3947] */ + { 1974, 0x0000000000000000ULL, 0x904F000BA52402B4ULL }, /* XSUM_XXH64_testdata[3948] */ + { 1974, 0x000000009E3779B1ULL, 0x9414203BBEC1C96FULL }, /* XSUM_XXH64_testdata[3949] */ + { 1975, 0x0000000000000000ULL, 0x4C0F3B496D570402ULL }, /* XSUM_XXH64_testdata[3950] */ + { 1975, 0x000000009E3779B1ULL, 0x06EEC96A1DD0B4E6ULL }, /* XSUM_XXH64_testdata[3951] */ + { 1976, 0x0000000000000000ULL, 0x78A0A17A42C2D78AULL }, /* XSUM_XXH64_testdata[3952] */ + { 1976, 0x000000009E3779B1ULL, 0x50BFA0D736C207BEULL }, /* XSUM_XXH64_testdata[3953] */ + { 1977, 0x0000000000000000ULL, 0xCC92F434D4F6AAACULL }, /* XSUM_XXH64_testdata[3954] */ + { 1977, 0x000000009E3779B1ULL, 0xC892260DEFC04D2DULL }, /* XSUM_XXH64_testdata[3955] */ + { 1978, 0x0000000000000000ULL, 0xAE8BCDEA8C45C2FAULL }, /* XSUM_XXH64_testdata[3956] */ + { 1978, 0x000000009E3779B1ULL, 0x3E98A1573B2DCF2BULL }, /* XSUM_XXH64_testdata[3957] */ + { 1979, 0x0000000000000000ULL, 0xACA3FFFA93EA3C50ULL }, /* XSUM_XXH64_testdata[3958] */ + { 1979, 0x000000009E3779B1ULL, 0x9DB5CDE739411A64ULL }, /* XSUM_XXH64_testdata[3959] */ + { 1980, 0x0000000000000000ULL, 0x96C2D9479421FE62ULL }, /* XSUM_XXH64_testdata[3960] */ + { 1980, 0x000000009E3779B1ULL, 0xAD212FC0F390B219ULL }, /* XSUM_XXH64_testdata[3961] */ + { 1981, 0x0000000000000000ULL, 0xE98226F8F02EFD75ULL }, /* XSUM_XXH64_testdata[3962] */ + { 1981, 0x000000009E3779B1ULL, 0x7E9FA16D1DD08599ULL }, /* XSUM_XXH64_testdata[3963] */ + { 1982, 0x0000000000000000ULL, 0xA65E553BD359B07EULL }, /* XSUM_XXH64_testdata[3964] */ + { 1982, 0x000000009E3779B1ULL, 0x965C1A012957492EULL }, /* XSUM_XXH64_testdata[3965] */ + { 1983, 0x0000000000000000ULL, 0x88C25C2A304214F8ULL }, /* XSUM_XXH64_testdata[3966] */ + { 1983, 0x000000009E3779B1ULL, 0x09D47FC7FAD17081ULL }, /* XSUM_XXH64_testdata[3967] */ + { 1984, 0x0000000000000000ULL, 0xD67A96D6F1D56487ULL }, /* XSUM_XXH64_testdata[3968] */ + { 1984, 0x000000009E3779B1ULL, 0x332368D129DB8298ULL }, /* XSUM_XXH64_testdata[3969] */ + { 1985, 0x0000000000000000ULL, 0xCD3E5C6902A97395ULL }, /* XSUM_XXH64_testdata[3970] */ + { 1985, 0x000000009E3779B1ULL, 0xE9B7E0E8F2959B87ULL }, /* XSUM_XXH64_testdata[3971] */ + { 1986, 0x0000000000000000ULL, 0x1FC418BBB40177DAULL }, /* XSUM_XXH64_testdata[3972] */ + { 1986, 0x000000009E3779B1ULL, 0x193738968EBD6626ULL }, /* XSUM_XXH64_testdata[3973] */ + { 1987, 0x0000000000000000ULL, 0x1889E59C0549E0B0ULL }, /* XSUM_XXH64_testdata[3974] */ + { 1987, 0x000000009E3779B1ULL, 0x115F75C5C1F6A537ULL }, /* XSUM_XXH64_testdata[3975] */ + { 1988, 0x0000000000000000ULL, 0x2BF40954EAF218EAULL }, /* XSUM_XXH64_testdata[3976] */ + { 1988, 0x000000009E3779B1ULL, 0x4F739C5580C0F3E3ULL }, /* XSUM_XXH64_testdata[3977] */ + { 1989, 0x0000000000000000ULL, 0x0A4828AF9D5B8AFDULL }, /* XSUM_XXH64_testdata[3978] */ + { 1989, 0x000000009E3779B1ULL, 0x9EAFAE02A89A4AF2ULL }, /* XSUM_XXH64_testdata[3979] */ + { 1990, 0x0000000000000000ULL, 0x66AE938ABE8C0CC5ULL }, /* XSUM_XXH64_testdata[3980] */ + { 1990, 0x000000009E3779B1ULL, 0xB5DC6233ABF8B4BCULL }, /* XSUM_XXH64_testdata[3981] */ + { 1991, 0x0000000000000000ULL, 0xFA8FB6CC100885E3ULL }, /* XSUM_XXH64_testdata[3982] */ + { 1991, 0x000000009E3779B1ULL, 0x6E02C0E3382D578CULL }, /* XSUM_XXH64_testdata[3983] */ + { 1992, 0x0000000000000000ULL, 0x749C36F3AEFA2C1EULL }, /* XSUM_XXH64_testdata[3984] */ + { 1992, 0x000000009E3779B1ULL, 0xC4F641C0C8D5F970ULL }, /* XSUM_XXH64_testdata[3985] */ + { 1993, 0x0000000000000000ULL, 0xC9CD385C074B4222ULL }, /* XSUM_XXH64_testdata[3986] */ + { 1993, 0x000000009E3779B1ULL, 0x2D45B405309A44D2ULL }, /* XSUM_XXH64_testdata[3987] */ + { 1994, 0x0000000000000000ULL, 0xB7E091603B400C8FULL }, /* XSUM_XXH64_testdata[3988] */ + { 1994, 0x000000009E3779B1ULL, 0xB93DD93AB556697DULL }, /* XSUM_XXH64_testdata[3989] */ + { 1995, 0x0000000000000000ULL, 0xFE0A6A79BB0C0EFDULL }, /* XSUM_XXH64_testdata[3990] */ + { 1995, 0x000000009E3779B1ULL, 0x642687CAE0CCA424ULL }, /* XSUM_XXH64_testdata[3991] */ + { 1996, 0x0000000000000000ULL, 0xDC49CAF48A9AFEF6ULL }, /* XSUM_XXH64_testdata[3992] */ + { 1996, 0x000000009E3779B1ULL, 0x7466B8231FB6C767ULL }, /* XSUM_XXH64_testdata[3993] */ + { 1997, 0x0000000000000000ULL, 0x6269E02B71E7624EULL }, /* XSUM_XXH64_testdata[3994] */ + { 1997, 0x000000009E3779B1ULL, 0x8FD9E352DCC5C664ULL }, /* XSUM_XXH64_testdata[3995] */ + { 1998, 0x0000000000000000ULL, 0x50C7D18C6AFAD885ULL }, /* XSUM_XXH64_testdata[3996] */ + { 1998, 0x000000009E3779B1ULL, 0xF4C7282BD3EC8313ULL }, /* XSUM_XXH64_testdata[3997] */ + { 1999, 0x0000000000000000ULL, 0xD153742553898C04ULL }, /* XSUM_XXH64_testdata[3998] */ + { 1999, 0x000000009E3779B1ULL, 0xC3DBDEEE307F5628ULL }, /* XSUM_XXH64_testdata[3999] */ + { 2000, 0x0000000000000000ULL, 0x62654B255049664BULL }, /* XSUM_XXH64_testdata[4000] */ + { 2000, 0x000000009E3779B1ULL, 0x9BA1C02E581B8E86ULL }, /* XSUM_XXH64_testdata[4001] */ + { 2001, 0x0000000000000000ULL, 0x769143921AA83703ULL }, /* XSUM_XXH64_testdata[4002] */ + { 2001, 0x000000009E3779B1ULL, 0xD7871173B036D41EULL }, /* XSUM_XXH64_testdata[4003] */ + { 2002, 0x0000000000000000ULL, 0xF8F15E36A0BA9379ULL }, /* XSUM_XXH64_testdata[4004] */ + { 2002, 0x000000009E3779B1ULL, 0x6F77C90391E133E3ULL }, /* XSUM_XXH64_testdata[4005] */ + { 2003, 0x0000000000000000ULL, 0xF4753A24B037ADEEULL }, /* XSUM_XXH64_testdata[4006] */ + { 2003, 0x000000009E3779B1ULL, 0xF635B761B94B7AB0ULL }, /* XSUM_XXH64_testdata[4007] */ + { 2004, 0x0000000000000000ULL, 0x82A636472C34B9CEULL }, /* XSUM_XXH64_testdata[4008] */ + { 2004, 0x000000009E3779B1ULL, 0x8AB07CA205817C51ULL }, /* XSUM_XXH64_testdata[4009] */ + { 2005, 0x0000000000000000ULL, 0x3F9121198180FAE5ULL }, /* XSUM_XXH64_testdata[4010] */ + { 2005, 0x000000009E3779B1ULL, 0xB775561D23D7C05DULL }, /* XSUM_XXH64_testdata[4011] */ + { 2006, 0x0000000000000000ULL, 0xB9D32E9BE873529CULL }, /* XSUM_XXH64_testdata[4012] */ + { 2006, 0x000000009E3779B1ULL, 0xCC5B1AD22833E947ULL }, /* XSUM_XXH64_testdata[4013] */ + { 2007, 0x0000000000000000ULL, 0x0C932553C82F899CULL }, /* XSUM_XXH64_testdata[4014] */ + { 2007, 0x000000009E3779B1ULL, 0xF6251CA5EFC71C4DULL }, /* XSUM_XXH64_testdata[4015] */ + { 2008, 0x0000000000000000ULL, 0xCEEC6128C3F727ABULL }, /* XSUM_XXH64_testdata[4016] */ + { 2008, 0x000000009E3779B1ULL, 0x7CEB10301B8AAF9CULL }, /* XSUM_XXH64_testdata[4017] */ + { 2009, 0x0000000000000000ULL, 0xB4064FE1B4D918BFULL }, /* XSUM_XXH64_testdata[4018] */ + { 2009, 0x000000009E3779B1ULL, 0x496D3FFFE987FE93ULL }, /* XSUM_XXH64_testdata[4019] */ + { 2010, 0x0000000000000000ULL, 0x2E63AAFBE6D4236FULL }, /* XSUM_XXH64_testdata[4020] */ + { 2010, 0x000000009E3779B1ULL, 0xFA118923A1211202ULL }, /* XSUM_XXH64_testdata[4021] */ + { 2011, 0x0000000000000000ULL, 0xEBB9A25FBE1B2793ULL }, /* XSUM_XXH64_testdata[4022] */ + { 2011, 0x000000009E3779B1ULL, 0xF1C55CB6255ADE6EULL }, /* XSUM_XXH64_testdata[4023] */ + { 2012, 0x0000000000000000ULL, 0xABAF4AE292BF3613ULL }, /* XSUM_XXH64_testdata[4024] */ + { 2012, 0x000000009E3779B1ULL, 0xE5F7F374402B1E63ULL }, /* XSUM_XXH64_testdata[4025] */ + { 2013, 0x0000000000000000ULL, 0xC52E8E4828D404E5ULL }, /* XSUM_XXH64_testdata[4026] */ + { 2013, 0x000000009E3779B1ULL, 0x68B92FBFD9DB16E5ULL }, /* XSUM_XXH64_testdata[4027] */ + { 2014, 0x0000000000000000ULL, 0x0CF0D3FF2E7A281EULL }, /* XSUM_XXH64_testdata[4028] */ + { 2014, 0x000000009E3779B1ULL, 0x9C0F43C768EB5913ULL }, /* XSUM_XXH64_testdata[4029] */ + { 2015, 0x0000000000000000ULL, 0xE89A5F20ABEBE285ULL }, /* XSUM_XXH64_testdata[4030] */ + { 2015, 0x000000009E3779B1ULL, 0x0D56487C1EE09E3AULL }, /* XSUM_XXH64_testdata[4031] */ + { 2016, 0x0000000000000000ULL, 0x5F64A682689F51B2ULL }, /* XSUM_XXH64_testdata[4032] */ + { 2016, 0x000000009E3779B1ULL, 0xDF3FE4AE31B14AE2ULL }, /* XSUM_XXH64_testdata[4033] */ + { 2017, 0x0000000000000000ULL, 0x861F1A605A776FE5ULL }, /* XSUM_XXH64_testdata[4034] */ + { 2017, 0x000000009E3779B1ULL, 0x1D89140B4E17FF8FULL }, /* XSUM_XXH64_testdata[4035] */ + { 2018, 0x0000000000000000ULL, 0x8B89AE50463E5002ULL }, /* XSUM_XXH64_testdata[4036] */ + { 2018, 0x000000009E3779B1ULL, 0xFB200A46D72495DFULL }, /* XSUM_XXH64_testdata[4037] */ + { 2019, 0x0000000000000000ULL, 0x48E95E7E0DC0718FULL }, /* XSUM_XXH64_testdata[4038] */ + { 2019, 0x000000009E3779B1ULL, 0xE93B4484585B45EBULL }, /* XSUM_XXH64_testdata[4039] */ + { 2020, 0x0000000000000000ULL, 0xEED08765D07D8EEAULL }, /* XSUM_XXH64_testdata[4040] */ + { 2020, 0x000000009E3779B1ULL, 0xF262B86DC747B84AULL }, /* XSUM_XXH64_testdata[4041] */ + { 2021, 0x0000000000000000ULL, 0xF8B301686BFD6BC4ULL }, /* XSUM_XXH64_testdata[4042] */ + { 2021, 0x000000009E3779B1ULL, 0x0B6749E914F6116FULL }, /* XSUM_XXH64_testdata[4043] */ + { 2022, 0x0000000000000000ULL, 0x84B34BA156A0FB3DULL }, /* XSUM_XXH64_testdata[4044] */ + { 2022, 0x000000009E3779B1ULL, 0x64EEC7F22F613130ULL }, /* XSUM_XXH64_testdata[4045] */ + { 2023, 0x0000000000000000ULL, 0xD70DBB507CB28689ULL }, /* XSUM_XXH64_testdata[4046] */ + { 2023, 0x000000009E3779B1ULL, 0xF23DDD59C8B8FF0FULL }, /* XSUM_XXH64_testdata[4047] */ + { 2024, 0x0000000000000000ULL, 0xD169C56FBCB4C80AULL }, /* XSUM_XXH64_testdata[4048] */ + { 2024, 0x000000009E3779B1ULL, 0x5DAE692A30FB7A95ULL }, /* XSUM_XXH64_testdata[4049] */ + { 2025, 0x0000000000000000ULL, 0x65273D02D09FC508ULL }, /* XSUM_XXH64_testdata[4050] */ + { 2025, 0x000000009E3779B1ULL, 0xB3E3ED1BECDC13E5ULL }, /* XSUM_XXH64_testdata[4051] */ + { 2026, 0x0000000000000000ULL, 0xA57A15E674AD9C18ULL }, /* XSUM_XXH64_testdata[4052] */ + { 2026, 0x000000009E3779B1ULL, 0xFD9F0F8647CA0488ULL }, /* XSUM_XXH64_testdata[4053] */ + { 2027, 0x0000000000000000ULL, 0x0836EFECCAD6CDE6ULL }, /* XSUM_XXH64_testdata[4054] */ + { 2027, 0x000000009E3779B1ULL, 0xC704F8E26F95456BULL }, /* XSUM_XXH64_testdata[4055] */ + { 2028, 0x0000000000000000ULL, 0x5109653FB07433C4ULL }, /* XSUM_XXH64_testdata[4056] */ + { 2028, 0x000000009E3779B1ULL, 0xF86EC1FB54DEA364ULL }, /* XSUM_XXH64_testdata[4057] */ + { 2029, 0x0000000000000000ULL, 0xDE17AD18E05B5D9FULL }, /* XSUM_XXH64_testdata[4058] */ + { 2029, 0x000000009E3779B1ULL, 0xC7D54E5E728CD2ABULL }, /* XSUM_XXH64_testdata[4059] */ + { 2030, 0x0000000000000000ULL, 0x8FA6E3EC12FC2614ULL }, /* XSUM_XXH64_testdata[4060] */ + { 2030, 0x000000009E3779B1ULL, 0xE8069626E1A34CFAULL }, /* XSUM_XXH64_testdata[4061] */ + { 2031, 0x0000000000000000ULL, 0x53A7FB12D7C29015ULL }, /* XSUM_XXH64_testdata[4062] */ + { 2031, 0x000000009E3779B1ULL, 0xF31EE53CA68855B1ULL }, /* XSUM_XXH64_testdata[4063] */ + { 2032, 0x0000000000000000ULL, 0x5037DAC3E92AF969ULL }, /* XSUM_XXH64_testdata[4064] */ + { 2032, 0x000000009E3779B1ULL, 0xFCC3E06DAC012EB5ULL }, /* XSUM_XXH64_testdata[4065] */ + { 2033, 0x0000000000000000ULL, 0xFB2923BD783FEDA5ULL }, /* XSUM_XXH64_testdata[4066] */ + { 2033, 0x000000009E3779B1ULL, 0xE05D022642B48D13ULL }, /* XSUM_XXH64_testdata[4067] */ + { 2034, 0x0000000000000000ULL, 0xDFB31A67FB10933EULL }, /* XSUM_XXH64_testdata[4068] */ + { 2034, 0x000000009E3779B1ULL, 0x852CF923EF8BE2F0ULL }, /* XSUM_XXH64_testdata[4069] */ + { 2035, 0x0000000000000000ULL, 0x08527FCC79A4DFBFULL }, /* XSUM_XXH64_testdata[4070] */ + { 2035, 0x000000009E3779B1ULL, 0xFD570904132AA5E3ULL }, /* XSUM_XXH64_testdata[4071] */ + { 2036, 0x0000000000000000ULL, 0x144C7742AAB6A290ULL }, /* XSUM_XXH64_testdata[4072] */ + { 2036, 0x000000009E3779B1ULL, 0xF55A2D158DE6EC7DULL }, /* XSUM_XXH64_testdata[4073] */ + { 2037, 0x0000000000000000ULL, 0x4E1EC8207BFBEBB7ULL }, /* XSUM_XXH64_testdata[4074] */ + { 2037, 0x000000009E3779B1ULL, 0xFFB8A8934DBCAF36ULL }, /* XSUM_XXH64_testdata[4075] */ + { 2038, 0x0000000000000000ULL, 0xA9B1B6F67D7C4816ULL }, /* XSUM_XXH64_testdata[4076] */ + { 2038, 0x000000009E3779B1ULL, 0xDD890F871F5693B5ULL }, /* XSUM_XXH64_testdata[4077] */ + { 2039, 0x0000000000000000ULL, 0x29007A28BF5318F7ULL }, /* XSUM_XXH64_testdata[4078] */ + { 2039, 0x000000009E3779B1ULL, 0x3A4120FEA87D4E21ULL }, /* XSUM_XXH64_testdata[4079] */ + { 2040, 0x0000000000000000ULL, 0x5A05EF977D7BC520ULL }, /* XSUM_XXH64_testdata[4080] */ + { 2040, 0x000000009E3779B1ULL, 0x2CC20C74CF6B0E02ULL }, /* XSUM_XXH64_testdata[4081] */ + { 2041, 0x0000000000000000ULL, 0x619A7CACBED025DEULL }, /* XSUM_XXH64_testdata[4082] */ + { 2041, 0x000000009E3779B1ULL, 0x1A59057461DD07CAULL }, /* XSUM_XXH64_testdata[4083] */ + { 2042, 0x0000000000000000ULL, 0x90727221C4FE5BC5ULL }, /* XSUM_XXH64_testdata[4084] */ + { 2042, 0x000000009E3779B1ULL, 0x223094D8DBB3B150ULL }, /* XSUM_XXH64_testdata[4085] */ + { 2043, 0x0000000000000000ULL, 0xBE189C3B1A1ED2BEULL }, /* XSUM_XXH64_testdata[4086] */ + { 2043, 0x000000009E3779B1ULL, 0xA6C67750B09F8BABULL }, /* XSUM_XXH64_testdata[4087] */ + { 2044, 0x0000000000000000ULL, 0xB0A69EF01EF46139ULL }, /* XSUM_XXH64_testdata[4088] */ + { 2044, 0x000000009E3779B1ULL, 0xD939082D6D712291ULL }, /* XSUM_XXH64_testdata[4089] */ + { 2045, 0x0000000000000000ULL, 0x0CCC28FE6CDBF1A1ULL }, /* XSUM_XXH64_testdata[4090] */ + { 2045, 0x000000009E3779B1ULL, 0x73AE77047960B98CULL }, /* XSUM_XXH64_testdata[4091] */ + { 2046, 0x0000000000000000ULL, 0x478701CD7434C1F8ULL }, /* XSUM_XXH64_testdata[4092] */ + { 2046, 0x000000009E3779B1ULL, 0x1C03B8F3FDEE6D82ULL }, /* XSUM_XXH64_testdata[4093] */ + { 2047, 0x0000000000000000ULL, 0xF3A36F0A22C9E50AULL }, /* XSUM_XXH64_testdata[4094] */ + { 2047, 0x000000009E3779B1ULL, 0x2B5F2FBEA26C36DDULL }, /* XSUM_XXH64_testdata[4095] */ + { 2048, 0x0000000000000000ULL, 0x5940F2752BC04387ULL }, /* XSUM_XXH64_testdata[4096] */ + { 2048, 0x000000009E3779B1ULL, 0xAA26F33C2898013BULL }, /* XSUM_XXH64_testdata[4097] */ + { 2049, 0x0000000000000000ULL, 0x3BAC0FEF077CBFB5ULL }, /* XSUM_XXH64_testdata[4098] */ + { 2049, 0x000000009E3779B1ULL, 0x30123FD816C47DB7ULL }, /* XSUM_XXH64_testdata[4099] */ + { 2050, 0x0000000000000000ULL, 0x0044521A47BD8036ULL }, /* XSUM_XXH64_testdata[4100] */ + { 2050, 0x000000009E3779B1ULL, 0x6AC6CB2EBF59FD14ULL }, /* XSUM_XXH64_testdata[4101] */ + { 2051, 0x0000000000000000ULL, 0x84CB9FF208C3DE57ULL }, /* XSUM_XXH64_testdata[4102] */ + { 2051, 0x000000009E3779B1ULL, 0x6152B5430967FF6FULL }, /* XSUM_XXH64_testdata[4103] */ + { 2052, 0x0000000000000000ULL, 0x9D7CFAEECDC80D1AULL }, /* XSUM_XXH64_testdata[4104] */ + { 2052, 0x000000009E3779B1ULL, 0x181A17301EF72248ULL }, /* XSUM_XXH64_testdata[4105] */ + { 2053, 0x0000000000000000ULL, 0x0033894BA28C94FDULL }, /* XSUM_XXH64_testdata[4106] */ + { 2053, 0x000000009E3779B1ULL, 0x52A8A9E1B840782AULL }, /* XSUM_XXH64_testdata[4107] */ + { 2054, 0x0000000000000000ULL, 0x23DBA47C635F0B49ULL }, /* XSUM_XXH64_testdata[4108] */ + { 2054, 0x000000009E3779B1ULL, 0x3E92E5CA81EC20E6ULL }, /* XSUM_XXH64_testdata[4109] */ + { 2055, 0x0000000000000000ULL, 0x72207DF802398ED1ULL }, /* XSUM_XXH64_testdata[4110] */ + { 2055, 0x000000009E3779B1ULL, 0xFAA76E7407555C3CULL }, /* XSUM_XXH64_testdata[4111] */ + { 2056, 0x0000000000000000ULL, 0xBA34840EDA22A84BULL }, /* XSUM_XXH64_testdata[4112] */ + { 2056, 0x000000009E3779B1ULL, 0x839C2E5D42D7B646ULL }, /* XSUM_XXH64_testdata[4113] */ + { 2057, 0x0000000000000000ULL, 0xA821C86122AA5E90ULL }, /* XSUM_XXH64_testdata[4114] */ + { 2057, 0x000000009E3779B1ULL, 0x6CCEFE4854DE62A1ULL }, /* XSUM_XXH64_testdata[4115] */ + { 2058, 0x0000000000000000ULL, 0xAA54141DD94F60F4ULL }, /* XSUM_XXH64_testdata[4116] */ + { 2058, 0x000000009E3779B1ULL, 0x3EBBF00BA988AAA9ULL }, /* XSUM_XXH64_testdata[4117] */ + { 2059, 0x0000000000000000ULL, 0x9CFFA3E6D4EF856BULL }, /* XSUM_XXH64_testdata[4118] */ + { 2059, 0x000000009E3779B1ULL, 0xE97359B7C016054DULL }, /* XSUM_XXH64_testdata[4119] */ + { 2060, 0x0000000000000000ULL, 0x1096E5FEF0CEF2B7ULL }, /* XSUM_XXH64_testdata[4120] */ + { 2060, 0x000000009E3779B1ULL, 0x91674731DCAC45A9ULL }, /* XSUM_XXH64_testdata[4121] */ + { 2061, 0x0000000000000000ULL, 0x58645B5EBB1C5E86ULL }, /* XSUM_XXH64_testdata[4122] */ + { 2061, 0x000000009E3779B1ULL, 0xA1D8C75667515C1BULL }, /* XSUM_XXH64_testdata[4123] */ + { 2062, 0x0000000000000000ULL, 0x6F2FF264D5C53AE8ULL }, /* XSUM_XXH64_testdata[4124] */ + { 2062, 0x000000009E3779B1ULL, 0x2DF76774F2617CB8ULL }, /* XSUM_XXH64_testdata[4125] */ + { 2063, 0x0000000000000000ULL, 0x70C18AD3E99FBE72ULL }, /* XSUM_XXH64_testdata[4126] */ + { 2063, 0x000000009E3779B1ULL, 0x13698B043F04D8D6ULL }, /* XSUM_XXH64_testdata[4127] */ + { 2064, 0x0000000000000000ULL, 0xEE7AC386AA60384FULL }, /* XSUM_XXH64_testdata[4128] */ + { 2064, 0x000000009E3779B1ULL, 0x1F1FCC4810B765D0ULL }, /* XSUM_XXH64_testdata[4129] */ + { 2065, 0x0000000000000000ULL, 0x87EA9FCAE40E32C9ULL }, /* XSUM_XXH64_testdata[4130] */ + { 2065, 0x000000009E3779B1ULL, 0x0CA6EFB8FFA8A0DBULL }, /* XSUM_XXH64_testdata[4131] */ + { 2066, 0x0000000000000000ULL, 0x4AAF81185FAE54E2ULL }, /* XSUM_XXH64_testdata[4132] */ + { 2066, 0x000000009E3779B1ULL, 0x518BDE7776E23DE8ULL }, /* XSUM_XXH64_testdata[4133] */ + { 2067, 0x0000000000000000ULL, 0xC520996D5467D052ULL }, /* XSUM_XXH64_testdata[4134] */ + { 2067, 0x000000009E3779B1ULL, 0x87E959537D4EA858ULL }, /* XSUM_XXH64_testdata[4135] */ + { 2068, 0x0000000000000000ULL, 0x1282D865F4671573ULL }, /* XSUM_XXH64_testdata[4136] */ + { 2068, 0x000000009E3779B1ULL, 0x222605DA134EED25ULL }, /* XSUM_XXH64_testdata[4137] */ + { 2069, 0x0000000000000000ULL, 0xD77C60EA52421421ULL }, /* XSUM_XXH64_testdata[4138] */ + { 2069, 0x000000009E3779B1ULL, 0x1CF2197CEA4E73D0ULL }, /* XSUM_XXH64_testdata[4139] */ + { 2070, 0x0000000000000000ULL, 0x820745C3450FD7A6ULL }, /* XSUM_XXH64_testdata[4140] */ + { 2070, 0x000000009E3779B1ULL, 0xC81986FB4E1655F3ULL }, /* XSUM_XXH64_testdata[4141] */ + { 2071, 0x0000000000000000ULL, 0xD3CD04D7E49E6A7FULL }, /* XSUM_XXH64_testdata[4142] */ + { 2071, 0x000000009E3779B1ULL, 0x6804392508ABDA6DULL }, /* XSUM_XXH64_testdata[4143] */ + { 2072, 0x0000000000000000ULL, 0x49223E338D9581D8ULL }, /* XSUM_XXH64_testdata[4144] */ + { 2072, 0x000000009E3779B1ULL, 0x0564A719A29B44E9ULL }, /* XSUM_XXH64_testdata[4145] */ + { 2073, 0x0000000000000000ULL, 0xE12FD1AB308CF5EFULL }, /* XSUM_XXH64_testdata[4146] */ + { 2073, 0x000000009E3779B1ULL, 0x51A14BBFEEF3F96AULL }, /* XSUM_XXH64_testdata[4147] */ + { 2074, 0x0000000000000000ULL, 0x24E77388D9DEC52AULL }, /* XSUM_XXH64_testdata[4148] */ + { 2074, 0x000000009E3779B1ULL, 0x84961EE5CA565A4BULL }, /* XSUM_XXH64_testdata[4149] */ + { 2075, 0x0000000000000000ULL, 0x2D9F4D697BFC7818ULL }, /* XSUM_XXH64_testdata[4150] */ + { 2075, 0x000000009E3779B1ULL, 0xDB9E0F73E0E36113ULL }, /* XSUM_XXH64_testdata[4151] */ + { 2076, 0x0000000000000000ULL, 0x6985BAF864405429ULL }, /* XSUM_XXH64_testdata[4152] */ + { 2076, 0x000000009E3779B1ULL, 0x74A430F99F7E7D59ULL }, /* XSUM_XXH64_testdata[4153] */ + { 2077, 0x0000000000000000ULL, 0xD1FF0FB6DE762B65ULL }, /* XSUM_XXH64_testdata[4154] */ + { 2077, 0x000000009E3779B1ULL, 0x08925355BD02BEBEULL }, /* XSUM_XXH64_testdata[4155] */ + { 2078, 0x0000000000000000ULL, 0xE1AA4852C2F2D90FULL }, /* XSUM_XXH64_testdata[4156] */ + { 2078, 0x000000009E3779B1ULL, 0xE3EBF6643B95B8E0ULL }, /* XSUM_XXH64_testdata[4157] */ + { 2079, 0x0000000000000000ULL, 0x62A2B14D4A8CC547ULL }, /* XSUM_XXH64_testdata[4158] */ + { 2079, 0x000000009E3779B1ULL, 0xFDF336EEC6017DB9ULL }, /* XSUM_XXH64_testdata[4159] */ + { 2080, 0x0000000000000000ULL, 0x6799587A76386B65ULL }, /* XSUM_XXH64_testdata[4160] */ + { 2080, 0x000000009E3779B1ULL, 0xEE9AF077BF53BB21ULL }, /* XSUM_XXH64_testdata[4161] */ + { 2081, 0x0000000000000000ULL, 0x6C123C1D7A5F313AULL }, /* XSUM_XXH64_testdata[4162] */ + { 2081, 0x000000009E3779B1ULL, 0xDF1885BA2212AFA6ULL }, /* XSUM_XXH64_testdata[4163] */ + { 2082, 0x0000000000000000ULL, 0x86D404E83ECC772DULL }, /* XSUM_XXH64_testdata[4164] */ + { 2082, 0x000000009E3779B1ULL, 0x314A7511C6152CBDULL }, /* XSUM_XXH64_testdata[4165] */ + { 2083, 0x0000000000000000ULL, 0x41078C62E4CDBE9BULL }, /* XSUM_XXH64_testdata[4166] */ + { 2083, 0x000000009E3779B1ULL, 0x6474085CF26373E2ULL }, /* XSUM_XXH64_testdata[4167] */ + { 2084, 0x0000000000000000ULL, 0x89351FFED714F97AULL }, /* XSUM_XXH64_testdata[4168] */ + { 2084, 0x000000009E3779B1ULL, 0x14F34ACE8159FFCFULL }, /* XSUM_XXH64_testdata[4169] */ + { 2085, 0x0000000000000000ULL, 0x3B4394508B1B5A75ULL }, /* XSUM_XXH64_testdata[4170] */ + { 2085, 0x000000009E3779B1ULL, 0x806592BA26AA3EA9ULL }, /* XSUM_XXH64_testdata[4171] */ + { 2086, 0x0000000000000000ULL, 0x3A2FD0C243F9BB37ULL }, /* XSUM_XXH64_testdata[4172] */ + { 2086, 0x000000009E3779B1ULL, 0xD3351709697FC986ULL }, /* XSUM_XXH64_testdata[4173] */ + { 2087, 0x0000000000000000ULL, 0x780857FE80A34A08ULL }, /* XSUM_XXH64_testdata[4174] */ + { 2087, 0x000000009E3779B1ULL, 0xEAAD5FF6ECEF154CULL }, /* XSUM_XXH64_testdata[4175] */ + { 2088, 0x0000000000000000ULL, 0x8C92A97AB0A8AC7BULL }, /* XSUM_XXH64_testdata[4176] */ + { 2088, 0x000000009E3779B1ULL, 0x7B516808A34A2ECFULL }, /* XSUM_XXH64_testdata[4177] */ + { 2089, 0x0000000000000000ULL, 0xA55F7709B3E7B01DULL }, /* XSUM_XXH64_testdata[4178] */ + { 2089, 0x000000009E3779B1ULL, 0x4569B849606B8502ULL }, /* XSUM_XXH64_testdata[4179] */ + { 2090, 0x0000000000000000ULL, 0xD8BDC1D39CE0752EULL }, /* XSUM_XXH64_testdata[4180] */ + { 2090, 0x000000009E3779B1ULL, 0x9F2BC68076C09D7BULL }, /* XSUM_XXH64_testdata[4181] */ + { 2091, 0x0000000000000000ULL, 0x398E12B9780E0BA1ULL }, /* XSUM_XXH64_testdata[4182] */ + { 2091, 0x000000009E3779B1ULL, 0x62EB8E954AC92C8DULL }, /* XSUM_XXH64_testdata[4183] */ + { 2092, 0x0000000000000000ULL, 0x2142BCE894671761ULL }, /* XSUM_XXH64_testdata[4184] */ + { 2092, 0x000000009E3779B1ULL, 0x0A193CDDFF220C96ULL }, /* XSUM_XXH64_testdata[4185] */ + { 2093, 0x0000000000000000ULL, 0x9487066C0B904136ULL }, /* XSUM_XXH64_testdata[4186] */ + { 2093, 0x000000009E3779B1ULL, 0x9F6DEC10197482CCULL }, /* XSUM_XXH64_testdata[4187] */ + { 2094, 0x0000000000000000ULL, 0x72954797A955B808ULL }, /* XSUM_XXH64_testdata[4188] */ + { 2094, 0x000000009E3779B1ULL, 0xE6DA9081618333ABULL }, /* XSUM_XXH64_testdata[4189] */ + { 2095, 0x0000000000000000ULL, 0x09011C01FB315E1EULL }, /* XSUM_XXH64_testdata[4190] */ + { 2095, 0x000000009E3779B1ULL, 0x220EC8C4E5D46FBBULL }, /* XSUM_XXH64_testdata[4191] */ + { 2096, 0x0000000000000000ULL, 0x14652DD6033BE533ULL }, /* XSUM_XXH64_testdata[4192] */ + { 2096, 0x000000009E3779B1ULL, 0x2A78CFC91C228839ULL }, /* XSUM_XXH64_testdata[4193] */ + { 2097, 0x0000000000000000ULL, 0x9237135C5B1C656EULL }, /* XSUM_XXH64_testdata[4194] */ + { 2097, 0x000000009E3779B1ULL, 0xF2EBCA6F07120BE4ULL }, /* XSUM_XXH64_testdata[4195] */ + { 2098, 0x0000000000000000ULL, 0xC26062D31FFF67C3ULL }, /* XSUM_XXH64_testdata[4196] */ + { 2098, 0x000000009E3779B1ULL, 0x7AF3934AFFADC60CULL }, /* XSUM_XXH64_testdata[4197] */ + { 2099, 0x0000000000000000ULL, 0x3301C88334AFD200ULL }, /* XSUM_XXH64_testdata[4198] */ + { 2099, 0x000000009E3779B1ULL, 0x6C7912A7CF157428ULL }, /* XSUM_XXH64_testdata[4199] */ + { 2100, 0x0000000000000000ULL, 0xCE0A716B6C313392ULL }, /* XSUM_XXH64_testdata[4200] */ + { 2100, 0x000000009E3779B1ULL, 0x2860586DDA840F0CULL }, /* XSUM_XXH64_testdata[4201] */ + { 2101, 0x0000000000000000ULL, 0x1186E7E20799442DULL }, /* XSUM_XXH64_testdata[4202] */ + { 2101, 0x000000009E3779B1ULL, 0x444E38FAA5CFCD4EULL }, /* XSUM_XXH64_testdata[4203] */ + { 2102, 0x0000000000000000ULL, 0x7EACC755EE3137A5ULL }, /* XSUM_XXH64_testdata[4204] */ + { 2102, 0x000000009E3779B1ULL, 0x5B2115372C72793CULL }, /* XSUM_XXH64_testdata[4205] */ + { 2103, 0x0000000000000000ULL, 0x6B9762647B56CD52ULL }, /* XSUM_XXH64_testdata[4206] */ + { 2103, 0x000000009E3779B1ULL, 0x4F8E8560D5A7C7CFULL }, /* XSUM_XXH64_testdata[4207] */ + { 2104, 0x0000000000000000ULL, 0x74C601BB31E0DF08ULL }, /* XSUM_XXH64_testdata[4208] */ + { 2104, 0x000000009E3779B1ULL, 0x2383AEF86CA8A3CDULL }, /* XSUM_XXH64_testdata[4209] */ + { 2105, 0x0000000000000000ULL, 0xAF3345348D1009B5ULL }, /* XSUM_XXH64_testdata[4210] */ + { 2105, 0x000000009E3779B1ULL, 0x9E85C04B850EE216ULL }, /* XSUM_XXH64_testdata[4211] */ + { 2106, 0x0000000000000000ULL, 0xAFE877C6FD7C563BULL }, /* XSUM_XXH64_testdata[4212] */ + { 2106, 0x000000009E3779B1ULL, 0x4CB18BBE4045EB30ULL }, /* XSUM_XXH64_testdata[4213] */ + { 2107, 0x0000000000000000ULL, 0xA409FF6AF28DC820ULL }, /* XSUM_XXH64_testdata[4214] */ + { 2107, 0x000000009E3779B1ULL, 0xC9CA4D9C25C84B99ULL }, /* XSUM_XXH64_testdata[4215] */ + { 2108, 0x0000000000000000ULL, 0xA27F38B662E03C79ULL }, /* XSUM_XXH64_testdata[4216] */ + { 2108, 0x000000009E3779B1ULL, 0xD648D7BB80D814FEULL }, /* XSUM_XXH64_testdata[4217] */ + { 2109, 0x0000000000000000ULL, 0x5AC552E981AE8B24ULL }, /* XSUM_XXH64_testdata[4218] */ + { 2109, 0x000000009E3779B1ULL, 0x6D6A9FCAC6B03F2EULL }, /* XSUM_XXH64_testdata[4219] */ + { 2110, 0x0000000000000000ULL, 0x504E7C8643949EEFULL }, /* XSUM_XXH64_testdata[4220] */ + { 2110, 0x000000009E3779B1ULL, 0xFF3EE5A60DDBE095ULL }, /* XSUM_XXH64_testdata[4221] */ + { 2111, 0x0000000000000000ULL, 0xBE7DC56D5383A688ULL }, /* XSUM_XXH64_testdata[4222] */ + { 2111, 0x000000009E3779B1ULL, 0x9F4D200C77861730ULL }, /* XSUM_XXH64_testdata[4223] */ + { 2112, 0x0000000000000000ULL, 0x834C20C1D1CDDDE3ULL }, /* XSUM_XXH64_testdata[4224] */ + { 2112, 0x000000009E3779B1ULL, 0x84D3DE364520C70BULL }, /* XSUM_XXH64_testdata[4225] */ + { 2113, 0x0000000000000000ULL, 0xF4C8E415579EE594ULL }, /* XSUM_XXH64_testdata[4226] */ + { 2113, 0x000000009E3779B1ULL, 0x8D515665D403DC73ULL }, /* XSUM_XXH64_testdata[4227] */ + { 2114, 0x0000000000000000ULL, 0xA53B6D27612B9B51ULL }, /* XSUM_XXH64_testdata[4228] */ + { 2114, 0x000000009E3779B1ULL, 0x8C14F008F4132919ULL }, /* XSUM_XXH64_testdata[4229] */ + { 2115, 0x0000000000000000ULL, 0x47130CCABE4095E5ULL }, /* XSUM_XXH64_testdata[4230] */ + { 2115, 0x000000009E3779B1ULL, 0xC2D80E3E8B53222FULL }, /* XSUM_XXH64_testdata[4231] */ + { 2116, 0x0000000000000000ULL, 0xD6197D649A921D36ULL }, /* XSUM_XXH64_testdata[4232] */ + { 2116, 0x000000009E3779B1ULL, 0x2FE3E5AA6224198AULL }, /* XSUM_XXH64_testdata[4233] */ + { 2117, 0x0000000000000000ULL, 0xAAED01318EB254EDULL }, /* XSUM_XXH64_testdata[4234] */ + { 2117, 0x000000009E3779B1ULL, 0x8E439C09761E8132ULL }, /* XSUM_XXH64_testdata[4235] */ + { 2118, 0x0000000000000000ULL, 0x3F38EE9A3391DD62ULL }, /* XSUM_XXH64_testdata[4236] */ + { 2118, 0x000000009E3779B1ULL, 0xC3125F364FA13A87ULL }, /* XSUM_XXH64_testdata[4237] */ + { 2119, 0x0000000000000000ULL, 0x3E34DB0E06852641ULL }, /* XSUM_XXH64_testdata[4238] */ + { 2119, 0x000000009E3779B1ULL, 0x262FCBF508B5B3B7ULL }, /* XSUM_XXH64_testdata[4239] */ + { 2120, 0x0000000000000000ULL, 0xC5AE3CF484FA43B1ULL }, /* XSUM_XXH64_testdata[4240] */ + { 2120, 0x000000009E3779B1ULL, 0x76F8A12780996C81ULL }, /* XSUM_XXH64_testdata[4241] */ + { 2121, 0x0000000000000000ULL, 0x2443FF05EFC9ED92ULL }, /* XSUM_XXH64_testdata[4242] */ + { 2121, 0x000000009E3779B1ULL, 0x84FD6ED0A2E8F6BBULL }, /* XSUM_XXH64_testdata[4243] */ + { 2122, 0x0000000000000000ULL, 0x60BF6BE620291068ULL }, /* XSUM_XXH64_testdata[4244] */ + { 2122, 0x000000009E3779B1ULL, 0x2A4406CBBD6BABE5ULL }, /* XSUM_XXH64_testdata[4245] */ + { 2123, 0x0000000000000000ULL, 0x7B35FA5307533583ULL }, /* XSUM_XXH64_testdata[4246] */ + { 2123, 0x000000009E3779B1ULL, 0x3499FC630E4E282DULL }, /* XSUM_XXH64_testdata[4247] */ + { 2124, 0x0000000000000000ULL, 0xA6EF8CD6F5ED65C5ULL }, /* XSUM_XXH64_testdata[4248] */ + { 2124, 0x000000009E3779B1ULL, 0xA8EFFB4312F09C95ULL }, /* XSUM_XXH64_testdata[4249] */ + { 2125, 0x0000000000000000ULL, 0x7FFDFAE1632AEDE1ULL }, /* XSUM_XXH64_testdata[4250] */ + { 2125, 0x000000009E3779B1ULL, 0xBA808A1B7D5202E8ULL }, /* XSUM_XXH64_testdata[4251] */ + { 2126, 0x0000000000000000ULL, 0x1EA9E14D815B0E15ULL }, /* XSUM_XXH64_testdata[4252] */ + { 2126, 0x000000009E3779B1ULL, 0xCDB8A44CBAA78FA4ULL }, /* XSUM_XXH64_testdata[4253] */ + { 2127, 0x0000000000000000ULL, 0xF29148C17974794BULL }, /* XSUM_XXH64_testdata[4254] */ + { 2127, 0x000000009E3779B1ULL, 0x7FB7B39F13C2A6EBULL }, /* XSUM_XXH64_testdata[4255] */ + { 2128, 0x0000000000000000ULL, 0xD91E468DD5A9E938ULL }, /* XSUM_XXH64_testdata[4256] */ + { 2128, 0x000000009E3779B1ULL, 0xAAAD4A6FC44F967FULL }, /* XSUM_XXH64_testdata[4257] */ + { 2129, 0x0000000000000000ULL, 0x4F7A5955B9D5A37AULL }, /* XSUM_XXH64_testdata[4258] */ + { 2129, 0x000000009E3779B1ULL, 0x86969D6057AC0A5BULL }, /* XSUM_XXH64_testdata[4259] */ + { 2130, 0x0000000000000000ULL, 0x7EC790F0E5C01DBEULL }, /* XSUM_XXH64_testdata[4260] */ + { 2130, 0x000000009E3779B1ULL, 0x18991A7DF8F8CABAULL }, /* XSUM_XXH64_testdata[4261] */ + { 2131, 0x0000000000000000ULL, 0x07F65E66C773DDDAULL }, /* XSUM_XXH64_testdata[4262] */ + { 2131, 0x000000009E3779B1ULL, 0xD742E5B5D10066A7ULL }, /* XSUM_XXH64_testdata[4263] */ + { 2132, 0x0000000000000000ULL, 0xACD1F8F28C590CD4ULL }, /* XSUM_XXH64_testdata[4264] */ + { 2132, 0x000000009E3779B1ULL, 0x6CB8902519564A66ULL }, /* XSUM_XXH64_testdata[4265] */ + { 2133, 0x0000000000000000ULL, 0xE4D6A70BCB1A245EULL }, /* XSUM_XXH64_testdata[4266] */ + { 2133, 0x000000009E3779B1ULL, 0xF7529A659F22D37AULL }, /* XSUM_XXH64_testdata[4267] */ + { 2134, 0x0000000000000000ULL, 0xF312A484DFA93AFBULL }, /* XSUM_XXH64_testdata[4268] */ + { 2134, 0x000000009E3779B1ULL, 0xE6E1D440C014677EULL }, /* XSUM_XXH64_testdata[4269] */ + { 2135, 0x0000000000000000ULL, 0x8148BBE3013AA9E7ULL }, /* XSUM_XXH64_testdata[4270] */ + { 2135, 0x000000009E3779B1ULL, 0x198B1BB13B57A427ULL }, /* XSUM_XXH64_testdata[4271] */ + { 2136, 0x0000000000000000ULL, 0xA27C235275417E09ULL }, /* XSUM_XXH64_testdata[4272] */ + { 2136, 0x000000009E3779B1ULL, 0xD039DDDC08FB6B9DULL }, /* XSUM_XXH64_testdata[4273] */ + { 2137, 0x0000000000000000ULL, 0x0898F85EBE67332AULL }, /* XSUM_XXH64_testdata[4274] */ + { 2137, 0x000000009E3779B1ULL, 0xB80710F9DB9F327DULL }, /* XSUM_XXH64_testdata[4275] */ + { 2138, 0x0000000000000000ULL, 0xB51E48C7981571F4ULL }, /* XSUM_XXH64_testdata[4276] */ + { 2138, 0x000000009E3779B1ULL, 0x5BC03D99D9369EBCULL }, /* XSUM_XXH64_testdata[4277] */ + { 2139, 0x0000000000000000ULL, 0xD5B2D4AFF43F38ADULL }, /* XSUM_XXH64_testdata[4278] */ + { 2139, 0x000000009E3779B1ULL, 0x27CF28C671F98AFCULL }, /* XSUM_XXH64_testdata[4279] */ + { 2140, 0x0000000000000000ULL, 0x45EDBD88E2265690ULL }, /* XSUM_XXH64_testdata[4280] */ + { 2140, 0x000000009E3779B1ULL, 0xD8F82B9893BD894CULL }, /* XSUM_XXH64_testdata[4281] */ + { 2141, 0x0000000000000000ULL, 0xA0BBBEDF99503B3BULL }, /* XSUM_XXH64_testdata[4282] */ + { 2141, 0x000000009E3779B1ULL, 0x7686CA86FD044DF0ULL }, /* XSUM_XXH64_testdata[4283] */ + { 2142, 0x0000000000000000ULL, 0xD765F1EF7D2059C5ULL }, /* XSUM_XXH64_testdata[4284] */ + { 2142, 0x000000009E3779B1ULL, 0xFE6FBCF07AABC4CCULL }, /* XSUM_XXH64_testdata[4285] */ + { 2143, 0x0000000000000000ULL, 0x58175E7E13EAA9D8ULL }, /* XSUM_XXH64_testdata[4286] */ + { 2143, 0x000000009E3779B1ULL, 0xE546DB18393B277DULL }, /* XSUM_XXH64_testdata[4287] */ + { 2144, 0x0000000000000000ULL, 0x8990BB7C5F7480E5ULL }, /* XSUM_XXH64_testdata[4288] */ + { 2144, 0x000000009E3779B1ULL, 0x1A730E6F65DF72DBULL }, /* XSUM_XXH64_testdata[4289] */ + { 2145, 0x0000000000000000ULL, 0xBEC9CDFE264CEDA6ULL }, /* XSUM_XXH64_testdata[4290] */ + { 2145, 0x000000009E3779B1ULL, 0xCCAA93F2CC103401ULL }, /* XSUM_XXH64_testdata[4291] */ + { 2146, 0x0000000000000000ULL, 0x3C03458ACA57F868ULL }, /* XSUM_XXH64_testdata[4292] */ + { 2146, 0x000000009E3779B1ULL, 0x10676C21FF394B3BULL }, /* XSUM_XXH64_testdata[4293] */ + { 2147, 0x0000000000000000ULL, 0x0553858EE7DA568BULL }, /* XSUM_XXH64_testdata[4294] */ + { 2147, 0x000000009E3779B1ULL, 0x0BB4B9EAFF9440D2ULL }, /* XSUM_XXH64_testdata[4295] */ + { 2148, 0x0000000000000000ULL, 0x4916EF58834A3252ULL }, /* XSUM_XXH64_testdata[4296] */ + { 2148, 0x000000009E3779B1ULL, 0xEA0D33FC9C243A5DULL }, /* XSUM_XXH64_testdata[4297] */ + { 2149, 0x0000000000000000ULL, 0xFAE135CEDB95E7CEULL }, /* XSUM_XXH64_testdata[4298] */ + { 2149, 0x000000009E3779B1ULL, 0x90482F79FC1CA9F1ULL }, /* XSUM_XXH64_testdata[4299] */ + { 2150, 0x0000000000000000ULL, 0x6F1AEEBDD0E1823BULL }, /* XSUM_XXH64_testdata[4300] */ + { 2150, 0x000000009E3779B1ULL, 0xFFD07A254B97BACCULL }, /* XSUM_XXH64_testdata[4301] */ + { 2151, 0x0000000000000000ULL, 0x43EDE3066FDA0040ULL }, /* XSUM_XXH64_testdata[4302] */ + { 2151, 0x000000009E3779B1ULL, 0xAF7336B4D1853C7EULL }, /* XSUM_XXH64_testdata[4303] */ + { 2152, 0x0000000000000000ULL, 0x861FCE7AE8678941ULL }, /* XSUM_XXH64_testdata[4304] */ + { 2152, 0x000000009E3779B1ULL, 0x0F9C545750101511ULL }, /* XSUM_XXH64_testdata[4305] */ + { 2153, 0x0000000000000000ULL, 0x51870C634310F32AULL }, /* XSUM_XXH64_testdata[4306] */ + { 2153, 0x000000009E3779B1ULL, 0x0326BD661840DD86ULL }, /* XSUM_XXH64_testdata[4307] */ + { 2154, 0x0000000000000000ULL, 0x3DF958E2B948A48CULL }, /* XSUM_XXH64_testdata[4308] */ + { 2154, 0x000000009E3779B1ULL, 0x0F2B3E16806DF639ULL }, /* XSUM_XXH64_testdata[4309] */ + { 2155, 0x0000000000000000ULL, 0x4536713B86E9564DULL }, /* XSUM_XXH64_testdata[4310] */ + { 2155, 0x000000009E3779B1ULL, 0xD976733D8F9E0619ULL }, /* XSUM_XXH64_testdata[4311] */ + { 2156, 0x0000000000000000ULL, 0xD10F3C77932333EEULL }, /* XSUM_XXH64_testdata[4312] */ + { 2156, 0x000000009E3779B1ULL, 0xB93E27EFF2953E52ULL }, /* XSUM_XXH64_testdata[4313] */ + { 2157, 0x0000000000000000ULL, 0x5509CFEC5E92713FULL }, /* XSUM_XXH64_testdata[4314] */ + { 2157, 0x000000009E3779B1ULL, 0x3FA08BB4F066778EULL }, /* XSUM_XXH64_testdata[4315] */ + { 2158, 0x0000000000000000ULL, 0x47C128A5EFF25028ULL }, /* XSUM_XXH64_testdata[4316] */ + { 2158, 0x000000009E3779B1ULL, 0xC482683096EC165EULL }, /* XSUM_XXH64_testdata[4317] */ + { 2159, 0x0000000000000000ULL, 0xB16525A1BE2ACB88ULL }, /* XSUM_XXH64_testdata[4318] */ + { 2159, 0x000000009E3779B1ULL, 0xD4312DC78F979738ULL }, /* XSUM_XXH64_testdata[4319] */ + { 2160, 0x0000000000000000ULL, 0x86C3F4858ABD1937ULL }, /* XSUM_XXH64_testdata[4320] */ + { 2160, 0x000000009E3779B1ULL, 0x1A4B93C9621A6D29ULL }, /* XSUM_XXH64_testdata[4321] */ + { 2161, 0x0000000000000000ULL, 0xD763296BCDB7E927ULL }, /* XSUM_XXH64_testdata[4322] */ + { 2161, 0x000000009E3779B1ULL, 0x07D70A2A6A58B83FULL }, /* XSUM_XXH64_testdata[4323] */ + { 2162, 0x0000000000000000ULL, 0x3A9B0CFE29777F3CULL }, /* XSUM_XXH64_testdata[4324] */ + { 2162, 0x000000009E3779B1ULL, 0xD2AFEDD47D0451E7ULL }, /* XSUM_XXH64_testdata[4325] */ + { 2163, 0x0000000000000000ULL, 0x3FC71F79F6675489ULL }, /* XSUM_XXH64_testdata[4326] */ + { 2163, 0x000000009E3779B1ULL, 0x11222423ABFCF05AULL }, /* XSUM_XXH64_testdata[4327] */ + { 2164, 0x0000000000000000ULL, 0xD0EA8E4BCF7929F7ULL }, /* XSUM_XXH64_testdata[4328] */ + { 2164, 0x000000009E3779B1ULL, 0x8B337ABF3E1434D9ULL }, /* XSUM_XXH64_testdata[4329] */ + { 2165, 0x0000000000000000ULL, 0x5DCD8820A0E2E462ULL }, /* XSUM_XXH64_testdata[4330] */ + { 2165, 0x000000009E3779B1ULL, 0xC044B75DCC5D4DAAULL }, /* XSUM_XXH64_testdata[4331] */ + { 2166, 0x0000000000000000ULL, 0x8B57F38045CC69D7ULL }, /* XSUM_XXH64_testdata[4332] */ + { 2166, 0x000000009E3779B1ULL, 0xBEC998DED9EDCAA6ULL }, /* XSUM_XXH64_testdata[4333] */ + { 2167, 0x0000000000000000ULL, 0x6C3878F759B3E106ULL }, /* XSUM_XXH64_testdata[4334] */ + { 2167, 0x000000009E3779B1ULL, 0x7A9FE47D20942215ULL }, /* XSUM_XXH64_testdata[4335] */ + { 2168, 0x0000000000000000ULL, 0x874038A6E4222EF0ULL }, /* XSUM_XXH64_testdata[4336] */ + { 2168, 0x000000009E3779B1ULL, 0x2E7EAD2589A83B92ULL }, /* XSUM_XXH64_testdata[4337] */ + { 2169, 0x0000000000000000ULL, 0xFF8803E169EFD2A8ULL }, /* XSUM_XXH64_testdata[4338] */ + { 2169, 0x000000009E3779B1ULL, 0x79B3159B040EE36CULL }, /* XSUM_XXH64_testdata[4339] */ + { 2170, 0x0000000000000000ULL, 0x9D0E380D955C6317ULL }, /* XSUM_XXH64_testdata[4340] */ + { 2170, 0x000000009E3779B1ULL, 0xDFE68AC88309395DULL }, /* XSUM_XXH64_testdata[4341] */ + { 2171, 0x0000000000000000ULL, 0x2008B4A47392D513ULL }, /* XSUM_XXH64_testdata[4342] */ + { 2171, 0x000000009E3779B1ULL, 0x67FCB44E010AB0C9ULL }, /* XSUM_XXH64_testdata[4343] */ + { 2172, 0x0000000000000000ULL, 0xDC969F9C747067EAULL }, /* XSUM_XXH64_testdata[4344] */ + { 2172, 0x000000009E3779B1ULL, 0x7BD46D2827AAE44CULL }, /* XSUM_XXH64_testdata[4345] */ + { 2173, 0x0000000000000000ULL, 0x58BC7150352BA58FULL }, /* XSUM_XXH64_testdata[4346] */ + { 2173, 0x000000009E3779B1ULL, 0xBD32A63B9AF1786EULL }, /* XSUM_XXH64_testdata[4347] */ + { 2174, 0x0000000000000000ULL, 0xA925D126BE7B6462ULL }, /* XSUM_XXH64_testdata[4348] */ + { 2174, 0x000000009E3779B1ULL, 0xD7D50D29E043C558ULL }, /* XSUM_XXH64_testdata[4349] */ + { 2175, 0x0000000000000000ULL, 0x2BAF6491DCF87362ULL }, /* XSUM_XXH64_testdata[4350] */ + { 2175, 0x000000009E3779B1ULL, 0x95AFC2F6DA50A5E4ULL }, /* XSUM_XXH64_testdata[4351] */ + { 2176, 0x0000000000000000ULL, 0xD15101A732424692ULL }, /* XSUM_XXH64_testdata[4352] */ + { 2176, 0x000000009E3779B1ULL, 0x82FD009AA26EFF4FULL }, /* XSUM_XXH64_testdata[4353] */ + { 2177, 0x0000000000000000ULL, 0x9B9FACB2392017C8ULL }, /* XSUM_XXH64_testdata[4354] */ + { 2177, 0x000000009E3779B1ULL, 0x0F2DC2B9FB9D03DDULL }, /* XSUM_XXH64_testdata[4355] */ + { 2178, 0x0000000000000000ULL, 0x3B57E051C347FCBEULL }, /* XSUM_XXH64_testdata[4356] */ + { 2178, 0x000000009E3779B1ULL, 0x454C8FC8C2B75DB3ULL }, /* XSUM_XXH64_testdata[4357] */ + { 2179, 0x0000000000000000ULL, 0x2E90998F0F1F9E64ULL }, /* XSUM_XXH64_testdata[4358] */ + { 2179, 0x000000009E3779B1ULL, 0x198CA081782AAC42ULL }, /* XSUM_XXH64_testdata[4359] */ + { 2180, 0x0000000000000000ULL, 0x204C5B3AF52DC25CULL }, /* XSUM_XXH64_testdata[4360] */ + { 2180, 0x000000009E3779B1ULL, 0x88D79503E461DEE3ULL }, /* XSUM_XXH64_testdata[4361] */ + { 2181, 0x0000000000000000ULL, 0x078DA5447DFC0395ULL }, /* XSUM_XXH64_testdata[4362] */ + { 2181, 0x000000009E3779B1ULL, 0x2065CDFBCD1900C8ULL }, /* XSUM_XXH64_testdata[4363] */ + { 2182, 0x0000000000000000ULL, 0xEE9725992BCC2292ULL }, /* XSUM_XXH64_testdata[4364] */ + { 2182, 0x000000009E3779B1ULL, 0x63A828CB16339365ULL }, /* XSUM_XXH64_testdata[4365] */ + { 2183, 0x0000000000000000ULL, 0x13A0DDEAC067C804ULL }, /* XSUM_XXH64_testdata[4366] */ + { 2183, 0x000000009E3779B1ULL, 0x3BCBD977B1D8FC17ULL }, /* XSUM_XXH64_testdata[4367] */ + { 2184, 0x0000000000000000ULL, 0x2828598F4CC5CA5AULL }, /* XSUM_XXH64_testdata[4368] */ + { 2184, 0x000000009E3779B1ULL, 0x612B4B0D9E2BF6C1ULL }, /* XSUM_XXH64_testdata[4369] */ + { 2185, 0x0000000000000000ULL, 0x4E5D8F1A7298695EULL }, /* XSUM_XXH64_testdata[4370] */ + { 2185, 0x000000009E3779B1ULL, 0xB595A31711A62559ULL }, /* XSUM_XXH64_testdata[4371] */ + { 2186, 0x0000000000000000ULL, 0x0E61D730286A3963ULL }, /* XSUM_XXH64_testdata[4372] */ + { 2186, 0x000000009E3779B1ULL, 0xA890A0CD18D07DAFULL }, /* XSUM_XXH64_testdata[4373] */ + { 2187, 0x0000000000000000ULL, 0xB670D14D8E421128ULL }, /* XSUM_XXH64_testdata[4374] */ + { 2187, 0x000000009E3779B1ULL, 0x06151A5E9C9C6A10ULL }, /* XSUM_XXH64_testdata[4375] */ + { 2188, 0x0000000000000000ULL, 0x6E485FF901F48B6EULL }, /* XSUM_XXH64_testdata[4376] */ + { 2188, 0x000000009E3779B1ULL, 0x4E05588B09066C49ULL }, /* XSUM_XXH64_testdata[4377] */ + { 2189, 0x0000000000000000ULL, 0xE683F71431065B01ULL }, /* XSUM_XXH64_testdata[4378] */ + { 2189, 0x000000009E3779B1ULL, 0x24750B60F988EA46ULL }, /* XSUM_XXH64_testdata[4379] */ + { 2190, 0x0000000000000000ULL, 0x98F67B6433B31850ULL }, /* XSUM_XXH64_testdata[4380] */ + { 2190, 0x000000009E3779B1ULL, 0xBAD9DF32E5477CA0ULL }, /* XSUM_XXH64_testdata[4381] */ + { 2191, 0x0000000000000000ULL, 0x34F7DC76604CEE7CULL }, /* XSUM_XXH64_testdata[4382] */ + { 2191, 0x000000009E3779B1ULL, 0xD2B1EC5C72412B93ULL }, /* XSUM_XXH64_testdata[4383] */ + { 2192, 0x0000000000000000ULL, 0x923D788C103917B0ULL }, /* XSUM_XXH64_testdata[4384] */ + { 2192, 0x000000009E3779B1ULL, 0xC98D3E689CDAE34AULL }, /* XSUM_XXH64_testdata[4385] */ + { 2193, 0x0000000000000000ULL, 0x84FB695651BCEF50ULL }, /* XSUM_XXH64_testdata[4386] */ + { 2193, 0x000000009E3779B1ULL, 0x3C7332396DA63C0CULL }, /* XSUM_XXH64_testdata[4387] */ + { 2194, 0x0000000000000000ULL, 0xEB89464C2622AF12ULL }, /* XSUM_XXH64_testdata[4388] */ + { 2194, 0x000000009E3779B1ULL, 0x1ED1885839BDAD24ULL }, /* XSUM_XXH64_testdata[4389] */ + { 2195, 0x0000000000000000ULL, 0x1830E0625482F65DULL }, /* XSUM_XXH64_testdata[4390] */ + { 2195, 0x000000009E3779B1ULL, 0xAF9B9E10C0D4639FULL }, /* XSUM_XXH64_testdata[4391] */ + { 2196, 0x0000000000000000ULL, 0xA5A21E8ABE2FDC26ULL }, /* XSUM_XXH64_testdata[4392] */ + { 2196, 0x000000009E3779B1ULL, 0xE7B6A83604355DADULL }, /* XSUM_XXH64_testdata[4393] */ + { 2197, 0x0000000000000000ULL, 0x2B4A32A9AE6C7C36ULL }, /* XSUM_XXH64_testdata[4394] */ + { 2197, 0x000000009E3779B1ULL, 0xE2431DB9D16CA930ULL }, /* XSUM_XXH64_testdata[4395] */ + { 2198, 0x0000000000000000ULL, 0x3020272389CDAE15ULL }, /* XSUM_XXH64_testdata[4396] */ + { 2198, 0x000000009E3779B1ULL, 0x547E977C6EFBDE00ULL }, /* XSUM_XXH64_testdata[4397] */ + { 2199, 0x0000000000000000ULL, 0x2703F391C3C7E8B2ULL }, /* XSUM_XXH64_testdata[4398] */ + { 2199, 0x000000009E3779B1ULL, 0xD3B907D01F0B44DFULL }, /* XSUM_XXH64_testdata[4399] */ + { 2200, 0x0000000000000000ULL, 0x8005FB09BE31836FULL }, /* XSUM_XXH64_testdata[4400] */ + { 2200, 0x000000009E3779B1ULL, 0x1EA1BF1B7891F032ULL }, /* XSUM_XXH64_testdata[4401] */ + { 2201, 0x0000000000000000ULL, 0xBD61E79200ECF868ULL }, /* XSUM_XXH64_testdata[4402] */ + { 2201, 0x000000009E3779B1ULL, 0x2C737497D86EC4D5ULL }, /* XSUM_XXH64_testdata[4403] */ + { 2202, 0x0000000000000000ULL, 0x31CA91FDF6DAB2BDULL }, /* XSUM_XXH64_testdata[4404] */ + { 2202, 0x000000009E3779B1ULL, 0xCA5F0726649E986DULL }, /* XSUM_XXH64_testdata[4405] */ + { 2203, 0x0000000000000000ULL, 0xCDD2B743C52CC17EULL }, /* XSUM_XXH64_testdata[4406] */ + { 2203, 0x000000009E3779B1ULL, 0xF8F3942AE8BA9156ULL }, /* XSUM_XXH64_testdata[4407] */ + { 2204, 0x0000000000000000ULL, 0x1EF6A18106C2B10AULL }, /* XSUM_XXH64_testdata[4408] */ + { 2204, 0x000000009E3779B1ULL, 0x379F732EBCB0A9C1ULL }, /* XSUM_XXH64_testdata[4409] */ + { 2205, 0x0000000000000000ULL, 0xF50219BCA1C470B1ULL }, /* XSUM_XXH64_testdata[4410] */ + { 2205, 0x000000009E3779B1ULL, 0x579AAFCD9BE7BD98ULL }, /* XSUM_XXH64_testdata[4411] */ + { 2206, 0x0000000000000000ULL, 0x59E24265CB7ECB9DULL }, /* XSUM_XXH64_testdata[4412] */ + { 2206, 0x000000009E3779B1ULL, 0x749C5B407D39C828ULL }, /* XSUM_XXH64_testdata[4413] */ + { 2207, 0x0000000000000000ULL, 0x7980AC4E7AE52CDBULL }, /* XSUM_XXH64_testdata[4414] */ + { 2207, 0x000000009E3779B1ULL, 0x3AC6B48F03673E9AULL }, /* XSUM_XXH64_testdata[4415] */ + { 2208, 0x0000000000000000ULL, 0x686A6AC846EA5DDDULL }, /* XSUM_XXH64_testdata[4416] */ + { 2208, 0x000000009E3779B1ULL, 0x38439DC67510FF8FULL }, /* XSUM_XXH64_testdata[4417] */ + { 2209, 0x0000000000000000ULL, 0x72A03CDEB74E2163ULL }, /* XSUM_XXH64_testdata[4418] */ + { 2209, 0x000000009E3779B1ULL, 0x0D000BE93DCC5ECFULL }, /* XSUM_XXH64_testdata[4419] */ + { 2210, 0x0000000000000000ULL, 0x8F59F4BE0347F6A0ULL }, /* XSUM_XXH64_testdata[4420] */ + { 2210, 0x000000009E3779B1ULL, 0x55DE8A937DAD0E26ULL }, /* XSUM_XXH64_testdata[4421] */ + { 2211, 0x0000000000000000ULL, 0xEDB688D677917862ULL }, /* XSUM_XXH64_testdata[4422] */ + { 2211, 0x000000009E3779B1ULL, 0x364EAA64EFD02B0EULL }, /* XSUM_XXH64_testdata[4423] */ + { 2212, 0x0000000000000000ULL, 0x12A9B0FA531142CFULL }, /* XSUM_XXH64_testdata[4424] */ + { 2212, 0x000000009E3779B1ULL, 0x68588E4852100B96ULL }, /* XSUM_XXH64_testdata[4425] */ + { 2213, 0x0000000000000000ULL, 0xEF8777562697F6DCULL }, /* XSUM_XXH64_testdata[4426] */ + { 2213, 0x000000009E3779B1ULL, 0xEAA94DCA7908F92EULL }, /* XSUM_XXH64_testdata[4427] */ + { 2214, 0x0000000000000000ULL, 0x521EF066ED29DFC9ULL }, /* XSUM_XXH64_testdata[4428] */ + { 2214, 0x000000009E3779B1ULL, 0xD732A6BDE5983D8DULL }, /* XSUM_XXH64_testdata[4429] */ + { 2215, 0x0000000000000000ULL, 0x777A961AEC5931BBULL }, /* XSUM_XXH64_testdata[4430] */ + { 2215, 0x000000009E3779B1ULL, 0x9DEDA8D94A361626ULL }, /* XSUM_XXH64_testdata[4431] */ + { 2216, 0x0000000000000000ULL, 0x2CC5A283D151DA9CULL }, /* XSUM_XXH64_testdata[4432] */ + { 2216, 0x000000009E3779B1ULL, 0xDF2A034C237DF27AULL }, /* XSUM_XXH64_testdata[4433] */ + { 2217, 0x0000000000000000ULL, 0x686031883ECC15E1ULL }, /* XSUM_XXH64_testdata[4434] */ + { 2217, 0x000000009E3779B1ULL, 0xEC4AF6D7AA66AFE9ULL }, /* XSUM_XXH64_testdata[4435] */ + { 2218, 0x0000000000000000ULL, 0x250E94EE2C79A08DULL }, /* XSUM_XXH64_testdata[4436] */ + { 2218, 0x000000009E3779B1ULL, 0xBA172B88DD0B77FCULL }, /* XSUM_XXH64_testdata[4437] */ + { 2219, 0x0000000000000000ULL, 0x1ADFC1AFF2AD1D17ULL }, /* XSUM_XXH64_testdata[4438] */ + { 2219, 0x000000009E3779B1ULL, 0xB23B8908EC0D1ACCULL }, /* XSUM_XXH64_testdata[4439] */ + { 2220, 0x0000000000000000ULL, 0x4B47FF662925324DULL }, /* XSUM_XXH64_testdata[4440] */ + { 2220, 0x000000009E3779B1ULL, 0x0CA3FD8AABB69609ULL }, /* XSUM_XXH64_testdata[4441] */ + { 2221, 0x0000000000000000ULL, 0x82BE792EB4CB8D65ULL }, /* XSUM_XXH64_testdata[4442] */ + { 2221, 0x000000009E3779B1ULL, 0xB0A8EEB2C5D5299CULL }, /* XSUM_XXH64_testdata[4443] */ + { 2222, 0x0000000000000000ULL, 0x7885414D0B49795CULL }, /* XSUM_XXH64_testdata[4444] */ + { 2222, 0x000000009E3779B1ULL, 0x910B794EF197A7BBULL }, /* XSUM_XXH64_testdata[4445] */ + { 2223, 0x0000000000000000ULL, 0xFF497304FD166727ULL }, /* XSUM_XXH64_testdata[4446] */ + { 2223, 0x000000009E3779B1ULL, 0xAC73280C18A80AEFULL }, /* XSUM_XXH64_testdata[4447] */ + { 2224, 0x0000000000000000ULL, 0x069E6032BEF38FBDULL }, /* XSUM_XXH64_testdata[4448] */ + { 2224, 0x000000009E3779B1ULL, 0x797D9C366E7ABA47ULL }, /* XSUM_XXH64_testdata[4449] */ + { 2225, 0x0000000000000000ULL, 0xC1A1CC0697A3E69AULL }, /* XSUM_XXH64_testdata[4450] */ + { 2225, 0x000000009E3779B1ULL, 0xDCE1BA39A6851E4FULL }, /* XSUM_XXH64_testdata[4451] */ + { 2226, 0x0000000000000000ULL, 0xCFEBACA9082F6824ULL }, /* XSUM_XXH64_testdata[4452] */ + { 2226, 0x000000009E3779B1ULL, 0x0500FFBF161E2029ULL }, /* XSUM_XXH64_testdata[4453] */ + { 2227, 0x0000000000000000ULL, 0xDAA7C0ECC87410A9ULL }, /* XSUM_XXH64_testdata[4454] */ + { 2227, 0x000000009E3779B1ULL, 0xB75D9A6C59DD1906ULL }, /* XSUM_XXH64_testdata[4455] */ + { 2228, 0x0000000000000000ULL, 0x7ECD3344438775D0ULL }, /* XSUM_XXH64_testdata[4456] */ + { 2228, 0x000000009E3779B1ULL, 0xE87B88569A25C114ULL }, /* XSUM_XXH64_testdata[4457] */ + { 2229, 0x0000000000000000ULL, 0x7BD53548999459D8ULL }, /* XSUM_XXH64_testdata[4458] */ + { 2229, 0x000000009E3779B1ULL, 0x41BBC84E86B684C0ULL }, /* XSUM_XXH64_testdata[4459] */ + { 2230, 0x0000000000000000ULL, 0x0BC2981F2195C8DEULL }, /* XSUM_XXH64_testdata[4460] */ + { 2230, 0x000000009E3779B1ULL, 0x2E5BFCCBF9FE8B53ULL }, /* XSUM_XXH64_testdata[4461] */ + { 2231, 0x0000000000000000ULL, 0x2A9AD19F8C6ACE5EULL }, /* XSUM_XXH64_testdata[4462] */ + { 2231, 0x000000009E3779B1ULL, 0x66A740081CAE9DFDULL }, /* XSUM_XXH64_testdata[4463] */ + { 2232, 0x0000000000000000ULL, 0x8C5E37424C013BBAULL }, /* XSUM_XXH64_testdata[4464] */ + { 2232, 0x000000009E3779B1ULL, 0x10AF83BCE220CE28ULL }, /* XSUM_XXH64_testdata[4465] */ + { 2233, 0x0000000000000000ULL, 0x5B96FF5892DF3413ULL }, /* XSUM_XXH64_testdata[4466] */ + { 2233, 0x000000009E3779B1ULL, 0x75E7776881D9404DULL }, /* XSUM_XXH64_testdata[4467] */ + { 2234, 0x0000000000000000ULL, 0xD6CEED4B716B2951ULL }, /* XSUM_XXH64_testdata[4468] */ + { 2234, 0x000000009E3779B1ULL, 0x9C0CFFC209619D87ULL }, /* XSUM_XXH64_testdata[4469] */ + { 2235, 0x0000000000000000ULL, 0xB7BB9524613C192DULL }, /* XSUM_XXH64_testdata[4470] */ + { 2235, 0x000000009E3779B1ULL, 0x3F0CF500A8184665ULL }, /* XSUM_XXH64_testdata[4471] */ + { 2236, 0x0000000000000000ULL, 0x853FBF6ADC430171ULL }, /* XSUM_XXH64_testdata[4472] */ + { 2236, 0x000000009E3779B1ULL, 0xC3A9B3578006AA1DULL }, /* XSUM_XXH64_testdata[4473] */ + { 2237, 0x0000000000000000ULL, 0x339BF4AC6C40F8C7ULL }, /* XSUM_XXH64_testdata[4474] */ + { 2237, 0x000000009E3779B1ULL, 0xBCE48D8B50E4B03DULL }, /* XSUM_XXH64_testdata[4475] */ + { 2238, 0x0000000000000000ULL, 0x8F430FC26D3C50CAULL }, /* XSUM_XXH64_testdata[4476] */ + { 2238, 0x000000009E3779B1ULL, 0x8570C928FF4DCC6EULL }, /* XSUM_XXH64_testdata[4477] */ + { 2239, 0x0000000000000000ULL, 0x8BDC993521552A4AULL }, /* XSUM_XXH64_testdata[4478] */ + { 2239, 0x000000009E3779B1ULL, 0xD7855CB6D758CDA4ULL }, /* XSUM_XXH64_testdata[4479] */ + { 2240, 0x0000000000000000ULL, 0xA4EDB3C85B99B1D9ULL }, /* XSUM_XXH64_testdata[4480] */ + { 2240, 0x000000009E3779B1ULL, 0x060E004CF6EA043BULL }, /* XSUM_XXH64_testdata[4481] */ + { 2241, 0x0000000000000000ULL, 0x8B78225179C821F2ULL }, /* XSUM_XXH64_testdata[4482] */ + { 2241, 0x000000009E3779B1ULL, 0xBB23610C9E557801ULL }, /* XSUM_XXH64_testdata[4483] */ + { 2242, 0x0000000000000000ULL, 0x120EDB07A2C80708ULL }, /* XSUM_XXH64_testdata[4484] */ + { 2242, 0x000000009E3779B1ULL, 0x761ACDCD301B7D63ULL }, /* XSUM_XXH64_testdata[4485] */ + { 2243, 0x0000000000000000ULL, 0x6580659B3A2FD03DULL }, /* XSUM_XXH64_testdata[4486] */ + { 2243, 0x000000009E3779B1ULL, 0x7E2E7265EBD87AE5ULL }, /* XSUM_XXH64_testdata[4487] */ + { 2244, 0x0000000000000000ULL, 0x52E7519B104065DBULL }, /* XSUM_XXH64_testdata[4488] */ + { 2244, 0x000000009E3779B1ULL, 0x9DCCA1CE5EC6CFFBULL }, /* XSUM_XXH64_testdata[4489] */ + { 2245, 0x0000000000000000ULL, 0x88292BA16A129A82ULL }, /* XSUM_XXH64_testdata[4490] */ + { 2245, 0x000000009E3779B1ULL, 0xF5B9C2C00EBD4D9FULL }, /* XSUM_XXH64_testdata[4491] */ + { 2246, 0x0000000000000000ULL, 0xDA42C29076CD459FULL }, /* XSUM_XXH64_testdata[4492] */ + { 2246, 0x000000009E3779B1ULL, 0x20303C8FB691C26FULL }, /* XSUM_XXH64_testdata[4493] */ + { 2247, 0x0000000000000000ULL, 0x99940E63B89F4099ULL }, /* XSUM_XXH64_testdata[4494] */ + { 2247, 0x000000009E3779B1ULL, 0xED2AFF25ADF263F4ULL }, /* XSUM_XXH64_testdata[4495] */ + { 2248, 0x0000000000000000ULL, 0x2330F68891304F45ULL }, /* XSUM_XXH64_testdata[4496] */ + { 2248, 0x000000009E3779B1ULL, 0x32856C4B0A8D113FULL }, /* XSUM_XXH64_testdata[4497] */ + { 2249, 0x0000000000000000ULL, 0x9054C2259FF9F3D1ULL }, /* XSUM_XXH64_testdata[4498] */ + { 2249, 0x000000009E3779B1ULL, 0x1A712C61064E34F0ULL }, /* XSUM_XXH64_testdata[4499] */ + { 2250, 0x0000000000000000ULL, 0xD9F20ACEB8E742AEULL }, /* XSUM_XXH64_testdata[4500] */ + { 2250, 0x000000009E3779B1ULL, 0xC85024E946BB658FULL }, /* XSUM_XXH64_testdata[4501] */ + { 2251, 0x0000000000000000ULL, 0x257EF7380625ECC2ULL }, /* XSUM_XXH64_testdata[4502] */ + { 2251, 0x000000009E3779B1ULL, 0x880CF61E5BD4F4C3ULL }, /* XSUM_XXH64_testdata[4503] */ + { 2252, 0x0000000000000000ULL, 0x585150AF2B8B0F15ULL }, /* XSUM_XXH64_testdata[4504] */ + { 2252, 0x000000009E3779B1ULL, 0xF7FBD1070B8620C9ULL }, /* XSUM_XXH64_testdata[4505] */ + { 2253, 0x0000000000000000ULL, 0xD948F40B62F2CA3CULL }, /* XSUM_XXH64_testdata[4506] */ + { 2253, 0x000000009E3779B1ULL, 0x3EB8CD810585DB47ULL }, /* XSUM_XXH64_testdata[4507] */ + { 2254, 0x0000000000000000ULL, 0x36959B85694CDF82ULL }, /* XSUM_XXH64_testdata[4508] */ + { 2254, 0x000000009E3779B1ULL, 0x3410D647B060BC1CULL }, /* XSUM_XXH64_testdata[4509] */ + { 2255, 0x0000000000000000ULL, 0xE971A77229021E09ULL }, /* XSUM_XXH64_testdata[4510] */ + { 2255, 0x000000009E3779B1ULL, 0x6A5125A7251676BDULL }, /* XSUM_XXH64_testdata[4511] */ + { 2256, 0x0000000000000000ULL, 0xACFF0BC6A1CCF55AULL }, /* XSUM_XXH64_testdata[4512] */ + { 2256, 0x000000009E3779B1ULL, 0xC517D3822BD73533ULL }, /* XSUM_XXH64_testdata[4513] */ + { 2257, 0x0000000000000000ULL, 0x7712ECAEA7E06536ULL }, /* XSUM_XXH64_testdata[4514] */ + { 2257, 0x000000009E3779B1ULL, 0x784ACD0A4BE584A0ULL }, /* XSUM_XXH64_testdata[4515] */ + { 2258, 0x0000000000000000ULL, 0x2B3263AFF5F7AA1EULL }, /* XSUM_XXH64_testdata[4516] */ + { 2258, 0x000000009E3779B1ULL, 0x9F765071B78D21D3ULL }, /* XSUM_XXH64_testdata[4517] */ + { 2259, 0x0000000000000000ULL, 0xB6629C678F4F0E36ULL }, /* XSUM_XXH64_testdata[4518] */ + { 2259, 0x000000009E3779B1ULL, 0xFDBC862495A9B08CULL }, /* XSUM_XXH64_testdata[4519] */ + { 2260, 0x0000000000000000ULL, 0xDB9244AB9E3F3D47ULL }, /* XSUM_XXH64_testdata[4520] */ + { 2260, 0x000000009E3779B1ULL, 0xE015673D5D4F4717ULL }, /* XSUM_XXH64_testdata[4521] */ + { 2261, 0x0000000000000000ULL, 0x153DA280668EF8E3ULL }, /* XSUM_XXH64_testdata[4522] */ + { 2261, 0x000000009E3779B1ULL, 0x428415636FFC608AULL }, /* XSUM_XXH64_testdata[4523] */ + { 2262, 0x0000000000000000ULL, 0x3C78690CA99786C3ULL }, /* XSUM_XXH64_testdata[4524] */ + { 2262, 0x000000009E3779B1ULL, 0xD99C1CC39A29D546ULL }, /* XSUM_XXH64_testdata[4525] */ + { 2263, 0x0000000000000000ULL, 0xF3BB118C5F9FDD8EULL }, /* XSUM_XXH64_testdata[4526] */ + { 2263, 0x000000009E3779B1ULL, 0x96E3E5EA0D2981C5ULL }, /* XSUM_XXH64_testdata[4527] */ + { 2264, 0x0000000000000000ULL, 0xA1E82D83E64FA8F6ULL }, /* XSUM_XXH64_testdata[4528] */ + { 2264, 0x000000009E3779B1ULL, 0x671647C20BD276C6ULL }, /* XSUM_XXH64_testdata[4529] */ + { 2265, 0x0000000000000000ULL, 0xB08D6D91C32499DCULL }, /* XSUM_XXH64_testdata[4530] */ + { 2265, 0x000000009E3779B1ULL, 0x8039AFB80DA01CB8ULL }, /* XSUM_XXH64_testdata[4531] */ + { 2266, 0x0000000000000000ULL, 0x6D58CE0AC948A08DULL }, /* XSUM_XXH64_testdata[4532] */ + { 2266, 0x000000009E3779B1ULL, 0x2D3ADE22573C6A42ULL }, /* XSUM_XXH64_testdata[4533] */ + { 2267, 0x0000000000000000ULL, 0xD0D3DBAD82E89255ULL }, /* XSUM_XXH64_testdata[4534] */ + { 2267, 0x000000009E3779B1ULL, 0x4C59144B31D9484CULL }, /* XSUM_XXH64_testdata[4535] */ + { 2268, 0x0000000000000000ULL, 0xF933EC3E29F41FA2ULL }, /* XSUM_XXH64_testdata[4536] */ + { 2268, 0x000000009E3779B1ULL, 0x000CF95EFC6B201FULL }, /* XSUM_XXH64_testdata[4537] */ + { 2269, 0x0000000000000000ULL, 0x4D796029C1E45F38ULL }, /* XSUM_XXH64_testdata[4538] */ + { 2269, 0x000000009E3779B1ULL, 0xC54833FEAE801299ULL }, /* XSUM_XXH64_testdata[4539] */ + { 2270, 0x0000000000000000ULL, 0xE65833FC49951FF1ULL }, /* XSUM_XXH64_testdata[4540] */ + { 2270, 0x000000009E3779B1ULL, 0xB2A27F1560831924ULL }, /* XSUM_XXH64_testdata[4541] */ + { 2271, 0x0000000000000000ULL, 0x5E69F9F89370B53BULL }, /* XSUM_XXH64_testdata[4542] */ + { 2271, 0x000000009E3779B1ULL, 0x2D376C111831D238ULL }, /* XSUM_XXH64_testdata[4543] */ + { 2272, 0x0000000000000000ULL, 0x328C7DE3F3D1BA5CULL }, /* XSUM_XXH64_testdata[4544] */ + { 2272, 0x000000009E3779B1ULL, 0x0B98153EDE6651E1ULL }, /* XSUM_XXH64_testdata[4545] */ + { 2273, 0x0000000000000000ULL, 0x84ED20B9FE9A5CAFULL }, /* XSUM_XXH64_testdata[4546] */ + { 2273, 0x000000009E3779B1ULL, 0xFB70A28FCA7850EEULL }, /* XSUM_XXH64_testdata[4547] */ + { 2274, 0x0000000000000000ULL, 0x38CD3A8EA92E56D8ULL }, /* XSUM_XXH64_testdata[4548] */ + { 2274, 0x000000009E3779B1ULL, 0xB841B29491DE9441ULL }, /* XSUM_XXH64_testdata[4549] */ + { 2275, 0x0000000000000000ULL, 0x2BB9FF4361F2B036ULL }, /* XSUM_XXH64_testdata[4550] */ + { 2275, 0x000000009E3779B1ULL, 0x89B85A221E0C2F41ULL }, /* XSUM_XXH64_testdata[4551] */ + { 2276, 0x0000000000000000ULL, 0xF6920A2B4E032F47ULL }, /* XSUM_XXH64_testdata[4552] */ + { 2276, 0x000000009E3779B1ULL, 0x500F59F6905B78A4ULL }, /* XSUM_XXH64_testdata[4553] */ + { 2277, 0x0000000000000000ULL, 0xBD8E83C8E680AC2DULL }, /* XSUM_XXH64_testdata[4554] */ + { 2277, 0x000000009E3779B1ULL, 0x42643127FD68B9F5ULL }, /* XSUM_XXH64_testdata[4555] */ + { 2278, 0x0000000000000000ULL, 0x9DB7C2198A819D29ULL }, /* XSUM_XXH64_testdata[4556] */ + { 2278, 0x000000009E3779B1ULL, 0x1B9F4D2633BFFDA1ULL }, /* XSUM_XXH64_testdata[4557] */ + { 2279, 0x0000000000000000ULL, 0x1C2FC333986267B3ULL }, /* XSUM_XXH64_testdata[4558] */ + { 2279, 0x000000009E3779B1ULL, 0xE86F68BA001578B0ULL }, /* XSUM_XXH64_testdata[4559] */ + { 2280, 0x0000000000000000ULL, 0x00F74103C42AE49FULL }, /* XSUM_XXH64_testdata[4560] */ + { 2280, 0x000000009E3779B1ULL, 0x468B3278B42D9504ULL }, /* XSUM_XXH64_testdata[4561] */ + { 2281, 0x0000000000000000ULL, 0x1A45F40ED25EEA36ULL }, /* XSUM_XXH64_testdata[4562] */ + { 2281, 0x000000009E3779B1ULL, 0xB5FE42710AA3865FULL }, /* XSUM_XXH64_testdata[4563] */ + { 2282, 0x0000000000000000ULL, 0x2E965632A7687B1FULL }, /* XSUM_XXH64_testdata[4564] */ + { 2282, 0x000000009E3779B1ULL, 0x522BE2C22DF0CCB6ULL }, /* XSUM_XXH64_testdata[4565] */ + { 2283, 0x0000000000000000ULL, 0x8695C242C8AB1C4BULL }, /* XSUM_XXH64_testdata[4566] */ + { 2283, 0x000000009E3779B1ULL, 0x5D4FA6EF65F0D89DULL }, /* XSUM_XXH64_testdata[4567] */ + { 2284, 0x0000000000000000ULL, 0x6A176CFC0D6D7DEDULL }, /* XSUM_XXH64_testdata[4568] */ + { 2284, 0x000000009E3779B1ULL, 0x4AFF9EE348EB6C37ULL }, /* XSUM_XXH64_testdata[4569] */ + { 2285, 0x0000000000000000ULL, 0x0DB394C249F78008ULL }, /* XSUM_XXH64_testdata[4570] */ + { 2285, 0x000000009E3779B1ULL, 0x5F3A025A50EB5675ULL }, /* XSUM_XXH64_testdata[4571] */ + { 2286, 0x0000000000000000ULL, 0x5B3B9F42D12B961FULL }, /* XSUM_XXH64_testdata[4572] */ + { 2286, 0x000000009E3779B1ULL, 0xFF04B09D1B4B205BULL }, /* XSUM_XXH64_testdata[4573] */ + { 2287, 0x0000000000000000ULL, 0xA46616A9180B9099ULL }, /* XSUM_XXH64_testdata[4574] */ + { 2287, 0x000000009E3779B1ULL, 0x4CCA2D97D1A40B96ULL }, /* XSUM_XXH64_testdata[4575] */ + { 2288, 0x0000000000000000ULL, 0xD3685B2F6B3441F6ULL }, /* XSUM_XXH64_testdata[4576] */ + { 2288, 0x000000009E3779B1ULL, 0x435369E5718E9FD4ULL }, /* XSUM_XXH64_testdata[4577] */ + { 2289, 0x0000000000000000ULL, 0xE488DE01C7C023FFULL }, /* XSUM_XXH64_testdata[4578] */ + { 2289, 0x000000009E3779B1ULL, 0x52CEFF0006731117ULL }, /* XSUM_XXH64_testdata[4579] */ + { 2290, 0x0000000000000000ULL, 0x3F48D4817F6425A5ULL }, /* XSUM_XXH64_testdata[4580] */ + { 2290, 0x000000009E3779B1ULL, 0x7A9FCC625884992EULL }, /* XSUM_XXH64_testdata[4581] */ + { 2291, 0x0000000000000000ULL, 0xB61CC3BCD8F244DAULL }, /* XSUM_XXH64_testdata[4582] */ + { 2291, 0x000000009E3779B1ULL, 0x47D7831F6F4B00B2ULL }, /* XSUM_XXH64_testdata[4583] */ + { 2292, 0x0000000000000000ULL, 0x7322E733802E54CCULL }, /* XSUM_XXH64_testdata[4584] */ + { 2292, 0x000000009E3779B1ULL, 0xF245C8A07F342C46ULL }, /* XSUM_XXH64_testdata[4585] */ + { 2293, 0x0000000000000000ULL, 0xD3CA56FBE296AFF7ULL }, /* XSUM_XXH64_testdata[4586] */ + { 2293, 0x000000009E3779B1ULL, 0xDFF15313D1D8EEE0ULL }, /* XSUM_XXH64_testdata[4587] */ + { 2294, 0x0000000000000000ULL, 0xE84887694E12ED24ULL }, /* XSUM_XXH64_testdata[4588] */ + { 2294, 0x000000009E3779B1ULL, 0x722CA0E074483A6BULL }, /* XSUM_XXH64_testdata[4589] */ + { 2295, 0x0000000000000000ULL, 0x2E91150AEAAF9341ULL }, /* XSUM_XXH64_testdata[4590] */ + { 2295, 0x000000009E3779B1ULL, 0xCE2C75ECB4539C55ULL }, /* XSUM_XXH64_testdata[4591] */ + { 2296, 0x0000000000000000ULL, 0x86CB76ED9254BA05ULL }, /* XSUM_XXH64_testdata[4592] */ + { 2296, 0x000000009E3779B1ULL, 0xF80CA10AA03250F2ULL }, /* XSUM_XXH64_testdata[4593] */ + { 2297, 0x0000000000000000ULL, 0x1E74D1A3940FE53AULL }, /* XSUM_XXH64_testdata[4594] */ + { 2297, 0x000000009E3779B1ULL, 0x1B042027757C3E38ULL }, /* XSUM_XXH64_testdata[4595] */ + { 2298, 0x0000000000000000ULL, 0x14C8DAA3B36274D3ULL }, /* XSUM_XXH64_testdata[4596] */ + { 2298, 0x000000009E3779B1ULL, 0x937BED19A474172DULL }, /* XSUM_XXH64_testdata[4597] */ + { 2299, 0x0000000000000000ULL, 0x23DA1625E34EB6B1ULL }, /* XSUM_XXH64_testdata[4598] */ + { 2299, 0x000000009E3779B1ULL, 0xC942EDFB4BE3D8F8ULL }, /* XSUM_XXH64_testdata[4599] */ + { 2300, 0x0000000000000000ULL, 0xE0325038B32C31B2ULL }, /* XSUM_XXH64_testdata[4600] */ + { 2300, 0x000000009E3779B1ULL, 0xE3EEADF724ACFD9CULL }, /* XSUM_XXH64_testdata[4601] */ + { 2301, 0x0000000000000000ULL, 0x94A319C971C6E2BDULL }, /* XSUM_XXH64_testdata[4602] */ + { 2301, 0x000000009E3779B1ULL, 0xC8221C5AF7DE5BA8ULL }, /* XSUM_XXH64_testdata[4603] */ + { 2302, 0x0000000000000000ULL, 0xF892D0A36889CF34ULL }, /* XSUM_XXH64_testdata[4604] */ + { 2302, 0x000000009E3779B1ULL, 0x2A3BFB8C3EC5EC05ULL }, /* XSUM_XXH64_testdata[4605] */ + { 2303, 0x0000000000000000ULL, 0xB4F5B60780F7B602ULL }, /* XSUM_XXH64_testdata[4606] */ + { 2303, 0x000000009E3779B1ULL, 0xB181F3BAEEE93EEDULL }, /* XSUM_XXH64_testdata[4607] */ + { 2304, 0x0000000000000000ULL, 0x8E3B4456E9920D23ULL }, /* XSUM_XXH64_testdata[4608] */ + { 2304, 0x000000009E3779B1ULL, 0xB3F18FE1DEB2D1ADULL }, /* XSUM_XXH64_testdata[4609] */ + { 2305, 0x0000000000000000ULL, 0xF9EC904A33F25C08ULL }, /* XSUM_XXH64_testdata[4610] */ + { 2305, 0x000000009E3779B1ULL, 0x1C06E518AB5B6AC2ULL }, /* XSUM_XXH64_testdata[4611] */ + { 2306, 0x0000000000000000ULL, 0x9993A96C6581FFB9ULL }, /* XSUM_XXH64_testdata[4612] */ + { 2306, 0x000000009E3779B1ULL, 0xD5945BAAEFD49C0FULL }, /* XSUM_XXH64_testdata[4613] */ + { 2307, 0x0000000000000000ULL, 0x8B10505229730C95ULL }, /* XSUM_XXH64_testdata[4614] */ + { 2307, 0x000000009E3779B1ULL, 0xCC0DDBA53037E4BEULL }, /* XSUM_XXH64_testdata[4615] */ + { 2308, 0x0000000000000000ULL, 0xE75F22D62B979100ULL }, /* XSUM_XXH64_testdata[4616] */ + { 2308, 0x000000009E3779B1ULL, 0xAF2D012DC220FC61ULL }, /* XSUM_XXH64_testdata[4617] */ + { 2309, 0x0000000000000000ULL, 0xD5978DEA6C2FC7FCULL }, /* XSUM_XXH64_testdata[4618] */ + { 2309, 0x000000009E3779B1ULL, 0xB8D6A282385A2F73ULL }, /* XSUM_XXH64_testdata[4619] */ + { 2310, 0x0000000000000000ULL, 0x4AC7284EB5DCDB92ULL }, /* XSUM_XXH64_testdata[4620] */ + { 2310, 0x000000009E3779B1ULL, 0xD1C2CA7D21D419D5ULL }, /* XSUM_XXH64_testdata[4621] */ + { 2311, 0x0000000000000000ULL, 0x0D8E9BBB3DAD6A70ULL }, /* XSUM_XXH64_testdata[4622] */ + { 2311, 0x000000009E3779B1ULL, 0x2F11A240628784EFULL }, /* XSUM_XXH64_testdata[4623] */ + { 2312, 0x0000000000000000ULL, 0xC664B9EE8D092515ULL }, /* XSUM_XXH64_testdata[4624] */ + { 2312, 0x000000009E3779B1ULL, 0xC0AA15CDE0E11EDCULL }, /* XSUM_XXH64_testdata[4625] */ + { 2313, 0x0000000000000000ULL, 0x6CC3D3D5E8601E0FULL }, /* XSUM_XXH64_testdata[4626] */ + { 2313, 0x000000009E3779B1ULL, 0x03A456C7C66E6BC7ULL }, /* XSUM_XXH64_testdata[4627] */ + { 2314, 0x0000000000000000ULL, 0x4629325F62C7F2A4ULL }, /* XSUM_XXH64_testdata[4628] */ + { 2314, 0x000000009E3779B1ULL, 0x0669A42F7CE8A9E0ULL }, /* XSUM_XXH64_testdata[4629] */ + { 2315, 0x0000000000000000ULL, 0x91E089E8C0C6039AULL }, /* XSUM_XXH64_testdata[4630] */ + { 2315, 0x000000009E3779B1ULL, 0xDBB0732A662EFFA1ULL }, /* XSUM_XXH64_testdata[4631] */ + { 2316, 0x0000000000000000ULL, 0x6FF296F1AEA06FC2ULL }, /* XSUM_XXH64_testdata[4632] */ + { 2316, 0x000000009E3779B1ULL, 0x23ABE9C7FAC1A6A9ULL }, /* XSUM_XXH64_testdata[4633] */ + { 2317, 0x0000000000000000ULL, 0xC82580359645B2BFULL }, /* XSUM_XXH64_testdata[4634] */ + { 2317, 0x000000009E3779B1ULL, 0xA7901B5AADDAD889ULL }, /* XSUM_XXH64_testdata[4635] */ + { 2318, 0x0000000000000000ULL, 0xCB742ADF0C8939CFULL }, /* XSUM_XXH64_testdata[4636] */ + { 2318, 0x000000009E3779B1ULL, 0x84DA994B4CCAB214ULL }, /* XSUM_XXH64_testdata[4637] */ + { 2319, 0x0000000000000000ULL, 0xA8207CE6E5363827ULL }, /* XSUM_XXH64_testdata[4638] */ + { 2319, 0x000000009E3779B1ULL, 0x6158A08BE1D71591ULL }, /* XSUM_XXH64_testdata[4639] */ + { 2320, 0x0000000000000000ULL, 0xA1FF7D9145B440F3ULL }, /* XSUM_XXH64_testdata[4640] */ + { 2320, 0x000000009E3779B1ULL, 0x20E3D4E00D0F2B4EULL }, /* XSUM_XXH64_testdata[4641] */ + { 2321, 0x0000000000000000ULL, 0xC7E837B48A46B624ULL }, /* XSUM_XXH64_testdata[4642] */ + { 2321, 0x000000009E3779B1ULL, 0x0067B5C1A3303D11ULL }, /* XSUM_XXH64_testdata[4643] */ + { 2322, 0x0000000000000000ULL, 0xC0B1F14CA509F6BEULL }, /* XSUM_XXH64_testdata[4644] */ + { 2322, 0x000000009E3779B1ULL, 0xF5BB7E25CB0C97B3ULL }, /* XSUM_XXH64_testdata[4645] */ + { 2323, 0x0000000000000000ULL, 0x54956F7DBFC0E0F0ULL }, /* XSUM_XXH64_testdata[4646] */ + { 2323, 0x000000009E3779B1ULL, 0x6864C7F182E55680ULL }, /* XSUM_XXH64_testdata[4647] */ + { 2324, 0x0000000000000000ULL, 0xF551D783676A4264ULL }, /* XSUM_XXH64_testdata[4648] */ + { 2324, 0x000000009E3779B1ULL, 0x79AA6EB9CF94F6DDULL }, /* XSUM_XXH64_testdata[4649] */ + { 2325, 0x0000000000000000ULL, 0xC651194A47049BA6ULL }, /* XSUM_XXH64_testdata[4650] */ + { 2325, 0x000000009E3779B1ULL, 0x32498A87773862D5ULL }, /* XSUM_XXH64_testdata[4651] */ + { 2326, 0x0000000000000000ULL, 0x98A277D70004DA42ULL }, /* XSUM_XXH64_testdata[4652] */ + { 2326, 0x000000009E3779B1ULL, 0xCDBDB7A4BA95F214ULL }, /* XSUM_XXH64_testdata[4653] */ + { 2327, 0x0000000000000000ULL, 0x0CFB97EAD40EE853ULL }, /* XSUM_XXH64_testdata[4654] */ + { 2327, 0x000000009E3779B1ULL, 0x3F74888FE852A265ULL }, /* XSUM_XXH64_testdata[4655] */ + { 2328, 0x0000000000000000ULL, 0xA97947FA2B0CB6AEULL }, /* XSUM_XXH64_testdata[4656] */ + { 2328, 0x000000009E3779B1ULL, 0x5EDB0D23A0FECF0AULL }, /* XSUM_XXH64_testdata[4657] */ + { 2329, 0x0000000000000000ULL, 0x226C1785A067AA47ULL }, /* XSUM_XXH64_testdata[4658] */ + { 2329, 0x000000009E3779B1ULL, 0xAD334DB5FDAE7DC4ULL }, /* XSUM_XXH64_testdata[4659] */ + { 2330, 0x0000000000000000ULL, 0x562735D0DDD955E2ULL }, /* XSUM_XXH64_testdata[4660] */ + { 2330, 0x000000009E3779B1ULL, 0x74334E63A80ED46CULL }, /* XSUM_XXH64_testdata[4661] */ + { 2331, 0x0000000000000000ULL, 0x0133C3CDC9C6A8E4ULL }, /* XSUM_XXH64_testdata[4662] */ + { 2331, 0x000000009E3779B1ULL, 0x6573DCC9FA1EB96FULL }, /* XSUM_XXH64_testdata[4663] */ + { 2332, 0x0000000000000000ULL, 0xE8456F16D665C396ULL }, /* XSUM_XXH64_testdata[4664] */ + { 2332, 0x000000009E3779B1ULL, 0x8084F3B58F2ABA0FULL }, /* XSUM_XXH64_testdata[4665] */ + { 2333, 0x0000000000000000ULL, 0x45DCCF397E3A7DDBULL }, /* XSUM_XXH64_testdata[4666] */ + { 2333, 0x000000009E3779B1ULL, 0x68BD55C35FDE2330ULL }, /* XSUM_XXH64_testdata[4667] */ + { 2334, 0x0000000000000000ULL, 0x85702F6BE7CCEBEEULL }, /* XSUM_XXH64_testdata[4668] */ + { 2334, 0x000000009E3779B1ULL, 0xC3377D4BD150FB5EULL }, /* XSUM_XXH64_testdata[4669] */ + { 2335, 0x0000000000000000ULL, 0x71CF09894726BDC5ULL }, /* XSUM_XXH64_testdata[4670] */ + { 2335, 0x000000009E3779B1ULL, 0xEBB9A19C5BE6088BULL }, /* XSUM_XXH64_testdata[4671] */ + { 2336, 0x0000000000000000ULL, 0x7AFEED22ED1FDDA3ULL }, /* XSUM_XXH64_testdata[4672] */ + { 2336, 0x000000009E3779B1ULL, 0x9A0B1942215FA443ULL }, /* XSUM_XXH64_testdata[4673] */ + { 2337, 0x0000000000000000ULL, 0x75AE7F37074A8718ULL }, /* XSUM_XXH64_testdata[4674] */ + { 2337, 0x000000009E3779B1ULL, 0x5D8C2AD83914674EULL }, /* XSUM_XXH64_testdata[4675] */ + { 2338, 0x0000000000000000ULL, 0x271F577E67DF0ECAULL }, /* XSUM_XXH64_testdata[4676] */ + { 2338, 0x000000009E3779B1ULL, 0x522453CD6F5A9E1CULL }, /* XSUM_XXH64_testdata[4677] */ + { 2339, 0x0000000000000000ULL, 0x53DD28DD9182963CULL }, /* XSUM_XXH64_testdata[4678] */ + { 2339, 0x000000009E3779B1ULL, 0x5D763D3190130286ULL }, /* XSUM_XXH64_testdata[4679] */ + { 2340, 0x0000000000000000ULL, 0xF1A4D5C9B1E2947BULL }, /* XSUM_XXH64_testdata[4680] */ + { 2340, 0x000000009E3779B1ULL, 0x8E25600C8FBD8E61ULL }, /* XSUM_XXH64_testdata[4681] */ + { 2341, 0x0000000000000000ULL, 0x2D94A90F0FF0F5D8ULL }, /* XSUM_XXH64_testdata[4682] */ + { 2341, 0x000000009E3779B1ULL, 0xDB59CB161A258E4AULL }, /* XSUM_XXH64_testdata[4683] */ + { 2342, 0x0000000000000000ULL, 0x430109A504BF6F2EULL }, /* XSUM_XXH64_testdata[4684] */ + { 2342, 0x000000009E3779B1ULL, 0x709B74596605093DULL }, /* XSUM_XXH64_testdata[4685] */ + { 2343, 0x0000000000000000ULL, 0xB7AA0FC2C4BCDB26ULL }, /* XSUM_XXH64_testdata[4686] */ + { 2343, 0x000000009E3779B1ULL, 0x0141733CFDA3A919ULL }, /* XSUM_XXH64_testdata[4687] */ + { 2344, 0x0000000000000000ULL, 0x053A9FB945BB2FB0ULL }, /* XSUM_XXH64_testdata[4688] */ + { 2344, 0x000000009E3779B1ULL, 0x54F43B3530ED4138ULL }, /* XSUM_XXH64_testdata[4689] */ + { 2345, 0x0000000000000000ULL, 0x87065BE673B092CDULL }, /* XSUM_XXH64_testdata[4690] */ + { 2345, 0x000000009E3779B1ULL, 0x2748BE6BC5F70F7CULL }, /* XSUM_XXH64_testdata[4691] */ + { 2346, 0x0000000000000000ULL, 0xB7B58B64CF18A9CBULL }, /* XSUM_XXH64_testdata[4692] */ + { 2346, 0x000000009E3779B1ULL, 0x5E1ED5187289DC26ULL }, /* XSUM_XXH64_testdata[4693] */ + { 2347, 0x0000000000000000ULL, 0xE29A984F90681413ULL }, /* XSUM_XXH64_testdata[4694] */ + { 2347, 0x000000009E3779B1ULL, 0x2EE50E23630CA8F2ULL }, /* XSUM_XXH64_testdata[4695] */ + { 2348, 0x0000000000000000ULL, 0xD3084805FDA4CC3FULL }, /* XSUM_XXH64_testdata[4696] */ + { 2348, 0x000000009E3779B1ULL, 0xFB84C6264B3E58EAULL }, /* XSUM_XXH64_testdata[4697] */ + { 2349, 0x0000000000000000ULL, 0x7323FF7A3BAFB58BULL }, /* XSUM_XXH64_testdata[4698] */ + { 2349, 0x000000009E3779B1ULL, 0xA191E02F43D5786CULL }, /* XSUM_XXH64_testdata[4699] */ + { 2350, 0x0000000000000000ULL, 0xDE7BE0B2E00DD72CULL }, /* XSUM_XXH64_testdata[4700] */ + { 2350, 0x000000009E3779B1ULL, 0xB5971C9DC0E2F341ULL }, /* XSUM_XXH64_testdata[4701] */ + { 2351, 0x0000000000000000ULL, 0x617D28B0A6F5EF38ULL }, /* XSUM_XXH64_testdata[4702] */ + { 2351, 0x000000009E3779B1ULL, 0x6140C9FBD7674F6AULL }, /* XSUM_XXH64_testdata[4703] */ + { 2352, 0x0000000000000000ULL, 0x446602E39C8DF6DFULL }, /* XSUM_XXH64_testdata[4704] */ + { 2352, 0x000000009E3779B1ULL, 0xD4F8F9384CCB7408ULL }, /* XSUM_XXH64_testdata[4705] */ + { 2353, 0x0000000000000000ULL, 0xBD02CDCB7ECD85ACULL }, /* XSUM_XXH64_testdata[4706] */ + { 2353, 0x000000009E3779B1ULL, 0x8C6C145B17F33740ULL }, /* XSUM_XXH64_testdata[4707] */ + { 2354, 0x0000000000000000ULL, 0xF5E4EF40913621C3ULL }, /* XSUM_XXH64_testdata[4708] */ + { 2354, 0x000000009E3779B1ULL, 0x9BB5C26E646A6773ULL }, /* XSUM_XXH64_testdata[4709] */ + { 2355, 0x0000000000000000ULL, 0xCB954D7B7E4CF6F6ULL }, /* XSUM_XXH64_testdata[4710] */ + { 2355, 0x000000009E3779B1ULL, 0xFEC05106ABBF3DB4ULL }, /* XSUM_XXH64_testdata[4711] */ + { 2356, 0x0000000000000000ULL, 0x11844FC5DBBA5457ULL }, /* XSUM_XXH64_testdata[4712] */ + { 2356, 0x000000009E3779B1ULL, 0xC619CC1F604B47D9ULL }, /* XSUM_XXH64_testdata[4713] */ + { 2357, 0x0000000000000000ULL, 0xDB39970D51DDD2B8ULL }, /* XSUM_XXH64_testdata[4714] */ + { 2357, 0x000000009E3779B1ULL, 0x4618C5D5FDD17F7BULL }, /* XSUM_XXH64_testdata[4715] */ + { 2358, 0x0000000000000000ULL, 0x3B1B73B6CC669AB9ULL }, /* XSUM_XXH64_testdata[4716] */ + { 2358, 0x000000009E3779B1ULL, 0x86320F20DAB62244ULL }, /* XSUM_XXH64_testdata[4717] */ + { 2359, 0x0000000000000000ULL, 0x281C1B488188CB17ULL }, /* XSUM_XXH64_testdata[4718] */ + { 2359, 0x000000009E3779B1ULL, 0x225EFFFA3406AABCULL }, /* XSUM_XXH64_testdata[4719] */ + { 2360, 0x0000000000000000ULL, 0x17534E3D95F9FF8AULL }, /* XSUM_XXH64_testdata[4720] */ + { 2360, 0x000000009E3779B1ULL, 0x9B016AAA37A3509AULL }, /* XSUM_XXH64_testdata[4721] */ + { 2361, 0x0000000000000000ULL, 0xE41946A38094AFE0ULL }, /* XSUM_XXH64_testdata[4722] */ + { 2361, 0x000000009E3779B1ULL, 0x4D7C4AB8116DA2C6ULL }, /* XSUM_XXH64_testdata[4723] */ + { 2362, 0x0000000000000000ULL, 0xE33F9D21881422DFULL }, /* XSUM_XXH64_testdata[4724] */ + { 2362, 0x000000009E3779B1ULL, 0x16872B377B08297CULL }, /* XSUM_XXH64_testdata[4725] */ + { 2363, 0x0000000000000000ULL, 0x92ACCB102883B68BULL }, /* XSUM_XXH64_testdata[4726] */ + { 2363, 0x000000009E3779B1ULL, 0x86756DE0DD22CF88ULL }, /* XSUM_XXH64_testdata[4727] */ + { 2364, 0x0000000000000000ULL, 0x6D56138FBB3AA9B2ULL }, /* XSUM_XXH64_testdata[4728] */ + { 2364, 0x000000009E3779B1ULL, 0x7C5133B340FBCA4DULL }, /* XSUM_XXH64_testdata[4729] */ + { 2365, 0x0000000000000000ULL, 0xEBA1559EA3D144D8ULL }, /* XSUM_XXH64_testdata[4730] */ + { 2365, 0x000000009E3779B1ULL, 0x52617C9F6377575DULL }, /* XSUM_XXH64_testdata[4731] */ + { 2366, 0x0000000000000000ULL, 0xD699E1684AE8AC2CULL }, /* XSUM_XXH64_testdata[4732] */ + { 2366, 0x000000009E3779B1ULL, 0x5ADF3092CFB6B2D3ULL }, /* XSUM_XXH64_testdata[4733] */ + { 2367, 0x0000000000000000ULL, 0xA82418DDEC0EA581ULL }, /* XSUM_XXH64_testdata[4734] */ + { 2367, 0x000000009E3779B1ULL, 0xA36A93C18052673AULL }, /* XSUM_XXH64_testdata[4735] */ + { 2368, 0x0000000000000000ULL, 0xAF8CF8D10D309C36ULL }, /* XSUM_XXH64_testdata[4736] */ + { 2368, 0x000000009E3779B1ULL, 0xA2074F4A3C812B8CULL }, /* XSUM_XXH64_testdata[4737] */ + { 2369, 0x0000000000000000ULL, 0x2560D93B7CEA8730ULL }, /* XSUM_XXH64_testdata[4738] */ + { 2369, 0x000000009E3779B1ULL, 0x8D864AADE0625064ULL }, /* XSUM_XXH64_testdata[4739] */ + { 2370, 0x0000000000000000ULL, 0x63FF121E1D2FAEF9ULL }, /* XSUM_XXH64_testdata[4740] */ + { 2370, 0x000000009E3779B1ULL, 0x9CE357AA8A949492ULL }, /* XSUM_XXH64_testdata[4741] */ + { 2371, 0x0000000000000000ULL, 0x24EC730E22E0493CULL }, /* XSUM_XXH64_testdata[4742] */ + { 2371, 0x000000009E3779B1ULL, 0xBC465E83A799264EULL }, /* XSUM_XXH64_testdata[4743] */ + { 2372, 0x0000000000000000ULL, 0x8B437F9B0CA010A4ULL }, /* XSUM_XXH64_testdata[4744] */ + { 2372, 0x000000009E3779B1ULL, 0xADFBA870D3B03A77ULL }, /* XSUM_XXH64_testdata[4745] */ + { 2373, 0x0000000000000000ULL, 0x4664E7BF2E7485C4ULL }, /* XSUM_XXH64_testdata[4746] */ + { 2373, 0x000000009E3779B1ULL, 0x62C33084E0FA0AB8ULL }, /* XSUM_XXH64_testdata[4747] */ + { 2374, 0x0000000000000000ULL, 0x09E007472D99580EULL }, /* XSUM_XXH64_testdata[4748] */ + { 2374, 0x000000009E3779B1ULL, 0x049262DE82A33C54ULL }, /* XSUM_XXH64_testdata[4749] */ + { 2375, 0x0000000000000000ULL, 0x0A2E9EA2E271595AULL }, /* XSUM_XXH64_testdata[4750] */ + { 2375, 0x000000009E3779B1ULL, 0xDF92131548D7E6B4ULL }, /* XSUM_XXH64_testdata[4751] */ + { 2376, 0x0000000000000000ULL, 0x2CE9D41F4F9534B9ULL }, /* XSUM_XXH64_testdata[4752] */ + { 2376, 0x000000009E3779B1ULL, 0x2F8AB336468A6136ULL }, /* XSUM_XXH64_testdata[4753] */ + { 2377, 0x0000000000000000ULL, 0xF0F7822D1BE0F90CULL }, /* XSUM_XXH64_testdata[4754] */ + { 2377, 0x000000009E3779B1ULL, 0xC4FCA5356F27558CULL }, /* XSUM_XXH64_testdata[4755] */ + { 2378, 0x0000000000000000ULL, 0x39E6873AF37024B4ULL }, /* XSUM_XXH64_testdata[4756] */ + { 2378, 0x000000009E3779B1ULL, 0x2A2B5F669B2654D1ULL }, /* XSUM_XXH64_testdata[4757] */ + { 2379, 0x0000000000000000ULL, 0x2ABA7585D8E36D73ULL }, /* XSUM_XXH64_testdata[4758] */ + { 2379, 0x000000009E3779B1ULL, 0x0DAFE476AB1F2E3AULL }, /* XSUM_XXH64_testdata[4759] */ + { 2380, 0x0000000000000000ULL, 0x3DC4757380DC323EULL }, /* XSUM_XXH64_testdata[4760] */ + { 2380, 0x000000009E3779B1ULL, 0xDAC9B8257FD450FDULL }, /* XSUM_XXH64_testdata[4761] */ + { 2381, 0x0000000000000000ULL, 0xA7B2D6EB875F8A17ULL }, /* XSUM_XXH64_testdata[4762] */ + { 2381, 0x000000009E3779B1ULL, 0x1CE00144C4AEED26ULL }, /* XSUM_XXH64_testdata[4763] */ + { 2382, 0x0000000000000000ULL, 0x9D7F7E8A03304113ULL }, /* XSUM_XXH64_testdata[4764] */ + { 2382, 0x000000009E3779B1ULL, 0xB9391DC54AB527B1ULL }, /* XSUM_XXH64_testdata[4765] */ + { 2383, 0x0000000000000000ULL, 0x07AC9F9E61EFC1E3ULL }, /* XSUM_XXH64_testdata[4766] */ + { 2383, 0x000000009E3779B1ULL, 0xA8E9FBF11BA6E602ULL }, /* XSUM_XXH64_testdata[4767] */ + { 2384, 0x0000000000000000ULL, 0x67852151713F7E7BULL }, /* XSUM_XXH64_testdata[4768] */ + { 2384, 0x000000009E3779B1ULL, 0xFB635A9F92B7EAFDULL }, /* XSUM_XXH64_testdata[4769] */ + { 2385, 0x0000000000000000ULL, 0x37A9F95E3CE03096ULL }, /* XSUM_XXH64_testdata[4770] */ + { 2385, 0x000000009E3779B1ULL, 0x7D78521C1406ED9FULL }, /* XSUM_XXH64_testdata[4771] */ + { 2386, 0x0000000000000000ULL, 0x8239E678942C4AC5ULL }, /* XSUM_XXH64_testdata[4772] */ + { 2386, 0x000000009E3779B1ULL, 0xCE1979E27C7D3C85ULL }, /* XSUM_XXH64_testdata[4773] */ + { 2387, 0x0000000000000000ULL, 0xA94BF04DEC91D5B4ULL }, /* XSUM_XXH64_testdata[4774] */ + { 2387, 0x000000009E3779B1ULL, 0x29E52166A719608BULL }, /* XSUM_XXH64_testdata[4775] */ + { 2388, 0x0000000000000000ULL, 0x7DCD4E53C2782F5FULL }, /* XSUM_XXH64_testdata[4776] */ + { 2388, 0x000000009E3779B1ULL, 0x46B540E3C85EA70EULL }, /* XSUM_XXH64_testdata[4777] */ + { 2389, 0x0000000000000000ULL, 0xAF6F3413330735EEULL }, /* XSUM_XXH64_testdata[4778] */ + { 2389, 0x000000009E3779B1ULL, 0x5299FF4B1ECBC382ULL }, /* XSUM_XXH64_testdata[4779] */ + { 2390, 0x0000000000000000ULL, 0x4B356E58C6EB8D67ULL }, /* XSUM_XXH64_testdata[4780] */ + { 2390, 0x000000009E3779B1ULL, 0x27B266BF7CFBC4BBULL }, /* XSUM_XXH64_testdata[4781] */ + { 2391, 0x0000000000000000ULL, 0x2B083C41FCA99623ULL }, /* XSUM_XXH64_testdata[4782] */ + { 2391, 0x000000009E3779B1ULL, 0x6A2F2A2710749A71ULL }, /* XSUM_XXH64_testdata[4783] */ + { 2392, 0x0000000000000000ULL, 0xD84013EF70E95859ULL }, /* XSUM_XXH64_testdata[4784] */ + { 2392, 0x000000009E3779B1ULL, 0x177F5970EC77F5B3ULL }, /* XSUM_XXH64_testdata[4785] */ + { 2393, 0x0000000000000000ULL, 0x7ACA4CF93ED98678ULL }, /* XSUM_XXH64_testdata[4786] */ + { 2393, 0x000000009E3779B1ULL, 0x5A904D3C35F6E94AULL }, /* XSUM_XXH64_testdata[4787] */ + { 2394, 0x0000000000000000ULL, 0x4326DE179EF99DD3ULL }, /* XSUM_XXH64_testdata[4788] */ + { 2394, 0x000000009E3779B1ULL, 0x48981D4F068BAA7AULL }, /* XSUM_XXH64_testdata[4789] */ + { 2395, 0x0000000000000000ULL, 0xB16F97FDCAAB95FAULL }, /* XSUM_XXH64_testdata[4790] */ + { 2395, 0x000000009E3779B1ULL, 0xE3F92AE9F9ED5F4CULL }, /* XSUM_XXH64_testdata[4791] */ + { 2396, 0x0000000000000000ULL, 0x9CEED7B2F9ECF099ULL }, /* XSUM_XXH64_testdata[4792] */ + { 2396, 0x000000009E3779B1ULL, 0xA5B41A47D3898A4FULL }, /* XSUM_XXH64_testdata[4793] */ + { 2397, 0x0000000000000000ULL, 0x8FF922A11B1124FEULL }, /* XSUM_XXH64_testdata[4794] */ + { 2397, 0x000000009E3779B1ULL, 0xB64BDA6A68E974D3ULL }, /* XSUM_XXH64_testdata[4795] */ + { 2398, 0x0000000000000000ULL, 0x8D40AB4B96C56150ULL }, /* XSUM_XXH64_testdata[4796] */ + { 2398, 0x000000009E3779B1ULL, 0x9BC4C7C36558F614ULL }, /* XSUM_XXH64_testdata[4797] */ + { 2399, 0x0000000000000000ULL, 0xA560FF29FD1BB5A9ULL }, /* XSUM_XXH64_testdata[4798] */ + { 2399, 0x000000009E3779B1ULL, 0xF85C0081934DEF96ULL }, /* XSUM_XXH64_testdata[4799] */ + { 2400, 0x0000000000000000ULL, 0x694A1631F983C649ULL }, /* XSUM_XXH64_testdata[4800] */ + { 2400, 0x000000009E3779B1ULL, 0x0BFEC3DCC5A0AD58ULL }, /* XSUM_XXH64_testdata[4801] */ + { 2401, 0x0000000000000000ULL, 0x02B021BC76EA4747ULL }, /* XSUM_XXH64_testdata[4802] */ + { 2401, 0x000000009E3779B1ULL, 0x78F1CAF370A2EA39ULL }, /* XSUM_XXH64_testdata[4803] */ + { 2402, 0x0000000000000000ULL, 0x17F348C75875A5D2ULL }, /* XSUM_XXH64_testdata[4804] */ + { 2402, 0x000000009E3779B1ULL, 0x67B68416C5E6AF81ULL }, /* XSUM_XXH64_testdata[4805] */ + { 2403, 0x0000000000000000ULL, 0x271B0247C4D63AD6ULL }, /* XSUM_XXH64_testdata[4806] */ + { 2403, 0x000000009E3779B1ULL, 0x52A9593FD9F07420ULL }, /* XSUM_XXH64_testdata[4807] */ + { 2404, 0x0000000000000000ULL, 0xA595E49C67003159ULL }, /* XSUM_XXH64_testdata[4808] */ + { 2404, 0x000000009E3779B1ULL, 0x1ED6DEFA3C16E191ULL }, /* XSUM_XXH64_testdata[4809] */ + { 2405, 0x0000000000000000ULL, 0x4A27B4127A915EADULL }, /* XSUM_XXH64_testdata[4810] */ + { 2405, 0x000000009E3779B1ULL, 0x59F4985FC36DBC86ULL }, /* XSUM_XXH64_testdata[4811] */ + { 2406, 0x0000000000000000ULL, 0xDC2CB1D75146944FULL }, /* XSUM_XXH64_testdata[4812] */ + { 2406, 0x000000009E3779B1ULL, 0xCE1A9B15D4546334ULL }, /* XSUM_XXH64_testdata[4813] */ + { 2407, 0x0000000000000000ULL, 0x6DEF146307EC190CULL }, /* XSUM_XXH64_testdata[4814] */ + { 2407, 0x000000009E3779B1ULL, 0x15AE945F860BB7EFULL }, /* XSUM_XXH64_testdata[4815] */ + { 2408, 0x0000000000000000ULL, 0x22AC3520C190F04AULL }, /* XSUM_XXH64_testdata[4816] */ + { 2408, 0x000000009E3779B1ULL, 0x96FEF050B8315504ULL }, /* XSUM_XXH64_testdata[4817] */ + { 2409, 0x0000000000000000ULL, 0xBE02E7DC27E42086ULL }, /* XSUM_XXH64_testdata[4818] */ + { 2409, 0x000000009E3779B1ULL, 0xE1E0E88AA6821AB4ULL }, /* XSUM_XXH64_testdata[4819] */ + { 2410, 0x0000000000000000ULL, 0xD8C4EA400B61156AULL }, /* XSUM_XXH64_testdata[4820] */ + { 2410, 0x000000009E3779B1ULL, 0x5783629355A8D035ULL }, /* XSUM_XXH64_testdata[4821] */ + { 2411, 0x0000000000000000ULL, 0x07D5490F7DDD14A3ULL }, /* XSUM_XXH64_testdata[4822] */ + { 2411, 0x000000009E3779B1ULL, 0xD96B2F10C7B3242BULL }, /* XSUM_XXH64_testdata[4823] */ + { 2412, 0x0000000000000000ULL, 0x0A1F1A1599B73DF3ULL }, /* XSUM_XXH64_testdata[4824] */ + { 2412, 0x000000009E3779B1ULL, 0xEB8B69A7E923A109ULL }, /* XSUM_XXH64_testdata[4825] */ + { 2413, 0x0000000000000000ULL, 0xEE61D221910FDF73ULL }, /* XSUM_XXH64_testdata[4826] */ + { 2413, 0x000000009E3779B1ULL, 0x1D7BCC8859386AA4ULL }, /* XSUM_XXH64_testdata[4827] */ + { 2414, 0x0000000000000000ULL, 0xE5750967B3970820ULL }, /* XSUM_XXH64_testdata[4828] */ + { 2414, 0x000000009E3779B1ULL, 0xBFB454E94EE8330FULL }, /* XSUM_XXH64_testdata[4829] */ + { 2415, 0x0000000000000000ULL, 0x3845B2AB9975CEC3ULL }, /* XSUM_XXH64_testdata[4830] */ + { 2415, 0x000000009E3779B1ULL, 0xC49CCD486DE432BAULL }, /* XSUM_XXH64_testdata[4831] */ + { 2416, 0x0000000000000000ULL, 0xC05CC6FF1C9AB447ULL }, /* XSUM_XXH64_testdata[4832] */ + { 2416, 0x000000009E3779B1ULL, 0xE8C0FD4299A3FA3AULL }, /* XSUM_XXH64_testdata[4833] */ + { 2417, 0x0000000000000000ULL, 0x915EEB98F3616241ULL }, /* XSUM_XXH64_testdata[4834] */ + { 2417, 0x000000009E3779B1ULL, 0x37AB4D37304EBD54ULL }, /* XSUM_XXH64_testdata[4835] */ + { 2418, 0x0000000000000000ULL, 0x1CECB330A9E0A948ULL }, /* XSUM_XXH64_testdata[4836] */ + { 2418, 0x000000009E3779B1ULL, 0xFF5467C4F2C9F932ULL }, /* XSUM_XXH64_testdata[4837] */ + { 2419, 0x0000000000000000ULL, 0xC9BF101D39DC0EB7ULL }, /* XSUM_XXH64_testdata[4838] */ + { 2419, 0x000000009E3779B1ULL, 0xE7B1779761AFB5E3ULL }, /* XSUM_XXH64_testdata[4839] */ + { 2420, 0x0000000000000000ULL, 0x801B0BA36739D39AULL }, /* XSUM_XXH64_testdata[4840] */ + { 2420, 0x000000009E3779B1ULL, 0x2480FD0EC657D06BULL }, /* XSUM_XXH64_testdata[4841] */ + { 2421, 0x0000000000000000ULL, 0x8DEF1C59819570ADULL }, /* XSUM_XXH64_testdata[4842] */ + { 2421, 0x000000009E3779B1ULL, 0xB1A69E704B9858CEULL }, /* XSUM_XXH64_testdata[4843] */ + { 2422, 0x0000000000000000ULL, 0x05FC2C6C90CB8D6CULL }, /* XSUM_XXH64_testdata[4844] */ + { 2422, 0x000000009E3779B1ULL, 0xE45A743C5D581BFFULL }, /* XSUM_XXH64_testdata[4845] */ + { 2423, 0x0000000000000000ULL, 0x83C51E22CA7625D0ULL }, /* XSUM_XXH64_testdata[4846] */ + { 2423, 0x000000009E3779B1ULL, 0x47BFBA5355DEF04AULL }, /* XSUM_XXH64_testdata[4847] */ + { 2424, 0x0000000000000000ULL, 0x4ABED4B91A9EE861ULL }, /* XSUM_XXH64_testdata[4848] */ + { 2424, 0x000000009E3779B1ULL, 0x42D7640BD9B2A83AULL }, /* XSUM_XXH64_testdata[4849] */ + { 2425, 0x0000000000000000ULL, 0x24A8187187392767ULL }, /* XSUM_XXH64_testdata[4850] */ + { 2425, 0x000000009E3779B1ULL, 0x203794E561E31142ULL }, /* XSUM_XXH64_testdata[4851] */ + { 2426, 0x0000000000000000ULL, 0x3616D90229EE0974ULL }, /* XSUM_XXH64_testdata[4852] */ + { 2426, 0x000000009E3779B1ULL, 0x19684C4F55C85CE9ULL }, /* XSUM_XXH64_testdata[4853] */ + { 2427, 0x0000000000000000ULL, 0x68CD181A6F11B10CULL }, /* XSUM_XXH64_testdata[4854] */ + { 2427, 0x000000009E3779B1ULL, 0xC864F684D69AABA5ULL }, /* XSUM_XXH64_testdata[4855] */ + { 2428, 0x0000000000000000ULL, 0x2A7D75B671FCCDEEULL }, /* XSUM_XXH64_testdata[4856] */ + { 2428, 0x000000009E3779B1ULL, 0xA9476E448D525013ULL }, /* XSUM_XXH64_testdata[4857] */ + { 2429, 0x0000000000000000ULL, 0x71C15FD39BF17F23ULL }, /* XSUM_XXH64_testdata[4858] */ + { 2429, 0x000000009E3779B1ULL, 0x969704E21B4CC6D5ULL }, /* XSUM_XXH64_testdata[4859] */ + { 2430, 0x0000000000000000ULL, 0xA72B7080C7F9F03AULL }, /* XSUM_XXH64_testdata[4860] */ + { 2430, 0x000000009E3779B1ULL, 0xE4AFBF1AA2F0701BULL }, /* XSUM_XXH64_testdata[4861] */ + { 2431, 0x0000000000000000ULL, 0x3088967F568CD683ULL }, /* XSUM_XXH64_testdata[4862] */ + { 2431, 0x000000009E3779B1ULL, 0x1BC3BD44AAC35EF9ULL }, /* XSUM_XXH64_testdata[4863] */ + { 2432, 0x0000000000000000ULL, 0xCBD11730223F67C6ULL }, /* XSUM_XXH64_testdata[4864] */ + { 2432, 0x000000009E3779B1ULL, 0x213A2E1A0C8904D8ULL }, /* XSUM_XXH64_testdata[4865] */ + { 2433, 0x0000000000000000ULL, 0xC6B42608EC856946ULL }, /* XSUM_XXH64_testdata[4866] */ + { 2433, 0x000000009E3779B1ULL, 0x003DC0F6EDEC531EULL }, /* XSUM_XXH64_testdata[4867] */ + { 2434, 0x0000000000000000ULL, 0x3BA3699FBCB3C297ULL }, /* XSUM_XXH64_testdata[4868] */ + { 2434, 0x000000009E3779B1ULL, 0x8240EE675DF29A12ULL }, /* XSUM_XXH64_testdata[4869] */ + { 2435, 0x0000000000000000ULL, 0x7AAB1AE8C3807095ULL }, /* XSUM_XXH64_testdata[4870] */ + { 2435, 0x000000009E3779B1ULL, 0xD0510D743BAAA37CULL }, /* XSUM_XXH64_testdata[4871] */ + { 2436, 0x0000000000000000ULL, 0x8EE2DD6CD70E0D0DULL }, /* XSUM_XXH64_testdata[4872] */ + { 2436, 0x000000009E3779B1ULL, 0x183E3EA8DF792509ULL }, /* XSUM_XXH64_testdata[4873] */ + { 2437, 0x0000000000000000ULL, 0xB0576474996258BDULL }, /* XSUM_XXH64_testdata[4874] */ + { 2437, 0x000000009E3779B1ULL, 0x68031014C2F43722ULL }, /* XSUM_XXH64_testdata[4875] */ + { 2438, 0x0000000000000000ULL, 0x2524B25AACFB7EADULL }, /* XSUM_XXH64_testdata[4876] */ + { 2438, 0x000000009E3779B1ULL, 0x722D2F0D81E91D11ULL }, /* XSUM_XXH64_testdata[4877] */ + { 2439, 0x0000000000000000ULL, 0xD030BD47C1C03CADULL }, /* XSUM_XXH64_testdata[4878] */ + { 2439, 0x000000009E3779B1ULL, 0x8859C919A9433659ULL }, /* XSUM_XXH64_testdata[4879] */ + { 2440, 0x0000000000000000ULL, 0x17128689665AB686ULL }, /* XSUM_XXH64_testdata[4880] */ + { 2440, 0x000000009E3779B1ULL, 0x46072D41B60460B3ULL }, /* XSUM_XXH64_testdata[4881] */ + { 2441, 0x0000000000000000ULL, 0x4B72F827F22591CDULL }, /* XSUM_XXH64_testdata[4882] */ + { 2441, 0x000000009E3779B1ULL, 0xF1EFF59A44F7B617ULL }, /* XSUM_XXH64_testdata[4883] */ + { 2442, 0x0000000000000000ULL, 0x80E5410C3A0CDC22ULL }, /* XSUM_XXH64_testdata[4884] */ + { 2442, 0x000000009E3779B1ULL, 0xC91E48090B04E298ULL }, /* XSUM_XXH64_testdata[4885] */ + { 2443, 0x0000000000000000ULL, 0x4EDD5E11BC8E19A8ULL }, /* XSUM_XXH64_testdata[4886] */ + { 2443, 0x000000009E3779B1ULL, 0xE4F8304B59B6791DULL }, /* XSUM_XXH64_testdata[4887] */ + { 2444, 0x0000000000000000ULL, 0x2BCE89C62691D85DULL }, /* XSUM_XXH64_testdata[4888] */ + { 2444, 0x000000009E3779B1ULL, 0x86E3AA4D7470DB8EULL }, /* XSUM_XXH64_testdata[4889] */ + { 2445, 0x0000000000000000ULL, 0xB6D1874278EDA5E2ULL }, /* XSUM_XXH64_testdata[4890] */ + { 2445, 0x000000009E3779B1ULL, 0x48038CFD210C4C6AULL }, /* XSUM_XXH64_testdata[4891] */ + { 2446, 0x0000000000000000ULL, 0x33EAFB6C7897FC9EULL }, /* XSUM_XXH64_testdata[4892] */ + { 2446, 0x000000009E3779B1ULL, 0x8FD3CA10498AD59DULL }, /* XSUM_XXH64_testdata[4893] */ + { 2447, 0x0000000000000000ULL, 0x02F024F2F280F326ULL }, /* XSUM_XXH64_testdata[4894] */ + { 2447, 0x000000009E3779B1ULL, 0x0C4BD4C235D92D26ULL }, /* XSUM_XXH64_testdata[4895] */ + { 2448, 0x0000000000000000ULL, 0xE811E3914D08C6C6ULL }, /* XSUM_XXH64_testdata[4896] */ + { 2448, 0x000000009E3779B1ULL, 0xAAE9C08B612E31CEULL }, /* XSUM_XXH64_testdata[4897] */ + { 2449, 0x0000000000000000ULL, 0x1B80FC7087650669ULL }, /* XSUM_XXH64_testdata[4898] */ + { 2449, 0x000000009E3779B1ULL, 0x4E0F289DC90518F2ULL }, /* XSUM_XXH64_testdata[4899] */ + { 2450, 0x0000000000000000ULL, 0xBA1BBBA215078FFBULL }, /* XSUM_XXH64_testdata[4900] */ + { 2450, 0x000000009E3779B1ULL, 0x0C7B7F126DC21DA2ULL }, /* XSUM_XXH64_testdata[4901] */ + { 2451, 0x0000000000000000ULL, 0xD88DD047F14A7D79ULL }, /* XSUM_XXH64_testdata[4902] */ + { 2451, 0x000000009E3779B1ULL, 0x8A7BB4D024FF588CULL }, /* XSUM_XXH64_testdata[4903] */ + { 2452, 0x0000000000000000ULL, 0x2C0E5DA26E632184ULL }, /* XSUM_XXH64_testdata[4904] */ + { 2452, 0x000000009E3779B1ULL, 0xB3FF64D46FE4E545ULL }, /* XSUM_XXH64_testdata[4905] */ + { 2453, 0x0000000000000000ULL, 0xDAA454D75585EDE9ULL }, /* XSUM_XXH64_testdata[4906] */ + { 2453, 0x000000009E3779B1ULL, 0xE731D5C255547E22ULL }, /* XSUM_XXH64_testdata[4907] */ + { 2454, 0x0000000000000000ULL, 0xE2C925DEB32E6EE1ULL }, /* XSUM_XXH64_testdata[4908] */ + { 2454, 0x000000009E3779B1ULL, 0x2443617CF4A4C64EULL }, /* XSUM_XXH64_testdata[4909] */ + { 2455, 0x0000000000000000ULL, 0x3BFBDD8160A1B103ULL }, /* XSUM_XXH64_testdata[4910] */ + { 2455, 0x000000009E3779B1ULL, 0x5B31B7F20E875EADULL }, /* XSUM_XXH64_testdata[4911] */ + { 2456, 0x0000000000000000ULL, 0x7AF6D8626A70AE5DULL }, /* XSUM_XXH64_testdata[4912] */ + { 2456, 0x000000009E3779B1ULL, 0xE0AA228B4D774D10ULL }, /* XSUM_XXH64_testdata[4913] */ + { 2457, 0x0000000000000000ULL, 0xF0A88A24038169EDULL }, /* XSUM_XXH64_testdata[4914] */ + { 2457, 0x000000009E3779B1ULL, 0x7E58F73BF8784A4CULL }, /* XSUM_XXH64_testdata[4915] */ + { 2458, 0x0000000000000000ULL, 0xFEEC78A15366CF38ULL }, /* XSUM_XXH64_testdata[4916] */ + { 2458, 0x000000009E3779B1ULL, 0x3A6BDFBB7660728FULL }, /* XSUM_XXH64_testdata[4917] */ + { 2459, 0x0000000000000000ULL, 0x1B60EE4E795E9535ULL }, /* XSUM_XXH64_testdata[4918] */ + { 2459, 0x000000009E3779B1ULL, 0x4A84D726CA0DA8B4ULL }, /* XSUM_XXH64_testdata[4919] */ + { 2460, 0x0000000000000000ULL, 0x941735C88AB2BCC6ULL }, /* XSUM_XXH64_testdata[4920] */ + { 2460, 0x000000009E3779B1ULL, 0xF667141A54F560F3ULL }, /* XSUM_XXH64_testdata[4921] */ + { 2461, 0x0000000000000000ULL, 0xFCCDCF96385216C7ULL }, /* XSUM_XXH64_testdata[4922] */ + { 2461, 0x000000009E3779B1ULL, 0x6A2F1E48758C6DC7ULL }, /* XSUM_XXH64_testdata[4923] */ + { 2462, 0x0000000000000000ULL, 0xFFCBEAD39F9750A7ULL }, /* XSUM_XXH64_testdata[4924] */ + { 2462, 0x000000009E3779B1ULL, 0xE740CC2A1BAFD8EAULL }, /* XSUM_XXH64_testdata[4925] */ + { 2463, 0x0000000000000000ULL, 0xA2C621CEB83AB7F6ULL }, /* XSUM_XXH64_testdata[4926] */ + { 2463, 0x000000009E3779B1ULL, 0xF09943B1F4D4C4E7ULL }, /* XSUM_XXH64_testdata[4927] */ + { 2464, 0x0000000000000000ULL, 0x31CFD7D80770B38EULL }, /* XSUM_XXH64_testdata[4928] */ + { 2464, 0x000000009E3779B1ULL, 0xB4646B78E397D700ULL }, /* XSUM_XXH64_testdata[4929] */ + { 2465, 0x0000000000000000ULL, 0x10255A2D392A3FACULL }, /* XSUM_XXH64_testdata[4930] */ + { 2465, 0x000000009E3779B1ULL, 0xC199F003D8B0E198ULL }, /* XSUM_XXH64_testdata[4931] */ + { 2466, 0x0000000000000000ULL, 0x4571670719F5FD48ULL }, /* XSUM_XXH64_testdata[4932] */ + { 2466, 0x000000009E3779B1ULL, 0x737CB52B236D4F57ULL }, /* XSUM_XXH64_testdata[4933] */ + { 2467, 0x0000000000000000ULL, 0xC05F4DB807477825ULL }, /* XSUM_XXH64_testdata[4934] */ + { 2467, 0x000000009E3779B1ULL, 0x6D744AB8862BB69EULL }, /* XSUM_XXH64_testdata[4935] */ + { 2468, 0x0000000000000000ULL, 0xE5277B8D84582CAFULL }, /* XSUM_XXH64_testdata[4936] */ + { 2468, 0x000000009E3779B1ULL, 0x06856E9678B2B660ULL }, /* XSUM_XXH64_testdata[4937] */ + { 2469, 0x0000000000000000ULL, 0x6ABC00331A122F79ULL }, /* XSUM_XXH64_testdata[4938] */ + { 2469, 0x000000009E3779B1ULL, 0xD4C8F26C5EF74E2EULL }, /* XSUM_XXH64_testdata[4939] */ + { 2470, 0x0000000000000000ULL, 0x2B667AD27BE660B6ULL }, /* XSUM_XXH64_testdata[4940] */ + { 2470, 0x000000009E3779B1ULL, 0x603DD9A78AF0BEEDULL }, /* XSUM_XXH64_testdata[4941] */ + { 2471, 0x0000000000000000ULL, 0x2FA57372957D73D3ULL }, /* XSUM_XXH64_testdata[4942] */ + { 2471, 0x000000009E3779B1ULL, 0x3D716BFC1D5BBDEAULL }, /* XSUM_XXH64_testdata[4943] */ + { 2472, 0x0000000000000000ULL, 0x1919DC786DC18BFBULL }, /* XSUM_XXH64_testdata[4944] */ + { 2472, 0x000000009E3779B1ULL, 0xF8AA42A020F5928EULL }, /* XSUM_XXH64_testdata[4945] */ + { 2473, 0x0000000000000000ULL, 0xB6A86870C20964C1ULL }, /* XSUM_XXH64_testdata[4946] */ + { 2473, 0x000000009E3779B1ULL, 0xC705B8A05E200AFAULL }, /* XSUM_XXH64_testdata[4947] */ + { 2474, 0x0000000000000000ULL, 0x9D7B0ECD1DB9DB5BULL }, /* XSUM_XXH64_testdata[4948] */ + { 2474, 0x000000009E3779B1ULL, 0x5711DB38AE9A56D4ULL }, /* XSUM_XXH64_testdata[4949] */ + { 2475, 0x0000000000000000ULL, 0xC24C7501C214A3E6ULL }, /* XSUM_XXH64_testdata[4950] */ + { 2475, 0x000000009E3779B1ULL, 0x2228DF6651B0553BULL }, /* XSUM_XXH64_testdata[4951] */ + { 2476, 0x0000000000000000ULL, 0x7EEB260CBF06F708ULL }, /* XSUM_XXH64_testdata[4952] */ + { 2476, 0x000000009E3779B1ULL, 0xC992968948495F68ULL }, /* XSUM_XXH64_testdata[4953] */ + { 2477, 0x0000000000000000ULL, 0x53D72BDB3F69A314ULL }, /* XSUM_XXH64_testdata[4954] */ + { 2477, 0x000000009E3779B1ULL, 0x1D98A52F8FE267F5ULL }, /* XSUM_XXH64_testdata[4955] */ + { 2478, 0x0000000000000000ULL, 0xF3C6F0E2B1DC6533ULL }, /* XSUM_XXH64_testdata[4956] */ + { 2478, 0x000000009E3779B1ULL, 0x8E5AA693A0AF5D53ULL }, /* XSUM_XXH64_testdata[4957] */ + { 2479, 0x0000000000000000ULL, 0x977C8404E1407C44ULL }, /* XSUM_XXH64_testdata[4958] */ + { 2479, 0x000000009E3779B1ULL, 0x8E1D984BAE2B2407ULL }, /* XSUM_XXH64_testdata[4959] */ + { 2480, 0x0000000000000000ULL, 0xA4AB92232E967B55ULL }, /* XSUM_XXH64_testdata[4960] */ + { 2480, 0x000000009E3779B1ULL, 0xD342BC7A977B0863ULL }, /* XSUM_XXH64_testdata[4961] */ + { 2481, 0x0000000000000000ULL, 0x7AD7E7A1848F5C72ULL }, /* XSUM_XXH64_testdata[4962] */ + { 2481, 0x000000009E3779B1ULL, 0xEB0ED071ED4AC4C6ULL }, /* XSUM_XXH64_testdata[4963] */ + { 2482, 0x0000000000000000ULL, 0x695DEFDC470F5E66ULL }, /* XSUM_XXH64_testdata[4964] */ + { 2482, 0x000000009E3779B1ULL, 0xAF69B94E01343304ULL }, /* XSUM_XXH64_testdata[4965] */ + { 2483, 0x0000000000000000ULL, 0x890F990C259BDCB0ULL }, /* XSUM_XXH64_testdata[4966] */ + { 2483, 0x000000009E3779B1ULL, 0x2CC3666DB81204D4ULL }, /* XSUM_XXH64_testdata[4967] */ + { 2484, 0x0000000000000000ULL, 0x925803BCD5E4420CULL }, /* XSUM_XXH64_testdata[4968] */ + { 2484, 0x000000009E3779B1ULL, 0x3D5FBB640DCE3AC9ULL }, /* XSUM_XXH64_testdata[4969] */ + { 2485, 0x0000000000000000ULL, 0x69417E512FE29C7FULL }, /* XSUM_XXH64_testdata[4970] */ + { 2485, 0x000000009E3779B1ULL, 0x508E409A17E01C5DULL }, /* XSUM_XXH64_testdata[4971] */ + { 2486, 0x0000000000000000ULL, 0x2A54A9ED565F11DDULL }, /* XSUM_XXH64_testdata[4972] */ + { 2486, 0x000000009E3779B1ULL, 0xCFEC0ED2EB495BACULL }, /* XSUM_XXH64_testdata[4973] */ + { 2487, 0x0000000000000000ULL, 0xE304C98C2DA89AFBULL }, /* XSUM_XXH64_testdata[4974] */ + { 2487, 0x000000009E3779B1ULL, 0xECB59396954529F3ULL }, /* XSUM_XXH64_testdata[4975] */ + { 2488, 0x0000000000000000ULL, 0x628E2977C5FC2F1EULL }, /* XSUM_XXH64_testdata[4976] */ + { 2488, 0x000000009E3779B1ULL, 0xE4FBFF74DC4143D6ULL }, /* XSUM_XXH64_testdata[4977] */ + { 2489, 0x0000000000000000ULL, 0x45B0627D2842E6D2ULL }, /* XSUM_XXH64_testdata[4978] */ + { 2489, 0x000000009E3779B1ULL, 0xD8E1A3A1758BFD18ULL }, /* XSUM_XXH64_testdata[4979] */ + { 2490, 0x0000000000000000ULL, 0xE137CF864151F9C3ULL }, /* XSUM_XXH64_testdata[4980] */ + { 2490, 0x000000009E3779B1ULL, 0xA8D0360937FF5AB4ULL }, /* XSUM_XXH64_testdata[4981] */ + { 2491, 0x0000000000000000ULL, 0x6638694668D34445ULL }, /* XSUM_XXH64_testdata[4982] */ + { 2491, 0x000000009E3779B1ULL, 0xAB3C1163A3AAF41EULL }, /* XSUM_XXH64_testdata[4983] */ + { 2492, 0x0000000000000000ULL, 0xF6A831A95FFE61BAULL }, /* XSUM_XXH64_testdata[4984] */ + { 2492, 0x000000009E3779B1ULL, 0x4D66E15172692ADAULL }, /* XSUM_XXH64_testdata[4985] */ + { 2493, 0x0000000000000000ULL, 0xBC6490941C9696D2ULL }, /* XSUM_XXH64_testdata[4986] */ + { 2493, 0x000000009E3779B1ULL, 0xF5A1972F181AA776ULL }, /* XSUM_XXH64_testdata[4987] */ + { 2494, 0x0000000000000000ULL, 0x804A54FC7666040BULL }, /* XSUM_XXH64_testdata[4988] */ + { 2494, 0x000000009E3779B1ULL, 0xF124C248CE33CB6BULL }, /* XSUM_XXH64_testdata[4989] */ + { 2495, 0x0000000000000000ULL, 0x3228BC4AACF4A08DULL }, /* XSUM_XXH64_testdata[4990] */ + { 2495, 0x000000009E3779B1ULL, 0x35955875CD45A0FDULL }, /* XSUM_XXH64_testdata[4991] */ + { 2496, 0x0000000000000000ULL, 0x443CA51632E0DDD5ULL }, /* XSUM_XXH64_testdata[4992] */ + { 2496, 0x000000009E3779B1ULL, 0x7F9743C7FDECC5C1ULL }, /* XSUM_XXH64_testdata[4993] */ + { 2497, 0x0000000000000000ULL, 0x15F4AA245DFBFC83ULL }, /* XSUM_XXH64_testdata[4994] */ + { 2497, 0x000000009E3779B1ULL, 0x2D07C93CDA5FCDD2ULL }, /* XSUM_XXH64_testdata[4995] */ + { 2498, 0x0000000000000000ULL, 0xBD3FDF3F68ABE719ULL }, /* XSUM_XXH64_testdata[4996] */ + { 2498, 0x000000009E3779B1ULL, 0x17F25EB7572DA9DDULL }, /* XSUM_XXH64_testdata[4997] */ + { 2499, 0x0000000000000000ULL, 0x64C8307EB325D376ULL }, /* XSUM_XXH64_testdata[4998] */ + { 2499, 0x000000009E3779B1ULL, 0x0318F5BFCE446D55ULL }, /* XSUM_XXH64_testdata[4999] */ + { 2500, 0x0000000000000000ULL, 0x13ADF0CB8CCE3661ULL }, /* XSUM_XXH64_testdata[5000] */ + { 2500, 0x000000009E3779B1ULL, 0x0D9DA38E856DC26EULL }, /* XSUM_XXH64_testdata[5001] */ + { 2501, 0x0000000000000000ULL, 0xDA22B241787571E9ULL }, /* XSUM_XXH64_testdata[5002] */ + { 2501, 0x000000009E3779B1ULL, 0xC9F15C9E067E2586ULL }, /* XSUM_XXH64_testdata[5003] */ + { 2502, 0x0000000000000000ULL, 0xC4AEB31800B88A2AULL }, /* XSUM_XXH64_testdata[5004] */ + { 2502, 0x000000009E3779B1ULL, 0xE0562555CCC7798AULL }, /* XSUM_XXH64_testdata[5005] */ + { 2503, 0x0000000000000000ULL, 0x89F3CCF3087E5A14ULL }, /* XSUM_XXH64_testdata[5006] */ + { 2503, 0x000000009E3779B1ULL, 0xD143CFA4E2578694ULL }, /* XSUM_XXH64_testdata[5007] */ + { 2504, 0x0000000000000000ULL, 0xB20FA4C246F512F7ULL }, /* XSUM_XXH64_testdata[5008] */ + { 2504, 0x000000009E3779B1ULL, 0x4387BD09FB07AEEAULL }, /* XSUM_XXH64_testdata[5009] */ + { 2505, 0x0000000000000000ULL, 0xD7E1B4F919DB4941ULL }, /* XSUM_XXH64_testdata[5010] */ + { 2505, 0x000000009E3779B1ULL, 0xF1C98EAB15B574C8ULL }, /* XSUM_XXH64_testdata[5011] */ + { 2506, 0x0000000000000000ULL, 0x6BA313BD1DD0EF52ULL }, /* XSUM_XXH64_testdata[5012] */ + { 2506, 0x000000009E3779B1ULL, 0x23E430C9A045F6C3ULL }, /* XSUM_XXH64_testdata[5013] */ + { 2507, 0x0000000000000000ULL, 0xEF17618A79DDBB1DULL }, /* XSUM_XXH64_testdata[5014] */ + { 2507, 0x000000009E3779B1ULL, 0xA81E20C0409FE325ULL }, /* XSUM_XXH64_testdata[5015] */ + { 2508, 0x0000000000000000ULL, 0x7798AD0126DC18CFULL }, /* XSUM_XXH64_testdata[5016] */ + { 2508, 0x000000009E3779B1ULL, 0x8630480CB22F36D0ULL }, /* XSUM_XXH64_testdata[5017] */ + { 2509, 0x0000000000000000ULL, 0x205D46C33656C728ULL }, /* XSUM_XXH64_testdata[5018] */ + { 2509, 0x000000009E3779B1ULL, 0x274537B075E0FFB7ULL }, /* XSUM_XXH64_testdata[5019] */ + { 2510, 0x0000000000000000ULL, 0x4E7F04858550369AULL }, /* XSUM_XXH64_testdata[5020] */ + { 2510, 0x000000009E3779B1ULL, 0x542AEF16DC23E45DULL }, /* XSUM_XXH64_testdata[5021] */ + { 2511, 0x0000000000000000ULL, 0x318A08435B64D70BULL }, /* XSUM_XXH64_testdata[5022] */ + { 2511, 0x000000009E3779B1ULL, 0x4181DE76A5B43BBBULL }, /* XSUM_XXH64_testdata[5023] */ + { 2512, 0x0000000000000000ULL, 0x84D2B271F72F3A4CULL }, /* XSUM_XXH64_testdata[5024] */ + { 2512, 0x000000009E3779B1ULL, 0x65FDA5391DE0C77AULL }, /* XSUM_XXH64_testdata[5025] */ + { 2513, 0x0000000000000000ULL, 0x89BCD13121CCF10BULL }, /* XSUM_XXH64_testdata[5026] */ + { 2513, 0x000000009E3779B1ULL, 0x3A0A7D36B71D4A5EULL }, /* XSUM_XXH64_testdata[5027] */ + { 2514, 0x0000000000000000ULL, 0xA69049D429E30469ULL }, /* XSUM_XXH64_testdata[5028] */ + { 2514, 0x000000009E3779B1ULL, 0x6AB7143DF38DA60FULL }, /* XSUM_XXH64_testdata[5029] */ + { 2515, 0x0000000000000000ULL, 0x45AAB393356C0794ULL }, /* XSUM_XXH64_testdata[5030] */ + { 2515, 0x000000009E3779B1ULL, 0xE14551135EBC4E11ULL }, /* XSUM_XXH64_testdata[5031] */ + { 2516, 0x0000000000000000ULL, 0x040B403621A34D00ULL }, /* XSUM_XXH64_testdata[5032] */ + { 2516, 0x000000009E3779B1ULL, 0x4D214F0F63C8CC8CULL }, /* XSUM_XXH64_testdata[5033] */ + { 2517, 0x0000000000000000ULL, 0xE60D269D847ADA6BULL }, /* XSUM_XXH64_testdata[5034] */ + { 2517, 0x000000009E3779B1ULL, 0x8C8426B0CBEA2F31ULL }, /* XSUM_XXH64_testdata[5035] */ + { 2518, 0x0000000000000000ULL, 0x61D1A7BE0B3B2EE5ULL }, /* XSUM_XXH64_testdata[5036] */ + { 2518, 0x000000009E3779B1ULL, 0x3C1A9ECEF5393D0FULL }, /* XSUM_XXH64_testdata[5037] */ + { 2519, 0x0000000000000000ULL, 0x17FF3E00888176BCULL }, /* XSUM_XXH64_testdata[5038] */ + { 2519, 0x000000009E3779B1ULL, 0xF316C2050F52BFB8ULL }, /* XSUM_XXH64_testdata[5039] */ + { 2520, 0x0000000000000000ULL, 0x7C0A8F4BCA3E4914ULL }, /* XSUM_XXH64_testdata[5040] */ + { 2520, 0x000000009E3779B1ULL, 0x1DF8F6FD3F65ABB7ULL }, /* XSUM_XXH64_testdata[5041] */ + { 2521, 0x0000000000000000ULL, 0x1C87424C4CF9FCA2ULL }, /* XSUM_XXH64_testdata[5042] */ + { 2521, 0x000000009E3779B1ULL, 0x0D6DB088748DA08AULL }, /* XSUM_XXH64_testdata[5043] */ + { 2522, 0x0000000000000000ULL, 0xEA6D674D75242D35ULL }, /* XSUM_XXH64_testdata[5044] */ + { 2522, 0x000000009E3779B1ULL, 0x7C26F59AE26E1A17ULL }, /* XSUM_XXH64_testdata[5045] */ + { 2523, 0x0000000000000000ULL, 0x4D5F7BD25078923CULL }, /* XSUM_XXH64_testdata[5046] */ + { 2523, 0x000000009E3779B1ULL, 0xFA465932034B0D81ULL }, /* XSUM_XXH64_testdata[5047] */ + { 2524, 0x0000000000000000ULL, 0xBA9284686B42BAB7ULL }, /* XSUM_XXH64_testdata[5048] */ + { 2524, 0x000000009E3779B1ULL, 0x812DBF4134B5FF3FULL }, /* XSUM_XXH64_testdata[5049] */ + { 2525, 0x0000000000000000ULL, 0x3CB2F7A3BC0DF684ULL }, /* XSUM_XXH64_testdata[5050] */ + { 2525, 0x000000009E3779B1ULL, 0x6EF42421916D35A1ULL }, /* XSUM_XXH64_testdata[5051] */ + { 2526, 0x0000000000000000ULL, 0x7F718ED648664F95ULL }, /* XSUM_XXH64_testdata[5052] */ + { 2526, 0x000000009E3779B1ULL, 0x1BCDC97D470BF6C7ULL }, /* XSUM_XXH64_testdata[5053] */ + { 2527, 0x0000000000000000ULL, 0xDC298C93B649DD3CULL }, /* XSUM_XXH64_testdata[5054] */ + { 2527, 0x000000009E3779B1ULL, 0x79F9C6750D3B5509ULL }, /* XSUM_XXH64_testdata[5055] */ + { 2528, 0x0000000000000000ULL, 0xD3CF1E2EDFD1CE55ULL }, /* XSUM_XXH64_testdata[5056] */ + { 2528, 0x000000009E3779B1ULL, 0x57E04A1024FB8033ULL }, /* XSUM_XXH64_testdata[5057] */ + { 2529, 0x0000000000000000ULL, 0x4A5F754265A3C4D5ULL }, /* XSUM_XXH64_testdata[5058] */ + { 2529, 0x000000009E3779B1ULL, 0x485ECB5F3600E564ULL }, /* XSUM_XXH64_testdata[5059] */ + { 2530, 0x0000000000000000ULL, 0x9112AAE1174A926DULL }, /* XSUM_XXH64_testdata[5060] */ + { 2530, 0x000000009E3779B1ULL, 0xD9534D0C5C61B7D4ULL }, /* XSUM_XXH64_testdata[5061] */ + { 2531, 0x0000000000000000ULL, 0x54CF97E24E3E39FFULL }, /* XSUM_XXH64_testdata[5062] */ + { 2531, 0x000000009E3779B1ULL, 0x887367AD17EA3049ULL }, /* XSUM_XXH64_testdata[5063] */ + { 2532, 0x0000000000000000ULL, 0xE1A71D0B527DB3BCULL }, /* XSUM_XXH64_testdata[5064] */ + { 2532, 0x000000009E3779B1ULL, 0xDF0C5F764D6AEC53ULL }, /* XSUM_XXH64_testdata[5065] */ + { 2533, 0x0000000000000000ULL, 0xBE5A9B6BF1DBCD82ULL }, /* XSUM_XXH64_testdata[5066] */ + { 2533, 0x000000009E3779B1ULL, 0x289B8B993F3940E5ULL }, /* XSUM_XXH64_testdata[5067] */ + { 2534, 0x0000000000000000ULL, 0x6B3EAF964BB46A8DULL }, /* XSUM_XXH64_testdata[5068] */ + { 2534, 0x000000009E3779B1ULL, 0x351CB8787D4EDFE9ULL }, /* XSUM_XXH64_testdata[5069] */ + { 2535, 0x0000000000000000ULL, 0x0A1A6879F4CEE680ULL }, /* XSUM_XXH64_testdata[5070] */ + { 2535, 0x000000009E3779B1ULL, 0xD0C6FFD71F2A194FULL }, /* XSUM_XXH64_testdata[5071] */ + { 2536, 0x0000000000000000ULL, 0x8CF419F9C6197562ULL }, /* XSUM_XXH64_testdata[5072] */ + { 2536, 0x000000009E3779B1ULL, 0x7A4FFCCB7359E91EULL }, /* XSUM_XXH64_testdata[5073] */ + { 2537, 0x0000000000000000ULL, 0x42900A6838860C7BULL }, /* XSUM_XXH64_testdata[5074] */ + { 2537, 0x000000009E3779B1ULL, 0x5E0C4BDAF80D53C2ULL }, /* XSUM_XXH64_testdata[5075] */ + { 2538, 0x0000000000000000ULL, 0x570EC6A0C80C0865ULL }, /* XSUM_XXH64_testdata[5076] */ + { 2538, 0x000000009E3779B1ULL, 0x8BBECBE0E1D97204ULL }, /* XSUM_XXH64_testdata[5077] */ + { 2539, 0x0000000000000000ULL, 0x184A6C2244CDBEA6ULL }, /* XSUM_XXH64_testdata[5078] */ + { 2539, 0x000000009E3779B1ULL, 0x3382D7BC436843E6ULL }, /* XSUM_XXH64_testdata[5079] */ + { 2540, 0x0000000000000000ULL, 0x2948FA794E5C52B0ULL }, /* XSUM_XXH64_testdata[5080] */ + { 2540, 0x000000009E3779B1ULL, 0x3CCDF15220CCA5E3ULL }, /* XSUM_XXH64_testdata[5081] */ + { 2541, 0x0000000000000000ULL, 0x76898C9B504A1506ULL }, /* XSUM_XXH64_testdata[5082] */ + { 2541, 0x000000009E3779B1ULL, 0x4275B753D091358AULL }, /* XSUM_XXH64_testdata[5083] */ + { 2542, 0x0000000000000000ULL, 0x8DF9EA5E24D6A1CFULL }, /* XSUM_XXH64_testdata[5084] */ + { 2542, 0x000000009E3779B1ULL, 0x8BBA889A5C70C9AAULL }, /* XSUM_XXH64_testdata[5085] */ + { 2543, 0x0000000000000000ULL, 0x1EA753D4E7887275ULL }, /* XSUM_XXH64_testdata[5086] */ + { 2543, 0x000000009E3779B1ULL, 0xB06DA69852D87D1BULL }, /* XSUM_XXH64_testdata[5087] */ + { 2544, 0x0000000000000000ULL, 0x609BF370328543D1ULL }, /* XSUM_XXH64_testdata[5088] */ + { 2544, 0x000000009E3779B1ULL, 0x81D124FCDE0D4813ULL }, /* XSUM_XXH64_testdata[5089] */ + { 2545, 0x0000000000000000ULL, 0xB014AA75BAE63D76ULL }, /* XSUM_XXH64_testdata[5090] */ + { 2545, 0x000000009E3779B1ULL, 0xDEAD2DD420898D95ULL }, /* XSUM_XXH64_testdata[5091] */ + { 2546, 0x0000000000000000ULL, 0xEF577003924C6FC8ULL }, /* XSUM_XXH64_testdata[5092] */ + { 2546, 0x000000009E3779B1ULL, 0x2587DAC124341A5DULL }, /* XSUM_XXH64_testdata[5093] */ + { 2547, 0x0000000000000000ULL, 0x90650FE1782E38A0ULL }, /* XSUM_XXH64_testdata[5094] */ + { 2547, 0x000000009E3779B1ULL, 0x2661A63FFEA69022ULL }, /* XSUM_XXH64_testdata[5095] */ + { 2548, 0x0000000000000000ULL, 0x0CE0EE73800CFBCAULL }, /* XSUM_XXH64_testdata[5096] */ + { 2548, 0x000000009E3779B1ULL, 0x2D8EE2C27304B41FULL }, /* XSUM_XXH64_testdata[5097] */ + { 2549, 0x0000000000000000ULL, 0xF84E510009CA8385ULL }, /* XSUM_XXH64_testdata[5098] */ + { 2549, 0x000000009E3779B1ULL, 0xC0EFC262C28B5BA2ULL }, /* XSUM_XXH64_testdata[5099] */ + { 2550, 0x0000000000000000ULL, 0x4A631E2AFA49B471ULL }, /* XSUM_XXH64_testdata[5100] */ + { 2550, 0x000000009E3779B1ULL, 0x0B30E574AB7E36AFULL }, /* XSUM_XXH64_testdata[5101] */ + { 2551, 0x0000000000000000ULL, 0xF20574833D40AD77ULL }, /* XSUM_XXH64_testdata[5102] */ + { 2551, 0x000000009E3779B1ULL, 0x889FF8860EE36AFEULL }, /* XSUM_XXH64_testdata[5103] */ + { 2552, 0x0000000000000000ULL, 0x70BA1EEA0107565AULL }, /* XSUM_XXH64_testdata[5104] */ + { 2552, 0x000000009E3779B1ULL, 0xA054AEF606630A5AULL }, /* XSUM_XXH64_testdata[5105] */ + { 2553, 0x0000000000000000ULL, 0x418A9F6CE1AEBEB3ULL }, /* XSUM_XXH64_testdata[5106] */ + { 2553, 0x000000009E3779B1ULL, 0x3C7984A1BB90805AULL }, /* XSUM_XXH64_testdata[5107] */ + { 2554, 0x0000000000000000ULL, 0x0757A0D5B7AFFF36ULL }, /* XSUM_XXH64_testdata[5108] */ + { 2554, 0x000000009E3779B1ULL, 0xEED63607EB18DA54ULL }, /* XSUM_XXH64_testdata[5109] */ + { 2555, 0x0000000000000000ULL, 0x270E08132777881AULL }, /* XSUM_XXH64_testdata[5110] */ + { 2555, 0x000000009E3779B1ULL, 0xD00314EB5486C90CULL }, /* XSUM_XXH64_testdata[5111] */ + { 2556, 0x0000000000000000ULL, 0x59CEC4774BA8E113ULL }, /* XSUM_XXH64_testdata[5112] */ + { 2556, 0x000000009E3779B1ULL, 0x0ED2DD0577B9F3A2ULL }, /* XSUM_XXH64_testdata[5113] */ + { 2557, 0x0000000000000000ULL, 0x21ED52DA46C6FEDCULL }, /* XSUM_XXH64_testdata[5114] */ + { 2557, 0x000000009E3779B1ULL, 0xAC3DB390CB1DDF2BULL }, /* XSUM_XXH64_testdata[5115] */ + { 2558, 0x0000000000000000ULL, 0xC8B3A2247A1D8F74ULL }, /* XSUM_XXH64_testdata[5116] */ + { 2558, 0x000000009E3779B1ULL, 0x0D3D74F492DC8DEBULL }, /* XSUM_XXH64_testdata[5117] */ + { 2559, 0x0000000000000000ULL, 0x5D584F587FC5D3B1ULL }, /* XSUM_XXH64_testdata[5118] */ + { 2559, 0x000000009E3779B1ULL, 0x67A80025FD7E3700ULL }, /* XSUM_XXH64_testdata[5119] */ + { 2560, 0x0000000000000000ULL, 0x83F99CC087B22635ULL }, /* XSUM_XXH64_testdata[5120] */ + { 2560, 0x000000009E3779B1ULL, 0x85A74D89E67ADBE2ULL }, /* XSUM_XXH64_testdata[5121] */ + { 2561, 0x0000000000000000ULL, 0x19BDFB430AA38FE4ULL }, /* XSUM_XXH64_testdata[5122] */ + { 2561, 0x000000009E3779B1ULL, 0xBBFD4F1422A01B77ULL }, /* XSUM_XXH64_testdata[5123] */ + { 2562, 0x0000000000000000ULL, 0x36E06919A9B51285ULL }, /* XSUM_XXH64_testdata[5124] */ + { 2562, 0x000000009E3779B1ULL, 0xCD9BF49F71655F76ULL }, /* XSUM_XXH64_testdata[5125] */ + { 2563, 0x0000000000000000ULL, 0xC11D32484BBA42E5ULL }, /* XSUM_XXH64_testdata[5126] */ + { 2563, 0x000000009E3779B1ULL, 0xA6A45E5BEC1DB406ULL }, /* XSUM_XXH64_testdata[5127] */ + { 2564, 0x0000000000000000ULL, 0xF31F6D5469A0ED15ULL }, /* XSUM_XXH64_testdata[5128] */ + { 2564, 0x000000009E3779B1ULL, 0x32789A4E9AA3843CULL }, /* XSUM_XXH64_testdata[5129] */ + { 2565, 0x0000000000000000ULL, 0x89DC8056830F4602ULL }, /* XSUM_XXH64_testdata[5130] */ + { 2565, 0x000000009E3779B1ULL, 0x10F7304C7A13874CULL }, /* XSUM_XXH64_testdata[5131] */ + { 2566, 0x0000000000000000ULL, 0x8BC21D605C444202ULL }, /* XSUM_XXH64_testdata[5132] */ + { 2566, 0x000000009E3779B1ULL, 0x3C6E42458D0A0737ULL }, /* XSUM_XXH64_testdata[5133] */ + { 2567, 0x0000000000000000ULL, 0xB1CA71BB284DA7C6ULL }, /* XSUM_XXH64_testdata[5134] */ + { 2567, 0x000000009E3779B1ULL, 0x3C235DFB011059D2ULL }, /* XSUM_XXH64_testdata[5135] */ + { 2568, 0x0000000000000000ULL, 0x3D1773565BA468E7ULL }, /* XSUM_XXH64_testdata[5136] */ + { 2568, 0x000000009E3779B1ULL, 0x3C2EA3E2B7454522ULL }, /* XSUM_XXH64_testdata[5137] */ + { 2569, 0x0000000000000000ULL, 0x3497C95ACD9DCDE4ULL }, /* XSUM_XXH64_testdata[5138] */ + { 2569, 0x000000009E3779B1ULL, 0x5D28609B6C907B77ULL }, /* XSUM_XXH64_testdata[5139] */ + { 2570, 0x0000000000000000ULL, 0x96F9AB4EC3DE2AB6ULL }, /* XSUM_XXH64_testdata[5140] */ + { 2570, 0x000000009E3779B1ULL, 0x017991788C519CBDULL }, /* XSUM_XXH64_testdata[5141] */ + { 2571, 0x0000000000000000ULL, 0x0D1501EA587D47D7ULL }, /* XSUM_XXH64_testdata[5142] */ + { 2571, 0x000000009E3779B1ULL, 0x3277DB66D62CF81DULL }, /* XSUM_XXH64_testdata[5143] */ + { 2572, 0x0000000000000000ULL, 0x7948F0265F7CE1BCULL }, /* XSUM_XXH64_testdata[5144] */ + { 2572, 0x000000009E3779B1ULL, 0x5D64768B0522DD72ULL }, /* XSUM_XXH64_testdata[5145] */ + { 2573, 0x0000000000000000ULL, 0xD45E1A66C64578DDULL }, /* XSUM_XXH64_testdata[5146] */ + { 2573, 0x000000009E3779B1ULL, 0x339FF5AC0080679EULL }, /* XSUM_XXH64_testdata[5147] */ + { 2574, 0x0000000000000000ULL, 0x5A32935DCD95B67EULL }, /* XSUM_XXH64_testdata[5148] */ + { 2574, 0x000000009E3779B1ULL, 0x5E630C2F9ED18861ULL }, /* XSUM_XXH64_testdata[5149] */ + { 2575, 0x0000000000000000ULL, 0x16E048DB63EAC2ABULL }, /* XSUM_XXH64_testdata[5150] */ + { 2575, 0x000000009E3779B1ULL, 0x46DBD4D46BDBBB17ULL }, /* XSUM_XXH64_testdata[5151] */ + { 2576, 0x0000000000000000ULL, 0x6AE023408A5E95EFULL }, /* XSUM_XXH64_testdata[5152] */ + { 2576, 0x000000009E3779B1ULL, 0x650D105F97A515E4ULL }, /* XSUM_XXH64_testdata[5153] */ + { 2577, 0x0000000000000000ULL, 0xD98E2183FD03F4CBULL }, /* XSUM_XXH64_testdata[5154] */ + { 2577, 0x000000009E3779B1ULL, 0x0A535CF061C39882ULL }, /* XSUM_XXH64_testdata[5155] */ + { 2578, 0x0000000000000000ULL, 0x74B82315411204CBULL }, /* XSUM_XXH64_testdata[5156] */ + { 2578, 0x000000009E3779B1ULL, 0x3E823B36E834B40DULL }, /* XSUM_XXH64_testdata[5157] */ + { 2579, 0x0000000000000000ULL, 0x4D2C74325DCF07C3ULL }, /* XSUM_XXH64_testdata[5158] */ + { 2579, 0x000000009E3779B1ULL, 0x9E2D79DBDD1FB0D6ULL }, /* XSUM_XXH64_testdata[5159] */ + { 2580, 0x0000000000000000ULL, 0xB337F642C83A364BULL }, /* XSUM_XXH64_testdata[5160] */ + { 2580, 0x000000009E3779B1ULL, 0xF01454455DEDFFAEULL }, /* XSUM_XXH64_testdata[5161] */ + { 2581, 0x0000000000000000ULL, 0xB02F23F9EC5EAC8BULL }, /* XSUM_XXH64_testdata[5162] */ + { 2581, 0x000000009E3779B1ULL, 0xAEA837D286313274ULL }, /* XSUM_XXH64_testdata[5163] */ + { 2582, 0x0000000000000000ULL, 0xB0633E618F4C0037ULL }, /* XSUM_XXH64_testdata[5164] */ + { 2582, 0x000000009E3779B1ULL, 0x988688983C677A6DULL }, /* XSUM_XXH64_testdata[5165] */ + { 2583, 0x0000000000000000ULL, 0xD3440E3FD0542718ULL }, /* XSUM_XXH64_testdata[5166] */ + { 2583, 0x000000009E3779B1ULL, 0xEF7B191FC954F572ULL }, /* XSUM_XXH64_testdata[5167] */ + { 2584, 0x0000000000000000ULL, 0xB199D4292F17F4ABULL }, /* XSUM_XXH64_testdata[5168] */ + { 2584, 0x000000009E3779B1ULL, 0xBE7BA4F26719649DULL }, /* XSUM_XXH64_testdata[5169] */ + { 2585, 0x0000000000000000ULL, 0xC5B5E073D6C9A083ULL }, /* XSUM_XXH64_testdata[5170] */ + { 2585, 0x000000009E3779B1ULL, 0xC544B9B576D5F9F1ULL }, /* XSUM_XXH64_testdata[5171] */ + { 2586, 0x0000000000000000ULL, 0x4129A9ACAAB95CA9ULL }, /* XSUM_XXH64_testdata[5172] */ + { 2586, 0x000000009E3779B1ULL, 0xD1F9CD621EFD55DAULL }, /* XSUM_XXH64_testdata[5173] */ + { 2587, 0x0000000000000000ULL, 0x8D251DBE8CC868EBULL }, /* XSUM_XXH64_testdata[5174] */ + { 2587, 0x000000009E3779B1ULL, 0x4760D804633EEE29ULL }, /* XSUM_XXH64_testdata[5175] */ + { 2588, 0x0000000000000000ULL, 0xE53EBF32FE8A64E0ULL }, /* XSUM_XXH64_testdata[5176] */ + { 2588, 0x000000009E3779B1ULL, 0xB6D908963BDFD21EULL }, /* XSUM_XXH64_testdata[5177] */ + { 2589, 0x0000000000000000ULL, 0x6149B9BFCC0055E2ULL }, /* XSUM_XXH64_testdata[5178] */ + { 2589, 0x000000009E3779B1ULL, 0x671E494723FD1EA2ULL }, /* XSUM_XXH64_testdata[5179] */ + { 2590, 0x0000000000000000ULL, 0x415D17FE6FC4FF62ULL }, /* XSUM_XXH64_testdata[5180] */ + { 2590, 0x000000009E3779B1ULL, 0x0DDBA09EDD313121ULL }, /* XSUM_XXH64_testdata[5181] */ + { 2591, 0x0000000000000000ULL, 0x6951F8737C8516D5ULL }, /* XSUM_XXH64_testdata[5182] */ + { 2591, 0x000000009E3779B1ULL, 0xF41164BFC92C65DEULL }, /* XSUM_XXH64_testdata[5183] */ + { 2592, 0x0000000000000000ULL, 0x4B2B6F6AD0870BFBULL }, /* XSUM_XXH64_testdata[5184] */ + { 2592, 0x000000009E3779B1ULL, 0xFA266125AB4E59CDULL }, /* XSUM_XXH64_testdata[5185] */ + { 2593, 0x0000000000000000ULL, 0xC99FFC1394CF58D5ULL }, /* XSUM_XXH64_testdata[5186] */ + { 2593, 0x000000009E3779B1ULL, 0x0D90ADE91FBB1B6DULL }, /* XSUM_XXH64_testdata[5187] */ + { 2594, 0x0000000000000000ULL, 0xAECE588915B4A956ULL }, /* XSUM_XXH64_testdata[5188] */ + { 2594, 0x000000009E3779B1ULL, 0x548FE53719A4B473ULL }, /* XSUM_XXH64_testdata[5189] */ + { 2595, 0x0000000000000000ULL, 0x082C8F1D873EB72FULL }, /* XSUM_XXH64_testdata[5190] */ + { 2595, 0x000000009E3779B1ULL, 0xDEE41DB58C22ADBEULL }, /* XSUM_XXH64_testdata[5191] */ + { 2596, 0x0000000000000000ULL, 0x1C67F310E2E4DDB3ULL }, /* XSUM_XXH64_testdata[5192] */ + { 2596, 0x000000009E3779B1ULL, 0x8CC90EEEE829F990ULL }, /* XSUM_XXH64_testdata[5193] */ + { 2597, 0x0000000000000000ULL, 0x2F6A517341919CBBULL }, /* XSUM_XXH64_testdata[5194] */ + { 2597, 0x000000009E3779B1ULL, 0x3F46620F6E7530AAULL }, /* XSUM_XXH64_testdata[5195] */ + { 2598, 0x0000000000000000ULL, 0xA338B83A2B305A49ULL }, /* XSUM_XXH64_testdata[5196] */ + { 2598, 0x000000009E3779B1ULL, 0xA20C596E07029955ULL }, /* XSUM_XXH64_testdata[5197] */ + { 2599, 0x0000000000000000ULL, 0x60A66179E4C7F851ULL }, /* XSUM_XXH64_testdata[5198] */ + { 2599, 0x000000009E3779B1ULL, 0xC85A278F2F864E3AULL }, /* XSUM_XXH64_testdata[5199] */ + { 2600, 0x0000000000000000ULL, 0x5934FB023B7DBD2CULL }, /* XSUM_XXH64_testdata[5200] */ + { 2600, 0x000000009E3779B1ULL, 0x08F03493F2A42D4FULL }, /* XSUM_XXH64_testdata[5201] */ + { 2601, 0x0000000000000000ULL, 0xC3C9986C593CA5F2ULL }, /* XSUM_XXH64_testdata[5202] */ + { 2601, 0x000000009E3779B1ULL, 0x26451FFDB3A5ACC4ULL }, /* XSUM_XXH64_testdata[5203] */ + { 2602, 0x0000000000000000ULL, 0x5EBDFC05AD6046DBULL }, /* XSUM_XXH64_testdata[5204] */ + { 2602, 0x000000009E3779B1ULL, 0x25F6BD83F3AA1DA8ULL }, /* XSUM_XXH64_testdata[5205] */ + { 2603, 0x0000000000000000ULL, 0x02E60218FF14CDA6ULL }, /* XSUM_XXH64_testdata[5206] */ + { 2603, 0x000000009E3779B1ULL, 0xD6305D0118B4DC81ULL }, /* XSUM_XXH64_testdata[5207] */ + { 2604, 0x0000000000000000ULL, 0xD6E4F790D368EEDCULL }, /* XSUM_XXH64_testdata[5208] */ + { 2604, 0x000000009E3779B1ULL, 0xE417CE06D85ED712ULL }, /* XSUM_XXH64_testdata[5209] */ + { 2605, 0x0000000000000000ULL, 0x763DF2348E14F86EULL }, /* XSUM_XXH64_testdata[5210] */ + { 2605, 0x000000009E3779B1ULL, 0xD381FBF2226410D7ULL }, /* XSUM_XXH64_testdata[5211] */ + { 2606, 0x0000000000000000ULL, 0x4DA2BCD504B251CBULL }, /* XSUM_XXH64_testdata[5212] */ + { 2606, 0x000000009E3779B1ULL, 0x09F5E497A4F5B64AULL }, /* XSUM_XXH64_testdata[5213] */ + { 2607, 0x0000000000000000ULL, 0x7E670C46EDB7A4D2ULL }, /* XSUM_XXH64_testdata[5214] */ + { 2607, 0x000000009E3779B1ULL, 0x3EB80050462F35FAULL }, /* XSUM_XXH64_testdata[5215] */ + { 2608, 0x0000000000000000ULL, 0xE98AB9693CE03323ULL }, /* XSUM_XXH64_testdata[5216] */ + { 2608, 0x000000009E3779B1ULL, 0x42B26210B863396FULL }, /* XSUM_XXH64_testdata[5217] */ + { 2609, 0x0000000000000000ULL, 0x3C7FEECBDE529FACULL }, /* XSUM_XXH64_testdata[5218] */ + { 2609, 0x000000009E3779B1ULL, 0x9F3E59ABAA34E1C3ULL }, /* XSUM_XXH64_testdata[5219] */ + { 2610, 0x0000000000000000ULL, 0xFB9CEDAA3C8D98FFULL }, /* XSUM_XXH64_testdata[5220] */ + { 2610, 0x000000009E3779B1ULL, 0xCC14DD0608AF5B35ULL }, /* XSUM_XXH64_testdata[5221] */ + { 2611, 0x0000000000000000ULL, 0xD82F0EE08177134CULL }, /* XSUM_XXH64_testdata[5222] */ + { 2611, 0x000000009E3779B1ULL, 0xDD5B2B53FB3C5019ULL }, /* XSUM_XXH64_testdata[5223] */ + { 2612, 0x0000000000000000ULL, 0x1B5D28466084694BULL }, /* XSUM_XXH64_testdata[5224] */ + { 2612, 0x000000009E3779B1ULL, 0x8E9B4C69C13FF035ULL }, /* XSUM_XXH64_testdata[5225] */ + { 2613, 0x0000000000000000ULL, 0xF4DA8B2FE91C4292ULL }, /* XSUM_XXH64_testdata[5226] */ + { 2613, 0x000000009E3779B1ULL, 0xA8F5292EE97A6E51ULL }, /* XSUM_XXH64_testdata[5227] */ + { 2614, 0x0000000000000000ULL, 0x6C7094F47C3217C0ULL }, /* XSUM_XXH64_testdata[5228] */ + { 2614, 0x000000009E3779B1ULL, 0x359831901D882179ULL }, /* XSUM_XXH64_testdata[5229] */ + { 2615, 0x0000000000000000ULL, 0x667A56EC43D229FEULL }, /* XSUM_XXH64_testdata[5230] */ + { 2615, 0x000000009E3779B1ULL, 0x1D5CAC6F11FB958DULL }, /* XSUM_XXH64_testdata[5231] */ + { 2616, 0x0000000000000000ULL, 0x1520962D2AA2899AULL }, /* XSUM_XXH64_testdata[5232] */ + { 2616, 0x000000009E3779B1ULL, 0x7347200C5877690FULL }, /* XSUM_XXH64_testdata[5233] */ + { 2617, 0x0000000000000000ULL, 0x8C43F5DC146DD9D0ULL }, /* XSUM_XXH64_testdata[5234] */ + { 2617, 0x000000009E3779B1ULL, 0xF5568AF254DB5EC3ULL }, /* XSUM_XXH64_testdata[5235] */ + { 2618, 0x0000000000000000ULL, 0x9288D12766618256ULL }, /* XSUM_XXH64_testdata[5236] */ + { 2618, 0x000000009E3779B1ULL, 0xB26D042F0ADE546BULL }, /* XSUM_XXH64_testdata[5237] */ + { 2619, 0x0000000000000000ULL, 0x769FD7FDCD4417CAULL }, /* XSUM_XXH64_testdata[5238] */ + { 2619, 0x000000009E3779B1ULL, 0x05A60D279BF5899AULL }, /* XSUM_XXH64_testdata[5239] */ + { 2620, 0x0000000000000000ULL, 0xF9D63094BDE28AC0ULL }, /* XSUM_XXH64_testdata[5240] */ + { 2620, 0x000000009E3779B1ULL, 0x24C9A4539AA9FD71ULL }, /* XSUM_XXH64_testdata[5241] */ + { 2621, 0x0000000000000000ULL, 0x8813D604210E2A45ULL }, /* XSUM_XXH64_testdata[5242] */ + { 2621, 0x000000009E3779B1ULL, 0x3CBE1DBFD7CFDE07ULL }, /* XSUM_XXH64_testdata[5243] */ + { 2622, 0x0000000000000000ULL, 0x463EBA3D6220F130ULL }, /* XSUM_XXH64_testdata[5244] */ + { 2622, 0x000000009E3779B1ULL, 0x4A7D6DAEC093414FULL }, /* XSUM_XXH64_testdata[5245] */ + { 2623, 0x0000000000000000ULL, 0x10BA4C061B2AAD4BULL }, /* XSUM_XXH64_testdata[5246] */ + { 2623, 0x000000009E3779B1ULL, 0x0D999AF8EC61497AULL }, /* XSUM_XXH64_testdata[5247] */ + { 2624, 0x0000000000000000ULL, 0x8F467C17E14498E4ULL }, /* XSUM_XXH64_testdata[5248] */ + { 2624, 0x000000009E3779B1ULL, 0x0173F4E8BFBE354AULL }, /* XSUM_XXH64_testdata[5249] */ + { 2625, 0x0000000000000000ULL, 0xA63C9815F6E9E7DAULL }, /* XSUM_XXH64_testdata[5250] */ + { 2625, 0x000000009E3779B1ULL, 0x91D55F64CD86D519ULL }, /* XSUM_XXH64_testdata[5251] */ + { 2626, 0x0000000000000000ULL, 0xFBB80C02CB53455CULL }, /* XSUM_XXH64_testdata[5252] */ + { 2626, 0x000000009E3779B1ULL, 0xD67E4AA1E113CBC0ULL }, /* XSUM_XXH64_testdata[5253] */ + { 2627, 0x0000000000000000ULL, 0x4A69EEE4D2B7E077ULL }, /* XSUM_XXH64_testdata[5254] */ + { 2627, 0x000000009E3779B1ULL, 0xF45035BC81E651F6ULL }, /* XSUM_XXH64_testdata[5255] */ + { 2628, 0x0000000000000000ULL, 0x91B179FB13DB9E2DULL }, /* XSUM_XXH64_testdata[5256] */ + { 2628, 0x000000009E3779B1ULL, 0x59B1AFC0C06DBA22ULL }, /* XSUM_XXH64_testdata[5257] */ + { 2629, 0x0000000000000000ULL, 0x03F7C5ED4DABBF1FULL }, /* XSUM_XXH64_testdata[5258] */ + { 2629, 0x000000009E3779B1ULL, 0x042292ECF4B9CC9EULL }, /* XSUM_XXH64_testdata[5259] */ + { 2630, 0x0000000000000000ULL, 0x9B0C117E3F84A12FULL }, /* XSUM_XXH64_testdata[5260] */ + { 2630, 0x000000009E3779B1ULL, 0x2041FA9235B91B53ULL }, /* XSUM_XXH64_testdata[5261] */ + { 2631, 0x0000000000000000ULL, 0x43AC65D9BFE824CBULL }, /* XSUM_XXH64_testdata[5262] */ + { 2631, 0x000000009E3779B1ULL, 0x2041F4FE0FA0E97AULL }, /* XSUM_XXH64_testdata[5263] */ + { 2632, 0x0000000000000000ULL, 0xE2C27C928AFBA65CULL }, /* XSUM_XXH64_testdata[5264] */ + { 2632, 0x000000009E3779B1ULL, 0x6E21087DF1F8A6F0ULL }, /* XSUM_XXH64_testdata[5265] */ + { 2633, 0x0000000000000000ULL, 0x3D0108B4B85473CDULL }, /* XSUM_XXH64_testdata[5266] */ + { 2633, 0x000000009E3779B1ULL, 0x31FF9082BAF019B3ULL }, /* XSUM_XXH64_testdata[5267] */ + { 2634, 0x0000000000000000ULL, 0x844CD36FB8DC639AULL }, /* XSUM_XXH64_testdata[5268] */ + { 2634, 0x000000009E3779B1ULL, 0x7E7EF2B3AEE2A301ULL }, /* XSUM_XXH64_testdata[5269] */ + { 2635, 0x0000000000000000ULL, 0x017E4D9D35557979ULL }, /* XSUM_XXH64_testdata[5270] */ + { 2635, 0x000000009E3779B1ULL, 0x0B16F5B82BEDDC90ULL }, /* XSUM_XXH64_testdata[5271] */ + { 2636, 0x0000000000000000ULL, 0x9FA2C8C44D878826ULL }, /* XSUM_XXH64_testdata[5272] */ + { 2636, 0x000000009E3779B1ULL, 0xE05EBC6710F1CACEULL }, /* XSUM_XXH64_testdata[5273] */ + { 2637, 0x0000000000000000ULL, 0x77C983C6385DEE11ULL }, /* XSUM_XXH64_testdata[5274] */ + { 2637, 0x000000009E3779B1ULL, 0x4AC3B5A700C024A8ULL }, /* XSUM_XXH64_testdata[5275] */ + { 2638, 0x0000000000000000ULL, 0x0AAFCD36F0F2A5EFULL }, /* XSUM_XXH64_testdata[5276] */ + { 2638, 0x000000009E3779B1ULL, 0xBA21B39252F411A4ULL }, /* XSUM_XXH64_testdata[5277] */ + { 2639, 0x0000000000000000ULL, 0xB667333E66722078ULL }, /* XSUM_XXH64_testdata[5278] */ + { 2639, 0x000000009E3779B1ULL, 0xCD87A79875228B9DULL }, /* XSUM_XXH64_testdata[5279] */ + { 2640, 0x0000000000000000ULL, 0x89FD20259313E855ULL }, /* XSUM_XXH64_testdata[5280] */ + { 2640, 0x000000009E3779B1ULL, 0xF4145A269EC7BD79ULL }, /* XSUM_XXH64_testdata[5281] */ + { 2641, 0x0000000000000000ULL, 0xFBC40C15329C8222ULL }, /* XSUM_XXH64_testdata[5282] */ + { 2641, 0x000000009E3779B1ULL, 0x93A5C34ADDED7879ULL }, /* XSUM_XXH64_testdata[5283] */ + { 2642, 0x0000000000000000ULL, 0x549F96ADD845CAACULL }, /* XSUM_XXH64_testdata[5284] */ + { 2642, 0x000000009E3779B1ULL, 0x5B5FD31C800C2C6CULL }, /* XSUM_XXH64_testdata[5285] */ + { 2643, 0x0000000000000000ULL, 0x395EBC5D181D1CD1ULL }, /* XSUM_XXH64_testdata[5286] */ + { 2643, 0x000000009E3779B1ULL, 0x8654344D995D12E4ULL }, /* XSUM_XXH64_testdata[5287] */ + { 2644, 0x0000000000000000ULL, 0x2E00C8B2D0ACDE9AULL }, /* XSUM_XXH64_testdata[5288] */ + { 2644, 0x000000009E3779B1ULL, 0x0CD62CE8866CD2CFULL }, /* XSUM_XXH64_testdata[5289] */ + { 2645, 0x0000000000000000ULL, 0xE8A6703DFE7279D3ULL }, /* XSUM_XXH64_testdata[5290] */ + { 2645, 0x000000009E3779B1ULL, 0x87262AEFE486A286ULL }, /* XSUM_XXH64_testdata[5291] */ + { 2646, 0x0000000000000000ULL, 0x988915B106F8D70DULL }, /* XSUM_XXH64_testdata[5292] */ + { 2646, 0x000000009E3779B1ULL, 0x63619819F8BCD9F6ULL }, /* XSUM_XXH64_testdata[5293] */ + { 2647, 0x0000000000000000ULL, 0xDD0712DC553F0FD8ULL }, /* XSUM_XXH64_testdata[5294] */ + { 2647, 0x000000009E3779B1ULL, 0xA96292255EDE4F0FULL }, /* XSUM_XXH64_testdata[5295] */ + { 2648, 0x0000000000000000ULL, 0x6AA1CCEBDC2C201BULL }, /* XSUM_XXH64_testdata[5296] */ + { 2648, 0x000000009E3779B1ULL, 0x12D897F7689C686AULL }, /* XSUM_XXH64_testdata[5297] */ + { 2649, 0x0000000000000000ULL, 0x7C0F079363ECF519ULL }, /* XSUM_XXH64_testdata[5298] */ + { 2649, 0x000000009E3779B1ULL, 0xB416D464C80C6535ULL }, /* XSUM_XXH64_testdata[5299] */ + { 2650, 0x0000000000000000ULL, 0xA2D9698DD8C96DC6ULL }, /* XSUM_XXH64_testdata[5300] */ + { 2650, 0x000000009E3779B1ULL, 0xE23647CCC5492549ULL }, /* XSUM_XXH64_testdata[5301] */ + { 2651, 0x0000000000000000ULL, 0x613F397CA5BAEC4AULL }, /* XSUM_XXH64_testdata[5302] */ + { 2651, 0x000000009E3779B1ULL, 0x0E2A17D8B1C8ABDEULL }, /* XSUM_XXH64_testdata[5303] */ + { 2652, 0x0000000000000000ULL, 0xC487EEE98764070DULL }, /* XSUM_XXH64_testdata[5304] */ + { 2652, 0x000000009E3779B1ULL, 0xCD52370E3DB1A704ULL }, /* XSUM_XXH64_testdata[5305] */ + { 2653, 0x0000000000000000ULL, 0xCCEE803E4CDAA2FAULL }, /* XSUM_XXH64_testdata[5306] */ + { 2653, 0x000000009E3779B1ULL, 0xB39508DAA0E44E51ULL }, /* XSUM_XXH64_testdata[5307] */ + { 2654, 0x0000000000000000ULL, 0xD55AA0D63C19C6F3ULL }, /* XSUM_XXH64_testdata[5308] */ + { 2654, 0x000000009E3779B1ULL, 0x4BB06DD09E776011ULL }, /* XSUM_XXH64_testdata[5309] */ + { 2655, 0x0000000000000000ULL, 0x7B0C4253A0EA3866ULL }, /* XSUM_XXH64_testdata[5310] */ + { 2655, 0x000000009E3779B1ULL, 0x2A91742CAA534523ULL }, /* XSUM_XXH64_testdata[5311] */ + { 2656, 0x0000000000000000ULL, 0x0F305E07162AA67BULL }, /* XSUM_XXH64_testdata[5312] */ + { 2656, 0x000000009E3779B1ULL, 0xE921F36E22F9CE55ULL }, /* XSUM_XXH64_testdata[5313] */ + { 2657, 0x0000000000000000ULL, 0x33F79984714E8B8EULL }, /* XSUM_XXH64_testdata[5314] */ + { 2657, 0x000000009E3779B1ULL, 0x0CDE36E72BAFE48BULL }, /* XSUM_XXH64_testdata[5315] */ + { 2658, 0x0000000000000000ULL, 0x6AD140997C752ACBULL }, /* XSUM_XXH64_testdata[5316] */ + { 2658, 0x000000009E3779B1ULL, 0x7206E261FF078AACULL }, /* XSUM_XXH64_testdata[5317] */ + { 2659, 0x0000000000000000ULL, 0x1827BDA7AB265D3FULL }, /* XSUM_XXH64_testdata[5318] */ + { 2659, 0x000000009E3779B1ULL, 0x90FC4F031086C5C7ULL }, /* XSUM_XXH64_testdata[5319] */ + { 2660, 0x0000000000000000ULL, 0xB3B5D0990492E6FAULL }, /* XSUM_XXH64_testdata[5320] */ + { 2660, 0x000000009E3779B1ULL, 0xF370B1C33CBE7CEDULL }, /* XSUM_XXH64_testdata[5321] */ + { 2661, 0x0000000000000000ULL, 0x70E81380C2888613ULL }, /* XSUM_XXH64_testdata[5322] */ + { 2661, 0x000000009E3779B1ULL, 0x4637639F608D233AULL }, /* XSUM_XXH64_testdata[5323] */ + { 2662, 0x0000000000000000ULL, 0x663C7752A6BDDA70ULL }, /* XSUM_XXH64_testdata[5324] */ + { 2662, 0x000000009E3779B1ULL, 0x9512C334D0B0CB8EULL }, /* XSUM_XXH64_testdata[5325] */ + { 2663, 0x0000000000000000ULL, 0xE3CAC100BB5A2051ULL }, /* XSUM_XXH64_testdata[5326] */ + { 2663, 0x000000009E3779B1ULL, 0xD57C633DFE7C4182ULL }, /* XSUM_XXH64_testdata[5327] */ + { 2664, 0x0000000000000000ULL, 0xD193570CEBF9B373ULL }, /* XSUM_XXH64_testdata[5328] */ + { 2664, 0x000000009E3779B1ULL, 0x2A981EB758C23653ULL }, /* XSUM_XXH64_testdata[5329] */ + { 2665, 0x0000000000000000ULL, 0x3ADDB3CD79250F6CULL }, /* XSUM_XXH64_testdata[5330] */ + { 2665, 0x000000009E3779B1ULL, 0x8600AC8BE53281FAULL }, /* XSUM_XXH64_testdata[5331] */ + { 2666, 0x0000000000000000ULL, 0xE05D37B2E931832CULL }, /* XSUM_XXH64_testdata[5332] */ + { 2666, 0x000000009E3779B1ULL, 0xACDE2F0F002CDC10ULL }, /* XSUM_XXH64_testdata[5333] */ + { 2667, 0x0000000000000000ULL, 0x4C56D2C8FAD01640ULL }, /* XSUM_XXH64_testdata[5334] */ + { 2667, 0x000000009E3779B1ULL, 0xD61CFA56FEB07884ULL }, /* XSUM_XXH64_testdata[5335] */ + { 2668, 0x0000000000000000ULL, 0x9225D320A8C44FA0ULL }, /* XSUM_XXH64_testdata[5336] */ + { 2668, 0x000000009E3779B1ULL, 0x5ABE09FE0F3F56B6ULL }, /* XSUM_XXH64_testdata[5337] */ + { 2669, 0x0000000000000000ULL, 0x5BD44EAB7496875DULL }, /* XSUM_XXH64_testdata[5338] */ + { 2669, 0x000000009E3779B1ULL, 0xAF434D8F323D816FULL }, /* XSUM_XXH64_testdata[5339] */ + { 2670, 0x0000000000000000ULL, 0x0B20E298A82CC4CEULL }, /* XSUM_XXH64_testdata[5340] */ + { 2670, 0x000000009E3779B1ULL, 0x57193651765AB793ULL }, /* XSUM_XXH64_testdata[5341] */ + { 2671, 0x0000000000000000ULL, 0xBAD03280CF5667ACULL }, /* XSUM_XXH64_testdata[5342] */ + { 2671, 0x000000009E3779B1ULL, 0x786EE36A1E3148EDULL }, /* XSUM_XXH64_testdata[5343] */ + { 2672, 0x0000000000000000ULL, 0x7196A61190D02110ULL }, /* XSUM_XXH64_testdata[5344] */ + { 2672, 0x000000009E3779B1ULL, 0x6C0AC59B9C1C0096ULL }, /* XSUM_XXH64_testdata[5345] */ + { 2673, 0x0000000000000000ULL, 0x3456AF9F456A731EULL }, /* XSUM_XXH64_testdata[5346] */ + { 2673, 0x000000009E3779B1ULL, 0xB07992625E938B09ULL }, /* XSUM_XXH64_testdata[5347] */ + { 2674, 0x0000000000000000ULL, 0x080ED8859D98385AULL }, /* XSUM_XXH64_testdata[5348] */ + { 2674, 0x000000009E3779B1ULL, 0x390342FB527495ECULL }, /* XSUM_XXH64_testdata[5349] */ + { 2675, 0x0000000000000000ULL, 0x16533A20A1C8764FULL }, /* XSUM_XXH64_testdata[5350] */ + { 2675, 0x000000009E3779B1ULL, 0xA9E28B30C5E307E7ULL }, /* XSUM_XXH64_testdata[5351] */ + { 2676, 0x0000000000000000ULL, 0x167BA5525461A3F2ULL }, /* XSUM_XXH64_testdata[5352] */ + { 2676, 0x000000009E3779B1ULL, 0xED448F9A0A945211ULL }, /* XSUM_XXH64_testdata[5353] */ + { 2677, 0x0000000000000000ULL, 0xF628935AC66BB6C6ULL }, /* XSUM_XXH64_testdata[5354] */ + { 2677, 0x000000009E3779B1ULL, 0xC9E7838495BBE71CULL }, /* XSUM_XXH64_testdata[5355] */ + { 2678, 0x0000000000000000ULL, 0x2D3B36BE929C6D6AULL }, /* XSUM_XXH64_testdata[5356] */ + { 2678, 0x000000009E3779B1ULL, 0x91C90F3F0565C673ULL }, /* XSUM_XXH64_testdata[5357] */ + { 2679, 0x0000000000000000ULL, 0x68B9562720C00072ULL }, /* XSUM_XXH64_testdata[5358] */ + { 2679, 0x000000009E3779B1ULL, 0x5261710AC54DF6F0ULL }, /* XSUM_XXH64_testdata[5359] */ + { 2680, 0x0000000000000000ULL, 0x86DD5AFB404028DEULL }, /* XSUM_XXH64_testdata[5360] */ + { 2680, 0x000000009E3779B1ULL, 0x601887F21245CCA7ULL }, /* XSUM_XXH64_testdata[5361] */ + { 2681, 0x0000000000000000ULL, 0x330471DCE75C180FULL }, /* XSUM_XXH64_testdata[5362] */ + { 2681, 0x000000009E3779B1ULL, 0x58E21FD212C0629FULL }, /* XSUM_XXH64_testdata[5363] */ + { 2682, 0x0000000000000000ULL, 0x9877A4B98F1B3FEEULL }, /* XSUM_XXH64_testdata[5364] */ + { 2682, 0x000000009E3779B1ULL, 0x8514C3FCBD5FE0C7ULL }, /* XSUM_XXH64_testdata[5365] */ + { 2683, 0x0000000000000000ULL, 0x5F66B8A3C9DA0E9DULL }, /* XSUM_XXH64_testdata[5366] */ + { 2683, 0x000000009E3779B1ULL, 0x580CDCA978608001ULL }, /* XSUM_XXH64_testdata[5367] */ + { 2684, 0x0000000000000000ULL, 0xB1B04607AC4CFCB2ULL }, /* XSUM_XXH64_testdata[5368] */ + { 2684, 0x000000009E3779B1ULL, 0x3DEEBA595E536F88ULL }, /* XSUM_XXH64_testdata[5369] */ + { 2685, 0x0000000000000000ULL, 0x89061C6498705235ULL }, /* XSUM_XXH64_testdata[5370] */ + { 2685, 0x000000009E3779B1ULL, 0x576FFDCED4157FB6ULL }, /* XSUM_XXH64_testdata[5371] */ + { 2686, 0x0000000000000000ULL, 0x64227E6A409E326AULL }, /* XSUM_XXH64_testdata[5372] */ + { 2686, 0x000000009E3779B1ULL, 0x753511B3D56ACEB3ULL }, /* XSUM_XXH64_testdata[5373] */ + { 2687, 0x0000000000000000ULL, 0x1B61A9FFE074F81CULL }, /* XSUM_XXH64_testdata[5374] */ + { 2687, 0x000000009E3779B1ULL, 0x2BA11D20F2564954ULL }, /* XSUM_XXH64_testdata[5375] */ + { 2688, 0x0000000000000000ULL, 0xD98B2098D717BD03ULL }, /* XSUM_XXH64_testdata[5376] */ + { 2688, 0x000000009E3779B1ULL, 0xFB84E91EAE1A4CC2ULL }, /* XSUM_XXH64_testdata[5377] */ + { 2689, 0x0000000000000000ULL, 0x80E5DFA899A6F7A4ULL }, /* XSUM_XXH64_testdata[5378] */ + { 2689, 0x000000009E3779B1ULL, 0x71E7A44665EF67A5ULL }, /* XSUM_XXH64_testdata[5379] */ + { 2690, 0x0000000000000000ULL, 0xC98076B6FFF01245ULL }, /* XSUM_XXH64_testdata[5380] */ + { 2690, 0x000000009E3779B1ULL, 0x2DF344C02FCFEE4BULL }, /* XSUM_XXH64_testdata[5381] */ + { 2691, 0x0000000000000000ULL, 0x413625C9D00E64D9ULL }, /* XSUM_XXH64_testdata[5382] */ + { 2691, 0x000000009E3779B1ULL, 0x5F792330E530E4B4ULL }, /* XSUM_XXH64_testdata[5383] */ + { 2692, 0x0000000000000000ULL, 0xACA7B716575B1D4EULL }, /* XSUM_XXH64_testdata[5384] */ + { 2692, 0x000000009E3779B1ULL, 0xF803C34827B379F8ULL }, /* XSUM_XXH64_testdata[5385] */ + { 2693, 0x0000000000000000ULL, 0xEE3540E360882585ULL }, /* XSUM_XXH64_testdata[5386] */ + { 2693, 0x000000009E3779B1ULL, 0x545A705F09C71769ULL }, /* XSUM_XXH64_testdata[5387] */ + { 2694, 0x0000000000000000ULL, 0x86766A5138C80F5FULL }, /* XSUM_XXH64_testdata[5388] */ + { 2694, 0x000000009E3779B1ULL, 0x643CC69E8C0C732CULL }, /* XSUM_XXH64_testdata[5389] */ + { 2695, 0x0000000000000000ULL, 0x084085526D3FFE9DULL }, /* XSUM_XXH64_testdata[5390] */ + { 2695, 0x000000009E3779B1ULL, 0x2160224648B9FFD1ULL }, /* XSUM_XXH64_testdata[5391] */ + { 2696, 0x0000000000000000ULL, 0x9D884DABF83B982EULL }, /* XSUM_XXH64_testdata[5392] */ + { 2696, 0x000000009E3779B1ULL, 0x3A8122761B5D70CDULL }, /* XSUM_XXH64_testdata[5393] */ + { 2697, 0x0000000000000000ULL, 0xB851B7E262C1F756ULL }, /* XSUM_XXH64_testdata[5394] */ + { 2697, 0x000000009E3779B1ULL, 0x48905F3A7F8B5BE6ULL }, /* XSUM_XXH64_testdata[5395] */ + { 2698, 0x0000000000000000ULL, 0x1A76A449398A1D41ULL }, /* XSUM_XXH64_testdata[5396] */ + { 2698, 0x000000009E3779B1ULL, 0x5EF74E8EFE36E080ULL }, /* XSUM_XXH64_testdata[5397] */ + { 2699, 0x0000000000000000ULL, 0x1ABDDC0B0F1BDF1EULL }, /* XSUM_XXH64_testdata[5398] */ + { 2699, 0x000000009E3779B1ULL, 0x29609C0854CD9D11ULL }, /* XSUM_XXH64_testdata[5399] */ + { 2700, 0x0000000000000000ULL, 0xB20EC3D53B332DF3ULL }, /* XSUM_XXH64_testdata[5400] */ + { 2700, 0x000000009E3779B1ULL, 0x00450D755519E1F1ULL }, /* XSUM_XXH64_testdata[5401] */ + { 2701, 0x0000000000000000ULL, 0xEA8710015BAFDDFFULL }, /* XSUM_XXH64_testdata[5402] */ + { 2701, 0x000000009E3779B1ULL, 0x0925A9FBB93DB997ULL }, /* XSUM_XXH64_testdata[5403] */ + { 2702, 0x0000000000000000ULL, 0xA4B8D248ECF402EAULL }, /* XSUM_XXH64_testdata[5404] */ + { 2702, 0x000000009E3779B1ULL, 0x8D8F4B8DAE6A5B08ULL }, /* XSUM_XXH64_testdata[5405] */ + { 2703, 0x0000000000000000ULL, 0x745E9262603F0F00ULL }, /* XSUM_XXH64_testdata[5406] */ + { 2703, 0x000000009E3779B1ULL, 0xBAC749A8F3AF1D69ULL }, /* XSUM_XXH64_testdata[5407] */ + { 2704, 0x0000000000000000ULL, 0xEF5B849012A29DBCULL }, /* XSUM_XXH64_testdata[5408] */ + { 2704, 0x000000009E3779B1ULL, 0xB48440AE4AF2E9A7ULL }, /* XSUM_XXH64_testdata[5409] */ + { 2705, 0x0000000000000000ULL, 0xFFCDC29BBCA8117CULL }, /* XSUM_XXH64_testdata[5410] */ + { 2705, 0x000000009E3779B1ULL, 0x24F85DC5F9747418ULL }, /* XSUM_XXH64_testdata[5411] */ + { 2706, 0x0000000000000000ULL, 0x076E87140E7EA883ULL }, /* XSUM_XXH64_testdata[5412] */ + { 2706, 0x000000009E3779B1ULL, 0xD02EC0A9F57B989DULL }, /* XSUM_XXH64_testdata[5413] */ + { 2707, 0x0000000000000000ULL, 0xE3C22032C03E4501ULL }, /* XSUM_XXH64_testdata[5414] */ + { 2707, 0x000000009E3779B1ULL, 0xC2C5F78167E77C63ULL }, /* XSUM_XXH64_testdata[5415] */ + { 2708, 0x0000000000000000ULL, 0x770B0ECBF2E10CC6ULL }, /* XSUM_XXH64_testdata[5416] */ + { 2708, 0x000000009E3779B1ULL, 0x921911A6D213DCC1ULL }, /* XSUM_XXH64_testdata[5417] */ + { 2709, 0x0000000000000000ULL, 0xAD6DCC60CEECEACEULL }, /* XSUM_XXH64_testdata[5418] */ + { 2709, 0x000000009E3779B1ULL, 0xFDDF6CB5915E289EULL }, /* XSUM_XXH64_testdata[5419] */ + { 2710, 0x0000000000000000ULL, 0x6728377CCED8CF89ULL }, /* XSUM_XXH64_testdata[5420] */ + { 2710, 0x000000009E3779B1ULL, 0x3AD576A0954C0DEAULL }, /* XSUM_XXH64_testdata[5421] */ + { 2711, 0x0000000000000000ULL, 0x11DC529411B5E017ULL }, /* XSUM_XXH64_testdata[5422] */ + { 2711, 0x000000009E3779B1ULL, 0x121221F029BC9977ULL }, /* XSUM_XXH64_testdata[5423] */ + { 2712, 0x0000000000000000ULL, 0xF7F2C8BA02E5BA73ULL }, /* XSUM_XXH64_testdata[5424] */ + { 2712, 0x000000009E3779B1ULL, 0x367ECCA834A57093ULL }, /* XSUM_XXH64_testdata[5425] */ + { 2713, 0x0000000000000000ULL, 0xCEBC36D72E9BF06AULL }, /* XSUM_XXH64_testdata[5426] */ + { 2713, 0x000000009E3779B1ULL, 0xC8365B9763C264C2ULL }, /* XSUM_XXH64_testdata[5427] */ + { 2714, 0x0000000000000000ULL, 0xAA11A0E7EFDDA1CCULL }, /* XSUM_XXH64_testdata[5428] */ + { 2714, 0x000000009E3779B1ULL, 0x04E69C921B6EED5BULL }, /* XSUM_XXH64_testdata[5429] */ + { 2715, 0x0000000000000000ULL, 0x9FD3098521645FC5ULL }, /* XSUM_XXH64_testdata[5430] */ + { 2715, 0x000000009E3779B1ULL, 0x3CC78AA080297D6FULL }, /* XSUM_XXH64_testdata[5431] */ + { 2716, 0x0000000000000000ULL, 0x16A1F0DAEDE1B06CULL }, /* XSUM_XXH64_testdata[5432] */ + { 2716, 0x000000009E3779B1ULL, 0x1AA5B9C6DA32E4A7ULL }, /* XSUM_XXH64_testdata[5433] */ + { 2717, 0x0000000000000000ULL, 0x86C886AAB05A00E3ULL }, /* XSUM_XXH64_testdata[5434] */ + { 2717, 0x000000009E3779B1ULL, 0xAF9EC015F2757642ULL }, /* XSUM_XXH64_testdata[5435] */ + { 2718, 0x0000000000000000ULL, 0xEE437AF8C5F4A30FULL }, /* XSUM_XXH64_testdata[5436] */ + { 2718, 0x000000009E3779B1ULL, 0x82D315A1001625DAULL }, /* XSUM_XXH64_testdata[5437] */ + { 2719, 0x0000000000000000ULL, 0xAB5D9ED800E5D8DBULL }, /* XSUM_XXH64_testdata[5438] */ + { 2719, 0x000000009E3779B1ULL, 0x13E554D742D4D640ULL }, /* XSUM_XXH64_testdata[5439] */ + { 2720, 0x0000000000000000ULL, 0x74DC0CD729CD226AULL }, /* XSUM_XXH64_testdata[5440] */ + { 2720, 0x000000009E3779B1ULL, 0xF8808D2C9B19308EULL }, /* XSUM_XXH64_testdata[5441] */ + { 2721, 0x0000000000000000ULL, 0x84727B4DFBEF7E66ULL }, /* XSUM_XXH64_testdata[5442] */ + { 2721, 0x000000009E3779B1ULL, 0x77AD527413D6A5C3ULL }, /* XSUM_XXH64_testdata[5443] */ + { 2722, 0x0000000000000000ULL, 0xDAA31E1223B00447ULL }, /* XSUM_XXH64_testdata[5444] */ + { 2722, 0x000000009E3779B1ULL, 0xDF4AAC2AA73680A6ULL }, /* XSUM_XXH64_testdata[5445] */ + { 2723, 0x0000000000000000ULL, 0x607668A2BC6B318CULL }, /* XSUM_XXH64_testdata[5446] */ + { 2723, 0x000000009E3779B1ULL, 0x00DD477B2A142478ULL }, /* XSUM_XXH64_testdata[5447] */ + { 2724, 0x0000000000000000ULL, 0xCCC674D7CBD6A3FFULL }, /* XSUM_XXH64_testdata[5448] */ + { 2724, 0x000000009E3779B1ULL, 0x6F5757E61B7C40F4ULL }, /* XSUM_XXH64_testdata[5449] */ + { 2725, 0x0000000000000000ULL, 0x36C89133B51B8735ULL }, /* XSUM_XXH64_testdata[5450] */ + { 2725, 0x000000009E3779B1ULL, 0xCC9056B5D271C355ULL }, /* XSUM_XXH64_testdata[5451] */ + { 2726, 0x0000000000000000ULL, 0x90BF10B3E9F52186ULL }, /* XSUM_XXH64_testdata[5452] */ + { 2726, 0x000000009E3779B1ULL, 0x816CC4364BE94BB4ULL }, /* XSUM_XXH64_testdata[5453] */ + { 2727, 0x0000000000000000ULL, 0xCBB5E17B0B20A6D4ULL }, /* XSUM_XXH64_testdata[5454] */ + { 2727, 0x000000009E3779B1ULL, 0x43DD1B6F0E41CC05ULL }, /* XSUM_XXH64_testdata[5455] */ + { 2728, 0x0000000000000000ULL, 0xACFA07806D3A6433ULL }, /* XSUM_XXH64_testdata[5456] */ + { 2728, 0x000000009E3779B1ULL, 0x7FB5E6E2BF98C131ULL }, /* XSUM_XXH64_testdata[5457] */ + { 2729, 0x0000000000000000ULL, 0x39C7E75BD4A5F06AULL }, /* XSUM_XXH64_testdata[5458] */ + { 2729, 0x000000009E3779B1ULL, 0xBCA33467CC5A6E53ULL }, /* XSUM_XXH64_testdata[5459] */ + { 2730, 0x0000000000000000ULL, 0xD8472FD3A3C43BC9ULL }, /* XSUM_XXH64_testdata[5460] */ + { 2730, 0x000000009E3779B1ULL, 0x44657C0FE2A47DCCULL }, /* XSUM_XXH64_testdata[5461] */ + { 2731, 0x0000000000000000ULL, 0x52D8EF194B75B28AULL }, /* XSUM_XXH64_testdata[5462] */ + { 2731, 0x000000009E3779B1ULL, 0x961F93CE3C6B2BC5ULL }, /* XSUM_XXH64_testdata[5463] */ + { 2732, 0x0000000000000000ULL, 0xB07CA76D9405EEFFULL }, /* XSUM_XXH64_testdata[5464] */ + { 2732, 0x000000009E3779B1ULL, 0x6C751DB330B24AA9ULL }, /* XSUM_XXH64_testdata[5465] */ + { 2733, 0x0000000000000000ULL, 0x3C9623866A9DEA54ULL }, /* XSUM_XXH64_testdata[5466] */ + { 2733, 0x000000009E3779B1ULL, 0x3155523F0157EE1AULL }, /* XSUM_XXH64_testdata[5467] */ + { 2734, 0x0000000000000000ULL, 0x5B34B4F5A89DA21BULL }, /* XSUM_XXH64_testdata[5468] */ + { 2734, 0x000000009E3779B1ULL, 0x13C472A50030EAE5ULL }, /* XSUM_XXH64_testdata[5469] */ + { 2735, 0x0000000000000000ULL, 0xE783988272A6DBDBULL }, /* XSUM_XXH64_testdata[5470] */ + { 2735, 0x000000009E3779B1ULL, 0x384E3C4C5F45F3BBULL }, /* XSUM_XXH64_testdata[5471] */ + { 2736, 0x0000000000000000ULL, 0x1C2AA7A98CF52E58ULL }, /* XSUM_XXH64_testdata[5472] */ + { 2736, 0x000000009E3779B1ULL, 0x41F9DCDBCADED49EULL }, /* XSUM_XXH64_testdata[5473] */ + { 2737, 0x0000000000000000ULL, 0x3EB459238E0DF66FULL }, /* XSUM_XXH64_testdata[5474] */ + { 2737, 0x000000009E3779B1ULL, 0x1272290FEEE7786FULL }, /* XSUM_XXH64_testdata[5475] */ + { 2738, 0x0000000000000000ULL, 0x707FEE8CFA293055ULL }, /* XSUM_XXH64_testdata[5476] */ + { 2738, 0x000000009E3779B1ULL, 0xB1A2376F169AB9FAULL }, /* XSUM_XXH64_testdata[5477] */ + { 2739, 0x0000000000000000ULL, 0xB18EDEB4FBBE355BULL }, /* XSUM_XXH64_testdata[5478] */ + { 2739, 0x000000009E3779B1ULL, 0x375B016743D3FE55ULL }, /* XSUM_XXH64_testdata[5479] */ + { 2740, 0x0000000000000000ULL, 0xA4F1703D6A391092ULL }, /* XSUM_XXH64_testdata[5480] */ + { 2740, 0x000000009E3779B1ULL, 0x341AE1FA491CAE89ULL }, /* XSUM_XXH64_testdata[5481] */ + { 2741, 0x0000000000000000ULL, 0xAAC51A59DFE29D5CULL }, /* XSUM_XXH64_testdata[5482] */ + { 2741, 0x000000009E3779B1ULL, 0x0B28F9D9635DC2B2ULL }, /* XSUM_XXH64_testdata[5483] */ + { 2742, 0x0000000000000000ULL, 0x3450A5D763119EDCULL }, /* XSUM_XXH64_testdata[5484] */ + { 2742, 0x000000009E3779B1ULL, 0xFC3D9E0AC6631D7BULL }, /* XSUM_XXH64_testdata[5485] */ + { 2743, 0x0000000000000000ULL, 0x4AF141747FB0F2D2ULL }, /* XSUM_XXH64_testdata[5486] */ + { 2743, 0x000000009E3779B1ULL, 0x1AEFB8F2FC078381ULL }, /* XSUM_XXH64_testdata[5487] */ + { 2744, 0x0000000000000000ULL, 0x1AD40AEFE2E43A82ULL }, /* XSUM_XXH64_testdata[5488] */ + { 2744, 0x000000009E3779B1ULL, 0x9A156FDB14E362F6ULL }, /* XSUM_XXH64_testdata[5489] */ + { 2745, 0x0000000000000000ULL, 0xB85D48F67CCD2161ULL }, /* XSUM_XXH64_testdata[5490] */ + { 2745, 0x000000009E3779B1ULL, 0xB770A9A3491E2ED3ULL }, /* XSUM_XXH64_testdata[5491] */ + { 2746, 0x0000000000000000ULL, 0xE6F1D209FB39BCADULL }, /* XSUM_XXH64_testdata[5492] */ + { 2746, 0x000000009E3779B1ULL, 0xAB26E3D3ECBA0716ULL }, /* XSUM_XXH64_testdata[5493] */ + { 2747, 0x0000000000000000ULL, 0xD5CA78065DC757A8ULL }, /* XSUM_XXH64_testdata[5494] */ + { 2747, 0x000000009E3779B1ULL, 0x27AB66CCD851AE6CULL }, /* XSUM_XXH64_testdata[5495] */ + { 2748, 0x0000000000000000ULL, 0x3CB1566F2FE57916ULL }, /* XSUM_XXH64_testdata[5496] */ + { 2748, 0x000000009E3779B1ULL, 0xA82B78FA74AB9DB9ULL }, /* XSUM_XXH64_testdata[5497] */ + { 2749, 0x0000000000000000ULL, 0x8614C28C20F8813BULL }, /* XSUM_XXH64_testdata[5498] */ + { 2749, 0x000000009E3779B1ULL, 0x77D89C69EE99EACBULL }, /* XSUM_XXH64_testdata[5499] */ + { 2750, 0x0000000000000000ULL, 0xF925B3843DA4D189ULL }, /* XSUM_XXH64_testdata[5500] */ + { 2750, 0x000000009E3779B1ULL, 0x6E304C463FD16CE6ULL }, /* XSUM_XXH64_testdata[5501] */ + { 2751, 0x0000000000000000ULL, 0x5F0F31DBA8C7916AULL }, /* XSUM_XXH64_testdata[5502] */ + { 2751, 0x000000009E3779B1ULL, 0x0B3573B4ED458C54ULL }, /* XSUM_XXH64_testdata[5503] */ + { 2752, 0x0000000000000000ULL, 0x2BD4F5DA61B6102CULL }, /* XSUM_XXH64_testdata[5504] */ + { 2752, 0x000000009E3779B1ULL, 0x9E6ED12EC8463123ULL }, /* XSUM_XXH64_testdata[5505] */ + { 2753, 0x0000000000000000ULL, 0xD6066C9A538965ADULL }, /* XSUM_XXH64_testdata[5506] */ + { 2753, 0x000000009E3779B1ULL, 0x4F4A464B4404E865ULL }, /* XSUM_XXH64_testdata[5507] */ + { 2754, 0x0000000000000000ULL, 0x749BF9071A4AB5D6ULL }, /* XSUM_XXH64_testdata[5508] */ + { 2754, 0x000000009E3779B1ULL, 0x37C5AF66BDCBBB8BULL }, /* XSUM_XXH64_testdata[5509] */ + { 2755, 0x0000000000000000ULL, 0xE5F08BA0B923EE17ULL }, /* XSUM_XXH64_testdata[5510] */ + { 2755, 0x000000009E3779B1ULL, 0x4B3D407C89688B40ULL }, /* XSUM_XXH64_testdata[5511] */ + { 2756, 0x0000000000000000ULL, 0x70C0CBE55C9D4120ULL }, /* XSUM_XXH64_testdata[5512] */ + { 2756, 0x000000009E3779B1ULL, 0x144741D4EC8A6B5EULL }, /* XSUM_XXH64_testdata[5513] */ + { 2757, 0x0000000000000000ULL, 0x73DEB2BC68BE614AULL }, /* XSUM_XXH64_testdata[5514] */ + { 2757, 0x000000009E3779B1ULL, 0x784303AE0FC452DFULL }, /* XSUM_XXH64_testdata[5515] */ + { 2758, 0x0000000000000000ULL, 0x20D26EBEA5D6440FULL }, /* XSUM_XXH64_testdata[5516] */ + { 2758, 0x000000009E3779B1ULL, 0xA26935CA4905DD5EULL }, /* XSUM_XXH64_testdata[5517] */ + { 2759, 0x0000000000000000ULL, 0x192429F0FF4F26ACULL }, /* XSUM_XXH64_testdata[5518] */ + { 2759, 0x000000009E3779B1ULL, 0x8A40939EB6E272E3ULL }, /* XSUM_XXH64_testdata[5519] */ + { 2760, 0x0000000000000000ULL, 0xE70129B62A2F4254ULL }, /* XSUM_XXH64_testdata[5520] */ + { 2760, 0x000000009E3779B1ULL, 0x300D71A3C84B2AA4ULL }, /* XSUM_XXH64_testdata[5521] */ + { 2761, 0x0000000000000000ULL, 0xD7680B7FC0AEC06CULL }, /* XSUM_XXH64_testdata[5522] */ + { 2761, 0x000000009E3779B1ULL, 0xA4B85E26165FE4F2ULL }, /* XSUM_XXH64_testdata[5523] */ + { 2762, 0x0000000000000000ULL, 0x19F2082A92E00DD8ULL }, /* XSUM_XXH64_testdata[5524] */ + { 2762, 0x000000009E3779B1ULL, 0x2AB4C82405F4F94EULL }, /* XSUM_XXH64_testdata[5525] */ + { 2763, 0x0000000000000000ULL, 0xE81888447C98A9DFULL }, /* XSUM_XXH64_testdata[5526] */ + { 2763, 0x000000009E3779B1ULL, 0x89C5D91F3DD0AA42ULL }, /* XSUM_XXH64_testdata[5527] */ + { 2764, 0x0000000000000000ULL, 0xA795DDC8C01FA9C4ULL }, /* XSUM_XXH64_testdata[5528] */ + { 2764, 0x000000009E3779B1ULL, 0x1347C9404F8B3EEDULL }, /* XSUM_XXH64_testdata[5529] */ + { 2765, 0x0000000000000000ULL, 0xD37209B5B44D8D20ULL }, /* XSUM_XXH64_testdata[5530] */ + { 2765, 0x000000009E3779B1ULL, 0x01FE11C7FB2BFD66ULL }, /* XSUM_XXH64_testdata[5531] */ + { 2766, 0x0000000000000000ULL, 0x3C6940902510C460ULL }, /* XSUM_XXH64_testdata[5532] */ + { 2766, 0x000000009E3779B1ULL, 0x02EAA3DA703820FCULL }, /* XSUM_XXH64_testdata[5533] */ + { 2767, 0x0000000000000000ULL, 0xB384F6A72DBF326FULL }, /* XSUM_XXH64_testdata[5534] */ + { 2767, 0x000000009E3779B1ULL, 0xB974BDD82DD9848CULL }, /* XSUM_XXH64_testdata[5535] */ + { 2768, 0x0000000000000000ULL, 0x3B8B1365ABE69D55ULL }, /* XSUM_XXH64_testdata[5536] */ + { 2768, 0x000000009E3779B1ULL, 0xB106859A1EB232C1ULL }, /* XSUM_XXH64_testdata[5537] */ + { 2769, 0x0000000000000000ULL, 0xFE31D6ED1F03B0A8ULL }, /* XSUM_XXH64_testdata[5538] */ + { 2769, 0x000000009E3779B1ULL, 0x7E289CABC06D2265ULL }, /* XSUM_XXH64_testdata[5539] */ + { 2770, 0x0000000000000000ULL, 0x503EA081FF21683DULL }, /* XSUM_XXH64_testdata[5540] */ + { 2770, 0x000000009E3779B1ULL, 0xB6E3257D8AF155E0ULL }, /* XSUM_XXH64_testdata[5541] */ + { 2771, 0x0000000000000000ULL, 0xB8C21BCF145B4F78ULL }, /* XSUM_XXH64_testdata[5542] */ + { 2771, 0x000000009E3779B1ULL, 0xB2A7707DCD2CAC21ULL }, /* XSUM_XXH64_testdata[5543] */ + { 2772, 0x0000000000000000ULL, 0x0B0C22F0B88ACA49ULL }, /* XSUM_XXH64_testdata[5544] */ + { 2772, 0x000000009E3779B1ULL, 0x6F16DBC2FF2C5E5FULL }, /* XSUM_XXH64_testdata[5545] */ + { 2773, 0x0000000000000000ULL, 0x9E2A46B198F2551CULL }, /* XSUM_XXH64_testdata[5546] */ + { 2773, 0x000000009E3779B1ULL, 0x0DB4BC9FE41C37CDULL }, /* XSUM_XXH64_testdata[5547] */ + { 2774, 0x0000000000000000ULL, 0x8E50DBD4636E044DULL }, /* XSUM_XXH64_testdata[5548] */ + { 2774, 0x000000009E3779B1ULL, 0xB632751411065268ULL }, /* XSUM_XXH64_testdata[5549] */ + { 2775, 0x0000000000000000ULL, 0xC12BB26AC9A2F8A9ULL }, /* XSUM_XXH64_testdata[5550] */ + { 2775, 0x000000009E3779B1ULL, 0x005DC7A61AD290B0ULL }, /* XSUM_XXH64_testdata[5551] */ + { 2776, 0x0000000000000000ULL, 0x561AACD4D502AB58ULL }, /* XSUM_XXH64_testdata[5552] */ + { 2776, 0x000000009E3779B1ULL, 0xAC9BE4899E92BAB5ULL }, /* XSUM_XXH64_testdata[5553] */ + { 2777, 0x0000000000000000ULL, 0x81E48634CE53279DULL }, /* XSUM_XXH64_testdata[5554] */ + { 2777, 0x000000009E3779B1ULL, 0x3B087D7C87B16CDEULL }, /* XSUM_XXH64_testdata[5555] */ + { 2778, 0x0000000000000000ULL, 0x0A7C8E23B0A07B95ULL }, /* XSUM_XXH64_testdata[5556] */ + { 2778, 0x000000009E3779B1ULL, 0x0E6A03AF3E939BD9ULL }, /* XSUM_XXH64_testdata[5557] */ + { 2779, 0x0000000000000000ULL, 0xD3882E1C194E1799ULL }, /* XSUM_XXH64_testdata[5558] */ + { 2779, 0x000000009E3779B1ULL, 0xCCB60973FE1521CEULL }, /* XSUM_XXH64_testdata[5559] */ + { 2780, 0x0000000000000000ULL, 0x5070B5194D53F6FFULL }, /* XSUM_XXH64_testdata[5560] */ + { 2780, 0x000000009E3779B1ULL, 0x0ED70CD9B396A444ULL }, /* XSUM_XXH64_testdata[5561] */ + { 2781, 0x0000000000000000ULL, 0xDD4616EAA639E2BAULL }, /* XSUM_XXH64_testdata[5562] */ + { 2781, 0x000000009E3779B1ULL, 0x8717975AAA9AD0B8ULL }, /* XSUM_XXH64_testdata[5563] */ + { 2782, 0x0000000000000000ULL, 0x45E3B4BB4A040C8DULL }, /* XSUM_XXH64_testdata[5564] */ + { 2782, 0x000000009E3779B1ULL, 0x7012ADCD3706E651ULL }, /* XSUM_XXH64_testdata[5565] */ + { 2783, 0x0000000000000000ULL, 0xBD25F4F2D96C383AULL }, /* XSUM_XXH64_testdata[5566] */ + { 2783, 0x000000009E3779B1ULL, 0x5158579F711E56C2ULL }, /* XSUM_XXH64_testdata[5567] */ + { 2784, 0x0000000000000000ULL, 0x4C3900F6B818E27FULL }, /* XSUM_XXH64_testdata[5568] */ + { 2784, 0x000000009E3779B1ULL, 0x2E2EEDCC72FD81CFULL }, /* XSUM_XXH64_testdata[5569] */ + { 2785, 0x0000000000000000ULL, 0xEF3D60DA364160C1ULL }, /* XSUM_XXH64_testdata[5570] */ + { 2785, 0x000000009E3779B1ULL, 0xD7D4397E3C0E9D59ULL }, /* XSUM_XXH64_testdata[5571] */ + { 2786, 0x0000000000000000ULL, 0x0FB54F3A40D8F1B5ULL }, /* XSUM_XXH64_testdata[5572] */ + { 2786, 0x000000009E3779B1ULL, 0x120B7540074A00C3ULL }, /* XSUM_XXH64_testdata[5573] */ + { 2787, 0x0000000000000000ULL, 0xB8B742263DDE1EC1ULL }, /* XSUM_XXH64_testdata[5574] */ + { 2787, 0x000000009E3779B1ULL, 0x39D105D394045039ULL }, /* XSUM_XXH64_testdata[5575] */ + { 2788, 0x0000000000000000ULL, 0xE8377ADD12863983ULL }, /* XSUM_XXH64_testdata[5576] */ + { 2788, 0x000000009E3779B1ULL, 0xDF34D77F43CC5086ULL }, /* XSUM_XXH64_testdata[5577] */ + { 2789, 0x0000000000000000ULL, 0xAE745E88CCE25306ULL }, /* XSUM_XXH64_testdata[5578] */ + { 2789, 0x000000009E3779B1ULL, 0xB6E32954B2185D61ULL }, /* XSUM_XXH64_testdata[5579] */ + { 2790, 0x0000000000000000ULL, 0xC7C24A27B0E57448ULL }, /* XSUM_XXH64_testdata[5580] */ + { 2790, 0x000000009E3779B1ULL, 0x864F08718231A2B1ULL }, /* XSUM_XXH64_testdata[5581] */ + { 2791, 0x0000000000000000ULL, 0x7238F7309B045178ULL }, /* XSUM_XXH64_testdata[5582] */ + { 2791, 0x000000009E3779B1ULL, 0xAA91853DF0C3BAC8ULL }, /* XSUM_XXH64_testdata[5583] */ + { 2792, 0x0000000000000000ULL, 0x80D31FC807D693FDULL }, /* XSUM_XXH64_testdata[5584] */ + { 2792, 0x000000009E3779B1ULL, 0x1BD5EFA3C77ED3C4ULL }, /* XSUM_XXH64_testdata[5585] */ + { 2793, 0x0000000000000000ULL, 0x744958FF825F8733ULL }, /* XSUM_XXH64_testdata[5586] */ + { 2793, 0x000000009E3779B1ULL, 0x1957AD12000BFEF8ULL }, /* XSUM_XXH64_testdata[5587] */ + { 2794, 0x0000000000000000ULL, 0xEF7BFC60A714360AULL }, /* XSUM_XXH64_testdata[5588] */ + { 2794, 0x000000009E3779B1ULL, 0x06150CDCDF43AEA9ULL }, /* XSUM_XXH64_testdata[5589] */ + { 2795, 0x0000000000000000ULL, 0x4E243F49CD29DC34ULL }, /* XSUM_XXH64_testdata[5590] */ + { 2795, 0x000000009E3779B1ULL, 0xFABC556ED0EF2D13ULL }, /* XSUM_XXH64_testdata[5591] */ + { 2796, 0x0000000000000000ULL, 0x7535589BFA923ED9ULL }, /* XSUM_XXH64_testdata[5592] */ + { 2796, 0x000000009E3779B1ULL, 0x47CB30CE1D249A00ULL }, /* XSUM_XXH64_testdata[5593] */ + { 2797, 0x0000000000000000ULL, 0xD1E7E3A62A8FAB91ULL }, /* XSUM_XXH64_testdata[5594] */ + { 2797, 0x000000009E3779B1ULL, 0xF751B7BD3C1B99F1ULL }, /* XSUM_XXH64_testdata[5595] */ + { 2798, 0x0000000000000000ULL, 0x37AA88BC2E5C6D6DULL }, /* XSUM_XXH64_testdata[5596] */ + { 2798, 0x000000009E3779B1ULL, 0xD4322B685035EC79ULL }, /* XSUM_XXH64_testdata[5597] */ + { 2799, 0x0000000000000000ULL, 0xD9FB19209A8758E4ULL }, /* XSUM_XXH64_testdata[5598] */ + { 2799, 0x000000009E3779B1ULL, 0x1C1FA7452B031596ULL }, /* XSUM_XXH64_testdata[5599] */ + { 2800, 0x0000000000000000ULL, 0xEA1487BAFF11850EULL }, /* XSUM_XXH64_testdata[5600] */ + { 2800, 0x000000009E3779B1ULL, 0x950A556A887819B8ULL }, /* XSUM_XXH64_testdata[5601] */ + { 2801, 0x0000000000000000ULL, 0x421C71A58A8537B3ULL }, /* XSUM_XXH64_testdata[5602] */ + { 2801, 0x000000009E3779B1ULL, 0x511C46C5C6CD42DDULL }, /* XSUM_XXH64_testdata[5603] */ + { 2802, 0x0000000000000000ULL, 0x9F137E7BEB5F07CBULL }, /* XSUM_XXH64_testdata[5604] */ + { 2802, 0x000000009E3779B1ULL, 0x2E9BBA3927EEA483ULL }, /* XSUM_XXH64_testdata[5605] */ + { 2803, 0x0000000000000000ULL, 0xCE3E55F6C55885A8ULL }, /* XSUM_XXH64_testdata[5606] */ + { 2803, 0x000000009E3779B1ULL, 0x55866847C81E7947ULL }, /* XSUM_XXH64_testdata[5607] */ + { 2804, 0x0000000000000000ULL, 0x7BFE2A2D36ED51C9ULL }, /* XSUM_XXH64_testdata[5608] */ + { 2804, 0x000000009E3779B1ULL, 0xC4756FD9CE44C476ULL }, /* XSUM_XXH64_testdata[5609] */ + { 2805, 0x0000000000000000ULL, 0x3D48CC8A631EE9D3ULL }, /* XSUM_XXH64_testdata[5610] */ + { 2805, 0x000000009E3779B1ULL, 0xB73325D46E1EBD46ULL }, /* XSUM_XXH64_testdata[5611] */ + { 2806, 0x0000000000000000ULL, 0xB8FEC8C281B9668DULL }, /* XSUM_XXH64_testdata[5612] */ + { 2806, 0x000000009E3779B1ULL, 0x3DA4E38E9E3C7337ULL }, /* XSUM_XXH64_testdata[5613] */ + { 2807, 0x0000000000000000ULL, 0xBA563BF381DF6FABULL }, /* XSUM_XXH64_testdata[5614] */ + { 2807, 0x000000009E3779B1ULL, 0x09CDDC827D2DC0D3ULL }, /* XSUM_XXH64_testdata[5615] */ + { 2808, 0x0000000000000000ULL, 0x8FE5B7B997B6DE1BULL }, /* XSUM_XXH64_testdata[5616] */ + { 2808, 0x000000009E3779B1ULL, 0x36CD101220E02ADFULL }, /* XSUM_XXH64_testdata[5617] */ + { 2809, 0x0000000000000000ULL, 0x700ADC22A73E3FB8ULL }, /* XSUM_XXH64_testdata[5618] */ + { 2809, 0x000000009E3779B1ULL, 0xE01E0B514A7F66FAULL }, /* XSUM_XXH64_testdata[5619] */ + { 2810, 0x0000000000000000ULL, 0x029F1B0B9CDB9F14ULL }, /* XSUM_XXH64_testdata[5620] */ + { 2810, 0x000000009E3779B1ULL, 0xD44DA0158AD2612AULL }, /* XSUM_XXH64_testdata[5621] */ + { 2811, 0x0000000000000000ULL, 0xC7054D0F5111ACEFULL }, /* XSUM_XXH64_testdata[5622] */ + { 2811, 0x000000009E3779B1ULL, 0x2B21908EA9AC3632ULL }, /* XSUM_XXH64_testdata[5623] */ + { 2812, 0x0000000000000000ULL, 0x143228FD66498D9CULL }, /* XSUM_XXH64_testdata[5624] */ + { 2812, 0x000000009E3779B1ULL, 0xA33325C328F99953ULL }, /* XSUM_XXH64_testdata[5625] */ + { 2813, 0x0000000000000000ULL, 0xA6044D50EE325E05ULL }, /* XSUM_XXH64_testdata[5626] */ + { 2813, 0x000000009E3779B1ULL, 0x665086679AE7008DULL }, /* XSUM_XXH64_testdata[5627] */ + { 2814, 0x0000000000000000ULL, 0x82B269A3D4EC5AD8ULL }, /* XSUM_XXH64_testdata[5628] */ + { 2814, 0x000000009E3779B1ULL, 0x91F1CEBDF19BEBDCULL }, /* XSUM_XXH64_testdata[5629] */ + { 2815, 0x0000000000000000ULL, 0x7F950A51B1BCE3ABULL }, /* XSUM_XXH64_testdata[5630] */ + { 2815, 0x000000009E3779B1ULL, 0x56585650E1B3B2BBULL }, /* XSUM_XXH64_testdata[5631] */ + { 2816, 0x0000000000000000ULL, 0x897E94EBF02B91A7ULL }, /* XSUM_XXH64_testdata[5632] */ + { 2816, 0x000000009E3779B1ULL, 0xAA86E74719BC4DF9ULL }, /* XSUM_XXH64_testdata[5633] */ + { 2817, 0x0000000000000000ULL, 0x25B8F9EAD1707367ULL }, /* XSUM_XXH64_testdata[5634] */ + { 2817, 0x000000009E3779B1ULL, 0xF0775FD1BF8119EDULL }, /* XSUM_XXH64_testdata[5635] */ + { 2818, 0x0000000000000000ULL, 0x316648D01FB04A3FULL }, /* XSUM_XXH64_testdata[5636] */ + { 2818, 0x000000009E3779B1ULL, 0xBC9462F5E9029F82ULL }, /* XSUM_XXH64_testdata[5637] */ + { 2819, 0x0000000000000000ULL, 0xB05A39BE1B0F01CBULL }, /* XSUM_XXH64_testdata[5638] */ + { 2819, 0x000000009E3779B1ULL, 0x450A223B8347D3E7ULL }, /* XSUM_XXH64_testdata[5639] */ + { 2820, 0x0000000000000000ULL, 0xC7F53C2FE99F17E2ULL }, /* XSUM_XXH64_testdata[5640] */ + { 2820, 0x000000009E3779B1ULL, 0x0E75CF383B5879EAULL }, /* XSUM_XXH64_testdata[5641] */ + { 2821, 0x0000000000000000ULL, 0x9B5B1375077D3527ULL }, /* XSUM_XXH64_testdata[5642] */ + { 2821, 0x000000009E3779B1ULL, 0x6F15AA6326EFF184ULL }, /* XSUM_XXH64_testdata[5643] */ + { 2822, 0x0000000000000000ULL, 0x6CCAFFBEFAE30C84ULL }, /* XSUM_XXH64_testdata[5644] */ + { 2822, 0x000000009E3779B1ULL, 0xEB83A6698B5DD395ULL }, /* XSUM_XXH64_testdata[5645] */ + { 2823, 0x0000000000000000ULL, 0x5CFED9C0BA8B42D5ULL }, /* XSUM_XXH64_testdata[5646] */ + { 2823, 0x000000009E3779B1ULL, 0x43E21EEFFE09AA78ULL }, /* XSUM_XXH64_testdata[5647] */ + { 2824, 0x0000000000000000ULL, 0x77D44D47E3CDED58ULL }, /* XSUM_XXH64_testdata[5648] */ + { 2824, 0x000000009E3779B1ULL, 0x7D131D579C3F709FULL }, /* XSUM_XXH64_testdata[5649] */ + { 2825, 0x0000000000000000ULL, 0xEB4D3306499519ADULL }, /* XSUM_XXH64_testdata[5650] */ + { 2825, 0x000000009E3779B1ULL, 0xE0825BE185296636ULL }, /* XSUM_XXH64_testdata[5651] */ + { 2826, 0x0000000000000000ULL, 0xC98B151B38796583ULL }, /* XSUM_XXH64_testdata[5652] */ + { 2826, 0x000000009E3779B1ULL, 0xEA20200D5FA525FEULL }, /* XSUM_XXH64_testdata[5653] */ + { 2827, 0x0000000000000000ULL, 0x0EDFF0BBBEEBC907ULL }, /* XSUM_XXH64_testdata[5654] */ + { 2827, 0x000000009E3779B1ULL, 0xF71176D6D8FE8392ULL }, /* XSUM_XXH64_testdata[5655] */ + { 2828, 0x0000000000000000ULL, 0x542351940A5B7B43ULL }, /* XSUM_XXH64_testdata[5656] */ + { 2828, 0x000000009E3779B1ULL, 0x0ED667372E81963EULL }, /* XSUM_XXH64_testdata[5657] */ + { 2829, 0x0000000000000000ULL, 0xEEC305F00C2B0C83ULL }, /* XSUM_XXH64_testdata[5658] */ + { 2829, 0x000000009E3779B1ULL, 0x07791190DC026192ULL }, /* XSUM_XXH64_testdata[5659] */ + { 2830, 0x0000000000000000ULL, 0x998F19CAEDEAF2E7ULL }, /* XSUM_XXH64_testdata[5660] */ + { 2830, 0x000000009E3779B1ULL, 0x460801FAB7269F6BULL }, /* XSUM_XXH64_testdata[5661] */ + { 2831, 0x0000000000000000ULL, 0xC655ADE25A02EEF5ULL }, /* XSUM_XXH64_testdata[5662] */ + { 2831, 0x000000009E3779B1ULL, 0x635259A50D6BA7F8ULL }, /* XSUM_XXH64_testdata[5663] */ + { 2832, 0x0000000000000000ULL, 0x363DF0706B3D15D4ULL }, /* XSUM_XXH64_testdata[5664] */ + { 2832, 0x000000009E3779B1ULL, 0xA4571FFD9DEE0806ULL }, /* XSUM_XXH64_testdata[5665] */ + { 2833, 0x0000000000000000ULL, 0xCCEF17577D510AAAULL }, /* XSUM_XXH64_testdata[5666] */ + { 2833, 0x000000009E3779B1ULL, 0xA47ED96C7B06B138ULL }, /* XSUM_XXH64_testdata[5667] */ + { 2834, 0x0000000000000000ULL, 0x3E80FA25180F0AD2ULL }, /* XSUM_XXH64_testdata[5668] */ + { 2834, 0x000000009E3779B1ULL, 0xD01DA3F7A19DE791ULL }, /* XSUM_XXH64_testdata[5669] */ + { 2835, 0x0000000000000000ULL, 0x93547DC685D9714EULL }, /* XSUM_XXH64_testdata[5670] */ + { 2835, 0x000000009E3779B1ULL, 0x860FF14C03860F79ULL }, /* XSUM_XXH64_testdata[5671] */ + { 2836, 0x0000000000000000ULL, 0xB3A49B633B454BBDULL }, /* XSUM_XXH64_testdata[5672] */ + { 2836, 0x000000009E3779B1ULL, 0xAEDECF3BD04CE286ULL }, /* XSUM_XXH64_testdata[5673] */ + { 2837, 0x0000000000000000ULL, 0x066A2B3AEE8784E1ULL }, /* XSUM_XXH64_testdata[5674] */ + { 2837, 0x000000009E3779B1ULL, 0x9460AE6BC46D4FC1ULL }, /* XSUM_XXH64_testdata[5675] */ + { 2838, 0x0000000000000000ULL, 0x7E117D839E812552ULL }, /* XSUM_XXH64_testdata[5676] */ + { 2838, 0x000000009E3779B1ULL, 0x1BA80E6AFAA4F389ULL }, /* XSUM_XXH64_testdata[5677] */ + { 2839, 0x0000000000000000ULL, 0x52C6A3438648ABDEULL }, /* XSUM_XXH64_testdata[5678] */ + { 2839, 0x000000009E3779B1ULL, 0x5ECC856DA9524C81ULL }, /* XSUM_XXH64_testdata[5679] */ + { 2840, 0x0000000000000000ULL, 0x2E35DEBAE053A6EDULL }, /* XSUM_XXH64_testdata[5680] */ + { 2840, 0x000000009E3779B1ULL, 0xA6017CAB068FDDB9ULL }, /* XSUM_XXH64_testdata[5681] */ + { 2841, 0x0000000000000000ULL, 0x85F0F2C8A9FA6EACULL }, /* XSUM_XXH64_testdata[5682] */ + { 2841, 0x000000009E3779B1ULL, 0xB4AAC5FE3A1A44C0ULL }, /* XSUM_XXH64_testdata[5683] */ + { 2842, 0x0000000000000000ULL, 0x9D32CF8DB18406B4ULL }, /* XSUM_XXH64_testdata[5684] */ + { 2842, 0x000000009E3779B1ULL, 0x55C3229A04D0CE14ULL }, /* XSUM_XXH64_testdata[5685] */ + { 2843, 0x0000000000000000ULL, 0x562530C55CD9DA1DULL }, /* XSUM_XXH64_testdata[5686] */ + { 2843, 0x000000009E3779B1ULL, 0x3CEB237714957C18ULL }, /* XSUM_XXH64_testdata[5687] */ + { 2844, 0x0000000000000000ULL, 0x6A57BF38721E0D2EULL }, /* XSUM_XXH64_testdata[5688] */ + { 2844, 0x000000009E3779B1ULL, 0x53DC9AA42EE98EFAULL }, /* XSUM_XXH64_testdata[5689] */ + { 2845, 0x0000000000000000ULL, 0xF813C93FFF44504EULL }, /* XSUM_XXH64_testdata[5690] */ + { 2845, 0x000000009E3779B1ULL, 0xFD62B18C9658F3C6ULL }, /* XSUM_XXH64_testdata[5691] */ + { 2846, 0x0000000000000000ULL, 0xBC855FAC339AEF47ULL }, /* XSUM_XXH64_testdata[5692] */ + { 2846, 0x000000009E3779B1ULL, 0xA95187603DB07D07ULL }, /* XSUM_XXH64_testdata[5693] */ + { 2847, 0x0000000000000000ULL, 0xCDD5771B9917F3EAULL }, /* XSUM_XXH64_testdata[5694] */ + { 2847, 0x000000009E3779B1ULL, 0x1C101A2732AF5FC1ULL }, /* XSUM_XXH64_testdata[5695] */ + { 2848, 0x0000000000000000ULL, 0x828FF48B51CF77B5ULL }, /* XSUM_XXH64_testdata[5696] */ + { 2848, 0x000000009E3779B1ULL, 0x7328FF4D4C0630D6ULL }, /* XSUM_XXH64_testdata[5697] */ + { 2849, 0x0000000000000000ULL, 0xADBE577229739AEEULL }, /* XSUM_XXH64_testdata[5698] */ + { 2849, 0x000000009E3779B1ULL, 0x87A8C42FAD9F0BECULL }, /* XSUM_XXH64_testdata[5699] */ + { 2850, 0x0000000000000000ULL, 0xCDC9BDD8A8DDD7DBULL }, /* XSUM_XXH64_testdata[5700] */ + { 2850, 0x000000009E3779B1ULL, 0x51C2603A64BBE88FULL }, /* XSUM_XXH64_testdata[5701] */ + { 2851, 0x0000000000000000ULL, 0xE937797296F479A9ULL }, /* XSUM_XXH64_testdata[5702] */ + { 2851, 0x000000009E3779B1ULL, 0xB0463495709EE8A9ULL }, /* XSUM_XXH64_testdata[5703] */ + { 2852, 0x0000000000000000ULL, 0xCA79A61503ACEECAULL }, /* XSUM_XXH64_testdata[5704] */ + { 2852, 0x000000009E3779B1ULL, 0xB7D5362A3F288485ULL }, /* XSUM_XXH64_testdata[5705] */ + { 2853, 0x0000000000000000ULL, 0x1099CD1322EC7894ULL }, /* XSUM_XXH64_testdata[5706] */ + { 2853, 0x000000009E3779B1ULL, 0xACDCB2771E45DDA7ULL }, /* XSUM_XXH64_testdata[5707] */ + { 2854, 0x0000000000000000ULL, 0x4C22E69D572D8499ULL }, /* XSUM_XXH64_testdata[5708] */ + { 2854, 0x000000009E3779B1ULL, 0x732C5929B8B05546ULL }, /* XSUM_XXH64_testdata[5709] */ + { 2855, 0x0000000000000000ULL, 0xEBABBD58FB890221ULL }, /* XSUM_XXH64_testdata[5710] */ + { 2855, 0x000000009E3779B1ULL, 0xFC8365730C126BE9ULL }, /* XSUM_XXH64_testdata[5711] */ + { 2856, 0x0000000000000000ULL, 0xC8A97B885681D71BULL }, /* XSUM_XXH64_testdata[5712] */ + { 2856, 0x000000009E3779B1ULL, 0xAD3AAC20FF4D2BBBULL }, /* XSUM_XXH64_testdata[5713] */ + { 2857, 0x0000000000000000ULL, 0xAD742DEA0334D83BULL }, /* XSUM_XXH64_testdata[5714] */ + { 2857, 0x000000009E3779B1ULL, 0x6BA68DF3D1960B68ULL }, /* XSUM_XXH64_testdata[5715] */ + { 2858, 0x0000000000000000ULL, 0xAEE81E41A6447BB4ULL }, /* XSUM_XXH64_testdata[5716] */ + { 2858, 0x000000009E3779B1ULL, 0x3465E0759D033756ULL }, /* XSUM_XXH64_testdata[5717] */ + { 2859, 0x0000000000000000ULL, 0x14A46E77A2766451ULL }, /* XSUM_XXH64_testdata[5718] */ + { 2859, 0x000000009E3779B1ULL, 0x4C24F512BA7E7BC4ULL }, /* XSUM_XXH64_testdata[5719] */ + { 2860, 0x0000000000000000ULL, 0xBC72209610C88FD5ULL }, /* XSUM_XXH64_testdata[5720] */ + { 2860, 0x000000009E3779B1ULL, 0x8E2A2BDF87D50814ULL }, /* XSUM_XXH64_testdata[5721] */ + { 2861, 0x0000000000000000ULL, 0xC82C364D688F94C0ULL }, /* XSUM_XXH64_testdata[5722] */ + { 2861, 0x000000009E3779B1ULL, 0x6464FA556FD33EB5ULL }, /* XSUM_XXH64_testdata[5723] */ + { 2862, 0x0000000000000000ULL, 0xA6E739D074170ED0ULL }, /* XSUM_XXH64_testdata[5724] */ + { 2862, 0x000000009E3779B1ULL, 0x087FA743FD095CABULL }, /* XSUM_XXH64_testdata[5725] */ + { 2863, 0x0000000000000000ULL, 0xC34F0315FBD2D354ULL }, /* XSUM_XXH64_testdata[5726] */ + { 2863, 0x000000009E3779B1ULL, 0xF9594B1F3F04CE22ULL }, /* XSUM_XXH64_testdata[5727] */ + { 2864, 0x0000000000000000ULL, 0xC2EABCF0EB15A56FULL }, /* XSUM_XXH64_testdata[5728] */ + { 2864, 0x000000009E3779B1ULL, 0x4F99D411D938624DULL }, /* XSUM_XXH64_testdata[5729] */ + { 2865, 0x0000000000000000ULL, 0x46EC42C8ECBAA715ULL }, /* XSUM_XXH64_testdata[5730] */ + { 2865, 0x000000009E3779B1ULL, 0x92CC44DF03EDEA99ULL }, /* XSUM_XXH64_testdata[5731] */ + { 2866, 0x0000000000000000ULL, 0x32A744251DE91701ULL }, /* XSUM_XXH64_testdata[5732] */ + { 2866, 0x000000009E3779B1ULL, 0xB94DC798CFE78ACFULL }, /* XSUM_XXH64_testdata[5733] */ + { 2867, 0x0000000000000000ULL, 0x9442C15E5CC37CE6ULL }, /* XSUM_XXH64_testdata[5734] */ + { 2867, 0x000000009E3779B1ULL, 0xDCCD635D3DAA19CCULL }, /* XSUM_XXH64_testdata[5735] */ + { 2868, 0x0000000000000000ULL, 0xD72B1259F9DFA75DULL }, /* XSUM_XXH64_testdata[5736] */ + { 2868, 0x000000009E3779B1ULL, 0x865703518CED7F0EULL }, /* XSUM_XXH64_testdata[5737] */ + { 2869, 0x0000000000000000ULL, 0x5C8E1A837C2FCC65ULL }, /* XSUM_XXH64_testdata[5738] */ + { 2869, 0x000000009E3779B1ULL, 0xB263E347704AC6FFULL }, /* XSUM_XXH64_testdata[5739] */ + { 2870, 0x0000000000000000ULL, 0x3CFBEA248FC8C1B8ULL }, /* XSUM_XXH64_testdata[5740] */ + { 2870, 0x000000009E3779B1ULL, 0x84870021E925BE9AULL }, /* XSUM_XXH64_testdata[5741] */ + { 2871, 0x0000000000000000ULL, 0x2F2114D4B75D87ABULL }, /* XSUM_XXH64_testdata[5742] */ + { 2871, 0x000000009E3779B1ULL, 0x7E84BD79C7EB6DA5ULL }, /* XSUM_XXH64_testdata[5743] */ + { 2872, 0x0000000000000000ULL, 0x38B418B4E5B7F667ULL }, /* XSUM_XXH64_testdata[5744] */ + { 2872, 0x000000009E3779B1ULL, 0x101CE15BC0756307ULL }, /* XSUM_XXH64_testdata[5745] */ + { 2873, 0x0000000000000000ULL, 0x225AECD766F237D9ULL }, /* XSUM_XXH64_testdata[5746] */ + { 2873, 0x000000009E3779B1ULL, 0xF55255862264D05BULL }, /* XSUM_XXH64_testdata[5747] */ + { 2874, 0x0000000000000000ULL, 0x6181962ECA42C826ULL }, /* XSUM_XXH64_testdata[5748] */ + { 2874, 0x000000009E3779B1ULL, 0xB36877B47DEB801AULL }, /* XSUM_XXH64_testdata[5749] */ + { 2875, 0x0000000000000000ULL, 0x5BAA2AA33E08617FULL }, /* XSUM_XXH64_testdata[5750] */ + { 2875, 0x000000009E3779B1ULL, 0xC95F26EDA15245A4ULL }, /* XSUM_XXH64_testdata[5751] */ + { 2876, 0x0000000000000000ULL, 0x559E72577929AE9CULL }, /* XSUM_XXH64_testdata[5752] */ + { 2876, 0x000000009E3779B1ULL, 0x687F78550FAE811EULL }, /* XSUM_XXH64_testdata[5753] */ + { 2877, 0x0000000000000000ULL, 0x014C25F2C0CA90ADULL }, /* XSUM_XXH64_testdata[5754] */ + { 2877, 0x000000009E3779B1ULL, 0x265E68669606EBAEULL }, /* XSUM_XXH64_testdata[5755] */ + { 2878, 0x0000000000000000ULL, 0xF98E47B96D55EC3AULL }, /* XSUM_XXH64_testdata[5756] */ + { 2878, 0x000000009E3779B1ULL, 0x284C2C7F3D435EA3ULL }, /* XSUM_XXH64_testdata[5757] */ + { 2879, 0x0000000000000000ULL, 0xD38EBD0A6851F51CULL }, /* XSUM_XXH64_testdata[5758] */ + { 2879, 0x000000009E3779B1ULL, 0xB89F927F874BB2C2ULL }, /* XSUM_XXH64_testdata[5759] */ + { 2880, 0x0000000000000000ULL, 0x6685F0C96B4F7033ULL }, /* XSUM_XXH64_testdata[5760] */ + { 2880, 0x000000009E3779B1ULL, 0xB1132A683B6D4DE8ULL }, /* XSUM_XXH64_testdata[5761] */ + { 2881, 0x0000000000000000ULL, 0x530FA7337FDED941ULL }, /* XSUM_XXH64_testdata[5762] */ + { 2881, 0x000000009E3779B1ULL, 0xFF7F63F0D2B15708ULL }, /* XSUM_XXH64_testdata[5763] */ + { 2882, 0x0000000000000000ULL, 0xEB91B17388F67992ULL }, /* XSUM_XXH64_testdata[5764] */ + { 2882, 0x000000009E3779B1ULL, 0x5AB27031A5D95074ULL }, /* XSUM_XXH64_testdata[5765] */ + { 2883, 0x0000000000000000ULL, 0x1666998B270D29BAULL }, /* XSUM_XXH64_testdata[5766] */ + { 2883, 0x000000009E3779B1ULL, 0x585487A176246806ULL }, /* XSUM_XXH64_testdata[5767] */ + { 2884, 0x0000000000000000ULL, 0x4FFACD0E9761EF0AULL }, /* XSUM_XXH64_testdata[5768] */ + { 2884, 0x000000009E3779B1ULL, 0x4A3F75FDC039A08FULL }, /* XSUM_XXH64_testdata[5769] */ + { 2885, 0x0000000000000000ULL, 0xB73E4AE17EC3C98CULL }, /* XSUM_XXH64_testdata[5770] */ + { 2885, 0x000000009E3779B1ULL, 0x593CCC6E2C79B478ULL }, /* XSUM_XXH64_testdata[5771] */ + { 2886, 0x0000000000000000ULL, 0x7CFBEAD4FE3C6FEBULL }, /* XSUM_XXH64_testdata[5772] */ + { 2886, 0x000000009E3779B1ULL, 0x3600A6EDD168D1FBULL }, /* XSUM_XXH64_testdata[5773] */ + { 2887, 0x0000000000000000ULL, 0x6D33675205B94BBDULL }, /* XSUM_XXH64_testdata[5774] */ + { 2887, 0x000000009E3779B1ULL, 0x21370DA75735938CULL }, /* XSUM_XXH64_testdata[5775] */ + { 2888, 0x0000000000000000ULL, 0x5FA63A0ACCC74441ULL }, /* XSUM_XXH64_testdata[5776] */ + { 2888, 0x000000009E3779B1ULL, 0xA8353F929DE231DDULL }, /* XSUM_XXH64_testdata[5777] */ + { 2889, 0x0000000000000000ULL, 0x1CD3C3879CFE1550ULL }, /* XSUM_XXH64_testdata[5778] */ + { 2889, 0x000000009E3779B1ULL, 0x460B590DD01D2986ULL }, /* XSUM_XXH64_testdata[5779] */ + { 2890, 0x0000000000000000ULL, 0xD36622563FB8C41BULL }, /* XSUM_XXH64_testdata[5780] */ + { 2890, 0x000000009E3779B1ULL, 0x4036C3C6248B97EDULL }, /* XSUM_XXH64_testdata[5781] */ + { 2891, 0x0000000000000000ULL, 0x9C4C3254862E7838ULL }, /* XSUM_XXH64_testdata[5782] */ + { 2891, 0x000000009E3779B1ULL, 0x394A26D45726A0D1ULL }, /* XSUM_XXH64_testdata[5783] */ + { 2892, 0x0000000000000000ULL, 0x8570BE2A6AA76EA0ULL }, /* XSUM_XXH64_testdata[5784] */ + { 2892, 0x000000009E3779B1ULL, 0x092BBA850FA001E3ULL }, /* XSUM_XXH64_testdata[5785] */ + { 2893, 0x0000000000000000ULL, 0x2FA4D345F2262022ULL }, /* XSUM_XXH64_testdata[5786] */ + { 2893, 0x000000009E3779B1ULL, 0x0ED34DC560501E5AULL }, /* XSUM_XXH64_testdata[5787] */ + { 2894, 0x0000000000000000ULL, 0x5775143FF9FE2D63ULL }, /* XSUM_XXH64_testdata[5788] */ + { 2894, 0x000000009E3779B1ULL, 0xD9086ACC28F36C23ULL }, /* XSUM_XXH64_testdata[5789] */ + { 2895, 0x0000000000000000ULL, 0xCC15D32388F97795ULL }, /* XSUM_XXH64_testdata[5790] */ + { 2895, 0x000000009E3779B1ULL, 0x6D6AE00D01EE966AULL }, /* XSUM_XXH64_testdata[5791] */ + { 2896, 0x0000000000000000ULL, 0x053182AE5D3917FEULL }, /* XSUM_XXH64_testdata[5792] */ + { 2896, 0x000000009E3779B1ULL, 0x842CA712A58A4E1AULL }, /* XSUM_XXH64_testdata[5793] */ + { 2897, 0x0000000000000000ULL, 0x7611E9854B474790ULL }, /* XSUM_XXH64_testdata[5794] */ + { 2897, 0x000000009E3779B1ULL, 0x3EF3F314F49F9381ULL }, /* XSUM_XXH64_testdata[5795] */ + { 2898, 0x0000000000000000ULL, 0xD3C8AEBE5A873BA4ULL }, /* XSUM_XXH64_testdata[5796] */ + { 2898, 0x000000009E3779B1ULL, 0xA1D4112F9D15C5CDULL }, /* XSUM_XXH64_testdata[5797] */ + { 2899, 0x0000000000000000ULL, 0x173C57528DC00912ULL }, /* XSUM_XXH64_testdata[5798] */ + { 2899, 0x000000009E3779B1ULL, 0x87E0B89B12BC1C2BULL }, /* XSUM_XXH64_testdata[5799] */ + { 2900, 0x0000000000000000ULL, 0x621273AFC4ACD00FULL }, /* XSUM_XXH64_testdata[5800] */ + { 2900, 0x000000009E3779B1ULL, 0xD4641910FB5F047DULL }, /* XSUM_XXH64_testdata[5801] */ + { 2901, 0x0000000000000000ULL, 0x97CA47A204F2636AULL }, /* XSUM_XXH64_testdata[5802] */ + { 2901, 0x000000009E3779B1ULL, 0x45224284E30FBD8BULL }, /* XSUM_XXH64_testdata[5803] */ + { 2902, 0x0000000000000000ULL, 0xDAF822B2DBD2E89BULL }, /* XSUM_XXH64_testdata[5804] */ + { 2902, 0x000000009E3779B1ULL, 0x7407CA5ED36D2736ULL }, /* XSUM_XXH64_testdata[5805] */ + { 2903, 0x0000000000000000ULL, 0x6ACC2CDB091128ACULL }, /* XSUM_XXH64_testdata[5806] */ + { 2903, 0x000000009E3779B1ULL, 0xD7A5A6B69DA94882ULL }, /* XSUM_XXH64_testdata[5807] */ + { 2904, 0x0000000000000000ULL, 0x64F06D2D1E87F3DDULL }, /* XSUM_XXH64_testdata[5808] */ + { 2904, 0x000000009E3779B1ULL, 0x20DC3E15FD3DB19AULL }, /* XSUM_XXH64_testdata[5809] */ + { 2905, 0x0000000000000000ULL, 0x6D584322FEA19381ULL }, /* XSUM_XXH64_testdata[5810] */ + { 2905, 0x000000009E3779B1ULL, 0x9D4CD84E4547A50CULL }, /* XSUM_XXH64_testdata[5811] */ + { 2906, 0x0000000000000000ULL, 0x6F1CB797FA16FAEFULL }, /* XSUM_XXH64_testdata[5812] */ + { 2906, 0x000000009E3779B1ULL, 0x60C44AC1EE1BEE4DULL }, /* XSUM_XXH64_testdata[5813] */ + { 2907, 0x0000000000000000ULL, 0xDC6C1C0B98323435ULL }, /* XSUM_XXH64_testdata[5814] */ + { 2907, 0x000000009E3779B1ULL, 0xB41F87A25A798600ULL }, /* XSUM_XXH64_testdata[5815] */ + { 2908, 0x0000000000000000ULL, 0x5C81C155130E3567ULL }, /* XSUM_XXH64_testdata[5816] */ + { 2908, 0x000000009E3779B1ULL, 0x7A4E40BDE592F7B0ULL }, /* XSUM_XXH64_testdata[5817] */ + { 2909, 0x0000000000000000ULL, 0x5194837BE61A5903ULL }, /* XSUM_XXH64_testdata[5818] */ + { 2909, 0x000000009E3779B1ULL, 0x57CE250B69E23DE9ULL }, /* XSUM_XXH64_testdata[5819] */ + { 2910, 0x0000000000000000ULL, 0xC3A953BD15193838ULL }, /* XSUM_XXH64_testdata[5820] */ + { 2910, 0x000000009E3779B1ULL, 0x18644DD76F0E9424ULL }, /* XSUM_XXH64_testdata[5821] */ + { 2911, 0x0000000000000000ULL, 0x08ADC66E2958CBDFULL }, /* XSUM_XXH64_testdata[5822] */ + { 2911, 0x000000009E3779B1ULL, 0x65E8F8334B032E41ULL }, /* XSUM_XXH64_testdata[5823] */ + { 2912, 0x0000000000000000ULL, 0xB83BB4ACA4A6A3F4ULL }, /* XSUM_XXH64_testdata[5824] */ + { 2912, 0x000000009E3779B1ULL, 0x712CE1FF4AE08ED1ULL }, /* XSUM_XXH64_testdata[5825] */ + { 2913, 0x0000000000000000ULL, 0x433A8512E4DDEF66ULL }, /* XSUM_XXH64_testdata[5826] */ + { 2913, 0x000000009E3779B1ULL, 0x8817F85DE8A3E18DULL }, /* XSUM_XXH64_testdata[5827] */ + { 2914, 0x0000000000000000ULL, 0x8C956F2106E3094CULL }, /* XSUM_XXH64_testdata[5828] */ + { 2914, 0x000000009E3779B1ULL, 0x3EE2635D3B62B8A8ULL }, /* XSUM_XXH64_testdata[5829] */ + { 2915, 0x0000000000000000ULL, 0x61747324F774E12BULL }, /* XSUM_XXH64_testdata[5830] */ + { 2915, 0x000000009E3779B1ULL, 0x829D901D22453277ULL }, /* XSUM_XXH64_testdata[5831] */ + { 2916, 0x0000000000000000ULL, 0xF177C336FBFE3C1CULL }, /* XSUM_XXH64_testdata[5832] */ + { 2916, 0x000000009E3779B1ULL, 0xF1A2956D1F2129CFULL }, /* XSUM_XXH64_testdata[5833] */ + { 2917, 0x0000000000000000ULL, 0xD059E4F8577B4326ULL }, /* XSUM_XXH64_testdata[5834] */ + { 2917, 0x000000009E3779B1ULL, 0x822A2FD64EC7125BULL }, /* XSUM_XXH64_testdata[5835] */ + { 2918, 0x0000000000000000ULL, 0x85D9CD5A2FAC227EULL }, /* XSUM_XXH64_testdata[5836] */ + { 2918, 0x000000009E3779B1ULL, 0x8EC3D7B6142D7B08ULL }, /* XSUM_XXH64_testdata[5837] */ + { 2919, 0x0000000000000000ULL, 0xB032646D8188C772ULL }, /* XSUM_XXH64_testdata[5838] */ + { 2919, 0x000000009E3779B1ULL, 0x1CD3782576E63503ULL }, /* XSUM_XXH64_testdata[5839] */ + { 2920, 0x0000000000000000ULL, 0x88F7057705AD83F5ULL }, /* XSUM_XXH64_testdata[5840] */ + { 2920, 0x000000009E3779B1ULL, 0x0F9D3EAF1BD72117ULL }, /* XSUM_XXH64_testdata[5841] */ + { 2921, 0x0000000000000000ULL, 0xEC698C2DF27F530EULL }, /* XSUM_XXH64_testdata[5842] */ + { 2921, 0x000000009E3779B1ULL, 0xD3355484E67BDD80ULL }, /* XSUM_XXH64_testdata[5843] */ + { 2922, 0x0000000000000000ULL, 0xC187338AD48E1345ULL }, /* XSUM_XXH64_testdata[5844] */ + { 2922, 0x000000009E3779B1ULL, 0xD0A8F693950DD98EULL }, /* XSUM_XXH64_testdata[5845] */ + { 2923, 0x0000000000000000ULL, 0xF8F76481977069C1ULL }, /* XSUM_XXH64_testdata[5846] */ + { 2923, 0x000000009E3779B1ULL, 0x80291F0B43B405BBULL }, /* XSUM_XXH64_testdata[5847] */ + { 2924, 0x0000000000000000ULL, 0xBB6493A48C09A4E8ULL }, /* XSUM_XXH64_testdata[5848] */ + { 2924, 0x000000009E3779B1ULL, 0x973DA8FB91C11681ULL }, /* XSUM_XXH64_testdata[5849] */ + { 2925, 0x0000000000000000ULL, 0x618D278A35F92C68ULL }, /* XSUM_XXH64_testdata[5850] */ + { 2925, 0x000000009E3779B1ULL, 0x7E2BF9AD66929A6AULL }, /* XSUM_XXH64_testdata[5851] */ + { 2926, 0x0000000000000000ULL, 0x691509D601157213ULL }, /* XSUM_XXH64_testdata[5852] */ + { 2926, 0x000000009E3779B1ULL, 0xDB2E311504746B97ULL }, /* XSUM_XXH64_testdata[5853] */ + { 2927, 0x0000000000000000ULL, 0x65BE4C2E9A35B901ULL }, /* XSUM_XXH64_testdata[5854] */ + { 2927, 0x000000009E3779B1ULL, 0xA39323BA83D6CC23ULL }, /* XSUM_XXH64_testdata[5855] */ + { 2928, 0x0000000000000000ULL, 0x7A47FBCE717ECF69ULL }, /* XSUM_XXH64_testdata[5856] */ + { 2928, 0x000000009E3779B1ULL, 0xCFB559247F290C93ULL }, /* XSUM_XXH64_testdata[5857] */ + { 2929, 0x0000000000000000ULL, 0x419BF372F4678C5BULL }, /* XSUM_XXH64_testdata[5858] */ + { 2929, 0x000000009E3779B1ULL, 0x01913E4328A109CAULL }, /* XSUM_XXH64_testdata[5859] */ + { 2930, 0x0000000000000000ULL, 0x8614B70E7CEB1013ULL }, /* XSUM_XXH64_testdata[5860] */ + { 2930, 0x000000009E3779B1ULL, 0xCA9EF9F917972FCBULL }, /* XSUM_XXH64_testdata[5861] */ + { 2931, 0x0000000000000000ULL, 0x17AF2B3E4B9704C2ULL }, /* XSUM_XXH64_testdata[5862] */ + { 2931, 0x000000009E3779B1ULL, 0xA04A4CCE29140A6AULL }, /* XSUM_XXH64_testdata[5863] */ + { 2932, 0x0000000000000000ULL, 0xCB1D5A12BDB7D89DULL }, /* XSUM_XXH64_testdata[5864] */ + { 2932, 0x000000009E3779B1ULL, 0x558720AFD15FCA5BULL }, /* XSUM_XXH64_testdata[5865] */ + { 2933, 0x0000000000000000ULL, 0xEA6C352331222A92ULL }, /* XSUM_XXH64_testdata[5866] */ + { 2933, 0x000000009E3779B1ULL, 0xA8CD9D3E55F42817ULL }, /* XSUM_XXH64_testdata[5867] */ + { 2934, 0x0000000000000000ULL, 0xDDEDABA90D3F64D0ULL }, /* XSUM_XXH64_testdata[5868] */ + { 2934, 0x000000009E3779B1ULL, 0x7621185DFB48F93FULL }, /* XSUM_XXH64_testdata[5869] */ + { 2935, 0x0000000000000000ULL, 0x3BF8035ACA9C0906ULL }, /* XSUM_XXH64_testdata[5870] */ + { 2935, 0x000000009E3779B1ULL, 0xEBCCB9FB93A7FBE0ULL }, /* XSUM_XXH64_testdata[5871] */ + { 2936, 0x0000000000000000ULL, 0xE439D7BF439E6780ULL }, /* XSUM_XXH64_testdata[5872] */ + { 2936, 0x000000009E3779B1ULL, 0x8EE76C0E7DFFD9F0ULL }, /* XSUM_XXH64_testdata[5873] */ + { 2937, 0x0000000000000000ULL, 0xD4CBC3FAB84B77F8ULL }, /* XSUM_XXH64_testdata[5874] */ + { 2937, 0x000000009E3779B1ULL, 0x99C32092CBEBD096ULL }, /* XSUM_XXH64_testdata[5875] */ + { 2938, 0x0000000000000000ULL, 0x6B76B110D87BB405ULL }, /* XSUM_XXH64_testdata[5876] */ + { 2938, 0x000000009E3779B1ULL, 0x406C7FB2AC9CDC64ULL }, /* XSUM_XXH64_testdata[5877] */ + { 2939, 0x0000000000000000ULL, 0x15C58E78DB898194ULL }, /* XSUM_XXH64_testdata[5878] */ + { 2939, 0x000000009E3779B1ULL, 0x5262D4D54D045CFAULL }, /* XSUM_XXH64_testdata[5879] */ + { 2940, 0x0000000000000000ULL, 0x5E27B34F37032E88ULL }, /* XSUM_XXH64_testdata[5880] */ + { 2940, 0x000000009E3779B1ULL, 0x2F1A86360FA0C21FULL }, /* XSUM_XXH64_testdata[5881] */ + { 2941, 0x0000000000000000ULL, 0x9040573B28170672ULL }, /* XSUM_XXH64_testdata[5882] */ + { 2941, 0x000000009E3779B1ULL, 0x8B0DEFF7C022F2B5ULL }, /* XSUM_XXH64_testdata[5883] */ + { 2942, 0x0000000000000000ULL, 0x8666A913D286D0B7ULL }, /* XSUM_XXH64_testdata[5884] */ + { 2942, 0x000000009E3779B1ULL, 0x088DE4B0D942DD9BULL }, /* XSUM_XXH64_testdata[5885] */ + { 2943, 0x0000000000000000ULL, 0x2A7050BE9819B2A9ULL }, /* XSUM_XXH64_testdata[5886] */ + { 2943, 0x000000009E3779B1ULL, 0x57CC221B615CD845ULL }, /* XSUM_XXH64_testdata[5887] */ + { 2944, 0x0000000000000000ULL, 0x2ED91A7D8FDBAD90ULL }, /* XSUM_XXH64_testdata[5888] */ + { 2944, 0x000000009E3779B1ULL, 0xAB8174ECA924C2D2ULL }, /* XSUM_XXH64_testdata[5889] */ + { 2945, 0x0000000000000000ULL, 0xD22225DB9F930D53ULL }, /* XSUM_XXH64_testdata[5890] */ + { 2945, 0x000000009E3779B1ULL, 0xBF5838432F214309ULL }, /* XSUM_XXH64_testdata[5891] */ + { 2946, 0x0000000000000000ULL, 0x8E794F7E80C46D6AULL }, /* XSUM_XXH64_testdata[5892] */ + { 2946, 0x000000009E3779B1ULL, 0x49D8E307DC599EEAULL }, /* XSUM_XXH64_testdata[5893] */ + { 2947, 0x0000000000000000ULL, 0x9B39B384F471B7D7ULL }, /* XSUM_XXH64_testdata[5894] */ + { 2947, 0x000000009E3779B1ULL, 0x41C8A3962310D4B4ULL }, /* XSUM_XXH64_testdata[5895] */ + { 2948, 0x0000000000000000ULL, 0xB6EDCE22AD116D09ULL }, /* XSUM_XXH64_testdata[5896] */ + { 2948, 0x000000009E3779B1ULL, 0x932845C30AAD0BE5ULL }, /* XSUM_XXH64_testdata[5897] */ + { 2949, 0x0000000000000000ULL, 0xD7C9FD1A328D0F25ULL }, /* XSUM_XXH64_testdata[5898] */ + { 2949, 0x000000009E3779B1ULL, 0x9B58522178EC8E88ULL }, /* XSUM_XXH64_testdata[5899] */ + { 2950, 0x0000000000000000ULL, 0xF7A1A61715AD04FCULL }, /* XSUM_XXH64_testdata[5900] */ + { 2950, 0x000000009E3779B1ULL, 0x940440D6BE158DCDULL }, /* XSUM_XXH64_testdata[5901] */ + { 2951, 0x0000000000000000ULL, 0x0B4F83F0B47AC3DCULL }, /* XSUM_XXH64_testdata[5902] */ + { 2951, 0x000000009E3779B1ULL, 0x59CBD6CD831C1705ULL }, /* XSUM_XXH64_testdata[5903] */ + { 2952, 0x0000000000000000ULL, 0xD2FB338C4AE00DD7ULL }, /* XSUM_XXH64_testdata[5904] */ + { 2952, 0x000000009E3779B1ULL, 0x396753538D59E916ULL }, /* XSUM_XXH64_testdata[5905] */ + { 2953, 0x0000000000000000ULL, 0xA2EB1F2672DFC11AULL }, /* XSUM_XXH64_testdata[5906] */ + { 2953, 0x000000009E3779B1ULL, 0x04C88E51299C7450ULL }, /* XSUM_XXH64_testdata[5907] */ + { 2954, 0x0000000000000000ULL, 0x9FAB47D2C02E586AULL }, /* XSUM_XXH64_testdata[5908] */ + { 2954, 0x000000009E3779B1ULL, 0x38C892B3F8B8A2EAULL }, /* XSUM_XXH64_testdata[5909] */ + { 2955, 0x0000000000000000ULL, 0xD8AAB7960C35DF99ULL }, /* XSUM_XXH64_testdata[5910] */ + { 2955, 0x000000009E3779B1ULL, 0x4F262DA1218ED145ULL }, /* XSUM_XXH64_testdata[5911] */ + { 2956, 0x0000000000000000ULL, 0xD8D695CEB1594234ULL }, /* XSUM_XXH64_testdata[5912] */ + { 2956, 0x000000009E3779B1ULL, 0x2618622874EFE075ULL }, /* XSUM_XXH64_testdata[5913] */ + { 2957, 0x0000000000000000ULL, 0x1395A552D066394BULL }, /* XSUM_XXH64_testdata[5914] */ + { 2957, 0x000000009E3779B1ULL, 0x627E47161C5D4F79ULL }, /* XSUM_XXH64_testdata[5915] */ + { 2958, 0x0000000000000000ULL, 0xFFAA5B327E50D8FAULL }, /* XSUM_XXH64_testdata[5916] */ + { 2958, 0x000000009E3779B1ULL, 0x544BB3F6FCB9510DULL }, /* XSUM_XXH64_testdata[5917] */ + { 2959, 0x0000000000000000ULL, 0x00531F06D95A490CULL }, /* XSUM_XXH64_testdata[5918] */ + { 2959, 0x000000009E3779B1ULL, 0x4B21BB476DD2E59DULL }, /* XSUM_XXH64_testdata[5919] */ + { 2960, 0x0000000000000000ULL, 0xEA9D346682E2722CULL }, /* XSUM_XXH64_testdata[5920] */ + { 2960, 0x000000009E3779B1ULL, 0xD73725D67BC99773ULL }, /* XSUM_XXH64_testdata[5921] */ + { 2961, 0x0000000000000000ULL, 0x2E142758222FE06AULL }, /* XSUM_XXH64_testdata[5922] */ + { 2961, 0x000000009E3779B1ULL, 0x16CBA3C74356511FULL }, /* XSUM_XXH64_testdata[5923] */ + { 2962, 0x0000000000000000ULL, 0x3D153375B03094B3ULL }, /* XSUM_XXH64_testdata[5924] */ + { 2962, 0x000000009E3779B1ULL, 0xD72C1A8823589547ULL }, /* XSUM_XXH64_testdata[5925] */ + { 2963, 0x0000000000000000ULL, 0x1E0FE4442E7774B4ULL }, /* XSUM_XXH64_testdata[5926] */ + { 2963, 0x000000009E3779B1ULL, 0xE05BB5DBEB7D36EAULL }, /* XSUM_XXH64_testdata[5927] */ + { 2964, 0x0000000000000000ULL, 0xEB3560C96135925FULL }, /* XSUM_XXH64_testdata[5928] */ + { 2964, 0x000000009E3779B1ULL, 0x8E3C48BC4C99026DULL }, /* XSUM_XXH64_testdata[5929] */ + { 2965, 0x0000000000000000ULL, 0x4E1E2C1A7474D4C3ULL }, /* XSUM_XXH64_testdata[5930] */ + { 2965, 0x000000009E3779B1ULL, 0x2762DBB29BDD9B14ULL }, /* XSUM_XXH64_testdata[5931] */ + { 2966, 0x0000000000000000ULL, 0xAA5775793FB3C3A1ULL }, /* XSUM_XXH64_testdata[5932] */ + { 2966, 0x000000009E3779B1ULL, 0x35BCE39DD060B260ULL }, /* XSUM_XXH64_testdata[5933] */ + { 2967, 0x0000000000000000ULL, 0x15ADA96859805577ULL }, /* XSUM_XXH64_testdata[5934] */ + { 2967, 0x000000009E3779B1ULL, 0xDACF2B06E665444AULL }, /* XSUM_XXH64_testdata[5935] */ + { 2968, 0x0000000000000000ULL, 0x88AD0078B33271A5ULL }, /* XSUM_XXH64_testdata[5936] */ + { 2968, 0x000000009E3779B1ULL, 0xAECA858979E2D7ACULL }, /* XSUM_XXH64_testdata[5937] */ + { 2969, 0x0000000000000000ULL, 0x22D8BCE67078B98BULL }, /* XSUM_XXH64_testdata[5938] */ + { 2969, 0x000000009E3779B1ULL, 0x3BCBA48A4939A260ULL }, /* XSUM_XXH64_testdata[5939] */ + { 2970, 0x0000000000000000ULL, 0xF9BBBDDB4095D203ULL }, /* XSUM_XXH64_testdata[5940] */ + { 2970, 0x000000009E3779B1ULL, 0xBC85EFA0D5903602ULL }, /* XSUM_XXH64_testdata[5941] */ + { 2971, 0x0000000000000000ULL, 0xC693F7F685AA8FA9ULL }, /* XSUM_XXH64_testdata[5942] */ + { 2971, 0x000000009E3779B1ULL, 0x4CE8F381EBF4CCFDULL }, /* XSUM_XXH64_testdata[5943] */ + { 2972, 0x0000000000000000ULL, 0xD2DB23CCA0C6767CULL }, /* XSUM_XXH64_testdata[5944] */ + { 2972, 0x000000009E3779B1ULL, 0xCA67468147A198FBULL }, /* XSUM_XXH64_testdata[5945] */ + { 2973, 0x0000000000000000ULL, 0x92AAADDC0FEC858FULL }, /* XSUM_XXH64_testdata[5946] */ + { 2973, 0x000000009E3779B1ULL, 0x51D06DBC0E69BA09ULL }, /* XSUM_XXH64_testdata[5947] */ + { 2974, 0x0000000000000000ULL, 0x3F64903347E7A25EULL }, /* XSUM_XXH64_testdata[5948] */ + { 2974, 0x000000009E3779B1ULL, 0x81260842A5405514ULL }, /* XSUM_XXH64_testdata[5949] */ + { 2975, 0x0000000000000000ULL, 0xD0F4BBD53BEBEDAEULL }, /* XSUM_XXH64_testdata[5950] */ + { 2975, 0x000000009E3779B1ULL, 0x0B5475BE84EC613FULL }, /* XSUM_XXH64_testdata[5951] */ + { 2976, 0x0000000000000000ULL, 0x0D5E72F642CADE74ULL }, /* XSUM_XXH64_testdata[5952] */ + { 2976, 0x000000009E3779B1ULL, 0xEACE78F5E7058ABEULL }, /* XSUM_XXH64_testdata[5953] */ + { 2977, 0x0000000000000000ULL, 0xD50AC8DE3CB1E75BULL }, /* XSUM_XXH64_testdata[5954] */ + { 2977, 0x000000009E3779B1ULL, 0xCEE8CA895CBDC66FULL }, /* XSUM_XXH64_testdata[5955] */ + { 2978, 0x0000000000000000ULL, 0x7395C398EFA13F9BULL }, /* XSUM_XXH64_testdata[5956] */ + { 2978, 0x000000009E3779B1ULL, 0xF5DB34BAC37EB5F4ULL }, /* XSUM_XXH64_testdata[5957] */ + { 2979, 0x0000000000000000ULL, 0x73ADE808B47A2D7BULL }, /* XSUM_XXH64_testdata[5958] */ + { 2979, 0x000000009E3779B1ULL, 0x6BB8A09D1FD48699ULL }, /* XSUM_XXH64_testdata[5959] */ + { 2980, 0x0000000000000000ULL, 0x058447CE1A5211F1ULL }, /* XSUM_XXH64_testdata[5960] */ + { 2980, 0x000000009E3779B1ULL, 0x848B9FE94C9194B9ULL }, /* XSUM_XXH64_testdata[5961] */ + { 2981, 0x0000000000000000ULL, 0x4E188E3969B1C83CULL }, /* XSUM_XXH64_testdata[5962] */ + { 2981, 0x000000009E3779B1ULL, 0xEE289117BFD7E750ULL }, /* XSUM_XXH64_testdata[5963] */ + { 2982, 0x0000000000000000ULL, 0x5A85B550523BC73AULL }, /* XSUM_XXH64_testdata[5964] */ + { 2982, 0x000000009E3779B1ULL, 0x5AFE43F3097D4A2FULL }, /* XSUM_XXH64_testdata[5965] */ + { 2983, 0x0000000000000000ULL, 0x499769190F89C03FULL }, /* XSUM_XXH64_testdata[5966] */ + { 2983, 0x000000009E3779B1ULL, 0x2079781F995BEC2CULL }, /* XSUM_XXH64_testdata[5967] */ + { 2984, 0x0000000000000000ULL, 0x629EE336E061069AULL }, /* XSUM_XXH64_testdata[5968] */ + { 2984, 0x000000009E3779B1ULL, 0x4B2222BCFDE6A245ULL }, /* XSUM_XXH64_testdata[5969] */ + { 2985, 0x0000000000000000ULL, 0x7DF8FF0F4616DC30ULL }, /* XSUM_XXH64_testdata[5970] */ + { 2985, 0x000000009E3779B1ULL, 0x1D9E087ADF42DEEAULL }, /* XSUM_XXH64_testdata[5971] */ + { 2986, 0x0000000000000000ULL, 0xD33DA2CF66F31A6BULL }, /* XSUM_XXH64_testdata[5972] */ + { 2986, 0x000000009E3779B1ULL, 0xAEFD32C8527CC49BULL }, /* XSUM_XXH64_testdata[5973] */ + { 2987, 0x0000000000000000ULL, 0x25DF46E5DD0DB6FFULL }, /* XSUM_XXH64_testdata[5974] */ + { 2987, 0x000000009E3779B1ULL, 0xDD1EDA274C59CDA8ULL }, /* XSUM_XXH64_testdata[5975] */ + { 2988, 0x0000000000000000ULL, 0x039FCC888531F1F4ULL }, /* XSUM_XXH64_testdata[5976] */ + { 2988, 0x000000009E3779B1ULL, 0xBAFF58308A312750ULL }, /* XSUM_XXH64_testdata[5977] */ + { 2989, 0x0000000000000000ULL, 0x3ADCA236069EE037ULL }, /* XSUM_XXH64_testdata[5978] */ + { 2989, 0x000000009E3779B1ULL, 0x89B6B4901CF23031ULL }, /* XSUM_XXH64_testdata[5979] */ + { 2990, 0x0000000000000000ULL, 0x08107C472F3D2E7CULL }, /* XSUM_XXH64_testdata[5980] */ + { 2990, 0x000000009E3779B1ULL, 0x20E3ADC897B109EEULL }, /* XSUM_XXH64_testdata[5981] */ + { 2991, 0x0000000000000000ULL, 0x3CBB5F72AA84959FULL }, /* XSUM_XXH64_testdata[5982] */ + { 2991, 0x000000009E3779B1ULL, 0x90B52738A4702205ULL }, /* XSUM_XXH64_testdata[5983] */ + { 2992, 0x0000000000000000ULL, 0x0328504AEE9915CFULL }, /* XSUM_XXH64_testdata[5984] */ + { 2992, 0x000000009E3779B1ULL, 0xBAC2FCF5A34E05CFULL }, /* XSUM_XXH64_testdata[5985] */ + { 2993, 0x0000000000000000ULL, 0xA085B2AB2742CC15ULL }, /* XSUM_XXH64_testdata[5986] */ + { 2993, 0x000000009E3779B1ULL, 0xDD726E765FFFC814ULL }, /* XSUM_XXH64_testdata[5987] */ + { 2994, 0x0000000000000000ULL, 0xBBC26F352BB6D69FULL }, /* XSUM_XXH64_testdata[5988] */ + { 2994, 0x000000009E3779B1ULL, 0x19431E7E4D68CD2DULL }, /* XSUM_XXH64_testdata[5989] */ + { 2995, 0x0000000000000000ULL, 0xD0379B5EED62D17FULL }, /* XSUM_XXH64_testdata[5990] */ + { 2995, 0x000000009E3779B1ULL, 0xDAFBBC87F3F4841AULL }, /* XSUM_XXH64_testdata[5991] */ + { 2996, 0x0000000000000000ULL, 0xAE384F5A2F96A5E2ULL }, /* XSUM_XXH64_testdata[5992] */ + { 2996, 0x000000009E3779B1ULL, 0x7E3A803E1CF5B421ULL }, /* XSUM_XXH64_testdata[5993] */ + { 2997, 0x0000000000000000ULL, 0x7C4C0612C4AF9E77ULL }, /* XSUM_XXH64_testdata[5994] */ + { 2997, 0x000000009E3779B1ULL, 0x98D0D53B19AD79F1ULL }, /* XSUM_XXH64_testdata[5995] */ + { 2998, 0x0000000000000000ULL, 0x108298ED03059648ULL }, /* XSUM_XXH64_testdata[5996] */ + { 2998, 0x000000009E3779B1ULL, 0x4DCB45BC69D5D81BULL }, /* XSUM_XXH64_testdata[5997] */ + { 2999, 0x0000000000000000ULL, 0x8F705B33108F3013ULL }, /* XSUM_XXH64_testdata[5998] */ + { 2999, 0x000000009E3779B1ULL, 0xF1F4221D879D678BULL }, /* XSUM_XXH64_testdata[5999] */ + { 3000, 0x0000000000000000ULL, 0xE684FF60FCE43966ULL }, /* XSUM_XXH64_testdata[6000] */ + { 3000, 0x000000009E3779B1ULL, 0xF8CB728F857BE375ULL }, /* XSUM_XXH64_testdata[6001] */ + { 3001, 0x0000000000000000ULL, 0x330583CB67983EDFULL }, /* XSUM_XXH64_testdata[6002] */ + { 3001, 0x000000009E3779B1ULL, 0x940FE2322E395671ULL }, /* XSUM_XXH64_testdata[6003] */ + { 3002, 0x0000000000000000ULL, 0x573F01283C899522ULL }, /* XSUM_XXH64_testdata[6004] */ + { 3002, 0x000000009E3779B1ULL, 0xC1EA7E5F60E5F603ULL }, /* XSUM_XXH64_testdata[6005] */ + { 3003, 0x0000000000000000ULL, 0xC1AB75DCB5B0C521ULL }, /* XSUM_XXH64_testdata[6006] */ + { 3003, 0x000000009E3779B1ULL, 0x8575FB7CC71523BDULL }, /* XSUM_XXH64_testdata[6007] */ + { 3004, 0x0000000000000000ULL, 0xA010009C6ED178DAULL }, /* XSUM_XXH64_testdata[6008] */ + { 3004, 0x000000009E3779B1ULL, 0xB65425C7EB8C6748ULL }, /* XSUM_XXH64_testdata[6009] */ + { 3005, 0x0000000000000000ULL, 0xF3EC857BE8653E4FULL }, /* XSUM_XXH64_testdata[6010] */ + { 3005, 0x000000009E3779B1ULL, 0x5B91ECA6F6A223A6ULL }, /* XSUM_XXH64_testdata[6011] */ + { 3006, 0x0000000000000000ULL, 0xA1CBBDDFF795D5AAULL }, /* XSUM_XXH64_testdata[6012] */ + { 3006, 0x000000009E3779B1ULL, 0x313377941F2EE286ULL }, /* XSUM_XXH64_testdata[6013] */ + { 3007, 0x0000000000000000ULL, 0x20FCC612A8B93AE1ULL }, /* XSUM_XXH64_testdata[6014] */ + { 3007, 0x000000009E3779B1ULL, 0x25A3E2D9F16C7FA2ULL }, /* XSUM_XXH64_testdata[6015] */ + { 3008, 0x0000000000000000ULL, 0xD8E6FA63056B6DB8ULL }, /* XSUM_XXH64_testdata[6016] */ + { 3008, 0x000000009E3779B1ULL, 0x4DB1D534054ED7F7ULL }, /* XSUM_XXH64_testdata[6017] */ + { 3009, 0x0000000000000000ULL, 0x1C6EEEDB37C610A8ULL }, /* XSUM_XXH64_testdata[6018] */ + { 3009, 0x000000009E3779B1ULL, 0x877D954066DC77C3ULL }, /* XSUM_XXH64_testdata[6019] */ + { 3010, 0x0000000000000000ULL, 0xC869507C179685BDULL }, /* XSUM_XXH64_testdata[6020] */ + { 3010, 0x000000009E3779B1ULL, 0xB160957ADB72B1FCULL }, /* XSUM_XXH64_testdata[6021] */ + { 3011, 0x0000000000000000ULL, 0x52C28D89FE574F24ULL }, /* XSUM_XXH64_testdata[6022] */ + { 3011, 0x000000009E3779B1ULL, 0x4F8F4734B6FEA2C9ULL }, /* XSUM_XXH64_testdata[6023] */ + { 3012, 0x0000000000000000ULL, 0x9BA78B1DF3E688CAULL }, /* XSUM_XXH64_testdata[6024] */ + { 3012, 0x000000009E3779B1ULL, 0x36EEC844F966131CULL }, /* XSUM_XXH64_testdata[6025] */ + { 3013, 0x0000000000000000ULL, 0x9AE5A0EB3E181F56ULL }, /* XSUM_XXH64_testdata[6026] */ + { 3013, 0x000000009E3779B1ULL, 0xCAEAA7F632C86F76ULL }, /* XSUM_XXH64_testdata[6027] */ + { 3014, 0x0000000000000000ULL, 0xA18AF4A683B620DAULL }, /* XSUM_XXH64_testdata[6028] */ + { 3014, 0x000000009E3779B1ULL, 0x14AD7A52DD482A71ULL }, /* XSUM_XXH64_testdata[6029] */ + { 3015, 0x0000000000000000ULL, 0x4CD09E92624BD760ULL }, /* XSUM_XXH64_testdata[6030] */ + { 3015, 0x000000009E3779B1ULL, 0x667EC630D7752CDAULL }, /* XSUM_XXH64_testdata[6031] */ + { 3016, 0x0000000000000000ULL, 0x4F8288F2354486DEULL }, /* XSUM_XXH64_testdata[6032] */ + { 3016, 0x000000009E3779B1ULL, 0xBFC9579C7C14EDADULL }, /* XSUM_XXH64_testdata[6033] */ + { 3017, 0x0000000000000000ULL, 0xF43521A363DEF108ULL }, /* XSUM_XXH64_testdata[6034] */ + { 3017, 0x000000009E3779B1ULL, 0x03A918F92A54CC66ULL }, /* XSUM_XXH64_testdata[6035] */ + { 3018, 0x0000000000000000ULL, 0xE67B478F1B98881BULL }, /* XSUM_XXH64_testdata[6036] */ + { 3018, 0x000000009E3779B1ULL, 0x0CA01F747E5DA7CBULL }, /* XSUM_XXH64_testdata[6037] */ + { 3019, 0x0000000000000000ULL, 0x926012291F4056C7ULL }, /* XSUM_XXH64_testdata[6038] */ + { 3019, 0x000000009E3779B1ULL, 0x4ED0E4901EB0BC9BULL }, /* XSUM_XXH64_testdata[6039] */ + { 3020, 0x0000000000000000ULL, 0xB414E63BD01167DCULL }, /* XSUM_XXH64_testdata[6040] */ + { 3020, 0x000000009E3779B1ULL, 0x077877540832C8FDULL }, /* XSUM_XXH64_testdata[6041] */ + { 3021, 0x0000000000000000ULL, 0xCF16CC88D853E3DDULL }, /* XSUM_XXH64_testdata[6042] */ + { 3021, 0x000000009E3779B1ULL, 0xD7D29A02B3FCE2F8ULL }, /* XSUM_XXH64_testdata[6043] */ + { 3022, 0x0000000000000000ULL, 0xA456F74799F0C1F1ULL }, /* XSUM_XXH64_testdata[6044] */ + { 3022, 0x000000009E3779B1ULL, 0xD6865E378E5C5C13ULL }, /* XSUM_XXH64_testdata[6045] */ + { 3023, 0x0000000000000000ULL, 0x7D1D41206AB7855AULL }, /* XSUM_XXH64_testdata[6046] */ + { 3023, 0x000000009E3779B1ULL, 0xEEE4594AF8AD3EE1ULL }, /* XSUM_XXH64_testdata[6047] */ + { 3024, 0x0000000000000000ULL, 0x9F718A897F7E0AEDULL }, /* XSUM_XXH64_testdata[6048] */ + { 3024, 0x000000009E3779B1ULL, 0xFD7D764122793DC6ULL }, /* XSUM_XXH64_testdata[6049] */ + { 3025, 0x0000000000000000ULL, 0x991F3F7A495B8E04ULL }, /* XSUM_XXH64_testdata[6050] */ + { 3025, 0x000000009E3779B1ULL, 0xC91AB60505847BF3ULL }, /* XSUM_XXH64_testdata[6051] */ + { 3026, 0x0000000000000000ULL, 0x793720EE76661C69ULL }, /* XSUM_XXH64_testdata[6052] */ + { 3026, 0x000000009E3779B1ULL, 0x6A9D8207601C4759ULL }, /* XSUM_XXH64_testdata[6053] */ + { 3027, 0x0000000000000000ULL, 0xA7D50B910233520AULL }, /* XSUM_XXH64_testdata[6054] */ + { 3027, 0x000000009E3779B1ULL, 0x19636AE67A11FE83ULL }, /* XSUM_XXH64_testdata[6055] */ + { 3028, 0x0000000000000000ULL, 0xAB8DFC98782FE42AULL }, /* XSUM_XXH64_testdata[6056] */ + { 3028, 0x000000009E3779B1ULL, 0x8DB67A4ADB318B52ULL }, /* XSUM_XXH64_testdata[6057] */ + { 3029, 0x0000000000000000ULL, 0xCF95E5B98C32170FULL }, /* XSUM_XXH64_testdata[6058] */ + { 3029, 0x000000009E3779B1ULL, 0x34A272E6C7561A48ULL }, /* XSUM_XXH64_testdata[6059] */ + { 3030, 0x0000000000000000ULL, 0xBF6134F365BE8FF6ULL }, /* XSUM_XXH64_testdata[6060] */ + { 3030, 0x000000009E3779B1ULL, 0x4CD31F482EDDFA77ULL }, /* XSUM_XXH64_testdata[6061] */ + { 3031, 0x0000000000000000ULL, 0xCB88BD89AFEEE1DFULL }, /* XSUM_XXH64_testdata[6062] */ + { 3031, 0x000000009E3779B1ULL, 0x404314EC48C68FA6ULL }, /* XSUM_XXH64_testdata[6063] */ + { 3032, 0x0000000000000000ULL, 0x59C6670F33A16BD8ULL }, /* XSUM_XXH64_testdata[6064] */ + { 3032, 0x000000009E3779B1ULL, 0x9D6DD2FEE7CA9CFEULL }, /* XSUM_XXH64_testdata[6065] */ + { 3033, 0x0000000000000000ULL, 0xCA4274EDB69239F7ULL }, /* XSUM_XXH64_testdata[6066] */ + { 3033, 0x000000009E3779B1ULL, 0xE2B3ED780D087EC5ULL }, /* XSUM_XXH64_testdata[6067] */ + { 3034, 0x0000000000000000ULL, 0x535B7C1D53F3B1D9ULL }, /* XSUM_XXH64_testdata[6068] */ + { 3034, 0x000000009E3779B1ULL, 0x025268448308B265ULL }, /* XSUM_XXH64_testdata[6069] */ + { 3035, 0x0000000000000000ULL, 0xBB74AD7F14535724ULL }, /* XSUM_XXH64_testdata[6070] */ + { 3035, 0x000000009E3779B1ULL, 0xA6B6956E0E36FBCFULL }, /* XSUM_XXH64_testdata[6071] */ + { 3036, 0x0000000000000000ULL, 0x180AD49A85D61888ULL }, /* XSUM_XXH64_testdata[6072] */ + { 3036, 0x000000009E3779B1ULL, 0x203AEF1EEC215EE1ULL }, /* XSUM_XXH64_testdata[6073] */ + { 3037, 0x0000000000000000ULL, 0x4F3A245A009A543DULL }, /* XSUM_XXH64_testdata[6074] */ + { 3037, 0x000000009E3779B1ULL, 0x67F678BD489BE987ULL }, /* XSUM_XXH64_testdata[6075] */ + { 3038, 0x0000000000000000ULL, 0x8C712DB6DD4F36BEULL }, /* XSUM_XXH64_testdata[6076] */ + { 3038, 0x000000009E3779B1ULL, 0x3A1394EEC865462DULL }, /* XSUM_XXH64_testdata[6077] */ + { 3039, 0x0000000000000000ULL, 0x10790C1C33FFF84AULL }, /* XSUM_XXH64_testdata[6078] */ + { 3039, 0x000000009E3779B1ULL, 0xE9BFC7950F2AE30DULL }, /* XSUM_XXH64_testdata[6079] */ + { 3040, 0x0000000000000000ULL, 0x632FBE8B0D57A80EULL }, /* XSUM_XXH64_testdata[6080] */ + { 3040, 0x000000009E3779B1ULL, 0x426E4209479CE0ECULL }, /* XSUM_XXH64_testdata[6081] */ + { 3041, 0x0000000000000000ULL, 0xD3951C2C53808953ULL }, /* XSUM_XXH64_testdata[6082] */ + { 3041, 0x000000009E3779B1ULL, 0xAEA87F99785030F2ULL }, /* XSUM_XXH64_testdata[6083] */ + { 3042, 0x0000000000000000ULL, 0x3CF6EB5CE31302EDULL }, /* XSUM_XXH64_testdata[6084] */ + { 3042, 0x000000009E3779B1ULL, 0x586411B01ABEF789ULL }, /* XSUM_XXH64_testdata[6085] */ + { 3043, 0x0000000000000000ULL, 0x3A22A7948F07FF2CULL }, /* XSUM_XXH64_testdata[6086] */ + { 3043, 0x000000009E3779B1ULL, 0xF0563BA396A90A73ULL }, /* XSUM_XXH64_testdata[6087] */ + { 3044, 0x0000000000000000ULL, 0xA8141E1884975690ULL }, /* XSUM_XXH64_testdata[6088] */ + { 3044, 0x000000009E3779B1ULL, 0x376D8DB113497DA4ULL }, /* XSUM_XXH64_testdata[6089] */ + { 3045, 0x0000000000000000ULL, 0x7CA8440AD75DFDCFULL }, /* XSUM_XXH64_testdata[6090] */ + { 3045, 0x000000009E3779B1ULL, 0x5C51614EFFCC171CULL }, /* XSUM_XXH64_testdata[6091] */ + { 3046, 0x0000000000000000ULL, 0x07B164EBADD8C25DULL }, /* XSUM_XXH64_testdata[6092] */ + { 3046, 0x000000009E3779B1ULL, 0x70D5688E8D783865ULL }, /* XSUM_XXH64_testdata[6093] */ + { 3047, 0x0000000000000000ULL, 0x27E4465A71137428ULL }, /* XSUM_XXH64_testdata[6094] */ + { 3047, 0x000000009E3779B1ULL, 0xB78B7F7EB1A496C5ULL }, /* XSUM_XXH64_testdata[6095] */ + { 3048, 0x0000000000000000ULL, 0x368081F9EB43E430ULL }, /* XSUM_XXH64_testdata[6096] */ + { 3048, 0x000000009E3779B1ULL, 0x866BB62F79173FACULL }, /* XSUM_XXH64_testdata[6097] */ + { 3049, 0x0000000000000000ULL, 0xBA27845D35F1597FULL }, /* XSUM_XXH64_testdata[6098] */ + { 3049, 0x000000009E3779B1ULL, 0xEBBB81D6DA9A134EULL }, /* XSUM_XXH64_testdata[6099] */ + { 3050, 0x0000000000000000ULL, 0x450AC0E86EF411F7ULL }, /* XSUM_XXH64_testdata[6100] */ + { 3050, 0x000000009E3779B1ULL, 0x3E727CD390432B73ULL }, /* XSUM_XXH64_testdata[6101] */ + { 3051, 0x0000000000000000ULL, 0x34CE2564F23304AFULL }, /* XSUM_XXH64_testdata[6102] */ + { 3051, 0x000000009E3779B1ULL, 0xBF745E5E74FD62F6ULL }, /* XSUM_XXH64_testdata[6103] */ + { 3052, 0x0000000000000000ULL, 0x74231DB6A33BE634ULL }, /* XSUM_XXH64_testdata[6104] */ + { 3052, 0x000000009E3779B1ULL, 0xD08A345FC6198451ULL }, /* XSUM_XXH64_testdata[6105] */ + { 3053, 0x0000000000000000ULL, 0x5DFA36390438B53BULL }, /* XSUM_XXH64_testdata[6106] */ + { 3053, 0x000000009E3779B1ULL, 0x8F5E552BD3E8CD18ULL }, /* XSUM_XXH64_testdata[6107] */ + { 3054, 0x0000000000000000ULL, 0xB934098469FFED79ULL }, /* XSUM_XXH64_testdata[6108] */ + { 3054, 0x000000009E3779B1ULL, 0x5FEFB12A046DE9B9ULL }, /* XSUM_XXH64_testdata[6109] */ + { 3055, 0x0000000000000000ULL, 0x1A8A987150D99B56ULL }, /* XSUM_XXH64_testdata[6110] */ + { 3055, 0x000000009E3779B1ULL, 0x5E3011983A065BDAULL }, /* XSUM_XXH64_testdata[6111] */ + { 3056, 0x0000000000000000ULL, 0x37EF552D630529C7ULL }, /* XSUM_XXH64_testdata[6112] */ + { 3056, 0x000000009E3779B1ULL, 0x62A48E8A8D391A43ULL }, /* XSUM_XXH64_testdata[6113] */ + { 3057, 0x0000000000000000ULL, 0xE7C45AE157E50D12ULL }, /* XSUM_XXH64_testdata[6114] */ + { 3057, 0x000000009E3779B1ULL, 0x01906C95DE0EF2E2ULL }, /* XSUM_XXH64_testdata[6115] */ + { 3058, 0x0000000000000000ULL, 0xA92B3C3367D77C48ULL }, /* XSUM_XXH64_testdata[6116] */ + { 3058, 0x000000009E3779B1ULL, 0x4B0F090B28CD17CFULL }, /* XSUM_XXH64_testdata[6117] */ + { 3059, 0x0000000000000000ULL, 0x94E8DB680FCC88E9ULL }, /* XSUM_XXH64_testdata[6118] */ + { 3059, 0x000000009E3779B1ULL, 0x4B935297B9F3F7D2ULL }, /* XSUM_XXH64_testdata[6119] */ + { 3060, 0x0000000000000000ULL, 0xA3454DFD5B62769DULL }, /* XSUM_XXH64_testdata[6120] */ + { 3060, 0x000000009E3779B1ULL, 0x5EEB43F43A71C5F6ULL }, /* XSUM_XXH64_testdata[6121] */ + { 3061, 0x0000000000000000ULL, 0xDC57A8CB89E6C537ULL }, /* XSUM_XXH64_testdata[6122] */ + { 3061, 0x000000009E3779B1ULL, 0x1A05FA5915D6B0FDULL }, /* XSUM_XXH64_testdata[6123] */ + { 3062, 0x0000000000000000ULL, 0x3858E1AC149FEACCULL }, /* XSUM_XXH64_testdata[6124] */ + { 3062, 0x000000009E3779B1ULL, 0x395348643524CBEDULL }, /* XSUM_XXH64_testdata[6125] */ + { 3063, 0x0000000000000000ULL, 0xF121116F835D2FF5ULL }, /* XSUM_XXH64_testdata[6126] */ + { 3063, 0x000000009E3779B1ULL, 0x74052838E8B4C967ULL }, /* XSUM_XXH64_testdata[6127] */ + { 3064, 0x0000000000000000ULL, 0xB39C41CEE1CAE728ULL }, /* XSUM_XXH64_testdata[6128] */ + { 3064, 0x000000009E3779B1ULL, 0xEBF18C9B1DD18195ULL }, /* XSUM_XXH64_testdata[6129] */ + { 3065, 0x0000000000000000ULL, 0xB947D1681ECD85DAULL }, /* XSUM_XXH64_testdata[6130] */ + { 3065, 0x000000009E3779B1ULL, 0x20F9750A1E3E7C6CULL }, /* XSUM_XXH64_testdata[6131] */ + { 3066, 0x0000000000000000ULL, 0x5131B98A23A664BCULL }, /* XSUM_XXH64_testdata[6132] */ + { 3066, 0x000000009E3779B1ULL, 0x811DE85E0F1AEF8AULL }, /* XSUM_XXH64_testdata[6133] */ + { 3067, 0x0000000000000000ULL, 0x112014B2C0CE5B58ULL }, /* XSUM_XXH64_testdata[6134] */ + { 3067, 0x000000009E3779B1ULL, 0x2BDE05A4716851D7ULL }, /* XSUM_XXH64_testdata[6135] */ + { 3068, 0x0000000000000000ULL, 0xB7B64FD55D8744E4ULL }, /* XSUM_XXH64_testdata[6136] */ + { 3068, 0x000000009E3779B1ULL, 0x7C849F7EF6C5D58EULL }, /* XSUM_XXH64_testdata[6137] */ + { 3069, 0x0000000000000000ULL, 0x330896FA0A24FAAAULL }, /* XSUM_XXH64_testdata[6138] */ + { 3069, 0x000000009E3779B1ULL, 0x42552BD332AF9FDEULL }, /* XSUM_XXH64_testdata[6139] */ + { 3070, 0x0000000000000000ULL, 0x6D3B2B83814C9738ULL }, /* XSUM_XXH64_testdata[6140] */ + { 3070, 0x000000009E3779B1ULL, 0x6643EEFC412A286AULL }, /* XSUM_XXH64_testdata[6141] */ + { 3071, 0x0000000000000000ULL, 0x4A1158460984590AULL }, /* XSUM_XXH64_testdata[6142] */ + { 3071, 0x000000009E3779B1ULL, 0xBD27A37D5ACDBD7CULL }, /* XSUM_XXH64_testdata[6143] */ + { 3072, 0x0000000000000000ULL, 0xD4E565F7525ED7D6ULL }, /* XSUM_XXH64_testdata[6144] */ + { 3072, 0x000000009E3779B1ULL, 0xA58818CB61D7D3C5ULL }, /* XSUM_XXH64_testdata[6145] */ + { 3073, 0x0000000000000000ULL, 0x4C1983B3DAB0C4BDULL }, /* XSUM_XXH64_testdata[6146] */ + { 3073, 0x000000009E3779B1ULL, 0xB2A5767C85AE8C5EULL }, /* XSUM_XXH64_testdata[6147] */ + { 3074, 0x0000000000000000ULL, 0xF7ABBAEE1D95088BULL }, /* XSUM_XXH64_testdata[6148] */ + { 3074, 0x000000009E3779B1ULL, 0x8D8A1A381693FF29ULL }, /* XSUM_XXH64_testdata[6149] */ + { 3075, 0x0000000000000000ULL, 0xF747DC4F1C4BA673ULL }, /* XSUM_XXH64_testdata[6150] */ + { 3075, 0x000000009E3779B1ULL, 0x02F27B47D3C11917ULL }, /* XSUM_XXH64_testdata[6151] */ + { 3076, 0x0000000000000000ULL, 0xA7C8B1E470CD7F6FULL }, /* XSUM_XXH64_testdata[6152] */ + { 3076, 0x000000009E3779B1ULL, 0x5E62237464327250ULL }, /* XSUM_XXH64_testdata[6153] */ + { 3077, 0x0000000000000000ULL, 0xF7889802DBBB44C2ULL }, /* XSUM_XXH64_testdata[6154] */ + { 3077, 0x000000009E3779B1ULL, 0x00EE52655CA0C911ULL }, /* XSUM_XXH64_testdata[6155] */ + { 3078, 0x0000000000000000ULL, 0x9605144CB45195C7ULL }, /* XSUM_XXH64_testdata[6156] */ + { 3078, 0x000000009E3779B1ULL, 0xFDCB89E45CE1AA58ULL }, /* XSUM_XXH64_testdata[6157] */ + { 3079, 0x0000000000000000ULL, 0x085D1362C08A9AA8ULL }, /* XSUM_XXH64_testdata[6158] */ + { 3079, 0x000000009E3779B1ULL, 0xE7F12C33269B0812ULL }, /* XSUM_XXH64_testdata[6159] */ + { 3080, 0x0000000000000000ULL, 0xE47C24C654B6FA83ULL }, /* XSUM_XXH64_testdata[6160] */ + { 3080, 0x000000009E3779B1ULL, 0xBEAB791B5AE43A1CULL }, /* XSUM_XXH64_testdata[6161] */ + { 3081, 0x0000000000000000ULL, 0x5B81143A3BF0EFDAULL }, /* XSUM_XXH64_testdata[6162] */ + { 3081, 0x000000009E3779B1ULL, 0xA751814B1719A456ULL }, /* XSUM_XXH64_testdata[6163] */ + { 3082, 0x0000000000000000ULL, 0x67A5375E989F206CULL }, /* XSUM_XXH64_testdata[6164] */ + { 3082, 0x000000009E3779B1ULL, 0x5127D2F98852F302ULL }, /* XSUM_XXH64_testdata[6165] */ + { 3083, 0x0000000000000000ULL, 0x7527F85125554091ULL }, /* XSUM_XXH64_testdata[6166] */ + { 3083, 0x000000009E3779B1ULL, 0x08728D57C165A995ULL }, /* XSUM_XXH64_testdata[6167] */ + { 3084, 0x0000000000000000ULL, 0x31DFAB90F3D16FE8ULL }, /* XSUM_XXH64_testdata[6168] */ + { 3084, 0x000000009E3779B1ULL, 0xFD6E8953BCB89F17ULL }, /* XSUM_XXH64_testdata[6169] */ + { 3085, 0x0000000000000000ULL, 0xD1DEA7BFE896594DULL }, /* XSUM_XXH64_testdata[6170] */ + { 3085, 0x000000009E3779B1ULL, 0x120FBA469476A034ULL }, /* XSUM_XXH64_testdata[6171] */ + { 3086, 0x0000000000000000ULL, 0xC61D2F45AD7C4424ULL }, /* XSUM_XXH64_testdata[6172] */ + { 3086, 0x000000009E3779B1ULL, 0xA695C11689E60744ULL }, /* XSUM_XXH64_testdata[6173] */ + { 3087, 0x0000000000000000ULL, 0x62C46CC95FF68AE5ULL }, /* XSUM_XXH64_testdata[6174] */ + { 3087, 0x000000009E3779B1ULL, 0x5C8F1510909B6B35ULL }, /* XSUM_XXH64_testdata[6175] */ + { 3088, 0x0000000000000000ULL, 0x499F5A9B2464045AULL }, /* XSUM_XXH64_testdata[6176] */ + { 3088, 0x000000009E3779B1ULL, 0x094B563E76732498ULL }, /* XSUM_XXH64_testdata[6177] */ + { 3089, 0x0000000000000000ULL, 0x1112FF8B52451A96ULL }, /* XSUM_XXH64_testdata[6178] */ + { 3089, 0x000000009E3779B1ULL, 0xE88599D66586F003ULL }, /* XSUM_XXH64_testdata[6179] */ + { 3090, 0x0000000000000000ULL, 0x520F2548A1803420ULL }, /* XSUM_XXH64_testdata[6180] */ + { 3090, 0x000000009E3779B1ULL, 0x96C6145017664572ULL }, /* XSUM_XXH64_testdata[6181] */ + { 3091, 0x0000000000000000ULL, 0x99A5B7007990D642ULL }, /* XSUM_XXH64_testdata[6182] */ + { 3091, 0x000000009E3779B1ULL, 0x46D5DA3C693A5FE7ULL }, /* XSUM_XXH64_testdata[6183] */ + { 3092, 0x0000000000000000ULL, 0x3C96BCE0E4FC8DC9ULL }, /* XSUM_XXH64_testdata[6184] */ + { 3092, 0x000000009E3779B1ULL, 0xC468DE887CCA53C0ULL }, /* XSUM_XXH64_testdata[6185] */ + { 3093, 0x0000000000000000ULL, 0x2FCE6E18E632FC11ULL }, /* XSUM_XXH64_testdata[6186] */ + { 3093, 0x000000009E3779B1ULL, 0xCCFE6B4A56ABA439ULL }, /* XSUM_XXH64_testdata[6187] */ + { 3094, 0x0000000000000000ULL, 0xE400FC592C96B711ULL }, /* XSUM_XXH64_testdata[6188] */ + { 3094, 0x000000009E3779B1ULL, 0xD4909BD7DBFF8BD7ULL }, /* XSUM_XXH64_testdata[6189] */ + { 3095, 0x0000000000000000ULL, 0x030F757279B918EFULL }, /* XSUM_XXH64_testdata[6190] */ + { 3095, 0x000000009E3779B1ULL, 0x1CD0B44DD2BB7080ULL }, /* XSUM_XXH64_testdata[6191] */ + { 3096, 0x0000000000000000ULL, 0xD3EA547BC89A82D9ULL }, /* XSUM_XXH64_testdata[6192] */ + { 3096, 0x000000009E3779B1ULL, 0x4625A176048C52C5ULL }, /* XSUM_XXH64_testdata[6193] */ + { 3097, 0x0000000000000000ULL, 0xD4B2C10A9A2B9848ULL }, /* XSUM_XXH64_testdata[6194] */ + { 3097, 0x000000009E3779B1ULL, 0x59FA35565A6A6739ULL }, /* XSUM_XXH64_testdata[6195] */ + { 3098, 0x0000000000000000ULL, 0xDA79FB8119504D7CULL }, /* XSUM_XXH64_testdata[6196] */ + { 3098, 0x000000009E3779B1ULL, 0x89047DA06D3D4AB4ULL }, /* XSUM_XXH64_testdata[6197] */ + { 3099, 0x0000000000000000ULL, 0xEFEF2E02E098D91FULL }, /* XSUM_XXH64_testdata[6198] */ + { 3099, 0x000000009E3779B1ULL, 0x47583674DA2A6CD0ULL }, /* XSUM_XXH64_testdata[6199] */ + { 3100, 0x0000000000000000ULL, 0x4CDBEFBEA273EC06ULL }, /* XSUM_XXH64_testdata[6200] */ + { 3100, 0x000000009E3779B1ULL, 0xD6A64C890FDF2D89ULL }, /* XSUM_XXH64_testdata[6201] */ + { 3101, 0x0000000000000000ULL, 0xB81A32EE5035D36FULL }, /* XSUM_XXH64_testdata[6202] */ + { 3101, 0x000000009E3779B1ULL, 0x8F5C848ABDD39FC9ULL }, /* XSUM_XXH64_testdata[6203] */ + { 3102, 0x0000000000000000ULL, 0xC2B00EC6FCCDA0DAULL }, /* XSUM_XXH64_testdata[6204] */ + { 3102, 0x000000009E3779B1ULL, 0xA914EEEAB7DB9644ULL }, /* XSUM_XXH64_testdata[6205] */ + { 3103, 0x0000000000000000ULL, 0x9D373A8F49EA6F40ULL }, /* XSUM_XXH64_testdata[6206] */ + { 3103, 0x000000009E3779B1ULL, 0x7D6BB7F79B28AF67ULL }, /* XSUM_XXH64_testdata[6207] */ + { 3104, 0x0000000000000000ULL, 0xB80F47F900E36643ULL }, /* XSUM_XXH64_testdata[6208] */ + { 3104, 0x000000009E3779B1ULL, 0x3B5475F93339CF0FULL }, /* XSUM_XXH64_testdata[6209] */ + { 3105, 0x0000000000000000ULL, 0x1200DE0B229F76F6ULL }, /* XSUM_XXH64_testdata[6210] */ + { 3105, 0x000000009E3779B1ULL, 0x16A42CC569B07F59ULL }, /* XSUM_XXH64_testdata[6211] */ + { 3106, 0x0000000000000000ULL, 0x061DB6A12EFB382EULL }, /* XSUM_XXH64_testdata[6212] */ + { 3106, 0x000000009E3779B1ULL, 0xEB5030F049E1954BULL }, /* XSUM_XXH64_testdata[6213] */ + { 3107, 0x0000000000000000ULL, 0x3EA2504ED4C5788BULL }, /* XSUM_XXH64_testdata[6214] */ + { 3107, 0x000000009E3779B1ULL, 0x4CC162BA116601B3ULL }, /* XSUM_XXH64_testdata[6215] */ + { 3108, 0x0000000000000000ULL, 0x9E8AA0E513138E1FULL }, /* XSUM_XXH64_testdata[6216] */ + { 3108, 0x000000009E3779B1ULL, 0x1516F4B6374C5221ULL }, /* XSUM_XXH64_testdata[6217] */ + { 3109, 0x0000000000000000ULL, 0xB8D0A8DFC61AF496ULL }, /* XSUM_XXH64_testdata[6218] */ + { 3109, 0x000000009E3779B1ULL, 0x81839F54918BEAB4ULL }, /* XSUM_XXH64_testdata[6219] */ + { 3110, 0x0000000000000000ULL, 0x47C2B3C13293CC5CULL }, /* XSUM_XXH64_testdata[6220] */ + { 3110, 0x000000009E3779B1ULL, 0x5E218BF944E9562AULL }, /* XSUM_XXH64_testdata[6221] */ + { 3111, 0x0000000000000000ULL, 0xFAA449C87191FB01ULL }, /* XSUM_XXH64_testdata[6222] */ + { 3111, 0x000000009E3779B1ULL, 0xB01E0743DF39CC46ULL }, /* XSUM_XXH64_testdata[6223] */ + { 3112, 0x0000000000000000ULL, 0x98B1A93EC4BA606EULL }, /* XSUM_XXH64_testdata[6224] */ + { 3112, 0x000000009E3779B1ULL, 0x6BED37EA392245A8ULL }, /* XSUM_XXH64_testdata[6225] */ + { 3113, 0x0000000000000000ULL, 0xAD5333D69E184F9CULL }, /* XSUM_XXH64_testdata[6226] */ + { 3113, 0x000000009E3779B1ULL, 0xB0FDFB02E1003797ULL }, /* XSUM_XXH64_testdata[6227] */ + { 3114, 0x0000000000000000ULL, 0xB322867E4DDDB3BAULL }, /* XSUM_XXH64_testdata[6228] */ + { 3114, 0x000000009E3779B1ULL, 0xAE0E757D26148D87ULL }, /* XSUM_XXH64_testdata[6229] */ + { 3115, 0x0000000000000000ULL, 0x62C73537DFC024B3ULL }, /* XSUM_XXH64_testdata[6230] */ + { 3115, 0x000000009E3779B1ULL, 0xE22F8F42ACCF05A7ULL }, /* XSUM_XXH64_testdata[6231] */ + { 3116, 0x0000000000000000ULL, 0x9D6D9B6CB64E2E2AULL }, /* XSUM_XXH64_testdata[6232] */ + { 3116, 0x000000009E3779B1ULL, 0x0A8EB746E6563E72ULL }, /* XSUM_XXH64_testdata[6233] */ + { 3117, 0x0000000000000000ULL, 0x5795C027E58BBD29ULL }, /* XSUM_XXH64_testdata[6234] */ + { 3117, 0x000000009E3779B1ULL, 0x8CAE73BD71E4348DULL }, /* XSUM_XXH64_testdata[6235] */ + { 3118, 0x0000000000000000ULL, 0x011B2709078ABCD6ULL }, /* XSUM_XXH64_testdata[6236] */ + { 3118, 0x000000009E3779B1ULL, 0xF61F4D8D7EA53A1EULL }, /* XSUM_XXH64_testdata[6237] */ + { 3119, 0x0000000000000000ULL, 0xDD1F924B99FB56FBULL }, /* XSUM_XXH64_testdata[6238] */ + { 3119, 0x000000009E3779B1ULL, 0x8F5662E8AA6D1634ULL }, /* XSUM_XXH64_testdata[6239] */ + { 3120, 0x0000000000000000ULL, 0xCBF5E319169C3E95ULL }, /* XSUM_XXH64_testdata[6240] */ + { 3120, 0x000000009E3779B1ULL, 0xAE1B65BF155A0F46ULL }, /* XSUM_XXH64_testdata[6241] */ + { 3121, 0x0000000000000000ULL, 0x425DEC257FBCF04BULL }, /* XSUM_XXH64_testdata[6242] */ + { 3121, 0x000000009E3779B1ULL, 0x5FB3D573A895DAF2ULL }, /* XSUM_XXH64_testdata[6243] */ + { 3122, 0x0000000000000000ULL, 0xADCA5D9969137BE4ULL }, /* XSUM_XXH64_testdata[6244] */ + { 3122, 0x000000009E3779B1ULL, 0xBEF9ED108308B403ULL }, /* XSUM_XXH64_testdata[6245] */ + { 3123, 0x0000000000000000ULL, 0xEDBA0D77E57A64C8ULL }, /* XSUM_XXH64_testdata[6246] */ + { 3123, 0x000000009E3779B1ULL, 0x6BEFCF3885959F75ULL }, /* XSUM_XXH64_testdata[6247] */ + { 3124, 0x0000000000000000ULL, 0x3A5FF1A7C125495BULL }, /* XSUM_XXH64_testdata[6248] */ + { 3124, 0x000000009E3779B1ULL, 0x62D8EAC06605CF29ULL }, /* XSUM_XXH64_testdata[6249] */ + { 3125, 0x0000000000000000ULL, 0x7E744549D9EFB618ULL }, /* XSUM_XXH64_testdata[6250] */ + { 3125, 0x000000009E3779B1ULL, 0x61CB63FDAD288528ULL }, /* XSUM_XXH64_testdata[6251] */ + { 3126, 0x0000000000000000ULL, 0x56DCBF17C822BF9FULL }, /* XSUM_XXH64_testdata[6252] */ + { 3126, 0x000000009E3779B1ULL, 0x43BC6FDEAA202BB1ULL }, /* XSUM_XXH64_testdata[6253] */ + { 3127, 0x0000000000000000ULL, 0xCB67B1E45FCBAA23ULL }, /* XSUM_XXH64_testdata[6254] */ + { 3127, 0x000000009E3779B1ULL, 0xE088D72C68FE2685ULL }, /* XSUM_XXH64_testdata[6255] */ + { 3128, 0x0000000000000000ULL, 0x6C80D556D179EB90ULL }, /* XSUM_XXH64_testdata[6256] */ + { 3128, 0x000000009E3779B1ULL, 0x73118C9C693C41C8ULL }, /* XSUM_XXH64_testdata[6257] */ + { 3129, 0x0000000000000000ULL, 0xE9971B0B0C574512ULL }, /* XSUM_XXH64_testdata[6258] */ + { 3129, 0x000000009E3779B1ULL, 0x38EE6F50142F2BFFULL }, /* XSUM_XXH64_testdata[6259] */ + { 3130, 0x0000000000000000ULL, 0x6D3C98A992999915ULL }, /* XSUM_XXH64_testdata[6260] */ + { 3130, 0x000000009E3779B1ULL, 0xD8E70A78CB307915ULL }, /* XSUM_XXH64_testdata[6261] */ + { 3131, 0x0000000000000000ULL, 0x8DADE8C63464AA58ULL }, /* XSUM_XXH64_testdata[6262] */ + { 3131, 0x000000009E3779B1ULL, 0xA96234E38190D622ULL }, /* XSUM_XXH64_testdata[6263] */ + { 3132, 0x0000000000000000ULL, 0xF2470B27B77B62A4ULL }, /* XSUM_XXH64_testdata[6264] */ + { 3132, 0x000000009E3779B1ULL, 0xE9337E1BB0111A42ULL }, /* XSUM_XXH64_testdata[6265] */ + { 3133, 0x0000000000000000ULL, 0x683555884E773A85ULL }, /* XSUM_XXH64_testdata[6266] */ + { 3133, 0x000000009E3779B1ULL, 0xE671C0AA5D1517D6ULL }, /* XSUM_XXH64_testdata[6267] */ + { 3134, 0x0000000000000000ULL, 0x8EC3382D16C0C1B0ULL }, /* XSUM_XXH64_testdata[6268] */ + { 3134, 0x000000009E3779B1ULL, 0xFBFC2F4375CD9361ULL }, /* XSUM_XXH64_testdata[6269] */ + { 3135, 0x0000000000000000ULL, 0x5A439F66F179D582ULL }, /* XSUM_XXH64_testdata[6270] */ + { 3135, 0x000000009E3779B1ULL, 0x4BA653791BF134DFULL }, /* XSUM_XXH64_testdata[6271] */ + { 3136, 0x0000000000000000ULL, 0x5B683630A1563DE3ULL }, /* XSUM_XXH64_testdata[6272] */ + { 3136, 0x000000009E3779B1ULL, 0xB5799EA19D4C347CULL }, /* XSUM_XXH64_testdata[6273] */ + { 3137, 0x0000000000000000ULL, 0x885B03C5C677F626ULL }, /* XSUM_XXH64_testdata[6274] */ + { 3137, 0x000000009E3779B1ULL, 0xEE307421C7BAC686ULL }, /* XSUM_XXH64_testdata[6275] */ + { 3138, 0x0000000000000000ULL, 0x5C13B061DC32F50AULL }, /* XSUM_XXH64_testdata[6276] */ + { 3138, 0x000000009E3779B1ULL, 0x61AE19E2519657E1ULL }, /* XSUM_XXH64_testdata[6277] */ + { 3139, 0x0000000000000000ULL, 0x7D400106156F9745ULL }, /* XSUM_XXH64_testdata[6278] */ + { 3139, 0x000000009E3779B1ULL, 0x2F0F37675E24D1E7ULL }, /* XSUM_XXH64_testdata[6279] */ + { 3140, 0x0000000000000000ULL, 0xA966A25960D218B7ULL }, /* XSUM_XXH64_testdata[6280] */ + { 3140, 0x000000009E3779B1ULL, 0x38037A9D9524FAA2ULL }, /* XSUM_XXH64_testdata[6281] */ + { 3141, 0x0000000000000000ULL, 0x4AC3BA5E30E880F6ULL }, /* XSUM_XXH64_testdata[6282] */ + { 3141, 0x000000009E3779B1ULL, 0xBFFB987575DC3B06ULL }, /* XSUM_XXH64_testdata[6283] */ + { 3142, 0x0000000000000000ULL, 0x56005D6EA7631CB7ULL }, /* XSUM_XXH64_testdata[6284] */ + { 3142, 0x000000009E3779B1ULL, 0x2F8C1E7E6F988C54ULL }, /* XSUM_XXH64_testdata[6285] */ + { 3143, 0x0000000000000000ULL, 0x0E2C41E9E9EF723EULL }, /* XSUM_XXH64_testdata[6286] */ + { 3143, 0x000000009E3779B1ULL, 0x38EC5DC08C9ACFAAULL }, /* XSUM_XXH64_testdata[6287] */ + { 3144, 0x0000000000000000ULL, 0x369971A9F1C91E87ULL }, /* XSUM_XXH64_testdata[6288] */ + { 3144, 0x000000009E3779B1ULL, 0x4E7627A14D7C2138ULL }, /* XSUM_XXH64_testdata[6289] */ + { 3145, 0x0000000000000000ULL, 0xC3888F0BD7EB9251ULL }, /* XSUM_XXH64_testdata[6290] */ + { 3145, 0x000000009E3779B1ULL, 0x27BFBF7E1C86E599ULL }, /* XSUM_XXH64_testdata[6291] */ + { 3146, 0x0000000000000000ULL, 0x85B6CE11FBF0108CULL }, /* XSUM_XXH64_testdata[6292] */ + { 3146, 0x000000009E3779B1ULL, 0x232E1737EF527768ULL }, /* XSUM_XXH64_testdata[6293] */ + { 3147, 0x0000000000000000ULL, 0x01D7F4F742051E56ULL }, /* XSUM_XXH64_testdata[6294] */ + { 3147, 0x000000009E3779B1ULL, 0x8370C4E4B3AAB21DULL }, /* XSUM_XXH64_testdata[6295] */ + { 3148, 0x0000000000000000ULL, 0x2E35F5ECFE316030ULL }, /* XSUM_XXH64_testdata[6296] */ + { 3148, 0x000000009E3779B1ULL, 0x74C3D151A05A62AFULL }, /* XSUM_XXH64_testdata[6297] */ + { 3149, 0x0000000000000000ULL, 0xABCC8DFC2B4A84FDULL }, /* XSUM_XXH64_testdata[6298] */ + { 3149, 0x000000009E3779B1ULL, 0x5CC944EF852B55F3ULL }, /* XSUM_XXH64_testdata[6299] */ + { 3150, 0x0000000000000000ULL, 0xD7D831361AF6A6B1ULL }, /* XSUM_XXH64_testdata[6300] */ + { 3150, 0x000000009E3779B1ULL, 0x165B476915240C9FULL }, /* XSUM_XXH64_testdata[6301] */ + { 3151, 0x0000000000000000ULL, 0xF5B9A189A2ED10D7ULL }, /* XSUM_XXH64_testdata[6302] */ + { 3151, 0x000000009E3779B1ULL, 0x85F154D15E9E9268ULL }, /* XSUM_XXH64_testdata[6303] */ + { 3152, 0x0000000000000000ULL, 0x01101E6AE3CC156BULL }, /* XSUM_XXH64_testdata[6304] */ + { 3152, 0x000000009E3779B1ULL, 0xE0A1A051AA7F2ED4ULL }, /* XSUM_XXH64_testdata[6305] */ + { 3153, 0x0000000000000000ULL, 0xAFB96A3E32F1992EULL }, /* XSUM_XXH64_testdata[6306] */ + { 3153, 0x000000009E3779B1ULL, 0x2C3E548A44D75F14ULL }, /* XSUM_XXH64_testdata[6307] */ + { 3154, 0x0000000000000000ULL, 0x8DA474766F089D03ULL }, /* XSUM_XXH64_testdata[6308] */ + { 3154, 0x000000009E3779B1ULL, 0xE66781FF6CC8073BULL }, /* XSUM_XXH64_testdata[6309] */ + { 3155, 0x0000000000000000ULL, 0xFCA1B14385126CE0ULL }, /* XSUM_XXH64_testdata[6310] */ + { 3155, 0x000000009E3779B1ULL, 0x50A8E4C374008B37ULL }, /* XSUM_XXH64_testdata[6311] */ + { 3156, 0x0000000000000000ULL, 0x6B1980DE3E8C17B3ULL }, /* XSUM_XXH64_testdata[6312] */ + { 3156, 0x000000009E3779B1ULL, 0x47DF5484F8D22D0FULL }, /* XSUM_XXH64_testdata[6313] */ + { 3157, 0x0000000000000000ULL, 0x998D7FEB267EE547ULL }, /* XSUM_XXH64_testdata[6314] */ + { 3157, 0x000000009E3779B1ULL, 0xF02C62C2AD94FFE8ULL }, /* XSUM_XXH64_testdata[6315] */ + { 3158, 0x0000000000000000ULL, 0xBA9DF9ABFB77CC65ULL }, /* XSUM_XXH64_testdata[6316] */ + { 3158, 0x000000009E3779B1ULL, 0x4C2B8AC747B9F47FULL }, /* XSUM_XXH64_testdata[6317] */ + { 3159, 0x0000000000000000ULL, 0xF6D20F7B9933DC59ULL }, /* XSUM_XXH64_testdata[6318] */ + { 3159, 0x000000009E3779B1ULL, 0x0E25857362A6084AULL }, /* XSUM_XXH64_testdata[6319] */ + { 3160, 0x0000000000000000ULL, 0x260B55E17C61F03AULL }, /* XSUM_XXH64_testdata[6320] */ + { 3160, 0x000000009E3779B1ULL, 0x152F18699CE421BFULL }, /* XSUM_XXH64_testdata[6321] */ + { 3161, 0x0000000000000000ULL, 0x887449DCAE67C09EULL }, /* XSUM_XXH64_testdata[6322] */ + { 3161, 0x000000009E3779B1ULL, 0x004E6D8154EDC62BULL }, /* XSUM_XXH64_testdata[6323] */ + { 3162, 0x0000000000000000ULL, 0xD0943DFD0F28D578ULL }, /* XSUM_XXH64_testdata[6324] */ + { 3162, 0x000000009E3779B1ULL, 0x91101C838C3B198FULL }, /* XSUM_XXH64_testdata[6325] */ + { 3163, 0x0000000000000000ULL, 0x39B7DCA54DC94C64ULL }, /* XSUM_XXH64_testdata[6326] */ + { 3163, 0x000000009E3779B1ULL, 0x709CBAE286EA8E4AULL }, /* XSUM_XXH64_testdata[6327] */ + { 3164, 0x0000000000000000ULL, 0x092E9A9CB49E5AC7ULL }, /* XSUM_XXH64_testdata[6328] */ + { 3164, 0x000000009E3779B1ULL, 0xBB3DDCD7AB631EA6ULL }, /* XSUM_XXH64_testdata[6329] */ + { 3165, 0x0000000000000000ULL, 0xBBA047DFCDAB36FAULL }, /* XSUM_XXH64_testdata[6330] */ + { 3165, 0x000000009E3779B1ULL, 0xA585F5B0504CCF27ULL }, /* XSUM_XXH64_testdata[6331] */ + { 3166, 0x0000000000000000ULL, 0x1F12D81E1C43ED94ULL }, /* XSUM_XXH64_testdata[6332] */ + { 3166, 0x000000009E3779B1ULL, 0x9EE74305EDB9C3D7ULL }, /* XSUM_XXH64_testdata[6333] */ + { 3167, 0x0000000000000000ULL, 0x4005F367369BB8D8ULL }, /* XSUM_XXH64_testdata[6334] */ + { 3167, 0x000000009E3779B1ULL, 0x2DFF1B86299B0CBBULL }, /* XSUM_XXH64_testdata[6335] */ + { 3168, 0x0000000000000000ULL, 0x975A0466798F6CDBULL }, /* XSUM_XXH64_testdata[6336] */ + { 3168, 0x000000009E3779B1ULL, 0x07FB804BDF37BBF5ULL }, /* XSUM_XXH64_testdata[6337] */ + { 3169, 0x0000000000000000ULL, 0x455B0E99427F80A8ULL }, /* XSUM_XXH64_testdata[6338] */ + { 3169, 0x000000009E3779B1ULL, 0x8F1E419365BC174AULL }, /* XSUM_XXH64_testdata[6339] */ + { 3170, 0x0000000000000000ULL, 0x2DA4B6D9D1B34FE4ULL }, /* XSUM_XXH64_testdata[6340] */ + { 3170, 0x000000009E3779B1ULL, 0xE96EC0888A1ED74FULL }, /* XSUM_XXH64_testdata[6341] */ + { 3171, 0x0000000000000000ULL, 0x415C29E9BF8DF391ULL }, /* XSUM_XXH64_testdata[6342] */ + { 3171, 0x000000009E3779B1ULL, 0x4741DA170730164DULL }, /* XSUM_XXH64_testdata[6343] */ + { 3172, 0x0000000000000000ULL, 0xED982FEA11A9033DULL }, /* XSUM_XXH64_testdata[6344] */ + { 3172, 0x000000009E3779B1ULL, 0xD70E5E40EE6208E0ULL }, /* XSUM_XXH64_testdata[6345] */ + { 3173, 0x0000000000000000ULL, 0xE2C1201A62037128ULL }, /* XSUM_XXH64_testdata[6346] */ + { 3173, 0x000000009E3779B1ULL, 0xC2E8618D89171F46ULL }, /* XSUM_XXH64_testdata[6347] */ + { 3174, 0x0000000000000000ULL, 0x22435ED7AF45D633ULL }, /* XSUM_XXH64_testdata[6348] */ + { 3174, 0x000000009E3779B1ULL, 0x4B55161A5F5A429CULL }, /* XSUM_XXH64_testdata[6349] */ + { 3175, 0x0000000000000000ULL, 0x8E460E12F3F36051ULL }, /* XSUM_XXH64_testdata[6350] */ + { 3175, 0x000000009E3779B1ULL, 0xEBD8A192C86B208DULL }, /* XSUM_XXH64_testdata[6351] */ + { 3176, 0x0000000000000000ULL, 0x075CE6BAEA411AF1ULL }, /* XSUM_XXH64_testdata[6352] */ + { 3176, 0x000000009E3779B1ULL, 0x99520D56353AF0F5ULL }, /* XSUM_XXH64_testdata[6353] */ + { 3177, 0x0000000000000000ULL, 0xA2E9F8D1CBA4C135ULL }, /* XSUM_XXH64_testdata[6354] */ + { 3177, 0x000000009E3779B1ULL, 0x4CD8E1A89B5A2353ULL }, /* XSUM_XXH64_testdata[6355] */ + { 3178, 0x0000000000000000ULL, 0x5928B2BA76C78F7AULL }, /* XSUM_XXH64_testdata[6356] */ + { 3178, 0x000000009E3779B1ULL, 0xBE7257D800DBCD93ULL }, /* XSUM_XXH64_testdata[6357] */ + { 3179, 0x0000000000000000ULL, 0xF821D99BA3837FBFULL }, /* XSUM_XXH64_testdata[6358] */ + { 3179, 0x000000009E3779B1ULL, 0x8973B57DD2167373ULL }, /* XSUM_XXH64_testdata[6359] */ + { 3180, 0x0000000000000000ULL, 0x250ACD969ABC8BA1ULL }, /* XSUM_XXH64_testdata[6360] */ + { 3180, 0x000000009E3779B1ULL, 0xE05FCCE66F019CA7ULL }, /* XSUM_XXH64_testdata[6361] */ + { 3181, 0x0000000000000000ULL, 0x20EE24791C5A58ACULL }, /* XSUM_XXH64_testdata[6362] */ + { 3181, 0x000000009E3779B1ULL, 0xBACF461AC5A55023ULL }, /* XSUM_XXH64_testdata[6363] */ + { 3182, 0x0000000000000000ULL, 0x4AFEC0B0C0B2BF78ULL }, /* XSUM_XXH64_testdata[6364] */ + { 3182, 0x000000009E3779B1ULL, 0x2784F1B6FB52FC00ULL }, /* XSUM_XXH64_testdata[6365] */ + { 3183, 0x0000000000000000ULL, 0x02E8EAFD126B541CULL }, /* XSUM_XXH64_testdata[6366] */ + { 3183, 0x000000009E3779B1ULL, 0xFFD776F4CA2D8E6FULL }, /* XSUM_XXH64_testdata[6367] */ + { 3184, 0x0000000000000000ULL, 0x53E0B30057387802ULL }, /* XSUM_XXH64_testdata[6368] */ + { 3184, 0x000000009E3779B1ULL, 0xD92CC489B8FA90E8ULL }, /* XSUM_XXH64_testdata[6369] */ + { 3185, 0x0000000000000000ULL, 0x8456858BCF263173ULL }, /* XSUM_XXH64_testdata[6370] */ + { 3185, 0x000000009E3779B1ULL, 0xD30CD067692D0B50ULL }, /* XSUM_XXH64_testdata[6371] */ + { 3186, 0x0000000000000000ULL, 0x144EC031C70DCB54ULL }, /* XSUM_XXH64_testdata[6372] */ + { 3186, 0x000000009E3779B1ULL, 0xD4797FAC5C2DACF1ULL }, /* XSUM_XXH64_testdata[6373] */ + { 3187, 0x0000000000000000ULL, 0x98A951106B9DE390ULL }, /* XSUM_XXH64_testdata[6374] */ + { 3187, 0x000000009E3779B1ULL, 0x463F750C20AC75F8ULL }, /* XSUM_XXH64_testdata[6375] */ + { 3188, 0x0000000000000000ULL, 0x3F490ED8C1762467ULL }, /* XSUM_XXH64_testdata[6376] */ + { 3188, 0x000000009E3779B1ULL, 0x988BB66C13E51D19ULL }, /* XSUM_XXH64_testdata[6377] */ + { 3189, 0x0000000000000000ULL, 0x75523F83F86DBE86ULL }, /* XSUM_XXH64_testdata[6378] */ + { 3189, 0x000000009E3779B1ULL, 0x832FC3DB0C00AB7EULL }, /* XSUM_XXH64_testdata[6379] */ + { 3190, 0x0000000000000000ULL, 0x4FECD0C72C3E4716ULL }, /* XSUM_XXH64_testdata[6380] */ + { 3190, 0x000000009E3779B1ULL, 0xEE7BCFA74566A76BULL }, /* XSUM_XXH64_testdata[6381] */ + { 3191, 0x0000000000000000ULL, 0x3A1F21FF9209978DULL }, /* XSUM_XXH64_testdata[6382] */ + { 3191, 0x000000009E3779B1ULL, 0x7EA7A378AF38632AULL }, /* XSUM_XXH64_testdata[6383] */ + { 3192, 0x0000000000000000ULL, 0xDD583859F0AFF667ULL }, /* XSUM_XXH64_testdata[6384] */ + { 3192, 0x000000009E3779B1ULL, 0x57E627DCB8B81ED7ULL }, /* XSUM_XXH64_testdata[6385] */ + { 3193, 0x0000000000000000ULL, 0x19F6F29CBCD61FC5ULL }, /* XSUM_XXH64_testdata[6386] */ + { 3193, 0x000000009E3779B1ULL, 0xF72D092940F33FC5ULL }, /* XSUM_XXH64_testdata[6387] */ + { 3194, 0x0000000000000000ULL, 0x9346CDB5BD2B2F51ULL }, /* XSUM_XXH64_testdata[6388] */ + { 3194, 0x000000009E3779B1ULL, 0x8F4473E1660E6521ULL }, /* XSUM_XXH64_testdata[6389] */ + { 3195, 0x0000000000000000ULL, 0xC1AFA3511D44A21FULL }, /* XSUM_XXH64_testdata[6390] */ + { 3195, 0x000000009E3779B1ULL, 0x9B1B427318C12940ULL }, /* XSUM_XXH64_testdata[6391] */ + { 3196, 0x0000000000000000ULL, 0x620BBD0E75803042ULL }, /* XSUM_XXH64_testdata[6392] */ + { 3196, 0x000000009E3779B1ULL, 0x93AA5F46FAED5333ULL }, /* XSUM_XXH64_testdata[6393] */ + { 3197, 0x0000000000000000ULL, 0xD02C6A69BC64CA6FULL }, /* XSUM_XXH64_testdata[6394] */ + { 3197, 0x000000009E3779B1ULL, 0x2CD8E833B90DAC75ULL }, /* XSUM_XXH64_testdata[6395] */ + { 3198, 0x0000000000000000ULL, 0x86871F6C73146396ULL }, /* XSUM_XXH64_testdata[6396] */ + { 3198, 0x000000009E3779B1ULL, 0xE4345057635E8BA4ULL }, /* XSUM_XXH64_testdata[6397] */ + { 3199, 0x0000000000000000ULL, 0x375D99F419844280ULL }, /* XSUM_XXH64_testdata[6398] */ + { 3199, 0x000000009E3779B1ULL, 0x8D480FEDDCDC47D8ULL }, /* XSUM_XXH64_testdata[6399] */ + { 3200, 0x0000000000000000ULL, 0xE0CBCA0A52536870ULL }, /* XSUM_XXH64_testdata[6400] */ + { 3200, 0x000000009E3779B1ULL, 0x217F1EC828E97854ULL }, /* XSUM_XXH64_testdata[6401] */ + { 3201, 0x0000000000000000ULL, 0xE97FB9081A34F05EULL }, /* XSUM_XXH64_testdata[6402] */ + { 3201, 0x000000009E3779B1ULL, 0xF2B5EF77EFEE2CB6ULL }, /* XSUM_XXH64_testdata[6403] */ + { 3202, 0x0000000000000000ULL, 0x4A4E5C1390D1A0ADULL }, /* XSUM_XXH64_testdata[6404] */ + { 3202, 0x000000009E3779B1ULL, 0x2C3DCF95AEABC674ULL }, /* XSUM_XXH64_testdata[6405] */ + { 3203, 0x0000000000000000ULL, 0xAB1DC1335AB75943ULL }, /* XSUM_XXH64_testdata[6406] */ + { 3203, 0x000000009E3779B1ULL, 0x1484E667BB8E615AULL }, /* XSUM_XXH64_testdata[6407] */ + { 3204, 0x0000000000000000ULL, 0xA1EF2223FC53ADC5ULL }, /* XSUM_XXH64_testdata[6408] */ + { 3204, 0x000000009E3779B1ULL, 0xF9AF56D1EA05CB3CULL }, /* XSUM_XXH64_testdata[6409] */ + { 3205, 0x0000000000000000ULL, 0x91C006FFDFA12649ULL }, /* XSUM_XXH64_testdata[6410] */ + { 3205, 0x000000009E3779B1ULL, 0xE77F0A78EC402716ULL }, /* XSUM_XXH64_testdata[6411] */ + { 3206, 0x0000000000000000ULL, 0x5E4ADCC47100F4E0ULL }, /* XSUM_XXH64_testdata[6412] */ + { 3206, 0x000000009E3779B1ULL, 0x7E767412FC47D6A2ULL }, /* XSUM_XXH64_testdata[6413] */ + { 3207, 0x0000000000000000ULL, 0x73065EFBE25BB1B1ULL }, /* XSUM_XXH64_testdata[6414] */ + { 3207, 0x000000009E3779B1ULL, 0x0AB2355124618612ULL }, /* XSUM_XXH64_testdata[6415] */ + { 3208, 0x0000000000000000ULL, 0x9EAA3EC892E44D9EULL }, /* XSUM_XXH64_testdata[6416] */ + { 3208, 0x000000009E3779B1ULL, 0x4CC9BECD0A235635ULL }, /* XSUM_XXH64_testdata[6417] */ + { 3209, 0x0000000000000000ULL, 0xF4CC10DEFE26D43FULL }, /* XSUM_XXH64_testdata[6418] */ + { 3209, 0x000000009E3779B1ULL, 0xC0A38A5270CE3DF8ULL }, /* XSUM_XXH64_testdata[6419] */ + { 3210, 0x0000000000000000ULL, 0x1E2DC5BC55A82CAAULL }, /* XSUM_XXH64_testdata[6420] */ + { 3210, 0x000000009E3779B1ULL, 0x3EA5EEBB7C10B7D0ULL }, /* XSUM_XXH64_testdata[6421] */ + { 3211, 0x0000000000000000ULL, 0xF9DC4EFC76F9AD9EULL }, /* XSUM_XXH64_testdata[6422] */ + { 3211, 0x000000009E3779B1ULL, 0x9B0609A4E614EE5EULL }, /* XSUM_XXH64_testdata[6423] */ + { 3212, 0x0000000000000000ULL, 0x3747EC71682F29C5ULL }, /* XSUM_XXH64_testdata[6424] */ + { 3212, 0x000000009E3779B1ULL, 0xE9DEBF51FA2AB48AULL }, /* XSUM_XXH64_testdata[6425] */ + { 3213, 0x0000000000000000ULL, 0x711CF1948F4D114FULL }, /* XSUM_XXH64_testdata[6426] */ + { 3213, 0x000000009E3779B1ULL, 0xAF18DB718264D5A5ULL }, /* XSUM_XXH64_testdata[6427] */ + { 3214, 0x0000000000000000ULL, 0x6ADF4EA7153305E2ULL }, /* XSUM_XXH64_testdata[6428] */ + { 3214, 0x000000009E3779B1ULL, 0xB3C55C7B30D680BAULL }, /* XSUM_XXH64_testdata[6429] */ + { 3215, 0x0000000000000000ULL, 0x870BD9691AB4BC0BULL }, /* XSUM_XXH64_testdata[6430] */ + { 3215, 0x000000009E3779B1ULL, 0xF7AB1CA99FAAE8C0ULL }, /* XSUM_XXH64_testdata[6431] */ + { 3216, 0x0000000000000000ULL, 0x064CBA75062C1059ULL }, /* XSUM_XXH64_testdata[6432] */ + { 3216, 0x000000009E3779B1ULL, 0x98BCCE5522245123ULL }, /* XSUM_XXH64_testdata[6433] */ + { 3217, 0x0000000000000000ULL, 0xF638255018ED9271ULL }, /* XSUM_XXH64_testdata[6434] */ + { 3217, 0x000000009E3779B1ULL, 0x112641563CDEB48DULL }, /* XSUM_XXH64_testdata[6435] */ + { 3218, 0x0000000000000000ULL, 0x7A5DFD96186E9787ULL }, /* XSUM_XXH64_testdata[6436] */ + { 3218, 0x000000009E3779B1ULL, 0xB38B7D7667E12F35ULL }, /* XSUM_XXH64_testdata[6437] */ + { 3219, 0x0000000000000000ULL, 0x3551F5E982AC71A0ULL }, /* XSUM_XXH64_testdata[6438] */ + { 3219, 0x000000009E3779B1ULL, 0x3AE4453B2D158C91ULL }, /* XSUM_XXH64_testdata[6439] */ + { 3220, 0x0000000000000000ULL, 0xCF21F94C514F26E1ULL }, /* XSUM_XXH64_testdata[6440] */ + { 3220, 0x000000009E3779B1ULL, 0x6F53AFC39ACF5AA6ULL }, /* XSUM_XXH64_testdata[6441] */ + { 3221, 0x0000000000000000ULL, 0x428D532C4475F882ULL }, /* XSUM_XXH64_testdata[6442] */ + { 3221, 0x000000009E3779B1ULL, 0x5B8ED9F8D6A0DF08ULL }, /* XSUM_XXH64_testdata[6443] */ + { 3222, 0x0000000000000000ULL, 0x6EE80E55D7345E75ULL }, /* XSUM_XXH64_testdata[6444] */ + { 3222, 0x000000009E3779B1ULL, 0xEC8384AE0C0796B0ULL }, /* XSUM_XXH64_testdata[6445] */ + { 3223, 0x0000000000000000ULL, 0x00F6DF3E8527D24EULL }, /* XSUM_XXH64_testdata[6446] */ + { 3223, 0x000000009E3779B1ULL, 0x400E9D36EB441B49ULL }, /* XSUM_XXH64_testdata[6447] */ + { 3224, 0x0000000000000000ULL, 0xE2CF4F4A902D40E0ULL }, /* XSUM_XXH64_testdata[6448] */ + { 3224, 0x000000009E3779B1ULL, 0xCB10674480B4B240ULL }, /* XSUM_XXH64_testdata[6449] */ + { 3225, 0x0000000000000000ULL, 0x66071396FC650921ULL }, /* XSUM_XXH64_testdata[6450] */ + { 3225, 0x000000009E3779B1ULL, 0xBE9502AC99CCB62AULL }, /* XSUM_XXH64_testdata[6451] */ + { 3226, 0x0000000000000000ULL, 0x0FCCF06321540D98ULL }, /* XSUM_XXH64_testdata[6452] */ + { 3226, 0x000000009E3779B1ULL, 0x5B89D702BC08173EULL }, /* XSUM_XXH64_testdata[6453] */ + { 3227, 0x0000000000000000ULL, 0x7AD06C8367E1548FULL }, /* XSUM_XXH64_testdata[6454] */ + { 3227, 0x000000009E3779B1ULL, 0x5456FC2A428DDE04ULL }, /* XSUM_XXH64_testdata[6455] */ + { 3228, 0x0000000000000000ULL, 0x1BFF2226AC299D1CULL }, /* XSUM_XXH64_testdata[6456] */ + { 3228, 0x000000009E3779B1ULL, 0x99DCD348916EE2A9ULL }, /* XSUM_XXH64_testdata[6457] */ + { 3229, 0x0000000000000000ULL, 0x2D7669E223B49279ULL }, /* XSUM_XXH64_testdata[6458] */ + { 3229, 0x000000009E3779B1ULL, 0xF85A58AF8B41745DULL }, /* XSUM_XXH64_testdata[6459] */ + { 3230, 0x0000000000000000ULL, 0x4350485F791B4C78ULL }, /* XSUM_XXH64_testdata[6460] */ + { 3230, 0x000000009E3779B1ULL, 0xF0F6E0A07D10B16BULL }, /* XSUM_XXH64_testdata[6461] */ + { 3231, 0x0000000000000000ULL, 0x476E7706A03E95FFULL }, /* XSUM_XXH64_testdata[6462] */ + { 3231, 0x000000009E3779B1ULL, 0xC8CB2664C515DEC6ULL }, /* XSUM_XXH64_testdata[6463] */ + { 3232, 0x0000000000000000ULL, 0x7EC36F2D704F701FULL }, /* XSUM_XXH64_testdata[6464] */ + { 3232, 0x000000009E3779B1ULL, 0x99F67FC49C0980CDULL }, /* XSUM_XXH64_testdata[6465] */ + { 3233, 0x0000000000000000ULL, 0x8935AC8E1CB2AD3AULL }, /* XSUM_XXH64_testdata[6466] */ + { 3233, 0x000000009E3779B1ULL, 0x642C8770655F6560ULL }, /* XSUM_XXH64_testdata[6467] */ + { 3234, 0x0000000000000000ULL, 0x2CA82EF664EFA7CFULL }, /* XSUM_XXH64_testdata[6468] */ + { 3234, 0x000000009E3779B1ULL, 0x48530305E6507035ULL }, /* XSUM_XXH64_testdata[6469] */ + { 3235, 0x0000000000000000ULL, 0x8551B264AE84B3D5ULL }, /* XSUM_XXH64_testdata[6470] */ + { 3235, 0x000000009E3779B1ULL, 0x82AA2F6B8C63A2A0ULL }, /* XSUM_XXH64_testdata[6471] */ + { 3236, 0x0000000000000000ULL, 0x7FB0C87377C67B80ULL }, /* XSUM_XXH64_testdata[6472] */ + { 3236, 0x000000009E3779B1ULL, 0x738F88AA927297C9ULL }, /* XSUM_XXH64_testdata[6473] */ + { 3237, 0x0000000000000000ULL, 0x433305F7CD36C56FULL }, /* XSUM_XXH64_testdata[6474] */ + { 3237, 0x000000009E3779B1ULL, 0xBE07EF20BC923E79ULL }, /* XSUM_XXH64_testdata[6475] */ + { 3238, 0x0000000000000000ULL, 0x30656A4CBB55278FULL }, /* XSUM_XXH64_testdata[6476] */ + { 3238, 0x000000009E3779B1ULL, 0x8DF2FFDCA3860F0CULL }, /* XSUM_XXH64_testdata[6477] */ + { 3239, 0x0000000000000000ULL, 0xF22134607E8DAE65ULL }, /* XSUM_XXH64_testdata[6478] */ + { 3239, 0x000000009E3779B1ULL, 0x0FAEEE1346B58FA3ULL }, /* XSUM_XXH64_testdata[6479] */ + { 3240, 0x0000000000000000ULL, 0xB47AA3B7D8FF0B74ULL }, /* XSUM_XXH64_testdata[6480] */ + { 3240, 0x000000009E3779B1ULL, 0x880B20CBC92AB7DCULL }, /* XSUM_XXH64_testdata[6481] */ + { 3241, 0x0000000000000000ULL, 0x7DF5CAE541E8C54FULL }, /* XSUM_XXH64_testdata[6482] */ + { 3241, 0x000000009E3779B1ULL, 0xE5B78D4CDC79D758ULL }, /* XSUM_XXH64_testdata[6483] */ + { 3242, 0x0000000000000000ULL, 0x3139481AB3D50A94ULL }, /* XSUM_XXH64_testdata[6484] */ + { 3242, 0x000000009E3779B1ULL, 0xA1283366009D866EULL }, /* XSUM_XXH64_testdata[6485] */ + { 3243, 0x0000000000000000ULL, 0x247E9925BCAC1D74ULL }, /* XSUM_XXH64_testdata[6486] */ + { 3243, 0x000000009E3779B1ULL, 0x6A2A54E6CCE14669ULL }, /* XSUM_XXH64_testdata[6487] */ + { 3244, 0x0000000000000000ULL, 0x9031722355C66B90ULL }, /* XSUM_XXH64_testdata[6488] */ + { 3244, 0x000000009E3779B1ULL, 0x1DE17031419FB764ULL }, /* XSUM_XXH64_testdata[6489] */ + { 3245, 0x0000000000000000ULL, 0x5235D947018B203AULL }, /* XSUM_XXH64_testdata[6490] */ + { 3245, 0x000000009E3779B1ULL, 0x94BEE2ED38E858E6ULL }, /* XSUM_XXH64_testdata[6491] */ + { 3246, 0x0000000000000000ULL, 0x779C5AB5C945411DULL }, /* XSUM_XXH64_testdata[6492] */ + { 3246, 0x000000009E3779B1ULL, 0x45A7DF84A8FD3248ULL }, /* XSUM_XXH64_testdata[6493] */ + { 3247, 0x0000000000000000ULL, 0xC4BDA5A8FAE0666EULL }, /* XSUM_XXH64_testdata[6494] */ + { 3247, 0x000000009E3779B1ULL, 0xAEADC2DFC8235746ULL }, /* XSUM_XXH64_testdata[6495] */ + { 3248, 0x0000000000000000ULL, 0x5304D05DDEA300F5ULL }, /* XSUM_XXH64_testdata[6496] */ + { 3248, 0x000000009E3779B1ULL, 0x88B1008717F0B41FULL }, /* XSUM_XXH64_testdata[6497] */ + { 3249, 0x0000000000000000ULL, 0xED11EBEFC2D9EDDBULL }, /* XSUM_XXH64_testdata[6498] */ + { 3249, 0x000000009E3779B1ULL, 0xAA18358C0C95E321ULL }, /* XSUM_XXH64_testdata[6499] */ + { 3250, 0x0000000000000000ULL, 0x636EE6D9306438B3ULL }, /* XSUM_XXH64_testdata[6500] */ + { 3250, 0x000000009E3779B1ULL, 0xF8FDD325E12A8372ULL }, /* XSUM_XXH64_testdata[6501] */ + { 3251, 0x0000000000000000ULL, 0x1BD2B12643ABAD80ULL }, /* XSUM_XXH64_testdata[6502] */ + { 3251, 0x000000009E3779B1ULL, 0xB7B3515131754B6BULL }, /* XSUM_XXH64_testdata[6503] */ + { 3252, 0x0000000000000000ULL, 0x2E90B07B2DDBD29AULL }, /* XSUM_XXH64_testdata[6504] */ + { 3252, 0x000000009E3779B1ULL, 0xB594DCD05A3982E2ULL }, /* XSUM_XXH64_testdata[6505] */ + { 3253, 0x0000000000000000ULL, 0x87296063C0C7055CULL }, /* XSUM_XXH64_testdata[6506] */ + { 3253, 0x000000009E3779B1ULL, 0xD346D5326F523E86ULL }, /* XSUM_XXH64_testdata[6507] */ + { 3254, 0x0000000000000000ULL, 0x99A1C8393628EDC7ULL }, /* XSUM_XXH64_testdata[6508] */ + { 3254, 0x000000009E3779B1ULL, 0x3132FD0A559A713DULL }, /* XSUM_XXH64_testdata[6509] */ + { 3255, 0x0000000000000000ULL, 0x17E102907CBE93DDULL }, /* XSUM_XXH64_testdata[6510] */ + { 3255, 0x000000009E3779B1ULL, 0x7642BB016DF35875ULL }, /* XSUM_XXH64_testdata[6511] */ + { 3256, 0x0000000000000000ULL, 0x69D67C8A6CE4E3EDULL }, /* XSUM_XXH64_testdata[6512] */ + { 3256, 0x000000009E3779B1ULL, 0x7FA66CCCBED38E6AULL }, /* XSUM_XXH64_testdata[6513] */ + { 3257, 0x0000000000000000ULL, 0xC3EDF2F679EA0A43ULL }, /* XSUM_XXH64_testdata[6514] */ + { 3257, 0x000000009E3779B1ULL, 0x10BA8CFB91BE0999ULL }, /* XSUM_XXH64_testdata[6515] */ + { 3258, 0x0000000000000000ULL, 0x0B50FB381759AEDEULL }, /* XSUM_XXH64_testdata[6516] */ + { 3258, 0x000000009E3779B1ULL, 0x3FF90173896F368DULL }, /* XSUM_XXH64_testdata[6517] */ + { 3259, 0x0000000000000000ULL, 0x905240DA50EDB004ULL }, /* XSUM_XXH64_testdata[6518] */ + { 3259, 0x000000009E3779B1ULL, 0xFD8CEB01ACE30553ULL }, /* XSUM_XXH64_testdata[6519] */ + { 3260, 0x0000000000000000ULL, 0x207363776314F104ULL }, /* XSUM_XXH64_testdata[6520] */ + { 3260, 0x000000009E3779B1ULL, 0x67442103D458212EULL }, /* XSUM_XXH64_testdata[6521] */ + { 3261, 0x0000000000000000ULL, 0xE96F33D8473F1481ULL }, /* XSUM_XXH64_testdata[6522] */ + { 3261, 0x000000009E3779B1ULL, 0x0878957EE5C20FFCULL }, /* XSUM_XXH64_testdata[6523] */ + { 3262, 0x0000000000000000ULL, 0x7BAEABF33DD99F5BULL }, /* XSUM_XXH64_testdata[6524] */ + { 3262, 0x000000009E3779B1ULL, 0x59B33100E737EE9EULL }, /* XSUM_XXH64_testdata[6525] */ + { 3263, 0x0000000000000000ULL, 0x1C77E95F0EA6EFBFULL }, /* XSUM_XXH64_testdata[6526] */ + { 3263, 0x000000009E3779B1ULL, 0x12D0B4B4EBAD9AB4ULL }, /* XSUM_XXH64_testdata[6527] */ + { 3264, 0x0000000000000000ULL, 0x3BA865D469BBF635ULL }, /* XSUM_XXH64_testdata[6528] */ + { 3264, 0x000000009E3779B1ULL, 0x12ACC8220FCDB48FULL }, /* XSUM_XXH64_testdata[6529] */ + { 3265, 0x0000000000000000ULL, 0x5E090C280875A447ULL }, /* XSUM_XXH64_testdata[6530] */ + { 3265, 0x000000009E3779B1ULL, 0xA5B398217C1E3085ULL }, /* XSUM_XXH64_testdata[6531] */ + { 3266, 0x0000000000000000ULL, 0x5B179D9379588995ULL }, /* XSUM_XXH64_testdata[6532] */ + { 3266, 0x000000009E3779B1ULL, 0x4B9199C898393895ULL }, /* XSUM_XXH64_testdata[6533] */ + { 3267, 0x0000000000000000ULL, 0xCCBBC80D6868E4EBULL }, /* XSUM_XXH64_testdata[6534] */ + { 3267, 0x000000009E3779B1ULL, 0x99ABF4FCCD6BD1BEULL }, /* XSUM_XXH64_testdata[6535] */ + { 3268, 0x0000000000000000ULL, 0x063A1936C60C28E8ULL }, /* XSUM_XXH64_testdata[6536] */ + { 3268, 0x000000009E3779B1ULL, 0xAA4C849E33DD926EULL }, /* XSUM_XXH64_testdata[6537] */ + { 3269, 0x0000000000000000ULL, 0x3FE9EB0BDB571405ULL }, /* XSUM_XXH64_testdata[6538] */ + { 3269, 0x000000009E3779B1ULL, 0x4031F97E083D2AD3ULL }, /* XSUM_XXH64_testdata[6539] */ + { 3270, 0x0000000000000000ULL, 0xA8E2323166B4977DULL }, /* XSUM_XXH64_testdata[6540] */ + { 3270, 0x000000009E3779B1ULL, 0xE3DD0E61FA29FD57ULL }, /* XSUM_XXH64_testdata[6541] */ + { 3271, 0x0000000000000000ULL, 0xE8708952573DBC9AULL }, /* XSUM_XXH64_testdata[6542] */ + { 3271, 0x000000009E3779B1ULL, 0x70BDCF6A0A1D8AC5ULL }, /* XSUM_XXH64_testdata[6543] */ + { 3272, 0x0000000000000000ULL, 0xD9BF8A25EE08F32DULL }, /* XSUM_XXH64_testdata[6544] */ + { 3272, 0x000000009E3779B1ULL, 0xC7FD7D7B3D4EC92AULL }, /* XSUM_XXH64_testdata[6545] */ + { 3273, 0x0000000000000000ULL, 0x22AE6FD0F2EC0CD2ULL }, /* XSUM_XXH64_testdata[6546] */ + { 3273, 0x000000009E3779B1ULL, 0xA03E39B776AC4F94ULL }, /* XSUM_XXH64_testdata[6547] */ + { 3274, 0x0000000000000000ULL, 0x702D000812A5247DULL }, /* XSUM_XXH64_testdata[6548] */ + { 3274, 0x000000009E3779B1ULL, 0x6A5FE1E64310D98EULL }, /* XSUM_XXH64_testdata[6549] */ + { 3275, 0x0000000000000000ULL, 0xD03E4FD07C387E9CULL }, /* XSUM_XXH64_testdata[6550] */ + { 3275, 0x000000009E3779B1ULL, 0x43E7EC29BB7ADDD1ULL }, /* XSUM_XXH64_testdata[6551] */ + { 3276, 0x0000000000000000ULL, 0x7B0C236B953D1AE8ULL }, /* XSUM_XXH64_testdata[6552] */ + { 3276, 0x000000009E3779B1ULL, 0x800E954EF8041EFEULL }, /* XSUM_XXH64_testdata[6553] */ + { 3277, 0x0000000000000000ULL, 0x9BFC5DE4C8C53D3CULL }, /* XSUM_XXH64_testdata[6554] */ + { 3277, 0x000000009E3779B1ULL, 0x5D7FD251302E05D2ULL }, /* XSUM_XXH64_testdata[6555] */ + { 3278, 0x0000000000000000ULL, 0x47853482464F6FD0ULL }, /* XSUM_XXH64_testdata[6556] */ + { 3278, 0x000000009E3779B1ULL, 0xA8FA5899392321BBULL }, /* XSUM_XXH64_testdata[6557] */ + { 3279, 0x0000000000000000ULL, 0x265DC7775594F0DFULL }, /* XSUM_XXH64_testdata[6558] */ + { 3279, 0x000000009E3779B1ULL, 0x95395D304C1BD7DCULL }, /* XSUM_XXH64_testdata[6559] */ + { 3280, 0x0000000000000000ULL, 0x000A39EDE914E35BULL }, /* XSUM_XXH64_testdata[6560] */ + { 3280, 0x000000009E3779B1ULL, 0xA71B763944C876D5ULL }, /* XSUM_XXH64_testdata[6561] */ + { 3281, 0x0000000000000000ULL, 0xDE8C3F1D5FEEDE96ULL }, /* XSUM_XXH64_testdata[6562] */ + { 3281, 0x000000009E3779B1ULL, 0x5F1BAFDC88CCE2A3ULL }, /* XSUM_XXH64_testdata[6563] */ + { 3282, 0x0000000000000000ULL, 0x85605BE23C01DEF6ULL }, /* XSUM_XXH64_testdata[6564] */ + { 3282, 0x000000009E3779B1ULL, 0x359D7F0F5DE017AAULL }, /* XSUM_XXH64_testdata[6565] */ + { 3283, 0x0000000000000000ULL, 0xE4E741C950DF82A6ULL }, /* XSUM_XXH64_testdata[6566] */ + { 3283, 0x000000009E3779B1ULL, 0xEC6115159CFA3163ULL }, /* XSUM_XXH64_testdata[6567] */ + { 3284, 0x0000000000000000ULL, 0xA788B04FC8732046ULL }, /* XSUM_XXH64_testdata[6568] */ + { 3284, 0x000000009E3779B1ULL, 0x8827A71F6B396D78ULL }, /* XSUM_XXH64_testdata[6569] */ + { 3285, 0x0000000000000000ULL, 0xEA122D7047D41305ULL }, /* XSUM_XXH64_testdata[6570] */ + { 3285, 0x000000009E3779B1ULL, 0x995DB93FEE2AF5F0ULL }, /* XSUM_XXH64_testdata[6571] */ + { 3286, 0x0000000000000000ULL, 0x4134CBCE5D8DA221ULL }, /* XSUM_XXH64_testdata[6572] */ + { 3286, 0x000000009E3779B1ULL, 0x9CDE5B8518A90B39ULL }, /* XSUM_XXH64_testdata[6573] */ + { 3287, 0x0000000000000000ULL, 0x44BC1A55CB82E44EULL }, /* XSUM_XXH64_testdata[6574] */ + { 3287, 0x000000009E3779B1ULL, 0x8ED26E68A5E37466ULL }, /* XSUM_XXH64_testdata[6575] */ + { 3288, 0x0000000000000000ULL, 0x69CAECDEB9900C07ULL }, /* XSUM_XXH64_testdata[6576] */ + { 3288, 0x000000009E3779B1ULL, 0xC770A6347377DFACULL }, /* XSUM_XXH64_testdata[6577] */ + { 3289, 0x0000000000000000ULL, 0xC8CA57DD95D9CDBDULL }, /* XSUM_XXH64_testdata[6578] */ + { 3289, 0x000000009E3779B1ULL, 0xC8B0C0878989784CULL }, /* XSUM_XXH64_testdata[6579] */ + { 3290, 0x0000000000000000ULL, 0x367C53C330335FEBULL }, /* XSUM_XXH64_testdata[6580] */ + { 3290, 0x000000009E3779B1ULL, 0x64F0F37350EA76A8ULL }, /* XSUM_XXH64_testdata[6581] */ + { 3291, 0x0000000000000000ULL, 0x0AFCE12F22B424DEULL }, /* XSUM_XXH64_testdata[6582] */ + { 3291, 0x000000009E3779B1ULL, 0x04DBC72F67458FE0ULL }, /* XSUM_XXH64_testdata[6583] */ + { 3292, 0x0000000000000000ULL, 0xF64A7A867A98E9F9ULL }, /* XSUM_XXH64_testdata[6584] */ + { 3292, 0x000000009E3779B1ULL, 0x97C531798FD3F227ULL }, /* XSUM_XXH64_testdata[6585] */ + { 3293, 0x0000000000000000ULL, 0x001823D97F29828CULL }, /* XSUM_XXH64_testdata[6586] */ + { 3293, 0x000000009E3779B1ULL, 0x6320E45E4ACD6374ULL }, /* XSUM_XXH64_testdata[6587] */ + { 3294, 0x0000000000000000ULL, 0x56F5093D4E9ADDCCULL }, /* XSUM_XXH64_testdata[6588] */ + { 3294, 0x000000009E3779B1ULL, 0x4F7370FEF270D861ULL }, /* XSUM_XXH64_testdata[6589] */ + { 3295, 0x0000000000000000ULL, 0xDEFB12178556B9D0ULL }, /* XSUM_XXH64_testdata[6590] */ + { 3295, 0x000000009E3779B1ULL, 0xE0872B428B3F3511ULL }, /* XSUM_XXH64_testdata[6591] */ + { 3296, 0x0000000000000000ULL, 0x71950EE24ADC08A2ULL }, /* XSUM_XXH64_testdata[6592] */ + { 3296, 0x000000009E3779B1ULL, 0x9878811F6E956E51ULL }, /* XSUM_XXH64_testdata[6593] */ + { 3297, 0x0000000000000000ULL, 0x3067897063688C2FULL }, /* XSUM_XXH64_testdata[6594] */ + { 3297, 0x000000009E3779B1ULL, 0x4EC4510716E61EB5ULL }, /* XSUM_XXH64_testdata[6595] */ + { 3298, 0x0000000000000000ULL, 0xC4D09DE8C0BABD8BULL }, /* XSUM_XXH64_testdata[6596] */ + { 3298, 0x000000009E3779B1ULL, 0xC294F8F677E3DE51ULL }, /* XSUM_XXH64_testdata[6597] */ + { 3299, 0x0000000000000000ULL, 0xB52D718B0FFA529AULL }, /* XSUM_XXH64_testdata[6598] */ + { 3299, 0x000000009E3779B1ULL, 0xD34A3C9409623773ULL }, /* XSUM_XXH64_testdata[6599] */ + { 3300, 0x0000000000000000ULL, 0xF64B51195E194D98ULL }, /* XSUM_XXH64_testdata[6600] */ + { 3300, 0x000000009E3779B1ULL, 0x56AB9D28B0FC79C1ULL }, /* XSUM_XXH64_testdata[6601] */ + { 3301, 0x0000000000000000ULL, 0xE4F463E14A54FCA6ULL }, /* XSUM_XXH64_testdata[6602] */ + { 3301, 0x000000009E3779B1ULL, 0x0963595DC8D2AA0CULL }, /* XSUM_XXH64_testdata[6603] */ + { 3302, 0x0000000000000000ULL, 0x37C41D859E8CD3AAULL }, /* XSUM_XXH64_testdata[6604] */ + { 3302, 0x000000009E3779B1ULL, 0x730AB5C3DDEA01A8ULL }, /* XSUM_XXH64_testdata[6605] */ + { 3303, 0x0000000000000000ULL, 0xEEDD276D00D5167FULL }, /* XSUM_XXH64_testdata[6606] */ + { 3303, 0x000000009E3779B1ULL, 0xAC63FB1DB2B20E79ULL }, /* XSUM_XXH64_testdata[6607] */ + { 3304, 0x0000000000000000ULL, 0xC8FE8933C9B954FCULL }, /* XSUM_XXH64_testdata[6608] */ + { 3304, 0x000000009E3779B1ULL, 0x81FD7B0870FD909FULL }, /* XSUM_XXH64_testdata[6609] */ + { 3305, 0x0000000000000000ULL, 0x06FD829F51EADB1AULL }, /* XSUM_XXH64_testdata[6610] */ + { 3305, 0x000000009E3779B1ULL, 0x980BB7A2F3A3A3F6ULL }, /* XSUM_XXH64_testdata[6611] */ + { 3306, 0x0000000000000000ULL, 0xB0930EEBA336004AULL }, /* XSUM_XXH64_testdata[6612] */ + { 3306, 0x000000009E3779B1ULL, 0xC1EF9F21B1E60858ULL }, /* XSUM_XXH64_testdata[6613] */ + { 3307, 0x0000000000000000ULL, 0x97983C34EF0D589EULL }, /* XSUM_XXH64_testdata[6614] */ + { 3307, 0x000000009E3779B1ULL, 0x8EBB5A5CB9BCE3E2ULL }, /* XSUM_XXH64_testdata[6615] */ + { 3308, 0x0000000000000000ULL, 0x47D416E52FC13654ULL }, /* XSUM_XXH64_testdata[6616] */ + { 3308, 0x000000009E3779B1ULL, 0x4158AA0B0C592D08ULL }, /* XSUM_XXH64_testdata[6617] */ + { 3309, 0x0000000000000000ULL, 0x09CE63E6633E343CULL }, /* XSUM_XXH64_testdata[6618] */ + { 3309, 0x000000009E3779B1ULL, 0xCB313E4075931542ULL }, /* XSUM_XXH64_testdata[6619] */ + { 3310, 0x0000000000000000ULL, 0x9EF3044DB34F0FE3ULL }, /* XSUM_XXH64_testdata[6620] */ + { 3310, 0x000000009E3779B1ULL, 0x05ADFD1156A3C785ULL }, /* XSUM_XXH64_testdata[6621] */ + { 3311, 0x0000000000000000ULL, 0xE367603EAFE0E290ULL }, /* XSUM_XXH64_testdata[6622] */ + { 3311, 0x000000009E3779B1ULL, 0x9E07F0C875EC98BDULL }, /* XSUM_XXH64_testdata[6623] */ + { 3312, 0x0000000000000000ULL, 0x90DE0FAE175E060DULL }, /* XSUM_XXH64_testdata[6624] */ + { 3312, 0x000000009E3779B1ULL, 0x847B97F5F2DCB059ULL }, /* XSUM_XXH64_testdata[6625] */ + { 3313, 0x0000000000000000ULL, 0x9A347C9BB7ECEA8EULL }, /* XSUM_XXH64_testdata[6626] */ + { 3313, 0x000000009E3779B1ULL, 0x8810FCA8D8BC4EDEULL }, /* XSUM_XXH64_testdata[6627] */ + { 3314, 0x0000000000000000ULL, 0x84C7C248DC0501C4ULL }, /* XSUM_XXH64_testdata[6628] */ + { 3314, 0x000000009E3779B1ULL, 0xC605EC6CC657BD46ULL }, /* XSUM_XXH64_testdata[6629] */ + { 3315, 0x0000000000000000ULL, 0x432D797192AF7E2DULL }, /* XSUM_XXH64_testdata[6630] */ + { 3315, 0x000000009E3779B1ULL, 0xBFECC75BEE01F9A1ULL }, /* XSUM_XXH64_testdata[6631] */ + { 3316, 0x0000000000000000ULL, 0xC472BDF12815D499ULL }, /* XSUM_XXH64_testdata[6632] */ + { 3316, 0x000000009E3779B1ULL, 0xC1630931D58F442EULL }, /* XSUM_XXH64_testdata[6633] */ + { 3317, 0x0000000000000000ULL, 0xDD543610CFC183EAULL }, /* XSUM_XXH64_testdata[6634] */ + { 3317, 0x000000009E3779B1ULL, 0x7DD49D637B2F723CULL }, /* XSUM_XXH64_testdata[6635] */ + { 3318, 0x0000000000000000ULL, 0xA708B98E5F38A4DEULL }, /* XSUM_XXH64_testdata[6636] */ + { 3318, 0x000000009E3779B1ULL, 0xFC9136F9A5D4741BULL }, /* XSUM_XXH64_testdata[6637] */ + { 3319, 0x0000000000000000ULL, 0x1B87CC060C9C05FCULL }, /* XSUM_XXH64_testdata[6638] */ + { 3319, 0x000000009E3779B1ULL, 0xC227B865D6587030ULL }, /* XSUM_XXH64_testdata[6639] */ + { 3320, 0x0000000000000000ULL, 0xCB6A480877EC4684ULL }, /* XSUM_XXH64_testdata[6640] */ + { 3320, 0x000000009E3779B1ULL, 0xE715AA953B2CC6A3ULL }, /* XSUM_XXH64_testdata[6641] */ + { 3321, 0x0000000000000000ULL, 0x07F1FD053AD4D34FULL }, /* XSUM_XXH64_testdata[6642] */ + { 3321, 0x000000009E3779B1ULL, 0x143AE1264EFFB926ULL }, /* XSUM_XXH64_testdata[6643] */ + { 3322, 0x0000000000000000ULL, 0x9051839DE97E9B9AULL }, /* XSUM_XXH64_testdata[6644] */ + { 3322, 0x000000009E3779B1ULL, 0x7432D9F895B4F72FULL }, /* XSUM_XXH64_testdata[6645] */ + { 3323, 0x0000000000000000ULL, 0x7C8020028CA340D0ULL }, /* XSUM_XXH64_testdata[6646] */ + { 3323, 0x000000009E3779B1ULL, 0x6DE020F560D0609CULL }, /* XSUM_XXH64_testdata[6647] */ + { 3324, 0x0000000000000000ULL, 0x28BAE4C5614EAB02ULL }, /* XSUM_XXH64_testdata[6648] */ + { 3324, 0x000000009E3779B1ULL, 0xF338842A99280EABULL }, /* XSUM_XXH64_testdata[6649] */ + { 3325, 0x0000000000000000ULL, 0x04E5670188568DDAULL }, /* XSUM_XXH64_testdata[6650] */ + { 3325, 0x000000009E3779B1ULL, 0x8896ED9A8DF6F6D4ULL }, /* XSUM_XXH64_testdata[6651] */ + { 3326, 0x0000000000000000ULL, 0x168337D48FF6193BULL }, /* XSUM_XXH64_testdata[6652] */ + { 3326, 0x000000009E3779B1ULL, 0xB54C0196963577FCULL }, /* XSUM_XXH64_testdata[6653] */ + { 3327, 0x0000000000000000ULL, 0xC7E5E034EB61C293ULL }, /* XSUM_XXH64_testdata[6654] */ + { 3327, 0x000000009E3779B1ULL, 0x11D34C4118E49E20ULL }, /* XSUM_XXH64_testdata[6655] */ + { 3328, 0x0000000000000000ULL, 0x8710D5007806F873ULL }, /* XSUM_XXH64_testdata[6656] */ + { 3328, 0x000000009E3779B1ULL, 0x5E2D07B517F0362DULL }, /* XSUM_XXH64_testdata[6657] */ + { 3329, 0x0000000000000000ULL, 0x0D399DBB05E6E702ULL }, /* XSUM_XXH64_testdata[6658] */ + { 3329, 0x000000009E3779B1ULL, 0x19F101651E1650BBULL }, /* XSUM_XXH64_testdata[6659] */ + { 3330, 0x0000000000000000ULL, 0xAF83DE43B25A47CDULL }, /* XSUM_XXH64_testdata[6660] */ + { 3330, 0x000000009E3779B1ULL, 0xF871A30D77349F2FULL }, /* XSUM_XXH64_testdata[6661] */ + { 3331, 0x0000000000000000ULL, 0x02476DC09836068AULL }, /* XSUM_XXH64_testdata[6662] */ + { 3331, 0x000000009E3779B1ULL, 0xF6C6DCFC220266FEULL }, /* XSUM_XXH64_testdata[6663] */ + { 3332, 0x0000000000000000ULL, 0x7F77D4917AC51280ULL }, /* XSUM_XXH64_testdata[6664] */ + { 3332, 0x000000009E3779B1ULL, 0x43C37FE334C61654ULL }, /* XSUM_XXH64_testdata[6665] */ + { 3333, 0x0000000000000000ULL, 0xFAC72363B506C69CULL }, /* XSUM_XXH64_testdata[6666] */ + { 3333, 0x000000009E3779B1ULL, 0x5F4E679800DA2137ULL }, /* XSUM_XXH64_testdata[6667] */ + { 3334, 0x0000000000000000ULL, 0xC7D80BDE9AA3C3DFULL }, /* XSUM_XXH64_testdata[6668] */ + { 3334, 0x000000009E3779B1ULL, 0x9A04484FCEC73E9DULL }, /* XSUM_XXH64_testdata[6669] */ + { 3335, 0x0000000000000000ULL, 0x60921BD7A69C0307ULL }, /* XSUM_XXH64_testdata[6670] */ + { 3335, 0x000000009E3779B1ULL, 0x9873A3E893927B2DULL }, /* XSUM_XXH64_testdata[6671] */ + { 3336, 0x0000000000000000ULL, 0xEB02A1D4E569CAEEULL }, /* XSUM_XXH64_testdata[6672] */ + { 3336, 0x000000009E3779B1ULL, 0x9EA84F26D8585A52ULL }, /* XSUM_XXH64_testdata[6673] */ + { 3337, 0x0000000000000000ULL, 0x47EF296FD060389EULL }, /* XSUM_XXH64_testdata[6674] */ + { 3337, 0x000000009E3779B1ULL, 0x600BDCD5ADCC286AULL }, /* XSUM_XXH64_testdata[6675] */ + { 3338, 0x0000000000000000ULL, 0x16C1FA830D7844E6ULL }, /* XSUM_XXH64_testdata[6676] */ + { 3338, 0x000000009E3779B1ULL, 0x7E92621EBB2C2B59ULL }, /* XSUM_XXH64_testdata[6677] */ + { 3339, 0x0000000000000000ULL, 0x75F35C0BD723E5CFULL }, /* XSUM_XXH64_testdata[6678] */ + { 3339, 0x000000009E3779B1ULL, 0xB918BE49C7964C7FULL }, /* XSUM_XXH64_testdata[6679] */ + { 3340, 0x0000000000000000ULL, 0x311D3FC9E024D0C6ULL }, /* XSUM_XXH64_testdata[6680] */ + { 3340, 0x000000009E3779B1ULL, 0xE994E30D6EE2307EULL }, /* XSUM_XXH64_testdata[6681] */ + { 3341, 0x0000000000000000ULL, 0xE182DB1D31D53193ULL }, /* XSUM_XXH64_testdata[6682] */ + { 3341, 0x000000009E3779B1ULL, 0x8520D4A50292E3A9ULL }, /* XSUM_XXH64_testdata[6683] */ + { 3342, 0x0000000000000000ULL, 0x4F58BEA27AD13F99ULL }, /* XSUM_XXH64_testdata[6684] */ + { 3342, 0x000000009E3779B1ULL, 0xDE756B04CAFBBA57ULL }, /* XSUM_XXH64_testdata[6685] */ + { 3343, 0x0000000000000000ULL, 0xD6ABD0BD0FF9757AULL }, /* XSUM_XXH64_testdata[6686] */ + { 3343, 0x000000009E3779B1ULL, 0x2A71E994B10E9A95ULL }, /* XSUM_XXH64_testdata[6687] */ + { 3344, 0x0000000000000000ULL, 0x15480D9E5CCE8AE4ULL }, /* XSUM_XXH64_testdata[6688] */ + { 3344, 0x000000009E3779B1ULL, 0x0280C626E780A84AULL }, /* XSUM_XXH64_testdata[6689] */ + { 3345, 0x0000000000000000ULL, 0x426727E79FFAB1FAULL }, /* XSUM_XXH64_testdata[6690] */ + { 3345, 0x000000009E3779B1ULL, 0xFE1B09D7CECB37E5ULL }, /* XSUM_XXH64_testdata[6691] */ + { 3346, 0x0000000000000000ULL, 0xFE47F585738F1B3BULL }, /* XSUM_XXH64_testdata[6692] */ + { 3346, 0x000000009E3779B1ULL, 0x07B6A852428540B1ULL }, /* XSUM_XXH64_testdata[6693] */ + { 3347, 0x0000000000000000ULL, 0x1F838FBBA71E1CFCULL }, /* XSUM_XXH64_testdata[6694] */ + { 3347, 0x000000009E3779B1ULL, 0x1D54EE18473C7455ULL }, /* XSUM_XXH64_testdata[6695] */ + { 3348, 0x0000000000000000ULL, 0xDD20427217BB132CULL }, /* XSUM_XXH64_testdata[6696] */ + { 3348, 0x000000009E3779B1ULL, 0xAD0294006CE00001ULL }, /* XSUM_XXH64_testdata[6697] */ + { 3349, 0x0000000000000000ULL, 0x0DFB26A85C88EBFBULL }, /* XSUM_XXH64_testdata[6698] */ + { 3349, 0x000000009E3779B1ULL, 0xB09DF1A1562C743BULL }, /* XSUM_XXH64_testdata[6699] */ + { 3350, 0x0000000000000000ULL, 0x9B9EB2E0C44E15D9ULL }, /* XSUM_XXH64_testdata[6700] */ + { 3350, 0x000000009E3779B1ULL, 0x4BE4A9EE1D7D7341ULL }, /* XSUM_XXH64_testdata[6701] */ + { 3351, 0x0000000000000000ULL, 0x1087F88E60253CACULL }, /* XSUM_XXH64_testdata[6702] */ + { 3351, 0x000000009E3779B1ULL, 0x8F9B7E6ED17DAC9EULL }, /* XSUM_XXH64_testdata[6703] */ + { 3352, 0x0000000000000000ULL, 0x7F08F9773BC2D826ULL }, /* XSUM_XXH64_testdata[6704] */ + { 3352, 0x000000009E3779B1ULL, 0xB22C1D997C380393ULL }, /* XSUM_XXH64_testdata[6705] */ + { 3353, 0x0000000000000000ULL, 0x38557140168F9851ULL }, /* XSUM_XXH64_testdata[6706] */ + { 3353, 0x000000009E3779B1ULL, 0x1F9BFFEBF835FA22ULL }, /* XSUM_XXH64_testdata[6707] */ + { 3354, 0x0000000000000000ULL, 0x0F19C77891CECF19ULL }, /* XSUM_XXH64_testdata[6708] */ + { 3354, 0x000000009E3779B1ULL, 0x61751AC454DF5DE3ULL }, /* XSUM_XXH64_testdata[6709] */ + { 3355, 0x0000000000000000ULL, 0xF307A33B8636A755ULL }, /* XSUM_XXH64_testdata[6710] */ + { 3355, 0x000000009E3779B1ULL, 0x23C0DDB18D792125ULL }, /* XSUM_XXH64_testdata[6711] */ + { 3356, 0x0000000000000000ULL, 0x7A2E68AAB006317BULL }, /* XSUM_XXH64_testdata[6712] */ + { 3356, 0x000000009E3779B1ULL, 0x458D71CDCE30E683ULL }, /* XSUM_XXH64_testdata[6713] */ + { 3357, 0x0000000000000000ULL, 0xC7E2BA47F101F87EULL }, /* XSUM_XXH64_testdata[6714] */ + { 3357, 0x000000009E3779B1ULL, 0x0127D490A06FADD0ULL }, /* XSUM_XXH64_testdata[6715] */ + { 3358, 0x0000000000000000ULL, 0x4AE3F216D3E09927ULL }, /* XSUM_XXH64_testdata[6716] */ + { 3358, 0x000000009E3779B1ULL, 0x77E4309A4D544D52ULL }, /* XSUM_XXH64_testdata[6717] */ + { 3359, 0x0000000000000000ULL, 0xBCD6624F1BD5555CULL }, /* XSUM_XXH64_testdata[6718] */ + { 3359, 0x000000009E3779B1ULL, 0x00FF3B842694F236ULL }, /* XSUM_XXH64_testdata[6719] */ + { 3360, 0x0000000000000000ULL, 0x542E85D99F08EE48ULL }, /* XSUM_XXH64_testdata[6720] */ + { 3360, 0x000000009E3779B1ULL, 0x2EE194644F0735C0ULL }, /* XSUM_XXH64_testdata[6721] */ + { 3361, 0x0000000000000000ULL, 0x22211C11AF6993ADULL }, /* XSUM_XXH64_testdata[6722] */ + { 3361, 0x000000009E3779B1ULL, 0xF4FB4475CCAC32EBULL }, /* XSUM_XXH64_testdata[6723] */ + { 3362, 0x0000000000000000ULL, 0x8041F1A9CD36C590ULL }, /* XSUM_XXH64_testdata[6724] */ + { 3362, 0x000000009E3779B1ULL, 0x905ADB5A33517F2AULL }, /* XSUM_XXH64_testdata[6725] */ + { 3363, 0x0000000000000000ULL, 0xB203F987C8C409D7ULL }, /* XSUM_XXH64_testdata[6726] */ + { 3363, 0x000000009E3779B1ULL, 0xA849CED180FD66A9ULL }, /* XSUM_XXH64_testdata[6727] */ + { 3364, 0x0000000000000000ULL, 0x38CA393534072EE5ULL }, /* XSUM_XXH64_testdata[6728] */ + { 3364, 0x000000009E3779B1ULL, 0x1A3C8C340AA1E0B3ULL }, /* XSUM_XXH64_testdata[6729] */ + { 3365, 0x0000000000000000ULL, 0xA4A47B4ADF87F577ULL }, /* XSUM_XXH64_testdata[6730] */ + { 3365, 0x000000009E3779B1ULL, 0x47C6E221DCED0B3BULL }, /* XSUM_XXH64_testdata[6731] */ + { 3366, 0x0000000000000000ULL, 0x7E9DB5F33133F6CCULL }, /* XSUM_XXH64_testdata[6732] */ + { 3366, 0x000000009E3779B1ULL, 0x16D39A05FBA9A75BULL }, /* XSUM_XXH64_testdata[6733] */ + { 3367, 0x0000000000000000ULL, 0x9828B35836CC58DFULL }, /* XSUM_XXH64_testdata[6734] */ + { 3367, 0x000000009E3779B1ULL, 0x670D2D0343D11DF1ULL }, /* XSUM_XXH64_testdata[6735] */ + { 3368, 0x0000000000000000ULL, 0x81BDD4AC21E21226ULL }, /* XSUM_XXH64_testdata[6736] */ + { 3368, 0x000000009E3779B1ULL, 0xB4F033B5F2B00B48ULL }, /* XSUM_XXH64_testdata[6737] */ + { 3369, 0x0000000000000000ULL, 0x09DEEC88D28A1398ULL }, /* XSUM_XXH64_testdata[6738] */ + { 3369, 0x000000009E3779B1ULL, 0x1E26078DEAC57745ULL }, /* XSUM_XXH64_testdata[6739] */ + { 3370, 0x0000000000000000ULL, 0x30C74C02ACDC8B33ULL }, /* XSUM_XXH64_testdata[6740] */ + { 3370, 0x000000009E3779B1ULL, 0x3AA94A5BCDD76807ULL }, /* XSUM_XXH64_testdata[6741] */ + { 3371, 0x0000000000000000ULL, 0x98053900C9FAAA6AULL }, /* XSUM_XXH64_testdata[6742] */ + { 3371, 0x000000009E3779B1ULL, 0x2614332CF19689E0ULL }, /* XSUM_XXH64_testdata[6743] */ + { 3372, 0x0000000000000000ULL, 0xC987552C4554A9CFULL }, /* XSUM_XXH64_testdata[6744] */ + { 3372, 0x000000009E3779B1ULL, 0x0E3267FEE2488D2BULL }, /* XSUM_XXH64_testdata[6745] */ + { 3373, 0x0000000000000000ULL, 0x27CB7FACEE06BD1CULL }, /* XSUM_XXH64_testdata[6746] */ + { 3373, 0x000000009E3779B1ULL, 0x966E73086D34244DULL }, /* XSUM_XXH64_testdata[6747] */ + { 3374, 0x0000000000000000ULL, 0x8398E2C8F2753DABULL }, /* XSUM_XXH64_testdata[6748] */ + { 3374, 0x000000009E3779B1ULL, 0x8F87DB90855AC39FULL }, /* XSUM_XXH64_testdata[6749] */ + { 3375, 0x0000000000000000ULL, 0x8FD3A3ADF90AECCEULL }, /* XSUM_XXH64_testdata[6750] */ + { 3375, 0x000000009E3779B1ULL, 0xB07007A69026B6CAULL }, /* XSUM_XXH64_testdata[6751] */ + { 3376, 0x0000000000000000ULL, 0xF6BAC4B88EF747E2ULL }, /* XSUM_XXH64_testdata[6752] */ + { 3376, 0x000000009E3779B1ULL, 0x5B98A7BCE2CF71B0ULL }, /* XSUM_XXH64_testdata[6753] */ + { 3377, 0x0000000000000000ULL, 0x9B9EEDFEA84D6837ULL }, /* XSUM_XXH64_testdata[6754] */ + { 3377, 0x000000009E3779B1ULL, 0xC0CB1FD1CA965EC5ULL }, /* XSUM_XXH64_testdata[6755] */ + { 3378, 0x0000000000000000ULL, 0x486C9AF9C2B1CE90ULL }, /* XSUM_XXH64_testdata[6756] */ + { 3378, 0x000000009E3779B1ULL, 0xF419C1F9E2D7DC10ULL }, /* XSUM_XXH64_testdata[6757] */ + { 3379, 0x0000000000000000ULL, 0x7AF60C8FB8C85057ULL }, /* XSUM_XXH64_testdata[6758] */ + { 3379, 0x000000009E3779B1ULL, 0x9A5855BED0646CF7ULL }, /* XSUM_XXH64_testdata[6759] */ + { 3380, 0x0000000000000000ULL, 0xC67A41C5D83FF699ULL }, /* XSUM_XXH64_testdata[6760] */ + { 3380, 0x000000009E3779B1ULL, 0xA01D548BEA3651D3ULL }, /* XSUM_XXH64_testdata[6761] */ + { 3381, 0x0000000000000000ULL, 0x61FE1C442A24E725ULL }, /* XSUM_XXH64_testdata[6762] */ + { 3381, 0x000000009E3779B1ULL, 0x6ABDABC14468734FULL }, /* XSUM_XXH64_testdata[6763] */ + { 3382, 0x0000000000000000ULL, 0x990FBC0D7E4CBD9EULL }, /* XSUM_XXH64_testdata[6764] */ + { 3382, 0x000000009E3779B1ULL, 0x6DD8CE25FE8C549EULL }, /* XSUM_XXH64_testdata[6765] */ + { 3383, 0x0000000000000000ULL, 0xD4BCFF1D1541CD58ULL }, /* XSUM_XXH64_testdata[6766] */ + { 3383, 0x000000009E3779B1ULL, 0xA5F466E4F3DD3C1FULL }, /* XSUM_XXH64_testdata[6767] */ + { 3384, 0x0000000000000000ULL, 0x4ECCA29B582D1D8AULL }, /* XSUM_XXH64_testdata[6768] */ + { 3384, 0x000000009E3779B1ULL, 0x9E5D62B90FF0A641ULL }, /* XSUM_XXH64_testdata[6769] */ + { 3385, 0x0000000000000000ULL, 0x1D6216035764609EULL }, /* XSUM_XXH64_testdata[6770] */ + { 3385, 0x000000009E3779B1ULL, 0x1ABAF5F745DA5C9BULL }, /* XSUM_XXH64_testdata[6771] */ + { 3386, 0x0000000000000000ULL, 0x1E1B20F8FF3F32D8ULL }, /* XSUM_XXH64_testdata[6772] */ + { 3386, 0x000000009E3779B1ULL, 0x8DAB51A68D3468B6ULL }, /* XSUM_XXH64_testdata[6773] */ + { 3387, 0x0000000000000000ULL, 0x2709E4CD6135D6FCULL }, /* XSUM_XXH64_testdata[6774] */ + { 3387, 0x000000009E3779B1ULL, 0xF4308B7E230ABBA2ULL }, /* XSUM_XXH64_testdata[6775] */ + { 3388, 0x0000000000000000ULL, 0x0A239DB36B193344ULL }, /* XSUM_XXH64_testdata[6776] */ + { 3388, 0x000000009E3779B1ULL, 0xA93C507116DB8272ULL }, /* XSUM_XXH64_testdata[6777] */ + { 3389, 0x0000000000000000ULL, 0x38195E4A732E4FA3ULL }, /* XSUM_XXH64_testdata[6778] */ + { 3389, 0x000000009E3779B1ULL, 0xDECC45B7155517F3ULL }, /* XSUM_XXH64_testdata[6779] */ + { 3390, 0x0000000000000000ULL, 0x60BC2BE5DFF1BC62ULL }, /* XSUM_XXH64_testdata[6780] */ + { 3390, 0x000000009E3779B1ULL, 0xF2CDBDF1BE0486A8ULL }, /* XSUM_XXH64_testdata[6781] */ + { 3391, 0x0000000000000000ULL, 0x4FF15DC235E0577BULL }, /* XSUM_XXH64_testdata[6782] */ + { 3391, 0x000000009E3779B1ULL, 0x5B0E412FDBA553DBULL }, /* XSUM_XXH64_testdata[6783] */ + { 3392, 0x0000000000000000ULL, 0x6F8F3D1528BA7ECDULL }, /* XSUM_XXH64_testdata[6784] */ + { 3392, 0x000000009E3779B1ULL, 0xC40B7E2094CA8DDCULL }, /* XSUM_XXH64_testdata[6785] */ + { 3393, 0x0000000000000000ULL, 0xD65892882A77C97FULL }, /* XSUM_XXH64_testdata[6786] */ + { 3393, 0x000000009E3779B1ULL, 0xB52F9CD407D28BFFULL }, /* XSUM_XXH64_testdata[6787] */ + { 3394, 0x0000000000000000ULL, 0x75DCC4B4FF0C6300ULL }, /* XSUM_XXH64_testdata[6788] */ + { 3394, 0x000000009E3779B1ULL, 0x94620C419E02B5CFULL }, /* XSUM_XXH64_testdata[6789] */ + { 3395, 0x0000000000000000ULL, 0x953AE6548C75295AULL }, /* XSUM_XXH64_testdata[6790] */ + { 3395, 0x000000009E3779B1ULL, 0x795EC3327BC0D54DULL }, /* XSUM_XXH64_testdata[6791] */ + { 3396, 0x0000000000000000ULL, 0xE46340D055CD4645ULL }, /* XSUM_XXH64_testdata[6792] */ + { 3396, 0x000000009E3779B1ULL, 0x73A0752800833C4FULL }, /* XSUM_XXH64_testdata[6793] */ + { 3397, 0x0000000000000000ULL, 0x01237F81E2AAB480ULL }, /* XSUM_XXH64_testdata[6794] */ + { 3397, 0x000000009E3779B1ULL, 0x62DC3F3B8CBB3758ULL }, /* XSUM_XXH64_testdata[6795] */ + { 3398, 0x0000000000000000ULL, 0xD881AC282610868DULL }, /* XSUM_XXH64_testdata[6796] */ + { 3398, 0x000000009E3779B1ULL, 0xBF13A0681EE16727ULL }, /* XSUM_XXH64_testdata[6797] */ + { 3399, 0x0000000000000000ULL, 0xA406D1EE41D9126DULL }, /* XSUM_XXH64_testdata[6798] */ + { 3399, 0x000000009E3779B1ULL, 0xD1BBA5CE6BE4F971ULL }, /* XSUM_XXH64_testdata[6799] */ + { 3400, 0x0000000000000000ULL, 0xFC925D320870DE31ULL }, /* XSUM_XXH64_testdata[6800] */ + { 3400, 0x000000009E3779B1ULL, 0x235115390916C7C7ULL }, /* XSUM_XXH64_testdata[6801] */ + { 3401, 0x0000000000000000ULL, 0x08987536121CBDD9ULL }, /* XSUM_XXH64_testdata[6802] */ + { 3401, 0x000000009E3779B1ULL, 0xCCBFA459F07BAA3FULL }, /* XSUM_XXH64_testdata[6803] */ + { 3402, 0x0000000000000000ULL, 0x84911E59E091D894ULL }, /* XSUM_XXH64_testdata[6804] */ + { 3402, 0x000000009E3779B1ULL, 0x6C4F56AE6EFC08FEULL }, /* XSUM_XXH64_testdata[6805] */ + { 3403, 0x0000000000000000ULL, 0x786BDECE5F347EDFULL }, /* XSUM_XXH64_testdata[6806] */ + { 3403, 0x000000009E3779B1ULL, 0x79F555476308F2DEULL }, /* XSUM_XXH64_testdata[6807] */ + { 3404, 0x0000000000000000ULL, 0xAF58230EB9FFCD57ULL }, /* XSUM_XXH64_testdata[6808] */ + { 3404, 0x000000009E3779B1ULL, 0x63B7DC29FEA3180FULL }, /* XSUM_XXH64_testdata[6809] */ + { 3405, 0x0000000000000000ULL, 0x065B6D0AB02049E9ULL }, /* XSUM_XXH64_testdata[6810] */ + { 3405, 0x000000009E3779B1ULL, 0x269FE824C2ED8F80ULL }, /* XSUM_XXH64_testdata[6811] */ + { 3406, 0x0000000000000000ULL, 0xAAA95BF5C7C03CF3ULL }, /* XSUM_XXH64_testdata[6812] */ + { 3406, 0x000000009E3779B1ULL, 0x79276BC84050DCD7ULL }, /* XSUM_XXH64_testdata[6813] */ + { 3407, 0x0000000000000000ULL, 0x2250F48182E9FE9BULL }, /* XSUM_XXH64_testdata[6814] */ + { 3407, 0x000000009E3779B1ULL, 0xC79338E441109D65ULL }, /* XSUM_XXH64_testdata[6815] */ + { 3408, 0x0000000000000000ULL, 0x2EFDA8055A7AED01ULL }, /* XSUM_XXH64_testdata[6816] */ + { 3408, 0x000000009E3779B1ULL, 0xA41BAD39695C4370ULL }, /* XSUM_XXH64_testdata[6817] */ + { 3409, 0x0000000000000000ULL, 0x1CA43A5C427E98B1ULL }, /* XSUM_XXH64_testdata[6818] */ + { 3409, 0x000000009E3779B1ULL, 0x0BD76C09547B1A22ULL }, /* XSUM_XXH64_testdata[6819] */ + { 3410, 0x0000000000000000ULL, 0x0F07F40992270CF0ULL }, /* XSUM_XXH64_testdata[6820] */ + { 3410, 0x000000009E3779B1ULL, 0x9FC04A6FF9492D7EULL }, /* XSUM_XXH64_testdata[6821] */ + { 3411, 0x0000000000000000ULL, 0x08F8FDC031764035ULL }, /* XSUM_XXH64_testdata[6822] */ + { 3411, 0x000000009E3779B1ULL, 0x2DF01822BE31F783ULL }, /* XSUM_XXH64_testdata[6823] */ + { 3412, 0x0000000000000000ULL, 0x6F8500F14325C79DULL }, /* XSUM_XXH64_testdata[6824] */ + { 3412, 0x000000009E3779B1ULL, 0x1384CE56A75FD120ULL }, /* XSUM_XXH64_testdata[6825] */ + { 3413, 0x0000000000000000ULL, 0x6503C3AA31113A32ULL }, /* XSUM_XXH64_testdata[6826] */ + { 3413, 0x000000009E3779B1ULL, 0x2BBA8AE83458982BULL }, /* XSUM_XXH64_testdata[6827] */ + { 3414, 0x0000000000000000ULL, 0xAD1EE0FA04D1F4DBULL }, /* XSUM_XXH64_testdata[6828] */ + { 3414, 0x000000009E3779B1ULL, 0xB053F74654E35E16ULL }, /* XSUM_XXH64_testdata[6829] */ + { 3415, 0x0000000000000000ULL, 0x0DC39A7CDA2784CCULL }, /* XSUM_XXH64_testdata[6830] */ + { 3415, 0x000000009E3779B1ULL, 0x2481CF673980A325ULL }, /* XSUM_XXH64_testdata[6831] */ + { 3416, 0x0000000000000000ULL, 0xE07B93CEFA4C50ECULL }, /* XSUM_XXH64_testdata[6832] */ + { 3416, 0x000000009E3779B1ULL, 0x8618E5C3332A0FD6ULL }, /* XSUM_XXH64_testdata[6833] */ + { 3417, 0x0000000000000000ULL, 0x0E5E48EF223E3DFBULL }, /* XSUM_XXH64_testdata[6834] */ + { 3417, 0x000000009E3779B1ULL, 0x46DD3DF34B1CD288ULL }, /* XSUM_XXH64_testdata[6835] */ + { 3418, 0x0000000000000000ULL, 0x167305AD49E389CBULL }, /* XSUM_XXH64_testdata[6836] */ + { 3418, 0x000000009E3779B1ULL, 0x432435A02C9847CDULL }, /* XSUM_XXH64_testdata[6837] */ + { 3419, 0x0000000000000000ULL, 0xCBB8301E38157DD2ULL }, /* XSUM_XXH64_testdata[6838] */ + { 3419, 0x000000009E3779B1ULL, 0x8163B9422D1DF6F3ULL }, /* XSUM_XXH64_testdata[6839] */ + { 3420, 0x0000000000000000ULL, 0x23534474E375FF7EULL }, /* XSUM_XXH64_testdata[6840] */ + { 3420, 0x000000009E3779B1ULL, 0xB843B0CCE2214807ULL }, /* XSUM_XXH64_testdata[6841] */ + { 3421, 0x0000000000000000ULL, 0x5375130C749D4D36ULL }, /* XSUM_XXH64_testdata[6842] */ + { 3421, 0x000000009E3779B1ULL, 0xAD7DFC6F22BC8907ULL }, /* XSUM_XXH64_testdata[6843] */ + { 3422, 0x0000000000000000ULL, 0x035A2D01842F52ACULL }, /* XSUM_XXH64_testdata[6844] */ + { 3422, 0x000000009E3779B1ULL, 0xB3675C7ADA974735ULL }, /* XSUM_XXH64_testdata[6845] */ + { 3423, 0x0000000000000000ULL, 0xC139E97DFDA9AF28ULL }, /* XSUM_XXH64_testdata[6846] */ + { 3423, 0x000000009E3779B1ULL, 0xB84A8ECA78313447ULL }, /* XSUM_XXH64_testdata[6847] */ + { 3424, 0x0000000000000000ULL, 0xC335D57E8262ECBEULL }, /* XSUM_XXH64_testdata[6848] */ + { 3424, 0x000000009E3779B1ULL, 0xE3CB054018F82596ULL }, /* XSUM_XXH64_testdata[6849] */ + { 3425, 0x0000000000000000ULL, 0x939CC9D915BE8A44ULL }, /* XSUM_XXH64_testdata[6850] */ + { 3425, 0x000000009E3779B1ULL, 0x8B6E232633409B57ULL }, /* XSUM_XXH64_testdata[6851] */ + { 3426, 0x0000000000000000ULL, 0x475B907CDFE1FBE2ULL }, /* XSUM_XXH64_testdata[6852] */ + { 3426, 0x000000009E3779B1ULL, 0x8934A118AE7AE4AAULL }, /* XSUM_XXH64_testdata[6853] */ + { 3427, 0x0000000000000000ULL, 0x0E29B1503E5DB3FFULL }, /* XSUM_XXH64_testdata[6854] */ + { 3427, 0x000000009E3779B1ULL, 0x89E494DD08E205A6ULL }, /* XSUM_XXH64_testdata[6855] */ + { 3428, 0x0000000000000000ULL, 0xB53CEE742F82286FULL }, /* XSUM_XXH64_testdata[6856] */ + { 3428, 0x000000009E3779B1ULL, 0x6AADA048563F35CCULL }, /* XSUM_XXH64_testdata[6857] */ + { 3429, 0x0000000000000000ULL, 0x5636DBC6EE3F29EEULL }, /* XSUM_XXH64_testdata[6858] */ + { 3429, 0x000000009E3779B1ULL, 0xB3EFB37788709642ULL }, /* XSUM_XXH64_testdata[6859] */ + { 3430, 0x0000000000000000ULL, 0x525C5344F31843BDULL }, /* XSUM_XXH64_testdata[6860] */ + { 3430, 0x000000009E3779B1ULL, 0x4E69C90D18DD5DBCULL }, /* XSUM_XXH64_testdata[6861] */ + { 3431, 0x0000000000000000ULL, 0x5DACA055BB7AFD92ULL }, /* XSUM_XXH64_testdata[6862] */ + { 3431, 0x000000009E3779B1ULL, 0x0EA112410719131AULL }, /* XSUM_XXH64_testdata[6863] */ + { 3432, 0x0000000000000000ULL, 0x9B8649B0AA800103ULL }, /* XSUM_XXH64_testdata[6864] */ + { 3432, 0x000000009E3779B1ULL, 0x1BA99096009C806FULL }, /* XSUM_XXH64_testdata[6865] */ + { 3433, 0x0000000000000000ULL, 0x94B3D2ADFA118C38ULL }, /* XSUM_XXH64_testdata[6866] */ + { 3433, 0x000000009E3779B1ULL, 0x69AC2B5666FFD4B6ULL }, /* XSUM_XXH64_testdata[6867] */ + { 3434, 0x0000000000000000ULL, 0xF0A79614651CB5A9ULL }, /* XSUM_XXH64_testdata[6868] */ + { 3434, 0x000000009E3779B1ULL, 0xED98DEC514EEEB9EULL }, /* XSUM_XXH64_testdata[6869] */ + { 3435, 0x0000000000000000ULL, 0xADF4655B940CE7CFULL }, /* XSUM_XXH64_testdata[6870] */ + { 3435, 0x000000009E3779B1ULL, 0x1B50D08BBCFE8604ULL }, /* XSUM_XXH64_testdata[6871] */ + { 3436, 0x0000000000000000ULL, 0x6D4A695B5F8E7B73ULL }, /* XSUM_XXH64_testdata[6872] */ + { 3436, 0x000000009E3779B1ULL, 0x4060ADB4F0A1EECDULL }, /* XSUM_XXH64_testdata[6873] */ + { 3437, 0x0000000000000000ULL, 0xB0986E79F7483CE4ULL }, /* XSUM_XXH64_testdata[6874] */ + { 3437, 0x000000009E3779B1ULL, 0xED21F1E7C04AE6E2ULL }, /* XSUM_XXH64_testdata[6875] */ + { 3438, 0x0000000000000000ULL, 0x4A6D3866036805EDULL }, /* XSUM_XXH64_testdata[6876] */ + { 3438, 0x000000009E3779B1ULL, 0xF9CC70B50F1F89BCULL }, /* XSUM_XXH64_testdata[6877] */ + { 3439, 0x0000000000000000ULL, 0x39939C8F8202160FULL }, /* XSUM_XXH64_testdata[6878] */ + { 3439, 0x000000009E3779B1ULL, 0xBBAF658D20776273ULL }, /* XSUM_XXH64_testdata[6879] */ + { 3440, 0x0000000000000000ULL, 0xBA7EE4C6011EB34DULL }, /* XSUM_XXH64_testdata[6880] */ + { 3440, 0x000000009E3779B1ULL, 0xBD690516B2B7807DULL }, /* XSUM_XXH64_testdata[6881] */ + { 3441, 0x0000000000000000ULL, 0x0B465B9A47FCBCCEULL }, /* XSUM_XXH64_testdata[6882] */ + { 3441, 0x000000009E3779B1ULL, 0x7B4B66EF96259778ULL }, /* XSUM_XXH64_testdata[6883] */ + { 3442, 0x0000000000000000ULL, 0xA85200C407EAE878ULL }, /* XSUM_XXH64_testdata[6884] */ + { 3442, 0x000000009E3779B1ULL, 0xA24014C6DF63F856ULL }, /* XSUM_XXH64_testdata[6885] */ + { 3443, 0x0000000000000000ULL, 0xA13BC051C0EF77FAULL }, /* XSUM_XXH64_testdata[6886] */ + { 3443, 0x000000009E3779B1ULL, 0x3948A962B0BC2070ULL }, /* XSUM_XXH64_testdata[6887] */ + { 3444, 0x0000000000000000ULL, 0xA0EE012AE118927BULL }, /* XSUM_XXH64_testdata[6888] */ + { 3444, 0x000000009E3779B1ULL, 0xBD7451379163A75BULL }, /* XSUM_XXH64_testdata[6889] */ + { 3445, 0x0000000000000000ULL, 0x79EC35D8F8C7E860ULL }, /* XSUM_XXH64_testdata[6890] */ + { 3445, 0x000000009E3779B1ULL, 0x7D5A334001FF54D8ULL }, /* XSUM_XXH64_testdata[6891] */ + { 3446, 0x0000000000000000ULL, 0x1DBAC18C8016262BULL }, /* XSUM_XXH64_testdata[6892] */ + { 3446, 0x000000009E3779B1ULL, 0x511FC1C00CAFD5DFULL }, /* XSUM_XXH64_testdata[6893] */ + { 3447, 0x0000000000000000ULL, 0x98BF7F8039272362ULL }, /* XSUM_XXH64_testdata[6894] */ + { 3447, 0x000000009E3779B1ULL, 0x1B9430A5C286DD2CULL }, /* XSUM_XXH64_testdata[6895] */ + { 3448, 0x0000000000000000ULL, 0xDD84834204467580ULL }, /* XSUM_XXH64_testdata[6896] */ + { 3448, 0x000000009E3779B1ULL, 0x0CED7BC8D6B9D1B4ULL }, /* XSUM_XXH64_testdata[6897] */ + { 3449, 0x0000000000000000ULL, 0xA8B0DAEAD3E4EB9FULL }, /* XSUM_XXH64_testdata[6898] */ + { 3449, 0x000000009E3779B1ULL, 0x404EFA10F504A853ULL }, /* XSUM_XXH64_testdata[6899] */ + { 3450, 0x0000000000000000ULL, 0x36F4BA8859BC2D42ULL }, /* XSUM_XXH64_testdata[6900] */ + { 3450, 0x000000009E3779B1ULL, 0xECBA958127FDA294ULL }, /* XSUM_XXH64_testdata[6901] */ + { 3451, 0x0000000000000000ULL, 0x89EF742547488B13ULL }, /* XSUM_XXH64_testdata[6902] */ + { 3451, 0x000000009E3779B1ULL, 0x80A8ADF296C9D680ULL }, /* XSUM_XXH64_testdata[6903] */ + { 3452, 0x0000000000000000ULL, 0x583DDAE4EF2AC68EULL }, /* XSUM_XXH64_testdata[6904] */ + { 3452, 0x000000009E3779B1ULL, 0x4609C5258FF9F675ULL }, /* XSUM_XXH64_testdata[6905] */ + { 3453, 0x0000000000000000ULL, 0xE5B333C37FB42C1CULL }, /* XSUM_XXH64_testdata[6906] */ + { 3453, 0x000000009E3779B1ULL, 0xA99A111022825EE5ULL }, /* XSUM_XXH64_testdata[6907] */ + { 3454, 0x0000000000000000ULL, 0x724EE6AD6455B098ULL }, /* XSUM_XXH64_testdata[6908] */ + { 3454, 0x000000009E3779B1ULL, 0x99EF409B713E60A4ULL }, /* XSUM_XXH64_testdata[6909] */ + { 3455, 0x0000000000000000ULL, 0x1CE38A1E0980F6B7ULL }, /* XSUM_XXH64_testdata[6910] */ + { 3455, 0x000000009E3779B1ULL, 0x27E12CEE4CE4F894ULL }, /* XSUM_XXH64_testdata[6911] */ + { 3456, 0x0000000000000000ULL, 0x5F0D6A1FAAB49751ULL }, /* XSUM_XXH64_testdata[6912] */ + { 3456, 0x000000009E3779B1ULL, 0x446CEA9E3F7FA37DULL }, /* XSUM_XXH64_testdata[6913] */ + { 3457, 0x0000000000000000ULL, 0x3850FEE3C9E3F173ULL }, /* XSUM_XXH64_testdata[6914] */ + { 3457, 0x000000009E3779B1ULL, 0x97ABA3B49D6F56A5ULL }, /* XSUM_XXH64_testdata[6915] */ + { 3458, 0x0000000000000000ULL, 0x1998098076D3AFD4ULL }, /* XSUM_XXH64_testdata[6916] */ + { 3458, 0x000000009E3779B1ULL, 0xC54BA80317EBE695ULL }, /* XSUM_XXH64_testdata[6917] */ + { 3459, 0x0000000000000000ULL, 0x9499DB03BE6BB40BULL }, /* XSUM_XXH64_testdata[6918] */ + { 3459, 0x000000009E3779B1ULL, 0x4D52921B4D1E5A93ULL }, /* XSUM_XXH64_testdata[6919] */ + { 3460, 0x0000000000000000ULL, 0x217F04D5A8BDB010ULL }, /* XSUM_XXH64_testdata[6920] */ + { 3460, 0x000000009E3779B1ULL, 0xFB005F37946BEFDEULL }, /* XSUM_XXH64_testdata[6921] */ + { 3461, 0x0000000000000000ULL, 0x84FAFA5EBD63A84AULL }, /* XSUM_XXH64_testdata[6922] */ + { 3461, 0x000000009E3779B1ULL, 0x4806C10CE9E2F910ULL }, /* XSUM_XXH64_testdata[6923] */ + { 3462, 0x0000000000000000ULL, 0xA586829EDC67D00FULL }, /* XSUM_XXH64_testdata[6924] */ + { 3462, 0x000000009E3779B1ULL, 0xBD8009F16447A000ULL }, /* XSUM_XXH64_testdata[6925] */ + { 3463, 0x0000000000000000ULL, 0x84FE742CAE50DD3BULL }, /* XSUM_XXH64_testdata[6926] */ + { 3463, 0x000000009E3779B1ULL, 0x704D284BC7050926ULL }, /* XSUM_XXH64_testdata[6927] */ + { 3464, 0x0000000000000000ULL, 0xFC8B600653677666ULL }, /* XSUM_XXH64_testdata[6928] */ + { 3464, 0x000000009E3779B1ULL, 0xBE690D31D4F751ADULL }, /* XSUM_XXH64_testdata[6929] */ + { 3465, 0x0000000000000000ULL, 0x5F88BD33643BDF72ULL }, /* XSUM_XXH64_testdata[6930] */ + { 3465, 0x000000009E3779B1ULL, 0xD4DA9DADE451989EULL }, /* XSUM_XXH64_testdata[6931] */ + { 3466, 0x0000000000000000ULL, 0x6AA4FBF098F6D5D2ULL }, /* XSUM_XXH64_testdata[6932] */ + { 3466, 0x000000009E3779B1ULL, 0x0A3EA25F18543277ULL }, /* XSUM_XXH64_testdata[6933] */ + { 3467, 0x0000000000000000ULL, 0xFEA3683D26B3C7BFULL }, /* XSUM_XXH64_testdata[6934] */ + { 3467, 0x000000009E3779B1ULL, 0x4C4D58D53A69EC73ULL }, /* XSUM_XXH64_testdata[6935] */ + { 3468, 0x0000000000000000ULL, 0xDBA1BB28C3C620ADULL }, /* XSUM_XXH64_testdata[6936] */ + { 3468, 0x000000009E3779B1ULL, 0x9CEFCCF50AD98122ULL }, /* XSUM_XXH64_testdata[6937] */ + { 3469, 0x0000000000000000ULL, 0xFD5ED88860FED174ULL }, /* XSUM_XXH64_testdata[6938] */ + { 3469, 0x000000009E3779B1ULL, 0xF21994C0B95E7BC9ULL }, /* XSUM_XXH64_testdata[6939] */ + { 3470, 0x0000000000000000ULL, 0xDD488728A790AAF1ULL }, /* XSUM_XXH64_testdata[6940] */ + { 3470, 0x000000009E3779B1ULL, 0x9C4467381271BAB9ULL }, /* XSUM_XXH64_testdata[6941] */ + { 3471, 0x0000000000000000ULL, 0xB0DEDEC43DDFB9D5ULL }, /* XSUM_XXH64_testdata[6942] */ + { 3471, 0x000000009E3779B1ULL, 0x522DAF4905F12C99ULL }, /* XSUM_XXH64_testdata[6943] */ + { 3472, 0x0000000000000000ULL, 0x35C81AEA2F7E3994ULL }, /* XSUM_XXH64_testdata[6944] */ + { 3472, 0x000000009E3779B1ULL, 0x7031FFB850713BF6ULL }, /* XSUM_XXH64_testdata[6945] */ + { 3473, 0x0000000000000000ULL, 0xE55657B9EB11AAD6ULL }, /* XSUM_XXH64_testdata[6946] */ + { 3473, 0x000000009E3779B1ULL, 0x5D865E8D64289E5CULL }, /* XSUM_XXH64_testdata[6947] */ + { 3474, 0x0000000000000000ULL, 0x22E14FD598C19672ULL }, /* XSUM_XXH64_testdata[6948] */ + { 3474, 0x000000009E3779B1ULL, 0xB7946055700E0155ULL }, /* XSUM_XXH64_testdata[6949] */ + { 3475, 0x0000000000000000ULL, 0x04D739AFD8F4A3B0ULL }, /* XSUM_XXH64_testdata[6950] */ + { 3475, 0x000000009E3779B1ULL, 0xF20A2603538E671EULL }, /* XSUM_XXH64_testdata[6951] */ + { 3476, 0x0000000000000000ULL, 0xF8A3781630038513ULL }, /* XSUM_XXH64_testdata[6952] */ + { 3476, 0x000000009E3779B1ULL, 0xC3E7A711FE0DCC46ULL }, /* XSUM_XXH64_testdata[6953] */ + { 3477, 0x0000000000000000ULL, 0x1E4CAAC68B9E0D7BULL }, /* XSUM_XXH64_testdata[6954] */ + { 3477, 0x000000009E3779B1ULL, 0x4D67177F55998FCFULL }, /* XSUM_XXH64_testdata[6955] */ + { 3478, 0x0000000000000000ULL, 0x8BA954A163FFB576ULL }, /* XSUM_XXH64_testdata[6956] */ + { 3478, 0x000000009E3779B1ULL, 0xF1B02671C4CA7B07ULL }, /* XSUM_XXH64_testdata[6957] */ + { 3479, 0x0000000000000000ULL, 0x17D6ACB8D66D8196ULL }, /* XSUM_XXH64_testdata[6958] */ + { 3479, 0x000000009E3779B1ULL, 0x30B475CB60808309ULL }, /* XSUM_XXH64_testdata[6959] */ + { 3480, 0x0000000000000000ULL, 0x2874D0CE3DB35CA2ULL }, /* XSUM_XXH64_testdata[6960] */ + { 3480, 0x000000009E3779B1ULL, 0x5A953E545322C088ULL }, /* XSUM_XXH64_testdata[6961] */ + { 3481, 0x0000000000000000ULL, 0x0A7C8EADCCFDE2EDULL }, /* XSUM_XXH64_testdata[6962] */ + { 3481, 0x000000009E3779B1ULL, 0xF896B8F17D5F6604ULL }, /* XSUM_XXH64_testdata[6963] */ + { 3482, 0x0000000000000000ULL, 0x45598F2E87A1960BULL }, /* XSUM_XXH64_testdata[6964] */ + { 3482, 0x000000009E3779B1ULL, 0x63E35A12DED8F09CULL }, /* XSUM_XXH64_testdata[6965] */ + { 3483, 0x0000000000000000ULL, 0xD4778490F3274C36ULL }, /* XSUM_XXH64_testdata[6966] */ + { 3483, 0x000000009E3779B1ULL, 0xD7CA29D1A0CA1125ULL }, /* XSUM_XXH64_testdata[6967] */ + { 3484, 0x0000000000000000ULL, 0x6029C8690BF1EA67ULL }, /* XSUM_XXH64_testdata[6968] */ + { 3484, 0x000000009E3779B1ULL, 0x280C48012EB3CF27ULL }, /* XSUM_XXH64_testdata[6969] */ + { 3485, 0x0000000000000000ULL, 0x0675BC370AAB9D8EULL }, /* XSUM_XXH64_testdata[6970] */ + { 3485, 0x000000009E3779B1ULL, 0x0AEC1D2F2FCB7A8FULL }, /* XSUM_XXH64_testdata[6971] */ + { 3486, 0x0000000000000000ULL, 0xF00C1193A440E2F1ULL }, /* XSUM_XXH64_testdata[6972] */ + { 3486, 0x000000009E3779B1ULL, 0xF1BFF92693732237ULL }, /* XSUM_XXH64_testdata[6973] */ + { 3487, 0x0000000000000000ULL, 0x3DE10F662E8740D1ULL }, /* XSUM_XXH64_testdata[6974] */ + { 3487, 0x000000009E3779B1ULL, 0x109745FF6287BC41ULL }, /* XSUM_XXH64_testdata[6975] */ + { 3488, 0x0000000000000000ULL, 0xDC211DE9381C51B6ULL }, /* XSUM_XXH64_testdata[6976] */ + { 3488, 0x000000009E3779B1ULL, 0xE2AE702886A03923ULL }, /* XSUM_XXH64_testdata[6977] */ + { 3489, 0x0000000000000000ULL, 0x08D618A7C0EAE601ULL }, /* XSUM_XXH64_testdata[6978] */ + { 3489, 0x000000009E3779B1ULL, 0xC9913FBE1D8E5BB3ULL }, /* XSUM_XXH64_testdata[6979] */ + { 3490, 0x0000000000000000ULL, 0x48316FF37DAAD72FULL }, /* XSUM_XXH64_testdata[6980] */ + { 3490, 0x000000009E3779B1ULL, 0x11B10211BF8538FAULL }, /* XSUM_XXH64_testdata[6981] */ + { 3491, 0x0000000000000000ULL, 0x5B75F1CFDACAF557ULL }, /* XSUM_XXH64_testdata[6982] */ + { 3491, 0x000000009E3779B1ULL, 0x934FA1DD51724B81ULL }, /* XSUM_XXH64_testdata[6983] */ + { 3492, 0x0000000000000000ULL, 0xFDA9B2DBF6AB2656ULL }, /* XSUM_XXH64_testdata[6984] */ + { 3492, 0x000000009E3779B1ULL, 0x2E6030FC5467FF32ULL }, /* XSUM_XXH64_testdata[6985] */ + { 3493, 0x0000000000000000ULL, 0x50B8BF65953BD16AULL }, /* XSUM_XXH64_testdata[6986] */ + { 3493, 0x000000009E3779B1ULL, 0xD2C8951203C1C15DULL }, /* XSUM_XXH64_testdata[6987] */ + { 3494, 0x0000000000000000ULL, 0xA0C2A283EAE15487ULL }, /* XSUM_XXH64_testdata[6988] */ + { 3494, 0x000000009E3779B1ULL, 0x8B9D43430237910DULL }, /* XSUM_XXH64_testdata[6989] */ + { 3495, 0x0000000000000000ULL, 0x5ACEA62837A59896ULL }, /* XSUM_XXH64_testdata[6990] */ + { 3495, 0x000000009E3779B1ULL, 0xD46F9DB4B78FFAB8ULL }, /* XSUM_XXH64_testdata[6991] */ + { 3496, 0x0000000000000000ULL, 0xBB19D46A91E070C9ULL }, /* XSUM_XXH64_testdata[6992] */ + { 3496, 0x000000009E3779B1ULL, 0xEC2237E9470E739CULL }, /* XSUM_XXH64_testdata[6993] */ + { 3497, 0x0000000000000000ULL, 0xF9AF49826B056FEFULL }, /* XSUM_XXH64_testdata[6994] */ + { 3497, 0x000000009E3779B1ULL, 0x4525FED6367119C7ULL }, /* XSUM_XXH64_testdata[6995] */ + { 3498, 0x0000000000000000ULL, 0x9077F7074556E72CULL }, /* XSUM_XXH64_testdata[6996] */ + { 3498, 0x000000009E3779B1ULL, 0xA3E312742677D94DULL }, /* XSUM_XXH64_testdata[6997] */ + { 3499, 0x0000000000000000ULL, 0xFAB59575A637AAA3ULL }, /* XSUM_XXH64_testdata[6998] */ + { 3499, 0x000000009E3779B1ULL, 0xB970E40ECDCFEC64ULL }, /* XSUM_XXH64_testdata[6999] */ + { 3500, 0x0000000000000000ULL, 0x412E70EDA7D80C67ULL }, /* XSUM_XXH64_testdata[7000] */ + { 3500, 0x000000009E3779B1ULL, 0x87E8D6F941223F8DULL }, /* XSUM_XXH64_testdata[7001] */ + { 3501, 0x0000000000000000ULL, 0x601A0F00FEBD3655ULL }, /* XSUM_XXH64_testdata[7002] */ + { 3501, 0x000000009E3779B1ULL, 0xBFD11D042A1EF759ULL }, /* XSUM_XXH64_testdata[7003] */ + { 3502, 0x0000000000000000ULL, 0x9D24561EFEEB9279ULL }, /* XSUM_XXH64_testdata[7004] */ + { 3502, 0x000000009E3779B1ULL, 0x2C802095A94A60D2ULL }, /* XSUM_XXH64_testdata[7005] */ + { 3503, 0x0000000000000000ULL, 0xF9050BA3198C24B2ULL }, /* XSUM_XXH64_testdata[7006] */ + { 3503, 0x000000009E3779B1ULL, 0xEBF760E64F37DF55ULL }, /* XSUM_XXH64_testdata[7007] */ + { 3504, 0x0000000000000000ULL, 0x2B6EE7B2E8681FD5ULL }, /* XSUM_XXH64_testdata[7008] */ + { 3504, 0x000000009E3779B1ULL, 0xF56F4D80FDBBBD9AULL }, /* XSUM_XXH64_testdata[7009] */ + { 3505, 0x0000000000000000ULL, 0x94A17F386950D333ULL }, /* XSUM_XXH64_testdata[7010] */ + { 3505, 0x000000009E3779B1ULL, 0xE62B08B97041EF75ULL }, /* XSUM_XXH64_testdata[7011] */ + { 3506, 0x0000000000000000ULL, 0xBE036D9DF122D1D3ULL }, /* XSUM_XXH64_testdata[7012] */ + { 3506, 0x000000009E3779B1ULL, 0x794808727C2B07AAULL }, /* XSUM_XXH64_testdata[7013] */ + { 3507, 0x0000000000000000ULL, 0xE442F070EC6EC083ULL }, /* XSUM_XXH64_testdata[7014] */ + { 3507, 0x000000009E3779B1ULL, 0xA36193541C6FDA04ULL }, /* XSUM_XXH64_testdata[7015] */ + { 3508, 0x0000000000000000ULL, 0x3B0F6F163AF062C2ULL }, /* XSUM_XXH64_testdata[7016] */ + { 3508, 0x000000009E3779B1ULL, 0xB6C6D77EDC3771D8ULL }, /* XSUM_XXH64_testdata[7017] */ + { 3509, 0x0000000000000000ULL, 0xF9EF2ABB0423266EULL }, /* XSUM_XXH64_testdata[7018] */ + { 3509, 0x000000009E3779B1ULL, 0x6943E515677AB452ULL }, /* XSUM_XXH64_testdata[7019] */ + { 3510, 0x0000000000000000ULL, 0xB0B84CEFD8FE6340ULL }, /* XSUM_XXH64_testdata[7020] */ + { 3510, 0x000000009E3779B1ULL, 0x08737D8DDC8120AEULL }, /* XSUM_XXH64_testdata[7021] */ + { 3511, 0x0000000000000000ULL, 0x933520C087EB1251ULL }, /* XSUM_XXH64_testdata[7022] */ + { 3511, 0x000000009E3779B1ULL, 0x42F36808B4BA4A84ULL }, /* XSUM_XXH64_testdata[7023] */ + { 3512, 0x0000000000000000ULL, 0xF500957EFD5826CFULL }, /* XSUM_XXH64_testdata[7024] */ + { 3512, 0x000000009E3779B1ULL, 0x07F27423CFFEB907ULL }, /* XSUM_XXH64_testdata[7025] */ + { 3513, 0x0000000000000000ULL, 0xA073D00F51FA370FULL }, /* XSUM_XXH64_testdata[7026] */ + { 3513, 0x000000009E3779B1ULL, 0x8BCA01E064347E13ULL }, /* XSUM_XXH64_testdata[7027] */ + { 3514, 0x0000000000000000ULL, 0xA509D39D3D41B160ULL }, /* XSUM_XXH64_testdata[7028] */ + { 3514, 0x000000009E3779B1ULL, 0x03AD6B263276CF25ULL }, /* XSUM_XXH64_testdata[7029] */ + { 3515, 0x0000000000000000ULL, 0x6D05820E225928E6ULL }, /* XSUM_XXH64_testdata[7030] */ + { 3515, 0x000000009E3779B1ULL, 0xF944F8CE371EA6B2ULL }, /* XSUM_XXH64_testdata[7031] */ + { 3516, 0x0000000000000000ULL, 0xACAD0AEA6312CD29ULL }, /* XSUM_XXH64_testdata[7032] */ + { 3516, 0x000000009E3779B1ULL, 0x0DCB0767C513A0FCULL }, /* XSUM_XXH64_testdata[7033] */ + { 3517, 0x0000000000000000ULL, 0x227EC6DE80B6B529ULL }, /* XSUM_XXH64_testdata[7034] */ + { 3517, 0x000000009E3779B1ULL, 0x1A7002046866C06EULL }, /* XSUM_XXH64_testdata[7035] */ + { 3518, 0x0000000000000000ULL, 0xCED19EBFBA55E1F5ULL }, /* XSUM_XXH64_testdata[7036] */ + { 3518, 0x000000009E3779B1ULL, 0xB09F5F1AE07C9815ULL }, /* XSUM_XXH64_testdata[7037] */ + { 3519, 0x0000000000000000ULL, 0xB98833762EE1B7D7ULL }, /* XSUM_XXH64_testdata[7038] */ + { 3519, 0x000000009E3779B1ULL, 0x6128C517E4B55EC9ULL }, /* XSUM_XXH64_testdata[7039] */ + { 3520, 0x0000000000000000ULL, 0xA47787E9C6EEDC87ULL }, /* XSUM_XXH64_testdata[7040] */ + { 3520, 0x000000009E3779B1ULL, 0xC38A874875CD07B8ULL }, /* XSUM_XXH64_testdata[7041] */ + { 3521, 0x0000000000000000ULL, 0xE0B94226A2A57EBEULL }, /* XSUM_XXH64_testdata[7042] */ + { 3521, 0x000000009E3779B1ULL, 0x9302C1E217CA5722ULL }, /* XSUM_XXH64_testdata[7043] */ + { 3522, 0x0000000000000000ULL, 0x0C184784E80525CDULL }, /* XSUM_XXH64_testdata[7044] */ + { 3522, 0x000000009E3779B1ULL, 0x9E9AF48BDCE69A9FULL }, /* XSUM_XXH64_testdata[7045] */ + { 3523, 0x0000000000000000ULL, 0xE1C76DD43F07F23FULL }, /* XSUM_XXH64_testdata[7046] */ + { 3523, 0x000000009E3779B1ULL, 0xABEBF784DF811BD6ULL }, /* XSUM_XXH64_testdata[7047] */ + { 3524, 0x0000000000000000ULL, 0x09219D2A72005F96ULL }, /* XSUM_XXH64_testdata[7048] */ + { 3524, 0x000000009E3779B1ULL, 0xF4EDA92DDBB5BDA4ULL }, /* XSUM_XXH64_testdata[7049] */ + { 3525, 0x0000000000000000ULL, 0x69E3BE476347871CULL }, /* XSUM_XXH64_testdata[7050] */ + { 3525, 0x000000009E3779B1ULL, 0x8501BCD6CB8F9BBCULL }, /* XSUM_XXH64_testdata[7051] */ + { 3526, 0x0000000000000000ULL, 0x519091412F11F828ULL }, /* XSUM_XXH64_testdata[7052] */ + { 3526, 0x000000009E3779B1ULL, 0x7F608D522965BCD3ULL }, /* XSUM_XXH64_testdata[7053] */ + { 3527, 0x0000000000000000ULL, 0xEA147D23534A4996ULL }, /* XSUM_XXH64_testdata[7054] */ + { 3527, 0x000000009E3779B1ULL, 0xB4BFF826AA1E13E5ULL }, /* XSUM_XXH64_testdata[7055] */ + { 3528, 0x0000000000000000ULL, 0x1777C4B4A499C25CULL }, /* XSUM_XXH64_testdata[7056] */ + { 3528, 0x000000009E3779B1ULL, 0x3BBF6DAE6C7BC1DBULL }, /* XSUM_XXH64_testdata[7057] */ + { 3529, 0x0000000000000000ULL, 0x03D857E19995B564ULL }, /* XSUM_XXH64_testdata[7058] */ + { 3529, 0x000000009E3779B1ULL, 0x337EDDBCFA20F771ULL }, /* XSUM_XXH64_testdata[7059] */ + { 3530, 0x0000000000000000ULL, 0xA28CC557AF44A2A8ULL }, /* XSUM_XXH64_testdata[7060] */ + { 3530, 0x000000009E3779B1ULL, 0x321F9CC679B9B829ULL }, /* XSUM_XXH64_testdata[7061] */ + { 3531, 0x0000000000000000ULL, 0x84C96E245D893C3EULL }, /* XSUM_XXH64_testdata[7062] */ + { 3531, 0x000000009E3779B1ULL, 0x70034B4C8182B07DULL }, /* XSUM_XXH64_testdata[7063] */ + { 3532, 0x0000000000000000ULL, 0x1F07CB136AF0F28BULL }, /* XSUM_XXH64_testdata[7064] */ + { 3532, 0x000000009E3779B1ULL, 0xCD65D4416CF08762ULL }, /* XSUM_XXH64_testdata[7065] */ + { 3533, 0x0000000000000000ULL, 0x073109B115390747ULL }, /* XSUM_XXH64_testdata[7066] */ + { 3533, 0x000000009E3779B1ULL, 0xFF2A6DF46D94D8A7ULL }, /* XSUM_XXH64_testdata[7067] */ + { 3534, 0x0000000000000000ULL, 0xA8E2AF72ACDAAD60ULL }, /* XSUM_XXH64_testdata[7068] */ + { 3534, 0x000000009E3779B1ULL, 0x747980C588745E92ULL }, /* XSUM_XXH64_testdata[7069] */ + { 3535, 0x0000000000000000ULL, 0x2C97747E2A9BE0EAULL }, /* XSUM_XXH64_testdata[7070] */ + { 3535, 0x000000009E3779B1ULL, 0xE430743516771AFAULL }, /* XSUM_XXH64_testdata[7071] */ + { 3536, 0x0000000000000000ULL, 0x7C327DF86232D809ULL }, /* XSUM_XXH64_testdata[7072] */ + { 3536, 0x000000009E3779B1ULL, 0x0C1BCEC2C5223360ULL }, /* XSUM_XXH64_testdata[7073] */ + { 3537, 0x0000000000000000ULL, 0x65707A5BB439C306ULL }, /* XSUM_XXH64_testdata[7074] */ + { 3537, 0x000000009E3779B1ULL, 0x53E4B2D67C7BCE4EULL }, /* XSUM_XXH64_testdata[7075] */ + { 3538, 0x0000000000000000ULL, 0xC668524AAA7649EDULL }, /* XSUM_XXH64_testdata[7076] */ + { 3538, 0x000000009E3779B1ULL, 0xBB9B3FD6A4FB5303ULL }, /* XSUM_XXH64_testdata[7077] */ + { 3539, 0x0000000000000000ULL, 0x1A2B5086E3E478A4ULL }, /* XSUM_XXH64_testdata[7078] */ + { 3539, 0x000000009E3779B1ULL, 0x95DCFC674E79D4F9ULL }, /* XSUM_XXH64_testdata[7079] */ + { 3540, 0x0000000000000000ULL, 0x49C190C80A4706F2ULL }, /* XSUM_XXH64_testdata[7080] */ + { 3540, 0x000000009E3779B1ULL, 0x616D1CEF7C60DA9BULL }, /* XSUM_XXH64_testdata[7081] */ + { 3541, 0x0000000000000000ULL, 0x11213AFFB0979CAFULL }, /* XSUM_XXH64_testdata[7082] */ + { 3541, 0x000000009E3779B1ULL, 0xD21F8C1F4CBAEEBAULL }, /* XSUM_XXH64_testdata[7083] */ + { 3542, 0x0000000000000000ULL, 0x22ACDFE3EB80EB5DULL }, /* XSUM_XXH64_testdata[7084] */ + { 3542, 0x000000009E3779B1ULL, 0xF463F000BE1C6751ULL }, /* XSUM_XXH64_testdata[7085] */ + { 3543, 0x0000000000000000ULL, 0x8CEC304E06B9D325ULL }, /* XSUM_XXH64_testdata[7086] */ + { 3543, 0x000000009E3779B1ULL, 0xCA62DDBBBCED01E0ULL }, /* XSUM_XXH64_testdata[7087] */ + { 3544, 0x0000000000000000ULL, 0x4A8DD9E109B16AF6ULL }, /* XSUM_XXH64_testdata[7088] */ + { 3544, 0x000000009E3779B1ULL, 0xE63BADCC25966E96ULL }, /* XSUM_XXH64_testdata[7089] */ + { 3545, 0x0000000000000000ULL, 0x5ABF68CDF6819BEEULL }, /* XSUM_XXH64_testdata[7090] */ + { 3545, 0x000000009E3779B1ULL, 0x38531F97DA429BBFULL }, /* XSUM_XXH64_testdata[7091] */ + { 3546, 0x0000000000000000ULL, 0x9EBB58EDD5952834ULL }, /* XSUM_XXH64_testdata[7092] */ + { 3546, 0x000000009E3779B1ULL, 0x5448A905D2F89654ULL }, /* XSUM_XXH64_testdata[7093] */ + { 3547, 0x0000000000000000ULL, 0x4EF88E7EAE161312ULL }, /* XSUM_XXH64_testdata[7094] */ + { 3547, 0x000000009E3779B1ULL, 0x5E7C94FDD7DE9311ULL }, /* XSUM_XXH64_testdata[7095] */ + { 3548, 0x0000000000000000ULL, 0xD010D682FCF537AFULL }, /* XSUM_XXH64_testdata[7096] */ + { 3548, 0x000000009E3779B1ULL, 0xE8CD3B884E6A6F21ULL }, /* XSUM_XXH64_testdata[7097] */ + { 3549, 0x0000000000000000ULL, 0x86BE9BB4BEB04B03ULL }, /* XSUM_XXH64_testdata[7098] */ + { 3549, 0x000000009E3779B1ULL, 0x06063968D0F80876ULL }, /* XSUM_XXH64_testdata[7099] */ + { 3550, 0x0000000000000000ULL, 0xDCCE82CA577F2BB4ULL }, /* XSUM_XXH64_testdata[7100] */ + { 3550, 0x000000009E3779B1ULL, 0x86A8E302B9E4DC53ULL }, /* XSUM_XXH64_testdata[7101] */ + { 3551, 0x0000000000000000ULL, 0x33399BCFC00F3C61ULL }, /* XSUM_XXH64_testdata[7102] */ + { 3551, 0x000000009E3779B1ULL, 0x5DB7BA974BFA3FE3ULL }, /* XSUM_XXH64_testdata[7103] */ + { 3552, 0x0000000000000000ULL, 0xFF931344D16E6B0DULL }, /* XSUM_XXH64_testdata[7104] */ + { 3552, 0x000000009E3779B1ULL, 0x6DE057EE28136E61ULL }, /* XSUM_XXH64_testdata[7105] */ + { 3553, 0x0000000000000000ULL, 0xBF689F2B79570BD0ULL }, /* XSUM_XXH64_testdata[7106] */ + { 3553, 0x000000009E3779B1ULL, 0x83D6E9B609B9B4C6ULL }, /* XSUM_XXH64_testdata[7107] */ + { 3554, 0x0000000000000000ULL, 0x560B7704D8C75085ULL }, /* XSUM_XXH64_testdata[7108] */ + { 3554, 0x000000009E3779B1ULL, 0x8DE205EAFCADB4DDULL }, /* XSUM_XXH64_testdata[7109] */ + { 3555, 0x0000000000000000ULL, 0x62DB29345C269169ULL }, /* XSUM_XXH64_testdata[7110] */ + { 3555, 0x000000009E3779B1ULL, 0x2F5837794863A037ULL }, /* XSUM_XXH64_testdata[7111] */ + { 3556, 0x0000000000000000ULL, 0xE20B27BC85703E29ULL }, /* XSUM_XXH64_testdata[7112] */ + { 3556, 0x000000009E3779B1ULL, 0xC0225CFA97AD5C0AULL }, /* XSUM_XXH64_testdata[7113] */ + { 3557, 0x0000000000000000ULL, 0x1AE417BD64FC834EULL }, /* XSUM_XXH64_testdata[7114] */ + { 3557, 0x000000009E3779B1ULL, 0x9B9EBB0F641DF890ULL }, /* XSUM_XXH64_testdata[7115] */ + { 3558, 0x0000000000000000ULL, 0x90D30EE1ADB14704ULL }, /* XSUM_XXH64_testdata[7116] */ + { 3558, 0x000000009E3779B1ULL, 0x69AC1D92F90C25B6ULL }, /* XSUM_XXH64_testdata[7117] */ + { 3559, 0x0000000000000000ULL, 0x877971D10A9E606CULL }, /* XSUM_XXH64_testdata[7118] */ + { 3559, 0x000000009E3779B1ULL, 0xC5547B81570ED0F8ULL }, /* XSUM_XXH64_testdata[7119] */ + { 3560, 0x0000000000000000ULL, 0xD0512D7F554F3A18ULL }, /* XSUM_XXH64_testdata[7120] */ + { 3560, 0x000000009E3779B1ULL, 0xD5853AEBECC30DDEULL }, /* XSUM_XXH64_testdata[7121] */ + { 3561, 0x0000000000000000ULL, 0x79F5804AB1AE261BULL }, /* XSUM_XXH64_testdata[7122] */ + { 3561, 0x000000009E3779B1ULL, 0x6D5780785B48C2A0ULL }, /* XSUM_XXH64_testdata[7123] */ + { 3562, 0x0000000000000000ULL, 0xB78068E708986E49ULL }, /* XSUM_XXH64_testdata[7124] */ + { 3562, 0x000000009E3779B1ULL, 0xB60F8882A4177EECULL }, /* XSUM_XXH64_testdata[7125] */ + { 3563, 0x0000000000000000ULL, 0xD8851796AF730E3EULL }, /* XSUM_XXH64_testdata[7126] */ + { 3563, 0x000000009E3779B1ULL, 0x1A63CC72662F29A4ULL }, /* XSUM_XXH64_testdata[7127] */ + { 3564, 0x0000000000000000ULL, 0x487D85DBA3601068ULL }, /* XSUM_XXH64_testdata[7128] */ + { 3564, 0x000000009E3779B1ULL, 0x408E49E163131B96ULL }, /* XSUM_XXH64_testdata[7129] */ + { 3565, 0x0000000000000000ULL, 0x4FBC01ABE4626283ULL }, /* XSUM_XXH64_testdata[7130] */ + { 3565, 0x000000009E3779B1ULL, 0x3EEEE140AD50C317ULL }, /* XSUM_XXH64_testdata[7131] */ + { 3566, 0x0000000000000000ULL, 0x94278B4842DA0460ULL }, /* XSUM_XXH64_testdata[7132] */ + { 3566, 0x000000009E3779B1ULL, 0x128E6229563639E1ULL }, /* XSUM_XXH64_testdata[7133] */ + { 3567, 0x0000000000000000ULL, 0x06532D9566BCBC57ULL }, /* XSUM_XXH64_testdata[7134] */ + { 3567, 0x000000009E3779B1ULL, 0x2D443DCC2A555FB2ULL }, /* XSUM_XXH64_testdata[7135] */ + { 3568, 0x0000000000000000ULL, 0xAF89C71F14ACBB67ULL }, /* XSUM_XXH64_testdata[7136] */ + { 3568, 0x000000009E3779B1ULL, 0x91E9FCBCEF9AF016ULL }, /* XSUM_XXH64_testdata[7137] */ + { 3569, 0x0000000000000000ULL, 0x6F3C1B9909FEDFABULL }, /* XSUM_XXH64_testdata[7138] */ + { 3569, 0x000000009E3779B1ULL, 0x0AD450ADA26FF483ULL }, /* XSUM_XXH64_testdata[7139] */ + { 3570, 0x0000000000000000ULL, 0xAC23D7A53D8B57A3ULL }, /* XSUM_XXH64_testdata[7140] */ + { 3570, 0x000000009E3779B1ULL, 0xBD9FCD06B5086151ULL }, /* XSUM_XXH64_testdata[7141] */ + { 3571, 0x0000000000000000ULL, 0x6B506671E514B30CULL }, /* XSUM_XXH64_testdata[7142] */ + { 3571, 0x000000009E3779B1ULL, 0x15F0A855B84247F2ULL }, /* XSUM_XXH64_testdata[7143] */ + { 3572, 0x0000000000000000ULL, 0x491FB762957A9D65ULL }, /* XSUM_XXH64_testdata[7144] */ + { 3572, 0x000000009E3779B1ULL, 0x0308443C3E93694CULL }, /* XSUM_XXH64_testdata[7145] */ + { 3573, 0x0000000000000000ULL, 0x9404BE50A44AE27EULL }, /* XSUM_XXH64_testdata[7146] */ + { 3573, 0x000000009E3779B1ULL, 0xB0B3646B943E86B9ULL }, /* XSUM_XXH64_testdata[7147] */ + { 3574, 0x0000000000000000ULL, 0x0706739DA0FF247CULL }, /* XSUM_XXH64_testdata[7148] */ + { 3574, 0x000000009E3779B1ULL, 0xA117ED2EF01640E4ULL }, /* XSUM_XXH64_testdata[7149] */ + { 3575, 0x0000000000000000ULL, 0x88875D225629DDE7ULL }, /* XSUM_XXH64_testdata[7150] */ + { 3575, 0x000000009E3779B1ULL, 0xD8CE71C163A69180ULL }, /* XSUM_XXH64_testdata[7151] */ + { 3576, 0x0000000000000000ULL, 0x26FC74BEF40A2511ULL }, /* XSUM_XXH64_testdata[7152] */ + { 3576, 0x000000009E3779B1ULL, 0xE7E52C6AB8D2736AULL }, /* XSUM_XXH64_testdata[7153] */ + { 3577, 0x0000000000000000ULL, 0x1A34F73CC5BA6FC7ULL }, /* XSUM_XXH64_testdata[7154] */ + { 3577, 0x000000009E3779B1ULL, 0xF8CD6524C4092DFAULL }, /* XSUM_XXH64_testdata[7155] */ + { 3578, 0x0000000000000000ULL, 0x192FCF58BA2C2B81ULL }, /* XSUM_XXH64_testdata[7156] */ + { 3578, 0x000000009E3779B1ULL, 0x40225817B8632730ULL }, /* XSUM_XXH64_testdata[7157] */ + { 3579, 0x0000000000000000ULL, 0x6ED3513BB21D4832ULL }, /* XSUM_XXH64_testdata[7158] */ + { 3579, 0x000000009E3779B1ULL, 0x7D60A85828F6AC7AULL }, /* XSUM_XXH64_testdata[7159] */ + { 3580, 0x0000000000000000ULL, 0x074FA7C9FF3184ADULL }, /* XSUM_XXH64_testdata[7160] */ + { 3580, 0x000000009E3779B1ULL, 0x9C1E9A2308019777ULL }, /* XSUM_XXH64_testdata[7161] */ + { 3581, 0x0000000000000000ULL, 0x41B18545823FC6B4ULL }, /* XSUM_XXH64_testdata[7162] */ + { 3581, 0x000000009E3779B1ULL, 0xA6F30667E9228820ULL }, /* XSUM_XXH64_testdata[7163] */ + { 3582, 0x0000000000000000ULL, 0x50DCB3BBA2580250ULL }, /* XSUM_XXH64_testdata[7164] */ + { 3582, 0x000000009E3779B1ULL, 0xB467F2788E3E00E3ULL }, /* XSUM_XXH64_testdata[7165] */ + { 3583, 0x0000000000000000ULL, 0xE24A9D2FEC424C1FULL }, /* XSUM_XXH64_testdata[7166] */ + { 3583, 0x000000009E3779B1ULL, 0x70397EFF03269FD6ULL }, /* XSUM_XXH64_testdata[7167] */ + { 3584, 0x0000000000000000ULL, 0xD72A79D8FE59F840ULL }, /* XSUM_XXH64_testdata[7168] */ + { 3584, 0x000000009E3779B1ULL, 0xD9934ED3A2C52118ULL }, /* XSUM_XXH64_testdata[7169] */ + { 3585, 0x0000000000000000ULL, 0x2D11C8FFAFD22AC1ULL }, /* XSUM_XXH64_testdata[7170] */ + { 3585, 0x000000009E3779B1ULL, 0x96212DD404163058ULL }, /* XSUM_XXH64_testdata[7171] */ + { 3586, 0x0000000000000000ULL, 0x1A34B5751CA1F361ULL }, /* XSUM_XXH64_testdata[7172] */ + { 3586, 0x000000009E3779B1ULL, 0x259B682F62FAD489ULL }, /* XSUM_XXH64_testdata[7173] */ + { 3587, 0x0000000000000000ULL, 0x47B928C4AABCEFD0ULL }, /* XSUM_XXH64_testdata[7174] */ + { 3587, 0x000000009E3779B1ULL, 0x188F8904CFAB3512ULL }, /* XSUM_XXH64_testdata[7175] */ + { 3588, 0x0000000000000000ULL, 0x53F16CB55EE4891EULL }, /* XSUM_XXH64_testdata[7176] */ + { 3588, 0x000000009E3779B1ULL, 0x150A05D720F5C036ULL }, /* XSUM_XXH64_testdata[7177] */ + { 3589, 0x0000000000000000ULL, 0xBD99836324DE5C7CULL }, /* XSUM_XXH64_testdata[7178] */ + { 3589, 0x000000009E3779B1ULL, 0x88258B1E5E330ED1ULL }, /* XSUM_XXH64_testdata[7179] */ + { 3590, 0x0000000000000000ULL, 0x1E1CCAA72ABE21BDULL }, /* XSUM_XXH64_testdata[7180] */ + { 3590, 0x000000009E3779B1ULL, 0x86E66B99654F64BBULL }, /* XSUM_XXH64_testdata[7181] */ + { 3591, 0x0000000000000000ULL, 0x65DE4317BA517C4CULL }, /* XSUM_XXH64_testdata[7182] */ + { 3591, 0x000000009E3779B1ULL, 0x054BE401B8901D1AULL }, /* XSUM_XXH64_testdata[7183] */ + { 3592, 0x0000000000000000ULL, 0x652608703633DB6CULL }, /* XSUM_XXH64_testdata[7184] */ + { 3592, 0x000000009E3779B1ULL, 0xEE40FAAA260AE897ULL }, /* XSUM_XXH64_testdata[7185] */ + { 3593, 0x0000000000000000ULL, 0x20C1AB97FAE80E05ULL }, /* XSUM_XXH64_testdata[7186] */ + { 3593, 0x000000009E3779B1ULL, 0xA8F652661BACC4D0ULL }, /* XSUM_XXH64_testdata[7187] */ + { 3594, 0x0000000000000000ULL, 0x579C3E059DFF8786ULL }, /* XSUM_XXH64_testdata[7188] */ + { 3594, 0x000000009E3779B1ULL, 0xF1EA67F97B10FA31ULL }, /* XSUM_XXH64_testdata[7189] */ + { 3595, 0x0000000000000000ULL, 0x2E1D7C9497F5DF15ULL }, /* XSUM_XXH64_testdata[7190] */ + { 3595, 0x000000009E3779B1ULL, 0x20EE0C4893767B38ULL }, /* XSUM_XXH64_testdata[7191] */ + { 3596, 0x0000000000000000ULL, 0x0B48F9C885C7FC90ULL }, /* XSUM_XXH64_testdata[7192] */ + { 3596, 0x000000009E3779B1ULL, 0xED2F847B6A235B5CULL }, /* XSUM_XXH64_testdata[7193] */ + { 3597, 0x0000000000000000ULL, 0xFAA4601FB524BBE9ULL }, /* XSUM_XXH64_testdata[7194] */ + { 3597, 0x000000009E3779B1ULL, 0x6305F2914891FB4AULL }, /* XSUM_XXH64_testdata[7195] */ + { 3598, 0x0000000000000000ULL, 0x0CDF84C9D9C76183ULL }, /* XSUM_XXH64_testdata[7196] */ + { 3598, 0x000000009E3779B1ULL, 0x350CACD3FF15689BULL }, /* XSUM_XXH64_testdata[7197] */ + { 3599, 0x0000000000000000ULL, 0xED498867002DE453ULL }, /* XSUM_XXH64_testdata[7198] */ + { 3599, 0x000000009E3779B1ULL, 0xC137725F8BC87D57ULL }, /* XSUM_XXH64_testdata[7199] */ + { 3600, 0x0000000000000000ULL, 0x0E85273E55802E7AULL }, /* XSUM_XXH64_testdata[7200] */ + { 3600, 0x000000009E3779B1ULL, 0xE7A83F5E592A189EULL }, /* XSUM_XXH64_testdata[7201] */ + { 3601, 0x0000000000000000ULL, 0xE422DC8806D7A1DCULL }, /* XSUM_XXH64_testdata[7202] */ + { 3601, 0x000000009E3779B1ULL, 0x5A42AF83C20606A5ULL }, /* XSUM_XXH64_testdata[7203] */ + { 3602, 0x0000000000000000ULL, 0x8537A5F33A4F2E20ULL }, /* XSUM_XXH64_testdata[7204] */ + { 3602, 0x000000009E3779B1ULL, 0x254149E6C194B729ULL }, /* XSUM_XXH64_testdata[7205] */ + { 3603, 0x0000000000000000ULL, 0x69F953B605AEED3BULL }, /* XSUM_XXH64_testdata[7206] */ + { 3603, 0x000000009E3779B1ULL, 0xCB83DBECBA82DDAAULL }, /* XSUM_XXH64_testdata[7207] */ + { 3604, 0x0000000000000000ULL, 0xC1D622BC9FF28B23ULL }, /* XSUM_XXH64_testdata[7208] */ + { 3604, 0x000000009E3779B1ULL, 0xFA104FB63342ACA9ULL }, /* XSUM_XXH64_testdata[7209] */ + { 3605, 0x0000000000000000ULL, 0x035D6A1DBFF96FABULL }, /* XSUM_XXH64_testdata[7210] */ + { 3605, 0x000000009E3779B1ULL, 0xB14AA464FD40AA60ULL }, /* XSUM_XXH64_testdata[7211] */ + { 3606, 0x0000000000000000ULL, 0xB535443CA5910E56ULL }, /* XSUM_XXH64_testdata[7212] */ + { 3606, 0x000000009E3779B1ULL, 0x6D3DA52AC46A5099ULL }, /* XSUM_XXH64_testdata[7213] */ + { 3607, 0x0000000000000000ULL, 0x0644E75762030357ULL }, /* XSUM_XXH64_testdata[7214] */ + { 3607, 0x000000009E3779B1ULL, 0x82916041CACC1F80ULL }, /* XSUM_XXH64_testdata[7215] */ + { 3608, 0x0000000000000000ULL, 0x04506D08D4F289E4ULL }, /* XSUM_XXH64_testdata[7216] */ + { 3608, 0x000000009E3779B1ULL, 0xA5AD8ECD9CAF87BAULL }, /* XSUM_XXH64_testdata[7217] */ + { 3609, 0x0000000000000000ULL, 0xF599B933809492EBULL }, /* XSUM_XXH64_testdata[7218] */ + { 3609, 0x000000009E3779B1ULL, 0x1D009D8CA1ABA2F5ULL }, /* XSUM_XXH64_testdata[7219] */ + { 3610, 0x0000000000000000ULL, 0x65AD85A4D3D3DAE4ULL }, /* XSUM_XXH64_testdata[7220] */ + { 3610, 0x000000009E3779B1ULL, 0x752D57433F3833C2ULL }, /* XSUM_XXH64_testdata[7221] */ + { 3611, 0x0000000000000000ULL, 0x99F34CF83DEB6E39ULL }, /* XSUM_XXH64_testdata[7222] */ + { 3611, 0x000000009E3779B1ULL, 0x34926508A2A765BFULL }, /* XSUM_XXH64_testdata[7223] */ + { 3612, 0x0000000000000000ULL, 0xC4DA4B26BD0EC6CBULL }, /* XSUM_XXH64_testdata[7224] */ + { 3612, 0x000000009E3779B1ULL, 0xEF07BF0B462AC020ULL }, /* XSUM_XXH64_testdata[7225] */ + { 3613, 0x0000000000000000ULL, 0x69949C14D65AC396ULL }, /* XSUM_XXH64_testdata[7226] */ + { 3613, 0x000000009E3779B1ULL, 0x6F4D310058AE4716ULL }, /* XSUM_XXH64_testdata[7227] */ + { 3614, 0x0000000000000000ULL, 0xA321AAD0E6C53D9EULL }, /* XSUM_XXH64_testdata[7228] */ + { 3614, 0x000000009E3779B1ULL, 0xE1C0B6F86472ED7BULL }, /* XSUM_XXH64_testdata[7229] */ + { 3615, 0x0000000000000000ULL, 0x8E2AE8CD638340FBULL }, /* XSUM_XXH64_testdata[7230] */ + { 3615, 0x000000009E3779B1ULL, 0x42A4572EE50D9C81ULL }, /* XSUM_XXH64_testdata[7231] */ + { 3616, 0x0000000000000000ULL, 0x29C2502BD0EF9DC2ULL }, /* XSUM_XXH64_testdata[7232] */ + { 3616, 0x000000009E3779B1ULL, 0xFA4B69A908B6C5A2ULL }, /* XSUM_XXH64_testdata[7233] */ + { 3617, 0x0000000000000000ULL, 0x2168F90FAA5A5447ULL }, /* XSUM_XXH64_testdata[7234] */ + { 3617, 0x000000009E3779B1ULL, 0xEB81E41E731AE802ULL }, /* XSUM_XXH64_testdata[7235] */ + { 3618, 0x0000000000000000ULL, 0xBB5FC739DC0A51A1ULL }, /* XSUM_XXH64_testdata[7236] */ + { 3618, 0x000000009E3779B1ULL, 0x11E1EB8FF4912623ULL }, /* XSUM_XXH64_testdata[7237] */ + { 3619, 0x0000000000000000ULL, 0x75FF9BB0A8FB2415ULL }, /* XSUM_XXH64_testdata[7238] */ + { 3619, 0x000000009E3779B1ULL, 0xCFB4696294AEBFF6ULL }, /* XSUM_XXH64_testdata[7239] */ + { 3620, 0x0000000000000000ULL, 0xFA115AF36854BB84ULL }, /* XSUM_XXH64_testdata[7240] */ + { 3620, 0x000000009E3779B1ULL, 0x0E257FA889BCF57CULL }, /* XSUM_XXH64_testdata[7241] */ + { 3621, 0x0000000000000000ULL, 0x9F14CC74139EAE29ULL }, /* XSUM_XXH64_testdata[7242] */ + { 3621, 0x000000009E3779B1ULL, 0xC5249E98EC1E5ECDULL }, /* XSUM_XXH64_testdata[7243] */ + { 3622, 0x0000000000000000ULL, 0x6E622C07CAB35DC5ULL }, /* XSUM_XXH64_testdata[7244] */ + { 3622, 0x000000009E3779B1ULL, 0xAD3442D01298E8E5ULL }, /* XSUM_XXH64_testdata[7245] */ + { 3623, 0x0000000000000000ULL, 0xABB5A5D924A4B6B8ULL }, /* XSUM_XXH64_testdata[7246] */ + { 3623, 0x000000009E3779B1ULL, 0x91449D1F3DCE0415ULL }, /* XSUM_XXH64_testdata[7247] */ + { 3624, 0x0000000000000000ULL, 0xE0D4BF74CE466530ULL }, /* XSUM_XXH64_testdata[7248] */ + { 3624, 0x000000009E3779B1ULL, 0xEF1CE83B22BF8D51ULL }, /* XSUM_XXH64_testdata[7249] */ + { 3625, 0x0000000000000000ULL, 0x312872E9B42CD186ULL }, /* XSUM_XXH64_testdata[7250] */ + { 3625, 0x000000009E3779B1ULL, 0x38F959A23EF2A5B2ULL }, /* XSUM_XXH64_testdata[7251] */ + { 3626, 0x0000000000000000ULL, 0xC52753AA928E5771ULL }, /* XSUM_XXH64_testdata[7252] */ + { 3626, 0x000000009E3779B1ULL, 0xA644F6DD2389009BULL }, /* XSUM_XXH64_testdata[7253] */ + { 3627, 0x0000000000000000ULL, 0xFEF84A99D1F1EE48ULL }, /* XSUM_XXH64_testdata[7254] */ + { 3627, 0x000000009E3779B1ULL, 0xB9589A6FF1E70D5FULL }, /* XSUM_XXH64_testdata[7255] */ + { 3628, 0x0000000000000000ULL, 0x7622439E4262E96BULL }, /* XSUM_XXH64_testdata[7256] */ + { 3628, 0x000000009E3779B1ULL, 0x31744B377F81D9E8ULL }, /* XSUM_XXH64_testdata[7257] */ + { 3629, 0x0000000000000000ULL, 0x4D4A1414351AAFE6ULL }, /* XSUM_XXH64_testdata[7258] */ + { 3629, 0x000000009E3779B1ULL, 0xF6BEE4CEA97E38D6ULL }, /* XSUM_XXH64_testdata[7259] */ + { 3630, 0x0000000000000000ULL, 0x0C95AC52C7590FA4ULL }, /* XSUM_XXH64_testdata[7260] */ + { 3630, 0x000000009E3779B1ULL, 0x2B40658D307BB53BULL }, /* XSUM_XXH64_testdata[7261] */ + { 3631, 0x0000000000000000ULL, 0x894665325080243AULL }, /* XSUM_XXH64_testdata[7262] */ + { 3631, 0x000000009E3779B1ULL, 0x0F7AC9C63CE8A66BULL }, /* XSUM_XXH64_testdata[7263] */ + { 3632, 0x0000000000000000ULL, 0x4D9D7356FEB13A4CULL }, /* XSUM_XXH64_testdata[7264] */ + { 3632, 0x000000009E3779B1ULL, 0x78AB48276C4AE553ULL }, /* XSUM_XXH64_testdata[7265] */ + { 3633, 0x0000000000000000ULL, 0x74631382B4C2AF39ULL }, /* XSUM_XXH64_testdata[7266] */ + { 3633, 0x000000009E3779B1ULL, 0x1B9D08B024FAC5D1ULL }, /* XSUM_XXH64_testdata[7267] */ + { 3634, 0x0000000000000000ULL, 0x5B0D246F9128924CULL }, /* XSUM_XXH64_testdata[7268] */ + { 3634, 0x000000009E3779B1ULL, 0x269C64CD8FB309D8ULL }, /* XSUM_XXH64_testdata[7269] */ + { 3635, 0x0000000000000000ULL, 0xF053015BE643D6B0ULL }, /* XSUM_XXH64_testdata[7270] */ + { 3635, 0x000000009E3779B1ULL, 0x71076537848A0554ULL }, /* XSUM_XXH64_testdata[7271] */ + { 3636, 0x0000000000000000ULL, 0xB790F5B24425B4FBULL }, /* XSUM_XXH64_testdata[7272] */ + { 3636, 0x000000009E3779B1ULL, 0xCD6EC5334159CD50ULL }, /* XSUM_XXH64_testdata[7273] */ + { 3637, 0x0000000000000000ULL, 0x4718A52A461D5063ULL }, /* XSUM_XXH64_testdata[7274] */ + { 3637, 0x000000009E3779B1ULL, 0xB10D2149A960ABB0ULL }, /* XSUM_XXH64_testdata[7275] */ + { 3638, 0x0000000000000000ULL, 0x176F9C698695D4EFULL }, /* XSUM_XXH64_testdata[7276] */ + { 3638, 0x000000009E3779B1ULL, 0xC37F39FF93668CAFULL }, /* XSUM_XXH64_testdata[7277] */ + { 3639, 0x0000000000000000ULL, 0xA63D9341F16CDF3EULL }, /* XSUM_XXH64_testdata[7278] */ + { 3639, 0x000000009E3779B1ULL, 0x988D299876F89271ULL }, /* XSUM_XXH64_testdata[7279] */ + { 3640, 0x0000000000000000ULL, 0xA10691A921B5E944ULL }, /* XSUM_XXH64_testdata[7280] */ + { 3640, 0x000000009E3779B1ULL, 0x955C79DD60610E80ULL }, /* XSUM_XXH64_testdata[7281] */ + { 3641, 0x0000000000000000ULL, 0xE2EFBD20EA72A8BAULL }, /* XSUM_XXH64_testdata[7282] */ + { 3641, 0x000000009E3779B1ULL, 0xEF16C6570AADDC5EULL }, /* XSUM_XXH64_testdata[7283] */ + { 3642, 0x0000000000000000ULL, 0x7C182F0704016487ULL }, /* XSUM_XXH64_testdata[7284] */ + { 3642, 0x000000009E3779B1ULL, 0x89FAD96BDEE7329FULL }, /* XSUM_XXH64_testdata[7285] */ + { 3643, 0x0000000000000000ULL, 0x193C8FECA1900EBDULL }, /* XSUM_XXH64_testdata[7286] */ + { 3643, 0x000000009E3779B1ULL, 0x9C662C584F1BD447ULL }, /* XSUM_XXH64_testdata[7287] */ + { 3644, 0x0000000000000000ULL, 0x3091C771A52F84C5ULL }, /* XSUM_XXH64_testdata[7288] */ + { 3644, 0x000000009E3779B1ULL, 0x020AA49588392803ULL }, /* XSUM_XXH64_testdata[7289] */ + { 3645, 0x0000000000000000ULL, 0x730474C468DA4D9BULL }, /* XSUM_XXH64_testdata[7290] */ + { 3645, 0x000000009E3779B1ULL, 0x7E52DBA8965A88DBULL }, /* XSUM_XXH64_testdata[7291] */ + { 3646, 0x0000000000000000ULL, 0x73CD3ECFEF7526D3ULL }, /* XSUM_XXH64_testdata[7292] */ + { 3646, 0x000000009E3779B1ULL, 0xEF7EBED82C6F9840ULL }, /* XSUM_XXH64_testdata[7293] */ + { 3647, 0x0000000000000000ULL, 0x8E6F17A47F3C864BULL }, /* XSUM_XXH64_testdata[7294] */ + { 3647, 0x000000009E3779B1ULL, 0x003359F9C41321A3ULL }, /* XSUM_XXH64_testdata[7295] */ + { 3648, 0x0000000000000000ULL, 0x4E7ABDC64ACF4A1FULL }, /* XSUM_XXH64_testdata[7296] */ + { 3648, 0x000000009E3779B1ULL, 0x97D2F84886343E01ULL }, /* XSUM_XXH64_testdata[7297] */ + { 3649, 0x0000000000000000ULL, 0x2BE5D5536F9C4219ULL }, /* XSUM_XXH64_testdata[7298] */ + { 3649, 0x000000009E3779B1ULL, 0x2924C0DA8460FCABULL }, /* XSUM_XXH64_testdata[7299] */ + { 3650, 0x0000000000000000ULL, 0xCA2CD9A61736F8D8ULL }, /* XSUM_XXH64_testdata[7300] */ + { 3650, 0x000000009E3779B1ULL, 0xCD325BFCF83385F6ULL }, /* XSUM_XXH64_testdata[7301] */ + { 3651, 0x0000000000000000ULL, 0x87BA6F5CF4C92A92ULL }, /* XSUM_XXH64_testdata[7302] */ + { 3651, 0x000000009E3779B1ULL, 0x11705FBB323F18B6ULL }, /* XSUM_XXH64_testdata[7303] */ + { 3652, 0x0000000000000000ULL, 0xCBE8ED4901035674ULL }, /* XSUM_XXH64_testdata[7304] */ + { 3652, 0x000000009E3779B1ULL, 0x6293C2C7A4BDFD05ULL }, /* XSUM_XXH64_testdata[7305] */ + { 3653, 0x0000000000000000ULL, 0x7EA69200FE527EC5ULL }, /* XSUM_XXH64_testdata[7306] */ + { 3653, 0x000000009E3779B1ULL, 0x654BC1CCE27832C2ULL }, /* XSUM_XXH64_testdata[7307] */ + { 3654, 0x0000000000000000ULL, 0x5ED27C0F6B5FC517ULL }, /* XSUM_XXH64_testdata[7308] */ + { 3654, 0x000000009E3779B1ULL, 0x8D76FD8C7F6BC3C7ULL }, /* XSUM_XXH64_testdata[7309] */ + { 3655, 0x0000000000000000ULL, 0x8FCDB22F745957A3ULL }, /* XSUM_XXH64_testdata[7310] */ + { 3655, 0x000000009E3779B1ULL, 0xD8D2F5213DC3F453ULL }, /* XSUM_XXH64_testdata[7311] */ + { 3656, 0x0000000000000000ULL, 0x04376CD3D4233EA2ULL }, /* XSUM_XXH64_testdata[7312] */ + { 3656, 0x000000009E3779B1ULL, 0xE455CCEE30D380E5ULL }, /* XSUM_XXH64_testdata[7313] */ + { 3657, 0x0000000000000000ULL, 0xEA4DC21B73C16C45ULL }, /* XSUM_XXH64_testdata[7314] */ + { 3657, 0x000000009E3779B1ULL, 0x69C0FB3C0788E3EEULL }, /* XSUM_XXH64_testdata[7315] */ + { 3658, 0x0000000000000000ULL, 0x13D445AFC6CE2BA3ULL }, /* XSUM_XXH64_testdata[7316] */ + { 3658, 0x000000009E3779B1ULL, 0xC5BE658587AEC331ULL }, /* XSUM_XXH64_testdata[7317] */ + { 3659, 0x0000000000000000ULL, 0x2B5DF4569E912323ULL }, /* XSUM_XXH64_testdata[7318] */ + { 3659, 0x000000009E3779B1ULL, 0x571DCA5EC5FED99AULL }, /* XSUM_XXH64_testdata[7319] */ + { 3660, 0x0000000000000000ULL, 0xC9FAED347179FB4CULL }, /* XSUM_XXH64_testdata[7320] */ + { 3660, 0x000000009E3779B1ULL, 0x65E817E81B5F1943ULL }, /* XSUM_XXH64_testdata[7321] */ + { 3661, 0x0000000000000000ULL, 0xC5E13E539BC53E81ULL }, /* XSUM_XXH64_testdata[7322] */ + { 3661, 0x000000009E3779B1ULL, 0xCF6E097C4A3A59AFULL }, /* XSUM_XXH64_testdata[7323] */ + { 3662, 0x0000000000000000ULL, 0xEB75A7E3EC5C70F5ULL }, /* XSUM_XXH64_testdata[7324] */ + { 3662, 0x000000009E3779B1ULL, 0xEFF7BAD68471D17DULL }, /* XSUM_XXH64_testdata[7325] */ + { 3663, 0x0000000000000000ULL, 0x9008DD83611490A1ULL }, /* XSUM_XXH64_testdata[7326] */ + { 3663, 0x000000009E3779B1ULL, 0x0214A64ED40F8CCEULL }, /* XSUM_XXH64_testdata[7327] */ + { 3664, 0x0000000000000000ULL, 0x7848AF3CACEBD96FULL }, /* XSUM_XXH64_testdata[7328] */ + { 3664, 0x000000009E3779B1ULL, 0x6C92790AC27791A8ULL }, /* XSUM_XXH64_testdata[7329] */ + { 3665, 0x0000000000000000ULL, 0xEE16E3738A447E33ULL }, /* XSUM_XXH64_testdata[7330] */ + { 3665, 0x000000009E3779B1ULL, 0x7360A3655B571685ULL }, /* XSUM_XXH64_testdata[7331] */ + { 3666, 0x0000000000000000ULL, 0xFDE4A6C46FD75C8AULL }, /* XSUM_XXH64_testdata[7332] */ + { 3666, 0x000000009E3779B1ULL, 0xACCDC78AB3EAFB12ULL }, /* XSUM_XXH64_testdata[7333] */ + { 3667, 0x0000000000000000ULL, 0x89C2F9A7ED5ADBF6ULL }, /* XSUM_XXH64_testdata[7334] */ + { 3667, 0x000000009E3779B1ULL, 0xD0FE1788FDF1DDBFULL }, /* XSUM_XXH64_testdata[7335] */ + { 3668, 0x0000000000000000ULL, 0x79655B0723CBC862ULL }, /* XSUM_XXH64_testdata[7336] */ + { 3668, 0x000000009E3779B1ULL, 0x026FC37BB041E570ULL }, /* XSUM_XXH64_testdata[7337] */ + { 3669, 0x0000000000000000ULL, 0x918931336EA8363EULL }, /* XSUM_XXH64_testdata[7338] */ + { 3669, 0x000000009E3779B1ULL, 0x56370886E674B097ULL }, /* XSUM_XXH64_testdata[7339] */ + { 3670, 0x0000000000000000ULL, 0x4C053447AFB4D680ULL }, /* XSUM_XXH64_testdata[7340] */ + { 3670, 0x000000009E3779B1ULL, 0xE2AC3443C3A7976FULL }, /* XSUM_XXH64_testdata[7341] */ + { 3671, 0x0000000000000000ULL, 0x361B34B6FFC029D8ULL }, /* XSUM_XXH64_testdata[7342] */ + { 3671, 0x000000009E3779B1ULL, 0x824E22E34E4FB034ULL }, /* XSUM_XXH64_testdata[7343] */ + { 3672, 0x0000000000000000ULL, 0x73689BD8AA14AFE7ULL }, /* XSUM_XXH64_testdata[7344] */ + { 3672, 0x000000009E3779B1ULL, 0xF816E1BF1E98A371ULL }, /* XSUM_XXH64_testdata[7345] */ + { 3673, 0x0000000000000000ULL, 0x300BE0248F7F1180ULL }, /* XSUM_XXH64_testdata[7346] */ + { 3673, 0x000000009E3779B1ULL, 0x728EB31FC44CF641ULL }, /* XSUM_XXH64_testdata[7347] */ + { 3674, 0x0000000000000000ULL, 0x78B5EC74E9FBD422ULL }, /* XSUM_XXH64_testdata[7348] */ + { 3674, 0x000000009E3779B1ULL, 0x013B7A46C02C93A1ULL }, /* XSUM_XXH64_testdata[7349] */ + { 3675, 0x0000000000000000ULL, 0x119C7C53D5BB8261ULL }, /* XSUM_XXH64_testdata[7350] */ + { 3675, 0x000000009E3779B1ULL, 0x9E729BE04B2495E3ULL }, /* XSUM_XXH64_testdata[7351] */ + { 3676, 0x0000000000000000ULL, 0x6762D2528229BDF0ULL }, /* XSUM_XXH64_testdata[7352] */ + { 3676, 0x000000009E3779B1ULL, 0x4CF7F38D5103008EULL }, /* XSUM_XXH64_testdata[7353] */ + { 3677, 0x0000000000000000ULL, 0x913DB39D8A005471ULL }, /* XSUM_XXH64_testdata[7354] */ + { 3677, 0x000000009E3779B1ULL, 0xCFC1FB16B1B28C06ULL }, /* XSUM_XXH64_testdata[7355] */ + { 3678, 0x0000000000000000ULL, 0x2AD94B81BF47FD9AULL }, /* XSUM_XXH64_testdata[7356] */ + { 3678, 0x000000009E3779B1ULL, 0xF40FEB74FDC5044AULL }, /* XSUM_XXH64_testdata[7357] */ + { 3679, 0x0000000000000000ULL, 0xFA24EB2877031782ULL }, /* XSUM_XXH64_testdata[7358] */ + { 3679, 0x000000009E3779B1ULL, 0x9860334FA52A814CULL }, /* XSUM_XXH64_testdata[7359] */ + { 3680, 0x0000000000000000ULL, 0x28FEA24FB3C321FDULL }, /* XSUM_XXH64_testdata[7360] */ + { 3680, 0x000000009E3779B1ULL, 0xFED061ED8ECC0736ULL }, /* XSUM_XXH64_testdata[7361] */ + { 3681, 0x0000000000000000ULL, 0x8E6C392983777F5FULL }, /* XSUM_XXH64_testdata[7362] */ + { 3681, 0x000000009E3779B1ULL, 0x8E251050DA04085BULL }, /* XSUM_XXH64_testdata[7363] */ + { 3682, 0x0000000000000000ULL, 0x4CA60BD7874EEA91ULL }, /* XSUM_XXH64_testdata[7364] */ + { 3682, 0x000000009E3779B1ULL, 0xCA90C1AAF1F9757EULL }, /* XSUM_XXH64_testdata[7365] */ + { 3683, 0x0000000000000000ULL, 0xBD05215804B82411ULL }, /* XSUM_XXH64_testdata[7366] */ + { 3683, 0x000000009E3779B1ULL, 0xB3DC92D42F3EA151ULL }, /* XSUM_XXH64_testdata[7367] */ + { 3684, 0x0000000000000000ULL, 0x519A59A46EAC5FEAULL }, /* XSUM_XXH64_testdata[7368] */ + { 3684, 0x000000009E3779B1ULL, 0xC8DBA4C2E73EE8A7ULL }, /* XSUM_XXH64_testdata[7369] */ + { 3685, 0x0000000000000000ULL, 0x035F75D3ECB6B228ULL }, /* XSUM_XXH64_testdata[7370] */ + { 3685, 0x000000009E3779B1ULL, 0x0A61A02C224B011DULL }, /* XSUM_XXH64_testdata[7371] */ + { 3686, 0x0000000000000000ULL, 0x8028658D7FE5BAD3ULL }, /* XSUM_XXH64_testdata[7372] */ + { 3686, 0x000000009E3779B1ULL, 0x48C8D3C29C5F2979ULL }, /* XSUM_XXH64_testdata[7373] */ + { 3687, 0x0000000000000000ULL, 0x3C2F628B953455BDULL }, /* XSUM_XXH64_testdata[7374] */ + { 3687, 0x000000009E3779B1ULL, 0x262FF3733ECF4B9AULL }, /* XSUM_XXH64_testdata[7375] */ + { 3688, 0x0000000000000000ULL, 0x15920B9C0F3B0822ULL }, /* XSUM_XXH64_testdata[7376] */ + { 3688, 0x000000009E3779B1ULL, 0xCAE90A0477210681ULL }, /* XSUM_XXH64_testdata[7377] */ + { 3689, 0x0000000000000000ULL, 0x9762979B1CE5D015ULL }, /* XSUM_XXH64_testdata[7378] */ + { 3689, 0x000000009E3779B1ULL, 0xD896DE5F2956D4FEULL }, /* XSUM_XXH64_testdata[7379] */ + { 3690, 0x0000000000000000ULL, 0x871577712504B652ULL }, /* XSUM_XXH64_testdata[7380] */ + { 3690, 0x000000009E3779B1ULL, 0xFDB320DAE5F4B7E1ULL }, /* XSUM_XXH64_testdata[7381] */ + { 3691, 0x0000000000000000ULL, 0x2C6C649386C3D439ULL }, /* XSUM_XXH64_testdata[7382] */ + { 3691, 0x000000009E3779B1ULL, 0x0BEC1F5275E4908AULL }, /* XSUM_XXH64_testdata[7383] */ + { 3692, 0x0000000000000000ULL, 0xEF79B2FD16D16960ULL }, /* XSUM_XXH64_testdata[7384] */ + { 3692, 0x000000009E3779B1ULL, 0x55B72555047F2BDEULL }, /* XSUM_XXH64_testdata[7385] */ + { 3693, 0x0000000000000000ULL, 0x78D705AA9A2C28F9ULL }, /* XSUM_XXH64_testdata[7386] */ + { 3693, 0x000000009E3779B1ULL, 0xD37E9B60DC207243ULL }, /* XSUM_XXH64_testdata[7387] */ + { 3694, 0x0000000000000000ULL, 0x79F36AD4AF75183AULL }, /* XSUM_XXH64_testdata[7388] */ + { 3694, 0x000000009E3779B1ULL, 0x4F10240371FF761EULL }, /* XSUM_XXH64_testdata[7389] */ + { 3695, 0x0000000000000000ULL, 0x2211CF5198088CDCULL }, /* XSUM_XXH64_testdata[7390] */ + { 3695, 0x000000009E3779B1ULL, 0x01A860FDB04E4A05ULL }, /* XSUM_XXH64_testdata[7391] */ + { 3696, 0x0000000000000000ULL, 0x44B213D3B8D28436ULL }, /* XSUM_XXH64_testdata[7392] */ + { 3696, 0x000000009E3779B1ULL, 0x2BAEE3F521CB09AFULL }, /* XSUM_XXH64_testdata[7393] */ + { 3697, 0x0000000000000000ULL, 0xE45A77798CB26F0AULL }, /* XSUM_XXH64_testdata[7394] */ + { 3697, 0x000000009E3779B1ULL, 0x1617A63AA2A84A46ULL }, /* XSUM_XXH64_testdata[7395] */ + { 3698, 0x0000000000000000ULL, 0x8040B906ED5AB977ULL }, /* XSUM_XXH64_testdata[7396] */ + { 3698, 0x000000009E3779B1ULL, 0x95C9786883893E65ULL }, /* XSUM_XXH64_testdata[7397] */ + { 3699, 0x0000000000000000ULL, 0xC3E8E89435BFFF17ULL }, /* XSUM_XXH64_testdata[7398] */ + { 3699, 0x000000009E3779B1ULL, 0xDFDEE7839B5839E8ULL }, /* XSUM_XXH64_testdata[7399] */ + { 3700, 0x0000000000000000ULL, 0xC5BC9E1CD3897537ULL }, /* XSUM_XXH64_testdata[7400] */ + { 3700, 0x000000009E3779B1ULL, 0xA7CDE75A29551A8CULL }, /* XSUM_XXH64_testdata[7401] */ + { 3701, 0x0000000000000000ULL, 0x2D70A1BD8C35D964ULL }, /* XSUM_XXH64_testdata[7402] */ + { 3701, 0x000000009E3779B1ULL, 0x969DF4152E6627AEULL }, /* XSUM_XXH64_testdata[7403] */ + { 3702, 0x0000000000000000ULL, 0xC7B337097B1E05B7ULL }, /* XSUM_XXH64_testdata[7404] */ + { 3702, 0x000000009E3779B1ULL, 0xDE2AC6707CAF897BULL }, /* XSUM_XXH64_testdata[7405] */ + { 3703, 0x0000000000000000ULL, 0xE9F2BB817912913EULL }, /* XSUM_XXH64_testdata[7406] */ + { 3703, 0x000000009E3779B1ULL, 0x63ABB8B60589C6FEULL }, /* XSUM_XXH64_testdata[7407] */ + { 3704, 0x0000000000000000ULL, 0x1CBF6F0D780BB809ULL }, /* XSUM_XXH64_testdata[7408] */ + { 3704, 0x000000009E3779B1ULL, 0x507B28B4478DD8B7ULL }, /* XSUM_XXH64_testdata[7409] */ + { 3705, 0x0000000000000000ULL, 0xC6134562A95F79E7ULL }, /* XSUM_XXH64_testdata[7410] */ + { 3705, 0x000000009E3779B1ULL, 0xCBEE81CF253F0CAFULL }, /* XSUM_XXH64_testdata[7411] */ + { 3706, 0x0000000000000000ULL, 0x69BDA66619584041ULL }, /* XSUM_XXH64_testdata[7412] */ + { 3706, 0x000000009E3779B1ULL, 0xB412DD55A8377C75ULL }, /* XSUM_XXH64_testdata[7413] */ + { 3707, 0x0000000000000000ULL, 0x060204EABEC512EDULL }, /* XSUM_XXH64_testdata[7414] */ + { 3707, 0x000000009E3779B1ULL, 0x5F8678FE4DE9C528ULL }, /* XSUM_XXH64_testdata[7415] */ + { 3708, 0x0000000000000000ULL, 0x11878E94C0162278ULL }, /* XSUM_XXH64_testdata[7416] */ + { 3708, 0x000000009E3779B1ULL, 0xC61E27B0544CC737ULL }, /* XSUM_XXH64_testdata[7417] */ + { 3709, 0x0000000000000000ULL, 0xF645136A9C26905BULL }, /* XSUM_XXH64_testdata[7418] */ + { 3709, 0x000000009E3779B1ULL, 0xF965522429F521B6ULL }, /* XSUM_XXH64_testdata[7419] */ + { 3710, 0x0000000000000000ULL, 0x4DDE8F18A7D6ADD2ULL }, /* XSUM_XXH64_testdata[7420] */ + { 3710, 0x000000009E3779B1ULL, 0x0281E48041A794E0ULL }, /* XSUM_XXH64_testdata[7421] */ + { 3711, 0x0000000000000000ULL, 0x58593E9C350365AAULL }, /* XSUM_XXH64_testdata[7422] */ + { 3711, 0x000000009E3779B1ULL, 0x79EEEE4593551F1FULL }, /* XSUM_XXH64_testdata[7423] */ + { 3712, 0x0000000000000000ULL, 0x0E206A2AA052224AULL }, /* XSUM_XXH64_testdata[7424] */ + { 3712, 0x000000009E3779B1ULL, 0x0BB9DA17AEFE5704ULL }, /* XSUM_XXH64_testdata[7425] */ + { 3713, 0x0000000000000000ULL, 0xD36238644B7B86C6ULL }, /* XSUM_XXH64_testdata[7426] */ + { 3713, 0x000000009E3779B1ULL, 0xCC7EE9AE1DB1313CULL }, /* XSUM_XXH64_testdata[7427] */ + { 3714, 0x0000000000000000ULL, 0x1D3EFC3700847A74ULL }, /* XSUM_XXH64_testdata[7428] */ + { 3714, 0x000000009E3779B1ULL, 0x8388690AC31655FFULL }, /* XSUM_XXH64_testdata[7429] */ + { 3715, 0x0000000000000000ULL, 0xE9102409F7F9851AULL }, /* XSUM_XXH64_testdata[7430] */ + { 3715, 0x000000009E3779B1ULL, 0xACC0ECF27BC0F5F7ULL }, /* XSUM_XXH64_testdata[7431] */ + { 3716, 0x0000000000000000ULL, 0x2C61081EEB745AD3ULL }, /* XSUM_XXH64_testdata[7432] */ + { 3716, 0x000000009E3779B1ULL, 0xA0D912A8150D6C2AULL }, /* XSUM_XXH64_testdata[7433] */ + { 3717, 0x0000000000000000ULL, 0xDEA11F07ECFBE311ULL }, /* XSUM_XXH64_testdata[7434] */ + { 3717, 0x000000009E3779B1ULL, 0xE756D2262966BE70ULL }, /* XSUM_XXH64_testdata[7435] */ + { 3718, 0x0000000000000000ULL, 0x634E41678C50EB66ULL }, /* XSUM_XXH64_testdata[7436] */ + { 3718, 0x000000009E3779B1ULL, 0x27EF0172AEC26D2FULL }, /* XSUM_XXH64_testdata[7437] */ + { 3719, 0x0000000000000000ULL, 0xFAA0C88E80DED9D5ULL }, /* XSUM_XXH64_testdata[7438] */ + { 3719, 0x000000009E3779B1ULL, 0xEC4E1DA894D80B7EULL }, /* XSUM_XXH64_testdata[7439] */ + { 3720, 0x0000000000000000ULL, 0x04CB8EF3FA4CADCCULL }, /* XSUM_XXH64_testdata[7440] */ + { 3720, 0x000000009E3779B1ULL, 0x2A037D40BA9B4773ULL }, /* XSUM_XXH64_testdata[7441] */ + { 3721, 0x0000000000000000ULL, 0xFCFDD48275385D69ULL }, /* XSUM_XXH64_testdata[7442] */ + { 3721, 0x000000009E3779B1ULL, 0x688D0FCBB136B7F9ULL }, /* XSUM_XXH64_testdata[7443] */ + { 3722, 0x0000000000000000ULL, 0xDF40ECBABCF8E595ULL }, /* XSUM_XXH64_testdata[7444] */ + { 3722, 0x000000009E3779B1ULL, 0x4D046D706E65E729ULL }, /* XSUM_XXH64_testdata[7445] */ + { 3723, 0x0000000000000000ULL, 0xC4527A02881104ADULL }, /* XSUM_XXH64_testdata[7446] */ + { 3723, 0x000000009E3779B1ULL, 0x5571BDAFAC51CDBFULL }, /* XSUM_XXH64_testdata[7447] */ + { 3724, 0x0000000000000000ULL, 0x67BD956E5527F315ULL }, /* XSUM_XXH64_testdata[7448] */ + { 3724, 0x000000009E3779B1ULL, 0xB9753D7971683F85ULL }, /* XSUM_XXH64_testdata[7449] */ + { 3725, 0x0000000000000000ULL, 0x21004595AA447AF7ULL }, /* XSUM_XXH64_testdata[7450] */ + { 3725, 0x000000009E3779B1ULL, 0x4CD4D6348BACD3D0ULL }, /* XSUM_XXH64_testdata[7451] */ + { 3726, 0x0000000000000000ULL, 0xC8CD86E6B90E367DULL }, /* XSUM_XXH64_testdata[7452] */ + { 3726, 0x000000009E3779B1ULL, 0x38AEDF4903325397ULL }, /* XSUM_XXH64_testdata[7453] */ + { 3727, 0x0000000000000000ULL, 0xB73A083620E73BAFULL }, /* XSUM_XXH64_testdata[7454] */ + { 3727, 0x000000009E3779B1ULL, 0x224717FED615BE2AULL }, /* XSUM_XXH64_testdata[7455] */ + { 3728, 0x0000000000000000ULL, 0x1A902047AF492EBEULL }, /* XSUM_XXH64_testdata[7456] */ + { 3728, 0x000000009E3779B1ULL, 0xFC7F2CFC0BF810DDULL }, /* XSUM_XXH64_testdata[7457] */ + { 3729, 0x0000000000000000ULL, 0xC46065273CC65F32ULL }, /* XSUM_XXH64_testdata[7458] */ + { 3729, 0x000000009E3779B1ULL, 0xE7571EF61DB5E70CULL }, /* XSUM_XXH64_testdata[7459] */ + { 3730, 0x0000000000000000ULL, 0xA416900DE4DA153DULL }, /* XSUM_XXH64_testdata[7460] */ + { 3730, 0x000000009E3779B1ULL, 0x34F11A1F91E0F3DEULL }, /* XSUM_XXH64_testdata[7461] */ + { 3731, 0x0000000000000000ULL, 0x51627E4DC84F3738ULL }, /* XSUM_XXH64_testdata[7462] */ + { 3731, 0x000000009E3779B1ULL, 0x88D0EB700C438772ULL }, /* XSUM_XXH64_testdata[7463] */ + { 3732, 0x0000000000000000ULL, 0x82989926C070EC00ULL }, /* XSUM_XXH64_testdata[7464] */ + { 3732, 0x000000009E3779B1ULL, 0x64CC2FB5794D0DBEULL }, /* XSUM_XXH64_testdata[7465] */ + { 3733, 0x0000000000000000ULL, 0x51480C63D149DE45ULL }, /* XSUM_XXH64_testdata[7466] */ + { 3733, 0x000000009E3779B1ULL, 0xBD0C7AF665AD514DULL }, /* XSUM_XXH64_testdata[7467] */ + { 3734, 0x0000000000000000ULL, 0xA3D8709AB9242031ULL }, /* XSUM_XXH64_testdata[7468] */ + { 3734, 0x000000009E3779B1ULL, 0x96A158D8510BC871ULL }, /* XSUM_XXH64_testdata[7469] */ + { 3735, 0x0000000000000000ULL, 0x4329651B0DF10BBBULL }, /* XSUM_XXH64_testdata[7470] */ + { 3735, 0x000000009E3779B1ULL, 0x093A620FB01DF2D7ULL }, /* XSUM_XXH64_testdata[7471] */ + { 3736, 0x0000000000000000ULL, 0x8F7728D4A7A55B2DULL }, /* XSUM_XXH64_testdata[7472] */ + { 3736, 0x000000009E3779B1ULL, 0x3EC68BD954F08A2CULL }, /* XSUM_XXH64_testdata[7473] */ + { 3737, 0x0000000000000000ULL, 0xE0A7D1DE1E291466ULL }, /* XSUM_XXH64_testdata[7474] */ + { 3737, 0x000000009E3779B1ULL, 0x0B70937325A56B9EULL }, /* XSUM_XXH64_testdata[7475] */ + { 3738, 0x0000000000000000ULL, 0x3645BE033C971C85ULL }, /* XSUM_XXH64_testdata[7476] */ + { 3738, 0x000000009E3779B1ULL, 0xB5E661297D1BE4F8ULL }, /* XSUM_XXH64_testdata[7477] */ + { 3739, 0x0000000000000000ULL, 0xCD6FDBBF6A5CF1F9ULL }, /* XSUM_XXH64_testdata[7478] */ + { 3739, 0x000000009E3779B1ULL, 0x39F7B31F439332B2ULL }, /* XSUM_XXH64_testdata[7479] */ + { 3740, 0x0000000000000000ULL, 0xE1599403FB967D71ULL }, /* XSUM_XXH64_testdata[7480] */ + { 3740, 0x000000009E3779B1ULL, 0xB7A2EA37FE4D46DEULL }, /* XSUM_XXH64_testdata[7481] */ + { 3741, 0x0000000000000000ULL, 0x3FBA63EB417B8A14ULL }, /* XSUM_XXH64_testdata[7482] */ + { 3741, 0x000000009E3779B1ULL, 0xD9EE28399CDB520BULL }, /* XSUM_XXH64_testdata[7483] */ + { 3742, 0x0000000000000000ULL, 0xDF6F54618601BF98ULL }, /* XSUM_XXH64_testdata[7484] */ + { 3742, 0x000000009E3779B1ULL, 0x8180F2BC1EA5A9E9ULL }, /* XSUM_XXH64_testdata[7485] */ + { 3743, 0x0000000000000000ULL, 0x56A23D81D6D88637ULL }, /* XSUM_XXH64_testdata[7486] */ + { 3743, 0x000000009E3779B1ULL, 0x676E38B4FFFE7A75ULL }, /* XSUM_XXH64_testdata[7487] */ + { 3744, 0x0000000000000000ULL, 0xEBFFC4AE3FABA5E7ULL }, /* XSUM_XXH64_testdata[7488] */ + { 3744, 0x000000009E3779B1ULL, 0xE0CCBAED790C7199ULL }, /* XSUM_XXH64_testdata[7489] */ + { 3745, 0x0000000000000000ULL, 0x470BA8548A70528FULL }, /* XSUM_XXH64_testdata[7490] */ + { 3745, 0x000000009E3779B1ULL, 0x82515FFE94ECA053ULL }, /* XSUM_XXH64_testdata[7491] */ + { 3746, 0x0000000000000000ULL, 0xC0D62110C3A34D40ULL }, /* XSUM_XXH64_testdata[7492] */ + { 3746, 0x000000009E3779B1ULL, 0x9BF2F4D220BFC27FULL }, /* XSUM_XXH64_testdata[7493] */ + { 3747, 0x0000000000000000ULL, 0x7C26066F0C0CC692ULL }, /* XSUM_XXH64_testdata[7494] */ + { 3747, 0x000000009E3779B1ULL, 0x43A3AA137C6A0166ULL }, /* XSUM_XXH64_testdata[7495] */ + { 3748, 0x0000000000000000ULL, 0x82651A33EADF8141ULL }, /* XSUM_XXH64_testdata[7496] */ + { 3748, 0x000000009E3779B1ULL, 0xD5E880A785F3A924ULL }, /* XSUM_XXH64_testdata[7497] */ + { 3749, 0x0000000000000000ULL, 0xACA3871D26D7FB7CULL }, /* XSUM_XXH64_testdata[7498] */ + { 3749, 0x000000009E3779B1ULL, 0x2D761FC93C139AA0ULL }, /* XSUM_XXH64_testdata[7499] */ + { 3750, 0x0000000000000000ULL, 0x425B92D7E123AE17ULL }, /* XSUM_XXH64_testdata[7500] */ + { 3750, 0x000000009E3779B1ULL, 0x5392397D97129280ULL }, /* XSUM_XXH64_testdata[7501] */ + { 3751, 0x0000000000000000ULL, 0x27AE536C7B38E843ULL }, /* XSUM_XXH64_testdata[7502] */ + { 3751, 0x000000009E3779B1ULL, 0x1EF11592999C6026ULL }, /* XSUM_XXH64_testdata[7503] */ + { 3752, 0x0000000000000000ULL, 0x29AAF9A858A933E7ULL }, /* XSUM_XXH64_testdata[7504] */ + { 3752, 0x000000009E3779B1ULL, 0x969F89A99D1F9236ULL }, /* XSUM_XXH64_testdata[7505] */ + { 3753, 0x0000000000000000ULL, 0x00A789E2F0F7F2E5ULL }, /* XSUM_XXH64_testdata[7506] */ + { 3753, 0x000000009E3779B1ULL, 0x45089C59D286C749ULL }, /* XSUM_XXH64_testdata[7507] */ + { 3754, 0x0000000000000000ULL, 0xE26F0759D4BBE9EEULL }, /* XSUM_XXH64_testdata[7508] */ + { 3754, 0x000000009E3779B1ULL, 0x0A1CEA21B94C2965ULL }, /* XSUM_XXH64_testdata[7509] */ + { 3755, 0x0000000000000000ULL, 0x3C06419B84B4F1EBULL }, /* XSUM_XXH64_testdata[7510] */ + { 3755, 0x000000009E3779B1ULL, 0xB231FB96682EE02DULL }, /* XSUM_XXH64_testdata[7511] */ + { 3756, 0x0000000000000000ULL, 0x31CD5F53848846FDULL }, /* XSUM_XXH64_testdata[7512] */ + { 3756, 0x000000009E3779B1ULL, 0x42FAD29D2F93340EULL }, /* XSUM_XXH64_testdata[7513] */ + { 3757, 0x0000000000000000ULL, 0x63FDAB5A023A0C4BULL }, /* XSUM_XXH64_testdata[7514] */ + { 3757, 0x000000009E3779B1ULL, 0xEA93A5EED4350696ULL }, /* XSUM_XXH64_testdata[7515] */ + { 3758, 0x0000000000000000ULL, 0x6CE394EFA1AA4C18ULL }, /* XSUM_XXH64_testdata[7516] */ + { 3758, 0x000000009E3779B1ULL, 0x0A250F8BDB9F8225ULL }, /* XSUM_XXH64_testdata[7517] */ + { 3759, 0x0000000000000000ULL, 0x8C85F07ACFFBA411ULL }, /* XSUM_XXH64_testdata[7518] */ + { 3759, 0x000000009E3779B1ULL, 0x309709D5ADCC9E0CULL }, /* XSUM_XXH64_testdata[7519] */ + { 3760, 0x0000000000000000ULL, 0x5B08C6D3A2C9C6BBULL }, /* XSUM_XXH64_testdata[7520] */ + { 3760, 0x000000009E3779B1ULL, 0x3CDDBBFE528C6765ULL }, /* XSUM_XXH64_testdata[7521] */ + { 3761, 0x0000000000000000ULL, 0x41A183EEB3757D34ULL }, /* XSUM_XXH64_testdata[7522] */ + { 3761, 0x000000009E3779B1ULL, 0x61D0736E4E93A52AULL }, /* XSUM_XXH64_testdata[7523] */ + { 3762, 0x0000000000000000ULL, 0x321FC374C19AB799ULL }, /* XSUM_XXH64_testdata[7524] */ + { 3762, 0x000000009E3779B1ULL, 0x2BFCD670AE648D4BULL }, /* XSUM_XXH64_testdata[7525] */ + { 3763, 0x0000000000000000ULL, 0xA0A70501A4E64172ULL }, /* XSUM_XXH64_testdata[7526] */ + { 3763, 0x000000009E3779B1ULL, 0x4F60E972194C489BULL }, /* XSUM_XXH64_testdata[7527] */ + { 3764, 0x0000000000000000ULL, 0x08A97974AEB5151EULL }, /* XSUM_XXH64_testdata[7528] */ + { 3764, 0x000000009E3779B1ULL, 0xEDA0124C5692DBF3ULL }, /* XSUM_XXH64_testdata[7529] */ + { 3765, 0x0000000000000000ULL, 0x130D740E72014992ULL }, /* XSUM_XXH64_testdata[7530] */ + { 3765, 0x000000009E3779B1ULL, 0xDEC713B1E305AFB4ULL }, /* XSUM_XXH64_testdata[7531] */ + { 3766, 0x0000000000000000ULL, 0x47EC4FB6150DCE9AULL }, /* XSUM_XXH64_testdata[7532] */ + { 3766, 0x000000009E3779B1ULL, 0xD62EA7182CE03526ULL }, /* XSUM_XXH64_testdata[7533] */ + { 3767, 0x0000000000000000ULL, 0x942CD058CE1A7349ULL }, /* XSUM_XXH64_testdata[7534] */ + { 3767, 0x000000009E3779B1ULL, 0xFF9B5D8CA5B1ABE3ULL }, /* XSUM_XXH64_testdata[7535] */ + { 3768, 0x0000000000000000ULL, 0x3B8BEB75D3B4260BULL }, /* XSUM_XXH64_testdata[7536] */ + { 3768, 0x000000009E3779B1ULL, 0xC30B6C94A70FBE18ULL }, /* XSUM_XXH64_testdata[7537] */ + { 3769, 0x0000000000000000ULL, 0x5CAFC9B46F1DE835ULL }, /* XSUM_XXH64_testdata[7538] */ + { 3769, 0x000000009E3779B1ULL, 0x46E23120FCCD82A8ULL }, /* XSUM_XXH64_testdata[7539] */ + { 3770, 0x0000000000000000ULL, 0x12FE2DDA1686FBDCULL }, /* XSUM_XXH64_testdata[7540] */ + { 3770, 0x000000009E3779B1ULL, 0x80CE0F7D543E417BULL }, /* XSUM_XXH64_testdata[7541] */ + { 3771, 0x0000000000000000ULL, 0x34FD16216F7A5693ULL }, /* XSUM_XXH64_testdata[7542] */ + { 3771, 0x000000009E3779B1ULL, 0x3A4965D4A1F7B90DULL }, /* XSUM_XXH64_testdata[7543] */ + { 3772, 0x0000000000000000ULL, 0x6E71B853542B84AAULL }, /* XSUM_XXH64_testdata[7544] */ + { 3772, 0x000000009E3779B1ULL, 0xFA7AB5B37A0C6756ULL }, /* XSUM_XXH64_testdata[7545] */ + { 3773, 0x0000000000000000ULL, 0x62D315074A9BA433ULL }, /* XSUM_XXH64_testdata[7546] */ + { 3773, 0x000000009E3779B1ULL, 0xA80C6C2BF850278EULL }, /* XSUM_XXH64_testdata[7547] */ + { 3774, 0x0000000000000000ULL, 0x2876679BBE30A470ULL }, /* XSUM_XXH64_testdata[7548] */ + { 3774, 0x000000009E3779B1ULL, 0xC47A1CE45B6317B1ULL }, /* XSUM_XXH64_testdata[7549] */ + { 3775, 0x0000000000000000ULL, 0x1926499BAC716AF6ULL }, /* XSUM_XXH64_testdata[7550] */ + { 3775, 0x000000009E3779B1ULL, 0x22D5FA8083F1C653ULL }, /* XSUM_XXH64_testdata[7551] */ + { 3776, 0x0000000000000000ULL, 0x28DABBF9DB4423FFULL }, /* XSUM_XXH64_testdata[7552] */ + { 3776, 0x000000009E3779B1ULL, 0x9CB6BF77DA9DA979ULL }, /* XSUM_XXH64_testdata[7553] */ + { 3777, 0x0000000000000000ULL, 0xB3DB9E830D96C2F6ULL }, /* XSUM_XXH64_testdata[7554] */ + { 3777, 0x000000009E3779B1ULL, 0x3935336832A1F82EULL }, /* XSUM_XXH64_testdata[7555] */ + { 3778, 0x0000000000000000ULL, 0x7AD17F350B8C34BFULL }, /* XSUM_XXH64_testdata[7556] */ + { 3778, 0x000000009E3779B1ULL, 0xD13693C4DD1B054DULL }, /* XSUM_XXH64_testdata[7557] */ + { 3779, 0x0000000000000000ULL, 0x38609FEEEE44875EULL }, /* XSUM_XXH64_testdata[7558] */ + { 3779, 0x000000009E3779B1ULL, 0x1AE2B9C8D34BD565ULL }, /* XSUM_XXH64_testdata[7559] */ + { 3780, 0x0000000000000000ULL, 0x9D418C8E53BAE5EBULL }, /* XSUM_XXH64_testdata[7560] */ + { 3780, 0x000000009E3779B1ULL, 0x948939A1DBA6DC69ULL }, /* XSUM_XXH64_testdata[7561] */ + { 3781, 0x0000000000000000ULL, 0x33152B6275463B15ULL }, /* XSUM_XXH64_testdata[7562] */ + { 3781, 0x000000009E3779B1ULL, 0xB62A7080066AB26CULL }, /* XSUM_XXH64_testdata[7563] */ + { 3782, 0x0000000000000000ULL, 0xFE8830373FFC5922ULL }, /* XSUM_XXH64_testdata[7564] */ + { 3782, 0x000000009E3779B1ULL, 0xE086B86BFCF85A59ULL }, /* XSUM_XXH64_testdata[7565] */ + { 3783, 0x0000000000000000ULL, 0xBF7F5ED284FCE6ABULL }, /* XSUM_XXH64_testdata[7566] */ + { 3783, 0x000000009E3779B1ULL, 0xC5EF1C16EF49B92CULL }, /* XSUM_XXH64_testdata[7567] */ + { 3784, 0x0000000000000000ULL, 0x26E99F1E4A9339EDULL }, /* XSUM_XXH64_testdata[7568] */ + { 3784, 0x000000009E3779B1ULL, 0x9A1A683B182B4834ULL }, /* XSUM_XXH64_testdata[7569] */ + { 3785, 0x0000000000000000ULL, 0xC9A4072357F56A81ULL }, /* XSUM_XXH64_testdata[7570] */ + { 3785, 0x000000009E3779B1ULL, 0xF5D031317E4386EDULL }, /* XSUM_XXH64_testdata[7571] */ + { 3786, 0x0000000000000000ULL, 0xFB7FEF7190165EE6ULL }, /* XSUM_XXH64_testdata[7572] */ + { 3786, 0x000000009E3779B1ULL, 0xB9523AB7BD7DBA87ULL }, /* XSUM_XXH64_testdata[7573] */ + { 3787, 0x0000000000000000ULL, 0xBD38046165A101A2ULL }, /* XSUM_XXH64_testdata[7574] */ + { 3787, 0x000000009E3779B1ULL, 0x9A5AC3B8490AD04CULL }, /* XSUM_XXH64_testdata[7575] */ + { 3788, 0x0000000000000000ULL, 0x90963B6FB5EA5B97ULL }, /* XSUM_XXH64_testdata[7576] */ + { 3788, 0x000000009E3779B1ULL, 0xA4EFE60A2BB83438ULL }, /* XSUM_XXH64_testdata[7577] */ + { 3789, 0x0000000000000000ULL, 0x816755F26BF27D69ULL }, /* XSUM_XXH64_testdata[7578] */ + { 3789, 0x000000009E3779B1ULL, 0x549238EECFCCAAF6ULL }, /* XSUM_XXH64_testdata[7579] */ + { 3790, 0x0000000000000000ULL, 0x076D80C5F5D815C8ULL }, /* XSUM_XXH64_testdata[7580] */ + { 3790, 0x000000009E3779B1ULL, 0x595283F2B6DB5768ULL }, /* XSUM_XXH64_testdata[7581] */ + { 3791, 0x0000000000000000ULL, 0x89FAD3B8C46E1ABBULL }, /* XSUM_XXH64_testdata[7582] */ + { 3791, 0x000000009E3779B1ULL, 0x5B0FD9C6F8C4DBD5ULL }, /* XSUM_XXH64_testdata[7583] */ + { 3792, 0x0000000000000000ULL, 0xB0B01CB8C62C2635ULL }, /* XSUM_XXH64_testdata[7584] */ + { 3792, 0x000000009E3779B1ULL, 0x62A098A713B1DF04ULL }, /* XSUM_XXH64_testdata[7585] */ + { 3793, 0x0000000000000000ULL, 0xF941C9CA23C17E2EULL }, /* XSUM_XXH64_testdata[7586] */ + { 3793, 0x000000009E3779B1ULL, 0x81193BA8079357ACULL }, /* XSUM_XXH64_testdata[7587] */ + { 3794, 0x0000000000000000ULL, 0xD0AA23A2D64125CDULL }, /* XSUM_XXH64_testdata[7588] */ + { 3794, 0x000000009E3779B1ULL, 0x0CAD221458852ECFULL }, /* XSUM_XXH64_testdata[7589] */ + { 3795, 0x0000000000000000ULL, 0xEF0B815DC382C99CULL }, /* XSUM_XXH64_testdata[7590] */ + { 3795, 0x000000009E3779B1ULL, 0x645C70B839517900ULL }, /* XSUM_XXH64_testdata[7591] */ + { 3796, 0x0000000000000000ULL, 0x841E3BC73C24B1AFULL }, /* XSUM_XXH64_testdata[7592] */ + { 3796, 0x000000009E3779B1ULL, 0x497294DB34D34ECCULL }, /* XSUM_XXH64_testdata[7593] */ + { 3797, 0x0000000000000000ULL, 0xB2D22FC2BF6D7A5DULL }, /* XSUM_XXH64_testdata[7594] */ + { 3797, 0x000000009E3779B1ULL, 0x8C981DAF18C8B95AULL }, /* XSUM_XXH64_testdata[7595] */ + { 3798, 0x0000000000000000ULL, 0x29A916D04348833BULL }, /* XSUM_XXH64_testdata[7596] */ + { 3798, 0x000000009E3779B1ULL, 0x6B04BB74D7C7B932ULL }, /* XSUM_XXH64_testdata[7597] */ + { 3799, 0x0000000000000000ULL, 0x61ACAE9191DBD896ULL }, /* XSUM_XXH64_testdata[7598] */ + { 3799, 0x000000009E3779B1ULL, 0x38463DE99666CB3AULL }, /* XSUM_XXH64_testdata[7599] */ + { 3800, 0x0000000000000000ULL, 0x5FECB36ABB0E6D5DULL }, /* XSUM_XXH64_testdata[7600] */ + { 3800, 0x000000009E3779B1ULL, 0xFC24459A52C0A0F6ULL }, /* XSUM_XXH64_testdata[7601] */ + { 3801, 0x0000000000000000ULL, 0xCE6C18A903EF1C2DULL }, /* XSUM_XXH64_testdata[7602] */ + { 3801, 0x000000009E3779B1ULL, 0xDE8C65B3BB401B7FULL }, /* XSUM_XXH64_testdata[7603] */ + { 3802, 0x0000000000000000ULL, 0x465FEC0C14D010CFULL }, /* XSUM_XXH64_testdata[7604] */ + { 3802, 0x000000009E3779B1ULL, 0xB4601CF490F363EFULL }, /* XSUM_XXH64_testdata[7605] */ + { 3803, 0x0000000000000000ULL, 0xD3375C89B4314985ULL }, /* XSUM_XXH64_testdata[7606] */ + { 3803, 0x000000009E3779B1ULL, 0x049B532FB770D301ULL }, /* XSUM_XXH64_testdata[7607] */ + { 3804, 0x0000000000000000ULL, 0x74164531A3BA0077ULL }, /* XSUM_XXH64_testdata[7608] */ + { 3804, 0x000000009E3779B1ULL, 0xA6AC41191966832DULL }, /* XSUM_XXH64_testdata[7609] */ + { 3805, 0x0000000000000000ULL, 0x161201F11A3BC5D4ULL }, /* XSUM_XXH64_testdata[7610] */ + { 3805, 0x000000009E3779B1ULL, 0x859DCFC5946ECCA6ULL }, /* XSUM_XXH64_testdata[7611] */ + { 3806, 0x0000000000000000ULL, 0x6E5225C0A24B08AAULL }, /* XSUM_XXH64_testdata[7612] */ + { 3806, 0x000000009E3779B1ULL, 0x084D6E8DD7B2B814ULL }, /* XSUM_XXH64_testdata[7613] */ + { 3807, 0x0000000000000000ULL, 0xA9079E8B592EC8E7ULL }, /* XSUM_XXH64_testdata[7614] */ + { 3807, 0x000000009E3779B1ULL, 0x13889FAFD51BA725ULL }, /* XSUM_XXH64_testdata[7615] */ + { 3808, 0x0000000000000000ULL, 0xBD899FED7D3AC107ULL }, /* XSUM_XXH64_testdata[7616] */ + { 3808, 0x000000009E3779B1ULL, 0x5D6F608B8164F7D6ULL }, /* XSUM_XXH64_testdata[7617] */ + { 3809, 0x0000000000000000ULL, 0x933D29BA19C175C7ULL }, /* XSUM_XXH64_testdata[7618] */ + { 3809, 0x000000009E3779B1ULL, 0xE36D26BD4D51328AULL }, /* XSUM_XXH64_testdata[7619] */ + { 3810, 0x0000000000000000ULL, 0xDF7714F6326ED6C0ULL }, /* XSUM_XXH64_testdata[7620] */ + { 3810, 0x000000009E3779B1ULL, 0xF37D3A7B9A3E6B5BULL }, /* XSUM_XXH64_testdata[7621] */ + { 3811, 0x0000000000000000ULL, 0x6E87507DFD692896ULL }, /* XSUM_XXH64_testdata[7622] */ + { 3811, 0x000000009E3779B1ULL, 0x7BE4AB0147AEE64BULL }, /* XSUM_XXH64_testdata[7623] */ + { 3812, 0x0000000000000000ULL, 0xFFBEBBA78956C74FULL }, /* XSUM_XXH64_testdata[7624] */ + { 3812, 0x000000009E3779B1ULL, 0xC437ED9D6F3B30DEULL }, /* XSUM_XXH64_testdata[7625] */ + { 3813, 0x0000000000000000ULL, 0x24BFB5AB04F81007ULL }, /* XSUM_XXH64_testdata[7626] */ + { 3813, 0x000000009E3779B1ULL, 0xB1A314947318FB42ULL }, /* XSUM_XXH64_testdata[7627] */ + { 3814, 0x0000000000000000ULL, 0xE0CED2864BD3C1FCULL }, /* XSUM_XXH64_testdata[7628] */ + { 3814, 0x000000009E3779B1ULL, 0xBAF33B4830278268ULL }, /* XSUM_XXH64_testdata[7629] */ + { 3815, 0x0000000000000000ULL, 0xBD72A881F0835C75ULL }, /* XSUM_XXH64_testdata[7630] */ + { 3815, 0x000000009E3779B1ULL, 0x5357F5EFA0259106ULL }, /* XSUM_XXH64_testdata[7631] */ + { 3816, 0x0000000000000000ULL, 0x42CCB6C938ED767AULL }, /* XSUM_XXH64_testdata[7632] */ + { 3816, 0x000000009E3779B1ULL, 0x8C448C018FE66807ULL }, /* XSUM_XXH64_testdata[7633] */ + { 3817, 0x0000000000000000ULL, 0x3705BC697561CEB1ULL }, /* XSUM_XXH64_testdata[7634] */ + { 3817, 0x000000009E3779B1ULL, 0x686EA7D0F1566C12ULL }, /* XSUM_XXH64_testdata[7635] */ + { 3818, 0x0000000000000000ULL, 0xAC70EBF7F3D23551ULL }, /* XSUM_XXH64_testdata[7636] */ + { 3818, 0x000000009E3779B1ULL, 0x63934113E313911CULL }, /* XSUM_XXH64_testdata[7637] */ + { 3819, 0x0000000000000000ULL, 0x4BA11B6BC8B5B5E1ULL }, /* XSUM_XXH64_testdata[7638] */ + { 3819, 0x000000009E3779B1ULL, 0xD0E9567DBB2F547FULL }, /* XSUM_XXH64_testdata[7639] */ + { 3820, 0x0000000000000000ULL, 0x2F71A829EBB3B867ULL }, /* XSUM_XXH64_testdata[7640] */ + { 3820, 0x000000009E3779B1ULL, 0xD293D68E88FC3B01ULL }, /* XSUM_XXH64_testdata[7641] */ + { 3821, 0x0000000000000000ULL, 0x28F31B7DBB3B639DULL }, /* XSUM_XXH64_testdata[7642] */ + { 3821, 0x000000009E3779B1ULL, 0xBC6FAD33E40F0A80ULL }, /* XSUM_XXH64_testdata[7643] */ + { 3822, 0x0000000000000000ULL, 0x2F3A9BD188B341A7ULL }, /* XSUM_XXH64_testdata[7644] */ + { 3822, 0x000000009E3779B1ULL, 0x0E27F9E56059A388ULL }, /* XSUM_XXH64_testdata[7645] */ + { 3823, 0x0000000000000000ULL, 0xA888B7F44043A06CULL }, /* XSUM_XXH64_testdata[7646] */ + { 3823, 0x000000009E3779B1ULL, 0x7BFABCD0CA5DB00EULL }, /* XSUM_XXH64_testdata[7647] */ + { 3824, 0x0000000000000000ULL, 0xB8699AEC15615EE5ULL }, /* XSUM_XXH64_testdata[7648] */ + { 3824, 0x000000009E3779B1ULL, 0x12D2433C9D28AF76ULL }, /* XSUM_XXH64_testdata[7649] */ + { 3825, 0x0000000000000000ULL, 0x43B55CBBCF35EE24ULL }, /* XSUM_XXH64_testdata[7650] */ + { 3825, 0x000000009E3779B1ULL, 0x2BD581201CA540BBULL }, /* XSUM_XXH64_testdata[7651] */ + { 3826, 0x0000000000000000ULL, 0x456B9303B9128083ULL }, /* XSUM_XXH64_testdata[7652] */ + { 3826, 0x000000009E3779B1ULL, 0xB34A4743241D07D1ULL }, /* XSUM_XXH64_testdata[7653] */ + { 3827, 0x0000000000000000ULL, 0x9F293A3A808E93B6ULL }, /* XSUM_XXH64_testdata[7654] */ + { 3827, 0x000000009E3779B1ULL, 0x8808ADEDF547DFBCULL }, /* XSUM_XXH64_testdata[7655] */ + { 3828, 0x0000000000000000ULL, 0x0A91236F17B45090ULL }, /* XSUM_XXH64_testdata[7656] */ + { 3828, 0x000000009E3779B1ULL, 0xCDD10217E03B4475ULL }, /* XSUM_XXH64_testdata[7657] */ + { 3829, 0x0000000000000000ULL, 0x39506226E350DDFBULL }, /* XSUM_XXH64_testdata[7658] */ + { 3829, 0x000000009E3779B1ULL, 0x804029E25C5B7B88ULL }, /* XSUM_XXH64_testdata[7659] */ + { 3830, 0x0000000000000000ULL, 0xF6B37D87B3CCDA56ULL }, /* XSUM_XXH64_testdata[7660] */ + { 3830, 0x000000009E3779B1ULL, 0x229BC9A8AD4E6A6CULL }, /* XSUM_XXH64_testdata[7661] */ + { 3831, 0x0000000000000000ULL, 0x16BA2DEAA6A22735ULL }, /* XSUM_XXH64_testdata[7662] */ + { 3831, 0x000000009E3779B1ULL, 0xD726C82E97DAC846ULL }, /* XSUM_XXH64_testdata[7663] */ + { 3832, 0x0000000000000000ULL, 0xAFA61B1EA34B32FDULL }, /* XSUM_XXH64_testdata[7664] */ + { 3832, 0x000000009E3779B1ULL, 0x1195D2361AC389BAULL }, /* XSUM_XXH64_testdata[7665] */ + { 3833, 0x0000000000000000ULL, 0xB0758F331ED49666ULL }, /* XSUM_XXH64_testdata[7666] */ + { 3833, 0x000000009E3779B1ULL, 0x70886DD5B8660E6EULL }, /* XSUM_XXH64_testdata[7667] */ + { 3834, 0x0000000000000000ULL, 0x04A033FEC1917F63ULL }, /* XSUM_XXH64_testdata[7668] */ + { 3834, 0x000000009E3779B1ULL, 0xE2A0209A7A544DA5ULL }, /* XSUM_XXH64_testdata[7669] */ + { 3835, 0x0000000000000000ULL, 0x71130431A73C5558ULL }, /* XSUM_XXH64_testdata[7670] */ + { 3835, 0x000000009E3779B1ULL, 0x9015BE92ED34E6B7ULL }, /* XSUM_XXH64_testdata[7671] */ + { 3836, 0x0000000000000000ULL, 0xBCAFA05F0EE79435ULL }, /* XSUM_XXH64_testdata[7672] */ + { 3836, 0x000000009E3779B1ULL, 0xFEC7F34B34FC23B1ULL }, /* XSUM_XXH64_testdata[7673] */ + { 3837, 0x0000000000000000ULL, 0xAD4EB29A498AD39BULL }, /* XSUM_XXH64_testdata[7674] */ + { 3837, 0x000000009E3779B1ULL, 0x5F1A3146E16FD664ULL }, /* XSUM_XXH64_testdata[7675] */ + { 3838, 0x0000000000000000ULL, 0xF79F884902A9F7CDULL }, /* XSUM_XXH64_testdata[7676] */ + { 3838, 0x000000009E3779B1ULL, 0xB545AFE6BF6CBBE4ULL }, /* XSUM_XXH64_testdata[7677] */ + { 3839, 0x0000000000000000ULL, 0x33FDF7B3C3B86707ULL }, /* XSUM_XXH64_testdata[7678] */ + { 3839, 0x000000009E3779B1ULL, 0x2EB4795B6CAE29A6ULL }, /* XSUM_XXH64_testdata[7679] */ + { 3840, 0x0000000000000000ULL, 0xB1CA1C3ACC9AFB57ULL }, /* XSUM_XXH64_testdata[7680] */ + { 3840, 0x000000009E3779B1ULL, 0x524F06B6FF09FCB0ULL }, /* XSUM_XXH64_testdata[7681] */ + { 3841, 0x0000000000000000ULL, 0x9ED9FB7F590E1430ULL }, /* XSUM_XXH64_testdata[7682] */ + { 3841, 0x000000009E3779B1ULL, 0xBD0EB5B3BBBC7162ULL }, /* XSUM_XXH64_testdata[7683] */ + { 3842, 0x0000000000000000ULL, 0x4B2FFB9995528710ULL }, /* XSUM_XXH64_testdata[7684] */ + { 3842, 0x000000009E3779B1ULL, 0x3130C9FAC79C65BAULL }, /* XSUM_XXH64_testdata[7685] */ + { 3843, 0x0000000000000000ULL, 0xA09213FB934E0EC1ULL }, /* XSUM_XXH64_testdata[7686] */ + { 3843, 0x000000009E3779B1ULL, 0x8E7825648B67AC12ULL }, /* XSUM_XXH64_testdata[7687] */ + { 3844, 0x0000000000000000ULL, 0xCB9D6B6E0CAE5E5EULL }, /* XSUM_XXH64_testdata[7688] */ + { 3844, 0x000000009E3779B1ULL, 0x7F675D0485E2FF85ULL }, /* XSUM_XXH64_testdata[7689] */ + { 3845, 0x0000000000000000ULL, 0xE362D9757219B39AULL }, /* XSUM_XXH64_testdata[7690] */ + { 3845, 0x000000009E3779B1ULL, 0xEBDA24F8AC2BCD6BULL }, /* XSUM_XXH64_testdata[7691] */ + { 3846, 0x0000000000000000ULL, 0xAE65776510DCD385ULL }, /* XSUM_XXH64_testdata[7692] */ + { 3846, 0x000000009E3779B1ULL, 0x15AA75C6FAD71D1EULL }, /* XSUM_XXH64_testdata[7693] */ + { 3847, 0x0000000000000000ULL, 0x96A28B8D0A83EC25ULL }, /* XSUM_XXH64_testdata[7694] */ + { 3847, 0x000000009E3779B1ULL, 0x56394E1CD07F9AFDULL }, /* XSUM_XXH64_testdata[7695] */ + { 3848, 0x0000000000000000ULL, 0x0DF51074E5A212DCULL }, /* XSUM_XXH64_testdata[7696] */ + { 3848, 0x000000009E3779B1ULL, 0x800AF05D8826066EULL }, /* XSUM_XXH64_testdata[7697] */ + { 3849, 0x0000000000000000ULL, 0x812D94DAB0B62DD4ULL }, /* XSUM_XXH64_testdata[7698] */ + { 3849, 0x000000009E3779B1ULL, 0x14B34EDD4296CE0FULL }, /* XSUM_XXH64_testdata[7699] */ + { 3850, 0x0000000000000000ULL, 0x24618FD19CFE6463ULL }, /* XSUM_XXH64_testdata[7700] */ + { 3850, 0x000000009E3779B1ULL, 0x2C1759A1CC26B0D9ULL }, /* XSUM_XXH64_testdata[7701] */ + { 3851, 0x0000000000000000ULL, 0x4484D6D6A93B57C9ULL }, /* XSUM_XXH64_testdata[7702] */ + { 3851, 0x000000009E3779B1ULL, 0x4771F049FAD17A50ULL }, /* XSUM_XXH64_testdata[7703] */ + { 3852, 0x0000000000000000ULL, 0xD70C34ECFA68ECE7ULL }, /* XSUM_XXH64_testdata[7704] */ + { 3852, 0x000000009E3779B1ULL, 0xAA62F409123A36E7ULL }, /* XSUM_XXH64_testdata[7705] */ + { 3853, 0x0000000000000000ULL, 0x8A885F7657AB818EULL }, /* XSUM_XXH64_testdata[7706] */ + { 3853, 0x000000009E3779B1ULL, 0xDDB474ECF4233E6CULL }, /* XSUM_XXH64_testdata[7707] */ + { 3854, 0x0000000000000000ULL, 0x687E7FF564F9D0EFULL }, /* XSUM_XXH64_testdata[7708] */ + { 3854, 0x000000009E3779B1ULL, 0x204F705F9DC16C19ULL }, /* XSUM_XXH64_testdata[7709] */ + { 3855, 0x0000000000000000ULL, 0x6275B20058A2EDD5ULL }, /* XSUM_XXH64_testdata[7710] */ + { 3855, 0x000000009E3779B1ULL, 0x6B8351AC704335CAULL }, /* XSUM_XXH64_testdata[7711] */ + { 3856, 0x0000000000000000ULL, 0x10002B6D56B76C58ULL }, /* XSUM_XXH64_testdata[7712] */ + { 3856, 0x000000009E3779B1ULL, 0x4EA865FABE9C381BULL }, /* XSUM_XXH64_testdata[7713] */ + { 3857, 0x0000000000000000ULL, 0x3765007D4597F71EULL }, /* XSUM_XXH64_testdata[7714] */ + { 3857, 0x000000009E3779B1ULL, 0x653D10A5FB6CB574ULL }, /* XSUM_XXH64_testdata[7715] */ + { 3858, 0x0000000000000000ULL, 0x01637C5474D031C5ULL }, /* XSUM_XXH64_testdata[7716] */ + { 3858, 0x000000009E3779B1ULL, 0x34CD24F246C55FFDULL }, /* XSUM_XXH64_testdata[7717] */ + { 3859, 0x0000000000000000ULL, 0xE4EE0E781CBBC2D6ULL }, /* XSUM_XXH64_testdata[7718] */ + { 3859, 0x000000009E3779B1ULL, 0x570567D3A823DE5CULL }, /* XSUM_XXH64_testdata[7719] */ + { 3860, 0x0000000000000000ULL, 0xFB708A056EFD93ADULL }, /* XSUM_XXH64_testdata[7720] */ + { 3860, 0x000000009E3779B1ULL, 0x928D923DAAF2C3D4ULL }, /* XSUM_XXH64_testdata[7721] */ + { 3861, 0x0000000000000000ULL, 0xC910CCEE52A69B00ULL }, /* XSUM_XXH64_testdata[7722] */ + { 3861, 0x000000009E3779B1ULL, 0x0026A57A4A3B3617ULL }, /* XSUM_XXH64_testdata[7723] */ + { 3862, 0x0000000000000000ULL, 0x84D87EA6F4685D11ULL }, /* XSUM_XXH64_testdata[7724] */ + { 3862, 0x000000009E3779B1ULL, 0x0D68119C3E528B3EULL }, /* XSUM_XXH64_testdata[7725] */ + { 3863, 0x0000000000000000ULL, 0x04B84E9E4AD6B09CULL }, /* XSUM_XXH64_testdata[7726] */ + { 3863, 0x000000009E3779B1ULL, 0xB8BE97A0E8E2DA40ULL }, /* XSUM_XXH64_testdata[7727] */ + { 3864, 0x0000000000000000ULL, 0x45C3E4C96D5928D6ULL }, /* XSUM_XXH64_testdata[7728] */ + { 3864, 0x000000009E3779B1ULL, 0x45D55C31B49787BAULL }, /* XSUM_XXH64_testdata[7729] */ + { 3865, 0x0000000000000000ULL, 0x71C13CAEEEF7D7BFULL }, /* XSUM_XXH64_testdata[7730] */ + { 3865, 0x000000009E3779B1ULL, 0xF088D0F40112A71EULL }, /* XSUM_XXH64_testdata[7731] */ + { 3866, 0x0000000000000000ULL, 0x7B3D7B0B7A9F4B69ULL }, /* XSUM_XXH64_testdata[7732] */ + { 3866, 0x000000009E3779B1ULL, 0xB5A7BE87BEB1FE35ULL }, /* XSUM_XXH64_testdata[7733] */ + { 3867, 0x0000000000000000ULL, 0xEC3BAC3FA30A8727ULL }, /* XSUM_XXH64_testdata[7734] */ + { 3867, 0x000000009E3779B1ULL, 0xD89268EC01CAA9CBULL }, /* XSUM_XXH64_testdata[7735] */ + { 3868, 0x0000000000000000ULL, 0x457AAAC4990A78CEULL }, /* XSUM_XXH64_testdata[7736] */ + { 3868, 0x000000009E3779B1ULL, 0xBDE2967DCF594FD7ULL }, /* XSUM_XXH64_testdata[7737] */ + { 3869, 0x0000000000000000ULL, 0xE8507085D741EA98ULL }, /* XSUM_XXH64_testdata[7738] */ + { 3869, 0x000000009E3779B1ULL, 0x58C9A07F6F9E2BF3ULL }, /* XSUM_XXH64_testdata[7739] */ + { 3870, 0x0000000000000000ULL, 0x2FF3AA0863155991ULL }, /* XSUM_XXH64_testdata[7740] */ + { 3870, 0x000000009E3779B1ULL, 0xAF9926DF03E04ABEULL }, /* XSUM_XXH64_testdata[7741] */ + { 3871, 0x0000000000000000ULL, 0x4374F85CAD23ED0BULL }, /* XSUM_XXH64_testdata[7742] */ + { 3871, 0x000000009E3779B1ULL, 0x3E203F2E7D7DDF87ULL }, /* XSUM_XXH64_testdata[7743] */ + { 3872, 0x0000000000000000ULL, 0xB74469DA59E55C4EULL }, /* XSUM_XXH64_testdata[7744] */ + { 3872, 0x000000009E3779B1ULL, 0x6499EB804CC251A5ULL }, /* XSUM_XXH64_testdata[7745] */ + { 3873, 0x0000000000000000ULL, 0x3803A4C77D45A9CCULL }, /* XSUM_XXH64_testdata[7746] */ + { 3873, 0x000000009E3779B1ULL, 0xC711C5D664333B52ULL }, /* XSUM_XXH64_testdata[7747] */ + { 3874, 0x0000000000000000ULL, 0xBB3E2C6292822DDEULL }, /* XSUM_XXH64_testdata[7748] */ + { 3874, 0x000000009E3779B1ULL, 0xB3AB956CC125570DULL }, /* XSUM_XXH64_testdata[7749] */ + { 3875, 0x0000000000000000ULL, 0x62F9699A3F4C59A7ULL }, /* XSUM_XXH64_testdata[7750] */ + { 3875, 0x000000009E3779B1ULL, 0x542EFBA978A60F9FULL }, /* XSUM_XXH64_testdata[7751] */ + { 3876, 0x0000000000000000ULL, 0x1D958B37C7CCF3C3ULL }, /* XSUM_XXH64_testdata[7752] */ + { 3876, 0x000000009E3779B1ULL, 0xCBD5C407745492DFULL }, /* XSUM_XXH64_testdata[7753] */ + { 3877, 0x0000000000000000ULL, 0xC7FA352C731A0F1BULL }, /* XSUM_XXH64_testdata[7754] */ + { 3877, 0x000000009E3779B1ULL, 0xABACFAD6E9315772ULL }, /* XSUM_XXH64_testdata[7755] */ + { 3878, 0x0000000000000000ULL, 0xBEBC1FD4981EC6D8ULL }, /* XSUM_XXH64_testdata[7756] */ + { 3878, 0x000000009E3779B1ULL, 0x9959AB275DB57CD3ULL }, /* XSUM_XXH64_testdata[7757] */ + { 3879, 0x0000000000000000ULL, 0x89C47A616D5D18C0ULL }, /* XSUM_XXH64_testdata[7758] */ + { 3879, 0x000000009E3779B1ULL, 0x6D25E5BD0F2C7FE6ULL }, /* XSUM_XXH64_testdata[7759] */ + { 3880, 0x0000000000000000ULL, 0x924B33F9E207D662ULL }, /* XSUM_XXH64_testdata[7760] */ + { 3880, 0x000000009E3779B1ULL, 0x79C5FF639D5FC2A7ULL }, /* XSUM_XXH64_testdata[7761] */ + { 3881, 0x0000000000000000ULL, 0x98D21F9A210F1B84ULL }, /* XSUM_XXH64_testdata[7762] */ + { 3881, 0x000000009E3779B1ULL, 0x1CF6D5A474802C41ULL }, /* XSUM_XXH64_testdata[7763] */ + { 3882, 0x0000000000000000ULL, 0x344F174A82765F8BULL }, /* XSUM_XXH64_testdata[7764] */ + { 3882, 0x000000009E3779B1ULL, 0x91E180ABA39DBE55ULL }, /* XSUM_XXH64_testdata[7765] */ + { 3883, 0x0000000000000000ULL, 0xFCF08F9B8F82449AULL }, /* XSUM_XXH64_testdata[7766] */ + { 3883, 0x000000009E3779B1ULL, 0x9A463FF0091E5BD7ULL }, /* XSUM_XXH64_testdata[7767] */ + { 3884, 0x0000000000000000ULL, 0x9500C46BBEB52D46ULL }, /* XSUM_XXH64_testdata[7768] */ + { 3884, 0x000000009E3779B1ULL, 0x042FD1117AA50A43ULL }, /* XSUM_XXH64_testdata[7769] */ + { 3885, 0x0000000000000000ULL, 0x2A6E015F9CCC419DULL }, /* XSUM_XXH64_testdata[7770] */ + { 3885, 0x000000009E3779B1ULL, 0x515E8D069B382AF9ULL }, /* XSUM_XXH64_testdata[7771] */ + { 3886, 0x0000000000000000ULL, 0x6800627EAE8D0F20ULL }, /* XSUM_XXH64_testdata[7772] */ + { 3886, 0x000000009E3779B1ULL, 0xAABE483F3979BF91ULL }, /* XSUM_XXH64_testdata[7773] */ + { 3887, 0x0000000000000000ULL, 0x00BF08AD7C17FF2CULL }, /* XSUM_XXH64_testdata[7774] */ + { 3887, 0x000000009E3779B1ULL, 0xE4DD3A165E6814C8ULL }, /* XSUM_XXH64_testdata[7775] */ + { 3888, 0x0000000000000000ULL, 0xDEE517F865234315ULL }, /* XSUM_XXH64_testdata[7776] */ + { 3888, 0x000000009E3779B1ULL, 0xC264F68752BE5A35ULL }, /* XSUM_XXH64_testdata[7777] */ + { 3889, 0x0000000000000000ULL, 0xDAC78A64E68050D9ULL }, /* XSUM_XXH64_testdata[7778] */ + { 3889, 0x000000009E3779B1ULL, 0xC63525F79BD016C6ULL }, /* XSUM_XXH64_testdata[7779] */ + { 3890, 0x0000000000000000ULL, 0x46E5E46DD4E5510BULL }, /* XSUM_XXH64_testdata[7780] */ + { 3890, 0x000000009E3779B1ULL, 0xDA4BEE7FDEE2A2EDULL }, /* XSUM_XXH64_testdata[7781] */ + { 3891, 0x0000000000000000ULL, 0xC44F5A1075BDBF15ULL }, /* XSUM_XXH64_testdata[7782] */ + { 3891, 0x000000009E3779B1ULL, 0x4FE15DB2459DEEA7ULL }, /* XSUM_XXH64_testdata[7783] */ + { 3892, 0x0000000000000000ULL, 0xBA443934DB56E9B0ULL }, /* XSUM_XXH64_testdata[7784] */ + { 3892, 0x000000009E3779B1ULL, 0x90D5875B83AF9357ULL }, /* XSUM_XXH64_testdata[7785] */ + { 3893, 0x0000000000000000ULL, 0xF8700C341492FE7DULL }, /* XSUM_XXH64_testdata[7786] */ + { 3893, 0x000000009E3779B1ULL, 0x5E26FD598A1ADD2AULL }, /* XSUM_XXH64_testdata[7787] */ + { 3894, 0x0000000000000000ULL, 0x848899B2767F18FFULL }, /* XSUM_XXH64_testdata[7788] */ + { 3894, 0x000000009E3779B1ULL, 0x538709F369DD7CEDULL }, /* XSUM_XXH64_testdata[7789] */ + { 3895, 0x0000000000000000ULL, 0xFAF9C654A539DB27ULL }, /* XSUM_XXH64_testdata[7790] */ + { 3895, 0x000000009E3779B1ULL, 0x91F93371DC04D4F2ULL }, /* XSUM_XXH64_testdata[7791] */ + { 3896, 0x0000000000000000ULL, 0xED62B8A1DF1E900CULL }, /* XSUM_XXH64_testdata[7792] */ + { 3896, 0x000000009E3779B1ULL, 0xB43CB5BFF41A3523ULL }, /* XSUM_XXH64_testdata[7793] */ + { 3897, 0x0000000000000000ULL, 0xF17267B88EED3C86ULL }, /* XSUM_XXH64_testdata[7794] */ + { 3897, 0x000000009E3779B1ULL, 0x073C47ED869D052FULL }, /* XSUM_XXH64_testdata[7795] */ + { 3898, 0x0000000000000000ULL, 0x54D361CC02C6C60FULL }, /* XSUM_XXH64_testdata[7796] */ + { 3898, 0x000000009E3779B1ULL, 0xBD452E8BD8EA722EULL }, /* XSUM_XXH64_testdata[7797] */ + { 3899, 0x0000000000000000ULL, 0x47B04A98CD524D3CULL }, /* XSUM_XXH64_testdata[7798] */ + { 3899, 0x000000009E3779B1ULL, 0xAC43A5ED23C6ED09ULL }, /* XSUM_XXH64_testdata[7799] */ + { 3900, 0x0000000000000000ULL, 0x8F6B9156AD07CEB4ULL }, /* XSUM_XXH64_testdata[7800] */ + { 3900, 0x000000009E3779B1ULL, 0x9FD6D391418A8D49ULL }, /* XSUM_XXH64_testdata[7801] */ + { 3901, 0x0000000000000000ULL, 0x8FFE5AD36E0B9D68ULL }, /* XSUM_XXH64_testdata[7802] */ + { 3901, 0x000000009E3779B1ULL, 0xAC4576B3CF350B55ULL }, /* XSUM_XXH64_testdata[7803] */ + { 3902, 0x0000000000000000ULL, 0xD481856260AECEEEULL }, /* XSUM_XXH64_testdata[7804] */ + { 3902, 0x000000009E3779B1ULL, 0x5E75301170141456ULL }, /* XSUM_XXH64_testdata[7805] */ + { 3903, 0x0000000000000000ULL, 0x353C99556B5FE3A2ULL }, /* XSUM_XXH64_testdata[7806] */ + { 3903, 0x000000009E3779B1ULL, 0xC2C565817F89893FULL }, /* XSUM_XXH64_testdata[7807] */ + { 3904, 0x0000000000000000ULL, 0xB630683C34CF81E3ULL }, /* XSUM_XXH64_testdata[7808] */ + { 3904, 0x000000009E3779B1ULL, 0x39D2D8EB2A69C508ULL }, /* XSUM_XXH64_testdata[7809] */ + { 3905, 0x0000000000000000ULL, 0xA15B22B69D34FEDDULL }, /* XSUM_XXH64_testdata[7810] */ + { 3905, 0x000000009E3779B1ULL, 0x72934FAC1B32022EULL }, /* XSUM_XXH64_testdata[7811] */ + { 3906, 0x0000000000000000ULL, 0x1583D7AF8E4813FDULL }, /* XSUM_XXH64_testdata[7812] */ + { 3906, 0x000000009E3779B1ULL, 0x19F28F4A3225BD23ULL }, /* XSUM_XXH64_testdata[7813] */ + { 3907, 0x0000000000000000ULL, 0x93857F12B6E7B4CDULL }, /* XSUM_XXH64_testdata[7814] */ + { 3907, 0x000000009E3779B1ULL, 0xDE3B0953A5C27257ULL }, /* XSUM_XXH64_testdata[7815] */ + { 3908, 0x0000000000000000ULL, 0x4D34FB29FA15D233ULL }, /* XSUM_XXH64_testdata[7816] */ + { 3908, 0x000000009E3779B1ULL, 0x7ADD0C4106663958ULL }, /* XSUM_XXH64_testdata[7817] */ + { 3909, 0x0000000000000000ULL, 0x4232F9A9E3C22281ULL }, /* XSUM_XXH64_testdata[7818] */ + { 3909, 0x000000009E3779B1ULL, 0xF17E91CB9B78578CULL }, /* XSUM_XXH64_testdata[7819] */ + { 3910, 0x0000000000000000ULL, 0x99176E5C87E62DF7ULL }, /* XSUM_XXH64_testdata[7820] */ + { 3910, 0x000000009E3779B1ULL, 0x9C1A29D0199775D4ULL }, /* XSUM_XXH64_testdata[7821] */ + { 3911, 0x0000000000000000ULL, 0x75EE820AE9333BE7ULL }, /* XSUM_XXH64_testdata[7822] */ + { 3911, 0x000000009E3779B1ULL, 0x3FE15BA3B3644386ULL }, /* XSUM_XXH64_testdata[7823] */ + { 3912, 0x0000000000000000ULL, 0xEC745EE3151533F1ULL }, /* XSUM_XXH64_testdata[7824] */ + { 3912, 0x000000009E3779B1ULL, 0x3DB7C4BBAC37BA7AULL }, /* XSUM_XXH64_testdata[7825] */ + { 3913, 0x0000000000000000ULL, 0xADC190530AA91F6AULL }, /* XSUM_XXH64_testdata[7826] */ + { 3913, 0x000000009E3779B1ULL, 0xB654D233526D4B1EULL }, /* XSUM_XXH64_testdata[7827] */ + { 3914, 0x0000000000000000ULL, 0xC72364F0A1ACF39FULL }, /* XSUM_XXH64_testdata[7828] */ + { 3914, 0x000000009E3779B1ULL, 0x9BC4025A790E7A17ULL }, /* XSUM_XXH64_testdata[7829] */ + { 3915, 0x0000000000000000ULL, 0x3D8F3DB0444120D8ULL }, /* XSUM_XXH64_testdata[7830] */ + { 3915, 0x000000009E3779B1ULL, 0x8E4990610FF05582ULL }, /* XSUM_XXH64_testdata[7831] */ + { 3916, 0x0000000000000000ULL, 0xFE5F1568139CC72BULL }, /* XSUM_XXH64_testdata[7832] */ + { 3916, 0x000000009E3779B1ULL, 0x19715F510D940B58ULL }, /* XSUM_XXH64_testdata[7833] */ + { 3917, 0x0000000000000000ULL, 0x601AB90F32290E66ULL }, /* XSUM_XXH64_testdata[7834] */ + { 3917, 0x000000009E3779B1ULL, 0xD9CDAF533FF7619DULL }, /* XSUM_XXH64_testdata[7835] */ + { 3918, 0x0000000000000000ULL, 0x1CEAE5B0AB24B9DEULL }, /* XSUM_XXH64_testdata[7836] */ + { 3918, 0x000000009E3779B1ULL, 0x17302FB8381E8A57ULL }, /* XSUM_XXH64_testdata[7837] */ + { 3919, 0x0000000000000000ULL, 0xA733E2E8A459036DULL }, /* XSUM_XXH64_testdata[7838] */ + { 3919, 0x000000009E3779B1ULL, 0x8928E9567BFDCC20ULL }, /* XSUM_XXH64_testdata[7839] */ + { 3920, 0x0000000000000000ULL, 0xEB04D68D7D30A820ULL }, /* XSUM_XXH64_testdata[7840] */ + { 3920, 0x000000009E3779B1ULL, 0xFF61E66564B36DFFULL }, /* XSUM_XXH64_testdata[7841] */ + { 3921, 0x0000000000000000ULL, 0x053F251C41187B17ULL }, /* XSUM_XXH64_testdata[7842] */ + { 3921, 0x000000009E3779B1ULL, 0x84485A2E0172AB99ULL }, /* XSUM_XXH64_testdata[7843] */ + { 3922, 0x0000000000000000ULL, 0x376340351081B471ULL }, /* XSUM_XXH64_testdata[7844] */ + { 3922, 0x000000009E3779B1ULL, 0xC30FD3B991F93DE1ULL }, /* XSUM_XXH64_testdata[7845] */ + { 3923, 0x0000000000000000ULL, 0x78CF1EAC32EE45E2ULL }, /* XSUM_XXH64_testdata[7846] */ + { 3923, 0x000000009E3779B1ULL, 0xE7A5976ED0268FE5ULL }, /* XSUM_XXH64_testdata[7847] */ + { 3924, 0x0000000000000000ULL, 0x3CFB6E4226067566ULL }, /* XSUM_XXH64_testdata[7848] */ + { 3924, 0x000000009E3779B1ULL, 0xBED7A3F46367777CULL }, /* XSUM_XXH64_testdata[7849] */ + { 3925, 0x0000000000000000ULL, 0xF8C76B89F3442497ULL }, /* XSUM_XXH64_testdata[7850] */ + { 3925, 0x000000009E3779B1ULL, 0x41369BD205492A6FULL }, /* XSUM_XXH64_testdata[7851] */ + { 3926, 0x0000000000000000ULL, 0x41717D7030C89C99ULL }, /* XSUM_XXH64_testdata[7852] */ + { 3926, 0x000000009E3779B1ULL, 0x79DE31FE66D4C3DCULL }, /* XSUM_XXH64_testdata[7853] */ + { 3927, 0x0000000000000000ULL, 0x30725284DE55C22FULL }, /* XSUM_XXH64_testdata[7854] */ + { 3927, 0x000000009E3779B1ULL, 0x42CA06F99292F845ULL }, /* XSUM_XXH64_testdata[7855] */ + { 3928, 0x0000000000000000ULL, 0x98BA2928DEF46016ULL }, /* XSUM_XXH64_testdata[7856] */ + { 3928, 0x000000009E3779B1ULL, 0xD41941C521DF251FULL }, /* XSUM_XXH64_testdata[7857] */ + { 3929, 0x0000000000000000ULL, 0xE0421C98D1660E9FULL }, /* XSUM_XXH64_testdata[7858] */ + { 3929, 0x000000009E3779B1ULL, 0xB1FC5561A972B6B2ULL }, /* XSUM_XXH64_testdata[7859] */ + { 3930, 0x0000000000000000ULL, 0x2BDC94252C8414FAULL }, /* XSUM_XXH64_testdata[7860] */ + { 3930, 0x000000009E3779B1ULL, 0x4C80CCB5CF571781ULL }, /* XSUM_XXH64_testdata[7861] */ + { 3931, 0x0000000000000000ULL, 0x325AF27AC80EFCADULL }, /* XSUM_XXH64_testdata[7862] */ + { 3931, 0x000000009E3779B1ULL, 0x33BC0E725BAAB5E1ULL }, /* XSUM_XXH64_testdata[7863] */ + { 3932, 0x0000000000000000ULL, 0xF840A0BBBDD83EFDULL }, /* XSUM_XXH64_testdata[7864] */ + { 3932, 0x000000009E3779B1ULL, 0x5C17ADAC1D45F4EBULL }, /* XSUM_XXH64_testdata[7865] */ + { 3933, 0x0000000000000000ULL, 0x2BDDFFDE681494D7ULL }, /* XSUM_XXH64_testdata[7866] */ + { 3933, 0x000000009E3779B1ULL, 0xCB72E7E4F76BB65DULL }, /* XSUM_XXH64_testdata[7867] */ + { 3934, 0x0000000000000000ULL, 0x62CE13FD1885B954ULL }, /* XSUM_XXH64_testdata[7868] */ + { 3934, 0x000000009E3779B1ULL, 0x0BD4E9B140A3FBC8ULL }, /* XSUM_XXH64_testdata[7869] */ + { 3935, 0x0000000000000000ULL, 0x15FCA576ABC7566AULL }, /* XSUM_XXH64_testdata[7870] */ + { 3935, 0x000000009E3779B1ULL, 0x29069959F3CDDB71ULL }, /* XSUM_XXH64_testdata[7871] */ + { 3936, 0x0000000000000000ULL, 0x44FA36745A62FC49ULL }, /* XSUM_XXH64_testdata[7872] */ + { 3936, 0x000000009E3779B1ULL, 0x1364CD2118435ACAULL }, /* XSUM_XXH64_testdata[7873] */ + { 3937, 0x0000000000000000ULL, 0x4D4D6F8F12ADA1EFULL }, /* XSUM_XXH64_testdata[7874] */ + { 3937, 0x000000009E3779B1ULL, 0x2A6D6F9B0667F6DAULL }, /* XSUM_XXH64_testdata[7875] */ + { 3938, 0x0000000000000000ULL, 0x6ADC7EC077182698ULL }, /* XSUM_XXH64_testdata[7876] */ + { 3938, 0x000000009E3779B1ULL, 0x543A3A5CB66930C9ULL }, /* XSUM_XXH64_testdata[7877] */ + { 3939, 0x0000000000000000ULL, 0x2AE2A8E57684ED7BULL }, /* XSUM_XXH64_testdata[7878] */ + { 3939, 0x000000009E3779B1ULL, 0x4A39B120244DAA8DULL }, /* XSUM_XXH64_testdata[7879] */ + { 3940, 0x0000000000000000ULL, 0x13D0EE9B5294DE48ULL }, /* XSUM_XXH64_testdata[7880] */ + { 3940, 0x000000009E3779B1ULL, 0x93F1B314F350C57FULL }, /* XSUM_XXH64_testdata[7881] */ + { 3941, 0x0000000000000000ULL, 0x2B89A41B60C6E168ULL }, /* XSUM_XXH64_testdata[7882] */ + { 3941, 0x000000009E3779B1ULL, 0xC8701B56BA88358CULL }, /* XSUM_XXH64_testdata[7883] */ + { 3942, 0x0000000000000000ULL, 0xEA03F8A8284A507DULL }, /* XSUM_XXH64_testdata[7884] */ + { 3942, 0x000000009E3779B1ULL, 0x63A8B5B192337F85ULL }, /* XSUM_XXH64_testdata[7885] */ + { 3943, 0x0000000000000000ULL, 0x5E0D144B32B80503ULL }, /* XSUM_XXH64_testdata[7886] */ + { 3943, 0x000000009E3779B1ULL, 0xAAF4FC5E3F174410ULL }, /* XSUM_XXH64_testdata[7887] */ + { 3944, 0x0000000000000000ULL, 0xC6929AB741D4F250ULL }, /* XSUM_XXH64_testdata[7888] */ + { 3944, 0x000000009E3779B1ULL, 0x9916904CC317CCE8ULL }, /* XSUM_XXH64_testdata[7889] */ + { 3945, 0x0000000000000000ULL, 0x13FE32EBCA4E2E2DULL }, /* XSUM_XXH64_testdata[7890] */ + { 3945, 0x000000009E3779B1ULL, 0x5107D87D89FF93F5ULL }, /* XSUM_XXH64_testdata[7891] */ + { 3946, 0x0000000000000000ULL, 0x17402CC0CEB984BBULL }, /* XSUM_XXH64_testdata[7892] */ + { 3946, 0x000000009E3779B1ULL, 0x0B314E4B15A92399ULL }, /* XSUM_XXH64_testdata[7893] */ + { 3947, 0x0000000000000000ULL, 0xDF35648C8FDB8A27ULL }, /* XSUM_XXH64_testdata[7894] */ + { 3947, 0x000000009E3779B1ULL, 0x95A1E01EEBFD75A6ULL }, /* XSUM_XXH64_testdata[7895] */ + { 3948, 0x0000000000000000ULL, 0xE373AF28B0D58AF5ULL }, /* XSUM_XXH64_testdata[7896] */ + { 3948, 0x000000009E3779B1ULL, 0x8D264F09BEB46642ULL }, /* XSUM_XXH64_testdata[7897] */ + { 3949, 0x0000000000000000ULL, 0x001D88144D43F841ULL }, /* XSUM_XXH64_testdata[7898] */ + { 3949, 0x000000009E3779B1ULL, 0x89A165A6A868C122ULL }, /* XSUM_XXH64_testdata[7899] */ + { 3950, 0x0000000000000000ULL, 0x13BE7B4CDED817D9ULL }, /* XSUM_XXH64_testdata[7900] */ + { 3950, 0x000000009E3779B1ULL, 0x3E1581DCA2C374F6ULL }, /* XSUM_XXH64_testdata[7901] */ + { 3951, 0x0000000000000000ULL, 0x17D93735295EE289ULL }, /* XSUM_XXH64_testdata[7902] */ + { 3951, 0x000000009E3779B1ULL, 0xFE2F55E191FFE975ULL }, /* XSUM_XXH64_testdata[7903] */ + { 3952, 0x0000000000000000ULL, 0x70F43B541337F522ULL }, /* XSUM_XXH64_testdata[7904] */ + { 3952, 0x000000009E3779B1ULL, 0xDC048D2183067141ULL }, /* XSUM_XXH64_testdata[7905] */ + { 3953, 0x0000000000000000ULL, 0x88B5C6DFBB3D304BULL }, /* XSUM_XXH64_testdata[7906] */ + { 3953, 0x000000009E3779B1ULL, 0xB0D0E943C7BE5B8BULL }, /* XSUM_XXH64_testdata[7907] */ + { 3954, 0x0000000000000000ULL, 0x8499858A1C889CB6ULL }, /* XSUM_XXH64_testdata[7908] */ + { 3954, 0x000000009E3779B1ULL, 0xA32F76E6FFD18DA8ULL }, /* XSUM_XXH64_testdata[7909] */ + { 3955, 0x0000000000000000ULL, 0x25F551ECE40BBAB6ULL }, /* XSUM_XXH64_testdata[7910] */ + { 3955, 0x000000009E3779B1ULL, 0xC4D9046B48F80B1FULL }, /* XSUM_XXH64_testdata[7911] */ + { 3956, 0x0000000000000000ULL, 0x478C1C0F051B3C52ULL }, /* XSUM_XXH64_testdata[7912] */ + { 3956, 0x000000009E3779B1ULL, 0x30E2A247BB69631EULL }, /* XSUM_XXH64_testdata[7913] */ + { 3957, 0x0000000000000000ULL, 0x08D67AEF7C0D37ABULL }, /* XSUM_XXH64_testdata[7914] */ + { 3957, 0x000000009E3779B1ULL, 0x92B03B1873304A64ULL }, /* XSUM_XXH64_testdata[7915] */ + { 3958, 0x0000000000000000ULL, 0xEAF76B5261BEACD7ULL }, /* XSUM_XXH64_testdata[7916] */ + { 3958, 0x000000009E3779B1ULL, 0x8A9AA00246AC44ADULL }, /* XSUM_XXH64_testdata[7917] */ + { 3959, 0x0000000000000000ULL, 0xD08A69770300B38FULL }, /* XSUM_XXH64_testdata[7918] */ + { 3959, 0x000000009E3779B1ULL, 0x9A4565E18887B56AULL }, /* XSUM_XXH64_testdata[7919] */ + { 3960, 0x0000000000000000ULL, 0x48409FB0EA8D6A68ULL }, /* XSUM_XXH64_testdata[7920] */ + { 3960, 0x000000009E3779B1ULL, 0x0471F2174ACF46DDULL }, /* XSUM_XXH64_testdata[7921] */ + { 3961, 0x0000000000000000ULL, 0x4F2EBDA831408442ULL }, /* XSUM_XXH64_testdata[7922] */ + { 3961, 0x000000009E3779B1ULL, 0x9399761A0583EA7AULL }, /* XSUM_XXH64_testdata[7923] */ + { 3962, 0x0000000000000000ULL, 0xAE44B86C06C19B11ULL }, /* XSUM_XXH64_testdata[7924] */ + { 3962, 0x000000009E3779B1ULL, 0x6E8E4AA49DCE1AF0ULL }, /* XSUM_XXH64_testdata[7925] */ + { 3963, 0x0000000000000000ULL, 0xB1BEA1BA827F7581ULL }, /* XSUM_XXH64_testdata[7926] */ + { 3963, 0x000000009E3779B1ULL, 0x6414543260A5F17BULL }, /* XSUM_XXH64_testdata[7927] */ + { 3964, 0x0000000000000000ULL, 0xFDC7F121F9EB0058ULL }, /* XSUM_XXH64_testdata[7928] */ + { 3964, 0x000000009E3779B1ULL, 0xADFCC2AEDFF58CC3ULL }, /* XSUM_XXH64_testdata[7929] */ + { 3965, 0x0000000000000000ULL, 0x3EA8559D30981650ULL }, /* XSUM_XXH64_testdata[7930] */ + { 3965, 0x000000009E3779B1ULL, 0x8DCCC74E4BA09EDBULL }, /* XSUM_XXH64_testdata[7931] */ + { 3966, 0x0000000000000000ULL, 0x8E8191ADA30BFBF1ULL }, /* XSUM_XXH64_testdata[7932] */ + { 3966, 0x000000009E3779B1ULL, 0x9EE6C76B1948F554ULL }, /* XSUM_XXH64_testdata[7933] */ + { 3967, 0x0000000000000000ULL, 0x9C42FE5248948AAEULL }, /* XSUM_XXH64_testdata[7934] */ + { 3967, 0x000000009E3779B1ULL, 0x6E2A6A711A848F76ULL }, /* XSUM_XXH64_testdata[7935] */ + { 3968, 0x0000000000000000ULL, 0xDCE40D3069489BA9ULL }, /* XSUM_XXH64_testdata[7936] */ + { 3968, 0x000000009E3779B1ULL, 0xBF637145773FE1B5ULL }, /* XSUM_XXH64_testdata[7937] */ + { 3969, 0x0000000000000000ULL, 0x0C545D80CEA45459ULL }, /* XSUM_XXH64_testdata[7938] */ + { 3969, 0x000000009E3779B1ULL, 0x4F4ADADAF2CAA48BULL }, /* XSUM_XXH64_testdata[7939] */ + { 3970, 0x0000000000000000ULL, 0x060B5952B6A4C254ULL }, /* XSUM_XXH64_testdata[7940] */ + { 3970, 0x000000009E3779B1ULL, 0x01BC58A577814210ULL }, /* XSUM_XXH64_testdata[7941] */ + { 3971, 0x0000000000000000ULL, 0xC48160A8666D5247ULL }, /* XSUM_XXH64_testdata[7942] */ + { 3971, 0x000000009E3779B1ULL, 0x6795B97110707DAAULL }, /* XSUM_XXH64_testdata[7943] */ + { 3972, 0x0000000000000000ULL, 0xF4079F57CBB025BCULL }, /* XSUM_XXH64_testdata[7944] */ + { 3972, 0x000000009E3779B1ULL, 0xB90BEDFBC75D7789ULL }, /* XSUM_XXH64_testdata[7945] */ + { 3973, 0x0000000000000000ULL, 0x6ACD5786A6444A67ULL }, /* XSUM_XXH64_testdata[7946] */ + { 3973, 0x000000009E3779B1ULL, 0xDFABBDBB6F754EF2ULL }, /* XSUM_XXH64_testdata[7947] */ + { 3974, 0x0000000000000000ULL, 0xFCF3493995E606D0ULL }, /* XSUM_XXH64_testdata[7948] */ + { 3974, 0x000000009E3779B1ULL, 0x173DEC4AF33E317AULL }, /* XSUM_XXH64_testdata[7949] */ + { 3975, 0x0000000000000000ULL, 0x833D7DD8686035EFULL }, /* XSUM_XXH64_testdata[7950] */ + { 3975, 0x000000009E3779B1ULL, 0x7D37B55194C4991CULL }, /* XSUM_XXH64_testdata[7951] */ + { 3976, 0x0000000000000000ULL, 0x15A225AAAD6AEB27ULL }, /* XSUM_XXH64_testdata[7952] */ + { 3976, 0x000000009E3779B1ULL, 0x50FC9051B00BD0F9ULL }, /* XSUM_XXH64_testdata[7953] */ + { 3977, 0x0000000000000000ULL, 0x1EBE45FA4E08AFD5ULL }, /* XSUM_XXH64_testdata[7954] */ + { 3977, 0x000000009E3779B1ULL, 0x326AB719F17CB03BULL }, /* XSUM_XXH64_testdata[7955] */ + { 3978, 0x0000000000000000ULL, 0xAF7CF4D02A3DBB9EULL }, /* XSUM_XXH64_testdata[7956] */ + { 3978, 0x000000009E3779B1ULL, 0xC14282179D4622CFULL }, /* XSUM_XXH64_testdata[7957] */ + { 3979, 0x0000000000000000ULL, 0x5DFE69B1F135EC69ULL }, /* XSUM_XXH64_testdata[7958] */ + { 3979, 0x000000009E3779B1ULL, 0xEB6C109AD2C72AE6ULL }, /* XSUM_XXH64_testdata[7959] */ + { 3980, 0x0000000000000000ULL, 0xF2C204F559591735ULL }, /* XSUM_XXH64_testdata[7960] */ + { 3980, 0x000000009E3779B1ULL, 0x8722AF97530D1B7FULL }, /* XSUM_XXH64_testdata[7961] */ + { 3981, 0x0000000000000000ULL, 0x0118A5C1E8354944ULL }, /* XSUM_XXH64_testdata[7962] */ + { 3981, 0x000000009E3779B1ULL, 0x4D53DB23077E5909ULL }, /* XSUM_XXH64_testdata[7963] */ + { 3982, 0x0000000000000000ULL, 0x8FB82825071D5865ULL }, /* XSUM_XXH64_testdata[7964] */ + { 3982, 0x000000009E3779B1ULL, 0x1D8A1A7DD86F5B4BULL }, /* XSUM_XXH64_testdata[7965] */ + { 3983, 0x0000000000000000ULL, 0xD6E221E7B65220C5ULL }, /* XSUM_XXH64_testdata[7966] */ + { 3983, 0x000000009E3779B1ULL, 0xE3FDBBE94FE9ADD1ULL }, /* XSUM_XXH64_testdata[7967] */ + { 3984, 0x0000000000000000ULL, 0xB7B010C70049C157ULL }, /* XSUM_XXH64_testdata[7968] */ + { 3984, 0x000000009E3779B1ULL, 0x7D9EAC85B7543BA2ULL }, /* XSUM_XXH64_testdata[7969] */ + { 3985, 0x0000000000000000ULL, 0x95F610607B7CB310ULL }, /* XSUM_XXH64_testdata[7970] */ + { 3985, 0x000000009E3779B1ULL, 0x0E59011ECDE23202ULL }, /* XSUM_XXH64_testdata[7971] */ + { 3986, 0x0000000000000000ULL, 0xE2FF26CA0B938520ULL }, /* XSUM_XXH64_testdata[7972] */ + { 3986, 0x000000009E3779B1ULL, 0xC4B5EF4AA73D0934ULL }, /* XSUM_XXH64_testdata[7973] */ + { 3987, 0x0000000000000000ULL, 0x617D00F9C3CD91C5ULL }, /* XSUM_XXH64_testdata[7974] */ + { 3987, 0x000000009E3779B1ULL, 0x774CF1B692C91F9BULL }, /* XSUM_XXH64_testdata[7975] */ + { 3988, 0x0000000000000000ULL, 0x7E411639ADE4D5F7ULL }, /* XSUM_XXH64_testdata[7976] */ + { 3988, 0x000000009E3779B1ULL, 0x77774801DA40F3DEULL }, /* XSUM_XXH64_testdata[7977] */ + { 3989, 0x0000000000000000ULL, 0x85D580023232C4B3ULL }, /* XSUM_XXH64_testdata[7978] */ + { 3989, 0x000000009E3779B1ULL, 0x2A9C643D0FB82888ULL }, /* XSUM_XXH64_testdata[7979] */ + { 3990, 0x0000000000000000ULL, 0x8F613454FF7ED58DULL }, /* XSUM_XXH64_testdata[7980] */ + { 3990, 0x000000009E3779B1ULL, 0x4F76AB39FE0A5BA5ULL }, /* XSUM_XXH64_testdata[7981] */ + { 3991, 0x0000000000000000ULL, 0x10592976833AD8E5ULL }, /* XSUM_XXH64_testdata[7982] */ + { 3991, 0x000000009E3779B1ULL, 0x09848DFC5ECCC3CEULL }, /* XSUM_XXH64_testdata[7983] */ + { 3992, 0x0000000000000000ULL, 0xD3D640E78BDF02E7ULL }, /* XSUM_XXH64_testdata[7984] */ + { 3992, 0x000000009E3779B1ULL, 0x8C1AC46C726966AEULL }, /* XSUM_XXH64_testdata[7985] */ + { 3993, 0x0000000000000000ULL, 0x7842CC40674E3459ULL }, /* XSUM_XXH64_testdata[7986] */ + { 3993, 0x000000009E3779B1ULL, 0x2FECCD404E28D9D1ULL }, /* XSUM_XXH64_testdata[7987] */ + { 3994, 0x0000000000000000ULL, 0x73D932569DE80332ULL }, /* XSUM_XXH64_testdata[7988] */ + { 3994, 0x000000009E3779B1ULL, 0x0356F5FC11001526ULL }, /* XSUM_XXH64_testdata[7989] */ + { 3995, 0x0000000000000000ULL, 0xD32797454E215501ULL }, /* XSUM_XXH64_testdata[7990] */ + { 3995, 0x000000009E3779B1ULL, 0x110C2B3648F12754ULL }, /* XSUM_XXH64_testdata[7991] */ + { 3996, 0x0000000000000000ULL, 0xD04594B72B516481ULL }, /* XSUM_XXH64_testdata[7992] */ + { 3996, 0x000000009E3779B1ULL, 0x015FD921A512545CULL }, /* XSUM_XXH64_testdata[7993] */ + { 3997, 0x0000000000000000ULL, 0x990AB891ADF6676CULL }, /* XSUM_XXH64_testdata[7994] */ + { 3997, 0x000000009E3779B1ULL, 0x3028D36A65BFAAB6ULL }, /* XSUM_XXH64_testdata[7995] */ + { 3998, 0x0000000000000000ULL, 0xA700CFA83A59E02CULL }, /* XSUM_XXH64_testdata[7996] */ + { 3998, 0x000000009E3779B1ULL, 0x83A85456AA086228ULL }, /* XSUM_XXH64_testdata[7997] */ + { 3999, 0x0000000000000000ULL, 0x8F3A633D22FDDA5CULL }, /* XSUM_XXH64_testdata[7998] */ + { 3999, 0x000000009E3779B1ULL, 0xCC3F6E7AA02039D5ULL }, /* XSUM_XXH64_testdata[7999] */ + { 4000, 0x0000000000000000ULL, 0x90C007A4F73556D1ULL }, /* XSUM_XXH64_testdata[8000] */ + { 4000, 0x000000009E3779B1ULL, 0xC6E9248BC08D6488ULL }, /* XSUM_XXH64_testdata[8001] */ + { 4001, 0x0000000000000000ULL, 0x692784BC38CD28A7ULL }, /* XSUM_XXH64_testdata[8002] */ + { 4001, 0x000000009E3779B1ULL, 0x256455ED53A994BEULL }, /* XSUM_XXH64_testdata[8003] */ + { 4002, 0x0000000000000000ULL, 0x40E409384AF582ACULL }, /* XSUM_XXH64_testdata[8004] */ + { 4002, 0x000000009E3779B1ULL, 0xBE3D23C452CC769FULL }, /* XSUM_XXH64_testdata[8005] */ + { 4003, 0x0000000000000000ULL, 0xB21655A3D6BE4CF2ULL }, /* XSUM_XXH64_testdata[8006] */ + { 4003, 0x000000009E3779B1ULL, 0x5AAA57D882C7E022ULL }, /* XSUM_XXH64_testdata[8007] */ + { 4004, 0x0000000000000000ULL, 0xF7BE83C70B79E595ULL }, /* XSUM_XXH64_testdata[8008] */ + { 4004, 0x000000009E3779B1ULL, 0x2B5234E567713393ULL }, /* XSUM_XXH64_testdata[8009] */ + { 4005, 0x0000000000000000ULL, 0x9BD38D1BB3566B15ULL }, /* XSUM_XXH64_testdata[8010] */ + { 4005, 0x000000009E3779B1ULL, 0x50043BB8D82192EDULL }, /* XSUM_XXH64_testdata[8011] */ + { 4006, 0x0000000000000000ULL, 0x2BF1A8B6F357420DULL }, /* XSUM_XXH64_testdata[8012] */ + { 4006, 0x000000009E3779B1ULL, 0xCFB7C237207414CFULL }, /* XSUM_XXH64_testdata[8013] */ + { 4007, 0x0000000000000000ULL, 0xCA2C8565FDCA1AADULL }, /* XSUM_XXH64_testdata[8014] */ + { 4007, 0x000000009E3779B1ULL, 0xCE6637339E7C861BULL }, /* XSUM_XXH64_testdata[8015] */ + { 4008, 0x0000000000000000ULL, 0x31D86687B2F5A17EULL }, /* XSUM_XXH64_testdata[8016] */ + { 4008, 0x000000009E3779B1ULL, 0xDDEE147AA1E32C33ULL }, /* XSUM_XXH64_testdata[8017] */ + { 4009, 0x0000000000000000ULL, 0xCBD473C065BA5D54ULL }, /* XSUM_XXH64_testdata[8018] */ + { 4009, 0x000000009E3779B1ULL, 0x663091138BEB319EULL }, /* XSUM_XXH64_testdata[8019] */ + { 4010, 0x0000000000000000ULL, 0x51FA5B416B4829A3ULL }, /* XSUM_XXH64_testdata[8020] */ + { 4010, 0x000000009E3779B1ULL, 0x62DFD8D9CF229A5BULL }, /* XSUM_XXH64_testdata[8021] */ + { 4011, 0x0000000000000000ULL, 0x3479737558D4847BULL }, /* XSUM_XXH64_testdata[8022] */ + { 4011, 0x000000009E3779B1ULL, 0x3D7B05AA65C0416CULL }, /* XSUM_XXH64_testdata[8023] */ + { 4012, 0x0000000000000000ULL, 0x049D886E31AC1362ULL }, /* XSUM_XXH64_testdata[8024] */ + { 4012, 0x000000009E3779B1ULL, 0xB2007C8DB9BC4F0BULL }, /* XSUM_XXH64_testdata[8025] */ + { 4013, 0x0000000000000000ULL, 0xC01F1903ACEF8204ULL }, /* XSUM_XXH64_testdata[8026] */ + { 4013, 0x000000009E3779B1ULL, 0xA920A23C0B4EECDBULL }, /* XSUM_XXH64_testdata[8027] */ + { 4014, 0x0000000000000000ULL, 0xFC46CAF1ED2FD890ULL }, /* XSUM_XXH64_testdata[8028] */ + { 4014, 0x000000009E3779B1ULL, 0xC240BBA786D9DD7DULL }, /* XSUM_XXH64_testdata[8029] */ + { 4015, 0x0000000000000000ULL, 0x80F7800685F3DB4BULL }, /* XSUM_XXH64_testdata[8030] */ + { 4015, 0x000000009E3779B1ULL, 0x98B6BDA8045D73E1ULL }, /* XSUM_XXH64_testdata[8031] */ + { 4016, 0x0000000000000000ULL, 0x2696F9A318DBAD92ULL }, /* XSUM_XXH64_testdata[8032] */ + { 4016, 0x000000009E3779B1ULL, 0xB053EA689B891F95ULL }, /* XSUM_XXH64_testdata[8033] */ + { 4017, 0x0000000000000000ULL, 0x746F9E6F17780D98ULL }, /* XSUM_XXH64_testdata[8034] */ + { 4017, 0x000000009E3779B1ULL, 0x0BE4EBFCD912DC9DULL }, /* XSUM_XXH64_testdata[8035] */ + { 4018, 0x0000000000000000ULL, 0xECDF912875361666ULL }, /* XSUM_XXH64_testdata[8036] */ + { 4018, 0x000000009E3779B1ULL, 0xF922C4AEF9D6B93DULL }, /* XSUM_XXH64_testdata[8037] */ + { 4019, 0x0000000000000000ULL, 0x8AE84070A2164010ULL }, /* XSUM_XXH64_testdata[8038] */ + { 4019, 0x000000009E3779B1ULL, 0x772BACAECFBA67DDULL }, /* XSUM_XXH64_testdata[8039] */ + { 4020, 0x0000000000000000ULL, 0x7722B4FD182BE35AULL }, /* XSUM_XXH64_testdata[8040] */ + { 4020, 0x000000009E3779B1ULL, 0x4482C3CC1893119FULL }, /* XSUM_XXH64_testdata[8041] */ + { 4021, 0x0000000000000000ULL, 0x704E3234F7DE73F3ULL }, /* XSUM_XXH64_testdata[8042] */ + { 4021, 0x000000009E3779B1ULL, 0xBC85B1183AD3928DULL }, /* XSUM_XXH64_testdata[8043] */ + { 4022, 0x0000000000000000ULL, 0x24D0838307445FC8ULL }, /* XSUM_XXH64_testdata[8044] */ + { 4022, 0x000000009E3779B1ULL, 0xBF89C8FD67D3A49CULL }, /* XSUM_XXH64_testdata[8045] */ + { 4023, 0x0000000000000000ULL, 0xD4D5E6CB1C69978CULL }, /* XSUM_XXH64_testdata[8046] */ + { 4023, 0x000000009E3779B1ULL, 0xAC2FA91127C9BADCULL }, /* XSUM_XXH64_testdata[8047] */ + { 4024, 0x0000000000000000ULL, 0x2DDAB5327185B20BULL }, /* XSUM_XXH64_testdata[8048] */ + { 4024, 0x000000009E3779B1ULL, 0xAE348C0F9FC7D1A7ULL }, /* XSUM_XXH64_testdata[8049] */ + { 4025, 0x0000000000000000ULL, 0x96506FE26BBCBCC5ULL }, /* XSUM_XXH64_testdata[8050] */ + { 4025, 0x000000009E3779B1ULL, 0x284E8B473F4DA22EULL }, /* XSUM_XXH64_testdata[8051] */ + { 4026, 0x0000000000000000ULL, 0x62A6D15E9C9AB8ECULL }, /* XSUM_XXH64_testdata[8052] */ + { 4026, 0x000000009E3779B1ULL, 0x24F324DB49AA0E55ULL }, /* XSUM_XXH64_testdata[8053] */ + { 4027, 0x0000000000000000ULL, 0x0A0AFC2C557A4479ULL }, /* XSUM_XXH64_testdata[8054] */ + { 4027, 0x000000009E3779B1ULL, 0x5AA617C2A43E2EDCULL }, /* XSUM_XXH64_testdata[8055] */ + { 4028, 0x0000000000000000ULL, 0x1E3D67AD22073383ULL }, /* XSUM_XXH64_testdata[8056] */ + { 4028, 0x000000009E3779B1ULL, 0x679513AE5CD49675ULL }, /* XSUM_XXH64_testdata[8057] */ + { 4029, 0x0000000000000000ULL, 0xEC94C1004820C1DEULL }, /* XSUM_XXH64_testdata[8058] */ + { 4029, 0x000000009E3779B1ULL, 0x413CCFAFD9C2A0A8ULL }, /* XSUM_XXH64_testdata[8059] */ + { 4030, 0x0000000000000000ULL, 0xF60D3FAED32689EEULL }, /* XSUM_XXH64_testdata[8060] */ + { 4030, 0x000000009E3779B1ULL, 0xD20201045EBE1B17ULL }, /* XSUM_XXH64_testdata[8061] */ + { 4031, 0x0000000000000000ULL, 0x47CEB1434470EB1CULL }, /* XSUM_XXH64_testdata[8062] */ + { 4031, 0x000000009E3779B1ULL, 0x66F88313EC53E688ULL }, /* XSUM_XXH64_testdata[8063] */ + { 4032, 0x0000000000000000ULL, 0x6F52ECC459D782BBULL }, /* XSUM_XXH64_testdata[8064] */ + { 4032, 0x000000009E3779B1ULL, 0xDCD097CED8214287ULL }, /* XSUM_XXH64_testdata[8065] */ + { 4033, 0x0000000000000000ULL, 0x188671E63DF6BFAEULL }, /* XSUM_XXH64_testdata[8066] */ + { 4033, 0x000000009E3779B1ULL, 0x54727CDDB9E40BCEULL }, /* XSUM_XXH64_testdata[8067] */ + { 4034, 0x0000000000000000ULL, 0x4053F2D063DD8ABAULL }, /* XSUM_XXH64_testdata[8068] */ + { 4034, 0x000000009E3779B1ULL, 0x4D6D802355D21406ULL }, /* XSUM_XXH64_testdata[8069] */ + { 4035, 0x0000000000000000ULL, 0x2080C6F3D3374171ULL }, /* XSUM_XXH64_testdata[8070] */ + { 4035, 0x000000009E3779B1ULL, 0xBD8A643376DBC7E1ULL }, /* XSUM_XXH64_testdata[8071] */ + { 4036, 0x0000000000000000ULL, 0x83F0F6AE0EA7BF01ULL }, /* XSUM_XXH64_testdata[8072] */ + { 4036, 0x000000009E3779B1ULL, 0xBFCED31BA76BDBFBULL }, /* XSUM_XXH64_testdata[8073] */ + { 4037, 0x0000000000000000ULL, 0xC5395E22533548C5ULL }, /* XSUM_XXH64_testdata[8074] */ + { 4037, 0x000000009E3779B1ULL, 0x5A001693D7B7AF40ULL }, /* XSUM_XXH64_testdata[8075] */ + { 4038, 0x0000000000000000ULL, 0xC226D9C7991FF778ULL }, /* XSUM_XXH64_testdata[8076] */ + { 4038, 0x000000009E3779B1ULL, 0x9C6877CEAE4406DBULL }, /* XSUM_XXH64_testdata[8077] */ + { 4039, 0x0000000000000000ULL, 0xC3A6361AB4E9C123ULL }, /* XSUM_XXH64_testdata[8078] */ + { 4039, 0x000000009E3779B1ULL, 0x824561D83749061DULL }, /* XSUM_XXH64_testdata[8079] */ + { 4040, 0x0000000000000000ULL, 0xBB2628736C0B33CEULL }, /* XSUM_XXH64_testdata[8080] */ + { 4040, 0x000000009E3779B1ULL, 0x4A39C7DB1F4994B6ULL }, /* XSUM_XXH64_testdata[8081] */ + { 4041, 0x0000000000000000ULL, 0x47A8ADCA0E855A16ULL }, /* XSUM_XXH64_testdata[8082] */ + { 4041, 0x000000009E3779B1ULL, 0xACAD4424055950B0ULL }, /* XSUM_XXH64_testdata[8083] */ + { 4042, 0x0000000000000000ULL, 0x929C51BD93444720ULL }, /* XSUM_XXH64_testdata[8084] */ + { 4042, 0x000000009E3779B1ULL, 0x583874E5D1A0EDB5ULL }, /* XSUM_XXH64_testdata[8085] */ + { 4043, 0x0000000000000000ULL, 0xCF3FFDE3CCF41C84ULL }, /* XSUM_XXH64_testdata[8086] */ + { 4043, 0x000000009E3779B1ULL, 0xFEC86DD93345C0AAULL }, /* XSUM_XXH64_testdata[8087] */ + { 4044, 0x0000000000000000ULL, 0x630DBA38F22CB342ULL }, /* XSUM_XXH64_testdata[8088] */ + { 4044, 0x000000009E3779B1ULL, 0x5B78D9830DA38B76ULL }, /* XSUM_XXH64_testdata[8089] */ + { 4045, 0x0000000000000000ULL, 0xE715ED35C6A5A6DBULL }, /* XSUM_XXH64_testdata[8090] */ + { 4045, 0x000000009E3779B1ULL, 0x7B424B81E833E6B0ULL }, /* XSUM_XXH64_testdata[8091] */ + { 4046, 0x0000000000000000ULL, 0x43CA59C81E83498AULL }, /* XSUM_XXH64_testdata[8092] */ + { 4046, 0x000000009E3779B1ULL, 0x0F2E9D429150943FULL }, /* XSUM_XXH64_testdata[8093] */ + { 4047, 0x0000000000000000ULL, 0x1A24DB18A1292BF5ULL }, /* XSUM_XXH64_testdata[8094] */ + { 4047, 0x000000009E3779B1ULL, 0x68DF522684C65366ULL }, /* XSUM_XXH64_testdata[8095] */ + { 4048, 0x0000000000000000ULL, 0xDC2D4281642B96EDULL }, /* XSUM_XXH64_testdata[8096] */ + { 4048, 0x000000009E3779B1ULL, 0x5FAD0C102C389E5CULL }, /* XSUM_XXH64_testdata[8097] */ + { 4049, 0x0000000000000000ULL, 0x1F1DCB503FC94208ULL }, /* XSUM_XXH64_testdata[8098] */ + { 4049, 0x000000009E3779B1ULL, 0xAF2085D1666AC962ULL }, /* XSUM_XXH64_testdata[8099] */ + { 4050, 0x0000000000000000ULL, 0xE31518B002D8238AULL }, /* XSUM_XXH64_testdata[8100] */ + { 4050, 0x000000009E3779B1ULL, 0xCF66BA6EFC701801ULL }, /* XSUM_XXH64_testdata[8101] */ + { 4051, 0x0000000000000000ULL, 0xCCA119E0DA17FFF0ULL }, /* XSUM_XXH64_testdata[8102] */ + { 4051, 0x000000009E3779B1ULL, 0x6A8CF0C08C7872C8ULL }, /* XSUM_XXH64_testdata[8103] */ + { 4052, 0x0000000000000000ULL, 0x6B14D3C36A16BE1EULL }, /* XSUM_XXH64_testdata[8104] */ + { 4052, 0x000000009E3779B1ULL, 0x1915F82CE8F967B2ULL }, /* XSUM_XXH64_testdata[8105] */ + { 4053, 0x0000000000000000ULL, 0x08D5963DA776CE54ULL }, /* XSUM_XXH64_testdata[8106] */ + { 4053, 0x000000009E3779B1ULL, 0x26EB28291524A70EULL }, /* XSUM_XXH64_testdata[8107] */ + { 4054, 0x0000000000000000ULL, 0x36A484B5680E29CDULL }, /* XSUM_XXH64_testdata[8108] */ + { 4054, 0x000000009E3779B1ULL, 0x53C197CC36839A69ULL }, /* XSUM_XXH64_testdata[8109] */ + { 4055, 0x0000000000000000ULL, 0x78E00D72336053B5ULL }, /* XSUM_XXH64_testdata[8110] */ + { 4055, 0x000000009E3779B1ULL, 0x0D5190BDD99352FFULL }, /* XSUM_XXH64_testdata[8111] */ + { 4056, 0x0000000000000000ULL, 0x4B209C54F197D459ULL }, /* XSUM_XXH64_testdata[8112] */ + { 4056, 0x000000009E3779B1ULL, 0x84CBA43CD01FE1B5ULL }, /* XSUM_XXH64_testdata[8113] */ + { 4057, 0x0000000000000000ULL, 0x15301E4472CA272CULL }, /* XSUM_XXH64_testdata[8114] */ + { 4057, 0x000000009E3779B1ULL, 0x580A5761F5276F12ULL }, /* XSUM_XXH64_testdata[8115] */ + { 4058, 0x0000000000000000ULL, 0x6DE53E730A657BA4ULL }, /* XSUM_XXH64_testdata[8116] */ + { 4058, 0x000000009E3779B1ULL, 0xA87F49BF1E8E5E4CULL }, /* XSUM_XXH64_testdata[8117] */ + { 4059, 0x0000000000000000ULL, 0x5E8066C8413B9BA8ULL }, /* XSUM_XXH64_testdata[8118] */ + { 4059, 0x000000009E3779B1ULL, 0xCCC75D5B8C25FB12ULL }, /* XSUM_XXH64_testdata[8119] */ + { 4060, 0x0000000000000000ULL, 0x9DDCA1A9A31EDACEULL }, /* XSUM_XXH64_testdata[8120] */ + { 4060, 0x000000009E3779B1ULL, 0x9557E73E80D121CDULL }, /* XSUM_XXH64_testdata[8121] */ + { 4061, 0x0000000000000000ULL, 0x21DDD14C2C1BEA08ULL }, /* XSUM_XXH64_testdata[8122] */ + { 4061, 0x000000009E3779B1ULL, 0x82BF54E49EF1EEDEULL }, /* XSUM_XXH64_testdata[8123] */ + { 4062, 0x0000000000000000ULL, 0x1FAF972521A9AA91ULL }, /* XSUM_XXH64_testdata[8124] */ + { 4062, 0x000000009E3779B1ULL, 0x020AA0FC46FF91D9ULL }, /* XSUM_XXH64_testdata[8125] */ + { 4063, 0x0000000000000000ULL, 0xE34C3C6A7F56EBDEULL }, /* XSUM_XXH64_testdata[8126] */ + { 4063, 0x000000009E3779B1ULL, 0x33A54B3DC8603FABULL }, /* XSUM_XXH64_testdata[8127] */ + { 4064, 0x0000000000000000ULL, 0x2D3594F5DA50CB02ULL }, /* XSUM_XXH64_testdata[8128] */ + { 4064, 0x000000009E3779B1ULL, 0xC2231934570A971EULL }, /* XSUM_XXH64_testdata[8129] */ + { 4065, 0x0000000000000000ULL, 0x3732D7559634A341ULL }, /* XSUM_XXH64_testdata[8130] */ + { 4065, 0x000000009E3779B1ULL, 0xAED8A91F38010606ULL }, /* XSUM_XXH64_testdata[8131] */ + { 4066, 0x0000000000000000ULL, 0x5D5BF492B1C73B75ULL }, /* XSUM_XXH64_testdata[8132] */ + { 4066, 0x000000009E3779B1ULL, 0xC0E7F4CB228197E2ULL }, /* XSUM_XXH64_testdata[8133] */ + { 4067, 0x0000000000000000ULL, 0xAA7311C102DCE86BULL }, /* XSUM_XXH64_testdata[8134] */ + { 4067, 0x000000009E3779B1ULL, 0xB9DA748FB617D1D3ULL }, /* XSUM_XXH64_testdata[8135] */ + { 4068, 0x0000000000000000ULL, 0xD5000B7825DBCA69ULL }, /* XSUM_XXH64_testdata[8136] */ + { 4068, 0x000000009E3779B1ULL, 0x982FB203CD12F16CULL }, /* XSUM_XXH64_testdata[8137] */ + { 4069, 0x0000000000000000ULL, 0xBFD5A3F3884815C4ULL }, /* XSUM_XXH64_testdata[8138] */ + { 4069, 0x000000009E3779B1ULL, 0x4C9F535507154E24ULL }, /* XSUM_XXH64_testdata[8139] */ + { 4070, 0x0000000000000000ULL, 0xF64323EF662F6E46ULL }, /* XSUM_XXH64_testdata[8140] */ + { 4070, 0x000000009E3779B1ULL, 0x15D2F5C52800BD85ULL }, /* XSUM_XXH64_testdata[8141] */ + { 4071, 0x0000000000000000ULL, 0x7A8ED28DF7B1AF79ULL }, /* XSUM_XXH64_testdata[8142] */ + { 4071, 0x000000009E3779B1ULL, 0xF241DE311242EB87ULL }, /* XSUM_XXH64_testdata[8143] */ + { 4072, 0x0000000000000000ULL, 0xFB47A3CB83561B32ULL }, /* XSUM_XXH64_testdata[8144] */ + { 4072, 0x000000009E3779B1ULL, 0x842E272330A377AEULL }, /* XSUM_XXH64_testdata[8145] */ + { 4073, 0x0000000000000000ULL, 0x333FF4343E2B34A3ULL }, /* XSUM_XXH64_testdata[8146] */ + { 4073, 0x000000009E3779B1ULL, 0x1FEA17851B97FB48ULL }, /* XSUM_XXH64_testdata[8147] */ + { 4074, 0x0000000000000000ULL, 0x548410F24A4A46C6ULL }, /* XSUM_XXH64_testdata[8148] */ + { 4074, 0x000000009E3779B1ULL, 0xCF161A4407045D93ULL }, /* XSUM_XXH64_testdata[8149] */ + { 4075, 0x0000000000000000ULL, 0x13D886068FD1DC72ULL }, /* XSUM_XXH64_testdata[8150] */ + { 4075, 0x000000009E3779B1ULL, 0xB9DA91762F6CF967ULL }, /* XSUM_XXH64_testdata[8151] */ + { 4076, 0x0000000000000000ULL, 0x1B40A74F55F0CA72ULL }, /* XSUM_XXH64_testdata[8152] */ + { 4076, 0x000000009E3779B1ULL, 0x45DAAE16A129665BULL }, /* XSUM_XXH64_testdata[8153] */ + { 4077, 0x0000000000000000ULL, 0xF46C23EA2D688B49ULL }, /* XSUM_XXH64_testdata[8154] */ + { 4077, 0x000000009E3779B1ULL, 0xDA6E67C3CF530A9DULL }, /* XSUM_XXH64_testdata[8155] */ + { 4078, 0x0000000000000000ULL, 0xB47060FD9B028C79ULL }, /* XSUM_XXH64_testdata[8156] */ + { 4078, 0x000000009E3779B1ULL, 0x8C077A05E2E3FAC8ULL }, /* XSUM_XXH64_testdata[8157] */ + { 4079, 0x0000000000000000ULL, 0x98F5EC35F8F2909DULL }, /* XSUM_XXH64_testdata[8158] */ + { 4079, 0x000000009E3779B1ULL, 0xF18C0686B87806D4ULL }, /* XSUM_XXH64_testdata[8159] */ + { 4080, 0x0000000000000000ULL, 0xC8B83C0B7B6732F8ULL }, /* XSUM_XXH64_testdata[8160] */ + { 4080, 0x000000009E3779B1ULL, 0x868CA7977B762524ULL }, /* XSUM_XXH64_testdata[8161] */ + { 4081, 0x0000000000000000ULL, 0x2C5CC2F3F5D02D1EULL }, /* XSUM_XXH64_testdata[8162] */ + { 4081, 0x000000009E3779B1ULL, 0x02F47C41C95692C8ULL }, /* XSUM_XXH64_testdata[8163] */ + { 4082, 0x0000000000000000ULL, 0x973D854ED70A408BULL }, /* XSUM_XXH64_testdata[8164] */ + { 4082, 0x000000009E3779B1ULL, 0x519E265E8ECE9294ULL }, /* XSUM_XXH64_testdata[8165] */ + { 4083, 0x0000000000000000ULL, 0x13460FC4DCCB3434ULL }, /* XSUM_XXH64_testdata[8166] */ + { 4083, 0x000000009E3779B1ULL, 0xC8FC637BC17232A4ULL }, /* XSUM_XXH64_testdata[8167] */ + { 4084, 0x0000000000000000ULL, 0xED14D75A091FE674ULL }, /* XSUM_XXH64_testdata[8168] */ + { 4084, 0x000000009E3779B1ULL, 0x0048AAB4FF95BA90ULL }, /* XSUM_XXH64_testdata[8169] */ + { 4085, 0x0000000000000000ULL, 0x650DF94DF15674C5ULL }, /* XSUM_XXH64_testdata[8170] */ + { 4085, 0x000000009E3779B1ULL, 0xF030F38644940B54ULL }, /* XSUM_XXH64_testdata[8171] */ + { 4086, 0x0000000000000000ULL, 0x65D46DBFD457731DULL }, /* XSUM_XXH64_testdata[8172] */ + { 4086, 0x000000009E3779B1ULL, 0x5F8B6B8B6A533BFFULL }, /* XSUM_XXH64_testdata[8173] */ + { 4087, 0x0000000000000000ULL, 0x4B6EA1D18619EF09ULL }, /* XSUM_XXH64_testdata[8174] */ + { 4087, 0x000000009E3779B1ULL, 0x5A7ABBFCD538E252ULL }, /* XSUM_XXH64_testdata[8175] */ + { 4088, 0x0000000000000000ULL, 0x7CEB172052D9E610ULL }, /* XSUM_XXH64_testdata[8176] */ + { 4088, 0x000000009E3779B1ULL, 0x4F08B47E9E745585ULL }, /* XSUM_XXH64_testdata[8177] */ + { 4089, 0x0000000000000000ULL, 0x4A08B85F5D97E895ULL }, /* XSUM_XXH64_testdata[8178] */ + { 4089, 0x000000009E3779B1ULL, 0xC68B362CD5D8ADC1ULL }, /* XSUM_XXH64_testdata[8179] */ + { 4090, 0x0000000000000000ULL, 0x84378FB5DB1D2DC0ULL }, /* XSUM_XXH64_testdata[8180] */ + { 4090, 0x000000009E3779B1ULL, 0x9FD16BAB358DCB73ULL }, /* XSUM_XXH64_testdata[8181] */ + { 4091, 0x0000000000000000ULL, 0xFAA2FD0B2E24BDD3ULL }, /* XSUM_XXH64_testdata[8182] */ + { 4091, 0x000000009E3779B1ULL, 0x06D7ADADA05CCAA1ULL }, /* XSUM_XXH64_testdata[8183] */ + { 4092, 0x0000000000000000ULL, 0xCF16DC0C077710A9ULL }, /* XSUM_XXH64_testdata[8184] */ + { 4092, 0x000000009E3779B1ULL, 0xD48FC1BDEA8DE050ULL }, /* XSUM_XXH64_testdata[8185] */ + { 4093, 0x0000000000000000ULL, 0x44DDB6E5702D093CULL }, /* XSUM_XXH64_testdata[8186] */ + { 4093, 0x000000009E3779B1ULL, 0xE4BE077DBBCE7A63ULL }, /* XSUM_XXH64_testdata[8187] */ + { 4094, 0x0000000000000000ULL, 0x9261AC32B68E7FBCULL }, /* XSUM_XXH64_testdata[8188] */ + { 4094, 0x000000009E3779B1ULL, 0xEE828ECB3F62F0A0ULL }, /* XSUM_XXH64_testdata[8189] */ + { 4095, 0x0000000000000000ULL, 0xF7CFAAA03BE2ABF0ULL }, /* XSUM_XXH64_testdata[8190] */ + { 4095, 0x000000009E3779B1ULL, 0x6A128F7F02591E57ULL }, /* XSUM_XXH64_testdata[8191] */ + { 4096, 0x0000000000000000ULL, 0xAB77F4AF85F4E70BULL }, /* XSUM_XXH64_testdata[8192] */ + { 4096, 0x000000009E3779B1ULL, 0xCB8B60CBA513125DULL }, /* XSUM_XXH64_testdata[8193] */ + { 4097, 0x0000000000000000ULL, 0xF617DE30F1C0ABB6ULL }, /* XSUM_XXH64_testdata[8194] */ + { 4097, 0x000000009E3779B1ULL, 0x10C7D31644C76787ULL }, /* XSUM_XXH64_testdata[8195] */ + { 4098, 0x0000000000000000ULL, 0xA70FDB06E7E77E59ULL }, /* XSUM_XXH64_testdata[8196] */ + { 4098, 0x000000009E3779B1ULL, 0xA068C088EF5D1E16ULL }, /* XSUM_XXH64_testdata[8197] */ + { 4099, 0x0000000000000000ULL, 0xF5D6AEE1D10D6BFDULL }, /* XSUM_XXH64_testdata[8198] */ + { 4099, 0x000000009E3779B1ULL, 0x3526D4FD3184E7FCULL }, /* XSUM_XXH64_testdata[8199] */ + { 4100, 0x0000000000000000ULL, 0x5356C4654E296FD1ULL }, /* XSUM_XXH64_testdata[8200] */ + { 4100, 0x000000009E3779B1ULL, 0xF183449A95BBDC26ULL }, /* XSUM_XXH64_testdata[8201] */ + { 4101, 0x0000000000000000ULL, 0x42C187B2F88CD6F8ULL }, /* XSUM_XXH64_testdata[8202] */ + { 4101, 0x000000009E3779B1ULL, 0x46B6F57256685878ULL }, /* XSUM_XXH64_testdata[8203] */ + { 4102, 0x0000000000000000ULL, 0x82D895CD84B0F37DULL }, /* XSUM_XXH64_testdata[8204] */ + { 4102, 0x000000009E3779B1ULL, 0xD4A0C5F0C40C18C5ULL }, /* XSUM_XXH64_testdata[8205] */ + { 4103, 0x0000000000000000ULL, 0xAAAFA9B492392879ULL }, /* XSUM_XXH64_testdata[8206] */ + { 4103, 0x000000009E3779B1ULL, 0x380AE91CC372F32FULL }, /* XSUM_XXH64_testdata[8207] */ + { 4104, 0x0000000000000000ULL, 0x66FFC6308C6EE945ULL }, /* XSUM_XXH64_testdata[8208] */ + { 4104, 0x000000009E3779B1ULL, 0x4C4D6ECAB6B407DEULL }, /* XSUM_XXH64_testdata[8209] */ + { 4105, 0x0000000000000000ULL, 0x315639DA92D17B9CULL }, /* XSUM_XXH64_testdata[8210] */ + { 4105, 0x000000009E3779B1ULL, 0x3E463FD3D976BFC4ULL }, /* XSUM_XXH64_testdata[8211] */ + { 4106, 0x0000000000000000ULL, 0x3127F24CF8A96824ULL }, /* XSUM_XXH64_testdata[8212] */ + { 4106, 0x000000009E3779B1ULL, 0x60668C265EA0FA15ULL }, /* XSUM_XXH64_testdata[8213] */ + { 4107, 0x0000000000000000ULL, 0x68489A86256CEE59ULL }, /* XSUM_XXH64_testdata[8214] */ + { 4107, 0x000000009E3779B1ULL, 0x097CF0DAA2E6086DULL }, /* XSUM_XXH64_testdata[8215] */ + { 4108, 0x0000000000000000ULL, 0xB76A19460BC12D18ULL }, /* XSUM_XXH64_testdata[8216] */ + { 4108, 0x000000009E3779B1ULL, 0xD18E0A89A760B2AEULL }, /* XSUM_XXH64_testdata[8217] */ + { 4109, 0x0000000000000000ULL, 0x07385293D966B468ULL }, /* XSUM_XXH64_testdata[8218] */ + { 4109, 0x000000009E3779B1ULL, 0xB7F4D9B1207BACEDULL }, /* XSUM_XXH64_testdata[8219] */ + { 4110, 0x0000000000000000ULL, 0x4DDD11582449D60CULL }, /* XSUM_XXH64_testdata[8220] */ + { 4110, 0x000000009E3779B1ULL, 0xED53350B67670CC9ULL }, /* XSUM_XXH64_testdata[8221] */ + { 4111, 0x0000000000000000ULL, 0xDFC88DC5AEFDC120ULL }, /* XSUM_XXH64_testdata[8222] */ + { 4111, 0x000000009E3779B1ULL, 0xB1CFB861FC7ABCA7ULL }, /* XSUM_XXH64_testdata[8223] */ + { 4112, 0x0000000000000000ULL, 0x50BC7144EADAE92EULL }, /* XSUM_XXH64_testdata[8224] */ + { 4112, 0x000000009E3779B1ULL, 0x410922D3712BB7C9ULL }, /* XSUM_XXH64_testdata[8225] */ + { 4113, 0x0000000000000000ULL, 0x76D9D24771FE08FCULL }, /* XSUM_XXH64_testdata[8226] */ + { 4113, 0x000000009E3779B1ULL, 0x963353AC41789F2BULL }, /* XSUM_XXH64_testdata[8227] */ + { 4114, 0x0000000000000000ULL, 0x86ABAC7D98EC100CULL }, /* XSUM_XXH64_testdata[8228] */ + { 4114, 0x000000009E3779B1ULL, 0xAD4A3C8244C46BF6ULL }, /* XSUM_XXH64_testdata[8229] */ + { 4115, 0x0000000000000000ULL, 0xBF51C1D33C8A534CULL }, /* XSUM_XXH64_testdata[8230] */ + { 4115, 0x000000009E3779B1ULL, 0x80081946E56ED2DDULL }, /* XSUM_XXH64_testdata[8231] */ + { 4116, 0x0000000000000000ULL, 0x283C38D7F07D40D6ULL }, /* XSUM_XXH64_testdata[8232] */ + { 4116, 0x000000009E3779B1ULL, 0xA599EDD617182CD2ULL }, /* XSUM_XXH64_testdata[8233] */ + { 4117, 0x0000000000000000ULL, 0x220B744BE3AA74CFULL }, /* XSUM_XXH64_testdata[8234] */ + { 4117, 0x000000009E3779B1ULL, 0xBE1FAAFDEC2062CFULL }, /* XSUM_XXH64_testdata[8235] */ + { 4118, 0x0000000000000000ULL, 0x7240D06D46F33F5EULL }, /* XSUM_XXH64_testdata[8236] */ + { 4118, 0x000000009E3779B1ULL, 0xE9B781094B30BE1BULL }, /* XSUM_XXH64_testdata[8237] */ + { 4119, 0x0000000000000000ULL, 0x1CF9A0A60BF2AB5AULL }, /* XSUM_XXH64_testdata[8238] */ + { 4119, 0x000000009E3779B1ULL, 0x860ACFA73489CF62ULL }, /* XSUM_XXH64_testdata[8239] */ + { 4120, 0x0000000000000000ULL, 0x7FBA05F3E30C4ED1ULL }, /* XSUM_XXH64_testdata[8240] */ + { 4120, 0x000000009E3779B1ULL, 0x92FA02841C207F92ULL }, /* XSUM_XXH64_testdata[8241] */ + { 4121, 0x0000000000000000ULL, 0xB43D33C041CF5C3CULL }, /* XSUM_XXH64_testdata[8242] */ + { 4121, 0x000000009E3779B1ULL, 0x0CBDE8FF8AF3BF83ULL }, /* XSUM_XXH64_testdata[8243] */ + { 4122, 0x0000000000000000ULL, 0xBD39CD71F21868EFULL }, /* XSUM_XXH64_testdata[8244] */ + { 4122, 0x000000009E3779B1ULL, 0x30318A47844C1DBCULL }, /* XSUM_XXH64_testdata[8245] */ + { 4123, 0x0000000000000000ULL, 0x724688C6C7F42EFFULL }, /* XSUM_XXH64_testdata[8246] */ + { 4123, 0x000000009E3779B1ULL, 0xE52886F44DFB76D4ULL }, /* XSUM_XXH64_testdata[8247] */ + { 4124, 0x0000000000000000ULL, 0x49453128D4D16EA1ULL }, /* XSUM_XXH64_testdata[8248] */ + { 4124, 0x000000009E3779B1ULL, 0xEAB833BE258F1B51ULL }, /* XSUM_XXH64_testdata[8249] */ + { 4125, 0x0000000000000000ULL, 0x6BB373FB69CC7A32ULL }, /* XSUM_XXH64_testdata[8250] */ + { 4125, 0x000000009E3779B1ULL, 0x74CE0B68038F9267ULL }, /* XSUM_XXH64_testdata[8251] */ + { 4126, 0x0000000000000000ULL, 0x2C900E52375B8221ULL }, /* XSUM_XXH64_testdata[8252] */ + { 4126, 0x000000009E3779B1ULL, 0xA65B7A72B914F67CULL }, /* XSUM_XXH64_testdata[8253] */ + { 4127, 0x0000000000000000ULL, 0x0016F37C688572E2ULL }, /* XSUM_XXH64_testdata[8254] */ + { 4127, 0x000000009E3779B1ULL, 0xC440732EA6CB5D99ULL }, /* XSUM_XXH64_testdata[8255] */ + { 4128, 0x0000000000000000ULL, 0xF56730FF25767EEFULL }, /* XSUM_XXH64_testdata[8256] */ + { 4128, 0x000000009E3779B1ULL, 0x14068AE20F8BDA5CULL }, /* XSUM_XXH64_testdata[8257] */ + { 4129, 0x0000000000000000ULL, 0x7A9A8DF85C54CA17ULL }, /* XSUM_XXH64_testdata[8258] */ + { 4129, 0x000000009E3779B1ULL, 0xDECA8AD3A479A8CBULL }, /* XSUM_XXH64_testdata[8259] */ + { 4130, 0x0000000000000000ULL, 0xBB48991B63969AF5ULL }, /* XSUM_XXH64_testdata[8260] */ + { 4130, 0x000000009E3779B1ULL, 0x4A301822BC87DAF3ULL }, /* XSUM_XXH64_testdata[8261] */ + { 4131, 0x0000000000000000ULL, 0x18BE5A69F054C6AAULL }, /* XSUM_XXH64_testdata[8262] */ + { 4131, 0x000000009E3779B1ULL, 0xEE4A52292DFC3EFEULL }, /* XSUM_XXH64_testdata[8263] */ + { 4132, 0x0000000000000000ULL, 0x6851838FAE8519DCULL }, /* XSUM_XXH64_testdata[8264] */ + { 4132, 0x000000009E3779B1ULL, 0xD76340BF3AD21CDBULL }, /* XSUM_XXH64_testdata[8265] */ + { 4133, 0x0000000000000000ULL, 0xD5F494621ABC8C4CULL }, /* XSUM_XXH64_testdata[8266] */ + { 4133, 0x000000009E3779B1ULL, 0x8D98329C11F4A0FCULL }, /* XSUM_XXH64_testdata[8267] */ + { 4134, 0x0000000000000000ULL, 0x5E405AFC587493B8ULL }, /* XSUM_XXH64_testdata[8268] */ + { 4134, 0x000000009E3779B1ULL, 0x07DBC2BF87E089BFULL }, /* XSUM_XXH64_testdata[8269] */ + { 4135, 0x0000000000000000ULL, 0xD6F8B197CB41DCC0ULL }, /* XSUM_XXH64_testdata[8270] */ + { 4135, 0x000000009E3779B1ULL, 0xE119F374A566E415ULL }, /* XSUM_XXH64_testdata[8271] */ + { 4136, 0x0000000000000000ULL, 0x893D35B0F57CD5C0ULL }, /* XSUM_XXH64_testdata[8272] */ + { 4136, 0x000000009E3779B1ULL, 0x5FEBF496FC0AF6A2ULL }, /* XSUM_XXH64_testdata[8273] */ + { 4137, 0x0000000000000000ULL, 0xFA4AAA1FD044BFACULL }, /* XSUM_XXH64_testdata[8274] */ + { 4137, 0x000000009E3779B1ULL, 0x9FA3B0DEAE2A80C8ULL }, /* XSUM_XXH64_testdata[8275] */ + { 4138, 0x0000000000000000ULL, 0x6D670DEBD8BC06B7ULL }, /* XSUM_XXH64_testdata[8276] */ + { 4138, 0x000000009E3779B1ULL, 0x6DD6F9CD2DD2312DULL }, /* XSUM_XXH64_testdata[8277] */ + { 4139, 0x0000000000000000ULL, 0x6D7292BFBC67E4A6ULL }, /* XSUM_XXH64_testdata[8278] */ + { 4139, 0x000000009E3779B1ULL, 0x9D8DAC1E22B3E997ULL }, /* XSUM_XXH64_testdata[8279] */ + { 4140, 0x0000000000000000ULL, 0xE788AA97A7ADBDF2ULL }, /* XSUM_XXH64_testdata[8280] */ + { 4140, 0x000000009E3779B1ULL, 0xEEF8E9A5CC82EAD4ULL }, /* XSUM_XXH64_testdata[8281] */ + { 4141, 0x0000000000000000ULL, 0x7939ACFB1A6FDFE7ULL }, /* XSUM_XXH64_testdata[8282] */ + { 4141, 0x000000009E3779B1ULL, 0xAD278DCB5DAFE76EULL }, /* XSUM_XXH64_testdata[8283] */ + { 4142, 0x0000000000000000ULL, 0xA2C724EFEC2395B2ULL }, /* XSUM_XXH64_testdata[8284] */ + { 4142, 0x000000009E3779B1ULL, 0x38EC41E665989C5DULL }, /* XSUM_XXH64_testdata[8285] */ + { 4143, 0x0000000000000000ULL, 0xB45AC98A59EFFB9CULL }, /* XSUM_XXH64_testdata[8286] */ + { 4143, 0x000000009E3779B1ULL, 0x3AFFCA163742F4C5ULL }, /* XSUM_XXH64_testdata[8287] */ + { 4144, 0x0000000000000000ULL, 0xC8AD9B33CA256BABULL }, /* XSUM_XXH64_testdata[8288] */ + { 4144, 0x000000009E3779B1ULL, 0x8AE6A1A64457DA9AULL }, /* XSUM_XXH64_testdata[8289] */ + { 4145, 0x0000000000000000ULL, 0xBBA859231EF5ADA2ULL }, /* XSUM_XXH64_testdata[8290] */ + { 4145, 0x000000009E3779B1ULL, 0x287AB11FE134A5BDULL }, /* XSUM_XXH64_testdata[8291] */ + { 4146, 0x0000000000000000ULL, 0x4B64C3BB9F81AD5FULL }, /* XSUM_XXH64_testdata[8292] */ + { 4146, 0x000000009E3779B1ULL, 0xEAE3FB2EC1FAB3C9ULL }, /* XSUM_XXH64_testdata[8293] */ + { 4147, 0x0000000000000000ULL, 0xC8173F4979794318ULL }, /* XSUM_XXH64_testdata[8294] */ + { 4147, 0x000000009E3779B1ULL, 0xF200A48FCFCCCB32ULL }, /* XSUM_XXH64_testdata[8295] */ + { 4148, 0x0000000000000000ULL, 0xED060FAE81A0AA55ULL }, /* XSUM_XXH64_testdata[8296] */ + { 4148, 0x000000009E3779B1ULL, 0x2F2BE45DE6DF8F2BULL }, /* XSUM_XXH64_testdata[8297] */ + { 4149, 0x0000000000000000ULL, 0x67EE2C9F3760D4DAULL }, /* XSUM_XXH64_testdata[8298] */ + { 4149, 0x000000009E3779B1ULL, 0xC6FF67580E677A9EULL }, /* XSUM_XXH64_testdata[8299] */ + { 4150, 0x0000000000000000ULL, 0x3DE0DC79813C560CULL }, /* XSUM_XXH64_testdata[8300] */ + { 4150, 0x000000009E3779B1ULL, 0x79F00D9164150189ULL }, /* XSUM_XXH64_testdata[8301] */ + { 4151, 0x0000000000000000ULL, 0xD78CB32DFABB537FULL }, /* XSUM_XXH64_testdata[8302] */ + { 4151, 0x000000009E3779B1ULL, 0x763E1BC684496B86ULL }, /* XSUM_XXH64_testdata[8303] */ + { 4152, 0x0000000000000000ULL, 0x9B28848F75F29F4AULL }, /* XSUM_XXH64_testdata[8304] */ + { 4152, 0x000000009E3779B1ULL, 0x16CB1ACD120838E8ULL }, /* XSUM_XXH64_testdata[8305] */ + { 4153, 0x0000000000000000ULL, 0x7D6AAE101570B5C8ULL }, /* XSUM_XXH64_testdata[8306] */ + { 4153, 0x000000009E3779B1ULL, 0xF1AF4C7990DA5D1CULL }, /* XSUM_XXH64_testdata[8307] */ + { 4154, 0x0000000000000000ULL, 0x8245FC835B7FB340ULL }, /* XSUM_XXH64_testdata[8308] */ + { 4154, 0x000000009E3779B1ULL, 0x997572C2DAEF058FULL }, /* XSUM_XXH64_testdata[8309] */ + { 4155, 0x0000000000000000ULL, 0xA9747C8B569C2AD4ULL }, /* XSUM_XXH64_testdata[8310] */ + { 4155, 0x000000009E3779B1ULL, 0xEE95EEC9D54EF501ULL }, /* XSUM_XXH64_testdata[8311] */ + { 4156, 0x0000000000000000ULL, 0x1F0A2B2A0F1DE3CEULL }, /* XSUM_XXH64_testdata[8312] */ + { 4156, 0x000000009E3779B1ULL, 0xBA7FCFC24EE435E1ULL }, /* XSUM_XXH64_testdata[8313] */ + { 4157, 0x0000000000000000ULL, 0x87863E8AC72FC9AAULL }, /* XSUM_XXH64_testdata[8314] */ + { 4157, 0x000000009E3779B1ULL, 0x7183C86EBAA1BEC4ULL }, /* XSUM_XXH64_testdata[8315] */ + { 4158, 0x0000000000000000ULL, 0xE422B5D761EB88F7ULL }, /* XSUM_XXH64_testdata[8316] */ + { 4158, 0x000000009E3779B1ULL, 0x01636ABF2071199CULL }, /* XSUM_XXH64_testdata[8317] */ + { 4159, 0x0000000000000000ULL, 0xB291C2E614CF5684ULL }, /* XSUM_XXH64_testdata[8318] */ + { 4159, 0x000000009E3779B1ULL, 0x3A9BF57DFF788781ULL }, /* XSUM_XXH64_testdata[8319] */ + { 4160, 0x0000000000000000ULL, 0xEEE6A4E2AC952A5EULL }, /* XSUM_XXH64_testdata[8320] */ + { 4160, 0x000000009E3779B1ULL, 0xA4CB59E19D6A35F9ULL }, /* XSUM_XXH64_testdata[8321] */ +}; +static const XSUM_testdata64_t XSUM_XXH3_testdata[] = { + { 0, 0x0000000000000000ULL, 0x2D06800538D394C2ULL }, /* XSUM_XXH3_testdata[0] */ + { 0, 0x9E3779B185EBCA8DULL, 0xA8A6B918B2F0364AULL }, /* XSUM_XXH3_testdata[1] */ + { 1, 0x0000000000000000ULL, 0xC44BDFF4074EECDBULL }, /* XSUM_XXH3_testdata[2] */ + { 1, 0x9E3779B185EBCA8DULL, 0x032BE332DD766EF8ULL }, /* XSUM_XXH3_testdata[3] */ + { 2, 0x0000000000000000ULL, 0x7A9978044CB8A8BBULL }, /* XSUM_XXH3_testdata[4] */ + { 2, 0x9E3779B185EBCA8DULL, 0x764B35C90519AD88ULL }, /* XSUM_XXH3_testdata[5] */ + { 3, 0x0000000000000000ULL, 0x54247382A8D6B94DULL }, /* XSUM_XXH3_testdata[6] */ + { 3, 0x9E3779B185EBCA8DULL, 0x634B8990B4976373ULL }, /* XSUM_XXH3_testdata[7] */ + { 4, 0x0000000000000000ULL, 0xE5DC74BC51848A51ULL }, /* XSUM_XXH3_testdata[8] */ + { 4, 0x9E3779B185EBCA8DULL, 0xAA2E7ECCB0C8F747ULL }, /* XSUM_XXH3_testdata[9] */ + { 5, 0x0000000000000000ULL, 0xE4243F00720306BBULL }, /* XSUM_XXH3_testdata[10] */ + { 5, 0x9E3779B185EBCA8DULL, 0x5A67C87E50ED80EDULL }, /* XSUM_XXH3_testdata[11] */ + { 6, 0x0000000000000000ULL, 0x27B56A84CD2D7325ULL }, /* XSUM_XXH3_testdata[12] */ + { 6, 0x9E3779B185EBCA8DULL, 0x84589C116AB59AB9ULL }, /* XSUM_XXH3_testdata[13] */ + { 7, 0x0000000000000000ULL, 0x9941E0007F555E50ULL }, /* XSUM_XXH3_testdata[14] */ + { 7, 0x9E3779B185EBCA8DULL, 0x75BDAB43463F0151ULL }, /* XSUM_XXH3_testdata[15] */ + { 8, 0x0000000000000000ULL, 0x24CCC9ACAA9F65E4ULL }, /* XSUM_XXH3_testdata[16] */ + { 8, 0x9E3779B185EBCA8DULL, 0x8F973410999B8F6BULL }, /* XSUM_XXH3_testdata[17] */ + { 9, 0x0000000000000000ULL, 0x14D5001C15DD3F2BULL }, /* XSUM_XXH3_testdata[18] */ + { 9, 0x9E3779B185EBCA8DULL, 0xB3AE7333D9013F60ULL }, /* XSUM_XXH3_testdata[19] */ + { 10, 0x0000000000000000ULL, 0x1C117F233FBC3C14ULL }, /* XSUM_XXH3_testdata[20] */ + { 10, 0x9E3779B185EBCA8DULL, 0x5B8A62DB39366886ULL }, /* XSUM_XXH3_testdata[21] */ + { 11, 0x0000000000000000ULL, 0x889839B4C796DDD6ULL }, /* XSUM_XXH3_testdata[22] */ + { 11, 0x9E3779B185EBCA8DULL, 0x72D41CE6ECFFAA96ULL }, /* XSUM_XXH3_testdata[23] */ + { 12, 0x0000000000000000ULL, 0xA713DAF0DFBB77E7ULL }, /* XSUM_XXH3_testdata[24] */ + { 12, 0x9E3779B185EBCA8DULL, 0xE7303E1B2336DE0EULL }, /* XSUM_XXH3_testdata[25] */ + { 13, 0x0000000000000000ULL, 0x2EB03C6E66BA6524ULL }, /* XSUM_XXH3_testdata[26] */ + { 13, 0x9E3779B185EBCA8DULL, 0x0D7ECCE7A8C882EFULL }, /* XSUM_XXH3_testdata[27] */ + { 14, 0x0000000000000000ULL, 0x1AC0BBDA2B9FCF03ULL }, /* XSUM_XXH3_testdata[28] */ + { 14, 0x9E3779B185EBCA8DULL, 0xA7F68521581B173FULL }, /* XSUM_XXH3_testdata[29] */ + { 15, 0x0000000000000000ULL, 0x45556D4D6E1798BCULL }, /* XSUM_XXH3_testdata[30] */ + { 15, 0x9E3779B185EBCA8DULL, 0x710DD5318F6F16D5ULL }, /* XSUM_XXH3_testdata[31] */ + { 16, 0x0000000000000000ULL, 0x981B17D36C7498C9ULL }, /* XSUM_XXH3_testdata[32] */ + { 16, 0x9E3779B185EBCA8DULL, 0x663F29333B4DB6B1ULL }, /* XSUM_XXH3_testdata[33] */ + { 17, 0x0000000000000000ULL, 0x796F5ACD3A60F862ULL }, /* XSUM_XXH3_testdata[34] */ + { 17, 0x9E3779B185EBCA8DULL, 0xF3EC5067F4306DB3ULL }, /* XSUM_XXH3_testdata[35] */ + { 18, 0x0000000000000000ULL, 0x6CFEAA845E6EBCD1ULL }, /* XSUM_XXH3_testdata[36] */ + { 18, 0x9E3779B185EBCA8DULL, 0x603FDA3D472CBC69ULL }, /* XSUM_XXH3_testdata[37] */ + { 19, 0x0000000000000000ULL, 0x750D97933D2DC370ULL }, /* XSUM_XXH3_testdata[38] */ + { 19, 0x9E3779B185EBCA8DULL, 0xBD2FDA5B437EB249ULL }, /* XSUM_XXH3_testdata[39] */ + { 20, 0x0000000000000000ULL, 0x4BC18275FB46F223ULL }, /* XSUM_XXH3_testdata[40] */ + { 20, 0x9E3779B185EBCA8DULL, 0x933117EFBE73C5FAULL }, /* XSUM_XXH3_testdata[41] */ + { 21, 0x0000000000000000ULL, 0xCE0376AB8CDD7F20ULL }, /* XSUM_XXH3_testdata[42] */ + { 21, 0x9E3779B185EBCA8DULL, 0x405B0DE8FD0356A0ULL }, /* XSUM_XXH3_testdata[43] */ + { 22, 0x0000000000000000ULL, 0x85552B609DB72220ULL }, /* XSUM_XXH3_testdata[44] */ + { 22, 0x9E3779B185EBCA8DULL, 0xEDC5A811942FEC01ULL }, /* XSUM_XXH3_testdata[45] */ + { 23, 0x0000000000000000ULL, 0xE070C50BE9861FF8ULL }, /* XSUM_XXH3_testdata[46] */ + { 23, 0x9E3779B185EBCA8DULL, 0x06C667D9B49CD1F3ULL }, /* XSUM_XXH3_testdata[47] */ + { 24, 0x0000000000000000ULL, 0xA3FE70BF9D3510EBULL }, /* XSUM_XXH3_testdata[48] */ + { 24, 0x9E3779B185EBCA8DULL, 0x850E80FC35BDD690ULL }, /* XSUM_XXH3_testdata[49] */ + { 25, 0x0000000000000000ULL, 0x9E41329ED21A1D6DULL }, /* XSUM_XXH3_testdata[50] */ + { 25, 0x9E3779B185EBCA8DULL, 0x338FCFA5ECAB533AULL }, /* XSUM_XXH3_testdata[51] */ + { 26, 0x0000000000000000ULL, 0x667D3AAA920C9A05ULL }, /* XSUM_XXH3_testdata[52] */ + { 26, 0x9E3779B185EBCA8DULL, 0xCE0F4463ECABCC17ULL }, /* XSUM_XXH3_testdata[53] */ + { 27, 0x0000000000000000ULL, 0xF54AF525A7B4D3B9ULL }, /* XSUM_XXH3_testdata[54] */ + { 27, 0x9E3779B185EBCA8DULL, 0xC7D492AEB591CA2BULL }, /* XSUM_XXH3_testdata[55] */ + { 28, 0x0000000000000000ULL, 0x61D5D60DFED01688ULL }, /* XSUM_XXH3_testdata[56] */ + { 28, 0x9E3779B185EBCA8DULL, 0xED4786CC627A8EA5ULL }, /* XSUM_XXH3_testdata[57] */ + { 29, 0x0000000000000000ULL, 0xA375819F83DDCCE6ULL }, /* XSUM_XXH3_testdata[58] */ + { 29, 0x9E3779B185EBCA8DULL, 0x34C2EE35CF8F6CE1ULL }, /* XSUM_XXH3_testdata[59] */ + { 30, 0x0000000000000000ULL, 0xDA4953A393E8B1F3ULL }, /* XSUM_XXH3_testdata[60] */ + { 30, 0x9E3779B185EBCA8DULL, 0xA6AC4B422338BDD8ULL }, /* XSUM_XXH3_testdata[61] */ + { 31, 0x0000000000000000ULL, 0x5D516692CA764C50ULL }, /* XSUM_XXH3_testdata[62] */ + { 31, 0x9E3779B185EBCA8DULL, 0x9B37274259C549C6ULL }, /* XSUM_XXH3_testdata[63] */ + { 32, 0x0000000000000000ULL, 0x9FEADDBDBF57EED3ULL }, /* XSUM_XXH3_testdata[64] */ + { 32, 0x9E3779B185EBCA8DULL, 0x2199FAB1534893D9ULL }, /* XSUM_XXH3_testdata[65] */ + { 33, 0x0000000000000000ULL, 0xABFB2D081B400A10ULL }, /* XSUM_XXH3_testdata[66] */ + { 33, 0x9E3779B185EBCA8DULL, 0xAD56348DA574BB6DULL }, /* XSUM_XXH3_testdata[67] */ + { 34, 0x0000000000000000ULL, 0xBAA04607C7A24977ULL }, /* XSUM_XXH3_testdata[68] */ + { 34, 0x9E3779B185EBCA8DULL, 0xFE0B68C2455484B3ULL }, /* XSUM_XXH3_testdata[69] */ + { 35, 0x0000000000000000ULL, 0xD1A58161FDB7B1A6ULL }, /* XSUM_XXH3_testdata[70] */ + { 35, 0x9E3779B185EBCA8DULL, 0x517E90702EDAB0F6ULL }, /* XSUM_XXH3_testdata[71] */ + { 36, 0x0000000000000000ULL, 0xEF099B53BC7530C0ULL }, /* XSUM_XXH3_testdata[72] */ + { 36, 0x9E3779B185EBCA8DULL, 0xA8C3D8C22D432D05ULL }, /* XSUM_XXH3_testdata[73] */ + { 37, 0x0000000000000000ULL, 0xDC785F67BBA35B29ULL }, /* XSUM_XXH3_testdata[74] */ + { 37, 0x9E3779B185EBCA8DULL, 0x912BF90ACD949A01ULL }, /* XSUM_XXH3_testdata[75] */ + { 38, 0x0000000000000000ULL, 0x635F55CF00144E48ULL }, /* XSUM_XXH3_testdata[76] */ + { 38, 0x9E3779B185EBCA8DULL, 0xED870798D287DA66ULL }, /* XSUM_XXH3_testdata[77] */ + { 39, 0x0000000000000000ULL, 0x297B5E4CD9E19E20ULL }, /* XSUM_XXH3_testdata[78] */ + { 39, 0x9E3779B185EBCA8DULL, 0x0ECA3FA2F5336A09ULL }, /* XSUM_XXH3_testdata[79] */ + { 40, 0x0000000000000000ULL, 0x70FB5C84CB108B82ULL }, /* XSUM_XXH3_testdata[80] */ + { 40, 0x9E3779B185EBCA8DULL, 0xD95E230876A77847ULL }, /* XSUM_XXH3_testdata[81] */ + { 41, 0x0000000000000000ULL, 0xD2BF629FB3E8D2E2ULL }, /* XSUM_XXH3_testdata[82] */ + { 41, 0x9E3779B185EBCA8DULL, 0xBC1FB433171D42E5ULL }, /* XSUM_XXH3_testdata[83] */ + { 42, 0x0000000000000000ULL, 0x776094ACB05E4DB5ULL }, /* XSUM_XXH3_testdata[84] */ + { 42, 0x9E3779B185EBCA8DULL, 0x282C3046789F9748ULL }, /* XSUM_XXH3_testdata[85] */ + { 43, 0x0000000000000000ULL, 0xAFC6E07DC196E76BULL }, /* XSUM_XXH3_testdata[86] */ + { 43, 0x9E3779B185EBCA8DULL, 0x1709B03E1CCAE947ULL }, /* XSUM_XXH3_testdata[87] */ + { 44, 0x0000000000000000ULL, 0x439A593B7CC881BAULL }, /* XSUM_XXH3_testdata[88] */ + { 44, 0x9E3779B185EBCA8DULL, 0x47F3CC44D8B36C42ULL }, /* XSUM_XXH3_testdata[89] */ + { 45, 0x0000000000000000ULL, 0x234D270351B2D8F4ULL }, /* XSUM_XXH3_testdata[90] */ + { 45, 0x9E3779B185EBCA8DULL, 0x79E2692F8B5E81C9ULL }, /* XSUM_XXH3_testdata[91] */ + { 46, 0x0000000000000000ULL, 0x84BC1ACAE3D8054AULL }, /* XSUM_XXH3_testdata[92] */ + { 46, 0x9E3779B185EBCA8DULL, 0xE5B2F0CD84F11F3FULL }, /* XSUM_XXH3_testdata[93] */ + { 47, 0x0000000000000000ULL, 0x050B544C7C6147BDULL }, /* XSUM_XXH3_testdata[94] */ + { 47, 0x9E3779B185EBCA8DULL, 0xCC386369175F3F22ULL }, /* XSUM_XXH3_testdata[95] */ + { 48, 0x0000000000000000ULL, 0x397DA259ECBA1F11ULL }, /* XSUM_XXH3_testdata[96] */ + { 48, 0x9E3779B185EBCA8DULL, 0xADC2CBAA44ACC616ULL }, /* XSUM_XXH3_testdata[97] */ + { 49, 0x0000000000000000ULL, 0x982095B2470B49A1ULL }, /* XSUM_XXH3_testdata[98] */ + { 49, 0x9E3779B185EBCA8DULL, 0x19FF5DC215265958ULL }, /* XSUM_XXH3_testdata[99] */ + { 50, 0x0000000000000000ULL, 0xBA1BF720F0154AFAULL }, /* XSUM_XXH3_testdata[100] */ + { 50, 0x9E3779B185EBCA8DULL, 0x8C28C07C18CC59EBULL }, /* XSUM_XXH3_testdata[101] */ + { 51, 0x0000000000000000ULL, 0x9A3D051F2B259E4DULL }, /* XSUM_XXH3_testdata[102] */ + { 51, 0x9E3779B185EBCA8DULL, 0xC4C7EE7D764BDDF1ULL }, /* XSUM_XXH3_testdata[103] */ + { 52, 0x0000000000000000ULL, 0x161957B35E29FA55ULL }, /* XSUM_XXH3_testdata[104] */ + { 52, 0x9E3779B185EBCA8DULL, 0xA4338D0DDB1F46F4ULL }, /* XSUM_XXH3_testdata[105] */ + { 53, 0x0000000000000000ULL, 0x7A45D6260BA428CDULL }, /* XSUM_XXH3_testdata[106] */ + { 53, 0x9E3779B185EBCA8DULL, 0xA7EA211DD3B5D41DULL }, /* XSUM_XXH3_testdata[107] */ + { 54, 0x0000000000000000ULL, 0x3262E22B4806E20CULL }, /* XSUM_XXH3_testdata[108] */ + { 54, 0x9E3779B185EBCA8DULL, 0xE49C331013B550F2ULL }, /* XSUM_XXH3_testdata[109] */ + { 55, 0x0000000000000000ULL, 0x999D4AB41E43CB33ULL }, /* XSUM_XXH3_testdata[110] */ + { 55, 0x9E3779B185EBCA8DULL, 0xAE4D1D25308F2E4DULL }, /* XSUM_XXH3_testdata[111] */ + { 56, 0x0000000000000000ULL, 0xF3F207A03F7545A9ULL }, /* XSUM_XXH3_testdata[112] */ + { 56, 0x9E3779B185EBCA8DULL, 0x58E196E68FC3D5D0ULL }, /* XSUM_XXH3_testdata[113] */ + { 57, 0x0000000000000000ULL, 0x75960B83FA69BEE3ULL }, /* XSUM_XXH3_testdata[114] */ + { 57, 0x9E3779B185EBCA8DULL, 0x1BF31EA0E4F6C3C9ULL }, /* XSUM_XXH3_testdata[115] */ + { 58, 0x0000000000000000ULL, 0xC710DC393A81EA6BULL }, /* XSUM_XXH3_testdata[116] */ + { 58, 0x9E3779B185EBCA8DULL, 0x7B11229CCDE3DF4BULL }, /* XSUM_XXH3_testdata[117] */ + { 59, 0x0000000000000000ULL, 0x9C24C0A40C315772ULL }, /* XSUM_XXH3_testdata[118] */ + { 59, 0x9E3779B185EBCA8DULL, 0xB33C636F42BA05C2ULL }, /* XSUM_XXH3_testdata[119] */ + { 60, 0x0000000000000000ULL, 0x5082D84DA251D03DULL }, /* XSUM_XXH3_testdata[120] */ + { 60, 0x9E3779B185EBCA8DULL, 0x420695DA3D00159EULL }, /* XSUM_XXH3_testdata[121] */ + { 61, 0x0000000000000000ULL, 0xAED61F74CFAA2B50ULL }, /* XSUM_XXH3_testdata[122] */ + { 61, 0x9E3779B185EBCA8DULL, 0xBEC01CF3CAFF10FEULL }, /* XSUM_XXH3_testdata[123] */ + { 62, 0x0000000000000000ULL, 0x3D938554571B8602ULL }, /* XSUM_XXH3_testdata[124] */ + { 62, 0x9E3779B185EBCA8DULL, 0xAFB89B723B8B9468ULL }, /* XSUM_XXH3_testdata[125] */ + { 63, 0x0000000000000000ULL, 0x83D74A75F2C2577AULL }, /* XSUM_XXH3_testdata[126] */ + { 63, 0x9E3779B185EBCA8DULL, 0xC3AB9C8B53960DC7ULL }, /* XSUM_XXH3_testdata[127] */ + { 64, 0x0000000000000000ULL, 0x9CB48487720EC49DULL }, /* XSUM_XXH3_testdata[128] */ + { 64, 0x9E3779B185EBCA8DULL, 0x4FE8895DB9B8C077ULL }, /* XSUM_XXH3_testdata[129] */ + { 65, 0x0000000000000000ULL, 0xFD81AAC4BEBC3883ULL }, /* XSUM_XXH3_testdata[130] */ + { 65, 0x9E3779B185EBCA8DULL, 0xAD80AEEC1FC9E0A7ULL }, /* XSUM_XXH3_testdata[131] */ + { 66, 0x0000000000000000ULL, 0x7F26BCF1F992AF71ULL }, /* XSUM_XXH3_testdata[132] */ + { 66, 0x9E3779B185EBCA8DULL, 0x319C8AD503670CE4ULL }, /* XSUM_XXH3_testdata[133] */ + { 67, 0x0000000000000000ULL, 0x4B78ED7047BD2B73ULL }, /* XSUM_XXH3_testdata[134] */ + { 67, 0x9E3779B185EBCA8DULL, 0xBE2B751302505496ULL }, /* XSUM_XXH3_testdata[135] */ + { 68, 0x0000000000000000ULL, 0x21730DB71A517AA6ULL }, /* XSUM_XXH3_testdata[136] */ + { 68, 0x9E3779B185EBCA8DULL, 0x4FAD7FFBD7619E3BULL }, /* XSUM_XXH3_testdata[137] */ + { 69, 0x0000000000000000ULL, 0x63C9771501E038ABULL }, /* XSUM_XXH3_testdata[138] */ + { 69, 0x9E3779B185EBCA8DULL, 0x3E23DA8823E3D7A7ULL }, /* XSUM_XXH3_testdata[139] */ + { 70, 0x0000000000000000ULL, 0x1A51A6A46D536407ULL }, /* XSUM_XXH3_testdata[140] */ + { 70, 0x9E3779B185EBCA8DULL, 0x94F5A110B077F6AEULL }, /* XSUM_XXH3_testdata[141] */ + { 71, 0x0000000000000000ULL, 0xD7221C2C7C1F6BB1ULL }, /* XSUM_XXH3_testdata[142] */ + { 71, 0x9E3779B185EBCA8DULL, 0xC91A3D11B94F821CULL }, /* XSUM_XXH3_testdata[143] */ + { 72, 0x0000000000000000ULL, 0x6D1BEBA7F3BCC617ULL }, /* XSUM_XXH3_testdata[144] */ + { 72, 0x9E3779B185EBCA8DULL, 0xC08A43C4EA15A51EULL }, /* XSUM_XXH3_testdata[145] */ + { 73, 0x0000000000000000ULL, 0x1302AD1F7C0DB9EDULL }, /* XSUM_XXH3_testdata[146] */ + { 73, 0x9E3779B185EBCA8DULL, 0x5DFEEAAD123CEB0EULL }, /* XSUM_XXH3_testdata[147] */ + { 74, 0x0000000000000000ULL, 0x116FFD2730EA3701ULL }, /* XSUM_XXH3_testdata[148] */ + { 74, 0x9E3779B185EBCA8DULL, 0xAE0190B4F68D05B4ULL }, /* XSUM_XXH3_testdata[149] */ + { 75, 0x0000000000000000ULL, 0xD92B5E921EB81C14ULL }, /* XSUM_XXH3_testdata[150] */ + { 75, 0x9E3779B185EBCA8DULL, 0x4BA1970BE430F397ULL }, /* XSUM_XXH3_testdata[151] */ + { 76, 0x0000000000000000ULL, 0x029A8F4B7F2D3B7FULL }, /* XSUM_XXH3_testdata[152] */ + { 76, 0x9E3779B185EBCA8DULL, 0xD7AAA2EED9730C25ULL }, /* XSUM_XXH3_testdata[153] */ + { 77, 0x0000000000000000ULL, 0x1CF862AAA02C9D06ULL }, /* XSUM_XXH3_testdata[154] */ + { 77, 0x9E3779B185EBCA8DULL, 0x5A72D9B1AA6E9B0CULL }, /* XSUM_XXH3_testdata[155] */ + { 78, 0x0000000000000000ULL, 0xB972D2CD416B0BF9ULL }, /* XSUM_XXH3_testdata[156] */ + { 78, 0x9E3779B185EBCA8DULL, 0xF66F6ED777572FC7ULL }, /* XSUM_XXH3_testdata[157] */ + { 79, 0x0000000000000000ULL, 0x2326B51BBAA6405CULL }, /* XSUM_XXH3_testdata[158] */ + { 79, 0x9E3779B185EBCA8DULL, 0x58A75AA25D8C7BB2ULL }, /* XSUM_XXH3_testdata[159] */ + { 80, 0x0000000000000000ULL, 0xBCDEFBBB2C47C90AULL }, /* XSUM_XXH3_testdata[160] */ + { 80, 0x9E3779B185EBCA8DULL, 0xC6DD0CB699532E73ULL }, /* XSUM_XXH3_testdata[161] */ + { 81, 0x0000000000000000ULL, 0x7BC96F2EE88DF87DULL }, /* XSUM_XXH3_testdata[162] */ + { 81, 0x9E3779B185EBCA8DULL, 0xBDC37ED9F6EF4B8EULL }, /* XSUM_XXH3_testdata[163] */ + { 82, 0x0000000000000000ULL, 0x452E73C5EA08CB8EULL }, /* XSUM_XXH3_testdata[164] */ + { 82, 0x9E3779B185EBCA8DULL, 0x062B9E052A91F0A7ULL }, /* XSUM_XXH3_testdata[165] */ + { 83, 0x0000000000000000ULL, 0x1B605ED2F4FEB570ULL }, /* XSUM_XXH3_testdata[166] */ + { 83, 0x9E3779B185EBCA8DULL, 0xADAB976FC9FAA59CULL }, /* XSUM_XXH3_testdata[167] */ + { 84, 0x0000000000000000ULL, 0xF85FEE70BA146DC5ULL }, /* XSUM_XXH3_testdata[168] */ + { 84, 0x9E3779B185EBCA8DULL, 0x5D9649713E127367ULL }, /* XSUM_XXH3_testdata[169] */ + { 85, 0x0000000000000000ULL, 0x2E2C323A4B6C083BULL }, /* XSUM_XXH3_testdata[170] */ + { 85, 0x9E3779B185EBCA8DULL, 0xCFE94FDD7B441829ULL }, /* XSUM_XXH3_testdata[171] */ + { 86, 0x0000000000000000ULL, 0xDF34623ECC4AEA67ULL }, /* XSUM_XXH3_testdata[172] */ + { 86, 0x9E3779B185EBCA8DULL, 0x489D38096352FC59ULL }, /* XSUM_XXH3_testdata[173] */ + { 87, 0x0000000000000000ULL, 0xD29A38D29593F21DULL }, /* XSUM_XXH3_testdata[174] */ + { 87, 0x9E3779B185EBCA8DULL, 0x910059E884F20BA1ULL }, /* XSUM_XXH3_testdata[175] */ + { 88, 0x0000000000000000ULL, 0x36D476C3DA1CEC52ULL }, /* XSUM_XXH3_testdata[176] */ + { 88, 0x9E3779B185EBCA8DULL, 0x9E24F0F8A25624ADULL }, /* XSUM_XXH3_testdata[177] */ + { 89, 0x0000000000000000ULL, 0x9DBDF18FBD92E53CULL }, /* XSUM_XXH3_testdata[178] */ + { 89, 0x9E3779B185EBCA8DULL, 0x179D449BBFC7FEC9ULL }, /* XSUM_XXH3_testdata[179] */ + { 90, 0x0000000000000000ULL, 0xD3B8BA0002A9FC1EULL }, /* XSUM_XXH3_testdata[180] */ + { 90, 0x9E3779B185EBCA8DULL, 0x0233FAC1497A5229ULL }, /* XSUM_XXH3_testdata[181] */ + { 91, 0x0000000000000000ULL, 0xD0C75607A91B59F0ULL }, /* XSUM_XXH3_testdata[182] */ + { 91, 0x9E3779B185EBCA8DULL, 0xBC1C911BA85B99A6ULL }, /* XSUM_XXH3_testdata[183] */ + { 92, 0x0000000000000000ULL, 0x8890CAAC1DD48270ULL }, /* XSUM_XXH3_testdata[184] */ + { 92, 0x9E3779B185EBCA8DULL, 0x562BDD5D77EC915CULL }, /* XSUM_XXH3_testdata[185] */ + { 93, 0x0000000000000000ULL, 0x8F1EC4DC439BCA2FULL }, /* XSUM_XXH3_testdata[186] */ + { 93, 0x9E3779B185EBCA8DULL, 0x2B3927A06A1B2E51ULL }, /* XSUM_XXH3_testdata[187] */ + { 94, 0x0000000000000000ULL, 0xD555AF8B0640752BULL }, /* XSUM_XXH3_testdata[188] */ + { 94, 0x9E3779B185EBCA8DULL, 0x74C34D6C7E05760FULL }, /* XSUM_XXH3_testdata[189] */ + { 95, 0x0000000000000000ULL, 0xC0DD460B48116CDAULL }, /* XSUM_XXH3_testdata[190] */ + { 95, 0x9E3779B185EBCA8DULL, 0xC81D7C3A751D3B94ULL }, /* XSUM_XXH3_testdata[191] */ + { 96, 0x0000000000000000ULL, 0x935A769A7F94776FULL }, /* XSUM_XXH3_testdata[192] */ + { 96, 0x9E3779B185EBCA8DULL, 0x70CF51937E500540ULL }, /* XSUM_XXH3_testdata[193] */ + { 97, 0x0000000000000000ULL, 0xCA4CA268FD3C3A6CULL }, /* XSUM_XXH3_testdata[194] */ + { 97, 0x9E3779B185EBCA8DULL, 0xEE461D3ADD7EE6C9ULL }, /* XSUM_XXH3_testdata[195] */ + { 98, 0x0000000000000000ULL, 0x46C01A26445FC381ULL }, /* XSUM_XXH3_testdata[196] */ + { 98, 0x9E3779B185EBCA8DULL, 0x60EB95BD03C256D6ULL }, /* XSUM_XXH3_testdata[197] */ + { 99, 0x0000000000000000ULL, 0xAB93C68C0F63D288ULL }, /* XSUM_XXH3_testdata[198] */ + { 99, 0x9E3779B185EBCA8DULL, 0x859966E3C0E9AACAULL }, /* XSUM_XXH3_testdata[199] */ + { 100, 0x0000000000000000ULL, 0x93CD95432B7D483FULL }, /* XSUM_XXH3_testdata[200] */ + { 100, 0x9E3779B185EBCA8DULL, 0xEA932549A3D7FB01ULL }, /* XSUM_XXH3_testdata[201] */ + { 101, 0x0000000000000000ULL, 0xB7F2A5219A6ADCD6ULL }, /* XSUM_XXH3_testdata[202] */ + { 101, 0x9E3779B185EBCA8DULL, 0x3F0B78B11279E491ULL }, /* XSUM_XXH3_testdata[203] */ + { 102, 0x0000000000000000ULL, 0x5C1130E14B3EE1E0ULL }, /* XSUM_XXH3_testdata[204] */ + { 102, 0x9E3779B185EBCA8DULL, 0x290D3E69F4A52B57ULL }, /* XSUM_XXH3_testdata[205] */ + { 103, 0x0000000000000000ULL, 0x680C75DB844A28EEULL }, /* XSUM_XXH3_testdata[206] */ + { 103, 0x9E3779B185EBCA8DULL, 0x6DBFF09BB20972E8ULL }, /* XSUM_XXH3_testdata[207] */ + { 104, 0x0000000000000000ULL, 0x3DB12308BC1358D7ULL }, /* XSUM_XXH3_testdata[208] */ + { 104, 0x9E3779B185EBCA8DULL, 0x0791A52650A5EEB9ULL }, /* XSUM_XXH3_testdata[209] */ + { 105, 0x0000000000000000ULL, 0x3233C69A02F1F0B4ULL }, /* XSUM_XXH3_testdata[210] */ + { 105, 0x9E3779B185EBCA8DULL, 0x4914AEAA4F1144C2ULL }, /* XSUM_XXH3_testdata[211] */ + { 106, 0x0000000000000000ULL, 0x37E5D95ABD87CED2ULL }, /* XSUM_XXH3_testdata[212] */ + { 106, 0x9E3779B185EBCA8DULL, 0x402975D930B3C585ULL }, /* XSUM_XXH3_testdata[213] */ + { 107, 0x0000000000000000ULL, 0x9ED226EEDB40C181ULL }, /* XSUM_XXH3_testdata[214] */ + { 107, 0x9E3779B185EBCA8DULL, 0x37D6489BE3EBD4EBULL }, /* XSUM_XXH3_testdata[215] */ + { 108, 0x0000000000000000ULL, 0x9BD9D7F308AC8B25ULL }, /* XSUM_XXH3_testdata[216] */ + { 108, 0x9E3779B185EBCA8DULL, 0xA3B5A552EFDD7CCBULL }, /* XSUM_XXH3_testdata[217] */ + { 109, 0x0000000000000000ULL, 0x55BBF3F9DA5BABD4ULL }, /* XSUM_XXH3_testdata[218] */ + { 109, 0x9E3779B185EBCA8DULL, 0xCF413FC785E35330ULL }, /* XSUM_XXH3_testdata[219] */ + { 110, 0x0000000000000000ULL, 0x762CCA332C33532BULL }, /* XSUM_XXH3_testdata[220] */ + { 110, 0x9E3779B185EBCA8DULL, 0x56314A5E52DA5B47ULL }, /* XSUM_XXH3_testdata[221] */ + { 111, 0x0000000000000000ULL, 0x678DBD7CD8EF8F5CULL }, /* XSUM_XXH3_testdata[222] */ + { 111, 0x9E3779B185EBCA8DULL, 0x04529DFAD46B27BFULL }, /* XSUM_XXH3_testdata[223] */ + { 112, 0x0000000000000000ULL, 0xD13D8F57931EEF19ULL }, /* XSUM_XXH3_testdata[224] */ + { 112, 0x9E3779B185EBCA8DULL, 0xA276B2E306E77FE5ULL }, /* XSUM_XXH3_testdata[225] */ + { 113, 0x0000000000000000ULL, 0xBE550B209B8053F4ULL }, /* XSUM_XXH3_testdata[226] */ + { 113, 0x9E3779B185EBCA8DULL, 0xF5F9BD8CF6B81D20ULL }, /* XSUM_XXH3_testdata[227] */ + { 114, 0x0000000000000000ULL, 0x4DA974ECA68B8FFCULL }, /* XSUM_XXH3_testdata[228] */ + { 114, 0x9E3779B185EBCA8DULL, 0x20286B3C34CB0BDDULL }, /* XSUM_XXH3_testdata[229] */ + { 115, 0x0000000000000000ULL, 0xA0B797A411F7B6CBULL }, /* XSUM_XXH3_testdata[230] */ + { 115, 0x9E3779B185EBCA8DULL, 0x52D1245D3849841AULL }, /* XSUM_XXH3_testdata[231] */ + { 116, 0x0000000000000000ULL, 0x7A8FC0C2AAF79688ULL }, /* XSUM_XXH3_testdata[232] */ + { 116, 0x9E3779B185EBCA8DULL, 0x6D9B1B844D62AC31ULL }, /* XSUM_XXH3_testdata[233] */ + { 117, 0x0000000000000000ULL, 0xA1D5ADD8960E60D2ULL }, /* XSUM_XXH3_testdata[234] */ + { 117, 0x9E3779B185EBCA8DULL, 0x0FA7782A243E7C15ULL }, /* XSUM_XXH3_testdata[235] */ + { 118, 0x0000000000000000ULL, 0x6F36F196DEC9B226ULL }, /* XSUM_XXH3_testdata[236] */ + { 118, 0x9E3779B185EBCA8DULL, 0x35D6EB2523BE860FULL }, /* XSUM_XXH3_testdata[237] */ + { 119, 0x0000000000000000ULL, 0x744F5B932E23C7EFULL }, /* XSUM_XXH3_testdata[238] */ + { 119, 0x9E3779B185EBCA8DULL, 0xA95D631EC75E5F6EULL }, /* XSUM_XXH3_testdata[239] */ + { 120, 0x0000000000000000ULL, 0x540FB66724A6AE19ULL }, /* XSUM_XXH3_testdata[240] */ + { 120, 0x9E3779B185EBCA8DULL, 0xFEC11DAB8EE17453ULL }, /* XSUM_XXH3_testdata[241] */ + { 121, 0x0000000000000000ULL, 0x50BB29C6C0549FC0ULL }, /* XSUM_XXH3_testdata[242] */ + { 121, 0x9E3779B185EBCA8DULL, 0x65AEAEF9E9931BA2ULL }, /* XSUM_XXH3_testdata[243] */ + { 122, 0x0000000000000000ULL, 0xBE347793D1995DEFULL }, /* XSUM_XXH3_testdata[244] */ + { 122, 0x9E3779B185EBCA8DULL, 0xC888B2E141FDA6A7ULL }, /* XSUM_XXH3_testdata[245] */ + { 123, 0x0000000000000000ULL, 0x4172D20074B58F83ULL }, /* XSUM_XXH3_testdata[246] */ + { 123, 0x9E3779B185EBCA8DULL, 0x82ED5A5EA70AB807ULL }, /* XSUM_XXH3_testdata[247] */ + { 124, 0x0000000000000000ULL, 0x6E64960D24933378ULL }, /* XSUM_XXH3_testdata[248] */ + { 124, 0x9E3779B185EBCA8DULL, 0x86974F4DDDAD4A3DULL }, /* XSUM_XXH3_testdata[249] */ + { 125, 0x0000000000000000ULL, 0xA44FC0AC7F57FEDBULL }, /* XSUM_XXH3_testdata[250] */ + { 125, 0x9E3779B185EBCA8DULL, 0xDF7CE17073BFA339ULL }, /* XSUM_XXH3_testdata[251] */ + { 126, 0x0000000000000000ULL, 0xA1F71F67AE173EB7ULL }, /* XSUM_XXH3_testdata[252] */ + { 126, 0x9E3779B185EBCA8DULL, 0x0222D32F731BA7FBULL }, /* XSUM_XXH3_testdata[253] */ + { 127, 0x0000000000000000ULL, 0x2408ED71323D6096ULL }, /* XSUM_XXH3_testdata[254] */ + { 127, 0x9E3779B185EBCA8DULL, 0x41D2F0C3F483208FULL }, /* XSUM_XXH3_testdata[255] */ + { 128, 0x0000000000000000ULL, 0xFCFF24126754D861ULL }, /* XSUM_XXH3_testdata[256] */ + { 128, 0x9E3779B185EBCA8DULL, 0x73FDE75280646649ULL }, /* XSUM_XXH3_testdata[257] */ + { 129, 0x0000000000000000ULL, 0x98F1B0A679A2CA29ULL }, /* XSUM_XXH3_testdata[258] */ + { 129, 0x9E3779B185EBCA8DULL, 0x21FFFDBCA099C844ULL }, /* XSUM_XXH3_testdata[259] */ + { 130, 0x0000000000000000ULL, 0x7F6C531CF53EEB30ULL }, /* XSUM_XXH3_testdata[260] */ + { 130, 0x9E3779B185EBCA8DULL, 0xF1450CA53F2203E1ULL }, /* XSUM_XXH3_testdata[261] */ + { 131, 0x0000000000000000ULL, 0x9B4FA7D0B15E0A57ULL }, /* XSUM_XXH3_testdata[262] */ + { 131, 0x9E3779B185EBCA8DULL, 0x9F5752AC8EF77AACULL }, /* XSUM_XXH3_testdata[263] */ + { 132, 0x0000000000000000ULL, 0x3A38439A30B3C4CCULL }, /* XSUM_XXH3_testdata[264] */ + { 132, 0x9E3779B185EBCA8DULL, 0xB27D306C98996FE6ULL }, /* XSUM_XXH3_testdata[265] */ + { 133, 0x0000000000000000ULL, 0xA0699D046C5C5362ULL }, /* XSUM_XXH3_testdata[266] */ + { 133, 0x9E3779B185EBCA8DULL, 0x763DD6652B6C34EDULL }, /* XSUM_XXH3_testdata[267] */ + { 134, 0x0000000000000000ULL, 0x84A906EC5FA118A0ULL }, /* XSUM_XXH3_testdata[268] */ + { 134, 0x9E3779B185EBCA8DULL, 0x46FF4D8E7E37CA25ULL }, /* XSUM_XXH3_testdata[269] */ + { 135, 0x0000000000000000ULL, 0x6758FDC6D9906706ULL }, /* XSUM_XXH3_testdata[270] */ + { 135, 0x9E3779B185EBCA8DULL, 0x92FDFBDAC216EB79ULL }, /* XSUM_XXH3_testdata[271] */ + { 136, 0x0000000000000000ULL, 0x663DF5809A9645EEULL }, /* XSUM_XXH3_testdata[272] */ + { 136, 0x9E3779B185EBCA8DULL, 0xB8891527E8C1FBC2ULL }, /* XSUM_XXH3_testdata[273] */ + { 137, 0x0000000000000000ULL, 0x03E54245D16B0B4CULL }, /* XSUM_XXH3_testdata[274] */ + { 137, 0x9E3779B185EBCA8DULL, 0xD0E671A9F60ECBA7ULL }, /* XSUM_XXH3_testdata[275] */ + { 138, 0x0000000000000000ULL, 0xEA3FE83E2FF48610ULL }, /* XSUM_XXH3_testdata[276] */ + { 138, 0x9E3779B185EBCA8DULL, 0x939CD4FE1C054F3AULL }, /* XSUM_XXH3_testdata[277] */ + { 139, 0x0000000000000000ULL, 0x7D93965F3E0E3DFDULL }, /* XSUM_XXH3_testdata[278] */ + { 139, 0x9E3779B185EBCA8DULL, 0x8D78D1FD9D0A8EE3ULL }, /* XSUM_XXH3_testdata[279] */ + { 140, 0x0000000000000000ULL, 0xCA0D611F4C6D0492ULL }, /* XSUM_XXH3_testdata[280] */ + { 140, 0x9E3779B185EBCA8DULL, 0x0EE6E507ED38899CULL }, /* XSUM_XXH3_testdata[281] */ + { 141, 0x0000000000000000ULL, 0xFCFC9295B140E881ULL }, /* XSUM_XXH3_testdata[282] */ + { 141, 0x9E3779B185EBCA8DULL, 0xD8A88F327D66CC9BULL }, /* XSUM_XXH3_testdata[283] */ + { 142, 0x0000000000000000ULL, 0x7564A4E9782E2B1AULL }, /* XSUM_XXH3_testdata[284] */ + { 142, 0x9E3779B185EBCA8DULL, 0x0BF86CA5CB4A3000ULL }, /* XSUM_XXH3_testdata[285] */ + { 143, 0x0000000000000000ULL, 0x7A7813693F1F4EDBULL }, /* XSUM_XXH3_testdata[286] */ + { 143, 0x9E3779B185EBCA8DULL, 0x43B3274AE68D5742ULL }, /* XSUM_XXH3_testdata[287] */ + { 144, 0x0000000000000000ULL, 0xC440D47E5F03FE58ULL }, /* XSUM_XXH3_testdata[288] */ + { 144, 0x9E3779B185EBCA8DULL, 0x858D16B71F4DD859ULL }, /* XSUM_XXH3_testdata[289] */ + { 145, 0x0000000000000000ULL, 0x6B0A35A6CB2DA39DULL }, /* XSUM_XXH3_testdata[290] */ + { 145, 0x9E3779B185EBCA8DULL, 0x82AA49A77E3DC26FULL }, /* XSUM_XXH3_testdata[291] */ + { 146, 0x0000000000000000ULL, 0xCD519D5D390192F2ULL }, /* XSUM_XXH3_testdata[292] */ + { 146, 0x9E3779B185EBCA8DULL, 0x42E2E13AB27DB0A0ULL }, /* XSUM_XXH3_testdata[293] */ + { 147, 0x0000000000000000ULL, 0xF3B25AC47BD6E81EULL }, /* XSUM_XXH3_testdata[294] */ + { 147, 0x9E3779B185EBCA8DULL, 0x0FC6AAC279201900ULL }, /* XSUM_XXH3_testdata[295] */ + { 148, 0x0000000000000000ULL, 0xA57C549BCA723453ULL }, /* XSUM_XXH3_testdata[296] */ + { 148, 0x9E3779B185EBCA8DULL, 0x68161B922ED9A946ULL }, /* XSUM_XXH3_testdata[297] */ + { 149, 0x0000000000000000ULL, 0x466973FFC71B4B5DULL }, /* XSUM_XXH3_testdata[298] */ + { 149, 0x9E3779B185EBCA8DULL, 0x4C3A019E1CFB23AAULL }, /* XSUM_XXH3_testdata[299] */ + { 150, 0x0000000000000000ULL, 0xF37B3081C8DF11F6ULL }, /* XSUM_XXH3_testdata[300] */ + { 150, 0x9E3779B185EBCA8DULL, 0x608B69EF63F8C716ULL }, /* XSUM_XXH3_testdata[301] */ + { 151, 0x0000000000000000ULL, 0x909835AEA62BD752ULL }, /* XSUM_XXH3_testdata[302] */ + { 151, 0x9E3779B185EBCA8DULL, 0x7735A32D2EF001DCULL }, /* XSUM_XXH3_testdata[303] */ + { 152, 0x0000000000000000ULL, 0xE11B4A1098AD4B8BULL }, /* XSUM_XXH3_testdata[304] */ + { 152, 0x9E3779B185EBCA8DULL, 0x6291A0D978D5C565ULL }, /* XSUM_XXH3_testdata[305] */ + { 153, 0x0000000000000000ULL, 0x98BF35A509DBAEABULL }, /* XSUM_XXH3_testdata[306] */ + { 153, 0x9E3779B185EBCA8DULL, 0x1804F3B0AEB1F981ULL }, /* XSUM_XXH3_testdata[307] */ + { 154, 0x0000000000000000ULL, 0x70BBF262D1B53F51ULL }, /* XSUM_XXH3_testdata[308] */ + { 154, 0x9E3779B185EBCA8DULL, 0xFCEA63D51474CDF0ULL }, /* XSUM_XXH3_testdata[309] */ + { 155, 0x0000000000000000ULL, 0xB6D7C54AFFF3684BULL }, /* XSUM_XXH3_testdata[310] */ + { 155, 0x9E3779B185EBCA8DULL, 0x6783D00565D9D687ULL }, /* XSUM_XXH3_testdata[311] */ + { 156, 0x0000000000000000ULL, 0x9DCFF5B3B7447702ULL }, /* XSUM_XXH3_testdata[312] */ + { 156, 0x9E3779B185EBCA8DULL, 0xED931D3F44416CCDULL }, /* XSUM_XXH3_testdata[313] */ + { 157, 0x0000000000000000ULL, 0x2A959079A3F984B7ULL }, /* XSUM_XXH3_testdata[314] */ + { 157, 0x9E3779B185EBCA8DULL, 0x6272761ED82135DEULL }, /* XSUM_XXH3_testdata[315] */ + { 158, 0x0000000000000000ULL, 0x9F93B18D6C70E091ULL }, /* XSUM_XXH3_testdata[316] */ + { 158, 0x9E3779B185EBCA8DULL, 0x67532B69EEA9F165ULL }, /* XSUM_XXH3_testdata[317] */ + { 159, 0x0000000000000000ULL, 0x7CB32A6ECDEBAF1CULL }, /* XSUM_XXH3_testdata[318] */ + { 159, 0x9E3779B185EBCA8DULL, 0xACFF1F7B6CC1FDC9ULL }, /* XSUM_XXH3_testdata[319] */ + { 160, 0x0000000000000000ULL, 0x9D03A319ED4CBD2BULL }, /* XSUM_XXH3_testdata[320] */ + { 160, 0x9E3779B185EBCA8DULL, 0x3825C75FFE70FDE0ULL }, /* XSUM_XXH3_testdata[321] */ + { 161, 0x0000000000000000ULL, 0x7F8A89C6BE63F006ULL }, /* XSUM_XXH3_testdata[322] */ + { 161, 0x9E3779B185EBCA8DULL, 0xEE122D625550ADB5ULL }, /* XSUM_XXH3_testdata[323] */ + { 162, 0x0000000000000000ULL, 0x2474A16D1E7EB282ULL }, /* XSUM_XXH3_testdata[324] */ + { 162, 0x9E3779B185EBCA8DULL, 0x9BB5F1FDF209F6E6ULL }, /* XSUM_XXH3_testdata[325] */ + { 163, 0x0000000000000000ULL, 0x8DB1E66EC827C3D9ULL }, /* XSUM_XXH3_testdata[326] */ + { 163, 0x9E3779B185EBCA8DULL, 0x39151D86B74D6357ULL }, /* XSUM_XXH3_testdata[327] */ + { 164, 0x0000000000000000ULL, 0x32DCB8A53DC0C161ULL }, /* XSUM_XXH3_testdata[328] */ + { 164, 0x9E3779B185EBCA8DULL, 0x699179710733B633ULL }, /* XSUM_XXH3_testdata[329] */ + { 165, 0x0000000000000000ULL, 0x3EC4094D7BB7628DULL }, /* XSUM_XXH3_testdata[330] */ + { 165, 0x9E3779B185EBCA8DULL, 0xFB33609F8B3BE2C2ULL }, /* XSUM_XXH3_testdata[331] */ + { 166, 0x0000000000000000ULL, 0xB6A472574D1F8503ULL }, /* XSUM_XXH3_testdata[332] */ + { 166, 0x9E3779B185EBCA8DULL, 0x77B4550D54BD15B4ULL }, /* XSUM_XXH3_testdata[333] */ + { 167, 0x0000000000000000ULL, 0xA56A74F7014B726AULL }, /* XSUM_XXH3_testdata[334] */ + { 167, 0x9E3779B185EBCA8DULL, 0x13FEF783CA42491BULL }, /* XSUM_XXH3_testdata[335] */ + { 168, 0x0000000000000000ULL, 0x49DA18CA1C8530B6ULL }, /* XSUM_XXH3_testdata[336] */ + { 168, 0x9E3779B185EBCA8DULL, 0x609F4FA16DBFF2F0ULL }, /* XSUM_XXH3_testdata[337] */ + { 169, 0x0000000000000000ULL, 0xBE73D1D17DBA9D7BULL }, /* XSUM_XXH3_testdata[338] */ + { 169, 0x9E3779B185EBCA8DULL, 0x984614799ADF185DULL }, /* XSUM_XXH3_testdata[339] */ + { 170, 0x0000000000000000ULL, 0x81D2F5665A40BE4CULL }, /* XSUM_XXH3_testdata[340] */ + { 170, 0x9E3779B185EBCA8DULL, 0xD673758E56F598E1ULL }, /* XSUM_XXH3_testdata[341] */ + { 171, 0x0000000000000000ULL, 0x3720366743BF39B1ULL }, /* XSUM_XXH3_testdata[342] */ + { 171, 0x9E3779B185EBCA8DULL, 0xC4AC6C4773E09C8BULL }, /* XSUM_XXH3_testdata[343] */ + { 172, 0x0000000000000000ULL, 0x59828CD9838E43E8ULL }, /* XSUM_XXH3_testdata[344] */ + { 172, 0x9E3779B185EBCA8DULL, 0xBCBAD7AA03D9CA97ULL }, /* XSUM_XXH3_testdata[345] */ + { 173, 0x0000000000000000ULL, 0x423FCB5A1FE143EDULL }, /* XSUM_XXH3_testdata[346] */ + { 173, 0x9E3779B185EBCA8DULL, 0x78D025F167A41D1BULL }, /* XSUM_XXH3_testdata[347] */ + { 174, 0x0000000000000000ULL, 0xD29DEB0ECD352D5CULL }, /* XSUM_XXH3_testdata[348] */ + { 174, 0x9E3779B185EBCA8DULL, 0x74EDE1BCDB8412DCULL }, /* XSUM_XXH3_testdata[349] */ + { 175, 0x0000000000000000ULL, 0xA414B77DF2FDABAEULL }, /* XSUM_XXH3_testdata[350] */ + { 175, 0x9E3779B185EBCA8DULL, 0x8F19B0614DB0B814ULL }, /* XSUM_XXH3_testdata[351] */ + { 176, 0x0000000000000000ULL, 0x6A79C99804538253ULL }, /* XSUM_XXH3_testdata[352] */ + { 176, 0x9E3779B185EBCA8DULL, 0x25B3750065BA47EFULL }, /* XSUM_XXH3_testdata[353] */ + { 177, 0x0000000000000000ULL, 0x6FC0E6E420B6629BULL }, /* XSUM_XXH3_testdata[354] */ + { 177, 0x9E3779B185EBCA8DULL, 0xB1D1D87EEE7672DFULL }, /* XSUM_XXH3_testdata[355] */ + { 178, 0x0000000000000000ULL, 0x46331B1DF91C423FULL }, /* XSUM_XXH3_testdata[356] */ + { 178, 0x9E3779B185EBCA8DULL, 0xD735A55A58764CA4ULL }, /* XSUM_XXH3_testdata[357] */ + { 179, 0x0000000000000000ULL, 0x2F07114318B350BCULL }, /* XSUM_XXH3_testdata[358] */ + { 179, 0x9E3779B185EBCA8DULL, 0x1D5BE67985C1A686ULL }, /* XSUM_XXH3_testdata[359] */ + { 180, 0x0000000000000000ULL, 0xC801EF90CE0E5482ULL }, /* XSUM_XXH3_testdata[360] */ + { 180, 0x9E3779B185EBCA8DULL, 0x46E2C5CDA8C31D49ULL }, /* XSUM_XXH3_testdata[361] */ + { 181, 0x0000000000000000ULL, 0x0FB3D9F3FB6159C2ULL }, /* XSUM_XXH3_testdata[362] */ + { 181, 0x9E3779B185EBCA8DULL, 0x653F3124125D03A8ULL }, /* XSUM_XXH3_testdata[363] */ + { 182, 0x0000000000000000ULL, 0xC4C2A22A0A17AE1DULL }, /* XSUM_XXH3_testdata[364] */ + { 182, 0x9E3779B185EBCA8DULL, 0xFF709C491D108570ULL }, /* XSUM_XXH3_testdata[365] */ + { 183, 0x0000000000000000ULL, 0xED4887E95B6DDEEAULL }, /* XSUM_XXH3_testdata[366] */ + { 183, 0x9E3779B185EBCA8DULL, 0x248ED7F1F3FD278BULL }, /* XSUM_XXH3_testdata[367] */ + { 184, 0x0000000000000000ULL, 0x26ACC2AABEBE7708ULL }, /* XSUM_XXH3_testdata[368] */ + { 184, 0x9E3779B185EBCA8DULL, 0xE6385CF95A3B2527ULL }, /* XSUM_XXH3_testdata[369] */ + { 185, 0x0000000000000000ULL, 0x04499AD14A01CDFAULL }, /* XSUM_XXH3_testdata[370] */ + { 185, 0x9E3779B185EBCA8DULL, 0x7C602A71149BCF8DULL }, /* XSUM_XXH3_testdata[371] */ + { 186, 0x0000000000000000ULL, 0x9C76CA622DFD0557ULL }, /* XSUM_XXH3_testdata[372] */ + { 186, 0x9E3779B185EBCA8DULL, 0x0F2444A4EADA96A4ULL }, /* XSUM_XXH3_testdata[373] */ + { 187, 0x0000000000000000ULL, 0x41A93EE0800CAAF9ULL }, /* XSUM_XXH3_testdata[374] */ + { 187, 0x9E3779B185EBCA8DULL, 0x90A15B89F499F00DULL }, /* XSUM_XXH3_testdata[375] */ + { 188, 0x0000000000000000ULL, 0x511144B10FEFDA3AULL }, /* XSUM_XXH3_testdata[376] */ + { 188, 0x9E3779B185EBCA8DULL, 0xDB7EA67AB226CD9AULL }, /* XSUM_XXH3_testdata[377] */ + { 189, 0x0000000000000000ULL, 0xEE03BB33DA3ED624ULL }, /* XSUM_XXH3_testdata[378] */ + { 189, 0x9E3779B185EBCA8DULL, 0xC6FC08280035A2C7ULL }, /* XSUM_XXH3_testdata[379] */ + { 190, 0x0000000000000000ULL, 0x24ED6F75412D1E43ULL }, /* XSUM_XXH3_testdata[380] */ + { 190, 0x9E3779B185EBCA8DULL, 0x47BEC6016CC3E54AULL }, /* XSUM_XXH3_testdata[381] */ + { 191, 0x0000000000000000ULL, 0x759FFC8FF8FB94BDULL }, /* XSUM_XXH3_testdata[382] */ + { 191, 0x9E3779B185EBCA8DULL, 0xABCD155AD6E9F3B6ULL }, /* XSUM_XXH3_testdata[383] */ + { 192, 0x0000000000000000ULL, 0xAF9F58E78B8D3587ULL }, /* XSUM_XXH3_testdata[384] */ + { 192, 0x9E3779B185EBCA8DULL, 0x69E006AA2156C999ULL }, /* XSUM_XXH3_testdata[385] */ + { 193, 0x0000000000000000ULL, 0x32FAB2ADCAE0D00DULL }, /* XSUM_XXH3_testdata[386] */ + { 193, 0x9E3779B185EBCA8DULL, 0x52D31C60ADC3D7B3ULL }, /* XSUM_XXH3_testdata[387] */ + { 194, 0x0000000000000000ULL, 0x49EB64C2E5D65FA7ULL }, /* XSUM_XXH3_testdata[388] */ + { 194, 0x9E3779B185EBCA8DULL, 0xC2FEDA6D9221BEAFULL }, /* XSUM_XXH3_testdata[389] */ + { 195, 0x0000000000000000ULL, 0xCD94217EE362EC3AULL }, /* XSUM_XXH3_testdata[390] */ + { 195, 0x9E3779B185EBCA8DULL, 0xBA68003D370CB3D9ULL }, /* XSUM_XXH3_testdata[391] */ + { 196, 0x0000000000000000ULL, 0xF5783F1A3C6F6E11ULL }, /* XSUM_XXH3_testdata[392] */ + { 196, 0x9E3779B185EBCA8DULL, 0x7868BDD61AF9BE3DULL }, /* XSUM_XXH3_testdata[393] */ + { 197, 0x0000000000000000ULL, 0x894BBC1DD7E5674FULL }, /* XSUM_XXH3_testdata[394] */ + { 197, 0x9E3779B185EBCA8DULL, 0x652C9AB1C8D39D5EULL }, /* XSUM_XXH3_testdata[395] */ + { 198, 0x0000000000000000ULL, 0xE2689C6CB4D31AAAULL }, /* XSUM_XXH3_testdata[396] */ + { 198, 0x9E3779B185EBCA8DULL, 0x6DD1D6DF5511FAA7ULL }, /* XSUM_XXH3_testdata[397] */ + { 199, 0x0000000000000000ULL, 0x673AD58BFD993705ULL }, /* XSUM_XXH3_testdata[398] */ + { 199, 0x9E3779B185EBCA8DULL, 0xCCA3F1CD19A25150ULL }, /* XSUM_XXH3_testdata[399] */ + { 200, 0x0000000000000000ULL, 0xBDDCA58935D7C038ULL }, /* XSUM_XXH3_testdata[400] */ + { 200, 0x9E3779B185EBCA8DULL, 0x5B899E984B88DB8DULL }, /* XSUM_XXH3_testdata[401] */ + { 201, 0x0000000000000000ULL, 0x1A37E8AEA84C276FULL }, /* XSUM_XXH3_testdata[402] */ + { 201, 0x9E3779B185EBCA8DULL, 0xDF67E6D40736EED4ULL }, /* XSUM_XXH3_testdata[403] */ + { 202, 0x0000000000000000ULL, 0x7133A9B6DAA64C4FULL }, /* XSUM_XXH3_testdata[404] */ + { 202, 0x9E3779B185EBCA8DULL, 0xB4877CEF4D15A60CULL }, /* XSUM_XXH3_testdata[405] */ + { 203, 0x0000000000000000ULL, 0xB8A63260A11F1047ULL }, /* XSUM_XXH3_testdata[406] */ + { 203, 0x9E3779B185EBCA8DULL, 0xA9DEBF6A44D6C343ULL }, /* XSUM_XXH3_testdata[407] */ + { 204, 0x0000000000000000ULL, 0xF81ED05ED82A5F64ULL }, /* XSUM_XXH3_testdata[408] */ + { 204, 0x9E3779B185EBCA8DULL, 0x00A56571768FC3B1ULL }, /* XSUM_XXH3_testdata[409] */ + { 205, 0x0000000000000000ULL, 0x9AAF89A02B341B4DULL }, /* XSUM_XXH3_testdata[410] */ + { 205, 0x9E3779B185EBCA8DULL, 0xB8CFB9B3C7272312ULL }, /* XSUM_XXH3_testdata[411] */ + { 206, 0x0000000000000000ULL, 0xE5E6D6FCA7EE38B9ULL }, /* XSUM_XXH3_testdata[412] */ + { 206, 0x9E3779B185EBCA8DULL, 0x3957A991E22D881BULL }, /* XSUM_XXH3_testdata[413] */ + { 207, 0x0000000000000000ULL, 0x56FFE054ABC6F401ULL }, /* XSUM_XXH3_testdata[414] */ + { 207, 0x9E3779B185EBCA8DULL, 0x056F05B3D4F7BCEFULL }, /* XSUM_XXH3_testdata[415] */ + { 208, 0x0000000000000000ULL, 0x2CF1E5EB7433AA4DULL }, /* XSUM_XXH3_testdata[416] */ + { 208, 0x9E3779B185EBCA8DULL, 0xA351C8376638C444ULL }, /* XSUM_XXH3_testdata[417] */ + { 209, 0x0000000000000000ULL, 0x55D4B044757B2153ULL }, /* XSUM_XXH3_testdata[418] */ + { 209, 0x9E3779B185EBCA8DULL, 0x87D10DE06020D17DULL }, /* XSUM_XXH3_testdata[419] */ + { 210, 0x0000000000000000ULL, 0x1F69D7786B302B2CULL }, /* XSUM_XXH3_testdata[420] */ + { 210, 0x9E3779B185EBCA8DULL, 0x6132710E50E40A5CULL }, /* XSUM_XXH3_testdata[421] */ + { 211, 0x0000000000000000ULL, 0x3E33C814B1D6A382ULL }, /* XSUM_XXH3_testdata[422] */ + { 211, 0x9E3779B185EBCA8DULL, 0xCB64E9EA84CB28C5ULL }, /* XSUM_XXH3_testdata[423] */ + { 212, 0x0000000000000000ULL, 0x7E49ADD5E90DB2B5ULL }, /* XSUM_XXH3_testdata[424] */ + { 212, 0x9E3779B185EBCA8DULL, 0xDE9B97DF13D80B9DULL }, /* XSUM_XXH3_testdata[425] */ + { 213, 0x0000000000000000ULL, 0xA829342475F34565ULL }, /* XSUM_XXH3_testdata[426] */ + { 213, 0x9E3779B185EBCA8DULL, 0x8EE174C9B237F8AFULL }, /* XSUM_XXH3_testdata[427] */ + { 214, 0x0000000000000000ULL, 0x5FF1756998E2DE58ULL }, /* XSUM_XXH3_testdata[428] */ + { 214, 0x9E3779B185EBCA8DULL, 0x13C52F2A2E1D5992ULL }, /* XSUM_XXH3_testdata[429] */ + { 215, 0x0000000000000000ULL, 0x2DC9EC2DFA977D2DULL }, /* XSUM_XXH3_testdata[430] */ + { 215, 0x9E3779B185EBCA8DULL, 0x4DEFCFD87DEB6DEBULL }, /* XSUM_XXH3_testdata[431] */ + { 216, 0x0000000000000000ULL, 0x80C06422DA6B2014ULL }, /* XSUM_XXH3_testdata[432] */ + { 216, 0x9E3779B185EBCA8DULL, 0x4DE3FAC5A41BF995ULL }, /* XSUM_XXH3_testdata[433] */ + { 217, 0x0000000000000000ULL, 0xAE20A79CAB85BDD9ULL }, /* XSUM_XXH3_testdata[434] */ + { 217, 0x9E3779B185EBCA8DULL, 0x9F30A3800E1E8A2AULL }, /* XSUM_XXH3_testdata[435] */ + { 218, 0x0000000000000000ULL, 0x3C9DBA381565379DULL }, /* XSUM_XXH3_testdata[436] */ + { 218, 0x9E3779B185EBCA8DULL, 0xD7EA324A7DCBA190ULL }, /* XSUM_XXH3_testdata[437] */ + { 219, 0x0000000000000000ULL, 0xB14F87797A8D4E11ULL }, /* XSUM_XXH3_testdata[438] */ + { 219, 0x9E3779B185EBCA8DULL, 0xB048E218EB663459ULL }, /* XSUM_XXH3_testdata[439] */ + { 220, 0x0000000000000000ULL, 0x85906CC9B50AAD58ULL }, /* XSUM_XXH3_testdata[440] */ + { 220, 0x9E3779B185EBCA8DULL, 0x9F92416B7A9BE313ULL }, /* XSUM_XXH3_testdata[441] */ + { 221, 0x0000000000000000ULL, 0xE1879D3FB79D634CULL }, /* XSUM_XXH3_testdata[442] */ + { 221, 0x9E3779B185EBCA8DULL, 0xCBDDC9D69E2C6628ULL }, /* XSUM_XXH3_testdata[443] */ + { 222, 0x0000000000000000ULL, 0xB9163B558664D356ULL }, /* XSUM_XXH3_testdata[444] */ + { 222, 0x9E3779B185EBCA8DULL, 0xCD627E7CA214EBFDULL }, /* XSUM_XXH3_testdata[445] */ + { 223, 0x0000000000000000ULL, 0x6E495316B983036EULL }, /* XSUM_XXH3_testdata[446] */ + { 223, 0x9E3779B185EBCA8DULL, 0x9F9CEFACCFEE917DULL }, /* XSUM_XXH3_testdata[447] */ + { 224, 0x0000000000000000ULL, 0x3F3250C7E92C871AULL }, /* XSUM_XXH3_testdata[448] */ + { 224, 0x9E3779B185EBCA8DULL, 0x17023A9A6F1156DBULL }, /* XSUM_XXH3_testdata[449] */ + { 225, 0x0000000000000000ULL, 0x1E93DC9165079888ULL }, /* XSUM_XXH3_testdata[450] */ + { 225, 0x9E3779B185EBCA8DULL, 0xCC6043CF5EB743ECULL }, /* XSUM_XXH3_testdata[451] */ + { 226, 0x0000000000000000ULL, 0x1079CBA535D0645FULL }, /* XSUM_XXH3_testdata[452] */ + { 226, 0x9E3779B185EBCA8DULL, 0x103B79310DD8559DULL }, /* XSUM_XXH3_testdata[453] */ + { 227, 0x0000000000000000ULL, 0x6512697FC21CBF8CULL }, /* XSUM_XXH3_testdata[454] */ + { 227, 0x9E3779B185EBCA8DULL, 0xF5843A5E1CF14646ULL }, /* XSUM_XXH3_testdata[455] */ + { 228, 0x0000000000000000ULL, 0x08F56302C634EDC6ULL }, /* XSUM_XXH3_testdata[456] */ + { 228, 0x9E3779B185EBCA8DULL, 0x9EFB771D3B4C7AF9ULL }, /* XSUM_XXH3_testdata[457] */ + { 229, 0x0000000000000000ULL, 0x0FA5055AB340134DULL }, /* XSUM_XXH3_testdata[458] */ + { 229, 0x9E3779B185EBCA8DULL, 0xD9418C945BD23B5DULL }, /* XSUM_XXH3_testdata[459] */ + { 230, 0x0000000000000000ULL, 0x358940707397C206ULL }, /* XSUM_XXH3_testdata[460] */ + { 230, 0x9E3779B185EBCA8DULL, 0x7D15402DDA9BA222ULL }, /* XSUM_XXH3_testdata[461] */ + { 231, 0x0000000000000000ULL, 0x95CAC1AA565CA0EEULL }, /* XSUM_XXH3_testdata[462] */ + { 231, 0x9E3779B185EBCA8DULL, 0x1BD48A08ABD40673ULL }, /* XSUM_XXH3_testdata[463] */ + { 232, 0x0000000000000000ULL, 0xC087038879A68C72ULL }, /* XSUM_XXH3_testdata[464] */ + { 232, 0x9E3779B185EBCA8DULL, 0x6BC086B684ECC59BULL }, /* XSUM_XXH3_testdata[465] */ + { 233, 0x0000000000000000ULL, 0xCC5DFD5F26F2007BULL }, /* XSUM_XXH3_testdata[466] */ + { 233, 0x9E3779B185EBCA8DULL, 0xDAA0803A50AF57BCULL }, /* XSUM_XXH3_testdata[467] */ + { 234, 0x0000000000000000ULL, 0xDF618B5211DE4C44ULL }, /* XSUM_XXH3_testdata[468] */ + { 234, 0x9E3779B185EBCA8DULL, 0x6AE5A200DEB230F6ULL }, /* XSUM_XXH3_testdata[469] */ + { 235, 0x0000000000000000ULL, 0x75F3FF407516816BULL }, /* XSUM_XXH3_testdata[470] */ + { 235, 0x9E3779B185EBCA8DULL, 0xCAACD909A07B2CDEULL }, /* XSUM_XXH3_testdata[471] */ + { 236, 0x0000000000000000ULL, 0xD551D984066EA00AULL }, /* XSUM_XXH3_testdata[472] */ + { 236, 0x9E3779B185EBCA8DULL, 0xE265DA4B7010F56CULL }, /* XSUM_XXH3_testdata[473] */ + { 237, 0x0000000000000000ULL, 0x86F6EC327E7FC887ULL }, /* XSUM_XXH3_testdata[474] */ + { 237, 0x9E3779B185EBCA8DULL, 0x50D19364E2ED470AULL }, /* XSUM_XXH3_testdata[475] */ + { 238, 0x0000000000000000ULL, 0x267B67B37098FF8EULL }, /* XSUM_XXH3_testdata[476] */ + { 238, 0x9E3779B185EBCA8DULL, 0x43C23D8A13D3212AULL }, /* XSUM_XXH3_testdata[477] */ + { 239, 0x0000000000000000ULL, 0x16CE2B9D3B28805DULL }, /* XSUM_XXH3_testdata[478] */ + { 239, 0x9E3779B185EBCA8DULL, 0xF59F5C23FCEBD3B7ULL }, /* XSUM_XXH3_testdata[479] */ + { 240, 0x0000000000000000ULL, 0x81C3C2B67F568CCFULL }, /* XSUM_XXH3_testdata[480] */ + { 240, 0x9E3779B185EBCA8DULL, 0xCC0F58C27EF3D8EEULL }, /* XSUM_XXH3_testdata[481] */ + { 241, 0x0000000000000000ULL, 0xC5A639ECD2030E5EULL }, /* XSUM_XXH3_testdata[482] */ + { 241, 0x9E3779B185EBCA8DULL, 0xDDA9B0A161D4829AULL }, /* XSUM_XXH3_testdata[483] */ + { 242, 0x0000000000000000ULL, 0x967344E78CB4B723ULL }, /* XSUM_XXH3_testdata[484] */ + { 242, 0x9E3779B185EBCA8DULL, 0x5811A132DBCB4C75ULL }, /* XSUM_XXH3_testdata[485] */ + { 243, 0x0000000000000000ULL, 0xE988DAEF24A33188ULL }, /* XSUM_XXH3_testdata[486] */ + { 243, 0x9E3779B185EBCA8DULL, 0x608C899C17491898ULL }, /* XSUM_XXH3_testdata[487] */ + { 244, 0x0000000000000000ULL, 0x207BF1DB073E4932ULL }, /* XSUM_XXH3_testdata[488] */ + { 244, 0x9E3779B185EBCA8DULL, 0x7E4E1ED6A0116446ULL }, /* XSUM_XXH3_testdata[489] */ + { 245, 0x0000000000000000ULL, 0xB2494882657D1610ULL }, /* XSUM_XXH3_testdata[490] */ + { 245, 0x9E3779B185EBCA8DULL, 0x8853314E454EEB9BULL }, /* XSUM_XXH3_testdata[491] */ + { 246, 0x0000000000000000ULL, 0x09BA721476ECA776ULL }, /* XSUM_XXH3_testdata[492] */ + { 246, 0x9E3779B185EBCA8DULL, 0xF096F24C090E8B28ULL }, /* XSUM_XXH3_testdata[493] */ + { 247, 0x0000000000000000ULL, 0x2336B969899E627DULL }, /* XSUM_XXH3_testdata[494] */ + { 247, 0x9E3779B185EBCA8DULL, 0x2FCE53405D7FC73FULL }, /* XSUM_XXH3_testdata[495] */ + { 248, 0x0000000000000000ULL, 0x675A39222277D0B0ULL }, /* XSUM_XXH3_testdata[496] */ + { 248, 0x9E3779B185EBCA8DULL, 0xA7EA866DD4EC2B64ULL }, /* XSUM_XXH3_testdata[497] */ + { 249, 0x0000000000000000ULL, 0x2FC4F84AB35D73A2ULL }, /* XSUM_XXH3_testdata[498] */ + { 249, 0x9E3779B185EBCA8DULL, 0x8F448C1B7A4004F8ULL }, /* XSUM_XXH3_testdata[499] */ + { 250, 0x0000000000000000ULL, 0x92FE7370568187CCULL }, /* XSUM_XXH3_testdata[500] */ + { 250, 0x9E3779B185EBCA8DULL, 0x538997F3170A6253ULL }, /* XSUM_XXH3_testdata[501] */ + { 251, 0x0000000000000000ULL, 0xC8979538455865E1ULL }, /* XSUM_XXH3_testdata[502] */ + { 251, 0x9E3779B185EBCA8DULL, 0x81DBBD7E7B9D1517ULL }, /* XSUM_XXH3_testdata[503] */ + { 252, 0x0000000000000000ULL, 0x517E9BFBF584B49CULL }, /* XSUM_XXH3_testdata[504] */ + { 252, 0x9E3779B185EBCA8DULL, 0xDA61F0C55F7F37CDULL }, /* XSUM_XXH3_testdata[505] */ + { 253, 0x0000000000000000ULL, 0x126CDADFC2AF595AULL }, /* XSUM_XXH3_testdata[506] */ + { 253, 0x9E3779B185EBCA8DULL, 0xA495566991B63EFCULL }, /* XSUM_XXH3_testdata[507] */ + { 254, 0x0000000000000000ULL, 0xC6ADC7E5504153FAULL }, /* XSUM_XXH3_testdata[508] */ + { 254, 0x9E3779B185EBCA8DULL, 0x8204DFA4A557CBB5ULL }, /* XSUM_XXH3_testdata[509] */ + { 255, 0x0000000000000000ULL, 0xE98F979F4ED8A197ULL }, /* XSUM_XXH3_testdata[510] */ + { 255, 0x9E3779B185EBCA8DULL, 0x2ACA7901D9538C75ULL }, /* XSUM_XXH3_testdata[511] */ + { 256, 0x0000000000000000ULL, 0x55DE574AD89D0AC5ULL }, /* XSUM_XXH3_testdata[512] */ + { 256, 0x9E3779B185EBCA8DULL, 0x4D30234B7A3AA61CULL }, /* XSUM_XXH3_testdata[513] */ + { 257, 0x0000000000000000ULL, 0xB17FD5A8AE75BB0BULL }, /* XSUM_XXH3_testdata[514] */ + { 257, 0x9E3779B185EBCA8DULL, 0x802A6FBF3CACD97CULL }, /* XSUM_XXH3_testdata[515] */ + { 258, 0x0000000000000000ULL, 0x597C26D615CCF5D2ULL }, /* XSUM_XXH3_testdata[516] */ + { 258, 0x9E3779B185EBCA8DULL, 0xB3A4A6F75E9D895FULL }, /* XSUM_XXH3_testdata[517] */ + { 259, 0x0000000000000000ULL, 0x96FE56AAA5CE16F7ULL }, /* XSUM_XXH3_testdata[518] */ + { 259, 0x9E3779B185EBCA8DULL, 0x026072B81C892FD0ULL }, /* XSUM_XXH3_testdata[519] */ + { 260, 0x0000000000000000ULL, 0x6434C3B4B191597FULL }, /* XSUM_XXH3_testdata[520] */ + { 260, 0x9E3779B185EBCA8DULL, 0xBD2F19B13A895785ULL }, /* XSUM_XXH3_testdata[521] */ + { 261, 0x0000000000000000ULL, 0x622B69F5713E3274ULL }, /* XSUM_XXH3_testdata[522] */ + { 261, 0x9E3779B185EBCA8DULL, 0xB550374C5BB46917ULL }, /* XSUM_XXH3_testdata[523] */ + { 262, 0x0000000000000000ULL, 0x3131B78E8EDB2AD2ULL }, /* XSUM_XXH3_testdata[524] */ + { 262, 0x9E3779B185EBCA8DULL, 0x728D3D77F1BB62FAULL }, /* XSUM_XXH3_testdata[525] */ + { 263, 0x0000000000000000ULL, 0xD9DF9C2FC42E0238ULL }, /* XSUM_XXH3_testdata[526] */ + { 263, 0x9E3779B185EBCA8DULL, 0x90777D0F22DD4753ULL }, /* XSUM_XXH3_testdata[527] */ + { 264, 0x0000000000000000ULL, 0x84603BD8C0D6611BULL }, /* XSUM_XXH3_testdata[528] */ + { 264, 0x9E3779B185EBCA8DULL, 0x6D179A435DD3ADEFULL }, /* XSUM_XXH3_testdata[529] */ + { 265, 0x0000000000000000ULL, 0x3E689724BD2BCF46ULL }, /* XSUM_XXH3_testdata[530] */ + { 265, 0x9E3779B185EBCA8DULL, 0xFC84D97265A20FADULL }, /* XSUM_XXH3_testdata[531] */ + { 266, 0x0000000000000000ULL, 0x74E4B8041F481162ULL }, /* XSUM_XXH3_testdata[532] */ + { 266, 0x9E3779B185EBCA8DULL, 0x65ABFBAECBC200C4ULL }, /* XSUM_XXH3_testdata[533] */ + { 267, 0x0000000000000000ULL, 0x75EA9B12AF18FA87ULL }, /* XSUM_XXH3_testdata[534] */ + { 267, 0x9E3779B185EBCA8DULL, 0x0A217005537F0186ULL }, /* XSUM_XXH3_testdata[535] */ + { 268, 0x0000000000000000ULL, 0x215E27CCEE7C81FEULL }, /* XSUM_XXH3_testdata[536] */ + { 268, 0x9E3779B185EBCA8DULL, 0xA75ADAB112131070ULL }, /* XSUM_XXH3_testdata[537] */ + { 269, 0x0000000000000000ULL, 0xCDB22F74254DEB8BULL }, /* XSUM_XXH3_testdata[538] */ + { 269, 0x9E3779B185EBCA8DULL, 0xCE40B2E4012A8BA2ULL }, /* XSUM_XXH3_testdata[539] */ + { 270, 0x0000000000000000ULL, 0xE634D8664D685397ULL }, /* XSUM_XXH3_testdata[540] */ + { 270, 0x9E3779B185EBCA8DULL, 0x9B7B8CAA8808A81FULL }, /* XSUM_XXH3_testdata[541] */ + { 271, 0x0000000000000000ULL, 0x4B367EF9DF9DEA94ULL }, /* XSUM_XXH3_testdata[542] */ + { 271, 0x9E3779B185EBCA8DULL, 0xF97A1A53C95C4E11ULL }, /* XSUM_XXH3_testdata[543] */ + { 272, 0x0000000000000000ULL, 0xD74D68D5D03119B3ULL }, /* XSUM_XXH3_testdata[544] */ + { 272, 0x9E3779B185EBCA8DULL, 0x10BD868ACB6D6FA9ULL }, /* XSUM_XXH3_testdata[545] */ + { 273, 0x0000000000000000ULL, 0x65E1FFF6E3002DAFULL }, /* XSUM_XXH3_testdata[546] */ + { 273, 0x9E3779B185EBCA8DULL, 0xB80F7A672C201B85ULL }, /* XSUM_XXH3_testdata[547] */ + { 274, 0x0000000000000000ULL, 0x389595A06A55E2E1ULL }, /* XSUM_XXH3_testdata[548] */ + { 274, 0x9E3779B185EBCA8DULL, 0xB9AEA6AC34EEA74BULL }, /* XSUM_XXH3_testdata[549] */ + { 275, 0x0000000000000000ULL, 0x4E29525A452E797FULL }, /* XSUM_XXH3_testdata[550] */ + { 275, 0x9E3779B185EBCA8DULL, 0xBC6AD5649DBFF613ULL }, /* XSUM_XXH3_testdata[551] */ + { 276, 0x0000000000000000ULL, 0x65DCAB6FC5BBF7FFULL }, /* XSUM_XXH3_testdata[552] */ + { 276, 0x9E3779B185EBCA8DULL, 0x3504897BCA1D4F66ULL }, /* XSUM_XXH3_testdata[553] */ + { 277, 0x0000000000000000ULL, 0x013F79E2E571C3A1ULL }, /* XSUM_XXH3_testdata[554] */ + { 277, 0x9E3779B185EBCA8DULL, 0x449C80F974E1B6F1ULL }, /* XSUM_XXH3_testdata[555] */ + { 278, 0x0000000000000000ULL, 0x57BF715F3AA64DF2ULL }, /* XSUM_XXH3_testdata[556] */ + { 278, 0x9E3779B185EBCA8DULL, 0x1F05B7AA1370AF21ULL }, /* XSUM_XXH3_testdata[557] */ + { 279, 0x0000000000000000ULL, 0x295056DC98A9526CULL }, /* XSUM_XXH3_testdata[558] */ + { 279, 0x9E3779B185EBCA8DULL, 0x43B1C69843725589ULL }, /* XSUM_XXH3_testdata[559] */ + { 280, 0x0000000000000000ULL, 0x952AEF533EAF359BULL }, /* XSUM_XXH3_testdata[560] */ + { 280, 0x9E3779B185EBCA8DULL, 0xE4627DFF9E8B6849ULL }, /* XSUM_XXH3_testdata[561] */ + { 281, 0x0000000000000000ULL, 0xEA6959C34EB32E09ULL }, /* XSUM_XXH3_testdata[562] */ + { 281, 0x9E3779B185EBCA8DULL, 0xE8F69EDE556ACDD5ULL }, /* XSUM_XXH3_testdata[563] */ + { 282, 0x0000000000000000ULL, 0x59D901EB07316669ULL }, /* XSUM_XXH3_testdata[564] */ + { 282, 0x9E3779B185EBCA8DULL, 0xE2865EB1C796FD80ULL }, /* XSUM_XXH3_testdata[565] */ + { 283, 0x0000000000000000ULL, 0x2FD10CEF1C56661AULL }, /* XSUM_XXH3_testdata[566] */ + { 283, 0x9E3779B185EBCA8DULL, 0x4C551113F85ADE1EULL }, /* XSUM_XXH3_testdata[567] */ + { 284, 0x0000000000000000ULL, 0x5E80B417D943A6D2ULL }, /* XSUM_XXH3_testdata[568] */ + { 284, 0x9E3779B185EBCA8DULL, 0xF8CDAB4759BFEC9CULL }, /* XSUM_XXH3_testdata[569] */ + { 285, 0x0000000000000000ULL, 0xC6499EC47E983831ULL }, /* XSUM_XXH3_testdata[570] */ + { 285, 0x9E3779B185EBCA8DULL, 0x68A990E36FD9E7D9ULL }, /* XSUM_XXH3_testdata[571] */ + { 286, 0x0000000000000000ULL, 0x80AF5CFF653B80C8ULL }, /* XSUM_XXH3_testdata[572] */ + { 286, 0x9E3779B185EBCA8DULL, 0x57A7FB462EB4E44AULL }, /* XSUM_XXH3_testdata[573] */ + { 287, 0x0000000000000000ULL, 0xFD9A5D6CB012B7CFULL }, /* XSUM_XXH3_testdata[574] */ + { 287, 0x9E3779B185EBCA8DULL, 0x2AE096D435B28E60ULL }, /* XSUM_XXH3_testdata[575] */ + { 288, 0x0000000000000000ULL, 0x347640D6208A9759ULL }, /* XSUM_XXH3_testdata[576] */ + { 288, 0x9E3779B185EBCA8DULL, 0xA7E5D2D6A42CE280ULL }, /* XSUM_XXH3_testdata[577] */ + { 289, 0x0000000000000000ULL, 0xBD78E8F346C3A6F8ULL }, /* XSUM_XXH3_testdata[578] */ + { 289, 0x9E3779B185EBCA8DULL, 0x42C31C16CDE0CB93ULL }, /* XSUM_XXH3_testdata[579] */ + { 290, 0x0000000000000000ULL, 0x0204AAB22D8EAA99ULL }, /* XSUM_XXH3_testdata[580] */ + { 290, 0x9E3779B185EBCA8DULL, 0x83B99E15E752ABDAULL }, /* XSUM_XXH3_testdata[581] */ + { 291, 0x0000000000000000ULL, 0x59131C26508F9EC8ULL }, /* XSUM_XXH3_testdata[582] */ + { 291, 0x9E3779B185EBCA8DULL, 0x5E0AC32BE4E9D932ULL }, /* XSUM_XXH3_testdata[583] */ + { 292, 0x0000000000000000ULL, 0x152B51807477888FULL }, /* XSUM_XXH3_testdata[584] */ + { 292, 0x9E3779B185EBCA8DULL, 0x6B0C4D15682F3E3DULL }, /* XSUM_XXH3_testdata[585] */ + { 293, 0x0000000000000000ULL, 0x05686974668B34F7ULL }, /* XSUM_XXH3_testdata[586] */ + { 293, 0x9E3779B185EBCA8DULL, 0x52AE5AE6FB0817C8ULL }, /* XSUM_XXH3_testdata[587] */ + { 294, 0x0000000000000000ULL, 0x19113494008391ABULL }, /* XSUM_XXH3_testdata[588] */ + { 294, 0x9E3779B185EBCA8DULL, 0xE675C79778EE4793ULL }, /* XSUM_XXH3_testdata[589] */ + { 295, 0x0000000000000000ULL, 0x3EFAC1DC10E238A4ULL }, /* XSUM_XXH3_testdata[590] */ + { 295, 0x9E3779B185EBCA8DULL, 0xAF2BA7DCEFC70CA8ULL }, /* XSUM_XXH3_testdata[591] */ + { 296, 0x0000000000000000ULL, 0x5F4643F3D41C8764ULL }, /* XSUM_XXH3_testdata[592] */ + { 296, 0x9E3779B185EBCA8DULL, 0x41502D41C73D0567ULL }, /* XSUM_XXH3_testdata[593] */ + { 297, 0x0000000000000000ULL, 0x118968A8B54B2A15ULL }, /* XSUM_XXH3_testdata[594] */ + { 297, 0x9E3779B185EBCA8DULL, 0xA4591A1ADAB38B25ULL }, /* XSUM_XXH3_testdata[595] */ + { 298, 0x0000000000000000ULL, 0x2B2CFEA1E201D3ACULL }, /* XSUM_XXH3_testdata[596] */ + { 298, 0x9E3779B185EBCA8DULL, 0x3D27B64E0A4A5887ULL }, /* XSUM_XXH3_testdata[597] */ + { 299, 0x0000000000000000ULL, 0x1AB22BB41D28E478ULL }, /* XSUM_XXH3_testdata[598] */ + { 299, 0x9E3779B185EBCA8DULL, 0x8E0A8E8D5C430085ULL }, /* XSUM_XXH3_testdata[599] */ + { 300, 0x0000000000000000ULL, 0x7F371220466C4A1AULL }, /* XSUM_XXH3_testdata[600] */ + { 300, 0x9E3779B185EBCA8DULL, 0x1C886C664C4D81C4ULL }, /* XSUM_XXH3_testdata[601] */ + { 301, 0x0000000000000000ULL, 0x69956645B30B3D03ULL }, /* XSUM_XXH3_testdata[602] */ + { 301, 0x9E3779B185EBCA8DULL, 0xC3314BB184586528ULL }, /* XSUM_XXH3_testdata[603] */ + { 302, 0x0000000000000000ULL, 0xC9775577787FAC4BULL }, /* XSUM_XXH3_testdata[604] */ + { 302, 0x9E3779B185EBCA8DULL, 0x0F10E728CA0B206DULL }, /* XSUM_XXH3_testdata[605] */ + { 303, 0x0000000000000000ULL, 0x9B88FAF2C535DB33ULL }, /* XSUM_XXH3_testdata[606] */ + { 303, 0x9E3779B185EBCA8DULL, 0xC05073F3497D23D6ULL }, /* XSUM_XXH3_testdata[607] */ + { 304, 0x0000000000000000ULL, 0xCB1FB32DE8603D38ULL }, /* XSUM_XXH3_testdata[608] */ + { 304, 0x9E3779B185EBCA8DULL, 0xC932730EB0F57280ULL }, /* XSUM_XXH3_testdata[609] */ + { 305, 0x0000000000000000ULL, 0x96C7F9915951C55FULL }, /* XSUM_XXH3_testdata[610] */ + { 305, 0x9E3779B185EBCA8DULL, 0x099D504612C1C3D3ULL }, /* XSUM_XXH3_testdata[611] */ + { 306, 0x0000000000000000ULL, 0x30AB2B22A729B0B0ULL }, /* XSUM_XXH3_testdata[612] */ + { 306, 0x9E3779B185EBCA8DULL, 0x3882FFEB3971E2AAULL }, /* XSUM_XXH3_testdata[613] */ + { 307, 0x0000000000000000ULL, 0x1203D0A98E057A63ULL }, /* XSUM_XXH3_testdata[614] */ + { 307, 0x9E3779B185EBCA8DULL, 0xCCCC1F21C9C38955ULL }, /* XSUM_XXH3_testdata[615] */ + { 308, 0x0000000000000000ULL, 0x5FE7A4E31AA01D1DULL }, /* XSUM_XXH3_testdata[616] */ + { 308, 0x9E3779B185EBCA8DULL, 0x24D6AB786E6DC5DCULL }, /* XSUM_XXH3_testdata[617] */ + { 309, 0x0000000000000000ULL, 0x61EB6DCB5461BC22ULL }, /* XSUM_XXH3_testdata[618] */ + { 309, 0x9E3779B185EBCA8DULL, 0x829A233AB8802F5BULL }, /* XSUM_XXH3_testdata[619] */ + { 310, 0x0000000000000000ULL, 0xC373303BCFE79C7CULL }, /* XSUM_XXH3_testdata[620] */ + { 310, 0x9E3779B185EBCA8DULL, 0x03AF173FEE6164EEULL }, /* XSUM_XXH3_testdata[621] */ + { 311, 0x0000000000000000ULL, 0x5D49DFEAFFEC1516ULL }, /* XSUM_XXH3_testdata[622] */ + { 311, 0x9E3779B185EBCA8DULL, 0xF33B315CCBED8F5FULL }, /* XSUM_XXH3_testdata[623] */ + { 312, 0x0000000000000000ULL, 0x9B69B6E825CB842EULL }, /* XSUM_XXH3_testdata[624] */ + { 312, 0x9E3779B185EBCA8DULL, 0x641BB90692349562ULL }, /* XSUM_XXH3_testdata[625] */ + { 313, 0x0000000000000000ULL, 0x175528876AADCD25ULL }, /* XSUM_XXH3_testdata[626] */ + { 313, 0x9E3779B185EBCA8DULL, 0x2178617919926E81ULL }, /* XSUM_XXH3_testdata[627] */ + { 314, 0x0000000000000000ULL, 0x760A4A825703F2EEULL }, /* XSUM_XXH3_testdata[628] */ + { 314, 0x9E3779B185EBCA8DULL, 0xBEA3F478303CA866ULL }, /* XSUM_XXH3_testdata[629] */ + { 315, 0x0000000000000000ULL, 0x236712F8295DC8C5ULL }, /* XSUM_XXH3_testdata[630] */ + { 315, 0x9E3779B185EBCA8DULL, 0xECDC8B1C138EFF7CULL }, /* XSUM_XXH3_testdata[631] */ + { 316, 0x0000000000000000ULL, 0x7E0D2210E4B43FD4ULL }, /* XSUM_XXH3_testdata[632] */ + { 316, 0x9E3779B185EBCA8DULL, 0xCDE6DF03B9FF13A8ULL }, /* XSUM_XXH3_testdata[633] */ + { 317, 0x0000000000000000ULL, 0x0812693CCEDB7A83ULL }, /* XSUM_XXH3_testdata[634] */ + { 317, 0x9E3779B185EBCA8DULL, 0x6C89B1AC74E2A842ULL }, /* XSUM_XXH3_testdata[635] */ + { 318, 0x0000000000000000ULL, 0x249F29F2EFF9128CULL }, /* XSUM_XXH3_testdata[636] */ + { 318, 0x9E3779B185EBCA8DULL, 0xCACCB88CE9D2648AULL }, /* XSUM_XXH3_testdata[637] */ + { 319, 0x0000000000000000ULL, 0x0FCAA9E59EC5A883ULL }, /* XSUM_XXH3_testdata[638] */ + { 319, 0x9E3779B185EBCA8DULL, 0xDFAF7A1B8B2DB390ULL }, /* XSUM_XXH3_testdata[639] */ + { 320, 0x0000000000000000ULL, 0x75620D350FF5C694ULL }, /* XSUM_XXH3_testdata[640] */ + { 320, 0x9E3779B185EBCA8DULL, 0x19171DE40C928F07ULL }, /* XSUM_XXH3_testdata[641] */ + { 321, 0x0000000000000000ULL, 0x2D8C7E2634AB900AULL }, /* XSUM_XXH3_testdata[642] */ + { 321, 0x9E3779B185EBCA8DULL, 0x14AB0056CC187827ULL }, /* XSUM_XXH3_testdata[643] */ + { 322, 0x0000000000000000ULL, 0xA0DDC9DC085BC472ULL }, /* XSUM_XXH3_testdata[644] */ + { 322, 0x9E3779B185EBCA8DULL, 0x0A37284F6B829CA9ULL }, /* XSUM_XXH3_testdata[645] */ + { 323, 0x0000000000000000ULL, 0x141D6EF253EAB278ULL }, /* XSUM_XXH3_testdata[646] */ + { 323, 0x9E3779B185EBCA8DULL, 0xDB4E00A0E6C2440CULL }, /* XSUM_XXH3_testdata[647] */ + { 324, 0x0000000000000000ULL, 0x46033B0653C32026ULL }, /* XSUM_XXH3_testdata[648] */ + { 324, 0x9E3779B185EBCA8DULL, 0xF8F7E4A13FD0C762ULL }, /* XSUM_XXH3_testdata[649] */ + { 325, 0x0000000000000000ULL, 0x9783E6F884F9C3EEULL }, /* XSUM_XXH3_testdata[650] */ + { 325, 0x9E3779B185EBCA8DULL, 0x38FB4170FEC5D1F5ULL }, /* XSUM_XXH3_testdata[651] */ + { 326, 0x0000000000000000ULL, 0x30D17CB374CC76A1ULL }, /* XSUM_XXH3_testdata[652] */ + { 326, 0x9E3779B185EBCA8DULL, 0x40E89C75F444E468ULL }, /* XSUM_XXH3_testdata[653] */ + { 327, 0x0000000000000000ULL, 0x8917F6B5E2510EF2ULL }, /* XSUM_XXH3_testdata[654] */ + { 327, 0x9E3779B185EBCA8DULL, 0xCE4C72C7D9F66CB8ULL }, /* XSUM_XXH3_testdata[655] */ + { 328, 0x0000000000000000ULL, 0x4A40757A80E28484ULL }, /* XSUM_XXH3_testdata[656] */ + { 328, 0x9E3779B185EBCA8DULL, 0xBA5941F2C9148DC1ULL }, /* XSUM_XXH3_testdata[657] */ + { 329, 0x0000000000000000ULL, 0xF8C7161544010C5AULL }, /* XSUM_XXH3_testdata[658] */ + { 329, 0x9E3779B185EBCA8DULL, 0x24B1D84FE7244B61ULL }, /* XSUM_XXH3_testdata[659] */ + { 330, 0x0000000000000000ULL, 0xE72B9958E036078AULL }, /* XSUM_XXH3_testdata[660] */ + { 330, 0x9E3779B185EBCA8DULL, 0xBE30B55DC980DB1EULL }, /* XSUM_XXH3_testdata[661] */ + { 331, 0x0000000000000000ULL, 0x442E0D1FD80248FCULL }, /* XSUM_XXH3_testdata[662] */ + { 331, 0x9E3779B185EBCA8DULL, 0x2A6EF8B6395B6E1FULL }, /* XSUM_XXH3_testdata[663] */ + { 332, 0x0000000000000000ULL, 0xE64066C1FEFE4314ULL }, /* XSUM_XXH3_testdata[664] */ + { 332, 0x9E3779B185EBCA8DULL, 0xD575491B1369F423ULL }, /* XSUM_XXH3_testdata[665] */ + { 333, 0x0000000000000000ULL, 0xF80DC8E14BBD6D07ULL }, /* XSUM_XXH3_testdata[666] */ + { 333, 0x9E3779B185EBCA8DULL, 0x490D275952EBC0F0ULL }, /* XSUM_XXH3_testdata[667] */ + { 334, 0x0000000000000000ULL, 0x05A390D29F6A054AULL }, /* XSUM_XXH3_testdata[668] */ + { 334, 0x9E3779B185EBCA8DULL, 0x306CB1E3B8D155CBULL }, /* XSUM_XXH3_testdata[669] */ + { 335, 0x0000000000000000ULL, 0xB337A624E2A2ADB0ULL }, /* XSUM_XXH3_testdata[670] */ + { 335, 0x9E3779B185EBCA8DULL, 0xC1396645408E6BC0ULL }, /* XSUM_XXH3_testdata[671] */ + { 336, 0x0000000000000000ULL, 0x5A38ED04BF508E7FULL }, /* XSUM_XXH3_testdata[672] */ + { 336, 0x9E3779B185EBCA8DULL, 0x0BEA662D759BA2EDULL }, /* XSUM_XXH3_testdata[673] */ + { 337, 0x0000000000000000ULL, 0x050BA6EB5632DB62ULL }, /* XSUM_XXH3_testdata[674] */ + { 337, 0x9E3779B185EBCA8DULL, 0x4E862E4034934DC9ULL }, /* XSUM_XXH3_testdata[675] */ + { 338, 0x0000000000000000ULL, 0x1811F916B865B860ULL }, /* XSUM_XXH3_testdata[676] */ + { 338, 0x9E3779B185EBCA8DULL, 0x7BBC087180D4823FULL }, /* XSUM_XXH3_testdata[677] */ + { 339, 0x0000000000000000ULL, 0x6690999CE07A1E8EULL }, /* XSUM_XXH3_testdata[678] */ + { 339, 0x9E3779B185EBCA8DULL, 0xA273568067213D0DULL }, /* XSUM_XXH3_testdata[679] */ + { 340, 0x0000000000000000ULL, 0xA351535A71F4582BULL }, /* XSUM_XXH3_testdata[680] */ + { 340, 0x9E3779B185EBCA8DULL, 0x142398F3E722FCDBULL }, /* XSUM_XXH3_testdata[681] */ + { 341, 0x0000000000000000ULL, 0x2ED4C42D9BF9EF7EULL }, /* XSUM_XXH3_testdata[682] */ + { 341, 0x9E3779B185EBCA8DULL, 0x1424231A7C813FA7ULL }, /* XSUM_XXH3_testdata[683] */ + { 342, 0x0000000000000000ULL, 0xC28197021E7B3D09ULL }, /* XSUM_XXH3_testdata[684] */ + { 342, 0x9E3779B185EBCA8DULL, 0x3C8312E82E55D3E5ULL }, /* XSUM_XXH3_testdata[685] */ + { 343, 0x0000000000000000ULL, 0x18AD1812D3FDBF32ULL }, /* XSUM_XXH3_testdata[686] */ + { 343, 0x9E3779B185EBCA8DULL, 0x5E89058684C6D863ULL }, /* XSUM_XXH3_testdata[687] */ + { 344, 0x0000000000000000ULL, 0x06F60422B9DA6E7DULL }, /* XSUM_XXH3_testdata[688] */ + { 344, 0x9E3779B185EBCA8DULL, 0xEDFAAEC0A5BC66F9ULL }, /* XSUM_XXH3_testdata[689] */ + { 345, 0x0000000000000000ULL, 0xC91F092A0D5BE3BEULL }, /* XSUM_XXH3_testdata[690] */ + { 345, 0x9E3779B185EBCA8DULL, 0xA11B94283398F91DULL }, /* XSUM_XXH3_testdata[691] */ + { 346, 0x0000000000000000ULL, 0xD4CCD2EE25CBE5B0ULL }, /* XSUM_XXH3_testdata[692] */ + { 346, 0x9E3779B185EBCA8DULL, 0x3C81706ECA21BC7DULL }, /* XSUM_XXH3_testdata[693] */ + { 347, 0x0000000000000000ULL, 0x6B5289DA0ACD5BBFULL }, /* XSUM_XXH3_testdata[694] */ + { 347, 0x9E3779B185EBCA8DULL, 0x55D376673F5026AEULL }, /* XSUM_XXH3_testdata[695] */ + { 348, 0x0000000000000000ULL, 0xE6162B73B28EB205ULL }, /* XSUM_XXH3_testdata[696] */ + { 348, 0x9E3779B185EBCA8DULL, 0x0AAE09BDCF8FD99EULL }, /* XSUM_XXH3_testdata[697] */ + { 349, 0x0000000000000000ULL, 0x9357F7E9DE083C47ULL }, /* XSUM_XXH3_testdata[698] */ + { 349, 0x9E3779B185EBCA8DULL, 0xB2AD4B3CBC09451DULL }, /* XSUM_XXH3_testdata[699] */ + { 350, 0x0000000000000000ULL, 0xD097B966C4C4E964ULL }, /* XSUM_XXH3_testdata[700] */ + { 350, 0x9E3779B185EBCA8DULL, 0xFCDE6E432D40421CULL }, /* XSUM_XXH3_testdata[701] */ + { 351, 0x0000000000000000ULL, 0x2F10A562E85CBED8ULL }, /* XSUM_XXH3_testdata[702] */ + { 351, 0x9E3779B185EBCA8DULL, 0x37C28859C95AF762ULL }, /* XSUM_XXH3_testdata[703] */ + { 352, 0x0000000000000000ULL, 0x0A72390BFB1873B9ULL }, /* XSUM_XXH3_testdata[704] */ + { 352, 0x9E3779B185EBCA8DULL, 0xD533F779497D9415ULL }, /* XSUM_XXH3_testdata[705] */ + { 353, 0x0000000000000000ULL, 0x7B11C6784AC00CFBULL }, /* XSUM_XXH3_testdata[706] */ + { 353, 0x9E3779B185EBCA8DULL, 0xD9AC0BDE567EA98EULL }, /* XSUM_XXH3_testdata[707] */ + { 354, 0x0000000000000000ULL, 0x38371A361827DDF8ULL }, /* XSUM_XXH3_testdata[708] */ + { 354, 0x9E3779B185EBCA8DULL, 0x0F5EABDFD0AAADE5ULL }, /* XSUM_XXH3_testdata[709] */ + { 355, 0x0000000000000000ULL, 0xFED1244A20C5D95EULL }, /* XSUM_XXH3_testdata[710] */ + { 355, 0x9E3779B185EBCA8DULL, 0x86BAC8C9DA725C98ULL }, /* XSUM_XXH3_testdata[711] */ + { 356, 0x0000000000000000ULL, 0x6758D5737F8EE218ULL }, /* XSUM_XXH3_testdata[712] */ + { 356, 0x9E3779B185EBCA8DULL, 0xC7BF8A1EF7442E3AULL }, /* XSUM_XXH3_testdata[713] */ + { 357, 0x0000000000000000ULL, 0x0A8EF0DC9CD19128ULL }, /* XSUM_XXH3_testdata[714] */ + { 357, 0x9E3779B185EBCA8DULL, 0x89662B16B4CA80CEULL }, /* XSUM_XXH3_testdata[715] */ + { 358, 0x0000000000000000ULL, 0x356710A360FE6D37ULL }, /* XSUM_XXH3_testdata[716] */ + { 358, 0x9E3779B185EBCA8DULL, 0xC3DF10584D452FB5ULL }, /* XSUM_XXH3_testdata[717] */ + { 359, 0x0000000000000000ULL, 0x689E083407BDA77AULL }, /* XSUM_XXH3_testdata[718] */ + { 359, 0x9E3779B185EBCA8DULL, 0xB6A2FCB2E192C8BFULL }, /* XSUM_XXH3_testdata[719] */ + { 360, 0x0000000000000000ULL, 0xE67BA7A185827EC1ULL }, /* XSUM_XXH3_testdata[720] */ + { 360, 0x9E3779B185EBCA8DULL, 0xF8FCCE52BFC4BF16ULL }, /* XSUM_XXH3_testdata[721] */ + { 361, 0x0000000000000000ULL, 0xF9B729ADAAD2CD4AULL }, /* XSUM_XXH3_testdata[722] */ + { 361, 0x9E3779B185EBCA8DULL, 0xEC259DEBCE39D391ULL }, /* XSUM_XXH3_testdata[723] */ + { 362, 0x0000000000000000ULL, 0x3E6F14A1C5714D82ULL }, /* XSUM_XXH3_testdata[724] */ + { 362, 0x9E3779B185EBCA8DULL, 0x178E0A6F73D397C3ULL }, /* XSUM_XXH3_testdata[725] */ + { 363, 0x0000000000000000ULL, 0xA48FD81FDF6DDFFFULL }, /* XSUM_XXH3_testdata[726] */ + { 363, 0x9E3779B185EBCA8DULL, 0xBB2E607EB6D70F5FULL }, /* XSUM_XXH3_testdata[727] */ + { 364, 0x0000000000000000ULL, 0xCCAAE62E73DC5F07ULL }, /* XSUM_XXH3_testdata[728] */ + { 364, 0x9E3779B185EBCA8DULL, 0x967509C003FFCBFBULL }, /* XSUM_XXH3_testdata[729] */ + { 365, 0x0000000000000000ULL, 0x40B4623FC1E2CCB4ULL }, /* XSUM_XXH3_testdata[730] */ + { 365, 0x9E3779B185EBCA8DULL, 0x664821A370168EC6ULL }, /* XSUM_XXH3_testdata[731] */ + { 366, 0x0000000000000000ULL, 0x2C07776DF175DC52ULL }, /* XSUM_XXH3_testdata[732] */ + { 366, 0x9E3779B185EBCA8DULL, 0xA9B71EB2AB8DAE07ULL }, /* XSUM_XXH3_testdata[733] */ + { 367, 0x0000000000000000ULL, 0x0A5E4DDBA6B9B799ULL }, /* XSUM_XXH3_testdata[734] */ + { 367, 0x9E3779B185EBCA8DULL, 0x63BFA87876C717E1ULL }, /* XSUM_XXH3_testdata[735] */ + { 368, 0x0000000000000000ULL, 0xEB08A13C50A28D90ULL }, /* XSUM_XXH3_testdata[736] */ + { 368, 0x9E3779B185EBCA8DULL, 0x8D4B6207901AFE7FULL }, /* XSUM_XXH3_testdata[737] */ + { 369, 0x0000000000000000ULL, 0x243028D92185A27FULL }, /* XSUM_XXH3_testdata[738] */ + { 369, 0x9E3779B185EBCA8DULL, 0x188181E0EB235BEFULL }, /* XSUM_XXH3_testdata[739] */ + { 370, 0x0000000000000000ULL, 0xB03A6034965EB95AULL }, /* XSUM_XXH3_testdata[740] */ + { 370, 0x9E3779B185EBCA8DULL, 0x3658112343986D03ULL }, /* XSUM_XXH3_testdata[741] */ + { 371, 0x0000000000000000ULL, 0xFDAD032ECFF8F81BULL }, /* XSUM_XXH3_testdata[742] */ + { 371, 0x9E3779B185EBCA8DULL, 0xB7B21856F80476EAULL }, /* XSUM_XXH3_testdata[743] */ + { 372, 0x0000000000000000ULL, 0x3DF375D22F30175EULL }, /* XSUM_XXH3_testdata[744] */ + { 372, 0x9E3779B185EBCA8DULL, 0x895C965C270CB32EULL }, /* XSUM_XXH3_testdata[745] */ + { 373, 0x0000000000000000ULL, 0x457A2E06A96B5EF9ULL }, /* XSUM_XXH3_testdata[746] */ + { 373, 0x9E3779B185EBCA8DULL, 0x465C4F58755A8D6AULL }, /* XSUM_XXH3_testdata[747] */ + { 374, 0x0000000000000000ULL, 0xF975DEE7247758C4ULL }, /* XSUM_XXH3_testdata[748] */ + { 374, 0x9E3779B185EBCA8DULL, 0x222B1690A8184124ULL }, /* XSUM_XXH3_testdata[749] */ + { 375, 0x0000000000000000ULL, 0x1CE867A9DD80AC40ULL }, /* XSUM_XXH3_testdata[750] */ + { 375, 0x9E3779B185EBCA8DULL, 0xE17A6C6BD03728F8ULL }, /* XSUM_XXH3_testdata[751] */ + { 376, 0x0000000000000000ULL, 0x8BC2341CD63EA0E2ULL }, /* XSUM_XXH3_testdata[752] */ + { 376, 0x9E3779B185EBCA8DULL, 0xF08CA859CBF039DFULL }, /* XSUM_XXH3_testdata[753] */ + { 377, 0x0000000000000000ULL, 0x1E23A8EC4F2C6FD0ULL }, /* XSUM_XXH3_testdata[754] */ + { 377, 0x9E3779B185EBCA8DULL, 0x3520A61AFD050718ULL }, /* XSUM_XXH3_testdata[755] */ + { 378, 0x0000000000000000ULL, 0x2695FDF58F22BDCFULL }, /* XSUM_XXH3_testdata[756] */ + { 378, 0x9E3779B185EBCA8DULL, 0x00D5CD7953DFD3CEULL }, /* XSUM_XXH3_testdata[757] */ + { 379, 0x0000000000000000ULL, 0xE9D2B64D0D9185BCULL }, /* XSUM_XXH3_testdata[758] */ + { 379, 0x9E3779B185EBCA8DULL, 0xF5C5EFEE146FF373ULL }, /* XSUM_XXH3_testdata[759] */ + { 380, 0x0000000000000000ULL, 0xE0040A13B2B8DE1EULL }, /* XSUM_XXH3_testdata[760] */ + { 380, 0x9E3779B185EBCA8DULL, 0x274C9D311170A0D4ULL }, /* XSUM_XXH3_testdata[761] */ + { 381, 0x0000000000000000ULL, 0x3CD53A3EEA1BFCCAULL }, /* XSUM_XXH3_testdata[762] */ + { 381, 0x9E3779B185EBCA8DULL, 0x58ED6D239F63C2C2ULL }, /* XSUM_XXH3_testdata[763] */ + { 382, 0x0000000000000000ULL, 0x58BB4C31BBD2771DULL }, /* XSUM_XXH3_testdata[764] */ + { 382, 0x9E3779B185EBCA8DULL, 0x5F10DEFD207C6C5DULL }, /* XSUM_XXH3_testdata[765] */ + { 383, 0x0000000000000000ULL, 0xEFF81E7006EF8ADDULL }, /* XSUM_XXH3_testdata[766] */ + { 383, 0x9E3779B185EBCA8DULL, 0x8A9AC5D71B4A0221ULL }, /* XSUM_XXH3_testdata[767] */ + { 384, 0x0000000000000000ULL, 0xBFA4BA14B8819D81ULL }, /* XSUM_XXH3_testdata[768] */ + { 384, 0x9E3779B185EBCA8DULL, 0x10CABACF1434DB28ULL }, /* XSUM_XXH3_testdata[769] */ + { 385, 0x0000000000000000ULL, 0x9C71E10B185A00BCULL }, /* XSUM_XXH3_testdata[770] */ + { 385, 0x9E3779B185EBCA8DULL, 0x04E7D79392ED571BULL }, /* XSUM_XXH3_testdata[771] */ + { 386, 0x0000000000000000ULL, 0x973F73776BD1E095ULL }, /* XSUM_XXH3_testdata[772] */ + { 386, 0x9E3779B185EBCA8DULL, 0xD83E09472C25BB0AULL }, /* XSUM_XXH3_testdata[773] */ + { 387, 0x0000000000000000ULL, 0x5B40DFCCAD16CE4DULL }, /* XSUM_XXH3_testdata[774] */ + { 387, 0x9E3779B185EBCA8DULL, 0x86E3EBBCBC2AB1ACULL }, /* XSUM_XXH3_testdata[775] */ + { 388, 0x0000000000000000ULL, 0x0C8FC0CB7907B1C7ULL }, /* XSUM_XXH3_testdata[776] */ + { 388, 0x9E3779B185EBCA8DULL, 0xD4D858791A82B65BULL }, /* XSUM_XXH3_testdata[777] */ + { 389, 0x0000000000000000ULL, 0x819B7162F492B772ULL }, /* XSUM_XXH3_testdata[778] */ + { 389, 0x9E3779B185EBCA8DULL, 0x728977393847BE8EULL }, /* XSUM_XXH3_testdata[779] */ + { 390, 0x0000000000000000ULL, 0x5C15DB645CF180EDULL }, /* XSUM_XXH3_testdata[780] */ + { 390, 0x9E3779B185EBCA8DULL, 0x292F3F07CCE6C3D6ULL }, /* XSUM_XXH3_testdata[781] */ + { 391, 0x0000000000000000ULL, 0x8F62CCED6640F4EAULL }, /* XSUM_XXH3_testdata[782] */ + { 391, 0x9E3779B185EBCA8DULL, 0x686F156F45F4566EULL }, /* XSUM_XXH3_testdata[783] */ + { 392, 0x0000000000000000ULL, 0xEF4815662FD37717ULL }, /* XSUM_XXH3_testdata[784] */ + { 392, 0x9E3779B185EBCA8DULL, 0xA6160EC75886933CULL }, /* XSUM_XXH3_testdata[785] */ + { 393, 0x0000000000000000ULL, 0xC75EA17287C05EC1ULL }, /* XSUM_XXH3_testdata[786] */ + { 393, 0x9E3779B185EBCA8DULL, 0xB2CDCFE8958ACCBAULL }, /* XSUM_XXH3_testdata[787] */ + { 394, 0x0000000000000000ULL, 0x38369087E260FDD5ULL }, /* XSUM_XXH3_testdata[788] */ + { 394, 0x9E3779B185EBCA8DULL, 0xF739CEEF793B6AD9ULL }, /* XSUM_XXH3_testdata[789] */ + { 395, 0x0000000000000000ULL, 0xA002E75BA958F3ABULL }, /* XSUM_XXH3_testdata[790] */ + { 395, 0x9E3779B185EBCA8DULL, 0x00148733D393906FULL }, /* XSUM_XXH3_testdata[791] */ + { 396, 0x0000000000000000ULL, 0xD38FF0C18C469384ULL }, /* XSUM_XXH3_testdata[792] */ + { 396, 0x9E3779B185EBCA8DULL, 0x03E1D3CAD75D86E8ULL }, /* XSUM_XXH3_testdata[793] */ + { 397, 0x0000000000000000ULL, 0x8E724CDB123B0F76ULL }, /* XSUM_XXH3_testdata[794] */ + { 397, 0x9E3779B185EBCA8DULL, 0xB8BA0BF9A6B82F34ULL }, /* XSUM_XXH3_testdata[795] */ + { 398, 0x0000000000000000ULL, 0x84B3C899F7AC4965ULL }, /* XSUM_XXH3_testdata[796] */ + { 398, 0x9E3779B185EBCA8DULL, 0x6670B58B7F0CDE77ULL }, /* XSUM_XXH3_testdata[797] */ + { 399, 0x0000000000000000ULL, 0x45A2DB2DCCC36D0AULL }, /* XSUM_XXH3_testdata[798] */ + { 399, 0x9E3779B185EBCA8DULL, 0xCAE4E40D9EE9667EULL }, /* XSUM_XXH3_testdata[799] */ + { 400, 0x0000000000000000ULL, 0xFE72257EB83FE803ULL }, /* XSUM_XXH3_testdata[800] */ + { 400, 0x9E3779B185EBCA8DULL, 0x70703E5792C59B52ULL }, /* XSUM_XXH3_testdata[801] */ + { 401, 0x0000000000000000ULL, 0x3D8B47914B075022ULL }, /* XSUM_XXH3_testdata[802] */ + { 401, 0x9E3779B185EBCA8DULL, 0xFC91804BC832CDCCULL }, /* XSUM_XXH3_testdata[803] */ + { 402, 0x0000000000000000ULL, 0xABEF11224F231FB9ULL }, /* XSUM_XXH3_testdata[804] */ + { 402, 0x9E3779B185EBCA8DULL, 0x9846605865B48634ULL }, /* XSUM_XXH3_testdata[805] */ + { 403, 0x0000000000000000ULL, 0xCDEB804D65C6DEA4ULL }, /* XSUM_XXH3_testdata[806] */ + { 403, 0x9E3779B185EBCA8DULL, 0x6259F6ECFD6443FDULL }, /* XSUM_XXH3_testdata[807] */ + { 404, 0x0000000000000000ULL, 0x31FD8D78674068E6ULL }, /* XSUM_XXH3_testdata[808] */ + { 404, 0x9E3779B185EBCA8DULL, 0x9EBB2664037CB2E7ULL }, /* XSUM_XXH3_testdata[809] */ + { 405, 0x0000000000000000ULL, 0x4C5D6FBB720EA4E5ULL }, /* XSUM_XXH3_testdata[810] */ + { 405, 0x9E3779B185EBCA8DULL, 0xEFD0A92560F75477ULL }, /* XSUM_XXH3_testdata[811] */ + { 406, 0x0000000000000000ULL, 0xCDA5AB92635D07D6ULL }, /* XSUM_XXH3_testdata[812] */ + { 406, 0x9E3779B185EBCA8DULL, 0xC1E33EBC893925ABULL }, /* XSUM_XXH3_testdata[813] */ + { 407, 0x0000000000000000ULL, 0x6D8FA971FA046171ULL }, /* XSUM_XXH3_testdata[814] */ + { 407, 0x9E3779B185EBCA8DULL, 0x4663687A434D08D7ULL }, /* XSUM_XXH3_testdata[815] */ + { 408, 0x0000000000000000ULL, 0x65D015B8B40535F6ULL }, /* XSUM_XXH3_testdata[816] */ + { 408, 0x9E3779B185EBCA8DULL, 0xA53ABE5EB64DF88AULL }, /* XSUM_XXH3_testdata[817] */ + { 409, 0x0000000000000000ULL, 0x191E9B04AFBF9592ULL }, /* XSUM_XXH3_testdata[818] */ + { 409, 0x9E3779B185EBCA8DULL, 0x9A0403349926D4C3ULL }, /* XSUM_XXH3_testdata[819] */ + { 410, 0x0000000000000000ULL, 0x6E19D5D185218E5EULL }, /* XSUM_XXH3_testdata[820] */ + { 410, 0x9E3779B185EBCA8DULL, 0x4ABD4B9474C3F244ULL }, /* XSUM_XXH3_testdata[821] */ + { 411, 0x0000000000000000ULL, 0xBD9ABCF40761A552ULL }, /* XSUM_XXH3_testdata[822] */ + { 411, 0x9E3779B185EBCA8DULL, 0x04D39E24EDF5A1F2ULL }, /* XSUM_XXH3_testdata[823] */ + { 412, 0x0000000000000000ULL, 0xE0B2A8EB2FF315E1ULL }, /* XSUM_XXH3_testdata[824] */ + { 412, 0x9E3779B185EBCA8DULL, 0xE1DE2A762EB136EFULL }, /* XSUM_XXH3_testdata[825] */ + { 413, 0x0000000000000000ULL, 0x56FA90C681958CA8ULL }, /* XSUM_XXH3_testdata[826] */ + { 413, 0x9E3779B185EBCA8DULL, 0x166194994BD30447ULL }, /* XSUM_XXH3_testdata[827] */ + { 414, 0x0000000000000000ULL, 0x3623BFBB213985E6ULL }, /* XSUM_XXH3_testdata[828] */ + { 414, 0x9E3779B185EBCA8DULL, 0x8850D31DF9B93187ULL }, /* XSUM_XXH3_testdata[829] */ + { 415, 0x0000000000000000ULL, 0xE09B132B8B7F3B81ULL }, /* XSUM_XXH3_testdata[830] */ + { 415, 0x9E3779B185EBCA8DULL, 0xE0BA8BE7090D7EC4ULL }, /* XSUM_XXH3_testdata[831] */ + { 416, 0x0000000000000000ULL, 0x58ED1148D17FD5B0ULL }, /* XSUM_XXH3_testdata[832] */ + { 416, 0x9E3779B185EBCA8DULL, 0x1419610BC97E45DBULL }, /* XSUM_XXH3_testdata[833] */ + { 417, 0x0000000000000000ULL, 0x7692303E4C6EBBCBULL }, /* XSUM_XXH3_testdata[834] */ + { 417, 0x9E3779B185EBCA8DULL, 0x8656C4A593876D39ULL }, /* XSUM_XXH3_testdata[835] */ + { 418, 0x0000000000000000ULL, 0x9C3A84CCA97AF51BULL }, /* XSUM_XXH3_testdata[836] */ + { 418, 0x9E3779B185EBCA8DULL, 0xAAC65129D16BA2F2ULL }, /* XSUM_XXH3_testdata[837] */ + { 419, 0x0000000000000000ULL, 0x9BC1DB1F1F2DAC58ULL }, /* XSUM_XXH3_testdata[838] */ + { 419, 0x9E3779B185EBCA8DULL, 0x43F1C55F8899EBF8ULL }, /* XSUM_XXH3_testdata[839] */ + { 420, 0x0000000000000000ULL, 0x43B08566487BCC11ULL }, /* XSUM_XXH3_testdata[840] */ + { 420, 0x9E3779B185EBCA8DULL, 0x594FCB76CF4F675CULL }, /* XSUM_XXH3_testdata[841] */ + { 421, 0x0000000000000000ULL, 0x10865DE3AC70A56FULL }, /* XSUM_XXH3_testdata[842] */ + { 421, 0x9E3779B185EBCA8DULL, 0x446A962722657007ULL }, /* XSUM_XXH3_testdata[843] */ + { 422, 0x0000000000000000ULL, 0x7EB63CE889495361ULL }, /* XSUM_XXH3_testdata[844] */ + { 422, 0x9E3779B185EBCA8DULL, 0xEACD288521441B28ULL }, /* XSUM_XXH3_testdata[845] */ + { 423, 0x0000000000000000ULL, 0xFF15414E6B63375CULL }, /* XSUM_XXH3_testdata[846] */ + { 423, 0x9E3779B185EBCA8DULL, 0xCFC85AFD75504C0AULL }, /* XSUM_XXH3_testdata[847] */ + { 424, 0x0000000000000000ULL, 0x817BF4D37E8C0B65ULL }, /* XSUM_XXH3_testdata[848] */ + { 424, 0x9E3779B185EBCA8DULL, 0x43CCC1F8DA0619C6ULL }, /* XSUM_XXH3_testdata[849] */ + { 425, 0x0000000000000000ULL, 0x2C89A0ED03199F8CULL }, /* XSUM_XXH3_testdata[850] */ + { 425, 0x9E3779B185EBCA8DULL, 0x857765D17605164CULL }, /* XSUM_XXH3_testdata[851] */ + { 426, 0x0000000000000000ULL, 0xF230464BB98EDC3BULL }, /* XSUM_XXH3_testdata[852] */ + { 426, 0x9E3779B185EBCA8DULL, 0xBF929B79F25B4809ULL }, /* XSUM_XXH3_testdata[853] */ + { 427, 0x0000000000000000ULL, 0xA2A423B19E704FABULL }, /* XSUM_XXH3_testdata[854] */ + { 427, 0x9E3779B185EBCA8DULL, 0x3ED7F4BF67A5C831ULL }, /* XSUM_XXH3_testdata[855] */ + { 428, 0x0000000000000000ULL, 0x9AFB077F996B7613ULL }, /* XSUM_XXH3_testdata[856] */ + { 428, 0x9E3779B185EBCA8DULL, 0x1549BE27144F50A1ULL }, /* XSUM_XXH3_testdata[857] */ + { 429, 0x0000000000000000ULL, 0x9D47BF94445A3213ULL }, /* XSUM_XXH3_testdata[858] */ + { 429, 0x9E3779B185EBCA8DULL, 0xF746039AC39675AEULL }, /* XSUM_XXH3_testdata[859] */ + { 430, 0x0000000000000000ULL, 0xE9C48257D575B8CEULL }, /* XSUM_XXH3_testdata[860] */ + { 430, 0x9E3779B185EBCA8DULL, 0x45D0EA104A11D392ULL }, /* XSUM_XXH3_testdata[861] */ + { 431, 0x0000000000000000ULL, 0x6F79AE872AC2F64CULL }, /* XSUM_XXH3_testdata[862] */ + { 431, 0x9E3779B185EBCA8DULL, 0x905C53D2BF759D9AULL }, /* XSUM_XXH3_testdata[863] */ + { 432, 0x0000000000000000ULL, 0x2F3209EA7B782DC2ULL }, /* XSUM_XXH3_testdata[864] */ + { 432, 0x9E3779B185EBCA8DULL, 0x9A4BE7D1E0A85C15ULL }, /* XSUM_XXH3_testdata[865] */ + { 433, 0x0000000000000000ULL, 0x8DE541AFDA73B1B1ULL }, /* XSUM_XXH3_testdata[866] */ + { 433, 0x9E3779B185EBCA8DULL, 0x6C2B360F7791F77FULL }, /* XSUM_XXH3_testdata[867] */ + { 434, 0x0000000000000000ULL, 0x09D24711A5DA385BULL }, /* XSUM_XXH3_testdata[868] */ + { 434, 0x9E3779B185EBCA8DULL, 0x5030A098EF830C27ULL }, /* XSUM_XXH3_testdata[869] */ + { 435, 0x0000000000000000ULL, 0x2127D7E8E4E79978ULL }, /* XSUM_XXH3_testdata[870] */ + { 435, 0x9E3779B185EBCA8DULL, 0xA5D29C2D0876F429ULL }, /* XSUM_XXH3_testdata[871] */ + { 436, 0x0000000000000000ULL, 0x7EB98ACB0AB2C56DULL }, /* XSUM_XXH3_testdata[872] */ + { 436, 0x9E3779B185EBCA8DULL, 0xBE084C3BAFAC5EA2ULL }, /* XSUM_XXH3_testdata[873] */ + { 437, 0x0000000000000000ULL, 0x2140A7FD78990231ULL }, /* XSUM_XXH3_testdata[874] */ + { 437, 0x9E3779B185EBCA8DULL, 0x42E35A4458568455ULL }, /* XSUM_XXH3_testdata[875] */ + { 438, 0x0000000000000000ULL, 0x970A8482BCB629C5ULL }, /* XSUM_XXH3_testdata[876] */ + { 438, 0x9E3779B185EBCA8DULL, 0x73A540D66204C2A4ULL }, /* XSUM_XXH3_testdata[877] */ + { 439, 0x0000000000000000ULL, 0x692EA222FBE72AEDULL }, /* XSUM_XXH3_testdata[878] */ + { 439, 0x9E3779B185EBCA8DULL, 0x2E3F726921308EB9ULL }, /* XSUM_XXH3_testdata[879] */ + { 440, 0x0000000000000000ULL, 0x6CC17B0280576E1CULL }, /* XSUM_XXH3_testdata[880] */ + { 440, 0x9E3779B185EBCA8DULL, 0xB1434D3CDDDCEFDAULL }, /* XSUM_XXH3_testdata[881] */ + { 441, 0x0000000000000000ULL, 0x6FADB76E8BB1DFD9ULL }, /* XSUM_XXH3_testdata[882] */ + { 441, 0x9E3779B185EBCA8DULL, 0x60760B3FD4F72780ULL }, /* XSUM_XXH3_testdata[883] */ + { 442, 0x0000000000000000ULL, 0x8F0AD64BD811D908ULL }, /* XSUM_XXH3_testdata[884] */ + { 442, 0x9E3779B185EBCA8DULL, 0x6864251320FDFCFEULL }, /* XSUM_XXH3_testdata[885] */ + { 443, 0x0000000000000000ULL, 0xA5470A2ADAC472C9ULL }, /* XSUM_XXH3_testdata[886] */ + { 443, 0x9E3779B185EBCA8DULL, 0x15C21C58E17003B6ULL }, /* XSUM_XXH3_testdata[887] */ + { 444, 0x0000000000000000ULL, 0x8FC224C40EC49D28ULL }, /* XSUM_XXH3_testdata[888] */ + { 444, 0x9E3779B185EBCA8DULL, 0x2C1EEF8E4007C6B0ULL }, /* XSUM_XXH3_testdata[889] */ + { 445, 0x0000000000000000ULL, 0xDCBA55F9F43377DCULL }, /* XSUM_XXH3_testdata[890] */ + { 445, 0x9E3779B185EBCA8DULL, 0x32ED9F8013B53EF8ULL }, /* XSUM_XXH3_testdata[891] */ + { 446, 0x0000000000000000ULL, 0x551BC6C0D60451EFULL }, /* XSUM_XXH3_testdata[892] */ + { 446, 0x9E3779B185EBCA8DULL, 0xA0816EA37EC52357ULL }, /* XSUM_XXH3_testdata[893] */ + { 447, 0x0000000000000000ULL, 0x1DC9B62A18B3C8F9ULL }, /* XSUM_XXH3_testdata[894] */ + { 447, 0x9E3779B185EBCA8DULL, 0xF9A3B4DAD6BAFCD2ULL }, /* XSUM_XXH3_testdata[895] */ + { 448, 0x0000000000000000ULL, 0xCBB14EA4B925B28EULL }, /* XSUM_XXH3_testdata[896] */ + { 448, 0x9E3779B185EBCA8DULL, 0x4E1F337F772EA804ULL }, /* XSUM_XXH3_testdata[897] */ + { 449, 0x0000000000000000ULL, 0x1204E7DA3777E3F0ULL }, /* XSUM_XXH3_testdata[898] */ + { 449, 0x9E3779B185EBCA8DULL, 0xC2B8D68EF0F24196ULL }, /* XSUM_XXH3_testdata[899] */ + { 450, 0x0000000000000000ULL, 0x30F95E9006D65F68ULL }, /* XSUM_XXH3_testdata[900] */ + { 450, 0x9E3779B185EBCA8DULL, 0x83A805BD09941B9AULL }, /* XSUM_XXH3_testdata[901] */ + { 451, 0x0000000000000000ULL, 0x81F603B9628E8292ULL }, /* XSUM_XXH3_testdata[902] */ + { 451, 0x9E3779B185EBCA8DULL, 0xAC92C1D2B3A4CCCDULL }, /* XSUM_XXH3_testdata[903] */ + { 452, 0x0000000000000000ULL, 0xD422314982847B14ULL }, /* XSUM_XXH3_testdata[904] */ + { 452, 0x9E3779B185EBCA8DULL, 0x69FFB99A51FD2A7FULL }, /* XSUM_XXH3_testdata[905] */ + { 453, 0x0000000000000000ULL, 0x8F457C62ECE0AF36ULL }, /* XSUM_XXH3_testdata[906] */ + { 453, 0x9E3779B185EBCA8DULL, 0x7A8A9DA647B54209ULL }, /* XSUM_XXH3_testdata[907] */ + { 454, 0x0000000000000000ULL, 0x657580AF76460CA5ULL }, /* XSUM_XXH3_testdata[908] */ + { 454, 0x9E3779B185EBCA8DULL, 0x9C7F4A11F01617F5ULL }, /* XSUM_XXH3_testdata[909] */ + { 455, 0x0000000000000000ULL, 0x471B30BFD9213CD2ULL }, /* XSUM_XXH3_testdata[910] */ + { 455, 0x9E3779B185EBCA8DULL, 0x3791406C5DE1DD68ULL }, /* XSUM_XXH3_testdata[911] */ + { 456, 0x0000000000000000ULL, 0x4F815C9C87995778ULL }, /* XSUM_XXH3_testdata[912] */ + { 456, 0x9E3779B185EBCA8DULL, 0x58B35D938C1F53CAULL }, /* XSUM_XXH3_testdata[913] */ + { 457, 0x0000000000000000ULL, 0x85D3E3AFB3451E9CULL }, /* XSUM_XXH3_testdata[914] */ + { 457, 0x9E3779B185EBCA8DULL, 0xF4BE2D5E9D6E6B21ULL }, /* XSUM_XXH3_testdata[915] */ + { 458, 0x0000000000000000ULL, 0x75F5CD8DFB9AD755ULL }, /* XSUM_XXH3_testdata[916] */ + { 458, 0x9E3779B185EBCA8DULL, 0xA8FEA2F2B1012E31ULL }, /* XSUM_XXH3_testdata[917] */ + { 459, 0x0000000000000000ULL, 0xACFACC0109E7B2ADULL }, /* XSUM_XXH3_testdata[918] */ + { 459, 0x9E3779B185EBCA8DULL, 0x5C7318DA5E667A88ULL }, /* XSUM_XXH3_testdata[919] */ + { 460, 0x0000000000000000ULL, 0x52FAAE91FB875AB9ULL }, /* XSUM_XXH3_testdata[920] */ + { 460, 0x9E3779B185EBCA8DULL, 0xD675FF2127E59493ULL }, /* XSUM_XXH3_testdata[921] */ + { 461, 0x0000000000000000ULL, 0x547E13490C95E75AULL }, /* XSUM_XXH3_testdata[922] */ + { 461, 0x9E3779B185EBCA8DULL, 0x712CE8537166A856ULL }, /* XSUM_XXH3_testdata[923] */ + { 462, 0x0000000000000000ULL, 0x72CF15CFAEFD5200ULL }, /* XSUM_XXH3_testdata[924] */ + { 462, 0x9E3779B185EBCA8DULL, 0x2D4C4326518A767BULL }, /* XSUM_XXH3_testdata[925] */ + { 463, 0x0000000000000000ULL, 0x2D7C641C000C8F93ULL }, /* XSUM_XXH3_testdata[926] */ + { 463, 0x9E3779B185EBCA8DULL, 0xE08B26D522C9541BULL }, /* XSUM_XXH3_testdata[927] */ + { 464, 0x0000000000000000ULL, 0xA779170A3A016B5BULL }, /* XSUM_XXH3_testdata[928] */ + { 464, 0x9E3779B185EBCA8DULL, 0xFE30CD988EA1BD7EULL }, /* XSUM_XXH3_testdata[929] */ + { 465, 0x0000000000000000ULL, 0x82D6577E2DD44946ULL }, /* XSUM_XXH3_testdata[930] */ + { 465, 0x9E3779B185EBCA8DULL, 0xEE89A34CB86CFC63ULL }, /* XSUM_XXH3_testdata[931] */ + { 466, 0x0000000000000000ULL, 0x7A538D4BF06B3529ULL }, /* XSUM_XXH3_testdata[932] */ + { 466, 0x9E3779B185EBCA8DULL, 0x3DA22BE4D85CE818ULL }, /* XSUM_XXH3_testdata[933] */ + { 467, 0x0000000000000000ULL, 0x7F5638FD02E586D9ULL }, /* XSUM_XXH3_testdata[934] */ + { 467, 0x9E3779B185EBCA8DULL, 0x5A4F312059334990ULL }, /* XSUM_XXH3_testdata[935] */ + { 468, 0x0000000000000000ULL, 0xFCFDBCCF4C625BD1ULL }, /* XSUM_XXH3_testdata[936] */ + { 468, 0x9E3779B185EBCA8DULL, 0xAA255B5CF577171BULL }, /* XSUM_XXH3_testdata[937] */ + { 469, 0x0000000000000000ULL, 0xACC4CE635F59D564ULL }, /* XSUM_XXH3_testdata[938] */ + { 469, 0x9E3779B185EBCA8DULL, 0xBA1277E16F3D0F7EULL }, /* XSUM_XXH3_testdata[939] */ + { 470, 0x0000000000000000ULL, 0xAF32C3D3E5C96826ULL }, /* XSUM_XXH3_testdata[940] */ + { 470, 0x9E3779B185EBCA8DULL, 0xB5902BA4883A0AC7ULL }, /* XSUM_XXH3_testdata[941] */ + { 471, 0x0000000000000000ULL, 0x2A549F3506C157F7ULL }, /* XSUM_XXH3_testdata[942] */ + { 471, 0x9E3779B185EBCA8DULL, 0x19107317BB46B43FULL }, /* XSUM_XXH3_testdata[943] */ + { 472, 0x0000000000000000ULL, 0x5E13DB5A6EC9AC17ULL }, /* XSUM_XXH3_testdata[944] */ + { 472, 0x9E3779B185EBCA8DULL, 0x96D80A21750B1B90ULL }, /* XSUM_XXH3_testdata[945] */ + { 473, 0x0000000000000000ULL, 0x4BFB3C69FCEECE7FULL }, /* XSUM_XXH3_testdata[946] */ + { 473, 0x9E3779B185EBCA8DULL, 0x7DE8627EB0718D81ULL }, /* XSUM_XXH3_testdata[947] */ + { 474, 0x0000000000000000ULL, 0x16D6CD341FE6C64EULL }, /* XSUM_XXH3_testdata[948] */ + { 474, 0x9E3779B185EBCA8DULL, 0x2D862EA0AE3A8DBDULL }, /* XSUM_XXH3_testdata[949] */ + { 475, 0x0000000000000000ULL, 0xDB59963FF1FC1465ULL }, /* XSUM_XXH3_testdata[950] */ + { 475, 0x9E3779B185EBCA8DULL, 0x300D11B3F436F442ULL }, /* XSUM_XXH3_testdata[951] */ + { 476, 0x0000000000000000ULL, 0x4A76BE44A1317EA8ULL }, /* XSUM_XXH3_testdata[952] */ + { 476, 0x9E3779B185EBCA8DULL, 0x22D425519D2A32B6ULL }, /* XSUM_XXH3_testdata[953] */ + { 477, 0x0000000000000000ULL, 0x66B195B99D35E394ULL }, /* XSUM_XXH3_testdata[954] */ + { 477, 0x9E3779B185EBCA8DULL, 0x81E74D402EE78D93ULL }, /* XSUM_XXH3_testdata[955] */ + { 478, 0x0000000000000000ULL, 0x0C920F66078C27A8ULL }, /* XSUM_XXH3_testdata[956] */ + { 478, 0x9E3779B185EBCA8DULL, 0xA8FE3B7613D9DBBBULL }, /* XSUM_XXH3_testdata[957] */ + { 479, 0x0000000000000000ULL, 0x0C10DDBEDF0F68FEULL }, /* XSUM_XXH3_testdata[958] */ + { 479, 0x9E3779B185EBCA8DULL, 0xF35D3280A168FC1CULL }, /* XSUM_XXH3_testdata[959] */ + { 480, 0x0000000000000000ULL, 0xB2A644E90D66B68AULL }, /* XSUM_XXH3_testdata[960] */ + { 480, 0x9E3779B185EBCA8DULL, 0x1BEC09D4C1FAFE29ULL }, /* XSUM_XXH3_testdata[961] */ + { 481, 0x0000000000000000ULL, 0x37CF71FFFAA3DB8EULL }, /* XSUM_XXH3_testdata[962] */ + { 481, 0x9E3779B185EBCA8DULL, 0xC25B65F5CCC72AE6ULL }, /* XSUM_XXH3_testdata[963] */ + { 482, 0x0000000000000000ULL, 0x04357549339CBEB2ULL }, /* XSUM_XXH3_testdata[964] */ + { 482, 0x9E3779B185EBCA8DULL, 0x47CE0A0A7B8CFB40ULL }, /* XSUM_XXH3_testdata[965] */ + { 483, 0x0000000000000000ULL, 0x90B090913EEBFB2BULL }, /* XSUM_XXH3_testdata[966] */ + { 483, 0x9E3779B185EBCA8DULL, 0xF2F1E5793864A111ULL }, /* XSUM_XXH3_testdata[967] */ + { 484, 0x0000000000000000ULL, 0x37664441826F862BULL }, /* XSUM_XXH3_testdata[968] */ + { 484, 0x9E3779B185EBCA8DULL, 0xA804820D478313ABULL }, /* XSUM_XXH3_testdata[969] */ + { 485, 0x0000000000000000ULL, 0x6D910B2F3066BB50ULL }, /* XSUM_XXH3_testdata[970] */ + { 485, 0x9E3779B185EBCA8DULL, 0x8F90C3511B256A6EULL }, /* XSUM_XXH3_testdata[971] */ + { 486, 0x0000000000000000ULL, 0x86CE5E6EA6F98C28ULL }, /* XSUM_XXH3_testdata[972] */ + { 486, 0x9E3779B185EBCA8DULL, 0xB35AD59403FDED90ULL }, /* XSUM_XXH3_testdata[973] */ + { 487, 0x0000000000000000ULL, 0x2C99E1392A36DF28ULL }, /* XSUM_XXH3_testdata[974] */ + { 487, 0x9E3779B185EBCA8DULL, 0x0A877CFAA0803A37ULL }, /* XSUM_XXH3_testdata[975] */ + { 488, 0x0000000000000000ULL, 0x108C4CB805213EEAULL }, /* XSUM_XXH3_testdata[976] */ + { 488, 0x9E3779B185EBCA8DULL, 0x8D7E49020FBC0021ULL }, /* XSUM_XXH3_testdata[977] */ + { 489, 0x0000000000000000ULL, 0x8F53B54D164A815AULL }, /* XSUM_XXH3_testdata[978] */ + { 489, 0x9E3779B185EBCA8DULL, 0xCC1DDAB79D352C8EULL }, /* XSUM_XXH3_testdata[979] */ + { 490, 0x0000000000000000ULL, 0x601AE9308B2F65C0ULL }, /* XSUM_XXH3_testdata[980] */ + { 490, 0x9E3779B185EBCA8DULL, 0xF977A75FBEEF07C0ULL }, /* XSUM_XXH3_testdata[981] */ + { 491, 0x0000000000000000ULL, 0xC3BD335D6F4D7E2CULL }, /* XSUM_XXH3_testdata[982] */ + { 491, 0x9E3779B185EBCA8DULL, 0x3BE1894D59B97DF5ULL }, /* XSUM_XXH3_testdata[983] */ + { 492, 0x0000000000000000ULL, 0x6EE462A1F4F6A75FULL }, /* XSUM_XXH3_testdata[984] */ + { 492, 0x9E3779B185EBCA8DULL, 0x639C27C90261E018ULL }, /* XSUM_XXH3_testdata[985] */ + { 493, 0x0000000000000000ULL, 0xFB89382799CE1D19ULL }, /* XSUM_XXH3_testdata[986] */ + { 493, 0x9E3779B185EBCA8DULL, 0x5ACF651002134352ULL }, /* XSUM_XXH3_testdata[987] */ + { 494, 0x0000000000000000ULL, 0xE5126B06554B1262ULL }, /* XSUM_XXH3_testdata[988] */ + { 494, 0x9E3779B185EBCA8DULL, 0x61FE12C33EFD590FULL }, /* XSUM_XXH3_testdata[989] */ + { 495, 0x0000000000000000ULL, 0x0C1C2EF59CD4710BULL }, /* XSUM_XXH3_testdata[990] */ + { 495, 0x9E3779B185EBCA8DULL, 0xDFA65EF745749DF3ULL }, /* XSUM_XXH3_testdata[991] */ + { 496, 0x0000000000000000ULL, 0x01720698FF6887B5ULL }, /* XSUM_XXH3_testdata[992] */ + { 496, 0x9E3779B185EBCA8DULL, 0x830FCACF8532CA2FULL }, /* XSUM_XXH3_testdata[993] */ + { 497, 0x0000000000000000ULL, 0x9163F218B8DB7CE8ULL }, /* XSUM_XXH3_testdata[994] */ + { 497, 0x9E3779B185EBCA8DULL, 0x00294873E8062E82ULL }, /* XSUM_XXH3_testdata[995] */ + { 498, 0x0000000000000000ULL, 0xE847DF198ADDF0B5ULL }, /* XSUM_XXH3_testdata[996] */ + { 498, 0x9E3779B185EBCA8DULL, 0x6BBCFBF57ED078E1ULL }, /* XSUM_XXH3_testdata[997] */ + { 499, 0x0000000000000000ULL, 0xB03C576F748BD8ABULL }, /* XSUM_XXH3_testdata[998] */ + { 499, 0x9E3779B185EBCA8DULL, 0x1128A0882B31D65DULL }, /* XSUM_XXH3_testdata[999] */ + { 500, 0x0000000000000000ULL, 0xEF35ACEB3B341A05ULL }, /* XSUM_XXH3_testdata[1000] */ + { 500, 0x9E3779B185EBCA8DULL, 0x0A70F89473B2E134ULL }, /* XSUM_XXH3_testdata[1001] */ + { 501, 0x0000000000000000ULL, 0x51D54B811465F86AULL }, /* XSUM_XXH3_testdata[1002] */ + { 501, 0x9E3779B185EBCA8DULL, 0x5C628FAAC61E981EULL }, /* XSUM_XXH3_testdata[1003] */ + { 502, 0x0000000000000000ULL, 0xC532F6A413F0E42CULL }, /* XSUM_XXH3_testdata[1004] */ + { 502, 0x9E3779B185EBCA8DULL, 0x69A13F41C275C165ULL }, /* XSUM_XXH3_testdata[1005] */ + { 503, 0x0000000000000000ULL, 0xF61FB7AC0A4FC5C2ULL }, /* XSUM_XXH3_testdata[1006] */ + { 503, 0x9E3779B185EBCA8DULL, 0xB46D36F91993597CULL }, /* XSUM_XXH3_testdata[1007] */ + { 504, 0x0000000000000000ULL, 0x7442F18AC6D61B1DULL }, /* XSUM_XXH3_testdata[1008] */ + { 504, 0x9E3779B185EBCA8DULL, 0x4853942F88841332ULL }, /* XSUM_XXH3_testdata[1009] */ + { 505, 0x0000000000000000ULL, 0xF3FF1DE56CF1CAD9ULL }, /* XSUM_XXH3_testdata[1010] */ + { 505, 0x9E3779B185EBCA8DULL, 0x4710E442BEAC49C7ULL }, /* XSUM_XXH3_testdata[1011] */ + { 506, 0x0000000000000000ULL, 0xF1D2DF0316771A7CULL }, /* XSUM_XXH3_testdata[1012] */ + { 506, 0x9E3779B185EBCA8DULL, 0x455B6CEC8F1E8350ULL }, /* XSUM_XXH3_testdata[1013] */ + { 507, 0x0000000000000000ULL, 0x5C05AD7DBF2A4547ULL }, /* XSUM_XXH3_testdata[1014] */ + { 507, 0x9E3779B185EBCA8DULL, 0x184B4C63C3A00D02ULL }, /* XSUM_XXH3_testdata[1015] */ + { 508, 0x0000000000000000ULL, 0x365199C55EAAD05BULL }, /* XSUM_XXH3_testdata[1016] */ + { 508, 0x9E3779B185EBCA8DULL, 0xE9E7D170BADB2BA9ULL }, /* XSUM_XXH3_testdata[1017] */ + { 509, 0x0000000000000000ULL, 0x5DBCACDAA1F7566BULL }, /* XSUM_XXH3_testdata[1018] */ + { 509, 0x9E3779B185EBCA8DULL, 0x6D60CAF6ED6D03E3ULL }, /* XSUM_XXH3_testdata[1019] */ + { 510, 0x0000000000000000ULL, 0x337D49DDF223AC10ULL }, /* XSUM_XXH3_testdata[1020] */ + { 510, 0x9E3779B185EBCA8DULL, 0x5E1C79CAF9AE2635ULL }, /* XSUM_XXH3_testdata[1021] */ + { 511, 0x0000000000000000ULL, 0x8089715B163E7FC0ULL }, /* XSUM_XXH3_testdata[1022] */ + { 511, 0x9E3779B185EBCA8DULL, 0x90EC0377BA8D6002ULL }, /* XSUM_XXH3_testdata[1023] */ + { 512, 0x0000000000000000ULL, 0x617E49599013CB6BULL }, /* XSUM_XXH3_testdata[1024] */ + { 512, 0x9E3779B185EBCA8DULL, 0x3CE457DE14C27708ULL }, /* XSUM_XXH3_testdata[1025] */ + { 513, 0x0000000000000000ULL, 0xF7037D3B6722AEECULL }, /* XSUM_XXH3_testdata[1026] */ + { 513, 0x9E3779B185EBCA8DULL, 0x78494A42FDE49F35ULL }, /* XSUM_XXH3_testdata[1027] */ + { 514, 0x0000000000000000ULL, 0xD6D133F802EC8DE9ULL }, /* XSUM_XXH3_testdata[1028] */ + { 514, 0x9E3779B185EBCA8DULL, 0x4A9476602727653BULL }, /* XSUM_XXH3_testdata[1029] */ + { 515, 0x0000000000000000ULL, 0x916FD663EE7A2B40ULL }, /* XSUM_XXH3_testdata[1030] */ + { 515, 0x9E3779B185EBCA8DULL, 0x2E49A56A3E907479ULL }, /* XSUM_XXH3_testdata[1031] */ + { 516, 0x0000000000000000ULL, 0x296884B4F289C9E2ULL }, /* XSUM_XXH3_testdata[1032] */ + { 516, 0x9E3779B185EBCA8DULL, 0xCF06989B231DCBA2ULL }, /* XSUM_XXH3_testdata[1033] */ + { 517, 0x0000000000000000ULL, 0x0F780D32AF5B93E7ULL }, /* XSUM_XXH3_testdata[1034] */ + { 517, 0x9E3779B185EBCA8DULL, 0xB958BFAD729A407CULL }, /* XSUM_XXH3_testdata[1035] */ + { 518, 0x0000000000000000ULL, 0xF9515F008BFBF090ULL }, /* XSUM_XXH3_testdata[1036] */ + { 518, 0x9E3779B185EBCA8DULL, 0x6071E3513A8C56FFULL }, /* XSUM_XXH3_testdata[1037] */ + { 519, 0x0000000000000000ULL, 0x437449649192D1D5ULL }, /* XSUM_XXH3_testdata[1038] */ + { 519, 0x9E3779B185EBCA8DULL, 0x4895C7042BCEBF60ULL }, /* XSUM_XXH3_testdata[1039] */ + { 520, 0x0000000000000000ULL, 0x798FE0ED55307DCEULL }, /* XSUM_XXH3_testdata[1040] */ + { 520, 0x9E3779B185EBCA8DULL, 0xF836A2DBFCE75330ULL }, /* XSUM_XXH3_testdata[1041] */ + { 521, 0x0000000000000000ULL, 0x1EDC6FB72413D07CULL }, /* XSUM_XXH3_testdata[1042] */ + { 521, 0x9E3779B185EBCA8DULL, 0x5B411EAA9D9D2DABULL }, /* XSUM_XXH3_testdata[1043] */ + { 522, 0x0000000000000000ULL, 0x2323999887285691ULL }, /* XSUM_XXH3_testdata[1044] */ + { 522, 0x9E3779B185EBCA8DULL, 0x7CED862B19471EC0ULL }, /* XSUM_XXH3_testdata[1045] */ + { 523, 0x0000000000000000ULL, 0x900F8EF3FA04553CULL }, /* XSUM_XXH3_testdata[1046] */ + { 523, 0x9E3779B185EBCA8DULL, 0x7A0A14A37231FFB7ULL }, /* XSUM_XXH3_testdata[1047] */ + { 524, 0x0000000000000000ULL, 0xF018B3E98DFFB9DBULL }, /* XSUM_XXH3_testdata[1048] */ + { 524, 0x9E3779B185EBCA8DULL, 0xE76E428270018A74ULL }, /* XSUM_XXH3_testdata[1049] */ + { 525, 0x0000000000000000ULL, 0x91009968A59F5DE1ULL }, /* XSUM_XXH3_testdata[1050] */ + { 525, 0x9E3779B185EBCA8DULL, 0x651738F8F8E2EAE6ULL }, /* XSUM_XXH3_testdata[1051] */ + { 526, 0x0000000000000000ULL, 0x9D919B6E918D457FULL }, /* XSUM_XXH3_testdata[1052] */ + { 526, 0x9E3779B185EBCA8DULL, 0x929A9B839E9E5DACULL }, /* XSUM_XXH3_testdata[1053] */ + { 527, 0x0000000000000000ULL, 0xBD9253EF067D4827ULL }, /* XSUM_XXH3_testdata[1054] */ + { 527, 0x9E3779B185EBCA8DULL, 0x110D0A0EEF0E1DE0ULL }, /* XSUM_XXH3_testdata[1055] */ + { 528, 0x0000000000000000ULL, 0xA4FF4CE1E6E3B0F6ULL }, /* XSUM_XXH3_testdata[1056] */ + { 528, 0x9E3779B185EBCA8DULL, 0x102CA5FC88E4ACDBULL }, /* XSUM_XXH3_testdata[1057] */ + { 529, 0x0000000000000000ULL, 0x5A9BD96F099D3A05ULL }, /* XSUM_XXH3_testdata[1058] */ + { 529, 0x9E3779B185EBCA8DULL, 0x55AA573781F0E6C3ULL }, /* XSUM_XXH3_testdata[1059] */ + { 530, 0x0000000000000000ULL, 0x10F4AEF9ED1662FEULL }, /* XSUM_XXH3_testdata[1060] */ + { 530, 0x9E3779B185EBCA8DULL, 0x3A77F93A9C084E39ULL }, /* XSUM_XXH3_testdata[1061] */ + { 531, 0x0000000000000000ULL, 0x953266DCF6F64DD8ULL }, /* XSUM_XXH3_testdata[1062] */ + { 531, 0x9E3779B185EBCA8DULL, 0xF29DB077DCA0A65FULL }, /* XSUM_XXH3_testdata[1063] */ + { 532, 0x0000000000000000ULL, 0x7FC33AF735826264ULL }, /* XSUM_XXH3_testdata[1064] */ + { 532, 0x9E3779B185EBCA8DULL, 0x8DAC890EE966D7D7ULL }, /* XSUM_XXH3_testdata[1065] */ + { 533, 0x0000000000000000ULL, 0x4AA6FD454B20A62CULL }, /* XSUM_XXH3_testdata[1066] */ + { 533, 0x9E3779B185EBCA8DULL, 0x868747A5FD700CCEULL }, /* XSUM_XXH3_testdata[1067] */ + { 534, 0x0000000000000000ULL, 0x622F04DD0CBD4D28ULL }, /* XSUM_XXH3_testdata[1068] */ + { 534, 0x9E3779B185EBCA8DULL, 0x582385BB15C93A83ULL }, /* XSUM_XXH3_testdata[1069] */ + { 535, 0x0000000000000000ULL, 0x70A29B295E97E82EULL }, /* XSUM_XXH3_testdata[1070] */ + { 535, 0x9E3779B185EBCA8DULL, 0x30FB3DBBF088E816ULL }, /* XSUM_XXH3_testdata[1071] */ + { 536, 0x0000000000000000ULL, 0xCF41D4BD8DE08418ULL }, /* XSUM_XXH3_testdata[1072] */ + { 536, 0x9E3779B185EBCA8DULL, 0xF37C777F1A7DBB41ULL }, /* XSUM_XXH3_testdata[1073] */ + { 537, 0x0000000000000000ULL, 0x394062779EDA7FD1ULL }, /* XSUM_XXH3_testdata[1074] */ + { 537, 0x9E3779B185EBCA8DULL, 0x6D6070C24379CFDFULL }, /* XSUM_XXH3_testdata[1075] */ + { 538, 0x0000000000000000ULL, 0x7DACA4ACB0BE611EULL }, /* XSUM_XXH3_testdata[1076] */ + { 538, 0x9E3779B185EBCA8DULL, 0x8B093E8DF3C0A94DULL }, /* XSUM_XXH3_testdata[1077] */ + { 539, 0x0000000000000000ULL, 0xB759B66ED325D90BULL }, /* XSUM_XXH3_testdata[1078] */ + { 539, 0x9E3779B185EBCA8DULL, 0x92C6CD9D754DA170ULL }, /* XSUM_XXH3_testdata[1079] */ + { 540, 0x0000000000000000ULL, 0x1CE1ECB6F2EA3C08ULL }, /* XSUM_XXH3_testdata[1080] */ + { 540, 0x9E3779B185EBCA8DULL, 0xF8254785EF9BF776ULL }, /* XSUM_XXH3_testdata[1081] */ + { 541, 0x0000000000000000ULL, 0x4A683D8C0191DB06ULL }, /* XSUM_XXH3_testdata[1082] */ + { 541, 0x9E3779B185EBCA8DULL, 0xA0A37DAD4F2A8703ULL }, /* XSUM_XXH3_testdata[1083] */ + { 542, 0x0000000000000000ULL, 0xD4A94AFE1D60AF7CULL }, /* XSUM_XXH3_testdata[1084] */ + { 542, 0x9E3779B185EBCA8DULL, 0x1AC6DBBF0E1AD2BFULL }, /* XSUM_XXH3_testdata[1085] */ + { 543, 0x0000000000000000ULL, 0x335ED4269537AE98ULL }, /* XSUM_XXH3_testdata[1086] */ + { 543, 0x9E3779B185EBCA8DULL, 0xEA591E76B5F58023ULL }, /* XSUM_XXH3_testdata[1087] */ + { 544, 0x0000000000000000ULL, 0xEE0F3ED48AE98EAAULL }, /* XSUM_XXH3_testdata[1088] */ + { 544, 0x9E3779B185EBCA8DULL, 0xEFA52007CF2B08E9ULL }, /* XSUM_XXH3_testdata[1089] */ + { 545, 0x0000000000000000ULL, 0xD3C23550ACAC379AULL }, /* XSUM_XXH3_testdata[1090] */ + { 545, 0x9E3779B185EBCA8DULL, 0x3A372A67ED04F20EULL }, /* XSUM_XXH3_testdata[1091] */ + { 546, 0x0000000000000000ULL, 0x8766C1E7E90ECC53ULL }, /* XSUM_XXH3_testdata[1092] */ + { 546, 0x9E3779B185EBCA8DULL, 0x557B6D382216C9C8ULL }, /* XSUM_XXH3_testdata[1093] */ + { 547, 0x0000000000000000ULL, 0xFD4BA223E822FA02ULL }, /* XSUM_XXH3_testdata[1094] */ + { 547, 0x9E3779B185EBCA8DULL, 0xDFF8551585E4E635ULL }, /* XSUM_XXH3_testdata[1095] */ + { 548, 0x0000000000000000ULL, 0x1FA4D5286396145EULL }, /* XSUM_XXH3_testdata[1096] */ + { 548, 0x9E3779B185EBCA8DULL, 0x19DC860F95E9E300ULL }, /* XSUM_XXH3_testdata[1097] */ + { 549, 0x0000000000000000ULL, 0x8FB9DB46DB18B81EULL }, /* XSUM_XXH3_testdata[1098] */ + { 549, 0x9E3779B185EBCA8DULL, 0x94DCB36B2A353435ULL }, /* XSUM_XXH3_testdata[1099] */ + { 550, 0x0000000000000000ULL, 0x83DD946E679275ECULL }, /* XSUM_XXH3_testdata[1100] */ + { 550, 0x9E3779B185EBCA8DULL, 0xED59520EF54C28E1ULL }, /* XSUM_XXH3_testdata[1101] */ + { 551, 0x0000000000000000ULL, 0x4483944094799E09ULL }, /* XSUM_XXH3_testdata[1102] */ + { 551, 0x9E3779B185EBCA8DULL, 0x4893FC5F3BF47AF8ULL }, /* XSUM_XXH3_testdata[1103] */ + { 552, 0x0000000000000000ULL, 0x166D9ADCD1580EE6ULL }, /* XSUM_XXH3_testdata[1104] */ + { 552, 0x9E3779B185EBCA8DULL, 0xD8FE769808678DDEULL }, /* XSUM_XXH3_testdata[1105] */ + { 553, 0x0000000000000000ULL, 0x76094EAA527CF3BDULL }, /* XSUM_XXH3_testdata[1106] */ + { 553, 0x9E3779B185EBCA8DULL, 0xBA20D5A6026C47B1ULL }, /* XSUM_XXH3_testdata[1107] */ + { 554, 0x0000000000000000ULL, 0x8F27383CF09A76B3ULL }, /* XSUM_XXH3_testdata[1108] */ + { 554, 0x9E3779B185EBCA8DULL, 0x5D1B841D161A1193ULL }, /* XSUM_XXH3_testdata[1109] */ + { 555, 0x0000000000000000ULL, 0x8AD49BC31E7A4427ULL }, /* XSUM_XXH3_testdata[1110] */ + { 555, 0x9E3779B185EBCA8DULL, 0x681841730B9E5E84ULL }, /* XSUM_XXH3_testdata[1111] */ + { 556, 0x0000000000000000ULL, 0x2EEEEFB3A80CD68EULL }, /* XSUM_XXH3_testdata[1112] */ + { 556, 0x9E3779B185EBCA8DULL, 0x4EE3FC2C8D8E138BULL }, /* XSUM_XXH3_testdata[1113] */ + { 557, 0x0000000000000000ULL, 0xF0D8D5132E115CA5ULL }, /* XSUM_XXH3_testdata[1114] */ + { 557, 0x9E3779B185EBCA8DULL, 0x417506C6F736F51EULL }, /* XSUM_XXH3_testdata[1115] */ + { 558, 0x0000000000000000ULL, 0xFE4FC52E0D5697CEULL }, /* XSUM_XXH3_testdata[1116] */ + { 558, 0x9E3779B185EBCA8DULL, 0x1FB0668F3F5C72FFULL }, /* XSUM_XXH3_testdata[1117] */ + { 559, 0x0000000000000000ULL, 0x6C09584BC80BC143ULL }, /* XSUM_XXH3_testdata[1118] */ + { 559, 0x9E3779B185EBCA8DULL, 0x453418ECEAA73D98ULL }, /* XSUM_XXH3_testdata[1119] */ + { 560, 0x0000000000000000ULL, 0x0AF326979F3BA818ULL }, /* XSUM_XXH3_testdata[1120] */ + { 560, 0x9E3779B185EBCA8DULL, 0x404AEF8839775F17ULL }, /* XSUM_XXH3_testdata[1121] */ + { 561, 0x0000000000000000ULL, 0x9598B245C6CCE432ULL }, /* XSUM_XXH3_testdata[1122] */ + { 561, 0x9E3779B185EBCA8DULL, 0x2728DEA648CED887ULL }, /* XSUM_XXH3_testdata[1123] */ + { 562, 0x0000000000000000ULL, 0xE3AD4D6D3D0E075BULL }, /* XSUM_XXH3_testdata[1124] */ + { 562, 0x9E3779B185EBCA8DULL, 0x997790DB7268C105ULL }, /* XSUM_XXH3_testdata[1125] */ + { 563, 0x0000000000000000ULL, 0x8C6DB00EBD173B30ULL }, /* XSUM_XXH3_testdata[1126] */ + { 563, 0x9E3779B185EBCA8DULL, 0x5A3760C73090003AULL }, /* XSUM_XXH3_testdata[1127] */ + { 564, 0x0000000000000000ULL, 0x2005C80D14575E30ULL }, /* XSUM_XXH3_testdata[1128] */ + { 564, 0x9E3779B185EBCA8DULL, 0xD9C3BC69EAED2309ULL }, /* XSUM_XXH3_testdata[1129] */ + { 565, 0x0000000000000000ULL, 0xE89A727244704FF7ULL }, /* XSUM_XXH3_testdata[1130] */ + { 565, 0x9E3779B185EBCA8DULL, 0x9825A8F132990034ULL }, /* XSUM_XXH3_testdata[1131] */ + { 566, 0x0000000000000000ULL, 0x1A52AB32251C9557ULL }, /* XSUM_XXH3_testdata[1132] */ + { 566, 0x9E3779B185EBCA8DULL, 0x1DCE347E35CC8FEFULL }, /* XSUM_XXH3_testdata[1133] */ + { 567, 0x0000000000000000ULL, 0xB4D8818D6B110074ULL }, /* XSUM_XXH3_testdata[1134] */ + { 567, 0x9E3779B185EBCA8DULL, 0xC400C7C2511ADED4ULL }, /* XSUM_XXH3_testdata[1135] */ + { 568, 0x0000000000000000ULL, 0x4567D04C81F74410ULL }, /* XSUM_XXH3_testdata[1136] */ + { 568, 0x9E3779B185EBCA8DULL, 0x82C9D3E937A4D202ULL }, /* XSUM_XXH3_testdata[1137] */ + { 569, 0x0000000000000000ULL, 0x9F46FCDE4E694129ULL }, /* XSUM_XXH3_testdata[1138] */ + { 569, 0x9E3779B185EBCA8DULL, 0x5478F1C83171B116ULL }, /* XSUM_XXH3_testdata[1139] */ + { 570, 0x0000000000000000ULL, 0x7E9832CB3B263913ULL }, /* XSUM_XXH3_testdata[1140] */ + { 570, 0x9E3779B185EBCA8DULL, 0x36B3BC18FAF26B57ULL }, /* XSUM_XXH3_testdata[1141] */ + { 571, 0x0000000000000000ULL, 0x06E35D397BC959CAULL }, /* XSUM_XXH3_testdata[1142] */ + { 571, 0x9E3779B185EBCA8DULL, 0x1FAB1A95B96CC502ULL }, /* XSUM_XXH3_testdata[1143] */ + { 572, 0x0000000000000000ULL, 0x8D2A4A846742E2BAULL }, /* XSUM_XXH3_testdata[1144] */ + { 572, 0x9E3779B185EBCA8DULL, 0x02448E4981CDE029ULL }, /* XSUM_XXH3_testdata[1145] */ + { 573, 0x0000000000000000ULL, 0xCBE7A3979FF1FC62ULL }, /* XSUM_XXH3_testdata[1146] */ + { 573, 0x9E3779B185EBCA8DULL, 0x3E25E8223804D14CULL }, /* XSUM_XXH3_testdata[1147] */ + { 574, 0x0000000000000000ULL, 0xB502D9D56515C069ULL }, /* XSUM_XXH3_testdata[1148] */ + { 574, 0x9E3779B185EBCA8DULL, 0xB4D56D31E1E8CF11ULL }, /* XSUM_XXH3_testdata[1149] */ + { 575, 0x0000000000000000ULL, 0xB00BEEA09D518435ULL }, /* XSUM_XXH3_testdata[1150] */ + { 575, 0x9E3779B185EBCA8DULL, 0x431D4573CE93CA64ULL }, /* XSUM_XXH3_testdata[1151] */ + { 576, 0x0000000000000000ULL, 0x9C875962CB39ACF8ULL }, /* XSUM_XXH3_testdata[1152] */ + { 576, 0x9E3779B185EBCA8DULL, 0x6E01EE5662C31F8FULL }, /* XSUM_XXH3_testdata[1153] */ + { 577, 0x0000000000000000ULL, 0x5807930E9516B291ULL }, /* XSUM_XXH3_testdata[1154] */ + { 577, 0x9E3779B185EBCA8DULL, 0x8F9641AFEB4CD5D0ULL }, /* XSUM_XXH3_testdata[1155] */ + { 578, 0x0000000000000000ULL, 0xDE1728000629CA10ULL }, /* XSUM_XXH3_testdata[1156] */ + { 578, 0x9E3779B185EBCA8DULL, 0xE3748D92F7F15D4DULL }, /* XSUM_XXH3_testdata[1157] */ + { 579, 0x0000000000000000ULL, 0x51DD9598B443A519ULL }, /* XSUM_XXH3_testdata[1158] */ + { 579, 0x9E3779B185EBCA8DULL, 0x5886E7F04DE25E68ULL }, /* XSUM_XXH3_testdata[1159] */ + { 580, 0x0000000000000000ULL, 0xBF2197B313975A9EULL }, /* XSUM_XXH3_testdata[1160] */ + { 580, 0x9E3779B185EBCA8DULL, 0x281615EDE4D279F7ULL }, /* XSUM_XXH3_testdata[1161] */ + { 581, 0x0000000000000000ULL, 0x3A9CD35B97C37ACCULL }, /* XSUM_XXH3_testdata[1162] */ + { 581, 0x9E3779B185EBCA8DULL, 0xC6BDAC18533F698AULL }, /* XSUM_XXH3_testdata[1163] */ + { 582, 0x0000000000000000ULL, 0xCC477503244591EAULL }, /* XSUM_XXH3_testdata[1164] */ + { 582, 0x9E3779B185EBCA8DULL, 0x5ADA79DD285FEACAULL }, /* XSUM_XXH3_testdata[1165] */ + { 583, 0x0000000000000000ULL, 0x570BFCEB0A2E29FDULL }, /* XSUM_XXH3_testdata[1166] */ + { 583, 0x9E3779B185EBCA8DULL, 0xECD1C7A797AF9205ULL }, /* XSUM_XXH3_testdata[1167] */ + { 584, 0x0000000000000000ULL, 0xEE31779866989C18ULL }, /* XSUM_XXH3_testdata[1168] */ + { 584, 0x9E3779B185EBCA8DULL, 0x8FD7F54E85F3D98FULL }, /* XSUM_XXH3_testdata[1169] */ + { 585, 0x0000000000000000ULL, 0xC30C69BD67C5ECACULL }, /* XSUM_XXH3_testdata[1170] */ + { 585, 0x9E3779B185EBCA8DULL, 0xBF4B0483CFA8C409ULL }, /* XSUM_XXH3_testdata[1171] */ + { 586, 0x0000000000000000ULL, 0x29B9D3DDE40F0AB6ULL }, /* XSUM_XXH3_testdata[1172] */ + { 586, 0x9E3779B185EBCA8DULL, 0xFC17FD5172E2134AULL }, /* XSUM_XXH3_testdata[1173] */ + { 587, 0x0000000000000000ULL, 0xCC9C6FC419758916ULL }, /* XSUM_XXH3_testdata[1174] */ + { 587, 0x9E3779B185EBCA8DULL, 0xE36C621E2EF52F4AULL }, /* XSUM_XXH3_testdata[1175] */ + { 588, 0x0000000000000000ULL, 0xE82416D6E4A38F1EULL }, /* XSUM_XXH3_testdata[1176] */ + { 588, 0x9E3779B185EBCA8DULL, 0x9796FEEF63D6A1F9ULL }, /* XSUM_XXH3_testdata[1177] */ + { 589, 0x0000000000000000ULL, 0x7784A4EDF1CAB9F2ULL }, /* XSUM_XXH3_testdata[1178] */ + { 589, 0x9E3779B185EBCA8DULL, 0x65C3F6BACEDF9F19ULL }, /* XSUM_XXH3_testdata[1179] */ + { 590, 0x0000000000000000ULL, 0x51E14499A5DFDFFDULL }, /* XSUM_XXH3_testdata[1180] */ + { 590, 0x9E3779B185EBCA8DULL, 0x3BF4C198955532FFULL }, /* XSUM_XXH3_testdata[1181] */ + { 591, 0x0000000000000000ULL, 0x30D3F0BC9778B4FCULL }, /* XSUM_XXH3_testdata[1182] */ + { 591, 0x9E3779B185EBCA8DULL, 0x59924F04807B6C24ULL }, /* XSUM_XXH3_testdata[1183] */ + { 592, 0x0000000000000000ULL, 0x52C035B4068830C8ULL }, /* XSUM_XXH3_testdata[1184] */ + { 592, 0x9E3779B185EBCA8DULL, 0xF025B3903ED116E2ULL }, /* XSUM_XXH3_testdata[1185] */ + { 593, 0x0000000000000000ULL, 0x93612FB9A62606C6ULL }, /* XSUM_XXH3_testdata[1186] */ + { 593, 0x9E3779B185EBCA8DULL, 0xDA45DA0B9A293E98ULL }, /* XSUM_XXH3_testdata[1187] */ + { 594, 0x0000000000000000ULL, 0xB615A34D0D4BC90DULL }, /* XSUM_XXH3_testdata[1188] */ + { 594, 0x9E3779B185EBCA8DULL, 0x9C6B259A26DF3E48ULL }, /* XSUM_XXH3_testdata[1189] */ + { 595, 0x0000000000000000ULL, 0x263689E084A32D7AULL }, /* XSUM_XXH3_testdata[1190] */ + { 595, 0x9E3779B185EBCA8DULL, 0xD784DE18F3D17A46ULL }, /* XSUM_XXH3_testdata[1191] */ + { 596, 0x0000000000000000ULL, 0x52B178D2628DD9EDULL }, /* XSUM_XXH3_testdata[1192] */ + { 596, 0x9E3779B185EBCA8DULL, 0xCE7C32792F452855ULL }, /* XSUM_XXH3_testdata[1193] */ + { 597, 0x0000000000000000ULL, 0x199A00792322556FULL }, /* XSUM_XXH3_testdata[1194] */ + { 597, 0x9E3779B185EBCA8DULL, 0x6A08469D57D39795ULL }, /* XSUM_XXH3_testdata[1195] */ + { 598, 0x0000000000000000ULL, 0x2CFBF6705B9693D2ULL }, /* XSUM_XXH3_testdata[1196] */ + { 598, 0x9E3779B185EBCA8DULL, 0x68D4E452C95CA39AULL }, /* XSUM_XXH3_testdata[1197] */ + { 599, 0x0000000000000000ULL, 0x96E4AF71C89C294FULL }, /* XSUM_XXH3_testdata[1198] */ + { 599, 0x9E3779B185EBCA8DULL, 0x8FD2DF72FDBEB423ULL }, /* XSUM_XXH3_testdata[1199] */ + { 600, 0x0000000000000000ULL, 0xC0605FE191A5E128ULL }, /* XSUM_XXH3_testdata[1200] */ + { 600, 0x9E3779B185EBCA8DULL, 0x061A23845807828DULL }, /* XSUM_XXH3_testdata[1201] */ + { 601, 0x0000000000000000ULL, 0xB9B52AB20DCFA2F0ULL }, /* XSUM_XXH3_testdata[1202] */ + { 601, 0x9E3779B185EBCA8DULL, 0xA10C9021FBF86BDCULL }, /* XSUM_XXH3_testdata[1203] */ + { 602, 0x0000000000000000ULL, 0x1E681FF1711A71ECULL }, /* XSUM_XXH3_testdata[1204] */ + { 602, 0x9E3779B185EBCA8DULL, 0x77D303A800879170ULL }, /* XSUM_XXH3_testdata[1205] */ + { 603, 0x0000000000000000ULL, 0x274CC56B3599F0FCULL }, /* XSUM_XXH3_testdata[1206] */ + { 603, 0x9E3779B185EBCA8DULL, 0x21A9015EDF9C798FULL }, /* XSUM_XXH3_testdata[1207] */ + { 604, 0x0000000000000000ULL, 0x2DB7105D277670F9ULL }, /* XSUM_XXH3_testdata[1208] */ + { 604, 0x9E3779B185EBCA8DULL, 0x5C54F9021DD5483BULL }, /* XSUM_XXH3_testdata[1209] */ + { 605, 0x0000000000000000ULL, 0xEF875CCA274645EBULL }, /* XSUM_XXH3_testdata[1210] */ + { 605, 0x9E3779B185EBCA8DULL, 0xA87B24AE041D5072ULL }, /* XSUM_XXH3_testdata[1211] */ + { 606, 0x0000000000000000ULL, 0x6095086311E06EBCULL }, /* XSUM_XXH3_testdata[1212] */ + { 606, 0x9E3779B185EBCA8DULL, 0x93B481E1668D07E1ULL }, /* XSUM_XXH3_testdata[1213] */ + { 607, 0x0000000000000000ULL, 0x9BE5048018448255ULL }, /* XSUM_XXH3_testdata[1214] */ + { 607, 0x9E3779B185EBCA8DULL, 0xD5C064AC0461CDEAULL }, /* XSUM_XXH3_testdata[1215] */ + { 608, 0x0000000000000000ULL, 0xE2F2E44992786982ULL }, /* XSUM_XXH3_testdata[1216] */ + { 608, 0x9E3779B185EBCA8DULL, 0x9C9880AF03E8A1E2ULL }, /* XSUM_XXH3_testdata[1217] */ + { 609, 0x0000000000000000ULL, 0x969FA5C5D49A88F6ULL }, /* XSUM_XXH3_testdata[1218] */ + { 609, 0x9E3779B185EBCA8DULL, 0x911FCC4A7ED41156ULL }, /* XSUM_XXH3_testdata[1219] */ + { 610, 0x0000000000000000ULL, 0x69382E0FA6AC3416ULL }, /* XSUM_XXH3_testdata[1220] */ + { 610, 0x9E3779B185EBCA8DULL, 0x2CB911C877F198C1ULL }, /* XSUM_XXH3_testdata[1221] */ + { 611, 0x0000000000000000ULL, 0xA24AC0AD6789B294ULL }, /* XSUM_XXH3_testdata[1222] */ + { 611, 0x9E3779B185EBCA8DULL, 0xDB739ED7A7DB4B64ULL }, /* XSUM_XXH3_testdata[1223] */ + { 612, 0x0000000000000000ULL, 0xAB306415318BF16CULL }, /* XSUM_XXH3_testdata[1224] */ + { 612, 0x9E3779B185EBCA8DULL, 0x572F5BA4414B6021ULL }, /* XSUM_XXH3_testdata[1225] */ + { 613, 0x0000000000000000ULL, 0x928ED52A15B31530ULL }, /* XSUM_XXH3_testdata[1226] */ + { 613, 0x9E3779B185EBCA8DULL, 0x863CEC68751B6645ULL }, /* XSUM_XXH3_testdata[1227] */ + { 614, 0x0000000000000000ULL, 0x11C8C7ACC6789D36ULL }, /* XSUM_XXH3_testdata[1228] */ + { 614, 0x9E3779B185EBCA8DULL, 0x25119504F8C045A1ULL }, /* XSUM_XXH3_testdata[1229] */ + { 615, 0x0000000000000000ULL, 0x3731AE1CEDF5C793ULL }, /* XSUM_XXH3_testdata[1230] */ + { 615, 0x9E3779B185EBCA8DULL, 0x2DE364890B5BAF7CULL }, /* XSUM_XXH3_testdata[1231] */ + { 616, 0x0000000000000000ULL, 0x31EEEFA193131A8CULL }, /* XSUM_XXH3_testdata[1232] */ + { 616, 0x9E3779B185EBCA8DULL, 0xAA10CEDACEAA47AAULL }, /* XSUM_XXH3_testdata[1233] */ + { 617, 0x0000000000000000ULL, 0xFE134367327E31B5ULL }, /* XSUM_XXH3_testdata[1234] */ + { 617, 0x9E3779B185EBCA8DULL, 0x8203304E6842AC80ULL }, /* XSUM_XXH3_testdata[1235] */ + { 618, 0x0000000000000000ULL, 0x2DC6F2E1248E829AULL }, /* XSUM_XXH3_testdata[1236] */ + { 618, 0x9E3779B185EBCA8DULL, 0xE49683C589D9C054ULL }, /* XSUM_XXH3_testdata[1237] */ + { 619, 0x0000000000000000ULL, 0x510613BA8891C1E7ULL }, /* XSUM_XXH3_testdata[1238] */ + { 619, 0x9E3779B185EBCA8DULL, 0x6AFFDCD2935018B4ULL }, /* XSUM_XXH3_testdata[1239] */ + { 620, 0x0000000000000000ULL, 0xED6D6926F7B60375ULL }, /* XSUM_XXH3_testdata[1240] */ + { 620, 0x9E3779B185EBCA8DULL, 0x6541696753FAC9A2ULL }, /* XSUM_XXH3_testdata[1241] */ + { 621, 0x0000000000000000ULL, 0xA0CC39F66497B27FULL }, /* XSUM_XXH3_testdata[1242] */ + { 621, 0x9E3779B185EBCA8DULL, 0xE258768426AD7457ULL }, /* XSUM_XXH3_testdata[1243] */ + { 622, 0x0000000000000000ULL, 0x04F9559C71C5B5A0ULL }, /* XSUM_XXH3_testdata[1244] */ + { 622, 0x9E3779B185EBCA8DULL, 0xB593A3CBBF11D3ADULL }, /* XSUM_XXH3_testdata[1245] */ + { 623, 0x0000000000000000ULL, 0x2883715F1954DEC5ULL }, /* XSUM_XXH3_testdata[1246] */ + { 623, 0x9E3779B185EBCA8DULL, 0xD9A88DC52418885EULL }, /* XSUM_XXH3_testdata[1247] */ + { 624, 0x0000000000000000ULL, 0x7DBD97E325B2A6A7ULL }, /* XSUM_XXH3_testdata[1248] */ + { 624, 0x9E3779B185EBCA8DULL, 0x26CC497601B10736ULL }, /* XSUM_XXH3_testdata[1249] */ + { 625, 0x0000000000000000ULL, 0x1A93910D2CD6D526ULL }, /* XSUM_XXH3_testdata[1250] */ + { 625, 0x9E3779B185EBCA8DULL, 0x571552D3E0744C50ULL }, /* XSUM_XXH3_testdata[1251] */ + { 626, 0x0000000000000000ULL, 0x8CD297D30C025358ULL }, /* XSUM_XXH3_testdata[1252] */ + { 626, 0x9E3779B185EBCA8DULL, 0x0B018AAECFC50E25ULL }, /* XSUM_XXH3_testdata[1253] */ + { 627, 0x0000000000000000ULL, 0x8A26D3B875BC2BB0ULL }, /* XSUM_XXH3_testdata[1254] */ + { 627, 0x9E3779B185EBCA8DULL, 0x7DEC6393395B7F1EULL }, /* XSUM_XXH3_testdata[1255] */ + { 628, 0x0000000000000000ULL, 0x6084625CE9FE419CULL }, /* XSUM_XXH3_testdata[1256] */ + { 628, 0x9E3779B185EBCA8DULL, 0x5B22E55A223B81DAULL }, /* XSUM_XXH3_testdata[1257] */ + { 629, 0x0000000000000000ULL, 0x100D70F4679F9BD3ULL }, /* XSUM_XXH3_testdata[1258] */ + { 629, 0x9E3779B185EBCA8DULL, 0xF48929F1B6A7BCDCULL }, /* XSUM_XXH3_testdata[1259] */ + { 630, 0x0000000000000000ULL, 0xE3D4F6F959A36913ULL }, /* XSUM_XXH3_testdata[1260] */ + { 630, 0x9E3779B185EBCA8DULL, 0x186793413BF41E97ULL }, /* XSUM_XXH3_testdata[1261] */ + { 631, 0x0000000000000000ULL, 0x182716B04D4641A5ULL }, /* XSUM_XXH3_testdata[1262] */ + { 631, 0x9E3779B185EBCA8DULL, 0xF207013BBEA556D9ULL }, /* XSUM_XXH3_testdata[1263] */ + { 632, 0x0000000000000000ULL, 0x710CC7DE160F15FAULL }, /* XSUM_XXH3_testdata[1264] */ + { 632, 0x9E3779B185EBCA8DULL, 0xDB6AB689686906EFULL }, /* XSUM_XXH3_testdata[1265] */ + { 633, 0x0000000000000000ULL, 0x36ACB22C98F2647FULL }, /* XSUM_XXH3_testdata[1266] */ + { 633, 0x9E3779B185EBCA8DULL, 0x8F509869A202DBCFULL }, /* XSUM_XXH3_testdata[1267] */ + { 634, 0x0000000000000000ULL, 0x9164849B45760F60ULL }, /* XSUM_XXH3_testdata[1268] */ + { 634, 0x9E3779B185EBCA8DULL, 0xC9C40A581D114295ULL }, /* XSUM_XXH3_testdata[1269] */ + { 635, 0x0000000000000000ULL, 0x6DA37640B986D7A3ULL }, /* XSUM_XXH3_testdata[1270] */ + { 635, 0x9E3779B185EBCA8DULL, 0x7FAF2E611B096C47ULL }, /* XSUM_XXH3_testdata[1271] */ + { 636, 0x0000000000000000ULL, 0x59BA932720702C98ULL }, /* XSUM_XXH3_testdata[1272] */ + { 636, 0x9E3779B185EBCA8DULL, 0x5EB76A057E164347ULL }, /* XSUM_XXH3_testdata[1273] */ + { 637, 0x0000000000000000ULL, 0x91FA6DEA0E5BE52DULL }, /* XSUM_XXH3_testdata[1274] */ + { 637, 0x9E3779B185EBCA8DULL, 0x6C611F46BA1235BEULL }, /* XSUM_XXH3_testdata[1275] */ + { 638, 0x0000000000000000ULL, 0x4BC1B99ABD8C9B73ULL }, /* XSUM_XXH3_testdata[1276] */ + { 638, 0x9E3779B185EBCA8DULL, 0xFA8DF2479F6BB0AFULL }, /* XSUM_XXH3_testdata[1277] */ + { 639, 0x0000000000000000ULL, 0x035D671E9674A633ULL }, /* XSUM_XXH3_testdata[1278] */ + { 639, 0x9E3779B185EBCA8DULL, 0x9B8EF3F04B909513ULL }, /* XSUM_XXH3_testdata[1279] */ + { 640, 0x0000000000000000ULL, 0xAF4193ABDC5994B3ULL }, /* XSUM_XXH3_testdata[1280] */ + { 640, 0x9E3779B185EBCA8DULL, 0xBCF9335F2DD501DEULL }, /* XSUM_XXH3_testdata[1281] */ + { 641, 0x0000000000000000ULL, 0xE7BA1B930AEEB87DULL }, /* XSUM_XXH3_testdata[1282] */ + { 641, 0x9E3779B185EBCA8DULL, 0x6AF70D9EF44C03C4ULL }, /* XSUM_XXH3_testdata[1283] */ + { 642, 0x0000000000000000ULL, 0x065E9966C6E4276BULL }, /* XSUM_XXH3_testdata[1284] */ + { 642, 0x9E3779B185EBCA8DULL, 0x72A68771C0145270ULL }, /* XSUM_XXH3_testdata[1285] */ + { 643, 0x0000000000000000ULL, 0xD29405F69936AB10ULL }, /* XSUM_XXH3_testdata[1286] */ + { 643, 0x9E3779B185EBCA8DULL, 0xC112DD24C82BE004ULL }, /* XSUM_XXH3_testdata[1287] */ + { 644, 0x0000000000000000ULL, 0x68303D1BCAAEBB23ULL }, /* XSUM_XXH3_testdata[1288] */ + { 644, 0x9E3779B185EBCA8DULL, 0xB1A8A8C331ABF2EFULL }, /* XSUM_XXH3_testdata[1289] */ + { 645, 0x0000000000000000ULL, 0x3801BF30E6386242ULL }, /* XSUM_XXH3_testdata[1290] */ + { 645, 0x9E3779B185EBCA8DULL, 0x688D55D2B4826CD8ULL }, /* XSUM_XXH3_testdata[1291] */ + { 646, 0x0000000000000000ULL, 0x27C2E21CA1AD0BB4ULL }, /* XSUM_XXH3_testdata[1292] */ + { 646, 0x9E3779B185EBCA8DULL, 0xE4FBDF7428E36986ULL }, /* XSUM_XXH3_testdata[1293] */ + { 647, 0x0000000000000000ULL, 0x359159902F4339F9ULL }, /* XSUM_XXH3_testdata[1294] */ + { 647, 0x9E3779B185EBCA8DULL, 0x50E157E377554E5AULL }, /* XSUM_XXH3_testdata[1295] */ + { 648, 0x0000000000000000ULL, 0x901087DE7D84E343ULL }, /* XSUM_XXH3_testdata[1296] */ + { 648, 0x9E3779B185EBCA8DULL, 0x3730E38DCCA57107ULL }, /* XSUM_XXH3_testdata[1297] */ + { 649, 0x0000000000000000ULL, 0xE21B333C11B071ECULL }, /* XSUM_XXH3_testdata[1298] */ + { 649, 0x9E3779B185EBCA8DULL, 0xB69D9DEE1403CCE5ULL }, /* XSUM_XXH3_testdata[1299] */ + { 650, 0x0000000000000000ULL, 0xCC858F79A2DC1D8CULL }, /* XSUM_XXH3_testdata[1300] */ + { 650, 0x9E3779B185EBCA8DULL, 0x9A2C632A20524886ULL }, /* XSUM_XXH3_testdata[1301] */ + { 651, 0x0000000000000000ULL, 0x1D511DBC696D9235ULL }, /* XSUM_XXH3_testdata[1302] */ + { 651, 0x9E3779B185EBCA8DULL, 0xD725252CD3469098ULL }, /* XSUM_XXH3_testdata[1303] */ + { 652, 0x0000000000000000ULL, 0xCDD3E08C5A2DBD5FULL }, /* XSUM_XXH3_testdata[1304] */ + { 652, 0x9E3779B185EBCA8DULL, 0xC14E73EC3F3FD40EULL }, /* XSUM_XXH3_testdata[1305] */ + { 653, 0x0000000000000000ULL, 0x4CC60A74EDFDC4A1ULL }, /* XSUM_XXH3_testdata[1306] */ + { 653, 0x9E3779B185EBCA8DULL, 0x2E3E4D6216BE0652ULL }, /* XSUM_XXH3_testdata[1307] */ + { 654, 0x0000000000000000ULL, 0x61075A6A563EA507ULL }, /* XSUM_XXH3_testdata[1308] */ + { 654, 0x9E3779B185EBCA8DULL, 0x61BCB8DB78710FFFULL }, /* XSUM_XXH3_testdata[1309] */ + { 655, 0x0000000000000000ULL, 0x552CCAB07F52777BULL }, /* XSUM_XXH3_testdata[1310] */ + { 655, 0x9E3779B185EBCA8DULL, 0x7DB56551A2409867ULL }, /* XSUM_XXH3_testdata[1311] */ + { 656, 0x0000000000000000ULL, 0x4ACDE78203A11415ULL }, /* XSUM_XXH3_testdata[1312] */ + { 656, 0x9E3779B185EBCA8DULL, 0x2641A2A30324B9D6ULL }, /* XSUM_XXH3_testdata[1313] */ + { 657, 0x0000000000000000ULL, 0xB5497EA549768344ULL }, /* XSUM_XXH3_testdata[1314] */ + { 657, 0x9E3779B185EBCA8DULL, 0x03174EAE8FAA0FC7ULL }, /* XSUM_XXH3_testdata[1315] */ + { 658, 0x0000000000000000ULL, 0xDC50AEFA830D25A4ULL }, /* XSUM_XXH3_testdata[1316] */ + { 658, 0x9E3779B185EBCA8DULL, 0xA5A8205C97D473BAULL }, /* XSUM_XXH3_testdata[1317] */ + { 659, 0x0000000000000000ULL, 0x9160DC39BA6D1C83ULL }, /* XSUM_XXH3_testdata[1318] */ + { 659, 0x9E3779B185EBCA8DULL, 0x475480CCC8AF958AULL }, /* XSUM_XXH3_testdata[1319] */ + { 660, 0x0000000000000000ULL, 0xA9CA3EF4146E6E9FULL }, /* XSUM_XXH3_testdata[1320] */ + { 660, 0x9E3779B185EBCA8DULL, 0x1682C066F3A8823FULL }, /* XSUM_XXH3_testdata[1321] */ + { 661, 0x0000000000000000ULL, 0x7460AC3EBDB0CC91ULL }, /* XSUM_XXH3_testdata[1322] */ + { 661, 0x9E3779B185EBCA8DULL, 0xF2D25854D8C709DBULL }, /* XSUM_XXH3_testdata[1323] */ + { 662, 0x0000000000000000ULL, 0xECEC3F9135C75502ULL }, /* XSUM_XXH3_testdata[1324] */ + { 662, 0x9E3779B185EBCA8DULL, 0x62499E1401ADE872ULL }, /* XSUM_XXH3_testdata[1325] */ + { 663, 0x0000000000000000ULL, 0x7B127A5A5E93BCD4ULL }, /* XSUM_XXH3_testdata[1326] */ + { 663, 0x9E3779B185EBCA8DULL, 0x89254435FC56ED38ULL }, /* XSUM_XXH3_testdata[1327] */ + { 664, 0x0000000000000000ULL, 0xEB047D893EECD24AULL }, /* XSUM_XXH3_testdata[1328] */ + { 664, 0x9E3779B185EBCA8DULL, 0x1FDDABDB0C5E4364ULL }, /* XSUM_XXH3_testdata[1329] */ + { 665, 0x0000000000000000ULL, 0xF0A35228227E28E3ULL }, /* XSUM_XXH3_testdata[1330] */ + { 665, 0x9E3779B185EBCA8DULL, 0x8B8F8139678108C4ULL }, /* XSUM_XXH3_testdata[1331] */ + { 666, 0x0000000000000000ULL, 0x3D4AA64ECD0C04E8ULL }, /* XSUM_XXH3_testdata[1332] */ + { 666, 0x9E3779B185EBCA8DULL, 0x0ADCCABEAF0D5B84ULL }, /* XSUM_XXH3_testdata[1333] */ + { 667, 0x0000000000000000ULL, 0x744BE46CFA49B58CULL }, /* XSUM_XXH3_testdata[1334] */ + { 667, 0x9E3779B185EBCA8DULL, 0x2B17BF1FEB2FC217ULL }, /* XSUM_XXH3_testdata[1335] */ + { 668, 0x0000000000000000ULL, 0x216603F52972D093ULL }, /* XSUM_XXH3_testdata[1336] */ + { 668, 0x9E3779B185EBCA8DULL, 0x59BA1CD43FFB532BULL }, /* XSUM_XXH3_testdata[1337] */ + { 669, 0x0000000000000000ULL, 0xECAB0778974C7ED3ULL }, /* XSUM_XXH3_testdata[1338] */ + { 669, 0x9E3779B185EBCA8DULL, 0xE835F55EC75A62FFULL }, /* XSUM_XXH3_testdata[1339] */ + { 670, 0x0000000000000000ULL, 0xD605CF61B5D3778CULL }, /* XSUM_XXH3_testdata[1340] */ + { 670, 0x9E3779B185EBCA8DULL, 0x07CFA96D6253A1CFULL }, /* XSUM_XXH3_testdata[1341] */ + { 671, 0x0000000000000000ULL, 0x3894273709446570ULL }, /* XSUM_XXH3_testdata[1342] */ + { 671, 0x9E3779B185EBCA8DULL, 0x2E0B4B534B7AB5B1ULL }, /* XSUM_XXH3_testdata[1343] */ + { 672, 0x0000000000000000ULL, 0x18A8759DD6C8A127ULL }, /* XSUM_XXH3_testdata[1344] */ + { 672, 0x9E3779B185EBCA8DULL, 0xB8729212E63A2B15ULL }, /* XSUM_XXH3_testdata[1345] */ + { 673, 0x0000000000000000ULL, 0xB88636AB6CD1D60EULL }, /* XSUM_XXH3_testdata[1346] */ + { 673, 0x9E3779B185EBCA8DULL, 0x4507642B43344489ULL }, /* XSUM_XXH3_testdata[1347] */ + { 674, 0x0000000000000000ULL, 0x7F252CDA25AD432CULL }, /* XSUM_XXH3_testdata[1348] */ + { 674, 0x9E3779B185EBCA8DULL, 0x254986B183AB63A9ULL }, /* XSUM_XXH3_testdata[1349] */ + { 675, 0x0000000000000000ULL, 0x2DDEA1F39436EC1EULL }, /* XSUM_XXH3_testdata[1350] */ + { 675, 0x9E3779B185EBCA8DULL, 0x97AD2BFD2BF47E12ULL }, /* XSUM_XXH3_testdata[1351] */ + { 676, 0x0000000000000000ULL, 0x51A7EBC85A37A7D8ULL }, /* XSUM_XXH3_testdata[1352] */ + { 676, 0x9E3779B185EBCA8DULL, 0xC7D27F5FDED0BDD7ULL }, /* XSUM_XXH3_testdata[1353] */ + { 677, 0x0000000000000000ULL, 0xCDEACACD82B7D79BULL }, /* XSUM_XXH3_testdata[1354] */ + { 677, 0x9E3779B185EBCA8DULL, 0xBEFB40A4A0A42B54ULL }, /* XSUM_XXH3_testdata[1355] */ + { 678, 0x0000000000000000ULL, 0xCEB3E9F656FF4511ULL }, /* XSUM_XXH3_testdata[1356] */ + { 678, 0x9E3779B185EBCA8DULL, 0x0CD1CB4E9E9311E1ULL }, /* XSUM_XXH3_testdata[1357] */ + { 679, 0x0000000000000000ULL, 0xB7CD9FA73E39ADB4ULL }, /* XSUM_XXH3_testdata[1358] */ + { 679, 0x9E3779B185EBCA8DULL, 0x8BDE0F97D38CD1F1ULL }, /* XSUM_XXH3_testdata[1359] */ + { 680, 0x0000000000000000ULL, 0xD46F82961FFA71E9ULL }, /* XSUM_XXH3_testdata[1360] */ + { 680, 0x9E3779B185EBCA8DULL, 0x5072064A59E7A4BCULL }, /* XSUM_XXH3_testdata[1361] */ + { 681, 0x0000000000000000ULL, 0xE30C10E5DF46B182ULL }, /* XSUM_XXH3_testdata[1362] */ + { 681, 0x9E3779B185EBCA8DULL, 0x9D00A687A910BAF2ULL }, /* XSUM_XXH3_testdata[1363] */ + { 682, 0x0000000000000000ULL, 0x035D625495342A66ULL }, /* XSUM_XXH3_testdata[1364] */ + { 682, 0x9E3779B185EBCA8DULL, 0x9EDE8647E875F7CEULL }, /* XSUM_XXH3_testdata[1365] */ + { 683, 0x0000000000000000ULL, 0xEA3F1217472DC43AULL }, /* XSUM_XXH3_testdata[1366] */ + { 683, 0x9E3779B185EBCA8DULL, 0x9F5B331577B6BFFDULL }, /* XSUM_XXH3_testdata[1367] */ + { 684, 0x0000000000000000ULL, 0xA224A6AD2382D9E4ULL }, /* XSUM_XXH3_testdata[1368] */ + { 684, 0x9E3779B185EBCA8DULL, 0x157C90988CBE0040ULL }, /* XSUM_XXH3_testdata[1369] */ + { 685, 0x0000000000000000ULL, 0x09FE95398CF92B6EULL }, /* XSUM_XXH3_testdata[1370] */ + { 685, 0x9E3779B185EBCA8DULL, 0x53469E830A47BC69ULL }, /* XSUM_XXH3_testdata[1371] */ + { 686, 0x0000000000000000ULL, 0xD60979352D528294ULL }, /* XSUM_XXH3_testdata[1372] */ + { 686, 0x9E3779B185EBCA8DULL, 0x95750C1628B29CAAULL }, /* XSUM_XXH3_testdata[1373] */ + { 687, 0x0000000000000000ULL, 0x70030ABE1BCF260BULL }, /* XSUM_XXH3_testdata[1374] */ + { 687, 0x9E3779B185EBCA8DULL, 0xEBF7C42A6A29302CULL }, /* XSUM_XXH3_testdata[1375] */ + { 688, 0x0000000000000000ULL, 0x28018B42C285A3C0ULL }, /* XSUM_XXH3_testdata[1376] */ + { 688, 0x9E3779B185EBCA8DULL, 0x7C5B9E4E3A833CB7ULL }, /* XSUM_XXH3_testdata[1377] */ + { 689, 0x0000000000000000ULL, 0x751575E6F3102F35ULL }, /* XSUM_XXH3_testdata[1378] */ + { 689, 0x9E3779B185EBCA8DULL, 0xFBED8D0AA15FD5F9ULL }, /* XSUM_XXH3_testdata[1379] */ + { 690, 0x0000000000000000ULL, 0x0760F9D20A8C0124ULL }, /* XSUM_XXH3_testdata[1380] */ + { 690, 0x9E3779B185EBCA8DULL, 0x54C40A8A572FE172ULL }, /* XSUM_XXH3_testdata[1381] */ + { 691, 0x0000000000000000ULL, 0xB43AB84B58366A46ULL }, /* XSUM_XXH3_testdata[1382] */ + { 691, 0x9E3779B185EBCA8DULL, 0xF76B92FA4B5C1EFEULL }, /* XSUM_XXH3_testdata[1383] */ + { 692, 0x0000000000000000ULL, 0x89AD8A04565BF9DFULL }, /* XSUM_XXH3_testdata[1384] */ + { 692, 0x9E3779B185EBCA8DULL, 0xF7662E1884DD2DECULL }, /* XSUM_XXH3_testdata[1385] */ + { 693, 0x0000000000000000ULL, 0x69B4173B5E5C2F1CULL }, /* XSUM_XXH3_testdata[1386] */ + { 693, 0x9E3779B185EBCA8DULL, 0xEC2A35776A1789A3ULL }, /* XSUM_XXH3_testdata[1387] */ + { 694, 0x0000000000000000ULL, 0x6A1A315A4ECC8C20ULL }, /* XSUM_XXH3_testdata[1388] */ + { 694, 0x9E3779B185EBCA8DULL, 0x2BDA8F63EA106A05ULL }, /* XSUM_XXH3_testdata[1389] */ + { 695, 0x0000000000000000ULL, 0x211027A807ED2265ULL }, /* XSUM_XXH3_testdata[1390] */ + { 695, 0x9E3779B185EBCA8DULL, 0x0628573BF1549F0BULL }, /* XSUM_XXH3_testdata[1391] */ + { 696, 0x0000000000000000ULL, 0xEC70CA0661F26C32ULL }, /* XSUM_XXH3_testdata[1392] */ + { 696, 0x9E3779B185EBCA8DULL, 0x041227AC12C6EF7BULL }, /* XSUM_XXH3_testdata[1393] */ + { 697, 0x0000000000000000ULL, 0x92FB87A7D3291AAAULL }, /* XSUM_XXH3_testdata[1394] */ + { 697, 0x9E3779B185EBCA8DULL, 0x654875EB06391799ULL }, /* XSUM_XXH3_testdata[1395] */ + { 698, 0x0000000000000000ULL, 0x4C444C9791D6D5F0ULL }, /* XSUM_XXH3_testdata[1396] */ + { 698, 0x9E3779B185EBCA8DULL, 0xF1A5E46734BDC2A7ULL }, /* XSUM_XXH3_testdata[1397] */ + { 699, 0x0000000000000000ULL, 0x3BC8DF475C4A531FULL }, /* XSUM_XXH3_testdata[1398] */ + { 699, 0x9E3779B185EBCA8DULL, 0x47773131B0B339A2ULL }, /* XSUM_XXH3_testdata[1399] */ + { 700, 0x0000000000000000ULL, 0xFA90F040F92A7E71ULL }, /* XSUM_XXH3_testdata[1400] */ + { 700, 0x9E3779B185EBCA8DULL, 0x8E93D45B99763DE8ULL }, /* XSUM_XXH3_testdata[1401] */ + { 701, 0x0000000000000000ULL, 0x22730147C96C49C1ULL }, /* XSUM_XXH3_testdata[1402] */ + { 701, 0x9E3779B185EBCA8DULL, 0x07D7225D37BE56B6ULL }, /* XSUM_XXH3_testdata[1403] */ + { 702, 0x0000000000000000ULL, 0x1C9A22BD51A0F347ULL }, /* XSUM_XXH3_testdata[1404] */ + { 702, 0x9E3779B185EBCA8DULL, 0x3979E3CCB74F6B99ULL }, /* XSUM_XXH3_testdata[1405] */ + { 703, 0x0000000000000000ULL, 0x683E5E6D58E06485ULL }, /* XSUM_XXH3_testdata[1406] */ + { 703, 0x9E3779B185EBCA8DULL, 0x69E61408E3346451ULL }, /* XSUM_XXH3_testdata[1407] */ + { 704, 0x0000000000000000ULL, 0x53D0007023B75557ULL }, /* XSUM_XXH3_testdata[1408] */ + { 704, 0x9E3779B185EBCA8DULL, 0x2B2D21E690DC3E11ULL }, /* XSUM_XXH3_testdata[1409] */ + { 705, 0x0000000000000000ULL, 0xBA8F3D7D77F20C8EULL }, /* XSUM_XXH3_testdata[1410] */ + { 705, 0x9E3779B185EBCA8DULL, 0x88D85FCD88755E7DULL }, /* XSUM_XXH3_testdata[1411] */ + { 706, 0x0000000000000000ULL, 0xA695E503AEE57121ULL }, /* XSUM_XXH3_testdata[1412] */ + { 706, 0x9E3779B185EBCA8DULL, 0x78DA7B809A94BCFEULL }, /* XSUM_XXH3_testdata[1413] */ + { 707, 0x0000000000000000ULL, 0x95433111932AF80EULL }, /* XSUM_XXH3_testdata[1414] */ + { 707, 0x9E3779B185EBCA8DULL, 0x9FA9DAABD6433C76ULL }, /* XSUM_XXH3_testdata[1415] */ + { 708, 0x0000000000000000ULL, 0x497AF37942A68AAEULL }, /* XSUM_XXH3_testdata[1416] */ + { 708, 0x9E3779B185EBCA8DULL, 0xA3EEF16DFEBBE660ULL }, /* XSUM_XXH3_testdata[1417] */ + { 709, 0x0000000000000000ULL, 0xB361F79C5F877D03ULL }, /* XSUM_XXH3_testdata[1418] */ + { 709, 0x9E3779B185EBCA8DULL, 0xA7814A983164B859ULL }, /* XSUM_XXH3_testdata[1419] */ + { 710, 0x0000000000000000ULL, 0xEF085BFFE73EF728ULL }, /* XSUM_XXH3_testdata[1420] */ + { 710, 0x9E3779B185EBCA8DULL, 0xBB3A16860A419A09ULL }, /* XSUM_XXH3_testdata[1421] */ + { 711, 0x0000000000000000ULL, 0xE9CB41A0C8A5344BULL }, /* XSUM_XXH3_testdata[1422] */ + { 711, 0x9E3779B185EBCA8DULL, 0x3BF91CBBD165BF19ULL }, /* XSUM_XXH3_testdata[1423] */ + { 712, 0x0000000000000000ULL, 0x094B75D2DCC59B16ULL }, /* XSUM_XXH3_testdata[1424] */ + { 712, 0x9E3779B185EBCA8DULL, 0xC953ADD65FC87D28ULL }, /* XSUM_XXH3_testdata[1425] */ + { 713, 0x0000000000000000ULL, 0x687E011056B168DFULL }, /* XSUM_XXH3_testdata[1426] */ + { 713, 0x9E3779B185EBCA8DULL, 0x7D0E2509C09FF864ULL }, /* XSUM_XXH3_testdata[1427] */ + { 714, 0x0000000000000000ULL, 0x216776767DE94CCDULL }, /* XSUM_XXH3_testdata[1428] */ + { 714, 0x9E3779B185EBCA8DULL, 0x7B3B463549FC1B73ULL }, /* XSUM_XXH3_testdata[1429] */ + { 715, 0x0000000000000000ULL, 0x8FE72DFB0BBC68AAULL }, /* XSUM_XXH3_testdata[1430] */ + { 715, 0x9E3779B185EBCA8DULL, 0x335630133E190194ULL }, /* XSUM_XXH3_testdata[1431] */ + { 716, 0x0000000000000000ULL, 0xC21F5B936CBB11A1ULL }, /* XSUM_XXH3_testdata[1432] */ + { 716, 0x9E3779B185EBCA8DULL, 0x5F2ED15F53E8FA00ULL }, /* XSUM_XXH3_testdata[1433] */ + { 717, 0x0000000000000000ULL, 0xF59584C3D5568930ULL }, /* XSUM_XXH3_testdata[1434] */ + { 717, 0x9E3779B185EBCA8DULL, 0x7D8EC8EC3A31B3F9ULL }, /* XSUM_XXH3_testdata[1435] */ + { 718, 0x0000000000000000ULL, 0x02E45FA9460EEC70ULL }, /* XSUM_XXH3_testdata[1436] */ + { 718, 0x9E3779B185EBCA8DULL, 0x3C53E9098C60D822ULL }, /* XSUM_XXH3_testdata[1437] */ + { 719, 0x0000000000000000ULL, 0x14B1E4306412BA03ULL }, /* XSUM_XXH3_testdata[1438] */ + { 719, 0x9E3779B185EBCA8DULL, 0xE8B262397EA54296ULL }, /* XSUM_XXH3_testdata[1439] */ + { 720, 0x0000000000000000ULL, 0xED83840F58017914ULL }, /* XSUM_XXH3_testdata[1440] */ + { 720, 0x9E3779B185EBCA8DULL, 0x85788A34A91DC62EULL }, /* XSUM_XXH3_testdata[1441] */ + { 721, 0x0000000000000000ULL, 0x7EA1D2F1FF21A780ULL }, /* XSUM_XXH3_testdata[1442] */ + { 721, 0x9E3779B185EBCA8DULL, 0xA0F80C3300C72A56ULL }, /* XSUM_XXH3_testdata[1443] */ + { 722, 0x0000000000000000ULL, 0xEE7B0C11265C6606ULL }, /* XSUM_XXH3_testdata[1444] */ + { 722, 0x9E3779B185EBCA8DULL, 0x6BCC91CE53889314ULL }, /* XSUM_XXH3_testdata[1445] */ + { 723, 0x0000000000000000ULL, 0x4B0C248133CD0BD2ULL }, /* XSUM_XXH3_testdata[1446] */ + { 723, 0x9E3779B185EBCA8DULL, 0x5CDA80B8B9BF45C6ULL }, /* XSUM_XXH3_testdata[1447] */ + { 724, 0x0000000000000000ULL, 0x16EC32EFED4168F5ULL }, /* XSUM_XXH3_testdata[1448] */ + { 724, 0x9E3779B185EBCA8DULL, 0xED554AA6AF697924ULL }, /* XSUM_XXH3_testdata[1449] */ + { 725, 0x0000000000000000ULL, 0xA406E09172F9EB13ULL }, /* XSUM_XXH3_testdata[1450] */ + { 725, 0x9E3779B185EBCA8DULL, 0x4C6E9261B76B7E85ULL }, /* XSUM_XXH3_testdata[1451] */ + { 726, 0x0000000000000000ULL, 0x8CD030D1E9BC0811ULL }, /* XSUM_XXH3_testdata[1452] */ + { 726, 0x9E3779B185EBCA8DULL, 0x4727049FFBF3E305ULL }, /* XSUM_XXH3_testdata[1453] */ + { 727, 0x0000000000000000ULL, 0xEC28AFAE764DD4DEULL }, /* XSUM_XXH3_testdata[1454] */ + { 727, 0x9E3779B185EBCA8DULL, 0xA4786C7FAE624BC1ULL }, /* XSUM_XXH3_testdata[1455] */ + { 728, 0x0000000000000000ULL, 0xFEF967AEF2EDDC63ULL }, /* XSUM_XXH3_testdata[1456] */ + { 728, 0x9E3779B185EBCA8DULL, 0x1E193FA0B4F380EDULL }, /* XSUM_XXH3_testdata[1457] */ + { 729, 0x0000000000000000ULL, 0x96ED3CD548BA4C5BULL }, /* XSUM_XXH3_testdata[1458] */ + { 729, 0x9E3779B185EBCA8DULL, 0x7F02264499CCCB02ULL }, /* XSUM_XXH3_testdata[1459] */ + { 730, 0x0000000000000000ULL, 0x1D81621D1F630AE2ULL }, /* XSUM_XXH3_testdata[1460] */ + { 730, 0x9E3779B185EBCA8DULL, 0x681572B9DBB3A148ULL }, /* XSUM_XXH3_testdata[1461] */ + { 731, 0x0000000000000000ULL, 0x4C272DA966A67BBCULL }, /* XSUM_XXH3_testdata[1462] */ + { 731, 0x9E3779B185EBCA8DULL, 0xCB23E03A22F5BE9DULL }, /* XSUM_XXH3_testdata[1463] */ + { 732, 0x0000000000000000ULL, 0xDF2A8961367E9B90ULL }, /* XSUM_XXH3_testdata[1464] */ + { 732, 0x9E3779B185EBCA8DULL, 0x26C503C936FAD341ULL }, /* XSUM_XXH3_testdata[1465] */ + { 733, 0x0000000000000000ULL, 0x52ACA8E777AADC52ULL }, /* XSUM_XXH3_testdata[1466] */ + { 733, 0x9E3779B185EBCA8DULL, 0xAB4A761E1084A54FULL }, /* XSUM_XXH3_testdata[1467] */ + { 734, 0x0000000000000000ULL, 0xC315DE7F85E665C2ULL }, /* XSUM_XXH3_testdata[1468] */ + { 734, 0x9E3779B185EBCA8DULL, 0x2EEF83B7CE5B97B7ULL }, /* XSUM_XXH3_testdata[1469] */ + { 735, 0x0000000000000000ULL, 0x696742B385A6E2BAULL }, /* XSUM_XXH3_testdata[1470] */ + { 735, 0x9E3779B185EBCA8DULL, 0x4B696374DA543441ULL }, /* XSUM_XXH3_testdata[1471] */ + { 736, 0x0000000000000000ULL, 0xD7B4138320D23C84ULL }, /* XSUM_XXH3_testdata[1472] */ + { 736, 0x9E3779B185EBCA8DULL, 0x32DF5CA9FD07BF2FULL }, /* XSUM_XXH3_testdata[1473] */ + { 737, 0x0000000000000000ULL, 0xDC92E52B55C9CA42ULL }, /* XSUM_XXH3_testdata[1474] */ + { 737, 0x9E3779B185EBCA8DULL, 0x7BF34A46BE8900C8ULL }, /* XSUM_XXH3_testdata[1475] */ + { 738, 0x0000000000000000ULL, 0x35F7C8B6785F65C6ULL }, /* XSUM_XXH3_testdata[1476] */ + { 738, 0x9E3779B185EBCA8DULL, 0x3D0C9FB3364ED126ULL }, /* XSUM_XXH3_testdata[1477] */ + { 739, 0x0000000000000000ULL, 0x9F242314D208AD5FULL }, /* XSUM_XXH3_testdata[1478] */ + { 739, 0x9E3779B185EBCA8DULL, 0x6484D8248103312AULL }, /* XSUM_XXH3_testdata[1479] */ + { 740, 0x0000000000000000ULL, 0x08DE90C5C2B1ADCEULL }, /* XSUM_XXH3_testdata[1480] */ + { 740, 0x9E3779B185EBCA8DULL, 0x07BFDFEB324E0895ULL }, /* XSUM_XXH3_testdata[1481] */ + { 741, 0x0000000000000000ULL, 0x2C25953F4B532728ULL }, /* XSUM_XXH3_testdata[1482] */ + { 741, 0x9E3779B185EBCA8DULL, 0xFB971F5525E36290ULL }, /* XSUM_XXH3_testdata[1483] */ + { 742, 0x0000000000000000ULL, 0xACB071F7BD83FBBDULL }, /* XSUM_XXH3_testdata[1484] */ + { 742, 0x9E3779B185EBCA8DULL, 0x1713A948F45BF88FULL }, /* XSUM_XXH3_testdata[1485] */ + { 743, 0x0000000000000000ULL, 0xA5DF5074C7438126ULL }, /* XSUM_XXH3_testdata[1486] */ + { 743, 0x9E3779B185EBCA8DULL, 0xF250DDBB481132FAULL }, /* XSUM_XXH3_testdata[1487] */ + { 744, 0x0000000000000000ULL, 0x23853C8A2E481D04ULL }, /* XSUM_XXH3_testdata[1488] */ + { 744, 0x9E3779B185EBCA8DULL, 0x6FED3CD988EA71E7ULL }, /* XSUM_XXH3_testdata[1489] */ + { 745, 0x0000000000000000ULL, 0xD53322CC8C5F41F9ULL }, /* XSUM_XXH3_testdata[1490] */ + { 745, 0x9E3779B185EBCA8DULL, 0xD50525326BE0114EULL }, /* XSUM_XXH3_testdata[1491] */ + { 746, 0x0000000000000000ULL, 0x34B8A165AAE2C20AULL }, /* XSUM_XXH3_testdata[1492] */ + { 746, 0x9E3779B185EBCA8DULL, 0x619061F495722A00ULL }, /* XSUM_XXH3_testdata[1493] */ + { 747, 0x0000000000000000ULL, 0x12741F5AFC125FF4ULL }, /* XSUM_XXH3_testdata[1494] */ + { 747, 0x9E3779B185EBCA8DULL, 0x9D160E881BB7E460ULL }, /* XSUM_XXH3_testdata[1495] */ + { 748, 0x0000000000000000ULL, 0xDFD5F9C3C7FAADE8ULL }, /* XSUM_XXH3_testdata[1496] */ + { 748, 0x9E3779B185EBCA8DULL, 0xEC730BDE394EADBFULL }, /* XSUM_XXH3_testdata[1497] */ + { 749, 0x0000000000000000ULL, 0xA2FDB44EBA93CABEULL }, /* XSUM_XXH3_testdata[1498] */ + { 749, 0x9E3779B185EBCA8DULL, 0xF5BD8056B5542799ULL }, /* XSUM_XXH3_testdata[1499] */ + { 750, 0x0000000000000000ULL, 0x2FE3032178562F37ULL }, /* XSUM_XXH3_testdata[1500] */ + { 750, 0x9E3779B185EBCA8DULL, 0x5FCC94427E030C74ULL }, /* XSUM_XXH3_testdata[1501] */ + { 751, 0x0000000000000000ULL, 0x7805A2A5D1955490ULL }, /* XSUM_XXH3_testdata[1502] */ + { 751, 0x9E3779B185EBCA8DULL, 0x3E7AD96124FF9130ULL }, /* XSUM_XXH3_testdata[1503] */ + { 752, 0x0000000000000000ULL, 0xF712ADB98B36CB0CULL }, /* XSUM_XXH3_testdata[1504] */ + { 752, 0x9E3779B185EBCA8DULL, 0xD21680D87EA3DC86ULL }, /* XSUM_XXH3_testdata[1505] */ + { 753, 0x0000000000000000ULL, 0x95A99222BCDD6791ULL }, /* XSUM_XXH3_testdata[1506] */ + { 753, 0x9E3779B185EBCA8DULL, 0xC86EDAB23BFFDC95ULL }, /* XSUM_XXH3_testdata[1507] */ + { 754, 0x0000000000000000ULL, 0x607E9BA59C234233ULL }, /* XSUM_XXH3_testdata[1508] */ + { 754, 0x9E3779B185EBCA8DULL, 0x50B63817B74F84EBULL }, /* XSUM_XXH3_testdata[1509] */ + { 755, 0x0000000000000000ULL, 0x38A1FCEADBD7C9B1ULL }, /* XSUM_XXH3_testdata[1510] */ + { 755, 0x9E3779B185EBCA8DULL, 0x159E0FF2771D4013ULL }, /* XSUM_XXH3_testdata[1511] */ + { 756, 0x0000000000000000ULL, 0x78C7F2E16DB1BAF2ULL }, /* XSUM_XXH3_testdata[1512] */ + { 756, 0x9E3779B185EBCA8DULL, 0x11A054CB984490EEULL }, /* XSUM_XXH3_testdata[1513] */ + { 757, 0x0000000000000000ULL, 0xCB66A77F29B9F0E6ULL }, /* XSUM_XXH3_testdata[1514] */ + { 757, 0x9E3779B185EBCA8DULL, 0xE7F79D2B525A67BDULL }, /* XSUM_XXH3_testdata[1515] */ + { 758, 0x0000000000000000ULL, 0xDFBE16056C872D93ULL }, /* XSUM_XXH3_testdata[1516] */ + { 758, 0x9E3779B185EBCA8DULL, 0x9766A2F001002D4CULL }, /* XSUM_XXH3_testdata[1517] */ + { 759, 0x0000000000000000ULL, 0xAB6F81845F5D0F86ULL }, /* XSUM_XXH3_testdata[1518] */ + { 759, 0x9E3779B185EBCA8DULL, 0x382DEEBBAF4F431EULL }, /* XSUM_XXH3_testdata[1519] */ + { 760, 0x0000000000000000ULL, 0x10C0A37BDCCD259AULL }, /* XSUM_XXH3_testdata[1520] */ + { 760, 0x9E3779B185EBCA8DULL, 0xDD9BDF9CF4E59946ULL }, /* XSUM_XXH3_testdata[1521] */ + { 761, 0x0000000000000000ULL, 0xF7CEBE29B198FD30ULL }, /* XSUM_XXH3_testdata[1522] */ + { 761, 0x9E3779B185EBCA8DULL, 0xA869E57FDB1C8060ULL }, /* XSUM_XXH3_testdata[1523] */ + { 762, 0x0000000000000000ULL, 0x2907C6DB629AAD4EULL }, /* XSUM_XXH3_testdata[1524] */ + { 762, 0x9E3779B185EBCA8DULL, 0x76AED4086B1D9AE8ULL }, /* XSUM_XXH3_testdata[1525] */ + { 763, 0x0000000000000000ULL, 0x89384DD94BF93B2CULL }, /* XSUM_XXH3_testdata[1526] */ + { 763, 0x9E3779B185EBCA8DULL, 0x48DC2511E0721282ULL }, /* XSUM_XXH3_testdata[1527] */ + { 764, 0x0000000000000000ULL, 0x6C584E8B8F0D56C5ULL }, /* XSUM_XXH3_testdata[1528] */ + { 764, 0x9E3779B185EBCA8DULL, 0xB235C4DEC2AC7B59ULL }, /* XSUM_XXH3_testdata[1529] */ + { 765, 0x0000000000000000ULL, 0x9D329F204D5B9C7AULL }, /* XSUM_XXH3_testdata[1530] */ + { 765, 0x9E3779B185EBCA8DULL, 0x60A6B3319C706215ULL }, /* XSUM_XXH3_testdata[1531] */ + { 766, 0x0000000000000000ULL, 0x526A03E0F4B121FDULL }, /* XSUM_XXH3_testdata[1532] */ + { 766, 0x9E3779B185EBCA8DULL, 0x6B18AC32399D2335ULL }, /* XSUM_XXH3_testdata[1533] */ + { 767, 0x0000000000000000ULL, 0xA8D2D803378C6FC2ULL }, /* XSUM_XXH3_testdata[1534] */ + { 767, 0x9E3779B185EBCA8DULL, 0x8CFC6C461EF19D9AULL }, /* XSUM_XXH3_testdata[1535] */ + { 768, 0x0000000000000000ULL, 0x6CBE42E950F7426BULL }, /* XSUM_XXH3_testdata[1536] */ + { 768, 0x9E3779B185EBCA8DULL, 0x641FB8CA9341034CULL }, /* XSUM_XXH3_testdata[1537] */ + { 769, 0x0000000000000000ULL, 0x32302CBB53D45781ULL }, /* XSUM_XXH3_testdata[1538] */ + { 769, 0x9E3779B185EBCA8DULL, 0x46F363023665B8E2ULL }, /* XSUM_XXH3_testdata[1539] */ + { 770, 0x0000000000000000ULL, 0xA7C29FBEB87D7D05ULL }, /* XSUM_XXH3_testdata[1540] */ + { 770, 0x9E3779B185EBCA8DULL, 0x9EBEC5CF3343DCB9ULL }, /* XSUM_XXH3_testdata[1541] */ + { 771, 0x0000000000000000ULL, 0xA2B5189BB35568A3ULL }, /* XSUM_XXH3_testdata[1542] */ + { 771, 0x9E3779B185EBCA8DULL, 0xA02674257CE7D16FULL }, /* XSUM_XXH3_testdata[1543] */ + { 772, 0x0000000000000000ULL, 0xFD17411AF7196623ULL }, /* XSUM_XXH3_testdata[1544] */ + { 772, 0x9E3779B185EBCA8DULL, 0x387E340E383DF06CULL }, /* XSUM_XXH3_testdata[1545] */ + { 773, 0x0000000000000000ULL, 0xF55C3823F812FC79ULL }, /* XSUM_XXH3_testdata[1546] */ + { 773, 0x9E3779B185EBCA8DULL, 0x4925C59F27F294A6ULL }, /* XSUM_XXH3_testdata[1547] */ + { 774, 0x0000000000000000ULL, 0xB6CA494D3B2F1B1CULL }, /* XSUM_XXH3_testdata[1548] */ + { 774, 0x9E3779B185EBCA8DULL, 0xF81CD4D37406771DULL }, /* XSUM_XXH3_testdata[1549] */ + { 775, 0x0000000000000000ULL, 0xECC23F92B06220D0ULL }, /* XSUM_XXH3_testdata[1550] */ + { 775, 0x9E3779B185EBCA8DULL, 0x3948E4E207032161ULL }, /* XSUM_XXH3_testdata[1551] */ + { 776, 0x0000000000000000ULL, 0x0221379DCD811436ULL }, /* XSUM_XXH3_testdata[1552] */ + { 776, 0x9E3779B185EBCA8DULL, 0x043D961C4F99EB6CULL }, /* XSUM_XXH3_testdata[1553] */ + { 777, 0x0000000000000000ULL, 0x26496DD8CABB9F7CULL }, /* XSUM_XXH3_testdata[1554] */ + { 777, 0x9E3779B185EBCA8DULL, 0x2EF9ADA4949E4655ULL }, /* XSUM_XXH3_testdata[1555] */ + { 778, 0x0000000000000000ULL, 0xA7CEE75345E7EDD8ULL }, /* XSUM_XXH3_testdata[1556] */ + { 778, 0x9E3779B185EBCA8DULL, 0xC2AB2FAB6FB83FAEULL }, /* XSUM_XXH3_testdata[1557] */ + { 779, 0x0000000000000000ULL, 0x696C9B045F8B19CCULL }, /* XSUM_XXH3_testdata[1558] */ + { 779, 0x9E3779B185EBCA8DULL, 0x2C184694FC2E8D5FULL }, /* XSUM_XXH3_testdata[1559] */ + { 780, 0x0000000000000000ULL, 0x9BA5278D85378C52ULL }, /* XSUM_XXH3_testdata[1560] */ + { 780, 0x9E3779B185EBCA8DULL, 0xEB6CBC00BCA659D7ULL }, /* XSUM_XXH3_testdata[1561] */ + { 781, 0x0000000000000000ULL, 0xF9184209248E82E3ULL }, /* XSUM_XXH3_testdata[1562] */ + { 781, 0x9E3779B185EBCA8DULL, 0x5F4A4AA5AEFE2931ULL }, /* XSUM_XXH3_testdata[1563] */ + { 782, 0x0000000000000000ULL, 0x6B7FC3325D489F56ULL }, /* XSUM_XXH3_testdata[1564] */ + { 782, 0x9E3779B185EBCA8DULL, 0xDDBFA453013EDC74ULL }, /* XSUM_XXH3_testdata[1565] */ + { 783, 0x0000000000000000ULL, 0x1774F59A1F9C5338ULL }, /* XSUM_XXH3_testdata[1566] */ + { 783, 0x9E3779B185EBCA8DULL, 0x0F11F6B0AFA9CC8DULL }, /* XSUM_XXH3_testdata[1567] */ + { 784, 0x0000000000000000ULL, 0xB57CCEA58F2CC788ULL }, /* XSUM_XXH3_testdata[1568] */ + { 784, 0x9E3779B185EBCA8DULL, 0xD43B4680051F86E8ULL }, /* XSUM_XXH3_testdata[1569] */ + { 785, 0x0000000000000000ULL, 0x00DC4E5CE55E70E8ULL }, /* XSUM_XXH3_testdata[1570] */ + { 785, 0x9E3779B185EBCA8DULL, 0x909F2A3E6FB89892ULL }, /* XSUM_XXH3_testdata[1571] */ + { 786, 0x0000000000000000ULL, 0xE06ABD80AAB54EBCULL }, /* XSUM_XXH3_testdata[1572] */ + { 786, 0x9E3779B185EBCA8DULL, 0xDBD9B4BD30764A2AULL }, /* XSUM_XXH3_testdata[1573] */ + { 787, 0x0000000000000000ULL, 0x06FC7F68ACEA72D7ULL }, /* XSUM_XXH3_testdata[1574] */ + { 787, 0x9E3779B185EBCA8DULL, 0xA59443084988D4BBULL }, /* XSUM_XXH3_testdata[1575] */ + { 788, 0x0000000000000000ULL, 0x20C615B56B541F1EULL }, /* XSUM_XXH3_testdata[1576] */ + { 788, 0x9E3779B185EBCA8DULL, 0x0A131B8A3F37A8B5ULL }, /* XSUM_XXH3_testdata[1577] */ + { 789, 0x0000000000000000ULL, 0x8A4F76B84730D76AULL }, /* XSUM_XXH3_testdata[1578] */ + { 789, 0x9E3779B185EBCA8DULL, 0x727463C5A35EAB18ULL }, /* XSUM_XXH3_testdata[1579] */ + { 790, 0x0000000000000000ULL, 0xB43FAECFB4DED4C6ULL }, /* XSUM_XXH3_testdata[1580] */ + { 790, 0x9E3779B185EBCA8DULL, 0x97A2FCAAF259E7F0ULL }, /* XSUM_XXH3_testdata[1581] */ + { 791, 0x0000000000000000ULL, 0x87DB4CC16F8F9834ULL }, /* XSUM_XXH3_testdata[1582] */ + { 791, 0x9E3779B185EBCA8DULL, 0xF0ED99F6368E86B4ULL }, /* XSUM_XXH3_testdata[1583] */ + { 792, 0x0000000000000000ULL, 0x397EC5B31E863D4EULL }, /* XSUM_XXH3_testdata[1584] */ + { 792, 0x9E3779B185EBCA8DULL, 0x4F1F799401E2560FULL }, /* XSUM_XXH3_testdata[1585] */ + { 793, 0x0000000000000000ULL, 0x63C07847897714FAULL }, /* XSUM_XXH3_testdata[1586] */ + { 793, 0x9E3779B185EBCA8DULL, 0xA3644EB4E9170C70ULL }, /* XSUM_XXH3_testdata[1587] */ + { 794, 0x0000000000000000ULL, 0x0EDFD2BFC590389DULL }, /* XSUM_XXH3_testdata[1588] */ + { 794, 0x9E3779B185EBCA8DULL, 0x3D759DC347BBB21CULL }, /* XSUM_XXH3_testdata[1589] */ + { 795, 0x0000000000000000ULL, 0x1AB2EC32F024F822ULL }, /* XSUM_XXH3_testdata[1590] */ + { 795, 0x9E3779B185EBCA8DULL, 0x734CC4590C829DBEULL }, /* XSUM_XXH3_testdata[1591] */ + { 796, 0x0000000000000000ULL, 0x5BE1AC90F9DE8DA8ULL }, /* XSUM_XXH3_testdata[1592] */ + { 796, 0x9E3779B185EBCA8DULL, 0x78B04E7613AFD46CULL }, /* XSUM_XXH3_testdata[1593] */ + { 797, 0x0000000000000000ULL, 0xB4066986444208B4ULL }, /* XSUM_XXH3_testdata[1594] */ + { 797, 0x9E3779B185EBCA8DULL, 0xEEA265C3C3AFDD45ULL }, /* XSUM_XXH3_testdata[1595] */ + { 798, 0x0000000000000000ULL, 0x1815460B80B6EB6CULL }, /* XSUM_XXH3_testdata[1596] */ + { 798, 0x9E3779B185EBCA8DULL, 0x3C89DBB3A59579F1ULL }, /* XSUM_XXH3_testdata[1597] */ + { 799, 0x0000000000000000ULL, 0x86BB41D5B99C19DCULL }, /* XSUM_XXH3_testdata[1598] */ + { 799, 0x9E3779B185EBCA8DULL, 0x5501F8646ADF4F5DULL }, /* XSUM_XXH3_testdata[1599] */ + { 800, 0x0000000000000000ULL, 0x5B095CEB58C8784CULL }, /* XSUM_XXH3_testdata[1600] */ + { 800, 0x9E3779B185EBCA8DULL, 0x643775681D53EF59ULL }, /* XSUM_XXH3_testdata[1601] */ + { 801, 0x0000000000000000ULL, 0x2F828D114D494E29ULL }, /* XSUM_XXH3_testdata[1602] */ + { 801, 0x9E3779B185EBCA8DULL, 0x4EB392F9A436ECE5ULL }, /* XSUM_XXH3_testdata[1603] */ + { 802, 0x0000000000000000ULL, 0x846819585B282067ULL }, /* XSUM_XXH3_testdata[1604] */ + { 802, 0x9E3779B185EBCA8DULL, 0xF0838E955138892DULL }, /* XSUM_XXH3_testdata[1605] */ + { 803, 0x0000000000000000ULL, 0x4812CC768ECBB73FULL }, /* XSUM_XXH3_testdata[1606] */ + { 803, 0x9E3779B185EBCA8DULL, 0x374E89D7FA22ECD4ULL }, /* XSUM_XXH3_testdata[1607] */ + { 804, 0x0000000000000000ULL, 0x22137EFB3AC27524ULL }, /* XSUM_XXH3_testdata[1608] */ + { 804, 0x9E3779B185EBCA8DULL, 0xE836C6165D3830FEULL }, /* XSUM_XXH3_testdata[1609] */ + { 805, 0x0000000000000000ULL, 0xB4BB8B42141FA5D0ULL }, /* XSUM_XXH3_testdata[1610] */ + { 805, 0x9E3779B185EBCA8DULL, 0x0E55700B1E667558ULL }, /* XSUM_XXH3_testdata[1611] */ + { 806, 0x0000000000000000ULL, 0x6D4EF8C4EC4075E2ULL }, /* XSUM_XXH3_testdata[1612] */ + { 806, 0x9E3779B185EBCA8DULL, 0x934F16B568FE179AULL }, /* XSUM_XXH3_testdata[1613] */ + { 807, 0x0000000000000000ULL, 0x206A0792F4FCCCACULL }, /* XSUM_XXH3_testdata[1614] */ + { 807, 0x9E3779B185EBCA8DULL, 0xEB6796CE25E33E6AULL }, /* XSUM_XXH3_testdata[1615] */ + { 808, 0x0000000000000000ULL, 0x68957C67C4333426ULL }, /* XSUM_XXH3_testdata[1616] */ + { 808, 0x9E3779B185EBCA8DULL, 0x9E97369B7C0A90F1ULL }, /* XSUM_XXH3_testdata[1617] */ + { 809, 0x0000000000000000ULL, 0xC17753BA8D4E5CB2ULL }, /* XSUM_XXH3_testdata[1618] */ + { 809, 0x9E3779B185EBCA8DULL, 0xDCC4A9FD8373CA8AULL }, /* XSUM_XXH3_testdata[1619] */ + { 810, 0x0000000000000000ULL, 0x8A616D90630A4988ULL }, /* XSUM_XXH3_testdata[1620] */ + { 810, 0x9E3779B185EBCA8DULL, 0x2144D13C73C4CA74ULL }, /* XSUM_XXH3_testdata[1621] */ + { 811, 0x0000000000000000ULL, 0x536C6DCDFFD6E969ULL }, /* XSUM_XXH3_testdata[1622] */ + { 811, 0x9E3779B185EBCA8DULL, 0xAF2825AFCA7BB3D0ULL }, /* XSUM_XXH3_testdata[1623] */ + { 812, 0x0000000000000000ULL, 0xD7A63BB3914CD718ULL }, /* XSUM_XXH3_testdata[1624] */ + { 812, 0x9E3779B185EBCA8DULL, 0x427AC245CBD3B44CULL }, /* XSUM_XXH3_testdata[1625] */ + { 813, 0x0000000000000000ULL, 0x9528DE76FF428FFFULL }, /* XSUM_XXH3_testdata[1626] */ + { 813, 0x9E3779B185EBCA8DULL, 0x1E230E5B3323E74AULL }, /* XSUM_XXH3_testdata[1627] */ + { 814, 0x0000000000000000ULL, 0x849CACB6C4106DDFULL }, /* XSUM_XXH3_testdata[1628] */ + { 814, 0x9E3779B185EBCA8DULL, 0x553BE499122C7C0CULL }, /* XSUM_XXH3_testdata[1629] */ + { 815, 0x0000000000000000ULL, 0x0D5B97EB8BBB2507ULL }, /* XSUM_XXH3_testdata[1630] */ + { 815, 0x9E3779B185EBCA8DULL, 0xC342A288F90B93BBULL }, /* XSUM_XXH3_testdata[1631] */ + { 816, 0x0000000000000000ULL, 0xBF54F04EDDCA5768ULL }, /* XSUM_XXH3_testdata[1632] */ + { 816, 0x9E3779B185EBCA8DULL, 0x7770F5499A4E0728ULL }, /* XSUM_XXH3_testdata[1633] */ + { 817, 0x0000000000000000ULL, 0xD91C52C448D3CA0DULL }, /* XSUM_XXH3_testdata[1634] */ + { 817, 0x9E3779B185EBCA8DULL, 0x45F34B3A94984950ULL }, /* XSUM_XXH3_testdata[1635] */ + { 818, 0x0000000000000000ULL, 0x4EBDCA54797F28FCULL }, /* XSUM_XXH3_testdata[1636] */ + { 818, 0x9E3779B185EBCA8DULL, 0x9C760841EAEFFDC9ULL }, /* XSUM_XXH3_testdata[1637] */ + { 819, 0x0000000000000000ULL, 0xF70945EB101515BFULL }, /* XSUM_XXH3_testdata[1638] */ + { 819, 0x9E3779B185EBCA8DULL, 0xB227D91F6B12C133ULL }, /* XSUM_XXH3_testdata[1639] */ + { 820, 0x0000000000000000ULL, 0xCDC89E5577C1A2A8ULL }, /* XSUM_XXH3_testdata[1640] */ + { 820, 0x9E3779B185EBCA8DULL, 0xEEAC670EA532F45EULL }, /* XSUM_XXH3_testdata[1641] */ + { 821, 0x0000000000000000ULL, 0x344199F7B654360DULL }, /* XSUM_XXH3_testdata[1642] */ + { 821, 0x9E3779B185EBCA8DULL, 0x0A9B5D01499EC0CAULL }, /* XSUM_XXH3_testdata[1643] */ + { 822, 0x0000000000000000ULL, 0x5A5531E107B85BC4ULL }, /* XSUM_XXH3_testdata[1644] */ + { 822, 0x9E3779B185EBCA8DULL, 0x6128B1D109BA73D5ULL }, /* XSUM_XXH3_testdata[1645] */ + { 823, 0x0000000000000000ULL, 0x8880C79B625256F8ULL }, /* XSUM_XXH3_testdata[1646] */ + { 823, 0x9E3779B185EBCA8DULL, 0xFF6BE9029AE0895CULL }, /* XSUM_XXH3_testdata[1647] */ + { 824, 0x0000000000000000ULL, 0x4147D273F26FE781ULL }, /* XSUM_XXH3_testdata[1648] */ + { 824, 0x9E3779B185EBCA8DULL, 0x618098027E17A0A0ULL }, /* XSUM_XXH3_testdata[1649] */ + { 825, 0x0000000000000000ULL, 0x160D37087AB92A86ULL }, /* XSUM_XXH3_testdata[1650] */ + { 825, 0x9E3779B185EBCA8DULL, 0x1C9796C8BE1CCBEFULL }, /* XSUM_XXH3_testdata[1651] */ + { 826, 0x0000000000000000ULL, 0xACD13537639F6E2CULL }, /* XSUM_XXH3_testdata[1652] */ + { 826, 0x9E3779B185EBCA8DULL, 0xA9A04297D3F6EE2AULL }, /* XSUM_XXH3_testdata[1653] */ + { 827, 0x0000000000000000ULL, 0xD35377738FD403A5ULL }, /* XSUM_XXH3_testdata[1654] */ + { 827, 0x9E3779B185EBCA8DULL, 0x082EBC1AAA053BFDULL }, /* XSUM_XXH3_testdata[1655] */ + { 828, 0x0000000000000000ULL, 0x2E9D98BE64D509E1ULL }, /* XSUM_XXH3_testdata[1656] */ + { 828, 0x9E3779B185EBCA8DULL, 0x53E88588AF191AF0ULL }, /* XSUM_XXH3_testdata[1657] */ + { 829, 0x0000000000000000ULL, 0x345221D1DF80DE65ULL }, /* XSUM_XXH3_testdata[1658] */ + { 829, 0x9E3779B185EBCA8DULL, 0xF6A17453C43DF45EULL }, /* XSUM_XXH3_testdata[1659] */ + { 830, 0x0000000000000000ULL, 0x9BA2617F5A684FABULL }, /* XSUM_XXH3_testdata[1660] */ + { 830, 0x9E3779B185EBCA8DULL, 0x898EDE976C4053FAULL }, /* XSUM_XXH3_testdata[1661] */ + { 831, 0x0000000000000000ULL, 0x61B8D4254F92B112ULL }, /* XSUM_XXH3_testdata[1662] */ + { 831, 0x9E3779B185EBCA8DULL, 0xDBA75D8F1D69BB43ULL }, /* XSUM_XXH3_testdata[1663] */ + { 832, 0x0000000000000000ULL, 0xAFE6259BB7E82719ULL }, /* XSUM_XXH3_testdata[1664] */ + { 832, 0x9E3779B185EBCA8DULL, 0xE3114F2B93221DA1ULL }, /* XSUM_XXH3_testdata[1665] */ + { 833, 0x0000000000000000ULL, 0x90A398DB62F4700AULL }, /* XSUM_XXH3_testdata[1666] */ + { 833, 0x9E3779B185EBCA8DULL, 0x22B16D152E53363BULL }, /* XSUM_XXH3_testdata[1667] */ + { 834, 0x0000000000000000ULL, 0x1D102D3B3A811A53ULL }, /* XSUM_XXH3_testdata[1668] */ + { 834, 0x9E3779B185EBCA8DULL, 0x9B504609CE528AEBULL }, /* XSUM_XXH3_testdata[1669] */ + { 835, 0x0000000000000000ULL, 0xEFEB7FECE3799DD9ULL }, /* XSUM_XXH3_testdata[1670] */ + { 835, 0x9E3779B185EBCA8DULL, 0x050797525A33E488ULL }, /* XSUM_XXH3_testdata[1671] */ + { 836, 0x0000000000000000ULL, 0x78FB3B11A836CE75ULL }, /* XSUM_XXH3_testdata[1672] */ + { 836, 0x9E3779B185EBCA8DULL, 0xD192EB96418DC6DBULL }, /* XSUM_XXH3_testdata[1673] */ + { 837, 0x0000000000000000ULL, 0x4D88D78137833F01ULL }, /* XSUM_XXH3_testdata[1674] */ + { 837, 0x9E3779B185EBCA8DULL, 0x09D6DAEDC3A0869CULL }, /* XSUM_XXH3_testdata[1675] */ + { 838, 0x0000000000000000ULL, 0x4BD49C3A51933BE0ULL }, /* XSUM_XXH3_testdata[1676] */ + { 838, 0x9E3779B185EBCA8DULL, 0x58930BCAE3E3A184ULL }, /* XSUM_XXH3_testdata[1677] */ + { 839, 0x0000000000000000ULL, 0x54F7F848A1913FF5ULL }, /* XSUM_XXH3_testdata[1678] */ + { 839, 0x9E3779B185EBCA8DULL, 0x33ABE251569EB133ULL }, /* XSUM_XXH3_testdata[1679] */ + { 840, 0x0000000000000000ULL, 0x106712127B9D230CULL }, /* XSUM_XXH3_testdata[1680] */ + { 840, 0x9E3779B185EBCA8DULL, 0xB5E8BC576AEA8BA4ULL }, /* XSUM_XXH3_testdata[1681] */ + { 841, 0x0000000000000000ULL, 0x18070CF1879F1977ULL }, /* XSUM_XXH3_testdata[1682] */ + { 841, 0x9E3779B185EBCA8DULL, 0x1FADBB600D162135ULL }, /* XSUM_XXH3_testdata[1683] */ + { 842, 0x0000000000000000ULL, 0x83397F11D484A571ULL }, /* XSUM_XXH3_testdata[1684] */ + { 842, 0x9E3779B185EBCA8DULL, 0x9EFF0FD8F3152F8AULL }, /* XSUM_XXH3_testdata[1685] */ + { 843, 0x0000000000000000ULL, 0xCE992E147CE99E40ULL }, /* XSUM_XXH3_testdata[1686] */ + { 843, 0x9E3779B185EBCA8DULL, 0x641FEE7F734F5C28ULL }, /* XSUM_XXH3_testdata[1687] */ + { 844, 0x0000000000000000ULL, 0x136A5AD87FB1F3C5ULL }, /* XSUM_XXH3_testdata[1688] */ + { 844, 0x9E3779B185EBCA8DULL, 0xBF94331CE9448890ULL }, /* XSUM_XXH3_testdata[1689] */ + { 845, 0x0000000000000000ULL, 0x7F01AB2D9DF65DC3ULL }, /* XSUM_XXH3_testdata[1690] */ + { 845, 0x9E3779B185EBCA8DULL, 0x5EED94F76EB3A6C8ULL }, /* XSUM_XXH3_testdata[1691] */ + { 846, 0x0000000000000000ULL, 0x4F0DF98A62744869ULL }, /* XSUM_XXH3_testdata[1692] */ + { 846, 0x9E3779B185EBCA8DULL, 0xFD4DE9380591A06EULL }, /* XSUM_XXH3_testdata[1693] */ + { 847, 0x0000000000000000ULL, 0x9F0A5D405E382663ULL }, /* XSUM_XXH3_testdata[1694] */ + { 847, 0x9E3779B185EBCA8DULL, 0xE47F9D04CD36BBADULL }, /* XSUM_XXH3_testdata[1695] */ + { 848, 0x0000000000000000ULL, 0x180BB00A39D5EC5AULL }, /* XSUM_XXH3_testdata[1696] */ + { 848, 0x9E3779B185EBCA8DULL, 0xDE5A14F15157E51EULL }, /* XSUM_XXH3_testdata[1697] */ + { 849, 0x0000000000000000ULL, 0xF4BE363521B6A2C6ULL }, /* XSUM_XXH3_testdata[1698] */ + { 849, 0x9E3779B185EBCA8DULL, 0x8D1797C2052BFE82ULL }, /* XSUM_XXH3_testdata[1699] */ + { 850, 0x0000000000000000ULL, 0x86C780FD0CE8BF78ULL }, /* XSUM_XXH3_testdata[1700] */ + { 850, 0x9E3779B185EBCA8DULL, 0xAD01A1D5CC629CD5ULL }, /* XSUM_XXH3_testdata[1701] */ + { 851, 0x0000000000000000ULL, 0xB3F7DB8C1B281BFDULL }, /* XSUM_XXH3_testdata[1702] */ + { 851, 0x9E3779B185EBCA8DULL, 0x3E0C5DC2505E9FEEULL }, /* XSUM_XXH3_testdata[1703] */ + { 852, 0x0000000000000000ULL, 0xF921BC2813B654C5ULL }, /* XSUM_XXH3_testdata[1704] */ + { 852, 0x9E3779B185EBCA8DULL, 0xE1ABC48311801DE5ULL }, /* XSUM_XXH3_testdata[1705] */ + { 853, 0x0000000000000000ULL, 0xAC60F24E6BB9314CULL }, /* XSUM_XXH3_testdata[1706] */ + { 853, 0x9E3779B185EBCA8DULL, 0x8323286894810D00ULL }, /* XSUM_XXH3_testdata[1707] */ + { 854, 0x0000000000000000ULL, 0x22731EEACE036B70ULL }, /* XSUM_XXH3_testdata[1708] */ + { 854, 0x9E3779B185EBCA8DULL, 0x53111315216E6E05ULL }, /* XSUM_XXH3_testdata[1709] */ + { 855, 0x0000000000000000ULL, 0xAEC9AAF7BD2AF359ULL }, /* XSUM_XXH3_testdata[1710] */ + { 855, 0x9E3779B185EBCA8DULL, 0x2AB74C5CFD15B3AEULL }, /* XSUM_XXH3_testdata[1711] */ + { 856, 0x0000000000000000ULL, 0x2205D490BEBCC708ULL }, /* XSUM_XXH3_testdata[1712] */ + { 856, 0x9E3779B185EBCA8DULL, 0x311BB4AC9FB9FD3EULL }, /* XSUM_XXH3_testdata[1713] */ + { 857, 0x0000000000000000ULL, 0xA2DDF9996C06CB02ULL }, /* XSUM_XXH3_testdata[1714] */ + { 857, 0x9E3779B185EBCA8DULL, 0x57E4EC23A8A1ACCBULL }, /* XSUM_XXH3_testdata[1715] */ + { 858, 0x0000000000000000ULL, 0x8DB85910823CCFF9ULL }, /* XSUM_XXH3_testdata[1716] */ + { 858, 0x9E3779B185EBCA8DULL, 0x3360E621581CB408ULL }, /* XSUM_XXH3_testdata[1717] */ + { 859, 0x0000000000000000ULL, 0x0020D5DDB96FF188ULL }, /* XSUM_XXH3_testdata[1718] */ + { 859, 0x9E3779B185EBCA8DULL, 0x32D27A0B45A43231ULL }, /* XSUM_XXH3_testdata[1719] */ + { 860, 0x0000000000000000ULL, 0x6E0260DD43742DF4ULL }, /* XSUM_XXH3_testdata[1720] */ + { 860, 0x9E3779B185EBCA8DULL, 0x617926484A47AA64ULL }, /* XSUM_XXH3_testdata[1721] */ + { 861, 0x0000000000000000ULL, 0x998F39A94253AF75ULL }, /* XSUM_XXH3_testdata[1722] */ + { 861, 0x9E3779B185EBCA8DULL, 0x8FAA1AE17209850CULL }, /* XSUM_XXH3_testdata[1723] */ + { 862, 0x0000000000000000ULL, 0x9C3CA9F498794551ULL }, /* XSUM_XXH3_testdata[1724] */ + { 862, 0x9E3779B185EBCA8DULL, 0xA9E1257DB5D93D57ULL }, /* XSUM_XXH3_testdata[1725] */ + { 863, 0x0000000000000000ULL, 0xD4AB596FA5B43697ULL }, /* XSUM_XXH3_testdata[1726] */ + { 863, 0x9E3779B185EBCA8DULL, 0x77A4A22D9975994DULL }, /* XSUM_XXH3_testdata[1727] */ + { 864, 0x0000000000000000ULL, 0xAECA70EC1A19053CULL }, /* XSUM_XXH3_testdata[1728] */ + { 864, 0x9E3779B185EBCA8DULL, 0x62864C38E63F2DBFULL }, /* XSUM_XXH3_testdata[1729] */ + { 865, 0x0000000000000000ULL, 0x920BE4DA2EE72450ULL }, /* XSUM_XXH3_testdata[1730] */ + { 865, 0x9E3779B185EBCA8DULL, 0x679D32790A35B02AULL }, /* XSUM_XXH3_testdata[1731] */ + { 866, 0x0000000000000000ULL, 0xB0AE8C8931036064ULL }, /* XSUM_XXH3_testdata[1732] */ + { 866, 0x9E3779B185EBCA8DULL, 0xFF70578E60774C95ULL }, /* XSUM_XXH3_testdata[1733] */ + { 867, 0x0000000000000000ULL, 0x204497CC1D90FFE3ULL }, /* XSUM_XXH3_testdata[1734] */ + { 867, 0x9E3779B185EBCA8DULL, 0x249388B8EE2A692EULL }, /* XSUM_XXH3_testdata[1735] */ + { 868, 0x0000000000000000ULL, 0xCC7D891B3841AEA2ULL }, /* XSUM_XXH3_testdata[1736] */ + { 868, 0x9E3779B185EBCA8DULL, 0x4A1094F278CD47FBULL }, /* XSUM_XXH3_testdata[1737] */ + { 869, 0x0000000000000000ULL, 0x6F28F68421F6E239ULL }, /* XSUM_XXH3_testdata[1738] */ + { 869, 0x9E3779B185EBCA8DULL, 0x7F4400B6740AF6C9ULL }, /* XSUM_XXH3_testdata[1739] */ + { 870, 0x0000000000000000ULL, 0xA4E36B16E55D8471ULL }, /* XSUM_XXH3_testdata[1740] */ + { 870, 0x9E3779B185EBCA8DULL, 0x051FC97AD46E2D89ULL }, /* XSUM_XXH3_testdata[1741] */ + { 871, 0x0000000000000000ULL, 0x1D795DD6A022F3F2ULL }, /* XSUM_XXH3_testdata[1742] */ + { 871, 0x9E3779B185EBCA8DULL, 0xDA17BFCD5421D4ECULL }, /* XSUM_XXH3_testdata[1743] */ + { 872, 0x0000000000000000ULL, 0x5390B479AD9BFF1DULL }, /* XSUM_XXH3_testdata[1744] */ + { 872, 0x9E3779B185EBCA8DULL, 0xA021AA74FC1AE49AULL }, /* XSUM_XXH3_testdata[1745] */ + { 873, 0x0000000000000000ULL, 0x9CFE87FA820B89F5ULL }, /* XSUM_XXH3_testdata[1746] */ + { 873, 0x9E3779B185EBCA8DULL, 0xB44A4C7912BDD7FFULL }, /* XSUM_XXH3_testdata[1747] */ + { 874, 0x0000000000000000ULL, 0x670D930CF6A5CA58ULL }, /* XSUM_XXH3_testdata[1748] */ + { 874, 0x9E3779B185EBCA8DULL, 0x097D5B727BDAC8E7ULL }, /* XSUM_XXH3_testdata[1749] */ + { 875, 0x0000000000000000ULL, 0x3268191F1A35F955ULL }, /* XSUM_XXH3_testdata[1750] */ + { 875, 0x9E3779B185EBCA8DULL, 0xFB57D6BBCADCA138ULL }, /* XSUM_XXH3_testdata[1751] */ + { 876, 0x0000000000000000ULL, 0x16B613946323F178ULL }, /* XSUM_XXH3_testdata[1752] */ + { 876, 0x9E3779B185EBCA8DULL, 0x720DA302255D6B3CULL }, /* XSUM_XXH3_testdata[1753] */ + { 877, 0x0000000000000000ULL, 0xD5D45FAB9D869310ULL }, /* XSUM_XXH3_testdata[1754] */ + { 877, 0x9E3779B185EBCA8DULL, 0x9DD738725E07D61AULL }, /* XSUM_XXH3_testdata[1755] */ + { 878, 0x0000000000000000ULL, 0x7BBEA66E7FD64EEEULL }, /* XSUM_XXH3_testdata[1756] */ + { 878, 0x9E3779B185EBCA8DULL, 0xC5911D65D313D0D4ULL }, /* XSUM_XXH3_testdata[1757] */ + { 879, 0x0000000000000000ULL, 0xCC9E1F621CEB5CB7ULL }, /* XSUM_XXH3_testdata[1758] */ + { 879, 0x9E3779B185EBCA8DULL, 0x9A2250D02FE3633CULL }, /* XSUM_XXH3_testdata[1759] */ + { 880, 0x0000000000000000ULL, 0xA1D25334FA04F008ULL }, /* XSUM_XXH3_testdata[1760] */ + { 880, 0x9E3779B185EBCA8DULL, 0x4E33561D714D981CULL }, /* XSUM_XXH3_testdata[1761] */ + { 881, 0x0000000000000000ULL, 0xF4315D7612F5987DULL }, /* XSUM_XXH3_testdata[1762] */ + { 881, 0x9E3779B185EBCA8DULL, 0x6D3745E180F80558ULL }, /* XSUM_XXH3_testdata[1763] */ + { 882, 0x0000000000000000ULL, 0x3645B0BF88B738DEULL }, /* XSUM_XXH3_testdata[1764] */ + { 882, 0x9E3779B185EBCA8DULL, 0x1472A4D0F250D3C1ULL }, /* XSUM_XXH3_testdata[1765] */ + { 883, 0x0000000000000000ULL, 0x0D60690DC6B281CDULL }, /* XSUM_XXH3_testdata[1766] */ + { 883, 0x9E3779B185EBCA8DULL, 0xBF80AA58B601D3ECULL }, /* XSUM_XXH3_testdata[1767] */ + { 884, 0x0000000000000000ULL, 0x4F06C5E4BC84D817ULL }, /* XSUM_XXH3_testdata[1768] */ + { 884, 0x9E3779B185EBCA8DULL, 0x50CD721756F80806ULL }, /* XSUM_XXH3_testdata[1769] */ + { 885, 0x0000000000000000ULL, 0x0CF4D69F9BCBB028ULL }, /* XSUM_XXH3_testdata[1770] */ + { 885, 0x9E3779B185EBCA8DULL, 0x6A873765C3253682ULL }, /* XSUM_XXH3_testdata[1771] */ + { 886, 0x0000000000000000ULL, 0x33D3B47E5F0C1FEAULL }, /* XSUM_XXH3_testdata[1772] */ + { 886, 0x9E3779B185EBCA8DULL, 0x569343E1255B1999ULL }, /* XSUM_XXH3_testdata[1773] */ + { 887, 0x0000000000000000ULL, 0xB1EF8AC1E7FCCD2EULL }, /* XSUM_XXH3_testdata[1774] */ + { 887, 0x9E3779B185EBCA8DULL, 0x664107083E169A21ULL }, /* XSUM_XXH3_testdata[1775] */ + { 888, 0x0000000000000000ULL, 0xDFBC2F185FA2CB61ULL }, /* XSUM_XXH3_testdata[1776] */ + { 888, 0x9E3779B185EBCA8DULL, 0x5720284D8DAC6716ULL }, /* XSUM_XXH3_testdata[1777] */ + { 889, 0x0000000000000000ULL, 0xA695A95B654DBBE8ULL }, /* XSUM_XXH3_testdata[1778] */ + { 889, 0x9E3779B185EBCA8DULL, 0x16269F2A5D26D293ULL }, /* XSUM_XXH3_testdata[1779] */ + { 890, 0x0000000000000000ULL, 0x228EB6664629C43FULL }, /* XSUM_XXH3_testdata[1780] */ + { 890, 0x9E3779B185EBCA8DULL, 0x48490F5C2AE2C3DAULL }, /* XSUM_XXH3_testdata[1781] */ + { 891, 0x0000000000000000ULL, 0xF85745C98A2DFD73ULL }, /* XSUM_XXH3_testdata[1782] */ + { 891, 0x9E3779B185EBCA8DULL, 0x51E26ECF6A11FC9FULL }, /* XSUM_XXH3_testdata[1783] */ + { 892, 0x0000000000000000ULL, 0x1952503F7EA0927EULL }, /* XSUM_XXH3_testdata[1784] */ + { 892, 0x9E3779B185EBCA8DULL, 0xF3E80A84EB3AC555ULL }, /* XSUM_XXH3_testdata[1785] */ + { 893, 0x0000000000000000ULL, 0x7A66A9CAFD803854ULL }, /* XSUM_XXH3_testdata[1786] */ + { 893, 0x9E3779B185EBCA8DULL, 0x80978CEDB4F12674ULL }, /* XSUM_XXH3_testdata[1787] */ + { 894, 0x0000000000000000ULL, 0xB999B8C782978E87ULL }, /* XSUM_XXH3_testdata[1788] */ + { 894, 0x9E3779B185EBCA8DULL, 0x1525D7EB13039E6FULL }, /* XSUM_XXH3_testdata[1789] */ + { 895, 0x0000000000000000ULL, 0xB12EA692EC2B62C5ULL }, /* XSUM_XXH3_testdata[1790] */ + { 895, 0x9E3779B185EBCA8DULL, 0x600CC0C92B11A232ULL }, /* XSUM_XXH3_testdata[1791] */ + { 896, 0x0000000000000000ULL, 0xEB301FCAE547B530ULL }, /* XSUM_XXH3_testdata[1792] */ + { 896, 0x9E3779B185EBCA8DULL, 0xE484EED3AE3F7B4AULL }, /* XSUM_XXH3_testdata[1793] */ + { 897, 0x0000000000000000ULL, 0x3FE21A655967FAABULL }, /* XSUM_XXH3_testdata[1794] */ + { 897, 0x9E3779B185EBCA8DULL, 0xEC34975953EAA864ULL }, /* XSUM_XXH3_testdata[1795] */ + { 898, 0x0000000000000000ULL, 0x62DF6C1B622F8D08ULL }, /* XSUM_XXH3_testdata[1796] */ + { 898, 0x9E3779B185EBCA8DULL, 0x7343CCBDE198051FULL }, /* XSUM_XXH3_testdata[1797] */ + { 899, 0x0000000000000000ULL, 0xE0660A9CC7B6FF93ULL }, /* XSUM_XXH3_testdata[1798] */ + { 899, 0x9E3779B185EBCA8DULL, 0x2D0B46C0D37409D6ULL }, /* XSUM_XXH3_testdata[1799] */ + { 900, 0x0000000000000000ULL, 0x43A535685D650A1DULL }, /* XSUM_XXH3_testdata[1800] */ + { 900, 0x9E3779B185EBCA8DULL, 0x9AA0F5DE9F232AE3ULL }, /* XSUM_XXH3_testdata[1801] */ + { 901, 0x0000000000000000ULL, 0xF10B28C4A5F1D834ULL }, /* XSUM_XXH3_testdata[1802] */ + { 901, 0x9E3779B185EBCA8DULL, 0xDCB25A5484361112ULL }, /* XSUM_XXH3_testdata[1803] */ + { 902, 0x0000000000000000ULL, 0xF78121EBCC58B064ULL }, /* XSUM_XXH3_testdata[1804] */ + { 902, 0x9E3779B185EBCA8DULL, 0xB07E3F3CFE793C40ULL }, /* XSUM_XXH3_testdata[1805] */ + { 903, 0x0000000000000000ULL, 0x39020A97794C2E78ULL }, /* XSUM_XXH3_testdata[1806] */ + { 903, 0x9E3779B185EBCA8DULL, 0xEF9157C276C8A510ULL }, /* XSUM_XXH3_testdata[1807] */ + { 904, 0x0000000000000000ULL, 0x3CD1DC80F8017C63ULL }, /* XSUM_XXH3_testdata[1808] */ + { 904, 0x9E3779B185EBCA8DULL, 0x28BF86B604D416C8ULL }, /* XSUM_XXH3_testdata[1809] */ + { 905, 0x0000000000000000ULL, 0x2A749BB33C70892FULL }, /* XSUM_XXH3_testdata[1810] */ + { 905, 0x9E3779B185EBCA8DULL, 0x03806DC4CE1C026BULL }, /* XSUM_XXH3_testdata[1811] */ + { 906, 0x0000000000000000ULL, 0x08924B7FB5A00477ULL }, /* XSUM_XXH3_testdata[1812] */ + { 906, 0x9E3779B185EBCA8DULL, 0x8F5985423A9AB05AULL }, /* XSUM_XXH3_testdata[1813] */ + { 907, 0x0000000000000000ULL, 0x706A6A5F8534ED41ULL }, /* XSUM_XXH3_testdata[1814] */ + { 907, 0x9E3779B185EBCA8DULL, 0x07EF945CA2C9BBA9ULL }, /* XSUM_XXH3_testdata[1815] */ + { 908, 0x0000000000000000ULL, 0xB8A4DB648697F221ULL }, /* XSUM_XXH3_testdata[1816] */ + { 908, 0x9E3779B185EBCA8DULL, 0xE46FA8E96335AB05ULL }, /* XSUM_XXH3_testdata[1817] */ + { 909, 0x0000000000000000ULL, 0x0D9D86B2E61E86C9ULL }, /* XSUM_XXH3_testdata[1818] */ + { 909, 0x9E3779B185EBCA8DULL, 0x526D4E68604C4B94ULL }, /* XSUM_XXH3_testdata[1819] */ + { 910, 0x0000000000000000ULL, 0xF2B877B46D63623AULL }, /* XSUM_XXH3_testdata[1820] */ + { 910, 0x9E3779B185EBCA8DULL, 0xF37A6ECF8FD2FE7EULL }, /* XSUM_XXH3_testdata[1821] */ + { 911, 0x0000000000000000ULL, 0x01EF8AF310173CEFULL }, /* XSUM_XXH3_testdata[1822] */ + { 911, 0x9E3779B185EBCA8DULL, 0x8E28E708BD090493ULL }, /* XSUM_XXH3_testdata[1823] */ + { 912, 0x0000000000000000ULL, 0xFAE2DFBAAA25F72FULL }, /* XSUM_XXH3_testdata[1824] */ + { 912, 0x9E3779B185EBCA8DULL, 0xC9B6670513781477ULL }, /* XSUM_XXH3_testdata[1825] */ + { 913, 0x0000000000000000ULL, 0x0F887DF943467AECULL }, /* XSUM_XXH3_testdata[1826] */ + { 913, 0x9E3779B185EBCA8DULL, 0x52476A601F434F73ULL }, /* XSUM_XXH3_testdata[1827] */ + { 914, 0x0000000000000000ULL, 0x5167A6FE26B8AAE7ULL }, /* XSUM_XXH3_testdata[1828] */ + { 914, 0x9E3779B185EBCA8DULL, 0x62234A2F13194C83ULL }, /* XSUM_XXH3_testdata[1829] */ + { 915, 0x0000000000000000ULL, 0xC0A5ED24EB5DB096ULL }, /* XSUM_XXH3_testdata[1830] */ + { 915, 0x9E3779B185EBCA8DULL, 0x1CF98E391B72DD0DULL }, /* XSUM_XXH3_testdata[1831] */ + { 916, 0x0000000000000000ULL, 0x6479E62533BDD5EBULL }, /* XSUM_XXH3_testdata[1832] */ + { 916, 0x9E3779B185EBCA8DULL, 0xBF125B8684945E35ULL }, /* XSUM_XXH3_testdata[1833] */ + { 917, 0x0000000000000000ULL, 0xC2F0B86031A0F801ULL }, /* XSUM_XXH3_testdata[1834] */ + { 917, 0x9E3779B185EBCA8DULL, 0xF8598497B749DEACULL }, /* XSUM_XXH3_testdata[1835] */ + { 918, 0x0000000000000000ULL, 0x93DC4E8E9C05BB21ULL }, /* XSUM_XXH3_testdata[1836] */ + { 918, 0x9E3779B185EBCA8DULL, 0xDEDC0CB3439B9699ULL }, /* XSUM_XXH3_testdata[1837] */ + { 919, 0x0000000000000000ULL, 0x94BC6E4CDEC216D4ULL }, /* XSUM_XXH3_testdata[1838] */ + { 919, 0x9E3779B185EBCA8DULL, 0xA8B6770050EE599BULL }, /* XSUM_XXH3_testdata[1839] */ + { 920, 0x0000000000000000ULL, 0xE653BE122CE7A2CDULL }, /* XSUM_XXH3_testdata[1840] */ + { 920, 0x9E3779B185EBCA8DULL, 0x8B3A5165B6C84D2BULL }, /* XSUM_XXH3_testdata[1841] */ + { 921, 0x0000000000000000ULL, 0x1323F1B07FF3DEACULL }, /* XSUM_XXH3_testdata[1842] */ + { 921, 0x9E3779B185EBCA8DULL, 0x8E14FC108078B608ULL }, /* XSUM_XXH3_testdata[1843] */ + { 922, 0x0000000000000000ULL, 0xA98AC6B852D82AABULL }, /* XSUM_XXH3_testdata[1844] */ + { 922, 0x9E3779B185EBCA8DULL, 0x95C5DF89A2BD069FULL }, /* XSUM_XXH3_testdata[1845] */ + { 923, 0x0000000000000000ULL, 0x9D686372D8B0617AULL }, /* XSUM_XXH3_testdata[1846] */ + { 923, 0x9E3779B185EBCA8DULL, 0xEDFD83FABDDDBC8BULL }, /* XSUM_XXH3_testdata[1847] */ + { 924, 0x0000000000000000ULL, 0x5F978BEF6DE12D27ULL }, /* XSUM_XXH3_testdata[1848] */ + { 924, 0x9E3779B185EBCA8DULL, 0xE488654B9218CD99ULL }, /* XSUM_XXH3_testdata[1849] */ + { 925, 0x0000000000000000ULL, 0xFA6D5149FA2D1F6AULL }, /* XSUM_XXH3_testdata[1850] */ + { 925, 0x9E3779B185EBCA8DULL, 0xB84A15EAE6E992BAULL }, /* XSUM_XXH3_testdata[1851] */ + { 926, 0x0000000000000000ULL, 0x9BB97F3BD2CD307BULL }, /* XSUM_XXH3_testdata[1852] */ + { 926, 0x9E3779B185EBCA8DULL, 0x2622E4C4AAA4FD07ULL }, /* XSUM_XXH3_testdata[1853] */ + { 927, 0x0000000000000000ULL, 0x36078B5DD5914CEBULL }, /* XSUM_XXH3_testdata[1854] */ + { 927, 0x9E3779B185EBCA8DULL, 0x26D68DB45FF74F0EULL }, /* XSUM_XXH3_testdata[1855] */ + { 928, 0x0000000000000000ULL, 0xBD54D90ADD4F9E19ULL }, /* XSUM_XXH3_testdata[1856] */ + { 928, 0x9E3779B185EBCA8DULL, 0x49F9C3EA8E5EF802ULL }, /* XSUM_XXH3_testdata[1857] */ + { 929, 0x0000000000000000ULL, 0x5DBA3CAEC1DBDF12ULL }, /* XSUM_XXH3_testdata[1858] */ + { 929, 0x9E3779B185EBCA8DULL, 0x9B2D2B4E1558FF19ULL }, /* XSUM_XXH3_testdata[1859] */ + { 930, 0x0000000000000000ULL, 0x7DCE91B0CE47F963ULL }, /* XSUM_XXH3_testdata[1860] */ + { 930, 0x9E3779B185EBCA8DULL, 0x6ABFB039DEE45CE2ULL }, /* XSUM_XXH3_testdata[1861] */ + { 931, 0x0000000000000000ULL, 0x371A894FD8074EBBULL }, /* XSUM_XXH3_testdata[1862] */ + { 931, 0x9E3779B185EBCA8DULL, 0x31D6447D326D6B32ULL }, /* XSUM_XXH3_testdata[1863] */ + { 932, 0x0000000000000000ULL, 0x8495ACB80721BB37ULL }, /* XSUM_XXH3_testdata[1864] */ + { 932, 0x9E3779B185EBCA8DULL, 0x31C1E3EED31EF4E7ULL }, /* XSUM_XXH3_testdata[1865] */ + { 933, 0x0000000000000000ULL, 0x6D91845A2A2BB1DBULL }, /* XSUM_XXH3_testdata[1866] */ + { 933, 0x9E3779B185EBCA8DULL, 0x790732AA889611E7ULL }, /* XSUM_XXH3_testdata[1867] */ + { 934, 0x0000000000000000ULL, 0xC21D749AA1EAFF14ULL }, /* XSUM_XXH3_testdata[1868] */ + { 934, 0x9E3779B185EBCA8DULL, 0xAED572A2CC21B33DULL }, /* XSUM_XXH3_testdata[1869] */ + { 935, 0x0000000000000000ULL, 0xBCC4C1401CB5F8E9ULL }, /* XSUM_XXH3_testdata[1870] */ + { 935, 0x9E3779B185EBCA8DULL, 0x432A10F5AB90C1C2ULL }, /* XSUM_XXH3_testdata[1871] */ + { 936, 0x0000000000000000ULL, 0x444796D6AD1567C5ULL }, /* XSUM_XXH3_testdata[1872] */ + { 936, 0x9E3779B185EBCA8DULL, 0x29541667E8C08536ULL }, /* XSUM_XXH3_testdata[1873] */ + { 937, 0x0000000000000000ULL, 0xCB76E240E83972D6ULL }, /* XSUM_XXH3_testdata[1874] */ + { 937, 0x9E3779B185EBCA8DULL, 0x7280116BD4511CC7ULL }, /* XSUM_XXH3_testdata[1875] */ + { 938, 0x0000000000000000ULL, 0x824916E17BACABF0ULL }, /* XSUM_XXH3_testdata[1876] */ + { 938, 0x9E3779B185EBCA8DULL, 0xA6BF5C3E53C802DBULL }, /* XSUM_XXH3_testdata[1877] */ + { 939, 0x0000000000000000ULL, 0xED6D1032D38614FDULL }, /* XSUM_XXH3_testdata[1878] */ + { 939, 0x9E3779B185EBCA8DULL, 0x2DB0AC3D03C26BFAULL }, /* XSUM_XXH3_testdata[1879] */ + { 940, 0x0000000000000000ULL, 0x148DC4872BB44686ULL }, /* XSUM_XXH3_testdata[1880] */ + { 940, 0x9E3779B185EBCA8DULL, 0xBDDD7BEA37E2D08CULL }, /* XSUM_XXH3_testdata[1881] */ + { 941, 0x0000000000000000ULL, 0x9E113AF44A0C8A70ULL }, /* XSUM_XXH3_testdata[1882] */ + { 941, 0x9E3779B185EBCA8DULL, 0xEAAE0F49DCE8ADCAULL }, /* XSUM_XXH3_testdata[1883] */ + { 942, 0x0000000000000000ULL, 0x90A91675BEC9FA4EULL }, /* XSUM_XXH3_testdata[1884] */ + { 942, 0x9E3779B185EBCA8DULL, 0x1879758BA0BB13EAULL }, /* XSUM_XXH3_testdata[1885] */ + { 943, 0x0000000000000000ULL, 0xEC8CEBB06CD11A8AULL }, /* XSUM_XXH3_testdata[1886] */ + { 943, 0x9E3779B185EBCA8DULL, 0xC21ACB495A981932ULL }, /* XSUM_XXH3_testdata[1887] */ + { 944, 0x0000000000000000ULL, 0x6A7091244E534E3CULL }, /* XSUM_XXH3_testdata[1888] */ + { 944, 0x9E3779B185EBCA8DULL, 0x5D1E70B86A49B980ULL }, /* XSUM_XXH3_testdata[1889] */ + { 945, 0x0000000000000000ULL, 0x82EA22FB35891761ULL }, /* XSUM_XXH3_testdata[1890] */ + { 945, 0x9E3779B185EBCA8DULL, 0xF4B220EE80259595ULL }, /* XSUM_XXH3_testdata[1891] */ + { 946, 0x0000000000000000ULL, 0xACF35CB8E8FED358ULL }, /* XSUM_XXH3_testdata[1892] */ + { 946, 0x9E3779B185EBCA8DULL, 0xF9958FDE6CB21BB5ULL }, /* XSUM_XXH3_testdata[1893] */ + { 947, 0x0000000000000000ULL, 0x5C6EFE1FF72335D7ULL }, /* XSUM_XXH3_testdata[1894] */ + { 947, 0x9E3779B185EBCA8DULL, 0x9520A8144A7FF689ULL }, /* XSUM_XXH3_testdata[1895] */ + { 948, 0x0000000000000000ULL, 0x567DF9A42493FDB3ULL }, /* XSUM_XXH3_testdata[1896] */ + { 948, 0x9E3779B185EBCA8DULL, 0xFA4DFA8B65E1EAAFULL }, /* XSUM_XXH3_testdata[1897] */ + { 949, 0x0000000000000000ULL, 0xC508DD9AF56985D5ULL }, /* XSUM_XXH3_testdata[1898] */ + { 949, 0x9E3779B185EBCA8DULL, 0x3A0562B2FCC5C0EBULL }, /* XSUM_XXH3_testdata[1899] */ + { 950, 0x0000000000000000ULL, 0x41186209BD02FADDULL }, /* XSUM_XXH3_testdata[1900] */ + { 950, 0x9E3779B185EBCA8DULL, 0x5D4937DA6AA3A2FEULL }, /* XSUM_XXH3_testdata[1901] */ + { 951, 0x0000000000000000ULL, 0x783914173F2EB8E7ULL }, /* XSUM_XXH3_testdata[1902] */ + { 951, 0x9E3779B185EBCA8DULL, 0xDA422CA94957EAEBULL }, /* XSUM_XXH3_testdata[1903] */ + { 952, 0x0000000000000000ULL, 0xEB9DF3662F675040ULL }, /* XSUM_XXH3_testdata[1904] */ + { 952, 0x9E3779B185EBCA8DULL, 0x73B56133DF93401EULL }, /* XSUM_XXH3_testdata[1905] */ + { 953, 0x0000000000000000ULL, 0xF00743FE9E460004ULL }, /* XSUM_XXH3_testdata[1906] */ + { 953, 0x9E3779B185EBCA8DULL, 0x1866ED8CBABE1A3DULL }, /* XSUM_XXH3_testdata[1907] */ + { 954, 0x0000000000000000ULL, 0xB2596BFE9CEC1895ULL }, /* XSUM_XXH3_testdata[1908] */ + { 954, 0x9E3779B185EBCA8DULL, 0xAFF4254FA818A82FULL }, /* XSUM_XXH3_testdata[1909] */ + { 955, 0x0000000000000000ULL, 0xF916C57C73ED1F99ULL }, /* XSUM_XXH3_testdata[1910] */ + { 955, 0x9E3779B185EBCA8DULL, 0xEB8A95E822A203E8ULL }, /* XSUM_XXH3_testdata[1911] */ + { 956, 0x0000000000000000ULL, 0x754A1B63E490233DULL }, /* XSUM_XXH3_testdata[1912] */ + { 956, 0x9E3779B185EBCA8DULL, 0xF00CFC6E19CB39A5ULL }, /* XSUM_XXH3_testdata[1913] */ + { 957, 0x0000000000000000ULL, 0x1665CAC964F7F2A9ULL }, /* XSUM_XXH3_testdata[1914] */ + { 957, 0x9E3779B185EBCA8DULL, 0x1F6A2B1236C582BDULL }, /* XSUM_XXH3_testdata[1915] */ + { 958, 0x0000000000000000ULL, 0x759223EB7E626920ULL }, /* XSUM_XXH3_testdata[1916] */ + { 958, 0x9E3779B185EBCA8DULL, 0x7EFE66A40789FE53ULL }, /* XSUM_XXH3_testdata[1917] */ + { 959, 0x0000000000000000ULL, 0x513AF05AC8DD8178ULL }, /* XSUM_XXH3_testdata[1918] */ + { 959, 0x9E3779B185EBCA8DULL, 0x8C264637730C8DA7ULL }, /* XSUM_XXH3_testdata[1919] */ + { 960, 0x0000000000000000ULL, 0xFE24A9D0DDDF9D8AULL }, /* XSUM_XXH3_testdata[1920] */ + { 960, 0x9E3779B185EBCA8DULL, 0xD9C532F2683CB21FULL }, /* XSUM_XXH3_testdata[1921] */ + { 961, 0x0000000000000000ULL, 0x1CD144EFE4A034B5ULL }, /* XSUM_XXH3_testdata[1922] */ + { 961, 0x9E3779B185EBCA8DULL, 0x7858A817512ED8D9ULL }, /* XSUM_XXH3_testdata[1923] */ + { 962, 0x0000000000000000ULL, 0x2BD047984C5C5A81ULL }, /* XSUM_XXH3_testdata[1924] */ + { 962, 0x9E3779B185EBCA8DULL, 0x8045BAB642C21C9FULL }, /* XSUM_XXH3_testdata[1925] */ + { 963, 0x0000000000000000ULL, 0x2831D5630D734EA0ULL }, /* XSUM_XXH3_testdata[1926] */ + { 963, 0x9E3779B185EBCA8DULL, 0xF5BACD92232D0A62ULL }, /* XSUM_XXH3_testdata[1927] */ + { 964, 0x0000000000000000ULL, 0xD533B0E90916E484ULL }, /* XSUM_XXH3_testdata[1928] */ + { 964, 0x9E3779B185EBCA8DULL, 0xB4289BD6EF7DF749ULL }, /* XSUM_XXH3_testdata[1929] */ + { 965, 0x0000000000000000ULL, 0x4B44F43FC25AD87FULL }, /* XSUM_XXH3_testdata[1930] */ + { 965, 0x9E3779B185EBCA8DULL, 0xDD12B4CB85317708ULL }, /* XSUM_XXH3_testdata[1931] */ + { 966, 0x0000000000000000ULL, 0xFE4B70BD9F2DF5EDULL }, /* XSUM_XXH3_testdata[1932] */ + { 966, 0x9E3779B185EBCA8DULL, 0x6F3913836220D1F8ULL }, /* XSUM_XXH3_testdata[1933] */ + { 967, 0x0000000000000000ULL, 0x439BFC10070D916AULL }, /* XSUM_XXH3_testdata[1934] */ + { 967, 0x9E3779B185EBCA8DULL, 0x587614E299F460B0ULL }, /* XSUM_XXH3_testdata[1935] */ + { 968, 0x0000000000000000ULL, 0xB052046C8A9324BDULL }, /* XSUM_XXH3_testdata[1936] */ + { 968, 0x9E3779B185EBCA8DULL, 0x46E202D4E5756772ULL }, /* XSUM_XXH3_testdata[1937] */ + { 969, 0x0000000000000000ULL, 0x2806F44CE1246DDEULL }, /* XSUM_XXH3_testdata[1938] */ + { 969, 0x9E3779B185EBCA8DULL, 0xA77A7EA17119CAC3ULL }, /* XSUM_XXH3_testdata[1939] */ + { 970, 0x0000000000000000ULL, 0x25F0AF189799E631ULL }, /* XSUM_XXH3_testdata[1940] */ + { 970, 0x9E3779B185EBCA8DULL, 0x9C9B5C0F36454D7CULL }, /* XSUM_XXH3_testdata[1941] */ + { 971, 0x0000000000000000ULL, 0xF50246B95ECDA9E4ULL }, /* XSUM_XXH3_testdata[1942] */ + { 971, 0x9E3779B185EBCA8DULL, 0xE9ACF6D87169767DULL }, /* XSUM_XXH3_testdata[1943] */ + { 972, 0x0000000000000000ULL, 0x3EF86FEA3341E42EULL }, /* XSUM_XXH3_testdata[1944] */ + { 972, 0x9E3779B185EBCA8DULL, 0x58F574C8DEB88D36ULL }, /* XSUM_XXH3_testdata[1945] */ + { 973, 0x0000000000000000ULL, 0xFD473154ADC32463ULL }, /* XSUM_XXH3_testdata[1946] */ + { 973, 0x9E3779B185EBCA8DULL, 0x74FA64423D24BD54ULL }, /* XSUM_XXH3_testdata[1947] */ + { 974, 0x0000000000000000ULL, 0x79D7095057FB1A01ULL }, /* XSUM_XXH3_testdata[1948] */ + { 974, 0x9E3779B185EBCA8DULL, 0x910CD3E6487021B6ULL }, /* XSUM_XXH3_testdata[1949] */ + { 975, 0x0000000000000000ULL, 0x2C191A1968EAE2A5ULL }, /* XSUM_XXH3_testdata[1950] */ + { 975, 0x9E3779B185EBCA8DULL, 0xC7BE6591F89CB029ULL }, /* XSUM_XXH3_testdata[1951] */ + { 976, 0x0000000000000000ULL, 0x847930F68C337E18ULL }, /* XSUM_XXH3_testdata[1952] */ + { 976, 0x9E3779B185EBCA8DULL, 0x37BAEA0B6E5FF98BULL }, /* XSUM_XXH3_testdata[1953] */ + { 977, 0x0000000000000000ULL, 0x5CCB2E293A449EF5ULL }, /* XSUM_XXH3_testdata[1954] */ + { 977, 0x9E3779B185EBCA8DULL, 0x3D029A1FADD33504ULL }, /* XSUM_XXH3_testdata[1955] */ + { 978, 0x0000000000000000ULL, 0x5BE8E278B6C809D3ULL }, /* XSUM_XXH3_testdata[1956] */ + { 978, 0x9E3779B185EBCA8DULL, 0xC287AC22226D2098ULL }, /* XSUM_XXH3_testdata[1957] */ + { 979, 0x0000000000000000ULL, 0x42B7B8DF99998767ULL }, /* XSUM_XXH3_testdata[1958] */ + { 979, 0x9E3779B185EBCA8DULL, 0x8DA15029F74AB2DEULL }, /* XSUM_XXH3_testdata[1959] */ + { 980, 0x0000000000000000ULL, 0x68F9C7FE0AC0FF69ULL }, /* XSUM_XXH3_testdata[1960] */ + { 980, 0x9E3779B185EBCA8DULL, 0x37995AA9D23FD7E3ULL }, /* XSUM_XXH3_testdata[1961] */ + { 981, 0x0000000000000000ULL, 0xB67A3268F002C6CBULL }, /* XSUM_XXH3_testdata[1962] */ + { 981, 0x9E3779B185EBCA8DULL, 0x82703E08CCCEDC61ULL }, /* XSUM_XXH3_testdata[1963] */ + { 982, 0x0000000000000000ULL, 0xC047953EAE93E73CULL }, /* XSUM_XXH3_testdata[1964] */ + { 982, 0x9E3779B185EBCA8DULL, 0xE60DA263894C9E34ULL }, /* XSUM_XXH3_testdata[1965] */ + { 983, 0x0000000000000000ULL, 0xE08022B8696243A0ULL }, /* XSUM_XXH3_testdata[1966] */ + { 983, 0x9E3779B185EBCA8DULL, 0x6E9D9A802898AC15ULL }, /* XSUM_XXH3_testdata[1967] */ + { 984, 0x0000000000000000ULL, 0x7F68AD9E65D86585ULL }, /* XSUM_XXH3_testdata[1968] */ + { 984, 0x9E3779B185EBCA8DULL, 0xED88D56ECC065575ULL }, /* XSUM_XXH3_testdata[1969] */ + { 985, 0x0000000000000000ULL, 0xF6A5C3B386A60BBFULL }, /* XSUM_XXH3_testdata[1970] */ + { 985, 0x9E3779B185EBCA8DULL, 0x77A345A5E3F88709ULL }, /* XSUM_XXH3_testdata[1971] */ + { 986, 0x0000000000000000ULL, 0x58CC3E909FA9F5BDULL }, /* XSUM_XXH3_testdata[1972] */ + { 986, 0x9E3779B185EBCA8DULL, 0x011D6945236E2C0CULL }, /* XSUM_XXH3_testdata[1973] */ + { 987, 0x0000000000000000ULL, 0x0D47523883F69FA9ULL }, /* XSUM_XXH3_testdata[1974] */ + { 987, 0x9E3779B185EBCA8DULL, 0x570D1E7719E41DC2ULL }, /* XSUM_XXH3_testdata[1975] */ + { 988, 0x0000000000000000ULL, 0x1A1AC46CBBEAAAD1ULL }, /* XSUM_XXH3_testdata[1976] */ + { 988, 0x9E3779B185EBCA8DULL, 0x9AED37FD61F9A416ULL }, /* XSUM_XXH3_testdata[1977] */ + { 989, 0x0000000000000000ULL, 0x8E93C4B050966BB1ULL }, /* XSUM_XXH3_testdata[1978] */ + { 989, 0x9E3779B185EBCA8DULL, 0x108C8174101F0EACULL }, /* XSUM_XXH3_testdata[1979] */ + { 990, 0x0000000000000000ULL, 0xC2EDA1B6BD6749BCULL }, /* XSUM_XXH3_testdata[1980] */ + { 990, 0x9E3779B185EBCA8DULL, 0xEC6BAD1C8B34102DULL }, /* XSUM_XXH3_testdata[1981] */ + { 991, 0x0000000000000000ULL, 0xC7B1972C9C921032ULL }, /* XSUM_XXH3_testdata[1982] */ + { 991, 0x9E3779B185EBCA8DULL, 0xEA5BCA1A20CEDB3EULL }, /* XSUM_XXH3_testdata[1983] */ + { 992, 0x0000000000000000ULL, 0x18C85CB4A2C9A620ULL }, /* XSUM_XXH3_testdata[1984] */ + { 992, 0x9E3779B185EBCA8DULL, 0xB449E17F4B0FDD67ULL }, /* XSUM_XXH3_testdata[1985] */ + { 993, 0x0000000000000000ULL, 0xFEEDE161A30CA03AULL }, /* XSUM_XXH3_testdata[1986] */ + { 993, 0x9E3779B185EBCA8DULL, 0x9F67135085013538ULL }, /* XSUM_XXH3_testdata[1987] */ + { 994, 0x0000000000000000ULL, 0xF6B293974CB25B1AULL }, /* XSUM_XXH3_testdata[1988] */ + { 994, 0x9E3779B185EBCA8DULL, 0x24528E293048D44AULL }, /* XSUM_XXH3_testdata[1989] */ + { 995, 0x0000000000000000ULL, 0x746034558D6E91DEULL }, /* XSUM_XXH3_testdata[1990] */ + { 995, 0x9E3779B185EBCA8DULL, 0x5C3241656A5ACEE4ULL }, /* XSUM_XXH3_testdata[1991] */ + { 996, 0x0000000000000000ULL, 0x2DE3D36B702237AEULL }, /* XSUM_XXH3_testdata[1992] */ + { 996, 0x9E3779B185EBCA8DULL, 0x76F1F1A3E234DE7BULL }, /* XSUM_XXH3_testdata[1993] */ + { 997, 0x0000000000000000ULL, 0x6192470CD9AD6E76ULL }, /* XSUM_XXH3_testdata[1994] */ + { 997, 0x9E3779B185EBCA8DULL, 0x0E079ABD2F1B1C45ULL }, /* XSUM_XXH3_testdata[1995] */ + { 998, 0x0000000000000000ULL, 0x7734E47623D6B685ULL }, /* XSUM_XXH3_testdata[1996] */ + { 998, 0x9E3779B185EBCA8DULL, 0xE3434BA35184F2C1ULL }, /* XSUM_XXH3_testdata[1997] */ + { 999, 0x0000000000000000ULL, 0x55A65708067ACEDCULL }, /* XSUM_XXH3_testdata[1998] */ + { 999, 0x9E3779B185EBCA8DULL, 0x27CC8E3AE8EE40D8ULL }, /* XSUM_XXH3_testdata[1999] */ + { 1000, 0x0000000000000000ULL, 0xACA2DDE0F1951B9AULL }, /* XSUM_XXH3_testdata[2000] */ + { 1000, 0x9E3779B185EBCA8DULL, 0xF4DD9ADF00FFB410ULL }, /* XSUM_XXH3_testdata[2001] */ + { 1001, 0x0000000000000000ULL, 0xE9101423F454BD38ULL }, /* XSUM_XXH3_testdata[2002] */ + { 1001, 0x9E3779B185EBCA8DULL, 0xC68210B5AC8E382BULL }, /* XSUM_XXH3_testdata[2003] */ + { 1002, 0x0000000000000000ULL, 0xF49D4971CEA05084ULL }, /* XSUM_XXH3_testdata[2004] */ + { 1002, 0x9E3779B185EBCA8DULL, 0x3D2A97C8F19264B1ULL }, /* XSUM_XXH3_testdata[2005] */ + { 1003, 0x0000000000000000ULL, 0xBEBD123678D098EDULL }, /* XSUM_XXH3_testdata[2006] */ + { 1003, 0x9E3779B185EBCA8DULL, 0x36DDC18A5C58CB6BULL }, /* XSUM_XXH3_testdata[2007] */ + { 1004, 0x0000000000000000ULL, 0xD386DFEFE995B490ULL }, /* XSUM_XXH3_testdata[2008] */ + { 1004, 0x9E3779B185EBCA8DULL, 0x2F3BC3AA5EF7DC03ULL }, /* XSUM_XXH3_testdata[2009] */ + { 1005, 0x0000000000000000ULL, 0x4E1A567D14E33DE3ULL }, /* XSUM_XXH3_testdata[2010] */ + { 1005, 0x9E3779B185EBCA8DULL, 0xA031BB7B4EB59BB4ULL }, /* XSUM_XXH3_testdata[2011] */ + { 1006, 0x0000000000000000ULL, 0xFC95AF5EB710D6E2ULL }, /* XSUM_XXH3_testdata[2012] */ + { 1006, 0x9E3779B185EBCA8DULL, 0x8AE9398B0A28B5A6ULL }, /* XSUM_XXH3_testdata[2013] */ + { 1007, 0x0000000000000000ULL, 0x3C94D3B1BE27DF09ULL }, /* XSUM_XXH3_testdata[2014] */ + { 1007, 0x9E3779B185EBCA8DULL, 0x1AFF90CE06456B96ULL }, /* XSUM_XXH3_testdata[2015] */ + { 1008, 0x0000000000000000ULL, 0x7443AF3E66764D1EULL }, /* XSUM_XXH3_testdata[2016] */ + { 1008, 0x9E3779B185EBCA8DULL, 0x3F58BAB1AA894D38ULL }, /* XSUM_XXH3_testdata[2017] */ + { 1009, 0x0000000000000000ULL, 0x4380AF6AD92B433CULL }, /* XSUM_XXH3_testdata[2018] */ + { 1009, 0x9E3779B185EBCA8DULL, 0xF32A8F872502E567ULL }, /* XSUM_XXH3_testdata[2019] */ + { 1010, 0x0000000000000000ULL, 0x320660076851588DULL }, /* XSUM_XXH3_testdata[2020] */ + { 1010, 0x9E3779B185EBCA8DULL, 0xA0EA89CBE904A81DULL }, /* XSUM_XXH3_testdata[2021] */ + { 1011, 0x0000000000000000ULL, 0xA9B11CA20334C7EDULL }, /* XSUM_XXH3_testdata[2022] */ + { 1011, 0x9E3779B185EBCA8DULL, 0x58D0282A68653B68ULL }, /* XSUM_XXH3_testdata[2023] */ + { 1012, 0x0000000000000000ULL, 0xC434B9AD89D8BFBAULL }, /* XSUM_XXH3_testdata[2024] */ + { 1012, 0x9E3779B185EBCA8DULL, 0x0653B8DDDF575EA5ULL }, /* XSUM_XXH3_testdata[2025] */ + { 1013, 0x0000000000000000ULL, 0x5791552B6B00AECCULL }, /* XSUM_XXH3_testdata[2026] */ + { 1013, 0x9E3779B185EBCA8DULL, 0x69069D993E0CE6ABULL }, /* XSUM_XXH3_testdata[2027] */ + { 1014, 0x0000000000000000ULL, 0xF74095848CED1A23ULL }, /* XSUM_XXH3_testdata[2028] */ + { 1014, 0x9E3779B185EBCA8DULL, 0x346F7032D6AC56D8ULL }, /* XSUM_XXH3_testdata[2029] */ + { 1015, 0x0000000000000000ULL, 0xBF0615AAE6F0E1D9ULL }, /* XSUM_XXH3_testdata[2030] */ + { 1015, 0x9E3779B185EBCA8DULL, 0xABBA2C176705503BULL }, /* XSUM_XXH3_testdata[2031] */ + { 1016, 0x0000000000000000ULL, 0xC5DBE5C1E77C6B4AULL }, /* XSUM_XXH3_testdata[2032] */ + { 1016, 0x9E3779B185EBCA8DULL, 0x5D66B028CDDB8081ULL }, /* XSUM_XXH3_testdata[2033] */ + { 1017, 0x0000000000000000ULL, 0xFCC3D23FCA4F2F34ULL }, /* XSUM_XXH3_testdata[2034] */ + { 1017, 0x9E3779B185EBCA8DULL, 0xE6F90A0F39E023A0ULL }, /* XSUM_XXH3_testdata[2035] */ + { 1018, 0x0000000000000000ULL, 0x9AB47ADA8C071173ULL }, /* XSUM_XXH3_testdata[2036] */ + { 1018, 0x9E3779B185EBCA8DULL, 0x6D49E13111072E23ULL }, /* XSUM_XXH3_testdata[2037] */ + { 1019, 0x0000000000000000ULL, 0x5C4B1CCBE7064BAAULL }, /* XSUM_XXH3_testdata[2038] */ + { 1019, 0x9E3779B185EBCA8DULL, 0x1F6737EEC7BD8C58ULL }, /* XSUM_XXH3_testdata[2039] */ + { 1020, 0x0000000000000000ULL, 0x0FBE1CF65215FDE2ULL }, /* XSUM_XXH3_testdata[2040] */ + { 1020, 0x9E3779B185EBCA8DULL, 0xE9C7080F15D87D03ULL }, /* XSUM_XXH3_testdata[2041] */ + { 1021, 0x0000000000000000ULL, 0x8770C599A57B5E49ULL }, /* XSUM_XXH3_testdata[2042] */ + { 1021, 0x9E3779B185EBCA8DULL, 0xA3E7956E4C5003B5ULL }, /* XSUM_XXH3_testdata[2043] */ + { 1022, 0x0000000000000000ULL, 0x2086CA2AFA9691C3ULL }, /* XSUM_XXH3_testdata[2044] */ + { 1022, 0x9E3779B185EBCA8DULL, 0x9EE4476C3178A9C6ULL }, /* XSUM_XXH3_testdata[2045] */ + { 1023, 0x0000000000000000ULL, 0x87A8F7B2F2E22496ULL }, /* XSUM_XXH3_testdata[2046] */ + { 1023, 0x9E3779B185EBCA8DULL, 0x0F0F02DE8590E1B5ULL }, /* XSUM_XXH3_testdata[2047] */ + { 1024, 0x0000000000000000ULL, 0xDD85C9B5C1109C5CULL }, /* XSUM_XXH3_testdata[2048] */ + { 1024, 0x9E3779B185EBCA8DULL, 0xEF368A8A2EBABAEFULL }, /* XSUM_XXH3_testdata[2049] */ + { 1025, 0x0000000000000000ULL, 0xD870C0FA13211C6AULL }, /* XSUM_XXH3_testdata[2050] */ + { 1025, 0x9E3779B185EBCA8DULL, 0x96792BCF9AF88519ULL }, /* XSUM_XXH3_testdata[2051] */ + { 1026, 0x0000000000000000ULL, 0x98CE9E9675649F1BULL }, /* XSUM_XXH3_testdata[2052] */ + { 1026, 0x9E3779B185EBCA8DULL, 0x8B5475338DDAF953ULL }, /* XSUM_XXH3_testdata[2053] */ + { 1027, 0x0000000000000000ULL, 0x1DB6A5ED5D936883ULL }, /* XSUM_XXH3_testdata[2054] */ + { 1027, 0x9E3779B185EBCA8DULL, 0xCEF217D93E959D1AULL }, /* XSUM_XXH3_testdata[2055] */ + { 1028, 0x0000000000000000ULL, 0x9C9AD07A2A115FA7ULL }, /* XSUM_XXH3_testdata[2056] */ + { 1028, 0x9E3779B185EBCA8DULL, 0x5D36EACAADB1279BULL }, /* XSUM_XXH3_testdata[2057] */ + { 1029, 0x0000000000000000ULL, 0x155F9CDB78CD7842ULL }, /* XSUM_XXH3_testdata[2058] */ + { 1029, 0x9E3779B185EBCA8DULL, 0xFAA98C40D531E1DEULL }, /* XSUM_XXH3_testdata[2059] */ + { 1030, 0x0000000000000000ULL, 0x7A956CA41E99B600ULL }, /* XSUM_XXH3_testdata[2060] */ + { 1030, 0x9E3779B185EBCA8DULL, 0x0B5360BD1D404FDEULL }, /* XSUM_XXH3_testdata[2061] */ + { 1031, 0x0000000000000000ULL, 0x69DABF166D51A277ULL }, /* XSUM_XXH3_testdata[2062] */ + { 1031, 0x9E3779B185EBCA8DULL, 0x8CA6A3E7C08A8FC3ULL }, /* XSUM_XXH3_testdata[2063] */ + { 1032, 0x0000000000000000ULL, 0x971F86A1BDCFE566ULL }, /* XSUM_XXH3_testdata[2064] */ + { 1032, 0x9E3779B185EBCA8DULL, 0x2E881BB43B229931ULL }, /* XSUM_XXH3_testdata[2065] */ + { 1033, 0x0000000000000000ULL, 0xBE464C7E96B871BAULL }, /* XSUM_XXH3_testdata[2066] */ + { 1033, 0x9E3779B185EBCA8DULL, 0x6F43FF0A9C9EA244ULL }, /* XSUM_XXH3_testdata[2067] */ + { 1034, 0x0000000000000000ULL, 0xC02521049DF92CB8ULL }, /* XSUM_XXH3_testdata[2068] */ + { 1034, 0x9E3779B185EBCA8DULL, 0x3F06DEBD338EA1A5ULL }, /* XSUM_XXH3_testdata[2069] */ + { 1035, 0x0000000000000000ULL, 0x06BBBE5C26B7CB77ULL }, /* XSUM_XXH3_testdata[2070] */ + { 1035, 0x9E3779B185EBCA8DULL, 0xC250E703CD1FBE84ULL }, /* XSUM_XXH3_testdata[2071] */ + { 1036, 0x0000000000000000ULL, 0x01D826626E65A2EEULL }, /* XSUM_XXH3_testdata[2072] */ + { 1036, 0x9E3779B185EBCA8DULL, 0x69A7882D6C8BDE53ULL }, /* XSUM_XXH3_testdata[2073] */ + { 1037, 0x0000000000000000ULL, 0xF063CB9CD4578A55ULL }, /* XSUM_XXH3_testdata[2074] */ + { 1037, 0x9E3779B185EBCA8DULL, 0x3FD4F7F303870465ULL }, /* XSUM_XXH3_testdata[2075] */ + { 1038, 0x0000000000000000ULL, 0x8E349F3D8D9F2F90ULL }, /* XSUM_XXH3_testdata[2076] */ + { 1038, 0x9E3779B185EBCA8DULL, 0x391C8D2CFE8B4B34ULL }, /* XSUM_XXH3_testdata[2077] */ + { 1039, 0x0000000000000000ULL, 0xF1116C1D2A9292B2ULL }, /* XSUM_XXH3_testdata[2078] */ + { 1039, 0x9E3779B185EBCA8DULL, 0xD06F9DAB13FE02D2ULL }, /* XSUM_XXH3_testdata[2079] */ + { 1040, 0x0000000000000000ULL, 0xA76D74A9DE8985A1ULL }, /* XSUM_XXH3_testdata[2080] */ + { 1040, 0x9E3779B185EBCA8DULL, 0x5A4223F66103555EULL }, /* XSUM_XXH3_testdata[2081] */ + { 1041, 0x0000000000000000ULL, 0x3CEFA31E899356DAULL }, /* XSUM_XXH3_testdata[2082] */ + { 1041, 0x9E3779B185EBCA8DULL, 0xF56CAFC19E330D25ULL }, /* XSUM_XXH3_testdata[2083] */ + { 1042, 0x0000000000000000ULL, 0xB6DD00ABD69F904DULL }, /* XSUM_XXH3_testdata[2084] */ + { 1042, 0x9E3779B185EBCA8DULL, 0x8A1A4C162B4E6894ULL }, /* XSUM_XXH3_testdata[2085] */ + { 1043, 0x0000000000000000ULL, 0x8E91C0D2A6A52133ULL }, /* XSUM_XXH3_testdata[2086] */ + { 1043, 0x9E3779B185EBCA8DULL, 0xCC9CAA0268B76274ULL }, /* XSUM_XXH3_testdata[2087] */ + { 1044, 0x0000000000000000ULL, 0xB8C3C0659B2FE068ULL }, /* XSUM_XXH3_testdata[2088] */ + { 1044, 0x9E3779B185EBCA8DULL, 0xBA33A9EA471FDC10ULL }, /* XSUM_XXH3_testdata[2089] */ + { 1045, 0x0000000000000000ULL, 0x2BECBE68662B71E0ULL }, /* XSUM_XXH3_testdata[2090] */ + { 1045, 0x9E3779B185EBCA8DULL, 0x6A8FD42845F6A964ULL }, /* XSUM_XXH3_testdata[2091] */ + { 1046, 0x0000000000000000ULL, 0x4D5C08103EADC069ULL }, /* XSUM_XXH3_testdata[2092] */ + { 1046, 0x9E3779B185EBCA8DULL, 0x25E533F4C6E77AF2ULL }, /* XSUM_XXH3_testdata[2093] */ + { 1047, 0x0000000000000000ULL, 0x76713E6C64770146ULL }, /* XSUM_XXH3_testdata[2094] */ + { 1047, 0x9E3779B185EBCA8DULL, 0x01ECB772F5B9494FULL }, /* XSUM_XXH3_testdata[2095] */ + { 1048, 0x0000000000000000ULL, 0xE052326CFD55516EULL }, /* XSUM_XXH3_testdata[2096] */ + { 1048, 0x9E3779B185EBCA8DULL, 0x676DD5995DED903AULL }, /* XSUM_XXH3_testdata[2097] */ + { 1049, 0x0000000000000000ULL, 0xF7D3712B50172434ULL }, /* XSUM_XXH3_testdata[2098] */ + { 1049, 0x9E3779B185EBCA8DULL, 0x75EE9355894644BDULL }, /* XSUM_XXH3_testdata[2099] */ + { 1050, 0x0000000000000000ULL, 0x8A40AD467C7AEA14ULL }, /* XSUM_XXH3_testdata[2100] */ + { 1050, 0x9E3779B185EBCA8DULL, 0xF5EA7D72E1FD129AULL }, /* XSUM_XXH3_testdata[2101] */ + { 1051, 0x0000000000000000ULL, 0xBCA7110967265077ULL }, /* XSUM_XXH3_testdata[2102] */ + { 1051, 0x9E3779B185EBCA8DULL, 0x4FE88A33E2612E11ULL }, /* XSUM_XXH3_testdata[2103] */ + { 1052, 0x0000000000000000ULL, 0x5B33B788EAD4AD6EULL }, /* XSUM_XXH3_testdata[2104] */ + { 1052, 0x9E3779B185EBCA8DULL, 0xCE71C2965772443BULL }, /* XSUM_XXH3_testdata[2105] */ + { 1053, 0x0000000000000000ULL, 0xA5955CEE33323105ULL }, /* XSUM_XXH3_testdata[2106] */ + { 1053, 0x9E3779B185EBCA8DULL, 0x57A968DEB59A1A8FULL }, /* XSUM_XXH3_testdata[2107] */ + { 1054, 0x0000000000000000ULL, 0x00C093D5578529D4ULL }, /* XSUM_XXH3_testdata[2108] */ + { 1054, 0x9E3779B185EBCA8DULL, 0xCCA75C47DCFF1A43ULL }, /* XSUM_XXH3_testdata[2109] */ + { 1055, 0x0000000000000000ULL, 0xC574284022BCF09BULL }, /* XSUM_XXH3_testdata[2110] */ + { 1055, 0x9E3779B185EBCA8DULL, 0x2A22F1BC3CDC5A70ULL }, /* XSUM_XXH3_testdata[2111] */ + { 1056, 0x0000000000000000ULL, 0xA394C3F1F7C215F1ULL }, /* XSUM_XXH3_testdata[2112] */ + { 1056, 0x9E3779B185EBCA8DULL, 0x7A6839FC8587F140ULL }, /* XSUM_XXH3_testdata[2113] */ + { 1057, 0x0000000000000000ULL, 0x36E45F0DDC00F0C5ULL }, /* XSUM_XXH3_testdata[2114] */ + { 1057, 0x9E3779B185EBCA8DULL, 0xF2219916F1A03E0BULL }, /* XSUM_XXH3_testdata[2115] */ + { 1058, 0x0000000000000000ULL, 0x4E18A246FF6AAB29ULL }, /* XSUM_XXH3_testdata[2116] */ + { 1058, 0x9E3779B185EBCA8DULL, 0xD0B5D80ABCB8BB3CULL }, /* XSUM_XXH3_testdata[2117] */ + { 1059, 0x0000000000000000ULL, 0x424271DBB727328DULL }, /* XSUM_XXH3_testdata[2118] */ + { 1059, 0x9E3779B185EBCA8DULL, 0xE9C25F7ADF790E5BULL }, /* XSUM_XXH3_testdata[2119] */ + { 1060, 0x0000000000000000ULL, 0xE1E6A2BAADFD5436ULL }, /* XSUM_XXH3_testdata[2120] */ + { 1060, 0x9E3779B185EBCA8DULL, 0x707E4C8B5557992BULL }, /* XSUM_XXH3_testdata[2121] */ + { 1061, 0x0000000000000000ULL, 0x6B23AAE562F38052ULL }, /* XSUM_XXH3_testdata[2122] */ + { 1061, 0x9E3779B185EBCA8DULL, 0x8F51CA25CD06EE06ULL }, /* XSUM_XXH3_testdata[2123] */ + { 1062, 0x0000000000000000ULL, 0x922F0B0A6821EC73ULL }, /* XSUM_XXH3_testdata[2124] */ + { 1062, 0x9E3779B185EBCA8DULL, 0x6F02284C71B0553DULL }, /* XSUM_XXH3_testdata[2125] */ + { 1063, 0x0000000000000000ULL, 0x21CE5A98ADE6EC74ULL }, /* XSUM_XXH3_testdata[2126] */ + { 1063, 0x9E3779B185EBCA8DULL, 0xE5E240032388491DULL }, /* XSUM_XXH3_testdata[2127] */ + { 1064, 0x0000000000000000ULL, 0x226089CE44092546ULL }, /* XSUM_XXH3_testdata[2128] */ + { 1064, 0x9E3779B185EBCA8DULL, 0xFA0F692527A8AACAULL }, /* XSUM_XXH3_testdata[2129] */ + { 1065, 0x0000000000000000ULL, 0xF83D6BCACA56EF8DULL }, /* XSUM_XXH3_testdata[2130] */ + { 1065, 0x9E3779B185EBCA8DULL, 0xA25F4EFAF8AE785BULL }, /* XSUM_XXH3_testdata[2131] */ + { 1066, 0x0000000000000000ULL, 0xA5780B150D253C20ULL }, /* XSUM_XXH3_testdata[2132] */ + { 1066, 0x9E3779B185EBCA8DULL, 0x39A8B561DF5E62C7ULL }, /* XSUM_XXH3_testdata[2133] */ + { 1067, 0x0000000000000000ULL, 0x9E3EA16A1A56EAF4ULL }, /* XSUM_XXH3_testdata[2134] */ + { 1067, 0x9E3779B185EBCA8DULL, 0xD91162AE17557C82ULL }, /* XSUM_XXH3_testdata[2135] */ + { 1068, 0x0000000000000000ULL, 0x5E348E5F8475647CULL }, /* XSUM_XXH3_testdata[2136] */ + { 1068, 0x9E3779B185EBCA8DULL, 0x177B8B886C394ABFULL }, /* XSUM_XXH3_testdata[2137] */ + { 1069, 0x0000000000000000ULL, 0xCC930082EA2B699DULL }, /* XSUM_XXH3_testdata[2138] */ + { 1069, 0x9E3779B185EBCA8DULL, 0xD0634BFF738E64ABULL }, /* XSUM_XXH3_testdata[2139] */ + { 1070, 0x0000000000000000ULL, 0x2E7BCEAE98217341ULL }, /* XSUM_XXH3_testdata[2140] */ + { 1070, 0x9E3779B185EBCA8DULL, 0x06042D86277FF953ULL }, /* XSUM_XXH3_testdata[2141] */ + { 1071, 0x0000000000000000ULL, 0x04EB23B8ACA687A0ULL }, /* XSUM_XXH3_testdata[2142] */ + { 1071, 0x9E3779B185EBCA8DULL, 0xD8AD2ECEE6693D59ULL }, /* XSUM_XXH3_testdata[2143] */ + { 1072, 0x0000000000000000ULL, 0xF9D9E49384694B5CULL }, /* XSUM_XXH3_testdata[2144] */ + { 1072, 0x9E3779B185EBCA8DULL, 0x06858C7D4097A8FDULL }, /* XSUM_XXH3_testdata[2145] */ + { 1073, 0x0000000000000000ULL, 0xFCFC273C1C3CFB70ULL }, /* XSUM_XXH3_testdata[2146] */ + { 1073, 0x9E3779B185EBCA8DULL, 0x298D6455960EDC32ULL }, /* XSUM_XXH3_testdata[2147] */ + { 1074, 0x0000000000000000ULL, 0x4C838F49AB57B711ULL }, /* XSUM_XXH3_testdata[2148] */ + { 1074, 0x9E3779B185EBCA8DULL, 0x76902BE06AA3A02CULL }, /* XSUM_XXH3_testdata[2149] */ + { 1075, 0x0000000000000000ULL, 0x6CD6B8F2FDF983FCULL }, /* XSUM_XXH3_testdata[2150] */ + { 1075, 0x9E3779B185EBCA8DULL, 0xF4E4814148E4D8E6ULL }, /* XSUM_XXH3_testdata[2151] */ + { 1076, 0x0000000000000000ULL, 0x3EFD3A63B144CFA8ULL }, /* XSUM_XXH3_testdata[2152] */ + { 1076, 0x9E3779B185EBCA8DULL, 0x1A340811E276CE1DULL }, /* XSUM_XXH3_testdata[2153] */ + { 1077, 0x0000000000000000ULL, 0x416950898625678DULL }, /* XSUM_XXH3_testdata[2154] */ + { 1077, 0x9E3779B185EBCA8DULL, 0xBF32A6D767D50C3AULL }, /* XSUM_XXH3_testdata[2155] */ + { 1078, 0x0000000000000000ULL, 0x8F783EA38EC1D973ULL }, /* XSUM_XXH3_testdata[2156] */ + { 1078, 0x9E3779B185EBCA8DULL, 0x236D3512BB1A8A4DULL }, /* XSUM_XXH3_testdata[2157] */ + { 1079, 0x0000000000000000ULL, 0xC97A3FE9CE7D4D19ULL }, /* XSUM_XXH3_testdata[2158] */ + { 1079, 0x9E3779B185EBCA8DULL, 0xF2BF4205B22DE248ULL }, /* XSUM_XXH3_testdata[2159] */ + { 1080, 0x0000000000000000ULL, 0x88EE634F95763B2EULL }, /* XSUM_XXH3_testdata[2160] */ + { 1080, 0x9E3779B185EBCA8DULL, 0x0FCB8B82F171CC63ULL }, /* XSUM_XXH3_testdata[2161] */ + { 1081, 0x0000000000000000ULL, 0x1B214241194C97A8ULL }, /* XSUM_XXH3_testdata[2162] */ + { 1081, 0x9E3779B185EBCA8DULL, 0xCC5FD4B0D510ABD7ULL }, /* XSUM_XXH3_testdata[2163] */ + { 1082, 0x0000000000000000ULL, 0x1480A22110AD0CA8ULL }, /* XSUM_XXH3_testdata[2164] */ + { 1082, 0x9E3779B185EBCA8DULL, 0x62B1C2F035D5819CULL }, /* XSUM_XXH3_testdata[2165] */ + { 1083, 0x0000000000000000ULL, 0xA90E39E7A1DC5288ULL }, /* XSUM_XXH3_testdata[2166] */ + { 1083, 0x9E3779B185EBCA8DULL, 0x4F125217DFE431E8ULL }, /* XSUM_XXH3_testdata[2167] */ + { 1084, 0x0000000000000000ULL, 0xB3D8CF0593E45180ULL }, /* XSUM_XXH3_testdata[2168] */ + { 1084, 0x9E3779B185EBCA8DULL, 0xA08D501EED801F54ULL }, /* XSUM_XXH3_testdata[2169] */ + { 1085, 0x0000000000000000ULL, 0xCD2309AD6918F6F2ULL }, /* XSUM_XXH3_testdata[2170] */ + { 1085, 0x9E3779B185EBCA8DULL, 0x2D64ED1AAB430EA6ULL }, /* XSUM_XXH3_testdata[2171] */ + { 1086, 0x0000000000000000ULL, 0x34E17D2E5B1E92B5ULL }, /* XSUM_XXH3_testdata[2172] */ + { 1086, 0x9E3779B185EBCA8DULL, 0x20DA04F2065565C4ULL }, /* XSUM_XXH3_testdata[2173] */ + { 1087, 0x0000000000000000ULL, 0x047F181E7C8A41B9ULL }, /* XSUM_XXH3_testdata[2174] */ + { 1087, 0x9E3779B185EBCA8DULL, 0x9DDA30BBBF69BF13ULL }, /* XSUM_XXH3_testdata[2175] */ + { 1088, 0x0000000000000000ULL, 0xCC1450EA6B52A8F4ULL }, /* XSUM_XXH3_testdata[2176] */ + { 1088, 0x9E3779B185EBCA8DULL, 0x542632D046F3DDE4ULL }, /* XSUM_XXH3_testdata[2177] */ + { 1089, 0x0000000000000000ULL, 0xEF727B2EFFC4CC8CULL }, /* XSUM_XXH3_testdata[2178] */ + { 1089, 0x9E3779B185EBCA8DULL, 0xFF8423D886707134ULL }, /* XSUM_XXH3_testdata[2179] */ + { 1090, 0x0000000000000000ULL, 0x89F412FD6ED3162DULL }, /* XSUM_XXH3_testdata[2180] */ + { 1090, 0x9E3779B185EBCA8DULL, 0x9401D08008982DEEULL }, /* XSUM_XXH3_testdata[2181] */ + { 1091, 0x0000000000000000ULL, 0x35ACEEEADFE96151ULL }, /* XSUM_XXH3_testdata[2182] */ + { 1091, 0x9E3779B185EBCA8DULL, 0x55D5220408C11995ULL }, /* XSUM_XXH3_testdata[2183] */ + { 1092, 0x0000000000000000ULL, 0xCE09B91AD5477E4FULL }, /* XSUM_XXH3_testdata[2184] */ + { 1092, 0x9E3779B185EBCA8DULL, 0x09E625B5CA2769E9ULL }, /* XSUM_XXH3_testdata[2185] */ + { 1093, 0x0000000000000000ULL, 0x934DA47BA7D6BA54ULL }, /* XSUM_XXH3_testdata[2186] */ + { 1093, 0x9E3779B185EBCA8DULL, 0x88E0DD3E5B1F5097ULL }, /* XSUM_XXH3_testdata[2187] */ + { 1094, 0x0000000000000000ULL, 0xF8B5D69781586327ULL }, /* XSUM_XXH3_testdata[2188] */ + { 1094, 0x9E3779B185EBCA8DULL, 0x4ECC1C9119FB5B6DULL }, /* XSUM_XXH3_testdata[2189] */ + { 1095, 0x0000000000000000ULL, 0x23F7942250DDDC49ULL }, /* XSUM_XXH3_testdata[2190] */ + { 1095, 0x9E3779B185EBCA8DULL, 0x8D2E379DC1BBB0B6ULL }, /* XSUM_XXH3_testdata[2191] */ + { 1096, 0x0000000000000000ULL, 0xC3FFA06BC20EC335ULL }, /* XSUM_XXH3_testdata[2192] */ + { 1096, 0x9E3779B185EBCA8DULL, 0x29F3F7B49529DFBAULL }, /* XSUM_XXH3_testdata[2193] */ + { 1097, 0x0000000000000000ULL, 0x0FDB704FE2D24016ULL }, /* XSUM_XXH3_testdata[2194] */ + { 1097, 0x9E3779B185EBCA8DULL, 0xEF7EA7F97634AA97ULL }, /* XSUM_XXH3_testdata[2195] */ + { 1098, 0x0000000000000000ULL, 0x267345655DF0F5BAULL }, /* XSUM_XXH3_testdata[2196] */ + { 1098, 0x9E3779B185EBCA8DULL, 0x23FDC7F3BB95FA27ULL }, /* XSUM_XXH3_testdata[2197] */ + { 1099, 0x0000000000000000ULL, 0x08DC1E6E3BE4AE5EULL }, /* XSUM_XXH3_testdata[2198] */ + { 1099, 0x9E3779B185EBCA8DULL, 0x3AAB786A79D625C6ULL }, /* XSUM_XXH3_testdata[2199] */ + { 1100, 0x0000000000000000ULL, 0xA2E4365683A60391ULL }, /* XSUM_XXH3_testdata[2200] */ + { 1100, 0x9E3779B185EBCA8DULL, 0xC91EE43AE9B51D71ULL }, /* XSUM_XXH3_testdata[2201] */ + { 1101, 0x0000000000000000ULL, 0xA42E215373B168AEULL }, /* XSUM_XXH3_testdata[2202] */ + { 1101, 0x9E3779B185EBCA8DULL, 0xD08292BB94F66639ULL }, /* XSUM_XXH3_testdata[2203] */ + { 1102, 0x0000000000000000ULL, 0x151F8D631922BAF2ULL }, /* XSUM_XXH3_testdata[2204] */ + { 1102, 0x9E3779B185EBCA8DULL, 0x1251E29366620135ULL }, /* XSUM_XXH3_testdata[2205] */ + { 1103, 0x0000000000000000ULL, 0x6CA10D173172CE90ULL }, /* XSUM_XXH3_testdata[2206] */ + { 1103, 0x9E3779B185EBCA8DULL, 0x31A6B88EC2171A6AULL }, /* XSUM_XXH3_testdata[2207] */ + { 1104, 0x0000000000000000ULL, 0xFDB6BFA13BEA50FEULL }, /* XSUM_XXH3_testdata[2208] */ + { 1104, 0x9E3779B185EBCA8DULL, 0x3E23E34491EB0A37ULL }, /* XSUM_XXH3_testdata[2209] */ + { 1105, 0x0000000000000000ULL, 0xDB5AAD73409F3CA7ULL }, /* XSUM_XXH3_testdata[2210] */ + { 1105, 0x9E3779B185EBCA8DULL, 0x936B96924E95975EULL }, /* XSUM_XXH3_testdata[2211] */ + { 1106, 0x0000000000000000ULL, 0x8EA70DDBFBFFB140ULL }, /* XSUM_XXH3_testdata[2212] */ + { 1106, 0x9E3779B185EBCA8DULL, 0x50E07E50BE70454CULL }, /* XSUM_XXH3_testdata[2213] */ + { 1107, 0x0000000000000000ULL, 0x2CB3D9534FC396ECULL }, /* XSUM_XXH3_testdata[2214] */ + { 1107, 0x9E3779B185EBCA8DULL, 0xE59E31F8D0400D3DULL }, /* XSUM_XXH3_testdata[2215] */ + { 1108, 0x0000000000000000ULL, 0xD29D3A025A1690E4ULL }, /* XSUM_XXH3_testdata[2216] */ + { 1108, 0x9E3779B185EBCA8DULL, 0x37288A9CB07E3D96ULL }, /* XSUM_XXH3_testdata[2217] */ + { 1109, 0x0000000000000000ULL, 0x3D01DAA3D4BD963EULL }, /* XSUM_XXH3_testdata[2218] */ + { 1109, 0x9E3779B185EBCA8DULL, 0xB526662C90236A2DULL }, /* XSUM_XXH3_testdata[2219] */ + { 1110, 0x0000000000000000ULL, 0x20274CB54F3E997EULL }, /* XSUM_XXH3_testdata[2220] */ + { 1110, 0x9E3779B185EBCA8DULL, 0x18BB398F2D7573BFULL }, /* XSUM_XXH3_testdata[2221] */ + { 1111, 0x0000000000000000ULL, 0x535C077415D1946DULL }, /* XSUM_XXH3_testdata[2222] */ + { 1111, 0x9E3779B185EBCA8DULL, 0xDC251C067D8BD955ULL }, /* XSUM_XXH3_testdata[2223] */ + { 1112, 0x0000000000000000ULL, 0x65C3CBC5E82A6835ULL }, /* XSUM_XXH3_testdata[2224] */ + { 1112, 0x9E3779B185EBCA8DULL, 0x07BFDF0D944A5C57ULL }, /* XSUM_XXH3_testdata[2225] */ + { 1113, 0x0000000000000000ULL, 0x68D7660406B2EDC4ULL }, /* XSUM_XXH3_testdata[2226] */ + { 1113, 0x9E3779B185EBCA8DULL, 0x95418F648D646CA3ULL }, /* XSUM_XXH3_testdata[2227] */ + { 1114, 0x0000000000000000ULL, 0x1F244DA0A9F0EBE3ULL }, /* XSUM_XXH3_testdata[2228] */ + { 1114, 0x9E3779B185EBCA8DULL, 0xB3E9095AF38024DFULL }, /* XSUM_XXH3_testdata[2229] */ + { 1115, 0x0000000000000000ULL, 0xD9621C941623B268ULL }, /* XSUM_XXH3_testdata[2230] */ + { 1115, 0x9E3779B185EBCA8DULL, 0x2C45FEF9EF363D5AULL }, /* XSUM_XXH3_testdata[2231] */ + { 1116, 0x0000000000000000ULL, 0x41AF96D52DCB9BF8ULL }, /* XSUM_XXH3_testdata[2232] */ + { 1116, 0x9E3779B185EBCA8DULL, 0x6F201C12240137D9ULL }, /* XSUM_XXH3_testdata[2233] */ + { 1117, 0x0000000000000000ULL, 0xA2149B7CE171D9B1ULL }, /* XSUM_XXH3_testdata[2234] */ + { 1117, 0x9E3779B185EBCA8DULL, 0x11394E35AC357B5CULL }, /* XSUM_XXH3_testdata[2235] */ + { 1118, 0x0000000000000000ULL, 0xA3A1E85D4187AB76ULL }, /* XSUM_XXH3_testdata[2236] */ + { 1118, 0x9E3779B185EBCA8DULL, 0x670D7249F1A3FCF1ULL }, /* XSUM_XXH3_testdata[2237] */ + { 1119, 0x0000000000000000ULL, 0xA831366CE6D0A015ULL }, /* XSUM_XXH3_testdata[2238] */ + { 1119, 0x9E3779B185EBCA8DULL, 0x90C64A736F00FE4FULL }, /* XSUM_XXH3_testdata[2239] */ + { 1120, 0x0000000000000000ULL, 0xCB2A01BE10913FE8ULL }, /* XSUM_XXH3_testdata[2240] */ + { 1120, 0x9E3779B185EBCA8DULL, 0x1B9BDB62E75C91F8ULL }, /* XSUM_XXH3_testdata[2241] */ + { 1121, 0x0000000000000000ULL, 0x926B4876BA26C868ULL }, /* XSUM_XXH3_testdata[2242] */ + { 1121, 0x9E3779B185EBCA8DULL, 0x67046D7374E193D8ULL }, /* XSUM_XXH3_testdata[2243] */ + { 1122, 0x0000000000000000ULL, 0x1DED852A9AF3BDDDULL }, /* XSUM_XXH3_testdata[2244] */ + { 1122, 0x9E3779B185EBCA8DULL, 0xED4D97245B36909FULL }, /* XSUM_XXH3_testdata[2245] */ + { 1123, 0x0000000000000000ULL, 0x567A4339BF18DCD3ULL }, /* XSUM_XXH3_testdata[2246] */ + { 1123, 0x9E3779B185EBCA8DULL, 0x2C4C54BAB4E0D7AEULL }, /* XSUM_XXH3_testdata[2247] */ + { 1124, 0x0000000000000000ULL, 0x25FEE25F53DBE3A8ULL }, /* XSUM_XXH3_testdata[2248] */ + { 1124, 0x9E3779B185EBCA8DULL, 0x405315AE00B8A986ULL }, /* XSUM_XXH3_testdata[2249] */ + { 1125, 0x0000000000000000ULL, 0x3FE1721559FFBC72ULL }, /* XSUM_XXH3_testdata[2250] */ + { 1125, 0x9E3779B185EBCA8DULL, 0xB8F5C2BEF091AC93ULL }, /* XSUM_XXH3_testdata[2251] */ + { 1126, 0x0000000000000000ULL, 0x50DF0CE31B152CB0ULL }, /* XSUM_XXH3_testdata[2252] */ + { 1126, 0x9E3779B185EBCA8DULL, 0x5B30F80DD455185BULL }, /* XSUM_XXH3_testdata[2253] */ + { 1127, 0x0000000000000000ULL, 0x47BED516867314E4ULL }, /* XSUM_XXH3_testdata[2254] */ + { 1127, 0x9E3779B185EBCA8DULL, 0x3CC4B630893CE8E6ULL }, /* XSUM_XXH3_testdata[2255] */ + { 1128, 0x0000000000000000ULL, 0x1EF8A6EE399E57D0ULL }, /* XSUM_XXH3_testdata[2256] */ + { 1128, 0x9E3779B185EBCA8DULL, 0x84913A2F69B5E095ULL }, /* XSUM_XXH3_testdata[2257] */ + { 1129, 0x0000000000000000ULL, 0x2B6BF915D838BA37ULL }, /* XSUM_XXH3_testdata[2258] */ + { 1129, 0x9E3779B185EBCA8DULL, 0x9F7F65EB9F75BBBCULL }, /* XSUM_XXH3_testdata[2259] */ + { 1130, 0x0000000000000000ULL, 0xE3899E185F0E6802ULL }, /* XSUM_XXH3_testdata[2260] */ + { 1130, 0x9E3779B185EBCA8DULL, 0x1499DD150136E7E1ULL }, /* XSUM_XXH3_testdata[2261] */ + { 1131, 0x0000000000000000ULL, 0xE1D1B784229995DEULL }, /* XSUM_XXH3_testdata[2262] */ + { 1131, 0x9E3779B185EBCA8DULL, 0x51A5FE1716C1F1D6ULL }, /* XSUM_XXH3_testdata[2263] */ + { 1132, 0x0000000000000000ULL, 0x87901B4D8E92F707ULL }, /* XSUM_XXH3_testdata[2264] */ + { 1132, 0x9E3779B185EBCA8DULL, 0x33AC4E72130C886AULL }, /* XSUM_XXH3_testdata[2265] */ + { 1133, 0x0000000000000000ULL, 0x714C8A36A1DC2505ULL }, /* XSUM_XXH3_testdata[2266] */ + { 1133, 0x9E3779B185EBCA8DULL, 0xF833FAA2E9F8B356ULL }, /* XSUM_XXH3_testdata[2267] */ + { 1134, 0x0000000000000000ULL, 0xF7DCA61CB5BC30D6ULL }, /* XSUM_XXH3_testdata[2268] */ + { 1134, 0x9E3779B185EBCA8DULL, 0xB0327515BE8AD7D7ULL }, /* XSUM_XXH3_testdata[2269] */ + { 1135, 0x0000000000000000ULL, 0xF69A9C5CCA2DF6E7ULL }, /* XSUM_XXH3_testdata[2270] */ + { 1135, 0x9E3779B185EBCA8DULL, 0xF77C95BD632E961EULL }, /* XSUM_XXH3_testdata[2271] */ + { 1136, 0x0000000000000000ULL, 0xB66FDAC8A6FA8971ULL }, /* XSUM_XXH3_testdata[2272] */ + { 1136, 0x9E3779B185EBCA8DULL, 0x192181B62FABCA63ULL }, /* XSUM_XXH3_testdata[2273] */ + { 1137, 0x0000000000000000ULL, 0x0D5273B6C4D4C5ACULL }, /* XSUM_XXH3_testdata[2274] */ + { 1137, 0x9E3779B185EBCA8DULL, 0x18482773977A216BULL }, /* XSUM_XXH3_testdata[2275] */ + { 1138, 0x0000000000000000ULL, 0xE966D7C30A58470AULL }, /* XSUM_XXH3_testdata[2276] */ + { 1138, 0x9E3779B185EBCA8DULL, 0x0DFA80657CFB01A4ULL }, /* XSUM_XXH3_testdata[2277] */ + { 1139, 0x0000000000000000ULL, 0x5259C45D43DBE53EULL }, /* XSUM_XXH3_testdata[2278] */ + { 1139, 0x9E3779B185EBCA8DULL, 0x6C18EE35FC320C14ULL }, /* XSUM_XXH3_testdata[2279] */ + { 1140, 0x0000000000000000ULL, 0xFB9AFE9E8341A37AULL }, /* XSUM_XXH3_testdata[2280] */ + { 1140, 0x9E3779B185EBCA8DULL, 0x7EACD8D28F36F2DBULL }, /* XSUM_XXH3_testdata[2281] */ + { 1141, 0x0000000000000000ULL, 0xA5A57C3AB93B041EULL }, /* XSUM_XXH3_testdata[2282] */ + { 1141, 0x9E3779B185EBCA8DULL, 0x1C9C1190FA766E90ULL }, /* XSUM_XXH3_testdata[2283] */ + { 1142, 0x0000000000000000ULL, 0x4FA60243C1D9CFC7ULL }, /* XSUM_XXH3_testdata[2284] */ + { 1142, 0x9E3779B185EBCA8DULL, 0x87DC592B1BE2BF3EULL }, /* XSUM_XXH3_testdata[2285] */ + { 1143, 0x0000000000000000ULL, 0x2A2F9060C75659ABULL }, /* XSUM_XXH3_testdata[2286] */ + { 1143, 0x9E3779B185EBCA8DULL, 0x21FBFB1EF1D23899ULL }, /* XSUM_XXH3_testdata[2287] */ + { 1144, 0x0000000000000000ULL, 0x95A486382492BF45ULL }, /* XSUM_XXH3_testdata[2288] */ + { 1144, 0x9E3779B185EBCA8DULL, 0xB20CCD731AF9E696ULL }, /* XSUM_XXH3_testdata[2289] */ + { 1145, 0x0000000000000000ULL, 0x58CE092D9AAB9B92ULL }, /* XSUM_XXH3_testdata[2290] */ + { 1145, 0x9E3779B185EBCA8DULL, 0x86C5C6FE0D4772C7ULL }, /* XSUM_XXH3_testdata[2291] */ + { 1146, 0x0000000000000000ULL, 0x2B667E781A3E3B39ULL }, /* XSUM_XXH3_testdata[2292] */ + { 1146, 0x9E3779B185EBCA8DULL, 0x30E430D337512CABULL }, /* XSUM_XXH3_testdata[2293] */ + { 1147, 0x0000000000000000ULL, 0xE3FDBC1329BC7311ULL }, /* XSUM_XXH3_testdata[2294] */ + { 1147, 0x9E3779B185EBCA8DULL, 0x5148F9DD7AFCB065ULL }, /* XSUM_XXH3_testdata[2295] */ + { 1148, 0x0000000000000000ULL, 0xCF6D44DEAE45F6C1ULL }, /* XSUM_XXH3_testdata[2296] */ + { 1148, 0x9E3779B185EBCA8DULL, 0x52981C66CC0CA09DULL }, /* XSUM_XXH3_testdata[2297] */ + { 1149, 0x0000000000000000ULL, 0x9FA5149C1E410A10ULL }, /* XSUM_XXH3_testdata[2298] */ + { 1149, 0x9E3779B185EBCA8DULL, 0x3C0AEE0E925A6134ULL }, /* XSUM_XXH3_testdata[2299] */ + { 1150, 0x0000000000000000ULL, 0xA3F61AC5C9AC2CB4ULL }, /* XSUM_XXH3_testdata[2300] */ + { 1150, 0x9E3779B185EBCA8DULL, 0x834BA906F8130A85ULL }, /* XSUM_XXH3_testdata[2301] */ + { 1151, 0x0000000000000000ULL, 0x7153F50FED4BA56AULL }, /* XSUM_XXH3_testdata[2302] */ + { 1151, 0x9E3779B185EBCA8DULL, 0x0AE7204E79BBEB04ULL }, /* XSUM_XXH3_testdata[2303] */ + { 1152, 0x0000000000000000ULL, 0x8D10F861683EB1DDULL }, /* XSUM_XXH3_testdata[2304] */ + { 1152, 0x9E3779B185EBCA8DULL, 0xCFE2924BF8DDE23FULL }, /* XSUM_XXH3_testdata[2305] */ + { 1153, 0x0000000000000000ULL, 0x252E89C8B0620818ULL }, /* XSUM_XXH3_testdata[2306] */ + { 1153, 0x9E3779B185EBCA8DULL, 0xC6DC90A02641B916ULL }, /* XSUM_XXH3_testdata[2307] */ + { 1154, 0x0000000000000000ULL, 0x311FA7F0D2EDF339ULL }, /* XSUM_XXH3_testdata[2308] */ + { 1154, 0x9E3779B185EBCA8DULL, 0xB8E4C7A1170A3DAFULL }, /* XSUM_XXH3_testdata[2309] */ + { 1155, 0x0000000000000000ULL, 0x4169E14522944D4BULL }, /* XSUM_XXH3_testdata[2310] */ + { 1155, 0x9E3779B185EBCA8DULL, 0x5F2A1BA5122ECCB3ULL }, /* XSUM_XXH3_testdata[2311] */ + { 1156, 0x0000000000000000ULL, 0xA7FC6341379A1C87ULL }, /* XSUM_XXH3_testdata[2312] */ + { 1156, 0x9E3779B185EBCA8DULL, 0xFE49682AA0CEF4B7ULL }, /* XSUM_XXH3_testdata[2313] */ + { 1157, 0x0000000000000000ULL, 0x73F986F4372BEBB0ULL }, /* XSUM_XXH3_testdata[2314] */ + { 1157, 0x9E3779B185EBCA8DULL, 0x9002BED3D9E0A393ULL }, /* XSUM_XXH3_testdata[2315] */ + { 1158, 0x0000000000000000ULL, 0x4E1447A6BE5E402CULL }, /* XSUM_XXH3_testdata[2316] */ + { 1158, 0x9E3779B185EBCA8DULL, 0xDD545BD05F40925EULL }, /* XSUM_XXH3_testdata[2317] */ + { 1159, 0x0000000000000000ULL, 0xA3D95CC9126FE6DFULL }, /* XSUM_XXH3_testdata[2318] */ + { 1159, 0x9E3779B185EBCA8DULL, 0x03A8D27CA2B2D76AULL }, /* XSUM_XXH3_testdata[2319] */ + { 1160, 0x0000000000000000ULL, 0x33C5E608FD1DCAACULL }, /* XSUM_XXH3_testdata[2320] */ + { 1160, 0x9E3779B185EBCA8DULL, 0x40688062F1E7B6FFULL }, /* XSUM_XXH3_testdata[2321] */ + { 1161, 0x0000000000000000ULL, 0x6B02FA3CCF0807B9ULL }, /* XSUM_XXH3_testdata[2322] */ + { 1161, 0x9E3779B185EBCA8DULL, 0x43F4ECDD94066F7DULL }, /* XSUM_XXH3_testdata[2323] */ + { 1162, 0x0000000000000000ULL, 0xE1AD8D763CC16027ULL }, /* XSUM_XXH3_testdata[2324] */ + { 1162, 0x9E3779B185EBCA8DULL, 0xC6700710D9B395B0ULL }, /* XSUM_XXH3_testdata[2325] */ + { 1163, 0x0000000000000000ULL, 0x573093F71A1634B7ULL }, /* XSUM_XXH3_testdata[2326] */ + { 1163, 0x9E3779B185EBCA8DULL, 0x68E92EB26219F13FULL }, /* XSUM_XXH3_testdata[2327] */ + { 1164, 0x0000000000000000ULL, 0x9DEBD4109474D726ULL }, /* XSUM_XXH3_testdata[2328] */ + { 1164, 0x9E3779B185EBCA8DULL, 0x5A6788F657CD633BULL }, /* XSUM_XXH3_testdata[2329] */ + { 1165, 0x0000000000000000ULL, 0x1FF83F00B1BA6967ULL }, /* XSUM_XXH3_testdata[2330] */ + { 1165, 0x9E3779B185EBCA8DULL, 0xE699B831D005AA77ULL }, /* XSUM_XXH3_testdata[2331] */ + { 1166, 0x0000000000000000ULL, 0xADF8173CC6FC46F1ULL }, /* XSUM_XXH3_testdata[2332] */ + { 1166, 0x9E3779B185EBCA8DULL, 0xC594148173266FDAULL }, /* XSUM_XXH3_testdata[2333] */ + { 1167, 0x0000000000000000ULL, 0xB9D3BAD7E7FC06D6ULL }, /* XSUM_XXH3_testdata[2334] */ + { 1167, 0x9E3779B185EBCA8DULL, 0xF8A28AE7386C9CA6ULL }, /* XSUM_XXH3_testdata[2335] */ + { 1168, 0x0000000000000000ULL, 0x2481831BA46F2CADULL }, /* XSUM_XXH3_testdata[2336] */ + { 1168, 0x9E3779B185EBCA8DULL, 0xB335B696CA795EE7ULL }, /* XSUM_XXH3_testdata[2337] */ + { 1169, 0x0000000000000000ULL, 0x02DC7BCE7DCAE4A8ULL }, /* XSUM_XXH3_testdata[2338] */ + { 1169, 0x9E3779B185EBCA8DULL, 0xE348E8AA3E73F106ULL }, /* XSUM_XXH3_testdata[2339] */ + { 1170, 0x0000000000000000ULL, 0x79061966F462DCDAULL }, /* XSUM_XXH3_testdata[2340] */ + { 1170, 0x9E3779B185EBCA8DULL, 0x4991A0E944442A33ULL }, /* XSUM_XXH3_testdata[2341] */ + { 1171, 0x0000000000000000ULL, 0xAAB7B2C920767186ULL }, /* XSUM_XXH3_testdata[2342] */ + { 1171, 0x9E3779B185EBCA8DULL, 0x1644853718A82C48ULL }, /* XSUM_XXH3_testdata[2343] */ + { 1172, 0x0000000000000000ULL, 0x377984BBDC972C61ULL }, /* XSUM_XXH3_testdata[2344] */ + { 1172, 0x9E3779B185EBCA8DULL, 0xBFCC79B556D0FAD1ULL }, /* XSUM_XXH3_testdata[2345] */ + { 1173, 0x0000000000000000ULL, 0x0B774EDF492C83B0ULL }, /* XSUM_XXH3_testdata[2346] */ + { 1173, 0x9E3779B185EBCA8DULL, 0x3B7CE54D4FF74975ULL }, /* XSUM_XXH3_testdata[2347] */ + { 1174, 0x0000000000000000ULL, 0xD9956AE7D21B2F84ULL }, /* XSUM_XXH3_testdata[2348] */ + { 1174, 0x9E3779B185EBCA8DULL, 0xB73ACE5844F5D7AAULL }, /* XSUM_XXH3_testdata[2349] */ + { 1175, 0x0000000000000000ULL, 0x254AC4049415B36EULL }, /* XSUM_XXH3_testdata[2350] */ + { 1175, 0x9E3779B185EBCA8DULL, 0xDA2B6F4CFD587974ULL }, /* XSUM_XXH3_testdata[2351] */ + { 1176, 0x0000000000000000ULL, 0x763F66686DCB793EULL }, /* XSUM_XXH3_testdata[2352] */ + { 1176, 0x9E3779B185EBCA8DULL, 0x043904FCE497378FULL }, /* XSUM_XXH3_testdata[2353] */ + { 1177, 0x0000000000000000ULL, 0x7497A217A28DCC72ULL }, /* XSUM_XXH3_testdata[2354] */ + { 1177, 0x9E3779B185EBCA8DULL, 0x532A929B311E60ECULL }, /* XSUM_XXH3_testdata[2355] */ + { 1178, 0x0000000000000000ULL, 0x253D013B8D280C37ULL }, /* XSUM_XXH3_testdata[2356] */ + { 1178, 0x9E3779B185EBCA8DULL, 0xE25B82B4BC5D331EULL }, /* XSUM_XXH3_testdata[2357] */ + { 1179, 0x0000000000000000ULL, 0x030F0AEA67DB5C79ULL }, /* XSUM_XXH3_testdata[2358] */ + { 1179, 0x9E3779B185EBCA8DULL, 0x7131DB7933A9CAAEULL }, /* XSUM_XXH3_testdata[2359] */ + { 1180, 0x0000000000000000ULL, 0x5F5C759A10D1AF03ULL }, /* XSUM_XXH3_testdata[2360] */ + { 1180, 0x9E3779B185EBCA8DULL, 0x0D36C9BB287F117BULL }, /* XSUM_XXH3_testdata[2361] */ + { 1181, 0x0000000000000000ULL, 0x97AC67580FD4C886ULL }, /* XSUM_XXH3_testdata[2362] */ + { 1181, 0x9E3779B185EBCA8DULL, 0x7602370EC794621BULL }, /* XSUM_XXH3_testdata[2363] */ + { 1182, 0x0000000000000000ULL, 0xDF9B39788BABDDAFULL }, /* XSUM_XXH3_testdata[2364] */ + { 1182, 0x9E3779B185EBCA8DULL, 0x7C09B5F543FA2583ULL }, /* XSUM_XXH3_testdata[2365] */ + { 1183, 0x0000000000000000ULL, 0x94CF2A6D670BD114ULL }, /* XSUM_XXH3_testdata[2366] */ + { 1183, 0x9E3779B185EBCA8DULL, 0xA708E0A87286116BULL }, /* XSUM_XXH3_testdata[2367] */ + { 1184, 0x0000000000000000ULL, 0x76B645800E737E45ULL }, /* XSUM_XXH3_testdata[2368] */ + { 1184, 0x9E3779B185EBCA8DULL, 0xFB3C8BCA9776922BULL }, /* XSUM_XXH3_testdata[2369] */ + { 1185, 0x0000000000000000ULL, 0x596A8828CE2B8ED9ULL }, /* XSUM_XXH3_testdata[2370] */ + { 1185, 0x9E3779B185EBCA8DULL, 0x016272A320784820ULL }, /* XSUM_XXH3_testdata[2371] */ + { 1186, 0x0000000000000000ULL, 0x65A6DE268E6B1931ULL }, /* XSUM_XXH3_testdata[2372] */ + { 1186, 0x9E3779B185EBCA8DULL, 0x126CF07FE3A547F7ULL }, /* XSUM_XXH3_testdata[2373] */ + { 1187, 0x0000000000000000ULL, 0x43F7BC2C8C631282ULL }, /* XSUM_XXH3_testdata[2374] */ + { 1187, 0x9E3779B185EBCA8DULL, 0x1F6351FEF142B5F1ULL }, /* XSUM_XXH3_testdata[2375] */ + { 1188, 0x0000000000000000ULL, 0xE1851CC71FC6FD60ULL }, /* XSUM_XXH3_testdata[2376] */ + { 1188, 0x9E3779B185EBCA8DULL, 0x2319155DCA7F781EULL }, /* XSUM_XXH3_testdata[2377] */ + { 1189, 0x0000000000000000ULL, 0xF3B7E0EED66D8AB7ULL }, /* XSUM_XXH3_testdata[2378] */ + { 1189, 0x9E3779B185EBCA8DULL, 0xFFD2FEA9DCDA49C8ULL }, /* XSUM_XXH3_testdata[2379] */ + { 1190, 0x0000000000000000ULL, 0x4543A9DAADC78B77ULL }, /* XSUM_XXH3_testdata[2380] */ + { 1190, 0x9E3779B185EBCA8DULL, 0xD52DA73BDEAD7097ULL }, /* XSUM_XXH3_testdata[2381] */ + { 1191, 0x0000000000000000ULL, 0xBBA0CCC91A773F43ULL }, /* XSUM_XXH3_testdata[2382] */ + { 1191, 0x9E3779B185EBCA8DULL, 0xFA7D0878F0E42D52ULL }, /* XSUM_XXH3_testdata[2383] */ + { 1192, 0x0000000000000000ULL, 0xCC7D840BCE9BAC5EULL }, /* XSUM_XXH3_testdata[2384] */ + { 1192, 0x9E3779B185EBCA8DULL, 0x1A5684985BBD433EULL }, /* XSUM_XXH3_testdata[2385] */ + { 1193, 0x0000000000000000ULL, 0x39E9ABD8764C36FAULL }, /* XSUM_XXH3_testdata[2386] */ + { 1193, 0x9E3779B185EBCA8DULL, 0xB35ECC57D2A66C11ULL }, /* XSUM_XXH3_testdata[2387] */ + { 1194, 0x0000000000000000ULL, 0x30BD41F718E2D454ULL }, /* XSUM_XXH3_testdata[2388] */ + { 1194, 0x9E3779B185EBCA8DULL, 0x51A49CBB02557472ULL }, /* XSUM_XXH3_testdata[2389] */ + { 1195, 0x0000000000000000ULL, 0x0914B04B3B4D335EULL }, /* XSUM_XXH3_testdata[2390] */ + { 1195, 0x9E3779B185EBCA8DULL, 0x3B51F879AEA1BE77ULL }, /* XSUM_XXH3_testdata[2391] */ + { 1196, 0x0000000000000000ULL, 0xCC0CE7BA422B55CFULL }, /* XSUM_XXH3_testdata[2392] */ + { 1196, 0x9E3779B185EBCA8DULL, 0x0F06EC5AC1D04855ULL }, /* XSUM_XXH3_testdata[2393] */ + { 1197, 0x0000000000000000ULL, 0xD91DF662BC7D84C9ULL }, /* XSUM_XXH3_testdata[2394] */ + { 1197, 0x9E3779B185EBCA8DULL, 0xBE419090E56BB293ULL }, /* XSUM_XXH3_testdata[2395] */ + { 1198, 0x0000000000000000ULL, 0x0D0DFBCD20029D56ULL }, /* XSUM_XXH3_testdata[2396] */ + { 1198, 0x9E3779B185EBCA8DULL, 0x7F9233AF2D2A09B3ULL }, /* XSUM_XXH3_testdata[2397] */ + { 1199, 0x0000000000000000ULL, 0xB11D0BAAD822491AULL }, /* XSUM_XXH3_testdata[2398] */ + { 1199, 0x9E3779B185EBCA8DULL, 0xC2620E0E0D1AB3F3ULL }, /* XSUM_XXH3_testdata[2399] */ + { 1200, 0x0000000000000000ULL, 0x203BF68D0CB40248ULL }, /* XSUM_XXH3_testdata[2400] */ + { 1200, 0x9E3779B185EBCA8DULL, 0xC782C87F8C12981EULL }, /* XSUM_XXH3_testdata[2401] */ + { 1201, 0x0000000000000000ULL, 0x27AC93A13B0441EAULL }, /* XSUM_XXH3_testdata[2402] */ + { 1201, 0x9E3779B185EBCA8DULL, 0x00322A94AD07FE4CULL }, /* XSUM_XXH3_testdata[2403] */ + { 1202, 0x0000000000000000ULL, 0xCA123B3DB28A833FULL }, /* XSUM_XXH3_testdata[2404] */ + { 1202, 0x9E3779B185EBCA8DULL, 0xD85795992279DC35ULL }, /* XSUM_XXH3_testdata[2405] */ + { 1203, 0x0000000000000000ULL, 0x1F9522CE4E8A3569ULL }, /* XSUM_XXH3_testdata[2406] */ + { 1203, 0x9E3779B185EBCA8DULL, 0xE801BBE0C28C37A5ULL }, /* XSUM_XXH3_testdata[2407] */ + { 1204, 0x0000000000000000ULL, 0x5D59E44EAA3FA1A2ULL }, /* XSUM_XXH3_testdata[2408] */ + { 1204, 0x9E3779B185EBCA8DULL, 0x2FFEC7EDE4C35A95ULL }, /* XSUM_XXH3_testdata[2409] */ + { 1205, 0x0000000000000000ULL, 0x0785920A1E8E65FBULL }, /* XSUM_XXH3_testdata[2410] */ + { 1205, 0x9E3779B185EBCA8DULL, 0xD9534F0920956617ULL }, /* XSUM_XXH3_testdata[2411] */ + { 1206, 0x0000000000000000ULL, 0xBCBB1735D914A75BULL }, /* XSUM_XXH3_testdata[2412] */ + { 1206, 0x9E3779B185EBCA8DULL, 0xB5D845E610439EC3ULL }, /* XSUM_XXH3_testdata[2413] */ + { 1207, 0x0000000000000000ULL, 0x4F834DD477E34CA1ULL }, /* XSUM_XXH3_testdata[2414] */ + { 1207, 0x9E3779B185EBCA8DULL, 0xF043EC3B6AFF48F2ULL }, /* XSUM_XXH3_testdata[2415] */ + { 1208, 0x0000000000000000ULL, 0xF819C4DA04BE8BFFULL }, /* XSUM_XXH3_testdata[2416] */ + { 1208, 0x9E3779B185EBCA8DULL, 0x10770E2138DB91E7ULL }, /* XSUM_XXH3_testdata[2417] */ + { 1209, 0x0000000000000000ULL, 0x471FD17969E5C08EULL }, /* XSUM_XXH3_testdata[2418] */ + { 1209, 0x9E3779B185EBCA8DULL, 0x95228F4333CA7537ULL }, /* XSUM_XXH3_testdata[2419] */ + { 1210, 0x0000000000000000ULL, 0x4BD9860726BF5B55ULL }, /* XSUM_XXH3_testdata[2420] */ + { 1210, 0x9E3779B185EBCA8DULL, 0xA2E35D62CDDFC4C2ULL }, /* XSUM_XXH3_testdata[2421] */ + { 1211, 0x0000000000000000ULL, 0xF01EB0C5F58E4BD7ULL }, /* XSUM_XXH3_testdata[2422] */ + { 1211, 0x9E3779B185EBCA8DULL, 0xA795DF56C4A70D09ULL }, /* XSUM_XXH3_testdata[2423] */ + { 1212, 0x0000000000000000ULL, 0xA66DAA355D58FB75ULL }, /* XSUM_XXH3_testdata[2424] */ + { 1212, 0x9E3779B185EBCA8DULL, 0x5717E813E2BF8BA3ULL }, /* XSUM_XXH3_testdata[2425] */ + { 1213, 0x0000000000000000ULL, 0xECDC982B4F911BB1ULL }, /* XSUM_XXH3_testdata[2426] */ + { 1213, 0x9E3779B185EBCA8DULL, 0xD8762F676DA901FCULL }, /* XSUM_XXH3_testdata[2427] */ + { 1214, 0x0000000000000000ULL, 0xE048972A53CAB698ULL }, /* XSUM_XXH3_testdata[2428] */ + { 1214, 0x9E3779B185EBCA8DULL, 0x17117BC29230BC57ULL }, /* XSUM_XXH3_testdata[2429] */ + { 1215, 0x0000000000000000ULL, 0xE930426227BAD1BCULL }, /* XSUM_XXH3_testdata[2430] */ + { 1215, 0x9E3779B185EBCA8DULL, 0x9E886B47FF351E95ULL }, /* XSUM_XXH3_testdata[2431] */ + { 1216, 0x0000000000000000ULL, 0xFE0C4B62F3111B46ULL }, /* XSUM_XXH3_testdata[2432] */ + { 1216, 0x9E3779B185EBCA8DULL, 0x81DB6085A96B2900ULL }, /* XSUM_XXH3_testdata[2433] */ + { 1217, 0x0000000000000000ULL, 0x253D5AB8AAE1CADBULL }, /* XSUM_XXH3_testdata[2434] */ + { 1217, 0x9E3779B185EBCA8DULL, 0xF3ED7CC23687AF94ULL }, /* XSUM_XXH3_testdata[2435] */ + { 1218, 0x0000000000000000ULL, 0x1F997933C417290EULL }, /* XSUM_XXH3_testdata[2436] */ + { 1218, 0x9E3779B185EBCA8DULL, 0xB76BD5C9B4311FDBULL }, /* XSUM_XXH3_testdata[2437] */ + { 1219, 0x0000000000000000ULL, 0xEDE8E2A4179E0A79ULL }, /* XSUM_XXH3_testdata[2438] */ + { 1219, 0x9E3779B185EBCA8DULL, 0xA606C217B1D3B5C6ULL }, /* XSUM_XXH3_testdata[2439] */ + { 1220, 0x0000000000000000ULL, 0x16DDEBA258E5BEC7ULL }, /* XSUM_XXH3_testdata[2440] */ + { 1220, 0x9E3779B185EBCA8DULL, 0x618115D34B8140C8ULL }, /* XSUM_XXH3_testdata[2441] */ + { 1221, 0x0000000000000000ULL, 0x434F9B679E3E3131ULL }, /* XSUM_XXH3_testdata[2442] */ + { 1221, 0x9E3779B185EBCA8DULL, 0x204DACFA0F41B777ULL }, /* XSUM_XXH3_testdata[2443] */ + { 1222, 0x0000000000000000ULL, 0x40C68C7EB6E9987CULL }, /* XSUM_XXH3_testdata[2444] */ + { 1222, 0x9E3779B185EBCA8DULL, 0xA000201050DAED60ULL }, /* XSUM_XXH3_testdata[2445] */ + { 1223, 0x0000000000000000ULL, 0xC426E8B70AA0FF54ULL }, /* XSUM_XXH3_testdata[2446] */ + { 1223, 0x9E3779B185EBCA8DULL, 0x826C1746F4379357ULL }, /* XSUM_XXH3_testdata[2447] */ + { 1224, 0x0000000000000000ULL, 0x4141EABAAF368238ULL }, /* XSUM_XXH3_testdata[2448] */ + { 1224, 0x9E3779B185EBCA8DULL, 0xC91E8334C06455F2ULL }, /* XSUM_XXH3_testdata[2449] */ + { 1225, 0x0000000000000000ULL, 0x9A43EA1ED266BBD2ULL }, /* XSUM_XXH3_testdata[2450] */ + { 1225, 0x9E3779B185EBCA8DULL, 0x59BE464BF88208C7ULL }, /* XSUM_XXH3_testdata[2451] */ + { 1226, 0x0000000000000000ULL, 0xB157921B389112F6ULL }, /* XSUM_XXH3_testdata[2452] */ + { 1226, 0x9E3779B185EBCA8DULL, 0xA678A815C95467C4ULL }, /* XSUM_XXH3_testdata[2453] */ + { 1227, 0x0000000000000000ULL, 0x86C60450E50A39F2ULL }, /* XSUM_XXH3_testdata[2454] */ + { 1227, 0x9E3779B185EBCA8DULL, 0xDAD9B7E9A7DCEAB4ULL }, /* XSUM_XXH3_testdata[2455] */ + { 1228, 0x0000000000000000ULL, 0x4EC249E9E22BB8F6ULL }, /* XSUM_XXH3_testdata[2456] */ + { 1228, 0x9E3779B185EBCA8DULL, 0x35B07B350D67A81DULL }, /* XSUM_XXH3_testdata[2457] */ + { 1229, 0x0000000000000000ULL, 0xB4AC47456204F4A0ULL }, /* XSUM_XXH3_testdata[2458] */ + { 1229, 0x9E3779B185EBCA8DULL, 0xFB8751E1C34FB61EULL }, /* XSUM_XXH3_testdata[2459] */ + { 1230, 0x0000000000000000ULL, 0xF0FFD70477192DD9ULL }, /* XSUM_XXH3_testdata[2460] */ + { 1230, 0x9E3779B185EBCA8DULL, 0xF398B52063DA612AULL }, /* XSUM_XXH3_testdata[2461] */ + { 1231, 0x0000000000000000ULL, 0x1798FEF09B569C74ULL }, /* XSUM_XXH3_testdata[2462] */ + { 1231, 0x9E3779B185EBCA8DULL, 0x26029163BA88839CULL }, /* XSUM_XXH3_testdata[2463] */ + { 1232, 0x0000000000000000ULL, 0x7DDCBA4664E066E2ULL }, /* XSUM_XXH3_testdata[2464] */ + { 1232, 0x9E3779B185EBCA8DULL, 0x29030F6B251137D7ULL }, /* XSUM_XXH3_testdata[2465] */ + { 1233, 0x0000000000000000ULL, 0x2BE6E506324653A7ULL }, /* XSUM_XXH3_testdata[2466] */ + { 1233, 0x9E3779B185EBCA8DULL, 0x9D9F04986C320F67ULL }, /* XSUM_XXH3_testdata[2467] */ + { 1234, 0x0000000000000000ULL, 0x7E5DEDE89C4CAA7CULL }, /* XSUM_XXH3_testdata[2468] */ + { 1234, 0x9E3779B185EBCA8DULL, 0x69B306E989DA7A62ULL }, /* XSUM_XXH3_testdata[2469] */ + { 1235, 0x0000000000000000ULL, 0x7973D357ED85BC0EULL }, /* XSUM_XXH3_testdata[2470] */ + { 1235, 0x9E3779B185EBCA8DULL, 0x6FC8A0DF4CF10E1CULL }, /* XSUM_XXH3_testdata[2471] */ + { 1236, 0x0000000000000000ULL, 0xDD441332B08A607CULL }, /* XSUM_XXH3_testdata[2472] */ + { 1236, 0x9E3779B185EBCA8DULL, 0x0FAC91C503DF1FEBULL }, /* XSUM_XXH3_testdata[2473] */ + { 1237, 0x0000000000000000ULL, 0xA9775BE3A9A6131AULL }, /* XSUM_XXH3_testdata[2474] */ + { 1237, 0x9E3779B185EBCA8DULL, 0xC9B0A287954E8012ULL }, /* XSUM_XXH3_testdata[2475] */ + { 1238, 0x0000000000000000ULL, 0x9E35169670FBE108ULL }, /* XSUM_XXH3_testdata[2476] */ + { 1238, 0x9E3779B185EBCA8DULL, 0x2023A156E28139E3ULL }, /* XSUM_XXH3_testdata[2477] */ + { 1239, 0x0000000000000000ULL, 0x4E4DEE9735CB4055ULL }, /* XSUM_XXH3_testdata[2478] */ + { 1239, 0x9E3779B185EBCA8DULL, 0xC364A0E39E616DB7ULL }, /* XSUM_XXH3_testdata[2479] */ + { 1240, 0x0000000000000000ULL, 0x2A7C85DC0BC3EE8BULL }, /* XSUM_XXH3_testdata[2480] */ + { 1240, 0x9E3779B185EBCA8DULL, 0x0F6F41015CE14325ULL }, /* XSUM_XXH3_testdata[2481] */ + { 1241, 0x0000000000000000ULL, 0xD00F1254DF165FECULL }, /* XSUM_XXH3_testdata[2482] */ + { 1241, 0x9E3779B185EBCA8DULL, 0x2A56A2294B2F6CBAULL }, /* XSUM_XXH3_testdata[2483] */ + { 1242, 0x0000000000000000ULL, 0x1C4440B970A3869FULL }, /* XSUM_XXH3_testdata[2484] */ + { 1242, 0x9E3779B185EBCA8DULL, 0x1236ECEFF72C441DULL }, /* XSUM_XXH3_testdata[2485] */ + { 1243, 0x0000000000000000ULL, 0xDA895EE4B9E61D29ULL }, /* XSUM_XXH3_testdata[2486] */ + { 1243, 0x9E3779B185EBCA8DULL, 0x3A2ED287B663F086ULL }, /* XSUM_XXH3_testdata[2487] */ + { 1244, 0x0000000000000000ULL, 0xED2C73920717377BULL }, /* XSUM_XXH3_testdata[2488] */ + { 1244, 0x9E3779B185EBCA8DULL, 0xBCA105ED165CA4A9ULL }, /* XSUM_XXH3_testdata[2489] */ + { 1245, 0x0000000000000000ULL, 0x5DADE3B4EE279DAEULL }, /* XSUM_XXH3_testdata[2490] */ + { 1245, 0x9E3779B185EBCA8DULL, 0x955927A20535B98AULL }, /* XSUM_XXH3_testdata[2491] */ + { 1246, 0x0000000000000000ULL, 0xD160A5D5495D5E8CULL }, /* XSUM_XXH3_testdata[2492] */ + { 1246, 0x9E3779B185EBCA8DULL, 0xD9A9BBC486C1B8D8ULL }, /* XSUM_XXH3_testdata[2493] */ + { 1247, 0x0000000000000000ULL, 0xF0C39DC1539E6BCCULL }, /* XSUM_XXH3_testdata[2494] */ + { 1247, 0x9E3779B185EBCA8DULL, 0xAC3AE69C884E7729ULL }, /* XSUM_XXH3_testdata[2495] */ + { 1248, 0x0000000000000000ULL, 0xFE73761A4AF65FFDULL }, /* XSUM_XXH3_testdata[2496] */ + { 1248, 0x9E3779B185EBCA8DULL, 0x010BF71F84A0C44FULL }, /* XSUM_XXH3_testdata[2497] */ + { 1249, 0x0000000000000000ULL, 0x386B0F3E8F5B15EBULL }, /* XSUM_XXH3_testdata[2498] */ + { 1249, 0x9E3779B185EBCA8DULL, 0x64154E718064ECD3ULL }, /* XSUM_XXH3_testdata[2499] */ + { 1250, 0x0000000000000000ULL, 0x70114FAE28466327ULL }, /* XSUM_XXH3_testdata[2500] */ + { 1250, 0x9E3779B185EBCA8DULL, 0x520C8028328EB353ULL }, /* XSUM_XXH3_testdata[2501] */ + { 1251, 0x0000000000000000ULL, 0x0D9448C1A8756C97ULL }, /* XSUM_XXH3_testdata[2502] */ + { 1251, 0x9E3779B185EBCA8DULL, 0x85323C6AD404615AULL }, /* XSUM_XXH3_testdata[2503] */ + { 1252, 0x0000000000000000ULL, 0x4239C017A3B04AA8ULL }, /* XSUM_XXH3_testdata[2504] */ + { 1252, 0x9E3779B185EBCA8DULL, 0xDF199CE2F05DFE16ULL }, /* XSUM_XXH3_testdata[2505] */ + { 1253, 0x0000000000000000ULL, 0x00808A16F8A038DAULL }, /* XSUM_XXH3_testdata[2506] */ + { 1253, 0x9E3779B185EBCA8DULL, 0x0065087E8B3B068CULL }, /* XSUM_XXH3_testdata[2507] */ + { 1254, 0x0000000000000000ULL, 0xD5B487EE0149EB19ULL }, /* XSUM_XXH3_testdata[2508] */ + { 1254, 0x9E3779B185EBCA8DULL, 0x0105641B56851E82ULL }, /* XSUM_XXH3_testdata[2509] */ + { 1255, 0x0000000000000000ULL, 0xF069561740DF20F8ULL }, /* XSUM_XXH3_testdata[2510] */ + { 1255, 0x9E3779B185EBCA8DULL, 0xB172B433AAE01598ULL }, /* XSUM_XXH3_testdata[2511] */ + { 1256, 0x0000000000000000ULL, 0x0D7E791B04F5AB45ULL }, /* XSUM_XXH3_testdata[2512] */ + { 1256, 0x9E3779B185EBCA8DULL, 0xA8D61EF9EF7BE7A8ULL }, /* XSUM_XXH3_testdata[2513] */ + { 1257, 0x0000000000000000ULL, 0xE179C25DD03710A6ULL }, /* XSUM_XXH3_testdata[2514] */ + { 1257, 0x9E3779B185EBCA8DULL, 0xAB9A2396EECCC42BULL }, /* XSUM_XXH3_testdata[2515] */ + { 1258, 0x0000000000000000ULL, 0x3207A5EBFDC8367DULL }, /* XSUM_XXH3_testdata[2516] */ + { 1258, 0x9E3779B185EBCA8DULL, 0x36BD16996362DC72ULL }, /* XSUM_XXH3_testdata[2517] */ + { 1259, 0x0000000000000000ULL, 0x0585488A8CC7957BULL }, /* XSUM_XXH3_testdata[2518] */ + { 1259, 0x9E3779B185EBCA8DULL, 0x5A37270C5ED0F342ULL }, /* XSUM_XXH3_testdata[2519] */ + { 1260, 0x0000000000000000ULL, 0x4A20DAD887D6BBD4ULL }, /* XSUM_XXH3_testdata[2520] */ + { 1260, 0x9E3779B185EBCA8DULL, 0x219B38C0687FD368ULL }, /* XSUM_XXH3_testdata[2521] */ + { 1261, 0x0000000000000000ULL, 0x8B23B25F1596E89FULL }, /* XSUM_XXH3_testdata[2522] */ + { 1261, 0x9E3779B185EBCA8DULL, 0x853FB0FBB427FB45ULL }, /* XSUM_XXH3_testdata[2523] */ + { 1262, 0x0000000000000000ULL, 0xF416AF45D2BC98D9ULL }, /* XSUM_XXH3_testdata[2524] */ + { 1262, 0x9E3779B185EBCA8DULL, 0xE94CBC9B85C6FE67ULL }, /* XSUM_XXH3_testdata[2525] */ + { 1263, 0x0000000000000000ULL, 0x7EFC38C2AE4165F4ULL }, /* XSUM_XXH3_testdata[2526] */ + { 1263, 0x9E3779B185EBCA8DULL, 0x1AD06110E21D4B37ULL }, /* XSUM_XXH3_testdata[2527] */ + { 1264, 0x0000000000000000ULL, 0x7BBE54D17E33A670ULL }, /* XSUM_XXH3_testdata[2528] */ + { 1264, 0x9E3779B185EBCA8DULL, 0x8A3D80012A575A84ULL }, /* XSUM_XXH3_testdata[2529] */ + { 1265, 0x0000000000000000ULL, 0xC26D468B31A4CBE8ULL }, /* XSUM_XXH3_testdata[2530] */ + { 1265, 0x9E3779B185EBCA8DULL, 0x080096652CC35FE9ULL }, /* XSUM_XXH3_testdata[2531] */ + { 1266, 0x0000000000000000ULL, 0x4F712CFA55178726ULL }, /* XSUM_XXH3_testdata[2532] */ + { 1266, 0x9E3779B185EBCA8DULL, 0xC85B4AADEAC26FE7ULL }, /* XSUM_XXH3_testdata[2533] */ + { 1267, 0x0000000000000000ULL, 0xD0C33CAC8994145FULL }, /* XSUM_XXH3_testdata[2534] */ + { 1267, 0x9E3779B185EBCA8DULL, 0xD43DDD757597A517ULL }, /* XSUM_XXH3_testdata[2535] */ + { 1268, 0x0000000000000000ULL, 0xCC704F88D818DC14ULL }, /* XSUM_XXH3_testdata[2536] */ + { 1268, 0x9E3779B185EBCA8DULL, 0xD65BDF74F55AAFCAULL }, /* XSUM_XXH3_testdata[2537] */ + { 1269, 0x0000000000000000ULL, 0x87BDF6D964C49064ULL }, /* XSUM_XXH3_testdata[2538] */ + { 1269, 0x9E3779B185EBCA8DULL, 0x4E22180AA9458D41ULL }, /* XSUM_XXH3_testdata[2539] */ + { 1270, 0x0000000000000000ULL, 0xF8776976C5F32A3AULL }, /* XSUM_XXH3_testdata[2540] */ + { 1270, 0x9E3779B185EBCA8DULL, 0x3C82A2476CC6A087ULL }, /* XSUM_XXH3_testdata[2541] */ + { 1271, 0x0000000000000000ULL, 0xDF02E3A0949B78A2ULL }, /* XSUM_XXH3_testdata[2542] */ + { 1271, 0x9E3779B185EBCA8DULL, 0x454545571E047733ULL }, /* XSUM_XXH3_testdata[2543] */ + { 1272, 0x0000000000000000ULL, 0x2508A670FDFA5CE2ULL }, /* XSUM_XXH3_testdata[2544] */ + { 1272, 0x9E3779B185EBCA8DULL, 0x596350B94FA7666BULL }, /* XSUM_XXH3_testdata[2545] */ + { 1273, 0x0000000000000000ULL, 0x43737066DC3F2DE0ULL }, /* XSUM_XXH3_testdata[2546] */ + { 1273, 0x9E3779B185EBCA8DULL, 0x155BF59E7C86E6F2ULL }, /* XSUM_XXH3_testdata[2547] */ + { 1274, 0x0000000000000000ULL, 0x8A027A19AB8DF30DULL }, /* XSUM_XXH3_testdata[2548] */ + { 1274, 0x9E3779B185EBCA8DULL, 0x3AE260AF75AF8633ULL }, /* XSUM_XXH3_testdata[2549] */ + { 1275, 0x0000000000000000ULL, 0x139E04FD5326D80AULL }, /* XSUM_XXH3_testdata[2550] */ + { 1275, 0x9E3779B185EBCA8DULL, 0x7C1726C8DFF75F70ULL }, /* XSUM_XXH3_testdata[2551] */ + { 1276, 0x0000000000000000ULL, 0x1EF47D47884A52C4ULL }, /* XSUM_XXH3_testdata[2552] */ + { 1276, 0x9E3779B185EBCA8DULL, 0xF4414C700D2BF87CULL }, /* XSUM_XXH3_testdata[2553] */ + { 1277, 0x0000000000000000ULL, 0x22CEB5C9918B106EULL }, /* XSUM_XXH3_testdata[2554] */ + { 1277, 0x9E3779B185EBCA8DULL, 0xCC35EDD26C8EA6E3ULL }, /* XSUM_XXH3_testdata[2555] */ + { 1278, 0x0000000000000000ULL, 0xB3A97FDEB34B151CULL }, /* XSUM_XXH3_testdata[2556] */ + { 1278, 0x9E3779B185EBCA8DULL, 0x4EF9F624C3E6B0F2ULL }, /* XSUM_XXH3_testdata[2557] */ + { 1279, 0x0000000000000000ULL, 0x5D6D044F9D287AB3ULL }, /* XSUM_XXH3_testdata[2558] */ + { 1279, 0x9E3779B185EBCA8DULL, 0x24DF7B6B7B4FDCB1ULL }, /* XSUM_XXH3_testdata[2559] */ + { 1280, 0x0000000000000000ULL, 0xA052007A1ED81B4BULL }, /* XSUM_XXH3_testdata[2560] */ + { 1280, 0x9E3779B185EBCA8DULL, 0x2B5ABFE77739F266ULL }, /* XSUM_XXH3_testdata[2561] */ + { 1281, 0x0000000000000000ULL, 0x706FE95B5ED1F1ECULL }, /* XSUM_XXH3_testdata[2562] */ + { 1281, 0x9E3779B185EBCA8DULL, 0x028F3EE15B5B1926ULL }, /* XSUM_XXH3_testdata[2563] */ + { 1282, 0x0000000000000000ULL, 0xB8CB4A6E4330BFACULL }, /* XSUM_XXH3_testdata[2564] */ + { 1282, 0x9E3779B185EBCA8DULL, 0x8F710D9E899E52CFULL }, /* XSUM_XXH3_testdata[2565] */ + { 1283, 0x0000000000000000ULL, 0xAD5AF3E0E638F01BULL }, /* XSUM_XXH3_testdata[2566] */ + { 1283, 0x9E3779B185EBCA8DULL, 0x2B473D9BB34B2639ULL }, /* XSUM_XXH3_testdata[2567] */ + { 1284, 0x0000000000000000ULL, 0x8BDA723C64F22E78ULL }, /* XSUM_XXH3_testdata[2568] */ + { 1284, 0x9E3779B185EBCA8DULL, 0x5D35928D7F4C773AULL }, /* XSUM_XXH3_testdata[2569] */ + { 1285, 0x0000000000000000ULL, 0x33B3411728DB89DEULL }, /* XSUM_XXH3_testdata[2570] */ + { 1285, 0x9E3779B185EBCA8DULL, 0x07CC92BD8DAFD59EULL }, /* XSUM_XXH3_testdata[2571] */ + { 1286, 0x0000000000000000ULL, 0xB34C5AA46E8214C9ULL }, /* XSUM_XXH3_testdata[2572] */ + { 1286, 0x9E3779B185EBCA8DULL, 0x02F507EBDBEAD2D5ULL }, /* XSUM_XXH3_testdata[2573] */ + { 1287, 0x0000000000000000ULL, 0x711B95523A6055B5ULL }, /* XSUM_XXH3_testdata[2574] */ + { 1287, 0x9E3779B185EBCA8DULL, 0x40F0841C17D1E7B3ULL }, /* XSUM_XXH3_testdata[2575] */ + { 1288, 0x0000000000000000ULL, 0x7A27E619D3B0F975ULL }, /* XSUM_XXH3_testdata[2576] */ + { 1288, 0x9E3779B185EBCA8DULL, 0x0FB143356DAFDBA7ULL }, /* XSUM_XXH3_testdata[2577] */ + { 1289, 0x0000000000000000ULL, 0x2C1689F34787C3E2ULL }, /* XSUM_XXH3_testdata[2578] */ + { 1289, 0x9E3779B185EBCA8DULL, 0xB7FFB0F20474B963ULL }, /* XSUM_XXH3_testdata[2579] */ + { 1290, 0x0000000000000000ULL, 0x4E713D3477E39CFDULL }, /* XSUM_XXH3_testdata[2580] */ + { 1290, 0x9E3779B185EBCA8DULL, 0xD4B17540BCA57D4CULL }, /* XSUM_XXH3_testdata[2581] */ + { 1291, 0x0000000000000000ULL, 0x106EF57335080984ULL }, /* XSUM_XXH3_testdata[2582] */ + { 1291, 0x9E3779B185EBCA8DULL, 0x61AF13E44002E0BDULL }, /* XSUM_XXH3_testdata[2583] */ + { 1292, 0x0000000000000000ULL, 0xBE3B0728915B4399ULL }, /* XSUM_XXH3_testdata[2584] */ + { 1292, 0x9E3779B185EBCA8DULL, 0xC74E6AD1C2B89F66ULL }, /* XSUM_XXH3_testdata[2585] */ + { 1293, 0x0000000000000000ULL, 0x02AA4409F8DA8359ULL }, /* XSUM_XXH3_testdata[2586] */ + { 1293, 0x9E3779B185EBCA8DULL, 0xBC5A11D25B5B33A4ULL }, /* XSUM_XXH3_testdata[2587] */ + { 1294, 0x0000000000000000ULL, 0x86E73C822ECEEEF7ULL }, /* XSUM_XXH3_testdata[2588] */ + { 1294, 0x9E3779B185EBCA8DULL, 0x480DBAB2F3AC062FULL }, /* XSUM_XXH3_testdata[2589] */ + { 1295, 0x0000000000000000ULL, 0x122A037B3AFF18B3ULL }, /* XSUM_XXH3_testdata[2590] */ + { 1295, 0x9E3779B185EBCA8DULL, 0x31D2AC865DE8ABCCULL }, /* XSUM_XXH3_testdata[2591] */ + { 1296, 0x0000000000000000ULL, 0xAA4F241696FD6EACULL }, /* XSUM_XXH3_testdata[2592] */ + { 1296, 0x9E3779B185EBCA8DULL, 0x6F8CBF15644E57ECULL }, /* XSUM_XXH3_testdata[2593] */ + { 1297, 0x0000000000000000ULL, 0xFBEB130E6B67E9F9ULL }, /* XSUM_XXH3_testdata[2594] */ + { 1297, 0x9E3779B185EBCA8DULL, 0x25322F0248CC7AA2ULL }, /* XSUM_XXH3_testdata[2595] */ + { 1298, 0x0000000000000000ULL, 0xA1407DC529CD23DFULL }, /* XSUM_XXH3_testdata[2596] */ + { 1298, 0x9E3779B185EBCA8DULL, 0xD383F937F6419641ULL }, /* XSUM_XXH3_testdata[2597] */ + { 1299, 0x0000000000000000ULL, 0x765F502DF20DC49EULL }, /* XSUM_XXH3_testdata[2598] */ + { 1299, 0x9E3779B185EBCA8DULL, 0x95784B95CA2EE2AFULL }, /* XSUM_XXH3_testdata[2599] */ + { 1300, 0x0000000000000000ULL, 0x2E312D65217E00C6ULL }, /* XSUM_XXH3_testdata[2600] */ + { 1300, 0x9E3779B185EBCA8DULL, 0x73B3A23E757FD725ULL }, /* XSUM_XXH3_testdata[2601] */ + { 1301, 0x0000000000000000ULL, 0xBFCAA107E96D496CULL }, /* XSUM_XXH3_testdata[2602] */ + { 1301, 0x9E3779B185EBCA8DULL, 0x1752171113E51492ULL }, /* XSUM_XXH3_testdata[2603] */ + { 1302, 0x0000000000000000ULL, 0x4A14045C5D89824EULL }, /* XSUM_XXH3_testdata[2604] */ + { 1302, 0x9E3779B185EBCA8DULL, 0xC4982E354FD226E5ULL }, /* XSUM_XXH3_testdata[2605] */ + { 1303, 0x0000000000000000ULL, 0xEA3514B0E1197A04ULL }, /* XSUM_XXH3_testdata[2606] */ + { 1303, 0x9E3779B185EBCA8DULL, 0x6AE4B901B790ED3CULL }, /* XSUM_XXH3_testdata[2607] */ + { 1304, 0x0000000000000000ULL, 0xA138B765D214CE09ULL }, /* XSUM_XXH3_testdata[2608] */ + { 1304, 0x9E3779B185EBCA8DULL, 0x559B3C09BAE652E9ULL }, /* XSUM_XXH3_testdata[2609] */ + { 1305, 0x0000000000000000ULL, 0x15E0EADCA67CCFA8ULL }, /* XSUM_XXH3_testdata[2610] */ + { 1305, 0x9E3779B185EBCA8DULL, 0xF6CA119E0EA4FDB0ULL }, /* XSUM_XXH3_testdata[2611] */ + { 1306, 0x0000000000000000ULL, 0x48C0AC8100A77315ULL }, /* XSUM_XXH3_testdata[2612] */ + { 1306, 0x9E3779B185EBCA8DULL, 0x3776AFB679FA3D19ULL }, /* XSUM_XXH3_testdata[2613] */ + { 1307, 0x0000000000000000ULL, 0xE20038DD97EE905AULL }, /* XSUM_XXH3_testdata[2614] */ + { 1307, 0x9E3779B185EBCA8DULL, 0x874525080EFA9D8FULL }, /* XSUM_XXH3_testdata[2615] */ + { 1308, 0x0000000000000000ULL, 0xF635B857A2E91F86ULL }, /* XSUM_XXH3_testdata[2616] */ + { 1308, 0x9E3779B185EBCA8DULL, 0x3A6B8B0AB31B8052ULL }, /* XSUM_XXH3_testdata[2617] */ + { 1309, 0x0000000000000000ULL, 0x6ACEA1D97A14D732ULL }, /* XSUM_XXH3_testdata[2618] */ + { 1309, 0x9E3779B185EBCA8DULL, 0x412819DDA017A594ULL }, /* XSUM_XXH3_testdata[2619] */ + { 1310, 0x0000000000000000ULL, 0xE35CB9A7A97781F1ULL }, /* XSUM_XXH3_testdata[2620] */ + { 1310, 0x9E3779B185EBCA8DULL, 0xECB208A93C18C0CAULL }, /* XSUM_XXH3_testdata[2621] */ + { 1311, 0x0000000000000000ULL, 0xE6ADABBE2EF32E4FULL }, /* XSUM_XXH3_testdata[2622] */ + { 1311, 0x9E3779B185EBCA8DULL, 0xBFCC09E11B207515ULL }, /* XSUM_XXH3_testdata[2623] */ + { 1312, 0x0000000000000000ULL, 0x5A524056A59C39FAULL }, /* XSUM_XXH3_testdata[2624] */ + { 1312, 0x9E3779B185EBCA8DULL, 0x931114ABC3DC32E8ULL }, /* XSUM_XXH3_testdata[2625] */ + { 1313, 0x0000000000000000ULL, 0x348713C223BEDAFCULL }, /* XSUM_XXH3_testdata[2626] */ + { 1313, 0x9E3779B185EBCA8DULL, 0x1A83FA881795CBBCULL }, /* XSUM_XXH3_testdata[2627] */ + { 1314, 0x0000000000000000ULL, 0x31D349060630B50AULL }, /* XSUM_XXH3_testdata[2628] */ + { 1314, 0x9E3779B185EBCA8DULL, 0x77E1CB3EF4DDBB61ULL }, /* XSUM_XXH3_testdata[2629] */ + { 1315, 0x0000000000000000ULL, 0x3C62C7DDD34E3A6CULL }, /* XSUM_XXH3_testdata[2630] */ + { 1315, 0x9E3779B185EBCA8DULL, 0x30104F41CE30A159ULL }, /* XSUM_XXH3_testdata[2631] */ + { 1316, 0x0000000000000000ULL, 0x963A7C670708591EULL }, /* XSUM_XXH3_testdata[2632] */ + { 1316, 0x9E3779B185EBCA8DULL, 0xF50E0A55D013DBFCULL }, /* XSUM_XXH3_testdata[2633] */ + { 1317, 0x0000000000000000ULL, 0xB2419B4144391552ULL }, /* XSUM_XXH3_testdata[2634] */ + { 1317, 0x9E3779B185EBCA8DULL, 0x780D130EE1B881ACULL }, /* XSUM_XXH3_testdata[2635] */ + { 1318, 0x0000000000000000ULL, 0x9DF4A7E827BDC174ULL }, /* XSUM_XXH3_testdata[2636] */ + { 1318, 0x9E3779B185EBCA8DULL, 0xA82A0482BE55D5B6ULL }, /* XSUM_XXH3_testdata[2637] */ + { 1319, 0x0000000000000000ULL, 0x2ACD45BB72294061ULL }, /* XSUM_XXH3_testdata[2638] */ + { 1319, 0x9E3779B185EBCA8DULL, 0x9395401BD5483F23ULL }, /* XSUM_XXH3_testdata[2639] */ + { 1320, 0x0000000000000000ULL, 0x0AEF011F90C1E41DULL }, /* XSUM_XXH3_testdata[2640] */ + { 1320, 0x9E3779B185EBCA8DULL, 0x596CBB319F2C596EULL }, /* XSUM_XXH3_testdata[2641] */ + { 1321, 0x0000000000000000ULL, 0x80460A7A97F367BDULL }, /* XSUM_XXH3_testdata[2642] */ + { 1321, 0x9E3779B185EBCA8DULL, 0xE2D6AD55B6F5D0CFULL }, /* XSUM_XXH3_testdata[2643] */ + { 1322, 0x0000000000000000ULL, 0x89B95EF219277ED4ULL }, /* XSUM_XXH3_testdata[2644] */ + { 1322, 0x9E3779B185EBCA8DULL, 0x2F4E770670C952E8ULL }, /* XSUM_XXH3_testdata[2645] */ + { 1323, 0x0000000000000000ULL, 0x2DD88C30A443D7D7ULL }, /* XSUM_XXH3_testdata[2646] */ + { 1323, 0x9E3779B185EBCA8DULL, 0x85F0EC0DF35B17D4ULL }, /* XSUM_XXH3_testdata[2647] */ + { 1324, 0x0000000000000000ULL, 0xF0BE5E244A57175FULL }, /* XSUM_XXH3_testdata[2648] */ + { 1324, 0x9E3779B185EBCA8DULL, 0xECD94321D78E8F02ULL }, /* XSUM_XXH3_testdata[2649] */ + { 1325, 0x0000000000000000ULL, 0x2A2016610FD63EE6ULL }, /* XSUM_XXH3_testdata[2650] */ + { 1325, 0x9E3779B185EBCA8DULL, 0x3C55DEB660FE27B9ULL }, /* XSUM_XXH3_testdata[2651] */ + { 1326, 0x0000000000000000ULL, 0xB128119374CE78F9ULL }, /* XSUM_XXH3_testdata[2652] */ + { 1326, 0x9E3779B185EBCA8DULL, 0x2085E106ADECF1B2ULL }, /* XSUM_XXH3_testdata[2653] */ + { 1327, 0x0000000000000000ULL, 0xD192FD7CBF097AC7ULL }, /* XSUM_XXH3_testdata[2654] */ + { 1327, 0x9E3779B185EBCA8DULL, 0xDF8C82D3D28D27B7ULL }, /* XSUM_XXH3_testdata[2655] */ + { 1328, 0x0000000000000000ULL, 0xD431613BD81D3AB0ULL }, /* XSUM_XXH3_testdata[2656] */ + { 1328, 0x9E3779B185EBCA8DULL, 0xABC8A0FCA92A635CULL }, /* XSUM_XXH3_testdata[2657] */ + { 1329, 0x0000000000000000ULL, 0x17CC6274E7945D88ULL }, /* XSUM_XXH3_testdata[2658] */ + { 1329, 0x9E3779B185EBCA8DULL, 0xBF869D913272410CULL }, /* XSUM_XXH3_testdata[2659] */ + { 1330, 0x0000000000000000ULL, 0xA67F9F7FF59914F1ULL }, /* XSUM_XXH3_testdata[2660] */ + { 1330, 0x9E3779B185EBCA8DULL, 0x82FBBBA32BEC1877ULL }, /* XSUM_XXH3_testdata[2661] */ + { 1331, 0x0000000000000000ULL, 0xC028954DD075245BULL }, /* XSUM_XXH3_testdata[2662] */ + { 1331, 0x9E3779B185EBCA8DULL, 0x03F65BD9C4C7FE3DULL }, /* XSUM_XXH3_testdata[2663] */ + { 1332, 0x0000000000000000ULL, 0x9BEBCAC3C85B315EULL }, /* XSUM_XXH3_testdata[2664] */ + { 1332, 0x9E3779B185EBCA8DULL, 0x49D4CF6B712D5C3EULL }, /* XSUM_XXH3_testdata[2665] */ + { 1333, 0x0000000000000000ULL, 0xB2EB79B747A26D08ULL }, /* XSUM_XXH3_testdata[2666] */ + { 1333, 0x9E3779B185EBCA8DULL, 0xACDAB80EBF5A8917ULL }, /* XSUM_XXH3_testdata[2667] */ + { 1334, 0x0000000000000000ULL, 0x489CC739652506E7ULL }, /* XSUM_XXH3_testdata[2668] */ + { 1334, 0x9E3779B185EBCA8DULL, 0x1AB9D545728CEBE0ULL }, /* XSUM_XXH3_testdata[2669] */ + { 1335, 0x0000000000000000ULL, 0xEF30237B5B64111EULL }, /* XSUM_XXH3_testdata[2670] */ + { 1335, 0x9E3779B185EBCA8DULL, 0xB17E403458E586ADULL }, /* XSUM_XXH3_testdata[2671] */ + { 1336, 0x0000000000000000ULL, 0x50BC61865CD999A7ULL }, /* XSUM_XXH3_testdata[2672] */ + { 1336, 0x9E3779B185EBCA8DULL, 0xB87D6B59E0354933ULL }, /* XSUM_XXH3_testdata[2673] */ + { 1337, 0x0000000000000000ULL, 0x9F9A750C6A44F106ULL }, /* XSUM_XXH3_testdata[2674] */ + { 1337, 0x9E3779B185EBCA8DULL, 0x14070E973B3175A2ULL }, /* XSUM_XXH3_testdata[2675] */ + { 1338, 0x0000000000000000ULL, 0x0CCD61FDF237FD29ULL }, /* XSUM_XXH3_testdata[2676] */ + { 1338, 0x9E3779B185EBCA8DULL, 0x4E381AF0B5DFBF40ULL }, /* XSUM_XXH3_testdata[2677] */ + { 1339, 0x0000000000000000ULL, 0xB32803C680833A42ULL }, /* XSUM_XXH3_testdata[2678] */ + { 1339, 0x9E3779B185EBCA8DULL, 0x2B7A79478BDC64F7ULL }, /* XSUM_XXH3_testdata[2679] */ + { 1340, 0x0000000000000000ULL, 0x6D3515923BFD0E5FULL }, /* XSUM_XXH3_testdata[2680] */ + { 1340, 0x9E3779B185EBCA8DULL, 0xD9701B31913C2D4DULL }, /* XSUM_XXH3_testdata[2681] */ + { 1341, 0x0000000000000000ULL, 0x48D8EC79E90A0EFDULL }, /* XSUM_XXH3_testdata[2682] */ + { 1341, 0x9E3779B185EBCA8DULL, 0x594875400B329F1DULL }, /* XSUM_XXH3_testdata[2683] */ + { 1342, 0x0000000000000000ULL, 0x0918BCD2A85A11A3ULL }, /* XSUM_XXH3_testdata[2684] */ + { 1342, 0x9E3779B185EBCA8DULL, 0x50617EC3AD9E6FBEULL }, /* XSUM_XXH3_testdata[2685] */ + { 1343, 0x0000000000000000ULL, 0x47B4B996ACBCA272ULL }, /* XSUM_XXH3_testdata[2686] */ + { 1343, 0x9E3779B185EBCA8DULL, 0x78E1BF70B413C5A2ULL }, /* XSUM_XXH3_testdata[2687] */ + { 1344, 0x0000000000000000ULL, 0x013CE932DAF959CDULL }, /* XSUM_XXH3_testdata[2688] */ + { 1344, 0x9E3779B185EBCA8DULL, 0x4D72828634546D2AULL }, /* XSUM_XXH3_testdata[2689] */ + { 1345, 0x0000000000000000ULL, 0x2C8E44982DF991F6ULL }, /* XSUM_XXH3_testdata[2690] */ + { 1345, 0x9E3779B185EBCA8DULL, 0xBC54FDBF323BBE36ULL }, /* XSUM_XXH3_testdata[2691] */ + { 1346, 0x0000000000000000ULL, 0x545BC34A73452297ULL }, /* XSUM_XXH3_testdata[2692] */ + { 1346, 0x9E3779B185EBCA8DULL, 0x4FA571EA68EF0EDEULL }, /* XSUM_XXH3_testdata[2693] */ + { 1347, 0x0000000000000000ULL, 0x4E37934066623E92ULL }, /* XSUM_XXH3_testdata[2694] */ + { 1347, 0x9E3779B185EBCA8DULL, 0x644C5D2147A8F740ULL }, /* XSUM_XXH3_testdata[2695] */ + { 1348, 0x0000000000000000ULL, 0xCD4F19DD0DB10EFBULL }, /* XSUM_XXH3_testdata[2696] */ + { 1348, 0x9E3779B185EBCA8DULL, 0x7DFE56ABB035254AULL }, /* XSUM_XXH3_testdata[2697] */ + { 1349, 0x0000000000000000ULL, 0x2100DF530D1E9080ULL }, /* XSUM_XXH3_testdata[2698] */ + { 1349, 0x9E3779B185EBCA8DULL, 0xC50323EF416AA038ULL }, /* XSUM_XXH3_testdata[2699] */ + { 1350, 0x0000000000000000ULL, 0xB9B2CF49EC2FB54AULL }, /* XSUM_XXH3_testdata[2700] */ + { 1350, 0x9E3779B185EBCA8DULL, 0xD2F4FF62CC375D83ULL }, /* XSUM_XXH3_testdata[2701] */ + { 1351, 0x0000000000000000ULL, 0x0BCCBE7B56310000ULL }, /* XSUM_XXH3_testdata[2702] */ + { 1351, 0x9E3779B185EBCA8DULL, 0x833F2097408DEB25ULL }, /* XSUM_XXH3_testdata[2703] */ + { 1352, 0x0000000000000000ULL, 0xD46A300F00BF77ACULL }, /* XSUM_XXH3_testdata[2704] */ + { 1352, 0x9E3779B185EBCA8DULL, 0x7BB6491930D53D56ULL }, /* XSUM_XXH3_testdata[2705] */ + { 1353, 0x0000000000000000ULL, 0xAC88733AE865906AULL }, /* XSUM_XXH3_testdata[2706] */ + { 1353, 0x9E3779B185EBCA8DULL, 0xD9F702821DE7D0D1ULL }, /* XSUM_XXH3_testdata[2707] */ + { 1354, 0x0000000000000000ULL, 0xA5FEF51672F13422ULL }, /* XSUM_XXH3_testdata[2708] */ + { 1354, 0x9E3779B185EBCA8DULL, 0x22FB18918E9D4B13ULL }, /* XSUM_XXH3_testdata[2709] */ + { 1355, 0x0000000000000000ULL, 0x4005197CEECF38A2ULL }, /* XSUM_XXH3_testdata[2710] */ + { 1355, 0x9E3779B185EBCA8DULL, 0x871C7BC841BF8CEAULL }, /* XSUM_XXH3_testdata[2711] */ + { 1356, 0x0000000000000000ULL, 0x6EC4DD07A7E36E9AULL }, /* XSUM_XXH3_testdata[2712] */ + { 1356, 0x9E3779B185EBCA8DULL, 0xC0F936987C1DCAF3ULL }, /* XSUM_XXH3_testdata[2713] */ + { 1357, 0x0000000000000000ULL, 0x45D8E48A5773C59DULL }, /* XSUM_XXH3_testdata[2714] */ + { 1357, 0x9E3779B185EBCA8DULL, 0xCAD350498527761CULL }, /* XSUM_XXH3_testdata[2715] */ + { 1358, 0x0000000000000000ULL, 0xF34F31F8ECAD2143ULL }, /* XSUM_XXH3_testdata[2716] */ + { 1358, 0x9E3779B185EBCA8DULL, 0xA22B0347980DA2A2ULL }, /* XSUM_XXH3_testdata[2717] */ + { 1359, 0x0000000000000000ULL, 0x84EDC4E7BF4E5B18ULL }, /* XSUM_XXH3_testdata[2718] */ + { 1359, 0x9E3779B185EBCA8DULL, 0xB4EE44ACBAA9AEEDULL }, /* XSUM_XXH3_testdata[2719] */ + { 1360, 0x0000000000000000ULL, 0x51117C6E1E37F76BULL }, /* XSUM_XXH3_testdata[2720] */ + { 1360, 0x9E3779B185EBCA8DULL, 0xDE39242E68E96791ULL }, /* XSUM_XXH3_testdata[2721] */ + { 1361, 0x0000000000000000ULL, 0xFAFE998DF0B50089ULL }, /* XSUM_XXH3_testdata[2722] */ + { 1361, 0x9E3779B185EBCA8DULL, 0x491FD31A6C5E4C5AULL }, /* XSUM_XXH3_testdata[2723] */ + { 1362, 0x0000000000000000ULL, 0x9CD51FE9344A44CCULL }, /* XSUM_XXH3_testdata[2724] */ + { 1362, 0x9E3779B185EBCA8DULL, 0x707038848851FC82ULL }, /* XSUM_XXH3_testdata[2725] */ + { 1363, 0x0000000000000000ULL, 0x8689EEAB84ADF7B2ULL }, /* XSUM_XXH3_testdata[2726] */ + { 1363, 0x9E3779B185EBCA8DULL, 0xB4FF0F3BAABCCEFBULL }, /* XSUM_XXH3_testdata[2727] */ + { 1364, 0x0000000000000000ULL, 0xD8A9BD68C7CC6E1EULL }, /* XSUM_XXH3_testdata[2728] */ + { 1364, 0x9E3779B185EBCA8DULL, 0xD40E9878CF8B320DULL }, /* XSUM_XXH3_testdata[2729] */ + { 1365, 0x0000000000000000ULL, 0x9E8CDD6FD3212339ULL }, /* XSUM_XXH3_testdata[2730] */ + { 1365, 0x9E3779B185EBCA8DULL, 0x4491397CAE591664ULL }, /* XSUM_XXH3_testdata[2731] */ + { 1366, 0x0000000000000000ULL, 0x7F393536B14CBE53ULL }, /* XSUM_XXH3_testdata[2732] */ + { 1366, 0x9E3779B185EBCA8DULL, 0x563CB0DDCFB26BC1ULL }, /* XSUM_XXH3_testdata[2733] */ + { 1367, 0x0000000000000000ULL, 0x9430E26767DF1D3EULL }, /* XSUM_XXH3_testdata[2734] */ + { 1367, 0x9E3779B185EBCA8DULL, 0xEF72A6CB89577251ULL }, /* XSUM_XXH3_testdata[2735] */ + { 1368, 0x0000000000000000ULL, 0x891A102E719B14CDULL }, /* XSUM_XXH3_testdata[2736] */ + { 1368, 0x9E3779B185EBCA8DULL, 0xBDE60050A6A51CFDULL }, /* XSUM_XXH3_testdata[2737] */ + { 1369, 0x0000000000000000ULL, 0xEFB2528D9B81371AULL }, /* XSUM_XXH3_testdata[2738] */ + { 1369, 0x9E3779B185EBCA8DULL, 0xA3D60B20FFA4D538ULL }, /* XSUM_XXH3_testdata[2739] */ + { 1370, 0x0000000000000000ULL, 0x1F1B7AC192DA87BCULL }, /* XSUM_XXH3_testdata[2740] */ + { 1370, 0x9E3779B185EBCA8DULL, 0x8960BB3D1F06D6ADULL }, /* XSUM_XXH3_testdata[2741] */ + { 1371, 0x0000000000000000ULL, 0x3AC2E3D1D3110DE2ULL }, /* XSUM_XXH3_testdata[2742] */ + { 1371, 0x9E3779B185EBCA8DULL, 0xA4984AC23440FCC0ULL }, /* XSUM_XXH3_testdata[2743] */ + { 1372, 0x0000000000000000ULL, 0xFC287592522AA7EAULL }, /* XSUM_XXH3_testdata[2744] */ + { 1372, 0x9E3779B185EBCA8DULL, 0xE8883E3691A64403ULL }, /* XSUM_XXH3_testdata[2745] */ + { 1373, 0x0000000000000000ULL, 0x07D5764EFA3C28F8ULL }, /* XSUM_XXH3_testdata[2746] */ + { 1373, 0x9E3779B185EBCA8DULL, 0x63B086ADA02C05EEULL }, /* XSUM_XXH3_testdata[2747] */ + { 1374, 0x0000000000000000ULL, 0x692E010AACBBDD83ULL }, /* XSUM_XXH3_testdata[2748] */ + { 1374, 0x9E3779B185EBCA8DULL, 0x356F67E7E6882972ULL }, /* XSUM_XXH3_testdata[2749] */ + { 1375, 0x0000000000000000ULL, 0x918BCEDA7771D693ULL }, /* XSUM_XXH3_testdata[2750] */ + { 1375, 0x9E3779B185EBCA8DULL, 0x27DD289F1FF7E712ULL }, /* XSUM_XXH3_testdata[2751] */ + { 1376, 0x0000000000000000ULL, 0xF5F2C67F0A407FEFULL }, /* XSUM_XXH3_testdata[2752] */ + { 1376, 0x9E3779B185EBCA8DULL, 0x79D4CA65FA84EB33ULL }, /* XSUM_XXH3_testdata[2753] */ + { 1377, 0x0000000000000000ULL, 0x232F5E84CBA74A2BULL }, /* XSUM_XXH3_testdata[2754] */ + { 1377, 0x9E3779B185EBCA8DULL, 0x57F9DB3D6629D224ULL }, /* XSUM_XXH3_testdata[2755] */ + { 1378, 0x0000000000000000ULL, 0x18EC462AFF076DF2ULL }, /* XSUM_XXH3_testdata[2756] */ + { 1378, 0x9E3779B185EBCA8DULL, 0x65A838B3EC37187DULL }, /* XSUM_XXH3_testdata[2757] */ + { 1379, 0x0000000000000000ULL, 0x608525D658F939D3ULL }, /* XSUM_XXH3_testdata[2758] */ + { 1379, 0x9E3779B185EBCA8DULL, 0x788376FB391AB04FULL }, /* XSUM_XXH3_testdata[2759] */ + { 1380, 0x0000000000000000ULL, 0x8B3AFE1BAC0FB533ULL }, /* XSUM_XXH3_testdata[2760] */ + { 1380, 0x9E3779B185EBCA8DULL, 0x3298317AA71EF9F9ULL }, /* XSUM_XXH3_testdata[2761] */ + { 1381, 0x0000000000000000ULL, 0xD88FA62E105EB767ULL }, /* XSUM_XXH3_testdata[2762] */ + { 1381, 0x9E3779B185EBCA8DULL, 0xD537F267D2EF8B65ULL }, /* XSUM_XXH3_testdata[2763] */ + { 1382, 0x0000000000000000ULL, 0xDD5FB8861BE2649CULL }, /* XSUM_XXH3_testdata[2764] */ + { 1382, 0x9E3779B185EBCA8DULL, 0xA478AC159FA2C385ULL }, /* XSUM_XXH3_testdata[2765] */ + { 1383, 0x0000000000000000ULL, 0x0D9D6E0B91B185EDULL }, /* XSUM_XXH3_testdata[2766] */ + { 1383, 0x9E3779B185EBCA8DULL, 0xF0EC3D66A74F4B28ULL }, /* XSUM_XXH3_testdata[2767] */ + { 1384, 0x0000000000000000ULL, 0xC99D8710C21F05EEULL }, /* XSUM_XXH3_testdata[2768] */ + { 1384, 0x9E3779B185EBCA8DULL, 0x25CDB598192DF8FCULL }, /* XSUM_XXH3_testdata[2769] */ + { 1385, 0x0000000000000000ULL, 0x439FD60BEA838A0FULL }, /* XSUM_XXH3_testdata[2770] */ + { 1385, 0x9E3779B185EBCA8DULL, 0xB3A834E9936D2D1AULL }, /* XSUM_XXH3_testdata[2771] */ + { 1386, 0x0000000000000000ULL, 0x880E9297A45F41F0ULL }, /* XSUM_XXH3_testdata[2772] */ + { 1386, 0x9E3779B185EBCA8DULL, 0xE0BA11F31B01B255ULL }, /* XSUM_XXH3_testdata[2773] */ + { 1387, 0x0000000000000000ULL, 0x7C62397B9BFBB320ULL }, /* XSUM_XXH3_testdata[2774] */ + { 1387, 0x9E3779B185EBCA8DULL, 0x345576A37765439FULL }, /* XSUM_XXH3_testdata[2775] */ + { 1388, 0x0000000000000000ULL, 0x54D1CEDD46CC5E95ULL }, /* XSUM_XXH3_testdata[2776] */ + { 1388, 0x9E3779B185EBCA8DULL, 0xFCA3CCFDCF6AF513ULL }, /* XSUM_XXH3_testdata[2777] */ + { 1389, 0x0000000000000000ULL, 0x06D8FE21D778AAB9ULL }, /* XSUM_XXH3_testdata[2778] */ + { 1389, 0x9E3779B185EBCA8DULL, 0xBAA587CD7AE898BBULL }, /* XSUM_XXH3_testdata[2779] */ + { 1390, 0x0000000000000000ULL, 0x892662096E518CC2ULL }, /* XSUM_XXH3_testdata[2780] */ + { 1390, 0x9E3779B185EBCA8DULL, 0x0E765E19FFE64E7FULL }, /* XSUM_XXH3_testdata[2781] */ + { 1391, 0x0000000000000000ULL, 0x7A85690BFD330103ULL }, /* XSUM_XXH3_testdata[2782] */ + { 1391, 0x9E3779B185EBCA8DULL, 0xC528D0268830BD69ULL }, /* XSUM_XXH3_testdata[2783] */ + { 1392, 0x0000000000000000ULL, 0xA25DB11855B24D5AULL }, /* XSUM_XXH3_testdata[2784] */ + { 1392, 0x9E3779B185EBCA8DULL, 0x21157B53701A3A07ULL }, /* XSUM_XXH3_testdata[2785] */ + { 1393, 0x0000000000000000ULL, 0x8EE466F3114B1006ULL }, /* XSUM_XXH3_testdata[2786] */ + { 1393, 0x9E3779B185EBCA8DULL, 0x4711090ED966E57CULL }, /* XSUM_XXH3_testdata[2787] */ + { 1394, 0x0000000000000000ULL, 0x169F9D539694E361ULL }, /* XSUM_XXH3_testdata[2788] */ + { 1394, 0x9E3779B185EBCA8DULL, 0xE1962C3129A85215ULL }, /* XSUM_XXH3_testdata[2789] */ + { 1395, 0x0000000000000000ULL, 0x3CC434DCAF0A0B99ULL }, /* XSUM_XXH3_testdata[2790] */ + { 1395, 0x9E3779B185EBCA8DULL, 0xE7E837D0081BA4E0ULL }, /* XSUM_XXH3_testdata[2791] */ + { 1396, 0x0000000000000000ULL, 0x59922D1610ACF94BULL }, /* XSUM_XXH3_testdata[2792] */ + { 1396, 0x9E3779B185EBCA8DULL, 0x11521545078B6367ULL }, /* XSUM_XXH3_testdata[2793] */ + { 1397, 0x0000000000000000ULL, 0x4BB9F5EFD3033344ULL }, /* XSUM_XXH3_testdata[2794] */ + { 1397, 0x9E3779B185EBCA8DULL, 0xEED83CCAAF3788D8ULL }, /* XSUM_XXH3_testdata[2795] */ + { 1398, 0x0000000000000000ULL, 0xCB23BE297181BCFDULL }, /* XSUM_XXH3_testdata[2796] */ + { 1398, 0x9E3779B185EBCA8DULL, 0x69847059506D2C9FULL }, /* XSUM_XXH3_testdata[2797] */ + { 1399, 0x0000000000000000ULL, 0x325BB710E26DF0FCULL }, /* XSUM_XXH3_testdata[2798] */ + { 1399, 0x9E3779B185EBCA8DULL, 0xF647B2920BE132BAULL }, /* XSUM_XXH3_testdata[2799] */ + { 1400, 0x0000000000000000ULL, 0x1BFB88704DE4E438ULL }, /* XSUM_XXH3_testdata[2800] */ + { 1400, 0x9E3779B185EBCA8DULL, 0x20D9F4B075164F01ULL }, /* XSUM_XXH3_testdata[2801] */ + { 1401, 0x0000000000000000ULL, 0x6E4007192C7E5477ULL }, /* XSUM_XXH3_testdata[2802] */ + { 1401, 0x9E3779B185EBCA8DULL, 0xA7D1BBA89BDE98DEULL }, /* XSUM_XXH3_testdata[2803] */ + { 1402, 0x0000000000000000ULL, 0x793FF88589F05AA2ULL }, /* XSUM_XXH3_testdata[2804] */ + { 1402, 0x9E3779B185EBCA8DULL, 0xDBA14086CDB9BFE2ULL }, /* XSUM_XXH3_testdata[2805] */ + { 1403, 0x0000000000000000ULL, 0x13CEECC554A7370AULL }, /* XSUM_XXH3_testdata[2806] */ + { 1403, 0x9E3779B185EBCA8DULL, 0x4E9EAE32CBDB6224ULL }, /* XSUM_XXH3_testdata[2807] */ + { 1404, 0x0000000000000000ULL, 0xF258680A2E1B12F1ULL }, /* XSUM_XXH3_testdata[2808] */ + { 1404, 0x9E3779B185EBCA8DULL, 0x8200673C5037CCABULL }, /* XSUM_XXH3_testdata[2809] */ + { 1405, 0x0000000000000000ULL, 0x141D9483A8195CDBULL }, /* XSUM_XXH3_testdata[2810] */ + { 1405, 0x9E3779B185EBCA8DULL, 0xE1A8D72971376B0AULL }, /* XSUM_XXH3_testdata[2811] */ + { 1406, 0x0000000000000000ULL, 0xC4608F1B395D7C61ULL }, /* XSUM_XXH3_testdata[2812] */ + { 1406, 0x9E3779B185EBCA8DULL, 0x46009F40B052DB04ULL }, /* XSUM_XXH3_testdata[2813] */ + { 1407, 0x0000000000000000ULL, 0x921CDB3E8E19798AULL }, /* XSUM_XXH3_testdata[2814] */ + { 1407, 0x9E3779B185EBCA8DULL, 0xF5AD8F6C0B798283ULL }, /* XSUM_XXH3_testdata[2815] */ + { 1408, 0x0000000000000000ULL, 0xF1AA40024272BF80ULL }, /* XSUM_XXH3_testdata[2816] */ + { 1408, 0x9E3779B185EBCA8DULL, 0xDE4DF8A29F45B9E0ULL }, /* XSUM_XXH3_testdata[2817] */ + { 1409, 0x0000000000000000ULL, 0x5C6F59BD9E2B8E96ULL }, /* XSUM_XXH3_testdata[2818] */ + { 1409, 0x9E3779B185EBCA8DULL, 0x3358B1D4BE22F75FULL }, /* XSUM_XXH3_testdata[2819] */ + { 1410, 0x0000000000000000ULL, 0xA1CEA58F6C781CC7ULL }, /* XSUM_XXH3_testdata[2820] */ + { 1410, 0x9E3779B185EBCA8DULL, 0x2DE90C2DF28E7DFEULL }, /* XSUM_XXH3_testdata[2821] */ + { 1411, 0x0000000000000000ULL, 0x8059B60348A48EBFULL }, /* XSUM_XXH3_testdata[2822] */ + { 1411, 0x9E3779B185EBCA8DULL, 0x8EE711ABBC7D9DC4ULL }, /* XSUM_XXH3_testdata[2823] */ + { 1412, 0x0000000000000000ULL, 0x2BFDA33D3D40EFF9ULL }, /* XSUM_XXH3_testdata[2824] */ + { 1412, 0x9E3779B185EBCA8DULL, 0x3D6A9CD83D92A2F9ULL }, /* XSUM_XXH3_testdata[2825] */ + { 1413, 0x0000000000000000ULL, 0x55EFC5AC3A8F3996ULL }, /* XSUM_XXH3_testdata[2826] */ + { 1413, 0x9E3779B185EBCA8DULL, 0xD33CDDFDECFC586BULL }, /* XSUM_XXH3_testdata[2827] */ + { 1414, 0x0000000000000000ULL, 0x00476283A35F00BEULL }, /* XSUM_XXH3_testdata[2828] */ + { 1414, 0x9E3779B185EBCA8DULL, 0xA905C757E0386BB7ULL }, /* XSUM_XXH3_testdata[2829] */ + { 1415, 0x0000000000000000ULL, 0x848284B30D19EE3BULL }, /* XSUM_XXH3_testdata[2830] */ + { 1415, 0x9E3779B185EBCA8DULL, 0x893645A441AFD7B9ULL }, /* XSUM_XXH3_testdata[2831] */ + { 1416, 0x0000000000000000ULL, 0x2EB8DF3D270569EEULL }, /* XSUM_XXH3_testdata[2832] */ + { 1416, 0x9E3779B185EBCA8DULL, 0xDA7F2D825BBACCE7ULL }, /* XSUM_XXH3_testdata[2833] */ + { 1417, 0x0000000000000000ULL, 0x15E3A46C9BCC31B7ULL }, /* XSUM_XXH3_testdata[2834] */ + { 1417, 0x9E3779B185EBCA8DULL, 0x606BFE3757B52831ULL }, /* XSUM_XXH3_testdata[2835] */ + { 1418, 0x0000000000000000ULL, 0x1940C0475A90665AULL }, /* XSUM_XXH3_testdata[2836] */ + { 1418, 0x9E3779B185EBCA8DULL, 0xD070C303B5A0F467ULL }, /* XSUM_XXH3_testdata[2837] */ + { 1419, 0x0000000000000000ULL, 0x85ADBC4FCC10049EULL }, /* XSUM_XXH3_testdata[2838] */ + { 1419, 0x9E3779B185EBCA8DULL, 0xD6838508DE64D4D3ULL }, /* XSUM_XXH3_testdata[2839] */ + { 1420, 0x0000000000000000ULL, 0xB02A4A4C485139EBULL }, /* XSUM_XXH3_testdata[2840] */ + { 1420, 0x9E3779B185EBCA8DULL, 0x038FC5270157BE6CULL }, /* XSUM_XXH3_testdata[2841] */ + { 1421, 0x0000000000000000ULL, 0x80E5B14774A6E3DEULL }, /* XSUM_XXH3_testdata[2842] */ + { 1421, 0x9E3779B185EBCA8DULL, 0xF63639714BB765F8ULL }, /* XSUM_XXH3_testdata[2843] */ + { 1422, 0x0000000000000000ULL, 0x940D6F8AFC3E5FE2ULL }, /* XSUM_XXH3_testdata[2844] */ + { 1422, 0x9E3779B185EBCA8DULL, 0xC994312948C52D3EULL }, /* XSUM_XXH3_testdata[2845] */ + { 1423, 0x0000000000000000ULL, 0x8FCDA6A6E0DC7A52ULL }, /* XSUM_XXH3_testdata[2846] */ + { 1423, 0x9E3779B185EBCA8DULL, 0xE0BA243293EFD78AULL }, /* XSUM_XXH3_testdata[2847] */ + { 1424, 0x0000000000000000ULL, 0xEAE22F34BD769AB7ULL }, /* XSUM_XXH3_testdata[2848] */ + { 1424, 0x9E3779B185EBCA8DULL, 0x058F19EB59C50BC2ULL }, /* XSUM_XXH3_testdata[2849] */ + { 1425, 0x0000000000000000ULL, 0xC722483D6C8D78F2ULL }, /* XSUM_XXH3_testdata[2850] */ + { 1425, 0x9E3779B185EBCA8DULL, 0xC3E70A47E1740CDAULL }, /* XSUM_XXH3_testdata[2851] */ + { 1426, 0x0000000000000000ULL, 0xC3ED57E85DFC3DCFULL }, /* XSUM_XXH3_testdata[2852] */ + { 1426, 0x9E3779B185EBCA8DULL, 0x8508106B8B812CA9ULL }, /* XSUM_XXH3_testdata[2853] */ + { 1427, 0x0000000000000000ULL, 0x3C8B0BE1563E4FC6ULL }, /* XSUM_XXH3_testdata[2854] */ + { 1427, 0x9E3779B185EBCA8DULL, 0x0479E1F1A517E19DULL }, /* XSUM_XXH3_testdata[2855] */ + { 1428, 0x0000000000000000ULL, 0x63A69B05FBCC9402ULL }, /* XSUM_XXH3_testdata[2856] */ + { 1428, 0x9E3779B185EBCA8DULL, 0xE7F613868AA95648ULL }, /* XSUM_XXH3_testdata[2857] */ + { 1429, 0x0000000000000000ULL, 0x21EBCAFFD57F2956ULL }, /* XSUM_XXH3_testdata[2858] */ + { 1429, 0x9E3779B185EBCA8DULL, 0x2447CC428E1293DCULL }, /* XSUM_XXH3_testdata[2859] */ + { 1430, 0x0000000000000000ULL, 0x5E104F68A70661BEULL }, /* XSUM_XXH3_testdata[2860] */ + { 1430, 0x9E3779B185EBCA8DULL, 0x393522B30920D796ULL }, /* XSUM_XXH3_testdata[2861] */ + { 1431, 0x0000000000000000ULL, 0x2B6669B122112FF1ULL }, /* XSUM_XXH3_testdata[2862] */ + { 1431, 0x9E3779B185EBCA8DULL, 0xC3567F2F7E4629AEULL }, /* XSUM_XXH3_testdata[2863] */ + { 1432, 0x0000000000000000ULL, 0x03CC3AFF607E56B6ULL }, /* XSUM_XXH3_testdata[2864] */ + { 1432, 0x9E3779B185EBCA8DULL, 0xB1644A59218014A3ULL }, /* XSUM_XXH3_testdata[2865] */ + { 1433, 0x0000000000000000ULL, 0xED897754BF1BB643ULL }, /* XSUM_XXH3_testdata[2866] */ + { 1433, 0x9E3779B185EBCA8DULL, 0x89AC2C7514B7094EULL }, /* XSUM_XXH3_testdata[2867] */ + { 1434, 0x0000000000000000ULL, 0x1E6146A8C2663D38ULL }, /* XSUM_XXH3_testdata[2868] */ + { 1434, 0x9E3779B185EBCA8DULL, 0x104E86E354C91BAAULL }, /* XSUM_XXH3_testdata[2869] */ + { 1435, 0x0000000000000000ULL, 0xEA4A52BF4A45BF2AULL }, /* XSUM_XXH3_testdata[2870] */ + { 1435, 0x9E3779B185EBCA8DULL, 0x32A2D9C12A144029ULL }, /* XSUM_XXH3_testdata[2871] */ + { 1436, 0x0000000000000000ULL, 0x72EE45F76D09715DULL }, /* XSUM_XXH3_testdata[2872] */ + { 1436, 0x9E3779B185EBCA8DULL, 0x63127F6A73DC254CULL }, /* XSUM_XXH3_testdata[2873] */ + { 1437, 0x0000000000000000ULL, 0x06C24FB6DF4AB655ULL }, /* XSUM_XXH3_testdata[2874] */ + { 1437, 0x9E3779B185EBCA8DULL, 0xA82117607BBF2E21ULL }, /* XSUM_XXH3_testdata[2875] */ + { 1438, 0x0000000000000000ULL, 0xCAC79B306F1064CDULL }, /* XSUM_XXH3_testdata[2876] */ + { 1438, 0x9E3779B185EBCA8DULL, 0x312B5316313F08DCULL }, /* XSUM_XXH3_testdata[2877] */ + { 1439, 0x0000000000000000ULL, 0xE3602478268DB39BULL }, /* XSUM_XXH3_testdata[2878] */ + { 1439, 0x9E3779B185EBCA8DULL, 0xF9E83E68AA8FC5BDULL }, /* XSUM_XXH3_testdata[2879] */ + { 1440, 0x0000000000000000ULL, 0xD7934FC97AB126FFULL }, /* XSUM_XXH3_testdata[2880] */ + { 1440, 0x9E3779B185EBCA8DULL, 0x3F08BAC07209501EULL }, /* XSUM_XXH3_testdata[2881] */ + { 1441, 0x0000000000000000ULL, 0xFCBAA4F5A7241C67ULL }, /* XSUM_XXH3_testdata[2882] */ + { 1441, 0x9E3779B185EBCA8DULL, 0xD94ED4BAB6EA7453ULL }, /* XSUM_XXH3_testdata[2883] */ + { 1442, 0x0000000000000000ULL, 0xE76C27C6CA4BE8BEULL }, /* XSUM_XXH3_testdata[2884] */ + { 1442, 0x9E3779B185EBCA8DULL, 0xAAE2ECC4A650576DULL }, /* XSUM_XXH3_testdata[2885] */ + { 1443, 0x0000000000000000ULL, 0xE21B11C1BBEF493BULL }, /* XSUM_XXH3_testdata[2886] */ + { 1443, 0x9E3779B185EBCA8DULL, 0x7F0A0CA77337B6DDULL }, /* XSUM_XXH3_testdata[2887] */ + { 1444, 0x0000000000000000ULL, 0xED46566D24575C36ULL }, /* XSUM_XXH3_testdata[2888] */ + { 1444, 0x9E3779B185EBCA8DULL, 0x9875F54079C58BE0ULL }, /* XSUM_XXH3_testdata[2889] */ + { 1445, 0x0000000000000000ULL, 0x3021E8B6EE5E412DULL }, /* XSUM_XXH3_testdata[2890] */ + { 1445, 0x9E3779B185EBCA8DULL, 0x51590DA933C29CE4ULL }, /* XSUM_XXH3_testdata[2891] */ + { 1446, 0x0000000000000000ULL, 0x5DAC63789A9A5CF8ULL }, /* XSUM_XXH3_testdata[2892] */ + { 1446, 0x9E3779B185EBCA8DULL, 0xD25978C5B20C501AULL }, /* XSUM_XXH3_testdata[2893] */ + { 1447, 0x0000000000000000ULL, 0x2623F8B9FA9144FFULL }, /* XSUM_XXH3_testdata[2894] */ + { 1447, 0x9E3779B185EBCA8DULL, 0x4A970D000F478705ULL }, /* XSUM_XXH3_testdata[2895] */ + { 1448, 0x0000000000000000ULL, 0x4D76CE7CF9FBAB5CULL }, /* XSUM_XXH3_testdata[2896] */ + { 1448, 0x9E3779B185EBCA8DULL, 0x00DB1D4D082EC71AULL }, /* XSUM_XXH3_testdata[2897] */ + { 1449, 0x0000000000000000ULL, 0x06688FEC0772674DULL }, /* XSUM_XXH3_testdata[2898] */ + { 1449, 0x9E3779B185EBCA8DULL, 0xE988345D128FC527ULL }, /* XSUM_XXH3_testdata[2899] */ + { 1450, 0x0000000000000000ULL, 0xF4E59132522B56FDULL }, /* XSUM_XXH3_testdata[2900] */ + { 1450, 0x9E3779B185EBCA8DULL, 0xD8D4B2687F22F6A9ULL }, /* XSUM_XXH3_testdata[2901] */ + { 1451, 0x0000000000000000ULL, 0x54462278DA1DA4B8ULL }, /* XSUM_XXH3_testdata[2902] */ + { 1451, 0x9E3779B185EBCA8DULL, 0x2224F0ABB8490DF3ULL }, /* XSUM_XXH3_testdata[2903] */ + { 1452, 0x0000000000000000ULL, 0xB3A19773EEAC82A7ULL }, /* XSUM_XXH3_testdata[2904] */ + { 1452, 0x9E3779B185EBCA8DULL, 0xB99C5F0B89671EA4ULL }, /* XSUM_XXH3_testdata[2905] */ + { 1453, 0x0000000000000000ULL, 0x1AFB91A51D617EEEULL }, /* XSUM_XXH3_testdata[2906] */ + { 1453, 0x9E3779B185EBCA8DULL, 0xD21CE74CA12BBD50ULL }, /* XSUM_XXH3_testdata[2907] */ + { 1454, 0x0000000000000000ULL, 0xCE4632E7365279ADULL }, /* XSUM_XXH3_testdata[2908] */ + { 1454, 0x9E3779B185EBCA8DULL, 0x12B4779302392D0BULL }, /* XSUM_XXH3_testdata[2909] */ + { 1455, 0x0000000000000000ULL, 0xC29098E5A3A25E75ULL }, /* XSUM_XXH3_testdata[2910] */ + { 1455, 0x9E3779B185EBCA8DULL, 0x2D375331BC9B3F24ULL }, /* XSUM_XXH3_testdata[2911] */ + { 1456, 0x0000000000000000ULL, 0x5FFB14BD3D509415ULL }, /* XSUM_XXH3_testdata[2912] */ + { 1456, 0x9E3779B185EBCA8DULL, 0xA8D557A5145B471BULL }, /* XSUM_XXH3_testdata[2913] */ + { 1457, 0x0000000000000000ULL, 0x85D5CCCE24F8797AULL }, /* XSUM_XXH3_testdata[2914] */ + { 1457, 0x9E3779B185EBCA8DULL, 0x0668F51F65318559ULL }, /* XSUM_XXH3_testdata[2915] */ + { 1458, 0x0000000000000000ULL, 0xBDC9FBA2A2AE6050ULL }, /* XSUM_XXH3_testdata[2916] */ + { 1458, 0x9E3779B185EBCA8DULL, 0x16A4C29F94CA66EAULL }, /* XSUM_XXH3_testdata[2917] */ + { 1459, 0x0000000000000000ULL, 0x811A9CBAED802D8BULL }, /* XSUM_XXH3_testdata[2918] */ + { 1459, 0x9E3779B185EBCA8DULL, 0xB6E74313E859C393ULL }, /* XSUM_XXH3_testdata[2919] */ + { 1460, 0x0000000000000000ULL, 0x6AD8A4148AC21A54ULL }, /* XSUM_XXH3_testdata[2920] */ + { 1460, 0x9E3779B185EBCA8DULL, 0x149507C74DC85025ULL }, /* XSUM_XXH3_testdata[2921] */ + { 1461, 0x0000000000000000ULL, 0xFFBADF33A137B1A5ULL }, /* XSUM_XXH3_testdata[2922] */ + { 1461, 0x9E3779B185EBCA8DULL, 0xE484358F190B97ABULL }, /* XSUM_XXH3_testdata[2923] */ + { 1462, 0x0000000000000000ULL, 0x30F78921C660D6C9ULL }, /* XSUM_XXH3_testdata[2924] */ + { 1462, 0x9E3779B185EBCA8DULL, 0xD854E89102D7F820ULL }, /* XSUM_XXH3_testdata[2925] */ + { 1463, 0x0000000000000000ULL, 0x979DD668D22ACD1BULL }, /* XSUM_XXH3_testdata[2926] */ + { 1463, 0x9E3779B185EBCA8DULL, 0x84F358112A7A9A9DULL }, /* XSUM_XXH3_testdata[2927] */ + { 1464, 0x0000000000000000ULL, 0xF5016DB3AE992C23ULL }, /* XSUM_XXH3_testdata[2928] */ + { 1464, 0x9E3779B185EBCA8DULL, 0xC7BEAD8B36AFD2A1ULL }, /* XSUM_XXH3_testdata[2929] */ + { 1465, 0x0000000000000000ULL, 0x7EB14336702690E8ULL }, /* XSUM_XXH3_testdata[2930] */ + { 1465, 0x9E3779B185EBCA8DULL, 0x508C9253021A59B7ULL }, /* XSUM_XXH3_testdata[2931] */ + { 1466, 0x0000000000000000ULL, 0x2892C34695634315ULL }, /* XSUM_XXH3_testdata[2932] */ + { 1466, 0x9E3779B185EBCA8DULL, 0x6C4447F74073B981ULL }, /* XSUM_XXH3_testdata[2933] */ + { 1467, 0x0000000000000000ULL, 0x293047331A699254ULL }, /* XSUM_XXH3_testdata[2934] */ + { 1467, 0x9E3779B185EBCA8DULL, 0xA5165A4043BA66A9ULL }, /* XSUM_XXH3_testdata[2935] */ + { 1468, 0x0000000000000000ULL, 0xE4DC1418E120908CULL }, /* XSUM_XXH3_testdata[2936] */ + { 1468, 0x9E3779B185EBCA8DULL, 0x0DC5731C7B6AD8D0ULL }, /* XSUM_XXH3_testdata[2937] */ + { 1469, 0x0000000000000000ULL, 0x4642D4D698A17F79ULL }, /* XSUM_XXH3_testdata[2938] */ + { 1469, 0x9E3779B185EBCA8DULL, 0xD8AF9E9DE8B28A4FULL }, /* XSUM_XXH3_testdata[2939] */ + { 1470, 0x0000000000000000ULL, 0xCB98A643075C06C9ULL }, /* XSUM_XXH3_testdata[2940] */ + { 1470, 0x9E3779B185EBCA8DULL, 0x5DF1BAB3FEF00B22ULL }, /* XSUM_XXH3_testdata[2941] */ + { 1471, 0x0000000000000000ULL, 0x79B1BB9B9D6BE112ULL }, /* XSUM_XXH3_testdata[2942] */ + { 1471, 0x9E3779B185EBCA8DULL, 0x19B0A6B12B2D48FFULL }, /* XSUM_XXH3_testdata[2943] */ + { 1472, 0x0000000000000000ULL, 0x74BC4C2C12AC495EULL }, /* XSUM_XXH3_testdata[2944] */ + { 1472, 0x9E3779B185EBCA8DULL, 0x12B583A1EA56608DULL }, /* XSUM_XXH3_testdata[2945] */ + { 1473, 0x0000000000000000ULL, 0xE051FE60AEDCF9AEULL }, /* XSUM_XXH3_testdata[2946] */ + { 1473, 0x9E3779B185EBCA8DULL, 0x6C18643991DD1604ULL }, /* XSUM_XXH3_testdata[2947] */ + { 1474, 0x0000000000000000ULL, 0x09003EF11C39F08DULL }, /* XSUM_XXH3_testdata[2948] */ + { 1474, 0x9E3779B185EBCA8DULL, 0xF0ED526263798652ULL }, /* XSUM_XXH3_testdata[2949] */ + { 1475, 0x0000000000000000ULL, 0x9936DBC1FDD89AE9ULL }, /* XSUM_XXH3_testdata[2950] */ + { 1475, 0x9E3779B185EBCA8DULL, 0x5BE18236A136D55AULL }, /* XSUM_XXH3_testdata[2951] */ + { 1476, 0x0000000000000000ULL, 0x1D8C65FE0EF623C5ULL }, /* XSUM_XXH3_testdata[2952] */ + { 1476, 0x9E3779B185EBCA8DULL, 0x04B3474EB1616A70ULL }, /* XSUM_XXH3_testdata[2953] */ + { 1477, 0x0000000000000000ULL, 0x2F7C6F94146B62DEULL }, /* XSUM_XXH3_testdata[2954] */ + { 1477, 0x9E3779B185EBCA8DULL, 0xD8444BA66D29A5D1ULL }, /* XSUM_XXH3_testdata[2955] */ + { 1478, 0x0000000000000000ULL, 0xCD55942E733C8DE0ULL }, /* XSUM_XXH3_testdata[2956] */ + { 1478, 0x9E3779B185EBCA8DULL, 0xD71D23526A3E272BULL }, /* XSUM_XXH3_testdata[2957] */ + { 1479, 0x0000000000000000ULL, 0x8C2429B7DCE7F860ULL }, /* XSUM_XXH3_testdata[2958] */ + { 1479, 0x9E3779B185EBCA8DULL, 0x0473B8054CD908FDULL }, /* XSUM_XXH3_testdata[2959] */ + { 1480, 0x0000000000000000ULL, 0xE21FD7795401C634ULL }, /* XSUM_XXH3_testdata[2960] */ + { 1480, 0x9E3779B185EBCA8DULL, 0x47C114BB0C7D7EDBULL }, /* XSUM_XXH3_testdata[2961] */ + { 1481, 0x0000000000000000ULL, 0xF096DD223E26115FULL }, /* XSUM_XXH3_testdata[2962] */ + { 1481, 0x9E3779B185EBCA8DULL, 0x8A69CF11AA97BC34ULL }, /* XSUM_XXH3_testdata[2963] */ + { 1482, 0x0000000000000000ULL, 0xA9FA0742AC0FD4F7ULL }, /* XSUM_XXH3_testdata[2964] */ + { 1482, 0x9E3779B185EBCA8DULL, 0x766AF0B6A5BD3DCBULL }, /* XSUM_XXH3_testdata[2965] */ + { 1483, 0x0000000000000000ULL, 0x4092AA711BFA938AULL }, /* XSUM_XXH3_testdata[2966] */ + { 1483, 0x9E3779B185EBCA8DULL, 0x47763A99757174A8ULL }, /* XSUM_XXH3_testdata[2967] */ + { 1484, 0x0000000000000000ULL, 0xD5005D2548949930ULL }, /* XSUM_XXH3_testdata[2968] */ + { 1484, 0x9E3779B185EBCA8DULL, 0x6630EFBD744FB866ULL }, /* XSUM_XXH3_testdata[2969] */ + { 1485, 0x0000000000000000ULL, 0x4E7A0172C536C828ULL }, /* XSUM_XXH3_testdata[2970] */ + { 1485, 0x9E3779B185EBCA8DULL, 0x933E1A4ADDE0BF1FULL }, /* XSUM_XXH3_testdata[2971] */ + { 1486, 0x0000000000000000ULL, 0x4AECD3EB1D90FFF5ULL }, /* XSUM_XXH3_testdata[2972] */ + { 1486, 0x9E3779B185EBCA8DULL, 0xDE9AA36BEA3A70AEULL }, /* XSUM_XXH3_testdata[2973] */ + { 1487, 0x0000000000000000ULL, 0x7B05488EC3CDF4D5ULL }, /* XSUM_XXH3_testdata[2974] */ + { 1487, 0x9E3779B185EBCA8DULL, 0x27A7A69A624AD291ULL }, /* XSUM_XXH3_testdata[2975] */ + { 1488, 0x0000000000000000ULL, 0xD3380C038A278925ULL }, /* XSUM_XXH3_testdata[2976] */ + { 1488, 0x9E3779B185EBCA8DULL, 0x55E8264E8D659620ULL }, /* XSUM_XXH3_testdata[2977] */ + { 1489, 0x0000000000000000ULL, 0xE19CEE4A952E1CA0ULL }, /* XSUM_XXH3_testdata[2978] */ + { 1489, 0x9E3779B185EBCA8DULL, 0x3582584D628E05EEULL }, /* XSUM_XXH3_testdata[2979] */ + { 1490, 0x0000000000000000ULL, 0x4D35BFCF407857E1ULL }, /* XSUM_XXH3_testdata[2980] */ + { 1490, 0x9E3779B185EBCA8DULL, 0x4189A85073F06185ULL }, /* XSUM_XXH3_testdata[2981] */ + { 1491, 0x0000000000000000ULL, 0xD130B31D73F3FD81ULL }, /* XSUM_XXH3_testdata[2982] */ + { 1491, 0x9E3779B185EBCA8DULL, 0xE605EE721E5FDE0BULL }, /* XSUM_XXH3_testdata[2983] */ + { 1492, 0x0000000000000000ULL, 0x01CEBBB047583AEAULL }, /* XSUM_XXH3_testdata[2984] */ + { 1492, 0x9E3779B185EBCA8DULL, 0x94F6C7631CA71A2CULL }, /* XSUM_XXH3_testdata[2985] */ + { 1493, 0x0000000000000000ULL, 0xDA85838A26F331A5ULL }, /* XSUM_XXH3_testdata[2986] */ + { 1493, 0x9E3779B185EBCA8DULL, 0xE01B5B4A1037713CULL }, /* XSUM_XXH3_testdata[2987] */ + { 1494, 0x0000000000000000ULL, 0xA39241F8DFA65384ULL }, /* XSUM_XXH3_testdata[2988] */ + { 1494, 0x9E3779B185EBCA8DULL, 0xE248BEBC53F14552ULL }, /* XSUM_XXH3_testdata[2989] */ + { 1495, 0x0000000000000000ULL, 0xF543D7718BAAFD5DULL }, /* XSUM_XXH3_testdata[2990] */ + { 1495, 0x9E3779B185EBCA8DULL, 0xE47639D49B6835C1ULL }, /* XSUM_XXH3_testdata[2991] */ + { 1496, 0x0000000000000000ULL, 0xA229AE8D10488082ULL }, /* XSUM_XXH3_testdata[2992] */ + { 1496, 0x9E3779B185EBCA8DULL, 0xAE8E2E41674BFF94ULL }, /* XSUM_XXH3_testdata[2993] */ + { 1497, 0x0000000000000000ULL, 0xFE77233C02698E38ULL }, /* XSUM_XXH3_testdata[2994] */ + { 1497, 0x9E3779B185EBCA8DULL, 0x16C1DF3C6949E62CULL }, /* XSUM_XXH3_testdata[2995] */ + { 1498, 0x0000000000000000ULL, 0x117FA8A945161AB7ULL }, /* XSUM_XXH3_testdata[2996] */ + { 1498, 0x9E3779B185EBCA8DULL, 0x535EC6C1E6113586ULL }, /* XSUM_XXH3_testdata[2997] */ + { 1499, 0x0000000000000000ULL, 0xB293E66F31FF809DULL }, /* XSUM_XXH3_testdata[2998] */ + { 1499, 0x9E3779B185EBCA8DULL, 0x2CDF051F4679B89DULL }, /* XSUM_XXH3_testdata[2999] */ + { 1500, 0x0000000000000000ULL, 0xE81D866A4E684A3BULL }, /* XSUM_XXH3_testdata[3000] */ + { 1500, 0x9E3779B185EBCA8DULL, 0x5765B72338ACC0CAULL }, /* XSUM_XXH3_testdata[3001] */ + { 1501, 0x0000000000000000ULL, 0xAB92157E238DD5DCULL }, /* XSUM_XXH3_testdata[3002] */ + { 1501, 0x9E3779B185EBCA8DULL, 0xA6E5A4190CB2C3B4ULL }, /* XSUM_XXH3_testdata[3003] */ + { 1502, 0x0000000000000000ULL, 0xB005DD78C3CF30BCULL }, /* XSUM_XXH3_testdata[3004] */ + { 1502, 0x9E3779B185EBCA8DULL, 0x70D60DE25EED0BDEULL }, /* XSUM_XXH3_testdata[3005] */ + { 1503, 0x0000000000000000ULL, 0x0C683B1518B8FE2FULL }, /* XSUM_XXH3_testdata[3006] */ + { 1503, 0x9E3779B185EBCA8DULL, 0xA7A4BDC4FE0A70CDULL }, /* XSUM_XXH3_testdata[3007] */ + { 1504, 0x0000000000000000ULL, 0x56BD12C5E82AE2E3ULL }, /* XSUM_XXH3_testdata[3008] */ + { 1504, 0x9E3779B185EBCA8DULL, 0x54B56D8804E18459ULL }, /* XSUM_XXH3_testdata[3009] */ + { 1505, 0x0000000000000000ULL, 0x0E339E1EA59A7ECDULL }, /* XSUM_XXH3_testdata[3010] */ + { 1505, 0x9E3779B185EBCA8DULL, 0x100F6BD1A03D7D36ULL }, /* XSUM_XXH3_testdata[3011] */ + { 1506, 0x0000000000000000ULL, 0xF7CE8A9373EC98ACULL }, /* XSUM_XXH3_testdata[3012] */ + { 1506, 0x9E3779B185EBCA8DULL, 0x545EEB55F12926ECULL }, /* XSUM_XXH3_testdata[3013] */ + { 1507, 0x0000000000000000ULL, 0x53758D1F2109D846ULL }, /* XSUM_XXH3_testdata[3014] */ + { 1507, 0x9E3779B185EBCA8DULL, 0x2FC5EDF558CE04D7ULL }, /* XSUM_XXH3_testdata[3015] */ + { 1508, 0x0000000000000000ULL, 0x5E532C193D4B62BFULL }, /* XSUM_XXH3_testdata[3016] */ + { 1508, 0x9E3779B185EBCA8DULL, 0x23C6ED7D10BCF6DEULL }, /* XSUM_XXH3_testdata[3017] */ + { 1509, 0x0000000000000000ULL, 0xC45828EF5AE2513AULL }, /* XSUM_XXH3_testdata[3018] */ + { 1509, 0x9E3779B185EBCA8DULL, 0x5687B04DC1DE930DULL }, /* XSUM_XXH3_testdata[3019] */ + { 1510, 0x0000000000000000ULL, 0x977A95A6D18ADBECULL }, /* XSUM_XXH3_testdata[3020] */ + { 1510, 0x9E3779B185EBCA8DULL, 0xB8C8FFD3F4F31603ULL }, /* XSUM_XXH3_testdata[3021] */ + { 1511, 0x0000000000000000ULL, 0x47920EE11E511CB2ULL }, /* XSUM_XXH3_testdata[3022] */ + { 1511, 0x9E3779B185EBCA8DULL, 0xBD9A0732D413FFB6ULL }, /* XSUM_XXH3_testdata[3023] */ + { 1512, 0x0000000000000000ULL, 0x8C0DD31A0220F411ULL }, /* XSUM_XXH3_testdata[3024] */ + { 1512, 0x9E3779B185EBCA8DULL, 0x16DD87D0B3C13707ULL }, /* XSUM_XXH3_testdata[3025] */ + { 1513, 0x0000000000000000ULL, 0x3D12AA0B29777D6FULL }, /* XSUM_XXH3_testdata[3026] */ + { 1513, 0x9E3779B185EBCA8DULL, 0x5BF9C8569971E6F5ULL }, /* XSUM_XXH3_testdata[3027] */ + { 1514, 0x0000000000000000ULL, 0x112F5BA7BF0636C4ULL }, /* XSUM_XXH3_testdata[3028] */ + { 1514, 0x9E3779B185EBCA8DULL, 0xB4A0B58609A78117ULL }, /* XSUM_XXH3_testdata[3029] */ + { 1515, 0x0000000000000000ULL, 0x6D44D3CF18C1335DULL }, /* XSUM_XXH3_testdata[3030] */ + { 1515, 0x9E3779B185EBCA8DULL, 0xA732C10D56D0F0F5ULL }, /* XSUM_XXH3_testdata[3031] */ + { 1516, 0x0000000000000000ULL, 0x4ED102F971A4663BULL }, /* XSUM_XXH3_testdata[3032] */ + { 1516, 0x9E3779B185EBCA8DULL, 0x7EF8D696D908064BULL }, /* XSUM_XXH3_testdata[3033] */ + { 1517, 0x0000000000000000ULL, 0x5E2B19AA9F43ECA7ULL }, /* XSUM_XXH3_testdata[3034] */ + { 1517, 0x9E3779B185EBCA8DULL, 0xB01D9E184848CD4AULL }, /* XSUM_XXH3_testdata[3035] */ + { 1518, 0x0000000000000000ULL, 0x145ED9B2C279EF7DULL }, /* XSUM_XXH3_testdata[3036] */ + { 1518, 0x9E3779B185EBCA8DULL, 0xCAC9CD8B6DF6E473ULL }, /* XSUM_XXH3_testdata[3037] */ + { 1519, 0x0000000000000000ULL, 0xC266AD258BC02F59ULL }, /* XSUM_XXH3_testdata[3038] */ + { 1519, 0x9E3779B185EBCA8DULL, 0x06EA6CFCFFD67490ULL }, /* XSUM_XXH3_testdata[3039] */ + { 1520, 0x0000000000000000ULL, 0xA601E0E6624AA703ULL }, /* XSUM_XXH3_testdata[3040] */ + { 1520, 0x9E3779B185EBCA8DULL, 0xCA5CDC82A62D97E2ULL }, /* XSUM_XXH3_testdata[3041] */ + { 1521, 0x0000000000000000ULL, 0x589BE8D5050257C2ULL }, /* XSUM_XXH3_testdata[3042] */ + { 1521, 0x9E3779B185EBCA8DULL, 0xC1CBF0A646D8BB14ULL }, /* XSUM_XXH3_testdata[3043] */ + { 1522, 0x0000000000000000ULL, 0xC70EEDF28BBD665AULL }, /* XSUM_XXH3_testdata[3044] */ + { 1522, 0x9E3779B185EBCA8DULL, 0xA200829E1237F71CULL }, /* XSUM_XXH3_testdata[3045] */ + { 1523, 0x0000000000000000ULL, 0xB2C5EFEA1A95B309ULL }, /* XSUM_XXH3_testdata[3046] */ + { 1523, 0x9E3779B185EBCA8DULL, 0x4210AAC799206AABULL }, /* XSUM_XXH3_testdata[3047] */ + { 1524, 0x0000000000000000ULL, 0x7999AA564264C984ULL }, /* XSUM_XXH3_testdata[3048] */ + { 1524, 0x9E3779B185EBCA8DULL, 0xD29CF91C87606278ULL }, /* XSUM_XXH3_testdata[3049] */ + { 1525, 0x0000000000000000ULL, 0x592527E8D34BAA1FULL }, /* XSUM_XXH3_testdata[3050] */ + { 1525, 0x9E3779B185EBCA8DULL, 0xA7D655F3D758D2DDULL }, /* XSUM_XXH3_testdata[3051] */ + { 1526, 0x0000000000000000ULL, 0xB0E0DA5EA984D823ULL }, /* XSUM_XXH3_testdata[3052] */ + { 1526, 0x9E3779B185EBCA8DULL, 0x46D0E44753D033BBULL }, /* XSUM_XXH3_testdata[3053] */ + { 1527, 0x0000000000000000ULL, 0xAF9421BDAB7DE566ULL }, /* XSUM_XXH3_testdata[3054] */ + { 1527, 0x9E3779B185EBCA8DULL, 0xCB318F6E507A110FULL }, /* XSUM_XXH3_testdata[3055] */ + { 1528, 0x0000000000000000ULL, 0xDDE69757FC45453FULL }, /* XSUM_XXH3_testdata[3056] */ + { 1528, 0x9E3779B185EBCA8DULL, 0x6E89C3764D284D03ULL }, /* XSUM_XXH3_testdata[3057] */ + { 1529, 0x0000000000000000ULL, 0x790B2802BF5B6CA5ULL }, /* XSUM_XXH3_testdata[3058] */ + { 1529, 0x9E3779B185EBCA8DULL, 0x330356E0FD650D8DULL }, /* XSUM_XXH3_testdata[3059] */ + { 1530, 0x0000000000000000ULL, 0x1CBA0D20E1D49A9EULL }, /* XSUM_XXH3_testdata[3060] */ + { 1530, 0x9E3779B185EBCA8DULL, 0xA73387A0D00C9B49ULL }, /* XSUM_XXH3_testdata[3061] */ + { 1531, 0x0000000000000000ULL, 0xCBA1D8BBCE62F3CCULL }, /* XSUM_XXH3_testdata[3062] */ + { 1531, 0x9E3779B185EBCA8DULL, 0x1955AA7C05619D60ULL }, /* XSUM_XXH3_testdata[3063] */ + { 1532, 0x0000000000000000ULL, 0xC05CDA3641633E71ULL }, /* XSUM_XXH3_testdata[3064] */ + { 1532, 0x9E3779B185EBCA8DULL, 0x0DBA8ACDD35665AAULL }, /* XSUM_XXH3_testdata[3065] */ + { 1533, 0x0000000000000000ULL, 0x12E82077408AA01FULL }, /* XSUM_XXH3_testdata[3066] */ + { 1533, 0x9E3779B185EBCA8DULL, 0xE55F59BDE2B73BA6ULL }, /* XSUM_XXH3_testdata[3067] */ + { 1534, 0x0000000000000000ULL, 0x666B68328DA7CF55ULL }, /* XSUM_XXH3_testdata[3068] */ + { 1534, 0x9E3779B185EBCA8DULL, 0xB798085F0C7EA859ULL }, /* XSUM_XXH3_testdata[3069] */ + { 1535, 0x0000000000000000ULL, 0x1B107DA31572D1E4ULL }, /* XSUM_XXH3_testdata[3070] */ + { 1535, 0x9E3779B185EBCA8DULL, 0xC27684F8BDFFCD9BULL }, /* XSUM_XXH3_testdata[3071] */ + { 1536, 0x0000000000000000ULL, 0x8DAA8C2ECCABB68BULL }, /* XSUM_XXH3_testdata[3072] */ + { 1536, 0x9E3779B185EBCA8DULL, 0x672E8F732C4E55D7ULL }, /* XSUM_XXH3_testdata[3073] */ + { 1537, 0x0000000000000000ULL, 0x57C8DBD143F74C9DULL }, /* XSUM_XXH3_testdata[3074] */ + { 1537, 0x9E3779B185EBCA8DULL, 0x93A05689A5758F46ULL }, /* XSUM_XXH3_testdata[3075] */ + { 1538, 0x0000000000000000ULL, 0x48D172D3BC18AB8FULL }, /* XSUM_XXH3_testdata[3076] */ + { 1538, 0x9E3779B185EBCA8DULL, 0x9E4A2D20455D1889ULL }, /* XSUM_XXH3_testdata[3077] */ + { 1539, 0x0000000000000000ULL, 0xD901F594BDE7ADCEULL }, /* XSUM_XXH3_testdata[3078] */ + { 1539, 0x9E3779B185EBCA8DULL, 0x228B8162736F98E3ULL }, /* XSUM_XXH3_testdata[3079] */ + { 1540, 0x0000000000000000ULL, 0x8EE07EB9737A9276ULL }, /* XSUM_XXH3_testdata[3080] */ + { 1540, 0x9E3779B185EBCA8DULL, 0xC2CF4E587BB9AA6BULL }, /* XSUM_XXH3_testdata[3081] */ + { 1541, 0x0000000000000000ULL, 0xBB1F926D73745C78ULL }, /* XSUM_XXH3_testdata[3082] */ + { 1541, 0x9E3779B185EBCA8DULL, 0x24CF9F8CF02B76DBULL }, /* XSUM_XXH3_testdata[3083] */ + { 1542, 0x0000000000000000ULL, 0x781EB0D61C859FDBULL }, /* XSUM_XXH3_testdata[3084] */ + { 1542, 0x9E3779B185EBCA8DULL, 0xB586961CEFB728F2ULL }, /* XSUM_XXH3_testdata[3085] */ + { 1543, 0x0000000000000000ULL, 0xFCF91E6E9B54D87AULL }, /* XSUM_XXH3_testdata[3086] */ + { 1543, 0x9E3779B185EBCA8DULL, 0x972A5BBB45E4C1C2ULL }, /* XSUM_XXH3_testdata[3087] */ + { 1544, 0x0000000000000000ULL, 0xC731201E159A152EULL }, /* XSUM_XXH3_testdata[3088] */ + { 1544, 0x9E3779B185EBCA8DULL, 0x7750BDF397E400B1ULL }, /* XSUM_XXH3_testdata[3089] */ + { 1545, 0x0000000000000000ULL, 0xE1FDBC5884EABEB6ULL }, /* XSUM_XXH3_testdata[3090] */ + { 1545, 0x9E3779B185EBCA8DULL, 0xAA93DFFD978594ABULL }, /* XSUM_XXH3_testdata[3091] */ + { 1546, 0x0000000000000000ULL, 0x713A314F08EF6D14ULL }, /* XSUM_XXH3_testdata[3092] */ + { 1546, 0x9E3779B185EBCA8DULL, 0x7680659B3474F11DULL }, /* XSUM_XXH3_testdata[3093] */ + { 1547, 0x0000000000000000ULL, 0x14493E1DAADA1DCAULL }, /* XSUM_XXH3_testdata[3094] */ + { 1547, 0x9E3779B185EBCA8DULL, 0xA4782ECAE48EB7A4ULL }, /* XSUM_XXH3_testdata[3095] */ + { 1548, 0x0000000000000000ULL, 0x73FEB39FA6622479ULL }, /* XSUM_XXH3_testdata[3096] */ + { 1548, 0x9E3779B185EBCA8DULL, 0x7FC2A81151FF1554ULL }, /* XSUM_XXH3_testdata[3097] */ + { 1549, 0x0000000000000000ULL, 0x8B7BAC177B06229FULL }, /* XSUM_XXH3_testdata[3098] */ + { 1549, 0x9E3779B185EBCA8DULL, 0x0945E5E7E5EB282AULL }, /* XSUM_XXH3_testdata[3099] */ + { 1550, 0x0000000000000000ULL, 0xB0929D573881C869ULL }, /* XSUM_XXH3_testdata[3100] */ + { 1550, 0x9E3779B185EBCA8DULL, 0xB7725D34E26E7E2EULL }, /* XSUM_XXH3_testdata[3101] */ + { 1551, 0x0000000000000000ULL, 0x8C8C1AFE32561877ULL }, /* XSUM_XXH3_testdata[3102] */ + { 1551, 0x9E3779B185EBCA8DULL, 0xF8C8F4C40D6F1C42ULL }, /* XSUM_XXH3_testdata[3103] */ + { 1552, 0x0000000000000000ULL, 0xB7A14AE288A42F2FULL }, /* XSUM_XXH3_testdata[3104] */ + { 1552, 0x9E3779B185EBCA8DULL, 0x9B588CD6323138E6ULL }, /* XSUM_XXH3_testdata[3105] */ + { 1553, 0x0000000000000000ULL, 0xA96E61B2E7B2B195ULL }, /* XSUM_XXH3_testdata[3106] */ + { 1553, 0x9E3779B185EBCA8DULL, 0x882F797F9E56DDD8ULL }, /* XSUM_XXH3_testdata[3107] */ + { 1554, 0x0000000000000000ULL, 0xBBFEE59943556FAFULL }, /* XSUM_XXH3_testdata[3108] */ + { 1554, 0x9E3779B185EBCA8DULL, 0xB46DC0C868791E04ULL }, /* XSUM_XXH3_testdata[3109] */ + { 1555, 0x0000000000000000ULL, 0xAFFDA6A79337FA79ULL }, /* XSUM_XXH3_testdata[3110] */ + { 1555, 0x9E3779B185EBCA8DULL, 0xD21D1599C67C84D9ULL }, /* XSUM_XXH3_testdata[3111] */ + { 1556, 0x0000000000000000ULL, 0x2D3DF3731171ABA9ULL }, /* XSUM_XXH3_testdata[3112] */ + { 1556, 0x9E3779B185EBCA8DULL, 0x21D04224388027B0ULL }, /* XSUM_XXH3_testdata[3113] */ + { 1557, 0x0000000000000000ULL, 0xF7D0F61D0B2D6148ULL }, /* XSUM_XXH3_testdata[3114] */ + { 1557, 0x9E3779B185EBCA8DULL, 0x77883AA22EFE233EULL }, /* XSUM_XXH3_testdata[3115] */ + { 1558, 0x0000000000000000ULL, 0x64B4F355C78AA20AULL }, /* XSUM_XXH3_testdata[3116] */ + { 1558, 0x9E3779B185EBCA8DULL, 0x992C1816C34EF8DEULL }, /* XSUM_XXH3_testdata[3117] */ + { 1559, 0x0000000000000000ULL, 0x44552248B6A83EBAULL }, /* XSUM_XXH3_testdata[3118] */ + { 1559, 0x9E3779B185EBCA8DULL, 0x5E53CB3CFBA3F8F9ULL }, /* XSUM_XXH3_testdata[3119] */ + { 1560, 0x0000000000000000ULL, 0x1483FBF2F918B422ULL }, /* XSUM_XXH3_testdata[3120] */ + { 1560, 0x9E3779B185EBCA8DULL, 0x70A300CB25C29A0BULL }, /* XSUM_XXH3_testdata[3121] */ + { 1561, 0x0000000000000000ULL, 0xCB99139C837D2084ULL }, /* XSUM_XXH3_testdata[3122] */ + { 1561, 0x9E3779B185EBCA8DULL, 0x1EDAC8DFFBBE5BC0ULL }, /* XSUM_XXH3_testdata[3123] */ + { 1562, 0x0000000000000000ULL, 0xA82C249FB4C794DDULL }, /* XSUM_XXH3_testdata[3124] */ + { 1562, 0x9E3779B185EBCA8DULL, 0x6400F980D9D85712ULL }, /* XSUM_XXH3_testdata[3125] */ + { 1563, 0x0000000000000000ULL, 0xD67895EEA2D79EEAULL }, /* XSUM_XXH3_testdata[3126] */ + { 1563, 0x9E3779B185EBCA8DULL, 0x7BE7BA43179D95BBULL }, /* XSUM_XXH3_testdata[3127] */ + { 1564, 0x0000000000000000ULL, 0x7609AE3DDA24A26DULL }, /* XSUM_XXH3_testdata[3128] */ + { 1564, 0x9E3779B185EBCA8DULL, 0xDDABC1FE67E41194ULL }, /* XSUM_XXH3_testdata[3129] */ + { 1565, 0x0000000000000000ULL, 0x67E28DAFA4DE6B19ULL }, /* XSUM_XXH3_testdata[3130] */ + { 1565, 0x9E3779B185EBCA8DULL, 0xB7E466CAE746467EULL }, /* XSUM_XXH3_testdata[3131] */ + { 1566, 0x0000000000000000ULL, 0x2F1A9DB823B5224AULL }, /* XSUM_XXH3_testdata[3132] */ + { 1566, 0x9E3779B185EBCA8DULL, 0x84E1EB43F2FBC3F9ULL }, /* XSUM_XXH3_testdata[3133] */ + { 1567, 0x0000000000000000ULL, 0x7D796B8C64CA888AULL }, /* XSUM_XXH3_testdata[3134] */ + { 1567, 0x9E3779B185EBCA8DULL, 0x2F19C51E51D4AB81ULL }, /* XSUM_XXH3_testdata[3135] */ + { 1568, 0x0000000000000000ULL, 0x69DA97B583DEC845ULL }, /* XSUM_XXH3_testdata[3136] */ + { 1568, 0x9E3779B185EBCA8DULL, 0x9E11AC222EE21E1AULL }, /* XSUM_XXH3_testdata[3137] */ + { 1569, 0x0000000000000000ULL, 0x815C5D1E89ED7407ULL }, /* XSUM_XXH3_testdata[3138] */ + { 1569, 0x9E3779B185EBCA8DULL, 0x52C01F40EDCB723EULL }, /* XSUM_XXH3_testdata[3139] */ + { 1570, 0x0000000000000000ULL, 0xDD1C36027DCD186FULL }, /* XSUM_XXH3_testdata[3140] */ + { 1570, 0x9E3779B185EBCA8DULL, 0xB0B201368B2BEC76ULL }, /* XSUM_XXH3_testdata[3141] */ + { 1571, 0x0000000000000000ULL, 0x58883470165C7DA3ULL }, /* XSUM_XXH3_testdata[3142] */ + { 1571, 0x9E3779B185EBCA8DULL, 0x1619BE2824FDD4F9ULL }, /* XSUM_XXH3_testdata[3143] */ + { 1572, 0x0000000000000000ULL, 0xC940C303F9CBEABCULL }, /* XSUM_XXH3_testdata[3144] */ + { 1572, 0x9E3779B185EBCA8DULL, 0xFE77A4E168E65690ULL }, /* XSUM_XXH3_testdata[3145] */ + { 1573, 0x0000000000000000ULL, 0xA9E2DC206A9288B9ULL }, /* XSUM_XXH3_testdata[3146] */ + { 1573, 0x9E3779B185EBCA8DULL, 0xEA89C3A24A345C43ULL }, /* XSUM_XXH3_testdata[3147] */ + { 1574, 0x0000000000000000ULL, 0xF9178CB0888E6943ULL }, /* XSUM_XXH3_testdata[3148] */ + { 1574, 0x9E3779B185EBCA8DULL, 0x9E31837E985F353EULL }, /* XSUM_XXH3_testdata[3149] */ + { 1575, 0x0000000000000000ULL, 0x83C0F764EFF0AD9BULL }, /* XSUM_XXH3_testdata[3150] */ + { 1575, 0x9E3779B185EBCA8DULL, 0xF3CD0D6F71B8B8ACULL }, /* XSUM_XXH3_testdata[3151] */ + { 1576, 0x0000000000000000ULL, 0xD05C1CB5990DD48EULL }, /* XSUM_XXH3_testdata[3152] */ + { 1576, 0x9E3779B185EBCA8DULL, 0xFFC0ED23DC372AEDULL }, /* XSUM_XXH3_testdata[3153] */ + { 1577, 0x0000000000000000ULL, 0xD05B8448D4A4C37FULL }, /* XSUM_XXH3_testdata[3154] */ + { 1577, 0x9E3779B185EBCA8DULL, 0x6AB0B55BAEC26ED0ULL }, /* XSUM_XXH3_testdata[3155] */ + { 1578, 0x0000000000000000ULL, 0xF2E07A2139BBB81FULL }, /* XSUM_XXH3_testdata[3156] */ + { 1578, 0x9E3779B185EBCA8DULL, 0x4E69AE6DC4D111B1ULL }, /* XSUM_XXH3_testdata[3157] */ + { 1579, 0x0000000000000000ULL, 0x34C565FFFC42CE11ULL }, /* XSUM_XXH3_testdata[3158] */ + { 1579, 0x9E3779B185EBCA8DULL, 0x698082A359102999ULL }, /* XSUM_XXH3_testdata[3159] */ + { 1580, 0x0000000000000000ULL, 0x3963318475805AF5ULL }, /* XSUM_XXH3_testdata[3160] */ + { 1580, 0x9E3779B185EBCA8DULL, 0xC1EED8DDAAE46BC7ULL }, /* XSUM_XXH3_testdata[3161] */ + { 1581, 0x0000000000000000ULL, 0x84D1EC769B21AF34ULL }, /* XSUM_XXH3_testdata[3162] */ + { 1581, 0x9E3779B185EBCA8DULL, 0x2998D1C9AE709AF6ULL }, /* XSUM_XXH3_testdata[3163] */ + { 1582, 0x0000000000000000ULL, 0x8AC3925462820D1AULL }, /* XSUM_XXH3_testdata[3164] */ + { 1582, 0x9E3779B185EBCA8DULL, 0x6C4206FE79F48927ULL }, /* XSUM_XXH3_testdata[3165] */ + { 1583, 0x0000000000000000ULL, 0x320B91A78829FD61ULL }, /* XSUM_XXH3_testdata[3166] */ + { 1583, 0x9E3779B185EBCA8DULL, 0x99D8E29048DFF054ULL }, /* XSUM_XXH3_testdata[3167] */ + { 1584, 0x0000000000000000ULL, 0x112D360DABC99809ULL }, /* XSUM_XXH3_testdata[3168] */ + { 1584, 0x9E3779B185EBCA8DULL, 0x69BFB77290E9E380ULL }, /* XSUM_XXH3_testdata[3169] */ + { 1585, 0x0000000000000000ULL, 0x16B8F188490984EFULL }, /* XSUM_XXH3_testdata[3170] */ + { 1585, 0x9E3779B185EBCA8DULL, 0x974160CE63804BF2ULL }, /* XSUM_XXH3_testdata[3171] */ + { 1586, 0x0000000000000000ULL, 0x0D4E515CA984876DULL }, /* XSUM_XXH3_testdata[3172] */ + { 1586, 0x9E3779B185EBCA8DULL, 0x1D24D2E86F9CEB03ULL }, /* XSUM_XXH3_testdata[3173] */ + { 1587, 0x0000000000000000ULL, 0xEA40D4F216011220ULL }, /* XSUM_XXH3_testdata[3174] */ + { 1587, 0x9E3779B185EBCA8DULL, 0x4C9D21C5C10274C0ULL }, /* XSUM_XXH3_testdata[3175] */ + { 1588, 0x0000000000000000ULL, 0x10E0750B26E84A86ULL }, /* XSUM_XXH3_testdata[3176] */ + { 1588, 0x9E3779B185EBCA8DULL, 0xB75D8AEB8E40B44FULL }, /* XSUM_XXH3_testdata[3177] */ + { 1589, 0x0000000000000000ULL, 0xDCC57A0AB1580C5BULL }, /* XSUM_XXH3_testdata[3178] */ + { 1589, 0x9E3779B185EBCA8DULL, 0xB0C608AD7843BF68ULL }, /* XSUM_XXH3_testdata[3179] */ + { 1590, 0x0000000000000000ULL, 0xE15F4B8D47E84506ULL }, /* XSUM_XXH3_testdata[3180] */ + { 1590, 0x9E3779B185EBCA8DULL, 0xAE5AA10BB05F0E6DULL }, /* XSUM_XXH3_testdata[3181] */ + { 1591, 0x0000000000000000ULL, 0xD863C7852DDB5F10ULL }, /* XSUM_XXH3_testdata[3182] */ + { 1591, 0x9E3779B185EBCA8DULL, 0xFE9C2267D9503D0FULL }, /* XSUM_XXH3_testdata[3183] */ + { 1592, 0x0000000000000000ULL, 0x2022B8A266768AC2ULL }, /* XSUM_XXH3_testdata[3184] */ + { 1592, 0x9E3779B185EBCA8DULL, 0xC662236FD63B5820ULL }, /* XSUM_XXH3_testdata[3185] */ + { 1593, 0x0000000000000000ULL, 0xBA04DF2747C3E87BULL }, /* XSUM_XXH3_testdata[3186] */ + { 1593, 0x9E3779B185EBCA8DULL, 0x74E98904F9C426C7ULL }, /* XSUM_XXH3_testdata[3187] */ + { 1594, 0x0000000000000000ULL, 0x68779DC926FC7E52ULL }, /* XSUM_XXH3_testdata[3188] */ + { 1594, 0x9E3779B185EBCA8DULL, 0x80DD4F7449DC2620ULL }, /* XSUM_XXH3_testdata[3189] */ + { 1595, 0x0000000000000000ULL, 0x2A599C5CCD84D18BULL }, /* XSUM_XXH3_testdata[3190] */ + { 1595, 0x9E3779B185EBCA8DULL, 0x8191AD0EBF33CE41ULL }, /* XSUM_XXH3_testdata[3191] */ + { 1596, 0x0000000000000000ULL, 0xA995602BA643AB19ULL }, /* XSUM_XXH3_testdata[3192] */ + { 1596, 0x9E3779B185EBCA8DULL, 0xF373DF9D9F20E755ULL }, /* XSUM_XXH3_testdata[3193] */ + { 1597, 0x0000000000000000ULL, 0x6E38B17B9962B35BULL }, /* XSUM_XXH3_testdata[3194] */ + { 1597, 0x9E3779B185EBCA8DULL, 0x145F6E75FAAEC511ULL }, /* XSUM_XXH3_testdata[3195] */ + { 1598, 0x0000000000000000ULL, 0x2E423B8EBC700658ULL }, /* XSUM_XXH3_testdata[3196] */ + { 1598, 0x9E3779B185EBCA8DULL, 0x78A51671DC129C26ULL }, /* XSUM_XXH3_testdata[3197] */ + { 1599, 0x0000000000000000ULL, 0x4250EA93B2DB41F0ULL }, /* XSUM_XXH3_testdata[3198] */ + { 1599, 0x9E3779B185EBCA8DULL, 0xF1EEE97E41EAAB59ULL }, /* XSUM_XXH3_testdata[3199] */ + { 1600, 0x0000000000000000ULL, 0x71FF997900401775ULL }, /* XSUM_XXH3_testdata[3200] */ + { 1600, 0x9E3779B185EBCA8DULL, 0x5984E7BDFEEF8AF9ULL }, /* XSUM_XXH3_testdata[3201] */ + { 1601, 0x0000000000000000ULL, 0x22E47641F3402193ULL }, /* XSUM_XXH3_testdata[3202] */ + { 1601, 0x9E3779B185EBCA8DULL, 0xB624402888163BA7ULL }, /* XSUM_XXH3_testdata[3203] */ + { 1602, 0x0000000000000000ULL, 0xA50DDE1B67EA934FULL }, /* XSUM_XXH3_testdata[3204] */ + { 1602, 0x9E3779B185EBCA8DULL, 0xF5C10997A1A43E57ULL }, /* XSUM_XXH3_testdata[3205] */ + { 1603, 0x0000000000000000ULL, 0x94938C01F4D09D24ULL }, /* XSUM_XXH3_testdata[3206] */ + { 1603, 0x9E3779B185EBCA8DULL, 0x2711DB4DDF2692E2ULL }, /* XSUM_XXH3_testdata[3207] */ + { 1604, 0x0000000000000000ULL, 0xB1F4EDFF84361AD4ULL }, /* XSUM_XXH3_testdata[3208] */ + { 1604, 0x9E3779B185EBCA8DULL, 0xF52B9AC7BA89D7EDULL }, /* XSUM_XXH3_testdata[3209] */ + { 1605, 0x0000000000000000ULL, 0xA6E594E6C06C0199ULL }, /* XSUM_XXH3_testdata[3210] */ + { 1605, 0x9E3779B185EBCA8DULL, 0x12E6ED29DB7AC71CULL }, /* XSUM_XXH3_testdata[3211] */ + { 1606, 0x0000000000000000ULL, 0x87697AA039DF4CB7ULL }, /* XSUM_XXH3_testdata[3212] */ + { 1606, 0x9E3779B185EBCA8DULL, 0x979313367467A225ULL }, /* XSUM_XXH3_testdata[3213] */ + { 1607, 0x0000000000000000ULL, 0x47AE8754657B2C1FULL }, /* XSUM_XXH3_testdata[3214] */ + { 1607, 0x9E3779B185EBCA8DULL, 0x48337844D7C78DBAULL }, /* XSUM_XXH3_testdata[3215] */ + { 1608, 0x0000000000000000ULL, 0x12271A02E802A432ULL }, /* XSUM_XXH3_testdata[3216] */ + { 1608, 0x9E3779B185EBCA8DULL, 0xE0FB066273556224ULL }, /* XSUM_XXH3_testdata[3217] */ + { 1609, 0x0000000000000000ULL, 0x1297AD9988374E37ULL }, /* XSUM_XXH3_testdata[3218] */ + { 1609, 0x9E3779B185EBCA8DULL, 0x139B0231FA6AFBBBULL }, /* XSUM_XXH3_testdata[3219] */ + { 1610, 0x0000000000000000ULL, 0x14B7882A424AE188ULL }, /* XSUM_XXH3_testdata[3220] */ + { 1610, 0x9E3779B185EBCA8DULL, 0xD1391165C4114251ULL }, /* XSUM_XXH3_testdata[3221] */ + { 1611, 0x0000000000000000ULL, 0x765420480C733AA5ULL }, /* XSUM_XXH3_testdata[3222] */ + { 1611, 0x9E3779B185EBCA8DULL, 0x0981C72C51AFC089ULL }, /* XSUM_XXH3_testdata[3223] */ + { 1612, 0x0000000000000000ULL, 0xA7A2E1C6B74DF5B2ULL }, /* XSUM_XXH3_testdata[3224] */ + { 1612, 0x9E3779B185EBCA8DULL, 0xAB31848E7F122EEBULL }, /* XSUM_XXH3_testdata[3225] */ + { 1613, 0x0000000000000000ULL, 0x67E105DE318E43BAULL }, /* XSUM_XXH3_testdata[3226] */ + { 1613, 0x9E3779B185EBCA8DULL, 0xCF882ACCB3F0F8F7ULL }, /* XSUM_XXH3_testdata[3227] */ + { 1614, 0x0000000000000000ULL, 0x99A0079B783E73B6ULL }, /* XSUM_XXH3_testdata[3228] */ + { 1614, 0x9E3779B185EBCA8DULL, 0x8FCFA40C58CDE8A6ULL }, /* XSUM_XXH3_testdata[3229] */ + { 1615, 0x0000000000000000ULL, 0x0858FEE83C484F6CULL }, /* XSUM_XXH3_testdata[3230] */ + { 1615, 0x9E3779B185EBCA8DULL, 0x0818C90CD2F2F4FDULL }, /* XSUM_XXH3_testdata[3231] */ + { 1616, 0x0000000000000000ULL, 0x3B8A4AB709227959ULL }, /* XSUM_XXH3_testdata[3232] */ + { 1616, 0x9E3779B185EBCA8DULL, 0x058048EAE6C53033ULL }, /* XSUM_XXH3_testdata[3233] */ + { 1617, 0x0000000000000000ULL, 0xAA6A5396B6B40848ULL }, /* XSUM_XXH3_testdata[3234] */ + { 1617, 0x9E3779B185EBCA8DULL, 0xE1CAEDB3665A1933ULL }, /* XSUM_XXH3_testdata[3235] */ + { 1618, 0x0000000000000000ULL, 0x30C6D76861300D5AULL }, /* XSUM_XXH3_testdata[3236] */ + { 1618, 0x9E3779B185EBCA8DULL, 0x5B6C1E42371F2CEDULL }, /* XSUM_XXH3_testdata[3237] */ + { 1619, 0x0000000000000000ULL, 0x41C32C29046DFB1BULL }, /* XSUM_XXH3_testdata[3238] */ + { 1619, 0x9E3779B185EBCA8DULL, 0x8B03BBBF38A73028ULL }, /* XSUM_XXH3_testdata[3239] */ + { 1620, 0x0000000000000000ULL, 0xAFF70C02F131727AULL }, /* XSUM_XXH3_testdata[3240] */ + { 1620, 0x9E3779B185EBCA8DULL, 0x37ECE73A63C9C6E7ULL }, /* XSUM_XXH3_testdata[3241] */ + { 1621, 0x0000000000000000ULL, 0x50DA203DB32C676CULL }, /* XSUM_XXH3_testdata[3242] */ + { 1621, 0x9E3779B185EBCA8DULL, 0x5311BE5731F735A4ULL }, /* XSUM_XXH3_testdata[3243] */ + { 1622, 0x0000000000000000ULL, 0x075E01320DD1A984ULL }, /* XSUM_XXH3_testdata[3244] */ + { 1622, 0x9E3779B185EBCA8DULL, 0x83F5BFCA88648CA4ULL }, /* XSUM_XXH3_testdata[3245] */ + { 1623, 0x0000000000000000ULL, 0xC17245BEB95F51CCULL }, /* XSUM_XXH3_testdata[3246] */ + { 1623, 0x9E3779B185EBCA8DULL, 0xFB3B4E6C9B25BB52ULL }, /* XSUM_XXH3_testdata[3247] */ + { 1624, 0x0000000000000000ULL, 0x7C4E6FD45D040135ULL }, /* XSUM_XXH3_testdata[3248] */ + { 1624, 0x9E3779B185EBCA8DULL, 0xF3E579FAE8BEAE00ULL }, /* XSUM_XXH3_testdata[3249] */ + { 1625, 0x0000000000000000ULL, 0xB19353267D0B0A9BULL }, /* XSUM_XXH3_testdata[3250] */ + { 1625, 0x9E3779B185EBCA8DULL, 0x307746B475A22529ULL }, /* XSUM_XXH3_testdata[3251] */ + { 1626, 0x0000000000000000ULL, 0x76749D9B41C79BBFULL }, /* XSUM_XXH3_testdata[3252] */ + { 1626, 0x9E3779B185EBCA8DULL, 0x4BF36CBFD5929113ULL }, /* XSUM_XXH3_testdata[3253] */ + { 1627, 0x0000000000000000ULL, 0xD6E04C9EF0D9EAE0ULL }, /* XSUM_XXH3_testdata[3254] */ + { 1627, 0x9E3779B185EBCA8DULL, 0x57C9CDC8EC7799F6ULL }, /* XSUM_XXH3_testdata[3255] */ + { 1628, 0x0000000000000000ULL, 0x65C8FF68B614224DULL }, /* XSUM_XXH3_testdata[3256] */ + { 1628, 0x9E3779B185EBCA8DULL, 0x14C70C1230F3E37DULL }, /* XSUM_XXH3_testdata[3257] */ + { 1629, 0x0000000000000000ULL, 0xD6A1C15797266322ULL }, /* XSUM_XXH3_testdata[3258] */ + { 1629, 0x9E3779B185EBCA8DULL, 0x48CA0737C2DAE640ULL }, /* XSUM_XXH3_testdata[3259] */ + { 1630, 0x0000000000000000ULL, 0x4E1F343CC83DC406ULL }, /* XSUM_XXH3_testdata[3260] */ + { 1630, 0x9E3779B185EBCA8DULL, 0x66E0DB150C7A7C1FULL }, /* XSUM_XXH3_testdata[3261] */ + { 1631, 0x0000000000000000ULL, 0xAF66891B587A8E00ULL }, /* XSUM_XXH3_testdata[3262] */ + { 1631, 0x9E3779B185EBCA8DULL, 0xB82DC2CE06D93DA0ULL }, /* XSUM_XXH3_testdata[3263] */ + { 1632, 0x0000000000000000ULL, 0xAF73A17D73A67E4FULL }, /* XSUM_XXH3_testdata[3264] */ + { 1632, 0x9E3779B185EBCA8DULL, 0x114DE89BE9154238ULL }, /* XSUM_XXH3_testdata[3265] */ + { 1633, 0x0000000000000000ULL, 0xCBAAF0DF2B180938ULL }, /* XSUM_XXH3_testdata[3266] */ + { 1633, 0x9E3779B185EBCA8DULL, 0x0B72E53782CAA73AULL }, /* XSUM_XXH3_testdata[3267] */ + { 1634, 0x0000000000000000ULL, 0x9527CB7715757627ULL }, /* XSUM_XXH3_testdata[3268] */ + { 1634, 0x9E3779B185EBCA8DULL, 0xA732AF53D04AB047ULL }, /* XSUM_XXH3_testdata[3269] */ + { 1635, 0x0000000000000000ULL, 0xF3506A787F72DC49ULL }, /* XSUM_XXH3_testdata[3270] */ + { 1635, 0x9E3779B185EBCA8DULL, 0xFF6B5F5D0B526102ULL }, /* XSUM_XXH3_testdata[3271] */ + { 1636, 0x0000000000000000ULL, 0xF01532579D0BA6D9ULL }, /* XSUM_XXH3_testdata[3272] */ + { 1636, 0x9E3779B185EBCA8DULL, 0x6B68A4D5AD606A8AULL }, /* XSUM_XXH3_testdata[3273] */ + { 1637, 0x0000000000000000ULL, 0xB69DE7BA82EFD875ULL }, /* XSUM_XXH3_testdata[3274] */ + { 1637, 0x9E3779B185EBCA8DULL, 0xBBF9D11E0B127B7BULL }, /* XSUM_XXH3_testdata[3275] */ + { 1638, 0x0000000000000000ULL, 0x9E759E7D2EA04907ULL }, /* XSUM_XXH3_testdata[3276] */ + { 1638, 0x9E3779B185EBCA8DULL, 0x1450D25D3E22B389ULL }, /* XSUM_XXH3_testdata[3277] */ + { 1639, 0x0000000000000000ULL, 0x01269D1AC5DC8866ULL }, /* XSUM_XXH3_testdata[3278] */ + { 1639, 0x9E3779B185EBCA8DULL, 0xEEE6A6FA68BFD87AULL }, /* XSUM_XXH3_testdata[3279] */ + { 1640, 0x0000000000000000ULL, 0x8F5B615C253FC230ULL }, /* XSUM_XXH3_testdata[3280] */ + { 1640, 0x9E3779B185EBCA8DULL, 0x6478EDFD1874F981ULL }, /* XSUM_XXH3_testdata[3281] */ + { 1641, 0x0000000000000000ULL, 0xD3703DB9BB6EF8FFULL }, /* XSUM_XXH3_testdata[3282] */ + { 1641, 0x9E3779B185EBCA8DULL, 0x62D010D1C4F5576DULL }, /* XSUM_XXH3_testdata[3283] */ + { 1642, 0x0000000000000000ULL, 0x3C81BC738A8E8163ULL }, /* XSUM_XXH3_testdata[3284] */ + { 1642, 0x9E3779B185EBCA8DULL, 0xA50FCCD23CB089ADULL }, /* XSUM_XXH3_testdata[3285] */ + { 1643, 0x0000000000000000ULL, 0x5F5445667F780B4AULL }, /* XSUM_XXH3_testdata[3286] */ + { 1643, 0x9E3779B185EBCA8DULL, 0xCD803F4570D469D0ULL }, /* XSUM_XXH3_testdata[3287] */ + { 1644, 0x0000000000000000ULL, 0xE2BDF51648BBA936ULL }, /* XSUM_XXH3_testdata[3288] */ + { 1644, 0x9E3779B185EBCA8DULL, 0x35B1A3249ECF3464ULL }, /* XSUM_XXH3_testdata[3289] */ + { 1645, 0x0000000000000000ULL, 0x8D98BFBEEF6C3CC7ULL }, /* XSUM_XXH3_testdata[3290] */ + { 1645, 0x9E3779B185EBCA8DULL, 0xA90FCAF5D4A644E7ULL }, /* XSUM_XXH3_testdata[3291] */ + { 1646, 0x0000000000000000ULL, 0x67E887DFAEF4DAB2ULL }, /* XSUM_XXH3_testdata[3292] */ + { 1646, 0x9E3779B185EBCA8DULL, 0x8A00FCF5A57F6B2AULL }, /* XSUM_XXH3_testdata[3293] */ + { 1647, 0x0000000000000000ULL, 0x0C424D06E1B35917ULL }, /* XSUM_XXH3_testdata[3294] */ + { 1647, 0x9E3779B185EBCA8DULL, 0x2CDF0C10241732C0ULL }, /* XSUM_XXH3_testdata[3295] */ + { 1648, 0x0000000000000000ULL, 0x4EF489B5D71A4003ULL }, /* XSUM_XXH3_testdata[3296] */ + { 1648, 0x9E3779B185EBCA8DULL, 0x77B9713EEC425B81ULL }, /* XSUM_XXH3_testdata[3297] */ + { 1649, 0x0000000000000000ULL, 0xC29F4F6458B40232ULL }, /* XSUM_XXH3_testdata[3298] */ + { 1649, 0x9E3779B185EBCA8DULL, 0x90F4D5B5908D43E3ULL }, /* XSUM_XXH3_testdata[3299] */ + { 1650, 0x0000000000000000ULL, 0xAA6465C49BF0B5C6ULL }, /* XSUM_XXH3_testdata[3300] */ + { 1650, 0x9E3779B185EBCA8DULL, 0xA1D1F284DECA2C8EULL }, /* XSUM_XXH3_testdata[3301] */ + { 1651, 0x0000000000000000ULL, 0xC8401D2FC2B52852ULL }, /* XSUM_XXH3_testdata[3302] */ + { 1651, 0x9E3779B185EBCA8DULL, 0x992C175AD669C528ULL }, /* XSUM_XXH3_testdata[3303] */ + { 1652, 0x0000000000000000ULL, 0x893BF660E7D10AC0ULL }, /* XSUM_XXH3_testdata[3304] */ + { 1652, 0x9E3779B185EBCA8DULL, 0xA4A0679F2E0C8A4FULL }, /* XSUM_XXH3_testdata[3305] */ + { 1653, 0x0000000000000000ULL, 0x8763E5C3902926A6ULL }, /* XSUM_XXH3_testdata[3306] */ + { 1653, 0x9E3779B185EBCA8DULL, 0x7F184DE567358F30ULL }, /* XSUM_XXH3_testdata[3307] */ + { 1654, 0x0000000000000000ULL, 0xB0A10F0E35C22309ULL }, /* XSUM_XXH3_testdata[3308] */ + { 1654, 0x9E3779B185EBCA8DULL, 0x3BFD1B41229251F7ULL }, /* XSUM_XXH3_testdata[3309] */ + { 1655, 0x0000000000000000ULL, 0x47A4A388520B2D06ULL }, /* XSUM_XXH3_testdata[3310] */ + { 1655, 0x9E3779B185EBCA8DULL, 0xAA0804050E3C54B0ULL }, /* XSUM_XXH3_testdata[3311] */ + { 1656, 0x0000000000000000ULL, 0xA5F5C1240239878CULL }, /* XSUM_XXH3_testdata[3312] */ + { 1656, 0x9E3779B185EBCA8DULL, 0x6F92386CEE0B255EULL }, /* XSUM_XXH3_testdata[3313] */ + { 1657, 0x0000000000000000ULL, 0xF78E73264BD347E5ULL }, /* XSUM_XXH3_testdata[3314] */ + { 1657, 0x9E3779B185EBCA8DULL, 0xB906F1EBE6B73016ULL }, /* XSUM_XXH3_testdata[3315] */ + { 1658, 0x0000000000000000ULL, 0x892BDCED877DE45CULL }, /* XSUM_XXH3_testdata[3316] */ + { 1658, 0x9E3779B185EBCA8DULL, 0x1F87EAD446661AE5ULL }, /* XSUM_XXH3_testdata[3317] */ + { 1659, 0x0000000000000000ULL, 0xBAA08E5BEA937434ULL }, /* XSUM_XXH3_testdata[3318] */ + { 1659, 0x9E3779B185EBCA8DULL, 0x3533F879AA51BB0AULL }, /* XSUM_XXH3_testdata[3319] */ + { 1660, 0x0000000000000000ULL, 0xF99BC5586AE8F084ULL }, /* XSUM_XXH3_testdata[3320] */ + { 1660, 0x9E3779B185EBCA8DULL, 0xA4A58945B90F8025ULL }, /* XSUM_XXH3_testdata[3321] */ + { 1661, 0x0000000000000000ULL, 0x4821F4141C3CAFF1ULL }, /* XSUM_XXH3_testdata[3322] */ + { 1661, 0x9E3779B185EBCA8DULL, 0x6DC45E039BC0FD99ULL }, /* XSUM_XXH3_testdata[3323] */ + { 1662, 0x0000000000000000ULL, 0xAC0F5BF2D6BB23EDULL }, /* XSUM_XXH3_testdata[3324] */ + { 1662, 0x9E3779B185EBCA8DULL, 0x4A2FAE9ADD0AF634ULL }, /* XSUM_XXH3_testdata[3325] */ + { 1663, 0x0000000000000000ULL, 0x0BB65AE615658F7EULL }, /* XSUM_XXH3_testdata[3326] */ + { 1663, 0x9E3779B185EBCA8DULL, 0xA5F3DC0D801A84DCULL }, /* XSUM_XXH3_testdata[3327] */ + { 1664, 0x0000000000000000ULL, 0xDC8EE644ACBF2296ULL }, /* XSUM_XXH3_testdata[3328] */ + { 1664, 0x9E3779B185EBCA8DULL, 0x0C1F83E678A50DCAULL }, /* XSUM_XXH3_testdata[3329] */ + { 1665, 0x0000000000000000ULL, 0x014559DF7B3BCE5EULL }, /* XSUM_XXH3_testdata[3330] */ + { 1665, 0x9E3779B185EBCA8DULL, 0x9B5B643B44FB2BD8ULL }, /* XSUM_XXH3_testdata[3331] */ + { 1666, 0x0000000000000000ULL, 0x9292914EF2E7DF06ULL }, /* XSUM_XXH3_testdata[3332] */ + { 1666, 0x9E3779B185EBCA8DULL, 0xC53EBCB771C28F31ULL }, /* XSUM_XXH3_testdata[3333] */ + { 1667, 0x0000000000000000ULL, 0x6319CCBAFF5746EBULL }, /* XSUM_XXH3_testdata[3334] */ + { 1667, 0x9E3779B185EBCA8DULL, 0x3B78F255E325D32AULL }, /* XSUM_XXH3_testdata[3335] */ + { 1668, 0x0000000000000000ULL, 0x7C020819254B1D09ULL }, /* XSUM_XXH3_testdata[3336] */ + { 1668, 0x9E3779B185EBCA8DULL, 0x300D3932D739495EULL }, /* XSUM_XXH3_testdata[3337] */ + { 1669, 0x0000000000000000ULL, 0x9F79BB9126872BD3ULL }, /* XSUM_XXH3_testdata[3338] */ + { 1669, 0x9E3779B185EBCA8DULL, 0xA5A7359367C0103BULL }, /* XSUM_XXH3_testdata[3339] */ + { 1670, 0x0000000000000000ULL, 0xFB48C25F3BDA21CFULL }, /* XSUM_XXH3_testdata[3340] */ + { 1670, 0x9E3779B185EBCA8DULL, 0x23AA179A02C66BDFULL }, /* XSUM_XXH3_testdata[3341] */ + { 1671, 0x0000000000000000ULL, 0xA5CE283DD784296AULL }, /* XSUM_XXH3_testdata[3342] */ + { 1671, 0x9E3779B185EBCA8DULL, 0x84A0B9F6703042E7ULL }, /* XSUM_XXH3_testdata[3343] */ + { 1672, 0x0000000000000000ULL, 0x1A72E2F2B48C2615ULL }, /* XSUM_XXH3_testdata[3344] */ + { 1672, 0x9E3779B185EBCA8DULL, 0xFB7361C7BDDDFE5FULL }, /* XSUM_XXH3_testdata[3345] */ + { 1673, 0x0000000000000000ULL, 0x65A5121142E2BE9CULL }, /* XSUM_XXH3_testdata[3346] */ + { 1673, 0x9E3779B185EBCA8DULL, 0x6B49D15017288741ULL }, /* XSUM_XXH3_testdata[3347] */ + { 1674, 0x0000000000000000ULL, 0x3C80D630C9D18076ULL }, /* XSUM_XXH3_testdata[3348] */ + { 1674, 0x9E3779B185EBCA8DULL, 0x97E2B18D6520EC8BULL }, /* XSUM_XXH3_testdata[3349] */ + { 1675, 0x0000000000000000ULL, 0x8C49D14ECB693501ULL }, /* XSUM_XXH3_testdata[3350] */ + { 1675, 0x9E3779B185EBCA8DULL, 0xA6646B75FE02BB12ULL }, /* XSUM_XXH3_testdata[3351] */ + { 1676, 0x0000000000000000ULL, 0x4A71996DA2703AA2ULL }, /* XSUM_XXH3_testdata[3352] */ + { 1676, 0x9E3779B185EBCA8DULL, 0x8A82052F3E2A7775ULL }, /* XSUM_XXH3_testdata[3353] */ + { 1677, 0x0000000000000000ULL, 0x7C13B730BFB06745ULL }, /* XSUM_XXH3_testdata[3354] */ + { 1677, 0x9E3779B185EBCA8DULL, 0x5ECB30648A07C440ULL }, /* XSUM_XXH3_testdata[3355] */ + { 1678, 0x0000000000000000ULL, 0xB8FC2127B368C28DULL }, /* XSUM_XXH3_testdata[3356] */ + { 1678, 0x9E3779B185EBCA8DULL, 0x23D8232F426474B0ULL }, /* XSUM_XXH3_testdata[3357] */ + { 1679, 0x0000000000000000ULL, 0xC27A6F17D271D67FULL }, /* XSUM_XXH3_testdata[3358] */ + { 1679, 0x9E3779B185EBCA8DULL, 0xF63AEC58CBDC4A05ULL }, /* XSUM_XXH3_testdata[3359] */ + { 1680, 0x0000000000000000ULL, 0x5BD2201FEEFBF2D8ULL }, /* XSUM_XXH3_testdata[3360] */ + { 1680, 0x9E3779B185EBCA8DULL, 0xE86AD5E291F27C27ULL }, /* XSUM_XXH3_testdata[3361] */ + { 1681, 0x0000000000000000ULL, 0xDD992FD8D1588751ULL }, /* XSUM_XXH3_testdata[3362] */ + { 1681, 0x9E3779B185EBCA8DULL, 0x505DDB442932F139ULL }, /* XSUM_XXH3_testdata[3363] */ + { 1682, 0x0000000000000000ULL, 0x5A11F9CECF0A742BULL }, /* XSUM_XXH3_testdata[3364] */ + { 1682, 0x9E3779B185EBCA8DULL, 0x69EBBEFE26FC011EULL }, /* XSUM_XXH3_testdata[3365] */ + { 1683, 0x0000000000000000ULL, 0xCB713E69A99DA847ULL }, /* XSUM_XXH3_testdata[3366] */ + { 1683, 0x9E3779B185EBCA8DULL, 0x8D6606AC9FD32978ULL }, /* XSUM_XXH3_testdata[3367] */ + { 1684, 0x0000000000000000ULL, 0x2678A2C83F2FFE65ULL }, /* XSUM_XXH3_testdata[3368] */ + { 1684, 0x9E3779B185EBCA8DULL, 0xDF10EC5B417F2A6DULL }, /* XSUM_XXH3_testdata[3369] */ + { 1685, 0x0000000000000000ULL, 0x187EEB97E80FA75DULL }, /* XSUM_XXH3_testdata[3370] */ + { 1685, 0x9E3779B185EBCA8DULL, 0xF344B102FBB78C5CULL }, /* XSUM_XXH3_testdata[3371] */ + { 1686, 0x0000000000000000ULL, 0x94A6908662A06FDFULL }, /* XSUM_XXH3_testdata[3372] */ + { 1686, 0x9E3779B185EBCA8DULL, 0x30129847B7F8E487ULL }, /* XSUM_XXH3_testdata[3373] */ + { 1687, 0x0000000000000000ULL, 0x6A895C80F46F85CDULL }, /* XSUM_XXH3_testdata[3374] */ + { 1687, 0x9E3779B185EBCA8DULL, 0x42AE31207908CC48ULL }, /* XSUM_XXH3_testdata[3375] */ + { 1688, 0x0000000000000000ULL, 0x87BCA4695B2DDE93ULL }, /* XSUM_XXH3_testdata[3376] */ + { 1688, 0x9E3779B185EBCA8DULL, 0xBFB1490777061F65ULL }, /* XSUM_XXH3_testdata[3377] */ + { 1689, 0x0000000000000000ULL, 0xF6E6E4CC2E17EBA0ULL }, /* XSUM_XXH3_testdata[3378] */ + { 1689, 0x9E3779B185EBCA8DULL, 0x0BF130EAE0CF0AB8ULL }, /* XSUM_XXH3_testdata[3379] */ + { 1690, 0x0000000000000000ULL, 0x0380D89B487C0FB3ULL }, /* XSUM_XXH3_testdata[3380] */ + { 1690, 0x9E3779B185EBCA8DULL, 0xBC9398A56DFD3815ULL }, /* XSUM_XXH3_testdata[3381] */ + { 1691, 0x0000000000000000ULL, 0xA59785EE66C08AA9ULL }, /* XSUM_XXH3_testdata[3382] */ + { 1691, 0x9E3779B185EBCA8DULL, 0x35666ACBF09F4EB9ULL }, /* XSUM_XXH3_testdata[3383] */ + { 1692, 0x0000000000000000ULL, 0xBC427B4C7F5256D8ULL }, /* XSUM_XXH3_testdata[3384] */ + { 1692, 0x9E3779B185EBCA8DULL, 0x14E5B49F2E28B5C5ULL }, /* XSUM_XXH3_testdata[3385] */ + { 1693, 0x0000000000000000ULL, 0x4472B38397711962ULL }, /* XSUM_XXH3_testdata[3386] */ + { 1693, 0x9E3779B185EBCA8DULL, 0xE1FC2B1250738986ULL }, /* XSUM_XXH3_testdata[3387] */ + { 1694, 0x0000000000000000ULL, 0x0712FDD21FF67C14ULL }, /* XSUM_XXH3_testdata[3388] */ + { 1694, 0x9E3779B185EBCA8DULL, 0x799AB06A78FF90E6ULL }, /* XSUM_XXH3_testdata[3389] */ + { 1695, 0x0000000000000000ULL, 0xF64A2BBD33693E84ULL }, /* XSUM_XXH3_testdata[3390] */ + { 1695, 0x9E3779B185EBCA8DULL, 0xAA3CC89E1064D0FAULL }, /* XSUM_XXH3_testdata[3391] */ + { 1696, 0x0000000000000000ULL, 0x52677BEB2139CC5DULL }, /* XSUM_XXH3_testdata[3392] */ + { 1696, 0x9E3779B185EBCA8DULL, 0x7AFE2676EDD1ECECULL }, /* XSUM_XXH3_testdata[3393] */ + { 1697, 0x0000000000000000ULL, 0x300D981F56D14BA1ULL }, /* XSUM_XXH3_testdata[3394] */ + { 1697, 0x9E3779B185EBCA8DULL, 0x25C739BECECD9EB5ULL }, /* XSUM_XXH3_testdata[3395] */ + { 1698, 0x0000000000000000ULL, 0x79063E6F759B2CF4ULL }, /* XSUM_XXH3_testdata[3396] */ + { 1698, 0x9E3779B185EBCA8DULL, 0x7CF876987D597B26ULL }, /* XSUM_XXH3_testdata[3397] */ + { 1699, 0x0000000000000000ULL, 0xD4D8A31F46547D15ULL }, /* XSUM_XXH3_testdata[3398] */ + { 1699, 0x9E3779B185EBCA8DULL, 0xACB693DB1AE30757ULL }, /* XSUM_XXH3_testdata[3399] */ + { 1700, 0x0000000000000000ULL, 0xBA2D1AED6D3F1291ULL }, /* XSUM_XXH3_testdata[3400] */ + { 1700, 0x9E3779B185EBCA8DULL, 0xE295316275003170ULL }, /* XSUM_XXH3_testdata[3401] */ + { 1701, 0x0000000000000000ULL, 0x51CEFCA43F9471BFULL }, /* XSUM_XXH3_testdata[3402] */ + { 1701, 0x9E3779B185EBCA8DULL, 0x74616698F5BE5948ULL }, /* XSUM_XXH3_testdata[3403] */ + { 1702, 0x0000000000000000ULL, 0x18808689370AAD8EULL }, /* XSUM_XXH3_testdata[3404] */ + { 1702, 0x9E3779B185EBCA8DULL, 0x79EDF381D1BC98EEULL }, /* XSUM_XXH3_testdata[3405] */ + { 1703, 0x0000000000000000ULL, 0x280FA24BA3BFDC30ULL }, /* XSUM_XXH3_testdata[3406] */ + { 1703, 0x9E3779B185EBCA8DULL, 0x3A7238C526B090CBULL }, /* XSUM_XXH3_testdata[3407] */ + { 1704, 0x0000000000000000ULL, 0x9A13BBF8D5AB9FA0ULL }, /* XSUM_XXH3_testdata[3408] */ + { 1704, 0x9E3779B185EBCA8DULL, 0x4E7097F99B0219DEULL }, /* XSUM_XXH3_testdata[3409] */ + { 1705, 0x0000000000000000ULL, 0x751149F530F23B3DULL }, /* XSUM_XXH3_testdata[3410] */ + { 1705, 0x9E3779B185EBCA8DULL, 0x1B2347FA6FAC3095ULL }, /* XSUM_XXH3_testdata[3411] */ + { 1706, 0x0000000000000000ULL, 0x5E7A6FCEEEA405DDULL }, /* XSUM_XXH3_testdata[3412] */ + { 1706, 0x9E3779B185EBCA8DULL, 0xAF6FE163245BC7A1ULL }, /* XSUM_XXH3_testdata[3413] */ + { 1707, 0x0000000000000000ULL, 0xF3E6115DF0F23C7AULL }, /* XSUM_XXH3_testdata[3414] */ + { 1707, 0x9E3779B185EBCA8DULL, 0x3A24873941B5E49AULL }, /* XSUM_XXH3_testdata[3415] */ + { 1708, 0x0000000000000000ULL, 0x16F8B128EADB9EF1ULL }, /* XSUM_XXH3_testdata[3416] */ + { 1708, 0x9E3779B185EBCA8DULL, 0x063F9C194C8EC62CULL }, /* XSUM_XXH3_testdata[3417] */ + { 1709, 0x0000000000000000ULL, 0xB16E53B1ABCBD5F6ULL }, /* XSUM_XXH3_testdata[3418] */ + { 1709, 0x9E3779B185EBCA8DULL, 0x8FA0AFEF906A3B08ULL }, /* XSUM_XXH3_testdata[3419] */ + { 1710, 0x0000000000000000ULL, 0x91AE6F2A4E04CE2FULL }, /* XSUM_XXH3_testdata[3420] */ + { 1710, 0x9E3779B185EBCA8DULL, 0x5E641D6DFC36F2E4ULL }, /* XSUM_XXH3_testdata[3421] */ + { 1711, 0x0000000000000000ULL, 0x72AA744E3224B21CULL }, /* XSUM_XXH3_testdata[3422] */ + { 1711, 0x9E3779B185EBCA8DULL, 0xE808026D23323001ULL }, /* XSUM_XXH3_testdata[3423] */ + { 1712, 0x0000000000000000ULL, 0x5E84D67DB3CB690CULL }, /* XSUM_XXH3_testdata[3424] */ + { 1712, 0x9E3779B185EBCA8DULL, 0x92A2AF0F6F556626ULL }, /* XSUM_XXH3_testdata[3425] */ + { 1713, 0x0000000000000000ULL, 0xEA01D1C732815D95ULL }, /* XSUM_XXH3_testdata[3426] */ + { 1713, 0x9E3779B185EBCA8DULL, 0x990416FA99E3583EULL }, /* XSUM_XXH3_testdata[3427] */ + { 1714, 0x0000000000000000ULL, 0x2E7119639E3D4D35ULL }, /* XSUM_XXH3_testdata[3428] */ + { 1714, 0x9E3779B185EBCA8DULL, 0x73AD703E2219297EULL }, /* XSUM_XXH3_testdata[3429] */ + { 1715, 0x0000000000000000ULL, 0x51C9DC72F6C1EEA8ULL }, /* XSUM_XXH3_testdata[3430] */ + { 1715, 0x9E3779B185EBCA8DULL, 0x81B6D259D25EB2BCULL }, /* XSUM_XXH3_testdata[3431] */ + { 1716, 0x0000000000000000ULL, 0x45D2F1C6B036F1CDULL }, /* XSUM_XXH3_testdata[3432] */ + { 1716, 0x9E3779B185EBCA8DULL, 0x0DF5F8958B4D3DAAULL }, /* XSUM_XXH3_testdata[3433] */ + { 1717, 0x0000000000000000ULL, 0x61FBCD5F366792D7ULL }, /* XSUM_XXH3_testdata[3434] */ + { 1717, 0x9E3779B185EBCA8DULL, 0x6365F06DC899C90BULL }, /* XSUM_XXH3_testdata[3435] */ + { 1718, 0x0000000000000000ULL, 0xABA05CE4BA47455FULL }, /* XSUM_XXH3_testdata[3436] */ + { 1718, 0x9E3779B185EBCA8DULL, 0x2F3C96BADC8EC27AULL }, /* XSUM_XXH3_testdata[3437] */ + { 1719, 0x0000000000000000ULL, 0x2D3FF1E8B05F4E9AULL }, /* XSUM_XXH3_testdata[3438] */ + { 1719, 0x9E3779B185EBCA8DULL, 0x991F60E4CD736A13ULL }, /* XSUM_XXH3_testdata[3439] */ + { 1720, 0x0000000000000000ULL, 0xDFF2D0888B0C99F4ULL }, /* XSUM_XXH3_testdata[3440] */ + { 1720, 0x9E3779B185EBCA8DULL, 0x9352C645DFFDA421ULL }, /* XSUM_XXH3_testdata[3441] */ + { 1721, 0x0000000000000000ULL, 0x8E05C59E1219124DULL }, /* XSUM_XXH3_testdata[3442] */ + { 1721, 0x9E3779B185EBCA8DULL, 0x5C1F24B984ABB5F6ULL }, /* XSUM_XXH3_testdata[3443] */ + { 1722, 0x0000000000000000ULL, 0x312DEB25A28BD45EULL }, /* XSUM_XXH3_testdata[3444] */ + { 1722, 0x9E3779B185EBCA8DULL, 0xDDE6A17CCD3EDB8CULL }, /* XSUM_XXH3_testdata[3445] */ + { 1723, 0x0000000000000000ULL, 0x99735C6A00896EA9ULL }, /* XSUM_XXH3_testdata[3446] */ + { 1723, 0x9E3779B185EBCA8DULL, 0x659A7B5EFC7F69F4ULL }, /* XSUM_XXH3_testdata[3447] */ + { 1724, 0x0000000000000000ULL, 0xDA70A7331C758A11ULL }, /* XSUM_XXH3_testdata[3448] */ + { 1724, 0x9E3779B185EBCA8DULL, 0xE587F2DB4B7C28B2ULL }, /* XSUM_XXH3_testdata[3449] */ + { 1725, 0x0000000000000000ULL, 0x671AC2B05CD1E93EULL }, /* XSUM_XXH3_testdata[3450] */ + { 1725, 0x9E3779B185EBCA8DULL, 0x0FD6460344094D86ULL }, /* XSUM_XXH3_testdata[3451] */ + { 1726, 0x0000000000000000ULL, 0x1AC66A5AA86E9E25ULL }, /* XSUM_XXH3_testdata[3452] */ + { 1726, 0x9E3779B185EBCA8DULL, 0x1EC51F9ABB08B913ULL }, /* XSUM_XXH3_testdata[3453] */ + { 1727, 0x0000000000000000ULL, 0xF78173A923B84753ULL }, /* XSUM_XXH3_testdata[3454] */ + { 1727, 0x9E3779B185EBCA8DULL, 0x745FF5546F2C23DCULL }, /* XSUM_XXH3_testdata[3455] */ + { 1728, 0x0000000000000000ULL, 0x220DAC2E47871091ULL }, /* XSUM_XXH3_testdata[3456] */ + { 1728, 0x9E3779B185EBCA8DULL, 0x79501CDE4D247902ULL }, /* XSUM_XXH3_testdata[3457] */ + { 1729, 0x0000000000000000ULL, 0x5F27B880EB82CBE3ULL }, /* XSUM_XXH3_testdata[3458] */ + { 1729, 0x9E3779B185EBCA8DULL, 0x3ABE71821453D8A0ULL }, /* XSUM_XXH3_testdata[3459] */ + { 1730, 0x0000000000000000ULL, 0x13F5358188C8C705ULL }, /* XSUM_XXH3_testdata[3460] */ + { 1730, 0x9E3779B185EBCA8DULL, 0x5DEBDA86C8CCAD56ULL }, /* XSUM_XXH3_testdata[3461] */ + { 1731, 0x0000000000000000ULL, 0x252BB54C35412507ULL }, /* XSUM_XXH3_testdata[3462] */ + { 1731, 0x9E3779B185EBCA8DULL, 0xD3B16569E6073E74ULL }, /* XSUM_XXH3_testdata[3463] */ + { 1732, 0x0000000000000000ULL, 0x64A5B23189ABCB8CULL }, /* XSUM_XXH3_testdata[3464] */ + { 1732, 0x9E3779B185EBCA8DULL, 0x975A4B394E3570A6ULL }, /* XSUM_XXH3_testdata[3465] */ + { 1733, 0x0000000000000000ULL, 0xDA3EBB58E0F0DA51ULL }, /* XSUM_XXH3_testdata[3466] */ + { 1733, 0x9E3779B185EBCA8DULL, 0xCECBA4F5BDBA8B2AULL }, /* XSUM_XXH3_testdata[3467] */ + { 1734, 0x0000000000000000ULL, 0xB7043A69655059E3ULL }, /* XSUM_XXH3_testdata[3468] */ + { 1734, 0x9E3779B185EBCA8DULL, 0xAAD8EE22B3DE900FULL }, /* XSUM_XXH3_testdata[3469] */ + { 1735, 0x0000000000000000ULL, 0xBECA2F499E761EB3ULL }, /* XSUM_XXH3_testdata[3470] */ + { 1735, 0x9E3779B185EBCA8DULL, 0x8AE05D359FC8BB7CULL }, /* XSUM_XXH3_testdata[3471] */ + { 1736, 0x0000000000000000ULL, 0xD9DC33599AFF2D43ULL }, /* XSUM_XXH3_testdata[3472] */ + { 1736, 0x9E3779B185EBCA8DULL, 0x6CC9042D5E4EADDCULL }, /* XSUM_XXH3_testdata[3473] */ + { 1737, 0x0000000000000000ULL, 0x7FFA441E5FAC309FULL }, /* XSUM_XXH3_testdata[3474] */ + { 1737, 0x9E3779B185EBCA8DULL, 0x58ADA79F6B44D126ULL }, /* XSUM_XXH3_testdata[3475] */ + { 1738, 0x0000000000000000ULL, 0x22CD0F38FB521217ULL }, /* XSUM_XXH3_testdata[3476] */ + { 1738, 0x9E3779B185EBCA8DULL, 0x9738D4E754A33DA1ULL }, /* XSUM_XXH3_testdata[3477] */ + { 1739, 0x0000000000000000ULL, 0x4A5A3B33E78E44D4ULL }, /* XSUM_XXH3_testdata[3478] */ + { 1739, 0x9E3779B185EBCA8DULL, 0x422E0C601DCA7742ULL }, /* XSUM_XXH3_testdata[3479] */ + { 1740, 0x0000000000000000ULL, 0xF03EB59E770E4CF9ULL }, /* XSUM_XXH3_testdata[3480] */ + { 1740, 0x9E3779B185EBCA8DULL, 0x8229CD6F18DACC95ULL }, /* XSUM_XXH3_testdata[3481] */ + { 1741, 0x0000000000000000ULL, 0xDBE3D19DE2B85FDBULL }, /* XSUM_XXH3_testdata[3482] */ + { 1741, 0x9E3779B185EBCA8DULL, 0xE3BDD3ECB58B0EE4ULL }, /* XSUM_XXH3_testdata[3483] */ + { 1742, 0x0000000000000000ULL, 0x7BDF6208541D8766ULL }, /* XSUM_XXH3_testdata[3484] */ + { 1742, 0x9E3779B185EBCA8DULL, 0x724C23B0BCE23E84ULL }, /* XSUM_XXH3_testdata[3485] */ + { 1743, 0x0000000000000000ULL, 0x06D1B3351E6AC466ULL }, /* XSUM_XXH3_testdata[3486] */ + { 1743, 0x9E3779B185EBCA8DULL, 0xB46EF27E6A19B6A2ULL }, /* XSUM_XXH3_testdata[3487] */ + { 1744, 0x0000000000000000ULL, 0xD4EDA665DC3A4B65ULL }, /* XSUM_XXH3_testdata[3488] */ + { 1744, 0x9E3779B185EBCA8DULL, 0x630F4F4C2359C63EULL }, /* XSUM_XXH3_testdata[3489] */ + { 1745, 0x0000000000000000ULL, 0xA108D968D8A4DDC9ULL }, /* XSUM_XXH3_testdata[3490] */ + { 1745, 0x9E3779B185EBCA8DULL, 0x28D998B9855C3E18ULL }, /* XSUM_XXH3_testdata[3491] */ + { 1746, 0x0000000000000000ULL, 0x4988F7F0BE937CAEULL }, /* XSUM_XXH3_testdata[3492] */ + { 1746, 0x9E3779B185EBCA8DULL, 0xA48FD8C5BB2CD9E1ULL }, /* XSUM_XXH3_testdata[3493] */ + { 1747, 0x0000000000000000ULL, 0xD6FB12FDB1622503ULL }, /* XSUM_XXH3_testdata[3494] */ + { 1747, 0x9E3779B185EBCA8DULL, 0x81586448DE7D2F8CULL }, /* XSUM_XXH3_testdata[3495] */ + { 1748, 0x0000000000000000ULL, 0x27D8CEF8702F3CFBULL }, /* XSUM_XXH3_testdata[3496] */ + { 1748, 0x9E3779B185EBCA8DULL, 0x0B15BF0DC38C1EAEULL }, /* XSUM_XXH3_testdata[3497] */ + { 1749, 0x0000000000000000ULL, 0xD155F7437A01C3E5ULL }, /* XSUM_XXH3_testdata[3498] */ + { 1749, 0x9E3779B185EBCA8DULL, 0x6B86F11A836810B7ULL }, /* XSUM_XXH3_testdata[3499] */ + { 1750, 0x0000000000000000ULL, 0xC8E020F2F9E8C469ULL }, /* XSUM_XXH3_testdata[3500] */ + { 1750, 0x9E3779B185EBCA8DULL, 0x89557BC08A51F05CULL }, /* XSUM_XXH3_testdata[3501] */ + { 1751, 0x0000000000000000ULL, 0x1A92033D8555F351ULL }, /* XSUM_XXH3_testdata[3502] */ + { 1751, 0x9E3779B185EBCA8DULL, 0x37330043BC14621EULL }, /* XSUM_XXH3_testdata[3503] */ + { 1752, 0x0000000000000000ULL, 0x96BBF5198F92D2E0ULL }, /* XSUM_XXH3_testdata[3504] */ + { 1752, 0x9E3779B185EBCA8DULL, 0x915B3EE331B9EF6EULL }, /* XSUM_XXH3_testdata[3505] */ + { 1753, 0x0000000000000000ULL, 0x8FEBB23093609094ULL }, /* XSUM_XXH3_testdata[3506] */ + { 1753, 0x9E3779B185EBCA8DULL, 0x9D99AFB6EDDE01C3ULL }, /* XSUM_XXH3_testdata[3507] */ + { 1754, 0x0000000000000000ULL, 0xB7EF3E6F6A42082CULL }, /* XSUM_XXH3_testdata[3508] */ + { 1754, 0x9E3779B185EBCA8DULL, 0xC156FB0ED9A0B574ULL }, /* XSUM_XXH3_testdata[3509] */ + { 1755, 0x0000000000000000ULL, 0x856CF1FF067B3ADEULL }, /* XSUM_XXH3_testdata[3510] */ + { 1755, 0x9E3779B185EBCA8DULL, 0x7E059FB1914BD3FBULL }, /* XSUM_XXH3_testdata[3511] */ + { 1756, 0x0000000000000000ULL, 0x3D1F07BED79EB024ULL }, /* XSUM_XXH3_testdata[3512] */ + { 1756, 0x9E3779B185EBCA8DULL, 0x9E8C8B897181AEC9ULL }, /* XSUM_XXH3_testdata[3513] */ + { 1757, 0x0000000000000000ULL, 0x6CECD5D2CD92708CULL }, /* XSUM_XXH3_testdata[3514] */ + { 1757, 0x9E3779B185EBCA8DULL, 0x5545085298AA4C71ULL }, /* XSUM_XXH3_testdata[3515] */ + { 1758, 0x0000000000000000ULL, 0x8E6BF225FD7F3FA1ULL }, /* XSUM_XXH3_testdata[3516] */ + { 1758, 0x9E3779B185EBCA8DULL, 0xB486909C53F163B1ULL }, /* XSUM_XXH3_testdata[3517] */ + { 1759, 0x0000000000000000ULL, 0x7BF5430C9E06389AULL }, /* XSUM_XXH3_testdata[3518] */ + { 1759, 0x9E3779B185EBCA8DULL, 0x5AC6791A15235D18ULL }, /* XSUM_XXH3_testdata[3519] */ + { 1760, 0x0000000000000000ULL, 0x49733C9DDE946FB4ULL }, /* XSUM_XXH3_testdata[3520] */ + { 1760, 0x9E3779B185EBCA8DULL, 0x20D21AC0B3025E9BULL }, /* XSUM_XXH3_testdata[3521] */ + { 1761, 0x0000000000000000ULL, 0x7BD8D88D0D402CC8ULL }, /* XSUM_XXH3_testdata[3522] */ + { 1761, 0x9E3779B185EBCA8DULL, 0xCB34E8082EA11948ULL }, /* XSUM_XXH3_testdata[3523] */ + { 1762, 0x0000000000000000ULL, 0xAAF2103EAD4F67DEULL }, /* XSUM_XXH3_testdata[3524] */ + { 1762, 0x9E3779B185EBCA8DULL, 0x6D2C80A8A7B34A4AULL }, /* XSUM_XXH3_testdata[3525] */ + { 1763, 0x0000000000000000ULL, 0xF64BA24F6F2C7671ULL }, /* XSUM_XXH3_testdata[3526] */ + { 1763, 0x9E3779B185EBCA8DULL, 0xD98C1890DFE1418FULL }, /* XSUM_XXH3_testdata[3527] */ + { 1764, 0x0000000000000000ULL, 0xA097BC4C9DC93D8FULL }, /* XSUM_XXH3_testdata[3528] */ + { 1764, 0x9E3779B185EBCA8DULL, 0xF2C2AC304979B5A6ULL }, /* XSUM_XXH3_testdata[3529] */ + { 1765, 0x0000000000000000ULL, 0x03E739F4A58A210EULL }, /* XSUM_XXH3_testdata[3530] */ + { 1765, 0x9E3779B185EBCA8DULL, 0x149D280829B49700ULL }, /* XSUM_XXH3_testdata[3531] */ + { 1766, 0x0000000000000000ULL, 0x2389D9082B242983ULL }, /* XSUM_XXH3_testdata[3532] */ + { 1766, 0x9E3779B185EBCA8DULL, 0x602BBC51A33FC7AAULL }, /* XSUM_XXH3_testdata[3533] */ + { 1767, 0x0000000000000000ULL, 0x4C19748B9519F6E5ULL }, /* XSUM_XXH3_testdata[3534] */ + { 1767, 0x9E3779B185EBCA8DULL, 0xCDD26659C7C05FF5ULL }, /* XSUM_XXH3_testdata[3535] */ + { 1768, 0x0000000000000000ULL, 0x872F5C85F902B2E6ULL }, /* XSUM_XXH3_testdata[3536] */ + { 1768, 0x9E3779B185EBCA8DULL, 0x26AA174D954F2498ULL }, /* XSUM_XXH3_testdata[3537] */ + { 1769, 0x0000000000000000ULL, 0xF04114F5FB2E7219ULL }, /* XSUM_XXH3_testdata[3538] */ + { 1769, 0x9E3779B185EBCA8DULL, 0x3E59BF2B3D0CA878ULL }, /* XSUM_XXH3_testdata[3539] */ + { 1770, 0x0000000000000000ULL, 0xDC493AD0E7E20665ULL }, /* XSUM_XXH3_testdata[3540] */ + { 1770, 0x9E3779B185EBCA8DULL, 0x3800DC833B5C18B9ULL }, /* XSUM_XXH3_testdata[3541] */ + { 1771, 0x0000000000000000ULL, 0x9113DF900D00D5CBULL }, /* XSUM_XXH3_testdata[3542] */ + { 1771, 0x9E3779B185EBCA8DULL, 0xB279ED197A6809C4ULL }, /* XSUM_XXH3_testdata[3543] */ + { 1772, 0x0000000000000000ULL, 0xBA3E2263E19706AAULL }, /* XSUM_XXH3_testdata[3544] */ + { 1772, 0x9E3779B185EBCA8DULL, 0x4A94DFE3951D5816ULL }, /* XSUM_XXH3_testdata[3545] */ + { 1773, 0x0000000000000000ULL, 0x005C77B9B80C4E8FULL }, /* XSUM_XXH3_testdata[3546] */ + { 1773, 0x9E3779B185EBCA8DULL, 0x239B0A1EB5ECEB81ULL }, /* XSUM_XXH3_testdata[3547] */ + { 1774, 0x0000000000000000ULL, 0x70B9E7F2520F30EEULL }, /* XSUM_XXH3_testdata[3548] */ + { 1774, 0x9E3779B185EBCA8DULL, 0x55AE8F34701876CBULL }, /* XSUM_XXH3_testdata[3549] */ + { 1775, 0x0000000000000000ULL, 0x4EC99C083B39FD2BULL }, /* XSUM_XXH3_testdata[3550] */ + { 1775, 0x9E3779B185EBCA8DULL, 0x726C3C05200E1B87ULL }, /* XSUM_XXH3_testdata[3551] */ + { 1776, 0x0000000000000000ULL, 0x346ACEAFA0F4C865ULL }, /* XSUM_XXH3_testdata[3552] */ + { 1776, 0x9E3779B185EBCA8DULL, 0x8D64F6CEBB88E55BULL }, /* XSUM_XXH3_testdata[3553] */ + { 1777, 0x0000000000000000ULL, 0xEEB0D93FC377A9B4ULL }, /* XSUM_XXH3_testdata[3554] */ + { 1777, 0x9E3779B185EBCA8DULL, 0x446FADB53542D92EULL }, /* XSUM_XXH3_testdata[3555] */ + { 1778, 0x0000000000000000ULL, 0x28545D09486B0EDEULL }, /* XSUM_XXH3_testdata[3556] */ + { 1778, 0x9E3779B185EBCA8DULL, 0x3CA002D070E98821ULL }, /* XSUM_XXH3_testdata[3557] */ + { 1779, 0x0000000000000000ULL, 0xF0CA94F97D50BBFEULL }, /* XSUM_XXH3_testdata[3558] */ + { 1779, 0x9E3779B185EBCA8DULL, 0xF59AE48D6BDD5E0AULL }, /* XSUM_XXH3_testdata[3559] */ + { 1780, 0x0000000000000000ULL, 0x1B418E8757E55B1CULL }, /* XSUM_XXH3_testdata[3560] */ + { 1780, 0x9E3779B185EBCA8DULL, 0x02EAF2FA4ECE6DEEULL }, /* XSUM_XXH3_testdata[3561] */ + { 1781, 0x0000000000000000ULL, 0x76EE9AAE93299118ULL }, /* XSUM_XXH3_testdata[3562] */ + { 1781, 0x9E3779B185EBCA8DULL, 0xC7B9D76F32FDC14FULL }, /* XSUM_XXH3_testdata[3563] */ + { 1782, 0x0000000000000000ULL, 0x30A587DC4F623029ULL }, /* XSUM_XXH3_testdata[3564] */ + { 1782, 0x9E3779B185EBCA8DULL, 0x8C443094A526F96EULL }, /* XSUM_XXH3_testdata[3565] */ + { 1783, 0x0000000000000000ULL, 0xC98D9F8922FE6D86ULL }, /* XSUM_XXH3_testdata[3566] */ + { 1783, 0x9E3779B185EBCA8DULL, 0xD84F0298549F96D5ULL }, /* XSUM_XXH3_testdata[3567] */ + { 1784, 0x0000000000000000ULL, 0xB605BE989491FC40ULL }, /* XSUM_XXH3_testdata[3568] */ + { 1784, 0x9E3779B185EBCA8DULL, 0xC367EC49E1BF23F3ULL }, /* XSUM_XXH3_testdata[3569] */ + { 1785, 0x0000000000000000ULL, 0x9D80AD9032C9486DULL }, /* XSUM_XXH3_testdata[3570] */ + { 1785, 0x9E3779B185EBCA8DULL, 0xAED7D00BED5E8263ULL }, /* XSUM_XXH3_testdata[3571] */ + { 1786, 0x0000000000000000ULL, 0x2124A0F278C2B392ULL }, /* XSUM_XXH3_testdata[3572] */ + { 1786, 0x9E3779B185EBCA8DULL, 0x1E972898A06F3147ULL }, /* XSUM_XXH3_testdata[3573] */ + { 1787, 0x0000000000000000ULL, 0x75E335BE40042A57ULL }, /* XSUM_XXH3_testdata[3574] */ + { 1787, 0x9E3779B185EBCA8DULL, 0x8E60B89DCD3F45ECULL }, /* XSUM_XXH3_testdata[3575] */ + { 1788, 0x0000000000000000ULL, 0x137D7CCB6D40ABE2ULL }, /* XSUM_XXH3_testdata[3576] */ + { 1788, 0x9E3779B185EBCA8DULL, 0x227A5D232641DF7AULL }, /* XSUM_XXH3_testdata[3577] */ + { 1789, 0x0000000000000000ULL, 0x0D7D2C85BC8340EAULL }, /* XSUM_XXH3_testdata[3578] */ + { 1789, 0x9E3779B185EBCA8DULL, 0x2822DA21F08795C5ULL }, /* XSUM_XXH3_testdata[3579] */ + { 1790, 0x0000000000000000ULL, 0x59082F65C4BE2301ULL }, /* XSUM_XXH3_testdata[3580] */ + { 1790, 0x9E3779B185EBCA8DULL, 0x5B83834233EA8169ULL }, /* XSUM_XXH3_testdata[3581] */ + { 1791, 0x0000000000000000ULL, 0x1CABC296AE13AFC9ULL }, /* XSUM_XXH3_testdata[3582] */ + { 1791, 0x9E3779B185EBCA8DULL, 0x4337C8383334571BULL }, /* XSUM_XXH3_testdata[3583] */ + { 1792, 0x0000000000000000ULL, 0x1600BFD22906D6D3ULL }, /* XSUM_XXH3_testdata[3584] */ + { 1792, 0x9E3779B185EBCA8DULL, 0xE9D76D35B96143DBULL }, /* XSUM_XXH3_testdata[3585] */ + { 1793, 0x0000000000000000ULL, 0x7442C5CFB64761CDULL }, /* XSUM_XXH3_testdata[3586] */ + { 1793, 0x9E3779B185EBCA8DULL, 0x4DD3F5933ACDF470ULL }, /* XSUM_XXH3_testdata[3587] */ + { 1794, 0x0000000000000000ULL, 0xB5CE87CEBA63C5D5ULL }, /* XSUM_XXH3_testdata[3588] */ + { 1794, 0x9E3779B185EBCA8DULL, 0x1B6FDCDBF614B44CULL }, /* XSUM_XXH3_testdata[3589] */ + { 1795, 0x0000000000000000ULL, 0x203458291AFCB92EULL }, /* XSUM_XXH3_testdata[3590] */ + { 1795, 0x9E3779B185EBCA8DULL, 0x90E814F41CB31E27ULL }, /* XSUM_XXH3_testdata[3591] */ + { 1796, 0x0000000000000000ULL, 0x6662DCB7A0C70C62ULL }, /* XSUM_XXH3_testdata[3592] */ + { 1796, 0x9E3779B185EBCA8DULL, 0x11F227B612D8D3F1ULL }, /* XSUM_XXH3_testdata[3593] */ + { 1797, 0x0000000000000000ULL, 0xE7CD93B7BBE19A89ULL }, /* XSUM_XXH3_testdata[3594] */ + { 1797, 0x9E3779B185EBCA8DULL, 0x9DB0C9AF8CB16E95ULL }, /* XSUM_XXH3_testdata[3595] */ + { 1798, 0x0000000000000000ULL, 0x4239EC2E79A4A17BULL }, /* XSUM_XXH3_testdata[3596] */ + { 1798, 0x9E3779B185EBCA8DULL, 0x82622B15DE9DE4F4ULL }, /* XSUM_XXH3_testdata[3597] */ + { 1799, 0x0000000000000000ULL, 0x19712A44419FBB0EULL }, /* XSUM_XXH3_testdata[3598] */ + { 1799, 0x9E3779B185EBCA8DULL, 0x41AC7FC823CE85FEULL }, /* XSUM_XXH3_testdata[3599] */ + { 1800, 0x0000000000000000ULL, 0x09138FDB0A328971ULL }, /* XSUM_XXH3_testdata[3600] */ + { 1800, 0x9E3779B185EBCA8DULL, 0xBA962ED162D0CD51ULL }, /* XSUM_XXH3_testdata[3601] */ + { 1801, 0x0000000000000000ULL, 0x60BB2E0AE238E080ULL }, /* XSUM_XXH3_testdata[3602] */ + { 1801, 0x9E3779B185EBCA8DULL, 0xCF9D2A442939067AULL }, /* XSUM_XXH3_testdata[3603] */ + { 1802, 0x0000000000000000ULL, 0x5C7BE39A4D166B11ULL }, /* XSUM_XXH3_testdata[3604] */ + { 1802, 0x9E3779B185EBCA8DULL, 0xBE8B6B2210FE8928ULL }, /* XSUM_XXH3_testdata[3605] */ + { 1803, 0x0000000000000000ULL, 0xA8112FDF1FE59564ULL }, /* XSUM_XXH3_testdata[3606] */ + { 1803, 0x9E3779B185EBCA8DULL, 0xABDAAC610AC20E1AULL }, /* XSUM_XXH3_testdata[3607] */ + { 1804, 0x0000000000000000ULL, 0xD3D8FF0B3F208BCBULL }, /* XSUM_XXH3_testdata[3608] */ + { 1804, 0x9E3779B185EBCA8DULL, 0x2DD6D5156249E5FBULL }, /* XSUM_XXH3_testdata[3609] */ + { 1805, 0x0000000000000000ULL, 0x055F42CC1C378003ULL }, /* XSUM_XXH3_testdata[3610] */ + { 1805, 0x9E3779B185EBCA8DULL, 0x842ED122359E4A02ULL }, /* XSUM_XXH3_testdata[3611] */ + { 1806, 0x0000000000000000ULL, 0xCD607DBA7AD99830ULL }, /* XSUM_XXH3_testdata[3612] */ + { 1806, 0x9E3779B185EBCA8DULL, 0x9E68ED4EB7B5DA31ULL }, /* XSUM_XXH3_testdata[3613] */ + { 1807, 0x0000000000000000ULL, 0x6F3CBAB3D64C7DC1ULL }, /* XSUM_XXH3_testdata[3614] */ + { 1807, 0x9E3779B185EBCA8DULL, 0x6B29605C4425F727ULL }, /* XSUM_XXH3_testdata[3615] */ + { 1808, 0x0000000000000000ULL, 0xD6C0644F3EE9057EULL }, /* XSUM_XXH3_testdata[3616] */ + { 1808, 0x9E3779B185EBCA8DULL, 0x6095DA16E23ABCE7ULL }, /* XSUM_XXH3_testdata[3617] */ + { 1809, 0x0000000000000000ULL, 0xCC323714241418F9ULL }, /* XSUM_XXH3_testdata[3618] */ + { 1809, 0x9E3779B185EBCA8DULL, 0x08439A6E0F41E972ULL }, /* XSUM_XXH3_testdata[3619] */ + { 1810, 0x0000000000000000ULL, 0xA2ADC107689E8EA8ULL }, /* XSUM_XXH3_testdata[3620] */ + { 1810, 0x9E3779B185EBCA8DULL, 0xAD99623A0186EA0CULL }, /* XSUM_XXH3_testdata[3621] */ + { 1811, 0x0000000000000000ULL, 0x906A2880DC1BF8BEULL }, /* XSUM_XXH3_testdata[3622] */ + { 1811, 0x9E3779B185EBCA8DULL, 0x26B1549538E80D59ULL }, /* XSUM_XXH3_testdata[3623] */ + { 1812, 0x0000000000000000ULL, 0xB668F76405AA3171ULL }, /* XSUM_XXH3_testdata[3624] */ + { 1812, 0x9E3779B185EBCA8DULL, 0x029C0FD70CBE3722ULL }, /* XSUM_XXH3_testdata[3625] */ + { 1813, 0x0000000000000000ULL, 0x4DDF364B72D57724ULL }, /* XSUM_XXH3_testdata[3626] */ + { 1813, 0x9E3779B185EBCA8DULL, 0xD12A4F2EBF788B64ULL }, /* XSUM_XXH3_testdata[3627] */ + { 1814, 0x0000000000000000ULL, 0x3ACCD4A8FC7EDB52ULL }, /* XSUM_XXH3_testdata[3628] */ + { 1814, 0x9E3779B185EBCA8DULL, 0x56E573B5D8466C25ULL }, /* XSUM_XXH3_testdata[3629] */ + { 1815, 0x0000000000000000ULL, 0x86BEA08138DF8496ULL }, /* XSUM_XXH3_testdata[3630] */ + { 1815, 0x9E3779B185EBCA8DULL, 0x94F9EB73D3671373ULL }, /* XSUM_XXH3_testdata[3631] */ + { 1816, 0x0000000000000000ULL, 0xEB9B23A4064CA4F1ULL }, /* XSUM_XXH3_testdata[3632] */ + { 1816, 0x9E3779B185EBCA8DULL, 0xEB3591CFA85FBF19ULL }, /* XSUM_XXH3_testdata[3633] */ + { 1817, 0x0000000000000000ULL, 0xA19C89C1644C79CDULL }, /* XSUM_XXH3_testdata[3634] */ + { 1817, 0x9E3779B185EBCA8DULL, 0x097868EDA1665A24ULL }, /* XSUM_XXH3_testdata[3635] */ + { 1818, 0x0000000000000000ULL, 0x874B6E4172150EEFULL }, /* XSUM_XXH3_testdata[3636] */ + { 1818, 0x9E3779B185EBCA8DULL, 0x026DC926C3652C4EULL }, /* XSUM_XXH3_testdata[3637] */ + { 1819, 0x0000000000000000ULL, 0x96812576E01F3B8CULL }, /* XSUM_XXH3_testdata[3638] */ + { 1819, 0x9E3779B185EBCA8DULL, 0xA09C4E9F4F6B933EULL }, /* XSUM_XXH3_testdata[3639] */ + { 1820, 0x0000000000000000ULL, 0xF4B08FFD3703291CULL }, /* XSUM_XXH3_testdata[3640] */ + { 1820, 0x9E3779B185EBCA8DULL, 0xA84511296432A978ULL }, /* XSUM_XXH3_testdata[3641] */ + { 1821, 0x0000000000000000ULL, 0x55161D50DBDC33B2ULL }, /* XSUM_XXH3_testdata[3642] */ + { 1821, 0x9E3779B185EBCA8DULL, 0x089AA97A0461F0B9ULL }, /* XSUM_XXH3_testdata[3643] */ + { 1822, 0x0000000000000000ULL, 0xF323F26709AD9FFEULL }, /* XSUM_XXH3_testdata[3644] */ + { 1822, 0x9E3779B185EBCA8DULL, 0x7FB6FC17345F3C04ULL }, /* XSUM_XXH3_testdata[3645] */ + { 1823, 0x0000000000000000ULL, 0x87F8777310FFB883ULL }, /* XSUM_XXH3_testdata[3646] */ + { 1823, 0x9E3779B185EBCA8DULL, 0xD5AA462301EE9512ULL }, /* XSUM_XXH3_testdata[3647] */ + { 1824, 0x0000000000000000ULL, 0x1F380E20231D0A25ULL }, /* XSUM_XXH3_testdata[3648] */ + { 1824, 0x9E3779B185EBCA8DULL, 0xF4FA50A56CFEFC9DULL }, /* XSUM_XXH3_testdata[3649] */ + { 1825, 0x0000000000000000ULL, 0xB3D9C2891C916519ULL }, /* XSUM_XXH3_testdata[3650] */ + { 1825, 0x9E3779B185EBCA8DULL, 0x173D0678A2A672ECULL }, /* XSUM_XXH3_testdata[3651] */ + { 1826, 0x0000000000000000ULL, 0x2125C4D653CF7620ULL }, /* XSUM_XXH3_testdata[3652] */ + { 1826, 0x9E3779B185EBCA8DULL, 0x92A0B4B951D045E4ULL }, /* XSUM_XXH3_testdata[3653] */ + { 1827, 0x0000000000000000ULL, 0x4C9DA977D414FE62ULL }, /* XSUM_XXH3_testdata[3654] */ + { 1827, 0x9E3779B185EBCA8DULL, 0xEB7A8EAC6B438ACBULL }, /* XSUM_XXH3_testdata[3655] */ + { 1828, 0x0000000000000000ULL, 0xE69D3DEAD3A1D13AULL }, /* XSUM_XXH3_testdata[3656] */ + { 1828, 0x9E3779B185EBCA8DULL, 0x61D68F5DEF64FAE9ULL }, /* XSUM_XXH3_testdata[3657] */ + { 1829, 0x0000000000000000ULL, 0xB60AD19AE1577634ULL }, /* XSUM_XXH3_testdata[3658] */ + { 1829, 0x9E3779B185EBCA8DULL, 0x157BB6F64A0F8673ULL }, /* XSUM_XXH3_testdata[3659] */ + { 1830, 0x0000000000000000ULL, 0x23F7D3D78C9541A1ULL }, /* XSUM_XXH3_testdata[3660] */ + { 1830, 0x9E3779B185EBCA8DULL, 0x9AD85BDDCB257D60ULL }, /* XSUM_XXH3_testdata[3661] */ + { 1831, 0x0000000000000000ULL, 0x847C49F72E712CA0ULL }, /* XSUM_XXH3_testdata[3662] */ + { 1831, 0x9E3779B185EBCA8DULL, 0x21252068A044D273ULL }, /* XSUM_XXH3_testdata[3663] */ + { 1832, 0x0000000000000000ULL, 0x7E8D288D7E0903F5ULL }, /* XSUM_XXH3_testdata[3664] */ + { 1832, 0x9E3779B185EBCA8DULL, 0x52E4DFEE75669F66ULL }, /* XSUM_XXH3_testdata[3665] */ + { 1833, 0x0000000000000000ULL, 0x5B5035E08D3F74D5ULL }, /* XSUM_XXH3_testdata[3666] */ + { 1833, 0x9E3779B185EBCA8DULL, 0x0E0C589755838AC9ULL }, /* XSUM_XXH3_testdata[3667] */ + { 1834, 0x0000000000000000ULL, 0xE445EAFCAE8B614AULL }, /* XSUM_XXH3_testdata[3668] */ + { 1834, 0x9E3779B185EBCA8DULL, 0x95B44CB99239E72FULL }, /* XSUM_XXH3_testdata[3669] */ + { 1835, 0x0000000000000000ULL, 0xC8C5C290B847E543ULL }, /* XSUM_XXH3_testdata[3670] */ + { 1835, 0x9E3779B185EBCA8DULL, 0xA586269BB62C5529ULL }, /* XSUM_XXH3_testdata[3671] */ + { 1836, 0x0000000000000000ULL, 0x422C3F03566DF5ECULL }, /* XSUM_XXH3_testdata[3672] */ + { 1836, 0x9E3779B185EBCA8DULL, 0x89681B08FA4BE38BULL }, /* XSUM_XXH3_testdata[3673] */ + { 1837, 0x0000000000000000ULL, 0x771B68394D919D8AULL }, /* XSUM_XXH3_testdata[3674] */ + { 1837, 0x9E3779B185EBCA8DULL, 0x03C1D8F4A811E3DAULL }, /* XSUM_XXH3_testdata[3675] */ + { 1838, 0x0000000000000000ULL, 0xF40433C00031EA14ULL }, /* XSUM_XXH3_testdata[3676] */ + { 1838, 0x9E3779B185EBCA8DULL, 0xF4B53B2D1BB1D68BULL }, /* XSUM_XXH3_testdata[3677] */ + { 1839, 0x0000000000000000ULL, 0xC9CC543789796BAAULL }, /* XSUM_XXH3_testdata[3678] */ + { 1839, 0x9E3779B185EBCA8DULL, 0x7105D5BB6B8A528BULL }, /* XSUM_XXH3_testdata[3679] */ + { 1840, 0x0000000000000000ULL, 0xF33AED1F8EFD7B58ULL }, /* XSUM_XXH3_testdata[3680] */ + { 1840, 0x9E3779B185EBCA8DULL, 0xBE71CFF42EF4CFC8ULL }, /* XSUM_XXH3_testdata[3681] */ + { 1841, 0x0000000000000000ULL, 0x28ADBCC8145E1508ULL }, /* XSUM_XXH3_testdata[3682] */ + { 1841, 0x9E3779B185EBCA8DULL, 0x7E6E24EB1DADEDA6ULL }, /* XSUM_XXH3_testdata[3683] */ + { 1842, 0x0000000000000000ULL, 0x002E212FC7B05498ULL }, /* XSUM_XXH3_testdata[3684] */ + { 1842, 0x9E3779B185EBCA8DULL, 0x864A0B7A16D0DA18ULL }, /* XSUM_XXH3_testdata[3685] */ + { 1843, 0x0000000000000000ULL, 0x6BC99F64CD6F41C8ULL }, /* XSUM_XXH3_testdata[3686] */ + { 1843, 0x9E3779B185EBCA8DULL, 0xF2083C66596207F2ULL }, /* XSUM_XXH3_testdata[3687] */ + { 1844, 0x0000000000000000ULL, 0x2AD9AF1C60BF6D09ULL }, /* XSUM_XXH3_testdata[3688] */ + { 1844, 0x9E3779B185EBCA8DULL, 0xC652993AE2A03D4AULL }, /* XSUM_XXH3_testdata[3689] */ + { 1845, 0x0000000000000000ULL, 0x5A8D3D6113045AE5ULL }, /* XSUM_XXH3_testdata[3690] */ + { 1845, 0x9E3779B185EBCA8DULL, 0x1FD1717FD92B2C72ULL }, /* XSUM_XXH3_testdata[3691] */ + { 1846, 0x0000000000000000ULL, 0xF067AA10F9E0D8B4ULL }, /* XSUM_XXH3_testdata[3692] */ + { 1846, 0x9E3779B185EBCA8DULL, 0xFFDCFF68824087D2ULL }, /* XSUM_XXH3_testdata[3693] */ + { 1847, 0x0000000000000000ULL, 0x772F594F5ABEF00BULL }, /* XSUM_XXH3_testdata[3694] */ + { 1847, 0x9E3779B185EBCA8DULL, 0xA47B236BA4A955F9ULL }, /* XSUM_XXH3_testdata[3695] */ + { 1848, 0x0000000000000000ULL, 0xA32FF4FEAC75EEE7ULL }, /* XSUM_XXH3_testdata[3696] */ + { 1848, 0x9E3779B185EBCA8DULL, 0x8719FDF3277BADF9ULL }, /* XSUM_XXH3_testdata[3697] */ + { 1849, 0x0000000000000000ULL, 0x899A02F04A493E0CULL }, /* XSUM_XXH3_testdata[3698] */ + { 1849, 0x9E3779B185EBCA8DULL, 0x34E15C9E62826DFDULL }, /* XSUM_XXH3_testdata[3699] */ + { 1850, 0x0000000000000000ULL, 0x5FCE4519F7BA538DULL }, /* XSUM_XXH3_testdata[3700] */ + { 1850, 0x9E3779B185EBCA8DULL, 0x9AEEED50A300AE2BULL }, /* XSUM_XXH3_testdata[3701] */ + { 1851, 0x0000000000000000ULL, 0x95E54665921E36CAULL }, /* XSUM_XXH3_testdata[3702] */ + { 1851, 0x9E3779B185EBCA8DULL, 0xC815E5A3764647F5ULL }, /* XSUM_XXH3_testdata[3703] */ + { 1852, 0x0000000000000000ULL, 0x43E506A9B7C094C0ULL }, /* XSUM_XXH3_testdata[3704] */ + { 1852, 0x9E3779B185EBCA8DULL, 0xFBF266164EABEF0AULL }, /* XSUM_XXH3_testdata[3705] */ + { 1853, 0x0000000000000000ULL, 0x2DB4211DD510E86EULL }, /* XSUM_XXH3_testdata[3706] */ + { 1853, 0x9E3779B185EBCA8DULL, 0x2CEEB5600B4BCC1CULL }, /* XSUM_XXH3_testdata[3707] */ + { 1854, 0x0000000000000000ULL, 0xB2CA6E3EE5C50494ULL }, /* XSUM_XXH3_testdata[3708] */ + { 1854, 0x9E3779B185EBCA8DULL, 0xF15C1AD85681921DULL }, /* XSUM_XXH3_testdata[3709] */ + { 1855, 0x0000000000000000ULL, 0x3DEB6C55F0891670ULL }, /* XSUM_XXH3_testdata[3710] */ + { 1855, 0x9E3779B185EBCA8DULL, 0xA105D4D854F1E3D9ULL }, /* XSUM_XXH3_testdata[3711] */ + { 1856, 0x0000000000000000ULL, 0x9FA7215524A44729ULL }, /* XSUM_XXH3_testdata[3712] */ + { 1856, 0x9E3779B185EBCA8DULL, 0xB3B482DD93C605DCULL }, /* XSUM_XXH3_testdata[3713] */ + { 1857, 0x0000000000000000ULL, 0xF9AA0C2B77C7B098ULL }, /* XSUM_XXH3_testdata[3714] */ + { 1857, 0x9E3779B185EBCA8DULL, 0xA27D279C1F375EEBULL }, /* XSUM_XXH3_testdata[3715] */ + { 1858, 0x0000000000000000ULL, 0xDD47A0E487120F5DULL }, /* XSUM_XXH3_testdata[3716] */ + { 1858, 0x9E3779B185EBCA8DULL, 0x1478152E6CF1E737ULL }, /* XSUM_XXH3_testdata[3717] */ + { 1859, 0x0000000000000000ULL, 0x67CBC7046EBC929DULL }, /* XSUM_XXH3_testdata[3718] */ + { 1859, 0x9E3779B185EBCA8DULL, 0x1C83F3A23E47D4B9ULL }, /* XSUM_XXH3_testdata[3719] */ + { 1860, 0x0000000000000000ULL, 0xA46136157CF8C9F9ULL }, /* XSUM_XXH3_testdata[3720] */ + { 1860, 0x9E3779B185EBCA8DULL, 0xE48744287FB4D5C5ULL }, /* XSUM_XXH3_testdata[3721] */ + { 1861, 0x0000000000000000ULL, 0xC129EE2298A73F50ULL }, /* XSUM_XXH3_testdata[3722] */ + { 1861, 0x9E3779B185EBCA8DULL, 0xF262838AABBAD4DEULL }, /* XSUM_XXH3_testdata[3723] */ + { 1862, 0x0000000000000000ULL, 0x189A180ED477ACCCULL }, /* XSUM_XXH3_testdata[3724] */ + { 1862, 0x9E3779B185EBCA8DULL, 0xEAB7668F179E94B7ULL }, /* XSUM_XXH3_testdata[3725] */ + { 1863, 0x0000000000000000ULL, 0xB83E7242C9564BC7ULL }, /* XSUM_XXH3_testdata[3726] */ + { 1863, 0x9E3779B185EBCA8DULL, 0xFF76ED1FFA07DEDDULL }, /* XSUM_XXH3_testdata[3727] */ + { 1864, 0x0000000000000000ULL, 0x7E9B57A9205CA6D9ULL }, /* XSUM_XXH3_testdata[3728] */ + { 1864, 0x9E3779B185EBCA8DULL, 0x4B386CAB0DFAAA63ULL }, /* XSUM_XXH3_testdata[3729] */ + { 1865, 0x0000000000000000ULL, 0x4F20A2A31D556868ULL }, /* XSUM_XXH3_testdata[3730] */ + { 1865, 0x9E3779B185EBCA8DULL, 0x957575A3A566C448ULL }, /* XSUM_XXH3_testdata[3731] */ + { 1866, 0x0000000000000000ULL, 0xB80B9FDE4CC5E09EULL }, /* XSUM_XXH3_testdata[3732] */ + { 1866, 0x9E3779B185EBCA8DULL, 0x1926A559E960EEEBULL }, /* XSUM_XXH3_testdata[3733] */ + { 1867, 0x0000000000000000ULL, 0xABE4CFBD11F4C967ULL }, /* XSUM_XXH3_testdata[3734] */ + { 1867, 0x9E3779B185EBCA8DULL, 0x694405A422DA369BULL }, /* XSUM_XXH3_testdata[3735] */ + { 1868, 0x0000000000000000ULL, 0x752F23F575A73F89ULL }, /* XSUM_XXH3_testdata[3736] */ + { 1868, 0x9E3779B185EBCA8DULL, 0x60AD7DCD42AA4935ULL }, /* XSUM_XXH3_testdata[3737] */ + { 1869, 0x0000000000000000ULL, 0xFE8DC867E8A911E3ULL }, /* XSUM_XXH3_testdata[3738] */ + { 1869, 0x9E3779B185EBCA8DULL, 0xEF407DFF2E16475FULL }, /* XSUM_XXH3_testdata[3739] */ + { 1870, 0x0000000000000000ULL, 0xF26A15D6413E94DFULL }, /* XSUM_XXH3_testdata[3740] */ + { 1870, 0x9E3779B185EBCA8DULL, 0x98BB3A10DD853FA5ULL }, /* XSUM_XXH3_testdata[3741] */ + { 1871, 0x0000000000000000ULL, 0xA703FFFF8195BEA8ULL }, /* XSUM_XXH3_testdata[3742] */ + { 1871, 0x9E3779B185EBCA8DULL, 0x2EDFB2573E68AD84ULL }, /* XSUM_XXH3_testdata[3743] */ + { 1872, 0x0000000000000000ULL, 0x766D01020C397240ULL }, /* XSUM_XXH3_testdata[3744] */ + { 1872, 0x9E3779B185EBCA8DULL, 0x39B6B2DD5697BEE8ULL }, /* XSUM_XXH3_testdata[3745] */ + { 1873, 0x0000000000000000ULL, 0x1AC1619971B93634ULL }, /* XSUM_XXH3_testdata[3746] */ + { 1873, 0x9E3779B185EBCA8DULL, 0x4C0F85D7CBA25BC9ULL }, /* XSUM_XXH3_testdata[3747] */ + { 1874, 0x0000000000000000ULL, 0x722BFE7BA7F0B4A5ULL }, /* XSUM_XXH3_testdata[3748] */ + { 1874, 0x9E3779B185EBCA8DULL, 0x230BFCBD3C00DFD6ULL }, /* XSUM_XXH3_testdata[3749] */ + { 1875, 0x0000000000000000ULL, 0xB5128F81C9D02F72ULL }, /* XSUM_XXH3_testdata[3750] */ + { 1875, 0x9E3779B185EBCA8DULL, 0xC5597711385BC7BBULL }, /* XSUM_XXH3_testdata[3751] */ + { 1876, 0x0000000000000000ULL, 0xEAA9648EDD03C318ULL }, /* XSUM_XXH3_testdata[3752] */ + { 1876, 0x9E3779B185EBCA8DULL, 0xC3A99B3C5489E336ULL }, /* XSUM_XXH3_testdata[3753] */ + { 1877, 0x0000000000000000ULL, 0xB0E510F8207273ADULL }, /* XSUM_XXH3_testdata[3754] */ + { 1877, 0x9E3779B185EBCA8DULL, 0xD030F0F96F813BEBULL }, /* XSUM_XXH3_testdata[3755] */ + { 1878, 0x0000000000000000ULL, 0x5E5576D46AF9C904ULL }, /* XSUM_XXH3_testdata[3756] */ + { 1878, 0x9E3779B185EBCA8DULL, 0x17583BBF412503FCULL }, /* XSUM_XXH3_testdata[3757] */ + { 1879, 0x0000000000000000ULL, 0x5EB81FCAEA965C85ULL }, /* XSUM_XXH3_testdata[3758] */ + { 1879, 0x9E3779B185EBCA8DULL, 0xAA1BE1BD283937EAULL }, /* XSUM_XXH3_testdata[3759] */ + { 1880, 0x0000000000000000ULL, 0xAA63CE3CA93376D2ULL }, /* XSUM_XXH3_testdata[3760] */ + { 1880, 0x9E3779B185EBCA8DULL, 0x354CBFC83B83AB2EULL }, /* XSUM_XXH3_testdata[3761] */ + { 1881, 0x0000000000000000ULL, 0x3431D6AFE9D6D74CULL }, /* XSUM_XXH3_testdata[3762] */ + { 1881, 0x9E3779B185EBCA8DULL, 0x70BF6609A6D4A4D9ULL }, /* XSUM_XXH3_testdata[3763] */ + { 1882, 0x0000000000000000ULL, 0x27999F5F999B61EEULL }, /* XSUM_XXH3_testdata[3764] */ + { 1882, 0x9E3779B185EBCA8DULL, 0xD366661DF9D4BBC5ULL }, /* XSUM_XXH3_testdata[3765] */ + { 1883, 0x0000000000000000ULL, 0x04953291B73FE8A9ULL }, /* XSUM_XXH3_testdata[3766] */ + { 1883, 0x9E3779B185EBCA8DULL, 0x5C1C9106539ADEC1ULL }, /* XSUM_XXH3_testdata[3767] */ + { 1884, 0x0000000000000000ULL, 0xDA9A634B3F4FD842ULL }, /* XSUM_XXH3_testdata[3768] */ + { 1884, 0x9E3779B185EBCA8DULL, 0x785C24B03B223273ULL }, /* XSUM_XXH3_testdata[3769] */ + { 1885, 0x0000000000000000ULL, 0x1E7707FB2259E2DFULL }, /* XSUM_XXH3_testdata[3770] */ + { 1885, 0x9E3779B185EBCA8DULL, 0xA9E4A34986CBAA36ULL }, /* XSUM_XXH3_testdata[3771] */ + { 1886, 0x0000000000000000ULL, 0x873AE950C9AE1884ULL }, /* XSUM_XXH3_testdata[3772] */ + { 1886, 0x9E3779B185EBCA8DULL, 0x87813B855C1EABE6ULL }, /* XSUM_XXH3_testdata[3773] */ + { 1887, 0x0000000000000000ULL, 0x2AE6F56A9E3BAC52ULL }, /* XSUM_XXH3_testdata[3774] */ + { 1887, 0x9E3779B185EBCA8DULL, 0x58F979CE3AE3F648ULL }, /* XSUM_XXH3_testdata[3775] */ + { 1888, 0x0000000000000000ULL, 0x00D3E57E5091E324ULL }, /* XSUM_XXH3_testdata[3776] */ + { 1888, 0x9E3779B185EBCA8DULL, 0xF5F12441DF3AFC4EULL }, /* XSUM_XXH3_testdata[3777] */ + { 1889, 0x0000000000000000ULL, 0x45E9E33D7423F328ULL }, /* XSUM_XXH3_testdata[3778] */ + { 1889, 0x9E3779B185EBCA8DULL, 0x4D7D63CA388066DCULL }, /* XSUM_XXH3_testdata[3779] */ + { 1890, 0x0000000000000000ULL, 0xCA83E06BECA16192ULL }, /* XSUM_XXH3_testdata[3780] */ + { 1890, 0x9E3779B185EBCA8DULL, 0x924E356BE74971A7ULL }, /* XSUM_XXH3_testdata[3781] */ + { 1891, 0x0000000000000000ULL, 0x368A8B7FC030C715ULL }, /* XSUM_XXH3_testdata[3782] */ + { 1891, 0x9E3779B185EBCA8DULL, 0x2DE1521B82474633ULL }, /* XSUM_XXH3_testdata[3783] */ + { 1892, 0x0000000000000000ULL, 0xE61A3B7031938F5DULL }, /* XSUM_XXH3_testdata[3784] */ + { 1892, 0x9E3779B185EBCA8DULL, 0x6EB843F22F82EF19ULL }, /* XSUM_XXH3_testdata[3785] */ + { 1893, 0x0000000000000000ULL, 0xD0C5FD191971A365ULL }, /* XSUM_XXH3_testdata[3786] */ + { 1893, 0x9E3779B185EBCA8DULL, 0x4CD6C97E1F0F7FD8ULL }, /* XSUM_XXH3_testdata[3787] */ + { 1894, 0x0000000000000000ULL, 0x09789EFF6ABA0913ULL }, /* XSUM_XXH3_testdata[3788] */ + { 1894, 0x9E3779B185EBCA8DULL, 0x81F68FB173855297ULL }, /* XSUM_XXH3_testdata[3789] */ + { 1895, 0x0000000000000000ULL, 0x5D2D99D528130792ULL }, /* XSUM_XXH3_testdata[3790] */ + { 1895, 0x9E3779B185EBCA8DULL, 0xFC66260FD442A50DULL }, /* XSUM_XXH3_testdata[3791] */ + { 1896, 0x0000000000000000ULL, 0x0896D937983ED0FFULL }, /* XSUM_XXH3_testdata[3792] */ + { 1896, 0x9E3779B185EBCA8DULL, 0xF8EE063306B3A591ULL }, /* XSUM_XXH3_testdata[3793] */ + { 1897, 0x0000000000000000ULL, 0x976FDED61A373B5FULL }, /* XSUM_XXH3_testdata[3794] */ + { 1897, 0x9E3779B185EBCA8DULL, 0xC4D3803ECC16C1CFULL }, /* XSUM_XXH3_testdata[3795] */ + { 1898, 0x0000000000000000ULL, 0xE434D792D95E6506ULL }, /* XSUM_XXH3_testdata[3796] */ + { 1898, 0x9E3779B185EBCA8DULL, 0xA0A8262D8842A468ULL }, /* XSUM_XXH3_testdata[3797] */ + { 1899, 0x0000000000000000ULL, 0x7F8A795DCCF902F9ULL }, /* XSUM_XXH3_testdata[3798] */ + { 1899, 0x9E3779B185EBCA8DULL, 0x0FD59F584C5547BCULL }, /* XSUM_XXH3_testdata[3799] */ + { 1900, 0x0000000000000000ULL, 0x3360ED3DE59C7D92ULL }, /* XSUM_XXH3_testdata[3800] */ + { 1900, 0x9E3779B185EBCA8DULL, 0x7AA5BC6D3D07DCC3ULL }, /* XSUM_XXH3_testdata[3801] */ + { 1901, 0x0000000000000000ULL, 0x919932A3369ADA54ULL }, /* XSUM_XXH3_testdata[3802] */ + { 1901, 0x9E3779B185EBCA8DULL, 0x0458A2B338491AC8ULL }, /* XSUM_XXH3_testdata[3803] */ + { 1902, 0x0000000000000000ULL, 0xB83B1B9968AEE18BULL }, /* XSUM_XXH3_testdata[3804] */ + { 1902, 0x9E3779B185EBCA8DULL, 0x84DB804F3D99B348ULL }, /* XSUM_XXH3_testdata[3805] */ + { 1903, 0x0000000000000000ULL, 0x0354BB280D4691CFULL }, /* XSUM_XXH3_testdata[3806] */ + { 1903, 0x9E3779B185EBCA8DULL, 0x0FBA9E0F80E2FFCEULL }, /* XSUM_XXH3_testdata[3807] */ + { 1904, 0x0000000000000000ULL, 0x9A4FAF3574E774C7ULL }, /* XSUM_XXH3_testdata[3808] */ + { 1904, 0x9E3779B185EBCA8DULL, 0x5BBADF72D1AF73DDULL }, /* XSUM_XXH3_testdata[3809] */ + { 1905, 0x0000000000000000ULL, 0xA0BE0F26F6859F41ULL }, /* XSUM_XXH3_testdata[3810] */ + { 1905, 0x9E3779B185EBCA8DULL, 0xC3644C218B16EE74ULL }, /* XSUM_XXH3_testdata[3811] */ + { 1906, 0x0000000000000000ULL, 0x835FE0870E1F50ACULL }, /* XSUM_XXH3_testdata[3812] */ + { 1906, 0x9E3779B185EBCA8DULL, 0x12668D958327E17EULL }, /* XSUM_XXH3_testdata[3813] */ + { 1907, 0x0000000000000000ULL, 0x14C1BDF6BF0838E7ULL }, /* XSUM_XXH3_testdata[3814] */ + { 1907, 0x9E3779B185EBCA8DULL, 0x9808FA64F8C43DCCULL }, /* XSUM_XXH3_testdata[3815] */ + { 1908, 0x0000000000000000ULL, 0x2777D49152560322ULL }, /* XSUM_XXH3_testdata[3816] */ + { 1908, 0x9E3779B185EBCA8DULL, 0xF9D863CC2EAA8645ULL }, /* XSUM_XXH3_testdata[3817] */ + { 1909, 0x0000000000000000ULL, 0xF3C16FACEAC5439BULL }, /* XSUM_XXH3_testdata[3818] */ + { 1909, 0x9E3779B185EBCA8DULL, 0x97A1E6A6762D1DDBULL }, /* XSUM_XXH3_testdata[3819] */ + { 1910, 0x0000000000000000ULL, 0x0A392BBC27FDBF98ULL }, /* XSUM_XXH3_testdata[3820] */ + { 1910, 0x9E3779B185EBCA8DULL, 0x37C04E987336EDA6ULL }, /* XSUM_XXH3_testdata[3821] */ + { 1911, 0x0000000000000000ULL, 0x3F6D662DCBC36DA0ULL }, /* XSUM_XXH3_testdata[3822] */ + { 1911, 0x9E3779B185EBCA8DULL, 0x7099B12412BF2F7BULL }, /* XSUM_XXH3_testdata[3823] */ + { 1912, 0x0000000000000000ULL, 0xB3DD8A6812F31E0CULL }, /* XSUM_XXH3_testdata[3824] */ + { 1912, 0x9E3779B185EBCA8DULL, 0x2D13EB5B4D9B4FC8ULL }, /* XSUM_XXH3_testdata[3825] */ + { 1913, 0x0000000000000000ULL, 0x37306315E558B82BULL }, /* XSUM_XXH3_testdata[3826] */ + { 1913, 0x9E3779B185EBCA8DULL, 0x238A8982B9E8E871ULL }, /* XSUM_XXH3_testdata[3827] */ + { 1914, 0x0000000000000000ULL, 0xAF3B2494587FDF48ULL }, /* XSUM_XXH3_testdata[3828] */ + { 1914, 0x9E3779B185EBCA8DULL, 0x305D0629AD8F4388ULL }, /* XSUM_XXH3_testdata[3829] */ + { 1915, 0x0000000000000000ULL, 0x865B3906323DA850ULL }, /* XSUM_XXH3_testdata[3830] */ + { 1915, 0x9E3779B185EBCA8DULL, 0x4162EEA8EDBA1E21ULL }, /* XSUM_XXH3_testdata[3831] */ + { 1916, 0x0000000000000000ULL, 0xBB0EB0C7C8E0D486ULL }, /* XSUM_XXH3_testdata[3832] */ + { 1916, 0x9E3779B185EBCA8DULL, 0x350BA3C51E6C98A9ULL }, /* XSUM_XXH3_testdata[3833] */ + { 1917, 0x0000000000000000ULL, 0x2FFE17BAF474B808ULL }, /* XSUM_XXH3_testdata[3834] */ + { 1917, 0x9E3779B185EBCA8DULL, 0x1032DFBCE2ECE9CEULL }, /* XSUM_XXH3_testdata[3835] */ + { 1918, 0x0000000000000000ULL, 0x2DDC81ACBC637995ULL }, /* XSUM_XXH3_testdata[3836] */ + { 1918, 0x9E3779B185EBCA8DULL, 0xAF01E545CFF1AA6EULL }, /* XSUM_XXH3_testdata[3837] */ + { 1919, 0x0000000000000000ULL, 0x9D7578BBBE43A0FBULL }, /* XSUM_XXH3_testdata[3838] */ + { 1919, 0x9E3779B185EBCA8DULL, 0xCF9BB65DBDC2A633ULL }, /* XSUM_XXH3_testdata[3839] */ + { 1920, 0x0000000000000000ULL, 0xA6E801F9E975D684ULL }, /* XSUM_XXH3_testdata[3840] */ + { 1920, 0x9E3779B185EBCA8DULL, 0x8BBEE5F1AA06521EULL }, /* XSUM_XXH3_testdata[3841] */ + { 1921, 0x0000000000000000ULL, 0x425BD2F47593A7DDULL }, /* XSUM_XXH3_testdata[3842] */ + { 1921, 0x9E3779B185EBCA8DULL, 0x00D38A9FCCE4BDD8ULL }, /* XSUM_XXH3_testdata[3843] */ + { 1922, 0x0000000000000000ULL, 0x7C712A084EA39B08ULL }, /* XSUM_XXH3_testdata[3844] */ + { 1922, 0x9E3779B185EBCA8DULL, 0x9396761C649047ACULL }, /* XSUM_XXH3_testdata[3845] */ + { 1923, 0x0000000000000000ULL, 0x7FADD2CCED07887AULL }, /* XSUM_XXH3_testdata[3846] */ + { 1923, 0x9E3779B185EBCA8DULL, 0xA3C5D6FD9F5A6039ULL }, /* XSUM_XXH3_testdata[3847] */ + { 1924, 0x0000000000000000ULL, 0x4D43B69CEF7F96E4ULL }, /* XSUM_XXH3_testdata[3848] */ + { 1924, 0x9E3779B185EBCA8DULL, 0xC17248AE907D7638ULL }, /* XSUM_XXH3_testdata[3849] */ + { 1925, 0x0000000000000000ULL, 0x9CF28859FABC409CULL }, /* XSUM_XXH3_testdata[3850] */ + { 1925, 0x9E3779B185EBCA8DULL, 0x29BAE4393EC02830ULL }, /* XSUM_XXH3_testdata[3851] */ + { 1926, 0x0000000000000000ULL, 0x87AE82A722CC651EULL }, /* XSUM_XXH3_testdata[3852] */ + { 1926, 0x9E3779B185EBCA8DULL, 0x2D446AC4C7B2183CULL }, /* XSUM_XXH3_testdata[3853] */ + { 1927, 0x0000000000000000ULL, 0x22864029998C8DCCULL }, /* XSUM_XXH3_testdata[3854] */ + { 1927, 0x9E3779B185EBCA8DULL, 0xF6E995A376FDE0BFULL }, /* XSUM_XXH3_testdata[3855] */ + { 1928, 0x0000000000000000ULL, 0x1297094001BEAB91ULL }, /* XSUM_XXH3_testdata[3856] */ + { 1928, 0x9E3779B185EBCA8DULL, 0x995E4F3E2717100EULL }, /* XSUM_XXH3_testdata[3857] */ + { 1929, 0x0000000000000000ULL, 0x11A056A3E27BF8DBULL }, /* XSUM_XXH3_testdata[3858] */ + { 1929, 0x9E3779B185EBCA8DULL, 0xCDDE483316829F76ULL }, /* XSUM_XXH3_testdata[3859] */ + { 1930, 0x0000000000000000ULL, 0x504734057003512DULL }, /* XSUM_XXH3_testdata[3860] */ + { 1930, 0x9E3779B185EBCA8DULL, 0x490C42431DBE8CC8ULL }, /* XSUM_XXH3_testdata[3861] */ + { 1931, 0x0000000000000000ULL, 0x1CB5E6EFAC6E4E63ULL }, /* XSUM_XXH3_testdata[3862] */ + { 1931, 0x9E3779B185EBCA8DULL, 0xC2F750FABD205E94ULL }, /* XSUM_XXH3_testdata[3863] */ + { 1932, 0x0000000000000000ULL, 0x6B7812A64BD91368ULL }, /* XSUM_XXH3_testdata[3864] */ + { 1932, 0x9E3779B185EBCA8DULL, 0xC25F2743431082ECULL }, /* XSUM_XXH3_testdata[3865] */ + { 1933, 0x0000000000000000ULL, 0xE1283D2931CD27EFULL }, /* XSUM_XXH3_testdata[3866] */ + { 1933, 0x9E3779B185EBCA8DULL, 0x31F20A19301F485EULL }, /* XSUM_XXH3_testdata[3867] */ + { 1934, 0x0000000000000000ULL, 0x640B44E7233CD7B5ULL }, /* XSUM_XXH3_testdata[3868] */ + { 1934, 0x9E3779B185EBCA8DULL, 0x42C3703CE5E02828ULL }, /* XSUM_XXH3_testdata[3869] */ + { 1935, 0x0000000000000000ULL, 0x7DCDD089C207F052ULL }, /* XSUM_XXH3_testdata[3870] */ + { 1935, 0x9E3779B185EBCA8DULL, 0x97EB7CB9F13AE976ULL }, /* XSUM_XXH3_testdata[3871] */ + { 1936, 0x0000000000000000ULL, 0xF3D245265FAA9991ULL }, /* XSUM_XXH3_testdata[3872] */ + { 1936, 0x9E3779B185EBCA8DULL, 0x55FEE708A75B7E34ULL }, /* XSUM_XXH3_testdata[3873] */ + { 1937, 0x0000000000000000ULL, 0xC239370CC5CE1B28ULL }, /* XSUM_XXH3_testdata[3874] */ + { 1937, 0x9E3779B185EBCA8DULL, 0x73499D53BC365C32ULL }, /* XSUM_XXH3_testdata[3875] */ + { 1938, 0x0000000000000000ULL, 0xE6FB9BEDD99FCF8DULL }, /* XSUM_XXH3_testdata[3876] */ + { 1938, 0x9E3779B185EBCA8DULL, 0xE9DDE1CF171E8CD8ULL }, /* XSUM_XXH3_testdata[3877] */ + { 1939, 0x0000000000000000ULL, 0x1E29637C57820A30ULL }, /* XSUM_XXH3_testdata[3878] */ + { 1939, 0x9E3779B185EBCA8DULL, 0x8F40C42CF2E44B6CULL }, /* XSUM_XXH3_testdata[3879] */ + { 1940, 0x0000000000000000ULL, 0xABF025831D6ED30EULL }, /* XSUM_XXH3_testdata[3880] */ + { 1940, 0x9E3779B185EBCA8DULL, 0xCEF6FA8C19F861E4ULL }, /* XSUM_XXH3_testdata[3881] */ + { 1941, 0x0000000000000000ULL, 0x282F14ADD9FEB282ULL }, /* XSUM_XXH3_testdata[3882] */ + { 1941, 0x9E3779B185EBCA8DULL, 0x4017524529E35BD8ULL }, /* XSUM_XXH3_testdata[3883] */ + { 1942, 0x0000000000000000ULL, 0x527F417340C0F012ULL }, /* XSUM_XXH3_testdata[3884] */ + { 1942, 0x9E3779B185EBCA8DULL, 0xEB885704B63C9BBCULL }, /* XSUM_XXH3_testdata[3885] */ + { 1943, 0x0000000000000000ULL, 0xB213031B62D44FF8ULL }, /* XSUM_XXH3_testdata[3886] */ + { 1943, 0x9E3779B185EBCA8DULL, 0x47FB300EB53CF271ULL }, /* XSUM_XXH3_testdata[3887] */ + { 1944, 0x0000000000000000ULL, 0x3DB7F3DAA5CF5975ULL }, /* XSUM_XXH3_testdata[3888] */ + { 1944, 0x9E3779B185EBCA8DULL, 0x52E86537BAB05598ULL }, /* XSUM_XXH3_testdata[3889] */ + { 1945, 0x0000000000000000ULL, 0x840658A5716284C9ULL }, /* XSUM_XXH3_testdata[3890] */ + { 1945, 0x9E3779B185EBCA8DULL, 0x3CDB39929E37AA06ULL }, /* XSUM_XXH3_testdata[3891] */ + { 1946, 0x0000000000000000ULL, 0xEB5F75B38181CF28ULL }, /* XSUM_XXH3_testdata[3892] */ + { 1946, 0x9E3779B185EBCA8DULL, 0x356AD1AC369381DFULL }, /* XSUM_XXH3_testdata[3893] */ + { 1947, 0x0000000000000000ULL, 0x2CB27006CF774852ULL }, /* XSUM_XXH3_testdata[3894] */ + { 1947, 0x9E3779B185EBCA8DULL, 0x003C04ACA46EE27FULL }, /* XSUM_XXH3_testdata[3895] */ + { 1948, 0x0000000000000000ULL, 0x03545653D2365723ULL }, /* XSUM_XXH3_testdata[3896] */ + { 1948, 0x9E3779B185EBCA8DULL, 0xDC18F3AC5BC13200ULL }, /* XSUM_XXH3_testdata[3897] */ + { 1949, 0x0000000000000000ULL, 0x9CF72BF218CFEC9BULL }, /* XSUM_XXH3_testdata[3898] */ + { 1949, 0x9E3779B185EBCA8DULL, 0x276C49361D2E49D7ULL }, /* XSUM_XXH3_testdata[3899] */ + { 1950, 0x0000000000000000ULL, 0x3B41F6C3526966F9ULL }, /* XSUM_XXH3_testdata[3900] */ + { 1950, 0x9E3779B185EBCA8DULL, 0xEE511A62306A4A89ULL }, /* XSUM_XXH3_testdata[3901] */ + { 1951, 0x0000000000000000ULL, 0xC4365505457F718CULL }, /* XSUM_XXH3_testdata[3902] */ + { 1951, 0x9E3779B185EBCA8DULL, 0x5EC0F8F1B23D7D85ULL }, /* XSUM_XXH3_testdata[3903] */ + { 1952, 0x0000000000000000ULL, 0x5DDB1030B7232D1FULL }, /* XSUM_XXH3_testdata[3904] */ + { 1952, 0x9E3779B185EBCA8DULL, 0xA268820F12B866FAULL }, /* XSUM_XXH3_testdata[3905] */ + { 1953, 0x0000000000000000ULL, 0x7FF90349002641B7ULL }, /* XSUM_XXH3_testdata[3906] */ + { 1953, 0x9E3779B185EBCA8DULL, 0xEF06F23A1D869CDDULL }, /* XSUM_XXH3_testdata[3907] */ + { 1954, 0x0000000000000000ULL, 0xC1558AF0C93D89CDULL }, /* XSUM_XXH3_testdata[3908] */ + { 1954, 0x9E3779B185EBCA8DULL, 0xDE4FAB755C44BB20ULL }, /* XSUM_XXH3_testdata[3909] */ + { 1955, 0x0000000000000000ULL, 0x3FDA69020153BEA9ULL }, /* XSUM_XXH3_testdata[3910] */ + { 1955, 0x9E3779B185EBCA8DULL, 0x27B6372C52BC90C3ULL }, /* XSUM_XXH3_testdata[3911] */ + { 1956, 0x0000000000000000ULL, 0x6E064C75A51650B1ULL }, /* XSUM_XXH3_testdata[3912] */ + { 1956, 0x9E3779B185EBCA8DULL, 0xBEBB2584D460BD29ULL }, /* XSUM_XXH3_testdata[3913] */ + { 1957, 0x0000000000000000ULL, 0xC366A7C357FFEF0BULL }, /* XSUM_XXH3_testdata[3914] */ + { 1957, 0x9E3779B185EBCA8DULL, 0xB57E9DC331ED3EF3ULL }, /* XSUM_XXH3_testdata[3915] */ + { 1958, 0x0000000000000000ULL, 0x8F06933F34934B99ULL }, /* XSUM_XXH3_testdata[3916] */ + { 1958, 0x9E3779B185EBCA8DULL, 0x2E9B0E4BEA0FD06CULL }, /* XSUM_XXH3_testdata[3917] */ + { 1959, 0x0000000000000000ULL, 0xF12971CE1F74C048ULL }, /* XSUM_XXH3_testdata[3918] */ + { 1959, 0x9E3779B185EBCA8DULL, 0x0CC667CEB5F97FC8ULL }, /* XSUM_XXH3_testdata[3919] */ + { 1960, 0x0000000000000000ULL, 0x004A99DC027F4F6AULL }, /* XSUM_XXH3_testdata[3920] */ + { 1960, 0x9E3779B185EBCA8DULL, 0x77E9A7955331A07CULL }, /* XSUM_XXH3_testdata[3921] */ + { 1961, 0x0000000000000000ULL, 0xFC9E3E034471B0B1ULL }, /* XSUM_XXH3_testdata[3922] */ + { 1961, 0x9E3779B185EBCA8DULL, 0xEEB603E711A16ECFULL }, /* XSUM_XXH3_testdata[3923] */ + { 1962, 0x0000000000000000ULL, 0xE15EAEB8E35FA693ULL }, /* XSUM_XXH3_testdata[3924] */ + { 1962, 0x9E3779B185EBCA8DULL, 0x494F4A97DEB9DEC2ULL }, /* XSUM_XXH3_testdata[3925] */ + { 1963, 0x0000000000000000ULL, 0x0520FEC1D624BD75ULL }, /* XSUM_XXH3_testdata[3926] */ + { 1963, 0x9E3779B185EBCA8DULL, 0xF4FE41CC1C78E92EULL }, /* XSUM_XXH3_testdata[3927] */ + { 1964, 0x0000000000000000ULL, 0x188EAA4B37E8886EULL }, /* XSUM_XXH3_testdata[3928] */ + { 1964, 0x9E3779B185EBCA8DULL, 0xB25E366558EAAC28ULL }, /* XSUM_XXH3_testdata[3929] */ + { 1965, 0x0000000000000000ULL, 0xEFF8375D71EA92D4ULL }, /* XSUM_XXH3_testdata[3930] */ + { 1965, 0x9E3779B185EBCA8DULL, 0xE8F4D7DD66D4A35BULL }, /* XSUM_XXH3_testdata[3931] */ + { 1966, 0x0000000000000000ULL, 0x368D2A130B64710FULL }, /* XSUM_XXH3_testdata[3932] */ + { 1966, 0x9E3779B185EBCA8DULL, 0xBE0FA933D7FD6001ULL }, /* XSUM_XXH3_testdata[3933] */ + { 1967, 0x0000000000000000ULL, 0xDE5E1FF7BF3E9F55ULL }, /* XSUM_XXH3_testdata[3934] */ + { 1967, 0x9E3779B185EBCA8DULL, 0xD00C19EE6414778DULL }, /* XSUM_XXH3_testdata[3935] */ + { 1968, 0x0000000000000000ULL, 0x27CD7EA8B820E3F8ULL }, /* XSUM_XXH3_testdata[3936] */ + { 1968, 0x9E3779B185EBCA8DULL, 0x97EB78821BC00C9FULL }, /* XSUM_XXH3_testdata[3937] */ + { 1969, 0x0000000000000000ULL, 0x3819844D9D7EA49BULL }, /* XSUM_XXH3_testdata[3938] */ + { 1969, 0x9E3779B185EBCA8DULL, 0xE5F841A89A45610DULL }, /* XSUM_XXH3_testdata[3939] */ + { 1970, 0x0000000000000000ULL, 0x113F378BABB8D222ULL }, /* XSUM_XXH3_testdata[3940] */ + { 1970, 0x9E3779B185EBCA8DULL, 0xCF4641E5FF36CD1FULL }, /* XSUM_XXH3_testdata[3941] */ + { 1971, 0x0000000000000000ULL, 0x9E48DB0D4CEC7023ULL }, /* XSUM_XXH3_testdata[3942] */ + { 1971, 0x9E3779B185EBCA8DULL, 0x27DCBB1B5C554B88ULL }, /* XSUM_XXH3_testdata[3943] */ + { 1972, 0x0000000000000000ULL, 0xDA2A9985D0E6AF05ULL }, /* XSUM_XXH3_testdata[3944] */ + { 1972, 0x9E3779B185EBCA8DULL, 0x725D63AB0031FBD9ULL }, /* XSUM_XXH3_testdata[3945] */ + { 1973, 0x0000000000000000ULL, 0x2FD8A1FADBE01596ULL }, /* XSUM_XXH3_testdata[3946] */ + { 1973, 0x9E3779B185EBCA8DULL, 0x6FA07F9987D2ECDCULL }, /* XSUM_XXH3_testdata[3947] */ + { 1974, 0x0000000000000000ULL, 0xD3A2F52B332A2A0BULL }, /* XSUM_XXH3_testdata[3948] */ + { 1974, 0x9E3779B185EBCA8DULL, 0x76C832BF7344FCDEULL }, /* XSUM_XXH3_testdata[3949] */ + { 1975, 0x0000000000000000ULL, 0xDC36A1336C937579ULL }, /* XSUM_XXH3_testdata[3950] */ + { 1975, 0x9E3779B185EBCA8DULL, 0xD08CE0443333A2A7ULL }, /* XSUM_XXH3_testdata[3951] */ + { 1976, 0x0000000000000000ULL, 0xAD661BDAC1B79FA4ULL }, /* XSUM_XXH3_testdata[3952] */ + { 1976, 0x9E3779B185EBCA8DULL, 0x5B5A77C1083D92F2ULL }, /* XSUM_XXH3_testdata[3953] */ + { 1977, 0x0000000000000000ULL, 0x1AE078E65B90BDC7ULL }, /* XSUM_XXH3_testdata[3954] */ + { 1977, 0x9E3779B185EBCA8DULL, 0x8973E397727E94E8ULL }, /* XSUM_XXH3_testdata[3955] */ + { 1978, 0x0000000000000000ULL, 0x2B0EF2DEBF6905C9ULL }, /* XSUM_XXH3_testdata[3956] */ + { 1978, 0x9E3779B185EBCA8DULL, 0xD6E2399A90B12AACULL }, /* XSUM_XXH3_testdata[3957] */ + { 1979, 0x0000000000000000ULL, 0x058D6790B1E8B641ULL }, /* XSUM_XXH3_testdata[3958] */ + { 1979, 0x9E3779B185EBCA8DULL, 0x281131D3DABF1AF3ULL }, /* XSUM_XXH3_testdata[3959] */ + { 1980, 0x0000000000000000ULL, 0x562B194F83DA7A62ULL }, /* XSUM_XXH3_testdata[3960] */ + { 1980, 0x9E3779B185EBCA8DULL, 0xDCBA1086B2BB7606ULL }, /* XSUM_XXH3_testdata[3961] */ + { 1981, 0x0000000000000000ULL, 0x07C8B39420943D33ULL }, /* XSUM_XXH3_testdata[3962] */ + { 1981, 0x9E3779B185EBCA8DULL, 0x05694B9506E958BDULL }, /* XSUM_XXH3_testdata[3963] */ + { 1982, 0x0000000000000000ULL, 0xC18F07D9E25725B9ULL }, /* XSUM_XXH3_testdata[3964] */ + { 1982, 0x9E3779B185EBCA8DULL, 0xEB5734AF6F449CF3ULL }, /* XSUM_XXH3_testdata[3965] */ + { 1983, 0x0000000000000000ULL, 0x5F9FA6455DED3D7DULL }, /* XSUM_XXH3_testdata[3966] */ + { 1983, 0x9E3779B185EBCA8DULL, 0x3311F0370651A269ULL }, /* XSUM_XXH3_testdata[3967] */ + { 1984, 0x0000000000000000ULL, 0x67F7098725D64EFBULL }, /* XSUM_XXH3_testdata[3968] */ + { 1984, 0x9E3779B185EBCA8DULL, 0x9EA022F9495C6EAEULL }, /* XSUM_XXH3_testdata[3969] */ + { 1985, 0x0000000000000000ULL, 0xD7E199EAF2C77E2FULL }, /* XSUM_XXH3_testdata[3970] */ + { 1985, 0x9E3779B185EBCA8DULL, 0x8177A5B7825B3C18ULL }, /* XSUM_XXH3_testdata[3971] */ + { 1986, 0x0000000000000000ULL, 0x1D8ED4C85F51E2B3ULL }, /* XSUM_XXH3_testdata[3972] */ + { 1986, 0x9E3779B185EBCA8DULL, 0x6AA78118C3472702ULL }, /* XSUM_XXH3_testdata[3973] */ + { 1987, 0x0000000000000000ULL, 0xEAF6F48977C9F687ULL }, /* XSUM_XXH3_testdata[3974] */ + { 1987, 0x9E3779B185EBCA8DULL, 0x42FDED3727B7302EULL }, /* XSUM_XXH3_testdata[3975] */ + { 1988, 0x0000000000000000ULL, 0x767F809C56CFAB14ULL }, /* XSUM_XXH3_testdata[3976] */ + { 1988, 0x9E3779B185EBCA8DULL, 0xBDE437D976206DBCULL }, /* XSUM_XXH3_testdata[3977] */ + { 1989, 0x0000000000000000ULL, 0x888CEFE06213FCA3ULL }, /* XSUM_XXH3_testdata[3978] */ + { 1989, 0x9E3779B185EBCA8DULL, 0x41A2B968B085D690ULL }, /* XSUM_XXH3_testdata[3979] */ + { 1990, 0x0000000000000000ULL, 0xB169E18197F5DC9EULL }, /* XSUM_XXH3_testdata[3980] */ + { 1990, 0x9E3779B185EBCA8DULL, 0xEB63FBD3AE339EA3ULL }, /* XSUM_XXH3_testdata[3981] */ + { 1991, 0x0000000000000000ULL, 0xFAD4E62400E73579ULL }, /* XSUM_XXH3_testdata[3982] */ + { 1991, 0x9E3779B185EBCA8DULL, 0x16A527D69EE9489AULL }, /* XSUM_XXH3_testdata[3983] */ + { 1992, 0x0000000000000000ULL, 0x1E827B8BA221E555ULL }, /* XSUM_XXH3_testdata[3984] */ + { 1992, 0x9E3779B185EBCA8DULL, 0x1C31224954EAF715ULL }, /* XSUM_XXH3_testdata[3985] */ + { 1993, 0x0000000000000000ULL, 0x87C424B6FF539845ULL }, /* XSUM_XXH3_testdata[3986] */ + { 1993, 0x9E3779B185EBCA8DULL, 0xCCD894F35873EE67ULL }, /* XSUM_XXH3_testdata[3987] */ + { 1994, 0x0000000000000000ULL, 0x94F1B7BA2BA62F72ULL }, /* XSUM_XXH3_testdata[3988] */ + { 1994, 0x9E3779B185EBCA8DULL, 0x8E7A8E6E14BA57E6ULL }, /* XSUM_XXH3_testdata[3989] */ + { 1995, 0x0000000000000000ULL, 0xE40874ED5070A9D2ULL }, /* XSUM_XXH3_testdata[3990] */ + { 1995, 0x9E3779B185EBCA8DULL, 0x83D414781EB5C843ULL }, /* XSUM_XXH3_testdata[3991] */ + { 1996, 0x0000000000000000ULL, 0xE66ECF80A62A9B4EULL }, /* XSUM_XXH3_testdata[3992] */ + { 1996, 0x9E3779B185EBCA8DULL, 0xB6AD15FEDE29D715ULL }, /* XSUM_XXH3_testdata[3993] */ + { 1997, 0x0000000000000000ULL, 0xC74E7760D7362526ULL }, /* XSUM_XXH3_testdata[3994] */ + { 1997, 0x9E3779B185EBCA8DULL, 0xA860AEED4A0A0D52ULL }, /* XSUM_XXH3_testdata[3995] */ + { 1998, 0x0000000000000000ULL, 0x13D55387CE54E1FFULL }, /* XSUM_XXH3_testdata[3996] */ + { 1998, 0x9E3779B185EBCA8DULL, 0xE7956FF8D3AB8D98ULL }, /* XSUM_XXH3_testdata[3997] */ + { 1999, 0x0000000000000000ULL, 0x7264D216CE954BC8ULL }, /* XSUM_XXH3_testdata[3998] */ + { 1999, 0x9E3779B185EBCA8DULL, 0xAC51184AD530F754ULL }, /* XSUM_XXH3_testdata[3999] */ + { 2000, 0x0000000000000000ULL, 0xCB004B57E2C68C3CULL }, /* XSUM_XXH3_testdata[4000] */ + { 2000, 0x9E3779B185EBCA8DULL, 0xA42E90FB128E2048ULL }, /* XSUM_XXH3_testdata[4001] */ + { 2001, 0x0000000000000000ULL, 0x1E1F42B1994C1879ULL }, /* XSUM_XXH3_testdata[4002] */ + { 2001, 0x9E3779B185EBCA8DULL, 0x03DA0D7A9420CF61ULL }, /* XSUM_XXH3_testdata[4003] */ + { 2002, 0x0000000000000000ULL, 0x664FA560D857B113ULL }, /* XSUM_XXH3_testdata[4004] */ + { 2002, 0x9E3779B185EBCA8DULL, 0x05C79467E8C02D61ULL }, /* XSUM_XXH3_testdata[4005] */ + { 2003, 0x0000000000000000ULL, 0xE079D54B05F58408ULL }, /* XSUM_XXH3_testdata[4006] */ + { 2003, 0x9E3779B185EBCA8DULL, 0x834B08E509012644ULL }, /* XSUM_XXH3_testdata[4007] */ + { 2004, 0x0000000000000000ULL, 0x52DF2A94AD538041ULL }, /* XSUM_XXH3_testdata[4008] */ + { 2004, 0x9E3779B185EBCA8DULL, 0x504B2AA2E2217292ULL }, /* XSUM_XXH3_testdata[4009] */ + { 2005, 0x0000000000000000ULL, 0x6AE5C974231CF0EBULL }, /* XSUM_XXH3_testdata[4010] */ + { 2005, 0x9E3779B185EBCA8DULL, 0xEE5B63536540CCA8ULL }, /* XSUM_XXH3_testdata[4011] */ + { 2006, 0x0000000000000000ULL, 0xB3D3F97A23341F2BULL }, /* XSUM_XXH3_testdata[4012] */ + { 2006, 0x9E3779B185EBCA8DULL, 0x3539ACA03EA1E19FULL }, /* XSUM_XXH3_testdata[4013] */ + { 2007, 0x0000000000000000ULL, 0x14496363E69C4C5BULL }, /* XSUM_XXH3_testdata[4014] */ + { 2007, 0x9E3779B185EBCA8DULL, 0xC19C6F8FD60CCEFDULL }, /* XSUM_XXH3_testdata[4015] */ + { 2008, 0x0000000000000000ULL, 0xFCCDF239ED44A88EULL }, /* XSUM_XXH3_testdata[4016] */ + { 2008, 0x9E3779B185EBCA8DULL, 0x2EC7A1B0B82533F0ULL }, /* XSUM_XXH3_testdata[4017] */ + { 2009, 0x0000000000000000ULL, 0x6876FDB5237590AFULL }, /* XSUM_XXH3_testdata[4018] */ + { 2009, 0x9E3779B185EBCA8DULL, 0xC72D0F20062CCDB8ULL }, /* XSUM_XXH3_testdata[4019] */ + { 2010, 0x0000000000000000ULL, 0xE2C785419211E98DULL }, /* XSUM_XXH3_testdata[4020] */ + { 2010, 0x9E3779B185EBCA8DULL, 0x5622588346C1BC8BULL }, /* XSUM_XXH3_testdata[4021] */ + { 2011, 0x0000000000000000ULL, 0xA3D767040F0D0661ULL }, /* XSUM_XXH3_testdata[4022] */ + { 2011, 0x9E3779B185EBCA8DULL, 0xFCA2FA56B540FADBULL }, /* XSUM_XXH3_testdata[4023] */ + { 2012, 0x0000000000000000ULL, 0xC049B2DC7838F936ULL }, /* XSUM_XXH3_testdata[4024] */ + { 2012, 0x9E3779B185EBCA8DULL, 0x4CACB3E58EE6C22AULL }, /* XSUM_XXH3_testdata[4025] */ + { 2013, 0x0000000000000000ULL, 0xB6E73B07D480F818ULL }, /* XSUM_XXH3_testdata[4026] */ + { 2013, 0x9E3779B185EBCA8DULL, 0xFD34BCF6A3482135ULL }, /* XSUM_XXH3_testdata[4027] */ + { 2014, 0x0000000000000000ULL, 0x8A3B04C52FC9AA23ULL }, /* XSUM_XXH3_testdata[4028] */ + { 2014, 0x9E3779B185EBCA8DULL, 0x8139A1C6391CE7E2ULL }, /* XSUM_XXH3_testdata[4029] */ + { 2015, 0x0000000000000000ULL, 0x1A239D5BD68C460FULL }, /* XSUM_XXH3_testdata[4030] */ + { 2015, 0x9E3779B185EBCA8DULL, 0xF9F0BC793F9ECFE2ULL }, /* XSUM_XXH3_testdata[4031] */ + { 2016, 0x0000000000000000ULL, 0x534519D72E407E0CULL }, /* XSUM_XXH3_testdata[4032] */ + { 2016, 0x9E3779B185EBCA8DULL, 0x725AE54533395887ULL }, /* XSUM_XXH3_testdata[4033] */ + { 2017, 0x0000000000000000ULL, 0xDAA50B3EA23ADC34ULL }, /* XSUM_XXH3_testdata[4034] */ + { 2017, 0x9E3779B185EBCA8DULL, 0x40530C9B13FBD31BULL }, /* XSUM_XXH3_testdata[4035] */ + { 2018, 0x0000000000000000ULL, 0x39D77B2F9DF4CE40ULL }, /* XSUM_XXH3_testdata[4036] */ + { 2018, 0x9E3779B185EBCA8DULL, 0x31F74B0ADE0693F0ULL }, /* XSUM_XXH3_testdata[4037] */ + { 2019, 0x0000000000000000ULL, 0x413C806DA2DF48BAULL }, /* XSUM_XXH3_testdata[4038] */ + { 2019, 0x9E3779B185EBCA8DULL, 0x5C2BADA6E6CBBE9FULL }, /* XSUM_XXH3_testdata[4039] */ + { 2020, 0x0000000000000000ULL, 0x275A4C696DF53E8AULL }, /* XSUM_XXH3_testdata[4040] */ + { 2020, 0x9E3779B185EBCA8DULL, 0x28B2677EB66CA5B4ULL }, /* XSUM_XXH3_testdata[4041] */ + { 2021, 0x0000000000000000ULL, 0x8959B2E089954F49ULL }, /* XSUM_XXH3_testdata[4042] */ + { 2021, 0x9E3779B185EBCA8DULL, 0xBD19EE9F34E838FBULL }, /* XSUM_XXH3_testdata[4043] */ + { 2022, 0x0000000000000000ULL, 0x88DEE9BC3FDE452FULL }, /* XSUM_XXH3_testdata[4044] */ + { 2022, 0x9E3779B185EBCA8DULL, 0x9646A86F11CBB0FEULL }, /* XSUM_XXH3_testdata[4045] */ + { 2023, 0x0000000000000000ULL, 0xB8F94EB2217B0BEFULL }, /* XSUM_XXH3_testdata[4046] */ + { 2023, 0x9E3779B185EBCA8DULL, 0xC13EC440EB36532DULL }, /* XSUM_XXH3_testdata[4047] */ + { 2024, 0x0000000000000000ULL, 0x558CD9D489374445ULL }, /* XSUM_XXH3_testdata[4048] */ + { 2024, 0x9E3779B185EBCA8DULL, 0xC709BAD6A00BD0A6ULL }, /* XSUM_XXH3_testdata[4049] */ + { 2025, 0x0000000000000000ULL, 0x4A1BE4E9C58D67B0ULL }, /* XSUM_XXH3_testdata[4050] */ + { 2025, 0x9E3779B185EBCA8DULL, 0xE712E350253C4F20ULL }, /* XSUM_XXH3_testdata[4051] */ + { 2026, 0x0000000000000000ULL, 0xD60CDF85EB17A41DULL }, /* XSUM_XXH3_testdata[4052] */ + { 2026, 0x9E3779B185EBCA8DULL, 0x8BD9EC91AEC9506CULL }, /* XSUM_XXH3_testdata[4053] */ + { 2027, 0x0000000000000000ULL, 0x34030D2C2BD3620EULL }, /* XSUM_XXH3_testdata[4054] */ + { 2027, 0x9E3779B185EBCA8DULL, 0x1E6AADC5ACC59368ULL }, /* XSUM_XXH3_testdata[4055] */ + { 2028, 0x0000000000000000ULL, 0x0482AD00A9BEA4DFULL }, /* XSUM_XXH3_testdata[4056] */ + { 2028, 0x9E3779B185EBCA8DULL, 0x64B42B215687F156ULL }, /* XSUM_XXH3_testdata[4057] */ + { 2029, 0x0000000000000000ULL, 0x43F8BAF5DCE60762ULL }, /* XSUM_XXH3_testdata[4058] */ + { 2029, 0x9E3779B185EBCA8DULL, 0x3076B5F774B774ABULL }, /* XSUM_XXH3_testdata[4059] */ + { 2030, 0x0000000000000000ULL, 0x7F3A75C5F47372BFULL }, /* XSUM_XXH3_testdata[4060] */ + { 2030, 0x9E3779B185EBCA8DULL, 0xA41F7DE911B9388DULL }, /* XSUM_XXH3_testdata[4061] */ + { 2031, 0x0000000000000000ULL, 0x0F07C63F0A64FB6BULL }, /* XSUM_XXH3_testdata[4062] */ + { 2031, 0x9E3779B185EBCA8DULL, 0xD7AA163A998F94FFULL }, /* XSUM_XXH3_testdata[4063] */ + { 2032, 0x0000000000000000ULL, 0x730334D88E3E042EULL }, /* XSUM_XXH3_testdata[4064] */ + { 2032, 0x9E3779B185EBCA8DULL, 0x43E3404431F6B57BULL }, /* XSUM_XXH3_testdata[4065] */ + { 2033, 0x0000000000000000ULL, 0x820AB0168AD91F9CULL }, /* XSUM_XXH3_testdata[4066] */ + { 2033, 0x9E3779B185EBCA8DULL, 0xA2FA5B655AC4CF82ULL }, /* XSUM_XXH3_testdata[4067] */ + { 2034, 0x0000000000000000ULL, 0x5983231050374BE5ULL }, /* XSUM_XXH3_testdata[4068] */ + { 2034, 0x9E3779B185EBCA8DULL, 0x463BA881AF792E27ULL }, /* XSUM_XXH3_testdata[4069] */ + { 2035, 0x0000000000000000ULL, 0x64138A1310FB44C1ULL }, /* XSUM_XXH3_testdata[4070] */ + { 2035, 0x9E3779B185EBCA8DULL, 0xC567DEEA44BB2339ULL }, /* XSUM_XXH3_testdata[4071] */ + { 2036, 0x0000000000000000ULL, 0xED8983739724FB6DULL }, /* XSUM_XXH3_testdata[4072] */ + { 2036, 0x9E3779B185EBCA8DULL, 0x01E77A05708AFEB9ULL }, /* XSUM_XXH3_testdata[4073] */ + { 2037, 0x0000000000000000ULL, 0x92054F5E50441F45ULL }, /* XSUM_XXH3_testdata[4074] */ + { 2037, 0x9E3779B185EBCA8DULL, 0x434B0B08AFC1ECF6ULL }, /* XSUM_XXH3_testdata[4075] */ + { 2038, 0x0000000000000000ULL, 0xE87C4A31666DD254ULL }, /* XSUM_XXH3_testdata[4076] */ + { 2038, 0x9E3779B185EBCA8DULL, 0x732C503DE5D66BFAULL }, /* XSUM_XXH3_testdata[4077] */ + { 2039, 0x0000000000000000ULL, 0x4977DEF98DA8CDDBULL }, /* XSUM_XXH3_testdata[4078] */ + { 2039, 0x9E3779B185EBCA8DULL, 0x39AB97AAA1B56323ULL }, /* XSUM_XXH3_testdata[4079] */ + { 2040, 0x0000000000000000ULL, 0xEEF5DBB6649AA0E3ULL }, /* XSUM_XXH3_testdata[4080] */ + { 2040, 0x9E3779B185EBCA8DULL, 0x836669341AF0DB7EULL }, /* XSUM_XXH3_testdata[4081] */ + { 2041, 0x0000000000000000ULL, 0x08D6503AD6329A06ULL }, /* XSUM_XXH3_testdata[4082] */ + { 2041, 0x9E3779B185EBCA8DULL, 0xEF60C7E28ECDCFD8ULL }, /* XSUM_XXH3_testdata[4083] */ + { 2042, 0x0000000000000000ULL, 0xEF868C71CFEB56FEULL }, /* XSUM_XXH3_testdata[4084] */ + { 2042, 0x9E3779B185EBCA8DULL, 0xE0D951BBF943A865ULL }, /* XSUM_XXH3_testdata[4085] */ + { 2043, 0x0000000000000000ULL, 0x8E1FE7164D991205ULL }, /* XSUM_XXH3_testdata[4086] */ + { 2043, 0x9E3779B185EBCA8DULL, 0x4E4FCF6E540BD98CULL }, /* XSUM_XXH3_testdata[4087] */ + { 2044, 0x0000000000000000ULL, 0x430EDA1712B71273ULL }, /* XSUM_XXH3_testdata[4088] */ + { 2044, 0x9E3779B185EBCA8DULL, 0xD5CB570B453EA1EEULL }, /* XSUM_XXH3_testdata[4089] */ + { 2045, 0x0000000000000000ULL, 0x0AC7FFEC88CB2C74ULL }, /* XSUM_XXH3_testdata[4090] */ + { 2045, 0x9E3779B185EBCA8DULL, 0x826B102E8728882AULL }, /* XSUM_XXH3_testdata[4091] */ + { 2046, 0x0000000000000000ULL, 0x2FCD8606F9959DEDULL }, /* XSUM_XXH3_testdata[4092] */ + { 2046, 0x9E3779B185EBCA8DULL, 0x251CA99F31B16336ULL }, /* XSUM_XXH3_testdata[4093] */ + { 2047, 0x0000000000000000ULL, 0xB36ECE19FCA2197FULL }, /* XSUM_XXH3_testdata[4094] */ + { 2047, 0x9E3779B185EBCA8DULL, 0x8111BB82842ED0AEULL }, /* XSUM_XXH3_testdata[4095] */ + { 2048, 0x0000000000000000ULL, 0xDD59E2C3A5F038E0ULL }, /* XSUM_XXH3_testdata[4096] */ + { 2048, 0x9E3779B185EBCA8DULL, 0x66F81670669ABABCULL }, /* XSUM_XXH3_testdata[4097] */ + { 2049, 0x0000000000000000ULL, 0xD3AFA4329779B921ULL }, /* XSUM_XXH3_testdata[4098] */ + { 2049, 0x9E3779B185EBCA8DULL, 0xE48083836CD58024ULL }, /* XSUM_XXH3_testdata[4099] */ + { 2050, 0x0000000000000000ULL, 0x0532360C2902A5BDULL }, /* XSUM_XXH3_testdata[4100] */ + { 2050, 0x9E3779B185EBCA8DULL, 0x662EC20AC24778FAULL }, /* XSUM_XXH3_testdata[4101] */ + { 2051, 0x0000000000000000ULL, 0xE62F2E2BF20AAAC7ULL }, /* XSUM_XXH3_testdata[4102] */ + { 2051, 0x9E3779B185EBCA8DULL, 0x243368F8E121EE9CULL }, /* XSUM_XXH3_testdata[4103] */ + { 2052, 0x0000000000000000ULL, 0x77E97B48DFD9C3A4ULL }, /* XSUM_XXH3_testdata[4104] */ + { 2052, 0x9E3779B185EBCA8DULL, 0x1383D08E9F71026CULL }, /* XSUM_XXH3_testdata[4105] */ + { 2053, 0x0000000000000000ULL, 0x76A13FAD4EE49BB6ULL }, /* XSUM_XXH3_testdata[4106] */ + { 2053, 0x9E3779B185EBCA8DULL, 0x7D4B20F87FB1D4C6ULL }, /* XSUM_XXH3_testdata[4107] */ + { 2054, 0x0000000000000000ULL, 0xDFA75E9C69C94236ULL }, /* XSUM_XXH3_testdata[4108] */ + { 2054, 0x9E3779B185EBCA8DULL, 0x4BAEE244F77B4556ULL }, /* XSUM_XXH3_testdata[4109] */ + { 2055, 0x0000000000000000ULL, 0x78F2A62C67FCE789ULL }, /* XSUM_XXH3_testdata[4110] */ + { 2055, 0x9E3779B185EBCA8DULL, 0x00C87FA2B31D9A7EULL }, /* XSUM_XXH3_testdata[4111] */ + { 2056, 0x0000000000000000ULL, 0x85673DCE828BB176ULL }, /* XSUM_XXH3_testdata[4112] */ + { 2056, 0x9E3779B185EBCA8DULL, 0x639BBCB43B120051ULL }, /* XSUM_XXH3_testdata[4113] */ + { 2057, 0x0000000000000000ULL, 0x5603E2339F4F826EULL }, /* XSUM_XXH3_testdata[4114] */ + { 2057, 0x9E3779B185EBCA8DULL, 0x3EE81E2EEDA78865ULL }, /* XSUM_XXH3_testdata[4115] */ + { 2058, 0x0000000000000000ULL, 0x8B79E2C538071EE1ULL }, /* XSUM_XXH3_testdata[4116] */ + { 2058, 0x9E3779B185EBCA8DULL, 0x45D764AEA3909E3CULL }, /* XSUM_XXH3_testdata[4117] */ + { 2059, 0x0000000000000000ULL, 0x029818F64365392BULL }, /* XSUM_XXH3_testdata[4118] */ + { 2059, 0x9E3779B185EBCA8DULL, 0xB3DB05F5273BE806ULL }, /* XSUM_XXH3_testdata[4119] */ + { 2060, 0x0000000000000000ULL, 0xD839C817BB6637E6ULL }, /* XSUM_XXH3_testdata[4120] */ + { 2060, 0x9E3779B185EBCA8DULL, 0x0A5E09622DA857AAULL }, /* XSUM_XXH3_testdata[4121] */ + { 2061, 0x0000000000000000ULL, 0x4FD8B89CE6A4728AULL }, /* XSUM_XXH3_testdata[4122] */ + { 2061, 0x9E3779B185EBCA8DULL, 0xCE450DDB8CB7585EULL }, /* XSUM_XXH3_testdata[4123] */ + { 2062, 0x0000000000000000ULL, 0xB8FB834F453F1CA4ULL }, /* XSUM_XXH3_testdata[4124] */ + { 2062, 0x9E3779B185EBCA8DULL, 0x800978E7099890B7ULL }, /* XSUM_XXH3_testdata[4125] */ + { 2063, 0x0000000000000000ULL, 0xA17842CF3E1F5965ULL }, /* XSUM_XXH3_testdata[4126] */ + { 2063, 0x9E3779B185EBCA8DULL, 0xA62021E903E62AFEULL }, /* XSUM_XXH3_testdata[4127] */ + { 2064, 0x0000000000000000ULL, 0x8F49404347CC5423ULL }, /* XSUM_XXH3_testdata[4128] */ + { 2064, 0x9E3779B185EBCA8DULL, 0x7331ED58FB0DA04BULL }, /* XSUM_XXH3_testdata[4129] */ + { 2065, 0x0000000000000000ULL, 0x9B78591A9560D69FULL }, /* XSUM_XXH3_testdata[4130] */ + { 2065, 0x9E3779B185EBCA8DULL, 0xD2E52479743D758DULL }, /* XSUM_XXH3_testdata[4131] */ + { 2066, 0x0000000000000000ULL, 0x7D91DCA73A96F9ADULL }, /* XSUM_XXH3_testdata[4132] */ + { 2066, 0x9E3779B185EBCA8DULL, 0x73C5BE19951D450FULL }, /* XSUM_XXH3_testdata[4133] */ + { 2067, 0x0000000000000000ULL, 0x093A7A97CB2C0C8BULL }, /* XSUM_XXH3_testdata[4134] */ + { 2067, 0x9E3779B185EBCA8DULL, 0x81DF286213071C56ULL }, /* XSUM_XXH3_testdata[4135] */ + { 2068, 0x0000000000000000ULL, 0xAA0061F7D290C673ULL }, /* XSUM_XXH3_testdata[4136] */ + { 2068, 0x9E3779B185EBCA8DULL, 0xD7E52F51A9FA96A3ULL }, /* XSUM_XXH3_testdata[4137] */ + { 2069, 0x0000000000000000ULL, 0x19FDD32DE4083EE9ULL }, /* XSUM_XXH3_testdata[4138] */ + { 2069, 0x9E3779B185EBCA8DULL, 0xD5747C100812CFC0ULL }, /* XSUM_XXH3_testdata[4139] */ + { 2070, 0x0000000000000000ULL, 0x40DB06A00B5816C3ULL }, /* XSUM_XXH3_testdata[4140] */ + { 2070, 0x9E3779B185EBCA8DULL, 0x9B3B101D222A4784ULL }, /* XSUM_XXH3_testdata[4141] */ + { 2071, 0x0000000000000000ULL, 0xA6C20034362C665CULL }, /* XSUM_XXH3_testdata[4142] */ + { 2071, 0x9E3779B185EBCA8DULL, 0x81C4A52B28BBCF84ULL }, /* XSUM_XXH3_testdata[4143] */ + { 2072, 0x0000000000000000ULL, 0xBC3968C3659D703AULL }, /* XSUM_XXH3_testdata[4144] */ + { 2072, 0x9E3779B185EBCA8DULL, 0xC0C0889D17F84BBBULL }, /* XSUM_XXH3_testdata[4145] */ + { 2073, 0x0000000000000000ULL, 0x80472139673A5CD7ULL }, /* XSUM_XXH3_testdata[4146] */ + { 2073, 0x9E3779B185EBCA8DULL, 0x3F97DB063DA7BEE4ULL }, /* XSUM_XXH3_testdata[4147] */ + { 2074, 0x0000000000000000ULL, 0xFD34D0DA49DA6D7DULL }, /* XSUM_XXH3_testdata[4148] */ + { 2074, 0x9E3779B185EBCA8DULL, 0x3E68AD6D11319979ULL }, /* XSUM_XXH3_testdata[4149] */ + { 2075, 0x0000000000000000ULL, 0x7BD1D5B89A83155AULL }, /* XSUM_XXH3_testdata[4150] */ + { 2075, 0x9E3779B185EBCA8DULL, 0x1A6BD0206FB411A9ULL }, /* XSUM_XXH3_testdata[4151] */ + { 2076, 0x0000000000000000ULL, 0xDA10BBEC348E2389ULL }, /* XSUM_XXH3_testdata[4152] */ + { 2076, 0x9E3779B185EBCA8DULL, 0xE2330C860120AEACULL }, /* XSUM_XXH3_testdata[4153] */ + { 2077, 0x0000000000000000ULL, 0xAF3D4127CBF9214EULL }, /* XSUM_XXH3_testdata[4154] */ + { 2077, 0x9E3779B185EBCA8DULL, 0x4F7C2583D69E104DULL }, /* XSUM_XXH3_testdata[4155] */ + { 2078, 0x0000000000000000ULL, 0x308E1748E8FD7BABULL }, /* XSUM_XXH3_testdata[4156] */ + { 2078, 0x9E3779B185EBCA8DULL, 0xDBDDC679BD81D759ULL }, /* XSUM_XXH3_testdata[4157] */ + { 2079, 0x0000000000000000ULL, 0xD7B03414F25CC611ULL }, /* XSUM_XXH3_testdata[4158] */ + { 2079, 0x9E3779B185EBCA8DULL, 0xE2613ED5DDF8DBC2ULL }, /* XSUM_XXH3_testdata[4159] */ + { 2080, 0x0000000000000000ULL, 0xC2A81FB74CEFD2BAULL }, /* XSUM_XXH3_testdata[4160] */ + { 2080, 0x9E3779B185EBCA8DULL, 0x655245AC6C0DCDB3ULL }, /* XSUM_XXH3_testdata[4161] */ + { 2081, 0x0000000000000000ULL, 0x9962F6C0C859565CULL }, /* XSUM_XXH3_testdata[4162] */ + { 2081, 0x9E3779B185EBCA8DULL, 0x9B9FB1A37896DF4DULL }, /* XSUM_XXH3_testdata[4163] */ + { 2082, 0x0000000000000000ULL, 0x525341066666BA5AULL }, /* XSUM_XXH3_testdata[4164] */ + { 2082, 0x9E3779B185EBCA8DULL, 0x3EFF2BB5FC448FE4ULL }, /* XSUM_XXH3_testdata[4165] */ + { 2083, 0x0000000000000000ULL, 0x36B8B23A64BC0BFEULL }, /* XSUM_XXH3_testdata[4166] */ + { 2083, 0x9E3779B185EBCA8DULL, 0xD61D1388A367C6FFULL }, /* XSUM_XXH3_testdata[4167] */ + { 2084, 0x0000000000000000ULL, 0x71CB8A8E594C1595ULL }, /* XSUM_XXH3_testdata[4168] */ + { 2084, 0x9E3779B185EBCA8DULL, 0x2A95CE9C889F2A77ULL }, /* XSUM_XXH3_testdata[4169] */ + { 2085, 0x0000000000000000ULL, 0x12C8C4DC92EC613EULL }, /* XSUM_XXH3_testdata[4170] */ + { 2085, 0x9E3779B185EBCA8DULL, 0x94B61038AB08733EULL }, /* XSUM_XXH3_testdata[4171] */ + { 2086, 0x0000000000000000ULL, 0xB2DF30FBDB219EE1ULL }, /* XSUM_XXH3_testdata[4172] */ + { 2086, 0x9E3779B185EBCA8DULL, 0x23C0CEFFC455E0D7ULL }, /* XSUM_XXH3_testdata[4173] */ + { 2087, 0x0000000000000000ULL, 0xE5F168DADC1D1412ULL }, /* XSUM_XXH3_testdata[4174] */ + { 2087, 0x9E3779B185EBCA8DULL, 0xB76FC418A3663ACCULL }, /* XSUM_XXH3_testdata[4175] */ + { 2088, 0x0000000000000000ULL, 0x4605E9A359439A0AULL }, /* XSUM_XXH3_testdata[4176] */ + { 2088, 0x9E3779B185EBCA8DULL, 0xF5C043EDD0AAB1BFULL }, /* XSUM_XXH3_testdata[4177] */ + { 2089, 0x0000000000000000ULL, 0xC975BD5F02A26C46ULL }, /* XSUM_XXH3_testdata[4178] */ + { 2089, 0x9E3779B185EBCA8DULL, 0x71AB75BD28471867ULL }, /* XSUM_XXH3_testdata[4179] */ + { 2090, 0x0000000000000000ULL, 0x486A48B0AC95CEAEULL }, /* XSUM_XXH3_testdata[4180] */ + { 2090, 0x9E3779B185EBCA8DULL, 0xA94D39ED402F7DD8ULL }, /* XSUM_XXH3_testdata[4181] */ + { 2091, 0x0000000000000000ULL, 0xF1374E8DDFF89DA9ULL }, /* XSUM_XXH3_testdata[4182] */ + { 2091, 0x9E3779B185EBCA8DULL, 0x6E49515D91B82E7BULL }, /* XSUM_XXH3_testdata[4183] */ + { 2092, 0x0000000000000000ULL, 0x455DD31697D63F7BULL }, /* XSUM_XXH3_testdata[4184] */ + { 2092, 0x9E3779B185EBCA8DULL, 0xC56E1C2C10929BBEULL }, /* XSUM_XXH3_testdata[4185] */ + { 2093, 0x0000000000000000ULL, 0x9E269F2E5C9FB3E6ULL }, /* XSUM_XXH3_testdata[4186] */ + { 2093, 0x9E3779B185EBCA8DULL, 0x24341F87A9B010C3ULL }, /* XSUM_XXH3_testdata[4187] */ + { 2094, 0x0000000000000000ULL, 0x4D9F684C2328F60FULL }, /* XSUM_XXH3_testdata[4188] */ + { 2094, 0x9E3779B185EBCA8DULL, 0x8D5BA10F136BBBDEULL }, /* XSUM_XXH3_testdata[4189] */ + { 2095, 0x0000000000000000ULL, 0xB4E9526C757FB3E0ULL }, /* XSUM_XXH3_testdata[4190] */ + { 2095, 0x9E3779B185EBCA8DULL, 0x6704B0AA74D6E9D8ULL }, /* XSUM_XXH3_testdata[4191] */ + { 2096, 0x0000000000000000ULL, 0xDC98D78702F8D241ULL }, /* XSUM_XXH3_testdata[4192] */ + { 2096, 0x9E3779B185EBCA8DULL, 0xC176C1D45D3D3F78ULL }, /* XSUM_XXH3_testdata[4193] */ + { 2097, 0x0000000000000000ULL, 0x3EB8B58346323505ULL }, /* XSUM_XXH3_testdata[4194] */ + { 2097, 0x9E3779B185EBCA8DULL, 0x34C3281A05464634ULL }, /* XSUM_XXH3_testdata[4195] */ + { 2098, 0x0000000000000000ULL, 0xD88C0787632D5D70ULL }, /* XSUM_XXH3_testdata[4196] */ + { 2098, 0x9E3779B185EBCA8DULL, 0xDFE1DB342D29C290ULL }, /* XSUM_XXH3_testdata[4197] */ + { 2099, 0x0000000000000000ULL, 0xC6B9D9B3FC9AC765ULL }, /* XSUM_XXH3_testdata[4198] */ + { 2099, 0x9E3779B185EBCA8DULL, 0x184F316843663974ULL }, /* XSUM_XXH3_testdata[4199] */ + { 2100, 0x0000000000000000ULL, 0xBE3D249D76B7F785ULL }, /* XSUM_XXH3_testdata[4200] */ + { 2100, 0x9E3779B185EBCA8DULL, 0x77EBCB5E10693AA4ULL }, /* XSUM_XXH3_testdata[4201] */ + { 2101, 0x0000000000000000ULL, 0x581217AD4076A60DULL }, /* XSUM_XXH3_testdata[4202] */ + { 2101, 0x9E3779B185EBCA8DULL, 0xE0038FDEB381E113ULL }, /* XSUM_XXH3_testdata[4203] */ + { 2102, 0x0000000000000000ULL, 0xF4892859B6CEA530ULL }, /* XSUM_XXH3_testdata[4204] */ + { 2102, 0x9E3779B185EBCA8DULL, 0x26585E897E7ED9D9ULL }, /* XSUM_XXH3_testdata[4205] */ + { 2103, 0x0000000000000000ULL, 0xBE7381B819FACD77ULL }, /* XSUM_XXH3_testdata[4206] */ + { 2103, 0x9E3779B185EBCA8DULL, 0x7BC39431F4923940ULL }, /* XSUM_XXH3_testdata[4207] */ + { 2104, 0x0000000000000000ULL, 0x818322F0EA0E23CBULL }, /* XSUM_XXH3_testdata[4208] */ + { 2104, 0x9E3779B185EBCA8DULL, 0xC8CF92ABAD383682ULL }, /* XSUM_XXH3_testdata[4209] */ + { 2105, 0x0000000000000000ULL, 0xB39F7FE5BBEDC6F9ULL }, /* XSUM_XXH3_testdata[4210] */ + { 2105, 0x9E3779B185EBCA8DULL, 0xCB42EB694CEED592ULL }, /* XSUM_XXH3_testdata[4211] */ + { 2106, 0x0000000000000000ULL, 0x042E6EC5695BE98BULL }, /* XSUM_XXH3_testdata[4212] */ + { 2106, 0x9E3779B185EBCA8DULL, 0xA221F9494506A44EULL }, /* XSUM_XXH3_testdata[4213] */ + { 2107, 0x0000000000000000ULL, 0xC0D47A01E5589883ULL }, /* XSUM_XXH3_testdata[4214] */ + { 2107, 0x9E3779B185EBCA8DULL, 0x5FA98BEE4E230E1EULL }, /* XSUM_XXH3_testdata[4215] */ + { 2108, 0x0000000000000000ULL, 0x9497E3F05B3CCAEDULL }, /* XSUM_XXH3_testdata[4216] */ + { 2108, 0x9E3779B185EBCA8DULL, 0xD58EA5004F550F86ULL }, /* XSUM_XXH3_testdata[4217] */ + { 2109, 0x0000000000000000ULL, 0xDA51073DBF6CD9A1ULL }, /* XSUM_XXH3_testdata[4218] */ + { 2109, 0x9E3779B185EBCA8DULL, 0x45BE1DFC68CD3B56ULL }, /* XSUM_XXH3_testdata[4219] */ + { 2110, 0x0000000000000000ULL, 0xD3E69C0BE984921DULL }, /* XSUM_XXH3_testdata[4220] */ + { 2110, 0x9E3779B185EBCA8DULL, 0x88140AA8A0FCE957ULL }, /* XSUM_XXH3_testdata[4221] */ + { 2111, 0x0000000000000000ULL, 0x161BC831576C278AULL }, /* XSUM_XXH3_testdata[4222] */ + { 2111, 0x9E3779B185EBCA8DULL, 0x7DF29981A9D61E52ULL }, /* XSUM_XXH3_testdata[4223] */ + { 2112, 0x0000000000000000ULL, 0x7C33C86D9E6A8C39ULL }, /* XSUM_XXH3_testdata[4224] */ + { 2112, 0x9E3779B185EBCA8DULL, 0x084352D520AF2E0CULL }, /* XSUM_XXH3_testdata[4225] */ + { 2113, 0x0000000000000000ULL, 0x30A8AA601425D0BCULL }, /* XSUM_XXH3_testdata[4226] */ + { 2113, 0x9E3779B185EBCA8DULL, 0x59803CBF83152382ULL }, /* XSUM_XXH3_testdata[4227] */ + { 2114, 0x0000000000000000ULL, 0x7E7FDCCEB5A269A5ULL }, /* XSUM_XXH3_testdata[4228] */ + { 2114, 0x9E3779B185EBCA8DULL, 0x337DE3C45901BC85ULL }, /* XSUM_XXH3_testdata[4229] */ + { 2115, 0x0000000000000000ULL, 0xE819B9E23816758CULL }, /* XSUM_XXH3_testdata[4230] */ + { 2115, 0x9E3779B185EBCA8DULL, 0xDD75D078BAEE864DULL }, /* XSUM_XXH3_testdata[4231] */ + { 2116, 0x0000000000000000ULL, 0x0C443A18F53B58DEULL }, /* XSUM_XXH3_testdata[4232] */ + { 2116, 0x9E3779B185EBCA8DULL, 0xDF99C6BF79C66AB8ULL }, /* XSUM_XXH3_testdata[4233] */ + { 2117, 0x0000000000000000ULL, 0xCD60C473A00CF1ABULL }, /* XSUM_XXH3_testdata[4234] */ + { 2117, 0x9E3779B185EBCA8DULL, 0xD00D04FBD50B0769ULL }, /* XSUM_XXH3_testdata[4235] */ + { 2118, 0x0000000000000000ULL, 0x3FA47D531B86C5A6ULL }, /* XSUM_XXH3_testdata[4236] */ + { 2118, 0x9E3779B185EBCA8DULL, 0xF0CF23296153A098ULL }, /* XSUM_XXH3_testdata[4237] */ + { 2119, 0x0000000000000000ULL, 0x2B01DC788CB5E37AULL }, /* XSUM_XXH3_testdata[4238] */ + { 2119, 0x9E3779B185EBCA8DULL, 0xE463ADDBA6510841ULL }, /* XSUM_XXH3_testdata[4239] */ + { 2120, 0x0000000000000000ULL, 0x04771E39BE145D9AULL }, /* XSUM_XXH3_testdata[4240] */ + { 2120, 0x9E3779B185EBCA8DULL, 0x751EC7E4FCAA6325ULL }, /* XSUM_XXH3_testdata[4241] */ + { 2121, 0x0000000000000000ULL, 0xD633B712A74BE039ULL }, /* XSUM_XXH3_testdata[4242] */ + { 2121, 0x9E3779B185EBCA8DULL, 0xF9724759FA9525B6ULL }, /* XSUM_XXH3_testdata[4243] */ + { 2122, 0x0000000000000000ULL, 0x24AE72CDA733DF48ULL }, /* XSUM_XXH3_testdata[4244] */ + { 2122, 0x9E3779B185EBCA8DULL, 0xBA2240309EC1C44CULL }, /* XSUM_XXH3_testdata[4245] */ + { 2123, 0x0000000000000000ULL, 0x47102F1ED6BB4FE4ULL }, /* XSUM_XXH3_testdata[4246] */ + { 2123, 0x9E3779B185EBCA8DULL, 0x20D846BBF8E4C6ABULL }, /* XSUM_XXH3_testdata[4247] */ + { 2124, 0x0000000000000000ULL, 0x71CBB4B220C0FFCEULL }, /* XSUM_XXH3_testdata[4248] */ + { 2124, 0x9E3779B185EBCA8DULL, 0x1CEE7903F9FF9D6FULL }, /* XSUM_XXH3_testdata[4249] */ + { 2125, 0x0000000000000000ULL, 0x85DF5C3938DF2DB0ULL }, /* XSUM_XXH3_testdata[4250] */ + { 2125, 0x9E3779B185EBCA8DULL, 0xB9AD29A35A707ABDULL }, /* XSUM_XXH3_testdata[4251] */ + { 2126, 0x0000000000000000ULL, 0x54B9B4C8D1D2F8E1ULL }, /* XSUM_XXH3_testdata[4252] */ + { 2126, 0x9E3779B185EBCA8DULL, 0x9C159E298C16AF55ULL }, /* XSUM_XXH3_testdata[4253] */ + { 2127, 0x0000000000000000ULL, 0xC4DA29D22439D9AAULL }, /* XSUM_XXH3_testdata[4254] */ + { 2127, 0x9E3779B185EBCA8DULL, 0xC77E30862645CE42ULL }, /* XSUM_XXH3_testdata[4255] */ + { 2128, 0x0000000000000000ULL, 0xFAD97E0CDDA51E95ULL }, /* XSUM_XXH3_testdata[4256] */ + { 2128, 0x9E3779B185EBCA8DULL, 0xB9FC31CE38AFED3FULL }, /* XSUM_XXH3_testdata[4257] */ + { 2129, 0x0000000000000000ULL, 0x5F33D37689AAAB61ULL }, /* XSUM_XXH3_testdata[4258] */ + { 2129, 0x9E3779B185EBCA8DULL, 0xD4AF6B7AE8C90ABBULL }, /* XSUM_XXH3_testdata[4259] */ + { 2130, 0x0000000000000000ULL, 0x4A6C83F4986D25ABULL }, /* XSUM_XXH3_testdata[4260] */ + { 2130, 0x9E3779B185EBCA8DULL, 0xDA5B988675FEDBDCULL }, /* XSUM_XXH3_testdata[4261] */ + { 2131, 0x0000000000000000ULL, 0xB2FA919BEF281372ULL }, /* XSUM_XXH3_testdata[4262] */ + { 2131, 0x9E3779B185EBCA8DULL, 0x68F128D43DE48A69ULL }, /* XSUM_XXH3_testdata[4263] */ + { 2132, 0x0000000000000000ULL, 0x8CA360DC297568D8ULL }, /* XSUM_XXH3_testdata[4264] */ + { 2132, 0x9E3779B185EBCA8DULL, 0xD9EB5BFF99512869ULL }, /* XSUM_XXH3_testdata[4265] */ + { 2133, 0x0000000000000000ULL, 0xCFCEFDAEACFA0B96ULL }, /* XSUM_XXH3_testdata[4266] */ + { 2133, 0x9E3779B185EBCA8DULL, 0x1DB7821732C9B28DULL }, /* XSUM_XXH3_testdata[4267] */ + { 2134, 0x0000000000000000ULL, 0xB2CED2B335371695ULL }, /* XSUM_XXH3_testdata[4268] */ + { 2134, 0x9E3779B185EBCA8DULL, 0x0D4487991C690B4CULL }, /* XSUM_XXH3_testdata[4269] */ + { 2135, 0x0000000000000000ULL, 0x10D459B4E7BB16F5ULL }, /* XSUM_XXH3_testdata[4270] */ + { 2135, 0x9E3779B185EBCA8DULL, 0x474A36D98F36F4A0ULL }, /* XSUM_XXH3_testdata[4271] */ + { 2136, 0x0000000000000000ULL, 0x259F3610C2E2A640ULL }, /* XSUM_XXH3_testdata[4272] */ + { 2136, 0x9E3779B185EBCA8DULL, 0x9131CCB2D652847EULL }, /* XSUM_XXH3_testdata[4273] */ + { 2137, 0x0000000000000000ULL, 0xF6E0287F54678C67ULL }, /* XSUM_XXH3_testdata[4274] */ + { 2137, 0x9E3779B185EBCA8DULL, 0x34202D0AD2030DF8ULL }, /* XSUM_XXH3_testdata[4275] */ + { 2138, 0x0000000000000000ULL, 0x20B9BD1B573C9654ULL }, /* XSUM_XXH3_testdata[4276] */ + { 2138, 0x9E3779B185EBCA8DULL, 0x7B66F99550C2A5C0ULL }, /* XSUM_XXH3_testdata[4277] */ + { 2139, 0x0000000000000000ULL, 0xE7ADB21AC122B16CULL }, /* XSUM_XXH3_testdata[4278] */ + { 2139, 0x9E3779B185EBCA8DULL, 0xCC00DD72799C448CULL }, /* XSUM_XXH3_testdata[4279] */ + { 2140, 0x0000000000000000ULL, 0x8E95E0CF5838AE78ULL }, /* XSUM_XXH3_testdata[4280] */ + { 2140, 0x9E3779B185EBCA8DULL, 0x40F96A9363A78DD4ULL }, /* XSUM_XXH3_testdata[4281] */ + { 2141, 0x0000000000000000ULL, 0x714ED906850A3420ULL }, /* XSUM_XXH3_testdata[4282] */ + { 2141, 0x9E3779B185EBCA8DULL, 0xFBF9450C1D1078C0ULL }, /* XSUM_XXH3_testdata[4283] */ + { 2142, 0x0000000000000000ULL, 0xD816E5FE3A8D6997ULL }, /* XSUM_XXH3_testdata[4284] */ + { 2142, 0x9E3779B185EBCA8DULL, 0x80ACC2D477815904ULL }, /* XSUM_XXH3_testdata[4285] */ + { 2143, 0x0000000000000000ULL, 0xD9319C8C99EDEDEFULL }, /* XSUM_XXH3_testdata[4286] */ + { 2143, 0x9E3779B185EBCA8DULL, 0xA6569B7945AA5DDCULL }, /* XSUM_XXH3_testdata[4287] */ + { 2144, 0x0000000000000000ULL, 0x9CAD5B2A41F4BC3DULL }, /* XSUM_XXH3_testdata[4288] */ + { 2144, 0x9E3779B185EBCA8DULL, 0x61447524BEA2F61CULL }, /* XSUM_XXH3_testdata[4289] */ + { 2145, 0x0000000000000000ULL, 0x334D53022734D39BULL }, /* XSUM_XXH3_testdata[4290] */ + { 2145, 0x9E3779B185EBCA8DULL, 0x8025C93720D8B0B4ULL }, /* XSUM_XXH3_testdata[4291] */ + { 2146, 0x0000000000000000ULL, 0xA72ED4637049BF03ULL }, /* XSUM_XXH3_testdata[4292] */ + { 2146, 0x9E3779B185EBCA8DULL, 0x9A059D5FC680F3D5ULL }, /* XSUM_XXH3_testdata[4293] */ + { 2147, 0x0000000000000000ULL, 0x410742B45CC91D39ULL }, /* XSUM_XXH3_testdata[4294] */ + { 2147, 0x9E3779B185EBCA8DULL, 0x9F357FDE2081FEDCULL }, /* XSUM_XXH3_testdata[4295] */ + { 2148, 0x0000000000000000ULL, 0x2793899CDB4D8987ULL }, /* XSUM_XXH3_testdata[4296] */ + { 2148, 0x9E3779B185EBCA8DULL, 0xEEE157D27C8FE443ULL }, /* XSUM_XXH3_testdata[4297] */ + { 2149, 0x0000000000000000ULL, 0x2B4C46687682EBC1ULL }, /* XSUM_XXH3_testdata[4298] */ + { 2149, 0x9E3779B185EBCA8DULL, 0x7F3359436EA05077ULL }, /* XSUM_XXH3_testdata[4299] */ + { 2150, 0x0000000000000000ULL, 0xE3D5AA26C630C09CULL }, /* XSUM_XXH3_testdata[4300] */ + { 2150, 0x9E3779B185EBCA8DULL, 0x2A28BD92C2D4C989ULL }, /* XSUM_XXH3_testdata[4301] */ + { 2151, 0x0000000000000000ULL, 0x0BB6A9EE880F6738ULL }, /* XSUM_XXH3_testdata[4302] */ + { 2151, 0x9E3779B185EBCA8DULL, 0x3A86A292CE8A02F5ULL }, /* XSUM_XXH3_testdata[4303] */ + { 2152, 0x0000000000000000ULL, 0xAB3F3D80E2CF4EC4ULL }, /* XSUM_XXH3_testdata[4304] */ + { 2152, 0x9E3779B185EBCA8DULL, 0xE9674006478DFD18ULL }, /* XSUM_XXH3_testdata[4305] */ + { 2153, 0x0000000000000000ULL, 0x18B3B66AD0EA2DA8ULL }, /* XSUM_XXH3_testdata[4306] */ + { 2153, 0x9E3779B185EBCA8DULL, 0x8BAF8A5439623563ULL }, /* XSUM_XXH3_testdata[4307] */ + { 2154, 0x0000000000000000ULL, 0x3F5F7F0DE2DAE083ULL }, /* XSUM_XXH3_testdata[4308] */ + { 2154, 0x9E3779B185EBCA8DULL, 0x1A757E35E405E699ULL }, /* XSUM_XXH3_testdata[4309] */ + { 2155, 0x0000000000000000ULL, 0x0E026BA8C61DF56AULL }, /* XSUM_XXH3_testdata[4310] */ + { 2155, 0x9E3779B185EBCA8DULL, 0x471C27F9B37D6851ULL }, /* XSUM_XXH3_testdata[4311] */ + { 2156, 0x0000000000000000ULL, 0x573B4C99862191A1ULL }, /* XSUM_XXH3_testdata[4312] */ + { 2156, 0x9E3779B185EBCA8DULL, 0xDF061BCC7759C1E5ULL }, /* XSUM_XXH3_testdata[4313] */ + { 2157, 0x0000000000000000ULL, 0x8E3349E34BBABB51ULL }, /* XSUM_XXH3_testdata[4314] */ + { 2157, 0x9E3779B185EBCA8DULL, 0xE9CB28FA4F2B8F86ULL }, /* XSUM_XXH3_testdata[4315] */ + { 2158, 0x0000000000000000ULL, 0x1DE9A6E944662A42ULL }, /* XSUM_XXH3_testdata[4316] */ + { 2158, 0x9E3779B185EBCA8DULL, 0x31415F3C7C9E2538ULL }, /* XSUM_XXH3_testdata[4317] */ + { 2159, 0x0000000000000000ULL, 0x3B2A7FA55BC6652BULL }, /* XSUM_XXH3_testdata[4318] */ + { 2159, 0x9E3779B185EBCA8DULL, 0xBA13B27EF111BD0BULL }, /* XSUM_XXH3_testdata[4319] */ + { 2160, 0x0000000000000000ULL, 0x95A2C385B4C5DF62ULL }, /* XSUM_XXH3_testdata[4320] */ + { 2160, 0x9E3779B185EBCA8DULL, 0xE8A2054945537497ULL }, /* XSUM_XXH3_testdata[4321] */ + { 2161, 0x0000000000000000ULL, 0xB6D672FBF2733519ULL }, /* XSUM_XXH3_testdata[4322] */ + { 2161, 0x9E3779B185EBCA8DULL, 0xC43BFCD27780D6F5ULL }, /* XSUM_XXH3_testdata[4323] */ + { 2162, 0x0000000000000000ULL, 0x5E14EF81BEAE2696ULL }, /* XSUM_XXH3_testdata[4324] */ + { 2162, 0x9E3779B185EBCA8DULL, 0x04CB1436467C4B23ULL }, /* XSUM_XXH3_testdata[4325] */ + { 2163, 0x0000000000000000ULL, 0xD105155AA83A2BCAULL }, /* XSUM_XXH3_testdata[4326] */ + { 2163, 0x9E3779B185EBCA8DULL, 0x54952BBB7A3FAEBAULL }, /* XSUM_XXH3_testdata[4327] */ + { 2164, 0x0000000000000000ULL, 0x7B1F07253D3C8CF3ULL }, /* XSUM_XXH3_testdata[4328] */ + { 2164, 0x9E3779B185EBCA8DULL, 0x9484396B41B15FA8ULL }, /* XSUM_XXH3_testdata[4329] */ + { 2165, 0x0000000000000000ULL, 0x93F755CFA42D919DULL }, /* XSUM_XXH3_testdata[4330] */ + { 2165, 0x9E3779B185EBCA8DULL, 0x2D7EED0342EB2799ULL }, /* XSUM_XXH3_testdata[4331] */ + { 2166, 0x0000000000000000ULL, 0x85298A8704907A54ULL }, /* XSUM_XXH3_testdata[4332] */ + { 2166, 0x9E3779B185EBCA8DULL, 0xA751C559BA4417A5ULL }, /* XSUM_XXH3_testdata[4333] */ + { 2167, 0x0000000000000000ULL, 0xE90C580C48DD9944ULL }, /* XSUM_XXH3_testdata[4334] */ + { 2167, 0x9E3779B185EBCA8DULL, 0x69C8C5584B02DFD6ULL }, /* XSUM_XXH3_testdata[4335] */ + { 2168, 0x0000000000000000ULL, 0x9C64AFEB984B1FFDULL }, /* XSUM_XXH3_testdata[4336] */ + { 2168, 0x9E3779B185EBCA8DULL, 0x1304DF7E40B05E96ULL }, /* XSUM_XXH3_testdata[4337] */ + { 2169, 0x0000000000000000ULL, 0x92CDC29C3D92503CULL }, /* XSUM_XXH3_testdata[4338] */ + { 2169, 0x9E3779B185EBCA8DULL, 0x729B2A3E789A550CULL }, /* XSUM_XXH3_testdata[4339] */ + { 2170, 0x0000000000000000ULL, 0x83BDFD869BAD1F44ULL }, /* XSUM_XXH3_testdata[4340] */ + { 2170, 0x9E3779B185EBCA8DULL, 0x89E2B8D5F514680FULL }, /* XSUM_XXH3_testdata[4341] */ + { 2171, 0x0000000000000000ULL, 0x50D5661F7461E211ULL }, /* XSUM_XXH3_testdata[4342] */ + { 2171, 0x9E3779B185EBCA8DULL, 0x6AD13DDD0B545A8FULL }, /* XSUM_XXH3_testdata[4343] */ + { 2172, 0x0000000000000000ULL, 0x6AF342AE4840FC12ULL }, /* XSUM_XXH3_testdata[4344] */ + { 2172, 0x9E3779B185EBCA8DULL, 0x0E644A6A1D322111ULL }, /* XSUM_XXH3_testdata[4345] */ + { 2173, 0x0000000000000000ULL, 0x29614FF197A1CEC8ULL }, /* XSUM_XXH3_testdata[4346] */ + { 2173, 0x9E3779B185EBCA8DULL, 0x34319655235E1DF9ULL }, /* XSUM_XXH3_testdata[4347] */ + { 2174, 0x0000000000000000ULL, 0x5851086F05ED5A93ULL }, /* XSUM_XXH3_testdata[4348] */ + { 2174, 0x9E3779B185EBCA8DULL, 0x789E2E239B0D5889ULL }, /* XSUM_XXH3_testdata[4349] */ + { 2175, 0x0000000000000000ULL, 0x50D01E3DB2EEB81BULL }, /* XSUM_XXH3_testdata[4350] */ + { 2175, 0x9E3779B185EBCA8DULL, 0x11B67E942D0D7E67ULL }, /* XSUM_XXH3_testdata[4351] */ + { 2176, 0x0000000000000000ULL, 0x29D2205BAFBD456BULL }, /* XSUM_XXH3_testdata[4352] */ + { 2176, 0x9E3779B185EBCA8DULL, 0xFB7B4655AA6E39C8ULL }, /* XSUM_XXH3_testdata[4353] */ + { 2177, 0x0000000000000000ULL, 0xA283CA0E29DC4F25ULL }, /* XSUM_XXH3_testdata[4354] */ + { 2177, 0x9E3779B185EBCA8DULL, 0x45FC46C710C757C1ULL }, /* XSUM_XXH3_testdata[4355] */ + { 2178, 0x0000000000000000ULL, 0xEE0C669CCC24E35BULL }, /* XSUM_XXH3_testdata[4356] */ + { 2178, 0x9E3779B185EBCA8DULL, 0x6616E48AFBBE6B19ULL }, /* XSUM_XXH3_testdata[4357] */ + { 2179, 0x0000000000000000ULL, 0xC22CBE7E53601416ULL }, /* XSUM_XXH3_testdata[4358] */ + { 2179, 0x9E3779B185EBCA8DULL, 0xAC82506CCE12F79AULL }, /* XSUM_XXH3_testdata[4359] */ + { 2180, 0x0000000000000000ULL, 0xD9E8B2340AD0AE45ULL }, /* XSUM_XXH3_testdata[4360] */ + { 2180, 0x9E3779B185EBCA8DULL, 0xE9E8841DDA45B168ULL }, /* XSUM_XXH3_testdata[4361] */ + { 2181, 0x0000000000000000ULL, 0x9715E4F64F6C87A7ULL }, /* XSUM_XXH3_testdata[4362] */ + { 2181, 0x9E3779B185EBCA8DULL, 0xB5DF3C559501A8C0ULL }, /* XSUM_XXH3_testdata[4363] */ + { 2182, 0x0000000000000000ULL, 0x8037071E726FFCF6ULL }, /* XSUM_XXH3_testdata[4364] */ + { 2182, 0x9E3779B185EBCA8DULL, 0xE0DF7D2037EA35CDULL }, /* XSUM_XXH3_testdata[4365] */ + { 2183, 0x0000000000000000ULL, 0xEFF8CC0E3F0641E4ULL }, /* XSUM_XXH3_testdata[4366] */ + { 2183, 0x9E3779B185EBCA8DULL, 0x8044F342429D0F1EULL }, /* XSUM_XXH3_testdata[4367] */ + { 2184, 0x0000000000000000ULL, 0xA9FCE36A54750A1FULL }, /* XSUM_XXH3_testdata[4368] */ + { 2184, 0x9E3779B185EBCA8DULL, 0x6FDBF8F2D98BF87CULL }, /* XSUM_XXH3_testdata[4369] */ + { 2185, 0x0000000000000000ULL, 0x8660BD25E39DB30AULL }, /* XSUM_XXH3_testdata[4370] */ + { 2185, 0x9E3779B185EBCA8DULL, 0xDD5BD774387761EDULL }, /* XSUM_XXH3_testdata[4371] */ + { 2186, 0x0000000000000000ULL, 0x19344704011B72D3ULL }, /* XSUM_XXH3_testdata[4372] */ + { 2186, 0x9E3779B185EBCA8DULL, 0x0484D89689D09F20ULL }, /* XSUM_XXH3_testdata[4373] */ + { 2187, 0x0000000000000000ULL, 0xE59CC4C985A720A2ULL }, /* XSUM_XXH3_testdata[4374] */ + { 2187, 0x9E3779B185EBCA8DULL, 0x2C4966E8D7B3F5E8ULL }, /* XSUM_XXH3_testdata[4375] */ + { 2188, 0x0000000000000000ULL, 0xB223195A579011ACULL }, /* XSUM_XXH3_testdata[4376] */ + { 2188, 0x9E3779B185EBCA8DULL, 0xD43C8AE1C4766194ULL }, /* XSUM_XXH3_testdata[4377] */ + { 2189, 0x0000000000000000ULL, 0xAF9E01D91A98738AULL }, /* XSUM_XXH3_testdata[4378] */ + { 2189, 0x9E3779B185EBCA8DULL, 0xBE047B287C786011ULL }, /* XSUM_XXH3_testdata[4379] */ + { 2190, 0x0000000000000000ULL, 0x9B2878B998461347ULL }, /* XSUM_XXH3_testdata[4380] */ + { 2190, 0x9E3779B185EBCA8DULL, 0xD5FDCB465B9E2897ULL }, /* XSUM_XXH3_testdata[4381] */ + { 2191, 0x0000000000000000ULL, 0x71B4CC7A01EF5656ULL }, /* XSUM_XXH3_testdata[4382] */ + { 2191, 0x9E3779B185EBCA8DULL, 0x7A5C5E944C4D2499ULL }, /* XSUM_XXH3_testdata[4383] */ + { 2192, 0x0000000000000000ULL, 0x84E6EBA02934072EULL }, /* XSUM_XXH3_testdata[4384] */ + { 2192, 0x9E3779B185EBCA8DULL, 0x481D2585061FE7FDULL }, /* XSUM_XXH3_testdata[4385] */ + { 2193, 0x0000000000000000ULL, 0x78B69BB4A862DB03ULL }, /* XSUM_XXH3_testdata[4386] */ + { 2193, 0x9E3779B185EBCA8DULL, 0x767D20312ECBB69AULL }, /* XSUM_XXH3_testdata[4387] */ + { 2194, 0x0000000000000000ULL, 0xC7AEF2FB42E6D43FULL }, /* XSUM_XXH3_testdata[4388] */ + { 2194, 0x9E3779B185EBCA8DULL, 0xF441AC4B1766F7B1ULL }, /* XSUM_XXH3_testdata[4389] */ + { 2195, 0x0000000000000000ULL, 0xEAC74EA8D924CA43ULL }, /* XSUM_XXH3_testdata[4390] */ + { 2195, 0x9E3779B185EBCA8DULL, 0x49CC8123556CEF4EULL }, /* XSUM_XXH3_testdata[4391] */ + { 2196, 0x0000000000000000ULL, 0xAD657634A1E509F8ULL }, /* XSUM_XXH3_testdata[4392] */ + { 2196, 0x9E3779B185EBCA8DULL, 0x0F993C64851F9F19ULL }, /* XSUM_XXH3_testdata[4393] */ + { 2197, 0x0000000000000000ULL, 0x63C87C3FB53F2903ULL }, /* XSUM_XXH3_testdata[4394] */ + { 2197, 0x9E3779B185EBCA8DULL, 0x5C1B6EAC47E1080DULL }, /* XSUM_XXH3_testdata[4395] */ + { 2198, 0x0000000000000000ULL, 0x6A7D831B5F4FE66DULL }, /* XSUM_XXH3_testdata[4396] */ + { 2198, 0x9E3779B185EBCA8DULL, 0x1AAE97153C6D5C42ULL }, /* XSUM_XXH3_testdata[4397] */ + { 2199, 0x0000000000000000ULL, 0x01B53846E0D4AC64ULL }, /* XSUM_XXH3_testdata[4398] */ + { 2199, 0x9E3779B185EBCA8DULL, 0xEC90604F2829F411ULL }, /* XSUM_XXH3_testdata[4399] */ + { 2200, 0x0000000000000000ULL, 0xF18C2A1C91B939AFULL }, /* XSUM_XXH3_testdata[4400] */ + { 2200, 0x9E3779B185EBCA8DULL, 0x8AF27110B8519E3DULL }, /* XSUM_XXH3_testdata[4401] */ + { 2201, 0x0000000000000000ULL, 0x4928A28948996E6DULL }, /* XSUM_XXH3_testdata[4402] */ + { 2201, 0x9E3779B185EBCA8DULL, 0xA22D2855F0D85572ULL }, /* XSUM_XXH3_testdata[4403] */ + { 2202, 0x0000000000000000ULL, 0xE948FCCAB5D2A3D7ULL }, /* XSUM_XXH3_testdata[4404] */ + { 2202, 0x9E3779B185EBCA8DULL, 0x8F6E2928A92848E3ULL }, /* XSUM_XXH3_testdata[4405] */ + { 2203, 0x0000000000000000ULL, 0xCBCC38906A5320E2ULL }, /* XSUM_XXH3_testdata[4406] */ + { 2203, 0x9E3779B185EBCA8DULL, 0x3C54CBDE2AC16F9EULL }, /* XSUM_XXH3_testdata[4407] */ + { 2204, 0x0000000000000000ULL, 0x5D48D592672E0092ULL }, /* XSUM_XXH3_testdata[4408] */ + { 2204, 0x9E3779B185EBCA8DULL, 0x8A0BC0C14F9F13E3ULL }, /* XSUM_XXH3_testdata[4409] */ + { 2205, 0x0000000000000000ULL, 0x46855E38CDED0819ULL }, /* XSUM_XXH3_testdata[4410] */ + { 2205, 0x9E3779B185EBCA8DULL, 0x75A04D065ACD038CULL }, /* XSUM_XXH3_testdata[4411] */ + { 2206, 0x0000000000000000ULL, 0x09358F24391EE1E7ULL }, /* XSUM_XXH3_testdata[4412] */ + { 2206, 0x9E3779B185EBCA8DULL, 0x41B3BB406058BD6DULL }, /* XSUM_XXH3_testdata[4413] */ + { 2207, 0x0000000000000000ULL, 0xF4C1F3BFB4B542A6ULL }, /* XSUM_XXH3_testdata[4414] */ + { 2207, 0x9E3779B185EBCA8DULL, 0x20459DD50113E516ULL }, /* XSUM_XXH3_testdata[4415] */ + { 2208, 0x0000000000000000ULL, 0x700315ED88C7E92AULL }, /* XSUM_XXH3_testdata[4416] */ + { 2208, 0x9E3779B185EBCA8DULL, 0xFAD72D454B231E1FULL }, /* XSUM_XXH3_testdata[4417] */ + { 2209, 0x0000000000000000ULL, 0xB4A84B3022803926ULL }, /* XSUM_XXH3_testdata[4418] */ + { 2209, 0x9E3779B185EBCA8DULL, 0x04217C50D815E8D2ULL }, /* XSUM_XXH3_testdata[4419] */ + { 2210, 0x0000000000000000ULL, 0xA240352B602854D2ULL }, /* XSUM_XXH3_testdata[4420] */ + { 2210, 0x9E3779B185EBCA8DULL, 0xD37F02C28289A656ULL }, /* XSUM_XXH3_testdata[4421] */ + { 2211, 0x0000000000000000ULL, 0x636FB1C6C3DBFE21ULL }, /* XSUM_XXH3_testdata[4422] */ + { 2211, 0x9E3779B185EBCA8DULL, 0x922BC8C06F60CA05ULL }, /* XSUM_XXH3_testdata[4423] */ + { 2212, 0x0000000000000000ULL, 0x8F7E08E639EE5396ULL }, /* XSUM_XXH3_testdata[4424] */ + { 2212, 0x9E3779B185EBCA8DULL, 0x291E3802522C3B4CULL }, /* XSUM_XXH3_testdata[4425] */ + { 2213, 0x0000000000000000ULL, 0x9687D287CCF00986ULL }, /* XSUM_XXH3_testdata[4426] */ + { 2213, 0x9E3779B185EBCA8DULL, 0x44468F4841381E7CULL }, /* XSUM_XXH3_testdata[4427] */ + { 2214, 0x0000000000000000ULL, 0xFC3AAB6F3C760BA7ULL }, /* XSUM_XXH3_testdata[4428] */ + { 2214, 0x9E3779B185EBCA8DULL, 0x477AD85736CD6177ULL }, /* XSUM_XXH3_testdata[4429] */ + { 2215, 0x0000000000000000ULL, 0x8E6365769D7FC136ULL }, /* XSUM_XXH3_testdata[4430] */ + { 2215, 0x9E3779B185EBCA8DULL, 0xD9569AC3A784F21DULL }, /* XSUM_XXH3_testdata[4431] */ + { 2216, 0x0000000000000000ULL, 0x3748F951EEE389F2ULL }, /* XSUM_XXH3_testdata[4432] */ + { 2216, 0x9E3779B185EBCA8DULL, 0xEFE43D389C338830ULL }, /* XSUM_XXH3_testdata[4433] */ + { 2217, 0x0000000000000000ULL, 0x34C121B698E9AF1FULL }, /* XSUM_XXH3_testdata[4434] */ + { 2217, 0x9E3779B185EBCA8DULL, 0x178415CFDCB7E73CULL }, /* XSUM_XXH3_testdata[4435] */ + { 2218, 0x0000000000000000ULL, 0xB51367FD5633A04EULL }, /* XSUM_XXH3_testdata[4436] */ + { 2218, 0x9E3779B185EBCA8DULL, 0xBC3A63FBADB4B27AULL }, /* XSUM_XXH3_testdata[4437] */ + { 2219, 0x0000000000000000ULL, 0x35D6A10601EBD042ULL }, /* XSUM_XXH3_testdata[4438] */ + { 2219, 0x9E3779B185EBCA8DULL, 0x359E000DA9C69A8FULL }, /* XSUM_XXH3_testdata[4439] */ + { 2220, 0x0000000000000000ULL, 0x4C283F09875945A8ULL }, /* XSUM_XXH3_testdata[4440] */ + { 2220, 0x9E3779B185EBCA8DULL, 0xEDD00581331B3A2AULL }, /* XSUM_XXH3_testdata[4441] */ + { 2221, 0x0000000000000000ULL, 0x27F10579DF439D79ULL }, /* XSUM_XXH3_testdata[4442] */ + { 2221, 0x9E3779B185EBCA8DULL, 0x0FC6A3B4F4FA84AFULL }, /* XSUM_XXH3_testdata[4443] */ + { 2222, 0x0000000000000000ULL, 0x1ADBD424A23E32DEULL }, /* XSUM_XXH3_testdata[4444] */ + { 2222, 0x9E3779B185EBCA8DULL, 0x7B38DE2656BD891FULL }, /* XSUM_XXH3_testdata[4445] */ + { 2223, 0x0000000000000000ULL, 0xDB429AE625C9FC6DULL }, /* XSUM_XXH3_testdata[4446] */ + { 2223, 0x9E3779B185EBCA8DULL, 0x933CA63106E3A4F5ULL }, /* XSUM_XXH3_testdata[4447] */ + { 2224, 0x0000000000000000ULL, 0x76F5F458101653A6ULL }, /* XSUM_XXH3_testdata[4448] */ + { 2224, 0x9E3779B185EBCA8DULL, 0x817E67E9987F2F90ULL }, /* XSUM_XXH3_testdata[4449] */ + { 2225, 0x0000000000000000ULL, 0x711540673D7438BBULL }, /* XSUM_XXH3_testdata[4450] */ + { 2225, 0x9E3779B185EBCA8DULL, 0x8331311180B2BB75ULL }, /* XSUM_XXH3_testdata[4451] */ + { 2226, 0x0000000000000000ULL, 0xEA382838600F6246ULL }, /* XSUM_XXH3_testdata[4452] */ + { 2226, 0x9E3779B185EBCA8DULL, 0x6B3384DD94F74CA7ULL }, /* XSUM_XXH3_testdata[4453] */ + { 2227, 0x0000000000000000ULL, 0x94AC31B78CBF3FD0ULL }, /* XSUM_XXH3_testdata[4454] */ + { 2227, 0x9E3779B185EBCA8DULL, 0xC155AD752682B118ULL }, /* XSUM_XXH3_testdata[4455] */ + { 2228, 0x0000000000000000ULL, 0x9CE739A7B0881A1DULL }, /* XSUM_XXH3_testdata[4456] */ + { 2228, 0x9E3779B185EBCA8DULL, 0x9E815FDB9F67F4EFULL }, /* XSUM_XXH3_testdata[4457] */ + { 2229, 0x0000000000000000ULL, 0x700388F67B075989ULL }, /* XSUM_XXH3_testdata[4458] */ + { 2229, 0x9E3779B185EBCA8DULL, 0x1F4FF8D340256EBDULL }, /* XSUM_XXH3_testdata[4459] */ + { 2230, 0x0000000000000000ULL, 0x6922538CFDE61217ULL }, /* XSUM_XXH3_testdata[4460] */ + { 2230, 0x9E3779B185EBCA8DULL, 0xC2518F847B8B641DULL }, /* XSUM_XXH3_testdata[4461] */ + { 2231, 0x0000000000000000ULL, 0xB683FC5049069978ULL }, /* XSUM_XXH3_testdata[4462] */ + { 2231, 0x9E3779B185EBCA8DULL, 0x5336697F84525839ULL }, /* XSUM_XXH3_testdata[4463] */ + { 2232, 0x0000000000000000ULL, 0xB1F34FE973A230AAULL }, /* XSUM_XXH3_testdata[4464] */ + { 2232, 0x9E3779B185EBCA8DULL, 0x61C662A59D44EB71ULL }, /* XSUM_XXH3_testdata[4465] */ + { 2233, 0x0000000000000000ULL, 0xB91B2F72A927AD7BULL }, /* XSUM_XXH3_testdata[4466] */ + { 2233, 0x9E3779B185EBCA8DULL, 0xF43F1270175D6FD0ULL }, /* XSUM_XXH3_testdata[4467] */ + { 2234, 0x0000000000000000ULL, 0x2E533EC105FE951FULL }, /* XSUM_XXH3_testdata[4468] */ + { 2234, 0x9E3779B185EBCA8DULL, 0xAC51A60B038799ABULL }, /* XSUM_XXH3_testdata[4469] */ + { 2235, 0x0000000000000000ULL, 0xB57A6D2663BD3318ULL }, /* XSUM_XXH3_testdata[4470] */ + { 2235, 0x9E3779B185EBCA8DULL, 0x6236E2EB27003B98ULL }, /* XSUM_XXH3_testdata[4471] */ + { 2236, 0x0000000000000000ULL, 0xACD57AC1C6A6751DULL }, /* XSUM_XXH3_testdata[4472] */ + { 2236, 0x9E3779B185EBCA8DULL, 0x0A3B7C12DD58733DULL }, /* XSUM_XXH3_testdata[4473] */ + { 2237, 0x0000000000000000ULL, 0xF403CEA1763CD9CCULL }, /* XSUM_XXH3_testdata[4474] */ + { 2237, 0x9E3779B185EBCA8DULL, 0xF7A5385336BEF410ULL }, /* XSUM_XXH3_testdata[4475] */ + { 2238, 0x0000000000000000ULL, 0xEEA5D3E6239E2D21ULL }, /* XSUM_XXH3_testdata[4476] */ + { 2238, 0x9E3779B185EBCA8DULL, 0xCB29898047ACB7EFULL }, /* XSUM_XXH3_testdata[4477] */ + { 2239, 0x0000000000000000ULL, 0xA72607BA9BB75B9BULL }, /* XSUM_XXH3_testdata[4478] */ + { 2239, 0x9E3779B185EBCA8DULL, 0x017F09BFBB6474DAULL }, /* XSUM_XXH3_testdata[4479] */ + { 2240, 0x0000000000000000ULL, 0x6E73A90539CF2948ULL }, /* XSUM_XXH3_testdata[4480] */ + { 2240, 0x9E3779B185EBCA8DULL, 0x757BA8487D1B5247ULL }, /* XSUM_XXH3_testdata[4481] */ + { 2241, 0x0000000000000000ULL, 0xE800ECA585FE92D9ULL }, /* XSUM_XXH3_testdata[4482] */ + { 2241, 0x9E3779B185EBCA8DULL, 0x3B33BDEC09C21950ULL }, /* XSUM_XXH3_testdata[4483] */ + { 2242, 0x0000000000000000ULL, 0x0FEB720613C813C3ULL }, /* XSUM_XXH3_testdata[4484] */ + { 2242, 0x9E3779B185EBCA8DULL, 0x45883187E8068D6CULL }, /* XSUM_XXH3_testdata[4485] */ + { 2243, 0x0000000000000000ULL, 0xFDD97DDF7A83E7A9ULL }, /* XSUM_XXH3_testdata[4486] */ + { 2243, 0x9E3779B185EBCA8DULL, 0xA2115D49B6729AEDULL }, /* XSUM_XXH3_testdata[4487] */ + { 2244, 0x0000000000000000ULL, 0x4171B56A25BAC312ULL }, /* XSUM_XXH3_testdata[4488] */ + { 2244, 0x9E3779B185EBCA8DULL, 0x173F38DE0FB9118FULL }, /* XSUM_XXH3_testdata[4489] */ + { 2245, 0x0000000000000000ULL, 0xC21734A280918825ULL }, /* XSUM_XXH3_testdata[4490] */ + { 2245, 0x9E3779B185EBCA8DULL, 0x3F7757BEE2F1A6E0ULL }, /* XSUM_XXH3_testdata[4491] */ + { 2246, 0x0000000000000000ULL, 0x982A35FE583FF9E2ULL }, /* XSUM_XXH3_testdata[4492] */ + { 2246, 0x9E3779B185EBCA8DULL, 0x1091A8124BCF0EE7ULL }, /* XSUM_XXH3_testdata[4493] */ + { 2247, 0x0000000000000000ULL, 0xFEE42592EF7949F4ULL }, /* XSUM_XXH3_testdata[4494] */ + { 2247, 0x9E3779B185EBCA8DULL, 0x12E829B9589D157AULL }, /* XSUM_XXH3_testdata[4495] */ + { 2248, 0x0000000000000000ULL, 0xF8D88BF42753ABEFULL }, /* XSUM_XXH3_testdata[4496] */ + { 2248, 0x9E3779B185EBCA8DULL, 0x43D2B06987075096ULL }, /* XSUM_XXH3_testdata[4497] */ + { 2249, 0x0000000000000000ULL, 0x433F7E65BABEFAE2ULL }, /* XSUM_XXH3_testdata[4498] */ + { 2249, 0x9E3779B185EBCA8DULL, 0xEB03510641F3EAF5ULL }, /* XSUM_XXH3_testdata[4499] */ + { 2250, 0x0000000000000000ULL, 0xCB6D8FCF1FBF3E2BULL }, /* XSUM_XXH3_testdata[4500] */ + { 2250, 0x9E3779B185EBCA8DULL, 0xE405262636B96B7BULL }, /* XSUM_XXH3_testdata[4501] */ + { 2251, 0x0000000000000000ULL, 0x88E4C80D03A165D4ULL }, /* XSUM_XXH3_testdata[4502] */ + { 2251, 0x9E3779B185EBCA8DULL, 0xE6B07A12A77D3525ULL }, /* XSUM_XXH3_testdata[4503] */ + { 2252, 0x0000000000000000ULL, 0x7EE028994641A9D0ULL }, /* XSUM_XXH3_testdata[4504] */ + { 2252, 0x9E3779B185EBCA8DULL, 0x766BC25749111756ULL }, /* XSUM_XXH3_testdata[4505] */ + { 2253, 0x0000000000000000ULL, 0xA9322E6F56357F96ULL }, /* XSUM_XXH3_testdata[4506] */ + { 2253, 0x9E3779B185EBCA8DULL, 0x2D6E4A271DBBF521ULL }, /* XSUM_XXH3_testdata[4507] */ + { 2254, 0x0000000000000000ULL, 0xD15B147C188AA2BBULL }, /* XSUM_XXH3_testdata[4508] */ + { 2254, 0x9E3779B185EBCA8DULL, 0x7A4C01C9E6C70CCDULL }, /* XSUM_XXH3_testdata[4509] */ + { 2255, 0x0000000000000000ULL, 0xDF32168D24541296ULL }, /* XSUM_XXH3_testdata[4510] */ + { 2255, 0x9E3779B185EBCA8DULL, 0x4EF59C308318E6C4ULL }, /* XSUM_XXH3_testdata[4511] */ + { 2256, 0x0000000000000000ULL, 0x73B27BE044941B9AULL }, /* XSUM_XXH3_testdata[4512] */ + { 2256, 0x9E3779B185EBCA8DULL, 0xA95CC44C98A25F24ULL }, /* XSUM_XXH3_testdata[4513] */ + { 2257, 0x0000000000000000ULL, 0xB7FF030FE002B07AULL }, /* XSUM_XXH3_testdata[4514] */ + { 2257, 0x9E3779B185EBCA8DULL, 0xD5D5A36A92895385ULL }, /* XSUM_XXH3_testdata[4515] */ + { 2258, 0x0000000000000000ULL, 0x3A79D49D11BC482DULL }, /* XSUM_XXH3_testdata[4516] */ + { 2258, 0x9E3779B185EBCA8DULL, 0xA640B7A60386F7C4ULL }, /* XSUM_XXH3_testdata[4517] */ + { 2259, 0x0000000000000000ULL, 0xEAA7DDE52003DB2BULL }, /* XSUM_XXH3_testdata[4518] */ + { 2259, 0x9E3779B185EBCA8DULL, 0x0A9F761E2DA46512ULL }, /* XSUM_XXH3_testdata[4519] */ + { 2260, 0x0000000000000000ULL, 0x806C898C78E7C075ULL }, /* XSUM_XXH3_testdata[4520] */ + { 2260, 0x9E3779B185EBCA8DULL, 0xBF57DC6510BEFADEULL }, /* XSUM_XXH3_testdata[4521] */ + { 2261, 0x0000000000000000ULL, 0x6B80C72796FD5086ULL }, /* XSUM_XXH3_testdata[4522] */ + { 2261, 0x9E3779B185EBCA8DULL, 0x9A0504ADFE069F95ULL }, /* XSUM_XXH3_testdata[4523] */ + { 2262, 0x0000000000000000ULL, 0xAD917992036A3B5AULL }, /* XSUM_XXH3_testdata[4524] */ + { 2262, 0x9E3779B185EBCA8DULL, 0x3FAE6607A704C6FDULL }, /* XSUM_XXH3_testdata[4525] */ + { 2263, 0x0000000000000000ULL, 0xD5C4096846EFC9FAULL }, /* XSUM_XXH3_testdata[4526] */ + { 2263, 0x9E3779B185EBCA8DULL, 0xA59FC9AE584E4FFCULL }, /* XSUM_XXH3_testdata[4527] */ + { 2264, 0x0000000000000000ULL, 0xC90E31857B03E2D8ULL }, /* XSUM_XXH3_testdata[4528] */ + { 2264, 0x9E3779B185EBCA8DULL, 0x517AE8E7C0CA7721ULL }, /* XSUM_XXH3_testdata[4529] */ + { 2265, 0x0000000000000000ULL, 0x0A338421E1E95A00ULL }, /* XSUM_XXH3_testdata[4530] */ + { 2265, 0x9E3779B185EBCA8DULL, 0x49166C0E030CE3C2ULL }, /* XSUM_XXH3_testdata[4531] */ + { 2266, 0x0000000000000000ULL, 0x442ACE25D6B1D5F9ULL }, /* XSUM_XXH3_testdata[4532] */ + { 2266, 0x9E3779B185EBCA8DULL, 0x560649A1EE97FFECULL }, /* XSUM_XXH3_testdata[4533] */ + { 2267, 0x0000000000000000ULL, 0x62832B7DC5917770ULL }, /* XSUM_XXH3_testdata[4534] */ + { 2267, 0x9E3779B185EBCA8DULL, 0x9F21B3BC256217CDULL }, /* XSUM_XXH3_testdata[4535] */ + { 2268, 0x0000000000000000ULL, 0x85E736777334BEB3ULL }, /* XSUM_XXH3_testdata[4536] */ + { 2268, 0x9E3779B185EBCA8DULL, 0x085EB6DE430CBC01ULL }, /* XSUM_XXH3_testdata[4537] */ + { 2269, 0x0000000000000000ULL, 0xB152650BDF04F3BDULL }, /* XSUM_XXH3_testdata[4538] */ + { 2269, 0x9E3779B185EBCA8DULL, 0x59EE9A7FFA69591CULL }, /* XSUM_XXH3_testdata[4539] */ + { 2270, 0x0000000000000000ULL, 0x7A78609851DB8E6CULL }, /* XSUM_XXH3_testdata[4540] */ + { 2270, 0x9E3779B185EBCA8DULL, 0xA9DB0E062FA3A378ULL }, /* XSUM_XXH3_testdata[4541] */ + { 2271, 0x0000000000000000ULL, 0x0DE4C74FC715BB66ULL }, /* XSUM_XXH3_testdata[4542] */ + { 2271, 0x9E3779B185EBCA8DULL, 0x9667350BB9742CC2ULL }, /* XSUM_XXH3_testdata[4543] */ + { 2272, 0x0000000000000000ULL, 0x205BA204206B1EA8ULL }, /* XSUM_XXH3_testdata[4544] */ + { 2272, 0x9E3779B185EBCA8DULL, 0x65060EF03CA34352ULL }, /* XSUM_XXH3_testdata[4545] */ + { 2273, 0x0000000000000000ULL, 0x78F18EA9AFB2BFA6ULL }, /* XSUM_XXH3_testdata[4546] */ + { 2273, 0x9E3779B185EBCA8DULL, 0xE03E1E75C4F2ADC8ULL }, /* XSUM_XXH3_testdata[4547] */ + { 2274, 0x0000000000000000ULL, 0xC95182F464F94C39ULL }, /* XSUM_XXH3_testdata[4548] */ + { 2274, 0x9E3779B185EBCA8DULL, 0xF124B16F1B073F14ULL }, /* XSUM_XXH3_testdata[4549] */ + { 2275, 0x0000000000000000ULL, 0x136A53CC1DAD378DULL }, /* XSUM_XXH3_testdata[4550] */ + { 2275, 0x9E3779B185EBCA8DULL, 0xF3D85D25178CA3CEULL }, /* XSUM_XXH3_testdata[4551] */ + { 2276, 0x0000000000000000ULL, 0x27C664F033387D11ULL }, /* XSUM_XXH3_testdata[4552] */ + { 2276, 0x9E3779B185EBCA8DULL, 0x63F3842BC044F50CULL }, /* XSUM_XXH3_testdata[4553] */ + { 2277, 0x0000000000000000ULL, 0x77B856EDB92FD06EULL }, /* XSUM_XXH3_testdata[4554] */ + { 2277, 0x9E3779B185EBCA8DULL, 0x593AA4B7B0BAE338ULL }, /* XSUM_XXH3_testdata[4555] */ + { 2278, 0x0000000000000000ULL, 0x1D47AFAB4DF2449BULL }, /* XSUM_XXH3_testdata[4556] */ + { 2278, 0x9E3779B185EBCA8DULL, 0x8E5C48BB76EF91C6ULL }, /* XSUM_XXH3_testdata[4557] */ + { 2279, 0x0000000000000000ULL, 0x0D7B7656E77FF387ULL }, /* XSUM_XXH3_testdata[4558] */ + { 2279, 0x9E3779B185EBCA8DULL, 0x3B27C87292A3A4C6ULL }, /* XSUM_XXH3_testdata[4559] */ + { 2280, 0x0000000000000000ULL, 0xBEDCDF7203D9E958ULL }, /* XSUM_XXH3_testdata[4560] */ + { 2280, 0x9E3779B185EBCA8DULL, 0x06AC4295AE6C291BULL }, /* XSUM_XXH3_testdata[4561] */ + { 2281, 0x0000000000000000ULL, 0xA1E08B2F1E533106ULL }, /* XSUM_XXH3_testdata[4562] */ + { 2281, 0x9E3779B185EBCA8DULL, 0x53FA8D8EEF4A1C63ULL }, /* XSUM_XXH3_testdata[4563] */ + { 2282, 0x0000000000000000ULL, 0x3EF3E8E701C0C7B4ULL }, /* XSUM_XXH3_testdata[4564] */ + { 2282, 0x9E3779B185EBCA8DULL, 0xE0FD1C44964D8D77ULL }, /* XSUM_XXH3_testdata[4565] */ + { 2283, 0x0000000000000000ULL, 0xC565B056636147AEULL }, /* XSUM_XXH3_testdata[4566] */ + { 2283, 0x9E3779B185EBCA8DULL, 0x3B002D7D59F1A1B2ULL }, /* XSUM_XXH3_testdata[4567] */ + { 2284, 0x0000000000000000ULL, 0x09A3D58C702C1043ULL }, /* XSUM_XXH3_testdata[4568] */ + { 2284, 0x9E3779B185EBCA8DULL, 0x120E2516F3560387ULL }, /* XSUM_XXH3_testdata[4569] */ + { 2285, 0x0000000000000000ULL, 0xBE7D2B875A7C12DFULL }, /* XSUM_XXH3_testdata[4570] */ + { 2285, 0x9E3779B185EBCA8DULL, 0xC08D9B2134293E93ULL }, /* XSUM_XXH3_testdata[4571] */ + { 2286, 0x0000000000000000ULL, 0x955BF3D2E94FD1FFULL }, /* XSUM_XXH3_testdata[4572] */ + { 2286, 0x9E3779B185EBCA8DULL, 0xAA5CE1EDB06F7908ULL }, /* XSUM_XXH3_testdata[4573] */ + { 2287, 0x0000000000000000ULL, 0xECD34428F06D5BFDULL }, /* XSUM_XXH3_testdata[4574] */ + { 2287, 0x9E3779B185EBCA8DULL, 0x35880E98EEA5FF86ULL }, /* XSUM_XXH3_testdata[4575] */ + { 2288, 0x0000000000000000ULL, 0xC945F58A3E11BBBFULL }, /* XSUM_XXH3_testdata[4576] */ + { 2288, 0x9E3779B185EBCA8DULL, 0x99A70C813A3A8A06ULL }, /* XSUM_XXH3_testdata[4577] */ + { 2289, 0x0000000000000000ULL, 0x2A1B1D4258A3EAD9ULL }, /* XSUM_XXH3_testdata[4578] */ + { 2289, 0x9E3779B185EBCA8DULL, 0x026E77D4FFBBA3F7ULL }, /* XSUM_XXH3_testdata[4579] */ + { 2290, 0x0000000000000000ULL, 0x737A11187E3CC729ULL }, /* XSUM_XXH3_testdata[4580] */ + { 2290, 0x9E3779B185EBCA8DULL, 0xD890E8F23AC2243DULL }, /* XSUM_XXH3_testdata[4581] */ + { 2291, 0x0000000000000000ULL, 0xD8B8D24905007477ULL }, /* XSUM_XXH3_testdata[4582] */ + { 2291, 0x9E3779B185EBCA8DULL, 0xC612772E5EFD06FCULL }, /* XSUM_XXH3_testdata[4583] */ + { 2292, 0x0000000000000000ULL, 0x75979C65433116DFULL }, /* XSUM_XXH3_testdata[4584] */ + { 2292, 0x9E3779B185EBCA8DULL, 0xF6834E2FA35BF140ULL }, /* XSUM_XXH3_testdata[4585] */ + { 2293, 0x0000000000000000ULL, 0xC6B24469C52F92F0ULL }, /* XSUM_XXH3_testdata[4586] */ + { 2293, 0x9E3779B185EBCA8DULL, 0xDB3D609B07535CDAULL }, /* XSUM_XXH3_testdata[4587] */ + { 2294, 0x0000000000000000ULL, 0x65BB90A9381B412AULL }, /* XSUM_XXH3_testdata[4588] */ + { 2294, 0x9E3779B185EBCA8DULL, 0x9E48CE2F501345AFULL }, /* XSUM_XXH3_testdata[4589] */ + { 2295, 0x0000000000000000ULL, 0x005CF4C4F7FEB7E7ULL }, /* XSUM_XXH3_testdata[4590] */ + { 2295, 0x9E3779B185EBCA8DULL, 0x3012626B178A2890ULL }, /* XSUM_XXH3_testdata[4591] */ + { 2296, 0x0000000000000000ULL, 0xD22B7B9D733C15EBULL }, /* XSUM_XXH3_testdata[4592] */ + { 2296, 0x9E3779B185EBCA8DULL, 0xF1401C2EABBC67BFULL }, /* XSUM_XXH3_testdata[4593] */ + { 2297, 0x0000000000000000ULL, 0x8BAF32C8CD870138ULL }, /* XSUM_XXH3_testdata[4594] */ + { 2297, 0x9E3779B185EBCA8DULL, 0xDD48C8721FF0FF99ULL }, /* XSUM_XXH3_testdata[4595] */ + { 2298, 0x0000000000000000ULL, 0xC39C343085640F78ULL }, /* XSUM_XXH3_testdata[4596] */ + { 2298, 0x9E3779B185EBCA8DULL, 0x39263D88E4B12DECULL }, /* XSUM_XXH3_testdata[4597] */ + { 2299, 0x0000000000000000ULL, 0x883DF03717BF1809ULL }, /* XSUM_XXH3_testdata[4598] */ + { 2299, 0x9E3779B185EBCA8DULL, 0xAD7775D2C13889B7ULL }, /* XSUM_XXH3_testdata[4599] */ + { 2300, 0x0000000000000000ULL, 0xE94780E1098E8AD5ULL }, /* XSUM_XXH3_testdata[4600] */ + { 2300, 0x9E3779B185EBCA8DULL, 0x49C30E77841F419EULL }, /* XSUM_XXH3_testdata[4601] */ + { 2301, 0x0000000000000000ULL, 0xB49F4AB400E3588BULL }, /* XSUM_XXH3_testdata[4602] */ + { 2301, 0x9E3779B185EBCA8DULL, 0xC0B43B291C7D50E2ULL }, /* XSUM_XXH3_testdata[4603] */ + { 2302, 0x0000000000000000ULL, 0xED4FE85093C1F085ULL }, /* XSUM_XXH3_testdata[4604] */ + { 2302, 0x9E3779B185EBCA8DULL, 0x63AFDAE0A1025D7CULL }, /* XSUM_XXH3_testdata[4605] */ + { 2303, 0x0000000000000000ULL, 0xF3DE079F959D331FULL }, /* XSUM_XXH3_testdata[4606] */ + { 2303, 0x9E3779B185EBCA8DULL, 0xADC58DC8F5685791ULL }, /* XSUM_XXH3_testdata[4607] */ + { 2304, 0x0000000000000000ULL, 0x16677470A0BCA896ULL }, /* XSUM_XXH3_testdata[4608] */ + { 2304, 0x9E3779B185EBCA8DULL, 0x19DD85F7C3CD2427ULL }, /* XSUM_XXH3_testdata[4609] */ + { 2305, 0x0000000000000000ULL, 0xEEDF43B5C7B9728CULL }, /* XSUM_XXH3_testdata[4610] */ + { 2305, 0x9E3779B185EBCA8DULL, 0xC3ECE12FE8DC206EULL }, /* XSUM_XXH3_testdata[4611] */ + { 2306, 0x0000000000000000ULL, 0x67586E22E7918464ULL }, /* XSUM_XXH3_testdata[4612] */ + { 2306, 0x9E3779B185EBCA8DULL, 0x699DA7854C898E24ULL }, /* XSUM_XXH3_testdata[4613] */ + { 2307, 0x0000000000000000ULL, 0xE6B9B555EC783F03ULL }, /* XSUM_XXH3_testdata[4614] */ + { 2307, 0x9E3779B185EBCA8DULL, 0x85E3784DE2E5875BULL }, /* XSUM_XXH3_testdata[4615] */ + { 2308, 0x0000000000000000ULL, 0x7C3C6B95D57777E4ULL }, /* XSUM_XXH3_testdata[4616] */ + { 2308, 0x9E3779B185EBCA8DULL, 0x2BAF3E6A01143518ULL }, /* XSUM_XXH3_testdata[4617] */ + { 2309, 0x0000000000000000ULL, 0xB2D2F7E9194C38C8ULL }, /* XSUM_XXH3_testdata[4618] */ + { 2309, 0x9E3779B185EBCA8DULL, 0x08CFA0325B330C15ULL }, /* XSUM_XXH3_testdata[4619] */ + { 2310, 0x0000000000000000ULL, 0x93BD3D647C099F3CULL }, /* XSUM_XXH3_testdata[4620] */ + { 2310, 0x9E3779B185EBCA8DULL, 0xA31975D7871B3AE2ULL }, /* XSUM_XXH3_testdata[4621] */ + { 2311, 0x0000000000000000ULL, 0x9DDB170614BB9FB5ULL }, /* XSUM_XXH3_testdata[4622] */ + { 2311, 0x9E3779B185EBCA8DULL, 0x64EB1577898D85ABULL }, /* XSUM_XXH3_testdata[4623] */ + { 2312, 0x0000000000000000ULL, 0x03510487528E3167ULL }, /* XSUM_XXH3_testdata[4624] */ + { 2312, 0x9E3779B185EBCA8DULL, 0x569C5D84FBA7D5D8ULL }, /* XSUM_XXH3_testdata[4625] */ + { 2313, 0x0000000000000000ULL, 0x83F66CE2C603CD7AULL }, /* XSUM_XXH3_testdata[4626] */ + { 2313, 0x9E3779B185EBCA8DULL, 0x5FE69DBD86E8207CULL }, /* XSUM_XXH3_testdata[4627] */ + { 2314, 0x0000000000000000ULL, 0x3E340E2AA806D580ULL }, /* XSUM_XXH3_testdata[4628] */ + { 2314, 0x9E3779B185EBCA8DULL, 0xCCFDA55FF364E867ULL }, /* XSUM_XXH3_testdata[4629] */ + { 2315, 0x0000000000000000ULL, 0x77948228CAAC839FULL }, /* XSUM_XXH3_testdata[4630] */ + { 2315, 0x9E3779B185EBCA8DULL, 0xD867BD5C820D7CA4ULL }, /* XSUM_XXH3_testdata[4631] */ + { 2316, 0x0000000000000000ULL, 0xA358FC1C95EDEFB1ULL }, /* XSUM_XXH3_testdata[4632] */ + { 2316, 0x9E3779B185EBCA8DULL, 0xBE86C4D4964F616DULL }, /* XSUM_XXH3_testdata[4633] */ + { 2317, 0x0000000000000000ULL, 0x592C2C674DBFA5E1ULL }, /* XSUM_XXH3_testdata[4634] */ + { 2317, 0x9E3779B185EBCA8DULL, 0xB961DC246722DFE2ULL }, /* XSUM_XXH3_testdata[4635] */ + { 2318, 0x0000000000000000ULL, 0x9D78B13CE3C7FE25ULL }, /* XSUM_XXH3_testdata[4636] */ + { 2318, 0x9E3779B185EBCA8DULL, 0xE6B8F5ECDD2BEDE7ULL }, /* XSUM_XXH3_testdata[4637] */ + { 2319, 0x0000000000000000ULL, 0xB93E58276543CBFEULL }, /* XSUM_XXH3_testdata[4638] */ + { 2319, 0x9E3779B185EBCA8DULL, 0x7249F4DBA19A2F6BULL }, /* XSUM_XXH3_testdata[4639] */ + { 2320, 0x0000000000000000ULL, 0xDEAD306DC84A30E3ULL }, /* XSUM_XXH3_testdata[4640] */ + { 2320, 0x9E3779B185EBCA8DULL, 0x25A12038A67CF226ULL }, /* XSUM_XXH3_testdata[4641] */ + { 2321, 0x0000000000000000ULL, 0x68C9AEEC565E82B9ULL }, /* XSUM_XXH3_testdata[4642] */ + { 2321, 0x9E3779B185EBCA8DULL, 0x6FDC93837DB71F1FULL }, /* XSUM_XXH3_testdata[4643] */ + { 2322, 0x0000000000000000ULL, 0xEF1D98CB4B1C4457ULL }, /* XSUM_XXH3_testdata[4644] */ + { 2322, 0x9E3779B185EBCA8DULL, 0x56871B4AD7DE1080ULL }, /* XSUM_XXH3_testdata[4645] */ + { 2323, 0x0000000000000000ULL, 0xB6163E363790B29BULL }, /* XSUM_XXH3_testdata[4646] */ + { 2323, 0x9E3779B185EBCA8DULL, 0x005293AC1F8D8089ULL }, /* XSUM_XXH3_testdata[4647] */ + { 2324, 0x0000000000000000ULL, 0x9F8BC517258F98E6ULL }, /* XSUM_XXH3_testdata[4648] */ + { 2324, 0x9E3779B185EBCA8DULL, 0x7C4CE8558C514DDEULL }, /* XSUM_XXH3_testdata[4649] */ + { 2325, 0x0000000000000000ULL, 0x177BEB437391C2B4ULL }, /* XSUM_XXH3_testdata[4650] */ + { 2325, 0x9E3779B185EBCA8DULL, 0xA71D1BD2B3918CFCULL }, /* XSUM_XXH3_testdata[4651] */ + { 2326, 0x0000000000000000ULL, 0x105176B2B29D46EDULL }, /* XSUM_XXH3_testdata[4652] */ + { 2326, 0x9E3779B185EBCA8DULL, 0x44914594F5678B2BULL }, /* XSUM_XXH3_testdata[4653] */ + { 2327, 0x0000000000000000ULL, 0x75F20D803272333FULL }, /* XSUM_XXH3_testdata[4654] */ + { 2327, 0x9E3779B185EBCA8DULL, 0xC09622708F32C51DULL }, /* XSUM_XXH3_testdata[4655] */ + { 2328, 0x0000000000000000ULL, 0xC9840B7DF3679DE5ULL }, /* XSUM_XXH3_testdata[4656] */ + { 2328, 0x9E3779B185EBCA8DULL, 0x0628F71DEF9CA9B9ULL }, /* XSUM_XXH3_testdata[4657] */ + { 2329, 0x0000000000000000ULL, 0x547CD6B9CC06F4E1ULL }, /* XSUM_XXH3_testdata[4658] */ + { 2329, 0x9E3779B185EBCA8DULL, 0xFCD3AB14BE7B942BULL }, /* XSUM_XXH3_testdata[4659] */ + { 2330, 0x0000000000000000ULL, 0x00DDC3B84881B56AULL }, /* XSUM_XXH3_testdata[4660] */ + { 2330, 0x9E3779B185EBCA8DULL, 0xBCE205376DBCA1CEULL }, /* XSUM_XXH3_testdata[4661] */ + { 2331, 0x0000000000000000ULL, 0xC6E1FB47CC10BD0CULL }, /* XSUM_XXH3_testdata[4662] */ + { 2331, 0x9E3779B185EBCA8DULL, 0x5ED1015A48245D1AULL }, /* XSUM_XXH3_testdata[4663] */ + { 2332, 0x0000000000000000ULL, 0xC203CF14C7812768ULL }, /* XSUM_XXH3_testdata[4664] */ + { 2332, 0x9E3779B185EBCA8DULL, 0xAE6CED78162528BDULL }, /* XSUM_XXH3_testdata[4665] */ + { 2333, 0x0000000000000000ULL, 0xDB94037DD38C9779ULL }, /* XSUM_XXH3_testdata[4666] */ + { 2333, 0x9E3779B185EBCA8DULL, 0x0C4467D21B8A15B8ULL }, /* XSUM_XXH3_testdata[4667] */ + { 2334, 0x0000000000000000ULL, 0x25219C6EACA8B876ULL }, /* XSUM_XXH3_testdata[4668] */ + { 2334, 0x9E3779B185EBCA8DULL, 0x237F51AF413D775CULL }, /* XSUM_XXH3_testdata[4669] */ + { 2335, 0x0000000000000000ULL, 0x84761CF8AD8FDCDCULL }, /* XSUM_XXH3_testdata[4670] */ + { 2335, 0x9E3779B185EBCA8DULL, 0x51034B3E374768BEULL }, /* XSUM_XXH3_testdata[4671] */ + { 2336, 0x0000000000000000ULL, 0x646ADDC91C20C0D1ULL }, /* XSUM_XXH3_testdata[4672] */ + { 2336, 0x9E3779B185EBCA8DULL, 0x8A6FA9B4EE2D3EDCULL }, /* XSUM_XXH3_testdata[4673] */ + { 2337, 0x0000000000000000ULL, 0x7C7CC3761B3E4ED1ULL }, /* XSUM_XXH3_testdata[4674] */ + { 2337, 0x9E3779B185EBCA8DULL, 0x9773B70EEF4BE554ULL }, /* XSUM_XXH3_testdata[4675] */ + { 2338, 0x0000000000000000ULL, 0xF8D4E0C09F0B9413ULL }, /* XSUM_XXH3_testdata[4676] */ + { 2338, 0x9E3779B185EBCA8DULL, 0xC28F33A33B3C0D06ULL }, /* XSUM_XXH3_testdata[4677] */ + { 2339, 0x0000000000000000ULL, 0xE90E496E95E28D0AULL }, /* XSUM_XXH3_testdata[4678] */ + { 2339, 0x9E3779B185EBCA8DULL, 0xB73CB73CB16C6B32ULL }, /* XSUM_XXH3_testdata[4679] */ + { 2340, 0x0000000000000000ULL, 0xB4671C7890A22982ULL }, /* XSUM_XXH3_testdata[4680] */ + { 2340, 0x9E3779B185EBCA8DULL, 0xD09CFEC7F9E99B8AULL }, /* XSUM_XXH3_testdata[4681] */ + { 2341, 0x0000000000000000ULL, 0x8165023FDB696528ULL }, /* XSUM_XXH3_testdata[4682] */ + { 2341, 0x9E3779B185EBCA8DULL, 0xC75F1A3C09DC2EC0ULL }, /* XSUM_XXH3_testdata[4683] */ + { 2342, 0x0000000000000000ULL, 0x3645D41D79592A95ULL }, /* XSUM_XXH3_testdata[4684] */ + { 2342, 0x9E3779B185EBCA8DULL, 0x6F4452A6467783B0ULL }, /* XSUM_XXH3_testdata[4685] */ + { 2343, 0x0000000000000000ULL, 0xF1ED40282C8884CBULL }, /* XSUM_XXH3_testdata[4686] */ + { 2343, 0x9E3779B185EBCA8DULL, 0xC587035C7782FDDAULL }, /* XSUM_XXH3_testdata[4687] */ + { 2344, 0x0000000000000000ULL, 0xA96F48DD5C721FBAULL }, /* XSUM_XXH3_testdata[4688] */ + { 2344, 0x9E3779B185EBCA8DULL, 0xD0ABE3F8FD5C7916ULL }, /* XSUM_XXH3_testdata[4689] */ + { 2345, 0x0000000000000000ULL, 0xC19A80FAAECE9A70ULL }, /* XSUM_XXH3_testdata[4690] */ + { 2345, 0x9E3779B185EBCA8DULL, 0x6F2D171632F42DB9ULL }, /* XSUM_XXH3_testdata[4691] */ + { 2346, 0x0000000000000000ULL, 0x897BE763FFB155DEULL }, /* XSUM_XXH3_testdata[4692] */ + { 2346, 0x9E3779B185EBCA8DULL, 0xD63E55AE9C453BFBULL }, /* XSUM_XXH3_testdata[4693] */ + { 2347, 0x0000000000000000ULL, 0x4D7CF54782AF36FCULL }, /* XSUM_XXH3_testdata[4694] */ + { 2347, 0x9E3779B185EBCA8DULL, 0x9D7706F5DBC683A6ULL }, /* XSUM_XXH3_testdata[4695] */ + { 2348, 0x0000000000000000ULL, 0x384DA1B1646A9E71ULL }, /* XSUM_XXH3_testdata[4696] */ + { 2348, 0x9E3779B185EBCA8DULL, 0x8C629241D98ACC4EULL }, /* XSUM_XXH3_testdata[4697] */ + { 2349, 0x0000000000000000ULL, 0x9B207D3155536F74ULL }, /* XSUM_XXH3_testdata[4698] */ + { 2349, 0x9E3779B185EBCA8DULL, 0x89D7E8E4EC5494E3ULL }, /* XSUM_XXH3_testdata[4699] */ + { 2350, 0x0000000000000000ULL, 0x8AA5382300DB7666ULL }, /* XSUM_XXH3_testdata[4700] */ + { 2350, 0x9E3779B185EBCA8DULL, 0x2B8D20FA052D2516ULL }, /* XSUM_XXH3_testdata[4701] */ + { 2351, 0x0000000000000000ULL, 0xE12F860E909E7476ULL }, /* XSUM_XXH3_testdata[4702] */ + { 2351, 0x9E3779B185EBCA8DULL, 0x4A7D9E732CF06A13ULL }, /* XSUM_XXH3_testdata[4703] */ + { 2352, 0x0000000000000000ULL, 0xE6E05AF95207F6D3ULL }, /* XSUM_XXH3_testdata[4704] */ + { 2352, 0x9E3779B185EBCA8DULL, 0x5FF208793633440DULL }, /* XSUM_XXH3_testdata[4705] */ + { 2353, 0x0000000000000000ULL, 0xC4B549BA270A8004ULL }, /* XSUM_XXH3_testdata[4706] */ + { 2353, 0x9E3779B185EBCA8DULL, 0xC66B48806F287F63ULL }, /* XSUM_XXH3_testdata[4707] */ + { 2354, 0x0000000000000000ULL, 0xC7803065E2803D31ULL }, /* XSUM_XXH3_testdata[4708] */ + { 2354, 0x9E3779B185EBCA8DULL, 0xB2D6B5A38A32F560ULL }, /* XSUM_XXH3_testdata[4709] */ + { 2355, 0x0000000000000000ULL, 0xC7500A98B2BFF9AEULL }, /* XSUM_XXH3_testdata[4710] */ + { 2355, 0x9E3779B185EBCA8DULL, 0x562D14A99EAD5989ULL }, /* XSUM_XXH3_testdata[4711] */ + { 2356, 0x0000000000000000ULL, 0x6CA7DF44BE47E963ULL }, /* XSUM_XXH3_testdata[4712] */ + { 2356, 0x9E3779B185EBCA8DULL, 0x3AD492F595F77BAEULL }, /* XSUM_XXH3_testdata[4713] */ + { 2357, 0x0000000000000000ULL, 0x26F4AC8EFB39794BULL }, /* XSUM_XXH3_testdata[4714] */ + { 2357, 0x9E3779B185EBCA8DULL, 0xFDB28975A00FBF75ULL }, /* XSUM_XXH3_testdata[4715] */ + { 2358, 0x0000000000000000ULL, 0x89396B87DA30246FULL }, /* XSUM_XXH3_testdata[4716] */ + { 2358, 0x9E3779B185EBCA8DULL, 0x78C3FBE50A336A70ULL }, /* XSUM_XXH3_testdata[4717] */ + { 2359, 0x0000000000000000ULL, 0x5F1D193EFE8747BDULL }, /* XSUM_XXH3_testdata[4718] */ + { 2359, 0x9E3779B185EBCA8DULL, 0xF7DE5F7358D5A96FULL }, /* XSUM_XXH3_testdata[4719] */ + { 2360, 0x0000000000000000ULL, 0xEF123E59AB08BFAFULL }, /* XSUM_XXH3_testdata[4720] */ + { 2360, 0x9E3779B185EBCA8DULL, 0x235D1359CF0B0F68ULL }, /* XSUM_XXH3_testdata[4721] */ + { 2361, 0x0000000000000000ULL, 0x400D81A69F810FCFULL }, /* XSUM_XXH3_testdata[4722] */ + { 2361, 0x9E3779B185EBCA8DULL, 0x5A148B49DA75B74CULL }, /* XSUM_XXH3_testdata[4723] */ + { 2362, 0x0000000000000000ULL, 0x0A3AC0A24D2ECAC1ULL }, /* XSUM_XXH3_testdata[4724] */ + { 2362, 0x9E3779B185EBCA8DULL, 0xE01DE938B8193FE3ULL }, /* XSUM_XXH3_testdata[4725] */ + { 2363, 0x0000000000000000ULL, 0x383581330EFB7EF0ULL }, /* XSUM_XXH3_testdata[4726] */ + { 2363, 0x9E3779B185EBCA8DULL, 0xEADA25B2100BFCF8ULL }, /* XSUM_XXH3_testdata[4727] */ + { 2364, 0x0000000000000000ULL, 0xBD10928B3A5C1EE5ULL }, /* XSUM_XXH3_testdata[4728] */ + { 2364, 0x9E3779B185EBCA8DULL, 0xFDD30758359B8B48ULL }, /* XSUM_XXH3_testdata[4729] */ + { 2365, 0x0000000000000000ULL, 0x4AD7F9F1BF8D2D6EULL }, /* XSUM_XXH3_testdata[4730] */ + { 2365, 0x9E3779B185EBCA8DULL, 0xA267CE28E79A6282ULL }, /* XSUM_XXH3_testdata[4731] */ + { 2366, 0x0000000000000000ULL, 0xAE5743D5B81D5B9EULL }, /* XSUM_XXH3_testdata[4732] */ + { 2366, 0x9E3779B185EBCA8DULL, 0xFCEAD1CC5E07B6A9ULL }, /* XSUM_XXH3_testdata[4733] */ + { 2367, 0x0000000000000000ULL, 0xCB37AEB9E5D361EDULL }, /* XSUM_XXH3_testdata[4734] */ + { 2367, 0x9E3779B185EBCA8DULL, 0xD2DB3415B942B42AULL }, /* XSUM_XXH3_testdata[4735] */ + { 2368, 0x0000000000000000ULL, 0x7BF80846CEB7121FULL }, /* XSUM_XXH3_testdata[4736] */ + { 2368, 0x9E3779B185EBCA8DULL, 0xDAC21692ACD4E7B6ULL }, /* XSUM_XXH3_testdata[4737] */ + { 2369, 0x0000000000000000ULL, 0xAC9EF0983F8A4E2DULL }, /* XSUM_XXH3_testdata[4738] */ + { 2369, 0x9E3779B185EBCA8DULL, 0x1EC405082AC801E7ULL }, /* XSUM_XXH3_testdata[4739] */ + { 2370, 0x0000000000000000ULL, 0x2D634985896B31D0ULL }, /* XSUM_XXH3_testdata[4740] */ + { 2370, 0x9E3779B185EBCA8DULL, 0xD1917CFB6834266CULL }, /* XSUM_XXH3_testdata[4741] */ + { 2371, 0x0000000000000000ULL, 0xAB602C01606BF9CCULL }, /* XSUM_XXH3_testdata[4742] */ + { 2371, 0x9E3779B185EBCA8DULL, 0xEE3535106BCE8956ULL }, /* XSUM_XXH3_testdata[4743] */ + { 2372, 0x0000000000000000ULL, 0x9FC8DCA3B47EA5ADULL }, /* XSUM_XXH3_testdata[4744] */ + { 2372, 0x9E3779B185EBCA8DULL, 0x1418AD973790D956ULL }, /* XSUM_XXH3_testdata[4745] */ + { 2373, 0x0000000000000000ULL, 0xF9AEEDEB5DBFFA68ULL }, /* XSUM_XXH3_testdata[4746] */ + { 2373, 0x9E3779B185EBCA8DULL, 0x25FE2515747A5E12ULL }, /* XSUM_XXH3_testdata[4747] */ + { 2374, 0x0000000000000000ULL, 0x8175A66989F79873ULL }, /* XSUM_XXH3_testdata[4748] */ + { 2374, 0x9E3779B185EBCA8DULL, 0xFD3270C4714D82C8ULL }, /* XSUM_XXH3_testdata[4749] */ + { 2375, 0x0000000000000000ULL, 0x275FF23CE3DC4593ULL }, /* XSUM_XXH3_testdata[4750] */ + { 2375, 0x9E3779B185EBCA8DULL, 0x5C6AE4A0B8D3E584ULL }, /* XSUM_XXH3_testdata[4751] */ + { 2376, 0x0000000000000000ULL, 0x297633E6D89244CEULL }, /* XSUM_XXH3_testdata[4752] */ + { 2376, 0x9E3779B185EBCA8DULL, 0xF880C7918F0E8F6FULL }, /* XSUM_XXH3_testdata[4753] */ + { 2377, 0x0000000000000000ULL, 0x7D01B42A26A3AA4FULL }, /* XSUM_XXH3_testdata[4754] */ + { 2377, 0x9E3779B185EBCA8DULL, 0x9B3152CDB0E90B93ULL }, /* XSUM_XXH3_testdata[4755] */ + { 2378, 0x0000000000000000ULL, 0x9A208842D0BB08F6ULL }, /* XSUM_XXH3_testdata[4756] */ + { 2378, 0x9E3779B185EBCA8DULL, 0x3A2E4AEB216684ECULL }, /* XSUM_XXH3_testdata[4757] */ + { 2379, 0x0000000000000000ULL, 0x40974B3BF1A11D89ULL }, /* XSUM_XXH3_testdata[4758] */ + { 2379, 0x9E3779B185EBCA8DULL, 0xBA04552CCB5B3E3CULL }, /* XSUM_XXH3_testdata[4759] */ + { 2380, 0x0000000000000000ULL, 0x2F3A828F6C4CDAA4ULL }, /* XSUM_XXH3_testdata[4760] */ + { 2380, 0x9E3779B185EBCA8DULL, 0xAEEA8CD6166097B9ULL }, /* XSUM_XXH3_testdata[4761] */ + { 2381, 0x0000000000000000ULL, 0x7A2AF424699B079CULL }, /* XSUM_XXH3_testdata[4762] */ + { 2381, 0x9E3779B185EBCA8DULL, 0xC8D43B8870FD4CBBULL }, /* XSUM_XXH3_testdata[4763] */ + { 2382, 0x0000000000000000ULL, 0x9304DE8DA31BD496ULL }, /* XSUM_XXH3_testdata[4764] */ + { 2382, 0x9E3779B185EBCA8DULL, 0x34593C6BFFA5D569ULL }, /* XSUM_XXH3_testdata[4765] */ + { 2383, 0x0000000000000000ULL, 0x80D3BA1CA3F56190ULL }, /* XSUM_XXH3_testdata[4766] */ + { 2383, 0x9E3779B185EBCA8DULL, 0xDDB69D91088C128AULL }, /* XSUM_XXH3_testdata[4767] */ + { 2384, 0x0000000000000000ULL, 0x441C9D94F2B9C0DFULL }, /* XSUM_XXH3_testdata[4768] */ + { 2384, 0x9E3779B185EBCA8DULL, 0x55D3007BA3042A2AULL }, /* XSUM_XXH3_testdata[4769] */ + { 2385, 0x0000000000000000ULL, 0xE33C4DD70CAEBEE7ULL }, /* XSUM_XXH3_testdata[4770] */ + { 2385, 0x9E3779B185EBCA8DULL, 0x0FB197212BBB263CULL }, /* XSUM_XXH3_testdata[4771] */ + { 2386, 0x0000000000000000ULL, 0x06B51492A0779957ULL }, /* XSUM_XXH3_testdata[4772] */ + { 2386, 0x9E3779B185EBCA8DULL, 0xD1826B20858877D2ULL }, /* XSUM_XXH3_testdata[4773] */ + { 2387, 0x0000000000000000ULL, 0x17382140103BDFA5ULL }, /* XSUM_XXH3_testdata[4774] */ + { 2387, 0x9E3779B185EBCA8DULL, 0x7CDB9A8AB644F256ULL }, /* XSUM_XXH3_testdata[4775] */ + { 2388, 0x0000000000000000ULL, 0xC90AC3182F1ABB4DULL }, /* XSUM_XXH3_testdata[4776] */ + { 2388, 0x9E3779B185EBCA8DULL, 0xA399378375830CCEULL }, /* XSUM_XXH3_testdata[4777] */ + { 2389, 0x0000000000000000ULL, 0x4BF7F88719686A38ULL }, /* XSUM_XXH3_testdata[4778] */ + { 2389, 0x9E3779B185EBCA8DULL, 0x801FD351A856CED5ULL }, /* XSUM_XXH3_testdata[4779] */ + { 2390, 0x0000000000000000ULL, 0x2A54054B3745B0E8ULL }, /* XSUM_XXH3_testdata[4780] */ + { 2390, 0x9E3779B185EBCA8DULL, 0x32AC9D7484C16CFCULL }, /* XSUM_XXH3_testdata[4781] */ + { 2391, 0x0000000000000000ULL, 0xB42E2F3FBF9C7FF6ULL }, /* XSUM_XXH3_testdata[4782] */ + { 2391, 0x9E3779B185EBCA8DULL, 0x2ECCD134F6208ABAULL }, /* XSUM_XXH3_testdata[4783] */ + { 2392, 0x0000000000000000ULL, 0xE29C067EEB709C6DULL }, /* XSUM_XXH3_testdata[4784] */ + { 2392, 0x9E3779B185EBCA8DULL, 0x725625789A95FAA0ULL }, /* XSUM_XXH3_testdata[4785] */ + { 2393, 0x0000000000000000ULL, 0x363009F768016562ULL }, /* XSUM_XXH3_testdata[4786] */ + { 2393, 0x9E3779B185EBCA8DULL, 0x138C189F0AFE235FULL }, /* XSUM_XXH3_testdata[4787] */ + { 2394, 0x0000000000000000ULL, 0xF1C5DC9942E866F8ULL }, /* XSUM_XXH3_testdata[4788] */ + { 2394, 0x9E3779B185EBCA8DULL, 0xCBB7386F910F0A8EULL }, /* XSUM_XXH3_testdata[4789] */ + { 2395, 0x0000000000000000ULL, 0x815C06F88504756EULL }, /* XSUM_XXH3_testdata[4790] */ + { 2395, 0x9E3779B185EBCA8DULL, 0x781575D8B8AE688CULL }, /* XSUM_XXH3_testdata[4791] */ + { 2396, 0x0000000000000000ULL, 0x0A94F1D7A46A7F11ULL }, /* XSUM_XXH3_testdata[4792] */ + { 2396, 0x9E3779B185EBCA8DULL, 0xF3AF477BD3FDDFE3ULL }, /* XSUM_XXH3_testdata[4793] */ + { 2397, 0x0000000000000000ULL, 0x7E46BD55D126BAB4ULL }, /* XSUM_XXH3_testdata[4794] */ + { 2397, 0x9E3779B185EBCA8DULL, 0x530FCDA69E0755EEULL }, /* XSUM_XXH3_testdata[4795] */ + { 2398, 0x0000000000000000ULL, 0x3D0260D2BD9CDCF8ULL }, /* XSUM_XXH3_testdata[4796] */ + { 2398, 0x9E3779B185EBCA8DULL, 0x9E79B2ED95CC1C13ULL }, /* XSUM_XXH3_testdata[4797] */ + { 2399, 0x0000000000000000ULL, 0x3E202057EEB160DCULL }, /* XSUM_XXH3_testdata[4798] */ + { 2399, 0x9E3779B185EBCA8DULL, 0xFD61D2735B23807EULL }, /* XSUM_XXH3_testdata[4799] */ + { 2400, 0x0000000000000000ULL, 0x7DF9FC66BF737FD6ULL }, /* XSUM_XXH3_testdata[4800] */ + { 2400, 0x9E3779B185EBCA8DULL, 0xADA195576C66A546ULL }, /* XSUM_XXH3_testdata[4801] */ + { 2401, 0x0000000000000000ULL, 0xE6DDEA16AEC1807AULL }, /* XSUM_XXH3_testdata[4802] */ + { 2401, 0x9E3779B185EBCA8DULL, 0x03A77C66A1824D3EULL }, /* XSUM_XXH3_testdata[4803] */ + { 2402, 0x0000000000000000ULL, 0xD881F94BA815ABC6ULL }, /* XSUM_XXH3_testdata[4804] */ + { 2402, 0x9E3779B185EBCA8DULL, 0xDC8F9DA703D3AB56ULL }, /* XSUM_XXH3_testdata[4805] */ + { 2403, 0x0000000000000000ULL, 0x517AFA5E367BB9D5ULL }, /* XSUM_XXH3_testdata[4806] */ + { 2403, 0x9E3779B185EBCA8DULL, 0xBB4B3A775BD26BD9ULL }, /* XSUM_XXH3_testdata[4807] */ + { 2404, 0x0000000000000000ULL, 0x28B4866679822E0AULL }, /* XSUM_XXH3_testdata[4808] */ + { 2404, 0x9E3779B185EBCA8DULL, 0xAA51349D15CC0FDEULL }, /* XSUM_XXH3_testdata[4809] */ + { 2405, 0x0000000000000000ULL, 0x3CE5C20DE2F5C897ULL }, /* XSUM_XXH3_testdata[4810] */ + { 2405, 0x9E3779B185EBCA8DULL, 0xEEDCE89587FD1C51ULL }, /* XSUM_XXH3_testdata[4811] */ + { 2406, 0x0000000000000000ULL, 0x2817C7FEB92F4ECCULL }, /* XSUM_XXH3_testdata[4812] */ + { 2406, 0x9E3779B185EBCA8DULL, 0xF271D583D5C08D60ULL }, /* XSUM_XXH3_testdata[4813] */ + { 2407, 0x0000000000000000ULL, 0x7138C004788FC3C5ULL }, /* XSUM_XXH3_testdata[4814] */ + { 2407, 0x9E3779B185EBCA8DULL, 0x900C534E25F8EE8FULL }, /* XSUM_XXH3_testdata[4815] */ + { 2408, 0x0000000000000000ULL, 0x0604E4B6EA6C24D5ULL }, /* XSUM_XXH3_testdata[4816] */ + { 2408, 0x9E3779B185EBCA8DULL, 0x9531D4198EB93D16ULL }, /* XSUM_XXH3_testdata[4817] */ + { 2409, 0x0000000000000000ULL, 0x6C65C2A586EDE755ULL }, /* XSUM_XXH3_testdata[4818] */ + { 2409, 0x9E3779B185EBCA8DULL, 0x8CEEEE8B7F6A04B7ULL }, /* XSUM_XXH3_testdata[4819] */ + { 2410, 0x0000000000000000ULL, 0x3A325C261826AEE7ULL }, /* XSUM_XXH3_testdata[4820] */ + { 2410, 0x9E3779B185EBCA8DULL, 0x69A9A60F334C045DULL }, /* XSUM_XXH3_testdata[4821] */ + { 2411, 0x0000000000000000ULL, 0x2BD1BD1E1D3B60A0ULL }, /* XSUM_XXH3_testdata[4822] */ + { 2411, 0x9E3779B185EBCA8DULL, 0x878A04EDAC12EA22ULL }, /* XSUM_XXH3_testdata[4823] */ + { 2412, 0x0000000000000000ULL, 0x7051EE180E0E02CBULL }, /* XSUM_XXH3_testdata[4824] */ + { 2412, 0x9E3779B185EBCA8DULL, 0xF8BDAEBB507AC864ULL }, /* XSUM_XXH3_testdata[4825] */ + { 2413, 0x0000000000000000ULL, 0x8DCDDD287F97CF14ULL }, /* XSUM_XXH3_testdata[4826] */ + { 2413, 0x9E3779B185EBCA8DULL, 0x0B36D5B0FDA5985CULL }, /* XSUM_XXH3_testdata[4827] */ + { 2414, 0x0000000000000000ULL, 0x3EE02E4436180A4FULL }, /* XSUM_XXH3_testdata[4828] */ + { 2414, 0x9E3779B185EBCA8DULL, 0xC63FA36634A9AA30ULL }, /* XSUM_XXH3_testdata[4829] */ + { 2415, 0x0000000000000000ULL, 0xBDEA754E7720A901ULL }, /* XSUM_XXH3_testdata[4830] */ + { 2415, 0x9E3779B185EBCA8DULL, 0x5AFF8F9C6A0EFDC1ULL }, /* XSUM_XXH3_testdata[4831] */ + { 2416, 0x0000000000000000ULL, 0x0DB29183CD25C6D5ULL }, /* XSUM_XXH3_testdata[4832] */ + { 2416, 0x9E3779B185EBCA8DULL, 0x98B8811EA213EF90ULL }, /* XSUM_XXH3_testdata[4833] */ + { 2417, 0x0000000000000000ULL, 0x9DC19422D90242D7ULL }, /* XSUM_XXH3_testdata[4834] */ + { 2417, 0x9E3779B185EBCA8DULL, 0x40280F790E110E26ULL }, /* XSUM_XXH3_testdata[4835] */ + { 2418, 0x0000000000000000ULL, 0xA82B1C76DE8149B2ULL }, /* XSUM_XXH3_testdata[4836] */ + { 2418, 0x9E3779B185EBCA8DULL, 0x142A9DC28F9B34E1ULL }, /* XSUM_XXH3_testdata[4837] */ + { 2419, 0x0000000000000000ULL, 0xD851B8B3E2B52CACULL }, /* XSUM_XXH3_testdata[4838] */ + { 2419, 0x9E3779B185EBCA8DULL, 0xF5C9BBF4F167C0F7ULL }, /* XSUM_XXH3_testdata[4839] */ + { 2420, 0x0000000000000000ULL, 0x8529E9FC2DAF0D5DULL }, /* XSUM_XXH3_testdata[4840] */ + { 2420, 0x9E3779B185EBCA8DULL, 0x4EF21EF6AF152D63ULL }, /* XSUM_XXH3_testdata[4841] */ + { 2421, 0x0000000000000000ULL, 0x5249697149FEC1F9ULL }, /* XSUM_XXH3_testdata[4842] */ + { 2421, 0x9E3779B185EBCA8DULL, 0x65D35A4934C7603CULL }, /* XSUM_XXH3_testdata[4843] */ + { 2422, 0x0000000000000000ULL, 0xF5D127B3552F2A4DULL }, /* XSUM_XXH3_testdata[4844] */ + { 2422, 0x9E3779B185EBCA8DULL, 0xAF75261C2DB129A2ULL }, /* XSUM_XXH3_testdata[4845] */ + { 2423, 0x0000000000000000ULL, 0x09AE23AE7ABE9D33ULL }, /* XSUM_XXH3_testdata[4846] */ + { 2423, 0x9E3779B185EBCA8DULL, 0xC5C469E69AE9C75EULL }, /* XSUM_XXH3_testdata[4847] */ + { 2424, 0x0000000000000000ULL, 0x9D5F8EC8EAA2F01BULL }, /* XSUM_XXH3_testdata[4848] */ + { 2424, 0x9E3779B185EBCA8DULL, 0x4FB82BD884C0D7A3ULL }, /* XSUM_XXH3_testdata[4849] */ + { 2425, 0x0000000000000000ULL, 0x48C09EBF46A108C7ULL }, /* XSUM_XXH3_testdata[4850] */ + { 2425, 0x9E3779B185EBCA8DULL, 0x883A820B8C4B86A2ULL }, /* XSUM_XXH3_testdata[4851] */ + { 2426, 0x0000000000000000ULL, 0x3C6DFD3F231240EDULL }, /* XSUM_XXH3_testdata[4852] */ + { 2426, 0x9E3779B185EBCA8DULL, 0x542145FC300CEEBEULL }, /* XSUM_XXH3_testdata[4853] */ + { 2427, 0x0000000000000000ULL, 0xF29C5ABE595973EAULL }, /* XSUM_XXH3_testdata[4854] */ + { 2427, 0x9E3779B185EBCA8DULL, 0x4FEA334DD9B79E8DULL }, /* XSUM_XXH3_testdata[4855] */ + { 2428, 0x0000000000000000ULL, 0x181F632921366CA0ULL }, /* XSUM_XXH3_testdata[4856] */ + { 2428, 0x9E3779B185EBCA8DULL, 0xE56364DBE587A5A1ULL }, /* XSUM_XXH3_testdata[4857] */ + { 2429, 0x0000000000000000ULL, 0xCD451D734527603DULL }, /* XSUM_XXH3_testdata[4858] */ + { 2429, 0x9E3779B185EBCA8DULL, 0xE02AEC9CA72BCE50ULL }, /* XSUM_XXH3_testdata[4859] */ + { 2430, 0x0000000000000000ULL, 0x9D2998805DBCA3B0ULL }, /* XSUM_XXH3_testdata[4860] */ + { 2430, 0x9E3779B185EBCA8DULL, 0xD1E0757C87B4C04AULL }, /* XSUM_XXH3_testdata[4861] */ + { 2431, 0x0000000000000000ULL, 0x23A692E3C69FC54DULL }, /* XSUM_XXH3_testdata[4862] */ + { 2431, 0x9E3779B185EBCA8DULL, 0x4887EE15CCDA25D0ULL }, /* XSUM_XXH3_testdata[4863] */ + { 2432, 0x0000000000000000ULL, 0x8DC7DF4949BF38DFULL }, /* XSUM_XXH3_testdata[4864] */ + { 2432, 0x9E3779B185EBCA8DULL, 0x2979E98145138149ULL }, /* XSUM_XXH3_testdata[4865] */ + { 2433, 0x0000000000000000ULL, 0xB8D09DA11BD7BB41ULL }, /* XSUM_XXH3_testdata[4866] */ + { 2433, 0x9E3779B185EBCA8DULL, 0x09CF950068A3F8A7ULL }, /* XSUM_XXH3_testdata[4867] */ + { 2434, 0x0000000000000000ULL, 0x602D368415842878ULL }, /* XSUM_XXH3_testdata[4868] */ + { 2434, 0x9E3779B185EBCA8DULL, 0x05431A9CC10643C8ULL }, /* XSUM_XXH3_testdata[4869] */ + { 2435, 0x0000000000000000ULL, 0x0D5A57C81AF12097ULL }, /* XSUM_XXH3_testdata[4870] */ + { 2435, 0x9E3779B185EBCA8DULL, 0x2C570690D39384C4ULL }, /* XSUM_XXH3_testdata[4871] */ + { 2436, 0x0000000000000000ULL, 0xABDAB965D51BE0A7ULL }, /* XSUM_XXH3_testdata[4872] */ + { 2436, 0x9E3779B185EBCA8DULL, 0xB944CA075AE79E7CULL }, /* XSUM_XXH3_testdata[4873] */ + { 2437, 0x0000000000000000ULL, 0xF9F7285746440004ULL }, /* XSUM_XXH3_testdata[4874] */ + { 2437, 0x9E3779B185EBCA8DULL, 0xB26C26664D2A9600ULL }, /* XSUM_XXH3_testdata[4875] */ + { 2438, 0x0000000000000000ULL, 0x41E0CB5498B910DCULL }, /* XSUM_XXH3_testdata[4876] */ + { 2438, 0x9E3779B185EBCA8DULL, 0x9A9E28BC453B8DB5ULL }, /* XSUM_XXH3_testdata[4877] */ + { 2439, 0x0000000000000000ULL, 0x4066C83ED65F4C42ULL }, /* XSUM_XXH3_testdata[4878] */ + { 2439, 0x9E3779B185EBCA8DULL, 0xB20C91861C646670ULL }, /* XSUM_XXH3_testdata[4879] */ + { 2440, 0x0000000000000000ULL, 0x28C42D7C1D7ADB58ULL }, /* XSUM_XXH3_testdata[4880] */ + { 2440, 0x9E3779B185EBCA8DULL, 0x7ECC97D6D7A3B313ULL }, /* XSUM_XXH3_testdata[4881] */ + { 2441, 0x0000000000000000ULL, 0x39B0DF7528EA6FF4ULL }, /* XSUM_XXH3_testdata[4882] */ + { 2441, 0x9E3779B185EBCA8DULL, 0xE78D153ACA9FBCA9ULL }, /* XSUM_XXH3_testdata[4883] */ + { 2442, 0x0000000000000000ULL, 0x15154D6AD175D54DULL }, /* XSUM_XXH3_testdata[4884] */ + { 2442, 0x9E3779B185EBCA8DULL, 0xA61EE4A6487F4B71ULL }, /* XSUM_XXH3_testdata[4885] */ + { 2443, 0x0000000000000000ULL, 0x8E8C8526F590986EULL }, /* XSUM_XXH3_testdata[4886] */ + { 2443, 0x9E3779B185EBCA8DULL, 0xF727EC9ED02986A7ULL }, /* XSUM_XXH3_testdata[4887] */ + { 2444, 0x0000000000000000ULL, 0x7C531BE3A6674EA0ULL }, /* XSUM_XXH3_testdata[4888] */ + { 2444, 0x9E3779B185EBCA8DULL, 0x6D2D1FAC09361F28ULL }, /* XSUM_XXH3_testdata[4889] */ + { 2445, 0x0000000000000000ULL, 0x4AAEA74B017E72F8ULL }, /* XSUM_XXH3_testdata[4890] */ + { 2445, 0x9E3779B185EBCA8DULL, 0x35E7817B42766DCEULL }, /* XSUM_XXH3_testdata[4891] */ + { 2446, 0x0000000000000000ULL, 0xC3F8C3084B712F01ULL }, /* XSUM_XXH3_testdata[4892] */ + { 2446, 0x9E3779B185EBCA8DULL, 0x588951B04523ABCFULL }, /* XSUM_XXH3_testdata[4893] */ + { 2447, 0x0000000000000000ULL, 0xF22E9F3E39912A2BULL }, /* XSUM_XXH3_testdata[4894] */ + { 2447, 0x9E3779B185EBCA8DULL, 0x849BC016B76881E7ULL }, /* XSUM_XXH3_testdata[4895] */ + { 2448, 0x0000000000000000ULL, 0x642CCF0761F30F6AULL }, /* XSUM_XXH3_testdata[4896] */ + { 2448, 0x9E3779B185EBCA8DULL, 0x9FC2C7AB7B85313DULL }, /* XSUM_XXH3_testdata[4897] */ + { 2449, 0x0000000000000000ULL, 0xD4E2D63D237029A9ULL }, /* XSUM_XXH3_testdata[4898] */ + { 2449, 0x9E3779B185EBCA8DULL, 0xAF548A5F25D3F854ULL }, /* XSUM_XXH3_testdata[4899] */ + { 2450, 0x0000000000000000ULL, 0x53F599D71297C443ULL }, /* XSUM_XXH3_testdata[4900] */ + { 2450, 0x9E3779B185EBCA8DULL, 0xFEE1BDB8A8075A81ULL }, /* XSUM_XXH3_testdata[4901] */ + { 2451, 0x0000000000000000ULL, 0xBCAA7FFECC0FCBC1ULL }, /* XSUM_XXH3_testdata[4902] */ + { 2451, 0x9E3779B185EBCA8DULL, 0xE2B0FAF0CF5793F2ULL }, /* XSUM_XXH3_testdata[4903] */ + { 2452, 0x0000000000000000ULL, 0x925FE275AFED3F64ULL }, /* XSUM_XXH3_testdata[4904] */ + { 2452, 0x9E3779B185EBCA8DULL, 0x71873D6DEAACA142ULL }, /* XSUM_XXH3_testdata[4905] */ + { 2453, 0x0000000000000000ULL, 0xDABED809BA99689FULL }, /* XSUM_XXH3_testdata[4906] */ + { 2453, 0x9E3779B185EBCA8DULL, 0x170924333DB0395AULL }, /* XSUM_XXH3_testdata[4907] */ + { 2454, 0x0000000000000000ULL, 0xB6220703B8544774ULL }, /* XSUM_XXH3_testdata[4908] */ + { 2454, 0x9E3779B185EBCA8DULL, 0x601D674299EFE340ULL }, /* XSUM_XXH3_testdata[4909] */ + { 2455, 0x0000000000000000ULL, 0xE23994D8DDA1F254ULL }, /* XSUM_XXH3_testdata[4910] */ + { 2455, 0x9E3779B185EBCA8DULL, 0x0E19C8258C172708ULL }, /* XSUM_XXH3_testdata[4911] */ + { 2456, 0x0000000000000000ULL, 0x1876B35C77339FCCULL }, /* XSUM_XXH3_testdata[4912] */ + { 2456, 0x9E3779B185EBCA8DULL, 0xF22B8BC4422C4A49ULL }, /* XSUM_XXH3_testdata[4913] */ + { 2457, 0x0000000000000000ULL, 0x313A6E1EA6811FD1ULL }, /* XSUM_XXH3_testdata[4914] */ + { 2457, 0x9E3779B185EBCA8DULL, 0xB1EA861656EE51BCULL }, /* XSUM_XXH3_testdata[4915] */ + { 2458, 0x0000000000000000ULL, 0x0498A44D87713BC7ULL }, /* XSUM_XXH3_testdata[4916] */ + { 2458, 0x9E3779B185EBCA8DULL, 0x17205DEC8F82C2E7ULL }, /* XSUM_XXH3_testdata[4917] */ + { 2459, 0x0000000000000000ULL, 0x406D73AAA0FF6D3FULL }, /* XSUM_XXH3_testdata[4918] */ + { 2459, 0x9E3779B185EBCA8DULL, 0xE71DF2534C959D90ULL }, /* XSUM_XXH3_testdata[4919] */ + { 2460, 0x0000000000000000ULL, 0xFD13A835848BFD82ULL }, /* XSUM_XXH3_testdata[4920] */ + { 2460, 0x9E3779B185EBCA8DULL, 0xD3B50CA1421D3A51ULL }, /* XSUM_XXH3_testdata[4921] */ + { 2461, 0x0000000000000000ULL, 0x82133237CB17D5AFULL }, /* XSUM_XXH3_testdata[4922] */ + { 2461, 0x9E3779B185EBCA8DULL, 0xB2E52F0267163959ULL }, /* XSUM_XXH3_testdata[4923] */ + { 2462, 0x0000000000000000ULL, 0x1D113E71BA2A0486ULL }, /* XSUM_XXH3_testdata[4924] */ + { 2462, 0x9E3779B185EBCA8DULL, 0xE65EB4D0A760BC93ULL }, /* XSUM_XXH3_testdata[4925] */ + { 2463, 0x0000000000000000ULL, 0xBFB5AB6F9BF505D3ULL }, /* XSUM_XXH3_testdata[4926] */ + { 2463, 0x9E3779B185EBCA8DULL, 0xB13A757A0FE44631ULL }, /* XSUM_XXH3_testdata[4927] */ + { 2464, 0x0000000000000000ULL, 0xB03059CD80210C92ULL }, /* XSUM_XXH3_testdata[4928] */ + { 2464, 0x9E3779B185EBCA8DULL, 0x0918BBEBAF5DA807ULL }, /* XSUM_XXH3_testdata[4929] */ + { 2465, 0x0000000000000000ULL, 0xE0BF0FD1C1967D68ULL }, /* XSUM_XXH3_testdata[4930] */ + { 2465, 0x9E3779B185EBCA8DULL, 0x9F364253BBDF2D66ULL }, /* XSUM_XXH3_testdata[4931] */ + { 2466, 0x0000000000000000ULL, 0xBA20A1D0EE4972DCULL }, /* XSUM_XXH3_testdata[4932] */ + { 2466, 0x9E3779B185EBCA8DULL, 0xDD9FCF2B0F38C374ULL }, /* XSUM_XXH3_testdata[4933] */ + { 2467, 0x0000000000000000ULL, 0xD0E4644C09C66D79ULL }, /* XSUM_XXH3_testdata[4934] */ + { 2467, 0x9E3779B185EBCA8DULL, 0x9FD6101B524C3689ULL }, /* XSUM_XXH3_testdata[4935] */ + { 2468, 0x0000000000000000ULL, 0xA72FF00D991C2BECULL }, /* XSUM_XXH3_testdata[4936] */ + { 2468, 0x9E3779B185EBCA8DULL, 0x66B8057EA205D71EULL }, /* XSUM_XXH3_testdata[4937] */ + { 2469, 0x0000000000000000ULL, 0xF0AE948DB61194C8ULL }, /* XSUM_XXH3_testdata[4938] */ + { 2469, 0x9E3779B185EBCA8DULL, 0x50BE61DD641CB7B4ULL }, /* XSUM_XXH3_testdata[4939] */ + { 2470, 0x0000000000000000ULL, 0x23DBBEEBF027DC17ULL }, /* XSUM_XXH3_testdata[4940] */ + { 2470, 0x9E3779B185EBCA8DULL, 0x70B592CF49D038CAULL }, /* XSUM_XXH3_testdata[4941] */ + { 2471, 0x0000000000000000ULL, 0x77017F8424BEA763ULL }, /* XSUM_XXH3_testdata[4942] */ + { 2471, 0x9E3779B185EBCA8DULL, 0x084397E9E092B31EULL }, /* XSUM_XXH3_testdata[4943] */ + { 2472, 0x0000000000000000ULL, 0xC39B583F82D5ED3AULL }, /* XSUM_XXH3_testdata[4944] */ + { 2472, 0x9E3779B185EBCA8DULL, 0xAE4BAD1A9C5685E6ULL }, /* XSUM_XXH3_testdata[4945] */ + { 2473, 0x0000000000000000ULL, 0x2C5AC1B00E9148A9ULL }, /* XSUM_XXH3_testdata[4946] */ + { 2473, 0x9E3779B185EBCA8DULL, 0xFDFDA5F93706FB93ULL }, /* XSUM_XXH3_testdata[4947] */ + { 2474, 0x0000000000000000ULL, 0x493526E0DB2924E9ULL }, /* XSUM_XXH3_testdata[4948] */ + { 2474, 0x9E3779B185EBCA8DULL, 0x4935872F6757D6A5ULL }, /* XSUM_XXH3_testdata[4949] */ + { 2475, 0x0000000000000000ULL, 0xB1F3BEF6F09D70A6ULL }, /* XSUM_XXH3_testdata[4950] */ + { 2475, 0x9E3779B185EBCA8DULL, 0xFD35409753519FC5ULL }, /* XSUM_XXH3_testdata[4951] */ + { 2476, 0x0000000000000000ULL, 0x298B771F429863C7ULL }, /* XSUM_XXH3_testdata[4952] */ + { 2476, 0x9E3779B185EBCA8DULL, 0xF47455F43151E5EEULL }, /* XSUM_XXH3_testdata[4953] */ + { 2477, 0x0000000000000000ULL, 0xED60585128E31E32ULL }, /* XSUM_XXH3_testdata[4954] */ + { 2477, 0x9E3779B185EBCA8DULL, 0x7D42C1F3FE3D949AULL }, /* XSUM_XXH3_testdata[4955] */ + { 2478, 0x0000000000000000ULL, 0x836FD57D7CE40CD5ULL }, /* XSUM_XXH3_testdata[4956] */ + { 2478, 0x9E3779B185EBCA8DULL, 0x955BB327722E820FULL }, /* XSUM_XXH3_testdata[4957] */ + { 2479, 0x0000000000000000ULL, 0x8B893C8E25356830ULL }, /* XSUM_XXH3_testdata[4958] */ + { 2479, 0x9E3779B185EBCA8DULL, 0xFCA32DE531B8D7C4ULL }, /* XSUM_XXH3_testdata[4959] */ + { 2480, 0x0000000000000000ULL, 0xAA801A1477B80024ULL }, /* XSUM_XXH3_testdata[4960] */ + { 2480, 0x9E3779B185EBCA8DULL, 0x745B1264EC3EC79FULL }, /* XSUM_XXH3_testdata[4961] */ + { 2481, 0x0000000000000000ULL, 0xFFC123CE2FEB19BBULL }, /* XSUM_XXH3_testdata[4962] */ + { 2481, 0x9E3779B185EBCA8DULL, 0x3E1432A43C9B3B21ULL }, /* XSUM_XXH3_testdata[4963] */ + { 2482, 0x0000000000000000ULL, 0x67A2F28FAB9489FCULL }, /* XSUM_XXH3_testdata[4964] */ + { 2482, 0x9E3779B185EBCA8DULL, 0x646467775BC85519ULL }, /* XSUM_XXH3_testdata[4965] */ + { 2483, 0x0000000000000000ULL, 0xF604D40AD38A735AULL }, /* XSUM_XXH3_testdata[4966] */ + { 2483, 0x9E3779B185EBCA8DULL, 0x87F499EC7E7889C6ULL }, /* XSUM_XXH3_testdata[4967] */ + { 2484, 0x0000000000000000ULL, 0x349E26D57FE46D76ULL }, /* XSUM_XXH3_testdata[4968] */ + { 2484, 0x9E3779B185EBCA8DULL, 0xDB482692318A585AULL }, /* XSUM_XXH3_testdata[4969] */ + { 2485, 0x0000000000000000ULL, 0x8F51D9BA3F224553ULL }, /* XSUM_XXH3_testdata[4970] */ + { 2485, 0x9E3779B185EBCA8DULL, 0xC8542B2AFCB15DFAULL }, /* XSUM_XXH3_testdata[4971] */ + { 2486, 0x0000000000000000ULL, 0x396E933986D5207FULL }, /* XSUM_XXH3_testdata[4972] */ + { 2486, 0x9E3779B185EBCA8DULL, 0x0F51171332A16986ULL }, /* XSUM_XXH3_testdata[4973] */ + { 2487, 0x0000000000000000ULL, 0x4D460642310AB50AULL }, /* XSUM_XXH3_testdata[4974] */ + { 2487, 0x9E3779B185EBCA8DULL, 0x98286BAD4038A667ULL }, /* XSUM_XXH3_testdata[4975] */ + { 2488, 0x0000000000000000ULL, 0x5C55E27FFD987D8BULL }, /* XSUM_XXH3_testdata[4976] */ + { 2488, 0x9E3779B185EBCA8DULL, 0xABB686BCBCD600F3ULL }, /* XSUM_XXH3_testdata[4977] */ + { 2489, 0x0000000000000000ULL, 0x7B13729245828F1BULL }, /* XSUM_XXH3_testdata[4978] */ + { 2489, 0x9E3779B185EBCA8DULL, 0xAD9BD38D75CD546CULL }, /* XSUM_XXH3_testdata[4979] */ + { 2490, 0x0000000000000000ULL, 0xA0B1DD56AE1089D0ULL }, /* XSUM_XXH3_testdata[4980] */ + { 2490, 0x9E3779B185EBCA8DULL, 0x12BB22DF6959D027ULL }, /* XSUM_XXH3_testdata[4981] */ + { 2491, 0x0000000000000000ULL, 0xEF32D3094C10D252ULL }, /* XSUM_XXH3_testdata[4982] */ + { 2491, 0x9E3779B185EBCA8DULL, 0x0445C2D133C6FBAAULL }, /* XSUM_XXH3_testdata[4983] */ + { 2492, 0x0000000000000000ULL, 0xFC31BEDF37B39F9AULL }, /* XSUM_XXH3_testdata[4984] */ + { 2492, 0x9E3779B185EBCA8DULL, 0xE7412EB1ABF45B43ULL }, /* XSUM_XXH3_testdata[4985] */ + { 2493, 0x0000000000000000ULL, 0x9BE368614DB83689ULL }, /* XSUM_XXH3_testdata[4986] */ + { 2493, 0x9E3779B185EBCA8DULL, 0x7AA0EE00D9289322ULL }, /* XSUM_XXH3_testdata[4987] */ + { 2494, 0x0000000000000000ULL, 0x8C969B282CDEF258ULL }, /* XSUM_XXH3_testdata[4988] */ + { 2494, 0x9E3779B185EBCA8DULL, 0x0ED41F3E4DF0E8C3ULL }, /* XSUM_XXH3_testdata[4989] */ + { 2495, 0x0000000000000000ULL, 0xE6A765D030454BFBULL }, /* XSUM_XXH3_testdata[4990] */ + { 2495, 0x9E3779B185EBCA8DULL, 0x761DA60614C958BCULL }, /* XSUM_XXH3_testdata[4991] */ + { 2496, 0x0000000000000000ULL, 0xB565B3202DEF23C1ULL }, /* XSUM_XXH3_testdata[4992] */ + { 2496, 0x9E3779B185EBCA8DULL, 0x96E5D8A2B6CB4E50ULL }, /* XSUM_XXH3_testdata[4993] */ + { 2497, 0x0000000000000000ULL, 0x31213BCB52410C9CULL }, /* XSUM_XXH3_testdata[4994] */ + { 2497, 0x9E3779B185EBCA8DULL, 0xD6FF67DD99668F70ULL }, /* XSUM_XXH3_testdata[4995] */ + { 2498, 0x0000000000000000ULL, 0x30046CF9FC40766EULL }, /* XSUM_XXH3_testdata[4996] */ + { 2498, 0x9E3779B185EBCA8DULL, 0x2B783B4547273EF2ULL }, /* XSUM_XXH3_testdata[4997] */ + { 2499, 0x0000000000000000ULL, 0xF7554227E0ACEB04ULL }, /* XSUM_XXH3_testdata[4998] */ + { 2499, 0x9E3779B185EBCA8DULL, 0xD295304E2C26F07CULL }, /* XSUM_XXH3_testdata[4999] */ + { 2500, 0x0000000000000000ULL, 0x26CB04F4741A52D1ULL }, /* XSUM_XXH3_testdata[5000] */ + { 2500, 0x9E3779B185EBCA8DULL, 0x03AB853D8E6E77CDULL }, /* XSUM_XXH3_testdata[5001] */ + { 2501, 0x0000000000000000ULL, 0x1F08882A1F7E1AE0ULL }, /* XSUM_XXH3_testdata[5002] */ + { 2501, 0x9E3779B185EBCA8DULL, 0x6B89BDFBBA4A26C5ULL }, /* XSUM_XXH3_testdata[5003] */ + { 2502, 0x0000000000000000ULL, 0x866571933B2D19BBULL }, /* XSUM_XXH3_testdata[5004] */ + { 2502, 0x9E3779B185EBCA8DULL, 0x29C3D35675D12109ULL }, /* XSUM_XXH3_testdata[5005] */ + { 2503, 0x0000000000000000ULL, 0x91CCE7766CCE8FE5ULL }, /* XSUM_XXH3_testdata[5006] */ + { 2503, 0x9E3779B185EBCA8DULL, 0x992D977616FB9AE5ULL }, /* XSUM_XXH3_testdata[5007] */ + { 2504, 0x0000000000000000ULL, 0x29B54766DE5E1E94ULL }, /* XSUM_XXH3_testdata[5008] */ + { 2504, 0x9E3779B185EBCA8DULL, 0xA4D691B058080700ULL }, /* XSUM_XXH3_testdata[5009] */ + { 2505, 0x0000000000000000ULL, 0x18F26802D56A53FEULL }, /* XSUM_XXH3_testdata[5010] */ + { 2505, 0x9E3779B185EBCA8DULL, 0x37B621D8FECB486FULL }, /* XSUM_XXH3_testdata[5011] */ + { 2506, 0x0000000000000000ULL, 0xC5FCE365B5D65ACEULL }, /* XSUM_XXH3_testdata[5012] */ + { 2506, 0x9E3779B185EBCA8DULL, 0x73350B5F23B064AEULL }, /* XSUM_XXH3_testdata[5013] */ + { 2507, 0x0000000000000000ULL, 0x213AF1A9B9E3410AULL }, /* XSUM_XXH3_testdata[5014] */ + { 2507, 0x9E3779B185EBCA8DULL, 0x949E27B85A874B7BULL }, /* XSUM_XXH3_testdata[5015] */ + { 2508, 0x0000000000000000ULL, 0x516645DA2D3011A4ULL }, /* XSUM_XXH3_testdata[5016] */ + { 2508, 0x9E3779B185EBCA8DULL, 0xD46731FF4070FE06ULL }, /* XSUM_XXH3_testdata[5017] */ + { 2509, 0x0000000000000000ULL, 0x6C4BDD4D39806795ULL }, /* XSUM_XXH3_testdata[5018] */ + { 2509, 0x9E3779B185EBCA8DULL, 0x716550FFF0481238ULL }, /* XSUM_XXH3_testdata[5019] */ + { 2510, 0x0000000000000000ULL, 0x5F866CD65285EB7AULL }, /* XSUM_XXH3_testdata[5020] */ + { 2510, 0x9E3779B185EBCA8DULL, 0x0318A12DB7C9F162ULL }, /* XSUM_XXH3_testdata[5021] */ + { 2511, 0x0000000000000000ULL, 0xEBA1A3DD90AEBFFFULL }, /* XSUM_XXH3_testdata[5022] */ + { 2511, 0x9E3779B185EBCA8DULL, 0xBA953F31B3A00ECDULL }, /* XSUM_XXH3_testdata[5023] */ + { 2512, 0x0000000000000000ULL, 0x74B3591496D9718BULL }, /* XSUM_XXH3_testdata[5024] */ + { 2512, 0x9E3779B185EBCA8DULL, 0xF13D881703493E17ULL }, /* XSUM_XXH3_testdata[5025] */ + { 2513, 0x0000000000000000ULL, 0xB6F86B89BCA03AC2ULL }, /* XSUM_XXH3_testdata[5026] */ + { 2513, 0x9E3779B185EBCA8DULL, 0x43B7AE38B94866A5ULL }, /* XSUM_XXH3_testdata[5027] */ + { 2514, 0x0000000000000000ULL, 0x86F1B452363281E9ULL }, /* XSUM_XXH3_testdata[5028] */ + { 2514, 0x9E3779B185EBCA8DULL, 0xC55AD56621595369ULL }, /* XSUM_XXH3_testdata[5029] */ + { 2515, 0x0000000000000000ULL, 0x9DFE8CFA5D090682ULL }, /* XSUM_XXH3_testdata[5030] */ + { 2515, 0x9E3779B185EBCA8DULL, 0xC4763A2984855956ULL }, /* XSUM_XXH3_testdata[5031] */ + { 2516, 0x0000000000000000ULL, 0xA4A3D0FA8DF914BBULL }, /* XSUM_XXH3_testdata[5032] */ + { 2516, 0x9E3779B185EBCA8DULL, 0x55D9A21879096100ULL }, /* XSUM_XXH3_testdata[5033] */ + { 2517, 0x0000000000000000ULL, 0x0C7E962BD2937142ULL }, /* XSUM_XXH3_testdata[5034] */ + { 2517, 0x9E3779B185EBCA8DULL, 0xF56A061E20E1D9B7ULL }, /* XSUM_XXH3_testdata[5035] */ + { 2518, 0x0000000000000000ULL, 0xEF0DA9D0D9C42F43ULL }, /* XSUM_XXH3_testdata[5036] */ + { 2518, 0x9E3779B185EBCA8DULL, 0x06334992C2AD9ADCULL }, /* XSUM_XXH3_testdata[5037] */ + { 2519, 0x0000000000000000ULL, 0x981C612186C18BD7ULL }, /* XSUM_XXH3_testdata[5038] */ + { 2519, 0x9E3779B185EBCA8DULL, 0xE074A72E67FEEEB8ULL }, /* XSUM_XXH3_testdata[5039] */ + { 2520, 0x0000000000000000ULL, 0x63D13F8020F2E70AULL }, /* XSUM_XXH3_testdata[5040] */ + { 2520, 0x9E3779B185EBCA8DULL, 0x34FDDD40FF026698ULL }, /* XSUM_XXH3_testdata[5041] */ + { 2521, 0x0000000000000000ULL, 0x11E6CCC6E9726646ULL }, /* XSUM_XXH3_testdata[5042] */ + { 2521, 0x9E3779B185EBCA8DULL, 0xF56A02A1076B386BULL }, /* XSUM_XXH3_testdata[5043] */ + { 2522, 0x0000000000000000ULL, 0x4D43554DFD39C5F1ULL }, /* XSUM_XXH3_testdata[5044] */ + { 2522, 0x9E3779B185EBCA8DULL, 0x3263BFB2AFF8A291ULL }, /* XSUM_XXH3_testdata[5045] */ + { 2523, 0x0000000000000000ULL, 0xCFAC84F889FF97B2ULL }, /* XSUM_XXH3_testdata[5046] */ + { 2523, 0x9E3779B185EBCA8DULL, 0x8E8BCDE00512F9DBULL }, /* XSUM_XXH3_testdata[5047] */ + { 2524, 0x0000000000000000ULL, 0xDF7FE6D07F66358DULL }, /* XSUM_XXH3_testdata[5048] */ + { 2524, 0x9E3779B185EBCA8DULL, 0x06C77049AA50091BULL }, /* XSUM_XXH3_testdata[5049] */ + { 2525, 0x0000000000000000ULL, 0x0DC047741CA34FD4ULL }, /* XSUM_XXH3_testdata[5050] */ + { 2525, 0x9E3779B185EBCA8DULL, 0x2B2EC50F1C779ECFULL }, /* XSUM_XXH3_testdata[5051] */ + { 2526, 0x0000000000000000ULL, 0xDA22F631491949A5ULL }, /* XSUM_XXH3_testdata[5052] */ + { 2526, 0x9E3779B185EBCA8DULL, 0x303A45291FB57D33ULL }, /* XSUM_XXH3_testdata[5053] */ + { 2527, 0x0000000000000000ULL, 0xDEA2B9CC46C5A5F1ULL }, /* XSUM_XXH3_testdata[5054] */ + { 2527, 0x9E3779B185EBCA8DULL, 0x9C26E09E495DC82BULL }, /* XSUM_XXH3_testdata[5055] */ + { 2528, 0x0000000000000000ULL, 0xDBA56F835255F96BULL }, /* XSUM_XXH3_testdata[5056] */ + { 2528, 0x9E3779B185EBCA8DULL, 0x991A268378ACA738ULL }, /* XSUM_XXH3_testdata[5057] */ + { 2529, 0x0000000000000000ULL, 0xE0CDFC8278598809ULL }, /* XSUM_XXH3_testdata[5058] */ + { 2529, 0x9E3779B185EBCA8DULL, 0xD58FC1D2C92F0943ULL }, /* XSUM_XXH3_testdata[5059] */ + { 2530, 0x0000000000000000ULL, 0xBA8BAF78823115A1ULL }, /* XSUM_XXH3_testdata[5060] */ + { 2530, 0x9E3779B185EBCA8DULL, 0xDA2BE7BB589960C7ULL }, /* XSUM_XXH3_testdata[5061] */ + { 2531, 0x0000000000000000ULL, 0x84147A051CD8405CULL }, /* XSUM_XXH3_testdata[5062] */ + { 2531, 0x9E3779B185EBCA8DULL, 0xABD86C2E8CBF5471ULL }, /* XSUM_XXH3_testdata[5063] */ + { 2532, 0x0000000000000000ULL, 0xA64FE619F33940FFULL }, /* XSUM_XXH3_testdata[5064] */ + { 2532, 0x9E3779B185EBCA8DULL, 0xFB2312C177FDE048ULL }, /* XSUM_XXH3_testdata[5065] */ + { 2533, 0x0000000000000000ULL, 0xA6F08816CF4BACF2ULL }, /* XSUM_XXH3_testdata[5066] */ + { 2533, 0x9E3779B185EBCA8DULL, 0x2B81A778B504831CULL }, /* XSUM_XXH3_testdata[5067] */ + { 2534, 0x0000000000000000ULL, 0x4155B18A540E04FEULL }, /* XSUM_XXH3_testdata[5068] */ + { 2534, 0x9E3779B185EBCA8DULL, 0xE74CE315250E7713ULL }, /* XSUM_XXH3_testdata[5069] */ + { 2535, 0x0000000000000000ULL, 0xA4F15D9A49D534CDULL }, /* XSUM_XXH3_testdata[5070] */ + { 2535, 0x9E3779B185EBCA8DULL, 0x5E1998CF4EF8BB40ULL }, /* XSUM_XXH3_testdata[5071] */ + { 2536, 0x0000000000000000ULL, 0x3513007897DFFAFAULL }, /* XSUM_XXH3_testdata[5072] */ + { 2536, 0x9E3779B185EBCA8DULL, 0x566B64163FD4D5A2ULL }, /* XSUM_XXH3_testdata[5073] */ + { 2537, 0x0000000000000000ULL, 0xFC3AD43F345DF501ULL }, /* XSUM_XXH3_testdata[5074] */ + { 2537, 0x9E3779B185EBCA8DULL, 0x931558E8245B32A1ULL }, /* XSUM_XXH3_testdata[5075] */ + { 2538, 0x0000000000000000ULL, 0x47AE535569E785C6ULL }, /* XSUM_XXH3_testdata[5076] */ + { 2538, 0x9E3779B185EBCA8DULL, 0x269E2991E7F8E7ABULL }, /* XSUM_XXH3_testdata[5077] */ + { 2539, 0x0000000000000000ULL, 0xC4F897E74397D2DBULL }, /* XSUM_XXH3_testdata[5078] */ + { 2539, 0x9E3779B185EBCA8DULL, 0xCAE41E46D2B4D464ULL }, /* XSUM_XXH3_testdata[5079] */ + { 2540, 0x0000000000000000ULL, 0xA5B0453FAD8F40ABULL }, /* XSUM_XXH3_testdata[5080] */ + { 2540, 0x9E3779B185EBCA8DULL, 0xDA50A059C37DF89AULL }, /* XSUM_XXH3_testdata[5081] */ + { 2541, 0x0000000000000000ULL, 0x2AD31C54C868E970ULL }, /* XSUM_XXH3_testdata[5082] */ + { 2541, 0x9E3779B185EBCA8DULL, 0x8DC47215C1FAC750ULL }, /* XSUM_XXH3_testdata[5083] */ + { 2542, 0x0000000000000000ULL, 0x1ECD99D927119426ULL }, /* XSUM_XXH3_testdata[5084] */ + { 2542, 0x9E3779B185EBCA8DULL, 0xFE1270C2CD79B954ULL }, /* XSUM_XXH3_testdata[5085] */ + { 2543, 0x0000000000000000ULL, 0x7536E78A4E103EB7ULL }, /* XSUM_XXH3_testdata[5086] */ + { 2543, 0x9E3779B185EBCA8DULL, 0x561825DB5725EC05ULL }, /* XSUM_XXH3_testdata[5087] */ + { 2544, 0x0000000000000000ULL, 0xF84DD2FB541DBF14ULL }, /* XSUM_XXH3_testdata[5088] */ + { 2544, 0x9E3779B185EBCA8DULL, 0xEDB23E666D56D112ULL }, /* XSUM_XXH3_testdata[5089] */ + { 2545, 0x0000000000000000ULL, 0xD80CBEE66D7975F5ULL }, /* XSUM_XXH3_testdata[5090] */ + { 2545, 0x9E3779B185EBCA8DULL, 0x5AE5CF1BD53581EAULL }, /* XSUM_XXH3_testdata[5091] */ + { 2546, 0x0000000000000000ULL, 0x74B79EB050C88A5BULL }, /* XSUM_XXH3_testdata[5092] */ + { 2546, 0x9E3779B185EBCA8DULL, 0x9CA2C17DBF6403EBULL }, /* XSUM_XXH3_testdata[5093] */ + { 2547, 0x0000000000000000ULL, 0xAB0E6EA9E0AC02C9ULL }, /* XSUM_XXH3_testdata[5094] */ + { 2547, 0x9E3779B185EBCA8DULL, 0x1CC8952A920BE943ULL }, /* XSUM_XXH3_testdata[5095] */ + { 2548, 0x0000000000000000ULL, 0x0BBF501CAB2045D0ULL }, /* XSUM_XXH3_testdata[5096] */ + { 2548, 0x9E3779B185EBCA8DULL, 0x492E253BECC049B7ULL }, /* XSUM_XXH3_testdata[5097] */ + { 2549, 0x0000000000000000ULL, 0x744CBAF9B66702C9ULL }, /* XSUM_XXH3_testdata[5098] */ + { 2549, 0x9E3779B185EBCA8DULL, 0x089606A58D945131ULL }, /* XSUM_XXH3_testdata[5099] */ + { 2550, 0x0000000000000000ULL, 0xD452D819CAAA8F64ULL }, /* XSUM_XXH3_testdata[5100] */ + { 2550, 0x9E3779B185EBCA8DULL, 0x0060BFDE7C67FB8CULL }, /* XSUM_XXH3_testdata[5101] */ + { 2551, 0x0000000000000000ULL, 0x7441813208320928ULL }, /* XSUM_XXH3_testdata[5102] */ + { 2551, 0x9E3779B185EBCA8DULL, 0x78F88FB9DB734740ULL }, /* XSUM_XXH3_testdata[5103] */ + { 2552, 0x0000000000000000ULL, 0x2417C3FB8183F331ULL }, /* XSUM_XXH3_testdata[5104] */ + { 2552, 0x9E3779B185EBCA8DULL, 0x7C0E5F122AE82E10ULL }, /* XSUM_XXH3_testdata[5105] */ + { 2553, 0x0000000000000000ULL, 0x245E2593E2467EF6ULL }, /* XSUM_XXH3_testdata[5106] */ + { 2553, 0x9E3779B185EBCA8DULL, 0x78648D15B7FE9001ULL }, /* XSUM_XXH3_testdata[5107] */ + { 2554, 0x0000000000000000ULL, 0xBCC23C16065715F6ULL }, /* XSUM_XXH3_testdata[5108] */ + { 2554, 0x9E3779B185EBCA8DULL, 0x364DECBEF543F51DULL }, /* XSUM_XXH3_testdata[5109] */ + { 2555, 0x0000000000000000ULL, 0xB095D4AD861C6D95ULL }, /* XSUM_XXH3_testdata[5110] */ + { 2555, 0x9E3779B185EBCA8DULL, 0xC3F2906261781FB5ULL }, /* XSUM_XXH3_testdata[5111] */ + { 2556, 0x0000000000000000ULL, 0xD8B36BB0F3742305ULL }, /* XSUM_XXH3_testdata[5112] */ + { 2556, 0x9E3779B185EBCA8DULL, 0x576FBFE384D1F3DCULL }, /* XSUM_XXH3_testdata[5113] */ + { 2557, 0x0000000000000000ULL, 0x7E5CBC4F08653A51ULL }, /* XSUM_XXH3_testdata[5114] */ + { 2557, 0x9E3779B185EBCA8DULL, 0x40EE18F37D3A6A3DULL }, /* XSUM_XXH3_testdata[5115] */ + { 2558, 0x0000000000000000ULL, 0x027AC279D3E059D5ULL }, /* XSUM_XXH3_testdata[5116] */ + { 2558, 0x9E3779B185EBCA8DULL, 0x18655A56E8B5CEC7ULL }, /* XSUM_XXH3_testdata[5117] */ + { 2559, 0x0000000000000000ULL, 0xDFB77052CA36F5FAULL }, /* XSUM_XXH3_testdata[5118] */ + { 2559, 0x9E3779B185EBCA8DULL, 0x083D330A88FCC356ULL }, /* XSUM_XXH3_testdata[5119] */ + { 2560, 0x0000000000000000ULL, 0xFE88B5D95CB0BA87ULL }, /* XSUM_XXH3_testdata[5120] */ + { 2560, 0x9E3779B185EBCA8DULL, 0x9D718CB6BD910BA2ULL }, /* XSUM_XXH3_testdata[5121] */ + { 2561, 0x0000000000000000ULL, 0xB417B3F1634546D4ULL }, /* XSUM_XXH3_testdata[5122] */ + { 2561, 0x9E3779B185EBCA8DULL, 0x98B20C48B84C4B1AULL }, /* XSUM_XXH3_testdata[5123] */ + { 2562, 0x0000000000000000ULL, 0xCD93768E3866191BULL }, /* XSUM_XXH3_testdata[5124] */ + { 2562, 0x9E3779B185EBCA8DULL, 0xE4A51A83EED3D7B7ULL }, /* XSUM_XXH3_testdata[5125] */ + { 2563, 0x0000000000000000ULL, 0x466B225ADC4EFCB8ULL }, /* XSUM_XXH3_testdata[5126] */ + { 2563, 0x9E3779B185EBCA8DULL, 0xFC869FC17EE1ED47ULL }, /* XSUM_XXH3_testdata[5127] */ + { 2564, 0x0000000000000000ULL, 0x97EEDCA68626A59AULL }, /* XSUM_XXH3_testdata[5128] */ + { 2564, 0x9E3779B185EBCA8DULL, 0xB5AE71338EF75449ULL }, /* XSUM_XXH3_testdata[5129] */ + { 2565, 0x0000000000000000ULL, 0xB4F3EB6590D89B7AULL }, /* XSUM_XXH3_testdata[5130] */ + { 2565, 0x9E3779B185EBCA8DULL, 0xB5C10BDFE714DDE0ULL }, /* XSUM_XXH3_testdata[5131] */ + { 2566, 0x0000000000000000ULL, 0x2ABCC0FC86100D8BULL }, /* XSUM_XXH3_testdata[5132] */ + { 2566, 0x9E3779B185EBCA8DULL, 0xAD4F7612DA2A8D6AULL }, /* XSUM_XXH3_testdata[5133] */ + { 2567, 0x0000000000000000ULL, 0xF7A5777064BB2E3AULL }, /* XSUM_XXH3_testdata[5134] */ + { 2567, 0x9E3779B185EBCA8DULL, 0x2B809C5C59C1BA8CULL }, /* XSUM_XXH3_testdata[5135] */ + { 2568, 0x0000000000000000ULL, 0xC37DE712755AF5A1ULL }, /* XSUM_XXH3_testdata[5136] */ + { 2568, 0x9E3779B185EBCA8DULL, 0x59D9506FF4A1C59BULL }, /* XSUM_XXH3_testdata[5137] */ + { 2569, 0x0000000000000000ULL, 0x771B2E56B82F9305ULL }, /* XSUM_XXH3_testdata[5138] */ + { 2569, 0x9E3779B185EBCA8DULL, 0x602479761F075306ULL }, /* XSUM_XXH3_testdata[5139] */ + { 2570, 0x0000000000000000ULL, 0xABD36BA52C8E93D7ULL }, /* XSUM_XXH3_testdata[5140] */ + { 2570, 0x9E3779B185EBCA8DULL, 0x9BBEFFD3913419D9ULL }, /* XSUM_XXH3_testdata[5141] */ + { 2571, 0x0000000000000000ULL, 0x1939BE0252324E1FULL }, /* XSUM_XXH3_testdata[5142] */ + { 2571, 0x9E3779B185EBCA8DULL, 0x818A2AEE26B274D7ULL }, /* XSUM_XXH3_testdata[5143] */ + { 2572, 0x0000000000000000ULL, 0xD43C14CE9E282A46ULL }, /* XSUM_XXH3_testdata[5144] */ + { 2572, 0x9E3779B185EBCA8DULL, 0x5F373D933A5DB1C8ULL }, /* XSUM_XXH3_testdata[5145] */ + { 2573, 0x0000000000000000ULL, 0x1B195DF3CD94DF95ULL }, /* XSUM_XXH3_testdata[5146] */ + { 2573, 0x9E3779B185EBCA8DULL, 0x3A497628983CE0A2ULL }, /* XSUM_XXH3_testdata[5147] */ + { 2574, 0x0000000000000000ULL, 0xBAD61B5DFEE4D9AEULL }, /* XSUM_XXH3_testdata[5148] */ + { 2574, 0x9E3779B185EBCA8DULL, 0x9D2791365ABD4A7DULL }, /* XSUM_XXH3_testdata[5149] */ + { 2575, 0x0000000000000000ULL, 0xAE9812064E359199ULL }, /* XSUM_XXH3_testdata[5150] */ + { 2575, 0x9E3779B185EBCA8DULL, 0x097296A247EDF44AULL }, /* XSUM_XXH3_testdata[5151] */ + { 2576, 0x0000000000000000ULL, 0x6C2FA6480D157458ULL }, /* XSUM_XXH3_testdata[5152] */ + { 2576, 0x9E3779B185EBCA8DULL, 0x84CEB7F2EE585DC7ULL }, /* XSUM_XXH3_testdata[5153] */ + { 2577, 0x0000000000000000ULL, 0x120D18D2B6CA2129ULL }, /* XSUM_XXH3_testdata[5154] */ + { 2577, 0x9E3779B185EBCA8DULL, 0x5E9C2895D3EE0058ULL }, /* XSUM_XXH3_testdata[5155] */ + { 2578, 0x0000000000000000ULL, 0xB641BFFA78F79264ULL }, /* XSUM_XXH3_testdata[5156] */ + { 2578, 0x9E3779B185EBCA8DULL, 0xF1B40D4312F8C015ULL }, /* XSUM_XXH3_testdata[5157] */ + { 2579, 0x0000000000000000ULL, 0xF795516B1D02A34DULL }, /* XSUM_XXH3_testdata[5158] */ + { 2579, 0x9E3779B185EBCA8DULL, 0x1088748B21DC25C5ULL }, /* XSUM_XXH3_testdata[5159] */ + { 2580, 0x0000000000000000ULL, 0xC8FB06691974FF06ULL }, /* XSUM_XXH3_testdata[5160] */ + { 2580, 0x9E3779B185EBCA8DULL, 0x2402D2751DFA59FFULL }, /* XSUM_XXH3_testdata[5161] */ + { 2581, 0x0000000000000000ULL, 0x9E3727290CF565DBULL }, /* XSUM_XXH3_testdata[5162] */ + { 2581, 0x9E3779B185EBCA8DULL, 0xC6B39BCDB68D7521ULL }, /* XSUM_XXH3_testdata[5163] */ + { 2582, 0x0000000000000000ULL, 0xECB9B7BE0D388A50ULL }, /* XSUM_XXH3_testdata[5164] */ + { 2582, 0x9E3779B185EBCA8DULL, 0xB4A2DF2140BF045AULL }, /* XSUM_XXH3_testdata[5165] */ + { 2583, 0x0000000000000000ULL, 0xADBB641E5C1A2DA7ULL }, /* XSUM_XXH3_testdata[5166] */ + { 2583, 0x9E3779B185EBCA8DULL, 0x5962AEF99E1D82EDULL }, /* XSUM_XXH3_testdata[5167] */ + { 2584, 0x0000000000000000ULL, 0x352D8CB9B5A57A57ULL }, /* XSUM_XXH3_testdata[5168] */ + { 2584, 0x9E3779B185EBCA8DULL, 0x1E8D8C0D1C18DF5EULL }, /* XSUM_XXH3_testdata[5169] */ + { 2585, 0x0000000000000000ULL, 0x27BD3C273D8D682CULL }, /* XSUM_XXH3_testdata[5170] */ + { 2585, 0x9E3779B185EBCA8DULL, 0x3819D8CFCB6CCE7AULL }, /* XSUM_XXH3_testdata[5171] */ + { 2586, 0x0000000000000000ULL, 0x713E8F363CB3E1ECULL }, /* XSUM_XXH3_testdata[5172] */ + { 2586, 0x9E3779B185EBCA8DULL, 0x9D7ADB7C07AE3C05ULL }, /* XSUM_XXH3_testdata[5173] */ + { 2587, 0x0000000000000000ULL, 0x511F33647D70DE7DULL }, /* XSUM_XXH3_testdata[5174] */ + { 2587, 0x9E3779B185EBCA8DULL, 0x0B324080469F52BBULL }, /* XSUM_XXH3_testdata[5175] */ + { 2588, 0x0000000000000000ULL, 0xDD3FEB274F4356C5ULL }, /* XSUM_XXH3_testdata[5176] */ + { 2588, 0x9E3779B185EBCA8DULL, 0x1005F0A623F5543DULL }, /* XSUM_XXH3_testdata[5177] */ + { 2589, 0x0000000000000000ULL, 0x6A45D690D397327CULL }, /* XSUM_XXH3_testdata[5178] */ + { 2589, 0x9E3779B185EBCA8DULL, 0x5181ACBF3D01F5CBULL }, /* XSUM_XXH3_testdata[5179] */ + { 2590, 0x0000000000000000ULL, 0x0F311BD0CE8CB7DCULL }, /* XSUM_XXH3_testdata[5180] */ + { 2590, 0x9E3779B185EBCA8DULL, 0x0BAE41BB7EA97721ULL }, /* XSUM_XXH3_testdata[5181] */ + { 2591, 0x0000000000000000ULL, 0x2D7E8992C887B638ULL }, /* XSUM_XXH3_testdata[5182] */ + { 2591, 0x9E3779B185EBCA8DULL, 0xA28BA394DD194668ULL }, /* XSUM_XXH3_testdata[5183] */ + { 2592, 0x0000000000000000ULL, 0xA0985AF7DB1C78DAULL }, /* XSUM_XXH3_testdata[5184] */ + { 2592, 0x9E3779B185EBCA8DULL, 0xCD03D5EF50B7F641ULL }, /* XSUM_XXH3_testdata[5185] */ + { 2593, 0x0000000000000000ULL, 0xC18A32BFAC492DA5ULL }, /* XSUM_XXH3_testdata[5186] */ + { 2593, 0x9E3779B185EBCA8DULL, 0x8ACB50DDDBDC01A5ULL }, /* XSUM_XXH3_testdata[5187] */ + { 2594, 0x0000000000000000ULL, 0xF64DA444EB493F68ULL }, /* XSUM_XXH3_testdata[5188] */ + { 2594, 0x9E3779B185EBCA8DULL, 0xD4D6DC9610B09ED9ULL }, /* XSUM_XXH3_testdata[5189] */ + { 2595, 0x0000000000000000ULL, 0xE52B406153967B5DULL }, /* XSUM_XXH3_testdata[5190] */ + { 2595, 0x9E3779B185EBCA8DULL, 0x32D2229033C5E7E8ULL }, /* XSUM_XXH3_testdata[5191] */ + { 2596, 0x0000000000000000ULL, 0xFD06FE5D8AB51DE0ULL }, /* XSUM_XXH3_testdata[5192] */ + { 2596, 0x9E3779B185EBCA8DULL, 0xA3E51AB7B2578095ULL }, /* XSUM_XXH3_testdata[5193] */ + { 2597, 0x0000000000000000ULL, 0x6AD78967B48D27B0ULL }, /* XSUM_XXH3_testdata[5194] */ + { 2597, 0x9E3779B185EBCA8DULL, 0xB9EC608D42131699ULL }, /* XSUM_XXH3_testdata[5195] */ + { 2598, 0x0000000000000000ULL, 0x5CF771A99E79B668ULL }, /* XSUM_XXH3_testdata[5196] */ + { 2598, 0x9E3779B185EBCA8DULL, 0x12D534B6B541F6F2ULL }, /* XSUM_XXH3_testdata[5197] */ + { 2599, 0x0000000000000000ULL, 0x84CDC90932783EB7ULL }, /* XSUM_XXH3_testdata[5198] */ + { 2599, 0x9E3779B185EBCA8DULL, 0x6A81DD60A3513541ULL }, /* XSUM_XXH3_testdata[5199] */ + { 2600, 0x0000000000000000ULL, 0x793556D83DF49115ULL }, /* XSUM_XXH3_testdata[5200] */ + { 2600, 0x9E3779B185EBCA8DULL, 0x4A7FADFBD097FEF4ULL }, /* XSUM_XXH3_testdata[5201] */ + { 2601, 0x0000000000000000ULL, 0x4DF044753E280E1BULL }, /* XSUM_XXH3_testdata[5202] */ + { 2601, 0x9E3779B185EBCA8DULL, 0x7983257C51743B94ULL }, /* XSUM_XXH3_testdata[5203] */ + { 2602, 0x0000000000000000ULL, 0x51C2F2A5AA9AC6EEULL }, /* XSUM_XXH3_testdata[5204] */ + { 2602, 0x9E3779B185EBCA8DULL, 0xE34EFE3511F7B5DFULL }, /* XSUM_XXH3_testdata[5205] */ + { 2603, 0x0000000000000000ULL, 0x577F4E5B8F4E89DDULL }, /* XSUM_XXH3_testdata[5206] */ + { 2603, 0x9E3779B185EBCA8DULL, 0xFD32BEF84E7F1106ULL }, /* XSUM_XXH3_testdata[5207] */ + { 2604, 0x0000000000000000ULL, 0x8902BC5E2A41B147ULL }, /* XSUM_XXH3_testdata[5208] */ + { 2604, 0x9E3779B185EBCA8DULL, 0x706BFD376CC52DFFULL }, /* XSUM_XXH3_testdata[5209] */ + { 2605, 0x0000000000000000ULL, 0x5FAE4460F3C39846ULL }, /* XSUM_XXH3_testdata[5210] */ + { 2605, 0x9E3779B185EBCA8DULL, 0x9DED80F95A23BD06ULL }, /* XSUM_XXH3_testdata[5211] */ + { 2606, 0x0000000000000000ULL, 0xF8E61A854B43505DULL }, /* XSUM_XXH3_testdata[5212] */ + { 2606, 0x9E3779B185EBCA8DULL, 0x469072E7463A91F5ULL }, /* XSUM_XXH3_testdata[5213] */ + { 2607, 0x0000000000000000ULL, 0xBF55E4C17172119FULL }, /* XSUM_XXH3_testdata[5214] */ + { 2607, 0x9E3779B185EBCA8DULL, 0x83B3CF9D92F676FAULL }, /* XSUM_XXH3_testdata[5215] */ + { 2608, 0x0000000000000000ULL, 0x9557766EF78170A7ULL }, /* XSUM_XXH3_testdata[5216] */ + { 2608, 0x9E3779B185EBCA8DULL, 0x3DC22CB0B2E4E775ULL }, /* XSUM_XXH3_testdata[5217] */ + { 2609, 0x0000000000000000ULL, 0xCF262555C32C1E2CULL }, /* XSUM_XXH3_testdata[5218] */ + { 2609, 0x9E3779B185EBCA8DULL, 0x47ACA6B43896AD9CULL }, /* XSUM_XXH3_testdata[5219] */ + { 2610, 0x0000000000000000ULL, 0xA6A5D0D502CD8978ULL }, /* XSUM_XXH3_testdata[5220] */ + { 2610, 0x9E3779B185EBCA8DULL, 0xF01F3210CCF55F10ULL }, /* XSUM_XXH3_testdata[5221] */ + { 2611, 0x0000000000000000ULL, 0x2C4DBEE8D8330A21ULL }, /* XSUM_XXH3_testdata[5222] */ + { 2611, 0x9E3779B185EBCA8DULL, 0x7C1FA94B50C9F82DULL }, /* XSUM_XXH3_testdata[5223] */ + { 2612, 0x0000000000000000ULL, 0x79DC7D9B0FCED621ULL }, /* XSUM_XXH3_testdata[5224] */ + { 2612, 0x9E3779B185EBCA8DULL, 0x9F530ECF38A6A595ULL }, /* XSUM_XXH3_testdata[5225] */ + { 2613, 0x0000000000000000ULL, 0xB0D601D09C8E2486ULL }, /* XSUM_XXH3_testdata[5226] */ + { 2613, 0x9E3779B185EBCA8DULL, 0x168988B52DF66509ULL }, /* XSUM_XXH3_testdata[5227] */ + { 2614, 0x0000000000000000ULL, 0x296703ED6B4E2196ULL }, /* XSUM_XXH3_testdata[5228] */ + { 2614, 0x9E3779B185EBCA8DULL, 0x077FA33DF4E8106BULL }, /* XSUM_XXH3_testdata[5229] */ + { 2615, 0x0000000000000000ULL, 0x3C129D5A06CD7375ULL }, /* XSUM_XXH3_testdata[5230] */ + { 2615, 0x9E3779B185EBCA8DULL, 0x7FF5CFE58BD3D80FULL }, /* XSUM_XXH3_testdata[5231] */ + { 2616, 0x0000000000000000ULL, 0xB7B4AC0A5B5946E3ULL }, /* XSUM_XXH3_testdata[5232] */ + { 2616, 0x9E3779B185EBCA8DULL, 0xD34936D799A3ACF2ULL }, /* XSUM_XXH3_testdata[5233] */ + { 2617, 0x0000000000000000ULL, 0xC692D17EAF1C1954ULL }, /* XSUM_XXH3_testdata[5234] */ + { 2617, 0x9E3779B185EBCA8DULL, 0x17BE5362B26B02BEULL }, /* XSUM_XXH3_testdata[5235] */ + { 2618, 0x0000000000000000ULL, 0x271B46700F1A8C6BULL }, /* XSUM_XXH3_testdata[5236] */ + { 2618, 0x9E3779B185EBCA8DULL, 0x6EE5315756FC49CEULL }, /* XSUM_XXH3_testdata[5237] */ + { 2619, 0x0000000000000000ULL, 0xA9C0AE3CC22EC8CEULL }, /* XSUM_XXH3_testdata[5238] */ + { 2619, 0x9E3779B185EBCA8DULL, 0x76E30F2B751FDC75ULL }, /* XSUM_XXH3_testdata[5239] */ + { 2620, 0x0000000000000000ULL, 0x9E54D2B87B91BE4FULL }, /* XSUM_XXH3_testdata[5240] */ + { 2620, 0x9E3779B185EBCA8DULL, 0x847D5F2BEC873CD6ULL }, /* XSUM_XXH3_testdata[5241] */ + { 2621, 0x0000000000000000ULL, 0x04DE572AD2A5375BULL }, /* XSUM_XXH3_testdata[5242] */ + { 2621, 0x9E3779B185EBCA8DULL, 0x0686E8B46801DBCCULL }, /* XSUM_XXH3_testdata[5243] */ + { 2622, 0x0000000000000000ULL, 0xADC6AE2C7840086EULL }, /* XSUM_XXH3_testdata[5244] */ + { 2622, 0x9E3779B185EBCA8DULL, 0x9ABEE55D46148633ULL }, /* XSUM_XXH3_testdata[5245] */ + { 2623, 0x0000000000000000ULL, 0x8E5BAC3A499DAED2ULL }, /* XSUM_XXH3_testdata[5246] */ + { 2623, 0x9E3779B185EBCA8DULL, 0xC4EE815218C26490ULL }, /* XSUM_XXH3_testdata[5247] */ + { 2624, 0x0000000000000000ULL, 0x79937D40FBEAE0EEULL }, /* XSUM_XXH3_testdata[5248] */ + { 2624, 0x9E3779B185EBCA8DULL, 0xA2311717DEBB82A4ULL }, /* XSUM_XXH3_testdata[5249] */ + { 2625, 0x0000000000000000ULL, 0xDD4481334E9FB9C2ULL }, /* XSUM_XXH3_testdata[5250] */ + { 2625, 0x9E3779B185EBCA8DULL, 0xA19D3278B3193132ULL }, /* XSUM_XXH3_testdata[5251] */ + { 2626, 0x0000000000000000ULL, 0x0241BB191BEEAA15ULL }, /* XSUM_XXH3_testdata[5252] */ + { 2626, 0x9E3779B185EBCA8DULL, 0xC074D83A8C31BDBCULL }, /* XSUM_XXH3_testdata[5253] */ + { 2627, 0x0000000000000000ULL, 0x1EB83BA0E95C1655ULL }, /* XSUM_XXH3_testdata[5254] */ + { 2627, 0x9E3779B185EBCA8DULL, 0xC477C01EE6C3A537ULL }, /* XSUM_XXH3_testdata[5255] */ + { 2628, 0x0000000000000000ULL, 0x0C4DD67BB0F562C8ULL }, /* XSUM_XXH3_testdata[5256] */ + { 2628, 0x9E3779B185EBCA8DULL, 0x79EA32FD8F436AA2ULL }, /* XSUM_XXH3_testdata[5257] */ + { 2629, 0x0000000000000000ULL, 0x737EBAEA0ADEFF70ULL }, /* XSUM_XXH3_testdata[5258] */ + { 2629, 0x9E3779B185EBCA8DULL, 0xBC70DCF943FBCBD4ULL }, /* XSUM_XXH3_testdata[5259] */ + { 2630, 0x0000000000000000ULL, 0x246BA432B5769B9EULL }, /* XSUM_XXH3_testdata[5260] */ + { 2630, 0x9E3779B185EBCA8DULL, 0x9B3DF72E9DF51AA8ULL }, /* XSUM_XXH3_testdata[5261] */ + { 2631, 0x0000000000000000ULL, 0x2C424F0EC27B9333ULL }, /* XSUM_XXH3_testdata[5262] */ + { 2631, 0x9E3779B185EBCA8DULL, 0x24417D77C0E33AC6ULL }, /* XSUM_XXH3_testdata[5263] */ + { 2632, 0x0000000000000000ULL, 0x1AD8B96CF5A303DAULL }, /* XSUM_XXH3_testdata[5264] */ + { 2632, 0x9E3779B185EBCA8DULL, 0x5AAA8E098E454774ULL }, /* XSUM_XXH3_testdata[5265] */ + { 2633, 0x0000000000000000ULL, 0xD2C83ED9155634FEULL }, /* XSUM_XXH3_testdata[5266] */ + { 2633, 0x9E3779B185EBCA8DULL, 0x5C85BFCCF0926393ULL }, /* XSUM_XXH3_testdata[5267] */ + { 2634, 0x0000000000000000ULL, 0xB26D421672653094ULL }, /* XSUM_XXH3_testdata[5268] */ + { 2634, 0x9E3779B185EBCA8DULL, 0xC39EB9D4E889AC53ULL }, /* XSUM_XXH3_testdata[5269] */ + { 2635, 0x0000000000000000ULL, 0xAE65782138999678ULL }, /* XSUM_XXH3_testdata[5270] */ + { 2635, 0x9E3779B185EBCA8DULL, 0xD6DE637F2CF60651ULL }, /* XSUM_XXH3_testdata[5271] */ + { 2636, 0x0000000000000000ULL, 0x8293E92420859F92ULL }, /* XSUM_XXH3_testdata[5272] */ + { 2636, 0x9E3779B185EBCA8DULL, 0xAA98B201C1EB0FB2ULL }, /* XSUM_XXH3_testdata[5273] */ + { 2637, 0x0000000000000000ULL, 0x463D5BB372D71DF8ULL }, /* XSUM_XXH3_testdata[5274] */ + { 2637, 0x9E3779B185EBCA8DULL, 0x17A02B21B39C4518ULL }, /* XSUM_XXH3_testdata[5275] */ + { 2638, 0x0000000000000000ULL, 0x2FABFE4DF1017EF5ULL }, /* XSUM_XXH3_testdata[5276] */ + { 2638, 0x9E3779B185EBCA8DULL, 0x676D60830BF6C2A4ULL }, /* XSUM_XXH3_testdata[5277] */ + { 2639, 0x0000000000000000ULL, 0x052B70E8495A8C5FULL }, /* XSUM_XXH3_testdata[5278] */ + { 2639, 0x9E3779B185EBCA8DULL, 0xFDBDCE1EDA106F45ULL }, /* XSUM_XXH3_testdata[5279] */ + { 2640, 0x0000000000000000ULL, 0x13B98550B2E1133AULL }, /* XSUM_XXH3_testdata[5280] */ + { 2640, 0x9E3779B185EBCA8DULL, 0xA7C90E41655651CBULL }, /* XSUM_XXH3_testdata[5281] */ + { 2641, 0x0000000000000000ULL, 0x993917249E53DD10ULL }, /* XSUM_XXH3_testdata[5282] */ + { 2641, 0x9E3779B185EBCA8DULL, 0xA25D31BBF1522234ULL }, /* XSUM_XXH3_testdata[5283] */ + { 2642, 0x0000000000000000ULL, 0x79DFAF4CDE4E7990ULL }, /* XSUM_XXH3_testdata[5284] */ + { 2642, 0x9E3779B185EBCA8DULL, 0xC08961744B1C05A1ULL }, /* XSUM_XXH3_testdata[5285] */ + { 2643, 0x0000000000000000ULL, 0x02F6E5D0B5E36602ULL }, /* XSUM_XXH3_testdata[5286] */ + { 2643, 0x9E3779B185EBCA8DULL, 0x5DD5F86B860B983DULL }, /* XSUM_XXH3_testdata[5287] */ + { 2644, 0x0000000000000000ULL, 0x59D7C04DCD7A9C31ULL }, /* XSUM_XXH3_testdata[5288] */ + { 2644, 0x9E3779B185EBCA8DULL, 0x09727950E5C8FB44ULL }, /* XSUM_XXH3_testdata[5289] */ + { 2645, 0x0000000000000000ULL, 0xA73A74733557657FULL }, /* XSUM_XXH3_testdata[5290] */ + { 2645, 0x9E3779B185EBCA8DULL, 0xC4BD5D9640F75625ULL }, /* XSUM_XXH3_testdata[5291] */ + { 2646, 0x0000000000000000ULL, 0x68772A55C9E56246ULL }, /* XSUM_XXH3_testdata[5292] */ + { 2646, 0x9E3779B185EBCA8DULL, 0x1C50DD529DB79DC6ULL }, /* XSUM_XXH3_testdata[5293] */ + { 2647, 0x0000000000000000ULL, 0x388AC2C4452446F5ULL }, /* XSUM_XXH3_testdata[5294] */ + { 2647, 0x9E3779B185EBCA8DULL, 0xDFA71D727175FE54ULL }, /* XSUM_XXH3_testdata[5295] */ + { 2648, 0x0000000000000000ULL, 0x17C777FE609883D9ULL }, /* XSUM_XXH3_testdata[5296] */ + { 2648, 0x9E3779B185EBCA8DULL, 0x086F565F371F7BF5ULL }, /* XSUM_XXH3_testdata[5297] */ + { 2649, 0x0000000000000000ULL, 0x29D915B6CDAF1576ULL }, /* XSUM_XXH3_testdata[5298] */ + { 2649, 0x9E3779B185EBCA8DULL, 0x725766FA1F433305ULL }, /* XSUM_XXH3_testdata[5299] */ + { 2650, 0x0000000000000000ULL, 0x4428A0F2F241E77CULL }, /* XSUM_XXH3_testdata[5300] */ + { 2650, 0x9E3779B185EBCA8DULL, 0xD8837F9E84379EADULL }, /* XSUM_XXH3_testdata[5301] */ + { 2651, 0x0000000000000000ULL, 0x50226B7D26F9FFEFULL }, /* XSUM_XXH3_testdata[5302] */ + { 2651, 0x9E3779B185EBCA8DULL, 0xCDDFA7F0AAB17C21ULL }, /* XSUM_XXH3_testdata[5303] */ + { 2652, 0x0000000000000000ULL, 0xAFDD18658C66F457ULL }, /* XSUM_XXH3_testdata[5304] */ + { 2652, 0x9E3779B185EBCA8DULL, 0x0CA3F1A77FEB0AD0ULL }, /* XSUM_XXH3_testdata[5305] */ + { 2653, 0x0000000000000000ULL, 0x90D6CB1D97A2C85AULL }, /* XSUM_XXH3_testdata[5306] */ + { 2653, 0x9E3779B185EBCA8DULL, 0xE68075A9292A3EBEULL }, /* XSUM_XXH3_testdata[5307] */ + { 2654, 0x0000000000000000ULL, 0x4E1FA4CEC6584CB9ULL }, /* XSUM_XXH3_testdata[5308] */ + { 2654, 0x9E3779B185EBCA8DULL, 0x71A47E1A45F59D80ULL }, /* XSUM_XXH3_testdata[5309] */ + { 2655, 0x0000000000000000ULL, 0x59AC02AC895A5379ULL }, /* XSUM_XXH3_testdata[5310] */ + { 2655, 0x9E3779B185EBCA8DULL, 0xD83081AA95B4AA8EULL }, /* XSUM_XXH3_testdata[5311] */ + { 2656, 0x0000000000000000ULL, 0x13981EC22DD78499ULL }, /* XSUM_XXH3_testdata[5312] */ + { 2656, 0x9E3779B185EBCA8DULL, 0x76F0AD69CDFD0254ULL }, /* XSUM_XXH3_testdata[5313] */ + { 2657, 0x0000000000000000ULL, 0xAACD492864D6B9E4ULL }, /* XSUM_XXH3_testdata[5314] */ + { 2657, 0x9E3779B185EBCA8DULL, 0x6F8384F087AF019DULL }, /* XSUM_XXH3_testdata[5315] */ + { 2658, 0x0000000000000000ULL, 0xDE0C44779FFEE002ULL }, /* XSUM_XXH3_testdata[5316] */ + { 2658, 0x9E3779B185EBCA8DULL, 0x6338E397A813A3F9ULL }, /* XSUM_XXH3_testdata[5317] */ + { 2659, 0x0000000000000000ULL, 0x89B7998E416EC5CDULL }, /* XSUM_XXH3_testdata[5318] */ + { 2659, 0x9E3779B185EBCA8DULL, 0x1910B8DCBBDA7530ULL }, /* XSUM_XXH3_testdata[5319] */ + { 2660, 0x0000000000000000ULL, 0x9FA812A12388E7A3ULL }, /* XSUM_XXH3_testdata[5320] */ + { 2660, 0x9E3779B185EBCA8DULL, 0xAEE3667EB03F3485ULL }, /* XSUM_XXH3_testdata[5321] */ + { 2661, 0x0000000000000000ULL, 0xC016F36D3412818FULL }, /* XSUM_XXH3_testdata[5322] */ + { 2661, 0x9E3779B185EBCA8DULL, 0x25B163D739A0D36AULL }, /* XSUM_XXH3_testdata[5323] */ + { 2662, 0x0000000000000000ULL, 0x8D1F596F263D9397ULL }, /* XSUM_XXH3_testdata[5324] */ + { 2662, 0x9E3779B185EBCA8DULL, 0x6A8BB4C01177798DULL }, /* XSUM_XXH3_testdata[5325] */ + { 2663, 0x0000000000000000ULL, 0x42D9F50DCE51E48FULL }, /* XSUM_XXH3_testdata[5326] */ + { 2663, 0x9E3779B185EBCA8DULL, 0x568D106E7EB991DFULL }, /* XSUM_XXH3_testdata[5327] */ + { 2664, 0x0000000000000000ULL, 0x9EE636034F83E51EULL }, /* XSUM_XXH3_testdata[5328] */ + { 2664, 0x9E3779B185EBCA8DULL, 0xBDC01BEE7D7F6342ULL }, /* XSUM_XXH3_testdata[5329] */ + { 2665, 0x0000000000000000ULL, 0x844C87FB2DBC28C1ULL }, /* XSUM_XXH3_testdata[5330] */ + { 2665, 0x9E3779B185EBCA8DULL, 0x1B7B68C2FB38F0BFULL }, /* XSUM_XXH3_testdata[5331] */ + { 2666, 0x0000000000000000ULL, 0xF38FC2659AFA13E7ULL }, /* XSUM_XXH3_testdata[5332] */ + { 2666, 0x9E3779B185EBCA8DULL, 0xE85DEBAD6838BCF9ULL }, /* XSUM_XXH3_testdata[5333] */ + { 2667, 0x0000000000000000ULL, 0x276FF5707C509A89ULL }, /* XSUM_XXH3_testdata[5334] */ + { 2667, 0x9E3779B185EBCA8DULL, 0x5BCC923A6CE9D2E3ULL }, /* XSUM_XXH3_testdata[5335] */ + { 2668, 0x0000000000000000ULL, 0x99A95EA696BD6785ULL }, /* XSUM_XXH3_testdata[5336] */ + { 2668, 0x9E3779B185EBCA8DULL, 0x598FACDB1FC4FF31ULL }, /* XSUM_XXH3_testdata[5337] */ + { 2669, 0x0000000000000000ULL, 0x587C1525793EAC83ULL }, /* XSUM_XXH3_testdata[5338] */ + { 2669, 0x9E3779B185EBCA8DULL, 0xFE934DA8D6689EADULL }, /* XSUM_XXH3_testdata[5339] */ + { 2670, 0x0000000000000000ULL, 0xAE625CFCC51CA5B6ULL }, /* XSUM_XXH3_testdata[5340] */ + { 2670, 0x9E3779B185EBCA8DULL, 0x82203BFF0066A4D6ULL }, /* XSUM_XXH3_testdata[5341] */ + { 2671, 0x0000000000000000ULL, 0xA87597FFB968B6E0ULL }, /* XSUM_XXH3_testdata[5342] */ + { 2671, 0x9E3779B185EBCA8DULL, 0x5C87AE9CF5951A93ULL }, /* XSUM_XXH3_testdata[5343] */ + { 2672, 0x0000000000000000ULL, 0x615BD5A28193AEF1ULL }, /* XSUM_XXH3_testdata[5344] */ + { 2672, 0x9E3779B185EBCA8DULL, 0x495B718A1B4B8408ULL }, /* XSUM_XXH3_testdata[5345] */ + { 2673, 0x0000000000000000ULL, 0x9D4E0BF6898776B0ULL }, /* XSUM_XXH3_testdata[5346] */ + { 2673, 0x9E3779B185EBCA8DULL, 0xDEC8490ACBE435ADULL }, /* XSUM_XXH3_testdata[5347] */ + { 2674, 0x0000000000000000ULL, 0xA5C43A054767C765ULL }, /* XSUM_XXH3_testdata[5348] */ + { 2674, 0x9E3779B185EBCA8DULL, 0x8368867E1EA6FC99ULL }, /* XSUM_XXH3_testdata[5349] */ + { 2675, 0x0000000000000000ULL, 0x16BBD0C10B5D2923ULL }, /* XSUM_XXH3_testdata[5350] */ + { 2675, 0x9E3779B185EBCA8DULL, 0x164E8EE293E821BCULL }, /* XSUM_XXH3_testdata[5351] */ + { 2676, 0x0000000000000000ULL, 0x84BC3B4237C011F0ULL }, /* XSUM_XXH3_testdata[5352] */ + { 2676, 0x9E3779B185EBCA8DULL, 0xCA34B1C20B89EA14ULL }, /* XSUM_XXH3_testdata[5353] */ + { 2677, 0x0000000000000000ULL, 0x85F78F29D4E96850ULL }, /* XSUM_XXH3_testdata[5354] */ + { 2677, 0x9E3779B185EBCA8DULL, 0x391275578A5E0783ULL }, /* XSUM_XXH3_testdata[5355] */ + { 2678, 0x0000000000000000ULL, 0xF3EFCA9185986EB0ULL }, /* XSUM_XXH3_testdata[5356] */ + { 2678, 0x9E3779B185EBCA8DULL, 0x377E026296B6768DULL }, /* XSUM_XXH3_testdata[5357] */ + { 2679, 0x0000000000000000ULL, 0x03308A07CDF022E0ULL }, /* XSUM_XXH3_testdata[5358] */ + { 2679, 0x9E3779B185EBCA8DULL, 0xCC09B8CFA131A49CULL }, /* XSUM_XXH3_testdata[5359] */ + { 2680, 0x0000000000000000ULL, 0xD90831B33475C6DCULL }, /* XSUM_XXH3_testdata[5360] */ + { 2680, 0x9E3779B185EBCA8DULL, 0xD4954B2E7FDE32ACULL }, /* XSUM_XXH3_testdata[5361] */ + { 2681, 0x0000000000000000ULL, 0xC1547AC0EE938EDDULL }, /* XSUM_XXH3_testdata[5362] */ + { 2681, 0x9E3779B185EBCA8DULL, 0xBCCE8DD6ABF21DBFULL }, /* XSUM_XXH3_testdata[5363] */ + { 2682, 0x0000000000000000ULL, 0xF4D2F97480A43A13ULL }, /* XSUM_XXH3_testdata[5364] */ + { 2682, 0x9E3779B185EBCA8DULL, 0x79716517796A6054ULL }, /* XSUM_XXH3_testdata[5365] */ + { 2683, 0x0000000000000000ULL, 0xC29DCF207A0AA424ULL }, /* XSUM_XXH3_testdata[5366] */ + { 2683, 0x9E3779B185EBCA8DULL, 0xACB24D3AD0D98BCFULL }, /* XSUM_XXH3_testdata[5367] */ + { 2684, 0x0000000000000000ULL, 0x13B268BDF2A4552BULL }, /* XSUM_XXH3_testdata[5368] */ + { 2684, 0x9E3779B185EBCA8DULL, 0x027F4FDCE5AFB403ULL }, /* XSUM_XXH3_testdata[5369] */ + { 2685, 0x0000000000000000ULL, 0xACE63EF23FB86E6AULL }, /* XSUM_XXH3_testdata[5370] */ + { 2685, 0x9E3779B185EBCA8DULL, 0x3B0AFC1CCDA1C39FULL }, /* XSUM_XXH3_testdata[5371] */ + { 2686, 0x0000000000000000ULL, 0x9A49DCE5BE630EAEULL }, /* XSUM_XXH3_testdata[5372] */ + { 2686, 0x9E3779B185EBCA8DULL, 0x4574DA06250C1577ULL }, /* XSUM_XXH3_testdata[5373] */ + { 2687, 0x0000000000000000ULL, 0xD871E9EE58D825F7ULL }, /* XSUM_XXH3_testdata[5374] */ + { 2687, 0x9E3779B185EBCA8DULL, 0xFA3625BF5B009957ULL }, /* XSUM_XXH3_testdata[5375] */ + { 2688, 0x0000000000000000ULL, 0x3266FF28F9519B04ULL }, /* XSUM_XXH3_testdata[5376] */ + { 2688, 0x9E3779B185EBCA8DULL, 0x578B167B0CAAFFD2ULL }, /* XSUM_XXH3_testdata[5377] */ + { 2689, 0x0000000000000000ULL, 0x101AC0C3B5522413ULL }, /* XSUM_XXH3_testdata[5378] */ + { 2689, 0x9E3779B185EBCA8DULL, 0x7A06AFAA36487437ULL }, /* XSUM_XXH3_testdata[5379] */ + { 2690, 0x0000000000000000ULL, 0xFADDE89B51C359C9ULL }, /* XSUM_XXH3_testdata[5380] */ + { 2690, 0x9E3779B185EBCA8DULL, 0xE38E645BF761AC4DULL }, /* XSUM_XXH3_testdata[5381] */ + { 2691, 0x0000000000000000ULL, 0x63506FAC4CBA52C1ULL }, /* XSUM_XXH3_testdata[5382] */ + { 2691, 0x9E3779B185EBCA8DULL, 0xE27E0ABCCE7904DFULL }, /* XSUM_XXH3_testdata[5383] */ + { 2692, 0x0000000000000000ULL, 0x71F53880758D7060ULL }, /* XSUM_XXH3_testdata[5384] */ + { 2692, 0x9E3779B185EBCA8DULL, 0x78581FBA0A1144F3ULL }, /* XSUM_XXH3_testdata[5385] */ + { 2693, 0x0000000000000000ULL, 0xDE9508CCD369CE41ULL }, /* XSUM_XXH3_testdata[5386] */ + { 2693, 0x9E3779B185EBCA8DULL, 0x280431D740E85450ULL }, /* XSUM_XXH3_testdata[5387] */ + { 2694, 0x0000000000000000ULL, 0x71DBA1E913B47BD6ULL }, /* XSUM_XXH3_testdata[5388] */ + { 2694, 0x9E3779B185EBCA8DULL, 0xF19B1A1929F741AEULL }, /* XSUM_XXH3_testdata[5389] */ + { 2695, 0x0000000000000000ULL, 0x55D2D49B1F2BD88CULL }, /* XSUM_XXH3_testdata[5390] */ + { 2695, 0x9E3779B185EBCA8DULL, 0xA5801C01E48F00F9ULL }, /* XSUM_XXH3_testdata[5391] */ + { 2696, 0x0000000000000000ULL, 0x1064CF1956972EB3ULL }, /* XSUM_XXH3_testdata[5392] */ + { 2696, 0x9E3779B185EBCA8DULL, 0x9BAF49DC05ACE5D5ULL }, /* XSUM_XXH3_testdata[5393] */ + { 2697, 0x0000000000000000ULL, 0x5889C462CEA8A71DULL }, /* XSUM_XXH3_testdata[5394] */ + { 2697, 0x9E3779B185EBCA8DULL, 0x7CD2AA74EC82B7AFULL }, /* XSUM_XXH3_testdata[5395] */ + { 2698, 0x0000000000000000ULL, 0x4517D3A546E2CDF8ULL }, /* XSUM_XXH3_testdata[5396] */ + { 2698, 0x9E3779B185EBCA8DULL, 0x85D8B977234EEC88ULL }, /* XSUM_XXH3_testdata[5397] */ + { 2699, 0x0000000000000000ULL, 0x26324B0C49D31CDCULL }, /* XSUM_XXH3_testdata[5398] */ + { 2699, 0x9E3779B185EBCA8DULL, 0xD9624BAD327F76F3ULL }, /* XSUM_XXH3_testdata[5399] */ + { 2700, 0x0000000000000000ULL, 0x770688060303A701ULL }, /* XSUM_XXH3_testdata[5400] */ + { 2700, 0x9E3779B185EBCA8DULL, 0x6EE35FED0CE66F45ULL }, /* XSUM_XXH3_testdata[5401] */ + { 2701, 0x0000000000000000ULL, 0x967A50209E1DB590ULL }, /* XSUM_XXH3_testdata[5402] */ + { 2701, 0x9E3779B185EBCA8DULL, 0xE5654F6E586D4E45ULL }, /* XSUM_XXH3_testdata[5403] */ + { 2702, 0x0000000000000000ULL, 0x8C5F324B88AFD79CULL }, /* XSUM_XXH3_testdata[5404] */ + { 2702, 0x9E3779B185EBCA8DULL, 0xB8CFD42B4236EA07ULL }, /* XSUM_XXH3_testdata[5405] */ + { 2703, 0x0000000000000000ULL, 0xCBD4632639DAB36DULL }, /* XSUM_XXH3_testdata[5406] */ + { 2703, 0x9E3779B185EBCA8DULL, 0xE58EDC615C166AD5ULL }, /* XSUM_XXH3_testdata[5407] */ + { 2704, 0x0000000000000000ULL, 0x49BC475C9EB2111CULL }, /* XSUM_XXH3_testdata[5408] */ + { 2704, 0x9E3779B185EBCA8DULL, 0xB02A55F8B8CC1358ULL }, /* XSUM_XXH3_testdata[5409] */ + { 2705, 0x0000000000000000ULL, 0x95FAC591C6986D3BULL }, /* XSUM_XXH3_testdata[5410] */ + { 2705, 0x9E3779B185EBCA8DULL, 0xEEBAA21D62DB3FE2ULL }, /* XSUM_XXH3_testdata[5411] */ + { 2706, 0x0000000000000000ULL, 0x792DF4D618BFEE49ULL }, /* XSUM_XXH3_testdata[5412] */ + { 2706, 0x9E3779B185EBCA8DULL, 0x8D9B3B158B7B0A3AULL }, /* XSUM_XXH3_testdata[5413] */ + { 2707, 0x0000000000000000ULL, 0x35E99A2BC3203AF2ULL }, /* XSUM_XXH3_testdata[5414] */ + { 2707, 0x9E3779B185EBCA8DULL, 0x2AF059E8D350DCB9ULL }, /* XSUM_XXH3_testdata[5415] */ + { 2708, 0x0000000000000000ULL, 0xB569AF88772A0683ULL }, /* XSUM_XXH3_testdata[5416] */ + { 2708, 0x9E3779B185EBCA8DULL, 0x3D5378B9C7FC63B7ULL }, /* XSUM_XXH3_testdata[5417] */ + { 2709, 0x0000000000000000ULL, 0x8D48AA0E64721261ULL }, /* XSUM_XXH3_testdata[5418] */ + { 2709, 0x9E3779B185EBCA8DULL, 0x271CEA42E8444202ULL }, /* XSUM_XXH3_testdata[5419] */ + { 2710, 0x0000000000000000ULL, 0xC6FF9D293A1AA329ULL }, /* XSUM_XXH3_testdata[5420] */ + { 2710, 0x9E3779B185EBCA8DULL, 0x4C2CEA3B16BBB71FULL }, /* XSUM_XXH3_testdata[5421] */ + { 2711, 0x0000000000000000ULL, 0x5F530CC8CBB57EE2ULL }, /* XSUM_XXH3_testdata[5422] */ + { 2711, 0x9E3779B185EBCA8DULL, 0xD970F7003E55C31DULL }, /* XSUM_XXH3_testdata[5423] */ + { 2712, 0x0000000000000000ULL, 0xBC54D452E46BC7D0ULL }, /* XSUM_XXH3_testdata[5424] */ + { 2712, 0x9E3779B185EBCA8DULL, 0x8A22A690E83F1229ULL }, /* XSUM_XXH3_testdata[5425] */ + { 2713, 0x0000000000000000ULL, 0xD72E6109D358D35AULL }, /* XSUM_XXH3_testdata[5426] */ + { 2713, 0x9E3779B185EBCA8DULL, 0xB09F86C0560A7B30ULL }, /* XSUM_XXH3_testdata[5427] */ + { 2714, 0x0000000000000000ULL, 0x953DE252454629D6ULL }, /* XSUM_XXH3_testdata[5428] */ + { 2714, 0x9E3779B185EBCA8DULL, 0x25DCCEABA8C25758ULL }, /* XSUM_XXH3_testdata[5429] */ + { 2715, 0x0000000000000000ULL, 0xF76715E5D4557FACULL }, /* XSUM_XXH3_testdata[5430] */ + { 2715, 0x9E3779B185EBCA8DULL, 0x077ED657DB913C38ULL }, /* XSUM_XXH3_testdata[5431] */ + { 2716, 0x0000000000000000ULL, 0x776E23A66AEB84B6ULL }, /* XSUM_XXH3_testdata[5432] */ + { 2716, 0x9E3779B185EBCA8DULL, 0xEB50F50AF62FF0DDULL }, /* XSUM_XXH3_testdata[5433] */ + { 2717, 0x0000000000000000ULL, 0x36D2B4C2D5F229B9ULL }, /* XSUM_XXH3_testdata[5434] */ + { 2717, 0x9E3779B185EBCA8DULL, 0xE7257DB30D66F4ABULL }, /* XSUM_XXH3_testdata[5435] */ + { 2718, 0x0000000000000000ULL, 0x3FCF289950CEE08AULL }, /* XSUM_XXH3_testdata[5436] */ + { 2718, 0x9E3779B185EBCA8DULL, 0x419F3C320B5D1D8EULL }, /* XSUM_XXH3_testdata[5437] */ + { 2719, 0x0000000000000000ULL, 0x4E9F78279B4602A1ULL }, /* XSUM_XXH3_testdata[5438] */ + { 2719, 0x9E3779B185EBCA8DULL, 0x9548F72117A6EB81ULL }, /* XSUM_XXH3_testdata[5439] */ + { 2720, 0x0000000000000000ULL, 0x753D8BF5C30B6F75ULL }, /* XSUM_XXH3_testdata[5440] */ + { 2720, 0x9E3779B185EBCA8DULL, 0x7015D8EEB6AA4C5FULL }, /* XSUM_XXH3_testdata[5441] */ + { 2721, 0x0000000000000000ULL, 0xE45A2972F797B027ULL }, /* XSUM_XXH3_testdata[5442] */ + { 2721, 0x9E3779B185EBCA8DULL, 0x1EFE37D9156E2D85ULL }, /* XSUM_XXH3_testdata[5443] */ + { 2722, 0x0000000000000000ULL, 0x720FA85611E358D7ULL }, /* XSUM_XXH3_testdata[5444] */ + { 2722, 0x9E3779B185EBCA8DULL, 0xA5E64C7F065161F6ULL }, /* XSUM_XXH3_testdata[5445] */ + { 2723, 0x0000000000000000ULL, 0x535D73EFBCEA79A7ULL }, /* XSUM_XXH3_testdata[5446] */ + { 2723, 0x9E3779B185EBCA8DULL, 0x21E76579CA88C0B5ULL }, /* XSUM_XXH3_testdata[5447] */ + { 2724, 0x0000000000000000ULL, 0x8951F4CB202A9A7BULL }, /* XSUM_XXH3_testdata[5448] */ + { 2724, 0x9E3779B185EBCA8DULL, 0x6D5DE30B925BB243ULL }, /* XSUM_XXH3_testdata[5449] */ + { 2725, 0x0000000000000000ULL, 0x02EA34C18E600923ULL }, /* XSUM_XXH3_testdata[5450] */ + { 2725, 0x9E3779B185EBCA8DULL, 0x16E400B1E8002ECAULL }, /* XSUM_XXH3_testdata[5451] */ + { 2726, 0x0000000000000000ULL, 0x2D861439B2387DA3ULL }, /* XSUM_XXH3_testdata[5452] */ + { 2726, 0x9E3779B185EBCA8DULL, 0x466E61CDCECD8965ULL }, /* XSUM_XXH3_testdata[5453] */ + { 2727, 0x0000000000000000ULL, 0x126BA5E1221D558EULL }, /* XSUM_XXH3_testdata[5454] */ + { 2727, 0x9E3779B185EBCA8DULL, 0x6E2A5ACD0E5E94EAULL }, /* XSUM_XXH3_testdata[5455] */ + { 2728, 0x0000000000000000ULL, 0x142E85167FC6F09EULL }, /* XSUM_XXH3_testdata[5456] */ + { 2728, 0x9E3779B185EBCA8DULL, 0xDDBA453DB1CE4644ULL }, /* XSUM_XXH3_testdata[5457] */ + { 2729, 0x0000000000000000ULL, 0x54E2E27AA70E87CDULL }, /* XSUM_XXH3_testdata[5458] */ + { 2729, 0x9E3779B185EBCA8DULL, 0x133CD21C564974FEULL }, /* XSUM_XXH3_testdata[5459] */ + { 2730, 0x0000000000000000ULL, 0x19F5A51C54B3A6D2ULL }, /* XSUM_XXH3_testdata[5460] */ + { 2730, 0x9E3779B185EBCA8DULL, 0x1F6AF6A0CFA750B0ULL }, /* XSUM_XXH3_testdata[5461] */ + { 2731, 0x0000000000000000ULL, 0xA6DFEEA3C262AADDULL }, /* XSUM_XXH3_testdata[5462] */ + { 2731, 0x9E3779B185EBCA8DULL, 0x1CB91B67F8F2EE5DULL }, /* XSUM_XXH3_testdata[5463] */ + { 2732, 0x0000000000000000ULL, 0x1130AA460B92A232ULL }, /* XSUM_XXH3_testdata[5464] */ + { 2732, 0x9E3779B185EBCA8DULL, 0x2CF3E546D8821900ULL }, /* XSUM_XXH3_testdata[5465] */ + { 2733, 0x0000000000000000ULL, 0xB2DCE0E3338954E8ULL }, /* XSUM_XXH3_testdata[5466] */ + { 2733, 0x9E3779B185EBCA8DULL, 0xE0F0924F7EE26EB7ULL }, /* XSUM_XXH3_testdata[5467] */ + { 2734, 0x0000000000000000ULL, 0xB7C5C80CB54C1AB8ULL }, /* XSUM_XXH3_testdata[5468] */ + { 2734, 0x9E3779B185EBCA8DULL, 0xDB5C1FCC7A178F80ULL }, /* XSUM_XXH3_testdata[5469] */ + { 2735, 0x0000000000000000ULL, 0x6EDDE6BB963333E4ULL }, /* XSUM_XXH3_testdata[5470] */ + { 2735, 0x9E3779B185EBCA8DULL, 0x6E8710724AD69BC4ULL }, /* XSUM_XXH3_testdata[5471] */ + { 2736, 0x0000000000000000ULL, 0x7A3DCFBA08DD2218ULL }, /* XSUM_XXH3_testdata[5472] */ + { 2736, 0x9E3779B185EBCA8DULL, 0x13E8FEE1C71AAAC5ULL }, /* XSUM_XXH3_testdata[5473] */ + { 2737, 0x0000000000000000ULL, 0xE236CBC86C3366C0ULL }, /* XSUM_XXH3_testdata[5474] */ + { 2737, 0x9E3779B185EBCA8DULL, 0xB2FF2DD5FAD7D707ULL }, /* XSUM_XXH3_testdata[5475] */ + { 2738, 0x0000000000000000ULL, 0x0740BABCB82C79E1ULL }, /* XSUM_XXH3_testdata[5476] */ + { 2738, 0x9E3779B185EBCA8DULL, 0x053A090CB71D2A97ULL }, /* XSUM_XXH3_testdata[5477] */ + { 2739, 0x0000000000000000ULL, 0x25B01CC08FA2F76CULL }, /* XSUM_XXH3_testdata[5478] */ + { 2739, 0x9E3779B185EBCA8DULL, 0x06B6774E705B6F04ULL }, /* XSUM_XXH3_testdata[5479] */ + { 2740, 0x0000000000000000ULL, 0x03B8F0D95A0503C9ULL }, /* XSUM_XXH3_testdata[5480] */ + { 2740, 0x9E3779B185EBCA8DULL, 0x4EFBDC5FCC5FF48DULL }, /* XSUM_XXH3_testdata[5481] */ + { 2741, 0x0000000000000000ULL, 0x2A3C8F37C50C5D4DULL }, /* XSUM_XXH3_testdata[5482] */ + { 2741, 0x9E3779B185EBCA8DULL, 0xA7034CA7B8F00A87ULL }, /* XSUM_XXH3_testdata[5483] */ + { 2742, 0x0000000000000000ULL, 0x19D39A92C8099D35ULL }, /* XSUM_XXH3_testdata[5484] */ + { 2742, 0x9E3779B185EBCA8DULL, 0x18ED7073D3D37414ULL }, /* XSUM_XXH3_testdata[5485] */ + { 2743, 0x0000000000000000ULL, 0xD6479A438E07F0BCULL }, /* XSUM_XXH3_testdata[5486] */ + { 2743, 0x9E3779B185EBCA8DULL, 0xD569FCB2E3FE0526ULL }, /* XSUM_XXH3_testdata[5487] */ + { 2744, 0x0000000000000000ULL, 0x25305373A50C2A9BULL }, /* XSUM_XXH3_testdata[5488] */ + { 2744, 0x9E3779B185EBCA8DULL, 0xBBFC4F0BFD00D728ULL }, /* XSUM_XXH3_testdata[5489] */ + { 2745, 0x0000000000000000ULL, 0x95C91E93B8FEC500ULL }, /* XSUM_XXH3_testdata[5490] */ + { 2745, 0x9E3779B185EBCA8DULL, 0xE9EFACD2ED18C3ABULL }, /* XSUM_XXH3_testdata[5491] */ + { 2746, 0x0000000000000000ULL, 0x077B587B5C5BD810ULL }, /* XSUM_XXH3_testdata[5492] */ + { 2746, 0x9E3779B185EBCA8DULL, 0xC178F72E6F411074ULL }, /* XSUM_XXH3_testdata[5493] */ + { 2747, 0x0000000000000000ULL, 0xCA8D3A0F2190E06FULL }, /* XSUM_XXH3_testdata[5494] */ + { 2747, 0x9E3779B185EBCA8DULL, 0x5CF89C801F50BE4BULL }, /* XSUM_XXH3_testdata[5495] */ + { 2748, 0x0000000000000000ULL, 0x59A9D5F7C3E59433ULL }, /* XSUM_XXH3_testdata[5496] */ + { 2748, 0x9E3779B185EBCA8DULL, 0x0D438D59A0EE0295ULL }, /* XSUM_XXH3_testdata[5497] */ + { 2749, 0x0000000000000000ULL, 0x7572D747C29A03FAULL }, /* XSUM_XXH3_testdata[5498] */ + { 2749, 0x9E3779B185EBCA8DULL, 0xC25AEA9C6A74B873ULL }, /* XSUM_XXH3_testdata[5499] */ + { 2750, 0x0000000000000000ULL, 0x1F0F0FDB414AEE14ULL }, /* XSUM_XXH3_testdata[5500] */ + { 2750, 0x9E3779B185EBCA8DULL, 0x8F8DE9C001788984ULL }, /* XSUM_XXH3_testdata[5501] */ + { 2751, 0x0000000000000000ULL, 0x30CA11D1D6F7D240ULL }, /* XSUM_XXH3_testdata[5502] */ + { 2751, 0x9E3779B185EBCA8DULL, 0x336DC6720F051ECAULL }, /* XSUM_XXH3_testdata[5503] */ + { 2752, 0x0000000000000000ULL, 0x458EE1F5CED1B45AULL }, /* XSUM_XXH3_testdata[5504] */ + { 2752, 0x9E3779B185EBCA8DULL, 0xC66C6D0011AF599FULL }, /* XSUM_XXH3_testdata[5505] */ + { 2753, 0x0000000000000000ULL, 0x55ADD9C7930867DBULL }, /* XSUM_XXH3_testdata[5506] */ + { 2753, 0x9E3779B185EBCA8DULL, 0xD7E1D7F7D04E0FB0ULL }, /* XSUM_XXH3_testdata[5507] */ + { 2754, 0x0000000000000000ULL, 0x21E57418A4ED11A2ULL }, /* XSUM_XXH3_testdata[5508] */ + { 2754, 0x9E3779B185EBCA8DULL, 0xA0765E3336FEEA07ULL }, /* XSUM_XXH3_testdata[5509] */ + { 2755, 0x0000000000000000ULL, 0x3D95DD744AD00F7CULL }, /* XSUM_XXH3_testdata[5510] */ + { 2755, 0x9E3779B185EBCA8DULL, 0xE9AB7F5E0914C6C2ULL }, /* XSUM_XXH3_testdata[5511] */ + { 2756, 0x0000000000000000ULL, 0x30B8DF382853F200ULL }, /* XSUM_XXH3_testdata[5512] */ + { 2756, 0x9E3779B185EBCA8DULL, 0xE9247B49C5668B31ULL }, /* XSUM_XXH3_testdata[5513] */ + { 2757, 0x0000000000000000ULL, 0x961656946CA43EEBULL }, /* XSUM_XXH3_testdata[5514] */ + { 2757, 0x9E3779B185EBCA8DULL, 0xEC66FDE043F82FF6ULL }, /* XSUM_XXH3_testdata[5515] */ + { 2758, 0x0000000000000000ULL, 0xDE25B87C2A769309ULL }, /* XSUM_XXH3_testdata[5516] */ + { 2758, 0x9E3779B185EBCA8DULL, 0xF79A9EB6D410AD6DULL }, /* XSUM_XXH3_testdata[5517] */ + { 2759, 0x0000000000000000ULL, 0xC68D576FAF60E351ULL }, /* XSUM_XXH3_testdata[5518] */ + { 2759, 0x9E3779B185EBCA8DULL, 0xF45E1897BC935ED7ULL }, /* XSUM_XXH3_testdata[5519] */ + { 2760, 0x0000000000000000ULL, 0xD4121E03DFE0B422ULL }, /* XSUM_XXH3_testdata[5520] */ + { 2760, 0x9E3779B185EBCA8DULL, 0x6D63BC064A5AD595ULL }, /* XSUM_XXH3_testdata[5521] */ + { 2761, 0x0000000000000000ULL, 0x6405876AF8FDA8DBULL }, /* XSUM_XXH3_testdata[5522] */ + { 2761, 0x9E3779B185EBCA8DULL, 0x791A22C29E2A70A1ULL }, /* XSUM_XXH3_testdata[5523] */ + { 2762, 0x0000000000000000ULL, 0x29FB0D9D51C5357CULL }, /* XSUM_XXH3_testdata[5524] */ + { 2762, 0x9E3779B185EBCA8DULL, 0xA656D8D374F98FB2ULL }, /* XSUM_XXH3_testdata[5525] */ + { 2763, 0x0000000000000000ULL, 0xD385572F3331434BULL }, /* XSUM_XXH3_testdata[5526] */ + { 2763, 0x9E3779B185EBCA8DULL, 0x93F2DC4243EF4A0DULL }, /* XSUM_XXH3_testdata[5527] */ + { 2764, 0x0000000000000000ULL, 0x6252F1B78A182579ULL }, /* XSUM_XXH3_testdata[5528] */ + { 2764, 0x9E3779B185EBCA8DULL, 0x9CFAB6B1ED5BC767ULL }, /* XSUM_XXH3_testdata[5529] */ + { 2765, 0x0000000000000000ULL, 0x608232243E88E9E8ULL }, /* XSUM_XXH3_testdata[5530] */ + { 2765, 0x9E3779B185EBCA8DULL, 0x81BEC015284F9D0AULL }, /* XSUM_XXH3_testdata[5531] */ + { 2766, 0x0000000000000000ULL, 0x4CA11F94AA9311FDULL }, /* XSUM_XXH3_testdata[5532] */ + { 2766, 0x9E3779B185EBCA8DULL, 0x757BBBA8832A2596ULL }, /* XSUM_XXH3_testdata[5533] */ + { 2767, 0x0000000000000000ULL, 0x89073CEAB2998F7DULL }, /* XSUM_XXH3_testdata[5534] */ + { 2767, 0x9E3779B185EBCA8DULL, 0xF50449D89C506855ULL }, /* XSUM_XXH3_testdata[5535] */ + { 2768, 0x0000000000000000ULL, 0xE1D5CC26D5DA41C4ULL }, /* XSUM_XXH3_testdata[5536] */ + { 2768, 0x9E3779B185EBCA8DULL, 0x30E85E6688F63EE0ULL }, /* XSUM_XXH3_testdata[5537] */ + { 2769, 0x0000000000000000ULL, 0x53123794A8B8D2C1ULL }, /* XSUM_XXH3_testdata[5538] */ + { 2769, 0x9E3779B185EBCA8DULL, 0xEDED2614F1AAFCF2ULL }, /* XSUM_XXH3_testdata[5539] */ + { 2770, 0x0000000000000000ULL, 0xA1AE5426E70C4FFCULL }, /* XSUM_XXH3_testdata[5540] */ + { 2770, 0x9E3779B185EBCA8DULL, 0xB93D989BE8CD54CAULL }, /* XSUM_XXH3_testdata[5541] */ + { 2771, 0x0000000000000000ULL, 0x1D4DA91632EF09EEULL }, /* XSUM_XXH3_testdata[5542] */ + { 2771, 0x9E3779B185EBCA8DULL, 0xC34E628EC15481A5ULL }, /* XSUM_XXH3_testdata[5543] */ + { 2772, 0x0000000000000000ULL, 0x9ECE7C8A98D7B2E7ULL }, /* XSUM_XXH3_testdata[5544] */ + { 2772, 0x9E3779B185EBCA8DULL, 0x47F5821AAE0F7082ULL }, /* XSUM_XXH3_testdata[5545] */ + { 2773, 0x0000000000000000ULL, 0x6BB09DD7198D07A2ULL }, /* XSUM_XXH3_testdata[5546] */ + { 2773, 0x9E3779B185EBCA8DULL, 0xC4E207B5168826C0ULL }, /* XSUM_XXH3_testdata[5547] */ + { 2774, 0x0000000000000000ULL, 0xE25C5745DA05D231ULL }, /* XSUM_XXH3_testdata[5548] */ + { 2774, 0x9E3779B185EBCA8DULL, 0xE8D3435F6DF7CBEDULL }, /* XSUM_XXH3_testdata[5549] */ + { 2775, 0x0000000000000000ULL, 0x1AA5E49A629B1132ULL }, /* XSUM_XXH3_testdata[5550] */ + { 2775, 0x9E3779B185EBCA8DULL, 0xFBC9277E659170B6ULL }, /* XSUM_XXH3_testdata[5551] */ + { 2776, 0x0000000000000000ULL, 0xDEF60C67EEF33AF9ULL }, /* XSUM_XXH3_testdata[5552] */ + { 2776, 0x9E3779B185EBCA8DULL, 0x6BA7B30A047DA388ULL }, /* XSUM_XXH3_testdata[5553] */ + { 2777, 0x0000000000000000ULL, 0xD693241CC8A8F08EULL }, /* XSUM_XXH3_testdata[5554] */ + { 2777, 0x9E3779B185EBCA8DULL, 0xB72757341DD668F9ULL }, /* XSUM_XXH3_testdata[5555] */ + { 2778, 0x0000000000000000ULL, 0xC241C02AB68275D1ULL }, /* XSUM_XXH3_testdata[5556] */ + { 2778, 0x9E3779B185EBCA8DULL, 0xD939281132FB39B2ULL }, /* XSUM_XXH3_testdata[5557] */ + { 2779, 0x0000000000000000ULL, 0x23980E87C0E6A1A8ULL }, /* XSUM_XXH3_testdata[5558] */ + { 2779, 0x9E3779B185EBCA8DULL, 0xFCFFD0BDECDD5A4DULL }, /* XSUM_XXH3_testdata[5559] */ + { 2780, 0x0000000000000000ULL, 0x4D6E1D1FEB019F6CULL }, /* XSUM_XXH3_testdata[5560] */ + { 2780, 0x9E3779B185EBCA8DULL, 0xA7FBD57639340763ULL }, /* XSUM_XXH3_testdata[5561] */ + { 2781, 0x0000000000000000ULL, 0xFAB2435B6EB9D069ULL }, /* XSUM_XXH3_testdata[5562] */ + { 2781, 0x9E3779B185EBCA8DULL, 0x2248F2C9F0E1999BULL }, /* XSUM_XXH3_testdata[5563] */ + { 2782, 0x0000000000000000ULL, 0x05EF981B41DEC457ULL }, /* XSUM_XXH3_testdata[5564] */ + { 2782, 0x9E3779B185EBCA8DULL, 0xAFF4964A346B1121ULL }, /* XSUM_XXH3_testdata[5565] */ + { 2783, 0x0000000000000000ULL, 0x64DCA626F718A945ULL }, /* XSUM_XXH3_testdata[5566] */ + { 2783, 0x9E3779B185EBCA8DULL, 0x48DC7C4EA9F0995BULL }, /* XSUM_XXH3_testdata[5567] */ + { 2784, 0x0000000000000000ULL, 0x6A0DECB019CD9D1FULL }, /* XSUM_XXH3_testdata[5568] */ + { 2784, 0x9E3779B185EBCA8DULL, 0x28737B55D92BD60BULL }, /* XSUM_XXH3_testdata[5569] */ + { 2785, 0x0000000000000000ULL, 0xC1FA2E1BB99625BAULL }, /* XSUM_XXH3_testdata[5570] */ + { 2785, 0x9E3779B185EBCA8DULL, 0xB7882C698A0383C5ULL }, /* XSUM_XXH3_testdata[5571] */ + { 2786, 0x0000000000000000ULL, 0xBF23BE2BA21C48D5ULL }, /* XSUM_XXH3_testdata[5572] */ + { 2786, 0x9E3779B185EBCA8DULL, 0x1394CFA56A673081ULL }, /* XSUM_XXH3_testdata[5573] */ + { 2787, 0x0000000000000000ULL, 0xADC591AF19B11864ULL }, /* XSUM_XXH3_testdata[5574] */ + { 2787, 0x9E3779B185EBCA8DULL, 0x848CE896419C53E8ULL }, /* XSUM_XXH3_testdata[5575] */ + { 2788, 0x0000000000000000ULL, 0xF4B7D076FEB765F9ULL }, /* XSUM_XXH3_testdata[5576] */ + { 2788, 0x9E3779B185EBCA8DULL, 0x2D970A62183B59FAULL }, /* XSUM_XXH3_testdata[5577] */ + { 2789, 0x0000000000000000ULL, 0xE3FAC33EEB9E4B43ULL }, /* XSUM_XXH3_testdata[5578] */ + { 2789, 0x9E3779B185EBCA8DULL, 0xE51EA4FC3621CED4ULL }, /* XSUM_XXH3_testdata[5579] */ + { 2790, 0x0000000000000000ULL, 0xA1BD080329CBF8B2ULL }, /* XSUM_XXH3_testdata[5580] */ + { 2790, 0x9E3779B185EBCA8DULL, 0xD95400EEA98D4BC7ULL }, /* XSUM_XXH3_testdata[5581] */ + { 2791, 0x0000000000000000ULL, 0x5858D025CF1FFC7AULL }, /* XSUM_XXH3_testdata[5582] */ + { 2791, 0x9E3779B185EBCA8DULL, 0xEEB3C317B1750030ULL }, /* XSUM_XXH3_testdata[5583] */ + { 2792, 0x0000000000000000ULL, 0xC3CDB2533D838FBAULL }, /* XSUM_XXH3_testdata[5584] */ + { 2792, 0x9E3779B185EBCA8DULL, 0x45F3C5DF6BC55CBAULL }, /* XSUM_XXH3_testdata[5585] */ + { 2793, 0x0000000000000000ULL, 0x6A1EED32A35708E9ULL }, /* XSUM_XXH3_testdata[5586] */ + { 2793, 0x9E3779B185EBCA8DULL, 0x136058660CE27205ULL }, /* XSUM_XXH3_testdata[5587] */ + { 2794, 0x0000000000000000ULL, 0x0AB420E5BAC8786BULL }, /* XSUM_XXH3_testdata[5588] */ + { 2794, 0x9E3779B185EBCA8DULL, 0xD8481AA9976853A8ULL }, /* XSUM_XXH3_testdata[5589] */ + { 2795, 0x0000000000000000ULL, 0x6C3292D057491B10ULL }, /* XSUM_XXH3_testdata[5590] */ + { 2795, 0x9E3779B185EBCA8DULL, 0xD689615FD6EBDE33ULL }, /* XSUM_XXH3_testdata[5591] */ + { 2796, 0x0000000000000000ULL, 0xEB47D4162112B62BULL }, /* XSUM_XXH3_testdata[5592] */ + { 2796, 0x9E3779B185EBCA8DULL, 0xA2B84BB91016CBD3ULL }, /* XSUM_XXH3_testdata[5593] */ + { 2797, 0x0000000000000000ULL, 0x6EBE41CBA6B32EBCULL }, /* XSUM_XXH3_testdata[5594] */ + { 2797, 0x9E3779B185EBCA8DULL, 0xD8BFE83A2C863701ULL }, /* XSUM_XXH3_testdata[5595] */ + { 2798, 0x0000000000000000ULL, 0x210D49A6879775D2ULL }, /* XSUM_XXH3_testdata[5596] */ + { 2798, 0x9E3779B185EBCA8DULL, 0x116FCBE17C5A571CULL }, /* XSUM_XXH3_testdata[5597] */ + { 2799, 0x0000000000000000ULL, 0x2F5FC4E20EADDE64ULL }, /* XSUM_XXH3_testdata[5598] */ + { 2799, 0x9E3779B185EBCA8DULL, 0xE1C0130AB1E55D95ULL }, /* XSUM_XXH3_testdata[5599] */ + { 2800, 0x0000000000000000ULL, 0x1B1671FFCE9AC043ULL }, /* XSUM_XXH3_testdata[5600] */ + { 2800, 0x9E3779B185EBCA8DULL, 0x02BD1944F810DD92ULL }, /* XSUM_XXH3_testdata[5601] */ + { 2801, 0x0000000000000000ULL, 0x9830CF8F663EC7EDULL }, /* XSUM_XXH3_testdata[5602] */ + { 2801, 0x9E3779B185EBCA8DULL, 0xD472EFED50CEC5C4ULL }, /* XSUM_XXH3_testdata[5603] */ + { 2802, 0x0000000000000000ULL, 0xABDD355871184D94ULL }, /* XSUM_XXH3_testdata[5604] */ + { 2802, 0x9E3779B185EBCA8DULL, 0x198D10AA902453B7ULL }, /* XSUM_XXH3_testdata[5605] */ + { 2803, 0x0000000000000000ULL, 0x9465C024549ACF59ULL }, /* XSUM_XXH3_testdata[5606] */ + { 2803, 0x9E3779B185EBCA8DULL, 0x9DFFEAE566EFD06DULL }, /* XSUM_XXH3_testdata[5607] */ + { 2804, 0x0000000000000000ULL, 0x19B8C0A283BAE743ULL }, /* XSUM_XXH3_testdata[5608] */ + { 2804, 0x9E3779B185EBCA8DULL, 0x22582296967DA4F2ULL }, /* XSUM_XXH3_testdata[5609] */ + { 2805, 0x0000000000000000ULL, 0xEA1789858301C007ULL }, /* XSUM_XXH3_testdata[5610] */ + { 2805, 0x9E3779B185EBCA8DULL, 0x9DA7AED963685999ULL }, /* XSUM_XXH3_testdata[5611] */ + { 2806, 0x0000000000000000ULL, 0x41469656B5D06BE5ULL }, /* XSUM_XXH3_testdata[5612] */ + { 2806, 0x9E3779B185EBCA8DULL, 0x6CC73C1166A2ABA9ULL }, /* XSUM_XXH3_testdata[5613] */ + { 2807, 0x0000000000000000ULL, 0x7273ED17287001B5ULL }, /* XSUM_XXH3_testdata[5614] */ + { 2807, 0x9E3779B185EBCA8DULL, 0x831ADC73FFCDF6F9ULL }, /* XSUM_XXH3_testdata[5615] */ + { 2808, 0x0000000000000000ULL, 0xB9DEA446174EB818ULL }, /* XSUM_XXH3_testdata[5616] */ + { 2808, 0x9E3779B185EBCA8DULL, 0x84DDF73FDDCB5ED8ULL }, /* XSUM_XXH3_testdata[5617] */ + { 2809, 0x0000000000000000ULL, 0x8AC31E45973AECC1ULL }, /* XSUM_XXH3_testdata[5618] */ + { 2809, 0x9E3779B185EBCA8DULL, 0x51AA142CF757DBD0ULL }, /* XSUM_XXH3_testdata[5619] */ + { 2810, 0x0000000000000000ULL, 0xB6B2435E7436BB07ULL }, /* XSUM_XXH3_testdata[5620] */ + { 2810, 0x9E3779B185EBCA8DULL, 0x045F8087ED8F321FULL }, /* XSUM_XXH3_testdata[5621] */ + { 2811, 0x0000000000000000ULL, 0x932BE6F1A5AFB020ULL }, /* XSUM_XXH3_testdata[5622] */ + { 2811, 0x9E3779B185EBCA8DULL, 0x96480703F1516151ULL }, /* XSUM_XXH3_testdata[5623] */ + { 2812, 0x0000000000000000ULL, 0x8E0EA93D3213FB93ULL }, /* XSUM_XXH3_testdata[5624] */ + { 2812, 0x9E3779B185EBCA8DULL, 0xCE0158085EB13056ULL }, /* XSUM_XXH3_testdata[5625] */ + { 2813, 0x0000000000000000ULL, 0x4BE7E6FB4F03AD46ULL }, /* XSUM_XXH3_testdata[5626] */ + { 2813, 0x9E3779B185EBCA8DULL, 0x2EB0F58BCD59E94DULL }, /* XSUM_XXH3_testdata[5627] */ + { 2814, 0x0000000000000000ULL, 0x63AC6B0C5EB8E548ULL }, /* XSUM_XXH3_testdata[5628] */ + { 2814, 0x9E3779B185EBCA8DULL, 0xA4968260C0175247ULL }, /* XSUM_XXH3_testdata[5629] */ + { 2815, 0x0000000000000000ULL, 0x7D160EA25A0BF263ULL }, /* XSUM_XXH3_testdata[5630] */ + { 2815, 0x9E3779B185EBCA8DULL, 0x04C38423EDB1143DULL }, /* XSUM_XXH3_testdata[5631] */ + { 2816, 0x0000000000000000ULL, 0x7DD9AD11BF74219BULL }, /* XSUM_XXH3_testdata[5632] */ + { 2816, 0x9E3779B185EBCA8DULL, 0x5132595AB0718E60ULL }, /* XSUM_XXH3_testdata[5633] */ + { 2817, 0x0000000000000000ULL, 0xACE84D8987BC9A3FULL }, /* XSUM_XXH3_testdata[5634] */ + { 2817, 0x9E3779B185EBCA8DULL, 0x09F4E8C5970DFC0FULL }, /* XSUM_XXH3_testdata[5635] */ + { 2818, 0x0000000000000000ULL, 0x782E18AA3283A000ULL }, /* XSUM_XXH3_testdata[5636] */ + { 2818, 0x9E3779B185EBCA8DULL, 0xC1DC5000C515B924ULL }, /* XSUM_XXH3_testdata[5637] */ + { 2819, 0x0000000000000000ULL, 0x506C12F0559AC04CULL }, /* XSUM_XXH3_testdata[5638] */ + { 2819, 0x9E3779B185EBCA8DULL, 0xF5E0E9A9A29AD075ULL }, /* XSUM_XXH3_testdata[5639] */ + { 2820, 0x0000000000000000ULL, 0xEFBC8B5CFA8BE0DDULL }, /* XSUM_XXH3_testdata[5640] */ + { 2820, 0x9E3779B185EBCA8DULL, 0x49D6E8A233638F01ULL }, /* XSUM_XXH3_testdata[5641] */ + { 2821, 0x0000000000000000ULL, 0x1CF5B9AD7407EBF6ULL }, /* XSUM_XXH3_testdata[5642] */ + { 2821, 0x9E3779B185EBCA8DULL, 0x17B9E24D08DFE8AAULL }, /* XSUM_XXH3_testdata[5643] */ + { 2822, 0x0000000000000000ULL, 0x449C2F455774B179ULL }, /* XSUM_XXH3_testdata[5644] */ + { 2822, 0x9E3779B185EBCA8DULL, 0x31796BFCBBE3115CULL }, /* XSUM_XXH3_testdata[5645] */ + { 2823, 0x0000000000000000ULL, 0x50AFDAA39AA339C2ULL }, /* XSUM_XXH3_testdata[5646] */ + { 2823, 0x9E3779B185EBCA8DULL, 0x1F384BEE77C93C38ULL }, /* XSUM_XXH3_testdata[5647] */ + { 2824, 0x0000000000000000ULL, 0xC2D49E3821E9E5F5ULL }, /* XSUM_XXH3_testdata[5648] */ + { 2824, 0x9E3779B185EBCA8DULL, 0x8EDC26F2F9D932BBULL }, /* XSUM_XXH3_testdata[5649] */ + { 2825, 0x0000000000000000ULL, 0xB672CE5DCEDBED8FULL }, /* XSUM_XXH3_testdata[5650] */ + { 2825, 0x9E3779B185EBCA8DULL, 0x6782D661DF360E87ULL }, /* XSUM_XXH3_testdata[5651] */ + { 2826, 0x0000000000000000ULL, 0x0020BE95E992DBD4ULL }, /* XSUM_XXH3_testdata[5652] */ + { 2826, 0x9E3779B185EBCA8DULL, 0x383D0140E3C362EBULL }, /* XSUM_XXH3_testdata[5653] */ + { 2827, 0x0000000000000000ULL, 0xDB0BB50E3BBA26C8ULL }, /* XSUM_XXH3_testdata[5654] */ + { 2827, 0x9E3779B185EBCA8DULL, 0x9F59C9D3C5999E83ULL }, /* XSUM_XXH3_testdata[5655] */ + { 2828, 0x0000000000000000ULL, 0xFE45A73BBC75F478ULL }, /* XSUM_XXH3_testdata[5656] */ + { 2828, 0x9E3779B185EBCA8DULL, 0xCFFADC847709337EULL }, /* XSUM_XXH3_testdata[5657] */ + { 2829, 0x0000000000000000ULL, 0x13B8EC0BAB66B4B3ULL }, /* XSUM_XXH3_testdata[5658] */ + { 2829, 0x9E3779B185EBCA8DULL, 0x30834E9FDD028750ULL }, /* XSUM_XXH3_testdata[5659] */ + { 2830, 0x0000000000000000ULL, 0x043869A252B753D6ULL }, /* XSUM_XXH3_testdata[5660] */ + { 2830, 0x9E3779B185EBCA8DULL, 0x4A943340D1C8711FULL }, /* XSUM_XXH3_testdata[5661] */ + { 2831, 0x0000000000000000ULL, 0xF6AFDECD4341D20DULL }, /* XSUM_XXH3_testdata[5662] */ + { 2831, 0x9E3779B185EBCA8DULL, 0x3D75507F9F47D29DULL }, /* XSUM_XXH3_testdata[5663] */ + { 2832, 0x0000000000000000ULL, 0xD83CA294E171861FULL }, /* XSUM_XXH3_testdata[5664] */ + { 2832, 0x9E3779B185EBCA8DULL, 0x28687D3C9FC4DBBBULL }, /* XSUM_XXH3_testdata[5665] */ + { 2833, 0x0000000000000000ULL, 0x2796F656449258E9ULL }, /* XSUM_XXH3_testdata[5666] */ + { 2833, 0x9E3779B185EBCA8DULL, 0xF99981E1437C06CCULL }, /* XSUM_XXH3_testdata[5667] */ + { 2834, 0x0000000000000000ULL, 0x26621BAC8504AAAAULL }, /* XSUM_XXH3_testdata[5668] */ + { 2834, 0x9E3779B185EBCA8DULL, 0xB2E56CCABE2B5225ULL }, /* XSUM_XXH3_testdata[5669] */ + { 2835, 0x0000000000000000ULL, 0x12E8A2F03E702055ULL }, /* XSUM_XXH3_testdata[5670] */ + { 2835, 0x9E3779B185EBCA8DULL, 0xDF931C2E62D72D1EULL }, /* XSUM_XXH3_testdata[5671] */ + { 2836, 0x0000000000000000ULL, 0xB319ECC965CA289FULL }, /* XSUM_XXH3_testdata[5672] */ + { 2836, 0x9E3779B185EBCA8DULL, 0xD3EB886D9C44442DULL }, /* XSUM_XXH3_testdata[5673] */ + { 2837, 0x0000000000000000ULL, 0xD23665D737269144ULL }, /* XSUM_XXH3_testdata[5674] */ + { 2837, 0x9E3779B185EBCA8DULL, 0x0194403601289C2CULL }, /* XSUM_XXH3_testdata[5675] */ + { 2838, 0x0000000000000000ULL, 0xE702BA54A74FA497ULL }, /* XSUM_XXH3_testdata[5676] */ + { 2838, 0x9E3779B185EBCA8DULL, 0x5769316EF3DA366CULL }, /* XSUM_XXH3_testdata[5677] */ + { 2839, 0x0000000000000000ULL, 0xBE4ECDF9E0A0E838ULL }, /* XSUM_XXH3_testdata[5678] */ + { 2839, 0x9E3779B185EBCA8DULL, 0x5C887FAFDC1DC215ULL }, /* XSUM_XXH3_testdata[5679] */ + { 2840, 0x0000000000000000ULL, 0x3FD70D2173444B7DULL }, /* XSUM_XXH3_testdata[5680] */ + { 2840, 0x9E3779B185EBCA8DULL, 0xB3AE4E046EBB1950ULL }, /* XSUM_XXH3_testdata[5681] */ + { 2841, 0x0000000000000000ULL, 0x6BC356BA1DAA80E8ULL }, /* XSUM_XXH3_testdata[5682] */ + { 2841, 0x9E3779B185EBCA8DULL, 0x728EDAD0E00862BCULL }, /* XSUM_XXH3_testdata[5683] */ + { 2842, 0x0000000000000000ULL, 0x7C9F96FA9AEFA04DULL }, /* XSUM_XXH3_testdata[5684] */ + { 2842, 0x9E3779B185EBCA8DULL, 0xC18AF3EC4472D298ULL }, /* XSUM_XXH3_testdata[5685] */ + { 2843, 0x0000000000000000ULL, 0x64E3B33E887DFBDAULL }, /* XSUM_XXH3_testdata[5686] */ + { 2843, 0x9E3779B185EBCA8DULL, 0x64F8EA1F92A54193ULL }, /* XSUM_XXH3_testdata[5687] */ + { 2844, 0x0000000000000000ULL, 0xCEB1C3EAA134F4E9ULL }, /* XSUM_XXH3_testdata[5688] */ + { 2844, 0x9E3779B185EBCA8DULL, 0x896F0580B69753AAULL }, /* XSUM_XXH3_testdata[5689] */ + { 2845, 0x0000000000000000ULL, 0x5DDA1A2241F53771ULL }, /* XSUM_XXH3_testdata[5690] */ + { 2845, 0x9E3779B185EBCA8DULL, 0xEB8500517B953A49ULL }, /* XSUM_XXH3_testdata[5691] */ + { 2846, 0x0000000000000000ULL, 0x37327FF81F7BA9C2ULL }, /* XSUM_XXH3_testdata[5692] */ + { 2846, 0x9E3779B185EBCA8DULL, 0x0AF45F16D15A419DULL }, /* XSUM_XXH3_testdata[5693] */ + { 2847, 0x0000000000000000ULL, 0xDE608449A6A9121BULL }, /* XSUM_XXH3_testdata[5694] */ + { 2847, 0x9E3779B185EBCA8DULL, 0x8DCA4A69A796563FULL }, /* XSUM_XXH3_testdata[5695] */ + { 2848, 0x0000000000000000ULL, 0x6D42B73340789D60ULL }, /* XSUM_XXH3_testdata[5696] */ + { 2848, 0x9E3779B185EBCA8DULL, 0x44B45E0C589CCDDFULL }, /* XSUM_XXH3_testdata[5697] */ + { 2849, 0x0000000000000000ULL, 0x8A3BB3A77A6748E5ULL }, /* XSUM_XXH3_testdata[5698] */ + { 2849, 0x9E3779B185EBCA8DULL, 0x7118AB2C4762154CULL }, /* XSUM_XXH3_testdata[5699] */ + { 2850, 0x0000000000000000ULL, 0x2C074FADAFB7E9CEULL }, /* XSUM_XXH3_testdata[5700] */ + { 2850, 0x9E3779B185EBCA8DULL, 0x7294E9D3D4CD08FDULL }, /* XSUM_XXH3_testdata[5701] */ + { 2851, 0x0000000000000000ULL, 0x8861A8A47A2F964BULL }, /* XSUM_XXH3_testdata[5702] */ + { 2851, 0x9E3779B185EBCA8DULL, 0xBE0B90B85FF50DFAULL }, /* XSUM_XXH3_testdata[5703] */ + { 2852, 0x0000000000000000ULL, 0x22E6F6001F4531EAULL }, /* XSUM_XXH3_testdata[5704] */ + { 2852, 0x9E3779B185EBCA8DULL, 0x52F2F562BE1BE088ULL }, /* XSUM_XXH3_testdata[5705] */ + { 2853, 0x0000000000000000ULL, 0x80E1EAB3C1F77681ULL }, /* XSUM_XXH3_testdata[5706] */ + { 2853, 0x9E3779B185EBCA8DULL, 0xCAC7242BCDD7EB8EULL }, /* XSUM_XXH3_testdata[5707] */ + { 2854, 0x0000000000000000ULL, 0x4A7671FDCE297BBEULL }, /* XSUM_XXH3_testdata[5708] */ + { 2854, 0x9E3779B185EBCA8DULL, 0x259E93D62E7EF2A1ULL }, /* XSUM_XXH3_testdata[5709] */ + { 2855, 0x0000000000000000ULL, 0x0A49C4ACDDA4DE33ULL }, /* XSUM_XXH3_testdata[5710] */ + { 2855, 0x9E3779B185EBCA8DULL, 0x53E4DCD01C5D114EULL }, /* XSUM_XXH3_testdata[5711] */ + { 2856, 0x0000000000000000ULL, 0x6A34FD012D7D379EULL }, /* XSUM_XXH3_testdata[5712] */ + { 2856, 0x9E3779B185EBCA8DULL, 0x2A09BE56719E22FCULL }, /* XSUM_XXH3_testdata[5713] */ + { 2857, 0x0000000000000000ULL, 0xE833105304C012B9ULL }, /* XSUM_XXH3_testdata[5714] */ + { 2857, 0x9E3779B185EBCA8DULL, 0x50E134066756229AULL }, /* XSUM_XXH3_testdata[5715] */ + { 2858, 0x0000000000000000ULL, 0xA084125D75F93750ULL }, /* XSUM_XXH3_testdata[5716] */ + { 2858, 0x9E3779B185EBCA8DULL, 0x291177B5FD99AF4FULL }, /* XSUM_XXH3_testdata[5717] */ + { 2859, 0x0000000000000000ULL, 0x697C9C5AA1DB3011ULL }, /* XSUM_XXH3_testdata[5718] */ + { 2859, 0x9E3779B185EBCA8DULL, 0x9111A8EF08BDC86FULL }, /* XSUM_XXH3_testdata[5719] */ + { 2860, 0x0000000000000000ULL, 0xC01BD3A9C8B676ACULL }, /* XSUM_XXH3_testdata[5720] */ + { 2860, 0x9E3779B185EBCA8DULL, 0x065ED12B38BE9194ULL }, /* XSUM_XXH3_testdata[5721] */ + { 2861, 0x0000000000000000ULL, 0xC438B94D48DCAB4EULL }, /* XSUM_XXH3_testdata[5722] */ + { 2861, 0x9E3779B185EBCA8DULL, 0xB95538E5F009C012ULL }, /* XSUM_XXH3_testdata[5723] */ + { 2862, 0x0000000000000000ULL, 0x8EC74AE7A04D1704ULL }, /* XSUM_XXH3_testdata[5724] */ + { 2862, 0x9E3779B185EBCA8DULL, 0x414D2BF6C4ED9503ULL }, /* XSUM_XXH3_testdata[5725] */ + { 2863, 0x0000000000000000ULL, 0x4CC8AC8D4DEC3B17ULL }, /* XSUM_XXH3_testdata[5726] */ + { 2863, 0x9E3779B185EBCA8DULL, 0x86405A3ABAFD5616ULL }, /* XSUM_XXH3_testdata[5727] */ + { 2864, 0x0000000000000000ULL, 0xAE4B62FFCAEC21CEULL }, /* XSUM_XXH3_testdata[5728] */ + { 2864, 0x9E3779B185EBCA8DULL, 0x292AE79353E674ECULL }, /* XSUM_XXH3_testdata[5729] */ + { 2865, 0x0000000000000000ULL, 0x7A1B24D068F5CBA4ULL }, /* XSUM_XXH3_testdata[5730] */ + { 2865, 0x9E3779B185EBCA8DULL, 0xFDD9401FEC1AA869ULL }, /* XSUM_XXH3_testdata[5731] */ + { 2866, 0x0000000000000000ULL, 0x45951F249262A503ULL }, /* XSUM_XXH3_testdata[5732] */ + { 2866, 0x9E3779B185EBCA8DULL, 0xD0FA59F2B388526FULL }, /* XSUM_XXH3_testdata[5733] */ + { 2867, 0x0000000000000000ULL, 0xF04016338B794411ULL }, /* XSUM_XXH3_testdata[5734] */ + { 2867, 0x9E3779B185EBCA8DULL, 0xF959B4A6FD455DB0ULL }, /* XSUM_XXH3_testdata[5735] */ + { 2868, 0x0000000000000000ULL, 0x33CD0CF2BFDDA8C7ULL }, /* XSUM_XXH3_testdata[5736] */ + { 2868, 0x9E3779B185EBCA8DULL, 0xA7DCF401D957FC3DULL }, /* XSUM_XXH3_testdata[5737] */ + { 2869, 0x0000000000000000ULL, 0xF6B73BDF3FD3F7C8ULL }, /* XSUM_XXH3_testdata[5738] */ + { 2869, 0x9E3779B185EBCA8DULL, 0x87EFE8D4501CD8EFULL }, /* XSUM_XXH3_testdata[5739] */ + { 2870, 0x0000000000000000ULL, 0x851146CFEFE7A86BULL }, /* XSUM_XXH3_testdata[5740] */ + { 2870, 0x9E3779B185EBCA8DULL, 0xA79C2E2E22ACC8F5ULL }, /* XSUM_XXH3_testdata[5741] */ + { 2871, 0x0000000000000000ULL, 0x3E4C9798133B8D0DULL }, /* XSUM_XXH3_testdata[5742] */ + { 2871, 0x9E3779B185EBCA8DULL, 0x98EA874578066F8CULL }, /* XSUM_XXH3_testdata[5743] */ + { 2872, 0x0000000000000000ULL, 0x8ED4D507B1D71E5FULL }, /* XSUM_XXH3_testdata[5744] */ + { 2872, 0x9E3779B185EBCA8DULL, 0xCFA0AA9C4DC31B33ULL }, /* XSUM_XXH3_testdata[5745] */ + { 2873, 0x0000000000000000ULL, 0xD7F745B00F4C99C6ULL }, /* XSUM_XXH3_testdata[5746] */ + { 2873, 0x9E3779B185EBCA8DULL, 0xA15EE2B199D447DAULL }, /* XSUM_XXH3_testdata[5747] */ + { 2874, 0x0000000000000000ULL, 0x360C5493162E6139ULL }, /* XSUM_XXH3_testdata[5748] */ + { 2874, 0x9E3779B185EBCA8DULL, 0x0B4BA2E110C40A7DULL }, /* XSUM_XXH3_testdata[5749] */ + { 2875, 0x0000000000000000ULL, 0x2C2C75069E5F0C87ULL }, /* XSUM_XXH3_testdata[5750] */ + { 2875, 0x9E3779B185EBCA8DULL, 0x9E00E20A113A71F2ULL }, /* XSUM_XXH3_testdata[5751] */ + { 2876, 0x0000000000000000ULL, 0xBAA009937EF7AB3DULL }, /* XSUM_XXH3_testdata[5752] */ + { 2876, 0x9E3779B185EBCA8DULL, 0x434D361FD8FA5F90ULL }, /* XSUM_XXH3_testdata[5753] */ + { 2877, 0x0000000000000000ULL, 0x1AC95EE241D9604DULL }, /* XSUM_XXH3_testdata[5754] */ + { 2877, 0x9E3779B185EBCA8DULL, 0xA73A88A94D6AAEE3ULL }, /* XSUM_XXH3_testdata[5755] */ + { 2878, 0x0000000000000000ULL, 0x0C97CAB6AA8AEFA1ULL }, /* XSUM_XXH3_testdata[5756] */ + { 2878, 0x9E3779B185EBCA8DULL, 0x3C779BCB58A0A65DULL }, /* XSUM_XXH3_testdata[5757] */ + { 2879, 0x0000000000000000ULL, 0xDD75425D038D346DULL }, /* XSUM_XXH3_testdata[5758] */ + { 2879, 0x9E3779B185EBCA8DULL, 0x0A8B237C83DF1BAFULL }, /* XSUM_XXH3_testdata[5759] */ + { 2880, 0x0000000000000000ULL, 0x1569AEC031E74877ULL }, /* XSUM_XXH3_testdata[5760] */ + { 2880, 0x9E3779B185EBCA8DULL, 0x4312A84752DF1392ULL }, /* XSUM_XXH3_testdata[5761] */ + { 2881, 0x0000000000000000ULL, 0x50F4C429EB0B5DA9ULL }, /* XSUM_XXH3_testdata[5762] */ + { 2881, 0x9E3779B185EBCA8DULL, 0x80059CDACC9C58B2ULL }, /* XSUM_XXH3_testdata[5763] */ + { 2882, 0x0000000000000000ULL, 0x3C51B37EE08390D9ULL }, /* XSUM_XXH3_testdata[5764] */ + { 2882, 0x9E3779B185EBCA8DULL, 0xAD864F5AEE70A173ULL }, /* XSUM_XXH3_testdata[5765] */ + { 2883, 0x0000000000000000ULL, 0x13F4EED17CD88548ULL }, /* XSUM_XXH3_testdata[5766] */ + { 2883, 0x9E3779B185EBCA8DULL, 0xEF76EE2F31E05999ULL }, /* XSUM_XXH3_testdata[5767] */ + { 2884, 0x0000000000000000ULL, 0x2533472603287D23ULL }, /* XSUM_XXH3_testdata[5768] */ + { 2884, 0x9E3779B185EBCA8DULL, 0x554A64EF49681144ULL }, /* XSUM_XXH3_testdata[5769] */ + { 2885, 0x0000000000000000ULL, 0x0E93D60C4AFE6A2BULL }, /* XSUM_XXH3_testdata[5770] */ + { 2885, 0x9E3779B185EBCA8DULL, 0x4B301FEDB9B5441CULL }, /* XSUM_XXH3_testdata[5771] */ + { 2886, 0x0000000000000000ULL, 0x01EB1A14E2478FACULL }, /* XSUM_XXH3_testdata[5772] */ + { 2886, 0x9E3779B185EBCA8DULL, 0x512FDC6471997AB3ULL }, /* XSUM_XXH3_testdata[5773] */ + { 2887, 0x0000000000000000ULL, 0x2765A5C100EA0266ULL }, /* XSUM_XXH3_testdata[5774] */ + { 2887, 0x9E3779B185EBCA8DULL, 0x7BB842DB067D6F19ULL }, /* XSUM_XXH3_testdata[5775] */ + { 2888, 0x0000000000000000ULL, 0xEE7819CD674E60D1ULL }, /* XSUM_XXH3_testdata[5776] */ + { 2888, 0x9E3779B185EBCA8DULL, 0x0DACBB39F18EF099ULL }, /* XSUM_XXH3_testdata[5777] */ + { 2889, 0x0000000000000000ULL, 0xFAF36DFB18B4F794ULL }, /* XSUM_XXH3_testdata[5778] */ + { 2889, 0x9E3779B185EBCA8DULL, 0xFE8D0B026249AFB2ULL }, /* XSUM_XXH3_testdata[5779] */ + { 2890, 0x0000000000000000ULL, 0x59A3D9A04057B014ULL }, /* XSUM_XXH3_testdata[5780] */ + { 2890, 0x9E3779B185EBCA8DULL, 0x89711CA2BAAA440BULL }, /* XSUM_XXH3_testdata[5781] */ + { 2891, 0x0000000000000000ULL, 0xCD08AD27BE784216ULL }, /* XSUM_XXH3_testdata[5782] */ + { 2891, 0x9E3779B185EBCA8DULL, 0x62D6E6128B98A1A7ULL }, /* XSUM_XXH3_testdata[5783] */ + { 2892, 0x0000000000000000ULL, 0xCEE4AF3CF43E2A5FULL }, /* XSUM_XXH3_testdata[5784] */ + { 2892, 0x9E3779B185EBCA8DULL, 0x71DD0854DCF0C185ULL }, /* XSUM_XXH3_testdata[5785] */ + { 2893, 0x0000000000000000ULL, 0x86FBBA87613F456FULL }, /* XSUM_XXH3_testdata[5786] */ + { 2893, 0x9E3779B185EBCA8DULL, 0x4412BC45B5C45E0FULL }, /* XSUM_XXH3_testdata[5787] */ + { 2894, 0x0000000000000000ULL, 0x2C6C34D4C16411D5ULL }, /* XSUM_XXH3_testdata[5788] */ + { 2894, 0x9E3779B185EBCA8DULL, 0x9677ED6A93D72EBCULL }, /* XSUM_XXH3_testdata[5789] */ + { 2895, 0x0000000000000000ULL, 0xE2B5DEB318801298ULL }, /* XSUM_XXH3_testdata[5790] */ + { 2895, 0x9E3779B185EBCA8DULL, 0xE4448348C66AEA5BULL }, /* XSUM_XXH3_testdata[5791] */ + { 2896, 0x0000000000000000ULL, 0xD2C49A2972FC88E3ULL }, /* XSUM_XXH3_testdata[5792] */ + { 2896, 0x9E3779B185EBCA8DULL, 0xF80757E2A01C4068ULL }, /* XSUM_XXH3_testdata[5793] */ + { 2897, 0x0000000000000000ULL, 0x141104A3E73DC453ULL }, /* XSUM_XXH3_testdata[5794] */ + { 2897, 0x9E3779B185EBCA8DULL, 0x8A5866A43B23145AULL }, /* XSUM_XXH3_testdata[5795] */ + { 2898, 0x0000000000000000ULL, 0x34DB3A72949DA213ULL }, /* XSUM_XXH3_testdata[5796] */ + { 2898, 0x9E3779B185EBCA8DULL, 0x2424B5C3177D30F9ULL }, /* XSUM_XXH3_testdata[5797] */ + { 2899, 0x0000000000000000ULL, 0x984AF7FBBCE247A3ULL }, /* XSUM_XXH3_testdata[5798] */ + { 2899, 0x9E3779B185EBCA8DULL, 0x26F58F312DBB36F7ULL }, /* XSUM_XXH3_testdata[5799] */ + { 2900, 0x0000000000000000ULL, 0x05A7E42E977AEFBFULL }, /* XSUM_XXH3_testdata[5800] */ + { 2900, 0x9E3779B185EBCA8DULL, 0x2308BBFFE6CCAC11ULL }, /* XSUM_XXH3_testdata[5801] */ + { 2901, 0x0000000000000000ULL, 0xD2276B6308652305ULL }, /* XSUM_XXH3_testdata[5802] */ + { 2901, 0x9E3779B185EBCA8DULL, 0x9350ACC7278373F9ULL }, /* XSUM_XXH3_testdata[5803] */ + { 2902, 0x0000000000000000ULL, 0x2CA93644EBCE42F5ULL }, /* XSUM_XXH3_testdata[5804] */ + { 2902, 0x9E3779B185EBCA8DULL, 0xF0FE9E18372572D3ULL }, /* XSUM_XXH3_testdata[5805] */ + { 2903, 0x0000000000000000ULL, 0xFE5CD7D2F3A38C0BULL }, /* XSUM_XXH3_testdata[5806] */ + { 2903, 0x9E3779B185EBCA8DULL, 0x4C6A0DB668F82BEBULL }, /* XSUM_XXH3_testdata[5807] */ + { 2904, 0x0000000000000000ULL, 0x21D867EBD5FC4E0AULL }, /* XSUM_XXH3_testdata[5808] */ + { 2904, 0x9E3779B185EBCA8DULL, 0x008EF198EEF4C618ULL }, /* XSUM_XXH3_testdata[5809] */ + { 2905, 0x0000000000000000ULL, 0x6D34EFAF31163CDCULL }, /* XSUM_XXH3_testdata[5810] */ + { 2905, 0x9E3779B185EBCA8DULL, 0x1CD2ADD8BBD4E97EULL }, /* XSUM_XXH3_testdata[5811] */ + { 2906, 0x0000000000000000ULL, 0xD663DB2BACEB027EULL }, /* XSUM_XXH3_testdata[5812] */ + { 2906, 0x9E3779B185EBCA8DULL, 0x1CE37DAD30EEC2A5ULL }, /* XSUM_XXH3_testdata[5813] */ + { 2907, 0x0000000000000000ULL, 0xBEA17878CE925885ULL }, /* XSUM_XXH3_testdata[5814] */ + { 2907, 0x9E3779B185EBCA8DULL, 0x336315FBCEC44E62ULL }, /* XSUM_XXH3_testdata[5815] */ + { 2908, 0x0000000000000000ULL, 0xF4EF93220B92BA40ULL }, /* XSUM_XXH3_testdata[5816] */ + { 2908, 0x9E3779B185EBCA8DULL, 0xDB6BF0A4B49134AEULL }, /* XSUM_XXH3_testdata[5817] */ + { 2909, 0x0000000000000000ULL, 0x436021B24F571768ULL }, /* XSUM_XXH3_testdata[5818] */ + { 2909, 0x9E3779B185EBCA8DULL, 0x11A0401C050B4358ULL }, /* XSUM_XXH3_testdata[5819] */ + { 2910, 0x0000000000000000ULL, 0x4BC346B3F9FF37A3ULL }, /* XSUM_XXH3_testdata[5820] */ + { 2910, 0x9E3779B185EBCA8DULL, 0xC8B0154E930427FDULL }, /* XSUM_XXH3_testdata[5821] */ + { 2911, 0x0000000000000000ULL, 0xDBFBE89DF1427DC9ULL }, /* XSUM_XXH3_testdata[5822] */ + { 2911, 0x9E3779B185EBCA8DULL, 0x959C3EFE3A9FFBADULL }, /* XSUM_XXH3_testdata[5823] */ + { 2912, 0x0000000000000000ULL, 0x6898B302FA2DE57FULL }, /* XSUM_XXH3_testdata[5824] */ + { 2912, 0x9E3779B185EBCA8DULL, 0xEAD47BE6C4B72653ULL }, /* XSUM_XXH3_testdata[5825] */ + { 2913, 0x0000000000000000ULL, 0x3A444D5877850E15ULL }, /* XSUM_XXH3_testdata[5826] */ + { 2913, 0x9E3779B185EBCA8DULL, 0x8B8C8FE28D4AB564ULL }, /* XSUM_XXH3_testdata[5827] */ + { 2914, 0x0000000000000000ULL, 0xB9BB6D96B866D954ULL }, /* XSUM_XXH3_testdata[5828] */ + { 2914, 0x9E3779B185EBCA8DULL, 0xBF970B0F4FEAD08EULL }, /* XSUM_XXH3_testdata[5829] */ + { 2915, 0x0000000000000000ULL, 0xB425E40BCAABF6F0ULL }, /* XSUM_XXH3_testdata[5830] */ + { 2915, 0x9E3779B185EBCA8DULL, 0x184AE70EC6F480E8ULL }, /* XSUM_XXH3_testdata[5831] */ + { 2916, 0x0000000000000000ULL, 0xC0980B081CAAC13EULL }, /* XSUM_XXH3_testdata[5832] */ + { 2916, 0x9E3779B185EBCA8DULL, 0xAC4378B3BA949539ULL }, /* XSUM_XXH3_testdata[5833] */ + { 2917, 0x0000000000000000ULL, 0xD81CF066572FC06DULL }, /* XSUM_XXH3_testdata[5834] */ + { 2917, 0x9E3779B185EBCA8DULL, 0xE909FA49AD169084ULL }, /* XSUM_XXH3_testdata[5835] */ + { 2918, 0x0000000000000000ULL, 0xFE97D61C77F33CA8ULL }, /* XSUM_XXH3_testdata[5836] */ + { 2918, 0x9E3779B185EBCA8DULL, 0x9FD8690E59E936C0ULL }, /* XSUM_XXH3_testdata[5837] */ + { 2919, 0x0000000000000000ULL, 0x90DE987789853E18ULL }, /* XSUM_XXH3_testdata[5838] */ + { 2919, 0x9E3779B185EBCA8DULL, 0xEA97F43444968484ULL }, /* XSUM_XXH3_testdata[5839] */ + { 2920, 0x0000000000000000ULL, 0x54EE786D33C130CCULL }, /* XSUM_XXH3_testdata[5840] */ + { 2920, 0x9E3779B185EBCA8DULL, 0x3046EE02CCE9E480ULL }, /* XSUM_XXH3_testdata[5841] */ + { 2921, 0x0000000000000000ULL, 0x7A2340581E6B8BBCULL }, /* XSUM_XXH3_testdata[5842] */ + { 2921, 0x9E3779B185EBCA8DULL, 0x01CECA730C6FFF9BULL }, /* XSUM_XXH3_testdata[5843] */ + { 2922, 0x0000000000000000ULL, 0x753BDAEC0C775A6CULL }, /* XSUM_XXH3_testdata[5844] */ + { 2922, 0x9E3779B185EBCA8DULL, 0x8A8D2710D71D3533ULL }, /* XSUM_XXH3_testdata[5845] */ + { 2923, 0x0000000000000000ULL, 0xAE2EB637BB2566B6ULL }, /* XSUM_XXH3_testdata[5846] */ + { 2923, 0x9E3779B185EBCA8DULL, 0xAEBAC1FF4EFF8F81ULL }, /* XSUM_XXH3_testdata[5847] */ + { 2924, 0x0000000000000000ULL, 0xF7C951FA76F91F04ULL }, /* XSUM_XXH3_testdata[5848] */ + { 2924, 0x9E3779B185EBCA8DULL, 0xC5A60CBB19EA4578ULL }, /* XSUM_XXH3_testdata[5849] */ + { 2925, 0x0000000000000000ULL, 0xABAB9443CD114538ULL }, /* XSUM_XXH3_testdata[5850] */ + { 2925, 0x9E3779B185EBCA8DULL, 0x723E7E1D128C1E7BULL }, /* XSUM_XXH3_testdata[5851] */ + { 2926, 0x0000000000000000ULL, 0x9EA70C87CBF18F54ULL }, /* XSUM_XXH3_testdata[5852] */ + { 2926, 0x9E3779B185EBCA8DULL, 0xDBB8637F27CD02A6ULL }, /* XSUM_XXH3_testdata[5853] */ + { 2927, 0x0000000000000000ULL, 0xEB0A44B1C78D5F39ULL }, /* XSUM_XXH3_testdata[5854] */ + { 2927, 0x9E3779B185EBCA8DULL, 0x8D391F60755ADE6BULL }, /* XSUM_XXH3_testdata[5855] */ + { 2928, 0x0000000000000000ULL, 0x133DCF49D8583460ULL }, /* XSUM_XXH3_testdata[5856] */ + { 2928, 0x9E3779B185EBCA8DULL, 0x361CB85CA98D5525ULL }, /* XSUM_XXH3_testdata[5857] */ + { 2929, 0x0000000000000000ULL, 0x0DE608C5C6CEFB45ULL }, /* XSUM_XXH3_testdata[5858] */ + { 2929, 0x9E3779B185EBCA8DULL, 0xDB67D5C9E5BD578AULL }, /* XSUM_XXH3_testdata[5859] */ + { 2930, 0x0000000000000000ULL, 0xB9ACAFD4BDA2772BULL }, /* XSUM_XXH3_testdata[5860] */ + { 2930, 0x9E3779B185EBCA8DULL, 0xB24BE8EBD7FD2429ULL }, /* XSUM_XXH3_testdata[5861] */ + { 2931, 0x0000000000000000ULL, 0x50506F8081CA14FEULL }, /* XSUM_XXH3_testdata[5862] */ + { 2931, 0x9E3779B185EBCA8DULL, 0x3D1A9B131E8A82BAULL }, /* XSUM_XXH3_testdata[5863] */ + { 2932, 0x0000000000000000ULL, 0x22ABBE6A3F4AACFAULL }, /* XSUM_XXH3_testdata[5864] */ + { 2932, 0x9E3779B185EBCA8DULL, 0x3EAC1BADB7A35388ULL }, /* XSUM_XXH3_testdata[5865] */ + { 2933, 0x0000000000000000ULL, 0x4B46B1DC6AF605DCULL }, /* XSUM_XXH3_testdata[5866] */ + { 2933, 0x9E3779B185EBCA8DULL, 0x3F3A84CBB2EEA098ULL }, /* XSUM_XXH3_testdata[5867] */ + { 2934, 0x0000000000000000ULL, 0x184CF0DFC8130466ULL }, /* XSUM_XXH3_testdata[5868] */ + { 2934, 0x9E3779B185EBCA8DULL, 0x6912FBF0815C4D3BULL }, /* XSUM_XXH3_testdata[5869] */ + { 2935, 0x0000000000000000ULL, 0x8C26A0D0B25E1825ULL }, /* XSUM_XXH3_testdata[5870] */ + { 2935, 0x9E3779B185EBCA8DULL, 0x0FE45F1BFDB3A789ULL }, /* XSUM_XXH3_testdata[5871] */ + { 2936, 0x0000000000000000ULL, 0x390CFD95463BF23DULL }, /* XSUM_XXH3_testdata[5872] */ + { 2936, 0x9E3779B185EBCA8DULL, 0xCCBD1D191EBF98D9ULL }, /* XSUM_XXH3_testdata[5873] */ + { 2937, 0x0000000000000000ULL, 0xED8496BFF6CB147AULL }, /* XSUM_XXH3_testdata[5874] */ + { 2937, 0x9E3779B185EBCA8DULL, 0x1B714943D1FA7301ULL }, /* XSUM_XXH3_testdata[5875] */ + { 2938, 0x0000000000000000ULL, 0x0518732D96C57B48ULL }, /* XSUM_XXH3_testdata[5876] */ + { 2938, 0x9E3779B185EBCA8DULL, 0x1B6BE8BF3F1DDFB1ULL }, /* XSUM_XXH3_testdata[5877] */ + { 2939, 0x0000000000000000ULL, 0xD261DBE24537BD6EULL }, /* XSUM_XXH3_testdata[5878] */ + { 2939, 0x9E3779B185EBCA8DULL, 0x12D3216FAD9E2066ULL }, /* XSUM_XXH3_testdata[5879] */ + { 2940, 0x0000000000000000ULL, 0x7BA59CE95AA839C3ULL }, /* XSUM_XXH3_testdata[5880] */ + { 2940, 0x9E3779B185EBCA8DULL, 0xE75E35C9A2647D26ULL }, /* XSUM_XXH3_testdata[5881] */ + { 2941, 0x0000000000000000ULL, 0x0CD6A1AB39128B86ULL }, /* XSUM_XXH3_testdata[5882] */ + { 2941, 0x9E3779B185EBCA8DULL, 0x979B859D0D4BFB95ULL }, /* XSUM_XXH3_testdata[5883] */ + { 2942, 0x0000000000000000ULL, 0x0943C31E81275520ULL }, /* XSUM_XXH3_testdata[5884] */ + { 2942, 0x9E3779B185EBCA8DULL, 0xDC0CE937B0FA2A17ULL }, /* XSUM_XXH3_testdata[5885] */ + { 2943, 0x0000000000000000ULL, 0x58DFE07CC7195D4BULL }, /* XSUM_XXH3_testdata[5886] */ + { 2943, 0x9E3779B185EBCA8DULL, 0x7B69CA3D51C3C4FDULL }, /* XSUM_XXH3_testdata[5887] */ + { 2944, 0x0000000000000000ULL, 0x4A76E054ADB05801ULL }, /* XSUM_XXH3_testdata[5888] */ + { 2944, 0x9E3779B185EBCA8DULL, 0x8441D8DB8F90440DULL }, /* XSUM_XXH3_testdata[5889] */ + { 2945, 0x0000000000000000ULL, 0x680E1F01F989965CULL }, /* XSUM_XXH3_testdata[5890] */ + { 2945, 0x9E3779B185EBCA8DULL, 0xB95BD799C0DB1384ULL }, /* XSUM_XXH3_testdata[5891] */ + { 2946, 0x0000000000000000ULL, 0xA4C06C959C025D2CULL }, /* XSUM_XXH3_testdata[5892] */ + { 2946, 0x9E3779B185EBCA8DULL, 0x79C1D7ECA1AC6553ULL }, /* XSUM_XXH3_testdata[5893] */ + { 2947, 0x0000000000000000ULL, 0xAB2AEFA418BC2546ULL }, /* XSUM_XXH3_testdata[5894] */ + { 2947, 0x9E3779B185EBCA8DULL, 0x75FCA75B9FDF1FD2ULL }, /* XSUM_XXH3_testdata[5895] */ + { 2948, 0x0000000000000000ULL, 0x16928BCCA1A24E72ULL }, /* XSUM_XXH3_testdata[5896] */ + { 2948, 0x9E3779B185EBCA8DULL, 0x14BBCD4E631C60D4ULL }, /* XSUM_XXH3_testdata[5897] */ + { 2949, 0x0000000000000000ULL, 0x7F406076F20DDB9EULL }, /* XSUM_XXH3_testdata[5898] */ + { 2949, 0x9E3779B185EBCA8DULL, 0x4F833CECC66FAA63ULL }, /* XSUM_XXH3_testdata[5899] */ + { 2950, 0x0000000000000000ULL, 0x006F8F1E8F0251C4ULL }, /* XSUM_XXH3_testdata[5900] */ + { 2950, 0x9E3779B185EBCA8DULL, 0xFC6994E9E8C5B2C5ULL }, /* XSUM_XXH3_testdata[5901] */ + { 2951, 0x0000000000000000ULL, 0xEFA253902662DB87ULL }, /* XSUM_XXH3_testdata[5902] */ + { 2951, 0x9E3779B185EBCA8DULL, 0x7A570CD29CD1E2B7ULL }, /* XSUM_XXH3_testdata[5903] */ + { 2952, 0x0000000000000000ULL, 0xEBB014405B806812ULL }, /* XSUM_XXH3_testdata[5904] */ + { 2952, 0x9E3779B185EBCA8DULL, 0x3B46BBCAB608B2CAULL }, /* XSUM_XXH3_testdata[5905] */ + { 2953, 0x0000000000000000ULL, 0x3B9A4BFF10FF6AE6ULL }, /* XSUM_XXH3_testdata[5906] */ + { 2953, 0x9E3779B185EBCA8DULL, 0x72004CE62504F78DULL }, /* XSUM_XXH3_testdata[5907] */ + { 2954, 0x0000000000000000ULL, 0x48ADBED331F6F056ULL }, /* XSUM_XXH3_testdata[5908] */ + { 2954, 0x9E3779B185EBCA8DULL, 0x289BB372AA8BC4ABULL }, /* XSUM_XXH3_testdata[5909] */ + { 2955, 0x0000000000000000ULL, 0xABE41E353F27CDD6ULL }, /* XSUM_XXH3_testdata[5910] */ + { 2955, 0x9E3779B185EBCA8DULL, 0x7B96FF58A34CCC40ULL }, /* XSUM_XXH3_testdata[5911] */ + { 2956, 0x0000000000000000ULL, 0xB3C1032D86F85248ULL }, /* XSUM_XXH3_testdata[5912] */ + { 2956, 0x9E3779B185EBCA8DULL, 0x37AA261ABE5D9178ULL }, /* XSUM_XXH3_testdata[5913] */ + { 2957, 0x0000000000000000ULL, 0xF54E143C8A968519ULL }, /* XSUM_XXH3_testdata[5914] */ + { 2957, 0x9E3779B185EBCA8DULL, 0xC280CA2CF4268637ULL }, /* XSUM_XXH3_testdata[5915] */ + { 2958, 0x0000000000000000ULL, 0x06E07E5DCFB1E33CULL }, /* XSUM_XXH3_testdata[5916] */ + { 2958, 0x9E3779B185EBCA8DULL, 0xB3A571D5054CA644ULL }, /* XSUM_XXH3_testdata[5917] */ + { 2959, 0x0000000000000000ULL, 0x6F5CA95AC200CD6CULL }, /* XSUM_XXH3_testdata[5918] */ + { 2959, 0x9E3779B185EBCA8DULL, 0x69A0F7A810B65584ULL }, /* XSUM_XXH3_testdata[5919] */ + { 2960, 0x0000000000000000ULL, 0x43FD02C0E22DA2DFULL }, /* XSUM_XXH3_testdata[5920] */ + { 2960, 0x9E3779B185EBCA8DULL, 0x7CAB8C4CC74C30C8ULL }, /* XSUM_XXH3_testdata[5921] */ + { 2961, 0x0000000000000000ULL, 0x1F227D712B0174FFULL }, /* XSUM_XXH3_testdata[5922] */ + { 2961, 0x9E3779B185EBCA8DULL, 0xD9073AE57337F53CULL }, /* XSUM_XXH3_testdata[5923] */ + { 2962, 0x0000000000000000ULL, 0xE258AC71EA94A519ULL }, /* XSUM_XXH3_testdata[5924] */ + { 2962, 0x9E3779B185EBCA8DULL, 0x4B29A6C7737461E0ULL }, /* XSUM_XXH3_testdata[5925] */ + { 2963, 0x0000000000000000ULL, 0x73821F123EAA5BCDULL }, /* XSUM_XXH3_testdata[5926] */ + { 2963, 0x9E3779B185EBCA8DULL, 0xC216558938EF5BA1ULL }, /* XSUM_XXH3_testdata[5927] */ + { 2964, 0x0000000000000000ULL, 0xB8670BFE99897050ULL }, /* XSUM_XXH3_testdata[5928] */ + { 2964, 0x9E3779B185EBCA8DULL, 0x4B2339A54EF3C147ULL }, /* XSUM_XXH3_testdata[5929] */ + { 2965, 0x0000000000000000ULL, 0x350AEDE785B8945FULL }, /* XSUM_XXH3_testdata[5930] */ + { 2965, 0x9E3779B185EBCA8DULL, 0xD77179604E547276ULL }, /* XSUM_XXH3_testdata[5931] */ + { 2966, 0x0000000000000000ULL, 0x01E9D910AA7B1E8AULL }, /* XSUM_XXH3_testdata[5932] */ + { 2966, 0x9E3779B185EBCA8DULL, 0xB9F2F7F6A64C5F94ULL }, /* XSUM_XXH3_testdata[5933] */ + { 2967, 0x0000000000000000ULL, 0x5F4FF3856B78A4FEULL }, /* XSUM_XXH3_testdata[5934] */ + { 2967, 0x9E3779B185EBCA8DULL, 0x71C8AD9C2F67484EULL }, /* XSUM_XXH3_testdata[5935] */ + { 2968, 0x0000000000000000ULL, 0x10A3909BD2B6FED3ULL }, /* XSUM_XXH3_testdata[5936] */ + { 2968, 0x9E3779B185EBCA8DULL, 0x19B33D48681B4F8CULL }, /* XSUM_XXH3_testdata[5937] */ + { 2969, 0x0000000000000000ULL, 0x891109FF2CD1F81AULL }, /* XSUM_XXH3_testdata[5938] */ + { 2969, 0x9E3779B185EBCA8DULL, 0xAE5019A2ECCAC731ULL }, /* XSUM_XXH3_testdata[5939] */ + { 2970, 0x0000000000000000ULL, 0x773DC838314988EEULL }, /* XSUM_XXH3_testdata[5940] */ + { 2970, 0x9E3779B185EBCA8DULL, 0xAB15925E641C6538ULL }, /* XSUM_XXH3_testdata[5941] */ + { 2971, 0x0000000000000000ULL, 0x55F595FDC543E155ULL }, /* XSUM_XXH3_testdata[5942] */ + { 2971, 0x9E3779B185EBCA8DULL, 0x02C8C5C1900C7F1DULL }, /* XSUM_XXH3_testdata[5943] */ + { 2972, 0x0000000000000000ULL, 0x10738BBD06F66724ULL }, /* XSUM_XXH3_testdata[5944] */ + { 2972, 0x9E3779B185EBCA8DULL, 0x35B3371D7EB05CC4ULL }, /* XSUM_XXH3_testdata[5945] */ + { 2973, 0x0000000000000000ULL, 0x4B7A87BA2A49557FULL }, /* XSUM_XXH3_testdata[5946] */ + { 2973, 0x9E3779B185EBCA8DULL, 0xE27FF33B45CC8234ULL }, /* XSUM_XXH3_testdata[5947] */ + { 2974, 0x0000000000000000ULL, 0xAC6BDA0C97618B0CULL }, /* XSUM_XXH3_testdata[5948] */ + { 2974, 0x9E3779B185EBCA8DULL, 0xA1366887D230130DULL }, /* XSUM_XXH3_testdata[5949] */ + { 2975, 0x0000000000000000ULL, 0xB04EF32B4BE0890DULL }, /* XSUM_XXH3_testdata[5950] */ + { 2975, 0x9E3779B185EBCA8DULL, 0xBAEFD0D4E7EA0EBFULL }, /* XSUM_XXH3_testdata[5951] */ + { 2976, 0x0000000000000000ULL, 0xFA45F5F6DD5D8913ULL }, /* XSUM_XXH3_testdata[5952] */ + { 2976, 0x9E3779B185EBCA8DULL, 0xA58C343D872636C5ULL }, /* XSUM_XXH3_testdata[5953] */ + { 2977, 0x0000000000000000ULL, 0x3DF4C00C299B3601ULL }, /* XSUM_XXH3_testdata[5954] */ + { 2977, 0x9E3779B185EBCA8DULL, 0x0D6370493E3E3961ULL }, /* XSUM_XXH3_testdata[5955] */ + { 2978, 0x0000000000000000ULL, 0x973ED2696A9742C9ULL }, /* XSUM_XXH3_testdata[5956] */ + { 2978, 0x9E3779B185EBCA8DULL, 0xDD813B4FC767EB80ULL }, /* XSUM_XXH3_testdata[5957] */ + { 2979, 0x0000000000000000ULL, 0xDDDB9B2A22EF8D7FULL }, /* XSUM_XXH3_testdata[5958] */ + { 2979, 0x9E3779B185EBCA8DULL, 0xA025A99A14FD30A9ULL }, /* XSUM_XXH3_testdata[5959] */ + { 2980, 0x0000000000000000ULL, 0x3E90C1E8E2F00671ULL }, /* XSUM_XXH3_testdata[5960] */ + { 2980, 0x9E3779B185EBCA8DULL, 0x9357B6B8987937EFULL }, /* XSUM_XXH3_testdata[5961] */ + { 2981, 0x0000000000000000ULL, 0x0DF4B30E83CDFAADULL }, /* XSUM_XXH3_testdata[5962] */ + { 2981, 0x9E3779B185EBCA8DULL, 0x354FA2D2070B8EBFULL }, /* XSUM_XXH3_testdata[5963] */ + { 2982, 0x0000000000000000ULL, 0xCD64CC85D330BB10ULL }, /* XSUM_XXH3_testdata[5964] */ + { 2982, 0x9E3779B185EBCA8DULL, 0x76120161E0167446ULL }, /* XSUM_XXH3_testdata[5965] */ + { 2983, 0x0000000000000000ULL, 0xE6442ADA820FDED9ULL }, /* XSUM_XXH3_testdata[5966] */ + { 2983, 0x9E3779B185EBCA8DULL, 0x4A1A16B2DF9813EEULL }, /* XSUM_XXH3_testdata[5967] */ + { 2984, 0x0000000000000000ULL, 0x1F1F8D1837A6E627ULL }, /* XSUM_XXH3_testdata[5968] */ + { 2984, 0x9E3779B185EBCA8DULL, 0xF183248EF277F11FULL }, /* XSUM_XXH3_testdata[5969] */ + { 2985, 0x0000000000000000ULL, 0xA54E84B3E626BC14ULL }, /* XSUM_XXH3_testdata[5970] */ + { 2985, 0x9E3779B185EBCA8DULL, 0x5E570299E42A17ADULL }, /* XSUM_XXH3_testdata[5971] */ + { 2986, 0x0000000000000000ULL, 0x729FE02D49B315F5ULL }, /* XSUM_XXH3_testdata[5972] */ + { 2986, 0x9E3779B185EBCA8DULL, 0x78E1C8124E2B1FECULL }, /* XSUM_XXH3_testdata[5973] */ + { 2987, 0x0000000000000000ULL, 0x74FED483ED5A315AULL }, /* XSUM_XXH3_testdata[5974] */ + { 2987, 0x9E3779B185EBCA8DULL, 0x63780DA1AD3A7530ULL }, /* XSUM_XXH3_testdata[5975] */ + { 2988, 0x0000000000000000ULL, 0x6EE24DA5C58D40EBULL }, /* XSUM_XXH3_testdata[5976] */ + { 2988, 0x9E3779B185EBCA8DULL, 0x53B4A2299704976FULL }, /* XSUM_XXH3_testdata[5977] */ + { 2989, 0x0000000000000000ULL, 0xDF9396E9CB33F25DULL }, /* XSUM_XXH3_testdata[5978] */ + { 2989, 0x9E3779B185EBCA8DULL, 0xBE9AB6ADD058F5E5ULL }, /* XSUM_XXH3_testdata[5979] */ + { 2990, 0x0000000000000000ULL, 0x488A3DB0190C2AF7ULL }, /* XSUM_XXH3_testdata[5980] */ + { 2990, 0x9E3779B185EBCA8DULL, 0xE023AA8311308C98ULL }, /* XSUM_XXH3_testdata[5981] */ + { 2991, 0x0000000000000000ULL, 0xE88A7AE31E1B3C03ULL }, /* XSUM_XXH3_testdata[5982] */ + { 2991, 0x9E3779B185EBCA8DULL, 0x3AAE2857DD0842FDULL }, /* XSUM_XXH3_testdata[5983] */ + { 2992, 0x0000000000000000ULL, 0xAAB44EC10D54893AULL }, /* XSUM_XXH3_testdata[5984] */ + { 2992, 0x9E3779B185EBCA8DULL, 0x70D3504445732DBCULL }, /* XSUM_XXH3_testdata[5985] */ + { 2993, 0x0000000000000000ULL, 0x0065EDB278F462B0ULL }, /* XSUM_XXH3_testdata[5986] */ + { 2993, 0x9E3779B185EBCA8DULL, 0x7DB5A87970B6B6FDULL }, /* XSUM_XXH3_testdata[5987] */ + { 2994, 0x0000000000000000ULL, 0x81D350FEF6FD05B7ULL }, /* XSUM_XXH3_testdata[5988] */ + { 2994, 0x9E3779B185EBCA8DULL, 0x7E59DF9453895B26ULL }, /* XSUM_XXH3_testdata[5989] */ + { 2995, 0x0000000000000000ULL, 0xBEB814BD7EFCDD21ULL }, /* XSUM_XXH3_testdata[5990] */ + { 2995, 0x9E3779B185EBCA8DULL, 0x3872DF50F3B4D9A4ULL }, /* XSUM_XXH3_testdata[5991] */ + { 2996, 0x0000000000000000ULL, 0xA4E7165D54A94B2CULL }, /* XSUM_XXH3_testdata[5992] */ + { 2996, 0x9E3779B185EBCA8DULL, 0x83E8155E769985B4ULL }, /* XSUM_XXH3_testdata[5993] */ + { 2997, 0x0000000000000000ULL, 0xF69CCD46A0C66AC5ULL }, /* XSUM_XXH3_testdata[5994] */ + { 2997, 0x9E3779B185EBCA8DULL, 0x2152D5835CA1F62EULL }, /* XSUM_XXH3_testdata[5995] */ + { 2998, 0x0000000000000000ULL, 0x13D37A8060290967ULL }, /* XSUM_XXH3_testdata[5996] */ + { 2998, 0x9E3779B185EBCA8DULL, 0x00AA1AD532A9A220ULL }, /* XSUM_XXH3_testdata[5997] */ + { 2999, 0x0000000000000000ULL, 0xFBF8E37174E7CBE0ULL }, /* XSUM_XXH3_testdata[5998] */ + { 2999, 0x9E3779B185EBCA8DULL, 0xD0A29ADBC80300A4ULL }, /* XSUM_XXH3_testdata[5999] */ + { 3000, 0x0000000000000000ULL, 0x120A15F4CBD5A736ULL }, /* XSUM_XXH3_testdata[6000] */ + { 3000, 0x9E3779B185EBCA8DULL, 0xB84AA460C0E807F1ULL }, /* XSUM_XXH3_testdata[6001] */ + { 3001, 0x0000000000000000ULL, 0x7D9993DA4C537BC5ULL }, /* XSUM_XXH3_testdata[6002] */ + { 3001, 0x9E3779B185EBCA8DULL, 0xDE2FB45CBA95F913ULL }, /* XSUM_XXH3_testdata[6003] */ + { 3002, 0x0000000000000000ULL, 0x54424A1161D69445ULL }, /* XSUM_XXH3_testdata[6004] */ + { 3002, 0x9E3779B185EBCA8DULL, 0x5F2D667FA1A2146CULL }, /* XSUM_XXH3_testdata[6005] */ + { 3003, 0x0000000000000000ULL, 0x9E513BFD6058A2A7ULL }, /* XSUM_XXH3_testdata[6006] */ + { 3003, 0x9E3779B185EBCA8DULL, 0xCBF5BADE7FCB38FEULL }, /* XSUM_XXH3_testdata[6007] */ + { 3004, 0x0000000000000000ULL, 0x289460C19CE6733BULL }, /* XSUM_XXH3_testdata[6008] */ + { 3004, 0x9E3779B185EBCA8DULL, 0x1948A67656A4E2E2ULL }, /* XSUM_XXH3_testdata[6009] */ + { 3005, 0x0000000000000000ULL, 0xB55D673EBCF611F6ULL }, /* XSUM_XXH3_testdata[6010] */ + { 3005, 0x9E3779B185EBCA8DULL, 0xCE30C9FE31493EB3ULL }, /* XSUM_XXH3_testdata[6011] */ + { 3006, 0x0000000000000000ULL, 0x079CAF50E31D73B0ULL }, /* XSUM_XXH3_testdata[6012] */ + { 3006, 0x9E3779B185EBCA8DULL, 0x75638175D0ADD699ULL }, /* XSUM_XXH3_testdata[6013] */ + { 3007, 0x0000000000000000ULL, 0x8D9A798A827FF464ULL }, /* XSUM_XXH3_testdata[6014] */ + { 3007, 0x9E3779B185EBCA8DULL, 0xDF0F7D428DB03369ULL }, /* XSUM_XXH3_testdata[6015] */ + { 3008, 0x0000000000000000ULL, 0x032A128E0003C6CCULL }, /* XSUM_XXH3_testdata[6016] */ + { 3008, 0x9E3779B185EBCA8DULL, 0x1B392BBB2F4F7265ULL }, /* XSUM_XXH3_testdata[6017] */ + { 3009, 0x0000000000000000ULL, 0x71B96ED13C84B7A6ULL }, /* XSUM_XXH3_testdata[6018] */ + { 3009, 0x9E3779B185EBCA8DULL, 0x99198184E43578D1ULL }, /* XSUM_XXH3_testdata[6019] */ + { 3010, 0x0000000000000000ULL, 0x8BCAB6A425108497ULL }, /* XSUM_XXH3_testdata[6020] */ + { 3010, 0x9E3779B185EBCA8DULL, 0xF23991A244685F08ULL }, /* XSUM_XXH3_testdata[6021] */ + { 3011, 0x0000000000000000ULL, 0x2A1C0F57BFC2D83AULL }, /* XSUM_XXH3_testdata[6022] */ + { 3011, 0x9E3779B185EBCA8DULL, 0x2C6F1F48D5EF740FULL }, /* XSUM_XXH3_testdata[6023] */ + { 3012, 0x0000000000000000ULL, 0x2727AE494F5A75FEULL }, /* XSUM_XXH3_testdata[6024] */ + { 3012, 0x9E3779B185EBCA8DULL, 0xC69CB787B7281DF4ULL }, /* XSUM_XXH3_testdata[6025] */ + { 3013, 0x0000000000000000ULL, 0x4DE3E131E4BD2EDFULL }, /* XSUM_XXH3_testdata[6026] */ + { 3013, 0x9E3779B185EBCA8DULL, 0x78AEA8833E396C88ULL }, /* XSUM_XXH3_testdata[6027] */ + { 3014, 0x0000000000000000ULL, 0xDDE4CAEA2A781517ULL }, /* XSUM_XXH3_testdata[6028] */ + { 3014, 0x9E3779B185EBCA8DULL, 0xC0A851C6413BD17CULL }, /* XSUM_XXH3_testdata[6029] */ + { 3015, 0x0000000000000000ULL, 0xF44B7A75661491C6ULL }, /* XSUM_XXH3_testdata[6030] */ + { 3015, 0x9E3779B185EBCA8DULL, 0x6ADDF0491196D913ULL }, /* XSUM_XXH3_testdata[6031] */ + { 3016, 0x0000000000000000ULL, 0x157BA455BB39FAB5ULL }, /* XSUM_XXH3_testdata[6032] */ + { 3016, 0x9E3779B185EBCA8DULL, 0xA211324DF0557420ULL }, /* XSUM_XXH3_testdata[6033] */ + { 3017, 0x0000000000000000ULL, 0x2F8C767875C1963BULL }, /* XSUM_XXH3_testdata[6034] */ + { 3017, 0x9E3779B185EBCA8DULL, 0x32ED4EDDC3D0EBE9ULL }, /* XSUM_XXH3_testdata[6035] */ + { 3018, 0x0000000000000000ULL, 0x3D2AC11529277793ULL }, /* XSUM_XXH3_testdata[6036] */ + { 3018, 0x9E3779B185EBCA8DULL, 0xEFD99140F72AFA32ULL }, /* XSUM_XXH3_testdata[6037] */ + { 3019, 0x0000000000000000ULL, 0x0F92385982E5763EULL }, /* XSUM_XXH3_testdata[6038] */ + { 3019, 0x9E3779B185EBCA8DULL, 0xAA9CAC946BCFD58AULL }, /* XSUM_XXH3_testdata[6039] */ + { 3020, 0x0000000000000000ULL, 0xFFCD172FC10CC01EULL }, /* XSUM_XXH3_testdata[6040] */ + { 3020, 0x9E3779B185EBCA8DULL, 0x72BE9E8C15D00463ULL }, /* XSUM_XXH3_testdata[6041] */ + { 3021, 0x0000000000000000ULL, 0xED5D86E0B3185A9CULL }, /* XSUM_XXH3_testdata[6042] */ + { 3021, 0x9E3779B185EBCA8DULL, 0xFFF71150D904ADA0ULL }, /* XSUM_XXH3_testdata[6043] */ + { 3022, 0x0000000000000000ULL, 0x7C4A57D1E819ECC0ULL }, /* XSUM_XXH3_testdata[6044] */ + { 3022, 0x9E3779B185EBCA8DULL, 0xAA982C793CF4FE2CULL }, /* XSUM_XXH3_testdata[6045] */ + { 3023, 0x0000000000000000ULL, 0x2604439004011CAAULL }, /* XSUM_XXH3_testdata[6046] */ + { 3023, 0x9E3779B185EBCA8DULL, 0x6F49B7EA4BD6066EULL }, /* XSUM_XXH3_testdata[6047] */ + { 3024, 0x0000000000000000ULL, 0x4BEF54052BE525D0ULL }, /* XSUM_XXH3_testdata[6048] */ + { 3024, 0x9E3779B185EBCA8DULL, 0x2811E539BB44335EULL }, /* XSUM_XXH3_testdata[6049] */ + { 3025, 0x0000000000000000ULL, 0xB8B5D14615D49784ULL }, /* XSUM_XXH3_testdata[6050] */ + { 3025, 0x9E3779B185EBCA8DULL, 0xF6683BCA789C6AB6ULL }, /* XSUM_XXH3_testdata[6051] */ + { 3026, 0x0000000000000000ULL, 0xE5ED2E4BC25ED4FEULL }, /* XSUM_XXH3_testdata[6052] */ + { 3026, 0x9E3779B185EBCA8DULL, 0x746B882F7D2B6584ULL }, /* XSUM_XXH3_testdata[6053] */ + { 3027, 0x0000000000000000ULL, 0x494D8A012B18DEA3ULL }, /* XSUM_XXH3_testdata[6054] */ + { 3027, 0x9E3779B185EBCA8DULL, 0xD6C2BF6089B48362ULL }, /* XSUM_XXH3_testdata[6055] */ + { 3028, 0x0000000000000000ULL, 0xE4FAB24810CF98EEULL }, /* XSUM_XXH3_testdata[6056] */ + { 3028, 0x9E3779B185EBCA8DULL, 0xB3D503EF09864DCAULL }, /* XSUM_XXH3_testdata[6057] */ + { 3029, 0x0000000000000000ULL, 0xFF05BDA59C8692F7ULL }, /* XSUM_XXH3_testdata[6058] */ + { 3029, 0x9E3779B185EBCA8DULL, 0x5A169FD2CB2E3912ULL }, /* XSUM_XXH3_testdata[6059] */ + { 3030, 0x0000000000000000ULL, 0xD74E824D71198E1BULL }, /* XSUM_XXH3_testdata[6060] */ + { 3030, 0x9E3779B185EBCA8DULL, 0xE0B0FC1E68033657ULL }, /* XSUM_XXH3_testdata[6061] */ + { 3031, 0x0000000000000000ULL, 0x52BC157813CA28FDULL }, /* XSUM_XXH3_testdata[6062] */ + { 3031, 0x9E3779B185EBCA8DULL, 0xC2C8C146172EF2B6ULL }, /* XSUM_XXH3_testdata[6063] */ + { 3032, 0x0000000000000000ULL, 0x0192F4C36C19F541ULL }, /* XSUM_XXH3_testdata[6064] */ + { 3032, 0x9E3779B185EBCA8DULL, 0xB8680C299F8C2670ULL }, /* XSUM_XXH3_testdata[6065] */ + { 3033, 0x0000000000000000ULL, 0xC1118A662B3E5381ULL }, /* XSUM_XXH3_testdata[6066] */ + { 3033, 0x9E3779B185EBCA8DULL, 0x2617D6300D8B98AFULL }, /* XSUM_XXH3_testdata[6067] */ + { 3034, 0x0000000000000000ULL, 0xC612DDA77A2B6739ULL }, /* XSUM_XXH3_testdata[6068] */ + { 3034, 0x9E3779B185EBCA8DULL, 0xFF054E6A928BAE7FULL }, /* XSUM_XXH3_testdata[6069] */ + { 3035, 0x0000000000000000ULL, 0x891E8F4349525A0EULL }, /* XSUM_XXH3_testdata[6070] */ + { 3035, 0x9E3779B185EBCA8DULL, 0x2DDEE65737D657A8ULL }, /* XSUM_XXH3_testdata[6071] */ + { 3036, 0x0000000000000000ULL, 0x52F254763AE93985ULL }, /* XSUM_XXH3_testdata[6072] */ + { 3036, 0x9E3779B185EBCA8DULL, 0x448708C1C3DE9CFBULL }, /* XSUM_XXH3_testdata[6073] */ + { 3037, 0x0000000000000000ULL, 0xC0FD98CDAF535969ULL }, /* XSUM_XXH3_testdata[6074] */ + { 3037, 0x9E3779B185EBCA8DULL, 0x0084DA76277128B6ULL }, /* XSUM_XXH3_testdata[6075] */ + { 3038, 0x0000000000000000ULL, 0xB4858BA14CC418E2ULL }, /* XSUM_XXH3_testdata[6076] */ + { 3038, 0x9E3779B185EBCA8DULL, 0x522D3572219112D7ULL }, /* XSUM_XXH3_testdata[6077] */ + { 3039, 0x0000000000000000ULL, 0x1569F693B70669F0ULL }, /* XSUM_XXH3_testdata[6078] */ + { 3039, 0x9E3779B185EBCA8DULL, 0x60C5FD7C6FECE230ULL }, /* XSUM_XXH3_testdata[6079] */ + { 3040, 0x0000000000000000ULL, 0x7FC80D9A5EFCC67DULL }, /* XSUM_XXH3_testdata[6080] */ + { 3040, 0x9E3779B185EBCA8DULL, 0x9AB4B05D244B7B00ULL }, /* XSUM_XXH3_testdata[6081] */ + { 3041, 0x0000000000000000ULL, 0x53E111516A359F39ULL }, /* XSUM_XXH3_testdata[6082] */ + { 3041, 0x9E3779B185EBCA8DULL, 0x0A7FDF4A5152F876ULL }, /* XSUM_XXH3_testdata[6083] */ + { 3042, 0x0000000000000000ULL, 0xE10FAA1FF256B134ULL }, /* XSUM_XXH3_testdata[6084] */ + { 3042, 0x9E3779B185EBCA8DULL, 0x4685F5F0714BF906ULL }, /* XSUM_XXH3_testdata[6085] */ + { 3043, 0x0000000000000000ULL, 0xE9DAA50EF33FAEE0ULL }, /* XSUM_XXH3_testdata[6086] */ + { 3043, 0x9E3779B185EBCA8DULL, 0x5628D585CE6A2F71ULL }, /* XSUM_XXH3_testdata[6087] */ + { 3044, 0x0000000000000000ULL, 0x3FB549E119A1DB0BULL }, /* XSUM_XXH3_testdata[6088] */ + { 3044, 0x9E3779B185EBCA8DULL, 0x0EC5349117230073ULL }, /* XSUM_XXH3_testdata[6089] */ + { 3045, 0x0000000000000000ULL, 0xC52C880527E7EE42ULL }, /* XSUM_XXH3_testdata[6090] */ + { 3045, 0x9E3779B185EBCA8DULL, 0x79561D65F06AF1E4ULL }, /* XSUM_XXH3_testdata[6091] */ + { 3046, 0x0000000000000000ULL, 0x85AF39ECC47380D6ULL }, /* XSUM_XXH3_testdata[6092] */ + { 3046, 0x9E3779B185EBCA8DULL, 0x2F406936C9E75008ULL }, /* XSUM_XXH3_testdata[6093] */ + { 3047, 0x0000000000000000ULL, 0xA17883ED34DF9C9CULL }, /* XSUM_XXH3_testdata[6094] */ + { 3047, 0x9E3779B185EBCA8DULL, 0x3505A10DC45FAFF5ULL }, /* XSUM_XXH3_testdata[6095] */ + { 3048, 0x0000000000000000ULL, 0x56FCB8BF621BC46CULL }, /* XSUM_XXH3_testdata[6096] */ + { 3048, 0x9E3779B185EBCA8DULL, 0x135F0AD585E4B49BULL }, /* XSUM_XXH3_testdata[6097] */ + { 3049, 0x0000000000000000ULL, 0xFCABF74067D91081ULL }, /* XSUM_XXH3_testdata[6098] */ + { 3049, 0x9E3779B185EBCA8DULL, 0x63111E6E094071FBULL }, /* XSUM_XXH3_testdata[6099] */ + { 3050, 0x0000000000000000ULL, 0xA6D55CB1163CBBAEULL }, /* XSUM_XXH3_testdata[6100] */ + { 3050, 0x9E3779B185EBCA8DULL, 0xEA638F18EFD67488ULL }, /* XSUM_XXH3_testdata[6101] */ + { 3051, 0x0000000000000000ULL, 0xEB24F505D0201A73ULL }, /* XSUM_XXH3_testdata[6102] */ + { 3051, 0x9E3779B185EBCA8DULL, 0xDAB8124FE18205AFULL }, /* XSUM_XXH3_testdata[6103] */ + { 3052, 0x0000000000000000ULL, 0x7987ACF1829352A3ULL }, /* XSUM_XXH3_testdata[6104] */ + { 3052, 0x9E3779B185EBCA8DULL, 0x0DA619B29FEFD3AEULL }, /* XSUM_XXH3_testdata[6105] */ + { 3053, 0x0000000000000000ULL, 0xF6DCAFED19C2110FULL }, /* XSUM_XXH3_testdata[6106] */ + { 3053, 0x9E3779B185EBCA8DULL, 0xCE6F6D56D6B819A5ULL }, /* XSUM_XXH3_testdata[6107] */ + { 3054, 0x0000000000000000ULL, 0x113BB1975695F267ULL }, /* XSUM_XXH3_testdata[6108] */ + { 3054, 0x9E3779B185EBCA8DULL, 0x41BEB0A9045C46E9ULL }, /* XSUM_XXH3_testdata[6109] */ + { 3055, 0x0000000000000000ULL, 0x31EC14CB1C6A64D4ULL }, /* XSUM_XXH3_testdata[6110] */ + { 3055, 0x9E3779B185EBCA8DULL, 0x630502A72FC9F91BULL }, /* XSUM_XXH3_testdata[6111] */ + { 3056, 0x0000000000000000ULL, 0xFC8D946315923718ULL }, /* XSUM_XXH3_testdata[6112] */ + { 3056, 0x9E3779B185EBCA8DULL, 0x6DC4FDCC5C188187ULL }, /* XSUM_XXH3_testdata[6113] */ + { 3057, 0x0000000000000000ULL, 0xA91700F13F1BBE4BULL }, /* XSUM_XXH3_testdata[6114] */ + { 3057, 0x9E3779B185EBCA8DULL, 0x722795CBBFCE823FULL }, /* XSUM_XXH3_testdata[6115] */ + { 3058, 0x0000000000000000ULL, 0xA6D433839C43C439ULL }, /* XSUM_XXH3_testdata[6116] */ + { 3058, 0x9E3779B185EBCA8DULL, 0x131C0BBEC45BF54FULL }, /* XSUM_XXH3_testdata[6117] */ + { 3059, 0x0000000000000000ULL, 0x719B83FD2D183A0FULL }, /* XSUM_XXH3_testdata[6118] */ + { 3059, 0x9E3779B185EBCA8DULL, 0xADB87552F234D8B0ULL }, /* XSUM_XXH3_testdata[6119] */ + { 3060, 0x0000000000000000ULL, 0x9324D8E772F6F02FULL }, /* XSUM_XXH3_testdata[6120] */ + { 3060, 0x9E3779B185EBCA8DULL, 0x6909E806601A139CULL }, /* XSUM_XXH3_testdata[6121] */ + { 3061, 0x0000000000000000ULL, 0x109A2D2288ACD199ULL }, /* XSUM_XXH3_testdata[6122] */ + { 3061, 0x9E3779B185EBCA8DULL, 0x3385E38DD96DF2AFULL }, /* XSUM_XXH3_testdata[6123] */ + { 3062, 0x0000000000000000ULL, 0x1BEE81BC69B566F6ULL }, /* XSUM_XXH3_testdata[6124] */ + { 3062, 0x9E3779B185EBCA8DULL, 0xE6CADD5EA67A1DAEULL }, /* XSUM_XXH3_testdata[6125] */ + { 3063, 0x0000000000000000ULL, 0xFBFB4557EC34D698ULL }, /* XSUM_XXH3_testdata[6126] */ + { 3063, 0x9E3779B185EBCA8DULL, 0x3696BBD4171643A2ULL }, /* XSUM_XXH3_testdata[6127] */ + { 3064, 0x0000000000000000ULL, 0x14E282185745F79CULL }, /* XSUM_XXH3_testdata[6128] */ + { 3064, 0x9E3779B185EBCA8DULL, 0x96BC2B8FAD88A929ULL }, /* XSUM_XXH3_testdata[6129] */ + { 3065, 0x0000000000000000ULL, 0x25C9F9879393E997ULL }, /* XSUM_XXH3_testdata[6130] */ + { 3065, 0x9E3779B185EBCA8DULL, 0x1F0D9D4AFFE22D31ULL }, /* XSUM_XXH3_testdata[6131] */ + { 3066, 0x0000000000000000ULL, 0x010325C9A4640B46ULL }, /* XSUM_XXH3_testdata[6132] */ + { 3066, 0x9E3779B185EBCA8DULL, 0xC85B74B109ACF054ULL }, /* XSUM_XXH3_testdata[6133] */ + { 3067, 0x0000000000000000ULL, 0xEF768413CBDAD45EULL }, /* XSUM_XXH3_testdata[6134] */ + { 3067, 0x9E3779B185EBCA8DULL, 0xA32B4C15F274FC23ULL }, /* XSUM_XXH3_testdata[6135] */ + { 3068, 0x0000000000000000ULL, 0xB5B5BE7F2181A7ABULL }, /* XSUM_XXH3_testdata[6136] */ + { 3068, 0x9E3779B185EBCA8DULL, 0xEC3896CA46CFBEBCULL }, /* XSUM_XXH3_testdata[6137] */ + { 3069, 0x0000000000000000ULL, 0x65B0891D197D8052ULL }, /* XSUM_XXH3_testdata[6138] */ + { 3069, 0x9E3779B185EBCA8DULL, 0xEA5C229CE48A537AULL }, /* XSUM_XXH3_testdata[6139] */ + { 3070, 0x0000000000000000ULL, 0xB4146D3B212234C3ULL }, /* XSUM_XXH3_testdata[6140] */ + { 3070, 0x9E3779B185EBCA8DULL, 0x28DE1E99104CA396ULL }, /* XSUM_XXH3_testdata[6141] */ + { 3071, 0x0000000000000000ULL, 0xEA91DBA6A78E984AULL }, /* XSUM_XXH3_testdata[6142] */ + { 3071, 0x9E3779B185EBCA8DULL, 0xE031963E4476103AULL }, /* XSUM_XXH3_testdata[6143] */ + { 3072, 0x0000000000000000ULL, 0x696BF231F32AB848ULL }, /* XSUM_XXH3_testdata[6144] */ + { 3072, 0x9E3779B185EBCA8DULL, 0xFE150E487CFF7C10ULL }, /* XSUM_XXH3_testdata[6145] */ + { 3073, 0x0000000000000000ULL, 0xBB5CD7893718D93DULL }, /* XSUM_XXH3_testdata[6146] */ + { 3073, 0x9E3779B185EBCA8DULL, 0x5233345A92E0B7D2ULL }, /* XSUM_XXH3_testdata[6147] */ + { 3074, 0x0000000000000000ULL, 0x4544D303A760BFFAULL }, /* XSUM_XXH3_testdata[6148] */ + { 3074, 0x9E3779B185EBCA8DULL, 0x1667C4FDDA475558ULL }, /* XSUM_XXH3_testdata[6149] */ + { 3075, 0x0000000000000000ULL, 0x20A0F9FB85F87027ULL }, /* XSUM_XXH3_testdata[6150] */ + { 3075, 0x9E3779B185EBCA8DULL, 0x83F78721C54EA38CULL }, /* XSUM_XXH3_testdata[6151] */ + { 3076, 0x0000000000000000ULL, 0x3A7D67C26ECD3469ULL }, /* XSUM_XXH3_testdata[6152] */ + { 3076, 0x9E3779B185EBCA8DULL, 0xB5BE83A696B09303ULL }, /* XSUM_XXH3_testdata[6153] */ + { 3077, 0x0000000000000000ULL, 0x2673E1EFA109AD4BULL }, /* XSUM_XXH3_testdata[6154] */ + { 3077, 0x9E3779B185EBCA8DULL, 0x9027ED80737DB3C2ULL }, /* XSUM_XXH3_testdata[6155] */ + { 3078, 0x0000000000000000ULL, 0x211FB4B295AC7DDEULL }, /* XSUM_XXH3_testdata[6156] */ + { 3078, 0x9E3779B185EBCA8DULL, 0xDD74CF8FA750EAF3ULL }, /* XSUM_XXH3_testdata[6157] */ + { 3079, 0x0000000000000000ULL, 0x394653F476FCE696ULL }, /* XSUM_XXH3_testdata[6158] */ + { 3079, 0x9E3779B185EBCA8DULL, 0xABC82F2E8CA84916ULL }, /* XSUM_XXH3_testdata[6159] */ + { 3080, 0x0000000000000000ULL, 0xDEC5003A5B3E0A29ULL }, /* XSUM_XXH3_testdata[6160] */ + { 3080, 0x9E3779B185EBCA8DULL, 0x94C2C8873615DCF5ULL }, /* XSUM_XXH3_testdata[6161] */ + { 3081, 0x0000000000000000ULL, 0x013EE3A30B2101F5ULL }, /* XSUM_XXH3_testdata[6162] */ + { 3081, 0x9E3779B185EBCA8DULL, 0x41656992552CCC2AULL }, /* XSUM_XXH3_testdata[6163] */ + { 3082, 0x0000000000000000ULL, 0x448827E84F765F4AULL }, /* XSUM_XXH3_testdata[6164] */ + { 3082, 0x9E3779B185EBCA8DULL, 0x046BDD756789FA35ULL }, /* XSUM_XXH3_testdata[6165] */ + { 3083, 0x0000000000000000ULL, 0xB3494BD4B2633F2BULL }, /* XSUM_XXH3_testdata[6166] */ + { 3083, 0x9E3779B185EBCA8DULL, 0x916119ED75DE8D24ULL }, /* XSUM_XXH3_testdata[6167] */ + { 3084, 0x0000000000000000ULL, 0x12579A5674B09B07ULL }, /* XSUM_XXH3_testdata[6168] */ + { 3084, 0x9E3779B185EBCA8DULL, 0xFB07F8F25B5AE020ULL }, /* XSUM_XXH3_testdata[6169] */ + { 3085, 0x0000000000000000ULL, 0x2757A7411AAA0AF5ULL }, /* XSUM_XXH3_testdata[6170] */ + { 3085, 0x9E3779B185EBCA8DULL, 0x98832C78F0EEE15BULL }, /* XSUM_XXH3_testdata[6171] */ + { 3086, 0x0000000000000000ULL, 0xF51AA9442403576AULL }, /* XSUM_XXH3_testdata[6172] */ + { 3086, 0x9E3779B185EBCA8DULL, 0xD1E8E39ADAE2E67AULL }, /* XSUM_XXH3_testdata[6173] */ + { 3087, 0x0000000000000000ULL, 0x4EFDFECD0C1218DAULL }, /* XSUM_XXH3_testdata[6174] */ + { 3087, 0x9E3779B185EBCA8DULL, 0x566184AA59123BFFULL }, /* XSUM_XXH3_testdata[6175] */ + { 3088, 0x0000000000000000ULL, 0x71453920FCFBDCB5ULL }, /* XSUM_XXH3_testdata[6176] */ + { 3088, 0x9E3779B185EBCA8DULL, 0xB5ECA63537B8CAB6ULL }, /* XSUM_XXH3_testdata[6177] */ + { 3089, 0x0000000000000000ULL, 0xB8DB9958E9F8DAF1ULL }, /* XSUM_XXH3_testdata[6178] */ + { 3089, 0x9E3779B185EBCA8DULL, 0x4F1D1FAA85396B9CULL }, /* XSUM_XXH3_testdata[6179] */ + { 3090, 0x0000000000000000ULL, 0xADDAEAC431A05F24ULL }, /* XSUM_XXH3_testdata[6180] */ + { 3090, 0x9E3779B185EBCA8DULL, 0x99B4E9662E4CA04DULL }, /* XSUM_XXH3_testdata[6181] */ + { 3091, 0x0000000000000000ULL, 0x6115EB504AD836EAULL }, /* XSUM_XXH3_testdata[6182] */ + { 3091, 0x9E3779B185EBCA8DULL, 0x172CD5B6646EB12AULL }, /* XSUM_XXH3_testdata[6183] */ + { 3092, 0x0000000000000000ULL, 0xDB3D25A94028892AULL }, /* XSUM_XXH3_testdata[6184] */ + { 3092, 0x9E3779B185EBCA8DULL, 0xE337C680B9A11A0AULL }, /* XSUM_XXH3_testdata[6185] */ + { 3093, 0x0000000000000000ULL, 0x11F008344CCFA92BULL }, /* XSUM_XXH3_testdata[6186] */ + { 3093, 0x9E3779B185EBCA8DULL, 0xF63D77109C6E4C3DULL }, /* XSUM_XXH3_testdata[6187] */ + { 3094, 0x0000000000000000ULL, 0x47B5D05EAF2979E3ULL }, /* XSUM_XXH3_testdata[6188] */ + { 3094, 0x9E3779B185EBCA8DULL, 0xC9B7DFA126271448ULL }, /* XSUM_XXH3_testdata[6189] */ + { 3095, 0x0000000000000000ULL, 0x29882EBDD91DC29CULL }, /* XSUM_XXH3_testdata[6190] */ + { 3095, 0x9E3779B185EBCA8DULL, 0xBBD1B325B1DDD3A7ULL }, /* XSUM_XXH3_testdata[6191] */ + { 3096, 0x0000000000000000ULL, 0xAB2D37B15F786F13ULL }, /* XSUM_XXH3_testdata[6192] */ + { 3096, 0x9E3779B185EBCA8DULL, 0x5FAED81210AF3B2AULL }, /* XSUM_XXH3_testdata[6193] */ + { 3097, 0x0000000000000000ULL, 0x5B9EE12B5CE61876ULL }, /* XSUM_XXH3_testdata[6194] */ + { 3097, 0x9E3779B185EBCA8DULL, 0xDA856D0A3246871FULL }, /* XSUM_XXH3_testdata[6195] */ + { 3098, 0x0000000000000000ULL, 0x0CA96524F2F351FDULL }, /* XSUM_XXH3_testdata[6196] */ + { 3098, 0x9E3779B185EBCA8DULL, 0x33D31C4C4C9A192AULL }, /* XSUM_XXH3_testdata[6197] */ + { 3099, 0x0000000000000000ULL, 0xBE9B42B9D7A7DE77ULL }, /* XSUM_XXH3_testdata[6198] */ + { 3099, 0x9E3779B185EBCA8DULL, 0xC69BED9367D3CA12ULL }, /* XSUM_XXH3_testdata[6199] */ + { 3100, 0x0000000000000000ULL, 0x53C9FC5F9E22A184ULL }, /* XSUM_XXH3_testdata[6200] */ + { 3100, 0x9E3779B185EBCA8DULL, 0xE8D9012FD958628AULL }, /* XSUM_XXH3_testdata[6201] */ + { 3101, 0x0000000000000000ULL, 0x5B827245B5450701ULL }, /* XSUM_XXH3_testdata[6202] */ + { 3101, 0x9E3779B185EBCA8DULL, 0xD02A3FCA9A98DA37ULL }, /* XSUM_XXH3_testdata[6203] */ + { 3102, 0x0000000000000000ULL, 0xB99D171D1373071EULL }, /* XSUM_XXH3_testdata[6204] */ + { 3102, 0x9E3779B185EBCA8DULL, 0xFAACE1AD8099B9B9ULL }, /* XSUM_XXH3_testdata[6205] */ + { 3103, 0x0000000000000000ULL, 0x0674140175B3E039ULL }, /* XSUM_XXH3_testdata[6206] */ + { 3103, 0x9E3779B185EBCA8DULL, 0xE336F90201941233ULL }, /* XSUM_XXH3_testdata[6207] */ + { 3104, 0x0000000000000000ULL, 0xADB58ED4D1193F58ULL }, /* XSUM_XXH3_testdata[6208] */ + { 3104, 0x9E3779B185EBCA8DULL, 0xB45FE8D1E3ED3A79ULL }, /* XSUM_XXH3_testdata[6209] */ + { 3105, 0x0000000000000000ULL, 0xDCEF77642A90D552ULL }, /* XSUM_XXH3_testdata[6210] */ + { 3105, 0x9E3779B185EBCA8DULL, 0x3042D8FF87B76D4FULL }, /* XSUM_XXH3_testdata[6211] */ + { 3106, 0x0000000000000000ULL, 0x8BF3C167F4FBFCAAULL }, /* XSUM_XXH3_testdata[6212] */ + { 3106, 0x9E3779B185EBCA8DULL, 0xC457533DDAB1435AULL }, /* XSUM_XXH3_testdata[6213] */ + { 3107, 0x0000000000000000ULL, 0xB198BD1563FFEDEAULL }, /* XSUM_XXH3_testdata[6214] */ + { 3107, 0x9E3779B185EBCA8DULL, 0x8C02F5DB14AC6991ULL }, /* XSUM_XXH3_testdata[6215] */ + { 3108, 0x0000000000000000ULL, 0xDE8A2527EF986A80ULL }, /* XSUM_XXH3_testdata[6216] */ + { 3108, 0x9E3779B185EBCA8DULL, 0x323C46D327FBE997ULL }, /* XSUM_XXH3_testdata[6217] */ + { 3109, 0x0000000000000000ULL, 0x3C9D70E9F3DCA228ULL }, /* XSUM_XXH3_testdata[6218] */ + { 3109, 0x9E3779B185EBCA8DULL, 0x089743EA9952136AULL }, /* XSUM_XXH3_testdata[6219] */ + { 3110, 0x0000000000000000ULL, 0x62549962E266F326ULL }, /* XSUM_XXH3_testdata[6220] */ + { 3110, 0x9E3779B185EBCA8DULL, 0xF65C7D89EBFAF3ACULL }, /* XSUM_XXH3_testdata[6221] */ + { 3111, 0x0000000000000000ULL, 0x084FF959C351B8F4ULL }, /* XSUM_XXH3_testdata[6222] */ + { 3111, 0x9E3779B185EBCA8DULL, 0x3F8F287E03EEEB3DULL }, /* XSUM_XXH3_testdata[6223] */ + { 3112, 0x0000000000000000ULL, 0x87D72D416F9C4F7FULL }, /* XSUM_XXH3_testdata[6224] */ + { 3112, 0x9E3779B185EBCA8DULL, 0x94FCCB3682E44009ULL }, /* XSUM_XXH3_testdata[6225] */ + { 3113, 0x0000000000000000ULL, 0xB9619D8F5FF431E3ULL }, /* XSUM_XXH3_testdata[6226] */ + { 3113, 0x9E3779B185EBCA8DULL, 0xDA8D99E6A4FA9AFEULL }, /* XSUM_XXH3_testdata[6227] */ + { 3114, 0x0000000000000000ULL, 0x94BD88FF1F6C585CULL }, /* XSUM_XXH3_testdata[6228] */ + { 3114, 0x9E3779B185EBCA8DULL, 0xD73515514A35F44DULL }, /* XSUM_XXH3_testdata[6229] */ + { 3115, 0x0000000000000000ULL, 0xFAF335BE4F829B6DULL }, /* XSUM_XXH3_testdata[6230] */ + { 3115, 0x9E3779B185EBCA8DULL, 0x1ED29810523AEC23ULL }, /* XSUM_XXH3_testdata[6231] */ + { 3116, 0x0000000000000000ULL, 0xC7ED0CDE7F354105ULL }, /* XSUM_XXH3_testdata[6232] */ + { 3116, 0x9E3779B185EBCA8DULL, 0x27D90923B7D9848AULL }, /* XSUM_XXH3_testdata[6233] */ + { 3117, 0x0000000000000000ULL, 0x687C760766487BDEULL }, /* XSUM_XXH3_testdata[6234] */ + { 3117, 0x9E3779B185EBCA8DULL, 0x5090AA65123EBA67ULL }, /* XSUM_XXH3_testdata[6235] */ + { 3118, 0x0000000000000000ULL, 0xC9FB98EB9A86E2A6ULL }, /* XSUM_XXH3_testdata[6236] */ + { 3118, 0x9E3779B185EBCA8DULL, 0x175C7B5E6D8DEA25ULL }, /* XSUM_XXH3_testdata[6237] */ + { 3119, 0x0000000000000000ULL, 0xDAA2C2AE0E315B6DULL }, /* XSUM_XXH3_testdata[6238] */ + { 3119, 0x9E3779B185EBCA8DULL, 0x767646AE2C2EDA92ULL }, /* XSUM_XXH3_testdata[6239] */ + { 3120, 0x0000000000000000ULL, 0xD98AFF362DB10D7AULL }, /* XSUM_XXH3_testdata[6240] */ + { 3120, 0x9E3779B185EBCA8DULL, 0xD20C4D9D22CFACC6ULL }, /* XSUM_XXH3_testdata[6241] */ + { 3121, 0x0000000000000000ULL, 0x038150265809A8B1ULL }, /* XSUM_XXH3_testdata[6242] */ + { 3121, 0x9E3779B185EBCA8DULL, 0xBD3F3EF1214251DCULL }, /* XSUM_XXH3_testdata[6243] */ + { 3122, 0x0000000000000000ULL, 0xABC349A9D25C1A31ULL }, /* XSUM_XXH3_testdata[6244] */ + { 3122, 0x9E3779B185EBCA8DULL, 0x8EC920C51176CEB9ULL }, /* XSUM_XXH3_testdata[6245] */ + { 3123, 0x0000000000000000ULL, 0xFB5A30A329BAA9E2ULL }, /* XSUM_XXH3_testdata[6246] */ + { 3123, 0x9E3779B185EBCA8DULL, 0x749AC63A986C0D4FULL }, /* XSUM_XXH3_testdata[6247] */ + { 3124, 0x0000000000000000ULL, 0x72CB4EC0BFE6F042ULL }, /* XSUM_XXH3_testdata[6248] */ + { 3124, 0x9E3779B185EBCA8DULL, 0xA31BA4F7705CCAF1ULL }, /* XSUM_XXH3_testdata[6249] */ + { 3125, 0x0000000000000000ULL, 0x6DCFB8D92E795FEBULL }, /* XSUM_XXH3_testdata[6250] */ + { 3125, 0x9E3779B185EBCA8DULL, 0x42C04093BB99C195ULL }, /* XSUM_XXH3_testdata[6251] */ + { 3126, 0x0000000000000000ULL, 0x076F4E299D242338ULL }, /* XSUM_XXH3_testdata[6252] */ + { 3126, 0x9E3779B185EBCA8DULL, 0xD2ECA180AB8CC107ULL }, /* XSUM_XXH3_testdata[6253] */ + { 3127, 0x0000000000000000ULL, 0x2781EAFBCC0DCCA7ULL }, /* XSUM_XXH3_testdata[6254] */ + { 3127, 0x9E3779B185EBCA8DULL, 0x79EABFB5CEBF8F43ULL }, /* XSUM_XXH3_testdata[6255] */ + { 3128, 0x0000000000000000ULL, 0xCE79CBB5A4B1BA89ULL }, /* XSUM_XXH3_testdata[6256] */ + { 3128, 0x9E3779B185EBCA8DULL, 0xA75D571105EF80D1ULL }, /* XSUM_XXH3_testdata[6257] */ + { 3129, 0x0000000000000000ULL, 0xC0C5D7AD380558DEULL }, /* XSUM_XXH3_testdata[6258] */ + { 3129, 0x9E3779B185EBCA8DULL, 0xEE973E882E57C4AEULL }, /* XSUM_XXH3_testdata[6259] */ + { 3130, 0x0000000000000000ULL, 0xD9104A6D1F3926F4ULL }, /* XSUM_XXH3_testdata[6260] */ + { 3130, 0x9E3779B185EBCA8DULL, 0x67826953983AD136ULL }, /* XSUM_XXH3_testdata[6261] */ + { 3131, 0x0000000000000000ULL, 0xA332A2D2C117EB73ULL }, /* XSUM_XXH3_testdata[6262] */ + { 3131, 0x9E3779B185EBCA8DULL, 0x4288C89AFCACC083ULL }, /* XSUM_XXH3_testdata[6263] */ + { 3132, 0x0000000000000000ULL, 0xC4B80ED5628A9CE9ULL }, /* XSUM_XXH3_testdata[6264] */ + { 3132, 0x9E3779B185EBCA8DULL, 0xCA2292AF916BE54FULL }, /* XSUM_XXH3_testdata[6265] */ + { 3133, 0x0000000000000000ULL, 0x98A8F8752190384EULL }, /* XSUM_XXH3_testdata[6266] */ + { 3133, 0x9E3779B185EBCA8DULL, 0xD2FF66EF4A69D81AULL }, /* XSUM_XXH3_testdata[6267] */ + { 3134, 0x0000000000000000ULL, 0xD4051CE8E22ACD38ULL }, /* XSUM_XXH3_testdata[6268] */ + { 3134, 0x9E3779B185EBCA8DULL, 0xF514098C73AD1AB5ULL }, /* XSUM_XXH3_testdata[6269] */ + { 3135, 0x0000000000000000ULL, 0x8141CD88F539D640ULL }, /* XSUM_XXH3_testdata[6270] */ + { 3135, 0x9E3779B185EBCA8DULL, 0x663037A3D108C4EDULL }, /* XSUM_XXH3_testdata[6271] */ + { 3136, 0x0000000000000000ULL, 0x5D9FB666D8DDDF57ULL }, /* XSUM_XXH3_testdata[6272] */ + { 3136, 0x9E3779B185EBCA8DULL, 0x8BC253EDE067B042ULL }, /* XSUM_XXH3_testdata[6273] */ + { 3137, 0x0000000000000000ULL, 0x8BD8A25724AE2167ULL }, /* XSUM_XXH3_testdata[6274] */ + { 3137, 0x9E3779B185EBCA8DULL, 0x67EF3573D079A8EBULL }, /* XSUM_XXH3_testdata[6275] */ + { 3138, 0x0000000000000000ULL, 0x466023E7FED1EBA0ULL }, /* XSUM_XXH3_testdata[6276] */ + { 3138, 0x9E3779B185EBCA8DULL, 0xC3E25652D609F7E1ULL }, /* XSUM_XXH3_testdata[6277] */ + { 3139, 0x0000000000000000ULL, 0xADDD3527A73D9A21ULL }, /* XSUM_XXH3_testdata[6278] */ + { 3139, 0x9E3779B185EBCA8DULL, 0x2A754AB3FDFA7279ULL }, /* XSUM_XXH3_testdata[6279] */ + { 3140, 0x0000000000000000ULL, 0xAAD5191EDC83C88BULL }, /* XSUM_XXH3_testdata[6280] */ + { 3140, 0x9E3779B185EBCA8DULL, 0x883FF7F14EB52B56ULL }, /* XSUM_XXH3_testdata[6281] */ + { 3141, 0x0000000000000000ULL, 0xA76A101D0ECB7CADULL }, /* XSUM_XXH3_testdata[6282] */ + { 3141, 0x9E3779B185EBCA8DULL, 0xF0C7C97645AFA36CULL }, /* XSUM_XXH3_testdata[6283] */ + { 3142, 0x0000000000000000ULL, 0x8EBE2C0D983672D1ULL }, /* XSUM_XXH3_testdata[6284] */ + { 3142, 0x9E3779B185EBCA8DULL, 0x7BF659361A6376B3ULL }, /* XSUM_XXH3_testdata[6285] */ + { 3143, 0x0000000000000000ULL, 0x7752767611545404ULL }, /* XSUM_XXH3_testdata[6286] */ + { 3143, 0x9E3779B185EBCA8DULL, 0x260BFD3E65208182ULL }, /* XSUM_XXH3_testdata[6287] */ + { 3144, 0x0000000000000000ULL, 0xBE7A4C7BED46B55BULL }, /* XSUM_XXH3_testdata[6288] */ + { 3144, 0x9E3779B185EBCA8DULL, 0x92131DB8BF216CD6ULL }, /* XSUM_XXH3_testdata[6289] */ + { 3145, 0x0000000000000000ULL, 0xF2500C96A26A435AULL }, /* XSUM_XXH3_testdata[6290] */ + { 3145, 0x9E3779B185EBCA8DULL, 0x42B8DE92C6B1CF90ULL }, /* XSUM_XXH3_testdata[6291] */ + { 3146, 0x0000000000000000ULL, 0x7283019679119DD4ULL }, /* XSUM_XXH3_testdata[6292] */ + { 3146, 0x9E3779B185EBCA8DULL, 0xAC866D69D4189BE0ULL }, /* XSUM_XXH3_testdata[6293] */ + { 3147, 0x0000000000000000ULL, 0xEE62C8434C674EFDULL }, /* XSUM_XXH3_testdata[6294] */ + { 3147, 0x9E3779B185EBCA8DULL, 0xB8B22ADA709264B6ULL }, /* XSUM_XXH3_testdata[6295] */ + { 3148, 0x0000000000000000ULL, 0x7D74E58E0BEFDB70ULL }, /* XSUM_XXH3_testdata[6296] */ + { 3148, 0x9E3779B185EBCA8DULL, 0xF77695F5F393512DULL }, /* XSUM_XXH3_testdata[6297] */ + { 3149, 0x0000000000000000ULL, 0x1FDDD0BAD4CE88C9ULL }, /* XSUM_XXH3_testdata[6298] */ + { 3149, 0x9E3779B185EBCA8DULL, 0xB3EFE44467B32FEAULL }, /* XSUM_XXH3_testdata[6299] */ + { 3150, 0x0000000000000000ULL, 0x38D6BCB4926F185CULL }, /* XSUM_XXH3_testdata[6300] */ + { 3150, 0x9E3779B185EBCA8DULL, 0x0FC39459D2521D4EULL }, /* XSUM_XXH3_testdata[6301] */ + { 3151, 0x0000000000000000ULL, 0x855665D5F6FA8D52ULL }, /* XSUM_XXH3_testdata[6302] */ + { 3151, 0x9E3779B185EBCA8DULL, 0x2EA467EEF6193680ULL }, /* XSUM_XXH3_testdata[6303] */ + { 3152, 0x0000000000000000ULL, 0xB1C8419925DC1A9AULL }, /* XSUM_XXH3_testdata[6304] */ + { 3152, 0x9E3779B185EBCA8DULL, 0xE8946ACD5185D7FBULL }, /* XSUM_XXH3_testdata[6305] */ + { 3153, 0x0000000000000000ULL, 0xBC151DA81698FCFEULL }, /* XSUM_XXH3_testdata[6306] */ + { 3153, 0x9E3779B185EBCA8DULL, 0xAC962934E496454EULL }, /* XSUM_XXH3_testdata[6307] */ + { 3154, 0x0000000000000000ULL, 0x4DEDCFFA68D5467EULL }, /* XSUM_XXH3_testdata[6308] */ + { 3154, 0x9E3779B185EBCA8DULL, 0x8A019BF926F56AFCULL }, /* XSUM_XXH3_testdata[6309] */ + { 3155, 0x0000000000000000ULL, 0xC5F668C2918366E7ULL }, /* XSUM_XXH3_testdata[6310] */ + { 3155, 0x9E3779B185EBCA8DULL, 0x45D2A4EB35321947ULL }, /* XSUM_XXH3_testdata[6311] */ + { 3156, 0x0000000000000000ULL, 0x67D816DEAC08D438ULL }, /* XSUM_XXH3_testdata[6312] */ + { 3156, 0x9E3779B185EBCA8DULL, 0x79739B9941637BC9ULL }, /* XSUM_XXH3_testdata[6313] */ + { 3157, 0x0000000000000000ULL, 0x32DC83E1F0CC21EDULL }, /* XSUM_XXH3_testdata[6314] */ + { 3157, 0x9E3779B185EBCA8DULL, 0x7B527F237756C38DULL }, /* XSUM_XXH3_testdata[6315] */ + { 3158, 0x0000000000000000ULL, 0x06D81FE3725F1B9CULL }, /* XSUM_XXH3_testdata[6316] */ + { 3158, 0x9E3779B185EBCA8DULL, 0x0C08026E67295C55ULL }, /* XSUM_XXH3_testdata[6317] */ + { 3159, 0x0000000000000000ULL, 0xDB8FA3B1AFB7ECBAULL }, /* XSUM_XXH3_testdata[6318] */ + { 3159, 0x9E3779B185EBCA8DULL, 0x79EDA5CF3C973FDAULL }, /* XSUM_XXH3_testdata[6319] */ + { 3160, 0x0000000000000000ULL, 0x5BBDE357F603F527ULL }, /* XSUM_XXH3_testdata[6320] */ + { 3160, 0x9E3779B185EBCA8DULL, 0xB1A42426012B539AULL }, /* XSUM_XXH3_testdata[6321] */ + { 3161, 0x0000000000000000ULL, 0xF8DCBC45A4C0C21EULL }, /* XSUM_XXH3_testdata[6322] */ + { 3161, 0x9E3779B185EBCA8DULL, 0xDD6271CEEC1093A2ULL }, /* XSUM_XXH3_testdata[6323] */ + { 3162, 0x0000000000000000ULL, 0x80FFBDF5A887CF78ULL }, /* XSUM_XXH3_testdata[6324] */ + { 3162, 0x9E3779B185EBCA8DULL, 0x33A277578F7C70A7ULL }, /* XSUM_XXH3_testdata[6325] */ + { 3163, 0x0000000000000000ULL, 0x7CB788B0AAD0217BULL }, /* XSUM_XXH3_testdata[6326] */ + { 3163, 0x9E3779B185EBCA8DULL, 0xC227D2FF3DF3C920ULL }, /* XSUM_XXH3_testdata[6327] */ + { 3164, 0x0000000000000000ULL, 0xAF2B32B04A995872ULL }, /* XSUM_XXH3_testdata[6328] */ + { 3164, 0x9E3779B185EBCA8DULL, 0x7EE4CCD02886B51BULL }, /* XSUM_XXH3_testdata[6329] */ + { 3165, 0x0000000000000000ULL, 0xCA116C1D32F16850ULL }, /* XSUM_XXH3_testdata[6330] */ + { 3165, 0x9E3779B185EBCA8DULL, 0x40DFBFE05CD60823ULL }, /* XSUM_XXH3_testdata[6331] */ + { 3166, 0x0000000000000000ULL, 0x721C1AF6E46B140BULL }, /* XSUM_XXH3_testdata[6332] */ + { 3166, 0x9E3779B185EBCA8DULL, 0xB57F8B4F4981F8A8ULL }, /* XSUM_XXH3_testdata[6333] */ + { 3167, 0x0000000000000000ULL, 0xDD4A21EB8827AFA9ULL }, /* XSUM_XXH3_testdata[6334] */ + { 3167, 0x9E3779B185EBCA8DULL, 0xAC727DD105324DCFULL }, /* XSUM_XXH3_testdata[6335] */ + { 3168, 0x0000000000000000ULL, 0xC5D7E262E4384AB3ULL }, /* XSUM_XXH3_testdata[6336] */ + { 3168, 0x9E3779B185EBCA8DULL, 0xEEB067CADF77011EULL }, /* XSUM_XXH3_testdata[6337] */ + { 3169, 0x0000000000000000ULL, 0x9218F4A889AA03D8ULL }, /* XSUM_XXH3_testdata[6338] */ + { 3169, 0x9E3779B185EBCA8DULL, 0xCBEC7F6BBC8A85EBULL }, /* XSUM_XXH3_testdata[6339] */ + { 3170, 0x0000000000000000ULL, 0xDE01D8F5378D481BULL }, /* XSUM_XXH3_testdata[6340] */ + { 3170, 0x9E3779B185EBCA8DULL, 0xA8D425444A3E7BF5ULL }, /* XSUM_XXH3_testdata[6341] */ + { 3171, 0x0000000000000000ULL, 0xBB4477B4F1092CAEULL }, /* XSUM_XXH3_testdata[6342] */ + { 3171, 0x9E3779B185EBCA8DULL, 0xAF9138F57295DF4EULL }, /* XSUM_XXH3_testdata[6343] */ + { 3172, 0x0000000000000000ULL, 0xCEF365E0B1653DD0ULL }, /* XSUM_XXH3_testdata[6344] */ + { 3172, 0x9E3779B185EBCA8DULL, 0xF59389E7F8293C0BULL }, /* XSUM_XXH3_testdata[6345] */ + { 3173, 0x0000000000000000ULL, 0xFA644D72D95371EBULL }, /* XSUM_XXH3_testdata[6346] */ + { 3173, 0x9E3779B185EBCA8DULL, 0xC00024B7481AD55FULL }, /* XSUM_XXH3_testdata[6347] */ + { 3174, 0x0000000000000000ULL, 0x1938F58C6870DDE4ULL }, /* XSUM_XXH3_testdata[6348] */ + { 3174, 0x9E3779B185EBCA8DULL, 0x2AEF53C26297B485ULL }, /* XSUM_XXH3_testdata[6349] */ + { 3175, 0x0000000000000000ULL, 0xA5B4D3ADA8247BE3ULL }, /* XSUM_XXH3_testdata[6350] */ + { 3175, 0x9E3779B185EBCA8DULL, 0x69E247AC862672B7ULL }, /* XSUM_XXH3_testdata[6351] */ + { 3176, 0x0000000000000000ULL, 0x6E0961238AD61E51ULL }, /* XSUM_XXH3_testdata[6352] */ + { 3176, 0x9E3779B185EBCA8DULL, 0xCD569004C2B170DFULL }, /* XSUM_XXH3_testdata[6353] */ + { 3177, 0x0000000000000000ULL, 0xCF91B2CA001D8F69ULL }, /* XSUM_XXH3_testdata[6354] */ + { 3177, 0x9E3779B185EBCA8DULL, 0xB14BCA810E177D60ULL }, /* XSUM_XXH3_testdata[6355] */ + { 3178, 0x0000000000000000ULL, 0x6E888E518A0F027FULL }, /* XSUM_XXH3_testdata[6356] */ + { 3178, 0x9E3779B185EBCA8DULL, 0x79DA0978BE221017ULL }, /* XSUM_XXH3_testdata[6357] */ + { 3179, 0x0000000000000000ULL, 0x99E992B164F58E57ULL }, /* XSUM_XXH3_testdata[6358] */ + { 3179, 0x9E3779B185EBCA8DULL, 0xA990AB564E78F30DULL }, /* XSUM_XXH3_testdata[6359] */ + { 3180, 0x0000000000000000ULL, 0xA7B031E2ABB1D9B9ULL }, /* XSUM_XXH3_testdata[6360] */ + { 3180, 0x9E3779B185EBCA8DULL, 0xA4E61E865A7D5D3BULL }, /* XSUM_XXH3_testdata[6361] */ + { 3181, 0x0000000000000000ULL, 0xB23CE7F2568B5811ULL }, /* XSUM_XXH3_testdata[6362] */ + { 3181, 0x9E3779B185EBCA8DULL, 0x6B4F89A3C4EB7CE1ULL }, /* XSUM_XXH3_testdata[6363] */ + { 3182, 0x0000000000000000ULL, 0x4EB82133191B1BB9ULL }, /* XSUM_XXH3_testdata[6364] */ + { 3182, 0x9E3779B185EBCA8DULL, 0x34799BCBAE6F22EBULL }, /* XSUM_XXH3_testdata[6365] */ + { 3183, 0x0000000000000000ULL, 0xEF646324A5097522ULL }, /* XSUM_XXH3_testdata[6366] */ + { 3183, 0x9E3779B185EBCA8DULL, 0x84B2C177605C0E14ULL }, /* XSUM_XXH3_testdata[6367] */ + { 3184, 0x0000000000000000ULL, 0x61F2380BEC36708BULL }, /* XSUM_XXH3_testdata[6368] */ + { 3184, 0x9E3779B185EBCA8DULL, 0x6B395E53284250DDULL }, /* XSUM_XXH3_testdata[6369] */ + { 3185, 0x0000000000000000ULL, 0x7B672597E5745924ULL }, /* XSUM_XXH3_testdata[6370] */ + { 3185, 0x9E3779B185EBCA8DULL, 0x1B3B332DB85C89C6ULL }, /* XSUM_XXH3_testdata[6371] */ + { 3186, 0x0000000000000000ULL, 0x57588E8652F646B3ULL }, /* XSUM_XXH3_testdata[6372] */ + { 3186, 0x9E3779B185EBCA8DULL, 0x25B922125C9144C8ULL }, /* XSUM_XXH3_testdata[6373] */ + { 3187, 0x0000000000000000ULL, 0xDF2FC9037E06173FULL }, /* XSUM_XXH3_testdata[6374] */ + { 3187, 0x9E3779B185EBCA8DULL, 0x64138127DEC583E4ULL }, /* XSUM_XXH3_testdata[6375] */ + { 3188, 0x0000000000000000ULL, 0xCD4A4AFCD0540A03ULL }, /* XSUM_XXH3_testdata[6376] */ + { 3188, 0x9E3779B185EBCA8DULL, 0x766D05399B680371ULL }, /* XSUM_XXH3_testdata[6377] */ + { 3189, 0x0000000000000000ULL, 0xE38C2538DFDFC867ULL }, /* XSUM_XXH3_testdata[6378] */ + { 3189, 0x9E3779B185EBCA8DULL, 0xA51F716204993CE6ULL }, /* XSUM_XXH3_testdata[6379] */ + { 3190, 0x0000000000000000ULL, 0x7B96AC539F64EC20ULL }, /* XSUM_XXH3_testdata[6380] */ + { 3190, 0x9E3779B185EBCA8DULL, 0x171E356F3E050A39ULL }, /* XSUM_XXH3_testdata[6381] */ + { 3191, 0x0000000000000000ULL, 0xBD29C98EFB036850ULL }, /* XSUM_XXH3_testdata[6382] */ + { 3191, 0x9E3779B185EBCA8DULL, 0xAA1DC8EA46F5581BULL }, /* XSUM_XXH3_testdata[6383] */ + { 3192, 0x0000000000000000ULL, 0x2CF893DB51A28DE4ULL }, /* XSUM_XXH3_testdata[6384] */ + { 3192, 0x9E3779B185EBCA8DULL, 0xC47F8B7D70654B75ULL }, /* XSUM_XXH3_testdata[6385] */ + { 3193, 0x0000000000000000ULL, 0x5333861320F7224CULL }, /* XSUM_XXH3_testdata[6386] */ + { 3193, 0x9E3779B185EBCA8DULL, 0x8805977B05B510F7ULL }, /* XSUM_XXH3_testdata[6387] */ + { 3194, 0x0000000000000000ULL, 0x71572463208AC824ULL }, /* XSUM_XXH3_testdata[6388] */ + { 3194, 0x9E3779B185EBCA8DULL, 0xD738493B17010BE8ULL }, /* XSUM_XXH3_testdata[6389] */ + { 3195, 0x0000000000000000ULL, 0xBB1F7B7CBDD9DE66ULL }, /* XSUM_XXH3_testdata[6390] */ + { 3195, 0x9E3779B185EBCA8DULL, 0x63407B9EED2586E7ULL }, /* XSUM_XXH3_testdata[6391] */ + { 3196, 0x0000000000000000ULL, 0xE3C8FE53CA50AC3BULL }, /* XSUM_XXH3_testdata[6392] */ + { 3196, 0x9E3779B185EBCA8DULL, 0x7360FE7337E97DFAULL }, /* XSUM_XXH3_testdata[6393] */ + { 3197, 0x0000000000000000ULL, 0x958B951AA7D6A602ULL }, /* XSUM_XXH3_testdata[6394] */ + { 3197, 0x9E3779B185EBCA8DULL, 0x8D45E049E572DAC7ULL }, /* XSUM_XXH3_testdata[6395] */ + { 3198, 0x0000000000000000ULL, 0xF721684AD49AD334ULL }, /* XSUM_XXH3_testdata[6396] */ + { 3198, 0x9E3779B185EBCA8DULL, 0xB09F86AB41D114A5ULL }, /* XSUM_XXH3_testdata[6397] */ + { 3199, 0x0000000000000000ULL, 0x10937A9EA8245551ULL }, /* XSUM_XXH3_testdata[6398] */ + { 3199, 0x9E3779B185EBCA8DULL, 0x374C2BE03FF66B93ULL }, /* XSUM_XXH3_testdata[6399] */ + { 3200, 0x0000000000000000ULL, 0xE4F44142422C90AEULL }, /* XSUM_XXH3_testdata[6400] */ + { 3200, 0x9E3779B185EBCA8DULL, 0x87B4AA4EBCE160EAULL }, /* XSUM_XXH3_testdata[6401] */ + { 3201, 0x0000000000000000ULL, 0x41CCAA0B3010027FULL }, /* XSUM_XXH3_testdata[6402] */ + { 3201, 0x9E3779B185EBCA8DULL, 0x4D03036AAD73E5DEULL }, /* XSUM_XXH3_testdata[6403] */ + { 3202, 0x0000000000000000ULL, 0x8D3755C9954B5747ULL }, /* XSUM_XXH3_testdata[6404] */ + { 3202, 0x9E3779B185EBCA8DULL, 0x0CA71FD194BDE3A7ULL }, /* XSUM_XXH3_testdata[6405] */ + { 3203, 0x0000000000000000ULL, 0x6666F844EBCE1C79ULL }, /* XSUM_XXH3_testdata[6406] */ + { 3203, 0x9E3779B185EBCA8DULL, 0xD480ECFD26CE75A3ULL }, /* XSUM_XXH3_testdata[6407] */ + { 3204, 0x0000000000000000ULL, 0x4D0200F714A6AD28ULL }, /* XSUM_XXH3_testdata[6408] */ + { 3204, 0x9E3779B185EBCA8DULL, 0xA107631C511D1C36ULL }, /* XSUM_XXH3_testdata[6409] */ + { 3205, 0x0000000000000000ULL, 0x794974AC9022F826ULL }, /* XSUM_XXH3_testdata[6410] */ + { 3205, 0x9E3779B185EBCA8DULL, 0x1F908D5F57F7A269ULL }, /* XSUM_XXH3_testdata[6411] */ + { 3206, 0x0000000000000000ULL, 0x9C40FCD5E16690FBULL }, /* XSUM_XXH3_testdata[6412] */ + { 3206, 0x9E3779B185EBCA8DULL, 0xC6F7CCD7ACCDB0CFULL }, /* XSUM_XXH3_testdata[6413] */ + { 3207, 0x0000000000000000ULL, 0xDE08B46FADEB1AB9ULL }, /* XSUM_XXH3_testdata[6414] */ + { 3207, 0x9E3779B185EBCA8DULL, 0x514CF2CF2CBC93D1ULL }, /* XSUM_XXH3_testdata[6415] */ + { 3208, 0x0000000000000000ULL, 0x8A7438A43529C222ULL }, /* XSUM_XXH3_testdata[6416] */ + { 3208, 0x9E3779B185EBCA8DULL, 0x1A227D3389B55505ULL }, /* XSUM_XXH3_testdata[6417] */ + { 3209, 0x0000000000000000ULL, 0x50DD979D54711E20ULL }, /* XSUM_XXH3_testdata[6418] */ + { 3209, 0x9E3779B185EBCA8DULL, 0xBB983FBA9B8D6000ULL }, /* XSUM_XXH3_testdata[6419] */ + { 3210, 0x0000000000000000ULL, 0x327FD7CC0801A0E2ULL }, /* XSUM_XXH3_testdata[6420] */ + { 3210, 0x9E3779B185EBCA8DULL, 0xDC5196C9020C217CULL }, /* XSUM_XXH3_testdata[6421] */ + { 3211, 0x0000000000000000ULL, 0x39E068DB5A6B02DBULL }, /* XSUM_XXH3_testdata[6422] */ + { 3211, 0x9E3779B185EBCA8DULL, 0x75D4E560E34F1106ULL }, /* XSUM_XXH3_testdata[6423] */ + { 3212, 0x0000000000000000ULL, 0x29A0143EDE45AEE1ULL }, /* XSUM_XXH3_testdata[6424] */ + { 3212, 0x9E3779B185EBCA8DULL, 0xAF25DF4AAFEDF21AULL }, /* XSUM_XXH3_testdata[6425] */ + { 3213, 0x0000000000000000ULL, 0x6343015E343C3D4FULL }, /* XSUM_XXH3_testdata[6426] */ + { 3213, 0x9E3779B185EBCA8DULL, 0xB9664745FCAE35F9ULL }, /* XSUM_XXH3_testdata[6427] */ + { 3214, 0x0000000000000000ULL, 0xE3463CBC2B13D590ULL }, /* XSUM_XXH3_testdata[6428] */ + { 3214, 0x9E3779B185EBCA8DULL, 0xBFAE251499EA61C6ULL }, /* XSUM_XXH3_testdata[6429] */ + { 3215, 0x0000000000000000ULL, 0xDA53BAC60D4D22FBULL }, /* XSUM_XXH3_testdata[6430] */ + { 3215, 0x9E3779B185EBCA8DULL, 0xC330B390CBBB2745ULL }, /* XSUM_XXH3_testdata[6431] */ + { 3216, 0x0000000000000000ULL, 0x33733C1897345AFEULL }, /* XSUM_XXH3_testdata[6432] */ + { 3216, 0x9E3779B185EBCA8DULL, 0x8CC5892CC7A8149CULL }, /* XSUM_XXH3_testdata[6433] */ + { 3217, 0x0000000000000000ULL, 0x1BCB0445A3CB7848ULL }, /* XSUM_XXH3_testdata[6434] */ + { 3217, 0x9E3779B185EBCA8DULL, 0xB605E36385A53084ULL }, /* XSUM_XXH3_testdata[6435] */ + { 3218, 0x0000000000000000ULL, 0xCB1AC0AA280D7940ULL }, /* XSUM_XXH3_testdata[6436] */ + { 3218, 0x9E3779B185EBCA8DULL, 0x48A71403DDA6AA2AULL }, /* XSUM_XXH3_testdata[6437] */ + { 3219, 0x0000000000000000ULL, 0x198618AAF11FD491ULL }, /* XSUM_XXH3_testdata[6438] */ + { 3219, 0x9E3779B185EBCA8DULL, 0x3DE97BF2A3C67501ULL }, /* XSUM_XXH3_testdata[6439] */ + { 3220, 0x0000000000000000ULL, 0xF3FF97A90BAAB6D2ULL }, /* XSUM_XXH3_testdata[6440] */ + { 3220, 0x9E3779B185EBCA8DULL, 0xF99AC95EC5B45504ULL }, /* XSUM_XXH3_testdata[6441] */ + { 3221, 0x0000000000000000ULL, 0x1C7A0A7A246C04EAULL }, /* XSUM_XXH3_testdata[6442] */ + { 3221, 0x9E3779B185EBCA8DULL, 0xE76310623B1F8C4BULL }, /* XSUM_XXH3_testdata[6443] */ + { 3222, 0x0000000000000000ULL, 0xA988BA83C7D83F50ULL }, /* XSUM_XXH3_testdata[6444] */ + { 3222, 0x9E3779B185EBCA8DULL, 0x9439184E103217FDULL }, /* XSUM_XXH3_testdata[6445] */ + { 3223, 0x0000000000000000ULL, 0x8F522D070E6B88CEULL }, /* XSUM_XXH3_testdata[6446] */ + { 3223, 0x9E3779B185EBCA8DULL, 0xEA27D437295C59CEULL }, /* XSUM_XXH3_testdata[6447] */ + { 3224, 0x0000000000000000ULL, 0xD02006011364318CULL }, /* XSUM_XXH3_testdata[6448] */ + { 3224, 0x9E3779B185EBCA8DULL, 0xA62255EA71CE8F03ULL }, /* XSUM_XXH3_testdata[6449] */ + { 3225, 0x0000000000000000ULL, 0xA0950D4312443264ULL }, /* XSUM_XXH3_testdata[6450] */ + { 3225, 0x9E3779B185EBCA8DULL, 0xA388B1738E4DCE26ULL }, /* XSUM_XXH3_testdata[6451] */ + { 3226, 0x0000000000000000ULL, 0x924AAF6E6E149E4BULL }, /* XSUM_XXH3_testdata[6452] */ + { 3226, 0x9E3779B185EBCA8DULL, 0x3E205BEF5C51CBE5ULL }, /* XSUM_XXH3_testdata[6453] */ + { 3227, 0x0000000000000000ULL, 0x7B79F55D2FCBCC2CULL }, /* XSUM_XXH3_testdata[6454] */ + { 3227, 0x9E3779B185EBCA8DULL, 0xC967B942DE4F6B41ULL }, /* XSUM_XXH3_testdata[6455] */ + { 3228, 0x0000000000000000ULL, 0x55A51FAB12C21F43ULL }, /* XSUM_XXH3_testdata[6456] */ + { 3228, 0x9E3779B185EBCA8DULL, 0xA555BDC2254BB1A2ULL }, /* XSUM_XXH3_testdata[6457] */ + { 3229, 0x0000000000000000ULL, 0x297D5667C2932EA7ULL }, /* XSUM_XXH3_testdata[6458] */ + { 3229, 0x9E3779B185EBCA8DULL, 0x2E419470FD93628EULL }, /* XSUM_XXH3_testdata[6459] */ + { 3230, 0x0000000000000000ULL, 0x348E764CE266D3A4ULL }, /* XSUM_XXH3_testdata[6460] */ + { 3230, 0x9E3779B185EBCA8DULL, 0xBC4D6463962C0C16ULL }, /* XSUM_XXH3_testdata[6461] */ + { 3231, 0x0000000000000000ULL, 0xF7DEAE36D4A13F7BULL }, /* XSUM_XXH3_testdata[6462] */ + { 3231, 0x9E3779B185EBCA8DULL, 0x3AEF51CFBFBCFC23ULL }, /* XSUM_XXH3_testdata[6463] */ + { 3232, 0x0000000000000000ULL, 0xAB1DA87080C2C0C9ULL }, /* XSUM_XXH3_testdata[6464] */ + { 3232, 0x9E3779B185EBCA8DULL, 0x7888A6FC9DC02F45ULL }, /* XSUM_XXH3_testdata[6465] */ + { 3233, 0x0000000000000000ULL, 0x28F2070C54DDE886ULL }, /* XSUM_XXH3_testdata[6466] */ + { 3233, 0x9E3779B185EBCA8DULL, 0x518A60E025B9C80EULL }, /* XSUM_XXH3_testdata[6467] */ + { 3234, 0x0000000000000000ULL, 0x5E1FA7815D4E3ADAULL }, /* XSUM_XXH3_testdata[6468] */ + { 3234, 0x9E3779B185EBCA8DULL, 0x3FE12BF0DB2C4466ULL }, /* XSUM_XXH3_testdata[6469] */ + { 3235, 0x0000000000000000ULL, 0x5981A86021DC4747ULL }, /* XSUM_XXH3_testdata[6470] */ + { 3235, 0x9E3779B185EBCA8DULL, 0xE5E102BCAF8AE325ULL }, /* XSUM_XXH3_testdata[6471] */ + { 3236, 0x0000000000000000ULL, 0xE859E6D7B3DBEDC1ULL }, /* XSUM_XXH3_testdata[6472] */ + { 3236, 0x9E3779B185EBCA8DULL, 0x0AA3AF2339430811ULL }, /* XSUM_XXH3_testdata[6473] */ + { 3237, 0x0000000000000000ULL, 0x8BF0287F66CF1B7DULL }, /* XSUM_XXH3_testdata[6474] */ + { 3237, 0x9E3779B185EBCA8DULL, 0x2759B8065D0F6FAAULL }, /* XSUM_XXH3_testdata[6475] */ + { 3238, 0x0000000000000000ULL, 0xF41F7674BB560D40ULL }, /* XSUM_XXH3_testdata[6476] */ + { 3238, 0x9E3779B185EBCA8DULL, 0x1B20B5D920F3298CULL }, /* XSUM_XXH3_testdata[6477] */ + { 3239, 0x0000000000000000ULL, 0xD3704CEE911EFC0DULL }, /* XSUM_XXH3_testdata[6478] */ + { 3239, 0x9E3779B185EBCA8DULL, 0xEB835F6123188D7CULL }, /* XSUM_XXH3_testdata[6479] */ + { 3240, 0x0000000000000000ULL, 0x57AF8FC2E141FE9FULL }, /* XSUM_XXH3_testdata[6480] */ + { 3240, 0x9E3779B185EBCA8DULL, 0xF461FF724877E97FULL }, /* XSUM_XXH3_testdata[6481] */ + { 3241, 0x0000000000000000ULL, 0x2FF3C47F857C7F56ULL }, /* XSUM_XXH3_testdata[6482] */ + { 3241, 0x9E3779B185EBCA8DULL, 0x3394AA51E8E71D51ULL }, /* XSUM_XXH3_testdata[6483] */ + { 3242, 0x0000000000000000ULL, 0xCD86E6710567AB9DULL }, /* XSUM_XXH3_testdata[6484] */ + { 3242, 0x9E3779B185EBCA8DULL, 0x7AFCEB3D05B3F086ULL }, /* XSUM_XXH3_testdata[6485] */ + { 3243, 0x0000000000000000ULL, 0x3ECD3DFB69A5A02FULL }, /* XSUM_XXH3_testdata[6486] */ + { 3243, 0x9E3779B185EBCA8DULL, 0x11A366BFBA1B1FF6ULL }, /* XSUM_XXH3_testdata[6487] */ + { 3244, 0x0000000000000000ULL, 0xC1836275539BBF33ULL }, /* XSUM_XXH3_testdata[6488] */ + { 3244, 0x9E3779B185EBCA8DULL, 0x0913E9453F9040C3ULL }, /* XSUM_XXH3_testdata[6489] */ + { 3245, 0x0000000000000000ULL, 0x7883530DE619F0BBULL }, /* XSUM_XXH3_testdata[6490] */ + { 3245, 0x9E3779B185EBCA8DULL, 0xA8168205780B81D7ULL }, /* XSUM_XXH3_testdata[6491] */ + { 3246, 0x0000000000000000ULL, 0x961D9ABC9110663CULL }, /* XSUM_XXH3_testdata[6492] */ + { 3246, 0x9E3779B185EBCA8DULL, 0xC8044D5074ECEEA6ULL }, /* XSUM_XXH3_testdata[6493] */ + { 3247, 0x0000000000000000ULL, 0xF1A4528F93427127ULL }, /* XSUM_XXH3_testdata[6494] */ + { 3247, 0x9E3779B185EBCA8DULL, 0x595C2D7A7E8CC7D3ULL }, /* XSUM_XXH3_testdata[6495] */ + { 3248, 0x0000000000000000ULL, 0x48B294E4222613AEULL }, /* XSUM_XXH3_testdata[6496] */ + { 3248, 0x9E3779B185EBCA8DULL, 0x1C85BEBE8EC3E10AULL }, /* XSUM_XXH3_testdata[6497] */ + { 3249, 0x0000000000000000ULL, 0x0B9195B0554CB009ULL }, /* XSUM_XXH3_testdata[6498] */ + { 3249, 0x9E3779B185EBCA8DULL, 0xFB5E602F3FF2A4FAULL }, /* XSUM_XXH3_testdata[6499] */ + { 3250, 0x0000000000000000ULL, 0x2BF68FE7F6AFE161ULL }, /* XSUM_XXH3_testdata[6500] */ + { 3250, 0x9E3779B185EBCA8DULL, 0x6F697117A9DD8EF4ULL }, /* XSUM_XXH3_testdata[6501] */ + { 3251, 0x0000000000000000ULL, 0x9D8C951C965C65D9ULL }, /* XSUM_XXH3_testdata[6502] */ + { 3251, 0x9E3779B185EBCA8DULL, 0x25FC40DFE962BA9BULL }, /* XSUM_XXH3_testdata[6503] */ + { 3252, 0x0000000000000000ULL, 0x636813F1D275647DULL }, /* XSUM_XXH3_testdata[6504] */ + { 3252, 0x9E3779B185EBCA8DULL, 0xC16AC4E59B00949AULL }, /* XSUM_XXH3_testdata[6505] */ + { 3253, 0x0000000000000000ULL, 0x79168EB9963AE95DULL }, /* XSUM_XXH3_testdata[6506] */ + { 3253, 0x9E3779B185EBCA8DULL, 0x2B86B765967A725CULL }, /* XSUM_XXH3_testdata[6507] */ + { 3254, 0x0000000000000000ULL, 0x4418D7EDCCA192CEULL }, /* XSUM_XXH3_testdata[6508] */ + { 3254, 0x9E3779B185EBCA8DULL, 0xEADE7CC58ACD41E4ULL }, /* XSUM_XXH3_testdata[6509] */ + { 3255, 0x0000000000000000ULL, 0xA440E3AD2D93FAB4ULL }, /* XSUM_XXH3_testdata[6510] */ + { 3255, 0x9E3779B185EBCA8DULL, 0x16AFC580F8754A16ULL }, /* XSUM_XXH3_testdata[6511] */ + { 3256, 0x0000000000000000ULL, 0x6EE7EF3CBF414EC5ULL }, /* XSUM_XXH3_testdata[6512] */ + { 3256, 0x9E3779B185EBCA8DULL, 0x78D2D7BEC6CBE2A8ULL }, /* XSUM_XXH3_testdata[6513] */ + { 3257, 0x0000000000000000ULL, 0xED2C0FE9F32BB2A8ULL }, /* XSUM_XXH3_testdata[6514] */ + { 3257, 0x9E3779B185EBCA8DULL, 0x1FFC8441658EA638ULL }, /* XSUM_XXH3_testdata[6515] */ + { 3258, 0x0000000000000000ULL, 0x7B47DC76E070E20FULL }, /* XSUM_XXH3_testdata[6516] */ + { 3258, 0x9E3779B185EBCA8DULL, 0x746E32A296FC4368ULL }, /* XSUM_XXH3_testdata[6517] */ + { 3259, 0x0000000000000000ULL, 0x91BA511409D2A7FAULL }, /* XSUM_XXH3_testdata[6518] */ + { 3259, 0x9E3779B185EBCA8DULL, 0xE82A453ED103E49FULL }, /* XSUM_XXH3_testdata[6519] */ + { 3260, 0x0000000000000000ULL, 0x8B401BB0AE7FE563ULL }, /* XSUM_XXH3_testdata[6520] */ + { 3260, 0x9E3779B185EBCA8DULL, 0x2BD046201CE8C118ULL }, /* XSUM_XXH3_testdata[6521] */ + { 3261, 0x0000000000000000ULL, 0x566A5A0C036794E6ULL }, /* XSUM_XXH3_testdata[6522] */ + { 3261, 0x9E3779B185EBCA8DULL, 0x17B908EC0C3CE7BBULL }, /* XSUM_XXH3_testdata[6523] */ + { 3262, 0x0000000000000000ULL, 0x1C013FA650289828ULL }, /* XSUM_XXH3_testdata[6524] */ + { 3262, 0x9E3779B185EBCA8DULL, 0xD70F5E0594269646ULL }, /* XSUM_XXH3_testdata[6525] */ + { 3263, 0x0000000000000000ULL, 0x5646399424235FFBULL }, /* XSUM_XXH3_testdata[6526] */ + { 3263, 0x9E3779B185EBCA8DULL, 0x742383EE12CED5F1ULL }, /* XSUM_XXH3_testdata[6527] */ + { 3264, 0x0000000000000000ULL, 0x9B8739702F078EAEULL }, /* XSUM_XXH3_testdata[6528] */ + { 3264, 0x9E3779B185EBCA8DULL, 0x184E648FBA928D2CULL }, /* XSUM_XXH3_testdata[6529] */ + { 3265, 0x0000000000000000ULL, 0x0EC956D8FE806B22ULL }, /* XSUM_XXH3_testdata[6530] */ + { 3265, 0x9E3779B185EBCA8DULL, 0x3CAAE786AAFE1AF7ULL }, /* XSUM_XXH3_testdata[6531] */ + { 3266, 0x0000000000000000ULL, 0x0A06674EBA2293F8ULL }, /* XSUM_XXH3_testdata[6532] */ + { 3266, 0x9E3779B185EBCA8DULL, 0xBE2884F3D07394B1ULL }, /* XSUM_XXH3_testdata[6533] */ + { 3267, 0x0000000000000000ULL, 0x2F6DFF8AD0994EADULL }, /* XSUM_XXH3_testdata[6534] */ + { 3267, 0x9E3779B185EBCA8DULL, 0x6C4D1AB2AFA02DEAULL }, /* XSUM_XXH3_testdata[6535] */ + { 3268, 0x0000000000000000ULL, 0x0D3D26B243410F6CULL }, /* XSUM_XXH3_testdata[6536] */ + { 3268, 0x9E3779B185EBCA8DULL, 0x57C056432DD87495ULL }, /* XSUM_XXH3_testdata[6537] */ + { 3269, 0x0000000000000000ULL, 0x237DD207AFF853D8ULL }, /* XSUM_XXH3_testdata[6538] */ + { 3269, 0x9E3779B185EBCA8DULL, 0xE8AFB4AA2B702614ULL }, /* XSUM_XXH3_testdata[6539] */ + { 3270, 0x0000000000000000ULL, 0x3F49BF7883FED811ULL }, /* XSUM_XXH3_testdata[6540] */ + { 3270, 0x9E3779B185EBCA8DULL, 0x1C05DE58EC169FD6ULL }, /* XSUM_XXH3_testdata[6541] */ + { 3271, 0x0000000000000000ULL, 0xC48D63F39B62F523ULL }, /* XSUM_XXH3_testdata[6542] */ + { 3271, 0x9E3779B185EBCA8DULL, 0x7CEE441E3B41E236ULL }, /* XSUM_XXH3_testdata[6543] */ + { 3272, 0x0000000000000000ULL, 0xE585B402C5B27728ULL }, /* XSUM_XXH3_testdata[6544] */ + { 3272, 0x9E3779B185EBCA8DULL, 0x75335CFF84A6D040ULL }, /* XSUM_XXH3_testdata[6545] */ + { 3273, 0x0000000000000000ULL, 0x17408941AA9636EDULL }, /* XSUM_XXH3_testdata[6546] */ + { 3273, 0x9E3779B185EBCA8DULL, 0xB34CAA8293B0E8D8ULL }, /* XSUM_XXH3_testdata[6547] */ + { 3274, 0x0000000000000000ULL, 0x4C1BFB3D06B5B19DULL }, /* XSUM_XXH3_testdata[6548] */ + { 3274, 0x9E3779B185EBCA8DULL, 0x402C85067D5CFD99ULL }, /* XSUM_XXH3_testdata[6549] */ + { 3275, 0x0000000000000000ULL, 0x7D07873053C9F239ULL }, /* XSUM_XXH3_testdata[6550] */ + { 3275, 0x9E3779B185EBCA8DULL, 0xFE7CD26D019C5854ULL }, /* XSUM_XXH3_testdata[6551] */ + { 3276, 0x0000000000000000ULL, 0x3AE4B482DAE90651ULL }, /* XSUM_XXH3_testdata[6552] */ + { 3276, 0x9E3779B185EBCA8DULL, 0xD0773C5CD881FD75ULL }, /* XSUM_XXH3_testdata[6553] */ + { 3277, 0x0000000000000000ULL, 0xB158E4DF2C1A8793ULL }, /* XSUM_XXH3_testdata[6554] */ + { 3277, 0x9E3779B185EBCA8DULL, 0x685E3DC975295240ULL }, /* XSUM_XXH3_testdata[6555] */ + { 3278, 0x0000000000000000ULL, 0x6A46EA0EF200F7CEULL }, /* XSUM_XXH3_testdata[6556] */ + { 3278, 0x9E3779B185EBCA8DULL, 0x1A43B1238C6B6508ULL }, /* XSUM_XXH3_testdata[6557] */ + { 3279, 0x0000000000000000ULL, 0xE43A423E305A8565ULL }, /* XSUM_XXH3_testdata[6558] */ + { 3279, 0x9E3779B185EBCA8DULL, 0x8686418BF152D4DCULL }, /* XSUM_XXH3_testdata[6559] */ + { 3280, 0x0000000000000000ULL, 0x290CA8866A12AFFEULL }, /* XSUM_XXH3_testdata[6560] */ + { 3280, 0x9E3779B185EBCA8DULL, 0x6ACBB86F60374CF8ULL }, /* XSUM_XXH3_testdata[6561] */ + { 3281, 0x0000000000000000ULL, 0x8DBD8B41922B5078ULL }, /* XSUM_XXH3_testdata[6562] */ + { 3281, 0x9E3779B185EBCA8DULL, 0xFF09DEC6A3C20841ULL }, /* XSUM_XXH3_testdata[6563] */ + { 3282, 0x0000000000000000ULL, 0xEE787FB6216E6011ULL }, /* XSUM_XXH3_testdata[6564] */ + { 3282, 0x9E3779B185EBCA8DULL, 0x98E9EE8F5070942CULL }, /* XSUM_XXH3_testdata[6565] */ + { 3283, 0x0000000000000000ULL, 0x953C27BDFDECF124ULL }, /* XSUM_XXH3_testdata[6566] */ + { 3283, 0x9E3779B185EBCA8DULL, 0x10AC6D3D9DC372B2ULL }, /* XSUM_XXH3_testdata[6567] */ + { 3284, 0x0000000000000000ULL, 0xE4234E6A0823E382ULL }, /* XSUM_XXH3_testdata[6568] */ + { 3284, 0x9E3779B185EBCA8DULL, 0x8BA7CE4934FEB2E1ULL }, /* XSUM_XXH3_testdata[6569] */ + { 3285, 0x0000000000000000ULL, 0x5C403AC86FC535BCULL }, /* XSUM_XXH3_testdata[6570] */ + { 3285, 0x9E3779B185EBCA8DULL, 0x154C0CFAA9CCFD75ULL }, /* XSUM_XXH3_testdata[6571] */ + { 3286, 0x0000000000000000ULL, 0xA429912EB2E28218ULL }, /* XSUM_XXH3_testdata[6572] */ + { 3286, 0x9E3779B185EBCA8DULL, 0x72C6B7BD2A454604ULL }, /* XSUM_XXH3_testdata[6573] */ + { 3287, 0x0000000000000000ULL, 0x9C06DC9435498F37ULL }, /* XSUM_XXH3_testdata[6574] */ + { 3287, 0x9E3779B185EBCA8DULL, 0xC725960C2DE40EB7ULL }, /* XSUM_XXH3_testdata[6575] */ + { 3288, 0x0000000000000000ULL, 0xFDC4819EF73EED40ULL }, /* XSUM_XXH3_testdata[6576] */ + { 3288, 0x9E3779B185EBCA8DULL, 0x08F29DF35BB2DAE7ULL }, /* XSUM_XXH3_testdata[6577] */ + { 3289, 0x0000000000000000ULL, 0xD5055BB66A0D37BBULL }, /* XSUM_XXH3_testdata[6578] */ + { 3289, 0x9E3779B185EBCA8DULL, 0x19D5799BECE479F4ULL }, /* XSUM_XXH3_testdata[6579] */ + { 3290, 0x0000000000000000ULL, 0x07382BB2BF607897ULL }, /* XSUM_XXH3_testdata[6580] */ + { 3290, 0x9E3779B185EBCA8DULL, 0x0256F5995038CD26ULL }, /* XSUM_XXH3_testdata[6581] */ + { 3291, 0x0000000000000000ULL, 0x22A55154436863B3ULL }, /* XSUM_XXH3_testdata[6582] */ + { 3291, 0x9E3779B185EBCA8DULL, 0x404FE5667BAD1D13ULL }, /* XSUM_XXH3_testdata[6583] */ + { 3292, 0x0000000000000000ULL, 0x8C92B6C0DBCE279EULL }, /* XSUM_XXH3_testdata[6584] */ + { 3292, 0x9E3779B185EBCA8DULL, 0x2783832554DCF35FULL }, /* XSUM_XXH3_testdata[6585] */ + { 3293, 0x0000000000000000ULL, 0x116C41EB4A23AC65ULL }, /* XSUM_XXH3_testdata[6586] */ + { 3293, 0x9E3779B185EBCA8DULL, 0xD1F55F5515EA8C61ULL }, /* XSUM_XXH3_testdata[6587] */ + { 3294, 0x0000000000000000ULL, 0xAC933622B1150321ULL }, /* XSUM_XXH3_testdata[6588] */ + { 3294, 0x9E3779B185EBCA8DULL, 0xEFAEFE35789602DBULL }, /* XSUM_XXH3_testdata[6589] */ + { 3295, 0x0000000000000000ULL, 0xBA6BB073CCE8DA46ULL }, /* XSUM_XXH3_testdata[6590] */ + { 3295, 0x9E3779B185EBCA8DULL, 0xE2AD5B19AA401D1DULL }, /* XSUM_XXH3_testdata[6591] */ + { 3296, 0x0000000000000000ULL, 0x3E897823507028D7ULL }, /* XSUM_XXH3_testdata[6592] */ + { 3296, 0x9E3779B185EBCA8DULL, 0x6A143760E53496E1ULL }, /* XSUM_XXH3_testdata[6593] */ + { 3297, 0x0000000000000000ULL, 0x09D42D669748D197ULL }, /* XSUM_XXH3_testdata[6594] */ + { 3297, 0x9E3779B185EBCA8DULL, 0x20C2A979B1E7F622ULL }, /* XSUM_XXH3_testdata[6595] */ + { 3298, 0x0000000000000000ULL, 0x68089737D023D610ULL }, /* XSUM_XXH3_testdata[6596] */ + { 3298, 0x9E3779B185EBCA8DULL, 0x2FB5B00F9E1212C5ULL }, /* XSUM_XXH3_testdata[6597] */ + { 3299, 0x0000000000000000ULL, 0x8726F55958B56B92ULL }, /* XSUM_XXH3_testdata[6598] */ + { 3299, 0x9E3779B185EBCA8DULL, 0x558F3C38C9C7CBA8ULL }, /* XSUM_XXH3_testdata[6599] */ + { 3300, 0x0000000000000000ULL, 0xFAB28032690FEE15ULL }, /* XSUM_XXH3_testdata[6600] */ + { 3300, 0x9E3779B185EBCA8DULL, 0xCBF7403183AFC3BCULL }, /* XSUM_XXH3_testdata[6601] */ + { 3301, 0x0000000000000000ULL, 0x4F06D3E08E04F544ULL }, /* XSUM_XXH3_testdata[6602] */ + { 3301, 0x9E3779B185EBCA8DULL, 0xE5A8DCF9100C42D7ULL }, /* XSUM_XXH3_testdata[6603] */ + { 3302, 0x0000000000000000ULL, 0x2F332C59D43FED19ULL }, /* XSUM_XXH3_testdata[6604] */ + { 3302, 0x9E3779B185EBCA8DULL, 0x3A810A8B75CD3F70ULL }, /* XSUM_XXH3_testdata[6605] */ + { 3303, 0x0000000000000000ULL, 0x830F21FF5337560EULL }, /* XSUM_XXH3_testdata[6606] */ + { 3303, 0x9E3779B185EBCA8DULL, 0x45F7FBFBEE62E831ULL }, /* XSUM_XXH3_testdata[6607] */ + { 3304, 0x0000000000000000ULL, 0xAB744FA69344997EULL }, /* XSUM_XXH3_testdata[6608] */ + { 3304, 0x9E3779B185EBCA8DULL, 0xEC87E96EB9AA48BAULL }, /* XSUM_XXH3_testdata[6609] */ + { 3305, 0x0000000000000000ULL, 0xD1FEAFB0C097B189ULL }, /* XSUM_XXH3_testdata[6610] */ + { 3305, 0x9E3779B185EBCA8DULL, 0xC55659615D737704ULL }, /* XSUM_XXH3_testdata[6611] */ + { 3306, 0x0000000000000000ULL, 0x85D7E7704DDA2F90ULL }, /* XSUM_XXH3_testdata[6612] */ + { 3306, 0x9E3779B185EBCA8DULL, 0x9CFF0E41C30D3959ULL }, /* XSUM_XXH3_testdata[6613] */ + { 3307, 0x0000000000000000ULL, 0xD4904AEFED3EDC1AULL }, /* XSUM_XXH3_testdata[6614] */ + { 3307, 0x9E3779B185EBCA8DULL, 0xC7A984C32605B8ABULL }, /* XSUM_XXH3_testdata[6615] */ + { 3308, 0x0000000000000000ULL, 0x78AB5906A8635550ULL }, /* XSUM_XXH3_testdata[6616] */ + { 3308, 0x9E3779B185EBCA8DULL, 0x279FD3B95866FCF0ULL }, /* XSUM_XXH3_testdata[6617] */ + { 3309, 0x0000000000000000ULL, 0x43F13CAD6A0C80EFULL }, /* XSUM_XXH3_testdata[6618] */ + { 3309, 0x9E3779B185EBCA8DULL, 0x843065019A02EBE3ULL }, /* XSUM_XXH3_testdata[6619] */ + { 3310, 0x0000000000000000ULL, 0xBC07FC109DF9428EULL }, /* XSUM_XXH3_testdata[6620] */ + { 3310, 0x9E3779B185EBCA8DULL, 0xC52F7E06B2709FE6ULL }, /* XSUM_XXH3_testdata[6621] */ + { 3311, 0x0000000000000000ULL, 0x2EED7825B3318277ULL }, /* XSUM_XXH3_testdata[6622] */ + { 3311, 0x9E3779B185EBCA8DULL, 0xD4684FBB86410DC5ULL }, /* XSUM_XXH3_testdata[6623] */ + { 3312, 0x0000000000000000ULL, 0x17AC8E090B8B0E1BULL }, /* XSUM_XXH3_testdata[6624] */ + { 3312, 0x9E3779B185EBCA8DULL, 0xC42086CDDDEA61BCULL }, /* XSUM_XXH3_testdata[6625] */ + { 3313, 0x0000000000000000ULL, 0x23F5784BBF9B1DF1ULL }, /* XSUM_XXH3_testdata[6626] */ + { 3313, 0x9E3779B185EBCA8DULL, 0x3DA59CE11B907414ULL }, /* XSUM_XXH3_testdata[6627] */ + { 3314, 0x0000000000000000ULL, 0x9695900D67CCD95EULL }, /* XSUM_XXH3_testdata[6628] */ + { 3314, 0x9E3779B185EBCA8DULL, 0x1014606F1DD648A1ULL }, /* XSUM_XXH3_testdata[6629] */ + { 3315, 0x0000000000000000ULL, 0x0C1C74544502BB15ULL }, /* XSUM_XXH3_testdata[6630] */ + { 3315, 0x9E3779B185EBCA8DULL, 0x0583BE7443333A4DULL }, /* XSUM_XXH3_testdata[6631] */ + { 3316, 0x0000000000000000ULL, 0x278D8FE0095296E4ULL }, /* XSUM_XXH3_testdata[6632] */ + { 3316, 0x9E3779B185EBCA8DULL, 0xB1A0354E681F6578ULL }, /* XSUM_XXH3_testdata[6633] */ + { 3317, 0x0000000000000000ULL, 0x02C89CFEDF3EC26DULL }, /* XSUM_XXH3_testdata[6634] */ + { 3317, 0x9E3779B185EBCA8DULL, 0x9BFB13E995951D98ULL }, /* XSUM_XXH3_testdata[6635] */ + { 3318, 0x0000000000000000ULL, 0xDC2FAA0D4B80D12BULL }, /* XSUM_XXH3_testdata[6636] */ + { 3318, 0x9E3779B185EBCA8DULL, 0xCCD4BFFE0B66ECC7ULL }, /* XSUM_XXH3_testdata[6637] */ + { 3319, 0x0000000000000000ULL, 0xFCCD4EB901FE69BEULL }, /* XSUM_XXH3_testdata[6638] */ + { 3319, 0x9E3779B185EBCA8DULL, 0x1FFD3A5E3CB95033ULL }, /* XSUM_XXH3_testdata[6639] */ + { 3320, 0x0000000000000000ULL, 0x0CAD253666032FD6ULL }, /* XSUM_XXH3_testdata[6640] */ + { 3320, 0x9E3779B185EBCA8DULL, 0xDBAD1A09D40AFD8EULL }, /* XSUM_XXH3_testdata[6641] */ + { 3321, 0x0000000000000000ULL, 0xE97362BD28AADE28ULL }, /* XSUM_XXH3_testdata[6642] */ + { 3321, 0x9E3779B185EBCA8DULL, 0x6A1A5A4876C9ED06ULL }, /* XSUM_XXH3_testdata[6643] */ + { 3322, 0x0000000000000000ULL, 0xE582F38E9D03E630ULL }, /* XSUM_XXH3_testdata[6644] */ + { 3322, 0x9E3779B185EBCA8DULL, 0x9B1951C099D93D9BULL }, /* XSUM_XXH3_testdata[6645] */ + { 3323, 0x0000000000000000ULL, 0x9BABE22F9703E396ULL }, /* XSUM_XXH3_testdata[6646] */ + { 3323, 0x9E3779B185EBCA8DULL, 0x7266AE275DEB3628ULL }, /* XSUM_XXH3_testdata[6647] */ + { 3324, 0x0000000000000000ULL, 0x5CD985B664FBDBAFULL }, /* XSUM_XXH3_testdata[6648] */ + { 3324, 0x9E3779B185EBCA8DULL, 0x40DEA3B6DA6AF66DULL }, /* XSUM_XXH3_testdata[6649] */ + { 3325, 0x0000000000000000ULL, 0xB5F91FFDCF207925ULL }, /* XSUM_XXH3_testdata[6650] */ + { 3325, 0x9E3779B185EBCA8DULL, 0xD4343DD1B8076D6EULL }, /* XSUM_XXH3_testdata[6651] */ + { 3326, 0x0000000000000000ULL, 0x01ADD999619CBD9FULL }, /* XSUM_XXH3_testdata[6652] */ + { 3326, 0x9E3779B185EBCA8DULL, 0x2C5A15142FEC2FD8ULL }, /* XSUM_XXH3_testdata[6653] */ + { 3327, 0x0000000000000000ULL, 0x08011836C094CA6BULL }, /* XSUM_XXH3_testdata[6654] */ + { 3327, 0x9E3779B185EBCA8DULL, 0xA5CAE26D8B91D68DULL }, /* XSUM_XXH3_testdata[6655] */ + { 3328, 0x0000000000000000ULL, 0xBA4A5091A9EEEBB5ULL }, /* XSUM_XXH3_testdata[6656] */ + { 3328, 0x9E3779B185EBCA8DULL, 0xB13BEA7A298FB067ULL }, /* XSUM_XXH3_testdata[6657] */ + { 3329, 0x0000000000000000ULL, 0x50D1FDCB976BE957ULL }, /* XSUM_XXH3_testdata[6658] */ + { 3329, 0x9E3779B185EBCA8DULL, 0x7559494E41899903ULL }, /* XSUM_XXH3_testdata[6659] */ + { 3330, 0x0000000000000000ULL, 0x75107DA44865BEB5ULL }, /* XSUM_XXH3_testdata[6660] */ + { 3330, 0x9E3779B185EBCA8DULL, 0x5AAE1D66586FFDA2ULL }, /* XSUM_XXH3_testdata[6661] */ + { 3331, 0x0000000000000000ULL, 0xAF58DBE70F0E263DULL }, /* XSUM_XXH3_testdata[6662] */ + { 3331, 0x9E3779B185EBCA8DULL, 0x14692C98F9DAD48EULL }, /* XSUM_XXH3_testdata[6663] */ + { 3332, 0x0000000000000000ULL, 0x6F617384900EEF25ULL }, /* XSUM_XXH3_testdata[6664] */ + { 3332, 0x9E3779B185EBCA8DULL, 0x58B58C579F7E6D00ULL }, /* XSUM_XXH3_testdata[6665] */ + { 3333, 0x0000000000000000ULL, 0x60C4155E452F5F87ULL }, /* XSUM_XXH3_testdata[6666] */ + { 3333, 0x9E3779B185EBCA8DULL, 0xC96A96E04A3E849AULL }, /* XSUM_XXH3_testdata[6667] */ + { 3334, 0x0000000000000000ULL, 0xBCAF54AB908B193DULL }, /* XSUM_XXH3_testdata[6668] */ + { 3334, 0x9E3779B185EBCA8DULL, 0x54260454C2736A73ULL }, /* XSUM_XXH3_testdata[6669] */ + { 3335, 0x0000000000000000ULL, 0xBBF027A0ADD25BBFULL }, /* XSUM_XXH3_testdata[6670] */ + { 3335, 0x9E3779B185EBCA8DULL, 0x26E4D35633D2C8FDULL }, /* XSUM_XXH3_testdata[6671] */ + { 3336, 0x0000000000000000ULL, 0xBB0ADB598F22AE91ULL }, /* XSUM_XXH3_testdata[6672] */ + { 3336, 0x9E3779B185EBCA8DULL, 0xD90552E320AB9A00ULL }, /* XSUM_XXH3_testdata[6673] */ + { 3337, 0x0000000000000000ULL, 0x02CFCE1529C38652ULL }, /* XSUM_XXH3_testdata[6674] */ + { 3337, 0x9E3779B185EBCA8DULL, 0xCD6BA1C7A54511C5ULL }, /* XSUM_XXH3_testdata[6675] */ + { 3338, 0x0000000000000000ULL, 0x13E3324E216C09F9ULL }, /* XSUM_XXH3_testdata[6676] */ + { 3338, 0x9E3779B185EBCA8DULL, 0x312386F8BCB31407ULL }, /* XSUM_XXH3_testdata[6677] */ + { 3339, 0x0000000000000000ULL, 0x29DA89CAA19A37FAULL }, /* XSUM_XXH3_testdata[6678] */ + { 3339, 0x9E3779B185EBCA8DULL, 0x9485DED18A88C4AEULL }, /* XSUM_XXH3_testdata[6679] */ + { 3340, 0x0000000000000000ULL, 0xA389A6247E5CB6F7ULL }, /* XSUM_XXH3_testdata[6680] */ + { 3340, 0x9E3779B185EBCA8DULL, 0xEBF9E42F004427E0ULL }, /* XSUM_XXH3_testdata[6681] */ + { 3341, 0x0000000000000000ULL, 0xD07406613E1B3E9CULL }, /* XSUM_XXH3_testdata[6682] */ + { 3341, 0x9E3779B185EBCA8DULL, 0x872729C833153C1DULL }, /* XSUM_XXH3_testdata[6683] */ + { 3342, 0x0000000000000000ULL, 0xC07FDF2155D4E7B6ULL }, /* XSUM_XXH3_testdata[6684] */ + { 3342, 0x9E3779B185EBCA8DULL, 0x30679A03126AD5FDULL }, /* XSUM_XXH3_testdata[6685] */ + { 3343, 0x0000000000000000ULL, 0x836CD924F0E9680CULL }, /* XSUM_XXH3_testdata[6686] */ + { 3343, 0x9E3779B185EBCA8DULL, 0x776D5AAD3298CD2BULL }, /* XSUM_XXH3_testdata[6687] */ + { 3344, 0x0000000000000000ULL, 0xC3956381E842E2DEULL }, /* XSUM_XXH3_testdata[6688] */ + { 3344, 0x9E3779B185EBCA8DULL, 0x86C94661FF3B2BB8ULL }, /* XSUM_XXH3_testdata[6689] */ + { 3345, 0x0000000000000000ULL, 0xB10484FA074AE206ULL }, /* XSUM_XXH3_testdata[6690] */ + { 3345, 0x9E3779B185EBCA8DULL, 0x1C726988BBC91D6DULL }, /* XSUM_XXH3_testdata[6691] */ + { 3346, 0x0000000000000000ULL, 0x3B608660818671B3ULL }, /* XSUM_XXH3_testdata[6692] */ + { 3346, 0x9E3779B185EBCA8DULL, 0xF5CCFA1B960AF066ULL }, /* XSUM_XXH3_testdata[6693] */ + { 3347, 0x0000000000000000ULL, 0x95FFFB7642F9E1EFULL }, /* XSUM_XXH3_testdata[6694] */ + { 3347, 0x9E3779B185EBCA8DULL, 0xFE131ED5AD63D1B7ULL }, /* XSUM_XXH3_testdata[6695] */ + { 3348, 0x0000000000000000ULL, 0x7869A6A32C26E54AULL }, /* XSUM_XXH3_testdata[6696] */ + { 3348, 0x9E3779B185EBCA8DULL, 0x1E9C1E7CA1E6D5C1ULL }, /* XSUM_XXH3_testdata[6697] */ + { 3349, 0x0000000000000000ULL, 0x51BDFE289C4066A9ULL }, /* XSUM_XXH3_testdata[6698] */ + { 3349, 0x9E3779B185EBCA8DULL, 0xB7BE52394DE63E0EULL }, /* XSUM_XXH3_testdata[6699] */ + { 3350, 0x0000000000000000ULL, 0xAA01801391E98925ULL }, /* XSUM_XXH3_testdata[6700] */ + { 3350, 0x9E3779B185EBCA8DULL, 0x2E2A6D6E3F43CDB0ULL }, /* XSUM_XXH3_testdata[6701] */ + { 3351, 0x0000000000000000ULL, 0xCF2A402353A99FE1ULL }, /* XSUM_XXH3_testdata[6702] */ + { 3351, 0x9E3779B185EBCA8DULL, 0xAD52CCD11E3555DEULL }, /* XSUM_XXH3_testdata[6703] */ + { 3352, 0x0000000000000000ULL, 0xB01D33C38F36DC5CULL }, /* XSUM_XXH3_testdata[6704] */ + { 3352, 0x9E3779B185EBCA8DULL, 0x9E3FFE25B3EB2075ULL }, /* XSUM_XXH3_testdata[6705] */ + { 3353, 0x0000000000000000ULL, 0x3FB85D3FFD9E06E8ULL }, /* XSUM_XXH3_testdata[6706] */ + { 3353, 0x9E3779B185EBCA8DULL, 0xF27DEE2A8D630D4FULL }, /* XSUM_XXH3_testdata[6707] */ + { 3354, 0x0000000000000000ULL, 0xC37FF70659119746ULL }, /* XSUM_XXH3_testdata[6708] */ + { 3354, 0x9E3779B185EBCA8DULL, 0xEAF15F8417A1811FULL }, /* XSUM_XXH3_testdata[6709] */ + { 3355, 0x0000000000000000ULL, 0xC5973EAD1F297A47ULL }, /* XSUM_XXH3_testdata[6710] */ + { 3355, 0x9E3779B185EBCA8DULL, 0x054A37E362E960FFULL }, /* XSUM_XXH3_testdata[6711] */ + { 3356, 0x0000000000000000ULL, 0x45132AD6742E601BULL }, /* XSUM_XXH3_testdata[6712] */ + { 3356, 0x9E3779B185EBCA8DULL, 0xFF64C5779A13E1A8ULL }, /* XSUM_XXH3_testdata[6713] */ + { 3357, 0x0000000000000000ULL, 0x4AD4D09228AE74EBULL }, /* XSUM_XXH3_testdata[6714] */ + { 3357, 0x9E3779B185EBCA8DULL, 0xAB3C130407D8E34CULL }, /* XSUM_XXH3_testdata[6715] */ + { 3358, 0x0000000000000000ULL, 0xBDE7F52D428B5626ULL }, /* XSUM_XXH3_testdata[6716] */ + { 3358, 0x9E3779B185EBCA8DULL, 0x7FF63CE94956ABB8ULL }, /* XSUM_XXH3_testdata[6717] */ + { 3359, 0x0000000000000000ULL, 0xFE2565182D1952EAULL }, /* XSUM_XXH3_testdata[6718] */ + { 3359, 0x9E3779B185EBCA8DULL, 0x40A726019BC38DB4ULL }, /* XSUM_XXH3_testdata[6719] */ + { 3360, 0x0000000000000000ULL, 0x4649D4969584C272ULL }, /* XSUM_XXH3_testdata[6720] */ + { 3360, 0x9E3779B185EBCA8DULL, 0x29A9207541EEA68BULL }, /* XSUM_XXH3_testdata[6721] */ + { 3361, 0x0000000000000000ULL, 0xD01EA1AB2CDC3528ULL }, /* XSUM_XXH3_testdata[6722] */ + { 3361, 0x9E3779B185EBCA8DULL, 0xD92BA5B55FD6F780ULL }, /* XSUM_XXH3_testdata[6723] */ + { 3362, 0x0000000000000000ULL, 0x070B61EF22A12393ULL }, /* XSUM_XXH3_testdata[6724] */ + { 3362, 0x9E3779B185EBCA8DULL, 0xAB53607E21F191A9ULL }, /* XSUM_XXH3_testdata[6725] */ + { 3363, 0x0000000000000000ULL, 0x4AE0136971A34E18ULL }, /* XSUM_XXH3_testdata[6726] */ + { 3363, 0x9E3779B185EBCA8DULL, 0x004526D172BEC24BULL }, /* XSUM_XXH3_testdata[6727] */ + { 3364, 0x0000000000000000ULL, 0x42A56637D7F0FA18ULL }, /* XSUM_XXH3_testdata[6728] */ + { 3364, 0x9E3779B185EBCA8DULL, 0xA7C3097CF412264DULL }, /* XSUM_XXH3_testdata[6729] */ + { 3365, 0x0000000000000000ULL, 0x21FE144D6968D4F2ULL }, /* XSUM_XXH3_testdata[6730] */ + { 3365, 0x9E3779B185EBCA8DULL, 0xC4D1BE69C49EF35BULL }, /* XSUM_XXH3_testdata[6731] */ + { 3366, 0x0000000000000000ULL, 0x12D77C635653B2B8ULL }, /* XSUM_XXH3_testdata[6732] */ + { 3366, 0x9E3779B185EBCA8DULL, 0xB73F37C743862437ULL }, /* XSUM_XXH3_testdata[6733] */ + { 3367, 0x0000000000000000ULL, 0x0752F2C4C8A25C1AULL }, /* XSUM_XXH3_testdata[6734] */ + { 3367, 0x9E3779B185EBCA8DULL, 0xC983E99166B19B17ULL }, /* XSUM_XXH3_testdata[6735] */ + { 3368, 0x0000000000000000ULL, 0x15AA8640193B2254ULL }, /* XSUM_XXH3_testdata[6736] */ + { 3368, 0x9E3779B185EBCA8DULL, 0x53D54D74763AD4B2ULL }, /* XSUM_XXH3_testdata[6737] */ + { 3369, 0x0000000000000000ULL, 0x3A2B1F7886668CC8ULL }, /* XSUM_XXH3_testdata[6738] */ + { 3369, 0x9E3779B185EBCA8DULL, 0x5B0B2B5F227D1228ULL }, /* XSUM_XXH3_testdata[6739] */ + { 3370, 0x0000000000000000ULL, 0x256280630F5EAFF2ULL }, /* XSUM_XXH3_testdata[6740] */ + { 3370, 0x9E3779B185EBCA8DULL, 0xFD87C26C8883F638ULL }, /* XSUM_XXH3_testdata[6741] */ + { 3371, 0x0000000000000000ULL, 0x8BC58F317FFE3E5AULL }, /* XSUM_XXH3_testdata[6742] */ + { 3371, 0x9E3779B185EBCA8DULL, 0x724319694EDADAB3ULL }, /* XSUM_XXH3_testdata[6743] */ + { 3372, 0x0000000000000000ULL, 0xB15A5B5D991811AFULL }, /* XSUM_XXH3_testdata[6744] */ + { 3372, 0x9E3779B185EBCA8DULL, 0x11A111EE2A25D794ULL }, /* XSUM_XXH3_testdata[6745] */ + { 3373, 0x0000000000000000ULL, 0xA07DF89EACE870B5ULL }, /* XSUM_XXH3_testdata[6746] */ + { 3373, 0x9E3779B185EBCA8DULL, 0x575E9182CEFD992FULL }, /* XSUM_XXH3_testdata[6747] */ + { 3374, 0x0000000000000000ULL, 0xF14876CD4E593F54ULL }, /* XSUM_XXH3_testdata[6748] */ + { 3374, 0x9E3779B185EBCA8DULL, 0xD8E781A0A6F6D906ULL }, /* XSUM_XXH3_testdata[6749] */ + { 3375, 0x0000000000000000ULL, 0x7566CE50C709787DULL }, /* XSUM_XXH3_testdata[6750] */ + { 3375, 0x9E3779B185EBCA8DULL, 0xD41FF1B992AA75F9ULL }, /* XSUM_XXH3_testdata[6751] */ + { 3376, 0x0000000000000000ULL, 0xD6BC865A0060E024ULL }, /* XSUM_XXH3_testdata[6752] */ + { 3376, 0x9E3779B185EBCA8DULL, 0x6DBC027EE86B52F1ULL }, /* XSUM_XXH3_testdata[6753] */ + { 3377, 0x0000000000000000ULL, 0x8852757DEF3F3AC7ULL }, /* XSUM_XXH3_testdata[6754] */ + { 3377, 0x9E3779B185EBCA8DULL, 0x7CD92F439E03EBBBULL }, /* XSUM_XXH3_testdata[6755] */ + { 3378, 0x0000000000000000ULL, 0x3CF6812DD0D09CB1ULL }, /* XSUM_XXH3_testdata[6756] */ + { 3378, 0x9E3779B185EBCA8DULL, 0x626B10E13E9647AEULL }, /* XSUM_XXH3_testdata[6757] */ + { 3379, 0x0000000000000000ULL, 0x5698A6D102F8C1F4ULL }, /* XSUM_XXH3_testdata[6758] */ + { 3379, 0x9E3779B185EBCA8DULL, 0xA6E18A45A57807B6ULL }, /* XSUM_XXH3_testdata[6759] */ + { 3380, 0x0000000000000000ULL, 0x96795C27D904C9CAULL }, /* XSUM_XXH3_testdata[6760] */ + { 3380, 0x9E3779B185EBCA8DULL, 0x600BDE3FC41E808CULL }, /* XSUM_XXH3_testdata[6761] */ + { 3381, 0x0000000000000000ULL, 0xF5EA6A3869DB8865ULL }, /* XSUM_XXH3_testdata[6762] */ + { 3381, 0x9E3779B185EBCA8DULL, 0xF3386B856B7BF6B9ULL }, /* XSUM_XXH3_testdata[6763] */ + { 3382, 0x0000000000000000ULL, 0x3E356A6CB2C2273CULL }, /* XSUM_XXH3_testdata[6764] */ + { 3382, 0x9E3779B185EBCA8DULL, 0x938ED73AA86A3EA6ULL }, /* XSUM_XXH3_testdata[6765] */ + { 3383, 0x0000000000000000ULL, 0x02A498021F3FE5DAULL }, /* XSUM_XXH3_testdata[6766] */ + { 3383, 0x9E3779B185EBCA8DULL, 0x167408B658D97687ULL }, /* XSUM_XXH3_testdata[6767] */ + { 3384, 0x0000000000000000ULL, 0x6F58654097A2362CULL }, /* XSUM_XXH3_testdata[6768] */ + { 3384, 0x9E3779B185EBCA8DULL, 0xEAE046A15ECAF386ULL }, /* XSUM_XXH3_testdata[6769] */ + { 3385, 0x0000000000000000ULL, 0x5ABE011F58851AC1ULL }, /* XSUM_XXH3_testdata[6770] */ + { 3385, 0x9E3779B185EBCA8DULL, 0xA242766363ECFFD1ULL }, /* XSUM_XXH3_testdata[6771] */ + { 3386, 0x0000000000000000ULL, 0x7D6FB06860923912ULL }, /* XSUM_XXH3_testdata[6772] */ + { 3386, 0x9E3779B185EBCA8DULL, 0x721052AEF679D3ACULL }, /* XSUM_XXH3_testdata[6773] */ + { 3387, 0x0000000000000000ULL, 0xA76665E0C3EF9A9BULL }, /* XSUM_XXH3_testdata[6774] */ + { 3387, 0x9E3779B185EBCA8DULL, 0xF895B633A5B18B63ULL }, /* XSUM_XXH3_testdata[6775] */ + { 3388, 0x0000000000000000ULL, 0x75DA9626A90ADA95ULL }, /* XSUM_XXH3_testdata[6776] */ + { 3388, 0x9E3779B185EBCA8DULL, 0x51D970EBFE6D9BD2ULL }, /* XSUM_XXH3_testdata[6777] */ + { 3389, 0x0000000000000000ULL, 0x387890C21988999AULL }, /* XSUM_XXH3_testdata[6778] */ + { 3389, 0x9E3779B185EBCA8DULL, 0xFA3EB1B97303FB7DULL }, /* XSUM_XXH3_testdata[6779] */ + { 3390, 0x0000000000000000ULL, 0xCC3B112F2C79A3A7ULL }, /* XSUM_XXH3_testdata[6780] */ + { 3390, 0x9E3779B185EBCA8DULL, 0x472523F5CFCC6459ULL }, /* XSUM_XXH3_testdata[6781] */ + { 3391, 0x0000000000000000ULL, 0x56FD48AD2C3F7AE2ULL }, /* XSUM_XXH3_testdata[6782] */ + { 3391, 0x9E3779B185EBCA8DULL, 0x1954BEE13911BEF0ULL }, /* XSUM_XXH3_testdata[6783] */ + { 3392, 0x0000000000000000ULL, 0x069C8A3CBB355320ULL }, /* XSUM_XXH3_testdata[6784] */ + { 3392, 0x9E3779B185EBCA8DULL, 0x992366365E422669ULL }, /* XSUM_XXH3_testdata[6785] */ + { 3393, 0x0000000000000000ULL, 0x2D6D9564C994E53CULL }, /* XSUM_XXH3_testdata[6786] */ + { 3393, 0x9E3779B185EBCA8DULL, 0x061C4F86D60A20AFULL }, /* XSUM_XXH3_testdata[6787] */ + { 3394, 0x0000000000000000ULL, 0xB0B37ECBEEA4EB83ULL }, /* XSUM_XXH3_testdata[6788] */ + { 3394, 0x9E3779B185EBCA8DULL, 0xEDC67A98C8453C98ULL }, /* XSUM_XXH3_testdata[6789] */ + { 3395, 0x0000000000000000ULL, 0x150198DF293C0A4BULL }, /* XSUM_XXH3_testdata[6790] */ + { 3395, 0x9E3779B185EBCA8DULL, 0x6077B479F4DBB10DULL }, /* XSUM_XXH3_testdata[6791] */ + { 3396, 0x0000000000000000ULL, 0x5DA9C28DBDE35D4AULL }, /* XSUM_XXH3_testdata[6792] */ + { 3396, 0x9E3779B185EBCA8DULL, 0x792D8912B6067280ULL }, /* XSUM_XXH3_testdata[6793] */ + { 3397, 0x0000000000000000ULL, 0x42819BD28C9C8BBBULL }, /* XSUM_XXH3_testdata[6794] */ + { 3397, 0x9E3779B185EBCA8DULL, 0x987B8D15969B50CCULL }, /* XSUM_XXH3_testdata[6795] */ + { 3398, 0x0000000000000000ULL, 0x230D4F0FB1F52D75ULL }, /* XSUM_XXH3_testdata[6796] */ + { 3398, 0x9E3779B185EBCA8DULL, 0x8FD85DD189EF36AFULL }, /* XSUM_XXH3_testdata[6797] */ + { 3399, 0x0000000000000000ULL, 0x556F3F29D18C0072ULL }, /* XSUM_XXH3_testdata[6798] */ + { 3399, 0x9E3779B185EBCA8DULL, 0xFC79DD9F134BDE40ULL }, /* XSUM_XXH3_testdata[6799] */ + { 3400, 0x0000000000000000ULL, 0x8667E4F6A9AE7D71ULL }, /* XSUM_XXH3_testdata[6800] */ + { 3400, 0x9E3779B185EBCA8DULL, 0x442B3EA2542D3EC1ULL }, /* XSUM_XXH3_testdata[6801] */ + { 3401, 0x0000000000000000ULL, 0xA45C652DA3612B31ULL }, /* XSUM_XXH3_testdata[6802] */ + { 3401, 0x9E3779B185EBCA8DULL, 0xA1F6535133673725ULL }, /* XSUM_XXH3_testdata[6803] */ + { 3402, 0x0000000000000000ULL, 0xC3393268BD9A580FULL }, /* XSUM_XXH3_testdata[6804] */ + { 3402, 0x9E3779B185EBCA8DULL, 0x900537CE674E5C29ULL }, /* XSUM_XXH3_testdata[6805] */ + { 3403, 0x0000000000000000ULL, 0x5EF6FB124B92471AULL }, /* XSUM_XXH3_testdata[6806] */ + { 3403, 0x9E3779B185EBCA8DULL, 0xE9B203C1E1A13490ULL }, /* XSUM_XXH3_testdata[6807] */ + { 3404, 0x0000000000000000ULL, 0xFEEF85FD8F064FB8ULL }, /* XSUM_XXH3_testdata[6808] */ + { 3404, 0x9E3779B185EBCA8DULL, 0x36D403BFD873D29EULL }, /* XSUM_XXH3_testdata[6809] */ + { 3405, 0x0000000000000000ULL, 0xAD4E16D2BCF13E91ULL }, /* XSUM_XXH3_testdata[6810] */ + { 3405, 0x9E3779B185EBCA8DULL, 0xCA663C3422B8AC5AULL }, /* XSUM_XXH3_testdata[6811] */ + { 3406, 0x0000000000000000ULL, 0x04C879B2B9C607D1ULL }, /* XSUM_XXH3_testdata[6812] */ + { 3406, 0x9E3779B185EBCA8DULL, 0x3E18E39DD05AD200ULL }, /* XSUM_XXH3_testdata[6813] */ + { 3407, 0x0000000000000000ULL, 0x3DC2FBCD16225841ULL }, /* XSUM_XXH3_testdata[6814] */ + { 3407, 0x9E3779B185EBCA8DULL, 0xB0102B3A179982DFULL }, /* XSUM_XXH3_testdata[6815] */ + { 3408, 0x0000000000000000ULL, 0xF5EA4DB56376A521ULL }, /* XSUM_XXH3_testdata[6816] */ + { 3408, 0x9E3779B185EBCA8DULL, 0x76CBDCD851E1578DULL }, /* XSUM_XXH3_testdata[6817] */ + { 3409, 0x0000000000000000ULL, 0xE987EBEEE1EECCD9ULL }, /* XSUM_XXH3_testdata[6818] */ + { 3409, 0x9E3779B185EBCA8DULL, 0xA2B2B1828D920A8FULL }, /* XSUM_XXH3_testdata[6819] */ + { 3410, 0x0000000000000000ULL, 0xA28A69165BC6201FULL }, /* XSUM_XXH3_testdata[6820] */ + { 3410, 0x9E3779B185EBCA8DULL, 0x6D3E68040E28F068ULL }, /* XSUM_XXH3_testdata[6821] */ + { 3411, 0x0000000000000000ULL, 0xD084835BE48582BAULL }, /* XSUM_XXH3_testdata[6822] */ + { 3411, 0x9E3779B185EBCA8DULL, 0xFAE48A7F6D0EA3ADULL }, /* XSUM_XXH3_testdata[6823] */ + { 3412, 0x0000000000000000ULL, 0x99FAC1585DA2979EULL }, /* XSUM_XXH3_testdata[6824] */ + { 3412, 0x9E3779B185EBCA8DULL, 0x8A0946D812EC9930ULL }, /* XSUM_XXH3_testdata[6825] */ + { 3413, 0x0000000000000000ULL, 0x9B7D110224DE3741ULL }, /* XSUM_XXH3_testdata[6826] */ + { 3413, 0x9E3779B185EBCA8DULL, 0x512B43626433FFD5ULL }, /* XSUM_XXH3_testdata[6827] */ + { 3414, 0x0000000000000000ULL, 0x068464F851726C21ULL }, /* XSUM_XXH3_testdata[6828] */ + { 3414, 0x9E3779B185EBCA8DULL, 0x1B249FDF51CB749BULL }, /* XSUM_XXH3_testdata[6829] */ + { 3415, 0x0000000000000000ULL, 0xFA428E8672E650F5ULL }, /* XSUM_XXH3_testdata[6830] */ + { 3415, 0x9E3779B185EBCA8DULL, 0x30E2D66C047374EAULL }, /* XSUM_XXH3_testdata[6831] */ + { 3416, 0x0000000000000000ULL, 0x537AE0407DA6E36EULL }, /* XSUM_XXH3_testdata[6832] */ + { 3416, 0x9E3779B185EBCA8DULL, 0x3A2632845436AFA4ULL }, /* XSUM_XXH3_testdata[6833] */ + { 3417, 0x0000000000000000ULL, 0xC78CBD900D0FA155ULL }, /* XSUM_XXH3_testdata[6834] */ + { 3417, 0x9E3779B185EBCA8DULL, 0xEA043C3AE68F0072ULL }, /* XSUM_XXH3_testdata[6835] */ + { 3418, 0x0000000000000000ULL, 0x16A5A54E8C5C26E1ULL }, /* XSUM_XXH3_testdata[6836] */ + { 3418, 0x9E3779B185EBCA8DULL, 0xBCD3F01DC87BEACFULL }, /* XSUM_XXH3_testdata[6837] */ + { 3419, 0x0000000000000000ULL, 0x99D4EE76AF195731ULL }, /* XSUM_XXH3_testdata[6838] */ + { 3419, 0x9E3779B185EBCA8DULL, 0x4B4454EAE9502B87ULL }, /* XSUM_XXH3_testdata[6839] */ + { 3420, 0x0000000000000000ULL, 0xBEED4A7672B35DA1ULL }, /* XSUM_XXH3_testdata[6840] */ + { 3420, 0x9E3779B185EBCA8DULL, 0x9165EC9EFB91D063ULL }, /* XSUM_XXH3_testdata[6841] */ + { 3421, 0x0000000000000000ULL, 0xD2B64EFAB2C7F3B6ULL }, /* XSUM_XXH3_testdata[6842] */ + { 3421, 0x9E3779B185EBCA8DULL, 0x26F3512DBB64CCD6ULL }, /* XSUM_XXH3_testdata[6843] */ + { 3422, 0x0000000000000000ULL, 0x16994ADC95C3DD59ULL }, /* XSUM_XXH3_testdata[6844] */ + { 3422, 0x9E3779B185EBCA8DULL, 0x25DD06403D47B9E2ULL }, /* XSUM_XXH3_testdata[6845] */ + { 3423, 0x0000000000000000ULL, 0x5F95506988F7A6E2ULL }, /* XSUM_XXH3_testdata[6846] */ + { 3423, 0x9E3779B185EBCA8DULL, 0xBCF53EAAA0FAFE5BULL }, /* XSUM_XXH3_testdata[6847] */ + { 3424, 0x0000000000000000ULL, 0xB82C4D58447071F6ULL }, /* XSUM_XXH3_testdata[6848] */ + { 3424, 0x9E3779B185EBCA8DULL, 0x53C6A0C80A8CE03AULL }, /* XSUM_XXH3_testdata[6849] */ + { 3425, 0x0000000000000000ULL, 0x51EC8660F7BE8073ULL }, /* XSUM_XXH3_testdata[6850] */ + { 3425, 0x9E3779B185EBCA8DULL, 0x62287687188CEDD3ULL }, /* XSUM_XXH3_testdata[6851] */ + { 3426, 0x0000000000000000ULL, 0x17CD1C93665A3EEAULL }, /* XSUM_XXH3_testdata[6852] */ + { 3426, 0x9E3779B185EBCA8DULL, 0x85B611DDF5A748AEULL }, /* XSUM_XXH3_testdata[6853] */ + { 3427, 0x0000000000000000ULL, 0x6807CC5D6956C70CULL }, /* XSUM_XXH3_testdata[6854] */ + { 3427, 0x9E3779B185EBCA8DULL, 0x3D1F4E12503D6B0EULL }, /* XSUM_XXH3_testdata[6855] */ + { 3428, 0x0000000000000000ULL, 0x49133B7C04546C61ULL }, /* XSUM_XXH3_testdata[6856] */ + { 3428, 0x9E3779B185EBCA8DULL, 0xAAF1A828EC52CB6AULL }, /* XSUM_XXH3_testdata[6857] */ + { 3429, 0x0000000000000000ULL, 0xEE23B02BF3D00EB6ULL }, /* XSUM_XXH3_testdata[6858] */ + { 3429, 0x9E3779B185EBCA8DULL, 0xC4C9BA35282BF46AULL }, /* XSUM_XXH3_testdata[6859] */ + { 3430, 0x0000000000000000ULL, 0x5923EB8CFFF27A78ULL }, /* XSUM_XXH3_testdata[6860] */ + { 3430, 0x9E3779B185EBCA8DULL, 0x8B21E6279C861866ULL }, /* XSUM_XXH3_testdata[6861] */ + { 3431, 0x0000000000000000ULL, 0x715B9D93A9515421ULL }, /* XSUM_XXH3_testdata[6862] */ + { 3431, 0x9E3779B185EBCA8DULL, 0x5578E24B67696515ULL }, /* XSUM_XXH3_testdata[6863] */ + { 3432, 0x0000000000000000ULL, 0x852C7D23D9C52C61ULL }, /* XSUM_XXH3_testdata[6864] */ + { 3432, 0x9E3779B185EBCA8DULL, 0xF2860B377932F538ULL }, /* XSUM_XXH3_testdata[6865] */ + { 3433, 0x0000000000000000ULL, 0x2CACD2411AA01EDFULL }, /* XSUM_XXH3_testdata[6866] */ + { 3433, 0x9E3779B185EBCA8DULL, 0x293B3F36962943D9ULL }, /* XSUM_XXH3_testdata[6867] */ + { 3434, 0x0000000000000000ULL, 0x7C19178BEF5EE94CULL }, /* XSUM_XXH3_testdata[6868] */ + { 3434, 0x9E3779B185EBCA8DULL, 0x20E2E82BB895B8A1ULL }, /* XSUM_XXH3_testdata[6869] */ + { 3435, 0x0000000000000000ULL, 0x3F781F8F6FF6355AULL }, /* XSUM_XXH3_testdata[6870] */ + { 3435, 0x9E3779B185EBCA8DULL, 0x2BE5292F21AFAA55ULL }, /* XSUM_XXH3_testdata[6871] */ + { 3436, 0x0000000000000000ULL, 0x6613D5C175439532ULL }, /* XSUM_XXH3_testdata[6872] */ + { 3436, 0x9E3779B185EBCA8DULL, 0x14730479802AE13AULL }, /* XSUM_XXH3_testdata[6873] */ + { 3437, 0x0000000000000000ULL, 0xB2F9827610AE5FD8ULL }, /* XSUM_XXH3_testdata[6874] */ + { 3437, 0x9E3779B185EBCA8DULL, 0x9D9D6E47EEF46586ULL }, /* XSUM_XXH3_testdata[6875] */ + { 3438, 0x0000000000000000ULL, 0x03608AC79778363EULL }, /* XSUM_XXH3_testdata[6876] */ + { 3438, 0x9E3779B185EBCA8DULL, 0x81CF8D41A65F977EULL }, /* XSUM_XXH3_testdata[6877] */ + { 3439, 0x0000000000000000ULL, 0x90729D66C715DFAFULL }, /* XSUM_XXH3_testdata[6878] */ + { 3439, 0x9E3779B185EBCA8DULL, 0x3B6F4CD6BD92BE88ULL }, /* XSUM_XXH3_testdata[6879] */ + { 3440, 0x0000000000000000ULL, 0x323981E33475BF91ULL }, /* XSUM_XXH3_testdata[6880] */ + { 3440, 0x9E3779B185EBCA8DULL, 0x144B191EC86C3643ULL }, /* XSUM_XXH3_testdata[6881] */ + { 3441, 0x0000000000000000ULL, 0x9A9ACC5955002DFDULL }, /* XSUM_XXH3_testdata[6882] */ + { 3441, 0x9E3779B185EBCA8DULL, 0x021F71FC64158D63ULL }, /* XSUM_XXH3_testdata[6883] */ + { 3442, 0x0000000000000000ULL, 0xDF539EAE3D64E04FULL }, /* XSUM_XXH3_testdata[6884] */ + { 3442, 0x9E3779B185EBCA8DULL, 0x3BECB796BDA1FD82ULL }, /* XSUM_XXH3_testdata[6885] */ + { 3443, 0x0000000000000000ULL, 0x336A96389E5FDFCEULL }, /* XSUM_XXH3_testdata[6886] */ + { 3443, 0x9E3779B185EBCA8DULL, 0x1192397EC8E8CF2FULL }, /* XSUM_XXH3_testdata[6887] */ + { 3444, 0x0000000000000000ULL, 0x556F1E7C93E809B7ULL }, /* XSUM_XXH3_testdata[6888] */ + { 3444, 0x9E3779B185EBCA8DULL, 0x2ED343BD289B4E62ULL }, /* XSUM_XXH3_testdata[6889] */ + { 3445, 0x0000000000000000ULL, 0x080D6F59003E4FC4ULL }, /* XSUM_XXH3_testdata[6890] */ + { 3445, 0x9E3779B185EBCA8DULL, 0xFDAF46FCD54D5FD1ULL }, /* XSUM_XXH3_testdata[6891] */ + { 3446, 0x0000000000000000ULL, 0x84A0088DB36E1F64ULL }, /* XSUM_XXH3_testdata[6892] */ + { 3446, 0x9E3779B185EBCA8DULL, 0x4F8457DDCA33663DULL }, /* XSUM_XXH3_testdata[6893] */ + { 3447, 0x0000000000000000ULL, 0xCED536C2D29C87EFULL }, /* XSUM_XXH3_testdata[6894] */ + { 3447, 0x9E3779B185EBCA8DULL, 0x83F8E89E2E59F5D8ULL }, /* XSUM_XXH3_testdata[6895] */ + { 3448, 0x0000000000000000ULL, 0x4B040A83B50A8CC0ULL }, /* XSUM_XXH3_testdata[6896] */ + { 3448, 0x9E3779B185EBCA8DULL, 0xAD33E209B12DE98AULL }, /* XSUM_XXH3_testdata[6897] */ + { 3449, 0x0000000000000000ULL, 0x742BF7496BB72640ULL }, /* XSUM_XXH3_testdata[6898] */ + { 3449, 0x9E3779B185EBCA8DULL, 0xA763199E64F92DCCULL }, /* XSUM_XXH3_testdata[6899] */ + { 3450, 0x0000000000000000ULL, 0xFD63BD7EFEDD98E3ULL }, /* XSUM_XXH3_testdata[6900] */ + { 3450, 0x9E3779B185EBCA8DULL, 0xA42BEBCE3C653456ULL }, /* XSUM_XXH3_testdata[6901] */ + { 3451, 0x0000000000000000ULL, 0x0538AAB855AF7831ULL }, /* XSUM_XXH3_testdata[6902] */ + { 3451, 0x9E3779B185EBCA8DULL, 0xA973A0AA06A01C7DULL }, /* XSUM_XXH3_testdata[6903] */ + { 3452, 0x0000000000000000ULL, 0x4CA97A96065818D5ULL }, /* XSUM_XXH3_testdata[6904] */ + { 3452, 0x9E3779B185EBCA8DULL, 0x8AA10488C167A8D8ULL }, /* XSUM_XXH3_testdata[6905] */ + { 3453, 0x0000000000000000ULL, 0xFCC4220563AD3B2DULL }, /* XSUM_XXH3_testdata[6906] */ + { 3453, 0x9E3779B185EBCA8DULL, 0xADA3C779BAF99218ULL }, /* XSUM_XXH3_testdata[6907] */ + { 3454, 0x0000000000000000ULL, 0x2BA0F086D16C658DULL }, /* XSUM_XXH3_testdata[6908] */ + { 3454, 0x9E3779B185EBCA8DULL, 0x8D86FA4EDA6D474CULL }, /* XSUM_XXH3_testdata[6909] */ + { 3455, 0x0000000000000000ULL, 0x5EB5CCCC2C59EA39ULL }, /* XSUM_XXH3_testdata[6910] */ + { 3455, 0x9E3779B185EBCA8DULL, 0xF9F51AE372D23DC7ULL }, /* XSUM_XXH3_testdata[6911] */ + { 3456, 0x0000000000000000ULL, 0xE57B9B091D086CFEULL }, /* XSUM_XXH3_testdata[6912] */ + { 3456, 0x9E3779B185EBCA8DULL, 0xD59013D9A35564C3ULL }, /* XSUM_XXH3_testdata[6913] */ + { 3457, 0x0000000000000000ULL, 0x7EB941A402BFEDB4ULL }, /* XSUM_XXH3_testdata[6914] */ + { 3457, 0x9E3779B185EBCA8DULL, 0xCEF2BA119E1F2490ULL }, /* XSUM_XXH3_testdata[6915] */ + { 3458, 0x0000000000000000ULL, 0x15A8595F20AB7869ULL }, /* XSUM_XXH3_testdata[6916] */ + { 3458, 0x9E3779B185EBCA8DULL, 0x5F570F540BFB5D14ULL }, /* XSUM_XXH3_testdata[6917] */ + { 3459, 0x0000000000000000ULL, 0x2BDB99769C00EF97ULL }, /* XSUM_XXH3_testdata[6918] */ + { 3459, 0x9E3779B185EBCA8DULL, 0x1A6C238C35C7AB6AULL }, /* XSUM_XXH3_testdata[6919] */ + { 3460, 0x0000000000000000ULL, 0xB13E92D074159621ULL }, /* XSUM_XXH3_testdata[6920] */ + { 3460, 0x9E3779B185EBCA8DULL, 0xE12928F662EB9C09ULL }, /* XSUM_XXH3_testdata[6921] */ + { 3461, 0x0000000000000000ULL, 0x7AA1893136ECA326ULL }, /* XSUM_XXH3_testdata[6922] */ + { 3461, 0x9E3779B185EBCA8DULL, 0x189A347EEE5B44A7ULL }, /* XSUM_XXH3_testdata[6923] */ + { 3462, 0x0000000000000000ULL, 0x444A65AE4ADAA185ULL }, /* XSUM_XXH3_testdata[6924] */ + { 3462, 0x9E3779B185EBCA8DULL, 0x4D31B5EFA7943093ULL }, /* XSUM_XXH3_testdata[6925] */ + { 3463, 0x0000000000000000ULL, 0x743C88E7E0808C6EULL }, /* XSUM_XXH3_testdata[6926] */ + { 3463, 0x9E3779B185EBCA8DULL, 0x457B3C8C414C7E00ULL }, /* XSUM_XXH3_testdata[6927] */ + { 3464, 0x0000000000000000ULL, 0x766A3D9A086BEEDCULL }, /* XSUM_XXH3_testdata[6928] */ + { 3464, 0x9E3779B185EBCA8DULL, 0xD00BD9334F499621ULL }, /* XSUM_XXH3_testdata[6929] */ + { 3465, 0x0000000000000000ULL, 0x5A9AF97390F2D336ULL }, /* XSUM_XXH3_testdata[6930] */ + { 3465, 0x9E3779B185EBCA8DULL, 0xDD343FDD81C24DECULL }, /* XSUM_XXH3_testdata[6931] */ + { 3466, 0x0000000000000000ULL, 0x299058CAE275128CULL }, /* XSUM_XXH3_testdata[6932] */ + { 3466, 0x9E3779B185EBCA8DULL, 0x43D2E53F08DFAA8EULL }, /* XSUM_XXH3_testdata[6933] */ + { 3467, 0x0000000000000000ULL, 0x8A9B1790BBBBE02EULL }, /* XSUM_XXH3_testdata[6934] */ + { 3467, 0x9E3779B185EBCA8DULL, 0x850B34730EC56B2AULL }, /* XSUM_XXH3_testdata[6935] */ + { 3468, 0x0000000000000000ULL, 0x4A61BD0288C15033ULL }, /* XSUM_XXH3_testdata[6936] */ + { 3468, 0x9E3779B185EBCA8DULL, 0x0F7DB390A1AE23CFULL }, /* XSUM_XXH3_testdata[6937] */ + { 3469, 0x0000000000000000ULL, 0x3174C25757772AB3ULL }, /* XSUM_XXH3_testdata[6938] */ + { 3469, 0x9E3779B185EBCA8DULL, 0x297D151445B94380ULL }, /* XSUM_XXH3_testdata[6939] */ + { 3470, 0x0000000000000000ULL, 0x5B6E6073547F45B6ULL }, /* XSUM_XXH3_testdata[6940] */ + { 3470, 0x9E3779B185EBCA8DULL, 0x2FA021070D76E41FULL }, /* XSUM_XXH3_testdata[6941] */ + { 3471, 0x0000000000000000ULL, 0x9ACF9C0E8A90C860ULL }, /* XSUM_XXH3_testdata[6942] */ + { 3471, 0x9E3779B185EBCA8DULL, 0x01FF2388F7E6CC3AULL }, /* XSUM_XXH3_testdata[6943] */ + { 3472, 0x0000000000000000ULL, 0x831D808CCFDCC740ULL }, /* XSUM_XXH3_testdata[6944] */ + { 3472, 0x9E3779B185EBCA8DULL, 0x83D2BCB7E486903CULL }, /* XSUM_XXH3_testdata[6945] */ + { 3473, 0x0000000000000000ULL, 0xA65DDD73B8B83E3FULL }, /* XSUM_XXH3_testdata[6946] */ + { 3473, 0x9E3779B185EBCA8DULL, 0xE6E97D4164F67B46ULL }, /* XSUM_XXH3_testdata[6947] */ + { 3474, 0x0000000000000000ULL, 0xD0289F03FB746F35ULL }, /* XSUM_XXH3_testdata[6948] */ + { 3474, 0x9E3779B185EBCA8DULL, 0x4D27362F8B024FDDULL }, /* XSUM_XXH3_testdata[6949] */ + { 3475, 0x0000000000000000ULL, 0xE5CE9E51C78660DAULL }, /* XSUM_XXH3_testdata[6950] */ + { 3475, 0x9E3779B185EBCA8DULL, 0x6B7F4F6CDA082302ULL }, /* XSUM_XXH3_testdata[6951] */ + { 3476, 0x0000000000000000ULL, 0xF04176F1CC863F0FULL }, /* XSUM_XXH3_testdata[6952] */ + { 3476, 0x9E3779B185EBCA8DULL, 0xE77E97BAB81B8059ULL }, /* XSUM_XXH3_testdata[6953] */ + { 3477, 0x0000000000000000ULL, 0x9638BDB097A6FA75ULL }, /* XSUM_XXH3_testdata[6954] */ + { 3477, 0x9E3779B185EBCA8DULL, 0x7744A44DA3915EE1ULL }, /* XSUM_XXH3_testdata[6955] */ + { 3478, 0x0000000000000000ULL, 0xA8D4FBA6FC32EFC1ULL }, /* XSUM_XXH3_testdata[6956] */ + { 3478, 0x9E3779B185EBCA8DULL, 0xE6F333D64DD1810EULL }, /* XSUM_XXH3_testdata[6957] */ + { 3479, 0x0000000000000000ULL, 0x1E94F229081009E8ULL }, /* XSUM_XXH3_testdata[6958] */ + { 3479, 0x9E3779B185EBCA8DULL, 0xAB72B923B1CDA151ULL }, /* XSUM_XXH3_testdata[6959] */ + { 3480, 0x0000000000000000ULL, 0xE2A83E16DE1CCCE6ULL }, /* XSUM_XXH3_testdata[6960] */ + { 3480, 0x9E3779B185EBCA8DULL, 0x74335749B7ED9BFCULL }, /* XSUM_XXH3_testdata[6961] */ + { 3481, 0x0000000000000000ULL, 0x1CD87893878D0190ULL }, /* XSUM_XXH3_testdata[6962] */ + { 3481, 0x9E3779B185EBCA8DULL, 0x60F080CD5DC9A29BULL }, /* XSUM_XXH3_testdata[6963] */ + { 3482, 0x0000000000000000ULL, 0xA24BBA3F25FB6D7CULL }, /* XSUM_XXH3_testdata[6964] */ + { 3482, 0x9E3779B185EBCA8DULL, 0x4A8B8192A9BB035FULL }, /* XSUM_XXH3_testdata[6965] */ + { 3483, 0x0000000000000000ULL, 0x217A994179A6BC5DULL }, /* XSUM_XXH3_testdata[6966] */ + { 3483, 0x9E3779B185EBCA8DULL, 0x6BE650AFD14961D1ULL }, /* XSUM_XXH3_testdata[6967] */ + { 3484, 0x0000000000000000ULL, 0x68F866F7D427B598ULL }, /* XSUM_XXH3_testdata[6968] */ + { 3484, 0x9E3779B185EBCA8DULL, 0x2BEBE4EB94CA4FCEULL }, /* XSUM_XXH3_testdata[6969] */ + { 3485, 0x0000000000000000ULL, 0x67FAB96FF6EEF146ULL }, /* XSUM_XXH3_testdata[6970] */ + { 3485, 0x9E3779B185EBCA8DULL, 0xBFAF58FA7B05D347ULL }, /* XSUM_XXH3_testdata[6971] */ + { 3486, 0x0000000000000000ULL, 0x4616EBD342D399DEULL }, /* XSUM_XXH3_testdata[6972] */ + { 3486, 0x9E3779B185EBCA8DULL, 0x96FF3FF4EA1AF519ULL }, /* XSUM_XXH3_testdata[6973] */ + { 3487, 0x0000000000000000ULL, 0x84B39B619C6CC1A7ULL }, /* XSUM_XXH3_testdata[6974] */ + { 3487, 0x9E3779B185EBCA8DULL, 0xF2DCD7B641C34D59ULL }, /* XSUM_XXH3_testdata[6975] */ + { 3488, 0x0000000000000000ULL, 0xB6EF7257B128E516ULL }, /* XSUM_XXH3_testdata[6976] */ + { 3488, 0x9E3779B185EBCA8DULL, 0xA1E9A1B2B3A6A69DULL }, /* XSUM_XXH3_testdata[6977] */ + { 3489, 0x0000000000000000ULL, 0x8950CBBD53A60547ULL }, /* XSUM_XXH3_testdata[6978] */ + { 3489, 0x9E3779B185EBCA8DULL, 0x8074F486A6B47B13ULL }, /* XSUM_XXH3_testdata[6979] */ + { 3490, 0x0000000000000000ULL, 0x5D5B88EAC0DC140BULL }, /* XSUM_XXH3_testdata[6980] */ + { 3490, 0x9E3779B185EBCA8DULL, 0xE66929B48B91CF24ULL }, /* XSUM_XXH3_testdata[6981] */ + { 3491, 0x0000000000000000ULL, 0xFC92F8F0AFEBFC33ULL }, /* XSUM_XXH3_testdata[6982] */ + { 3491, 0x9E3779B185EBCA8DULL, 0xF34BCB5C3D7D3CC3ULL }, /* XSUM_XXH3_testdata[6983] */ + { 3492, 0x0000000000000000ULL, 0xF0FFCA34C0BF3748ULL }, /* XSUM_XXH3_testdata[6984] */ + { 3492, 0x9E3779B185EBCA8DULL, 0xB6639893A4C48798ULL }, /* XSUM_XXH3_testdata[6985] */ + { 3493, 0x0000000000000000ULL, 0x1C5E70682A017652ULL }, /* XSUM_XXH3_testdata[6986] */ + { 3493, 0x9E3779B185EBCA8DULL, 0x3A40431A3CBA8FF1ULL }, /* XSUM_XXH3_testdata[6987] */ + { 3494, 0x0000000000000000ULL, 0x54D2299A8BE480D9ULL }, /* XSUM_XXH3_testdata[6988] */ + { 3494, 0x9E3779B185EBCA8DULL, 0xF7182620D32B3A6AULL }, /* XSUM_XXH3_testdata[6989] */ + { 3495, 0x0000000000000000ULL, 0x4A853ABFA346C31BULL }, /* XSUM_XXH3_testdata[6990] */ + { 3495, 0x9E3779B185EBCA8DULL, 0x6F5A7ABEB7062D8CULL }, /* XSUM_XXH3_testdata[6991] */ + { 3496, 0x0000000000000000ULL, 0x42E32DF7BCAB7B41ULL }, /* XSUM_XXH3_testdata[6992] */ + { 3496, 0x9E3779B185EBCA8DULL, 0x64E2A123B21A2BF8ULL }, /* XSUM_XXH3_testdata[6993] */ + { 3497, 0x0000000000000000ULL, 0xE55C51B036F73069ULL }, /* XSUM_XXH3_testdata[6994] */ + { 3497, 0x9E3779B185EBCA8DULL, 0xFA13D0C4D3B50397ULL }, /* XSUM_XXH3_testdata[6995] */ + { 3498, 0x0000000000000000ULL, 0x6A94E0A0CBBC011DULL }, /* XSUM_XXH3_testdata[6996] */ + { 3498, 0x9E3779B185EBCA8DULL, 0xAB916A459F2BA77EULL }, /* XSUM_XXH3_testdata[6997] */ + { 3499, 0x0000000000000000ULL, 0x8A31780B8FA49271ULL }, /* XSUM_XXH3_testdata[6998] */ + { 3499, 0x9E3779B185EBCA8DULL, 0x3248502F7430CCB3ULL }, /* XSUM_XXH3_testdata[6999] */ + { 3500, 0x0000000000000000ULL, 0x3F5C20E9C5BC30FCULL }, /* XSUM_XXH3_testdata[7000] */ + { 3500, 0x9E3779B185EBCA8DULL, 0x52A0B718A327F78EULL }, /* XSUM_XXH3_testdata[7001] */ + { 3501, 0x0000000000000000ULL, 0x0C557138EF665113ULL }, /* XSUM_XXH3_testdata[7002] */ + { 3501, 0x9E3779B185EBCA8DULL, 0x32EF2B9798DAD279ULL }, /* XSUM_XXH3_testdata[7003] */ + { 3502, 0x0000000000000000ULL, 0x11F297CF29906C4DULL }, /* XSUM_XXH3_testdata[7004] */ + { 3502, 0x9E3779B185EBCA8DULL, 0x62D4F0C4295680C7ULL }, /* XSUM_XXH3_testdata[7005] */ + { 3503, 0x0000000000000000ULL, 0xEDDDA0CFF6FF3EBDULL }, /* XSUM_XXH3_testdata[7006] */ + { 3503, 0x9E3779B185EBCA8DULL, 0xF9B9B3D472878220ULL }, /* XSUM_XXH3_testdata[7007] */ + { 3504, 0x0000000000000000ULL, 0x9C6FE29AABCD2FC1ULL }, /* XSUM_XXH3_testdata[7008] */ + { 3504, 0x9E3779B185EBCA8DULL, 0xA0CFFC0B6B3AC754ULL }, /* XSUM_XXH3_testdata[7009] */ + { 3505, 0x0000000000000000ULL, 0x2990C386E98E500DULL }, /* XSUM_XXH3_testdata[7010] */ + { 3505, 0x9E3779B185EBCA8DULL, 0xB5D0853395C2AE0FULL }, /* XSUM_XXH3_testdata[7011] */ + { 3506, 0x0000000000000000ULL, 0xFC2DD49ACEC84325ULL }, /* XSUM_XXH3_testdata[7012] */ + { 3506, 0x9E3779B185EBCA8DULL, 0x2555D00473A5EC76ULL }, /* XSUM_XXH3_testdata[7013] */ + { 3507, 0x0000000000000000ULL, 0x4219204CC3F19E86ULL }, /* XSUM_XXH3_testdata[7014] */ + { 3507, 0x9E3779B185EBCA8DULL, 0x17301B4AFF1A12B3ULL }, /* XSUM_XXH3_testdata[7015] */ + { 3508, 0x0000000000000000ULL, 0x531F5129E885FC1FULL }, /* XSUM_XXH3_testdata[7016] */ + { 3508, 0x9E3779B185EBCA8DULL, 0x2D25FD09A8BCF3FCULL }, /* XSUM_XXH3_testdata[7017] */ + { 3509, 0x0000000000000000ULL, 0xE30ED992B37CA5CFULL }, /* XSUM_XXH3_testdata[7018] */ + { 3509, 0x9E3779B185EBCA8DULL, 0xACBF1DAEB4DEB0D1ULL }, /* XSUM_XXH3_testdata[7019] */ + { 3510, 0x0000000000000000ULL, 0xF5C771258932B3F7ULL }, /* XSUM_XXH3_testdata[7020] */ + { 3510, 0x9E3779B185EBCA8DULL, 0xC6CAC08CDFBF1E5EULL }, /* XSUM_XXH3_testdata[7021] */ + { 3511, 0x0000000000000000ULL, 0xCA68DB7B3A40AB67ULL }, /* XSUM_XXH3_testdata[7022] */ + { 3511, 0x9E3779B185EBCA8DULL, 0xE978EA397A49AD49ULL }, /* XSUM_XXH3_testdata[7023] */ + { 3512, 0x0000000000000000ULL, 0x4BC21D7DBAB3335BULL }, /* XSUM_XXH3_testdata[7024] */ + { 3512, 0x9E3779B185EBCA8DULL, 0x499821766185E65AULL }, /* XSUM_XXH3_testdata[7025] */ + { 3513, 0x0000000000000000ULL, 0x3E83E1110CA570D7ULL }, /* XSUM_XXH3_testdata[7026] */ + { 3513, 0x9E3779B185EBCA8DULL, 0x322C23FA880C25E9ULL }, /* XSUM_XXH3_testdata[7027] */ + { 3514, 0x0000000000000000ULL, 0xD0EFE226CF83E639ULL }, /* XSUM_XXH3_testdata[7028] */ + { 3514, 0x9E3779B185EBCA8DULL, 0xE6E965BD126DF290ULL }, /* XSUM_XXH3_testdata[7029] */ + { 3515, 0x0000000000000000ULL, 0xAD4EE35B65B3E97DULL }, /* XSUM_XXH3_testdata[7030] */ + { 3515, 0x9E3779B185EBCA8DULL, 0x59C43CEE47577A6FULL }, /* XSUM_XXH3_testdata[7031] */ + { 3516, 0x0000000000000000ULL, 0x1CD8D79750245445ULL }, /* XSUM_XXH3_testdata[7032] */ + { 3516, 0x9E3779B185EBCA8DULL, 0x106182CF4F44ECACULL }, /* XSUM_XXH3_testdata[7033] */ + { 3517, 0x0000000000000000ULL, 0xF81CDF250458461FULL }, /* XSUM_XXH3_testdata[7034] */ + { 3517, 0x9E3779B185EBCA8DULL, 0xCB300D8AFA2B9074ULL }, /* XSUM_XXH3_testdata[7035] */ + { 3518, 0x0000000000000000ULL, 0x00B44D4311B0BDDDULL }, /* XSUM_XXH3_testdata[7036] */ + { 3518, 0x9E3779B185EBCA8DULL, 0xED0ECE687F943E96ULL }, /* XSUM_XXH3_testdata[7037] */ + { 3519, 0x0000000000000000ULL, 0xAD6884D76586C425ULL }, /* XSUM_XXH3_testdata[7038] */ + { 3519, 0x9E3779B185EBCA8DULL, 0x3CCBE7697C09D027ULL }, /* XSUM_XXH3_testdata[7039] */ + { 3520, 0x0000000000000000ULL, 0x4AE72B2CEC0154A4ULL }, /* XSUM_XXH3_testdata[7040] */ + { 3520, 0x9E3779B185EBCA8DULL, 0x669A38E31F403AB3ULL }, /* XSUM_XXH3_testdata[7041] */ + { 3521, 0x0000000000000000ULL, 0x1C2467C36A4A05FEULL }, /* XSUM_XXH3_testdata[7042] */ + { 3521, 0x9E3779B185EBCA8DULL, 0x47C14D66AE006FE2ULL }, /* XSUM_XXH3_testdata[7043] */ + { 3522, 0x0000000000000000ULL, 0x7D6785D29ABBC1E0ULL }, /* XSUM_XXH3_testdata[7044] */ + { 3522, 0x9E3779B185EBCA8DULL, 0xAA6ECF8894E63171ULL }, /* XSUM_XXH3_testdata[7045] */ + { 3523, 0x0000000000000000ULL, 0x02DE7A761E2005CAULL }, /* XSUM_XXH3_testdata[7046] */ + { 3523, 0x9E3779B185EBCA8DULL, 0xB9DB1F14D2FEFB7CULL }, /* XSUM_XXH3_testdata[7047] */ + { 3524, 0x0000000000000000ULL, 0x4F7155D176B1B538ULL }, /* XSUM_XXH3_testdata[7048] */ + { 3524, 0x9E3779B185EBCA8DULL, 0xB99634196AF64BACULL }, /* XSUM_XXH3_testdata[7049] */ + { 3525, 0x0000000000000000ULL, 0x31A4028F7190238CULL }, /* XSUM_XXH3_testdata[7050] */ + { 3525, 0x9E3779B185EBCA8DULL, 0x78D2ADEF9ED92542ULL }, /* XSUM_XXH3_testdata[7051] */ + { 3526, 0x0000000000000000ULL, 0xF57F055E22094776ULL }, /* XSUM_XXH3_testdata[7052] */ + { 3526, 0x9E3779B185EBCA8DULL, 0x96E7802E11B04294ULL }, /* XSUM_XXH3_testdata[7053] */ + { 3527, 0x0000000000000000ULL, 0x273C0105C788A7C5ULL }, /* XSUM_XXH3_testdata[7054] */ + { 3527, 0x9E3779B185EBCA8DULL, 0x063F26B879C7FB5DULL }, /* XSUM_XXH3_testdata[7055] */ + { 3528, 0x0000000000000000ULL, 0x788AFF64C26E40DDULL }, /* XSUM_XXH3_testdata[7056] */ + { 3528, 0x9E3779B185EBCA8DULL, 0xC67BD3AEC2A767BAULL }, /* XSUM_XXH3_testdata[7057] */ + { 3529, 0x0000000000000000ULL, 0x9A4C28EC5B274073ULL }, /* XSUM_XXH3_testdata[7058] */ + { 3529, 0x9E3779B185EBCA8DULL, 0xD10F17D18AF09FC1ULL }, /* XSUM_XXH3_testdata[7059] */ + { 3530, 0x0000000000000000ULL, 0x41EAF5870F1FAF02ULL }, /* XSUM_XXH3_testdata[7060] */ + { 3530, 0x9E3779B185EBCA8DULL, 0x492DBEB2FA597712ULL }, /* XSUM_XXH3_testdata[7061] */ + { 3531, 0x0000000000000000ULL, 0x060202E0CECDCD82ULL }, /* XSUM_XXH3_testdata[7062] */ + { 3531, 0x9E3779B185EBCA8DULL, 0x85530139005E7679ULL }, /* XSUM_XXH3_testdata[7063] */ + { 3532, 0x0000000000000000ULL, 0x670E724A3F1B6F46ULL }, /* XSUM_XXH3_testdata[7064] */ + { 3532, 0x9E3779B185EBCA8DULL, 0x723E3D34E0272BF6ULL }, /* XSUM_XXH3_testdata[7065] */ + { 3533, 0x0000000000000000ULL, 0xC89223A0DD16699EULL }, /* XSUM_XXH3_testdata[7066] */ + { 3533, 0x9E3779B185EBCA8DULL, 0xFF5F9BE615303278ULL }, /* XSUM_XXH3_testdata[7067] */ + { 3534, 0x0000000000000000ULL, 0x9037DF505832F655ULL }, /* XSUM_XXH3_testdata[7068] */ + { 3534, 0x9E3779B185EBCA8DULL, 0xDFFA2D78C3B80F87ULL }, /* XSUM_XXH3_testdata[7069] */ + { 3535, 0x0000000000000000ULL, 0x9C8539B53F903384ULL }, /* XSUM_XXH3_testdata[7070] */ + { 3535, 0x9E3779B185EBCA8DULL, 0x56CC63E59E9A8784ULL }, /* XSUM_XXH3_testdata[7071] */ + { 3536, 0x0000000000000000ULL, 0xDEBA0228DD563402ULL }, /* XSUM_XXH3_testdata[7072] */ + { 3536, 0x9E3779B185EBCA8DULL, 0x24449B6E45030239ULL }, /* XSUM_XXH3_testdata[7073] */ + { 3537, 0x0000000000000000ULL, 0xB01738BE6C965ED6ULL }, /* XSUM_XXH3_testdata[7074] */ + { 3537, 0x9E3779B185EBCA8DULL, 0x908A583B0811DA9BULL }, /* XSUM_XXH3_testdata[7075] */ + { 3538, 0x0000000000000000ULL, 0x4A4750E1AC27E245ULL }, /* XSUM_XXH3_testdata[7076] */ + { 3538, 0x9E3779B185EBCA8DULL, 0x0965BFFEBDE28B60ULL }, /* XSUM_XXH3_testdata[7077] */ + { 3539, 0x0000000000000000ULL, 0x8FF61D5636A8AAA2ULL }, /* XSUM_XXH3_testdata[7078] */ + { 3539, 0x9E3779B185EBCA8DULL, 0x2670E92B26669470ULL }, /* XSUM_XXH3_testdata[7079] */ + { 3540, 0x0000000000000000ULL, 0xA4542598B8184DAAULL }, /* XSUM_XXH3_testdata[7080] */ + { 3540, 0x9E3779B185EBCA8DULL, 0x75B41EEE8678CEA1ULL }, /* XSUM_XXH3_testdata[7081] */ + { 3541, 0x0000000000000000ULL, 0x7CCF736EE2195F4DULL }, /* XSUM_XXH3_testdata[7082] */ + { 3541, 0x9E3779B185EBCA8DULL, 0x2D350B3D5CD557A7ULL }, /* XSUM_XXH3_testdata[7083] */ + { 3542, 0x0000000000000000ULL, 0x0E1E5960452AA0D4ULL }, /* XSUM_XXH3_testdata[7084] */ + { 3542, 0x9E3779B185EBCA8DULL, 0x6D0F8B676827E02CULL }, /* XSUM_XXH3_testdata[7085] */ + { 3543, 0x0000000000000000ULL, 0xD3EBE6832A073A89ULL }, /* XSUM_XXH3_testdata[7086] */ + { 3543, 0x9E3779B185EBCA8DULL, 0x2222E929AFE2DE90ULL }, /* XSUM_XXH3_testdata[7087] */ + { 3544, 0x0000000000000000ULL, 0xA23BD60E84E52E11ULL }, /* XSUM_XXH3_testdata[7088] */ + { 3544, 0x9E3779B185EBCA8DULL, 0x374DD01907BE5B27ULL }, /* XSUM_XXH3_testdata[7089] */ + { 3545, 0x0000000000000000ULL, 0xE77FFA0FBB030992ULL }, /* XSUM_XXH3_testdata[7090] */ + { 3545, 0x9E3779B185EBCA8DULL, 0xB3928F9C6C2344A7ULL }, /* XSUM_XXH3_testdata[7091] */ + { 3546, 0x0000000000000000ULL, 0x479CF3EF2877688DULL }, /* XSUM_XXH3_testdata[7092] */ + { 3546, 0x9E3779B185EBCA8DULL, 0xA74CA629D4DB9ED2ULL }, /* XSUM_XXH3_testdata[7093] */ + { 3547, 0x0000000000000000ULL, 0x46A5D4538EEA1B1EULL }, /* XSUM_XXH3_testdata[7094] */ + { 3547, 0x9E3779B185EBCA8DULL, 0x4A54B76E585FB369ULL }, /* XSUM_XXH3_testdata[7095] */ + { 3548, 0x0000000000000000ULL, 0xDFC7639B53F79E1DULL }, /* XSUM_XXH3_testdata[7096] */ + { 3548, 0x9E3779B185EBCA8DULL, 0xD7331396B0968C55ULL }, /* XSUM_XXH3_testdata[7097] */ + { 3549, 0x0000000000000000ULL, 0x3A21E252457E09C2ULL }, /* XSUM_XXH3_testdata[7098] */ + { 3549, 0x9E3779B185EBCA8DULL, 0x8F8A090028F047D4ULL }, /* XSUM_XXH3_testdata[7099] */ + { 3550, 0x0000000000000000ULL, 0x5E081111B8168FABULL }, /* XSUM_XXH3_testdata[7100] */ + { 3550, 0x9E3779B185EBCA8DULL, 0xD9CF0859AC3F0022ULL }, /* XSUM_XXH3_testdata[7101] */ + { 3551, 0x0000000000000000ULL, 0x04A3ABF712732F54ULL }, /* XSUM_XXH3_testdata[7102] */ + { 3551, 0x9E3779B185EBCA8DULL, 0x6962B7DBDB3007BEULL }, /* XSUM_XXH3_testdata[7103] */ + { 3552, 0x0000000000000000ULL, 0xD4F34FB029E5E662ULL }, /* XSUM_XXH3_testdata[7104] */ + { 3552, 0x9E3779B185EBCA8DULL, 0x2AE713A28FBBF1D8ULL }, /* XSUM_XXH3_testdata[7105] */ + { 3553, 0x0000000000000000ULL, 0x5E31DE75F1C44D4EULL }, /* XSUM_XXH3_testdata[7106] */ + { 3553, 0x9E3779B185EBCA8DULL, 0xB8E299521A9EADB6ULL }, /* XSUM_XXH3_testdata[7107] */ + { 3554, 0x0000000000000000ULL, 0xDDC496EB0576A021ULL }, /* XSUM_XXH3_testdata[7108] */ + { 3554, 0x9E3779B185EBCA8DULL, 0x2B6A8AE7E8273F4AULL }, /* XSUM_XXH3_testdata[7109] */ + { 3555, 0x0000000000000000ULL, 0x294F75CD1E32C40FULL }, /* XSUM_XXH3_testdata[7110] */ + { 3555, 0x9E3779B185EBCA8DULL, 0x0873DC3E634E1A9DULL }, /* XSUM_XXH3_testdata[7111] */ + { 3556, 0x0000000000000000ULL, 0xA4237F94D2FD6D01ULL }, /* XSUM_XXH3_testdata[7112] */ + { 3556, 0x9E3779B185EBCA8DULL, 0x2489A06A4DCF3103ULL }, /* XSUM_XXH3_testdata[7113] */ + { 3557, 0x0000000000000000ULL, 0x722C2FCF3BE61AE1ULL }, /* XSUM_XXH3_testdata[7114] */ + { 3557, 0x9E3779B185EBCA8DULL, 0x3C17B01F08ACA576ULL }, /* XSUM_XXH3_testdata[7115] */ + { 3558, 0x0000000000000000ULL, 0x274F1DF2D2FD2D09ULL }, /* XSUM_XXH3_testdata[7116] */ + { 3558, 0x9E3779B185EBCA8DULL, 0x0BF25086DFE92169ULL }, /* XSUM_XXH3_testdata[7117] */ + { 3559, 0x0000000000000000ULL, 0x4E4E18771F4919FAULL }, /* XSUM_XXH3_testdata[7118] */ + { 3559, 0x9E3779B185EBCA8DULL, 0xA07A5686E36F9F0BULL }, /* XSUM_XXH3_testdata[7119] */ + { 3560, 0x0000000000000000ULL, 0xA9A7CEA7CC0D573DULL }, /* XSUM_XXH3_testdata[7120] */ + { 3560, 0x9E3779B185EBCA8DULL, 0xAE3432EED2CEBD1FULL }, /* XSUM_XXH3_testdata[7121] */ + { 3561, 0x0000000000000000ULL, 0x1487A53D57713BF5ULL }, /* XSUM_XXH3_testdata[7122] */ + { 3561, 0x9E3779B185EBCA8DULL, 0x833DD631DC8E3D62ULL }, /* XSUM_XXH3_testdata[7123] */ + { 3562, 0x0000000000000000ULL, 0x8B3F554DFB49918FULL }, /* XSUM_XXH3_testdata[7124] */ + { 3562, 0x9E3779B185EBCA8DULL, 0x455250994E286120ULL }, /* XSUM_XXH3_testdata[7125] */ + { 3563, 0x0000000000000000ULL, 0x42B18C25D75724DDULL }, /* XSUM_XXH3_testdata[7126] */ + { 3563, 0x9E3779B185EBCA8DULL, 0xF4B14B16682AEE35ULL }, /* XSUM_XXH3_testdata[7127] */ + { 3564, 0x0000000000000000ULL, 0xC45207103DFE5459ULL }, /* XSUM_XXH3_testdata[7128] */ + { 3564, 0x9E3779B185EBCA8DULL, 0x268660893C6BE3FFULL }, /* XSUM_XXH3_testdata[7129] */ + { 3565, 0x0000000000000000ULL, 0x7EA7440DA5DE1034ULL }, /* XSUM_XXH3_testdata[7130] */ + { 3565, 0x9E3779B185EBCA8DULL, 0xEB34A9D3E86EC4E3ULL }, /* XSUM_XXH3_testdata[7131] */ + { 3566, 0x0000000000000000ULL, 0x2554A811CA1AC6B2ULL }, /* XSUM_XXH3_testdata[7132] */ + { 3566, 0x9E3779B185EBCA8DULL, 0x78A675E3834817A9ULL }, /* XSUM_XXH3_testdata[7133] */ + { 3567, 0x0000000000000000ULL, 0x6CB83092A773C943ULL }, /* XSUM_XXH3_testdata[7134] */ + { 3567, 0x9E3779B185EBCA8DULL, 0x892F392819A08B3FULL }, /* XSUM_XXH3_testdata[7135] */ + { 3568, 0x0000000000000000ULL, 0xAFB74CB13F672C01ULL }, /* XSUM_XXH3_testdata[7136] */ + { 3568, 0x9E3779B185EBCA8DULL, 0x6EBA646E3A553F11ULL }, /* XSUM_XXH3_testdata[7137] */ + { 3569, 0x0000000000000000ULL, 0x32EDCFEE170F5043ULL }, /* XSUM_XXH3_testdata[7138] */ + { 3569, 0x9E3779B185EBCA8DULL, 0x6505C4F15EAF3A39ULL }, /* XSUM_XXH3_testdata[7139] */ + { 3570, 0x0000000000000000ULL, 0x79E2D6B25304F053ULL }, /* XSUM_XXH3_testdata[7140] */ + { 3570, 0x9E3779B185EBCA8DULL, 0xF6F4D30AFDC033D3ULL }, /* XSUM_XXH3_testdata[7141] */ + { 3571, 0x0000000000000000ULL, 0x2B1456214F2109C3ULL }, /* XSUM_XXH3_testdata[7142] */ + { 3571, 0x9E3779B185EBCA8DULL, 0xF251B8C586DD62E3ULL }, /* XSUM_XXH3_testdata[7143] */ + { 3572, 0x0000000000000000ULL, 0x0AAB88F1CB058429ULL }, /* XSUM_XXH3_testdata[7144] */ + { 3572, 0x9E3779B185EBCA8DULL, 0xCEB65F6ED58BB8DDULL }, /* XSUM_XXH3_testdata[7145] */ + { 3573, 0x0000000000000000ULL, 0x006B7E62560ED657ULL }, /* XSUM_XXH3_testdata[7146] */ + { 3573, 0x9E3779B185EBCA8DULL, 0x166BFA47B059BA61ULL }, /* XSUM_XXH3_testdata[7147] */ + { 3574, 0x0000000000000000ULL, 0xC3E729B2EE5CBBE9ULL }, /* XSUM_XXH3_testdata[7148] */ + { 3574, 0x9E3779B185EBCA8DULL, 0x4AC6E31B52DC128DULL }, /* XSUM_XXH3_testdata[7149] */ + { 3575, 0x0000000000000000ULL, 0xB07AD514C9CF88D9ULL }, /* XSUM_XXH3_testdata[7150] */ + { 3575, 0x9E3779B185EBCA8DULL, 0xDB53F9E7492CE18FULL }, /* XSUM_XXH3_testdata[7151] */ + { 3576, 0x0000000000000000ULL, 0x31DE82458FD07128ULL }, /* XSUM_XXH3_testdata[7152] */ + { 3576, 0x9E3779B185EBCA8DULL, 0x1341859CD2A40C80ULL }, /* XSUM_XXH3_testdata[7153] */ + { 3577, 0x0000000000000000ULL, 0xF82B20916E6E9457ULL }, /* XSUM_XXH3_testdata[7154] */ + { 3577, 0x9E3779B185EBCA8DULL, 0xF9E394EEC271A1C8ULL }, /* XSUM_XXH3_testdata[7155] */ + { 3578, 0x0000000000000000ULL, 0x9FB57A5DAAD860FFULL }, /* XSUM_XXH3_testdata[7156] */ + { 3578, 0x9E3779B185EBCA8DULL, 0xD7CC947000BA8D58ULL }, /* XSUM_XXH3_testdata[7157] */ + { 3579, 0x0000000000000000ULL, 0x25ABC08107A016BAULL }, /* XSUM_XXH3_testdata[7158] */ + { 3579, 0x9E3779B185EBCA8DULL, 0x125F0504A2BA0106ULL }, /* XSUM_XXH3_testdata[7159] */ + { 3580, 0x0000000000000000ULL, 0x34EA64F41B8E6927ULL }, /* XSUM_XXH3_testdata[7160] */ + { 3580, 0x9E3779B185EBCA8DULL, 0xAE4C173EE0108EFFULL }, /* XSUM_XXH3_testdata[7161] */ + { 3581, 0x0000000000000000ULL, 0x201F2EF77AB96730ULL }, /* XSUM_XXH3_testdata[7162] */ + { 3581, 0x9E3779B185EBCA8DULL, 0x425ED79ADBC7D660ULL }, /* XSUM_XXH3_testdata[7163] */ + { 3582, 0x0000000000000000ULL, 0x322C6A43F77EFFEFULL }, /* XSUM_XXH3_testdata[7164] */ + { 3582, 0x9E3779B185EBCA8DULL, 0x1FFB384D89EA209BULL }, /* XSUM_XXH3_testdata[7165] */ + { 3583, 0x0000000000000000ULL, 0xE86866EA3CC2CC43ULL }, /* XSUM_XXH3_testdata[7166] */ + { 3583, 0x9E3779B185EBCA8DULL, 0x9B29185982068C91ULL }, /* XSUM_XXH3_testdata[7167] */ + { 3584, 0x0000000000000000ULL, 0x2AF9EAD626D25D94ULL }, /* XSUM_XXH3_testdata[7168] */ + { 3584, 0x9E3779B185EBCA8DULL, 0xB6FC9C8B10AAB2CFULL }, /* XSUM_XXH3_testdata[7169] */ + { 3585, 0x0000000000000000ULL, 0xF0D334FE274B6A91ULL }, /* XSUM_XXH3_testdata[7170] */ + { 3585, 0x9E3779B185EBCA8DULL, 0xFD4786CE9F6DFC03ULL }, /* XSUM_XXH3_testdata[7171] */ + { 3586, 0x0000000000000000ULL, 0xB8DB9C3D608FDC8AULL }, /* XSUM_XXH3_testdata[7172] */ + { 3586, 0x9E3779B185EBCA8DULL, 0x4171818A418960B0ULL }, /* XSUM_XXH3_testdata[7173] */ + { 3587, 0x0000000000000000ULL, 0xCECD706FDDFEA151ULL }, /* XSUM_XXH3_testdata[7174] */ + { 3587, 0x9E3779B185EBCA8DULL, 0x3BD04E90AB23DF55ULL }, /* XSUM_XXH3_testdata[7175] */ + { 3588, 0x0000000000000000ULL, 0x86485AE18E893682ULL }, /* XSUM_XXH3_testdata[7176] */ + { 3588, 0x9E3779B185EBCA8DULL, 0xB7F96EF6F2CD907FULL }, /* XSUM_XXH3_testdata[7177] */ + { 3589, 0x0000000000000000ULL, 0xF798C9AAC4FFC627ULL }, /* XSUM_XXH3_testdata[7178] */ + { 3589, 0x9E3779B185EBCA8DULL, 0x78983FD6CBFB1601ULL }, /* XSUM_XXH3_testdata[7179] */ + { 3590, 0x0000000000000000ULL, 0xA141AA3FE418801FULL }, /* XSUM_XXH3_testdata[7180] */ + { 3590, 0x9E3779B185EBCA8DULL, 0xB15EF590F1E955C8ULL }, /* XSUM_XXH3_testdata[7181] */ + { 3591, 0x0000000000000000ULL, 0xA9DF21A4D35BB610ULL }, /* XSUM_XXH3_testdata[7182] */ + { 3591, 0x9E3779B185EBCA8DULL, 0x563A23C9417E8CB4ULL }, /* XSUM_XXH3_testdata[7183] */ + { 3592, 0x0000000000000000ULL, 0xC3FBFE7A73562CBCULL }, /* XSUM_XXH3_testdata[7184] */ + { 3592, 0x9E3779B185EBCA8DULL, 0xDEEA695CDD3BFB9FULL }, /* XSUM_XXH3_testdata[7185] */ + { 3593, 0x0000000000000000ULL, 0xD29E95DE693E9014ULL }, /* XSUM_XXH3_testdata[7186] */ + { 3593, 0x9E3779B185EBCA8DULL, 0xC56E25C9764CC202ULL }, /* XSUM_XXH3_testdata[7187] */ + { 3594, 0x0000000000000000ULL, 0x6C1E228FED5BECC8ULL }, /* XSUM_XXH3_testdata[7188] */ + { 3594, 0x9E3779B185EBCA8DULL, 0xAE44EE3A0B3E8AB0ULL }, /* XSUM_XXH3_testdata[7189] */ + { 3595, 0x0000000000000000ULL, 0xE935CC0325A6067FULL }, /* XSUM_XXH3_testdata[7190] */ + { 3595, 0x9E3779B185EBCA8DULL, 0xD0A65CB862DEB411ULL }, /* XSUM_XXH3_testdata[7191] */ + { 3596, 0x0000000000000000ULL, 0x98F22C7F63866CCFULL }, /* XSUM_XXH3_testdata[7192] */ + { 3596, 0x9E3779B185EBCA8DULL, 0xCB9A83003440D127ULL }, /* XSUM_XXH3_testdata[7193] */ + { 3597, 0x0000000000000000ULL, 0xC61982D4F98F6AD5ULL }, /* XSUM_XXH3_testdata[7194] */ + { 3597, 0x9E3779B185EBCA8DULL, 0x71D6BCB2F4EFFE6BULL }, /* XSUM_XXH3_testdata[7195] */ + { 3598, 0x0000000000000000ULL, 0x1F7BCE3664E5902FULL }, /* XSUM_XXH3_testdata[7196] */ + { 3598, 0x9E3779B185EBCA8DULL, 0x48749CF945445E65ULL }, /* XSUM_XXH3_testdata[7197] */ + { 3599, 0x0000000000000000ULL, 0x6E855514404372F2ULL }, /* XSUM_XXH3_testdata[7198] */ + { 3599, 0x9E3779B185EBCA8DULL, 0xE34FA316A98BE161ULL }, /* XSUM_XXH3_testdata[7199] */ + { 3600, 0x0000000000000000ULL, 0xEC24DBD259A92CF9ULL }, /* XSUM_XXH3_testdata[7200] */ + { 3600, 0x9E3779B185EBCA8DULL, 0x8964C0ED9681AB0BULL }, /* XSUM_XXH3_testdata[7201] */ + { 3601, 0x0000000000000000ULL, 0x0C80A31650CED06BULL }, /* XSUM_XXH3_testdata[7202] */ + { 3601, 0x9E3779B185EBCA8DULL, 0x74B82B0E04787D8CULL }, /* XSUM_XXH3_testdata[7203] */ + { 3602, 0x0000000000000000ULL, 0x4DE3483FC4182F48ULL }, /* XSUM_XXH3_testdata[7204] */ + { 3602, 0x9E3779B185EBCA8DULL, 0x7161C533B05B5F24ULL }, /* XSUM_XXH3_testdata[7205] */ + { 3603, 0x0000000000000000ULL, 0x6EBFCC95D71CE048ULL }, /* XSUM_XXH3_testdata[7206] */ + { 3603, 0x9E3779B185EBCA8DULL, 0x83FD806AC13CC621ULL }, /* XSUM_XXH3_testdata[7207] */ + { 3604, 0x0000000000000000ULL, 0x7C528E5DD889A5B7ULL }, /* XSUM_XXH3_testdata[7208] */ + { 3604, 0x9E3779B185EBCA8DULL, 0x77E6D86EA7B9E60BULL }, /* XSUM_XXH3_testdata[7209] */ + { 3605, 0x0000000000000000ULL, 0x1775BBA9945AB5C7ULL }, /* XSUM_XXH3_testdata[7210] */ + { 3605, 0x9E3779B185EBCA8DULL, 0xC4611E1571038030ULL }, /* XSUM_XXH3_testdata[7211] */ + { 3606, 0x0000000000000000ULL, 0x13FA2FF572F0F0D4ULL }, /* XSUM_XXH3_testdata[7212] */ + { 3606, 0x9E3779B185EBCA8DULL, 0x78379AC100A01282ULL }, /* XSUM_XXH3_testdata[7213] */ + { 3607, 0x0000000000000000ULL, 0xB38ABFE4157261E4ULL }, /* XSUM_XXH3_testdata[7214] */ + { 3607, 0x9E3779B185EBCA8DULL, 0x44FE5B51DD645D59ULL }, /* XSUM_XXH3_testdata[7215] */ + { 3608, 0x0000000000000000ULL, 0x1EA557EFB225BD55ULL }, /* XSUM_XXH3_testdata[7216] */ + { 3608, 0x9E3779B185EBCA8DULL, 0xCF5B8E6399DC3E6DULL }, /* XSUM_XXH3_testdata[7217] */ + { 3609, 0x0000000000000000ULL, 0x5DAEC0E322AA11ACULL }, /* XSUM_XXH3_testdata[7218] */ + { 3609, 0x9E3779B185EBCA8DULL, 0xB97A05380B5E97F4ULL }, /* XSUM_XXH3_testdata[7219] */ + { 3610, 0x0000000000000000ULL, 0x0618560527D8EE74ULL }, /* XSUM_XXH3_testdata[7220] */ + { 3610, 0x9E3779B185EBCA8DULL, 0x810CFF0D5D82C499ULL }, /* XSUM_XXH3_testdata[7221] */ + { 3611, 0x0000000000000000ULL, 0x428CB7AB1700986EULL }, /* XSUM_XXH3_testdata[7222] */ + { 3611, 0x9E3779B185EBCA8DULL, 0xCDA885166AFAEA10ULL }, /* XSUM_XXH3_testdata[7223] */ + { 3612, 0x0000000000000000ULL, 0xD8F050F264F8572FULL }, /* XSUM_XXH3_testdata[7224] */ + { 3612, 0x9E3779B185EBCA8DULL, 0x23481BBD0BB290ACULL }, /* XSUM_XXH3_testdata[7225] */ + { 3613, 0x0000000000000000ULL, 0x7D2FE80FC76388AFULL }, /* XSUM_XXH3_testdata[7226] */ + { 3613, 0x9E3779B185EBCA8DULL, 0x63489215D53E7F36ULL }, /* XSUM_XXH3_testdata[7227] */ + { 3614, 0x0000000000000000ULL, 0x9EE18D9CE70D3D81ULL }, /* XSUM_XXH3_testdata[7228] */ + { 3614, 0x9E3779B185EBCA8DULL, 0x44A9E8E08BA4F358ULL }, /* XSUM_XXH3_testdata[7229] */ + { 3615, 0x0000000000000000ULL, 0x805D0048FE2B4461ULL }, /* XSUM_XXH3_testdata[7230] */ + { 3615, 0x9E3779B185EBCA8DULL, 0xB8793230EFE60C6CULL }, /* XSUM_XXH3_testdata[7231] */ + { 3616, 0x0000000000000000ULL, 0xE224004BA5C50173ULL }, /* XSUM_XXH3_testdata[7232] */ + { 3616, 0x9E3779B185EBCA8DULL, 0xC495BF75B748E46FULL }, /* XSUM_XXH3_testdata[7233] */ + { 3617, 0x0000000000000000ULL, 0x60AD3345643EF778ULL }, /* XSUM_XXH3_testdata[7234] */ + { 3617, 0x9E3779B185EBCA8DULL, 0xF5C0690CA81473FAULL }, /* XSUM_XXH3_testdata[7235] */ + { 3618, 0x0000000000000000ULL, 0xA05FE941BED3C5A6ULL }, /* XSUM_XXH3_testdata[7236] */ + { 3618, 0x9E3779B185EBCA8DULL, 0xDDAAFD89E60E967EULL }, /* XSUM_XXH3_testdata[7237] */ + { 3619, 0x0000000000000000ULL, 0x2E1FABE6A10E014AULL }, /* XSUM_XXH3_testdata[7238] */ + { 3619, 0x9E3779B185EBCA8DULL, 0x62B46AE80876FDFFULL }, /* XSUM_XXH3_testdata[7239] */ + { 3620, 0x0000000000000000ULL, 0x819F6BD70A3D520AULL }, /* XSUM_XXH3_testdata[7240] */ + { 3620, 0x9E3779B185EBCA8DULL, 0x996A04888536CCDFULL }, /* XSUM_XXH3_testdata[7241] */ + { 3621, 0x0000000000000000ULL, 0xB51D2FDE94AC39C0ULL }, /* XSUM_XXH3_testdata[7242] */ + { 3621, 0x9E3779B185EBCA8DULL, 0xA86FAE2B6048A1EAULL }, /* XSUM_XXH3_testdata[7243] */ + { 3622, 0x0000000000000000ULL, 0x5FBAFF28E55997C2ULL }, /* XSUM_XXH3_testdata[7244] */ + { 3622, 0x9E3779B185EBCA8DULL, 0x04EA2187B3EB8741ULL }, /* XSUM_XXH3_testdata[7245] */ + { 3623, 0x0000000000000000ULL, 0xC15DD9F52DF74671ULL }, /* XSUM_XXH3_testdata[7246] */ + { 3623, 0x9E3779B185EBCA8DULL, 0x9790921F255745AEULL }, /* XSUM_XXH3_testdata[7247] */ + { 3624, 0x0000000000000000ULL, 0x4E7C46B2442D5DC7ULL }, /* XSUM_XXH3_testdata[7248] */ + { 3624, 0x9E3779B185EBCA8DULL, 0xC52C4A382BA1F303ULL }, /* XSUM_XXH3_testdata[7249] */ + { 3625, 0x0000000000000000ULL, 0x7D1C31F2A34070B3ULL }, /* XSUM_XXH3_testdata[7250] */ + { 3625, 0x9E3779B185EBCA8DULL, 0xFC641C9B2410A120ULL }, /* XSUM_XXH3_testdata[7251] */ + { 3626, 0x0000000000000000ULL, 0xB81891D504173694ULL }, /* XSUM_XXH3_testdata[7252] */ + { 3626, 0x9E3779B185EBCA8DULL, 0xF2D50EDF58249D59ULL }, /* XSUM_XXH3_testdata[7253] */ + { 3627, 0x0000000000000000ULL, 0xF63AF445777115FAULL }, /* XSUM_XXH3_testdata[7254] */ + { 3627, 0x9E3779B185EBCA8DULL, 0xC173275130321B6EULL }, /* XSUM_XXH3_testdata[7255] */ + { 3628, 0x0000000000000000ULL, 0xEC5927B6AD279E13ULL }, /* XSUM_XXH3_testdata[7256] */ + { 3628, 0x9E3779B185EBCA8DULL, 0x9693A39017C2A9ACULL }, /* XSUM_XXH3_testdata[7257] */ + { 3629, 0x0000000000000000ULL, 0x71651D7611EC2532ULL }, /* XSUM_XXH3_testdata[7258] */ + { 3629, 0x9E3779B185EBCA8DULL, 0x9718A64B81FD5DE1ULL }, /* XSUM_XXH3_testdata[7259] */ + { 3630, 0x0000000000000000ULL, 0x7C449AB2BD997001ULL }, /* XSUM_XXH3_testdata[7260] */ + { 3630, 0x9E3779B185EBCA8DULL, 0x7EB44826101D0ED4ULL }, /* XSUM_XXH3_testdata[7261] */ + { 3631, 0x0000000000000000ULL, 0xDA4282DB4571841EULL }, /* XSUM_XXH3_testdata[7262] */ + { 3631, 0x9E3779B185EBCA8DULL, 0xD9F1F147717C384EULL }, /* XSUM_XXH3_testdata[7263] */ + { 3632, 0x0000000000000000ULL, 0x2E18036391ED1627ULL }, /* XSUM_XXH3_testdata[7264] */ + { 3632, 0x9E3779B185EBCA8DULL, 0x132C5DF528C31BB6ULL }, /* XSUM_XXH3_testdata[7265] */ + { 3633, 0x0000000000000000ULL, 0x209115FAE7B80378ULL }, /* XSUM_XXH3_testdata[7266] */ + { 3633, 0x9E3779B185EBCA8DULL, 0xE866A17FAB1F0AF8ULL }, /* XSUM_XXH3_testdata[7267] */ + { 3634, 0x0000000000000000ULL, 0x7DE2CA817F381BC0ULL }, /* XSUM_XXH3_testdata[7268] */ + { 3634, 0x9E3779B185EBCA8DULL, 0xF462694243DBE9B8ULL }, /* XSUM_XXH3_testdata[7269] */ + { 3635, 0x0000000000000000ULL, 0x46485158EA4469B8ULL }, /* XSUM_XXH3_testdata[7270] */ + { 3635, 0x9E3779B185EBCA8DULL, 0x50D200F9426AB0B8ULL }, /* XSUM_XXH3_testdata[7271] */ + { 3636, 0x0000000000000000ULL, 0x7DD0DD3A7FBB7019ULL }, /* XSUM_XXH3_testdata[7272] */ + { 3636, 0x9E3779B185EBCA8DULL, 0xE717E13C97FAABAFULL }, /* XSUM_XXH3_testdata[7273] */ + { 3637, 0x0000000000000000ULL, 0x983F18C1468B2D10ULL }, /* XSUM_XXH3_testdata[7274] */ + { 3637, 0x9E3779B185EBCA8DULL, 0x8DF8356CF393EFC0ULL }, /* XSUM_XXH3_testdata[7275] */ + { 3638, 0x0000000000000000ULL, 0x717C350EB3CD9807ULL }, /* XSUM_XXH3_testdata[7276] */ + { 3638, 0x9E3779B185EBCA8DULL, 0x41B956F428CCAB4CULL }, /* XSUM_XXH3_testdata[7277] */ + { 3639, 0x0000000000000000ULL, 0xD64AB539E854D1FEULL }, /* XSUM_XXH3_testdata[7278] */ + { 3639, 0x9E3779B185EBCA8DULL, 0xE67F4E3648D08E65ULL }, /* XSUM_XXH3_testdata[7279] */ + { 3640, 0x0000000000000000ULL, 0x083B58BA720C4DF3ULL }, /* XSUM_XXH3_testdata[7280] */ + { 3640, 0x9E3779B185EBCA8DULL, 0xD09854B17E7E765CULL }, /* XSUM_XXH3_testdata[7281] */ + { 3641, 0x0000000000000000ULL, 0xA6010F7BCC7EDE24ULL }, /* XSUM_XXH3_testdata[7282] */ + { 3641, 0x9E3779B185EBCA8DULL, 0xBD61E0A48814535CULL }, /* XSUM_XXH3_testdata[7283] */ + { 3642, 0x0000000000000000ULL, 0xFDA39821B3F36757ULL }, /* XSUM_XXH3_testdata[7284] */ + { 3642, 0x9E3779B185EBCA8DULL, 0x2546DF17F90A2192ULL }, /* XSUM_XXH3_testdata[7285] */ + { 3643, 0x0000000000000000ULL, 0x8BCB3B6F54E7DBAEULL }, /* XSUM_XXH3_testdata[7286] */ + { 3643, 0x9E3779B185EBCA8DULL, 0x0CDBE992BAC2E837ULL }, /* XSUM_XXH3_testdata[7287] */ + { 3644, 0x0000000000000000ULL, 0x52B947E32C3D68DCULL }, /* XSUM_XXH3_testdata[7288] */ + { 3644, 0x9E3779B185EBCA8DULL, 0xA67E8BCB1BA3AD03ULL }, /* XSUM_XXH3_testdata[7289] */ + { 3645, 0x0000000000000000ULL, 0x88FE1049B811C230ULL }, /* XSUM_XXH3_testdata[7290] */ + { 3645, 0x9E3779B185EBCA8DULL, 0xE9CF3FD2C327C16FULL }, /* XSUM_XXH3_testdata[7291] */ + { 3646, 0x0000000000000000ULL, 0xD26C15C31BDBBAA2ULL }, /* XSUM_XXH3_testdata[7292] */ + { 3646, 0x9E3779B185EBCA8DULL, 0x271AFF2D889CD83EULL }, /* XSUM_XXH3_testdata[7293] */ + { 3647, 0x0000000000000000ULL, 0x76579FBF54975EF8ULL }, /* XSUM_XXH3_testdata[7294] */ + { 3647, 0x9E3779B185EBCA8DULL, 0x391A5EDBFEC575E3ULL }, /* XSUM_XXH3_testdata[7295] */ + { 3648, 0x0000000000000000ULL, 0x610A4475518EA93BULL }, /* XSUM_XXH3_testdata[7296] */ + { 3648, 0x9E3779B185EBCA8DULL, 0xD1470284DFFCC536ULL }, /* XSUM_XXH3_testdata[7297] */ + { 3649, 0x0000000000000000ULL, 0x7355EAEB71F2ADD7ULL }, /* XSUM_XXH3_testdata[7298] */ + { 3649, 0x9E3779B185EBCA8DULL, 0x43F63766EB203184ULL }, /* XSUM_XXH3_testdata[7299] */ + { 3650, 0x0000000000000000ULL, 0x49220BDC3DC68B25ULL }, /* XSUM_XXH3_testdata[7300] */ + { 3650, 0x9E3779B185EBCA8DULL, 0x43669AC1AF931192ULL }, /* XSUM_XXH3_testdata[7301] */ + { 3651, 0x0000000000000000ULL, 0xD0F53AF95EBB06B4ULL }, /* XSUM_XXH3_testdata[7302] */ + { 3651, 0x9E3779B185EBCA8DULL, 0x4511BCD1E506D310ULL }, /* XSUM_XXH3_testdata[7303] */ + { 3652, 0x0000000000000000ULL, 0xD468B155F10FB02DULL }, /* XSUM_XXH3_testdata[7304] */ + { 3652, 0x9E3779B185EBCA8DULL, 0x1C337EC9BE934644ULL }, /* XSUM_XXH3_testdata[7305] */ + { 3653, 0x0000000000000000ULL, 0x9E9025CDC2778AD2ULL }, /* XSUM_XXH3_testdata[7306] */ + { 3653, 0x9E3779B185EBCA8DULL, 0x0B6F102F04CE0841ULL }, /* XSUM_XXH3_testdata[7307] */ + { 3654, 0x0000000000000000ULL, 0x9792DB0C1F18EFC8ULL }, /* XSUM_XXH3_testdata[7308] */ + { 3654, 0x9E3779B185EBCA8DULL, 0x2E43CCFC8CEB2824ULL }, /* XSUM_XXH3_testdata[7309] */ + { 3655, 0x0000000000000000ULL, 0x3E0610AB1BFEE240ULL }, /* XSUM_XXH3_testdata[7310] */ + { 3655, 0x9E3779B185EBCA8DULL, 0x1AF7E00CB6C71727ULL }, /* XSUM_XXH3_testdata[7311] */ + { 3656, 0x0000000000000000ULL, 0xB31EE9E702342246ULL }, /* XSUM_XXH3_testdata[7312] */ + { 3656, 0x9E3779B185EBCA8DULL, 0x563F9E869AF53FC2ULL }, /* XSUM_XXH3_testdata[7313] */ + { 3657, 0x0000000000000000ULL, 0x714874FD55D5AB76ULL }, /* XSUM_XXH3_testdata[7314] */ + { 3657, 0x9E3779B185EBCA8DULL, 0x991F0CDCE38857A4ULL }, /* XSUM_XXH3_testdata[7315] */ + { 3658, 0x0000000000000000ULL, 0x7D2BBDA44E88C402ULL }, /* XSUM_XXH3_testdata[7316] */ + { 3658, 0x9E3779B185EBCA8DULL, 0xC96E20000F45DC7AULL }, /* XSUM_XXH3_testdata[7317] */ + { 3659, 0x0000000000000000ULL, 0x388FAC01BB9971E7ULL }, /* XSUM_XXH3_testdata[7318] */ + { 3659, 0x9E3779B185EBCA8DULL, 0x409B353294E7250BULL }, /* XSUM_XXH3_testdata[7319] */ + { 3660, 0x0000000000000000ULL, 0x6658D39A5794EC9EULL }, /* XSUM_XXH3_testdata[7320] */ + { 3660, 0x9E3779B185EBCA8DULL, 0x877A001BA85CD57FULL }, /* XSUM_XXH3_testdata[7321] */ + { 3661, 0x0000000000000000ULL, 0x9229DEFEB9C5CFCFULL }, /* XSUM_XXH3_testdata[7322] */ + { 3661, 0x9E3779B185EBCA8DULL, 0x0A7AB1E105A88727ULL }, /* XSUM_XXH3_testdata[7323] */ + { 3662, 0x0000000000000000ULL, 0x0DEA8A92E86777ECULL }, /* XSUM_XXH3_testdata[7324] */ + { 3662, 0x9E3779B185EBCA8DULL, 0xDA9D525FC518C611ULL }, /* XSUM_XXH3_testdata[7325] */ + { 3663, 0x0000000000000000ULL, 0x7645DFFB0345DC71ULL }, /* XSUM_XXH3_testdata[7326] */ + { 3663, 0x9E3779B185EBCA8DULL, 0x1F14663C9906311FULL }, /* XSUM_XXH3_testdata[7327] */ + { 3664, 0x0000000000000000ULL, 0x2B813BC349183AD8ULL }, /* XSUM_XXH3_testdata[7328] */ + { 3664, 0x9E3779B185EBCA8DULL, 0x1C688F2BB8FEACA0ULL }, /* XSUM_XXH3_testdata[7329] */ + { 3665, 0x0000000000000000ULL, 0x74E7A9D6B3E98D45ULL }, /* XSUM_XXH3_testdata[7330] */ + { 3665, 0x9E3779B185EBCA8DULL, 0x334D7716485A5AEDULL }, /* XSUM_XXH3_testdata[7331] */ + { 3666, 0x0000000000000000ULL, 0x057313555EE1643EULL }, /* XSUM_XXH3_testdata[7332] */ + { 3666, 0x9E3779B185EBCA8DULL, 0x43EA2793D65754A1ULL }, /* XSUM_XXH3_testdata[7333] */ + { 3667, 0x0000000000000000ULL, 0x472EC8CC0F5932EDULL }, /* XSUM_XXH3_testdata[7334] */ + { 3667, 0x9E3779B185EBCA8DULL, 0xA1E9CB6FD03E99CCULL }, /* XSUM_XXH3_testdata[7335] */ + { 3668, 0x0000000000000000ULL, 0x20A378B56457CC71ULL }, /* XSUM_XXH3_testdata[7336] */ + { 3668, 0x9E3779B185EBCA8DULL, 0xDEF548BC96712061ULL }, /* XSUM_XXH3_testdata[7337] */ + { 3669, 0x0000000000000000ULL, 0x5A4CABE2108EB0AEULL }, /* XSUM_XXH3_testdata[7338] */ + { 3669, 0x9E3779B185EBCA8DULL, 0x0AFD1831FA89CFB4ULL }, /* XSUM_XXH3_testdata[7339] */ + { 3670, 0x0000000000000000ULL, 0x82019D1F6C3E2E74ULL }, /* XSUM_XXH3_testdata[7340] */ + { 3670, 0x9E3779B185EBCA8DULL, 0xD6D8C4CA9D0AB2C3ULL }, /* XSUM_XXH3_testdata[7341] */ + { 3671, 0x0000000000000000ULL, 0xE47829572E431531ULL }, /* XSUM_XXH3_testdata[7342] */ + { 3671, 0x9E3779B185EBCA8DULL, 0xE343EED75B07F8C0ULL }, /* XSUM_XXH3_testdata[7343] */ + { 3672, 0x0000000000000000ULL, 0x8DDCAA138D9C6C24ULL }, /* XSUM_XXH3_testdata[7344] */ + { 3672, 0x9E3779B185EBCA8DULL, 0xB77A7680E8EFB54CULL }, /* XSUM_XXH3_testdata[7345] */ + { 3673, 0x0000000000000000ULL, 0x89DA001EE3A0B053ULL }, /* XSUM_XXH3_testdata[7346] */ + { 3673, 0x9E3779B185EBCA8DULL, 0x0DF66A76DB3C0056ULL }, /* XSUM_XXH3_testdata[7347] */ + { 3674, 0x0000000000000000ULL, 0xD81F9027F710D6E4ULL }, /* XSUM_XXH3_testdata[7348] */ + { 3674, 0x9E3779B185EBCA8DULL, 0x2ED21B61A2F8840FULL }, /* XSUM_XXH3_testdata[7349] */ + { 3675, 0x0000000000000000ULL, 0x82CBFF9D183E749FULL }, /* XSUM_XXH3_testdata[7350] */ + { 3675, 0x9E3779B185EBCA8DULL, 0xDD56A057434E8529ULL }, /* XSUM_XXH3_testdata[7351] */ + { 3676, 0x0000000000000000ULL, 0xF5AC5F41BBB7EE12ULL }, /* XSUM_XXH3_testdata[7352] */ + { 3676, 0x9E3779B185EBCA8DULL, 0x4F0900B248D31555ULL }, /* XSUM_XXH3_testdata[7353] */ + { 3677, 0x0000000000000000ULL, 0x68D21C5BC5A86459ULL }, /* XSUM_XXH3_testdata[7354] */ + { 3677, 0x9E3779B185EBCA8DULL, 0xF5028F8358823812ULL }, /* XSUM_XXH3_testdata[7355] */ + { 3678, 0x0000000000000000ULL, 0x30B49D06835F3AC3ULL }, /* XSUM_XXH3_testdata[7356] */ + { 3678, 0x9E3779B185EBCA8DULL, 0x9817808DDC221565ULL }, /* XSUM_XXH3_testdata[7357] */ + { 3679, 0x0000000000000000ULL, 0xB8E3272D2F06B449ULL }, /* XSUM_XXH3_testdata[7358] */ + { 3679, 0x9E3779B185EBCA8DULL, 0x5736B2C5C03A0720ULL }, /* XSUM_XXH3_testdata[7359] */ + { 3680, 0x0000000000000000ULL, 0xCEDB8AB1C347936EULL }, /* XSUM_XXH3_testdata[7360] */ + { 3680, 0x9E3779B185EBCA8DULL, 0x2F50AC8E8F284017ULL }, /* XSUM_XXH3_testdata[7361] */ + { 3681, 0x0000000000000000ULL, 0x6550E7E182454B71ULL }, /* XSUM_XXH3_testdata[7362] */ + { 3681, 0x9E3779B185EBCA8DULL, 0x26C4F4D208002F53ULL }, /* XSUM_XXH3_testdata[7363] */ + { 3682, 0x0000000000000000ULL, 0x1A3CE9C073D99D8FULL }, /* XSUM_XXH3_testdata[7364] */ + { 3682, 0x9E3779B185EBCA8DULL, 0x01EEA2098BD2CB83ULL }, /* XSUM_XXH3_testdata[7365] */ + { 3683, 0x0000000000000000ULL, 0x07B59DA40C98D2F1ULL }, /* XSUM_XXH3_testdata[7366] */ + { 3683, 0x9E3779B185EBCA8DULL, 0xB53E0C157F767219ULL }, /* XSUM_XXH3_testdata[7367] */ + { 3684, 0x0000000000000000ULL, 0x4E1C5A0C63E98879ULL }, /* XSUM_XXH3_testdata[7368] */ + { 3684, 0x9E3779B185EBCA8DULL, 0x48A1B9C9EB852A95ULL }, /* XSUM_XXH3_testdata[7369] */ + { 3685, 0x0000000000000000ULL, 0xAA83A3F5C90A9558ULL }, /* XSUM_XXH3_testdata[7370] */ + { 3685, 0x9E3779B185EBCA8DULL, 0x4CD131EA08ACCDDCULL }, /* XSUM_XXH3_testdata[7371] */ + { 3686, 0x0000000000000000ULL, 0x9903B927FE6E57DEULL }, /* XSUM_XXH3_testdata[7372] */ + { 3686, 0x9E3779B185EBCA8DULL, 0x52D4FE4DCB866096ULL }, /* XSUM_XXH3_testdata[7373] */ + { 3687, 0x0000000000000000ULL, 0x0EC74B98C8E26F7BULL }, /* XSUM_XXH3_testdata[7374] */ + { 3687, 0x9E3779B185EBCA8DULL, 0x5BB8229D8A74E2EDULL }, /* XSUM_XXH3_testdata[7375] */ + { 3688, 0x0000000000000000ULL, 0x9F78C9CFBAA50470ULL }, /* XSUM_XXH3_testdata[7376] */ + { 3688, 0x9E3779B185EBCA8DULL, 0xAE63489AAE57AE33ULL }, /* XSUM_XXH3_testdata[7377] */ + { 3689, 0x0000000000000000ULL, 0x2A952671D26A6FFAULL }, /* XSUM_XXH3_testdata[7378] */ + { 3689, 0x9E3779B185EBCA8DULL, 0xE038C243D2CCA34EULL }, /* XSUM_XXH3_testdata[7379] */ + { 3690, 0x0000000000000000ULL, 0x529F41A68EF2AA3EULL }, /* XSUM_XXH3_testdata[7380] */ + { 3690, 0x9E3779B185EBCA8DULL, 0xEFD1AD4FCFC6FBBDULL }, /* XSUM_XXH3_testdata[7381] */ + { 3691, 0x0000000000000000ULL, 0x3659D81C4A6C3DF6ULL }, /* XSUM_XXH3_testdata[7382] */ + { 3691, 0x9E3779B185EBCA8DULL, 0xB3678284360EE813ULL }, /* XSUM_XXH3_testdata[7383] */ + { 3692, 0x0000000000000000ULL, 0x7F3F4732C7238C59ULL }, /* XSUM_XXH3_testdata[7384] */ + { 3692, 0x9E3779B185EBCA8DULL, 0x144CFF00565F45BAULL }, /* XSUM_XXH3_testdata[7385] */ + { 3693, 0x0000000000000000ULL, 0x91ADED714C093708ULL }, /* XSUM_XXH3_testdata[7386] */ + { 3693, 0x9E3779B185EBCA8DULL, 0xF29B4E6485A31250ULL }, /* XSUM_XXH3_testdata[7387] */ + { 3694, 0x0000000000000000ULL, 0x6F0440F2434F1AECULL }, /* XSUM_XXH3_testdata[7388] */ + { 3694, 0x9E3779B185EBCA8DULL, 0x6605B7A79602CB9DULL }, /* XSUM_XXH3_testdata[7389] */ + { 3695, 0x0000000000000000ULL, 0x62396D74B3807469ULL }, /* XSUM_XXH3_testdata[7390] */ + { 3695, 0x9E3779B185EBCA8DULL, 0xEB50F68A2F82600AULL }, /* XSUM_XXH3_testdata[7391] */ + { 3696, 0x0000000000000000ULL, 0x9DEB9F6FCB13C1D1ULL }, /* XSUM_XXH3_testdata[7392] */ + { 3696, 0x9E3779B185EBCA8DULL, 0xDFD8A81D57831F5AULL }, /* XSUM_XXH3_testdata[7393] */ + { 3697, 0x0000000000000000ULL, 0x2BE03188E30F00BAULL }, /* XSUM_XXH3_testdata[7394] */ + { 3697, 0x9E3779B185EBCA8DULL, 0x6092B3B0C7B588EFULL }, /* XSUM_XXH3_testdata[7395] */ + { 3698, 0x0000000000000000ULL, 0x5ED20B63A3F94214ULL }, /* XSUM_XXH3_testdata[7396] */ + { 3698, 0x9E3779B185EBCA8DULL, 0x864F42F85EFE0BBAULL }, /* XSUM_XXH3_testdata[7397] */ + { 3699, 0x0000000000000000ULL, 0xC689706F998A00C3ULL }, /* XSUM_XXH3_testdata[7398] */ + { 3699, 0x9E3779B185EBCA8DULL, 0x0D1883CBE5717F8FULL }, /* XSUM_XXH3_testdata[7399] */ + { 3700, 0x0000000000000000ULL, 0xE6A90433FB2F086BULL }, /* XSUM_XXH3_testdata[7400] */ + { 3700, 0x9E3779B185EBCA8DULL, 0x6AF73F6E9BE7EAD0ULL }, /* XSUM_XXH3_testdata[7401] */ + { 3701, 0x0000000000000000ULL, 0xB81DABC129DE83F4ULL }, /* XSUM_XXH3_testdata[7402] */ + { 3701, 0x9E3779B185EBCA8DULL, 0x29D4D6930E899D09ULL }, /* XSUM_XXH3_testdata[7403] */ + { 3702, 0x0000000000000000ULL, 0xE6060A782BEE1FBCULL }, /* XSUM_XXH3_testdata[7404] */ + { 3702, 0x9E3779B185EBCA8DULL, 0xF9BE6AAA96953CE4ULL }, /* XSUM_XXH3_testdata[7405] */ + { 3703, 0x0000000000000000ULL, 0xE6F3FEB5D81374C0ULL }, /* XSUM_XXH3_testdata[7406] */ + { 3703, 0x9E3779B185EBCA8DULL, 0x1BD0294C74993124ULL }, /* XSUM_XXH3_testdata[7407] */ + { 3704, 0x0000000000000000ULL, 0xC338F23B324DBB9AULL }, /* XSUM_XXH3_testdata[7408] */ + { 3704, 0x9E3779B185EBCA8DULL, 0x8F4146188F8CE740ULL }, /* XSUM_XXH3_testdata[7409] */ + { 3705, 0x0000000000000000ULL, 0xA7A142E3469E3183ULL }, /* XSUM_XXH3_testdata[7410] */ + { 3705, 0x9E3779B185EBCA8DULL, 0x0624F76D4D087EA7ULL }, /* XSUM_XXH3_testdata[7411] */ + { 3706, 0x0000000000000000ULL, 0x7827841051328D85ULL }, /* XSUM_XXH3_testdata[7412] */ + { 3706, 0x9E3779B185EBCA8DULL, 0xE84DA382E63CBC76ULL }, /* XSUM_XXH3_testdata[7413] */ + { 3707, 0x0000000000000000ULL, 0xF1A2459F1B360D44ULL }, /* XSUM_XXH3_testdata[7414] */ + { 3707, 0x9E3779B185EBCA8DULL, 0x91E6043E763B72ADULL }, /* XSUM_XXH3_testdata[7415] */ + { 3708, 0x0000000000000000ULL, 0x693FE3C3A8505B5AULL }, /* XSUM_XXH3_testdata[7416] */ + { 3708, 0x9E3779B185EBCA8DULL, 0x065560626340E3CEULL }, /* XSUM_XXH3_testdata[7417] */ + { 3709, 0x0000000000000000ULL, 0xE652AD737192EBA9ULL }, /* XSUM_XXH3_testdata[7418] */ + { 3709, 0x9E3779B185EBCA8DULL, 0x40800D8F73C138C6ULL }, /* XSUM_XXH3_testdata[7419] */ + { 3710, 0x0000000000000000ULL, 0x0D0354875972AADAULL }, /* XSUM_XXH3_testdata[7420] */ + { 3710, 0x9E3779B185EBCA8DULL, 0x6F84F6348BF70FACULL }, /* XSUM_XXH3_testdata[7421] */ + { 3711, 0x0000000000000000ULL, 0x9485A0B8934E04EAULL }, /* XSUM_XXH3_testdata[7422] */ + { 3711, 0x9E3779B185EBCA8DULL, 0x2B7E3B2F33D0CAB6ULL }, /* XSUM_XXH3_testdata[7423] */ + { 3712, 0x0000000000000000ULL, 0x09A90CC714E0F0C3ULL }, /* XSUM_XXH3_testdata[7424] */ + { 3712, 0x9E3779B185EBCA8DULL, 0xE2E4513A65CE25ACULL }, /* XSUM_XXH3_testdata[7425] */ + { 3713, 0x0000000000000000ULL, 0x02CDD57D95AEEBC3ULL }, /* XSUM_XXH3_testdata[7426] */ + { 3713, 0x9E3779B185EBCA8DULL, 0x5D2B0E22E2A986EAULL }, /* XSUM_XXH3_testdata[7427] */ + { 3714, 0x0000000000000000ULL, 0xD98F7052D7F549F3ULL }, /* XSUM_XXH3_testdata[7428] */ + { 3714, 0x9E3779B185EBCA8DULL, 0xFC8CC370A4791CD8ULL }, /* XSUM_XXH3_testdata[7429] */ + { 3715, 0x0000000000000000ULL, 0x3FE8B5DBACBB95B0ULL }, /* XSUM_XXH3_testdata[7430] */ + { 3715, 0x9E3779B185EBCA8DULL, 0x30CD4C3BD9D73599ULL }, /* XSUM_XXH3_testdata[7431] */ + { 3716, 0x0000000000000000ULL, 0x513C9DABFD807F3CULL }, /* XSUM_XXH3_testdata[7432] */ + { 3716, 0x9E3779B185EBCA8DULL, 0x4FC039FA36A3F823ULL }, /* XSUM_XXH3_testdata[7433] */ + { 3717, 0x0000000000000000ULL, 0xB43EE4662B6EFCBEULL }, /* XSUM_XXH3_testdata[7434] */ + { 3717, 0x9E3779B185EBCA8DULL, 0xDFF9F622B896974AULL }, /* XSUM_XXH3_testdata[7435] */ + { 3718, 0x0000000000000000ULL, 0x4526037CC817421EULL }, /* XSUM_XXH3_testdata[7436] */ + { 3718, 0x9E3779B185EBCA8DULL, 0x49D4604E10E46CA3ULL }, /* XSUM_XXH3_testdata[7437] */ + { 3719, 0x0000000000000000ULL, 0xEF0783A5717C5158ULL }, /* XSUM_XXH3_testdata[7438] */ + { 3719, 0x9E3779B185EBCA8DULL, 0x1CA3A0942FAA5299ULL }, /* XSUM_XXH3_testdata[7439] */ + { 3720, 0x0000000000000000ULL, 0x89A84DDB6CD1153AULL }, /* XSUM_XXH3_testdata[7440] */ + { 3720, 0x9E3779B185EBCA8DULL, 0x73897329F114958BULL }, /* XSUM_XXH3_testdata[7441] */ + { 3721, 0x0000000000000000ULL, 0xCA31357C8308F48FULL }, /* XSUM_XXH3_testdata[7442] */ + { 3721, 0x9E3779B185EBCA8DULL, 0x7F7547E6D51145B1ULL }, /* XSUM_XXH3_testdata[7443] */ + { 3722, 0x0000000000000000ULL, 0x69FE031C6805ACA3ULL }, /* XSUM_XXH3_testdata[7444] */ + { 3722, 0x9E3779B185EBCA8DULL, 0xDA8A4C35AE999E31ULL }, /* XSUM_XXH3_testdata[7445] */ + { 3723, 0x0000000000000000ULL, 0x6B3D87A525E5D55AULL }, /* XSUM_XXH3_testdata[7446] */ + { 3723, 0x9E3779B185EBCA8DULL, 0xA0D1DD5C643ACF76ULL }, /* XSUM_XXH3_testdata[7447] */ + { 3724, 0x0000000000000000ULL, 0x78DFC979977ACE9CULL }, /* XSUM_XXH3_testdata[7448] */ + { 3724, 0x9E3779B185EBCA8DULL, 0xA46DD8844CA63062ULL }, /* XSUM_XXH3_testdata[7449] */ + { 3725, 0x0000000000000000ULL, 0x18F749CBAE11D021ULL }, /* XSUM_XXH3_testdata[7450] */ + { 3725, 0x9E3779B185EBCA8DULL, 0xEA9174E9A43BD9A5ULL }, /* XSUM_XXH3_testdata[7451] */ + { 3726, 0x0000000000000000ULL, 0xBA376D29BF143E24ULL }, /* XSUM_XXH3_testdata[7452] */ + { 3726, 0x9E3779B185EBCA8DULL, 0x02E273037A8F35F0ULL }, /* XSUM_XXH3_testdata[7453] */ + { 3727, 0x0000000000000000ULL, 0x55B8146358325573ULL }, /* XSUM_XXH3_testdata[7454] */ + { 3727, 0x9E3779B185EBCA8DULL, 0x4462E034B0AD298BULL }, /* XSUM_XXH3_testdata[7455] */ + { 3728, 0x0000000000000000ULL, 0x59BB474966976FECULL }, /* XSUM_XXH3_testdata[7456] */ + { 3728, 0x9E3779B185EBCA8DULL, 0x8A40108D3EF3BAFFULL }, /* XSUM_XXH3_testdata[7457] */ + { 3729, 0x0000000000000000ULL, 0xA0D47376DA73CF93ULL }, /* XSUM_XXH3_testdata[7458] */ + { 3729, 0x9E3779B185EBCA8DULL, 0xDC635F4DC0D43A8EULL }, /* XSUM_XXH3_testdata[7459] */ + { 3730, 0x0000000000000000ULL, 0x04BD448733D3769CULL }, /* XSUM_XXH3_testdata[7460] */ + { 3730, 0x9E3779B185EBCA8DULL, 0x8B5411EE4654B2C5ULL }, /* XSUM_XXH3_testdata[7461] */ + { 3731, 0x0000000000000000ULL, 0xC85ECC7AF5D2B2CBULL }, /* XSUM_XXH3_testdata[7462] */ + { 3731, 0x9E3779B185EBCA8DULL, 0xF4834D9116B0DC17ULL }, /* XSUM_XXH3_testdata[7463] */ + { 3732, 0x0000000000000000ULL, 0x32B2C45489FA7153ULL }, /* XSUM_XXH3_testdata[7464] */ + { 3732, 0x9E3779B185EBCA8DULL, 0xE5690B05A6716E8DULL }, /* XSUM_XXH3_testdata[7465] */ + { 3733, 0x0000000000000000ULL, 0x8CC202AF0213DB19ULL }, /* XSUM_XXH3_testdata[7466] */ + { 3733, 0x9E3779B185EBCA8DULL, 0x739E0B6E01D50941ULL }, /* XSUM_XXH3_testdata[7467] */ + { 3734, 0x0000000000000000ULL, 0x614262D97FABE3B1ULL }, /* XSUM_XXH3_testdata[7468] */ + { 3734, 0x9E3779B185EBCA8DULL, 0x9E72B381D4C2B189ULL }, /* XSUM_XXH3_testdata[7469] */ + { 3735, 0x0000000000000000ULL, 0xE5CCCB7DE403691DULL }, /* XSUM_XXH3_testdata[7470] */ + { 3735, 0x9E3779B185EBCA8DULL, 0xAFC0C48AD1328C65ULL }, /* XSUM_XXH3_testdata[7471] */ + { 3736, 0x0000000000000000ULL, 0x5502670C3FB7D016ULL }, /* XSUM_XXH3_testdata[7472] */ + { 3736, 0x9E3779B185EBCA8DULL, 0x350691E72B4DD829ULL }, /* XSUM_XXH3_testdata[7473] */ + { 3737, 0x0000000000000000ULL, 0x1C0D9132913AB65BULL }, /* XSUM_XXH3_testdata[7474] */ + { 3737, 0x9E3779B185EBCA8DULL, 0x691AC974C80C9CB4ULL }, /* XSUM_XXH3_testdata[7475] */ + { 3738, 0x0000000000000000ULL, 0x50928AD862FF5482ULL }, /* XSUM_XXH3_testdata[7476] */ + { 3738, 0x9E3779B185EBCA8DULL, 0x791AB6E4E1D79DA5ULL }, /* XSUM_XXH3_testdata[7477] */ + { 3739, 0x0000000000000000ULL, 0x788A893F3580DBB3ULL }, /* XSUM_XXH3_testdata[7478] */ + { 3739, 0x9E3779B185EBCA8DULL, 0x35A7C64D137ED697ULL }, /* XSUM_XXH3_testdata[7479] */ + { 3740, 0x0000000000000000ULL, 0xEF36F51A70E1176AULL }, /* XSUM_XXH3_testdata[7480] */ + { 3740, 0x9E3779B185EBCA8DULL, 0xD79EB7C11F7D73C7ULL }, /* XSUM_XXH3_testdata[7481] */ + { 3741, 0x0000000000000000ULL, 0x160D545C4F12D175ULL }, /* XSUM_XXH3_testdata[7482] */ + { 3741, 0x9E3779B185EBCA8DULL, 0x23083B142A17BCCCULL }, /* XSUM_XXH3_testdata[7483] */ + { 3742, 0x0000000000000000ULL, 0x048D23A67900441DULL }, /* XSUM_XXH3_testdata[7484] */ + { 3742, 0x9E3779B185EBCA8DULL, 0x94858FFC745EDE56ULL }, /* XSUM_XXH3_testdata[7485] */ + { 3743, 0x0000000000000000ULL, 0x8F8E421BB56A72D7ULL }, /* XSUM_XXH3_testdata[7486] */ + { 3743, 0x9E3779B185EBCA8DULL, 0x211E8D9A2B00DFBEULL }, /* XSUM_XXH3_testdata[7487] */ + { 3744, 0x0000000000000000ULL, 0x6FDA6CC50FFF775EULL }, /* XSUM_XXH3_testdata[7488] */ + { 3744, 0x9E3779B185EBCA8DULL, 0x6B9BB526E508A2A4ULL }, /* XSUM_XXH3_testdata[7489] */ + { 3745, 0x0000000000000000ULL, 0xCBE92041CADA6769ULL }, /* XSUM_XXH3_testdata[7490] */ + { 3745, 0x9E3779B185EBCA8DULL, 0x7A374D815AD594DBULL }, /* XSUM_XXH3_testdata[7491] */ + { 3746, 0x0000000000000000ULL, 0x196895C9869F0984ULL }, /* XSUM_XXH3_testdata[7492] */ + { 3746, 0x9E3779B185EBCA8DULL, 0x8954653330AA1AEDULL }, /* XSUM_XXH3_testdata[7493] */ + { 3747, 0x0000000000000000ULL, 0x21DAA55D79F707B1ULL }, /* XSUM_XXH3_testdata[7494] */ + { 3747, 0x9E3779B185EBCA8DULL, 0x4066CC6D67A45999ULL }, /* XSUM_XXH3_testdata[7495] */ + { 3748, 0x0000000000000000ULL, 0x216E93059BA46330ULL }, /* XSUM_XXH3_testdata[7496] */ + { 3748, 0x9E3779B185EBCA8DULL, 0xA03B92EF3F4FCB50ULL }, /* XSUM_XXH3_testdata[7497] */ + { 3749, 0x0000000000000000ULL, 0x17CC59CD036A9607ULL }, /* XSUM_XXH3_testdata[7498] */ + { 3749, 0x9E3779B185EBCA8DULL, 0xC0F9FF0DD0F46AE4ULL }, /* XSUM_XXH3_testdata[7499] */ + { 3750, 0x0000000000000000ULL, 0xE386F95CAF4835E8ULL }, /* XSUM_XXH3_testdata[7500] */ + { 3750, 0x9E3779B185EBCA8DULL, 0xBA62D59E44DCBFA7ULL }, /* XSUM_XXH3_testdata[7501] */ + { 3751, 0x0000000000000000ULL, 0xEF18B53F73CD64B5ULL }, /* XSUM_XXH3_testdata[7502] */ + { 3751, 0x9E3779B185EBCA8DULL, 0xE9E2FDDFF4EB6712ULL }, /* XSUM_XXH3_testdata[7503] */ + { 3752, 0x0000000000000000ULL, 0x5E536EED5442A058ULL }, /* XSUM_XXH3_testdata[7504] */ + { 3752, 0x9E3779B185EBCA8DULL, 0xD56F640E0C162CF7ULL }, /* XSUM_XXH3_testdata[7505] */ + { 3753, 0x0000000000000000ULL, 0x74EF504AF879B808ULL }, /* XSUM_XXH3_testdata[7506] */ + { 3753, 0x9E3779B185EBCA8DULL, 0x709127F88C3DF13CULL }, /* XSUM_XXH3_testdata[7507] */ + { 3754, 0x0000000000000000ULL, 0x31C9008085741884ULL }, /* XSUM_XXH3_testdata[7508] */ + { 3754, 0x9E3779B185EBCA8DULL, 0x93365D974F825F2FULL }, /* XSUM_XXH3_testdata[7509] */ + { 3755, 0x0000000000000000ULL, 0xF31CDEF874993121ULL }, /* XSUM_XXH3_testdata[7510] */ + { 3755, 0x9E3779B185EBCA8DULL, 0x3A5237AB9C4B9DABULL }, /* XSUM_XXH3_testdata[7511] */ + { 3756, 0x0000000000000000ULL, 0x875A6A708A10D7A5ULL }, /* XSUM_XXH3_testdata[7512] */ + { 3756, 0x9E3779B185EBCA8DULL, 0x647D099636D67886ULL }, /* XSUM_XXH3_testdata[7513] */ + { 3757, 0x0000000000000000ULL, 0xDA5F418C0C48B9F3ULL }, /* XSUM_XXH3_testdata[7514] */ + { 3757, 0x9E3779B185EBCA8DULL, 0xDD5E0A89173AC558ULL }, /* XSUM_XXH3_testdata[7515] */ + { 3758, 0x0000000000000000ULL, 0xE4FD66CE689C4C38ULL }, /* XSUM_XXH3_testdata[7516] */ + { 3758, 0x9E3779B185EBCA8DULL, 0x6B1D2773AB1C257EULL }, /* XSUM_XXH3_testdata[7517] */ + { 3759, 0x0000000000000000ULL, 0xA33D54DF0582FDD3ULL }, /* XSUM_XXH3_testdata[7518] */ + { 3759, 0x9E3779B185EBCA8DULL, 0xBD4FD631EF67C7ACULL }, /* XSUM_XXH3_testdata[7519] */ + { 3760, 0x0000000000000000ULL, 0xCE4B2BC11D0DD601ULL }, /* XSUM_XXH3_testdata[7520] */ + { 3760, 0x9E3779B185EBCA8DULL, 0xE6D4C63D68AFE2E4ULL }, /* XSUM_XXH3_testdata[7521] */ + { 3761, 0x0000000000000000ULL, 0xF3ACB5DDFDC8EC24ULL }, /* XSUM_XXH3_testdata[7522] */ + { 3761, 0x9E3779B185EBCA8DULL, 0xC44120D54A8C985BULL }, /* XSUM_XXH3_testdata[7523] */ + { 3762, 0x0000000000000000ULL, 0xE1DBF7FFD31762EDULL }, /* XSUM_XXH3_testdata[7524] */ + { 3762, 0x9E3779B185EBCA8DULL, 0xDE71A2766082AF5CULL }, /* XSUM_XXH3_testdata[7525] */ + { 3763, 0x0000000000000000ULL, 0x99D0CA424979CFC4ULL }, /* XSUM_XXH3_testdata[7526] */ + { 3763, 0x9E3779B185EBCA8DULL, 0x77DE869DB10834A6ULL }, /* XSUM_XXH3_testdata[7527] */ + { 3764, 0x0000000000000000ULL, 0x975000D6E24B65AAULL }, /* XSUM_XXH3_testdata[7528] */ + { 3764, 0x9E3779B185EBCA8DULL, 0x27C414411195A2B6ULL }, /* XSUM_XXH3_testdata[7529] */ + { 3765, 0x0000000000000000ULL, 0xA54B018E1EA523E1ULL }, /* XSUM_XXH3_testdata[7530] */ + { 3765, 0x9E3779B185EBCA8DULL, 0x9A3775C8860D1647ULL }, /* XSUM_XXH3_testdata[7531] */ + { 3766, 0x0000000000000000ULL, 0xF6CC319B0CE415ABULL }, /* XSUM_XXH3_testdata[7532] */ + { 3766, 0x9E3779B185EBCA8DULL, 0x43D40AFB31D7B9A4ULL }, /* XSUM_XXH3_testdata[7533] */ + { 3767, 0x0000000000000000ULL, 0xC92638F48F4B4B4AULL }, /* XSUM_XXH3_testdata[7534] */ + { 3767, 0x9E3779B185EBCA8DULL, 0xC684479AE4E462D9ULL }, /* XSUM_XXH3_testdata[7535] */ + { 3768, 0x0000000000000000ULL, 0xFAF863BB0FAB5D63ULL }, /* XSUM_XXH3_testdata[7536] */ + { 3768, 0x9E3779B185EBCA8DULL, 0x531FEDD7E49D2C4BULL }, /* XSUM_XXH3_testdata[7537] */ + { 3769, 0x0000000000000000ULL, 0x936B400D1810CBF7ULL }, /* XSUM_XXH3_testdata[7538] */ + { 3769, 0x9E3779B185EBCA8DULL, 0x9489255C446C1ED3ULL }, /* XSUM_XXH3_testdata[7539] */ + { 3770, 0x0000000000000000ULL, 0x36C6AE290EEB1E47ULL }, /* XSUM_XXH3_testdata[7540] */ + { 3770, 0x9E3779B185EBCA8DULL, 0xC90A24A12D3173B1ULL }, /* XSUM_XXH3_testdata[7541] */ + { 3771, 0x0000000000000000ULL, 0xBD2E90F967E0ECF0ULL }, /* XSUM_XXH3_testdata[7542] */ + { 3771, 0x9E3779B185EBCA8DULL, 0xEEBCE2936136164DULL }, /* XSUM_XXH3_testdata[7543] */ + { 3772, 0x0000000000000000ULL, 0xE2D79A3537258580ULL }, /* XSUM_XXH3_testdata[7544] */ + { 3772, 0x9E3779B185EBCA8DULL, 0xB82F0C39B6C843BAULL }, /* XSUM_XXH3_testdata[7545] */ + { 3773, 0x0000000000000000ULL, 0x62065EAA58ACED1FULL }, /* XSUM_XXH3_testdata[7546] */ + { 3773, 0x9E3779B185EBCA8DULL, 0x7E043B40F0E105EDULL }, /* XSUM_XXH3_testdata[7547] */ + { 3774, 0x0000000000000000ULL, 0x4CF30A36BCB03B2EULL }, /* XSUM_XXH3_testdata[7548] */ + { 3774, 0x9E3779B185EBCA8DULL, 0x0113534F920D555BULL }, /* XSUM_XXH3_testdata[7549] */ + { 3775, 0x0000000000000000ULL, 0x6100353633C7FE15ULL }, /* XSUM_XXH3_testdata[7550] */ + { 3775, 0x9E3779B185EBCA8DULL, 0xC6BF443448301C81ULL }, /* XSUM_XXH3_testdata[7551] */ + { 3776, 0x0000000000000000ULL, 0xE8420EE21D49B572ULL }, /* XSUM_XXH3_testdata[7552] */ + { 3776, 0x9E3779B185EBCA8DULL, 0xE3B0A466F0E12001ULL }, /* XSUM_XXH3_testdata[7553] */ + { 3777, 0x0000000000000000ULL, 0xAFAA257A326E94E4ULL }, /* XSUM_XXH3_testdata[7554] */ + { 3777, 0x9E3779B185EBCA8DULL, 0xFD746ED0FC69F1E7ULL }, /* XSUM_XXH3_testdata[7555] */ + { 3778, 0x0000000000000000ULL, 0xE9561BBFF4B01599ULL }, /* XSUM_XXH3_testdata[7556] */ + { 3778, 0x9E3779B185EBCA8DULL, 0xBE1594C86FAC1BF5ULL }, /* XSUM_XXH3_testdata[7557] */ + { 3779, 0x0000000000000000ULL, 0x7E8AB13F37EE7041ULL }, /* XSUM_XXH3_testdata[7558] */ + { 3779, 0x9E3779B185EBCA8DULL, 0xD98F596960FACA4DULL }, /* XSUM_XXH3_testdata[7559] */ + { 3780, 0x0000000000000000ULL, 0xA6BB97D10685E042ULL }, /* XSUM_XXH3_testdata[7560] */ + { 3780, 0x9E3779B185EBCA8DULL, 0x77C69B6342E274D4ULL }, /* XSUM_XXH3_testdata[7561] */ + { 3781, 0x0000000000000000ULL, 0xB82179D7EE7EAF5BULL }, /* XSUM_XXH3_testdata[7562] */ + { 3781, 0x9E3779B185EBCA8DULL, 0xF87D2038BD1BC882ULL }, /* XSUM_XXH3_testdata[7563] */ + { 3782, 0x0000000000000000ULL, 0x709C23CE41B289ACULL }, /* XSUM_XXH3_testdata[7564] */ + { 3782, 0x9E3779B185EBCA8DULL, 0xA6602D9C1A23DC28ULL }, /* XSUM_XXH3_testdata[7565] */ + { 3783, 0x0000000000000000ULL, 0x736F72A6C444DA78ULL }, /* XSUM_XXH3_testdata[7566] */ + { 3783, 0x9E3779B185EBCA8DULL, 0x1CB370300838B920ULL }, /* XSUM_XXH3_testdata[7567] */ + { 3784, 0x0000000000000000ULL, 0x0F0D57103217BA27ULL }, /* XSUM_XXH3_testdata[7568] */ + { 3784, 0x9E3779B185EBCA8DULL, 0x64DA519F00FDA8D4ULL }, /* XSUM_XXH3_testdata[7569] */ + { 3785, 0x0000000000000000ULL, 0x4FEE2E01ADA875C5ULL }, /* XSUM_XXH3_testdata[7570] */ + { 3785, 0x9E3779B185EBCA8DULL, 0x4BD896C9647748E1ULL }, /* XSUM_XXH3_testdata[7571] */ + { 3786, 0x0000000000000000ULL, 0x0B815A4597CC8A93ULL }, /* XSUM_XXH3_testdata[7572] */ + { 3786, 0x9E3779B185EBCA8DULL, 0x179708F028180C05ULL }, /* XSUM_XXH3_testdata[7573] */ + { 3787, 0x0000000000000000ULL, 0x5F3AC5FDB80B57A7ULL }, /* XSUM_XXH3_testdata[7574] */ + { 3787, 0x9E3779B185EBCA8DULL, 0x37CF4C5F23A586CAULL }, /* XSUM_XXH3_testdata[7575] */ + { 3788, 0x0000000000000000ULL, 0x1B1627FE3E596885ULL }, /* XSUM_XXH3_testdata[7576] */ + { 3788, 0x9E3779B185EBCA8DULL, 0xBD6F7FC73C8E3F7EULL }, /* XSUM_XXH3_testdata[7577] */ + { 3789, 0x0000000000000000ULL, 0x5DE097996C083E3FULL }, /* XSUM_XXH3_testdata[7578] */ + { 3789, 0x9E3779B185EBCA8DULL, 0x06B38612D639C2E8ULL }, /* XSUM_XXH3_testdata[7579] */ + { 3790, 0x0000000000000000ULL, 0x959D554BBC464D43ULL }, /* XSUM_XXH3_testdata[7580] */ + { 3790, 0x9E3779B185EBCA8DULL, 0xE3DB7878B20B2A65ULL }, /* XSUM_XXH3_testdata[7581] */ + { 3791, 0x0000000000000000ULL, 0x287E3D544D49AD56ULL }, /* XSUM_XXH3_testdata[7582] */ + { 3791, 0x9E3779B185EBCA8DULL, 0x340C1FE8159512DCULL }, /* XSUM_XXH3_testdata[7583] */ + { 3792, 0x0000000000000000ULL, 0xFCDCF7E2D3CED00EULL }, /* XSUM_XXH3_testdata[7584] */ + { 3792, 0x9E3779B185EBCA8DULL, 0xF43E42D4F8E31503ULL }, /* XSUM_XXH3_testdata[7585] */ + { 3793, 0x0000000000000000ULL, 0x96CF0C1327AD3362ULL }, /* XSUM_XXH3_testdata[7586] */ + { 3793, 0x9E3779B185EBCA8DULL, 0x45F243F3B82BE91AULL }, /* XSUM_XXH3_testdata[7587] */ + { 3794, 0x0000000000000000ULL, 0x3B565B2DE1CBABB5ULL }, /* XSUM_XXH3_testdata[7588] */ + { 3794, 0x9E3779B185EBCA8DULL, 0x0BCAD4FB08542609ULL }, /* XSUM_XXH3_testdata[7589] */ + { 3795, 0x0000000000000000ULL, 0xF4ED3DE0EB3AD21FULL }, /* XSUM_XXH3_testdata[7590] */ + { 3795, 0x9E3779B185EBCA8DULL, 0x00E30C8255DB84C8ULL }, /* XSUM_XXH3_testdata[7591] */ + { 3796, 0x0000000000000000ULL, 0x218713C9DF900B36ULL }, /* XSUM_XXH3_testdata[7592] */ + { 3796, 0x9E3779B185EBCA8DULL, 0xE0E1C94010401A39ULL }, /* XSUM_XXH3_testdata[7593] */ + { 3797, 0x0000000000000000ULL, 0x80041555230A1072ULL }, /* XSUM_XXH3_testdata[7594] */ + { 3797, 0x9E3779B185EBCA8DULL, 0x0D49454DCCCE0D97ULL }, /* XSUM_XXH3_testdata[7595] */ + { 3798, 0x0000000000000000ULL, 0x9DBF4F510B64A4B9ULL }, /* XSUM_XXH3_testdata[7596] */ + { 3798, 0x9E3779B185EBCA8DULL, 0x80D908F2C666246CULL }, /* XSUM_XXH3_testdata[7597] */ + { 3799, 0x0000000000000000ULL, 0xCD5831EB3FAC6C57ULL }, /* XSUM_XXH3_testdata[7598] */ + { 3799, 0x9E3779B185EBCA8DULL, 0x8F65710EDCA4E40AULL }, /* XSUM_XXH3_testdata[7599] */ + { 3800, 0x0000000000000000ULL, 0x55319685EA231551ULL }, /* XSUM_XXH3_testdata[7600] */ + { 3800, 0x9E3779B185EBCA8DULL, 0x784A06EBD5A5170CULL }, /* XSUM_XXH3_testdata[7601] */ + { 3801, 0x0000000000000000ULL, 0x50DE87E1C2576530ULL }, /* XSUM_XXH3_testdata[7602] */ + { 3801, 0x9E3779B185EBCA8DULL, 0xDA8BA623A7F35CDBULL }, /* XSUM_XXH3_testdata[7603] */ + { 3802, 0x0000000000000000ULL, 0xB74AA3DC57902ECFULL }, /* XSUM_XXH3_testdata[7604] */ + { 3802, 0x9E3779B185EBCA8DULL, 0xBCA030E1B7BB43B0ULL }, /* XSUM_XXH3_testdata[7605] */ + { 3803, 0x0000000000000000ULL, 0xEB098D224002D7F8ULL }, /* XSUM_XXH3_testdata[7606] */ + { 3803, 0x9E3779B185EBCA8DULL, 0x6156A394E2C83E1AULL }, /* XSUM_XXH3_testdata[7607] */ + { 3804, 0x0000000000000000ULL, 0xF3F724BAB2807C29ULL }, /* XSUM_XXH3_testdata[7608] */ + { 3804, 0x9E3779B185EBCA8DULL, 0xAA319462EB330908ULL }, /* XSUM_XXH3_testdata[7609] */ + { 3805, 0x0000000000000000ULL, 0x08BB557991858B15ULL }, /* XSUM_XXH3_testdata[7610] */ + { 3805, 0x9E3779B185EBCA8DULL, 0x27E91D67BEDAB3D8ULL }, /* XSUM_XXH3_testdata[7611] */ + { 3806, 0x0000000000000000ULL, 0xAC1E0A06014917C1ULL }, /* XSUM_XXH3_testdata[7612] */ + { 3806, 0x9E3779B185EBCA8DULL, 0x1E20BBC3E6CBBA6AULL }, /* XSUM_XXH3_testdata[7613] */ + { 3807, 0x0000000000000000ULL, 0x31B3D51B38C6F040ULL }, /* XSUM_XXH3_testdata[7614] */ + { 3807, 0x9E3779B185EBCA8DULL, 0x66760B07932674DBULL }, /* XSUM_XXH3_testdata[7615] */ + { 3808, 0x0000000000000000ULL, 0x83C42AA57DB30E65ULL }, /* XSUM_XXH3_testdata[7616] */ + { 3808, 0x9E3779B185EBCA8DULL, 0xADB112A57B36D6E0ULL }, /* XSUM_XXH3_testdata[7617] */ + { 3809, 0x0000000000000000ULL, 0xE7682750E2D6BC5AULL }, /* XSUM_XXH3_testdata[7618] */ + { 3809, 0x9E3779B185EBCA8DULL, 0x4E16116791A49006ULL }, /* XSUM_XXH3_testdata[7619] */ + { 3810, 0x0000000000000000ULL, 0xE06D01D13F1FA55AULL }, /* XSUM_XXH3_testdata[7620] */ + { 3810, 0x9E3779B185EBCA8DULL, 0x8BD54EB7AB491CCEULL }, /* XSUM_XXH3_testdata[7621] */ + { 3811, 0x0000000000000000ULL, 0x3E830041BB06B48DULL }, /* XSUM_XXH3_testdata[7622] */ + { 3811, 0x9E3779B185EBCA8DULL, 0x40119B18809725E2ULL }, /* XSUM_XXH3_testdata[7623] */ + { 3812, 0x0000000000000000ULL, 0x7CF9C48F6C725792ULL }, /* XSUM_XXH3_testdata[7624] */ + { 3812, 0x9E3779B185EBCA8DULL, 0xAB4CD2FE7D072F0BULL }, /* XSUM_XXH3_testdata[7625] */ + { 3813, 0x0000000000000000ULL, 0xF43595034D2753A3ULL }, /* XSUM_XXH3_testdata[7626] */ + { 3813, 0x9E3779B185EBCA8DULL, 0xFFC30A49AD2CF413ULL }, /* XSUM_XXH3_testdata[7627] */ + { 3814, 0x0000000000000000ULL, 0x0C6760FA6000CB2EULL }, /* XSUM_XXH3_testdata[7628] */ + { 3814, 0x9E3779B185EBCA8DULL, 0x75E30859FAAB68C3ULL }, /* XSUM_XXH3_testdata[7629] */ + { 3815, 0x0000000000000000ULL, 0x05CCA8A1304D5869ULL }, /* XSUM_XXH3_testdata[7630] */ + { 3815, 0x9E3779B185EBCA8DULL, 0x982E92B57F6AB3CFULL }, /* XSUM_XXH3_testdata[7631] */ + { 3816, 0x0000000000000000ULL, 0x04741578A20F332AULL }, /* XSUM_XXH3_testdata[7632] */ + { 3816, 0x9E3779B185EBCA8DULL, 0x524404074ACDC1F9ULL }, /* XSUM_XXH3_testdata[7633] */ + { 3817, 0x0000000000000000ULL, 0x64B6259CEF4C025DULL }, /* XSUM_XXH3_testdata[7634] */ + { 3817, 0x9E3779B185EBCA8DULL, 0x95A71E8202E4ED0FULL }, /* XSUM_XXH3_testdata[7635] */ + { 3818, 0x0000000000000000ULL, 0x9EAC34253F826437ULL }, /* XSUM_XXH3_testdata[7636] */ + { 3818, 0x9E3779B185EBCA8DULL, 0x63154BA10CE16DDEULL }, /* XSUM_XXH3_testdata[7637] */ + { 3819, 0x0000000000000000ULL, 0x9394E2746D5D50FDULL }, /* XSUM_XXH3_testdata[7638] */ + { 3819, 0x9E3779B185EBCA8DULL, 0x26657E7C4D0966AFULL }, /* XSUM_XXH3_testdata[7639] */ + { 3820, 0x0000000000000000ULL, 0xF49F95900FF0F64AULL }, /* XSUM_XXH3_testdata[7640] */ + { 3820, 0x9E3779B185EBCA8DULL, 0x50DE1AF5E0A1786BULL }, /* XSUM_XXH3_testdata[7641] */ + { 3821, 0x0000000000000000ULL, 0xA7C52B25579548CFULL }, /* XSUM_XXH3_testdata[7642] */ + { 3821, 0x9E3779B185EBCA8DULL, 0x803445AC31701E5BULL }, /* XSUM_XXH3_testdata[7643] */ + { 3822, 0x0000000000000000ULL, 0x129E4B9E7B9C4CC6ULL }, /* XSUM_XXH3_testdata[7644] */ + { 3822, 0x9E3779B185EBCA8DULL, 0xDD63AE21F81D9051ULL }, /* XSUM_XXH3_testdata[7645] */ + { 3823, 0x0000000000000000ULL, 0xA6B93533FCF6680FULL }, /* XSUM_XXH3_testdata[7646] */ + { 3823, 0x9E3779B185EBCA8DULL, 0x238055088B737C05ULL }, /* XSUM_XXH3_testdata[7647] */ + { 3824, 0x0000000000000000ULL, 0x15EEECA90C7D8E6CULL }, /* XSUM_XXH3_testdata[7648] */ + { 3824, 0x9E3779B185EBCA8DULL, 0x276385508D5FE2C9ULL }, /* XSUM_XXH3_testdata[7649] */ + { 3825, 0x0000000000000000ULL, 0x5B97424C3116BBF8ULL }, /* XSUM_XXH3_testdata[7650] */ + { 3825, 0x9E3779B185EBCA8DULL, 0xF9E852C079609234ULL }, /* XSUM_XXH3_testdata[7651] */ + { 3826, 0x0000000000000000ULL, 0x1E218240A9F6FFBFULL }, /* XSUM_XXH3_testdata[7652] */ + { 3826, 0x9E3779B185EBCA8DULL, 0xEB605BFADC7BAD5EULL }, /* XSUM_XXH3_testdata[7653] */ + { 3827, 0x0000000000000000ULL, 0x602CF49EB3FBEFB2ULL }, /* XSUM_XXH3_testdata[7654] */ + { 3827, 0x9E3779B185EBCA8DULL, 0xBEA5339614684102ULL }, /* XSUM_XXH3_testdata[7655] */ + { 3828, 0x0000000000000000ULL, 0x170EE6A51721F704ULL }, /* XSUM_XXH3_testdata[7656] */ + { 3828, 0x9E3779B185EBCA8DULL, 0x8521AC2AEDFAF055ULL }, /* XSUM_XXH3_testdata[7657] */ + { 3829, 0x0000000000000000ULL, 0x5DBF5C8A8B7A6394ULL }, /* XSUM_XXH3_testdata[7658] */ + { 3829, 0x9E3779B185EBCA8DULL, 0x41BD4051EA4625BCULL }, /* XSUM_XXH3_testdata[7659] */ + { 3830, 0x0000000000000000ULL, 0xBCD0DD9C11D29C74ULL }, /* XSUM_XXH3_testdata[7660] */ + { 3830, 0x9E3779B185EBCA8DULL, 0x2B2C509F0EEBAEEDULL }, /* XSUM_XXH3_testdata[7661] */ + { 3831, 0x0000000000000000ULL, 0x8E7D6D42DE080846ULL }, /* XSUM_XXH3_testdata[7662] */ + { 3831, 0x9E3779B185EBCA8DULL, 0x381675387F62A07EULL }, /* XSUM_XXH3_testdata[7663] */ + { 3832, 0x0000000000000000ULL, 0x427AEEED5B81FF59ULL }, /* XSUM_XXH3_testdata[7664] */ + { 3832, 0x9E3779B185EBCA8DULL, 0xD62C95F791FD61D5ULL }, /* XSUM_XXH3_testdata[7665] */ + { 3833, 0x0000000000000000ULL, 0x237BC2347EAC4315ULL }, /* XSUM_XXH3_testdata[7666] */ + { 3833, 0x9E3779B185EBCA8DULL, 0x24206F13857AB874ULL }, /* XSUM_XXH3_testdata[7667] */ + { 3834, 0x0000000000000000ULL, 0x52B2A1456A279CA8ULL }, /* XSUM_XXH3_testdata[7668] */ + { 3834, 0x9E3779B185EBCA8DULL, 0xA4EAB214A87374DCULL }, /* XSUM_XXH3_testdata[7669] */ + { 3835, 0x0000000000000000ULL, 0x509E1010C276C143ULL }, /* XSUM_XXH3_testdata[7670] */ + { 3835, 0x9E3779B185EBCA8DULL, 0x0983CC6F9B4AAACCULL }, /* XSUM_XXH3_testdata[7671] */ + { 3836, 0x0000000000000000ULL, 0xCC438962ABBABA3CULL }, /* XSUM_XXH3_testdata[7672] */ + { 3836, 0x9E3779B185EBCA8DULL, 0x8251BE8005D1C985ULL }, /* XSUM_XXH3_testdata[7673] */ + { 3837, 0x0000000000000000ULL, 0x92910933B68434EEULL }, /* XSUM_XXH3_testdata[7674] */ + { 3837, 0x9E3779B185EBCA8DULL, 0xC47EED770A2B1125ULL }, /* XSUM_XXH3_testdata[7675] */ + { 3838, 0x0000000000000000ULL, 0x4597957723960669ULL }, /* XSUM_XXH3_testdata[7676] */ + { 3838, 0x9E3779B185EBCA8DULL, 0x0409143A4FBCF14EULL }, /* XSUM_XXH3_testdata[7677] */ + { 3839, 0x0000000000000000ULL, 0x43E534929E376558ULL }, /* XSUM_XXH3_testdata[7678] */ + { 3839, 0x9E3779B185EBCA8DULL, 0xFC440769C76D630FULL }, /* XSUM_XXH3_testdata[7679] */ + { 3840, 0x0000000000000000ULL, 0xEC86F51892999868ULL }, /* XSUM_XXH3_testdata[7680] */ + { 3840, 0x9E3779B185EBCA8DULL, 0xF59832040C6E571AULL }, /* XSUM_XXH3_testdata[7681] */ + { 3841, 0x0000000000000000ULL, 0xA84A2444C316F722ULL }, /* XSUM_XXH3_testdata[7682] */ + { 3841, 0x9E3779B185EBCA8DULL, 0xAE2D8BE6079C85CAULL }, /* XSUM_XXH3_testdata[7683] */ + { 3842, 0x0000000000000000ULL, 0x62E5665E92C13BA8ULL }, /* XSUM_XXH3_testdata[7684] */ + { 3842, 0x9E3779B185EBCA8DULL, 0x755E4A7DE36EC52BULL }, /* XSUM_XXH3_testdata[7685] */ + { 3843, 0x0000000000000000ULL, 0xBE710E80296B648AULL }, /* XSUM_XXH3_testdata[7686] */ + { 3843, 0x9E3779B185EBCA8DULL, 0x3EC0D18D655F9064ULL }, /* XSUM_XXH3_testdata[7687] */ + { 3844, 0x0000000000000000ULL, 0x503F019B76F1B450ULL }, /* XSUM_XXH3_testdata[7688] */ + { 3844, 0x9E3779B185EBCA8DULL, 0xC8657E063E5D093AULL }, /* XSUM_XXH3_testdata[7689] */ + { 3845, 0x0000000000000000ULL, 0xA308A478CCBF13A7ULL }, /* XSUM_XXH3_testdata[7690] */ + { 3845, 0x9E3779B185EBCA8DULL, 0x25D1CDAD516052B9ULL }, /* XSUM_XXH3_testdata[7691] */ + { 3846, 0x0000000000000000ULL, 0x0E921949350C1841ULL }, /* XSUM_XXH3_testdata[7692] */ + { 3846, 0x9E3779B185EBCA8DULL, 0xCCFCD31C9CB44682ULL }, /* XSUM_XXH3_testdata[7693] */ + { 3847, 0x0000000000000000ULL, 0x383FE3A038136BC9ULL }, /* XSUM_XXH3_testdata[7694] */ + { 3847, 0x9E3779B185EBCA8DULL, 0x7FB2EE65825CB40BULL }, /* XSUM_XXH3_testdata[7695] */ + { 3848, 0x0000000000000000ULL, 0x234261DCB7E7BD4DULL }, /* XSUM_XXH3_testdata[7696] */ + { 3848, 0x9E3779B185EBCA8DULL, 0x19102C68BB066747ULL }, /* XSUM_XXH3_testdata[7697] */ + { 3849, 0x0000000000000000ULL, 0x8D2300E3BC207CB3ULL }, /* XSUM_XXH3_testdata[7698] */ + { 3849, 0x9E3779B185EBCA8DULL, 0x36DC82A6B9B2642AULL }, /* XSUM_XXH3_testdata[7699] */ + { 3850, 0x0000000000000000ULL, 0x8D186332CB70251CULL }, /* XSUM_XXH3_testdata[7700] */ + { 3850, 0x9E3779B185EBCA8DULL, 0x3E65E06E355242C0ULL }, /* XSUM_XXH3_testdata[7701] */ + { 3851, 0x0000000000000000ULL, 0x53204CE4BC1D9889ULL }, /* XSUM_XXH3_testdata[7702] */ + { 3851, 0x9E3779B185EBCA8DULL, 0xAA81059143B50B2FULL }, /* XSUM_XXH3_testdata[7703] */ + { 3852, 0x0000000000000000ULL, 0x4DAB8DEE06B52323ULL }, /* XSUM_XXH3_testdata[7704] */ + { 3852, 0x9E3779B185EBCA8DULL, 0x31B0BBA5A6B97F98ULL }, /* XSUM_XXH3_testdata[7705] */ + { 3853, 0x0000000000000000ULL, 0xC7FFE33A5C9C65ABULL }, /* XSUM_XXH3_testdata[7706] */ + { 3853, 0x9E3779B185EBCA8DULL, 0xA0D8601BA5E49E14ULL }, /* XSUM_XXH3_testdata[7707] */ + { 3854, 0x0000000000000000ULL, 0xAF15FAD96D19C7DDULL }, /* XSUM_XXH3_testdata[7708] */ + { 3854, 0x9E3779B185EBCA8DULL, 0x83D33F7DA75CEF8CULL }, /* XSUM_XXH3_testdata[7709] */ + { 3855, 0x0000000000000000ULL, 0x1B9BFCF0EA36721EULL }, /* XSUM_XXH3_testdata[7710] */ + { 3855, 0x9E3779B185EBCA8DULL, 0xE4EF08783106A26BULL }, /* XSUM_XXH3_testdata[7711] */ + { 3856, 0x0000000000000000ULL, 0x6AC4E1682A031581ULL }, /* XSUM_XXH3_testdata[7712] */ + { 3856, 0x9E3779B185EBCA8DULL, 0x71E05AA4C1142514ULL }, /* XSUM_XXH3_testdata[7713] */ + { 3857, 0x0000000000000000ULL, 0xD2C7E3B7B8F49DEEULL }, /* XSUM_XXH3_testdata[7714] */ + { 3857, 0x9E3779B185EBCA8DULL, 0xA71331C8A5754119ULL }, /* XSUM_XXH3_testdata[7715] */ + { 3858, 0x0000000000000000ULL, 0x7B3BABB696208617ULL }, /* XSUM_XXH3_testdata[7716] */ + { 3858, 0x9E3779B185EBCA8DULL, 0x4A1B9140ECAC425BULL }, /* XSUM_XXH3_testdata[7717] */ + { 3859, 0x0000000000000000ULL, 0xBA380F059564043FULL }, /* XSUM_XXH3_testdata[7718] */ + { 3859, 0x9E3779B185EBCA8DULL, 0x494FD55DC8543FF6ULL }, /* XSUM_XXH3_testdata[7719] */ + { 3860, 0x0000000000000000ULL, 0x045A951633C1CDF2ULL }, /* XSUM_XXH3_testdata[7720] */ + { 3860, 0x9E3779B185EBCA8DULL, 0x10AD411F18864D72ULL }, /* XSUM_XXH3_testdata[7721] */ + { 3861, 0x0000000000000000ULL, 0x2F50A14FCDC278B5ULL }, /* XSUM_XXH3_testdata[7722] */ + { 3861, 0x9E3779B185EBCA8DULL, 0x6B1FD754B3F65F10ULL }, /* XSUM_XXH3_testdata[7723] */ + { 3862, 0x0000000000000000ULL, 0x504228ACB96CBB3BULL }, /* XSUM_XXH3_testdata[7724] */ + { 3862, 0x9E3779B185EBCA8DULL, 0xD0D7CED9AD49283FULL }, /* XSUM_XXH3_testdata[7725] */ + { 3863, 0x0000000000000000ULL, 0xA57C24978D1C0DF7ULL }, /* XSUM_XXH3_testdata[7726] */ + { 3863, 0x9E3779B185EBCA8DULL, 0x1F0092DE5DE373DDULL }, /* XSUM_XXH3_testdata[7727] */ + { 3864, 0x0000000000000000ULL, 0x461A5717BB985B4DULL }, /* XSUM_XXH3_testdata[7728] */ + { 3864, 0x9E3779B185EBCA8DULL, 0xD190B446241F3B38ULL }, /* XSUM_XXH3_testdata[7729] */ + { 3865, 0x0000000000000000ULL, 0x6DC0045A88E940B6ULL }, /* XSUM_XXH3_testdata[7730] */ + { 3865, 0x9E3779B185EBCA8DULL, 0xD57AEE654F6EB1BFULL }, /* XSUM_XXH3_testdata[7731] */ + { 3866, 0x0000000000000000ULL, 0xEFE0DF87729BD807ULL }, /* XSUM_XXH3_testdata[7732] */ + { 3866, 0x9E3779B185EBCA8DULL, 0xAF71173D60491A3CULL }, /* XSUM_XXH3_testdata[7733] */ + { 3867, 0x0000000000000000ULL, 0xB3219BCAA7B285CFULL }, /* XSUM_XXH3_testdata[7734] */ + { 3867, 0x9E3779B185EBCA8DULL, 0xADDE5EDD388DC62CULL }, /* XSUM_XXH3_testdata[7735] */ + { 3868, 0x0000000000000000ULL, 0x9B933F677C078864ULL }, /* XSUM_XXH3_testdata[7736] */ + { 3868, 0x9E3779B185EBCA8DULL, 0x07D9DBB0DC842CCBULL }, /* XSUM_XXH3_testdata[7737] */ + { 3869, 0x0000000000000000ULL, 0x2D58E9727B802A55ULL }, /* XSUM_XXH3_testdata[7738] */ + { 3869, 0x9E3779B185EBCA8DULL, 0x1A5D50C3938F2419ULL }, /* XSUM_XXH3_testdata[7739] */ + { 3870, 0x0000000000000000ULL, 0xB3C17DD1E50D455EULL }, /* XSUM_XXH3_testdata[7740] */ + { 3870, 0x9E3779B185EBCA8DULL, 0x8471229D76103349ULL }, /* XSUM_XXH3_testdata[7741] */ + { 3871, 0x0000000000000000ULL, 0x5C174EC1D16D67FEULL }, /* XSUM_XXH3_testdata[7742] */ + { 3871, 0x9E3779B185EBCA8DULL, 0x82C201E346AB9BA7ULL }, /* XSUM_XXH3_testdata[7743] */ + { 3872, 0x0000000000000000ULL, 0xE0DD0C13C002BCE5ULL }, /* XSUM_XXH3_testdata[7744] */ + { 3872, 0x9E3779B185EBCA8DULL, 0xC4233EEE0E37A52BULL }, /* XSUM_XXH3_testdata[7745] */ + { 3873, 0x0000000000000000ULL, 0x8A696B168B580A84ULL }, /* XSUM_XXH3_testdata[7746] */ + { 3873, 0x9E3779B185EBCA8DULL, 0x821158749EF3576EULL }, /* XSUM_XXH3_testdata[7747] */ + { 3874, 0x0000000000000000ULL, 0xDFEBD1A1913389C2ULL }, /* XSUM_XXH3_testdata[7748] */ + { 3874, 0x9E3779B185EBCA8DULL, 0x0F50D14692814C60ULL }, /* XSUM_XXH3_testdata[7749] */ + { 3875, 0x0000000000000000ULL, 0x8B885A174EEADCF0ULL }, /* XSUM_XXH3_testdata[7750] */ + { 3875, 0x9E3779B185EBCA8DULL, 0xBE08E4516752B35AULL }, /* XSUM_XXH3_testdata[7751] */ + { 3876, 0x0000000000000000ULL, 0x09553D435DD83629ULL }, /* XSUM_XXH3_testdata[7752] */ + { 3876, 0x9E3779B185EBCA8DULL, 0xB7C4E9607A887E62ULL }, /* XSUM_XXH3_testdata[7753] */ + { 3877, 0x0000000000000000ULL, 0x6DC55AA026DF9FD3ULL }, /* XSUM_XXH3_testdata[7754] */ + { 3877, 0x9E3779B185EBCA8DULL, 0x0F82F985D21275A8ULL }, /* XSUM_XXH3_testdata[7755] */ + { 3878, 0x0000000000000000ULL, 0x0AB69E2D8FFDB433ULL }, /* XSUM_XXH3_testdata[7756] */ + { 3878, 0x9E3779B185EBCA8DULL, 0xA0BDB20607B467B0ULL }, /* XSUM_XXH3_testdata[7757] */ + { 3879, 0x0000000000000000ULL, 0xDC044E994F514388ULL }, /* XSUM_XXH3_testdata[7758] */ + { 3879, 0x9E3779B185EBCA8DULL, 0xEE7FBF4DABA32D11ULL }, /* XSUM_XXH3_testdata[7759] */ + { 3880, 0x0000000000000000ULL, 0x187666F80C00DD3BULL }, /* XSUM_XXH3_testdata[7760] */ + { 3880, 0x9E3779B185EBCA8DULL, 0x4B4E138DB039E9A6ULL }, /* XSUM_XXH3_testdata[7761] */ + { 3881, 0x0000000000000000ULL, 0x1B8C6170BA920F83ULL }, /* XSUM_XXH3_testdata[7762] */ + { 3881, 0x9E3779B185EBCA8DULL, 0x791E308DBD22EFD9ULL }, /* XSUM_XXH3_testdata[7763] */ + { 3882, 0x0000000000000000ULL, 0xF04B471039625B62ULL }, /* XSUM_XXH3_testdata[7764] */ + { 3882, 0x9E3779B185EBCA8DULL, 0xB74488D33A785C73ULL }, /* XSUM_XXH3_testdata[7765] */ + { 3883, 0x0000000000000000ULL, 0x4688B01A257F4566ULL }, /* XSUM_XXH3_testdata[7766] */ + { 3883, 0x9E3779B185EBCA8DULL, 0xEDD8269066A13BBEULL }, /* XSUM_XXH3_testdata[7767] */ + { 3884, 0x0000000000000000ULL, 0x7C8BE48761A9C3A5ULL }, /* XSUM_XXH3_testdata[7768] */ + { 3884, 0x9E3779B185EBCA8DULL, 0x131209234A41D5ABULL }, /* XSUM_XXH3_testdata[7769] */ + { 3885, 0x0000000000000000ULL, 0x9F9397B2208C2543ULL }, /* XSUM_XXH3_testdata[7770] */ + { 3885, 0x9E3779B185EBCA8DULL, 0x6640AEFF006DF4A4ULL }, /* XSUM_XXH3_testdata[7771] */ + { 3886, 0x0000000000000000ULL, 0xB8669BF8EF126845ULL }, /* XSUM_XXH3_testdata[7772] */ + { 3886, 0x9E3779B185EBCA8DULL, 0x0A044609E706CDD7ULL }, /* XSUM_XXH3_testdata[7773] */ + { 3887, 0x0000000000000000ULL, 0x4CFCD4413DD99027ULL }, /* XSUM_XXH3_testdata[7774] */ + { 3887, 0x9E3779B185EBCA8DULL, 0xC44CF1C21F8CF592ULL }, /* XSUM_XXH3_testdata[7775] */ + { 3888, 0x0000000000000000ULL, 0xE331E128DBB1D7D9ULL }, /* XSUM_XXH3_testdata[7776] */ + { 3888, 0x9E3779B185EBCA8DULL, 0x6EFB06CE53DE9E24ULL }, /* XSUM_XXH3_testdata[7777] */ + { 3889, 0x0000000000000000ULL, 0x11D44E6082CBE4E5ULL }, /* XSUM_XXH3_testdata[7778] */ + { 3889, 0x9E3779B185EBCA8DULL, 0xE35CDE98F72C647FULL }, /* XSUM_XXH3_testdata[7779] */ + { 3890, 0x0000000000000000ULL, 0xA1295DE3AF67B2A3ULL }, /* XSUM_XXH3_testdata[7780] */ + { 3890, 0x9E3779B185EBCA8DULL, 0x3DA1793B4CED76FBULL }, /* XSUM_XXH3_testdata[7781] */ + { 3891, 0x0000000000000000ULL, 0xBA73830B67A21E08ULL }, /* XSUM_XXH3_testdata[7782] */ + { 3891, 0x9E3779B185EBCA8DULL, 0x3F2B72C5B004F19FULL }, /* XSUM_XXH3_testdata[7783] */ + { 3892, 0x0000000000000000ULL, 0xAC94A1510989D9B1ULL }, /* XSUM_XXH3_testdata[7784] */ + { 3892, 0x9E3779B185EBCA8DULL, 0x12858508E6900F2CULL }, /* XSUM_XXH3_testdata[7785] */ + { 3893, 0x0000000000000000ULL, 0xF93FAEA85A65A233ULL }, /* XSUM_XXH3_testdata[7786] */ + { 3893, 0x9E3779B185EBCA8DULL, 0x9BDB0D7C925A0E32ULL }, /* XSUM_XXH3_testdata[7787] */ + { 3894, 0x0000000000000000ULL, 0x9CB7F6F5DA5CE644ULL }, /* XSUM_XXH3_testdata[7788] */ + { 3894, 0x9E3779B185EBCA8DULL, 0xD579E994521A5D4BULL }, /* XSUM_XXH3_testdata[7789] */ + { 3895, 0x0000000000000000ULL, 0x5325D38ABDF70B44ULL }, /* XSUM_XXH3_testdata[7790] */ + { 3895, 0x9E3779B185EBCA8DULL, 0xE35BCE7BB70760E5ULL }, /* XSUM_XXH3_testdata[7791] */ + { 3896, 0x0000000000000000ULL, 0x9BD58AC8EC762F16ULL }, /* XSUM_XXH3_testdata[7792] */ + { 3896, 0x9E3779B185EBCA8DULL, 0x1359A61535C77027ULL }, /* XSUM_XXH3_testdata[7793] */ + { 3897, 0x0000000000000000ULL, 0x4E0D77736DC183D2ULL }, /* XSUM_XXH3_testdata[7794] */ + { 3897, 0x9E3779B185EBCA8DULL, 0x425C3F29DE942D3BULL }, /* XSUM_XXH3_testdata[7795] */ + { 3898, 0x0000000000000000ULL, 0x24F2F622BF81A57EULL }, /* XSUM_XXH3_testdata[7796] */ + { 3898, 0x9E3779B185EBCA8DULL, 0x2EF182AFF3828F57ULL }, /* XSUM_XXH3_testdata[7797] */ + { 3899, 0x0000000000000000ULL, 0x99FFFA13BD4D2CD9ULL }, /* XSUM_XXH3_testdata[7798] */ + { 3899, 0x9E3779B185EBCA8DULL, 0xA0E33190010A3EA7ULL }, /* XSUM_XXH3_testdata[7799] */ + { 3900, 0x0000000000000000ULL, 0x19805A069F62A49AULL }, /* XSUM_XXH3_testdata[7800] */ + { 3900, 0x9E3779B185EBCA8DULL, 0x14F3FF037E3009BDULL }, /* XSUM_XXH3_testdata[7801] */ + { 3901, 0x0000000000000000ULL, 0xE09BAE0C7FFDF76EULL }, /* XSUM_XXH3_testdata[7802] */ + { 3901, 0x9E3779B185EBCA8DULL, 0xD4D3B755157F2668ULL }, /* XSUM_XXH3_testdata[7803] */ + { 3902, 0x0000000000000000ULL, 0xCE34D7FB7210BC00ULL }, /* XSUM_XXH3_testdata[7804] */ + { 3902, 0x9E3779B185EBCA8DULL, 0x7C16164229315FB0ULL }, /* XSUM_XXH3_testdata[7805] */ + { 3903, 0x0000000000000000ULL, 0x7B13DAF4971CF1FFULL }, /* XSUM_XXH3_testdata[7806] */ + { 3903, 0x9E3779B185EBCA8DULL, 0x1C3A041D1102B153ULL }, /* XSUM_XXH3_testdata[7807] */ + { 3904, 0x0000000000000000ULL, 0xBBE687851D63B3AFULL }, /* XSUM_XXH3_testdata[7808] */ + { 3904, 0x9E3779B185EBCA8DULL, 0x5470D1C9A6CCA7EFULL }, /* XSUM_XXH3_testdata[7809] */ + { 3905, 0x0000000000000000ULL, 0xC31F7A782896527AULL }, /* XSUM_XXH3_testdata[7810] */ + { 3905, 0x9E3779B185EBCA8DULL, 0xA349F0FCFE77288AULL }, /* XSUM_XXH3_testdata[7811] */ + { 3906, 0x0000000000000000ULL, 0xE87F7F6E7457F2EAULL }, /* XSUM_XXH3_testdata[7812] */ + { 3906, 0x9E3779B185EBCA8DULL, 0xCF37E72730B3F6BFULL }, /* XSUM_XXH3_testdata[7813] */ + { 3907, 0x0000000000000000ULL, 0xAF7BA8F0F6BDE866ULL }, /* XSUM_XXH3_testdata[7814] */ + { 3907, 0x9E3779B185EBCA8DULL, 0xCAB66BE2356E26B7ULL }, /* XSUM_XXH3_testdata[7815] */ + { 3908, 0x0000000000000000ULL, 0xBF921BD5317E4A34ULL }, /* XSUM_XXH3_testdata[7816] */ + { 3908, 0x9E3779B185EBCA8DULL, 0x0B66F365D26D2B03ULL }, /* XSUM_XXH3_testdata[7817] */ + { 3909, 0x0000000000000000ULL, 0x9CB57F78F4578087ULL }, /* XSUM_XXH3_testdata[7818] */ + { 3909, 0x9E3779B185EBCA8DULL, 0x2CB9FE7B7E8EA2B3ULL }, /* XSUM_XXH3_testdata[7819] */ + { 3910, 0x0000000000000000ULL, 0x3F9ECFE64F0200BCULL }, /* XSUM_XXH3_testdata[7820] */ + { 3910, 0x9E3779B185EBCA8DULL, 0x141C8C489F2B039AULL }, /* XSUM_XXH3_testdata[7821] */ + { 3911, 0x0000000000000000ULL, 0xB761FC9603EDC210ULL }, /* XSUM_XXH3_testdata[7822] */ + { 3911, 0x9E3779B185EBCA8DULL, 0x1AA8771E12C97EEEULL }, /* XSUM_XXH3_testdata[7823] */ + { 3912, 0x0000000000000000ULL, 0xCB369450ECBDBC90ULL }, /* XSUM_XXH3_testdata[7824] */ + { 3912, 0x9E3779B185EBCA8DULL, 0x9E0687BFC2CF96CAULL }, /* XSUM_XXH3_testdata[7825] */ + { 3913, 0x0000000000000000ULL, 0x431E499D64D673F6ULL }, /* XSUM_XXH3_testdata[7826] */ + { 3913, 0x9E3779B185EBCA8DULL, 0x4FAF932DB8149ACCULL }, /* XSUM_XXH3_testdata[7827] */ + { 3914, 0x0000000000000000ULL, 0xE6D911BC72C6AE51ULL }, /* XSUM_XXH3_testdata[7828] */ + { 3914, 0x9E3779B185EBCA8DULL, 0xE2BF052CEF79FF47ULL }, /* XSUM_XXH3_testdata[7829] */ + { 3915, 0x0000000000000000ULL, 0x79C6F6782413023AULL }, /* XSUM_XXH3_testdata[7830] */ + { 3915, 0x9E3779B185EBCA8DULL, 0x1B3809FE35FE127EULL }, /* XSUM_XXH3_testdata[7831] */ + { 3916, 0x0000000000000000ULL, 0xEF8F193FDB2112A3ULL }, /* XSUM_XXH3_testdata[7832] */ + { 3916, 0x9E3779B185EBCA8DULL, 0x98AD7D5406A19295ULL }, /* XSUM_XXH3_testdata[7833] */ + { 3917, 0x0000000000000000ULL, 0x69FB09EAA27F3706ULL }, /* XSUM_XXH3_testdata[7834] */ + { 3917, 0x9E3779B185EBCA8DULL, 0x03163CABD1527F68ULL }, /* XSUM_XXH3_testdata[7835] */ + { 3918, 0x0000000000000000ULL, 0x7D8DD4199BED3A35ULL }, /* XSUM_XXH3_testdata[7836] */ + { 3918, 0x9E3779B185EBCA8DULL, 0xBC4F45AE3E4BEBE9ULL }, /* XSUM_XXH3_testdata[7837] */ + { 3919, 0x0000000000000000ULL, 0x8C8101E9DF878947ULL }, /* XSUM_XXH3_testdata[7838] */ + { 3919, 0x9E3779B185EBCA8DULL, 0x0D012DC456C35931ULL }, /* XSUM_XXH3_testdata[7839] */ + { 3920, 0x0000000000000000ULL, 0x256E7D270201A5F8ULL }, /* XSUM_XXH3_testdata[7840] */ + { 3920, 0x9E3779B185EBCA8DULL, 0x2594B97E220C378CULL }, /* XSUM_XXH3_testdata[7841] */ + { 3921, 0x0000000000000000ULL, 0x2413C09AA63529D4ULL }, /* XSUM_XXH3_testdata[7842] */ + { 3921, 0x9E3779B185EBCA8DULL, 0xAE6981E821162C41ULL }, /* XSUM_XXH3_testdata[7843] */ + { 3922, 0x0000000000000000ULL, 0x1B4729EEA242B464ULL }, /* XSUM_XXH3_testdata[7844] */ + { 3922, 0x9E3779B185EBCA8DULL, 0x2DE6748B08EF0008ULL }, /* XSUM_XXH3_testdata[7845] */ + { 3923, 0x0000000000000000ULL, 0x5D3C90B72C299E81ULL }, /* XSUM_XXH3_testdata[7846] */ + { 3923, 0x9E3779B185EBCA8DULL, 0xA080487A07FE5B1BULL }, /* XSUM_XXH3_testdata[7847] */ + { 3924, 0x0000000000000000ULL, 0x7CABA0FF1828406EULL }, /* XSUM_XXH3_testdata[7848] */ + { 3924, 0x9E3779B185EBCA8DULL, 0xAD0EB6A479FE5234ULL }, /* XSUM_XXH3_testdata[7849] */ + { 3925, 0x0000000000000000ULL, 0x34849449A343A369ULL }, /* XSUM_XXH3_testdata[7850] */ + { 3925, 0x9E3779B185EBCA8DULL, 0x1AB002D4AE5A96C6ULL }, /* XSUM_XXH3_testdata[7851] */ + { 3926, 0x0000000000000000ULL, 0x821338A8BDB22901ULL }, /* XSUM_XXH3_testdata[7852] */ + { 3926, 0x9E3779B185EBCA8DULL, 0xD9304221475D4F53ULL }, /* XSUM_XXH3_testdata[7853] */ + { 3927, 0x0000000000000000ULL, 0x711649750101681CULL }, /* XSUM_XXH3_testdata[7854] */ + { 3927, 0x9E3779B185EBCA8DULL, 0x6400186109233657ULL }, /* XSUM_XXH3_testdata[7855] */ + { 3928, 0x0000000000000000ULL, 0x1EF643BB4D6280AEULL }, /* XSUM_XXH3_testdata[7856] */ + { 3928, 0x9E3779B185EBCA8DULL, 0x45F6407A80B1B838ULL }, /* XSUM_XXH3_testdata[7857] */ + { 3929, 0x0000000000000000ULL, 0x46AEB90D8F7ABFF1ULL }, /* XSUM_XXH3_testdata[7858] */ + { 3929, 0x9E3779B185EBCA8DULL, 0xDFBD52053FEA117CULL }, /* XSUM_XXH3_testdata[7859] */ + { 3930, 0x0000000000000000ULL, 0xF96C47244C8E68D9ULL }, /* XSUM_XXH3_testdata[7860] */ + { 3930, 0x9E3779B185EBCA8DULL, 0xE94C4D97EB097F05ULL }, /* XSUM_XXH3_testdata[7861] */ + { 3931, 0x0000000000000000ULL, 0x2D9755A556DC4C68ULL }, /* XSUM_XXH3_testdata[7862] */ + { 3931, 0x9E3779B185EBCA8DULL, 0x356571D8B096CF77ULL }, /* XSUM_XXH3_testdata[7863] */ + { 3932, 0x0000000000000000ULL, 0x2690DE96B8F122BFULL }, /* XSUM_XXH3_testdata[7864] */ + { 3932, 0x9E3779B185EBCA8DULL, 0xD855005339822D9FULL }, /* XSUM_XXH3_testdata[7865] */ + { 3933, 0x0000000000000000ULL, 0x03F17E5C69752446ULL }, /* XSUM_XXH3_testdata[7866] */ + { 3933, 0x9E3779B185EBCA8DULL, 0x6DB8D83F02C4D6F4ULL }, /* XSUM_XXH3_testdata[7867] */ + { 3934, 0x0000000000000000ULL, 0xAE5BAEE4A55FA92AULL }, /* XSUM_XXH3_testdata[7868] */ + { 3934, 0x9E3779B185EBCA8DULL, 0xE84342F512CBB54CULL }, /* XSUM_XXH3_testdata[7869] */ + { 3935, 0x0000000000000000ULL, 0x10C818EA41884D5DULL }, /* XSUM_XXH3_testdata[7870] */ + { 3935, 0x9E3779B185EBCA8DULL, 0xB4712B7E5B822501ULL }, /* XSUM_XXH3_testdata[7871] */ + { 3936, 0x0000000000000000ULL, 0xAA8A8708F5777330ULL }, /* XSUM_XXH3_testdata[7872] */ + { 3936, 0x9E3779B185EBCA8DULL, 0xA4B6E3C721522422ULL }, /* XSUM_XXH3_testdata[7873] */ + { 3937, 0x0000000000000000ULL, 0x067D12376D718DAFULL }, /* XSUM_XXH3_testdata[7874] */ + { 3937, 0x9E3779B185EBCA8DULL, 0x36B8E2E811E9040AULL }, /* XSUM_XXH3_testdata[7875] */ + { 3938, 0x0000000000000000ULL, 0xF98EC9412B15364FULL }, /* XSUM_XXH3_testdata[7876] */ + { 3938, 0x9E3779B185EBCA8DULL, 0xF2069144A2208295ULL }, /* XSUM_XXH3_testdata[7877] */ + { 3939, 0x0000000000000000ULL, 0x3F9E497288C054EEULL }, /* XSUM_XXH3_testdata[7878] */ + { 3939, 0x9E3779B185EBCA8DULL, 0xC2509F473718907BULL }, /* XSUM_XXH3_testdata[7879] */ + { 3940, 0x0000000000000000ULL, 0xBDEABE2B0DA048E9ULL }, /* XSUM_XXH3_testdata[7880] */ + { 3940, 0x9E3779B185EBCA8DULL, 0x4668552A42C21C1AULL }, /* XSUM_XXH3_testdata[7881] */ + { 3941, 0x0000000000000000ULL, 0x10AB1C99F00A85BEULL }, /* XSUM_XXH3_testdata[7882] */ + { 3941, 0x9E3779B185EBCA8DULL, 0x817F51B557AE9312ULL }, /* XSUM_XXH3_testdata[7883] */ + { 3942, 0x0000000000000000ULL, 0x532A1A1C827E3C32ULL }, /* XSUM_XXH3_testdata[7884] */ + { 3942, 0x9E3779B185EBCA8DULL, 0xFC9E9A61C043F893ULL }, /* XSUM_XXH3_testdata[7885] */ + { 3943, 0x0000000000000000ULL, 0x17DF5FEBAA199DDCULL }, /* XSUM_XXH3_testdata[7886] */ + { 3943, 0x9E3779B185EBCA8DULL, 0xBF866768A90B586BULL }, /* XSUM_XXH3_testdata[7887] */ + { 3944, 0x0000000000000000ULL, 0x71398075626A805FULL }, /* XSUM_XXH3_testdata[7888] */ + { 3944, 0x9E3779B185EBCA8DULL, 0x2EAD63956448AC42ULL }, /* XSUM_XXH3_testdata[7889] */ + { 3945, 0x0000000000000000ULL, 0x8B96C85B6B09AE09ULL }, /* XSUM_XXH3_testdata[7890] */ + { 3945, 0x9E3779B185EBCA8DULL, 0x53945379415EEA57ULL }, /* XSUM_XXH3_testdata[7891] */ + { 3946, 0x0000000000000000ULL, 0xBDD556FEB977EB7EULL }, /* XSUM_XXH3_testdata[7892] */ + { 3946, 0x9E3779B185EBCA8DULL, 0x323281D91889CD49ULL }, /* XSUM_XXH3_testdata[7893] */ + { 3947, 0x0000000000000000ULL, 0x64971C22DBC5527CULL }, /* XSUM_XXH3_testdata[7894] */ + { 3947, 0x9E3779B185EBCA8DULL, 0x89022F7E2B8360A5ULL }, /* XSUM_XXH3_testdata[7895] */ + { 3948, 0x0000000000000000ULL, 0xDD8BE1C1AA8ADD2DULL }, /* XSUM_XXH3_testdata[7896] */ + { 3948, 0x9E3779B185EBCA8DULL, 0x5C30025D03808D2BULL }, /* XSUM_XXH3_testdata[7897] */ + { 3949, 0x0000000000000000ULL, 0x8C07CF58AB41A74CULL }, /* XSUM_XXH3_testdata[7898] */ + { 3949, 0x9E3779B185EBCA8DULL, 0xB1D01B95BAA92AABULL }, /* XSUM_XXH3_testdata[7899] */ + { 3950, 0x0000000000000000ULL, 0xD02F3D99DAF12BFBULL }, /* XSUM_XXH3_testdata[7900] */ + { 3950, 0x9E3779B185EBCA8DULL, 0xB51B642756A4A758ULL }, /* XSUM_XXH3_testdata[7901] */ + { 3951, 0x0000000000000000ULL, 0x4348531E49C511F4ULL }, /* XSUM_XXH3_testdata[7902] */ + { 3951, 0x9E3779B185EBCA8DULL, 0x18BD395AEEA58688ULL }, /* XSUM_XXH3_testdata[7903] */ + { 3952, 0x0000000000000000ULL, 0x9D4C66540A962773ULL }, /* XSUM_XXH3_testdata[7904] */ + { 3952, 0x9E3779B185EBCA8DULL, 0xE00964BE57FD3E66ULL }, /* XSUM_XXH3_testdata[7905] */ + { 3953, 0x0000000000000000ULL, 0x7CE772BEA8E4786BULL }, /* XSUM_XXH3_testdata[7906] */ + { 3953, 0x9E3779B185EBCA8DULL, 0xF61BB140BE5D765FULL }, /* XSUM_XXH3_testdata[7907] */ + { 3954, 0x0000000000000000ULL, 0xEF207CADC1E1289DULL }, /* XSUM_XXH3_testdata[7908] */ + { 3954, 0x9E3779B185EBCA8DULL, 0xFAE666B60898B751ULL }, /* XSUM_XXH3_testdata[7909] */ + { 3955, 0x0000000000000000ULL, 0x26CC10398A6749B7ULL }, /* XSUM_XXH3_testdata[7910] */ + { 3955, 0x9E3779B185EBCA8DULL, 0x92DE2797740DD6B7ULL }, /* XSUM_XXH3_testdata[7911] */ + { 3956, 0x0000000000000000ULL, 0x242CFB81AFEB4A52ULL }, /* XSUM_XXH3_testdata[7912] */ + { 3956, 0x9E3779B185EBCA8DULL, 0x52AC4FDC444D7946ULL }, /* XSUM_XXH3_testdata[7913] */ + { 3957, 0x0000000000000000ULL, 0x281754EE7F02B5E8ULL }, /* XSUM_XXH3_testdata[7914] */ + { 3957, 0x9E3779B185EBCA8DULL, 0x334BB05F13E21683ULL }, /* XSUM_XXH3_testdata[7915] */ + { 3958, 0x0000000000000000ULL, 0x99422CCBED686E68ULL }, /* XSUM_XXH3_testdata[7916] */ + { 3958, 0x9E3779B185EBCA8DULL, 0x37F7156BD866B0ADULL }, /* XSUM_XXH3_testdata[7917] */ + { 3959, 0x0000000000000000ULL, 0x598741D332E3B68CULL }, /* XSUM_XXH3_testdata[7918] */ + { 3959, 0x9E3779B185EBCA8DULL, 0x6586AE3B6DDACD16ULL }, /* XSUM_XXH3_testdata[7919] */ + { 3960, 0x0000000000000000ULL, 0x4B628B36B33EC98CULL }, /* XSUM_XXH3_testdata[7920] */ + { 3960, 0x9E3779B185EBCA8DULL, 0xA6C22E0382278A9BULL }, /* XSUM_XXH3_testdata[7921] */ + { 3961, 0x0000000000000000ULL, 0x33EA7BB343EBBDB5ULL }, /* XSUM_XXH3_testdata[7922] */ + { 3961, 0x9E3779B185EBCA8DULL, 0x75699EDC5951867DULL }, /* XSUM_XXH3_testdata[7923] */ + { 3962, 0x0000000000000000ULL, 0x126AEA81F63590F4ULL }, /* XSUM_XXH3_testdata[7924] */ + { 3962, 0x9E3779B185EBCA8DULL, 0x886FD5F60CD3E0EEULL }, /* XSUM_XXH3_testdata[7925] */ + { 3963, 0x0000000000000000ULL, 0x7841B62776B307AAULL }, /* XSUM_XXH3_testdata[7926] */ + { 3963, 0x9E3779B185EBCA8DULL, 0xF82E085079EC75FAULL }, /* XSUM_XXH3_testdata[7927] */ + { 3964, 0x0000000000000000ULL, 0xECBF0B670679A0F6ULL }, /* XSUM_XXH3_testdata[7928] */ + { 3964, 0x9E3779B185EBCA8DULL, 0x288522438415AC10ULL }, /* XSUM_XXH3_testdata[7929] */ + { 3965, 0x0000000000000000ULL, 0x27A262BDF741056FULL }, /* XSUM_XXH3_testdata[7930] */ + { 3965, 0x9E3779B185EBCA8DULL, 0x59897257B77D9E2CULL }, /* XSUM_XXH3_testdata[7931] */ + { 3966, 0x0000000000000000ULL, 0x2F809602FE931B3CULL }, /* XSUM_XXH3_testdata[7932] */ + { 3966, 0x9E3779B185EBCA8DULL, 0xCADC0F606616E761ULL }, /* XSUM_XXH3_testdata[7933] */ + { 3967, 0x0000000000000000ULL, 0x141E1F3175F8052CULL }, /* XSUM_XXH3_testdata[7934] */ + { 3967, 0x9E3779B185EBCA8DULL, 0x329CC677D6B63E01ULL }, /* XSUM_XXH3_testdata[7935] */ + { 3968, 0x0000000000000000ULL, 0xE4BBC3788C0BDD64ULL }, /* XSUM_XXH3_testdata[7936] */ + { 3968, 0x9E3779B185EBCA8DULL, 0x5DEB326944BE123EULL }, /* XSUM_XXH3_testdata[7937] */ + { 3969, 0x0000000000000000ULL, 0xE31B53A785778F54ULL }, /* XSUM_XXH3_testdata[7938] */ + { 3969, 0x9E3779B185EBCA8DULL, 0x6A2E262687B66653ULL }, /* XSUM_XXH3_testdata[7939] */ + { 3970, 0x0000000000000000ULL, 0xE616BA7289AA5EBDULL }, /* XSUM_XXH3_testdata[7940] */ + { 3970, 0x9E3779B185EBCA8DULL, 0x8780C20C605A6403ULL }, /* XSUM_XXH3_testdata[7941] */ + { 3971, 0x0000000000000000ULL, 0x51921934B133BCBCULL }, /* XSUM_XXH3_testdata[7942] */ + { 3971, 0x9E3779B185EBCA8DULL, 0x1491A8A669564D3DULL }, /* XSUM_XXH3_testdata[7943] */ + { 3972, 0x0000000000000000ULL, 0x2FD77747DC1304CBULL }, /* XSUM_XXH3_testdata[7944] */ + { 3972, 0x9E3779B185EBCA8DULL, 0x00E8B8F5C0C77E2FULL }, /* XSUM_XXH3_testdata[7945] */ + { 3973, 0x0000000000000000ULL, 0xD5FA765B6B147CBCULL }, /* XSUM_XXH3_testdata[7946] */ + { 3973, 0x9E3779B185EBCA8DULL, 0xB8A191D1D112F794ULL }, /* XSUM_XXH3_testdata[7947] */ + { 3974, 0x0000000000000000ULL, 0x096E1E10CE979DF3ULL }, /* XSUM_XXH3_testdata[7948] */ + { 3974, 0x9E3779B185EBCA8DULL, 0x25311F01B72B0F5DULL }, /* XSUM_XXH3_testdata[7949] */ + { 3975, 0x0000000000000000ULL, 0x724CD26BCEE10D7DULL }, /* XSUM_XXH3_testdata[7950] */ + { 3975, 0x9E3779B185EBCA8DULL, 0xFEFDAF2604950A59ULL }, /* XSUM_XXH3_testdata[7951] */ + { 3976, 0x0000000000000000ULL, 0x624EB9ED7DA8BC8BULL }, /* XSUM_XXH3_testdata[7952] */ + { 3976, 0x9E3779B185EBCA8DULL, 0xB1484E07468C6A87ULL }, /* XSUM_XXH3_testdata[7953] */ + { 3977, 0x0000000000000000ULL, 0xB97681089D65E1B3ULL }, /* XSUM_XXH3_testdata[7954] */ + { 3977, 0x9E3779B185EBCA8DULL, 0x995046795DDBFFA3ULL }, /* XSUM_XXH3_testdata[7955] */ + { 3978, 0x0000000000000000ULL, 0x96CE1FD0B7BBB048ULL }, /* XSUM_XXH3_testdata[7956] */ + { 3978, 0x9E3779B185EBCA8DULL, 0xE6A71D136860A7DEULL }, /* XSUM_XXH3_testdata[7957] */ + { 3979, 0x0000000000000000ULL, 0x75DED1B9308B1928ULL }, /* XSUM_XXH3_testdata[7958] */ + { 3979, 0x9E3779B185EBCA8DULL, 0xDED6EE6AC82110D1ULL }, /* XSUM_XXH3_testdata[7959] */ + { 3980, 0x0000000000000000ULL, 0x74108B5207DA6495ULL }, /* XSUM_XXH3_testdata[7960] */ + { 3980, 0x9E3779B185EBCA8DULL, 0xBCF1BB06F6F9F1D2ULL }, /* XSUM_XXH3_testdata[7961] */ + { 3981, 0x0000000000000000ULL, 0x583132D445F6E764ULL }, /* XSUM_XXH3_testdata[7962] */ + { 3981, 0x9E3779B185EBCA8DULL, 0xC5DD54DA32E1E97BULL }, /* XSUM_XXH3_testdata[7963] */ + { 3982, 0x0000000000000000ULL, 0x9481AB87F0647F15ULL }, /* XSUM_XXH3_testdata[7964] */ + { 3982, 0x9E3779B185EBCA8DULL, 0xF4477239172D8121ULL }, /* XSUM_XXH3_testdata[7965] */ + { 3983, 0x0000000000000000ULL, 0xE200117CCB74CD9CULL }, /* XSUM_XXH3_testdata[7966] */ + { 3983, 0x9E3779B185EBCA8DULL, 0x404ED3E5DB505D73ULL }, /* XSUM_XXH3_testdata[7967] */ + { 3984, 0x0000000000000000ULL, 0xCE9467B900AEFA85ULL }, /* XSUM_XXH3_testdata[7968] */ + { 3984, 0x9E3779B185EBCA8DULL, 0x42C043E3244AF7E8ULL }, /* XSUM_XXH3_testdata[7969] */ + { 3985, 0x0000000000000000ULL, 0xB8FE9445B6FBF8C0ULL }, /* XSUM_XXH3_testdata[7970] */ + { 3985, 0x9E3779B185EBCA8DULL, 0xDF322C15B737F0A8ULL }, /* XSUM_XXH3_testdata[7971] */ + { 3986, 0x0000000000000000ULL, 0x983B40D937389E12ULL }, /* XSUM_XXH3_testdata[7972] */ + { 3986, 0x9E3779B185EBCA8DULL, 0x85128DA1EFFEC291ULL }, /* XSUM_XXH3_testdata[7973] */ + { 3987, 0x0000000000000000ULL, 0x022BDCA841C7E36AULL }, /* XSUM_XXH3_testdata[7974] */ + { 3987, 0x9E3779B185EBCA8DULL, 0x01FE2ADABDCFC75CULL }, /* XSUM_XXH3_testdata[7975] */ + { 3988, 0x0000000000000000ULL, 0xA2DBCDCFFDB287F2ULL }, /* XSUM_XXH3_testdata[7976] */ + { 3988, 0x9E3779B185EBCA8DULL, 0x82D212A8FB8DBE03ULL }, /* XSUM_XXH3_testdata[7977] */ + { 3989, 0x0000000000000000ULL, 0xE9E21701E2BB0AF7ULL }, /* XSUM_XXH3_testdata[7978] */ + { 3989, 0x9E3779B185EBCA8DULL, 0xDF967A00E46837CCULL }, /* XSUM_XXH3_testdata[7979] */ + { 3990, 0x0000000000000000ULL, 0xA3951EEAC572F24DULL }, /* XSUM_XXH3_testdata[7980] */ + { 3990, 0x9E3779B185EBCA8DULL, 0x5FC170EF073D265DULL }, /* XSUM_XXH3_testdata[7981] */ + { 3991, 0x0000000000000000ULL, 0x71B75CFBC5C7FF7AULL }, /* XSUM_XXH3_testdata[7982] */ + { 3991, 0x9E3779B185EBCA8DULL, 0xE044F7B8115A2BEDULL }, /* XSUM_XXH3_testdata[7983] */ + { 3992, 0x0000000000000000ULL, 0x560473B92CA66B06ULL }, /* XSUM_XXH3_testdata[7984] */ + { 3992, 0x9E3779B185EBCA8DULL, 0x5420B09C1771B61AULL }, /* XSUM_XXH3_testdata[7985] */ + { 3993, 0x0000000000000000ULL, 0xD10183EE95BA2333ULL }, /* XSUM_XXH3_testdata[7986] */ + { 3993, 0x9E3779B185EBCA8DULL, 0x6FC53C76904E0CBBULL }, /* XSUM_XXH3_testdata[7987] */ + { 3994, 0x0000000000000000ULL, 0xA137F43241A5B99DULL }, /* XSUM_XXH3_testdata[7988] */ + { 3994, 0x9E3779B185EBCA8DULL, 0xD6421EA72D97B5B5ULL }, /* XSUM_XXH3_testdata[7989] */ + { 3995, 0x0000000000000000ULL, 0x0B094A9A19E93FEAULL }, /* XSUM_XXH3_testdata[7990] */ + { 3995, 0x9E3779B185EBCA8DULL, 0xDF5FF6C3F8F85DAEULL }, /* XSUM_XXH3_testdata[7991] */ + { 3996, 0x0000000000000000ULL, 0xF7F1B9E355A56C78ULL }, /* XSUM_XXH3_testdata[7992] */ + { 3996, 0x9E3779B185EBCA8DULL, 0x440D8BF0C28F2386ULL }, /* XSUM_XXH3_testdata[7993] */ + { 3997, 0x0000000000000000ULL, 0xB59E0DA0D0AC15FAULL }, /* XSUM_XXH3_testdata[7994] */ + { 3997, 0x9E3779B185EBCA8DULL, 0x4C1A420DB1CC198BULL }, /* XSUM_XXH3_testdata[7995] */ + { 3998, 0x0000000000000000ULL, 0x3C921215EB653D1DULL }, /* XSUM_XXH3_testdata[7996] */ + { 3998, 0x9E3779B185EBCA8DULL, 0x26E9B9483790551FULL }, /* XSUM_XXH3_testdata[7997] */ + { 3999, 0x0000000000000000ULL, 0xA4A38A7850158E01ULL }, /* XSUM_XXH3_testdata[7998] */ + { 3999, 0x9E3779B185EBCA8DULL, 0xC8A7D8FE1F072911ULL }, /* XSUM_XXH3_testdata[7999] */ + { 4000, 0x0000000000000000ULL, 0xD4BBD44AE7A245D6ULL }, /* XSUM_XXH3_testdata[8000] */ + { 4000, 0x9E3779B185EBCA8DULL, 0x14D1D38BF7F90929ULL }, /* XSUM_XXH3_testdata[8001] */ + { 4001, 0x0000000000000000ULL, 0x40865A418C827014ULL }, /* XSUM_XXH3_testdata[8002] */ + { 4001, 0x9E3779B185EBCA8DULL, 0xA2CE1E5EAAE13199ULL }, /* XSUM_XXH3_testdata[8003] */ + { 4002, 0x0000000000000000ULL, 0xDED0BB8EB0E9E5BBULL }, /* XSUM_XXH3_testdata[8004] */ + { 4002, 0x9E3779B185EBCA8DULL, 0xEDCD3A406D723DEAULL }, /* XSUM_XXH3_testdata[8005] */ + { 4003, 0x0000000000000000ULL, 0xAA4AD1D0A48CB176ULL }, /* XSUM_XXH3_testdata[8006] */ + { 4003, 0x9E3779B185EBCA8DULL, 0x880A5B734D046849ULL }, /* XSUM_XXH3_testdata[8007] */ + { 4004, 0x0000000000000000ULL, 0xD58188ABC81D37C6ULL }, /* XSUM_XXH3_testdata[8008] */ + { 4004, 0x9E3779B185EBCA8DULL, 0x712781E12FBEF921ULL }, /* XSUM_XXH3_testdata[8009] */ + { 4005, 0x0000000000000000ULL, 0x5B06AA2C44621825ULL }, /* XSUM_XXH3_testdata[8010] */ + { 4005, 0x9E3779B185EBCA8DULL, 0xD9C37C284E6A8216ULL }, /* XSUM_XXH3_testdata[8011] */ + { 4006, 0x0000000000000000ULL, 0xEB57CC9F39C8879EULL }, /* XSUM_XXH3_testdata[8012] */ + { 4006, 0x9E3779B185EBCA8DULL, 0x4F33FAAF2C4EC509ULL }, /* XSUM_XXH3_testdata[8013] */ + { 4007, 0x0000000000000000ULL, 0x3DCDD807BD42EE26ULL }, /* XSUM_XXH3_testdata[8014] */ + { 4007, 0x9E3779B185EBCA8DULL, 0xD8F0E8A6D8B9FB59ULL }, /* XSUM_XXH3_testdata[8015] */ + { 4008, 0x0000000000000000ULL, 0xF6F0C51DDFE11B30ULL }, /* XSUM_XXH3_testdata[8016] */ + { 4008, 0x9E3779B185EBCA8DULL, 0xA6DB86CDF49CDC24ULL }, /* XSUM_XXH3_testdata[8017] */ + { 4009, 0x0000000000000000ULL, 0x5BED8336DA2E1B91ULL }, /* XSUM_XXH3_testdata[8018] */ + { 4009, 0x9E3779B185EBCA8DULL, 0x80C78888E438C8E4ULL }, /* XSUM_XXH3_testdata[8019] */ + { 4010, 0x0000000000000000ULL, 0x18B1FDDD465EA2C1ULL }, /* XSUM_XXH3_testdata[8020] */ + { 4010, 0x9E3779B185EBCA8DULL, 0x44B5135B49E9F8C5ULL }, /* XSUM_XXH3_testdata[8021] */ + { 4011, 0x0000000000000000ULL, 0xB5C12C9C61209F68ULL }, /* XSUM_XXH3_testdata[8022] */ + { 4011, 0x9E3779B185EBCA8DULL, 0x282C356F51F01633ULL }, /* XSUM_XXH3_testdata[8023] */ + { 4012, 0x0000000000000000ULL, 0x85C82A6C0F1274E3ULL }, /* XSUM_XXH3_testdata[8024] */ + { 4012, 0x9E3779B185EBCA8DULL, 0x3F3CC56500850438ULL }, /* XSUM_XXH3_testdata[8025] */ + { 4013, 0x0000000000000000ULL, 0x44AA6A2ECB850B99ULL }, /* XSUM_XXH3_testdata[8026] */ + { 4013, 0x9E3779B185EBCA8DULL, 0xFC918DF96A2F9086ULL }, /* XSUM_XXH3_testdata[8027] */ + { 4014, 0x0000000000000000ULL, 0x6CC9DA2929EBB547ULL }, /* XSUM_XXH3_testdata[8028] */ + { 4014, 0x9E3779B185EBCA8DULL, 0x0FA30447394E3206ULL }, /* XSUM_XXH3_testdata[8029] */ + { 4015, 0x0000000000000000ULL, 0x45D8135F5AEF31F4ULL }, /* XSUM_XXH3_testdata[8030] */ + { 4015, 0x9E3779B185EBCA8DULL, 0x52BB0C869F802BE6ULL }, /* XSUM_XXH3_testdata[8031] */ + { 4016, 0x0000000000000000ULL, 0x7620342B18B38037ULL }, /* XSUM_XXH3_testdata[8032] */ + { 4016, 0x9E3779B185EBCA8DULL, 0xBD27FB07E38FFB89ULL }, /* XSUM_XXH3_testdata[8033] */ + { 4017, 0x0000000000000000ULL, 0x19AA8582519EFB78ULL }, /* XSUM_XXH3_testdata[8034] */ + { 4017, 0x9E3779B185EBCA8DULL, 0xF6AE9ED2299687ECULL }, /* XSUM_XXH3_testdata[8035] */ + { 4018, 0x0000000000000000ULL, 0x18AB9343042FFD7BULL }, /* XSUM_XXH3_testdata[8036] */ + { 4018, 0x9E3779B185EBCA8DULL, 0x9CA0D8345D0C1364ULL }, /* XSUM_XXH3_testdata[8037] */ + { 4019, 0x0000000000000000ULL, 0x58240880A0D0C9DAULL }, /* XSUM_XXH3_testdata[8038] */ + { 4019, 0x9E3779B185EBCA8DULL, 0x3084812F602A7184ULL }, /* XSUM_XXH3_testdata[8039] */ + { 4020, 0x0000000000000000ULL, 0xC6BF91DBA283CBFDULL }, /* XSUM_XXH3_testdata[8040] */ + { 4020, 0x9E3779B185EBCA8DULL, 0x7C966FE6D9E62F5FULL }, /* XSUM_XXH3_testdata[8041] */ + { 4021, 0x0000000000000000ULL, 0x65BA8FAA88EE3FB6ULL }, /* XSUM_XXH3_testdata[8042] */ + { 4021, 0x9E3779B185EBCA8DULL, 0x37826DE37F8188ADULL }, /* XSUM_XXH3_testdata[8043] */ + { 4022, 0x0000000000000000ULL, 0xE54A695510735977ULL }, /* XSUM_XXH3_testdata[8044] */ + { 4022, 0x9E3779B185EBCA8DULL, 0x55CCAA4287B96BAFULL }, /* XSUM_XXH3_testdata[8045] */ + { 4023, 0x0000000000000000ULL, 0x8E04EDA3E75BF177ULL }, /* XSUM_XXH3_testdata[8046] */ + { 4023, 0x9E3779B185EBCA8DULL, 0xE8DD69B31C7AA562ULL }, /* XSUM_XXH3_testdata[8047] */ + { 4024, 0x0000000000000000ULL, 0x8A0F3CA734A6FE60ULL }, /* XSUM_XXH3_testdata[8048] */ + { 4024, 0x9E3779B185EBCA8DULL, 0xBD6286044C530E55ULL }, /* XSUM_XXH3_testdata[8049] */ + { 4025, 0x0000000000000000ULL, 0xD9ED85C42BB2F252ULL }, /* XSUM_XXH3_testdata[8050] */ + { 4025, 0x9E3779B185EBCA8DULL, 0xD0ECFCBE239FDAE4ULL }, /* XSUM_XXH3_testdata[8051] */ + { 4026, 0x0000000000000000ULL, 0xF8084F228EC4F387ULL }, /* XSUM_XXH3_testdata[8052] */ + { 4026, 0x9E3779B185EBCA8DULL, 0x406784D868BF9889ULL }, /* XSUM_XXH3_testdata[8053] */ + { 4027, 0x0000000000000000ULL, 0x1C9144339B38AA9AULL }, /* XSUM_XXH3_testdata[8054] */ + { 4027, 0x9E3779B185EBCA8DULL, 0x416651D9DF1E676FULL }, /* XSUM_XXH3_testdata[8055] */ + { 4028, 0x0000000000000000ULL, 0xED9E073AD05153EAULL }, /* XSUM_XXH3_testdata[8056] */ + { 4028, 0x9E3779B185EBCA8DULL, 0xFBD66B77B585F7A0ULL }, /* XSUM_XXH3_testdata[8057] */ + { 4029, 0x0000000000000000ULL, 0x4E8E5C7C933C15C7ULL }, /* XSUM_XXH3_testdata[8058] */ + { 4029, 0x9E3779B185EBCA8DULL, 0xCF53A8E7C5B6C534ULL }, /* XSUM_XXH3_testdata[8059] */ + { 4030, 0x0000000000000000ULL, 0x7AF4A9E0038F11F7ULL }, /* XSUM_XXH3_testdata[8060] */ + { 4030, 0x9E3779B185EBCA8DULL, 0x8A017810F4FC9DEDULL }, /* XSUM_XXH3_testdata[8061] */ + { 4031, 0x0000000000000000ULL, 0x8BD0CF454B28920EULL }, /* XSUM_XXH3_testdata[8062] */ + { 4031, 0x9E3779B185EBCA8DULL, 0xAD5E5C4D36915D21ULL }, /* XSUM_XXH3_testdata[8063] */ + { 4032, 0x0000000000000000ULL, 0x526C9E698660795FULL }, /* XSUM_XXH3_testdata[8064] */ + { 4032, 0x9E3779B185EBCA8DULL, 0xEDFA9AF90A2570F4ULL }, /* XSUM_XXH3_testdata[8065] */ + { 4033, 0x0000000000000000ULL, 0x5B78ACBA805C7A9DULL }, /* XSUM_XXH3_testdata[8066] */ + { 4033, 0x9E3779B185EBCA8DULL, 0xE4FF46D5A5AD419BULL }, /* XSUM_XXH3_testdata[8067] */ + { 4034, 0x0000000000000000ULL, 0xA102C5136A2E85B3ULL }, /* XSUM_XXH3_testdata[8068] */ + { 4034, 0x9E3779B185EBCA8DULL, 0x395C36DE86C13BB0ULL }, /* XSUM_XXH3_testdata[8069] */ + { 4035, 0x0000000000000000ULL, 0x4511241B19C0FA71ULL }, /* XSUM_XXH3_testdata[8070] */ + { 4035, 0x9E3779B185EBCA8DULL, 0x5E7C04526A4CD6E9ULL }, /* XSUM_XXH3_testdata[8071] */ + { 4036, 0x0000000000000000ULL, 0x313E19B2397F5306ULL }, /* XSUM_XXH3_testdata[8072] */ + { 4036, 0x9E3779B185EBCA8DULL, 0x8E4378ADB6056F30ULL }, /* XSUM_XXH3_testdata[8073] */ + { 4037, 0x0000000000000000ULL, 0xF45852F43FB45730ULL }, /* XSUM_XXH3_testdata[8074] */ + { 4037, 0x9E3779B185EBCA8DULL, 0x9EABF4BCD1D9854DULL }, /* XSUM_XXH3_testdata[8075] */ + { 4038, 0x0000000000000000ULL, 0xAEB3ED5AA3FAFBB3ULL }, /* XSUM_XXH3_testdata[8076] */ + { 4038, 0x9E3779B185EBCA8DULL, 0xDD8ED04139CDA479ULL }, /* XSUM_XXH3_testdata[8077] */ + { 4039, 0x0000000000000000ULL, 0x629A488F54BB9A5CULL }, /* XSUM_XXH3_testdata[8078] */ + { 4039, 0x9E3779B185EBCA8DULL, 0x88D289E20F432896ULL }, /* XSUM_XXH3_testdata[8079] */ + { 4040, 0x0000000000000000ULL, 0x302AC702D017AF48ULL }, /* XSUM_XXH3_testdata[8080] */ + { 4040, 0x9E3779B185EBCA8DULL, 0x63B3EBA53DD3C7F3ULL }, /* XSUM_XXH3_testdata[8081] */ + { 4041, 0x0000000000000000ULL, 0xF392BF0F187C48A3ULL }, /* XSUM_XXH3_testdata[8082] */ + { 4041, 0x9E3779B185EBCA8DULL, 0x4B18A944D21F9E8FULL }, /* XSUM_XXH3_testdata[8083] */ + { 4042, 0x0000000000000000ULL, 0x7E2E33EAE958DCF4ULL }, /* XSUM_XXH3_testdata[8084] */ + { 4042, 0x9E3779B185EBCA8DULL, 0xDA44FEE50C8F5BB0ULL }, /* XSUM_XXH3_testdata[8085] */ + { 4043, 0x0000000000000000ULL, 0x7955E4BB5942274AULL }, /* XSUM_XXH3_testdata[8086] */ + { 4043, 0x9E3779B185EBCA8DULL, 0xC28A8539FECBA7EBULL }, /* XSUM_XXH3_testdata[8087] */ + { 4044, 0x0000000000000000ULL, 0x7FFDDDE92A33E6F3ULL }, /* XSUM_XXH3_testdata[8088] */ + { 4044, 0x9E3779B185EBCA8DULL, 0x51923CA9096E6215ULL }, /* XSUM_XXH3_testdata[8089] */ + { 4045, 0x0000000000000000ULL, 0xE876C93C712F5CE6ULL }, /* XSUM_XXH3_testdata[8090] */ + { 4045, 0x9E3779B185EBCA8DULL, 0xDC6FD6E67A34FED4ULL }, /* XSUM_XXH3_testdata[8091] */ + { 4046, 0x0000000000000000ULL, 0xCC6D082EB77008E6ULL }, /* XSUM_XXH3_testdata[8092] */ + { 4046, 0x9E3779B185EBCA8DULL, 0x791FEF31ACFE46C7ULL }, /* XSUM_XXH3_testdata[8093] */ + { 4047, 0x0000000000000000ULL, 0xC4DA2A18C857B469ULL }, /* XSUM_XXH3_testdata[8094] */ + { 4047, 0x9E3779B185EBCA8DULL, 0x6E5C68216122FB2BULL }, /* XSUM_XXH3_testdata[8095] */ + { 4048, 0x0000000000000000ULL, 0x0AC08275816C6F95ULL }, /* XSUM_XXH3_testdata[8096] */ + { 4048, 0x9E3779B185EBCA8DULL, 0x108827705704EFC6ULL }, /* XSUM_XXH3_testdata[8097] */ + { 4049, 0x0000000000000000ULL, 0xB8E89026CB7C7029ULL }, /* XSUM_XXH3_testdata[8098] */ + { 4049, 0x9E3779B185EBCA8DULL, 0xB61ABB09B081A25DULL }, /* XSUM_XXH3_testdata[8099] */ + { 4050, 0x0000000000000000ULL, 0xEDF79795BF9144C8ULL }, /* XSUM_XXH3_testdata[8100] */ + { 4050, 0x9E3779B185EBCA8DULL, 0xB74696F2CA2997D1ULL }, /* XSUM_XXH3_testdata[8101] */ + { 4051, 0x0000000000000000ULL, 0xC729C7AC4BB14964ULL }, /* XSUM_XXH3_testdata[8102] */ + { 4051, 0x9E3779B185EBCA8DULL, 0x9D1CABF0F0D96765ULL }, /* XSUM_XXH3_testdata[8103] */ + { 4052, 0x0000000000000000ULL, 0x609A24843463E169ULL }, /* XSUM_XXH3_testdata[8104] */ + { 4052, 0x9E3779B185EBCA8DULL, 0xB87E44998D71C162ULL }, /* XSUM_XXH3_testdata[8105] */ + { 4053, 0x0000000000000000ULL, 0x1BED4238AF1CB24BULL }, /* XSUM_XXH3_testdata[8106] */ + { 4053, 0x9E3779B185EBCA8DULL, 0x31D93BB2EA4F386FULL }, /* XSUM_XXH3_testdata[8107] */ + { 4054, 0x0000000000000000ULL, 0x770B55A6A483BCA4ULL }, /* XSUM_XXH3_testdata[8108] */ + { 4054, 0x9E3779B185EBCA8DULL, 0xBA70C2B74F653493ULL }, /* XSUM_XXH3_testdata[8109] */ + { 4055, 0x0000000000000000ULL, 0x23D3E35D5AD116E8ULL }, /* XSUM_XXH3_testdata[8110] */ + { 4055, 0x9E3779B185EBCA8DULL, 0xE340C14E0B16781EULL }, /* XSUM_XXH3_testdata[8111] */ + { 4056, 0x0000000000000000ULL, 0x8F52A469B0314027ULL }, /* XSUM_XXH3_testdata[8112] */ + { 4056, 0x9E3779B185EBCA8DULL, 0x42E9D3AABC86D1A3ULL }, /* XSUM_XXH3_testdata[8113] */ + { 4057, 0x0000000000000000ULL, 0xE80E3D01DFC0DFAAULL }, /* XSUM_XXH3_testdata[8114] */ + { 4057, 0x9E3779B185EBCA8DULL, 0x8331A93BCEA6A7E7ULL }, /* XSUM_XXH3_testdata[8115] */ + { 4058, 0x0000000000000000ULL, 0xA46F0713D1D96AACULL }, /* XSUM_XXH3_testdata[8116] */ + { 4058, 0x9E3779B185EBCA8DULL, 0x12226CE027536089ULL }, /* XSUM_XXH3_testdata[8117] */ + { 4059, 0x0000000000000000ULL, 0x48AB03C22EA5B06FULL }, /* XSUM_XXH3_testdata[8118] */ + { 4059, 0x9E3779B185EBCA8DULL, 0x781B9FE3805E8D49ULL }, /* XSUM_XXH3_testdata[8119] */ + { 4060, 0x0000000000000000ULL, 0x1CF540D651D84B2CULL }, /* XSUM_XXH3_testdata[8120] */ + { 4060, 0x9E3779B185EBCA8DULL, 0x9B2A4997E91BB32CULL }, /* XSUM_XXH3_testdata[8121] */ + { 4061, 0x0000000000000000ULL, 0x395B9F1A3476D098ULL }, /* XSUM_XXH3_testdata[8122] */ + { 4061, 0x9E3779B185EBCA8DULL, 0x00E4E50A72AE87DBULL }, /* XSUM_XXH3_testdata[8123] */ + { 4062, 0x0000000000000000ULL, 0x613625FF381D6585ULL }, /* XSUM_XXH3_testdata[8124] */ + { 4062, 0x9E3779B185EBCA8DULL, 0xDF96924A26842033ULL }, /* XSUM_XXH3_testdata[8125] */ + { 4063, 0x0000000000000000ULL, 0x44A5F2DC91EFDB81ULL }, /* XSUM_XXH3_testdata[8126] */ + { 4063, 0x9E3779B185EBCA8DULL, 0x5A763652DB9F7AA1ULL }, /* XSUM_XXH3_testdata[8127] */ + { 4064, 0x0000000000000000ULL, 0xD005690B90F42B3DULL }, /* XSUM_XXH3_testdata[8128] */ + { 4064, 0x9E3779B185EBCA8DULL, 0x6646113CF792EFCCULL }, /* XSUM_XXH3_testdata[8129] */ + { 4065, 0x0000000000000000ULL, 0x2AABD3E749018693ULL }, /* XSUM_XXH3_testdata[8130] */ + { 4065, 0x9E3779B185EBCA8DULL, 0x8F69704EFAFC7CE6ULL }, /* XSUM_XXH3_testdata[8131] */ + { 4066, 0x0000000000000000ULL, 0xBD32EC6AC8590941ULL }, /* XSUM_XXH3_testdata[8132] */ + { 4066, 0x9E3779B185EBCA8DULL, 0xAFDC666E089AD97FULL }, /* XSUM_XXH3_testdata[8133] */ + { 4067, 0x0000000000000000ULL, 0x17F48E89EA383997ULL }, /* XSUM_XXH3_testdata[8134] */ + { 4067, 0x9E3779B185EBCA8DULL, 0xE80949C6577D0B1DULL }, /* XSUM_XXH3_testdata[8135] */ + { 4068, 0x0000000000000000ULL, 0x409EE52A6BB82E50ULL }, /* XSUM_XXH3_testdata[8136] */ + { 4068, 0x9E3779B185EBCA8DULL, 0x83B486082089F055ULL }, /* XSUM_XXH3_testdata[8137] */ + { 4069, 0x0000000000000000ULL, 0x2A37D8C283560A96ULL }, /* XSUM_XXH3_testdata[8138] */ + { 4069, 0x9E3779B185EBCA8DULL, 0x9FFAAF61614F195BULL }, /* XSUM_XXH3_testdata[8139] */ + { 4070, 0x0000000000000000ULL, 0xB6BD6711BD542608ULL }, /* XSUM_XXH3_testdata[8140] */ + { 4070, 0x9E3779B185EBCA8DULL, 0xBA4BF117D8520CC6ULL }, /* XSUM_XXH3_testdata[8141] */ + { 4071, 0x0000000000000000ULL, 0x0DED6A95422B54AAULL }, /* XSUM_XXH3_testdata[8142] */ + { 4071, 0x9E3779B185EBCA8DULL, 0x73019662E3B7E5A5ULL }, /* XSUM_XXH3_testdata[8143] */ + { 4072, 0x0000000000000000ULL, 0x617DBA28E3EF7CCFULL }, /* XSUM_XXH3_testdata[8144] */ + { 4072, 0x9E3779B185EBCA8DULL, 0x42B5B0478A2F9F19ULL }, /* XSUM_XXH3_testdata[8145] */ + { 4073, 0x0000000000000000ULL, 0x985E6670B051042DULL }, /* XSUM_XXH3_testdata[8146] */ + { 4073, 0x9E3779B185EBCA8DULL, 0xF2271200229B7305ULL }, /* XSUM_XXH3_testdata[8147] */ + { 4074, 0x0000000000000000ULL, 0x683A8A468EDB302EULL }, /* XSUM_XXH3_testdata[8148] */ + { 4074, 0x9E3779B185EBCA8DULL, 0xAEFB4E179FED9C88ULL }, /* XSUM_XXH3_testdata[8149] */ + { 4075, 0x0000000000000000ULL, 0xE00A8B375D31275AULL }, /* XSUM_XXH3_testdata[8150] */ + { 4075, 0x9E3779B185EBCA8DULL, 0x9FA2D2CA8DDBBCF3ULL }, /* XSUM_XXH3_testdata[8151] */ + { 4076, 0x0000000000000000ULL, 0x1D09F151EC8021E5ULL }, /* XSUM_XXH3_testdata[8152] */ + { 4076, 0x9E3779B185EBCA8DULL, 0x73A09B83EE65723CULL }, /* XSUM_XXH3_testdata[8153] */ + { 4077, 0x0000000000000000ULL, 0xA3C2A4A8FB52E329ULL }, /* XSUM_XXH3_testdata[8154] */ + { 4077, 0x9E3779B185EBCA8DULL, 0x27701C5AF11C0069ULL }, /* XSUM_XXH3_testdata[8155] */ + { 4078, 0x0000000000000000ULL, 0x6670C8D7DEC04183ULL }, /* XSUM_XXH3_testdata[8156] */ + { 4078, 0x9E3779B185EBCA8DULL, 0x6AFE8BB05CA6B943ULL }, /* XSUM_XXH3_testdata[8157] */ + { 4079, 0x0000000000000000ULL, 0x8A5BBE290F81A57EULL }, /* XSUM_XXH3_testdata[8158] */ + { 4079, 0x9E3779B185EBCA8DULL, 0x7C522C7AE0D03876ULL }, /* XSUM_XXH3_testdata[8159] */ + { 4080, 0x0000000000000000ULL, 0x7ED2234F362A97D5ULL }, /* XSUM_XXH3_testdata[8160] */ + { 4080, 0x9E3779B185EBCA8DULL, 0x7F3D70A7E5B3F9A1ULL }, /* XSUM_XXH3_testdata[8161] */ + { 4081, 0x0000000000000000ULL, 0x1B8EAFCDF80BBDFDULL }, /* XSUM_XXH3_testdata[8162] */ + { 4081, 0x9E3779B185EBCA8DULL, 0x02E79635CCC002EEULL }, /* XSUM_XXH3_testdata[8163] */ + { 4082, 0x0000000000000000ULL, 0x5013EF2EAA3C5683ULL }, /* XSUM_XXH3_testdata[8164] */ + { 4082, 0x9E3779B185EBCA8DULL, 0x3C373EC1D9A78477ULL }, /* XSUM_XXH3_testdata[8165] */ + { 4083, 0x0000000000000000ULL, 0x4981B6B6B69E0F80ULL }, /* XSUM_XXH3_testdata[8166] */ + { 4083, 0x9E3779B185EBCA8DULL, 0x3058EC4F3EDDDA22ULL }, /* XSUM_XXH3_testdata[8167] */ + { 4084, 0x0000000000000000ULL, 0x1EC74897CEDF2D47ULL }, /* XSUM_XXH3_testdata[8168] */ + { 4084, 0x9E3779B185EBCA8DULL, 0xB212E516ADC3536BULL }, /* XSUM_XXH3_testdata[8169] */ + { 4085, 0x0000000000000000ULL, 0x267430998005772AULL }, /* XSUM_XXH3_testdata[8170] */ + { 4085, 0x9E3779B185EBCA8DULL, 0xDDA517E217ED7B80ULL }, /* XSUM_XXH3_testdata[8171] */ + { 4086, 0x0000000000000000ULL, 0xC9DDE2A74BA8925FULL }, /* XSUM_XXH3_testdata[8172] */ + { 4086, 0x9E3779B185EBCA8DULL, 0xB9C9D4582A006BEAULL }, /* XSUM_XXH3_testdata[8173] */ + { 4087, 0x0000000000000000ULL, 0x563098BE90EC168FULL }, /* XSUM_XXH3_testdata[8174] */ + { 4087, 0x9E3779B185EBCA8DULL, 0xDFA20FC688D0AF48ULL }, /* XSUM_XXH3_testdata[8175] */ + { 4088, 0x0000000000000000ULL, 0xA36A687AAB49E554ULL }, /* XSUM_XXH3_testdata[8176] */ + { 4088, 0x9E3779B185EBCA8DULL, 0x379BF665192E4775ULL }, /* XSUM_XXH3_testdata[8177] */ + { 4089, 0x0000000000000000ULL, 0x34338C8FF9753005ULL }, /* XSUM_XXH3_testdata[8178] */ + { 4089, 0x9E3779B185EBCA8DULL, 0x0A508219A77780C7ULL }, /* XSUM_XXH3_testdata[8179] */ + { 4090, 0x0000000000000000ULL, 0x7614D500BBB0CB51ULL }, /* XSUM_XXH3_testdata[8180] */ + { 4090, 0x9E3779B185EBCA8DULL, 0x9F2E62A9B61FDAD5ULL }, /* XSUM_XXH3_testdata[8181] */ + { 4091, 0x0000000000000000ULL, 0x81DDA05D3E0F7E7DULL }, /* XSUM_XXH3_testdata[8182] */ + { 4091, 0x9E3779B185EBCA8DULL, 0x37DACC934EF3BCF8ULL }, /* XSUM_XXH3_testdata[8183] */ + { 4092, 0x0000000000000000ULL, 0xA1CB210DD29A93C4ULL }, /* XSUM_XXH3_testdata[8184] */ + { 4092, 0x9E3779B185EBCA8DULL, 0xEFB39BD4EA2906AEULL }, /* XSUM_XXH3_testdata[8185] */ + { 4093, 0x0000000000000000ULL, 0x43E2C26AF42C201AULL }, /* XSUM_XXH3_testdata[8186] */ + { 4093, 0x9E3779B185EBCA8DULL, 0xF693A0588A836DD0ULL }, /* XSUM_XXH3_testdata[8187] */ + { 4094, 0x0000000000000000ULL, 0x197717AFE7C9B73EULL }, /* XSUM_XXH3_testdata[8188] */ + { 4094, 0x9E3779B185EBCA8DULL, 0x2F2B070D052B1D2DULL }, /* XSUM_XXH3_testdata[8189] */ + { 4095, 0x0000000000000000ULL, 0x3044187222AB0EFBULL }, /* XSUM_XXH3_testdata[8190] */ + { 4095, 0x9E3779B185EBCA8DULL, 0x9F7DDF29C377A8ECULL }, /* XSUM_XXH3_testdata[8191] */ + { 4096, 0x0000000000000000ULL, 0xE91206429D1F48F9ULL }, /* XSUM_XXH3_testdata[8192] */ + { 4096, 0x9E3779B185EBCA8DULL, 0x2A3BBB20A5439DCDULL }, /* XSUM_XXH3_testdata[8193] */ + { 4097, 0x0000000000000000ULL, 0xDAC80D543E339451ULL }, /* XSUM_XXH3_testdata[8194] */ + { 4097, 0x9E3779B185EBCA8DULL, 0xA78887A19A340214ULL }, /* XSUM_XXH3_testdata[8195] */ + { 4098, 0x0000000000000000ULL, 0x536E2124F23DF4DCULL }, /* XSUM_XXH3_testdata[8196] */ + { 4098, 0x9E3779B185EBCA8DULL, 0x63604DD99F9A0D25ULL }, /* XSUM_XXH3_testdata[8197] */ + { 4099, 0x0000000000000000ULL, 0x318D235ABA648B01ULL }, /* XSUM_XXH3_testdata[8198] */ + { 4099, 0x9E3779B185EBCA8DULL, 0x7849F825702B5C2FULL }, /* XSUM_XXH3_testdata[8199] */ + { 4100, 0x0000000000000000ULL, 0x708DA8E991EA3767ULL }, /* XSUM_XXH3_testdata[8200] */ + { 4100, 0x9E3779B185EBCA8DULL, 0x68C5E93C2C55D53FULL }, /* XSUM_XXH3_testdata[8201] */ + { 4101, 0x0000000000000000ULL, 0x7B6E0277636B7D11ULL }, /* XSUM_XXH3_testdata[8202] */ + { 4101, 0x9E3779B185EBCA8DULL, 0x0415084858687771ULL }, /* XSUM_XXH3_testdata[8203] */ + { 4102, 0x0000000000000000ULL, 0x9B7212296B317024ULL }, /* XSUM_XXH3_testdata[8204] */ + { 4102, 0x9E3779B185EBCA8DULL, 0xB508A2861AA205C7ULL }, /* XSUM_XXH3_testdata[8205] */ + { 4103, 0x0000000000000000ULL, 0xD6E778C94923EA44ULL }, /* XSUM_XXH3_testdata[8206] */ + { 4103, 0x9E3779B185EBCA8DULL, 0x917A70D1756179ADULL }, /* XSUM_XXH3_testdata[8207] */ + { 4104, 0x0000000000000000ULL, 0x7E6885379F309E58ULL }, /* XSUM_XXH3_testdata[8208] */ + { 4104, 0x9E3779B185EBCA8DULL, 0xDD8CBBA844976FDAULL }, /* XSUM_XXH3_testdata[8209] */ + { 4105, 0x0000000000000000ULL, 0x01B01BA093BD2B56ULL }, /* XSUM_XXH3_testdata[8210] */ + { 4105, 0x9E3779B185EBCA8DULL, 0x6831B8F9AF88C06EULL }, /* XSUM_XXH3_testdata[8211] */ + { 4106, 0x0000000000000000ULL, 0x8E223FE2C8A6C523ULL }, /* XSUM_XXH3_testdata[8212] */ + { 4106, 0x9E3779B185EBCA8DULL, 0x236C0B797A639A03ULL }, /* XSUM_XXH3_testdata[8213] */ + { 4107, 0x0000000000000000ULL, 0xCB55589B16B7596EULL }, /* XSUM_XXH3_testdata[8214] */ + { 4107, 0x9E3779B185EBCA8DULL, 0x822FD6CBD55DEAF3ULL }, /* XSUM_XXH3_testdata[8215] */ + { 4108, 0x0000000000000000ULL, 0xD2B50F5E142497B9ULL }, /* XSUM_XXH3_testdata[8216] */ + { 4108, 0x9E3779B185EBCA8DULL, 0xCC1DCFF11EE70755ULL }, /* XSUM_XXH3_testdata[8217] */ + { 4109, 0x0000000000000000ULL, 0x54D5D3B1358B288AULL }, /* XSUM_XXH3_testdata[8218] */ + { 4109, 0x9E3779B185EBCA8DULL, 0x7EE3373734321C73ULL }, /* XSUM_XXH3_testdata[8219] */ + { 4110, 0x0000000000000000ULL, 0xC005E3BEDA002458ULL }, /* XSUM_XXH3_testdata[8220] */ + { 4110, 0x9E3779B185EBCA8DULL, 0xABFAC6375AEC37C7ULL }, /* XSUM_XXH3_testdata[8221] */ + { 4111, 0x0000000000000000ULL, 0xA7F37BEB267E36E5ULL }, /* XSUM_XXH3_testdata[8222] */ + { 4111, 0x9E3779B185EBCA8DULL, 0x7E001F4B3ECFB1C9ULL }, /* XSUM_XXH3_testdata[8223] */ + { 4112, 0x0000000000000000ULL, 0xE6C6754333B04AA6ULL }, /* XSUM_XXH3_testdata[8224] */ + { 4112, 0x9E3779B185EBCA8DULL, 0x7568121A6F2E2F51ULL }, /* XSUM_XXH3_testdata[8225] */ + { 4113, 0x0000000000000000ULL, 0x01F24DFB53ED6D89ULL }, /* XSUM_XXH3_testdata[8226] */ + { 4113, 0x9E3779B185EBCA8DULL, 0x3912A517D7CB58BEULL }, /* XSUM_XXH3_testdata[8227] */ + { 4114, 0x0000000000000000ULL, 0xDF151F68306972B7ULL }, /* XSUM_XXH3_testdata[8228] */ + { 4114, 0x9E3779B185EBCA8DULL, 0x52FA1526770C4EC7ULL }, /* XSUM_XXH3_testdata[8229] */ + { 4115, 0x0000000000000000ULL, 0xE98596DA3274CFBAULL }, /* XSUM_XXH3_testdata[8230] */ + { 4115, 0x9E3779B185EBCA8DULL, 0x1C3B5137394A9482ULL }, /* XSUM_XXH3_testdata[8231] */ + { 4116, 0x0000000000000000ULL, 0x44E1F7DD02552FB6ULL }, /* XSUM_XXH3_testdata[8232] */ + { 4116, 0x9E3779B185EBCA8DULL, 0x08F4B72C651043BAULL }, /* XSUM_XXH3_testdata[8233] */ + { 4117, 0x0000000000000000ULL, 0x28DF58954DE4025FULL }, /* XSUM_XXH3_testdata[8234] */ + { 4117, 0x9E3779B185EBCA8DULL, 0xAB508A47A93BB882ULL }, /* XSUM_XXH3_testdata[8235] */ + { 4118, 0x0000000000000000ULL, 0x2D6AD31EABD0EF8BULL }, /* XSUM_XXH3_testdata[8236] */ + { 4118, 0x9E3779B185EBCA8DULL, 0x8352B0B7C75E5F9BULL }, /* XSUM_XXH3_testdata[8237] */ + { 4119, 0x0000000000000000ULL, 0x29C77571022B3DFCULL }, /* XSUM_XXH3_testdata[8238] */ + { 4119, 0x9E3779B185EBCA8DULL, 0xAA05BDB0FF756E28ULL }, /* XSUM_XXH3_testdata[8239] */ + { 4120, 0x0000000000000000ULL, 0xF78F1E6B64FC4FAFULL }, /* XSUM_XXH3_testdata[8240] */ + { 4120, 0x9E3779B185EBCA8DULL, 0x2AF071ED04DE3706ULL }, /* XSUM_XXH3_testdata[8241] */ + { 4121, 0x0000000000000000ULL, 0x9F07644999D631FEULL }, /* XSUM_XXH3_testdata[8242] */ + { 4121, 0x9E3779B185EBCA8DULL, 0x58D5AED23AC86D18ULL }, /* XSUM_XXH3_testdata[8243] */ + { 4122, 0x0000000000000000ULL, 0xAB4CD24CD29D8970ULL }, /* XSUM_XXH3_testdata[8244] */ + { 4122, 0x9E3779B185EBCA8DULL, 0x7BAD5355D287C703ULL }, /* XSUM_XXH3_testdata[8245] */ + { 4123, 0x0000000000000000ULL, 0x2F9C1C05A78B37D8ULL }, /* XSUM_XXH3_testdata[8246] */ + { 4123, 0x9E3779B185EBCA8DULL, 0x4A8959FCB1E4E4AFULL }, /* XSUM_XXH3_testdata[8247] */ + { 4124, 0x0000000000000000ULL, 0x35AD8F65591B2C05ULL }, /* XSUM_XXH3_testdata[8248] */ + { 4124, 0x9E3779B185EBCA8DULL, 0x603CCE1C74CED430ULL }, /* XSUM_XXH3_testdata[8249] */ + { 4125, 0x0000000000000000ULL, 0xBEBE4BF06A34E0ADULL }, /* XSUM_XXH3_testdata[8250] */ + { 4125, 0x9E3779B185EBCA8DULL, 0xB9DE0F8488404CE1ULL }, /* XSUM_XXH3_testdata[8251] */ + { 4126, 0x0000000000000000ULL, 0xD5B0CFEE781B17F4ULL }, /* XSUM_XXH3_testdata[8252] */ + { 4126, 0x9E3779B185EBCA8DULL, 0xEC08F7276FD854C4ULL }, /* XSUM_XXH3_testdata[8253] */ + { 4127, 0x0000000000000000ULL, 0x60E4E4B2B75A028FULL }, /* XSUM_XXH3_testdata[8254] */ + { 4127, 0x9E3779B185EBCA8DULL, 0x3640249C9E7F6A99ULL }, /* XSUM_XXH3_testdata[8255] */ + { 4128, 0x0000000000000000ULL, 0x58F87C03A5109698ULL }, /* XSUM_XXH3_testdata[8256] */ + { 4128, 0x9E3779B185EBCA8DULL, 0x099F06BA6D0AEA6EULL }, /* XSUM_XXH3_testdata[8257] */ + { 4129, 0x0000000000000000ULL, 0xFD79517DA353C9C7ULL }, /* XSUM_XXH3_testdata[8258] */ + { 4129, 0x9E3779B185EBCA8DULL, 0x1CFB7C71EE7A3874ULL }, /* XSUM_XXH3_testdata[8259] */ + { 4130, 0x0000000000000000ULL, 0xD0F8D653F6C74FF0ULL }, /* XSUM_XXH3_testdata[8260] */ + { 4130, 0x9E3779B185EBCA8DULL, 0x8031A56A7D2F92AEULL }, /* XSUM_XXH3_testdata[8261] */ + { 4131, 0x0000000000000000ULL, 0x951F461DB8CD496CULL }, /* XSUM_XXH3_testdata[8262] */ + { 4131, 0x9E3779B185EBCA8DULL, 0x7A407673EB490FF5ULL }, /* XSUM_XXH3_testdata[8263] */ + { 4132, 0x0000000000000000ULL, 0x7645BA69A2B2FF52ULL }, /* XSUM_XXH3_testdata[8264] */ + { 4132, 0x9E3779B185EBCA8DULL, 0x77B67ABE4C6842A2ULL }, /* XSUM_XXH3_testdata[8265] */ + { 4133, 0x0000000000000000ULL, 0xB1793BB4317787F8ULL }, /* XSUM_XXH3_testdata[8266] */ + { 4133, 0x9E3779B185EBCA8DULL, 0x13CDADE8147771D8ULL }, /* XSUM_XXH3_testdata[8267] */ + { 4134, 0x0000000000000000ULL, 0x06DEEEE425EAEC97ULL }, /* XSUM_XXH3_testdata[8268] */ + { 4134, 0x9E3779B185EBCA8DULL, 0x47410600B8A6DC30ULL }, /* XSUM_XXH3_testdata[8269] */ + { 4135, 0x0000000000000000ULL, 0x07794C32F9ABB48FULL }, /* XSUM_XXH3_testdata[8270] */ + { 4135, 0x9E3779B185EBCA8DULL, 0x965359AACAED70CDULL }, /* XSUM_XXH3_testdata[8271] */ + { 4136, 0x0000000000000000ULL, 0xCFD131A86A9BAD5DULL }, /* XSUM_XXH3_testdata[8272] */ + { 4136, 0x9E3779B185EBCA8DULL, 0x9D698ADA391EBBD6ULL }, /* XSUM_XXH3_testdata[8273] */ + { 4137, 0x0000000000000000ULL, 0x609D2C8FFEDC356AULL }, /* XSUM_XXH3_testdata[8274] */ + { 4137, 0x9E3779B185EBCA8DULL, 0xFC186A81B9635DA7ULL }, /* XSUM_XXH3_testdata[8275] */ + { 4138, 0x0000000000000000ULL, 0x593FBE1328A081C8ULL }, /* XSUM_XXH3_testdata[8276] */ + { 4138, 0x9E3779B185EBCA8DULL, 0x886E386B2E8BAF4FULL }, /* XSUM_XXH3_testdata[8277] */ + { 4139, 0x0000000000000000ULL, 0x35C0267703DEB52AULL }, /* XSUM_XXH3_testdata[8278] */ + { 4139, 0x9E3779B185EBCA8DULL, 0x1335705DF9DFF4AFULL }, /* XSUM_XXH3_testdata[8279] */ + { 4140, 0x0000000000000000ULL, 0x5B9C2CCB1A190108ULL }, /* XSUM_XXH3_testdata[8280] */ + { 4140, 0x9E3779B185EBCA8DULL, 0xB4460979100B3C8FULL }, /* XSUM_XXH3_testdata[8281] */ + { 4141, 0x0000000000000000ULL, 0x3CE6D83750A87654ULL }, /* XSUM_XXH3_testdata[8282] */ + { 4141, 0x9E3779B185EBCA8DULL, 0xDA80A64ABB430483ULL }, /* XSUM_XXH3_testdata[8283] */ + { 4142, 0x0000000000000000ULL, 0x1162D413E7ED9194ULL }, /* XSUM_XXH3_testdata[8284] */ + { 4142, 0x9E3779B185EBCA8DULL, 0xC7C177607C970768ULL }, /* XSUM_XXH3_testdata[8285] */ + { 4143, 0x0000000000000000ULL, 0x8CE229BE4C9AAD31ULL }, /* XSUM_XXH3_testdata[8286] */ + { 4143, 0x9E3779B185EBCA8DULL, 0xF68CF2EDEE66AA53ULL }, /* XSUM_XXH3_testdata[8287] */ + { 4144, 0x0000000000000000ULL, 0xA360545F02F6A5ECULL }, /* XSUM_XXH3_testdata[8288] */ + { 4144, 0x9E3779B185EBCA8DULL, 0xBEB893BE02633B6EULL }, /* XSUM_XXH3_testdata[8289] */ + { 4145, 0x0000000000000000ULL, 0xABD8127787B83F8EULL }, /* XSUM_XXH3_testdata[8290] */ + { 4145, 0x9E3779B185EBCA8DULL, 0xD452D7D8018971B4ULL }, /* XSUM_XXH3_testdata[8291] */ + { 4146, 0x0000000000000000ULL, 0x5C926EB5DB8927D2ULL }, /* XSUM_XXH3_testdata[8292] */ + { 4146, 0x9E3779B185EBCA8DULL, 0x7B4A283B13347765ULL }, /* XSUM_XXH3_testdata[8293] */ + { 4147, 0x0000000000000000ULL, 0x53622CE56808C5A5ULL }, /* XSUM_XXH3_testdata[8294] */ + { 4147, 0x9E3779B185EBCA8DULL, 0x540B305923998D7CULL }, /* XSUM_XXH3_testdata[8295] */ + { 4148, 0x0000000000000000ULL, 0x4C76DFDDEE340812ULL }, /* XSUM_XXH3_testdata[8296] */ + { 4148, 0x9E3779B185EBCA8DULL, 0x9015A06A74AAF7ADULL }, /* XSUM_XXH3_testdata[8297] */ + { 4149, 0x0000000000000000ULL, 0xC8BC0D4587507A82ULL }, /* XSUM_XXH3_testdata[8298] */ + { 4149, 0x9E3779B185EBCA8DULL, 0x49078EE634DAC055ULL }, /* XSUM_XXH3_testdata[8299] */ + { 4150, 0x0000000000000000ULL, 0xF361427C856A2130ULL }, /* XSUM_XXH3_testdata[8300] */ + { 4150, 0x9E3779B185EBCA8DULL, 0x2C274D3B17BDAB2BULL }, /* XSUM_XXH3_testdata[8301] */ + { 4151, 0x0000000000000000ULL, 0x73C28767099B7F10ULL }, /* XSUM_XXH3_testdata[8302] */ + { 4151, 0x9E3779B185EBCA8DULL, 0x50D6EF8D5079F59EULL }, /* XSUM_XXH3_testdata[8303] */ + { 4152, 0x0000000000000000ULL, 0xCD366C29C2EFCBEEULL }, /* XSUM_XXH3_testdata[8304] */ + { 4152, 0x9E3779B185EBCA8DULL, 0x788CA0DA89BA7994ULL }, /* XSUM_XXH3_testdata[8305] */ + { 4153, 0x0000000000000000ULL, 0xDECDEB44E10C8AEDULL }, /* XSUM_XXH3_testdata[8306] */ + { 4153, 0x9E3779B185EBCA8DULL, 0xF9EC4FC72ED3022BULL }, /* XSUM_XXH3_testdata[8307] */ + { 4154, 0x0000000000000000ULL, 0x3D275C1B1AE8039BULL }, /* XSUM_XXH3_testdata[8308] */ + { 4154, 0x9E3779B185EBCA8DULL, 0xA5102A522AA1A09FULL }, /* XSUM_XXH3_testdata[8309] */ + { 4155, 0x0000000000000000ULL, 0xA4FDF77C6F559146ULL }, /* XSUM_XXH3_testdata[8310] */ + { 4155, 0x9E3779B185EBCA8DULL, 0x35C840E2E19D43F2ULL }, /* XSUM_XXH3_testdata[8311] */ + { 4156, 0x0000000000000000ULL, 0xF813FD5B27829876ULL }, /* XSUM_XXH3_testdata[8312] */ + { 4156, 0x9E3779B185EBCA8DULL, 0xF7111F8114507DD9ULL }, /* XSUM_XXH3_testdata[8313] */ + { 4157, 0x0000000000000000ULL, 0xF42176B56C73715FULL }, /* XSUM_XXH3_testdata[8314] */ + { 4157, 0x9E3779B185EBCA8DULL, 0x077018E0E617CDEBULL }, /* XSUM_XXH3_testdata[8315] */ + { 4158, 0x0000000000000000ULL, 0xEDBE4799591C4E15ULL }, /* XSUM_XXH3_testdata[8316] */ + { 4158, 0x9E3779B185EBCA8DULL, 0xB2707B4590CF62F7ULL }, /* XSUM_XXH3_testdata[8317] */ + { 4159, 0x0000000000000000ULL, 0x4414D090B4A6043FULL }, /* XSUM_XXH3_testdata[8318] */ + { 4159, 0x9E3779B185EBCA8DULL, 0x19BC48EE50380E4DULL }, /* XSUM_XXH3_testdata[8319] */ + { 4160, 0x0000000000000000ULL, 0x4F323B15321E94E1ULL }, /* XSUM_XXH3_testdata[8320] */ + { 4160, 0x9E3779B185EBCA8DULL, 0x1BF6F5FAF9EECABDULL }, /* XSUM_XXH3_testdata[8321] */ +}; +static const XSUM_testdata64_t XSUM_XXH3_withSecret_testdata[] = { + { 0, 0x0000000000000000ULL, 0x3559D64878C5C66CULL }, /* XSUM_XXH3_withSecret_testdata[0] */ + { 1, 0x0000000000000000ULL, 0x8A52451418B2DA4DULL }, /* XSUM_XXH3_withSecret_testdata[1] */ + { 2, 0x0000000000000000ULL, 0x37F66AEA23328C98ULL }, /* XSUM_XXH3_withSecret_testdata[2] */ + { 3, 0x0000000000000000ULL, 0xE9AF94712FFBC846ULL }, /* XSUM_XXH3_withSecret_testdata[3] */ + { 4, 0x0000000000000000ULL, 0x95806659C700BBA1ULL }, /* XSUM_XXH3_withSecret_testdata[4] */ + { 5, 0x0000000000000000ULL, 0xF330D2654243E681ULL }, /* XSUM_XXH3_withSecret_testdata[5] */ + { 6, 0x0000000000000000ULL, 0x82C90AB0519369ADULL }, /* XSUM_XXH3_withSecret_testdata[6] */ + { 7, 0x0000000000000000ULL, 0xB0DD580D8AE16969ULL }, /* XSUM_XXH3_withSecret_testdata[7] */ + { 8, 0x0000000000000000ULL, 0x2A4B7E158EEA2325ULL }, /* XSUM_XXH3_withSecret_testdata[8] */ + { 9, 0x0000000000000000ULL, 0x292020119372149AULL }, /* XSUM_XXH3_withSecret_testdata[9] */ + { 10, 0x0000000000000000ULL, 0xBAE944C604D2F7E2ULL }, /* XSUM_XXH3_withSecret_testdata[10] */ + { 11, 0x0000000000000000ULL, 0xE034868A5C3D79E1ULL }, /* XSUM_XXH3_withSecret_testdata[11] */ + { 12, 0x0000000000000000ULL, 0x14631E773B78EC57ULL }, /* XSUM_XXH3_withSecret_testdata[12] */ + { 13, 0x0000000000000000ULL, 0x046C4D0B259A8ED1ULL }, /* XSUM_XXH3_withSecret_testdata[13] */ + { 14, 0x0000000000000000ULL, 0xD51F460536B5159FULL }, /* XSUM_XXH3_withSecret_testdata[14] */ + { 15, 0x0000000000000000ULL, 0x5137DFDCDF711355ULL }, /* XSUM_XXH3_withSecret_testdata[15] */ + { 16, 0x0000000000000000ULL, 0x62CBA613B281FF2EULL }, /* XSUM_XXH3_withSecret_testdata[16] */ + { 17, 0x0000000000000000ULL, 0xDFFB6E4943FAC2A4ULL }, /* XSUM_XXH3_withSecret_testdata[17] */ + { 18, 0x0000000000000000ULL, 0xDABD833C6B48BD26ULL }, /* XSUM_XXH3_withSecret_testdata[18] */ + { 19, 0x0000000000000000ULL, 0x56DD3B238964D62BULL }, /* XSUM_XXH3_withSecret_testdata[19] */ + { 20, 0x0000000000000000ULL, 0x5667955699533B4FULL }, /* XSUM_XXH3_withSecret_testdata[20] */ + { 21, 0x0000000000000000ULL, 0x48B036105E5C5286ULL }, /* XSUM_XXH3_withSecret_testdata[21] */ + { 22, 0x0000000000000000ULL, 0xDF70A3841C192C38ULL }, /* XSUM_XXH3_withSecret_testdata[22] */ + { 23, 0x0000000000000000ULL, 0x9403DE49772A2DF2ULL }, /* XSUM_XXH3_withSecret_testdata[23] */ + { 24, 0x0000000000000000ULL, 0xCDD5542E4A9D9FE8ULL }, /* XSUM_XXH3_withSecret_testdata[24] */ + { 25, 0x0000000000000000ULL, 0xBA0BE98EE7AC4CCAULL }, /* XSUM_XXH3_withSecret_testdata[25] */ + { 26, 0x0000000000000000ULL, 0xB7D9FAA673781DF8ULL }, /* XSUM_XXH3_withSecret_testdata[26] */ + { 27, 0x0000000000000000ULL, 0x005313FE4BEE96D6ULL }, /* XSUM_XXH3_withSecret_testdata[27] */ + { 28, 0x0000000000000000ULL, 0xAAE47D2CD16D3F2AULL }, /* XSUM_XXH3_withSecret_testdata[28] */ + { 29, 0x0000000000000000ULL, 0xC86F13378C48F8DCULL }, /* XSUM_XXH3_withSecret_testdata[29] */ + { 30, 0x0000000000000000ULL, 0x05130E166DD9422BULL }, /* XSUM_XXH3_withSecret_testdata[30] */ + { 31, 0x0000000000000000ULL, 0xDA720D790C6EF860ULL }, /* XSUM_XXH3_withSecret_testdata[31] */ + { 32, 0x0000000000000000ULL, 0x671C68B8271754F9ULL }, /* XSUM_XXH3_withSecret_testdata[32] */ + { 33, 0x0000000000000000ULL, 0xADE168D383F3FD32ULL }, /* XSUM_XXH3_withSecret_testdata[33] */ + { 34, 0x0000000000000000ULL, 0x23CBB39531AB8F3EULL }, /* XSUM_XXH3_withSecret_testdata[34] */ + { 35, 0x0000000000000000ULL, 0x18C55343DAC1B386ULL }, /* XSUM_XXH3_withSecret_testdata[35] */ + { 36, 0x0000000000000000ULL, 0xDC3693247AD848AEULL }, /* XSUM_XXH3_withSecret_testdata[36] */ + { 37, 0x0000000000000000ULL, 0x5ABDD7FD663F3B7BULL }, /* XSUM_XXH3_withSecret_testdata[37] */ + { 38, 0x0000000000000000ULL, 0xBF7348F86B6D4622ULL }, /* XSUM_XXH3_withSecret_testdata[38] */ + { 39, 0x0000000000000000ULL, 0x646F1CFF8304EF22ULL }, /* XSUM_XXH3_withSecret_testdata[39] */ + { 40, 0x0000000000000000ULL, 0x52CFB7EAF0E391CBULL }, /* XSUM_XXH3_withSecret_testdata[40] */ + { 41, 0x0000000000000000ULL, 0x32D1852E7ECCFD48ULL }, /* XSUM_XXH3_withSecret_testdata[41] */ + { 42, 0x0000000000000000ULL, 0x09159A6F181A9368ULL }, /* XSUM_XXH3_withSecret_testdata[42] */ + { 43, 0x0000000000000000ULL, 0x55F8B6714943EB38ULL }, /* XSUM_XXH3_withSecret_testdata[43] */ + { 44, 0x0000000000000000ULL, 0x09CD14E518260406ULL }, /* XSUM_XXH3_withSecret_testdata[44] */ + { 45, 0x0000000000000000ULL, 0xD30F1C72440B7BB0ULL }, /* XSUM_XXH3_withSecret_testdata[45] */ + { 46, 0x0000000000000000ULL, 0x8FEC73FBB7A21C5BULL }, /* XSUM_XXH3_withSecret_testdata[46] */ + { 47, 0x0000000000000000ULL, 0x336C6496B997E855ULL }, /* XSUM_XXH3_withSecret_testdata[47] */ + { 48, 0x0000000000000000ULL, 0x33ABD54D094B2534ULL }, /* XSUM_XXH3_withSecret_testdata[48] */ + { 49, 0x0000000000000000ULL, 0x2B1CE6F959449BCDULL }, /* XSUM_XXH3_withSecret_testdata[49] */ + { 50, 0x0000000000000000ULL, 0xF7DD058C0283330CULL }, /* XSUM_XXH3_withSecret_testdata[50] */ + { 51, 0x0000000000000000ULL, 0x5D625EFDF535A046ULL }, /* XSUM_XXH3_withSecret_testdata[51] */ + { 52, 0x0000000000000000ULL, 0x8DD49B20F9B3125CULL }, /* XSUM_XXH3_withSecret_testdata[52] */ + { 53, 0x0000000000000000ULL, 0xF0FCEFB9D3F58F43ULL }, /* XSUM_XXH3_withSecret_testdata[53] */ + { 54, 0x0000000000000000ULL, 0x5CCB29EE646DDEAEULL }, /* XSUM_XXH3_withSecret_testdata[54] */ + { 55, 0x0000000000000000ULL, 0xB5DE9BA8EA4BB212ULL }, /* XSUM_XXH3_withSecret_testdata[55] */ + { 56, 0x0000000000000000ULL, 0x04F51FE1A8A70F5DULL }, /* XSUM_XXH3_withSecret_testdata[56] */ + { 57, 0x0000000000000000ULL, 0x71D8D5E44E590161ULL }, /* XSUM_XXH3_withSecret_testdata[57] */ + { 58, 0x0000000000000000ULL, 0x7EEE1C9584B621BFULL }, /* XSUM_XXH3_withSecret_testdata[58] */ + { 59, 0x0000000000000000ULL, 0x06D5FF5F54D5469EULL }, /* XSUM_XXH3_withSecret_testdata[59] */ + { 60, 0x0000000000000000ULL, 0x2B8257D168E66C7BULL }, /* XSUM_XXH3_withSecret_testdata[60] */ + { 61, 0x0000000000000000ULL, 0xA390B2C65A96D57DULL }, /* XSUM_XXH3_withSecret_testdata[61] */ + { 62, 0x0000000000000000ULL, 0x7F9C891EC45E96C5ULL }, /* XSUM_XXH3_withSecret_testdata[62] */ + { 63, 0x0000000000000000ULL, 0xD9D0ACB4CE3B9452ULL }, /* XSUM_XXH3_withSecret_testdata[63] */ + { 64, 0x0000000000000000ULL, 0x65DD3890700E5F6BULL }, /* XSUM_XXH3_withSecret_testdata[64] */ + { 65, 0x0000000000000000ULL, 0x0BC6DB31CCA62167ULL }, /* XSUM_XXH3_withSecret_testdata[65] */ + { 66, 0x0000000000000000ULL, 0x64A5E1A3C12870FAULL }, /* XSUM_XXH3_withSecret_testdata[66] */ + { 67, 0x0000000000000000ULL, 0x5D3CFA697D9E83F8ULL }, /* XSUM_XXH3_withSecret_testdata[67] */ + { 68, 0x0000000000000000ULL, 0x15A8FD16AB4A73A1ULL }, /* XSUM_XXH3_withSecret_testdata[68] */ + { 69, 0x0000000000000000ULL, 0xA310CDB5CBE63700ULL }, /* XSUM_XXH3_withSecret_testdata[69] */ + { 70, 0x0000000000000000ULL, 0x5012B948823B8378ULL }, /* XSUM_XXH3_withSecret_testdata[70] */ + { 71, 0x0000000000000000ULL, 0x346FBEA31AAA4CDFULL }, /* XSUM_XXH3_withSecret_testdata[71] */ + { 72, 0x0000000000000000ULL, 0x8F217AA1765AB20FULL }, /* XSUM_XXH3_withSecret_testdata[72] */ + { 73, 0x0000000000000000ULL, 0x5DF8C46D14F4D456ULL }, /* XSUM_XXH3_withSecret_testdata[73] */ + { 74, 0x0000000000000000ULL, 0x7C86AAAFB905F4E8ULL }, /* XSUM_XXH3_withSecret_testdata[74] */ + { 75, 0x0000000000000000ULL, 0x838A6D397FE89E48ULL }, /* XSUM_XXH3_withSecret_testdata[75] */ + { 76, 0x0000000000000000ULL, 0xA2BD114C0B33F1E1ULL }, /* XSUM_XXH3_withSecret_testdata[76] */ + { 77, 0x0000000000000000ULL, 0xF9D1EF170EAEE679ULL }, /* XSUM_XXH3_withSecret_testdata[77] */ + { 78, 0x0000000000000000ULL, 0x1BA1541EF00D50D4ULL }, /* XSUM_XXH3_withSecret_testdata[78] */ + { 79, 0x0000000000000000ULL, 0x55150B4191E34500ULL }, /* XSUM_XXH3_withSecret_testdata[79] */ + { 80, 0x0000000000000000ULL, 0xE687BA1684965297ULL }, /* XSUM_XXH3_withSecret_testdata[80] */ + { 81, 0x0000000000000000ULL, 0xEE3172013EB66468ULL }, /* XSUM_XXH3_withSecret_testdata[81] */ + { 82, 0x0000000000000000ULL, 0x5B4CEC8C93C89F5EULL }, /* XSUM_XXH3_withSecret_testdata[82] */ + { 83, 0x0000000000000000ULL, 0xCD0BB0C4FC4CE171ULL }, /* XSUM_XXH3_withSecret_testdata[83] */ + { 84, 0x0000000000000000ULL, 0x0683F3148469EF78ULL }, /* XSUM_XXH3_withSecret_testdata[84] */ + { 85, 0x0000000000000000ULL, 0xADD85B2564A7E2E3ULL }, /* XSUM_XXH3_withSecret_testdata[85] */ + { 86, 0x0000000000000000ULL, 0x7075D61ACEA99708ULL }, /* XSUM_XXH3_withSecret_testdata[86] */ + { 87, 0x0000000000000000ULL, 0xA16C803F7383626FULL }, /* XSUM_XXH3_withSecret_testdata[87] */ + { 88, 0x0000000000000000ULL, 0x079222B9BE64FC95ULL }, /* XSUM_XXH3_withSecret_testdata[88] */ + { 89, 0x0000000000000000ULL, 0x880A555C619764DFULL }, /* XSUM_XXH3_withSecret_testdata[89] */ + { 90, 0x0000000000000000ULL, 0xB064D888F7D53387ULL }, /* XSUM_XXH3_withSecret_testdata[90] */ + { 91, 0x0000000000000000ULL, 0xD5CECFB626C0F231ULL }, /* XSUM_XXH3_withSecret_testdata[91] */ + { 92, 0x0000000000000000ULL, 0xC72318AB57807760ULL }, /* XSUM_XXH3_withSecret_testdata[92] */ + { 93, 0x0000000000000000ULL, 0x32AD0E5F0E737AF3ULL }, /* XSUM_XXH3_withSecret_testdata[93] */ + { 94, 0x0000000000000000ULL, 0x4BC4E25822C43EB7ULL }, /* XSUM_XXH3_withSecret_testdata[94] */ + { 95, 0x0000000000000000ULL, 0x5EC2B13622C6DB03ULL }, /* XSUM_XXH3_withSecret_testdata[95] */ + { 96, 0x0000000000000000ULL, 0x4A4022DD9B2C1DD8ULL }, /* XSUM_XXH3_withSecret_testdata[96] */ + { 97, 0x0000000000000000ULL, 0x41439D447B314B71ULL }, /* XSUM_XXH3_withSecret_testdata[97] */ + { 98, 0x0000000000000000ULL, 0xC651E76710932928ULL }, /* XSUM_XXH3_withSecret_testdata[98] */ + { 99, 0x0000000000000000ULL, 0x820765F4F0A7908EULL }, /* XSUM_XXH3_withSecret_testdata[99] */ + { 100, 0x0000000000000000ULL, 0x940931CF46582AD4ULL }, /* XSUM_XXH3_withSecret_testdata[100] */ + { 101, 0x0000000000000000ULL, 0x25397176C5F1FDE5ULL }, /* XSUM_XXH3_withSecret_testdata[101] */ + { 102, 0x0000000000000000ULL, 0xB8F1B168AF3C1A6BULL }, /* XSUM_XXH3_withSecret_testdata[102] */ + { 103, 0x0000000000000000ULL, 0x5F6CA2B30813C0B2ULL }, /* XSUM_XXH3_withSecret_testdata[103] */ + { 104, 0x0000000000000000ULL, 0xF761C075A13B0912ULL }, /* XSUM_XXH3_withSecret_testdata[104] */ + { 105, 0x0000000000000000ULL, 0x8EEAB2036092CA61ULL }, /* XSUM_XXH3_withSecret_testdata[105] */ + { 106, 0x0000000000000000ULL, 0xB166FD29B26850CBULL }, /* XSUM_XXH3_withSecret_testdata[106] */ + { 107, 0x0000000000000000ULL, 0x964DC1A2BC5A511FULL }, /* XSUM_XXH3_withSecret_testdata[107] */ + { 108, 0x0000000000000000ULL, 0x79A6999EB100E953ULL }, /* XSUM_XXH3_withSecret_testdata[108] */ + { 109, 0x0000000000000000ULL, 0xC6F7174AE8D98E88ULL }, /* XSUM_XXH3_withSecret_testdata[109] */ + { 110, 0x0000000000000000ULL, 0xFEA7AFD7BB5B80C8ULL }, /* XSUM_XXH3_withSecret_testdata[110] */ + { 111, 0x0000000000000000ULL, 0x60042F9E13BE8CE2ULL }, /* XSUM_XXH3_withSecret_testdata[111] */ + { 112, 0x0000000000000000ULL, 0x80850112800F968CULL }, /* XSUM_XXH3_withSecret_testdata[112] */ + { 113, 0x0000000000000000ULL, 0xA2314B57764F59A9ULL }, /* XSUM_XXH3_withSecret_testdata[113] */ + { 114, 0x0000000000000000ULL, 0xC686CB30245DD907ULL }, /* XSUM_XXH3_withSecret_testdata[114] */ + { 115, 0x0000000000000000ULL, 0x5E43F990E73F9FF9ULL }, /* XSUM_XXH3_withSecret_testdata[115] */ + { 116, 0x0000000000000000ULL, 0x4AB9BF2163581E5AULL }, /* XSUM_XXH3_withSecret_testdata[116] */ + { 117, 0x0000000000000000ULL, 0x6BF8BA8293939B32ULL }, /* XSUM_XXH3_withSecret_testdata[117] */ + { 118, 0x0000000000000000ULL, 0x3F4DAA314A699BE9ULL }, /* XSUM_XXH3_withSecret_testdata[118] */ + { 119, 0x0000000000000000ULL, 0x8D6ECE9E2EE140E1ULL }, /* XSUM_XXH3_withSecret_testdata[119] */ + { 120, 0x0000000000000000ULL, 0xA9E9B02C831AEAF3ULL }, /* XSUM_XXH3_withSecret_testdata[120] */ + { 121, 0x0000000000000000ULL, 0x75CC20C04F04AD34ULL }, /* XSUM_XXH3_withSecret_testdata[121] */ + { 122, 0x0000000000000000ULL, 0x98E948156B099B29ULL }, /* XSUM_XXH3_withSecret_testdata[122] */ + { 123, 0x0000000000000000ULL, 0x0EFBFAF1F499C1B9ULL }, /* XSUM_XXH3_withSecret_testdata[123] */ + { 124, 0x0000000000000000ULL, 0x90CB9F107046A243ULL }, /* XSUM_XXH3_withSecret_testdata[124] */ + { 125, 0x0000000000000000ULL, 0x3CC4D53F3135046BULL }, /* XSUM_XXH3_withSecret_testdata[125] */ + { 126, 0x0000000000000000ULL, 0x33622846747E6E2EULL }, /* XSUM_XXH3_withSecret_testdata[126] */ + { 127, 0x0000000000000000ULL, 0xE321A829A7E1E731ULL }, /* XSUM_XXH3_withSecret_testdata[127] */ + { 128, 0x0000000000000000ULL, 0xE6E3633DF5C718E2ULL }, /* XSUM_XXH3_withSecret_testdata[128] */ + { 129, 0x0000000000000000ULL, 0x49E96035A8476DCFULL }, /* XSUM_XXH3_withSecret_testdata[129] */ + { 130, 0x0000000000000000ULL, 0x0F54217B215FAF10ULL }, /* XSUM_XXH3_withSecret_testdata[130] */ + { 131, 0x0000000000000000ULL, 0xC7FD822F2C024EEEULL }, /* XSUM_XXH3_withSecret_testdata[131] */ + { 132, 0x0000000000000000ULL, 0x0B6A34A0254FD15FULL }, /* XSUM_XXH3_withSecret_testdata[132] */ + { 133, 0x0000000000000000ULL, 0xDDBE2778A24A99F6ULL }, /* XSUM_XXH3_withSecret_testdata[133] */ + { 134, 0x0000000000000000ULL, 0xA8A8DDB9D2295326ULL }, /* XSUM_XXH3_withSecret_testdata[134] */ + { 135, 0x0000000000000000ULL, 0x50069E8601F96C4AULL }, /* XSUM_XXH3_withSecret_testdata[135] */ + { 136, 0x0000000000000000ULL, 0x30CD83B406CE06A9ULL }, /* XSUM_XXH3_withSecret_testdata[136] */ + { 137, 0x0000000000000000ULL, 0xF0B64D9CD7A03F81ULL }, /* XSUM_XXH3_withSecret_testdata[137] */ + { 138, 0x0000000000000000ULL, 0x26775A0BC3C177E3ULL }, /* XSUM_XXH3_withSecret_testdata[138] */ + { 139, 0x0000000000000000ULL, 0xBFC83B00B8FAF40AULL }, /* XSUM_XXH3_withSecret_testdata[139] */ + { 140, 0x0000000000000000ULL, 0xF84F2A7C04B40E0BULL }, /* XSUM_XXH3_withSecret_testdata[140] */ + { 141, 0x0000000000000000ULL, 0xDE144386A1E874F3ULL }, /* XSUM_XXH3_withSecret_testdata[141] */ + { 142, 0x0000000000000000ULL, 0xBCEBC67CFEDC781EULL }, /* XSUM_XXH3_withSecret_testdata[142] */ + { 143, 0x0000000000000000ULL, 0xEE59251686A6DE1DULL }, /* XSUM_XXH3_withSecret_testdata[143] */ + { 144, 0x0000000000000000ULL, 0xEAC753BAC6E5C161ULL }, /* XSUM_XXH3_withSecret_testdata[144] */ + { 145, 0x0000000000000000ULL, 0xAEDFD1CA5D274EB6ULL }, /* XSUM_XXH3_withSecret_testdata[145] */ + { 146, 0x0000000000000000ULL, 0x1305E3B912E8F2C5ULL }, /* XSUM_XXH3_withSecret_testdata[146] */ + { 147, 0x0000000000000000ULL, 0xC14E46AF9DE82E26ULL }, /* XSUM_XXH3_withSecret_testdata[147] */ + { 148, 0x0000000000000000ULL, 0x16613834702B9352ULL }, /* XSUM_XXH3_withSecret_testdata[148] */ + { 149, 0x0000000000000000ULL, 0xBC6380CBFC21BE1FULL }, /* XSUM_XXH3_withSecret_testdata[149] */ + { 150, 0x0000000000000000ULL, 0x24C5FBB35E9D4ACFULL }, /* XSUM_XXH3_withSecret_testdata[150] */ + { 151, 0x0000000000000000ULL, 0x431AC2CF1B37F412ULL }, /* XSUM_XXH3_withSecret_testdata[151] */ + { 152, 0x0000000000000000ULL, 0x2D4681B595433958ULL }, /* XSUM_XXH3_withSecret_testdata[152] */ + { 153, 0x0000000000000000ULL, 0x8A7A09FC5A5F2FCBULL }, /* XSUM_XXH3_withSecret_testdata[153] */ + { 154, 0x0000000000000000ULL, 0xFD6E47EF7F003B13ULL }, /* XSUM_XXH3_withSecret_testdata[154] */ + { 155, 0x0000000000000000ULL, 0x49C04D7603B975D4ULL }, /* XSUM_XXH3_withSecret_testdata[155] */ + { 156, 0x0000000000000000ULL, 0x717BC695DD4BB69BULL }, /* XSUM_XXH3_withSecret_testdata[156] */ + { 157, 0x0000000000000000ULL, 0x3E51A178BDDFF395ULL }, /* XSUM_XXH3_withSecret_testdata[157] */ + { 158, 0x0000000000000000ULL, 0x513D7EE183C91046ULL }, /* XSUM_XXH3_withSecret_testdata[158] */ + { 159, 0x0000000000000000ULL, 0x897CA43D1B27EC7FULL }, /* XSUM_XXH3_withSecret_testdata[159] */ + { 160, 0x0000000000000000ULL, 0x639D6C91FE54CFBAULL }, /* XSUM_XXH3_withSecret_testdata[160] */ + { 161, 0x0000000000000000ULL, 0x45740B4C5EBA4750ULL }, /* XSUM_XXH3_withSecret_testdata[161] */ + { 162, 0x0000000000000000ULL, 0x444D4318B841442FULL }, /* XSUM_XXH3_withSecret_testdata[162] */ + { 163, 0x0000000000000000ULL, 0xFE492F97F87F2F9EULL }, /* XSUM_XXH3_withSecret_testdata[163] */ + { 164, 0x0000000000000000ULL, 0x18A274DB37F8AB56ULL }, /* XSUM_XXH3_withSecret_testdata[164] */ + { 165, 0x0000000000000000ULL, 0xE3D89A15A84D3A8EULL }, /* XSUM_XXH3_withSecret_testdata[165] */ + { 166, 0x0000000000000000ULL, 0xB0F778181638BC88ULL }, /* XSUM_XXH3_withSecret_testdata[166] */ + { 167, 0x0000000000000000ULL, 0x29569C59C7DC86C4ULL }, /* XSUM_XXH3_withSecret_testdata[167] */ + { 168, 0x0000000000000000ULL, 0x960DC7E93F76725CULL }, /* XSUM_XXH3_withSecret_testdata[168] */ + { 169, 0x0000000000000000ULL, 0xD5B3DAB491EF2A5BULL }, /* XSUM_XXH3_withSecret_testdata[169] */ + { 170, 0x0000000000000000ULL, 0x5C2D0414A95EA8BCULL }, /* XSUM_XXH3_withSecret_testdata[170] */ + { 171, 0x0000000000000000ULL, 0x45EFA9F3E13071BEULL }, /* XSUM_XXH3_withSecret_testdata[171] */ + { 172, 0x0000000000000000ULL, 0xB22593A198A4BFDAULL }, /* XSUM_XXH3_withSecret_testdata[172] */ + { 173, 0x0000000000000000ULL, 0x0A466015EF16F9C2ULL }, /* XSUM_XXH3_withSecret_testdata[173] */ + { 174, 0x0000000000000000ULL, 0x0F9B63F2F1169FD6ULL }, /* XSUM_XXH3_withSecret_testdata[174] */ + { 175, 0x0000000000000000ULL, 0xF97D16F5A231BD2FULL }, /* XSUM_XXH3_withSecret_testdata[175] */ + { 176, 0x0000000000000000ULL, 0xB67C4C0ADBE5C60BULL }, /* XSUM_XXH3_withSecret_testdata[176] */ + { 177, 0x0000000000000000ULL, 0x9D7742F2D2CF406AULL }, /* XSUM_XXH3_withSecret_testdata[177] */ + { 178, 0x0000000000000000ULL, 0x6D9067CFFC4479F4ULL }, /* XSUM_XXH3_withSecret_testdata[178] */ + { 179, 0x0000000000000000ULL, 0x1F3A1A82A72C3127ULL }, /* XSUM_XXH3_withSecret_testdata[179] */ + { 180, 0x0000000000000000ULL, 0x391009C1C1BE6A38ULL }, /* XSUM_XXH3_withSecret_testdata[180] */ + { 181, 0x0000000000000000ULL, 0xA8F6F5ED126EA240ULL }, /* XSUM_XXH3_withSecret_testdata[181] */ + { 182, 0x0000000000000000ULL, 0x29E84B449883E57FULL }, /* XSUM_XXH3_withSecret_testdata[182] */ + { 183, 0x0000000000000000ULL, 0x094F79DB38E7EAF2ULL }, /* XSUM_XXH3_withSecret_testdata[183] */ + { 184, 0x0000000000000000ULL, 0x0D9DF444951FCD8FULL }, /* XSUM_XXH3_withSecret_testdata[184] */ + { 185, 0x0000000000000000ULL, 0x4CBACBDD6CF3D527ULL }, /* XSUM_XXH3_withSecret_testdata[185] */ + { 186, 0x0000000000000000ULL, 0xB3E105A5424EA563ULL }, /* XSUM_XXH3_withSecret_testdata[186] */ + { 187, 0x0000000000000000ULL, 0x4A4720DAC5CD5569ULL }, /* XSUM_XXH3_withSecret_testdata[187] */ + { 188, 0x0000000000000000ULL, 0x4FFB35B8CDA70067ULL }, /* XSUM_XXH3_withSecret_testdata[188] */ + { 189, 0x0000000000000000ULL, 0x68BD7D30FABAD5F5ULL }, /* XSUM_XXH3_withSecret_testdata[189] */ + { 190, 0x0000000000000000ULL, 0x92368F0EFE9DAD35ULL }, /* XSUM_XXH3_withSecret_testdata[190] */ + { 191, 0x0000000000000000ULL, 0xEC464261BDE45743ULL }, /* XSUM_XXH3_withSecret_testdata[191] */ + { 192, 0x0000000000000000ULL, 0xD3B52D98311F0099ULL }, /* XSUM_XXH3_withSecret_testdata[192] */ + { 193, 0x0000000000000000ULL, 0x5461503D055073DBULL }, /* XSUM_XXH3_withSecret_testdata[193] */ + { 194, 0x0000000000000000ULL, 0xA8019455D232824CULL }, /* XSUM_XXH3_withSecret_testdata[194] */ + { 195, 0x0000000000000000ULL, 0xA057273F5EECFB20ULL }, /* XSUM_XXH3_withSecret_testdata[195] */ + { 196, 0x0000000000000000ULL, 0x36AA1B8DC8935D47ULL }, /* XSUM_XXH3_withSecret_testdata[196] */ + { 197, 0x0000000000000000ULL, 0x32140D1B0D45BF1FULL }, /* XSUM_XXH3_withSecret_testdata[197] */ + { 198, 0x0000000000000000ULL, 0x7AE7F2D48311C047ULL }, /* XSUM_XXH3_withSecret_testdata[198] */ + { 199, 0x0000000000000000ULL, 0xB628E661C1F89FE2ULL }, /* XSUM_XXH3_withSecret_testdata[199] */ + { 200, 0x0000000000000000ULL, 0x6CED3A686DDEB0BFULL }, /* XSUM_XXH3_withSecret_testdata[200] */ + { 201, 0x0000000000000000ULL, 0x38E90E79DD978B86ULL }, /* XSUM_XXH3_withSecret_testdata[201] */ + { 202, 0x0000000000000000ULL, 0x15069E1EC413EB4CULL }, /* XSUM_XXH3_withSecret_testdata[202] */ + { 203, 0x0000000000000000ULL, 0xBAF155B1A42C9D6BULL }, /* XSUM_XXH3_withSecret_testdata[203] */ + { 204, 0x0000000000000000ULL, 0x342C1F2757243380ULL }, /* XSUM_XXH3_withSecret_testdata[204] */ + { 205, 0x0000000000000000ULL, 0x268123BE6505F199ULL }, /* XSUM_XXH3_withSecret_testdata[205] */ + { 206, 0x0000000000000000ULL, 0xF6BB284D98FDAE50ULL }, /* XSUM_XXH3_withSecret_testdata[206] */ + { 207, 0x0000000000000000ULL, 0x62B06C77BC4F999EULL }, /* XSUM_XXH3_withSecret_testdata[207] */ + { 208, 0x0000000000000000ULL, 0x3B4E149CC3A0ABCBULL }, /* XSUM_XXH3_withSecret_testdata[208] */ + { 209, 0x0000000000000000ULL, 0x7D36CB4331CEDD27ULL }, /* XSUM_XXH3_withSecret_testdata[209] */ + { 210, 0x0000000000000000ULL, 0x385FB9528F8D39B4ULL }, /* XSUM_XXH3_withSecret_testdata[210] */ + { 211, 0x0000000000000000ULL, 0x708152AEC91819B3ULL }, /* XSUM_XXH3_withSecret_testdata[211] */ + { 212, 0x0000000000000000ULL, 0x1F52DFF004C8D97EULL }, /* XSUM_XXH3_withSecret_testdata[212] */ + { 213, 0x0000000000000000ULL, 0xD06AE8533DBE90C1ULL }, /* XSUM_XXH3_withSecret_testdata[213] */ + { 214, 0x0000000000000000ULL, 0xB15A78BA3D5F3A1AULL }, /* XSUM_XXH3_withSecret_testdata[214] */ + { 215, 0x0000000000000000ULL, 0xC2311F9FEEF3E70DULL }, /* XSUM_XXH3_withSecret_testdata[215] */ + { 216, 0x0000000000000000ULL, 0x838812EC7141B587ULL }, /* XSUM_XXH3_withSecret_testdata[216] */ + { 217, 0x0000000000000000ULL, 0x783D541FC20C3B65ULL }, /* XSUM_XXH3_withSecret_testdata[217] */ + { 218, 0x0000000000000000ULL, 0xA1DA36BCF900E761ULL }, /* XSUM_XXH3_withSecret_testdata[218] */ + { 219, 0x0000000000000000ULL, 0x6C2C791A28599B78ULL }, /* XSUM_XXH3_withSecret_testdata[219] */ + { 220, 0x0000000000000000ULL, 0x1C1DD1492C84173DULL }, /* XSUM_XXH3_withSecret_testdata[220] */ + { 221, 0x0000000000000000ULL, 0xE4EF8CDD84A64A09ULL }, /* XSUM_XXH3_withSecret_testdata[221] */ + { 222, 0x0000000000000000ULL, 0xCC16490371DAACACULL }, /* XSUM_XXH3_withSecret_testdata[222] */ + { 223, 0x0000000000000000ULL, 0xCE2E2474FAD77EDCULL }, /* XSUM_XXH3_withSecret_testdata[223] */ + { 224, 0x0000000000000000ULL, 0x516552B48A8BC2BAULL }, /* XSUM_XXH3_withSecret_testdata[224] */ + { 225, 0x0000000000000000ULL, 0xAA49512F1D606966ULL }, /* XSUM_XXH3_withSecret_testdata[225] */ + { 226, 0x0000000000000000ULL, 0x7E1C059F2B506DDBULL }, /* XSUM_XXH3_withSecret_testdata[226] */ + { 227, 0x0000000000000000ULL, 0x8845C3CB18E7270EULL }, /* XSUM_XXH3_withSecret_testdata[227] */ + { 228, 0x0000000000000000ULL, 0x27A756530591C0E5ULL }, /* XSUM_XXH3_withSecret_testdata[228] */ + { 229, 0x0000000000000000ULL, 0x581097DFB5477719ULL }, /* XSUM_XXH3_withSecret_testdata[229] */ + { 230, 0x0000000000000000ULL, 0x185CEA42A67B79B4ULL }, /* XSUM_XXH3_withSecret_testdata[230] */ + { 231, 0x0000000000000000ULL, 0x96E8E0154A7FAA16ULL }, /* XSUM_XXH3_withSecret_testdata[231] */ + { 232, 0x0000000000000000ULL, 0x8C4D597DD084F0EEULL }, /* XSUM_XXH3_withSecret_testdata[232] */ + { 233, 0x0000000000000000ULL, 0xD55AF9EA50B5CB15ULL }, /* XSUM_XXH3_withSecret_testdata[233] */ + { 234, 0x0000000000000000ULL, 0xA71693E14880BE6FULL }, /* XSUM_XXH3_withSecret_testdata[234] */ + { 235, 0x0000000000000000ULL, 0x1B3E3FDB44797BBFULL }, /* XSUM_XXH3_withSecret_testdata[235] */ + { 236, 0x0000000000000000ULL, 0x928BB3E43E14CA5BULL }, /* XSUM_XXH3_withSecret_testdata[236] */ + { 237, 0x0000000000000000ULL, 0x3C5EE4A2EA7DAE9CULL }, /* XSUM_XXH3_withSecret_testdata[237] */ + { 238, 0x0000000000000000ULL, 0x36CBC4DB3074FED3ULL }, /* XSUM_XXH3_withSecret_testdata[238] */ + { 239, 0x0000000000000000ULL, 0xF2A4C1EC0A45BBBFULL }, /* XSUM_XXH3_withSecret_testdata[239] */ + { 240, 0x0000000000000000ULL, 0xDD1F0FAF1A8164C0ULL }, /* XSUM_XXH3_withSecret_testdata[240] */ + { 241, 0x0000000000000000ULL, 0x454805371DF98A91ULL }, /* XSUM_XXH3_withSecret_testdata[241] */ + { 242, 0x0000000000000000ULL, 0x7A1D6CC9B38309B6ULL }, /* XSUM_XXH3_withSecret_testdata[242] */ + { 243, 0x0000000000000000ULL, 0xA21530DBA67105A2ULL }, /* XSUM_XXH3_withSecret_testdata[243] */ + { 244, 0x0000000000000000ULL, 0x338A6D6127CF7AA5ULL }, /* XSUM_XXH3_withSecret_testdata[244] */ + { 245, 0x0000000000000000ULL, 0xD39B23A3496DE71FULL }, /* XSUM_XXH3_withSecret_testdata[245] */ + { 246, 0x0000000000000000ULL, 0xC9D906953A05E2A0ULL }, /* XSUM_XXH3_withSecret_testdata[246] */ + { 247, 0x0000000000000000ULL, 0xE6C99047FB256B39ULL }, /* XSUM_XXH3_withSecret_testdata[247] */ + { 248, 0x0000000000000000ULL, 0xF07CCBDD8B5F77B8ULL }, /* XSUM_XXH3_withSecret_testdata[248] */ + { 249, 0x0000000000000000ULL, 0xF645DD08AF66414BULL }, /* XSUM_XXH3_withSecret_testdata[249] */ + { 250, 0x0000000000000000ULL, 0x9A4C8798F876F82BULL }, /* XSUM_XXH3_withSecret_testdata[250] */ + { 251, 0x0000000000000000ULL, 0x649BC177D2142082ULL }, /* XSUM_XXH3_withSecret_testdata[251] */ + { 252, 0x0000000000000000ULL, 0x1A271919C8C3E8B5ULL }, /* XSUM_XXH3_withSecret_testdata[252] */ + { 253, 0x0000000000000000ULL, 0x92B0F8103137B547ULL }, /* XSUM_XXH3_withSecret_testdata[253] */ + { 254, 0x0000000000000000ULL, 0xF6516FADBA34B6A8ULL }, /* XSUM_XXH3_withSecret_testdata[254] */ + { 255, 0x0000000000000000ULL, 0xE1E3461712968B3EULL }, /* XSUM_XXH3_withSecret_testdata[255] */ + { 256, 0x0000000000000000ULL, 0xD4CBA59E2E2CF9F0ULL }, /* XSUM_XXH3_withSecret_testdata[256] */ + { 257, 0x0000000000000000ULL, 0x1E4B71E703D08492ULL }, /* XSUM_XXH3_withSecret_testdata[257] */ + { 258, 0x0000000000000000ULL, 0x4644E9534017CF3CULL }, /* XSUM_XXH3_withSecret_testdata[258] */ + { 259, 0x0000000000000000ULL, 0xC5211B50A170EF65ULL }, /* XSUM_XXH3_withSecret_testdata[259] */ + { 260, 0x0000000000000000ULL, 0x8D89E78FAB4C8B4DULL }, /* XSUM_XXH3_withSecret_testdata[260] */ + { 261, 0x0000000000000000ULL, 0x5445BC41965D9CB8ULL }, /* XSUM_XXH3_withSecret_testdata[261] */ + { 262, 0x0000000000000000ULL, 0x1E18538BFD02BC10ULL }, /* XSUM_XXH3_withSecret_testdata[262] */ + { 263, 0x0000000000000000ULL, 0x10BB0E32115E3989ULL }, /* XSUM_XXH3_withSecret_testdata[263] */ + { 264, 0x0000000000000000ULL, 0xE481E99CB17FCFA7ULL }, /* XSUM_XXH3_withSecret_testdata[264] */ + { 265, 0x0000000000000000ULL, 0x5719499F498B55F1ULL }, /* XSUM_XXH3_withSecret_testdata[265] */ + { 266, 0x0000000000000000ULL, 0xF05D5811FC05A53BULL }, /* XSUM_XXH3_withSecret_testdata[266] */ + { 267, 0x0000000000000000ULL, 0x692ED07D9D863E3BULL }, /* XSUM_XXH3_withSecret_testdata[267] */ + { 268, 0x0000000000000000ULL, 0x8632AD27595A52E9ULL }, /* XSUM_XXH3_withSecret_testdata[268] */ + { 269, 0x0000000000000000ULL, 0x2668F196EF76E609ULL }, /* XSUM_XXH3_withSecret_testdata[269] */ + { 270, 0x0000000000000000ULL, 0x3FC93757FBF494ECULL }, /* XSUM_XXH3_withSecret_testdata[270] */ + { 271, 0x0000000000000000ULL, 0x47FB222445B9AAF9ULL }, /* XSUM_XXH3_withSecret_testdata[271] */ + { 272, 0x0000000000000000ULL, 0xD9376B102E3630D9ULL }, /* XSUM_XXH3_withSecret_testdata[272] */ + { 273, 0x0000000000000000ULL, 0x65895492C94B9DE3ULL }, /* XSUM_XXH3_withSecret_testdata[273] */ + { 274, 0x0000000000000000ULL, 0xE9E82F040E18DC8FULL }, /* XSUM_XXH3_withSecret_testdata[274] */ + { 275, 0x0000000000000000ULL, 0x32D3679B0E9C6074ULL }, /* XSUM_XXH3_withSecret_testdata[275] */ + { 276, 0x0000000000000000ULL, 0xF9F0E5709E4412C2ULL }, /* XSUM_XXH3_withSecret_testdata[276] */ + { 277, 0x0000000000000000ULL, 0x3C62BC830C37A47BULL }, /* XSUM_XXH3_withSecret_testdata[277] */ + { 278, 0x0000000000000000ULL, 0x1C46017F954A8887ULL }, /* XSUM_XXH3_withSecret_testdata[278] */ + { 279, 0x0000000000000000ULL, 0x2821691C07FC0BF5ULL }, /* XSUM_XXH3_withSecret_testdata[279] */ + { 280, 0x0000000000000000ULL, 0x13746F0595225BF8ULL }, /* XSUM_XXH3_withSecret_testdata[280] */ + { 281, 0x0000000000000000ULL, 0xDBED1F02AFE46AB6ULL }, /* XSUM_XXH3_withSecret_testdata[281] */ + { 282, 0x0000000000000000ULL, 0x8BEC42DB9CA3856AULL }, /* XSUM_XXH3_withSecret_testdata[282] */ + { 283, 0x0000000000000000ULL, 0x7FC7D29CD3DC1077ULL }, /* XSUM_XXH3_withSecret_testdata[283] */ + { 284, 0x0000000000000000ULL, 0x33F520321A07B375ULL }, /* XSUM_XXH3_withSecret_testdata[284] */ + { 285, 0x0000000000000000ULL, 0x687B7AE99E7CB3BEULL }, /* XSUM_XXH3_withSecret_testdata[285] */ + { 286, 0x0000000000000000ULL, 0x0F91BD5C4572144CULL }, /* XSUM_XXH3_withSecret_testdata[286] */ + { 287, 0x0000000000000000ULL, 0x4EB562DCC46F44E3ULL }, /* XSUM_XXH3_withSecret_testdata[287] */ + { 288, 0x0000000000000000ULL, 0x0D392C2BA4C1974CULL }, /* XSUM_XXH3_withSecret_testdata[288] */ + { 289, 0x0000000000000000ULL, 0x23F0342FB15D6F76ULL }, /* XSUM_XXH3_withSecret_testdata[289] */ + { 290, 0x0000000000000000ULL, 0x5F123B83B84089BFULL }, /* XSUM_XXH3_withSecret_testdata[290] */ + { 291, 0x0000000000000000ULL, 0x889F2101629E55ADULL }, /* XSUM_XXH3_withSecret_testdata[291] */ + { 292, 0x0000000000000000ULL, 0x2BCFEC3E258BFEEFULL }, /* XSUM_XXH3_withSecret_testdata[292] */ + { 293, 0x0000000000000000ULL, 0x85CF2A67380C6897ULL }, /* XSUM_XXH3_withSecret_testdata[293] */ + { 294, 0x0000000000000000ULL, 0x237B4672769369B7ULL }, /* XSUM_XXH3_withSecret_testdata[294] */ + { 295, 0x0000000000000000ULL, 0x49BECA529E0108F8ULL }, /* XSUM_XXH3_withSecret_testdata[295] */ + { 296, 0x0000000000000000ULL, 0xEE6FE33A46F9B8ABULL }, /* XSUM_XXH3_withSecret_testdata[296] */ + { 297, 0x0000000000000000ULL, 0xAB5AD272C269CB84ULL }, /* XSUM_XXH3_withSecret_testdata[297] */ + { 298, 0x0000000000000000ULL, 0x647D5B4FA1E77077ULL }, /* XSUM_XXH3_withSecret_testdata[298] */ + { 299, 0x0000000000000000ULL, 0x08F146C57890970DULL }, /* XSUM_XXH3_withSecret_testdata[299] */ + { 300, 0x0000000000000000ULL, 0xAD4EEFE44DA3771CULL }, /* XSUM_XXH3_withSecret_testdata[300] */ + { 301, 0x0000000000000000ULL, 0x00795F9213CC7BEBULL }, /* XSUM_XXH3_withSecret_testdata[301] */ + { 302, 0x0000000000000000ULL, 0xF712D99AB912CE71ULL }, /* XSUM_XXH3_withSecret_testdata[302] */ + { 303, 0x0000000000000000ULL, 0x4964AB4691B49154ULL }, /* XSUM_XXH3_withSecret_testdata[303] */ + { 304, 0x0000000000000000ULL, 0x1608E2A44BD97C89ULL }, /* XSUM_XXH3_withSecret_testdata[304] */ + { 305, 0x0000000000000000ULL, 0x6472A585CF6668DFULL }, /* XSUM_XXH3_withSecret_testdata[305] */ + { 306, 0x0000000000000000ULL, 0xD2BEAD64AB7F10A4ULL }, /* XSUM_XXH3_withSecret_testdata[306] */ + { 307, 0x0000000000000000ULL, 0xF11A50ECA38C3575ULL }, /* XSUM_XXH3_withSecret_testdata[307] */ + { 308, 0x0000000000000000ULL, 0x722A4F986419071AULL }, /* XSUM_XXH3_withSecret_testdata[308] */ + { 309, 0x0000000000000000ULL, 0xC770E666D63849F9ULL }, /* XSUM_XXH3_withSecret_testdata[309] */ + { 310, 0x0000000000000000ULL, 0xA626F5639A03A9B1ULL }, /* XSUM_XXH3_withSecret_testdata[310] */ + { 311, 0x0000000000000000ULL, 0xD9CEE82AA29AED92ULL }, /* XSUM_XXH3_withSecret_testdata[311] */ + { 312, 0x0000000000000000ULL, 0x96E7904694872669ULL }, /* XSUM_XXH3_withSecret_testdata[312] */ + { 313, 0x0000000000000000ULL, 0xA14D3B0A5285F4ADULL }, /* XSUM_XXH3_withSecret_testdata[313] */ + { 314, 0x0000000000000000ULL, 0xF5B6891890914AFFULL }, /* XSUM_XXH3_withSecret_testdata[314] */ + { 315, 0x0000000000000000ULL, 0x999AB9F81AE460A9ULL }, /* XSUM_XXH3_withSecret_testdata[315] */ + { 316, 0x0000000000000000ULL, 0x2636CB73B8310C34ULL }, /* XSUM_XXH3_withSecret_testdata[316] */ + { 317, 0x0000000000000000ULL, 0x3F6B687ADE1EAEA8ULL }, /* XSUM_XXH3_withSecret_testdata[317] */ + { 318, 0x0000000000000000ULL, 0x0B93FE00D04DF81EULL }, /* XSUM_XXH3_withSecret_testdata[318] */ + { 319, 0x0000000000000000ULL, 0xDDA2B628C4879108ULL }, /* XSUM_XXH3_withSecret_testdata[319] */ + { 320, 0x0000000000000000ULL, 0x194C2D1C4A993F3CULL }, /* XSUM_XXH3_withSecret_testdata[320] */ + { 321, 0x0000000000000000ULL, 0xFD6049BC3D821B0BULL }, /* XSUM_XXH3_withSecret_testdata[321] */ + { 322, 0x0000000000000000ULL, 0xAC4A5D33460A0D8FULL }, /* XSUM_XXH3_withSecret_testdata[322] */ + { 323, 0x0000000000000000ULL, 0x52E8F6AEAF1B5E2EULL }, /* XSUM_XXH3_withSecret_testdata[323] */ + { 324, 0x0000000000000000ULL, 0x0FC71062B04343A3ULL }, /* XSUM_XXH3_withSecret_testdata[324] */ + { 325, 0x0000000000000000ULL, 0xA7FF1D6E81A588E4ULL }, /* XSUM_XXH3_withSecret_testdata[325] */ + { 326, 0x0000000000000000ULL, 0xA77100819A31451CULL }, /* XSUM_XXH3_withSecret_testdata[326] */ + { 327, 0x0000000000000000ULL, 0x3900B897CC037C54ULL }, /* XSUM_XXH3_withSecret_testdata[327] */ + { 328, 0x0000000000000000ULL, 0x2CCC45D68CFCBE8DULL }, /* XSUM_XXH3_withSecret_testdata[328] */ + { 329, 0x0000000000000000ULL, 0xC5D310D557FEF6C8ULL }, /* XSUM_XXH3_withSecret_testdata[329] */ + { 330, 0x0000000000000000ULL, 0xED4CF75B85C7C208ULL }, /* XSUM_XXH3_withSecret_testdata[330] */ + { 331, 0x0000000000000000ULL, 0x06C32247652F6E66ULL }, /* XSUM_XXH3_withSecret_testdata[331] */ + { 332, 0x0000000000000000ULL, 0x0C5AAFD89A34F935ULL }, /* XSUM_XXH3_withSecret_testdata[332] */ + { 333, 0x0000000000000000ULL, 0x5793D857574D7657ULL }, /* XSUM_XXH3_withSecret_testdata[333] */ + { 334, 0x0000000000000000ULL, 0x6E7E849FBD00AA49ULL }, /* XSUM_XXH3_withSecret_testdata[334] */ + { 335, 0x0000000000000000ULL, 0xBCDB86FB248DDF09ULL }, /* XSUM_XXH3_withSecret_testdata[335] */ + { 336, 0x0000000000000000ULL, 0xC482729B771A98D6ULL }, /* XSUM_XXH3_withSecret_testdata[336] */ + { 337, 0x0000000000000000ULL, 0x76A7E94E68306FD7ULL }, /* XSUM_XXH3_withSecret_testdata[337] */ + { 338, 0x0000000000000000ULL, 0x99345B97606E0954ULL }, /* XSUM_XXH3_withSecret_testdata[338] */ + { 339, 0x0000000000000000ULL, 0xEF8E23FD4925C9B5ULL }, /* XSUM_XXH3_withSecret_testdata[339] */ + { 340, 0x0000000000000000ULL, 0x9C06E9F9E8F95A1BULL }, /* XSUM_XXH3_withSecret_testdata[340] */ + { 341, 0x0000000000000000ULL, 0x7440FC10FFC82E30ULL }, /* XSUM_XXH3_withSecret_testdata[341] */ + { 342, 0x0000000000000000ULL, 0xA9F13DA859FE0DD5ULL }, /* XSUM_XXH3_withSecret_testdata[342] */ + { 343, 0x0000000000000000ULL, 0x8008021E109891BBULL }, /* XSUM_XXH3_withSecret_testdata[343] */ + { 344, 0x0000000000000000ULL, 0x27A32662397B2B8EULL }, /* XSUM_XXH3_withSecret_testdata[344] */ + { 345, 0x0000000000000000ULL, 0x42416962BB6568B0ULL }, /* XSUM_XXH3_withSecret_testdata[345] */ + { 346, 0x0000000000000000ULL, 0x0F9E193156B85403ULL }, /* XSUM_XXH3_withSecret_testdata[346] */ + { 347, 0x0000000000000000ULL, 0xACAEFA2E644AE0CCULL }, /* XSUM_XXH3_withSecret_testdata[347] */ + { 348, 0x0000000000000000ULL, 0xB903628701269F0FULL }, /* XSUM_XXH3_withSecret_testdata[348] */ + { 349, 0x0000000000000000ULL, 0x21F9F87CED7F59ECULL }, /* XSUM_XXH3_withSecret_testdata[349] */ + { 350, 0x0000000000000000ULL, 0x510C00D6E6CA0292ULL }, /* XSUM_XXH3_withSecret_testdata[350] */ + { 351, 0x0000000000000000ULL, 0x067C68EA7336F2BBULL }, /* XSUM_XXH3_withSecret_testdata[351] */ + { 352, 0x0000000000000000ULL, 0x2FA1AA59DD588D9EULL }, /* XSUM_XXH3_withSecret_testdata[352] */ + { 353, 0x0000000000000000ULL, 0x6427D4F16BB0B275ULL }, /* XSUM_XXH3_withSecret_testdata[353] */ + { 354, 0x0000000000000000ULL, 0x945B95851BBF0CEBULL }, /* XSUM_XXH3_withSecret_testdata[354] */ + { 355, 0x0000000000000000ULL, 0x4097F41CB9A6C7C0ULL }, /* XSUM_XXH3_withSecret_testdata[355] */ + { 356, 0x0000000000000000ULL, 0x2B3DB75847E4D9A5ULL }, /* XSUM_XXH3_withSecret_testdata[356] */ + { 357, 0x0000000000000000ULL, 0xC03244E03567B277ULL }, /* XSUM_XXH3_withSecret_testdata[357] */ + { 358, 0x0000000000000000ULL, 0xEE4D73BC4AAFC328ULL }, /* XSUM_XXH3_withSecret_testdata[358] */ + { 359, 0x0000000000000000ULL, 0x0A321BE91994A2B5ULL }, /* XSUM_XXH3_withSecret_testdata[359] */ + { 360, 0x0000000000000000ULL, 0xA34661ED84F91D96ULL }, /* XSUM_XXH3_withSecret_testdata[360] */ + { 361, 0x0000000000000000ULL, 0x2A79F41AC7E29D95ULL }, /* XSUM_XXH3_withSecret_testdata[361] */ + { 362, 0x0000000000000000ULL, 0xB37D84C527A15E6CULL }, /* XSUM_XXH3_withSecret_testdata[362] */ + { 363, 0x0000000000000000ULL, 0x1E7C1743806AD536ULL }, /* XSUM_XXH3_withSecret_testdata[363] */ + { 364, 0x0000000000000000ULL, 0x7AF7CE01C75EE6FFULL }, /* XSUM_XXH3_withSecret_testdata[364] */ + { 365, 0x0000000000000000ULL, 0xCFEB51C858A5622EULL }, /* XSUM_XXH3_withSecret_testdata[365] */ + { 366, 0x0000000000000000ULL, 0xF58BBCA1C9747069ULL }, /* XSUM_XXH3_withSecret_testdata[366] */ + { 367, 0x0000000000000000ULL, 0x1BA132260A257D3FULL }, /* XSUM_XXH3_withSecret_testdata[367] */ + { 368, 0x0000000000000000ULL, 0x9219084B7F90DE95ULL }, /* XSUM_XXH3_withSecret_testdata[368] */ + { 369, 0x0000000000000000ULL, 0xAA306A3323A36F10ULL }, /* XSUM_XXH3_withSecret_testdata[369] */ + { 370, 0x0000000000000000ULL, 0x5E1E41A3EE73C4CAULL }, /* XSUM_XXH3_withSecret_testdata[370] */ + { 371, 0x0000000000000000ULL, 0xC34FDC36198F74EDULL }, /* XSUM_XXH3_withSecret_testdata[371] */ + { 372, 0x0000000000000000ULL, 0x3DA69079085A04E9ULL }, /* XSUM_XXH3_withSecret_testdata[372] */ + { 373, 0x0000000000000000ULL, 0xA94B7213A0252AB3ULL }, /* XSUM_XXH3_withSecret_testdata[373] */ + { 374, 0x0000000000000000ULL, 0xB8A38E5866DAA69AULL }, /* XSUM_XXH3_withSecret_testdata[374] */ + { 375, 0x0000000000000000ULL, 0xD815C3B6A81D988AULL }, /* XSUM_XXH3_withSecret_testdata[375] */ + { 376, 0x0000000000000000ULL, 0x48021E8BEF7C0F91ULL }, /* XSUM_XXH3_withSecret_testdata[376] */ + { 377, 0x0000000000000000ULL, 0x2403D3B5EF2187C1ULL }, /* XSUM_XXH3_withSecret_testdata[377] */ + { 378, 0x0000000000000000ULL, 0xB599C0DBFA7B38ABULL }, /* XSUM_XXH3_withSecret_testdata[378] */ + { 379, 0x0000000000000000ULL, 0x3F1C230AE6A51A09ULL }, /* XSUM_XXH3_withSecret_testdata[379] */ + { 380, 0x0000000000000000ULL, 0x1D947ED6C9B124BAULL }, /* XSUM_XXH3_withSecret_testdata[380] */ + { 381, 0x0000000000000000ULL, 0x8AE2F1EDDC6FA197ULL }, /* XSUM_XXH3_withSecret_testdata[381] */ + { 382, 0x0000000000000000ULL, 0x5686BC7B2C3699F0ULL }, /* XSUM_XXH3_withSecret_testdata[382] */ + { 383, 0x0000000000000000ULL, 0x5B081C559D5A2691ULL }, /* XSUM_XXH3_withSecret_testdata[383] */ + { 384, 0x0000000000000000ULL, 0x3E4ACFE089AAAC49ULL }, /* XSUM_XXH3_withSecret_testdata[384] */ + { 385, 0x0000000000000000ULL, 0x68E16289A463A85CULL }, /* XSUM_XXH3_withSecret_testdata[385] */ + { 386, 0x0000000000000000ULL, 0x8361384F1C833DBBULL }, /* XSUM_XXH3_withSecret_testdata[386] */ + { 387, 0x0000000000000000ULL, 0x619589E8B878E5B1ULL }, /* XSUM_XXH3_withSecret_testdata[387] */ + { 388, 0x0000000000000000ULL, 0xAA1FD2CDF886DB48ULL }, /* XSUM_XXH3_withSecret_testdata[388] */ + { 389, 0x0000000000000000ULL, 0x4A691FB625C012D6ULL }, /* XSUM_XXH3_withSecret_testdata[389] */ + { 390, 0x0000000000000000ULL, 0x4DF5BEE29D39A198ULL }, /* XSUM_XXH3_withSecret_testdata[390] */ + { 391, 0x0000000000000000ULL, 0x8A1852777D68C286ULL }, /* XSUM_XXH3_withSecret_testdata[391] */ + { 392, 0x0000000000000000ULL, 0x9E87BE43FBCBC9EBULL }, /* XSUM_XXH3_withSecret_testdata[392] */ + { 393, 0x0000000000000000ULL, 0x6CA925A00CC82F84ULL }, /* XSUM_XXH3_withSecret_testdata[393] */ + { 394, 0x0000000000000000ULL, 0xEDA2EA217928B5F5ULL }, /* XSUM_XXH3_withSecret_testdata[394] */ + { 395, 0x0000000000000000ULL, 0x36015D830AFA1151ULL }, /* XSUM_XXH3_withSecret_testdata[395] */ + { 396, 0x0000000000000000ULL, 0x2F6F98A51CB51691ULL }, /* XSUM_XXH3_withSecret_testdata[396] */ + { 397, 0x0000000000000000ULL, 0xBBF2DC743F67DE36ULL }, /* XSUM_XXH3_withSecret_testdata[397] */ + { 398, 0x0000000000000000ULL, 0x9742E652697AA2CFULL }, /* XSUM_XXH3_withSecret_testdata[398] */ + { 399, 0x0000000000000000ULL, 0x4EB106A1AA40FA23ULL }, /* XSUM_XXH3_withSecret_testdata[399] */ + { 400, 0x0000000000000000ULL, 0xAEA4953E8ADE0709ULL }, /* XSUM_XXH3_withSecret_testdata[400] */ + { 401, 0x0000000000000000ULL, 0x0112CF533D114963ULL }, /* XSUM_XXH3_withSecret_testdata[401] */ + { 402, 0x0000000000000000ULL, 0xF22A46521BB555DBULL }, /* XSUM_XXH3_withSecret_testdata[402] */ + { 403, 0x0000000000000000ULL, 0x14546019124D43B8ULL }, /* XSUM_XXH3_withSecret_testdata[403] */ + { 404, 0x0000000000000000ULL, 0xD7C6DB1687C9CCE4ULL }, /* XSUM_XXH3_withSecret_testdata[404] */ + { 405, 0x0000000000000000ULL, 0xD9D0709DDDF7D8FDULL }, /* XSUM_XXH3_withSecret_testdata[405] */ + { 406, 0x0000000000000000ULL, 0xFCCA387E865C2566ULL }, /* XSUM_XXH3_withSecret_testdata[406] */ + { 407, 0x0000000000000000ULL, 0x64AF408F11B9217DULL }, /* XSUM_XXH3_withSecret_testdata[407] */ + { 408, 0x0000000000000000ULL, 0xB9E9F14A1D9E0397ULL }, /* XSUM_XXH3_withSecret_testdata[408] */ + { 409, 0x0000000000000000ULL, 0x99AFB4E6A523221BULL }, /* XSUM_XXH3_withSecret_testdata[409] */ + { 410, 0x0000000000000000ULL, 0x5254EDB9EB3DBB94ULL }, /* XSUM_XXH3_withSecret_testdata[410] */ + { 411, 0x0000000000000000ULL, 0xB6B23CD56A79121CULL }, /* XSUM_XXH3_withSecret_testdata[411] */ + { 412, 0x0000000000000000ULL, 0x1BFB20FD55E49164ULL }, /* XSUM_XXH3_withSecret_testdata[412] */ + { 413, 0x0000000000000000ULL, 0xF4CBBBA8889F9520ULL }, /* XSUM_XXH3_withSecret_testdata[413] */ + { 414, 0x0000000000000000ULL, 0x1C4CBC873CCF23B7ULL }, /* XSUM_XXH3_withSecret_testdata[414] */ + { 415, 0x0000000000000000ULL, 0xCBACAAE57B2FFCB4ULL }, /* XSUM_XXH3_withSecret_testdata[415] */ + { 416, 0x0000000000000000ULL, 0xFEB5537A0E295659ULL }, /* XSUM_XXH3_withSecret_testdata[416] */ + { 417, 0x0000000000000000ULL, 0x0047ADBB08006B06ULL }, /* XSUM_XXH3_withSecret_testdata[417] */ + { 418, 0x0000000000000000ULL, 0xC610CC3AF8C4C9ECULL }, /* XSUM_XXH3_withSecret_testdata[418] */ + { 419, 0x0000000000000000ULL, 0x3F7975EF1A922ED9ULL }, /* XSUM_XXH3_withSecret_testdata[419] */ + { 420, 0x0000000000000000ULL, 0x21207F5F4B43C72EULL }, /* XSUM_XXH3_withSecret_testdata[420] */ + { 421, 0x0000000000000000ULL, 0x2EDE601DC0BC9006ULL }, /* XSUM_XXH3_withSecret_testdata[421] */ + { 422, 0x0000000000000000ULL, 0x0F4C0CF035A33F14ULL }, /* XSUM_XXH3_withSecret_testdata[422] */ + { 423, 0x0000000000000000ULL, 0x4131CBFEF56B3263ULL }, /* XSUM_XXH3_withSecret_testdata[423] */ + { 424, 0x0000000000000000ULL, 0xD2863D9CAE01FE62ULL }, /* XSUM_XXH3_withSecret_testdata[424] */ + { 425, 0x0000000000000000ULL, 0xA6BB4DF2FC91FD60ULL }, /* XSUM_XXH3_withSecret_testdata[425] */ + { 426, 0x0000000000000000ULL, 0x978D1CCF305BAE7DULL }, /* XSUM_XXH3_withSecret_testdata[426] */ + { 427, 0x0000000000000000ULL, 0xA9FB094491E5FFBEULL }, /* XSUM_XXH3_withSecret_testdata[427] */ + { 428, 0x0000000000000000ULL, 0x0EBE48BE365952CBULL }, /* XSUM_XXH3_withSecret_testdata[428] */ + { 429, 0x0000000000000000ULL, 0x25237F7BE323FF7FULL }, /* XSUM_XXH3_withSecret_testdata[429] */ + { 430, 0x0000000000000000ULL, 0x4B4F4FE9DE6B2E2CULL }, /* XSUM_XXH3_withSecret_testdata[430] */ + { 431, 0x0000000000000000ULL, 0x74D082ED70E8A13FULL }, /* XSUM_XXH3_withSecret_testdata[431] */ + { 432, 0x0000000000000000ULL, 0x4D084F04ABE7620EULL }, /* XSUM_XXH3_withSecret_testdata[432] */ + { 433, 0x0000000000000000ULL, 0x6390929D32DB775AULL }, /* XSUM_XXH3_withSecret_testdata[433] */ + { 434, 0x0000000000000000ULL, 0x86BC650A8AFFA1A4ULL }, /* XSUM_XXH3_withSecret_testdata[434] */ + { 435, 0x0000000000000000ULL, 0x525B7109EB14DB23ULL }, /* XSUM_XXH3_withSecret_testdata[435] */ + { 436, 0x0000000000000000ULL, 0x41A700E2DFEF822EULL }, /* XSUM_XXH3_withSecret_testdata[436] */ + { 437, 0x0000000000000000ULL, 0x6CB4BEFFF28DF8ACULL }, /* XSUM_XXH3_withSecret_testdata[437] */ + { 438, 0x0000000000000000ULL, 0x810C53827E409D0CULL }, /* XSUM_XXH3_withSecret_testdata[438] */ + { 439, 0x0000000000000000ULL, 0x5E1A75786BC7D5EFULL }, /* XSUM_XXH3_withSecret_testdata[439] */ + { 440, 0x0000000000000000ULL, 0x7B2FCA065E805463ULL }, /* XSUM_XXH3_withSecret_testdata[440] */ + { 441, 0x0000000000000000ULL, 0xFE97333284356D7DULL }, /* XSUM_XXH3_withSecret_testdata[441] */ + { 442, 0x0000000000000000ULL, 0x106231A1F8C0FFCCULL }, /* XSUM_XXH3_withSecret_testdata[442] */ + { 443, 0x0000000000000000ULL, 0xF8FBD2920F51BF03ULL }, /* XSUM_XXH3_withSecret_testdata[443] */ + { 444, 0x0000000000000000ULL, 0x6CD891B1A44EE649ULL }, /* XSUM_XXH3_withSecret_testdata[444] */ + { 445, 0x0000000000000000ULL, 0xA0C07BC7005909B9ULL }, /* XSUM_XXH3_withSecret_testdata[445] */ + { 446, 0x0000000000000000ULL, 0x184DC35A01F19A69ULL }, /* XSUM_XXH3_withSecret_testdata[446] */ + { 447, 0x0000000000000000ULL, 0xE57C1002023987FEULL }, /* XSUM_XXH3_withSecret_testdata[447] */ + { 448, 0x0000000000000000ULL, 0x8EA484E6F2659C6FULL }, /* XSUM_XXH3_withSecret_testdata[448] */ + { 449, 0x0000000000000000ULL, 0xF260E6432FC489A2ULL }, /* XSUM_XXH3_withSecret_testdata[449] */ + { 450, 0x0000000000000000ULL, 0xAE8D2868FE6AC4C4ULL }, /* XSUM_XXH3_withSecret_testdata[450] */ + { 451, 0x0000000000000000ULL, 0x04099B3D6ACEB18BULL }, /* XSUM_XXH3_withSecret_testdata[451] */ + { 452, 0x0000000000000000ULL, 0xDDB5426BF3E3EA19ULL }, /* XSUM_XXH3_withSecret_testdata[452] */ + { 453, 0x0000000000000000ULL, 0xCCB0A8860651FEC0ULL }, /* XSUM_XXH3_withSecret_testdata[453] */ + { 454, 0x0000000000000000ULL, 0x9617D50B4A3EF1B3ULL }, /* XSUM_XXH3_withSecret_testdata[454] */ + { 455, 0x0000000000000000ULL, 0x6F2B8E3512F86464ULL }, /* XSUM_XXH3_withSecret_testdata[455] */ + { 456, 0x0000000000000000ULL, 0x05A8D79A5ED7FC14ULL }, /* XSUM_XXH3_withSecret_testdata[456] */ + { 457, 0x0000000000000000ULL, 0x8B10941099EF6821ULL }, /* XSUM_XXH3_withSecret_testdata[457] */ + { 458, 0x0000000000000000ULL, 0x531E70FF6FAD7D8BULL }, /* XSUM_XXH3_withSecret_testdata[458] */ + { 459, 0x0000000000000000ULL, 0x76489F7455586327ULL }, /* XSUM_XXH3_withSecret_testdata[459] */ + { 460, 0x0000000000000000ULL, 0x564DF8086324198DULL }, /* XSUM_XXH3_withSecret_testdata[460] */ + { 461, 0x0000000000000000ULL, 0x1C11818055102C22ULL }, /* XSUM_XXH3_withSecret_testdata[461] */ + { 462, 0x0000000000000000ULL, 0xEBD34A4B973A81E7ULL }, /* XSUM_XXH3_withSecret_testdata[462] */ + { 463, 0x0000000000000000ULL, 0x139366BA74F1922DULL }, /* XSUM_XXH3_withSecret_testdata[463] */ + { 464, 0x0000000000000000ULL, 0x0D5E0CFA6D8177ECULL }, /* XSUM_XXH3_withSecret_testdata[464] */ + { 465, 0x0000000000000000ULL, 0x696BB5F52A5A4D2AULL }, /* XSUM_XXH3_withSecret_testdata[465] */ + { 466, 0x0000000000000000ULL, 0x1DA3384D51C3989EULL }, /* XSUM_XXH3_withSecret_testdata[466] */ + { 467, 0x0000000000000000ULL, 0xEB1E8FB9E569B1BEULL }, /* XSUM_XXH3_withSecret_testdata[467] */ + { 468, 0x0000000000000000ULL, 0xBE451DC21D6711F3ULL }, /* XSUM_XXH3_withSecret_testdata[468] */ + { 469, 0x0000000000000000ULL, 0x9AA9F786DB7FB505ULL }, /* XSUM_XXH3_withSecret_testdata[469] */ + { 470, 0x0000000000000000ULL, 0x05A05AF0D472D478ULL }, /* XSUM_XXH3_withSecret_testdata[470] */ + { 471, 0x0000000000000000ULL, 0x74E2DACFF08AA645ULL }, /* XSUM_XXH3_withSecret_testdata[471] */ + { 472, 0x0000000000000000ULL, 0xF85348C7CFB5B9EAULL }, /* XSUM_XXH3_withSecret_testdata[472] */ + { 473, 0x0000000000000000ULL, 0xA883F3EB96291568ULL }, /* XSUM_XXH3_withSecret_testdata[473] */ + { 474, 0x0000000000000000ULL, 0xC720FBE31C03664FULL }, /* XSUM_XXH3_withSecret_testdata[474] */ + { 475, 0x0000000000000000ULL, 0x4D97B2885715A5AAULL }, /* XSUM_XXH3_withSecret_testdata[475] */ + { 476, 0x0000000000000000ULL, 0x71A3B155E993C666ULL }, /* XSUM_XXH3_withSecret_testdata[476] */ + { 477, 0x0000000000000000ULL, 0x06CE86D9F84391BAULL }, /* XSUM_XXH3_withSecret_testdata[477] */ + { 478, 0x0000000000000000ULL, 0x0D7529EF6859BCE0ULL }, /* XSUM_XXH3_withSecret_testdata[478] */ + { 479, 0x0000000000000000ULL, 0x788F89E922618A08ULL }, /* XSUM_XXH3_withSecret_testdata[479] */ + { 480, 0x0000000000000000ULL, 0x7FADB159F9E17B6BULL }, /* XSUM_XXH3_withSecret_testdata[480] */ + { 481, 0x0000000000000000ULL, 0x8DD9EFDDB2292E61ULL }, /* XSUM_XXH3_withSecret_testdata[481] */ + { 482, 0x0000000000000000ULL, 0x9E3AD6DAEABABA39ULL }, /* XSUM_XXH3_withSecret_testdata[482] */ + { 483, 0x0000000000000000ULL, 0x981222C1C613688DULL }, /* XSUM_XXH3_withSecret_testdata[483] */ + { 484, 0x0000000000000000ULL, 0xB4F8AB78FEFEABB2ULL }, /* XSUM_XXH3_withSecret_testdata[484] */ + { 485, 0x0000000000000000ULL, 0xB13480CA4EE9DFC4ULL }, /* XSUM_XXH3_withSecret_testdata[485] */ + { 486, 0x0000000000000000ULL, 0x55E7EF4BE393F7D9ULL }, /* XSUM_XXH3_withSecret_testdata[486] */ + { 487, 0x0000000000000000ULL, 0xAE4EA572FD01D019ULL }, /* XSUM_XXH3_withSecret_testdata[487] */ + { 488, 0x0000000000000000ULL, 0xAF36559E92729487ULL }, /* XSUM_XXH3_withSecret_testdata[488] */ + { 489, 0x0000000000000000ULL, 0x890D3420854C7C5AULL }, /* XSUM_XXH3_withSecret_testdata[489] */ + { 490, 0x0000000000000000ULL, 0xCAE024633D1614D0ULL }, /* XSUM_XXH3_withSecret_testdata[490] */ + { 491, 0x0000000000000000ULL, 0xEE8EECBBCB3E766BULL }, /* XSUM_XXH3_withSecret_testdata[491] */ + { 492, 0x0000000000000000ULL, 0xAF71D10211457BB0ULL }, /* XSUM_XXH3_withSecret_testdata[492] */ + { 493, 0x0000000000000000ULL, 0x12B1032FE1D490BCULL }, /* XSUM_XXH3_withSecret_testdata[493] */ + { 494, 0x0000000000000000ULL, 0x496205F656F46869ULL }, /* XSUM_XXH3_withSecret_testdata[494] */ + { 495, 0x0000000000000000ULL, 0xA6BEDED188B0D541ULL }, /* XSUM_XXH3_withSecret_testdata[495] */ + { 496, 0x0000000000000000ULL, 0xB6C8E95F9ED250E1ULL }, /* XSUM_XXH3_withSecret_testdata[496] */ + { 497, 0x0000000000000000ULL, 0x0DAF283FCCE83BA0ULL }, /* XSUM_XXH3_withSecret_testdata[497] */ + { 498, 0x0000000000000000ULL, 0xC9C8BB888444FCDCULL }, /* XSUM_XXH3_withSecret_testdata[498] */ + { 499, 0x0000000000000000ULL, 0xB09E0768B25AF325ULL }, /* XSUM_XXH3_withSecret_testdata[499] */ + { 500, 0x0000000000000000ULL, 0x1E33D40CD0295252ULL }, /* XSUM_XXH3_withSecret_testdata[500] */ + { 501, 0x0000000000000000ULL, 0xBBC2DDD4CDFB1D8FULL }, /* XSUM_XXH3_withSecret_testdata[501] */ + { 502, 0x0000000000000000ULL, 0x390B3C654F27BA9BULL }, /* XSUM_XXH3_withSecret_testdata[502] */ + { 503, 0x0000000000000000ULL, 0x5B4E4DA2D546AF16ULL }, /* XSUM_XXH3_withSecret_testdata[503] */ + { 504, 0x0000000000000000ULL, 0x6188E7B007CB5BBEULL }, /* XSUM_XXH3_withSecret_testdata[504] */ + { 505, 0x0000000000000000ULL, 0x66136B194844318CULL }, /* XSUM_XXH3_withSecret_testdata[505] */ + { 506, 0x0000000000000000ULL, 0x6AE4F042EFE78B47ULL }, /* XSUM_XXH3_withSecret_testdata[506] */ + { 507, 0x0000000000000000ULL, 0x9A0086AF00460BE4ULL }, /* XSUM_XXH3_withSecret_testdata[507] */ + { 508, 0x0000000000000000ULL, 0x7C6304A187315EB8ULL }, /* XSUM_XXH3_withSecret_testdata[508] */ + { 509, 0x0000000000000000ULL, 0x7F6C42510D7ACD65ULL }, /* XSUM_XXH3_withSecret_testdata[509] */ + { 510, 0x0000000000000000ULL, 0x1BE1981EA82F7194ULL }, /* XSUM_XXH3_withSecret_testdata[510] */ + { 511, 0x0000000000000000ULL, 0x13E7046BC1C1F16AULL }, /* XSUM_XXH3_withSecret_testdata[511] */ + { 512, 0x0000000000000000ULL, 0x7564693DD526E28DULL }, /* XSUM_XXH3_withSecret_testdata[512] */ + { 513, 0x0000000000000000ULL, 0x90ECD952A5E1DB2AULL }, /* XSUM_XXH3_withSecret_testdata[513] */ + { 514, 0x0000000000000000ULL, 0x1AA64FBAC9FDA462ULL }, /* XSUM_XXH3_withSecret_testdata[514] */ + { 515, 0x0000000000000000ULL, 0x6FCBB3CD2F992BA2ULL }, /* XSUM_XXH3_withSecret_testdata[515] */ + { 516, 0x0000000000000000ULL, 0x91D589A1CC429931ULL }, /* XSUM_XXH3_withSecret_testdata[516] */ + { 517, 0x0000000000000000ULL, 0x250BA0C99E63EB69ULL }, /* XSUM_XXH3_withSecret_testdata[517] */ + { 518, 0x0000000000000000ULL, 0xB5806B40F35EBA8FULL }, /* XSUM_XXH3_withSecret_testdata[518] */ + { 519, 0x0000000000000000ULL, 0x5E60CDD342A90D11ULL }, /* XSUM_XXH3_withSecret_testdata[519] */ + { 520, 0x0000000000000000ULL, 0xB7E74BEB49229E4AULL }, /* XSUM_XXH3_withSecret_testdata[520] */ + { 521, 0x0000000000000000ULL, 0x99BF1AD8A3848DCEULL }, /* XSUM_XXH3_withSecret_testdata[521] */ + { 522, 0x0000000000000000ULL, 0xE829587F4E69AEF4ULL }, /* XSUM_XXH3_withSecret_testdata[522] */ + { 523, 0x0000000000000000ULL, 0xB7FCF1AE6B935506ULL }, /* XSUM_XXH3_withSecret_testdata[523] */ + { 524, 0x0000000000000000ULL, 0x0EBEE873C033D02BULL }, /* XSUM_XXH3_withSecret_testdata[524] */ + { 525, 0x0000000000000000ULL, 0xD30F10C56CB2BA6CULL }, /* XSUM_XXH3_withSecret_testdata[525] */ + { 526, 0x0000000000000000ULL, 0x3231AF77DE6BF16BULL }, /* XSUM_XXH3_withSecret_testdata[526] */ + { 527, 0x0000000000000000ULL, 0x4DF21324B4C9D980ULL }, /* XSUM_XXH3_withSecret_testdata[527] */ + { 528, 0x0000000000000000ULL, 0x116D8F2EEC17F844ULL }, /* XSUM_XXH3_withSecret_testdata[528] */ + { 529, 0x0000000000000000ULL, 0x7A520D146D8EACC4ULL }, /* XSUM_XXH3_withSecret_testdata[529] */ + { 530, 0x0000000000000000ULL, 0xCEF7415A2376AFF8ULL }, /* XSUM_XXH3_withSecret_testdata[530] */ + { 531, 0x0000000000000000ULL, 0x593BEC9404885FE6ULL }, /* XSUM_XXH3_withSecret_testdata[531] */ + { 532, 0x0000000000000000ULL, 0x3678DAE654D1BA14ULL }, /* XSUM_XXH3_withSecret_testdata[532] */ + { 533, 0x0000000000000000ULL, 0xBC46CAD7E4A3A91DULL }, /* XSUM_XXH3_withSecret_testdata[533] */ + { 534, 0x0000000000000000ULL, 0x22AAE7BE6E3CE69CULL }, /* XSUM_XXH3_withSecret_testdata[534] */ + { 535, 0x0000000000000000ULL, 0xAFD83E6D60A03601ULL }, /* XSUM_XXH3_withSecret_testdata[535] */ + { 536, 0x0000000000000000ULL, 0x4FEC4ECD4DF997D8ULL }, /* XSUM_XXH3_withSecret_testdata[536] */ + { 537, 0x0000000000000000ULL, 0x7C678DC167B9FB60ULL }, /* XSUM_XXH3_withSecret_testdata[537] */ + { 538, 0x0000000000000000ULL, 0xC878F611DE29F652ULL }, /* XSUM_XXH3_withSecret_testdata[538] */ + { 539, 0x0000000000000000ULL, 0x6A1CD0BE28964327ULL }, /* XSUM_XXH3_withSecret_testdata[539] */ + { 540, 0x0000000000000000ULL, 0x8FCA7332782D66CFULL }, /* XSUM_XXH3_withSecret_testdata[540] */ + { 541, 0x0000000000000000ULL, 0xB8480536E3E32AE0ULL }, /* XSUM_XXH3_withSecret_testdata[541] */ + { 542, 0x0000000000000000ULL, 0x94AC4ABBB2A84A0CULL }, /* XSUM_XXH3_withSecret_testdata[542] */ + { 543, 0x0000000000000000ULL, 0x90517D8900279F68ULL }, /* XSUM_XXH3_withSecret_testdata[543] */ + { 544, 0x0000000000000000ULL, 0x246A6757E15C8B12ULL }, /* XSUM_XXH3_withSecret_testdata[544] */ + { 545, 0x0000000000000000ULL, 0x6C03DFBB0752B899ULL }, /* XSUM_XXH3_withSecret_testdata[545] */ + { 546, 0x0000000000000000ULL, 0xABA2842DEAFF612FULL }, /* XSUM_XXH3_withSecret_testdata[546] */ + { 547, 0x0000000000000000ULL, 0xBAB39E5A45FFC560ULL }, /* XSUM_XXH3_withSecret_testdata[547] */ + { 548, 0x0000000000000000ULL, 0x38D42B0D8EF776F7ULL }, /* XSUM_XXH3_withSecret_testdata[548] */ + { 549, 0x0000000000000000ULL, 0x0D9B4FA58442EFDBULL }, /* XSUM_XXH3_withSecret_testdata[549] */ + { 550, 0x0000000000000000ULL, 0x42CB75A41891135DULL }, /* XSUM_XXH3_withSecret_testdata[550] */ + { 551, 0x0000000000000000ULL, 0xE192FF04B2BEB969ULL }, /* XSUM_XXH3_withSecret_testdata[551] */ + { 552, 0x0000000000000000ULL, 0xDD39E20665BF4C76ULL }, /* XSUM_XXH3_withSecret_testdata[552] */ + { 553, 0x0000000000000000ULL, 0x2A33A053BDE45941ULL }, /* XSUM_XXH3_withSecret_testdata[553] */ + { 554, 0x0000000000000000ULL, 0x0FF51ED801CA9663ULL }, /* XSUM_XXH3_withSecret_testdata[554] */ + { 555, 0x0000000000000000ULL, 0x8EF39E398852DE24ULL }, /* XSUM_XXH3_withSecret_testdata[555] */ + { 556, 0x0000000000000000ULL, 0x27F33BB18BBCAA58ULL }, /* XSUM_XXH3_withSecret_testdata[556] */ + { 557, 0x0000000000000000ULL, 0x1D8EA93FD71B3AA6ULL }, /* XSUM_XXH3_withSecret_testdata[557] */ + { 558, 0x0000000000000000ULL, 0x1756B0AEB6138559ULL }, /* XSUM_XXH3_withSecret_testdata[558] */ + { 559, 0x0000000000000000ULL, 0x28C2ECC7A2F13035ULL }, /* XSUM_XXH3_withSecret_testdata[559] */ + { 560, 0x0000000000000000ULL, 0x4D1629FBA22FF016ULL }, /* XSUM_XXH3_withSecret_testdata[560] */ + { 561, 0x0000000000000000ULL, 0xF7637F2CF266B6B0ULL }, /* XSUM_XXH3_withSecret_testdata[561] */ + { 562, 0x0000000000000000ULL, 0xAB32B43837B334B0ULL }, /* XSUM_XXH3_withSecret_testdata[562] */ + { 563, 0x0000000000000000ULL, 0xBBBD33C2D61F089CULL }, /* XSUM_XXH3_withSecret_testdata[563] */ + { 564, 0x0000000000000000ULL, 0xBFF15485EE081A17ULL }, /* XSUM_XXH3_withSecret_testdata[564] */ + { 565, 0x0000000000000000ULL, 0x809C50B82ABABF38ULL }, /* XSUM_XXH3_withSecret_testdata[565] */ + { 566, 0x0000000000000000ULL, 0xE61690E5F2BD778EULL }, /* XSUM_XXH3_withSecret_testdata[566] */ + { 567, 0x0000000000000000ULL, 0xEA3888F2AAE96689ULL }, /* XSUM_XXH3_withSecret_testdata[567] */ + { 568, 0x0000000000000000ULL, 0xCB4333286A2517EAULL }, /* XSUM_XXH3_withSecret_testdata[568] */ + { 569, 0x0000000000000000ULL, 0xB0E94197F3C32AA4ULL }, /* XSUM_XXH3_withSecret_testdata[569] */ + { 570, 0x0000000000000000ULL, 0xF0D81738946F5CE0ULL }, /* XSUM_XXH3_withSecret_testdata[570] */ + { 571, 0x0000000000000000ULL, 0x1A9D7CF2D42FFEEAULL }, /* XSUM_XXH3_withSecret_testdata[571] */ + { 572, 0x0000000000000000ULL, 0x26BB4CAFF1C913F2ULL }, /* XSUM_XXH3_withSecret_testdata[572] */ + { 573, 0x0000000000000000ULL, 0xD5B00D056E5E1CD8ULL }, /* XSUM_XXH3_withSecret_testdata[573] */ + { 574, 0x0000000000000000ULL, 0x7DC4689B61EA61E5ULL }, /* XSUM_XXH3_withSecret_testdata[574] */ + { 575, 0x0000000000000000ULL, 0x467D25957A0F8C8FULL }, /* XSUM_XXH3_withSecret_testdata[575] */ + { 576, 0x0000000000000000ULL, 0xFE07E9C6C4A371CAULL }, /* XSUM_XXH3_withSecret_testdata[576] */ + { 577, 0x0000000000000000ULL, 0x84087F00F175E5DBULL }, /* XSUM_XXH3_withSecret_testdata[577] */ + { 578, 0x0000000000000000ULL, 0x1BC927804009B88FULL }, /* XSUM_XXH3_withSecret_testdata[578] */ + { 579, 0x0000000000000000ULL, 0x55BBF74F3DE64961ULL }, /* XSUM_XXH3_withSecret_testdata[579] */ + { 580, 0x0000000000000000ULL, 0x7845B62245EAC6C9ULL }, /* XSUM_XXH3_withSecret_testdata[580] */ + { 581, 0x0000000000000000ULL, 0x20D4D64D55285E23ULL }, /* XSUM_XXH3_withSecret_testdata[581] */ + { 582, 0x0000000000000000ULL, 0x06549657D84B48F0ULL }, /* XSUM_XXH3_withSecret_testdata[582] */ + { 583, 0x0000000000000000ULL, 0x66A6764AB8F52C8CULL }, /* XSUM_XXH3_withSecret_testdata[583] */ + { 584, 0x0000000000000000ULL, 0x1DB3C57AE2A569F2ULL }, /* XSUM_XXH3_withSecret_testdata[584] */ + { 585, 0x0000000000000000ULL, 0xFDC545403F1736A2ULL }, /* XSUM_XXH3_withSecret_testdata[585] */ + { 586, 0x0000000000000000ULL, 0xB92C4D8DFF25AA4BULL }, /* XSUM_XXH3_withSecret_testdata[586] */ + { 587, 0x0000000000000000ULL, 0x0EE24667615AAE8AULL }, /* XSUM_XXH3_withSecret_testdata[587] */ + { 588, 0x0000000000000000ULL, 0x163CFA2B101E3E2EULL }, /* XSUM_XXH3_withSecret_testdata[588] */ + { 589, 0x0000000000000000ULL, 0xD95A3ADA05D46BD8ULL }, /* XSUM_XXH3_withSecret_testdata[589] */ + { 590, 0x0000000000000000ULL, 0xC50602315F6DCAC4ULL }, /* XSUM_XXH3_withSecret_testdata[590] */ + { 591, 0x0000000000000000ULL, 0xD797827DFC7270E5ULL }, /* XSUM_XXH3_withSecret_testdata[591] */ + { 592, 0x0000000000000000ULL, 0x39DF2CFEF1965140ULL }, /* XSUM_XXH3_withSecret_testdata[592] */ + { 593, 0x0000000000000000ULL, 0x27A57312A8BF08AAULL }, /* XSUM_XXH3_withSecret_testdata[593] */ + { 594, 0x0000000000000000ULL, 0x49884742F7161A91ULL }, /* XSUM_XXH3_withSecret_testdata[594] */ + { 595, 0x0000000000000000ULL, 0x703F1C859BA43E85ULL }, /* XSUM_XXH3_withSecret_testdata[595] */ + { 596, 0x0000000000000000ULL, 0xC99F5919077F1602ULL }, /* XSUM_XXH3_withSecret_testdata[596] */ + { 597, 0x0000000000000000ULL, 0x3EBFE1A698C87150ULL }, /* XSUM_XXH3_withSecret_testdata[597] */ + { 598, 0x0000000000000000ULL, 0xF52114FB53B42FA0ULL }, /* XSUM_XXH3_withSecret_testdata[598] */ + { 599, 0x0000000000000000ULL, 0xF880FF0AA16AD7E5ULL }, /* XSUM_XXH3_withSecret_testdata[599] */ + { 600, 0x0000000000000000ULL, 0x310F1CB6A2BD239FULL }, /* XSUM_XXH3_withSecret_testdata[600] */ + { 601, 0x0000000000000000ULL, 0x3DDB0C6513545BBDULL }, /* XSUM_XXH3_withSecret_testdata[601] */ + { 602, 0x0000000000000000ULL, 0xC5CD92FCB501617AULL }, /* XSUM_XXH3_withSecret_testdata[602] */ + { 603, 0x0000000000000000ULL, 0xB6B4FFBB69CBC605ULL }, /* XSUM_XXH3_withSecret_testdata[603] */ + { 604, 0x0000000000000000ULL, 0x7A6DAFA8F51949B1ULL }, /* XSUM_XXH3_withSecret_testdata[604] */ + { 605, 0x0000000000000000ULL, 0x718A65EED805BF72ULL }, /* XSUM_XXH3_withSecret_testdata[605] */ + { 606, 0x0000000000000000ULL, 0xFE312FFC698A2E0CULL }, /* XSUM_XXH3_withSecret_testdata[606] */ + { 607, 0x0000000000000000ULL, 0x78E791990076D6B8ULL }, /* XSUM_XXH3_withSecret_testdata[607] */ + { 608, 0x0000000000000000ULL, 0x4740522E691209B0ULL }, /* XSUM_XXH3_withSecret_testdata[608] */ + { 609, 0x0000000000000000ULL, 0xF81A17580E4F9F64ULL }, /* XSUM_XXH3_withSecret_testdata[609] */ + { 610, 0x0000000000000000ULL, 0x231C26FD3126B62FULL }, /* XSUM_XXH3_withSecret_testdata[610] */ + { 611, 0x0000000000000000ULL, 0x527D43263D1CB17DULL }, /* XSUM_XXH3_withSecret_testdata[611] */ + { 612, 0x0000000000000000ULL, 0x1F2B5E82293DF3DAULL }, /* XSUM_XXH3_withSecret_testdata[612] */ + { 613, 0x0000000000000000ULL, 0xECCD21F291D58491ULL }, /* XSUM_XXH3_withSecret_testdata[613] */ + { 614, 0x0000000000000000ULL, 0xDB58F6F0463116ABULL }, /* XSUM_XXH3_withSecret_testdata[614] */ + { 615, 0x0000000000000000ULL, 0x7CCD180281A935DBULL }, /* XSUM_XXH3_withSecret_testdata[615] */ + { 616, 0x0000000000000000ULL, 0xFE1BB71A72BD3FC0ULL }, /* XSUM_XXH3_withSecret_testdata[616] */ + { 617, 0x0000000000000000ULL, 0xD8E4682F83685AC6ULL }, /* XSUM_XXH3_withSecret_testdata[617] */ + { 618, 0x0000000000000000ULL, 0x2A097BE4ACF1CB3DULL }, /* XSUM_XXH3_withSecret_testdata[618] */ + { 619, 0x0000000000000000ULL, 0x4BB0559191CD6694ULL }, /* XSUM_XXH3_withSecret_testdata[619] */ + { 620, 0x0000000000000000ULL, 0x6AEEF8D74CB794ABULL }, /* XSUM_XXH3_withSecret_testdata[620] */ + { 621, 0x0000000000000000ULL, 0x44D4F1955B2B77ABULL }, /* XSUM_XXH3_withSecret_testdata[621] */ + { 622, 0x0000000000000000ULL, 0x19DB5915F3827B4EULL }, /* XSUM_XXH3_withSecret_testdata[622] */ + { 623, 0x0000000000000000ULL, 0x14D765413927C1F7ULL }, /* XSUM_XXH3_withSecret_testdata[623] */ + { 624, 0x0000000000000000ULL, 0xE9A2D756CD39BD67ULL }, /* XSUM_XXH3_withSecret_testdata[624] */ + { 625, 0x0000000000000000ULL, 0xCE1568B11F19346EULL }, /* XSUM_XXH3_withSecret_testdata[625] */ + { 626, 0x0000000000000000ULL, 0xEC3E07F1679E7153ULL }, /* XSUM_XXH3_withSecret_testdata[626] */ + { 627, 0x0000000000000000ULL, 0xC1BBAB36A97BA650ULL }, /* XSUM_XXH3_withSecret_testdata[627] */ + { 628, 0x0000000000000000ULL, 0xF40C6B258C2D2F59ULL }, /* XSUM_XXH3_withSecret_testdata[628] */ + { 629, 0x0000000000000000ULL, 0x3ECEAFDE6185BC06ULL }, /* XSUM_XXH3_withSecret_testdata[629] */ + { 630, 0x0000000000000000ULL, 0x2F7B8EB209344D00ULL }, /* XSUM_XXH3_withSecret_testdata[630] */ + { 631, 0x0000000000000000ULL, 0x7EB108637364B0B0ULL }, /* XSUM_XXH3_withSecret_testdata[631] */ + { 632, 0x0000000000000000ULL, 0x3F360E7FFE69F06CULL }, /* XSUM_XXH3_withSecret_testdata[632] */ + { 633, 0x0000000000000000ULL, 0x1BDEB7800D9CF0BBULL }, /* XSUM_XXH3_withSecret_testdata[633] */ + { 634, 0x0000000000000000ULL, 0x97E39550F9F0AA25ULL }, /* XSUM_XXH3_withSecret_testdata[634] */ + { 635, 0x0000000000000000ULL, 0x5D773AA3022107D0ULL }, /* XSUM_XXH3_withSecret_testdata[635] */ + { 636, 0x0000000000000000ULL, 0x7B3EBE0204A998D2ULL }, /* XSUM_XXH3_withSecret_testdata[636] */ + { 637, 0x0000000000000000ULL, 0x04BAA36E1EAEE3BFULL }, /* XSUM_XXH3_withSecret_testdata[637] */ + { 638, 0x0000000000000000ULL, 0x64BBFD74C721AAA3ULL }, /* XSUM_XXH3_withSecret_testdata[638] */ + { 639, 0x0000000000000000ULL, 0x88C492DA2815EFDDULL }, /* XSUM_XXH3_withSecret_testdata[639] */ + { 640, 0x0000000000000000ULL, 0x46679B44DB4DC036ULL }, /* XSUM_XXH3_withSecret_testdata[640] */ + { 641, 0x0000000000000000ULL, 0xC0F26241C55DB4E6ULL }, /* XSUM_XXH3_withSecret_testdata[641] */ + { 642, 0x0000000000000000ULL, 0x1B68CECD4E15423CULL }, /* XSUM_XXH3_withSecret_testdata[642] */ + { 643, 0x0000000000000000ULL, 0x933C50D80ED75373ULL }, /* XSUM_XXH3_withSecret_testdata[643] */ + { 644, 0x0000000000000000ULL, 0xCCCFB912FB0F29AAULL }, /* XSUM_XXH3_withSecret_testdata[644] */ + { 645, 0x0000000000000000ULL, 0xCC48BA3862246859ULL }, /* XSUM_XXH3_withSecret_testdata[645] */ + { 646, 0x0000000000000000ULL, 0x32FDBEADE5A50042ULL }, /* XSUM_XXH3_withSecret_testdata[646] */ + { 647, 0x0000000000000000ULL, 0x489E5E8E2F383746ULL }, /* XSUM_XXH3_withSecret_testdata[647] */ + { 648, 0x0000000000000000ULL, 0xE344D9ABFE602B22ULL }, /* XSUM_XXH3_withSecret_testdata[648] */ + { 649, 0x0000000000000000ULL, 0x21531EF875D4FA29ULL }, /* XSUM_XXH3_withSecret_testdata[649] */ + { 650, 0x0000000000000000ULL, 0x3B59069D9A2B8135ULL }, /* XSUM_XXH3_withSecret_testdata[650] */ + { 651, 0x0000000000000000ULL, 0x78AB22FE4F0FBF0FULL }, /* XSUM_XXH3_withSecret_testdata[651] */ + { 652, 0x0000000000000000ULL, 0xACB8C5400199B242ULL }, /* XSUM_XXH3_withSecret_testdata[652] */ + { 653, 0x0000000000000000ULL, 0x71919508938CA38DULL }, /* XSUM_XXH3_withSecret_testdata[653] */ + { 654, 0x0000000000000000ULL, 0x7633B021B9E6BCCCULL }, /* XSUM_XXH3_withSecret_testdata[654] */ + { 655, 0x0000000000000000ULL, 0xD087E689A0489715ULL }, /* XSUM_XXH3_withSecret_testdata[655] */ + { 656, 0x0000000000000000ULL, 0x0B76872649A7A181ULL }, /* XSUM_XXH3_withSecret_testdata[656] */ + { 657, 0x0000000000000000ULL, 0x960389D3025ED64FULL }, /* XSUM_XXH3_withSecret_testdata[657] */ + { 658, 0x0000000000000000ULL, 0x5EFB5D57310F3290ULL }, /* XSUM_XXH3_withSecret_testdata[658] */ + { 659, 0x0000000000000000ULL, 0x4635C245BCC082F8ULL }, /* XSUM_XXH3_withSecret_testdata[659] */ + { 660, 0x0000000000000000ULL, 0x1A44D63C80336D7CULL }, /* XSUM_XXH3_withSecret_testdata[660] */ + { 661, 0x0000000000000000ULL, 0x4051FBAFDC0A9EE7ULL }, /* XSUM_XXH3_withSecret_testdata[661] */ + { 662, 0x0000000000000000ULL, 0xEE1DC1BED1BBF340ULL }, /* XSUM_XXH3_withSecret_testdata[662] */ + { 663, 0x0000000000000000ULL, 0x567732FFF10E10DDULL }, /* XSUM_XXH3_withSecret_testdata[663] */ + { 664, 0x0000000000000000ULL, 0xCA0D4F910158778CULL }, /* XSUM_XXH3_withSecret_testdata[664] */ + { 665, 0x0000000000000000ULL, 0x8CB80A374551419CULL }, /* XSUM_XXH3_withSecret_testdata[665] */ + { 666, 0x0000000000000000ULL, 0x2EA34B279531E9A6ULL }, /* XSUM_XXH3_withSecret_testdata[666] */ + { 667, 0x0000000000000000ULL, 0xFC3478CF609E74BFULL }, /* XSUM_XXH3_withSecret_testdata[667] */ + { 668, 0x0000000000000000ULL, 0xF89675F751403E46ULL }, /* XSUM_XXH3_withSecret_testdata[668] */ + { 669, 0x0000000000000000ULL, 0x002903C1251E2536ULL }, /* XSUM_XXH3_withSecret_testdata[669] */ + { 670, 0x0000000000000000ULL, 0x48645513501B1AF2ULL }, /* XSUM_XXH3_withSecret_testdata[670] */ + { 671, 0x0000000000000000ULL, 0x14B899EF06C56DCEULL }, /* XSUM_XXH3_withSecret_testdata[671] */ + { 672, 0x0000000000000000ULL, 0xCCC02F5A3F2338A7ULL }, /* XSUM_XXH3_withSecret_testdata[672] */ + { 673, 0x0000000000000000ULL, 0x29F8CB8B53ACA0F7ULL }, /* XSUM_XXH3_withSecret_testdata[673] */ + { 674, 0x0000000000000000ULL, 0xBD15D6F15EC47EA2ULL }, /* XSUM_XXH3_withSecret_testdata[674] */ + { 675, 0x0000000000000000ULL, 0xC89746EEF3F9AA1CULL }, /* XSUM_XXH3_withSecret_testdata[675] */ + { 676, 0x0000000000000000ULL, 0x0C5BA69608ADCA74ULL }, /* XSUM_XXH3_withSecret_testdata[676] */ + { 677, 0x0000000000000000ULL, 0x80BD5048EDAE6489ULL }, /* XSUM_XXH3_withSecret_testdata[677] */ + { 678, 0x0000000000000000ULL, 0xAC744213B2F7172FULL }, /* XSUM_XXH3_withSecret_testdata[678] */ + { 679, 0x0000000000000000ULL, 0xE9B82480B309EF6EULL }, /* XSUM_XXH3_withSecret_testdata[679] */ + { 680, 0x0000000000000000ULL, 0xF83032CF5D84B833ULL }, /* XSUM_XXH3_withSecret_testdata[680] */ + { 681, 0x0000000000000000ULL, 0x08AB6FB3C3C8D24DULL }, /* XSUM_XXH3_withSecret_testdata[681] */ + { 682, 0x0000000000000000ULL, 0xF2A2C2154E58C9B4ULL }, /* XSUM_XXH3_withSecret_testdata[682] */ + { 683, 0x0000000000000000ULL, 0xBD8D45E6543A8F07ULL }, /* XSUM_XXH3_withSecret_testdata[683] */ + { 684, 0x0000000000000000ULL, 0x02010E1040D4A75EULL }, /* XSUM_XXH3_withSecret_testdata[684] */ + { 685, 0x0000000000000000ULL, 0xD350EEA999B807F6ULL }, /* XSUM_XXH3_withSecret_testdata[685] */ + { 686, 0x0000000000000000ULL, 0xF2D1DF6BFA7379B5ULL }, /* XSUM_XXH3_withSecret_testdata[686] */ + { 687, 0x0000000000000000ULL, 0xE520648ACD33CAC8ULL }, /* XSUM_XXH3_withSecret_testdata[687] */ + { 688, 0x0000000000000000ULL, 0x71BDE128795B979AULL }, /* XSUM_XXH3_withSecret_testdata[688] */ + { 689, 0x0000000000000000ULL, 0xF314701CB0A2B713ULL }, /* XSUM_XXH3_withSecret_testdata[689] */ + { 690, 0x0000000000000000ULL, 0x62F19C456C28BB9EULL }, /* XSUM_XXH3_withSecret_testdata[690] */ + { 691, 0x0000000000000000ULL, 0xA3517F9E43BF2893ULL }, /* XSUM_XXH3_withSecret_testdata[691] */ + { 692, 0x0000000000000000ULL, 0xC00D3D8ABCBB60F6ULL }, /* XSUM_XXH3_withSecret_testdata[692] */ + { 693, 0x0000000000000000ULL, 0x3AFA9A6198D94AACULL }, /* XSUM_XXH3_withSecret_testdata[693] */ + { 694, 0x0000000000000000ULL, 0xB2D00E56EDEA2069ULL }, /* XSUM_XXH3_withSecret_testdata[694] */ + { 695, 0x0000000000000000ULL, 0xC23DFF8D4D99A8EBULL }, /* XSUM_XXH3_withSecret_testdata[695] */ + { 696, 0x0000000000000000ULL, 0xE07B20DB4DF65B1AULL }, /* XSUM_XXH3_withSecret_testdata[696] */ + { 697, 0x0000000000000000ULL, 0x659A6E34580198E9ULL }, /* XSUM_XXH3_withSecret_testdata[697] */ + { 698, 0x0000000000000000ULL, 0x33F1B0918FCA5B70ULL }, /* XSUM_XXH3_withSecret_testdata[698] */ + { 699, 0x0000000000000000ULL, 0x05E35B0C5159D052ULL }, /* XSUM_XXH3_withSecret_testdata[699] */ + { 700, 0x0000000000000000ULL, 0x402EA3F681BF8779ULL }, /* XSUM_XXH3_withSecret_testdata[700] */ + { 701, 0x0000000000000000ULL, 0x4EB4891136AE353AULL }, /* XSUM_XXH3_withSecret_testdata[701] */ + { 702, 0x0000000000000000ULL, 0xD74670F74631927FULL }, /* XSUM_XXH3_withSecret_testdata[702] */ + { 703, 0x0000000000000000ULL, 0x2B44C65E1573C013ULL }, /* XSUM_XXH3_withSecret_testdata[703] */ + { 704, 0x0000000000000000ULL, 0xA41AB04CE9A2579FULL }, /* XSUM_XXH3_withSecret_testdata[704] */ + { 705, 0x0000000000000000ULL, 0x10976DA8C629A1ADULL }, /* XSUM_XXH3_withSecret_testdata[705] */ + { 706, 0x0000000000000000ULL, 0x969DEE0B318482B7ULL }, /* XSUM_XXH3_withSecret_testdata[706] */ + { 707, 0x0000000000000000ULL, 0xBB9674583F7864EDULL }, /* XSUM_XXH3_withSecret_testdata[707] */ + { 708, 0x0000000000000000ULL, 0x8789C8266AED0667ULL }, /* XSUM_XXH3_withSecret_testdata[708] */ + { 709, 0x0000000000000000ULL, 0x48F472194E709005ULL }, /* XSUM_XXH3_withSecret_testdata[709] */ + { 710, 0x0000000000000000ULL, 0x2D2D3E6DAF08044FULL }, /* XSUM_XXH3_withSecret_testdata[710] */ + { 711, 0x0000000000000000ULL, 0xB48D7153CED1A82CULL }, /* XSUM_XXH3_withSecret_testdata[711] */ + { 712, 0x0000000000000000ULL, 0x24DD7E127E91C3EBULL }, /* XSUM_XXH3_withSecret_testdata[712] */ + { 713, 0x0000000000000000ULL, 0x8A62D86D2097F56FULL }, /* XSUM_XXH3_withSecret_testdata[713] */ + { 714, 0x0000000000000000ULL, 0x5FEB5D0B5A459D5FULL }, /* XSUM_XXH3_withSecret_testdata[714] */ + { 715, 0x0000000000000000ULL, 0x72DD0A1F49A494AEULL }, /* XSUM_XXH3_withSecret_testdata[715] */ + { 716, 0x0000000000000000ULL, 0x56165D4F0AE93796ULL }, /* XSUM_XXH3_withSecret_testdata[716] */ + { 717, 0x0000000000000000ULL, 0x32B453DC9A40536BULL }, /* XSUM_XXH3_withSecret_testdata[717] */ + { 718, 0x0000000000000000ULL, 0xF9FF068AD17E12D4ULL }, /* XSUM_XXH3_withSecret_testdata[718] */ + { 719, 0x0000000000000000ULL, 0xD6B57914B3051F9BULL }, /* XSUM_XXH3_withSecret_testdata[719] */ + { 720, 0x0000000000000000ULL, 0xFE283636BB19F190ULL }, /* XSUM_XXH3_withSecret_testdata[720] */ + { 721, 0x0000000000000000ULL, 0x0B7D684B7D87A90AULL }, /* XSUM_XXH3_withSecret_testdata[721] */ + { 722, 0x0000000000000000ULL, 0xF033F9A6114B31DDULL }, /* XSUM_XXH3_withSecret_testdata[722] */ + { 723, 0x0000000000000000ULL, 0x14D23747EAB0059DULL }, /* XSUM_XXH3_withSecret_testdata[723] */ + { 724, 0x0000000000000000ULL, 0x53B7F60F9A96A4E2ULL }, /* XSUM_XXH3_withSecret_testdata[724] */ + { 725, 0x0000000000000000ULL, 0x2DC466F5A1DB6334ULL }, /* XSUM_XXH3_withSecret_testdata[725] */ + { 726, 0x0000000000000000ULL, 0x9F4037D5CD604912ULL }, /* XSUM_XXH3_withSecret_testdata[726] */ + { 727, 0x0000000000000000ULL, 0xC6126C6BFCD9987CULL }, /* XSUM_XXH3_withSecret_testdata[727] */ + { 728, 0x0000000000000000ULL, 0x70C6C6077CAB17CFULL }, /* XSUM_XXH3_withSecret_testdata[728] */ + { 729, 0x0000000000000000ULL, 0x40F31F9E3DC11283ULL }, /* XSUM_XXH3_withSecret_testdata[729] */ + { 730, 0x0000000000000000ULL, 0xA76292426E4D3721ULL }, /* XSUM_XXH3_withSecret_testdata[730] */ + { 731, 0x0000000000000000ULL, 0x9C1E2F0357FDC2ADULL }, /* XSUM_XXH3_withSecret_testdata[731] */ + { 732, 0x0000000000000000ULL, 0x6FCA7F5216355242ULL }, /* XSUM_XXH3_withSecret_testdata[732] */ + { 733, 0x0000000000000000ULL, 0xECE8CF23AE474819ULL }, /* XSUM_XXH3_withSecret_testdata[733] */ + { 734, 0x0000000000000000ULL, 0x38D3E24C911537B9ULL }, /* XSUM_XXH3_withSecret_testdata[734] */ + { 735, 0x0000000000000000ULL, 0x28B2C70FC001D1B8ULL }, /* XSUM_XXH3_withSecret_testdata[735] */ + { 736, 0x0000000000000000ULL, 0xDF81596452BB7BA0ULL }, /* XSUM_XXH3_withSecret_testdata[736] */ + { 737, 0x0000000000000000ULL, 0x99659599BFFF1C8CULL }, /* XSUM_XXH3_withSecret_testdata[737] */ + { 738, 0x0000000000000000ULL, 0x9BBF45234136AE76ULL }, /* XSUM_XXH3_withSecret_testdata[738] */ + { 739, 0x0000000000000000ULL, 0xDB5F6A3B2009ED23ULL }, /* XSUM_XXH3_withSecret_testdata[739] */ + { 740, 0x0000000000000000ULL, 0xF137E2C95EAFABEEULL }, /* XSUM_XXH3_withSecret_testdata[740] */ + { 741, 0x0000000000000000ULL, 0x9EA9DCEA28C67283ULL }, /* XSUM_XXH3_withSecret_testdata[741] */ + { 742, 0x0000000000000000ULL, 0x1D614D3FCEF1BFF2ULL }, /* XSUM_XXH3_withSecret_testdata[742] */ + { 743, 0x0000000000000000ULL, 0x6505CDD578A13F90ULL }, /* XSUM_XXH3_withSecret_testdata[743] */ + { 744, 0x0000000000000000ULL, 0xD9BD23E78D5FDB64ULL }, /* XSUM_XXH3_withSecret_testdata[744] */ + { 745, 0x0000000000000000ULL, 0x16EB6BA76C662BD1ULL }, /* XSUM_XXH3_withSecret_testdata[745] */ + { 746, 0x0000000000000000ULL, 0xB1B82DA246EDC970ULL }, /* XSUM_XXH3_withSecret_testdata[746] */ + { 747, 0x0000000000000000ULL, 0xFD227BB3D813462CULL }, /* XSUM_XXH3_withSecret_testdata[747] */ + { 748, 0x0000000000000000ULL, 0xCD8E446999810C93ULL }, /* XSUM_XXH3_withSecret_testdata[748] */ + { 749, 0x0000000000000000ULL, 0x58BD25D1B692F670ULL }, /* XSUM_XXH3_withSecret_testdata[749] */ + { 750, 0x0000000000000000ULL, 0xE61566F9D3ABEF07ULL }, /* XSUM_XXH3_withSecret_testdata[750] */ + { 751, 0x0000000000000000ULL, 0x4CF9B93AE03C3DFDULL }, /* XSUM_XXH3_withSecret_testdata[751] */ + { 752, 0x0000000000000000ULL, 0xDE22C47EDEC52203ULL }, /* XSUM_XXH3_withSecret_testdata[752] */ + { 753, 0x0000000000000000ULL, 0x25D22BD3CFB1D0D1ULL }, /* XSUM_XXH3_withSecret_testdata[753] */ + { 754, 0x0000000000000000ULL, 0x8BD7853928697AC6ULL }, /* XSUM_XXH3_withSecret_testdata[754] */ + { 755, 0x0000000000000000ULL, 0x92E08C319A200940ULL }, /* XSUM_XXH3_withSecret_testdata[755] */ + { 756, 0x0000000000000000ULL, 0x27AD06BDEAC44267ULL }, /* XSUM_XXH3_withSecret_testdata[756] */ + { 757, 0x0000000000000000ULL, 0xA17D03CD9A632AE3ULL }, /* XSUM_XXH3_withSecret_testdata[757] */ + { 758, 0x0000000000000000ULL, 0xF0FBB2A73E157F15ULL }, /* XSUM_XXH3_withSecret_testdata[758] */ + { 759, 0x0000000000000000ULL, 0xDAF9B6534BD1921EULL }, /* XSUM_XXH3_withSecret_testdata[759] */ + { 760, 0x0000000000000000ULL, 0xD4D0979DCE515AD9ULL }, /* XSUM_XXH3_withSecret_testdata[760] */ + { 761, 0x0000000000000000ULL, 0x0FB5BC6999532331ULL }, /* XSUM_XXH3_withSecret_testdata[761] */ + { 762, 0x0000000000000000ULL, 0xFB9F3A8FF62149B6ULL }, /* XSUM_XXH3_withSecret_testdata[762] */ + { 763, 0x0000000000000000ULL, 0xDB70A13D62BC4863ULL }, /* XSUM_XXH3_withSecret_testdata[763] */ + { 764, 0x0000000000000000ULL, 0x08E6397A0C6712D1ULL }, /* XSUM_XXH3_withSecret_testdata[764] */ + { 765, 0x0000000000000000ULL, 0x1D0DF8656A195DD3ULL }, /* XSUM_XXH3_withSecret_testdata[765] */ + { 766, 0x0000000000000000ULL, 0xFA9F107DAB90CF8EULL }, /* XSUM_XXH3_withSecret_testdata[766] */ + { 767, 0x0000000000000000ULL, 0x35BC1AD6E243381BULL }, /* XSUM_XXH3_withSecret_testdata[767] */ + { 768, 0x0000000000000000ULL, 0x07A458215F1F3BFFULL }, /* XSUM_XXH3_withSecret_testdata[768] */ + { 769, 0x0000000000000000ULL, 0xC57164A8296F20C5ULL }, /* XSUM_XXH3_withSecret_testdata[769] */ + { 770, 0x0000000000000000ULL, 0x881B664D5A8434CEULL }, /* XSUM_XXH3_withSecret_testdata[770] */ + { 771, 0x0000000000000000ULL, 0xF682457611F25916ULL }, /* XSUM_XXH3_withSecret_testdata[771] */ + { 772, 0x0000000000000000ULL, 0x62972939496F3809ULL }, /* XSUM_XXH3_withSecret_testdata[772] */ + { 773, 0x0000000000000000ULL, 0x6EFA77B933151865ULL }, /* XSUM_XXH3_withSecret_testdata[773] */ + { 774, 0x0000000000000000ULL, 0x4790D7FB3353945EULL }, /* XSUM_XXH3_withSecret_testdata[774] */ + { 775, 0x0000000000000000ULL, 0x2069E9A0771D6E82ULL }, /* XSUM_XXH3_withSecret_testdata[775] */ + { 776, 0x0000000000000000ULL, 0x825AB08463AC858DULL }, /* XSUM_XXH3_withSecret_testdata[776] */ + { 777, 0x0000000000000000ULL, 0x0105B5B85B8A54F4ULL }, /* XSUM_XXH3_withSecret_testdata[777] */ + { 778, 0x0000000000000000ULL, 0x29FC19B50DDDAAFFULL }, /* XSUM_XXH3_withSecret_testdata[778] */ + { 779, 0x0000000000000000ULL, 0xAB7E1C73D5784D27ULL }, /* XSUM_XXH3_withSecret_testdata[779] */ + { 780, 0x0000000000000000ULL, 0xD1FC314A124B6BC8ULL }, /* XSUM_XXH3_withSecret_testdata[780] */ + { 781, 0x0000000000000000ULL, 0x68D85A5E8387D9CEULL }, /* XSUM_XXH3_withSecret_testdata[781] */ + { 782, 0x0000000000000000ULL, 0x87166ECB309BA154ULL }, /* XSUM_XXH3_withSecret_testdata[782] */ + { 783, 0x0000000000000000ULL, 0xAEA1BABA0D3E45AFULL }, /* XSUM_XXH3_withSecret_testdata[783] */ + { 784, 0x0000000000000000ULL, 0x8D8496E2CC45886DULL }, /* XSUM_XXH3_withSecret_testdata[784] */ + { 785, 0x0000000000000000ULL, 0x6C396D60F7A4F0A0ULL }, /* XSUM_XXH3_withSecret_testdata[785] */ + { 786, 0x0000000000000000ULL, 0xEFFF37679BE15016ULL }, /* XSUM_XXH3_withSecret_testdata[786] */ + { 787, 0x0000000000000000ULL, 0xB7CB3C488DB2E57AULL }, /* XSUM_XXH3_withSecret_testdata[787] */ + { 788, 0x0000000000000000ULL, 0x65EC1669F2D5BAF0ULL }, /* XSUM_XXH3_withSecret_testdata[788] */ + { 789, 0x0000000000000000ULL, 0xABE83EBA7E7F7F70ULL }, /* XSUM_XXH3_withSecret_testdata[789] */ + { 790, 0x0000000000000000ULL, 0x31E138509E94325AULL }, /* XSUM_XXH3_withSecret_testdata[790] */ + { 791, 0x0000000000000000ULL, 0x9318AC0BEEBCEECDULL }, /* XSUM_XXH3_withSecret_testdata[791] */ + { 792, 0x0000000000000000ULL, 0x9D31670328859E39ULL }, /* XSUM_XXH3_withSecret_testdata[792] */ + { 793, 0x0000000000000000ULL, 0x53F9B2069E2AE9BEULL }, /* XSUM_XXH3_withSecret_testdata[793] */ + { 794, 0x0000000000000000ULL, 0x20A05E04DDFD2C43ULL }, /* XSUM_XXH3_withSecret_testdata[794] */ + { 795, 0x0000000000000000ULL, 0xBFBC227CEEEB4FA7ULL }, /* XSUM_XXH3_withSecret_testdata[795] */ + { 796, 0x0000000000000000ULL, 0x50A953955EE32C70ULL }, /* XSUM_XXH3_withSecret_testdata[796] */ + { 797, 0x0000000000000000ULL, 0x0F09DBD59B27961DULL }, /* XSUM_XXH3_withSecret_testdata[797] */ + { 798, 0x0000000000000000ULL, 0x3416F050549CAC60ULL }, /* XSUM_XXH3_withSecret_testdata[798] */ + { 799, 0x0000000000000000ULL, 0x4BA29FA396DDBA98ULL }, /* XSUM_XXH3_withSecret_testdata[799] */ + { 800, 0x0000000000000000ULL, 0x312B72B55C7208E2ULL }, /* XSUM_XXH3_withSecret_testdata[800] */ + { 801, 0x0000000000000000ULL, 0x3D769F14101FE7C4ULL }, /* XSUM_XXH3_withSecret_testdata[801] */ + { 802, 0x0000000000000000ULL, 0xD7250DEEB225E7D2ULL }, /* XSUM_XXH3_withSecret_testdata[802] */ + { 803, 0x0000000000000000ULL, 0x1E39FD083C51CD90ULL }, /* XSUM_XXH3_withSecret_testdata[803] */ + { 804, 0x0000000000000000ULL, 0xAA53D012095CE25DULL }, /* XSUM_XXH3_withSecret_testdata[804] */ + { 805, 0x0000000000000000ULL, 0x3F8684552873B76AULL }, /* XSUM_XXH3_withSecret_testdata[805] */ + { 806, 0x0000000000000000ULL, 0xFC18EA6A1819C626ULL }, /* XSUM_XXH3_withSecret_testdata[806] */ + { 807, 0x0000000000000000ULL, 0xA5B2AF212A5D51AFULL }, /* XSUM_XXH3_withSecret_testdata[807] */ + { 808, 0x0000000000000000ULL, 0xFB5512AF1C6871E2ULL }, /* XSUM_XXH3_withSecret_testdata[808] */ + { 809, 0x0000000000000000ULL, 0xAC41F21A3CDC474AULL }, /* XSUM_XXH3_withSecret_testdata[809] */ + { 810, 0x0000000000000000ULL, 0x3481CC77F6819677ULL }, /* XSUM_XXH3_withSecret_testdata[810] */ + { 811, 0x0000000000000000ULL, 0x6428F11429383DEBULL }, /* XSUM_XXH3_withSecret_testdata[811] */ + { 812, 0x0000000000000000ULL, 0x6E3B873C32B994ADULL }, /* XSUM_XXH3_withSecret_testdata[812] */ + { 813, 0x0000000000000000ULL, 0xB2077E7E7D77A3F4ULL }, /* XSUM_XXH3_withSecret_testdata[813] */ + { 814, 0x0000000000000000ULL, 0xCB9EB8F368116E1BULL }, /* XSUM_XXH3_withSecret_testdata[814] */ + { 815, 0x0000000000000000ULL, 0x7CAD7B69251A2FF9ULL }, /* XSUM_XXH3_withSecret_testdata[815] */ + { 816, 0x0000000000000000ULL, 0x8C0BB7585B99B11FULL }, /* XSUM_XXH3_withSecret_testdata[816] */ + { 817, 0x0000000000000000ULL, 0xEDB0F9587C7765BBULL }, /* XSUM_XXH3_withSecret_testdata[817] */ + { 818, 0x0000000000000000ULL, 0xEBD1CE0BFE187E21ULL }, /* XSUM_XXH3_withSecret_testdata[818] */ + { 819, 0x0000000000000000ULL, 0xD72A43DA55C38C85ULL }, /* XSUM_XXH3_withSecret_testdata[819] */ + { 820, 0x0000000000000000ULL, 0x2660C967923AC585ULL }, /* XSUM_XXH3_withSecret_testdata[820] */ + { 821, 0x0000000000000000ULL, 0x6D4C89FF3B625CABULL }, /* XSUM_XXH3_withSecret_testdata[821] */ + { 822, 0x0000000000000000ULL, 0x47E717BC6A8B5234ULL }, /* XSUM_XXH3_withSecret_testdata[822] */ + { 823, 0x0000000000000000ULL, 0x1918AA521A7787C5ULL }, /* XSUM_XXH3_withSecret_testdata[823] */ + { 824, 0x0000000000000000ULL, 0xF261C5AD66E4D972ULL }, /* XSUM_XXH3_withSecret_testdata[824] */ + { 825, 0x0000000000000000ULL, 0x24C41F2E555A52CCULL }, /* XSUM_XXH3_withSecret_testdata[825] */ + { 826, 0x0000000000000000ULL, 0x2DB2A30A92401FBFULL }, /* XSUM_XXH3_withSecret_testdata[826] */ + { 827, 0x0000000000000000ULL, 0x31A31AD75A7323AFULL }, /* XSUM_XXH3_withSecret_testdata[827] */ + { 828, 0x0000000000000000ULL, 0xCB76753807565B45ULL }, /* XSUM_XXH3_withSecret_testdata[828] */ + { 829, 0x0000000000000000ULL, 0x17935EBAF156B066ULL }, /* XSUM_XXH3_withSecret_testdata[829] */ + { 830, 0x0000000000000000ULL, 0x8AAA1B83562FDEB6ULL }, /* XSUM_XXH3_withSecret_testdata[830] */ + { 831, 0x0000000000000000ULL, 0xE5C95A762CD150AEULL }, /* XSUM_XXH3_withSecret_testdata[831] */ + { 832, 0x0000000000000000ULL, 0x2617FC698E497A38ULL }, /* XSUM_XXH3_withSecret_testdata[832] */ + { 833, 0x0000000000000000ULL, 0x144F4AAA69C19F15ULL }, /* XSUM_XXH3_withSecret_testdata[833] */ + { 834, 0x0000000000000000ULL, 0x99E7A94392A4EE2EULL }, /* XSUM_XXH3_withSecret_testdata[834] */ + { 835, 0x0000000000000000ULL, 0xFB94A6E9B4643FE1ULL }, /* XSUM_XXH3_withSecret_testdata[835] */ + { 836, 0x0000000000000000ULL, 0x2EEF25CD166EB0CFULL }, /* XSUM_XXH3_withSecret_testdata[836] */ + { 837, 0x0000000000000000ULL, 0xFE9B761CAA13B66EULL }, /* XSUM_XXH3_withSecret_testdata[837] */ + { 838, 0x0000000000000000ULL, 0x57B7874938141AAEULL }, /* XSUM_XXH3_withSecret_testdata[838] */ + { 839, 0x0000000000000000ULL, 0xF79088ED2B43C60AULL }, /* XSUM_XXH3_withSecret_testdata[839] */ + { 840, 0x0000000000000000ULL, 0x3AD79A82E659F12BULL }, /* XSUM_XXH3_withSecret_testdata[840] */ + { 841, 0x0000000000000000ULL, 0x0DEC17391585DFDEULL }, /* XSUM_XXH3_withSecret_testdata[841] */ + { 842, 0x0000000000000000ULL, 0x66299809E567E7F0ULL }, /* XSUM_XXH3_withSecret_testdata[842] */ + { 843, 0x0000000000000000ULL, 0x752AACD314E756C6ULL }, /* XSUM_XXH3_withSecret_testdata[843] */ + { 844, 0x0000000000000000ULL, 0x1AE014F08EBE2C6CULL }, /* XSUM_XXH3_withSecret_testdata[844] */ + { 845, 0x0000000000000000ULL, 0xA9554E9F9E4394EFULL }, /* XSUM_XXH3_withSecret_testdata[845] */ + { 846, 0x0000000000000000ULL, 0xF1A16B2C2F7DED2DULL }, /* XSUM_XXH3_withSecret_testdata[846] */ + { 847, 0x0000000000000000ULL, 0x8AD8E776B573CC65ULL }, /* XSUM_XXH3_withSecret_testdata[847] */ + { 848, 0x0000000000000000ULL, 0x28486CB33028023BULL }, /* XSUM_XXH3_withSecret_testdata[848] */ + { 849, 0x0000000000000000ULL, 0xB677C580F80CAA74ULL }, /* XSUM_XXH3_withSecret_testdata[849] */ + { 850, 0x0000000000000000ULL, 0x6563F9447F2DFAD7ULL }, /* XSUM_XXH3_withSecret_testdata[850] */ + { 851, 0x0000000000000000ULL, 0x3F959D533722594AULL }, /* XSUM_XXH3_withSecret_testdata[851] */ + { 852, 0x0000000000000000ULL, 0x4FECD02A4281A4DEULL }, /* XSUM_XXH3_withSecret_testdata[852] */ + { 853, 0x0000000000000000ULL, 0xF80BFC68BAC87FE6ULL }, /* XSUM_XXH3_withSecret_testdata[853] */ + { 854, 0x0000000000000000ULL, 0xADBB99110E3DC5C8ULL }, /* XSUM_XXH3_withSecret_testdata[854] */ + { 855, 0x0000000000000000ULL, 0x1624DB70FABCF1BBULL }, /* XSUM_XXH3_withSecret_testdata[855] */ + { 856, 0x0000000000000000ULL, 0x47D080213B5F6B7AULL }, /* XSUM_XXH3_withSecret_testdata[856] */ + { 857, 0x0000000000000000ULL, 0x55E53C96F067ABD1ULL }, /* XSUM_XXH3_withSecret_testdata[857] */ + { 858, 0x0000000000000000ULL, 0x96E4DA063B4BCD11ULL }, /* XSUM_XXH3_withSecret_testdata[858] */ + { 859, 0x0000000000000000ULL, 0xF0DDE3E2E3F524B0ULL }, /* XSUM_XXH3_withSecret_testdata[859] */ + { 860, 0x0000000000000000ULL, 0xBA387AEE58213E3AULL }, /* XSUM_XXH3_withSecret_testdata[860] */ + { 861, 0x0000000000000000ULL, 0xE0802DAB34A6D5A6ULL }, /* XSUM_XXH3_withSecret_testdata[861] */ + { 862, 0x0000000000000000ULL, 0x83D157DA4B3251B9ULL }, /* XSUM_XXH3_withSecret_testdata[862] */ + { 863, 0x0000000000000000ULL, 0x0EB879E58C37A9BEULL }, /* XSUM_XXH3_withSecret_testdata[863] */ + { 864, 0x0000000000000000ULL, 0x259A239831DF6B15ULL }, /* XSUM_XXH3_withSecret_testdata[864] */ + { 865, 0x0000000000000000ULL, 0x27C4E3710EB7CFF6ULL }, /* XSUM_XXH3_withSecret_testdata[865] */ + { 866, 0x0000000000000000ULL, 0xA026856BC1006D57ULL }, /* XSUM_XXH3_withSecret_testdata[866] */ + { 867, 0x0000000000000000ULL, 0x76D72DB18A5872ABULL }, /* XSUM_XXH3_withSecret_testdata[867] */ + { 868, 0x0000000000000000ULL, 0x0667DC0A5FF702CCULL }, /* XSUM_XXH3_withSecret_testdata[868] */ + { 869, 0x0000000000000000ULL, 0xCB3D8D142F846DC8ULL }, /* XSUM_XXH3_withSecret_testdata[869] */ + { 870, 0x0000000000000000ULL, 0x614791183BD261C4ULL }, /* XSUM_XXH3_withSecret_testdata[870] */ + { 871, 0x0000000000000000ULL, 0xE6F68A1EB569851CULL }, /* XSUM_XXH3_withSecret_testdata[871] */ + { 872, 0x0000000000000000ULL, 0x13B16E7916DE86A6ULL }, /* XSUM_XXH3_withSecret_testdata[872] */ + { 873, 0x0000000000000000ULL, 0x312ACD8E47D79F6AULL }, /* XSUM_XXH3_withSecret_testdata[873] */ + { 874, 0x0000000000000000ULL, 0x6581DFD36267EC93ULL }, /* XSUM_XXH3_withSecret_testdata[874] */ + { 875, 0x0000000000000000ULL, 0x112D90A3A2790D2EULL }, /* XSUM_XXH3_withSecret_testdata[875] */ + { 876, 0x0000000000000000ULL, 0x1474F4016B9F64A4ULL }, /* XSUM_XXH3_withSecret_testdata[876] */ + { 877, 0x0000000000000000ULL, 0xF652765BC35398AFULL }, /* XSUM_XXH3_withSecret_testdata[877] */ + { 878, 0x0000000000000000ULL, 0xCF4D914D0F5C6D82ULL }, /* XSUM_XXH3_withSecret_testdata[878] */ + { 879, 0x0000000000000000ULL, 0x4F9849DA1E433123ULL }, /* XSUM_XXH3_withSecret_testdata[879] */ + { 880, 0x0000000000000000ULL, 0x552EFFA215B076E6ULL }, /* XSUM_XXH3_withSecret_testdata[880] */ + { 881, 0x0000000000000000ULL, 0x70550BE650B85D78ULL }, /* XSUM_XXH3_withSecret_testdata[881] */ + { 882, 0x0000000000000000ULL, 0xA051A52D4FCF1196ULL }, /* XSUM_XXH3_withSecret_testdata[882] */ + { 883, 0x0000000000000000ULL, 0x89A09140CFC09BEFULL }, /* XSUM_XXH3_withSecret_testdata[883] */ + { 884, 0x0000000000000000ULL, 0xFABC1A2C1EEF0D88ULL }, /* XSUM_XXH3_withSecret_testdata[884] */ + { 885, 0x0000000000000000ULL, 0xEDDD143E28EC9E3BULL }, /* XSUM_XXH3_withSecret_testdata[885] */ + { 886, 0x0000000000000000ULL, 0xA0F647AE17840307ULL }, /* XSUM_XXH3_withSecret_testdata[886] */ + { 887, 0x0000000000000000ULL, 0x66D27AF5585FBF7AULL }, /* XSUM_XXH3_withSecret_testdata[887] */ + { 888, 0x0000000000000000ULL, 0x769CD692AE051FD5ULL }, /* XSUM_XXH3_withSecret_testdata[888] */ + { 889, 0x0000000000000000ULL, 0x43E34DE3A0E1AC4FULL }, /* XSUM_XXH3_withSecret_testdata[889] */ + { 890, 0x0000000000000000ULL, 0x842B3ADDF6124DAFULL }, /* XSUM_XXH3_withSecret_testdata[890] */ + { 891, 0x0000000000000000ULL, 0x12B41F63EDF27FA4ULL }, /* XSUM_XXH3_withSecret_testdata[891] */ + { 892, 0x0000000000000000ULL, 0x7D7E4308983537F5ULL }, /* XSUM_XXH3_withSecret_testdata[892] */ + { 893, 0x0000000000000000ULL, 0x02DF99A1CFBC1485ULL }, /* XSUM_XXH3_withSecret_testdata[893] */ + { 894, 0x0000000000000000ULL, 0xE69C8725E90BB200ULL }, /* XSUM_XXH3_withSecret_testdata[894] */ + { 895, 0x0000000000000000ULL, 0x797F9C68E051A294ULL }, /* XSUM_XXH3_withSecret_testdata[895] */ + { 896, 0x0000000000000000ULL, 0x0C4795BEAB61DA26ULL }, /* XSUM_XXH3_withSecret_testdata[896] */ + { 897, 0x0000000000000000ULL, 0x9494865A708F647BULL }, /* XSUM_XXH3_withSecret_testdata[897] */ + { 898, 0x0000000000000000ULL, 0xFB3CC76B89A8D3F9ULL }, /* XSUM_XXH3_withSecret_testdata[898] */ + { 899, 0x0000000000000000ULL, 0x402DA935DC5F53C8ULL }, /* XSUM_XXH3_withSecret_testdata[899] */ + { 900, 0x0000000000000000ULL, 0xD7C585B83D7F950CULL }, /* XSUM_XXH3_withSecret_testdata[900] */ + { 901, 0x0000000000000000ULL, 0x7928B820B60BD25DULL }, /* XSUM_XXH3_withSecret_testdata[901] */ + { 902, 0x0000000000000000ULL, 0x2AC0887A2885FD81ULL }, /* XSUM_XXH3_withSecret_testdata[902] */ + { 903, 0x0000000000000000ULL, 0x71E1F757232B61AEULL }, /* XSUM_XXH3_withSecret_testdata[903] */ + { 904, 0x0000000000000000ULL, 0x13C7D74D13E2BB04ULL }, /* XSUM_XXH3_withSecret_testdata[904] */ + { 905, 0x0000000000000000ULL, 0xDDE0FFB62C3024E1ULL }, /* XSUM_XXH3_withSecret_testdata[905] */ + { 906, 0x0000000000000000ULL, 0x4CC6D1E08062805CULL }, /* XSUM_XXH3_withSecret_testdata[906] */ + { 907, 0x0000000000000000ULL, 0x1201BD7C8B743A35ULL }, /* XSUM_XXH3_withSecret_testdata[907] */ + { 908, 0x0000000000000000ULL, 0xF1BEE9939AEC969CULL }, /* XSUM_XXH3_withSecret_testdata[908] */ + { 909, 0x0000000000000000ULL, 0x98A7334BC1F88F07ULL }, /* XSUM_XXH3_withSecret_testdata[909] */ + { 910, 0x0000000000000000ULL, 0xF626D98D61D57409ULL }, /* XSUM_XXH3_withSecret_testdata[910] */ + { 911, 0x0000000000000000ULL, 0xE2EFC99122D59592ULL }, /* XSUM_XXH3_withSecret_testdata[911] */ + { 912, 0x0000000000000000ULL, 0x50D2225C2BB125DBULL }, /* XSUM_XXH3_withSecret_testdata[912] */ + { 913, 0x0000000000000000ULL, 0x4B640FC853FA2799ULL }, /* XSUM_XXH3_withSecret_testdata[913] */ + { 914, 0x0000000000000000ULL, 0x9C14CB5B5514D1FDULL }, /* XSUM_XXH3_withSecret_testdata[914] */ + { 915, 0x0000000000000000ULL, 0xB02845F8F73EDCB8ULL }, /* XSUM_XXH3_withSecret_testdata[915] */ + { 916, 0x0000000000000000ULL, 0xF6589946632A567BULL }, /* XSUM_XXH3_withSecret_testdata[916] */ + { 917, 0x0000000000000000ULL, 0xBA65AC9153533E7BULL }, /* XSUM_XXH3_withSecret_testdata[917] */ + { 918, 0x0000000000000000ULL, 0xE4BF20D9EC0F91C8ULL }, /* XSUM_XXH3_withSecret_testdata[918] */ + { 919, 0x0000000000000000ULL, 0x72E15B4C5522B974ULL }, /* XSUM_XXH3_withSecret_testdata[919] */ + { 920, 0x0000000000000000ULL, 0x704A31FF18C45558ULL }, /* XSUM_XXH3_withSecret_testdata[920] */ + { 921, 0x0000000000000000ULL, 0x3A3526958FA7690AULL }, /* XSUM_XXH3_withSecret_testdata[921] */ + { 922, 0x0000000000000000ULL, 0x95094FB8FB21C56DULL }, /* XSUM_XXH3_withSecret_testdata[922] */ + { 923, 0x0000000000000000ULL, 0x258F7A3E80BF68E9ULL }, /* XSUM_XXH3_withSecret_testdata[923] */ + { 924, 0x0000000000000000ULL, 0x9D1AEEDFBAF6C740ULL }, /* XSUM_XXH3_withSecret_testdata[924] */ + { 925, 0x0000000000000000ULL, 0x988BD124E6723286ULL }, /* XSUM_XXH3_withSecret_testdata[925] */ + { 926, 0x0000000000000000ULL, 0x4660899B351D8A0CULL }, /* XSUM_XXH3_withSecret_testdata[926] */ + { 927, 0x0000000000000000ULL, 0xBEF8BD2F821B14E2ULL }, /* XSUM_XXH3_withSecret_testdata[927] */ + { 928, 0x0000000000000000ULL, 0x2EA82BC6D5D6721EULL }, /* XSUM_XXH3_withSecret_testdata[928] */ + { 929, 0x0000000000000000ULL, 0xD329F24849343C53ULL }, /* XSUM_XXH3_withSecret_testdata[929] */ + { 930, 0x0000000000000000ULL, 0x0F9B2C3C3AE9B86EULL }, /* XSUM_XXH3_withSecret_testdata[930] */ + { 931, 0x0000000000000000ULL, 0xFBE3F4EC0CB70530ULL }, /* XSUM_XXH3_withSecret_testdata[931] */ + { 932, 0x0000000000000000ULL, 0x59761EF490E2AF06ULL }, /* XSUM_XXH3_withSecret_testdata[932] */ + { 933, 0x0000000000000000ULL, 0xA4738BF536A69E5BULL }, /* XSUM_XXH3_withSecret_testdata[933] */ + { 934, 0x0000000000000000ULL, 0x911A75070974DA15ULL }, /* XSUM_XXH3_withSecret_testdata[934] */ + { 935, 0x0000000000000000ULL, 0x67D5A83C1BE32956ULL }, /* XSUM_XXH3_withSecret_testdata[935] */ + { 936, 0x0000000000000000ULL, 0x4A7A843C9FFDD50BULL }, /* XSUM_XXH3_withSecret_testdata[936] */ + { 937, 0x0000000000000000ULL, 0x416AAB70DC9D34DBULL }, /* XSUM_XXH3_withSecret_testdata[937] */ + { 938, 0x0000000000000000ULL, 0xD92D5D02BDEA9DA2ULL }, /* XSUM_XXH3_withSecret_testdata[938] */ + { 939, 0x0000000000000000ULL, 0x30F6FAC94051EE6EULL }, /* XSUM_XXH3_withSecret_testdata[939] */ + { 940, 0x0000000000000000ULL, 0x997D4B57DBBA2F39ULL }, /* XSUM_XXH3_withSecret_testdata[940] */ + { 941, 0x0000000000000000ULL, 0x70F502215BDFFDCEULL }, /* XSUM_XXH3_withSecret_testdata[941] */ + { 942, 0x0000000000000000ULL, 0xE7C5531B2F7AE75EULL }, /* XSUM_XXH3_withSecret_testdata[942] */ + { 943, 0x0000000000000000ULL, 0xCF17531240C40A90ULL }, /* XSUM_XXH3_withSecret_testdata[943] */ + { 944, 0x0000000000000000ULL, 0xE750D09A90109D46ULL }, /* XSUM_XXH3_withSecret_testdata[944] */ + { 945, 0x0000000000000000ULL, 0x94D0792E4B037609ULL }, /* XSUM_XXH3_withSecret_testdata[945] */ + { 946, 0x0000000000000000ULL, 0xC3C7213AA478A475ULL }, /* XSUM_XXH3_withSecret_testdata[946] */ + { 947, 0x0000000000000000ULL, 0xEB17825A5AED3468ULL }, /* XSUM_XXH3_withSecret_testdata[947] */ + { 948, 0x0000000000000000ULL, 0x1721AA31972F81E0ULL }, /* XSUM_XXH3_withSecret_testdata[948] */ + { 949, 0x0000000000000000ULL, 0x0D05BBE4C710F623ULL }, /* XSUM_XXH3_withSecret_testdata[949] */ + { 950, 0x0000000000000000ULL, 0x2FB6E7D26424E839ULL }, /* XSUM_XXH3_withSecret_testdata[950] */ + { 951, 0x0000000000000000ULL, 0xC4F258AC43633CB3ULL }, /* XSUM_XXH3_withSecret_testdata[951] */ + { 952, 0x0000000000000000ULL, 0x42CE2EA60A969C39ULL }, /* XSUM_XXH3_withSecret_testdata[952] */ + { 953, 0x0000000000000000ULL, 0x1A1D5C18C52D900FULL }, /* XSUM_XXH3_withSecret_testdata[953] */ + { 954, 0x0000000000000000ULL, 0x7B9C17FE518ED92BULL }, /* XSUM_XXH3_withSecret_testdata[954] */ + { 955, 0x0000000000000000ULL, 0x72F37756AC8B4A0DULL }, /* XSUM_XXH3_withSecret_testdata[955] */ + { 956, 0x0000000000000000ULL, 0xB67130D3C149B7DCULL }, /* XSUM_XXH3_withSecret_testdata[956] */ + { 957, 0x0000000000000000ULL, 0x2F8716437A5DE917ULL }, /* XSUM_XXH3_withSecret_testdata[957] */ + { 958, 0x0000000000000000ULL, 0xBC12F20F3357341FULL }, /* XSUM_XXH3_withSecret_testdata[958] */ + { 959, 0x0000000000000000ULL, 0xBBE849D3D9DC3A49ULL }, /* XSUM_XXH3_withSecret_testdata[959] */ + { 960, 0x0000000000000000ULL, 0x7D81FB44A2BEFC42ULL }, /* XSUM_XXH3_withSecret_testdata[960] */ + { 961, 0x0000000000000000ULL, 0xAA83EC5BDF669D48ULL }, /* XSUM_XXH3_withSecret_testdata[961] */ + { 962, 0x0000000000000000ULL, 0xE52EB07AB85F6463ULL }, /* XSUM_XXH3_withSecret_testdata[962] */ + { 963, 0x0000000000000000ULL, 0xD3CBF2232C7F1596ULL }, /* XSUM_XXH3_withSecret_testdata[963] */ + { 964, 0x0000000000000000ULL, 0x834ABC25322F6158ULL }, /* XSUM_XXH3_withSecret_testdata[964] */ + { 965, 0x0000000000000000ULL, 0x4DABAB40E70A6CF9ULL }, /* XSUM_XXH3_withSecret_testdata[965] */ + { 966, 0x0000000000000000ULL, 0x263B7CC10D692218ULL }, /* XSUM_XXH3_withSecret_testdata[966] */ + { 967, 0x0000000000000000ULL, 0x6D7CB408F6B1A793ULL }, /* XSUM_XXH3_withSecret_testdata[967] */ + { 968, 0x0000000000000000ULL, 0x7D8C4C23E27244A7ULL }, /* XSUM_XXH3_withSecret_testdata[968] */ + { 969, 0x0000000000000000ULL, 0xC7990759FE3760E7ULL }, /* XSUM_XXH3_withSecret_testdata[969] */ + { 970, 0x0000000000000000ULL, 0x771B0B4D873DF382ULL }, /* XSUM_XXH3_withSecret_testdata[970] */ + { 971, 0x0000000000000000ULL, 0x2AF4ACD0FED451D2ULL }, /* XSUM_XXH3_withSecret_testdata[971] */ + { 972, 0x0000000000000000ULL, 0x60D3E93119ED11E8ULL }, /* XSUM_XXH3_withSecret_testdata[972] */ + { 973, 0x0000000000000000ULL, 0xEF6877FD70853DFDULL }, /* XSUM_XXH3_withSecret_testdata[973] */ + { 974, 0x0000000000000000ULL, 0x37CDCEC9C8C4437DULL }, /* XSUM_XXH3_withSecret_testdata[974] */ + { 975, 0x0000000000000000ULL, 0xED986901D8854950ULL }, /* XSUM_XXH3_withSecret_testdata[975] */ + { 976, 0x0000000000000000ULL, 0xB0DF387E07094087ULL }, /* XSUM_XXH3_withSecret_testdata[976] */ + { 977, 0x0000000000000000ULL, 0xB47AF4DE8A46B7D7ULL }, /* XSUM_XXH3_withSecret_testdata[977] */ + { 978, 0x0000000000000000ULL, 0xD3F33C98F2A94C64ULL }, /* XSUM_XXH3_withSecret_testdata[978] */ + { 979, 0x0000000000000000ULL, 0xED647406557A1D3FULL }, /* XSUM_XXH3_withSecret_testdata[979] */ + { 980, 0x0000000000000000ULL, 0xCFB755BDA6749186ULL }, /* XSUM_XXH3_withSecret_testdata[980] */ + { 981, 0x0000000000000000ULL, 0xD3420936F2F33C50ULL }, /* XSUM_XXH3_withSecret_testdata[981] */ + { 982, 0x0000000000000000ULL, 0x5F89BBB695A43F39ULL }, /* XSUM_XXH3_withSecret_testdata[982] */ + { 983, 0x0000000000000000ULL, 0xDE6398E9B9B34199ULL }, /* XSUM_XXH3_withSecret_testdata[983] */ + { 984, 0x0000000000000000ULL, 0xEC02BAC4581D84E1ULL }, /* XSUM_XXH3_withSecret_testdata[984] */ + { 985, 0x0000000000000000ULL, 0xE02AFC42D407D47EULL }, /* XSUM_XXH3_withSecret_testdata[985] */ + { 986, 0x0000000000000000ULL, 0x3E887C56DBED03C3ULL }, /* XSUM_XXH3_withSecret_testdata[986] */ + { 987, 0x0000000000000000ULL, 0x0F3D52819622EB53ULL }, /* XSUM_XXH3_withSecret_testdata[987] */ + { 988, 0x0000000000000000ULL, 0x8B0C2867BE4548B7ULL }, /* XSUM_XXH3_withSecret_testdata[988] */ + { 989, 0x0000000000000000ULL, 0x4DA94C69601A58AAULL }, /* XSUM_XXH3_withSecret_testdata[989] */ + { 990, 0x0000000000000000ULL, 0x6C097F10DF3E086DULL }, /* XSUM_XXH3_withSecret_testdata[990] */ + { 991, 0x0000000000000000ULL, 0xDA0B8C6098699C76ULL }, /* XSUM_XXH3_withSecret_testdata[991] */ + { 992, 0x0000000000000000ULL, 0x21FBB67E7817E5DDULL }, /* XSUM_XXH3_withSecret_testdata[992] */ + { 993, 0x0000000000000000ULL, 0x4B3798B3588D48AFULL }, /* XSUM_XXH3_withSecret_testdata[993] */ + { 994, 0x0000000000000000ULL, 0xD5A9173C1BF8A85DULL }, /* XSUM_XXH3_withSecret_testdata[994] */ + { 995, 0x0000000000000000ULL, 0x9B507C3291E239BAULL }, /* XSUM_XXH3_withSecret_testdata[995] */ + { 996, 0x0000000000000000ULL, 0x068CDAA12DD978CCULL }, /* XSUM_XXH3_withSecret_testdata[996] */ + { 997, 0x0000000000000000ULL, 0xD8E39798B8B939F9ULL }, /* XSUM_XXH3_withSecret_testdata[997] */ + { 998, 0x0000000000000000ULL, 0x997F71C88F791884ULL }, /* XSUM_XXH3_withSecret_testdata[998] */ + { 999, 0x0000000000000000ULL, 0xC9A7479FAF1BCB96ULL }, /* XSUM_XXH3_withSecret_testdata[999] */ + { 1000, 0x0000000000000000ULL, 0xBDB88F3E40D1FF3AULL }, /* XSUM_XXH3_withSecret_testdata[1000] */ + { 1001, 0x0000000000000000ULL, 0xD23F888FDE1DE9A2ULL }, /* XSUM_XXH3_withSecret_testdata[1001] */ + { 1002, 0x0000000000000000ULL, 0x1C2F94B7DC6A27BCULL }, /* XSUM_XXH3_withSecret_testdata[1002] */ + { 1003, 0x0000000000000000ULL, 0xAA5B5CCC0548887EULL }, /* XSUM_XXH3_withSecret_testdata[1003] */ + { 1004, 0x0000000000000000ULL, 0x679D5AABC8FD60A3ULL }, /* XSUM_XXH3_withSecret_testdata[1004] */ + { 1005, 0x0000000000000000ULL, 0x3452C8C86D780104ULL }, /* XSUM_XXH3_withSecret_testdata[1005] */ + { 1006, 0x0000000000000000ULL, 0xA486F1DF1AC2259CULL }, /* XSUM_XXH3_withSecret_testdata[1006] */ + { 1007, 0x0000000000000000ULL, 0xE6CD4A8CD269214FULL }, /* XSUM_XXH3_withSecret_testdata[1007] */ + { 1008, 0x0000000000000000ULL, 0xC863AF1CD3EBB974ULL }, /* XSUM_XXH3_withSecret_testdata[1008] */ + { 1009, 0x0000000000000000ULL, 0xE2D21BB3F1925A07ULL }, /* XSUM_XXH3_withSecret_testdata[1009] */ + { 1010, 0x0000000000000000ULL, 0x131E2D3A7FAB0ABCULL }, /* XSUM_XXH3_withSecret_testdata[1010] */ + { 1011, 0x0000000000000000ULL, 0x1F5FDE33C60EA32DULL }, /* XSUM_XXH3_withSecret_testdata[1011] */ + { 1012, 0x0000000000000000ULL, 0x91CDBC421A3B8FCBULL }, /* XSUM_XXH3_withSecret_testdata[1012] */ + { 1013, 0x0000000000000000ULL, 0x4538A7A320B450EEULL }, /* XSUM_XXH3_withSecret_testdata[1013] */ + { 1014, 0x0000000000000000ULL, 0x26BF3D3957258C79ULL }, /* XSUM_XXH3_withSecret_testdata[1014] */ + { 1015, 0x0000000000000000ULL, 0xBE646FBB26AE4B4EULL }, /* XSUM_XXH3_withSecret_testdata[1015] */ + { 1016, 0x0000000000000000ULL, 0xC68689CCB079DAB9ULL }, /* XSUM_XXH3_withSecret_testdata[1016] */ + { 1017, 0x0000000000000000ULL, 0x55C17A5AEF3BB64FULL }, /* XSUM_XXH3_withSecret_testdata[1017] */ + { 1018, 0x0000000000000000ULL, 0xA220A164F62EE9AFULL }, /* XSUM_XXH3_withSecret_testdata[1018] */ + { 1019, 0x0000000000000000ULL, 0x6E70B56151BE3B47ULL }, /* XSUM_XXH3_withSecret_testdata[1019] */ + { 1020, 0x0000000000000000ULL, 0x87D210BA884EB95AULL }, /* XSUM_XXH3_withSecret_testdata[1020] */ + { 1021, 0x0000000000000000ULL, 0x6A22585803D5C4CCULL }, /* XSUM_XXH3_withSecret_testdata[1021] */ + { 1022, 0x0000000000000000ULL, 0x031260A84B3226E1ULL }, /* XSUM_XXH3_withSecret_testdata[1022] */ + { 1023, 0x0000000000000000ULL, 0x6DF5A1773B876CFBULL }, /* XSUM_XXH3_withSecret_testdata[1023] */ + { 1024, 0x0000000000000000ULL, 0x3538A2D1EA7410D0ULL }, /* XSUM_XXH3_withSecret_testdata[1024] */ + { 1025, 0x0000000000000000ULL, 0xE33739F32D405604ULL }, /* XSUM_XXH3_withSecret_testdata[1025] */ + { 1026, 0x0000000000000000ULL, 0x0382509E7F46E913ULL }, /* XSUM_XXH3_withSecret_testdata[1026] */ + { 1027, 0x0000000000000000ULL, 0x8F628F9F34D9F295ULL }, /* XSUM_XXH3_withSecret_testdata[1027] */ + { 1028, 0x0000000000000000ULL, 0xECDFA3F555AB23E6ULL }, /* XSUM_XXH3_withSecret_testdata[1028] */ + { 1029, 0x0000000000000000ULL, 0x7C4838926C7A36F5ULL }, /* XSUM_XXH3_withSecret_testdata[1029] */ + { 1030, 0x0000000000000000ULL, 0xBCA5C9202530B602ULL }, /* XSUM_XXH3_withSecret_testdata[1030] */ + { 1031, 0x0000000000000000ULL, 0xC19526A62E0781A2ULL }, /* XSUM_XXH3_withSecret_testdata[1031] */ + { 1032, 0x0000000000000000ULL, 0x50F02E1E977C8F24ULL }, /* XSUM_XXH3_withSecret_testdata[1032] */ + { 1033, 0x0000000000000000ULL, 0xD7F050FE207D8801ULL }, /* XSUM_XXH3_withSecret_testdata[1033] */ + { 1034, 0x0000000000000000ULL, 0xEACD71E313EBF530ULL }, /* XSUM_XXH3_withSecret_testdata[1034] */ + { 1035, 0x0000000000000000ULL, 0xEBEC21F8305F93FEULL }, /* XSUM_XXH3_withSecret_testdata[1035] */ + { 1036, 0x0000000000000000ULL, 0x35093262AC38CCB9ULL }, /* XSUM_XXH3_withSecret_testdata[1036] */ + { 1037, 0x0000000000000000ULL, 0x1D1716FF6311DF8DULL }, /* XSUM_XXH3_withSecret_testdata[1037] */ + { 1038, 0x0000000000000000ULL, 0xC7A90B83DECE449FULL }, /* XSUM_XXH3_withSecret_testdata[1038] */ + { 1039, 0x0000000000000000ULL, 0x332FF74A20BBC9D5ULL }, /* XSUM_XXH3_withSecret_testdata[1039] */ + { 1040, 0x0000000000000000ULL, 0x96565B90C44AC72AULL }, /* XSUM_XXH3_withSecret_testdata[1040] */ + { 1041, 0x0000000000000000ULL, 0xFEB28E9ECA726E7AULL }, /* XSUM_XXH3_withSecret_testdata[1041] */ + { 1042, 0x0000000000000000ULL, 0x4F481C37E0065F4FULL }, /* XSUM_XXH3_withSecret_testdata[1042] */ + { 1043, 0x0000000000000000ULL, 0x19E1B83A3DE421CDULL }, /* XSUM_XXH3_withSecret_testdata[1043] */ + { 1044, 0x0000000000000000ULL, 0x9048D93DC6B55296ULL }, /* XSUM_XXH3_withSecret_testdata[1044] */ + { 1045, 0x0000000000000000ULL, 0xFC77E3D7F36DB5DBULL }, /* XSUM_XXH3_withSecret_testdata[1045] */ + { 1046, 0x0000000000000000ULL, 0xCDB626AD4D6F0D93ULL }, /* XSUM_XXH3_withSecret_testdata[1046] */ + { 1047, 0x0000000000000000ULL, 0x44AE225D80251F48ULL }, /* XSUM_XXH3_withSecret_testdata[1047] */ + { 1048, 0x0000000000000000ULL, 0xADD9CD6ABE27EC88ULL }, /* XSUM_XXH3_withSecret_testdata[1048] */ + { 1049, 0x0000000000000000ULL, 0x868CF613DA16B7D3ULL }, /* XSUM_XXH3_withSecret_testdata[1049] */ + { 1050, 0x0000000000000000ULL, 0xB274B680AA452344ULL }, /* XSUM_XXH3_withSecret_testdata[1050] */ + { 1051, 0x0000000000000000ULL, 0x77D6692B33D5D00EULL }, /* XSUM_XXH3_withSecret_testdata[1051] */ + { 1052, 0x0000000000000000ULL, 0xB63ED5FDF8A3CB23ULL }, /* XSUM_XXH3_withSecret_testdata[1052] */ + { 1053, 0x0000000000000000ULL, 0x3EF0EE07076FA410ULL }, /* XSUM_XXH3_withSecret_testdata[1053] */ + { 1054, 0x0000000000000000ULL, 0xC783C4FB3E66DA50ULL }, /* XSUM_XXH3_withSecret_testdata[1054] */ + { 1055, 0x0000000000000000ULL, 0x363A06FAC4681739ULL }, /* XSUM_XXH3_withSecret_testdata[1055] */ + { 1056, 0x0000000000000000ULL, 0x55B66523B75E9169ULL }, /* XSUM_XXH3_withSecret_testdata[1056] */ + { 1057, 0x0000000000000000ULL, 0x8DC21437F59A5090ULL }, /* XSUM_XXH3_withSecret_testdata[1057] */ + { 1058, 0x0000000000000000ULL, 0xD8619D1AC4CCAFF9ULL }, /* XSUM_XXH3_withSecret_testdata[1058] */ + { 1059, 0x0000000000000000ULL, 0xAED383D6427E91DDULL }, /* XSUM_XXH3_withSecret_testdata[1059] */ + { 1060, 0x0000000000000000ULL, 0x75C86503D0551B28ULL }, /* XSUM_XXH3_withSecret_testdata[1060] */ + { 1061, 0x0000000000000000ULL, 0x89895FE864841CFFULL }, /* XSUM_XXH3_withSecret_testdata[1061] */ + { 1062, 0x0000000000000000ULL, 0xD577866EFB7E65B6ULL }, /* XSUM_XXH3_withSecret_testdata[1062] */ + { 1063, 0x0000000000000000ULL, 0x696E4AE81F17E9E5ULL }, /* XSUM_XXH3_withSecret_testdata[1063] */ + { 1064, 0x0000000000000000ULL, 0x20B4F5B6777B1D80ULL }, /* XSUM_XXH3_withSecret_testdata[1064] */ + { 1065, 0x0000000000000000ULL, 0xF867D9CD9A5A0A5EULL }, /* XSUM_XXH3_withSecret_testdata[1065] */ + { 1066, 0x0000000000000000ULL, 0x7184156D346568A9ULL }, /* XSUM_XXH3_withSecret_testdata[1066] */ + { 1067, 0x0000000000000000ULL, 0x1FB3C2F8A211D614ULL }, /* XSUM_XXH3_withSecret_testdata[1067] */ + { 1068, 0x0000000000000000ULL, 0xAEC09F84F474BEE6ULL }, /* XSUM_XXH3_withSecret_testdata[1068] */ + { 1069, 0x0000000000000000ULL, 0xD0B736D98040E155ULL }, /* XSUM_XXH3_withSecret_testdata[1069] */ + { 1070, 0x0000000000000000ULL, 0x5025C87B098698F3ULL }, /* XSUM_XXH3_withSecret_testdata[1070] */ + { 1071, 0x0000000000000000ULL, 0xBAC1074155F2FD5CULL }, /* XSUM_XXH3_withSecret_testdata[1071] */ + { 1072, 0x0000000000000000ULL, 0x674308AAD60BB6E0ULL }, /* XSUM_XXH3_withSecret_testdata[1072] */ + { 1073, 0x0000000000000000ULL, 0xDFE0D4AB4893F42AULL }, /* XSUM_XXH3_withSecret_testdata[1073] */ + { 1074, 0x0000000000000000ULL, 0x5C58E1AABA5CE5FBULL }, /* XSUM_XXH3_withSecret_testdata[1074] */ + { 1075, 0x0000000000000000ULL, 0x1EFBEE56BF8BE2E5ULL }, /* XSUM_XXH3_withSecret_testdata[1075] */ + { 1076, 0x0000000000000000ULL, 0x02AC1D1D06435355ULL }, /* XSUM_XXH3_withSecret_testdata[1076] */ + { 1077, 0x0000000000000000ULL, 0xC9DDF826C9F08173ULL }, /* XSUM_XXH3_withSecret_testdata[1077] */ + { 1078, 0x0000000000000000ULL, 0x7C3673BEA98FF744ULL }, /* XSUM_XXH3_withSecret_testdata[1078] */ + { 1079, 0x0000000000000000ULL, 0xDEA45D59E46D986BULL }, /* XSUM_XXH3_withSecret_testdata[1079] */ + { 1080, 0x0000000000000000ULL, 0xFCCC5B98BBF807A5ULL }, /* XSUM_XXH3_withSecret_testdata[1080] */ + { 1081, 0x0000000000000000ULL, 0x5A6B2883A5549B3AULL }, /* XSUM_XXH3_withSecret_testdata[1081] */ + { 1082, 0x0000000000000000ULL, 0xA7C90378E8783D1EULL }, /* XSUM_XXH3_withSecret_testdata[1082] */ + { 1083, 0x0000000000000000ULL, 0x1D041CD8ECD51B06ULL }, /* XSUM_XXH3_withSecret_testdata[1083] */ + { 1084, 0x0000000000000000ULL, 0xB092E24774DCD316ULL }, /* XSUM_XXH3_withSecret_testdata[1084] */ + { 1085, 0x0000000000000000ULL, 0x14F716BD88451F4FULL }, /* XSUM_XXH3_withSecret_testdata[1085] */ + { 1086, 0x0000000000000000ULL, 0x08AD7CC409755341ULL }, /* XSUM_XXH3_withSecret_testdata[1086] */ + { 1087, 0x0000000000000000ULL, 0x9DF1DF0101707F29ULL }, /* XSUM_XXH3_withSecret_testdata[1087] */ + { 1088, 0x0000000000000000ULL, 0x8BCAEDDF41F82A85ULL }, /* XSUM_XXH3_withSecret_testdata[1088] */ + { 1089, 0x0000000000000000ULL, 0x396734BF79E3529AULL }, /* XSUM_XXH3_withSecret_testdata[1089] */ + { 1090, 0x0000000000000000ULL, 0x1D42972E7F9069E4ULL }, /* XSUM_XXH3_withSecret_testdata[1090] */ + { 1091, 0x0000000000000000ULL, 0x2BE62A7E5377A93DULL }, /* XSUM_XXH3_withSecret_testdata[1091] */ + { 1092, 0x0000000000000000ULL, 0x29FEF2D065B79DC4ULL }, /* XSUM_XXH3_withSecret_testdata[1092] */ + { 1093, 0x0000000000000000ULL, 0x9268870FE3CD0A28ULL }, /* XSUM_XXH3_withSecret_testdata[1093] */ + { 1094, 0x0000000000000000ULL, 0x531A8BB86A48C172ULL }, /* XSUM_XXH3_withSecret_testdata[1094] */ + { 1095, 0x0000000000000000ULL, 0x96F782DBD7F2EAFAULL }, /* XSUM_XXH3_withSecret_testdata[1095] */ + { 1096, 0x0000000000000000ULL, 0x57709214A6291F2BULL }, /* XSUM_XXH3_withSecret_testdata[1096] */ + { 1097, 0x0000000000000000ULL, 0xFB1FB5DF61A74DC0ULL }, /* XSUM_XXH3_withSecret_testdata[1097] */ + { 1098, 0x0000000000000000ULL, 0xF13705687AC37277ULL }, /* XSUM_XXH3_withSecret_testdata[1098] */ + { 1099, 0x0000000000000000ULL, 0x2E4F43DCAA8C1F8AULL }, /* XSUM_XXH3_withSecret_testdata[1099] */ + { 1100, 0x0000000000000000ULL, 0x6C15FF4422D23ED8ULL }, /* XSUM_XXH3_withSecret_testdata[1100] */ + { 1101, 0x0000000000000000ULL, 0xB2BC6B9EE59935A4ULL }, /* XSUM_XXH3_withSecret_testdata[1101] */ + { 1102, 0x0000000000000000ULL, 0x2375A86A7F20B64AULL }, /* XSUM_XXH3_withSecret_testdata[1102] */ + { 1103, 0x0000000000000000ULL, 0x9C48F9BD5EA51031ULL }, /* XSUM_XXH3_withSecret_testdata[1103] */ + { 1104, 0x0000000000000000ULL, 0x1EFCFD356691F623ULL }, /* XSUM_XXH3_withSecret_testdata[1104] */ + { 1105, 0x0000000000000000ULL, 0x6FC1B0A00982F5F1ULL }, /* XSUM_XXH3_withSecret_testdata[1105] */ + { 1106, 0x0000000000000000ULL, 0x7A21C783934EDF22ULL }, /* XSUM_XXH3_withSecret_testdata[1106] */ + { 1107, 0x0000000000000000ULL, 0x86F7D8CF19913C4AULL }, /* XSUM_XXH3_withSecret_testdata[1107] */ + { 1108, 0x0000000000000000ULL, 0xC703E339E016D17CULL }, /* XSUM_XXH3_withSecret_testdata[1108] */ + { 1109, 0x0000000000000000ULL, 0xE68EEBAF5A98A4B2ULL }, /* XSUM_XXH3_withSecret_testdata[1109] */ + { 1110, 0x0000000000000000ULL, 0x7EA1C9918A69252EULL }, /* XSUM_XXH3_withSecret_testdata[1110] */ + { 1111, 0x0000000000000000ULL, 0xD23D81E9D487B330ULL }, /* XSUM_XXH3_withSecret_testdata[1111] */ + { 1112, 0x0000000000000000ULL, 0xDCF2B8168A1D2D59ULL }, /* XSUM_XXH3_withSecret_testdata[1112] */ + { 1113, 0x0000000000000000ULL, 0xF4CA1A757145DC43ULL }, /* XSUM_XXH3_withSecret_testdata[1113] */ + { 1114, 0x0000000000000000ULL, 0x73AB52221B088939ULL }, /* XSUM_XXH3_withSecret_testdata[1114] */ + { 1115, 0x0000000000000000ULL, 0x8CBB9BA7EF78D775ULL }, /* XSUM_XXH3_withSecret_testdata[1115] */ + { 1116, 0x0000000000000000ULL, 0x563C8E056CAF5FDDULL }, /* XSUM_XXH3_withSecret_testdata[1116] */ + { 1117, 0x0000000000000000ULL, 0xF50811E87CE88663ULL }, /* XSUM_XXH3_withSecret_testdata[1117] */ + { 1118, 0x0000000000000000ULL, 0xFFCEA770436C3AD2ULL }, /* XSUM_XXH3_withSecret_testdata[1118] */ + { 1119, 0x0000000000000000ULL, 0xE281B61DF4C561DDULL }, /* XSUM_XXH3_withSecret_testdata[1119] */ + { 1120, 0x0000000000000000ULL, 0xEED366622AAB0A63ULL }, /* XSUM_XXH3_withSecret_testdata[1120] */ + { 1121, 0x0000000000000000ULL, 0x5DEE82EEA840A274ULL }, /* XSUM_XXH3_withSecret_testdata[1121] */ + { 1122, 0x0000000000000000ULL, 0xD264D7263140C0C6ULL }, /* XSUM_XXH3_withSecret_testdata[1122] */ + { 1123, 0x0000000000000000ULL, 0xABEA45EC624E1B97ULL }, /* XSUM_XXH3_withSecret_testdata[1123] */ + { 1124, 0x0000000000000000ULL, 0x56F66AB1DE036491ULL }, /* XSUM_XXH3_withSecret_testdata[1124] */ + { 1125, 0x0000000000000000ULL, 0x1DD9EDEFCDE3A24CULL }, /* XSUM_XXH3_withSecret_testdata[1125] */ + { 1126, 0x0000000000000000ULL, 0x562ADB80BB93632FULL }, /* XSUM_XXH3_withSecret_testdata[1126] */ + { 1127, 0x0000000000000000ULL, 0x1E1B819E3B623D82ULL }, /* XSUM_XXH3_withSecret_testdata[1127] */ + { 1128, 0x0000000000000000ULL, 0x56A07C82F5CCB7A6ULL }, /* XSUM_XXH3_withSecret_testdata[1128] */ + { 1129, 0x0000000000000000ULL, 0x82005C2A80B0149DULL }, /* XSUM_XXH3_withSecret_testdata[1129] */ + { 1130, 0x0000000000000000ULL, 0x16DDB1C9DDF5C17BULL }, /* XSUM_XXH3_withSecret_testdata[1130] */ + { 1131, 0x0000000000000000ULL, 0x7158F8CF26C94C16ULL }, /* XSUM_XXH3_withSecret_testdata[1131] */ + { 1132, 0x0000000000000000ULL, 0x2C3A5709497CFF7CULL }, /* XSUM_XXH3_withSecret_testdata[1132] */ + { 1133, 0x0000000000000000ULL, 0x6F680E3DD0D3A52BULL }, /* XSUM_XXH3_withSecret_testdata[1133] */ + { 1134, 0x0000000000000000ULL, 0x196FB1546D757E6AULL }, /* XSUM_XXH3_withSecret_testdata[1134] */ + { 1135, 0x0000000000000000ULL, 0x70BBF8E10A4030ACULL }, /* XSUM_XXH3_withSecret_testdata[1135] */ + { 1136, 0x0000000000000000ULL, 0xFB83EFA18C82B830ULL }, /* XSUM_XXH3_withSecret_testdata[1136] */ + { 1137, 0x0000000000000000ULL, 0x3ECB963BF6DB8E5CULL }, /* XSUM_XXH3_withSecret_testdata[1137] */ + { 1138, 0x0000000000000000ULL, 0x9D88D48EB2CD97BDULL }, /* XSUM_XXH3_withSecret_testdata[1138] */ + { 1139, 0x0000000000000000ULL, 0xF2AE9FEAFFC676A9ULL }, /* XSUM_XXH3_withSecret_testdata[1139] */ + { 1140, 0x0000000000000000ULL, 0xA66D3138F7B07A23ULL }, /* XSUM_XXH3_withSecret_testdata[1140] */ + { 1141, 0x0000000000000000ULL, 0x2EC6BB65849FFEFDULL }, /* XSUM_XXH3_withSecret_testdata[1141] */ + { 1142, 0x0000000000000000ULL, 0x912EF74ADB55BF9CULL }, /* XSUM_XXH3_withSecret_testdata[1142] */ + { 1143, 0x0000000000000000ULL, 0x69810688BDAAF761ULL }, /* XSUM_XXH3_withSecret_testdata[1143] */ + { 1144, 0x0000000000000000ULL, 0x641CE096D569D437ULL }, /* XSUM_XXH3_withSecret_testdata[1144] */ + { 1145, 0x0000000000000000ULL, 0x0BA2EF1F7D45150EULL }, /* XSUM_XXH3_withSecret_testdata[1145] */ + { 1146, 0x0000000000000000ULL, 0xC81E3264CD6F765BULL }, /* XSUM_XXH3_withSecret_testdata[1146] */ + { 1147, 0x0000000000000000ULL, 0x0E5CB6A65F043CE6ULL }, /* XSUM_XXH3_withSecret_testdata[1147] */ + { 1148, 0x0000000000000000ULL, 0x94D9E6AC62497AC8ULL }, /* XSUM_XXH3_withSecret_testdata[1148] */ + { 1149, 0x0000000000000000ULL, 0xD949C814CA42C692ULL }, /* XSUM_XXH3_withSecret_testdata[1149] */ + { 1150, 0x0000000000000000ULL, 0x6B1E0A0FDD1220E8ULL }, /* XSUM_XXH3_withSecret_testdata[1150] */ + { 1151, 0x0000000000000000ULL, 0x02156F6DB0CDBBB1ULL }, /* XSUM_XXH3_withSecret_testdata[1151] */ + { 1152, 0x0000000000000000ULL, 0xDF4FE79C337C19C8ULL }, /* XSUM_XXH3_withSecret_testdata[1152] */ + { 1153, 0x0000000000000000ULL, 0x2ECD944DEF155B3EULL }, /* XSUM_XXH3_withSecret_testdata[1153] */ + { 1154, 0x0000000000000000ULL, 0xAB258F9CE50EC939ULL }, /* XSUM_XXH3_withSecret_testdata[1154] */ + { 1155, 0x0000000000000000ULL, 0x4C86BB5973A6A74FULL }, /* XSUM_XXH3_withSecret_testdata[1155] */ + { 1156, 0x0000000000000000ULL, 0xB3ADFA10F5CABB5BULL }, /* XSUM_XXH3_withSecret_testdata[1156] */ + { 1157, 0x0000000000000000ULL, 0xD75426EA89F13149ULL }, /* XSUM_XXH3_withSecret_testdata[1157] */ + { 1158, 0x0000000000000000ULL, 0xE84718A0766D310CULL }, /* XSUM_XXH3_withSecret_testdata[1158] */ + { 1159, 0x0000000000000000ULL, 0x005B0C0DC58C246AULL }, /* XSUM_XXH3_withSecret_testdata[1159] */ + { 1160, 0x0000000000000000ULL, 0x2009C20E994DADAFULL }, /* XSUM_XXH3_withSecret_testdata[1160] */ + { 1161, 0x0000000000000000ULL, 0x0ED2F88BA0A38011ULL }, /* XSUM_XXH3_withSecret_testdata[1161] */ + { 1162, 0x0000000000000000ULL, 0x0DD4C1E9C72AAF8AULL }, /* XSUM_XXH3_withSecret_testdata[1162] */ + { 1163, 0x0000000000000000ULL, 0x03906A618FA58EC0ULL }, /* XSUM_XXH3_withSecret_testdata[1163] */ + { 1164, 0x0000000000000000ULL, 0x896CD47C9D3E1A7BULL }, /* XSUM_XXH3_withSecret_testdata[1164] */ + { 1165, 0x0000000000000000ULL, 0xEF3FF7FC0BA52A9BULL }, /* XSUM_XXH3_withSecret_testdata[1165] */ + { 1166, 0x0000000000000000ULL, 0x5C0975D67B2B6EF6ULL }, /* XSUM_XXH3_withSecret_testdata[1166] */ + { 1167, 0x0000000000000000ULL, 0xB7CB344311452280ULL }, /* XSUM_XXH3_withSecret_testdata[1167] */ + { 1168, 0x0000000000000000ULL, 0xE2F6F9063E5205BBULL }, /* XSUM_XXH3_withSecret_testdata[1168] */ + { 1169, 0x0000000000000000ULL, 0x856578127453CB3EULL }, /* XSUM_XXH3_withSecret_testdata[1169] */ + { 1170, 0x0000000000000000ULL, 0xA55707FB47A3D31EULL }, /* XSUM_XXH3_withSecret_testdata[1170] */ + { 1171, 0x0000000000000000ULL, 0xB06E2CDB12458F98ULL }, /* XSUM_XXH3_withSecret_testdata[1171] */ + { 1172, 0x0000000000000000ULL, 0xACD1394078DCF1AAULL }, /* XSUM_XXH3_withSecret_testdata[1172] */ + { 1173, 0x0000000000000000ULL, 0xD84CA8AE4D64CFE0ULL }, /* XSUM_XXH3_withSecret_testdata[1173] */ + { 1174, 0x0000000000000000ULL, 0xAA55B791EF895214ULL }, /* XSUM_XXH3_withSecret_testdata[1174] */ + { 1175, 0x0000000000000000ULL, 0x529383E16F813C4FULL }, /* XSUM_XXH3_withSecret_testdata[1175] */ + { 1176, 0x0000000000000000ULL, 0xECA853EEDD2A2E54ULL }, /* XSUM_XXH3_withSecret_testdata[1176] */ + { 1177, 0x0000000000000000ULL, 0x4002EB2DC543C39CULL }, /* XSUM_XXH3_withSecret_testdata[1177] */ + { 1178, 0x0000000000000000ULL, 0x59C372FEE8837209ULL }, /* XSUM_XXH3_withSecret_testdata[1178] */ + { 1179, 0x0000000000000000ULL, 0x44B1D065396DFE18ULL }, /* XSUM_XXH3_withSecret_testdata[1179] */ + { 1180, 0x0000000000000000ULL, 0x87CDA611DF1416AEULL }, /* XSUM_XXH3_withSecret_testdata[1180] */ + { 1181, 0x0000000000000000ULL, 0x45A0F65632F65AE8ULL }, /* XSUM_XXH3_withSecret_testdata[1181] */ + { 1182, 0x0000000000000000ULL, 0x59DA218BAEEDCDC4ULL }, /* XSUM_XXH3_withSecret_testdata[1182] */ + { 1183, 0x0000000000000000ULL, 0x7D8A93640511D6BBULL }, /* XSUM_XXH3_withSecret_testdata[1183] */ + { 1184, 0x0000000000000000ULL, 0xF7A914AC3196E7AEULL }, /* XSUM_XXH3_withSecret_testdata[1184] */ + { 1185, 0x0000000000000000ULL, 0xC1B5BECE599E7823ULL }, /* XSUM_XXH3_withSecret_testdata[1185] */ + { 1186, 0x0000000000000000ULL, 0x5866D3A1E9235620ULL }, /* XSUM_XXH3_withSecret_testdata[1186] */ + { 1187, 0x0000000000000000ULL, 0xDA1BD59F46500051ULL }, /* XSUM_XXH3_withSecret_testdata[1187] */ + { 1188, 0x0000000000000000ULL, 0x28D7A6EB19297C11ULL }, /* XSUM_XXH3_withSecret_testdata[1188] */ + { 1189, 0x0000000000000000ULL, 0xF1A423015A009AA1ULL }, /* XSUM_XXH3_withSecret_testdata[1189] */ + { 1190, 0x0000000000000000ULL, 0xEAA47268810887FDULL }, /* XSUM_XXH3_withSecret_testdata[1190] */ + { 1191, 0x0000000000000000ULL, 0x2507000374A67D69ULL }, /* XSUM_XXH3_withSecret_testdata[1191] */ + { 1192, 0x0000000000000000ULL, 0x86B72482FE8CC0B4ULL }, /* XSUM_XXH3_withSecret_testdata[1192] */ + { 1193, 0x0000000000000000ULL, 0xCCE29661119C453AULL }, /* XSUM_XXH3_withSecret_testdata[1193] */ + { 1194, 0x0000000000000000ULL, 0x5718C15955D8E86EULL }, /* XSUM_XXH3_withSecret_testdata[1194] */ + { 1195, 0x0000000000000000ULL, 0xA45DD6275981C651ULL }, /* XSUM_XXH3_withSecret_testdata[1195] */ + { 1196, 0x0000000000000000ULL, 0xC31C3276F4711CD9ULL }, /* XSUM_XXH3_withSecret_testdata[1196] */ + { 1197, 0x0000000000000000ULL, 0x7057D8D2E26A41C6ULL }, /* XSUM_XXH3_withSecret_testdata[1197] */ + { 1198, 0x0000000000000000ULL, 0xB2B056A783B96CFBULL }, /* XSUM_XXH3_withSecret_testdata[1198] */ + { 1199, 0x0000000000000000ULL, 0xC76ABEB7BC46B70BULL }, /* XSUM_XXH3_withSecret_testdata[1199] */ + { 1200, 0x0000000000000000ULL, 0x73755FC8551A96C0ULL }, /* XSUM_XXH3_withSecret_testdata[1200] */ + { 1201, 0x0000000000000000ULL, 0xB753309CFD6AE937ULL }, /* XSUM_XXH3_withSecret_testdata[1201] */ + { 1202, 0x0000000000000000ULL, 0x59EBC9D68AB74308ULL }, /* XSUM_XXH3_withSecret_testdata[1202] */ + { 1203, 0x0000000000000000ULL, 0xD30471451F8D7F23ULL }, /* XSUM_XXH3_withSecret_testdata[1203] */ + { 1204, 0x0000000000000000ULL, 0x49D1C3584FE44DDBULL }, /* XSUM_XXH3_withSecret_testdata[1204] */ + { 1205, 0x0000000000000000ULL, 0x243157916985F87BULL }, /* XSUM_XXH3_withSecret_testdata[1205] */ + { 1206, 0x0000000000000000ULL, 0x202E01C447EE0F84ULL }, /* XSUM_XXH3_withSecret_testdata[1206] */ + { 1207, 0x0000000000000000ULL, 0xA40C5DFD692473E8ULL }, /* XSUM_XXH3_withSecret_testdata[1207] */ + { 1208, 0x0000000000000000ULL, 0x64FB4F94E14A516EULL }, /* XSUM_XXH3_withSecret_testdata[1208] */ + { 1209, 0x0000000000000000ULL, 0xE549E2C3449F09FFULL }, /* XSUM_XXH3_withSecret_testdata[1209] */ + { 1210, 0x0000000000000000ULL, 0x8F4F0A0652F62A6EULL }, /* XSUM_XXH3_withSecret_testdata[1210] */ + { 1211, 0x0000000000000000ULL, 0x63FB3196D346A6B7ULL }, /* XSUM_XXH3_withSecret_testdata[1211] */ + { 1212, 0x0000000000000000ULL, 0xF231B7882BB00AA5ULL }, /* XSUM_XXH3_withSecret_testdata[1212] */ + { 1213, 0x0000000000000000ULL, 0x386A02178E23A5CAULL }, /* XSUM_XXH3_withSecret_testdata[1213] */ + { 1214, 0x0000000000000000ULL, 0xD23493CD42EEDD55ULL }, /* XSUM_XXH3_withSecret_testdata[1214] */ + { 1215, 0x0000000000000000ULL, 0x61438E729742F3E7ULL }, /* XSUM_XXH3_withSecret_testdata[1215] */ + { 1216, 0x0000000000000000ULL, 0x92F607D509447369ULL }, /* XSUM_XXH3_withSecret_testdata[1216] */ + { 1217, 0x0000000000000000ULL, 0x663DE7FFFE25062BULL }, /* XSUM_XXH3_withSecret_testdata[1217] */ + { 1218, 0x0000000000000000ULL, 0x09224BF6696D0C87ULL }, /* XSUM_XXH3_withSecret_testdata[1218] */ + { 1219, 0x0000000000000000ULL, 0x0DC6477ADA60C46EULL }, /* XSUM_XXH3_withSecret_testdata[1219] */ + { 1220, 0x0000000000000000ULL, 0x1DBEAEE3D8B6AEE3ULL }, /* XSUM_XXH3_withSecret_testdata[1220] */ + { 1221, 0x0000000000000000ULL, 0x9C04B23D21BFF9D4ULL }, /* XSUM_XXH3_withSecret_testdata[1221] */ + { 1222, 0x0000000000000000ULL, 0xA55E3990D596F4F5ULL }, /* XSUM_XXH3_withSecret_testdata[1222] */ + { 1223, 0x0000000000000000ULL, 0x393633C0019FA593ULL }, /* XSUM_XXH3_withSecret_testdata[1223] */ + { 1224, 0x0000000000000000ULL, 0xCD109408C4096802ULL }, /* XSUM_XXH3_withSecret_testdata[1224] */ + { 1225, 0x0000000000000000ULL, 0x234D3FFD498043ADULL }, /* XSUM_XXH3_withSecret_testdata[1225] */ + { 1226, 0x0000000000000000ULL, 0xCC62B983E6E16175ULL }, /* XSUM_XXH3_withSecret_testdata[1226] */ + { 1227, 0x0000000000000000ULL, 0x27B595365C29A97DULL }, /* XSUM_XXH3_withSecret_testdata[1227] */ + { 1228, 0x0000000000000000ULL, 0xFFAD0D865E21BF53ULL }, /* XSUM_XXH3_withSecret_testdata[1228] */ + { 1229, 0x0000000000000000ULL, 0x41CE386C213D93CEULL }, /* XSUM_XXH3_withSecret_testdata[1229] */ + { 1230, 0x0000000000000000ULL, 0x284740FCD667DA17ULL }, /* XSUM_XXH3_withSecret_testdata[1230] */ + { 1231, 0x0000000000000000ULL, 0x1B1D48F3B30A1884ULL }, /* XSUM_XXH3_withSecret_testdata[1231] */ + { 1232, 0x0000000000000000ULL, 0xCDA4172D1A1DBDF0ULL }, /* XSUM_XXH3_withSecret_testdata[1232] */ + { 1233, 0x0000000000000000ULL, 0xF90351A1085B9FA9ULL }, /* XSUM_XXH3_withSecret_testdata[1233] */ + { 1234, 0x0000000000000000ULL, 0x343C0D92B24D640DULL }, /* XSUM_XXH3_withSecret_testdata[1234] */ + { 1235, 0x0000000000000000ULL, 0x64A949C8B1108BFBULL }, /* XSUM_XXH3_withSecret_testdata[1235] */ + { 1236, 0x0000000000000000ULL, 0x245919762B221E7FULL }, /* XSUM_XXH3_withSecret_testdata[1236] */ + { 1237, 0x0000000000000000ULL, 0xFD9BB3384A8857F5ULL }, /* XSUM_XXH3_withSecret_testdata[1237] */ + { 1238, 0x0000000000000000ULL, 0x9E133E37A83E21DBULL }, /* XSUM_XXH3_withSecret_testdata[1238] */ + { 1239, 0x0000000000000000ULL, 0xF71278EFE523DB46ULL }, /* XSUM_XXH3_withSecret_testdata[1239] */ + { 1240, 0x0000000000000000ULL, 0xC82413F84E6E3EC5ULL }, /* XSUM_XXH3_withSecret_testdata[1240] */ + { 1241, 0x0000000000000000ULL, 0x166BD3C786FDECB0ULL }, /* XSUM_XXH3_withSecret_testdata[1241] */ + { 1242, 0x0000000000000000ULL, 0x96F0738F94FD7CBAULL }, /* XSUM_XXH3_withSecret_testdata[1242] */ + { 1243, 0x0000000000000000ULL, 0xD250E16AC85D91ABULL }, /* XSUM_XXH3_withSecret_testdata[1243] */ + { 1244, 0x0000000000000000ULL, 0x785A62391800E61FULL }, /* XSUM_XXH3_withSecret_testdata[1244] */ + { 1245, 0x0000000000000000ULL, 0x3FFB5401C9F7A3FFULL }, /* XSUM_XXH3_withSecret_testdata[1245] */ + { 1246, 0x0000000000000000ULL, 0x2A29AC53000E997FULL }, /* XSUM_XXH3_withSecret_testdata[1246] */ + { 1247, 0x0000000000000000ULL, 0xAE58D698404A2776ULL }, /* XSUM_XXH3_withSecret_testdata[1247] */ + { 1248, 0x0000000000000000ULL, 0xA53C9031684A836CULL }, /* XSUM_XXH3_withSecret_testdata[1248] */ + { 1249, 0x0000000000000000ULL, 0x6F3ABC5DCDD19D53ULL }, /* XSUM_XXH3_withSecret_testdata[1249] */ + { 1250, 0x0000000000000000ULL, 0x75AD1818E82EC2FEULL }, /* XSUM_XXH3_withSecret_testdata[1250] */ + { 1251, 0x0000000000000000ULL, 0x2C17F682AFC67F69ULL }, /* XSUM_XXH3_withSecret_testdata[1251] */ + { 1252, 0x0000000000000000ULL, 0x8815882995B4B2B5ULL }, /* XSUM_XXH3_withSecret_testdata[1252] */ + { 1253, 0x0000000000000000ULL, 0x24E082C698E1F0C5ULL }, /* XSUM_XXH3_withSecret_testdata[1253] */ + { 1254, 0x0000000000000000ULL, 0xEDDE9C789512BA59ULL }, /* XSUM_XXH3_withSecret_testdata[1254] */ + { 1255, 0x0000000000000000ULL, 0x189407CBCC7DA351ULL }, /* XSUM_XXH3_withSecret_testdata[1255] */ + { 1256, 0x0000000000000000ULL, 0xA6B6B78A5B3BEDDAULL }, /* XSUM_XXH3_withSecret_testdata[1256] */ + { 1257, 0x0000000000000000ULL, 0xB8748DD6087FD1B7ULL }, /* XSUM_XXH3_withSecret_testdata[1257] */ + { 1258, 0x0000000000000000ULL, 0x30FF824085C7AC1FULL }, /* XSUM_XXH3_withSecret_testdata[1258] */ + { 1259, 0x0000000000000000ULL, 0x01208E35DCBC5342ULL }, /* XSUM_XXH3_withSecret_testdata[1259] */ + { 1260, 0x0000000000000000ULL, 0xBE93C8449B0F4D28ULL }, /* XSUM_XXH3_withSecret_testdata[1260] */ + { 1261, 0x0000000000000000ULL, 0x2E61B5BB8D7312E2ULL }, /* XSUM_XXH3_withSecret_testdata[1261] */ + { 1262, 0x0000000000000000ULL, 0x9005CF7F4A946D0DULL }, /* XSUM_XXH3_withSecret_testdata[1262] */ + { 1263, 0x0000000000000000ULL, 0xFCB02DBE12CDCECDULL }, /* XSUM_XXH3_withSecret_testdata[1263] */ + { 1264, 0x0000000000000000ULL, 0x77115021CC4B7E79ULL }, /* XSUM_XXH3_withSecret_testdata[1264] */ + { 1265, 0x0000000000000000ULL, 0x45B53F7C10D68DF3ULL }, /* XSUM_XXH3_withSecret_testdata[1265] */ + { 1266, 0x0000000000000000ULL, 0xEE9685A40F3894A5ULL }, /* XSUM_XXH3_withSecret_testdata[1266] */ + { 1267, 0x0000000000000000ULL, 0x9ABF6ADB0E588970ULL }, /* XSUM_XXH3_withSecret_testdata[1267] */ + { 1268, 0x0000000000000000ULL, 0x50A2DD1114B3A393ULL }, /* XSUM_XXH3_withSecret_testdata[1268] */ + { 1269, 0x0000000000000000ULL, 0xFEEAA9C0D309D11DULL }, /* XSUM_XXH3_withSecret_testdata[1269] */ + { 1270, 0x0000000000000000ULL, 0xDD86053FB8F3C843ULL }, /* XSUM_XXH3_withSecret_testdata[1270] */ + { 1271, 0x0000000000000000ULL, 0xF607C259AD6046D2ULL }, /* XSUM_XXH3_withSecret_testdata[1271] */ + { 1272, 0x0000000000000000ULL, 0x2308CEB57312D420ULL }, /* XSUM_XXH3_withSecret_testdata[1272] */ + { 1273, 0x0000000000000000ULL, 0x42121BF4F0804A49ULL }, /* XSUM_XXH3_withSecret_testdata[1273] */ + { 1274, 0x0000000000000000ULL, 0x788CC0A18468029BULL }, /* XSUM_XXH3_withSecret_testdata[1274] */ + { 1275, 0x0000000000000000ULL, 0x6508C03B3657F8D4ULL }, /* XSUM_XXH3_withSecret_testdata[1275] */ + { 1276, 0x0000000000000000ULL, 0x6C461606A62F6A67ULL }, /* XSUM_XXH3_withSecret_testdata[1276] */ + { 1277, 0x0000000000000000ULL, 0x39282AFC7B3CDB3AULL }, /* XSUM_XXH3_withSecret_testdata[1277] */ + { 1278, 0x0000000000000000ULL, 0x74076DD2F86447F5ULL }, /* XSUM_XXH3_withSecret_testdata[1278] */ + { 1279, 0x0000000000000000ULL, 0xA8D717918A5784B2ULL }, /* XSUM_XXH3_withSecret_testdata[1279] */ + { 1280, 0x0000000000000000ULL, 0x435F9EB1675EA225ULL }, /* XSUM_XXH3_withSecret_testdata[1280] */ + { 1281, 0x0000000000000000ULL, 0xDC2DB93C9AE6807FULL }, /* XSUM_XXH3_withSecret_testdata[1281] */ + { 1282, 0x0000000000000000ULL, 0xA1E2C0F65BE822C9ULL }, /* XSUM_XXH3_withSecret_testdata[1282] */ + { 1283, 0x0000000000000000ULL, 0x1D95E563E3A8C9C3ULL }, /* XSUM_XXH3_withSecret_testdata[1283] */ + { 1284, 0x0000000000000000ULL, 0xEBBB6C45226CA339ULL }, /* XSUM_XXH3_withSecret_testdata[1284] */ + { 1285, 0x0000000000000000ULL, 0xC8C526B210C30578ULL }, /* XSUM_XXH3_withSecret_testdata[1285] */ + { 1286, 0x0000000000000000ULL, 0x1630BC64A5B3F61AULL }, /* XSUM_XXH3_withSecret_testdata[1286] */ + { 1287, 0x0000000000000000ULL, 0xDF062B18695B0AD8ULL }, /* XSUM_XXH3_withSecret_testdata[1287] */ + { 1288, 0x0000000000000000ULL, 0x56698F4C67AE3002ULL }, /* XSUM_XXH3_withSecret_testdata[1288] */ + { 1289, 0x0000000000000000ULL, 0xF4DCA376472FAE9DULL }, /* XSUM_XXH3_withSecret_testdata[1289] */ + { 1290, 0x0000000000000000ULL, 0x2C4EEB0F1A3F2B74ULL }, /* XSUM_XXH3_withSecret_testdata[1290] */ + { 1291, 0x0000000000000000ULL, 0x4F913E6E14087E32ULL }, /* XSUM_XXH3_withSecret_testdata[1291] */ + { 1292, 0x0000000000000000ULL, 0x8E28F817714CCF9EULL }, /* XSUM_XXH3_withSecret_testdata[1292] */ + { 1293, 0x0000000000000000ULL, 0x53A628FCC781B8C6ULL }, /* XSUM_XXH3_withSecret_testdata[1293] */ + { 1294, 0x0000000000000000ULL, 0x20BDAB7E198554A1ULL }, /* XSUM_XXH3_withSecret_testdata[1294] */ + { 1295, 0x0000000000000000ULL, 0x650BDEE530735691ULL }, /* XSUM_XXH3_withSecret_testdata[1295] */ + { 1296, 0x0000000000000000ULL, 0x916FE213BA38F63FULL }, /* XSUM_XXH3_withSecret_testdata[1296] */ + { 1297, 0x0000000000000000ULL, 0x1FC7BAB7BBB5FAF4ULL }, /* XSUM_XXH3_withSecret_testdata[1297] */ + { 1298, 0x0000000000000000ULL, 0x8933CB240512BC03ULL }, /* XSUM_XXH3_withSecret_testdata[1298] */ + { 1299, 0x0000000000000000ULL, 0xAA19796DAE123B34ULL }, /* XSUM_XXH3_withSecret_testdata[1299] */ + { 1300, 0x0000000000000000ULL, 0xDEE64FF495E05965ULL }, /* XSUM_XXH3_withSecret_testdata[1300] */ + { 1301, 0x0000000000000000ULL, 0x2E510FDCA174B8FFULL }, /* XSUM_XXH3_withSecret_testdata[1301] */ + { 1302, 0x0000000000000000ULL, 0x08B033AE042B7134ULL }, /* XSUM_XXH3_withSecret_testdata[1302] */ + { 1303, 0x0000000000000000ULL, 0x37B175392C8B7634ULL }, /* XSUM_XXH3_withSecret_testdata[1303] */ + { 1304, 0x0000000000000000ULL, 0x0056F1F63D1624C1ULL }, /* XSUM_XXH3_withSecret_testdata[1304] */ + { 1305, 0x0000000000000000ULL, 0x409073AF7B9FC7A8ULL }, /* XSUM_XXH3_withSecret_testdata[1305] */ + { 1306, 0x0000000000000000ULL, 0x5106BD992B25FB60ULL }, /* XSUM_XXH3_withSecret_testdata[1306] */ + { 1307, 0x0000000000000000ULL, 0x6EB2815B2767DDA2ULL }, /* XSUM_XXH3_withSecret_testdata[1307] */ + { 1308, 0x0000000000000000ULL, 0xF92809041F943667ULL }, /* XSUM_XXH3_withSecret_testdata[1308] */ + { 1309, 0x0000000000000000ULL, 0x2E9E667E6997DC6AULL }, /* XSUM_XXH3_withSecret_testdata[1309] */ + { 1310, 0x0000000000000000ULL, 0xFA3298E8C2101F66ULL }, /* XSUM_XXH3_withSecret_testdata[1310] */ + { 1311, 0x0000000000000000ULL, 0x367FB94648BD8EC4ULL }, /* XSUM_XXH3_withSecret_testdata[1311] */ + { 1312, 0x0000000000000000ULL, 0xE295652DC945F248ULL }, /* XSUM_XXH3_withSecret_testdata[1312] */ + { 1313, 0x0000000000000000ULL, 0x1497264F4AEE877BULL }, /* XSUM_XXH3_withSecret_testdata[1313] */ + { 1314, 0x0000000000000000ULL, 0x097EA52B2F2CEC0FULL }, /* XSUM_XXH3_withSecret_testdata[1314] */ + { 1315, 0x0000000000000000ULL, 0x7494E3D589BD925DULL }, /* XSUM_XXH3_withSecret_testdata[1315] */ + { 1316, 0x0000000000000000ULL, 0x1BE7F1FAC69F2A96ULL }, /* XSUM_XXH3_withSecret_testdata[1316] */ + { 1317, 0x0000000000000000ULL, 0x2D32EB078EB76499ULL }, /* XSUM_XXH3_withSecret_testdata[1317] */ + { 1318, 0x0000000000000000ULL, 0x061AA905761C05FCULL }, /* XSUM_XXH3_withSecret_testdata[1318] */ + { 1319, 0x0000000000000000ULL, 0x95574AF3902C9275ULL }, /* XSUM_XXH3_withSecret_testdata[1319] */ + { 1320, 0x0000000000000000ULL, 0xE412CFFC01B99338ULL }, /* XSUM_XXH3_withSecret_testdata[1320] */ + { 1321, 0x0000000000000000ULL, 0x9CB3BB605A83A497ULL }, /* XSUM_XXH3_withSecret_testdata[1321] */ + { 1322, 0x0000000000000000ULL, 0x5FA866FF5B5E26E2ULL }, /* XSUM_XXH3_withSecret_testdata[1322] */ + { 1323, 0x0000000000000000ULL, 0xC9EB8EBA6300B7B9ULL }, /* XSUM_XXH3_withSecret_testdata[1323] */ + { 1324, 0x0000000000000000ULL, 0x4366ECBC2241CDCBULL }, /* XSUM_XXH3_withSecret_testdata[1324] */ + { 1325, 0x0000000000000000ULL, 0xE81FE26D39C60C1AULL }, /* XSUM_XXH3_withSecret_testdata[1325] */ + { 1326, 0x0000000000000000ULL, 0xA9FAC797AF26E3A3ULL }, /* XSUM_XXH3_withSecret_testdata[1326] */ + { 1327, 0x0000000000000000ULL, 0xC73722D6E30D0314ULL }, /* XSUM_XXH3_withSecret_testdata[1327] */ + { 1328, 0x0000000000000000ULL, 0x87D861475092E84EULL }, /* XSUM_XXH3_withSecret_testdata[1328] */ + { 1329, 0x0000000000000000ULL, 0x7BD90034C6CA14E8ULL }, /* XSUM_XXH3_withSecret_testdata[1329] */ + { 1330, 0x0000000000000000ULL, 0x11E710FAF368141DULL }, /* XSUM_XXH3_withSecret_testdata[1330] */ + { 1331, 0x0000000000000000ULL, 0xB0D71F9C170851B9ULL }, /* XSUM_XXH3_withSecret_testdata[1331] */ + { 1332, 0x0000000000000000ULL, 0x8E3E730800AD0365ULL }, /* XSUM_XXH3_withSecret_testdata[1332] */ + { 1333, 0x0000000000000000ULL, 0x7EBF5F93F98E698DULL }, /* XSUM_XXH3_withSecret_testdata[1333] */ + { 1334, 0x0000000000000000ULL, 0x9126271F39408106ULL }, /* XSUM_XXH3_withSecret_testdata[1334] */ + { 1335, 0x0000000000000000ULL, 0xCD219896FED405EEULL }, /* XSUM_XXH3_withSecret_testdata[1335] */ + { 1336, 0x0000000000000000ULL, 0x68B7D403FA534589ULL }, /* XSUM_XXH3_withSecret_testdata[1336] */ + { 1337, 0x0000000000000000ULL, 0x4FB3E1315E622702ULL }, /* XSUM_XXH3_withSecret_testdata[1337] */ + { 1338, 0x0000000000000000ULL, 0xC5DC08DF8C7EE533ULL }, /* XSUM_XXH3_withSecret_testdata[1338] */ + { 1339, 0x0000000000000000ULL, 0x68E975F07090E13CULL }, /* XSUM_XXH3_withSecret_testdata[1339] */ + { 1340, 0x0000000000000000ULL, 0x7C053AD6AE67606FULL }, /* XSUM_XXH3_withSecret_testdata[1340] */ + { 1341, 0x0000000000000000ULL, 0xB9956077392BDDF9ULL }, /* XSUM_XXH3_withSecret_testdata[1341] */ + { 1342, 0x0000000000000000ULL, 0xC86247A8DB10780DULL }, /* XSUM_XXH3_withSecret_testdata[1342] */ + { 1343, 0x0000000000000000ULL, 0xB8287244C41F84CAULL }, /* XSUM_XXH3_withSecret_testdata[1343] */ + { 1344, 0x0000000000000000ULL, 0xA4D4CD1EB538AAF2ULL }, /* XSUM_XXH3_withSecret_testdata[1344] */ + { 1345, 0x0000000000000000ULL, 0x0B0ED86D8A98669CULL }, /* XSUM_XXH3_withSecret_testdata[1345] */ + { 1346, 0x0000000000000000ULL, 0x4B045826F76D5C9BULL }, /* XSUM_XXH3_withSecret_testdata[1346] */ + { 1347, 0x0000000000000000ULL, 0x0F352D87BD2D2A5EULL }, /* XSUM_XXH3_withSecret_testdata[1347] */ + { 1348, 0x0000000000000000ULL, 0x0161262E6584CACEULL }, /* XSUM_XXH3_withSecret_testdata[1348] */ + { 1349, 0x0000000000000000ULL, 0x3FD1CA8714F715BFULL }, /* XSUM_XXH3_withSecret_testdata[1349] */ + { 1350, 0x0000000000000000ULL, 0x2889F452FF13791CULL }, /* XSUM_XXH3_withSecret_testdata[1350] */ + { 1351, 0x0000000000000000ULL, 0x6658548D5D914D3EULL }, /* XSUM_XXH3_withSecret_testdata[1351] */ + { 1352, 0x0000000000000000ULL, 0xCC30345A1184FA4DULL }, /* XSUM_XXH3_withSecret_testdata[1352] */ + { 1353, 0x0000000000000000ULL, 0x32C9DB4DD75C3465ULL }, /* XSUM_XXH3_withSecret_testdata[1353] */ + { 1354, 0x0000000000000000ULL, 0xA3314658723A788EULL }, /* XSUM_XXH3_withSecret_testdata[1354] */ + { 1355, 0x0000000000000000ULL, 0x55E1274E9CBC37AFULL }, /* XSUM_XXH3_withSecret_testdata[1355] */ + { 1356, 0x0000000000000000ULL, 0xDEEF4DC4B394BEDBULL }, /* XSUM_XXH3_withSecret_testdata[1356] */ + { 1357, 0x0000000000000000ULL, 0x313BC7A45BED6865ULL }, /* XSUM_XXH3_withSecret_testdata[1357] */ + { 1358, 0x0000000000000000ULL, 0x57297121D1B7D1E0ULL }, /* XSUM_XXH3_withSecret_testdata[1358] */ + { 1359, 0x0000000000000000ULL, 0x913742F691445D60ULL }, /* XSUM_XXH3_withSecret_testdata[1359] */ + { 1360, 0x0000000000000000ULL, 0x489983AE80D732ECULL }, /* XSUM_XXH3_withSecret_testdata[1360] */ + { 1361, 0x0000000000000000ULL, 0x7213A1A7FD59E105ULL }, /* XSUM_XXH3_withSecret_testdata[1361] */ + { 1362, 0x0000000000000000ULL, 0x2DD2971B61A24DDEULL }, /* XSUM_XXH3_withSecret_testdata[1362] */ + { 1363, 0x0000000000000000ULL, 0x8CFC1ED61F2AFA6DULL }, /* XSUM_XXH3_withSecret_testdata[1363] */ + { 1364, 0x0000000000000000ULL, 0x9A669204AD01AE3CULL }, /* XSUM_XXH3_withSecret_testdata[1364] */ + { 1365, 0x0000000000000000ULL, 0xB43133C814D37F9BULL }, /* XSUM_XXH3_withSecret_testdata[1365] */ + { 1366, 0x0000000000000000ULL, 0xF0607F89A0028E13ULL }, /* XSUM_XXH3_withSecret_testdata[1366] */ + { 1367, 0x0000000000000000ULL, 0x02F95A6892D5FDF5ULL }, /* XSUM_XXH3_withSecret_testdata[1367] */ + { 1368, 0x0000000000000000ULL, 0x1FC4256EDE0F7D5CULL }, /* XSUM_XXH3_withSecret_testdata[1368] */ + { 1369, 0x0000000000000000ULL, 0x02348B5D138A22CDULL }, /* XSUM_XXH3_withSecret_testdata[1369] */ + { 1370, 0x0000000000000000ULL, 0x769EB83BD8470425ULL }, /* XSUM_XXH3_withSecret_testdata[1370] */ + { 1371, 0x0000000000000000ULL, 0x8E1F11C7BC124DCBULL }, /* XSUM_XXH3_withSecret_testdata[1371] */ + { 1372, 0x0000000000000000ULL, 0xC7EEDADD53CD2C1FULL }, /* XSUM_XXH3_withSecret_testdata[1372] */ + { 1373, 0x0000000000000000ULL, 0x7EE46BBE70E984F7ULL }, /* XSUM_XXH3_withSecret_testdata[1373] */ + { 1374, 0x0000000000000000ULL, 0xF0CDEEEA3466E488ULL }, /* XSUM_XXH3_withSecret_testdata[1374] */ + { 1375, 0x0000000000000000ULL, 0xD459006BAE6290B1ULL }, /* XSUM_XXH3_withSecret_testdata[1375] */ + { 1376, 0x0000000000000000ULL, 0x14E4991605F37CD7ULL }, /* XSUM_XXH3_withSecret_testdata[1376] */ + { 1377, 0x0000000000000000ULL, 0x4E6B79C2847AA59BULL }, /* XSUM_XXH3_withSecret_testdata[1377] */ + { 1378, 0x0000000000000000ULL, 0xD6461CA4956C3204ULL }, /* XSUM_XXH3_withSecret_testdata[1378] */ + { 1379, 0x0000000000000000ULL, 0xDDBA221F4BF6C519ULL }, /* XSUM_XXH3_withSecret_testdata[1379] */ + { 1380, 0x0000000000000000ULL, 0x0B2230A1B569AA9BULL }, /* XSUM_XXH3_withSecret_testdata[1380] */ + { 1381, 0x0000000000000000ULL, 0x25EF2299E0CBC6CAULL }, /* XSUM_XXH3_withSecret_testdata[1381] */ + { 1382, 0x0000000000000000ULL, 0xC4B36FCBFA31C554ULL }, /* XSUM_XXH3_withSecret_testdata[1382] */ + { 1383, 0x0000000000000000ULL, 0xD6D7671AF406DA16ULL }, /* XSUM_XXH3_withSecret_testdata[1383] */ + { 1384, 0x0000000000000000ULL, 0x5BAE5DC9E6E5F381ULL }, /* XSUM_XXH3_withSecret_testdata[1384] */ + { 1385, 0x0000000000000000ULL, 0x17DE1CA5FB745BFBULL }, /* XSUM_XXH3_withSecret_testdata[1385] */ + { 1386, 0x0000000000000000ULL, 0xA1237AD4519070F8ULL }, /* XSUM_XXH3_withSecret_testdata[1386] */ + { 1387, 0x0000000000000000ULL, 0xCCC5A02338D61784ULL }, /* XSUM_XXH3_withSecret_testdata[1387] */ + { 1388, 0x0000000000000000ULL, 0x98E931D2B81745CEULL }, /* XSUM_XXH3_withSecret_testdata[1388] */ + { 1389, 0x0000000000000000ULL, 0xAA114F0C757036E3ULL }, /* XSUM_XXH3_withSecret_testdata[1389] */ + { 1390, 0x0000000000000000ULL, 0xAAB5D2F62EF80779ULL }, /* XSUM_XXH3_withSecret_testdata[1390] */ + { 1391, 0x0000000000000000ULL, 0x63C03FFD8A52E4B2ULL }, /* XSUM_XXH3_withSecret_testdata[1391] */ + { 1392, 0x0000000000000000ULL, 0x528D9C34036F69F3ULL }, /* XSUM_XXH3_withSecret_testdata[1392] */ + { 1393, 0x0000000000000000ULL, 0x420ED6C9BAF1BD6CULL }, /* XSUM_XXH3_withSecret_testdata[1393] */ + { 1394, 0x0000000000000000ULL, 0x9858FCBFF7AD61C7ULL }, /* XSUM_XXH3_withSecret_testdata[1394] */ + { 1395, 0x0000000000000000ULL, 0x078D2E1BAEAC8ED3ULL }, /* XSUM_XXH3_withSecret_testdata[1395] */ + { 1396, 0x0000000000000000ULL, 0x76CDEEB41FB0C12AULL }, /* XSUM_XXH3_withSecret_testdata[1396] */ + { 1397, 0x0000000000000000ULL, 0xEACEEF02615156F9ULL }, /* XSUM_XXH3_withSecret_testdata[1397] */ + { 1398, 0x0000000000000000ULL, 0xB8D39A816267F1DDULL }, /* XSUM_XXH3_withSecret_testdata[1398] */ + { 1399, 0x0000000000000000ULL, 0x5994BF3CE38FB2E1ULL }, /* XSUM_XXH3_withSecret_testdata[1399] */ + { 1400, 0x0000000000000000ULL, 0x6D91347F36D08F36ULL }, /* XSUM_XXH3_withSecret_testdata[1400] */ + { 1401, 0x0000000000000000ULL, 0x1DE7C00E0969BDBEULL }, /* XSUM_XXH3_withSecret_testdata[1401] */ + { 1402, 0x0000000000000000ULL, 0x583C26C46085BE1AULL }, /* XSUM_XXH3_withSecret_testdata[1402] */ + { 1403, 0x0000000000000000ULL, 0xBEEC35ADCB348DAFULL }, /* XSUM_XXH3_withSecret_testdata[1403] */ + { 1404, 0x0000000000000000ULL, 0xAFBD331DC6E4386EULL }, /* XSUM_XXH3_withSecret_testdata[1404] */ + { 1405, 0x0000000000000000ULL, 0x9559937A90665EE5ULL }, /* XSUM_XXH3_withSecret_testdata[1405] */ + { 1406, 0x0000000000000000ULL, 0x40116694DD7AAA11ULL }, /* XSUM_XXH3_withSecret_testdata[1406] */ + { 1407, 0x0000000000000000ULL, 0xB82A445942E93521ULL }, /* XSUM_XXH3_withSecret_testdata[1407] */ + { 1408, 0x0000000000000000ULL, 0x02C47388A3111151ULL }, /* XSUM_XXH3_withSecret_testdata[1408] */ + { 1409, 0x0000000000000000ULL, 0xB8AA13002E7B2AD5ULL }, /* XSUM_XXH3_withSecret_testdata[1409] */ + { 1410, 0x0000000000000000ULL, 0x25B30179D77075A2ULL }, /* XSUM_XXH3_withSecret_testdata[1410] */ + { 1411, 0x0000000000000000ULL, 0x970C7B6FDB288922ULL }, /* XSUM_XXH3_withSecret_testdata[1411] */ + { 1412, 0x0000000000000000ULL, 0xC4306C0F33D4E63BULL }, /* XSUM_XXH3_withSecret_testdata[1412] */ + { 1413, 0x0000000000000000ULL, 0xF3E192D4034202A2ULL }, /* XSUM_XXH3_withSecret_testdata[1413] */ + { 1414, 0x0000000000000000ULL, 0xE5E6820E28353565ULL }, /* XSUM_XXH3_withSecret_testdata[1414] */ + { 1415, 0x0000000000000000ULL, 0x45F2455297796FB1ULL }, /* XSUM_XXH3_withSecret_testdata[1415] */ + { 1416, 0x0000000000000000ULL, 0xBB08A3CD1068D556ULL }, /* XSUM_XXH3_withSecret_testdata[1416] */ + { 1417, 0x0000000000000000ULL, 0x8A3267871B458F55ULL }, /* XSUM_XXH3_withSecret_testdata[1417] */ + { 1418, 0x0000000000000000ULL, 0x1638764CF805F94FULL }, /* XSUM_XXH3_withSecret_testdata[1418] */ + { 1419, 0x0000000000000000ULL, 0x34496200B255B27FULL }, /* XSUM_XXH3_withSecret_testdata[1419] */ + { 1420, 0x0000000000000000ULL, 0xDD4BC2E2F82B1C2EULL }, /* XSUM_XXH3_withSecret_testdata[1420] */ + { 1421, 0x0000000000000000ULL, 0xEB1A9397DFCFFD59ULL }, /* XSUM_XXH3_withSecret_testdata[1421] */ + { 1422, 0x0000000000000000ULL, 0x1CB9BBFC1E6A953AULL }, /* XSUM_XXH3_withSecret_testdata[1422] */ + { 1423, 0x0000000000000000ULL, 0x94D77548A18A149DULL }, /* XSUM_XXH3_withSecret_testdata[1423] */ + { 1424, 0x0000000000000000ULL, 0x5B642D3E95D6C3FBULL }, /* XSUM_XXH3_withSecret_testdata[1424] */ + { 1425, 0x0000000000000000ULL, 0x732EE523654D619DULL }, /* XSUM_XXH3_withSecret_testdata[1425] */ + { 1426, 0x0000000000000000ULL, 0x08EE73C403588B89ULL }, /* XSUM_XXH3_withSecret_testdata[1426] */ + { 1427, 0x0000000000000000ULL, 0xBC2120E7C3C28258ULL }, /* XSUM_XXH3_withSecret_testdata[1427] */ + { 1428, 0x0000000000000000ULL, 0x323B99D646505E1BULL }, /* XSUM_XXH3_withSecret_testdata[1428] */ + { 1429, 0x0000000000000000ULL, 0x04BB11F406DB02A5ULL }, /* XSUM_XXH3_withSecret_testdata[1429] */ + { 1430, 0x0000000000000000ULL, 0x2CDAEB0037371D72ULL }, /* XSUM_XXH3_withSecret_testdata[1430] */ + { 1431, 0x0000000000000000ULL, 0xDFE286A81E9CB8ADULL }, /* XSUM_XXH3_withSecret_testdata[1431] */ + { 1432, 0x0000000000000000ULL, 0xFEB49ACC6A4BC21BULL }, /* XSUM_XXH3_withSecret_testdata[1432] */ + { 1433, 0x0000000000000000ULL, 0xDA1B59366DDA2736ULL }, /* XSUM_XXH3_withSecret_testdata[1433] */ + { 1434, 0x0000000000000000ULL, 0xB32AF872B9AD7B6FULL }, /* XSUM_XXH3_withSecret_testdata[1434] */ + { 1435, 0x0000000000000000ULL, 0x941E87EB0AA89CE0ULL }, /* XSUM_XXH3_withSecret_testdata[1435] */ + { 1436, 0x0000000000000000ULL, 0x4266A95A8D49739CULL }, /* XSUM_XXH3_withSecret_testdata[1436] */ + { 1437, 0x0000000000000000ULL, 0xD2C604962750D4F5ULL }, /* XSUM_XXH3_withSecret_testdata[1437] */ + { 1438, 0x0000000000000000ULL, 0xAD664A49281622EAULL }, /* XSUM_XXH3_withSecret_testdata[1438] */ + { 1439, 0x0000000000000000ULL, 0x550E77E8A0DF4278ULL }, /* XSUM_XXH3_withSecret_testdata[1439] */ + { 1440, 0x0000000000000000ULL, 0x84DCC5BCBBD6BFE1ULL }, /* XSUM_XXH3_withSecret_testdata[1440] */ + { 1441, 0x0000000000000000ULL, 0xF171A82750101FB4ULL }, /* XSUM_XXH3_withSecret_testdata[1441] */ + { 1442, 0x0000000000000000ULL, 0x7EE49B0C3C0A4AECULL }, /* XSUM_XXH3_withSecret_testdata[1442] */ + { 1443, 0x0000000000000000ULL, 0x06B1CAF38CCFFA57ULL }, /* XSUM_XXH3_withSecret_testdata[1443] */ + { 1444, 0x0000000000000000ULL, 0x6D26181748CC55FBULL }, /* XSUM_XXH3_withSecret_testdata[1444] */ + { 1445, 0x0000000000000000ULL, 0x3AEA776E1F1770BFULL }, /* XSUM_XXH3_withSecret_testdata[1445] */ + { 1446, 0x0000000000000000ULL, 0x755AB27728FCF4EFULL }, /* XSUM_XXH3_withSecret_testdata[1446] */ + { 1447, 0x0000000000000000ULL, 0x1CA7EA1B4B7398F9ULL }, /* XSUM_XXH3_withSecret_testdata[1447] */ + { 1448, 0x0000000000000000ULL, 0x02448134164C4068ULL }, /* XSUM_XXH3_withSecret_testdata[1448] */ + { 1449, 0x0000000000000000ULL, 0xFD5B9CF13FE58C85ULL }, /* XSUM_XXH3_withSecret_testdata[1449] */ + { 1450, 0x0000000000000000ULL, 0x9801D4DDCD3513BEULL }, /* XSUM_XXH3_withSecret_testdata[1450] */ + { 1451, 0x0000000000000000ULL, 0x651340C38D9A1EEAULL }, /* XSUM_XXH3_withSecret_testdata[1451] */ + { 1452, 0x0000000000000000ULL, 0x77EBF1883BBAC649ULL }, /* XSUM_XXH3_withSecret_testdata[1452] */ + { 1453, 0x0000000000000000ULL, 0x4A3A724827460C8FULL }, /* XSUM_XXH3_withSecret_testdata[1453] */ + { 1454, 0x0000000000000000ULL, 0x93AD20742E286C96ULL }, /* XSUM_XXH3_withSecret_testdata[1454] */ + { 1455, 0x0000000000000000ULL, 0x4638CA4E88FE3480ULL }, /* XSUM_XXH3_withSecret_testdata[1455] */ + { 1456, 0x0000000000000000ULL, 0xD363EE4842B69F4DULL }, /* XSUM_XXH3_withSecret_testdata[1456] */ + { 1457, 0x0000000000000000ULL, 0x43E03B2471EAE066ULL }, /* XSUM_XXH3_withSecret_testdata[1457] */ + { 1458, 0x0000000000000000ULL, 0x18E733421644F2EBULL }, /* XSUM_XXH3_withSecret_testdata[1458] */ + { 1459, 0x0000000000000000ULL, 0x2BF5663715849BC0ULL }, /* XSUM_XXH3_withSecret_testdata[1459] */ + { 1460, 0x0000000000000000ULL, 0x75C50907EFEF26EAULL }, /* XSUM_XXH3_withSecret_testdata[1460] */ + { 1461, 0x0000000000000000ULL, 0xFEE3B16CDD0D7476ULL }, /* XSUM_XXH3_withSecret_testdata[1461] */ + { 1462, 0x0000000000000000ULL, 0x962B8A19330A46F7ULL }, /* XSUM_XXH3_withSecret_testdata[1462] */ + { 1463, 0x0000000000000000ULL, 0x6D87ECF619EDACA6ULL }, /* XSUM_XXH3_withSecret_testdata[1463] */ + { 1464, 0x0000000000000000ULL, 0x602E6D6A3853CA99ULL }, /* XSUM_XXH3_withSecret_testdata[1464] */ + { 1465, 0x0000000000000000ULL, 0x639C9DD50F215D37ULL }, /* XSUM_XXH3_withSecret_testdata[1465] */ + { 1466, 0x0000000000000000ULL, 0xF81F9A2366D05732ULL }, /* XSUM_XXH3_withSecret_testdata[1466] */ + { 1467, 0x0000000000000000ULL, 0x921B8FC56EFF4938ULL }, /* XSUM_XXH3_withSecret_testdata[1467] */ + { 1468, 0x0000000000000000ULL, 0xF17BDFB887F43B8BULL }, /* XSUM_XXH3_withSecret_testdata[1468] */ + { 1469, 0x0000000000000000ULL, 0x58795B2755E3C94BULL }, /* XSUM_XXH3_withSecret_testdata[1469] */ + { 1470, 0x0000000000000000ULL, 0xE396B152BDEFE195ULL }, /* XSUM_XXH3_withSecret_testdata[1470] */ + { 1471, 0x0000000000000000ULL, 0x842AB048580B7330ULL }, /* XSUM_XXH3_withSecret_testdata[1471] */ + { 1472, 0x0000000000000000ULL, 0x156DEF4CAB5718C6ULL }, /* XSUM_XXH3_withSecret_testdata[1472] */ + { 1473, 0x0000000000000000ULL, 0xF6CD1ECC31D2665FULL }, /* XSUM_XXH3_withSecret_testdata[1473] */ + { 1474, 0x0000000000000000ULL, 0x0E2E2A87645BEA7FULL }, /* XSUM_XXH3_withSecret_testdata[1474] */ + { 1475, 0x0000000000000000ULL, 0x10FC1D4A3AAFB892ULL }, /* XSUM_XXH3_withSecret_testdata[1475] */ + { 1476, 0x0000000000000000ULL, 0x326FB3992B7C6656ULL }, /* XSUM_XXH3_withSecret_testdata[1476] */ + { 1477, 0x0000000000000000ULL, 0x720055F94021470BULL }, /* XSUM_XXH3_withSecret_testdata[1477] */ + { 1478, 0x0000000000000000ULL, 0x2C27EC8E23D4A26FULL }, /* XSUM_XXH3_withSecret_testdata[1478] */ + { 1479, 0x0000000000000000ULL, 0x7C86FBA1CE126A67ULL }, /* XSUM_XXH3_withSecret_testdata[1479] */ + { 1480, 0x0000000000000000ULL, 0xA2E3DD5CDB96E9B8ULL }, /* XSUM_XXH3_withSecret_testdata[1480] */ + { 1481, 0x0000000000000000ULL, 0x9B6E8326AF521732ULL }, /* XSUM_XXH3_withSecret_testdata[1481] */ + { 1482, 0x0000000000000000ULL, 0x0DD26DC26C67C870ULL }, /* XSUM_XXH3_withSecret_testdata[1482] */ + { 1483, 0x0000000000000000ULL, 0xDF2EAD57662B2119ULL }, /* XSUM_XXH3_withSecret_testdata[1483] */ + { 1484, 0x0000000000000000ULL, 0xF4F828C9432372F1ULL }, /* XSUM_XXH3_withSecret_testdata[1484] */ + { 1485, 0x0000000000000000ULL, 0x2F87F791C7EEC150ULL }, /* XSUM_XXH3_withSecret_testdata[1485] */ + { 1486, 0x0000000000000000ULL, 0xB8D09106EA4AF4EAULL }, /* XSUM_XXH3_withSecret_testdata[1486] */ + { 1487, 0x0000000000000000ULL, 0x254E4EBABB62AB6AULL }, /* XSUM_XXH3_withSecret_testdata[1487] */ + { 1488, 0x0000000000000000ULL, 0xA66C49C2052C3C32ULL }, /* XSUM_XXH3_withSecret_testdata[1488] */ + { 1489, 0x0000000000000000ULL, 0x4BD128B01C399EA6ULL }, /* XSUM_XXH3_withSecret_testdata[1489] */ + { 1490, 0x0000000000000000ULL, 0x41B5366204D791CBULL }, /* XSUM_XXH3_withSecret_testdata[1490] */ + { 1491, 0x0000000000000000ULL, 0x5518478FD7F6D78FULL }, /* XSUM_XXH3_withSecret_testdata[1491] */ + { 1492, 0x0000000000000000ULL, 0x144E7A95EE920229ULL }, /* XSUM_XXH3_withSecret_testdata[1492] */ + { 1493, 0x0000000000000000ULL, 0x97310E5B1F4BCC47ULL }, /* XSUM_XXH3_withSecret_testdata[1493] */ + { 1494, 0x0000000000000000ULL, 0xD06C471AADFA71BAULL }, /* XSUM_XXH3_withSecret_testdata[1494] */ + { 1495, 0x0000000000000000ULL, 0x8165BE3BF3C8CB7AULL }, /* XSUM_XXH3_withSecret_testdata[1495] */ + { 1496, 0x0000000000000000ULL, 0xC0A2AE3FC71C0DC9ULL }, /* XSUM_XXH3_withSecret_testdata[1496] */ + { 1497, 0x0000000000000000ULL, 0x09795832DB2F7376ULL }, /* XSUM_XXH3_withSecret_testdata[1497] */ + { 1498, 0x0000000000000000ULL, 0x82CF71C8BBC60BE1ULL }, /* XSUM_XXH3_withSecret_testdata[1498] */ + { 1499, 0x0000000000000000ULL, 0xBB61264AD362D930ULL }, /* XSUM_XXH3_withSecret_testdata[1499] */ + { 1500, 0x0000000000000000ULL, 0x3B38381C80B00F79ULL }, /* XSUM_XXH3_withSecret_testdata[1500] */ + { 1501, 0x0000000000000000ULL, 0x02ED1B074BE91143ULL }, /* XSUM_XXH3_withSecret_testdata[1501] */ + { 1502, 0x0000000000000000ULL, 0x0492A4AFAC8C52EDULL }, /* XSUM_XXH3_withSecret_testdata[1502] */ + { 1503, 0x0000000000000000ULL, 0x41707564BEB2A166ULL }, /* XSUM_XXH3_withSecret_testdata[1503] */ + { 1504, 0x0000000000000000ULL, 0x801B6844619FD6A4ULL }, /* XSUM_XXH3_withSecret_testdata[1504] */ + { 1505, 0x0000000000000000ULL, 0x38EE44C5E7E6F350ULL }, /* XSUM_XXH3_withSecret_testdata[1505] */ + { 1506, 0x0000000000000000ULL, 0x491383C0B1871230ULL }, /* XSUM_XXH3_withSecret_testdata[1506] */ + { 1507, 0x0000000000000000ULL, 0x06DF1E6DB070BD15ULL }, /* XSUM_XXH3_withSecret_testdata[1507] */ + { 1508, 0x0000000000000000ULL, 0xACC617BF22DAC0CAULL }, /* XSUM_XXH3_withSecret_testdata[1508] */ + { 1509, 0x0000000000000000ULL, 0x27647763439B3B6FULL }, /* XSUM_XXH3_withSecret_testdata[1509] */ + { 1510, 0x0000000000000000ULL, 0xFB388226E5E566DDULL }, /* XSUM_XXH3_withSecret_testdata[1510] */ + { 1511, 0x0000000000000000ULL, 0xCFFAE0EE63D45CEBULL }, /* XSUM_XXH3_withSecret_testdata[1511] */ + { 1512, 0x0000000000000000ULL, 0x0045C1ADFE33D115ULL }, /* XSUM_XXH3_withSecret_testdata[1512] */ + { 1513, 0x0000000000000000ULL, 0x2041DE1902485870ULL }, /* XSUM_XXH3_withSecret_testdata[1513] */ + { 1514, 0x0000000000000000ULL, 0x752ED0BFE64491E4ULL }, /* XSUM_XXH3_withSecret_testdata[1514] */ + { 1515, 0x0000000000000000ULL, 0xACF6520478022AE3ULL }, /* XSUM_XXH3_withSecret_testdata[1515] */ + { 1516, 0x0000000000000000ULL, 0xF92176A24CC1AC82ULL }, /* XSUM_XXH3_withSecret_testdata[1516] */ + { 1517, 0x0000000000000000ULL, 0x972D0074898064AAULL }, /* XSUM_XXH3_withSecret_testdata[1517] */ + { 1518, 0x0000000000000000ULL, 0x3BF9CDC5E8654E28ULL }, /* XSUM_XXH3_withSecret_testdata[1518] */ + { 1519, 0x0000000000000000ULL, 0x0424912948892A2DULL }, /* XSUM_XXH3_withSecret_testdata[1519] */ + { 1520, 0x0000000000000000ULL, 0x0C850FFD4E8D900AULL }, /* XSUM_XXH3_withSecret_testdata[1520] */ + { 1521, 0x0000000000000000ULL, 0x30A4FB81E01891F6ULL }, /* XSUM_XXH3_withSecret_testdata[1521] */ + { 1522, 0x0000000000000000ULL, 0xCA6B5F7264AC7212ULL }, /* XSUM_XXH3_withSecret_testdata[1522] */ + { 1523, 0x0000000000000000ULL, 0x0459F2C51EAE2D8FULL }, /* XSUM_XXH3_withSecret_testdata[1523] */ + { 1524, 0x0000000000000000ULL, 0x02F3F01168480D1DULL }, /* XSUM_XXH3_withSecret_testdata[1524] */ + { 1525, 0x0000000000000000ULL, 0x5DA46A20A21BC416ULL }, /* XSUM_XXH3_withSecret_testdata[1525] */ + { 1526, 0x0000000000000000ULL, 0x8761BB27E289006BULL }, /* XSUM_XXH3_withSecret_testdata[1526] */ + { 1527, 0x0000000000000000ULL, 0x1FB705B86DFED16EULL }, /* XSUM_XXH3_withSecret_testdata[1527] */ + { 1528, 0x0000000000000000ULL, 0xD84E37677B1A4025ULL }, /* XSUM_XXH3_withSecret_testdata[1528] */ + { 1529, 0x0000000000000000ULL, 0x103CF494565CD699ULL }, /* XSUM_XXH3_withSecret_testdata[1529] */ + { 1530, 0x0000000000000000ULL, 0x64FCC3AC7F95A3B6ULL }, /* XSUM_XXH3_withSecret_testdata[1530] */ + { 1531, 0x0000000000000000ULL, 0xF3B0049664EC7806ULL }, /* XSUM_XXH3_withSecret_testdata[1531] */ + { 1532, 0x0000000000000000ULL, 0x7622E26C33FF525CULL }, /* XSUM_XXH3_withSecret_testdata[1532] */ + { 1533, 0x0000000000000000ULL, 0xF910057B2F72A925ULL }, /* XSUM_XXH3_withSecret_testdata[1533] */ + { 1534, 0x0000000000000000ULL, 0xD6DE080F1BD67BB6ULL }, /* XSUM_XXH3_withSecret_testdata[1534] */ + { 1535, 0x0000000000000000ULL, 0x010C1FC496F3D1C0ULL }, /* XSUM_XXH3_withSecret_testdata[1535] */ + { 1536, 0x0000000000000000ULL, 0x5481CAC709A00547ULL }, /* XSUM_XXH3_withSecret_testdata[1536] */ + { 1537, 0x0000000000000000ULL, 0x49142C7D411F3ABBULL }, /* XSUM_XXH3_withSecret_testdata[1537] */ + { 1538, 0x0000000000000000ULL, 0xA87D244DFACBB7F7ULL }, /* XSUM_XXH3_withSecret_testdata[1538] */ + { 1539, 0x0000000000000000ULL, 0x6E9DD1A63172A284ULL }, /* XSUM_XXH3_withSecret_testdata[1539] */ + { 1540, 0x0000000000000000ULL, 0xE3E599C92E0E41BAULL }, /* XSUM_XXH3_withSecret_testdata[1540] */ + { 1541, 0x0000000000000000ULL, 0xDDD5A3042B4832ABULL }, /* XSUM_XXH3_withSecret_testdata[1541] */ + { 1542, 0x0000000000000000ULL, 0xADE9103FEED62C59ULL }, /* XSUM_XXH3_withSecret_testdata[1542] */ + { 1543, 0x0000000000000000ULL, 0xB16127F2122E49F3ULL }, /* XSUM_XXH3_withSecret_testdata[1543] */ + { 1544, 0x0000000000000000ULL, 0x5D5D8B07ECFC25DFULL }, /* XSUM_XXH3_withSecret_testdata[1544] */ + { 1545, 0x0000000000000000ULL, 0xA1C0A4CB4424231BULL }, /* XSUM_XXH3_withSecret_testdata[1545] */ + { 1546, 0x0000000000000000ULL, 0x747982BBE45543EFULL }, /* XSUM_XXH3_withSecret_testdata[1546] */ + { 1547, 0x0000000000000000ULL, 0x9ECCEA6659D59EDCULL }, /* XSUM_XXH3_withSecret_testdata[1547] */ + { 1548, 0x0000000000000000ULL, 0x38769A9591DD2D12ULL }, /* XSUM_XXH3_withSecret_testdata[1548] */ + { 1549, 0x0000000000000000ULL, 0x027F6C6D14CCF327ULL }, /* XSUM_XXH3_withSecret_testdata[1549] */ + { 1550, 0x0000000000000000ULL, 0xDE5498324B8F85A4ULL }, /* XSUM_XXH3_withSecret_testdata[1550] */ + { 1551, 0x0000000000000000ULL, 0xB536DD44995AFC76ULL }, /* XSUM_XXH3_withSecret_testdata[1551] */ + { 1552, 0x0000000000000000ULL, 0x770720AFAB500B79ULL }, /* XSUM_XXH3_withSecret_testdata[1552] */ + { 1553, 0x0000000000000000ULL, 0x06D08A6EFB7981ACULL }, /* XSUM_XXH3_withSecret_testdata[1553] */ + { 1554, 0x0000000000000000ULL, 0xB41B472B821086DDULL }, /* XSUM_XXH3_withSecret_testdata[1554] */ + { 1555, 0x0000000000000000ULL, 0x242E5AE5EEF53F40ULL }, /* XSUM_XXH3_withSecret_testdata[1555] */ + { 1556, 0x0000000000000000ULL, 0x35FAA23CCE3198F2ULL }, /* XSUM_XXH3_withSecret_testdata[1556] */ + { 1557, 0x0000000000000000ULL, 0xD23B5C173B99B35BULL }, /* XSUM_XXH3_withSecret_testdata[1557] */ + { 1558, 0x0000000000000000ULL, 0xA33782D76DDC38EBULL }, /* XSUM_XXH3_withSecret_testdata[1558] */ + { 1559, 0x0000000000000000ULL, 0x9E5A86B789766272ULL }, /* XSUM_XXH3_withSecret_testdata[1559] */ + { 1560, 0x0000000000000000ULL, 0xB507A75CF1020B56ULL }, /* XSUM_XXH3_withSecret_testdata[1560] */ + { 1561, 0x0000000000000000ULL, 0x6124EB9E1634FC72ULL }, /* XSUM_XXH3_withSecret_testdata[1561] */ + { 1562, 0x0000000000000000ULL, 0xEE3BD02C1CE375CAULL }, /* XSUM_XXH3_withSecret_testdata[1562] */ + { 1563, 0x0000000000000000ULL, 0xECA0D51E89F2E7ECULL }, /* XSUM_XXH3_withSecret_testdata[1563] */ + { 1564, 0x0000000000000000ULL, 0xCE30CFCB000C0C5FULL }, /* XSUM_XXH3_withSecret_testdata[1564] */ + { 1565, 0x0000000000000000ULL, 0x14F3CDA1154E344DULL }, /* XSUM_XXH3_withSecret_testdata[1565] */ + { 1566, 0x0000000000000000ULL, 0x116A649F8D9706A2ULL }, /* XSUM_XXH3_withSecret_testdata[1566] */ + { 1567, 0x0000000000000000ULL, 0xA28D05E3EA45CA69ULL }, /* XSUM_XXH3_withSecret_testdata[1567] */ + { 1568, 0x0000000000000000ULL, 0x710FD06512AA5BE8ULL }, /* XSUM_XXH3_withSecret_testdata[1568] */ + { 1569, 0x0000000000000000ULL, 0x784391AF1A9BA1B7ULL }, /* XSUM_XXH3_withSecret_testdata[1569] */ + { 1570, 0x0000000000000000ULL, 0x79FA23ABB58BBCFFULL }, /* XSUM_XXH3_withSecret_testdata[1570] */ + { 1571, 0x0000000000000000ULL, 0x1DA468E8064598A5ULL }, /* XSUM_XXH3_withSecret_testdata[1571] */ + { 1572, 0x0000000000000000ULL, 0xB4C4FD66D826C688ULL }, /* XSUM_XXH3_withSecret_testdata[1572] */ + { 1573, 0x0000000000000000ULL, 0x35D164F09F1FB56DULL }, /* XSUM_XXH3_withSecret_testdata[1573] */ + { 1574, 0x0000000000000000ULL, 0x448F80DC191044CEULL }, /* XSUM_XXH3_withSecret_testdata[1574] */ + { 1575, 0x0000000000000000ULL, 0xECBE6AF44DED7706ULL }, /* XSUM_XXH3_withSecret_testdata[1575] */ + { 1576, 0x0000000000000000ULL, 0xC7D9766F768E79A9ULL }, /* XSUM_XXH3_withSecret_testdata[1576] */ + { 1577, 0x0000000000000000ULL, 0x4028751D1475BEE9ULL }, /* XSUM_XXH3_withSecret_testdata[1577] */ + { 1578, 0x0000000000000000ULL, 0x17190FA37A712740ULL }, /* XSUM_XXH3_withSecret_testdata[1578] */ + { 1579, 0x0000000000000000ULL, 0x5C433B8B127909A1ULL }, /* XSUM_XXH3_withSecret_testdata[1579] */ + { 1580, 0x0000000000000000ULL, 0x734558FFEE5A74D2ULL }, /* XSUM_XXH3_withSecret_testdata[1580] */ + { 1581, 0x0000000000000000ULL, 0xDF7A69D5C69D2389ULL }, /* XSUM_XXH3_withSecret_testdata[1581] */ + { 1582, 0x0000000000000000ULL, 0x11C96BFB6DE24BE0ULL }, /* XSUM_XXH3_withSecret_testdata[1582] */ + { 1583, 0x0000000000000000ULL, 0xD74F6A9969484337ULL }, /* XSUM_XXH3_withSecret_testdata[1583] */ + { 1584, 0x0000000000000000ULL, 0x7A2527499384FBDDULL }, /* XSUM_XXH3_withSecret_testdata[1584] */ + { 1585, 0x0000000000000000ULL, 0xA7DD5A711E85FC3FULL }, /* XSUM_XXH3_withSecret_testdata[1585] */ + { 1586, 0x0000000000000000ULL, 0x771AD1F9E0EFDD27ULL }, /* XSUM_XXH3_withSecret_testdata[1586] */ + { 1587, 0x0000000000000000ULL, 0xCD346BF1A2FC701BULL }, /* XSUM_XXH3_withSecret_testdata[1587] */ + { 1588, 0x0000000000000000ULL, 0x2B2C5902B173E4D1ULL }, /* XSUM_XXH3_withSecret_testdata[1588] */ + { 1589, 0x0000000000000000ULL, 0x7C4D63D009E0E16AULL }, /* XSUM_XXH3_withSecret_testdata[1589] */ + { 1590, 0x0000000000000000ULL, 0x0BE8E14E1F1667C4ULL }, /* XSUM_XXH3_withSecret_testdata[1590] */ + { 1591, 0x0000000000000000ULL, 0xDE41BB81852B1504ULL }, /* XSUM_XXH3_withSecret_testdata[1591] */ + { 1592, 0x0000000000000000ULL, 0x42919116FF583596ULL }, /* XSUM_XXH3_withSecret_testdata[1592] */ + { 1593, 0x0000000000000000ULL, 0xCB6BB1CDC70E944EULL }, /* XSUM_XXH3_withSecret_testdata[1593] */ + { 1594, 0x0000000000000000ULL, 0xE6FB522266DB7768ULL }, /* XSUM_XXH3_withSecret_testdata[1594] */ + { 1595, 0x0000000000000000ULL, 0x3077B5CE685507F9ULL }, /* XSUM_XXH3_withSecret_testdata[1595] */ + { 1596, 0x0000000000000000ULL, 0x4C54EF7FD7168075ULL }, /* XSUM_XXH3_withSecret_testdata[1596] */ + { 1597, 0x0000000000000000ULL, 0x8558C82444B27772ULL }, /* XSUM_XXH3_withSecret_testdata[1597] */ + { 1598, 0x0000000000000000ULL, 0x93E87A5F083EE095ULL }, /* XSUM_XXH3_withSecret_testdata[1598] */ + { 1599, 0x0000000000000000ULL, 0x23CA33AF6972592DULL }, /* XSUM_XXH3_withSecret_testdata[1599] */ + { 1600, 0x0000000000000000ULL, 0x4CD10D6E0C2120FFULL }, /* XSUM_XXH3_withSecret_testdata[1600] */ + { 1601, 0x0000000000000000ULL, 0x9B922B5C8DAEB98FULL }, /* XSUM_XXH3_withSecret_testdata[1601] */ + { 1602, 0x0000000000000000ULL, 0x0018FD000AD87B0DULL }, /* XSUM_XXH3_withSecret_testdata[1602] */ + { 1603, 0x0000000000000000ULL, 0x3D5FD5FF17C26FB9ULL }, /* XSUM_XXH3_withSecret_testdata[1603] */ + { 1604, 0x0000000000000000ULL, 0x124D24DBBF79D2FBULL }, /* XSUM_XXH3_withSecret_testdata[1604] */ + { 1605, 0x0000000000000000ULL, 0xBBD097F42CCC1414ULL }, /* XSUM_XXH3_withSecret_testdata[1605] */ + { 1606, 0x0000000000000000ULL, 0x7A6DB19C8E6004F9ULL }, /* XSUM_XXH3_withSecret_testdata[1606] */ + { 1607, 0x0000000000000000ULL, 0x3E9DD3BFF6393C7FULL }, /* XSUM_XXH3_withSecret_testdata[1607] */ + { 1608, 0x0000000000000000ULL, 0xA1E2CEB3A64DD81BULL }, /* XSUM_XXH3_withSecret_testdata[1608] */ + { 1609, 0x0000000000000000ULL, 0x60D5E04AB38C48D6ULL }, /* XSUM_XXH3_withSecret_testdata[1609] */ + { 1610, 0x0000000000000000ULL, 0xAF05C39906A7D047ULL }, /* XSUM_XXH3_withSecret_testdata[1610] */ + { 1611, 0x0000000000000000ULL, 0x1539BA514ED93D01ULL }, /* XSUM_XXH3_withSecret_testdata[1611] */ + { 1612, 0x0000000000000000ULL, 0x1AED0B3FE9A4225AULL }, /* XSUM_XXH3_withSecret_testdata[1612] */ + { 1613, 0x0000000000000000ULL, 0x28AA65B421E1EA27ULL }, /* XSUM_XXH3_withSecret_testdata[1613] */ + { 1614, 0x0000000000000000ULL, 0x34E1C901C76FEEA4ULL }, /* XSUM_XXH3_withSecret_testdata[1614] */ + { 1615, 0x0000000000000000ULL, 0x4833BF58602325C5ULL }, /* XSUM_XXH3_withSecret_testdata[1615] */ + { 1616, 0x0000000000000000ULL, 0x8BBE98BDA7BC8B0EULL }, /* XSUM_XXH3_withSecret_testdata[1616] */ + { 1617, 0x0000000000000000ULL, 0x95E2FC99C7236B83ULL }, /* XSUM_XXH3_withSecret_testdata[1617] */ + { 1618, 0x0000000000000000ULL, 0x76E2F0B45C4F5599ULL }, /* XSUM_XXH3_withSecret_testdata[1618] */ + { 1619, 0x0000000000000000ULL, 0x0A06FF738EDD1822ULL }, /* XSUM_XXH3_withSecret_testdata[1619] */ + { 1620, 0x0000000000000000ULL, 0xEE02AF50A2EFA79CULL }, /* XSUM_XXH3_withSecret_testdata[1620] */ + { 1621, 0x0000000000000000ULL, 0xC7BF41F42FDF6DADULL }, /* XSUM_XXH3_withSecret_testdata[1621] */ + { 1622, 0x0000000000000000ULL, 0x36691EE554839BE8ULL }, /* XSUM_XXH3_withSecret_testdata[1622] */ + { 1623, 0x0000000000000000ULL, 0x1817F64ED6B4307AULL }, /* XSUM_XXH3_withSecret_testdata[1623] */ + { 1624, 0x0000000000000000ULL, 0xB0D50D4B178B6538ULL }, /* XSUM_XXH3_withSecret_testdata[1624] */ + { 1625, 0x0000000000000000ULL, 0x5D5F2EF8171826E3ULL }, /* XSUM_XXH3_withSecret_testdata[1625] */ + { 1626, 0x0000000000000000ULL, 0x545F8280EEC1AA1EULL }, /* XSUM_XXH3_withSecret_testdata[1626] */ + { 1627, 0x0000000000000000ULL, 0x3F6E2E4A9259428AULL }, /* XSUM_XXH3_withSecret_testdata[1627] */ + { 1628, 0x0000000000000000ULL, 0x5117B94804A0D3B5ULL }, /* XSUM_XXH3_withSecret_testdata[1628] */ + { 1629, 0x0000000000000000ULL, 0x5206F42D911152A1ULL }, /* XSUM_XXH3_withSecret_testdata[1629] */ + { 1630, 0x0000000000000000ULL, 0x6D53167B653D23A3ULL }, /* XSUM_XXH3_withSecret_testdata[1630] */ + { 1631, 0x0000000000000000ULL, 0x61CF1FC1538031F9ULL }, /* XSUM_XXH3_withSecret_testdata[1631] */ + { 1632, 0x0000000000000000ULL, 0xBC6E90CFA1602D65ULL }, /* XSUM_XXH3_withSecret_testdata[1632] */ + { 1633, 0x0000000000000000ULL, 0xB98632BEADED0CF2ULL }, /* XSUM_XXH3_withSecret_testdata[1633] */ + { 1634, 0x0000000000000000ULL, 0x0F251F190D9F95EFULL }, /* XSUM_XXH3_withSecret_testdata[1634] */ + { 1635, 0x0000000000000000ULL, 0x99F9CDF97192A511ULL }, /* XSUM_XXH3_withSecret_testdata[1635] */ + { 1636, 0x0000000000000000ULL, 0x30473897CAA4D5E4ULL }, /* XSUM_XXH3_withSecret_testdata[1636] */ + { 1637, 0x0000000000000000ULL, 0xE921D35B983CD4DCULL }, /* XSUM_XXH3_withSecret_testdata[1637] */ + { 1638, 0x0000000000000000ULL, 0x432796EED8D03163ULL }, /* XSUM_XXH3_withSecret_testdata[1638] */ + { 1639, 0x0000000000000000ULL, 0xED5FDDE2580CFA2DULL }, /* XSUM_XXH3_withSecret_testdata[1639] */ + { 1640, 0x0000000000000000ULL, 0x88B24FCACD224C33ULL }, /* XSUM_XXH3_withSecret_testdata[1640] */ + { 1641, 0x0000000000000000ULL, 0x7AD61154D515D039ULL }, /* XSUM_XXH3_withSecret_testdata[1641] */ + { 1642, 0x0000000000000000ULL, 0xBD453138BF7C74B4ULL }, /* XSUM_XXH3_withSecret_testdata[1642] */ + { 1643, 0x0000000000000000ULL, 0x9C56497963AAE6CAULL }, /* XSUM_XXH3_withSecret_testdata[1643] */ + { 1644, 0x0000000000000000ULL, 0x394A05C13E70EE7BULL }, /* XSUM_XXH3_withSecret_testdata[1644] */ + { 1645, 0x0000000000000000ULL, 0x64C3F15471DBCB81ULL }, /* XSUM_XXH3_withSecret_testdata[1645] */ + { 1646, 0x0000000000000000ULL, 0x0AE2FFAD636B5F1AULL }, /* XSUM_XXH3_withSecret_testdata[1646] */ + { 1647, 0x0000000000000000ULL, 0xE57655AC00FEF568ULL }, /* XSUM_XXH3_withSecret_testdata[1647] */ + { 1648, 0x0000000000000000ULL, 0xB2F7378B9D2E3678ULL }, /* XSUM_XXH3_withSecret_testdata[1648] */ + { 1649, 0x0000000000000000ULL, 0x4750A565227FF789ULL }, /* XSUM_XXH3_withSecret_testdata[1649] */ + { 1650, 0x0000000000000000ULL, 0xF29DF3F473111615ULL }, /* XSUM_XXH3_withSecret_testdata[1650] */ + { 1651, 0x0000000000000000ULL, 0x1849FA7D03F17040ULL }, /* XSUM_XXH3_withSecret_testdata[1651] */ + { 1652, 0x0000000000000000ULL, 0x6DAC844A0DE17D75ULL }, /* XSUM_XXH3_withSecret_testdata[1652] */ + { 1653, 0x0000000000000000ULL, 0xE6E4CAD7D1E68B8BULL }, /* XSUM_XXH3_withSecret_testdata[1653] */ + { 1654, 0x0000000000000000ULL, 0x3E9D32F021CDD06EULL }, /* XSUM_XXH3_withSecret_testdata[1654] */ + { 1655, 0x0000000000000000ULL, 0xAE40EADE5A295701ULL }, /* XSUM_XXH3_withSecret_testdata[1655] */ + { 1656, 0x0000000000000000ULL, 0x0DFAFD784832F12FULL }, /* XSUM_XXH3_withSecret_testdata[1656] */ + { 1657, 0x0000000000000000ULL, 0xB53A09FE4BA3595DULL }, /* XSUM_XXH3_withSecret_testdata[1657] */ + { 1658, 0x0000000000000000ULL, 0x35D3EFCD7A75BE8CULL }, /* XSUM_XXH3_withSecret_testdata[1658] */ + { 1659, 0x0000000000000000ULL, 0x5FCDD6ACFE98BB96ULL }, /* XSUM_XXH3_withSecret_testdata[1659] */ + { 1660, 0x0000000000000000ULL, 0xE3552314056A2927ULL }, /* XSUM_XXH3_withSecret_testdata[1660] */ + { 1661, 0x0000000000000000ULL, 0x821AAEA79BDC7C91ULL }, /* XSUM_XXH3_withSecret_testdata[1661] */ + { 1662, 0x0000000000000000ULL, 0xD165076A82DC0232ULL }, /* XSUM_XXH3_withSecret_testdata[1662] */ + { 1663, 0x0000000000000000ULL, 0x0E65012F1826C7EBULL }, /* XSUM_XXH3_withSecret_testdata[1663] */ + { 1664, 0x0000000000000000ULL, 0x6A6E3428C9890B5AULL }, /* XSUM_XXH3_withSecret_testdata[1664] */ + { 1665, 0x0000000000000000ULL, 0x9ED6B48A75E0CF91ULL }, /* XSUM_XXH3_withSecret_testdata[1665] */ + { 1666, 0x0000000000000000ULL, 0xF54699B3DAF2CD27ULL }, /* XSUM_XXH3_withSecret_testdata[1666] */ + { 1667, 0x0000000000000000ULL, 0x6215FAF5576D64C6ULL }, /* XSUM_XXH3_withSecret_testdata[1667] */ + { 1668, 0x0000000000000000ULL, 0x1F8EDBAC4C8F5E72ULL }, /* XSUM_XXH3_withSecret_testdata[1668] */ + { 1669, 0x0000000000000000ULL, 0x285606E5D557A904ULL }, /* XSUM_XXH3_withSecret_testdata[1669] */ + { 1670, 0x0000000000000000ULL, 0xE03302BF7677FC2AULL }, /* XSUM_XXH3_withSecret_testdata[1670] */ + { 1671, 0x0000000000000000ULL, 0x1018E6584D733993ULL }, /* XSUM_XXH3_withSecret_testdata[1671] */ + { 1672, 0x0000000000000000ULL, 0x9FC949445C23D3FDULL }, /* XSUM_XXH3_withSecret_testdata[1672] */ + { 1673, 0x0000000000000000ULL, 0x98D13467937AE9B5ULL }, /* XSUM_XXH3_withSecret_testdata[1673] */ + { 1674, 0x0000000000000000ULL, 0x021FC4717A1A5C29ULL }, /* XSUM_XXH3_withSecret_testdata[1674] */ + { 1675, 0x0000000000000000ULL, 0xEC9DD872987A7305ULL }, /* XSUM_XXH3_withSecret_testdata[1675] */ + { 1676, 0x0000000000000000ULL, 0x538C7C9BFF65F8DFULL }, /* XSUM_XXH3_withSecret_testdata[1676] */ + { 1677, 0x0000000000000000ULL, 0x16098A7AEDE26A97ULL }, /* XSUM_XXH3_withSecret_testdata[1677] */ + { 1678, 0x0000000000000000ULL, 0x4788AA014F8A7CE5ULL }, /* XSUM_XXH3_withSecret_testdata[1678] */ + { 1679, 0x0000000000000000ULL, 0xB60E9D831D9A523AULL }, /* XSUM_XXH3_withSecret_testdata[1679] */ + { 1680, 0x0000000000000000ULL, 0xA69CA251D7BAB81DULL }, /* XSUM_XXH3_withSecret_testdata[1680] */ + { 1681, 0x0000000000000000ULL, 0x0A5C49F10F98DAB2ULL }, /* XSUM_XXH3_withSecret_testdata[1681] */ + { 1682, 0x0000000000000000ULL, 0xBF8AD466578B929CULL }, /* XSUM_XXH3_withSecret_testdata[1682] */ + { 1683, 0x0000000000000000ULL, 0xA3B49891EE338F11ULL }, /* XSUM_XXH3_withSecret_testdata[1683] */ + { 1684, 0x0000000000000000ULL, 0x2B767F09C4073B50ULL }, /* XSUM_XXH3_withSecret_testdata[1684] */ + { 1685, 0x0000000000000000ULL, 0xE44207E3D4A0F1A8ULL }, /* XSUM_XXH3_withSecret_testdata[1685] */ + { 1686, 0x0000000000000000ULL, 0xB2963A7EF9647A12ULL }, /* XSUM_XXH3_withSecret_testdata[1686] */ + { 1687, 0x0000000000000000ULL, 0x7B5D91DF290769D6ULL }, /* XSUM_XXH3_withSecret_testdata[1687] */ + { 1688, 0x0000000000000000ULL, 0x5A4F1BCF6ED04EE1ULL }, /* XSUM_XXH3_withSecret_testdata[1688] */ + { 1689, 0x0000000000000000ULL, 0xD98304DC00E59A9AULL }, /* XSUM_XXH3_withSecret_testdata[1689] */ + { 1690, 0x0000000000000000ULL, 0x70E03BCE13B9D2F7ULL }, /* XSUM_XXH3_withSecret_testdata[1690] */ + { 1691, 0x0000000000000000ULL, 0x9778670DA0C866DEULL }, /* XSUM_XXH3_withSecret_testdata[1691] */ + { 1692, 0x0000000000000000ULL, 0x76DDF8E2E304FE1BULL }, /* XSUM_XXH3_withSecret_testdata[1692] */ + { 1693, 0x0000000000000000ULL, 0xA93C2CEE9AAC9C51ULL }, /* XSUM_XXH3_withSecret_testdata[1693] */ + { 1694, 0x0000000000000000ULL, 0xA191D1C7778C72B8ULL }, /* XSUM_XXH3_withSecret_testdata[1694] */ + { 1695, 0x0000000000000000ULL, 0x9286563D24E83CF3ULL }, /* XSUM_XXH3_withSecret_testdata[1695] */ + { 1696, 0x0000000000000000ULL, 0x30CB745D74507075ULL }, /* XSUM_XXH3_withSecret_testdata[1696] */ + { 1697, 0x0000000000000000ULL, 0x1AD39F0EB4A14D62ULL }, /* XSUM_XXH3_withSecret_testdata[1697] */ + { 1698, 0x0000000000000000ULL, 0x75E51A9F37A4DE9BULL }, /* XSUM_XXH3_withSecret_testdata[1698] */ + { 1699, 0x0000000000000000ULL, 0xAFAE965CF499655AULL }, /* XSUM_XXH3_withSecret_testdata[1699] */ + { 1700, 0x0000000000000000ULL, 0xA2C74FD12C5B9658ULL }, /* XSUM_XXH3_withSecret_testdata[1700] */ + { 1701, 0x0000000000000000ULL, 0x03D678483CBA4A68ULL }, /* XSUM_XXH3_withSecret_testdata[1701] */ + { 1702, 0x0000000000000000ULL, 0xA10387282F95641DULL }, /* XSUM_XXH3_withSecret_testdata[1702] */ + { 1703, 0x0000000000000000ULL, 0x2F97A3C5F8B955FEULL }, /* XSUM_XXH3_withSecret_testdata[1703] */ + { 1704, 0x0000000000000000ULL, 0x9F0ADFFC22A97C8AULL }, /* XSUM_XXH3_withSecret_testdata[1704] */ + { 1705, 0x0000000000000000ULL, 0x1A00C96BC09EDDECULL }, /* XSUM_XXH3_withSecret_testdata[1705] */ + { 1706, 0x0000000000000000ULL, 0x0AEEA8B351F7C655ULL }, /* XSUM_XXH3_withSecret_testdata[1706] */ + { 1707, 0x0000000000000000ULL, 0x5146CA83E1B94E12ULL }, /* XSUM_XXH3_withSecret_testdata[1707] */ + { 1708, 0x0000000000000000ULL, 0x5BBA3ED7929E5FA5ULL }, /* XSUM_XXH3_withSecret_testdata[1708] */ + { 1709, 0x0000000000000000ULL, 0x3963D6E7C2185C10ULL }, /* XSUM_XXH3_withSecret_testdata[1709] */ + { 1710, 0x0000000000000000ULL, 0x5A4C5E91EE8FA95BULL }, /* XSUM_XXH3_withSecret_testdata[1710] */ + { 1711, 0x0000000000000000ULL, 0x9B8FAB3B30D5895EULL }, /* XSUM_XXH3_withSecret_testdata[1711] */ + { 1712, 0x0000000000000000ULL, 0xE56728B6588CC4B1ULL }, /* XSUM_XXH3_withSecret_testdata[1712] */ + { 1713, 0x0000000000000000ULL, 0xFB4E881A3E75AF1EULL }, /* XSUM_XXH3_withSecret_testdata[1713] */ + { 1714, 0x0000000000000000ULL, 0xF57DFDF5902E14CDULL }, /* XSUM_XXH3_withSecret_testdata[1714] */ + { 1715, 0x0000000000000000ULL, 0x82686F6DEE271950ULL }, /* XSUM_XXH3_withSecret_testdata[1715] */ + { 1716, 0x0000000000000000ULL, 0x5CE3E44A78BCDC66ULL }, /* XSUM_XXH3_withSecret_testdata[1716] */ + { 1717, 0x0000000000000000ULL, 0x27AC6414C2645329ULL }, /* XSUM_XXH3_withSecret_testdata[1717] */ + { 1718, 0x0000000000000000ULL, 0x54C7D888E4BFE81AULL }, /* XSUM_XXH3_withSecret_testdata[1718] */ + { 1719, 0x0000000000000000ULL, 0x38BAE8C8F5FF30C4ULL }, /* XSUM_XXH3_withSecret_testdata[1719] */ + { 1720, 0x0000000000000000ULL, 0xB53E60907F8390D2ULL }, /* XSUM_XXH3_withSecret_testdata[1720] */ + { 1721, 0x0000000000000000ULL, 0x932891E5ECFFC1E4ULL }, /* XSUM_XXH3_withSecret_testdata[1721] */ + { 1722, 0x0000000000000000ULL, 0xCBF716940E4CE9CDULL }, /* XSUM_XXH3_withSecret_testdata[1722] */ + { 1723, 0x0000000000000000ULL, 0xA3812CF5FC908675ULL }, /* XSUM_XXH3_withSecret_testdata[1723] */ + { 1724, 0x0000000000000000ULL, 0x196ED6DDB482776DULL }, /* XSUM_XXH3_withSecret_testdata[1724] */ + { 1725, 0x0000000000000000ULL, 0x9B70D5D56D68BCDAULL }, /* XSUM_XXH3_withSecret_testdata[1725] */ + { 1726, 0x0000000000000000ULL, 0x89D41A820982DE7AULL }, /* XSUM_XXH3_withSecret_testdata[1726] */ + { 1727, 0x0000000000000000ULL, 0x670B2B5F74D6B39DULL }, /* XSUM_XXH3_withSecret_testdata[1727] */ + { 1728, 0x0000000000000000ULL, 0x4BF73CCEFD067D44ULL }, /* XSUM_XXH3_withSecret_testdata[1728] */ + { 1729, 0x0000000000000000ULL, 0xF9E7E25E5F226055ULL }, /* XSUM_XXH3_withSecret_testdata[1729] */ + { 1730, 0x0000000000000000ULL, 0x6F625819AB986B5FULL }, /* XSUM_XXH3_withSecret_testdata[1730] */ + { 1731, 0x0000000000000000ULL, 0xDD0CA453D1D30B0EULL }, /* XSUM_XXH3_withSecret_testdata[1731] */ + { 1732, 0x0000000000000000ULL, 0x61F29C66BFF1DC60ULL }, /* XSUM_XXH3_withSecret_testdata[1732] */ + { 1733, 0x0000000000000000ULL, 0x79C26E766BF9C59CULL }, /* XSUM_XXH3_withSecret_testdata[1733] */ + { 1734, 0x0000000000000000ULL, 0x7EC9B47E0552E6E0ULL }, /* XSUM_XXH3_withSecret_testdata[1734] */ + { 1735, 0x0000000000000000ULL, 0xC6010C35C8CB4BCFULL }, /* XSUM_XXH3_withSecret_testdata[1735] */ + { 1736, 0x0000000000000000ULL, 0xE99F407164825C89ULL }, /* XSUM_XXH3_withSecret_testdata[1736] */ + { 1737, 0x0000000000000000ULL, 0x74523C6A58C7C381ULL }, /* XSUM_XXH3_withSecret_testdata[1737] */ + { 1738, 0x0000000000000000ULL, 0x981CB1A9260139EFULL }, /* XSUM_XXH3_withSecret_testdata[1738] */ + { 1739, 0x0000000000000000ULL, 0xA7472311411B7F44ULL }, /* XSUM_XXH3_withSecret_testdata[1739] */ + { 1740, 0x0000000000000000ULL, 0x7772D0A69EA6B5C6ULL }, /* XSUM_XXH3_withSecret_testdata[1740] */ + { 1741, 0x0000000000000000ULL, 0xA0910DEDF04A7D99ULL }, /* XSUM_XXH3_withSecret_testdata[1741] */ + { 1742, 0x0000000000000000ULL, 0xC49241AE38755E89ULL }, /* XSUM_XXH3_withSecret_testdata[1742] */ + { 1743, 0x0000000000000000ULL, 0xB5AB1F244DA833DDULL }, /* XSUM_XXH3_withSecret_testdata[1743] */ + { 1744, 0x0000000000000000ULL, 0x567B28C34B63D694ULL }, /* XSUM_XXH3_withSecret_testdata[1744] */ + { 1745, 0x0000000000000000ULL, 0x235CBE03E9E1E7F2ULL }, /* XSUM_XXH3_withSecret_testdata[1745] */ + { 1746, 0x0000000000000000ULL, 0x76B3592B13BE309AULL }, /* XSUM_XXH3_withSecret_testdata[1746] */ + { 1747, 0x0000000000000000ULL, 0x1529FE740A3AC230ULL }, /* XSUM_XXH3_withSecret_testdata[1747] */ + { 1748, 0x0000000000000000ULL, 0xF5097CC1AAA76BD7ULL }, /* XSUM_XXH3_withSecret_testdata[1748] */ + { 1749, 0x0000000000000000ULL, 0xD92584C1C9760C59ULL }, /* XSUM_XXH3_withSecret_testdata[1749] */ + { 1750, 0x0000000000000000ULL, 0x35DFE8BF25B84863ULL }, /* XSUM_XXH3_withSecret_testdata[1750] */ + { 1751, 0x0000000000000000ULL, 0x36158F70ACE15DD8ULL }, /* XSUM_XXH3_withSecret_testdata[1751] */ + { 1752, 0x0000000000000000ULL, 0xBA23ACC7B52C06D0ULL }, /* XSUM_XXH3_withSecret_testdata[1752] */ + { 1753, 0x0000000000000000ULL, 0x3307FFFC9BD358DFULL }, /* XSUM_XXH3_withSecret_testdata[1753] */ + { 1754, 0x0000000000000000ULL, 0x979E3BBBA5E77CFEULL }, /* XSUM_XXH3_withSecret_testdata[1754] */ + { 1755, 0x0000000000000000ULL, 0x36DE102859B0B962ULL }, /* XSUM_XXH3_withSecret_testdata[1755] */ + { 1756, 0x0000000000000000ULL, 0x71BF2E2A55C5E814ULL }, /* XSUM_XXH3_withSecret_testdata[1756] */ + { 1757, 0x0000000000000000ULL, 0xEBDA4FB991779C55ULL }, /* XSUM_XXH3_withSecret_testdata[1757] */ + { 1758, 0x0000000000000000ULL, 0x1728848CF44E43A3ULL }, /* XSUM_XXH3_withSecret_testdata[1758] */ + { 1759, 0x0000000000000000ULL, 0x593BB4D41BAFE16BULL }, /* XSUM_XXH3_withSecret_testdata[1759] */ + { 1760, 0x0000000000000000ULL, 0x284CF892AE408A70ULL }, /* XSUM_XXH3_withSecret_testdata[1760] */ + { 1761, 0x0000000000000000ULL, 0xEC09ABCEB857D071ULL }, /* XSUM_XXH3_withSecret_testdata[1761] */ + { 1762, 0x0000000000000000ULL, 0xB871997236BF5AA8ULL }, /* XSUM_XXH3_withSecret_testdata[1762] */ + { 1763, 0x0000000000000000ULL, 0x744E7DF18A4D7FA0ULL }, /* XSUM_XXH3_withSecret_testdata[1763] */ + { 1764, 0x0000000000000000ULL, 0x2FE3A05D5D0E7D65ULL }, /* XSUM_XXH3_withSecret_testdata[1764] */ + { 1765, 0x0000000000000000ULL, 0x9EA83E964E3E0AEDULL }, /* XSUM_XXH3_withSecret_testdata[1765] */ + { 1766, 0x0000000000000000ULL, 0xBA912716E055FB61ULL }, /* XSUM_XXH3_withSecret_testdata[1766] */ + { 1767, 0x0000000000000000ULL, 0x2CBF229C008619AAULL }, /* XSUM_XXH3_withSecret_testdata[1767] */ + { 1768, 0x0000000000000000ULL, 0xAC0FABF720119D5DULL }, /* XSUM_XXH3_withSecret_testdata[1768] */ + { 1769, 0x0000000000000000ULL, 0xCD9FEAF318CF59B0ULL }, /* XSUM_XXH3_withSecret_testdata[1769] */ + { 1770, 0x0000000000000000ULL, 0x3362CC1D4116F147ULL }, /* XSUM_XXH3_withSecret_testdata[1770] */ + { 1771, 0x0000000000000000ULL, 0x14AD4884FDCE337CULL }, /* XSUM_XXH3_withSecret_testdata[1771] */ + { 1772, 0x0000000000000000ULL, 0x14D399478B7B428AULL }, /* XSUM_XXH3_withSecret_testdata[1772] */ + { 1773, 0x0000000000000000ULL, 0xB11C4FE43B9C7293ULL }, /* XSUM_XXH3_withSecret_testdata[1773] */ + { 1774, 0x0000000000000000ULL, 0x7AD9F263024DA989ULL }, /* XSUM_XXH3_withSecret_testdata[1774] */ + { 1775, 0x0000000000000000ULL, 0xC51C01AC58688B36ULL }, /* XSUM_XXH3_withSecret_testdata[1775] */ + { 1776, 0x0000000000000000ULL, 0xC440BB91EA4815DDULL }, /* XSUM_XXH3_withSecret_testdata[1776] */ + { 1777, 0x0000000000000000ULL, 0x5BF91B033E1C28DBULL }, /* XSUM_XXH3_withSecret_testdata[1777] */ + { 1778, 0x0000000000000000ULL, 0x3B11CE47991EEFD7ULL }, /* XSUM_XXH3_withSecret_testdata[1778] */ + { 1779, 0x0000000000000000ULL, 0x7C15AC70C1714DC2ULL }, /* XSUM_XXH3_withSecret_testdata[1779] */ + { 1780, 0x0000000000000000ULL, 0x82479F182059F91FULL }, /* XSUM_XXH3_withSecret_testdata[1780] */ + { 1781, 0x0000000000000000ULL, 0x7B9678B2C21965ECULL }, /* XSUM_XXH3_withSecret_testdata[1781] */ + { 1782, 0x0000000000000000ULL, 0x216FE3AF81D0FCBDULL }, /* XSUM_XXH3_withSecret_testdata[1782] */ + { 1783, 0x0000000000000000ULL, 0xA207CCEE1D8AD5D2ULL }, /* XSUM_XXH3_withSecret_testdata[1783] */ + { 1784, 0x0000000000000000ULL, 0x1EABEDCDD5F67A55ULL }, /* XSUM_XXH3_withSecret_testdata[1784] */ + { 1785, 0x0000000000000000ULL, 0xE3AA024B094F9D33ULL }, /* XSUM_XXH3_withSecret_testdata[1785] */ + { 1786, 0x0000000000000000ULL, 0x0617282894D26D61ULL }, /* XSUM_XXH3_withSecret_testdata[1786] */ + { 1787, 0x0000000000000000ULL, 0xDC618587DDA8FC5FULL }, /* XSUM_XXH3_withSecret_testdata[1787] */ + { 1788, 0x0000000000000000ULL, 0xC851676837A79E40ULL }, /* XSUM_XXH3_withSecret_testdata[1788] */ + { 1789, 0x0000000000000000ULL, 0x91ED14D62BBFBCEDULL }, /* XSUM_XXH3_withSecret_testdata[1789] */ + { 1790, 0x0000000000000000ULL, 0x8D4F8D0602285AB2ULL }, /* XSUM_XXH3_withSecret_testdata[1790] */ + { 1791, 0x0000000000000000ULL, 0xCF44DFE6C083C272ULL }, /* XSUM_XXH3_withSecret_testdata[1791] */ + { 1792, 0x0000000000000000ULL, 0x47DDC481F1DB095FULL }, /* XSUM_XXH3_withSecret_testdata[1792] */ + { 1793, 0x0000000000000000ULL, 0xA10AE242C3A730EBULL }, /* XSUM_XXH3_withSecret_testdata[1793] */ + { 1794, 0x0000000000000000ULL, 0xDB1E7B5DC72BDEC4ULL }, /* XSUM_XXH3_withSecret_testdata[1794] */ + { 1795, 0x0000000000000000ULL, 0x988258BB7135C65BULL }, /* XSUM_XXH3_withSecret_testdata[1795] */ + { 1796, 0x0000000000000000ULL, 0xB39D76C082AB8837ULL }, /* XSUM_XXH3_withSecret_testdata[1796] */ + { 1797, 0x0000000000000000ULL, 0xE4606B36C8AC7379ULL }, /* XSUM_XXH3_withSecret_testdata[1797] */ + { 1798, 0x0000000000000000ULL, 0x9B52580AAA9CDC0BULL }, /* XSUM_XXH3_withSecret_testdata[1798] */ + { 1799, 0x0000000000000000ULL, 0xC961FA5351789300ULL }, /* XSUM_XXH3_withSecret_testdata[1799] */ + { 1800, 0x0000000000000000ULL, 0xE7B46AB47D510BBBULL }, /* XSUM_XXH3_withSecret_testdata[1800] */ + { 1801, 0x0000000000000000ULL, 0x4B6A8F15C17973F6ULL }, /* XSUM_XXH3_withSecret_testdata[1801] */ + { 1802, 0x0000000000000000ULL, 0xEBE353EF65A651F6ULL }, /* XSUM_XXH3_withSecret_testdata[1802] */ + { 1803, 0x0000000000000000ULL, 0x0FB0CAB2A8AD54C1ULL }, /* XSUM_XXH3_withSecret_testdata[1803] */ + { 1804, 0x0000000000000000ULL, 0xB0FC1F6DDD75AD6DULL }, /* XSUM_XXH3_withSecret_testdata[1804] */ + { 1805, 0x0000000000000000ULL, 0x9E6286E5DFBAE99EULL }, /* XSUM_XXH3_withSecret_testdata[1805] */ + { 1806, 0x0000000000000000ULL, 0x3DF343EEBA68959AULL }, /* XSUM_XXH3_withSecret_testdata[1806] */ + { 1807, 0x0000000000000000ULL, 0x6939F13CBCAEC0F6ULL }, /* XSUM_XXH3_withSecret_testdata[1807] */ + { 1808, 0x0000000000000000ULL, 0x79806F82290A05D3ULL }, /* XSUM_XXH3_withSecret_testdata[1808] */ + { 1809, 0x0000000000000000ULL, 0xF57C2DB3C71D1EC0ULL }, /* XSUM_XXH3_withSecret_testdata[1809] */ + { 1810, 0x0000000000000000ULL, 0x1A05E375DD295438ULL }, /* XSUM_XXH3_withSecret_testdata[1810] */ + { 1811, 0x0000000000000000ULL, 0xA74DBBE413B4E89BULL }, /* XSUM_XXH3_withSecret_testdata[1811] */ + { 1812, 0x0000000000000000ULL, 0x971B8DD67515E5E0ULL }, /* XSUM_XXH3_withSecret_testdata[1812] */ + { 1813, 0x0000000000000000ULL, 0x6610D45C74760EC4ULL }, /* XSUM_XXH3_withSecret_testdata[1813] */ + { 1814, 0x0000000000000000ULL, 0xA593A38377386C31ULL }, /* XSUM_XXH3_withSecret_testdata[1814] */ + { 1815, 0x0000000000000000ULL, 0xA9B45FF3A9192DDBULL }, /* XSUM_XXH3_withSecret_testdata[1815] */ + { 1816, 0x0000000000000000ULL, 0xCCAFB051380D1E98ULL }, /* XSUM_XXH3_withSecret_testdata[1816] */ + { 1817, 0x0000000000000000ULL, 0x203EE0860BF29DF7ULL }, /* XSUM_XXH3_withSecret_testdata[1817] */ + { 1818, 0x0000000000000000ULL, 0xA76E0EBB41E17FD9ULL }, /* XSUM_XXH3_withSecret_testdata[1818] */ + { 1819, 0x0000000000000000ULL, 0x6A159A6052A2166DULL }, /* XSUM_XXH3_withSecret_testdata[1819] */ + { 1820, 0x0000000000000000ULL, 0x63A3361FD6F4C1A2ULL }, /* XSUM_XXH3_withSecret_testdata[1820] */ + { 1821, 0x0000000000000000ULL, 0xC93683A587826A2CULL }, /* XSUM_XXH3_withSecret_testdata[1821] */ + { 1822, 0x0000000000000000ULL, 0x02D5148F65DAF251ULL }, /* XSUM_XXH3_withSecret_testdata[1822] */ + { 1823, 0x0000000000000000ULL, 0x25E1162FCFA75CA5ULL }, /* XSUM_XXH3_withSecret_testdata[1823] */ + { 1824, 0x0000000000000000ULL, 0xBD5484CE7E50F07DULL }, /* XSUM_XXH3_withSecret_testdata[1824] */ + { 1825, 0x0000000000000000ULL, 0x6EB6067839498B06ULL }, /* XSUM_XXH3_withSecret_testdata[1825] */ + { 1826, 0x0000000000000000ULL, 0x52F20341A5DAD1E3ULL }, /* XSUM_XXH3_withSecret_testdata[1826] */ + { 1827, 0x0000000000000000ULL, 0x50F562657386533FULL }, /* XSUM_XXH3_withSecret_testdata[1827] */ + { 1828, 0x0000000000000000ULL, 0x1F10472FC2F01C96ULL }, /* XSUM_XXH3_withSecret_testdata[1828] */ + { 1829, 0x0000000000000000ULL, 0x8C474EF701FB3909ULL }, /* XSUM_XXH3_withSecret_testdata[1829] */ + { 1830, 0x0000000000000000ULL, 0x54BA08B1FA0D590AULL }, /* XSUM_XXH3_withSecret_testdata[1830] */ + { 1831, 0x0000000000000000ULL, 0x652E59502189E111ULL }, /* XSUM_XXH3_withSecret_testdata[1831] */ + { 1832, 0x0000000000000000ULL, 0x6877E92A32E2B991ULL }, /* XSUM_XXH3_withSecret_testdata[1832] */ + { 1833, 0x0000000000000000ULL, 0x9C6831D78A76126DULL }, /* XSUM_XXH3_withSecret_testdata[1833] */ + { 1834, 0x0000000000000000ULL, 0x26A22D43A7AE2EF6ULL }, /* XSUM_XXH3_withSecret_testdata[1834] */ + { 1835, 0x0000000000000000ULL, 0x9DD7F5B61B8A8816ULL }, /* XSUM_XXH3_withSecret_testdata[1835] */ + { 1836, 0x0000000000000000ULL, 0x4A01F6B43A1F053CULL }, /* XSUM_XXH3_withSecret_testdata[1836] */ + { 1837, 0x0000000000000000ULL, 0xC7ED38842F51E59AULL }, /* XSUM_XXH3_withSecret_testdata[1837] */ + { 1838, 0x0000000000000000ULL, 0x8B476BBB4ABE5430ULL }, /* XSUM_XXH3_withSecret_testdata[1838] */ + { 1839, 0x0000000000000000ULL, 0x5FB0DFE505A82222ULL }, /* XSUM_XXH3_withSecret_testdata[1839] */ + { 1840, 0x0000000000000000ULL, 0x81671324076187EEULL }, /* XSUM_XXH3_withSecret_testdata[1840] */ + { 1841, 0x0000000000000000ULL, 0xD656A0AE18DB6402ULL }, /* XSUM_XXH3_withSecret_testdata[1841] */ + { 1842, 0x0000000000000000ULL, 0x9356D1863E69A0DCULL }, /* XSUM_XXH3_withSecret_testdata[1842] */ + { 1843, 0x0000000000000000ULL, 0x46269A68E2273394ULL }, /* XSUM_XXH3_withSecret_testdata[1843] */ + { 1844, 0x0000000000000000ULL, 0x8F740F53C7BA8F35ULL }, /* XSUM_XXH3_withSecret_testdata[1844] */ + { 1845, 0x0000000000000000ULL, 0xB05CFDCA7BA4531FULL }, /* XSUM_XXH3_withSecret_testdata[1845] */ + { 1846, 0x0000000000000000ULL, 0x469325140F78A2DFULL }, /* XSUM_XXH3_withSecret_testdata[1846] */ + { 1847, 0x0000000000000000ULL, 0x087ECF42F55D5E0DULL }, /* XSUM_XXH3_withSecret_testdata[1847] */ + { 1848, 0x0000000000000000ULL, 0xDE3EE4E0EAC16ED4ULL }, /* XSUM_XXH3_withSecret_testdata[1848] */ + { 1849, 0x0000000000000000ULL, 0x6FF2BB185054F40EULL }, /* XSUM_XXH3_withSecret_testdata[1849] */ + { 1850, 0x0000000000000000ULL, 0xED2CF3EB5E728E1AULL }, /* XSUM_XXH3_withSecret_testdata[1850] */ + { 1851, 0x0000000000000000ULL, 0xA7FAAD240ED4D3BDULL }, /* XSUM_XXH3_withSecret_testdata[1851] */ + { 1852, 0x0000000000000000ULL, 0x843FFFB94BA6E942ULL }, /* XSUM_XXH3_withSecret_testdata[1852] */ + { 1853, 0x0000000000000000ULL, 0xF3BAF1752618BB5BULL }, /* XSUM_XXH3_withSecret_testdata[1853] */ + { 1854, 0x0000000000000000ULL, 0xE78D42311004927CULL }, /* XSUM_XXH3_withSecret_testdata[1854] */ + { 1855, 0x0000000000000000ULL, 0x91EEBD8F732E178EULL }, /* XSUM_XXH3_withSecret_testdata[1855] */ + { 1856, 0x0000000000000000ULL, 0xC99C980B41019B22ULL }, /* XSUM_XXH3_withSecret_testdata[1856] */ + { 1857, 0x0000000000000000ULL, 0x16C6E879C8E235BEULL }, /* XSUM_XXH3_withSecret_testdata[1857] */ + { 1858, 0x0000000000000000ULL, 0x0CECC7F3AB9C1F40ULL }, /* XSUM_XXH3_withSecret_testdata[1858] */ + { 1859, 0x0000000000000000ULL, 0xFA8D2FD6D59DC280ULL }, /* XSUM_XXH3_withSecret_testdata[1859] */ + { 1860, 0x0000000000000000ULL, 0x8562961C091342CEULL }, /* XSUM_XXH3_withSecret_testdata[1860] */ + { 1861, 0x0000000000000000ULL, 0x62F62194E584CAF7ULL }, /* XSUM_XXH3_withSecret_testdata[1861] */ + { 1862, 0x0000000000000000ULL, 0x4E92BB3A8BFEA159ULL }, /* XSUM_XXH3_withSecret_testdata[1862] */ + { 1863, 0x0000000000000000ULL, 0x38365B5F64F64A98ULL }, /* XSUM_XXH3_withSecret_testdata[1863] */ + { 1864, 0x0000000000000000ULL, 0xD147B36243C5C323ULL }, /* XSUM_XXH3_withSecret_testdata[1864] */ + { 1865, 0x0000000000000000ULL, 0xE9ACE440CDB60441ULL }, /* XSUM_XXH3_withSecret_testdata[1865] */ + { 1866, 0x0000000000000000ULL, 0x0A57F63533193ECAULL }, /* XSUM_XXH3_withSecret_testdata[1866] */ + { 1867, 0x0000000000000000ULL, 0xE571EDBF602C3DA8ULL }, /* XSUM_XXH3_withSecret_testdata[1867] */ + { 1868, 0x0000000000000000ULL, 0x0E9AAF89C2E43AB3ULL }, /* XSUM_XXH3_withSecret_testdata[1868] */ + { 1869, 0x0000000000000000ULL, 0xBBEDAE93C8E71634ULL }, /* XSUM_XXH3_withSecret_testdata[1869] */ + { 1870, 0x0000000000000000ULL, 0x893CBC1E009A0A03ULL }, /* XSUM_XXH3_withSecret_testdata[1870] */ + { 1871, 0x0000000000000000ULL, 0xC6B24114B6F6E938ULL }, /* XSUM_XXH3_withSecret_testdata[1871] */ + { 1872, 0x0000000000000000ULL, 0xEC60D1DD4E0B72EFULL }, /* XSUM_XXH3_withSecret_testdata[1872] */ + { 1873, 0x0000000000000000ULL, 0xEE180979A8839059ULL }, /* XSUM_XXH3_withSecret_testdata[1873] */ + { 1874, 0x0000000000000000ULL, 0xE79FC5C968E39F05ULL }, /* XSUM_XXH3_withSecret_testdata[1874] */ + { 1875, 0x0000000000000000ULL, 0xD877733C14DE5624ULL }, /* XSUM_XXH3_withSecret_testdata[1875] */ + { 1876, 0x0000000000000000ULL, 0xDC64CF1E1B3C621BULL }, /* XSUM_XXH3_withSecret_testdata[1876] */ + { 1877, 0x0000000000000000ULL, 0xDE1EEDB9FEDF1B50ULL }, /* XSUM_XXH3_withSecret_testdata[1877] */ + { 1878, 0x0000000000000000ULL, 0x5917DB36A8A1EC86ULL }, /* XSUM_XXH3_withSecret_testdata[1878] */ + { 1879, 0x0000000000000000ULL, 0x31DCF9B84864E732ULL }, /* XSUM_XXH3_withSecret_testdata[1879] */ + { 1880, 0x0000000000000000ULL, 0xA270D68EB626F81FULL }, /* XSUM_XXH3_withSecret_testdata[1880] */ + { 1881, 0x0000000000000000ULL, 0x448CA992B405B478ULL }, /* XSUM_XXH3_withSecret_testdata[1881] */ + { 1882, 0x0000000000000000ULL, 0xC687F7288F59642FULL }, /* XSUM_XXH3_withSecret_testdata[1882] */ + { 1883, 0x0000000000000000ULL, 0x09904DB3F3073429ULL }, /* XSUM_XXH3_withSecret_testdata[1883] */ + { 1884, 0x0000000000000000ULL, 0xBCFDF2A3E0EB5764ULL }, /* XSUM_XXH3_withSecret_testdata[1884] */ + { 1885, 0x0000000000000000ULL, 0xE8AC4995374E498AULL }, /* XSUM_XXH3_withSecret_testdata[1885] */ + { 1886, 0x0000000000000000ULL, 0x597CADBA4B5B8E18ULL }, /* XSUM_XXH3_withSecret_testdata[1886] */ + { 1887, 0x0000000000000000ULL, 0x71B4E40C69AD0E85ULL }, /* XSUM_XXH3_withSecret_testdata[1887] */ + { 1888, 0x0000000000000000ULL, 0x6BF88D864523E374ULL }, /* XSUM_XXH3_withSecret_testdata[1888] */ + { 1889, 0x0000000000000000ULL, 0x9CA99D485C9FE5A9ULL }, /* XSUM_XXH3_withSecret_testdata[1889] */ + { 1890, 0x0000000000000000ULL, 0x724E950BEE61D453ULL }, /* XSUM_XXH3_withSecret_testdata[1890] */ + { 1891, 0x0000000000000000ULL, 0x32790EA97BB99A4AULL }, /* XSUM_XXH3_withSecret_testdata[1891] */ + { 1892, 0x0000000000000000ULL, 0x653B234CAE064A5FULL }, /* XSUM_XXH3_withSecret_testdata[1892] */ + { 1893, 0x0000000000000000ULL, 0x4872009907840C63ULL }, /* XSUM_XXH3_withSecret_testdata[1893] */ + { 1894, 0x0000000000000000ULL, 0x6243D1800D7D75D0ULL }, /* XSUM_XXH3_withSecret_testdata[1894] */ + { 1895, 0x0000000000000000ULL, 0x2E7980EAD2979C81ULL }, /* XSUM_XXH3_withSecret_testdata[1895] */ + { 1896, 0x0000000000000000ULL, 0x0C5D37F9D498521BULL }, /* XSUM_XXH3_withSecret_testdata[1896] */ + { 1897, 0x0000000000000000ULL, 0xBE22F8844228CA21ULL }, /* XSUM_XXH3_withSecret_testdata[1897] */ + { 1898, 0x0000000000000000ULL, 0xA38E8323477AFDEBULL }, /* XSUM_XXH3_withSecret_testdata[1898] */ + { 1899, 0x0000000000000000ULL, 0xD1F1A219688BFD74ULL }, /* XSUM_XXH3_withSecret_testdata[1899] */ + { 1900, 0x0000000000000000ULL, 0x18FFC2BA99E13E26ULL }, /* XSUM_XXH3_withSecret_testdata[1900] */ + { 1901, 0x0000000000000000ULL, 0x98DB456D96CA4A7CULL }, /* XSUM_XXH3_withSecret_testdata[1901] */ + { 1902, 0x0000000000000000ULL, 0xBE521AFF481876BDULL }, /* XSUM_XXH3_withSecret_testdata[1902] */ + { 1903, 0x0000000000000000ULL, 0x91F819C3C1F15995ULL }, /* XSUM_XXH3_withSecret_testdata[1903] */ + { 1904, 0x0000000000000000ULL, 0xE738A023A9B0BA6DULL }, /* XSUM_XXH3_withSecret_testdata[1904] */ + { 1905, 0x0000000000000000ULL, 0x34F3E5A9FAF610FDULL }, /* XSUM_XXH3_withSecret_testdata[1905] */ + { 1906, 0x0000000000000000ULL, 0xC1D2B440968DD445ULL }, /* XSUM_XXH3_withSecret_testdata[1906] */ + { 1907, 0x0000000000000000ULL, 0x603A8D4E0954F2ABULL }, /* XSUM_XXH3_withSecret_testdata[1907] */ + { 1908, 0x0000000000000000ULL, 0x6163D84213C0D1CCULL }, /* XSUM_XXH3_withSecret_testdata[1908] */ + { 1909, 0x0000000000000000ULL, 0x7EDA5DF9B18F6D30ULL }, /* XSUM_XXH3_withSecret_testdata[1909] */ + { 1910, 0x0000000000000000ULL, 0xFF985775B462CAC9ULL }, /* XSUM_XXH3_withSecret_testdata[1910] */ + { 1911, 0x0000000000000000ULL, 0x395DEE7376657B59ULL }, /* XSUM_XXH3_withSecret_testdata[1911] */ + { 1912, 0x0000000000000000ULL, 0xEB4260FC7DD69737ULL }, /* XSUM_XXH3_withSecret_testdata[1912] */ + { 1913, 0x0000000000000000ULL, 0x947F26C70E715B2FULL }, /* XSUM_XXH3_withSecret_testdata[1913] */ + { 1914, 0x0000000000000000ULL, 0xC1DC1C9BC70A67C1ULL }, /* XSUM_XXH3_withSecret_testdata[1914] */ + { 1915, 0x0000000000000000ULL, 0x08B572BCF56713CEULL }, /* XSUM_XXH3_withSecret_testdata[1915] */ + { 1916, 0x0000000000000000ULL, 0x995E661AB54A9E8CULL }, /* XSUM_XXH3_withSecret_testdata[1916] */ + { 1917, 0x0000000000000000ULL, 0x0C6630E181E66DEAULL }, /* XSUM_XXH3_withSecret_testdata[1917] */ + { 1918, 0x0000000000000000ULL, 0x77F20A683428BE33ULL }, /* XSUM_XXH3_withSecret_testdata[1918] */ + { 1919, 0x0000000000000000ULL, 0x74D2536C2C5D7259ULL }, /* XSUM_XXH3_withSecret_testdata[1919] */ + { 1920, 0x0000000000000000ULL, 0x751D2EC54BC6038BULL }, /* XSUM_XXH3_withSecret_testdata[1920] */ + { 1921, 0x0000000000000000ULL, 0x4AA03B6DB9DAFB6CULL }, /* XSUM_XXH3_withSecret_testdata[1921] */ + { 1922, 0x0000000000000000ULL, 0x4399281D1A5B9E03ULL }, /* XSUM_XXH3_withSecret_testdata[1922] */ + { 1923, 0x0000000000000000ULL, 0x4F39521CD6AD5E2AULL }, /* XSUM_XXH3_withSecret_testdata[1923] */ + { 1924, 0x0000000000000000ULL, 0x86FE68ED8D696FAAULL }, /* XSUM_XXH3_withSecret_testdata[1924] */ + { 1925, 0x0000000000000000ULL, 0x7D5B81AB9E3835EBULL }, /* XSUM_XXH3_withSecret_testdata[1925] */ + { 1926, 0x0000000000000000ULL, 0x20CDCFF43C617248ULL }, /* XSUM_XXH3_withSecret_testdata[1926] */ + { 1927, 0x0000000000000000ULL, 0x17EDC44C20536181ULL }, /* XSUM_XXH3_withSecret_testdata[1927] */ + { 1928, 0x0000000000000000ULL, 0xEADDA2B5CD3C9E5DULL }, /* XSUM_XXH3_withSecret_testdata[1928] */ + { 1929, 0x0000000000000000ULL, 0x268FB0850E2369ECULL }, /* XSUM_XXH3_withSecret_testdata[1929] */ + { 1930, 0x0000000000000000ULL, 0x6F5BE676BB821FD0ULL }, /* XSUM_XXH3_withSecret_testdata[1930] */ + { 1931, 0x0000000000000000ULL, 0xA8C578FCC34F7D60ULL }, /* XSUM_XXH3_withSecret_testdata[1931] */ + { 1932, 0x0000000000000000ULL, 0x8EB8504FB4F00254ULL }, /* XSUM_XXH3_withSecret_testdata[1932] */ + { 1933, 0x0000000000000000ULL, 0x00763B822214A7B0ULL }, /* XSUM_XXH3_withSecret_testdata[1933] */ + { 1934, 0x0000000000000000ULL, 0x28165E0E06EBEFB5ULL }, /* XSUM_XXH3_withSecret_testdata[1934] */ + { 1935, 0x0000000000000000ULL, 0x40665B23B5D5EBFEULL }, /* XSUM_XXH3_withSecret_testdata[1935] */ + { 1936, 0x0000000000000000ULL, 0xAAE0C571AC56F9D4ULL }, /* XSUM_XXH3_withSecret_testdata[1936] */ + { 1937, 0x0000000000000000ULL, 0x16E7AEE32C1D2511ULL }, /* XSUM_XXH3_withSecret_testdata[1937] */ + { 1938, 0x0000000000000000ULL, 0x6FC1B6B272BA2D63ULL }, /* XSUM_XXH3_withSecret_testdata[1938] */ + { 1939, 0x0000000000000000ULL, 0x30879A4A2DB0F19AULL }, /* XSUM_XXH3_withSecret_testdata[1939] */ + { 1940, 0x0000000000000000ULL, 0xA1C75F5361E34F1EULL }, /* XSUM_XXH3_withSecret_testdata[1940] */ + { 1941, 0x0000000000000000ULL, 0x50AB08C3D1B53756ULL }, /* XSUM_XXH3_withSecret_testdata[1941] */ + { 1942, 0x0000000000000000ULL, 0x3E367154753FBACCULL }, /* XSUM_XXH3_withSecret_testdata[1942] */ + { 1943, 0x0000000000000000ULL, 0x083A8F92DA030F2BULL }, /* XSUM_XXH3_withSecret_testdata[1943] */ + { 1944, 0x0000000000000000ULL, 0xAEC52F821EA2D3B2ULL }, /* XSUM_XXH3_withSecret_testdata[1944] */ + { 1945, 0x0000000000000000ULL, 0x300E70829CB7CB7CULL }, /* XSUM_XXH3_withSecret_testdata[1945] */ + { 1946, 0x0000000000000000ULL, 0xAAB6F53BCBC50A11ULL }, /* XSUM_XXH3_withSecret_testdata[1946] */ + { 1947, 0x0000000000000000ULL, 0x70645A7FE1D47DDAULL }, /* XSUM_XXH3_withSecret_testdata[1947] */ + { 1948, 0x0000000000000000ULL, 0x55387B935C997944ULL }, /* XSUM_XXH3_withSecret_testdata[1948] */ + { 1949, 0x0000000000000000ULL, 0x93D15D16187F8AD5ULL }, /* XSUM_XXH3_withSecret_testdata[1949] */ + { 1950, 0x0000000000000000ULL, 0x45CEB57061DFAD2DULL }, /* XSUM_XXH3_withSecret_testdata[1950] */ + { 1951, 0x0000000000000000ULL, 0x7CFA4E0F0C2371A3ULL }, /* XSUM_XXH3_withSecret_testdata[1951] */ + { 1952, 0x0000000000000000ULL, 0xBA41CE761134E091ULL }, /* XSUM_XXH3_withSecret_testdata[1952] */ + { 1953, 0x0000000000000000ULL, 0x25D634A52D0C6BAAULL }, /* XSUM_XXH3_withSecret_testdata[1953] */ + { 1954, 0x0000000000000000ULL, 0xAAB9D4227FB7FF6AULL }, /* XSUM_XXH3_withSecret_testdata[1954] */ + { 1955, 0x0000000000000000ULL, 0x570535A6A349A47DULL }, /* XSUM_XXH3_withSecret_testdata[1955] */ + { 1956, 0x0000000000000000ULL, 0x2DC890196CBF71ACULL }, /* XSUM_XXH3_withSecret_testdata[1956] */ + { 1957, 0x0000000000000000ULL, 0xDF8DF47F892B5E9CULL }, /* XSUM_XXH3_withSecret_testdata[1957] */ + { 1958, 0x0000000000000000ULL, 0x4D4D1C063F97F8ACULL }, /* XSUM_XXH3_withSecret_testdata[1958] */ + { 1959, 0x0000000000000000ULL, 0x26D28B5FE6A309F9ULL }, /* XSUM_XXH3_withSecret_testdata[1959] */ + { 1960, 0x0000000000000000ULL, 0xDE6767AF345144A4ULL }, /* XSUM_XXH3_withSecret_testdata[1960] */ + { 1961, 0x0000000000000000ULL, 0x66BD1E08C06BE67BULL }, /* XSUM_XXH3_withSecret_testdata[1961] */ + { 1962, 0x0000000000000000ULL, 0xCFA6614E56565F1AULL }, /* XSUM_XXH3_withSecret_testdata[1962] */ + { 1963, 0x0000000000000000ULL, 0xE1C87D4A9FFD7AB8ULL }, /* XSUM_XXH3_withSecret_testdata[1963] */ + { 1964, 0x0000000000000000ULL, 0x1C40586BD0EEA8D1ULL }, /* XSUM_XXH3_withSecret_testdata[1964] */ + { 1965, 0x0000000000000000ULL, 0x3532630E352A209DULL }, /* XSUM_XXH3_withSecret_testdata[1965] */ + { 1966, 0x0000000000000000ULL, 0xE9DC7C827B0C99B0ULL }, /* XSUM_XXH3_withSecret_testdata[1966] */ + { 1967, 0x0000000000000000ULL, 0x53D67F8ABE8DAEF5ULL }, /* XSUM_XXH3_withSecret_testdata[1967] */ + { 1968, 0x0000000000000000ULL, 0xE854B14F5317D22AULL }, /* XSUM_XXH3_withSecret_testdata[1968] */ + { 1969, 0x0000000000000000ULL, 0x8A2D2A82A3EB9933ULL }, /* XSUM_XXH3_withSecret_testdata[1969] */ + { 1970, 0x0000000000000000ULL, 0x66BC8652E2FAB64BULL }, /* XSUM_XXH3_withSecret_testdata[1970] */ + { 1971, 0x0000000000000000ULL, 0x323091C1E0318144ULL }, /* XSUM_XXH3_withSecret_testdata[1971] */ + { 1972, 0x0000000000000000ULL, 0xABFFB27F0698185FULL }, /* XSUM_XXH3_withSecret_testdata[1972] */ + { 1973, 0x0000000000000000ULL, 0xCE0BCC1DE702A8A2ULL }, /* XSUM_XXH3_withSecret_testdata[1973] */ + { 1974, 0x0000000000000000ULL, 0xA891D776F1058526ULL }, /* XSUM_XXH3_withSecret_testdata[1974] */ + { 1975, 0x0000000000000000ULL, 0xA07E0E04765D1A06ULL }, /* XSUM_XXH3_withSecret_testdata[1975] */ + { 1976, 0x0000000000000000ULL, 0xD94B1CAA0A7C6CA6ULL }, /* XSUM_XXH3_withSecret_testdata[1976] */ + { 1977, 0x0000000000000000ULL, 0x0DE7EC06A9D79A59ULL }, /* XSUM_XXH3_withSecret_testdata[1977] */ + { 1978, 0x0000000000000000ULL, 0x83450511C21A36ABULL }, /* XSUM_XXH3_withSecret_testdata[1978] */ + { 1979, 0x0000000000000000ULL, 0x20D014B8011E22A7ULL }, /* XSUM_XXH3_withSecret_testdata[1979] */ + { 1980, 0x0000000000000000ULL, 0x4E183403B1E728D7ULL }, /* XSUM_XXH3_withSecret_testdata[1980] */ + { 1981, 0x0000000000000000ULL, 0xA274442A270F7A2BULL }, /* XSUM_XXH3_withSecret_testdata[1981] */ + { 1982, 0x0000000000000000ULL, 0xAA57D4C24A4C5A3CULL }, /* XSUM_XXH3_withSecret_testdata[1982] */ + { 1983, 0x0000000000000000ULL, 0x3DA716FB6D15D010ULL }, /* XSUM_XXH3_withSecret_testdata[1983] */ + { 1984, 0x0000000000000000ULL, 0xF0DBCAD3AF0FC637ULL }, /* XSUM_XXH3_withSecret_testdata[1984] */ + { 1985, 0x0000000000000000ULL, 0x4F5012143EAA22EFULL }, /* XSUM_XXH3_withSecret_testdata[1985] */ + { 1986, 0x0000000000000000ULL, 0x0A6569F03DDBCE77ULL }, /* XSUM_XXH3_withSecret_testdata[1986] */ + { 1987, 0x0000000000000000ULL, 0x1F3EAEF95A8DF63EULL }, /* XSUM_XXH3_withSecret_testdata[1987] */ + { 1988, 0x0000000000000000ULL, 0x979A6629B25EEC66ULL }, /* XSUM_XXH3_withSecret_testdata[1988] */ + { 1989, 0x0000000000000000ULL, 0xAD1DE4B26AFDDC5AULL }, /* XSUM_XXH3_withSecret_testdata[1989] */ + { 1990, 0x0000000000000000ULL, 0x02471AA9EC8F3FF7ULL }, /* XSUM_XXH3_withSecret_testdata[1990] */ + { 1991, 0x0000000000000000ULL, 0x55C037ECD9007807ULL }, /* XSUM_XXH3_withSecret_testdata[1991] */ + { 1992, 0x0000000000000000ULL, 0xA7B7E36C2F5CD2CDULL }, /* XSUM_XXH3_withSecret_testdata[1992] */ + { 1993, 0x0000000000000000ULL, 0x6FFA0680FF416EE0ULL }, /* XSUM_XXH3_withSecret_testdata[1993] */ + { 1994, 0x0000000000000000ULL, 0x43B362F86DD5E34FULL }, /* XSUM_XXH3_withSecret_testdata[1994] */ + { 1995, 0x0000000000000000ULL, 0x68D3CE07A02C606BULL }, /* XSUM_XXH3_withSecret_testdata[1995] */ + { 1996, 0x0000000000000000ULL, 0xD3F6021C2CC7C145ULL }, /* XSUM_XXH3_withSecret_testdata[1996] */ + { 1997, 0x0000000000000000ULL, 0xF70238CF5D392572ULL }, /* XSUM_XXH3_withSecret_testdata[1997] */ + { 1998, 0x0000000000000000ULL, 0x5F308D427071394CULL }, /* XSUM_XXH3_withSecret_testdata[1998] */ + { 1999, 0x0000000000000000ULL, 0x57523F6650F55E0DULL }, /* XSUM_XXH3_withSecret_testdata[1999] */ + { 2000, 0x0000000000000000ULL, 0x680E40011860C581ULL }, /* XSUM_XXH3_withSecret_testdata[2000] */ + { 2001, 0x0000000000000000ULL, 0xD0B11AAD1F5C23C1ULL }, /* XSUM_XXH3_withSecret_testdata[2001] */ + { 2002, 0x0000000000000000ULL, 0xA6A9688B992ED021ULL }, /* XSUM_XXH3_withSecret_testdata[2002] */ + { 2003, 0x0000000000000000ULL, 0x50BC82C67C5B7A2AULL }, /* XSUM_XXH3_withSecret_testdata[2003] */ + { 2004, 0x0000000000000000ULL, 0x13D22CED68E76785ULL }, /* XSUM_XXH3_withSecret_testdata[2004] */ + { 2005, 0x0000000000000000ULL, 0x378EF2D33B8CC69DULL }, /* XSUM_XXH3_withSecret_testdata[2005] */ + { 2006, 0x0000000000000000ULL, 0x60B89260458BDF90ULL }, /* XSUM_XXH3_withSecret_testdata[2006] */ + { 2007, 0x0000000000000000ULL, 0xEF62145B4D67249BULL }, /* XSUM_XXH3_withSecret_testdata[2007] */ + { 2008, 0x0000000000000000ULL, 0x0759C5A7E12CCF8BULL }, /* XSUM_XXH3_withSecret_testdata[2008] */ + { 2009, 0x0000000000000000ULL, 0x83E9CD30677C2674ULL }, /* XSUM_XXH3_withSecret_testdata[2009] */ + { 2010, 0x0000000000000000ULL, 0x00C92FEFD25FFB3FULL }, /* XSUM_XXH3_withSecret_testdata[2010] */ + { 2011, 0x0000000000000000ULL, 0xA714A805852DD9EDULL }, /* XSUM_XXH3_withSecret_testdata[2011] */ + { 2012, 0x0000000000000000ULL, 0x1AE6E24CC00EC603ULL }, /* XSUM_XXH3_withSecret_testdata[2012] */ + { 2013, 0x0000000000000000ULL, 0x928ED8E2EE11805FULL }, /* XSUM_XXH3_withSecret_testdata[2013] */ + { 2014, 0x0000000000000000ULL, 0xC12EB28602014B6AULL }, /* XSUM_XXH3_withSecret_testdata[2014] */ + { 2015, 0x0000000000000000ULL, 0x7420C0D871AAF4DAULL }, /* XSUM_XXH3_withSecret_testdata[2015] */ + { 2016, 0x0000000000000000ULL, 0xD11FEA4183B4ABBAULL }, /* XSUM_XXH3_withSecret_testdata[2016] */ + { 2017, 0x0000000000000000ULL, 0xA1A8D9B0B2E816AEULL }, /* XSUM_XXH3_withSecret_testdata[2017] */ + { 2018, 0x0000000000000000ULL, 0x7518F2FD9C9EB851ULL }, /* XSUM_XXH3_withSecret_testdata[2018] */ + { 2019, 0x0000000000000000ULL, 0xBBFC3AD965E4F459ULL }, /* XSUM_XXH3_withSecret_testdata[2019] */ + { 2020, 0x0000000000000000ULL, 0xEB96E630F1F12D5CULL }, /* XSUM_XXH3_withSecret_testdata[2020] */ + { 2021, 0x0000000000000000ULL, 0x8AE95135640DB9AFULL }, /* XSUM_XXH3_withSecret_testdata[2021] */ + { 2022, 0x0000000000000000ULL, 0xF0FD6C215C2FAB7DULL }, /* XSUM_XXH3_withSecret_testdata[2022] */ + { 2023, 0x0000000000000000ULL, 0x22E379A68D4A26E8ULL }, /* XSUM_XXH3_withSecret_testdata[2023] */ + { 2024, 0x0000000000000000ULL, 0x751D0B04BD155367ULL }, /* XSUM_XXH3_withSecret_testdata[2024] */ + { 2025, 0x0000000000000000ULL, 0xBAF9A0F558671628ULL }, /* XSUM_XXH3_withSecret_testdata[2025] */ + { 2026, 0x0000000000000000ULL, 0x2C98EDD28EB24A27ULL }, /* XSUM_XXH3_withSecret_testdata[2026] */ + { 2027, 0x0000000000000000ULL, 0x39FF6BB04D78CECBULL }, /* XSUM_XXH3_withSecret_testdata[2027] */ + { 2028, 0x0000000000000000ULL, 0x6C5B98692DA17DECULL }, /* XSUM_XXH3_withSecret_testdata[2028] */ + { 2029, 0x0000000000000000ULL, 0xE3C17365A6225E2EULL }, /* XSUM_XXH3_withSecret_testdata[2029] */ + { 2030, 0x0000000000000000ULL, 0x9679231B1AB02919ULL }, /* XSUM_XXH3_withSecret_testdata[2030] */ + { 2031, 0x0000000000000000ULL, 0x9D6531F5C0D6BFBBULL }, /* XSUM_XXH3_withSecret_testdata[2031] */ + { 2032, 0x0000000000000000ULL, 0x47D9A3AB7BB9557EULL }, /* XSUM_XXH3_withSecret_testdata[2032] */ + { 2033, 0x0000000000000000ULL, 0xC8EE10B303E59B90ULL }, /* XSUM_XXH3_withSecret_testdata[2033] */ + { 2034, 0x0000000000000000ULL, 0x7744087C5E09B4A0ULL }, /* XSUM_XXH3_withSecret_testdata[2034] */ + { 2035, 0x0000000000000000ULL, 0x2320AF628CF370B9ULL }, /* XSUM_XXH3_withSecret_testdata[2035] */ + { 2036, 0x0000000000000000ULL, 0xED1098FAB4D69854ULL }, /* XSUM_XXH3_withSecret_testdata[2036] */ + { 2037, 0x0000000000000000ULL, 0x5C441874E06823A9ULL }, /* XSUM_XXH3_withSecret_testdata[2037] */ + { 2038, 0x0000000000000000ULL, 0x88136156AC52E87AULL }, /* XSUM_XXH3_withSecret_testdata[2038] */ + { 2039, 0x0000000000000000ULL, 0x357838F44B24482FULL }, /* XSUM_XXH3_withSecret_testdata[2039] */ + { 2040, 0x0000000000000000ULL, 0x7EC986E34C09ACD8ULL }, /* XSUM_XXH3_withSecret_testdata[2040] */ + { 2041, 0x0000000000000000ULL, 0x8219190DAE71BA9EULL }, /* XSUM_XXH3_withSecret_testdata[2041] */ + { 2042, 0x0000000000000000ULL, 0x6D2A9F3B4B4E71F0ULL }, /* XSUM_XXH3_withSecret_testdata[2042] */ + { 2043, 0x0000000000000000ULL, 0x8EC03594DB1AD0DAULL }, /* XSUM_XXH3_withSecret_testdata[2043] */ + { 2044, 0x0000000000000000ULL, 0x59EED54EB42DE33AULL }, /* XSUM_XXH3_withSecret_testdata[2044] */ + { 2045, 0x0000000000000000ULL, 0x13805D233DAD8790ULL }, /* XSUM_XXH3_withSecret_testdata[2045] */ + { 2046, 0x0000000000000000ULL, 0x43676048065E159CULL }, /* XSUM_XXH3_withSecret_testdata[2046] */ + { 2047, 0x0000000000000000ULL, 0x209243520DBDB300ULL }, /* XSUM_XXH3_withSecret_testdata[2047] */ + { 2048, 0x0000000000000000ULL, 0xD32E975821D6519FULL }, /* XSUM_XXH3_withSecret_testdata[2048] */ + { 2049, 0x0000000000000000ULL, 0xA21BE3A04630DEF3ULL }, /* XSUM_XXH3_withSecret_testdata[2049] */ + { 2050, 0x0000000000000000ULL, 0x66C1DE03D1E73446ULL }, /* XSUM_XXH3_withSecret_testdata[2050] */ + { 2051, 0x0000000000000000ULL, 0x6F919C733E968D5FULL }, /* XSUM_XXH3_withSecret_testdata[2051] */ + { 2052, 0x0000000000000000ULL, 0x26C292BB2CE4A52BULL }, /* XSUM_XXH3_withSecret_testdata[2052] */ + { 2053, 0x0000000000000000ULL, 0x38BC94F790714231ULL }, /* XSUM_XXH3_withSecret_testdata[2053] */ + { 2054, 0x0000000000000000ULL, 0x1CC2A38D40B0B479ULL }, /* XSUM_XXH3_withSecret_testdata[2054] */ + { 2055, 0x0000000000000000ULL, 0x1F88E6D332129AD7ULL }, /* XSUM_XXH3_withSecret_testdata[2055] */ + { 2056, 0x0000000000000000ULL, 0xEB2297D9BC7DAB31ULL }, /* XSUM_XXH3_withSecret_testdata[2056] */ + { 2057, 0x0000000000000000ULL, 0x5AD39A25C77470A7ULL }, /* XSUM_XXH3_withSecret_testdata[2057] */ + { 2058, 0x0000000000000000ULL, 0xE2EBAE7AA5590976ULL }, /* XSUM_XXH3_withSecret_testdata[2058] */ + { 2059, 0x0000000000000000ULL, 0xC95A7CE1FA9D862CULL }, /* XSUM_XXH3_withSecret_testdata[2059] */ + { 2060, 0x0000000000000000ULL, 0x4164FD4B4B60A744ULL }, /* XSUM_XXH3_withSecret_testdata[2060] */ + { 2061, 0x0000000000000000ULL, 0xD5EBADC52B3BE9B4ULL }, /* XSUM_XXH3_withSecret_testdata[2061] */ + { 2062, 0x0000000000000000ULL, 0x911E0F903F1D33ADULL }, /* XSUM_XXH3_withSecret_testdata[2062] */ + { 2063, 0x0000000000000000ULL, 0xE6672AD872CCD53FULL }, /* XSUM_XXH3_withSecret_testdata[2063] */ + { 2064, 0x0000000000000000ULL, 0xEFB596ADA9519FDDULL }, /* XSUM_XXH3_withSecret_testdata[2064] */ + { 2065, 0x0000000000000000ULL, 0xB46502B4C20DB573ULL }, /* XSUM_XXH3_withSecret_testdata[2065] */ + { 2066, 0x0000000000000000ULL, 0xE96B5AA61BE76157ULL }, /* XSUM_XXH3_withSecret_testdata[2066] */ + { 2067, 0x0000000000000000ULL, 0x6778895F05F19804ULL }, /* XSUM_XXH3_withSecret_testdata[2067] */ + { 2068, 0x0000000000000000ULL, 0x81D3331F18F62106ULL }, /* XSUM_XXH3_withSecret_testdata[2068] */ + { 2069, 0x0000000000000000ULL, 0x73B7E0205B9C8F02ULL }, /* XSUM_XXH3_withSecret_testdata[2069] */ + { 2070, 0x0000000000000000ULL, 0xBC279DDACB497915ULL }, /* XSUM_XXH3_withSecret_testdata[2070] */ + { 2071, 0x0000000000000000ULL, 0x26E6F63E802A0237ULL }, /* XSUM_XXH3_withSecret_testdata[2071] */ + { 2072, 0x0000000000000000ULL, 0x6FDDA4A779C05513ULL }, /* XSUM_XXH3_withSecret_testdata[2072] */ + { 2073, 0x0000000000000000ULL, 0x8C117EA6D5CB1D6AULL }, /* XSUM_XXH3_withSecret_testdata[2073] */ + { 2074, 0x0000000000000000ULL, 0xBEF162C7599DB103ULL }, /* XSUM_XXH3_withSecret_testdata[2074] */ + { 2075, 0x0000000000000000ULL, 0x99A8565C62D35B6BULL }, /* XSUM_XXH3_withSecret_testdata[2075] */ + { 2076, 0x0000000000000000ULL, 0x8C09C893AA0745B4ULL }, /* XSUM_XXH3_withSecret_testdata[2076] */ + { 2077, 0x0000000000000000ULL, 0x259D32B53BC5C483ULL }, /* XSUM_XXH3_withSecret_testdata[2077] */ + { 2078, 0x0000000000000000ULL, 0xF34E587F40BA1DC4ULL }, /* XSUM_XXH3_withSecret_testdata[2078] */ + { 2079, 0x0000000000000000ULL, 0x86EF0E042CD99677ULL }, /* XSUM_XXH3_withSecret_testdata[2079] */ + { 2080, 0x0000000000000000ULL, 0xD50E1D4B97E7610DULL }, /* XSUM_XXH3_withSecret_testdata[2080] */ + { 2081, 0x0000000000000000ULL, 0x8D79F9511D9BD6C8ULL }, /* XSUM_XXH3_withSecret_testdata[2081] */ + { 2082, 0x0000000000000000ULL, 0xBD601351D0BA0291ULL }, /* XSUM_XXH3_withSecret_testdata[2082] */ + { 2083, 0x0000000000000000ULL, 0x7A7871FDFED55F62ULL }, /* XSUM_XXH3_withSecret_testdata[2083] */ + { 2084, 0x0000000000000000ULL, 0x1561798466C5452CULL }, /* XSUM_XXH3_withSecret_testdata[2084] */ + { 2085, 0x0000000000000000ULL, 0x0D21BCE3EF6C5C55ULL }, /* XSUM_XXH3_withSecret_testdata[2085] */ + { 2086, 0x0000000000000000ULL, 0xAAB4CE0A582B1E13ULL }, /* XSUM_XXH3_withSecret_testdata[2086] */ + { 2087, 0x0000000000000000ULL, 0x7DF76FB93499EF9EULL }, /* XSUM_XXH3_withSecret_testdata[2087] */ + { 2088, 0x0000000000000000ULL, 0x8C8786ECB7222674ULL }, /* XSUM_XXH3_withSecret_testdata[2088] */ + { 2089, 0x0000000000000000ULL, 0x76F06F2C42B2BF52ULL }, /* XSUM_XXH3_withSecret_testdata[2089] */ + { 2090, 0x0000000000000000ULL, 0xE819BD3C60E0DD3EULL }, /* XSUM_XXH3_withSecret_testdata[2090] */ + { 2091, 0x0000000000000000ULL, 0xEECA6A591070079EULL }, /* XSUM_XXH3_withSecret_testdata[2091] */ + { 2092, 0x0000000000000000ULL, 0xBB3BEA3E401EAD72ULL }, /* XSUM_XXH3_withSecret_testdata[2092] */ + { 2093, 0x0000000000000000ULL, 0x844123209C9A55F9ULL }, /* XSUM_XXH3_withSecret_testdata[2093] */ + { 2094, 0x0000000000000000ULL, 0x6E64CDD471315BB3ULL }, /* XSUM_XXH3_withSecret_testdata[2094] */ + { 2095, 0x0000000000000000ULL, 0x3B457BD683D5C88BULL }, /* XSUM_XXH3_withSecret_testdata[2095] */ + { 2096, 0x0000000000000000ULL, 0xF509FFB4B4B76710ULL }, /* XSUM_XXH3_withSecret_testdata[2096] */ + { 2097, 0x0000000000000000ULL, 0x1573E7DE38373E65ULL }, /* XSUM_XXH3_withSecret_testdata[2097] */ + { 2098, 0x0000000000000000ULL, 0xEBEB0F4DBB4C8377ULL }, /* XSUM_XXH3_withSecret_testdata[2098] */ + { 2099, 0x0000000000000000ULL, 0x8DCD6D2487F34E24ULL }, /* XSUM_XXH3_withSecret_testdata[2099] */ + { 2100, 0x0000000000000000ULL, 0xC4D66A26C8A2FDADULL }, /* XSUM_XXH3_withSecret_testdata[2100] */ + { 2101, 0x0000000000000000ULL, 0x52712CF283F417CEULL }, /* XSUM_XXH3_withSecret_testdata[2101] */ + { 2102, 0x0000000000000000ULL, 0x924F8C83442180D7ULL }, /* XSUM_XXH3_withSecret_testdata[2102] */ + { 2103, 0x0000000000000000ULL, 0x343DE55494B2C245ULL }, /* XSUM_XXH3_withSecret_testdata[2103] */ + { 2104, 0x0000000000000000ULL, 0x5CAF411F83BA19F6ULL }, /* XSUM_XXH3_withSecret_testdata[2104] */ + { 2105, 0x0000000000000000ULL, 0x06EA3A8C72522C43ULL }, /* XSUM_XXH3_withSecret_testdata[2105] */ + { 2106, 0x0000000000000000ULL, 0x2A0A7FC6FA02CBEAULL }, /* XSUM_XXH3_withSecret_testdata[2106] */ + { 2107, 0x0000000000000000ULL, 0xBD81E26F559D5741ULL }, /* XSUM_XXH3_withSecret_testdata[2107] */ + { 2108, 0x0000000000000000ULL, 0x8F2996F3DECAA2B9ULL }, /* XSUM_XXH3_withSecret_testdata[2108] */ + { 2109, 0x0000000000000000ULL, 0xFBEC878C8A37DF88ULL }, /* XSUM_XXH3_withSecret_testdata[2109] */ + { 2110, 0x0000000000000000ULL, 0xBB27B7BA8CD54B6DULL }, /* XSUM_XXH3_withSecret_testdata[2110] */ + { 2111, 0x0000000000000000ULL, 0xADFD8F12387660C6ULL }, /* XSUM_XXH3_withSecret_testdata[2111] */ + { 2112, 0x0000000000000000ULL, 0x7734C5CB42F4AA50ULL }, /* XSUM_XXH3_withSecret_testdata[2112] */ + { 2113, 0x0000000000000000ULL, 0x37AAADC6FB38A58EULL }, /* XSUM_XXH3_withSecret_testdata[2113] */ + { 2114, 0x0000000000000000ULL, 0x72822DA7E16EBD52ULL }, /* XSUM_XXH3_withSecret_testdata[2114] */ + { 2115, 0x0000000000000000ULL, 0xF2514B8997F56ADAULL }, /* XSUM_XXH3_withSecret_testdata[2115] */ + { 2116, 0x0000000000000000ULL, 0x7B0E13F461B450DCULL }, /* XSUM_XXH3_withSecret_testdata[2116] */ + { 2117, 0x0000000000000000ULL, 0x6299C85970CB72F3ULL }, /* XSUM_XXH3_withSecret_testdata[2117] */ + { 2118, 0x0000000000000000ULL, 0x9F00FEBF3293C5D2ULL }, /* XSUM_XXH3_withSecret_testdata[2118] */ + { 2119, 0x0000000000000000ULL, 0x29F5866058BB82CFULL }, /* XSUM_XXH3_withSecret_testdata[2119] */ + { 2120, 0x0000000000000000ULL, 0x7B68AC656D8544D3ULL }, /* XSUM_XXH3_withSecret_testdata[2120] */ + { 2121, 0x0000000000000000ULL, 0x14676FD39C54BEC3ULL }, /* XSUM_XXH3_withSecret_testdata[2121] */ + { 2122, 0x0000000000000000ULL, 0x74B2C201D6E3F634ULL }, /* XSUM_XXH3_withSecret_testdata[2122] */ + { 2123, 0x0000000000000000ULL, 0xB784D3F03CDC62C5ULL }, /* XSUM_XXH3_withSecret_testdata[2123] */ + { 2124, 0x0000000000000000ULL, 0x1071B2D025552CD9ULL }, /* XSUM_XXH3_withSecret_testdata[2124] */ + { 2125, 0x0000000000000000ULL, 0x95B0032D43F512C3ULL }, /* XSUM_XXH3_withSecret_testdata[2125] */ + { 2126, 0x0000000000000000ULL, 0xB089997C117D2050ULL }, /* XSUM_XXH3_withSecret_testdata[2126] */ + { 2127, 0x0000000000000000ULL, 0x50F0CB60BD0A4454ULL }, /* XSUM_XXH3_withSecret_testdata[2127] */ + { 2128, 0x0000000000000000ULL, 0x55B2F545EECC6289ULL }, /* XSUM_XXH3_withSecret_testdata[2128] */ + { 2129, 0x0000000000000000ULL, 0xB9252EC3C2B99725ULL }, /* XSUM_XXH3_withSecret_testdata[2129] */ + { 2130, 0x0000000000000000ULL, 0x01C577B1E6F49009ULL }, /* XSUM_XXH3_withSecret_testdata[2130] */ + { 2131, 0x0000000000000000ULL, 0x3D09169CB408C167ULL }, /* XSUM_XXH3_withSecret_testdata[2131] */ + { 2132, 0x0000000000000000ULL, 0x02114BEE3F68C72AULL }, /* XSUM_XXH3_withSecret_testdata[2132] */ + { 2133, 0x0000000000000000ULL, 0x8E6428C72B768BD8ULL }, /* XSUM_XXH3_withSecret_testdata[2133] */ + { 2134, 0x0000000000000000ULL, 0x8EE2E521028193B2ULL }, /* XSUM_XXH3_withSecret_testdata[2134] */ + { 2135, 0x0000000000000000ULL, 0xC3242FE952F2409AULL }, /* XSUM_XXH3_withSecret_testdata[2135] */ + { 2136, 0x0000000000000000ULL, 0xC884F8B40EA4D506ULL }, /* XSUM_XXH3_withSecret_testdata[2136] */ + { 2137, 0x0000000000000000ULL, 0x61E514D4720C4879ULL }, /* XSUM_XXH3_withSecret_testdata[2137] */ + { 2138, 0x0000000000000000ULL, 0xEDD2803ED3C69260ULL }, /* XSUM_XXH3_withSecret_testdata[2138] */ + { 2139, 0x0000000000000000ULL, 0x7D410220AE855F6BULL }, /* XSUM_XXH3_withSecret_testdata[2139] */ + { 2140, 0x0000000000000000ULL, 0xB585C3659C5134AAULL }, /* XSUM_XXH3_withSecret_testdata[2140] */ + { 2141, 0x0000000000000000ULL, 0xE7A30A7EEBBE9FE5ULL }, /* XSUM_XXH3_withSecret_testdata[2141] */ + { 2142, 0x0000000000000000ULL, 0x3D48856325430C1EULL }, /* XSUM_XXH3_withSecret_testdata[2142] */ + { 2143, 0x0000000000000000ULL, 0xB6C9104D13537A3FULL }, /* XSUM_XXH3_withSecret_testdata[2143] */ + { 2144, 0x0000000000000000ULL, 0x52432918B4F4334BULL }, /* XSUM_XXH3_withSecret_testdata[2144] */ + { 2145, 0x0000000000000000ULL, 0x1E9DFCF70AFEA2C6ULL }, /* XSUM_XXH3_withSecret_testdata[2145] */ + { 2146, 0x0000000000000000ULL, 0xDF53EC34725FEF8DULL }, /* XSUM_XXH3_withSecret_testdata[2146] */ + { 2147, 0x0000000000000000ULL, 0xE02E5F9CED9796F5ULL }, /* XSUM_XXH3_withSecret_testdata[2147] */ + { 2148, 0x0000000000000000ULL, 0x67C08B1347A9FBE6ULL }, /* XSUM_XXH3_withSecret_testdata[2148] */ + { 2149, 0x0000000000000000ULL, 0x596ACD131E8324E6ULL }, /* XSUM_XXH3_withSecret_testdata[2149] */ + { 2150, 0x0000000000000000ULL, 0x857B573F75AF45B3ULL }, /* XSUM_XXH3_withSecret_testdata[2150] */ + { 2151, 0x0000000000000000ULL, 0xF621184FD7387501ULL }, /* XSUM_XXH3_withSecret_testdata[2151] */ + { 2152, 0x0000000000000000ULL, 0xBF3DD7EA4DA7F9B3ULL }, /* XSUM_XXH3_withSecret_testdata[2152] */ + { 2153, 0x0000000000000000ULL, 0xA778BD9689DA8D92ULL }, /* XSUM_XXH3_withSecret_testdata[2153] */ + { 2154, 0x0000000000000000ULL, 0xF9F8714A7D2B38D8ULL }, /* XSUM_XXH3_withSecret_testdata[2154] */ + { 2155, 0x0000000000000000ULL, 0x8F1D87FA7292F138ULL }, /* XSUM_XXH3_withSecret_testdata[2155] */ + { 2156, 0x0000000000000000ULL, 0xC5545D2DAD173E28ULL }, /* XSUM_XXH3_withSecret_testdata[2156] */ + { 2157, 0x0000000000000000ULL, 0xB51D09BF3D4A4F17ULL }, /* XSUM_XXH3_withSecret_testdata[2157] */ + { 2158, 0x0000000000000000ULL, 0x3E4D380ABA6BBED3ULL }, /* XSUM_XXH3_withSecret_testdata[2158] */ + { 2159, 0x0000000000000000ULL, 0xD87EDF8499C1EFCBULL }, /* XSUM_XXH3_withSecret_testdata[2159] */ + { 2160, 0x0000000000000000ULL, 0x883CAFC7E6BDA01FULL }, /* XSUM_XXH3_withSecret_testdata[2160] */ + { 2161, 0x0000000000000000ULL, 0xC2A0A8C60408CB03ULL }, /* XSUM_XXH3_withSecret_testdata[2161] */ + { 2162, 0x0000000000000000ULL, 0x4FF2D7CF67B9D722ULL }, /* XSUM_XXH3_withSecret_testdata[2162] */ + { 2163, 0x0000000000000000ULL, 0xC6A790AC7051FDA7ULL }, /* XSUM_XXH3_withSecret_testdata[2163] */ + { 2164, 0x0000000000000000ULL, 0x290824A0B617FAA1ULL }, /* XSUM_XXH3_withSecret_testdata[2164] */ + { 2165, 0x0000000000000000ULL, 0x70926C396EEF2312ULL }, /* XSUM_XXH3_withSecret_testdata[2165] */ + { 2166, 0x0000000000000000ULL, 0xD1760A6B92C41E94ULL }, /* XSUM_XXH3_withSecret_testdata[2166] */ + { 2167, 0x0000000000000000ULL, 0x6EF1770EA5C074AFULL }, /* XSUM_XXH3_withSecret_testdata[2167] */ + { 2168, 0x0000000000000000ULL, 0xAEDE9A122E3DF1EDULL }, /* XSUM_XXH3_withSecret_testdata[2168] */ + { 2169, 0x0000000000000000ULL, 0x97966969D62D7923ULL }, /* XSUM_XXH3_withSecret_testdata[2169] */ + { 2170, 0x0000000000000000ULL, 0x1C92CB86837BA1EAULL }, /* XSUM_XXH3_withSecret_testdata[2170] */ + { 2171, 0x0000000000000000ULL, 0x1CDC56581C55A9C6ULL }, /* XSUM_XXH3_withSecret_testdata[2171] */ + { 2172, 0x0000000000000000ULL, 0x3636D7EA7BC90F01ULL }, /* XSUM_XXH3_withSecret_testdata[2172] */ + { 2173, 0x0000000000000000ULL, 0x38048B8DEA0CA60AULL }, /* XSUM_XXH3_withSecret_testdata[2173] */ + { 2174, 0x0000000000000000ULL, 0xD02B6B9E5AA664EAULL }, /* XSUM_XXH3_withSecret_testdata[2174] */ + { 2175, 0x0000000000000000ULL, 0x0539B782E6DFBD35ULL }, /* XSUM_XXH3_withSecret_testdata[2175] */ + { 2176, 0x0000000000000000ULL, 0xD6E73682701B5995ULL }, /* XSUM_XXH3_withSecret_testdata[2176] */ + { 2177, 0x0000000000000000ULL, 0x60B860587E195139ULL }, /* XSUM_XXH3_withSecret_testdata[2177] */ + { 2178, 0x0000000000000000ULL, 0x25EE8AEA8EEA3138ULL }, /* XSUM_XXH3_withSecret_testdata[2178] */ + { 2179, 0x0000000000000000ULL, 0x50CB0FCF6C709664ULL }, /* XSUM_XXH3_withSecret_testdata[2179] */ + { 2180, 0x0000000000000000ULL, 0xE174F4506DC059A0ULL }, /* XSUM_XXH3_withSecret_testdata[2180] */ + { 2181, 0x0000000000000000ULL, 0x29F30375099FD331ULL }, /* XSUM_XXH3_withSecret_testdata[2181] */ + { 2182, 0x0000000000000000ULL, 0x0911ED3330826D10ULL }, /* XSUM_XXH3_withSecret_testdata[2182] */ + { 2183, 0x0000000000000000ULL, 0x09DB411B3F57F5EAULL }, /* XSUM_XXH3_withSecret_testdata[2183] */ + { 2184, 0x0000000000000000ULL, 0x20E42F7D0F648E29ULL }, /* XSUM_XXH3_withSecret_testdata[2184] */ + { 2185, 0x0000000000000000ULL, 0x26EEDE1A6CED9BDAULL }, /* XSUM_XXH3_withSecret_testdata[2185] */ + { 2186, 0x0000000000000000ULL, 0x1BFFC9DF26D340F9ULL }, /* XSUM_XXH3_withSecret_testdata[2186] */ + { 2187, 0x0000000000000000ULL, 0x2EDA55B6A2EF296AULL }, /* XSUM_XXH3_withSecret_testdata[2187] */ + { 2188, 0x0000000000000000ULL, 0x4E36B8B0DE4FC569ULL }, /* XSUM_XXH3_withSecret_testdata[2188] */ + { 2189, 0x0000000000000000ULL, 0xB3F247689FEA7D39ULL }, /* XSUM_XXH3_withSecret_testdata[2189] */ + { 2190, 0x0000000000000000ULL, 0xAA5325019870AA88ULL }, /* XSUM_XXH3_withSecret_testdata[2190] */ + { 2191, 0x0000000000000000ULL, 0xAF1F74B12B1598BCULL }, /* XSUM_XXH3_withSecret_testdata[2191] */ + { 2192, 0x0000000000000000ULL, 0x3758717C3AEF2F7DULL }, /* XSUM_XXH3_withSecret_testdata[2192] */ + { 2193, 0x0000000000000000ULL, 0x1F4624F680940704ULL }, /* XSUM_XXH3_withSecret_testdata[2193] */ + { 2194, 0x0000000000000000ULL, 0x7A29300A4BFC4F98ULL }, /* XSUM_XXH3_withSecret_testdata[2194] */ + { 2195, 0x0000000000000000ULL, 0x9BCA2AF8728075FDULL }, /* XSUM_XXH3_withSecret_testdata[2195] */ + { 2196, 0x0000000000000000ULL, 0xAE4D849184AD3BDDULL }, /* XSUM_XXH3_withSecret_testdata[2196] */ + { 2197, 0x0000000000000000ULL, 0xA1B5FAF56D9DFF7FULL }, /* XSUM_XXH3_withSecret_testdata[2197] */ + { 2198, 0x0000000000000000ULL, 0xF06E29546BEB29FEULL }, /* XSUM_XXH3_withSecret_testdata[2198] */ + { 2199, 0x0000000000000000ULL, 0x6899A86016F32CCCULL }, /* XSUM_XXH3_withSecret_testdata[2199] */ + { 2200, 0x0000000000000000ULL, 0x336C1F494516C5CFULL }, /* XSUM_XXH3_withSecret_testdata[2200] */ + { 2201, 0x0000000000000000ULL, 0x909390D4ECF72E10ULL }, /* XSUM_XXH3_withSecret_testdata[2201] */ + { 2202, 0x0000000000000000ULL, 0x1D36F744CA69DEFDULL }, /* XSUM_XXH3_withSecret_testdata[2202] */ + { 2203, 0x0000000000000000ULL, 0xFD829BB76B9D4869ULL }, /* XSUM_XXH3_withSecret_testdata[2203] */ + { 2204, 0x0000000000000000ULL, 0x5C039EDB6334D64FULL }, /* XSUM_XXH3_withSecret_testdata[2204] */ + { 2205, 0x0000000000000000ULL, 0xE5B34EBBF9D385B4ULL }, /* XSUM_XXH3_withSecret_testdata[2205] */ + { 2206, 0x0000000000000000ULL, 0xCAE9F8B87FD48178ULL }, /* XSUM_XXH3_withSecret_testdata[2206] */ + { 2207, 0x0000000000000000ULL, 0xE7C0334ED41AAD82ULL }, /* XSUM_XXH3_withSecret_testdata[2207] */ + { 2208, 0x0000000000000000ULL, 0x25DB0183D11240A7ULL }, /* XSUM_XXH3_withSecret_testdata[2208] */ + { 2209, 0x0000000000000000ULL, 0x25BE6E483CA29A06ULL }, /* XSUM_XXH3_withSecret_testdata[2209] */ + { 2210, 0x0000000000000000ULL, 0x6EEC50B126409696ULL }, /* XSUM_XXH3_withSecret_testdata[2210] */ + { 2211, 0x0000000000000000ULL, 0x28630B9216B6B1B5ULL }, /* XSUM_XXH3_withSecret_testdata[2211] */ + { 2212, 0x0000000000000000ULL, 0xDD5F2BB4C8213D2CULL }, /* XSUM_XXH3_withSecret_testdata[2212] */ + { 2213, 0x0000000000000000ULL, 0xF73FDB2ABD004047ULL }, /* XSUM_XXH3_withSecret_testdata[2213] */ + { 2214, 0x0000000000000000ULL, 0x5FC59786B18C00A6ULL }, /* XSUM_XXH3_withSecret_testdata[2214] */ + { 2215, 0x0000000000000000ULL, 0xF60C96501D50DFB6ULL }, /* XSUM_XXH3_withSecret_testdata[2215] */ + { 2216, 0x0000000000000000ULL, 0x22E2D42C123565EDULL }, /* XSUM_XXH3_withSecret_testdata[2216] */ + { 2217, 0x0000000000000000ULL, 0x9A708BA1C587E313ULL }, /* XSUM_XXH3_withSecret_testdata[2217] */ + { 2218, 0x0000000000000000ULL, 0x39F4108425FE61D9ULL }, /* XSUM_XXH3_withSecret_testdata[2218] */ + { 2219, 0x0000000000000000ULL, 0x28B00C7A4B8226A6ULL }, /* XSUM_XXH3_withSecret_testdata[2219] */ + { 2220, 0x0000000000000000ULL, 0x7D1E4243181151E6ULL }, /* XSUM_XXH3_withSecret_testdata[2220] */ + { 2221, 0x0000000000000000ULL, 0x79C7FAEB4BA041BEULL }, /* XSUM_XXH3_withSecret_testdata[2221] */ + { 2222, 0x0000000000000000ULL, 0x6ED768A5652D7700ULL }, /* XSUM_XXH3_withSecret_testdata[2222] */ + { 2223, 0x0000000000000000ULL, 0xF9A78935B335652DULL }, /* XSUM_XXH3_withSecret_testdata[2223] */ + { 2224, 0x0000000000000000ULL, 0x5D7FF63F85C6ED9AULL }, /* XSUM_XXH3_withSecret_testdata[2224] */ + { 2225, 0x0000000000000000ULL, 0xD8B9E693B3AAB45EULL }, /* XSUM_XXH3_withSecret_testdata[2225] */ + { 2226, 0x0000000000000000ULL, 0xF413F7EFF888972FULL }, /* XSUM_XXH3_withSecret_testdata[2226] */ + { 2227, 0x0000000000000000ULL, 0xC96DC8C5385F67D2ULL }, /* XSUM_XXH3_withSecret_testdata[2227] */ + { 2228, 0x0000000000000000ULL, 0xAA1F998B9558EFFCULL }, /* XSUM_XXH3_withSecret_testdata[2228] */ + { 2229, 0x0000000000000000ULL, 0xD3A161393EC9F87FULL }, /* XSUM_XXH3_withSecret_testdata[2229] */ + { 2230, 0x0000000000000000ULL, 0xA0A3A55CF9468C9EULL }, /* XSUM_XXH3_withSecret_testdata[2230] */ + { 2231, 0x0000000000000000ULL, 0x7C0D4337C9FDD88AULL }, /* XSUM_XXH3_withSecret_testdata[2231] */ + { 2232, 0x0000000000000000ULL, 0xB6F588D74008E382ULL }, /* XSUM_XXH3_withSecret_testdata[2232] */ + { 2233, 0x0000000000000000ULL, 0xD6079562C6E6FCB2ULL }, /* XSUM_XXH3_withSecret_testdata[2233] */ + { 2234, 0x0000000000000000ULL, 0x226100ED97CBBDF4ULL }, /* XSUM_XXH3_withSecret_testdata[2234] */ + { 2235, 0x0000000000000000ULL, 0xA4B6FE30750DD2DFULL }, /* XSUM_XXH3_withSecret_testdata[2235] */ + { 2236, 0x0000000000000000ULL, 0x08B202BF52DDF891ULL }, /* XSUM_XXH3_withSecret_testdata[2236] */ + { 2237, 0x0000000000000000ULL, 0xBD6A715D6EC4A2FEULL }, /* XSUM_XXH3_withSecret_testdata[2237] */ + { 2238, 0x0000000000000000ULL, 0x83AF768E4FC9DCAEULL }, /* XSUM_XXH3_withSecret_testdata[2238] */ + { 2239, 0x0000000000000000ULL, 0xC9A9023234565E91ULL }, /* XSUM_XXH3_withSecret_testdata[2239] */ + { 2240, 0x0000000000000000ULL, 0xB26C938C7AF3A71FULL }, /* XSUM_XXH3_withSecret_testdata[2240] */ + { 2241, 0x0000000000000000ULL, 0xBC5C9973093ED600ULL }, /* XSUM_XXH3_withSecret_testdata[2241] */ + { 2242, 0x0000000000000000ULL, 0xC4A13D1873FFABCEULL }, /* XSUM_XXH3_withSecret_testdata[2242] */ + { 2243, 0x0000000000000000ULL, 0x27BDD19F2D168989ULL }, /* XSUM_XXH3_withSecret_testdata[2243] */ + { 2244, 0x0000000000000000ULL, 0xC77DEEBE4BF19064ULL }, /* XSUM_XXH3_withSecret_testdata[2244] */ + { 2245, 0x0000000000000000ULL, 0x7EC103ADD9B43ADDULL }, /* XSUM_XXH3_withSecret_testdata[2245] */ + { 2246, 0x0000000000000000ULL, 0xEF03C35D9751C6F4ULL }, /* XSUM_XXH3_withSecret_testdata[2246] */ + { 2247, 0x0000000000000000ULL, 0x804531532668391EULL }, /* XSUM_XXH3_withSecret_testdata[2247] */ + { 2248, 0x0000000000000000ULL, 0x5CBDBD17A3538DF8ULL }, /* XSUM_XXH3_withSecret_testdata[2248] */ + { 2249, 0x0000000000000000ULL, 0x72C149715AD0517BULL }, /* XSUM_XXH3_withSecret_testdata[2249] */ + { 2250, 0x0000000000000000ULL, 0xF3E97C36038D1D60ULL }, /* XSUM_XXH3_withSecret_testdata[2250] */ + { 2251, 0x0000000000000000ULL, 0x5145D630BC5A53BFULL }, /* XSUM_XXH3_withSecret_testdata[2251] */ + { 2252, 0x0000000000000000ULL, 0x59BA7CA921C1230DULL }, /* XSUM_XXH3_withSecret_testdata[2252] */ + { 2253, 0x0000000000000000ULL, 0xC70763A3879EE91EULL }, /* XSUM_XXH3_withSecret_testdata[2253] */ + { 2254, 0x0000000000000000ULL, 0x8199110ED9BBA114ULL }, /* XSUM_XXH3_withSecret_testdata[2254] */ + { 2255, 0x0000000000000000ULL, 0x2354D7FE431DAE7AULL }, /* XSUM_XXH3_withSecret_testdata[2255] */ + { 2256, 0x0000000000000000ULL, 0x09CD399A744FB965ULL }, /* XSUM_XXH3_withSecret_testdata[2256] */ + { 2257, 0x0000000000000000ULL, 0x55D9C79A8AA3DA7BULL }, /* XSUM_XXH3_withSecret_testdata[2257] */ + { 2258, 0x0000000000000000ULL, 0xFA30DE23B3836096ULL }, /* XSUM_XXH3_withSecret_testdata[2258] */ + { 2259, 0x0000000000000000ULL, 0x713D5DB68DB30414ULL }, /* XSUM_XXH3_withSecret_testdata[2259] */ + { 2260, 0x0000000000000000ULL, 0x4193437A072082D0ULL }, /* XSUM_XXH3_withSecret_testdata[2260] */ + { 2261, 0x0000000000000000ULL, 0xC1BC64C4C4C9619CULL }, /* XSUM_XXH3_withSecret_testdata[2261] */ + { 2262, 0x0000000000000000ULL, 0xAEE890BF51352B13ULL }, /* XSUM_XXH3_withSecret_testdata[2262] */ + { 2263, 0x0000000000000000ULL, 0x6723CC64A6E66603ULL }, /* XSUM_XXH3_withSecret_testdata[2263] */ + { 2264, 0x0000000000000000ULL, 0xAE56CAEA5D1B01C7ULL }, /* XSUM_XXH3_withSecret_testdata[2264] */ + { 2265, 0x0000000000000000ULL, 0x6342032FC46E6EECULL }, /* XSUM_XXH3_withSecret_testdata[2265] */ + { 2266, 0x0000000000000000ULL, 0x85C23DB28F6047E2ULL }, /* XSUM_XXH3_withSecret_testdata[2266] */ + { 2267, 0x0000000000000000ULL, 0x4FCD32B63E1A64DAULL }, /* XSUM_XXH3_withSecret_testdata[2267] */ + { 2268, 0x0000000000000000ULL, 0xE8C4F61E1DC023B4ULL }, /* XSUM_XXH3_withSecret_testdata[2268] */ + { 2269, 0x0000000000000000ULL, 0x4471974B48134F1FULL }, /* XSUM_XXH3_withSecret_testdata[2269] */ + { 2270, 0x0000000000000000ULL, 0x4B574C457CC748ACULL }, /* XSUM_XXH3_withSecret_testdata[2270] */ + { 2271, 0x0000000000000000ULL, 0x8B961ABE89821A5BULL }, /* XSUM_XXH3_withSecret_testdata[2271] */ + { 2272, 0x0000000000000000ULL, 0xB4F162F7476B02F8ULL }, /* XSUM_XXH3_withSecret_testdata[2272] */ + { 2273, 0x0000000000000000ULL, 0xA8596A044226B4B5ULL }, /* XSUM_XXH3_withSecret_testdata[2273] */ + { 2274, 0x0000000000000000ULL, 0xB46AE2C707E652EDULL }, /* XSUM_XXH3_withSecret_testdata[2274] */ + { 2275, 0x0000000000000000ULL, 0x8998E0503123BD36ULL }, /* XSUM_XXH3_withSecret_testdata[2275] */ + { 2276, 0x0000000000000000ULL, 0x6920D7B185CFA861ULL }, /* XSUM_XXH3_withSecret_testdata[2276] */ + { 2277, 0x0000000000000000ULL, 0xD5382417A6B1CC5AULL }, /* XSUM_XXH3_withSecret_testdata[2277] */ + { 2278, 0x0000000000000000ULL, 0x1FC5895FF42CFCFFULL }, /* XSUM_XXH3_withSecret_testdata[2278] */ + { 2279, 0x0000000000000000ULL, 0xE3383CF25DFB4830ULL }, /* XSUM_XXH3_withSecret_testdata[2279] */ + { 2280, 0x0000000000000000ULL, 0x1D7738B4E24E553BULL }, /* XSUM_XXH3_withSecret_testdata[2280] */ + { 2281, 0x0000000000000000ULL, 0x13240DE7D612861EULL }, /* XSUM_XXH3_withSecret_testdata[2281] */ + { 2282, 0x0000000000000000ULL, 0xFF572AB52662D912ULL }, /* XSUM_XXH3_withSecret_testdata[2282] */ + { 2283, 0x0000000000000000ULL, 0xB7C29C229F6BE899ULL }, /* XSUM_XXH3_withSecret_testdata[2283] */ + { 2284, 0x0000000000000000ULL, 0x0BBB745326479CDBULL }, /* XSUM_XXH3_withSecret_testdata[2284] */ + { 2285, 0x0000000000000000ULL, 0x947D7531189C1D65ULL }, /* XSUM_XXH3_withSecret_testdata[2285] */ + { 2286, 0x0000000000000000ULL, 0x9ABD6EF3250F1494ULL }, /* XSUM_XXH3_withSecret_testdata[2286] */ + { 2287, 0x0000000000000000ULL, 0xCC3115D4324406D1ULL }, /* XSUM_XXH3_withSecret_testdata[2287] */ + { 2288, 0x0000000000000000ULL, 0xD818495BF495BBB8ULL }, /* XSUM_XXH3_withSecret_testdata[2288] */ + { 2289, 0x0000000000000000ULL, 0xE3F0E0CBDAA66C3DULL }, /* XSUM_XXH3_withSecret_testdata[2289] */ + { 2290, 0x0000000000000000ULL, 0x93CFDB535AAEF8A6ULL }, /* XSUM_XXH3_withSecret_testdata[2290] */ + { 2291, 0x0000000000000000ULL, 0xE824856FC547AED2ULL }, /* XSUM_XXH3_withSecret_testdata[2291] */ + { 2292, 0x0000000000000000ULL, 0x1F24C86993C3DA02ULL }, /* XSUM_XXH3_withSecret_testdata[2292] */ + { 2293, 0x0000000000000000ULL, 0xD101BD8752C5CA57ULL }, /* XSUM_XXH3_withSecret_testdata[2293] */ + { 2294, 0x0000000000000000ULL, 0xE0F688D96576672CULL }, /* XSUM_XXH3_withSecret_testdata[2294] */ + { 2295, 0x0000000000000000ULL, 0xB0BE8DAE214360EDULL }, /* XSUM_XXH3_withSecret_testdata[2295] */ + { 2296, 0x0000000000000000ULL, 0xED767DDFE4DD76FBULL }, /* XSUM_XXH3_withSecret_testdata[2296] */ + { 2297, 0x0000000000000000ULL, 0x1416BB25000457C6ULL }, /* XSUM_XXH3_withSecret_testdata[2297] */ + { 2298, 0x0000000000000000ULL, 0x8D3763863C621A67ULL }, /* XSUM_XXH3_withSecret_testdata[2298] */ + { 2299, 0x0000000000000000ULL, 0xBA806D61C6F26C17ULL }, /* XSUM_XXH3_withSecret_testdata[2299] */ + { 2300, 0x0000000000000000ULL, 0x078884BAD7E55EECULL }, /* XSUM_XXH3_withSecret_testdata[2300] */ + { 2301, 0x0000000000000000ULL, 0xF20409B35741CA4EULL }, /* XSUM_XXH3_withSecret_testdata[2301] */ + { 2302, 0x0000000000000000ULL, 0xDD6DE3189F1F5F24ULL }, /* XSUM_XXH3_withSecret_testdata[2302] */ + { 2303, 0x0000000000000000ULL, 0xD84AE042F62F6A58ULL }, /* XSUM_XXH3_withSecret_testdata[2303] */ + { 2304, 0x0000000000000000ULL, 0x1EA95AF94ECBAF21ULL }, /* XSUM_XXH3_withSecret_testdata[2304] */ + { 2305, 0x0000000000000000ULL, 0x32D8780451319123ULL }, /* XSUM_XXH3_withSecret_testdata[2305] */ + { 2306, 0x0000000000000000ULL, 0xA67F9361F98F5946ULL }, /* XSUM_XXH3_withSecret_testdata[2306] */ + { 2307, 0x0000000000000000ULL, 0x4D14CC2887932B7BULL }, /* XSUM_XXH3_withSecret_testdata[2307] */ + { 2308, 0x0000000000000000ULL, 0xB6E4E4BD5025430FULL }, /* XSUM_XXH3_withSecret_testdata[2308] */ + { 2309, 0x0000000000000000ULL, 0xB2DE0721E6E6D689ULL }, /* XSUM_XXH3_withSecret_testdata[2309] */ + { 2310, 0x0000000000000000ULL, 0x2816A89C31EF1425ULL }, /* XSUM_XXH3_withSecret_testdata[2310] */ + { 2311, 0x0000000000000000ULL, 0xC97BF984197E16AAULL }, /* XSUM_XXH3_withSecret_testdata[2311] */ + { 2312, 0x0000000000000000ULL, 0x7A2F77A7BD35086DULL }, /* XSUM_XXH3_withSecret_testdata[2312] */ + { 2313, 0x0000000000000000ULL, 0xC7FC1669D8D4501EULL }, /* XSUM_XXH3_withSecret_testdata[2313] */ + { 2314, 0x0000000000000000ULL, 0xBA1B459E031C39DDULL }, /* XSUM_XXH3_withSecret_testdata[2314] */ + { 2315, 0x0000000000000000ULL, 0x10A540C71BE0860FULL }, /* XSUM_XXH3_withSecret_testdata[2315] */ + { 2316, 0x0000000000000000ULL, 0xF4B0C0B556056656ULL }, /* XSUM_XXH3_withSecret_testdata[2316] */ + { 2317, 0x0000000000000000ULL, 0x7034B160B689BD8DULL }, /* XSUM_XXH3_withSecret_testdata[2317] */ + { 2318, 0x0000000000000000ULL, 0x72ED1F0D11CA236EULL }, /* XSUM_XXH3_withSecret_testdata[2318] */ + { 2319, 0x0000000000000000ULL, 0x91A5EDED19E6B21DULL }, /* XSUM_XXH3_withSecret_testdata[2319] */ + { 2320, 0x0000000000000000ULL, 0x9D1DD02EBF7D1EACULL }, /* XSUM_XXH3_withSecret_testdata[2320] */ + { 2321, 0x0000000000000000ULL, 0x4A96D43422E9788CULL }, /* XSUM_XXH3_withSecret_testdata[2321] */ + { 2322, 0x0000000000000000ULL, 0x28A8AE128E2400E9ULL }, /* XSUM_XXH3_withSecret_testdata[2322] */ + { 2323, 0x0000000000000000ULL, 0x7A8ADC44D0CE36A3ULL }, /* XSUM_XXH3_withSecret_testdata[2323] */ + { 2324, 0x0000000000000000ULL, 0xA22FE5073B324209ULL }, /* XSUM_XXH3_withSecret_testdata[2324] */ + { 2325, 0x0000000000000000ULL, 0x63EBA538567ABC9BULL }, /* XSUM_XXH3_withSecret_testdata[2325] */ + { 2326, 0x0000000000000000ULL, 0xC5339DEFE5025E17ULL }, /* XSUM_XXH3_withSecret_testdata[2326] */ + { 2327, 0x0000000000000000ULL, 0x3E4BD70D3109D5BDULL }, /* XSUM_XXH3_withSecret_testdata[2327] */ + { 2328, 0x0000000000000000ULL, 0xE77E5092D3C9423DULL }, /* XSUM_XXH3_withSecret_testdata[2328] */ + { 2329, 0x0000000000000000ULL, 0xAE061850019DBE99ULL }, /* XSUM_XXH3_withSecret_testdata[2329] */ + { 2330, 0x0000000000000000ULL, 0xE1F39AB61B422293ULL }, /* XSUM_XXH3_withSecret_testdata[2330] */ + { 2331, 0x0000000000000000ULL, 0x62DB49AFC1C4F8FDULL }, /* XSUM_XXH3_withSecret_testdata[2331] */ + { 2332, 0x0000000000000000ULL, 0x0E15D12F409EAF30ULL }, /* XSUM_XXH3_withSecret_testdata[2332] */ + { 2333, 0x0000000000000000ULL, 0xA6F5062EC3828EF0ULL }, /* XSUM_XXH3_withSecret_testdata[2333] */ + { 2334, 0x0000000000000000ULL, 0x36B250A63D1C818BULL }, /* XSUM_XXH3_withSecret_testdata[2334] */ + { 2335, 0x0000000000000000ULL, 0xDFABE5A2F7961DDFULL }, /* XSUM_XXH3_withSecret_testdata[2335] */ + { 2336, 0x0000000000000000ULL, 0x67A437068B4C2600ULL }, /* XSUM_XXH3_withSecret_testdata[2336] */ + { 2337, 0x0000000000000000ULL, 0x1BA587D9A6DB72C3ULL }, /* XSUM_XXH3_withSecret_testdata[2337] */ + { 2338, 0x0000000000000000ULL, 0x538AEE8149587087ULL }, /* XSUM_XXH3_withSecret_testdata[2338] */ + { 2339, 0x0000000000000000ULL, 0x3285AAB013567C5FULL }, /* XSUM_XXH3_withSecret_testdata[2339] */ + { 2340, 0x0000000000000000ULL, 0xC26F3DEE44BF2EA9ULL }, /* XSUM_XXH3_withSecret_testdata[2340] */ + { 2341, 0x0000000000000000ULL, 0x348A7241B6AD28A7ULL }, /* XSUM_XXH3_withSecret_testdata[2341] */ + { 2342, 0x0000000000000000ULL, 0xDDF55A6756E09B30ULL }, /* XSUM_XXH3_withSecret_testdata[2342] */ + { 2343, 0x0000000000000000ULL, 0x3E8B939249709C03ULL }, /* XSUM_XXH3_withSecret_testdata[2343] */ + { 2344, 0x0000000000000000ULL, 0x91CF4DD9B8F8177EULL }, /* XSUM_XXH3_withSecret_testdata[2344] */ + { 2345, 0x0000000000000000ULL, 0x41ECB4ED9F081942ULL }, /* XSUM_XXH3_withSecret_testdata[2345] */ + { 2346, 0x0000000000000000ULL, 0xAEB871BD0869CDE0ULL }, /* XSUM_XXH3_withSecret_testdata[2346] */ + { 2347, 0x0000000000000000ULL, 0x9038DEA18662CC53ULL }, /* XSUM_XXH3_withSecret_testdata[2347] */ + { 2348, 0x0000000000000000ULL, 0xBDACB85FB4C86F0EULL }, /* XSUM_XXH3_withSecret_testdata[2348] */ + { 2349, 0x0000000000000000ULL, 0x105F2CB1E1EC335EULL }, /* XSUM_XXH3_withSecret_testdata[2349] */ + { 2350, 0x0000000000000000ULL, 0x090F11A76291D38DULL }, /* XSUM_XXH3_withSecret_testdata[2350] */ + { 2351, 0x0000000000000000ULL, 0x237DE0A8D44955B6ULL }, /* XSUM_XXH3_withSecret_testdata[2351] */ + { 2352, 0x0000000000000000ULL, 0x7E0F9D584CF5208AULL }, /* XSUM_XXH3_withSecret_testdata[2352] */ + { 2353, 0x0000000000000000ULL, 0x7EF09D5885593DB0ULL }, /* XSUM_XXH3_withSecret_testdata[2353] */ + { 2354, 0x0000000000000000ULL, 0xD6BE93AAA0B8A89FULL }, /* XSUM_XXH3_withSecret_testdata[2354] */ + { 2355, 0x0000000000000000ULL, 0x7D15F8309D70544CULL }, /* XSUM_XXH3_withSecret_testdata[2355] */ + { 2356, 0x0000000000000000ULL, 0xB5F14F5E7471A2B7ULL }, /* XSUM_XXH3_withSecret_testdata[2356] */ + { 2357, 0x0000000000000000ULL, 0x334064923E684682ULL }, /* XSUM_XXH3_withSecret_testdata[2357] */ + { 2358, 0x0000000000000000ULL, 0xFF30F03C59F38BBDULL }, /* XSUM_XXH3_withSecret_testdata[2358] */ + { 2359, 0x0000000000000000ULL, 0x3A762E4100546EA4ULL }, /* XSUM_XXH3_withSecret_testdata[2359] */ + { 2360, 0x0000000000000000ULL, 0xD9DDC565C9E9A0E7ULL }, /* XSUM_XXH3_withSecret_testdata[2360] */ + { 2361, 0x0000000000000000ULL, 0x70F36B58887180BBULL }, /* XSUM_XXH3_withSecret_testdata[2361] */ + { 2362, 0x0000000000000000ULL, 0x29BF285E3EBA4ED9ULL }, /* XSUM_XXH3_withSecret_testdata[2362] */ + { 2363, 0x0000000000000000ULL, 0x14FC2BC449A6ECF0ULL }, /* XSUM_XXH3_withSecret_testdata[2363] */ + { 2364, 0x0000000000000000ULL, 0xFE96956AB41CD859ULL }, /* XSUM_XXH3_withSecret_testdata[2364] */ + { 2365, 0x0000000000000000ULL, 0xBB96D17D6E83D9C9ULL }, /* XSUM_XXH3_withSecret_testdata[2365] */ + { 2366, 0x0000000000000000ULL, 0x6B4B68C062B0298AULL }, /* XSUM_XXH3_withSecret_testdata[2366] */ + { 2367, 0x0000000000000000ULL, 0x293FA8E5173BB5E7ULL }, /* XSUM_XXH3_withSecret_testdata[2367] */ + { 2368, 0x0000000000000000ULL, 0x1B882F5651079927ULL }, /* XSUM_XXH3_withSecret_testdata[2368] */ + { 2369, 0x0000000000000000ULL, 0x6A188C171457CE57ULL }, /* XSUM_XXH3_withSecret_testdata[2369] */ + { 2370, 0x0000000000000000ULL, 0xD3F44413B4D09324ULL }, /* XSUM_XXH3_withSecret_testdata[2370] */ + { 2371, 0x0000000000000000ULL, 0x6C6CD3EA872E5A8CULL }, /* XSUM_XXH3_withSecret_testdata[2371] */ + { 2372, 0x0000000000000000ULL, 0x79DFB0C0A6B634E0ULL }, /* XSUM_XXH3_withSecret_testdata[2372] */ + { 2373, 0x0000000000000000ULL, 0xD1241D21D50CA4BAULL }, /* XSUM_XXH3_withSecret_testdata[2373] */ + { 2374, 0x0000000000000000ULL, 0xF56B4D8A22A9B86FULL }, /* XSUM_XXH3_withSecret_testdata[2374] */ + { 2375, 0x0000000000000000ULL, 0x87B5E3A9CD6C1B65ULL }, /* XSUM_XXH3_withSecret_testdata[2375] */ + { 2376, 0x0000000000000000ULL, 0xFFC47ACC372230BFULL }, /* XSUM_XXH3_withSecret_testdata[2376] */ + { 2377, 0x0000000000000000ULL, 0x5BED7B696B6C12F1ULL }, /* XSUM_XXH3_withSecret_testdata[2377] */ + { 2378, 0x0000000000000000ULL, 0x18CE009FEDEE2156ULL }, /* XSUM_XXH3_withSecret_testdata[2378] */ + { 2379, 0x0000000000000000ULL, 0xBDF6F810379417BAULL }, /* XSUM_XXH3_withSecret_testdata[2379] */ + { 2380, 0x0000000000000000ULL, 0xC7F1AF342CE168D0ULL }, /* XSUM_XXH3_withSecret_testdata[2380] */ + { 2381, 0x0000000000000000ULL, 0x0AAF181DD47DBB5DULL }, /* XSUM_XXH3_withSecret_testdata[2381] */ + { 2382, 0x0000000000000000ULL, 0x1CF5DCB8CDB85907ULL }, /* XSUM_XXH3_withSecret_testdata[2382] */ + { 2383, 0x0000000000000000ULL, 0x9E0F5C5CED32BE4FULL }, /* XSUM_XXH3_withSecret_testdata[2383] */ + { 2384, 0x0000000000000000ULL, 0x522A7BA369A1B06AULL }, /* XSUM_XXH3_withSecret_testdata[2384] */ + { 2385, 0x0000000000000000ULL, 0xEA13FB7B2DB0E8F7ULL }, /* XSUM_XXH3_withSecret_testdata[2385] */ + { 2386, 0x0000000000000000ULL, 0x111C82EFEF4AC81CULL }, /* XSUM_XXH3_withSecret_testdata[2386] */ + { 2387, 0x0000000000000000ULL, 0xD42417E6AB91AA73ULL }, /* XSUM_XXH3_withSecret_testdata[2387] */ + { 2388, 0x0000000000000000ULL, 0xA5ED1CAE4267B139ULL }, /* XSUM_XXH3_withSecret_testdata[2388] */ + { 2389, 0x0000000000000000ULL, 0x8B8F7C5BE746D545ULL }, /* XSUM_XXH3_withSecret_testdata[2389] */ + { 2390, 0x0000000000000000ULL, 0xF1B79500277FA08CULL }, /* XSUM_XXH3_withSecret_testdata[2390] */ + { 2391, 0x0000000000000000ULL, 0xAD9BD3DB0300687AULL }, /* XSUM_XXH3_withSecret_testdata[2391] */ + { 2392, 0x0000000000000000ULL, 0x33D69ACF9C4FE222ULL }, /* XSUM_XXH3_withSecret_testdata[2392] */ + { 2393, 0x0000000000000000ULL, 0x98A88A43B3E3CDBEULL }, /* XSUM_XXH3_withSecret_testdata[2393] */ + { 2394, 0x0000000000000000ULL, 0x30A45D82B0F02EB7ULL }, /* XSUM_XXH3_withSecret_testdata[2394] */ + { 2395, 0x0000000000000000ULL, 0x580A108EAD043AC9ULL }, /* XSUM_XXH3_withSecret_testdata[2395] */ + { 2396, 0x0000000000000000ULL, 0x7429D8E3A53EE029ULL }, /* XSUM_XXH3_withSecret_testdata[2396] */ + { 2397, 0x0000000000000000ULL, 0xEA9930AE2B2F60FBULL }, /* XSUM_XXH3_withSecret_testdata[2397] */ + { 2398, 0x0000000000000000ULL, 0x0DA3DC8BCB20D64EULL }, /* XSUM_XXH3_withSecret_testdata[2398] */ + { 2399, 0x0000000000000000ULL, 0x0C75205DB3508B7AULL }, /* XSUM_XXH3_withSecret_testdata[2399] */ + { 2400, 0x0000000000000000ULL, 0x80D24D897A728551ULL }, /* XSUM_XXH3_withSecret_testdata[2400] */ + { 2401, 0x0000000000000000ULL, 0xFE30EFE50F946152ULL }, /* XSUM_XXH3_withSecret_testdata[2401] */ + { 2402, 0x0000000000000000ULL, 0x85E4BE18299D1285ULL }, /* XSUM_XXH3_withSecret_testdata[2402] */ + { 2403, 0x0000000000000000ULL, 0xB2D074B0382F056EULL }, /* XSUM_XXH3_withSecret_testdata[2403] */ + { 2404, 0x0000000000000000ULL, 0xA21EE5579EB5A4C9ULL }, /* XSUM_XXH3_withSecret_testdata[2404] */ + { 2405, 0x0000000000000000ULL, 0xE790C026712CB55AULL }, /* XSUM_XXH3_withSecret_testdata[2405] */ + { 2406, 0x0000000000000000ULL, 0x0F45A0AE8363254CULL }, /* XSUM_XXH3_withSecret_testdata[2406] */ + { 2407, 0x0000000000000000ULL, 0xB3DA237C9CACA60EULL }, /* XSUM_XXH3_withSecret_testdata[2407] */ + { 2408, 0x0000000000000000ULL, 0x70E33D72FA0DA509ULL }, /* XSUM_XXH3_withSecret_testdata[2408] */ + { 2409, 0x0000000000000000ULL, 0x05EE5A65D7D947AFULL }, /* XSUM_XXH3_withSecret_testdata[2409] */ + { 2410, 0x0000000000000000ULL, 0x4ECC270183F5940EULL }, /* XSUM_XXH3_withSecret_testdata[2410] */ + { 2411, 0x0000000000000000ULL, 0x98CDFECB890A7AFFULL }, /* XSUM_XXH3_withSecret_testdata[2411] */ + { 2412, 0x0000000000000000ULL, 0x895CA875DFC9CE10ULL }, /* XSUM_XXH3_withSecret_testdata[2412] */ + { 2413, 0x0000000000000000ULL, 0xC6F78CB061FF6482ULL }, /* XSUM_XXH3_withSecret_testdata[2413] */ + { 2414, 0x0000000000000000ULL, 0x8B1D3731F960D49CULL }, /* XSUM_XXH3_withSecret_testdata[2414] */ + { 2415, 0x0000000000000000ULL, 0x7F0729071F504C31ULL }, /* XSUM_XXH3_withSecret_testdata[2415] */ + { 2416, 0x0000000000000000ULL, 0xC6A780A664181A68ULL }, /* XSUM_XXH3_withSecret_testdata[2416] */ + { 2417, 0x0000000000000000ULL, 0xE7715AD23570691DULL }, /* XSUM_XXH3_withSecret_testdata[2417] */ + { 2418, 0x0000000000000000ULL, 0xBDCCF3236454FC8BULL }, /* XSUM_XXH3_withSecret_testdata[2418] */ + { 2419, 0x0000000000000000ULL, 0x0932E0E9EDB1CD68ULL }, /* XSUM_XXH3_withSecret_testdata[2419] */ + { 2420, 0x0000000000000000ULL, 0x433EE97B5C9631A8ULL }, /* XSUM_XXH3_withSecret_testdata[2420] */ + { 2421, 0x0000000000000000ULL, 0xB6889338EC2C18E0ULL }, /* XSUM_XXH3_withSecret_testdata[2421] */ + { 2422, 0x0000000000000000ULL, 0x8696A03271D1ECE7ULL }, /* XSUM_XXH3_withSecret_testdata[2422] */ + { 2423, 0x0000000000000000ULL, 0xCEB3924AB5A6725FULL }, /* XSUM_XXH3_withSecret_testdata[2423] */ + { 2424, 0x0000000000000000ULL, 0x20C9F0CD77CA41BCULL }, /* XSUM_XXH3_withSecret_testdata[2424] */ + { 2425, 0x0000000000000000ULL, 0xC2505C37116B8B22ULL }, /* XSUM_XXH3_withSecret_testdata[2425] */ + { 2426, 0x0000000000000000ULL, 0x70FD393B1C645A72ULL }, /* XSUM_XXH3_withSecret_testdata[2426] */ + { 2427, 0x0000000000000000ULL, 0x07FFF1FA5AC85111ULL }, /* XSUM_XXH3_withSecret_testdata[2427] */ + { 2428, 0x0000000000000000ULL, 0x8DEF2B5E61346C3CULL }, /* XSUM_XXH3_withSecret_testdata[2428] */ + { 2429, 0x0000000000000000ULL, 0xD29906E134ECCBDEULL }, /* XSUM_XXH3_withSecret_testdata[2429] */ + { 2430, 0x0000000000000000ULL, 0x9BFC0064C0007990ULL }, /* XSUM_XXH3_withSecret_testdata[2430] */ + { 2431, 0x0000000000000000ULL, 0x4274443E4156CA77ULL }, /* XSUM_XXH3_withSecret_testdata[2431] */ + { 2432, 0x0000000000000000ULL, 0x0D4D78D4EDF1FCB6ULL }, /* XSUM_XXH3_withSecret_testdata[2432] */ + { 2433, 0x0000000000000000ULL, 0x2D55D642B7700A7CULL }, /* XSUM_XXH3_withSecret_testdata[2433] */ + { 2434, 0x0000000000000000ULL, 0x24E462804F657DF5ULL }, /* XSUM_XXH3_withSecret_testdata[2434] */ + { 2435, 0x0000000000000000ULL, 0x5D28B70B8FA63D27ULL }, /* XSUM_XXH3_withSecret_testdata[2435] */ + { 2436, 0x0000000000000000ULL, 0x44F818945C47786DULL }, /* XSUM_XXH3_withSecret_testdata[2436] */ + { 2437, 0x0000000000000000ULL, 0x281105C6C8092779ULL }, /* XSUM_XXH3_withSecret_testdata[2437] */ + { 2438, 0x0000000000000000ULL, 0x869008B4D0AF7346ULL }, /* XSUM_XXH3_withSecret_testdata[2438] */ + { 2439, 0x0000000000000000ULL, 0x3120496A0616B651ULL }, /* XSUM_XXH3_withSecret_testdata[2439] */ + { 2440, 0x0000000000000000ULL, 0xD4DB81F310CEC01CULL }, /* XSUM_XXH3_withSecret_testdata[2440] */ + { 2441, 0x0000000000000000ULL, 0x57362AF4E0DDF68AULL }, /* XSUM_XXH3_withSecret_testdata[2441] */ + { 2442, 0x0000000000000000ULL, 0x95C96818627768E6ULL }, /* XSUM_XXH3_withSecret_testdata[2442] */ + { 2443, 0x0000000000000000ULL, 0x2788FF564FEC3E57ULL }, /* XSUM_XXH3_withSecret_testdata[2443] */ + { 2444, 0x0000000000000000ULL, 0x9C15B563D3265543ULL }, /* XSUM_XXH3_withSecret_testdata[2444] */ + { 2445, 0x0000000000000000ULL, 0xFADBEF090BE12542ULL }, /* XSUM_XXH3_withSecret_testdata[2445] */ + { 2446, 0x0000000000000000ULL, 0x3256859436D9DDF7ULL }, /* XSUM_XXH3_withSecret_testdata[2446] */ + { 2447, 0x0000000000000000ULL, 0x8F5F40B4D39240A2ULL }, /* XSUM_XXH3_withSecret_testdata[2447] */ + { 2448, 0x0000000000000000ULL, 0x0E00107DF805EB9CULL }, /* XSUM_XXH3_withSecret_testdata[2448] */ + { 2449, 0x0000000000000000ULL, 0xAAFB5767B351AB41ULL }, /* XSUM_XXH3_withSecret_testdata[2449] */ + { 2450, 0x0000000000000000ULL, 0x2D9FD1C8B0405917ULL }, /* XSUM_XXH3_withSecret_testdata[2450] */ + { 2451, 0x0000000000000000ULL, 0x27308E0DDB72C823ULL }, /* XSUM_XXH3_withSecret_testdata[2451] */ + { 2452, 0x0000000000000000ULL, 0xFB55B59AFFB43916ULL }, /* XSUM_XXH3_withSecret_testdata[2452] */ + { 2453, 0x0000000000000000ULL, 0xC07DFEFCB5B2D5B6ULL }, /* XSUM_XXH3_withSecret_testdata[2453] */ + { 2454, 0x0000000000000000ULL, 0x40879FA760711BAFULL }, /* XSUM_XXH3_withSecret_testdata[2454] */ + { 2455, 0x0000000000000000ULL, 0x667ED3F019228B0CULL }, /* XSUM_XXH3_withSecret_testdata[2455] */ + { 2456, 0x0000000000000000ULL, 0xEBE6ECAD9764AA3EULL }, /* XSUM_XXH3_withSecret_testdata[2456] */ + { 2457, 0x0000000000000000ULL, 0x1246C8795EFE16D1ULL }, /* XSUM_XXH3_withSecret_testdata[2457] */ + { 2458, 0x0000000000000000ULL, 0x88D31024FB5E683DULL }, /* XSUM_XXH3_withSecret_testdata[2458] */ + { 2459, 0x0000000000000000ULL, 0xD96D0332AE7548C8ULL }, /* XSUM_XXH3_withSecret_testdata[2459] */ + { 2460, 0x0000000000000000ULL, 0xAA5575DD95A6BA06ULL }, /* XSUM_XXH3_withSecret_testdata[2460] */ + { 2461, 0x0000000000000000ULL, 0x5682F991E5BC5D8AULL }, /* XSUM_XXH3_withSecret_testdata[2461] */ + { 2462, 0x0000000000000000ULL, 0xEDFE8BB51A687107ULL }, /* XSUM_XXH3_withSecret_testdata[2462] */ + { 2463, 0x0000000000000000ULL, 0x1B38DBE4F651736FULL }, /* XSUM_XXH3_withSecret_testdata[2463] */ + { 2464, 0x0000000000000000ULL, 0x1CC60A21BC604F8DULL }, /* XSUM_XXH3_withSecret_testdata[2464] */ + { 2465, 0x0000000000000000ULL, 0x270053B3B13C42DAULL }, /* XSUM_XXH3_withSecret_testdata[2465] */ + { 2466, 0x0000000000000000ULL, 0x2180A9FF32236AAFULL }, /* XSUM_XXH3_withSecret_testdata[2466] */ + { 2467, 0x0000000000000000ULL, 0x85F2BD99858D5E6DULL }, /* XSUM_XXH3_withSecret_testdata[2467] */ + { 2468, 0x0000000000000000ULL, 0xA168796BF2C8C114ULL }, /* XSUM_XXH3_withSecret_testdata[2468] */ + { 2469, 0x0000000000000000ULL, 0xC818D608F9023AE9ULL }, /* XSUM_XXH3_withSecret_testdata[2469] */ + { 2470, 0x0000000000000000ULL, 0x89B52704F5E3069FULL }, /* XSUM_XXH3_withSecret_testdata[2470] */ + { 2471, 0x0000000000000000ULL, 0x56073CAA4FCABE72ULL }, /* XSUM_XXH3_withSecret_testdata[2471] */ + { 2472, 0x0000000000000000ULL, 0x8E508BBE3198B900ULL }, /* XSUM_XXH3_withSecret_testdata[2472] */ + { 2473, 0x0000000000000000ULL, 0x1677CCEC11C3F063ULL }, /* XSUM_XXH3_withSecret_testdata[2473] */ + { 2474, 0x0000000000000000ULL, 0x8D85A95827FBFAD8ULL }, /* XSUM_XXH3_withSecret_testdata[2474] */ + { 2475, 0x0000000000000000ULL, 0x7F7633ED9861DF1EULL }, /* XSUM_XXH3_withSecret_testdata[2475] */ + { 2476, 0x0000000000000000ULL, 0xD348FAF7835D577AULL }, /* XSUM_XXH3_withSecret_testdata[2476] */ + { 2477, 0x0000000000000000ULL, 0xF908BB63497C2945ULL }, /* XSUM_XXH3_withSecret_testdata[2477] */ + { 2478, 0x0000000000000000ULL, 0x979518A224EB5E87ULL }, /* XSUM_XXH3_withSecret_testdata[2478] */ + { 2479, 0x0000000000000000ULL, 0x3D203CC868768949ULL }, /* XSUM_XXH3_withSecret_testdata[2479] */ + { 2480, 0x0000000000000000ULL, 0xF3101E499D73F4C8ULL }, /* XSUM_XXH3_withSecret_testdata[2480] */ + { 2481, 0x0000000000000000ULL, 0x102F7AF08F61921CULL }, /* XSUM_XXH3_withSecret_testdata[2481] */ + { 2482, 0x0000000000000000ULL, 0x208B7FF8E2D506EAULL }, /* XSUM_XXH3_withSecret_testdata[2482] */ + { 2483, 0x0000000000000000ULL, 0x8D7F78B8EF6276CAULL }, /* XSUM_XXH3_withSecret_testdata[2483] */ + { 2484, 0x0000000000000000ULL, 0xB088A088843D3809ULL }, /* XSUM_XXH3_withSecret_testdata[2484] */ + { 2485, 0x0000000000000000ULL, 0x954FBFC5EC93F9B4ULL }, /* XSUM_XXH3_withSecret_testdata[2485] */ + { 2486, 0x0000000000000000ULL, 0xCF57A7D34AECF59AULL }, /* XSUM_XXH3_withSecret_testdata[2486] */ + { 2487, 0x0000000000000000ULL, 0xE2C95460AFE2B595ULL }, /* XSUM_XXH3_withSecret_testdata[2487] */ + { 2488, 0x0000000000000000ULL, 0xB4CEE088A87489D8ULL }, /* XSUM_XXH3_withSecret_testdata[2488] */ + { 2489, 0x0000000000000000ULL, 0x0F0E7C83FB06D9C5ULL }, /* XSUM_XXH3_withSecret_testdata[2489] */ + { 2490, 0x0000000000000000ULL, 0xAF57F16C7833732DULL }, /* XSUM_XXH3_withSecret_testdata[2490] */ + { 2491, 0x0000000000000000ULL, 0x8B1B9676501880D3ULL }, /* XSUM_XXH3_withSecret_testdata[2491] */ + { 2492, 0x0000000000000000ULL, 0x12FC866CD78CE6DEULL }, /* XSUM_XXH3_withSecret_testdata[2492] */ + { 2493, 0x0000000000000000ULL, 0x0EE4CDEF24E19E99ULL }, /* XSUM_XXH3_withSecret_testdata[2493] */ + { 2494, 0x0000000000000000ULL, 0x6807875A1D02F65CULL }, /* XSUM_XXH3_withSecret_testdata[2494] */ + { 2495, 0x0000000000000000ULL, 0x94A6BA9FD94FA3A6ULL }, /* XSUM_XXH3_withSecret_testdata[2495] */ + { 2496, 0x0000000000000000ULL, 0x98C9DEF1F19EC98BULL }, /* XSUM_XXH3_withSecret_testdata[2496] */ + { 2497, 0x0000000000000000ULL, 0xB0B6920A0649B742ULL }, /* XSUM_XXH3_withSecret_testdata[2497] */ + { 2498, 0x0000000000000000ULL, 0xC9BECEBB737AB089ULL }, /* XSUM_XXH3_withSecret_testdata[2498] */ + { 2499, 0x0000000000000000ULL, 0x571F9E81DFA87670ULL }, /* XSUM_XXH3_withSecret_testdata[2499] */ + { 2500, 0x0000000000000000ULL, 0xC30E1D27E4245484ULL }, /* XSUM_XXH3_withSecret_testdata[2500] */ + { 2501, 0x0000000000000000ULL, 0xB013E7F8FD67F03FULL }, /* XSUM_XXH3_withSecret_testdata[2501] */ + { 2502, 0x0000000000000000ULL, 0x303BC518E2B05577ULL }, /* XSUM_XXH3_withSecret_testdata[2502] */ + { 2503, 0x0000000000000000ULL, 0x150C8479B8B7AC06ULL }, /* XSUM_XXH3_withSecret_testdata[2503] */ + { 2504, 0x0000000000000000ULL, 0x53E0E976AC861E3AULL }, /* XSUM_XXH3_withSecret_testdata[2504] */ + { 2505, 0x0000000000000000ULL, 0xF46C5524FDC4D85EULL }, /* XSUM_XXH3_withSecret_testdata[2505] */ + { 2506, 0x0000000000000000ULL, 0x3E890C313A5E3202ULL }, /* XSUM_XXH3_withSecret_testdata[2506] */ + { 2507, 0x0000000000000000ULL, 0x893E6CA9065BEDD2ULL }, /* XSUM_XXH3_withSecret_testdata[2507] */ + { 2508, 0x0000000000000000ULL, 0xD586CAA92858A4BDULL }, /* XSUM_XXH3_withSecret_testdata[2508] */ + { 2509, 0x0000000000000000ULL, 0x84B0D3570788F93EULL }, /* XSUM_XXH3_withSecret_testdata[2509] */ + { 2510, 0x0000000000000000ULL, 0xD61AFB9478BA478DULL }, /* XSUM_XXH3_withSecret_testdata[2510] */ + { 2511, 0x0000000000000000ULL, 0x29607FF29311310EULL }, /* XSUM_XXH3_withSecret_testdata[2511] */ + { 2512, 0x0000000000000000ULL, 0x0D808C86F2EF5F22ULL }, /* XSUM_XXH3_withSecret_testdata[2512] */ + { 2513, 0x0000000000000000ULL, 0xF54FF2663629C10BULL }, /* XSUM_XXH3_withSecret_testdata[2513] */ + { 2514, 0x0000000000000000ULL, 0x419D659851931A87ULL }, /* XSUM_XXH3_withSecret_testdata[2514] */ + { 2515, 0x0000000000000000ULL, 0x1BD6867547C59B6DULL }, /* XSUM_XXH3_withSecret_testdata[2515] */ + { 2516, 0x0000000000000000ULL, 0x6BAAB7CF89ADC0F7ULL }, /* XSUM_XXH3_withSecret_testdata[2516] */ + { 2517, 0x0000000000000000ULL, 0x95EF25B5E3BD9EDFULL }, /* XSUM_XXH3_withSecret_testdata[2517] */ + { 2518, 0x0000000000000000ULL, 0x86424658110D1E62ULL }, /* XSUM_XXH3_withSecret_testdata[2518] */ + { 2519, 0x0000000000000000ULL, 0x6F9843416A88B93EULL }, /* XSUM_XXH3_withSecret_testdata[2519] */ + { 2520, 0x0000000000000000ULL, 0xC809656F05AD6C8DULL }, /* XSUM_XXH3_withSecret_testdata[2520] */ + { 2521, 0x0000000000000000ULL, 0xA026416073B3FBABULL }, /* XSUM_XXH3_withSecret_testdata[2521] */ + { 2522, 0x0000000000000000ULL, 0xAFD0D8DD43FCD09FULL }, /* XSUM_XXH3_withSecret_testdata[2522] */ + { 2523, 0x0000000000000000ULL, 0x2760C965119529F0ULL }, /* XSUM_XXH3_withSecret_testdata[2523] */ + { 2524, 0x0000000000000000ULL, 0x83CAC7433219E867ULL }, /* XSUM_XXH3_withSecret_testdata[2524] */ + { 2525, 0x0000000000000000ULL, 0x64E93944571E86C8ULL }, /* XSUM_XXH3_withSecret_testdata[2525] */ + { 2526, 0x0000000000000000ULL, 0x2C19A96954E7A833ULL }, /* XSUM_XXH3_withSecret_testdata[2526] */ + { 2527, 0x0000000000000000ULL, 0x543DFEDA890C39BBULL }, /* XSUM_XXH3_withSecret_testdata[2527] */ + { 2528, 0x0000000000000000ULL, 0x5720CBADD0EFDCBEULL }, /* XSUM_XXH3_withSecret_testdata[2528] */ + { 2529, 0x0000000000000000ULL, 0x4FD962132FEC0ED2ULL }, /* XSUM_XXH3_withSecret_testdata[2529] */ + { 2530, 0x0000000000000000ULL, 0xCCD4FECCF1E8032EULL }, /* XSUM_XXH3_withSecret_testdata[2530] */ + { 2531, 0x0000000000000000ULL, 0xB3AE392B45F6A37CULL }, /* XSUM_XXH3_withSecret_testdata[2531] */ + { 2532, 0x0000000000000000ULL, 0x3C75320C9AD26401ULL }, /* XSUM_XXH3_withSecret_testdata[2532] */ + { 2533, 0x0000000000000000ULL, 0xDC3F74F3D216386CULL }, /* XSUM_XXH3_withSecret_testdata[2533] */ + { 2534, 0x0000000000000000ULL, 0x160EF753CB403670ULL }, /* XSUM_XXH3_withSecret_testdata[2534] */ + { 2535, 0x0000000000000000ULL, 0x736C58212031C9F2ULL }, /* XSUM_XXH3_withSecret_testdata[2535] */ + { 2536, 0x0000000000000000ULL, 0x840DF498666247B0ULL }, /* XSUM_XXH3_withSecret_testdata[2536] */ + { 2537, 0x0000000000000000ULL, 0x974AA66890FC3B30ULL }, /* XSUM_XXH3_withSecret_testdata[2537] */ + { 2538, 0x0000000000000000ULL, 0x04954981FB429374ULL }, /* XSUM_XXH3_withSecret_testdata[2538] */ + { 2539, 0x0000000000000000ULL, 0x4A6304B4C047FF06ULL }, /* XSUM_XXH3_withSecret_testdata[2539] */ + { 2540, 0x0000000000000000ULL, 0x2D9D745BCB5101F5ULL }, /* XSUM_XXH3_withSecret_testdata[2540] */ + { 2541, 0x0000000000000000ULL, 0xC28C2179D0AC9E6BULL }, /* XSUM_XXH3_withSecret_testdata[2541] */ + { 2542, 0x0000000000000000ULL, 0x7B33FE2A667B40D9ULL }, /* XSUM_XXH3_withSecret_testdata[2542] */ + { 2543, 0x0000000000000000ULL, 0x018DD8A27F419088ULL }, /* XSUM_XXH3_withSecret_testdata[2543] */ + { 2544, 0x0000000000000000ULL, 0x6B76AE9256EDF554ULL }, /* XSUM_XXH3_withSecret_testdata[2544] */ + { 2545, 0x0000000000000000ULL, 0x18FEF311A3055CFAULL }, /* XSUM_XXH3_withSecret_testdata[2545] */ + { 2546, 0x0000000000000000ULL, 0x41B142ADD315C08AULL }, /* XSUM_XXH3_withSecret_testdata[2546] */ + { 2547, 0x0000000000000000ULL, 0x776E02A5C2BCCB16ULL }, /* XSUM_XXH3_withSecret_testdata[2547] */ + { 2548, 0x0000000000000000ULL, 0x8B3568C5708894A7ULL }, /* XSUM_XXH3_withSecret_testdata[2548] */ + { 2549, 0x0000000000000000ULL, 0xD5FBC5EC8C745887ULL }, /* XSUM_XXH3_withSecret_testdata[2549] */ + { 2550, 0x0000000000000000ULL, 0x0D138006F0EFEBB6ULL }, /* XSUM_XXH3_withSecret_testdata[2550] */ + { 2551, 0x0000000000000000ULL, 0xD81964889ACDA99CULL }, /* XSUM_XXH3_withSecret_testdata[2551] */ + { 2552, 0x0000000000000000ULL, 0xF2DAE9DDB84211F1ULL }, /* XSUM_XXH3_withSecret_testdata[2552] */ + { 2553, 0x0000000000000000ULL, 0xB682C5F44B0F4ADFULL }, /* XSUM_XXH3_withSecret_testdata[2553] */ + { 2554, 0x0000000000000000ULL, 0x3F79622325944B3AULL }, /* XSUM_XXH3_withSecret_testdata[2554] */ + { 2555, 0x0000000000000000ULL, 0xE1573557F70CC302ULL }, /* XSUM_XXH3_withSecret_testdata[2555] */ + { 2556, 0x0000000000000000ULL, 0xDF8146D7E8F45BD6ULL }, /* XSUM_XXH3_withSecret_testdata[2556] */ + { 2557, 0x0000000000000000ULL, 0xE556F3A899F3CECDULL }, /* XSUM_XXH3_withSecret_testdata[2557] */ + { 2558, 0x0000000000000000ULL, 0xB2FD4B464AE294B6ULL }, /* XSUM_XXH3_withSecret_testdata[2558] */ + { 2559, 0x0000000000000000ULL, 0x8DEF064E344B1567ULL }, /* XSUM_XXH3_withSecret_testdata[2559] */ + { 2560, 0x0000000000000000ULL, 0x16EE80901F5FD360ULL }, /* XSUM_XXH3_withSecret_testdata[2560] */ + { 2561, 0x0000000000000000ULL, 0x93212C53420EAB20ULL }, /* XSUM_XXH3_withSecret_testdata[2561] */ + { 2562, 0x0000000000000000ULL, 0x4E97EBED9E7BB8ABULL }, /* XSUM_XXH3_withSecret_testdata[2562] */ + { 2563, 0x0000000000000000ULL, 0x36A00A2095233FA5ULL }, /* XSUM_XXH3_withSecret_testdata[2563] */ + { 2564, 0x0000000000000000ULL, 0x5FFB1980AB9EF7A5ULL }, /* XSUM_XXH3_withSecret_testdata[2564] */ + { 2565, 0x0000000000000000ULL, 0xC7CF3B9AD3DFC66CULL }, /* XSUM_XXH3_withSecret_testdata[2565] */ + { 2566, 0x0000000000000000ULL, 0x302798DF16BE571EULL }, /* XSUM_XXH3_withSecret_testdata[2566] */ + { 2567, 0x0000000000000000ULL, 0xA96EF549FA2166CDULL }, /* XSUM_XXH3_withSecret_testdata[2567] */ + { 2568, 0x0000000000000000ULL, 0xE87D4F0D2633710EULL }, /* XSUM_XXH3_withSecret_testdata[2568] */ + { 2569, 0x0000000000000000ULL, 0x37C4DDC5E76B9552ULL }, /* XSUM_XXH3_withSecret_testdata[2569] */ + { 2570, 0x0000000000000000ULL, 0x6730458D0BEC200CULL }, /* XSUM_XXH3_withSecret_testdata[2570] */ + { 2571, 0x0000000000000000ULL, 0x7EB259A765331316ULL }, /* XSUM_XXH3_withSecret_testdata[2571] */ + { 2572, 0x0000000000000000ULL, 0x9C7AA86195F57267ULL }, /* XSUM_XXH3_withSecret_testdata[2572] */ + { 2573, 0x0000000000000000ULL, 0xF73FD42643DC849EULL }, /* XSUM_XXH3_withSecret_testdata[2573] */ + { 2574, 0x0000000000000000ULL, 0x2A909E1A7BAE7038ULL }, /* XSUM_XXH3_withSecret_testdata[2574] */ + { 2575, 0x0000000000000000ULL, 0xA368FC34F33D2775ULL }, /* XSUM_XXH3_withSecret_testdata[2575] */ + { 2576, 0x0000000000000000ULL, 0x37A51C9E6EE2277BULL }, /* XSUM_XXH3_withSecret_testdata[2576] */ + { 2577, 0x0000000000000000ULL, 0xD54B979F6DA0F96DULL }, /* XSUM_XXH3_withSecret_testdata[2577] */ + { 2578, 0x0000000000000000ULL, 0x57FDF444EB565B36ULL }, /* XSUM_XXH3_withSecret_testdata[2578] */ + { 2579, 0x0000000000000000ULL, 0xEC30F9C831A60851ULL }, /* XSUM_XXH3_withSecret_testdata[2579] */ + { 2580, 0x0000000000000000ULL, 0x6E2D789FE72D6F4DULL }, /* XSUM_XXH3_withSecret_testdata[2580] */ + { 2581, 0x0000000000000000ULL, 0x942E1D90CF6B9E18ULL }, /* XSUM_XXH3_withSecret_testdata[2581] */ + { 2582, 0x0000000000000000ULL, 0x8AE3BE86A47DA957ULL }, /* XSUM_XXH3_withSecret_testdata[2582] */ + { 2583, 0x0000000000000000ULL, 0xCCA4C892ADFE4F73ULL }, /* XSUM_XXH3_withSecret_testdata[2583] */ + { 2584, 0x0000000000000000ULL, 0x833C06D264B01768ULL }, /* XSUM_XXH3_withSecret_testdata[2584] */ + { 2585, 0x0000000000000000ULL, 0x6D1048FF62E9EB4AULL }, /* XSUM_XXH3_withSecret_testdata[2585] */ + { 2586, 0x0000000000000000ULL, 0xD655BA7431A0912BULL }, /* XSUM_XXH3_withSecret_testdata[2586] */ + { 2587, 0x0000000000000000ULL, 0x017B15C673D638F2ULL }, /* XSUM_XXH3_withSecret_testdata[2587] */ + { 2588, 0x0000000000000000ULL, 0x060FF36A6F988FF4ULL }, /* XSUM_XXH3_withSecret_testdata[2588] */ + { 2589, 0x0000000000000000ULL, 0xE7F046C6DEAD7BCFULL }, /* XSUM_XXH3_withSecret_testdata[2589] */ + { 2590, 0x0000000000000000ULL, 0x55606B4202BAD261ULL }, /* XSUM_XXH3_withSecret_testdata[2590] */ + { 2591, 0x0000000000000000ULL, 0x70B45508D2567155ULL }, /* XSUM_XXH3_withSecret_testdata[2591] */ + { 2592, 0x0000000000000000ULL, 0xFDDBEB1AAB020A1AULL }, /* XSUM_XXH3_withSecret_testdata[2592] */ + { 2593, 0x0000000000000000ULL, 0xADBBB1B29B1D5ACEULL }, /* XSUM_XXH3_withSecret_testdata[2593] */ + { 2594, 0x0000000000000000ULL, 0xDD7F32DF066A745EULL }, /* XSUM_XXH3_withSecret_testdata[2594] */ + { 2595, 0x0000000000000000ULL, 0xB495E5866461FE91ULL }, /* XSUM_XXH3_withSecret_testdata[2595] */ + { 2596, 0x0000000000000000ULL, 0x8F53A734753051B8ULL }, /* XSUM_XXH3_withSecret_testdata[2596] */ + { 2597, 0x0000000000000000ULL, 0xE2936E2F47754D48ULL }, /* XSUM_XXH3_withSecret_testdata[2597] */ + { 2598, 0x0000000000000000ULL, 0x7DFFDDBB3380E963ULL }, /* XSUM_XXH3_withSecret_testdata[2598] */ + { 2599, 0x0000000000000000ULL, 0x9D1CAD8EFEAAE47FULL }, /* XSUM_XXH3_withSecret_testdata[2599] */ + { 2600, 0x0000000000000000ULL, 0xC8F4FF8AA05CF97BULL }, /* XSUM_XXH3_withSecret_testdata[2600] */ + { 2601, 0x0000000000000000ULL, 0x664EB6E49571EA2DULL }, /* XSUM_XXH3_withSecret_testdata[2601] */ + { 2602, 0x0000000000000000ULL, 0x692108073687893CULL }, /* XSUM_XXH3_withSecret_testdata[2602] */ + { 2603, 0x0000000000000000ULL, 0x7BDF43C6D590A9D1ULL }, /* XSUM_XXH3_withSecret_testdata[2603] */ + { 2604, 0x0000000000000000ULL, 0x7A91B2ABC5A49158ULL }, /* XSUM_XXH3_withSecret_testdata[2604] */ + { 2605, 0x0000000000000000ULL, 0x88E7C28EA89E5B6DULL }, /* XSUM_XXH3_withSecret_testdata[2605] */ + { 2606, 0x0000000000000000ULL, 0xCE5E9D6C768E31C8ULL }, /* XSUM_XXH3_withSecret_testdata[2606] */ + { 2607, 0x0000000000000000ULL, 0x543A7FA1ADA6E389ULL }, /* XSUM_XXH3_withSecret_testdata[2607] */ + { 2608, 0x0000000000000000ULL, 0xB1323D2F495C71EEULL }, /* XSUM_XXH3_withSecret_testdata[2608] */ + { 2609, 0x0000000000000000ULL, 0x1137F916C416A5F0ULL }, /* XSUM_XXH3_withSecret_testdata[2609] */ + { 2610, 0x0000000000000000ULL, 0xD9856B10DBF1F456ULL }, /* XSUM_XXH3_withSecret_testdata[2610] */ + { 2611, 0x0000000000000000ULL, 0xB74F58BE5684931CULL }, /* XSUM_XXH3_withSecret_testdata[2611] */ + { 2612, 0x0000000000000000ULL, 0xEDEA21DC494254DCULL }, /* XSUM_XXH3_withSecret_testdata[2612] */ + { 2613, 0x0000000000000000ULL, 0x01B756211ABF146CULL }, /* XSUM_XXH3_withSecret_testdata[2613] */ + { 2614, 0x0000000000000000ULL, 0x967C06CCEBB5A471ULL }, /* XSUM_XXH3_withSecret_testdata[2614] */ + { 2615, 0x0000000000000000ULL, 0xF144F6B209875574ULL }, /* XSUM_XXH3_withSecret_testdata[2615] */ + { 2616, 0x0000000000000000ULL, 0xC198AC39900B1793ULL }, /* XSUM_XXH3_withSecret_testdata[2616] */ + { 2617, 0x0000000000000000ULL, 0xDA26311DFE811C2DULL }, /* XSUM_XXH3_withSecret_testdata[2617] */ + { 2618, 0x0000000000000000ULL, 0x7F14937F6C7ED2A7ULL }, /* XSUM_XXH3_withSecret_testdata[2618] */ + { 2619, 0x0000000000000000ULL, 0x4066C04C1DD840DBULL }, /* XSUM_XXH3_withSecret_testdata[2619] */ + { 2620, 0x0000000000000000ULL, 0x1E2D0B4FA2C9824AULL }, /* XSUM_XXH3_withSecret_testdata[2620] */ + { 2621, 0x0000000000000000ULL, 0xC73016F08F32DD84ULL }, /* XSUM_XXH3_withSecret_testdata[2621] */ + { 2622, 0x0000000000000000ULL, 0xB8EBE60A20704C50ULL }, /* XSUM_XXH3_withSecret_testdata[2622] */ + { 2623, 0x0000000000000000ULL, 0xD4D18BB02D843624ULL }, /* XSUM_XXH3_withSecret_testdata[2623] */ + { 2624, 0x0000000000000000ULL, 0x9578A4EBD51BFF5AULL }, /* XSUM_XXH3_withSecret_testdata[2624] */ + { 2625, 0x0000000000000000ULL, 0xB57F7BB909809262ULL }, /* XSUM_XXH3_withSecret_testdata[2625] */ + { 2626, 0x0000000000000000ULL, 0x9372C2DC9DFCE366ULL }, /* XSUM_XXH3_withSecret_testdata[2626] */ + { 2627, 0x0000000000000000ULL, 0x81EF7C0B63BC899FULL }, /* XSUM_XXH3_withSecret_testdata[2627] */ + { 2628, 0x0000000000000000ULL, 0x190A38990E8A0DD0ULL }, /* XSUM_XXH3_withSecret_testdata[2628] */ + { 2629, 0x0000000000000000ULL, 0x1BDA829E6225EAE3ULL }, /* XSUM_XXH3_withSecret_testdata[2629] */ + { 2630, 0x0000000000000000ULL, 0xDDE9CBA47EA1D192ULL }, /* XSUM_XXH3_withSecret_testdata[2630] */ + { 2631, 0x0000000000000000ULL, 0x0F0E82D98FCC1F93ULL }, /* XSUM_XXH3_withSecret_testdata[2631] */ + { 2632, 0x0000000000000000ULL, 0x00A7DDF5CD8188D4ULL }, /* XSUM_XXH3_withSecret_testdata[2632] */ + { 2633, 0x0000000000000000ULL, 0x02E7E82785C1E2A9ULL }, /* XSUM_XXH3_withSecret_testdata[2633] */ + { 2634, 0x0000000000000000ULL, 0x0BC2BEA55AFD193BULL }, /* XSUM_XXH3_withSecret_testdata[2634] */ + { 2635, 0x0000000000000000ULL, 0x439AD5248A2FB89FULL }, /* XSUM_XXH3_withSecret_testdata[2635] */ + { 2636, 0x0000000000000000ULL, 0x58C9ADCB09BEC325ULL }, /* XSUM_XXH3_withSecret_testdata[2636] */ + { 2637, 0x0000000000000000ULL, 0x5001BBC78E724B9DULL }, /* XSUM_XXH3_withSecret_testdata[2637] */ + { 2638, 0x0000000000000000ULL, 0x0804A7BC3B216DB1ULL }, /* XSUM_XXH3_withSecret_testdata[2638] */ + { 2639, 0x0000000000000000ULL, 0x8BBCCD92E34788DFULL }, /* XSUM_XXH3_withSecret_testdata[2639] */ + { 2640, 0x0000000000000000ULL, 0xC41A91B7D8601816ULL }, /* XSUM_XXH3_withSecret_testdata[2640] */ + { 2641, 0x0000000000000000ULL, 0x55BEE36549E0870BULL }, /* XSUM_XXH3_withSecret_testdata[2641] */ + { 2642, 0x0000000000000000ULL, 0x16089A865A847A43ULL }, /* XSUM_XXH3_withSecret_testdata[2642] */ + { 2643, 0x0000000000000000ULL, 0x8105DF0C7462BF52ULL }, /* XSUM_XXH3_withSecret_testdata[2643] */ + { 2644, 0x0000000000000000ULL, 0xE71BA1F013FB3E10ULL }, /* XSUM_XXH3_withSecret_testdata[2644] */ + { 2645, 0x0000000000000000ULL, 0x64A5697CB91C7206ULL }, /* XSUM_XXH3_withSecret_testdata[2645] */ + { 2646, 0x0000000000000000ULL, 0x9E373E290C75846AULL }, /* XSUM_XXH3_withSecret_testdata[2646] */ + { 2647, 0x0000000000000000ULL, 0xD1BBE5E4FCBDC2ADULL }, /* XSUM_XXH3_withSecret_testdata[2647] */ + { 2648, 0x0000000000000000ULL, 0xFEE2E93D7FB4E975ULL }, /* XSUM_XXH3_withSecret_testdata[2648] */ + { 2649, 0x0000000000000000ULL, 0x6876D7CB7DC9797FULL }, /* XSUM_XXH3_withSecret_testdata[2649] */ + { 2650, 0x0000000000000000ULL, 0xD9B0BCDE3BF12705ULL }, /* XSUM_XXH3_withSecret_testdata[2650] */ + { 2651, 0x0000000000000000ULL, 0x495250888BB32B49ULL }, /* XSUM_XXH3_withSecret_testdata[2651] */ + { 2652, 0x0000000000000000ULL, 0xEE445EFDF52C0A42ULL }, /* XSUM_XXH3_withSecret_testdata[2652] */ + { 2653, 0x0000000000000000ULL, 0x3164C3796738DAE1ULL }, /* XSUM_XXH3_withSecret_testdata[2653] */ + { 2654, 0x0000000000000000ULL, 0x7AE6680348D45EFFULL }, /* XSUM_XXH3_withSecret_testdata[2654] */ + { 2655, 0x0000000000000000ULL, 0x8E70038B332D3F54ULL }, /* XSUM_XXH3_withSecret_testdata[2655] */ + { 2656, 0x0000000000000000ULL, 0x3E03BCB79DA50B2FULL }, /* XSUM_XXH3_withSecret_testdata[2656] */ + { 2657, 0x0000000000000000ULL, 0x7386A16500321DAAULL }, /* XSUM_XXH3_withSecret_testdata[2657] */ + { 2658, 0x0000000000000000ULL, 0x7918738CBE919FD2ULL }, /* XSUM_XXH3_withSecret_testdata[2658] */ + { 2659, 0x0000000000000000ULL, 0x36B19C977E3D64F2ULL }, /* XSUM_XXH3_withSecret_testdata[2659] */ + { 2660, 0x0000000000000000ULL, 0x672A654152793BF1ULL }, /* XSUM_XXH3_withSecret_testdata[2660] */ + { 2661, 0x0000000000000000ULL, 0x91C67413D6E7609AULL }, /* XSUM_XXH3_withSecret_testdata[2661] */ + { 2662, 0x0000000000000000ULL, 0x1EEFBAA7DFBEFFEBULL }, /* XSUM_XXH3_withSecret_testdata[2662] */ + { 2663, 0x0000000000000000ULL, 0x9F436ADFD10DD39DULL }, /* XSUM_XXH3_withSecret_testdata[2663] */ + { 2664, 0x0000000000000000ULL, 0x52B95946FB502CCEULL }, /* XSUM_XXH3_withSecret_testdata[2664] */ + { 2665, 0x0000000000000000ULL, 0x00D500026F9AB861ULL }, /* XSUM_XXH3_withSecret_testdata[2665] */ + { 2666, 0x0000000000000000ULL, 0xB967DD7695010DF6ULL }, /* XSUM_XXH3_withSecret_testdata[2666] */ + { 2667, 0x0000000000000000ULL, 0x8E7606272F097FB8ULL }, /* XSUM_XXH3_withSecret_testdata[2667] */ + { 2668, 0x0000000000000000ULL, 0x4C9A07056EC8C59AULL }, /* XSUM_XXH3_withSecret_testdata[2668] */ + { 2669, 0x0000000000000000ULL, 0x5508DAD47A6CC2CBULL }, /* XSUM_XXH3_withSecret_testdata[2669] */ + { 2670, 0x0000000000000000ULL, 0xEB6360E14EEE1610ULL }, /* XSUM_XXH3_withSecret_testdata[2670] */ + { 2671, 0x0000000000000000ULL, 0xC6372020B33BFD65ULL }, /* XSUM_XXH3_withSecret_testdata[2671] */ + { 2672, 0x0000000000000000ULL, 0x0F843F9C945C94E6ULL }, /* XSUM_XXH3_withSecret_testdata[2672] */ + { 2673, 0x0000000000000000ULL, 0xBFDCB8BE05DD7A65ULL }, /* XSUM_XXH3_withSecret_testdata[2673] */ + { 2674, 0x0000000000000000ULL, 0x25DE628289633226ULL }, /* XSUM_XXH3_withSecret_testdata[2674] */ + { 2675, 0x0000000000000000ULL, 0x32688F8FE66182AEULL }, /* XSUM_XXH3_withSecret_testdata[2675] */ + { 2676, 0x0000000000000000ULL, 0x84C8E782DDC3C81BULL }, /* XSUM_XXH3_withSecret_testdata[2676] */ + { 2677, 0x0000000000000000ULL, 0x3B658359E7BACF1EULL }, /* XSUM_XXH3_withSecret_testdata[2677] */ + { 2678, 0x0000000000000000ULL, 0xAD7CFACBC79F8003ULL }, /* XSUM_XXH3_withSecret_testdata[2678] */ + { 2679, 0x0000000000000000ULL, 0xBD610924ED01294CULL }, /* XSUM_XXH3_withSecret_testdata[2679] */ + { 2680, 0x0000000000000000ULL, 0x096AD93B09F09B17ULL }, /* XSUM_XXH3_withSecret_testdata[2680] */ + { 2681, 0x0000000000000000ULL, 0xD8D202571A42DF76ULL }, /* XSUM_XXH3_withSecret_testdata[2681] */ + { 2682, 0x0000000000000000ULL, 0x392D755A24555DA7ULL }, /* XSUM_XXH3_withSecret_testdata[2682] */ + { 2683, 0x0000000000000000ULL, 0xFE625F185A910F2DULL }, /* XSUM_XXH3_withSecret_testdata[2683] */ + { 2684, 0x0000000000000000ULL, 0xF782909443ACBABAULL }, /* XSUM_XXH3_withSecret_testdata[2684] */ + { 2685, 0x0000000000000000ULL, 0xE0168A31A9DEA40CULL }, /* XSUM_XXH3_withSecret_testdata[2685] */ + { 2686, 0x0000000000000000ULL, 0xAF0735145F93B14AULL }, /* XSUM_XXH3_withSecret_testdata[2686] */ + { 2687, 0x0000000000000000ULL, 0x85E8513DC79A8724ULL }, /* XSUM_XXH3_withSecret_testdata[2687] */ + { 2688, 0x0000000000000000ULL, 0x330F96D0DA8D3B4CULL }, /* XSUM_XXH3_withSecret_testdata[2688] */ + { 2689, 0x0000000000000000ULL, 0x6AA04F0588D67194ULL }, /* XSUM_XXH3_withSecret_testdata[2689] */ + { 2690, 0x0000000000000000ULL, 0xC51B098BBFA4637AULL }, /* XSUM_XXH3_withSecret_testdata[2690] */ + { 2691, 0x0000000000000000ULL, 0x5787EC409CD94EC7ULL }, /* XSUM_XXH3_withSecret_testdata[2691] */ + { 2692, 0x0000000000000000ULL, 0x3AF92D8FB21B10CFULL }, /* XSUM_XXH3_withSecret_testdata[2692] */ + { 2693, 0x0000000000000000ULL, 0x47B7CA6CED64886DULL }, /* XSUM_XXH3_withSecret_testdata[2693] */ + { 2694, 0x0000000000000000ULL, 0x812E544FD90EF1BAULL }, /* XSUM_XXH3_withSecret_testdata[2694] */ + { 2695, 0x0000000000000000ULL, 0xA55D70EE8F02E8BDULL }, /* XSUM_XXH3_withSecret_testdata[2695] */ + { 2696, 0x0000000000000000ULL, 0x233CD540E5FCC33CULL }, /* XSUM_XXH3_withSecret_testdata[2696] */ + { 2697, 0x0000000000000000ULL, 0xFB9341114FA4CC29ULL }, /* XSUM_XXH3_withSecret_testdata[2697] */ + { 2698, 0x0000000000000000ULL, 0xC29841FC3A675EF6ULL }, /* XSUM_XXH3_withSecret_testdata[2698] */ + { 2699, 0x0000000000000000ULL, 0xC4EB0FE70A33F62FULL }, /* XSUM_XXH3_withSecret_testdata[2699] */ + { 2700, 0x0000000000000000ULL, 0xA3AA5B1F50D9E77CULL }, /* XSUM_XXH3_withSecret_testdata[2700] */ + { 2701, 0x0000000000000000ULL, 0x1A3A391DBBE402E5ULL }, /* XSUM_XXH3_withSecret_testdata[2701] */ + { 2702, 0x0000000000000000ULL, 0xA4724F3C58FD0920ULL }, /* XSUM_XXH3_withSecret_testdata[2702] */ + { 2703, 0x0000000000000000ULL, 0x0A71207441D9CC62ULL }, /* XSUM_XXH3_withSecret_testdata[2703] */ + { 2704, 0x0000000000000000ULL, 0xB5AB2E664CC1F0E3ULL }, /* XSUM_XXH3_withSecret_testdata[2704] */ + { 2705, 0x0000000000000000ULL, 0x28237936A1716622ULL }, /* XSUM_XXH3_withSecret_testdata[2705] */ + { 2706, 0x0000000000000000ULL, 0x8FF7CB7CDFBE8552ULL }, /* XSUM_XXH3_withSecret_testdata[2706] */ + { 2707, 0x0000000000000000ULL, 0x95D17737A4533EB1ULL }, /* XSUM_XXH3_withSecret_testdata[2707] */ + { 2708, 0x0000000000000000ULL, 0x88CE7CAFDD755DA6ULL }, /* XSUM_XXH3_withSecret_testdata[2708] */ + { 2709, 0x0000000000000000ULL, 0xA7A708CA9BE6603DULL }, /* XSUM_XXH3_withSecret_testdata[2709] */ + { 2710, 0x0000000000000000ULL, 0x6CBC38D67BAE5390ULL }, /* XSUM_XXH3_withSecret_testdata[2710] */ + { 2711, 0x0000000000000000ULL, 0xB7E1FB656B7422A3ULL }, /* XSUM_XXH3_withSecret_testdata[2711] */ + { 2712, 0x0000000000000000ULL, 0x55D7049F9FF1CA3EULL }, /* XSUM_XXH3_withSecret_testdata[2712] */ + { 2713, 0x0000000000000000ULL, 0xDBF632660DD99CB0ULL }, /* XSUM_XXH3_withSecret_testdata[2713] */ + { 2714, 0x0000000000000000ULL, 0x4D3CD71295F6ABF8ULL }, /* XSUM_XXH3_withSecret_testdata[2714] */ + { 2715, 0x0000000000000000ULL, 0x14092CBC6368A1FCULL }, /* XSUM_XXH3_withSecret_testdata[2715] */ + { 2716, 0x0000000000000000ULL, 0x3A10DD5737B434B2ULL }, /* XSUM_XXH3_withSecret_testdata[2716] */ + { 2717, 0x0000000000000000ULL, 0x253A2D1AC1138049ULL }, /* XSUM_XXH3_withSecret_testdata[2717] */ + { 2718, 0x0000000000000000ULL, 0x2726706B5ED76122ULL }, /* XSUM_XXH3_withSecret_testdata[2718] */ + { 2719, 0x0000000000000000ULL, 0x6DCB497FFE8EFDF0ULL }, /* XSUM_XXH3_withSecret_testdata[2719] */ + { 2720, 0x0000000000000000ULL, 0xBFBE9DDD15CCA78BULL }, /* XSUM_XXH3_withSecret_testdata[2720] */ + { 2721, 0x0000000000000000ULL, 0x93080165E74F2113ULL }, /* XSUM_XXH3_withSecret_testdata[2721] */ + { 2722, 0x0000000000000000ULL, 0x34F93E545F17B00BULL }, /* XSUM_XXH3_withSecret_testdata[2722] */ + { 2723, 0x0000000000000000ULL, 0x9FBF9134D52E17A8ULL }, /* XSUM_XXH3_withSecret_testdata[2723] */ + { 2724, 0x0000000000000000ULL, 0x0095C26912C593CBULL }, /* XSUM_XXH3_withSecret_testdata[2724] */ + { 2725, 0x0000000000000000ULL, 0x4295CA7092D53393ULL }, /* XSUM_XXH3_withSecret_testdata[2725] */ + { 2726, 0x0000000000000000ULL, 0xBF2BF797289CCA26ULL }, /* XSUM_XXH3_withSecret_testdata[2726] */ + { 2727, 0x0000000000000000ULL, 0xDE8896D86795A88FULL }, /* XSUM_XXH3_withSecret_testdata[2727] */ + { 2728, 0x0000000000000000ULL, 0x98F44195153814DFULL }, /* XSUM_XXH3_withSecret_testdata[2728] */ + { 2729, 0x0000000000000000ULL, 0xF95CFB8318C7728CULL }, /* XSUM_XXH3_withSecret_testdata[2729] */ + { 2730, 0x0000000000000000ULL, 0xBB95647B025D4046ULL }, /* XSUM_XXH3_withSecret_testdata[2730] */ + { 2731, 0x0000000000000000ULL, 0xCCC3908B111E3898ULL }, /* XSUM_XXH3_withSecret_testdata[2731] */ + { 2732, 0x0000000000000000ULL, 0xBDEFCC0464C26D71ULL }, /* XSUM_XXH3_withSecret_testdata[2732] */ + { 2733, 0x0000000000000000ULL, 0xAAB0EC47ED4C44B8ULL }, /* XSUM_XXH3_withSecret_testdata[2733] */ + { 2734, 0x0000000000000000ULL, 0x1010BC3F4C8126CEULL }, /* XSUM_XXH3_withSecret_testdata[2734] */ + { 2735, 0x0000000000000000ULL, 0x0DFE9A3A9921B584ULL }, /* XSUM_XXH3_withSecret_testdata[2735] */ + { 2736, 0x0000000000000000ULL, 0xF0544A704E23132FULL }, /* XSUM_XXH3_withSecret_testdata[2736] */ + { 2737, 0x0000000000000000ULL, 0x343DEE93E6A3B726ULL }, /* XSUM_XXH3_withSecret_testdata[2737] */ + { 2738, 0x0000000000000000ULL, 0x3F739461D94B435EULL }, /* XSUM_XXH3_withSecret_testdata[2738] */ + { 2739, 0x0000000000000000ULL, 0xA859C4CC314E13DCULL }, /* XSUM_XXH3_withSecret_testdata[2739] */ + { 2740, 0x0000000000000000ULL, 0x4E8FFBF5D701FEBEULL }, /* XSUM_XXH3_withSecret_testdata[2740] */ + { 2741, 0x0000000000000000ULL, 0x1EEA03B3C7D154B3ULL }, /* XSUM_XXH3_withSecret_testdata[2741] */ + { 2742, 0x0000000000000000ULL, 0x2C034DFB36591DDDULL }, /* XSUM_XXH3_withSecret_testdata[2742] */ + { 2743, 0x0000000000000000ULL, 0x97A3613150ACE4A6ULL }, /* XSUM_XXH3_withSecret_testdata[2743] */ + { 2744, 0x0000000000000000ULL, 0x08F6AC5C1542135CULL }, /* XSUM_XXH3_withSecret_testdata[2744] */ + { 2745, 0x0000000000000000ULL, 0x499AEA26832D3187ULL }, /* XSUM_XXH3_withSecret_testdata[2745] */ + { 2746, 0x0000000000000000ULL, 0xCF1C3217B3FA96A5ULL }, /* XSUM_XXH3_withSecret_testdata[2746] */ + { 2747, 0x0000000000000000ULL, 0x324E2BF9393F49C0ULL }, /* XSUM_XXH3_withSecret_testdata[2747] */ + { 2748, 0x0000000000000000ULL, 0xE70F81395137C31EULL }, /* XSUM_XXH3_withSecret_testdata[2748] */ + { 2749, 0x0000000000000000ULL, 0x93D5F5C4CC553B50ULL }, /* XSUM_XXH3_withSecret_testdata[2749] */ + { 2750, 0x0000000000000000ULL, 0xBFFA783F1CBFF56DULL }, /* XSUM_XXH3_withSecret_testdata[2750] */ + { 2751, 0x0000000000000000ULL, 0x1D78DE39E4B359A6ULL }, /* XSUM_XXH3_withSecret_testdata[2751] */ + { 2752, 0x0000000000000000ULL, 0xBB287377235EDC08ULL }, /* XSUM_XXH3_withSecret_testdata[2752] */ + { 2753, 0x0000000000000000ULL, 0x6C2456AD352C9554ULL }, /* XSUM_XXH3_withSecret_testdata[2753] */ + { 2754, 0x0000000000000000ULL, 0x1BF4054BCCA27FD7ULL }, /* XSUM_XXH3_withSecret_testdata[2754] */ + { 2755, 0x0000000000000000ULL, 0xAC7B608DDDB27358ULL }, /* XSUM_XXH3_withSecret_testdata[2755] */ + { 2756, 0x0000000000000000ULL, 0x0235B968B50ACFEFULL }, /* XSUM_XXH3_withSecret_testdata[2756] */ + { 2757, 0x0000000000000000ULL, 0xF6A70A14FC5BDD6BULL }, /* XSUM_XXH3_withSecret_testdata[2757] */ + { 2758, 0x0000000000000000ULL, 0xE3DE3EBC2E388DCAULL }, /* XSUM_XXH3_withSecret_testdata[2758] */ + { 2759, 0x0000000000000000ULL, 0xB0AE9AB15E900917ULL }, /* XSUM_XXH3_withSecret_testdata[2759] */ + { 2760, 0x0000000000000000ULL, 0x66FA24FBF160B1FDULL }, /* XSUM_XXH3_withSecret_testdata[2760] */ + { 2761, 0x0000000000000000ULL, 0xF353DF47B4F0EC48ULL }, /* XSUM_XXH3_withSecret_testdata[2761] */ + { 2762, 0x0000000000000000ULL, 0xFB59B70C1578CF38ULL }, /* XSUM_XXH3_withSecret_testdata[2762] */ + { 2763, 0x0000000000000000ULL, 0xE05DFF1C885A7D80ULL }, /* XSUM_XXH3_withSecret_testdata[2763] */ + { 2764, 0x0000000000000000ULL, 0xE5EEA924203FA37DULL }, /* XSUM_XXH3_withSecret_testdata[2764] */ + { 2765, 0x0000000000000000ULL, 0xCD6F7FB5C036ED16ULL }, /* XSUM_XXH3_withSecret_testdata[2765] */ + { 2766, 0x0000000000000000ULL, 0x79A96F1D3B95841BULL }, /* XSUM_XXH3_withSecret_testdata[2766] */ + { 2767, 0x0000000000000000ULL, 0x72DCFAFA56ABF4DFULL }, /* XSUM_XXH3_withSecret_testdata[2767] */ + { 2768, 0x0000000000000000ULL, 0xF204B717392BD4D0ULL }, /* XSUM_XXH3_withSecret_testdata[2768] */ + { 2769, 0x0000000000000000ULL, 0x6DE5C83C19B338BBULL }, /* XSUM_XXH3_withSecret_testdata[2769] */ + { 2770, 0x0000000000000000ULL, 0xC5C567298EBFB60BULL }, /* XSUM_XXH3_withSecret_testdata[2770] */ + { 2771, 0x0000000000000000ULL, 0xC788884D383D1896ULL }, /* XSUM_XXH3_withSecret_testdata[2771] */ + { 2772, 0x0000000000000000ULL, 0x2C0FFBBFA9A79F05ULL }, /* XSUM_XXH3_withSecret_testdata[2772] */ + { 2773, 0x0000000000000000ULL, 0x94797FAB3BAFBBB3ULL }, /* XSUM_XXH3_withSecret_testdata[2773] */ + { 2774, 0x0000000000000000ULL, 0xC34B8C0729D4BE4CULL }, /* XSUM_XXH3_withSecret_testdata[2774] */ + { 2775, 0x0000000000000000ULL, 0x8DF43637A9297CBAULL }, /* XSUM_XXH3_withSecret_testdata[2775] */ + { 2776, 0x0000000000000000ULL, 0xCD5FA536464E2E65ULL }, /* XSUM_XXH3_withSecret_testdata[2776] */ + { 2777, 0x0000000000000000ULL, 0xE9541F4387BD4A25ULL }, /* XSUM_XXH3_withSecret_testdata[2777] */ + { 2778, 0x0000000000000000ULL, 0x9BFED168E94DDCA8ULL }, /* XSUM_XXH3_withSecret_testdata[2778] */ + { 2779, 0x0000000000000000ULL, 0x9E7FCB267E30D861ULL }, /* XSUM_XXH3_withSecret_testdata[2779] */ + { 2780, 0x0000000000000000ULL, 0x702DF6FC825656DEULL }, /* XSUM_XXH3_withSecret_testdata[2780] */ + { 2781, 0x0000000000000000ULL, 0xE707780A7986FAB8ULL }, /* XSUM_XXH3_withSecret_testdata[2781] */ + { 2782, 0x0000000000000000ULL, 0xC03C37E26F0934B9ULL }, /* XSUM_XXH3_withSecret_testdata[2782] */ + { 2783, 0x0000000000000000ULL, 0xA09B4C7DC5CA5A3FULL }, /* XSUM_XXH3_withSecret_testdata[2783] */ + { 2784, 0x0000000000000000ULL, 0xFC1E02A96E3343CCULL }, /* XSUM_XXH3_withSecret_testdata[2784] */ + { 2785, 0x0000000000000000ULL, 0x24D2C545F6E3E6BEULL }, /* XSUM_XXH3_withSecret_testdata[2785] */ + { 2786, 0x0000000000000000ULL, 0x8AFEB9BBFB72540DULL }, /* XSUM_XXH3_withSecret_testdata[2786] */ + { 2787, 0x0000000000000000ULL, 0xC4E33683C40A9E77ULL }, /* XSUM_XXH3_withSecret_testdata[2787] */ + { 2788, 0x0000000000000000ULL, 0xEE25F588F432B1ADULL }, /* XSUM_XXH3_withSecret_testdata[2788] */ + { 2789, 0x0000000000000000ULL, 0xF9ED1427FE79DF11ULL }, /* XSUM_XXH3_withSecret_testdata[2789] */ + { 2790, 0x0000000000000000ULL, 0x0A22E09ED079E537ULL }, /* XSUM_XXH3_withSecret_testdata[2790] */ + { 2791, 0x0000000000000000ULL, 0xE999A877D8EC41FDULL }, /* XSUM_XXH3_withSecret_testdata[2791] */ + { 2792, 0x0000000000000000ULL, 0x1FB3987DDC9EBB52ULL }, /* XSUM_XXH3_withSecret_testdata[2792] */ + { 2793, 0x0000000000000000ULL, 0x9FF55CAB0FB3D20BULL }, /* XSUM_XXH3_withSecret_testdata[2793] */ + { 2794, 0x0000000000000000ULL, 0x36DCFAEE4C766E66ULL }, /* XSUM_XXH3_withSecret_testdata[2794] */ + { 2795, 0x0000000000000000ULL, 0xD7BC29A3A977EA17ULL }, /* XSUM_XXH3_withSecret_testdata[2795] */ + { 2796, 0x0000000000000000ULL, 0x5377D82B7C001FC2ULL }, /* XSUM_XXH3_withSecret_testdata[2796] */ + { 2797, 0x0000000000000000ULL, 0x5561318FC103405DULL }, /* XSUM_XXH3_withSecret_testdata[2797] */ + { 2798, 0x0000000000000000ULL, 0xEEB4E2A60F230FBFULL }, /* XSUM_XXH3_withSecret_testdata[2798] */ + { 2799, 0x0000000000000000ULL, 0x8BDB1E653E8A49C3ULL }, /* XSUM_XXH3_withSecret_testdata[2799] */ + { 2800, 0x0000000000000000ULL, 0x12A204BF81E34B69ULL }, /* XSUM_XXH3_withSecret_testdata[2800] */ + { 2801, 0x0000000000000000ULL, 0xCC3D2BA4D7D7005CULL }, /* XSUM_XXH3_withSecret_testdata[2801] */ + { 2802, 0x0000000000000000ULL, 0x051EFE66635C5537ULL }, /* XSUM_XXH3_withSecret_testdata[2802] */ + { 2803, 0x0000000000000000ULL, 0x7C95EF8AE5C78FCFULL }, /* XSUM_XXH3_withSecret_testdata[2803] */ + { 2804, 0x0000000000000000ULL, 0x9C432F611839A1EBULL }, /* XSUM_XXH3_withSecret_testdata[2804] */ + { 2805, 0x0000000000000000ULL, 0x6679AEABC3ADF699ULL }, /* XSUM_XXH3_withSecret_testdata[2805] */ + { 2806, 0x0000000000000000ULL, 0x02D753654FE918E9ULL }, /* XSUM_XXH3_withSecret_testdata[2806] */ + { 2807, 0x0000000000000000ULL, 0x210F9D87A85522C4ULL }, /* XSUM_XXH3_withSecret_testdata[2807] */ + { 2808, 0x0000000000000000ULL, 0xB0CE9CFB1FEF7927ULL }, /* XSUM_XXH3_withSecret_testdata[2808] */ + { 2809, 0x0000000000000000ULL, 0x8C2D9AF242C9863BULL }, /* XSUM_XXH3_withSecret_testdata[2809] */ + { 2810, 0x0000000000000000ULL, 0xE0FF20BC9CE0A8E5ULL }, /* XSUM_XXH3_withSecret_testdata[2810] */ + { 2811, 0x0000000000000000ULL, 0x3534E1CE731A2E86ULL }, /* XSUM_XXH3_withSecret_testdata[2811] */ + { 2812, 0x0000000000000000ULL, 0xA26DF2A499A9871EULL }, /* XSUM_XXH3_withSecret_testdata[2812] */ + { 2813, 0x0000000000000000ULL, 0x9F4B4AB7255B02B9ULL }, /* XSUM_XXH3_withSecret_testdata[2813] */ + { 2814, 0x0000000000000000ULL, 0xBCAEBE57332E22F9ULL }, /* XSUM_XXH3_withSecret_testdata[2814] */ + { 2815, 0x0000000000000000ULL, 0xE6277102A50222ECULL }, /* XSUM_XXH3_withSecret_testdata[2815] */ + { 2816, 0x0000000000000000ULL, 0x999C2EB9E577279AULL }, /* XSUM_XXH3_withSecret_testdata[2816] */ + { 2817, 0x0000000000000000ULL, 0x29C1DC459C9130C2ULL }, /* XSUM_XXH3_withSecret_testdata[2817] */ + { 2818, 0x0000000000000000ULL, 0xC1CAC38ED190EE18ULL }, /* XSUM_XXH3_withSecret_testdata[2818] */ + { 2819, 0x0000000000000000ULL, 0x9B1350B1B96661A2ULL }, /* XSUM_XXH3_withSecret_testdata[2819] */ + { 2820, 0x0000000000000000ULL, 0x71CAED77C7200A2BULL }, /* XSUM_XXH3_withSecret_testdata[2820] */ + { 2821, 0x0000000000000000ULL, 0xB2EB0F1B367D1F1CULL }, /* XSUM_XXH3_withSecret_testdata[2821] */ + { 2822, 0x0000000000000000ULL, 0x705227E5AA6724C3ULL }, /* XSUM_XXH3_withSecret_testdata[2822] */ + { 2823, 0x0000000000000000ULL, 0xD4774A063460F910ULL }, /* XSUM_XXH3_withSecret_testdata[2823] */ + { 2824, 0x0000000000000000ULL, 0xF32D1692780E6408ULL }, /* XSUM_XXH3_withSecret_testdata[2824] */ + { 2825, 0x0000000000000000ULL, 0xB73D40295D5D4EC4ULL }, /* XSUM_XXH3_withSecret_testdata[2825] */ + { 2826, 0x0000000000000000ULL, 0x91240DFD2CA34842ULL }, /* XSUM_XXH3_withSecret_testdata[2826] */ + { 2827, 0x0000000000000000ULL, 0x50220D292F064558ULL }, /* XSUM_XXH3_withSecret_testdata[2827] */ + { 2828, 0x0000000000000000ULL, 0x7126AB3CAA1CBA42ULL }, /* XSUM_XXH3_withSecret_testdata[2828] */ + { 2829, 0x0000000000000000ULL, 0x039BC018490153BFULL }, /* XSUM_XXH3_withSecret_testdata[2829] */ + { 2830, 0x0000000000000000ULL, 0x39C5942416D59D64ULL }, /* XSUM_XXH3_withSecret_testdata[2830] */ + { 2831, 0x0000000000000000ULL, 0xD1A57EE78B392178ULL }, /* XSUM_XXH3_withSecret_testdata[2831] */ + { 2832, 0x0000000000000000ULL, 0xE50A80674449DB42ULL }, /* XSUM_XXH3_withSecret_testdata[2832] */ + { 2833, 0x0000000000000000ULL, 0x7719C3795D06E89CULL }, /* XSUM_XXH3_withSecret_testdata[2833] */ + { 2834, 0x0000000000000000ULL, 0x4A739CBF8E891946ULL }, /* XSUM_XXH3_withSecret_testdata[2834] */ + { 2835, 0x0000000000000000ULL, 0x6D330BD9B1BF21E6ULL }, /* XSUM_XXH3_withSecret_testdata[2835] */ + { 2836, 0x0000000000000000ULL, 0x9E5BB469D8D97558ULL }, /* XSUM_XXH3_withSecret_testdata[2836] */ + { 2837, 0x0000000000000000ULL, 0x83BADC427E8FF272ULL }, /* XSUM_XXH3_withSecret_testdata[2837] */ + { 2838, 0x0000000000000000ULL, 0x46B3AE7CEBB9A538ULL }, /* XSUM_XXH3_withSecret_testdata[2838] */ + { 2839, 0x0000000000000000ULL, 0x425119385FAF41FDULL }, /* XSUM_XXH3_withSecret_testdata[2839] */ + { 2840, 0x0000000000000000ULL, 0xF4B2C887B8BE31DCULL }, /* XSUM_XXH3_withSecret_testdata[2840] */ + { 2841, 0x0000000000000000ULL, 0xF2756DFC7B95624AULL }, /* XSUM_XXH3_withSecret_testdata[2841] */ + { 2842, 0x0000000000000000ULL, 0x3ECEFC1A76C19E67ULL }, /* XSUM_XXH3_withSecret_testdata[2842] */ + { 2843, 0x0000000000000000ULL, 0xCD7C55019E788D6CULL }, /* XSUM_XXH3_withSecret_testdata[2843] */ + { 2844, 0x0000000000000000ULL, 0x3DD559ACBFD56CC2ULL }, /* XSUM_XXH3_withSecret_testdata[2844] */ + { 2845, 0x0000000000000000ULL, 0x6D469F7989A711A5ULL }, /* XSUM_XXH3_withSecret_testdata[2845] */ + { 2846, 0x0000000000000000ULL, 0xDFDBE44FC2F9ED49ULL }, /* XSUM_XXH3_withSecret_testdata[2846] */ + { 2847, 0x0000000000000000ULL, 0x3625AAB3C169708BULL }, /* XSUM_XXH3_withSecret_testdata[2847] */ + { 2848, 0x0000000000000000ULL, 0x35C3F7C6D3486020ULL }, /* XSUM_XXH3_withSecret_testdata[2848] */ + { 2849, 0x0000000000000000ULL, 0x0BEFA2238E9365ADULL }, /* XSUM_XXH3_withSecret_testdata[2849] */ + { 2850, 0x0000000000000000ULL, 0x0696ABFA8C9BB130ULL }, /* XSUM_XXH3_withSecret_testdata[2850] */ + { 2851, 0x0000000000000000ULL, 0x5850A42F4E854EBEULL }, /* XSUM_XXH3_withSecret_testdata[2851] */ + { 2852, 0x0000000000000000ULL, 0x10B415F2D678A86AULL }, /* XSUM_XXH3_withSecret_testdata[2852] */ + { 2853, 0x0000000000000000ULL, 0xD1C1749BE69AD494ULL }, /* XSUM_XXH3_withSecret_testdata[2853] */ + { 2854, 0x0000000000000000ULL, 0xA46932A6C4B1953EULL }, /* XSUM_XXH3_withSecret_testdata[2854] */ + { 2855, 0x0000000000000000ULL, 0x88CB1FED07729FECULL }, /* XSUM_XXH3_withSecret_testdata[2855] */ + { 2856, 0x0000000000000000ULL, 0x3ADE9267084894AFULL }, /* XSUM_XXH3_withSecret_testdata[2856] */ + { 2857, 0x0000000000000000ULL, 0xDF70FFEEB7F5DAE3ULL }, /* XSUM_XXH3_withSecret_testdata[2857] */ + { 2858, 0x0000000000000000ULL, 0x02315C318359AFF1ULL }, /* XSUM_XXH3_withSecret_testdata[2858] */ + { 2859, 0x0000000000000000ULL, 0x5B38CEEA2CB023C2ULL }, /* XSUM_XXH3_withSecret_testdata[2859] */ + { 2860, 0x0000000000000000ULL, 0x4C067A257B0B9D80ULL }, /* XSUM_XXH3_withSecret_testdata[2860] */ + { 2861, 0x0000000000000000ULL, 0x0B1A088D92171A91ULL }, /* XSUM_XXH3_withSecret_testdata[2861] */ + { 2862, 0x0000000000000000ULL, 0xE009B2698AEEBADEULL }, /* XSUM_XXH3_withSecret_testdata[2862] */ + { 2863, 0x0000000000000000ULL, 0x8924C02524FE7413ULL }, /* XSUM_XXH3_withSecret_testdata[2863] */ + { 2864, 0x0000000000000000ULL, 0x34786BD34726328BULL }, /* XSUM_XXH3_withSecret_testdata[2864] */ + { 2865, 0x0000000000000000ULL, 0x5D8F0CB1295702E6ULL }, /* XSUM_XXH3_withSecret_testdata[2865] */ + { 2866, 0x0000000000000000ULL, 0xEB2DA9C9F3DA673EULL }, /* XSUM_XXH3_withSecret_testdata[2866] */ + { 2867, 0x0000000000000000ULL, 0x5CA1165213EF818FULL }, /* XSUM_XXH3_withSecret_testdata[2867] */ + { 2868, 0x0000000000000000ULL, 0x93C6848735D05D15ULL }, /* XSUM_XXH3_withSecret_testdata[2868] */ + { 2869, 0x0000000000000000ULL, 0x8878647E504E661DULL }, /* XSUM_XXH3_withSecret_testdata[2869] */ + { 2870, 0x0000000000000000ULL, 0x1D5F1DBEE675B24AULL }, /* XSUM_XXH3_withSecret_testdata[2870] */ + { 2871, 0x0000000000000000ULL, 0x115D63E36B0F1FBEULL }, /* XSUM_XXH3_withSecret_testdata[2871] */ + { 2872, 0x0000000000000000ULL, 0x4DF2F24A2E98D962ULL }, /* XSUM_XXH3_withSecret_testdata[2872] */ + { 2873, 0x0000000000000000ULL, 0x3B1E3D0177F4B488ULL }, /* XSUM_XXH3_withSecret_testdata[2873] */ + { 2874, 0x0000000000000000ULL, 0x49658533C6146A5EULL }, /* XSUM_XXH3_withSecret_testdata[2874] */ + { 2875, 0x0000000000000000ULL, 0xB714BC9FFB355DB7ULL }, /* XSUM_XXH3_withSecret_testdata[2875] */ + { 2876, 0x0000000000000000ULL, 0x5843138528F6CBD1ULL }, /* XSUM_XXH3_withSecret_testdata[2876] */ + { 2877, 0x0000000000000000ULL, 0x3493D0BFCFDEE423ULL }, /* XSUM_XXH3_withSecret_testdata[2877] */ + { 2878, 0x0000000000000000ULL, 0xC6893D3EE31368A3ULL }, /* XSUM_XXH3_withSecret_testdata[2878] */ + { 2879, 0x0000000000000000ULL, 0xB13736A51649E9CFULL }, /* XSUM_XXH3_withSecret_testdata[2879] */ + { 2880, 0x0000000000000000ULL, 0xB494AE6C2A905015ULL }, /* XSUM_XXH3_withSecret_testdata[2880] */ + { 2881, 0x0000000000000000ULL, 0x27177CBAFBC37006ULL }, /* XSUM_XXH3_withSecret_testdata[2881] */ + { 2882, 0x0000000000000000ULL, 0x04A94338FE7B046DULL }, /* XSUM_XXH3_withSecret_testdata[2882] */ + { 2883, 0x0000000000000000ULL, 0x97630E06E0DFCEFEULL }, /* XSUM_XXH3_withSecret_testdata[2883] */ + { 2884, 0x0000000000000000ULL, 0xFD38D6319F3B28DBULL }, /* XSUM_XXH3_withSecret_testdata[2884] */ + { 2885, 0x0000000000000000ULL, 0x4EC1A9D59AC9AC98ULL }, /* XSUM_XXH3_withSecret_testdata[2885] */ + { 2886, 0x0000000000000000ULL, 0x7710ECE049A1EE47ULL }, /* XSUM_XXH3_withSecret_testdata[2886] */ + { 2887, 0x0000000000000000ULL, 0x0E87931145CC74DEULL }, /* XSUM_XXH3_withSecret_testdata[2887] */ + { 2888, 0x0000000000000000ULL, 0x79C59FE86B852C41ULL }, /* XSUM_XXH3_withSecret_testdata[2888] */ + { 2889, 0x0000000000000000ULL, 0x9FD3DFD399579356ULL }, /* XSUM_XXH3_withSecret_testdata[2889] */ + { 2890, 0x0000000000000000ULL, 0x34B2D10D4B5421D7ULL }, /* XSUM_XXH3_withSecret_testdata[2890] */ + { 2891, 0x0000000000000000ULL, 0xD5E4579B474E464EULL }, /* XSUM_XXH3_withSecret_testdata[2891] */ + { 2892, 0x0000000000000000ULL, 0xF28C6770BFC26AC7ULL }, /* XSUM_XXH3_withSecret_testdata[2892] */ + { 2893, 0x0000000000000000ULL, 0xD377046A26F17C89ULL }, /* XSUM_XXH3_withSecret_testdata[2893] */ + { 2894, 0x0000000000000000ULL, 0xBD7E0363D136E7C8ULL }, /* XSUM_XXH3_withSecret_testdata[2894] */ + { 2895, 0x0000000000000000ULL, 0x33A42E350F0D7A95ULL }, /* XSUM_XXH3_withSecret_testdata[2895] */ + { 2896, 0x0000000000000000ULL, 0x692A55C8A2F34504ULL }, /* XSUM_XXH3_withSecret_testdata[2896] */ + { 2897, 0x0000000000000000ULL, 0x8243CD9917D5888AULL }, /* XSUM_XXH3_withSecret_testdata[2897] */ + { 2898, 0x0000000000000000ULL, 0x85C34825497D544DULL }, /* XSUM_XXH3_withSecret_testdata[2898] */ + { 2899, 0x0000000000000000ULL, 0x1874C3A72EE520EFULL }, /* XSUM_XXH3_withSecret_testdata[2899] */ + { 2900, 0x0000000000000000ULL, 0x6A2B9EF6A1B82F46ULL }, /* XSUM_XXH3_withSecret_testdata[2900] */ + { 2901, 0x0000000000000000ULL, 0xC1FA8FD25D5522E5ULL }, /* XSUM_XXH3_withSecret_testdata[2901] */ + { 2902, 0x0000000000000000ULL, 0xA46AEC4357A6A0A4ULL }, /* XSUM_XXH3_withSecret_testdata[2902] */ + { 2903, 0x0000000000000000ULL, 0xA327142A63323D97ULL }, /* XSUM_XXH3_withSecret_testdata[2903] */ + { 2904, 0x0000000000000000ULL, 0x7F59130823574970ULL }, /* XSUM_XXH3_withSecret_testdata[2904] */ + { 2905, 0x0000000000000000ULL, 0xB7E62F19E6D0FDE6ULL }, /* XSUM_XXH3_withSecret_testdata[2905] */ + { 2906, 0x0000000000000000ULL, 0x32530270AC8581A2ULL }, /* XSUM_XXH3_withSecret_testdata[2906] */ + { 2907, 0x0000000000000000ULL, 0xEA4C04EFF7300831ULL }, /* XSUM_XXH3_withSecret_testdata[2907] */ + { 2908, 0x0000000000000000ULL, 0x3271E6E36689C35CULL }, /* XSUM_XXH3_withSecret_testdata[2908] */ + { 2909, 0x0000000000000000ULL, 0xD80C86B0A79FB06BULL }, /* XSUM_XXH3_withSecret_testdata[2909] */ + { 2910, 0x0000000000000000ULL, 0x127ACC9F23D3DC82ULL }, /* XSUM_XXH3_withSecret_testdata[2910] */ + { 2911, 0x0000000000000000ULL, 0x1940C66BF858A647ULL }, /* XSUM_XXH3_withSecret_testdata[2911] */ + { 2912, 0x0000000000000000ULL, 0x9AB8A8D48E03336DULL }, /* XSUM_XXH3_withSecret_testdata[2912] */ + { 2913, 0x0000000000000000ULL, 0xF55386F445650D8CULL }, /* XSUM_XXH3_withSecret_testdata[2913] */ + { 2914, 0x0000000000000000ULL, 0x30C30B5A9CCBE11FULL }, /* XSUM_XXH3_withSecret_testdata[2914] */ + { 2915, 0x0000000000000000ULL, 0xC9BE00FC4AD2E7F4ULL }, /* XSUM_XXH3_withSecret_testdata[2915] */ + { 2916, 0x0000000000000000ULL, 0x17CDED5911477A60ULL }, /* XSUM_XXH3_withSecret_testdata[2916] */ + { 2917, 0x0000000000000000ULL, 0xA75B0B9F5608BDD8ULL }, /* XSUM_XXH3_withSecret_testdata[2917] */ + { 2918, 0x0000000000000000ULL, 0x8D037984687F5942ULL }, /* XSUM_XXH3_withSecret_testdata[2918] */ + { 2919, 0x0000000000000000ULL, 0x2A5D8EEFEF26153CULL }, /* XSUM_XXH3_withSecret_testdata[2919] */ + { 2920, 0x0000000000000000ULL, 0x2BFAB5944FE9C364ULL }, /* XSUM_XXH3_withSecret_testdata[2920] */ + { 2921, 0x0000000000000000ULL, 0x89423403078D740EULL }, /* XSUM_XXH3_withSecret_testdata[2921] */ + { 2922, 0x0000000000000000ULL, 0xAC3D0A9B2BD84C8BULL }, /* XSUM_XXH3_withSecret_testdata[2922] */ + { 2923, 0x0000000000000000ULL, 0xFCCF992B8EE26854ULL }, /* XSUM_XXH3_withSecret_testdata[2923] */ + { 2924, 0x0000000000000000ULL, 0x1A84D6CD10EAC49EULL }, /* XSUM_XXH3_withSecret_testdata[2924] */ + { 2925, 0x0000000000000000ULL, 0xB52E848D2238CC49ULL }, /* XSUM_XXH3_withSecret_testdata[2925] */ + { 2926, 0x0000000000000000ULL, 0x1E657C6CC7390AA9ULL }, /* XSUM_XXH3_withSecret_testdata[2926] */ + { 2927, 0x0000000000000000ULL, 0xFD04D7D199782140ULL }, /* XSUM_XXH3_withSecret_testdata[2927] */ + { 2928, 0x0000000000000000ULL, 0x0D646EDD4EA8E0B5ULL }, /* XSUM_XXH3_withSecret_testdata[2928] */ + { 2929, 0x0000000000000000ULL, 0xFA68DF886EEED4BCULL }, /* XSUM_XXH3_withSecret_testdata[2929] */ + { 2930, 0x0000000000000000ULL, 0xB82D60F9EC312618ULL }, /* XSUM_XXH3_withSecret_testdata[2930] */ + { 2931, 0x0000000000000000ULL, 0x3B745EB2D5C98654ULL }, /* XSUM_XXH3_withSecret_testdata[2931] */ + { 2932, 0x0000000000000000ULL, 0xB130D4CDF9F55D0AULL }, /* XSUM_XXH3_withSecret_testdata[2932] */ + { 2933, 0x0000000000000000ULL, 0xA66A35D31AE1F395ULL }, /* XSUM_XXH3_withSecret_testdata[2933] */ + { 2934, 0x0000000000000000ULL, 0x9FBB6F77F3A85EBEULL }, /* XSUM_XXH3_withSecret_testdata[2934] */ + { 2935, 0x0000000000000000ULL, 0x3C3AA7EE1BB221D1ULL }, /* XSUM_XXH3_withSecret_testdata[2935] */ + { 2936, 0x0000000000000000ULL, 0xDA79B8AE9B825249ULL }, /* XSUM_XXH3_withSecret_testdata[2936] */ + { 2937, 0x0000000000000000ULL, 0x0FDFEF32A59627A6ULL }, /* XSUM_XXH3_withSecret_testdata[2937] */ + { 2938, 0x0000000000000000ULL, 0x706F4AF597DBE5A1ULL }, /* XSUM_XXH3_withSecret_testdata[2938] */ + { 2939, 0x0000000000000000ULL, 0xD91F82F858438339ULL }, /* XSUM_XXH3_withSecret_testdata[2939] */ + { 2940, 0x0000000000000000ULL, 0x86E840A5F08BDC1CULL }, /* XSUM_XXH3_withSecret_testdata[2940] */ + { 2941, 0x0000000000000000ULL, 0xE9BCEA2E8EAE5511ULL }, /* XSUM_XXH3_withSecret_testdata[2941] */ + { 2942, 0x0000000000000000ULL, 0x49482DD0A8A66DFDULL }, /* XSUM_XXH3_withSecret_testdata[2942] */ + { 2943, 0x0000000000000000ULL, 0x620B9D9636DD8BFEULL }, /* XSUM_XXH3_withSecret_testdata[2943] */ + { 2944, 0x0000000000000000ULL, 0xBB78B6D00515DC1BULL }, /* XSUM_XXH3_withSecret_testdata[2944] */ + { 2945, 0x0000000000000000ULL, 0x47EEEA42E2A9FDB3ULL }, /* XSUM_XXH3_withSecret_testdata[2945] */ + { 2946, 0x0000000000000000ULL, 0x11FB56CA0236EE6FULL }, /* XSUM_XXH3_withSecret_testdata[2946] */ + { 2947, 0x0000000000000000ULL, 0xAD90BD39650625DDULL }, /* XSUM_XXH3_withSecret_testdata[2947] */ + { 2948, 0x0000000000000000ULL, 0x094C3B0244E78655ULL }, /* XSUM_XXH3_withSecret_testdata[2948] */ + { 2949, 0x0000000000000000ULL, 0x11231A6A714E2F35ULL }, /* XSUM_XXH3_withSecret_testdata[2949] */ + { 2950, 0x0000000000000000ULL, 0xFEC0654F83BB9C8DULL }, /* XSUM_XXH3_withSecret_testdata[2950] */ + { 2951, 0x0000000000000000ULL, 0x295E1F606E5F54C1ULL }, /* XSUM_XXH3_withSecret_testdata[2951] */ + { 2952, 0x0000000000000000ULL, 0x0FB5E42BE9E6E710ULL }, /* XSUM_XXH3_withSecret_testdata[2952] */ + { 2953, 0x0000000000000000ULL, 0xC41F6CC6D803B236ULL }, /* XSUM_XXH3_withSecret_testdata[2953] */ + { 2954, 0x0000000000000000ULL, 0xDA4D34D846086CC2ULL }, /* XSUM_XXH3_withSecret_testdata[2954] */ + { 2955, 0x0000000000000000ULL, 0xB2B2C9CA61D494E1ULL }, /* XSUM_XXH3_withSecret_testdata[2955] */ + { 2956, 0x0000000000000000ULL, 0x82F0178E124F477CULL }, /* XSUM_XXH3_withSecret_testdata[2956] */ + { 2957, 0x0000000000000000ULL, 0x3FE22F0919C3D383ULL }, /* XSUM_XXH3_withSecret_testdata[2957] */ + { 2958, 0x0000000000000000ULL, 0x781120F2D102450DULL }, /* XSUM_XXH3_withSecret_testdata[2958] */ + { 2959, 0x0000000000000000ULL, 0x4581B8E8BA4B8E15ULL }, /* XSUM_XXH3_withSecret_testdata[2959] */ + { 2960, 0x0000000000000000ULL, 0x5EF8BC6F614A1E38ULL }, /* XSUM_XXH3_withSecret_testdata[2960] */ + { 2961, 0x0000000000000000ULL, 0x5584A7DA5704B8A5ULL }, /* XSUM_XXH3_withSecret_testdata[2961] */ + { 2962, 0x0000000000000000ULL, 0x410E213C34BED8DAULL }, /* XSUM_XXH3_withSecret_testdata[2962] */ + { 2963, 0x0000000000000000ULL, 0x3C06473A20355DF1ULL }, /* XSUM_XXH3_withSecret_testdata[2963] */ + { 2964, 0x0000000000000000ULL, 0x46A4D368431E6F27ULL }, /* XSUM_XXH3_withSecret_testdata[2964] */ + { 2965, 0x0000000000000000ULL, 0x0DAC2A7183236D55ULL }, /* XSUM_XXH3_withSecret_testdata[2965] */ + { 2966, 0x0000000000000000ULL, 0x84E0448ECF502BD7ULL }, /* XSUM_XXH3_withSecret_testdata[2966] */ + { 2967, 0x0000000000000000ULL, 0x3E3B324F1D7A67C0ULL }, /* XSUM_XXH3_withSecret_testdata[2967] */ + { 2968, 0x0000000000000000ULL, 0x752D76BA546789B5ULL }, /* XSUM_XXH3_withSecret_testdata[2968] */ + { 2969, 0x0000000000000000ULL, 0x6AF4416ADA64A6E8ULL }, /* XSUM_XXH3_withSecret_testdata[2969] */ + { 2970, 0x0000000000000000ULL, 0xE51908F69CE5CB3CULL }, /* XSUM_XXH3_withSecret_testdata[2970] */ + { 2971, 0x0000000000000000ULL, 0x07840A67B1220907ULL }, /* XSUM_XXH3_withSecret_testdata[2971] */ + { 2972, 0x0000000000000000ULL, 0x9726EC41E319AE79ULL }, /* XSUM_XXH3_withSecret_testdata[2972] */ + { 2973, 0x0000000000000000ULL, 0xB5AA05B6E09E6D52ULL }, /* XSUM_XXH3_withSecret_testdata[2973] */ + { 2974, 0x0000000000000000ULL, 0xDEE4714EFE0D7D19ULL }, /* XSUM_XXH3_withSecret_testdata[2974] */ + { 2975, 0x0000000000000000ULL, 0x8683B9609AD2BAD8ULL }, /* XSUM_XXH3_withSecret_testdata[2975] */ + { 2976, 0x0000000000000000ULL, 0xE597E8277DB17FEEULL }, /* XSUM_XXH3_withSecret_testdata[2976] */ + { 2977, 0x0000000000000000ULL, 0x8B9B29ACB557BFDFULL }, /* XSUM_XXH3_withSecret_testdata[2977] */ + { 2978, 0x0000000000000000ULL, 0x6E5FD99A3502572CULL }, /* XSUM_XXH3_withSecret_testdata[2978] */ + { 2979, 0x0000000000000000ULL, 0x5A98A81AF673BA24ULL }, /* XSUM_XXH3_withSecret_testdata[2979] */ + { 2980, 0x0000000000000000ULL, 0x63F598A7EA196E5CULL }, /* XSUM_XXH3_withSecret_testdata[2980] */ + { 2981, 0x0000000000000000ULL, 0x4313CB47CA9D3AE4ULL }, /* XSUM_XXH3_withSecret_testdata[2981] */ + { 2982, 0x0000000000000000ULL, 0x7218A7ABC1937665ULL }, /* XSUM_XXH3_withSecret_testdata[2982] */ + { 2983, 0x0000000000000000ULL, 0xF156732278FFF3CFULL }, /* XSUM_XXH3_withSecret_testdata[2983] */ + { 2984, 0x0000000000000000ULL, 0xF7CC0418DC1C114BULL }, /* XSUM_XXH3_withSecret_testdata[2984] */ + { 2985, 0x0000000000000000ULL, 0x0E0CA08644DD54C2ULL }, /* XSUM_XXH3_withSecret_testdata[2985] */ + { 2986, 0x0000000000000000ULL, 0xAA74DEDCB1A81017ULL }, /* XSUM_XXH3_withSecret_testdata[2986] */ + { 2987, 0x0000000000000000ULL, 0xF255D515D5E9EB26ULL }, /* XSUM_XXH3_withSecret_testdata[2987] */ + { 2988, 0x0000000000000000ULL, 0x542F350CDA095756ULL }, /* XSUM_XXH3_withSecret_testdata[2988] */ + { 2989, 0x0000000000000000ULL, 0x7BDDF1C94E03824FULL }, /* XSUM_XXH3_withSecret_testdata[2989] */ + { 2990, 0x0000000000000000ULL, 0x9AE455D15AABC880ULL }, /* XSUM_XXH3_withSecret_testdata[2990] */ + { 2991, 0x0000000000000000ULL, 0x33AB3BE4A89D3625ULL }, /* XSUM_XXH3_withSecret_testdata[2991] */ + { 2992, 0x0000000000000000ULL, 0x6C63E6CF94383962ULL }, /* XSUM_XXH3_withSecret_testdata[2992] */ + { 2993, 0x0000000000000000ULL, 0x8EDCD05B919EE191ULL }, /* XSUM_XXH3_withSecret_testdata[2993] */ + { 2994, 0x0000000000000000ULL, 0xF67E7C8B2C9A4669ULL }, /* XSUM_XXH3_withSecret_testdata[2994] */ + { 2995, 0x0000000000000000ULL, 0x39E4266FFC536EB8ULL }, /* XSUM_XXH3_withSecret_testdata[2995] */ + { 2996, 0x0000000000000000ULL, 0x829ACE387570537AULL }, /* XSUM_XXH3_withSecret_testdata[2996] */ + { 2997, 0x0000000000000000ULL, 0xDCFD4A34A8E6BD26ULL }, /* XSUM_XXH3_withSecret_testdata[2997] */ + { 2998, 0x0000000000000000ULL, 0xEE34D3DCA438A74FULL }, /* XSUM_XXH3_withSecret_testdata[2998] */ + { 2999, 0x0000000000000000ULL, 0x060D44F7CDD5904EULL }, /* XSUM_XXH3_withSecret_testdata[2999] */ + { 3000, 0x0000000000000000ULL, 0x1250C48602594CBEULL }, /* XSUM_XXH3_withSecret_testdata[3000] */ + { 3001, 0x0000000000000000ULL, 0x75B1B05BD9768D80ULL }, /* XSUM_XXH3_withSecret_testdata[3001] */ + { 3002, 0x0000000000000000ULL, 0x8E1D4A3E93349F6AULL }, /* XSUM_XXH3_withSecret_testdata[3002] */ + { 3003, 0x0000000000000000ULL, 0x317D33B5C2F3B1DFULL }, /* XSUM_XXH3_withSecret_testdata[3003] */ + { 3004, 0x0000000000000000ULL, 0xFD4650A34245B96EULL }, /* XSUM_XXH3_withSecret_testdata[3004] */ + { 3005, 0x0000000000000000ULL, 0x08BAA1559B83D5EBULL }, /* XSUM_XXH3_withSecret_testdata[3005] */ + { 3006, 0x0000000000000000ULL, 0xBF782E901A3A9A8DULL }, /* XSUM_XXH3_withSecret_testdata[3006] */ + { 3007, 0x0000000000000000ULL, 0xC5931ED0ABC4D964ULL }, /* XSUM_XXH3_withSecret_testdata[3007] */ + { 3008, 0x0000000000000000ULL, 0x0BF450B3BF31E586ULL }, /* XSUM_XXH3_withSecret_testdata[3008] */ + { 3009, 0x0000000000000000ULL, 0x4DBE698BD5B96DA0ULL }, /* XSUM_XXH3_withSecret_testdata[3009] */ + { 3010, 0x0000000000000000ULL, 0x3E241D5756D85033ULL }, /* XSUM_XXH3_withSecret_testdata[3010] */ + { 3011, 0x0000000000000000ULL, 0xD8D8FCB6AD17DB65ULL }, /* XSUM_XXH3_withSecret_testdata[3011] */ + { 3012, 0x0000000000000000ULL, 0x979038EEB6FDBB23ULL }, /* XSUM_XXH3_withSecret_testdata[3012] */ + { 3013, 0x0000000000000000ULL, 0x17C29623ACB086D2ULL }, /* XSUM_XXH3_withSecret_testdata[3013] */ + { 3014, 0x0000000000000000ULL, 0x3398BF7A94E8965EULL }, /* XSUM_XXH3_withSecret_testdata[3014] */ + { 3015, 0x0000000000000000ULL, 0x0AD193A4EA7A18E5ULL }, /* XSUM_XXH3_withSecret_testdata[3015] */ + { 3016, 0x0000000000000000ULL, 0xF209082DA597AD24ULL }, /* XSUM_XXH3_withSecret_testdata[3016] */ + { 3017, 0x0000000000000000ULL, 0x8AAD1032243F99E4ULL }, /* XSUM_XXH3_withSecret_testdata[3017] */ + { 3018, 0x0000000000000000ULL, 0xA94CDBDACDF7A210ULL }, /* XSUM_XXH3_withSecret_testdata[3018] */ + { 3019, 0x0000000000000000ULL, 0x6B62D320328C5AE1ULL }, /* XSUM_XXH3_withSecret_testdata[3019] */ + { 3020, 0x0000000000000000ULL, 0xDA5E557F5E28DB8AULL }, /* XSUM_XXH3_withSecret_testdata[3020] */ + { 3021, 0x0000000000000000ULL, 0xDAF472C7EAA50F9DULL }, /* XSUM_XXH3_withSecret_testdata[3021] */ + { 3022, 0x0000000000000000ULL, 0xEF7DC5BDD4EFB484ULL }, /* XSUM_XXH3_withSecret_testdata[3022] */ + { 3023, 0x0000000000000000ULL, 0x4273AEBD8F95C306ULL }, /* XSUM_XXH3_withSecret_testdata[3023] */ + { 3024, 0x0000000000000000ULL, 0xE3535E7338CA8698ULL }, /* XSUM_XXH3_withSecret_testdata[3024] */ + { 3025, 0x0000000000000000ULL, 0x6CD575AD5ED07DA4ULL }, /* XSUM_XXH3_withSecret_testdata[3025] */ + { 3026, 0x0000000000000000ULL, 0x29276AE02486AD00ULL }, /* XSUM_XXH3_withSecret_testdata[3026] */ + { 3027, 0x0000000000000000ULL, 0xA0B5CE2365382D03ULL }, /* XSUM_XXH3_withSecret_testdata[3027] */ + { 3028, 0x0000000000000000ULL, 0x410F0E6B726FCDEBULL }, /* XSUM_XXH3_withSecret_testdata[3028] */ + { 3029, 0x0000000000000000ULL, 0xA62AC30207B7C447ULL }, /* XSUM_XXH3_withSecret_testdata[3029] */ + { 3030, 0x0000000000000000ULL, 0x92DACCF62A620D30ULL }, /* XSUM_XXH3_withSecret_testdata[3030] */ + { 3031, 0x0000000000000000ULL, 0x6ABF0B99521E0E9DULL }, /* XSUM_XXH3_withSecret_testdata[3031] */ + { 3032, 0x0000000000000000ULL, 0x3B0CD98E1372D43CULL }, /* XSUM_XXH3_withSecret_testdata[3032] */ + { 3033, 0x0000000000000000ULL, 0x01E2872E1C17BDA7ULL }, /* XSUM_XXH3_withSecret_testdata[3033] */ + { 3034, 0x0000000000000000ULL, 0x2D9E2633E53DB16CULL }, /* XSUM_XXH3_withSecret_testdata[3034] */ + { 3035, 0x0000000000000000ULL, 0x368DD48533B9F31DULL }, /* XSUM_XXH3_withSecret_testdata[3035] */ + { 3036, 0x0000000000000000ULL, 0x4F2E1EE3DDA45EE4ULL }, /* XSUM_XXH3_withSecret_testdata[3036] */ + { 3037, 0x0000000000000000ULL, 0x30FF66799DA36614ULL }, /* XSUM_XXH3_withSecret_testdata[3037] */ + { 3038, 0x0000000000000000ULL, 0x4AAFC20716828FF3ULL }, /* XSUM_XXH3_withSecret_testdata[3038] */ + { 3039, 0x0000000000000000ULL, 0xF226B8DD54DA35E7ULL }, /* XSUM_XXH3_withSecret_testdata[3039] */ + { 3040, 0x0000000000000000ULL, 0x6C1A227605D08804ULL }, /* XSUM_XXH3_withSecret_testdata[3040] */ + { 3041, 0x0000000000000000ULL, 0x4ED822AEF5847837ULL }, /* XSUM_XXH3_withSecret_testdata[3041] */ + { 3042, 0x0000000000000000ULL, 0x883B36AA1CD505BFULL }, /* XSUM_XXH3_withSecret_testdata[3042] */ + { 3043, 0x0000000000000000ULL, 0x058963E8D54F90BEULL }, /* XSUM_XXH3_withSecret_testdata[3043] */ + { 3044, 0x0000000000000000ULL, 0x9C29F0D4C28B90C7ULL }, /* XSUM_XXH3_withSecret_testdata[3044] */ + { 3045, 0x0000000000000000ULL, 0x5FD9A0A4209B6F90ULL }, /* XSUM_XXH3_withSecret_testdata[3045] */ + { 3046, 0x0000000000000000ULL, 0xF3E49B5D7B049C5EULL }, /* XSUM_XXH3_withSecret_testdata[3046] */ + { 3047, 0x0000000000000000ULL, 0x98E9345AFA285850ULL }, /* XSUM_XXH3_withSecret_testdata[3047] */ + { 3048, 0x0000000000000000ULL, 0x8D1129C3B9E67388ULL }, /* XSUM_XXH3_withSecret_testdata[3048] */ + { 3049, 0x0000000000000000ULL, 0x855BB6F44F6A85F3ULL }, /* XSUM_XXH3_withSecret_testdata[3049] */ + { 3050, 0x0000000000000000ULL, 0x9D78F527CAC4A3AEULL }, /* XSUM_XXH3_withSecret_testdata[3050] */ + { 3051, 0x0000000000000000ULL, 0xDE61E8DA3F4D75FCULL }, /* XSUM_XXH3_withSecret_testdata[3051] */ + { 3052, 0x0000000000000000ULL, 0x1AD45D5B6AB5D872ULL }, /* XSUM_XXH3_withSecret_testdata[3052] */ + { 3053, 0x0000000000000000ULL, 0xE3F249B6B96D76D4ULL }, /* XSUM_XXH3_withSecret_testdata[3053] */ + { 3054, 0x0000000000000000ULL, 0x79C8D995A0685F8BULL }, /* XSUM_XXH3_withSecret_testdata[3054] */ + { 3055, 0x0000000000000000ULL, 0x68D85EAB36CB3870ULL }, /* XSUM_XXH3_withSecret_testdata[3055] */ + { 3056, 0x0000000000000000ULL, 0x853590CBE8F7C06EULL }, /* XSUM_XXH3_withSecret_testdata[3056] */ + { 3057, 0x0000000000000000ULL, 0xB19AD049A7D460D3ULL }, /* XSUM_XXH3_withSecret_testdata[3057] */ + { 3058, 0x0000000000000000ULL, 0x4545D3E37516E8CBULL }, /* XSUM_XXH3_withSecret_testdata[3058] */ + { 3059, 0x0000000000000000ULL, 0x0B73B87EF4753050ULL }, /* XSUM_XXH3_withSecret_testdata[3059] */ + { 3060, 0x0000000000000000ULL, 0x4280EBDF257E215BULL }, /* XSUM_XXH3_withSecret_testdata[3060] */ + { 3061, 0x0000000000000000ULL, 0x5ED37552FE3E09FFULL }, /* XSUM_XXH3_withSecret_testdata[3061] */ + { 3062, 0x0000000000000000ULL, 0x3CEEB6B4D7839EF2ULL }, /* XSUM_XXH3_withSecret_testdata[3062] */ + { 3063, 0x0000000000000000ULL, 0x9D74B7565FB68879ULL }, /* XSUM_XXH3_withSecret_testdata[3063] */ + { 3064, 0x0000000000000000ULL, 0xBCC97275F418532BULL }, /* XSUM_XXH3_withSecret_testdata[3064] */ + { 3065, 0x0000000000000000ULL, 0x9286EE8B29B7D677ULL }, /* XSUM_XXH3_withSecret_testdata[3065] */ + { 3066, 0x0000000000000000ULL, 0x2D301FDD114930D5ULL }, /* XSUM_XXH3_withSecret_testdata[3066] */ + { 3067, 0x0000000000000000ULL, 0xF4A5F0BA1AD09DFFULL }, /* XSUM_XXH3_withSecret_testdata[3067] */ + { 3068, 0x0000000000000000ULL, 0x2445BA11D91914DAULL }, /* XSUM_XXH3_withSecret_testdata[3068] */ + { 3069, 0x0000000000000000ULL, 0xDB217281B4AC796DULL }, /* XSUM_XXH3_withSecret_testdata[3069] */ + { 3070, 0x0000000000000000ULL, 0x535E96FDD327B705ULL }, /* XSUM_XXH3_withSecret_testdata[3070] */ + { 3071, 0x0000000000000000ULL, 0x8B57904DB74393D5ULL }, /* XSUM_XXH3_withSecret_testdata[3071] */ + { 3072, 0x0000000000000000ULL, 0xF5A0D758BA06FCFEULL }, /* XSUM_XXH3_withSecret_testdata[3072] */ + { 3073, 0x0000000000000000ULL, 0x70C7020C10282027ULL }, /* XSUM_XXH3_withSecret_testdata[3073] */ + { 3074, 0x0000000000000000ULL, 0xFC72B1DF46FB974CULL }, /* XSUM_XXH3_withSecret_testdata[3074] */ + { 3075, 0x0000000000000000ULL, 0x9C7919FFA900C172ULL }, /* XSUM_XXH3_withSecret_testdata[3075] */ + { 3076, 0x0000000000000000ULL, 0xB37179BE95C6DA2CULL }, /* XSUM_XXH3_withSecret_testdata[3076] */ + { 3077, 0x0000000000000000ULL, 0xB2F096B36193A13AULL }, /* XSUM_XXH3_withSecret_testdata[3077] */ + { 3078, 0x0000000000000000ULL, 0xFE2E4C5796FEEF55ULL }, /* XSUM_XXH3_withSecret_testdata[3078] */ + { 3079, 0x0000000000000000ULL, 0xFA51B9C142426A7CULL }, /* XSUM_XXH3_withSecret_testdata[3079] */ + { 3080, 0x0000000000000000ULL, 0x8DC4F7C6C8E1141FULL }, /* XSUM_XXH3_withSecret_testdata[3080] */ + { 3081, 0x0000000000000000ULL, 0x9FBE21513A0281D6ULL }, /* XSUM_XXH3_withSecret_testdata[3081] */ + { 3082, 0x0000000000000000ULL, 0x46D73042AF729452ULL }, /* XSUM_XXH3_withSecret_testdata[3082] */ + { 3083, 0x0000000000000000ULL, 0x8E50D0A1EB4555D7ULL }, /* XSUM_XXH3_withSecret_testdata[3083] */ + { 3084, 0x0000000000000000ULL, 0x9C60BF2B5F53C3A8ULL }, /* XSUM_XXH3_withSecret_testdata[3084] */ + { 3085, 0x0000000000000000ULL, 0xACFB0D25BE2473E4ULL }, /* XSUM_XXH3_withSecret_testdata[3085] */ + { 3086, 0x0000000000000000ULL, 0x68F68D81C62DDDFAULL }, /* XSUM_XXH3_withSecret_testdata[3086] */ + { 3087, 0x0000000000000000ULL, 0xA021287FC6E85E87ULL }, /* XSUM_XXH3_withSecret_testdata[3087] */ + { 3088, 0x0000000000000000ULL, 0x9722CD9C66A0C16AULL }, /* XSUM_XXH3_withSecret_testdata[3088] */ + { 3089, 0x0000000000000000ULL, 0x43F580D2A0F20E3CULL }, /* XSUM_XXH3_withSecret_testdata[3089] */ + { 3090, 0x0000000000000000ULL, 0x5E45E938F19764A3ULL }, /* XSUM_XXH3_withSecret_testdata[3090] */ + { 3091, 0x0000000000000000ULL, 0xFDDEABFF7F3808E6ULL }, /* XSUM_XXH3_withSecret_testdata[3091] */ + { 3092, 0x0000000000000000ULL, 0xA2D965DB999F4B59ULL }, /* XSUM_XXH3_withSecret_testdata[3092] */ + { 3093, 0x0000000000000000ULL, 0x7E75B21D76D4D7D3ULL }, /* XSUM_XXH3_withSecret_testdata[3093] */ + { 3094, 0x0000000000000000ULL, 0xE28496279A4E4CCFULL }, /* XSUM_XXH3_withSecret_testdata[3094] */ + { 3095, 0x0000000000000000ULL, 0xFA9EAC5C07C0D47BULL }, /* XSUM_XXH3_withSecret_testdata[3095] */ + { 3096, 0x0000000000000000ULL, 0xF5DCB369B6A947E1ULL }, /* XSUM_XXH3_withSecret_testdata[3096] */ + { 3097, 0x0000000000000000ULL, 0x55213D013BB9F51AULL }, /* XSUM_XXH3_withSecret_testdata[3097] */ + { 3098, 0x0000000000000000ULL, 0xB09E9866DDD82727ULL }, /* XSUM_XXH3_withSecret_testdata[3098] */ + { 3099, 0x0000000000000000ULL, 0xA4068525FE5AD786ULL }, /* XSUM_XXH3_withSecret_testdata[3099] */ + { 3100, 0x0000000000000000ULL, 0x5769EBD2B8848612ULL }, /* XSUM_XXH3_withSecret_testdata[3100] */ + { 3101, 0x0000000000000000ULL, 0x593AA572515D7990ULL }, /* XSUM_XXH3_withSecret_testdata[3101] */ + { 3102, 0x0000000000000000ULL, 0x8895097FFF3EAFBBULL }, /* XSUM_XXH3_withSecret_testdata[3102] */ + { 3103, 0x0000000000000000ULL, 0x4545E80628795066ULL }, /* XSUM_XXH3_withSecret_testdata[3103] */ + { 3104, 0x0000000000000000ULL, 0xE2D95816794AF1C5ULL }, /* XSUM_XXH3_withSecret_testdata[3104] */ + { 3105, 0x0000000000000000ULL, 0x0A8B6B98242FD79DULL }, /* XSUM_XXH3_withSecret_testdata[3105] */ + { 3106, 0x0000000000000000ULL, 0xE8F63F15B49ADBDEULL }, /* XSUM_XXH3_withSecret_testdata[3106] */ + { 3107, 0x0000000000000000ULL, 0xD305410E5F630498ULL }, /* XSUM_XXH3_withSecret_testdata[3107] */ + { 3108, 0x0000000000000000ULL, 0x8D7C9A3E9593CE00ULL }, /* XSUM_XXH3_withSecret_testdata[3108] */ + { 3109, 0x0000000000000000ULL, 0x2BC9BB427B8B5CF2ULL }, /* XSUM_XXH3_withSecret_testdata[3109] */ + { 3110, 0x0000000000000000ULL, 0x3DC4AA81C295CDCCULL }, /* XSUM_XXH3_withSecret_testdata[3110] */ + { 3111, 0x0000000000000000ULL, 0x6B87FC5DDBDEE26AULL }, /* XSUM_XXH3_withSecret_testdata[3111] */ + { 3112, 0x0000000000000000ULL, 0xCA452A60E351B246ULL }, /* XSUM_XXH3_withSecret_testdata[3112] */ + { 3113, 0x0000000000000000ULL, 0x9828C09D21790437ULL }, /* XSUM_XXH3_withSecret_testdata[3113] */ + { 3114, 0x0000000000000000ULL, 0xBC7702DBF295E1F2ULL }, /* XSUM_XXH3_withSecret_testdata[3114] */ + { 3115, 0x0000000000000000ULL, 0x24816B508733E6BFULL }, /* XSUM_XXH3_withSecret_testdata[3115] */ + { 3116, 0x0000000000000000ULL, 0xEED74289728E004FULL }, /* XSUM_XXH3_withSecret_testdata[3116] */ + { 3117, 0x0000000000000000ULL, 0xBD07A4B465E0B215ULL }, /* XSUM_XXH3_withSecret_testdata[3117] */ + { 3118, 0x0000000000000000ULL, 0x85303ACEDDA3E876ULL }, /* XSUM_XXH3_withSecret_testdata[3118] */ + { 3119, 0x0000000000000000ULL, 0x950EE5D649E02718ULL }, /* XSUM_XXH3_withSecret_testdata[3119] */ + { 3120, 0x0000000000000000ULL, 0x44E13EB803569F36ULL }, /* XSUM_XXH3_withSecret_testdata[3120] */ + { 3121, 0x0000000000000000ULL, 0x9052958C5F1AB505ULL }, /* XSUM_XXH3_withSecret_testdata[3121] */ + { 3122, 0x0000000000000000ULL, 0xADFCDB64C1F35FF1ULL }, /* XSUM_XXH3_withSecret_testdata[3122] */ + { 3123, 0x0000000000000000ULL, 0xC3A8337A16A60E97ULL }, /* XSUM_XXH3_withSecret_testdata[3123] */ + { 3124, 0x0000000000000000ULL, 0xCB8A6BDF5CAB2CB6ULL }, /* XSUM_XXH3_withSecret_testdata[3124] */ + { 3125, 0x0000000000000000ULL, 0x14701532B3149D63ULL }, /* XSUM_XXH3_withSecret_testdata[3125] */ + { 3126, 0x0000000000000000ULL, 0xAD4936262BFB674DULL }, /* XSUM_XXH3_withSecret_testdata[3126] */ + { 3127, 0x0000000000000000ULL, 0xCB4435C89BEE4D6DULL }, /* XSUM_XXH3_withSecret_testdata[3127] */ + { 3128, 0x0000000000000000ULL, 0x319772CA8C513FC3ULL }, /* XSUM_XXH3_withSecret_testdata[3128] */ + { 3129, 0x0000000000000000ULL, 0xB14F6E0D24FB425AULL }, /* XSUM_XXH3_withSecret_testdata[3129] */ + { 3130, 0x0000000000000000ULL, 0xD8C42EABA81D5D74ULL }, /* XSUM_XXH3_withSecret_testdata[3130] */ + { 3131, 0x0000000000000000ULL, 0xCC1BDC02061EFFC1ULL }, /* XSUM_XXH3_withSecret_testdata[3131] */ + { 3132, 0x0000000000000000ULL, 0x53164136A7DAD369ULL }, /* XSUM_XXH3_withSecret_testdata[3132] */ + { 3133, 0x0000000000000000ULL, 0x1CF7D5D6CFA19B84ULL }, /* XSUM_XXH3_withSecret_testdata[3133] */ + { 3134, 0x0000000000000000ULL, 0x6F54091F0DC97503ULL }, /* XSUM_XXH3_withSecret_testdata[3134] */ + { 3135, 0x0000000000000000ULL, 0x4FDF2B64A40B7D71ULL }, /* XSUM_XXH3_withSecret_testdata[3135] */ + { 3136, 0x0000000000000000ULL, 0xD95623C151DE1B95ULL }, /* XSUM_XXH3_withSecret_testdata[3136] */ + { 3137, 0x0000000000000000ULL, 0x7C68A24FC4BBFF0AULL }, /* XSUM_XXH3_withSecret_testdata[3137] */ + { 3138, 0x0000000000000000ULL, 0x8D4A355AF955A352ULL }, /* XSUM_XXH3_withSecret_testdata[3138] */ + { 3139, 0x0000000000000000ULL, 0x9506F8F6A8582A58ULL }, /* XSUM_XXH3_withSecret_testdata[3139] */ + { 3140, 0x0000000000000000ULL, 0x6A2B11D6DE59D82CULL }, /* XSUM_XXH3_withSecret_testdata[3140] */ + { 3141, 0x0000000000000000ULL, 0xB2C155DB1DDD708CULL }, /* XSUM_XXH3_withSecret_testdata[3141] */ + { 3142, 0x0000000000000000ULL, 0x0BE121D269940379ULL }, /* XSUM_XXH3_withSecret_testdata[3142] */ + { 3143, 0x0000000000000000ULL, 0x1864D6B09A67166AULL }, /* XSUM_XXH3_withSecret_testdata[3143] */ + { 3144, 0x0000000000000000ULL, 0x99F7030C2A25BB9BULL }, /* XSUM_XXH3_withSecret_testdata[3144] */ + { 3145, 0x0000000000000000ULL, 0x77ED4A9F6BEB8243ULL }, /* XSUM_XXH3_withSecret_testdata[3145] */ + { 3146, 0x0000000000000000ULL, 0xBB093C1935EDA716ULL }, /* XSUM_XXH3_withSecret_testdata[3146] */ + { 3147, 0x0000000000000000ULL, 0x7491E7B95E770CD0ULL }, /* XSUM_XXH3_withSecret_testdata[3147] */ + { 3148, 0x0000000000000000ULL, 0x652DBD7D11D10C92ULL }, /* XSUM_XXH3_withSecret_testdata[3148] */ + { 3149, 0x0000000000000000ULL, 0x800857B56BAA6999ULL }, /* XSUM_XXH3_withSecret_testdata[3149] */ + { 3150, 0x0000000000000000ULL, 0xC7E4380E43DE0CE7ULL }, /* XSUM_XXH3_withSecret_testdata[3150] */ + { 3151, 0x0000000000000000ULL, 0xFD7B186DF737F475ULL }, /* XSUM_XXH3_withSecret_testdata[3151] */ + { 3152, 0x0000000000000000ULL, 0xA1760DFF2512F00BULL }, /* XSUM_XXH3_withSecret_testdata[3152] */ + { 3153, 0x0000000000000000ULL, 0x293C0DB7672CFFA0ULL }, /* XSUM_XXH3_withSecret_testdata[3153] */ + { 3154, 0x0000000000000000ULL, 0x1E7350299B820EC1ULL }, /* XSUM_XXH3_withSecret_testdata[3154] */ + { 3155, 0x0000000000000000ULL, 0x396EFA75E8FC579BULL }, /* XSUM_XXH3_withSecret_testdata[3155] */ + { 3156, 0x0000000000000000ULL, 0x310227B2DFEC0B08ULL }, /* XSUM_XXH3_withSecret_testdata[3156] */ + { 3157, 0x0000000000000000ULL, 0xA1A80226C7A2CE9FULL }, /* XSUM_XXH3_withSecret_testdata[3157] */ + { 3158, 0x0000000000000000ULL, 0x33ACF7C54F5BA9A2ULL }, /* XSUM_XXH3_withSecret_testdata[3158] */ + { 3159, 0x0000000000000000ULL, 0x148730CA3B26F9DFULL }, /* XSUM_XXH3_withSecret_testdata[3159] */ + { 3160, 0x0000000000000000ULL, 0xAE67E4D47D742A18ULL }, /* XSUM_XXH3_withSecret_testdata[3160] */ + { 3161, 0x0000000000000000ULL, 0x690643FC05471E6DULL }, /* XSUM_XXH3_withSecret_testdata[3161] */ + { 3162, 0x0000000000000000ULL, 0xDF4B703D708BF09FULL }, /* XSUM_XXH3_withSecret_testdata[3162] */ + { 3163, 0x0000000000000000ULL, 0xBC2A9A17890539EBULL }, /* XSUM_XXH3_withSecret_testdata[3163] */ + { 3164, 0x0000000000000000ULL, 0x8C7F7ED0164BC7D3ULL }, /* XSUM_XXH3_withSecret_testdata[3164] */ + { 3165, 0x0000000000000000ULL, 0x495255725E29D9B2ULL }, /* XSUM_XXH3_withSecret_testdata[3165] */ + { 3166, 0x0000000000000000ULL, 0x3083F54957C6159CULL }, /* XSUM_XXH3_withSecret_testdata[3166] */ + { 3167, 0x0000000000000000ULL, 0xD2B819E0D63C599CULL }, /* XSUM_XXH3_withSecret_testdata[3167] */ + { 3168, 0x0000000000000000ULL, 0xFD92D442AA13E961ULL }, /* XSUM_XXH3_withSecret_testdata[3168] */ + { 3169, 0x0000000000000000ULL, 0x286AEE2983DB23BDULL }, /* XSUM_XXH3_withSecret_testdata[3169] */ + { 3170, 0x0000000000000000ULL, 0x33DDFAEB4EBC48F6ULL }, /* XSUM_XXH3_withSecret_testdata[3170] */ + { 3171, 0x0000000000000000ULL, 0xC48860DC6C0BB4C4ULL }, /* XSUM_XXH3_withSecret_testdata[3171] */ + { 3172, 0x0000000000000000ULL, 0x9B74162796A02469ULL }, /* XSUM_XXH3_withSecret_testdata[3172] */ + { 3173, 0x0000000000000000ULL, 0x3A1F72EEAAE2FF5CULL }, /* XSUM_XXH3_withSecret_testdata[3173] */ + { 3174, 0x0000000000000000ULL, 0xFC2277998C3144BEULL }, /* XSUM_XXH3_withSecret_testdata[3174] */ + { 3175, 0x0000000000000000ULL, 0x2AE9DD5B8FD328E3ULL }, /* XSUM_XXH3_withSecret_testdata[3175] */ + { 3176, 0x0000000000000000ULL, 0xFC5A0B7233DB06B7ULL }, /* XSUM_XXH3_withSecret_testdata[3176] */ + { 3177, 0x0000000000000000ULL, 0x665A0A09FFFFE390ULL }, /* XSUM_XXH3_withSecret_testdata[3177] */ + { 3178, 0x0000000000000000ULL, 0x3BC5D322F3AA0932ULL }, /* XSUM_XXH3_withSecret_testdata[3178] */ + { 3179, 0x0000000000000000ULL, 0xF44D1AB38E620FEBULL }, /* XSUM_XXH3_withSecret_testdata[3179] */ + { 3180, 0x0000000000000000ULL, 0x14BD81EAB16E510EULL }, /* XSUM_XXH3_withSecret_testdata[3180] */ + { 3181, 0x0000000000000000ULL, 0x6F56C6F9E8BB459EULL }, /* XSUM_XXH3_withSecret_testdata[3181] */ + { 3182, 0x0000000000000000ULL, 0x97BD98B2A293810CULL }, /* XSUM_XXH3_withSecret_testdata[3182] */ + { 3183, 0x0000000000000000ULL, 0x6F26D4EADE05ABF6ULL }, /* XSUM_XXH3_withSecret_testdata[3183] */ + { 3184, 0x0000000000000000ULL, 0x1248E27C46185A24ULL }, /* XSUM_XXH3_withSecret_testdata[3184] */ + { 3185, 0x0000000000000000ULL, 0xB17D2E2C98F3AF5CULL }, /* XSUM_XXH3_withSecret_testdata[3185] */ + { 3186, 0x0000000000000000ULL, 0xA71E3F08DD214859ULL }, /* XSUM_XXH3_withSecret_testdata[3186] */ + { 3187, 0x0000000000000000ULL, 0xC61C31200BDC48FAULL }, /* XSUM_XXH3_withSecret_testdata[3187] */ + { 3188, 0x0000000000000000ULL, 0xD0E13FC28B2F9913ULL }, /* XSUM_XXH3_withSecret_testdata[3188] */ + { 3189, 0x0000000000000000ULL, 0x917EBBA225F50792ULL }, /* XSUM_XXH3_withSecret_testdata[3189] */ + { 3190, 0x0000000000000000ULL, 0xBEEB801645B5DBD4ULL }, /* XSUM_XXH3_withSecret_testdata[3190] */ + { 3191, 0x0000000000000000ULL, 0xD5FDBBFCC774BB33ULL }, /* XSUM_XXH3_withSecret_testdata[3191] */ + { 3192, 0x0000000000000000ULL, 0xB39010374D35AF77ULL }, /* XSUM_XXH3_withSecret_testdata[3192] */ + { 3193, 0x0000000000000000ULL, 0xC79015AFC8B3B628ULL }, /* XSUM_XXH3_withSecret_testdata[3193] */ + { 3194, 0x0000000000000000ULL, 0x65B4346F6BD4953DULL }, /* XSUM_XXH3_withSecret_testdata[3194] */ + { 3195, 0x0000000000000000ULL, 0x64BE0D2EE2E286D0ULL }, /* XSUM_XXH3_withSecret_testdata[3195] */ + { 3196, 0x0000000000000000ULL, 0x5059571289760C2AULL }, /* XSUM_XXH3_withSecret_testdata[3196] */ + { 3197, 0x0000000000000000ULL, 0xE97995973A7CC660ULL }, /* XSUM_XXH3_withSecret_testdata[3197] */ + { 3198, 0x0000000000000000ULL, 0xF0B90BF70B7105E4ULL }, /* XSUM_XXH3_withSecret_testdata[3198] */ + { 3199, 0x0000000000000000ULL, 0xFF6A9D5D707A6F1CULL }, /* XSUM_XXH3_withSecret_testdata[3199] */ + { 3200, 0x0000000000000000ULL, 0xD7200BA5B8275086ULL }, /* XSUM_XXH3_withSecret_testdata[3200] */ + { 3201, 0x0000000000000000ULL, 0x40C880A6D9B3D3FAULL }, /* XSUM_XXH3_withSecret_testdata[3201] */ + { 3202, 0x0000000000000000ULL, 0xE1AC910E7A8736E7ULL }, /* XSUM_XXH3_withSecret_testdata[3202] */ + { 3203, 0x0000000000000000ULL, 0x2FB99866A4A515CCULL }, /* XSUM_XXH3_withSecret_testdata[3203] */ + { 3204, 0x0000000000000000ULL, 0x3E62E8EFB0A503B8ULL }, /* XSUM_XXH3_withSecret_testdata[3204] */ + { 3205, 0x0000000000000000ULL, 0xBBDD949C0182C902ULL }, /* XSUM_XXH3_withSecret_testdata[3205] */ + { 3206, 0x0000000000000000ULL, 0xAD7FB51FA61A277BULL }, /* XSUM_XXH3_withSecret_testdata[3206] */ + { 3207, 0x0000000000000000ULL, 0x6E991973891858B7ULL }, /* XSUM_XXH3_withSecret_testdata[3207] */ + { 3208, 0x0000000000000000ULL, 0x997053F6C459F928ULL }, /* XSUM_XXH3_withSecret_testdata[3208] */ + { 3209, 0x0000000000000000ULL, 0xEE41F7488F928DABULL }, /* XSUM_XXH3_withSecret_testdata[3209] */ + { 3210, 0x0000000000000000ULL, 0x3E7E7CA24E05CC73ULL }, /* XSUM_XXH3_withSecret_testdata[3210] */ + { 3211, 0x0000000000000000ULL, 0xE23E5E2F1C63B479ULL }, /* XSUM_XXH3_withSecret_testdata[3211] */ + { 3212, 0x0000000000000000ULL, 0x14EC7278C8ECAE37ULL }, /* XSUM_XXH3_withSecret_testdata[3212] */ + { 3213, 0x0000000000000000ULL, 0x5AA9E0AEBEC9477AULL }, /* XSUM_XXH3_withSecret_testdata[3213] */ + { 3214, 0x0000000000000000ULL, 0x55CD91E1BBA19DFEULL }, /* XSUM_XXH3_withSecret_testdata[3214] */ + { 3215, 0x0000000000000000ULL, 0xFF0BEE5FE295C1ABULL }, /* XSUM_XXH3_withSecret_testdata[3215] */ + { 3216, 0x0000000000000000ULL, 0xDA59587CD473B873ULL }, /* XSUM_XXH3_withSecret_testdata[3216] */ + { 3217, 0x0000000000000000ULL, 0xC1249BE859936A26ULL }, /* XSUM_XXH3_withSecret_testdata[3217] */ + { 3218, 0x0000000000000000ULL, 0xA273BECC861BABA9ULL }, /* XSUM_XXH3_withSecret_testdata[3218] */ + { 3219, 0x0000000000000000ULL, 0x21ABF4545EF8335BULL }, /* XSUM_XXH3_withSecret_testdata[3219] */ + { 3220, 0x0000000000000000ULL, 0x9F35CFC3E0091E3CULL }, /* XSUM_XXH3_withSecret_testdata[3220] */ + { 3221, 0x0000000000000000ULL, 0xC4136979A80FE8F0ULL }, /* XSUM_XXH3_withSecret_testdata[3221] */ + { 3222, 0x0000000000000000ULL, 0x9F85920843FA1F7FULL }, /* XSUM_XXH3_withSecret_testdata[3222] */ + { 3223, 0x0000000000000000ULL, 0xECCCB09DCDFBAE5EULL }, /* XSUM_XXH3_withSecret_testdata[3223] */ + { 3224, 0x0000000000000000ULL, 0xAADB3A586BC7FE2CULL }, /* XSUM_XXH3_withSecret_testdata[3224] */ + { 3225, 0x0000000000000000ULL, 0x86870DF14A65EE9AULL }, /* XSUM_XXH3_withSecret_testdata[3225] */ + { 3226, 0x0000000000000000ULL, 0x0E4F7208A416DA59ULL }, /* XSUM_XXH3_withSecret_testdata[3226] */ + { 3227, 0x0000000000000000ULL, 0x05D234FCE6387034ULL }, /* XSUM_XXH3_withSecret_testdata[3227] */ + { 3228, 0x0000000000000000ULL, 0xCCEBE82EBCFF38DDULL }, /* XSUM_XXH3_withSecret_testdata[3228] */ + { 3229, 0x0000000000000000ULL, 0x1D7576EAF2ED8398ULL }, /* XSUM_XXH3_withSecret_testdata[3229] */ + { 3230, 0x0000000000000000ULL, 0xF6A84BDF1974F42EULL }, /* XSUM_XXH3_withSecret_testdata[3230] */ + { 3231, 0x0000000000000000ULL, 0x8FE2D205D4EF2916ULL }, /* XSUM_XXH3_withSecret_testdata[3231] */ + { 3232, 0x0000000000000000ULL, 0xCEE1E2241957271BULL }, /* XSUM_XXH3_withSecret_testdata[3232] */ + { 3233, 0x0000000000000000ULL, 0xD4D39543A5EAC379ULL }, /* XSUM_XXH3_withSecret_testdata[3233] */ + { 3234, 0x0000000000000000ULL, 0x07483EE0BECEB02DULL }, /* XSUM_XXH3_withSecret_testdata[3234] */ + { 3235, 0x0000000000000000ULL, 0x9F79C88265C00AE5ULL }, /* XSUM_XXH3_withSecret_testdata[3235] */ + { 3236, 0x0000000000000000ULL, 0xF4B64A31BB0925F3ULL }, /* XSUM_XXH3_withSecret_testdata[3236] */ + { 3237, 0x0000000000000000ULL, 0x17629432F2AC5569ULL }, /* XSUM_XXH3_withSecret_testdata[3237] */ + { 3238, 0x0000000000000000ULL, 0x75960AABB155EED0ULL }, /* XSUM_XXH3_withSecret_testdata[3238] */ + { 3239, 0x0000000000000000ULL, 0x805586E578DA6070ULL }, /* XSUM_XXH3_withSecret_testdata[3239] */ + { 3240, 0x0000000000000000ULL, 0x2B7A4B339E92DBB7ULL }, /* XSUM_XXH3_withSecret_testdata[3240] */ + { 3241, 0x0000000000000000ULL, 0xDAC8041DADC13ABCULL }, /* XSUM_XXH3_withSecret_testdata[3241] */ + { 3242, 0x0000000000000000ULL, 0x78278E639874DC18ULL }, /* XSUM_XXH3_withSecret_testdata[3242] */ + { 3243, 0x0000000000000000ULL, 0xA80739581807C6A0ULL }, /* XSUM_XXH3_withSecret_testdata[3243] */ + { 3244, 0x0000000000000000ULL, 0x06724F4774CC1152ULL }, /* XSUM_XXH3_withSecret_testdata[3244] */ + { 3245, 0x0000000000000000ULL, 0xD29FFA0A3D696069ULL }, /* XSUM_XXH3_withSecret_testdata[3245] */ + { 3246, 0x0000000000000000ULL, 0x7800F152663EC731ULL }, /* XSUM_XXH3_withSecret_testdata[3246] */ + { 3247, 0x0000000000000000ULL, 0x7147FFB2AE7057E3ULL }, /* XSUM_XXH3_withSecret_testdata[3247] */ + { 3248, 0x0000000000000000ULL, 0xF93CDDB9E4BDEEF3ULL }, /* XSUM_XXH3_withSecret_testdata[3248] */ + { 3249, 0x0000000000000000ULL, 0xB26C47203FC0BA4AULL }, /* XSUM_XXH3_withSecret_testdata[3249] */ + { 3250, 0x0000000000000000ULL, 0x30928BB6516AD8E9ULL }, /* XSUM_XXH3_withSecret_testdata[3250] */ + { 3251, 0x0000000000000000ULL, 0xCD68EEB7FFEFEE77ULL }, /* XSUM_XXH3_withSecret_testdata[3251] */ + { 3252, 0x0000000000000000ULL, 0x182D8D18B7DA7BAFULL }, /* XSUM_XXH3_withSecret_testdata[3252] */ + { 3253, 0x0000000000000000ULL, 0xEC90638331FFE0EAULL }, /* XSUM_XXH3_withSecret_testdata[3253] */ + { 3254, 0x0000000000000000ULL, 0x92136719A30FE7C3ULL }, /* XSUM_XXH3_withSecret_testdata[3254] */ + { 3255, 0x0000000000000000ULL, 0x4188F703E8995151ULL }, /* XSUM_XXH3_withSecret_testdata[3255] */ + { 3256, 0x0000000000000000ULL, 0x5FBCAB7C0F5A1A9AULL }, /* XSUM_XXH3_withSecret_testdata[3256] */ + { 3257, 0x0000000000000000ULL, 0x3577B9297D0D93E0ULL }, /* XSUM_XXH3_withSecret_testdata[3257] */ + { 3258, 0x0000000000000000ULL, 0xEEDDC51C0284D48CULL }, /* XSUM_XXH3_withSecret_testdata[3258] */ + { 3259, 0x0000000000000000ULL, 0xAAE49BBB5A6C03B0ULL }, /* XSUM_XXH3_withSecret_testdata[3259] */ + { 3260, 0x0000000000000000ULL, 0xE9847176A70B8B77ULL }, /* XSUM_XXH3_withSecret_testdata[3260] */ + { 3261, 0x0000000000000000ULL, 0x451B1206F26996CFULL }, /* XSUM_XXH3_withSecret_testdata[3261] */ + { 3262, 0x0000000000000000ULL, 0x96D2704A4EDF5ED9ULL }, /* XSUM_XXH3_withSecret_testdata[3262] */ + { 3263, 0x0000000000000000ULL, 0xB78D78D2CEDA1298ULL }, /* XSUM_XXH3_withSecret_testdata[3263] */ + { 3264, 0x0000000000000000ULL, 0x30E758251E3ABB42ULL }, /* XSUM_XXH3_withSecret_testdata[3264] */ + { 3265, 0x0000000000000000ULL, 0xDC2EEF69D4E8EAE3ULL }, /* XSUM_XXH3_withSecret_testdata[3265] */ + { 3266, 0x0000000000000000ULL, 0xC1CCE6D532429655ULL }, /* XSUM_XXH3_withSecret_testdata[3266] */ + { 3267, 0x0000000000000000ULL, 0xB5365644227C182FULL }, /* XSUM_XXH3_withSecret_testdata[3267] */ + { 3268, 0x0000000000000000ULL, 0x495ADC025DE4FE81ULL }, /* XSUM_XXH3_withSecret_testdata[3268] */ + { 3269, 0x0000000000000000ULL, 0x59B76DB9F2595C4DULL }, /* XSUM_XXH3_withSecret_testdata[3269] */ + { 3270, 0x0000000000000000ULL, 0x64F4B76BB4C42F3FULL }, /* XSUM_XXH3_withSecret_testdata[3270] */ + { 3271, 0x0000000000000000ULL, 0xBB6ADA7A691FAFDFULL }, /* XSUM_XXH3_withSecret_testdata[3271] */ + { 3272, 0x0000000000000000ULL, 0x7AFB04DA397BDB6EULL }, /* XSUM_XXH3_withSecret_testdata[3272] */ + { 3273, 0x0000000000000000ULL, 0x3388D1D5A1BD43F2ULL }, /* XSUM_XXH3_withSecret_testdata[3273] */ + { 3274, 0x0000000000000000ULL, 0xD4B44FC5D63B2CFDULL }, /* XSUM_XXH3_withSecret_testdata[3274] */ + { 3275, 0x0000000000000000ULL, 0x1009E1BB12141C55ULL }, /* XSUM_XXH3_withSecret_testdata[3275] */ + { 3276, 0x0000000000000000ULL, 0x1148520E5409A130ULL }, /* XSUM_XXH3_withSecret_testdata[3276] */ + { 3277, 0x0000000000000000ULL, 0x07DD7D8893705506ULL }, /* XSUM_XXH3_withSecret_testdata[3277] */ + { 3278, 0x0000000000000000ULL, 0x5A7E5EE9780970CDULL }, /* XSUM_XXH3_withSecret_testdata[3278] */ + { 3279, 0x0000000000000000ULL, 0x8FE6E18067B39220ULL }, /* XSUM_XXH3_withSecret_testdata[3279] */ + { 3280, 0x0000000000000000ULL, 0xEEF84C2AE2A5730EULL }, /* XSUM_XXH3_withSecret_testdata[3280] */ + { 3281, 0x0000000000000000ULL, 0x92440C8DDB9D92B3ULL }, /* XSUM_XXH3_withSecret_testdata[3281] */ + { 3282, 0x0000000000000000ULL, 0xC43FF10C2585ACDEULL }, /* XSUM_XXH3_withSecret_testdata[3282] */ + { 3283, 0x0000000000000000ULL, 0xBB93E04E5654CDB9ULL }, /* XSUM_XXH3_withSecret_testdata[3283] */ + { 3284, 0x0000000000000000ULL, 0xA495E819DA447A59ULL }, /* XSUM_XXH3_withSecret_testdata[3284] */ + { 3285, 0x0000000000000000ULL, 0x85140AB1AB2056F2ULL }, /* XSUM_XXH3_withSecret_testdata[3285] */ + { 3286, 0x0000000000000000ULL, 0xA7D605BD2B36A010ULL }, /* XSUM_XXH3_withSecret_testdata[3286] */ + { 3287, 0x0000000000000000ULL, 0x9DF31DA867F80254ULL }, /* XSUM_XXH3_withSecret_testdata[3287] */ + { 3288, 0x0000000000000000ULL, 0xE4C101854AD46B56ULL }, /* XSUM_XXH3_withSecret_testdata[3288] */ + { 3289, 0x0000000000000000ULL, 0xE5B20108F51BC39CULL }, /* XSUM_XXH3_withSecret_testdata[3289] */ + { 3290, 0x0000000000000000ULL, 0xD49B7388BDE1C27AULL }, /* XSUM_XXH3_withSecret_testdata[3290] */ + { 3291, 0x0000000000000000ULL, 0x3B5930EDB0275616ULL }, /* XSUM_XXH3_withSecret_testdata[3291] */ + { 3292, 0x0000000000000000ULL, 0x00D797ACF214994EULL }, /* XSUM_XXH3_withSecret_testdata[3292] */ + { 3293, 0x0000000000000000ULL, 0x91119537BC88F950ULL }, /* XSUM_XXH3_withSecret_testdata[3293] */ + { 3294, 0x0000000000000000ULL, 0x48287C9BB49C2670ULL }, /* XSUM_XXH3_withSecret_testdata[3294] */ + { 3295, 0x0000000000000000ULL, 0x862AD932ED34EDAAULL }, /* XSUM_XXH3_withSecret_testdata[3295] */ + { 3296, 0x0000000000000000ULL, 0xE3F9D6D114BBF9B7ULL }, /* XSUM_XXH3_withSecret_testdata[3296] */ + { 3297, 0x0000000000000000ULL, 0x85B5773D9231AAC3ULL }, /* XSUM_XXH3_withSecret_testdata[3297] */ + { 3298, 0x0000000000000000ULL, 0x254B00553E101FFEULL }, /* XSUM_XXH3_withSecret_testdata[3298] */ + { 3299, 0x0000000000000000ULL, 0x4195D2FD420E6CCEULL }, /* XSUM_XXH3_withSecret_testdata[3299] */ + { 3300, 0x0000000000000000ULL, 0xCCD350CD5CFB6ECBULL }, /* XSUM_XXH3_withSecret_testdata[3300] */ + { 3301, 0x0000000000000000ULL, 0xC5ABBB0329F83D2DULL }, /* XSUM_XXH3_withSecret_testdata[3301] */ + { 3302, 0x0000000000000000ULL, 0xF1F22B9E046FC2B0ULL }, /* XSUM_XXH3_withSecret_testdata[3302] */ + { 3303, 0x0000000000000000ULL, 0x5A21565F187E49B2ULL }, /* XSUM_XXH3_withSecret_testdata[3303] */ + { 3304, 0x0000000000000000ULL, 0xF8864AE64FD2E35EULL }, /* XSUM_XXH3_withSecret_testdata[3304] */ + { 3305, 0x0000000000000000ULL, 0x0E0DF6F5AC512303ULL }, /* XSUM_XXH3_withSecret_testdata[3305] */ + { 3306, 0x0000000000000000ULL, 0x241137A1E90532C2ULL }, /* XSUM_XXH3_withSecret_testdata[3306] */ + { 3307, 0x0000000000000000ULL, 0x69131DBC1BCE80D5ULL }, /* XSUM_XXH3_withSecret_testdata[3307] */ + { 3308, 0x0000000000000000ULL, 0x971AE3846A3E0DD8ULL }, /* XSUM_XXH3_withSecret_testdata[3308] */ + { 3309, 0x0000000000000000ULL, 0xCC26928F2A3914EBULL }, /* XSUM_XXH3_withSecret_testdata[3309] */ + { 3310, 0x0000000000000000ULL, 0x765885B0A2C43AD7ULL }, /* XSUM_XXH3_withSecret_testdata[3310] */ + { 3311, 0x0000000000000000ULL, 0xA0AAF79C407D828FULL }, /* XSUM_XXH3_withSecret_testdata[3311] */ + { 3312, 0x0000000000000000ULL, 0x58AED2BDC5A0501AULL }, /* XSUM_XXH3_withSecret_testdata[3312] */ + { 3313, 0x0000000000000000ULL, 0x75B6E58CF5AEA735ULL }, /* XSUM_XXH3_withSecret_testdata[3313] */ + { 3314, 0x0000000000000000ULL, 0xF5443445D5F02406ULL }, /* XSUM_XXH3_withSecret_testdata[3314] */ + { 3315, 0x0000000000000000ULL, 0xC8AE4A0700F4BB6DULL }, /* XSUM_XXH3_withSecret_testdata[3315] */ + { 3316, 0x0000000000000000ULL, 0xD1A2F329AA5E7186ULL }, /* XSUM_XXH3_withSecret_testdata[3316] */ + { 3317, 0x0000000000000000ULL, 0x8474A93D2E092B76ULL }, /* XSUM_XXH3_withSecret_testdata[3317] */ + { 3318, 0x0000000000000000ULL, 0xEFD2D9C0171BC450ULL }, /* XSUM_XXH3_withSecret_testdata[3318] */ + { 3319, 0x0000000000000000ULL, 0xA8EAAD936EFC9644ULL }, /* XSUM_XXH3_withSecret_testdata[3319] */ + { 3320, 0x0000000000000000ULL, 0x3154F45940979876ULL }, /* XSUM_XXH3_withSecret_testdata[3320] */ + { 3321, 0x0000000000000000ULL, 0x6867827F42D85DA1ULL }, /* XSUM_XXH3_withSecret_testdata[3321] */ + { 3322, 0x0000000000000000ULL, 0x27D35C66A2078647ULL }, /* XSUM_XXH3_withSecret_testdata[3322] */ + { 3323, 0x0000000000000000ULL, 0x1FB48A7BB6C7E866ULL }, /* XSUM_XXH3_withSecret_testdata[3323] */ + { 3324, 0x0000000000000000ULL, 0xACCF0955174A0FB6ULL }, /* XSUM_XXH3_withSecret_testdata[3324] */ + { 3325, 0x0000000000000000ULL, 0xDBBBC8EA97F0AB5CULL }, /* XSUM_XXH3_withSecret_testdata[3325] */ + { 3326, 0x0000000000000000ULL, 0x2E0B6A9C942F0179ULL }, /* XSUM_XXH3_withSecret_testdata[3326] */ + { 3327, 0x0000000000000000ULL, 0xD9024DB1AB2DB04AULL }, /* XSUM_XXH3_withSecret_testdata[3327] */ + { 3328, 0x0000000000000000ULL, 0x22BE7EC41F5881ACULL }, /* XSUM_XXH3_withSecret_testdata[3328] */ + { 3329, 0x0000000000000000ULL, 0x5FDA9CB1BECAE68BULL }, /* XSUM_XXH3_withSecret_testdata[3329] */ + { 3330, 0x0000000000000000ULL, 0xCBC6EA773CF5F46AULL }, /* XSUM_XXH3_withSecret_testdata[3330] */ + { 3331, 0x0000000000000000ULL, 0x3289D61E07B72947ULL }, /* XSUM_XXH3_withSecret_testdata[3331] */ + { 3332, 0x0000000000000000ULL, 0x1DA621CFECD5322AULL }, /* XSUM_XXH3_withSecret_testdata[3332] */ + { 3333, 0x0000000000000000ULL, 0x581102C840775F6EULL }, /* XSUM_XXH3_withSecret_testdata[3333] */ + { 3334, 0x0000000000000000ULL, 0xB7514DC2DCD88519ULL }, /* XSUM_XXH3_withSecret_testdata[3334] */ + { 3335, 0x0000000000000000ULL, 0xD5148C3FFC895731ULL }, /* XSUM_XXH3_withSecret_testdata[3335] */ + { 3336, 0x0000000000000000ULL, 0xDEBCC70AAE8E3F39ULL }, /* XSUM_XXH3_withSecret_testdata[3336] */ + { 3337, 0x0000000000000000ULL, 0xDAFFE55F387D7D0BULL }, /* XSUM_XXH3_withSecret_testdata[3337] */ + { 3338, 0x0000000000000000ULL, 0x4B31BD84C077BFF3ULL }, /* XSUM_XXH3_withSecret_testdata[3338] */ + { 3339, 0x0000000000000000ULL, 0x69C7CFD19DE68375ULL }, /* XSUM_XXH3_withSecret_testdata[3339] */ + { 3340, 0x0000000000000000ULL, 0x8A75EDF821F67D68ULL }, /* XSUM_XXH3_withSecret_testdata[3340] */ + { 3341, 0x0000000000000000ULL, 0x72656CBBF2D41FE6ULL }, /* XSUM_XXH3_withSecret_testdata[3341] */ + { 3342, 0x0000000000000000ULL, 0x01D34BADE4436B21ULL }, /* XSUM_XXH3_withSecret_testdata[3342] */ + { 3343, 0x0000000000000000ULL, 0xE9DFCFC7698F5745ULL }, /* XSUM_XXH3_withSecret_testdata[3343] */ + { 3344, 0x0000000000000000ULL, 0x86F52912C82257BBULL }, /* XSUM_XXH3_withSecret_testdata[3344] */ + { 3345, 0x0000000000000000ULL, 0xDCD247235E0F57F4ULL }, /* XSUM_XXH3_withSecret_testdata[3345] */ + { 3346, 0x0000000000000000ULL, 0x32962431CB54C379ULL }, /* XSUM_XXH3_withSecret_testdata[3346] */ + { 3347, 0x0000000000000000ULL, 0xC6101795110831C5ULL }, /* XSUM_XXH3_withSecret_testdata[3347] */ + { 3348, 0x0000000000000000ULL, 0xFCC02E23C7FE6354ULL }, /* XSUM_XXH3_withSecret_testdata[3348] */ + { 3349, 0x0000000000000000ULL, 0x717E9FB2891FFCF2ULL }, /* XSUM_XXH3_withSecret_testdata[3349] */ + { 3350, 0x0000000000000000ULL, 0x1A11A562F5D6FF4AULL }, /* XSUM_XXH3_withSecret_testdata[3350] */ + { 3351, 0x0000000000000000ULL, 0x20E380F25BF86BCCULL }, /* XSUM_XXH3_withSecret_testdata[3351] */ + { 3352, 0x0000000000000000ULL, 0xE1236EE4B1313B4EULL }, /* XSUM_XXH3_withSecret_testdata[3352] */ + { 3353, 0x0000000000000000ULL, 0xCFC1CB67F77C950FULL }, /* XSUM_XXH3_withSecret_testdata[3353] */ + { 3354, 0x0000000000000000ULL, 0xC44B23226042A290ULL }, /* XSUM_XXH3_withSecret_testdata[3354] */ + { 3355, 0x0000000000000000ULL, 0x8EB724FDC15B92B9ULL }, /* XSUM_XXH3_withSecret_testdata[3355] */ + { 3356, 0x0000000000000000ULL, 0xC3FB53E431E565D4ULL }, /* XSUM_XXH3_withSecret_testdata[3356] */ + { 3357, 0x0000000000000000ULL, 0x2AAA176CF7123037ULL }, /* XSUM_XXH3_withSecret_testdata[3357] */ + { 3358, 0x0000000000000000ULL, 0x9777A22355C740F0ULL }, /* XSUM_XXH3_withSecret_testdata[3358] */ + { 3359, 0x0000000000000000ULL, 0xF1D1D1E98F215748ULL }, /* XSUM_XXH3_withSecret_testdata[3359] */ + { 3360, 0x0000000000000000ULL, 0x37F269BD32EB4DF6ULL }, /* XSUM_XXH3_withSecret_testdata[3360] */ + { 3361, 0x0000000000000000ULL, 0xC2948418FA69D5B0ULL }, /* XSUM_XXH3_withSecret_testdata[3361] */ + { 3362, 0x0000000000000000ULL, 0xCDB58B11E43CE594ULL }, /* XSUM_XXH3_withSecret_testdata[3362] */ + { 3363, 0x0000000000000000ULL, 0x7386CD87F857E8FFULL }, /* XSUM_XXH3_withSecret_testdata[3363] */ + { 3364, 0x0000000000000000ULL, 0xCB908BBE4BF4115AULL }, /* XSUM_XXH3_withSecret_testdata[3364] */ + { 3365, 0x0000000000000000ULL, 0xBC04E85A82136D9DULL }, /* XSUM_XXH3_withSecret_testdata[3365] */ + { 3366, 0x0000000000000000ULL, 0xA074DFB34D9C8159ULL }, /* XSUM_XXH3_withSecret_testdata[3366] */ + { 3367, 0x0000000000000000ULL, 0xE104838A3794A121ULL }, /* XSUM_XXH3_withSecret_testdata[3367] */ + { 3368, 0x0000000000000000ULL, 0x8D9535A0589E87DEULL }, /* XSUM_XXH3_withSecret_testdata[3368] */ + { 3369, 0x0000000000000000ULL, 0x8C7E2E952E9582E1ULL }, /* XSUM_XXH3_withSecret_testdata[3369] */ + { 3370, 0x0000000000000000ULL, 0x36429AC325D34750ULL }, /* XSUM_XXH3_withSecret_testdata[3370] */ + { 3371, 0x0000000000000000ULL, 0x337C994A4E29F517ULL }, /* XSUM_XXH3_withSecret_testdata[3371] */ + { 3372, 0x0000000000000000ULL, 0x27A7DAF417F30136ULL }, /* XSUM_XXH3_withSecret_testdata[3372] */ + { 3373, 0x0000000000000000ULL, 0x2BAFE1E23A552CC2ULL }, /* XSUM_XXH3_withSecret_testdata[3373] */ + { 3374, 0x0000000000000000ULL, 0x24111ED11860681BULL }, /* XSUM_XXH3_withSecret_testdata[3374] */ + { 3375, 0x0000000000000000ULL, 0xFF3E50967E0B68C5ULL }, /* XSUM_XXH3_withSecret_testdata[3375] */ + { 3376, 0x0000000000000000ULL, 0x5F77AD45130555B9ULL }, /* XSUM_XXH3_withSecret_testdata[3376] */ + { 3377, 0x0000000000000000ULL, 0x91EBB464DF8A0BB2ULL }, /* XSUM_XXH3_withSecret_testdata[3377] */ + { 3378, 0x0000000000000000ULL, 0xE3F92F8355BC4A2BULL }, /* XSUM_XXH3_withSecret_testdata[3378] */ + { 3379, 0x0000000000000000ULL, 0xB26A54C0DB52120FULL }, /* XSUM_XXH3_withSecret_testdata[3379] */ + { 3380, 0x0000000000000000ULL, 0x236F061D731241E9ULL }, /* XSUM_XXH3_withSecret_testdata[3380] */ + { 3381, 0x0000000000000000ULL, 0x80951F0AAF6F69F3ULL }, /* XSUM_XXH3_withSecret_testdata[3381] */ + { 3382, 0x0000000000000000ULL, 0x8D4E6C9A4B81E8CEULL }, /* XSUM_XXH3_withSecret_testdata[3382] */ + { 3383, 0x0000000000000000ULL, 0xDCF18FC251E124B4ULL }, /* XSUM_XXH3_withSecret_testdata[3383] */ + { 3384, 0x0000000000000000ULL, 0x0BAFB9DF872E349AULL }, /* XSUM_XXH3_withSecret_testdata[3384] */ + { 3385, 0x0000000000000000ULL, 0x991EBBFC2C40A6DDULL }, /* XSUM_XXH3_withSecret_testdata[3385] */ + { 3386, 0x0000000000000000ULL, 0x3DEF4AAE67B96ECDULL }, /* XSUM_XXH3_withSecret_testdata[3386] */ + { 3387, 0x0000000000000000ULL, 0x6845EC17968F7B7AULL }, /* XSUM_XXH3_withSecret_testdata[3387] */ + { 3388, 0x0000000000000000ULL, 0x05849C1F2D68ECC0ULL }, /* XSUM_XXH3_withSecret_testdata[3388] */ + { 3389, 0x0000000000000000ULL, 0x3DB3176DC226A032ULL }, /* XSUM_XXH3_withSecret_testdata[3389] */ + { 3390, 0x0000000000000000ULL, 0xC81C6F3080B6E009ULL }, /* XSUM_XXH3_withSecret_testdata[3390] */ + { 3391, 0x0000000000000000ULL, 0x42E42EB70B7207D1ULL }, /* XSUM_XXH3_withSecret_testdata[3391] */ + { 3392, 0x0000000000000000ULL, 0x82FA4358B988550DULL }, /* XSUM_XXH3_withSecret_testdata[3392] */ + { 3393, 0x0000000000000000ULL, 0x093C69D9241951C5ULL }, /* XSUM_XXH3_withSecret_testdata[3393] */ + { 3394, 0x0000000000000000ULL, 0xB9782191AD905FA7ULL }, /* XSUM_XXH3_withSecret_testdata[3394] */ + { 3395, 0x0000000000000000ULL, 0x5ACD4F5C19F7D7A8ULL }, /* XSUM_XXH3_withSecret_testdata[3395] */ + { 3396, 0x0000000000000000ULL, 0xD78563937BE06A6CULL }, /* XSUM_XXH3_withSecret_testdata[3396] */ + { 3397, 0x0000000000000000ULL, 0x7B583784D1ABF630ULL }, /* XSUM_XXH3_withSecret_testdata[3397] */ + { 3398, 0x0000000000000000ULL, 0x34A3E1EDB4806DE4ULL }, /* XSUM_XXH3_withSecret_testdata[3398] */ + { 3399, 0x0000000000000000ULL, 0x258BAD758E0FAC7CULL }, /* XSUM_XXH3_withSecret_testdata[3399] */ + { 3400, 0x0000000000000000ULL, 0x79BA922E496E37A4ULL }, /* XSUM_XXH3_withSecret_testdata[3400] */ + { 3401, 0x0000000000000000ULL, 0xD2C6D271ED08F4FBULL }, /* XSUM_XXH3_withSecret_testdata[3401] */ + { 3402, 0x0000000000000000ULL, 0x777E2F00B8C6C6B1ULL }, /* XSUM_XXH3_withSecret_testdata[3402] */ + { 3403, 0x0000000000000000ULL, 0xA33A36F54892C4C2ULL }, /* XSUM_XXH3_withSecret_testdata[3403] */ + { 3404, 0x0000000000000000ULL, 0x83D54CC50F2B4C82ULL }, /* XSUM_XXH3_withSecret_testdata[3404] */ + { 3405, 0x0000000000000000ULL, 0xB86A5DEAFA888777ULL }, /* XSUM_XXH3_withSecret_testdata[3405] */ + { 3406, 0x0000000000000000ULL, 0x93394DCB88F3233CULL }, /* XSUM_XXH3_withSecret_testdata[3406] */ + { 3407, 0x0000000000000000ULL, 0xAB29CE5CD9E87492ULL }, /* XSUM_XXH3_withSecret_testdata[3407] */ + { 3408, 0x0000000000000000ULL, 0xD24C131AA2728CDFULL }, /* XSUM_XXH3_withSecret_testdata[3408] */ + { 3409, 0x0000000000000000ULL, 0xEC1AA50643F6BEB4ULL }, /* XSUM_XXH3_withSecret_testdata[3409] */ + { 3410, 0x0000000000000000ULL, 0xDC8CC90497C3070AULL }, /* XSUM_XXH3_withSecret_testdata[3410] */ + { 3411, 0x0000000000000000ULL, 0xCDF848036CC2D584ULL }, /* XSUM_XXH3_withSecret_testdata[3411] */ + { 3412, 0x0000000000000000ULL, 0xF5FF7497697376B5ULL }, /* XSUM_XXH3_withSecret_testdata[3412] */ + { 3413, 0x0000000000000000ULL, 0x61AEB2965FC007F9ULL }, /* XSUM_XXH3_withSecret_testdata[3413] */ + { 3414, 0x0000000000000000ULL, 0xC8331389EE21A290ULL }, /* XSUM_XXH3_withSecret_testdata[3414] */ + { 3415, 0x0000000000000000ULL, 0xD25ACAD6E45BEC7EULL }, /* XSUM_XXH3_withSecret_testdata[3415] */ + { 3416, 0x0000000000000000ULL, 0x9C79AD9A2989B5B0ULL }, /* XSUM_XXH3_withSecret_testdata[3416] */ + { 3417, 0x0000000000000000ULL, 0x7B7A9186400259C3ULL }, /* XSUM_XXH3_withSecret_testdata[3417] */ + { 3418, 0x0000000000000000ULL, 0xC090B82039D98D66ULL }, /* XSUM_XXH3_withSecret_testdata[3418] */ + { 3419, 0x0000000000000000ULL, 0x1616EFC6B06CE942ULL }, /* XSUM_XXH3_withSecret_testdata[3419] */ + { 3420, 0x0000000000000000ULL, 0x536959E69DDBDA4DULL }, /* XSUM_XXH3_withSecret_testdata[3420] */ + { 3421, 0x0000000000000000ULL, 0x308BC74EAD14A59EULL }, /* XSUM_XXH3_withSecret_testdata[3421] */ + { 3422, 0x0000000000000000ULL, 0xE9E96C5C85C6E33DULL }, /* XSUM_XXH3_withSecret_testdata[3422] */ + { 3423, 0x0000000000000000ULL, 0x97B51867A23476C7ULL }, /* XSUM_XXH3_withSecret_testdata[3423] */ + { 3424, 0x0000000000000000ULL, 0xDBA270BBD09D0382ULL }, /* XSUM_XXH3_withSecret_testdata[3424] */ + { 3425, 0x0000000000000000ULL, 0x2B3A9E8D9890E5EDULL }, /* XSUM_XXH3_withSecret_testdata[3425] */ + { 3426, 0x0000000000000000ULL, 0xB8AEDCB04D901184ULL }, /* XSUM_XXH3_withSecret_testdata[3426] */ + { 3427, 0x0000000000000000ULL, 0x72973E93DD568423ULL }, /* XSUM_XXH3_withSecret_testdata[3427] */ + { 3428, 0x0000000000000000ULL, 0x8642362E361F385BULL }, /* XSUM_XXH3_withSecret_testdata[3428] */ + { 3429, 0x0000000000000000ULL, 0xEA93D41FC4BE6EF3ULL }, /* XSUM_XXH3_withSecret_testdata[3429] */ + { 3430, 0x0000000000000000ULL, 0x53A9D7804532B024ULL }, /* XSUM_XXH3_withSecret_testdata[3430] */ + { 3431, 0x0000000000000000ULL, 0x0D6669392B360D1AULL }, /* XSUM_XXH3_withSecret_testdata[3431] */ + { 3432, 0x0000000000000000ULL, 0xD61A6DDFF9192A4AULL }, /* XSUM_XXH3_withSecret_testdata[3432] */ + { 3433, 0x0000000000000000ULL, 0x258EF23516BA0AD6ULL }, /* XSUM_XXH3_withSecret_testdata[3433] */ + { 3434, 0x0000000000000000ULL, 0x1D8F02DB1F6D895AULL }, /* XSUM_XXH3_withSecret_testdata[3434] */ + { 3435, 0x0000000000000000ULL, 0x1731E194D0768893ULL }, /* XSUM_XXH3_withSecret_testdata[3435] */ + { 3436, 0x0000000000000000ULL, 0xD5535C6A2B10C987ULL }, /* XSUM_XXH3_withSecret_testdata[3436] */ + { 3437, 0x0000000000000000ULL, 0x283020A907CF151AULL }, /* XSUM_XXH3_withSecret_testdata[3437] */ + { 3438, 0x0000000000000000ULL, 0xF70ACA1841EE13BEULL }, /* XSUM_XXH3_withSecret_testdata[3438] */ + { 3439, 0x0000000000000000ULL, 0x4293F1911E7B457FULL }, /* XSUM_XXH3_withSecret_testdata[3439] */ + { 3440, 0x0000000000000000ULL, 0xFFF9BF31E101EBF5ULL }, /* XSUM_XXH3_withSecret_testdata[3440] */ + { 3441, 0x0000000000000000ULL, 0xFA3ACD1C15F4A837ULL }, /* XSUM_XXH3_withSecret_testdata[3441] */ + { 3442, 0x0000000000000000ULL, 0x94CFFAD4CA5A5B35ULL }, /* XSUM_XXH3_withSecret_testdata[3442] */ + { 3443, 0x0000000000000000ULL, 0xEFAC9A8E9C224383ULL }, /* XSUM_XXH3_withSecret_testdata[3443] */ + { 3444, 0x0000000000000000ULL, 0x55F6012D99ADCC77ULL }, /* XSUM_XXH3_withSecret_testdata[3444] */ + { 3445, 0x0000000000000000ULL, 0xF9D085CD6FD41AC1ULL }, /* XSUM_XXH3_withSecret_testdata[3445] */ + { 3446, 0x0000000000000000ULL, 0x75EAF0D20198628BULL }, /* XSUM_XXH3_withSecret_testdata[3446] */ + { 3447, 0x0000000000000000ULL, 0xC989C6AD9C5AF1E3ULL }, /* XSUM_XXH3_withSecret_testdata[3447] */ + { 3448, 0x0000000000000000ULL, 0x684DF3EBFD7F9B21ULL }, /* XSUM_XXH3_withSecret_testdata[3448] */ + { 3449, 0x0000000000000000ULL, 0x3EC4EEDFC8418706ULL }, /* XSUM_XXH3_withSecret_testdata[3449] */ + { 3450, 0x0000000000000000ULL, 0x3C7F7AA726BFFCD3ULL }, /* XSUM_XXH3_withSecret_testdata[3450] */ + { 3451, 0x0000000000000000ULL, 0x9F4A22AD503F31CCULL }, /* XSUM_XXH3_withSecret_testdata[3451] */ + { 3452, 0x0000000000000000ULL, 0x5544A4478AB92340ULL }, /* XSUM_XXH3_withSecret_testdata[3452] */ + { 3453, 0x0000000000000000ULL, 0x7913996FC7843BD6ULL }, /* XSUM_XXH3_withSecret_testdata[3453] */ + { 3454, 0x0000000000000000ULL, 0x668F78CFD1C07BD1ULL }, /* XSUM_XXH3_withSecret_testdata[3454] */ + { 3455, 0x0000000000000000ULL, 0xDC83E3831178BA1BULL }, /* XSUM_XXH3_withSecret_testdata[3455] */ + { 3456, 0x0000000000000000ULL, 0xBD3FC86BB5AC2B3CULL }, /* XSUM_XXH3_withSecret_testdata[3456] */ + { 3457, 0x0000000000000000ULL, 0xB5D6A0E431E5326FULL }, /* XSUM_XXH3_withSecret_testdata[3457] */ + { 3458, 0x0000000000000000ULL, 0x3F96397D0AEE13FAULL }, /* XSUM_XXH3_withSecret_testdata[3458] */ + { 3459, 0x0000000000000000ULL, 0xA057BB7D8FFBE4EFULL }, /* XSUM_XXH3_withSecret_testdata[3459] */ + { 3460, 0x0000000000000000ULL, 0x0B5B3120716A277DULL }, /* XSUM_XXH3_withSecret_testdata[3460] */ + { 3461, 0x0000000000000000ULL, 0x3ADD2BAED9FBB522ULL }, /* XSUM_XXH3_withSecret_testdata[3461] */ + { 3462, 0x0000000000000000ULL, 0x9F5D67039AA7B20AULL }, /* XSUM_XXH3_withSecret_testdata[3462] */ + { 3463, 0x0000000000000000ULL, 0xED541A1A74A8E0D6ULL }, /* XSUM_XXH3_withSecret_testdata[3463] */ + { 3464, 0x0000000000000000ULL, 0x21A1B9C81F31BD56ULL }, /* XSUM_XXH3_withSecret_testdata[3464] */ + { 3465, 0x0000000000000000ULL, 0x2AB63DF73A5FD82BULL }, /* XSUM_XXH3_withSecret_testdata[3465] */ + { 3466, 0x0000000000000000ULL, 0xA13D48E366FE694FULL }, /* XSUM_XXH3_withSecret_testdata[3466] */ + { 3467, 0x0000000000000000ULL, 0xCBC1A8BC9E23A2C8ULL }, /* XSUM_XXH3_withSecret_testdata[3467] */ + { 3468, 0x0000000000000000ULL, 0xBE271DEE6955B1F8ULL }, /* XSUM_XXH3_withSecret_testdata[3468] */ + { 3469, 0x0000000000000000ULL, 0xA4AC7A4DD33CB54EULL }, /* XSUM_XXH3_withSecret_testdata[3469] */ + { 3470, 0x0000000000000000ULL, 0x7A33C76C43E97C63ULL }, /* XSUM_XXH3_withSecret_testdata[3470] */ + { 3471, 0x0000000000000000ULL, 0x36098BE82B1D6630ULL }, /* XSUM_XXH3_withSecret_testdata[3471] */ + { 3472, 0x0000000000000000ULL, 0x7F361C40279A7156ULL }, /* XSUM_XXH3_withSecret_testdata[3472] */ + { 3473, 0x0000000000000000ULL, 0x2CC810852E1BB733ULL }, /* XSUM_XXH3_withSecret_testdata[3473] */ + { 3474, 0x0000000000000000ULL, 0xC0CA765A630B30ADULL }, /* XSUM_XXH3_withSecret_testdata[3474] */ + { 3475, 0x0000000000000000ULL, 0x1B97DC802A05F93EULL }, /* XSUM_XXH3_withSecret_testdata[3475] */ + { 3476, 0x0000000000000000ULL, 0x9BE7B4728943211FULL }, /* XSUM_XXH3_withSecret_testdata[3476] */ + { 3477, 0x0000000000000000ULL, 0x46024E5F8747440EULL }, /* XSUM_XXH3_withSecret_testdata[3477] */ + { 3478, 0x0000000000000000ULL, 0x3611EB1A2CA4FE01ULL }, /* XSUM_XXH3_withSecret_testdata[3478] */ + { 3479, 0x0000000000000000ULL, 0x3D5E5E1369724D8FULL }, /* XSUM_XXH3_withSecret_testdata[3479] */ + { 3480, 0x0000000000000000ULL, 0x3777657FE0E2103AULL }, /* XSUM_XXH3_withSecret_testdata[3480] */ + { 3481, 0x0000000000000000ULL, 0x1182DAAB985250A5ULL }, /* XSUM_XXH3_withSecret_testdata[3481] */ + { 3482, 0x0000000000000000ULL, 0x9D72547E8773AA1FULL }, /* XSUM_XXH3_withSecret_testdata[3482] */ + { 3483, 0x0000000000000000ULL, 0x022316F49083EEA8ULL }, /* XSUM_XXH3_withSecret_testdata[3483] */ + { 3484, 0x0000000000000000ULL, 0xF4DD6BCAC532838CULL }, /* XSUM_XXH3_withSecret_testdata[3484] */ + { 3485, 0x0000000000000000ULL, 0x0C1A9A078ADB82E6ULL }, /* XSUM_XXH3_withSecret_testdata[3485] */ + { 3486, 0x0000000000000000ULL, 0xD063A1BE391CB91EULL }, /* XSUM_XXH3_withSecret_testdata[3486] */ + { 3487, 0x0000000000000000ULL, 0x680EA488740E19F5ULL }, /* XSUM_XXH3_withSecret_testdata[3487] */ + { 3488, 0x0000000000000000ULL, 0xBE9D44B1C25FF51DULL }, /* XSUM_XXH3_withSecret_testdata[3488] */ + { 3489, 0x0000000000000000ULL, 0xC522140D7EB13068ULL }, /* XSUM_XXH3_withSecret_testdata[3489] */ + { 3490, 0x0000000000000000ULL, 0x87D5F5143378E63AULL }, /* XSUM_XXH3_withSecret_testdata[3490] */ + { 3491, 0x0000000000000000ULL, 0x2B5526EA89A862E9ULL }, /* XSUM_XXH3_withSecret_testdata[3491] */ + { 3492, 0x0000000000000000ULL, 0xB0E4F51AE9532152ULL }, /* XSUM_XXH3_withSecret_testdata[3492] */ + { 3493, 0x0000000000000000ULL, 0xF517E37DF40186A6ULL }, /* XSUM_XXH3_withSecret_testdata[3493] */ + { 3494, 0x0000000000000000ULL, 0x9471C5B58399F14EULL }, /* XSUM_XXH3_withSecret_testdata[3494] */ + { 3495, 0x0000000000000000ULL, 0x367DC8C13EA45D49ULL }, /* XSUM_XXH3_withSecret_testdata[3495] */ + { 3496, 0x0000000000000000ULL, 0xFA63C29BD3E79A0BULL }, /* XSUM_XXH3_withSecret_testdata[3496] */ + { 3497, 0x0000000000000000ULL, 0xF0D40F8AF56875DCULL }, /* XSUM_XXH3_withSecret_testdata[3497] */ + { 3498, 0x0000000000000000ULL, 0x218260B595F251EDULL }, /* XSUM_XXH3_withSecret_testdata[3498] */ + { 3499, 0x0000000000000000ULL, 0x5CD2D64184919EE1ULL }, /* XSUM_XXH3_withSecret_testdata[3499] */ + { 3500, 0x0000000000000000ULL, 0xA8D6FFA8E88CAAC1ULL }, /* XSUM_XXH3_withSecret_testdata[3500] */ + { 3501, 0x0000000000000000ULL, 0x00559483FB681A14ULL }, /* XSUM_XXH3_withSecret_testdata[3501] */ + { 3502, 0x0000000000000000ULL, 0x7BB6A0499D828F3AULL }, /* XSUM_XXH3_withSecret_testdata[3502] */ + { 3503, 0x0000000000000000ULL, 0xF54E38E392CDC9FFULL }, /* XSUM_XXH3_withSecret_testdata[3503] */ + { 3504, 0x0000000000000000ULL, 0x68C8BED722F70F29ULL }, /* XSUM_XXH3_withSecret_testdata[3504] */ + { 3505, 0x0000000000000000ULL, 0x8FAA3D530B78038BULL }, /* XSUM_XXH3_withSecret_testdata[3505] */ + { 3506, 0x0000000000000000ULL, 0x7217EA896318D81BULL }, /* XSUM_XXH3_withSecret_testdata[3506] */ + { 3507, 0x0000000000000000ULL, 0xD3329B5DB272AD1CULL }, /* XSUM_XXH3_withSecret_testdata[3507] */ + { 3508, 0x0000000000000000ULL, 0x3F178629EAAA53E2ULL }, /* XSUM_XXH3_withSecret_testdata[3508] */ + { 3509, 0x0000000000000000ULL, 0x0E880000C319A233ULL }, /* XSUM_XXH3_withSecret_testdata[3509] */ + { 3510, 0x0000000000000000ULL, 0x5131CD8B7A9DA841ULL }, /* XSUM_XXH3_withSecret_testdata[3510] */ + { 3511, 0x0000000000000000ULL, 0x116E9A3F1B0EAD60ULL }, /* XSUM_XXH3_withSecret_testdata[3511] */ + { 3512, 0x0000000000000000ULL, 0x4D877B440F8C9E21ULL }, /* XSUM_XXH3_withSecret_testdata[3512] */ + { 3513, 0x0000000000000000ULL, 0xB5A3F7DC5DB9B323ULL }, /* XSUM_XXH3_withSecret_testdata[3513] */ + { 3514, 0x0000000000000000ULL, 0x7E57BB5FEA85F44BULL }, /* XSUM_XXH3_withSecret_testdata[3514] */ + { 3515, 0x0000000000000000ULL, 0x7F5959414C7047A7ULL }, /* XSUM_XXH3_withSecret_testdata[3515] */ + { 3516, 0x0000000000000000ULL, 0xA3080EE0954618B4ULL }, /* XSUM_XXH3_withSecret_testdata[3516] */ + { 3517, 0x0000000000000000ULL, 0xFC144E068075D4A0ULL }, /* XSUM_XXH3_withSecret_testdata[3517] */ + { 3518, 0x0000000000000000ULL, 0xBC4CFDDC25674520ULL }, /* XSUM_XXH3_withSecret_testdata[3518] */ + { 3519, 0x0000000000000000ULL, 0x86484327D89DAF41ULL }, /* XSUM_XXH3_withSecret_testdata[3519] */ + { 3520, 0x0000000000000000ULL, 0x68A2F0773F075633ULL }, /* XSUM_XXH3_withSecret_testdata[3520] */ + { 3521, 0x0000000000000000ULL, 0xB69CC64FAADBB820ULL }, /* XSUM_XXH3_withSecret_testdata[3521] */ + { 3522, 0x0000000000000000ULL, 0x492B501DEAEF4FF0ULL }, /* XSUM_XXH3_withSecret_testdata[3522] */ + { 3523, 0x0000000000000000ULL, 0xC88BD6340BE8014DULL }, /* XSUM_XXH3_withSecret_testdata[3523] */ + { 3524, 0x0000000000000000ULL, 0x942BE9E21E2A4D63ULL }, /* XSUM_XXH3_withSecret_testdata[3524] */ + { 3525, 0x0000000000000000ULL, 0xF473FAD358FE75F8ULL }, /* XSUM_XXH3_withSecret_testdata[3525] */ + { 3526, 0x0000000000000000ULL, 0x7BC0BAC88A27AEF6ULL }, /* XSUM_XXH3_withSecret_testdata[3526] */ + { 3527, 0x0000000000000000ULL, 0x7649FD5EF3277B3BULL }, /* XSUM_XXH3_withSecret_testdata[3527] */ + { 3528, 0x0000000000000000ULL, 0x145AB1F42B600E7FULL }, /* XSUM_XXH3_withSecret_testdata[3528] */ + { 3529, 0x0000000000000000ULL, 0x563CEE44F6371D4EULL }, /* XSUM_XXH3_withSecret_testdata[3529] */ + { 3530, 0x0000000000000000ULL, 0x4ABD41196F8910F4ULL }, /* XSUM_XXH3_withSecret_testdata[3530] */ + { 3531, 0x0000000000000000ULL, 0xA407B860E9317657ULL }, /* XSUM_XXH3_withSecret_testdata[3531] */ + { 3532, 0x0000000000000000ULL, 0x26EAA7780E207FBFULL }, /* XSUM_XXH3_withSecret_testdata[3532] */ + { 3533, 0x0000000000000000ULL, 0xD7FFE10A171EDB54ULL }, /* XSUM_XXH3_withSecret_testdata[3533] */ + { 3534, 0x0000000000000000ULL, 0x3A92D578E1BDA03DULL }, /* XSUM_XXH3_withSecret_testdata[3534] */ + { 3535, 0x0000000000000000ULL, 0x0199237099517BEBULL }, /* XSUM_XXH3_withSecret_testdata[3535] */ + { 3536, 0x0000000000000000ULL, 0xFBEE7D5E392C26D4ULL }, /* XSUM_XXH3_withSecret_testdata[3536] */ + { 3537, 0x0000000000000000ULL, 0xBDFD0088D497ED2FULL }, /* XSUM_XXH3_withSecret_testdata[3537] */ + { 3538, 0x0000000000000000ULL, 0x913ADB607F7346BAULL }, /* XSUM_XXH3_withSecret_testdata[3538] */ + { 3539, 0x0000000000000000ULL, 0xAB338CEBDA365578ULL }, /* XSUM_XXH3_withSecret_testdata[3539] */ + { 3540, 0x0000000000000000ULL, 0xC69DB27CB9AF675EULL }, /* XSUM_XXH3_withSecret_testdata[3540] */ + { 3541, 0x0000000000000000ULL, 0xE2FBEAF26A98C333ULL }, /* XSUM_XXH3_withSecret_testdata[3541] */ + { 3542, 0x0000000000000000ULL, 0x5CB786875FD33694ULL }, /* XSUM_XXH3_withSecret_testdata[3542] */ + { 3543, 0x0000000000000000ULL, 0x093F890C691390C5ULL }, /* XSUM_XXH3_withSecret_testdata[3543] */ + { 3544, 0x0000000000000000ULL, 0x779F918D25F304D2ULL }, /* XSUM_XXH3_withSecret_testdata[3544] */ + { 3545, 0x0000000000000000ULL, 0xD1CCD84274C2157FULL }, /* XSUM_XXH3_withSecret_testdata[3545] */ + { 3546, 0x0000000000000000ULL, 0xE503ADE933E1EBA7ULL }, /* XSUM_XXH3_withSecret_testdata[3546] */ + { 3547, 0x0000000000000000ULL, 0x31D46CEB10F92FACULL }, /* XSUM_XXH3_withSecret_testdata[3547] */ + { 3548, 0x0000000000000000ULL, 0x955A378CF5ACAB28ULL }, /* XSUM_XXH3_withSecret_testdata[3548] */ + { 3549, 0x0000000000000000ULL, 0x67FB9B45D80BF422ULL }, /* XSUM_XXH3_withSecret_testdata[3549] */ + { 3550, 0x0000000000000000ULL, 0x48913A9057BB25BBULL }, /* XSUM_XXH3_withSecret_testdata[3550] */ + { 3551, 0x0000000000000000ULL, 0x2A9236D869059A44ULL }, /* XSUM_XXH3_withSecret_testdata[3551] */ + { 3552, 0x0000000000000000ULL, 0x3F5EECA3B0516EB9ULL }, /* XSUM_XXH3_withSecret_testdata[3552] */ + { 3553, 0x0000000000000000ULL, 0xD334174F750CF9AFULL }, /* XSUM_XXH3_withSecret_testdata[3553] */ + { 3554, 0x0000000000000000ULL, 0x591884D8EC794875ULL }, /* XSUM_XXH3_withSecret_testdata[3554] */ + { 3555, 0x0000000000000000ULL, 0x0FFC2DF8CE4AB956ULL }, /* XSUM_XXH3_withSecret_testdata[3555] */ + { 3556, 0x0000000000000000ULL, 0xE1405F0654D54E5AULL }, /* XSUM_XXH3_withSecret_testdata[3556] */ + { 3557, 0x0000000000000000ULL, 0x82FEDEB47FDDA9D7ULL }, /* XSUM_XXH3_withSecret_testdata[3557] */ + { 3558, 0x0000000000000000ULL, 0xF5AC976F29F525EBULL }, /* XSUM_XXH3_withSecret_testdata[3558] */ + { 3559, 0x0000000000000000ULL, 0x5E084976A1D92262ULL }, /* XSUM_XXH3_withSecret_testdata[3559] */ + { 3560, 0x0000000000000000ULL, 0xDEDBFD6CB3BAD25BULL }, /* XSUM_XXH3_withSecret_testdata[3560] */ + { 3561, 0x0000000000000000ULL, 0x4065E1690CA6B2D3ULL }, /* XSUM_XXH3_withSecret_testdata[3561] */ + { 3562, 0x0000000000000000ULL, 0x4005ADBD239EAC3BULL }, /* XSUM_XXH3_withSecret_testdata[3562] */ + { 3563, 0x0000000000000000ULL, 0x904933B2B60879C5ULL }, /* XSUM_XXH3_withSecret_testdata[3563] */ + { 3564, 0x0000000000000000ULL, 0xAE8A4B93560A3CBAULL }, /* XSUM_XXH3_withSecret_testdata[3564] */ + { 3565, 0x0000000000000000ULL, 0x85F5586B522C8B75ULL }, /* XSUM_XXH3_withSecret_testdata[3565] */ + { 3566, 0x0000000000000000ULL, 0xB8626D8B20C2B1D8ULL }, /* XSUM_XXH3_withSecret_testdata[3566] */ + { 3567, 0x0000000000000000ULL, 0x8BAE6D7ED0145D71ULL }, /* XSUM_XXH3_withSecret_testdata[3567] */ + { 3568, 0x0000000000000000ULL, 0xCE2A3966C6EAB263ULL }, /* XSUM_XXH3_withSecret_testdata[3568] */ + { 3569, 0x0000000000000000ULL, 0xC187A11B99654153ULL }, /* XSUM_XXH3_withSecret_testdata[3569] */ + { 3570, 0x0000000000000000ULL, 0x7576A3857F02863BULL }, /* XSUM_XXH3_withSecret_testdata[3570] */ + { 3571, 0x0000000000000000ULL, 0x7CE79F2F32812262ULL }, /* XSUM_XXH3_withSecret_testdata[3571] */ + { 3572, 0x0000000000000000ULL, 0x0566340B25C7698CULL }, /* XSUM_XXH3_withSecret_testdata[3572] */ + { 3573, 0x0000000000000000ULL, 0xCBB7CDE1F4A2629CULL }, /* XSUM_XXH3_withSecret_testdata[3573] */ + { 3574, 0x0000000000000000ULL, 0x54A31560323CF6A8ULL }, /* XSUM_XXH3_withSecret_testdata[3574] */ + { 3575, 0x0000000000000000ULL, 0x8B3C00FF37CFDC35ULL }, /* XSUM_XXH3_withSecret_testdata[3575] */ + { 3576, 0x0000000000000000ULL, 0x6CBF4B6F2F663076ULL }, /* XSUM_XXH3_withSecret_testdata[3576] */ + { 3577, 0x0000000000000000ULL, 0x744D2DEF804E02F6ULL }, /* XSUM_XXH3_withSecret_testdata[3577] */ + { 3578, 0x0000000000000000ULL, 0xDBA8658D39D669E9ULL }, /* XSUM_XXH3_withSecret_testdata[3578] */ + { 3579, 0x0000000000000000ULL, 0x9D6021A58F675AA8ULL }, /* XSUM_XXH3_withSecret_testdata[3579] */ + { 3580, 0x0000000000000000ULL, 0xE5B1DDE4DD40BD1CULL }, /* XSUM_XXH3_withSecret_testdata[3580] */ + { 3581, 0x0000000000000000ULL, 0x7E7919DD1258900DULL }, /* XSUM_XXH3_withSecret_testdata[3581] */ + { 3582, 0x0000000000000000ULL, 0xCC13F7C38D17C331ULL }, /* XSUM_XXH3_withSecret_testdata[3582] */ + { 3583, 0x0000000000000000ULL, 0xFA22827AF6C4BF5BULL }, /* XSUM_XXH3_withSecret_testdata[3583] */ + { 3584, 0x0000000000000000ULL, 0x67FD740F19C06775ULL }, /* XSUM_XXH3_withSecret_testdata[3584] */ + { 3585, 0x0000000000000000ULL, 0x2D56EA589DE0B5ADULL }, /* XSUM_XXH3_withSecret_testdata[3585] */ + { 3586, 0x0000000000000000ULL, 0x83578517FB5732D3ULL }, /* XSUM_XXH3_withSecret_testdata[3586] */ + { 3587, 0x0000000000000000ULL, 0x583F8A960F22B1D2ULL }, /* XSUM_XXH3_withSecret_testdata[3587] */ + { 3588, 0x0000000000000000ULL, 0x29C57FE0F226E9C9ULL }, /* XSUM_XXH3_withSecret_testdata[3588] */ + { 3589, 0x0000000000000000ULL, 0xD596D4108C1343A8ULL }, /* XSUM_XXH3_withSecret_testdata[3589] */ + { 3590, 0x0000000000000000ULL, 0x33F576E3671AE132ULL }, /* XSUM_XXH3_withSecret_testdata[3590] */ + { 3591, 0x0000000000000000ULL, 0x8685990709433B50ULL }, /* XSUM_XXH3_withSecret_testdata[3591] */ + { 3592, 0x0000000000000000ULL, 0xD0BE36496EBDD162ULL }, /* XSUM_XXH3_withSecret_testdata[3592] */ + { 3593, 0x0000000000000000ULL, 0x89CA224F64403215ULL }, /* XSUM_XXH3_withSecret_testdata[3593] */ + { 3594, 0x0000000000000000ULL, 0x3FE5569B45626A3EULL }, /* XSUM_XXH3_withSecret_testdata[3594] */ + { 3595, 0x0000000000000000ULL, 0x3C2BFDE5F55EEFBFULL }, /* XSUM_XXH3_withSecret_testdata[3595] */ + { 3596, 0x0000000000000000ULL, 0x7A5608B2040F9B98ULL }, /* XSUM_XXH3_withSecret_testdata[3596] */ + { 3597, 0x0000000000000000ULL, 0xAE3B0A88BD95C013ULL }, /* XSUM_XXH3_withSecret_testdata[3597] */ + { 3598, 0x0000000000000000ULL, 0xEDDBEF70B16F362FULL }, /* XSUM_XXH3_withSecret_testdata[3598] */ + { 3599, 0x0000000000000000ULL, 0xD66C5A019D495089ULL }, /* XSUM_XXH3_withSecret_testdata[3599] */ + { 3600, 0x0000000000000000ULL, 0x12ECA429B130C61AULL }, /* XSUM_XXH3_withSecret_testdata[3600] */ + { 3601, 0x0000000000000000ULL, 0xDD9D353BA9000578ULL }, /* XSUM_XXH3_withSecret_testdata[3601] */ + { 3602, 0x0000000000000000ULL, 0x5825919EE11D0B9AULL }, /* XSUM_XXH3_withSecret_testdata[3602] */ + { 3603, 0x0000000000000000ULL, 0x9DD38DC468658916ULL }, /* XSUM_XXH3_withSecret_testdata[3603] */ + { 3604, 0x0000000000000000ULL, 0x21A36E3176D2F743ULL }, /* XSUM_XXH3_withSecret_testdata[3604] */ + { 3605, 0x0000000000000000ULL, 0xF83B77A6680719FEULL }, /* XSUM_XXH3_withSecret_testdata[3605] */ + { 3606, 0x0000000000000000ULL, 0xD4B1975280EB54F2ULL }, /* XSUM_XXH3_withSecret_testdata[3606] */ + { 3607, 0x0000000000000000ULL, 0x602F4720DA49BDEAULL }, /* XSUM_XXH3_withSecret_testdata[3607] */ + { 3608, 0x0000000000000000ULL, 0x59A285BCB4BBDBFBULL }, /* XSUM_XXH3_withSecret_testdata[3608] */ + { 3609, 0x0000000000000000ULL, 0xD9519020FEF530A7ULL }, /* XSUM_XXH3_withSecret_testdata[3609] */ + { 3610, 0x0000000000000000ULL, 0xAACF5921E6D501ECULL }, /* XSUM_XXH3_withSecret_testdata[3610] */ + { 3611, 0x0000000000000000ULL, 0x07A636AF3271EBB6ULL }, /* XSUM_XXH3_withSecret_testdata[3611] */ + { 3612, 0x0000000000000000ULL, 0x4013EA3FE665B0D5ULL }, /* XSUM_XXH3_withSecret_testdata[3612] */ + { 3613, 0x0000000000000000ULL, 0x2EC368F9BB598D51ULL }, /* XSUM_XXH3_withSecret_testdata[3613] */ + { 3614, 0x0000000000000000ULL, 0xBD2165F9606C8D61ULL }, /* XSUM_XXH3_withSecret_testdata[3614] */ + { 3615, 0x0000000000000000ULL, 0xDFAF7B5D28668D5EULL }, /* XSUM_XXH3_withSecret_testdata[3615] */ + { 3616, 0x0000000000000000ULL, 0x3D6FDCBF546F83D0ULL }, /* XSUM_XXH3_withSecret_testdata[3616] */ + { 3617, 0x0000000000000000ULL, 0xF23C27847715A884ULL }, /* XSUM_XXH3_withSecret_testdata[3617] */ + { 3618, 0x0000000000000000ULL, 0x240A3D3B1B06AD6FULL }, /* XSUM_XXH3_withSecret_testdata[3618] */ + { 3619, 0x0000000000000000ULL, 0x5DE3B1263086D356ULL }, /* XSUM_XXH3_withSecret_testdata[3619] */ + { 3620, 0x0000000000000000ULL, 0xACFAE3B137C0AF5AULL }, /* XSUM_XXH3_withSecret_testdata[3620] */ + { 3621, 0x0000000000000000ULL, 0xA1B32A532E4AE965ULL }, /* XSUM_XXH3_withSecret_testdata[3621] */ + { 3622, 0x0000000000000000ULL, 0x7803002806FE567DULL }, /* XSUM_XXH3_withSecret_testdata[3622] */ + { 3623, 0x0000000000000000ULL, 0xE350F1C3D9B30327ULL }, /* XSUM_XXH3_withSecret_testdata[3623] */ + { 3624, 0x0000000000000000ULL, 0xD3C100B30A2DF110ULL }, /* XSUM_XXH3_withSecret_testdata[3624] */ + { 3625, 0x0000000000000000ULL, 0x4684AF31B6374A8DULL }, /* XSUM_XXH3_withSecret_testdata[3625] */ + { 3626, 0x0000000000000000ULL, 0x4F1A0143A68B1CD5ULL }, /* XSUM_XXH3_withSecret_testdata[3626] */ + { 3627, 0x0000000000000000ULL, 0xB086237B79F08F2AULL }, /* XSUM_XXH3_withSecret_testdata[3627] */ + { 3628, 0x0000000000000000ULL, 0x61A6E3B6CB72D192ULL }, /* XSUM_XXH3_withSecret_testdata[3628] */ + { 3629, 0x0000000000000000ULL, 0x13FB132F642B074FULL }, /* XSUM_XXH3_withSecret_testdata[3629] */ + { 3630, 0x0000000000000000ULL, 0xC335AE03249A6F93ULL }, /* XSUM_XXH3_withSecret_testdata[3630] */ + { 3631, 0x0000000000000000ULL, 0x86BB9D9B7810927CULL }, /* XSUM_XXH3_withSecret_testdata[3631] */ + { 3632, 0x0000000000000000ULL, 0x97CF88EE83090D33ULL }, /* XSUM_XXH3_withSecret_testdata[3632] */ + { 3633, 0x0000000000000000ULL, 0xAD7264DE0835485FULL }, /* XSUM_XXH3_withSecret_testdata[3633] */ + { 3634, 0x0000000000000000ULL, 0xEB6874CDF40A6ADAULL }, /* XSUM_XXH3_withSecret_testdata[3634] */ + { 3635, 0x0000000000000000ULL, 0xE4D8C29D2D21CDCDULL }, /* XSUM_XXH3_withSecret_testdata[3635] */ + { 3636, 0x0000000000000000ULL, 0x2F70C55B1CE33DF2ULL }, /* XSUM_XXH3_withSecret_testdata[3636] */ + { 3637, 0x0000000000000000ULL, 0x32CB28B1E0DC2AEFULL }, /* XSUM_XXH3_withSecret_testdata[3637] */ + { 3638, 0x0000000000000000ULL, 0x1F8A763161F47771ULL }, /* XSUM_XXH3_withSecret_testdata[3638] */ + { 3639, 0x0000000000000000ULL, 0x4B9E7F78ED95A2F9ULL }, /* XSUM_XXH3_withSecret_testdata[3639] */ + { 3640, 0x0000000000000000ULL, 0x0330B8B4657E5D20ULL }, /* XSUM_XXH3_withSecret_testdata[3640] */ + { 3641, 0x0000000000000000ULL, 0xCB5EB84AC49FCD38ULL }, /* XSUM_XXH3_withSecret_testdata[3641] */ + { 3642, 0x0000000000000000ULL, 0x9954450CB7119880ULL }, /* XSUM_XXH3_withSecret_testdata[3642] */ + { 3643, 0x0000000000000000ULL, 0x39A6D0CCD9D7334DULL }, /* XSUM_XXH3_withSecret_testdata[3643] */ + { 3644, 0x0000000000000000ULL, 0x29F426ACE9922249ULL }, /* XSUM_XXH3_withSecret_testdata[3644] */ + { 3645, 0x0000000000000000ULL, 0xD6BCCF95E17F5A5AULL }, /* XSUM_XXH3_withSecret_testdata[3645] */ + { 3646, 0x0000000000000000ULL, 0x52E2F5BBA58DE285ULL }, /* XSUM_XXH3_withSecret_testdata[3646] */ + { 3647, 0x0000000000000000ULL, 0x5C2F0AF653744211ULL }, /* XSUM_XXH3_withSecret_testdata[3647] */ + { 3648, 0x0000000000000000ULL, 0x13D0266107F906FEULL }, /* XSUM_XXH3_withSecret_testdata[3648] */ + { 3649, 0x0000000000000000ULL, 0x73B63D1E9267CBC3ULL }, /* XSUM_XXH3_withSecret_testdata[3649] */ + { 3650, 0x0000000000000000ULL, 0x5AE4F695636FBDB3ULL }, /* XSUM_XXH3_withSecret_testdata[3650] */ + { 3651, 0x0000000000000000ULL, 0xBE6F08CB4A10EA2DULL }, /* XSUM_XXH3_withSecret_testdata[3651] */ + { 3652, 0x0000000000000000ULL, 0x9ECE66636DF61E30ULL }, /* XSUM_XXH3_withSecret_testdata[3652] */ + { 3653, 0x0000000000000000ULL, 0x76897F6B48754D9CULL }, /* XSUM_XXH3_withSecret_testdata[3653] */ + { 3654, 0x0000000000000000ULL, 0x96893F3A1625D67CULL }, /* XSUM_XXH3_withSecret_testdata[3654] */ + { 3655, 0x0000000000000000ULL, 0x1BFA6342365DB03EULL }, /* XSUM_XXH3_withSecret_testdata[3655] */ + { 3656, 0x0000000000000000ULL, 0x9CAEDFDC9E5BBC45ULL }, /* XSUM_XXH3_withSecret_testdata[3656] */ + { 3657, 0x0000000000000000ULL, 0xEAD8C3DF0BC2B6EEULL }, /* XSUM_XXH3_withSecret_testdata[3657] */ + { 3658, 0x0000000000000000ULL, 0x5F3510D10299D194ULL }, /* XSUM_XXH3_withSecret_testdata[3658] */ + { 3659, 0x0000000000000000ULL, 0x4F7D6E007B2E2EE7ULL }, /* XSUM_XXH3_withSecret_testdata[3659] */ + { 3660, 0x0000000000000000ULL, 0xD5F60C63C8EC5E09ULL }, /* XSUM_XXH3_withSecret_testdata[3660] */ + { 3661, 0x0000000000000000ULL, 0x30959A76A7B20A41ULL }, /* XSUM_XXH3_withSecret_testdata[3661] */ + { 3662, 0x0000000000000000ULL, 0x27F8DA0A1E12A2BDULL }, /* XSUM_XXH3_withSecret_testdata[3662] */ + { 3663, 0x0000000000000000ULL, 0xEF629975E153E4CEULL }, /* XSUM_XXH3_withSecret_testdata[3663] */ + { 3664, 0x0000000000000000ULL, 0x33F7BFE74C443E29ULL }, /* XSUM_XXH3_withSecret_testdata[3664] */ + { 3665, 0x0000000000000000ULL, 0xE8A73C1DD4AB5D52ULL }, /* XSUM_XXH3_withSecret_testdata[3665] */ + { 3666, 0x0000000000000000ULL, 0x63E3746CC32627BDULL }, /* XSUM_XXH3_withSecret_testdata[3666] */ + { 3667, 0x0000000000000000ULL, 0x8872F8B441AE8026ULL }, /* XSUM_XXH3_withSecret_testdata[3667] */ + { 3668, 0x0000000000000000ULL, 0x34E1FCC0E6FC205CULL }, /* XSUM_XXH3_withSecret_testdata[3668] */ + { 3669, 0x0000000000000000ULL, 0xCC5BDD63DE4C9FA8ULL }, /* XSUM_XXH3_withSecret_testdata[3669] */ + { 3670, 0x0000000000000000ULL, 0xA958069D7004AF42ULL }, /* XSUM_XXH3_withSecret_testdata[3670] */ + { 3671, 0x0000000000000000ULL, 0x03C01B5A23891673ULL }, /* XSUM_XXH3_withSecret_testdata[3671] */ + { 3672, 0x0000000000000000ULL, 0xFE4E34A64A5497BAULL }, /* XSUM_XXH3_withSecret_testdata[3672] */ + { 3673, 0x0000000000000000ULL, 0xDB1DBA66C78E84DBULL }, /* XSUM_XXH3_withSecret_testdata[3673] */ + { 3674, 0x0000000000000000ULL, 0x001F20363F2628DBULL }, /* XSUM_XXH3_withSecret_testdata[3674] */ + { 3675, 0x0000000000000000ULL, 0xE03DD488BF20420DULL }, /* XSUM_XXH3_withSecret_testdata[3675] */ + { 3676, 0x0000000000000000ULL, 0xE7A872FDEFCA807BULL }, /* XSUM_XXH3_withSecret_testdata[3676] */ + { 3677, 0x0000000000000000ULL, 0x72B8216B72DFE57AULL }, /* XSUM_XXH3_withSecret_testdata[3677] */ + { 3678, 0x0000000000000000ULL, 0x9B0B6D2B15023E94ULL }, /* XSUM_XXH3_withSecret_testdata[3678] */ + { 3679, 0x0000000000000000ULL, 0x3C2A43ABE217905AULL }, /* XSUM_XXH3_withSecret_testdata[3679] */ + { 3680, 0x0000000000000000ULL, 0x21A35114EC6CDAE8ULL }, /* XSUM_XXH3_withSecret_testdata[3680] */ + { 3681, 0x0000000000000000ULL, 0x048CB0141AC4C76AULL }, /* XSUM_XXH3_withSecret_testdata[3681] */ + { 3682, 0x0000000000000000ULL, 0xE5AFFACD2AC33F04ULL }, /* XSUM_XXH3_withSecret_testdata[3682] */ + { 3683, 0x0000000000000000ULL, 0x2FEBC09FA68F6EDEULL }, /* XSUM_XXH3_withSecret_testdata[3683] */ + { 3684, 0x0000000000000000ULL, 0x044907FA64CEBE97ULL }, /* XSUM_XXH3_withSecret_testdata[3684] */ + { 3685, 0x0000000000000000ULL, 0x18B8803680479C1FULL }, /* XSUM_XXH3_withSecret_testdata[3685] */ + { 3686, 0x0000000000000000ULL, 0x3B434DC270FFA40EULL }, /* XSUM_XXH3_withSecret_testdata[3686] */ + { 3687, 0x0000000000000000ULL, 0x0E81B1243D4ECBA7ULL }, /* XSUM_XXH3_withSecret_testdata[3687] */ + { 3688, 0x0000000000000000ULL, 0xDB48C5430E0E2B55ULL }, /* XSUM_XXH3_withSecret_testdata[3688] */ + { 3689, 0x0000000000000000ULL, 0x4DA4C8361F09744CULL }, /* XSUM_XXH3_withSecret_testdata[3689] */ + { 3690, 0x0000000000000000ULL, 0x4880F9B5A5272B75ULL }, /* XSUM_XXH3_withSecret_testdata[3690] */ + { 3691, 0x0000000000000000ULL, 0xF9C814C22C0ADCF5ULL }, /* XSUM_XXH3_withSecret_testdata[3691] */ + { 3692, 0x0000000000000000ULL, 0xDBCA1057366F2159ULL }, /* XSUM_XXH3_withSecret_testdata[3692] */ + { 3693, 0x0000000000000000ULL, 0xC35907B3C5889075ULL }, /* XSUM_XXH3_withSecret_testdata[3693] */ + { 3694, 0x0000000000000000ULL, 0x072767B99173763DULL }, /* XSUM_XXH3_withSecret_testdata[3694] */ + { 3695, 0x0000000000000000ULL, 0x8F06E469E4C88337ULL }, /* XSUM_XXH3_withSecret_testdata[3695] */ + { 3696, 0x0000000000000000ULL, 0xE37A69802CE42D43ULL }, /* XSUM_XXH3_withSecret_testdata[3696] */ + { 3697, 0x0000000000000000ULL, 0x10EA5A56C4D77ABEULL }, /* XSUM_XXH3_withSecret_testdata[3697] */ + { 3698, 0x0000000000000000ULL, 0xA26396BD4BCFF063ULL }, /* XSUM_XXH3_withSecret_testdata[3698] */ + { 3699, 0x0000000000000000ULL, 0x5A128CB189F273E3ULL }, /* XSUM_XXH3_withSecret_testdata[3699] */ + { 3700, 0x0000000000000000ULL, 0xE0D7D181B089D4FCULL }, /* XSUM_XXH3_withSecret_testdata[3700] */ + { 3701, 0x0000000000000000ULL, 0xB0B1D7BD188AF12AULL }, /* XSUM_XXH3_withSecret_testdata[3701] */ + { 3702, 0x0000000000000000ULL, 0x31C2116B4AC8C726ULL }, /* XSUM_XXH3_withSecret_testdata[3702] */ + { 3703, 0x0000000000000000ULL, 0xC71F338F4647AFC5ULL }, /* XSUM_XXH3_withSecret_testdata[3703] */ + { 3704, 0x0000000000000000ULL, 0xBDA992AD1A4CBF1BULL }, /* XSUM_XXH3_withSecret_testdata[3704] */ + { 3705, 0x0000000000000000ULL, 0x63DC6F9CDE581FC3ULL }, /* XSUM_XXH3_withSecret_testdata[3705] */ + { 3706, 0x0000000000000000ULL, 0xE71687229E8DC725ULL }, /* XSUM_XXH3_withSecret_testdata[3706] */ + { 3707, 0x0000000000000000ULL, 0xF6267DED115F5C50ULL }, /* XSUM_XXH3_withSecret_testdata[3707] */ + { 3708, 0x0000000000000000ULL, 0xED27136F285EECF5ULL }, /* XSUM_XXH3_withSecret_testdata[3708] */ + { 3709, 0x0000000000000000ULL, 0x18A8AF1881FD9A23ULL }, /* XSUM_XXH3_withSecret_testdata[3709] */ + { 3710, 0x0000000000000000ULL, 0x0E87706AAF47190DULL }, /* XSUM_XXH3_withSecret_testdata[3710] */ + { 3711, 0x0000000000000000ULL, 0xC9ACE76107EA4689ULL }, /* XSUM_XXH3_withSecret_testdata[3711] */ + { 3712, 0x0000000000000000ULL, 0x1DB32201CD76C745ULL }, /* XSUM_XXH3_withSecret_testdata[3712] */ + { 3713, 0x0000000000000000ULL, 0xFFE21B586BF9A39AULL }, /* XSUM_XXH3_withSecret_testdata[3713] */ + { 3714, 0x0000000000000000ULL, 0xF3F49E55DD107D6DULL }, /* XSUM_XXH3_withSecret_testdata[3714] */ + { 3715, 0x0000000000000000ULL, 0xE9D9654ED3D54F89ULL }, /* XSUM_XXH3_withSecret_testdata[3715] */ + { 3716, 0x0000000000000000ULL, 0x9CBECD831B45BB4CULL }, /* XSUM_XXH3_withSecret_testdata[3716] */ + { 3717, 0x0000000000000000ULL, 0x485976A8B12D67BBULL }, /* XSUM_XXH3_withSecret_testdata[3717] */ + { 3718, 0x0000000000000000ULL, 0xB7585765FC20C4A2ULL }, /* XSUM_XXH3_withSecret_testdata[3718] */ + { 3719, 0x0000000000000000ULL, 0xB1DA481EDE8C3255ULL }, /* XSUM_XXH3_withSecret_testdata[3719] */ + { 3720, 0x0000000000000000ULL, 0xB8C0A08B5E236251ULL }, /* XSUM_XXH3_withSecret_testdata[3720] */ + { 3721, 0x0000000000000000ULL, 0x5A255FC9D278D00AULL }, /* XSUM_XXH3_withSecret_testdata[3721] */ + { 3722, 0x0000000000000000ULL, 0x48F4BE2687506EA9ULL }, /* XSUM_XXH3_withSecret_testdata[3722] */ + { 3723, 0x0000000000000000ULL, 0x2558380F89CAEB03ULL }, /* XSUM_XXH3_withSecret_testdata[3723] */ + { 3724, 0x0000000000000000ULL, 0x0DC2E4D8D7ECA5E0ULL }, /* XSUM_XXH3_withSecret_testdata[3724] */ + { 3725, 0x0000000000000000ULL, 0x05F606044236F491ULL }, /* XSUM_XXH3_withSecret_testdata[3725] */ + { 3726, 0x0000000000000000ULL, 0x7406113BF7451CF1ULL }, /* XSUM_XXH3_withSecret_testdata[3726] */ + { 3727, 0x0000000000000000ULL, 0x76FB9D866FAFB2BAULL }, /* XSUM_XXH3_withSecret_testdata[3727] */ + { 3728, 0x0000000000000000ULL, 0x7E137B468B29D288ULL }, /* XSUM_XXH3_withSecret_testdata[3728] */ + { 3729, 0x0000000000000000ULL, 0x7EF51369C118D410ULL }, /* XSUM_XXH3_withSecret_testdata[3729] */ + { 3730, 0x0000000000000000ULL, 0xCA6DBC27D4DF0824ULL }, /* XSUM_XXH3_withSecret_testdata[3730] */ + { 3731, 0x0000000000000000ULL, 0xAC173AD877A8B109ULL }, /* XSUM_XXH3_withSecret_testdata[3731] */ + { 3732, 0x0000000000000000ULL, 0x3B23CCA050FDB25EULL }, /* XSUM_XXH3_withSecret_testdata[3732] */ + { 3733, 0x0000000000000000ULL, 0x54992EA328E6A79AULL }, /* XSUM_XXH3_withSecret_testdata[3733] */ + { 3734, 0x0000000000000000ULL, 0x1526C8960EA4823EULL }, /* XSUM_XXH3_withSecret_testdata[3734] */ + { 3735, 0x0000000000000000ULL, 0xA94DD15791A710EFULL }, /* XSUM_XXH3_withSecret_testdata[3735] */ + { 3736, 0x0000000000000000ULL, 0x0AE776D7B71B14EEULL }, /* XSUM_XXH3_withSecret_testdata[3736] */ + { 3737, 0x0000000000000000ULL, 0x7A84970010538609ULL }, /* XSUM_XXH3_withSecret_testdata[3737] */ + { 3738, 0x0000000000000000ULL, 0xAA6BCBD050ED92E3ULL }, /* XSUM_XXH3_withSecret_testdata[3738] */ + { 3739, 0x0000000000000000ULL, 0xB61E295FBC27DC6FULL }, /* XSUM_XXH3_withSecret_testdata[3739] */ + { 3740, 0x0000000000000000ULL, 0x9FE549999C1629FBULL }, /* XSUM_XXH3_withSecret_testdata[3740] */ + { 3741, 0x0000000000000000ULL, 0x9230E380E452E7D5ULL }, /* XSUM_XXH3_withSecret_testdata[3741] */ + { 3742, 0x0000000000000000ULL, 0x50C2D319AC1DAD66ULL }, /* XSUM_XXH3_withSecret_testdata[3742] */ + { 3743, 0x0000000000000000ULL, 0x0A4AB987174866CBULL }, /* XSUM_XXH3_withSecret_testdata[3743] */ + { 3744, 0x0000000000000000ULL, 0xEB1CA8391A884420ULL }, /* XSUM_XXH3_withSecret_testdata[3744] */ + { 3745, 0x0000000000000000ULL, 0x1FFB61B556F72EE6ULL }, /* XSUM_XXH3_withSecret_testdata[3745] */ + { 3746, 0x0000000000000000ULL, 0x75AA2A4413656C14ULL }, /* XSUM_XXH3_withSecret_testdata[3746] */ + { 3747, 0x0000000000000000ULL, 0x4CDA01A88A2AA595ULL }, /* XSUM_XXH3_withSecret_testdata[3747] */ + { 3748, 0x0000000000000000ULL, 0xF6DE07C01752A9BDULL }, /* XSUM_XXH3_withSecret_testdata[3748] */ + { 3749, 0x0000000000000000ULL, 0xA8A8B0A39D2A1FC2ULL }, /* XSUM_XXH3_withSecret_testdata[3749] */ + { 3750, 0x0000000000000000ULL, 0x5784AB60AEA1B6BCULL }, /* XSUM_XXH3_withSecret_testdata[3750] */ + { 3751, 0x0000000000000000ULL, 0xD64C5CB2A53FDCCAULL }, /* XSUM_XXH3_withSecret_testdata[3751] */ + { 3752, 0x0000000000000000ULL, 0x4DAFBC77C45F9225ULL }, /* XSUM_XXH3_withSecret_testdata[3752] */ + { 3753, 0x0000000000000000ULL, 0xB075D911FFA1708FULL }, /* XSUM_XXH3_withSecret_testdata[3753] */ + { 3754, 0x0000000000000000ULL, 0xB152C65017329C71ULL }, /* XSUM_XXH3_withSecret_testdata[3754] */ + { 3755, 0x0000000000000000ULL, 0xECEDCDA57DA1D9B6ULL }, /* XSUM_XXH3_withSecret_testdata[3755] */ + { 3756, 0x0000000000000000ULL, 0xF582183984FDB908ULL }, /* XSUM_XXH3_withSecret_testdata[3756] */ + { 3757, 0x0000000000000000ULL, 0x94BEE11D8AAA2CE3ULL }, /* XSUM_XXH3_withSecret_testdata[3757] */ + { 3758, 0x0000000000000000ULL, 0xE92ED29BFBB00F69ULL }, /* XSUM_XXH3_withSecret_testdata[3758] */ + { 3759, 0x0000000000000000ULL, 0x666F41EC3C2B2965ULL }, /* XSUM_XXH3_withSecret_testdata[3759] */ + { 3760, 0x0000000000000000ULL, 0x7B9E87883F93C2F9ULL }, /* XSUM_XXH3_withSecret_testdata[3760] */ + { 3761, 0x0000000000000000ULL, 0xEDADD8EFEEA8A3A0ULL }, /* XSUM_XXH3_withSecret_testdata[3761] */ + { 3762, 0x0000000000000000ULL, 0xF342739645FF0E44ULL }, /* XSUM_XXH3_withSecret_testdata[3762] */ + { 3763, 0x0000000000000000ULL, 0x2B0C530C6BC98851ULL }, /* XSUM_XXH3_withSecret_testdata[3763] */ + { 3764, 0x0000000000000000ULL, 0x8B612A3272D16644ULL }, /* XSUM_XXH3_withSecret_testdata[3764] */ + { 3765, 0x0000000000000000ULL, 0xEA8BDCDEFCEF283CULL }, /* XSUM_XXH3_withSecret_testdata[3765] */ + { 3766, 0x0000000000000000ULL, 0x6416BB5A98C1FB2AULL }, /* XSUM_XXH3_withSecret_testdata[3766] */ + { 3767, 0x0000000000000000ULL, 0xB7F499E2B37496DCULL }, /* XSUM_XXH3_withSecret_testdata[3767] */ + { 3768, 0x0000000000000000ULL, 0x33CB4D1B2ED8DC8DULL }, /* XSUM_XXH3_withSecret_testdata[3768] */ + { 3769, 0x0000000000000000ULL, 0xEAC1D6CFE61BE787ULL }, /* XSUM_XXH3_withSecret_testdata[3769] */ + { 3770, 0x0000000000000000ULL, 0x46C761EFDD47C86CULL }, /* XSUM_XXH3_withSecret_testdata[3770] */ + { 3771, 0x0000000000000000ULL, 0xAB537E712965BA86ULL }, /* XSUM_XXH3_withSecret_testdata[3771] */ + { 3772, 0x0000000000000000ULL, 0x02D305D648501AADULL }, /* XSUM_XXH3_withSecret_testdata[3772] */ + { 3773, 0x0000000000000000ULL, 0xB17AD8CCD4BC7A04ULL }, /* XSUM_XXH3_withSecret_testdata[3773] */ + { 3774, 0x0000000000000000ULL, 0xBCF6823A22C99244ULL }, /* XSUM_XXH3_withSecret_testdata[3774] */ + { 3775, 0x0000000000000000ULL, 0x96EEEB261AF86AD9ULL }, /* XSUM_XXH3_withSecret_testdata[3775] */ + { 3776, 0x0000000000000000ULL, 0x2C7A8443A839BA3AULL }, /* XSUM_XXH3_withSecret_testdata[3776] */ + { 3777, 0x0000000000000000ULL, 0x0E474F9A93CCB242ULL }, /* XSUM_XXH3_withSecret_testdata[3777] */ + { 3778, 0x0000000000000000ULL, 0xFDC63A0F211D3154ULL }, /* XSUM_XXH3_withSecret_testdata[3778] */ + { 3779, 0x0000000000000000ULL, 0xE56BED521618B7BAULL }, /* XSUM_XXH3_withSecret_testdata[3779] */ + { 3780, 0x0000000000000000ULL, 0xDA685DF97CA1506DULL }, /* XSUM_XXH3_withSecret_testdata[3780] */ + { 3781, 0x0000000000000000ULL, 0x1C1FD38460B6F82AULL }, /* XSUM_XXH3_withSecret_testdata[3781] */ + { 3782, 0x0000000000000000ULL, 0xF9DF2C7BBBF67FA1ULL }, /* XSUM_XXH3_withSecret_testdata[3782] */ + { 3783, 0x0000000000000000ULL, 0x7BCFE3EF0B35C54FULL }, /* XSUM_XXH3_withSecret_testdata[3783] */ + { 3784, 0x0000000000000000ULL, 0x77E909EC093B2113ULL }, /* XSUM_XXH3_withSecret_testdata[3784] */ + { 3785, 0x0000000000000000ULL, 0xB74CAA8CBFC01E10ULL }, /* XSUM_XXH3_withSecret_testdata[3785] */ + { 3786, 0x0000000000000000ULL, 0xDAC8D10D0862BCD5ULL }, /* XSUM_XXH3_withSecret_testdata[3786] */ + { 3787, 0x0000000000000000ULL, 0xB9E4FAF7B370A187ULL }, /* XSUM_XXH3_withSecret_testdata[3787] */ + { 3788, 0x0000000000000000ULL, 0x3D82B66B5D1BB880ULL }, /* XSUM_XXH3_withSecret_testdata[3788] */ + { 3789, 0x0000000000000000ULL, 0x9304E5F1EBAFE4C7ULL }, /* XSUM_XXH3_withSecret_testdata[3789] */ + { 3790, 0x0000000000000000ULL, 0xC7A9C2576FBD767DULL }, /* XSUM_XXH3_withSecret_testdata[3790] */ + { 3791, 0x0000000000000000ULL, 0x14F01E3E28FC759DULL }, /* XSUM_XXH3_withSecret_testdata[3791] */ + { 3792, 0x0000000000000000ULL, 0x76FD38736065BED7ULL }, /* XSUM_XXH3_withSecret_testdata[3792] */ + { 3793, 0x0000000000000000ULL, 0x4E31D701EB7670D3ULL }, /* XSUM_XXH3_withSecret_testdata[3793] */ + { 3794, 0x0000000000000000ULL, 0x340F87F84F06CC94ULL }, /* XSUM_XXH3_withSecret_testdata[3794] */ + { 3795, 0x0000000000000000ULL, 0xDA2B3FBB4B61DB28ULL }, /* XSUM_XXH3_withSecret_testdata[3795] */ + { 3796, 0x0000000000000000ULL, 0x63401C635E1CEFFFULL }, /* XSUM_XXH3_withSecret_testdata[3796] */ + { 3797, 0x0000000000000000ULL, 0x07EA5DE2D1677BB5ULL }, /* XSUM_XXH3_withSecret_testdata[3797] */ + { 3798, 0x0000000000000000ULL, 0x32882E6562EE4F9AULL }, /* XSUM_XXH3_withSecret_testdata[3798] */ + { 3799, 0x0000000000000000ULL, 0x16D20325CB5BAFD0ULL }, /* XSUM_XXH3_withSecret_testdata[3799] */ + { 3800, 0x0000000000000000ULL, 0xD1D2AE3C74F79A1DULL }, /* XSUM_XXH3_withSecret_testdata[3800] */ + { 3801, 0x0000000000000000ULL, 0x58F0413920C56ADBULL }, /* XSUM_XXH3_withSecret_testdata[3801] */ + { 3802, 0x0000000000000000ULL, 0x84B5A597342D2628ULL }, /* XSUM_XXH3_withSecret_testdata[3802] */ + { 3803, 0x0000000000000000ULL, 0x49093794D9FC2868ULL }, /* XSUM_XXH3_withSecret_testdata[3803] */ + { 3804, 0x0000000000000000ULL, 0x92FBA0D90B409409ULL }, /* XSUM_XXH3_withSecret_testdata[3804] */ + { 3805, 0x0000000000000000ULL, 0x649EA52C223F577AULL }, /* XSUM_XXH3_withSecret_testdata[3805] */ + { 3806, 0x0000000000000000ULL, 0x423C53D0087BFDD5ULL }, /* XSUM_XXH3_withSecret_testdata[3806] */ + { 3807, 0x0000000000000000ULL, 0x613799A6F9D3F0C2ULL }, /* XSUM_XXH3_withSecret_testdata[3807] */ + { 3808, 0x0000000000000000ULL, 0x1DD793160A191682ULL }, /* XSUM_XXH3_withSecret_testdata[3808] */ + { 3809, 0x0000000000000000ULL, 0xE354257ACA462674ULL }, /* XSUM_XXH3_withSecret_testdata[3809] */ + { 3810, 0x0000000000000000ULL, 0x7A90A29F197857D9ULL }, /* XSUM_XXH3_withSecret_testdata[3810] */ + { 3811, 0x0000000000000000ULL, 0x479DDA084F200DD5ULL }, /* XSUM_XXH3_withSecret_testdata[3811] */ + { 3812, 0x0000000000000000ULL, 0x1C8590EC97FD6CB5ULL }, /* XSUM_XXH3_withSecret_testdata[3812] */ + { 3813, 0x0000000000000000ULL, 0x33D6C48753A38611ULL }, /* XSUM_XXH3_withSecret_testdata[3813] */ + { 3814, 0x0000000000000000ULL, 0x40B740DFA545198BULL }, /* XSUM_XXH3_withSecret_testdata[3814] */ + { 3815, 0x0000000000000000ULL, 0x8D1D8E8C352095D4ULL }, /* XSUM_XXH3_withSecret_testdata[3815] */ + { 3816, 0x0000000000000000ULL, 0xC69121B15BFEA3CCULL }, /* XSUM_XXH3_withSecret_testdata[3816] */ + { 3817, 0x0000000000000000ULL, 0x9B0CE9D9A00F332AULL }, /* XSUM_XXH3_withSecret_testdata[3817] */ + { 3818, 0x0000000000000000ULL, 0xD4B48E6420DAD175ULL }, /* XSUM_XXH3_withSecret_testdata[3818] */ + { 3819, 0x0000000000000000ULL, 0x9AF27DA42034A1AEULL }, /* XSUM_XXH3_withSecret_testdata[3819] */ + { 3820, 0x0000000000000000ULL, 0xC8C71DEC751587A6ULL }, /* XSUM_XXH3_withSecret_testdata[3820] */ + { 3821, 0x0000000000000000ULL, 0x0316EC3A75873436ULL }, /* XSUM_XXH3_withSecret_testdata[3821] */ + { 3822, 0x0000000000000000ULL, 0x3B37690A367657FAULL }, /* XSUM_XXH3_withSecret_testdata[3822] */ + { 3823, 0x0000000000000000ULL, 0xC09F52288854CAE0ULL }, /* XSUM_XXH3_withSecret_testdata[3823] */ + { 3824, 0x0000000000000000ULL, 0xAC7D977DBFED7A45ULL }, /* XSUM_XXH3_withSecret_testdata[3824] */ + { 3825, 0x0000000000000000ULL, 0x8F756E5031220FA0ULL }, /* XSUM_XXH3_withSecret_testdata[3825] */ + { 3826, 0x0000000000000000ULL, 0x121FA696A8744068ULL }, /* XSUM_XXH3_withSecret_testdata[3826] */ + { 3827, 0x0000000000000000ULL, 0x935280FAA6F76A56ULL }, /* XSUM_XXH3_withSecret_testdata[3827] */ + { 3828, 0x0000000000000000ULL, 0x66211848A15A1541ULL }, /* XSUM_XXH3_withSecret_testdata[3828] */ + { 3829, 0x0000000000000000ULL, 0x440A03E907D66571ULL }, /* XSUM_XXH3_withSecret_testdata[3829] */ + { 3830, 0x0000000000000000ULL, 0x9491D55283A09C43ULL }, /* XSUM_XXH3_withSecret_testdata[3830] */ + { 3831, 0x0000000000000000ULL, 0x308FD6DCD408AA5AULL }, /* XSUM_XXH3_withSecret_testdata[3831] */ + { 3832, 0x0000000000000000ULL, 0x6F5D57109CA10AEAULL }, /* XSUM_XXH3_withSecret_testdata[3832] */ + { 3833, 0x0000000000000000ULL, 0x0BB422616E2FF0F5ULL }, /* XSUM_XXH3_withSecret_testdata[3833] */ + { 3834, 0x0000000000000000ULL, 0xF71FB6B3FABCC5B5ULL }, /* XSUM_XXH3_withSecret_testdata[3834] */ + { 3835, 0x0000000000000000ULL, 0x0D077380BC66E5F8ULL }, /* XSUM_XXH3_withSecret_testdata[3835] */ + { 3836, 0x0000000000000000ULL, 0x2D18821A1CE7A0D3ULL }, /* XSUM_XXH3_withSecret_testdata[3836] */ + { 3837, 0x0000000000000000ULL, 0x89741346BBAF3616ULL }, /* XSUM_XXH3_withSecret_testdata[3837] */ + { 3838, 0x0000000000000000ULL, 0x5BE5AE3674120F8EULL }, /* XSUM_XXH3_withSecret_testdata[3838] */ + { 3839, 0x0000000000000000ULL, 0x83FC1E78888AEB54ULL }, /* XSUM_XXH3_withSecret_testdata[3839] */ + { 3840, 0x0000000000000000ULL, 0xED8925DFA219FFB2ULL }, /* XSUM_XXH3_withSecret_testdata[3840] */ + { 3841, 0x0000000000000000ULL, 0xBB51262335EFC2A7ULL }, /* XSUM_XXH3_withSecret_testdata[3841] */ + { 3842, 0x0000000000000000ULL, 0xF781FFA8219D2D48ULL }, /* XSUM_XXH3_withSecret_testdata[3842] */ + { 3843, 0x0000000000000000ULL, 0xF5AA718CEE24D232ULL }, /* XSUM_XXH3_withSecret_testdata[3843] */ + { 3844, 0x0000000000000000ULL, 0x6F983BF6054906C1ULL }, /* XSUM_XXH3_withSecret_testdata[3844] */ + { 3845, 0x0000000000000000ULL, 0xB9A4B25D6D15DD75ULL }, /* XSUM_XXH3_withSecret_testdata[3845] */ + { 3846, 0x0000000000000000ULL, 0x03DFB187DE44D487ULL }, /* XSUM_XXH3_withSecret_testdata[3846] */ + { 3847, 0x0000000000000000ULL, 0x77DA1F2A998FE3ABULL }, /* XSUM_XXH3_withSecret_testdata[3847] */ + { 3848, 0x0000000000000000ULL, 0x26C8738103EF1A53ULL }, /* XSUM_XXH3_withSecret_testdata[3848] */ + { 3849, 0x0000000000000000ULL, 0xA458541991D43DB4ULL }, /* XSUM_XXH3_withSecret_testdata[3849] */ + { 3850, 0x0000000000000000ULL, 0x477DE4BF55A335CEULL }, /* XSUM_XXH3_withSecret_testdata[3850] */ + { 3851, 0x0000000000000000ULL, 0x147708C7E1BE1F09ULL }, /* XSUM_XXH3_withSecret_testdata[3851] */ + { 3852, 0x0000000000000000ULL, 0x4F80B172AD9704ECULL }, /* XSUM_XXH3_withSecret_testdata[3852] */ + { 3853, 0x0000000000000000ULL, 0x0CA2B096526C33F9ULL }, /* XSUM_XXH3_withSecret_testdata[3853] */ + { 3854, 0x0000000000000000ULL, 0x013AE1F7A29A617AULL }, /* XSUM_XXH3_withSecret_testdata[3854] */ + { 3855, 0x0000000000000000ULL, 0x049FAA6D542D15CFULL }, /* XSUM_XXH3_withSecret_testdata[3855] */ + { 3856, 0x0000000000000000ULL, 0x13039E7C64323905ULL }, /* XSUM_XXH3_withSecret_testdata[3856] */ + { 3857, 0x0000000000000000ULL, 0x79D4917EA102D901ULL }, /* XSUM_XXH3_withSecret_testdata[3857] */ + { 3858, 0x0000000000000000ULL, 0xDACB2985AEC67711ULL }, /* XSUM_XXH3_withSecret_testdata[3858] */ + { 3859, 0x0000000000000000ULL, 0x601C42A33E2D0902ULL }, /* XSUM_XXH3_withSecret_testdata[3859] */ + { 3860, 0x0000000000000000ULL, 0xF1FA5A2ADE2EE6C7ULL }, /* XSUM_XXH3_withSecret_testdata[3860] */ + { 3861, 0x0000000000000000ULL, 0x8640BA9218BB17E9ULL }, /* XSUM_XXH3_withSecret_testdata[3861] */ + { 3862, 0x0000000000000000ULL, 0x61364A17DAE52AE8ULL }, /* XSUM_XXH3_withSecret_testdata[3862] */ + { 3863, 0x0000000000000000ULL, 0x8B8256DE86A83190ULL }, /* XSUM_XXH3_withSecret_testdata[3863] */ + { 3864, 0x0000000000000000ULL, 0x0CE94D5DCE669515ULL }, /* XSUM_XXH3_withSecret_testdata[3864] */ + { 3865, 0x0000000000000000ULL, 0x376563E1285C6D31ULL }, /* XSUM_XXH3_withSecret_testdata[3865] */ + { 3866, 0x0000000000000000ULL, 0xC75FAC7CEF0E0B28ULL }, /* XSUM_XXH3_withSecret_testdata[3866] */ + { 3867, 0x0000000000000000ULL, 0x15757DB615C48441ULL }, /* XSUM_XXH3_withSecret_testdata[3867] */ + { 3868, 0x0000000000000000ULL, 0x3B900D93E2E69F82ULL }, /* XSUM_XXH3_withSecret_testdata[3868] */ + { 3869, 0x0000000000000000ULL, 0xF3EB1C5CAC0AECA8ULL }, /* XSUM_XXH3_withSecret_testdata[3869] */ + { 3870, 0x0000000000000000ULL, 0x6C6E7AD81742B826ULL }, /* XSUM_XXH3_withSecret_testdata[3870] */ + { 3871, 0x0000000000000000ULL, 0xC951CB98838C3165ULL }, /* XSUM_XXH3_withSecret_testdata[3871] */ + { 3872, 0x0000000000000000ULL, 0x7084FDE99B988E35ULL }, /* XSUM_XXH3_withSecret_testdata[3872] */ + { 3873, 0x0000000000000000ULL, 0x21BA5B9DE45DEA90ULL }, /* XSUM_XXH3_withSecret_testdata[3873] */ + { 3874, 0x0000000000000000ULL, 0x9F1607F01961CB5EULL }, /* XSUM_XXH3_withSecret_testdata[3874] */ + { 3875, 0x0000000000000000ULL, 0x5E21F010B693F7DDULL }, /* XSUM_XXH3_withSecret_testdata[3875] */ + { 3876, 0x0000000000000000ULL, 0xFD7A548ABFE10CBAULL }, /* XSUM_XXH3_withSecret_testdata[3876] */ + { 3877, 0x0000000000000000ULL, 0x0F73AD12D922EF01ULL }, /* XSUM_XXH3_withSecret_testdata[3877] */ + { 3878, 0x0000000000000000ULL, 0x552A4D2349FD8930ULL }, /* XSUM_XXH3_withSecret_testdata[3878] */ + { 3879, 0x0000000000000000ULL, 0x3ED45EF89DDD1BEFULL }, /* XSUM_XXH3_withSecret_testdata[3879] */ + { 3880, 0x0000000000000000ULL, 0x3968D05D6F1D061AULL }, /* XSUM_XXH3_withSecret_testdata[3880] */ + { 3881, 0x0000000000000000ULL, 0x3344DBEEB28A34BEULL }, /* XSUM_XXH3_withSecret_testdata[3881] */ + { 3882, 0x0000000000000000ULL, 0x60AD1E4CB1E6BE07ULL }, /* XSUM_XXH3_withSecret_testdata[3882] */ + { 3883, 0x0000000000000000ULL, 0x1B803BE7A6EE325DULL }, /* XSUM_XXH3_withSecret_testdata[3883] */ + { 3884, 0x0000000000000000ULL, 0xD4999587BCC54BA7ULL }, /* XSUM_XXH3_withSecret_testdata[3884] */ + { 3885, 0x0000000000000000ULL, 0x685F7F3FCEFC0BDAULL }, /* XSUM_XXH3_withSecret_testdata[3885] */ + { 3886, 0x0000000000000000ULL, 0x6372BF182DC55808ULL }, /* XSUM_XXH3_withSecret_testdata[3886] */ + { 3887, 0x0000000000000000ULL, 0x3156503EA20E4BCAULL }, /* XSUM_XXH3_withSecret_testdata[3887] */ + { 3888, 0x0000000000000000ULL, 0xDA2C23CD9B86B7CDULL }, /* XSUM_XXH3_withSecret_testdata[3888] */ + { 3889, 0x0000000000000000ULL, 0x7F5FAA17E5806167ULL }, /* XSUM_XXH3_withSecret_testdata[3889] */ + { 3890, 0x0000000000000000ULL, 0xB1096B3D48C20008ULL }, /* XSUM_XXH3_withSecret_testdata[3890] */ + { 3891, 0x0000000000000000ULL, 0x4AD5418DD0EAC137ULL }, /* XSUM_XXH3_withSecret_testdata[3891] */ + { 3892, 0x0000000000000000ULL, 0x466D3013825AE37CULL }, /* XSUM_XXH3_withSecret_testdata[3892] */ + { 3893, 0x0000000000000000ULL, 0x042F95B677AB0DD5ULL }, /* XSUM_XXH3_withSecret_testdata[3893] */ + { 3894, 0x0000000000000000ULL, 0xEA13C83EFEF8A615ULL }, /* XSUM_XXH3_withSecret_testdata[3894] */ + { 3895, 0x0000000000000000ULL, 0x9E4A0F97E8D5666EULL }, /* XSUM_XXH3_withSecret_testdata[3895] */ + { 3896, 0x0000000000000000ULL, 0x0D80D8CCE3ED4C48ULL }, /* XSUM_XXH3_withSecret_testdata[3896] */ + { 3897, 0x0000000000000000ULL, 0xBF430BCD17E867B5ULL }, /* XSUM_XXH3_withSecret_testdata[3897] */ + { 3898, 0x0000000000000000ULL, 0x9BB9BC9B675F788AULL }, /* XSUM_XXH3_withSecret_testdata[3898] */ + { 3899, 0x0000000000000000ULL, 0x3774510B1E6E7F04ULL }, /* XSUM_XXH3_withSecret_testdata[3899] */ + { 3900, 0x0000000000000000ULL, 0xDF7A7AD16BD22D35ULL }, /* XSUM_XXH3_withSecret_testdata[3900] */ + { 3901, 0x0000000000000000ULL, 0x52B56258F36FB33DULL }, /* XSUM_XXH3_withSecret_testdata[3901] */ + { 3902, 0x0000000000000000ULL, 0x0E1E913ADF08DF1FULL }, /* XSUM_XXH3_withSecret_testdata[3902] */ + { 3903, 0x0000000000000000ULL, 0xB95B7C9F36356CD2ULL }, /* XSUM_XXH3_withSecret_testdata[3903] */ + { 3904, 0x0000000000000000ULL, 0x1F90A3C3B9455555ULL }, /* XSUM_XXH3_withSecret_testdata[3904] */ + { 3905, 0x0000000000000000ULL, 0x1DB6217A29421657ULL }, /* XSUM_XXH3_withSecret_testdata[3905] */ + { 3906, 0x0000000000000000ULL, 0x5E1883B8DBCDBF1FULL }, /* XSUM_XXH3_withSecret_testdata[3906] */ + { 3907, 0x0000000000000000ULL, 0x90C2FA82176C1BE2ULL }, /* XSUM_XXH3_withSecret_testdata[3907] */ + { 3908, 0x0000000000000000ULL, 0x3C4AB5B9A1BE2EAFULL }, /* XSUM_XXH3_withSecret_testdata[3908] */ + { 3909, 0x0000000000000000ULL, 0x0C8A9C33F8C25C1FULL }, /* XSUM_XXH3_withSecret_testdata[3909] */ + { 3910, 0x0000000000000000ULL, 0xE8440A7A4D68B7ABULL }, /* XSUM_XXH3_withSecret_testdata[3910] */ + { 3911, 0x0000000000000000ULL, 0xC52FD58F9FC58964ULL }, /* XSUM_XXH3_withSecret_testdata[3911] */ + { 3912, 0x0000000000000000ULL, 0x9EC76C894C62DE08ULL }, /* XSUM_XXH3_withSecret_testdata[3912] */ + { 3913, 0x0000000000000000ULL, 0x767105D328069CE7ULL }, /* XSUM_XXH3_withSecret_testdata[3913] */ + { 3914, 0x0000000000000000ULL, 0x52D4745EC61C14EBULL }, /* XSUM_XXH3_withSecret_testdata[3914] */ + { 3915, 0x0000000000000000ULL, 0x1E67F6E12B7F93CEULL }, /* XSUM_XXH3_withSecret_testdata[3915] */ + { 3916, 0x0000000000000000ULL, 0x9ABB0531A9D44411ULL }, /* XSUM_XXH3_withSecret_testdata[3916] */ + { 3917, 0x0000000000000000ULL, 0x040C7F9A4964F3F0ULL }, /* XSUM_XXH3_withSecret_testdata[3917] */ + { 3918, 0x0000000000000000ULL, 0x6E17312BA20C938CULL }, /* XSUM_XXH3_withSecret_testdata[3918] */ + { 3919, 0x0000000000000000ULL, 0x7D4C56E59201E07AULL }, /* XSUM_XXH3_withSecret_testdata[3919] */ + { 3920, 0x0000000000000000ULL, 0x394E53379B160483ULL }, /* XSUM_XXH3_withSecret_testdata[3920] */ + { 3921, 0x0000000000000000ULL, 0x0A0B7FE58C246440ULL }, /* XSUM_XXH3_withSecret_testdata[3921] */ + { 3922, 0x0000000000000000ULL, 0x9ABAD672A06F8EC3ULL }, /* XSUM_XXH3_withSecret_testdata[3922] */ + { 3923, 0x0000000000000000ULL, 0xED7857BE50F696EEULL }, /* XSUM_XXH3_withSecret_testdata[3923] */ + { 3924, 0x0000000000000000ULL, 0x5BCBD2C839AF6810ULL }, /* XSUM_XXH3_withSecret_testdata[3924] */ + { 3925, 0x0000000000000000ULL, 0x44886BAE5A33F6BDULL }, /* XSUM_XXH3_withSecret_testdata[3925] */ + { 3926, 0x0000000000000000ULL, 0x6A716B87F0459627ULL }, /* XSUM_XXH3_withSecret_testdata[3926] */ + { 3927, 0x0000000000000000ULL, 0x88E0523327EBC31BULL }, /* XSUM_XXH3_withSecret_testdata[3927] */ + { 3928, 0x0000000000000000ULL, 0x0A0C83F05753D320ULL }, /* XSUM_XXH3_withSecret_testdata[3928] */ + { 3929, 0x0000000000000000ULL, 0xB5BD6EF42352751EULL }, /* XSUM_XXH3_withSecret_testdata[3929] */ + { 3930, 0x0000000000000000ULL, 0xF1B64D06A9674EC5ULL }, /* XSUM_XXH3_withSecret_testdata[3930] */ + { 3931, 0x0000000000000000ULL, 0x2B77BADB2628D036ULL }, /* XSUM_XXH3_withSecret_testdata[3931] */ + { 3932, 0x0000000000000000ULL, 0x826F2F97D7BFD76CULL }, /* XSUM_XXH3_withSecret_testdata[3932] */ + { 3933, 0x0000000000000000ULL, 0xD667DA118A339719ULL }, /* XSUM_XXH3_withSecret_testdata[3933] */ + { 3934, 0x0000000000000000ULL, 0x501E1D45774C0E55ULL }, /* XSUM_XXH3_withSecret_testdata[3934] */ + { 3935, 0x0000000000000000ULL, 0xE4A479DA36C1CAB8ULL }, /* XSUM_XXH3_withSecret_testdata[3935] */ + { 3936, 0x0000000000000000ULL, 0x3B0D3D4D2725B066ULL }, /* XSUM_XXH3_withSecret_testdata[3936] */ + { 3937, 0x0000000000000000ULL, 0x9E0C63E6BACFC21CULL }, /* XSUM_XXH3_withSecret_testdata[3937] */ + { 3938, 0x0000000000000000ULL, 0x4CE6D62F07031DB7ULL }, /* XSUM_XXH3_withSecret_testdata[3938] */ + { 3939, 0x0000000000000000ULL, 0x0F4BEBD8BB21E5F1ULL }, /* XSUM_XXH3_withSecret_testdata[3939] */ + { 3940, 0x0000000000000000ULL, 0xB67EF66C05DD3737ULL }, /* XSUM_XXH3_withSecret_testdata[3940] */ + { 3941, 0x0000000000000000ULL, 0x3E225CA0833C7B24ULL }, /* XSUM_XXH3_withSecret_testdata[3941] */ + { 3942, 0x0000000000000000ULL, 0xEC16404F1138A509ULL }, /* XSUM_XXH3_withSecret_testdata[3942] */ + { 3943, 0x0000000000000000ULL, 0xD09524AA524FC24FULL }, /* XSUM_XXH3_withSecret_testdata[3943] */ + { 3944, 0x0000000000000000ULL, 0xA57072D294086351ULL }, /* XSUM_XXH3_withSecret_testdata[3944] */ + { 3945, 0x0000000000000000ULL, 0xB11118C50C185FF3ULL }, /* XSUM_XXH3_withSecret_testdata[3945] */ + { 3946, 0x0000000000000000ULL, 0x5FD78C944C803E26ULL }, /* XSUM_XXH3_withSecret_testdata[3946] */ + { 3947, 0x0000000000000000ULL, 0xEDA8B44313DA978FULL }, /* XSUM_XXH3_withSecret_testdata[3947] */ + { 3948, 0x0000000000000000ULL, 0x265E621233257D37ULL }, /* XSUM_XXH3_withSecret_testdata[3948] */ + { 3949, 0x0000000000000000ULL, 0x4E37AACED239559CULL }, /* XSUM_XXH3_withSecret_testdata[3949] */ + { 3950, 0x0000000000000000ULL, 0x1BEDAF55A1905256ULL }, /* XSUM_XXH3_withSecret_testdata[3950] */ + { 3951, 0x0000000000000000ULL, 0x35B4561FC0AFF903ULL }, /* XSUM_XXH3_withSecret_testdata[3951] */ + { 3952, 0x0000000000000000ULL, 0x2B2E8D7ED978BF9BULL }, /* XSUM_XXH3_withSecret_testdata[3952] */ + { 3953, 0x0000000000000000ULL, 0x851B421178EE4DEAULL }, /* XSUM_XXH3_withSecret_testdata[3953] */ + { 3954, 0x0000000000000000ULL, 0xAD11DBE6D67810CFULL }, /* XSUM_XXH3_withSecret_testdata[3954] */ + { 3955, 0x0000000000000000ULL, 0x832EFB6BE76C4917ULL }, /* XSUM_XXH3_withSecret_testdata[3955] */ + { 3956, 0x0000000000000000ULL, 0x5AF2B3FE52A9644FULL }, /* XSUM_XXH3_withSecret_testdata[3956] */ + { 3957, 0x0000000000000000ULL, 0x99C4F79C46EEA142ULL }, /* XSUM_XXH3_withSecret_testdata[3957] */ + { 3958, 0x0000000000000000ULL, 0x8DF60D6BF156B9D8ULL }, /* XSUM_XXH3_withSecret_testdata[3958] */ + { 3959, 0x0000000000000000ULL, 0xD2140DF6D84FDBC9ULL }, /* XSUM_XXH3_withSecret_testdata[3959] */ + { 3960, 0x0000000000000000ULL, 0xF1B421A351DEEB31ULL }, /* XSUM_XXH3_withSecret_testdata[3960] */ + { 3961, 0x0000000000000000ULL, 0xA88741587B91149FULL }, /* XSUM_XXH3_withSecret_testdata[3961] */ + { 3962, 0x0000000000000000ULL, 0x573F1EBA59887F2DULL }, /* XSUM_XXH3_withSecret_testdata[3962] */ + { 3963, 0x0000000000000000ULL, 0x80673C41C8A6DECBULL }, /* XSUM_XXH3_withSecret_testdata[3963] */ + { 3964, 0x0000000000000000ULL, 0x126388575C84BD3FULL }, /* XSUM_XXH3_withSecret_testdata[3964] */ + { 3965, 0x0000000000000000ULL, 0xFF6FFD276118DD59ULL }, /* XSUM_XXH3_withSecret_testdata[3965] */ + { 3966, 0x0000000000000000ULL, 0xE28FBC0EBC9EC543ULL }, /* XSUM_XXH3_withSecret_testdata[3966] */ + { 3967, 0x0000000000000000ULL, 0x478D04F28282DD16ULL }, /* XSUM_XXH3_withSecret_testdata[3967] */ + { 3968, 0x0000000000000000ULL, 0x39A88CC5AEB672C6ULL }, /* XSUM_XXH3_withSecret_testdata[3968] */ + { 3969, 0x0000000000000000ULL, 0x753907B13FB656ADULL }, /* XSUM_XXH3_withSecret_testdata[3969] */ + { 3970, 0x0000000000000000ULL, 0x8A86D19768F6F8B2ULL }, /* XSUM_XXH3_withSecret_testdata[3970] */ + { 3971, 0x0000000000000000ULL, 0xEF27D20E3A59A265ULL }, /* XSUM_XXH3_withSecret_testdata[3971] */ + { 3972, 0x0000000000000000ULL, 0x599785FBACD3F5B2ULL }, /* XSUM_XXH3_withSecret_testdata[3972] */ + { 3973, 0x0000000000000000ULL, 0x5E120D059DF126DFULL }, /* XSUM_XXH3_withSecret_testdata[3973] */ + { 3974, 0x0000000000000000ULL, 0x323341DA425D5971ULL }, /* XSUM_XXH3_withSecret_testdata[3974] */ + { 3975, 0x0000000000000000ULL, 0x66E9ED33A0FE926AULL }, /* XSUM_XXH3_withSecret_testdata[3975] */ + { 3976, 0x0000000000000000ULL, 0xDAEBE9F14941E4B1ULL }, /* XSUM_XXH3_withSecret_testdata[3976] */ + { 3977, 0x0000000000000000ULL, 0x69CB9F838670B8DDULL }, /* XSUM_XXH3_withSecret_testdata[3977] */ + { 3978, 0x0000000000000000ULL, 0x1A230CA712BE6276ULL }, /* XSUM_XXH3_withSecret_testdata[3978] */ + { 3979, 0x0000000000000000ULL, 0x1F1D2458C37728AFULL }, /* XSUM_XXH3_withSecret_testdata[3979] */ + { 3980, 0x0000000000000000ULL, 0x6F1E017185E5AD9FULL }, /* XSUM_XXH3_withSecret_testdata[3980] */ + { 3981, 0x0000000000000000ULL, 0x58DC29264CBBA138ULL }, /* XSUM_XXH3_withSecret_testdata[3981] */ + { 3982, 0x0000000000000000ULL, 0x69BCCDFF30E140B3ULL }, /* XSUM_XXH3_withSecret_testdata[3982] */ + { 3983, 0x0000000000000000ULL, 0xD4956F25E5E7F77BULL }, /* XSUM_XXH3_withSecret_testdata[3983] */ + { 3984, 0x0000000000000000ULL, 0x61516A317A9423E3ULL }, /* XSUM_XXH3_withSecret_testdata[3984] */ + { 3985, 0x0000000000000000ULL, 0x3CA5AD0A3FDE38FFULL }, /* XSUM_XXH3_withSecret_testdata[3985] */ + { 3986, 0x0000000000000000ULL, 0xDC0FE42917D33C1CULL }, /* XSUM_XXH3_withSecret_testdata[3986] */ + { 3987, 0x0000000000000000ULL, 0x552B5DD320E034F6ULL }, /* XSUM_XXH3_withSecret_testdata[3987] */ + { 3988, 0x0000000000000000ULL, 0xB4D0495D78EB47F6ULL }, /* XSUM_XXH3_withSecret_testdata[3988] */ + { 3989, 0x0000000000000000ULL, 0xD99543CC2F1660B2ULL }, /* XSUM_XXH3_withSecret_testdata[3989] */ + { 3990, 0x0000000000000000ULL, 0x1D7E294B3E7BF0D5ULL }, /* XSUM_XXH3_withSecret_testdata[3990] */ + { 3991, 0x0000000000000000ULL, 0x7FC8297D93F7C81FULL }, /* XSUM_XXH3_withSecret_testdata[3991] */ + { 3992, 0x0000000000000000ULL, 0xB417170FF1E42E8DULL }, /* XSUM_XXH3_withSecret_testdata[3992] */ + { 3993, 0x0000000000000000ULL, 0xFF8DDA8ADF2B6642ULL }, /* XSUM_XXH3_withSecret_testdata[3993] */ + { 3994, 0x0000000000000000ULL, 0x08147B80B15B89FCULL }, /* XSUM_XXH3_withSecret_testdata[3994] */ + { 3995, 0x0000000000000000ULL, 0x33ABD4C640F5BDC3ULL }, /* XSUM_XXH3_withSecret_testdata[3995] */ + { 3996, 0x0000000000000000ULL, 0x1A11C60C3BA5BEB4ULL }, /* XSUM_XXH3_withSecret_testdata[3996] */ + { 3997, 0x0000000000000000ULL, 0x9B9A5C7F0E7DF4EEULL }, /* XSUM_XXH3_withSecret_testdata[3997] */ + { 3998, 0x0000000000000000ULL, 0x9ADE7A91058E6D7DULL }, /* XSUM_XXH3_withSecret_testdata[3998] */ + { 3999, 0x0000000000000000ULL, 0x57F0B9FB8739989AULL }, /* XSUM_XXH3_withSecret_testdata[3999] */ + { 4000, 0x0000000000000000ULL, 0xE184CBF1E98AD05EULL }, /* XSUM_XXH3_withSecret_testdata[4000] */ + { 4001, 0x0000000000000000ULL, 0xE85B45D7683D9CE0ULL }, /* XSUM_XXH3_withSecret_testdata[4001] */ + { 4002, 0x0000000000000000ULL, 0x074A0C2BAB5E950BULL }, /* XSUM_XXH3_withSecret_testdata[4002] */ + { 4003, 0x0000000000000000ULL, 0xADABC1ADBC07D3AAULL }, /* XSUM_XXH3_withSecret_testdata[4003] */ + { 4004, 0x0000000000000000ULL, 0xFCEC87DD9320E9EAULL }, /* XSUM_XXH3_withSecret_testdata[4004] */ + { 4005, 0x0000000000000000ULL, 0x48BCD4503CB02471ULL }, /* XSUM_XXH3_withSecret_testdata[4005] */ + { 4006, 0x0000000000000000ULL, 0x830D0A44B28510BDULL }, /* XSUM_XXH3_withSecret_testdata[4006] */ + { 4007, 0x0000000000000000ULL, 0xD5F28186C763F8E7ULL }, /* XSUM_XXH3_withSecret_testdata[4007] */ + { 4008, 0x0000000000000000ULL, 0xDF89B3916F9E329CULL }, /* XSUM_XXH3_withSecret_testdata[4008] */ + { 4009, 0x0000000000000000ULL, 0xA77D92102028B930ULL }, /* XSUM_XXH3_withSecret_testdata[4009] */ + { 4010, 0x0000000000000000ULL, 0x0907F224A3DB335FULL }, /* XSUM_XXH3_withSecret_testdata[4010] */ + { 4011, 0x0000000000000000ULL, 0x39257686BB9BD6DBULL }, /* XSUM_XXH3_withSecret_testdata[4011] */ + { 4012, 0x0000000000000000ULL, 0x1908A83C25A09B3EULL }, /* XSUM_XXH3_withSecret_testdata[4012] */ + { 4013, 0x0000000000000000ULL, 0x1C228F0313F05621ULL }, /* XSUM_XXH3_withSecret_testdata[4013] */ + { 4014, 0x0000000000000000ULL, 0xD29D4BB6C83B212FULL }, /* XSUM_XXH3_withSecret_testdata[4014] */ + { 4015, 0x0000000000000000ULL, 0xA4EF22E7990EFCDCULL }, /* XSUM_XXH3_withSecret_testdata[4015] */ + { 4016, 0x0000000000000000ULL, 0x10DC31A45CECDF06ULL }, /* XSUM_XXH3_withSecret_testdata[4016] */ + { 4017, 0x0000000000000000ULL, 0xF8EC25F1FB6A58B9ULL }, /* XSUM_XXH3_withSecret_testdata[4017] */ + { 4018, 0x0000000000000000ULL, 0xF7DA74361E4E6608ULL }, /* XSUM_XXH3_withSecret_testdata[4018] */ + { 4019, 0x0000000000000000ULL, 0xE0D78070D8474ECDULL }, /* XSUM_XXH3_withSecret_testdata[4019] */ + { 4020, 0x0000000000000000ULL, 0xD006A9834E2719CEULL }, /* XSUM_XXH3_withSecret_testdata[4020] */ + { 4021, 0x0000000000000000ULL, 0x4B4D94054CEA6E1FULL }, /* XSUM_XXH3_withSecret_testdata[4021] */ + { 4022, 0x0000000000000000ULL, 0x765FBFBA601A57BDULL }, /* XSUM_XXH3_withSecret_testdata[4022] */ + { 4023, 0x0000000000000000ULL, 0xFBB6F86EFDEBC52DULL }, /* XSUM_XXH3_withSecret_testdata[4023] */ + { 4024, 0x0000000000000000ULL, 0x82166375EA042B26ULL }, /* XSUM_XXH3_withSecret_testdata[4024] */ + { 4025, 0x0000000000000000ULL, 0xEF3FEB717072EE91ULL }, /* XSUM_XXH3_withSecret_testdata[4025] */ + { 4026, 0x0000000000000000ULL, 0x2DD6C3FBE072545BULL }, /* XSUM_XXH3_withSecret_testdata[4026] */ + { 4027, 0x0000000000000000ULL, 0x6A2FDD401C94D1EBULL }, /* XSUM_XXH3_withSecret_testdata[4027] */ + { 4028, 0x0000000000000000ULL, 0x18136EE230F0BE7DULL }, /* XSUM_XXH3_withSecret_testdata[4028] */ + { 4029, 0x0000000000000000ULL, 0x69A9A1CF3A907C8FULL }, /* XSUM_XXH3_withSecret_testdata[4029] */ + { 4030, 0x0000000000000000ULL, 0x74C1650BE5290626ULL }, /* XSUM_XXH3_withSecret_testdata[4030] */ + { 4031, 0x0000000000000000ULL, 0x3C4D733B3DC00870ULL }, /* XSUM_XXH3_withSecret_testdata[4031] */ + { 4032, 0x0000000000000000ULL, 0x695ACEBA82CCE59CULL }, /* XSUM_XXH3_withSecret_testdata[4032] */ + { 4033, 0x0000000000000000ULL, 0x19533A9067D621E1ULL }, /* XSUM_XXH3_withSecret_testdata[4033] */ + { 4034, 0x0000000000000000ULL, 0x7E43CBAE4E42C1FBULL }, /* XSUM_XXH3_withSecret_testdata[4034] */ + { 4035, 0x0000000000000000ULL, 0xA0A7A7857C8B5B01ULL }, /* XSUM_XXH3_withSecret_testdata[4035] */ + { 4036, 0x0000000000000000ULL, 0x92F3BA8EE6DF084BULL }, /* XSUM_XXH3_withSecret_testdata[4036] */ + { 4037, 0x0000000000000000ULL, 0xAA7D2A090985E856ULL }, /* XSUM_XXH3_withSecret_testdata[4037] */ + { 4038, 0x0000000000000000ULL, 0xCE5E19CA0ACE70AAULL }, /* XSUM_XXH3_withSecret_testdata[4038] */ + { 4039, 0x0000000000000000ULL, 0x6A0DB81389E7EB64ULL }, /* XSUM_XXH3_withSecret_testdata[4039] */ + { 4040, 0x0000000000000000ULL, 0x1C428423E92CB936ULL }, /* XSUM_XXH3_withSecret_testdata[4040] */ + { 4041, 0x0000000000000000ULL, 0x2E94046589D1E6FDULL }, /* XSUM_XXH3_withSecret_testdata[4041] */ + { 4042, 0x0000000000000000ULL, 0x593811EB10E67DE3ULL }, /* XSUM_XXH3_withSecret_testdata[4042] */ + { 4043, 0x0000000000000000ULL, 0xB2D714E38B1E1C8EULL }, /* XSUM_XXH3_withSecret_testdata[4043] */ + { 4044, 0x0000000000000000ULL, 0x9DD048F3866DAC6FULL }, /* XSUM_XXH3_withSecret_testdata[4044] */ + { 4045, 0x0000000000000000ULL, 0x320CD8D172089096ULL }, /* XSUM_XXH3_withSecret_testdata[4045] */ + { 4046, 0x0000000000000000ULL, 0x2A29BF44AF69A300ULL }, /* XSUM_XXH3_withSecret_testdata[4046] */ + { 4047, 0x0000000000000000ULL, 0xC3D96538AD370D5EULL }, /* XSUM_XXH3_withSecret_testdata[4047] */ + { 4048, 0x0000000000000000ULL, 0xE659FE2A37FDB433ULL }, /* XSUM_XXH3_withSecret_testdata[4048] */ + { 4049, 0x0000000000000000ULL, 0xD66D84E01673DF06ULL }, /* XSUM_XXH3_withSecret_testdata[4049] */ + { 4050, 0x0000000000000000ULL, 0xCFC21220DEA96813ULL }, /* XSUM_XXH3_withSecret_testdata[4050] */ + { 4051, 0x0000000000000000ULL, 0x2EC201721E40001FULL }, /* XSUM_XXH3_withSecret_testdata[4051] */ + { 4052, 0x0000000000000000ULL, 0xE5255D2DC8B240B6ULL }, /* XSUM_XXH3_withSecret_testdata[4052] */ + { 4053, 0x0000000000000000ULL, 0x4444D1FC699709E0ULL }, /* XSUM_XXH3_withSecret_testdata[4053] */ + { 4054, 0x0000000000000000ULL, 0xCD5F6DB7C0C22D88ULL }, /* XSUM_XXH3_withSecret_testdata[4054] */ + { 4055, 0x0000000000000000ULL, 0x97C72BF132FC429AULL }, /* XSUM_XXH3_withSecret_testdata[4055] */ + { 4056, 0x0000000000000000ULL, 0xF18A47875C8FDC63ULL }, /* XSUM_XXH3_withSecret_testdata[4056] */ + { 4057, 0x0000000000000000ULL, 0x11A76F8B731BE563ULL }, /* XSUM_XXH3_withSecret_testdata[4057] */ + { 4058, 0x0000000000000000ULL, 0xDA3D9AC8AC1BC359ULL }, /* XSUM_XXH3_withSecret_testdata[4058] */ + { 4059, 0x0000000000000000ULL, 0xD050D2E1C6187F83ULL }, /* XSUM_XXH3_withSecret_testdata[4059] */ + { 4060, 0x0000000000000000ULL, 0xA2B9C98FF937B9F2ULL }, /* XSUM_XXH3_withSecret_testdata[4060] */ + { 4061, 0x0000000000000000ULL, 0xE824E15F45FCE2DFULL }, /* XSUM_XXH3_withSecret_testdata[4061] */ + { 4062, 0x0000000000000000ULL, 0xF46BF3281D9C12CBULL }, /* XSUM_XXH3_withSecret_testdata[4062] */ + { 4063, 0x0000000000000000ULL, 0xBA926F8C9CACD028ULL }, /* XSUM_XXH3_withSecret_testdata[4063] */ + { 4064, 0x0000000000000000ULL, 0x974C54681B33886CULL }, /* XSUM_XXH3_withSecret_testdata[4064] */ + { 4065, 0x0000000000000000ULL, 0x2A95F80B0C3CCCB1ULL }, /* XSUM_XXH3_withSecret_testdata[4065] */ + { 4066, 0x0000000000000000ULL, 0x43B843C1A74C8DFAULL }, /* XSUM_XXH3_withSecret_testdata[4066] */ + { 4067, 0x0000000000000000ULL, 0x32534850ECCF80FEULL }, /* XSUM_XXH3_withSecret_testdata[4067] */ + { 4068, 0x0000000000000000ULL, 0xAD4E9636F7F31E69ULL }, /* XSUM_XXH3_withSecret_testdata[4068] */ + { 4069, 0x0000000000000000ULL, 0xCD00CB1BE568FDE6ULL }, /* XSUM_XXH3_withSecret_testdata[4069] */ + { 4070, 0x0000000000000000ULL, 0xE46940245DBB7272ULL }, /* XSUM_XXH3_withSecret_testdata[4070] */ + { 4071, 0x0000000000000000ULL, 0x13D146F7570C6044ULL }, /* XSUM_XXH3_withSecret_testdata[4071] */ + { 4072, 0x0000000000000000ULL, 0x7A956B6CB3576E14ULL }, /* XSUM_XXH3_withSecret_testdata[4072] */ + { 4073, 0x0000000000000000ULL, 0xEC83FCBD3ACF3B26ULL }, /* XSUM_XXH3_withSecret_testdata[4073] */ + { 4074, 0x0000000000000000ULL, 0x16AC17FD7088386EULL }, /* XSUM_XXH3_withSecret_testdata[4074] */ + { 4075, 0x0000000000000000ULL, 0x83F54BB36686D6D9ULL }, /* XSUM_XXH3_withSecret_testdata[4075] */ + { 4076, 0x0000000000000000ULL, 0xBE63E230272CA46AULL }, /* XSUM_XXH3_withSecret_testdata[4076] */ + { 4077, 0x0000000000000000ULL, 0x28E6AEE6ACB9630BULL }, /* XSUM_XXH3_withSecret_testdata[4077] */ + { 4078, 0x0000000000000000ULL, 0x1F9D0601A901C88BULL }, /* XSUM_XXH3_withSecret_testdata[4078] */ + { 4079, 0x0000000000000000ULL, 0xAE20E4E718E23A10ULL }, /* XSUM_XXH3_withSecret_testdata[4079] */ + { 4080, 0x0000000000000000ULL, 0xB25FC769707558F5ULL }, /* XSUM_XXH3_withSecret_testdata[4080] */ + { 4081, 0x0000000000000000ULL, 0x1A21C8D19774A134ULL }, /* XSUM_XXH3_withSecret_testdata[4081] */ + { 4082, 0x0000000000000000ULL, 0xED0038B9B1E99BCEULL }, /* XSUM_XXH3_withSecret_testdata[4082] */ + { 4083, 0x0000000000000000ULL, 0x277C62825BFD4071ULL }, /* XSUM_XXH3_withSecret_testdata[4083] */ + { 4084, 0x0000000000000000ULL, 0x02F57766E9409B19ULL }, /* XSUM_XXH3_withSecret_testdata[4084] */ + { 4085, 0x0000000000000000ULL, 0xD7C6EF5A72071921ULL }, /* XSUM_XXH3_withSecret_testdata[4085] */ + { 4086, 0x0000000000000000ULL, 0x83615114B601772EULL }, /* XSUM_XXH3_withSecret_testdata[4086] */ + { 4087, 0x0000000000000000ULL, 0x625139954D12967FULL }, /* XSUM_XXH3_withSecret_testdata[4087] */ + { 4088, 0x0000000000000000ULL, 0x20260B56D71BD17AULL }, /* XSUM_XXH3_withSecret_testdata[4088] */ + { 4089, 0x0000000000000000ULL, 0x3ED7823D39AA50A9ULL }, /* XSUM_XXH3_withSecret_testdata[4089] */ + { 4090, 0x0000000000000000ULL, 0xDEEB68EC8D3B620DULL }, /* XSUM_XXH3_withSecret_testdata[4090] */ + { 4091, 0x0000000000000000ULL, 0xC043260D09205B7DULL }, /* XSUM_XXH3_withSecret_testdata[4091] */ + { 4092, 0x0000000000000000ULL, 0xAC6A09090419D299ULL }, /* XSUM_XXH3_withSecret_testdata[4092] */ + { 4093, 0x0000000000000000ULL, 0xC338BC98DE2FD265ULL }, /* XSUM_XXH3_withSecret_testdata[4093] */ + { 4094, 0x0000000000000000ULL, 0x552205B28FB1448FULL }, /* XSUM_XXH3_withSecret_testdata[4094] */ + { 4095, 0x0000000000000000ULL, 0xC2D888327F91A534ULL }, /* XSUM_XXH3_withSecret_testdata[4095] */ + { 4096, 0x0000000000000000ULL, 0x80C043073074A679ULL }, /* XSUM_XXH3_withSecret_testdata[4096] */ + { 4097, 0x0000000000000000ULL, 0x365C254DC189E688ULL }, /* XSUM_XXH3_withSecret_testdata[4097] */ + { 4098, 0x0000000000000000ULL, 0x6E28FBB5DC82753AULL }, /* XSUM_XXH3_withSecret_testdata[4098] */ + { 4099, 0x0000000000000000ULL, 0x1647C7E776D79A08ULL }, /* XSUM_XXH3_withSecret_testdata[4099] */ + { 4100, 0x0000000000000000ULL, 0x75C6ED860F1F0A29ULL }, /* XSUM_XXH3_withSecret_testdata[4100] */ + { 4101, 0x0000000000000000ULL, 0x9E4E03BED42CA656ULL }, /* XSUM_XXH3_withSecret_testdata[4101] */ + { 4102, 0x0000000000000000ULL, 0xAA5368B6B20CA18AULL }, /* XSUM_XXH3_withSecret_testdata[4102] */ + { 4103, 0x0000000000000000ULL, 0xE98606A8E305E53BULL }, /* XSUM_XXH3_withSecret_testdata[4103] */ + { 4104, 0x0000000000000000ULL, 0x227F43A44EABCF0BULL }, /* XSUM_XXH3_withSecret_testdata[4104] */ + { 4105, 0x0000000000000000ULL, 0x045E5F690BAE4E7BULL }, /* XSUM_XXH3_withSecret_testdata[4105] */ + { 4106, 0x0000000000000000ULL, 0x0A17834E8D0D9A22ULL }, /* XSUM_XXH3_withSecret_testdata[4106] */ + { 4107, 0x0000000000000000ULL, 0x3637F62A915BEA14ULL }, /* XSUM_XXH3_withSecret_testdata[4107] */ + { 4108, 0x0000000000000000ULL, 0xCE88302E57251D0CULL }, /* XSUM_XXH3_withSecret_testdata[4108] */ + { 4109, 0x0000000000000000ULL, 0xE4BE4F80013DBAE0ULL }, /* XSUM_XXH3_withSecret_testdata[4109] */ + { 4110, 0x0000000000000000ULL, 0x6F1CF2ACD36F6174ULL }, /* XSUM_XXH3_withSecret_testdata[4110] */ + { 4111, 0x0000000000000000ULL, 0x187CFF657B38CAEEULL }, /* XSUM_XXH3_withSecret_testdata[4111] */ + { 4112, 0x0000000000000000ULL, 0xB7875A044BFBAF6FULL }, /* XSUM_XXH3_withSecret_testdata[4112] */ + { 4113, 0x0000000000000000ULL, 0xAE64B4E0AA6D9082ULL }, /* XSUM_XXH3_withSecret_testdata[4113] */ + { 4114, 0x0000000000000000ULL, 0xB9AC502202937977ULL }, /* XSUM_XXH3_withSecret_testdata[4114] */ + { 4115, 0x0000000000000000ULL, 0x1E32D6F34229408EULL }, /* XSUM_XXH3_withSecret_testdata[4115] */ + { 4116, 0x0000000000000000ULL, 0x96C8D36AFC955CF6ULL }, /* XSUM_XXH3_withSecret_testdata[4116] */ + { 4117, 0x0000000000000000ULL, 0x8087ABF9BDAD6C57ULL }, /* XSUM_XXH3_withSecret_testdata[4117] */ + { 4118, 0x0000000000000000ULL, 0xDB5EDE0ED22BF4BFULL }, /* XSUM_XXH3_withSecret_testdata[4118] */ + { 4119, 0x0000000000000000ULL, 0xCC01A835D3DE330DULL }, /* XSUM_XXH3_withSecret_testdata[4119] */ + { 4120, 0x0000000000000000ULL, 0x25A2490F71CC7B71ULL }, /* XSUM_XXH3_withSecret_testdata[4120] */ + { 4121, 0x0000000000000000ULL, 0xEDF7047605F28040ULL }, /* XSUM_XXH3_withSecret_testdata[4121] */ + { 4122, 0x0000000000000000ULL, 0x18AC9AC377A0EFC3ULL }, /* XSUM_XXH3_withSecret_testdata[4122] */ + { 4123, 0x0000000000000000ULL, 0xBC2DF7ABA89807A3ULL }, /* XSUM_XXH3_withSecret_testdata[4123] */ + { 4124, 0x0000000000000000ULL, 0x0E9843295ABA9534ULL }, /* XSUM_XXH3_withSecret_testdata[4124] */ + { 4125, 0x0000000000000000ULL, 0xF63369AFF35C62A8ULL }, /* XSUM_XXH3_withSecret_testdata[4125] */ + { 4126, 0x0000000000000000ULL, 0x144948966B9E5FB3ULL }, /* XSUM_XXH3_withSecret_testdata[4126] */ + { 4127, 0x0000000000000000ULL, 0xFC3E5F7090065C0BULL }, /* XSUM_XXH3_withSecret_testdata[4127] */ + { 4128, 0x0000000000000000ULL, 0x8764A90EAD5AAA4BULL }, /* XSUM_XXH3_withSecret_testdata[4128] */ + { 4129, 0x0000000000000000ULL, 0x49037C823D75F316ULL }, /* XSUM_XXH3_withSecret_testdata[4129] */ + { 4130, 0x0000000000000000ULL, 0xB7B87312F9AA9E2FULL }, /* XSUM_XXH3_withSecret_testdata[4130] */ + { 4131, 0x0000000000000000ULL, 0x5A0216171E94CA70ULL }, /* XSUM_XXH3_withSecret_testdata[4131] */ + { 4132, 0x0000000000000000ULL, 0x71B88242877B00CFULL }, /* XSUM_XXH3_withSecret_testdata[4132] */ + { 4133, 0x0000000000000000ULL, 0x933452561A285618ULL }, /* XSUM_XXH3_withSecret_testdata[4133] */ + { 4134, 0x0000000000000000ULL, 0xADC07705C8ECACF8ULL }, /* XSUM_XXH3_withSecret_testdata[4134] */ + { 4135, 0x0000000000000000ULL, 0xDFE8C72B4BB06B17ULL }, /* XSUM_XXH3_withSecret_testdata[4135] */ + { 4136, 0x0000000000000000ULL, 0xB494370C708119B7ULL }, /* XSUM_XXH3_withSecret_testdata[4136] */ + { 4137, 0x0000000000000000ULL, 0x2521A15362F39765ULL }, /* XSUM_XXH3_withSecret_testdata[4137] */ + { 4138, 0x0000000000000000ULL, 0xDA6491BE0377B78AULL }, /* XSUM_XXH3_withSecret_testdata[4138] */ + { 4139, 0x0000000000000000ULL, 0xDDE3551DA0B0B16FULL }, /* XSUM_XXH3_withSecret_testdata[4139] */ + { 4140, 0x0000000000000000ULL, 0x66EEEBDF6FBE67B5ULL }, /* XSUM_XXH3_withSecret_testdata[4140] */ + { 4141, 0x0000000000000000ULL, 0xF69061DEB5B18F0DULL }, /* XSUM_XXH3_withSecret_testdata[4141] */ + { 4142, 0x0000000000000000ULL, 0xEC0E8775C7613779ULL }, /* XSUM_XXH3_withSecret_testdata[4142] */ + { 4143, 0x0000000000000000ULL, 0x1F46C226E82FC9A4ULL }, /* XSUM_XXH3_withSecret_testdata[4143] */ + { 4144, 0x0000000000000000ULL, 0x11370EF7CCBDF4C2ULL }, /* XSUM_XXH3_withSecret_testdata[4144] */ + { 4145, 0x0000000000000000ULL, 0x7CC7E7A1BE2D8411ULL }, /* XSUM_XXH3_withSecret_testdata[4145] */ + { 4146, 0x0000000000000000ULL, 0xBA101C10F3ED8F3BULL }, /* XSUM_XXH3_withSecret_testdata[4146] */ + { 4147, 0x0000000000000000ULL, 0x9927A22BB5DEF0F1ULL }, /* XSUM_XXH3_withSecret_testdata[4147] */ + { 4148, 0x0000000000000000ULL, 0x77B2C7E8C3F7816DULL }, /* XSUM_XXH3_withSecret_testdata[4148] */ + { 4149, 0x0000000000000000ULL, 0x04ED012D897B2195ULL }, /* XSUM_XXH3_withSecret_testdata[4149] */ + { 4150, 0x0000000000000000ULL, 0x6815B6C81F5C6E09ULL }, /* XSUM_XXH3_withSecret_testdata[4150] */ + { 4151, 0x0000000000000000ULL, 0xB7C436CAA4DAE17CULL }, /* XSUM_XXH3_withSecret_testdata[4151] */ + { 4152, 0x0000000000000000ULL, 0x86D16BB9CECD85DEULL }, /* XSUM_XXH3_withSecret_testdata[4152] */ + { 4153, 0x0000000000000000ULL, 0x4C0AF3A16D2D68D9ULL }, /* XSUM_XXH3_withSecret_testdata[4153] */ + { 4154, 0x0000000000000000ULL, 0x93C1EDFD5C9BE932ULL }, /* XSUM_XXH3_withSecret_testdata[4154] */ + { 4155, 0x0000000000000000ULL, 0xB6E82601450A902AULL }, /* XSUM_XXH3_withSecret_testdata[4155] */ + { 4156, 0x0000000000000000ULL, 0x1A27D4B001A828A1ULL }, /* XSUM_XXH3_withSecret_testdata[4156] */ + { 4157, 0x0000000000000000ULL, 0xC234BC46C88914E8ULL }, /* XSUM_XXH3_withSecret_testdata[4157] */ + { 4158, 0x0000000000000000ULL, 0x6DEB5E1719BA9E57ULL }, /* XSUM_XXH3_withSecret_testdata[4158] */ + { 4159, 0x0000000000000000ULL, 0xB12AB27B68460462ULL }, /* XSUM_XXH3_withSecret_testdata[4159] */ + { 4160, 0x0000000000000000ULL, 0x7CD56BF8CB910475ULL }, /* XSUM_XXH3_withSecret_testdata[4160] */ +}; +static const XSUM_testdata128_t XSUM_XXH128_testdata[] = { + { 0, 0x0000000000000000ULL, { 0x6001C324468D497FULL, 0x99AA06D3014798D8ULL } }, /* XSUM_XXH128_testdata[0] */ + { 0, 0x000000009E3779B1ULL, { 0x5444F7869C671AB0ULL, 0x92220AE55E14AB50ULL } }, /* XSUM_XXH128_testdata[1] */ + { 0, 0x9E3779B185EBCA8DULL, { 0xA986DFC5D7605BFEULL, 0x00FEAA732A3CE25EULL } }, /* XSUM_XXH128_testdata[2] */ + { 1, 0x0000000000000000ULL, { 0xC44BDFF4074EECDBULL, 0xA6CD5E9392000F6AULL } }, /* XSUM_XXH128_testdata[3] */ + { 1, 0x000000009E3779B1ULL, { 0xB53D5557E7F76F8DULL, 0x89B99554BA22467CULL } }, /* XSUM_XXH128_testdata[4] */ + { 1, 0x9E3779B185EBCA8DULL, { 0x032BE332DD766EF8ULL, 0x20E49ABCC53B3842ULL } }, /* XSUM_XXH128_testdata[5] */ + { 2, 0x0000000000000000ULL, { 0x7A9978044CB8A8BBULL, 0x76750C3C7BF95668ULL } }, /* XSUM_XXH128_testdata[6] */ + { 2, 0x000000009E3779B1ULL, { 0x8295910C7638B180ULL, 0x8B75A791EC034873ULL } }, /* XSUM_XXH128_testdata[7] */ + { 2, 0x9E3779B185EBCA8DULL, { 0x764B35C90519AD88ULL, 0x7B96E6A600DAE67DULL } }, /* XSUM_XXH128_testdata[8] */ + { 3, 0x0000000000000000ULL, { 0x54247382A8D6B94DULL, 0x20EFC49FF02422EAULL } }, /* XSUM_XXH128_testdata[9] */ + { 3, 0x000000009E3779B1ULL, { 0xF173D14DAD53A5DCULL, 0x48F82C2FE0ABD468ULL } }, /* XSUM_XXH128_testdata[10] */ + { 3, 0x9E3779B185EBCA8DULL, { 0x634B8990B4976373ULL, 0x1C7ECF6A308CF00EULL } }, /* XSUM_XXH128_testdata[11] */ + { 4, 0x0000000000000000ULL, { 0x2E7D8D6876A39FE9ULL, 0x970D585AC632BF8EULL } }, /* XSUM_XXH128_testdata[12] */ + { 4, 0x000000009E3779B1ULL, { 0xEF78D5C489CFE10BULL, 0x7170492A2AA08992ULL } }, /* XSUM_XXH128_testdata[13] */ + { 4, 0x9E3779B185EBCA8DULL, { 0xBFAF51F1E67E0B0FULL, 0x3D53E5DFD837D927ULL } }, /* XSUM_XXH128_testdata[14] */ + { 5, 0x0000000000000000ULL, { 0x057C7ED2C01FA1D1ULL, 0x62ED587687606B4EULL } }, /* XSUM_XXH128_testdata[15] */ + { 5, 0x000000009E3779B1ULL, { 0xB1939271FE533C42ULL, 0xB36459AEB18B9C2AULL } }, /* XSUM_XXH128_testdata[16] */ + { 5, 0x9E3779B185EBCA8DULL, { 0x67A0C170D32090D7ULL, 0xFAC738E8FEC37715ULL } }, /* XSUM_XXH128_testdata[17] */ + { 6, 0x0000000000000000ULL, { 0x3E7039BDDA43CFC6ULL, 0x082AFE0B8162D12AULL } }, /* XSUM_XXH128_testdata[18] */ + { 6, 0x000000009E3779B1ULL, { 0x269D8F70BE98856EULL, 0x5A865B5389ABD2B1ULL } }, /* XSUM_XXH128_testdata[19] */ + { 6, 0x9E3779B185EBCA8DULL, { 0xC5B54D56038E4E40ULL, 0x014BD95A51CA5DDBULL } }, /* XSUM_XXH128_testdata[20] */ + { 7, 0x0000000000000000ULL, { 0x081C22DD284A2F0AULL, 0xDD9B6039F79EC416ULL } }, /* XSUM_XXH128_testdata[21] */ + { 7, 0x000000009E3779B1ULL, { 0x8BB545DD2D2C9C7AULL, 0x0BF1BE779AAC3093ULL } }, /* XSUM_XXH128_testdata[22] */ + { 7, 0x9E3779B185EBCA8DULL, { 0xD5DA197923938E53ULL, 0x833CBA0282DD6619ULL } }, /* XSUM_XXH128_testdata[23] */ + { 8, 0x0000000000000000ULL, { 0x64C69CAB4BB21DC5ULL, 0x47A7F080D82BB456ULL } }, /* XSUM_XXH128_testdata[24] */ + { 8, 0x000000009E3779B1ULL, { 0x5F462F3DE2E8B940ULL, 0xF959013232655FF1ULL } }, /* XSUM_XXH128_testdata[25] */ + { 8, 0x9E3779B185EBCA8DULL, { 0x7B29471DC729B5FFULL, 0xF50CEC145BCD5C5AULL } }, /* XSUM_XXH128_testdata[26] */ + { 9, 0x0000000000000000ULL, { 0xED7CCBC501EB7501ULL, 0x564EF6078950D457ULL } }, /* XSUM_XXH128_testdata[27] */ + { 9, 0x000000009E3779B1ULL, { 0x07DE00B45EEE033AULL, 0x75FB6D1BD353B45CULL } }, /* XSUM_XXH128_testdata[28] */ + { 9, 0x9E3779B185EBCA8DULL, { 0xAEF5DFC0AC9F9044ULL, 0x6B380B43FFA61042ULL } }, /* XSUM_XXH128_testdata[29] */ + { 10, 0x0000000000000000ULL, { 0x7A16D0A993B929B1ULL, 0xC6F795961D7A1955ULL } }, /* XSUM_XXH128_testdata[30] */ + { 10, 0x000000009E3779B1ULL, { 0x933F24D3B1C7BFFEULL, 0xAF490E889502AEEEULL } }, /* XSUM_XXH128_testdata[31] */ + { 10, 0x9E3779B185EBCA8DULL, { 0xFC69C7D7394CC927ULL, 0x977507C07D31FB34ULL } }, /* XSUM_XXH128_testdata[32] */ + { 11, 0x0000000000000000ULL, { 0x58378517E765AE7CULL, 0x566645F72F871059ULL } }, /* XSUM_XXH128_testdata[33] */ + { 11, 0x000000009E3779B1ULL, { 0xFA0B5146C8BEB4AEULL, 0xBC5F90B7F608A4C1ULL } }, /* XSUM_XXH128_testdata[34] */ + { 11, 0x9E3779B185EBCA8DULL, { 0x70A352D765D412DFULL, 0x6CBBD3B333F3D9FDULL } }, /* XSUM_XXH128_testdata[35] */ + { 12, 0x0000000000000000ULL, { 0x061A192713F69AD9ULL, 0x6E3EFD8FC7802B18ULL } }, /* XSUM_XXH128_testdata[36] */ + { 12, 0x000000009E3779B1ULL, { 0x9BE9F9A67F3C7DFBULL, 0xD7E09D518A3405D3ULL } }, /* XSUM_XXH128_testdata[37] */ + { 12, 0x9E3779B185EBCA8DULL, { 0x5D92B5D7190B12D1ULL, 0xFF0D60ACD02ED401ULL } }, /* XSUM_XXH128_testdata[38] */ + { 13, 0x0000000000000000ULL, { 0x4CB46E6932D0BCE2ULL, 0x30D4B04DDA0E2514ULL } }, /* XSUM_XXH128_testdata[39] */ + { 13, 0x000000009E3779B1ULL, { 0x78303CD93AEC2562ULL, 0x58F072146B6BBABAULL } }, /* XSUM_XXH128_testdata[40] */ + { 13, 0x9E3779B185EBCA8DULL, { 0xAB0AF7C25373B4FDULL, 0x70F1E535CAE27ABCULL } }, /* XSUM_XXH128_testdata[41] */ + { 14, 0x0000000000000000ULL, { 0x352B80797CDA6247ULL, 0xB2623398AA0BDA1EULL } }, /* XSUM_XXH128_testdata[42] */ + { 14, 0x000000009E3779B1ULL, { 0x50A29C20D77793F9ULL, 0x269307BCF6EF20ADULL } }, /* XSUM_XXH128_testdata[43] */ + { 14, 0x9E3779B185EBCA8DULL, { 0x0194C9941B36FDAAULL, 0xD335DBFEB5CF4521ULL } }, /* XSUM_XXH128_testdata[44] */ + { 15, 0x0000000000000000ULL, { 0x958955DF1889E6BCULL, 0xC402609E57EE5772ULL } }, /* XSUM_XXH128_testdata[45] */ + { 15, 0x000000009E3779B1ULL, { 0x69B291E8B041C577ULL, 0xCBF97D053781B18EULL } }, /* XSUM_XXH128_testdata[46] */ + { 15, 0x9E3779B185EBCA8DULL, { 0x6A0A9CA5FD33CB9DULL, 0x48864EF580A95F6BULL } }, /* XSUM_XXH128_testdata[47] */ + { 16, 0x0000000000000000ULL, { 0x562980258A998629ULL, 0xC68C368ECF8A9C05ULL } }, /* XSUM_XXH128_testdata[48] */ + { 16, 0x000000009E3779B1ULL, { 0xB07EEEAB4C56392BULL, 0x3767C90D0CDBB93DULL } }, /* XSUM_XXH128_testdata[49] */ + { 16, 0x9E3779B185EBCA8DULL, { 0x0346D13A7A5498C7ULL, 0x6FFCB80CD33085C8ULL } }, /* XSUM_XXH128_testdata[50] */ + { 17, 0x0000000000000000ULL, { 0xABBC12D11973D7DBULL, 0x955FA78643ED3669ULL } }, /* XSUM_XXH128_testdata[51] */ + { 17, 0x000000009E3779B1ULL, { 0x3CC9FF6CAE79ACCBULL, 0x99E7C628E75D6431ULL } }, /* XSUM_XXH128_testdata[52] */ + { 17, 0x9E3779B185EBCA8DULL, { 0x980A14119985A7DFULL, 0xD77681219E464828ULL } }, /* XSUM_XXH128_testdata[53] */ + { 18, 0x0000000000000000ULL, { 0xD272009BC1C018B9ULL, 0x99F724B66C8B4115ULL } }, /* XSUM_XXH128_testdata[54] */ + { 18, 0x000000009E3779B1ULL, { 0xAC613C1A1D945851ULL, 0xEA7C95A5A507DA9FULL } }, /* XSUM_XXH128_testdata[55] */ + { 18, 0x9E3779B185EBCA8DULL, { 0x0FD13EC2501CE593ULL, 0x59462EA2633F1C7DULL } }, /* XSUM_XXH128_testdata[56] */ + { 19, 0x0000000000000000ULL, { 0x40D66843B45774ECULL, 0x33F5B051B2DF1F3AULL } }, /* XSUM_XXH128_testdata[57] */ + { 19, 0x000000009E3779B1ULL, { 0x5A5B2D8E4E240C8AULL, 0x23430DE45038FE7BULL } }, /* XSUM_XXH128_testdata[58] */ + { 19, 0x9E3779B185EBCA8DULL, { 0x827A46D263649996ULL, 0x3A49715B71BA3E38ULL } }, /* XSUM_XXH128_testdata[59] */ + { 20, 0x0000000000000000ULL, { 0xD843A069A9634CAFULL, 0x4A508B9B1DFC7269ULL } }, /* XSUM_XXH128_testdata[60] */ + { 20, 0x000000009E3779B1ULL, { 0x2CCB9CF1A241BC3EULL, 0x309B4E9C668606ACULL } }, /* XSUM_XXH128_testdata[61] */ + { 20, 0x9E3779B185EBCA8DULL, { 0xF2161017D0069F63ULL, 0xE80C8802A9A424DBULL } }, /* XSUM_XXH128_testdata[62] */ + { 21, 0x0000000000000000ULL, { 0xE77C143E68B66411ULL, 0xBCB0B59AA86A1B79ULL } }, /* XSUM_XXH128_testdata[63] */ + { 21, 0x000000009E3779B1ULL, { 0xB929B8D8205EA898ULL, 0xBFA036B2ECDD284FULL } }, /* XSUM_XXH128_testdata[64] */ + { 21, 0x9E3779B185EBCA8DULL, { 0xF1BECCFC27143576ULL, 0x10EC5336E3DDFEA5ULL } }, /* XSUM_XXH128_testdata[65] */ + { 22, 0x0000000000000000ULL, { 0x82E0DE0C7C3D3DA7ULL, 0xA3CAB9714DC85D5AULL } }, /* XSUM_XXH128_testdata[66] */ + { 22, 0x000000009E3779B1ULL, { 0x2C7D475989C580C6ULL, 0x3B92C4B460EFD478ULL } }, /* XSUM_XXH128_testdata[67] */ + { 22, 0x9E3779B185EBCA8DULL, { 0x21D42AD97DE5910AULL, 0xFF5500907F902AA8ULL } }, /* XSUM_XXH128_testdata[68] */ + { 23, 0x0000000000000000ULL, { 0x58C17078CBED59AAULL, 0x27C2B20399274F53ULL } }, /* XSUM_XXH128_testdata[69] */ + { 23, 0x000000009E3779B1ULL, { 0x6AF3980FDF263433ULL, 0xDDE358EE2275EF89ULL } }, /* XSUM_XXH128_testdata[70] */ + { 23, 0x9E3779B185EBCA8DULL, { 0xFA5EB6CD80D39652ULL, 0xB5AB4A1B01DB35EDULL } }, /* XSUM_XXH128_testdata[71] */ + { 24, 0x0000000000000000ULL, { 0x1E7044D28B1B901DULL, 0x0CE966E4678D3761ULL } }, /* XSUM_XXH128_testdata[72] */ + { 24, 0x000000009E3779B1ULL, { 0xD7304C54EBAD40A9ULL, 0x3162026714A6A243ULL } }, /* XSUM_XXH128_testdata[73] */ + { 24, 0x9E3779B185EBCA8DULL, { 0xC6CBF92A70680B19ULL, 0xD7895DED1F62559DULL } }, /* XSUM_XXH128_testdata[74] */ + { 25, 0x0000000000000000ULL, { 0x77211AE67471B0A7ULL, 0xA4BDB1865649AED0ULL } }, /* XSUM_XXH128_testdata[75] */ + { 25, 0x000000009E3779B1ULL, { 0xFFCE4EB92CC44797ULL, 0x2120B240C1DC8D7EULL } }, /* XSUM_XXH128_testdata[76] */ + { 25, 0x9E3779B185EBCA8DULL, { 0x2B80596429D95A2BULL, 0xCD6DABFB70717C25ULL } }, /* XSUM_XXH128_testdata[77] */ + { 26, 0x0000000000000000ULL, { 0x81CAE35FBE6ABF9CULL, 0x84F1267259C7FC84ULL } }, /* XSUM_XXH128_testdata[78] */ + { 26, 0x000000009E3779B1ULL, { 0xEFAFAAB665BEAE1EULL, 0xF2B054C222111CADULL } }, /* XSUM_XXH128_testdata[79] */ + { 26, 0x9E3779B185EBCA8DULL, { 0x488502F1F20720D8ULL, 0xA1345C1453F528DEULL } }, /* XSUM_XXH128_testdata[80] */ + { 27, 0x0000000000000000ULL, { 0xF78B016BC82D71FCULL, 0xAB3ADAF1F30AF503ULL } }, /* XSUM_XXH128_testdata[81] */ + { 27, 0x000000009E3779B1ULL, { 0xCFDA513A7637EC48ULL, 0xD85E2A7059915184ULL } }, /* XSUM_XXH128_testdata[82] */ + { 27, 0x9E3779B185EBCA8DULL, { 0x62A3EB7CC46654F5ULL, 0x6FFC100FDC24E063ULL } }, /* XSUM_XXH128_testdata[83] */ + { 28, 0x0000000000000000ULL, { 0x39EEB5D6C8E9740DULL, 0xCD6D9A03F337B69CULL } }, /* XSUM_XXH128_testdata[84] */ + { 28, 0x000000009E3779B1ULL, { 0x46FBFC81F7229D2CULL, 0x32453012F76F97CDULL } }, /* XSUM_XXH128_testdata[85] */ + { 28, 0x9E3779B185EBCA8DULL, { 0xC0DE900869819B46ULL, 0xA3E8F398B5BCED4CULL } }, /* XSUM_XXH128_testdata[86] */ + { 29, 0x0000000000000000ULL, { 0x0B277D446423E16BULL, 0x009DFA0AE42A877CULL } }, /* XSUM_XXH128_testdata[87] */ + { 29, 0x000000009E3779B1ULL, { 0x962448A388905C28ULL, 0xA74133ECE5BD3B8DULL } }, /* XSUM_XXH128_testdata[88] */ + { 29, 0x9E3779B185EBCA8DULL, { 0xC976FEC2FE296004ULL, 0x536B48553F9B9B5CULL } }, /* XSUM_XXH128_testdata[89] */ + { 30, 0x0000000000000000ULL, { 0x732547CFF1735247ULL, 0xF28CE57053734D84ULL } }, /* XSUM_XXH128_testdata[90] */ + { 30, 0x000000009E3779B1ULL, { 0x4C222160E2C53BD3ULL, 0x9C8389843CEA52DAULL } }, /* XSUM_XXH128_testdata[91] */ + { 30, 0x9E3779B185EBCA8DULL, { 0x950FCD00FEDF0E67ULL, 0x06603225FB1F2D93ULL } }, /* XSUM_XXH128_testdata[92] */ + { 31, 0x0000000000000000ULL, { 0xEC8365E74DC00653ULL, 0x301048A7AB476D21ULL } }, /* XSUM_XXH128_testdata[93] */ + { 31, 0x000000009E3779B1ULL, { 0x43750505AA7694E2ULL, 0x767FCAF8AF696DA5ULL } }, /* XSUM_XXH128_testdata[94] */ + { 31, 0x9E3779B185EBCA8DULL, { 0xD74750F8952360C3ULL, 0x4639CF7B77BA9096ULL } }, /* XSUM_XXH128_testdata[95] */ + { 32, 0x0000000000000000ULL, { 0x278410A17595E3F9ULL, 0x98FC6458710DC2E8ULL } }, /* XSUM_XXH128_testdata[96] */ + { 32, 0x000000009E3779B1ULL, { 0x3589C5CD99CD6267ULL, 0x326D21E5BCD395DEULL } }, /* XSUM_XXH128_testdata[97] */ + { 32, 0x9E3779B185EBCA8DULL, { 0x0054E82631CEF166ULL, 0xCC587E4FCDB86BC5ULL } }, /* XSUM_XXH128_testdata[98] */ + { 33, 0x0000000000000000ULL, { 0xE593BC4E5914C9D1ULL, 0x3103C192CEAA2DEDULL } }, /* XSUM_XXH128_testdata[99] */ + { 33, 0x000000009E3779B1ULL, { 0x5A785FEC2AE2B28FULL, 0x1B9738AFBE6CBB38ULL } }, /* XSUM_XXH128_testdata[100] */ + { 33, 0x9E3779B185EBCA8DULL, { 0xC361D36CEA597C31ULL, 0x21273C8190C645CDULL } }, /* XSUM_XXH128_testdata[101] */ + { 34, 0x0000000000000000ULL, { 0x709408E618E1B8D4ULL, 0x85B0411F3A9AD312ULL } }, /* XSUM_XXH128_testdata[102] */ + { 34, 0x000000009E3779B1ULL, { 0x3A28C693FBD9EF17ULL, 0x59F40DCD42C6BD3EULL } }, /* XSUM_XXH128_testdata[103] */ + { 34, 0x9E3779B185EBCA8DULL, { 0xF1C0437227664C2FULL, 0x9BF21A6DF8F271E1ULL } }, /* XSUM_XXH128_testdata[104] */ + { 35, 0x0000000000000000ULL, { 0x36A6128E66AB7184ULL, 0x6ADA4CDFD5C5717DULL } }, /* XSUM_XXH128_testdata[105] */ + { 35, 0x000000009E3779B1ULL, { 0x40110189561672F7ULL, 0xDBCD571BE18D37C9ULL } }, /* XSUM_XXH128_testdata[106] */ + { 35, 0x9E3779B185EBCA8DULL, { 0x79BB7678F5A48FDAULL, 0x87F71FD871F817E9ULL } }, /* XSUM_XXH128_testdata[107] */ + { 36, 0x0000000000000000ULL, { 0x4622E1529B21F801ULL, 0xCB8AD67F89D54C67ULL } }, /* XSUM_XXH128_testdata[108] */ + { 36, 0x000000009E3779B1ULL, { 0xFF9B9DBF32BDD23AULL, 0xB4B766F20A97C15CULL } }, /* XSUM_XXH128_testdata[109] */ + { 36, 0x9E3779B185EBCA8DULL, { 0x5B0002161A671698ULL, 0xC74FC9E31CAF4DC1ULL } }, /* XSUM_XXH128_testdata[110] */ + { 37, 0x0000000000000000ULL, { 0x37D26B72F2C5FE93ULL, 0x7FB8F8FD35869466ULL } }, /* XSUM_XXH128_testdata[111] */ + { 37, 0x000000009E3779B1ULL, { 0x7AC8D944BD540F6FULL, 0x1A9FFD27435D4831ULL } }, /* XSUM_XXH128_testdata[112] */ + { 37, 0x9E3779B185EBCA8DULL, { 0x5E6AA052B9150F3EULL, 0x6CB0EE29DA2A8081ULL } }, /* XSUM_XXH128_testdata[113] */ + { 38, 0x0000000000000000ULL, { 0x0F582B6C4556EDA9ULL, 0x91BA1224B371928DULL } }, /* XSUM_XXH128_testdata[114] */ + { 38, 0x000000009E3779B1ULL, { 0xC95DEDB60ADFB408ULL, 0xBD6CFE2665D51DD5ULL } }, /* XSUM_XXH128_testdata[115] */ + { 38, 0x9E3779B185EBCA8DULL, { 0x24D68AC7F1C50340ULL, 0x3D2BE910B67BABE6ULL } }, /* XSUM_XXH128_testdata[116] */ + { 39, 0x0000000000000000ULL, { 0x1C87EEA22AA873C2ULL, 0xC8F8B3373A2486EAULL } }, /* XSUM_XXH128_testdata[117] */ + { 39, 0x000000009E3779B1ULL, { 0xEAE1F3A0C855F3BBULL, 0xD1530455FB46F508ULL } }, /* XSUM_XXH128_testdata[118] */ + { 39, 0x9E3779B185EBCA8DULL, { 0x6C737E671D14099DULL, 0xB90085F8E8523F56ULL } }, /* XSUM_XXH128_testdata[119] */ + { 40, 0x0000000000000000ULL, { 0xA21A469A948C526AULL, 0x7D58E84401489136ULL } }, /* XSUM_XXH128_testdata[120] */ + { 40, 0x000000009E3779B1ULL, { 0xBB1413D0D210221DULL, 0x830F11A29FBD9433ULL } }, /* XSUM_XXH128_testdata[121] */ + { 40, 0x9E3779B185EBCA8DULL, { 0x3AB06ED02F16FA7CULL, 0xA5996E81B1A20485ULL } }, /* XSUM_XXH128_testdata[122] */ + { 41, 0x0000000000000000ULL, { 0x4F0BDA0170725278ULL, 0xDED80C517B8506F3ULL } }, /* XSUM_XXH128_testdata[123] */ + { 41, 0x000000009E3779B1ULL, { 0x1FA227EBE1B57887ULL, 0xFA3DF2B1A096E782ULL } }, /* XSUM_XXH128_testdata[124] */ + { 41, 0x9E3779B185EBCA8DULL, { 0x2F9FAE3A94D04C75ULL, 0x6796D3C6F9C44942ULL } }, /* XSUM_XXH128_testdata[125] */ + { 42, 0x0000000000000000ULL, { 0x486081C6CAB0BAB5ULL, 0x84C996BE1DF5A96EULL } }, /* XSUM_XXH128_testdata[126] */ + { 42, 0x000000009E3779B1ULL, { 0x47EC4A204D009E3AULL, 0x5F313FCE45949ADCULL } }, /* XSUM_XXH128_testdata[127] */ + { 42, 0x9E3779B185EBCA8DULL, { 0xA07D6B7F6B0B4A06ULL, 0xFCCEAFB553C2C461ULL } }, /* XSUM_XXH128_testdata[128] */ + { 43, 0x0000000000000000ULL, { 0x7E60573DE26665D6ULL, 0x7B57C2721F7E2140ULL } }, /* XSUM_XXH128_testdata[129] */ + { 43, 0x000000009E3779B1ULL, { 0x022E331A26B108BEULL, 0xE1C41AA138103223ULL } }, /* XSUM_XXH128_testdata[130] */ + { 43, 0x9E3779B185EBCA8DULL, { 0x83D828EB5AEA024BULL, 0x7AA74EF08BF8972AULL } }, /* XSUM_XXH128_testdata[131] */ + { 44, 0x0000000000000000ULL, { 0x2FE8EAC5BC6611D4ULL, 0x55B3763ECE2A0CE5ULL } }, /* XSUM_XXH128_testdata[132] */ + { 44, 0x000000009E3779B1ULL, { 0xD3AD4A93ED409AC9ULL, 0x0EEE35BBFA239037ULL } }, /* XSUM_XXH128_testdata[133] */ + { 44, 0x9E3779B185EBCA8DULL, { 0x8B3CB7AD51EF2B31ULL, 0x02922C8D7BB954BFULL } }, /* XSUM_XXH128_testdata[134] */ + { 45, 0x0000000000000000ULL, { 0x3DAB6D36EFB0A9F1ULL, 0xFB2ED4E6878F58EEULL } }, /* XSUM_XXH128_testdata[135] */ + { 45, 0x000000009E3779B1ULL, { 0xB05B105614FAFD87ULL, 0xD40818CC7F4D44C2ULL } }, /* XSUM_XXH128_testdata[136] */ + { 45, 0x9E3779B185EBCA8DULL, { 0x9666CF3207232F95ULL, 0x9180267871AD1D0EULL } }, /* XSUM_XXH128_testdata[137] */ + { 46, 0x0000000000000000ULL, { 0xF63251243BA77A2AULL, 0x7EDCAF501392ECD9ULL } }, /* XSUM_XXH128_testdata[138] */ + { 46, 0x000000009E3779B1ULL, { 0x63F97863E18BAA6AULL, 0xE9D717817053CCA2ULL } }, /* XSUM_XXH128_testdata[139] */ + { 46, 0x9E3779B185EBCA8DULL, { 0xACDF103015B5ED9AULL, 0x9AB7D5F31B706BE0ULL } }, /* XSUM_XXH128_testdata[140] */ + { 47, 0x0000000000000000ULL, { 0xE7371BE0E4295492ULL, 0xD3FABAB4EDF4C500ULL } }, /* XSUM_XXH128_testdata[141] */ + { 47, 0x000000009E3779B1ULL, { 0xA9C1C90C70733EC4ULL, 0xF4CD223BB9191292ULL } }, /* XSUM_XXH128_testdata[142] */ + { 47, 0x9E3779B185EBCA8DULL, { 0x77F2E315E4EBD1FEULL, 0x8876E7582465A24DULL } }, /* XSUM_XXH128_testdata[143] */ + { 48, 0x0000000000000000ULL, { 0xF942219AED80F67BULL, 0xA002AC4E5478227EULL } }, /* XSUM_XXH128_testdata[144] */ + { 48, 0x000000009E3779B1ULL, { 0x7BA3C3E453A1934EULL, 0x163ADDE36C072295ULL } }, /* XSUM_XXH128_testdata[145] */ + { 48, 0x9E3779B185EBCA8DULL, { 0x3A94D91333ED395AULL, 0xBC689F4C0152FB44ULL } }, /* XSUM_XXH128_testdata[146] */ + { 49, 0x0000000000000000ULL, { 0xF2B7B23CE6EC80AAULL, 0xECCF52474EC7D923ULL } }, /* XSUM_XXH128_testdata[147] */ + { 49, 0x000000009E3779B1ULL, { 0x09303020B1C5A35CULL, 0xE7F33ACCB5FCB6D5ULL } }, /* XSUM_XXH128_testdata[148] */ + { 49, 0x9E3779B185EBCA8DULL, { 0x13CAB3C8CC955F9CULL, 0x7A4EB66DA77F8484ULL } }, /* XSUM_XXH128_testdata[149] */ + { 50, 0x0000000000000000ULL, { 0x482E8EC08214B6E1ULL, 0x058F885F795EF664ULL } }, /* XSUM_XXH128_testdata[150] */ + { 50, 0x000000009E3779B1ULL, { 0xCC307EFA8B0EFCD5ULL, 0x97CB0CED8E6AEA21ULL } }, /* XSUM_XXH128_testdata[151] */ + { 50, 0x9E3779B185EBCA8DULL, { 0x6BFD0C5DFCDEBD54ULL, 0x2247FD24E5F07409ULL } }, /* XSUM_XXH128_testdata[152] */ + { 51, 0x0000000000000000ULL, { 0x1FD7D480F1B5EC52ULL, 0xE7BF618B4449AF2CULL } }, /* XSUM_XXH128_testdata[153] */ + { 51, 0x000000009E3779B1ULL, { 0x65C226758C7292B5ULL, 0xBFB2A1F8E82FC8B8ULL } }, /* XSUM_XXH128_testdata[154] */ + { 51, 0x9E3779B185EBCA8DULL, { 0x713E68E0604843E8ULL, 0xDB807E03958CE8E7ULL } }, /* XSUM_XXH128_testdata[155] */ + { 52, 0x0000000000000000ULL, { 0x46B0FB5FE8208F2DULL, 0xDD9E141D6E878694ULL } }, /* XSUM_XXH128_testdata[156] */ + { 52, 0x000000009E3779B1ULL, { 0x395EEB9E761C239AULL, 0xFD7DD57BE93512B7ULL } }, /* XSUM_XXH128_testdata[157] */ + { 52, 0x9E3779B185EBCA8DULL, { 0xA24242902670612CULL, 0xCAA7142B4B9866B8ULL } }, /* XSUM_XXH128_testdata[158] */ + { 53, 0x0000000000000000ULL, { 0x1DF9AB08DC5ECE89ULL, 0x3931079CC8E1A023ULL } }, /* XSUM_XXH128_testdata[159] */ + { 53, 0x000000009E3779B1ULL, { 0x8A0D9257CC2029C8ULL, 0xC908C18865B60741ULL } }, /* XSUM_XXH128_testdata[160] */ + { 53, 0x9E3779B185EBCA8DULL, { 0x758D5A8778E1C77CULL, 0xB9D0EF20F58768E5ULL } }, /* XSUM_XXH128_testdata[161] */ + { 54, 0x0000000000000000ULL, { 0xAF4B9ECB26C15867ULL, 0x7404B76D483DFC4BULL } }, /* XSUM_XXH128_testdata[162] */ + { 54, 0x000000009E3779B1ULL, { 0xC2FB5AF70A4167A6ULL, 0x3E5AFA5D15FE44C4ULL } }, /* XSUM_XXH128_testdata[163] */ + { 54, 0x9E3779B185EBCA8DULL, { 0x39AA694631FC5C09ULL, 0xAB73D1BC5E1DE210ULL } }, /* XSUM_XXH128_testdata[164] */ + { 55, 0x0000000000000000ULL, { 0xC81339770FA76C64ULL, 0x5BA1D6F62F23C6C2ULL } }, /* XSUM_XXH128_testdata[165] */ + { 55, 0x000000009E3779B1ULL, { 0x4A573DEE0C8554D6ULL, 0x84167F0A3FFB2247ULL } }, /* XSUM_XXH128_testdata[166] */ + { 55, 0x9E3779B185EBCA8DULL, { 0xFDE6BE9BFA6FD18CULL, 0x0ECC901637A328A6ULL } }, /* XSUM_XXH128_testdata[167] */ + { 56, 0x0000000000000000ULL, { 0x8C8621520C96876DULL, 0x0B980EF5390C79D1ULL } }, /* XSUM_XXH128_testdata[168] */ + { 56, 0x000000009E3779B1ULL, { 0x57A040B625B4F3F1ULL, 0x6EC9816287730E21ULL } }, /* XSUM_XXH128_testdata[169] */ + { 56, 0x9E3779B185EBCA8DULL, { 0x3EDA65B4FBA3E2D3ULL, 0x4E81412CC059B620ULL } }, /* XSUM_XXH128_testdata[170] */ + { 57, 0x0000000000000000ULL, { 0x20AB919DA8A5910EULL, 0x3E8383DE66780EA9ULL } }, /* XSUM_XXH128_testdata[171] */ + { 57, 0x000000009E3779B1ULL, { 0xDFEFE35FB443EAA6ULL, 0x4E5A1A9522265704ULL } }, /* XSUM_XXH128_testdata[172] */ + { 57, 0x9E3779B185EBCA8DULL, { 0x68DE73E96F81C670ULL, 0xF42B0844B0B274E8ULL } }, /* XSUM_XXH128_testdata[173] */ + { 58, 0x0000000000000000ULL, { 0x8680237C700D53B3ULL, 0xD65DB1C26AD7F514ULL } }, /* XSUM_XXH128_testdata[174] */ + { 58, 0x000000009E3779B1ULL, { 0x2C21A77A960DB0D5ULL, 0xF458D3AD20C2214CULL } }, /* XSUM_XXH128_testdata[175] */ + { 58, 0x9E3779B185EBCA8DULL, { 0xECE14FD3089CE07CULL, 0xBAFA5A2F48F6D642ULL } }, /* XSUM_XXH128_testdata[176] */ + { 59, 0x0000000000000000ULL, { 0x08340C518719170AULL, 0x4755ADB4ABADDF33ULL } }, /* XSUM_XXH128_testdata[177] */ + { 59, 0x000000009E3779B1ULL, { 0xCD15887AA4881F3EULL, 0xD111896BD2015699ULL } }, /* XSUM_XXH128_testdata[178] */ + { 59, 0x9E3779B185EBCA8DULL, { 0xD3B155A0854C92C7ULL, 0xD461819D5FA559ABULL } }, /* XSUM_XXH128_testdata[179] */ + { 60, 0x0000000000000000ULL, { 0x3FC63264B97E66C4ULL, 0xDD23AB349B65191FULL } }, /* XSUM_XXH128_testdata[180] */ + { 60, 0x000000009E3779B1ULL, { 0x9E1964E1E9EE0394ULL, 0xE348911C513B6EFBULL } }, /* XSUM_XXH128_testdata[181] */ + { 60, 0x9E3779B185EBCA8DULL, { 0xFAC04392452FF40CULL, 0xB2430128EC04896AULL } }, /* XSUM_XXH128_testdata[182] */ + { 61, 0x0000000000000000ULL, { 0xF28F0043168FA60FULL, 0xA690426D39B3239DULL } }, /* XSUM_XXH128_testdata[183] */ + { 61, 0x000000009E3779B1ULL, { 0xD0273F68547265DFULL, 0x367C7AE92C2C5AB0ULL } }, /* XSUM_XXH128_testdata[184] */ + { 61, 0x9E3779B185EBCA8DULL, { 0xA480D7AA9A0945AFULL, 0x821F11506902DA6DULL } }, /* XSUM_XXH128_testdata[185] */ + { 62, 0x0000000000000000ULL, { 0x8ABE4AE9BA6B8970ULL, 0x0156A29EA822A61AULL } }, /* XSUM_XXH128_testdata[186] */ + { 62, 0x000000009E3779B1ULL, { 0xE02180CCE6A533D2ULL, 0x6A74A53C1F2497E1ULL } }, /* XSUM_XXH128_testdata[187] */ + { 62, 0x9E3779B185EBCA8DULL, { 0xC1221AEA58DF4E23ULL, 0xFA3BDB6DB68D85CBULL } }, /* XSUM_XXH128_testdata[188] */ + { 63, 0x0000000000000000ULL, { 0x5E4CB79E9A8121D9ULL, 0x7FC0AE04A6D2BB0BULL } }, /* XSUM_XXH128_testdata[189] */ + { 63, 0x000000009E3779B1ULL, { 0x32C0F908DA71D4FDULL, 0xE4DB72A4C9F178CFULL } }, /* XSUM_XXH128_testdata[190] */ + { 63, 0x9E3779B185EBCA8DULL, { 0xC6EE481741654B12ULL, 0xAEC92695D77FEA89ULL } }, /* XSUM_XXH128_testdata[191] */ + { 64, 0x0000000000000000ULL, { 0xEFDB6A44690721A9ULL, 0x6D90E81A9B0FD622ULL } }, /* XSUM_XXH128_testdata[192] */ + { 64, 0x000000009E3779B1ULL, { 0x592B9762BBEBCEBBULL, 0x5F29E4EDBA49A7AEULL } }, /* XSUM_XXH128_testdata[193] */ + { 64, 0x9E3779B185EBCA8DULL, { 0x9405BA2AFFA95CEBULL, 0x37B738968D40BDA5ULL } }, /* XSUM_XXH128_testdata[194] */ + { 65, 0x0000000000000000ULL, { 0xFE2F650FA500EC6EULL, 0x6C074D65E54DB85AULL } }, /* XSUM_XXH128_testdata[195] */ + { 65, 0x000000009E3779B1ULL, { 0xDB4D44A434CF6830ULL, 0xFD0EBD6E81275E11ULL } }, /* XSUM_XXH128_testdata[196] */ + { 65, 0x9E3779B185EBCA8DULL, { 0x9D60C345E5C297CDULL, 0x72503A6FA8D07ADBULL } }, /* XSUM_XXH128_testdata[197] */ + { 66, 0x0000000000000000ULL, { 0x863FB8517E58CB1CULL, 0x827CFA7E4762BD29ULL } }, /* XSUM_XXH128_testdata[198] */ + { 66, 0x000000009E3779B1ULL, { 0x971A3AA3FAA16D5FULL, 0x05FC1974432D5F0CULL } }, /* XSUM_XXH128_testdata[199] */ + { 66, 0x9E3779B185EBCA8DULL, { 0x1070C2DD52042589ULL, 0xE8608A61D0DA23D9ULL } }, /* XSUM_XXH128_testdata[200] */ + { 67, 0x0000000000000000ULL, { 0x3DA90A343BC849B8ULL, 0x574B97190A0C3660ULL } }, /* XSUM_XXH128_testdata[201] */ + { 67, 0x000000009E3779B1ULL, { 0x3D05D583C7297229ULL, 0x5DF20BF40A5D1E49ULL } }, /* XSUM_XXH128_testdata[202] */ + { 67, 0x9E3779B185EBCA8DULL, { 0xE86BB07A853205FAULL, 0xFAB25BDDF4FF71E9ULL } }, /* XSUM_XXH128_testdata[203] */ + { 68, 0x0000000000000000ULL, { 0xF2CDA392C0CFF262ULL, 0x41AC62E69A1F1A8EULL } }, /* XSUM_XXH128_testdata[204] */ + { 68, 0x000000009E3779B1ULL, { 0x8EB929D29D71F23AULL, 0xAE21721DCC1FD2C0ULL } }, /* XSUM_XXH128_testdata[205] */ + { 68, 0x9E3779B185EBCA8DULL, { 0x16275098D47357D5ULL, 0x47D704A0DF667D1CULL } }, /* XSUM_XXH128_testdata[206] */ + { 69, 0x0000000000000000ULL, { 0x5B3B0A3263A4D209ULL, 0x40E25D295201EFCBULL } }, /* XSUM_XXH128_testdata[207] */ + { 69, 0x000000009E3779B1ULL, { 0x4EC8F8F1F8121192ULL, 0xE27CC1022DC32736ULL } }, /* XSUM_XXH128_testdata[208] */ + { 69, 0x9E3779B185EBCA8DULL, { 0x55764B8E5DA762CBULL, 0xF4D835DC07052745ULL } }, /* XSUM_XXH128_testdata[209] */ + { 70, 0x0000000000000000ULL, { 0x4F19DAF393EA30DAULL, 0xA87D85EFCF64A099ULL } }, /* XSUM_XXH128_testdata[210] */ + { 70, 0x000000009E3779B1ULL, { 0x00C5171308A65523ULL, 0x84358642B4F15B98ULL } }, /* XSUM_XXH128_testdata[211] */ + { 70, 0x9E3779B185EBCA8DULL, { 0x7D79B472E035BEEAULL, 0x9E145B94B519FC24ULL } }, /* XSUM_XXH128_testdata[212] */ + { 71, 0x0000000000000000ULL, { 0xDDB1840DA0322085ULL, 0xB1E8729F8767E7DCULL } }, /* XSUM_XXH128_testdata[213] */ + { 71, 0x000000009E3779B1ULL, { 0x7835F405FEFCF6B2ULL, 0xBA1996AF40BF822FULL } }, /* XSUM_XXH128_testdata[214] */ + { 71, 0x9E3779B185EBCA8DULL, { 0x81A0C3F5948D9E9EULL, 0x740F02FA562197B1ULL } }, /* XSUM_XXH128_testdata[215] */ + { 72, 0x0000000000000000ULL, { 0xB93F3BC8B1ABDAE8ULL, 0x4CB3A9D9FC2426BDULL } }, /* XSUM_XXH128_testdata[216] */ + { 72, 0x000000009E3779B1ULL, { 0xE6914D2249CEAFA2ULL, 0x795DCC16402684ACULL } }, /* XSUM_XXH128_testdata[217] */ + { 72, 0x9E3779B185EBCA8DULL, { 0x33F9881DCD559392ULL, 0xB29B712B6C9C19CAULL } }, /* XSUM_XXH128_testdata[218] */ + { 73, 0x0000000000000000ULL, { 0x7AFF04344348C616ULL, 0xF8E52E64367FC9A3ULL } }, /* XSUM_XXH128_testdata[219] */ + { 73, 0x000000009E3779B1ULL, { 0x9CB1D121F1EFBE7DULL, 0x6B0A395448A0FB4DULL } }, /* XSUM_XXH128_testdata[220] */ + { 73, 0x9E3779B185EBCA8DULL, { 0x38CD6248FF4069D8ULL, 0x335B7FA1CFD16892ULL } }, /* XSUM_XXH128_testdata[221] */ + { 74, 0x0000000000000000ULL, { 0x385DF525223BB0EBULL, 0x152820865607D891ULL } }, /* XSUM_XXH128_testdata[222] */ + { 74, 0x000000009E3779B1ULL, { 0x8E967E83D58779B9ULL, 0xCA4E0DB0FA131F46ULL } }, /* XSUM_XXH128_testdata[223] */ + { 74, 0x9E3779B185EBCA8DULL, { 0x90F215FBC3F96FE3ULL, 0x5EC57405A2A1CB30ULL } }, /* XSUM_XXH128_testdata[224] */ + { 75, 0x0000000000000000ULL, { 0x69D27CA670328CA7ULL, 0x855F6872024ADC3EULL } }, /* XSUM_XXH128_testdata[225] */ + { 75, 0x000000009E3779B1ULL, { 0x0470E5FA3388D87EULL, 0xDDF4F2D1A0E4CCE0ULL } }, /* XSUM_XXH128_testdata[226] */ + { 75, 0x9E3779B185EBCA8DULL, { 0xDFA226B9F547A3F5ULL, 0x6DD1D6DACB225BF8ULL } }, /* XSUM_XXH128_testdata[227] */ + { 76, 0x0000000000000000ULL, { 0xDB3C2D454E98EB69ULL, 0x23AFF2D28829C76AULL } }, /* XSUM_XXH128_testdata[228] */ + { 76, 0x000000009E3779B1ULL, { 0x412EDF75846A5231ULL, 0x308D5F738CEEE1FCULL } }, /* XSUM_XXH128_testdata[229] */ + { 76, 0x9E3779B185EBCA8DULL, { 0x37B8049E70C01958ULL, 0xCE39E111B39A0676ULL } }, /* XSUM_XXH128_testdata[230] */ + { 77, 0x0000000000000000ULL, { 0x456E782C01609F79ULL, 0x99AEE1C127CFC93DULL } }, /* XSUM_XXH128_testdata[231] */ + { 77, 0x000000009E3779B1ULL, { 0x5B1B2BD01B2872CBULL, 0x920ECDEDA4C4F6C8ULL } }, /* XSUM_XXH128_testdata[232] */ + { 77, 0x9E3779B185EBCA8DULL, { 0xCE7927676DB0739EULL, 0x1A42D5A7B187CAE3ULL } }, /* XSUM_XXH128_testdata[233] */ + { 78, 0x0000000000000000ULL, { 0xBE10A0BF7AE1DDDAULL, 0xD8EF8850DBE394B0ULL } }, /* XSUM_XXH128_testdata[234] */ + { 78, 0x000000009E3779B1ULL, { 0xA60FEAA020356E47ULL, 0x2E02A3B204DA6232ULL } }, /* XSUM_XXH128_testdata[235] */ + { 78, 0x9E3779B185EBCA8DULL, { 0xCFB8E15A4E939003ULL, 0xC284F814A4951D25ULL } }, /* XSUM_XXH128_testdata[236] */ + { 79, 0x0000000000000000ULL, { 0xD2C346E6A3744835ULL, 0x97DE558A8B63962AULL } }, /* XSUM_XXH128_testdata[237] */ + { 79, 0x000000009E3779B1ULL, { 0x3C9B2441A9FA8564ULL, 0x630D53E80B3D1702ULL } }, /* XSUM_XXH128_testdata[238] */ + { 79, 0x9E3779B185EBCA8DULL, { 0x2EC0F9D96042B5CCULL, 0xC3E90CCDCCCF5E7BULL } }, /* XSUM_XXH128_testdata[239] */ + { 80, 0x0000000000000000ULL, { 0x454AE6BF7A8A532DULL, 0xFDF2CEFDE9EAAC8AULL } }, /* XSUM_XXH128_testdata[240] */ + { 80, 0x000000009E3779B1ULL, { 0x7ABFEBDF2326DFF0ULL, 0x27F9BE94EF318D63ULL } }, /* XSUM_XXH128_testdata[241] */ + { 80, 0x9E3779B185EBCA8DULL, { 0xA5EAC764D1FF1166ULL, 0x19BF02D69BC56833ULL } }, /* XSUM_XXH128_testdata[242] */ + { 81, 0x0000000000000000ULL, { 0x5E8BAFB9F95FB803ULL, 0x4952F58181AB0042ULL } }, /* XSUM_XXH128_testdata[243] */ + { 81, 0x000000009E3779B1ULL, { 0x703FBB3D7A5F755CULL, 0x2724EC7ADC750FB6ULL } }, /* XSUM_XXH128_testdata[244] */ + { 81, 0x9E3779B185EBCA8DULL, { 0xDC50FEB227515233ULL, 0x941E9469C46EDD08ULL } }, /* XSUM_XXH128_testdata[245] */ + { 82, 0x0000000000000000ULL, { 0x2C7F81D7D7E614DDULL, 0xFBAD8FB7476CFA55ULL } }, /* XSUM_XXH128_testdata[246] */ + { 82, 0x000000009E3779B1ULL, { 0x749CC8D8920F2573ULL, 0xEA6B912FD4CF07BEULL } }, /* XSUM_XXH128_testdata[247] */ + { 82, 0x9E3779B185EBCA8DULL, { 0xEF71C2FE2FB7433CULL, 0x8C6450D1FC66D4F4ULL } }, /* XSUM_XXH128_testdata[248] */ + { 83, 0x0000000000000000ULL, { 0xAA6F9A3D43BAF97FULL, 0x56AE9D57AE12331DULL } }, /* XSUM_XXH128_testdata[249] */ + { 83, 0x000000009E3779B1ULL, { 0x082A3351477BC807ULL, 0x4426E35839CAC633ULL } }, /* XSUM_XXH128_testdata[250] */ + { 83, 0x9E3779B185EBCA8DULL, { 0xAB0CE99D8CAD075EULL, 0x2E78A15FB855451CULL } }, /* XSUM_XXH128_testdata[251] */ + { 84, 0x0000000000000000ULL, { 0x6FB8E26A52CE6296ULL, 0x73C9F8A457C920CDULL } }, /* XSUM_XXH128_testdata[252] */ + { 84, 0x000000009E3779B1ULL, { 0x9EB35CB5AA67A56EULL, 0x9C54E4D5A1378B20ULL } }, /* XSUM_XXH128_testdata[253] */ + { 84, 0x9E3779B185EBCA8DULL, { 0x8B5CEDFC2CA33349ULL, 0x9B881877ACD4250BULL } }, /* XSUM_XXH128_testdata[254] */ + { 85, 0x0000000000000000ULL, { 0x44B57A61395E11A1ULL, 0xB4D35E37BDCBEF71ULL } }, /* XSUM_XXH128_testdata[255] */ + { 85, 0x000000009E3779B1ULL, { 0x164FE8DA6D280D51ULL, 0xD753421C78D92CD0ULL } }, /* XSUM_XXH128_testdata[256] */ + { 85, 0x9E3779B185EBCA8DULL, { 0xA2F4CC657CE861A8ULL, 0xDB4365E74D8FE02AULL } }, /* XSUM_XXH128_testdata[257] */ + { 86, 0x0000000000000000ULL, { 0x512CCA4146849683ULL, 0x08CF415300B62CC1ULL } }, /* XSUM_XXH128_testdata[258] */ + { 86, 0x000000009E3779B1ULL, { 0x72886250C74D7041ULL, 0x9B3644E2F53739CBULL } }, /* XSUM_XXH128_testdata[259] */ + { 86, 0x9E3779B185EBCA8DULL, { 0x839513D52B0E6EC6ULL, 0xEEE10EC32722887DULL } }, /* XSUM_XXH128_testdata[260] */ + { 87, 0x0000000000000000ULL, { 0x4B81A69B1DFC0AB8ULL, 0xD338059119F22966ULL } }, /* XSUM_XXH128_testdata[261] */ + { 87, 0x000000009E3779B1ULL, { 0x86DF7C4CD7CA6AAAULL, 0x5954F7D40730C83BULL } }, /* XSUM_XXH128_testdata[262] */ + { 87, 0x9E3779B185EBCA8DULL, { 0x26B857FBDEC34FFEULL, 0x64095B05B4A07B3AULL } }, /* XSUM_XXH128_testdata[263] */ + { 88, 0x0000000000000000ULL, { 0x756358A3F5990E14ULL, 0xF5CA57802A115321ULL } }, /* XSUM_XXH128_testdata[264] */ + { 88, 0x000000009E3779B1ULL, { 0x40A7FDB3A953C066ULL, 0x46BBF4379321EAA2ULL } }, /* XSUM_XXH128_testdata[265] */ + { 88, 0x9E3779B185EBCA8DULL, { 0xEA6780C6E9D045D5ULL, 0xA02DD4B81D57D780ULL } }, /* XSUM_XXH128_testdata[266] */ + { 89, 0x0000000000000000ULL, { 0xCDCCDA68DACEAB49ULL, 0xB74CA6A618AA484FULL } }, /* XSUM_XXH128_testdata[267] */ + { 89, 0x000000009E3779B1ULL, { 0x26EFB1C5D849C146ULL, 0x7F04C735F98F8AC8ULL } }, /* XSUM_XXH128_testdata[268] */ + { 89, 0x9E3779B185EBCA8DULL, { 0xCEED128F9F83E572ULL, 0xC16E1C99C17BA562ULL } }, /* XSUM_XXH128_testdata[269] */ + { 90, 0x0000000000000000ULL, { 0x7B4F690C439AAB0CULL, 0x3C99D16EB5C1FFD1ULL } }, /* XSUM_XXH128_testdata[270] */ + { 90, 0x000000009E3779B1ULL, { 0xDE9EB456539B49D0ULL, 0x7FDF77332F672E42ULL } }, /* XSUM_XXH128_testdata[271] */ + { 90, 0x9E3779B185EBCA8DULL, { 0x3F7BFC389289D0F0ULL, 0x2CEC8A4BF33F5546ULL } }, /* XSUM_XXH128_testdata[272] */ + { 91, 0x0000000000000000ULL, { 0x3394F85F071F79EEULL, 0x7E2E49A56EE9D5D3ULL } }, /* XSUM_XXH128_testdata[273] */ + { 91, 0x000000009E3779B1ULL, { 0x2F9C34D1BDFED912ULL, 0xD464C68583AFBA1BULL } }, /* XSUM_XXH128_testdata[274] */ + { 91, 0x9E3779B185EBCA8DULL, { 0xA87239152A1882C5ULL, 0xCCFDFC0BFE2CEE38ULL } }, /* XSUM_XXH128_testdata[275] */ + { 92, 0x0000000000000000ULL, { 0xA56E022F37A4B561ULL, 0x15E71215719066AEULL } }, /* XSUM_XXH128_testdata[276] */ + { 92, 0x000000009E3779B1ULL, { 0x0B344F3D05164D2EULL, 0xD7D5CE55799AA759ULL } }, /* XSUM_XXH128_testdata[277] */ + { 92, 0x9E3779B185EBCA8DULL, { 0xB5EE2570DCAB8BB6ULL, 0x21254CCC861F92A2ULL } }, /* XSUM_XXH128_testdata[278] */ + { 93, 0x0000000000000000ULL, { 0xEEDBFD6A74706A57ULL, 0x7E58A41233082423ULL } }, /* XSUM_XXH128_testdata[279] */ + { 93, 0x000000009E3779B1ULL, { 0x6BE0FDC6FF8AE460ULL, 0xF5A37B24C4CE2A3BULL } }, /* XSUM_XXH128_testdata[280] */ + { 93, 0x9E3779B185EBCA8DULL, { 0xF8D3FE0CBEA2AE7AULL, 0x40B4B7AD3A29505AULL } }, /* XSUM_XXH128_testdata[281] */ + { 94, 0x0000000000000000ULL, { 0xC1EACFF61E4523B6ULL, 0x597F76E06214BF99ULL } }, /* XSUM_XXH128_testdata[282] */ + { 94, 0x000000009E3779B1ULL, { 0x0F4716F7E11A9CACULL, 0x7ED9075916850B87ULL } }, /* XSUM_XXH128_testdata[283] */ + { 94, 0x9E3779B185EBCA8DULL, { 0x37BB76869147ECDFULL, 0x6551A719F596140DULL } }, /* XSUM_XXH128_testdata[284] */ + { 95, 0x0000000000000000ULL, { 0xADC001500F36EFC7ULL, 0xA7565462F45E97B8ULL } }, /* XSUM_XXH128_testdata[285] */ + { 95, 0x000000009E3779B1ULL, { 0xDBB07D40A082D463ULL, 0x2D2FBCD0422A5048ULL } }, /* XSUM_XXH128_testdata[286] */ + { 95, 0x9E3779B185EBCA8DULL, { 0x252E82550C49368EULL, 0x3E81BAA40D7DEE28ULL } }, /* XSUM_XXH128_testdata[287] */ + { 96, 0x0000000000000000ULL, { 0xE9324473EA9AFEBEULL, 0xD9D0B885F56C93F1ULL } }, /* XSUM_XXH128_testdata[288] */ + { 96, 0x000000009E3779B1ULL, { 0x4F7CE88D5FF06796ULL, 0x326705F7850BAF1AULL } }, /* XSUM_XXH128_testdata[289] */ + { 96, 0x9E3779B185EBCA8DULL, { 0xD61F3AB58705C405ULL, 0x6F9ED3C2008CB388ULL } }, /* XSUM_XXH128_testdata[290] */ + { 97, 0x0000000000000000ULL, { 0x7C87228AE9671BA7ULL, 0x09DFF37FAA6B284CULL } }, /* XSUM_XXH128_testdata[291] */ + { 97, 0x000000009E3779B1ULL, { 0x320C5A9B1F530A27ULL, 0x300800B50F2DB8D6ULL } }, /* XSUM_XXH128_testdata[292] */ + { 97, 0x9E3779B185EBCA8DULL, { 0x49EA87F2AFE44F66ULL, 0x14E68F850B481ADAULL } }, /* XSUM_XXH128_testdata[293] */ + { 98, 0x0000000000000000ULL, { 0x32E6A3426D34B47CULL, 0x27341C41B7B76C66ULL } }, /* XSUM_XXH128_testdata[294] */ + { 98, 0x000000009E3779B1ULL, { 0x050A14447BF94EEAULL, 0x4E016589D055A22CULL } }, /* XSUM_XXH128_testdata[295] */ + { 98, 0x9E3779B185EBCA8DULL, { 0x32C4C2A63D86C675ULL, 0x3FFC6EE314B4B1FCULL } }, /* XSUM_XXH128_testdata[296] */ + { 99, 0x0000000000000000ULL, { 0xE424E0E30C017EF7ULL, 0x6167ACF34FF2030AULL } }, /* XSUM_XXH128_testdata[297] */ + { 99, 0x000000009E3779B1ULL, { 0xB8CF2958C2E1C3AAULL, 0xF9F87F1F44F94B8BULL } }, /* XSUM_XXH128_testdata[298] */ + { 99, 0x9E3779B185EBCA8DULL, { 0x75602D814E1EC7C9ULL, 0x513D6B0831749D0AULL } }, /* XSUM_XXH128_testdata[299] */ + { 100, 0x0000000000000000ULL, { 0x5FCBC2E3295F2476ULL, 0x9B50B05817AB158EULL } }, /* XSUM_XXH128_testdata[300] */ + { 100, 0x000000009E3779B1ULL, { 0xF180E5ADE770CDA1ULL, 0xEA59CFDBF37D3A07ULL } }, /* XSUM_XXH128_testdata[301] */ + { 100, 0x9E3779B185EBCA8DULL, { 0xD5E0C2A715F11657ULL, 0x984CEC52A9A9A561ULL } }, /* XSUM_XXH128_testdata[302] */ + { 101, 0x0000000000000000ULL, { 0x5E9E9ED01FC1F1CFULL, 0xF96034BF00411258ULL } }, /* XSUM_XXH128_testdata[303] */ + { 101, 0x000000009E3779B1ULL, { 0xD57FC3372CC4EBABULL, 0x06A82AFCA3D7397CULL } }, /* XSUM_XXH128_testdata[304] */ + { 101, 0x9E3779B185EBCA8DULL, { 0x7BCB4F88D5878616ULL, 0x67E2B3DF9AD4DFD0ULL } }, /* XSUM_XXH128_testdata[305] */ + { 102, 0x0000000000000000ULL, { 0x219521C931A10218ULL, 0x5D3928DE5F7F69E4ULL } }, /* XSUM_XXH128_testdata[306] */ + { 102, 0x000000009E3779B1ULL, { 0xDF8EADA46BE86460ULL, 0xB46737703E5CA346ULL } }, /* XSUM_XXH128_testdata[307] */ + { 102, 0x9E3779B185EBCA8DULL, { 0x74A35381FEE77C8CULL, 0x0A3E3B51862CC26FULL } }, /* XSUM_XXH128_testdata[308] */ + { 103, 0x0000000000000000ULL, { 0x6C8734B7D2DF189BULL, 0x00D0C82E60F68668ULL } }, /* XSUM_XXH128_testdata[309] */ + { 103, 0x000000009E3779B1ULL, { 0xBD71CC768A749608ULL, 0x154A67045FFACED1ULL } }, /* XSUM_XXH128_testdata[310] */ + { 103, 0x9E3779B185EBCA8DULL, { 0x258C671270A3CE86ULL, 0xD250D2427F132A4CULL } }, /* XSUM_XXH128_testdata[311] */ + { 104, 0x0000000000000000ULL, { 0xD7A32A0F548AFCCFULL, 0x44E96646F3FD8C0BULL } }, /* XSUM_XXH128_testdata[312] */ + { 104, 0x000000009E3779B1ULL, { 0x03D13D27A310E288ULL, 0xAE29AA0349556CB1ULL } }, /* XSUM_XXH128_testdata[313] */ + { 104, 0x9E3779B185EBCA8DULL, { 0x0FD8157937B10B94ULL, 0x468DB2143F27D286ULL } }, /* XSUM_XXH128_testdata[314] */ + { 105, 0x0000000000000000ULL, { 0x825DE9241F5B60B4ULL, 0x0D250E6EF601F830ULL } }, /* XSUM_XXH128_testdata[315] */ + { 105, 0x000000009E3779B1ULL, { 0x8389DB867AA6A3BDULL, 0x9B9BE9B5D6A949BBULL } }, /* XSUM_XXH128_testdata[316] */ + { 105, 0x9E3779B185EBCA8DULL, { 0x350C2F30BE6D79B5ULL, 0x24661FAAA9E01543ULL } }, /* XSUM_XXH128_testdata[317] */ + { 106, 0x0000000000000000ULL, { 0x8A96683C302E417FULL, 0x0058C97B396098A8ULL } }, /* XSUM_XXH128_testdata[318] */ + { 106, 0x000000009E3779B1ULL, { 0x4615F0DDFA3DF88DULL, 0x74657BCAB4D67E04ULL } }, /* XSUM_XXH128_testdata[319] */ + { 106, 0x9E3779B185EBCA8DULL, { 0x17A512AB5EC7D00DULL, 0x67B5B410AB9240DAULL } }, /* XSUM_XXH128_testdata[320] */ + { 107, 0x0000000000000000ULL, { 0x83B48BFC30EEFD9BULL, 0x179D6EF111C34D87ULL } }, /* XSUM_XXH128_testdata[321] */ + { 107, 0x000000009E3779B1ULL, { 0x8437BD889622A8BDULL, 0xE1B08B38B2E504C0ULL } }, /* XSUM_XXH128_testdata[322] */ + { 107, 0x9E3779B185EBCA8DULL, { 0x1B61C0FC3A21CE2AULL, 0x0BA9CE54CF9022A4ULL } }, /* XSUM_XXH128_testdata[323] */ + { 108, 0x0000000000000000ULL, { 0xB8917CE2A446F19BULL, 0x35D6472A0FA3391AULL } }, /* XSUM_XXH128_testdata[324] */ + { 108, 0x000000009E3779B1ULL, { 0x1B16C71B2714BE4AULL, 0x6F6560E75AC32328ULL } }, /* XSUM_XXH128_testdata[325] */ + { 108, 0x9E3779B185EBCA8DULL, { 0x3C89B27502A0B0EDULL, 0x370B0A9A2DA8B6F7ULL } }, /* XSUM_XXH128_testdata[326] */ + { 109, 0x0000000000000000ULL, { 0x267FA76A2E5C6B3CULL, 0x3CABED54B9174563ULL } }, /* XSUM_XXH128_testdata[327] */ + { 109, 0x000000009E3779B1ULL, { 0x74D98118D4E7487AULL, 0x477A3E30989F5E51ULL } }, /* XSUM_XXH128_testdata[328] */ + { 109, 0x9E3779B185EBCA8DULL, { 0x0880F4FBDFB0B3AEULL, 0xEBC7AE5E1385899EULL } }, /* XSUM_XXH128_testdata[329] */ + { 110, 0x0000000000000000ULL, { 0xDF5363BED5A527F8ULL, 0xE28549D1F215769CULL } }, /* XSUM_XXH128_testdata[330] */ + { 110, 0x000000009E3779B1ULL, { 0x6B9FF3832F5BBCDBULL, 0x94D87C929B21156EULL } }, /* XSUM_XXH128_testdata[331] */ + { 110, 0x9E3779B185EBCA8DULL, { 0x4A7B315D222E3145ULL, 0x1619143ED10D5EC2ULL } }, /* XSUM_XXH128_testdata[332] */ + { 111, 0x0000000000000000ULL, { 0xDAC51AF77C163256ULL, 0xB183359E38C9ECC9ULL } }, /* XSUM_XXH128_testdata[333] */ + { 111, 0x000000009E3779B1ULL, { 0xBF8FDB057294034CULL, 0x3D7A5E9C7C6BB18DULL } }, /* XSUM_XXH128_testdata[334] */ + { 111, 0x9E3779B185EBCA8DULL, { 0xAC416ED55CC25B7EULL, 0x418C06662D457994ULL } }, /* XSUM_XXH128_testdata[335] */ + { 112, 0x0000000000000000ULL, { 0xCBFD9024E4B6C79DULL, 0xD1B2CF3831D419ADULL } }, /* XSUM_XXH128_testdata[336] */ + { 112, 0x000000009E3779B1ULL, { 0xDFC76A523BDF8B8DULL, 0x4E1917E85E06099AULL } }, /* XSUM_XXH128_testdata[337] */ + { 112, 0x9E3779B185EBCA8DULL, { 0x94DE4EB7F80E7448ULL, 0x431161E8EFC337F6ULL } }, /* XSUM_XXH128_testdata[338] */ + { 113, 0x0000000000000000ULL, { 0xB772DA459AF0F09DULL, 0x8DF75B439F599436ULL } }, /* XSUM_XXH128_testdata[339] */ + { 113, 0x000000009E3779B1ULL, { 0x585EE7F926DEF6F3ULL, 0x2C48D1F7A5464280ULL } }, /* XSUM_XXH128_testdata[340] */ + { 113, 0x9E3779B185EBCA8DULL, { 0xF313D63BCD414EBCULL, 0x9183C10CFFB6AB05ULL } }, /* XSUM_XXH128_testdata[341] */ + { 114, 0x0000000000000000ULL, { 0x5EEDFBC1C0839954ULL, 0xB2CB838112031C9BULL } }, /* XSUM_XXH128_testdata[342] */ + { 114, 0x000000009E3779B1ULL, { 0x7FFBFBB6812C9729ULL, 0xD2CD8F0E9DE2B62EULL } }, /* XSUM_XXH128_testdata[343] */ + { 114, 0x9E3779B185EBCA8DULL, { 0x120EB136CD7496F6ULL, 0xC2729C8A03161D17ULL } }, /* XSUM_XXH128_testdata[344] */ + { 115, 0x0000000000000000ULL, { 0x5714F956FD4064B5ULL, 0x2859A57B23922110ULL } }, /* XSUM_XXH128_testdata[345] */ + { 115, 0x000000009E3779B1ULL, { 0x01D26CD386874BF2ULL, 0x9B1769220DDAE4F8ULL } }, /* XSUM_XXH128_testdata[346] */ + { 115, 0x9E3779B185EBCA8DULL, { 0x2E93079715F0DC14ULL, 0xC0F0672937D62F61ULL } }, /* XSUM_XXH128_testdata[347] */ + { 116, 0x0000000000000000ULL, { 0xBDB6A5A47E8369F3ULL, 0xE106B48794CB3613ULL } }, /* XSUM_XXH128_testdata[348] */ + { 116, 0x000000009E3779B1ULL, { 0xBFFB034A9F103B34ULL, 0xA88F3C177E0FA6BDULL } }, /* XSUM_XXH128_testdata[349] */ + { 116, 0x9E3779B185EBCA8DULL, { 0xFC4E8970BA2D4559ULL, 0xE6ACBF296C964BB8ULL } }, /* XSUM_XXH128_testdata[350] */ + { 117, 0x0000000000000000ULL, { 0x40993FC9647CF40AULL, 0x97DFCFA9CA849ACFULL } }, /* XSUM_XXH128_testdata[351] */ + { 117, 0x000000009E3779B1ULL, { 0x83CC2575DB07BE63ULL, 0xCFA88658960DF697ULL } }, /* XSUM_XXH128_testdata[352] */ + { 117, 0x9E3779B185EBCA8DULL, { 0x007F07A7A107F13BULL, 0x472C045735260B07ULL } }, /* XSUM_XXH128_testdata[353] */ + { 118, 0x0000000000000000ULL, { 0x3ECE876C2F2F9AE2ULL, 0x98D838C4E899E9FFULL } }, /* XSUM_XXH128_testdata[354] */ + { 118, 0x000000009E3779B1ULL, { 0xEEDA24FB54CFF471ULL, 0x47A4E949D47C7893ULL } }, /* XSUM_XXH128_testdata[355] */ + { 118, 0x9E3779B185EBCA8DULL, { 0xE2ACFCA5DEF28243ULL, 0xEF14CA9FEAD097DEULL } }, /* XSUM_XXH128_testdata[356] */ + { 119, 0x0000000000000000ULL, { 0x61BA532DD0839814ULL, 0x73C164AF6AA708F3ULL } }, /* XSUM_XXH128_testdata[357] */ + { 119, 0x000000009E3779B1ULL, { 0x00931CF6E2E9748CULL, 0x6CFEC232B660B809ULL } }, /* XSUM_XXH128_testdata[358] */ + { 119, 0x9E3779B185EBCA8DULL, { 0x9FFF7FB2ACA4650AULL, 0x7396510EEDA87CE5ULL } }, /* XSUM_XXH128_testdata[359] */ + { 120, 0x0000000000000000ULL, { 0x77850360863089F4ULL, 0x45513F9E48B29D17ULL } }, /* XSUM_XXH128_testdata[360] */ + { 120, 0x000000009E3779B1ULL, { 0x9CA36F2EF86AF0F3ULL, 0x77D9A27E3C4EC41EULL } }, /* XSUM_XXH128_testdata[361] */ + { 120, 0x9E3779B185EBCA8DULL, { 0x133EE825605B8D1FULL, 0xC2CF6AD7439D57AEULL } }, /* XSUM_XXH128_testdata[362] */ + { 121, 0x0000000000000000ULL, { 0x412EC7799F36079EULL, 0x27834778272F8A99ULL } }, /* XSUM_XXH128_testdata[363] */ + { 121, 0x000000009E3779B1ULL, { 0xB2BE527B7F46D13CULL, 0xA62C1F3E0BC1DD04ULL } }, /* XSUM_XXH128_testdata[364] */ + { 121, 0x9E3779B185EBCA8DULL, { 0xE3A49B56C546E8CDULL, 0x967BF61A4F436969ULL } }, /* XSUM_XXH128_testdata[365] */ + { 122, 0x0000000000000000ULL, { 0x8DF0BDDC58F396BAULL, 0x67FE645202C69869ULL } }, /* XSUM_XXH128_testdata[366] */ + { 122, 0x000000009E3779B1ULL, { 0x6821B9120F708BD4ULL, 0x0FFEAAC28194F960ULL } }, /* XSUM_XXH128_testdata[367] */ + { 122, 0x9E3779B185EBCA8DULL, { 0x8FFD5C284F7A1EB4ULL, 0x9EC80D4B51634777ULL } }, /* XSUM_XXH128_testdata[368] */ + { 123, 0x0000000000000000ULL, { 0x252A79CD274A3C06ULL, 0x66A3E2BF29901FCBULL } }, /* XSUM_XXH128_testdata[369] */ + { 123, 0x000000009E3779B1ULL, { 0xCC4FE2E5DC62F35FULL, 0x4F9D6C8F83ADA268ULL } }, /* XSUM_XXH128_testdata[370] */ + { 123, 0x9E3779B185EBCA8DULL, { 0x79490C337A510471ULL, 0x7FDC7DBD2827D1A5ULL } }, /* XSUM_XXH128_testdata[371] */ + { 124, 0x0000000000000000ULL, { 0x4BD723E070B780BEULL, 0x7ABFEF3BCF703AF4ULL } }, /* XSUM_XXH128_testdata[372] */ + { 124, 0x000000009E3779B1ULL, { 0x6FEA6C419CF974C0ULL, 0x937EB4762A3C0FDFULL } }, /* XSUM_XXH128_testdata[373] */ + { 124, 0x9E3779B185EBCA8DULL, { 0x948FD10DF9B78298ULL, 0x99F89AA63A36F1E7ULL } }, /* XSUM_XXH128_testdata[374] */ + { 125, 0x0000000000000000ULL, { 0x98E5D7D018FA2E32ULL, 0xA55B9F11F2EF2FF5ULL } }, /* XSUM_XXH128_testdata[375] */ + { 125, 0x000000009E3779B1ULL, { 0xD24B148FEE6B8A87ULL, 0x5F351E780E634FE6ULL } }, /* XSUM_XXH128_testdata[376] */ + { 125, 0x9E3779B185EBCA8DULL, { 0xD6A843154546F3A9ULL, 0x67301D5AC2EFE67CULL } }, /* XSUM_XXH128_testdata[377] */ + { 126, 0x0000000000000000ULL, { 0x791F59F0254AF4D7ULL, 0x0D7DE2705733BF09ULL } }, /* XSUM_XXH128_testdata[378] */ + { 126, 0x000000009E3779B1ULL, { 0x669D1673D8D23412ULL, 0xC1A5BE856D55D891ULL } }, /* XSUM_XXH128_testdata[379] */ + { 126, 0x9E3779B185EBCA8DULL, { 0x51B423A9882C36A3ULL, 0xBB4F1FAC091D3E0DULL } }, /* XSUM_XXH128_testdata[380] */ + { 127, 0x0000000000000000ULL, { 0x802A565A8A79A999ULL, 0xDCFAE8002712DB1CULL } }, /* XSUM_XXH128_testdata[381] */ + { 127, 0x000000009E3779B1ULL, { 0x716A7D18E9019E45ULL, 0xFD507AF3EDE62925ULL } }, /* XSUM_XXH128_testdata[382] */ + { 127, 0x9E3779B185EBCA8DULL, { 0x54C9D67F8B29DC74ULL, 0x37452E1967D3445BULL } }, /* XSUM_XXH128_testdata[383] */ + { 128, 0x0000000000000000ULL, { 0xEBB15E34A7FB5AB1ULL, 0x39992220E045260AULL } }, /* XSUM_XXH128_testdata[384] */ + { 128, 0x000000009E3779B1ULL, { 0x1453819941D93C1DULL, 0x98801187DF8D614DULL } }, /* XSUM_XXH128_testdata[385] */ + { 128, 0x9E3779B185EBCA8DULL, { 0x8394F5C51F1D8246ULL, 0xA0F7CCB68EE02ADDULL } }, /* XSUM_XXH128_testdata[386] */ + { 129, 0x0000000000000000ULL, { 0x86C9E3BC8F0A3B5CULL, 0x03815FC91F1B30B6ULL } }, /* XSUM_XXH128_testdata[387] */ + { 129, 0x000000009E3779B1ULL, { 0xB37B716F66B40F02ULL, 0xB7F7349A47B39E56ULL } }, /* XSUM_XXH128_testdata[388] */ + { 129, 0x9E3779B185EBCA8DULL, { 0xD4AAE26FCEC7DC03ULL, 0xAD559266067C0BF3ULL } }, /* XSUM_XXH128_testdata[389] */ + { 130, 0x0000000000000000ULL, { 0xBE0500E135CD4B35ULL, 0x90E701A84D20072FULL } }, /* XSUM_XXH128_testdata[390] */ + { 130, 0x000000009E3779B1ULL, { 0x9A57F1A0DAABA6EFULL, 0xDB12071B9DA3EFFEULL } }, /* XSUM_XXH128_testdata[391] */ + { 130, 0x9E3779B185EBCA8DULL, { 0xC2822B8E003156EEULL, 0x2441E0A784D4545AULL } }, /* XSUM_XXH128_testdata[392] */ + { 131, 0x0000000000000000ULL, { 0xA2A68E4E1A723CD9ULL, 0xDB6FD9480E25B28FULL } }, /* XSUM_XXH128_testdata[393] */ + { 131, 0x000000009E3779B1ULL, { 0xE6623C11F08FEED9ULL, 0x04854D7A8DD8C887ULL } }, /* XSUM_XXH128_testdata[394] */ + { 131, 0x9E3779B185EBCA8DULL, { 0x2EEE92A467C6BD9DULL, 0xD132FB363EE04A40ULL } }, /* XSUM_XXH128_testdata[395] */ + { 132, 0x0000000000000000ULL, { 0xD3CD173CFE2A46F8ULL, 0x6FE6FF322C659EE4ULL } }, /* XSUM_XXH128_testdata[396] */ + { 132, 0x000000009E3779B1ULL, { 0xECE4886A21B7B354ULL, 0x186AF2B80426D4F2ULL } }, /* XSUM_XXH128_testdata[397] */ + { 132, 0x9E3779B185EBCA8DULL, { 0x76A0E934130952A4ULL, 0xD49012DD9657D5D3ULL } }, /* XSUM_XXH128_testdata[398] */ + { 133, 0x0000000000000000ULL, { 0xFB05A39ED5ED0DC2ULL, 0xF28DB9BCFEDB59F4ULL } }, /* XSUM_XXH128_testdata[399] */ + { 133, 0x000000009E3779B1ULL, { 0x322AAEA581D0BA3DULL, 0x3949FECEEEA6E47CULL } }, /* XSUM_XXH128_testdata[400] */ + { 133, 0x9E3779B185EBCA8DULL, { 0x0E5BD21FA3DF3D7BULL, 0x787C341C196F469BULL } }, /* XSUM_XXH128_testdata[401] */ + { 134, 0x0000000000000000ULL, { 0x60FDC3103789E42AULL, 0xA679218704C206F9ULL } }, /* XSUM_XXH128_testdata[402] */ + { 134, 0x000000009E3779B1ULL, { 0xBA80A97CE0734F20ULL, 0xA712B539A6463AA0ULL } }, /* XSUM_XXH128_testdata[403] */ + { 134, 0x9E3779B185EBCA8DULL, { 0xEBE3B585E22F2E80ULL, 0xBFF8880F4F9558C0ULL } }, /* XSUM_XXH128_testdata[404] */ + { 135, 0x0000000000000000ULL, { 0x70CC82687B4D26A6ULL, 0xDA9588154C0D7D52ULL } }, /* XSUM_XXH128_testdata[405] */ + { 135, 0x000000009E3779B1ULL, { 0x4B15D843CE698241ULL, 0xCD9C51CC85D232DCULL } }, /* XSUM_XXH128_testdata[406] */ + { 135, 0x9E3779B185EBCA8DULL, { 0xC2E436E2F3911DFEULL, 0xA8CBD0B492FFAFCAULL } }, /* XSUM_XXH128_testdata[407] */ + { 136, 0x0000000000000000ULL, { 0x2D7F5A0B8DE9DBE2ULL, 0x31559ABED93686A2ULL } }, /* XSUM_XXH128_testdata[408] */ + { 136, 0x000000009E3779B1ULL, { 0x149894095C6349E6ULL, 0xE5F243F2750BB526ULL } }, /* XSUM_XXH128_testdata[409] */ + { 136, 0x9E3779B185EBCA8DULL, { 0x839A54295AD0F8B4ULL, 0xF1BF48BF5E5EC565ULL } }, /* XSUM_XXH128_testdata[410] */ + { 137, 0x0000000000000000ULL, { 0x77FFE53D6FF3A45EULL, 0x99FAF7552BD08FE5ULL } }, /* XSUM_XXH128_testdata[411] */ + { 137, 0x000000009E3779B1ULL, { 0x5E2731670605BD8AULL, 0xC3EE83B78101DD03ULL } }, /* XSUM_XXH128_testdata[412] */ + { 137, 0x9E3779B185EBCA8DULL, { 0xE632B29C97907EE4ULL, 0x99AF7A4F363622E2ULL } }, /* XSUM_XXH128_testdata[413] */ + { 138, 0x0000000000000000ULL, { 0x0153EFF4BF147B2EULL, 0xA7284226C75879EFULL } }, /* XSUM_XXH128_testdata[414] */ + { 138, 0x000000009E3779B1ULL, { 0x168B837889200687ULL, 0x34E4298980BBAF00ULL } }, /* XSUM_XXH128_testdata[415] */ + { 138, 0x9E3779B185EBCA8DULL, { 0xB09E3F3BF356F386ULL, 0x75571836F57663DEULL } }, /* XSUM_XXH128_testdata[416] */ + { 139, 0x0000000000000000ULL, { 0xC8469CA23996877EULL, 0x25FD71D22BB3C7AFULL } }, /* XSUM_XXH128_testdata[417] */ + { 139, 0x000000009E3779B1ULL, { 0xACB1ED4C6D1752B8ULL, 0xF21E8C37D6DDBA51ULL } }, /* XSUM_XXH128_testdata[418] */ + { 139, 0x9E3779B185EBCA8DULL, { 0x5F07BACF719B9F3FULL, 0x98DAB323D83C96AAULL } }, /* XSUM_XXH128_testdata[419] */ + { 140, 0x0000000000000000ULL, { 0xED9989B70CE1316AULL, 0xE60F153CF2250422ULL } }, /* XSUM_XXH128_testdata[420] */ + { 140, 0x000000009E3779B1ULL, { 0x323B5760491081C3ULL, 0x416FEE87188D80E0ULL } }, /* XSUM_XXH128_testdata[421] */ + { 140, 0x9E3779B185EBCA8DULL, { 0x910D6E3506B4EF9FULL, 0xF6BE7B8D253D1B46ULL } }, /* XSUM_XXH128_testdata[422] */ + { 141, 0x0000000000000000ULL, { 0x7C9EBD5A10698091ULL, 0xD742115330A660E1ULL } }, /* XSUM_XXH128_testdata[423] */ + { 141, 0x000000009E3779B1ULL, { 0x7255C59EACAB5302ULL, 0x84560FA5E5E0669EULL } }, /* XSUM_XXH128_testdata[424] */ + { 141, 0x9E3779B185EBCA8DULL, { 0xE132766C53493CD8ULL, 0xD9DC920DC9BE2BD8ULL } }, /* XSUM_XXH128_testdata[425] */ + { 142, 0x0000000000000000ULL, { 0xA485A2E1A9CF87D4ULL, 0x1D2C8CC4C252E479ULL } }, /* XSUM_XXH128_testdata[426] */ + { 142, 0x000000009E3779B1ULL, { 0xE7C72930BFFEB4EDULL, 0xFFB8094B29DD8505ULL } }, /* XSUM_XXH128_testdata[427] */ + { 142, 0x9E3779B185EBCA8DULL, { 0xC7D31FAA957B1F88ULL, 0x0183A4BB6B82436FULL } }, /* XSUM_XXH128_testdata[428] */ + { 143, 0x0000000000000000ULL, { 0xF78F1BA6D125F4CAULL, 0x50F51D7620BC4CCDULL } }, /* XSUM_XXH128_testdata[429] */ + { 143, 0x000000009E3779B1ULL, { 0x690490F7B64D8034ULL, 0x81D07893DBB53EC1ULL } }, /* XSUM_XXH128_testdata[430] */ + { 143, 0x9E3779B185EBCA8DULL, { 0xFDD8F2790B0B4892ULL, 0x52E8FE4E3B3D974DULL } }, /* XSUM_XXH128_testdata[431] */ + { 144, 0x0000000000000000ULL, { 0x7A9080376C0E4B95ULL, 0x19A5EE4A79AA5123ULL } }, /* XSUM_XXH128_testdata[432] */ + { 144, 0x000000009E3779B1ULL, { 0xCD02A5D75A538041ULL, 0x9CE270294A250167ULL } }, /* XSUM_XXH128_testdata[433] */ + { 144, 0x9E3779B185EBCA8DULL, { 0x3F757AA797A6DFCCULL, 0xE93BF6D2478A9C7EULL } }, /* XSUM_XXH128_testdata[434] */ + { 145, 0x0000000000000000ULL, { 0x9225A44C6C1C1C4FULL, 0x4A72A70815C6A1E3ULL } }, /* XSUM_XXH128_testdata[435] */ + { 145, 0x000000009E3779B1ULL, { 0xF9A505AD35B1D1A1ULL, 0xD32603702F549CB2ULL } }, /* XSUM_XXH128_testdata[436] */ + { 145, 0x9E3779B185EBCA8DULL, { 0xD7EE4677DA29E246ULL, 0xE5A0A526434820A7ULL } }, /* XSUM_XXH128_testdata[437] */ + { 146, 0x0000000000000000ULL, { 0x40A15985719F30AFULL, 0x3AF89AB266FF47E9ULL } }, /* XSUM_XXH128_testdata[438] */ + { 146, 0x000000009E3779B1ULL, { 0x70FDEE50043CA8CEULL, 0x2CADFCC11196EF12ULL } }, /* XSUM_XXH128_testdata[439] */ + { 146, 0x9E3779B185EBCA8DULL, { 0xB44548C62B937522ULL, 0xC98DD5068F11BB62ULL } }, /* XSUM_XXH128_testdata[440] */ + { 147, 0x0000000000000000ULL, { 0x21D82898DB0F38D6ULL, 0xF17CF18AB0FB1AD6ULL } }, /* XSUM_XXH128_testdata[441] */ + { 147, 0x000000009E3779B1ULL, { 0x39380B0117C13CBAULL, 0xD22751DD43CFCBC2ULL } }, /* XSUM_XXH128_testdata[442] */ + { 147, 0x9E3779B185EBCA8DULL, { 0x45E700951B437480ULL, 0x53891CB7D2D426C7ULL } }, /* XSUM_XXH128_testdata[443] */ + { 148, 0x0000000000000000ULL, { 0xD839C7301D20E1FBULL, 0xF646940B63AB176DULL } }, /* XSUM_XXH128_testdata[444] */ + { 148, 0x000000009E3779B1ULL, { 0xAE8251CCAEF02A36ULL, 0x3C56F1B980E8010DULL } }, /* XSUM_XXH128_testdata[445] */ + { 148, 0x9E3779B185EBCA8DULL, { 0x35945EB4E874EAF2ULL, 0xCFEFF02FB2189151ULL } }, /* XSUM_XXH128_testdata[446] */ + { 149, 0x0000000000000000ULL, { 0x0C445119F40CE6DEULL, 0x8DC51E994A0AC308ULL } }, /* XSUM_XXH128_testdata[447] */ + { 149, 0x000000009E3779B1ULL, { 0xCFE993F724D8953DULL, 0x0F4481EB4D101766ULL } }, /* XSUM_XXH128_testdata[448] */ + { 149, 0x9E3779B185EBCA8DULL, { 0x1D2361BF767A86B4ULL, 0x61DE05E593958AE9ULL } }, /* XSUM_XXH128_testdata[449] */ + { 150, 0x0000000000000000ULL, { 0x709C3E3190C65781ULL, 0xCD033E3570AA7910ULL } }, /* XSUM_XXH128_testdata[450] */ + { 150, 0x000000009E3779B1ULL, { 0xF7C5AA76AA724104ULL, 0x4397E341E4FC5863ULL } }, /* XSUM_XXH128_testdata[451] */ + { 150, 0x9E3779B185EBCA8DULL, { 0x679FCCD06DFD8638ULL, 0x84A028E0DCE2F968ULL } }, /* XSUM_XXH128_testdata[452] */ + { 151, 0x0000000000000000ULL, { 0x439E485CC84385ACULL, 0x96D3888A6C5D736FULL } }, /* XSUM_XXH128_testdata[453] */ + { 151, 0x000000009E3779B1ULL, { 0xDFCE791E907DECD2ULL, 0x585718F8E4AF9957ULL } }, /* XSUM_XXH128_testdata[454] */ + { 151, 0x9E3779B185EBCA8DULL, { 0x14159F21D8F49239ULL, 0xC347CDF51580405DULL } }, /* XSUM_XXH128_testdata[455] */ + { 152, 0x0000000000000000ULL, { 0x9420B2B4CC4F9009ULL, 0xC6ED1B2965A019C7ULL } }, /* XSUM_XXH128_testdata[456] */ + { 152, 0x000000009E3779B1ULL, { 0xF1320477F3A9D298ULL, 0x26BA6A67A3088EBDULL } }, /* XSUM_XXH128_testdata[457] */ + { 152, 0x9E3779B185EBCA8DULL, { 0x93C0FF7874E89F39ULL, 0x33B15589CE260F4EULL } }, /* XSUM_XXH128_testdata[458] */ + { 153, 0x0000000000000000ULL, { 0xFBE0A1AF66B5CB47ULL, 0x8038658C1A25843BULL } }, /* XSUM_XXH128_testdata[459] */ + { 153, 0x000000009E3779B1ULL, { 0x6AE60E33B5C811BFULL, 0x8EC69441FAA270D3ULL } }, /* XSUM_XXH128_testdata[460] */ + { 153, 0x9E3779B185EBCA8DULL, { 0x5E1A7144B96A690AULL, 0xE1B1D6D59CB7500BULL } }, /* XSUM_XXH128_testdata[461] */ + { 154, 0x0000000000000000ULL, { 0x665B782DCCC04A28ULL, 0x86F010070B0F6168ULL } }, /* XSUM_XXH128_testdata[462] */ + { 154, 0x000000009E3779B1ULL, { 0x8413DB8D4AC122C1ULL, 0x3B4010F3186BAA56ULL } }, /* XSUM_XXH128_testdata[463] */ + { 154, 0x9E3779B185EBCA8DULL, { 0x911381B9D5057D1EULL, 0x552BA223F182F2B6ULL } }, /* XSUM_XXH128_testdata[464] */ + { 155, 0x0000000000000000ULL, { 0xE5716C6BC16C0A12ULL, 0xF627B85C8BB33F39ULL } }, /* XSUM_XXH128_testdata[465] */ + { 155, 0x000000009E3779B1ULL, { 0x0BA453CEC3BEA042ULL, 0x5A0154F2B2AC28E2ULL } }, /* XSUM_XXH128_testdata[466] */ + { 155, 0x9E3779B185EBCA8DULL, { 0x77066AEF097D0399ULL, 0x4CF40129FD821538ULL } }, /* XSUM_XXH128_testdata[467] */ + { 156, 0x0000000000000000ULL, { 0xEC07A411862810BCULL, 0xBA173954CCCAECBEULL } }, /* XSUM_XXH128_testdata[468] */ + { 156, 0x000000009E3779B1ULL, { 0x6655545410859452ULL, 0x5354CFBC79F61730ULL } }, /* XSUM_XXH128_testdata[469] */ + { 156, 0x9E3779B185EBCA8DULL, { 0x1C33D50FB905E0ECULL, 0x31B25BF842D0B6C6ULL } }, /* XSUM_XXH128_testdata[470] */ + { 157, 0x0000000000000000ULL, { 0xF8CEFDC55ED68ACDULL, 0xBDB71850E0313847ULL } }, /* XSUM_XXH128_testdata[471] */ + { 157, 0x000000009E3779B1ULL, { 0x04A423449A963BD7ULL, 0xC508E8FB5612B401ULL } }, /* XSUM_XXH128_testdata[472] */ + { 157, 0x9E3779B185EBCA8DULL, { 0x0214B87F711AFBADULL, 0xB29D8E8A7E1A990EULL } }, /* XSUM_XXH128_testdata[473] */ + { 158, 0x0000000000000000ULL, { 0x05FDEC4A362F5BB3ULL, 0x34D03563FF3494EFULL } }, /* XSUM_XXH128_testdata[474] */ + { 158, 0x000000009E3779B1ULL, { 0x549E0F24FA709B1DULL, 0xE6C08FD28245F36DULL } }, /* XSUM_XXH128_testdata[475] */ + { 158, 0x9E3779B185EBCA8DULL, { 0x109B72FAE88C0693ULL, 0x764D445CA5DD7B7BULL } }, /* XSUM_XXH128_testdata[476] */ + { 159, 0x0000000000000000ULL, { 0x996ED46536CC0EF5ULL, 0x37562EA4AC14C650ULL } }, /* XSUM_XXH128_testdata[477] */ + { 159, 0x000000009E3779B1ULL, { 0xD21A18E94171F9A8ULL, 0xE1B6E30FBE450D08ULL } }, /* XSUM_XXH128_testdata[478] */ + { 159, 0x9E3779B185EBCA8DULL, { 0x9BB496BB4447B646ULL, 0xC6F19F9E4243B251ULL } }, /* XSUM_XXH128_testdata[479] */ + { 160, 0x0000000000000000ULL, { 0x737126C8D7C09CEEULL, 0xBA5D218964B622ADULL } }, /* XSUM_XXH128_testdata[480] */ + { 160, 0x000000009E3779B1ULL, { 0x1D704868FFB6EE1BULL, 0xA9BBBF6674F8D58BULL } }, /* XSUM_XXH128_testdata[481] */ + { 160, 0x9E3779B185EBCA8DULL, { 0x46A4A3F67CCD556EULL, 0xC6B7ABC26DEF52ACULL } }, /* XSUM_XXH128_testdata[482] */ + { 161, 0x0000000000000000ULL, { 0x524BF4F00D882C4EULL, 0x58621E54439EE75CULL } }, /* XSUM_XXH128_testdata[483] */ + { 161, 0x000000009E3779B1ULL, { 0xA7363F022EAA59B7ULL, 0x8D2FFF2FC20AD14AULL } }, /* XSUM_XXH128_testdata[484] */ + { 161, 0x9E3779B185EBCA8DULL, { 0x969723DC5EB12AEBULL, 0x940856FBF1AB951DULL } }, /* XSUM_XXH128_testdata[485] */ + { 162, 0x0000000000000000ULL, { 0x7CF2E61CE6B123EBULL, 0xED96D13029A46949ULL } }, /* XSUM_XXH128_testdata[486] */ + { 162, 0x000000009E3779B1ULL, { 0xACD232E85A29D7A4ULL, 0x9CF03D7B20A8E3B9ULL } }, /* XSUM_XXH128_testdata[487] */ + { 162, 0x9E3779B185EBCA8DULL, { 0x9D81B8EFBD4CC484ULL, 0x62418816D0248021ULL } }, /* XSUM_XXH128_testdata[488] */ + { 163, 0x0000000000000000ULL, { 0x604AAF2FC58B4F46ULL, 0x25CCC325ABFE2291ULL } }, /* XSUM_XXH128_testdata[489] */ + { 163, 0x000000009E3779B1ULL, { 0xA4871DA417746C07ULL, 0x1F191FAEE13AB03AULL } }, /* XSUM_XXH128_testdata[490] */ + { 163, 0x9E3779B185EBCA8DULL, { 0x12757D04DEDCE068ULL, 0x0C4A99631E46FCD2ULL } }, /* XSUM_XXH128_testdata[491] */ + { 164, 0x0000000000000000ULL, { 0x139817F6A479DEAEULL, 0x90C51D4A01A92DD4ULL } }, /* XSUM_XXH128_testdata[492] */ + { 164, 0x000000009E3779B1ULL, { 0x1FF333F07D6CDE89ULL, 0x286A4CDB24538FF5ULL } }, /* XSUM_XXH128_testdata[493] */ + { 164, 0x9E3779B185EBCA8DULL, { 0xFC8B8C2F1DC7ECAFULL, 0x687D49C2D55209ACULL } }, /* XSUM_XXH128_testdata[494] */ + { 165, 0x0000000000000000ULL, { 0x29D2E006C1272E59ULL, 0x38427C603A3C21FAULL } }, /* XSUM_XXH128_testdata[495] */ + { 165, 0x000000009E3779B1ULL, { 0xB29EA958A48BEF2CULL, 0x1FCF3DFD2EDB2858ULL } }, /* XSUM_XXH128_testdata[496] */ + { 165, 0x9E3779B185EBCA8DULL, { 0xEA25B077C6876685ULL, 0x7EA73F264B437B92ULL } }, /* XSUM_XXH128_testdata[497] */ + { 166, 0x0000000000000000ULL, { 0x365D232548A2A000ULL, 0x88A32D78085046C8ULL } }, /* XSUM_XXH128_testdata[498] */ + { 166, 0x000000009E3779B1ULL, { 0x9961177E0D732B3EULL, 0x37C667F5AECE020EULL } }, /* XSUM_XXH128_testdata[499] */ + { 166, 0x9E3779B185EBCA8DULL, { 0xA52AA8E2351B26B6ULL, 0x729254B0E2E3BAF4ULL } }, /* XSUM_XXH128_testdata[500] */ + { 167, 0x0000000000000000ULL, { 0xA420AA65E515D3E3ULL, 0x2E7FEE967056790FULL } }, /* XSUM_XXH128_testdata[501] */ + { 167, 0x000000009E3779B1ULL, { 0x5F09A37F733347FCULL, 0xD58FC6CFB14CA8F0ULL } }, /* XSUM_XXH128_testdata[502] */ + { 167, 0x9E3779B185EBCA8DULL, { 0xA0B93F3BDBBE82B3ULL, 0x0BFBAFC9ADE614B4ULL } }, /* XSUM_XXH128_testdata[503] */ + { 168, 0x0000000000000000ULL, { 0xEB4270667F3E083DULL, 0x056D83D0E4962923ULL } }, /* XSUM_XXH128_testdata[504] */ + { 168, 0x000000009E3779B1ULL, { 0x95C6A8076EC36C10ULL, 0xB893779E7B52FF67ULL } }, /* XSUM_XXH128_testdata[505] */ + { 168, 0x9E3779B185EBCA8DULL, { 0xB4F88D42549E2934ULL, 0x6A47F866A0820F0AULL } }, /* XSUM_XXH128_testdata[506] */ + { 169, 0x0000000000000000ULL, { 0xF087F6B500497312ULL, 0xCABE57F9E0561CD7ULL } }, /* XSUM_XXH128_testdata[507] */ + { 169, 0x000000009E3779B1ULL, { 0xBCE27B985B884049ULL, 0x80BF0AFC4C9A6F74ULL } }, /* XSUM_XXH128_testdata[508] */ + { 169, 0x9E3779B185EBCA8DULL, { 0x754D47CEE8F148DEULL, 0x489ADE6F4A1624EBULL } }, /* XSUM_XXH128_testdata[509] */ + { 170, 0x0000000000000000ULL, { 0xD9F1E8DBA33B6C77ULL, 0xB8A6DD8655688E87ULL } }, /* XSUM_XXH128_testdata[510] */ + { 170, 0x000000009E3779B1ULL, { 0x3F88520576385162ULL, 0x263C0A0550EFC688ULL } }, /* XSUM_XXH128_testdata[511] */ + { 170, 0x9E3779B185EBCA8DULL, { 0x138351CCA0B62376ULL, 0x42DED80911FFD395ULL } }, /* XSUM_XXH128_testdata[512] */ + { 171, 0x0000000000000000ULL, { 0xBFD80BD8594A6B78ULL, 0x4F69E052DCFE6262ULL } }, /* XSUM_XXH128_testdata[513] */ + { 171, 0x000000009E3779B1ULL, { 0x8EAF49000D25B63BULL, 0x433E21488889A0A6ULL } }, /* XSUM_XXH128_testdata[514] */ + { 171, 0x9E3779B185EBCA8DULL, { 0xDC8A3B8DE5E863B3ULL, 0x7090E116D95FC60EULL } }, /* XSUM_XXH128_testdata[515] */ + { 172, 0x0000000000000000ULL, { 0x780C36739A852F25ULL, 0xA7E2EA094274B5D4ULL } }, /* XSUM_XXH128_testdata[516] */ + { 172, 0x000000009E3779B1ULL, { 0x03A758619840572EULL, 0xF28DD093C5361280ULL } }, /* XSUM_XXH128_testdata[517] */ + { 172, 0x9E3779B185EBCA8DULL, { 0x9FC412E027E7E358ULL, 0xA8C23B3130A5E17FULL } }, /* XSUM_XXH128_testdata[518] */ + { 173, 0x0000000000000000ULL, { 0xAB2241924335A85AULL, 0x94D1A99001D5B6F1ULL } }, /* XSUM_XXH128_testdata[519] */ + { 173, 0x000000009E3779B1ULL, { 0xBE8CAFA700F81F8EULL, 0x6323CDB5605D3056ULL } }, /* XSUM_XXH128_testdata[520] */ + { 173, 0x9E3779B185EBCA8DULL, { 0x90A91C9F428DBFD3ULL, 0xCB3902983AB10509ULL } }, /* XSUM_XXH128_testdata[521] */ + { 174, 0x0000000000000000ULL, { 0x574E6CDC0F7E41DEULL, 0x16C76F1384003D1BULL } }, /* XSUM_XXH128_testdata[522] */ + { 174, 0x000000009E3779B1ULL, { 0x4746962EBFF89DCBULL, 0xE01A604288BF64BCULL } }, /* XSUM_XXH128_testdata[523] */ + { 174, 0x9E3779B185EBCA8DULL, { 0x8893352EE38BD483ULL, 0x460837CB90F0E654ULL } }, /* XSUM_XXH128_testdata[524] */ + { 175, 0x0000000000000000ULL, { 0x610FEEE7A8284D41ULL, 0x7C02129665C4658DULL } }, /* XSUM_XXH128_testdata[525] */ + { 175, 0x000000009E3779B1ULL, { 0x7B6272DAE3EF46ACULL, 0xD1FD60FF78C0E440ULL } }, /* XSUM_XXH128_testdata[526] */ + { 175, 0x9E3779B185EBCA8DULL, { 0x463691661D22B735ULL, 0x3CF14F9E62E44ED4ULL } }, /* XSUM_XXH128_testdata[527] */ + { 176, 0x0000000000000000ULL, { 0x44D5606C76F151ADULL, 0xF90FFA43B3A4CD01ULL } }, /* XSUM_XXH128_testdata[528] */ + { 176, 0x000000009E3779B1ULL, { 0x3A13B7E5DD45532CULL, 0xEB3BCDBA5C9BC40AULL } }, /* XSUM_XXH128_testdata[529] */ + { 176, 0x9E3779B185EBCA8DULL, { 0x1D04BD13600700FCULL, 0x613A5CC0F6AC8C64ULL } }, /* XSUM_XXH128_testdata[530] */ + { 177, 0x0000000000000000ULL, { 0xA4D10FBCDEBE1D87ULL, 0x5E0198288258C06AULL } }, /* XSUM_XXH128_testdata[531] */ + { 177, 0x000000009E3779B1ULL, { 0x78FBC4B5458AC6D6ULL, 0x710D425E819F6FCFULL } }, /* XSUM_XXH128_testdata[532] */ + { 177, 0x9E3779B185EBCA8DULL, { 0xE4701AA17FDA3CC6ULL, 0x047F78D87C17371AULL } }, /* XSUM_XXH128_testdata[533] */ + { 178, 0x0000000000000000ULL, { 0xD530543C56325AA6ULL, 0x1C652FF1237BE271ULL } }, /* XSUM_XXH128_testdata[534] */ + { 178, 0x000000009E3779B1ULL, { 0x7AD6FDCBF2D7E4FFULL, 0x0C6DCD2B4B9D05E4ULL } }, /* XSUM_XXH128_testdata[535] */ + { 178, 0x9E3779B185EBCA8DULL, { 0x8B3253CD68130CEEULL, 0x1914781A48E3359AULL } }, /* XSUM_XXH128_testdata[536] */ + { 179, 0x0000000000000000ULL, { 0xC1E251824DCFB5BDULL, 0x7425597A0ADC6F9EULL } }, /* XSUM_XXH128_testdata[537] */ + { 179, 0x000000009E3779B1ULL, { 0x595DFD7B3905A785ULL, 0x126B55DBF414D7BBULL } }, /* XSUM_XXH128_testdata[538] */ + { 179, 0x9E3779B185EBCA8DULL, { 0x9722F4368CF844FBULL, 0x73C788144D19B870ULL } }, /* XSUM_XXH128_testdata[539] */ + { 180, 0x0000000000000000ULL, { 0xA0F944F6FD194D87ULL, 0x641CFBD57B394906ULL } }, /* XSUM_XXH128_testdata[540] */ + { 180, 0x000000009E3779B1ULL, { 0xE3D7CED3B798C99BULL, 0x4F6DD26744C4473DULL } }, /* XSUM_XXH128_testdata[541] */ + { 180, 0x9E3779B185EBCA8DULL, { 0x58EB13D0324FC412ULL, 0x94ECF18291ED3173ULL } }, /* XSUM_XXH128_testdata[542] */ + { 181, 0x0000000000000000ULL, { 0x5B13ACA312A121F2ULL, 0xA0C08821C110495DULL } }, /* XSUM_XXH128_testdata[543] */ + { 181, 0x000000009E3779B1ULL, { 0x179956EDA9DE7474ULL, 0x7CDBEB9A840C4CE8ULL } }, /* XSUM_XXH128_testdata[544] */ + { 181, 0x9E3779B185EBCA8DULL, { 0x1E51B4B107A8EA5CULL, 0xD58B5078105870E4ULL } }, /* XSUM_XXH128_testdata[545] */ + { 182, 0x0000000000000000ULL, { 0x1907A81E5F749F6CULL, 0xB983370C90BEF231ULL } }, /* XSUM_XXH128_testdata[546] */ + { 182, 0x000000009E3779B1ULL, { 0x05E7F0B36DD8CB0CULL, 0x8398ADA57C556952ULL } }, /* XSUM_XXH128_testdata[547] */ + { 182, 0x9E3779B185EBCA8DULL, { 0x23637A8450EDD0E0ULL, 0xBC5498F9F8943F4DULL } }, /* XSUM_XXH128_testdata[548] */ + { 183, 0x0000000000000000ULL, { 0xB38F58407EC89D80ULL, 0x2287F3DF41CF01C1ULL } }, /* XSUM_XXH128_testdata[549] */ + { 183, 0x000000009E3779B1ULL, { 0xFAFDDF7231A7570DULL, 0x682501379F6DA24EULL } }, /* XSUM_XXH128_testdata[550] */ + { 183, 0x9E3779B185EBCA8DULL, { 0xA72F9A73DF88AFB0ULL, 0xB43A50EF2834272FULL } }, /* XSUM_XXH128_testdata[551] */ + { 184, 0x0000000000000000ULL, { 0x349E98954831A5AAULL, 0x1EFD3521A871FED3ULL } }, /* XSUM_XXH128_testdata[552] */ + { 184, 0x000000009E3779B1ULL, { 0xCA6E7A443E9ED871ULL, 0xB938434B41B405DEULL } }, /* XSUM_XXH128_testdata[553] */ + { 184, 0x9E3779B185EBCA8DULL, { 0x9537C2CB7AC8DFE4ULL, 0xC3D45C0287753BC0ULL } }, /* XSUM_XXH128_testdata[554] */ + { 185, 0x0000000000000000ULL, { 0x669EA6CC6E093E83ULL, 0x741ED464EB81E275ULL } }, /* XSUM_XXH128_testdata[555] */ + { 185, 0x000000009E3779B1ULL, { 0x5A691A43A237D346ULL, 0x383092EAEFD29E97ULL } }, /* XSUM_XXH128_testdata[556] */ + { 185, 0x9E3779B185EBCA8DULL, { 0x3560644D9962ABF7ULL, 0x7B58C133A0DC52AFULL } }, /* XSUM_XXH128_testdata[557] */ + { 186, 0x0000000000000000ULL, { 0x38652877018DF616ULL, 0xB50ABA2B0481E617ULL } }, /* XSUM_XXH128_testdata[558] */ + { 186, 0x000000009E3779B1ULL, { 0x78167CFA75FD08D1ULL, 0xB6F3C4ED0F162678ULL } }, /* XSUM_XXH128_testdata[559] */ + { 186, 0x9E3779B185EBCA8DULL, { 0xC055F1E5FF617CDBULL, 0xEA02097AFA84D1B7ULL } }, /* XSUM_XXH128_testdata[560] */ + { 187, 0x0000000000000000ULL, { 0xD0402B24F4B7498BULL, 0xDDB2644A68C1F2F9ULL } }, /* XSUM_XXH128_testdata[561] */ + { 187, 0x000000009E3779B1ULL, { 0xC765757972E19A24ULL, 0x8EF7B4C2222887D5ULL } }, /* XSUM_XXH128_testdata[562] */ + { 187, 0x9E3779B185EBCA8DULL, { 0x5C1C11DC6C472E99ULL, 0xC9E079094F9DD6C1ULL } }, /* XSUM_XXH128_testdata[563] */ + { 188, 0x0000000000000000ULL, { 0x48F8A291FA8BAA16ULL, 0xD2AC8ECB6EBCE5DDULL } }, /* XSUM_XXH128_testdata[564] */ + { 188, 0x000000009E3779B1ULL, { 0x6D5379F122993202ULL, 0x04F8193186A526CAULL } }, /* XSUM_XXH128_testdata[565] */ + { 188, 0x9E3779B185EBCA8DULL, { 0x6226D8EDD603F185ULL, 0xFAF9061F16D1B574ULL } }, /* XSUM_XXH128_testdata[566] */ + { 189, 0x0000000000000000ULL, { 0x3A77D72B528E0791ULL, 0xDF9226E66D8AD1F6ULL } }, /* XSUM_XXH128_testdata[567] */ + { 189, 0x000000009E3779B1ULL, { 0x5F7B9E8AE77FA96FULL, 0x73165E30B7F20B89ULL } }, /* XSUM_XXH128_testdata[568] */ + { 189, 0x9E3779B185EBCA8DULL, { 0xE25E71DF802A1016ULL, 0x67FBC92D331FA6F6ULL } }, /* XSUM_XXH128_testdata[569] */ + { 190, 0x0000000000000000ULL, { 0x9C4FC4AE42F83107ULL, 0xB059519050F5449CULL } }, /* XSUM_XXH128_testdata[570] */ + { 190, 0x000000009E3779B1ULL, { 0x50716926C52094AFULL, 0xB65DC4D25E9EE108ULL } }, /* XSUM_XXH128_testdata[571] */ + { 190, 0x9E3779B185EBCA8DULL, { 0xEDDC4FBAF6D71544ULL, 0x082E83D0B88AEDA7ULL } }, /* XSUM_XXH128_testdata[572] */ + { 191, 0x0000000000000000ULL, { 0xC4333111AB47A522ULL, 0xAA394FFEB17611EBULL } }, /* XSUM_XXH128_testdata[573] */ + { 191, 0x000000009E3779B1ULL, { 0xBC38503BF6E9EFC0ULL, 0x0B6F255A93C05F6EULL } }, /* XSUM_XXH128_testdata[574] */ + { 191, 0x9E3779B185EBCA8DULL, { 0x06F164304A859F69ULL, 0x43AABE2A06795E26ULL } }, /* XSUM_XXH128_testdata[575] */ + { 192, 0x0000000000000000ULL, { 0x0679E7F625E389D9ULL, 0x064934DB40706C3DULL } }, /* XSUM_XXH128_testdata[576] */ + { 192, 0x000000009E3779B1ULL, { 0x1F61A9EDE18471C0ULL, 0xE61EC432861AD07BULL } }, /* XSUM_XXH128_testdata[577] */ + { 192, 0x9E3779B185EBCA8DULL, { 0xFD5412027E573A96ULL, 0xC1E549BAF8D0D863ULL } }, /* XSUM_XXH128_testdata[578] */ + { 193, 0x0000000000000000ULL, { 0xF4DAF8B3794D1844ULL, 0x6FF6EAFCA24D9E4AULL } }, /* XSUM_XXH128_testdata[579] */ + { 193, 0x000000009E3779B1ULL, { 0x0AA3E548F51ECC50ULL, 0x5377879A2A417498ULL } }, /* XSUM_XXH128_testdata[580] */ + { 193, 0x9E3779B185EBCA8DULL, { 0xC1C5B9E605DD07D2ULL, 0x888253509EE437E7ULL } }, /* XSUM_XXH128_testdata[581] */ + { 194, 0x0000000000000000ULL, { 0xE5F72E7BB645B7B2ULL, 0x322C6E246D38A4E8ULL } }, /* XSUM_XXH128_testdata[582] */ + { 194, 0x000000009E3779B1ULL, { 0x0594A9F9F495D2A8ULL, 0x037D5951F31D1A81ULL } }, /* XSUM_XXH128_testdata[583] */ + { 194, 0x9E3779B185EBCA8DULL, { 0xBEE4A1EF7B67B100ULL, 0xBB27727F8657DCB5ULL } }, /* XSUM_XXH128_testdata[584] */ + { 195, 0x0000000000000000ULL, { 0x3FB593C086A66075ULL, 0x7729543A26B207EEULL } }, /* XSUM_XXH128_testdata[585] */ + { 195, 0x000000009E3779B1ULL, { 0x6447716EBBD2DA99ULL, 0xC45384C328326617ULL } }, /* XSUM_XXH128_testdata[586] */ + { 195, 0x9E3779B185EBCA8DULL, { 0xCF9D9EC2C8C9913FULL, 0x0326104C4D4849E7ULL } }, /* XSUM_XXH128_testdata[587] */ + { 196, 0x0000000000000000ULL, { 0x7202316FA37C2B4BULL, 0xBB56E7FF41511773ULL } }, /* XSUM_XXH128_testdata[588] */ + { 196, 0x000000009E3779B1ULL, { 0xFED6104A7769FFD2ULL, 0xC2C73AC782F50676ULL } }, /* XSUM_XXH128_testdata[589] */ + { 196, 0x9E3779B185EBCA8DULL, { 0x9D7334E429A869E2ULL, 0x268279B1238A4929ULL } }, /* XSUM_XXH128_testdata[590] */ + { 197, 0x0000000000000000ULL, { 0x648F6DEE25CE5A4FULL, 0x0BF8AC12828EEF8BULL } }, /* XSUM_XXH128_testdata[591] */ + { 197, 0x000000009E3779B1ULL, { 0x51CA7E9FA1A70A14ULL, 0x53D2923F642D3AF5ULL } }, /* XSUM_XXH128_testdata[592] */ + { 197, 0x9E3779B185EBCA8DULL, { 0x05421C68539C742BULL, 0xCCBC96BD632877F5ULL } }, /* XSUM_XXH128_testdata[593] */ + { 198, 0x0000000000000000ULL, { 0x3640428F4FF482F6ULL, 0x476AC20CBCB5BA69ULL } }, /* XSUM_XXH128_testdata[594] */ + { 198, 0x000000009E3779B1ULL, { 0x215D1CD9C8D883AEULL, 0xFA7936E491FD6C66ULL } }, /* XSUM_XXH128_testdata[595] */ + { 198, 0x9E3779B185EBCA8DULL, { 0x29E640AC85E3C26FULL, 0x6EA4D73E87AD183FULL } }, /* XSUM_XXH128_testdata[596] */ + { 199, 0x0000000000000000ULL, { 0xD7FF020BE2D49BAAULL, 0x7EC8A477B2E61AC8ULL } }, /* XSUM_XXH128_testdata[597] */ + { 199, 0x000000009E3779B1ULL, { 0x8F2479788869E675ULL, 0xFC39FDE2BA5A99E6ULL } }, /* XSUM_XXH128_testdata[598] */ + { 199, 0x9E3779B185EBCA8DULL, { 0x3204C3AABE0F5BF1ULL, 0x69C5BD6DAB502D65ULL } }, /* XSUM_XXH128_testdata[599] */ + { 200, 0x0000000000000000ULL, { 0xEB060F1BB3126F5AULL, 0xE76FF4780FE18439ULL } }, /* XSUM_XXH128_testdata[600] */ + { 200, 0x000000009E3779B1ULL, { 0xA2792C9130AFF570ULL, 0x319985508BBB649EULL } }, /* XSUM_XXH128_testdata[601] */ + { 200, 0x9E3779B185EBCA8DULL, { 0x2236D1B483E8D9EBULL, 0xCF0349DD7CC2B545ULL } }, /* XSUM_XXH128_testdata[602] */ + { 201, 0x0000000000000000ULL, { 0x196B192033D6D71BULL, 0xDC556E33BDDB0435ULL } }, /* XSUM_XXH128_testdata[603] */ + { 201, 0x000000009E3779B1ULL, { 0x2CB23A9CDEA2FAC7ULL, 0x52F0FACD7A7B116EULL } }, /* XSUM_XXH128_testdata[604] */ + { 201, 0x9E3779B185EBCA8DULL, { 0xFF71329E8B64B27CULL, 0x49F64FD995215F75ULL } }, /* XSUM_XXH128_testdata[605] */ + { 202, 0x0000000000000000ULL, { 0x7D541C4E27354474ULL, 0x292ACB081A9327EEULL } }, /* XSUM_XXH128_testdata[606] */ + { 202, 0x000000009E3779B1ULL, { 0xD8CF41771DCE562EULL, 0x94EE1876BD975F1FULL } }, /* XSUM_XXH128_testdata[607] */ + { 202, 0x9E3779B185EBCA8DULL, { 0xBF6DC7CB965E24E4ULL, 0xA771B74BD020B7DBULL } }, /* XSUM_XXH128_testdata[608] */ + { 203, 0x0000000000000000ULL, { 0x8CAE728419282756ULL, 0xA8CD6ED2761B41D3ULL } }, /* XSUM_XXH128_testdata[609] */ + { 203, 0x000000009E3779B1ULL, { 0xD77E24040ECEB2AAULL, 0x9AEC7F2A672A8355ULL } }, /* XSUM_XXH128_testdata[610] */ + { 203, 0x9E3779B185EBCA8DULL, { 0x0FC2DF722D89EC2FULL, 0xCE35D3DF95524433ULL } }, /* XSUM_XXH128_testdata[611] */ + { 204, 0x0000000000000000ULL, { 0xD425AEB7A68E4254ULL, 0xEDB633774040E9E7ULL } }, /* XSUM_XXH128_testdata[612] */ + { 204, 0x000000009E3779B1ULL, { 0x7ED024F58CB00380ULL, 0x96CE9D99809648EAULL } }, /* XSUM_XXH128_testdata[613] */ + { 204, 0x9E3779B185EBCA8DULL, { 0x5A15853DF40D9B61ULL, 0xCDA7F82768D8B309ULL } }, /* XSUM_XXH128_testdata[614] */ + { 205, 0x0000000000000000ULL, { 0xD8412697D56EC390ULL, 0x2B609A15DE4EBCCDULL } }, /* XSUM_XXH128_testdata[615] */ + { 205, 0x000000009E3779B1ULL, { 0x7D89790E490E627BULL, 0x1B0904FBB3926467ULL } }, /* XSUM_XXH128_testdata[616] */ + { 205, 0x9E3779B185EBCA8DULL, { 0xFD0296CA17422A0EULL, 0x9E0BEB82D92F1BC4ULL } }, /* XSUM_XXH128_testdata[617] */ + { 206, 0x0000000000000000ULL, { 0x3250D56D3CD4CBCBULL, 0x444A30380A080665ULL } }, /* XSUM_XXH128_testdata[618] */ + { 206, 0x000000009E3779B1ULL, { 0xFC8CB94F52C07CEFULL, 0x600E3AC4CDBBDEBAULL } }, /* XSUM_XXH128_testdata[619] */ + { 206, 0x9E3779B185EBCA8DULL, { 0x1E2E8431F423F4BBULL, 0x7B0006D924A899E6ULL } }, /* XSUM_XXH128_testdata[620] */ + { 207, 0x0000000000000000ULL, { 0x1EE196F58D1B1ED4ULL, 0x661F429EC4A2E30BULL } }, /* XSUM_XXH128_testdata[621] */ + { 207, 0x000000009E3779B1ULL, { 0x1FB859F30296AFA4ULL, 0x45E8C6F8D3DB6872ULL } }, /* XSUM_XXH128_testdata[622] */ + { 207, 0x9E3779B185EBCA8DULL, { 0xC535830B71656D64ULL, 0xB558FE48F7B7D6C5ULL } }, /* XSUM_XXH128_testdata[623] */ + { 208, 0x0000000000000000ULL, { 0xFB2FC40F9B08B843ULL, 0x2A5EC86B307D8F43ULL } }, /* XSUM_XXH128_testdata[624] */ + { 208, 0x000000009E3779B1ULL, { 0xD13CDE58B1DACA8DULL, 0x3A737A1DA5782079ULL } }, /* XSUM_XXH128_testdata[625] */ + { 208, 0x9E3779B185EBCA8DULL, { 0xBB4307ACF0BDB079ULL, 0x3152BD6E90FF374EULL } }, /* XSUM_XXH128_testdata[626] */ + { 209, 0x0000000000000000ULL, { 0x16958BDAFDB8DAD0ULL, 0xB0BAD3A0D6C4074EULL } }, /* XSUM_XXH128_testdata[627] */ + { 209, 0x000000009E3779B1ULL, { 0x2514FC9B940063BFULL, 0x3C4CA16B3BA6B7B7ULL } }, /* XSUM_XXH128_testdata[628] */ + { 209, 0x9E3779B185EBCA8DULL, { 0x95C0C7CB0979E56AULL, 0xF53A1D7DF9E5FDD6ULL } }, /* XSUM_XXH128_testdata[629] */ + { 210, 0x0000000000000000ULL, { 0xA8447F3A5F8D05B9ULL, 0x15946C82333CB3BAULL } }, /* XSUM_XXH128_testdata[630] */ + { 210, 0x000000009E3779B1ULL, { 0x8F9470C96D362604ULL, 0xD156E83FE84CDE43ULL } }, /* XSUM_XXH128_testdata[631] */ + { 210, 0x9E3779B185EBCA8DULL, { 0xEBDF159A3B2CC44DULL, 0x1D0BC26B4A7AB5DDULL } }, /* XSUM_XXH128_testdata[632] */ + { 211, 0x0000000000000000ULL, { 0x88CF5D2895CE0631ULL, 0x7B877FB7F79CD7CDULL } }, /* XSUM_XXH128_testdata[633] */ + { 211, 0x000000009E3779B1ULL, { 0x459E982067B000DCULL, 0x2CF52D41B3EA1D52ULL } }, /* XSUM_XXH128_testdata[634] */ + { 211, 0x9E3779B185EBCA8DULL, { 0xC5BA4ACC67759081ULL, 0xEA7C1B6EFDF3027EULL } }, /* XSUM_XXH128_testdata[635] */ + { 212, 0x0000000000000000ULL, { 0x9355363A3825461EULL, 0xA2C5C6B10B593ECCULL } }, /* XSUM_XXH128_testdata[636] */ + { 212, 0x000000009E3779B1ULL, { 0xBE024D81055A298FULL, 0x611716439C5D17C8ULL } }, /* XSUM_XXH128_testdata[637] */ + { 212, 0x9E3779B185EBCA8DULL, { 0x2B43919679154F06ULL, 0x87A4F9CD9099FE4EULL } }, /* XSUM_XXH128_testdata[638] */ + { 213, 0x0000000000000000ULL, { 0xDA4F46A32D13B2E4ULL, 0x4E064DA38F38404CULL } }, /* XSUM_XXH128_testdata[639] */ + { 213, 0x000000009E3779B1ULL, { 0xDAE0C28F6970D29EULL, 0x39906FB0C881B547ULL } }, /* XSUM_XXH128_testdata[640] */ + { 213, 0x9E3779B185EBCA8DULL, { 0x64DF8CAC26837F23ULL, 0x91BAA591FE0105EFULL } }, /* XSUM_XXH128_testdata[641] */ + { 214, 0x0000000000000000ULL, { 0x26CB2A1E13347F4CULL, 0xE50939C5E90B5DF6ULL } }, /* XSUM_XXH128_testdata[642] */ + { 214, 0x000000009E3779B1ULL, { 0x80AC9A568ECAE5BAULL, 0x224F991A7D613AF7ULL } }, /* XSUM_XXH128_testdata[643] */ + { 214, 0x9E3779B185EBCA8DULL, { 0x856CC81578514863ULL, 0xFCE56A10C72C543CULL } }, /* XSUM_XXH128_testdata[644] */ + { 215, 0x0000000000000000ULL, { 0x908A40668FA070C6ULL, 0x737C08E43A951E35ULL } }, /* XSUM_XXH128_testdata[645] */ + { 215, 0x000000009E3779B1ULL, { 0x2D0B7BE38F8DBCFDULL, 0x4BF97DE456AC400FULL } }, /* XSUM_XXH128_testdata[646] */ + { 215, 0x9E3779B185EBCA8DULL, { 0x76671B70B1856641ULL, 0xF6BCE338EF6D3E3DULL } }, /* XSUM_XXH128_testdata[647] */ + { 216, 0x0000000000000000ULL, { 0xD53A560E2980C9D3ULL, 0x8DEF4B3606F25B69ULL } }, /* XSUM_XXH128_testdata[648] */ + { 216, 0x000000009E3779B1ULL, { 0xBD6E3B7D1C5FBEF1ULL, 0x6ED6AB253FEB0BBAULL } }, /* XSUM_XXH128_testdata[649] */ + { 216, 0x9E3779B185EBCA8DULL, { 0xA84EE814EB74DC68ULL, 0x5C28575727031D8FULL } }, /* XSUM_XXH128_testdata[650] */ + { 217, 0x0000000000000000ULL, { 0x888D0E18B0E0BC36ULL, 0xC8C96F639F08FC59ULL } }, /* XSUM_XXH128_testdata[651] */ + { 217, 0x000000009E3779B1ULL, { 0x58E6F72CD1973280ULL, 0xDD53A047B07B60B6ULL } }, /* XSUM_XXH128_testdata[652] */ + { 217, 0x9E3779B185EBCA8DULL, { 0x965E54087A8CDE51ULL, 0x2070A232CE1304B4ULL } }, /* XSUM_XXH128_testdata[653] */ + { 218, 0x0000000000000000ULL, { 0xA4775E70DB5276A9ULL, 0x4BD28FE40D081BF3ULL } }, /* XSUM_XXH128_testdata[654] */ + { 218, 0x000000009E3779B1ULL, { 0xA74097DB0AA47AFBULL, 0xAFBF3B100F1DCCFBULL } }, /* XSUM_XXH128_testdata[655] */ + { 218, 0x9E3779B185EBCA8DULL, { 0x47A549EECC1D2DE7ULL, 0xB63B736058FA55FAULL } }, /* XSUM_XXH128_testdata[656] */ + { 219, 0x0000000000000000ULL, { 0xA39C17E47F31172DULL, 0x51905A18689B795EULL } }, /* XSUM_XXH128_testdata[657] */ + { 219, 0x000000009E3779B1ULL, { 0xDB09280211E6D37CULL, 0x71B3C0BE56A79893ULL } }, /* XSUM_XXH128_testdata[658] */ + { 219, 0x9E3779B185EBCA8DULL, { 0xB602B5DB70CA9154ULL, 0xBD905E0F0BAE36E6ULL } }, /* XSUM_XXH128_testdata[659] */ + { 220, 0x0000000000000000ULL, { 0xD36657934EFDD975ULL, 0x43680A0FD753DD82ULL } }, /* XSUM_XXH128_testdata[660] */ + { 220, 0x000000009E3779B1ULL, { 0x722C2C458E225E2DULL, 0xB80D9D281E2405D8ULL } }, /* XSUM_XXH128_testdata[661] */ + { 220, 0x9E3779B185EBCA8DULL, { 0xE8A10E3232C559A0ULL, 0x1A42195DC46C7558ULL } }, /* XSUM_XXH128_testdata[662] */ + { 221, 0x0000000000000000ULL, { 0xBC72CC6F1E3CBEB1ULL, 0xF6229D9BA7BB94E5ULL } }, /* XSUM_XXH128_testdata[663] */ + { 221, 0x000000009E3779B1ULL, { 0x250482527190CF22ULL, 0x7F27936D7E5037F4ULL } }, /* XSUM_XXH128_testdata[664] */ + { 221, 0x9E3779B185EBCA8DULL, { 0xC4EDABDD0498DB15ULL, 0x2873CD5A6630E4ABULL } }, /* XSUM_XXH128_testdata[665] */ + { 222, 0x0000000000000000ULL, { 0xF1AEBD597CEC6B3AULL, 0x337E09641B948717ULL } }, /* XSUM_XXH128_testdata[666] */ + { 222, 0x000000009E3779B1ULL, { 0xAE995BB8AF917A8DULL, 0x91820016621E97F1ULL } }, /* XSUM_XXH128_testdata[667] */ + { 222, 0x9E3779B185EBCA8DULL, { 0xC5871B3BE4506A30ULL, 0x4740AF1AE0618B49ULL } }, /* XSUM_XXH128_testdata[668] */ + { 223, 0x0000000000000000ULL, { 0x99A2091FBEC06CFAULL, 0x3F249A473E722801ULL } }, /* XSUM_XXH128_testdata[669] */ + { 223, 0x000000009E3779B1ULL, { 0x0D729FA3BA738119ULL, 0xDC307EB931A6485AULL } }, /* XSUM_XXH128_testdata[670] */ + { 223, 0x9E3779B185EBCA8DULL, { 0x3349FFB248EF0F0FULL, 0xD16EA4253F84294FULL } }, /* XSUM_XXH128_testdata[671] */ + { 224, 0x0000000000000000ULL, { 0x8B5B0074A7EB57DAULL, 0xF20D710DDBFBCAB1ULL } }, /* XSUM_XXH128_testdata[672] */ + { 224, 0x000000009E3779B1ULL, { 0xCA6C4F1C4A1DDEA8ULL, 0x3327579D3D360418ULL } }, /* XSUM_XXH128_testdata[673] */ + { 224, 0x9E3779B185EBCA8DULL, { 0x70835854BE62CB58ULL, 0x04AC8278BF6BB7BCULL } }, /* XSUM_XXH128_testdata[674] */ + { 225, 0x0000000000000000ULL, { 0x223FD4D3D9B67ADEULL, 0xB94473C76526D35EULL } }, /* XSUM_XXH128_testdata[675] */ + { 225, 0x000000009E3779B1ULL, { 0x1481BCB13D3DFA10ULL, 0xDE32B87E77AA2E51ULL } }, /* XSUM_XXH128_testdata[676] */ + { 225, 0x9E3779B185EBCA8DULL, { 0x22852B1C8D8F4AF9ULL, 0xD13A1D8F6B2A8F50ULL } }, /* XSUM_XXH128_testdata[677] */ + { 226, 0x0000000000000000ULL, { 0x3ADB57E460FD4553ULL, 0x84020083AA4D4669ULL } }, /* XSUM_XXH128_testdata[678] */ + { 226, 0x000000009E3779B1ULL, { 0x3CBADC7DB3EB955AULL, 0x276D72F9BEF1BA54ULL } }, /* XSUM_XXH128_testdata[679] */ + { 226, 0x9E3779B185EBCA8DULL, { 0x68A237F0304E7F50ULL, 0xEE438E342388C4AAULL } }, /* XSUM_XXH128_testdata[680] */ + { 227, 0x0000000000000000ULL, { 0xB89DF8AFC44136FBULL, 0x81698C91B19B4A33ULL } }, /* XSUM_XXH128_testdata[681] */ + { 227, 0x000000009E3779B1ULL, { 0x64D6EA6AD8FD51B2ULL, 0xE4264878A00AE267ULL } }, /* XSUM_XXH128_testdata[682] */ + { 227, 0x9E3779B185EBCA8DULL, { 0xA47A40AE88BC9F6AULL, 0x005529485F3DF947ULL } }, /* XSUM_XXH128_testdata[683] */ + { 228, 0x0000000000000000ULL, { 0xD6C335329DD74841ULL, 0xF3F1FE67893A9717ULL } }, /* XSUM_XXH128_testdata[684] */ + { 228, 0x000000009E3779B1ULL, { 0x21BC01B46ABA553DULL, 0x1F8D79C7523A68D7ULL } }, /* XSUM_XXH128_testdata[685] */ + { 228, 0x9E3779B185EBCA8DULL, { 0x46FEBA8B2E852F10ULL, 0xE100CF818AC0C4E1ULL } }, /* XSUM_XXH128_testdata[686] */ + { 229, 0x0000000000000000ULL, { 0x4D29799E2CFE2148ULL, 0x78176716CBEB5711ULL } }, /* XSUM_XXH128_testdata[687] */ + { 229, 0x000000009E3779B1ULL, { 0x33C89592ED54E170ULL, 0xFDDD0BB0A6580BA0ULL } }, /* XSUM_XXH128_testdata[688] */ + { 229, 0x9E3779B185EBCA8DULL, { 0xDF7262C04A06E232ULL, 0xB9D9CB3E95D0C305ULL } }, /* XSUM_XXH128_testdata[689] */ + { 230, 0x0000000000000000ULL, { 0xACDEAFCE303E8439ULL, 0x4E7B2BB91627BC44ULL } }, /* XSUM_XXH128_testdata[690] */ + { 230, 0x000000009E3779B1ULL, { 0xDF4EBE57FA284306ULL, 0x8BCD829A968A3E8AULL } }, /* XSUM_XXH128_testdata[691] */ + { 230, 0x9E3779B185EBCA8DULL, { 0xA3390D5252B72F1BULL, 0x3796A6B355FC022BULL } }, /* XSUM_XXH128_testdata[692] */ + { 231, 0x0000000000000000ULL, { 0x737D1E2B3CC34715ULL, 0x36BA608F3DD0EA10ULL } }, /* XSUM_XXH128_testdata[693] */ + { 231, 0x000000009E3779B1ULL, { 0x8CE84D1D505A976AULL, 0xF646F15512675360ULL } }, /* XSUM_XXH128_testdata[694] */ + { 231, 0x9E3779B185EBCA8DULL, { 0xD2CB41F6C4E6E9DAULL, 0x9DCD79C565B20BB4ULL } }, /* XSUM_XXH128_testdata[695] */ + { 232, 0x0000000000000000ULL, { 0x4CDBCF3D3D310E09ULL, 0xE6FF568D437DB78DULL } }, /* XSUM_XXH128_testdata[696] */ + { 232, 0x000000009E3779B1ULL, { 0x387F5AF007FB384AULL, 0x98E9572E4343E5B2ULL } }, /* XSUM_XXH128_testdata[697] */ + { 232, 0x9E3779B185EBCA8DULL, { 0x65E95C8B0E618E77ULL, 0xEB85809A40E9B729ULL } }, /* XSUM_XXH128_testdata[698] */ + { 233, 0x0000000000000000ULL, { 0xFC42A789C922EC0FULL, 0x07F3C9D9B7797906ULL } }, /* XSUM_XXH128_testdata[699] */ + { 233, 0x000000009E3779B1ULL, { 0xF44281209A433C88ULL, 0x20C7944832AE78CDULL } }, /* XSUM_XXH128_testdata[700] */ + { 233, 0x9E3779B185EBCA8DULL, { 0x8FFEC0C83D80AD60ULL, 0x3BED40ADE606A660ULL } }, /* XSUM_XXH128_testdata[701] */ + { 234, 0x0000000000000000ULL, { 0xFFD625522F81759DULL, 0x6A0A584DD28F0713ULL } }, /* XSUM_XXH128_testdata[702] */ + { 234, 0x000000009E3779B1ULL, { 0xA51093EC20F5C41DULL, 0x388ADD889F8AC66EULL } }, /* XSUM_XXH128_testdata[703] */ + { 234, 0x9E3779B185EBCA8DULL, { 0x2A6514AFF7AA6F9CULL, 0x89F32C2F67E1D371ULL } }, /* XSUM_XXH128_testdata[704] */ + { 235, 0x0000000000000000ULL, { 0x41A21BC8EE19DAF4ULL, 0x0905B6EC33C9FC0BULL } }, /* XSUM_XXH128_testdata[705] */ + { 235, 0x000000009E3779B1ULL, { 0x7CB6D04F6D955B37ULL, 0x7607D3F77BD7872DULL } }, /* XSUM_XXH128_testdata[706] */ + { 235, 0x9E3779B185EBCA8DULL, { 0x8D095B83BB361F34ULL, 0x240101BC7E33B55CULL } }, /* XSUM_XXH128_testdata[707] */ + { 236, 0x0000000000000000ULL, { 0x2554D86CB3D6CBD8ULL, 0x4EB37B38C0FB7544ULL } }, /* XSUM_XXH128_testdata[708] */ + { 236, 0x000000009E3779B1ULL, { 0x8D2122B237DCCE4EULL, 0x8172C22AD2841B33ULL } }, /* XSUM_XXH128_testdata[709] */ + { 236, 0x9E3779B185EBCA8DULL, { 0x641C260104D1775DULL, 0xA02E7F541402B046ULL } }, /* XSUM_XXH128_testdata[710] */ + { 237, 0x0000000000000000ULL, { 0xD5F6B3EB50A678F5ULL, 0x761AF4F987196CABULL } }, /* XSUM_XXH128_testdata[711] */ + { 237, 0x000000009E3779B1ULL, { 0xF158E40DFA95CD57ULL, 0x5800A13FEE84C612ULL } }, /* XSUM_XXH128_testdata[712] */ + { 237, 0x9E3779B185EBCA8DULL, { 0xD3B12BA6F4AC81C5ULL, 0xEF202647B79839F0ULL } }, /* XSUM_XXH128_testdata[713] */ + { 238, 0x0000000000000000ULL, { 0x4A6BBFBC51926FC6ULL, 0x38E0F55591F10B3BULL } }, /* XSUM_XXH128_testdata[714] */ + { 238, 0x000000009E3779B1ULL, { 0xBD9DAF2D3E260FF5ULL, 0x50DF91C9297AB400ULL } }, /* XSUM_XXH128_testdata[715] */ + { 238, 0x9E3779B185EBCA8DULL, { 0xE5FC7F62360CE9B8ULL, 0x189724E6C5C7AADDULL } }, /* XSUM_XXH128_testdata[716] */ + { 239, 0x0000000000000000ULL, { 0xF895E8B860B8A593ULL, 0xE59FC6554B5008BCULL } }, /* XSUM_XXH128_testdata[717] */ + { 239, 0x000000009E3779B1ULL, { 0xA7FB18FAD4A94D5BULL, 0x9C5A8C766DF3E6E5ULL } }, /* XSUM_XXH128_testdata[718] */ + { 239, 0x9E3779B185EBCA8DULL, { 0xC0A8B4C9698DB33DULL, 0xD6701EB51FC21716ULL } }, /* XSUM_XXH128_testdata[719] */ + { 240, 0x0000000000000000ULL, { 0x5C9AAE94C8EBE5A0ULL, 0xAA4202DAA2769DC8ULL } }, /* XSUM_XXH128_testdata[720] */ + { 240, 0x000000009E3779B1ULL, { 0xCA19087F1D335DAEULL, 0xDA888104BEAE5AE0ULL } }, /* XSUM_XXH128_testdata[721] */ + { 240, 0x9E3779B185EBCA8DULL, { 0x604E98DB085C1864ULL, 0x29D2133D6EA58C5BULL } }, /* XSUM_XXH128_testdata[722] */ + { 241, 0x0000000000000000ULL, { 0xC5A639ECD2030E5EULL, 0x99A80ECF0ECFC647ULL } }, /* XSUM_XXH128_testdata[723] */ + { 241, 0x000000009E3779B1ULL, { 0x5927E3637BAC8149ULL, 0x4BF2229C3A8FC3C3ULL } }, /* XSUM_XXH128_testdata[724] */ + { 241, 0x9E3779B185EBCA8DULL, { 0xDDA9B0A161D4829AULL, 0xEC64AFAE6A137582ULL } }, /* XSUM_XXH128_testdata[725] */ + { 242, 0x0000000000000000ULL, { 0x967344E78CB4B723ULL, 0xAB227699336C197EULL } }, /* XSUM_XXH128_testdata[726] */ + { 242, 0x000000009E3779B1ULL, { 0x79033D48BD686CA8ULL, 0x58EF4ABEC798052AULL } }, /* XSUM_XXH128_testdata[727] */ + { 242, 0x9E3779B185EBCA8DULL, { 0x5811A132DBCB4C75ULL, 0xA9F0612BC894A6A6ULL } }, /* XSUM_XXH128_testdata[728] */ + { 243, 0x0000000000000000ULL, { 0xE988DAEF24A33188ULL, 0xFE0D525629DED0ABULL } }, /* XSUM_XXH128_testdata[729] */ + { 243, 0x000000009E3779B1ULL, { 0x46BDA0FC2C51E3CBULL, 0x28A2A8BCC9504B46ULL } }, /* XSUM_XXH128_testdata[730] */ + { 243, 0x9E3779B185EBCA8DULL, { 0x608C899C17491898ULL, 0x9FA72A92DF64954BULL } }, /* XSUM_XXH128_testdata[731] */ + { 244, 0x0000000000000000ULL, { 0x207BF1DB073E4932ULL, 0x3EE7BA330478ED8EULL } }, /* XSUM_XXH128_testdata[732] */ + { 244, 0x000000009E3779B1ULL, { 0x1BE5B05B38745F4CULL, 0x2DAC4B4B44F51534ULL } }, /* XSUM_XXH128_testdata[733] */ + { 244, 0x9E3779B185EBCA8DULL, { 0x7E4E1ED6A0116446ULL, 0xD65E5C2D2BE6293CULL } }, /* XSUM_XXH128_testdata[734] */ + { 245, 0x0000000000000000ULL, { 0xB2494882657D1610ULL, 0x5C33A12D375EB2BBULL } }, /* XSUM_XXH128_testdata[735] */ + { 245, 0x000000009E3779B1ULL, { 0x07213DCB846183C1ULL, 0x328785118061E3A2ULL } }, /* XSUM_XXH128_testdata[736] */ + { 245, 0x9E3779B185EBCA8DULL, { 0x8853314E454EEB9BULL, 0x721FB1F02A18FA30ULL } }, /* XSUM_XXH128_testdata[737] */ + { 246, 0x0000000000000000ULL, { 0x09BA721476ECA776ULL, 0x7D43CE1B24E86DA7ULL } }, /* XSUM_XXH128_testdata[738] */ + { 246, 0x000000009E3779B1ULL, { 0xBD4964B7FB1E9B3EULL, 0xE2B769672F317942ULL } }, /* XSUM_XXH128_testdata[739] */ + { 246, 0x9E3779B185EBCA8DULL, { 0xF096F24C090E8B28ULL, 0x502662D883025A47ULL } }, /* XSUM_XXH128_testdata[740] */ + { 247, 0x0000000000000000ULL, { 0x2336B969899E627DULL, 0xD79240F5745D8890ULL } }, /* XSUM_XXH128_testdata[741] */ + { 247, 0x000000009E3779B1ULL, { 0xBC96D049F07DFC65ULL, 0x4A68B17895917244ULL } }, /* XSUM_XXH128_testdata[742] */ + { 247, 0x9E3779B185EBCA8DULL, { 0x2FCE53405D7FC73FULL, 0x8342D60A724CB2ECULL } }, /* XSUM_XXH128_testdata[743] */ + { 248, 0x0000000000000000ULL, { 0x675A39222277D0B0ULL, 0x24F85C5B3DF874B2ULL } }, /* XSUM_XXH128_testdata[744] */ + { 248, 0x000000009E3779B1ULL, { 0x3AA4CD56F7FEFEA5ULL, 0xFD8AC3412A82F904ULL } }, /* XSUM_XXH128_testdata[745] */ + { 248, 0x9E3779B185EBCA8DULL, { 0xA7EA866DD4EC2B64ULL, 0xF9EB98A14E5B6112ULL } }, /* XSUM_XXH128_testdata[746] */ + { 249, 0x0000000000000000ULL, { 0x2FC4F84AB35D73A2ULL, 0x13D7C50139517502ULL } }, /* XSUM_XXH128_testdata[747] */ + { 249, 0x000000009E3779B1ULL, { 0x69D4808197683118ULL, 0xFAD8024CBD75DC72ULL } }, /* XSUM_XXH128_testdata[748] */ + { 249, 0x9E3779B185EBCA8DULL, { 0x8F448C1B7A4004F8ULL, 0xAE92D5FD0B61B04BULL } }, /* XSUM_XXH128_testdata[749] */ + { 250, 0x0000000000000000ULL, { 0x92FE7370568187CCULL, 0xE93F05F607D60370ULL } }, /* XSUM_XXH128_testdata[750] */ + { 250, 0x000000009E3779B1ULL, { 0x32B4E87900BC06B3ULL, 0xDDA33FABEFF350F6ULL } }, /* XSUM_XXH128_testdata[751] */ + { 250, 0x9E3779B185EBCA8DULL, { 0x538997F3170A6253ULL, 0xC76377FB75056B8DULL } }, /* XSUM_XXH128_testdata[752] */ + { 251, 0x0000000000000000ULL, { 0xC8979538455865E1ULL, 0x60F35AA5DC0BAC30ULL } }, /* XSUM_XXH128_testdata[753] */ + { 251, 0x000000009E3779B1ULL, { 0x86BFCAC29EFB41A9ULL, 0x98F6E755C8EA135AULL } }, /* XSUM_XXH128_testdata[754] */ + { 251, 0x9E3779B185EBCA8DULL, { 0x81DBBD7E7B9D1517ULL, 0x6A8D93104492E5A8ULL } }, /* XSUM_XXH128_testdata[755] */ + { 252, 0x0000000000000000ULL, { 0x517E9BFBF584B49CULL, 0xE95C9BD23AF60A14ULL } }, /* XSUM_XXH128_testdata[756] */ + { 252, 0x000000009E3779B1ULL, { 0x7CA34BA9FAEFCD14ULL, 0xC3B4E8A7BF55DA8BULL } }, /* XSUM_XXH128_testdata[757] */ + { 252, 0x9E3779B185EBCA8DULL, { 0xDA61F0C55F7F37CDULL, 0x072C2AA740D28A1EULL } }, /* XSUM_XXH128_testdata[758] */ + { 253, 0x0000000000000000ULL, { 0x126CDADFC2AF595AULL, 0xA3B95DF5A20FA6A0ULL } }, /* XSUM_XXH128_testdata[759] */ + { 253, 0x000000009E3779B1ULL, { 0x5BC65D4EA7084FE7ULL, 0x75256D4675DA5E88ULL } }, /* XSUM_XXH128_testdata[760] */ + { 253, 0x9E3779B185EBCA8DULL, { 0xA495566991B63EFCULL, 0xE60C29D4B19E7C29ULL } }, /* XSUM_XXH128_testdata[761] */ + { 254, 0x0000000000000000ULL, { 0xC6ADC7E5504153FAULL, 0xFF60C234A12EF68BULL } }, /* XSUM_XXH128_testdata[762] */ + { 254, 0x000000009E3779B1ULL, { 0x5BA6ED3EE8471C58ULL, 0xB4AE1D5EF15D326DULL } }, /* XSUM_XXH128_testdata[763] */ + { 254, 0x9E3779B185EBCA8DULL, { 0x8204DFA4A557CBB5ULL, 0x226E285B1ADF6CA5ULL } }, /* XSUM_XXH128_testdata[764] */ + { 255, 0x0000000000000000ULL, { 0xE98F979F4ED8A197ULL, 0x961375C87E09EFBCULL } }, /* XSUM_XXH128_testdata[765] */ + { 255, 0x000000009E3779B1ULL, { 0x437EA109CB7CE24DULL, 0xEE657E12607ADFFEULL } }, /* XSUM_XXH128_testdata[766] */ + { 255, 0x9E3779B185EBCA8DULL, { 0x2ACA7901D9538C75ULL, 0xE72EC0137D62DF44ULL } }, /* XSUM_XXH128_testdata[767] */ + { 256, 0x0000000000000000ULL, { 0x55DE574AD89D0AC5ULL, 0x8B1C66091423D288ULL } }, /* XSUM_XXH128_testdata[768] */ + { 256, 0x000000009E3779B1ULL, { 0x443D04D43F60C57FULL, 0xD540CC8620D8DD65ULL } }, /* XSUM_XXH128_testdata[769] */ + { 256, 0x9E3779B185EBCA8DULL, { 0x4D30234B7A3AA61CULL, 0xAAA57235B92D5E7CULL } }, /* XSUM_XXH128_testdata[770] */ + { 257, 0x0000000000000000ULL, { 0xB17FD5A8AE75BB0BULL, 0xF15FEE7F9F457599ULL } }, /* XSUM_XXH128_testdata[771] */ + { 257, 0x000000009E3779B1ULL, { 0x02F16A1476C65D95ULL, 0x52C36CA232FC662BULL } }, /* XSUM_XXH128_testdata[772] */ + { 257, 0x9E3779B185EBCA8DULL, { 0x802A6FBF3CACD97CULL, 0x15C1F9C667C815BAULL } }, /* XSUM_XXH128_testdata[773] */ + { 258, 0x0000000000000000ULL, { 0x597C26D615CCF5D2ULL, 0x1CDC3D0516B68A37ULL } }, /* XSUM_XXH128_testdata[774] */ + { 258, 0x000000009E3779B1ULL, { 0x8DEB2D95EB7438E9ULL, 0xB34AE943B2054500ULL } }, /* XSUM_XXH128_testdata[775] */ + { 258, 0x9E3779B185EBCA8DULL, { 0xB3A4A6F75E9D895FULL, 0xE8612F5799D90B47ULL } }, /* XSUM_XXH128_testdata[776] */ + { 259, 0x0000000000000000ULL, { 0x96FE56AAA5CE16F7ULL, 0x2674F38D6A6E4C42ULL } }, /* XSUM_XXH128_testdata[777] */ + { 259, 0x000000009E3779B1ULL, { 0x4C2B74D96B48D863ULL, 0x747DB171593D0377ULL } }, /* XSUM_XXH128_testdata[778] */ + { 259, 0x9E3779B185EBCA8DULL, { 0x026072B81C892FD0ULL, 0x14EB388007591108ULL } }, /* XSUM_XXH128_testdata[779] */ + { 260, 0x0000000000000000ULL, { 0x6434C3B4B191597FULL, 0xAF2B439670E01429ULL } }, /* XSUM_XXH128_testdata[780] */ + { 260, 0x000000009E3779B1ULL, { 0x862D5730FEB4E932ULL, 0x95C877B4A249D30EULL } }, /* XSUM_XXH128_testdata[781] */ + { 260, 0x9E3779B185EBCA8DULL, { 0xBD2F19B13A895785ULL, 0x5ED9162B37D010A3ULL } }, /* XSUM_XXH128_testdata[782] */ + { 261, 0x0000000000000000ULL, { 0x622B69F5713E3274ULL, 0xA16B94C86BE30374ULL } }, /* XSUM_XXH128_testdata[783] */ + { 261, 0x000000009E3779B1ULL, { 0xFCB099BD9903A6B8ULL, 0x178C92B58AF124BEULL } }, /* XSUM_XXH128_testdata[784] */ + { 261, 0x9E3779B185EBCA8DULL, { 0xB550374C5BB46917ULL, 0x935274DB1F728D74ULL } }, /* XSUM_XXH128_testdata[785] */ + { 262, 0x0000000000000000ULL, { 0x3131B78E8EDB2AD2ULL, 0xA3B404B9766C6EABULL } }, /* XSUM_XXH128_testdata[786] */ + { 262, 0x000000009E3779B1ULL, { 0x1790ED7819FD1C18ULL, 0x57FBC72E12638981ULL } }, /* XSUM_XXH128_testdata[787] */ + { 262, 0x9E3779B185EBCA8DULL, { 0x728D3D77F1BB62FAULL, 0x11C710022234561FULL } }, /* XSUM_XXH128_testdata[788] */ + { 263, 0x0000000000000000ULL, { 0xD9DF9C2FC42E0238ULL, 0xF8772756BCD4965DULL } }, /* XSUM_XXH128_testdata[789] */ + { 263, 0x000000009E3779B1ULL, { 0xDA52EB3F16A62965ULL, 0xF2ECA89521D4F080ULL } }, /* XSUM_XXH128_testdata[790] */ + { 263, 0x9E3779B185EBCA8DULL, { 0x90777D0F22DD4753ULL, 0xE0B4B2D566213C2FULL } }, /* XSUM_XXH128_testdata[791] */ + { 264, 0x0000000000000000ULL, { 0x84603BD8C0D6611BULL, 0x5CCD26D26B0CEECFULL } }, /* XSUM_XXH128_testdata[792] */ + { 264, 0x000000009E3779B1ULL, { 0x3661F79BE6DF0015ULL, 0xAD907476DC6A78C5ULL } }, /* XSUM_XXH128_testdata[793] */ + { 264, 0x9E3779B185EBCA8DULL, { 0x6D179A435DD3ADEFULL, 0xA4D105CF8F480436ULL } }, /* XSUM_XXH128_testdata[794] */ + { 265, 0x0000000000000000ULL, { 0x3E689724BD2BCF46ULL, 0x55F87E0718B843E8ULL } }, /* XSUM_XXH128_testdata[795] */ + { 265, 0x000000009E3779B1ULL, { 0x2DB4B1D4042ECDFDULL, 0xD78E73089F44B6F2ULL } }, /* XSUM_XXH128_testdata[796] */ + { 265, 0x9E3779B185EBCA8DULL, { 0xFC84D97265A20FADULL, 0xB9C6AAC4334F1341ULL } }, /* XSUM_XXH128_testdata[797] */ + { 266, 0x0000000000000000ULL, { 0x74E4B8041F481162ULL, 0x7D2E4588E72C7182ULL } }, /* XSUM_XXH128_testdata[798] */ + { 266, 0x000000009E3779B1ULL, { 0x62E2EE897AEF58F0ULL, 0x9ACB207DEFFDD9ECULL } }, /* XSUM_XXH128_testdata[799] */ + { 266, 0x9E3779B185EBCA8DULL, { 0x65ABFBAECBC200C4ULL, 0x866678F731D4FF60ULL } }, /* XSUM_XXH128_testdata[800] */ + { 267, 0x0000000000000000ULL, { 0x75EA9B12AF18FA87ULL, 0x231CA895DDEBDCD4ULL } }, /* XSUM_XXH128_testdata[801] */ + { 267, 0x000000009E3779B1ULL, { 0x804A6405F85CB270ULL, 0x80F23DC3834265D0ULL } }, /* XSUM_XXH128_testdata[802] */ + { 267, 0x9E3779B185EBCA8DULL, { 0x0A217005537F0186ULL, 0xA1AE6F5CFBEE705CULL } }, /* XSUM_XXH128_testdata[803] */ + { 268, 0x0000000000000000ULL, { 0x215E27CCEE7C81FEULL, 0x32B4C9C5E1BB1D0DULL } }, /* XSUM_XXH128_testdata[804] */ + { 268, 0x000000009E3779B1ULL, { 0x6C9F4649E3C3D1CDULL, 0x5A6D9A745549BE28ULL } }, /* XSUM_XXH128_testdata[805] */ + { 268, 0x9E3779B185EBCA8DULL, { 0xA75ADAB112131070ULL, 0xF59EBB11B5E89407ULL } }, /* XSUM_XXH128_testdata[806] */ + { 269, 0x0000000000000000ULL, { 0xCDB22F74254DEB8BULL, 0xDA4D5316EF67EB39ULL } }, /* XSUM_XXH128_testdata[807] */ + { 269, 0x000000009E3779B1ULL, { 0x10DBDCCA4CA30DA4ULL, 0xB6E80D151F5ECE85ULL } }, /* XSUM_XXH128_testdata[808] */ + { 269, 0x9E3779B185EBCA8DULL, { 0xCE40B2E4012A8BA2ULL, 0xD8BF480C49D22FDAULL } }, /* XSUM_XXH128_testdata[809] */ + { 270, 0x0000000000000000ULL, { 0xE634D8664D685397ULL, 0x7DAAFF75DAFF9F66ULL } }, /* XSUM_XXH128_testdata[810] */ + { 270, 0x000000009E3779B1ULL, { 0x32A204A7ABAD7A7CULL, 0x2348A0B4DB2051A3ULL } }, /* XSUM_XXH128_testdata[811] */ + { 270, 0x9E3779B185EBCA8DULL, { 0x9B7B8CAA8808A81FULL, 0xA56FAF515F36E0EFULL } }, /* XSUM_XXH128_testdata[812] */ + { 271, 0x0000000000000000ULL, { 0x4B367EF9DF9DEA94ULL, 0x200B45E0D5645550ULL } }, /* XSUM_XXH128_testdata[813] */ + { 271, 0x000000009E3779B1ULL, { 0xB49827597B23F239ULL, 0xA3A5B3381CF2BBB3ULL } }, /* XSUM_XXH128_testdata[814] */ + { 271, 0x9E3779B185EBCA8DULL, { 0xF97A1A53C95C4E11ULL, 0x5E250F5AA9FCD4ADULL } }, /* XSUM_XXH128_testdata[815] */ + { 272, 0x0000000000000000ULL, { 0xD74D68D5D03119B3ULL, 0x7F67100978A370CBULL } }, /* XSUM_XXH128_testdata[816] */ + { 272, 0x000000009E3779B1ULL, { 0x0E8E193A63E6D0DBULL, 0xB88E2D6C5D64ED9CULL } }, /* XSUM_XXH128_testdata[817] */ + { 272, 0x9E3779B185EBCA8DULL, { 0x10BD868ACB6D6FA9ULL, 0x353D6420EADC5665ULL } }, /* XSUM_XXH128_testdata[818] */ + { 273, 0x0000000000000000ULL, { 0x65E1FFF6E3002DAFULL, 0xB2136675D29668CBULL } }, /* XSUM_XXH128_testdata[819] */ + { 273, 0x000000009E3779B1ULL, { 0x8DA9D3E5C07DAD0CULL, 0x35164A5259BCA066ULL } }, /* XSUM_XXH128_testdata[820] */ + { 273, 0x9E3779B185EBCA8DULL, { 0xB80F7A672C201B85ULL, 0x8E0636308C221C3BULL } }, /* XSUM_XXH128_testdata[821] */ + { 274, 0x0000000000000000ULL, { 0x389595A06A55E2E1ULL, 0x18AC71267B770BFBULL } }, /* XSUM_XXH128_testdata[822] */ + { 274, 0x000000009E3779B1ULL, { 0xE06F34EAB3F96107ULL, 0x68719550B2027792ULL } }, /* XSUM_XXH128_testdata[823] */ + { 274, 0x9E3779B185EBCA8DULL, { 0xB9AEA6AC34EEA74BULL, 0xAA5A1160C584C899ULL } }, /* XSUM_XXH128_testdata[824] */ + { 275, 0x0000000000000000ULL, { 0x4E29525A452E797FULL, 0x1DDA342A8EE97B78ULL } }, /* XSUM_XXH128_testdata[825] */ + { 275, 0x000000009E3779B1ULL, { 0x505396AB5C042383ULL, 0x8A92FC807DDAF93FULL } }, /* XSUM_XXH128_testdata[826] */ + { 275, 0x9E3779B185EBCA8DULL, { 0xBC6AD5649DBFF613ULL, 0x89E2E132626593B9ULL } }, /* XSUM_XXH128_testdata[827] */ + { 276, 0x0000000000000000ULL, { 0x65DCAB6FC5BBF7FFULL, 0x6939701FE6EA5149ULL } }, /* XSUM_XXH128_testdata[828] */ + { 276, 0x000000009E3779B1ULL, { 0xF7152B1D28780A87ULL, 0xDD4FA10656C229BBULL } }, /* XSUM_XXH128_testdata[829] */ + { 276, 0x9E3779B185EBCA8DULL, { 0x3504897BCA1D4F66ULL, 0x15C86684E7F10CA0ULL } }, /* XSUM_XXH128_testdata[830] */ + { 277, 0x0000000000000000ULL, { 0x013F79E2E571C3A1ULL, 0x1C5720F4D9451E5AULL } }, /* XSUM_XXH128_testdata[831] */ + { 277, 0x000000009E3779B1ULL, { 0x29F3E5B9F9EB66FAULL, 0x3CCA7642F476F7A2ULL } }, /* XSUM_XXH128_testdata[832] */ + { 277, 0x9E3779B185EBCA8DULL, { 0x449C80F974E1B6F1ULL, 0x3D4E84A0422DA717ULL } }, /* XSUM_XXH128_testdata[833] */ + { 278, 0x0000000000000000ULL, { 0x57BF715F3AA64DF2ULL, 0x92CD17BDC5726C59ULL } }, /* XSUM_XXH128_testdata[834] */ + { 278, 0x000000009E3779B1ULL, { 0x06FE4B4B4D262339ULL, 0x6D24A3392929E9A1ULL } }, /* XSUM_XXH128_testdata[835] */ + { 278, 0x9E3779B185EBCA8DULL, { 0x1F05B7AA1370AF21ULL, 0xAC5EFC0DD122EB95ULL } }, /* XSUM_XXH128_testdata[836] */ + { 279, 0x0000000000000000ULL, { 0x295056DC98A9526CULL, 0x8E190A915B529DE3ULL } }, /* XSUM_XXH128_testdata[837] */ + { 279, 0x000000009E3779B1ULL, { 0x6127F23A67B3A14BULL, 0x3DA22C9B8F18988CULL } }, /* XSUM_XXH128_testdata[838] */ + { 279, 0x9E3779B185EBCA8DULL, { 0x43B1C69843725589ULL, 0xEDAC9828CDC0D7CEULL } }, /* XSUM_XXH128_testdata[839] */ + { 280, 0x0000000000000000ULL, { 0x952AEF533EAF359BULL, 0x8A2F789547645A4EULL } }, /* XSUM_XXH128_testdata[840] */ + { 280, 0x000000009E3779B1ULL, { 0x7F74321B2CE121F1ULL, 0xB0F0B5BCA21CC80EULL } }, /* XSUM_XXH128_testdata[841] */ + { 280, 0x9E3779B185EBCA8DULL, { 0xE4627DFF9E8B6849ULL, 0xA36701820521C01FULL } }, /* XSUM_XXH128_testdata[842] */ + { 281, 0x0000000000000000ULL, { 0xEA6959C34EB32E09ULL, 0xDBC5BD8AB6998596ULL } }, /* XSUM_XXH128_testdata[843] */ + { 281, 0x000000009E3779B1ULL, { 0x7F89C3C00451BD9EULL, 0x878A1BD329A51098ULL } }, /* XSUM_XXH128_testdata[844] */ + { 281, 0x9E3779B185EBCA8DULL, { 0xE8F69EDE556ACDD5ULL, 0x57120F398500175EULL } }, /* XSUM_XXH128_testdata[845] */ + { 282, 0x0000000000000000ULL, { 0x59D901EB07316669ULL, 0xC570F98282EC8A09ULL } }, /* XSUM_XXH128_testdata[846] */ + { 282, 0x000000009E3779B1ULL, { 0x06CA49DEBE877FDFULL, 0xAD256A5571EBB8BAULL } }, /* XSUM_XXH128_testdata[847] */ + { 282, 0x9E3779B185EBCA8DULL, { 0xE2865EB1C796FD80ULL, 0x3146C1DD7E60917EULL } }, /* XSUM_XXH128_testdata[848] */ + { 283, 0x0000000000000000ULL, { 0x2FD10CEF1C56661AULL, 0x42949DA60D6A3F07ULL } }, /* XSUM_XXH128_testdata[849] */ + { 283, 0x000000009E3779B1ULL, { 0xCA830ABB8C8B3CEFULL, 0xEA787D512F2DDBA8ULL } }, /* XSUM_XXH128_testdata[850] */ + { 283, 0x9E3779B185EBCA8DULL, { 0x4C551113F85ADE1EULL, 0x34320431F6616CD9ULL } }, /* XSUM_XXH128_testdata[851] */ + { 284, 0x0000000000000000ULL, { 0x5E80B417D943A6D2ULL, 0xE271A4A74855C020ULL } }, /* XSUM_XXH128_testdata[852] */ + { 284, 0x000000009E3779B1ULL, { 0x662CA4576608A544ULL, 0xFAF631311E3FA2A7ULL } }, /* XSUM_XXH128_testdata[853] */ + { 284, 0x9E3779B185EBCA8DULL, { 0xF8CDAB4759BFEC9CULL, 0xCAED5C15441FBE57ULL } }, /* XSUM_XXH128_testdata[854] */ + { 285, 0x0000000000000000ULL, { 0xC6499EC47E983831ULL, 0xD23F10BEA11CEFD1ULL } }, /* XSUM_XXH128_testdata[855] */ + { 285, 0x000000009E3779B1ULL, { 0xB97987F6C78DD113ULL, 0x0D2223100D72074BULL } }, /* XSUM_XXH128_testdata[856] */ + { 285, 0x9E3779B185EBCA8DULL, { 0x68A990E36FD9E7D9ULL, 0xD8106BC604773204ULL } }, /* XSUM_XXH128_testdata[857] */ + { 286, 0x0000000000000000ULL, { 0x80AF5CFF653B80C8ULL, 0xCF63F5BAB8F91368ULL } }, /* XSUM_XXH128_testdata[858] */ + { 286, 0x000000009E3779B1ULL, { 0x7EF070AFFA812566ULL, 0x6735BDEA705CD34FULL } }, /* XSUM_XXH128_testdata[859] */ + { 286, 0x9E3779B185EBCA8DULL, { 0x57A7FB462EB4E44AULL, 0x6CF00DC62C7B2621ULL } }, /* XSUM_XXH128_testdata[860] */ + { 287, 0x0000000000000000ULL, { 0xFD9A5D6CB012B7CFULL, 0xF1575E985B39E792ULL } }, /* XSUM_XXH128_testdata[861] */ + { 287, 0x000000009E3779B1ULL, { 0xA7ACCA9125DC98A4ULL, 0xF23DA07AE769EA09ULL } }, /* XSUM_XXH128_testdata[862] */ + { 287, 0x9E3779B185EBCA8DULL, { 0x2AE096D435B28E60ULL, 0x1098B08DA4F58180ULL } }, /* XSUM_XXH128_testdata[863] */ + { 288, 0x0000000000000000ULL, { 0x347640D6208A9759ULL, 0xA06D72DEEEEEBBA8ULL } }, /* XSUM_XXH128_testdata[864] */ + { 288, 0x000000009E3779B1ULL, { 0xE41486E0DDF772D8ULL, 0xA75A060FEFABF500ULL } }, /* XSUM_XXH128_testdata[865] */ + { 288, 0x9E3779B185EBCA8DULL, { 0xA7E5D2D6A42CE280ULL, 0x6FF138A3C75832BEULL } }, /* XSUM_XXH128_testdata[866] */ + { 289, 0x0000000000000000ULL, { 0xBD78E8F346C3A6F8ULL, 0x20076F43DC7F53ABULL } }, /* XSUM_XXH128_testdata[867] */ + { 289, 0x000000009E3779B1ULL, { 0x45728B6FE8821844ULL, 0xCE68388F48161ADBULL } }, /* XSUM_XXH128_testdata[868] */ + { 289, 0x9E3779B185EBCA8DULL, { 0x42C31C16CDE0CB93ULL, 0x9C468D93CDBD132EULL } }, /* XSUM_XXH128_testdata[869] */ + { 290, 0x0000000000000000ULL, { 0x0204AAB22D8EAA99ULL, 0x68E93E2931C0D78CULL } }, /* XSUM_XXH128_testdata[870] */ + { 290, 0x000000009E3779B1ULL, { 0x0136B0DF7DD76F3EULL, 0x1B554BE2E6620747ULL } }, /* XSUM_XXH128_testdata[871] */ + { 290, 0x9E3779B185EBCA8DULL, { 0x83B99E15E752ABDAULL, 0xB21CEEDAB50A5D26ULL } }, /* XSUM_XXH128_testdata[872] */ + { 291, 0x0000000000000000ULL, { 0x59131C26508F9EC8ULL, 0xECFAC6704A3E6DBCULL } }, /* XSUM_XXH128_testdata[873] */ + { 291, 0x000000009E3779B1ULL, { 0xE7B4E9D8440921F6ULL, 0x4161F41B6FCA7D4BULL } }, /* XSUM_XXH128_testdata[874] */ + { 291, 0x9E3779B185EBCA8DULL, { 0x5E0AC32BE4E9D932ULL, 0x873ECF88D7ABD324ULL } }, /* XSUM_XXH128_testdata[875] */ + { 292, 0x0000000000000000ULL, { 0x152B51807477888FULL, 0x1DF1209E78E8517AULL } }, /* XSUM_XXH128_testdata[876] */ + { 292, 0x000000009E3779B1ULL, { 0x123E2ECE4545B00AULL, 0x5CFB596C6F1A62B9ULL } }, /* XSUM_XXH128_testdata[877] */ + { 292, 0x9E3779B185EBCA8DULL, { 0x6B0C4D15682F3E3DULL, 0xC6339EC307283D7BULL } }, /* XSUM_XXH128_testdata[878] */ + { 293, 0x0000000000000000ULL, { 0x05686974668B34F7ULL, 0xAD31CB162B98C471ULL } }, /* XSUM_XXH128_testdata[879] */ + { 293, 0x000000009E3779B1ULL, { 0x28A81A190A5DA59BULL, 0xB305438B55D602EFULL } }, /* XSUM_XXH128_testdata[880] */ + { 293, 0x9E3779B185EBCA8DULL, { 0x52AE5AE6FB0817C8ULL, 0xB7815477A7C4ECCDULL } }, /* XSUM_XXH128_testdata[881] */ + { 294, 0x0000000000000000ULL, { 0x19113494008391ABULL, 0x85B2511B2CC6A9C3ULL } }, /* XSUM_XXH128_testdata[882] */ + { 294, 0x000000009E3779B1ULL, { 0x540FE57C9DCE3EFBULL, 0x1E505E9FE89799B2ULL } }, /* XSUM_XXH128_testdata[883] */ + { 294, 0x9E3779B185EBCA8DULL, { 0xE675C79778EE4793ULL, 0x6BB1A6BFE4B22746ULL } }, /* XSUM_XXH128_testdata[884] */ + { 295, 0x0000000000000000ULL, { 0x3EFAC1DC10E238A4ULL, 0xE26C6E7CCE2CE239ULL } }, /* XSUM_XXH128_testdata[885] */ + { 295, 0x000000009E3779B1ULL, { 0x056506A9613B74D8ULL, 0x1E1313FE0B89371DULL } }, /* XSUM_XXH128_testdata[886] */ + { 295, 0x9E3779B185EBCA8DULL, { 0xAF2BA7DCEFC70CA8ULL, 0xCDE6D84AE8E71E12ULL } }, /* XSUM_XXH128_testdata[887] */ + { 296, 0x0000000000000000ULL, { 0x5F4643F3D41C8764ULL, 0xD03886748B9BA85AULL } }, /* XSUM_XXH128_testdata[888] */ + { 296, 0x000000009E3779B1ULL, { 0xDD089EC77BC77F35ULL, 0xD9EC3DA2ADF6B81AULL } }, /* XSUM_XXH128_testdata[889] */ + { 296, 0x9E3779B185EBCA8DULL, { 0x41502D41C73D0567ULL, 0x02A00D0D86277988ULL } }, /* XSUM_XXH128_testdata[890] */ + { 297, 0x0000000000000000ULL, { 0x118968A8B54B2A15ULL, 0xE4F607B3D8407CA5ULL } }, /* XSUM_XXH128_testdata[891] */ + { 297, 0x000000009E3779B1ULL, { 0x5475D9165F23555EULL, 0x344C2578BD45106AULL } }, /* XSUM_XXH128_testdata[892] */ + { 297, 0x9E3779B185EBCA8DULL, { 0xA4591A1ADAB38B25ULL, 0x2B1D851775007D3FULL } }, /* XSUM_XXH128_testdata[893] */ + { 298, 0x0000000000000000ULL, { 0x2B2CFEA1E201D3ACULL, 0xD8F7E01F8BACFB05ULL } }, /* XSUM_XXH128_testdata[894] */ + { 298, 0x000000009E3779B1ULL, { 0x424F7E63C1BE19B1ULL, 0x9AE3837D7509DD2CULL } }, /* XSUM_XXH128_testdata[895] */ + { 298, 0x9E3779B185EBCA8DULL, { 0x3D27B64E0A4A5887ULL, 0xAB64F55806F4BB6CULL } }, /* XSUM_XXH128_testdata[896] */ + { 299, 0x0000000000000000ULL, { 0x1AB22BB41D28E478ULL, 0xCE5E859FB9F5E79AULL } }, /* XSUM_XXH128_testdata[897] */ + { 299, 0x000000009E3779B1ULL, { 0xCEE721B1DAFBA491ULL, 0x26751E1F9A915E5FULL } }, /* XSUM_XXH128_testdata[898] */ + { 299, 0x9E3779B185EBCA8DULL, { 0x8E0A8E8D5C430085ULL, 0xF841A00EC7BEA777ULL } }, /* XSUM_XXH128_testdata[899] */ + { 300, 0x0000000000000000ULL, { 0x7F371220466C4A1AULL, 0x8598507AD0B8FDE1ULL } }, /* XSUM_XXH128_testdata[900] */ + { 300, 0x000000009E3779B1ULL, { 0x9F95EEAE253EEFCFULL, 0xBCAEF611BF9B2063ULL } }, /* XSUM_XXH128_testdata[901] */ + { 300, 0x9E3779B185EBCA8DULL, { 0x1C886C664C4D81C4ULL, 0xD05510909C53A93CULL } }, /* XSUM_XXH128_testdata[902] */ + { 301, 0x0000000000000000ULL, { 0x69956645B30B3D03ULL, 0x50460B80555A8624ULL } }, /* XSUM_XXH128_testdata[903] */ + { 301, 0x000000009E3779B1ULL, { 0xAE11A4AB0451BA0AULL, 0x77324337B893AA1AULL } }, /* XSUM_XXH128_testdata[904] */ + { 301, 0x9E3779B185EBCA8DULL, { 0xC3314BB184586528ULL, 0xEEFD9F3B65855F66ULL } }, /* XSUM_XXH128_testdata[905] */ + { 302, 0x0000000000000000ULL, { 0xC9775577787FAC4BULL, 0x9853DA00C988B9D8ULL } }, /* XSUM_XXH128_testdata[906] */ + { 302, 0x000000009E3779B1ULL, { 0x0BAC92F641F3F4ECULL, 0xA926650C5937B287ULL } }, /* XSUM_XXH128_testdata[907] */ + { 302, 0x9E3779B185EBCA8DULL, { 0x0F10E728CA0B206DULL, 0xD1328E51245AE4FBULL } }, /* XSUM_XXH128_testdata[908] */ + { 303, 0x0000000000000000ULL, { 0x9B88FAF2C535DB33ULL, 0x51D50CAF104CA808ULL } }, /* XSUM_XXH128_testdata[909] */ + { 303, 0x000000009E3779B1ULL, { 0x41320BB673FB449CULL, 0x129F50D01EDF7ACFULL } }, /* XSUM_XXH128_testdata[910] */ + { 303, 0x9E3779B185EBCA8DULL, { 0xC05073F3497D23D6ULL, 0x18CDCB099E810F88ULL } }, /* XSUM_XXH128_testdata[911] */ + { 304, 0x0000000000000000ULL, { 0xCB1FB32DE8603D38ULL, 0xDBC84CA83689C7A9ULL } }, /* XSUM_XXH128_testdata[912] */ + { 304, 0x000000009E3779B1ULL, { 0xF43462E56AF24403ULL, 0x51E4973BCFC1F08EULL } }, /* XSUM_XXH128_testdata[913] */ + { 304, 0x9E3779B185EBCA8DULL, { 0xC932730EB0F57280ULL, 0x94B7D29773457392ULL } }, /* XSUM_XXH128_testdata[914] */ + { 305, 0x0000000000000000ULL, { 0x96C7F9915951C55FULL, 0xA6109FCBDDBC645FULL } }, /* XSUM_XXH128_testdata[915] */ + { 305, 0x000000009E3779B1ULL, { 0x152CD15D5FCF5391ULL, 0x03BA299B54F2D84CULL } }, /* XSUM_XXH128_testdata[916] */ + { 305, 0x9E3779B185EBCA8DULL, { 0x099D504612C1C3D3ULL, 0xBC7BE7ACBDFED9B2ULL } }, /* XSUM_XXH128_testdata[917] */ + { 306, 0x0000000000000000ULL, { 0x30AB2B22A729B0B0ULL, 0x11DD5CBB51A5CC12ULL } }, /* XSUM_XXH128_testdata[918] */ + { 306, 0x000000009E3779B1ULL, { 0xE7D36EE2D081EB7FULL, 0xD0836797E776F362ULL } }, /* XSUM_XXH128_testdata[919] */ + { 306, 0x9E3779B185EBCA8DULL, { 0x3882FFEB3971E2AAULL, 0x58BA5DBA8CF31230ULL } }, /* XSUM_XXH128_testdata[920] */ + { 307, 0x0000000000000000ULL, { 0x1203D0A98E057A63ULL, 0x911A9F0C46005C1AULL } }, /* XSUM_XXH128_testdata[921] */ + { 307, 0x000000009E3779B1ULL, { 0x877420B0D038BA55ULL, 0x641B0BBAD2E24F56ULL } }, /* XSUM_XXH128_testdata[922] */ + { 307, 0x9E3779B185EBCA8DULL, { 0xCCCC1F21C9C38955ULL, 0x51A2825B7E4DE7CDULL } }, /* XSUM_XXH128_testdata[923] */ + { 308, 0x0000000000000000ULL, { 0x5FE7A4E31AA01D1DULL, 0xE0EB118E567C95DAULL } }, /* XSUM_XXH128_testdata[924] */ + { 308, 0x000000009E3779B1ULL, { 0x5745B78AC02232D4ULL, 0x5DEE99015E0E012DULL } }, /* XSUM_XXH128_testdata[925] */ + { 308, 0x9E3779B185EBCA8DULL, { 0x24D6AB786E6DC5DCULL, 0x12DD67F17BCEECE0ULL } }, /* XSUM_XXH128_testdata[926] */ + { 309, 0x0000000000000000ULL, { 0x61EB6DCB5461BC22ULL, 0xC9FA77541652802CULL } }, /* XSUM_XXH128_testdata[927] */ + { 309, 0x000000009E3779B1ULL, { 0xF0C1B23D245BCED8ULL, 0x0029A669769E7766ULL } }, /* XSUM_XXH128_testdata[928] */ + { 309, 0x9E3779B185EBCA8DULL, { 0x829A233AB8802F5BULL, 0xE9C6D7A0194443CCULL } }, /* XSUM_XXH128_testdata[929] */ + { 310, 0x0000000000000000ULL, { 0xC373303BCFE79C7CULL, 0xB8AD8DE555D53C1FULL } }, /* XSUM_XXH128_testdata[930] */ + { 310, 0x000000009E3779B1ULL, { 0xCEAD952144171664ULL, 0x9A251720D9BC2354ULL } }, /* XSUM_XXH128_testdata[931] */ + { 310, 0x9E3779B185EBCA8DULL, { 0x03AF173FEE6164EEULL, 0xBC4CA2DF0D07C2EEULL } }, /* XSUM_XXH128_testdata[932] */ + { 311, 0x0000000000000000ULL, { 0x5D49DFEAFFEC1516ULL, 0xFDBEE2150DC799CBULL } }, /* XSUM_XXH128_testdata[933] */ + { 311, 0x000000009E3779B1ULL, { 0xC6DD4C0A44CDFACBULL, 0xF16ECB91F24EBA99ULL } }, /* XSUM_XXH128_testdata[934] */ + { 311, 0x9E3779B185EBCA8DULL, { 0xF33B315CCBED8F5FULL, 0x6A3427018AB7CF84ULL } }, /* XSUM_XXH128_testdata[935] */ + { 312, 0x0000000000000000ULL, { 0x9B69B6E825CB842EULL, 0xE82C4F29EB0741CAULL } }, /* XSUM_XXH128_testdata[936] */ + { 312, 0x000000009E3779B1ULL, { 0x5BE4933DDEF5B3CBULL, 0x8415410D0880D3E9ULL } }, /* XSUM_XXH128_testdata[937] */ + { 312, 0x9E3779B185EBCA8DULL, { 0x641BB90692349562ULL, 0xDED285D806F94A45ULL } }, /* XSUM_XXH128_testdata[938] */ + { 313, 0x0000000000000000ULL, { 0x175528876AADCD25ULL, 0x9A6C1BFE2D319291ULL } }, /* XSUM_XXH128_testdata[939] */ + { 313, 0x000000009E3779B1ULL, { 0x0B9AE72C9C5A059AULL, 0xA431C5B7D5BD2295ULL } }, /* XSUM_XXH128_testdata[940] */ + { 313, 0x9E3779B185EBCA8DULL, { 0x2178617919926E81ULL, 0x0473F78603FB5FB6ULL } }, /* XSUM_XXH128_testdata[941] */ + { 314, 0x0000000000000000ULL, { 0x760A4A825703F2EEULL, 0x6AE0AD0690ED55EFULL } }, /* XSUM_XXH128_testdata[942] */ + { 314, 0x000000009E3779B1ULL, { 0xAD2E7894E164C5D3ULL, 0xF3B1AC05D45B7131ULL } }, /* XSUM_XXH128_testdata[943] */ + { 314, 0x9E3779B185EBCA8DULL, { 0xBEA3F478303CA866ULL, 0xEDA75CA433BD88D4ULL } }, /* XSUM_XXH128_testdata[944] */ + { 315, 0x0000000000000000ULL, { 0x236712F8295DC8C5ULL, 0x9DCF7D301849AC06ULL } }, /* XSUM_XXH128_testdata[945] */ + { 315, 0x000000009E3779B1ULL, { 0xB74C8D4D95B8A968ULL, 0x8FC3863F28DCC692ULL } }, /* XSUM_XXH128_testdata[946] */ + { 315, 0x9E3779B185EBCA8DULL, { 0xECDC8B1C138EFF7CULL, 0x7DC213357727F518ULL } }, /* XSUM_XXH128_testdata[947] */ + { 316, 0x0000000000000000ULL, { 0x7E0D2210E4B43FD4ULL, 0xC2735B508B6F75FCULL } }, /* XSUM_XXH128_testdata[948] */ + { 316, 0x000000009E3779B1ULL, { 0x9FF0B7FB0BBA7B8AULL, 0x4567BD3D56210911ULL } }, /* XSUM_XXH128_testdata[949] */ + { 316, 0x9E3779B185EBCA8DULL, { 0xCDE6DF03B9FF13A8ULL, 0x9FFCF1846EA4D888ULL } }, /* XSUM_XXH128_testdata[950] */ + { 317, 0x0000000000000000ULL, { 0x0812693CCEDB7A83ULL, 0xAAAD735ACFC0B9E3ULL } }, /* XSUM_XXH128_testdata[951] */ + { 317, 0x000000009E3779B1ULL, { 0xCFD316FF5148B965ULL, 0x3C6155AE48EDCA5EULL } }, /* XSUM_XXH128_testdata[952] */ + { 317, 0x9E3779B185EBCA8DULL, { 0x6C89B1AC74E2A842ULL, 0x440F67F6A0047178ULL } }, /* XSUM_XXH128_testdata[953] */ + { 318, 0x0000000000000000ULL, { 0x249F29F2EFF9128CULL, 0x75049F4285A3B67EULL } }, /* XSUM_XXH128_testdata[954] */ + { 318, 0x000000009E3779B1ULL, { 0x6DC80FD1C71C3BFBULL, 0xDFCA546F57A2B363ULL } }, /* XSUM_XXH128_testdata[955] */ + { 318, 0x9E3779B185EBCA8DULL, { 0xCACCB88CE9D2648AULL, 0x1927A532C621E499ULL } }, /* XSUM_XXH128_testdata[956] */ + { 319, 0x0000000000000000ULL, { 0x0FCAA9E59EC5A883ULL, 0x3F5E05AF8CE5DDA8ULL } }, /* XSUM_XXH128_testdata[957] */ + { 319, 0x000000009E3779B1ULL, { 0xF2F6DD4E6A81C177ULL, 0xCC78EB92B759FD16ULL } }, /* XSUM_XXH128_testdata[958] */ + { 319, 0x9E3779B185EBCA8DULL, { 0xDFAF7A1B8B2DB390ULL, 0x1D2128F8604CD3ECULL } }, /* XSUM_XXH128_testdata[959] */ + { 320, 0x0000000000000000ULL, { 0x75620D350FF5C694ULL, 0x2C6021659F44E8D3ULL } }, /* XSUM_XXH128_testdata[960] */ + { 320, 0x000000009E3779B1ULL, { 0xB9BA3E6E10EF64F0ULL, 0x1155A21ACAD989FAULL } }, /* XSUM_XXH128_testdata[961] */ + { 320, 0x9E3779B185EBCA8DULL, { 0x19171DE40C928F07ULL, 0xB93ECA53885ABFBDULL } }, /* XSUM_XXH128_testdata[962] */ + { 321, 0x0000000000000000ULL, { 0x2D8C7E2634AB900AULL, 0xB0A6157E8CCDB4A4ULL } }, /* XSUM_XXH128_testdata[963] */ + { 321, 0x000000009E3779B1ULL, { 0xABA2726D09B77278ULL, 0x5168F805BD240D86ULL } }, /* XSUM_XXH128_testdata[964] */ + { 321, 0x9E3779B185EBCA8DULL, { 0x14AB0056CC187827ULL, 0x221581C8665A8B28ULL } }, /* XSUM_XXH128_testdata[965] */ + { 322, 0x0000000000000000ULL, { 0xA0DDC9DC085BC472ULL, 0x4E1B45CFDECCA66BULL } }, /* XSUM_XXH128_testdata[966] */ + { 322, 0x000000009E3779B1ULL, { 0x1CD5AC2049E34698ULL, 0x7E30D9D1CD52FFD8ULL } }, /* XSUM_XXH128_testdata[967] */ + { 322, 0x9E3779B185EBCA8DULL, { 0x0A37284F6B829CA9ULL, 0x3E62BD38C9318156ULL } }, /* XSUM_XXH128_testdata[968] */ + { 323, 0x0000000000000000ULL, { 0x141D6EF253EAB278ULL, 0x79BA2CDCA05FD0DAULL } }, /* XSUM_XXH128_testdata[969] */ + { 323, 0x000000009E3779B1ULL, { 0x81647DFF49E951D2ULL, 0x31733B70C2E7C2D3ULL } }, /* XSUM_XXH128_testdata[970] */ + { 323, 0x9E3779B185EBCA8DULL, { 0xDB4E00A0E6C2440CULL, 0x23754C1E32E5E9ABULL } }, /* XSUM_XXH128_testdata[971] */ + { 324, 0x0000000000000000ULL, { 0x46033B0653C32026ULL, 0x834E9EE33BF9BA44ULL } }, /* XSUM_XXH128_testdata[972] */ + { 324, 0x000000009E3779B1ULL, { 0x5DF48B77931AFAD1ULL, 0xE6C0E74449570878ULL } }, /* XSUM_XXH128_testdata[973] */ + { 324, 0x9E3779B185EBCA8DULL, { 0xF8F7E4A13FD0C762ULL, 0x4851DB74AE8A2D83ULL } }, /* XSUM_XXH128_testdata[974] */ + { 325, 0x0000000000000000ULL, { 0x9783E6F884F9C3EEULL, 0x89BCF8710E0D4E41ULL } }, /* XSUM_XXH128_testdata[975] */ + { 325, 0x000000009E3779B1ULL, { 0xD80F5373F1296BC9ULL, 0xAA8E10776B8615EBULL } }, /* XSUM_XXH128_testdata[976] */ + { 325, 0x9E3779B185EBCA8DULL, { 0x38FB4170FEC5D1F5ULL, 0xC4CEAE832005496BULL } }, /* XSUM_XXH128_testdata[977] */ + { 326, 0x0000000000000000ULL, { 0x30D17CB374CC76A1ULL, 0xF6A0735177F5D3A5ULL } }, /* XSUM_XXH128_testdata[978] */ + { 326, 0x000000009E3779B1ULL, { 0xAB6A4A5950DBAF53ULL, 0x591C47DA64F9DD1AULL } }, /* XSUM_XXH128_testdata[979] */ + { 326, 0x9E3779B185EBCA8DULL, { 0x40E89C75F444E468ULL, 0xF418D2CD4A5DF0AFULL } }, /* XSUM_XXH128_testdata[980] */ + { 327, 0x0000000000000000ULL, { 0x8917F6B5E2510EF2ULL, 0x1C64401B73BEC382ULL } }, /* XSUM_XXH128_testdata[981] */ + { 327, 0x000000009E3779B1ULL, { 0xC13523ABBC3CE6BCULL, 0x38E77A647114F1CFULL } }, /* XSUM_XXH128_testdata[982] */ + { 327, 0x9E3779B185EBCA8DULL, { 0xCE4C72C7D9F66CB8ULL, 0x4F847F88962BB9DFULL } }, /* XSUM_XXH128_testdata[983] */ + { 328, 0x0000000000000000ULL, { 0x4A40757A80E28484ULL, 0x46E122AC65B3E196ULL } }, /* XSUM_XXH128_testdata[984] */ + { 328, 0x000000009E3779B1ULL, { 0xF5F1768B1FB36088ULL, 0x05E77E8D4EFCE72FULL } }, /* XSUM_XXH128_testdata[985] */ + { 328, 0x9E3779B185EBCA8DULL, { 0xBA5941F2C9148DC1ULL, 0xE5D183B96A900A0EULL } }, /* XSUM_XXH128_testdata[986] */ + { 329, 0x0000000000000000ULL, { 0xF8C7161544010C5AULL, 0x87EC4759EB38193BULL } }, /* XSUM_XXH128_testdata[987] */ + { 329, 0x000000009E3779B1ULL, { 0xB1B136E7E4660F58ULL, 0x4BBA1ADF884B71CFULL } }, /* XSUM_XXH128_testdata[988] */ + { 329, 0x9E3779B185EBCA8DULL, { 0x24B1D84FE7244B61ULL, 0x6B929AC3C76D2D3CULL } }, /* XSUM_XXH128_testdata[989] */ + { 330, 0x0000000000000000ULL, { 0xE72B9958E036078AULL, 0x937D9B8A02E2CC58ULL } }, /* XSUM_XXH128_testdata[990] */ + { 330, 0x000000009E3779B1ULL, { 0xC15E95AC0F3EC49DULL, 0x79848986AE1EF75EULL } }, /* XSUM_XXH128_testdata[991] */ + { 330, 0x9E3779B185EBCA8DULL, { 0xBE30B55DC980DB1EULL, 0xF27DD456B49A2C97ULL } }, /* XSUM_XXH128_testdata[992] */ + { 331, 0x0000000000000000ULL, { 0x442E0D1FD80248FCULL, 0xCF07485A4409F558ULL } }, /* XSUM_XXH128_testdata[993] */ + { 331, 0x000000009E3779B1ULL, { 0xE24AC85BF3680116ULL, 0xB3A31092A187F549ULL } }, /* XSUM_XXH128_testdata[994] */ + { 331, 0x9E3779B185EBCA8DULL, { 0x2A6EF8B6395B6E1FULL, 0x5606970E74CAFB16ULL } }, /* XSUM_XXH128_testdata[995] */ + { 332, 0x0000000000000000ULL, { 0xE64066C1FEFE4314ULL, 0x6E0EE56E0B958D99ULL } }, /* XSUM_XXH128_testdata[996] */ + { 332, 0x000000009E3779B1ULL, { 0x8E76136474EC6434ULL, 0x84CE3C3D9E9C46E1ULL } }, /* XSUM_XXH128_testdata[997] */ + { 332, 0x9E3779B185EBCA8DULL, { 0xD575491B1369F423ULL, 0x85F79A2BABE49E33ULL } }, /* XSUM_XXH128_testdata[998] */ + { 333, 0x0000000000000000ULL, { 0xF80DC8E14BBD6D07ULL, 0x94641789E3BA0E40ULL } }, /* XSUM_XXH128_testdata[999] */ + { 333, 0x000000009E3779B1ULL, { 0xC9CCC48BC234271EULL, 0xE373F0627CC52A5CULL } }, /* XSUM_XXH128_testdata[1000] */ + { 333, 0x9E3779B185EBCA8DULL, { 0x490D275952EBC0F0ULL, 0xFEF9881B397E81C9ULL } }, /* XSUM_XXH128_testdata[1001] */ + { 334, 0x0000000000000000ULL, { 0x05A390D29F6A054AULL, 0x54CB240D98625A4FULL } }, /* XSUM_XXH128_testdata[1002] */ + { 334, 0x000000009E3779B1ULL, { 0xE16F8CD1CABF4730ULL, 0x5F73BEA5BBC1958EULL } }, /* XSUM_XXH128_testdata[1003] */ + { 334, 0x9E3779B185EBCA8DULL, { 0x306CB1E3B8D155CBULL, 0x58CD5CF40A2AF849ULL } }, /* XSUM_XXH128_testdata[1004] */ + { 335, 0x0000000000000000ULL, { 0xB337A624E2A2ADB0ULL, 0x9129B8C0359C0AA9ULL } }, /* XSUM_XXH128_testdata[1005] */ + { 335, 0x000000009E3779B1ULL, { 0x38837B6CE9C33C88ULL, 0xB0A01ACA85F284B7ULL } }, /* XSUM_XXH128_testdata[1006] */ + { 335, 0x9E3779B185EBCA8DULL, { 0xC1396645408E6BC0ULL, 0x285ACACD19493C2AULL } }, /* XSUM_XXH128_testdata[1007] */ + { 336, 0x0000000000000000ULL, { 0x5A38ED04BF508E7FULL, 0x1CB828735781F99CULL } }, /* XSUM_XXH128_testdata[1008] */ + { 336, 0x000000009E3779B1ULL, { 0xE449B8B982915095ULL, 0x908D814968BA0C78ULL } }, /* XSUM_XXH128_testdata[1009] */ + { 336, 0x9E3779B185EBCA8DULL, { 0x0BEA662D759BA2EDULL, 0x0736FF46B524B6B0ULL } }, /* XSUM_XXH128_testdata[1010] */ + { 337, 0x0000000000000000ULL, { 0x050BA6EB5632DB62ULL, 0x9B3F10DD20F92ED6ULL } }, /* XSUM_XXH128_testdata[1011] */ + { 337, 0x000000009E3779B1ULL, { 0x02E5ACD1F6E0A8FFULL, 0xE8751D7DA7E170DCULL } }, /* XSUM_XXH128_testdata[1012] */ + { 337, 0x9E3779B185EBCA8DULL, { 0x4E862E4034934DC9ULL, 0x849F0D4EDC89C227ULL } }, /* XSUM_XXH128_testdata[1013] */ + { 338, 0x0000000000000000ULL, { 0x1811F916B865B860ULL, 0x9504314AAD67455DULL } }, /* XSUM_XXH128_testdata[1014] */ + { 338, 0x000000009E3779B1ULL, { 0xDD81DA51E6B1D9F8ULL, 0x13B7F8E03A7EDE9CULL } }, /* XSUM_XXH128_testdata[1015] */ + { 338, 0x9E3779B185EBCA8DULL, { 0x7BBC087180D4823FULL, 0x3A213E0EC6515E3FULL } }, /* XSUM_XXH128_testdata[1016] */ + { 339, 0x0000000000000000ULL, { 0x6690999CE07A1E8EULL, 0xDDB2E7FA4C315505ULL } }, /* XSUM_XXH128_testdata[1017] */ + { 339, 0x000000009E3779B1ULL, { 0x12D4DF4F891B23D8ULL, 0x5951869BB791C1A9ULL } }, /* XSUM_XXH128_testdata[1018] */ + { 339, 0x9E3779B185EBCA8DULL, { 0xA273568067213D0DULL, 0x62CE06AFD8D97942ULL } }, /* XSUM_XXH128_testdata[1019] */ + { 340, 0x0000000000000000ULL, { 0xA351535A71F4582BULL, 0x4D3542769D4A893EULL } }, /* XSUM_XXH128_testdata[1020] */ + { 340, 0x000000009E3779B1ULL, { 0x4DE55CD894398E6DULL, 0x17254BB0627017F2ULL } }, /* XSUM_XXH128_testdata[1021] */ + { 340, 0x9E3779B185EBCA8DULL, { 0x142398F3E722FCDBULL, 0x4F99EF6879DC030AULL } }, /* XSUM_XXH128_testdata[1022] */ + { 341, 0x0000000000000000ULL, { 0x2ED4C42D9BF9EF7EULL, 0x076FB63638ABE331ULL } }, /* XSUM_XXH128_testdata[1023] */ + { 341, 0x000000009E3779B1ULL, { 0x5E4BCFF4AEEE78BDULL, 0x720A34D03D11AE58ULL } }, /* XSUM_XXH128_testdata[1024] */ + { 341, 0x9E3779B185EBCA8DULL, { 0x1424231A7C813FA7ULL, 0x656FF11095B2B0AEULL } }, /* XSUM_XXH128_testdata[1025] */ + { 342, 0x0000000000000000ULL, { 0xC28197021E7B3D09ULL, 0xCACBF52C6A29A707ULL } }, /* XSUM_XXH128_testdata[1026] */ + { 342, 0x000000009E3779B1ULL, { 0x1C9B357D95126971ULL, 0xDB40C08B8EAA8EF6ULL } }, /* XSUM_XXH128_testdata[1027] */ + { 342, 0x9E3779B185EBCA8DULL, { 0x3C8312E82E55D3E5ULL, 0x7BED740F638053D0ULL } }, /* XSUM_XXH128_testdata[1028] */ + { 343, 0x0000000000000000ULL, { 0x18AD1812D3FDBF32ULL, 0x2F2DD7AFF2BF43FFULL } }, /* XSUM_XXH128_testdata[1029] */ + { 343, 0x000000009E3779B1ULL, { 0xE5D4BB6826EE11B4ULL, 0x7E1AA6E40A388F3BULL } }, /* XSUM_XXH128_testdata[1030] */ + { 343, 0x9E3779B185EBCA8DULL, { 0x5E89058684C6D863ULL, 0xEA5A491E81AFD4E6ULL } }, /* XSUM_XXH128_testdata[1031] */ + { 344, 0x0000000000000000ULL, { 0x06F60422B9DA6E7DULL, 0x570BD3ECDC537804ULL } }, /* XSUM_XXH128_testdata[1032] */ + { 344, 0x000000009E3779B1ULL, { 0x57F3C81E056E0A53ULL, 0x2C3D990AAE98E5D9ULL } }, /* XSUM_XXH128_testdata[1033] */ + { 344, 0x9E3779B185EBCA8DULL, { 0xEDFAAEC0A5BC66F9ULL, 0x8547DE4990B37C50ULL } }, /* XSUM_XXH128_testdata[1034] */ + { 345, 0x0000000000000000ULL, { 0xC91F092A0D5BE3BEULL, 0x0754D9DD0C4C37CCULL } }, /* XSUM_XXH128_testdata[1035] */ + { 345, 0x000000009E3779B1ULL, { 0x5D7BDB9757BF0AF6ULL, 0x1FC3CA0034823665ULL } }, /* XSUM_XXH128_testdata[1036] */ + { 345, 0x9E3779B185EBCA8DULL, { 0xA11B94283398F91DULL, 0x63B3234E0ECA6835ULL } }, /* XSUM_XXH128_testdata[1037] */ + { 346, 0x0000000000000000ULL, { 0xD4CCD2EE25CBE5B0ULL, 0x4C49E5396DDBA5C2ULL } }, /* XSUM_XXH128_testdata[1038] */ + { 346, 0x000000009E3779B1ULL, { 0x9D7D1E8CDA685C56ULL, 0xEAE1AACE407431B3ULL } }, /* XSUM_XXH128_testdata[1039] */ + { 346, 0x9E3779B185EBCA8DULL, { 0x3C81706ECA21BC7DULL, 0x822BA48517BFB656ULL } }, /* XSUM_XXH128_testdata[1040] */ + { 347, 0x0000000000000000ULL, { 0x6B5289DA0ACD5BBFULL, 0x102C5EDCA78EE10DULL } }, /* XSUM_XXH128_testdata[1041] */ + { 347, 0x000000009E3779B1ULL, { 0x607FA44EBD1C6140ULL, 0x52E7FB4DAA6C8949ULL } }, /* XSUM_XXH128_testdata[1042] */ + { 347, 0x9E3779B185EBCA8DULL, { 0x55D376673F5026AEULL, 0xB5BC2458E1103C8AULL } }, /* XSUM_XXH128_testdata[1043] */ + { 348, 0x0000000000000000ULL, { 0xE6162B73B28EB205ULL, 0xEE0CB98DB5E79EFCULL } }, /* XSUM_XXH128_testdata[1044] */ + { 348, 0x000000009E3779B1ULL, { 0xC57F0EEA31081141ULL, 0xAD27847DE0C2157FULL } }, /* XSUM_XXH128_testdata[1045] */ + { 348, 0x9E3779B185EBCA8DULL, { 0x0AAE09BDCF8FD99EULL, 0xEC5DF4F7F0E17EAEULL } }, /* XSUM_XXH128_testdata[1046] */ + { 349, 0x0000000000000000ULL, { 0x9357F7E9DE083C47ULL, 0x0C73ABE849499975ULL } }, /* XSUM_XXH128_testdata[1047] */ + { 349, 0x000000009E3779B1ULL, { 0x1FD3E8425F930379ULL, 0x8BF46FACBD499B59ULL } }, /* XSUM_XXH128_testdata[1048] */ + { 349, 0x9E3779B185EBCA8DULL, { 0xB2AD4B3CBC09451DULL, 0x3276AD4B9821C7EFULL } }, /* XSUM_XXH128_testdata[1049] */ + { 350, 0x0000000000000000ULL, { 0xD097B966C4C4E964ULL, 0x2576C698D0A99B75ULL } }, /* XSUM_XXH128_testdata[1050] */ + { 350, 0x000000009E3779B1ULL, { 0xE0945A4D592AC0CDULL, 0x9450AABA277D8255ULL } }, /* XSUM_XXH128_testdata[1051] */ + { 350, 0x9E3779B185EBCA8DULL, { 0xFCDE6E432D40421CULL, 0x8FC1585475DCC018ULL } }, /* XSUM_XXH128_testdata[1052] */ + { 351, 0x0000000000000000ULL, { 0x2F10A562E85CBED8ULL, 0x30DDD726C46C1BB4ULL } }, /* XSUM_XXH128_testdata[1053] */ + { 351, 0x000000009E3779B1ULL, { 0x592ABE1A57641817ULL, 0x4F1907C042273419ULL } }, /* XSUM_XXH128_testdata[1054] */ + { 351, 0x9E3779B185EBCA8DULL, { 0x37C28859C95AF762ULL, 0x6BB62D4B852F992DULL } }, /* XSUM_XXH128_testdata[1055] */ + { 352, 0x0000000000000000ULL, { 0x0A72390BFB1873B9ULL, 0xB6364519C3B9E10CULL } }, /* XSUM_XXH128_testdata[1056] */ + { 352, 0x000000009E3779B1ULL, { 0x034A4FFCDF58B2FDULL, 0x8C37F95B65E18DBEULL } }, /* XSUM_XXH128_testdata[1057] */ + { 352, 0x9E3779B185EBCA8DULL, { 0xD533F779497D9415ULL, 0x44FBD702D3733C17ULL } }, /* XSUM_XXH128_testdata[1058] */ + { 353, 0x0000000000000000ULL, { 0x7B11C6784AC00CFBULL, 0x63B970B140AE7013ULL } }, /* XSUM_XXH128_testdata[1059] */ + { 353, 0x000000009E3779B1ULL, { 0xB02965D6B66E2A3EULL, 0x8E8796707FD59889ULL } }, /* XSUM_XXH128_testdata[1060] */ + { 353, 0x9E3779B185EBCA8DULL, { 0xD9AC0BDE567EA98EULL, 0xECF15BFCB6DDD332ULL } }, /* XSUM_XXH128_testdata[1061] */ + { 354, 0x0000000000000000ULL, { 0x38371A361827DDF8ULL, 0x21DEE5FA11EE3B0CULL } }, /* XSUM_XXH128_testdata[1062] */ + { 354, 0x000000009E3779B1ULL, { 0x2D7B5BB198984F95ULL, 0xE1DAA64C28429017ULL } }, /* XSUM_XXH128_testdata[1063] */ + { 354, 0x9E3779B185EBCA8DULL, { 0x0F5EABDFD0AAADE5ULL, 0x350599349EF4805EULL } }, /* XSUM_XXH128_testdata[1064] */ + { 355, 0x0000000000000000ULL, { 0xFED1244A20C5D95EULL, 0x17C05D00865F5BBBULL } }, /* XSUM_XXH128_testdata[1065] */ + { 355, 0x000000009E3779B1ULL, { 0x329BC6ECBFC2C8ADULL, 0x7C4AD6684C87254AULL } }, /* XSUM_XXH128_testdata[1066] */ + { 355, 0x9E3779B185EBCA8DULL, { 0x86BAC8C9DA725C98ULL, 0x8483ECFED89D9AD8ULL } }, /* XSUM_XXH128_testdata[1067] */ + { 356, 0x0000000000000000ULL, { 0x6758D5737F8EE218ULL, 0x63331AA64D4C2915ULL } }, /* XSUM_XXH128_testdata[1068] */ + { 356, 0x000000009E3779B1ULL, { 0x4629AD59CC887727ULL, 0x1DBA4989D98A7613ULL } }, /* XSUM_XXH128_testdata[1069] */ + { 356, 0x9E3779B185EBCA8DULL, { 0xC7BF8A1EF7442E3AULL, 0xA561869A36BC3AD0ULL } }, /* XSUM_XXH128_testdata[1070] */ + { 357, 0x0000000000000000ULL, { 0x0A8EF0DC9CD19128ULL, 0xB8BCFE7A9514C95DULL } }, /* XSUM_XXH128_testdata[1071] */ + { 357, 0x000000009E3779B1ULL, { 0x4AF5E35FB3F56181ULL, 0x98BC9A5577587257ULL } }, /* XSUM_XXH128_testdata[1072] */ + { 357, 0x9E3779B185EBCA8DULL, { 0x89662B16B4CA80CEULL, 0x98A86E9E7DCC9A08ULL } }, /* XSUM_XXH128_testdata[1073] */ + { 358, 0x0000000000000000ULL, { 0x356710A360FE6D37ULL, 0x4FB1519EA5C5D074ULL } }, /* XSUM_XXH128_testdata[1074] */ + { 358, 0x000000009E3779B1ULL, { 0xC0C09E9FA5A790B2ULL, 0x314823A706B5E1C1ULL } }, /* XSUM_XXH128_testdata[1075] */ + { 358, 0x9E3779B185EBCA8DULL, { 0xC3DF10584D452FB5ULL, 0x3844A7ED50C06BC1ULL } }, /* XSUM_XXH128_testdata[1076] */ + { 359, 0x0000000000000000ULL, { 0x689E083407BDA77AULL, 0xF53BC92D984E1B5BULL } }, /* XSUM_XXH128_testdata[1077] */ + { 359, 0x000000009E3779B1ULL, { 0xDB03B1E4028F1460ULL, 0x27122AF0B46E579DULL } }, /* XSUM_XXH128_testdata[1078] */ + { 359, 0x9E3779B185EBCA8DULL, { 0xB6A2FCB2E192C8BFULL, 0xF40F371CD3C2B81AULL } }, /* XSUM_XXH128_testdata[1079] */ + { 360, 0x0000000000000000ULL, { 0xE67BA7A185827EC1ULL, 0xCCD67450381DD276ULL } }, /* XSUM_XXH128_testdata[1080] */ + { 360, 0x000000009E3779B1ULL, { 0xFF5E62B2088A8B46ULL, 0xA7702F53539AAEA1ULL } }, /* XSUM_XXH128_testdata[1081] */ + { 360, 0x9E3779B185EBCA8DULL, { 0xF8FCCE52BFC4BF16ULL, 0x230141AB753BC332ULL } }, /* XSUM_XXH128_testdata[1082] */ + { 361, 0x0000000000000000ULL, { 0xF9B729ADAAD2CD4AULL, 0x296D66E0621050C4ULL } }, /* XSUM_XXH128_testdata[1083] */ + { 361, 0x000000009E3779B1ULL, { 0xB96A781B3758AB8EULL, 0x11D91B96B0DB4109ULL } }, /* XSUM_XXH128_testdata[1084] */ + { 361, 0x9E3779B185EBCA8DULL, { 0xEC259DEBCE39D391ULL, 0xED39CC4376C67AE9ULL } }, /* XSUM_XXH128_testdata[1085] */ + { 362, 0x0000000000000000ULL, { 0x3E6F14A1C5714D82ULL, 0x9E010E5DE54A1A39ULL } }, /* XSUM_XXH128_testdata[1086] */ + { 362, 0x000000009E3779B1ULL, { 0xD62E0BC8EE12C124ULL, 0x0400BBC76E2E6F56ULL } }, /* XSUM_XXH128_testdata[1087] */ + { 362, 0x9E3779B185EBCA8DULL, { 0x178E0A6F73D397C3ULL, 0x8E5440E3B6887D39ULL } }, /* XSUM_XXH128_testdata[1088] */ + { 363, 0x0000000000000000ULL, { 0xA48FD81FDF6DDFFFULL, 0x338A59AEB76B845DULL } }, /* XSUM_XXH128_testdata[1089] */ + { 363, 0x000000009E3779B1ULL, { 0xB77CD13A5C9A1A1FULL, 0x78F6AC815F90D86DULL } }, /* XSUM_XXH128_testdata[1090] */ + { 363, 0x9E3779B185EBCA8DULL, { 0xBB2E607EB6D70F5FULL, 0xEB54DA1B2AE13BC7ULL } }, /* XSUM_XXH128_testdata[1091] */ + { 364, 0x0000000000000000ULL, { 0xCCAAE62E73DC5F07ULL, 0xE4A4B75B5B267B45ULL } }, /* XSUM_XXH128_testdata[1092] */ + { 364, 0x000000009E3779B1ULL, { 0xC555A50BB7F8D804ULL, 0x5C20D73A685C5736ULL } }, /* XSUM_XXH128_testdata[1093] */ + { 364, 0x9E3779B185EBCA8DULL, { 0x967509C003FFCBFBULL, 0xD85C542761F32D26ULL } }, /* XSUM_XXH128_testdata[1094] */ + { 365, 0x0000000000000000ULL, { 0x40B4623FC1E2CCB4ULL, 0x4BF8A8421D440E9BULL } }, /* XSUM_XXH128_testdata[1095] */ + { 365, 0x000000009E3779B1ULL, { 0x281F3F48C4E56664ULL, 0x5550333B7273F4BCULL } }, /* XSUM_XXH128_testdata[1096] */ + { 365, 0x9E3779B185EBCA8DULL, { 0x664821A370168EC6ULL, 0x7D3ACB3B2977D934ULL } }, /* XSUM_XXH128_testdata[1097] */ + { 366, 0x0000000000000000ULL, { 0x2C07776DF175DC52ULL, 0x0813FEF02F6B3BF4ULL } }, /* XSUM_XXH128_testdata[1098] */ + { 366, 0x000000009E3779B1ULL, { 0xADE0B87763010F6AULL, 0x15F14A5F01B9FD1FULL } }, /* XSUM_XXH128_testdata[1099] */ + { 366, 0x9E3779B185EBCA8DULL, { 0xA9B71EB2AB8DAE07ULL, 0x35BE0567A0F09836ULL } }, /* XSUM_XXH128_testdata[1100] */ + { 367, 0x0000000000000000ULL, { 0x0A5E4DDBA6B9B799ULL, 0x90A3638FD486ED37ULL } }, /* XSUM_XXH128_testdata[1101] */ + { 367, 0x000000009E3779B1ULL, { 0x7C124C1441EF11FFULL, 0x81E03F2BE2870870ULL } }, /* XSUM_XXH128_testdata[1102] */ + { 367, 0x9E3779B185EBCA8DULL, { 0x63BFA87876C717E1ULL, 0x6C492CBBDCCB5A1BULL } }, /* XSUM_XXH128_testdata[1103] */ + { 368, 0x0000000000000000ULL, { 0xEB08A13C50A28D90ULL, 0x9822A230BC3D66FCULL } }, /* XSUM_XXH128_testdata[1104] */ + { 368, 0x000000009E3779B1ULL, { 0x90B00997C06E3746ULL, 0x41B5C15E701513E5ULL } }, /* XSUM_XXH128_testdata[1105] */ + { 368, 0x9E3779B185EBCA8DULL, { 0x8D4B6207901AFE7FULL, 0xF3CA2A49E2D5D85CULL } }, /* XSUM_XXH128_testdata[1106] */ + { 369, 0x0000000000000000ULL, { 0x243028D92185A27FULL, 0x185EB48743B883ABULL } }, /* XSUM_XXH128_testdata[1107] */ + { 369, 0x000000009E3779B1ULL, { 0x8F5CD39F83920FE1ULL, 0xA084A284E899B83BULL } }, /* XSUM_XXH128_testdata[1108] */ + { 369, 0x9E3779B185EBCA8DULL, { 0x188181E0EB235BEFULL, 0xFCD1058D8CA68C9CULL } }, /* XSUM_XXH128_testdata[1109] */ + { 370, 0x0000000000000000ULL, { 0xB03A6034965EB95AULL, 0x151030BD70C8E74EULL } }, /* XSUM_XXH128_testdata[1110] */ + { 370, 0x000000009E3779B1ULL, { 0xE3E2525E9A9127F2ULL, 0x723396FE87E6D15AULL } }, /* XSUM_XXH128_testdata[1111] */ + { 370, 0x9E3779B185EBCA8DULL, { 0x3658112343986D03ULL, 0x6D78BCA6EB1446EBULL } }, /* XSUM_XXH128_testdata[1112] */ + { 371, 0x0000000000000000ULL, { 0xFDAD032ECFF8F81BULL, 0xF8F00359C7294BD1ULL } }, /* XSUM_XXH128_testdata[1113] */ + { 371, 0x000000009E3779B1ULL, { 0xEB3D660AAA7B4D3AULL, 0x028BB5F599534289ULL } }, /* XSUM_XXH128_testdata[1114] */ + { 371, 0x9E3779B185EBCA8DULL, { 0xB7B21856F80476EAULL, 0x37B805A72903D8AAULL } }, /* XSUM_XXH128_testdata[1115] */ + { 372, 0x0000000000000000ULL, { 0x3DF375D22F30175EULL, 0x66432B76EBCDE9A8ULL } }, /* XSUM_XXH128_testdata[1116] */ + { 372, 0x000000009E3779B1ULL, { 0xD3650F8196C65AEBULL, 0x563CB2A2B0A71C19ULL } }, /* XSUM_XXH128_testdata[1117] */ + { 372, 0x9E3779B185EBCA8DULL, { 0x895C965C270CB32EULL, 0x2D19469679F3AE57ULL } }, /* XSUM_XXH128_testdata[1118] */ + { 373, 0x0000000000000000ULL, { 0x457A2E06A96B5EF9ULL, 0xB2D55BBBFF54DC00ULL } }, /* XSUM_XXH128_testdata[1119] */ + { 373, 0x000000009E3779B1ULL, { 0x24AE82EF1DAFA89DULL, 0x9108CE0BB725E663ULL } }, /* XSUM_XXH128_testdata[1120] */ + { 373, 0x9E3779B185EBCA8DULL, { 0x465C4F58755A8D6AULL, 0x6BC398295A4174A8ULL } }, /* XSUM_XXH128_testdata[1121] */ + { 374, 0x0000000000000000ULL, { 0xF975DEE7247758C4ULL, 0x4503DCC68D424164ULL } }, /* XSUM_XXH128_testdata[1122] */ + { 374, 0x000000009E3779B1ULL, { 0x156EF5C9C724BA7DULL, 0xB45EB1AD392C72A1ULL } }, /* XSUM_XXH128_testdata[1123] */ + { 374, 0x9E3779B185EBCA8DULL, { 0x222B1690A8184124ULL, 0x9FDB14BF0035B655ULL } }, /* XSUM_XXH128_testdata[1124] */ + { 375, 0x0000000000000000ULL, { 0x1CE867A9DD80AC40ULL, 0xAFBB83EABC76A1B7ULL } }, /* XSUM_XXH128_testdata[1125] */ + { 375, 0x000000009E3779B1ULL, { 0x38CB8C13F6ED9C24ULL, 0x03088CB73AF6737EULL } }, /* XSUM_XXH128_testdata[1126] */ + { 375, 0x9E3779B185EBCA8DULL, { 0xE17A6C6BD03728F8ULL, 0x9D0F2CA05329BA1CULL } }, /* XSUM_XXH128_testdata[1127] */ + { 376, 0x0000000000000000ULL, { 0x8BC2341CD63EA0E2ULL, 0x086DB4F0798DE341ULL } }, /* XSUM_XXH128_testdata[1128] */ + { 376, 0x000000009E3779B1ULL, { 0xDC7FDA14DFD7EC44ULL, 0xF4058CBE888DE693ULL } }, /* XSUM_XXH128_testdata[1129] */ + { 376, 0x9E3779B185EBCA8DULL, { 0xF08CA859CBF039DFULL, 0xE56A6C79F9F3F93CULL } }, /* XSUM_XXH128_testdata[1130] */ + { 377, 0x0000000000000000ULL, { 0x1E23A8EC4F2C6FD0ULL, 0x9201824E8510A085ULL } }, /* XSUM_XXH128_testdata[1131] */ + { 377, 0x000000009E3779B1ULL, { 0xB0C2E40F459B8D25ULL, 0xE8E234360E10D74AULL } }, /* XSUM_XXH128_testdata[1132] */ + { 377, 0x9E3779B185EBCA8DULL, { 0x3520A61AFD050718ULL, 0xEACD6104C4D97A1AULL } }, /* XSUM_XXH128_testdata[1133] */ + { 378, 0x0000000000000000ULL, { 0x2695FDF58F22BDCFULL, 0x6BB356ADEBFBB63DULL } }, /* XSUM_XXH128_testdata[1134] */ + { 378, 0x000000009E3779B1ULL, { 0x9AD76FE587EF5E38ULL, 0x360760A0FADDE040ULL } }, /* XSUM_XXH128_testdata[1135] */ + { 378, 0x9E3779B185EBCA8DULL, { 0x00D5CD7953DFD3CEULL, 0xB4B8019FFB3F9300ULL } }, /* XSUM_XXH128_testdata[1136] */ + { 379, 0x0000000000000000ULL, { 0xE9D2B64D0D9185BCULL, 0x6C07802D92E1499FULL } }, /* XSUM_XXH128_testdata[1137] */ + { 379, 0x000000009E3779B1ULL, { 0x6EA7C8E2700A3909ULL, 0x03A77BD67CC671F1ULL } }, /* XSUM_XXH128_testdata[1138] */ + { 379, 0x9E3779B185EBCA8DULL, { 0xF5C5EFEE146FF373ULL, 0x133CB21F610A57F3ULL } }, /* XSUM_XXH128_testdata[1139] */ + { 380, 0x0000000000000000ULL, { 0xE0040A13B2B8DE1EULL, 0x12FB3848E30CFCC5ULL } }, /* XSUM_XXH128_testdata[1140] */ + { 380, 0x000000009E3779B1ULL, { 0x36715EA9B83DE53AULL, 0xF004B1210B0FDF42ULL } }, /* XSUM_XXH128_testdata[1141] */ + { 380, 0x9E3779B185EBCA8DULL, { 0x274C9D311170A0D4ULL, 0x9973087A019100DAULL } }, /* XSUM_XXH128_testdata[1142] */ + { 381, 0x0000000000000000ULL, { 0x3CD53A3EEA1BFCCAULL, 0x90305F05D3F01D3EULL } }, /* XSUM_XXH128_testdata[1143] */ + { 381, 0x000000009E3779B1ULL, { 0x5E5AA20711BC1E1CULL, 0xA03D71CE04CAAD1CULL } }, /* XSUM_XXH128_testdata[1144] */ + { 381, 0x9E3779B185EBCA8DULL, { 0x58ED6D239F63C2C2ULL, 0x23EEFDC0A9E909E4ULL } }, /* XSUM_XXH128_testdata[1145] */ + { 382, 0x0000000000000000ULL, { 0x58BB4C31BBD2771DULL, 0x285DD0D45B155422ULL } }, /* XSUM_XXH128_testdata[1146] */ + { 382, 0x000000009E3779B1ULL, { 0x8B42226BBAA9C949ULL, 0xAC6796BEBE130D39ULL } }, /* XSUM_XXH128_testdata[1147] */ + { 382, 0x9E3779B185EBCA8DULL, { 0x5F10DEFD207C6C5DULL, 0x20ABBFBDA4DB2A4CULL } }, /* XSUM_XXH128_testdata[1148] */ + { 383, 0x0000000000000000ULL, { 0xEFF81E7006EF8ADDULL, 0xBD3B403BA7FD5A9AULL } }, /* XSUM_XXH128_testdata[1149] */ + { 383, 0x000000009E3779B1ULL, { 0x279879471B4CF132ULL, 0x319AA778D510E1AAULL } }, /* XSUM_XXH128_testdata[1150] */ + { 383, 0x9E3779B185EBCA8DULL, { 0x8A9AC5D71B4A0221ULL, 0x72863637C74AB887ULL } }, /* XSUM_XXH128_testdata[1151] */ + { 384, 0x0000000000000000ULL, { 0xBFA4BA14B8819D81ULL, 0x58588E7C8285AFB2ULL } }, /* XSUM_XXH128_testdata[1152] */ + { 384, 0x000000009E3779B1ULL, { 0x503507D98CA33ADBULL, 0x00F82B59D41B65C9ULL } }, /* XSUM_XXH128_testdata[1153] */ + { 384, 0x9E3779B185EBCA8DULL, { 0x10CABACF1434DB28ULL, 0x9111FC5B7EE63691ULL } }, /* XSUM_XXH128_testdata[1154] */ + { 385, 0x0000000000000000ULL, { 0x9C71E10B185A00BCULL, 0x3D8C6F30C9728230ULL } }, /* XSUM_XXH128_testdata[1155] */ + { 385, 0x000000009E3779B1ULL, { 0xEE025D4ABC0BB002ULL, 0xFD7FEC9793BD4C9CULL } }, /* XSUM_XXH128_testdata[1156] */ + { 385, 0x9E3779B185EBCA8DULL, { 0x04E7D79392ED571BULL, 0x0E5F09728499A65FULL } }, /* XSUM_XXH128_testdata[1157] */ + { 386, 0x0000000000000000ULL, { 0x973F73776BD1E095ULL, 0x91FEC8A158700D61ULL } }, /* XSUM_XXH128_testdata[1158] */ + { 386, 0x000000009E3779B1ULL, { 0x5DFAEFD0C7478090ULL, 0x6C7A9803C6C58C04ULL } }, /* XSUM_XXH128_testdata[1159] */ + { 386, 0x9E3779B185EBCA8DULL, { 0xD83E09472C25BB0AULL, 0x7636705679E7D927ULL } }, /* XSUM_XXH128_testdata[1160] */ + { 387, 0x0000000000000000ULL, { 0x5B40DFCCAD16CE4DULL, 0x65D1EF3AE59BA221ULL } }, /* XSUM_XXH128_testdata[1161] */ + { 387, 0x000000009E3779B1ULL, { 0x21044DDC18EE4F8AULL, 0xC67FBB69E603B7B7ULL } }, /* XSUM_XXH128_testdata[1162] */ + { 387, 0x9E3779B185EBCA8DULL, { 0x86E3EBBCBC2AB1ACULL, 0xE0FF9F9030B9E6C8ULL } }, /* XSUM_XXH128_testdata[1163] */ + { 388, 0x0000000000000000ULL, { 0x0C8FC0CB7907B1C7ULL, 0x66057CC67BC391B2ULL } }, /* XSUM_XXH128_testdata[1164] */ + { 388, 0x000000009E3779B1ULL, { 0x37D8B890CF4FF3B2ULL, 0x1CEC4DB066E524EEULL } }, /* XSUM_XXH128_testdata[1165] */ + { 388, 0x9E3779B185EBCA8DULL, { 0xD4D858791A82B65BULL, 0x44779F8AF93A98F8ULL } }, /* XSUM_XXH128_testdata[1166] */ + { 389, 0x0000000000000000ULL, { 0x819B7162F492B772ULL, 0x7620A74E3F7705D8ULL } }, /* XSUM_XXH128_testdata[1167] */ + { 389, 0x000000009E3779B1ULL, { 0xED518DAA32F1503BULL, 0x131E11967F26B5D3ULL } }, /* XSUM_XXH128_testdata[1168] */ + { 389, 0x9E3779B185EBCA8DULL, { 0x728977393847BE8EULL, 0x1F887694274370BBULL } }, /* XSUM_XXH128_testdata[1169] */ + { 390, 0x0000000000000000ULL, { 0x5C15DB645CF180EDULL, 0x78F8A13481059B7AULL } }, /* XSUM_XXH128_testdata[1170] */ + { 390, 0x000000009E3779B1ULL, { 0xF73159B738B48558ULL, 0xF67A20E2BC4A6FD5ULL } }, /* XSUM_XXH128_testdata[1171] */ + { 390, 0x9E3779B185EBCA8DULL, { 0x292F3F07CCE6C3D6ULL, 0xE284FDFF8F462C33ULL } }, /* XSUM_XXH128_testdata[1172] */ + { 391, 0x0000000000000000ULL, { 0x8F62CCED6640F4EAULL, 0x89BDCC54B02634C9ULL } }, /* XSUM_XXH128_testdata[1173] */ + { 391, 0x000000009E3779B1ULL, { 0x619D84CDC390DB17ULL, 0x3EB310BA00F0B437ULL } }, /* XSUM_XXH128_testdata[1174] */ + { 391, 0x9E3779B185EBCA8DULL, { 0x686F156F45F4566EULL, 0x1DAED69C1BEDBE0DULL } }, /* XSUM_XXH128_testdata[1175] */ + { 392, 0x0000000000000000ULL, { 0xEF4815662FD37717ULL, 0xC5E7A8EE4E3E814AULL } }, /* XSUM_XXH128_testdata[1176] */ + { 392, 0x000000009E3779B1ULL, { 0xE6777EEC93A79371ULL, 0xC4EE611DF76F685FULL } }, /* XSUM_XXH128_testdata[1177] */ + { 392, 0x9E3779B185EBCA8DULL, { 0xA6160EC75886933CULL, 0x2E5102295B6B8196ULL } }, /* XSUM_XXH128_testdata[1178] */ + { 393, 0x0000000000000000ULL, { 0xC75EA17287C05EC1ULL, 0xA63E099CA0FB0EF8ULL } }, /* XSUM_XXH128_testdata[1179] */ + { 393, 0x000000009E3779B1ULL, { 0xB81ABBD4B126ADFCULL, 0xB90848BB0AEDCCBCULL } }, /* XSUM_XXH128_testdata[1180] */ + { 393, 0x9E3779B185EBCA8DULL, { 0xB2CDCFE8958ACCBAULL, 0x493A71FF826ED2E3ULL } }, /* XSUM_XXH128_testdata[1181] */ + { 394, 0x0000000000000000ULL, { 0x38369087E260FDD5ULL, 0x2F0B1FA1198986D6ULL } }, /* XSUM_XXH128_testdata[1182] */ + { 394, 0x000000009E3779B1ULL, { 0xF36BB333AA368D39ULL, 0x739DF8A573CE5FB1ULL } }, /* XSUM_XXH128_testdata[1183] */ + { 394, 0x9E3779B185EBCA8DULL, { 0xF739CEEF793B6AD9ULL, 0x05658091C35C25DAULL } }, /* XSUM_XXH128_testdata[1184] */ + { 395, 0x0000000000000000ULL, { 0xA002E75BA958F3ABULL, 0x17D48A2ED7FF175FULL } }, /* XSUM_XXH128_testdata[1185] */ + { 395, 0x000000009E3779B1ULL, { 0xD001A9A6802B1336ULL, 0x136F669D1C617B8EULL } }, /* XSUM_XXH128_testdata[1186] */ + { 395, 0x9E3779B185EBCA8DULL, { 0x00148733D393906FULL, 0xD16B23974691D783ULL } }, /* XSUM_XXH128_testdata[1187] */ + { 396, 0x0000000000000000ULL, { 0xD38FF0C18C469384ULL, 0x5C56DDEDBD0BB26EULL } }, /* XSUM_XXH128_testdata[1188] */ + { 396, 0x000000009E3779B1ULL, { 0x92443AB81D13256DULL, 0x4FFEA61899440703ULL } }, /* XSUM_XXH128_testdata[1189] */ + { 396, 0x9E3779B185EBCA8DULL, { 0x03E1D3CAD75D86E8ULL, 0xEF4286FAB0AB4F26ULL } }, /* XSUM_XXH128_testdata[1190] */ + { 397, 0x0000000000000000ULL, { 0x8E724CDB123B0F76ULL, 0xC3010484860CD9E1ULL } }, /* XSUM_XXH128_testdata[1191] */ + { 397, 0x000000009E3779B1ULL, { 0xFCFDA2A772CCE982ULL, 0x704B674FF67FCB8DULL } }, /* XSUM_XXH128_testdata[1192] */ + { 397, 0x9E3779B185EBCA8DULL, { 0xB8BA0BF9A6B82F34ULL, 0x7C3F9959E3D36174ULL } }, /* XSUM_XXH128_testdata[1193] */ + { 398, 0x0000000000000000ULL, { 0x84B3C899F7AC4965ULL, 0xDC0BFDFC55782648ULL } }, /* XSUM_XXH128_testdata[1194] */ + { 398, 0x000000009E3779B1ULL, { 0x8B1C440A6C2F74F0ULL, 0x93C8ACCDDEF8447EULL } }, /* XSUM_XXH128_testdata[1195] */ + { 398, 0x9E3779B185EBCA8DULL, { 0x6670B58B7F0CDE77ULL, 0xEEC57E400CC69255ULL } }, /* XSUM_XXH128_testdata[1196] */ + { 399, 0x0000000000000000ULL, { 0x45A2DB2DCCC36D0AULL, 0xCB753F982D48B642ULL } }, /* XSUM_XXH128_testdata[1197] */ + { 399, 0x000000009E3779B1ULL, { 0x7A5E0DB26FA149A8ULL, 0x2031E6FF0B183F57ULL } }, /* XSUM_XXH128_testdata[1198] */ + { 399, 0x9E3779B185EBCA8DULL, { 0xCAE4E40D9EE9667EULL, 0x7278C58DC066C091ULL } }, /* XSUM_XXH128_testdata[1199] */ + { 400, 0x0000000000000000ULL, { 0xFE72257EB83FE803ULL, 0x1AD73F8BBEAF5028ULL } }, /* XSUM_XXH128_testdata[1200] */ + { 400, 0x000000009E3779B1ULL, { 0x6920CD9C027D9FF2ULL, 0x1FAB9C15E7C59199ULL } }, /* XSUM_XXH128_testdata[1201] */ + { 400, 0x9E3779B185EBCA8DULL, { 0x70703E5792C59B52ULL, 0xF04C6424124CB947ULL } }, /* XSUM_XXH128_testdata[1202] */ + { 401, 0x0000000000000000ULL, { 0x3D8B47914B075022ULL, 0x27D98BE4724D58CBULL } }, /* XSUM_XXH128_testdata[1203] */ + { 401, 0x000000009E3779B1ULL, { 0x97A3EEBB42CEE8DCULL, 0x822171A3B0036CD0ULL } }, /* XSUM_XXH128_testdata[1204] */ + { 401, 0x9E3779B185EBCA8DULL, { 0xFC91804BC832CDCCULL, 0xE411FED583B6C6A0ULL } }, /* XSUM_XXH128_testdata[1205] */ + { 402, 0x0000000000000000ULL, { 0xABEF11224F231FB9ULL, 0xF1B130A5F1F477CAULL } }, /* XSUM_XXH128_testdata[1206] */ + { 402, 0x000000009E3779B1ULL, { 0x09217988D17AE3FCULL, 0xB1E3369C11BBACACULL } }, /* XSUM_XXH128_testdata[1207] */ + { 402, 0x9E3779B185EBCA8DULL, { 0x9846605865B48634ULL, 0x2B766D8568320364ULL } }, /* XSUM_XXH128_testdata[1208] */ + { 403, 0x0000000000000000ULL, { 0xCDEB804D65C6DEA4ULL, 0x1B6DE21E332DD73DULL } }, /* XSUM_XXH128_testdata[1209] */ + { 403, 0x000000009E3779B1ULL, { 0x1FEF87BD75DBE404ULL, 0x1EF41459552CB839ULL } }, /* XSUM_XXH128_testdata[1210] */ + { 403, 0x9E3779B185EBCA8DULL, { 0x6259F6ECFD6443FDULL, 0xBED311971E0BE8F2ULL } }, /* XSUM_XXH128_testdata[1211] */ + { 404, 0x0000000000000000ULL, { 0x31FD8D78674068E6ULL, 0xBE3FD9F7C5F512FAULL } }, /* XSUM_XXH128_testdata[1212] */ + { 404, 0x000000009E3779B1ULL, { 0x58FBDF771F16C9A9ULL, 0x35383595882E301CULL } }, /* XSUM_XXH128_testdata[1213] */ + { 404, 0x9E3779B185EBCA8DULL, { 0x9EBB2664037CB2E7ULL, 0x55F468D067146E6EULL } }, /* XSUM_XXH128_testdata[1214] */ + { 405, 0x0000000000000000ULL, { 0x4C5D6FBB720EA4E5ULL, 0x8BD04AE2F50D47FAULL } }, /* XSUM_XXH128_testdata[1215] */ + { 405, 0x000000009E3779B1ULL, { 0xFB4A29C833E3C9E9ULL, 0x61D9E437448C0D13ULL } }, /* XSUM_XXH128_testdata[1216] */ + { 405, 0x9E3779B185EBCA8DULL, { 0xEFD0A92560F75477ULL, 0xFBCF23D98076D0D6ULL } }, /* XSUM_XXH128_testdata[1217] */ + { 406, 0x0000000000000000ULL, { 0xCDA5AB92635D07D6ULL, 0x7E0687FFFF72EC8BULL } }, /* XSUM_XXH128_testdata[1218] */ + { 406, 0x000000009E3779B1ULL, { 0x825C2D7A842ACA75ULL, 0xE64342400C6FB2C9ULL } }, /* XSUM_XXH128_testdata[1219] */ + { 406, 0x9E3779B185EBCA8DULL, { 0xC1E33EBC893925ABULL, 0xF4B4620CBCF33C94ULL } }, /* XSUM_XXH128_testdata[1220] */ + { 407, 0x0000000000000000ULL, { 0x6D8FA971FA046171ULL, 0x97635D3F78878886ULL } }, /* XSUM_XXH128_testdata[1221] */ + { 407, 0x000000009E3779B1ULL, { 0x935053DFEA0B88C9ULL, 0x8D533C2EC681EF45ULL } }, /* XSUM_XXH128_testdata[1222] */ + { 407, 0x9E3779B185EBCA8DULL, { 0x4663687A434D08D7ULL, 0x2175EF1B740A4DE5ULL } }, /* XSUM_XXH128_testdata[1223] */ + { 408, 0x0000000000000000ULL, { 0x65D015B8B40535F6ULL, 0xA71B75A44C895BF8ULL } }, /* XSUM_XXH128_testdata[1224] */ + { 408, 0x000000009E3779B1ULL, { 0x71E1DA4F2F56C2C8ULL, 0xB73D7E6E6D1A7CC9ULL } }, /* XSUM_XXH128_testdata[1225] */ + { 408, 0x9E3779B185EBCA8DULL, { 0xA53ABE5EB64DF88AULL, 0x781D7C8EBA3A5EA0ULL } }, /* XSUM_XXH128_testdata[1226] */ + { 409, 0x0000000000000000ULL, { 0x191E9B04AFBF9592ULL, 0xB2AC1E73F79CFAE1ULL } }, /* XSUM_XXH128_testdata[1227] */ + { 409, 0x000000009E3779B1ULL, { 0x99837885604CC865ULL, 0x8455974E8F97D5ADULL } }, /* XSUM_XXH128_testdata[1228] */ + { 409, 0x9E3779B185EBCA8DULL, { 0x9A0403349926D4C3ULL, 0x8E0181ED25A94010ULL } }, /* XSUM_XXH128_testdata[1229] */ + { 410, 0x0000000000000000ULL, { 0x6E19D5D185218E5EULL, 0xF23706E3FD76BFADULL } }, /* XSUM_XXH128_testdata[1230] */ + { 410, 0x000000009E3779B1ULL, { 0x8DD3D63184362F48ULL, 0x74BAD79E098E2624ULL } }, /* XSUM_XXH128_testdata[1231] */ + { 410, 0x9E3779B185EBCA8DULL, { 0x4ABD4B9474C3F244ULL, 0x1D8F340300D6B9C8ULL } }, /* XSUM_XXH128_testdata[1232] */ + { 411, 0x0000000000000000ULL, { 0xBD9ABCF40761A552ULL, 0x0E454BD8350B4C6AULL } }, /* XSUM_XXH128_testdata[1233] */ + { 411, 0x000000009E3779B1ULL, { 0xD93065254E396A66ULL, 0xDD9D72DA36453CD9ULL } }, /* XSUM_XXH128_testdata[1234] */ + { 411, 0x9E3779B185EBCA8DULL, { 0x04D39E24EDF5A1F2ULL, 0x95AB62A03640E716ULL } }, /* XSUM_XXH128_testdata[1235] */ + { 412, 0x0000000000000000ULL, { 0xE0B2A8EB2FF315E1ULL, 0x5D593610F1ECD852ULL } }, /* XSUM_XXH128_testdata[1236] */ + { 412, 0x000000009E3779B1ULL, { 0x2489B90774BF5A12ULL, 0x144874C833229025ULL } }, /* XSUM_XXH128_testdata[1237] */ + { 412, 0x9E3779B185EBCA8DULL, { 0xE1DE2A762EB136EFULL, 0x754F3917D78F6049ULL } }, /* XSUM_XXH128_testdata[1238] */ + { 413, 0x0000000000000000ULL, { 0x56FA90C681958CA8ULL, 0x29B2DCD501C2A717ULL } }, /* XSUM_XXH128_testdata[1239] */ + { 413, 0x000000009E3779B1ULL, { 0x63331524418F6B26ULL, 0x14FC4DB707F56C85ULL } }, /* XSUM_XXH128_testdata[1240] */ + { 413, 0x9E3779B185EBCA8DULL, { 0x166194994BD30447ULL, 0xCB8867D5BCC1FF01ULL } }, /* XSUM_XXH128_testdata[1241] */ + { 414, 0x0000000000000000ULL, { 0x3623BFBB213985E6ULL, 0x0CCFC87E8F80994AULL } }, /* XSUM_XXH128_testdata[1242] */ + { 414, 0x000000009E3779B1ULL, { 0x59B004B108C11869ULL, 0x727DB854CC14B2E5ULL } }, /* XSUM_XXH128_testdata[1243] */ + { 414, 0x9E3779B185EBCA8DULL, { 0x8850D31DF9B93187ULL, 0xAAE82B3627980855ULL } }, /* XSUM_XXH128_testdata[1244] */ + { 415, 0x0000000000000000ULL, { 0xE09B132B8B7F3B81ULL, 0xD7A99DB7EFA87A28ULL } }, /* XSUM_XXH128_testdata[1245] */ + { 415, 0x000000009E3779B1ULL, { 0x06482C491F8EEF33ULL, 0x5DF8FD1F4C199BCAULL } }, /* XSUM_XXH128_testdata[1246] */ + { 415, 0x9E3779B185EBCA8DULL, { 0xE0BA8BE7090D7EC4ULL, 0x44BDF22AB96E6F05ULL } }, /* XSUM_XXH128_testdata[1247] */ + { 416, 0x0000000000000000ULL, { 0x58ED1148D17FD5B0ULL, 0x2E2F3C527FA294CAULL } }, /* XSUM_XXH128_testdata[1248] */ + { 416, 0x000000009E3779B1ULL, { 0x1B8E7DC2C6C407FDULL, 0x32546FB200599F76ULL } }, /* XSUM_XXH128_testdata[1249] */ + { 416, 0x9E3779B185EBCA8DULL, { 0x1419610BC97E45DBULL, 0x1A50468B7D6BB3E9ULL } }, /* XSUM_XXH128_testdata[1250] */ + { 417, 0x0000000000000000ULL, { 0x7692303E4C6EBBCBULL, 0xF766B067FF92BE45ULL } }, /* XSUM_XXH128_testdata[1251] */ + { 417, 0x000000009E3779B1ULL, { 0xEAE1C4D9B49881FFULL, 0x8BECD745D933DF9CULL } }, /* XSUM_XXH128_testdata[1252] */ + { 417, 0x9E3779B185EBCA8DULL, { 0x8656C4A593876D39ULL, 0x43BA3E0958A95EBFULL } }, /* XSUM_XXH128_testdata[1253] */ + { 418, 0x0000000000000000ULL, { 0x9C3A84CCA97AF51BULL, 0x59BA7F1B2F021B80ULL } }, /* XSUM_XXH128_testdata[1254] */ + { 418, 0x000000009E3779B1ULL, { 0x1F7541029DF783FCULL, 0x18F4C72B369E465DULL } }, /* XSUM_XXH128_testdata[1255] */ + { 418, 0x9E3779B185EBCA8DULL, { 0xAAC65129D16BA2F2ULL, 0x3EBDB220D8B1C189ULL } }, /* XSUM_XXH128_testdata[1256] */ + { 419, 0x0000000000000000ULL, { 0x9BC1DB1F1F2DAC58ULL, 0x2BAE25C5149248C4ULL } }, /* XSUM_XXH128_testdata[1257] */ + { 419, 0x000000009E3779B1ULL, { 0x12B2746F6E304D2DULL, 0x84429AF9DE651199ULL } }, /* XSUM_XXH128_testdata[1258] */ + { 419, 0x9E3779B185EBCA8DULL, { 0x43F1C55F8899EBF8ULL, 0x0CAA90AE43374254ULL } }, /* XSUM_XXH128_testdata[1259] */ + { 420, 0x0000000000000000ULL, { 0x43B08566487BCC11ULL, 0x29152753B98D0360ULL } }, /* XSUM_XXH128_testdata[1260] */ + { 420, 0x000000009E3779B1ULL, { 0x357A100177ABC711ULL, 0xECFAC900B8F14745ULL } }, /* XSUM_XXH128_testdata[1261] */ + { 420, 0x9E3779B185EBCA8DULL, { 0x594FCB76CF4F675CULL, 0xB72FA3B5F8B45C55ULL } }, /* XSUM_XXH128_testdata[1262] */ + { 421, 0x0000000000000000ULL, { 0x10865DE3AC70A56FULL, 0xB3491911D39CE1A9ULL } }, /* XSUM_XXH128_testdata[1263] */ + { 421, 0x000000009E3779B1ULL, { 0x6E55FE455BAE58E3ULL, 0x4FFC6ED3CB70A643ULL } }, /* XSUM_XXH128_testdata[1264] */ + { 421, 0x9E3779B185EBCA8DULL, { 0x446A962722657007ULL, 0xF467638F58DAD7C7ULL } }, /* XSUM_XXH128_testdata[1265] */ + { 422, 0x0000000000000000ULL, { 0x7EB63CE889495361ULL, 0xB5592178AD4263ADULL } }, /* XSUM_XXH128_testdata[1266] */ + { 422, 0x000000009E3779B1ULL, { 0x04D6FD632FFBAFFEULL, 0x32EFDD665FA2FE2CULL } }, /* XSUM_XXH128_testdata[1267] */ + { 422, 0x9E3779B185EBCA8DULL, { 0xEACD288521441B28ULL, 0x2409DAE74AD479D4ULL } }, /* XSUM_XXH128_testdata[1268] */ + { 423, 0x0000000000000000ULL, { 0xFF15414E6B63375CULL, 0x6747AFD655EA8ADBULL } }, /* XSUM_XXH128_testdata[1269] */ + { 423, 0x000000009E3779B1ULL, { 0xA1F928D2DD4EAAA6ULL, 0xA1DE5711275DAC83ULL } }, /* XSUM_XXH128_testdata[1270] */ + { 423, 0x9E3779B185EBCA8DULL, { 0xCFC85AFD75504C0AULL, 0xF122220156F1886CULL } }, /* XSUM_XXH128_testdata[1271] */ + { 424, 0x0000000000000000ULL, { 0x817BF4D37E8C0B65ULL, 0xC832AD4E9E2A395AULL } }, /* XSUM_XXH128_testdata[1272] */ + { 424, 0x000000009E3779B1ULL, { 0x39C3F9C7D40667BAULL, 0x612702BB9BE44A44ULL } }, /* XSUM_XXH128_testdata[1273] */ + { 424, 0x9E3779B185EBCA8DULL, { 0x43CCC1F8DA0619C6ULL, 0x0EC044CBE10A04CDULL } }, /* XSUM_XXH128_testdata[1274] */ + { 425, 0x0000000000000000ULL, { 0x2C89A0ED03199F8CULL, 0xE51E1415F6244E36ULL } }, /* XSUM_XXH128_testdata[1275] */ + { 425, 0x000000009E3779B1ULL, { 0xC38AEB236276BCB1ULL, 0xFF364C5921F7B254ULL } }, /* XSUM_XXH128_testdata[1276] */ + { 425, 0x9E3779B185EBCA8DULL, { 0x857765D17605164CULL, 0x5DE4C6B6670C2EE0ULL } }, /* XSUM_XXH128_testdata[1277] */ + { 426, 0x0000000000000000ULL, { 0xF230464BB98EDC3BULL, 0x534BCDCAAB2893E3ULL } }, /* XSUM_XXH128_testdata[1278] */ + { 426, 0x000000009E3779B1ULL, { 0x80796B56EF17552FULL, 0x7DC4BB5489B692C9ULL } }, /* XSUM_XXH128_testdata[1279] */ + { 426, 0x9E3779B185EBCA8DULL, { 0xBF929B79F25B4809ULL, 0xDDEBF273556684C6ULL } }, /* XSUM_XXH128_testdata[1280] */ + { 427, 0x0000000000000000ULL, { 0xA2A423B19E704FABULL, 0xFB529CB56C230A66ULL } }, /* XSUM_XXH128_testdata[1281] */ + { 427, 0x000000009E3779B1ULL, { 0x77E662990F48F8A7ULL, 0xA28D68AEEF9100BAULL } }, /* XSUM_XXH128_testdata[1282] */ + { 427, 0x9E3779B185EBCA8DULL, { 0x3ED7F4BF67A5C831ULL, 0xE9DE0CD0A9A476EFULL } }, /* XSUM_XXH128_testdata[1283] */ + { 428, 0x0000000000000000ULL, { 0x9AFB077F996B7613ULL, 0x5429881FBA3FD765ULL } }, /* XSUM_XXH128_testdata[1284] */ + { 428, 0x000000009E3779B1ULL, { 0x15D4699943A70065ULL, 0x164518187E14CF44ULL } }, /* XSUM_XXH128_testdata[1285] */ + { 428, 0x9E3779B185EBCA8DULL, { 0x1549BE27144F50A1ULL, 0x3AA1E2832BE50EDFULL } }, /* XSUM_XXH128_testdata[1286] */ + { 429, 0x0000000000000000ULL, { 0x9D47BF94445A3213ULL, 0x19FD2CA4B64BB833ULL } }, /* XSUM_XXH128_testdata[1287] */ + { 429, 0x000000009E3779B1ULL, { 0xADEF8198C480632EULL, 0xC24334374B6E8961ULL } }, /* XSUM_XXH128_testdata[1288] */ + { 429, 0x9E3779B185EBCA8DULL, { 0xF746039AC39675AEULL, 0x7D2A86E471C2C7B4ULL } }, /* XSUM_XXH128_testdata[1289] */ + { 430, 0x0000000000000000ULL, { 0xE9C48257D575B8CEULL, 0x8BF790F4519DB620ULL } }, /* XSUM_XXH128_testdata[1290] */ + { 430, 0x000000009E3779B1ULL, { 0x95BF94D3341D502BULL, 0xD69E11CCC99882CEULL } }, /* XSUM_XXH128_testdata[1291] */ + { 430, 0x9E3779B185EBCA8DULL, { 0x45D0EA104A11D392ULL, 0x53AD9FE4C7A34CE6ULL } }, /* XSUM_XXH128_testdata[1292] */ + { 431, 0x0000000000000000ULL, { 0x6F79AE872AC2F64CULL, 0xB8951BE23FD9F45DULL } }, /* XSUM_XXH128_testdata[1293] */ + { 431, 0x000000009E3779B1ULL, { 0x6572FB525807C13BULL, 0xED0E6353FF7F7E27ULL } }, /* XSUM_XXH128_testdata[1294] */ + { 431, 0x9E3779B185EBCA8DULL, { 0x905C53D2BF759D9AULL, 0xDBE456F89BD12680ULL } }, /* XSUM_XXH128_testdata[1295] */ + { 432, 0x0000000000000000ULL, { 0x2F3209EA7B782DC2ULL, 0xA3DBA922C2A359CFULL } }, /* XSUM_XXH128_testdata[1296] */ + { 432, 0x000000009E3779B1ULL, { 0xAC640D0EA835CCFBULL, 0xDD30B289F33BB328ULL } }, /* XSUM_XXH128_testdata[1297] */ + { 432, 0x9E3779B185EBCA8DULL, { 0x9A4BE7D1E0A85C15ULL, 0x1DD33A09B6D26441ULL } }, /* XSUM_XXH128_testdata[1298] */ + { 433, 0x0000000000000000ULL, { 0x8DE541AFDA73B1B1ULL, 0x60572C8C6C6B4805ULL } }, /* XSUM_XXH128_testdata[1299] */ + { 433, 0x000000009E3779B1ULL, { 0x4799B3B23DBF8142ULL, 0xC42FBD4F5077947BULL } }, /* XSUM_XXH128_testdata[1300] */ + { 433, 0x9E3779B185EBCA8DULL, { 0x6C2B360F7791F77FULL, 0xE145B68E498CCFD3ULL } }, /* XSUM_XXH128_testdata[1301] */ + { 434, 0x0000000000000000ULL, { 0x09D24711A5DA385BULL, 0x5EDC496FEBC2D5B3ULL } }, /* XSUM_XXH128_testdata[1302] */ + { 434, 0x000000009E3779B1ULL, { 0xDE95EAA38529A89DULL, 0x03FFA9A23F56FD83ULL } }, /* XSUM_XXH128_testdata[1303] */ + { 434, 0x9E3779B185EBCA8DULL, { 0x5030A098EF830C27ULL, 0x745FBF420A0A28B0ULL } }, /* XSUM_XXH128_testdata[1304] */ + { 435, 0x0000000000000000ULL, { 0x2127D7E8E4E79978ULL, 0xEE0E18C953600AB8ULL } }, /* XSUM_XXH128_testdata[1305] */ + { 435, 0x000000009E3779B1ULL, { 0xE0F3FC79D064DA8DULL, 0x150AD8A74A8C31ECULL } }, /* XSUM_XXH128_testdata[1306] */ + { 435, 0x9E3779B185EBCA8DULL, { 0xA5D29C2D0876F429ULL, 0x7CC79C840C3DA43CULL } }, /* XSUM_XXH128_testdata[1307] */ + { 436, 0x0000000000000000ULL, { 0x7EB98ACB0AB2C56DULL, 0x46D8405C46B41518ULL } }, /* XSUM_XXH128_testdata[1308] */ + { 436, 0x000000009E3779B1ULL, { 0xFBEF3D19D61E2A12ULL, 0x9B25BBBD1C965F4FULL } }, /* XSUM_XXH128_testdata[1309] */ + { 436, 0x9E3779B185EBCA8DULL, { 0xBE084C3BAFAC5EA2ULL, 0x8255A8F1D37DB080ULL } }, /* XSUM_XXH128_testdata[1310] */ + { 437, 0x0000000000000000ULL, { 0x2140A7FD78990231ULL, 0x599C6839497747DAULL } }, /* XSUM_XXH128_testdata[1311] */ + { 437, 0x000000009E3779B1ULL, { 0x4F92886C0B1D6982ULL, 0xC76A51BEF4B430BAULL } }, /* XSUM_XXH128_testdata[1312] */ + { 437, 0x9E3779B185EBCA8DULL, { 0x42E35A4458568455ULL, 0x3A1E6B264DD8CCEBULL } }, /* XSUM_XXH128_testdata[1313] */ + { 438, 0x0000000000000000ULL, { 0x970A8482BCB629C5ULL, 0xC2CC407FB9C210E8ULL } }, /* XSUM_XXH128_testdata[1314] */ + { 438, 0x000000009E3779B1ULL, { 0x873DBD532E61248EULL, 0x326359A2B353C27FULL } }, /* XSUM_XXH128_testdata[1315] */ + { 438, 0x9E3779B185EBCA8DULL, { 0x73A540D66204C2A4ULL, 0x22CEABCB7C7B7CA1ULL } }, /* XSUM_XXH128_testdata[1316] */ + { 439, 0x0000000000000000ULL, { 0x692EA222FBE72AEDULL, 0x43A00CAA8E17A79FULL } }, /* XSUM_XXH128_testdata[1317] */ + { 439, 0x000000009E3779B1ULL, { 0x389263DDF470D4C2ULL, 0x281DE1817031782AULL } }, /* XSUM_XXH128_testdata[1318] */ + { 439, 0x9E3779B185EBCA8DULL, { 0x2E3F726921308EB9ULL, 0x797A949DDF774BEBULL } }, /* XSUM_XXH128_testdata[1319] */ + { 440, 0x0000000000000000ULL, { 0x6CC17B0280576E1CULL, 0x20C37EA6E70FEEDDULL } }, /* XSUM_XXH128_testdata[1320] */ + { 440, 0x000000009E3779B1ULL, { 0x4AA84CA36A384F3FULL, 0xE67AA1FD3F1D272FULL } }, /* XSUM_XXH128_testdata[1321] */ + { 440, 0x9E3779B185EBCA8DULL, { 0xB1434D3CDDDCEFDAULL, 0x3983B47B82D41954ULL } }, /* XSUM_XXH128_testdata[1322] */ + { 441, 0x0000000000000000ULL, { 0x6FADB76E8BB1DFD9ULL, 0x4156BD7F3C5C8C9DULL } }, /* XSUM_XXH128_testdata[1323] */ + { 441, 0x000000009E3779B1ULL, { 0xF69BECEC4824D666ULL, 0x27F72AF8CC571D94ULL } }, /* XSUM_XXH128_testdata[1324] */ + { 441, 0x9E3779B185EBCA8DULL, { 0x60760B3FD4F72780ULL, 0x09C53B538ED6BBF4ULL } }, /* XSUM_XXH128_testdata[1325] */ + { 442, 0x0000000000000000ULL, { 0x8F0AD64BD811D908ULL, 0x0CD37A4ADD71B090ULL } }, /* XSUM_XXH128_testdata[1326] */ + { 442, 0x000000009E3779B1ULL, { 0x78E0213F6B7F5996ULL, 0x043E9DFAD47F1CC2ULL } }, /* XSUM_XXH128_testdata[1327] */ + { 442, 0x9E3779B185EBCA8DULL, { 0x6864251320FDFCFEULL, 0x4823AA8A200A70B2ULL } }, /* XSUM_XXH128_testdata[1328] */ + { 443, 0x0000000000000000ULL, { 0xA5470A2ADAC472C9ULL, 0x7CB3BA7374433C00ULL } }, /* XSUM_XXH128_testdata[1329] */ + { 443, 0x000000009E3779B1ULL, { 0x420C7F395A0C921DULL, 0x5BB22E8D862DB29AULL } }, /* XSUM_XXH128_testdata[1330] */ + { 443, 0x9E3779B185EBCA8DULL, { 0x15C21C58E17003B6ULL, 0xCD0B7293D4215E47ULL } }, /* XSUM_XXH128_testdata[1331] */ + { 444, 0x0000000000000000ULL, { 0x8FC224C40EC49D28ULL, 0xBB394303FA58B82EULL } }, /* XSUM_XXH128_testdata[1332] */ + { 444, 0x000000009E3779B1ULL, { 0x165EDE4E5B316AA7ULL, 0x11DBCBB0578AC195ULL } }, /* XSUM_XXH128_testdata[1333] */ + { 444, 0x9E3779B185EBCA8DULL, { 0x2C1EEF8E4007C6B0ULL, 0x26439C652C1CAD4BULL } }, /* XSUM_XXH128_testdata[1334] */ + { 445, 0x0000000000000000ULL, { 0xDCBA55F9F43377DCULL, 0x761DA659143FC2AFULL } }, /* XSUM_XXH128_testdata[1335] */ + { 445, 0x000000009E3779B1ULL, { 0x257BB34C01B097CEULL, 0xBB824A00C2A04B0EULL } }, /* XSUM_XXH128_testdata[1336] */ + { 445, 0x9E3779B185EBCA8DULL, { 0x32ED9F8013B53EF8ULL, 0xDC05A7EEA553D99AULL } }, /* XSUM_XXH128_testdata[1337] */ + { 446, 0x0000000000000000ULL, { 0x551BC6C0D60451EFULL, 0x5FB2FAF7236A0F1CULL } }, /* XSUM_XXH128_testdata[1338] */ + { 446, 0x000000009E3779B1ULL, { 0x89CE2C49855A45EDULL, 0x2FA931B2D7F14F1BULL } }, /* XSUM_XXH128_testdata[1339] */ + { 446, 0x9E3779B185EBCA8DULL, { 0xA0816EA37EC52357ULL, 0xC3CD668DEA898B08ULL } }, /* XSUM_XXH128_testdata[1340] */ + { 447, 0x0000000000000000ULL, { 0x1DC9B62A18B3C8F9ULL, 0x8BE6CCAF8D27D7A8ULL } }, /* XSUM_XXH128_testdata[1341] */ + { 447, 0x000000009E3779B1ULL, { 0xD2DB4D78E237DF61ULL, 0x3CB976D72D0C6910ULL } }, /* XSUM_XXH128_testdata[1342] */ + { 447, 0x9E3779B185EBCA8DULL, { 0xF9A3B4DAD6BAFCD2ULL, 0x94639D58561F7839ULL } }, /* XSUM_XXH128_testdata[1343] */ + { 448, 0x0000000000000000ULL, { 0xCBB14EA4B925B28EULL, 0x4BAA583E8880D655ULL } }, /* XSUM_XXH128_testdata[1344] */ + { 448, 0x000000009E3779B1ULL, { 0xB9F3461A447831CEULL, 0xCFB5184C7DAC9804ULL } }, /* XSUM_XXH128_testdata[1345] */ + { 448, 0x9E3779B185EBCA8DULL, { 0x4E1F337F772EA804ULL, 0x3EC08470E837D496ULL } }, /* XSUM_XXH128_testdata[1346] */ + { 449, 0x0000000000000000ULL, { 0x1204E7DA3777E3F0ULL, 0x702BA708AA2D74FDULL } }, /* XSUM_XXH128_testdata[1347] */ + { 449, 0x000000009E3779B1ULL, { 0x7E3A9D36DBC14F93ULL, 0x6C6B245EB0D04053ULL } }, /* XSUM_XXH128_testdata[1348] */ + { 449, 0x9E3779B185EBCA8DULL, { 0xC2B8D68EF0F24196ULL, 0xEE94B423316594DEULL } }, /* XSUM_XXH128_testdata[1349] */ + { 450, 0x0000000000000000ULL, { 0x30F95E9006D65F68ULL, 0x364F274E7D101E5CULL } }, /* XSUM_XXH128_testdata[1350] */ + { 450, 0x000000009E3779B1ULL, { 0x9CCBD8BD63D4FF85ULL, 0x1E53BFE6D71BBE77ULL } }, /* XSUM_XXH128_testdata[1351] */ + { 450, 0x9E3779B185EBCA8DULL, { 0x83A805BD09941B9AULL, 0x98160242706C292AULL } }, /* XSUM_XXH128_testdata[1352] */ + { 451, 0x0000000000000000ULL, { 0x81F603B9628E8292ULL, 0x486F470C89FF3768ULL } }, /* XSUM_XXH128_testdata[1353] */ + { 451, 0x000000009E3779B1ULL, { 0x5737ADE94FDA0328ULL, 0x250C1E0CED5C121BULL } }, /* XSUM_XXH128_testdata[1354] */ + { 451, 0x9E3779B185EBCA8DULL, { 0xAC92C1D2B3A4CCCDULL, 0xC09A77B1B0CE4B06ULL } }, /* XSUM_XXH128_testdata[1355] */ + { 452, 0x0000000000000000ULL, { 0xD422314982847B14ULL, 0xA04A33BA54D0366BULL } }, /* XSUM_XXH128_testdata[1356] */ + { 452, 0x000000009E3779B1ULL, { 0x1697660CFBB81E00ULL, 0x81670C48B8BF02ACULL } }, /* XSUM_XXH128_testdata[1357] */ + { 452, 0x9E3779B185EBCA8DULL, { 0x69FFB99A51FD2A7FULL, 0xD533FDBE826585A2ULL } }, /* XSUM_XXH128_testdata[1358] */ + { 453, 0x0000000000000000ULL, { 0x8F457C62ECE0AF36ULL, 0xFA68FFF1307D53E8ULL } }, /* XSUM_XXH128_testdata[1359] */ + { 453, 0x000000009E3779B1ULL, { 0xFECCCE01CEECC8E3ULL, 0xD423F3FF38CF5B2BULL } }, /* XSUM_XXH128_testdata[1360] */ + { 453, 0x9E3779B185EBCA8DULL, { 0x7A8A9DA647B54209ULL, 0x4538130AB5B255B6ULL } }, /* XSUM_XXH128_testdata[1361] */ + { 454, 0x0000000000000000ULL, { 0x657580AF76460CA5ULL, 0xD03392928F693B26ULL } }, /* XSUM_XXH128_testdata[1362] */ + { 454, 0x000000009E3779B1ULL, { 0x36BEADD5C2623096ULL, 0xE06B9B080BF306F8ULL } }, /* XSUM_XXH128_testdata[1363] */ + { 454, 0x9E3779B185EBCA8DULL, { 0x9C7F4A11F01617F5ULL, 0x8C50414C0CFCEBA7ULL } }, /* XSUM_XXH128_testdata[1364] */ + { 455, 0x0000000000000000ULL, { 0x471B30BFD9213CD2ULL, 0x0BFE28A89ED22509ULL } }, /* XSUM_XXH128_testdata[1365] */ + { 455, 0x000000009E3779B1ULL, { 0x8DE379F88C0205AEULL, 0xE84D46E5F6EFB0C0ULL } }, /* XSUM_XXH128_testdata[1366] */ + { 455, 0x9E3779B185EBCA8DULL, { 0x3791406C5DE1DD68ULL, 0x54D8D1355A440CDCULL } }, /* XSUM_XXH128_testdata[1367] */ + { 456, 0x0000000000000000ULL, { 0x4F815C9C87995778ULL, 0x4A7789FDCE56546FULL } }, /* XSUM_XXH128_testdata[1368] */ + { 456, 0x000000009E3779B1ULL, { 0x770FE01656EE261FULL, 0xA6BAB84FC3A40F96ULL } }, /* XSUM_XXH128_testdata[1369] */ + { 456, 0x9E3779B185EBCA8DULL, { 0x58B35D938C1F53CAULL, 0x49A8E6961525A32DULL } }, /* XSUM_XXH128_testdata[1370] */ + { 457, 0x0000000000000000ULL, { 0x85D3E3AFB3451E9CULL, 0x7DE1C0B8E0A35E25ULL } }, /* XSUM_XXH128_testdata[1371] */ + { 457, 0x000000009E3779B1ULL, { 0x4A0B41A4289BC5ECULL, 0x7267A3241CFA7010ULL } }, /* XSUM_XXH128_testdata[1372] */ + { 457, 0x9E3779B185EBCA8DULL, { 0xF4BE2D5E9D6E6B21ULL, 0xFB1F246F83E354E3ULL } }, /* XSUM_XXH128_testdata[1373] */ + { 458, 0x0000000000000000ULL, { 0x75F5CD8DFB9AD755ULL, 0x3F3A4497FC2A1BCFULL } }, /* XSUM_XXH128_testdata[1374] */ + { 458, 0x000000009E3779B1ULL, { 0x600B9FA62F5B91B4ULL, 0x57C7A3F17B9187E3ULL } }, /* XSUM_XXH128_testdata[1375] */ + { 458, 0x9E3779B185EBCA8DULL, { 0xA8FEA2F2B1012E31ULL, 0xB0FC2EAE55D4CBABULL } }, /* XSUM_XXH128_testdata[1376] */ + { 459, 0x0000000000000000ULL, { 0xACFACC0109E7B2ADULL, 0xA1FEC0F092F6FA8FULL } }, /* XSUM_XXH128_testdata[1377] */ + { 459, 0x000000009E3779B1ULL, { 0x5BA8925A71802A94ULL, 0xD73DEF283B24F132ULL } }, /* XSUM_XXH128_testdata[1378] */ + { 459, 0x9E3779B185EBCA8DULL, { 0x5C7318DA5E667A88ULL, 0x8188E4120046AB56ULL } }, /* XSUM_XXH128_testdata[1379] */ + { 460, 0x0000000000000000ULL, { 0x52FAAE91FB875AB9ULL, 0xF5C117CE6E76DF54ULL } }, /* XSUM_XXH128_testdata[1380] */ + { 460, 0x000000009E3779B1ULL, { 0x1C802DC6C7EAA2AFULL, 0x28F05EBE214D30EAULL } }, /* XSUM_XXH128_testdata[1381] */ + { 460, 0x9E3779B185EBCA8DULL, { 0xD675FF2127E59493ULL, 0x8D6345DE68659940ULL } }, /* XSUM_XXH128_testdata[1382] */ + { 461, 0x0000000000000000ULL, { 0x547E13490C95E75AULL, 0x93A82E1EBDD01B3AULL } }, /* XSUM_XXH128_testdata[1383] */ + { 461, 0x000000009E3779B1ULL, { 0x988E870EAFB2AA56ULL, 0xCD9E29DE5B0E67CAULL } }, /* XSUM_XXH128_testdata[1384] */ + { 461, 0x9E3779B185EBCA8DULL, { 0x712CE8537166A856ULL, 0x6843B6BA063E0070ULL } }, /* XSUM_XXH128_testdata[1385] */ + { 462, 0x0000000000000000ULL, { 0x72CF15CFAEFD5200ULL, 0xC28DAA610231EF1CULL } }, /* XSUM_XXH128_testdata[1386] */ + { 462, 0x000000009E3779B1ULL, { 0x5C91287D06EDBC5EULL, 0x510B0A09C0980C3CULL } }, /* XSUM_XXH128_testdata[1387] */ + { 462, 0x9E3779B185EBCA8DULL, { 0x2D4C4326518A767BULL, 0xF416D9A9DED66468ULL } }, /* XSUM_XXH128_testdata[1388] */ + { 463, 0x0000000000000000ULL, { 0x2D7C641C000C8F93ULL, 0x37346344348D512FULL } }, /* XSUM_XXH128_testdata[1389] */ + { 463, 0x000000009E3779B1ULL, { 0x66481E6651D6A2C9ULL, 0x518A0DB4E2887862ULL } }, /* XSUM_XXH128_testdata[1390] */ + { 463, 0x9E3779B185EBCA8DULL, { 0xE08B26D522C9541BULL, 0x9C16E9D6BAE35606ULL } }, /* XSUM_XXH128_testdata[1391] */ + { 464, 0x0000000000000000ULL, { 0xA779170A3A016B5BULL, 0xA652B3CE7384B2A9ULL } }, /* XSUM_XXH128_testdata[1392] */ + { 464, 0x000000009E3779B1ULL, { 0xBEB3B766CE272318ULL, 0x33476BEE9EFADDFCULL } }, /* XSUM_XXH128_testdata[1393] */ + { 464, 0x9E3779B185EBCA8DULL, { 0xFE30CD988EA1BD7EULL, 0x627FB571C65FB777ULL } }, /* XSUM_XXH128_testdata[1394] */ + { 465, 0x0000000000000000ULL, { 0x82D6577E2DD44946ULL, 0x57D469E706C6657AULL } }, /* XSUM_XXH128_testdata[1395] */ + { 465, 0x000000009E3779B1ULL, { 0xA5F078C30EAC0B64ULL, 0x8FA635226C067BCFULL } }, /* XSUM_XXH128_testdata[1396] */ + { 465, 0x9E3779B185EBCA8DULL, { 0xEE89A34CB86CFC63ULL, 0xF833B5D7FF2F6843ULL } }, /* XSUM_XXH128_testdata[1397] */ + { 466, 0x0000000000000000ULL, { 0x7A538D4BF06B3529ULL, 0x2137C561C7F5C100ULL } }, /* XSUM_XXH128_testdata[1398] */ + { 466, 0x000000009E3779B1ULL, { 0x7F5A5980AC5B380FULL, 0x3A27E5ECD038BED5ULL } }, /* XSUM_XXH128_testdata[1399] */ + { 466, 0x9E3779B185EBCA8DULL, { 0x3DA22BE4D85CE818ULL, 0xA67DC3C80289CE28ULL } }, /* XSUM_XXH128_testdata[1400] */ + { 467, 0x0000000000000000ULL, { 0x7F5638FD02E586D9ULL, 0xB23D76ADF419C7A1ULL } }, /* XSUM_XXH128_testdata[1401] */ + { 467, 0x000000009E3779B1ULL, { 0xDF31CD15C3019560ULL, 0x7B6442E7A807D5C9ULL } }, /* XSUM_XXH128_testdata[1402] */ + { 467, 0x9E3779B185EBCA8DULL, { 0x5A4F312059334990ULL, 0x62134F925EF58E00ULL } }, /* XSUM_XXH128_testdata[1403] */ + { 468, 0x0000000000000000ULL, { 0xFCFDBCCF4C625BD1ULL, 0xA0EAFCC760FA2158ULL } }, /* XSUM_XXH128_testdata[1404] */ + { 468, 0x000000009E3779B1ULL, { 0x2F8CF3FDF6451041ULL, 0x863E031E59549C31ULL } }, /* XSUM_XXH128_testdata[1405] */ + { 468, 0x9E3779B185EBCA8DULL, { 0xAA255B5CF577171BULL, 0x9D0B624FBE1FBAD8ULL } }, /* XSUM_XXH128_testdata[1406] */ + { 469, 0x0000000000000000ULL, { 0xACC4CE635F59D564ULL, 0xD348D1B22F25063CULL } }, /* XSUM_XXH128_testdata[1407] */ + { 469, 0x000000009E3779B1ULL, { 0x88140AD759F1E6A8ULL, 0xCF157A6049243AFFULL } }, /* XSUM_XXH128_testdata[1408] */ + { 469, 0x9E3779B185EBCA8DULL, { 0xBA1277E16F3D0F7EULL, 0xA19D051E805EBE64ULL } }, /* XSUM_XXH128_testdata[1409] */ + { 470, 0x0000000000000000ULL, { 0xAF32C3D3E5C96826ULL, 0xE3789B738EC3D1A1ULL } }, /* XSUM_XXH128_testdata[1410] */ + { 470, 0x000000009E3779B1ULL, { 0xFC0C8102B1A0408AULL, 0xDEBA193EC281FF70ULL } }, /* XSUM_XXH128_testdata[1411] */ + { 470, 0x9E3779B185EBCA8DULL, { 0xB5902BA4883A0AC7ULL, 0x16D1AE0A370B0773ULL } }, /* XSUM_XXH128_testdata[1412] */ + { 471, 0x0000000000000000ULL, { 0x2A549F3506C157F7ULL, 0x1E653E48A62F795FULL } }, /* XSUM_XXH128_testdata[1413] */ + { 471, 0x000000009E3779B1ULL, { 0x75799C9B90FDB82CULL, 0x0ACB039ADE8F409DULL } }, /* XSUM_XXH128_testdata[1414] */ + { 471, 0x9E3779B185EBCA8DULL, { 0x19107317BB46B43FULL, 0x3711DCA419DAF58CULL } }, /* XSUM_XXH128_testdata[1415] */ + { 472, 0x0000000000000000ULL, { 0x5E13DB5A6EC9AC17ULL, 0x60B9E9B9D231D2A4ULL } }, /* XSUM_XXH128_testdata[1416] */ + { 472, 0x000000009E3779B1ULL, { 0x650572E7D1872A5AULL, 0x8E024E228F02814BULL } }, /* XSUM_XXH128_testdata[1417] */ + { 472, 0x9E3779B185EBCA8DULL, { 0x96D80A21750B1B90ULL, 0x3BB4DFEF2810C4B7ULL } }, /* XSUM_XXH128_testdata[1418] */ + { 473, 0x0000000000000000ULL, { 0x4BFB3C69FCEECE7FULL, 0x30076F5FF0077774ULL } }, /* XSUM_XXH128_testdata[1419] */ + { 473, 0x000000009E3779B1ULL, { 0xE3405FD993424CA3ULL, 0x8163A30D9821E501ULL } }, /* XSUM_XXH128_testdata[1420] */ + { 473, 0x9E3779B185EBCA8DULL, { 0x7DE8627EB0718D81ULL, 0xBEF974AB8217BDA6ULL } }, /* XSUM_XXH128_testdata[1421] */ + { 474, 0x0000000000000000ULL, { 0x16D6CD341FE6C64EULL, 0x812CFCFB9FCA5020ULL } }, /* XSUM_XXH128_testdata[1422] */ + { 474, 0x000000009E3779B1ULL, { 0x0FDA08515F896B09ULL, 0x791F11A5DC099DE3ULL } }, /* XSUM_XXH128_testdata[1423] */ + { 474, 0x9E3779B185EBCA8DULL, { 0x2D862EA0AE3A8DBDULL, 0x844D545D1758806EULL } }, /* XSUM_XXH128_testdata[1424] */ + { 475, 0x0000000000000000ULL, { 0xDB59963FF1FC1465ULL, 0x6C410BCB2FA543EFULL } }, /* XSUM_XXH128_testdata[1425] */ + { 475, 0x000000009E3779B1ULL, { 0xB6E8B63164EACECCULL, 0x43E823EDB03DA9B8ULL } }, /* XSUM_XXH128_testdata[1426] */ + { 475, 0x9E3779B185EBCA8DULL, { 0x300D11B3F436F442ULL, 0x43E20A10FDFC620DULL } }, /* XSUM_XXH128_testdata[1427] */ + { 476, 0x0000000000000000ULL, { 0x4A76BE44A1317EA8ULL, 0xA030987FA6E2FD14ULL } }, /* XSUM_XXH128_testdata[1428] */ + { 476, 0x000000009E3779B1ULL, { 0x0DB0A9DE5EED1A56ULL, 0x763A8B24359400C7ULL } }, /* XSUM_XXH128_testdata[1429] */ + { 476, 0x9E3779B185EBCA8DULL, { 0x22D425519D2A32B6ULL, 0x27C1C9F8FCA0A38CULL } }, /* XSUM_XXH128_testdata[1430] */ + { 477, 0x0000000000000000ULL, { 0x66B195B99D35E394ULL, 0xA1C0DF69414E44EFULL } }, /* XSUM_XXH128_testdata[1431] */ + { 477, 0x000000009E3779B1ULL, { 0x7C3D0FADED200D0AULL, 0x5C8986BCCE098D56ULL } }, /* XSUM_XXH128_testdata[1432] */ + { 477, 0x9E3779B185EBCA8DULL, { 0x81E74D402EE78D93ULL, 0x71D212B5877D2D4BULL } }, /* XSUM_XXH128_testdata[1433] */ + { 478, 0x0000000000000000ULL, { 0x0C920F66078C27A8ULL, 0x3712FEE494E8DE75ULL } }, /* XSUM_XXH128_testdata[1434] */ + { 478, 0x000000009E3779B1ULL, { 0x7AD448888786080CULL, 0x7E2D27754C578F88ULL } }, /* XSUM_XXH128_testdata[1435] */ + { 478, 0x9E3779B185EBCA8DULL, { 0xA8FE3B7613D9DBBBULL, 0x376F8D091AC5E9B5ULL } }, /* XSUM_XXH128_testdata[1436] */ + { 479, 0x0000000000000000ULL, { 0x0C10DDBEDF0F68FEULL, 0xB6F8E25F8E0ECCBBULL } }, /* XSUM_XXH128_testdata[1437] */ + { 479, 0x000000009E3779B1ULL, { 0x7C695CDF94D69175ULL, 0x510005787CB5D5CEULL } }, /* XSUM_XXH128_testdata[1438] */ + { 479, 0x9E3779B185EBCA8DULL, { 0xF35D3280A168FC1CULL, 0xCF2401B957C1A6CDULL } }, /* XSUM_XXH128_testdata[1439] */ + { 480, 0x0000000000000000ULL, { 0xB2A644E90D66B68AULL, 0xE80E3554C4D250CFULL } }, /* XSUM_XXH128_testdata[1440] */ + { 480, 0x000000009E3779B1ULL, { 0x5B8E453D68E7D131ULL, 0xA268FDA35DBD7A0CULL } }, /* XSUM_XXH128_testdata[1441] */ + { 480, 0x9E3779B185EBCA8DULL, { 0x1BEC09D4C1FAFE29ULL, 0xA86AF0A84C91FAEAULL } }, /* XSUM_XXH128_testdata[1442] */ + { 481, 0x0000000000000000ULL, { 0x37CF71FFFAA3DB8EULL, 0x2DB636B6823E7423ULL } }, /* XSUM_XXH128_testdata[1443] */ + { 481, 0x000000009E3779B1ULL, { 0xCD9A078B5B5EA209ULL, 0xF179BCA0B319F104ULL } }, /* XSUM_XXH128_testdata[1444] */ + { 481, 0x9E3779B185EBCA8DULL, { 0xC25B65F5CCC72AE6ULL, 0xE86C642E58028453ULL } }, /* XSUM_XXH128_testdata[1445] */ + { 482, 0x0000000000000000ULL, { 0x04357549339CBEB2ULL, 0x651530390EF80DCDULL } }, /* XSUM_XXH128_testdata[1446] */ + { 482, 0x000000009E3779B1ULL, { 0x72DD0DAF94E5D936ULL, 0xBFCEC7120D9328C7ULL } }, /* XSUM_XXH128_testdata[1447] */ + { 482, 0x9E3779B185EBCA8DULL, { 0x47CE0A0A7B8CFB40ULL, 0xD26EE8AC495D3EA2ULL } }, /* XSUM_XXH128_testdata[1448] */ + { 483, 0x0000000000000000ULL, { 0x90B090913EEBFB2BULL, 0xA753ED3488676A7FULL } }, /* XSUM_XXH128_testdata[1449] */ + { 483, 0x000000009E3779B1ULL, { 0x121B5B2E0C0974D8ULL, 0x42BE92D1A7D2FFF0ULL } }, /* XSUM_XXH128_testdata[1450] */ + { 483, 0x9E3779B185EBCA8DULL, { 0xF2F1E5793864A111ULL, 0xED4CBD7930673E60ULL } }, /* XSUM_XXH128_testdata[1451] */ + { 484, 0x0000000000000000ULL, { 0x37664441826F862BULL, 0xB9572F0BA8C8ABB3ULL } }, /* XSUM_XXH128_testdata[1452] */ + { 484, 0x000000009E3779B1ULL, { 0x14BDE08EB5E29DD8ULL, 0xEAFF4C2716C634BAULL } }, /* XSUM_XXH128_testdata[1453] */ + { 484, 0x9E3779B185EBCA8DULL, { 0xA804820D478313ABULL, 0xCEBFDE3BE90A0D59ULL } }, /* XSUM_XXH128_testdata[1454] */ + { 485, 0x0000000000000000ULL, { 0x6D910B2F3066BB50ULL, 0xC9C32A53BB58CEC4ULL } }, /* XSUM_XXH128_testdata[1455] */ + { 485, 0x000000009E3779B1ULL, { 0x6FE49C6EBD1DB0F6ULL, 0x9ACACE61AD2809CEULL } }, /* XSUM_XXH128_testdata[1456] */ + { 485, 0x9E3779B185EBCA8DULL, { 0x8F90C3511B256A6EULL, 0x80103FBB3C0EA426ULL } }, /* XSUM_XXH128_testdata[1457] */ + { 486, 0x0000000000000000ULL, { 0x86CE5E6EA6F98C28ULL, 0xD837EF8E6DC76AE4ULL } }, /* XSUM_XXH128_testdata[1458] */ + { 486, 0x000000009E3779B1ULL, { 0xCF389878A6706744ULL, 0x312CEF8FE59998E7ULL } }, /* XSUM_XXH128_testdata[1459] */ + { 486, 0x9E3779B185EBCA8DULL, { 0xB35AD59403FDED90ULL, 0x205E7194992C8595ULL } }, /* XSUM_XXH128_testdata[1460] */ + { 487, 0x0000000000000000ULL, { 0x2C99E1392A36DF28ULL, 0x71986D2B1F0330ECULL } }, /* XSUM_XXH128_testdata[1461] */ + { 487, 0x000000009E3779B1ULL, { 0x0AE4FB84DEE1C09EULL, 0x9ABFD91A7A05EE68ULL } }, /* XSUM_XXH128_testdata[1462] */ + { 487, 0x9E3779B185EBCA8DULL, { 0x0A877CFAA0803A37ULL, 0xDB48B20CBC652F8CULL } }, /* XSUM_XXH128_testdata[1463] */ + { 488, 0x0000000000000000ULL, { 0x108C4CB805213EEAULL, 0x95EE06001AE4B3B8ULL } }, /* XSUM_XXH128_testdata[1464] */ + { 488, 0x000000009E3779B1ULL, { 0x39CEF760EE0538ECULL, 0xDCEB08331965B0DFULL } }, /* XSUM_XXH128_testdata[1465] */ + { 488, 0x9E3779B185EBCA8DULL, { 0x8D7E49020FBC0021ULL, 0xD28CD297DB5B409DULL } }, /* XSUM_XXH128_testdata[1466] */ + { 489, 0x0000000000000000ULL, { 0x8F53B54D164A815AULL, 0xD09C746F7D2CE0BCULL } }, /* XSUM_XXH128_testdata[1467] */ + { 489, 0x000000009E3779B1ULL, { 0xF8958A1D3CED449EULL, 0xF9853FAF70858FAFULL } }, /* XSUM_XXH128_testdata[1468] */ + { 489, 0x9E3779B185EBCA8DULL, { 0xCC1DDAB79D352C8EULL, 0x95C97E12C5EE61A9ULL } }, /* XSUM_XXH128_testdata[1469] */ + { 490, 0x0000000000000000ULL, { 0x601AE9308B2F65C0ULL, 0x4D1F4DAC9A205950ULL } }, /* XSUM_XXH128_testdata[1470] */ + { 490, 0x000000009E3779B1ULL, { 0x14664861B928153CULL, 0x744DE1122FF62BF0ULL } }, /* XSUM_XXH128_testdata[1471] */ + { 490, 0x9E3779B185EBCA8DULL, { 0xF977A75FBEEF07C0ULL, 0x8FD9AA73B10813BDULL } }, /* XSUM_XXH128_testdata[1472] */ + { 491, 0x0000000000000000ULL, { 0xC3BD335D6F4D7E2CULL, 0x55B0EF501DBE2A18ULL } }, /* XSUM_XXH128_testdata[1473] */ + { 491, 0x000000009E3779B1ULL, { 0x9BE620C46A0014E3ULL, 0x1DB0D2038140BFCAULL } }, /* XSUM_XXH128_testdata[1474] */ + { 491, 0x9E3779B185EBCA8DULL, { 0x3BE1894D59B97DF5ULL, 0xF896CB9D477D3B97ULL } }, /* XSUM_XXH128_testdata[1475] */ + { 492, 0x0000000000000000ULL, { 0x6EE462A1F4F6A75FULL, 0xE700BA3D9A411B4EULL } }, /* XSUM_XXH128_testdata[1476] */ + { 492, 0x000000009E3779B1ULL, { 0x35874A02E70B0B8EULL, 0x3E03BB8641B0D3D5ULL } }, /* XSUM_XXH128_testdata[1477] */ + { 492, 0x9E3779B185EBCA8DULL, { 0x639C27C90261E018ULL, 0x457A472ACCCF47E0ULL } }, /* XSUM_XXH128_testdata[1478] */ + { 493, 0x0000000000000000ULL, { 0xFB89382799CE1D19ULL, 0xBB95207C6E5A1932ULL } }, /* XSUM_XXH128_testdata[1479] */ + { 493, 0x000000009E3779B1ULL, { 0x2999AC74D47C7678ULL, 0x75AB9D43ABC0FE17ULL } }, /* XSUM_XXH128_testdata[1480] */ + { 493, 0x9E3779B185EBCA8DULL, { 0x5ACF651002134352ULL, 0x75B99FED2B083260ULL } }, /* XSUM_XXH128_testdata[1481] */ + { 494, 0x0000000000000000ULL, { 0xE5126B06554B1262ULL, 0x2CEA63634CFD351EULL } }, /* XSUM_XXH128_testdata[1482] */ + { 494, 0x000000009E3779B1ULL, { 0xE4DF61ADD36E5F59ULL, 0xFEFE60FEE30253ACULL } }, /* XSUM_XXH128_testdata[1483] */ + { 494, 0x9E3779B185EBCA8DULL, { 0x61FE12C33EFD590FULL, 0xA963EEDC10C4A4ABULL } }, /* XSUM_XXH128_testdata[1484] */ + { 495, 0x0000000000000000ULL, { 0x0C1C2EF59CD4710BULL, 0x8281A20EFB0E5DC3ULL } }, /* XSUM_XXH128_testdata[1485] */ + { 495, 0x000000009E3779B1ULL, { 0x706F6B9A6FB4B2AEULL, 0xC1E25AD0EE673B70ULL } }, /* XSUM_XXH128_testdata[1486] */ + { 495, 0x9E3779B185EBCA8DULL, { 0xDFA65EF745749DF3ULL, 0xAD40471FFEDEB840ULL } }, /* XSUM_XXH128_testdata[1487] */ + { 496, 0x0000000000000000ULL, { 0x01720698FF6887B5ULL, 0x98CD294E44993AC3ULL } }, /* XSUM_XXH128_testdata[1488] */ + { 496, 0x000000009E3779B1ULL, { 0x910E2D0E6C8AEA66ULL, 0x13C8A000504AC5CAULL } }, /* XSUM_XXH128_testdata[1489] */ + { 496, 0x9E3779B185EBCA8DULL, { 0x830FCACF8532CA2FULL, 0xE057B2931FF8323CULL } }, /* XSUM_XXH128_testdata[1490] */ + { 497, 0x0000000000000000ULL, { 0x9163F218B8DB7CE8ULL, 0x1DF1A5F95550AB01ULL } }, /* XSUM_XXH128_testdata[1491] */ + { 497, 0x000000009E3779B1ULL, { 0x619A0B59FF78E007ULL, 0x117E6F61F49897FAULL } }, /* XSUM_XXH128_testdata[1492] */ + { 497, 0x9E3779B185EBCA8DULL, { 0x00294873E8062E82ULL, 0x39F14B66D071D913ULL } }, /* XSUM_XXH128_testdata[1493] */ + { 498, 0x0000000000000000ULL, { 0xE847DF198ADDF0B5ULL, 0xFEBFFE03D734D365ULL } }, /* XSUM_XXH128_testdata[1494] */ + { 498, 0x000000009E3779B1ULL, { 0xB550CCAC409ADC32ULL, 0x5FA458E481EAEE5BULL } }, /* XSUM_XXH128_testdata[1495] */ + { 498, 0x9E3779B185EBCA8DULL, { 0x6BBCFBF57ED078E1ULL, 0x16A2B10442EB93B2ULL } }, /* XSUM_XXH128_testdata[1496] */ + { 499, 0x0000000000000000ULL, { 0xB03C576F748BD8ABULL, 0x3572C2D89FBCE309ULL } }, /* XSUM_XXH128_testdata[1497] */ + { 499, 0x000000009E3779B1ULL, { 0x305CB0E11F0D184DULL, 0xE2BB41E7AAEF0562ULL } }, /* XSUM_XXH128_testdata[1498] */ + { 499, 0x9E3779B185EBCA8DULL, { 0x1128A0882B31D65DULL, 0xDB5395F917DF1386ULL } }, /* XSUM_XXH128_testdata[1499] */ + { 500, 0x0000000000000000ULL, { 0xEF35ACEB3B341A05ULL, 0xCAA9DF3E93BE8DE0ULL } }, /* XSUM_XXH128_testdata[1500] */ + { 500, 0x000000009E3779B1ULL, { 0x0E7DF857FDF28119ULL, 0x9AC7A897E8C091BCULL } }, /* XSUM_XXH128_testdata[1501] */ + { 500, 0x9E3779B185EBCA8DULL, { 0x0A70F89473B2E134ULL, 0xE7BDC612CE41DDA3ULL } }, /* XSUM_XXH128_testdata[1502] */ + { 501, 0x0000000000000000ULL, { 0x51D54B811465F86AULL, 0x6E7C408D27904569ULL } }, /* XSUM_XXH128_testdata[1503] */ + { 501, 0x000000009E3779B1ULL, { 0xB429603DEDC12A11ULL, 0xEABDC0471EB66790ULL } }, /* XSUM_XXH128_testdata[1504] */ + { 501, 0x9E3779B185EBCA8DULL, { 0x5C628FAAC61E981EULL, 0xF3E4DB39E8D331BFULL } }, /* XSUM_XXH128_testdata[1505] */ + { 502, 0x0000000000000000ULL, { 0xC532F6A413F0E42CULL, 0x0AA6035B5F2D8FACULL } }, /* XSUM_XXH128_testdata[1506] */ + { 502, 0x000000009E3779B1ULL, { 0x05CA233F4DDE5397ULL, 0xF2BD87091ADF0B52ULL } }, /* XSUM_XXH128_testdata[1507] */ + { 502, 0x9E3779B185EBCA8DULL, { 0x69A13F41C275C165ULL, 0xE6A03242008EC67AULL } }, /* XSUM_XXH128_testdata[1508] */ + { 503, 0x0000000000000000ULL, { 0xF61FB7AC0A4FC5C2ULL, 0x233DB0AA3977ED1DULL } }, /* XSUM_XXH128_testdata[1509] */ + { 503, 0x000000009E3779B1ULL, { 0x3E34B6930B0FF7EDULL, 0x2A229FDEAF852888ULL } }, /* XSUM_XXH128_testdata[1510] */ + { 503, 0x9E3779B185EBCA8DULL, { 0xB46D36F91993597CULL, 0x1BFA42071A86BC5FULL } }, /* XSUM_XXH128_testdata[1511] */ + { 504, 0x0000000000000000ULL, { 0x7442F18AC6D61B1DULL, 0xBAD4E55727604EE9ULL } }, /* XSUM_XXH128_testdata[1512] */ + { 504, 0x000000009E3779B1ULL, { 0xE4795A8B602E87ADULL, 0x7672F86EEAF170E7ULL } }, /* XSUM_XXH128_testdata[1513] */ + { 504, 0x9E3779B185EBCA8DULL, { 0x4853942F88841332ULL, 0x54C270E46FBA95B3ULL } }, /* XSUM_XXH128_testdata[1514] */ + { 505, 0x0000000000000000ULL, { 0xF3FF1DE56CF1CAD9ULL, 0x8D906B0DA4D97E71ULL } }, /* XSUM_XXH128_testdata[1515] */ + { 505, 0x000000009E3779B1ULL, { 0xBF2249B7A869CA34ULL, 0xB4784655FCBE16AAULL } }, /* XSUM_XXH128_testdata[1516] */ + { 505, 0x9E3779B185EBCA8DULL, { 0x4710E442BEAC49C7ULL, 0xF863C8069F97C35FULL } }, /* XSUM_XXH128_testdata[1517] */ + { 506, 0x0000000000000000ULL, { 0xF1D2DF0316771A7CULL, 0x4C8DC4B0D572206CULL } }, /* XSUM_XXH128_testdata[1518] */ + { 506, 0x000000009E3779B1ULL, { 0xF2B929135CB7CDC5ULL, 0x70ED9462DE480A6BULL } }, /* XSUM_XXH128_testdata[1519] */ + { 506, 0x9E3779B185EBCA8DULL, { 0x455B6CEC8F1E8350ULL, 0x4B5BE2F59ED7F077ULL } }, /* XSUM_XXH128_testdata[1520] */ + { 507, 0x0000000000000000ULL, { 0x5C05AD7DBF2A4547ULL, 0x422E1890D2307926ULL } }, /* XSUM_XXH128_testdata[1521] */ + { 507, 0x000000009E3779B1ULL, { 0xE2E9D1645CB8C0DEULL, 0xF6DD841AB6ED2C2DULL } }, /* XSUM_XXH128_testdata[1522] */ + { 507, 0x9E3779B185EBCA8DULL, { 0x184B4C63C3A00D02ULL, 0xB57FEBEF6848CD62ULL } }, /* XSUM_XXH128_testdata[1523] */ + { 508, 0x0000000000000000ULL, { 0x365199C55EAAD05BULL, 0x868726FFD58616BEULL } }, /* XSUM_XXH128_testdata[1524] */ + { 508, 0x000000009E3779B1ULL, { 0xD287DC08E3CF973DULL, 0x35BD58D09AD99C61ULL } }, /* XSUM_XXH128_testdata[1525] */ + { 508, 0x9E3779B185EBCA8DULL, { 0xE9E7D170BADB2BA9ULL, 0xFD03182C7DD03331ULL } }, /* XSUM_XXH128_testdata[1526] */ + { 509, 0x0000000000000000ULL, { 0x5DBCACDAA1F7566BULL, 0xB86C53DC33A6CBF1ULL } }, /* XSUM_XXH128_testdata[1527] */ + { 509, 0x000000009E3779B1ULL, { 0x58748ECA09F11A59ULL, 0x12EF893D59594B0EULL } }, /* XSUM_XXH128_testdata[1528] */ + { 509, 0x9E3779B185EBCA8DULL, { 0x6D60CAF6ED6D03E3ULL, 0xF11EDDDB58F2637CULL } }, /* XSUM_XXH128_testdata[1529] */ + { 510, 0x0000000000000000ULL, { 0x337D49DDF223AC10ULL, 0xCF3871FC047AA731ULL } }, /* XSUM_XXH128_testdata[1530] */ + { 510, 0x000000009E3779B1ULL, { 0x0279C899B7C0E410ULL, 0x14BADAB85E7B9BFFULL } }, /* XSUM_XXH128_testdata[1531] */ + { 510, 0x9E3779B185EBCA8DULL, { 0x5E1C79CAF9AE2635ULL, 0x6A35781C899C505EULL } }, /* XSUM_XXH128_testdata[1532] */ + { 511, 0x0000000000000000ULL, { 0x8089715B163E7FC0ULL, 0x9F7619CB8D250F0DULL } }, /* XSUM_XXH128_testdata[1533] */ + { 511, 0x000000009E3779B1ULL, { 0x96736274A52C7DB2ULL, 0x24E3BB97C7C584D4ULL } }, /* XSUM_XXH128_testdata[1534] */ + { 511, 0x9E3779B185EBCA8DULL, { 0x90EC0377BA8D6002ULL, 0xB52CAE55536E9FB9ULL } }, /* XSUM_XXH128_testdata[1535] */ + { 512, 0x0000000000000000ULL, { 0x617E49599013CB6BULL, 0x18D2D110DCC9BCA1ULL } }, /* XSUM_XXH128_testdata[1536] */ + { 512, 0x000000009E3779B1ULL, { 0x545F610E9F5A78ECULL, 0x06EEB0D56508040FULL } }, /* XSUM_XXH128_testdata[1537] */ + { 512, 0x9E3779B185EBCA8DULL, { 0x3CE457DE14C27708ULL, 0x925D06B8EC5B8040ULL } }, /* XSUM_XXH128_testdata[1538] */ + { 513, 0x0000000000000000ULL, { 0xF7037D3B6722AEECULL, 0xF5C760ED98FD9E0AULL } }, /* XSUM_XXH128_testdata[1539] */ + { 513, 0x000000009E3779B1ULL, { 0x2F79B7F90027ECE6ULL, 0x30FBAF8ABF0DDFE3ULL } }, /* XSUM_XXH128_testdata[1540] */ + { 513, 0x9E3779B185EBCA8DULL, { 0x78494A42FDE49F35ULL, 0x79E60F0362C468FAULL } }, /* XSUM_XXH128_testdata[1541] */ + { 514, 0x0000000000000000ULL, { 0xD6D133F802EC8DE9ULL, 0x2D7490B197F48306ULL } }, /* XSUM_XXH128_testdata[1542] */ + { 514, 0x000000009E3779B1ULL, { 0x69EBB89A37BB1166ULL, 0x443F5A31A4CFA0C6ULL } }, /* XSUM_XXH128_testdata[1543] */ + { 514, 0x9E3779B185EBCA8DULL, { 0x4A9476602727653BULL, 0x92B6D4AFD0BB9634ULL } }, /* XSUM_XXH128_testdata[1544] */ + { 515, 0x0000000000000000ULL, { 0x916FD663EE7A2B40ULL, 0xDC7843764634E12BULL } }, /* XSUM_XXH128_testdata[1545] */ + { 515, 0x000000009E3779B1ULL, { 0x44B09C3D6371B382ULL, 0xA2F2A37A431E9A5DULL } }, /* XSUM_XXH128_testdata[1546] */ + { 515, 0x9E3779B185EBCA8DULL, { 0x2E49A56A3E907479ULL, 0x839BC137DBF4E4B0ULL } }, /* XSUM_XXH128_testdata[1547] */ + { 516, 0x0000000000000000ULL, { 0x296884B4F289C9E2ULL, 0x93E91E95C4843918ULL } }, /* XSUM_XXH128_testdata[1548] */ + { 516, 0x000000009E3779B1ULL, { 0x7A5F0C328E216BDDULL, 0xA33EBCA648DBCB5FULL } }, /* XSUM_XXH128_testdata[1549] */ + { 516, 0x9E3779B185EBCA8DULL, { 0xCF06989B231DCBA2ULL, 0xB2956C7C5D7CFF36ULL } }, /* XSUM_XXH128_testdata[1550] */ + { 517, 0x0000000000000000ULL, { 0x0F780D32AF5B93E7ULL, 0xA771D0D3FB954BCCULL } }, /* XSUM_XXH128_testdata[1551] */ + { 517, 0x000000009E3779B1ULL, { 0xEC53FAF027FA26D1ULL, 0xAAE18EDB03D75B5BULL } }, /* XSUM_XXH128_testdata[1552] */ + { 517, 0x9E3779B185EBCA8DULL, { 0xB958BFAD729A407CULL, 0x2B00B960A8225E7BULL } }, /* XSUM_XXH128_testdata[1553] */ + { 518, 0x0000000000000000ULL, { 0xF9515F008BFBF090ULL, 0xBADD4800C6E3BC30ULL } }, /* XSUM_XXH128_testdata[1554] */ + { 518, 0x000000009E3779B1ULL, { 0x3B1EA61A7AB04F3DULL, 0x845269CC23B08746ULL } }, /* XSUM_XXH128_testdata[1555] */ + { 518, 0x9E3779B185EBCA8DULL, { 0x6071E3513A8C56FFULL, 0xC992E0DAD3499D72ULL } }, /* XSUM_XXH128_testdata[1556] */ + { 519, 0x0000000000000000ULL, { 0x437449649192D1D5ULL, 0xAC5E793AD6968A35ULL } }, /* XSUM_XXH128_testdata[1557] */ + { 519, 0x000000009E3779B1ULL, { 0x575DAB2D879E5ED0ULL, 0xA00E0B82125715A7ULL } }, /* XSUM_XXH128_testdata[1558] */ + { 519, 0x9E3779B185EBCA8DULL, { 0x4895C7042BCEBF60ULL, 0x53C7E948D4E0B13CULL } }, /* XSUM_XXH128_testdata[1559] */ + { 520, 0x0000000000000000ULL, { 0x798FE0ED55307DCEULL, 0x6CB2014D52CB66E9ULL } }, /* XSUM_XXH128_testdata[1560] */ + { 520, 0x000000009E3779B1ULL, { 0x548FBD2D66FFD419ULL, 0xED48D27114442FA7ULL } }, /* XSUM_XXH128_testdata[1561] */ + { 520, 0x9E3779B185EBCA8DULL, { 0xF836A2DBFCE75330ULL, 0x987F6D4D907F75CAULL } }, /* XSUM_XXH128_testdata[1562] */ + { 521, 0x0000000000000000ULL, { 0x1EDC6FB72413D07CULL, 0x0B3D2A6EBEF4A776ULL } }, /* XSUM_XXH128_testdata[1563] */ + { 521, 0x000000009E3779B1ULL, { 0x5CFDDE63E97756D0ULL, 0x2B0388EB8A146463ULL } }, /* XSUM_XXH128_testdata[1564] */ + { 521, 0x9E3779B185EBCA8DULL, { 0x5B411EAA9D9D2DABULL, 0x74FBA22C13C328ADULL } }, /* XSUM_XXH128_testdata[1565] */ + { 522, 0x0000000000000000ULL, { 0x2323999887285691ULL, 0xD34BDA884B7BF8CCULL } }, /* XSUM_XXH128_testdata[1566] */ + { 522, 0x000000009E3779B1ULL, { 0xA625C8A6F38B0FDAULL, 0x169AAE4260340AD8ULL } }, /* XSUM_XXH128_testdata[1567] */ + { 522, 0x9E3779B185EBCA8DULL, { 0x7CED862B19471EC0ULL, 0x580F41D0A13ACFDCULL } }, /* XSUM_XXH128_testdata[1568] */ + { 523, 0x0000000000000000ULL, { 0x900F8EF3FA04553CULL, 0xAB364F0EE1D0C158ULL } }, /* XSUM_XXH128_testdata[1569] */ + { 523, 0x000000009E3779B1ULL, { 0xC2AD6F183EED2EDFULL, 0x1A689FD9635FDF8AULL } }, /* XSUM_XXH128_testdata[1570] */ + { 523, 0x9E3779B185EBCA8DULL, { 0x7A0A14A37231FFB7ULL, 0x45AA601E708DEF8BULL } }, /* XSUM_XXH128_testdata[1571] */ + { 524, 0x0000000000000000ULL, { 0xF018B3E98DFFB9DBULL, 0xA918E22E9EB8DC41ULL } }, /* XSUM_XXH128_testdata[1572] */ + { 524, 0x000000009E3779B1ULL, { 0x85DDCB7726F23538ULL, 0x41ABFD926C9520F7ULL } }, /* XSUM_XXH128_testdata[1573] */ + { 524, 0x9E3779B185EBCA8DULL, { 0xE76E428270018A74ULL, 0xF373CDFFE1F4EE5BULL } }, /* XSUM_XXH128_testdata[1574] */ + { 525, 0x0000000000000000ULL, { 0x91009968A59F5DE1ULL, 0x79613DBF2ED1522DULL } }, /* XSUM_XXH128_testdata[1575] */ + { 525, 0x000000009E3779B1ULL, { 0xAFE2C04F728BD4ADULL, 0x05B45EB46CAA553BULL } }, /* XSUM_XXH128_testdata[1576] */ + { 525, 0x9E3779B185EBCA8DULL, { 0x651738F8F8E2EAE6ULL, 0x289B48E83D97BE87ULL } }, /* XSUM_XXH128_testdata[1577] */ + { 526, 0x0000000000000000ULL, { 0x9D919B6E918D457FULL, 0xCC4B59BBC7B1883EULL } }, /* XSUM_XXH128_testdata[1578] */ + { 526, 0x000000009E3779B1ULL, { 0x59A1DFA478D8F4BAULL, 0xBCDF586C87AA21CCULL } }, /* XSUM_XXH128_testdata[1579] */ + { 526, 0x9E3779B185EBCA8DULL, { 0x929A9B839E9E5DACULL, 0xA14A718930B21600ULL } }, /* XSUM_XXH128_testdata[1580] */ + { 527, 0x0000000000000000ULL, { 0xBD9253EF067D4827ULL, 0x11E194B05ED135AFULL } }, /* XSUM_XXH128_testdata[1581] */ + { 527, 0x000000009E3779B1ULL, { 0xCD706E49FC5C86E1ULL, 0xED7F656321DA0377ULL } }, /* XSUM_XXH128_testdata[1582] */ + { 527, 0x9E3779B185EBCA8DULL, { 0x110D0A0EEF0E1DE0ULL, 0x2319635C2BA4E4E1ULL } }, /* XSUM_XXH128_testdata[1583] */ + { 528, 0x0000000000000000ULL, { 0xA4FF4CE1E6E3B0F6ULL, 0x5F3C0A4FC0F86894ULL } }, /* XSUM_XXH128_testdata[1584] */ + { 528, 0x000000009E3779B1ULL, { 0x524A859D5912B990ULL, 0xC9AF396F019D1EAFULL } }, /* XSUM_XXH128_testdata[1585] */ + { 528, 0x9E3779B185EBCA8DULL, { 0x102CA5FC88E4ACDBULL, 0x56D5C53F1357D9BCULL } }, /* XSUM_XXH128_testdata[1586] */ + { 529, 0x0000000000000000ULL, { 0x5A9BD96F099D3A05ULL, 0xB306C890EE670C36ULL } }, /* XSUM_XXH128_testdata[1587] */ + { 529, 0x000000009E3779B1ULL, { 0xF0F87A052F14115BULL, 0x56B14712F3615DC4ULL } }, /* XSUM_XXH128_testdata[1588] */ + { 529, 0x9E3779B185EBCA8DULL, { 0x55AA573781F0E6C3ULL, 0x9F96B097FFC1C3F6ULL } }, /* XSUM_XXH128_testdata[1589] */ + { 530, 0x0000000000000000ULL, { 0x10F4AEF9ED1662FEULL, 0x776652938FC6E864ULL } }, /* XSUM_XXH128_testdata[1590] */ + { 530, 0x000000009E3779B1ULL, { 0xB5E011EC2CCEE3D1ULL, 0x885715B9391B1FF2ULL } }, /* XSUM_XXH128_testdata[1591] */ + { 530, 0x9E3779B185EBCA8DULL, { 0x3A77F93A9C084E39ULL, 0x8B1F20E7851F9D2DULL } }, /* XSUM_XXH128_testdata[1592] */ + { 531, 0x0000000000000000ULL, { 0x953266DCF6F64DD8ULL, 0x878D4A43470C67E7ULL } }, /* XSUM_XXH128_testdata[1593] */ + { 531, 0x000000009E3779B1ULL, { 0x4E0C9100899E7934ULL, 0xB9A2DC43D227BBAAULL } }, /* XSUM_XXH128_testdata[1594] */ + { 531, 0x9E3779B185EBCA8DULL, { 0xF29DB077DCA0A65FULL, 0x147F9F22E1908C63ULL } }, /* XSUM_XXH128_testdata[1595] */ + { 532, 0x0000000000000000ULL, { 0x7FC33AF735826264ULL, 0x6041B9D06E7067AAULL } }, /* XSUM_XXH128_testdata[1596] */ + { 532, 0x000000009E3779B1ULL, { 0x968F85CD090EAED4ULL, 0xDBBEEC477E795101ULL } }, /* XSUM_XXH128_testdata[1597] */ + { 532, 0x9E3779B185EBCA8DULL, { 0x8DAC890EE966D7D7ULL, 0x81E68152CCB53677ULL } }, /* XSUM_XXH128_testdata[1598] */ + { 533, 0x0000000000000000ULL, { 0x4AA6FD454B20A62CULL, 0x8196FF5AABB8708AULL } }, /* XSUM_XXH128_testdata[1599] */ + { 533, 0x000000009E3779B1ULL, { 0x7E5E4ED2F1C9371AULL, 0x6B4CE60B12556DD5ULL } }, /* XSUM_XXH128_testdata[1600] */ + { 533, 0x9E3779B185EBCA8DULL, { 0x868747A5FD700CCEULL, 0xE0F95872C4652A90ULL } }, /* XSUM_XXH128_testdata[1601] */ + { 534, 0x0000000000000000ULL, { 0x622F04DD0CBD4D28ULL, 0xA3FE6BD76FC58DD4ULL } }, /* XSUM_XXH128_testdata[1602] */ + { 534, 0x000000009E3779B1ULL, { 0x511BCF02EF610BD1ULL, 0x23BE0F9961486BB5ULL } }, /* XSUM_XXH128_testdata[1603] */ + { 534, 0x9E3779B185EBCA8DULL, { 0x582385BB15C93A83ULL, 0x0E70C5DD3B8FCB41ULL } }, /* XSUM_XXH128_testdata[1604] */ + { 535, 0x0000000000000000ULL, { 0x70A29B295E97E82EULL, 0xF2B3DD69C6E02983ULL } }, /* XSUM_XXH128_testdata[1605] */ + { 535, 0x000000009E3779B1ULL, { 0x7DCD857BBACF1704ULL, 0xEF8528305F790AC7ULL } }, /* XSUM_XXH128_testdata[1606] */ + { 535, 0x9E3779B185EBCA8DULL, { 0x30FB3DBBF088E816ULL, 0xCC3680535A442030ULL } }, /* XSUM_XXH128_testdata[1607] */ + { 536, 0x0000000000000000ULL, { 0xCF41D4BD8DE08418ULL, 0xA2A555228905C45EULL } }, /* XSUM_XXH128_testdata[1608] */ + { 536, 0x000000009E3779B1ULL, { 0x4A83B807BEE040CBULL, 0x8A59D47C6C95BDA5ULL } }, /* XSUM_XXH128_testdata[1609] */ + { 536, 0x9E3779B185EBCA8DULL, { 0xF37C777F1A7DBB41ULL, 0x7C973A593A5E0138ULL } }, /* XSUM_XXH128_testdata[1610] */ + { 537, 0x0000000000000000ULL, { 0x394062779EDA7FD1ULL, 0x0111B94CC5136C2BULL } }, /* XSUM_XXH128_testdata[1611] */ + { 537, 0x000000009E3779B1ULL, { 0x40951AF9987D852BULL, 0x355C2C0B47B7D456ULL } }, /* XSUM_XXH128_testdata[1612] */ + { 537, 0x9E3779B185EBCA8DULL, { 0x6D6070C24379CFDFULL, 0x1F6276AF52AE6CA0ULL } }, /* XSUM_XXH128_testdata[1613] */ + { 538, 0x0000000000000000ULL, { 0x7DACA4ACB0BE611EULL, 0x995BEFC36D42DF0EULL } }, /* XSUM_XXH128_testdata[1614] */ + { 538, 0x000000009E3779B1ULL, { 0x9AE03F0770B35532ULL, 0xDEDE304184CD7236ULL } }, /* XSUM_XXH128_testdata[1615] */ + { 538, 0x9E3779B185EBCA8DULL, { 0x8B093E8DF3C0A94DULL, 0xDA0FB9F56E989A7FULL } }, /* XSUM_XXH128_testdata[1616] */ + { 539, 0x0000000000000000ULL, { 0xB759B66ED325D90BULL, 0xCF0C265050B68AEAULL } }, /* XSUM_XXH128_testdata[1617] */ + { 539, 0x000000009E3779B1ULL, { 0x4D77EE32CB59BAABULL, 0xA270CA2B609E3334ULL } }, /* XSUM_XXH128_testdata[1618] */ + { 539, 0x9E3779B185EBCA8DULL, { 0x92C6CD9D754DA170ULL, 0xD7F44ADDF0F22B56ULL } }, /* XSUM_XXH128_testdata[1619] */ + { 540, 0x0000000000000000ULL, { 0x1CE1ECB6F2EA3C08ULL, 0xDBEDD020ADE87FACULL } }, /* XSUM_XXH128_testdata[1620] */ + { 540, 0x000000009E3779B1ULL, { 0xB2E3615871C24BAEULL, 0xD831E6AF9F8BF196ULL } }, /* XSUM_XXH128_testdata[1621] */ + { 540, 0x9E3779B185EBCA8DULL, { 0xF8254785EF9BF776ULL, 0xDCEA3290C98D13FEULL } }, /* XSUM_XXH128_testdata[1622] */ + { 541, 0x0000000000000000ULL, { 0x4A683D8C0191DB06ULL, 0x806C6B420141EB2DULL } }, /* XSUM_XXH128_testdata[1623] */ + { 541, 0x000000009E3779B1ULL, { 0x43DE83D5186D821AULL, 0xD1ACBCD20A68CC5CULL } }, /* XSUM_XXH128_testdata[1624] */ + { 541, 0x9E3779B185EBCA8DULL, { 0xA0A37DAD4F2A8703ULL, 0x82D4DE422A206A61ULL } }, /* XSUM_XXH128_testdata[1625] */ + { 542, 0x0000000000000000ULL, { 0xD4A94AFE1D60AF7CULL, 0x18825856C9712825ULL } }, /* XSUM_XXH128_testdata[1626] */ + { 542, 0x000000009E3779B1ULL, { 0x18308ACA1860C2DFULL, 0x5CBE862C0F9ED870ULL } }, /* XSUM_XXH128_testdata[1627] */ + { 542, 0x9E3779B185EBCA8DULL, { 0x1AC6DBBF0E1AD2BFULL, 0xB7C91772B4CC76FFULL } }, /* XSUM_XXH128_testdata[1628] */ + { 543, 0x0000000000000000ULL, { 0x335ED4269537AE98ULL, 0xF235F32F1CD9F3EAULL } }, /* XSUM_XXH128_testdata[1629] */ + { 543, 0x000000009E3779B1ULL, { 0x4CC2571A9143FFD4ULL, 0x90B38E9553B631A8ULL } }, /* XSUM_XXH128_testdata[1630] */ + { 543, 0x9E3779B185EBCA8DULL, { 0xEA591E76B5F58023ULL, 0x92F3267DF4977C3CULL } }, /* XSUM_XXH128_testdata[1631] */ + { 544, 0x0000000000000000ULL, { 0xEE0F3ED48AE98EAAULL, 0x232A2DB612B3D9D1ULL } }, /* XSUM_XXH128_testdata[1632] */ + { 544, 0x000000009E3779B1ULL, { 0x7FC24E573F6A6FA5ULL, 0xC7BB7D3803644D32ULL } }, /* XSUM_XXH128_testdata[1633] */ + { 544, 0x9E3779B185EBCA8DULL, { 0xEFA52007CF2B08E9ULL, 0xD289D9039467CA4FULL } }, /* XSUM_XXH128_testdata[1634] */ + { 545, 0x0000000000000000ULL, { 0xD3C23550ACAC379AULL, 0x4C4F295F55DA6C91ULL } }, /* XSUM_XXH128_testdata[1635] */ + { 545, 0x000000009E3779B1ULL, { 0x7E4333CD2DD0EF97ULL, 0x27E3EB07B083028FULL } }, /* XSUM_XXH128_testdata[1636] */ + { 545, 0x9E3779B185EBCA8DULL, { 0x3A372A67ED04F20EULL, 0x4A9D9F777AFEF8FAULL } }, /* XSUM_XXH128_testdata[1637] */ + { 546, 0x0000000000000000ULL, { 0x8766C1E7E90ECC53ULL, 0x209FC6E2EC7218E0ULL } }, /* XSUM_XXH128_testdata[1638] */ + { 546, 0x000000009E3779B1ULL, { 0xA081259F7529C9A9ULL, 0xB8B195B099C82DEEULL } }, /* XSUM_XXH128_testdata[1639] */ + { 546, 0x9E3779B185EBCA8DULL, { 0x557B6D382216C9C8ULL, 0x59251065E5AB076FULL } }, /* XSUM_XXH128_testdata[1640] */ + { 547, 0x0000000000000000ULL, { 0xFD4BA223E822FA02ULL, 0x0BD563D21FB709DBULL } }, /* XSUM_XXH128_testdata[1641] */ + { 547, 0x000000009E3779B1ULL, { 0x4867C30B3720572FULL, 0xCAAD2281B501F11FULL } }, /* XSUM_XXH128_testdata[1642] */ + { 547, 0x9E3779B185EBCA8DULL, { 0xDFF8551585E4E635ULL, 0xFAB36BB8AB345D2AULL } }, /* XSUM_XXH128_testdata[1643] */ + { 548, 0x0000000000000000ULL, { 0x1FA4D5286396145EULL, 0x897A4F33C71EAE04ULL } }, /* XSUM_XXH128_testdata[1644] */ + { 548, 0x000000009E3779B1ULL, { 0x00D074CE17067F04ULL, 0xC7B4090C9B4D26C0ULL } }, /* XSUM_XXH128_testdata[1645] */ + { 548, 0x9E3779B185EBCA8DULL, { 0x19DC860F95E9E300ULL, 0x3FEAEA8D48C7BCBEULL } }, /* XSUM_XXH128_testdata[1646] */ + { 549, 0x0000000000000000ULL, { 0x8FB9DB46DB18B81EULL, 0xE7CFA6E9C5685539ULL } }, /* XSUM_XXH128_testdata[1647] */ + { 549, 0x000000009E3779B1ULL, { 0xF71C794B1C5113A1ULL, 0xDFF8BDAB07E87247ULL } }, /* XSUM_XXH128_testdata[1648] */ + { 549, 0x9E3779B185EBCA8DULL, { 0x94DCB36B2A353435ULL, 0x199FE1958123CB34ULL } }, /* XSUM_XXH128_testdata[1649] */ + { 550, 0x0000000000000000ULL, { 0x83DD946E679275ECULL, 0xBDF5A6071FE90951ULL } }, /* XSUM_XXH128_testdata[1650] */ + { 550, 0x000000009E3779B1ULL, { 0xDD8141C5A90C4705ULL, 0x41AF54803F27B026ULL } }, /* XSUM_XXH128_testdata[1651] */ + { 550, 0x9E3779B185EBCA8DULL, { 0xED59520EF54C28E1ULL, 0xF24BDC922135396EULL } }, /* XSUM_XXH128_testdata[1652] */ + { 551, 0x0000000000000000ULL, { 0x4483944094799E09ULL, 0x300C9F8FC26541E3ULL } }, /* XSUM_XXH128_testdata[1653] */ + { 551, 0x000000009E3779B1ULL, { 0x3E4182F96EC8A054ULL, 0x9AA16396806DDF76ULL } }, /* XSUM_XXH128_testdata[1654] */ + { 551, 0x9E3779B185EBCA8DULL, { 0x4893FC5F3BF47AF8ULL, 0x2BF9B34F0432BBEDULL } }, /* XSUM_XXH128_testdata[1655] */ + { 552, 0x0000000000000000ULL, { 0x166D9ADCD1580EE6ULL, 0x096661F1903ADF30ULL } }, /* XSUM_XXH128_testdata[1656] */ + { 552, 0x000000009E3779B1ULL, { 0x7E0823EA23A50A3AULL, 0x3F7BCBE20DAF8575ULL } }, /* XSUM_XXH128_testdata[1657] */ + { 552, 0x9E3779B185EBCA8DULL, { 0xD8FE769808678DDEULL, 0x0969D1B7CA87B41AULL } }, /* XSUM_XXH128_testdata[1658] */ + { 553, 0x0000000000000000ULL, { 0x76094EAA527CF3BDULL, 0x6CDAC6C64D441B93ULL } }, /* XSUM_XXH128_testdata[1659] */ + { 553, 0x000000009E3779B1ULL, { 0x94CFC72A5886D710ULL, 0x333A108DD8A71F5DULL } }, /* XSUM_XXH128_testdata[1660] */ + { 553, 0x9E3779B185EBCA8DULL, { 0xBA20D5A6026C47B1ULL, 0xFF9DB23960A2A4F4ULL } }, /* XSUM_XXH128_testdata[1661] */ + { 554, 0x0000000000000000ULL, { 0x8F27383CF09A76B3ULL, 0xEBD0AAA1C0FF00BEULL } }, /* XSUM_XXH128_testdata[1662] */ + { 554, 0x000000009E3779B1ULL, { 0x5CD9E6090C20BD7BULL, 0x8E08B3CFBA9ED290ULL } }, /* XSUM_XXH128_testdata[1663] */ + { 554, 0x9E3779B185EBCA8DULL, { 0x5D1B841D161A1193ULL, 0x1F9BD8F01983B66DULL } }, /* XSUM_XXH128_testdata[1664] */ + { 555, 0x0000000000000000ULL, { 0x8AD49BC31E7A4427ULL, 0xEC5C61191122B582ULL } }, /* XSUM_XXH128_testdata[1665] */ + { 555, 0x000000009E3779B1ULL, { 0xB1EEA533D8A9BF9AULL, 0xBB6761A2D9C31529ULL } }, /* XSUM_XXH128_testdata[1666] */ + { 555, 0x9E3779B185EBCA8DULL, { 0x681841730B9E5E84ULL, 0x886454BF63BB944BULL } }, /* XSUM_XXH128_testdata[1667] */ + { 556, 0x0000000000000000ULL, { 0x2EEEEFB3A80CD68EULL, 0x59959A3872B61589ULL } }, /* XSUM_XXH128_testdata[1668] */ + { 556, 0x000000009E3779B1ULL, { 0xC014D746995E34AEULL, 0x4993E6F62B30B8C4ULL } }, /* XSUM_XXH128_testdata[1669] */ + { 556, 0x9E3779B185EBCA8DULL, { 0x4EE3FC2C8D8E138BULL, 0xEDB8F4A3505E53F0ULL } }, /* XSUM_XXH128_testdata[1670] */ + { 557, 0x0000000000000000ULL, { 0xF0D8D5132E115CA5ULL, 0x4A2264CDC10EA406ULL } }, /* XSUM_XXH128_testdata[1671] */ + { 557, 0x000000009E3779B1ULL, { 0xD93D71364EE0F261ULL, 0x348B551A25F567E0ULL } }, /* XSUM_XXH128_testdata[1672] */ + { 557, 0x9E3779B185EBCA8DULL, { 0x417506C6F736F51EULL, 0x1945B0A9618F98DAULL } }, /* XSUM_XXH128_testdata[1673] */ + { 558, 0x0000000000000000ULL, { 0xFE4FC52E0D5697CEULL, 0xD6D952CDA36AC9CDULL } }, /* XSUM_XXH128_testdata[1674] */ + { 558, 0x000000009E3779B1ULL, { 0x4A87E7F2D94AF8A9ULL, 0x61036EDA4BCCEC52ULL } }, /* XSUM_XXH128_testdata[1675] */ + { 558, 0x9E3779B185EBCA8DULL, { 0x1FB0668F3F5C72FFULL, 0xE0EC0B5A94E1C779ULL } }, /* XSUM_XXH128_testdata[1676] */ + { 559, 0x0000000000000000ULL, { 0x6C09584BC80BC143ULL, 0xA2F4B6D706B57647ULL } }, /* XSUM_XXH128_testdata[1677] */ + { 559, 0x000000009E3779B1ULL, { 0x6FD2746810628A39ULL, 0x0B09CD9E51D5CC3DULL } }, /* XSUM_XXH128_testdata[1678] */ + { 559, 0x9E3779B185EBCA8DULL, { 0x453418ECEAA73D98ULL, 0x8DB447E8911460FCULL } }, /* XSUM_XXH128_testdata[1679] */ + { 560, 0x0000000000000000ULL, { 0x0AF326979F3BA818ULL, 0x9FD3E5E7B9AD4264ULL } }, /* XSUM_XXH128_testdata[1680] */ + { 560, 0x000000009E3779B1ULL, { 0x3555D33B4A961B40ULL, 0x34FCF04083686643ULL } }, /* XSUM_XXH128_testdata[1681] */ + { 560, 0x9E3779B185EBCA8DULL, { 0x404AEF8839775F17ULL, 0x9B360724770B3905ULL } }, /* XSUM_XXH128_testdata[1682] */ + { 561, 0x0000000000000000ULL, { 0x9598B245C6CCE432ULL, 0xBF3DB731497B27CDULL } }, /* XSUM_XXH128_testdata[1683] */ + { 561, 0x000000009E3779B1ULL, { 0x5B073CECAE7C7DC4ULL, 0x9F45AE7229E66A5CULL } }, /* XSUM_XXH128_testdata[1684] */ + { 561, 0x9E3779B185EBCA8DULL, { 0x2728DEA648CED887ULL, 0x18487FD071418B2CULL } }, /* XSUM_XXH128_testdata[1685] */ + { 562, 0x0000000000000000ULL, { 0xE3AD4D6D3D0E075BULL, 0xB256363FB9D811E3ULL } }, /* XSUM_XXH128_testdata[1686] */ + { 562, 0x000000009E3779B1ULL, { 0x7DC89A018FB828C3ULL, 0xC1D1C981D94EDBFAULL } }, /* XSUM_XXH128_testdata[1687] */ + { 562, 0x9E3779B185EBCA8DULL, { 0x997790DB7268C105ULL, 0x533FD2F991415CADULL } }, /* XSUM_XXH128_testdata[1688] */ + { 563, 0x0000000000000000ULL, { 0x8C6DB00EBD173B30ULL, 0x13609C77D94E33E4ULL } }, /* XSUM_XXH128_testdata[1689] */ + { 563, 0x000000009E3779B1ULL, { 0xAD1CE64121B2BB26ULL, 0xCD59536BA7C8B4BFULL } }, /* XSUM_XXH128_testdata[1690] */ + { 563, 0x9E3779B185EBCA8DULL, { 0x5A3760C73090003AULL, 0xA66715F79D73755DULL } }, /* XSUM_XXH128_testdata[1691] */ + { 564, 0x0000000000000000ULL, { 0x2005C80D14575E30ULL, 0x11605BA2ADA1681AULL } }, /* XSUM_XXH128_testdata[1692] */ + { 564, 0x000000009E3779B1ULL, { 0x7A52A35BB7E038C7ULL, 0x08F11E01147F634DULL } }, /* XSUM_XXH128_testdata[1693] */ + { 564, 0x9E3779B185EBCA8DULL, { 0xD9C3BC69EAED2309ULL, 0x7BF107A9188F5551ULL } }, /* XSUM_XXH128_testdata[1694] */ + { 565, 0x0000000000000000ULL, { 0xE89A727244704FF7ULL, 0xC9971C26E8F53CB6ULL } }, /* XSUM_XXH128_testdata[1695] */ + { 565, 0x000000009E3779B1ULL, { 0xF5CDFFC7F7D43B6CULL, 0x648D8212919E7BA2ULL } }, /* XSUM_XXH128_testdata[1696] */ + { 565, 0x9E3779B185EBCA8DULL, { 0x9825A8F132990034ULL, 0xAFAECDA01766DE84ULL } }, /* XSUM_XXH128_testdata[1697] */ + { 566, 0x0000000000000000ULL, { 0x1A52AB32251C9557ULL, 0xD00932BBD4E0C2E3ULL } }, /* XSUM_XXH128_testdata[1698] */ + { 566, 0x000000009E3779B1ULL, { 0xF7BEE2CE5D3C45A4ULL, 0x9974F6E9974A4263ULL } }, /* XSUM_XXH128_testdata[1699] */ + { 566, 0x9E3779B185EBCA8DULL, { 0x1DCE347E35CC8FEFULL, 0xCA1BC87268FF4F4FULL } }, /* XSUM_XXH128_testdata[1700] */ + { 567, 0x0000000000000000ULL, { 0xB4D8818D6B110074ULL, 0x77621CE147AEDB72ULL } }, /* XSUM_XXH128_testdata[1701] */ + { 567, 0x000000009E3779B1ULL, { 0x083ED7C27DEF0C1FULL, 0x3CDB7D131136741BULL } }, /* XSUM_XXH128_testdata[1702] */ + { 567, 0x9E3779B185EBCA8DULL, { 0xC400C7C2511ADED4ULL, 0x27AB35750ECF81C9ULL } }, /* XSUM_XXH128_testdata[1703] */ + { 568, 0x0000000000000000ULL, { 0x4567D04C81F74410ULL, 0xC4E4D172A8BBE71FULL } }, /* XSUM_XXH128_testdata[1704] */ + { 568, 0x000000009E3779B1ULL, { 0x9CB05C0F1D4E3275ULL, 0x8570084E59204B9AULL } }, /* XSUM_XXH128_testdata[1705] */ + { 568, 0x9E3779B185EBCA8DULL, { 0x82C9D3E937A4D202ULL, 0x261E0969E3D1DC14ULL } }, /* XSUM_XXH128_testdata[1706] */ + { 569, 0x0000000000000000ULL, { 0x9F46FCDE4E694129ULL, 0x58FF78D80E18D6CCULL } }, /* XSUM_XXH128_testdata[1707] */ + { 569, 0x000000009E3779B1ULL, { 0xD8D40D4C02B4CF51ULL, 0x9841F67A039FCC70ULL } }, /* XSUM_XXH128_testdata[1708] */ + { 569, 0x9E3779B185EBCA8DULL, { 0x5478F1C83171B116ULL, 0x96F48250374C2EB9ULL } }, /* XSUM_XXH128_testdata[1709] */ + { 570, 0x0000000000000000ULL, { 0x7E9832CB3B263913ULL, 0x91E670C5600713C0ULL } }, /* XSUM_XXH128_testdata[1710] */ + { 570, 0x000000009E3779B1ULL, { 0x2628B5393178DCBCULL, 0xACBCB6AD19AD4D1FULL } }, /* XSUM_XXH128_testdata[1711] */ + { 570, 0x9E3779B185EBCA8DULL, { 0x36B3BC18FAF26B57ULL, 0x3606AB3C7546FE0CULL } }, /* XSUM_XXH128_testdata[1712] */ + { 571, 0x0000000000000000ULL, { 0x06E35D397BC959CAULL, 0xB3BB5415A0FE4CD9ULL } }, /* XSUM_XXH128_testdata[1713] */ + { 571, 0x000000009E3779B1ULL, { 0x84760F4973572D02ULL, 0x10F4E8416E35247CULL } }, /* XSUM_XXH128_testdata[1714] */ + { 571, 0x9E3779B185EBCA8DULL, { 0x1FAB1A95B96CC502ULL, 0x053F5A00AAA2D82CULL } }, /* XSUM_XXH128_testdata[1715] */ + { 572, 0x0000000000000000ULL, { 0x8D2A4A846742E2BAULL, 0xF09B236005A227DBULL } }, /* XSUM_XXH128_testdata[1716] */ + { 572, 0x000000009E3779B1ULL, { 0x2B48DC87EAD7DD1FULL, 0xE0B327BA62260AA0ULL } }, /* XSUM_XXH128_testdata[1717] */ + { 572, 0x9E3779B185EBCA8DULL, { 0x02448E4981CDE029ULL, 0x577EC36D4EB2E04FULL } }, /* XSUM_XXH128_testdata[1718] */ + { 573, 0x0000000000000000ULL, { 0xCBE7A3979FF1FC62ULL, 0x62199AFE734E4641ULL } }, /* XSUM_XXH128_testdata[1719] */ + { 573, 0x000000009E3779B1ULL, { 0xA66E1F517C632C06ULL, 0x4D7DFB94F09977BBULL } }, /* XSUM_XXH128_testdata[1720] */ + { 573, 0x9E3779B185EBCA8DULL, { 0x3E25E8223804D14CULL, 0x212EEDF6A5DBC36AULL } }, /* XSUM_XXH128_testdata[1721] */ + { 574, 0x0000000000000000ULL, { 0xB502D9D56515C069ULL, 0xB8AEE643F7AC824FULL } }, /* XSUM_XXH128_testdata[1722] */ + { 574, 0x000000009E3779B1ULL, { 0x9EBEE37FE832C380ULL, 0xADEA1087EB01D3DFULL } }, /* XSUM_XXH128_testdata[1723] */ + { 574, 0x9E3779B185EBCA8DULL, { 0xB4D56D31E1E8CF11ULL, 0x16337E90D1F1ED8EULL } }, /* XSUM_XXH128_testdata[1724] */ + { 575, 0x0000000000000000ULL, { 0xB00BEEA09D518435ULL, 0x79D4D748A4A817F8ULL } }, /* XSUM_XXH128_testdata[1725] */ + { 575, 0x000000009E3779B1ULL, { 0xE682CCE7F010BBC5ULL, 0xE123269050E5928BULL } }, /* XSUM_XXH128_testdata[1726] */ + { 575, 0x9E3779B185EBCA8DULL, { 0x431D4573CE93CA64ULL, 0xC938F9B775A6F2E2ULL } }, /* XSUM_XXH128_testdata[1727] */ + { 576, 0x0000000000000000ULL, { 0x9C875962CB39ACF8ULL, 0xD572F6302C1D6B21ULL } }, /* XSUM_XXH128_testdata[1728] */ + { 576, 0x000000009E3779B1ULL, { 0x1DF61A6D8951D3FDULL, 0x5961D128983EFB98ULL } }, /* XSUM_XXH128_testdata[1729] */ + { 576, 0x9E3779B185EBCA8DULL, { 0x6E01EE5662C31F8FULL, 0x59FE09D5E83F31EBULL } }, /* XSUM_XXH128_testdata[1730] */ + { 577, 0x0000000000000000ULL, { 0x5807930E9516B291ULL, 0x5B6B9C0D208BAF6DULL } }, /* XSUM_XXH128_testdata[1731] */ + { 577, 0x000000009E3779B1ULL, { 0x0FE8EF34621FA17FULL, 0x6D00C287B05E6A99ULL } }, /* XSUM_XXH128_testdata[1732] */ + { 577, 0x9E3779B185EBCA8DULL, { 0x8F9641AFEB4CD5D0ULL, 0x3D23DBD832F61EDEULL } }, /* XSUM_XXH128_testdata[1733] */ + { 578, 0x0000000000000000ULL, { 0xDE1728000629CA10ULL, 0xE03550FE2D83B238ULL } }, /* XSUM_XXH128_testdata[1734] */ + { 578, 0x000000009E3779B1ULL, { 0x9009E886E5781C7EULL, 0xD13254D953E9D1AFULL } }, /* XSUM_XXH128_testdata[1735] */ + { 578, 0x9E3779B185EBCA8DULL, { 0xE3748D92F7F15D4DULL, 0xBC7E71A1B8AB7292ULL } }, /* XSUM_XXH128_testdata[1736] */ + { 579, 0x0000000000000000ULL, { 0x51DD9598B443A519ULL, 0x55245EC46A08534FULL } }, /* XSUM_XXH128_testdata[1737] */ + { 579, 0x000000009E3779B1ULL, { 0xBDC33A8E03A98F06ULL, 0x6B8CC8D05D6B5924ULL } }, /* XSUM_XXH128_testdata[1738] */ + { 579, 0x9E3779B185EBCA8DULL, { 0x5886E7F04DE25E68ULL, 0xAB6D2F9EDDBF6191ULL } }, /* XSUM_XXH128_testdata[1739] */ + { 580, 0x0000000000000000ULL, { 0xBF2197B313975A9EULL, 0x7A87921219777331ULL } }, /* XSUM_XXH128_testdata[1740] */ + { 580, 0x000000009E3779B1ULL, { 0xAB74474BDB4A1AFEULL, 0x002A3B0003B1331FULL } }, /* XSUM_XXH128_testdata[1741] */ + { 580, 0x9E3779B185EBCA8DULL, { 0x281615EDE4D279F7ULL, 0x49EFFEF551DCFB21ULL } }, /* XSUM_XXH128_testdata[1742] */ + { 581, 0x0000000000000000ULL, { 0x3A9CD35B97C37ACCULL, 0x04C2C57A682A1F35ULL } }, /* XSUM_XXH128_testdata[1743] */ + { 581, 0x000000009E3779B1ULL, { 0x456D8DC460D06D30ULL, 0x5D8C75E48702A782ULL } }, /* XSUM_XXH128_testdata[1744] */ + { 581, 0x9E3779B185EBCA8DULL, { 0xC6BDAC18533F698AULL, 0x3CD9B8FFAD9EEC2CULL } }, /* XSUM_XXH128_testdata[1745] */ + { 582, 0x0000000000000000ULL, { 0xCC477503244591EAULL, 0xC7316F89E342595BULL } }, /* XSUM_XXH128_testdata[1746] */ + { 582, 0x000000009E3779B1ULL, { 0x47789CB628FCB752ULL, 0x6E5BDE129109F3ABULL } }, /* XSUM_XXH128_testdata[1747] */ + { 582, 0x9E3779B185EBCA8DULL, { 0x5ADA79DD285FEACAULL, 0x9C0333EAF58B194FULL } }, /* XSUM_XXH128_testdata[1748] */ + { 583, 0x0000000000000000ULL, { 0x570BFCEB0A2E29FDULL, 0x6DE0304608D04BD4ULL } }, /* XSUM_XXH128_testdata[1749] */ + { 583, 0x000000009E3779B1ULL, { 0x9670365AEF5B5F83ULL, 0x24DABEFD98667E15ULL } }, /* XSUM_XXH128_testdata[1750] */ + { 583, 0x9E3779B185EBCA8DULL, { 0xECD1C7A797AF9205ULL, 0xDC40A8C1A2E83F70ULL } }, /* XSUM_XXH128_testdata[1751] */ + { 584, 0x0000000000000000ULL, { 0xEE31779866989C18ULL, 0x436301E877D12F5FULL } }, /* XSUM_XXH128_testdata[1752] */ + { 584, 0x000000009E3779B1ULL, { 0x83697DF00BA3535DULL, 0xDEE4E28AF5775970ULL } }, /* XSUM_XXH128_testdata[1753] */ + { 584, 0x9E3779B185EBCA8DULL, { 0x8FD7F54E85F3D98FULL, 0xA0EE78E92935F5E8ULL } }, /* XSUM_XXH128_testdata[1754] */ + { 585, 0x0000000000000000ULL, { 0xC30C69BD67C5ECACULL, 0x1C5B6A227B7AA6BEULL } }, /* XSUM_XXH128_testdata[1755] */ + { 585, 0x000000009E3779B1ULL, { 0x8AD336C444221DDDULL, 0xE7C0317426466C61ULL } }, /* XSUM_XXH128_testdata[1756] */ + { 585, 0x9E3779B185EBCA8DULL, { 0xBF4B0483CFA8C409ULL, 0xF8A933A40E1A818CULL } }, /* XSUM_XXH128_testdata[1757] */ + { 586, 0x0000000000000000ULL, { 0x29B9D3DDE40F0AB6ULL, 0x31A3285BED83C1F5ULL } }, /* XSUM_XXH128_testdata[1758] */ + { 586, 0x000000009E3779B1ULL, { 0xF7C657CA7884BC20ULL, 0x2000A417EDA26A2EULL } }, /* XSUM_XXH128_testdata[1759] */ + { 586, 0x9E3779B185EBCA8DULL, { 0xFC17FD5172E2134AULL, 0x216447C32472ABF9ULL } }, /* XSUM_XXH128_testdata[1760] */ + { 587, 0x0000000000000000ULL, { 0xCC9C6FC419758916ULL, 0xE7EA949E5CB402FDULL } }, /* XSUM_XXH128_testdata[1761] */ + { 587, 0x000000009E3779B1ULL, { 0xC95A795F80A4E88DULL, 0x827B1AD0CF0AEFD5ULL } }, /* XSUM_XXH128_testdata[1762] */ + { 587, 0x9E3779B185EBCA8DULL, { 0xE36C621E2EF52F4AULL, 0xE35453F5967863EDULL } }, /* XSUM_XXH128_testdata[1763] */ + { 588, 0x0000000000000000ULL, { 0xE82416D6E4A38F1EULL, 0xD3325A3A5E48B8F6ULL } }, /* XSUM_XXH128_testdata[1764] */ + { 588, 0x000000009E3779B1ULL, { 0x26635B740F4B1A04ULL, 0x3C0C5D52BAD74464ULL } }, /* XSUM_XXH128_testdata[1765] */ + { 588, 0x9E3779B185EBCA8DULL, { 0x9796FEEF63D6A1F9ULL, 0xF30837F51B77EB85ULL } }, /* XSUM_XXH128_testdata[1766] */ + { 589, 0x0000000000000000ULL, { 0x7784A4EDF1CAB9F2ULL, 0xFE0CA1C7BA86CC08ULL } }, /* XSUM_XXH128_testdata[1767] */ + { 589, 0x000000009E3779B1ULL, { 0x7064E4EBFF07AEEEULL, 0xC8F30681A38589FCULL } }, /* XSUM_XXH128_testdata[1768] */ + { 589, 0x9E3779B185EBCA8DULL, { 0x65C3F6BACEDF9F19ULL, 0x24B352158CCED2CAULL } }, /* XSUM_XXH128_testdata[1769] */ + { 590, 0x0000000000000000ULL, { 0x51E14499A5DFDFFDULL, 0x75DCA9BE88E810A7ULL } }, /* XSUM_XXH128_testdata[1770] */ + { 590, 0x000000009E3779B1ULL, { 0xF87D35609E27AC7CULL, 0x4F191C572ADB8D3DULL } }, /* XSUM_XXH128_testdata[1771] */ + { 590, 0x9E3779B185EBCA8DULL, { 0x3BF4C198955532FFULL, 0xE2DDA6D664C1671FULL } }, /* XSUM_XXH128_testdata[1772] */ + { 591, 0x0000000000000000ULL, { 0x30D3F0BC9778B4FCULL, 0x7C59D37470DC8E78ULL } }, /* XSUM_XXH128_testdata[1773] */ + { 591, 0x000000009E3779B1ULL, { 0x27DACC920E80E355ULL, 0x7300047963E0897DULL } }, /* XSUM_XXH128_testdata[1774] */ + { 591, 0x9E3779B185EBCA8DULL, { 0x59924F04807B6C24ULL, 0x8A081B54C1CA7469ULL } }, /* XSUM_XXH128_testdata[1775] */ + { 592, 0x0000000000000000ULL, { 0x52C035B4068830C8ULL, 0xE2A3D347FE95F559ULL } }, /* XSUM_XXH128_testdata[1776] */ + { 592, 0x000000009E3779B1ULL, { 0x5BEF24888C7FE84DULL, 0x40C5B2BAD64B7C8FULL } }, /* XSUM_XXH128_testdata[1777] */ + { 592, 0x9E3779B185EBCA8DULL, { 0xF025B3903ED116E2ULL, 0x7097561BF71D3F0FULL } }, /* XSUM_XXH128_testdata[1778] */ + { 593, 0x0000000000000000ULL, { 0x93612FB9A62606C6ULL, 0xAB45B8AA575D4B22ULL } }, /* XSUM_XXH128_testdata[1779] */ + { 593, 0x000000009E3779B1ULL, { 0x96EB2848A2744903ULL, 0x2F7367E2340902D7ULL } }, /* XSUM_XXH128_testdata[1780] */ + { 593, 0x9E3779B185EBCA8DULL, { 0xDA45DA0B9A293E98ULL, 0x1A7E25046483B649ULL } }, /* XSUM_XXH128_testdata[1781] */ + { 594, 0x0000000000000000ULL, { 0xB615A34D0D4BC90DULL, 0xF30A87BD1547C237ULL } }, /* XSUM_XXH128_testdata[1782] */ + { 594, 0x000000009E3779B1ULL, { 0x5F49A5B103E76394ULL, 0x6F39BE769566E734ULL } }, /* XSUM_XXH128_testdata[1783] */ + { 594, 0x9E3779B185EBCA8DULL, { 0x9C6B259A26DF3E48ULL, 0xA5FE29009B6C0477ULL } }, /* XSUM_XXH128_testdata[1784] */ + { 595, 0x0000000000000000ULL, { 0x263689E084A32D7AULL, 0x93AAD5BFE368AECEULL } }, /* XSUM_XXH128_testdata[1785] */ + { 595, 0x000000009E3779B1ULL, { 0xF8E6BE6087B2AB4AULL, 0xFD68767F5FADB906ULL } }, /* XSUM_XXH128_testdata[1786] */ + { 595, 0x9E3779B185EBCA8DULL, { 0xD784DE18F3D17A46ULL, 0x5804B309C0312518ULL } }, /* XSUM_XXH128_testdata[1787] */ + { 596, 0x0000000000000000ULL, { 0x52B178D2628DD9EDULL, 0xE8B3C20B441D9F8BULL } }, /* XSUM_XXH128_testdata[1788] */ + { 596, 0x000000009E3779B1ULL, { 0x678A46A625F9A6E0ULL, 0x93A7465665D97632ULL } }, /* XSUM_XXH128_testdata[1789] */ + { 596, 0x9E3779B185EBCA8DULL, { 0xCE7C32792F452855ULL, 0xFFBD11144C29E3E7ULL } }, /* XSUM_XXH128_testdata[1790] */ + { 597, 0x0000000000000000ULL, { 0x199A00792322556FULL, 0x63E22B199381E3E5ULL } }, /* XSUM_XXH128_testdata[1791] */ + { 597, 0x000000009E3779B1ULL, { 0x2E735112D4062E9BULL, 0xA56F0E9C8F48042BULL } }, /* XSUM_XXH128_testdata[1792] */ + { 597, 0x9E3779B185EBCA8DULL, { 0x6A08469D57D39795ULL, 0x9A3507DFCE042234ULL } }, /* XSUM_XXH128_testdata[1793] */ + { 598, 0x0000000000000000ULL, { 0x2CFBF6705B9693D2ULL, 0xA2FC2499C6AFB62BULL } }, /* XSUM_XXH128_testdata[1794] */ + { 598, 0x000000009E3779B1ULL, { 0xAB5F7AEF89576E39ULL, 0xD14289B810BA0D28ULL } }, /* XSUM_XXH128_testdata[1795] */ + { 598, 0x9E3779B185EBCA8DULL, { 0x68D4E452C95CA39AULL, 0xC50E52A037E41932ULL } }, /* XSUM_XXH128_testdata[1796] */ + { 599, 0x0000000000000000ULL, { 0x96E4AF71C89C294FULL, 0xE322D26DB247FD4CULL } }, /* XSUM_XXH128_testdata[1797] */ + { 599, 0x000000009E3779B1ULL, { 0x54A490D8A2AC5FE1ULL, 0x6BF37B73230B53D1ULL } }, /* XSUM_XXH128_testdata[1798] */ + { 599, 0x9E3779B185EBCA8DULL, { 0x8FD2DF72FDBEB423ULL, 0x7F8CECD60F4F12A5ULL } }, /* XSUM_XXH128_testdata[1799] */ + { 600, 0x0000000000000000ULL, { 0xC0605FE191A5E128ULL, 0x90CC6214BA78A809ULL } }, /* XSUM_XXH128_testdata[1800] */ + { 600, 0x000000009E3779B1ULL, { 0x82954F0C435A68B8ULL, 0x005800911B6B3031ULL } }, /* XSUM_XXH128_testdata[1801] */ + { 600, 0x9E3779B185EBCA8DULL, { 0x061A23845807828DULL, 0x63DC339D852BCE71ULL } }, /* XSUM_XXH128_testdata[1802] */ + { 601, 0x0000000000000000ULL, { 0xB9B52AB20DCFA2F0ULL, 0xB2314F9051DB8B56ULL } }, /* XSUM_XXH128_testdata[1803] */ + { 601, 0x000000009E3779B1ULL, { 0xA3C0B181AB829D9FULL, 0x16497AB5B1806B8DULL } }, /* XSUM_XXH128_testdata[1804] */ + { 601, 0x9E3779B185EBCA8DULL, { 0xA10C9021FBF86BDCULL, 0x1B3996CE77BE9435ULL } }, /* XSUM_XXH128_testdata[1805] */ + { 602, 0x0000000000000000ULL, { 0x1E681FF1711A71ECULL, 0x380DF07BDC7D82FAULL } }, /* XSUM_XXH128_testdata[1806] */ + { 602, 0x000000009E3779B1ULL, { 0xF6DCA8A5B831CB19ULL, 0x5F905ECEEA7DAEB6ULL } }, /* XSUM_XXH128_testdata[1807] */ + { 602, 0x9E3779B185EBCA8DULL, { 0x77D303A800879170ULL, 0xC036A3DC8037DDE1ULL } }, /* XSUM_XXH128_testdata[1808] */ + { 603, 0x0000000000000000ULL, { 0x274CC56B3599F0FCULL, 0xA5BE69E79996918EULL } }, /* XSUM_XXH128_testdata[1809] */ + { 603, 0x000000009E3779B1ULL, { 0x1D1D03432DE1422DULL, 0xA4624CA7CE385055ULL } }, /* XSUM_XXH128_testdata[1810] */ + { 603, 0x9E3779B185EBCA8DULL, { 0x21A9015EDF9C798FULL, 0xC7BCFF0C7D422BC9ULL } }, /* XSUM_XXH128_testdata[1811] */ + { 604, 0x0000000000000000ULL, { 0x2DB7105D277670F9ULL, 0xB41D6C796CF12FD9ULL } }, /* XSUM_XXH128_testdata[1812] */ + { 604, 0x000000009E3779B1ULL, { 0x558145B5694D6511ULL, 0xA482237BB1D2E87EULL } }, /* XSUM_XXH128_testdata[1813] */ + { 604, 0x9E3779B185EBCA8DULL, { 0x5C54F9021DD5483BULL, 0x9C430B5279704EB9ULL } }, /* XSUM_XXH128_testdata[1814] */ + { 605, 0x0000000000000000ULL, { 0xEF875CCA274645EBULL, 0x77641EF07FB39530ULL } }, /* XSUM_XXH128_testdata[1815] */ + { 605, 0x000000009E3779B1ULL, { 0x8D270BEBBA0DC4B8ULL, 0x758C05D3E12ECC34ULL } }, /* XSUM_XXH128_testdata[1816] */ + { 605, 0x9E3779B185EBCA8DULL, { 0xA87B24AE041D5072ULL, 0x04285CE218AEBDAEULL } }, /* XSUM_XXH128_testdata[1817] */ + { 606, 0x0000000000000000ULL, { 0x6095086311E06EBCULL, 0x73DE7F5A6F5AF11BULL } }, /* XSUM_XXH128_testdata[1818] */ + { 606, 0x000000009E3779B1ULL, { 0x0F1CB0B4377F4995ULL, 0x59B7D6C864F0C84EULL } }, /* XSUM_XXH128_testdata[1819] */ + { 606, 0x9E3779B185EBCA8DULL, { 0x93B481E1668D07E1ULL, 0xC898677587D9FB03ULL } }, /* XSUM_XXH128_testdata[1820] */ + { 607, 0x0000000000000000ULL, { 0x9BE5048018448255ULL, 0x03239A39A3606215ULL } }, /* XSUM_XXH128_testdata[1821] */ + { 607, 0x000000009E3779B1ULL, { 0xE3E62BC1B0AC9898ULL, 0x9836177A747BD791ULL } }, /* XSUM_XXH128_testdata[1822] */ + { 607, 0x9E3779B185EBCA8DULL, { 0xD5C064AC0461CDEAULL, 0xA5F6012E22181D02ULL } }, /* XSUM_XXH128_testdata[1823] */ + { 608, 0x0000000000000000ULL, { 0xE2F2E44992786982ULL, 0xB26A68526D78D4A2ULL } }, /* XSUM_XXH128_testdata[1824] */ + { 608, 0x000000009E3779B1ULL, { 0x64505FB146FC601FULL, 0x96C35C72D5C478B7ULL } }, /* XSUM_XXH128_testdata[1825] */ + { 608, 0x9E3779B185EBCA8DULL, { 0x9C9880AF03E8A1E2ULL, 0x61FEA8738F571ADAULL } }, /* XSUM_XXH128_testdata[1826] */ + { 609, 0x0000000000000000ULL, { 0x969FA5C5D49A88F6ULL, 0x6D20A428BA0410BDULL } }, /* XSUM_XXH128_testdata[1827] */ + { 609, 0x000000009E3779B1ULL, { 0x388D3703ECE26A47ULL, 0xD8CF6B396A1D80BAULL } }, /* XSUM_XXH128_testdata[1828] */ + { 609, 0x9E3779B185EBCA8DULL, { 0x911FCC4A7ED41156ULL, 0x0DA6B8ACF5240770ULL } }, /* XSUM_XXH128_testdata[1829] */ + { 610, 0x0000000000000000ULL, { 0x69382E0FA6AC3416ULL, 0xA70CA7B122A9EF13ULL } }, /* XSUM_XXH128_testdata[1830] */ + { 610, 0x000000009E3779B1ULL, { 0xD9CB395E5676B251ULL, 0xF7123DFBC6A60AAAULL } }, /* XSUM_XXH128_testdata[1831] */ + { 610, 0x9E3779B185EBCA8DULL, { 0x2CB911C877F198C1ULL, 0x3C9D8A22BC0FCB49ULL } }, /* XSUM_XXH128_testdata[1832] */ + { 611, 0x0000000000000000ULL, { 0xA24AC0AD6789B294ULL, 0xAD2D4EBD6B5A46E0ULL } }, /* XSUM_XXH128_testdata[1833] */ + { 611, 0x000000009E3779B1ULL, { 0xAA52BDC19527F31FULL, 0x6B1A04DCD459B68DULL } }, /* XSUM_XXH128_testdata[1834] */ + { 611, 0x9E3779B185EBCA8DULL, { 0xDB739ED7A7DB4B64ULL, 0xB55FC1BF3C9A1E3FULL } }, /* XSUM_XXH128_testdata[1835] */ + { 612, 0x0000000000000000ULL, { 0xAB306415318BF16CULL, 0x56008E44603E68A7ULL } }, /* XSUM_XXH128_testdata[1836] */ + { 612, 0x000000009E3779B1ULL, { 0x108D24A42802CCE2ULL, 0xCAD3A597DA3F3CC7ULL } }, /* XSUM_XXH128_testdata[1837] */ + { 612, 0x9E3779B185EBCA8DULL, { 0x572F5BA4414B6021ULL, 0x5A5FF0C22EAB2874ULL } }, /* XSUM_XXH128_testdata[1838] */ + { 613, 0x0000000000000000ULL, { 0x928ED52A15B31530ULL, 0xC1E02E3350B77F2BULL } }, /* XSUM_XXH128_testdata[1839] */ + { 613, 0x000000009E3779B1ULL, { 0xE1F9C7E877964A12ULL, 0xB8A1AB7FCBA5E537ULL } }, /* XSUM_XXH128_testdata[1840] */ + { 613, 0x9E3779B185EBCA8DULL, { 0x863CEC68751B6645ULL, 0x6776A2412F39B15AULL } }, /* XSUM_XXH128_testdata[1841] */ + { 614, 0x0000000000000000ULL, { 0x11C8C7ACC6789D36ULL, 0x5E99F62362D66373ULL } }, /* XSUM_XXH128_testdata[1842] */ + { 614, 0x000000009E3779B1ULL, { 0x211B80A1B439E408ULL, 0x67A4CA37D258ECAFULL } }, /* XSUM_XXH128_testdata[1843] */ + { 614, 0x9E3779B185EBCA8DULL, { 0x25119504F8C045A1ULL, 0x4F27AF8D007A7BDCULL } }, /* XSUM_XXH128_testdata[1844] */ + { 615, 0x0000000000000000ULL, { 0x3731AE1CEDF5C793ULL, 0xC705C2585D353C74ULL } }, /* XSUM_XXH128_testdata[1845] */ + { 615, 0x000000009E3779B1ULL, { 0xED65D84E231D5C16ULL, 0xFE4531DE7010F874ULL } }, /* XSUM_XXH128_testdata[1846] */ + { 615, 0x9E3779B185EBCA8DULL, { 0x2DE364890B5BAF7CULL, 0x5658A0237EEC33E7ULL } }, /* XSUM_XXH128_testdata[1847] */ + { 616, 0x0000000000000000ULL, { 0x31EEEFA193131A8CULL, 0x2E99CDE84E8687E1ULL } }, /* XSUM_XXH128_testdata[1848] */ + { 616, 0x000000009E3779B1ULL, { 0x312A0CE06D3EF9B5ULL, 0x6B97A1B7BF8D9938ULL } }, /* XSUM_XXH128_testdata[1849] */ + { 616, 0x9E3779B185EBCA8DULL, { 0xAA10CEDACEAA47AAULL, 0x90FAD055E2152184ULL } }, /* XSUM_XXH128_testdata[1850] */ + { 617, 0x0000000000000000ULL, { 0xFE134367327E31B5ULL, 0xBC2D27C4492E0CEAULL } }, /* XSUM_XXH128_testdata[1851] */ + { 617, 0x000000009E3779B1ULL, { 0x115F2B167DBA5CB8ULL, 0x0B82F478E4859232ULL } }, /* XSUM_XXH128_testdata[1852] */ + { 617, 0x9E3779B185EBCA8DULL, { 0x8203304E6842AC80ULL, 0xBA552639C8666341ULL } }, /* XSUM_XXH128_testdata[1853] */ + { 618, 0x0000000000000000ULL, { 0x2DC6F2E1248E829AULL, 0x51F01132E0320D01ULL } }, /* XSUM_XXH128_testdata[1854] */ + { 618, 0x000000009E3779B1ULL, { 0xD11C8AF78DC6924CULL, 0xB74AEB6D61DEBB0EULL } }, /* XSUM_XXH128_testdata[1855] */ + { 618, 0x9E3779B185EBCA8DULL, { 0xE49683C589D9C054ULL, 0xDC5240B21FD4B31DULL } }, /* XSUM_XXH128_testdata[1856] */ + { 619, 0x0000000000000000ULL, { 0x510613BA8891C1E7ULL, 0x93D8CCB8B0FB5DC6ULL } }, /* XSUM_XXH128_testdata[1857] */ + { 619, 0x000000009E3779B1ULL, { 0xA527534D495826C1ULL, 0x508298E690C6FD83ULL } }, /* XSUM_XXH128_testdata[1858] */ + { 619, 0x9E3779B185EBCA8DULL, { 0x6AFFDCD2935018B4ULL, 0x4C2AE7433C5EA201ULL } }, /* XSUM_XXH128_testdata[1859] */ + { 620, 0x0000000000000000ULL, { 0xED6D6926F7B60375ULL, 0x7E0682BBD603E72DULL } }, /* XSUM_XXH128_testdata[1860] */ + { 620, 0x000000009E3779B1ULL, { 0x4543D4F6F979AD40ULL, 0x8D80413C1ED48D80ULL } }, /* XSUM_XXH128_testdata[1861] */ + { 620, 0x9E3779B185EBCA8DULL, { 0x6541696753FAC9A2ULL, 0x127DC4E850FB6443ULL } }, /* XSUM_XXH128_testdata[1862] */ + { 621, 0x0000000000000000ULL, { 0xA0CC39F66497B27FULL, 0x405C9D60D80B40B6ULL } }, /* XSUM_XXH128_testdata[1863] */ + { 621, 0x000000009E3779B1ULL, { 0xEB6BCD5578086944ULL, 0xC61C086B65B78AD5ULL } }, /* XSUM_XXH128_testdata[1864] */ + { 621, 0x9E3779B185EBCA8DULL, { 0xE258768426AD7457ULL, 0x607654C8D489D6BFULL } }, /* XSUM_XXH128_testdata[1865] */ + { 622, 0x0000000000000000ULL, { 0x04F9559C71C5B5A0ULL, 0x2E305C380E67BC5BULL } }, /* XSUM_XXH128_testdata[1866] */ + { 622, 0x000000009E3779B1ULL, { 0x3088790F2F98F3B2ULL, 0xC35A8F42DC435E92ULL } }, /* XSUM_XXH128_testdata[1867] */ + { 622, 0x9E3779B185EBCA8DULL, { 0xB593A3CBBF11D3ADULL, 0x74B44B1B111FD2D3ULL } }, /* XSUM_XXH128_testdata[1868] */ + { 623, 0x0000000000000000ULL, { 0x2883715F1954DEC5ULL, 0x8EED78DA0E214FEDULL } }, /* XSUM_XXH128_testdata[1869] */ + { 623, 0x000000009E3779B1ULL, { 0xC134437CFA099A65ULL, 0xB6085488A448AA84ULL } }, /* XSUM_XXH128_testdata[1870] */ + { 623, 0x9E3779B185EBCA8DULL, { 0xD9A88DC52418885EULL, 0x3C9F7A7B8AE450ADULL } }, /* XSUM_XXH128_testdata[1871] */ + { 624, 0x0000000000000000ULL, { 0x7DBD97E325B2A6A7ULL, 0x489A5365EF1051A9ULL } }, /* XSUM_XXH128_testdata[1872] */ + { 624, 0x000000009E3779B1ULL, { 0xF1CBF9CAF3839F2AULL, 0xF8CEA05306A9CE88ULL } }, /* XSUM_XXH128_testdata[1873] */ + { 624, 0x9E3779B185EBCA8DULL, { 0x26CC497601B10736ULL, 0xB038054E846802BDULL } }, /* XSUM_XXH128_testdata[1874] */ + { 625, 0x0000000000000000ULL, { 0x1A93910D2CD6D526ULL, 0xABB9A07C7C49B26AULL } }, /* XSUM_XXH128_testdata[1875] */ + { 625, 0x000000009E3779B1ULL, { 0xCB2821ABDDDC6B0FULL, 0x7FC20F6810051088ULL } }, /* XSUM_XXH128_testdata[1876] */ + { 625, 0x9E3779B185EBCA8DULL, { 0x571552D3E0744C50ULL, 0xDB00B33DACD5D19FULL } }, /* XSUM_XXH128_testdata[1877] */ + { 626, 0x0000000000000000ULL, { 0x8CD297D30C025358ULL, 0x9C898DEDD75ED6F1ULL } }, /* XSUM_XXH128_testdata[1878] */ + { 626, 0x000000009E3779B1ULL, { 0x4C60089F5590249AULL, 0x36C913A3481FECC3ULL } }, /* XSUM_XXH128_testdata[1879] */ + { 626, 0x9E3779B185EBCA8DULL, { 0x0B018AAECFC50E25ULL, 0x9FE4DD0994C2A746ULL } }, /* XSUM_XXH128_testdata[1880] */ + { 627, 0x0000000000000000ULL, { 0x8A26D3B875BC2BB0ULL, 0xB0D481928EFC63ADULL } }, /* XSUM_XXH128_testdata[1881] */ + { 627, 0x000000009E3779B1ULL, { 0x8F8C1E5D94713392ULL, 0x98695F13AD11CF39ULL } }, /* XSUM_XXH128_testdata[1882] */ + { 627, 0x9E3779B185EBCA8DULL, { 0x7DEC6393395B7F1EULL, 0x465F58A990E07E3FULL } }, /* XSUM_XXH128_testdata[1883] */ + { 628, 0x0000000000000000ULL, { 0x6084625CE9FE419CULL, 0xF235250955E81CCBULL } }, /* XSUM_XXH128_testdata[1884] */ + { 628, 0x000000009E3779B1ULL, { 0xBD2683AE1CE521C6ULL, 0x3CF41F400EAD739BULL } }, /* XSUM_XXH128_testdata[1885] */ + { 628, 0x9E3779B185EBCA8DULL, { 0x5B22E55A223B81DAULL, 0x8FF6DA2358F3A3D7ULL } }, /* XSUM_XXH128_testdata[1886] */ + { 629, 0x0000000000000000ULL, { 0x100D70F4679F9BD3ULL, 0x79B339CAFC0B1C03ULL } }, /* XSUM_XXH128_testdata[1887] */ + { 629, 0x000000009E3779B1ULL, { 0xE7D4AA5032BFB46EULL, 0x9640B159B1AA4AE1ULL } }, /* XSUM_XXH128_testdata[1888] */ + { 629, 0x9E3779B185EBCA8DULL, { 0xF48929F1B6A7BCDCULL, 0x290514DA890B0080ULL } }, /* XSUM_XXH128_testdata[1889] */ + { 630, 0x0000000000000000ULL, { 0xE3D4F6F959A36913ULL, 0xAB2C9030E1942D19ULL } }, /* XSUM_XXH128_testdata[1890] */ + { 630, 0x000000009E3779B1ULL, { 0x05E29915B1FF7669ULL, 0x52806D97D9A23588ULL } }, /* XSUM_XXH128_testdata[1891] */ + { 630, 0x9E3779B185EBCA8DULL, { 0x186793413BF41E97ULL, 0xA4AC88E362598BC5ULL } }, /* XSUM_XXH128_testdata[1892] */ + { 631, 0x0000000000000000ULL, { 0x182716B04D4641A5ULL, 0x4ACBD981F622F8B5ULL } }, /* XSUM_XXH128_testdata[1893] */ + { 631, 0x000000009E3779B1ULL, { 0x7173F808A2108C8FULL, 0x10E02EF6E5764259ULL } }, /* XSUM_XXH128_testdata[1894] */ + { 631, 0x9E3779B185EBCA8DULL, { 0xF207013BBEA556D9ULL, 0xBA28B886ECAA3133ULL } }, /* XSUM_XXH128_testdata[1895] */ + { 632, 0x0000000000000000ULL, { 0x710CC7DE160F15FAULL, 0x2A6B1FEDCAD7D332ULL } }, /* XSUM_XXH128_testdata[1896] */ + { 632, 0x000000009E3779B1ULL, { 0x41DBBD4B82A893ABULL, 0x8AA88F8CD7D633E8ULL } }, /* XSUM_XXH128_testdata[1897] */ + { 632, 0x9E3779B185EBCA8DULL, { 0xDB6AB689686906EFULL, 0x5EBF2B8EDC92675CULL } }, /* XSUM_XXH128_testdata[1898] */ + { 633, 0x0000000000000000ULL, { 0x36ACB22C98F2647FULL, 0x046CF39E34B8D271ULL } }, /* XSUM_XXH128_testdata[1899] */ + { 633, 0x000000009E3779B1ULL, { 0x8117A4FCC3901D40ULL, 0x774DF0989E8821DCULL } }, /* XSUM_XXH128_testdata[1900] */ + { 633, 0x9E3779B185EBCA8DULL, { 0x8F509869A202DBCFULL, 0x4168EFD7358AEB18ULL } }, /* XSUM_XXH128_testdata[1901] */ + { 634, 0x0000000000000000ULL, { 0x9164849B45760F60ULL, 0x7BAA584C4A2A84DDULL } }, /* XSUM_XXH128_testdata[1902] */ + { 634, 0x000000009E3779B1ULL, { 0xA2F8CDC49121A2C5ULL, 0xBD597639D618BA6DULL } }, /* XSUM_XXH128_testdata[1903] */ + { 634, 0x9E3779B185EBCA8DULL, { 0xC9C40A581D114295ULL, 0x2CDCCDC638044E1AULL } }, /* XSUM_XXH128_testdata[1904] */ + { 635, 0x0000000000000000ULL, { 0x6DA37640B986D7A3ULL, 0x4B4D8A224C018D16ULL } }, /* XSUM_XXH128_testdata[1905] */ + { 635, 0x000000009E3779B1ULL, { 0xF52F49C543037AC1ULL, 0x98A9F2586A105116ULL } }, /* XSUM_XXH128_testdata[1906] */ + { 635, 0x9E3779B185EBCA8DULL, { 0x7FAF2E611B096C47ULL, 0xC90B5C8EAC3AC602ULL } }, /* XSUM_XXH128_testdata[1907] */ + { 636, 0x0000000000000000ULL, { 0x59BA932720702C98ULL, 0x9F7060B8F8D0F141ULL } }, /* XSUM_XXH128_testdata[1908] */ + { 636, 0x000000009E3779B1ULL, { 0x74034C9DC603474CULL, 0x7FAC29BD31BA2FC9ULL } }, /* XSUM_XXH128_testdata[1909] */ + { 636, 0x9E3779B185EBCA8DULL, { 0x5EB76A057E164347ULL, 0xB133BD3D32C6475DULL } }, /* XSUM_XXH128_testdata[1910] */ + { 637, 0x0000000000000000ULL, { 0x91FA6DEA0E5BE52DULL, 0x5D9A63BB3C922A36ULL } }, /* XSUM_XXH128_testdata[1911] */ + { 637, 0x000000009E3779B1ULL, { 0xBFC7B1554EF9A880ULL, 0x0E3E0FF6851A7EB0ULL } }, /* XSUM_XXH128_testdata[1912] */ + { 637, 0x9E3779B185EBCA8DULL, { 0x6C611F46BA1235BEULL, 0x257E40F8058EC1A4ULL } }, /* XSUM_XXH128_testdata[1913] */ + { 638, 0x0000000000000000ULL, { 0x4BC1B99ABD8C9B73ULL, 0x14BE9608BFF83E42ULL } }, /* XSUM_XXH128_testdata[1914] */ + { 638, 0x000000009E3779B1ULL, { 0x22798066FB902E83ULL, 0x961B9594CBA6B7F5ULL } }, /* XSUM_XXH128_testdata[1915] */ + { 638, 0x9E3779B185EBCA8DULL, { 0xFA8DF2479F6BB0AFULL, 0x6C840AFB508E84B4ULL } }, /* XSUM_XXH128_testdata[1916] */ + { 639, 0x0000000000000000ULL, { 0x035D671E9674A633ULL, 0xE3417BEB35AA68CDULL } }, /* XSUM_XXH128_testdata[1917] */ + { 639, 0x000000009E3779B1ULL, { 0x597FC340C4F9B794ULL, 0x0EF6FF6E29F753ACULL } }, /* XSUM_XXH128_testdata[1918] */ + { 639, 0x9E3779B185EBCA8DULL, { 0x9B8EF3F04B909513ULL, 0x5EA5068983528875ULL } }, /* XSUM_XXH128_testdata[1919] */ + { 640, 0x0000000000000000ULL, { 0xAF4193ABDC5994B3ULL, 0xDED3EEA178AD232AULL } }, /* XSUM_XXH128_testdata[1920] */ + { 640, 0x000000009E3779B1ULL, { 0x1D04FD8537A8A678ULL, 0x1BA925E1B8ED9171ULL } }, /* XSUM_XXH128_testdata[1921] */ + { 640, 0x9E3779B185EBCA8DULL, { 0xBCF9335F2DD501DEULL, 0xC51288F418AC024FULL } }, /* XSUM_XXH128_testdata[1922] */ + { 641, 0x0000000000000000ULL, { 0xE7BA1B930AEEB87DULL, 0x3928C27C03E3330DULL } }, /* XSUM_XXH128_testdata[1923] */ + { 641, 0x000000009E3779B1ULL, { 0xDB46963A76DEA109ULL, 0x783DA6B7634F5582ULL } }, /* XSUM_XXH128_testdata[1924] */ + { 641, 0x9E3779B185EBCA8DULL, { 0x6AF70D9EF44C03C4ULL, 0xAAE75F5F9F462D2FULL } }, /* XSUM_XXH128_testdata[1925] */ + { 642, 0x0000000000000000ULL, { 0x065E9966C6E4276BULL, 0x233315089D645B95ULL } }, /* XSUM_XXH128_testdata[1926] */ + { 642, 0x000000009E3779B1ULL, { 0x315613A249661BF6ULL, 0xDF2464407D908B33ULL } }, /* XSUM_XXH128_testdata[1927] */ + { 642, 0x9E3779B185EBCA8DULL, { 0x72A68771C0145270ULL, 0x764B3F7D1D489B2CULL } }, /* XSUM_XXH128_testdata[1928] */ + { 643, 0x0000000000000000ULL, { 0xD29405F69936AB10ULL, 0x170A71A9D0962E11ULL } }, /* XSUM_XXH128_testdata[1929] */ + { 643, 0x000000009E3779B1ULL, { 0xD1B1ABD071E9E4FEULL, 0xD1317AEF0056BB4FULL } }, /* XSUM_XXH128_testdata[1930] */ + { 643, 0x9E3779B185EBCA8DULL, { 0xC112DD24C82BE004ULL, 0x9521F97EB21A074BULL } }, /* XSUM_XXH128_testdata[1931] */ + { 644, 0x0000000000000000ULL, { 0x68303D1BCAAEBB23ULL, 0xB3C65579CF5934AFULL } }, /* XSUM_XXH128_testdata[1932] */ + { 644, 0x000000009E3779B1ULL, { 0xD7398D811F61B0CBULL, 0x6C8256003C871393ULL } }, /* XSUM_XXH128_testdata[1933] */ + { 644, 0x9E3779B185EBCA8DULL, { 0xB1A8A8C331ABF2EFULL, 0xF32438011C0B7A16ULL } }, /* XSUM_XXH128_testdata[1934] */ + { 645, 0x0000000000000000ULL, { 0x3801BF30E6386242ULL, 0xA398FA81E9ACD048ULL } }, /* XSUM_XXH128_testdata[1935] */ + { 645, 0x000000009E3779B1ULL, { 0xE814D34978EE694CULL, 0xC0D64E6BC163CB73ULL } }, /* XSUM_XXH128_testdata[1936] */ + { 645, 0x9E3779B185EBCA8DULL, { 0x688D55D2B4826CD8ULL, 0x784262281591B8CCULL } }, /* XSUM_XXH128_testdata[1937] */ + { 646, 0x0000000000000000ULL, { 0x27C2E21CA1AD0BB4ULL, 0x8A8D28B427C45E5AULL } }, /* XSUM_XXH128_testdata[1938] */ + { 646, 0x000000009E3779B1ULL, { 0x214153A8693AD351ULL, 0x4F6E143D266E1DC3ULL } }, /* XSUM_XXH128_testdata[1939] */ + { 646, 0x9E3779B185EBCA8DULL, { 0xE4FBDF7428E36986ULL, 0x17E22362C58CAAB1ULL } }, /* XSUM_XXH128_testdata[1940] */ + { 647, 0x0000000000000000ULL, { 0x359159902F4339F9ULL, 0xA17DB7A6AEA3FED8ULL } }, /* XSUM_XXH128_testdata[1941] */ + { 647, 0x000000009E3779B1ULL, { 0x09A09E74B4C12DB9ULL, 0x224BCE96A2B8CDEDULL } }, /* XSUM_XXH128_testdata[1942] */ + { 647, 0x9E3779B185EBCA8DULL, { 0x50E157E377554E5AULL, 0x73806831CCAFAB45ULL } }, /* XSUM_XXH128_testdata[1943] */ + { 648, 0x0000000000000000ULL, { 0x901087DE7D84E343ULL, 0x9FE03B2571B5B0E5ULL } }, /* XSUM_XXH128_testdata[1944] */ + { 648, 0x000000009E3779B1ULL, { 0xE83D549803D8ABF6ULL, 0x5E114A08DD990DB3ULL } }, /* XSUM_XXH128_testdata[1945] */ + { 648, 0x9E3779B185EBCA8DULL, { 0x3730E38DCCA57107ULL, 0xE9622AFA0AA7653EULL } }, /* XSUM_XXH128_testdata[1946] */ + { 649, 0x0000000000000000ULL, { 0xE21B333C11B071ECULL, 0xC65780C40C24D8F6ULL } }, /* XSUM_XXH128_testdata[1947] */ + { 649, 0x000000009E3779B1ULL, { 0x3CD78742DB22049AULL, 0x5A385D0AD74B958DULL } }, /* XSUM_XXH128_testdata[1948] */ + { 649, 0x9E3779B185EBCA8DULL, { 0xB69D9DEE1403CCE5ULL, 0xACD8EB354B40131AULL } }, /* XSUM_XXH128_testdata[1949] */ + { 650, 0x0000000000000000ULL, { 0xCC858F79A2DC1D8CULL, 0xC307ADBA7929002CULL } }, /* XSUM_XXH128_testdata[1950] */ + { 650, 0x000000009E3779B1ULL, { 0x50216B88E09AF82EULL, 0x7BDEA7E5F8AB6AEFULL } }, /* XSUM_XXH128_testdata[1951] */ + { 650, 0x9E3779B185EBCA8DULL, { 0x9A2C632A20524886ULL, 0xBF04650388DB4A9FULL } }, /* XSUM_XXH128_testdata[1952] */ + { 651, 0x0000000000000000ULL, { 0x1D511DBC696D9235ULL, 0x8B8070E209AA8D41ULL } }, /* XSUM_XXH128_testdata[1953] */ + { 651, 0x000000009E3779B1ULL, { 0xC546D2B0931A158AULL, 0x5F208AB50214387FULL } }, /* XSUM_XXH128_testdata[1954] */ + { 651, 0x9E3779B185EBCA8DULL, { 0xD725252CD3469098ULL, 0xE06AC2F56CAD1366ULL } }, /* XSUM_XXH128_testdata[1955] */ + { 652, 0x0000000000000000ULL, { 0xCDD3E08C5A2DBD5FULL, 0xC77477D5F27B7C9CULL } }, /* XSUM_XXH128_testdata[1956] */ + { 652, 0x000000009E3779B1ULL, { 0x8FB89AD9FAEA2F34ULL, 0xACBED578AB960B16ULL } }, /* XSUM_XXH128_testdata[1957] */ + { 652, 0x9E3779B185EBCA8DULL, { 0xC14E73EC3F3FD40EULL, 0x559397FF5C1A7E23ULL } }, /* XSUM_XXH128_testdata[1958] */ + { 653, 0x0000000000000000ULL, { 0x4CC60A74EDFDC4A1ULL, 0xDAD00CC976D1B8CCULL } }, /* XSUM_XXH128_testdata[1959] */ + { 653, 0x000000009E3779B1ULL, { 0xB6C388758C4E288BULL, 0x3CB41F3B01765C29ULL } }, /* XSUM_XXH128_testdata[1960] */ + { 653, 0x9E3779B185EBCA8DULL, { 0x2E3E4D6216BE0652ULL, 0xA2F4355BF8FA82D9ULL } }, /* XSUM_XXH128_testdata[1961] */ + { 654, 0x0000000000000000ULL, { 0x61075A6A563EA507ULL, 0x34ECC18620EAFD34ULL } }, /* XSUM_XXH128_testdata[1962] */ + { 654, 0x000000009E3779B1ULL, { 0x0F51D561E272F89DULL, 0xF62716D87F4213FAULL } }, /* XSUM_XXH128_testdata[1963] */ + { 654, 0x9E3779B185EBCA8DULL, { 0x61BCB8DB78710FFFULL, 0xDA5B2D13F8FABFC1ULL } }, /* XSUM_XXH128_testdata[1964] */ + { 655, 0x0000000000000000ULL, { 0x552CCAB07F52777BULL, 0xFA804201FCF9D5CAULL } }, /* XSUM_XXH128_testdata[1965] */ + { 655, 0x000000009E3779B1ULL, { 0xC80385E16F99D873ULL, 0xB54D72438B65F8F5ULL } }, /* XSUM_XXH128_testdata[1966] */ + { 655, 0x9E3779B185EBCA8DULL, { 0x7DB56551A2409867ULL, 0x4549FA3034D85CEDULL } }, /* XSUM_XXH128_testdata[1967] */ + { 656, 0x0000000000000000ULL, { 0x4ACDE78203A11415ULL, 0x8F05E20678ED9666ULL } }, /* XSUM_XXH128_testdata[1968] */ + { 656, 0x000000009E3779B1ULL, { 0xB7B2C2A534A83D76ULL, 0x64098E91D988D218ULL } }, /* XSUM_XXH128_testdata[1969] */ + { 656, 0x9E3779B185EBCA8DULL, { 0x2641A2A30324B9D6ULL, 0x29B03DCB195645DDULL } }, /* XSUM_XXH128_testdata[1970] */ + { 657, 0x0000000000000000ULL, { 0xB5497EA549768344ULL, 0x90584D0BE3A8D7F2ULL } }, /* XSUM_XXH128_testdata[1971] */ + { 657, 0x000000009E3779B1ULL, { 0x9EE99E369A2E9B15ULL, 0xE1193CAC7EF0B5C5ULL } }, /* XSUM_XXH128_testdata[1972] */ + { 657, 0x9E3779B185EBCA8DULL, { 0x03174EAE8FAA0FC7ULL, 0x5D8DF7DFAEA608DDULL } }, /* XSUM_XXH128_testdata[1973] */ + { 658, 0x0000000000000000ULL, { 0xDC50AEFA830D25A4ULL, 0xC1C4E64E40750878ULL } }, /* XSUM_XXH128_testdata[1974] */ + { 658, 0x000000009E3779B1ULL, { 0x616FB40F23691CD4ULL, 0xBB8D1F964313BDCDULL } }, /* XSUM_XXH128_testdata[1975] */ + { 658, 0x9E3779B185EBCA8DULL, { 0xA5A8205C97D473BAULL, 0x4C87C4C22C02161CULL } }, /* XSUM_XXH128_testdata[1976] */ + { 659, 0x0000000000000000ULL, { 0x9160DC39BA6D1C83ULL, 0x5D9A2A51BFC39666ULL } }, /* XSUM_XXH128_testdata[1977] */ + { 659, 0x000000009E3779B1ULL, { 0x380B793C8B53976CULL, 0x57DC8308EC9581B7ULL } }, /* XSUM_XXH128_testdata[1978] */ + { 659, 0x9E3779B185EBCA8DULL, { 0x475480CCC8AF958AULL, 0xF2A5C38C0F8D0557ULL } }, /* XSUM_XXH128_testdata[1979] */ + { 660, 0x0000000000000000ULL, { 0xA9CA3EF4146E6E9FULL, 0x10C0B34B8CB20C8EULL } }, /* XSUM_XXH128_testdata[1980] */ + { 660, 0x000000009E3779B1ULL, { 0x1AAA7BFC74A4924CULL, 0xC8A4EF3D08EFF52DULL } }, /* XSUM_XXH128_testdata[1981] */ + { 660, 0x9E3779B185EBCA8DULL, { 0x1682C066F3A8823FULL, 0x3D9E25DC1A2A28A9ULL } }, /* XSUM_XXH128_testdata[1982] */ + { 661, 0x0000000000000000ULL, { 0x7460AC3EBDB0CC91ULL, 0x8154E235C9FE2B82ULL } }, /* XSUM_XXH128_testdata[1983] */ + { 661, 0x000000009E3779B1ULL, { 0xCBA490856D7EF1F0ULL, 0x94A90685A240FFE1ULL } }, /* XSUM_XXH128_testdata[1984] */ + { 661, 0x9E3779B185EBCA8DULL, { 0xF2D25854D8C709DBULL, 0xB504402B97B1EFC3ULL } }, /* XSUM_XXH128_testdata[1985] */ + { 662, 0x0000000000000000ULL, { 0xECEC3F9135C75502ULL, 0x53292BD52F578EA0ULL } }, /* XSUM_XXH128_testdata[1986] */ + { 662, 0x000000009E3779B1ULL, { 0x31BA8676BCE71CD0ULL, 0x962B6A5C7134CF66ULL } }, /* XSUM_XXH128_testdata[1987] */ + { 662, 0x9E3779B185EBCA8DULL, { 0x62499E1401ADE872ULL, 0x0A11874EBF6AA403ULL } }, /* XSUM_XXH128_testdata[1988] */ + { 663, 0x0000000000000000ULL, { 0x7B127A5A5E93BCD4ULL, 0xE1222F4E25D2DE2EULL } }, /* XSUM_XXH128_testdata[1989] */ + { 663, 0x000000009E3779B1ULL, { 0x2905636734279643ULL, 0x8FD70757AF076CAFULL } }, /* XSUM_XXH128_testdata[1990] */ + { 663, 0x9E3779B185EBCA8DULL, { 0x89254435FC56ED38ULL, 0xF793C737ECAC6C21ULL } }, /* XSUM_XXH128_testdata[1991] */ + { 664, 0x0000000000000000ULL, { 0xEB047D893EECD24AULL, 0xE68F5A891F0CC80AULL } }, /* XSUM_XXH128_testdata[1992] */ + { 664, 0x000000009E3779B1ULL, { 0x1629FED07A9E4CE6ULL, 0x16750E181BB04EC6ULL } }, /* XSUM_XXH128_testdata[1993] */ + { 664, 0x9E3779B185EBCA8DULL, { 0x1FDDABDB0C5E4364ULL, 0xA559F832402226C8ULL } }, /* XSUM_XXH128_testdata[1994] */ + { 665, 0x0000000000000000ULL, { 0xF0A35228227E28E3ULL, 0x56D5AB7296D0E7C2ULL } }, /* XSUM_XXH128_testdata[1995] */ + { 665, 0x000000009E3779B1ULL, { 0x3344D3ED632A3574ULL, 0x8CB806FE4CB278D0ULL } }, /* XSUM_XXH128_testdata[1996] */ + { 665, 0x9E3779B185EBCA8DULL, { 0x8B8F8139678108C4ULL, 0x9A331F28CB288542ULL } }, /* XSUM_XXH128_testdata[1997] */ + { 666, 0x0000000000000000ULL, { 0x3D4AA64ECD0C04E8ULL, 0x54A6B886FBD7FD6BULL } }, /* XSUM_XXH128_testdata[1998] */ + { 666, 0x000000009E3779B1ULL, { 0xF914A1408AAFB3F9ULL, 0xF0CEA39C5F0CFAC0ULL } }, /* XSUM_XXH128_testdata[1999] */ + { 666, 0x9E3779B185EBCA8DULL, { 0x0ADCCABEAF0D5B84ULL, 0xEDF5CDDB45FE5F85ULL } }, /* XSUM_XXH128_testdata[2000] */ + { 667, 0x0000000000000000ULL, { 0x744BE46CFA49B58CULL, 0x099C84151E85E529ULL } }, /* XSUM_XXH128_testdata[2001] */ + { 667, 0x000000009E3779B1ULL, { 0x252904C60607B3C7ULL, 0xDB808E0075AF75F6ULL } }, /* XSUM_XXH128_testdata[2002] */ + { 667, 0x9E3779B185EBCA8DULL, { 0x2B17BF1FEB2FC217ULL, 0x39DCF3EDBA6E1F92ULL } }, /* XSUM_XXH128_testdata[2003] */ + { 668, 0x0000000000000000ULL, { 0x216603F52972D093ULL, 0xD3A4F007AFF6DFBEULL } }, /* XSUM_XXH128_testdata[2004] */ + { 668, 0x000000009E3779B1ULL, { 0x45D3A40AA0522F64ULL, 0x96CE734521335157ULL } }, /* XSUM_XXH128_testdata[2005] */ + { 668, 0x9E3779B185EBCA8DULL, { 0x59BA1CD43FFB532BULL, 0xF8C41DF41523C437ULL } }, /* XSUM_XXH128_testdata[2006] */ + { 669, 0x0000000000000000ULL, { 0xECAB0778974C7ED3ULL, 0xF96BA2CFC7BA6B08ULL } }, /* XSUM_XXH128_testdata[2007] */ + { 669, 0x000000009E3779B1ULL, { 0x24C4AF0FAB391C2DULL, 0x803AB622CFCE7D2FULL } }, /* XSUM_XXH128_testdata[2008] */ + { 669, 0x9E3779B185EBCA8DULL, { 0xE835F55EC75A62FFULL, 0xCFC69E5E1340667FULL } }, /* XSUM_XXH128_testdata[2009] */ + { 670, 0x0000000000000000ULL, { 0xD605CF61B5D3778CULL, 0x3BDD3A67EF7990D5ULL } }, /* XSUM_XXH128_testdata[2010] */ + { 670, 0x000000009E3779B1ULL, { 0x2524762CC3CA1934ULL, 0xDB2F8659878696A5ULL } }, /* XSUM_XXH128_testdata[2011] */ + { 670, 0x9E3779B185EBCA8DULL, { 0x07CFA96D6253A1CFULL, 0xCB2F91306A4DF69DULL } }, /* XSUM_XXH128_testdata[2012] */ + { 671, 0x0000000000000000ULL, { 0x3894273709446570ULL, 0x9B96C6D8B03B55C9ULL } }, /* XSUM_XXH128_testdata[2013] */ + { 671, 0x000000009E3779B1ULL, { 0x9D4392BBD2A7F585ULL, 0xDBC9833FE3F6A6DFULL } }, /* XSUM_XXH128_testdata[2014] */ + { 671, 0x9E3779B185EBCA8DULL, { 0x2E0B4B534B7AB5B1ULL, 0xFD9973E261B1A0E6ULL } }, /* XSUM_XXH128_testdata[2015] */ + { 672, 0x0000000000000000ULL, { 0x18A8759DD6C8A127ULL, 0xFEE23F64D4C73CB6ULL } }, /* XSUM_XXH128_testdata[2016] */ + { 672, 0x000000009E3779B1ULL, { 0x7F1422E7B96C00FBULL, 0x8EDBCBA1D924A371ULL } }, /* XSUM_XXH128_testdata[2017] */ + { 672, 0x9E3779B185EBCA8DULL, { 0xB8729212E63A2B15ULL, 0x7A8852642F7BAAADULL } }, /* XSUM_XXH128_testdata[2018] */ + { 673, 0x0000000000000000ULL, { 0xB88636AB6CD1D60EULL, 0xC5FBD455709094F9ULL } }, /* XSUM_XXH128_testdata[2019] */ + { 673, 0x000000009E3779B1ULL, { 0xD6692D6885A6F7BCULL, 0x3F2B28A9C86479CCULL } }, /* XSUM_XXH128_testdata[2020] */ + { 673, 0x9E3779B185EBCA8DULL, { 0x4507642B43344489ULL, 0xAADD512883373EC2ULL } }, /* XSUM_XXH128_testdata[2021] */ + { 674, 0x0000000000000000ULL, { 0x7F252CDA25AD432CULL, 0xA2288DFC58A1CF3DULL } }, /* XSUM_XXH128_testdata[2022] */ + { 674, 0x000000009E3779B1ULL, { 0x60A346C398D14843ULL, 0x578795C0A3F4B9A0ULL } }, /* XSUM_XXH128_testdata[2023] */ + { 674, 0x9E3779B185EBCA8DULL, { 0x254986B183AB63A9ULL, 0xBF2C9F02D9563A50ULL } }, /* XSUM_XXH128_testdata[2024] */ + { 675, 0x0000000000000000ULL, { 0x2DDEA1F39436EC1EULL, 0x6DB166AA444FE559ULL } }, /* XSUM_XXH128_testdata[2025] */ + { 675, 0x000000009E3779B1ULL, { 0x3F4120D41E58D4B7ULL, 0x6F1E9B7953AA6746ULL } }, /* XSUM_XXH128_testdata[2026] */ + { 675, 0x9E3779B185EBCA8DULL, { 0x97AD2BFD2BF47E12ULL, 0x7741128620183CA3ULL } }, /* XSUM_XXH128_testdata[2027] */ + { 676, 0x0000000000000000ULL, { 0x51A7EBC85A37A7D8ULL, 0x455C4C502533CBE2ULL } }, /* XSUM_XXH128_testdata[2028] */ + { 676, 0x000000009E3779B1ULL, { 0xAF1D759A82980A4AULL, 0x2640603AD3479050ULL } }, /* XSUM_XXH128_testdata[2029] */ + { 676, 0x9E3779B185EBCA8DULL, { 0xC7D27F5FDED0BDD7ULL, 0xA0678DBF5EE628D6ULL } }, /* XSUM_XXH128_testdata[2030] */ + { 677, 0x0000000000000000ULL, { 0xCDEACACD82B7D79BULL, 0x7A8546308AC22CF7ULL } }, /* XSUM_XXH128_testdata[2031] */ + { 677, 0x000000009E3779B1ULL, { 0x7453AC9A4BCC1E05ULL, 0x29102079C9DD0A08ULL } }, /* XSUM_XXH128_testdata[2032] */ + { 677, 0x9E3779B185EBCA8DULL, { 0xBEFB40A4A0A42B54ULL, 0x9A4370801EA0A006ULL } }, /* XSUM_XXH128_testdata[2033] */ + { 678, 0x0000000000000000ULL, { 0xCEB3E9F656FF4511ULL, 0xADDCEF9E1F8C2F5FULL } }, /* XSUM_XXH128_testdata[2034] */ + { 678, 0x000000009E3779B1ULL, { 0x91930C996C07E6C2ULL, 0x2FB812D611B6BCDBULL } }, /* XSUM_XXH128_testdata[2035] */ + { 678, 0x9E3779B185EBCA8DULL, { 0x0CD1CB4E9E9311E1ULL, 0x442FCA11F0623516ULL } }, /* XSUM_XXH128_testdata[2036] */ + { 679, 0x0000000000000000ULL, { 0xB7CD9FA73E39ADB4ULL, 0x1689AE0F599A24BAULL } }, /* XSUM_XXH128_testdata[2037] */ + { 679, 0x000000009E3779B1ULL, { 0xD275E55C632F2751ULL, 0x00148C8C774BC141ULL } }, /* XSUM_XXH128_testdata[2038] */ + { 679, 0x9E3779B185EBCA8DULL, { 0x8BDE0F97D38CD1F1ULL, 0x80F3A157FD68AD5CULL } }, /* XSUM_XXH128_testdata[2039] */ + { 680, 0x0000000000000000ULL, { 0xD46F82961FFA71E9ULL, 0x6CF67EC55286AA66ULL } }, /* XSUM_XXH128_testdata[2040] */ + { 680, 0x000000009E3779B1ULL, { 0x02B28FB59EB2CB3BULL, 0xCCE1FDB59E6E2F13ULL } }, /* XSUM_XXH128_testdata[2041] */ + { 680, 0x9E3779B185EBCA8DULL, { 0x5072064A59E7A4BCULL, 0xB28AD09BC500747DULL } }, /* XSUM_XXH128_testdata[2042] */ + { 681, 0x0000000000000000ULL, { 0xE30C10E5DF46B182ULL, 0x231ABEB05D926CC1ULL } }, /* XSUM_XXH128_testdata[2043] */ + { 681, 0x000000009E3779B1ULL, { 0x9EED5243D0AE0DCFULL, 0xD3D05627B2D1A7F5ULL } }, /* XSUM_XXH128_testdata[2044] */ + { 681, 0x9E3779B185EBCA8DULL, { 0x9D00A687A910BAF2ULL, 0x1FB446150A4C3F92ULL } }, /* XSUM_XXH128_testdata[2045] */ + { 682, 0x0000000000000000ULL, { 0x035D625495342A66ULL, 0xB332E9D798A2D8AEULL } }, /* XSUM_XXH128_testdata[2046] */ + { 682, 0x000000009E3779B1ULL, { 0x20DE6B5E5490EE35ULL, 0x853F6AD6929AE82FULL } }, /* XSUM_XXH128_testdata[2047] */ + { 682, 0x9E3779B185EBCA8DULL, { 0x9EDE8647E875F7CEULL, 0xB3FEC66CC474145AULL } }, /* XSUM_XXH128_testdata[2048] */ + { 683, 0x0000000000000000ULL, { 0xEA3F1217472DC43AULL, 0xCFF9715C674ACD00ULL } }, /* XSUM_XXH128_testdata[2049] */ + { 683, 0x000000009E3779B1ULL, { 0xE210854C805A8A3EULL, 0xE26A1A725977878FULL } }, /* XSUM_XXH128_testdata[2050] */ + { 683, 0x9E3779B185EBCA8DULL, { 0x9F5B331577B6BFFDULL, 0xFF01DD0601A318E4ULL } }, /* XSUM_XXH128_testdata[2051] */ + { 684, 0x0000000000000000ULL, { 0xA224A6AD2382D9E4ULL, 0xB9D335BECB242237ULL } }, /* XSUM_XXH128_testdata[2052] */ + { 684, 0x000000009E3779B1ULL, { 0x78CDC0D6D2A91160ULL, 0x11C1B6CA909B31C6ULL } }, /* XSUM_XXH128_testdata[2053] */ + { 684, 0x9E3779B185EBCA8DULL, { 0x157C90988CBE0040ULL, 0x07A66618145107E3ULL } }, /* XSUM_XXH128_testdata[2054] */ + { 685, 0x0000000000000000ULL, { 0x09FE95398CF92B6EULL, 0x21ECA9928B124220ULL } }, /* XSUM_XXH128_testdata[2055] */ + { 685, 0x000000009E3779B1ULL, { 0x75FE6CF2735E19D4ULL, 0x05CAFC0F525F8228ULL } }, /* XSUM_XXH128_testdata[2056] */ + { 685, 0x9E3779B185EBCA8DULL, { 0x53469E830A47BC69ULL, 0x4A58B366629E9948ULL } }, /* XSUM_XXH128_testdata[2057] */ + { 686, 0x0000000000000000ULL, { 0xD60979352D528294ULL, 0x3B4C55AE398BB6C7ULL } }, /* XSUM_XXH128_testdata[2058] */ + { 686, 0x000000009E3779B1ULL, { 0x6A95E2070FFD345AULL, 0x8C7DE57C9C57E37CULL } }, /* XSUM_XXH128_testdata[2059] */ + { 686, 0x9E3779B185EBCA8DULL, { 0x95750C1628B29CAAULL, 0xEAFAEFCDC36770EBULL } }, /* XSUM_XXH128_testdata[2060] */ + { 687, 0x0000000000000000ULL, { 0x70030ABE1BCF260BULL, 0xACE3DBF291634AC7ULL } }, /* XSUM_XXH128_testdata[2061] */ + { 687, 0x000000009E3779B1ULL, { 0xA93F7A13BEA875DEULL, 0x95D957695B1CE926ULL } }, /* XSUM_XXH128_testdata[2062] */ + { 687, 0x9E3779B185EBCA8DULL, { 0xEBF7C42A6A29302CULL, 0x87EE8C0F11EFFCB9ULL } }, /* XSUM_XXH128_testdata[2063] */ + { 688, 0x0000000000000000ULL, { 0x28018B42C285A3C0ULL, 0x02CC588B75375C0EULL } }, /* XSUM_XXH128_testdata[2064] */ + { 688, 0x000000009E3779B1ULL, { 0x6A652B48EC2E5A6BULL, 0x3DEF5820ACC3C590ULL } }, /* XSUM_XXH128_testdata[2065] */ + { 688, 0x9E3779B185EBCA8DULL, { 0x7C5B9E4E3A833CB7ULL, 0x3A3B952D0F8B7774ULL } }, /* XSUM_XXH128_testdata[2066] */ + { 689, 0x0000000000000000ULL, { 0x751575E6F3102F35ULL, 0x60946FAA2BE89D5EULL } }, /* XSUM_XXH128_testdata[2067] */ + { 689, 0x000000009E3779B1ULL, { 0x57900C3953D1445EULL, 0xFFFE8666DCA4EA6DULL } }, /* XSUM_XXH128_testdata[2068] */ + { 689, 0x9E3779B185EBCA8DULL, { 0xFBED8D0AA15FD5F9ULL, 0x8011B489438A4157ULL } }, /* XSUM_XXH128_testdata[2069] */ + { 690, 0x0000000000000000ULL, { 0x0760F9D20A8C0124ULL, 0x428F3442F686D691ULL } }, /* XSUM_XXH128_testdata[2070] */ + { 690, 0x000000009E3779B1ULL, { 0x480672B0B16E021FULL, 0xE11D0741DA8698D9ULL } }, /* XSUM_XXH128_testdata[2071] */ + { 690, 0x9E3779B185EBCA8DULL, { 0x54C40A8A572FE172ULL, 0x4F3C746AC912A31EULL } }, /* XSUM_XXH128_testdata[2072] */ + { 691, 0x0000000000000000ULL, { 0xB43AB84B58366A46ULL, 0xC0AF0E370C4DC882ULL } }, /* XSUM_XXH128_testdata[2073] */ + { 691, 0x000000009E3779B1ULL, { 0x769A4042BFF9A1CEULL, 0x00337065E6FC2331ULL } }, /* XSUM_XXH128_testdata[2074] */ + { 691, 0x9E3779B185EBCA8DULL, { 0xF76B92FA4B5C1EFEULL, 0x215042B932C475B1ULL } }, /* XSUM_XXH128_testdata[2075] */ + { 692, 0x0000000000000000ULL, { 0x89AD8A04565BF9DFULL, 0x7E4CC6EB1896D2EBULL } }, /* XSUM_XXH128_testdata[2076] */ + { 692, 0x000000009E3779B1ULL, { 0x0F141FF75A4A71A0ULL, 0x1A2A84C0AE10F224ULL } }, /* XSUM_XXH128_testdata[2077] */ + { 692, 0x9E3779B185EBCA8DULL, { 0xF7662E1884DD2DECULL, 0x458F05F5208F9DD8ULL } }, /* XSUM_XXH128_testdata[2078] */ + { 693, 0x0000000000000000ULL, { 0x69B4173B5E5C2F1CULL, 0x912FF8BD7679BD0FULL } }, /* XSUM_XXH128_testdata[2079] */ + { 693, 0x000000009E3779B1ULL, { 0x1CFE7F6E677FA9C0ULL, 0xD00618E29FB471A7ULL } }, /* XSUM_XXH128_testdata[2080] */ + { 693, 0x9E3779B185EBCA8DULL, { 0xEC2A35776A1789A3ULL, 0xC48C464984BB0C3BULL } }, /* XSUM_XXH128_testdata[2081] */ + { 694, 0x0000000000000000ULL, { 0x6A1A315A4ECC8C20ULL, 0xC0B1B272D687E074ULL } }, /* XSUM_XXH128_testdata[2082] */ + { 694, 0x000000009E3779B1ULL, { 0x0046EE3E60486C3EULL, 0xB75EBF80DD381AE6ULL } }, /* XSUM_XXH128_testdata[2083] */ + { 694, 0x9E3779B185EBCA8DULL, { 0x2BDA8F63EA106A05ULL, 0x98FA045492D8FC2EULL } }, /* XSUM_XXH128_testdata[2084] */ + { 695, 0x0000000000000000ULL, { 0x211027A807ED2265ULL, 0xA36A9997A49242E8ULL } }, /* XSUM_XXH128_testdata[2085] */ + { 695, 0x000000009E3779B1ULL, { 0xA3CF82F9B620C8C2ULL, 0xFE1C09232116A3FBULL } }, /* XSUM_XXH128_testdata[2086] */ + { 695, 0x9E3779B185EBCA8DULL, { 0x0628573BF1549F0BULL, 0xC34BB308ACF931ECULL } }, /* XSUM_XXH128_testdata[2087] */ + { 696, 0x0000000000000000ULL, { 0xEC70CA0661F26C32ULL, 0x10913571447A8E39ULL } }, /* XSUM_XXH128_testdata[2088] */ + { 696, 0x000000009E3779B1ULL, { 0x37E37D35A6F97BD9ULL, 0x50CFEB9D097B5D97ULL } }, /* XSUM_XXH128_testdata[2089] */ + { 696, 0x9E3779B185EBCA8DULL, { 0x041227AC12C6EF7BULL, 0xB8073BF7A9209731ULL } }, /* XSUM_XXH128_testdata[2090] */ + { 697, 0x0000000000000000ULL, { 0x92FB87A7D3291AAAULL, 0x3A6705951EF53724ULL } }, /* XSUM_XXH128_testdata[2091] */ + { 697, 0x000000009E3779B1ULL, { 0x7918CA3E61FCFA8DULL, 0xD71F140FE71E6423ULL } }, /* XSUM_XXH128_testdata[2092] */ + { 697, 0x9E3779B185EBCA8DULL, { 0x654875EB06391799ULL, 0x4D8D5BB7CB9BDD45ULL } }, /* XSUM_XXH128_testdata[2093] */ + { 698, 0x0000000000000000ULL, { 0x4C444C9791D6D5F0ULL, 0xB77E150ED4829D27ULL } }, /* XSUM_XXH128_testdata[2094] */ + { 698, 0x000000009E3779B1ULL, { 0x2218C2075282358EULL, 0x118E5FAC0528A8A3ULL } }, /* XSUM_XXH128_testdata[2095] */ + { 698, 0x9E3779B185EBCA8DULL, { 0xF1A5E46734BDC2A7ULL, 0x2AF7D0CE5948DBDDULL } }, /* XSUM_XXH128_testdata[2096] */ + { 699, 0x0000000000000000ULL, { 0x3BC8DF475C4A531FULL, 0x8DA74D4813FC0422ULL } }, /* XSUM_XXH128_testdata[2097] */ + { 699, 0x000000009E3779B1ULL, { 0xA091416DECF38A67ULL, 0x08757A58BF33FDD1ULL } }, /* XSUM_XXH128_testdata[2098] */ + { 699, 0x9E3779B185EBCA8DULL, { 0x47773131B0B339A2ULL, 0x888D77A672A5E004ULL } }, /* XSUM_XXH128_testdata[2099] */ + { 700, 0x0000000000000000ULL, { 0xFA90F040F92A7E71ULL, 0xC142808EAFD2DB2EULL } }, /* XSUM_XXH128_testdata[2100] */ + { 700, 0x000000009E3779B1ULL, { 0xE2C2BEB3043A1B8FULL, 0x2E46BD00049D08C0ULL } }, /* XSUM_XXH128_testdata[2101] */ + { 700, 0x9E3779B185EBCA8DULL, { 0x8E93D45B99763DE8ULL, 0xF17757B3F46B8A8EULL } }, /* XSUM_XXH128_testdata[2102] */ + { 701, 0x0000000000000000ULL, { 0x22730147C96C49C1ULL, 0x93EFAA58C3022A72ULL } }, /* XSUM_XXH128_testdata[2103] */ + { 701, 0x000000009E3779B1ULL, { 0x6E2FC15024E11867ULL, 0xA172B64558F66B03ULL } }, /* XSUM_XXH128_testdata[2104] */ + { 701, 0x9E3779B185EBCA8DULL, { 0x07D7225D37BE56B6ULL, 0xA26D7FCC826C4910ULL } }, /* XSUM_XXH128_testdata[2105] */ + { 702, 0x0000000000000000ULL, { 0x1C9A22BD51A0F347ULL, 0x42E0BCB008F6C555ULL } }, /* XSUM_XXH128_testdata[2106] */ + { 702, 0x000000009E3779B1ULL, { 0xE24FC633063A49B8ULL, 0x3E72608C13BE0F81ULL } }, /* XSUM_XXH128_testdata[2107] */ + { 702, 0x9E3779B185EBCA8DULL, { 0x3979E3CCB74F6B99ULL, 0x7040D97DE934954DULL } }, /* XSUM_XXH128_testdata[2108] */ + { 703, 0x0000000000000000ULL, { 0x683E5E6D58E06485ULL, 0x1851A226211A91D9ULL } }, /* XSUM_XXH128_testdata[2109] */ + { 703, 0x000000009E3779B1ULL, { 0x36BAD3DE821AAFA6ULL, 0x27294ABF8C5DF99BULL } }, /* XSUM_XXH128_testdata[2110] */ + { 703, 0x9E3779B185EBCA8DULL, { 0x69E61408E3346451ULL, 0x6B34B6CD2EA1CE9CULL } }, /* XSUM_XXH128_testdata[2111] */ + { 704, 0x0000000000000000ULL, { 0x53D0007023B75557ULL, 0x7FBCF9FCFDB7BAB4ULL } }, /* XSUM_XXH128_testdata[2112] */ + { 704, 0x000000009E3779B1ULL, { 0x8406D415960B9A2AULL, 0x1187877FACD1829FULL } }, /* XSUM_XXH128_testdata[2113] */ + { 704, 0x9E3779B185EBCA8DULL, { 0x2B2D21E690DC3E11ULL, 0x0A5EDF0A83FAA5B8ULL } }, /* XSUM_XXH128_testdata[2114] */ + { 705, 0x0000000000000000ULL, { 0xBA8F3D7D77F20C8EULL, 0xF6B56ED27CD14407ULL } }, /* XSUM_XXH128_testdata[2115] */ + { 705, 0x000000009E3779B1ULL, { 0xC56172646597C413ULL, 0xD0318E5F8B59E720ULL } }, /* XSUM_XXH128_testdata[2116] */ + { 705, 0x9E3779B185EBCA8DULL, { 0x88D85FCD88755E7DULL, 0x5445D390DBF7A113ULL } }, /* XSUM_XXH128_testdata[2117] */ + { 706, 0x0000000000000000ULL, { 0xA695E503AEE57121ULL, 0x790C3692355F5149ULL } }, /* XSUM_XXH128_testdata[2118] */ + { 706, 0x000000009E3779B1ULL, { 0xB087FFEAE38D0520ULL, 0xF2E224905664BDC9ULL } }, /* XSUM_XXH128_testdata[2119] */ + { 706, 0x9E3779B185EBCA8DULL, { 0x78DA7B809A94BCFEULL, 0x82FEBD84FE649216ULL } }, /* XSUM_XXH128_testdata[2120] */ + { 707, 0x0000000000000000ULL, { 0x95433111932AF80EULL, 0x1948C46B0A77E047ULL } }, /* XSUM_XXH128_testdata[2121] */ + { 707, 0x000000009E3779B1ULL, { 0x1117E578FA41375AULL, 0x958481D521BA040CULL } }, /* XSUM_XXH128_testdata[2122] */ + { 707, 0x9E3779B185EBCA8DULL, { 0x9FA9DAABD6433C76ULL, 0x0A2EADC2D8DCB17CULL } }, /* XSUM_XXH128_testdata[2123] */ + { 708, 0x0000000000000000ULL, { 0x497AF37942A68AAEULL, 0x752C497A23A9E8CBULL } }, /* XSUM_XXH128_testdata[2124] */ + { 708, 0x000000009E3779B1ULL, { 0x634C90B1B8BFB228ULL, 0x1F97B711AEDAAD4AULL } }, /* XSUM_XXH128_testdata[2125] */ + { 708, 0x9E3779B185EBCA8DULL, { 0xA3EEF16DFEBBE660ULL, 0x2FDFAD370C84AF51ULL } }, /* XSUM_XXH128_testdata[2126] */ + { 709, 0x0000000000000000ULL, { 0xB361F79C5F877D03ULL, 0x7DB6A9B03E12A082ULL } }, /* XSUM_XXH128_testdata[2127] */ + { 709, 0x000000009E3779B1ULL, { 0x03E95F5C5A8965DFULL, 0xAA38BD92A1B2A4F3ULL } }, /* XSUM_XXH128_testdata[2128] */ + { 709, 0x9E3779B185EBCA8DULL, { 0xA7814A983164B859ULL, 0x1F4048648983192EULL } }, /* XSUM_XXH128_testdata[2129] */ + { 710, 0x0000000000000000ULL, { 0xEF085BFFE73EF728ULL, 0xACB780D51D01AAEBULL } }, /* XSUM_XXH128_testdata[2130] */ + { 710, 0x000000009E3779B1ULL, { 0x0B95827EFE4BA0E6ULL, 0x804E86D86E9225A3ULL } }, /* XSUM_XXH128_testdata[2131] */ + { 710, 0x9E3779B185EBCA8DULL, { 0xBB3A16860A419A09ULL, 0x7FFD509D0FE2A3CDULL } }, /* XSUM_XXH128_testdata[2132] */ + { 711, 0x0000000000000000ULL, { 0xE9CB41A0C8A5344BULL, 0x8D3352BFB4F01E3EULL } }, /* XSUM_XXH128_testdata[2133] */ + { 711, 0x000000009E3779B1ULL, { 0x31039981C1D45212ULL, 0xA69743A375026FADULL } }, /* XSUM_XXH128_testdata[2134] */ + { 711, 0x9E3779B185EBCA8DULL, { 0x3BF91CBBD165BF19ULL, 0xA8C6B5B9B31254CFULL } }, /* XSUM_XXH128_testdata[2135] */ + { 712, 0x0000000000000000ULL, { 0x094B75D2DCC59B16ULL, 0xA85DED7E16E462D6ULL } }, /* XSUM_XXH128_testdata[2136] */ + { 712, 0x000000009E3779B1ULL, { 0x513175A061549B47ULL, 0x352ED1D3AD795579ULL } }, /* XSUM_XXH128_testdata[2137] */ + { 712, 0x9E3779B185EBCA8DULL, { 0xC953ADD65FC87D28ULL, 0xE2C0FBAFEB64A420ULL } }, /* XSUM_XXH128_testdata[2138] */ + { 713, 0x0000000000000000ULL, { 0x687E011056B168DFULL, 0x3D98545A4CD30F48ULL } }, /* XSUM_XXH128_testdata[2139] */ + { 713, 0x000000009E3779B1ULL, { 0x3901180DF597D12BULL, 0x697B0B1CEBA21800ULL } }, /* XSUM_XXH128_testdata[2140] */ + { 713, 0x9E3779B185EBCA8DULL, { 0x7D0E2509C09FF864ULL, 0x679982CD07F8CDE2ULL } }, /* XSUM_XXH128_testdata[2141] */ + { 714, 0x0000000000000000ULL, { 0x216776767DE94CCDULL, 0x4AEBD28BD92B4864ULL } }, /* XSUM_XXH128_testdata[2142] */ + { 714, 0x000000009E3779B1ULL, { 0x787D614DA537DFE6ULL, 0x22CC1701CDCA984CULL } }, /* XSUM_XXH128_testdata[2143] */ + { 714, 0x9E3779B185EBCA8DULL, { 0x7B3B463549FC1B73ULL, 0x15983C0B8AFF0EF4ULL } }, /* XSUM_XXH128_testdata[2144] */ + { 715, 0x0000000000000000ULL, { 0x8FE72DFB0BBC68AAULL, 0x079D00E294770D05ULL } }, /* XSUM_XXH128_testdata[2145] */ + { 715, 0x000000009E3779B1ULL, { 0x6CE4C83DBC020E60ULL, 0xC0EC2998087352A7ULL } }, /* XSUM_XXH128_testdata[2146] */ + { 715, 0x9E3779B185EBCA8DULL, { 0x335630133E190194ULL, 0x29E899DE2F75B203ULL } }, /* XSUM_XXH128_testdata[2147] */ + { 716, 0x0000000000000000ULL, { 0xC21F5B936CBB11A1ULL, 0xA24AA5D6063A24EAULL } }, /* XSUM_XXH128_testdata[2148] */ + { 716, 0x000000009E3779B1ULL, { 0x75EE8C41982E95A3ULL, 0xDBC8DE02A7AE9EFEULL } }, /* XSUM_XXH128_testdata[2149] */ + { 716, 0x9E3779B185EBCA8DULL, { 0x5F2ED15F53E8FA00ULL, 0x5AA8782567715708ULL } }, /* XSUM_XXH128_testdata[2150] */ + { 717, 0x0000000000000000ULL, { 0xF59584C3D5568930ULL, 0x59C4E00AF597F5DAULL } }, /* XSUM_XXH128_testdata[2151] */ + { 717, 0x000000009E3779B1ULL, { 0x4702B54E0606C5CBULL, 0x703605197B42E266ULL } }, /* XSUM_XXH128_testdata[2152] */ + { 717, 0x9E3779B185EBCA8DULL, { 0x7D8EC8EC3A31B3F9ULL, 0x2A7F5ADD57446966ULL } }, /* XSUM_XXH128_testdata[2153] */ + { 718, 0x0000000000000000ULL, { 0x02E45FA9460EEC70ULL, 0xE211D92234371C75ULL } }, /* XSUM_XXH128_testdata[2154] */ + { 718, 0x000000009E3779B1ULL, { 0x767F0E53E4721FEFULL, 0x1D51BB329270D992ULL } }, /* XSUM_XXH128_testdata[2155] */ + { 718, 0x9E3779B185EBCA8DULL, { 0x3C53E9098C60D822ULL, 0x46793D16A6A4BE25ULL } }, /* XSUM_XXH128_testdata[2156] */ + { 719, 0x0000000000000000ULL, { 0x14B1E4306412BA03ULL, 0xC302FA8A0FF3F84DULL } }, /* XSUM_XXH128_testdata[2157] */ + { 719, 0x000000009E3779B1ULL, { 0xD9222BB4438D53F6ULL, 0xE3B8ACA0EB90CF29ULL } }, /* XSUM_XXH128_testdata[2158] */ + { 719, 0x9E3779B185EBCA8DULL, { 0xE8B262397EA54296ULL, 0xC00E8A58F66E4EAFULL } }, /* XSUM_XXH128_testdata[2159] */ + { 720, 0x0000000000000000ULL, { 0xED83840F58017914ULL, 0x9A4A55F3696F735FULL } }, /* XSUM_XXH128_testdata[2160] */ + { 720, 0x000000009E3779B1ULL, { 0xC5E7632FA87E02CDULL, 0xBA9E527EDC489927ULL } }, /* XSUM_XXH128_testdata[2161] */ + { 720, 0x9E3779B185EBCA8DULL, { 0x85788A34A91DC62EULL, 0xB651C5DAE05D9452ULL } }, /* XSUM_XXH128_testdata[2162] */ + { 721, 0x0000000000000000ULL, { 0x7EA1D2F1FF21A780ULL, 0x099303B97063C154ULL } }, /* XSUM_XXH128_testdata[2163] */ + { 721, 0x000000009E3779B1ULL, { 0xA066E2339E40B577ULL, 0x371E64DB64294E38ULL } }, /* XSUM_XXH128_testdata[2164] */ + { 721, 0x9E3779B185EBCA8DULL, { 0xA0F80C3300C72A56ULL, 0x1583B805326CCAA3ULL } }, /* XSUM_XXH128_testdata[2165] */ + { 722, 0x0000000000000000ULL, { 0xEE7B0C11265C6606ULL, 0x2253E4A2928D8DACULL } }, /* XSUM_XXH128_testdata[2166] */ + { 722, 0x000000009E3779B1ULL, { 0x6E3D7AA4888DD6EDULL, 0x190CCDE14F90CC62ULL } }, /* XSUM_XXH128_testdata[2167] */ + { 722, 0x9E3779B185EBCA8DULL, { 0x6BCC91CE53889314ULL, 0xA48D4C03F83E66FAULL } }, /* XSUM_XXH128_testdata[2168] */ + { 723, 0x0000000000000000ULL, { 0x4B0C248133CD0BD2ULL, 0x067B20165BA68F7DULL } }, /* XSUM_XXH128_testdata[2169] */ + { 723, 0x000000009E3779B1ULL, { 0xBEF0E04AE7B792E4ULL, 0x01362A5C493B0F96ULL } }, /* XSUM_XXH128_testdata[2170] */ + { 723, 0x9E3779B185EBCA8DULL, { 0x5CDA80B8B9BF45C6ULL, 0x35CCABEEEA7AFFF9ULL } }, /* XSUM_XXH128_testdata[2171] */ + { 724, 0x0000000000000000ULL, { 0x16EC32EFED4168F5ULL, 0x352AEBE07214A14BULL } }, /* XSUM_XXH128_testdata[2172] */ + { 724, 0x000000009E3779B1ULL, { 0x5A2AC45E941F928CULL, 0x9A7555E87C33B5D0ULL } }, /* XSUM_XXH128_testdata[2173] */ + { 724, 0x9E3779B185EBCA8DULL, { 0xED554AA6AF697924ULL, 0x8D7475451C96ACFDULL } }, /* XSUM_XXH128_testdata[2174] */ + { 725, 0x0000000000000000ULL, { 0xA406E09172F9EB13ULL, 0x9F243BCC6705E19BULL } }, /* XSUM_XXH128_testdata[2175] */ + { 725, 0x000000009E3779B1ULL, { 0x99AC2AABE8FD1317ULL, 0x78D235D5925B2B8BULL } }, /* XSUM_XXH128_testdata[2176] */ + { 725, 0x9E3779B185EBCA8DULL, { 0x4C6E9261B76B7E85ULL, 0xC40C6E0C886E9B15ULL } }, /* XSUM_XXH128_testdata[2177] */ + { 726, 0x0000000000000000ULL, { 0x8CD030D1E9BC0811ULL, 0xC9DA8C8D8494856CULL } }, /* XSUM_XXH128_testdata[2178] */ + { 726, 0x000000009E3779B1ULL, { 0x007A2E21A1574F8CULL, 0xABB9605179D690F8ULL } }, /* XSUM_XXH128_testdata[2179] */ + { 726, 0x9E3779B185EBCA8DULL, { 0x4727049FFBF3E305ULL, 0x8517811971A77B6DULL } }, /* XSUM_XXH128_testdata[2180] */ + { 727, 0x0000000000000000ULL, { 0xEC28AFAE764DD4DEULL, 0x1D44D5CFF929CCC9ULL } }, /* XSUM_XXH128_testdata[2181] */ + { 727, 0x000000009E3779B1ULL, { 0x8599333D3C8CAAF5ULL, 0x5A39BE4B98A5C8E9ULL } }, /* XSUM_XXH128_testdata[2182] */ + { 727, 0x9E3779B185EBCA8DULL, { 0xA4786C7FAE624BC1ULL, 0x64D8B94A5C516F0BULL } }, /* XSUM_XXH128_testdata[2183] */ + { 728, 0x0000000000000000ULL, { 0xFEF967AEF2EDDC63ULL, 0xCB7474D9746FB403ULL } }, /* XSUM_XXH128_testdata[2184] */ + { 728, 0x000000009E3779B1ULL, { 0x016C476F561626D7ULL, 0x3F317FBDA55CD42FULL } }, /* XSUM_XXH128_testdata[2185] */ + { 728, 0x9E3779B185EBCA8DULL, { 0x1E193FA0B4F380EDULL, 0x0B9DC35440ACBBACULL } }, /* XSUM_XXH128_testdata[2186] */ + { 729, 0x0000000000000000ULL, { 0x96ED3CD548BA4C5BULL, 0xD0388F6004F35FD1ULL } }, /* XSUM_XXH128_testdata[2187] */ + { 729, 0x000000009E3779B1ULL, { 0x8546D0A257FD2280ULL, 0x66CA6BA272DE8B75ULL } }, /* XSUM_XXH128_testdata[2188] */ + { 729, 0x9E3779B185EBCA8DULL, { 0x7F02264499CCCB02ULL, 0x9ED3BF09F357A6CAULL } }, /* XSUM_XXH128_testdata[2189] */ + { 730, 0x0000000000000000ULL, { 0x1D81621D1F630AE2ULL, 0xB2E440F694E4B971ULL } }, /* XSUM_XXH128_testdata[2190] */ + { 730, 0x000000009E3779B1ULL, { 0xD548BDCF8B4FC8B1ULL, 0x0A14A66779745EBBULL } }, /* XSUM_XXH128_testdata[2191] */ + { 730, 0x9E3779B185EBCA8DULL, { 0x681572B9DBB3A148ULL, 0xD2A95B392F5FE430ULL } }, /* XSUM_XXH128_testdata[2192] */ + { 731, 0x0000000000000000ULL, { 0x4C272DA966A67BBCULL, 0xB4D2A6F27E2947FAULL } }, /* XSUM_XXH128_testdata[2193] */ + { 731, 0x000000009E3779B1ULL, { 0xB57E0EBAC1AAF5E5ULL, 0x167F2B12CA939A5CULL } }, /* XSUM_XXH128_testdata[2194] */ + { 731, 0x9E3779B185EBCA8DULL, { 0xCB23E03A22F5BE9DULL, 0xE6313479C6CB32EFULL } }, /* XSUM_XXH128_testdata[2195] */ + { 732, 0x0000000000000000ULL, { 0xDF2A8961367E9B90ULL, 0x56A5F86D020D5479ULL } }, /* XSUM_XXH128_testdata[2196] */ + { 732, 0x000000009E3779B1ULL, { 0x4703C984A33C3F8AULL, 0x35BAB92AEA99B4B3ULL } }, /* XSUM_XXH128_testdata[2197] */ + { 732, 0x9E3779B185EBCA8DULL, { 0x26C503C936FAD341ULL, 0x3EBAB4EA5146D42DULL } }, /* XSUM_XXH128_testdata[2198] */ + { 733, 0x0000000000000000ULL, { 0x52ACA8E777AADC52ULL, 0xDA5D602EA5554B95ULL } }, /* XSUM_XXH128_testdata[2199] */ + { 733, 0x000000009E3779B1ULL, { 0x2C11F4E9EF2A0E05ULL, 0x13C8548755BF28B7ULL } }, /* XSUM_XXH128_testdata[2200] */ + { 733, 0x9E3779B185EBCA8DULL, { 0xAB4A761E1084A54FULL, 0x9E2B707620EB6FDDULL } }, /* XSUM_XXH128_testdata[2201] */ + { 734, 0x0000000000000000ULL, { 0xC315DE7F85E665C2ULL, 0xA44E1CFBB613E7F1ULL } }, /* XSUM_XXH128_testdata[2202] */ + { 734, 0x000000009E3779B1ULL, { 0x4784E00C0BAE188AULL, 0x185B2302986F4ED2ULL } }, /* XSUM_XXH128_testdata[2203] */ + { 734, 0x9E3779B185EBCA8DULL, { 0x2EEF83B7CE5B97B7ULL, 0x67A2A8C8384D013CULL } }, /* XSUM_XXH128_testdata[2204] */ + { 735, 0x0000000000000000ULL, { 0x696742B385A6E2BAULL, 0x8162DD86B67B090CULL } }, /* XSUM_XXH128_testdata[2205] */ + { 735, 0x000000009E3779B1ULL, { 0xDF5984664443FBCAULL, 0x6F5258377D179419ULL } }, /* XSUM_XXH128_testdata[2206] */ + { 735, 0x9E3779B185EBCA8DULL, { 0x4B696374DA543441ULL, 0x7FF3BF302A4384D6ULL } }, /* XSUM_XXH128_testdata[2207] */ + { 736, 0x0000000000000000ULL, { 0xD7B4138320D23C84ULL, 0xE15CA4FE453E0C24ULL } }, /* XSUM_XXH128_testdata[2208] */ + { 736, 0x000000009E3779B1ULL, { 0x91FF5CACA64D8EADULL, 0xE044E8514FE8BA92ULL } }, /* XSUM_XXH128_testdata[2209] */ + { 736, 0x9E3779B185EBCA8DULL, { 0x32DF5CA9FD07BF2FULL, 0x9EB7F9CC4AC9F221ULL } }, /* XSUM_XXH128_testdata[2210] */ + { 737, 0x0000000000000000ULL, { 0xDC92E52B55C9CA42ULL, 0x9A95A06C5BE285D8ULL } }, /* XSUM_XXH128_testdata[2211] */ + { 737, 0x000000009E3779B1ULL, { 0xAA579D1774F51357ULL, 0x848F4FBD3E2F3A26ULL } }, /* XSUM_XXH128_testdata[2212] */ + { 737, 0x9E3779B185EBCA8DULL, { 0x7BF34A46BE8900C8ULL, 0x61CA9CCACA0176BFULL } }, /* XSUM_XXH128_testdata[2213] */ + { 738, 0x0000000000000000ULL, { 0x35F7C8B6785F65C6ULL, 0xD7666342BFE925EEULL } }, /* XSUM_XXH128_testdata[2214] */ + { 738, 0x000000009E3779B1ULL, { 0x7CFE5AF4AFB8BBAFULL, 0x288DB18275165C22ULL } }, /* XSUM_XXH128_testdata[2215] */ + { 738, 0x9E3779B185EBCA8DULL, { 0x3D0C9FB3364ED126ULL, 0x334D48B589080E1DULL } }, /* XSUM_XXH128_testdata[2216] */ + { 739, 0x0000000000000000ULL, { 0x9F242314D208AD5FULL, 0x565DF096B27EC225ULL } }, /* XSUM_XXH128_testdata[2217] */ + { 739, 0x000000009E3779B1ULL, { 0xCC1C1E14EF6061CBULL, 0xEA0D8C0D1B6E460DULL } }, /* XSUM_XXH128_testdata[2218] */ + { 739, 0x9E3779B185EBCA8DULL, { 0x6484D8248103312AULL, 0x0E342BAC133D6D38ULL } }, /* XSUM_XXH128_testdata[2219] */ + { 740, 0x0000000000000000ULL, { 0x08DE90C5C2B1ADCEULL, 0x7543E282A13BC058ULL } }, /* XSUM_XXH128_testdata[2220] */ + { 740, 0x000000009E3779B1ULL, { 0xB591954B34979433ULL, 0x518DD08E39C1DAA2ULL } }, /* XSUM_XXH128_testdata[2221] */ + { 740, 0x9E3779B185EBCA8DULL, { 0x07BFDFEB324E0895ULL, 0x5A0989C076FDCE1AULL } }, /* XSUM_XXH128_testdata[2222] */ + { 741, 0x0000000000000000ULL, { 0x2C25953F4B532728ULL, 0xDBE04DA640AB889BULL } }, /* XSUM_XXH128_testdata[2223] */ + { 741, 0x000000009E3779B1ULL, { 0x6F0235BBC8526F91ULL, 0x0F3F90FF9251BDE4ULL } }, /* XSUM_XXH128_testdata[2224] */ + { 741, 0x9E3779B185EBCA8DULL, { 0xFB971F5525E36290ULL, 0xCE68417FA95F0C19ULL } }, /* XSUM_XXH128_testdata[2225] */ + { 742, 0x0000000000000000ULL, { 0xACB071F7BD83FBBDULL, 0x13793E62CB5D8D41ULL } }, /* XSUM_XXH128_testdata[2226] */ + { 742, 0x000000009E3779B1ULL, { 0x753E70A707A265F1ULL, 0x1A573F20ECAD1A2EULL } }, /* XSUM_XXH128_testdata[2227] */ + { 742, 0x9E3779B185EBCA8DULL, { 0x1713A948F45BF88FULL, 0xFABD76B1E61507AFULL } }, /* XSUM_XXH128_testdata[2228] */ + { 743, 0x0000000000000000ULL, { 0xA5DF5074C7438126ULL, 0xADDDB9BE56606777ULL } }, /* XSUM_XXH128_testdata[2229] */ + { 743, 0x000000009E3779B1ULL, { 0x9375F4C3CBA5E895ULL, 0xAEA16F21036606FFULL } }, /* XSUM_XXH128_testdata[2230] */ + { 743, 0x9E3779B185EBCA8DULL, { 0xF250DDBB481132FAULL, 0x8ABE8DB0D4E5A742ULL } }, /* XSUM_XXH128_testdata[2231] */ + { 744, 0x0000000000000000ULL, { 0x23853C8A2E481D04ULL, 0xB40D18279587C169ULL } }, /* XSUM_XXH128_testdata[2232] */ + { 744, 0x000000009E3779B1ULL, { 0xD05DAB9A39B2E0ECULL, 0xF0FEC7C2A3D8F472ULL } }, /* XSUM_XXH128_testdata[2233] */ + { 744, 0x9E3779B185EBCA8DULL, { 0x6FED3CD988EA71E7ULL, 0xCD9449AADF65ECFAULL } }, /* XSUM_XXH128_testdata[2234] */ + { 745, 0x0000000000000000ULL, { 0xD53322CC8C5F41F9ULL, 0x97C2B67458AF7C27ULL } }, /* XSUM_XXH128_testdata[2235] */ + { 745, 0x000000009E3779B1ULL, { 0x3C32523E3346DCF6ULL, 0xF7E6FFACF77DF222ULL } }, /* XSUM_XXH128_testdata[2236] */ + { 745, 0x9E3779B185EBCA8DULL, { 0xD50525326BE0114EULL, 0x0A431C464E56AB55ULL } }, /* XSUM_XXH128_testdata[2237] */ + { 746, 0x0000000000000000ULL, { 0x34B8A165AAE2C20AULL, 0xC1896DAE6C8D2C5EULL } }, /* XSUM_XXH128_testdata[2238] */ + { 746, 0x000000009E3779B1ULL, { 0x627C9D67C5A0E75BULL, 0x0831A97692F9EBD5ULL } }, /* XSUM_XXH128_testdata[2239] */ + { 746, 0x9E3779B185EBCA8DULL, { 0x619061F495722A00ULL, 0x781ABB1686233954ULL } }, /* XSUM_XXH128_testdata[2240] */ + { 747, 0x0000000000000000ULL, { 0x12741F5AFC125FF4ULL, 0xBB37495DDA76BF2AULL } }, /* XSUM_XXH128_testdata[2241] */ + { 747, 0x000000009E3779B1ULL, { 0x36C91CB390986D1BULL, 0x9A8587572BE071FCULL } }, /* XSUM_XXH128_testdata[2242] */ + { 747, 0x9E3779B185EBCA8DULL, { 0x9D160E881BB7E460ULL, 0x9338138FE257BD47ULL } }, /* XSUM_XXH128_testdata[2243] */ + { 748, 0x0000000000000000ULL, { 0xDFD5F9C3C7FAADE8ULL, 0x2BC83E500A3610FAULL } }, /* XSUM_XXH128_testdata[2244] */ + { 748, 0x000000009E3779B1ULL, { 0x96DEBE77DC458BA5ULL, 0xF32A5C82E1FA0205ULL } }, /* XSUM_XXH128_testdata[2245] */ + { 748, 0x9E3779B185EBCA8DULL, { 0xEC730BDE394EADBFULL, 0xF2E4DA13B00DAB25ULL } }, /* XSUM_XXH128_testdata[2246] */ + { 749, 0x0000000000000000ULL, { 0xA2FDB44EBA93CABEULL, 0x0CD684DA0A3C72C7ULL } }, /* XSUM_XXH128_testdata[2247] */ + { 749, 0x000000009E3779B1ULL, { 0x7B073E8D758BBB59ULL, 0x4005E7BA04D243A9ULL } }, /* XSUM_XXH128_testdata[2248] */ + { 749, 0x9E3779B185EBCA8DULL, { 0xF5BD8056B5542799ULL, 0x8029E99842BC5B5CULL } }, /* XSUM_XXH128_testdata[2249] */ + { 750, 0x0000000000000000ULL, { 0x2FE3032178562F37ULL, 0xCAC824FD85C7DA0BULL } }, /* XSUM_XXH128_testdata[2250] */ + { 750, 0x000000009E3779B1ULL, { 0x4894E6D4D48D6C6AULL, 0x80BD7BD2170AF539ULL } }, /* XSUM_XXH128_testdata[2251] */ + { 750, 0x9E3779B185EBCA8DULL, { 0x5FCC94427E030C74ULL, 0xB0A4555542C04EAAULL } }, /* XSUM_XXH128_testdata[2252] */ + { 751, 0x0000000000000000ULL, { 0x7805A2A5D1955490ULL, 0x52A577D7043B64A5ULL } }, /* XSUM_XXH128_testdata[2253] */ + { 751, 0x000000009E3779B1ULL, { 0x1DE49390B9DD9EF2ULL, 0x1CE036B490C8CF97ULL } }, /* XSUM_XXH128_testdata[2254] */ + { 751, 0x9E3779B185EBCA8DULL, { 0x3E7AD96124FF9130ULL, 0x9BCE048A2D0C0F1DULL } }, /* XSUM_XXH128_testdata[2255] */ + { 752, 0x0000000000000000ULL, { 0xF712ADB98B36CB0CULL, 0x0DAEF9A5713A24B2ULL } }, /* XSUM_XXH128_testdata[2256] */ + { 752, 0x000000009E3779B1ULL, { 0x2B7B289C1FF4FCD7ULL, 0x26D976BD8D17B9FAULL } }, /* XSUM_XXH128_testdata[2257] */ + { 752, 0x9E3779B185EBCA8DULL, { 0xD21680D87EA3DC86ULL, 0x14396E4C59E6A6EEULL } }, /* XSUM_XXH128_testdata[2258] */ + { 753, 0x0000000000000000ULL, { 0x95A99222BCDD6791ULL, 0xB90F71E5D840A1EBULL } }, /* XSUM_XXH128_testdata[2259] */ + { 753, 0x000000009E3779B1ULL, { 0xE201E44421A16BE8ULL, 0x59978B057B73683CULL } }, /* XSUM_XXH128_testdata[2260] */ + { 753, 0x9E3779B185EBCA8DULL, { 0xC86EDAB23BFFDC95ULL, 0x5A1B6E4BAD48E7F7ULL } }, /* XSUM_XXH128_testdata[2261] */ + { 754, 0x0000000000000000ULL, { 0x607E9BA59C234233ULL, 0x9F3F22A13108F952ULL } }, /* XSUM_XXH128_testdata[2262] */ + { 754, 0x000000009E3779B1ULL, { 0x9E415E1F862289E4ULL, 0xB4D443A455379537ULL } }, /* XSUM_XXH128_testdata[2263] */ + { 754, 0x9E3779B185EBCA8DULL, { 0x50B63817B74F84EBULL, 0x2451D49CF3B180F1ULL } }, /* XSUM_XXH128_testdata[2264] */ + { 755, 0x0000000000000000ULL, { 0x38A1FCEADBD7C9B1ULL, 0x92DE3F9B265EFB95ULL } }, /* XSUM_XXH128_testdata[2265] */ + { 755, 0x000000009E3779B1ULL, { 0xE5D08B9208BB2773ULL, 0x4EB7F2E987FF04F2ULL } }, /* XSUM_XXH128_testdata[2266] */ + { 755, 0x9E3779B185EBCA8DULL, { 0x159E0FF2771D4013ULL, 0x2CF784BEB371CA92ULL } }, /* XSUM_XXH128_testdata[2267] */ + { 756, 0x0000000000000000ULL, { 0x78C7F2E16DB1BAF2ULL, 0x0AB77C4E7D089384ULL } }, /* XSUM_XXH128_testdata[2268] */ + { 756, 0x000000009E3779B1ULL, { 0x8E7622E19D1C8EC3ULL, 0xD7A1BDF46FC8A51FULL } }, /* XSUM_XXH128_testdata[2269] */ + { 756, 0x9E3779B185EBCA8DULL, { 0x11A054CB984490EEULL, 0x20E7FF258BCA5C35ULL } }, /* XSUM_XXH128_testdata[2270] */ + { 757, 0x0000000000000000ULL, { 0xCB66A77F29B9F0E6ULL, 0xD404E8B1D8791642ULL } }, /* XSUM_XXH128_testdata[2271] */ + { 757, 0x000000009E3779B1ULL, { 0xF1FE543C391F64EBULL, 0xDD6E8E2D6363C435ULL } }, /* XSUM_XXH128_testdata[2272] */ + { 757, 0x9E3779B185EBCA8DULL, { 0xE7F79D2B525A67BDULL, 0xF5B4DCD6D82EEEC0ULL } }, /* XSUM_XXH128_testdata[2273] */ + { 758, 0x0000000000000000ULL, { 0xDFBE16056C872D93ULL, 0x1AA645B1DBE60D7FULL } }, /* XSUM_XXH128_testdata[2274] */ + { 758, 0x000000009E3779B1ULL, { 0x6351D1A1A45CEBBBULL, 0x5D7610D99F5D772EULL } }, /* XSUM_XXH128_testdata[2275] */ + { 758, 0x9E3779B185EBCA8DULL, { 0x9766A2F001002D4CULL, 0x66CFA157DAB6F989ULL } }, /* XSUM_XXH128_testdata[2276] */ + { 759, 0x0000000000000000ULL, { 0xAB6F81845F5D0F86ULL, 0x077F222B47A43132ULL } }, /* XSUM_XXH128_testdata[2277] */ + { 759, 0x000000009E3779B1ULL, { 0x5DB35C25F592F68DULL, 0xB0EAF76852C59FF9ULL } }, /* XSUM_XXH128_testdata[2278] */ + { 759, 0x9E3779B185EBCA8DULL, { 0x382DEEBBAF4F431EULL, 0x3090792539905591ULL } }, /* XSUM_XXH128_testdata[2279] */ + { 760, 0x0000000000000000ULL, { 0x10C0A37BDCCD259AULL, 0x156A16EFDFA5FE28ULL } }, /* XSUM_XXH128_testdata[2280] */ + { 760, 0x000000009E3779B1ULL, { 0xF814BAC4D8E94E81ULL, 0x2052AB8FA64F56A6ULL } }, /* XSUM_XXH128_testdata[2281] */ + { 760, 0x9E3779B185EBCA8DULL, { 0xDD9BDF9CF4E59946ULL, 0x6F041A7B95A2913BULL } }, /* XSUM_XXH128_testdata[2282] */ + { 761, 0x0000000000000000ULL, { 0xF7CEBE29B198FD30ULL, 0xEAE540D048E4B85CULL } }, /* XSUM_XXH128_testdata[2283] */ + { 761, 0x000000009E3779B1ULL, { 0x651BC80E8DC4EDE4ULL, 0xADCC066258634D10ULL } }, /* XSUM_XXH128_testdata[2284] */ + { 761, 0x9E3779B185EBCA8DULL, { 0xA869E57FDB1C8060ULL, 0x4B8E4B4B4F14B116ULL } }, /* XSUM_XXH128_testdata[2285] */ + { 762, 0x0000000000000000ULL, { 0x2907C6DB629AAD4EULL, 0x8DA57FE88CE7E051ULL } }, /* XSUM_XXH128_testdata[2286] */ + { 762, 0x000000009E3779B1ULL, { 0xC6D9C93A0B1186E8ULL, 0x8ED33D65F250CF54ULL } }, /* XSUM_XXH128_testdata[2287] */ + { 762, 0x9E3779B185EBCA8DULL, { 0x76AED4086B1D9AE8ULL, 0xE5C1BE46A2AFAB39ULL } }, /* XSUM_XXH128_testdata[2288] */ + { 763, 0x0000000000000000ULL, { 0x89384DD94BF93B2CULL, 0x8C729ADADE738DB1ULL } }, /* XSUM_XXH128_testdata[2289] */ + { 763, 0x000000009E3779B1ULL, { 0x7B26E9AE2CD85C9DULL, 0x310F31FFB827B572ULL } }, /* XSUM_XXH128_testdata[2290] */ + { 763, 0x9E3779B185EBCA8DULL, { 0x48DC2511E0721282ULL, 0xED8CBBED7C81D8A0ULL } }, /* XSUM_XXH128_testdata[2291] */ + { 764, 0x0000000000000000ULL, { 0x6C584E8B8F0D56C5ULL, 0x0DB308C9F647A09FULL } }, /* XSUM_XXH128_testdata[2292] */ + { 764, 0x000000009E3779B1ULL, { 0x2443018EF6EC44F1ULL, 0xA735570BDCFB84B3ULL } }, /* XSUM_XXH128_testdata[2293] */ + { 764, 0x9E3779B185EBCA8DULL, { 0xB235C4DEC2AC7B59ULL, 0x66AD10F50DDDE597ULL } }, /* XSUM_XXH128_testdata[2294] */ + { 765, 0x0000000000000000ULL, { 0x9D329F204D5B9C7AULL, 0xA743751903AA2675ULL } }, /* XSUM_XXH128_testdata[2295] */ + { 765, 0x000000009E3779B1ULL, { 0x36A8343A75D46F0CULL, 0x97991BFCBAFCCD96ULL } }, /* XSUM_XXH128_testdata[2296] */ + { 765, 0x9E3779B185EBCA8DULL, { 0x60A6B3319C706215ULL, 0x72BA3E8792FA168AULL } }, /* XSUM_XXH128_testdata[2297] */ + { 766, 0x0000000000000000ULL, { 0x526A03E0F4B121FDULL, 0x883DB306AD7EB6B6ULL } }, /* XSUM_XXH128_testdata[2298] */ + { 766, 0x000000009E3779B1ULL, { 0x7166BF6810866778ULL, 0x3A930871CAF9487CULL } }, /* XSUM_XXH128_testdata[2299] */ + { 766, 0x9E3779B185EBCA8DULL, { 0x6B18AC32399D2335ULL, 0xEF6AF5D43424E398ULL } }, /* XSUM_XXH128_testdata[2300] */ + { 767, 0x0000000000000000ULL, { 0xA8D2D803378C6FC2ULL, 0x325E57A561D74FDBULL } }, /* XSUM_XXH128_testdata[2301] */ + { 767, 0x000000009E3779B1ULL, { 0x1697C607FC90A09DULL, 0xA2A38F31C1E6B30DULL } }, /* XSUM_XXH128_testdata[2302] */ + { 767, 0x9E3779B185EBCA8DULL, { 0x8CFC6C461EF19D9AULL, 0xBB2E7582BA2143D0ULL } }, /* XSUM_XXH128_testdata[2303] */ + { 768, 0x0000000000000000ULL, { 0x6CBE42E950F7426BULL, 0x6D0E38C5F77DEBC9ULL } }, /* XSUM_XXH128_testdata[2304] */ + { 768, 0x000000009E3779B1ULL, { 0x54F84A8AE09AD794ULL, 0x7802003617F84DB1ULL } }, /* XSUM_XXH128_testdata[2305] */ + { 768, 0x9E3779B185EBCA8DULL, { 0x641FB8CA9341034CULL, 0x5DDDEE3817DD7283ULL } }, /* XSUM_XXH128_testdata[2306] */ + { 769, 0x0000000000000000ULL, { 0x32302CBB53D45781ULL, 0x4C7F459C022F1733ULL } }, /* XSUM_XXH128_testdata[2307] */ + { 769, 0x000000009E3779B1ULL, { 0x10EC377E1BB64F84ULL, 0xDA189E5FD31237FDULL } }, /* XSUM_XXH128_testdata[2308] */ + { 769, 0x9E3779B185EBCA8DULL, { 0x46F363023665B8E2ULL, 0x36566EB7B10E2587ULL } }, /* XSUM_XXH128_testdata[2309] */ + { 770, 0x0000000000000000ULL, { 0xA7C29FBEB87D7D05ULL, 0x28D18B0655B7E48FULL } }, /* XSUM_XXH128_testdata[2310] */ + { 770, 0x000000009E3779B1ULL, { 0xDA490288B14AA423ULL, 0x136E7860C9F89739ULL } }, /* XSUM_XXH128_testdata[2311] */ + { 770, 0x9E3779B185EBCA8DULL, { 0x9EBEC5CF3343DCB9ULL, 0xE016D3A3E71E6D1AULL } }, /* XSUM_XXH128_testdata[2312] */ + { 771, 0x0000000000000000ULL, { 0xA2B5189BB35568A3ULL, 0xFEE65CA3A659F28FULL } }, /* XSUM_XXH128_testdata[2313] */ + { 771, 0x000000009E3779B1ULL, { 0x025D5789919A6003ULL, 0x9B75062080E290B5ULL } }, /* XSUM_XXH128_testdata[2314] */ + { 771, 0x9E3779B185EBCA8DULL, { 0xA02674257CE7D16FULL, 0xF85736B6C827F421ULL } }, /* XSUM_XXH128_testdata[2315] */ + { 772, 0x0000000000000000ULL, { 0xFD17411AF7196623ULL, 0x9AA54F1DE6F11F27ULL } }, /* XSUM_XXH128_testdata[2316] */ + { 772, 0x000000009E3779B1ULL, { 0xBC9E58DF7EEEE310ULL, 0x2668FDF08AF121CBULL } }, /* XSUM_XXH128_testdata[2317] */ + { 772, 0x9E3779B185EBCA8DULL, { 0x387E340E383DF06CULL, 0xDFEF203A35A41A98ULL } }, /* XSUM_XXH128_testdata[2318] */ + { 773, 0x0000000000000000ULL, { 0xF55C3823F812FC79ULL, 0x40BB9FC22F7EE513ULL } }, /* XSUM_XXH128_testdata[2319] */ + { 773, 0x000000009E3779B1ULL, { 0x8F9C16E33BD7B0A4ULL, 0xE2E4FD395A7DFD26ULL } }, /* XSUM_XXH128_testdata[2320] */ + { 773, 0x9E3779B185EBCA8DULL, { 0x4925C59F27F294A6ULL, 0x173496ED367EDD8CULL } }, /* XSUM_XXH128_testdata[2321] */ + { 774, 0x0000000000000000ULL, { 0xB6CA494D3B2F1B1CULL, 0x99946A92D6C32D45ULL } }, /* XSUM_XXH128_testdata[2322] */ + { 774, 0x000000009E3779B1ULL, { 0x7CB5AEF03D179DE9ULL, 0x7A08598C56F5B747ULL } }, /* XSUM_XXH128_testdata[2323] */ + { 774, 0x9E3779B185EBCA8DULL, { 0xF81CD4D37406771DULL, 0x85D18A177BBBCB6EULL } }, /* XSUM_XXH128_testdata[2324] */ + { 775, 0x0000000000000000ULL, { 0xECC23F92B06220D0ULL, 0x106A8D534BE26628ULL } }, /* XSUM_XXH128_testdata[2325] */ + { 775, 0x000000009E3779B1ULL, { 0x0023691C1FE9122EULL, 0xDA4FC4C4B7AAF6D5ULL } }, /* XSUM_XXH128_testdata[2326] */ + { 775, 0x9E3779B185EBCA8DULL, { 0x3948E4E207032161ULL, 0x238A9B1CF28F97D5ULL } }, /* XSUM_XXH128_testdata[2327] */ + { 776, 0x0000000000000000ULL, { 0x0221379DCD811436ULL, 0xA5E434376F1111BAULL } }, /* XSUM_XXH128_testdata[2328] */ + { 776, 0x000000009E3779B1ULL, { 0x5E07C338B071EAE7ULL, 0xDC55034017C35D52ULL } }, /* XSUM_XXH128_testdata[2329] */ + { 776, 0x9E3779B185EBCA8DULL, { 0x043D961C4F99EB6CULL, 0x867384107109AD5CULL } }, /* XSUM_XXH128_testdata[2330] */ + { 777, 0x0000000000000000ULL, { 0x26496DD8CABB9F7CULL, 0x52EA652B4E3E0F83ULL } }, /* XSUM_XXH128_testdata[2331] */ + { 777, 0x000000009E3779B1ULL, { 0x6F43DCE70578AEDDULL, 0x87021C40A28B7ACFULL } }, /* XSUM_XXH128_testdata[2332] */ + { 777, 0x9E3779B185EBCA8DULL, { 0x2EF9ADA4949E4655ULL, 0x3E1EC612490127A1ULL } }, /* XSUM_XXH128_testdata[2333] */ + { 778, 0x0000000000000000ULL, { 0xA7CEE75345E7EDD8ULL, 0x06311885E0EF7677ULL } }, /* XSUM_XXH128_testdata[2334] */ + { 778, 0x000000009E3779B1ULL, { 0x7C3CC2F6B7314554ULL, 0x0FAB200922D8ACB9ULL } }, /* XSUM_XXH128_testdata[2335] */ + { 778, 0x9E3779B185EBCA8DULL, { 0xC2AB2FAB6FB83FAEULL, 0xCE46002B6D5A18AEULL } }, /* XSUM_XXH128_testdata[2336] */ + { 779, 0x0000000000000000ULL, { 0x696C9B045F8B19CCULL, 0xABD3DFA53050F832ULL } }, /* XSUM_XXH128_testdata[2337] */ + { 779, 0x000000009E3779B1ULL, { 0x36FC2B5EAF0A2F23ULL, 0x33164E08BCC75C74ULL } }, /* XSUM_XXH128_testdata[2338] */ + { 779, 0x9E3779B185EBCA8DULL, { 0x2C184694FC2E8D5FULL, 0x8C8DC670F0B408A6ULL } }, /* XSUM_XXH128_testdata[2339] */ + { 780, 0x0000000000000000ULL, { 0x9BA5278D85378C52ULL, 0x21E47F04AD7E83F1ULL } }, /* XSUM_XXH128_testdata[2340] */ + { 780, 0x000000009E3779B1ULL, { 0x5205BA7FCCC787D8ULL, 0x27BBA803FFEC087FULL } }, /* XSUM_XXH128_testdata[2341] */ + { 780, 0x9E3779B185EBCA8DULL, { 0xEB6CBC00BCA659D7ULL, 0x04F35DB669E2489CULL } }, /* XSUM_XXH128_testdata[2342] */ + { 781, 0x0000000000000000ULL, { 0xF9184209248E82E3ULL, 0x2697CD52AA7E2EAEULL } }, /* XSUM_XXH128_testdata[2343] */ + { 781, 0x000000009E3779B1ULL, { 0xCC5E168618F9F9B1ULL, 0x87C0DC0A25B97CF6ULL } }, /* XSUM_XXH128_testdata[2344] */ + { 781, 0x9E3779B185EBCA8DULL, { 0x5F4A4AA5AEFE2931ULL, 0x595B9D6C28C3F7AAULL } }, /* XSUM_XXH128_testdata[2345] */ + { 782, 0x0000000000000000ULL, { 0x6B7FC3325D489F56ULL, 0xD6DF1132E8929C6FULL } }, /* XSUM_XXH128_testdata[2346] */ + { 782, 0x000000009E3779B1ULL, { 0xA2F1C79B33B8E31DULL, 0x5F96F2B24D929B18ULL } }, /* XSUM_XXH128_testdata[2347] */ + { 782, 0x9E3779B185EBCA8DULL, { 0xDDBFA453013EDC74ULL, 0xCAFCB5BFC150D5D7ULL } }, /* XSUM_XXH128_testdata[2348] */ + { 783, 0x0000000000000000ULL, { 0x1774F59A1F9C5338ULL, 0xA13CB4ECD3E41FA0ULL } }, /* XSUM_XXH128_testdata[2349] */ + { 783, 0x000000009E3779B1ULL, { 0xEED3BDAF87389E56ULL, 0x407A2DA864CDCE9CULL } }, /* XSUM_XXH128_testdata[2350] */ + { 783, 0x9E3779B185EBCA8DULL, { 0x0F11F6B0AFA9CC8DULL, 0xDD49EEF3E43CB473ULL } }, /* XSUM_XXH128_testdata[2351] */ + { 784, 0x0000000000000000ULL, { 0xB57CCEA58F2CC788ULL, 0x446A85C52E32B47EULL } }, /* XSUM_XXH128_testdata[2352] */ + { 784, 0x000000009E3779B1ULL, { 0x7147D8B6039B2FEFULL, 0xA3C850F9419D28D3ULL } }, /* XSUM_XXH128_testdata[2353] */ + { 784, 0x9E3779B185EBCA8DULL, { 0xD43B4680051F86E8ULL, 0x4998003422AAC518ULL } }, /* XSUM_XXH128_testdata[2354] */ + { 785, 0x0000000000000000ULL, { 0x00DC4E5CE55E70E8ULL, 0xD420F3C9201DE32FULL } }, /* XSUM_XXH128_testdata[2355] */ + { 785, 0x000000009E3779B1ULL, { 0x31758D81997CAFA0ULL, 0x604869ADCCF08EB9ULL } }, /* XSUM_XXH128_testdata[2356] */ + { 785, 0x9E3779B185EBCA8DULL, { 0x909F2A3E6FB89892ULL, 0x0F3D404C60B8962FULL } }, /* XSUM_XXH128_testdata[2357] */ + { 786, 0x0000000000000000ULL, { 0xE06ABD80AAB54EBCULL, 0x18A33A935DBB197FULL } }, /* XSUM_XXH128_testdata[2358] */ + { 786, 0x000000009E3779B1ULL, { 0x1B3B7A52D6E2A72AULL, 0xA293C725E08EF1F2ULL } }, /* XSUM_XXH128_testdata[2359] */ + { 786, 0x9E3779B185EBCA8DULL, { 0xDBD9B4BD30764A2AULL, 0x94CED9783937DFDBULL } }, /* XSUM_XXH128_testdata[2360] */ + { 787, 0x0000000000000000ULL, { 0x06FC7F68ACEA72D7ULL, 0xAE0B08BD01A3BAF1ULL } }, /* XSUM_XXH128_testdata[2361] */ + { 787, 0x000000009E3779B1ULL, { 0x76919F058C564592ULL, 0x9EDC9270D39710DBULL } }, /* XSUM_XXH128_testdata[2362] */ + { 787, 0x9E3779B185EBCA8DULL, { 0xA59443084988D4BBULL, 0xBA31A1ABB4807734ULL } }, /* XSUM_XXH128_testdata[2363] */ + { 788, 0x0000000000000000ULL, { 0x20C615B56B541F1EULL, 0x15FC9FAF0398C199ULL } }, /* XSUM_XXH128_testdata[2364] */ + { 788, 0x000000009E3779B1ULL, { 0x050E042DBEF7C7C5ULL, 0x24B40EA453391880ULL } }, /* XSUM_XXH128_testdata[2365] */ + { 788, 0x9E3779B185EBCA8DULL, { 0x0A131B8A3F37A8B5ULL, 0xE68113FE11559947ULL } }, /* XSUM_XXH128_testdata[2366] */ + { 789, 0x0000000000000000ULL, { 0x8A4F76B84730D76AULL, 0x5B52E72079C7ABCAULL } }, /* XSUM_XXH128_testdata[2367] */ + { 789, 0x000000009E3779B1ULL, { 0x77ABED9BAEFB452FULL, 0x92A500DE19F12105ULL } }, /* XSUM_XXH128_testdata[2368] */ + { 789, 0x9E3779B185EBCA8DULL, { 0x727463C5A35EAB18ULL, 0x4DFC14005746D708ULL } }, /* XSUM_XXH128_testdata[2369] */ + { 790, 0x0000000000000000ULL, { 0xB43FAECFB4DED4C6ULL, 0xD63FC75FC2751D7AULL } }, /* XSUM_XXH128_testdata[2370] */ + { 790, 0x000000009E3779B1ULL, { 0x4278BE3E3AC1B8F2ULL, 0x5D01DF61E31B7FDFULL } }, /* XSUM_XXH128_testdata[2371] */ + { 790, 0x9E3779B185EBCA8DULL, { 0x97A2FCAAF259E7F0ULL, 0x8CE6D2BEB807984EULL } }, /* XSUM_XXH128_testdata[2372] */ + { 791, 0x0000000000000000ULL, { 0x87DB4CC16F8F9834ULL, 0xE2C2AFD3143A3187ULL } }, /* XSUM_XXH128_testdata[2373] */ + { 791, 0x000000009E3779B1ULL, { 0xA4C194B780C4CB97ULL, 0x3E9E192DA6D1175AULL } }, /* XSUM_XXH128_testdata[2374] */ + { 791, 0x9E3779B185EBCA8DULL, { 0xF0ED99F6368E86B4ULL, 0x5DA0BEC30EE17490ULL } }, /* XSUM_XXH128_testdata[2375] */ + { 792, 0x0000000000000000ULL, { 0x397EC5B31E863D4EULL, 0x47F375000D3BB04BULL } }, /* XSUM_XXH128_testdata[2376] */ + { 792, 0x000000009E3779B1ULL, { 0xD73508975AFFEC34ULL, 0x667AD5489F12DB0FULL } }, /* XSUM_XXH128_testdata[2377] */ + { 792, 0x9E3779B185EBCA8DULL, { 0x4F1F799401E2560FULL, 0xB15BCEFFCDF20311ULL } }, /* XSUM_XXH128_testdata[2378] */ + { 793, 0x0000000000000000ULL, { 0x63C07847897714FAULL, 0x3D81AE845D81F35DULL } }, /* XSUM_XXH128_testdata[2379] */ + { 793, 0x000000009E3779B1ULL, { 0xB24AF67CE0F02FFCULL, 0x889F9B3BB118EFE5ULL } }, /* XSUM_XXH128_testdata[2380] */ + { 793, 0x9E3779B185EBCA8DULL, { 0xA3644EB4E9170C70ULL, 0x4AE0476CDA8E6853ULL } }, /* XSUM_XXH128_testdata[2381] */ + { 794, 0x0000000000000000ULL, { 0x0EDFD2BFC590389DULL, 0x261BE2D4701CB7C8ULL } }, /* XSUM_XXH128_testdata[2382] */ + { 794, 0x000000009E3779B1ULL, { 0x584A8E27099A08B3ULL, 0x9873818C608CF1F0ULL } }, /* XSUM_XXH128_testdata[2383] */ + { 794, 0x9E3779B185EBCA8DULL, { 0x3D759DC347BBB21CULL, 0x210DB3421D308080ULL } }, /* XSUM_XXH128_testdata[2384] */ + { 795, 0x0000000000000000ULL, { 0x1AB2EC32F024F822ULL, 0x7DF2B4E518541CD2ULL } }, /* XSUM_XXH128_testdata[2385] */ + { 795, 0x000000009E3779B1ULL, { 0x9F069E6A416B781FULL, 0xF0FCF89205E7301BULL } }, /* XSUM_XXH128_testdata[2386] */ + { 795, 0x9E3779B185EBCA8DULL, { 0x734CC4590C829DBEULL, 0xB7CF793499AAB235ULL } }, /* XSUM_XXH128_testdata[2387] */ + { 796, 0x0000000000000000ULL, { 0x5BE1AC90F9DE8DA8ULL, 0xA172972E312DE565ULL } }, /* XSUM_XXH128_testdata[2388] */ + { 796, 0x000000009E3779B1ULL, { 0xEDCDCD5D7EADEE44ULL, 0x84B32C3C82C4BEFDULL } }, /* XSUM_XXH128_testdata[2389] */ + { 796, 0x9E3779B185EBCA8DULL, { 0x78B04E7613AFD46CULL, 0x116932791D6A4CEAULL } }, /* XSUM_XXH128_testdata[2390] */ + { 797, 0x0000000000000000ULL, { 0xB4066986444208B4ULL, 0x07107CC0D6333BE6ULL } }, /* XSUM_XXH128_testdata[2391] */ + { 797, 0x000000009E3779B1ULL, { 0x3F4830B58F326B07ULL, 0x24D267266E7EC82DULL } }, /* XSUM_XXH128_testdata[2392] */ + { 797, 0x9E3779B185EBCA8DULL, { 0xEEA265C3C3AFDD45ULL, 0x4ADFD52211708C41ULL } }, /* XSUM_XXH128_testdata[2393] */ + { 798, 0x0000000000000000ULL, { 0x1815460B80B6EB6CULL, 0xE4E1E44EB8B8F8E7ULL } }, /* XSUM_XXH128_testdata[2394] */ + { 798, 0x000000009E3779B1ULL, { 0x685A32F31A9B498AULL, 0x1BA406E58871707AULL } }, /* XSUM_XXH128_testdata[2395] */ + { 798, 0x9E3779B185EBCA8DULL, { 0x3C89DBB3A59579F1ULL, 0xF607F4E73801D667ULL } }, /* XSUM_XXH128_testdata[2396] */ + { 799, 0x0000000000000000ULL, { 0x86BB41D5B99C19DCULL, 0x6FDB1E8BDC9DC1F5ULL } }, /* XSUM_XXH128_testdata[2397] */ + { 799, 0x000000009E3779B1ULL, { 0xB41876E986544071ULL, 0xBBE27021B06BE0DBULL } }, /* XSUM_XXH128_testdata[2398] */ + { 799, 0x9E3779B185EBCA8DULL, { 0x5501F8646ADF4F5DULL, 0xD95E5C4A90DC6C47ULL } }, /* XSUM_XXH128_testdata[2399] */ + { 800, 0x0000000000000000ULL, { 0x5B095CEB58C8784CULL, 0x092284E7FC3618F2ULL } }, /* XSUM_XXH128_testdata[2400] */ + { 800, 0x000000009E3779B1ULL, { 0xE002EF91E4206F43ULL, 0x85DDFC84FAE03E51ULL } }, /* XSUM_XXH128_testdata[2401] */ + { 800, 0x9E3779B185EBCA8DULL, { 0x643775681D53EF59ULL, 0xB432695A80C278DCULL } }, /* XSUM_XXH128_testdata[2402] */ + { 801, 0x0000000000000000ULL, { 0x2F828D114D494E29ULL, 0xCEADC91DA69FC1D0ULL } }, /* XSUM_XXH128_testdata[2403] */ + { 801, 0x000000009E3779B1ULL, { 0x3BC0EE8314902BB3ULL, 0x1AF62A5DD1FCA108ULL } }, /* XSUM_XXH128_testdata[2404] */ + { 801, 0x9E3779B185EBCA8DULL, { 0x4EB392F9A436ECE5ULL, 0xB98C15D319EFEC73ULL } }, /* XSUM_XXH128_testdata[2405] */ + { 802, 0x0000000000000000ULL, { 0x846819585B282067ULL, 0x2CDAD32723AEBFE3ULL } }, /* XSUM_XXH128_testdata[2406] */ + { 802, 0x000000009E3779B1ULL, { 0xF66344EE564A1711ULL, 0xF9D3909172A1C582ULL } }, /* XSUM_XXH128_testdata[2407] */ + { 802, 0x9E3779B185EBCA8DULL, { 0xF0838E955138892DULL, 0x7EA95E1716AF7B79ULL } }, /* XSUM_XXH128_testdata[2408] */ + { 803, 0x0000000000000000ULL, { 0x4812CC768ECBB73FULL, 0xBB40A29A79CFF82DULL } }, /* XSUM_XXH128_testdata[2409] */ + { 803, 0x000000009E3779B1ULL, { 0x1712CCC0B0CC182DULL, 0xFE4A3E2B65BD76B8ULL } }, /* XSUM_XXH128_testdata[2410] */ + { 803, 0x9E3779B185EBCA8DULL, { 0x374E89D7FA22ECD4ULL, 0x20BE39847D478A69ULL } }, /* XSUM_XXH128_testdata[2411] */ + { 804, 0x0000000000000000ULL, { 0x22137EFB3AC27524ULL, 0xA2D3BBF153F0B68FULL } }, /* XSUM_XXH128_testdata[2412] */ + { 804, 0x000000009E3779B1ULL, { 0xE715EB2F898B8298ULL, 0x52FB4C05A8F02F4CULL } }, /* XSUM_XXH128_testdata[2413] */ + { 804, 0x9E3779B185EBCA8DULL, { 0xE836C6165D3830FEULL, 0xFA39467E065FB565ULL } }, /* XSUM_XXH128_testdata[2414] */ + { 805, 0x0000000000000000ULL, { 0xB4BB8B42141FA5D0ULL, 0xAC01FEACBAFB368FULL } }, /* XSUM_XXH128_testdata[2415] */ + { 805, 0x000000009E3779B1ULL, { 0xCE0A27979DC38886ULL, 0x6D095809704B36C9ULL } }, /* XSUM_XXH128_testdata[2416] */ + { 805, 0x9E3779B185EBCA8DULL, { 0x0E55700B1E667558ULL, 0x0C71AE48202CF9D2ULL } }, /* XSUM_XXH128_testdata[2417] */ + { 806, 0x0000000000000000ULL, { 0x6D4EF8C4EC4075E2ULL, 0x991DA24A99C37D6EULL } }, /* XSUM_XXH128_testdata[2418] */ + { 806, 0x000000009E3779B1ULL, { 0xE68BAC28281324A9ULL, 0xDE64EB2441D6AD0CULL } }, /* XSUM_XXH128_testdata[2419] */ + { 806, 0x9E3779B185EBCA8DULL, { 0x934F16B568FE179AULL, 0x144A11908437428FULL } }, /* XSUM_XXH128_testdata[2420] */ + { 807, 0x0000000000000000ULL, { 0x206A0792F4FCCCACULL, 0xB5E7BF6175DD298BULL } }, /* XSUM_XXH128_testdata[2421] */ + { 807, 0x000000009E3779B1ULL, { 0xB05BBFF7382B2E99ULL, 0xD6A7D98E08891C4AULL } }, /* XSUM_XXH128_testdata[2422] */ + { 807, 0x9E3779B185EBCA8DULL, { 0xEB6796CE25E33E6AULL, 0xAAB4B5C30646E72BULL } }, /* XSUM_XXH128_testdata[2423] */ + { 808, 0x0000000000000000ULL, { 0x68957C67C4333426ULL, 0xB5A0C9213A755E74ULL } }, /* XSUM_XXH128_testdata[2424] */ + { 808, 0x000000009E3779B1ULL, { 0x860DD08D1DAD795AULL, 0xD19448F56AF6C575ULL } }, /* XSUM_XXH128_testdata[2425] */ + { 808, 0x9E3779B185EBCA8DULL, { 0x9E97369B7C0A90F1ULL, 0xB3E16455CEE4D199ULL } }, /* XSUM_XXH128_testdata[2426] */ + { 809, 0x0000000000000000ULL, { 0xC17753BA8D4E5CB2ULL, 0xC159766761B16712ULL } }, /* XSUM_XXH128_testdata[2427] */ + { 809, 0x000000009E3779B1ULL, { 0x0637FD69EA98AB4BULL, 0x21FE27B1B59C4B76ULL } }, /* XSUM_XXH128_testdata[2428] */ + { 809, 0x9E3779B185EBCA8DULL, { 0xDCC4A9FD8373CA8AULL, 0x69A41D4CCB69382AULL } }, /* XSUM_XXH128_testdata[2429] */ + { 810, 0x0000000000000000ULL, { 0x8A616D90630A4988ULL, 0x95DDFC95C7223C72ULL } }, /* XSUM_XXH128_testdata[2430] */ + { 810, 0x000000009E3779B1ULL, { 0x1937EDAE582BA44DULL, 0xBBED7C040B8BAA0FULL } }, /* XSUM_XXH128_testdata[2431] */ + { 810, 0x9E3779B185EBCA8DULL, { 0x2144D13C73C4CA74ULL, 0xBE7479E3656DC3CBULL } }, /* XSUM_XXH128_testdata[2432] */ + { 811, 0x0000000000000000ULL, { 0x536C6DCDFFD6E969ULL, 0x56A02BEBC8F0A826ULL } }, /* XSUM_XXH128_testdata[2433] */ + { 811, 0x000000009E3779B1ULL, { 0x981B330DD97938A6ULL, 0xAA5CBE9C42C83218ULL } }, /* XSUM_XXH128_testdata[2434] */ + { 811, 0x9E3779B185EBCA8DULL, { 0xAF2825AFCA7BB3D0ULL, 0xC9C1D42B23D45777ULL } }, /* XSUM_XXH128_testdata[2435] */ + { 812, 0x0000000000000000ULL, { 0xD7A63BB3914CD718ULL, 0xCDCDB7E8EA3933BDULL } }, /* XSUM_XXH128_testdata[2436] */ + { 812, 0x000000009E3779B1ULL, { 0x1E95F447999E75CFULL, 0x6040CD9154D1DFC1ULL } }, /* XSUM_XXH128_testdata[2437] */ + { 812, 0x9E3779B185EBCA8DULL, { 0x427AC245CBD3B44CULL, 0xF359E4FBB19C98B2ULL } }, /* XSUM_XXH128_testdata[2438] */ + { 813, 0x0000000000000000ULL, { 0x9528DE76FF428FFFULL, 0x6170F00AEB57581AULL } }, /* XSUM_XXH128_testdata[2439] */ + { 813, 0x000000009E3779B1ULL, { 0xF8CF7EE78A7F039AULL, 0x08DA7AE133FD9807ULL } }, /* XSUM_XXH128_testdata[2440] */ + { 813, 0x9E3779B185EBCA8DULL, { 0x1E230E5B3323E74AULL, 0xA64209F04AE75F05ULL } }, /* XSUM_XXH128_testdata[2441] */ + { 814, 0x0000000000000000ULL, { 0x849CACB6C4106DDFULL, 0xEDF23CE6B11B9B8EULL } }, /* XSUM_XXH128_testdata[2442] */ + { 814, 0x000000009E3779B1ULL, { 0xF207B3FCF38CD894ULL, 0x0CB104872DDDB9CDULL } }, /* XSUM_XXH128_testdata[2443] */ + { 814, 0x9E3779B185EBCA8DULL, { 0x553BE499122C7C0CULL, 0x0BC38DCFDC68EBEBULL } }, /* XSUM_XXH128_testdata[2444] */ + { 815, 0x0000000000000000ULL, { 0x0D5B97EB8BBB2507ULL, 0x0A29903501092EA4ULL } }, /* XSUM_XXH128_testdata[2445] */ + { 815, 0x000000009E3779B1ULL, { 0x6590222D8A1C2D67ULL, 0x303CF866A3BA2901ULL } }, /* XSUM_XXH128_testdata[2446] */ + { 815, 0x9E3779B185EBCA8DULL, { 0xC342A288F90B93BBULL, 0x151A996B761C918EULL } }, /* XSUM_XXH128_testdata[2447] */ + { 816, 0x0000000000000000ULL, { 0xBF54F04EDDCA5768ULL, 0x83B3BD7EFDA686ADULL } }, /* XSUM_XXH128_testdata[2448] */ + { 816, 0x000000009E3779B1ULL, { 0x7096FC66D0A70114ULL, 0xC6BFE2EF705C3EF8ULL } }, /* XSUM_XXH128_testdata[2449] */ + { 816, 0x9E3779B185EBCA8DULL, { 0x7770F5499A4E0728ULL, 0x3C3FCA72C2AEFA58ULL } }, /* XSUM_XXH128_testdata[2450] */ + { 817, 0x0000000000000000ULL, { 0xD91C52C448D3CA0DULL, 0xCCAA506B39909D0BULL } }, /* XSUM_XXH128_testdata[2451] */ + { 817, 0x000000009E3779B1ULL, { 0x6399495D9AD14B7EULL, 0x33F3C07A7B23C3B4ULL } }, /* XSUM_XXH128_testdata[2452] */ + { 817, 0x9E3779B185EBCA8DULL, { 0x45F34B3A94984950ULL, 0x95DBD4FF26BCBFDEULL } }, /* XSUM_XXH128_testdata[2453] */ + { 818, 0x0000000000000000ULL, { 0x4EBDCA54797F28FCULL, 0x602A512876C506AEULL } }, /* XSUM_XXH128_testdata[2454] */ + { 818, 0x000000009E3779B1ULL, { 0xBF072D3DDBA6B700ULL, 0x36BD81F8C8F99FCBULL } }, /* XSUM_XXH128_testdata[2455] */ + { 818, 0x9E3779B185EBCA8DULL, { 0x9C760841EAEFFDC9ULL, 0x505FA2B298407D74ULL } }, /* XSUM_XXH128_testdata[2456] */ + { 819, 0x0000000000000000ULL, { 0xF70945EB101515BFULL, 0x6D93DA67E807B690ULL } }, /* XSUM_XXH128_testdata[2457] */ + { 819, 0x000000009E3779B1ULL, { 0x289DCFBE8002A899ULL, 0x573563B16FEF09CDULL } }, /* XSUM_XXH128_testdata[2458] */ + { 819, 0x9E3779B185EBCA8DULL, { 0xB227D91F6B12C133ULL, 0xE64E577C0BA99C73ULL } }, /* XSUM_XXH128_testdata[2459] */ + { 820, 0x0000000000000000ULL, { 0xCDC89E5577C1A2A8ULL, 0x83CD4B9FFDC0DD45ULL } }, /* XSUM_XXH128_testdata[2460] */ + { 820, 0x000000009E3779B1ULL, { 0xB3904083E6A540D2ULL, 0x09855705078686D1ULL } }, /* XSUM_XXH128_testdata[2461] */ + { 820, 0x9E3779B185EBCA8DULL, { 0xEEAC670EA532F45EULL, 0xA485BECC3DF2B67AULL } }, /* XSUM_XXH128_testdata[2462] */ + { 821, 0x0000000000000000ULL, { 0x344199F7B654360DULL, 0x4BCFAA1617EED863ULL } }, /* XSUM_XXH128_testdata[2463] */ + { 821, 0x000000009E3779B1ULL, { 0x2968EF1E91C57A06ULL, 0xF658DD897C7FE73BULL } }, /* XSUM_XXH128_testdata[2464] */ + { 821, 0x9E3779B185EBCA8DULL, { 0x0A9B5D01499EC0CAULL, 0xA418273A3693018CULL } }, /* XSUM_XXH128_testdata[2465] */ + { 822, 0x0000000000000000ULL, { 0x5A5531E107B85BC4ULL, 0x6B3CC312C9BBEEC4ULL } }, /* XSUM_XXH128_testdata[2466] */ + { 822, 0x000000009E3779B1ULL, { 0x322A9CFD55AF48A2ULL, 0x6EE918E1D4EA1608ULL } }, /* XSUM_XXH128_testdata[2467] */ + { 822, 0x9E3779B185EBCA8DULL, { 0x6128B1D109BA73D5ULL, 0x16C4CD1836E15A14ULL } }, /* XSUM_XXH128_testdata[2468] */ + { 823, 0x0000000000000000ULL, { 0x8880C79B625256F8ULL, 0xB6C59CF5555CFD03ULL } }, /* XSUM_XXH128_testdata[2469] */ + { 823, 0x000000009E3779B1ULL, { 0xCB6CE4CFB8CE9186ULL, 0x256C22FC526D6FB3ULL } }, /* XSUM_XXH128_testdata[2470] */ + { 823, 0x9E3779B185EBCA8DULL, { 0xFF6BE9029AE0895CULL, 0x9C1ED08B67FD143AULL } }, /* XSUM_XXH128_testdata[2471] */ + { 824, 0x0000000000000000ULL, { 0x4147D273F26FE781ULL, 0xF2C1EC7487EB8ABEULL } }, /* XSUM_XXH128_testdata[2472] */ + { 824, 0x000000009E3779B1ULL, { 0x83DA33D0FA318A71ULL, 0x043C573EB128B764ULL } }, /* XSUM_XXH128_testdata[2473] */ + { 824, 0x9E3779B185EBCA8DULL, { 0x618098027E17A0A0ULL, 0x67A271042DDBF51DULL } }, /* XSUM_XXH128_testdata[2474] */ + { 825, 0x0000000000000000ULL, { 0x160D37087AB92A86ULL, 0x62DF8F0744D821FDULL } }, /* XSUM_XXH128_testdata[2475] */ + { 825, 0x000000009E3779B1ULL, { 0x89676DB58A4AEC92ULL, 0x22387C1A63736E45ULL } }, /* XSUM_XXH128_testdata[2476] */ + { 825, 0x9E3779B185EBCA8DULL, { 0x1C9796C8BE1CCBEFULL, 0x77B035DA8DBE63B5ULL } }, /* XSUM_XXH128_testdata[2477] */ + { 826, 0x0000000000000000ULL, { 0xACD13537639F6E2CULL, 0xD608F2186C271E96ULL } }, /* XSUM_XXH128_testdata[2478] */ + { 826, 0x000000009E3779B1ULL, { 0x8E5AA11ADD6E3F66ULL, 0x3131C6FEDC421779ULL } }, /* XSUM_XXH128_testdata[2479] */ + { 826, 0x9E3779B185EBCA8DULL, { 0xA9A04297D3F6EE2AULL, 0x82FFABE55346EC3BULL } }, /* XSUM_XXH128_testdata[2480] */ + { 827, 0x0000000000000000ULL, { 0xD35377738FD403A5ULL, 0xEB51BD58FB72500BULL } }, /* XSUM_XXH128_testdata[2481] */ + { 827, 0x000000009E3779B1ULL, { 0xD725B02E944F05A1ULL, 0x6499B1FAD5180EE9ULL } }, /* XSUM_XXH128_testdata[2482] */ + { 827, 0x9E3779B185EBCA8DULL, { 0x082EBC1AAA053BFDULL, 0x57305BE5CC1A6573ULL } }, /* XSUM_XXH128_testdata[2483] */ + { 828, 0x0000000000000000ULL, { 0x2E9D98BE64D509E1ULL, 0x81BBBC5F894397B4ULL } }, /* XSUM_XXH128_testdata[2484] */ + { 828, 0x000000009E3779B1ULL, { 0x64F868BE972D858CULL, 0x7512B69CCD93D2EBULL } }, /* XSUM_XXH128_testdata[2485] */ + { 828, 0x9E3779B185EBCA8DULL, { 0x53E88588AF191AF0ULL, 0x84B698338B16CC75ULL } }, /* XSUM_XXH128_testdata[2486] */ + { 829, 0x0000000000000000ULL, { 0x345221D1DF80DE65ULL, 0xBEEAE8DC89B593CCULL } }, /* XSUM_XXH128_testdata[2487] */ + { 829, 0x000000009E3779B1ULL, { 0x3D7857F9FB1F6EE5ULL, 0xA2FE43C7385CDDA9ULL } }, /* XSUM_XXH128_testdata[2488] */ + { 829, 0x9E3779B185EBCA8DULL, { 0xF6A17453C43DF45EULL, 0x5247943F3EA1CB99ULL } }, /* XSUM_XXH128_testdata[2489] */ + { 830, 0x0000000000000000ULL, { 0x9BA2617F5A684FABULL, 0x838CBA651A9977C3ULL } }, /* XSUM_XXH128_testdata[2490] */ + { 830, 0x000000009E3779B1ULL, { 0x2DC3571019F5D0D2ULL, 0xF5C3619DFC5675A4ULL } }, /* XSUM_XXH128_testdata[2491] */ + { 830, 0x9E3779B185EBCA8DULL, { 0x898EDE976C4053FAULL, 0xB295623771226C3FULL } }, /* XSUM_XXH128_testdata[2492] */ + { 831, 0x0000000000000000ULL, { 0x61B8D4254F92B112ULL, 0x8752EBE3682E552FULL } }, /* XSUM_XXH128_testdata[2493] */ + { 831, 0x000000009E3779B1ULL, { 0xA27AFC3653973BBAULL, 0x5D8FA6B24CF39B5EULL } }, /* XSUM_XXH128_testdata[2494] */ + { 831, 0x9E3779B185EBCA8DULL, { 0xDBA75D8F1D69BB43ULL, 0x8502DA15A107E20AULL } }, /* XSUM_XXH128_testdata[2495] */ + { 832, 0x0000000000000000ULL, { 0xAFE6259BB7E82719ULL, 0x177859E705C64565ULL } }, /* XSUM_XXH128_testdata[2496] */ + { 832, 0x000000009E3779B1ULL, { 0xD4A04F81E02EA5D6ULL, 0xBDBC71F8635E1EBDULL } }, /* XSUM_XXH128_testdata[2497] */ + { 832, 0x9E3779B185EBCA8DULL, { 0xE3114F2B93221DA1ULL, 0x00E699FFB24FED6AULL } }, /* XSUM_XXH128_testdata[2498] */ + { 833, 0x0000000000000000ULL, { 0x90A398DB62F4700AULL, 0xE63E1B8C9A4582CEULL } }, /* XSUM_XXH128_testdata[2499] */ + { 833, 0x000000009E3779B1ULL, { 0xE60CF9BBD1DCD94FULL, 0x6A79CCF4393553A3ULL } }, /* XSUM_XXH128_testdata[2500] */ + { 833, 0x9E3779B185EBCA8DULL, { 0x22B16D152E53363BULL, 0x68C7215B8D644C23ULL } }, /* XSUM_XXH128_testdata[2501] */ + { 834, 0x0000000000000000ULL, { 0x1D102D3B3A811A53ULL, 0xE8E9495E8B45B8E2ULL } }, /* XSUM_XXH128_testdata[2502] */ + { 834, 0x000000009E3779B1ULL, { 0xC30439B81E0E69B5ULL, 0x9CDE24709A3B80A1ULL } }, /* XSUM_XXH128_testdata[2503] */ + { 834, 0x9E3779B185EBCA8DULL, { 0x9B504609CE528AEBULL, 0x34392D61306FEC74ULL } }, /* XSUM_XXH128_testdata[2504] */ + { 835, 0x0000000000000000ULL, { 0xEFEB7FECE3799DD9ULL, 0x74EA824B9082273FULL } }, /* XSUM_XXH128_testdata[2505] */ + { 835, 0x000000009E3779B1ULL, { 0x67ABF015287E53DEULL, 0xB07D4BFB621779A3ULL } }, /* XSUM_XXH128_testdata[2506] */ + { 835, 0x9E3779B185EBCA8DULL, { 0x050797525A33E488ULL, 0xEEB5E98A70C12F16ULL } }, /* XSUM_XXH128_testdata[2507] */ + { 836, 0x0000000000000000ULL, { 0x78FB3B11A836CE75ULL, 0x71199ED5CCF1AD80ULL } }, /* XSUM_XXH128_testdata[2508] */ + { 836, 0x000000009E3779B1ULL, { 0x83B0E8EEA78FAFE0ULL, 0x284A5EC009C124CAULL } }, /* XSUM_XXH128_testdata[2509] */ + { 836, 0x9E3779B185EBCA8DULL, { 0xD192EB96418DC6DBULL, 0xA53281D7BD15AC92ULL } }, /* XSUM_XXH128_testdata[2510] */ + { 837, 0x0000000000000000ULL, { 0x4D88D78137833F01ULL, 0xC5D0FE5FC18A3647ULL } }, /* XSUM_XXH128_testdata[2511] */ + { 837, 0x000000009E3779B1ULL, { 0xA18F8B8E86AF6FF4ULL, 0x5A87AD6A00A2E49AULL } }, /* XSUM_XXH128_testdata[2512] */ + { 837, 0x9E3779B185EBCA8DULL, { 0x09D6DAEDC3A0869CULL, 0x50BDDF52E4398D37ULL } }, /* XSUM_XXH128_testdata[2513] */ + { 838, 0x0000000000000000ULL, { 0x4BD49C3A51933BE0ULL, 0x1FEDE71784458EC7ULL } }, /* XSUM_XXH128_testdata[2514] */ + { 838, 0x000000009E3779B1ULL, { 0x80B930D3FEE0F5BCULL, 0x17F438B48D57E0DCULL } }, /* XSUM_XXH128_testdata[2515] */ + { 838, 0x9E3779B185EBCA8DULL, { 0x58930BCAE3E3A184ULL, 0x48B0EE27FD4633ABULL } }, /* XSUM_XXH128_testdata[2516] */ + { 839, 0x0000000000000000ULL, { 0x54F7F848A1913FF5ULL, 0xED99E9CDCF50F472ULL } }, /* XSUM_XXH128_testdata[2517] */ + { 839, 0x000000009E3779B1ULL, { 0x8ACBEF35FD79B4A3ULL, 0xDCB767F2515D7F04ULL } }, /* XSUM_XXH128_testdata[2518] */ + { 839, 0x9E3779B185EBCA8DULL, { 0x33ABE251569EB133ULL, 0x677372E072E9CCFFULL } }, /* XSUM_XXH128_testdata[2519] */ + { 840, 0x0000000000000000ULL, { 0x106712127B9D230CULL, 0xF7CC184662D6A2A7ULL } }, /* XSUM_XXH128_testdata[2520] */ + { 840, 0x000000009E3779B1ULL, { 0x0398D8E9706EA0CBULL, 0x66214271CF4072F2ULL } }, /* XSUM_XXH128_testdata[2521] */ + { 840, 0x9E3779B185EBCA8DULL, { 0xB5E8BC576AEA8BA4ULL, 0x2DE36392F2FD80AAULL } }, /* XSUM_XXH128_testdata[2522] */ + { 841, 0x0000000000000000ULL, { 0x18070CF1879F1977ULL, 0xDB67D1D1E2997ACEULL } }, /* XSUM_XXH128_testdata[2523] */ + { 841, 0x000000009E3779B1ULL, { 0x0389232E02F28E86ULL, 0xBFC31C52B5107FC0ULL } }, /* XSUM_XXH128_testdata[2524] */ + { 841, 0x9E3779B185EBCA8DULL, { 0x1FADBB600D162135ULL, 0xA14568792EAF8886ULL } }, /* XSUM_XXH128_testdata[2525] */ + { 842, 0x0000000000000000ULL, { 0x83397F11D484A571ULL, 0xB6B2354A9A806EA0ULL } }, /* XSUM_XXH128_testdata[2526] */ + { 842, 0x000000009E3779B1ULL, { 0x92E67EC92622CB48ULL, 0x770E54291885A339ULL } }, /* XSUM_XXH128_testdata[2527] */ + { 842, 0x9E3779B185EBCA8DULL, { 0x9EFF0FD8F3152F8AULL, 0x0CD70F204F0228B4ULL } }, /* XSUM_XXH128_testdata[2528] */ + { 843, 0x0000000000000000ULL, { 0xCE992E147CE99E40ULL, 0xE7F02BAFDE0DCFC0ULL } }, /* XSUM_XXH128_testdata[2529] */ + { 843, 0x000000009E3779B1ULL, { 0x9FA4E35106BF597AULL, 0x6676326BB80FC98EULL } }, /* XSUM_XXH128_testdata[2530] */ + { 843, 0x9E3779B185EBCA8DULL, { 0x641FEE7F734F5C28ULL, 0x195EE19409BE5647ULL } }, /* XSUM_XXH128_testdata[2531] */ + { 844, 0x0000000000000000ULL, { 0x136A5AD87FB1F3C5ULL, 0x8393D5D5B44A5502ULL } }, /* XSUM_XXH128_testdata[2532] */ + { 844, 0x000000009E3779B1ULL, { 0x17D3E9D57101A426ULL, 0x1A8DF2CEB73C2E8BULL } }, /* XSUM_XXH128_testdata[2533] */ + { 844, 0x9E3779B185EBCA8DULL, { 0xBF94331CE9448890ULL, 0xB6E607F32DACBDBEULL } }, /* XSUM_XXH128_testdata[2534] */ + { 845, 0x0000000000000000ULL, { 0x7F01AB2D9DF65DC3ULL, 0xF7D4FF82DFE46828ULL } }, /* XSUM_XXH128_testdata[2535] */ + { 845, 0x000000009E3779B1ULL, { 0x0A77C1652147741BULL, 0xC66EA49E00FA6268ULL } }, /* XSUM_XXH128_testdata[2536] */ + { 845, 0x9E3779B185EBCA8DULL, { 0x5EED94F76EB3A6C8ULL, 0xD0C83DC0F999BE15ULL } }, /* XSUM_XXH128_testdata[2537] */ + { 846, 0x0000000000000000ULL, { 0x4F0DF98A62744869ULL, 0x89C605025F8D7DC9ULL } }, /* XSUM_XXH128_testdata[2538] */ + { 846, 0x000000009E3779B1ULL, { 0xF4A4A16732C7EF30ULL, 0x2EF3E728ED0BBBBFULL } }, /* XSUM_XXH128_testdata[2539] */ + { 846, 0x9E3779B185EBCA8DULL, { 0xFD4DE9380591A06EULL, 0x57BCC5A88207831CULL } }, /* XSUM_XXH128_testdata[2540] */ + { 847, 0x0000000000000000ULL, { 0x9F0A5D405E382663ULL, 0x813A061D7B40E592ULL } }, /* XSUM_XXH128_testdata[2541] */ + { 847, 0x000000009E3779B1ULL, { 0xD10EE835D2BE4F38ULL, 0x69160AC252494617ULL } }, /* XSUM_XXH128_testdata[2542] */ + { 847, 0x9E3779B185EBCA8DULL, { 0xE47F9D04CD36BBADULL, 0x3C396C2CB51A78B8ULL } }, /* XSUM_XXH128_testdata[2543] */ + { 848, 0x0000000000000000ULL, { 0x180BB00A39D5EC5AULL, 0xA8B4E30FAD79609CULL } }, /* XSUM_XXH128_testdata[2544] */ + { 848, 0x000000009E3779B1ULL, { 0xE60C36CDCD3B9585ULL, 0xDA1A3EBC69523010ULL } }, /* XSUM_XXH128_testdata[2545] */ + { 848, 0x9E3779B185EBCA8DULL, { 0xDE5A14F15157E51EULL, 0x5C76305A556C8CDAULL } }, /* XSUM_XXH128_testdata[2546] */ + { 849, 0x0000000000000000ULL, { 0xF4BE363521B6A2C6ULL, 0xD124A3A4DCB6CECEULL } }, /* XSUM_XXH128_testdata[2547] */ + { 849, 0x000000009E3779B1ULL, { 0xF64C69E6DBBB8CD1ULL, 0x9A763141F310088CULL } }, /* XSUM_XXH128_testdata[2548] */ + { 849, 0x9E3779B185EBCA8DULL, { 0x8D1797C2052BFE82ULL, 0x91B60FC21111D63BULL } }, /* XSUM_XXH128_testdata[2549] */ + { 850, 0x0000000000000000ULL, { 0x86C780FD0CE8BF78ULL, 0x3CDD2401B6549372ULL } }, /* XSUM_XXH128_testdata[2550] */ + { 850, 0x000000009E3779B1ULL, { 0xA3EAFD4F99A6BA0DULL, 0x89F370FA182C9503ULL } }, /* XSUM_XXH128_testdata[2551] */ + { 850, 0x9E3779B185EBCA8DULL, { 0xAD01A1D5CC629CD5ULL, 0x6FA64D316A50912DULL } }, /* XSUM_XXH128_testdata[2552] */ + { 851, 0x0000000000000000ULL, { 0xB3F7DB8C1B281BFDULL, 0x35641763A4D3687FULL } }, /* XSUM_XXH128_testdata[2553] */ + { 851, 0x000000009E3779B1ULL, { 0x1A5E73C297F7E274ULL, 0x7D31F37D9A00E59BULL } }, /* XSUM_XXH128_testdata[2554] */ + { 851, 0x9E3779B185EBCA8DULL, { 0x3E0C5DC2505E9FEEULL, 0xFA8E38B7A40F3E34ULL } }, /* XSUM_XXH128_testdata[2555] */ + { 852, 0x0000000000000000ULL, { 0xF921BC2813B654C5ULL, 0xF19526746958A759ULL } }, /* XSUM_XXH128_testdata[2556] */ + { 852, 0x000000009E3779B1ULL, { 0x5853E01D4E4F87AEULL, 0x372CFEE7373C2398ULL } }, /* XSUM_XXH128_testdata[2557] */ + { 852, 0x9E3779B185EBCA8DULL, { 0xE1ABC48311801DE5ULL, 0x7CF24FD4CE81A13EULL } }, /* XSUM_XXH128_testdata[2558] */ + { 853, 0x0000000000000000ULL, { 0xAC60F24E6BB9314CULL, 0xBBF8FDAA0A87464BULL } }, /* XSUM_XXH128_testdata[2559] */ + { 853, 0x000000009E3779B1ULL, { 0xFF831F0D1275CEE4ULL, 0x7E3A7FC503329D31ULL } }, /* XSUM_XXH128_testdata[2560] */ + { 853, 0x9E3779B185EBCA8DULL, { 0x8323286894810D00ULL, 0x8128A03177BDF907ULL } }, /* XSUM_XXH128_testdata[2561] */ + { 854, 0x0000000000000000ULL, { 0x22731EEACE036B70ULL, 0xB85DEEFEF798508CULL } }, /* XSUM_XXH128_testdata[2562] */ + { 854, 0x000000009E3779B1ULL, { 0x6857732344EF70BBULL, 0x95D1C3D57367B3CFULL } }, /* XSUM_XXH128_testdata[2563] */ + { 854, 0x9E3779B185EBCA8DULL, { 0x53111315216E6E05ULL, 0x11B1D2ADD009CD9CULL } }, /* XSUM_XXH128_testdata[2564] */ + { 855, 0x0000000000000000ULL, { 0xAEC9AAF7BD2AF359ULL, 0x10768506724476EAULL } }, /* XSUM_XXH128_testdata[2565] */ + { 855, 0x000000009E3779B1ULL, { 0x379A4BAC9E694024ULL, 0x63E9BD7094D825DCULL } }, /* XSUM_XXH128_testdata[2566] */ + { 855, 0x9E3779B185EBCA8DULL, { 0x2AB74C5CFD15B3AEULL, 0x6C6231EAD8B9BCABULL } }, /* XSUM_XXH128_testdata[2567] */ + { 856, 0x0000000000000000ULL, { 0x2205D490BEBCC708ULL, 0x970EC8B27BA2E144ULL } }, /* XSUM_XXH128_testdata[2568] */ + { 856, 0x000000009E3779B1ULL, { 0x5DF5CA2887655AE3ULL, 0x4D809843EDD2FC7FULL } }, /* XSUM_XXH128_testdata[2569] */ + { 856, 0x9E3779B185EBCA8DULL, { 0x311BB4AC9FB9FD3EULL, 0x0C5C3430F938526DULL } }, /* XSUM_XXH128_testdata[2570] */ + { 857, 0x0000000000000000ULL, { 0xA2DDF9996C06CB02ULL, 0xBD9BAC635A0B23E6ULL } }, /* XSUM_XXH128_testdata[2571] */ + { 857, 0x000000009E3779B1ULL, { 0x4BFFB50063ACEF06ULL, 0x1ABE7428777E0131ULL } }, /* XSUM_XXH128_testdata[2572] */ + { 857, 0x9E3779B185EBCA8DULL, { 0x57E4EC23A8A1ACCBULL, 0xA4F71EC627F62EC1ULL } }, /* XSUM_XXH128_testdata[2573] */ + { 858, 0x0000000000000000ULL, { 0x8DB85910823CCFF9ULL, 0x11FCAB1BA2F44495ULL } }, /* XSUM_XXH128_testdata[2574] */ + { 858, 0x000000009E3779B1ULL, { 0x254000E118809C2CULL, 0x3E9C939E7F1BAB9BULL } }, /* XSUM_XXH128_testdata[2575] */ + { 858, 0x9E3779B185EBCA8DULL, { 0x3360E621581CB408ULL, 0x2C3917B04B94CB56ULL } }, /* XSUM_XXH128_testdata[2576] */ + { 859, 0x0000000000000000ULL, { 0x0020D5DDB96FF188ULL, 0x6AA1E1543E1BB1CDULL } }, /* XSUM_XXH128_testdata[2577] */ + { 859, 0x000000009E3779B1ULL, { 0x56FCE48650440CF6ULL, 0xCD5AE5323E288378ULL } }, /* XSUM_XXH128_testdata[2578] */ + { 859, 0x9E3779B185EBCA8DULL, { 0x32D27A0B45A43231ULL, 0x3290AB1815C3F1E1ULL } }, /* XSUM_XXH128_testdata[2579] */ + { 860, 0x0000000000000000ULL, { 0x6E0260DD43742DF4ULL, 0x77781054CEA1D510ULL } }, /* XSUM_XXH128_testdata[2580] */ + { 860, 0x000000009E3779B1ULL, { 0xFA8F3C565E1D764DULL, 0x8E8625992817F022ULL } }, /* XSUM_XXH128_testdata[2581] */ + { 860, 0x9E3779B185EBCA8DULL, { 0x617926484A47AA64ULL, 0xBC556E4AEA688D6EULL } }, /* XSUM_XXH128_testdata[2582] */ + { 861, 0x0000000000000000ULL, { 0x998F39A94253AF75ULL, 0x6C8D51E149D079F4ULL } }, /* XSUM_XXH128_testdata[2583] */ + { 861, 0x000000009E3779B1ULL, { 0xCB99C674330A9015ULL, 0xEEF7D28A6744BDA7ULL } }, /* XSUM_XXH128_testdata[2584] */ + { 861, 0x9E3779B185EBCA8DULL, { 0x8FAA1AE17209850CULL, 0xDD69899F65F0EBDFULL } }, /* XSUM_XXH128_testdata[2585] */ + { 862, 0x0000000000000000ULL, { 0x9C3CA9F498794551ULL, 0xBBD99193E1C01468ULL } }, /* XSUM_XXH128_testdata[2586] */ + { 862, 0x000000009E3779B1ULL, { 0x8D5B5483010C138AULL, 0xE6AA85EC4D9F4302ULL } }, /* XSUM_XXH128_testdata[2587] */ + { 862, 0x9E3779B185EBCA8DULL, { 0xA9E1257DB5D93D57ULL, 0xB8CAC3CDE57889C0ULL } }, /* XSUM_XXH128_testdata[2588] */ + { 863, 0x0000000000000000ULL, { 0xD4AB596FA5B43697ULL, 0x77416026FE83CA37ULL } }, /* XSUM_XXH128_testdata[2589] */ + { 863, 0x000000009E3779B1ULL, { 0xFD06AE5949D62E7EULL, 0x186F5CD5B5FFEEBDULL } }, /* XSUM_XXH128_testdata[2590] */ + { 863, 0x9E3779B185EBCA8DULL, { 0x77A4A22D9975994DULL, 0x225A829AB3D5D3C3ULL } }, /* XSUM_XXH128_testdata[2591] */ + { 864, 0x0000000000000000ULL, { 0xAECA70EC1A19053CULL, 0x5C6334BA5155F6F9ULL } }, /* XSUM_XXH128_testdata[2592] */ + { 864, 0x000000009E3779B1ULL, { 0xDA6A83A3134B6903ULL, 0x58A277F4CEC493CBULL } }, /* XSUM_XXH128_testdata[2593] */ + { 864, 0x9E3779B185EBCA8DULL, { 0x62864C38E63F2DBFULL, 0xAFF3C9A41A3D8BECULL } }, /* XSUM_XXH128_testdata[2594] */ + { 865, 0x0000000000000000ULL, { 0x920BE4DA2EE72450ULL, 0x21838832E2813761ULL } }, /* XSUM_XXH128_testdata[2595] */ + { 865, 0x000000009E3779B1ULL, { 0xD3A7770B2C577042ULL, 0x919A66EB0A0DBAC6ULL } }, /* XSUM_XXH128_testdata[2596] */ + { 865, 0x9E3779B185EBCA8DULL, { 0x679D32790A35B02AULL, 0x461D61C9C949CE3AULL } }, /* XSUM_XXH128_testdata[2597] */ + { 866, 0x0000000000000000ULL, { 0xB0AE8C8931036064ULL, 0xDE3978FD3F87A2D1ULL } }, /* XSUM_XXH128_testdata[2598] */ + { 866, 0x000000009E3779B1ULL, { 0x0D39D308DD4D150DULL, 0x17225C83B23B65A3ULL } }, /* XSUM_XXH128_testdata[2599] */ + { 866, 0x9E3779B185EBCA8DULL, { 0xFF70578E60774C95ULL, 0x91C5FA9990B61E3DULL } }, /* XSUM_XXH128_testdata[2600] */ + { 867, 0x0000000000000000ULL, { 0x204497CC1D90FFE3ULL, 0x83ACB6FB62980055ULL } }, /* XSUM_XXH128_testdata[2601] */ + { 867, 0x000000009E3779B1ULL, { 0x9A65DBF08C9E7AC5ULL, 0x5C2B477E2931C168ULL } }, /* XSUM_XXH128_testdata[2602] */ + { 867, 0x9E3779B185EBCA8DULL, { 0x249388B8EE2A692EULL, 0x5423638326CF9558ULL } }, /* XSUM_XXH128_testdata[2603] */ + { 868, 0x0000000000000000ULL, { 0xCC7D891B3841AEA2ULL, 0x153D144FE449EBB6ULL } }, /* XSUM_XXH128_testdata[2604] */ + { 868, 0x000000009E3779B1ULL, { 0x959762DE35F8D91BULL, 0xF3EB71B8A2295504ULL } }, /* XSUM_XXH128_testdata[2605] */ + { 868, 0x9E3779B185EBCA8DULL, { 0x4A1094F278CD47FBULL, 0xE71995C9F18791B7ULL } }, /* XSUM_XXH128_testdata[2606] */ + { 869, 0x0000000000000000ULL, { 0x6F28F68421F6E239ULL, 0xF3824BD7AC6E3811ULL } }, /* XSUM_XXH128_testdata[2607] */ + { 869, 0x000000009E3779B1ULL, { 0xF924CDC9B1FB5108ULL, 0xE1CE209D99947294ULL } }, /* XSUM_XXH128_testdata[2608] */ + { 869, 0x9E3779B185EBCA8DULL, { 0x7F4400B6740AF6C9ULL, 0xD3FCC66B8A47C252ULL } }, /* XSUM_XXH128_testdata[2609] */ + { 870, 0x0000000000000000ULL, { 0xA4E36B16E55D8471ULL, 0xDB62DE0A2979D419ULL } }, /* XSUM_XXH128_testdata[2610] */ + { 870, 0x000000009E3779B1ULL, { 0xC7C350ADFF7091A6ULL, 0xF9C36528B7517F5AULL } }, /* XSUM_XXH128_testdata[2611] */ + { 870, 0x9E3779B185EBCA8DULL, { 0x051FC97AD46E2D89ULL, 0x62B0BAD40C5B9536ULL } }, /* XSUM_XXH128_testdata[2612] */ + { 871, 0x0000000000000000ULL, { 0x1D795DD6A022F3F2ULL, 0x00BB000BD66CC2D6ULL } }, /* XSUM_XXH128_testdata[2613] */ + { 871, 0x000000009E3779B1ULL, { 0xB6579A0543BB9B0FULL, 0x46958A6E806B8AFBULL } }, /* XSUM_XXH128_testdata[2614] */ + { 871, 0x9E3779B185EBCA8DULL, { 0xDA17BFCD5421D4ECULL, 0x1E59D46D625166F5ULL } }, /* XSUM_XXH128_testdata[2615] */ + { 872, 0x0000000000000000ULL, { 0x5390B479AD9BFF1DULL, 0x8C192E58C399A8C5ULL } }, /* XSUM_XXH128_testdata[2616] */ + { 872, 0x000000009E3779B1ULL, { 0x5C5082DB1CCF1D3AULL, 0x4F47CC316AD630BDULL } }, /* XSUM_XXH128_testdata[2617] */ + { 872, 0x9E3779B185EBCA8DULL, { 0xA021AA74FC1AE49AULL, 0x220499B524EF072AULL } }, /* XSUM_XXH128_testdata[2618] */ + { 873, 0x0000000000000000ULL, { 0x9CFE87FA820B89F5ULL, 0xBA067C1C6BBA207BULL } }, /* XSUM_XXH128_testdata[2619] */ + { 873, 0x000000009E3779B1ULL, { 0x3A8CA35C738C13B4ULL, 0x4A8C5F6243168091ULL } }, /* XSUM_XXH128_testdata[2620] */ + { 873, 0x9E3779B185EBCA8DULL, { 0xB44A4C7912BDD7FFULL, 0x6D6D4FB1B210C4CCULL } }, /* XSUM_XXH128_testdata[2621] */ + { 874, 0x0000000000000000ULL, { 0x670D930CF6A5CA58ULL, 0x734FC6E122E17A04ULL } }, /* XSUM_XXH128_testdata[2622] */ + { 874, 0x000000009E3779B1ULL, { 0x7C73B96A46D9423EULL, 0xA932DA2422C2ED64ULL } }, /* XSUM_XXH128_testdata[2623] */ + { 874, 0x9E3779B185EBCA8DULL, { 0x097D5B727BDAC8E7ULL, 0xD6FB7C70267CEE44ULL } }, /* XSUM_XXH128_testdata[2624] */ + { 875, 0x0000000000000000ULL, { 0x3268191F1A35F955ULL, 0x2B166091527E4789ULL } }, /* XSUM_XXH128_testdata[2625] */ + { 875, 0x000000009E3779B1ULL, { 0x963969CCA516106DULL, 0x8C766FF80CC505A6ULL } }, /* XSUM_XXH128_testdata[2626] */ + { 875, 0x9E3779B185EBCA8DULL, { 0xFB57D6BBCADCA138ULL, 0xC7A7E9D9AE41315DULL } }, /* XSUM_XXH128_testdata[2627] */ + { 876, 0x0000000000000000ULL, { 0x16B613946323F178ULL, 0x1F7203792DAA1F97ULL } }, /* XSUM_XXH128_testdata[2628] */ + { 876, 0x000000009E3779B1ULL, { 0x78029C6EB66ED26FULL, 0x051EFC44D703E644ULL } }, /* XSUM_XXH128_testdata[2629] */ + { 876, 0x9E3779B185EBCA8DULL, { 0x720DA302255D6B3CULL, 0x4B572688363DA637ULL } }, /* XSUM_XXH128_testdata[2630] */ + { 877, 0x0000000000000000ULL, { 0xD5D45FAB9D869310ULL, 0xC53D0EFD700E52AEULL } }, /* XSUM_XXH128_testdata[2631] */ + { 877, 0x000000009E3779B1ULL, { 0x6E21AA9A3D684E27ULL, 0xDB11AC3E9FF8DCBDULL } }, /* XSUM_XXH128_testdata[2632] */ + { 877, 0x9E3779B185EBCA8DULL, { 0x9DD738725E07D61AULL, 0x8E750E5FE569615BULL } }, /* XSUM_XXH128_testdata[2633] */ + { 878, 0x0000000000000000ULL, { 0x7BBEA66E7FD64EEEULL, 0x286FC277603E23CBULL } }, /* XSUM_XXH128_testdata[2634] */ + { 878, 0x000000009E3779B1ULL, { 0x816D41B3D815C4C1ULL, 0xBFA82021B26BFBCFULL } }, /* XSUM_XXH128_testdata[2635] */ + { 878, 0x9E3779B185EBCA8DULL, { 0xC5911D65D313D0D4ULL, 0xD2949E7FB20211BCULL } }, /* XSUM_XXH128_testdata[2636] */ + { 879, 0x0000000000000000ULL, { 0xCC9E1F621CEB5CB7ULL, 0xF85E7B0A3590DC24ULL } }, /* XSUM_XXH128_testdata[2637] */ + { 879, 0x000000009E3779B1ULL, { 0x4CB7D04B3DFFC884ULL, 0xE3F74C5040492180ULL } }, /* XSUM_XXH128_testdata[2638] */ + { 879, 0x9E3779B185EBCA8DULL, { 0x9A2250D02FE3633CULL, 0x412FC952C35923F4ULL } }, /* XSUM_XXH128_testdata[2639] */ + { 880, 0x0000000000000000ULL, { 0xA1D25334FA04F008ULL, 0xA73D128FE2FB9DA1ULL } }, /* XSUM_XXH128_testdata[2640] */ + { 880, 0x000000009E3779B1ULL, { 0x15C836CF5367BE5DULL, 0xF46A92FB682918D4ULL } }, /* XSUM_XXH128_testdata[2641] */ + { 880, 0x9E3779B185EBCA8DULL, { 0x4E33561D714D981CULL, 0x92696761CB556E84ULL } }, /* XSUM_XXH128_testdata[2642] */ + { 881, 0x0000000000000000ULL, { 0xF4315D7612F5987DULL, 0xAAFC1DE3D5ED1034ULL } }, /* XSUM_XXH128_testdata[2643] */ + { 881, 0x000000009E3779B1ULL, { 0x2E35A09EA5A6A7C4ULL, 0xB762E944AD384196ULL } }, /* XSUM_XXH128_testdata[2644] */ + { 881, 0x9E3779B185EBCA8DULL, { 0x6D3745E180F80558ULL, 0x1F7BD312066798EFULL } }, /* XSUM_XXH128_testdata[2645] */ + { 882, 0x0000000000000000ULL, { 0x3645B0BF88B738DEULL, 0x1CB63F94A532D59FULL } }, /* XSUM_XXH128_testdata[2646] */ + { 882, 0x000000009E3779B1ULL, { 0x12A8969DAD12C757ULL, 0xAF240CA2D6B3FA14ULL } }, /* XSUM_XXH128_testdata[2647] */ + { 882, 0x9E3779B185EBCA8DULL, { 0x1472A4D0F250D3C1ULL, 0xEE262A6E4A503D46ULL } }, /* XSUM_XXH128_testdata[2648] */ + { 883, 0x0000000000000000ULL, { 0x0D60690DC6B281CDULL, 0xEAB4FB5A5B93A380ULL } }, /* XSUM_XXH128_testdata[2649] */ + { 883, 0x000000009E3779B1ULL, { 0xB59624E456D0EDD2ULL, 0x5A3DC276A36D46FCULL } }, /* XSUM_XXH128_testdata[2650] */ + { 883, 0x9E3779B185EBCA8DULL, { 0xBF80AA58B601D3ECULL, 0xC6D7F6D4946B20A7ULL } }, /* XSUM_XXH128_testdata[2651] */ + { 884, 0x0000000000000000ULL, { 0x4F06C5E4BC84D817ULL, 0x37D4DBEE254F1521ULL } }, /* XSUM_XXH128_testdata[2652] */ + { 884, 0x000000009E3779B1ULL, { 0x5688599C21F1BA9BULL, 0x598FE53A3170C033ULL } }, /* XSUM_XXH128_testdata[2653] */ + { 884, 0x9E3779B185EBCA8DULL, { 0x50CD721756F80806ULL, 0x39FB405370F64C7AULL } }, /* XSUM_XXH128_testdata[2654] */ + { 885, 0x0000000000000000ULL, { 0x0CF4D69F9BCBB028ULL, 0x0E02C0B4B44B61CCULL } }, /* XSUM_XXH128_testdata[2655] */ + { 885, 0x000000009E3779B1ULL, { 0x63DF283FE8245A99ULL, 0x7D37064CA05BD262ULL } }, /* XSUM_XXH128_testdata[2656] */ + { 885, 0x9E3779B185EBCA8DULL, { 0x6A873765C3253682ULL, 0x5499455A8D10AD91ULL } }, /* XSUM_XXH128_testdata[2657] */ + { 886, 0x0000000000000000ULL, { 0x33D3B47E5F0C1FEAULL, 0xEACF83A742605652ULL } }, /* XSUM_XXH128_testdata[2658] */ + { 886, 0x000000009E3779B1ULL, { 0xA4B03DF52CC764BFULL, 0x4DC89D2A8A85BD78ULL } }, /* XSUM_XXH128_testdata[2659] */ + { 886, 0x9E3779B185EBCA8DULL, { 0x569343E1255B1999ULL, 0xA3EED801D9F9E348ULL } }, /* XSUM_XXH128_testdata[2660] */ + { 887, 0x0000000000000000ULL, { 0xB1EF8AC1E7FCCD2EULL, 0xCE43B512F37D815CULL } }, /* XSUM_XXH128_testdata[2661] */ + { 887, 0x000000009E3779B1ULL, { 0x6E2C1DF44E8767C2ULL, 0xABCC359DED163955ULL } }, /* XSUM_XXH128_testdata[2662] */ + { 887, 0x9E3779B185EBCA8DULL, { 0x664107083E169A21ULL, 0x51C8DE63ED703A71ULL } }, /* XSUM_XXH128_testdata[2663] */ + { 888, 0x0000000000000000ULL, { 0xDFBC2F185FA2CB61ULL, 0x8806E13409721431ULL } }, /* XSUM_XXH128_testdata[2664] */ + { 888, 0x000000009E3779B1ULL, { 0x8DD3D4EDDE7650E6ULL, 0xDDDE98908C372958ULL } }, /* XSUM_XXH128_testdata[2665] */ + { 888, 0x9E3779B185EBCA8DULL, { 0x5720284D8DAC6716ULL, 0x65B04EBB855FD0CBULL } }, /* XSUM_XXH128_testdata[2666] */ + { 889, 0x0000000000000000ULL, { 0xA695A95B654DBBE8ULL, 0x8CD0E6C65B8DBF41ULL } }, /* XSUM_XXH128_testdata[2667] */ + { 889, 0x000000009E3779B1ULL, { 0x8EA5F0205AB54F72ULL, 0x3525E23E6DC20E8EULL } }, /* XSUM_XXH128_testdata[2668] */ + { 889, 0x9E3779B185EBCA8DULL, { 0x16269F2A5D26D293ULL, 0x9521BB0E63DC5854ULL } }, /* XSUM_XXH128_testdata[2669] */ + { 890, 0x0000000000000000ULL, { 0x228EB6664629C43FULL, 0xA3FC64D8829CB397ULL } }, /* XSUM_XXH128_testdata[2670] */ + { 890, 0x000000009E3779B1ULL, { 0x9948CA6E0B1BA4E7ULL, 0x4DADF73D261E1940ULL } }, /* XSUM_XXH128_testdata[2671] */ + { 890, 0x9E3779B185EBCA8DULL, { 0x48490F5C2AE2C3DAULL, 0x1AAB515479A3276CULL } }, /* XSUM_XXH128_testdata[2672] */ + { 891, 0x0000000000000000ULL, { 0xF85745C98A2DFD73ULL, 0xEC45212F32DBB7D9ULL } }, /* XSUM_XXH128_testdata[2673] */ + { 891, 0x000000009E3779B1ULL, { 0xB89B90521C20F314ULL, 0x7E554C4FC7884059ULL } }, /* XSUM_XXH128_testdata[2674] */ + { 891, 0x9E3779B185EBCA8DULL, { 0x51E26ECF6A11FC9FULL, 0x10DEF1CBDA5BA994ULL } }, /* XSUM_XXH128_testdata[2675] */ + { 892, 0x0000000000000000ULL, { 0x1952503F7EA0927EULL, 0xEE7109ED475CDFFEULL } }, /* XSUM_XXH128_testdata[2676] */ + { 892, 0x000000009E3779B1ULL, { 0x9137A305390E7652ULL, 0x43D723217EB5BA6BULL } }, /* XSUM_XXH128_testdata[2677] */ + { 892, 0x9E3779B185EBCA8DULL, { 0xF3E80A84EB3AC555ULL, 0xB53E4F08D4E16683ULL } }, /* XSUM_XXH128_testdata[2678] */ + { 893, 0x0000000000000000ULL, { 0x7A66A9CAFD803854ULL, 0xCB97A61AB5CEF77EULL } }, /* XSUM_XXH128_testdata[2679] */ + { 893, 0x000000009E3779B1ULL, { 0xA8F8D08ABDB2B356ULL, 0x2810663531A6FBA3ULL } }, /* XSUM_XXH128_testdata[2680] */ + { 893, 0x9E3779B185EBCA8DULL, { 0x80978CEDB4F12674ULL, 0x7DB63BA98680908FULL } }, /* XSUM_XXH128_testdata[2681] */ + { 894, 0x0000000000000000ULL, { 0xB999B8C782978E87ULL, 0x2ED8CE77C8F6675AULL } }, /* XSUM_XXH128_testdata[2682] */ + { 894, 0x000000009E3779B1ULL, { 0xF2967A52DD558FCCULL, 0x3B41A8BF3B7489FEULL } }, /* XSUM_XXH128_testdata[2683] */ + { 894, 0x9E3779B185EBCA8DULL, { 0x1525D7EB13039E6FULL, 0xFEAF25E6FC50BEC8ULL } }, /* XSUM_XXH128_testdata[2684] */ + { 895, 0x0000000000000000ULL, { 0xB12EA692EC2B62C5ULL, 0xC5940A2339B3C952ULL } }, /* XSUM_XXH128_testdata[2685] */ + { 895, 0x000000009E3779B1ULL, { 0x33496B50CB7E33BFULL, 0x61EC46411F123FB9ULL } }, /* XSUM_XXH128_testdata[2686] */ + { 895, 0x9E3779B185EBCA8DULL, { 0x600CC0C92B11A232ULL, 0xC5EF4FF5FD80003BULL } }, /* XSUM_XXH128_testdata[2687] */ + { 896, 0x0000000000000000ULL, { 0xEB301FCAE547B530ULL, 0xE13DBB556D978065ULL } }, /* XSUM_XXH128_testdata[2688] */ + { 896, 0x000000009E3779B1ULL, { 0x218E7B36585BEB7BULL, 0x01D1EA43608BAC11ULL } }, /* XSUM_XXH128_testdata[2689] */ + { 896, 0x9E3779B185EBCA8DULL, { 0xE484EED3AE3F7B4AULL, 0x843CEB5D33541F95ULL } }, /* XSUM_XXH128_testdata[2690] */ + { 897, 0x0000000000000000ULL, { 0x3FE21A655967FAABULL, 0x7D75B5131DDC4AE0ULL } }, /* XSUM_XXH128_testdata[2691] */ + { 897, 0x000000009E3779B1ULL, { 0x4B5BE27EA5F1506FULL, 0x0230D58BCA7DD56AULL } }, /* XSUM_XXH128_testdata[2692] */ + { 897, 0x9E3779B185EBCA8DULL, { 0xEC34975953EAA864ULL, 0x9167BCA8AFB03463ULL } }, /* XSUM_XXH128_testdata[2693] */ + { 898, 0x0000000000000000ULL, { 0x62DF6C1B622F8D08ULL, 0x770E8601F745AC7DULL } }, /* XSUM_XXH128_testdata[2694] */ + { 898, 0x000000009E3779B1ULL, { 0xED58D75010B7577EULL, 0x236379297C4E2522ULL } }, /* XSUM_XXH128_testdata[2695] */ + { 898, 0x9E3779B185EBCA8DULL, { 0x7343CCBDE198051FULL, 0x1C134CD346F0B26FULL } }, /* XSUM_XXH128_testdata[2696] */ + { 899, 0x0000000000000000ULL, { 0xE0660A9CC7B6FF93ULL, 0x6F376E186757F362ULL } }, /* XSUM_XXH128_testdata[2697] */ + { 899, 0x000000009E3779B1ULL, { 0x0EF5B7A7D2AD0985ULL, 0xF93395F8D75213CEULL } }, /* XSUM_XXH128_testdata[2698] */ + { 899, 0x9E3779B185EBCA8DULL, { 0x2D0B46C0D37409D6ULL, 0x1AB38E8B361E6AEAULL } }, /* XSUM_XXH128_testdata[2699] */ + { 900, 0x0000000000000000ULL, { 0x43A535685D650A1DULL, 0xF19D4B9983694578ULL } }, /* XSUM_XXH128_testdata[2700] */ + { 900, 0x000000009E3779B1ULL, { 0x1F287F7F552DE0E6ULL, 0xFFA7893B09EE2BA1ULL } }, /* XSUM_XXH128_testdata[2701] */ + { 900, 0x9E3779B185EBCA8DULL, { 0x9AA0F5DE9F232AE3ULL, 0x40090F2F7A9BC91DULL } }, /* XSUM_XXH128_testdata[2702] */ + { 901, 0x0000000000000000ULL, { 0xF10B28C4A5F1D834ULL, 0x242BC16C051AAD78ULL } }, /* XSUM_XXH128_testdata[2703] */ + { 901, 0x000000009E3779B1ULL, { 0xE3266F30175B2461ULL, 0x12EA6C541BD06572ULL } }, /* XSUM_XXH128_testdata[2704] */ + { 901, 0x9E3779B185EBCA8DULL, { 0xDCB25A5484361112ULL, 0xE1547D6F30E35CAAULL } }, /* XSUM_XXH128_testdata[2705] */ + { 902, 0x0000000000000000ULL, { 0xF78121EBCC58B064ULL, 0xD6C7CA5376666ABFULL } }, /* XSUM_XXH128_testdata[2706] */ + { 902, 0x000000009E3779B1ULL, { 0x2D94A66CFEC92193ULL, 0x5B1CC5F76FCD95BAULL } }, /* XSUM_XXH128_testdata[2707] */ + { 902, 0x9E3779B185EBCA8DULL, { 0xB07E3F3CFE793C40ULL, 0xC0174AD6E609D633ULL } }, /* XSUM_XXH128_testdata[2708] */ + { 903, 0x0000000000000000ULL, { 0x39020A97794C2E78ULL, 0xAEF7C25FBDF03AC5ULL } }, /* XSUM_XXH128_testdata[2709] */ + { 903, 0x000000009E3779B1ULL, { 0xD176779525E668D5ULL, 0xD50EB01FB88CC660ULL } }, /* XSUM_XXH128_testdata[2710] */ + { 903, 0x9E3779B185EBCA8DULL, { 0xEF9157C276C8A510ULL, 0x9C89825F56E6AE2FULL } }, /* XSUM_XXH128_testdata[2711] */ + { 904, 0x0000000000000000ULL, { 0x3CD1DC80F8017C63ULL, 0x7C6BA1DF8CAC9954ULL } }, /* XSUM_XXH128_testdata[2712] */ + { 904, 0x000000009E3779B1ULL, { 0x55C67DEAD403F81EULL, 0xABE2CA204FD09078ULL } }, /* XSUM_XXH128_testdata[2713] */ + { 904, 0x9E3779B185EBCA8DULL, { 0x28BF86B604D416C8ULL, 0x8CDE0E17A06A24C3ULL } }, /* XSUM_XXH128_testdata[2714] */ + { 905, 0x0000000000000000ULL, { 0x2A749BB33C70892FULL, 0x0A2B4371D4FD17D0ULL } }, /* XSUM_XXH128_testdata[2715] */ + { 905, 0x000000009E3779B1ULL, { 0xD8432E8EFF50DACEULL, 0x794229558CD18433ULL } }, /* XSUM_XXH128_testdata[2716] */ + { 905, 0x9E3779B185EBCA8DULL, { 0x03806DC4CE1C026BULL, 0x86B43B0954C52AD8ULL } }, /* XSUM_XXH128_testdata[2717] */ + { 906, 0x0000000000000000ULL, { 0x08924B7FB5A00477ULL, 0x42C3E74D158EDFB4ULL } }, /* XSUM_XXH128_testdata[2718] */ + { 906, 0x000000009E3779B1ULL, { 0x4DDCA5D2F2956B60ULL, 0xFF242F37DC343F23ULL } }, /* XSUM_XXH128_testdata[2719] */ + { 906, 0x9E3779B185EBCA8DULL, { 0x8F5985423A9AB05AULL, 0xCF93DE4A975232D8ULL } }, /* XSUM_XXH128_testdata[2720] */ + { 907, 0x0000000000000000ULL, { 0x706A6A5F8534ED41ULL, 0x646AA7D7ECA70397ULL } }, /* XSUM_XXH128_testdata[2721] */ + { 907, 0x000000009E3779B1ULL, { 0x6DD62773789BC611ULL, 0xB156431AD10AA875ULL } }, /* XSUM_XXH128_testdata[2722] */ + { 907, 0x9E3779B185EBCA8DULL, { 0x07EF945CA2C9BBA9ULL, 0x1346488801B55C7CULL } }, /* XSUM_XXH128_testdata[2723] */ + { 908, 0x0000000000000000ULL, { 0xB8A4DB648697F221ULL, 0x89E456F0FA4C2D0EULL } }, /* XSUM_XXH128_testdata[2724] */ + { 908, 0x000000009E3779B1ULL, { 0xC868CDF5D7B2F296ULL, 0xCFF550D19AD4CBDBULL } }, /* XSUM_XXH128_testdata[2725] */ + { 908, 0x9E3779B185EBCA8DULL, { 0xE46FA8E96335AB05ULL, 0x0B15EE1BFA8F777CULL } }, /* XSUM_XXH128_testdata[2726] */ + { 909, 0x0000000000000000ULL, { 0x0D9D86B2E61E86C9ULL, 0xC622D7B1AF3F18AFULL } }, /* XSUM_XXH128_testdata[2727] */ + { 909, 0x000000009E3779B1ULL, { 0x3E16F9A6D29EEAB1ULL, 0xD68EAFB1D33D4D29ULL } }, /* XSUM_XXH128_testdata[2728] */ + { 909, 0x9E3779B185EBCA8DULL, { 0x526D4E68604C4B94ULL, 0xF473426B79EE8AAEULL } }, /* XSUM_XXH128_testdata[2729] */ + { 910, 0x0000000000000000ULL, { 0xF2B877B46D63623AULL, 0x3D8E2058FB811EB3ULL } }, /* XSUM_XXH128_testdata[2730] */ + { 910, 0x000000009E3779B1ULL, { 0x5BAA5CB7F2CBC752ULL, 0x060FFC77F970F235ULL } }, /* XSUM_XXH128_testdata[2731] */ + { 910, 0x9E3779B185EBCA8DULL, { 0xF37A6ECF8FD2FE7EULL, 0xBADB1CADD162DB1CULL } }, /* XSUM_XXH128_testdata[2732] */ + { 911, 0x0000000000000000ULL, { 0x01EF8AF310173CEFULL, 0xEB9E96101E50A3E9ULL } }, /* XSUM_XXH128_testdata[2733] */ + { 911, 0x000000009E3779B1ULL, { 0x055E8B88C383FD7BULL, 0xFFFABCB421E37835ULL } }, /* XSUM_XXH128_testdata[2734] */ + { 911, 0x9E3779B185EBCA8DULL, { 0x8E28E708BD090493ULL, 0xB9F70DC9320F15CDULL } }, /* XSUM_XXH128_testdata[2735] */ + { 912, 0x0000000000000000ULL, { 0xFAE2DFBAAA25F72FULL, 0x91AB1F6A0B141D81ULL } }, /* XSUM_XXH128_testdata[2736] */ + { 912, 0x000000009E3779B1ULL, { 0x39B211FB79FE038CULL, 0xD049F748F85B7656ULL } }, /* XSUM_XXH128_testdata[2737] */ + { 912, 0x9E3779B185EBCA8DULL, { 0xC9B6670513781477ULL, 0x0648C4F2362F30D6ULL } }, /* XSUM_XXH128_testdata[2738] */ + { 913, 0x0000000000000000ULL, { 0x0F887DF943467AECULL, 0x2F2564656ECC62FEULL } }, /* XSUM_XXH128_testdata[2739] */ + { 913, 0x000000009E3779B1ULL, { 0xFBD510A443B4F636ULL, 0x98F2268D1BC3CCF8ULL } }, /* XSUM_XXH128_testdata[2740] */ + { 913, 0x9E3779B185EBCA8DULL, { 0x52476A601F434F73ULL, 0x171FCD5D16FD2FFBULL } }, /* XSUM_XXH128_testdata[2741] */ + { 914, 0x0000000000000000ULL, { 0x5167A6FE26B8AAE7ULL, 0x09D8F46CC26F4D9DULL } }, /* XSUM_XXH128_testdata[2742] */ + { 914, 0x000000009E3779B1ULL, { 0x55E481A89F70CE48ULL, 0x48F2663BFA0A2C26ULL } }, /* XSUM_XXH128_testdata[2743] */ + { 914, 0x9E3779B185EBCA8DULL, { 0x62234A2F13194C83ULL, 0x9870C542DF5EE974ULL } }, /* XSUM_XXH128_testdata[2744] */ + { 915, 0x0000000000000000ULL, { 0xC0A5ED24EB5DB096ULL, 0xB3945B05AFB4D85BULL } }, /* XSUM_XXH128_testdata[2745] */ + { 915, 0x000000009E3779B1ULL, { 0x886A495C9715A7CCULL, 0xBEEC0A4D359871A2ULL } }, /* XSUM_XXH128_testdata[2746] */ + { 915, 0x9E3779B185EBCA8DULL, { 0x1CF98E391B72DD0DULL, 0xE82910DF5AF2008FULL } }, /* XSUM_XXH128_testdata[2747] */ + { 916, 0x0000000000000000ULL, { 0x6479E62533BDD5EBULL, 0xD1AC2D9F7B299AC7ULL } }, /* XSUM_XXH128_testdata[2748] */ + { 916, 0x000000009E3779B1ULL, { 0xEE39FD906B8EBAAFULL, 0xF18DD24325C5379FULL } }, /* XSUM_XXH128_testdata[2749] */ + { 916, 0x9E3779B185EBCA8DULL, { 0xBF125B8684945E35ULL, 0x9311D8C5DF937136ULL } }, /* XSUM_XXH128_testdata[2750] */ + { 917, 0x0000000000000000ULL, { 0xC2F0B86031A0F801ULL, 0x6F43EEC83911FD69ULL } }, /* XSUM_XXH128_testdata[2751] */ + { 917, 0x000000009E3779B1ULL, { 0xCC9A2BCDBD3D711EULL, 0x1161F70498399A8EULL } }, /* XSUM_XXH128_testdata[2752] */ + { 917, 0x9E3779B185EBCA8DULL, { 0xF8598497B749DEACULL, 0x5460CCFCF5B57947ULL } }, /* XSUM_XXH128_testdata[2753] */ + { 918, 0x0000000000000000ULL, { 0x93DC4E8E9C05BB21ULL, 0x8AA6EBEBB259DDB8ULL } }, /* XSUM_XXH128_testdata[2754] */ + { 918, 0x000000009E3779B1ULL, { 0x7451D84EBBE390E5ULL, 0xD50D644769656756ULL } }, /* XSUM_XXH128_testdata[2755] */ + { 918, 0x9E3779B185EBCA8DULL, { 0xDEDC0CB3439B9699ULL, 0x9EA1C63A26B3DA3AULL } }, /* XSUM_XXH128_testdata[2756] */ + { 919, 0x0000000000000000ULL, { 0x94BC6E4CDEC216D4ULL, 0x57AA853098A39201ULL } }, /* XSUM_XXH128_testdata[2757] */ + { 919, 0x000000009E3779B1ULL, { 0xBCA729409D79C87DULL, 0xC9790527B482F424ULL } }, /* XSUM_XXH128_testdata[2758] */ + { 919, 0x9E3779B185EBCA8DULL, { 0xA8B6770050EE599BULL, 0x2C005501054E54DAULL } }, /* XSUM_XXH128_testdata[2759] */ + { 920, 0x0000000000000000ULL, { 0xE653BE122CE7A2CDULL, 0x1F2BAABEAF58E351ULL } }, /* XSUM_XXH128_testdata[2760] */ + { 920, 0x000000009E3779B1ULL, { 0xC94F830D825BB9F9ULL, 0x7B3F802C3D5B7945ULL } }, /* XSUM_XXH128_testdata[2761] */ + { 920, 0x9E3779B185EBCA8DULL, { 0x8B3A5165B6C84D2BULL, 0x7DB7236AD7021B03ULL } }, /* XSUM_XXH128_testdata[2762] */ + { 921, 0x0000000000000000ULL, { 0x1323F1B07FF3DEACULL, 0xB63A754D29DAC2B7ULL } }, /* XSUM_XXH128_testdata[2763] */ + { 921, 0x000000009E3779B1ULL, { 0xA701D37DFFDF2E36ULL, 0xBAE14923774B019AULL } }, /* XSUM_XXH128_testdata[2764] */ + { 921, 0x9E3779B185EBCA8DULL, { 0x8E14FC108078B608ULL, 0xEB73F33DF4C1846DULL } }, /* XSUM_XXH128_testdata[2765] */ + { 922, 0x0000000000000000ULL, { 0xA98AC6B852D82AABULL, 0x09897BCD372E991CULL } }, /* XSUM_XXH128_testdata[2766] */ + { 922, 0x000000009E3779B1ULL, { 0x708A8551DE310A7FULL, 0x7E29B2BAB3CF4190ULL } }, /* XSUM_XXH128_testdata[2767] */ + { 922, 0x9E3779B185EBCA8DULL, { 0x95C5DF89A2BD069FULL, 0x2DA97978246C0A20ULL } }, /* XSUM_XXH128_testdata[2768] */ + { 923, 0x0000000000000000ULL, { 0x9D686372D8B0617AULL, 0x7C2AF0F8E1B8F31CULL } }, /* XSUM_XXH128_testdata[2769] */ + { 923, 0x000000009E3779B1ULL, { 0x9F8863208B2F5B0DULL, 0x690F0E9E982ABADAULL } }, /* XSUM_XXH128_testdata[2770] */ + { 923, 0x9E3779B185EBCA8DULL, { 0xEDFD83FABDDDBC8BULL, 0xBFF7D3A6F6007D2FULL } }, /* XSUM_XXH128_testdata[2771] */ + { 924, 0x0000000000000000ULL, { 0x5F978BEF6DE12D27ULL, 0xEAB77B808FF87201ULL } }, /* XSUM_XXH128_testdata[2772] */ + { 924, 0x000000009E3779B1ULL, { 0x471FBD7C89D97AD8ULL, 0xB26A21FF4A658FF4ULL } }, /* XSUM_XXH128_testdata[2773] */ + { 924, 0x9E3779B185EBCA8DULL, { 0xE488654B9218CD99ULL, 0xDAD855480DCFC3E3ULL } }, /* XSUM_XXH128_testdata[2774] */ + { 925, 0x0000000000000000ULL, { 0xFA6D5149FA2D1F6AULL, 0x917D2EE048AE3A3AULL } }, /* XSUM_XXH128_testdata[2775] */ + { 925, 0x000000009E3779B1ULL, { 0xA94285531001ED58ULL, 0x0D81DDA0ED36F0E7ULL } }, /* XSUM_XXH128_testdata[2776] */ + { 925, 0x9E3779B185EBCA8DULL, { 0xB84A15EAE6E992BAULL, 0xFD3B155E3FBE873DULL } }, /* XSUM_XXH128_testdata[2777] */ + { 926, 0x0000000000000000ULL, { 0x9BB97F3BD2CD307BULL, 0x1CF7918E55248486ULL } }, /* XSUM_XXH128_testdata[2778] */ + { 926, 0x000000009E3779B1ULL, { 0xE9DA755B02DB5DFBULL, 0x271FD65C1194F28EULL } }, /* XSUM_XXH128_testdata[2779] */ + { 926, 0x9E3779B185EBCA8DULL, { 0x2622E4C4AAA4FD07ULL, 0x4A83696F184DE601ULL } }, /* XSUM_XXH128_testdata[2780] */ + { 927, 0x0000000000000000ULL, { 0x36078B5DD5914CEBULL, 0x39311323FBF5063EULL } }, /* XSUM_XXH128_testdata[2781] */ + { 927, 0x000000009E3779B1ULL, { 0x382DF9FC522B5080ULL, 0x4D5F8364D115C6A3ULL } }, /* XSUM_XXH128_testdata[2782] */ + { 927, 0x9E3779B185EBCA8DULL, { 0x26D68DB45FF74F0EULL, 0xB32A68986B8D53B3ULL } }, /* XSUM_XXH128_testdata[2783] */ + { 928, 0x0000000000000000ULL, { 0xBD54D90ADD4F9E19ULL, 0xC4E9CC7EFDF4B3FCULL } }, /* XSUM_XXH128_testdata[2784] */ + { 928, 0x000000009E3779B1ULL, { 0x2AA2126A4C1B7117ULL, 0x68AB4C5C3F23417AULL } }, /* XSUM_XXH128_testdata[2785] */ + { 928, 0x9E3779B185EBCA8DULL, { 0x49F9C3EA8E5EF802ULL, 0xFCD900037AC1FAF0ULL } }, /* XSUM_XXH128_testdata[2786] */ + { 929, 0x0000000000000000ULL, { 0x5DBA3CAEC1DBDF12ULL, 0x54EAB6392D28A1B4ULL } }, /* XSUM_XXH128_testdata[2787] */ + { 929, 0x000000009E3779B1ULL, { 0xE216715A630A68FEULL, 0x86EF9482580842B8ULL } }, /* XSUM_XXH128_testdata[2788] */ + { 929, 0x9E3779B185EBCA8DULL, { 0x9B2D2B4E1558FF19ULL, 0xBA03962F7C50B05CULL } }, /* XSUM_XXH128_testdata[2789] */ + { 930, 0x0000000000000000ULL, { 0x7DCE91B0CE47F963ULL, 0x7638538ACEC97B2BULL } }, /* XSUM_XXH128_testdata[2790] */ + { 930, 0x000000009E3779B1ULL, { 0x5ACC9BDEEB27D425ULL, 0xD5E41283349BF6C7ULL } }, /* XSUM_XXH128_testdata[2791] */ + { 930, 0x9E3779B185EBCA8DULL, { 0x6ABFB039DEE45CE2ULL, 0xFD9D7D18EBA371D2ULL } }, /* XSUM_XXH128_testdata[2792] */ + { 931, 0x0000000000000000ULL, { 0x371A894FD8074EBBULL, 0x6A2BE3F704E98F76ULL } }, /* XSUM_XXH128_testdata[2793] */ + { 931, 0x000000009E3779B1ULL, { 0x48C2DCD58BBE262FULL, 0x3CBBE72077891578ULL } }, /* XSUM_XXH128_testdata[2794] */ + { 931, 0x9E3779B185EBCA8DULL, { 0x31D6447D326D6B32ULL, 0x5BFC8ED85DDF0A2EULL } }, /* XSUM_XXH128_testdata[2795] */ + { 932, 0x0000000000000000ULL, { 0x8495ACB80721BB37ULL, 0xD238B4FE2984792BULL } }, /* XSUM_XXH128_testdata[2796] */ + { 932, 0x000000009E3779B1ULL, { 0x0C7AC0F14EA00ECFULL, 0xF4847938540B8D10ULL } }, /* XSUM_XXH128_testdata[2797] */ + { 932, 0x9E3779B185EBCA8DULL, { 0x31C1E3EED31EF4E7ULL, 0x0A04FEECE7FBDE14ULL } }, /* XSUM_XXH128_testdata[2798] */ + { 933, 0x0000000000000000ULL, { 0x6D91845A2A2BB1DBULL, 0x1882ED3BE6ACB64EULL } }, /* XSUM_XXH128_testdata[2799] */ + { 933, 0x000000009E3779B1ULL, { 0xEF5FA59AC79559DEULL, 0x8EE2ED9D60414DFBULL } }, /* XSUM_XXH128_testdata[2800] */ + { 933, 0x9E3779B185EBCA8DULL, { 0x790732AA889611E7ULL, 0x8379F01F6A17399CULL } }, /* XSUM_XXH128_testdata[2801] */ + { 934, 0x0000000000000000ULL, { 0xC21D749AA1EAFF14ULL, 0xDC8E4409BE53E192ULL } }, /* XSUM_XXH128_testdata[2802] */ + { 934, 0x000000009E3779B1ULL, { 0xBEC3DAAE8E0A6B12ULL, 0xFFF5B5F9D79FD598ULL } }, /* XSUM_XXH128_testdata[2803] */ + { 934, 0x9E3779B185EBCA8DULL, { 0xAED572A2CC21B33DULL, 0xD53CBC4EDCEC799CULL } }, /* XSUM_XXH128_testdata[2804] */ + { 935, 0x0000000000000000ULL, { 0xBCC4C1401CB5F8E9ULL, 0xEDE841082AB8FB1DULL } }, /* XSUM_XXH128_testdata[2805] */ + { 935, 0x000000009E3779B1ULL, { 0xE54E584DEF5311E4ULL, 0xFB6BD342670E7AC5ULL } }, /* XSUM_XXH128_testdata[2806] */ + { 935, 0x9E3779B185EBCA8DULL, { 0x432A10F5AB90C1C2ULL, 0x31A3700798432B98ULL } }, /* XSUM_XXH128_testdata[2807] */ + { 936, 0x0000000000000000ULL, { 0x444796D6AD1567C5ULL, 0xF06B64A3B4963CCEULL } }, /* XSUM_XXH128_testdata[2808] */ + { 936, 0x000000009E3779B1ULL, { 0x3A408B185AB46C07ULL, 0xBEC334BFCBB93BEAULL } }, /* XSUM_XXH128_testdata[2809] */ + { 936, 0x9E3779B185EBCA8DULL, { 0x29541667E8C08536ULL, 0x224F4F3507E8B6CBULL } }, /* XSUM_XXH128_testdata[2810] */ + { 937, 0x0000000000000000ULL, { 0xCB76E240E83972D6ULL, 0x20C773EB60B25592ULL } }, /* XSUM_XXH128_testdata[2811] */ + { 937, 0x000000009E3779B1ULL, { 0x2C56B40C66252431ULL, 0x7E5BE3218A4C67ECULL } }, /* XSUM_XXH128_testdata[2812] */ + { 937, 0x9E3779B185EBCA8DULL, { 0x7280116BD4511CC7ULL, 0xD5AB3CC3E5DC75FAULL } }, /* XSUM_XXH128_testdata[2813] */ + { 938, 0x0000000000000000ULL, { 0x824916E17BACABF0ULL, 0x6977D1BD37E2DF5CULL } }, /* XSUM_XXH128_testdata[2814] */ + { 938, 0x000000009E3779B1ULL, { 0x529254B2A0F3D034ULL, 0x434656306763ECE4ULL } }, /* XSUM_XXH128_testdata[2815] */ + { 938, 0x9E3779B185EBCA8DULL, { 0xA6BF5C3E53C802DBULL, 0xD58007FA86640DC0ULL } }, /* XSUM_XXH128_testdata[2816] */ + { 939, 0x0000000000000000ULL, { 0xED6D1032D38614FDULL, 0x6C01B2CF33B1D720ULL } }, /* XSUM_XXH128_testdata[2817] */ + { 939, 0x000000009E3779B1ULL, { 0x46CBFF8C9AC179B8ULL, 0x3CDE3C5130C9C9FDULL } }, /* XSUM_XXH128_testdata[2818] */ + { 939, 0x9E3779B185EBCA8DULL, { 0x2DB0AC3D03C26BFAULL, 0x5CEEE79935019636ULL } }, /* XSUM_XXH128_testdata[2819] */ + { 940, 0x0000000000000000ULL, { 0x148DC4872BB44686ULL, 0xB15B8AE76E67D88DULL } }, /* XSUM_XXH128_testdata[2820] */ + { 940, 0x000000009E3779B1ULL, { 0xC34B4C477BD1C358ULL, 0x1B103911B9F212C6ULL } }, /* XSUM_XXH128_testdata[2821] */ + { 940, 0x9E3779B185EBCA8DULL, { 0xBDDD7BEA37E2D08CULL, 0x3AE359829A860990ULL } }, /* XSUM_XXH128_testdata[2822] */ + { 941, 0x0000000000000000ULL, { 0x9E113AF44A0C8A70ULL, 0x46F7370A1A9BDDFDULL } }, /* XSUM_XXH128_testdata[2823] */ + { 941, 0x000000009E3779B1ULL, { 0xEC4381C5CA04FCB3ULL, 0x93C560C2746867A5ULL } }, /* XSUM_XXH128_testdata[2824] */ + { 941, 0x9E3779B185EBCA8DULL, { 0xEAAE0F49DCE8ADCAULL, 0x428751D2A2952D00ULL } }, /* XSUM_XXH128_testdata[2825] */ + { 942, 0x0000000000000000ULL, { 0x90A91675BEC9FA4EULL, 0x04F089CD0F902EB3ULL } }, /* XSUM_XXH128_testdata[2826] */ + { 942, 0x000000009E3779B1ULL, { 0x71E308EADE6ED160ULL, 0x41B5770D04B1166DULL } }, /* XSUM_XXH128_testdata[2827] */ + { 942, 0x9E3779B185EBCA8DULL, { 0x1879758BA0BB13EAULL, 0x77ACEC29B6A010F5ULL } }, /* XSUM_XXH128_testdata[2828] */ + { 943, 0x0000000000000000ULL, { 0xEC8CEBB06CD11A8AULL, 0x67B877DAB6A05327ULL } }, /* XSUM_XXH128_testdata[2829] */ + { 943, 0x000000009E3779B1ULL, { 0xEA56DC38BAD309EFULL, 0xAB52C4FD3BD6F42FULL } }, /* XSUM_XXH128_testdata[2830] */ + { 943, 0x9E3779B185EBCA8DULL, { 0xC21ACB495A981932ULL, 0x535D2FD8F6630AF6ULL } }, /* XSUM_XXH128_testdata[2831] */ + { 944, 0x0000000000000000ULL, { 0x6A7091244E534E3CULL, 0x112FAB31C1593C03ULL } }, /* XSUM_XXH128_testdata[2832] */ + { 944, 0x000000009E3779B1ULL, { 0x99CE76A602BC189FULL, 0xF5696E281A61532DULL } }, /* XSUM_XXH128_testdata[2833] */ + { 944, 0x9E3779B185EBCA8DULL, { 0x5D1E70B86A49B980ULL, 0xE322163D0A0547EEULL } }, /* XSUM_XXH128_testdata[2834] */ + { 945, 0x0000000000000000ULL, { 0x82EA22FB35891761ULL, 0xF751B0034F718BE3ULL } }, /* XSUM_XXH128_testdata[2835] */ + { 945, 0x000000009E3779B1ULL, { 0x69929365F96365D1ULL, 0x1CF14A3DD9993E6AULL } }, /* XSUM_XXH128_testdata[2836] */ + { 945, 0x9E3779B185EBCA8DULL, { 0xF4B220EE80259595ULL, 0x26A2E29A06D351A9ULL } }, /* XSUM_XXH128_testdata[2837] */ + { 946, 0x0000000000000000ULL, { 0xACF35CB8E8FED358ULL, 0x26C42A2B52D781C0ULL } }, /* XSUM_XXH128_testdata[2838] */ + { 946, 0x000000009E3779B1ULL, { 0x8578698CCBDA128BULL, 0x023D061E87AE6745ULL } }, /* XSUM_XXH128_testdata[2839] */ + { 946, 0x9E3779B185EBCA8DULL, { 0xF9958FDE6CB21BB5ULL, 0xF6D268B6E146A2B4ULL } }, /* XSUM_XXH128_testdata[2840] */ + { 947, 0x0000000000000000ULL, { 0x5C6EFE1FF72335D7ULL, 0x690385540DD3093AULL } }, /* XSUM_XXH128_testdata[2841] */ + { 947, 0x000000009E3779B1ULL, { 0x4C61623C8799035FULL, 0x7038C0FD152C0079ULL } }, /* XSUM_XXH128_testdata[2842] */ + { 947, 0x9E3779B185EBCA8DULL, { 0x9520A8144A7FF689ULL, 0xC40EEDC2C56FB52FULL } }, /* XSUM_XXH128_testdata[2843] */ + { 948, 0x0000000000000000ULL, { 0x567DF9A42493FDB3ULL, 0x7022534806C41601ULL } }, /* XSUM_XXH128_testdata[2844] */ + { 948, 0x000000009E3779B1ULL, { 0x1288783A60942B7FULL, 0xBAE10485548D5910ULL } }, /* XSUM_XXH128_testdata[2845] */ + { 948, 0x9E3779B185EBCA8DULL, { 0xFA4DFA8B65E1EAAFULL, 0xF9740F1E789A952EULL } }, /* XSUM_XXH128_testdata[2846] */ + { 949, 0x0000000000000000ULL, { 0xC508DD9AF56985D5ULL, 0x158DA61390E28C06ULL } }, /* XSUM_XXH128_testdata[2847] */ + { 949, 0x000000009E3779B1ULL, { 0x6FB18B36B7D7824AULL, 0xA9611A90FB979A67ULL } }, /* XSUM_XXH128_testdata[2848] */ + { 949, 0x9E3779B185EBCA8DULL, { 0x3A0562B2FCC5C0EBULL, 0xFB7A90A6A24579D3ULL } }, /* XSUM_XXH128_testdata[2849] */ + { 950, 0x0000000000000000ULL, { 0x41186209BD02FADDULL, 0xA6AB452D7B1689EDULL } }, /* XSUM_XXH128_testdata[2850] */ + { 950, 0x000000009E3779B1ULL, { 0xDDB3DD83F50F6802ULL, 0xBEA6EB7207AA2CDEULL } }, /* XSUM_XXH128_testdata[2851] */ + { 950, 0x9E3779B185EBCA8DULL, { 0x5D4937DA6AA3A2FEULL, 0x232193707628542AULL } }, /* XSUM_XXH128_testdata[2852] */ + { 951, 0x0000000000000000ULL, { 0x783914173F2EB8E7ULL, 0xA901AAAEE508AE53ULL } }, /* XSUM_XXH128_testdata[2853] */ + { 951, 0x000000009E3779B1ULL, { 0x816060C1BCD8DF5CULL, 0x1DC2F9CB197AF02AULL } }, /* XSUM_XXH128_testdata[2854] */ + { 951, 0x9E3779B185EBCA8DULL, { 0xDA422CA94957EAEBULL, 0x2CCDC9456DF1455CULL } }, /* XSUM_XXH128_testdata[2855] */ + { 952, 0x0000000000000000ULL, { 0xEB9DF3662F675040ULL, 0x4915A1FE75E29094ULL } }, /* XSUM_XXH128_testdata[2856] */ + { 952, 0x000000009E3779B1ULL, { 0xAE7DD1FFDE3C9AD3ULL, 0xC216C6A100D478A0ULL } }, /* XSUM_XXH128_testdata[2857] */ + { 952, 0x9E3779B185EBCA8DULL, { 0x73B56133DF93401EULL, 0x6037E5DDF2718FDCULL } }, /* XSUM_XXH128_testdata[2858] */ + { 953, 0x0000000000000000ULL, { 0xF00743FE9E460004ULL, 0xEA1CC75C97AD43F5ULL } }, /* XSUM_XXH128_testdata[2859] */ + { 953, 0x000000009E3779B1ULL, { 0x5D41B7F5B19FE9A5ULL, 0xBF2FFF0AEEBB2026ULL } }, /* XSUM_XXH128_testdata[2860] */ + { 953, 0x9E3779B185EBCA8DULL, { 0x1866ED8CBABE1A3DULL, 0x899857D99EB9B560ULL } }, /* XSUM_XXH128_testdata[2861] */ + { 954, 0x0000000000000000ULL, { 0xB2596BFE9CEC1895ULL, 0x4BC734859371A778ULL } }, /* XSUM_XXH128_testdata[2862] */ + { 954, 0x000000009E3779B1ULL, { 0x73B4D7FF1CE209BCULL, 0xE32011FECFB4DEA8ULL } }, /* XSUM_XXH128_testdata[2863] */ + { 954, 0x9E3779B185EBCA8DULL, { 0xAFF4254FA818A82FULL, 0xA2C0C24540F48828ULL } }, /* XSUM_XXH128_testdata[2864] */ + { 955, 0x0000000000000000ULL, { 0xF916C57C73ED1F99ULL, 0x85C305BF3B432679ULL } }, /* XSUM_XXH128_testdata[2865] */ + { 955, 0x000000009E3779B1ULL, { 0xE0FDF93978E86A3DULL, 0x6C26BCB2DE4AEF90ULL } }, /* XSUM_XXH128_testdata[2866] */ + { 955, 0x9E3779B185EBCA8DULL, { 0xEB8A95E822A203E8ULL, 0x22E578A3C47F6120ULL } }, /* XSUM_XXH128_testdata[2867] */ + { 956, 0x0000000000000000ULL, { 0x754A1B63E490233DULL, 0xDAB18D6D37482F38ULL } }, /* XSUM_XXH128_testdata[2868] */ + { 956, 0x000000009E3779B1ULL, { 0x6B0B097F2B8B3108ULL, 0x478A9B1ED3F03B9FULL } }, /* XSUM_XXH128_testdata[2869] */ + { 956, 0x9E3779B185EBCA8DULL, { 0xF00CFC6E19CB39A5ULL, 0xCC486D3FB67B7CDEULL } }, /* XSUM_XXH128_testdata[2870] */ + { 957, 0x0000000000000000ULL, { 0x1665CAC964F7F2A9ULL, 0x4E9D956589CBE251ULL } }, /* XSUM_XXH128_testdata[2871] */ + { 957, 0x000000009E3779B1ULL, { 0x0B203BA42CCF5B1DULL, 0x249A0A77B1BA310DULL } }, /* XSUM_XXH128_testdata[2872] */ + { 957, 0x9E3779B185EBCA8DULL, { 0x1F6A2B1236C582BDULL, 0xAFDB78BF7750F03CULL } }, /* XSUM_XXH128_testdata[2873] */ + { 958, 0x0000000000000000ULL, { 0x759223EB7E626920ULL, 0x31CF01162098252DULL } }, /* XSUM_XXH128_testdata[2874] */ + { 958, 0x000000009E3779B1ULL, { 0xF31BB98C3F09BC45ULL, 0x26CEE1894B3B66F9ULL } }, /* XSUM_XXH128_testdata[2875] */ + { 958, 0x9E3779B185EBCA8DULL, { 0x7EFE66A40789FE53ULL, 0x7D9160BB2A238F66ULL } }, /* XSUM_XXH128_testdata[2876] */ + { 959, 0x0000000000000000ULL, { 0x513AF05AC8DD8178ULL, 0x01F887E34DFFA784ULL } }, /* XSUM_XXH128_testdata[2877] */ + { 959, 0x000000009E3779B1ULL, { 0xE083D432CF0278A0ULL, 0xA1E2E1C07FA9C6C6ULL } }, /* XSUM_XXH128_testdata[2878] */ + { 959, 0x9E3779B185EBCA8DULL, { 0x8C264637730C8DA7ULL, 0x1806DDCDD053DCAAULL } }, /* XSUM_XXH128_testdata[2879] */ + { 960, 0x0000000000000000ULL, { 0xFE24A9D0DDDF9D8AULL, 0x2210F8A92217BE08ULL } }, /* XSUM_XXH128_testdata[2880] */ + { 960, 0x000000009E3779B1ULL, { 0xF1EFC8D900491802ULL, 0x145574D695FEE78CULL } }, /* XSUM_XXH128_testdata[2881] */ + { 960, 0x9E3779B185EBCA8DULL, { 0xD9C532F2683CB21FULL, 0xBE99EC871CE598CBULL } }, /* XSUM_XXH128_testdata[2882] */ + { 961, 0x0000000000000000ULL, { 0x1CD144EFE4A034B5ULL, 0x927CED79D5FDED02ULL } }, /* XSUM_XXH128_testdata[2883] */ + { 961, 0x000000009E3779B1ULL, { 0x3217A6B14A41D6A6ULL, 0x93A3B037DF6B2704ULL } }, /* XSUM_XXH128_testdata[2884] */ + { 961, 0x9E3779B185EBCA8DULL, { 0x7858A817512ED8D9ULL, 0xD8CC9751CF369F25ULL } }, /* XSUM_XXH128_testdata[2885] */ + { 962, 0x0000000000000000ULL, { 0x2BD047984C5C5A81ULL, 0x9F6AC284DE55A5C4ULL } }, /* XSUM_XXH128_testdata[2886] */ + { 962, 0x000000009E3779B1ULL, { 0x1D3A9E30AFDACFAFULL, 0x2D08FD2B4943228BULL } }, /* XSUM_XXH128_testdata[2887] */ + { 962, 0x9E3779B185EBCA8DULL, { 0x8045BAB642C21C9FULL, 0x6A27FCAFE6BF4420ULL } }, /* XSUM_XXH128_testdata[2888] */ + { 963, 0x0000000000000000ULL, { 0x2831D5630D734EA0ULL, 0xBDCD1D0B238F62E3ULL } }, /* XSUM_XXH128_testdata[2889] */ + { 963, 0x000000009E3779B1ULL, { 0x66A9224395186DFEULL, 0xBBC4ADFBE5BE27B4ULL } }, /* XSUM_XXH128_testdata[2890] */ + { 963, 0x9E3779B185EBCA8DULL, { 0xF5BACD92232D0A62ULL, 0x9DBEDEA63B5449CCULL } }, /* XSUM_XXH128_testdata[2891] */ + { 964, 0x0000000000000000ULL, { 0xD533B0E90916E484ULL, 0x9C0506EEEBF50060ULL } }, /* XSUM_XXH128_testdata[2892] */ + { 964, 0x000000009E3779B1ULL, { 0x3F52FFF6A7C2F756ULL, 0x0EDAD18D2A1B5EA4ULL } }, /* XSUM_XXH128_testdata[2893] */ + { 964, 0x9E3779B185EBCA8DULL, { 0xB4289BD6EF7DF749ULL, 0xF6C8793F6193971FULL } }, /* XSUM_XXH128_testdata[2894] */ + { 965, 0x0000000000000000ULL, { 0x4B44F43FC25AD87FULL, 0xDF2D3A895ACC7467ULL } }, /* XSUM_XXH128_testdata[2895] */ + { 965, 0x000000009E3779B1ULL, { 0x26C9B264C8CD9F21ULL, 0x5EBAC3ACD82C4549ULL } }, /* XSUM_XXH128_testdata[2896] */ + { 965, 0x9E3779B185EBCA8DULL, { 0xDD12B4CB85317708ULL, 0x48C830B6689A353AULL } }, /* XSUM_XXH128_testdata[2897] */ + { 966, 0x0000000000000000ULL, { 0xFE4B70BD9F2DF5EDULL, 0x843E2A03E6AACBB6ULL } }, /* XSUM_XXH128_testdata[2898] */ + { 966, 0x000000009E3779B1ULL, { 0x9952DFFBB8C6DEF1ULL, 0x59C4B2DE62548C6CULL } }, /* XSUM_XXH128_testdata[2899] */ + { 966, 0x9E3779B185EBCA8DULL, { 0x6F3913836220D1F8ULL, 0x9CBCA0817801F8FCULL } }, /* XSUM_XXH128_testdata[2900] */ + { 967, 0x0000000000000000ULL, { 0x439BFC10070D916AULL, 0x95BC0D60BF55ACE2ULL } }, /* XSUM_XXH128_testdata[2901] */ + { 967, 0x000000009E3779B1ULL, { 0xE0825636C3E3FA01ULL, 0x4E90D890FB2C7EABULL } }, /* XSUM_XXH128_testdata[2902] */ + { 967, 0x9E3779B185EBCA8DULL, { 0x587614E299F460B0ULL, 0x18BE2726AF32F9CAULL } }, /* XSUM_XXH128_testdata[2903] */ + { 968, 0x0000000000000000ULL, { 0xB052046C8A9324BDULL, 0x48F38085418CFC8FULL } }, /* XSUM_XXH128_testdata[2904] */ + { 968, 0x000000009E3779B1ULL, { 0x1F1BE893B038FA7FULL, 0xE9319F16E89B057DULL } }, /* XSUM_XXH128_testdata[2905] */ + { 968, 0x9E3779B185EBCA8DULL, { 0x46E202D4E5756772ULL, 0xF34155EBF7E46BD5ULL } }, /* XSUM_XXH128_testdata[2906] */ + { 969, 0x0000000000000000ULL, { 0x2806F44CE1246DDEULL, 0xC7C5840439D0B680ULL } }, /* XSUM_XXH128_testdata[2907] */ + { 969, 0x000000009E3779B1ULL, { 0x92A4679094B245B4ULL, 0xEC0E223698AF00F9ULL } }, /* XSUM_XXH128_testdata[2908] */ + { 969, 0x9E3779B185EBCA8DULL, { 0xA77A7EA17119CAC3ULL, 0xE5C10AF39ECD6DC3ULL } }, /* XSUM_XXH128_testdata[2909] */ + { 970, 0x0000000000000000ULL, { 0x25F0AF189799E631ULL, 0x52EBB6059C93C25EULL } }, /* XSUM_XXH128_testdata[2910] */ + { 970, 0x000000009E3779B1ULL, { 0xF47C23F84F892CCBULL, 0x7EFDE225570DA882ULL } }, /* XSUM_XXH128_testdata[2911] */ + { 970, 0x9E3779B185EBCA8DULL, { 0x9C9B5C0F36454D7CULL, 0xDBA0CA7916CF81FCULL } }, /* XSUM_XXH128_testdata[2912] */ + { 971, 0x0000000000000000ULL, { 0xF50246B95ECDA9E4ULL, 0xD29AD100AE124106ULL } }, /* XSUM_XXH128_testdata[2913] */ + { 971, 0x000000009E3779B1ULL, { 0x32F1198E0E153747ULL, 0x8781EA4877582CA1ULL } }, /* XSUM_XXH128_testdata[2914] */ + { 971, 0x9E3779B185EBCA8DULL, { 0xE9ACF6D87169767DULL, 0x0F1EF3F25D75E9E0ULL } }, /* XSUM_XXH128_testdata[2915] */ + { 972, 0x0000000000000000ULL, { 0x3EF86FEA3341E42EULL, 0x0CEC59FCE821D50FULL } }, /* XSUM_XXH128_testdata[2916] */ + { 972, 0x000000009E3779B1ULL, { 0x7DACC4637A8EE090ULL, 0xB3D0CB578CBD5E31ULL } }, /* XSUM_XXH128_testdata[2917] */ + { 972, 0x9E3779B185EBCA8DULL, { 0x58F574C8DEB88D36ULL, 0xE1950E6718466FCDULL } }, /* XSUM_XXH128_testdata[2918] */ + { 973, 0x0000000000000000ULL, { 0xFD473154ADC32463ULL, 0x5FEC6725465127D7ULL } }, /* XSUM_XXH128_testdata[2919] */ + { 973, 0x000000009E3779B1ULL, { 0x7A8E2519A934C44BULL, 0x6AE617AA17C1AF6DULL } }, /* XSUM_XXH128_testdata[2920] */ + { 973, 0x9E3779B185EBCA8DULL, { 0x74FA64423D24BD54ULL, 0xBF8416EA3B015BD1ULL } }, /* XSUM_XXH128_testdata[2921] */ + { 974, 0x0000000000000000ULL, { 0x79D7095057FB1A01ULL, 0x26ED7EB8C686C3A8ULL } }, /* XSUM_XXH128_testdata[2922] */ + { 974, 0x000000009E3779B1ULL, { 0x9B70A49BA9DD97DDULL, 0x264B136048796FF8ULL } }, /* XSUM_XXH128_testdata[2923] */ + { 974, 0x9E3779B185EBCA8DULL, { 0x910CD3E6487021B6ULL, 0x7967318B6B3F564DULL } }, /* XSUM_XXH128_testdata[2924] */ + { 975, 0x0000000000000000ULL, { 0x2C191A1968EAE2A5ULL, 0x75DF97A6C73D6C68ULL } }, /* XSUM_XXH128_testdata[2925] */ + { 975, 0x000000009E3779B1ULL, { 0x3B05457C5F64758BULL, 0x57C7F69656405066ULL } }, /* XSUM_XXH128_testdata[2926] */ + { 975, 0x9E3779B185EBCA8DULL, { 0xC7BE6591F89CB029ULL, 0x5403015E3EA46840ULL } }, /* XSUM_XXH128_testdata[2927] */ + { 976, 0x0000000000000000ULL, { 0x847930F68C337E18ULL, 0x1E7D90AB1806F9ACULL } }, /* XSUM_XXH128_testdata[2928] */ + { 976, 0x000000009E3779B1ULL, { 0x78FC95CA1BF83AABULL, 0x29FC63C84241113EULL } }, /* XSUM_XXH128_testdata[2929] */ + { 976, 0x9E3779B185EBCA8DULL, { 0x37BAEA0B6E5FF98BULL, 0xED744374D02BF728ULL } }, /* XSUM_XXH128_testdata[2930] */ + { 977, 0x0000000000000000ULL, { 0x5CCB2E293A449EF5ULL, 0x5F20D6521AF950CCULL } }, /* XSUM_XXH128_testdata[2931] */ + { 977, 0x000000009E3779B1ULL, { 0xF2D458068FE676B2ULL, 0x5E8BD382773C8468ULL } }, /* XSUM_XXH128_testdata[2932] */ + { 977, 0x9E3779B185EBCA8DULL, { 0x3D029A1FADD33504ULL, 0x045075000C19E718ULL } }, /* XSUM_XXH128_testdata[2933] */ + { 978, 0x0000000000000000ULL, { 0x5BE8E278B6C809D3ULL, 0x30BC6764B04FC855ULL } }, /* XSUM_XXH128_testdata[2934] */ + { 978, 0x000000009E3779B1ULL, { 0x61C6C496DC338059ULL, 0xEB7B1CD21D7FB368ULL } }, /* XSUM_XXH128_testdata[2935] */ + { 978, 0x9E3779B185EBCA8DULL, { 0xC287AC22226D2098ULL, 0xB42EC5780F88317DULL } }, /* XSUM_XXH128_testdata[2936] */ + { 979, 0x0000000000000000ULL, { 0x42B7B8DF99998767ULL, 0x5FD0888683769122ULL } }, /* XSUM_XXH128_testdata[2937] */ + { 979, 0x000000009E3779B1ULL, { 0xE4A9A81D8AB4AB0DULL, 0x09CAB83508F4BD5BULL } }, /* XSUM_XXH128_testdata[2938] */ + { 979, 0x9E3779B185EBCA8DULL, { 0x8DA15029F74AB2DEULL, 0xB9EF03E6F77426C0ULL } }, /* XSUM_XXH128_testdata[2939] */ + { 980, 0x0000000000000000ULL, { 0x68F9C7FE0AC0FF69ULL, 0xF961B8B7C4D259C6ULL } }, /* XSUM_XXH128_testdata[2940] */ + { 980, 0x000000009E3779B1ULL, { 0xF46558A491ACE20BULL, 0xBD21AB38EFCFF7FBULL } }, /* XSUM_XXH128_testdata[2941] */ + { 980, 0x9E3779B185EBCA8DULL, { 0x37995AA9D23FD7E3ULL, 0xDBE4B9B2D499F8AFULL } }, /* XSUM_XXH128_testdata[2942] */ + { 981, 0x0000000000000000ULL, { 0xB67A3268F002C6CBULL, 0x837269DB83EE1BF3ULL } }, /* XSUM_XXH128_testdata[2943] */ + { 981, 0x000000009E3779B1ULL, { 0x323B2EFB702B748CULL, 0x0A3457180DFFBA66ULL } }, /* XSUM_XXH128_testdata[2944] */ + { 981, 0x9E3779B185EBCA8DULL, { 0x82703E08CCCEDC61ULL, 0x2E823800A520503CULL } }, /* XSUM_XXH128_testdata[2945] */ + { 982, 0x0000000000000000ULL, { 0xC047953EAE93E73CULL, 0xFD28DF741C4E0994ULL } }, /* XSUM_XXH128_testdata[2946] */ + { 982, 0x000000009E3779B1ULL, { 0x46FB1C218744E6C0ULL, 0xF3CF166F1443839BULL } }, /* XSUM_XXH128_testdata[2947] */ + { 982, 0x9E3779B185EBCA8DULL, { 0xE60DA263894C9E34ULL, 0xEB3A82222AB908C5ULL } }, /* XSUM_XXH128_testdata[2948] */ + { 983, 0x0000000000000000ULL, { 0xE08022B8696243A0ULL, 0x5FC53C80C899CCA9ULL } }, /* XSUM_XXH128_testdata[2949] */ + { 983, 0x000000009E3779B1ULL, { 0x9C1F7EAF0E17D458ULL, 0xD7AEC659568A77E7ULL } }, /* XSUM_XXH128_testdata[2950] */ + { 983, 0x9E3779B185EBCA8DULL, { 0x6E9D9A802898AC15ULL, 0x485BD6F9D2F57BF2ULL } }, /* XSUM_XXH128_testdata[2951] */ + { 984, 0x0000000000000000ULL, { 0x7F68AD9E65D86585ULL, 0x42824B590073B95BULL } }, /* XSUM_XXH128_testdata[2952] */ + { 984, 0x000000009E3779B1ULL, { 0xFC562511C68C8543ULL, 0x5676AFEBB53CF3AAULL } }, /* XSUM_XXH128_testdata[2953] */ + { 984, 0x9E3779B185EBCA8DULL, { 0xED88D56ECC065575ULL, 0x579F539793C722BAULL } }, /* XSUM_XXH128_testdata[2954] */ + { 985, 0x0000000000000000ULL, { 0xF6A5C3B386A60BBFULL, 0x4D829A7DA2C980E5ULL } }, /* XSUM_XXH128_testdata[2955] */ + { 985, 0x000000009E3779B1ULL, { 0xFBA4C26419019BB1ULL, 0xE5011E7E4B867266ULL } }, /* XSUM_XXH128_testdata[2956] */ + { 985, 0x9E3779B185EBCA8DULL, { 0x77A345A5E3F88709ULL, 0xA34C2E4C3E019383ULL } }, /* XSUM_XXH128_testdata[2957] */ + { 986, 0x0000000000000000ULL, { 0x58CC3E909FA9F5BDULL, 0xBCF19357547A46A1ULL } }, /* XSUM_XXH128_testdata[2958] */ + { 986, 0x000000009E3779B1ULL, { 0x173E38D709F302D1ULL, 0xB75BEFA59DEE08E3ULL } }, /* XSUM_XXH128_testdata[2959] */ + { 986, 0x9E3779B185EBCA8DULL, { 0x011D6945236E2C0CULL, 0x05D820528D3EC948ULL } }, /* XSUM_XXH128_testdata[2960] */ + { 987, 0x0000000000000000ULL, { 0x0D47523883F69FA9ULL, 0x1795C3EE73981000ULL } }, /* XSUM_XXH128_testdata[2961] */ + { 987, 0x000000009E3779B1ULL, { 0x1FB819973209AA58ULL, 0xD24DB7F040CC3DEEULL } }, /* XSUM_XXH128_testdata[2962] */ + { 987, 0x9E3779B185EBCA8DULL, { 0x570D1E7719E41DC2ULL, 0x241C76567175D78BULL } }, /* XSUM_XXH128_testdata[2963] */ + { 988, 0x0000000000000000ULL, { 0x1A1AC46CBBEAAAD1ULL, 0x1581FC5E25138E8BULL } }, /* XSUM_XXH128_testdata[2964] */ + { 988, 0x000000009E3779B1ULL, { 0xC09665D37E45FF34ULL, 0x507ED52AF37C5411ULL } }, /* XSUM_XXH128_testdata[2965] */ + { 988, 0x9E3779B185EBCA8DULL, { 0x9AED37FD61F9A416ULL, 0x1E8652590A8CFE56ULL } }, /* XSUM_XXH128_testdata[2966] */ + { 989, 0x0000000000000000ULL, { 0x8E93C4B050966BB1ULL, 0xE6FA042B4AE9092AULL } }, /* XSUM_XXH128_testdata[2967] */ + { 989, 0x000000009E3779B1ULL, { 0x88D498404E75B04CULL, 0x7564E8ED369CE2A3ULL } }, /* XSUM_XXH128_testdata[2968] */ + { 989, 0x9E3779B185EBCA8DULL, { 0x108C8174101F0EACULL, 0x2CDB0009B6CA763BULL } }, /* XSUM_XXH128_testdata[2969] */ + { 990, 0x0000000000000000ULL, { 0xC2EDA1B6BD6749BCULL, 0xE67F47F7F777DC0AULL } }, /* XSUM_XXH128_testdata[2970] */ + { 990, 0x000000009E3779B1ULL, { 0x6A492B2F7CA2FA67ULL, 0xF6FC64CAC3D922B2ULL } }, /* XSUM_XXH128_testdata[2971] */ + { 990, 0x9E3779B185EBCA8DULL, { 0xEC6BAD1C8B34102DULL, 0x6BE8F208CD58ACDFULL } }, /* XSUM_XXH128_testdata[2972] */ + { 991, 0x0000000000000000ULL, { 0xC7B1972C9C921032ULL, 0x09D93682FCFE3170ULL } }, /* XSUM_XXH128_testdata[2973] */ + { 991, 0x000000009E3779B1ULL, { 0xD23D32EB1718912DULL, 0x35FD137B362C4A29ULL } }, /* XSUM_XXH128_testdata[2974] */ + { 991, 0x9E3779B185EBCA8DULL, { 0xEA5BCA1A20CEDB3EULL, 0x723401368315AE32ULL } }, /* XSUM_XXH128_testdata[2975] */ + { 992, 0x0000000000000000ULL, { 0x18C85CB4A2C9A620ULL, 0x4147A4432667BA79ULL } }, /* XSUM_XXH128_testdata[2976] */ + { 992, 0x000000009E3779B1ULL, { 0x82B61CD8ECA0EC08ULL, 0x7B5FFD78BFCCC64CULL } }, /* XSUM_XXH128_testdata[2977] */ + { 992, 0x9E3779B185EBCA8DULL, { 0xB449E17F4B0FDD67ULL, 0x869F6166B91444BEULL } }, /* XSUM_XXH128_testdata[2978] */ + { 993, 0x0000000000000000ULL, { 0xFEEDE161A30CA03AULL, 0xDEDF5D73D826310BULL } }, /* XSUM_XXH128_testdata[2979] */ + { 993, 0x000000009E3779B1ULL, { 0x7B9643727C6A0198ULL, 0x4B46223E08EAF140ULL } }, /* XSUM_XXH128_testdata[2980] */ + { 993, 0x9E3779B185EBCA8DULL, { 0x9F67135085013538ULL, 0xE76FC80B4F9FC779ULL } }, /* XSUM_XXH128_testdata[2981] */ + { 994, 0x0000000000000000ULL, { 0xF6B293974CB25B1AULL, 0x1BAC94C63A84EB72ULL } }, /* XSUM_XXH128_testdata[2982] */ + { 994, 0x000000009E3779B1ULL, { 0x01F3181E85CA645AULL, 0xB016984DFD718012ULL } }, /* XSUM_XXH128_testdata[2983] */ + { 994, 0x9E3779B185EBCA8DULL, { 0x24528E293048D44AULL, 0xE77DFA6AA507A640ULL } }, /* XSUM_XXH128_testdata[2984] */ + { 995, 0x0000000000000000ULL, { 0x746034558D6E91DEULL, 0xC4D942010178686CULL } }, /* XSUM_XXH128_testdata[2985] */ + { 995, 0x000000009E3779B1ULL, { 0xC5568304397C6210ULL, 0x2EEAA0DF443FBEFEULL } }, /* XSUM_XXH128_testdata[2986] */ + { 995, 0x9E3779B185EBCA8DULL, { 0x5C3241656A5ACEE4ULL, 0x951A37627C03CEFCULL } }, /* XSUM_XXH128_testdata[2987] */ + { 996, 0x0000000000000000ULL, { 0x2DE3D36B702237AEULL, 0xBA750AF26E73F841ULL } }, /* XSUM_XXH128_testdata[2988] */ + { 996, 0x000000009E3779B1ULL, { 0xFB4B0B229BE66D6FULL, 0xA06F84C8BE16CAB2ULL } }, /* XSUM_XXH128_testdata[2989] */ + { 996, 0x9E3779B185EBCA8DULL, { 0x76F1F1A3E234DE7BULL, 0x3A14E441D4265653ULL } }, /* XSUM_XXH128_testdata[2990] */ + { 997, 0x0000000000000000ULL, { 0x6192470CD9AD6E76ULL, 0xF3620C6D1E4D403DULL } }, /* XSUM_XXH128_testdata[2991] */ + { 997, 0x000000009E3779B1ULL, { 0x2F6E1B2AD67F361FULL, 0x865722A3DE2C5D91ULL } }, /* XSUM_XXH128_testdata[2992] */ + { 997, 0x9E3779B185EBCA8DULL, { 0x0E079ABD2F1B1C45ULL, 0x38B74FD150FDD2C2ULL } }, /* XSUM_XXH128_testdata[2993] */ + { 998, 0x0000000000000000ULL, { 0x7734E47623D6B685ULL, 0x6BB414AB83554868ULL } }, /* XSUM_XXH128_testdata[2994] */ + { 998, 0x000000009E3779B1ULL, { 0x963F5D12A8E2B0E7ULL, 0xCB315DFAC5960D57ULL } }, /* XSUM_XXH128_testdata[2995] */ + { 998, 0x9E3779B185EBCA8DULL, { 0xE3434BA35184F2C1ULL, 0x89EA478EAA5EB072ULL } }, /* XSUM_XXH128_testdata[2996] */ + { 999, 0x0000000000000000ULL, { 0x55A65708067ACEDCULL, 0xAAAF80EDEE954CB4ULL } }, /* XSUM_XXH128_testdata[2997] */ + { 999, 0x000000009E3779B1ULL, { 0x2031CFC2055D17A2ULL, 0x73C964EDAD129BA9ULL } }, /* XSUM_XXH128_testdata[2998] */ + { 999, 0x9E3779B185EBCA8DULL, { 0x27CC8E3AE8EE40D8ULL, 0x1F537C7FF88DF8FEULL } }, /* XSUM_XXH128_testdata[2999] */ + { 1000, 0x0000000000000000ULL, { 0xACA2DDE0F1951B9AULL, 0x9B857ABF662E5A25ULL } }, /* XSUM_XXH128_testdata[3000] */ + { 1000, 0x000000009E3779B1ULL, { 0x43A934BC1022CFA2ULL, 0xFD7DA20330479061ULL } }, /* XSUM_XXH128_testdata[3001] */ + { 1000, 0x9E3779B185EBCA8DULL, { 0xF4DD9ADF00FFB410ULL, 0x628DE7FF3227FE4EULL } }, /* XSUM_XXH128_testdata[3002] */ + { 1001, 0x0000000000000000ULL, { 0xE9101423F454BD38ULL, 0xCD5E3C397F1723C7ULL } }, /* XSUM_XXH128_testdata[3003] */ + { 1001, 0x000000009E3779B1ULL, { 0x9391906FB5D868A3ULL, 0x4267EC273C22D27DULL } }, /* XSUM_XXH128_testdata[3004] */ + { 1001, 0x9E3779B185EBCA8DULL, { 0xC68210B5AC8E382BULL, 0xB1E746E21ADFEF59ULL } }, /* XSUM_XXH128_testdata[3005] */ + { 1002, 0x0000000000000000ULL, { 0xF49D4971CEA05084ULL, 0x5DEEB3E3297CDF61ULL } }, /* XSUM_XXH128_testdata[3006] */ + { 1002, 0x000000009E3779B1ULL, { 0x84BAC8866CFBE62AULL, 0xB551CE36205CBF6BULL } }, /* XSUM_XXH128_testdata[3007] */ + { 1002, 0x9E3779B185EBCA8DULL, { 0x3D2A97C8F19264B1ULL, 0xBDE2A395425C028CULL } }, /* XSUM_XXH128_testdata[3008] */ + { 1003, 0x0000000000000000ULL, { 0xBEBD123678D098EDULL, 0x3A8D2D2DC43DB7F7ULL } }, /* XSUM_XXH128_testdata[3009] */ + { 1003, 0x000000009E3779B1ULL, { 0x0EA2CAE06A0132AEULL, 0xCCF42BC61B629204ULL } }, /* XSUM_XXH128_testdata[3010] */ + { 1003, 0x9E3779B185EBCA8DULL, { 0x36DDC18A5C58CB6BULL, 0xC620D2351E441575ULL } }, /* XSUM_XXH128_testdata[3011] */ + { 1004, 0x0000000000000000ULL, { 0xD386DFEFE995B490ULL, 0xC8A965459B33D032ULL } }, /* XSUM_XXH128_testdata[3012] */ + { 1004, 0x000000009E3779B1ULL, { 0x06398004A63F7795ULL, 0x36C4F494D3E2CA78ULL } }, /* XSUM_XXH128_testdata[3013] */ + { 1004, 0x9E3779B185EBCA8DULL, { 0x2F3BC3AA5EF7DC03ULL, 0x6C016CB2728539BDULL } }, /* XSUM_XXH128_testdata[3014] */ + { 1005, 0x0000000000000000ULL, { 0x4E1A567D14E33DE3ULL, 0xC1F1A89A2DD5289DULL } }, /* XSUM_XXH128_testdata[3015] */ + { 1005, 0x000000009E3779B1ULL, { 0xFE8E9E01C6A26739ULL, 0xF518EA3CD34F8EBDULL } }, /* XSUM_XXH128_testdata[3016] */ + { 1005, 0x9E3779B185EBCA8DULL, { 0xA031BB7B4EB59BB4ULL, 0xF7FDC9DFD71B9401ULL } }, /* XSUM_XXH128_testdata[3017] */ + { 1006, 0x0000000000000000ULL, { 0xFC95AF5EB710D6E2ULL, 0x8836516301B915F4ULL } }, /* XSUM_XXH128_testdata[3018] */ + { 1006, 0x000000009E3779B1ULL, { 0xEFBF4F5196C66F1FULL, 0x62A4EA08757775D2ULL } }, /* XSUM_XXH128_testdata[3019] */ + { 1006, 0x9E3779B185EBCA8DULL, { 0x8AE9398B0A28B5A6ULL, 0xFA33031DC7D98BADULL } }, /* XSUM_XXH128_testdata[3020] */ + { 1007, 0x0000000000000000ULL, { 0x3C94D3B1BE27DF09ULL, 0xF9AA6E05CE76ACBAULL } }, /* XSUM_XXH128_testdata[3021] */ + { 1007, 0x000000009E3779B1ULL, { 0x08C69442145A9977ULL, 0xAAC33525E6E2A20BULL } }, /* XSUM_XXH128_testdata[3022] */ + { 1007, 0x9E3779B185EBCA8DULL, { 0x1AFF90CE06456B96ULL, 0xDB3C5ED47F6EF373ULL } }, /* XSUM_XXH128_testdata[3023] */ + { 1008, 0x0000000000000000ULL, { 0x7443AF3E66764D1EULL, 0x1A866F2FAA47512AULL } }, /* XSUM_XXH128_testdata[3024] */ + { 1008, 0x000000009E3779B1ULL, { 0x03FE05EAFDEC001BULL, 0xB736B9F6CE74492EULL } }, /* XSUM_XXH128_testdata[3025] */ + { 1008, 0x9E3779B185EBCA8DULL, { 0x3F58BAB1AA894D38ULL, 0x0AD76B436F9799D4ULL } }, /* XSUM_XXH128_testdata[3026] */ + { 1009, 0x0000000000000000ULL, { 0x4380AF6AD92B433CULL, 0x9D23EAD9DBE63D80ULL } }, /* XSUM_XXH128_testdata[3027] */ + { 1009, 0x000000009E3779B1ULL, { 0x7E116B10AC9F9738ULL, 0x20ED143070756116ULL } }, /* XSUM_XXH128_testdata[3028] */ + { 1009, 0x9E3779B185EBCA8DULL, { 0xF32A8F872502E567ULL, 0x779D3A9E57E1A0A7ULL } }, /* XSUM_XXH128_testdata[3029] */ + { 1010, 0x0000000000000000ULL, { 0x320660076851588DULL, 0xB1EE00F0A740CA61ULL } }, /* XSUM_XXH128_testdata[3030] */ + { 1010, 0x000000009E3779B1ULL, { 0x18CEC274BC2AFFCEULL, 0x4AB60AA701C8D322ULL } }, /* XSUM_XXH128_testdata[3031] */ + { 1010, 0x9E3779B185EBCA8DULL, { 0xA0EA89CBE904A81DULL, 0x1FA67E28EFC620F5ULL } }, /* XSUM_XXH128_testdata[3032] */ + { 1011, 0x0000000000000000ULL, { 0xA9B11CA20334C7EDULL, 0xD9F5E80575541F73ULL } }, /* XSUM_XXH128_testdata[3033] */ + { 1011, 0x000000009E3779B1ULL, { 0x079CE54326ADD435ULL, 0x631F2B6BA36118BCULL } }, /* XSUM_XXH128_testdata[3034] */ + { 1011, 0x9E3779B185EBCA8DULL, { 0x58D0282A68653B68ULL, 0xA75C0D59F15ECEC8ULL } }, /* XSUM_XXH128_testdata[3035] */ + { 1012, 0x0000000000000000ULL, { 0xC434B9AD89D8BFBAULL, 0x11A716644D1A9A2BULL } }, /* XSUM_XXH128_testdata[3036] */ + { 1012, 0x000000009E3779B1ULL, { 0xC5FCD7165D9802E1ULL, 0xA899C3CF940FD8F8ULL } }, /* XSUM_XXH128_testdata[3037] */ + { 1012, 0x9E3779B185EBCA8DULL, { 0x0653B8DDDF575EA5ULL, 0x37B42FC4F1C1A8E7ULL } }, /* XSUM_XXH128_testdata[3038] */ + { 1013, 0x0000000000000000ULL, { 0x5791552B6B00AECCULL, 0x66939E957761B360ULL } }, /* XSUM_XXH128_testdata[3039] */ + { 1013, 0x000000009E3779B1ULL, { 0xC3B255198937C2C3ULL, 0xCEA2048357FF62B9ULL } }, /* XSUM_XXH128_testdata[3040] */ + { 1013, 0x9E3779B185EBCA8DULL, { 0x69069D993E0CE6ABULL, 0xC9231946FCE0FD2FULL } }, /* XSUM_XXH128_testdata[3041] */ + { 1014, 0x0000000000000000ULL, { 0xF74095848CED1A23ULL, 0x8B0E3D59875267AAULL } }, /* XSUM_XXH128_testdata[3042] */ + { 1014, 0x000000009E3779B1ULL, { 0xDB086A6B58E67512ULL, 0x71623449B9360D8BULL } }, /* XSUM_XXH128_testdata[3043] */ + { 1014, 0x9E3779B185EBCA8DULL, { 0x346F7032D6AC56D8ULL, 0x66507AA2A0250920ULL } }, /* XSUM_XXH128_testdata[3044] */ + { 1015, 0x0000000000000000ULL, { 0xBF0615AAE6F0E1D9ULL, 0x59FF0CA2A27A743FULL } }, /* XSUM_XXH128_testdata[3045] */ + { 1015, 0x000000009E3779B1ULL, { 0xBD9CF7FAAFB4E8D9ULL, 0x8976CE7B641DD4B5ULL } }, /* XSUM_XXH128_testdata[3046] */ + { 1015, 0x9E3779B185EBCA8DULL, { 0xABBA2C176705503BULL, 0x105AEF2A7E645164ULL } }, /* XSUM_XXH128_testdata[3047] */ + { 1016, 0x0000000000000000ULL, { 0xC5DBE5C1E77C6B4AULL, 0xCD695E0F071715A1ULL } }, /* XSUM_XXH128_testdata[3048] */ + { 1016, 0x000000009E3779B1ULL, { 0x5F1E4D2596159339ULL, 0x56E50EFE3914774AULL } }, /* XSUM_XXH128_testdata[3049] */ + { 1016, 0x9E3779B185EBCA8DULL, { 0x5D66B028CDDB8081ULL, 0x4D7EC39E7233691EULL } }, /* XSUM_XXH128_testdata[3050] */ + { 1017, 0x0000000000000000ULL, { 0xFCC3D23FCA4F2F34ULL, 0x575B96EA7526700DULL } }, /* XSUM_XXH128_testdata[3051] */ + { 1017, 0x000000009E3779B1ULL, { 0xD6D6319A6EE46FF2ULL, 0xAFC67A67572806D8ULL } }, /* XSUM_XXH128_testdata[3052] */ + { 1017, 0x9E3779B185EBCA8DULL, { 0xE6F90A0F39E023A0ULL, 0x1700D1DFE8426F34ULL } }, /* XSUM_XXH128_testdata[3053] */ + { 1018, 0x0000000000000000ULL, { 0x9AB47ADA8C071173ULL, 0x5D7DA0F19C7F608AULL } }, /* XSUM_XXH128_testdata[3054] */ + { 1018, 0x000000009E3779B1ULL, { 0xF1638B9E3D33EC62ULL, 0x1D3C85B93B824F15ULL } }, /* XSUM_XXH128_testdata[3055] */ + { 1018, 0x9E3779B185EBCA8DULL, { 0x6D49E13111072E23ULL, 0xB1A855B9DCC5E22AULL } }, /* XSUM_XXH128_testdata[3056] */ + { 1019, 0x0000000000000000ULL, { 0x5C4B1CCBE7064BAAULL, 0xB44AB6CE817A2D48ULL } }, /* XSUM_XXH128_testdata[3057] */ + { 1019, 0x000000009E3779B1ULL, { 0xA18610EDF4F720BAULL, 0x76BD23E02396D0B8ULL } }, /* XSUM_XXH128_testdata[3058] */ + { 1019, 0x9E3779B185EBCA8DULL, { 0x1F6737EEC7BD8C58ULL, 0xA2DC5623A04FB112ULL } }, /* XSUM_XXH128_testdata[3059] */ + { 1020, 0x0000000000000000ULL, { 0x0FBE1CF65215FDE2ULL, 0xF7C89A39836D3C75ULL } }, /* XSUM_XXH128_testdata[3060] */ + { 1020, 0x000000009E3779B1ULL, { 0x209E782126B20852ULL, 0x6A1B20713BC00CE2ULL } }, /* XSUM_XXH128_testdata[3061] */ + { 1020, 0x9E3779B185EBCA8DULL, { 0xE9C7080F15D87D03ULL, 0x45014E5E5DB1C51FULL } }, /* XSUM_XXH128_testdata[3062] */ + { 1021, 0x0000000000000000ULL, { 0x8770C599A57B5E49ULL, 0x2DA6EB0FE1AB361BULL } }, /* XSUM_XXH128_testdata[3063] */ + { 1021, 0x000000009E3779B1ULL, { 0xB50620418B7CB38FULL, 0xFD3FF5E7B0678908ULL } }, /* XSUM_XXH128_testdata[3064] */ + { 1021, 0x9E3779B185EBCA8DULL, { 0xA3E7956E4C5003B5ULL, 0x400B78466BBDA1D3ULL } }, /* XSUM_XXH128_testdata[3065] */ + { 1022, 0x0000000000000000ULL, { 0x2086CA2AFA9691C3ULL, 0xD023203A82F9709AULL } }, /* XSUM_XXH128_testdata[3066] */ + { 1022, 0x000000009E3779B1ULL, { 0x3BD3FCF081C8F1F2ULL, 0x141EDED83C7DD1A3ULL } }, /* XSUM_XXH128_testdata[3067] */ + { 1022, 0x9E3779B185EBCA8DULL, { 0x9EE4476C3178A9C6ULL, 0x8E9950C03129B3AAULL } }, /* XSUM_XXH128_testdata[3068] */ + { 1023, 0x0000000000000000ULL, { 0x87A8F7B2F2E22496ULL, 0xE8083E4D83214C3CULL } }, /* XSUM_XXH128_testdata[3069] */ + { 1023, 0x000000009E3779B1ULL, { 0xC38922D5971CD2D7ULL, 0xFBD299789B9A9759ULL } }, /* XSUM_XXH128_testdata[3070] */ + { 1023, 0x9E3779B185EBCA8DULL, { 0x0F0F02DE8590E1B5ULL, 0x96B80FE329CE5E35ULL } }, /* XSUM_XXH128_testdata[3071] */ + { 1024, 0x0000000000000000ULL, { 0xDD85C9B5C1109C5CULL, 0x0D30D24071C64C57ULL } }, /* XSUM_XXH128_testdata[3072] */ + { 1024, 0x000000009E3779B1ULL, { 0xB8B95C07CD4A75FAULL, 0x885B0B4DEBE3D2FFULL } }, /* XSUM_XXH128_testdata[3073] */ + { 1024, 0x9E3779B185EBCA8DULL, { 0xEF368A8A2EBABAEFULL, 0x17600EFE2B493A18ULL } }, /* XSUM_XXH128_testdata[3074] */ + { 1025, 0x0000000000000000ULL, { 0xD870C0FA13211C6AULL, 0xFD3EE4FE7F2954C6ULL } }, /* XSUM_XXH128_testdata[3075] */ + { 1025, 0x000000009E3779B1ULL, { 0x2F15255340AE4F6CULL, 0x3364FAD6F5FF1741ULL } }, /* XSUM_XXH128_testdata[3076] */ + { 1025, 0x9E3779B185EBCA8DULL, { 0x96792BCF9AF88519ULL, 0x2C383949F57BF7E1ULL } }, /* XSUM_XXH128_testdata[3077] */ + { 1026, 0x0000000000000000ULL, { 0x98CE9E9675649F1BULL, 0xEE151334890B008EULL } }, /* XSUM_XXH128_testdata[3078] */ + { 1026, 0x000000009E3779B1ULL, { 0xAE374C50E2D72D3FULL, 0x3C0083CA64056177ULL } }, /* XSUM_XXH128_testdata[3079] */ + { 1026, 0x9E3779B185EBCA8DULL, { 0x8B5475338DDAF953ULL, 0x5C70F4886F10F90CULL } }, /* XSUM_XXH128_testdata[3080] */ + { 1027, 0x0000000000000000ULL, { 0x1DB6A5ED5D936883ULL, 0x4B58657B8E4AF4AFULL } }, /* XSUM_XXH128_testdata[3081] */ + { 1027, 0x000000009E3779B1ULL, { 0x1F0327D5BC92B0C2ULL, 0x15D8618535E13AF6ULL } }, /* XSUM_XXH128_testdata[3082] */ + { 1027, 0x9E3779B185EBCA8DULL, { 0xCEF217D93E959D1AULL, 0xCF4BFDDF7CA0D775ULL } }, /* XSUM_XXH128_testdata[3083] */ + { 1028, 0x0000000000000000ULL, { 0x9C9AD07A2A115FA7ULL, 0x7A56749DDBBFF06CULL } }, /* XSUM_XXH128_testdata[3084] */ + { 1028, 0x000000009E3779B1ULL, { 0x9E7FB5B07B5F3192ULL, 0x0EF83467C7BC898BULL } }, /* XSUM_XXH128_testdata[3085] */ + { 1028, 0x9E3779B185EBCA8DULL, { 0x5D36EACAADB1279BULL, 0xF632E67B93AF874FULL } }, /* XSUM_XXH128_testdata[3086] */ + { 1029, 0x0000000000000000ULL, { 0x155F9CDB78CD7842ULL, 0xC37AFC8DDC71AEAEULL } }, /* XSUM_XXH128_testdata[3087] */ + { 1029, 0x000000009E3779B1ULL, { 0x904C9864D6A85F01ULL, 0x091A2F9642287C23ULL } }, /* XSUM_XXH128_testdata[3088] */ + { 1029, 0x9E3779B185EBCA8DULL, { 0xFAA98C40D531E1DEULL, 0x0E599B28E5E063C5ULL } }, /* XSUM_XXH128_testdata[3089] */ + { 1030, 0x0000000000000000ULL, { 0x7A956CA41E99B600ULL, 0xF858F386920C9388ULL } }, /* XSUM_XXH128_testdata[3090] */ + { 1030, 0x000000009E3779B1ULL, { 0x9AC874B5EB45869FULL, 0x8FA4FCA206DF6A10ULL } }, /* XSUM_XXH128_testdata[3091] */ + { 1030, 0x9E3779B185EBCA8DULL, { 0x0B5360BD1D404FDEULL, 0xE60BE4A532669E16ULL } }, /* XSUM_XXH128_testdata[3092] */ + { 1031, 0x0000000000000000ULL, { 0x69DABF166D51A277ULL, 0xCBE5A10A27AA237FULL } }, /* XSUM_XXH128_testdata[3093] */ + { 1031, 0x000000009E3779B1ULL, { 0x105D1BB70EFEF0CBULL, 0xD0B2BB8DB3A15ABCULL } }, /* XSUM_XXH128_testdata[3094] */ + { 1031, 0x9E3779B185EBCA8DULL, { 0x8CA6A3E7C08A8FC3ULL, 0xD77C4B95D9C8C6C6ULL } }, /* XSUM_XXH128_testdata[3095] */ + { 1032, 0x0000000000000000ULL, { 0x971F86A1BDCFE566ULL, 0x053279B8EEDE85BCULL } }, /* XSUM_XXH128_testdata[3096] */ + { 1032, 0x000000009E3779B1ULL, { 0x752E4DA9C60E7106ULL, 0x9E3BBE6E4EDEE493ULL } }, /* XSUM_XXH128_testdata[3097] */ + { 1032, 0x9E3779B185EBCA8DULL, { 0x2E881BB43B229931ULL, 0x385AEA4F07C8434DULL } }, /* XSUM_XXH128_testdata[3098] */ + { 1033, 0x0000000000000000ULL, { 0xBE464C7E96B871BAULL, 0x1AF383B560E7033BULL } }, /* XSUM_XXH128_testdata[3099] */ + { 1033, 0x000000009E3779B1ULL, { 0xCF5E4D4953EDFDC3ULL, 0x19303BEF82C5C2C2ULL } }, /* XSUM_XXH128_testdata[3100] */ + { 1033, 0x9E3779B185EBCA8DULL, { 0x6F43FF0A9C9EA244ULL, 0x89A36983BC2FE360ULL } }, /* XSUM_XXH128_testdata[3101] */ + { 1034, 0x0000000000000000ULL, { 0xC02521049DF92CB8ULL, 0x02B8D7F417E60C9FULL } }, /* XSUM_XXH128_testdata[3102] */ + { 1034, 0x000000009E3779B1ULL, { 0x9FA1514AF1A909C1ULL, 0x521A696ABA93A81DULL } }, /* XSUM_XXH128_testdata[3103] */ + { 1034, 0x9E3779B185EBCA8DULL, { 0x3F06DEBD338EA1A5ULL, 0x70CB05B561F82AC2ULL } }, /* XSUM_XXH128_testdata[3104] */ + { 1035, 0x0000000000000000ULL, { 0x06BBBE5C26B7CB77ULL, 0x923C0E232D6E73C5ULL } }, /* XSUM_XXH128_testdata[3105] */ + { 1035, 0x000000009E3779B1ULL, { 0xA51C9481EA348B84ULL, 0x682871E76599932EULL } }, /* XSUM_XXH128_testdata[3106] */ + { 1035, 0x9E3779B185EBCA8DULL, { 0xC250E703CD1FBE84ULL, 0xAE22CABCF907ABC3ULL } }, /* XSUM_XXH128_testdata[3107] */ + { 1036, 0x0000000000000000ULL, { 0x01D826626E65A2EEULL, 0x37699FADFB3EE3B5ULL } }, /* XSUM_XXH128_testdata[3108] */ + { 1036, 0x000000009E3779B1ULL, { 0x0354AEC394F722E2ULL, 0x5A51B598E556AF2CULL } }, /* XSUM_XXH128_testdata[3109] */ + { 1036, 0x9E3779B185EBCA8DULL, { 0x69A7882D6C8BDE53ULL, 0xD93DECE766339534ULL } }, /* XSUM_XXH128_testdata[3110] */ + { 1037, 0x0000000000000000ULL, { 0xF063CB9CD4578A55ULL, 0x217A9743B69DB236ULL } }, /* XSUM_XXH128_testdata[3111] */ + { 1037, 0x000000009E3779B1ULL, { 0xB59264E735CA2A97ULL, 0xAE1FF0D793E4455FULL } }, /* XSUM_XXH128_testdata[3112] */ + { 1037, 0x9E3779B185EBCA8DULL, { 0x3FD4F7F303870465ULL, 0x9C8329FB792696D9ULL } }, /* XSUM_XXH128_testdata[3113] */ + { 1038, 0x0000000000000000ULL, { 0x8E349F3D8D9F2F90ULL, 0x371AB2A11B4D55BCULL } }, /* XSUM_XXH128_testdata[3114] */ + { 1038, 0x000000009E3779B1ULL, { 0x978E2A55DFE5500BULL, 0x7E13F04B6D7D2F20ULL } }, /* XSUM_XXH128_testdata[3115] */ + { 1038, 0x9E3779B185EBCA8DULL, { 0x391C8D2CFE8B4B34ULL, 0x09A2B027A407E0C9ULL } }, /* XSUM_XXH128_testdata[3116] */ + { 1039, 0x0000000000000000ULL, { 0xF1116C1D2A9292B2ULL, 0x4BF7CBFAB6026380ULL } }, /* XSUM_XXH128_testdata[3117] */ + { 1039, 0x000000009E3779B1ULL, { 0xFE5635C09856C327ULL, 0x3D099743CC624918ULL } }, /* XSUM_XXH128_testdata[3118] */ + { 1039, 0x9E3779B185EBCA8DULL, { 0xD06F9DAB13FE02D2ULL, 0xA60AD86A2511F523ULL } }, /* XSUM_XXH128_testdata[3119] */ + { 1040, 0x0000000000000000ULL, { 0xA76D74A9DE8985A1ULL, 0x2289E2415D65F4C5ULL } }, /* XSUM_XXH128_testdata[3120] */ + { 1040, 0x000000009E3779B1ULL, { 0x794D00163F7C0DB8ULL, 0xB624711373D5E995ULL } }, /* XSUM_XXH128_testdata[3121] */ + { 1040, 0x9E3779B185EBCA8DULL, { 0x5A4223F66103555EULL, 0xC5CC1996E8343B60ULL } }, /* XSUM_XXH128_testdata[3122] */ + { 1041, 0x0000000000000000ULL, { 0x3CEFA31E899356DAULL, 0xB31BCE9D64BF4298ULL } }, /* XSUM_XXH128_testdata[3123] */ + { 1041, 0x000000009E3779B1ULL, { 0xCCCE6AF53B48E00CULL, 0x57CBBCD67C55FC70ULL } }, /* XSUM_XXH128_testdata[3124] */ + { 1041, 0x9E3779B185EBCA8DULL, { 0xF56CAFC19E330D25ULL, 0xAA6D0F3CA0E02E3EULL } }, /* XSUM_XXH128_testdata[3125] */ + { 1042, 0x0000000000000000ULL, { 0xB6DD00ABD69F904DULL, 0x61B8B62E3C97ED49ULL } }, /* XSUM_XXH128_testdata[3126] */ + { 1042, 0x000000009E3779B1ULL, { 0xADF9F6C5ABCEF803ULL, 0xDC0D91D25CE460D7ULL } }, /* XSUM_XXH128_testdata[3127] */ + { 1042, 0x9E3779B185EBCA8DULL, { 0x8A1A4C162B4E6894ULL, 0x7D98ADBED6194B20ULL } }, /* XSUM_XXH128_testdata[3128] */ + { 1043, 0x0000000000000000ULL, { 0x8E91C0D2A6A52133ULL, 0x3FA3A2C956CB274FULL } }, /* XSUM_XXH128_testdata[3129] */ + { 1043, 0x000000009E3779B1ULL, { 0x83304D090A9A29EBULL, 0x9850B99FDACF5C80ULL } }, /* XSUM_XXH128_testdata[3130] */ + { 1043, 0x9E3779B185EBCA8DULL, { 0xCC9CAA0268B76274ULL, 0x1AA1C4CF8F368BA7ULL } }, /* XSUM_XXH128_testdata[3131] */ + { 1044, 0x0000000000000000ULL, { 0xB8C3C0659B2FE068ULL, 0xE20D1BCA7FFF0578ULL } }, /* XSUM_XXH128_testdata[3132] */ + { 1044, 0x000000009E3779B1ULL, { 0x781FEA5CD89F480AULL, 0x0CDF5B35E3F8EFE6ULL } }, /* XSUM_XXH128_testdata[3133] */ + { 1044, 0x9E3779B185EBCA8DULL, { 0xBA33A9EA471FDC10ULL, 0x42141012EE399E85ULL } }, /* XSUM_XXH128_testdata[3134] */ + { 1045, 0x0000000000000000ULL, { 0x2BECBE68662B71E0ULL, 0x68795AEF5C343E43ULL } }, /* XSUM_XXH128_testdata[3135] */ + { 1045, 0x000000009E3779B1ULL, { 0xF4DADF9760495F99ULL, 0x8FECBAC9BEABA21CULL } }, /* XSUM_XXH128_testdata[3136] */ + { 1045, 0x9E3779B185EBCA8DULL, { 0x6A8FD42845F6A964ULL, 0x4A9B1705217F96B8ULL } }, /* XSUM_XXH128_testdata[3137] */ + { 1046, 0x0000000000000000ULL, { 0x4D5C08103EADC069ULL, 0x7B695A6686C328ABULL } }, /* XSUM_XXH128_testdata[3138] */ + { 1046, 0x000000009E3779B1ULL, { 0xE34BBB351E079BEDULL, 0x46F9251D434FA386ULL } }, /* XSUM_XXH128_testdata[3139] */ + { 1046, 0x9E3779B185EBCA8DULL, { 0x25E533F4C6E77AF2ULL, 0x55494736ECF60F51ULL } }, /* XSUM_XXH128_testdata[3140] */ + { 1047, 0x0000000000000000ULL, { 0x76713E6C64770146ULL, 0x136AFF1C1E12EB07ULL } }, /* XSUM_XXH128_testdata[3141] */ + { 1047, 0x000000009E3779B1ULL, { 0x6F4434CA0DBAF0E7ULL, 0x9A3CBBD16F4106B2ULL } }, /* XSUM_XXH128_testdata[3142] */ + { 1047, 0x9E3779B185EBCA8DULL, { 0x01ECB772F5B9494FULL, 0x6AA3B092C9F69CC3ULL } }, /* XSUM_XXH128_testdata[3143] */ + { 1048, 0x0000000000000000ULL, { 0xE052326CFD55516EULL, 0xE67A159870D95418ULL } }, /* XSUM_XXH128_testdata[3144] */ + { 1048, 0x000000009E3779B1ULL, { 0xE942330C1837D46BULL, 0xDE44A170AA5A1897ULL } }, /* XSUM_XXH128_testdata[3145] */ + { 1048, 0x9E3779B185EBCA8DULL, { 0x676DD5995DED903AULL, 0x31AA23390F667F90ULL } }, /* XSUM_XXH128_testdata[3146] */ + { 1049, 0x0000000000000000ULL, { 0xF7D3712B50172434ULL, 0x565C8A7216DF298CULL } }, /* XSUM_XXH128_testdata[3147] */ + { 1049, 0x000000009E3779B1ULL, { 0x7EFCBA86DB925C33ULL, 0x7A5FAD7D0E839BA6ULL } }, /* XSUM_XXH128_testdata[3148] */ + { 1049, 0x9E3779B185EBCA8DULL, { 0x75EE9355894644BDULL, 0xAE2C792381F56801ULL } }, /* XSUM_XXH128_testdata[3149] */ + { 1050, 0x0000000000000000ULL, { 0x8A40AD467C7AEA14ULL, 0x38A012D5BA000C20ULL } }, /* XSUM_XXH128_testdata[3150] */ + { 1050, 0x000000009E3779B1ULL, { 0x881E6100D2F70FB3ULL, 0xD9F5A6A61AA8485EULL } }, /* XSUM_XXH128_testdata[3151] */ + { 1050, 0x9E3779B185EBCA8DULL, { 0xF5EA7D72E1FD129AULL, 0xF53ED06335FE4CC3ULL } }, /* XSUM_XXH128_testdata[3152] */ + { 1051, 0x0000000000000000ULL, { 0xBCA7110967265077ULL, 0x9A1ED6701F5DAC44ULL } }, /* XSUM_XXH128_testdata[3153] */ + { 1051, 0x000000009E3779B1ULL, { 0x6B775F4EC590D06DULL, 0x836F90EB1BC15B6CULL } }, /* XSUM_XXH128_testdata[3154] */ + { 1051, 0x9E3779B185EBCA8DULL, { 0x4FE88A33E2612E11ULL, 0x29ABCD1D3FB620F1ULL } }, /* XSUM_XXH128_testdata[3155] */ + { 1052, 0x0000000000000000ULL, { 0x5B33B788EAD4AD6EULL, 0xE1085F40606AD022ULL } }, /* XSUM_XXH128_testdata[3156] */ + { 1052, 0x000000009E3779B1ULL, { 0xF2DE2A80C9164C1CULL, 0x0AAD1EF173251944ULL } }, /* XSUM_XXH128_testdata[3157] */ + { 1052, 0x9E3779B185EBCA8DULL, { 0xCE71C2965772443BULL, 0x320EC901B21B5F32ULL } }, /* XSUM_XXH128_testdata[3158] */ + { 1053, 0x0000000000000000ULL, { 0xA5955CEE33323105ULL, 0x25C2C6DCAD6868D1ULL } }, /* XSUM_XXH128_testdata[3159] */ + { 1053, 0x000000009E3779B1ULL, { 0xCA069C238DF7AD6FULL, 0x930C65DC803F4516ULL } }, /* XSUM_XXH128_testdata[3160] */ + { 1053, 0x9E3779B185EBCA8DULL, { 0x57A968DEB59A1A8FULL, 0x491C886AA6A715CDULL } }, /* XSUM_XXH128_testdata[3161] */ + { 1054, 0x0000000000000000ULL, { 0x00C093D5578529D4ULL, 0x8A5F68353FC33AEEULL } }, /* XSUM_XXH128_testdata[3162] */ + { 1054, 0x000000009E3779B1ULL, { 0x20DEC6EE239904B7ULL, 0x09253916D656F411ULL } }, /* XSUM_XXH128_testdata[3163] */ + { 1054, 0x9E3779B185EBCA8DULL, { 0xCCA75C47DCFF1A43ULL, 0x69BCF0703E6247FBULL } }, /* XSUM_XXH128_testdata[3164] */ + { 1055, 0x0000000000000000ULL, { 0xC574284022BCF09BULL, 0x70C150ED537F8A75ULL } }, /* XSUM_XXH128_testdata[3165] */ + { 1055, 0x000000009E3779B1ULL, { 0x18C11EE0B8F30BA7ULL, 0x271FB23A479ED13FULL } }, /* XSUM_XXH128_testdata[3166] */ + { 1055, 0x9E3779B185EBCA8DULL, { 0x2A22F1BC3CDC5A70ULL, 0xCCB03C660C4A0A6CULL } }, /* XSUM_XXH128_testdata[3167] */ + { 1056, 0x0000000000000000ULL, { 0xA394C3F1F7C215F1ULL, 0x7422F22B91AEA862ULL } }, /* XSUM_XXH128_testdata[3168] */ + { 1056, 0x000000009E3779B1ULL, { 0x9AC01799DDA8AFF6ULL, 0x78E99994304F4DA9ULL } }, /* XSUM_XXH128_testdata[3169] */ + { 1056, 0x9E3779B185EBCA8DULL, { 0x7A6839FC8587F140ULL, 0xCBA176F0C4B10EFEULL } }, /* XSUM_XXH128_testdata[3170] */ + { 1057, 0x0000000000000000ULL, { 0x36E45F0DDC00F0C5ULL, 0xEDD99A3D45541C74ULL } }, /* XSUM_XXH128_testdata[3171] */ + { 1057, 0x000000009E3779B1ULL, { 0x6EAE43D95001F231ULL, 0xB34C23016203C617ULL } }, /* XSUM_XXH128_testdata[3172] */ + { 1057, 0x9E3779B185EBCA8DULL, { 0xF2219916F1A03E0BULL, 0x597115A7128A1BF8ULL } }, /* XSUM_XXH128_testdata[3173] */ + { 1058, 0x0000000000000000ULL, { 0x4E18A246FF6AAB29ULL, 0xB9E2992597A472ACULL } }, /* XSUM_XXH128_testdata[3174] */ + { 1058, 0x000000009E3779B1ULL, { 0x8B4295C67042F171ULL, 0xC9AE5D4808EC66EEULL } }, /* XSUM_XXH128_testdata[3175] */ + { 1058, 0x9E3779B185EBCA8DULL, { 0xD0B5D80ABCB8BB3CULL, 0x1AA6A3613DA54406ULL } }, /* XSUM_XXH128_testdata[3176] */ + { 1059, 0x0000000000000000ULL, { 0x424271DBB727328DULL, 0xA6740CD3F396A90BULL } }, /* XSUM_XXH128_testdata[3177] */ + { 1059, 0x000000009E3779B1ULL, { 0x9126377A7D965350ULL, 0x924A1C733B87CB5CULL } }, /* XSUM_XXH128_testdata[3178] */ + { 1059, 0x9E3779B185EBCA8DULL, { 0xE9C25F7ADF790E5BULL, 0xC1C8502C25317EAEULL } }, /* XSUM_XXH128_testdata[3179] */ + { 1060, 0x0000000000000000ULL, { 0xE1E6A2BAADFD5436ULL, 0x66F04D120D1D70ADULL } }, /* XSUM_XXH128_testdata[3180] */ + { 1060, 0x000000009E3779B1ULL, { 0x4F5DAEFB704A7D17ULL, 0x669F360B72B79AF8ULL } }, /* XSUM_XXH128_testdata[3181] */ + { 1060, 0x9E3779B185EBCA8DULL, { 0x707E4C8B5557992BULL, 0xAA08EC4534B51789ULL } }, /* XSUM_XXH128_testdata[3182] */ + { 1061, 0x0000000000000000ULL, { 0x6B23AAE562F38052ULL, 0xDB1D06E94FB7A509ULL } }, /* XSUM_XXH128_testdata[3183] */ + { 1061, 0x000000009E3779B1ULL, { 0xC2E23D8AF929D534ULL, 0x0581FA637DB14701ULL } }, /* XSUM_XXH128_testdata[3184] */ + { 1061, 0x9E3779B185EBCA8DULL, { 0x8F51CA25CD06EE06ULL, 0x6C38760FD09FC0F2ULL } }, /* XSUM_XXH128_testdata[3185] */ + { 1062, 0x0000000000000000ULL, { 0x922F0B0A6821EC73ULL, 0x8630F73DD1C24597ULL } }, /* XSUM_XXH128_testdata[3186] */ + { 1062, 0x000000009E3779B1ULL, { 0x76B02F5998C98868ULL, 0x418821946358EBA5ULL } }, /* XSUM_XXH128_testdata[3187] */ + { 1062, 0x9E3779B185EBCA8DULL, { 0x6F02284C71B0553DULL, 0x6EC6FC36C91936C0ULL } }, /* XSUM_XXH128_testdata[3188] */ + { 1063, 0x0000000000000000ULL, { 0x21CE5A98ADE6EC74ULL, 0xB85493E9D9480639ULL } }, /* XSUM_XXH128_testdata[3189] */ + { 1063, 0x000000009E3779B1ULL, { 0x942DAD9A812E263EULL, 0x8D8DEE2B01358EABULL } }, /* XSUM_XXH128_testdata[3190] */ + { 1063, 0x9E3779B185EBCA8DULL, { 0xE5E240032388491DULL, 0x45F16F7505E12015ULL } }, /* XSUM_XXH128_testdata[3191] */ + { 1064, 0x0000000000000000ULL, { 0x226089CE44092546ULL, 0xB507D305C9937C99ULL } }, /* XSUM_XXH128_testdata[3192] */ + { 1064, 0x000000009E3779B1ULL, { 0x7507F5D94B13C373ULL, 0xEC5ECAD91496E655ULL } }, /* XSUM_XXH128_testdata[3193] */ + { 1064, 0x9E3779B185EBCA8DULL, { 0xFA0F692527A8AACAULL, 0x86B3BE36020D0F38ULL } }, /* XSUM_XXH128_testdata[3194] */ + { 1065, 0x0000000000000000ULL, { 0xF83D6BCACA56EF8DULL, 0x8B980F21AFF27014ULL } }, /* XSUM_XXH128_testdata[3195] */ + { 1065, 0x000000009E3779B1ULL, { 0x822DCE147FD9377BULL, 0x92647CF5C05DE237ULL } }, /* XSUM_XXH128_testdata[3196] */ + { 1065, 0x9E3779B185EBCA8DULL, { 0xA25F4EFAF8AE785BULL, 0xCB576016662B131CULL } }, /* XSUM_XXH128_testdata[3197] */ + { 1066, 0x0000000000000000ULL, { 0xA5780B150D253C20ULL, 0xEF2FC23109068182ULL } }, /* XSUM_XXH128_testdata[3198] */ + { 1066, 0x000000009E3779B1ULL, { 0xB1291F9D75B48C3EULL, 0xAD895CE338F8DF22ULL } }, /* XSUM_XXH128_testdata[3199] */ + { 1066, 0x9E3779B185EBCA8DULL, { 0x39A8B561DF5E62C7ULL, 0xD047D852A6854592ULL } }, /* XSUM_XXH128_testdata[3200] */ + { 1067, 0x0000000000000000ULL, { 0x9E3EA16A1A56EAF4ULL, 0xC083D26D66358B8EULL } }, /* XSUM_XXH128_testdata[3201] */ + { 1067, 0x000000009E3779B1ULL, { 0xEFA8FBF4856FEAC0ULL, 0x5A7C15FCA6DF971FULL } }, /* XSUM_XXH128_testdata[3202] */ + { 1067, 0x9E3779B185EBCA8DULL, { 0xD91162AE17557C82ULL, 0xF79C84D2FBB2808FULL } }, /* XSUM_XXH128_testdata[3203] */ + { 1068, 0x0000000000000000ULL, { 0x5E348E5F8475647CULL, 0x15CB0B7DF8FFE0ECULL } }, /* XSUM_XXH128_testdata[3204] */ + { 1068, 0x000000009E3779B1ULL, { 0x1B7BA84188570870ULL, 0x464FDEE26527F15CULL } }, /* XSUM_XXH128_testdata[3205] */ + { 1068, 0x9E3779B185EBCA8DULL, { 0x177B8B886C394ABFULL, 0x1C98F670A574A6E8ULL } }, /* XSUM_XXH128_testdata[3206] */ + { 1069, 0x0000000000000000ULL, { 0xCC930082EA2B699DULL, 0x07F1EB4760BD58D3ULL } }, /* XSUM_XXH128_testdata[3207] */ + { 1069, 0x000000009E3779B1ULL, { 0xEAA237472A082864ULL, 0xBB4B5F4F593FCFC8ULL } }, /* XSUM_XXH128_testdata[3208] */ + { 1069, 0x9E3779B185EBCA8DULL, { 0xD0634BFF738E64ABULL, 0xB25534A04EE44787ULL } }, /* XSUM_XXH128_testdata[3209] */ + { 1070, 0x0000000000000000ULL, { 0x2E7BCEAE98217341ULL, 0xDDDE00DAFDE5BA79ULL } }, /* XSUM_XXH128_testdata[3210] */ + { 1070, 0x000000009E3779B1ULL, { 0xF9811A2BE8534211ULL, 0x21AC5538284798FDULL } }, /* XSUM_XXH128_testdata[3211] */ + { 1070, 0x9E3779B185EBCA8DULL, { 0x06042D86277FF953ULL, 0x2AD632FAF893FB08ULL } }, /* XSUM_XXH128_testdata[3212] */ + { 1071, 0x0000000000000000ULL, { 0x04EB23B8ACA687A0ULL, 0x1C2E35A4CB7975C1ULL } }, /* XSUM_XXH128_testdata[3213] */ + { 1071, 0x000000009E3779B1ULL, { 0xA9FFDE26661ADEBEULL, 0xAC86110D5C039024ULL } }, /* XSUM_XXH128_testdata[3214] */ + { 1071, 0x9E3779B185EBCA8DULL, { 0xD8AD2ECEE6693D59ULL, 0xF872B74FF85C0224ULL } }, /* XSUM_XXH128_testdata[3215] */ + { 1072, 0x0000000000000000ULL, { 0xF9D9E49384694B5CULL, 0x9B4352A515120434ULL } }, /* XSUM_XXH128_testdata[3216] */ + { 1072, 0x000000009E3779B1ULL, { 0x890375D9A1A7B3AFULL, 0x6330956519EB7495ULL } }, /* XSUM_XXH128_testdata[3217] */ + { 1072, 0x9E3779B185EBCA8DULL, { 0x06858C7D4097A8FDULL, 0x030598A289E70AF7ULL } }, /* XSUM_XXH128_testdata[3218] */ + { 1073, 0x0000000000000000ULL, { 0xFCFC273C1C3CFB70ULL, 0xEC34F1997EA8573CULL } }, /* XSUM_XXH128_testdata[3219] */ + { 1073, 0x000000009E3779B1ULL, { 0x176E6F4774A12EE6ULL, 0xB27005958FF0889DULL } }, /* XSUM_XXH128_testdata[3220] */ + { 1073, 0x9E3779B185EBCA8DULL, { 0x298D6455960EDC32ULL, 0x4935CFCA28A8EA76ULL } }, /* XSUM_XXH128_testdata[3221] */ + { 1074, 0x0000000000000000ULL, { 0x4C838F49AB57B711ULL, 0xC1BC505F3A22120BULL } }, /* XSUM_XXH128_testdata[3222] */ + { 1074, 0x000000009E3779B1ULL, { 0x9B21CF9FDF7ADA05ULL, 0x9DDCACF7FB28D3B0ULL } }, /* XSUM_XXH128_testdata[3223] */ + { 1074, 0x9E3779B185EBCA8DULL, { 0x76902BE06AA3A02CULL, 0xCAA3EE84E8EFC3ADULL } }, /* XSUM_XXH128_testdata[3224] */ + { 1075, 0x0000000000000000ULL, { 0x6CD6B8F2FDF983FCULL, 0x9BD1A9D9C26F43A5ULL } }, /* XSUM_XXH128_testdata[3225] */ + { 1075, 0x000000009E3779B1ULL, { 0x14895B6AA591D923ULL, 0x03B49019D9FFB0E7ULL } }, /* XSUM_XXH128_testdata[3226] */ + { 1075, 0x9E3779B185EBCA8DULL, { 0xF4E4814148E4D8E6ULL, 0xEDD9CC21DE834280ULL } }, /* XSUM_XXH128_testdata[3227] */ + { 1076, 0x0000000000000000ULL, { 0x3EFD3A63B144CFA8ULL, 0x0718EA5BB1D161C5ULL } }, /* XSUM_XXH128_testdata[3228] */ + { 1076, 0x000000009E3779B1ULL, { 0x5E2AAC7F2A961E4DULL, 0xD1E62F9E091E6ADCULL } }, /* XSUM_XXH128_testdata[3229] */ + { 1076, 0x9E3779B185EBCA8DULL, { 0x1A340811E276CE1DULL, 0x7EC689CF10516785ULL } }, /* XSUM_XXH128_testdata[3230] */ + { 1077, 0x0000000000000000ULL, { 0x416950898625678DULL, 0x8E697FA9801DDAA0ULL } }, /* XSUM_XXH128_testdata[3231] */ + { 1077, 0x000000009E3779B1ULL, { 0x944712C1A92003DBULL, 0x01B0C683F0E2F47BULL } }, /* XSUM_XXH128_testdata[3232] */ + { 1077, 0x9E3779B185EBCA8DULL, { 0xBF32A6D767D50C3AULL, 0x2B74DCD8F480E67CULL } }, /* XSUM_XXH128_testdata[3233] */ + { 1078, 0x0000000000000000ULL, { 0x8F783EA38EC1D973ULL, 0x0C5AB1BF7F020699ULL } }, /* XSUM_XXH128_testdata[3234] */ + { 1078, 0x000000009E3779B1ULL, { 0xE4B456C02546FF8AULL, 0xEB793F580D3BFA4FULL } }, /* XSUM_XXH128_testdata[3235] */ + { 1078, 0x9E3779B185EBCA8DULL, { 0x236D3512BB1A8A4DULL, 0xB68DA56FA676BB34ULL } }, /* XSUM_XXH128_testdata[3236] */ + { 1079, 0x0000000000000000ULL, { 0xC97A3FE9CE7D4D19ULL, 0x656EB47781234E7CULL } }, /* XSUM_XXH128_testdata[3237] */ + { 1079, 0x000000009E3779B1ULL, { 0xFF1487EBC2C80B9DULL, 0xECD16E103FD55CB8ULL } }, /* XSUM_XXH128_testdata[3238] */ + { 1079, 0x9E3779B185EBCA8DULL, { 0xF2BF4205B22DE248ULL, 0x34EA348969C70C15ULL } }, /* XSUM_XXH128_testdata[3239] */ + { 1080, 0x0000000000000000ULL, { 0x88EE634F95763B2EULL, 0x1F646FE11FF49442ULL } }, /* XSUM_XXH128_testdata[3240] */ + { 1080, 0x000000009E3779B1ULL, { 0x5C1E1226AA5AB749ULL, 0xDB79DA5A1B240919ULL } }, /* XSUM_XXH128_testdata[3241] */ + { 1080, 0x9E3779B185EBCA8DULL, { 0x0FCB8B82F171CC63ULL, 0x5F1965389FD427E2ULL } }, /* XSUM_XXH128_testdata[3242] */ + { 1081, 0x0000000000000000ULL, { 0x1B214241194C97A8ULL, 0x53646D6B41A81112ULL } }, /* XSUM_XXH128_testdata[3243] */ + { 1081, 0x000000009E3779B1ULL, { 0x6A36D33923F7DCA2ULL, 0x0BDAFCF05F8E7491ULL } }, /* XSUM_XXH128_testdata[3244] */ + { 1081, 0x9E3779B185EBCA8DULL, { 0xCC5FD4B0D510ABD7ULL, 0xA287A979511AE0EBULL } }, /* XSUM_XXH128_testdata[3245] */ + { 1082, 0x0000000000000000ULL, { 0x1480A22110AD0CA8ULL, 0x431DE2FEF42FE214ULL } }, /* XSUM_XXH128_testdata[3246] */ + { 1082, 0x000000009E3779B1ULL, { 0xE03432D212CF5E70ULL, 0x76C8ABA85A199A33ULL } }, /* XSUM_XXH128_testdata[3247] */ + { 1082, 0x9E3779B185EBCA8DULL, { 0x62B1C2F035D5819CULL, 0x14980122AB69530EULL } }, /* XSUM_XXH128_testdata[3248] */ + { 1083, 0x0000000000000000ULL, { 0xA90E39E7A1DC5288ULL, 0x7F5220A07FCA39A5ULL } }, /* XSUM_XXH128_testdata[3249] */ + { 1083, 0x000000009E3779B1ULL, { 0xA51312D65F01A5D8ULL, 0xD882D6B220263405ULL } }, /* XSUM_XXH128_testdata[3250] */ + { 1083, 0x9E3779B185EBCA8DULL, { 0x4F125217DFE431E8ULL, 0x1D4382703E813F74ULL } }, /* XSUM_XXH128_testdata[3251] */ + { 1084, 0x0000000000000000ULL, { 0xB3D8CF0593E45180ULL, 0x21D48FC66F263D31ULL } }, /* XSUM_XXH128_testdata[3252] */ + { 1084, 0x000000009E3779B1ULL, { 0xEAD282D183E10BE1ULL, 0x3E80BC77DB8A2495ULL } }, /* XSUM_XXH128_testdata[3253] */ + { 1084, 0x9E3779B185EBCA8DULL, { 0xA08D501EED801F54ULL, 0xEFF2EAD26B78BF01ULL } }, /* XSUM_XXH128_testdata[3254] */ + { 1085, 0x0000000000000000ULL, { 0xCD2309AD6918F6F2ULL, 0xD5DFAE81B2E09FDFULL } }, /* XSUM_XXH128_testdata[3255] */ + { 1085, 0x000000009E3779B1ULL, { 0xD12CAA2878F87F06ULL, 0x41B087F03EC463EAULL } }, /* XSUM_XXH128_testdata[3256] */ + { 1085, 0x9E3779B185EBCA8DULL, { 0x2D64ED1AAB430EA6ULL, 0x4DEA488DCB854D31ULL } }, /* XSUM_XXH128_testdata[3257] */ + { 1086, 0x0000000000000000ULL, { 0x34E17D2E5B1E92B5ULL, 0x6647F04DB720F4F5ULL } }, /* XSUM_XXH128_testdata[3258] */ + { 1086, 0x000000009E3779B1ULL, { 0x103C2C84D287B39BULL, 0x8F365F37A0512BB9ULL } }, /* XSUM_XXH128_testdata[3259] */ + { 1086, 0x9E3779B185EBCA8DULL, { 0x20DA04F2065565C4ULL, 0x819D02113B517F8EULL } }, /* XSUM_XXH128_testdata[3260] */ + { 1087, 0x0000000000000000ULL, { 0x047F181E7C8A41B9ULL, 0xB67E858CF9E0959EULL } }, /* XSUM_XXH128_testdata[3261] */ + { 1087, 0x000000009E3779B1ULL, { 0x64D6176CC591AFFAULL, 0x631718295E8FD37FULL } }, /* XSUM_XXH128_testdata[3262] */ + { 1087, 0x9E3779B185EBCA8DULL, { 0x9DDA30BBBF69BF13ULL, 0x0C85F8B06D204747ULL } }, /* XSUM_XXH128_testdata[3263] */ + { 1088, 0x0000000000000000ULL, { 0xCC1450EA6B52A8F4ULL, 0xE0FA3B9E9FB69D83ULL } }, /* XSUM_XXH128_testdata[3264] */ + { 1088, 0x000000009E3779B1ULL, { 0xD4C2D1BFFC3370A5ULL, 0x36438AF51FDC2979ULL } }, /* XSUM_XXH128_testdata[3265] */ + { 1088, 0x9E3779B185EBCA8DULL, { 0x542632D046F3DDE4ULL, 0xC0DD009B78C40121ULL } }, /* XSUM_XXH128_testdata[3266] */ + { 1089, 0x0000000000000000ULL, { 0xEF727B2EFFC4CC8CULL, 0x6E026F1A15E62B39ULL } }, /* XSUM_XXH128_testdata[3267] */ + { 1089, 0x000000009E3779B1ULL, { 0xA4662CC10D3C4269ULL, 0xBD39D1D54DA5E01FULL } }, /* XSUM_XXH128_testdata[3268] */ + { 1089, 0x9E3779B185EBCA8DULL, { 0xFF8423D886707134ULL, 0x79983408B95BAC9DULL } }, /* XSUM_XXH128_testdata[3269] */ + { 1090, 0x0000000000000000ULL, { 0x89F412FD6ED3162DULL, 0x67BB7F81B82D64A8ULL } }, /* XSUM_XXH128_testdata[3270] */ + { 1090, 0x000000009E3779B1ULL, { 0x160D991905C8BA55ULL, 0x260796042844246DULL } }, /* XSUM_XXH128_testdata[3271] */ + { 1090, 0x9E3779B185EBCA8DULL, { 0x9401D08008982DEEULL, 0x6850375C8A3AF8E4ULL } }, /* XSUM_XXH128_testdata[3272] */ + { 1091, 0x0000000000000000ULL, { 0x35ACEEEADFE96151ULL, 0x068ED4879F165BE6ULL } }, /* XSUM_XXH128_testdata[3273] */ + { 1091, 0x000000009E3779B1ULL, { 0x74B52830C781A199ULL, 0x70D996C8EC0A82FEULL } }, /* XSUM_XXH128_testdata[3274] */ + { 1091, 0x9E3779B185EBCA8DULL, { 0x55D5220408C11995ULL, 0xFAE19A70C6E17645ULL } }, /* XSUM_XXH128_testdata[3275] */ + { 1092, 0x0000000000000000ULL, { 0xCE09B91AD5477E4FULL, 0xE71D6610CAA8FDFEULL } }, /* XSUM_XXH128_testdata[3276] */ + { 1092, 0x000000009E3779B1ULL, { 0x2047A7C918134577ULL, 0x99CF16531976B1A3ULL } }, /* XSUM_XXH128_testdata[3277] */ + { 1092, 0x9E3779B185EBCA8DULL, { 0x09E625B5CA2769E9ULL, 0x67895313FC213E66ULL } }, /* XSUM_XXH128_testdata[3278] */ + { 1093, 0x0000000000000000ULL, { 0x934DA47BA7D6BA54ULL, 0x8AE0E60493B8C536ULL } }, /* XSUM_XXH128_testdata[3279] */ + { 1093, 0x000000009E3779B1ULL, { 0xBC126197F0BFB06DULL, 0xA4591D95021E7CCDULL } }, /* XSUM_XXH128_testdata[3280] */ + { 1093, 0x9E3779B185EBCA8DULL, { 0x88E0DD3E5B1F5097ULL, 0x3F41AE9B8025E960ULL } }, /* XSUM_XXH128_testdata[3281] */ + { 1094, 0x0000000000000000ULL, { 0xF8B5D69781586327ULL, 0x39B8D976FD4D964EULL } }, /* XSUM_XXH128_testdata[3282] */ + { 1094, 0x000000009E3779B1ULL, { 0xD2699A07754FB0ADULL, 0xEA6413BB8D130916ULL } }, /* XSUM_XXH128_testdata[3283] */ + { 1094, 0x9E3779B185EBCA8DULL, { 0x4ECC1C9119FB5B6DULL, 0x8577FD9CDD854B1BULL } }, /* XSUM_XXH128_testdata[3284] */ + { 1095, 0x0000000000000000ULL, { 0x23F7942250DDDC49ULL, 0xCB7DFFCD1E72B0B2ULL } }, /* XSUM_XXH128_testdata[3285] */ + { 1095, 0x000000009E3779B1ULL, { 0xDCEFD51BE7869633ULL, 0xD27BD68A24EED6CBULL } }, /* XSUM_XXH128_testdata[3286] */ + { 1095, 0x9E3779B185EBCA8DULL, { 0x8D2E379DC1BBB0B6ULL, 0x8F758DBB1CD8111EULL } }, /* XSUM_XXH128_testdata[3287] */ + { 1096, 0x0000000000000000ULL, { 0xC3FFA06BC20EC335ULL, 0x3C5F11822A574DF3ULL } }, /* XSUM_XXH128_testdata[3288] */ + { 1096, 0x000000009E3779B1ULL, { 0xD3A1A52E7F7170C9ULL, 0x570101F3E63CA4A5ULL } }, /* XSUM_XXH128_testdata[3289] */ + { 1096, 0x9E3779B185EBCA8DULL, { 0x29F3F7B49529DFBAULL, 0x126F13479162735EULL } }, /* XSUM_XXH128_testdata[3290] */ + { 1097, 0x0000000000000000ULL, { 0x0FDB704FE2D24016ULL, 0xDAB639263618482EULL } }, /* XSUM_XXH128_testdata[3291] */ + { 1097, 0x000000009E3779B1ULL, { 0x88CE55479BBB4E6BULL, 0xF0E2259E59890089ULL } }, /* XSUM_XXH128_testdata[3292] */ + { 1097, 0x9E3779B185EBCA8DULL, { 0xEF7EA7F97634AA97ULL, 0xBE96CE79E7B9F48CULL } }, /* XSUM_XXH128_testdata[3293] */ + { 1098, 0x0000000000000000ULL, { 0x267345655DF0F5BAULL, 0xD3AD62BA6E11B4F5ULL } }, /* XSUM_XXH128_testdata[3294] */ + { 1098, 0x000000009E3779B1ULL, { 0xAB886C726ED11620ULL, 0x4954D7D5BF56C85DULL } }, /* XSUM_XXH128_testdata[3295] */ + { 1098, 0x9E3779B185EBCA8DULL, { 0x23FDC7F3BB95FA27ULL, 0xB12BD34AF4831BB4ULL } }, /* XSUM_XXH128_testdata[3296] */ + { 1099, 0x0000000000000000ULL, { 0x08DC1E6E3BE4AE5EULL, 0xED388FAFAF440AA1ULL } }, /* XSUM_XXH128_testdata[3297] */ + { 1099, 0x000000009E3779B1ULL, { 0x795E21DAEC26C547ULL, 0x7EEB6304B76CBD36ULL } }, /* XSUM_XXH128_testdata[3298] */ + { 1099, 0x9E3779B185EBCA8DULL, { 0x3AAB786A79D625C6ULL, 0x343C6488470DFA9CULL } }, /* XSUM_XXH128_testdata[3299] */ + { 1100, 0x0000000000000000ULL, { 0xA2E4365683A60391ULL, 0x0BD5AA55FB8F7C97ULL } }, /* XSUM_XXH128_testdata[3300] */ + { 1100, 0x000000009E3779B1ULL, { 0x7AA2CA619B385821ULL, 0xC8B885ED848F10ECULL } }, /* XSUM_XXH128_testdata[3301] */ + { 1100, 0x9E3779B185EBCA8DULL, { 0xC91EE43AE9B51D71ULL, 0xB9EF5A2F3C87AD9DULL } }, /* XSUM_XXH128_testdata[3302] */ + { 1101, 0x0000000000000000ULL, { 0xA42E215373B168AEULL, 0x4B8CD6070A216642ULL } }, /* XSUM_XXH128_testdata[3303] */ + { 1101, 0x000000009E3779B1ULL, { 0x7ADD396370D88E67ULL, 0xA874204355C48389ULL } }, /* XSUM_XXH128_testdata[3304] */ + { 1101, 0x9E3779B185EBCA8DULL, { 0xD08292BB94F66639ULL, 0x64745398C60E24DDULL } }, /* XSUM_XXH128_testdata[3305] */ + { 1102, 0x0000000000000000ULL, { 0x151F8D631922BAF2ULL, 0xB476D192FC8DDB29ULL } }, /* XSUM_XXH128_testdata[3306] */ + { 1102, 0x000000009E3779B1ULL, { 0x01AC17C330B044ADULL, 0x5D74F28C70FE0D0AULL } }, /* XSUM_XXH128_testdata[3307] */ + { 1102, 0x9E3779B185EBCA8DULL, { 0x1251E29366620135ULL, 0xE91465A2B02B3397ULL } }, /* XSUM_XXH128_testdata[3308] */ + { 1103, 0x0000000000000000ULL, { 0x6CA10D173172CE90ULL, 0x00B377F0FE9D0182ULL } }, /* XSUM_XXH128_testdata[3309] */ + { 1103, 0x000000009E3779B1ULL, { 0xEA7AF11DBDD9E1B7ULL, 0xB89D970F8191E625ULL } }, /* XSUM_XXH128_testdata[3310] */ + { 1103, 0x9E3779B185EBCA8DULL, { 0x31A6B88EC2171A6AULL, 0xF726CF18DCEA9BCEULL } }, /* XSUM_XXH128_testdata[3311] */ + { 1104, 0x0000000000000000ULL, { 0xFDB6BFA13BEA50FEULL, 0x0CBCFB281599865DULL } }, /* XSUM_XXH128_testdata[3312] */ + { 1104, 0x000000009E3779B1ULL, { 0x4A5B16435302A020ULL, 0x48FBCA92F79EE99BULL } }, /* XSUM_XXH128_testdata[3313] */ + { 1104, 0x9E3779B185EBCA8DULL, { 0x3E23E34491EB0A37ULL, 0x633CF4C6961EDA71ULL } }, /* XSUM_XXH128_testdata[3314] */ + { 1105, 0x0000000000000000ULL, { 0xDB5AAD73409F3CA7ULL, 0x880EB0294C7FE651ULL } }, /* XSUM_XXH128_testdata[3315] */ + { 1105, 0x000000009E3779B1ULL, { 0x977041D20549F899ULL, 0x1F22D139812473FDULL } }, /* XSUM_XXH128_testdata[3316] */ + { 1105, 0x9E3779B185EBCA8DULL, { 0x936B96924E95975EULL, 0x23BB16201C03AD1EULL } }, /* XSUM_XXH128_testdata[3317] */ + { 1106, 0x0000000000000000ULL, { 0x8EA70DDBFBFFB140ULL, 0x87EA220CB0AE58D7ULL } }, /* XSUM_XXH128_testdata[3318] */ + { 1106, 0x000000009E3779B1ULL, { 0xEC573428E9B544DAULL, 0x91B4A6D6C67DDFEDULL } }, /* XSUM_XXH128_testdata[3319] */ + { 1106, 0x9E3779B185EBCA8DULL, { 0x50E07E50BE70454CULL, 0x589351FD8C945AEDULL } }, /* XSUM_XXH128_testdata[3320] */ + { 1107, 0x0000000000000000ULL, { 0x2CB3D9534FC396ECULL, 0x48CA43A60F0412FAULL } }, /* XSUM_XXH128_testdata[3321] */ + { 1107, 0x000000009E3779B1ULL, { 0x877F62E05C57C067ULL, 0xBBE4B920C35A4115ULL } }, /* XSUM_XXH128_testdata[3322] */ + { 1107, 0x9E3779B185EBCA8DULL, { 0xE59E31F8D0400D3DULL, 0x98A19232A1A5AC9FULL } }, /* XSUM_XXH128_testdata[3323] */ + { 1108, 0x0000000000000000ULL, { 0xD29D3A025A1690E4ULL, 0xB29AFD7690046EAAULL } }, /* XSUM_XXH128_testdata[3324] */ + { 1108, 0x000000009E3779B1ULL, { 0xC4CD44E56A0874FBULL, 0x4728768783E3DD73ULL } }, /* XSUM_XXH128_testdata[3325] */ + { 1108, 0x9E3779B185EBCA8DULL, { 0x37288A9CB07E3D96ULL, 0x8B65CA33B25B086BULL } }, /* XSUM_XXH128_testdata[3326] */ + { 1109, 0x0000000000000000ULL, { 0x3D01DAA3D4BD963EULL, 0x8A1F87A90D62DD35ULL } }, /* XSUM_XXH128_testdata[3327] */ + { 1109, 0x000000009E3779B1ULL, { 0x5A7CE24B1A7744E9ULL, 0x1329A90A03F4B86DULL } }, /* XSUM_XXH128_testdata[3328] */ + { 1109, 0x9E3779B185EBCA8DULL, { 0xB526662C90236A2DULL, 0x87C98615F851C7EBULL } }, /* XSUM_XXH128_testdata[3329] */ + { 1110, 0x0000000000000000ULL, { 0x20274CB54F3E997EULL, 0x1E4D9E6CDF7EDF0FULL } }, /* XSUM_XXH128_testdata[3330] */ + { 1110, 0x000000009E3779B1ULL, { 0xA8AACA3F7346F2A5ULL, 0x1901B5CEB4BCE74EULL } }, /* XSUM_XXH128_testdata[3331] */ + { 1110, 0x9E3779B185EBCA8DULL, { 0x18BB398F2D7573BFULL, 0xD013447C8E86A7C6ULL } }, /* XSUM_XXH128_testdata[3332] */ + { 1111, 0x0000000000000000ULL, { 0x535C077415D1946DULL, 0xB6F4D18789C7C907ULL } }, /* XSUM_XXH128_testdata[3333] */ + { 1111, 0x000000009E3779B1ULL, { 0x2EACA194E95EEAB8ULL, 0xBD00F6BEE5D3C5A8ULL } }, /* XSUM_XXH128_testdata[3334] */ + { 1111, 0x9E3779B185EBCA8DULL, { 0xDC251C067D8BD955ULL, 0xAC48B152B65CF9D2ULL } }, /* XSUM_XXH128_testdata[3335] */ + { 1112, 0x0000000000000000ULL, { 0x65C3CBC5E82A6835ULL, 0xECD6CB89040EC8E3ULL } }, /* XSUM_XXH128_testdata[3336] */ + { 1112, 0x000000009E3779B1ULL, { 0x9B0394C41B54837FULL, 0xA82BD0CD88DDF786ULL } }, /* XSUM_XXH128_testdata[3337] */ + { 1112, 0x9E3779B185EBCA8DULL, { 0x07BFDF0D944A5C57ULL, 0xB2FF57D6E7E6F5AFULL } }, /* XSUM_XXH128_testdata[3338] */ + { 1113, 0x0000000000000000ULL, { 0x68D7660406B2EDC4ULL, 0x465E0F51CD65367DULL } }, /* XSUM_XXH128_testdata[3339] */ + { 1113, 0x000000009E3779B1ULL, { 0x2B698775DDED8E08ULL, 0xC589D9B659ED6999ULL } }, /* XSUM_XXH128_testdata[3340] */ + { 1113, 0x9E3779B185EBCA8DULL, { 0x95418F648D646CA3ULL, 0x7F16B3810B5E0ED5ULL } }, /* XSUM_XXH128_testdata[3341] */ + { 1114, 0x0000000000000000ULL, { 0x1F244DA0A9F0EBE3ULL, 0xFB04C4F9C39F4CFBULL } }, /* XSUM_XXH128_testdata[3342] */ + { 1114, 0x000000009E3779B1ULL, { 0x64AAC4459B99E296ULL, 0xFD86522FE57174A2ULL } }, /* XSUM_XXH128_testdata[3343] */ + { 1114, 0x9E3779B185EBCA8DULL, { 0xB3E9095AF38024DFULL, 0xE7AFC59EB8564069ULL } }, /* XSUM_XXH128_testdata[3344] */ + { 1115, 0x0000000000000000ULL, { 0xD9621C941623B268ULL, 0x54982D4C65E5A25DULL } }, /* XSUM_XXH128_testdata[3345] */ + { 1115, 0x000000009E3779B1ULL, { 0x93E41EA15DC8D4EFULL, 0xD94CDA55494E22BFULL } }, /* XSUM_XXH128_testdata[3346] */ + { 1115, 0x9E3779B185EBCA8DULL, { 0x2C45FEF9EF363D5AULL, 0x43A2CBCEB2C9C1ADULL } }, /* XSUM_XXH128_testdata[3347] */ + { 1116, 0x0000000000000000ULL, { 0x41AF96D52DCB9BF8ULL, 0x2CD0FA6DE0F14876ULL } }, /* XSUM_XXH128_testdata[3348] */ + { 1116, 0x000000009E3779B1ULL, { 0xC294017AE96E0D7EULL, 0xC44BDD3D3D045DC9ULL } }, /* XSUM_XXH128_testdata[3349] */ + { 1116, 0x9E3779B185EBCA8DULL, { 0x6F201C12240137D9ULL, 0xE49ACD6E5EBE8836ULL } }, /* XSUM_XXH128_testdata[3350] */ + { 1117, 0x0000000000000000ULL, { 0xA2149B7CE171D9B1ULL, 0x963960861E3317BEULL } }, /* XSUM_XXH128_testdata[3351] */ + { 1117, 0x000000009E3779B1ULL, { 0x7F446A54074ADE67ULL, 0x4292C53B008C15CCULL } }, /* XSUM_XXH128_testdata[3352] */ + { 1117, 0x9E3779B185EBCA8DULL, { 0x11394E35AC357B5CULL, 0xB04C0A415E65B199ULL } }, /* XSUM_XXH128_testdata[3353] */ + { 1118, 0x0000000000000000ULL, { 0xA3A1E85D4187AB76ULL, 0x160CF47F56AF26A0ULL } }, /* XSUM_XXH128_testdata[3354] */ + { 1118, 0x000000009E3779B1ULL, { 0x5DF823A8BE8BA42BULL, 0x22AFDA1A87FA1148ULL } }, /* XSUM_XXH128_testdata[3355] */ + { 1118, 0x9E3779B185EBCA8DULL, { 0x670D7249F1A3FCF1ULL, 0x8687B5004E03F398ULL } }, /* XSUM_XXH128_testdata[3356] */ + { 1119, 0x0000000000000000ULL, { 0xA831366CE6D0A015ULL, 0x4110CB1FDD62C744ULL } }, /* XSUM_XXH128_testdata[3357] */ + { 1119, 0x000000009E3779B1ULL, { 0x8749144E57E27596ULL, 0x36D31E4C1C9627A5ULL } }, /* XSUM_XXH128_testdata[3358] */ + { 1119, 0x9E3779B185EBCA8DULL, { 0x90C64A736F00FE4FULL, 0x77B751EFD94A96C6ULL } }, /* XSUM_XXH128_testdata[3359] */ + { 1120, 0x0000000000000000ULL, { 0xCB2A01BE10913FE8ULL, 0xA835D38232B4DA49ULL } }, /* XSUM_XXH128_testdata[3360] */ + { 1120, 0x000000009E3779B1ULL, { 0x4BA304B309456643ULL, 0xBA26D9E1B7AB1408ULL } }, /* XSUM_XXH128_testdata[3361] */ + { 1120, 0x9E3779B185EBCA8DULL, { 0x1B9BDB62E75C91F8ULL, 0x552DDA014413A313ULL } }, /* XSUM_XXH128_testdata[3362] */ + { 1121, 0x0000000000000000ULL, { 0x926B4876BA26C868ULL, 0x9AFAF6C09BAB045BULL } }, /* XSUM_XXH128_testdata[3363] */ + { 1121, 0x000000009E3779B1ULL, { 0xB7E1DA6C7127A165ULL, 0x218EB38BD9746F75ULL } }, /* XSUM_XXH128_testdata[3364] */ + { 1121, 0x9E3779B185EBCA8DULL, { 0x67046D7374E193D8ULL, 0x21FDDAB26D305D0FULL } }, /* XSUM_XXH128_testdata[3365] */ + { 1122, 0x0000000000000000ULL, { 0x1DED852A9AF3BDDDULL, 0x42601F2E4A1AEDD3ULL } }, /* XSUM_XXH128_testdata[3366] */ + { 1122, 0x000000009E3779B1ULL, { 0xE975FF9754F00891ULL, 0x4E7AC4D3706C6A34ULL } }, /* XSUM_XXH128_testdata[3367] */ + { 1122, 0x9E3779B185EBCA8DULL, { 0xED4D97245B36909FULL, 0x9DA822A52679F6B8ULL } }, /* XSUM_XXH128_testdata[3368] */ + { 1123, 0x0000000000000000ULL, { 0x567A4339BF18DCD3ULL, 0x2889DF502511F323ULL } }, /* XSUM_XXH128_testdata[3369] */ + { 1123, 0x000000009E3779B1ULL, { 0xD2A15030AD465AE2ULL, 0x479D0BFEDCD5195DULL } }, /* XSUM_XXH128_testdata[3370] */ + { 1123, 0x9E3779B185EBCA8DULL, { 0x2C4C54BAB4E0D7AEULL, 0xC48B30865AA32FE6ULL } }, /* XSUM_XXH128_testdata[3371] */ + { 1124, 0x0000000000000000ULL, { 0x25FEE25F53DBE3A8ULL, 0xA61ADA016D3449D0ULL } }, /* XSUM_XXH128_testdata[3372] */ + { 1124, 0x000000009E3779B1ULL, { 0xF483E8C5E74A09CFULL, 0xB824DE4A69215AD4ULL } }, /* XSUM_XXH128_testdata[3373] */ + { 1124, 0x9E3779B185EBCA8DULL, { 0x405315AE00B8A986ULL, 0xCEF3E0DA205DBA8CULL } }, /* XSUM_XXH128_testdata[3374] */ + { 1125, 0x0000000000000000ULL, { 0x3FE1721559FFBC72ULL, 0x9EB8A30EE1FD8E66ULL } }, /* XSUM_XXH128_testdata[3375] */ + { 1125, 0x000000009E3779B1ULL, { 0xF69941FB5A7AA2A0ULL, 0x48898AF03F9B8748ULL } }, /* XSUM_XXH128_testdata[3376] */ + { 1125, 0x9E3779B185EBCA8DULL, { 0xB8F5C2BEF091AC93ULL, 0x1B46AE2FCF94E6D8ULL } }, /* XSUM_XXH128_testdata[3377] */ + { 1126, 0x0000000000000000ULL, { 0x50DF0CE31B152CB0ULL, 0x8AD5A087BFD1CDE5ULL } }, /* XSUM_XXH128_testdata[3378] */ + { 1126, 0x000000009E3779B1ULL, { 0xE39B84815763B80CULL, 0x6DF89B2F898A0ADAULL } }, /* XSUM_XXH128_testdata[3379] */ + { 1126, 0x9E3779B185EBCA8DULL, { 0x5B30F80DD455185BULL, 0xBF8AE9009C87C61BULL } }, /* XSUM_XXH128_testdata[3380] */ + { 1127, 0x0000000000000000ULL, { 0x47BED516867314E4ULL, 0x9FBC7281C2F8F5E2ULL } }, /* XSUM_XXH128_testdata[3381] */ + { 1127, 0x000000009E3779B1ULL, { 0x171C6480ED9ECCE0ULL, 0xD0B543E6C107B080ULL } }, /* XSUM_XXH128_testdata[3382] */ + { 1127, 0x9E3779B185EBCA8DULL, { 0x3CC4B630893CE8E6ULL, 0xE66A300BD66AAAC9ULL } }, /* XSUM_XXH128_testdata[3383] */ + { 1128, 0x0000000000000000ULL, { 0x1EF8A6EE399E57D0ULL, 0x56A33E2C4F776C8CULL } }, /* XSUM_XXH128_testdata[3384] */ + { 1128, 0x000000009E3779B1ULL, { 0xE3973D36B8FA7170ULL, 0x22DAF676DC7F949EULL } }, /* XSUM_XXH128_testdata[3385] */ + { 1128, 0x9E3779B185EBCA8DULL, { 0x84913A2F69B5E095ULL, 0x5C47ADDFC361497CULL } }, /* XSUM_XXH128_testdata[3386] */ + { 1129, 0x0000000000000000ULL, { 0x2B6BF915D838BA37ULL, 0x9896E81FAFBE956BULL } }, /* XSUM_XXH128_testdata[3387] */ + { 1129, 0x000000009E3779B1ULL, { 0x5DFE75B5BD39F04BULL, 0x4F8B8A7A0CB081B5ULL } }, /* XSUM_XXH128_testdata[3388] */ + { 1129, 0x9E3779B185EBCA8DULL, { 0x9F7F65EB9F75BBBCULL, 0x7FF26E7E4292EB00ULL } }, /* XSUM_XXH128_testdata[3389] */ + { 1130, 0x0000000000000000ULL, { 0xE3899E185F0E6802ULL, 0x88982F9D4A44C197ULL } }, /* XSUM_XXH128_testdata[3390] */ + { 1130, 0x000000009E3779B1ULL, { 0x21F94C1A6CBF91D1ULL, 0x3A00325C6D3850E9ULL } }, /* XSUM_XXH128_testdata[3391] */ + { 1130, 0x9E3779B185EBCA8DULL, { 0x1499DD150136E7E1ULL, 0xA711F1F07A4CA778ULL } }, /* XSUM_XXH128_testdata[3392] */ + { 1131, 0x0000000000000000ULL, { 0xE1D1B784229995DEULL, 0x679CF1DFA3A6B6DDULL } }, /* XSUM_XXH128_testdata[3393] */ + { 1131, 0x000000009E3779B1ULL, { 0xD629F6050071012EULL, 0xA5B25983912C6495ULL } }, /* XSUM_XXH128_testdata[3394] */ + { 1131, 0x9E3779B185EBCA8DULL, { 0x51A5FE1716C1F1D6ULL, 0xF782CE29A342D814ULL } }, /* XSUM_XXH128_testdata[3395] */ + { 1132, 0x0000000000000000ULL, { 0x87901B4D8E92F707ULL, 0xDB735ED007C17A4DULL } }, /* XSUM_XXH128_testdata[3396] */ + { 1132, 0x000000009E3779B1ULL, { 0xA346B55C902F4771ULL, 0x5BDF33572DE7A6F1ULL } }, /* XSUM_XXH128_testdata[3397] */ + { 1132, 0x9E3779B185EBCA8DULL, { 0x33AC4E72130C886AULL, 0xF541FDED6F7183B6ULL } }, /* XSUM_XXH128_testdata[3398] */ + { 1133, 0x0000000000000000ULL, { 0x714C8A36A1DC2505ULL, 0xB6A468AB0E8513C3ULL } }, /* XSUM_XXH128_testdata[3399] */ + { 1133, 0x000000009E3779B1ULL, { 0xFE7D6F12E2FDC841ULL, 0xE577506ABA410811ULL } }, /* XSUM_XXH128_testdata[3400] */ + { 1133, 0x9E3779B185EBCA8DULL, { 0xF833FAA2E9F8B356ULL, 0xAB53DAB4E4BF3CF9ULL } }, /* XSUM_XXH128_testdata[3401] */ + { 1134, 0x0000000000000000ULL, { 0xF7DCA61CB5BC30D6ULL, 0x83C755F74480B1C0ULL } }, /* XSUM_XXH128_testdata[3402] */ + { 1134, 0x000000009E3779B1ULL, { 0xEF3CEA1725DBA34AULL, 0xCB29480BA8695BA8ULL } }, /* XSUM_XXH128_testdata[3403] */ + { 1134, 0x9E3779B185EBCA8DULL, { 0xB0327515BE8AD7D7ULL, 0x4AAB940F5C5563C0ULL } }, /* XSUM_XXH128_testdata[3404] */ + { 1135, 0x0000000000000000ULL, { 0xF69A9C5CCA2DF6E7ULL, 0x210BDDA9089DAACCULL } }, /* XSUM_XXH128_testdata[3405] */ + { 1135, 0x000000009E3779B1ULL, { 0x06DFD6F0071CC743ULL, 0xCF933EEB422FAE48ULL } }, /* XSUM_XXH128_testdata[3406] */ + { 1135, 0x9E3779B185EBCA8DULL, { 0xF77C95BD632E961EULL, 0xAF708CB06E6B0C44ULL } }, /* XSUM_XXH128_testdata[3407] */ + { 1136, 0x0000000000000000ULL, { 0xB66FDAC8A6FA8971ULL, 0x866CAB635EEBF40EULL } }, /* XSUM_XXH128_testdata[3408] */ + { 1136, 0x000000009E3779B1ULL, { 0xF981B1CC3DAFE142ULL, 0xA14E59570393AC2DULL } }, /* XSUM_XXH128_testdata[3409] */ + { 1136, 0x9E3779B185EBCA8DULL, { 0x192181B62FABCA63ULL, 0xE749D529ECB71F9AULL } }, /* XSUM_XXH128_testdata[3410] */ + { 1137, 0x0000000000000000ULL, { 0x0D5273B6C4D4C5ACULL, 0xC8E8529C083172CFULL } }, /* XSUM_XXH128_testdata[3411] */ + { 1137, 0x000000009E3779B1ULL, { 0x50A4865FEF56FFCDULL, 0x8353B327F4B55E08ULL } }, /* XSUM_XXH128_testdata[3412] */ + { 1137, 0x9E3779B185EBCA8DULL, { 0x18482773977A216BULL, 0x3125AD4696573CAFULL } }, /* XSUM_XXH128_testdata[3413] */ + { 1138, 0x0000000000000000ULL, { 0xE966D7C30A58470AULL, 0x971F651FFDA42380ULL } }, /* XSUM_XXH128_testdata[3414] */ + { 1138, 0x000000009E3779B1ULL, { 0x8138D2651E5BA746ULL, 0x9F401F1A3E53736AULL } }, /* XSUM_XXH128_testdata[3415] */ + { 1138, 0x9E3779B185EBCA8DULL, { 0x0DFA80657CFB01A4ULL, 0x6DE4EE1B765AE812ULL } }, /* XSUM_XXH128_testdata[3416] */ + { 1139, 0x0000000000000000ULL, { 0x5259C45D43DBE53EULL, 0x045B3189DB1F67E0ULL } }, /* XSUM_XXH128_testdata[3417] */ + { 1139, 0x000000009E3779B1ULL, { 0x4926A3232CC96078ULL, 0x22DA320E5CC86185ULL } }, /* XSUM_XXH128_testdata[3418] */ + { 1139, 0x9E3779B185EBCA8DULL, { 0x6C18EE35FC320C14ULL, 0x617C1CE9BCF0AA59ULL } }, /* XSUM_XXH128_testdata[3419] */ + { 1140, 0x0000000000000000ULL, { 0xFB9AFE9E8341A37AULL, 0x759625D4E76ED626ULL } }, /* XSUM_XXH128_testdata[3420] */ + { 1140, 0x000000009E3779B1ULL, { 0xA3DAB6B2DCA25C37ULL, 0x4583E7B0B88BEFD6ULL } }, /* XSUM_XXH128_testdata[3421] */ + { 1140, 0x9E3779B185EBCA8DULL, { 0x7EACD8D28F36F2DBULL, 0x97CF3528A2A87273ULL } }, /* XSUM_XXH128_testdata[3422] */ + { 1141, 0x0000000000000000ULL, { 0xA5A57C3AB93B041EULL, 0x2721F68FFB72696CULL } }, /* XSUM_XXH128_testdata[3423] */ + { 1141, 0x000000009E3779B1ULL, { 0xD4676458FA739BDFULL, 0x2352AA1B33CAC2C5ULL } }, /* XSUM_XXH128_testdata[3424] */ + { 1141, 0x9E3779B185EBCA8DULL, { 0x1C9C1190FA766E90ULL, 0x2866DDDEA1772632ULL } }, /* XSUM_XXH128_testdata[3425] */ + { 1142, 0x0000000000000000ULL, { 0x4FA60243C1D9CFC7ULL, 0xA3C4F856DEF045DBULL } }, /* XSUM_XXH128_testdata[3426] */ + { 1142, 0x000000009E3779B1ULL, { 0xAC6529D085D37F18ULL, 0xD26DE06074970BB9ULL } }, /* XSUM_XXH128_testdata[3427] */ + { 1142, 0x9E3779B185EBCA8DULL, { 0x87DC592B1BE2BF3EULL, 0xEA52420924C45A12ULL } }, /* XSUM_XXH128_testdata[3428] */ + { 1143, 0x0000000000000000ULL, { 0x2A2F9060C75659ABULL, 0x27266060F4882155ULL } }, /* XSUM_XXH128_testdata[3429] */ + { 1143, 0x000000009E3779B1ULL, { 0x291C2CFA6B6B4FF0ULL, 0xE68152F31675BDA7ULL } }, /* XSUM_XXH128_testdata[3430] */ + { 1143, 0x9E3779B185EBCA8DULL, { 0x21FBFB1EF1D23899ULL, 0x5AE85C3FCE013D6CULL } }, /* XSUM_XXH128_testdata[3431] */ + { 1144, 0x0000000000000000ULL, { 0x95A486382492BF45ULL, 0x582C69B19272A222ULL } }, /* XSUM_XXH128_testdata[3432] */ + { 1144, 0x000000009E3779B1ULL, { 0x224747C6EED3EA5AULL, 0x739B12BBCE58A449ULL } }, /* XSUM_XXH128_testdata[3433] */ + { 1144, 0x9E3779B185EBCA8DULL, { 0xB20CCD731AF9E696ULL, 0x6116BA506C5F6CF0ULL } }, /* XSUM_XXH128_testdata[3434] */ + { 1145, 0x0000000000000000ULL, { 0x58CE092D9AAB9B92ULL, 0x2FD50E3389EF705DULL } }, /* XSUM_XXH128_testdata[3435] */ + { 1145, 0x000000009E3779B1ULL, { 0x48895D9BDDB66919ULL, 0x7FCFA6BF85B675D5ULL } }, /* XSUM_XXH128_testdata[3436] */ + { 1145, 0x9E3779B185EBCA8DULL, { 0x86C5C6FE0D4772C7ULL, 0x6F7469FE52DB4369ULL } }, /* XSUM_XXH128_testdata[3437] */ + { 1146, 0x0000000000000000ULL, { 0x2B667E781A3E3B39ULL, 0x47D794547124FFD9ULL } }, /* XSUM_XXH128_testdata[3438] */ + { 1146, 0x000000009E3779B1ULL, { 0x3BBD92AEBE2C47FFULL, 0x7C9504213D536868ULL } }, /* XSUM_XXH128_testdata[3439] */ + { 1146, 0x9E3779B185EBCA8DULL, { 0x30E430D337512CABULL, 0x4D22E73768B73290ULL } }, /* XSUM_XXH128_testdata[3440] */ + { 1147, 0x0000000000000000ULL, { 0xE3FDBC1329BC7311ULL, 0xDEDD35F903D91280ULL } }, /* XSUM_XXH128_testdata[3441] */ + { 1147, 0x000000009E3779B1ULL, { 0xD91893AFE7DBE64CULL, 0x0BAEAC131E45F53EULL } }, /* XSUM_XXH128_testdata[3442] */ + { 1147, 0x9E3779B185EBCA8DULL, { 0x5148F9DD7AFCB065ULL, 0x6940B87AF6EEF056ULL } }, /* XSUM_XXH128_testdata[3443] */ + { 1148, 0x0000000000000000ULL, { 0xCF6D44DEAE45F6C1ULL, 0x9EA7E8934BC91A64ULL } }, /* XSUM_XXH128_testdata[3444] */ + { 1148, 0x000000009E3779B1ULL, { 0x05685E88466BC90EULL, 0xD32C9E8B8909310AULL } }, /* XSUM_XXH128_testdata[3445] */ + { 1148, 0x9E3779B185EBCA8DULL, { 0x52981C66CC0CA09DULL, 0x5DBD4D6DFE1489D1ULL } }, /* XSUM_XXH128_testdata[3446] */ + { 1149, 0x0000000000000000ULL, { 0x9FA5149C1E410A10ULL, 0x8C2484072FA08D72ULL } }, /* XSUM_XXH128_testdata[3447] */ + { 1149, 0x000000009E3779B1ULL, { 0x895A71B18EE5C2AAULL, 0xCBEEA57508B0C881ULL } }, /* XSUM_XXH128_testdata[3448] */ + { 1149, 0x9E3779B185EBCA8DULL, { 0x3C0AEE0E925A6134ULL, 0x41860F8A31CABA00ULL } }, /* XSUM_XXH128_testdata[3449] */ + { 1150, 0x0000000000000000ULL, { 0xA3F61AC5C9AC2CB4ULL, 0xBC7BB45F116E8B0FULL } }, /* XSUM_XXH128_testdata[3450] */ + { 1150, 0x000000009E3779B1ULL, { 0x98DBB68AB05C1A21ULL, 0xB7272ACFB270E507ULL } }, /* XSUM_XXH128_testdata[3451] */ + { 1150, 0x9E3779B185EBCA8DULL, { 0x834BA906F8130A85ULL, 0xFA7287E694698788ULL } }, /* XSUM_XXH128_testdata[3452] */ + { 1151, 0x0000000000000000ULL, { 0x7153F50FED4BA56AULL, 0xD846634075E4863BULL } }, /* XSUM_XXH128_testdata[3453] */ + { 1151, 0x000000009E3779B1ULL, { 0xD6E130A5BBCEED1FULL, 0x7C2C9E27A3193B7BULL } }, /* XSUM_XXH128_testdata[3454] */ + { 1151, 0x9E3779B185EBCA8DULL, { 0x0AE7204E79BBEB04ULL, 0x6DEFB403545BF329ULL } }, /* XSUM_XXH128_testdata[3455] */ + { 1152, 0x0000000000000000ULL, { 0x8D10F861683EB1DDULL, 0xD2841053C7131465ULL } }, /* XSUM_XXH128_testdata[3456] */ + { 1152, 0x000000009E3779B1ULL, { 0xF1AC91913D44900AULL, 0xA7BE5FA5FE05D083ULL } }, /* XSUM_XXH128_testdata[3457] */ + { 1152, 0x9E3779B185EBCA8DULL, { 0xCFE2924BF8DDE23FULL, 0x8240F5920BD07BD2ULL } }, /* XSUM_XXH128_testdata[3458] */ + { 1153, 0x0000000000000000ULL, { 0x252E89C8B0620818ULL, 0x79D381D607FA1820ULL } }, /* XSUM_XXH128_testdata[3459] */ + { 1153, 0x000000009E3779B1ULL, { 0x35D199752378B93AULL, 0x15898EEDC46879B1ULL } }, /* XSUM_XXH128_testdata[3460] */ + { 1153, 0x9E3779B185EBCA8DULL, { 0xC6DC90A02641B916ULL, 0xDE9AFE976499B134ULL } }, /* XSUM_XXH128_testdata[3461] */ + { 1154, 0x0000000000000000ULL, { 0x311FA7F0D2EDF339ULL, 0x8E716B3BC33B46E2ULL } }, /* XSUM_XXH128_testdata[3462] */ + { 1154, 0x000000009E3779B1ULL, { 0x6A3214F37AC40953ULL, 0x0D6C8C7A8027E24CULL } }, /* XSUM_XXH128_testdata[3463] */ + { 1154, 0x9E3779B185EBCA8DULL, { 0xB8E4C7A1170A3DAFULL, 0x6FABB92D9BB9D5EFULL } }, /* XSUM_XXH128_testdata[3464] */ + { 1155, 0x0000000000000000ULL, { 0x4169E14522944D4BULL, 0x70125814B7155956ULL } }, /* XSUM_XXH128_testdata[3465] */ + { 1155, 0x000000009E3779B1ULL, { 0x9FA572C4899827AFULL, 0xF06E1A51276C37DEULL } }, /* XSUM_XXH128_testdata[3466] */ + { 1155, 0x9E3779B185EBCA8DULL, { 0x5F2A1BA5122ECCB3ULL, 0xD67EF333CBAA4EC7ULL } }, /* XSUM_XXH128_testdata[3467] */ + { 1156, 0x0000000000000000ULL, { 0xA7FC6341379A1C87ULL, 0x6BBD5BBBEAF68291ULL } }, /* XSUM_XXH128_testdata[3468] */ + { 1156, 0x000000009E3779B1ULL, { 0xC250A296ED2E4D82ULL, 0xC37DF808ED1E80EEULL } }, /* XSUM_XXH128_testdata[3469] */ + { 1156, 0x9E3779B185EBCA8DULL, { 0xFE49682AA0CEF4B7ULL, 0xB791ECEB3B7299E9ULL } }, /* XSUM_XXH128_testdata[3470] */ + { 1157, 0x0000000000000000ULL, { 0x73F986F4372BEBB0ULL, 0x8758E984BADAE260ULL } }, /* XSUM_XXH128_testdata[3471] */ + { 1157, 0x000000009E3779B1ULL, { 0xF8D58AF9B783FA1FULL, 0x3AC88275399097D9ULL } }, /* XSUM_XXH128_testdata[3472] */ + { 1157, 0x9E3779B185EBCA8DULL, { 0x9002BED3D9E0A393ULL, 0x036E16A258D35520ULL } }, /* XSUM_XXH128_testdata[3473] */ + { 1158, 0x0000000000000000ULL, { 0x4E1447A6BE5E402CULL, 0x65D5096F2C79D619ULL } }, /* XSUM_XXH128_testdata[3474] */ + { 1158, 0x000000009E3779B1ULL, { 0xED6FCCC5CA6A5EE0ULL, 0xF089AC72A66EB1B3ULL } }, /* XSUM_XXH128_testdata[3475] */ + { 1158, 0x9E3779B185EBCA8DULL, { 0xDD545BD05F40925EULL, 0x42FA7A218C5DE6F7ULL } }, /* XSUM_XXH128_testdata[3476] */ + { 1159, 0x0000000000000000ULL, { 0xA3D95CC9126FE6DFULL, 0x7995FEE4A8205BD9ULL } }, /* XSUM_XXH128_testdata[3477] */ + { 1159, 0x000000009E3779B1ULL, { 0x749E9EAB14747B43ULL, 0xDD0FC7FFA86CA5ECULL } }, /* XSUM_XXH128_testdata[3478] */ + { 1159, 0x9E3779B185EBCA8DULL, { 0x03A8D27CA2B2D76AULL, 0x6A72D9B0FDD0954BULL } }, /* XSUM_XXH128_testdata[3479] */ + { 1160, 0x0000000000000000ULL, { 0x33C5E608FD1DCAACULL, 0x8D8608F5A9FA01B4ULL } }, /* XSUM_XXH128_testdata[3480] */ + { 1160, 0x000000009E3779B1ULL, { 0x54E6BEC0457C9FFCULL, 0xA4FC682E771B663EULL } }, /* XSUM_XXH128_testdata[3481] */ + { 1160, 0x9E3779B185EBCA8DULL, { 0x40688062F1E7B6FFULL, 0x8A25A3BCA111A066ULL } }, /* XSUM_XXH128_testdata[3482] */ + { 1161, 0x0000000000000000ULL, { 0x6B02FA3CCF0807B9ULL, 0xCD8B2E809835BFAFULL } }, /* XSUM_XXH128_testdata[3483] */ + { 1161, 0x000000009E3779B1ULL, { 0xCA0171A1491BDDEAULL, 0x62323C4E46EC9862ULL } }, /* XSUM_XXH128_testdata[3484] */ + { 1161, 0x9E3779B185EBCA8DULL, { 0x43F4ECDD94066F7DULL, 0x9D2AF8891EB4309CULL } }, /* XSUM_XXH128_testdata[3485] */ + { 1162, 0x0000000000000000ULL, { 0xE1AD8D763CC16027ULL, 0x5A379025A10989BBULL } }, /* XSUM_XXH128_testdata[3486] */ + { 1162, 0x000000009E3779B1ULL, { 0x6555FD899FC44FD3ULL, 0x74C382F52A05559AULL } }, /* XSUM_XXH128_testdata[3487] */ + { 1162, 0x9E3779B185EBCA8DULL, { 0xC6700710D9B395B0ULL, 0xABEA1108FC2EEBB5ULL } }, /* XSUM_XXH128_testdata[3488] */ + { 1163, 0x0000000000000000ULL, { 0x573093F71A1634B7ULL, 0xD2CA8B90EA8EBE38ULL } }, /* XSUM_XXH128_testdata[3489] */ + { 1163, 0x000000009E3779B1ULL, { 0xE3F1531D75228F5CULL, 0x723D469BF93163EDULL } }, /* XSUM_XXH128_testdata[3490] */ + { 1163, 0x9E3779B185EBCA8DULL, { 0x68E92EB26219F13FULL, 0x3D5F16CD3FB00C5CULL } }, /* XSUM_XXH128_testdata[3491] */ + { 1164, 0x0000000000000000ULL, { 0x9DEBD4109474D726ULL, 0x8FE0712494742CB0ULL } }, /* XSUM_XXH128_testdata[3492] */ + { 1164, 0x000000009E3779B1ULL, { 0xB63F687A28C58ADCULL, 0xAE64B3BC791CEC49ULL } }, /* XSUM_XXH128_testdata[3493] */ + { 1164, 0x9E3779B185EBCA8DULL, { 0x5A6788F657CD633BULL, 0xF03FECD496AE7A43ULL } }, /* XSUM_XXH128_testdata[3494] */ + { 1165, 0x0000000000000000ULL, { 0x1FF83F00B1BA6967ULL, 0xE22F1232E08AAC29ULL } }, /* XSUM_XXH128_testdata[3495] */ + { 1165, 0x000000009E3779B1ULL, { 0x2FEAE7A27CD7E58DULL, 0x32A9880284ADDDC8ULL } }, /* XSUM_XXH128_testdata[3496] */ + { 1165, 0x9E3779B185EBCA8DULL, { 0xE699B831D005AA77ULL, 0x729FE70527DB7B3FULL } }, /* XSUM_XXH128_testdata[3497] */ + { 1166, 0x0000000000000000ULL, { 0xADF8173CC6FC46F1ULL, 0xB8A9FB716F74E07DULL } }, /* XSUM_XXH128_testdata[3498] */ + { 1166, 0x000000009E3779B1ULL, { 0xD1BC13469AF686ACULL, 0x45C19918D1608640ULL } }, /* XSUM_XXH128_testdata[3499] */ + { 1166, 0x9E3779B185EBCA8DULL, { 0xC594148173266FDAULL, 0x892DCD53DCDF2FA8ULL } }, /* XSUM_XXH128_testdata[3500] */ + { 1167, 0x0000000000000000ULL, { 0xB9D3BAD7E7FC06D6ULL, 0x01FC939B8EFBA859ULL } }, /* XSUM_XXH128_testdata[3501] */ + { 1167, 0x000000009E3779B1ULL, { 0x2989AC4ED629C25BULL, 0x06669D9668BD36DEULL } }, /* XSUM_XXH128_testdata[3502] */ + { 1167, 0x9E3779B185EBCA8DULL, { 0xF8A28AE7386C9CA6ULL, 0x99778DC7559F3C2FULL } }, /* XSUM_XXH128_testdata[3503] */ + { 1168, 0x0000000000000000ULL, { 0x2481831BA46F2CADULL, 0xCDA03EEE95CFE40BULL } }, /* XSUM_XXH128_testdata[3504] */ + { 1168, 0x000000009E3779B1ULL, { 0x1269F8B6C54CF0BCULL, 0x23058DA16CB6D4F3ULL } }, /* XSUM_XXH128_testdata[3505] */ + { 1168, 0x9E3779B185EBCA8DULL, { 0xB335B696CA795EE7ULL, 0x29C8972B60D89BFEULL } }, /* XSUM_XXH128_testdata[3506] */ + { 1169, 0x0000000000000000ULL, { 0x02DC7BCE7DCAE4A8ULL, 0xBDDDC400E0D87778ULL } }, /* XSUM_XXH128_testdata[3507] */ + { 1169, 0x000000009E3779B1ULL, { 0xAEB1AAF99FB713D0ULL, 0xD9EABCFA0DCD0775ULL } }, /* XSUM_XXH128_testdata[3508] */ + { 1169, 0x9E3779B185EBCA8DULL, { 0xE348E8AA3E73F106ULL, 0x3488903498F31B71ULL } }, /* XSUM_XXH128_testdata[3509] */ + { 1170, 0x0000000000000000ULL, { 0x79061966F462DCDAULL, 0xBD399C3F37F22880ULL } }, /* XSUM_XXH128_testdata[3510] */ + { 1170, 0x000000009E3779B1ULL, { 0x622489E23CE96824ULL, 0x100A53213B643748ULL } }, /* XSUM_XXH128_testdata[3511] */ + { 1170, 0x9E3779B185EBCA8DULL, { 0x4991A0E944442A33ULL, 0xE45627A6E89DE6C3ULL } }, /* XSUM_XXH128_testdata[3512] */ + { 1171, 0x0000000000000000ULL, { 0xAAB7B2C920767186ULL, 0xFFF5FF56AC764794ULL } }, /* XSUM_XXH128_testdata[3513] */ + { 1171, 0x000000009E3779B1ULL, { 0x06AD8AB6F70021BAULL, 0xF1B43A61647F09C3ULL } }, /* XSUM_XXH128_testdata[3514] */ + { 1171, 0x9E3779B185EBCA8DULL, { 0x1644853718A82C48ULL, 0xA914FDE5BBCD2BB9ULL } }, /* XSUM_XXH128_testdata[3515] */ + { 1172, 0x0000000000000000ULL, { 0x377984BBDC972C61ULL, 0x1E4ADA691430DC82ULL } }, /* XSUM_XXH128_testdata[3516] */ + { 1172, 0x000000009E3779B1ULL, { 0x5F11B0BBB35F1072ULL, 0x4EBE5BE5705396F8ULL } }, /* XSUM_XXH128_testdata[3517] */ + { 1172, 0x9E3779B185EBCA8DULL, { 0xBFCC79B556D0FAD1ULL, 0x35800105840C2613ULL } }, /* XSUM_XXH128_testdata[3518] */ + { 1173, 0x0000000000000000ULL, { 0x0B774EDF492C83B0ULL, 0x29D46D25DE3B0526ULL } }, /* XSUM_XXH128_testdata[3519] */ + { 1173, 0x000000009E3779B1ULL, { 0x933A282A37E52824ULL, 0x3819AC00A1E6947CULL } }, /* XSUM_XXH128_testdata[3520] */ + { 1173, 0x9E3779B185EBCA8DULL, { 0x3B7CE54D4FF74975ULL, 0xE84313A700D32B60ULL } }, /* XSUM_XXH128_testdata[3521] */ + { 1174, 0x0000000000000000ULL, { 0xD9956AE7D21B2F84ULL, 0x06DC94398B5BF886ULL } }, /* XSUM_XXH128_testdata[3522] */ + { 1174, 0x000000009E3779B1ULL, { 0xCBE95053E7150110ULL, 0xD556DB307B932133ULL } }, /* XSUM_XXH128_testdata[3523] */ + { 1174, 0x9E3779B185EBCA8DULL, { 0xB73ACE5844F5D7AAULL, 0xBF5D9E6D1C520502ULL } }, /* XSUM_XXH128_testdata[3524] */ + { 1175, 0x0000000000000000ULL, { 0x254AC4049415B36EULL, 0x690642C11DD48209ULL } }, /* XSUM_XXH128_testdata[3525] */ + { 1175, 0x000000009E3779B1ULL, { 0xAD8C71D836908417ULL, 0x566777C634443A40ULL } }, /* XSUM_XXH128_testdata[3526] */ + { 1175, 0x9E3779B185EBCA8DULL, { 0xDA2B6F4CFD587974ULL, 0x672A7602AF3B1AC5ULL } }, /* XSUM_XXH128_testdata[3527] */ + { 1176, 0x0000000000000000ULL, { 0x763F66686DCB793EULL, 0x0696427E3AB5BAA1ULL } }, /* XSUM_XXH128_testdata[3528] */ + { 1176, 0x000000009E3779B1ULL, { 0x4B96BF52359D21CDULL, 0x2E440413E9D35D30ULL } }, /* XSUM_XXH128_testdata[3529] */ + { 1176, 0x9E3779B185EBCA8DULL, { 0x043904FCE497378FULL, 0x88F405B5E93AA94DULL } }, /* XSUM_XXH128_testdata[3530] */ + { 1177, 0x0000000000000000ULL, { 0x7497A217A28DCC72ULL, 0x965EADE214C31CBCULL } }, /* XSUM_XXH128_testdata[3531] */ + { 1177, 0x000000009E3779B1ULL, { 0x91FACA0DBFF434FCULL, 0xF24421AB9683CE82ULL } }, /* XSUM_XXH128_testdata[3532] */ + { 1177, 0x9E3779B185EBCA8DULL, { 0x532A929B311E60ECULL, 0xFC5C3E3832002DA1ULL } }, /* XSUM_XXH128_testdata[3533] */ + { 1178, 0x0000000000000000ULL, { 0x253D013B8D280C37ULL, 0xC43245EA07BA7EF7ULL } }, /* XSUM_XXH128_testdata[3534] */ + { 1178, 0x000000009E3779B1ULL, { 0xBC8C333149C563FEULL, 0x7A0C2C991ED082C3ULL } }, /* XSUM_XXH128_testdata[3535] */ + { 1178, 0x9E3779B185EBCA8DULL, { 0xE25B82B4BC5D331EULL, 0x05D0BA7B75135258ULL } }, /* XSUM_XXH128_testdata[3536] */ + { 1179, 0x0000000000000000ULL, { 0x030F0AEA67DB5C79ULL, 0xD8524D9C10DDEA9EULL } }, /* XSUM_XXH128_testdata[3537] */ + { 1179, 0x000000009E3779B1ULL, { 0xC5199E29CBC8AF8BULL, 0x5CF5AECA008476E7ULL } }, /* XSUM_XXH128_testdata[3538] */ + { 1179, 0x9E3779B185EBCA8DULL, { 0x7131DB7933A9CAAEULL, 0x8A49BEA252F8F13BULL } }, /* XSUM_XXH128_testdata[3539] */ + { 1180, 0x0000000000000000ULL, { 0x5F5C759A10D1AF03ULL, 0xBFD0626E13BBFF1DULL } }, /* XSUM_XXH128_testdata[3540] */ + { 1180, 0x000000009E3779B1ULL, { 0x449E881982F8A9D6ULL, 0xFCB6B806E3CDDD58ULL } }, /* XSUM_XXH128_testdata[3541] */ + { 1180, 0x9E3779B185EBCA8DULL, { 0x0D36C9BB287F117BULL, 0xC5B34A2994550C9EULL } }, /* XSUM_XXH128_testdata[3542] */ + { 1181, 0x0000000000000000ULL, { 0x97AC67580FD4C886ULL, 0xF996F295188B980BULL } }, /* XSUM_XXH128_testdata[3543] */ + { 1181, 0x000000009E3779B1ULL, { 0xFE998D4B86BB1956ULL, 0x82F64EA18F35C1D8ULL } }, /* XSUM_XXH128_testdata[3544] */ + { 1181, 0x9E3779B185EBCA8DULL, { 0x7602370EC794621BULL, 0xD38797A782225274ULL } }, /* XSUM_XXH128_testdata[3545] */ + { 1182, 0x0000000000000000ULL, { 0xDF9B39788BABDDAFULL, 0xCC9967E334131AA9ULL } }, /* XSUM_XXH128_testdata[3546] */ + { 1182, 0x000000009E3779B1ULL, { 0x86B7C227DA034441ULL, 0xBC9BD05F637F6DD8ULL } }, /* XSUM_XXH128_testdata[3547] */ + { 1182, 0x9E3779B185EBCA8DULL, { 0x7C09B5F543FA2583ULL, 0xEC5C0201E5BBFB6FULL } }, /* XSUM_XXH128_testdata[3548] */ + { 1183, 0x0000000000000000ULL, { 0x94CF2A6D670BD114ULL, 0xBC1F07EF116B6369ULL } }, /* XSUM_XXH128_testdata[3549] */ + { 1183, 0x000000009E3779B1ULL, { 0x93FE56A4C53C0D05ULL, 0x86911A49B331D196ULL } }, /* XSUM_XXH128_testdata[3550] */ + { 1183, 0x9E3779B185EBCA8DULL, { 0xA708E0A87286116BULL, 0xF86D41F269AA30A6ULL } }, /* XSUM_XXH128_testdata[3551] */ + { 1184, 0x0000000000000000ULL, { 0x76B645800E737E45ULL, 0xDD42CE55D1DBC9E5ULL } }, /* XSUM_XXH128_testdata[3552] */ + { 1184, 0x000000009E3779B1ULL, { 0x27F11313AC664065ULL, 0x8AF081D8031FAF83ULL } }, /* XSUM_XXH128_testdata[3553] */ + { 1184, 0x9E3779B185EBCA8DULL, { 0xFB3C8BCA9776922BULL, 0x91BE560A96FF1C2CULL } }, /* XSUM_XXH128_testdata[3554] */ + { 1185, 0x0000000000000000ULL, { 0x596A8828CE2B8ED9ULL, 0xF32857484BE91DD2ULL } }, /* XSUM_XXH128_testdata[3555] */ + { 1185, 0x000000009E3779B1ULL, { 0xB2BE2B625A0C3EBCULL, 0x59ECF70CE110F7A3ULL } }, /* XSUM_XXH128_testdata[3556] */ + { 1185, 0x9E3779B185EBCA8DULL, { 0x016272A320784820ULL, 0x664CFC4C39C55645ULL } }, /* XSUM_XXH128_testdata[3557] */ + { 1186, 0x0000000000000000ULL, { 0x65A6DE268E6B1931ULL, 0xEFA8BFF6EF0FC901ULL } }, /* XSUM_XXH128_testdata[3558] */ + { 1186, 0x000000009E3779B1ULL, { 0xEBA5DBE33850F0BFULL, 0x8B8C1D928375FEE2ULL } }, /* XSUM_XXH128_testdata[3559] */ + { 1186, 0x9E3779B185EBCA8DULL, { 0x126CF07FE3A547F7ULL, 0x586ED870290EB8FBULL } }, /* XSUM_XXH128_testdata[3560] */ + { 1187, 0x0000000000000000ULL, { 0x43F7BC2C8C631282ULL, 0xF6F47E19DCD0FB4FULL } }, /* XSUM_XXH128_testdata[3561] */ + { 1187, 0x000000009E3779B1ULL, { 0xC0A9D5B32FFDEC0FULL, 0x5D45371EEEDD1701ULL } }, /* XSUM_XXH128_testdata[3562] */ + { 1187, 0x9E3779B185EBCA8DULL, { 0x1F6351FEF142B5F1ULL, 0x25EC78E55809CBA4ULL } }, /* XSUM_XXH128_testdata[3563] */ + { 1188, 0x0000000000000000ULL, { 0xE1851CC71FC6FD60ULL, 0xCEBEDBA1DC59687BULL } }, /* XSUM_XXH128_testdata[3564] */ + { 1188, 0x000000009E3779B1ULL, { 0xFA0CC49EE36CB65AULL, 0x757D2CB0E77377E2ULL } }, /* XSUM_XXH128_testdata[3565] */ + { 1188, 0x9E3779B185EBCA8DULL, { 0x2319155DCA7F781EULL, 0x3F9DCA24311826EAULL } }, /* XSUM_XXH128_testdata[3566] */ + { 1189, 0x0000000000000000ULL, { 0xF3B7E0EED66D8AB7ULL, 0x74E18D213F243BD6ULL } }, /* XSUM_XXH128_testdata[3567] */ + { 1189, 0x000000009E3779B1ULL, { 0xA8C4827FA055425EULL, 0x0C6947D8EC870FC6ULL } }, /* XSUM_XXH128_testdata[3568] */ + { 1189, 0x9E3779B185EBCA8DULL, { 0xFFD2FEA9DCDA49C8ULL, 0x70C69F59990B188EULL } }, /* XSUM_XXH128_testdata[3569] */ + { 1190, 0x0000000000000000ULL, { 0x4543A9DAADC78B77ULL, 0xAA887CDE739C0D8AULL } }, /* XSUM_XXH128_testdata[3570] */ + { 1190, 0x000000009E3779B1ULL, { 0x39D2228550058764ULL, 0x6AE7EC2640B33C8AULL } }, /* XSUM_XXH128_testdata[3571] */ + { 1190, 0x9E3779B185EBCA8DULL, { 0xD52DA73BDEAD7097ULL, 0xA023C46CE8162CAAULL } }, /* XSUM_XXH128_testdata[3572] */ + { 1191, 0x0000000000000000ULL, { 0xBBA0CCC91A773F43ULL, 0xC49D155CF3B65857ULL } }, /* XSUM_XXH128_testdata[3573] */ + { 1191, 0x000000009E3779B1ULL, { 0xA8DE49DD9279E7AAULL, 0x5249F92961325BB1ULL } }, /* XSUM_XXH128_testdata[3574] */ + { 1191, 0x9E3779B185EBCA8DULL, { 0xFA7D0878F0E42D52ULL, 0x4F2CA7CECD763E2CULL } }, /* XSUM_XXH128_testdata[3575] */ + { 1192, 0x0000000000000000ULL, { 0xCC7D840BCE9BAC5EULL, 0x14E84CAC07861D2FULL } }, /* XSUM_XXH128_testdata[3576] */ + { 1192, 0x000000009E3779B1ULL, { 0x9445E23955F1FBC5ULL, 0xCD7B74390D16711FULL } }, /* XSUM_XXH128_testdata[3577] */ + { 1192, 0x9E3779B185EBCA8DULL, { 0x1A5684985BBD433EULL, 0x829043677F213713ULL } }, /* XSUM_XXH128_testdata[3578] */ + { 1193, 0x0000000000000000ULL, { 0x39E9ABD8764C36FAULL, 0x6338DA03840EE491ULL } }, /* XSUM_XXH128_testdata[3579] */ + { 1193, 0x000000009E3779B1ULL, { 0x56A1A9828184920AULL, 0xC6A32BA7BEBCB3B6ULL } }, /* XSUM_XXH128_testdata[3580] */ + { 1193, 0x9E3779B185EBCA8DULL, { 0xB35ECC57D2A66C11ULL, 0x016D69DA7985D7D6ULL } }, /* XSUM_XXH128_testdata[3581] */ + { 1194, 0x0000000000000000ULL, { 0x30BD41F718E2D454ULL, 0x535B5367F551D5BBULL } }, /* XSUM_XXH128_testdata[3582] */ + { 1194, 0x000000009E3779B1ULL, { 0x88FFF722D6CE7111ULL, 0x18D1E252187B3003ULL } }, /* XSUM_XXH128_testdata[3583] */ + { 1194, 0x9E3779B185EBCA8DULL, { 0x51A49CBB02557472ULL, 0x6306450829E46712ULL } }, /* XSUM_XXH128_testdata[3584] */ + { 1195, 0x0000000000000000ULL, { 0x0914B04B3B4D335EULL, 0x546536485DCA0C41ULL } }, /* XSUM_XXH128_testdata[3585] */ + { 1195, 0x000000009E3779B1ULL, { 0xF1452B194B80F205ULL, 0xF3A2123FF69641F2ULL } }, /* XSUM_XXH128_testdata[3586] */ + { 1195, 0x9E3779B185EBCA8DULL, { 0x3B51F879AEA1BE77ULL, 0x58B1B2817693EABCULL } }, /* XSUM_XXH128_testdata[3587] */ + { 1196, 0x0000000000000000ULL, { 0xCC0CE7BA422B55CFULL, 0x38806C78E88D0DF7ULL } }, /* XSUM_XXH128_testdata[3588] */ + { 1196, 0x000000009E3779B1ULL, { 0x0A255B683A633580ULL, 0x0554CF322A8EFEEBULL } }, /* XSUM_XXH128_testdata[3589] */ + { 1196, 0x9E3779B185EBCA8DULL, { 0x0F06EC5AC1D04855ULL, 0x4811857A10345449ULL } }, /* XSUM_XXH128_testdata[3590] */ + { 1197, 0x0000000000000000ULL, { 0xD91DF662BC7D84C9ULL, 0xFBF0E264C9DE9CCCULL } }, /* XSUM_XXH128_testdata[3591] */ + { 1197, 0x000000009E3779B1ULL, { 0xD9A7764566DE708DULL, 0x92C258112667AC8CULL } }, /* XSUM_XXH128_testdata[3592] */ + { 1197, 0x9E3779B185EBCA8DULL, { 0xBE419090E56BB293ULL, 0xE4B9B2C20793E265ULL } }, /* XSUM_XXH128_testdata[3593] */ + { 1198, 0x0000000000000000ULL, { 0x0D0DFBCD20029D56ULL, 0x26A02FC7B489E9A5ULL } }, /* XSUM_XXH128_testdata[3594] */ + { 1198, 0x000000009E3779B1ULL, { 0xD0558B8E912A7DEAULL, 0x808D86192391BC9EULL } }, /* XSUM_XXH128_testdata[3595] */ + { 1198, 0x9E3779B185EBCA8DULL, { 0x7F9233AF2D2A09B3ULL, 0x76FA2956D6A2B884ULL } }, /* XSUM_XXH128_testdata[3596] */ + { 1199, 0x0000000000000000ULL, { 0xB11D0BAAD822491AULL, 0x3E1D82F8EE04A175ULL } }, /* XSUM_XXH128_testdata[3597] */ + { 1199, 0x000000009E3779B1ULL, { 0x1F4C1F9DF2C0C7C8ULL, 0x400C96E9A5DFF3B9ULL } }, /* XSUM_XXH128_testdata[3598] */ + { 1199, 0x9E3779B185EBCA8DULL, { 0xC2620E0E0D1AB3F3ULL, 0xEA69AFCD686859F5ULL } }, /* XSUM_XXH128_testdata[3599] */ + { 1200, 0x0000000000000000ULL, { 0x203BF68D0CB40248ULL, 0x7CB02D7862CFC204ULL } }, /* XSUM_XXH128_testdata[3600] */ + { 1200, 0x000000009E3779B1ULL, { 0x96B8516EC2DF307DULL, 0x58AFFE34E6D97F15ULL } }, /* XSUM_XXH128_testdata[3601] */ + { 1200, 0x9E3779B185EBCA8DULL, { 0xC782C87F8C12981EULL, 0x44F13BEE051AFB52ULL } }, /* XSUM_XXH128_testdata[3602] */ + { 1201, 0x0000000000000000ULL, { 0x27AC93A13B0441EAULL, 0x8CA42C7DD0A6E8B2ULL } }, /* XSUM_XXH128_testdata[3603] */ + { 1201, 0x000000009E3779B1ULL, { 0xD46513209A4CA9A2ULL, 0xF362BFBE6D95BD4FULL } }, /* XSUM_XXH128_testdata[3604] */ + { 1201, 0x9E3779B185EBCA8DULL, { 0x00322A94AD07FE4CULL, 0xF957E56CB241640AULL } }, /* XSUM_XXH128_testdata[3605] */ + { 1202, 0x0000000000000000ULL, { 0xCA123B3DB28A833FULL, 0x87B8D0C60288B3FBULL } }, /* XSUM_XXH128_testdata[3606] */ + { 1202, 0x000000009E3779B1ULL, { 0x5462083EDD43A337ULL, 0x9AF4402BB71C7267ULL } }, /* XSUM_XXH128_testdata[3607] */ + { 1202, 0x9E3779B185EBCA8DULL, { 0xD85795992279DC35ULL, 0x2326BF0CA3443B3BULL } }, /* XSUM_XXH128_testdata[3608] */ + { 1203, 0x0000000000000000ULL, { 0x1F9522CE4E8A3569ULL, 0xA413B2A65E24C859ULL } }, /* XSUM_XXH128_testdata[3609] */ + { 1203, 0x000000009E3779B1ULL, { 0x7E1C0AD4BCFD0D9FULL, 0x3C8BB3CDB9B80467ULL } }, /* XSUM_XXH128_testdata[3610] */ + { 1203, 0x9E3779B185EBCA8DULL, { 0xE801BBE0C28C37A5ULL, 0xA36550A64C468824ULL } }, /* XSUM_XXH128_testdata[3611] */ + { 1204, 0x0000000000000000ULL, { 0x5D59E44EAA3FA1A2ULL, 0x8B2C6DF895F028A3ULL } }, /* XSUM_XXH128_testdata[3612] */ + { 1204, 0x000000009E3779B1ULL, { 0xFCAB4609385BBF34ULL, 0x85CB35F6CDC12BF8ULL } }, /* XSUM_XXH128_testdata[3613] */ + { 1204, 0x9E3779B185EBCA8DULL, { 0x2FFEC7EDE4C35A95ULL, 0xC17815C2EC75EC3DULL } }, /* XSUM_XXH128_testdata[3614] */ + { 1205, 0x0000000000000000ULL, { 0x0785920A1E8E65FBULL, 0xEED1C26A3515FDF2ULL } }, /* XSUM_XXH128_testdata[3615] */ + { 1205, 0x000000009E3779B1ULL, { 0xEE899AC3C35E78F5ULL, 0xAF4D8E51BD07387DULL } }, /* XSUM_XXH128_testdata[3616] */ + { 1205, 0x9E3779B185EBCA8DULL, { 0xD9534F0920956617ULL, 0xA6AB38236846B07DULL } }, /* XSUM_XXH128_testdata[3617] */ + { 1206, 0x0000000000000000ULL, { 0xBCBB1735D914A75BULL, 0x016994FB0BEFCD7DULL } }, /* XSUM_XXH128_testdata[3618] */ + { 1206, 0x000000009E3779B1ULL, { 0x1C4BD2EC9CDB26E6ULL, 0xE376931BE0BDC20AULL } }, /* XSUM_XXH128_testdata[3619] */ + { 1206, 0x9E3779B185EBCA8DULL, { 0xB5D845E610439EC3ULL, 0xBB7CBB21554C03B1ULL } }, /* XSUM_XXH128_testdata[3620] */ + { 1207, 0x0000000000000000ULL, { 0x4F834DD477E34CA1ULL, 0x2A1BA696B7B7735DULL } }, /* XSUM_XXH128_testdata[3621] */ + { 1207, 0x000000009E3779B1ULL, { 0x331B7B501B4D7D13ULL, 0x22655D55156C3DBAULL } }, /* XSUM_XXH128_testdata[3622] */ + { 1207, 0x9E3779B185EBCA8DULL, { 0xF043EC3B6AFF48F2ULL, 0xF88B8855C81D581CULL } }, /* XSUM_XXH128_testdata[3623] */ + { 1208, 0x0000000000000000ULL, { 0xF819C4DA04BE8BFFULL, 0x1B4725654C974772ULL } }, /* XSUM_XXH128_testdata[3624] */ + { 1208, 0x000000009E3779B1ULL, { 0x89636B3092050743ULL, 0x35C49FDC51704E5AULL } }, /* XSUM_XXH128_testdata[3625] */ + { 1208, 0x9E3779B185EBCA8DULL, { 0x10770E2138DB91E7ULL, 0x6646A078B229D91BULL } }, /* XSUM_XXH128_testdata[3626] */ + { 1209, 0x0000000000000000ULL, { 0x471FD17969E5C08EULL, 0x3D5BDC7E0EFBB732ULL } }, /* XSUM_XXH128_testdata[3627] */ + { 1209, 0x000000009E3779B1ULL, { 0x5E6F658C909A7C53ULL, 0x7F295E8D57919A14ULL } }, /* XSUM_XXH128_testdata[3628] */ + { 1209, 0x9E3779B185EBCA8DULL, { 0x95228F4333CA7537ULL, 0x585955D67D5284F7ULL } }, /* XSUM_XXH128_testdata[3629] */ + { 1210, 0x0000000000000000ULL, { 0x4BD9860726BF5B55ULL, 0x83AE3C73368A6CC1ULL } }, /* XSUM_XXH128_testdata[3630] */ + { 1210, 0x000000009E3779B1ULL, { 0xBC6E35F2FF81C2EBULL, 0x9FB644DFCD45AE65ULL } }, /* XSUM_XXH128_testdata[3631] */ + { 1210, 0x9E3779B185EBCA8DULL, { 0xA2E35D62CDDFC4C2ULL, 0xD51C787AEFBBFE7DULL } }, /* XSUM_XXH128_testdata[3632] */ + { 1211, 0x0000000000000000ULL, { 0xF01EB0C5F58E4BD7ULL, 0xE9425AE09D54EF83ULL } }, /* XSUM_XXH128_testdata[3633] */ + { 1211, 0x000000009E3779B1ULL, { 0x7112DD7ECC01B2E3ULL, 0x90BC1F7B90A6D4C1ULL } }, /* XSUM_XXH128_testdata[3634] */ + { 1211, 0x9E3779B185EBCA8DULL, { 0xA795DF56C4A70D09ULL, 0xEF75B7A79E41DED4ULL } }, /* XSUM_XXH128_testdata[3635] */ + { 1212, 0x0000000000000000ULL, { 0xA66DAA355D58FB75ULL, 0x661A0D8A35D6A1ACULL } }, /* XSUM_XXH128_testdata[3636] */ + { 1212, 0x000000009E3779B1ULL, { 0x52D4E6D61D984011ULL, 0x3D10319B1D3C37EAULL } }, /* XSUM_XXH128_testdata[3637] */ + { 1212, 0x9E3779B185EBCA8DULL, { 0x5717E813E2BF8BA3ULL, 0xB354C42BC421586AULL } }, /* XSUM_XXH128_testdata[3638] */ + { 1213, 0x0000000000000000ULL, { 0xECDC982B4F911BB1ULL, 0xB07AF89DC31B12EFULL } }, /* XSUM_XXH128_testdata[3639] */ + { 1213, 0x000000009E3779B1ULL, { 0xA4B584DB640F7D47ULL, 0xCF94932D825E7F9BULL } }, /* XSUM_XXH128_testdata[3640] */ + { 1213, 0x9E3779B185EBCA8DULL, { 0xD8762F676DA901FCULL, 0xC1C6680E636EBF72ULL } }, /* XSUM_XXH128_testdata[3641] */ + { 1214, 0x0000000000000000ULL, { 0xE048972A53CAB698ULL, 0xA10236B8F738F346ULL } }, /* XSUM_XXH128_testdata[3642] */ + { 1214, 0x000000009E3779B1ULL, { 0xCFA6B0DE372EBA46ULL, 0x37D35247ED40666FULL } }, /* XSUM_XXH128_testdata[3643] */ + { 1214, 0x9E3779B185EBCA8DULL, { 0x17117BC29230BC57ULL, 0x99972A95BAF9A8E4ULL } }, /* XSUM_XXH128_testdata[3644] */ + { 1215, 0x0000000000000000ULL, { 0xE930426227BAD1BCULL, 0x5DF1B481284237ABULL } }, /* XSUM_XXH128_testdata[3645] */ + { 1215, 0x000000009E3779B1ULL, { 0x6CB649B9027F572EULL, 0xF4B417348CE8AF51ULL } }, /* XSUM_XXH128_testdata[3646] */ + { 1215, 0x9E3779B185EBCA8DULL, { 0x9E886B47FF351E95ULL, 0x0F9E7875438D95FAULL } }, /* XSUM_XXH128_testdata[3647] */ + { 1216, 0x0000000000000000ULL, { 0xFE0C4B62F3111B46ULL, 0x118F8322B5743A43ULL } }, /* XSUM_XXH128_testdata[3648] */ + { 1216, 0x000000009E3779B1ULL, { 0xD0E0B67BDDF125A6ULL, 0x5B1420294467634AULL } }, /* XSUM_XXH128_testdata[3649] */ + { 1216, 0x9E3779B185EBCA8DULL, { 0x81DB6085A96B2900ULL, 0x35A9F280743FAB34ULL } }, /* XSUM_XXH128_testdata[3650] */ + { 1217, 0x0000000000000000ULL, { 0x253D5AB8AAE1CADBULL, 0x65B1AE8B2D1D64AEULL } }, /* XSUM_XXH128_testdata[3651] */ + { 1217, 0x000000009E3779B1ULL, { 0xF91442E0A9E13387ULL, 0x387B0FB21B3E446AULL } }, /* XSUM_XXH128_testdata[3652] */ + { 1217, 0x9E3779B185EBCA8DULL, { 0xF3ED7CC23687AF94ULL, 0x1BD0D1870557BD07ULL } }, /* XSUM_XXH128_testdata[3653] */ + { 1218, 0x0000000000000000ULL, { 0x1F997933C417290EULL, 0xC192B52DD0460E92ULL } }, /* XSUM_XXH128_testdata[3654] */ + { 1218, 0x000000009E3779B1ULL, { 0x478A02104607C3AAULL, 0x46D8B4A327235473ULL } }, /* XSUM_XXH128_testdata[3655] */ + { 1218, 0x9E3779B185EBCA8DULL, { 0xB76BD5C9B4311FDBULL, 0x582DC35D726E0379ULL } }, /* XSUM_XXH128_testdata[3656] */ + { 1219, 0x0000000000000000ULL, { 0xEDE8E2A4179E0A79ULL, 0x717F70D6691FC5B4ULL } }, /* XSUM_XXH128_testdata[3657] */ + { 1219, 0x000000009E3779B1ULL, { 0x0D7784B7843DEFF0ULL, 0x3CE35DD4C57EBA35ULL } }, /* XSUM_XXH128_testdata[3658] */ + { 1219, 0x9E3779B185EBCA8DULL, { 0xA606C217B1D3B5C6ULL, 0x10F953B5A9B1EFE6ULL } }, /* XSUM_XXH128_testdata[3659] */ + { 1220, 0x0000000000000000ULL, { 0x16DDEBA258E5BEC7ULL, 0xA964D688C9ED7FC9ULL } }, /* XSUM_XXH128_testdata[3660] */ + { 1220, 0x000000009E3779B1ULL, { 0x80BB5AE0E6A72DACULL, 0x81DADCEABD4B2986ULL } }, /* XSUM_XXH128_testdata[3661] */ + { 1220, 0x9E3779B185EBCA8DULL, { 0x618115D34B8140C8ULL, 0x198B8703092D6B44ULL } }, /* XSUM_XXH128_testdata[3662] */ + { 1221, 0x0000000000000000ULL, { 0x434F9B679E3E3131ULL, 0xA0439E404D7FC2F1ULL } }, /* XSUM_XXH128_testdata[3663] */ + { 1221, 0x000000009E3779B1ULL, { 0x4BB85D3D3118D33EULL, 0xC6A5460A339372B8ULL } }, /* XSUM_XXH128_testdata[3664] */ + { 1221, 0x9E3779B185EBCA8DULL, { 0x204DACFA0F41B777ULL, 0x735F2E0AAA11474AULL } }, /* XSUM_XXH128_testdata[3665] */ + { 1222, 0x0000000000000000ULL, { 0x40C68C7EB6E9987CULL, 0xE4B762CE02BDEBF8ULL } }, /* XSUM_XXH128_testdata[3666] */ + { 1222, 0x000000009E3779B1ULL, { 0x3272298FC6D84950ULL, 0xB9C50D580FF7741BULL } }, /* XSUM_XXH128_testdata[3667] */ + { 1222, 0x9E3779B185EBCA8DULL, { 0xA000201050DAED60ULL, 0xDDA94ED687C8D0BFULL } }, /* XSUM_XXH128_testdata[3668] */ + { 1223, 0x0000000000000000ULL, { 0xC426E8B70AA0FF54ULL, 0x64B5777843599D1BULL } }, /* XSUM_XXH128_testdata[3669] */ + { 1223, 0x000000009E3779B1ULL, { 0xD1AFBF371456323AULL, 0x9FBE0B66AFF5D3B4ULL } }, /* XSUM_XXH128_testdata[3670] */ + { 1223, 0x9E3779B185EBCA8DULL, { 0x826C1746F4379357ULL, 0x889B6DFA4E3C6919ULL } }, /* XSUM_XXH128_testdata[3671] */ + { 1224, 0x0000000000000000ULL, { 0x4141EABAAF368238ULL, 0x632134CB9724EFFEULL } }, /* XSUM_XXH128_testdata[3672] */ + { 1224, 0x000000009E3779B1ULL, { 0xC6BE40FABB10E04CULL, 0xF6E6AEFECF0401D3ULL } }, /* XSUM_XXH128_testdata[3673] */ + { 1224, 0x9E3779B185EBCA8DULL, { 0xC91E8334C06455F2ULL, 0xAA3776F8F4F67F24ULL } }, /* XSUM_XXH128_testdata[3674] */ + { 1225, 0x0000000000000000ULL, { 0x9A43EA1ED266BBD2ULL, 0xEAF7CA601316135DULL } }, /* XSUM_XXH128_testdata[3675] */ + { 1225, 0x000000009E3779B1ULL, { 0xA61372A2EB1A4EEDULL, 0xB41C8D1E4AFCA508ULL } }, /* XSUM_XXH128_testdata[3676] */ + { 1225, 0x9E3779B185EBCA8DULL, { 0x59BE464BF88208C7ULL, 0xF40F174CE8C49F7BULL } }, /* XSUM_XXH128_testdata[3677] */ + { 1226, 0x0000000000000000ULL, { 0xB157921B389112F6ULL, 0xC3AD1FD074E86DE5ULL } }, /* XSUM_XXH128_testdata[3678] */ + { 1226, 0x000000009E3779B1ULL, { 0x50E369D523A82D00ULL, 0x50D3C0D159E37F76ULL } }, /* XSUM_XXH128_testdata[3679] */ + { 1226, 0x9E3779B185EBCA8DULL, { 0xA678A815C95467C4ULL, 0x7DB8CA3F10C7DD18ULL } }, /* XSUM_XXH128_testdata[3680] */ + { 1227, 0x0000000000000000ULL, { 0x86C60450E50A39F2ULL, 0xB2FADAEADF90322AULL } }, /* XSUM_XXH128_testdata[3681] */ + { 1227, 0x000000009E3779B1ULL, { 0x62D5B3F7A67182B0ULL, 0x154E3ADEEBBA8ACAULL } }, /* XSUM_XXH128_testdata[3682] */ + { 1227, 0x9E3779B185EBCA8DULL, { 0xDAD9B7E9A7DCEAB4ULL, 0xB61EC80217ACA4B5ULL } }, /* XSUM_XXH128_testdata[3683] */ + { 1228, 0x0000000000000000ULL, { 0x4EC249E9E22BB8F6ULL, 0x92F9596A6634A6FAULL } }, /* XSUM_XXH128_testdata[3684] */ + { 1228, 0x000000009E3779B1ULL, { 0x26B561C120EE2E4BULL, 0x8AC2D1B81F4ECBA0ULL } }, /* XSUM_XXH128_testdata[3685] */ + { 1228, 0x9E3779B185EBCA8DULL, { 0x35B07B350D67A81DULL, 0xFEC36BC676FEB07AULL } }, /* XSUM_XXH128_testdata[3686] */ + { 1229, 0x0000000000000000ULL, { 0xB4AC47456204F4A0ULL, 0x9F9B251AA9C7171AULL } }, /* XSUM_XXH128_testdata[3687] */ + { 1229, 0x000000009E3779B1ULL, { 0x5F395FAD86BFC122ULL, 0xD6D981DF19544B63ULL } }, /* XSUM_XXH128_testdata[3688] */ + { 1229, 0x9E3779B185EBCA8DULL, { 0xFB8751E1C34FB61EULL, 0x1E1E032BCDF19A75ULL } }, /* XSUM_XXH128_testdata[3689] */ + { 1230, 0x0000000000000000ULL, { 0xF0FFD70477192DD9ULL, 0xCC18668BBF74DDE7ULL } }, /* XSUM_XXH128_testdata[3690] */ + { 1230, 0x000000009E3779B1ULL, { 0xC3869C6BABA54716ULL, 0xBFD2CCB6BDE3EE81ULL } }, /* XSUM_XXH128_testdata[3691] */ + { 1230, 0x9E3779B185EBCA8DULL, { 0xF398B52063DA612AULL, 0xABCCA4D4AAFB3313ULL } }, /* XSUM_XXH128_testdata[3692] */ + { 1231, 0x0000000000000000ULL, { 0x1798FEF09B569C74ULL, 0x6CAA1159670F46BCULL } }, /* XSUM_XXH128_testdata[3693] */ + { 1231, 0x000000009E3779B1ULL, { 0xF6E3A9967E265704ULL, 0x98D84D54E2104E33ULL } }, /* XSUM_XXH128_testdata[3694] */ + { 1231, 0x9E3779B185EBCA8DULL, { 0x26029163BA88839CULL, 0x75422662AB12826BULL } }, /* XSUM_XXH128_testdata[3695] */ + { 1232, 0x0000000000000000ULL, { 0x7DDCBA4664E066E2ULL, 0x6692CF293B16302EULL } }, /* XSUM_XXH128_testdata[3696] */ + { 1232, 0x000000009E3779B1ULL, { 0xE9524BBFEC85ED6CULL, 0x27EE17A46697DB2AULL } }, /* XSUM_XXH128_testdata[3697] */ + { 1232, 0x9E3779B185EBCA8DULL, { 0x29030F6B251137D7ULL, 0x0C5E4A399A884A41ULL } }, /* XSUM_XXH128_testdata[3698] */ + { 1233, 0x0000000000000000ULL, { 0x2BE6E506324653A7ULL, 0xAACAAE1BBA429B0CULL } }, /* XSUM_XXH128_testdata[3699] */ + { 1233, 0x000000009E3779B1ULL, { 0xFB0B3F7279AF55A3ULL, 0x2CF9492D7A998061ULL } }, /* XSUM_XXH128_testdata[3700] */ + { 1233, 0x9E3779B185EBCA8DULL, { 0x9D9F04986C320F67ULL, 0x9B4350942C8421CEULL } }, /* XSUM_XXH128_testdata[3701] */ + { 1234, 0x0000000000000000ULL, { 0x7E5DEDE89C4CAA7CULL, 0xFE9DC9A3DC6DC651ULL } }, /* XSUM_XXH128_testdata[3702] */ + { 1234, 0x000000009E3779B1ULL, { 0x157C102CDC728167ULL, 0xFD3EE375A713F03FULL } }, /* XSUM_XXH128_testdata[3703] */ + { 1234, 0x9E3779B185EBCA8DULL, { 0x69B306E989DA7A62ULL, 0x5CCFE1B2DACD14C0ULL } }, /* XSUM_XXH128_testdata[3704] */ + { 1235, 0x0000000000000000ULL, { 0x7973D357ED85BC0EULL, 0x1E3C0B0DBAD10BD6ULL } }, /* XSUM_XXH128_testdata[3705] */ + { 1235, 0x000000009E3779B1ULL, { 0xF6C97BAA57F2E70AULL, 0x9144F8360C7B38D3ULL } }, /* XSUM_XXH128_testdata[3706] */ + { 1235, 0x9E3779B185EBCA8DULL, { 0x6FC8A0DF4CF10E1CULL, 0x17B52229D4F81446ULL } }, /* XSUM_XXH128_testdata[3707] */ + { 1236, 0x0000000000000000ULL, { 0xDD441332B08A607CULL, 0x7EF9A26D1F80C383ULL } }, /* XSUM_XXH128_testdata[3708] */ + { 1236, 0x000000009E3779B1ULL, { 0xA61D4FC20F169EDEULL, 0x3C6037A022A6F6F5ULL } }, /* XSUM_XXH128_testdata[3709] */ + { 1236, 0x9E3779B185EBCA8DULL, { 0x0FAC91C503DF1FEBULL, 0xDDDBFCFB942C0ACCULL } }, /* XSUM_XXH128_testdata[3710] */ + { 1237, 0x0000000000000000ULL, { 0xA9775BE3A9A6131AULL, 0x8AD31F9AB4E6C171ULL } }, /* XSUM_XXH128_testdata[3711] */ + { 1237, 0x000000009E3779B1ULL, { 0xF6E24493CAD1FD89ULL, 0x97692AB59F19C6D6ULL } }, /* XSUM_XXH128_testdata[3712] */ + { 1237, 0x9E3779B185EBCA8DULL, { 0xC9B0A287954E8012ULL, 0x2DFAFBD1AF78083BULL } }, /* XSUM_XXH128_testdata[3713] */ + { 1238, 0x0000000000000000ULL, { 0x9E35169670FBE108ULL, 0x04DCD11B665EE2F2ULL } }, /* XSUM_XXH128_testdata[3714] */ + { 1238, 0x000000009E3779B1ULL, { 0xEF0DAEC417C650C4ULL, 0x66BB026BA3BB4ECDULL } }, /* XSUM_XXH128_testdata[3715] */ + { 1238, 0x9E3779B185EBCA8DULL, { 0x2023A156E28139E3ULL, 0x276C9B78420C6F5DULL } }, /* XSUM_XXH128_testdata[3716] */ + { 1239, 0x0000000000000000ULL, { 0x4E4DEE9735CB4055ULL, 0x04ACB73C2943E9A2ULL } }, /* XSUM_XXH128_testdata[3717] */ + { 1239, 0x000000009E3779B1ULL, { 0x7A1F56F34E447BEEULL, 0xEC08CBABB564B1D5ULL } }, /* XSUM_XXH128_testdata[3718] */ + { 1239, 0x9E3779B185EBCA8DULL, { 0xC364A0E39E616DB7ULL, 0x4953A61E641B75BEULL } }, /* XSUM_XXH128_testdata[3719] */ + { 1240, 0x0000000000000000ULL, { 0x2A7C85DC0BC3EE8BULL, 0xFCA7C475B5DA4CA0ULL } }, /* XSUM_XXH128_testdata[3720] */ + { 1240, 0x000000009E3779B1ULL, { 0x70EFF2D46975B930ULL, 0x93EEC3195E6D06A8ULL } }, /* XSUM_XXH128_testdata[3721] */ + { 1240, 0x9E3779B185EBCA8DULL, { 0x0F6F41015CE14325ULL, 0x53F28E8A18DE910CULL } }, /* XSUM_XXH128_testdata[3722] */ + { 1241, 0x0000000000000000ULL, { 0xD00F1254DF165FECULL, 0x1F68F5EFA7563BDAULL } }, /* XSUM_XXH128_testdata[3723] */ + { 1241, 0x000000009E3779B1ULL, { 0x5D1893EDF46A495AULL, 0x03D47E1653FB4025ULL } }, /* XSUM_XXH128_testdata[3724] */ + { 1241, 0x9E3779B185EBCA8DULL, { 0x2A56A2294B2F6CBAULL, 0xDA940C71D1612F93ULL } }, /* XSUM_XXH128_testdata[3725] */ + { 1242, 0x0000000000000000ULL, { 0x1C4440B970A3869FULL, 0xC6BBD5420FE43596ULL } }, /* XSUM_XXH128_testdata[3726] */ + { 1242, 0x000000009E3779B1ULL, { 0xD382A6F0FB9681F8ULL, 0x491724173DF22049ULL } }, /* XSUM_XXH128_testdata[3727] */ + { 1242, 0x9E3779B185EBCA8DULL, { 0x1236ECEFF72C441DULL, 0x33378534AAE6595BULL } }, /* XSUM_XXH128_testdata[3728] */ + { 1243, 0x0000000000000000ULL, { 0xDA895EE4B9E61D29ULL, 0xF8CF4264D7F22664ULL } }, /* XSUM_XXH128_testdata[3729] */ + { 1243, 0x000000009E3779B1ULL, { 0xECA92655C98210FAULL, 0x1D55F1BB3CCEF2FAULL } }, /* XSUM_XXH128_testdata[3730] */ + { 1243, 0x9E3779B185EBCA8DULL, { 0x3A2ED287B663F086ULL, 0xC13A314AD3350389ULL } }, /* XSUM_XXH128_testdata[3731] */ + { 1244, 0x0000000000000000ULL, { 0xED2C73920717377BULL, 0x77F7DBFC60F06C9DULL } }, /* XSUM_XXH128_testdata[3732] */ + { 1244, 0x000000009E3779B1ULL, { 0x8F0711954983219CULL, 0xA5E1740A34F0805CULL } }, /* XSUM_XXH128_testdata[3733] */ + { 1244, 0x9E3779B185EBCA8DULL, { 0xBCA105ED165CA4A9ULL, 0xF517227690B69D02ULL } }, /* XSUM_XXH128_testdata[3734] */ + { 1245, 0x0000000000000000ULL, { 0x5DADE3B4EE279DAEULL, 0xF1E421D16E2BCD44ULL } }, /* XSUM_XXH128_testdata[3735] */ + { 1245, 0x000000009E3779B1ULL, { 0xCE3837F35DCA7952ULL, 0x4EBF18047539EF4EULL } }, /* XSUM_XXH128_testdata[3736] */ + { 1245, 0x9E3779B185EBCA8DULL, { 0x955927A20535B98AULL, 0x5B244B14541CA325ULL } }, /* XSUM_XXH128_testdata[3737] */ + { 1246, 0x0000000000000000ULL, { 0xD160A5D5495D5E8CULL, 0x79D0C8F67D7FCD57ULL } }, /* XSUM_XXH128_testdata[3738] */ + { 1246, 0x000000009E3779B1ULL, { 0x56877FDA1742B786ULL, 0x585E9A20DDB3525DULL } }, /* XSUM_XXH128_testdata[3739] */ + { 1246, 0x9E3779B185EBCA8DULL, { 0xD9A9BBC486C1B8D8ULL, 0xCEC4FA2C7B8DF2E8ULL } }, /* XSUM_XXH128_testdata[3740] */ + { 1247, 0x0000000000000000ULL, { 0xF0C39DC1539E6BCCULL, 0xFA53A59EAC8770DCULL } }, /* XSUM_XXH128_testdata[3741] */ + { 1247, 0x000000009E3779B1ULL, { 0xF94B71BE52D7D023ULL, 0xA4C321E8CDA47356ULL } }, /* XSUM_XXH128_testdata[3742] */ + { 1247, 0x9E3779B185EBCA8DULL, { 0xAC3AE69C884E7729ULL, 0x899FE8C721035EB7ULL } }, /* XSUM_XXH128_testdata[3743] */ + { 1248, 0x0000000000000000ULL, { 0xFE73761A4AF65FFDULL, 0x241EB4559EFE40BDULL } }, /* XSUM_XXH128_testdata[3744] */ + { 1248, 0x000000009E3779B1ULL, { 0xEB43CF8709617EB2ULL, 0x9DD662F98686B5DCULL } }, /* XSUM_XXH128_testdata[3745] */ + { 1248, 0x9E3779B185EBCA8DULL, { 0x010BF71F84A0C44FULL, 0xE06F7854B9464D1DULL } }, /* XSUM_XXH128_testdata[3746] */ + { 1249, 0x0000000000000000ULL, { 0x386B0F3E8F5B15EBULL, 0xDBA48B26A8B76969ULL } }, /* XSUM_XXH128_testdata[3747] */ + { 1249, 0x000000009E3779B1ULL, { 0x0CA5DDCBD4853B09ULL, 0xE157D12E6F7B19D5ULL } }, /* XSUM_XXH128_testdata[3748] */ + { 1249, 0x9E3779B185EBCA8DULL, { 0x64154E718064ECD3ULL, 0xBFF57464B3FC185BULL } }, /* XSUM_XXH128_testdata[3749] */ + { 1250, 0x0000000000000000ULL, { 0x70114FAE28466327ULL, 0x14737C85F2CEEB32ULL } }, /* XSUM_XXH128_testdata[3750] */ + { 1250, 0x000000009E3779B1ULL, { 0x6494243B7DFF1816ULL, 0xC75126ABEEBC915BULL } }, /* XSUM_XXH128_testdata[3751] */ + { 1250, 0x9E3779B185EBCA8DULL, { 0x520C8028328EB353ULL, 0x3AFF62304083A6D3ULL } }, /* XSUM_XXH128_testdata[3752] */ + { 1251, 0x0000000000000000ULL, { 0x0D9448C1A8756C97ULL, 0xE7A210B4520E53D2ULL } }, /* XSUM_XXH128_testdata[3753] */ + { 1251, 0x000000009E3779B1ULL, { 0xFE3DFED17FC49FCEULL, 0x9D012E705D02D191ULL } }, /* XSUM_XXH128_testdata[3754] */ + { 1251, 0x9E3779B185EBCA8DULL, { 0x85323C6AD404615AULL, 0x87A9DBB3BD3869C9ULL } }, /* XSUM_XXH128_testdata[3755] */ + { 1252, 0x0000000000000000ULL, { 0x4239C017A3B04AA8ULL, 0x0CF5BEDE87C7CD24ULL } }, /* XSUM_XXH128_testdata[3756] */ + { 1252, 0x000000009E3779B1ULL, { 0x3694E14FC79A15E5ULL, 0xFA39ED64D1B7FEB3ULL } }, /* XSUM_XXH128_testdata[3757] */ + { 1252, 0x9E3779B185EBCA8DULL, { 0xDF199CE2F05DFE16ULL, 0xEB7D7E3B548160B6ULL } }, /* XSUM_XXH128_testdata[3758] */ + { 1253, 0x0000000000000000ULL, { 0x00808A16F8A038DAULL, 0x150AEB772AEDB28AULL } }, /* XSUM_XXH128_testdata[3759] */ + { 1253, 0x000000009E3779B1ULL, { 0xCA9D6BD979E24E62ULL, 0x19A4B9144BEE3148ULL } }, /* XSUM_XXH128_testdata[3760] */ + { 1253, 0x9E3779B185EBCA8DULL, { 0x0065087E8B3B068CULL, 0xD457E48891FAD5C1ULL } }, /* XSUM_XXH128_testdata[3761] */ + { 1254, 0x0000000000000000ULL, { 0xD5B487EE0149EB19ULL, 0xD5C4EB6A1E55F330ULL } }, /* XSUM_XXH128_testdata[3762] */ + { 1254, 0x000000009E3779B1ULL, { 0x0BC2BF547B5ED430ULL, 0x3F82479970DB487CULL } }, /* XSUM_XXH128_testdata[3763] */ + { 1254, 0x9E3779B185EBCA8DULL, { 0x0105641B56851E82ULL, 0x9D512BC4789D91D8ULL } }, /* XSUM_XXH128_testdata[3764] */ + { 1255, 0x0000000000000000ULL, { 0xF069561740DF20F8ULL, 0xE5F76DD6DBA2A0A9ULL } }, /* XSUM_XXH128_testdata[3765] */ + { 1255, 0x000000009E3779B1ULL, { 0x7E67747F98F765BAULL, 0x1C4E9E3CBB24581BULL } }, /* XSUM_XXH128_testdata[3766] */ + { 1255, 0x9E3779B185EBCA8DULL, { 0xB172B433AAE01598ULL, 0x7559C66C98EB8236ULL } }, /* XSUM_XXH128_testdata[3767] */ + { 1256, 0x0000000000000000ULL, { 0x0D7E791B04F5AB45ULL, 0x45335A0D5306716FULL } }, /* XSUM_XXH128_testdata[3768] */ + { 1256, 0x000000009E3779B1ULL, { 0x241C826965B17388ULL, 0x50F0986F9E21C6A2ULL } }, /* XSUM_XXH128_testdata[3769] */ + { 1256, 0x9E3779B185EBCA8DULL, { 0xA8D61EF9EF7BE7A8ULL, 0x67D181A98A69AD01ULL } }, /* XSUM_XXH128_testdata[3770] */ + { 1257, 0x0000000000000000ULL, { 0xE179C25DD03710A6ULL, 0x52BFDDA10E90154FULL } }, /* XSUM_XXH128_testdata[3771] */ + { 1257, 0x000000009E3779B1ULL, { 0x4CC58785DB3C3155ULL, 0xADC148510AA925ECULL } }, /* XSUM_XXH128_testdata[3772] */ + { 1257, 0x9E3779B185EBCA8DULL, { 0xAB9A2396EECCC42BULL, 0xF784AD8562277E8AULL } }, /* XSUM_XXH128_testdata[3773] */ + { 1258, 0x0000000000000000ULL, { 0x3207A5EBFDC8367DULL, 0x0921EF42083A8E4CULL } }, /* XSUM_XXH128_testdata[3774] */ + { 1258, 0x000000009E3779B1ULL, { 0x1F8AE86A05E6A3D5ULL, 0x2D5BF2A3C23672B7ULL } }, /* XSUM_XXH128_testdata[3775] */ + { 1258, 0x9E3779B185EBCA8DULL, { 0x36BD16996362DC72ULL, 0x72CEFADC475214A3ULL } }, /* XSUM_XXH128_testdata[3776] */ + { 1259, 0x0000000000000000ULL, { 0x0585488A8CC7957BULL, 0x46363F098956C6A6ULL } }, /* XSUM_XXH128_testdata[3777] */ + { 1259, 0x000000009E3779B1ULL, { 0x04E7B4B5CDEE7CB0ULL, 0xFF38A7042ECD8177ULL } }, /* XSUM_XXH128_testdata[3778] */ + { 1259, 0x9E3779B185EBCA8DULL, { 0x5A37270C5ED0F342ULL, 0xA97FB4F90CC1A168ULL } }, /* XSUM_XXH128_testdata[3779] */ + { 1260, 0x0000000000000000ULL, { 0x4A20DAD887D6BBD4ULL, 0xCD595E243B3CDA83ULL } }, /* XSUM_XXH128_testdata[3780] */ + { 1260, 0x000000009E3779B1ULL, { 0xC755E6A538F086E6ULL, 0xC904AA107E11D4B6ULL } }, /* XSUM_XXH128_testdata[3781] */ + { 1260, 0x9E3779B185EBCA8DULL, { 0x219B38C0687FD368ULL, 0x1F79220E6CB1472EULL } }, /* XSUM_XXH128_testdata[3782] */ + { 1261, 0x0000000000000000ULL, { 0x8B23B25F1596E89FULL, 0xDD241FDA4D0E5B62ULL } }, /* XSUM_XXH128_testdata[3783] */ + { 1261, 0x000000009E3779B1ULL, { 0xF07A8F38ABF08044ULL, 0x3B0C6712078AE29DULL } }, /* XSUM_XXH128_testdata[3784] */ + { 1261, 0x9E3779B185EBCA8DULL, { 0x853FB0FBB427FB45ULL, 0xFB59988189A78B33ULL } }, /* XSUM_XXH128_testdata[3785] */ + { 1262, 0x0000000000000000ULL, { 0xF416AF45D2BC98D9ULL, 0xB5F61BCE6DE399E9ULL } }, /* XSUM_XXH128_testdata[3786] */ + { 1262, 0x000000009E3779B1ULL, { 0x82536D295FED77C7ULL, 0xE27342E5A184DF88ULL } }, /* XSUM_XXH128_testdata[3787] */ + { 1262, 0x9E3779B185EBCA8DULL, { 0xE94CBC9B85C6FE67ULL, 0xC2E80797698D51B0ULL } }, /* XSUM_XXH128_testdata[3788] */ + { 1263, 0x0000000000000000ULL, { 0x7EFC38C2AE4165F4ULL, 0x8120D327BCB1055CULL } }, /* XSUM_XXH128_testdata[3789] */ + { 1263, 0x000000009E3779B1ULL, { 0x75837A3CB4765F14ULL, 0xF02FCECE3DD943F0ULL } }, /* XSUM_XXH128_testdata[3790] */ + { 1263, 0x9E3779B185EBCA8DULL, { 0x1AD06110E21D4B37ULL, 0xCFD74D54DB5F2EABULL } }, /* XSUM_XXH128_testdata[3791] */ + { 1264, 0x0000000000000000ULL, { 0x7BBE54D17E33A670ULL, 0x1EA8DB9F95B0CD1EULL } }, /* XSUM_XXH128_testdata[3792] */ + { 1264, 0x000000009E3779B1ULL, { 0x040CDE21FEF30A67ULL, 0x6F6B297EDF020A94ULL } }, /* XSUM_XXH128_testdata[3793] */ + { 1264, 0x9E3779B185EBCA8DULL, { 0x8A3D80012A575A84ULL, 0x85963BAF6B5EB25FULL } }, /* XSUM_XXH128_testdata[3794] */ + { 1265, 0x0000000000000000ULL, { 0xC26D468B31A4CBE8ULL, 0x6FD72DCE6A1BC1DAULL } }, /* XSUM_XXH128_testdata[3795] */ + { 1265, 0x000000009E3779B1ULL, { 0x329FE5AF58484B08ULL, 0x930ED9DA77CA28BEULL } }, /* XSUM_XXH128_testdata[3796] */ + { 1265, 0x9E3779B185EBCA8DULL, { 0x080096652CC35FE9ULL, 0x1A2BC88CAA2D7739ULL } }, /* XSUM_XXH128_testdata[3797] */ + { 1266, 0x0000000000000000ULL, { 0x4F712CFA55178726ULL, 0x0995B5147182519CULL } }, /* XSUM_XXH128_testdata[3798] */ + { 1266, 0x000000009E3779B1ULL, { 0xA5BCC34867A30317ULL, 0x43174E17B23AF489ULL } }, /* XSUM_XXH128_testdata[3799] */ + { 1266, 0x9E3779B185EBCA8DULL, { 0xC85B4AADEAC26FE7ULL, 0xBF841A0D9DEDF1DDULL } }, /* XSUM_XXH128_testdata[3800] */ + { 1267, 0x0000000000000000ULL, { 0xD0C33CAC8994145FULL, 0x94031F33FB48B726ULL } }, /* XSUM_XXH128_testdata[3801] */ + { 1267, 0x000000009E3779B1ULL, { 0x43807AC9E1B2F8E0ULL, 0x36C65D366F5E8146ULL } }, /* XSUM_XXH128_testdata[3802] */ + { 1267, 0x9E3779B185EBCA8DULL, { 0xD43DDD757597A517ULL, 0x12E4ADA31485BD44ULL } }, /* XSUM_XXH128_testdata[3803] */ + { 1268, 0x0000000000000000ULL, { 0xCC704F88D818DC14ULL, 0x2F0E14CA306A2D2EULL } }, /* XSUM_XXH128_testdata[3804] */ + { 1268, 0x000000009E3779B1ULL, { 0x6C0C8EB3D9EF46ADULL, 0x1364C217F007A53AULL } }, /* XSUM_XXH128_testdata[3805] */ + { 1268, 0x9E3779B185EBCA8DULL, { 0xD65BDF74F55AAFCAULL, 0x426D52D5D196E59EULL } }, /* XSUM_XXH128_testdata[3806] */ + { 1269, 0x0000000000000000ULL, { 0x87BDF6D964C49064ULL, 0xC33EFFBAF2126B6FULL } }, /* XSUM_XXH128_testdata[3807] */ + { 1269, 0x000000009E3779B1ULL, { 0xDD90C6821CD72CABULL, 0x2B31FB589B492281ULL } }, /* XSUM_XXH128_testdata[3808] */ + { 1269, 0x9E3779B185EBCA8DULL, { 0x4E22180AA9458D41ULL, 0x9F3DD4711D2F060AULL } }, /* XSUM_XXH128_testdata[3809] */ + { 1270, 0x0000000000000000ULL, { 0xF8776976C5F32A3AULL, 0xF4ACFB77262D6F23ULL } }, /* XSUM_XXH128_testdata[3810] */ + { 1270, 0x000000009E3779B1ULL, { 0x282E8C63B175025FULL, 0xF9AF531F3B16B22CULL } }, /* XSUM_XXH128_testdata[3811] */ + { 1270, 0x9E3779B185EBCA8DULL, { 0x3C82A2476CC6A087ULL, 0xA1FA2BA5B2A3419FULL } }, /* XSUM_XXH128_testdata[3812] */ + { 1271, 0x0000000000000000ULL, { 0xDF02E3A0949B78A2ULL, 0x6B9BFD8FF5E592DFULL } }, /* XSUM_XXH128_testdata[3813] */ + { 1271, 0x000000009E3779B1ULL, { 0x432DD7CB5773416BULL, 0x879DCBF8D24FDE04ULL } }, /* XSUM_XXH128_testdata[3814] */ + { 1271, 0x9E3779B185EBCA8DULL, { 0x454545571E047733ULL, 0x3B77ACC2D0617771ULL } }, /* XSUM_XXH128_testdata[3815] */ + { 1272, 0x0000000000000000ULL, { 0x2508A670FDFA5CE2ULL, 0xC21AF654E9552F3AULL } }, /* XSUM_XXH128_testdata[3816] */ + { 1272, 0x000000009E3779B1ULL, { 0x75398F7B983854E0ULL, 0x5DC050B2E028A4FDULL } }, /* XSUM_XXH128_testdata[3817] */ + { 1272, 0x9E3779B185EBCA8DULL, { 0x596350B94FA7666BULL, 0xC7827D08CC2CC8B4ULL } }, /* XSUM_XXH128_testdata[3818] */ + { 1273, 0x0000000000000000ULL, { 0x43737066DC3F2DE0ULL, 0xC70A09A10993B846ULL } }, /* XSUM_XXH128_testdata[3819] */ + { 1273, 0x000000009E3779B1ULL, { 0x96705E572BFD848AULL, 0x81263DA9E2DFD0DCULL } }, /* XSUM_XXH128_testdata[3820] */ + { 1273, 0x9E3779B185EBCA8DULL, { 0x155BF59E7C86E6F2ULL, 0xB034AFFA4700F0A3ULL } }, /* XSUM_XXH128_testdata[3821] */ + { 1274, 0x0000000000000000ULL, { 0x8A027A19AB8DF30DULL, 0x24DE8FAEC708BBEBULL } }, /* XSUM_XXH128_testdata[3822] */ + { 1274, 0x000000009E3779B1ULL, { 0x70FDF0C7C73485BCULL, 0x337BEDE8C92E9812ULL } }, /* XSUM_XXH128_testdata[3823] */ + { 1274, 0x9E3779B185EBCA8DULL, { 0x3AE260AF75AF8633ULL, 0x380648B6DB1A0EA6ULL } }, /* XSUM_XXH128_testdata[3824] */ + { 1275, 0x0000000000000000ULL, { 0x139E04FD5326D80AULL, 0x4CDD53F28CCDCE15ULL } }, /* XSUM_XXH128_testdata[3825] */ + { 1275, 0x000000009E3779B1ULL, { 0x3FE2CBB0A8982581ULL, 0x9B740740DB1DCFC1ULL } }, /* XSUM_XXH128_testdata[3826] */ + { 1275, 0x9E3779B185EBCA8DULL, { 0x7C1726C8DFF75F70ULL, 0xC449AB71B83BE41BULL } }, /* XSUM_XXH128_testdata[3827] */ + { 1276, 0x0000000000000000ULL, { 0x1EF47D47884A52C4ULL, 0x670B3FA061C86D37ULL } }, /* XSUM_XXH128_testdata[3828] */ + { 1276, 0x000000009E3779B1ULL, { 0xC14D622EB169DAA0ULL, 0x84090B7409BDF065ULL } }, /* XSUM_XXH128_testdata[3829] */ + { 1276, 0x9E3779B185EBCA8DULL, { 0xF4414C700D2BF87CULL, 0xFDB4E0B6ADB66ADCULL } }, /* XSUM_XXH128_testdata[3830] */ + { 1277, 0x0000000000000000ULL, { 0x22CEB5C9918B106EULL, 0x7CEA69CA473B2736ULL } }, /* XSUM_XXH128_testdata[3831] */ + { 1277, 0x000000009E3779B1ULL, { 0x75195DA5E4744C8AULL, 0xF166C1D8C506F817ULL } }, /* XSUM_XXH128_testdata[3832] */ + { 1277, 0x9E3779B185EBCA8DULL, { 0xCC35EDD26C8EA6E3ULL, 0xF6DBAFD6CADE7A89ULL } }, /* XSUM_XXH128_testdata[3833] */ + { 1278, 0x0000000000000000ULL, { 0xB3A97FDEB34B151CULL, 0x2EE753DC5FBCC5CBULL } }, /* XSUM_XXH128_testdata[3834] */ + { 1278, 0x000000009E3779B1ULL, { 0xC6C83552725F12F4ULL, 0xC42998F631E31186ULL } }, /* XSUM_XXH128_testdata[3835] */ + { 1278, 0x9E3779B185EBCA8DULL, { 0x4EF9F624C3E6B0F2ULL, 0x95F8CF9900357CEEULL } }, /* XSUM_XXH128_testdata[3836] */ + { 1279, 0x0000000000000000ULL, { 0x5D6D044F9D287AB3ULL, 0xCE1DAFA0DE3F8197ULL } }, /* XSUM_XXH128_testdata[3837] */ + { 1279, 0x000000009E3779B1ULL, { 0x3938CEC4495A282FULL, 0x930FEEA16AB89D89ULL } }, /* XSUM_XXH128_testdata[3838] */ + { 1279, 0x9E3779B185EBCA8DULL, { 0x24DF7B6B7B4FDCB1ULL, 0xA29297AB756C5545ULL } }, /* XSUM_XXH128_testdata[3839] */ + { 1280, 0x0000000000000000ULL, { 0xA052007A1ED81B4BULL, 0x981174E880E9C608ULL } }, /* XSUM_XXH128_testdata[3840] */ + { 1280, 0x000000009E3779B1ULL, { 0xAC6730B394189261ULL, 0x34EDFF7C4CE3F6AAULL } }, /* XSUM_XXH128_testdata[3841] */ + { 1280, 0x9E3779B185EBCA8DULL, { 0x2B5ABFE77739F266ULL, 0x9A0F2885C4112261ULL } }, /* XSUM_XXH128_testdata[3842] */ + { 1281, 0x0000000000000000ULL, { 0x706FE95B5ED1F1ECULL, 0xEB13F98EC36AE4C1ULL } }, /* XSUM_XXH128_testdata[3843] */ + { 1281, 0x000000009E3779B1ULL, { 0xCF0F15FDE2EF3EC8ULL, 0x7805443779EE1AA4ULL } }, /* XSUM_XXH128_testdata[3844] */ + { 1281, 0x9E3779B185EBCA8DULL, { 0x028F3EE15B5B1926ULL, 0x85FD2D01B8D033DBULL } }, /* XSUM_XXH128_testdata[3845] */ + { 1282, 0x0000000000000000ULL, { 0xB8CB4A6E4330BFACULL, 0x42ED7BA6B0649D17ULL } }, /* XSUM_XXH128_testdata[3846] */ + { 1282, 0x000000009E3779B1ULL, { 0xFE7DE1A92827ED88ULL, 0xD9288CE494359F1AULL } }, /* XSUM_XXH128_testdata[3847] */ + { 1282, 0x9E3779B185EBCA8DULL, { 0x8F710D9E899E52CFULL, 0x35230EF8087F361BULL } }, /* XSUM_XXH128_testdata[3848] */ + { 1283, 0x0000000000000000ULL, { 0xAD5AF3E0E638F01BULL, 0x025FFB44415B3B61ULL } }, /* XSUM_XXH128_testdata[3849] */ + { 1283, 0x000000009E3779B1ULL, { 0x16E0B255F5EC558CULL, 0xEE2DEAAE3B9884DBULL } }, /* XSUM_XXH128_testdata[3850] */ + { 1283, 0x9E3779B185EBCA8DULL, { 0x2B473D9BB34B2639ULL, 0x0FAE27DEFEAEB4C6ULL } }, /* XSUM_XXH128_testdata[3851] */ + { 1284, 0x0000000000000000ULL, { 0x8BDA723C64F22E78ULL, 0x6357DEF0FE24E807ULL } }, /* XSUM_XXH128_testdata[3852] */ + { 1284, 0x000000009E3779B1ULL, { 0xB25072E74370FEBDULL, 0x3F98B5D425C53A2CULL } }, /* XSUM_XXH128_testdata[3853] */ + { 1284, 0x9E3779B185EBCA8DULL, { 0x5D35928D7F4C773AULL, 0xBBAEF721FFE156CEULL } }, /* XSUM_XXH128_testdata[3854] */ + { 1285, 0x0000000000000000ULL, { 0x33B3411728DB89DEULL, 0x3892DB5AAAE9408CULL } }, /* XSUM_XXH128_testdata[3855] */ + { 1285, 0x000000009E3779B1ULL, { 0xEEF4DC1F12C1BFE0ULL, 0x2C2E6CBF28EB03CAULL } }, /* XSUM_XXH128_testdata[3856] */ + { 1285, 0x9E3779B185EBCA8DULL, { 0x07CC92BD8DAFD59EULL, 0x705DAC16F12F6F15ULL } }, /* XSUM_XXH128_testdata[3857] */ + { 1286, 0x0000000000000000ULL, { 0xB34C5AA46E8214C9ULL, 0xEE27800982D0CBD8ULL } }, /* XSUM_XXH128_testdata[3858] */ + { 1286, 0x000000009E3779B1ULL, { 0x59469E26C1E53C07ULL, 0x7919FE7A861A3E68ULL } }, /* XSUM_XXH128_testdata[3859] */ + { 1286, 0x9E3779B185EBCA8DULL, { 0x02F507EBDBEAD2D5ULL, 0x4458D16CD307AF86ULL } }, /* XSUM_XXH128_testdata[3860] */ + { 1287, 0x0000000000000000ULL, { 0x711B95523A6055B5ULL, 0x38DB766A385BBAA2ULL } }, /* XSUM_XXH128_testdata[3861] */ + { 1287, 0x000000009E3779B1ULL, { 0x8F3B06F1191DD24BULL, 0x4F396800F10FDC36ULL } }, /* XSUM_XXH128_testdata[3862] */ + { 1287, 0x9E3779B185EBCA8DULL, { 0x40F0841C17D1E7B3ULL, 0xF58341CAC99724ADULL } }, /* XSUM_XXH128_testdata[3863] */ + { 1288, 0x0000000000000000ULL, { 0x7A27E619D3B0F975ULL, 0x63DA193363DB82E1ULL } }, /* XSUM_XXH128_testdata[3864] */ + { 1288, 0x000000009E3779B1ULL, { 0xCAF9D625815704B0ULL, 0x6702392FB4289889ULL } }, /* XSUM_XXH128_testdata[3865] */ + { 1288, 0x9E3779B185EBCA8DULL, { 0x0FB143356DAFDBA7ULL, 0x4C3ACBB379678291ULL } }, /* XSUM_XXH128_testdata[3866] */ + { 1289, 0x0000000000000000ULL, { 0x2C1689F34787C3E2ULL, 0xBE022DB301907BCCULL } }, /* XSUM_XXH128_testdata[3867] */ + { 1289, 0x000000009E3779B1ULL, { 0xA91BED9A18211C89ULL, 0xC17073D9AE35A982ULL } }, /* XSUM_XXH128_testdata[3868] */ + { 1289, 0x9E3779B185EBCA8DULL, { 0xB7FFB0F20474B963ULL, 0x03C448A97E7A706FULL } }, /* XSUM_XXH128_testdata[3869] */ + { 1290, 0x0000000000000000ULL, { 0x4E713D3477E39CFDULL, 0xA36ED8A2298E5F06ULL } }, /* XSUM_XXH128_testdata[3870] */ + { 1290, 0x000000009E3779B1ULL, { 0x12B9D0FFC5B7AAB1ULL, 0xF45C98457ABEC98EULL } }, /* XSUM_XXH128_testdata[3871] */ + { 1290, 0x9E3779B185EBCA8DULL, { 0xD4B17540BCA57D4CULL, 0x0754A12012E27A34ULL } }, /* XSUM_XXH128_testdata[3872] */ + { 1291, 0x0000000000000000ULL, { 0x106EF57335080984ULL, 0xBA6C60B507089703ULL } }, /* XSUM_XXH128_testdata[3873] */ + { 1291, 0x000000009E3779B1ULL, { 0x2ED87FB2D292AF50ULL, 0xA3658A65CDF59D8BULL } }, /* XSUM_XXH128_testdata[3874] */ + { 1291, 0x9E3779B185EBCA8DULL, { 0x61AF13E44002E0BDULL, 0x1187D772B0F15FEAULL } }, /* XSUM_XXH128_testdata[3875] */ + { 1292, 0x0000000000000000ULL, { 0xBE3B0728915B4399ULL, 0x3C97437916AA8032ULL } }, /* XSUM_XXH128_testdata[3876] */ + { 1292, 0x000000009E3779B1ULL, { 0xD9B5BBC8C356B1A9ULL, 0xFF7B4DFA5000C8D7ULL } }, /* XSUM_XXH128_testdata[3877] */ + { 1292, 0x9E3779B185EBCA8DULL, { 0xC74E6AD1C2B89F66ULL, 0x056406823E5CFD3CULL } }, /* XSUM_XXH128_testdata[3878] */ + { 1293, 0x0000000000000000ULL, { 0x02AA4409F8DA8359ULL, 0x9EA3AEB6D1029909ULL } }, /* XSUM_XXH128_testdata[3879] */ + { 1293, 0x000000009E3779B1ULL, { 0xB938BBDAA0898A78ULL, 0xB29E871DA61C32C9ULL } }, /* XSUM_XXH128_testdata[3880] */ + { 1293, 0x9E3779B185EBCA8DULL, { 0xBC5A11D25B5B33A4ULL, 0x54FA9ADBE927365CULL } }, /* XSUM_XXH128_testdata[3881] */ + { 1294, 0x0000000000000000ULL, { 0x86E73C822ECEEEF7ULL, 0xFDBE77DF7D6C41CFULL } }, /* XSUM_XXH128_testdata[3882] */ + { 1294, 0x000000009E3779B1ULL, { 0xC7760CB3F850646FULL, 0xAF3219D0AAD23085ULL } }, /* XSUM_XXH128_testdata[3883] */ + { 1294, 0x9E3779B185EBCA8DULL, { 0x480DBAB2F3AC062FULL, 0x11FF8FFF18B86780ULL } }, /* XSUM_XXH128_testdata[3884] */ + { 1295, 0x0000000000000000ULL, { 0x122A037B3AFF18B3ULL, 0x3B800B841462B290ULL } }, /* XSUM_XXH128_testdata[3885] */ + { 1295, 0x000000009E3779B1ULL, { 0x23C463CB0C5DA74EULL, 0x1982B96A17AB78C8ULL } }, /* XSUM_XXH128_testdata[3886] */ + { 1295, 0x9E3779B185EBCA8DULL, { 0x31D2AC865DE8ABCCULL, 0x5EA104666615DF9EULL } }, /* XSUM_XXH128_testdata[3887] */ + { 1296, 0x0000000000000000ULL, { 0xAA4F241696FD6EACULL, 0x95892A48FA5811FDULL } }, /* XSUM_XXH128_testdata[3888] */ + { 1296, 0x000000009E3779B1ULL, { 0x2D16B5D127760BB8ULL, 0x4A1CBF5F97AB1617ULL } }, /* XSUM_XXH128_testdata[3889] */ + { 1296, 0x9E3779B185EBCA8DULL, { 0x6F8CBF15644E57ECULL, 0x84A2FF56DD46B5BFULL } }, /* XSUM_XXH128_testdata[3890] */ + { 1297, 0x0000000000000000ULL, { 0xFBEB130E6B67E9F9ULL, 0x2D3420D6A8934F8CULL } }, /* XSUM_XXH128_testdata[3891] */ + { 1297, 0x000000009E3779B1ULL, { 0xABF3A1BDB6E6347BULL, 0x67DED8DE42B68BBBULL } }, /* XSUM_XXH128_testdata[3892] */ + { 1297, 0x9E3779B185EBCA8DULL, { 0x25322F0248CC7AA2ULL, 0x1FF02CBA3EABCAE9ULL } }, /* XSUM_XXH128_testdata[3893] */ + { 1298, 0x0000000000000000ULL, { 0xA1407DC529CD23DFULL, 0x4FE6AA99D73C90D9ULL } }, /* XSUM_XXH128_testdata[3894] */ + { 1298, 0x000000009E3779B1ULL, { 0xC88DC3AFE253C1F6ULL, 0x6825BAEFA28874C5ULL } }, /* XSUM_XXH128_testdata[3895] */ + { 1298, 0x9E3779B185EBCA8DULL, { 0xD383F937F6419641ULL, 0xE51CCD85CED15E6DULL } }, /* XSUM_XXH128_testdata[3896] */ + { 1299, 0x0000000000000000ULL, { 0x765F502DF20DC49EULL, 0xDEE248B3C800A145ULL } }, /* XSUM_XXH128_testdata[3897] */ + { 1299, 0x000000009E3779B1ULL, { 0x556B993B862436D9ULL, 0x2887EDBCD7A41C20ULL } }, /* XSUM_XXH128_testdata[3898] */ + { 1299, 0x9E3779B185EBCA8DULL, { 0x95784B95CA2EE2AFULL, 0x0FBE1C08B2D73388ULL } }, /* XSUM_XXH128_testdata[3899] */ + { 1300, 0x0000000000000000ULL, { 0x2E312D65217E00C6ULL, 0x5A7F27EF7248AFCAULL } }, /* XSUM_XXH128_testdata[3900] */ + { 1300, 0x000000009E3779B1ULL, { 0xB404644D02C78C55ULL, 0xCCEF683F7492AF6DULL } }, /* XSUM_XXH128_testdata[3901] */ + { 1300, 0x9E3779B185EBCA8DULL, { 0x73B3A23E757FD725ULL, 0xF440CD19A3F985B8ULL } }, /* XSUM_XXH128_testdata[3902] */ + { 1301, 0x0000000000000000ULL, { 0xBFCAA107E96D496CULL, 0x7657F91752C7E68AULL } }, /* XSUM_XXH128_testdata[3903] */ + { 1301, 0x000000009E3779B1ULL, { 0x5202CC17575A5B80ULL, 0x27A03A65C7AF6950ULL } }, /* XSUM_XXH128_testdata[3904] */ + { 1301, 0x9E3779B185EBCA8DULL, { 0x1752171113E51492ULL, 0x8D07B562A3273669ULL } }, /* XSUM_XXH128_testdata[3905] */ + { 1302, 0x0000000000000000ULL, { 0x4A14045C5D89824EULL, 0x7331085F56C3A87BULL } }, /* XSUM_XXH128_testdata[3906] */ + { 1302, 0x000000009E3779B1ULL, { 0x8B0524DFC48C4600ULL, 0xA37EB96FE5A75FFDULL } }, /* XSUM_XXH128_testdata[3907] */ + { 1302, 0x9E3779B185EBCA8DULL, { 0xC4982E354FD226E5ULL, 0xACE3461A8CD08E57ULL } }, /* XSUM_XXH128_testdata[3908] */ + { 1303, 0x0000000000000000ULL, { 0xEA3514B0E1197A04ULL, 0xA1B482FE1551D34EULL } }, /* XSUM_XXH128_testdata[3909] */ + { 1303, 0x000000009E3779B1ULL, { 0x847FA0EFD95BB5F8ULL, 0x41E48499563DB5E5ULL } }, /* XSUM_XXH128_testdata[3910] */ + { 1303, 0x9E3779B185EBCA8DULL, { 0x6AE4B901B790ED3CULL, 0x8EC072562A9091FEULL } }, /* XSUM_XXH128_testdata[3911] */ + { 1304, 0x0000000000000000ULL, { 0xA138B765D214CE09ULL, 0xD7AB13CD7B6DBF5DULL } }, /* XSUM_XXH128_testdata[3912] */ + { 1304, 0x000000009E3779B1ULL, { 0x0DC4C0A00E32478FULL, 0x39115BE7D340ECDAULL } }, /* XSUM_XXH128_testdata[3913] */ + { 1304, 0x9E3779B185EBCA8DULL, { 0x559B3C09BAE652E9ULL, 0x120C71BD5FFA62EEULL } }, /* XSUM_XXH128_testdata[3914] */ + { 1305, 0x0000000000000000ULL, { 0x15E0EADCA67CCFA8ULL, 0xD2DB095416B6EA36ULL } }, /* XSUM_XXH128_testdata[3915] */ + { 1305, 0x000000009E3779B1ULL, { 0xB93D0B136A6F36CDULL, 0xBF4C04066EAFAF97ULL } }, /* XSUM_XXH128_testdata[3916] */ + { 1305, 0x9E3779B185EBCA8DULL, { 0xF6CA119E0EA4FDB0ULL, 0xC352FDCBF5B15C1DULL } }, /* XSUM_XXH128_testdata[3917] */ + { 1306, 0x0000000000000000ULL, { 0x48C0AC8100A77315ULL, 0x0275DE1D4693823EULL } }, /* XSUM_XXH128_testdata[3918] */ + { 1306, 0x000000009E3779B1ULL, { 0x0D8628FB8E4FF30EULL, 0xE16C6A21C4FDB9EBULL } }, /* XSUM_XXH128_testdata[3919] */ + { 1306, 0x9E3779B185EBCA8DULL, { 0x3776AFB679FA3D19ULL, 0x7EBAF623C40F14A0ULL } }, /* XSUM_XXH128_testdata[3920] */ + { 1307, 0x0000000000000000ULL, { 0xE20038DD97EE905AULL, 0xADBC44FC49F5F942ULL } }, /* XSUM_XXH128_testdata[3921] */ + { 1307, 0x000000009E3779B1ULL, { 0xD6B1D8FC47EBF1CEULL, 0x0635399233C8EE1DULL } }, /* XSUM_XXH128_testdata[3922] */ + { 1307, 0x9E3779B185EBCA8DULL, { 0x874525080EFA9D8FULL, 0xE0D963FCB03CABFCULL } }, /* XSUM_XXH128_testdata[3923] */ + { 1308, 0x0000000000000000ULL, { 0xF635B857A2E91F86ULL, 0x7CDDA87A1DA7DDFCULL } }, /* XSUM_XXH128_testdata[3924] */ + { 1308, 0x000000009E3779B1ULL, { 0x0C5D90A240F19154ULL, 0x6108F23948064E4DULL } }, /* XSUM_XXH128_testdata[3925] */ + { 1308, 0x9E3779B185EBCA8DULL, { 0x3A6B8B0AB31B8052ULL, 0x708E45EDF817AC5BULL } }, /* XSUM_XXH128_testdata[3926] */ + { 1309, 0x0000000000000000ULL, { 0x6ACEA1D97A14D732ULL, 0x73081DA2FB999054ULL } }, /* XSUM_XXH128_testdata[3927] */ + { 1309, 0x000000009E3779B1ULL, { 0xD04B23E000B36D8AULL, 0x2BCC077234FF8438ULL } }, /* XSUM_XXH128_testdata[3928] */ + { 1309, 0x9E3779B185EBCA8DULL, { 0x412819DDA017A594ULL, 0xAE69120D21C32553ULL } }, /* XSUM_XXH128_testdata[3929] */ + { 1310, 0x0000000000000000ULL, { 0xE35CB9A7A97781F1ULL, 0x8E0CD6B2AB366337ULL } }, /* XSUM_XXH128_testdata[3930] */ + { 1310, 0x000000009E3779B1ULL, { 0x7D74ADDF89B4F2A8ULL, 0xDEC90DECE4EE3737ULL } }, /* XSUM_XXH128_testdata[3931] */ + { 1310, 0x9E3779B185EBCA8DULL, { 0xECB208A93C18C0CAULL, 0xC1201E673B170DD7ULL } }, /* XSUM_XXH128_testdata[3932] */ + { 1311, 0x0000000000000000ULL, { 0xE6ADABBE2EF32E4FULL, 0x69F35352A5C35D57ULL } }, /* XSUM_XXH128_testdata[3933] */ + { 1311, 0x000000009E3779B1ULL, { 0xE163DC5F47EC6547ULL, 0xB70B47646CF4D326ULL } }, /* XSUM_XXH128_testdata[3934] */ + { 1311, 0x9E3779B185EBCA8DULL, { 0xBFCC09E11B207515ULL, 0x782CAEBFC5C2CF16ULL } }, /* XSUM_XXH128_testdata[3935] */ + { 1312, 0x0000000000000000ULL, { 0x5A524056A59C39FAULL, 0xB81789316E193A9CULL } }, /* XSUM_XXH128_testdata[3936] */ + { 1312, 0x000000009E3779B1ULL, { 0x2F5BD2CCF7EDE0DDULL, 0x39AED1C57F099AD1ULL } }, /* XSUM_XXH128_testdata[3937] */ + { 1312, 0x9E3779B185EBCA8DULL, { 0x931114ABC3DC32E8ULL, 0x18E3AA32F72537C8ULL } }, /* XSUM_XXH128_testdata[3938] */ + { 1313, 0x0000000000000000ULL, { 0x348713C223BEDAFCULL, 0x5F790E3E751EF713ULL } }, /* XSUM_XXH128_testdata[3939] */ + { 1313, 0x000000009E3779B1ULL, { 0x563EEB92E71FB955ULL, 0xFCF915667BA5E06CULL } }, /* XSUM_XXH128_testdata[3940] */ + { 1313, 0x9E3779B185EBCA8DULL, { 0x1A83FA881795CBBCULL, 0xCB5DE57A2E2D0A6BULL } }, /* XSUM_XXH128_testdata[3941] */ + { 1314, 0x0000000000000000ULL, { 0x31D349060630B50AULL, 0xFCDD2DE3FEB84626ULL } }, /* XSUM_XXH128_testdata[3942] */ + { 1314, 0x000000009E3779B1ULL, { 0x3607B574D421F27AULL, 0xD4321D80584269BEULL } }, /* XSUM_XXH128_testdata[3943] */ + { 1314, 0x9E3779B185EBCA8DULL, { 0x77E1CB3EF4DDBB61ULL, 0x224EC1B764EE2CF1ULL } }, /* XSUM_XXH128_testdata[3944] */ + { 1315, 0x0000000000000000ULL, { 0x3C62C7DDD34E3A6CULL, 0x4F530505F52CCF37ULL } }, /* XSUM_XXH128_testdata[3945] */ + { 1315, 0x000000009E3779B1ULL, { 0xCF7BDD937AE8FE88ULL, 0x1B1F4AC454029104ULL } }, /* XSUM_XXH128_testdata[3946] */ + { 1315, 0x9E3779B185EBCA8DULL, { 0x30104F41CE30A159ULL, 0x08D92A14026161B4ULL } }, /* XSUM_XXH128_testdata[3947] */ + { 1316, 0x0000000000000000ULL, { 0x963A7C670708591EULL, 0xA6CDE67213FB73F3ULL } }, /* XSUM_XXH128_testdata[3948] */ + { 1316, 0x000000009E3779B1ULL, { 0x8BC1C6C56D720051ULL, 0x6A364948B9CA2330ULL } }, /* XSUM_XXH128_testdata[3949] */ + { 1316, 0x9E3779B185EBCA8DULL, { 0xF50E0A55D013DBFCULL, 0x36F47D9352A76C6CULL } }, /* XSUM_XXH128_testdata[3950] */ + { 1317, 0x0000000000000000ULL, { 0xB2419B4144391552ULL, 0x9330271BB882D165ULL } }, /* XSUM_XXH128_testdata[3951] */ + { 1317, 0x000000009E3779B1ULL, { 0xDC06DDFC1FEE1CD7ULL, 0x2CB7F84C48528811ULL } }, /* XSUM_XXH128_testdata[3952] */ + { 1317, 0x9E3779B185EBCA8DULL, { 0x780D130EE1B881ACULL, 0x9D9995497042E175ULL } }, /* XSUM_XXH128_testdata[3953] */ + { 1318, 0x0000000000000000ULL, { 0x9DF4A7E827BDC174ULL, 0xEA8E0840D7ED80FFULL } }, /* XSUM_XXH128_testdata[3954] */ + { 1318, 0x000000009E3779B1ULL, { 0x1E32BC84D6EBE933ULL, 0x19259D1CDBCF92D5ULL } }, /* XSUM_XXH128_testdata[3955] */ + { 1318, 0x9E3779B185EBCA8DULL, { 0xA82A0482BE55D5B6ULL, 0xB119C9236BA665EBULL } }, /* XSUM_XXH128_testdata[3956] */ + { 1319, 0x0000000000000000ULL, { 0x2ACD45BB72294061ULL, 0x85EFBF7C0124A3A0ULL } }, /* XSUM_XXH128_testdata[3957] */ + { 1319, 0x000000009E3779B1ULL, { 0x0B084FCCC873B896ULL, 0xC56E6C3C86B96BC5ULL } }, /* XSUM_XXH128_testdata[3958] */ + { 1319, 0x9E3779B185EBCA8DULL, { 0x9395401BD5483F23ULL, 0x52342546F2686421ULL } }, /* XSUM_XXH128_testdata[3959] */ + { 1320, 0x0000000000000000ULL, { 0x0AEF011F90C1E41DULL, 0xE0AB3A2625945E01ULL } }, /* XSUM_XXH128_testdata[3960] */ + { 1320, 0x000000009E3779B1ULL, { 0x07574786762507E9ULL, 0x8D17097CC8162213ULL } }, /* XSUM_XXH128_testdata[3961] */ + { 1320, 0x9E3779B185EBCA8DULL, { 0x596CBB319F2C596EULL, 0x9C92EF498B5B27DEULL } }, /* XSUM_XXH128_testdata[3962] */ + { 1321, 0x0000000000000000ULL, { 0x80460A7A97F367BDULL, 0x5A6E2B49BA12FFA5ULL } }, /* XSUM_XXH128_testdata[3963] */ + { 1321, 0x000000009E3779B1ULL, { 0xB6D4C78854A85EEAULL, 0x9B64F39BBB4B89FAULL } }, /* XSUM_XXH128_testdata[3964] */ + { 1321, 0x9E3779B185EBCA8DULL, { 0xE2D6AD55B6F5D0CFULL, 0xBA39D975EBA68A73ULL } }, /* XSUM_XXH128_testdata[3965] */ + { 1322, 0x0000000000000000ULL, { 0x89B95EF219277ED4ULL, 0xA75D26471EE5365DULL } }, /* XSUM_XXH128_testdata[3966] */ + { 1322, 0x000000009E3779B1ULL, { 0x51A177E66A9472E5ULL, 0x7CA76650E64A01BEULL } }, /* XSUM_XXH128_testdata[3967] */ + { 1322, 0x9E3779B185EBCA8DULL, { 0x2F4E770670C952E8ULL, 0xDDBB6A9448491214ULL } }, /* XSUM_XXH128_testdata[3968] */ + { 1323, 0x0000000000000000ULL, { 0x2DD88C30A443D7D7ULL, 0x8086B99E514281D9ULL } }, /* XSUM_XXH128_testdata[3969] */ + { 1323, 0x000000009E3779B1ULL, { 0x2227A5C7FB021EE2ULL, 0x2DB336D07840633DULL } }, /* XSUM_XXH128_testdata[3970] */ + { 1323, 0x9E3779B185EBCA8DULL, { 0x85F0EC0DF35B17D4ULL, 0x4C743EC16CF9332FULL } }, /* XSUM_XXH128_testdata[3971] */ + { 1324, 0x0000000000000000ULL, { 0xF0BE5E244A57175FULL, 0xC1010D1A9CE41F43ULL } }, /* XSUM_XXH128_testdata[3972] */ + { 1324, 0x000000009E3779B1ULL, { 0x12D728CC033AF329ULL, 0xF7C7BCAE9A92DA26ULL } }, /* XSUM_XXH128_testdata[3973] */ + { 1324, 0x9E3779B185EBCA8DULL, { 0xECD94321D78E8F02ULL, 0x87A3DABB6C76F102ULL } }, /* XSUM_XXH128_testdata[3974] */ + { 1325, 0x0000000000000000ULL, { 0x2A2016610FD63EE6ULL, 0xCA6C28EC2AF9F92AULL } }, /* XSUM_XXH128_testdata[3975] */ + { 1325, 0x000000009E3779B1ULL, { 0x85E43B94140B2FABULL, 0xC538F5814081FE2BULL } }, /* XSUM_XXH128_testdata[3976] */ + { 1325, 0x9E3779B185EBCA8DULL, { 0x3C55DEB660FE27B9ULL, 0x4E5B4F28AE44E1DCULL } }, /* XSUM_XXH128_testdata[3977] */ + { 1326, 0x0000000000000000ULL, { 0xB128119374CE78F9ULL, 0x9B5D417281A087BBULL } }, /* XSUM_XXH128_testdata[3978] */ + { 1326, 0x000000009E3779B1ULL, { 0x7B7BE196CA33C7EDULL, 0x60A7D08384F2AC44ULL } }, /* XSUM_XXH128_testdata[3979] */ + { 1326, 0x9E3779B185EBCA8DULL, { 0x2085E106ADECF1B2ULL, 0xE98A91BBFB1E4D4EULL } }, /* XSUM_XXH128_testdata[3980] */ + { 1327, 0x0000000000000000ULL, { 0xD192FD7CBF097AC7ULL, 0x72AC0102F023614AULL } }, /* XSUM_XXH128_testdata[3981] */ + { 1327, 0x000000009E3779B1ULL, { 0xB9BC396A1666B567ULL, 0x83D9DBA7B91AD1C5ULL } }, /* XSUM_XXH128_testdata[3982] */ + { 1327, 0x9E3779B185EBCA8DULL, { 0xDF8C82D3D28D27B7ULL, 0xED376DFC1CB04E92ULL } }, /* XSUM_XXH128_testdata[3983] */ + { 1328, 0x0000000000000000ULL, { 0xD431613BD81D3AB0ULL, 0xA8B0B8BC9FA605DEULL } }, /* XSUM_XXH128_testdata[3984] */ + { 1328, 0x000000009E3779B1ULL, { 0xCE7DDADB38937501ULL, 0x81B9EE105377ABBDULL } }, /* XSUM_XXH128_testdata[3985] */ + { 1328, 0x9E3779B185EBCA8DULL, { 0xABC8A0FCA92A635CULL, 0xC8D1487219E97033ULL } }, /* XSUM_XXH128_testdata[3986] */ + { 1329, 0x0000000000000000ULL, { 0x17CC6274E7945D88ULL, 0x0F4170CD217E4207ULL } }, /* XSUM_XXH128_testdata[3987] */ + { 1329, 0x000000009E3779B1ULL, { 0xEBDB88EEA3DC437CULL, 0xE597B1B63DC4F87BULL } }, /* XSUM_XXH128_testdata[3988] */ + { 1329, 0x9E3779B185EBCA8DULL, { 0xBF869D913272410CULL, 0x0F133D84B3CAEB7DULL } }, /* XSUM_XXH128_testdata[3989] */ + { 1330, 0x0000000000000000ULL, { 0xA67F9F7FF59914F1ULL, 0x90D38ACCD46F5F19ULL } }, /* XSUM_XXH128_testdata[3990] */ + { 1330, 0x000000009E3779B1ULL, { 0x2C5F93C1595D750FULL, 0x3012E3F88CEF109EULL } }, /* XSUM_XXH128_testdata[3991] */ + { 1330, 0x9E3779B185EBCA8DULL, { 0x82FBBBA32BEC1877ULL, 0x5105F7C0215DE925ULL } }, /* XSUM_XXH128_testdata[3992] */ + { 1331, 0x0000000000000000ULL, { 0xC028954DD075245BULL, 0xB721BC33E4A460B4ULL } }, /* XSUM_XXH128_testdata[3993] */ + { 1331, 0x000000009E3779B1ULL, { 0xAF3A7A19F11B7F17ULL, 0x2B3D05576741D3BBULL } }, /* XSUM_XXH128_testdata[3994] */ + { 1331, 0x9E3779B185EBCA8DULL, { 0x03F65BD9C4C7FE3DULL, 0xF24C37EDAE5ED5BCULL } }, /* XSUM_XXH128_testdata[3995] */ + { 1332, 0x0000000000000000ULL, { 0x9BEBCAC3C85B315EULL, 0x5D22328E4C009500ULL } }, /* XSUM_XXH128_testdata[3996] */ + { 1332, 0x000000009E3779B1ULL, { 0xD5CED951DB52D7B9ULL, 0x1A71F648A88A07A6ULL } }, /* XSUM_XXH128_testdata[3997] */ + { 1332, 0x9E3779B185EBCA8DULL, { 0x49D4CF6B712D5C3EULL, 0x91C6E9F94BF7B369ULL } }, /* XSUM_XXH128_testdata[3998] */ + { 1333, 0x0000000000000000ULL, { 0xB2EB79B747A26D08ULL, 0x4CF328B883F6BD99ULL } }, /* XSUM_XXH128_testdata[3999] */ + { 1333, 0x000000009E3779B1ULL, { 0xF9567F03FD500C4AULL, 0xC369DC42ED8DEEA5ULL } }, /* XSUM_XXH128_testdata[4000] */ + { 1333, 0x9E3779B185EBCA8DULL, { 0xACDAB80EBF5A8917ULL, 0x05C19C3BB079CD04ULL } }, /* XSUM_XXH128_testdata[4001] */ + { 1334, 0x0000000000000000ULL, { 0x489CC739652506E7ULL, 0xDE6930A718A6A376ULL } }, /* XSUM_XXH128_testdata[4002] */ + { 1334, 0x000000009E3779B1ULL, { 0x4844A17FD11375DDULL, 0xA3268BDA884FBEA2ULL } }, /* XSUM_XXH128_testdata[4003] */ + { 1334, 0x9E3779B185EBCA8DULL, { 0x1AB9D545728CEBE0ULL, 0xD03D2179ECE2B803ULL } }, /* XSUM_XXH128_testdata[4004] */ + { 1335, 0x0000000000000000ULL, { 0xEF30237B5B64111EULL, 0x706ACFA3C3F308B8ULL } }, /* XSUM_XXH128_testdata[4005] */ + { 1335, 0x000000009E3779B1ULL, { 0xD72B36297ED039B1ULL, 0x6F04D4187A1D7D3BULL } }, /* XSUM_XXH128_testdata[4006] */ + { 1335, 0x9E3779B185EBCA8DULL, { 0xB17E403458E586ADULL, 0x2885ACD46FF7F5BCULL } }, /* XSUM_XXH128_testdata[4007] */ + { 1336, 0x0000000000000000ULL, { 0x50BC61865CD999A7ULL, 0x002935BED0FEDDDFULL } }, /* XSUM_XXH128_testdata[4008] */ + { 1336, 0x000000009E3779B1ULL, { 0x4139E23550D1C946ULL, 0x205077CFE51F3042ULL } }, /* XSUM_XXH128_testdata[4009] */ + { 1336, 0x9E3779B185EBCA8DULL, { 0xB87D6B59E0354933ULL, 0x12B7FA1694085F6BULL } }, /* XSUM_XXH128_testdata[4010] */ + { 1337, 0x0000000000000000ULL, { 0x9F9A750C6A44F106ULL, 0x00909F020D7A3F95ULL } }, /* XSUM_XXH128_testdata[4011] */ + { 1337, 0x000000009E3779B1ULL, { 0x2DD93E1919BE9A23ULL, 0x4C43A0D21FC8F5F7ULL } }, /* XSUM_XXH128_testdata[4012] */ + { 1337, 0x9E3779B185EBCA8DULL, { 0x14070E973B3175A2ULL, 0x8B24B3D564A10E04ULL } }, /* XSUM_XXH128_testdata[4013] */ + { 1338, 0x0000000000000000ULL, { 0x0CCD61FDF237FD29ULL, 0xD7B18156EE61610AULL } }, /* XSUM_XXH128_testdata[4014] */ + { 1338, 0x000000009E3779B1ULL, { 0xA938FD2223767DC5ULL, 0x61EEFF7867AF5EF7ULL } }, /* XSUM_XXH128_testdata[4015] */ + { 1338, 0x9E3779B185EBCA8DULL, { 0x4E381AF0B5DFBF40ULL, 0x5006931D0CDEB33AULL } }, /* XSUM_XXH128_testdata[4016] */ + { 1339, 0x0000000000000000ULL, { 0xB32803C680833A42ULL, 0xF122C5B0516A782BULL } }, /* XSUM_XXH128_testdata[4017] */ + { 1339, 0x000000009E3779B1ULL, { 0xF0050E9008D5674BULL, 0xA6FC4AD270D20A10ULL } }, /* XSUM_XXH128_testdata[4018] */ + { 1339, 0x9E3779B185EBCA8DULL, { 0x2B7A79478BDC64F7ULL, 0xF08DAF614610EF59ULL } }, /* XSUM_XXH128_testdata[4019] */ + { 1340, 0x0000000000000000ULL, { 0x6D3515923BFD0E5FULL, 0x79310EE35103ED25ULL } }, /* XSUM_XXH128_testdata[4020] */ + { 1340, 0x000000009E3779B1ULL, { 0xF841247010E4861FULL, 0xEDFC58E6F3B5CE26ULL } }, /* XSUM_XXH128_testdata[4021] */ + { 1340, 0x9E3779B185EBCA8DULL, { 0xD9701B31913C2D4DULL, 0xFEE51641DEA75182ULL } }, /* XSUM_XXH128_testdata[4022] */ + { 1341, 0x0000000000000000ULL, { 0x48D8EC79E90A0EFDULL, 0x4CAB02F66BD43D03ULL } }, /* XSUM_XXH128_testdata[4023] */ + { 1341, 0x000000009E3779B1ULL, { 0x0823813AF276AF31ULL, 0x6B0E80C501F47374ULL } }, /* XSUM_XXH128_testdata[4024] */ + { 1341, 0x9E3779B185EBCA8DULL, { 0x594875400B329F1DULL, 0xDF37B6ED5171A09AULL } }, /* XSUM_XXH128_testdata[4025] */ + { 1342, 0x0000000000000000ULL, { 0x0918BCD2A85A11A3ULL, 0x8BB23B02A4B2999BULL } }, /* XSUM_XXH128_testdata[4026] */ + { 1342, 0x000000009E3779B1ULL, { 0x4FCC4301C9C45710ULL, 0xECC10795D40EF51CULL } }, /* XSUM_XXH128_testdata[4027] */ + { 1342, 0x9E3779B185EBCA8DULL, { 0x50617EC3AD9E6FBEULL, 0x15CC603C4E677635ULL } }, /* XSUM_XXH128_testdata[4028] */ + { 1343, 0x0000000000000000ULL, { 0x47B4B996ACBCA272ULL, 0x14E7777A96821528ULL } }, /* XSUM_XXH128_testdata[4029] */ + { 1343, 0x000000009E3779B1ULL, { 0xF36F12A8DDC6B3E5ULL, 0x705FA9474354AB34ULL } }, /* XSUM_XXH128_testdata[4030] */ + { 1343, 0x9E3779B185EBCA8DULL, { 0x78E1BF70B413C5A2ULL, 0x1387F784ECA71F56ULL } }, /* XSUM_XXH128_testdata[4031] */ + { 1344, 0x0000000000000000ULL, { 0x013CE932DAF959CDULL, 0x9EF105F2683BBFB3ULL } }, /* XSUM_XXH128_testdata[4032] */ + { 1344, 0x000000009E3779B1ULL, { 0x9D2CB88F8EA7B1ACULL, 0x60D59253B2DE8DABULL } }, /* XSUM_XXH128_testdata[4033] */ + { 1344, 0x9E3779B185EBCA8DULL, { 0x4D72828634546D2AULL, 0x8D3F152B30E87801ULL } }, /* XSUM_XXH128_testdata[4034] */ + { 1345, 0x0000000000000000ULL, { 0x2C8E44982DF991F6ULL, 0xD094E9F496EF86D3ULL } }, /* XSUM_XXH128_testdata[4035] */ + { 1345, 0x000000009E3779B1ULL, { 0x6E3329BA90F061FFULL, 0x19F0BEDF246EA8C1ULL } }, /* XSUM_XXH128_testdata[4036] */ + { 1345, 0x9E3779B185EBCA8DULL, { 0xBC54FDBF323BBE36ULL, 0x88F022796EB3AC0AULL } }, /* XSUM_XXH128_testdata[4037] */ + { 1346, 0x0000000000000000ULL, { 0x545BC34A73452297ULL, 0x1A4111C8E14297B7ULL } }, /* XSUM_XXH128_testdata[4038] */ + { 1346, 0x000000009E3779B1ULL, { 0x41A881564A117089ULL, 0xA181CF3401CC51B3ULL } }, /* XSUM_XXH128_testdata[4039] */ + { 1346, 0x9E3779B185EBCA8DULL, { 0x4FA571EA68EF0EDEULL, 0x0778CB46A226DBE1ULL } }, /* XSUM_XXH128_testdata[4040] */ + { 1347, 0x0000000000000000ULL, { 0x4E37934066623E92ULL, 0x7E795AA89D239FB5ULL } }, /* XSUM_XXH128_testdata[4041] */ + { 1347, 0x000000009E3779B1ULL, { 0x07A2963BD6080BDBULL, 0x5C76A71888029B35ULL } }, /* XSUM_XXH128_testdata[4042] */ + { 1347, 0x9E3779B185EBCA8DULL, { 0x644C5D2147A8F740ULL, 0x8A51B0DC795A45B4ULL } }, /* XSUM_XXH128_testdata[4043] */ + { 1348, 0x0000000000000000ULL, { 0xCD4F19DD0DB10EFBULL, 0x5C4AE1CFAFA5B2C0ULL } }, /* XSUM_XXH128_testdata[4044] */ + { 1348, 0x000000009E3779B1ULL, { 0xAFC4209BC763DEC4ULL, 0xD14F0DB04C50C7B0ULL } }, /* XSUM_XXH128_testdata[4045] */ + { 1348, 0x9E3779B185EBCA8DULL, { 0x7DFE56ABB035254AULL, 0x128D88111E8C4562ULL } }, /* XSUM_XXH128_testdata[4046] */ + { 1349, 0x0000000000000000ULL, { 0x2100DF530D1E9080ULL, 0x99BE0090C02AD5C9ULL } }, /* XSUM_XXH128_testdata[4047] */ + { 1349, 0x000000009E3779B1ULL, { 0x853EEAB01C680915ULL, 0xF256ADC9A8E87D54ULL } }, /* XSUM_XXH128_testdata[4048] */ + { 1349, 0x9E3779B185EBCA8DULL, { 0xC50323EF416AA038ULL, 0xE33702F40BDF3239ULL } }, /* XSUM_XXH128_testdata[4049] */ + { 1350, 0x0000000000000000ULL, { 0xB9B2CF49EC2FB54AULL, 0xFE84421727549442ULL } }, /* XSUM_XXH128_testdata[4050] */ + { 1350, 0x000000009E3779B1ULL, { 0xFA883DBB613B087CULL, 0x8FBBB873CB4A509DULL } }, /* XSUM_XXH128_testdata[4051] */ + { 1350, 0x9E3779B185EBCA8DULL, { 0xD2F4FF62CC375D83ULL, 0x84A96A7F2DE2841AULL } }, /* XSUM_XXH128_testdata[4052] */ + { 1351, 0x0000000000000000ULL, { 0x0BCCBE7B56310000ULL, 0x45297B579D0F3847ULL } }, /* XSUM_XXH128_testdata[4053] */ + { 1351, 0x000000009E3779B1ULL, { 0xCB1BD48F7B95A1A4ULL, 0x5CA4CBACE64FDE8EULL } }, /* XSUM_XXH128_testdata[4054] */ + { 1351, 0x9E3779B185EBCA8DULL, { 0x833F2097408DEB25ULL, 0xE54ACB70D3EDEF2AULL } }, /* XSUM_XXH128_testdata[4055] */ + { 1352, 0x0000000000000000ULL, { 0xD46A300F00BF77ACULL, 0xA7826D2C9166BDD9ULL } }, /* XSUM_XXH128_testdata[4056] */ + { 1352, 0x000000009E3779B1ULL, { 0x39F2CDE0FC4C3ACDULL, 0x207F0F120262C5F1ULL } }, /* XSUM_XXH128_testdata[4057] */ + { 1352, 0x9E3779B185EBCA8DULL, { 0x7BB6491930D53D56ULL, 0xE42A674552AB6650ULL } }, /* XSUM_XXH128_testdata[4058] */ + { 1353, 0x0000000000000000ULL, { 0xAC88733AE865906AULL, 0xC38905B6DA230A71ULL } }, /* XSUM_XXH128_testdata[4059] */ + { 1353, 0x000000009E3779B1ULL, { 0x17772D9E0EC47AE5ULL, 0x349E53059C9BEFC8ULL } }, /* XSUM_XXH128_testdata[4060] */ + { 1353, 0x9E3779B185EBCA8DULL, { 0xD9F702821DE7D0D1ULL, 0xC87C305E70C2208CULL } }, /* XSUM_XXH128_testdata[4061] */ + { 1354, 0x0000000000000000ULL, { 0xA5FEF51672F13422ULL, 0x60FF21C5293CEEE1ULL } }, /* XSUM_XXH128_testdata[4062] */ + { 1354, 0x000000009E3779B1ULL, { 0xBDEAAADFB18EDF5AULL, 0xE636E58059C8AA81ULL } }, /* XSUM_XXH128_testdata[4063] */ + { 1354, 0x9E3779B185EBCA8DULL, { 0x22FB18918E9D4B13ULL, 0x4A2A2D2FB8198561ULL } }, /* XSUM_XXH128_testdata[4064] */ + { 1355, 0x0000000000000000ULL, { 0x4005197CEECF38A2ULL, 0x426BBE0C4803A758ULL } }, /* XSUM_XXH128_testdata[4065] */ + { 1355, 0x000000009E3779B1ULL, { 0x6E86B2724CA5C0C9ULL, 0x96E727FA145D269DULL } }, /* XSUM_XXH128_testdata[4066] */ + { 1355, 0x9E3779B185EBCA8DULL, { 0x871C7BC841BF8CEAULL, 0xF8D06F9256560F56ULL } }, /* XSUM_XXH128_testdata[4067] */ + { 1356, 0x0000000000000000ULL, { 0x6EC4DD07A7E36E9AULL, 0xF51E40BE36A32804ULL } }, /* XSUM_XXH128_testdata[4068] */ + { 1356, 0x000000009E3779B1ULL, { 0x89C49E5799E11ACDULL, 0xFAAAC6C575F61E42ULL } }, /* XSUM_XXH128_testdata[4069] */ + { 1356, 0x9E3779B185EBCA8DULL, { 0xC0F936987C1DCAF3ULL, 0x7A6C8FDB730B5798ULL } }, /* XSUM_XXH128_testdata[4070] */ + { 1357, 0x0000000000000000ULL, { 0x45D8E48A5773C59DULL, 0x30F0C1824915A0B0ULL } }, /* XSUM_XXH128_testdata[4071] */ + { 1357, 0x000000009E3779B1ULL, { 0xAF0172C0BE060ABFULL, 0x366AF3D21AF5DA0AULL } }, /* XSUM_XXH128_testdata[4072] */ + { 1357, 0x9E3779B185EBCA8DULL, { 0xCAD350498527761CULL, 0xC9A125FE49D3BB31ULL } }, /* XSUM_XXH128_testdata[4073] */ + { 1358, 0x0000000000000000ULL, { 0xF34F31F8ECAD2143ULL, 0x84EEDA96071916C8ULL } }, /* XSUM_XXH128_testdata[4074] */ + { 1358, 0x000000009E3779B1ULL, { 0x9E5466AFAB28A48AULL, 0x14E7858822B30D0EULL } }, /* XSUM_XXH128_testdata[4075] */ + { 1358, 0x9E3779B185EBCA8DULL, { 0xA22B0347980DA2A2ULL, 0xFB8610E60F1F2C0CULL } }, /* XSUM_XXH128_testdata[4076] */ + { 1359, 0x0000000000000000ULL, { 0x84EDC4E7BF4E5B18ULL, 0x517A02483EDC140EULL } }, /* XSUM_XXH128_testdata[4077] */ + { 1359, 0x000000009E3779B1ULL, { 0xF30A2891E0FF24CCULL, 0xD287BE31DC9F51C2ULL } }, /* XSUM_XXH128_testdata[4078] */ + { 1359, 0x9E3779B185EBCA8DULL, { 0xB4EE44ACBAA9AEEDULL, 0xF165F6DB68660D97ULL } }, /* XSUM_XXH128_testdata[4079] */ + { 1360, 0x0000000000000000ULL, { 0x51117C6E1E37F76BULL, 0xDE36C947108750F2ULL } }, /* XSUM_XXH128_testdata[4080] */ + { 1360, 0x000000009E3779B1ULL, { 0x420A16A2B5FB2940ULL, 0xC843DE524C214F05ULL } }, /* XSUM_XXH128_testdata[4081] */ + { 1360, 0x9E3779B185EBCA8DULL, { 0xDE39242E68E96791ULL, 0x891A9320A35DD2F5ULL } }, /* XSUM_XXH128_testdata[4082] */ + { 1361, 0x0000000000000000ULL, { 0xFAFE998DF0B50089ULL, 0xEE93C96BE2147165ULL } }, /* XSUM_XXH128_testdata[4083] */ + { 1361, 0x000000009E3779B1ULL, { 0x0DDDB085C6CEA8FEULL, 0xC1E7056AF8C49A33ULL } }, /* XSUM_XXH128_testdata[4084] */ + { 1361, 0x9E3779B185EBCA8DULL, { 0x491FD31A6C5E4C5AULL, 0xCF4D30368C0AC9FEULL } }, /* XSUM_XXH128_testdata[4085] */ + { 1362, 0x0000000000000000ULL, { 0x9CD51FE9344A44CCULL, 0xBEC0C0F7241485B2ULL } }, /* XSUM_XXH128_testdata[4086] */ + { 1362, 0x000000009E3779B1ULL, { 0x4108F4C34BEC1C39ULL, 0x8B302BC57CB35411ULL } }, /* XSUM_XXH128_testdata[4087] */ + { 1362, 0x9E3779B185EBCA8DULL, { 0x707038848851FC82ULL, 0x11EF8E874A28CAE0ULL } }, /* XSUM_XXH128_testdata[4088] */ + { 1363, 0x0000000000000000ULL, { 0x8689EEAB84ADF7B2ULL, 0x11655E7E6E4243F9ULL } }, /* XSUM_XXH128_testdata[4089] */ + { 1363, 0x000000009E3779B1ULL, { 0xA13B23A7789B70DDULL, 0xCD1B353AF18EFD4FULL } }, /* XSUM_XXH128_testdata[4090] */ + { 1363, 0x9E3779B185EBCA8DULL, { 0xB4FF0F3BAABCCEFBULL, 0x1AAD24FA038197C1ULL } }, /* XSUM_XXH128_testdata[4091] */ + { 1364, 0x0000000000000000ULL, { 0xD8A9BD68C7CC6E1EULL, 0xD43105FC1E1B80E6ULL } }, /* XSUM_XXH128_testdata[4092] */ + { 1364, 0x000000009E3779B1ULL, { 0xA30AB5DD23135108ULL, 0x9B414EAA0CA7DD99ULL } }, /* XSUM_XXH128_testdata[4093] */ + { 1364, 0x9E3779B185EBCA8DULL, { 0xD40E9878CF8B320DULL, 0xD525BAFC94C93B75ULL } }, /* XSUM_XXH128_testdata[4094] */ + { 1365, 0x0000000000000000ULL, { 0x9E8CDD6FD3212339ULL, 0x940D22FB6E421390ULL } }, /* XSUM_XXH128_testdata[4095] */ + { 1365, 0x000000009E3779B1ULL, { 0xFE479C02D458911CULL, 0x6F877A22AD0BD708ULL } }, /* XSUM_XXH128_testdata[4096] */ + { 1365, 0x9E3779B185EBCA8DULL, { 0x4491397CAE591664ULL, 0xC906960A4B1E4D1EULL } }, /* XSUM_XXH128_testdata[4097] */ + { 1366, 0x0000000000000000ULL, { 0x7F393536B14CBE53ULL, 0x9EB05BEF492F2270ULL } }, /* XSUM_XXH128_testdata[4098] */ + { 1366, 0x000000009E3779B1ULL, { 0x92D834903F82F396ULL, 0x3799D2AA8DE947F1ULL } }, /* XSUM_XXH128_testdata[4099] */ + { 1366, 0x9E3779B185EBCA8DULL, { 0x563CB0DDCFB26BC1ULL, 0x513435C2F3C3832BULL } }, /* XSUM_XXH128_testdata[4100] */ + { 1367, 0x0000000000000000ULL, { 0x9430E26767DF1D3EULL, 0xC6811FE604374CFDULL } }, /* XSUM_XXH128_testdata[4101] */ + { 1367, 0x000000009E3779B1ULL, { 0x09FFBB3225A24607ULL, 0xF5AF56B955F8B9F2ULL } }, /* XSUM_XXH128_testdata[4102] */ + { 1367, 0x9E3779B185EBCA8DULL, { 0xEF72A6CB89577251ULL, 0xBDD3CA2D57CDF04AULL } }, /* XSUM_XXH128_testdata[4103] */ + { 1368, 0x0000000000000000ULL, { 0x891A102E719B14CDULL, 0x4E2D64991AFE052DULL } }, /* XSUM_XXH128_testdata[4104] */ + { 1368, 0x000000009E3779B1ULL, { 0x2902AA160AF3F5B8ULL, 0x228517F9D873B740ULL } }, /* XSUM_XXH128_testdata[4105] */ + { 1368, 0x9E3779B185EBCA8DULL, { 0xBDE60050A6A51CFDULL, 0x3FF33D0022FD88E6ULL } }, /* XSUM_XXH128_testdata[4106] */ + { 1369, 0x0000000000000000ULL, { 0xEFB2528D9B81371AULL, 0xB58AA70C704261EAULL } }, /* XSUM_XXH128_testdata[4107] */ + { 1369, 0x000000009E3779B1ULL, { 0x4F5698E2F425DE4DULL, 0x02DE7FE2513F1D92ULL } }, /* XSUM_XXH128_testdata[4108] */ + { 1369, 0x9E3779B185EBCA8DULL, { 0xA3D60B20FFA4D538ULL, 0xEE112E3D7179FC70ULL } }, /* XSUM_XXH128_testdata[4109] */ + { 1370, 0x0000000000000000ULL, { 0x1F1B7AC192DA87BCULL, 0x6E8F2D02B6405DCEULL } }, /* XSUM_XXH128_testdata[4110] */ + { 1370, 0x000000009E3779B1ULL, { 0xCF1EBD40553CD4C1ULL, 0x1DB218E90CF4C830ULL } }, /* XSUM_XXH128_testdata[4111] */ + { 1370, 0x9E3779B185EBCA8DULL, { 0x8960BB3D1F06D6ADULL, 0x0FB60E1FC02B199AULL } }, /* XSUM_XXH128_testdata[4112] */ + { 1371, 0x0000000000000000ULL, { 0x3AC2E3D1D3110DE2ULL, 0xDAE8C26616551593ULL } }, /* XSUM_XXH128_testdata[4113] */ + { 1371, 0x000000009E3779B1ULL, { 0x3EB06B2869F5F5C3ULL, 0x93DA600F89EE39D4ULL } }, /* XSUM_XXH128_testdata[4114] */ + { 1371, 0x9E3779B185EBCA8DULL, { 0xA4984AC23440FCC0ULL, 0xB4E31F44B3EDAF76ULL } }, /* XSUM_XXH128_testdata[4115] */ + { 1372, 0x0000000000000000ULL, { 0xFC287592522AA7EAULL, 0x98CB9D375989E3B6ULL } }, /* XSUM_XXH128_testdata[4116] */ + { 1372, 0x000000009E3779B1ULL, { 0x7C21459CA48249ADULL, 0x7491204D32447329ULL } }, /* XSUM_XXH128_testdata[4117] */ + { 1372, 0x9E3779B185EBCA8DULL, { 0xE8883E3691A64403ULL, 0x940AF34270D46346ULL } }, /* XSUM_XXH128_testdata[4118] */ + { 1373, 0x0000000000000000ULL, { 0x07D5764EFA3C28F8ULL, 0x2DD87FBB7A5FFC80ULL } }, /* XSUM_XXH128_testdata[4119] */ + { 1373, 0x000000009E3779B1ULL, { 0xF89D762D9F407FA6ULL, 0x542AD7034D41B16AULL } }, /* XSUM_XXH128_testdata[4120] */ + { 1373, 0x9E3779B185EBCA8DULL, { 0x63B086ADA02C05EEULL, 0xDE432D720F3B2C23ULL } }, /* XSUM_XXH128_testdata[4121] */ + { 1374, 0x0000000000000000ULL, { 0x692E010AACBBDD83ULL, 0x6B5278D97460E337ULL } }, /* XSUM_XXH128_testdata[4122] */ + { 1374, 0x000000009E3779B1ULL, { 0x5E7333F43B90DF4BULL, 0x1AAC848968045BDBULL } }, /* XSUM_XXH128_testdata[4123] */ + { 1374, 0x9E3779B185EBCA8DULL, { 0x356F67E7E6882972ULL, 0x90AEFC09EC0EA34CULL } }, /* XSUM_XXH128_testdata[4124] */ + { 1375, 0x0000000000000000ULL, { 0x918BCEDA7771D693ULL, 0x7242BE5ED8ED6C15ULL } }, /* XSUM_XXH128_testdata[4125] */ + { 1375, 0x000000009E3779B1ULL, { 0xC6D6C4269DB08329ULL, 0x68BB53C975155B43ULL } }, /* XSUM_XXH128_testdata[4126] */ + { 1375, 0x9E3779B185EBCA8DULL, { 0x27DD289F1FF7E712ULL, 0x5A58DBDEFBD138A6ULL } }, /* XSUM_XXH128_testdata[4127] */ + { 1376, 0x0000000000000000ULL, { 0xF5F2C67F0A407FEFULL, 0x12BDB8630BF43EB8ULL } }, /* XSUM_XXH128_testdata[4128] */ + { 1376, 0x000000009E3779B1ULL, { 0x7A486E7023860190ULL, 0x10E77B13B465F3FFULL } }, /* XSUM_XXH128_testdata[4129] */ + { 1376, 0x9E3779B185EBCA8DULL, { 0x79D4CA65FA84EB33ULL, 0xBF5BF8503DC74E1FULL } }, /* XSUM_XXH128_testdata[4130] */ + { 1377, 0x0000000000000000ULL, { 0x232F5E84CBA74A2BULL, 0xA0FDB05A39D75A92ULL } }, /* XSUM_XXH128_testdata[4131] */ + { 1377, 0x000000009E3779B1ULL, { 0x4DF0448480529E7CULL, 0xA2F92C256EBED4C8ULL } }, /* XSUM_XXH128_testdata[4132] */ + { 1377, 0x9E3779B185EBCA8DULL, { 0x57F9DB3D6629D224ULL, 0x3E683BAFE6FDF29BULL } }, /* XSUM_XXH128_testdata[4133] */ + { 1378, 0x0000000000000000ULL, { 0x18EC462AFF076DF2ULL, 0xCB2CA0C76AA73B30ULL } }, /* XSUM_XXH128_testdata[4134] */ + { 1378, 0x000000009E3779B1ULL, { 0x4B6B39E797D3A546ULL, 0xCBAD2B8943388806ULL } }, /* XSUM_XXH128_testdata[4135] */ + { 1378, 0x9E3779B185EBCA8DULL, { 0x65A838B3EC37187DULL, 0xDF1C857027D2123EULL } }, /* XSUM_XXH128_testdata[4136] */ + { 1379, 0x0000000000000000ULL, { 0x608525D658F939D3ULL, 0x502A2017441B1BC9ULL } }, /* XSUM_XXH128_testdata[4137] */ + { 1379, 0x000000009E3779B1ULL, { 0xA81728482BAE26BBULL, 0xE6085770AE7F8181ULL } }, /* XSUM_XXH128_testdata[4138] */ + { 1379, 0x9E3779B185EBCA8DULL, { 0x788376FB391AB04FULL, 0xB2BCB691E1E8637AULL } }, /* XSUM_XXH128_testdata[4139] */ + { 1380, 0x0000000000000000ULL, { 0x8B3AFE1BAC0FB533ULL, 0x1FC7D20A144B5A28ULL } }, /* XSUM_XXH128_testdata[4140] */ + { 1380, 0x000000009E3779B1ULL, { 0xCF2F703FC4B6C54EULL, 0x38E761705A42D6A4ULL } }, /* XSUM_XXH128_testdata[4141] */ + { 1380, 0x9E3779B185EBCA8DULL, { 0x3298317AA71EF9F9ULL, 0xBC0C5CCBE31DD2A2ULL } }, /* XSUM_XXH128_testdata[4142] */ + { 1381, 0x0000000000000000ULL, { 0xD88FA62E105EB767ULL, 0xE4180BF4C9C9E49FULL } }, /* XSUM_XXH128_testdata[4143] */ + { 1381, 0x000000009E3779B1ULL, { 0x4419E0BC893EE6EDULL, 0xBAEB1C3DC20E0CC6ULL } }, /* XSUM_XXH128_testdata[4144] */ + { 1381, 0x9E3779B185EBCA8DULL, { 0xD537F267D2EF8B65ULL, 0xD3F6E30BF7F9EEEEULL } }, /* XSUM_XXH128_testdata[4145] */ + { 1382, 0x0000000000000000ULL, { 0xDD5FB8861BE2649CULL, 0x976127ABF86407D8ULL } }, /* XSUM_XXH128_testdata[4146] */ + { 1382, 0x000000009E3779B1ULL, { 0x4179CD815A9E0C91ULL, 0x0D397DBCE519D738ULL } }, /* XSUM_XXH128_testdata[4147] */ + { 1382, 0x9E3779B185EBCA8DULL, { 0xA478AC159FA2C385ULL, 0x54FB3E007511C26CULL } }, /* XSUM_XXH128_testdata[4148] */ + { 1383, 0x0000000000000000ULL, { 0x0D9D6E0B91B185EDULL, 0x11F8402B9E89E99BULL } }, /* XSUM_XXH128_testdata[4149] */ + { 1383, 0x000000009E3779B1ULL, { 0x51A5FF01DE16CEE3ULL, 0xD7EC122D7239C8E8ULL } }, /* XSUM_XXH128_testdata[4150] */ + { 1383, 0x9E3779B185EBCA8DULL, { 0xF0EC3D66A74F4B28ULL, 0xFEFEDF2A7EE9A7A3ULL } }, /* XSUM_XXH128_testdata[4151] */ + { 1384, 0x0000000000000000ULL, { 0xC99D8710C21F05EEULL, 0xF1EDE80AA2DA6EBEULL } }, /* XSUM_XXH128_testdata[4152] */ + { 1384, 0x000000009E3779B1ULL, { 0x202BE2E42F43879EULL, 0x7173DEFD003A8563ULL } }, /* XSUM_XXH128_testdata[4153] */ + { 1384, 0x9E3779B185EBCA8DULL, { 0x25CDB598192DF8FCULL, 0xBB51DDF87EAFE648ULL } }, /* XSUM_XXH128_testdata[4154] */ + { 1385, 0x0000000000000000ULL, { 0x439FD60BEA838A0FULL, 0xE479B866B8A3DCA1ULL } }, /* XSUM_XXH128_testdata[4155] */ + { 1385, 0x000000009E3779B1ULL, { 0xEB8467003DED207DULL, 0x9F6B49C1BB908E1DULL } }, /* XSUM_XXH128_testdata[4156] */ + { 1385, 0x9E3779B185EBCA8DULL, { 0xB3A834E9936D2D1AULL, 0x759645B931F0DF13ULL } }, /* XSUM_XXH128_testdata[4157] */ + { 1386, 0x0000000000000000ULL, { 0x880E9297A45F41F0ULL, 0x1A5038720804D64EULL } }, /* XSUM_XXH128_testdata[4158] */ + { 1386, 0x000000009E3779B1ULL, { 0x72D6C933BCA950BAULL, 0x3B119BAF9C3A7937ULL } }, /* XSUM_XXH128_testdata[4159] */ + { 1386, 0x9E3779B185EBCA8DULL, { 0xE0BA11F31B01B255ULL, 0x3037D1D34BA4E180ULL } }, /* XSUM_XXH128_testdata[4160] */ + { 1387, 0x0000000000000000ULL, { 0x7C62397B9BFBB320ULL, 0x60CF00EC8DBB6BBDULL } }, /* XSUM_XXH128_testdata[4161] */ + { 1387, 0x000000009E3779B1ULL, { 0x1FFCF020A7B66041ULL, 0xECD46C2F2EFE84B5ULL } }, /* XSUM_XXH128_testdata[4162] */ + { 1387, 0x9E3779B185EBCA8DULL, { 0x345576A37765439FULL, 0xC74D406413477930ULL } }, /* XSUM_XXH128_testdata[4163] */ + { 1388, 0x0000000000000000ULL, { 0x54D1CEDD46CC5E95ULL, 0xB6B84F0FFA7526CAULL } }, /* XSUM_XXH128_testdata[4164] */ + { 1388, 0x000000009E3779B1ULL, { 0x42B9F4ACE2C1C322ULL, 0x16B67837356B5D9EULL } }, /* XSUM_XXH128_testdata[4165] */ + { 1388, 0x9E3779B185EBCA8DULL, { 0xFCA3CCFDCF6AF513ULL, 0x12A701454A40AF9CULL } }, /* XSUM_XXH128_testdata[4166] */ + { 1389, 0x0000000000000000ULL, { 0x06D8FE21D778AAB9ULL, 0x89208132979FC73EULL } }, /* XSUM_XXH128_testdata[4167] */ + { 1389, 0x000000009E3779B1ULL, { 0x6FCAA45E4775CB8EULL, 0x14E3B89B983785B0ULL } }, /* XSUM_XXH128_testdata[4168] */ + { 1389, 0x9E3779B185EBCA8DULL, { 0xBAA587CD7AE898BBULL, 0x579FE5221D835E5EULL } }, /* XSUM_XXH128_testdata[4169] */ + { 1390, 0x0000000000000000ULL, { 0x892662096E518CC2ULL, 0x88DB8A1ECA0FA9B3ULL } }, /* XSUM_XXH128_testdata[4170] */ + { 1390, 0x000000009E3779B1ULL, { 0x93D5EFA4776CF369ULL, 0xA6987B07BB313134ULL } }, /* XSUM_XXH128_testdata[4171] */ + { 1390, 0x9E3779B185EBCA8DULL, { 0x0E765E19FFE64E7FULL, 0x76299ACA22A0EFAAULL } }, /* XSUM_XXH128_testdata[4172] */ + { 1391, 0x0000000000000000ULL, { 0x7A85690BFD330103ULL, 0xF5E9F1C98C025D30ULL } }, /* XSUM_XXH128_testdata[4173] */ + { 1391, 0x000000009E3779B1ULL, { 0x7B206736C139E89CULL, 0x847FB4259FF60198ULL } }, /* XSUM_XXH128_testdata[4174] */ + { 1391, 0x9E3779B185EBCA8DULL, { 0xC528D0268830BD69ULL, 0x8E0575718DA9B5D5ULL } }, /* XSUM_XXH128_testdata[4175] */ + { 1392, 0x0000000000000000ULL, { 0xA25DB11855B24D5AULL, 0xB65B5A6C96A643E9ULL } }, /* XSUM_XXH128_testdata[4176] */ + { 1392, 0x000000009E3779B1ULL, { 0xC58220DA5214A374ULL, 0x7820285263007A94ULL } }, /* XSUM_XXH128_testdata[4177] */ + { 1392, 0x9E3779B185EBCA8DULL, { 0x21157B53701A3A07ULL, 0x1CBBCBC96264D1D2ULL } }, /* XSUM_XXH128_testdata[4178] */ + { 1393, 0x0000000000000000ULL, { 0x8EE466F3114B1006ULL, 0xF79F2BA48DE942EFULL } }, /* XSUM_XXH128_testdata[4179] */ + { 1393, 0x000000009E3779B1ULL, { 0x7DCF53EC6D6E7C49ULL, 0x07495C7777E42AD4ULL } }, /* XSUM_XXH128_testdata[4180] */ + { 1393, 0x9E3779B185EBCA8DULL, { 0x4711090ED966E57CULL, 0xBAD42D9B7EB8F11EULL } }, /* XSUM_XXH128_testdata[4181] */ + { 1394, 0x0000000000000000ULL, { 0x169F9D539694E361ULL, 0x79595BA11A0F7F41ULL } }, /* XSUM_XXH128_testdata[4182] */ + { 1394, 0x000000009E3779B1ULL, { 0xF9B1315AB4187C26ULL, 0x156063B2CA5BACBBULL } }, /* XSUM_XXH128_testdata[4183] */ + { 1394, 0x9E3779B185EBCA8DULL, { 0xE1962C3129A85215ULL, 0x56F6E96689709CC1ULL } }, /* XSUM_XXH128_testdata[4184] */ + { 1395, 0x0000000000000000ULL, { 0x3CC434DCAF0A0B99ULL, 0xC3244106C2C69465ULL } }, /* XSUM_XXH128_testdata[4185] */ + { 1395, 0x000000009E3779B1ULL, { 0xCFA700E86765846DULL, 0xB67280707846F75CULL } }, /* XSUM_XXH128_testdata[4186] */ + { 1395, 0x9E3779B185EBCA8DULL, { 0xE7E837D0081BA4E0ULL, 0xA20A2CF414459812ULL } }, /* XSUM_XXH128_testdata[4187] */ + { 1396, 0x0000000000000000ULL, { 0x59922D1610ACF94BULL, 0x611C980E4F4566B9ULL } }, /* XSUM_XXH128_testdata[4188] */ + { 1396, 0x000000009E3779B1ULL, { 0xA7AEEE9B76D27F1FULL, 0x2E609BD0ABE61119ULL } }, /* XSUM_XXH128_testdata[4189] */ + { 1396, 0x9E3779B185EBCA8DULL, { 0x11521545078B6367ULL, 0x4140BF1F1C9C22E2ULL } }, /* XSUM_XXH128_testdata[4190] */ + { 1397, 0x0000000000000000ULL, { 0x4BB9F5EFD3033344ULL, 0x5DBBB5A23A739967ULL } }, /* XSUM_XXH128_testdata[4191] */ + { 1397, 0x000000009E3779B1ULL, { 0x3A63ECB79C971A89ULL, 0x94F9B01B493C2F4FULL } }, /* XSUM_XXH128_testdata[4192] */ + { 1397, 0x9E3779B185EBCA8DULL, { 0xEED83CCAAF3788D8ULL, 0x1678E87CAB95A669ULL } }, /* XSUM_XXH128_testdata[4193] */ + { 1398, 0x0000000000000000ULL, { 0xCB23BE297181BCFDULL, 0x368D28394EE59E34ULL } }, /* XSUM_XXH128_testdata[4194] */ + { 1398, 0x000000009E3779B1ULL, { 0x6D1966F4B066B6FFULL, 0x2B87709857061715ULL } }, /* XSUM_XXH128_testdata[4195] */ + { 1398, 0x9E3779B185EBCA8DULL, { 0x69847059506D2C9FULL, 0xDDE295EC89F01A48ULL } }, /* XSUM_XXH128_testdata[4196] */ + { 1399, 0x0000000000000000ULL, { 0x325BB710E26DF0FCULL, 0x53E63C2B3DA53712ULL } }, /* XSUM_XXH128_testdata[4197] */ + { 1399, 0x000000009E3779B1ULL, { 0xF114E159B87E9448ULL, 0xBFA53C4C1A7C7D7BULL } }, /* XSUM_XXH128_testdata[4198] */ + { 1399, 0x9E3779B185EBCA8DULL, { 0xF647B2920BE132BAULL, 0xC1AEF6513879EBA2ULL } }, /* XSUM_XXH128_testdata[4199] */ + { 1400, 0x0000000000000000ULL, { 0x1BFB88704DE4E438ULL, 0xF28E5E30AB3CFD23ULL } }, /* XSUM_XXH128_testdata[4200] */ + { 1400, 0x000000009E3779B1ULL, { 0xEF5FDB657A01C6BDULL, 0x6768413967DCD6F0ULL } }, /* XSUM_XXH128_testdata[4201] */ + { 1400, 0x9E3779B185EBCA8DULL, { 0x20D9F4B075164F01ULL, 0x3A19BBD4188615F2ULL } }, /* XSUM_XXH128_testdata[4202] */ + { 1401, 0x0000000000000000ULL, { 0x6E4007192C7E5477ULL, 0x959C0BA957B26E9AULL } }, /* XSUM_XXH128_testdata[4203] */ + { 1401, 0x000000009E3779B1ULL, { 0x85D53DC84A343E83ULL, 0x335A2F7AD6A549BBULL } }, /* XSUM_XXH128_testdata[4204] */ + { 1401, 0x9E3779B185EBCA8DULL, { 0xA7D1BBA89BDE98DEULL, 0xBBEF57194EC72F5AULL } }, /* XSUM_XXH128_testdata[4205] */ + { 1402, 0x0000000000000000ULL, { 0x793FF88589F05AA2ULL, 0xBA48707357D3EFB5ULL } }, /* XSUM_XXH128_testdata[4206] */ + { 1402, 0x000000009E3779B1ULL, { 0xF64465C189C2854EULL, 0x7B824C7F936814C6ULL } }, /* XSUM_XXH128_testdata[4207] */ + { 1402, 0x9E3779B185EBCA8DULL, { 0xDBA14086CDB9BFE2ULL, 0x853E9C26681E9808ULL } }, /* XSUM_XXH128_testdata[4208] */ + { 1403, 0x0000000000000000ULL, { 0x13CEECC554A7370AULL, 0x13EC15E2A7ECBEC9ULL } }, /* XSUM_XXH128_testdata[4209] */ + { 1403, 0x000000009E3779B1ULL, { 0xFDB8A26EFC673801ULL, 0xA59D42EA57575C38ULL } }, /* XSUM_XXH128_testdata[4210] */ + { 1403, 0x9E3779B185EBCA8DULL, { 0x4E9EAE32CBDB6224ULL, 0x1F6F4B0638732067ULL } }, /* XSUM_XXH128_testdata[4211] */ + { 1404, 0x0000000000000000ULL, { 0xF258680A2E1B12F1ULL, 0xA68EDAA7BE295F04ULL } }, /* XSUM_XXH128_testdata[4212] */ + { 1404, 0x000000009E3779B1ULL, { 0xE46B5B37ECDCF7AEULL, 0xA425BC16C4F581F5ULL } }, /* XSUM_XXH128_testdata[4213] */ + { 1404, 0x9E3779B185EBCA8DULL, { 0x8200673C5037CCABULL, 0x5B24C353BE7E17C4ULL } }, /* XSUM_XXH128_testdata[4214] */ + { 1405, 0x0000000000000000ULL, { 0x141D9483A8195CDBULL, 0x8541132DE52A5EEAULL } }, /* XSUM_XXH128_testdata[4215] */ + { 1405, 0x000000009E3779B1ULL, { 0x37D4B169FD2C7E66ULL, 0x5659AE8E121C9F72ULL } }, /* XSUM_XXH128_testdata[4216] */ + { 1405, 0x9E3779B185EBCA8DULL, { 0xE1A8D72971376B0AULL, 0x2F1891D94BEC63A6ULL } }, /* XSUM_XXH128_testdata[4217] */ + { 1406, 0x0000000000000000ULL, { 0xC4608F1B395D7C61ULL, 0xC454AA48BBDDDAF8ULL } }, /* XSUM_XXH128_testdata[4218] */ + { 1406, 0x000000009E3779B1ULL, { 0x3314AFB6CDC9757CULL, 0x56F7133A9EAEF745ULL } }, /* XSUM_XXH128_testdata[4219] */ + { 1406, 0x9E3779B185EBCA8DULL, { 0x46009F40B052DB04ULL, 0x9CAF8D82FB036765ULL } }, /* XSUM_XXH128_testdata[4220] */ + { 1407, 0x0000000000000000ULL, { 0x921CDB3E8E19798AULL, 0xE5748C0A60301A14ULL } }, /* XSUM_XXH128_testdata[4221] */ + { 1407, 0x000000009E3779B1ULL, { 0x2394E821E5045A54ULL, 0xDD47D314C2D1997DULL } }, /* XSUM_XXH128_testdata[4222] */ + { 1407, 0x9E3779B185EBCA8DULL, { 0xF5AD8F6C0B798283ULL, 0xAA0CA81159459AA2ULL } }, /* XSUM_XXH128_testdata[4223] */ + { 1408, 0x0000000000000000ULL, { 0xF1AA40024272BF80ULL, 0xFD4C98791B4EEFE0ULL } }, /* XSUM_XXH128_testdata[4224] */ + { 1408, 0x000000009E3779B1ULL, { 0xC2BA3AA7E9BD9A82ULL, 0x169634BB1BBD4ABBULL } }, /* XSUM_XXH128_testdata[4225] */ + { 1408, 0x9E3779B185EBCA8DULL, { 0xDE4DF8A29F45B9E0ULL, 0xE2E22CED03A5BDF3ULL } }, /* XSUM_XXH128_testdata[4226] */ + { 1409, 0x0000000000000000ULL, { 0x5C6F59BD9E2B8E96ULL, 0x7F8FD8141791F78BULL } }, /* XSUM_XXH128_testdata[4227] */ + { 1409, 0x000000009E3779B1ULL, { 0x8189EAD8D7C6BEAAULL, 0x621B3FC65503EBCCULL } }, /* XSUM_XXH128_testdata[4228] */ + { 1409, 0x9E3779B185EBCA8DULL, { 0x3358B1D4BE22F75FULL, 0xD32FFFAB0A4BF3C9ULL } }, /* XSUM_XXH128_testdata[4229] */ + { 1410, 0x0000000000000000ULL, { 0xA1CEA58F6C781CC7ULL, 0x7DD0FED1BE798C43ULL } }, /* XSUM_XXH128_testdata[4230] */ + { 1410, 0x000000009E3779B1ULL, { 0x6671361DDF726E67ULL, 0xFE252CA4F790554CULL } }, /* XSUM_XXH128_testdata[4231] */ + { 1410, 0x9E3779B185EBCA8DULL, { 0x2DE90C2DF28E7DFEULL, 0xCD230E70A526822BULL } }, /* XSUM_XXH128_testdata[4232] */ + { 1411, 0x0000000000000000ULL, { 0x8059B60348A48EBFULL, 0x18EB894245E1868BULL } }, /* XSUM_XXH128_testdata[4233] */ + { 1411, 0x000000009E3779B1ULL, { 0x87819651A440A542ULL, 0xB8C16D1D882B0041ULL } }, /* XSUM_XXH128_testdata[4234] */ + { 1411, 0x9E3779B185EBCA8DULL, { 0x8EE711ABBC7D9DC4ULL, 0xC6BEE4FFB6D09744ULL } }, /* XSUM_XXH128_testdata[4235] */ + { 1412, 0x0000000000000000ULL, { 0x2BFDA33D3D40EFF9ULL, 0xFEB0D7901C6096F8ULL } }, /* XSUM_XXH128_testdata[4236] */ + { 1412, 0x000000009E3779B1ULL, { 0xC9DFEDD3C65C33BFULL, 0x80A5867A5EC6B47CULL } }, /* XSUM_XXH128_testdata[4237] */ + { 1412, 0x9E3779B185EBCA8DULL, { 0x3D6A9CD83D92A2F9ULL, 0xEF2DBEDBED4B1B21ULL } }, /* XSUM_XXH128_testdata[4238] */ + { 1413, 0x0000000000000000ULL, { 0x55EFC5AC3A8F3996ULL, 0xDEAC6F9CF93FEDE8ULL } }, /* XSUM_XXH128_testdata[4239] */ + { 1413, 0x000000009E3779B1ULL, { 0x295A98DC1E649976ULL, 0xB820DAC6FC93BE15ULL } }, /* XSUM_XXH128_testdata[4240] */ + { 1413, 0x9E3779B185EBCA8DULL, { 0xD33CDDFDECFC586BULL, 0xF2A03B3418552D68ULL } }, /* XSUM_XXH128_testdata[4241] */ + { 1414, 0x0000000000000000ULL, { 0x00476283A35F00BEULL, 0xDBB2AD68E4F63E46ULL } }, /* XSUM_XXH128_testdata[4242] */ + { 1414, 0x000000009E3779B1ULL, { 0x00291A0E6BC14196ULL, 0x5540D5D8F3CD916DULL } }, /* XSUM_XXH128_testdata[4243] */ + { 1414, 0x9E3779B185EBCA8DULL, { 0xA905C757E0386BB7ULL, 0x1E84AA28AEFD6FF0ULL } }, /* XSUM_XXH128_testdata[4244] */ + { 1415, 0x0000000000000000ULL, { 0x848284B30D19EE3BULL, 0x98AFE128BF6C9C27ULL } }, /* XSUM_XXH128_testdata[4245] */ + { 1415, 0x000000009E3779B1ULL, { 0x791400CBB0CDCB4FULL, 0xEC998C419594AEAAULL } }, /* XSUM_XXH128_testdata[4246] */ + { 1415, 0x9E3779B185EBCA8DULL, { 0x893645A441AFD7B9ULL, 0xCF424B9C30581B11ULL } }, /* XSUM_XXH128_testdata[4247] */ + { 1416, 0x0000000000000000ULL, { 0x2EB8DF3D270569EEULL, 0xF24B95B057B50AD0ULL } }, /* XSUM_XXH128_testdata[4248] */ + { 1416, 0x000000009E3779B1ULL, { 0xC79B0C7B8F4D3FC8ULL, 0x8293A869E1442278ULL } }, /* XSUM_XXH128_testdata[4249] */ + { 1416, 0x9E3779B185EBCA8DULL, { 0xDA7F2D825BBACCE7ULL, 0xCE2FD2584033C26FULL } }, /* XSUM_XXH128_testdata[4250] */ + { 1417, 0x0000000000000000ULL, { 0x15E3A46C9BCC31B7ULL, 0x0EED8FFA20E62774ULL } }, /* XSUM_XXH128_testdata[4251] */ + { 1417, 0x000000009E3779B1ULL, { 0x7395845DD113068DULL, 0x588A6EF8BA2E9FABULL } }, /* XSUM_XXH128_testdata[4252] */ + { 1417, 0x9E3779B185EBCA8DULL, { 0x606BFE3757B52831ULL, 0x4ACCC1C88056CF5CULL } }, /* XSUM_XXH128_testdata[4253] */ + { 1418, 0x0000000000000000ULL, { 0x1940C0475A90665AULL, 0xB39029EDB7F92FCBULL } }, /* XSUM_XXH128_testdata[4254] */ + { 1418, 0x000000009E3779B1ULL, { 0xCF7F7DDA8E3BBA53ULL, 0x932E22B105EBAD90ULL } }, /* XSUM_XXH128_testdata[4255] */ + { 1418, 0x9E3779B185EBCA8DULL, { 0xD070C303B5A0F467ULL, 0xF1F81DC7559BFBFAULL } }, /* XSUM_XXH128_testdata[4256] */ + { 1419, 0x0000000000000000ULL, { 0x85ADBC4FCC10049EULL, 0xD4FC73526A3680EEULL } }, /* XSUM_XXH128_testdata[4257] */ + { 1419, 0x000000009E3779B1ULL, { 0x25D8119C5DDAC8D2ULL, 0x2E8526FEB22A7D33ULL } }, /* XSUM_XXH128_testdata[4258] */ + { 1419, 0x9E3779B185EBCA8DULL, { 0xD6838508DE64D4D3ULL, 0x8A3C7B7C1995EACFULL } }, /* XSUM_XXH128_testdata[4259] */ + { 1420, 0x0000000000000000ULL, { 0xB02A4A4C485139EBULL, 0x47C27C79FAC5E9A3ULL } }, /* XSUM_XXH128_testdata[4260] */ + { 1420, 0x000000009E3779B1ULL, { 0x9AA4286977A4BFCEULL, 0xBD872BC0D25053DEULL } }, /* XSUM_XXH128_testdata[4261] */ + { 1420, 0x9E3779B185EBCA8DULL, { 0x038FC5270157BE6CULL, 0x0620238AD3688687ULL } }, /* XSUM_XXH128_testdata[4262] */ + { 1421, 0x0000000000000000ULL, { 0x80E5B14774A6E3DEULL, 0x87654FAF8256CD62ULL } }, /* XSUM_XXH128_testdata[4263] */ + { 1421, 0x000000009E3779B1ULL, { 0x079C32C4F872595BULL, 0xD830CF9DADEF7A55ULL } }, /* XSUM_XXH128_testdata[4264] */ + { 1421, 0x9E3779B185EBCA8DULL, { 0xF63639714BB765F8ULL, 0x083B39F7FE75D584ULL } }, /* XSUM_XXH128_testdata[4265] */ + { 1422, 0x0000000000000000ULL, { 0x940D6F8AFC3E5FE2ULL, 0x44DBCF04518D68D8ULL } }, /* XSUM_XXH128_testdata[4266] */ + { 1422, 0x000000009E3779B1ULL, { 0x0EB9F13FA69F6616ULL, 0xA250A281056F5B91ULL } }, /* XSUM_XXH128_testdata[4267] */ + { 1422, 0x9E3779B185EBCA8DULL, { 0xC994312948C52D3EULL, 0xF500B170A3FCAE3FULL } }, /* XSUM_XXH128_testdata[4268] */ + { 1423, 0x0000000000000000ULL, { 0x8FCDA6A6E0DC7A52ULL, 0x86AAA89B1B7FC72FULL } }, /* XSUM_XXH128_testdata[4269] */ + { 1423, 0x000000009E3779B1ULL, { 0x350A04E32CF6BB43ULL, 0x01B0CFE162F0CB0DULL } }, /* XSUM_XXH128_testdata[4270] */ + { 1423, 0x9E3779B185EBCA8DULL, { 0xE0BA243293EFD78AULL, 0x1294F3A2D33EFCAAULL } }, /* XSUM_XXH128_testdata[4271] */ + { 1424, 0x0000000000000000ULL, { 0xEAE22F34BD769AB7ULL, 0x97EA4AA2A78BBDD9ULL } }, /* XSUM_XXH128_testdata[4272] */ + { 1424, 0x000000009E3779B1ULL, { 0x6A77C3070ABBDECFULL, 0xFEF91EA99335B10DULL } }, /* XSUM_XXH128_testdata[4273] */ + { 1424, 0x9E3779B185EBCA8DULL, { 0x058F19EB59C50BC2ULL, 0x92FA92EE4CA65CE4ULL } }, /* XSUM_XXH128_testdata[4274] */ + { 1425, 0x0000000000000000ULL, { 0xC722483D6C8D78F2ULL, 0x2C7959E29A19BD2FULL } }, /* XSUM_XXH128_testdata[4275] */ + { 1425, 0x000000009E3779B1ULL, { 0x97CEB5947C6740E9ULL, 0x2786EEE5A219D159ULL } }, /* XSUM_XXH128_testdata[4276] */ + { 1425, 0x9E3779B185EBCA8DULL, { 0xC3E70A47E1740CDAULL, 0x1B220CF22D7D994CULL } }, /* XSUM_XXH128_testdata[4277] */ + { 1426, 0x0000000000000000ULL, { 0xC3ED57E85DFC3DCFULL, 0xAA52CF6107382FFCULL } }, /* XSUM_XXH128_testdata[4278] */ + { 1426, 0x000000009E3779B1ULL, { 0x65597D903F0ACB98ULL, 0xCEC5D3A69B02BD3FULL } }, /* XSUM_XXH128_testdata[4279] */ + { 1426, 0x9E3779B185EBCA8DULL, { 0x8508106B8B812CA9ULL, 0xF6FEDE9805F33034ULL } }, /* XSUM_XXH128_testdata[4280] */ + { 1427, 0x0000000000000000ULL, { 0x3C8B0BE1563E4FC6ULL, 0x4E98CC0B92102A85ULL } }, /* XSUM_XXH128_testdata[4281] */ + { 1427, 0x000000009E3779B1ULL, { 0xC150C26D84297349ULL, 0x7F2D35BB1A00AFF3ULL } }, /* XSUM_XXH128_testdata[4282] */ + { 1427, 0x9E3779B185EBCA8DULL, { 0x0479E1F1A517E19DULL, 0xF02ADC6B9394604EULL } }, /* XSUM_XXH128_testdata[4283] */ + { 1428, 0x0000000000000000ULL, { 0x63A69B05FBCC9402ULL, 0xC75CEFF6E21E68E9ULL } }, /* XSUM_XXH128_testdata[4284] */ + { 1428, 0x000000009E3779B1ULL, { 0x8B6DA5341C06164EULL, 0x8A1049120D35E90FULL } }, /* XSUM_XXH128_testdata[4285] */ + { 1428, 0x9E3779B185EBCA8DULL, { 0xE7F613868AA95648ULL, 0xE222D403120030A1ULL } }, /* XSUM_XXH128_testdata[4286] */ + { 1429, 0x0000000000000000ULL, { 0x21EBCAFFD57F2956ULL, 0xB601824AE6F6C766ULL } }, /* XSUM_XXH128_testdata[4287] */ + { 1429, 0x000000009E3779B1ULL, { 0x787840C2D23063C8ULL, 0x894D3CEDB4D06990ULL } }, /* XSUM_XXH128_testdata[4288] */ + { 1429, 0x9E3779B185EBCA8DULL, { 0x2447CC428E1293DCULL, 0x62F09396BADE53E9ULL } }, /* XSUM_XXH128_testdata[4289] */ + { 1430, 0x0000000000000000ULL, { 0x5E104F68A70661BEULL, 0xB62AE732167AB6DEULL } }, /* XSUM_XXH128_testdata[4290] */ + { 1430, 0x000000009E3779B1ULL, { 0xBBC2B093B332A124ULL, 0x2E8FF7385B2FF66FULL } }, /* XSUM_XXH128_testdata[4291] */ + { 1430, 0x9E3779B185EBCA8DULL, { 0x393522B30920D796ULL, 0xC6DEDC45B0E3086BULL } }, /* XSUM_XXH128_testdata[4292] */ + { 1431, 0x0000000000000000ULL, { 0x2B6669B122112FF1ULL, 0x5C09731BD27145E5ULL } }, /* XSUM_XXH128_testdata[4293] */ + { 1431, 0x000000009E3779B1ULL, { 0xDA4F49EBBBA9F394ULL, 0x7CE87F503D78FDE6ULL } }, /* XSUM_XXH128_testdata[4294] */ + { 1431, 0x9E3779B185EBCA8DULL, { 0xC3567F2F7E4629AEULL, 0x9C3DE16E3BA8B8CEULL } }, /* XSUM_XXH128_testdata[4295] */ + { 1432, 0x0000000000000000ULL, { 0x03CC3AFF607E56B6ULL, 0x7C3F5F6AE95E4261ULL } }, /* XSUM_XXH128_testdata[4296] */ + { 1432, 0x000000009E3779B1ULL, { 0x6165AD709130EB2CULL, 0xF19AED3ABA798F6DULL } }, /* XSUM_XXH128_testdata[4297] */ + { 1432, 0x9E3779B185EBCA8DULL, { 0xB1644A59218014A3ULL, 0x3E7768B32C95DA9CULL } }, /* XSUM_XXH128_testdata[4298] */ + { 1433, 0x0000000000000000ULL, { 0xED897754BF1BB643ULL, 0x7343562398E5AE31ULL } }, /* XSUM_XXH128_testdata[4299] */ + { 1433, 0x000000009E3779B1ULL, { 0xE293D35F1767F98FULL, 0xD92243BA612E5C72ULL } }, /* XSUM_XXH128_testdata[4300] */ + { 1433, 0x9E3779B185EBCA8DULL, { 0x89AC2C7514B7094EULL, 0xD6DE5F1DC1EC9FB7ULL } }, /* XSUM_XXH128_testdata[4301] */ + { 1434, 0x0000000000000000ULL, { 0x1E6146A8C2663D38ULL, 0xE8A3FA27FAF6F7CFULL } }, /* XSUM_XXH128_testdata[4302] */ + { 1434, 0x000000009E3779B1ULL, { 0xD16727348329314DULL, 0x2BB4D419F830683CULL } }, /* XSUM_XXH128_testdata[4303] */ + { 1434, 0x9E3779B185EBCA8DULL, { 0x104E86E354C91BAAULL, 0xE5049854966B37BBULL } }, /* XSUM_XXH128_testdata[4304] */ + { 1435, 0x0000000000000000ULL, { 0xEA4A52BF4A45BF2AULL, 0x012BE6E6DF7C4601ULL } }, /* XSUM_XXH128_testdata[4305] */ + { 1435, 0x000000009E3779B1ULL, { 0x2FE68B3E2CCA9737ULL, 0x46FB9A1A53389E7AULL } }, /* XSUM_XXH128_testdata[4306] */ + { 1435, 0x9E3779B185EBCA8DULL, { 0x32A2D9C12A144029ULL, 0xC6C7DCDDDF6F5A84ULL } }, /* XSUM_XXH128_testdata[4307] */ + { 1436, 0x0000000000000000ULL, { 0x72EE45F76D09715DULL, 0xA96754711151A8BDULL } }, /* XSUM_XXH128_testdata[4308] */ + { 1436, 0x000000009E3779B1ULL, { 0x59D1FB0F9BDEBB83ULL, 0x415AC9558E540B63ULL } }, /* XSUM_XXH128_testdata[4309] */ + { 1436, 0x9E3779B185EBCA8DULL, { 0x63127F6A73DC254CULL, 0xA678AC39A9C88D83ULL } }, /* XSUM_XXH128_testdata[4310] */ + { 1437, 0x0000000000000000ULL, { 0x06C24FB6DF4AB655ULL, 0xA98C62CC0EB6AEFEULL } }, /* XSUM_XXH128_testdata[4311] */ + { 1437, 0x000000009E3779B1ULL, { 0x3A5739C051F2B0F9ULL, 0x1FDE36F5464EE5BFULL } }, /* XSUM_XXH128_testdata[4312] */ + { 1437, 0x9E3779B185EBCA8DULL, { 0xA82117607BBF2E21ULL, 0x713E76D8098C3631ULL } }, /* XSUM_XXH128_testdata[4313] */ + { 1438, 0x0000000000000000ULL, { 0xCAC79B306F1064CDULL, 0x9AB14ECA75E52D7AULL } }, /* XSUM_XXH128_testdata[4314] */ + { 1438, 0x000000009E3779B1ULL, { 0xAABE99E7E0D23913ULL, 0xBB324ED96D3595C6ULL } }, /* XSUM_XXH128_testdata[4315] */ + { 1438, 0x9E3779B185EBCA8DULL, { 0x312B5316313F08DCULL, 0xF118B8A74476AF30ULL } }, /* XSUM_XXH128_testdata[4316] */ + { 1439, 0x0000000000000000ULL, { 0xE3602478268DB39BULL, 0x87AA5BBEEC73A4D8ULL } }, /* XSUM_XXH128_testdata[4317] */ + { 1439, 0x000000009E3779B1ULL, { 0x8359A18F17F4F36DULL, 0xE03BF7089CC64E4FULL } }, /* XSUM_XXH128_testdata[4318] */ + { 1439, 0x9E3779B185EBCA8DULL, { 0xF9E83E68AA8FC5BDULL, 0xB5D9C749DEE97595ULL } }, /* XSUM_XXH128_testdata[4319] */ + { 1440, 0x0000000000000000ULL, { 0xD7934FC97AB126FFULL, 0x84A7D8D782899BDDULL } }, /* XSUM_XXH128_testdata[4320] */ + { 1440, 0x000000009E3779B1ULL, { 0xBE7390D5AD285CDBULL, 0x0AA026031229A055ULL } }, /* XSUM_XXH128_testdata[4321] */ + { 1440, 0x9E3779B185EBCA8DULL, { 0x3F08BAC07209501EULL, 0x305785EBCD56C59CULL } }, /* XSUM_XXH128_testdata[4322] */ + { 1441, 0x0000000000000000ULL, { 0xFCBAA4F5A7241C67ULL, 0x1393859BBB1BB9B7ULL } }, /* XSUM_XXH128_testdata[4323] */ + { 1441, 0x000000009E3779B1ULL, { 0x248556380E8BF43FULL, 0xE05BE9D47D9D1268ULL } }, /* XSUM_XXH128_testdata[4324] */ + { 1441, 0x9E3779B185EBCA8DULL, { 0xD94ED4BAB6EA7453ULL, 0xFD372CB096935AF2ULL } }, /* XSUM_XXH128_testdata[4325] */ + { 1442, 0x0000000000000000ULL, { 0xE76C27C6CA4BE8BEULL, 0x9A378FB1506C679FULL } }, /* XSUM_XXH128_testdata[4326] */ + { 1442, 0x000000009E3779B1ULL, { 0xFD766E6F6B703278ULL, 0x9AFDE9B6C3FDA57CULL } }, /* XSUM_XXH128_testdata[4327] */ + { 1442, 0x9E3779B185EBCA8DULL, { 0xAAE2ECC4A650576DULL, 0x867D56D5D1FFAE7AULL } }, /* XSUM_XXH128_testdata[4328] */ + { 1443, 0x0000000000000000ULL, { 0xE21B11C1BBEF493BULL, 0xD06B1253F67859B9ULL } }, /* XSUM_XXH128_testdata[4329] */ + { 1443, 0x000000009E3779B1ULL, { 0xDBFB5DAC64A90271ULL, 0x67F7346ADEEE7A65ULL } }, /* XSUM_XXH128_testdata[4330] */ + { 1443, 0x9E3779B185EBCA8DULL, { 0x7F0A0CA77337B6DDULL, 0x3823DFAE868E4D1DULL } }, /* XSUM_XXH128_testdata[4331] */ + { 1444, 0x0000000000000000ULL, { 0xED46566D24575C36ULL, 0x87F6E9A422D53201ULL } }, /* XSUM_XXH128_testdata[4332] */ + { 1444, 0x000000009E3779B1ULL, { 0x7B7833B3D9A18ECCULL, 0x6AD23F41A90B06E2ULL } }, /* XSUM_XXH128_testdata[4333] */ + { 1444, 0x9E3779B185EBCA8DULL, { 0x9875F54079C58BE0ULL, 0x710F2E888A58C198ULL } }, /* XSUM_XXH128_testdata[4334] */ + { 1445, 0x0000000000000000ULL, { 0x3021E8B6EE5E412DULL, 0x51F68859D528E771ULL } }, /* XSUM_XXH128_testdata[4335] */ + { 1445, 0x000000009E3779B1ULL, { 0x4143BBA3FFFACFF4ULL, 0x4021B0A297DFF463ULL } }, /* XSUM_XXH128_testdata[4336] */ + { 1445, 0x9E3779B185EBCA8DULL, { 0x51590DA933C29CE4ULL, 0x629575B6F3167A7AULL } }, /* XSUM_XXH128_testdata[4337] */ + { 1446, 0x0000000000000000ULL, { 0x5DAC63789A9A5CF8ULL, 0xD1AEB819E4135DE7ULL } }, /* XSUM_XXH128_testdata[4338] */ + { 1446, 0x000000009E3779B1ULL, { 0xC2D4DEA032CA2CC3ULL, 0x74015AC8D1C0EABCULL } }, /* XSUM_XXH128_testdata[4339] */ + { 1446, 0x9E3779B185EBCA8DULL, { 0xD25978C5B20C501AULL, 0xB90E2404D4C439E8ULL } }, /* XSUM_XXH128_testdata[4340] */ + { 1447, 0x0000000000000000ULL, { 0x2623F8B9FA9144FFULL, 0x6A2DCE9B7EE5B3C6ULL } }, /* XSUM_XXH128_testdata[4341] */ + { 1447, 0x000000009E3779B1ULL, { 0xF6EA2827F5B6F8D8ULL, 0x80027529184735A8ULL } }, /* XSUM_XXH128_testdata[4342] */ + { 1447, 0x9E3779B185EBCA8DULL, { 0x4A970D000F478705ULL, 0xCCCEA803DE3F0D83ULL } }, /* XSUM_XXH128_testdata[4343] */ + { 1448, 0x0000000000000000ULL, { 0x4D76CE7CF9FBAB5CULL, 0x6728252C9055C4F4ULL } }, /* XSUM_XXH128_testdata[4344] */ + { 1448, 0x000000009E3779B1ULL, { 0x2E004E243B607A42ULL, 0x08838844ECB3C008ULL } }, /* XSUM_XXH128_testdata[4345] */ + { 1448, 0x9E3779B185EBCA8DULL, { 0x00DB1D4D082EC71AULL, 0xF761091BBEF7C08DULL } }, /* XSUM_XXH128_testdata[4346] */ + { 1449, 0x0000000000000000ULL, { 0x06688FEC0772674DULL, 0x881BFFF1DD6BA7FCULL } }, /* XSUM_XXH128_testdata[4347] */ + { 1449, 0x000000009E3779B1ULL, { 0x4A57DB21E21E2E86ULL, 0x66339AB5D36F64EDULL } }, /* XSUM_XXH128_testdata[4348] */ + { 1449, 0x9E3779B185EBCA8DULL, { 0xE988345D128FC527ULL, 0x92868270ECABB764ULL } }, /* XSUM_XXH128_testdata[4349] */ + { 1450, 0x0000000000000000ULL, { 0xF4E59132522B56FDULL, 0xB0A3DEFE55FE786AULL } }, /* XSUM_XXH128_testdata[4350] */ + { 1450, 0x000000009E3779B1ULL, { 0xA9ECA973AA08D288ULL, 0x116F6BEDDE5B3258ULL } }, /* XSUM_XXH128_testdata[4351] */ + { 1450, 0x9E3779B185EBCA8DULL, { 0xD8D4B2687F22F6A9ULL, 0xB6B5B39570B1129FULL } }, /* XSUM_XXH128_testdata[4352] */ + { 1451, 0x0000000000000000ULL, { 0x54462278DA1DA4B8ULL, 0xC31A6E2BA10834B9ULL } }, /* XSUM_XXH128_testdata[4353] */ + { 1451, 0x000000009E3779B1ULL, { 0x012AE75C359EAF49ULL, 0xF83B2028C68F26E5ULL } }, /* XSUM_XXH128_testdata[4354] */ + { 1451, 0x9E3779B185EBCA8DULL, { 0x2224F0ABB8490DF3ULL, 0xF11928DA2AA79C66ULL } }, /* XSUM_XXH128_testdata[4355] */ + { 1452, 0x0000000000000000ULL, { 0xB3A19773EEAC82A7ULL, 0xFAC7938AD63764E0ULL } }, /* XSUM_XXH128_testdata[4356] */ + { 1452, 0x000000009E3779B1ULL, { 0x9090D7FC0DD5FEA3ULL, 0x8EF85B6DF55FDF79ULL } }, /* XSUM_XXH128_testdata[4357] */ + { 1452, 0x9E3779B185EBCA8DULL, { 0xB99C5F0B89671EA4ULL, 0x5EAC0F313702BF49ULL } }, /* XSUM_XXH128_testdata[4358] */ + { 1453, 0x0000000000000000ULL, { 0x1AFB91A51D617EEEULL, 0xDD92B0C2C21D463CULL } }, /* XSUM_XXH128_testdata[4359] */ + { 1453, 0x000000009E3779B1ULL, { 0xA0A243584991C569ULL, 0x7DA597662D2EAE27ULL } }, /* XSUM_XXH128_testdata[4360] */ + { 1453, 0x9E3779B185EBCA8DULL, { 0xD21CE74CA12BBD50ULL, 0xA30F24C8C1145023ULL } }, /* XSUM_XXH128_testdata[4361] */ + { 1454, 0x0000000000000000ULL, { 0xCE4632E7365279ADULL, 0x7DA084E7E819CDB3ULL } }, /* XSUM_XXH128_testdata[4362] */ + { 1454, 0x000000009E3779B1ULL, { 0xD343BC11A99FA152ULL, 0xC95EA22BD0D5326EULL } }, /* XSUM_XXH128_testdata[4363] */ + { 1454, 0x9E3779B185EBCA8DULL, { 0x12B4779302392D0BULL, 0x51AF91578B50115AULL } }, /* XSUM_XXH128_testdata[4364] */ + { 1455, 0x0000000000000000ULL, { 0xC29098E5A3A25E75ULL, 0x40C46FB42ED84CBCULL } }, /* XSUM_XXH128_testdata[4365] */ + { 1455, 0x000000009E3779B1ULL, { 0x853C35F68E6C0D3FULL, 0xD447AF9FA3CC7847ULL } }, /* XSUM_XXH128_testdata[4366] */ + { 1455, 0x9E3779B185EBCA8DULL, { 0x2D375331BC9B3F24ULL, 0xBB722682F6333A68ULL } }, /* XSUM_XXH128_testdata[4367] */ + { 1456, 0x0000000000000000ULL, { 0x5FFB14BD3D509415ULL, 0xF2A5D551A3AF1C0DULL } }, /* XSUM_XXH128_testdata[4368] */ + { 1456, 0x000000009E3779B1ULL, { 0x29DFF253236412C4ULL, 0x391D3F27F01A3FF7ULL } }, /* XSUM_XXH128_testdata[4369] */ + { 1456, 0x9E3779B185EBCA8DULL, { 0xA8D557A5145B471BULL, 0xA6219A7486586EE2ULL } }, /* XSUM_XXH128_testdata[4370] */ + { 1457, 0x0000000000000000ULL, { 0x85D5CCCE24F8797AULL, 0xB5A3F77B8BA85493ULL } }, /* XSUM_XXH128_testdata[4371] */ + { 1457, 0x000000009E3779B1ULL, { 0xDFB3872FDA26F86FULL, 0x90B4491F2679306EULL } }, /* XSUM_XXH128_testdata[4372] */ + { 1457, 0x9E3779B185EBCA8DULL, { 0x0668F51F65318559ULL, 0xC5C8A25E7EC2E789ULL } }, /* XSUM_XXH128_testdata[4373] */ + { 1458, 0x0000000000000000ULL, { 0xBDC9FBA2A2AE6050ULL, 0xF490B7BA862844C1ULL } }, /* XSUM_XXH128_testdata[4374] */ + { 1458, 0x000000009E3779B1ULL, { 0xF85E26A2978F5EB8ULL, 0x62DD33ED0046863CULL } }, /* XSUM_XXH128_testdata[4375] */ + { 1458, 0x9E3779B185EBCA8DULL, { 0x16A4C29F94CA66EAULL, 0x70C0A710397196E3ULL } }, /* XSUM_XXH128_testdata[4376] */ + { 1459, 0x0000000000000000ULL, { 0x811A9CBAED802D8BULL, 0x8C47C1EDF650C62BULL } }, /* XSUM_XXH128_testdata[4377] */ + { 1459, 0x000000009E3779B1ULL, { 0x03B40D9AEB441E9DULL, 0x177A962F8545DC00ULL } }, /* XSUM_XXH128_testdata[4378] */ + { 1459, 0x9E3779B185EBCA8DULL, { 0xB6E74313E859C393ULL, 0x96F3AF9C8F2A1CB9ULL } }, /* XSUM_XXH128_testdata[4379] */ + { 1460, 0x0000000000000000ULL, { 0x6AD8A4148AC21A54ULL, 0xD71628E7FFE083A7ULL } }, /* XSUM_XXH128_testdata[4380] */ + { 1460, 0x000000009E3779B1ULL, { 0x41472F4F8A9BE290ULL, 0xF59E3231BFA816B3ULL } }, /* XSUM_XXH128_testdata[4381] */ + { 1460, 0x9E3779B185EBCA8DULL, { 0x149507C74DC85025ULL, 0x553494C745020CDEULL } }, /* XSUM_XXH128_testdata[4382] */ + { 1461, 0x0000000000000000ULL, { 0xFFBADF33A137B1A5ULL, 0xA5999C8A10801B9AULL } }, /* XSUM_XXH128_testdata[4383] */ + { 1461, 0x000000009E3779B1ULL, { 0x8677AAC46D92F307ULL, 0x24319D03101CC339ULL } }, /* XSUM_XXH128_testdata[4384] */ + { 1461, 0x9E3779B185EBCA8DULL, { 0xE484358F190B97ABULL, 0xEE58A05BFA5DCE00ULL } }, /* XSUM_XXH128_testdata[4385] */ + { 1462, 0x0000000000000000ULL, { 0x30F78921C660D6C9ULL, 0xA7E841328F188336ULL } }, /* XSUM_XXH128_testdata[4386] */ + { 1462, 0x000000009E3779B1ULL, { 0xD6E5BABC9689B023ULL, 0xE5CFA2C360969535ULL } }, /* XSUM_XXH128_testdata[4387] */ + { 1462, 0x9E3779B185EBCA8DULL, { 0xD854E89102D7F820ULL, 0x53BEA06E58C1D264ULL } }, /* XSUM_XXH128_testdata[4388] */ + { 1463, 0x0000000000000000ULL, { 0x979DD668D22ACD1BULL, 0xBE82B3ED00D10013ULL } }, /* XSUM_XXH128_testdata[4389] */ + { 1463, 0x000000009E3779B1ULL, { 0xBE913FA421941A79ULL, 0x05B5C50C4E2DCE97ULL } }, /* XSUM_XXH128_testdata[4390] */ + { 1463, 0x9E3779B185EBCA8DULL, { 0x84F358112A7A9A9DULL, 0x3926C7EB79A36FC1ULL } }, /* XSUM_XXH128_testdata[4391] */ + { 1464, 0x0000000000000000ULL, { 0xF5016DB3AE992C23ULL, 0x9B5FA5578DFE2EC6ULL } }, /* XSUM_XXH128_testdata[4392] */ + { 1464, 0x000000009E3779B1ULL, { 0x24EC254C97820B45ULL, 0xB59EDE5760FA7A05ULL } }, /* XSUM_XXH128_testdata[4393] */ + { 1464, 0x9E3779B185EBCA8DULL, { 0xC7BEAD8B36AFD2A1ULL, 0xE10B3ABB3AC8A454ULL } }, /* XSUM_XXH128_testdata[4394] */ + { 1465, 0x0000000000000000ULL, { 0x7EB14336702690E8ULL, 0x61009D011DB15D8EULL } }, /* XSUM_XXH128_testdata[4395] */ + { 1465, 0x000000009E3779B1ULL, { 0x565E4A62F4C3CE22ULL, 0xEA0405BDE907C5F8ULL } }, /* XSUM_XXH128_testdata[4396] */ + { 1465, 0x9E3779B185EBCA8DULL, { 0x508C9253021A59B7ULL, 0xFC1F28F97A39201FULL } }, /* XSUM_XXH128_testdata[4397] */ + { 1466, 0x0000000000000000ULL, { 0x2892C34695634315ULL, 0x868FEEB71006A169ULL } }, /* XSUM_XXH128_testdata[4398] */ + { 1466, 0x000000009E3779B1ULL, { 0x09B5074DEF8F5783ULL, 0x13BE3059E23A3BB0ULL } }, /* XSUM_XXH128_testdata[4399] */ + { 1466, 0x9E3779B185EBCA8DULL, { 0x6C4447F74073B981ULL, 0x097EC4008903B6C2ULL } }, /* XSUM_XXH128_testdata[4400] */ + { 1467, 0x0000000000000000ULL, { 0x293047331A699254ULL, 0xEE50A4050E22D8B0ULL } }, /* XSUM_XXH128_testdata[4401] */ + { 1467, 0x000000009E3779B1ULL, { 0xDADC005833152900ULL, 0xB7B8AA301F6CAD3BULL } }, /* XSUM_XXH128_testdata[4402] */ + { 1467, 0x9E3779B185EBCA8DULL, { 0xA5165A4043BA66A9ULL, 0x9C99DE4435B87B16ULL } }, /* XSUM_XXH128_testdata[4403] */ + { 1468, 0x0000000000000000ULL, { 0xE4DC1418E120908CULL, 0x1585CF74D395438FULL } }, /* XSUM_XXH128_testdata[4404] */ + { 1468, 0x000000009E3779B1ULL, { 0xF3D373CDC3B312D2ULL, 0x5C458B931409171DULL } }, /* XSUM_XXH128_testdata[4405] */ + { 1468, 0x9E3779B185EBCA8DULL, { 0x0DC5731C7B6AD8D0ULL, 0x4E18C2093B55FDCFULL } }, /* XSUM_XXH128_testdata[4406] */ + { 1469, 0x0000000000000000ULL, { 0x4642D4D698A17F79ULL, 0x4DD9BFA2213146A2ULL } }, /* XSUM_XXH128_testdata[4407] */ + { 1469, 0x000000009E3779B1ULL, { 0xB50841F865EEB6F9ULL, 0xF7F0B46D8C332267ULL } }, /* XSUM_XXH128_testdata[4408] */ + { 1469, 0x9E3779B185EBCA8DULL, { 0xD8AF9E9DE8B28A4FULL, 0xB151C84353D1DC9EULL } }, /* XSUM_XXH128_testdata[4409] */ + { 1470, 0x0000000000000000ULL, { 0xCB98A643075C06C9ULL, 0xCD40308CD6169031ULL } }, /* XSUM_XXH128_testdata[4410] */ + { 1470, 0x000000009E3779B1ULL, { 0x83CE016CE740632FULL, 0x4190201480DCD7ADULL } }, /* XSUM_XXH128_testdata[4411] */ + { 1470, 0x9E3779B185EBCA8DULL, { 0x5DF1BAB3FEF00B22ULL, 0xBAF2E867AA518DBFULL } }, /* XSUM_XXH128_testdata[4412] */ + { 1471, 0x0000000000000000ULL, { 0x79B1BB9B9D6BE112ULL, 0x45D8AE3FC082686AULL } }, /* XSUM_XXH128_testdata[4413] */ + { 1471, 0x000000009E3779B1ULL, { 0x413CF3FBCC052C44ULL, 0xAB6B64494D2E86B0ULL } }, /* XSUM_XXH128_testdata[4414] */ + { 1471, 0x9E3779B185EBCA8DULL, { 0x19B0A6B12B2D48FFULL, 0x89E40BA64A1C09DEULL } }, /* XSUM_XXH128_testdata[4415] */ + { 1472, 0x0000000000000000ULL, { 0x74BC4C2C12AC495EULL, 0x3A2731BDD424EB9EULL } }, /* XSUM_XXH128_testdata[4416] */ + { 1472, 0x000000009E3779B1ULL, { 0x61894BCD6D784328ULL, 0x6A4E56166216B916ULL } }, /* XSUM_XXH128_testdata[4417] */ + { 1472, 0x9E3779B185EBCA8DULL, { 0x12B583A1EA56608DULL, 0xDFB69B44852511B4ULL } }, /* XSUM_XXH128_testdata[4418] */ + { 1473, 0x0000000000000000ULL, { 0xE051FE60AEDCF9AEULL, 0xE4328CE1C5566558ULL } }, /* XSUM_XXH128_testdata[4419] */ + { 1473, 0x000000009E3779B1ULL, { 0x78AC7ACB096ADB30ULL, 0x460E89123CB6C762ULL } }, /* XSUM_XXH128_testdata[4420] */ + { 1473, 0x9E3779B185EBCA8DULL, { 0x6C18643991DD1604ULL, 0x66D0D37C71B14DF2ULL } }, /* XSUM_XXH128_testdata[4421] */ + { 1474, 0x0000000000000000ULL, { 0x09003EF11C39F08DULL, 0x6081105251A28702ULL } }, /* XSUM_XXH128_testdata[4422] */ + { 1474, 0x000000009E3779B1ULL, { 0x407D3FEE5C6C32C0ULL, 0xCAE0572E490AA350ULL } }, /* XSUM_XXH128_testdata[4423] */ + { 1474, 0x9E3779B185EBCA8DULL, { 0xF0ED526263798652ULL, 0xF6606EBC20465B57ULL } }, /* XSUM_XXH128_testdata[4424] */ + { 1475, 0x0000000000000000ULL, { 0x9936DBC1FDD89AE9ULL, 0xCF9F829ACBA843C2ULL } }, /* XSUM_XXH128_testdata[4425] */ + { 1475, 0x000000009E3779B1ULL, { 0xD7630BA970E4E30EULL, 0x55DFBAE8BAFDC3BFULL } }, /* XSUM_XXH128_testdata[4426] */ + { 1475, 0x9E3779B185EBCA8DULL, { 0x5BE18236A136D55AULL, 0x046E8F4684AEDD40ULL } }, /* XSUM_XXH128_testdata[4427] */ + { 1476, 0x0000000000000000ULL, { 0x1D8C65FE0EF623C5ULL, 0x16B6245BC55AF7CCULL } }, /* XSUM_XXH128_testdata[4428] */ + { 1476, 0x000000009E3779B1ULL, { 0x6AFCF9F446AD4A19ULL, 0x8C62C38D8DE893DFULL } }, /* XSUM_XXH128_testdata[4429] */ + { 1476, 0x9E3779B185EBCA8DULL, { 0x04B3474EB1616A70ULL, 0x8168296003E987CFULL } }, /* XSUM_XXH128_testdata[4430] */ + { 1477, 0x0000000000000000ULL, { 0x2F7C6F94146B62DEULL, 0x732591929838A43FULL } }, /* XSUM_XXH128_testdata[4431] */ + { 1477, 0x000000009E3779B1ULL, { 0x43896D70B36EB406ULL, 0xA14468C3F9581757ULL } }, /* XSUM_XXH128_testdata[4432] */ + { 1477, 0x9E3779B185EBCA8DULL, { 0xD8444BA66D29A5D1ULL, 0x28E10B27D08AB5C8ULL } }, /* XSUM_XXH128_testdata[4433] */ + { 1478, 0x0000000000000000ULL, { 0xCD55942E733C8DE0ULL, 0x4C0EDA78104D5A43ULL } }, /* XSUM_XXH128_testdata[4434] */ + { 1478, 0x000000009E3779B1ULL, { 0xAD42C54AC7B76127ULL, 0x04AF2EBC62885E64ULL } }, /* XSUM_XXH128_testdata[4435] */ + { 1478, 0x9E3779B185EBCA8DULL, { 0xD71D23526A3E272BULL, 0x3725FB1C6F59083BULL } }, /* XSUM_XXH128_testdata[4436] */ + { 1479, 0x0000000000000000ULL, { 0x8C2429B7DCE7F860ULL, 0xE33E7EF854C8510FULL } }, /* XSUM_XXH128_testdata[4437] */ + { 1479, 0x000000009E3779B1ULL, { 0xCB435818DBF74721ULL, 0x5BCC7A7D965EF605ULL } }, /* XSUM_XXH128_testdata[4438] */ + { 1479, 0x9E3779B185EBCA8DULL, { 0x0473B8054CD908FDULL, 0x325ACEED255C567BULL } }, /* XSUM_XXH128_testdata[4439] */ + { 1480, 0x0000000000000000ULL, { 0xE21FD7795401C634ULL, 0x8DA62CD69655AD8FULL } }, /* XSUM_XXH128_testdata[4440] */ + { 1480, 0x000000009E3779B1ULL, { 0xC6EEE812B0A3C2C7ULL, 0x20B2B1E77148DA22ULL } }, /* XSUM_XXH128_testdata[4441] */ + { 1480, 0x9E3779B185EBCA8DULL, { 0x47C114BB0C7D7EDBULL, 0xCE5BFA208AA5521DULL } }, /* XSUM_XXH128_testdata[4442] */ + { 1481, 0x0000000000000000ULL, { 0xF096DD223E26115FULL, 0x6996C3D4A05ED75AULL } }, /* XSUM_XXH128_testdata[4443] */ + { 1481, 0x000000009E3779B1ULL, { 0xF4A2C2A7BA8E7E2AULL, 0xCD666468EF156B17ULL } }, /* XSUM_XXH128_testdata[4444] */ + { 1481, 0x9E3779B185EBCA8DULL, { 0x8A69CF11AA97BC34ULL, 0x53D4898A5C034BEEULL } }, /* XSUM_XXH128_testdata[4445] */ + { 1482, 0x0000000000000000ULL, { 0xA9FA0742AC0FD4F7ULL, 0xBBDE271E493A7AC5ULL } }, /* XSUM_XXH128_testdata[4446] */ + { 1482, 0x000000009E3779B1ULL, { 0x907C232BDA385000ULL, 0x4C1969D5F38253C0ULL } }, /* XSUM_XXH128_testdata[4447] */ + { 1482, 0x9E3779B185EBCA8DULL, { 0x766AF0B6A5BD3DCBULL, 0xC3FBEC4EC3F03C13ULL } }, /* XSUM_XXH128_testdata[4448] */ + { 1483, 0x0000000000000000ULL, { 0x4092AA711BFA938AULL, 0x0C732CA4D3BC5504ULL } }, /* XSUM_XXH128_testdata[4449] */ + { 1483, 0x000000009E3779B1ULL, { 0xFA47FAFE7FA9D40CULL, 0xA3C56EAFBD7CCADCULL } }, /* XSUM_XXH128_testdata[4450] */ + { 1483, 0x9E3779B185EBCA8DULL, { 0x47763A99757174A8ULL, 0xFAFEFF20424F4B1FULL } }, /* XSUM_XXH128_testdata[4451] */ + { 1484, 0x0000000000000000ULL, { 0xD5005D2548949930ULL, 0xCF7A3E729579DCCDULL } }, /* XSUM_XXH128_testdata[4452] */ + { 1484, 0x000000009E3779B1ULL, { 0xF6843866B3C9BDE1ULL, 0xEFBFF2DDE5D6AA57ULL } }, /* XSUM_XXH128_testdata[4453] */ + { 1484, 0x9E3779B185EBCA8DULL, { 0x6630EFBD744FB866ULL, 0xE5B7DCFE1D8B3413ULL } }, /* XSUM_XXH128_testdata[4454] */ + { 1485, 0x0000000000000000ULL, { 0x4E7A0172C536C828ULL, 0x203F4426083DF25CULL } }, /* XSUM_XXH128_testdata[4455] */ + { 1485, 0x000000009E3779B1ULL, { 0xD7AC6ADD0F2D932CULL, 0x93A338BE43200DC0ULL } }, /* XSUM_XXH128_testdata[4456] */ + { 1485, 0x9E3779B185EBCA8DULL, { 0x933E1A4ADDE0BF1FULL, 0x640DF5154ED05F08ULL } }, /* XSUM_XXH128_testdata[4457] */ + { 1486, 0x0000000000000000ULL, { 0x4AECD3EB1D90FFF5ULL, 0xAA185C93D2B63C2BULL } }, /* XSUM_XXH128_testdata[4458] */ + { 1486, 0x000000009E3779B1ULL, { 0xC89D04E290B9FB10ULL, 0x71A68E7A819D4CB2ULL } }, /* XSUM_XXH128_testdata[4459] */ + { 1486, 0x9E3779B185EBCA8DULL, { 0xDE9AA36BEA3A70AEULL, 0x531DE7D2DBB1213EULL } }, /* XSUM_XXH128_testdata[4460] */ + { 1487, 0x0000000000000000ULL, { 0x7B05488EC3CDF4D5ULL, 0xC570BFEE5D1604A6ULL } }, /* XSUM_XXH128_testdata[4461] */ + { 1487, 0x000000009E3779B1ULL, { 0xF49C7F4285C28C60ULL, 0x9BA5540A8E6033FCULL } }, /* XSUM_XXH128_testdata[4462] */ + { 1487, 0x9E3779B185EBCA8DULL, { 0x27A7A69A624AD291ULL, 0x8C4A60226417E6EFULL } }, /* XSUM_XXH128_testdata[4463] */ + { 1488, 0x0000000000000000ULL, { 0xD3380C038A278925ULL, 0x22658A960279355DULL } }, /* XSUM_XXH128_testdata[4464] */ + { 1488, 0x000000009E3779B1ULL, { 0xD326C503D397C59FULL, 0x56418B9DBDA2425CULL } }, /* XSUM_XXH128_testdata[4465] */ + { 1488, 0x9E3779B185EBCA8DULL, { 0x55E8264E8D659620ULL, 0xF7D1D4172F188408ULL } }, /* XSUM_XXH128_testdata[4466] */ + { 1489, 0x0000000000000000ULL, { 0xE19CEE4A952E1CA0ULL, 0xE1F882E341CEA031ULL } }, /* XSUM_XXH128_testdata[4467] */ + { 1489, 0x000000009E3779B1ULL, { 0x98E7F3504213684CULL, 0xB22552E2A93A7C8AULL } }, /* XSUM_XXH128_testdata[4468] */ + { 1489, 0x9E3779B185EBCA8DULL, { 0x3582584D628E05EEULL, 0x2BCD25648FBDAD85ULL } }, /* XSUM_XXH128_testdata[4469] */ + { 1490, 0x0000000000000000ULL, { 0x4D35BFCF407857E1ULL, 0xB501898AC842B45FULL } }, /* XSUM_XXH128_testdata[4470] */ + { 1490, 0x000000009E3779B1ULL, { 0x05642730D9389475ULL, 0x92154E417AD0E349ULL } }, /* XSUM_XXH128_testdata[4471] */ + { 1490, 0x9E3779B185EBCA8DULL, { 0x4189A85073F06185ULL, 0x11C393F46078E67DULL } }, /* XSUM_XXH128_testdata[4472] */ + { 1491, 0x0000000000000000ULL, { 0xD130B31D73F3FD81ULL, 0xDFAFAFD26813E772ULL } }, /* XSUM_XXH128_testdata[4473] */ + { 1491, 0x000000009E3779B1ULL, { 0x2387FC1E4BD1C93EULL, 0x5C5E37EFBFFBCBC2ULL } }, /* XSUM_XXH128_testdata[4474] */ + { 1491, 0x9E3779B185EBCA8DULL, { 0xE605EE721E5FDE0BULL, 0x8B16C58CC45D2452ULL } }, /* XSUM_XXH128_testdata[4475] */ + { 1492, 0x0000000000000000ULL, { 0x01CEBBB047583AEAULL, 0x257224644669BD9BULL } }, /* XSUM_XXH128_testdata[4476] */ + { 1492, 0x000000009E3779B1ULL, { 0xC27B457497E64E3BULL, 0xBE4E2D2EB7DA68A1ULL } }, /* XSUM_XXH128_testdata[4477] */ + { 1492, 0x9E3779B185EBCA8DULL, { 0x94F6C7631CA71A2CULL, 0x2E23FEA9C0F31856ULL } }, /* XSUM_XXH128_testdata[4478] */ + { 1493, 0x0000000000000000ULL, { 0xDA85838A26F331A5ULL, 0x9D36D342EFF0A526ULL } }, /* XSUM_XXH128_testdata[4479] */ + { 1493, 0x000000009E3779B1ULL, { 0xCFE9E5CC65EC1024ULL, 0x3853035B54C0619EULL } }, /* XSUM_XXH128_testdata[4480] */ + { 1493, 0x9E3779B185EBCA8DULL, { 0xE01B5B4A1037713CULL, 0xB128012F9733BEECULL } }, /* XSUM_XXH128_testdata[4481] */ + { 1494, 0x0000000000000000ULL, { 0xA39241F8DFA65384ULL, 0x454680FEA3723158ULL } }, /* XSUM_XXH128_testdata[4482] */ + { 1494, 0x000000009E3779B1ULL, { 0x34668812B0E8CC97ULL, 0x57B73762E6D97F44ULL } }, /* XSUM_XXH128_testdata[4483] */ + { 1494, 0x9E3779B185EBCA8DULL, { 0xE248BEBC53F14552ULL, 0x031B440999771657ULL } }, /* XSUM_XXH128_testdata[4484] */ + { 1495, 0x0000000000000000ULL, { 0xF543D7718BAAFD5DULL, 0xAE40C91799D67612ULL } }, /* XSUM_XXH128_testdata[4485] */ + { 1495, 0x000000009E3779B1ULL, { 0x72497B32DED25765ULL, 0x55C74386565D7BECULL } }, /* XSUM_XXH128_testdata[4486] */ + { 1495, 0x9E3779B185EBCA8DULL, { 0xE47639D49B6835C1ULL, 0xC876E7CF1768243CULL } }, /* XSUM_XXH128_testdata[4487] */ + { 1496, 0x0000000000000000ULL, { 0xA229AE8D10488082ULL, 0x1AE182BCC2C92821ULL } }, /* XSUM_XXH128_testdata[4488] */ + { 1496, 0x000000009E3779B1ULL, { 0x160D7E2829B835ABULL, 0x109F656EAD3A0FD4ULL } }, /* XSUM_XXH128_testdata[4489] */ + { 1496, 0x9E3779B185EBCA8DULL, { 0xAE8E2E41674BFF94ULL, 0x8CB48E0B82601794ULL } }, /* XSUM_XXH128_testdata[4490] */ + { 1497, 0x0000000000000000ULL, { 0xFE77233C02698E38ULL, 0x30451378041D9B41ULL } }, /* XSUM_XXH128_testdata[4491] */ + { 1497, 0x000000009E3779B1ULL, { 0xB8E508D5E7C0E455ULL, 0x49CC84774AE28688ULL } }, /* XSUM_XXH128_testdata[4492] */ + { 1497, 0x9E3779B185EBCA8DULL, { 0x16C1DF3C6949E62CULL, 0x1FC8BBEEA36783F8ULL } }, /* XSUM_XXH128_testdata[4493] */ + { 1498, 0x0000000000000000ULL, { 0x117FA8A945161AB7ULL, 0xCE14FC64013EEC80ULL } }, /* XSUM_XXH128_testdata[4494] */ + { 1498, 0x000000009E3779B1ULL, { 0xA5AAC071F3E32C26ULL, 0x35BA5D1949F9A1C0ULL } }, /* XSUM_XXH128_testdata[4495] */ + { 1498, 0x9E3779B185EBCA8DULL, { 0x535EC6C1E6113586ULL, 0x3C850D3359B97C7FULL } }, /* XSUM_XXH128_testdata[4496] */ + { 1499, 0x0000000000000000ULL, { 0xB293E66F31FF809DULL, 0xED54485FD08548C8ULL } }, /* XSUM_XXH128_testdata[4497] */ + { 1499, 0x000000009E3779B1ULL, { 0xF460C4146326E0B7ULL, 0x26B296B24E2A98B8ULL } }, /* XSUM_XXH128_testdata[4498] */ + { 1499, 0x9E3779B185EBCA8DULL, { 0x2CDF051F4679B89DULL, 0xDAA7A25EF7D70E46ULL } }, /* XSUM_XXH128_testdata[4499] */ + { 1500, 0x0000000000000000ULL, { 0xE81D866A4E684A3BULL, 0x22A1ACAC7206C90FULL } }, /* XSUM_XXH128_testdata[4500] */ + { 1500, 0x000000009E3779B1ULL, { 0xFF38C8AA792C2EA6ULL, 0xDFDC98CDB17A89A1ULL } }, /* XSUM_XXH128_testdata[4501] */ + { 1500, 0x9E3779B185EBCA8DULL, { 0x5765B72338ACC0CAULL, 0xC9BF84D732BEB8F0ULL } }, /* XSUM_XXH128_testdata[4502] */ + { 1501, 0x0000000000000000ULL, { 0xAB92157E238DD5DCULL, 0x8E89D5D153CB4C5EULL } }, /* XSUM_XXH128_testdata[4503] */ + { 1501, 0x000000009E3779B1ULL, { 0x1FFB725CBC4F6C14ULL, 0x8DEFC7A804A2A220ULL } }, /* XSUM_XXH128_testdata[4504] */ + { 1501, 0x9E3779B185EBCA8DULL, { 0xA6E5A4190CB2C3B4ULL, 0x78BCABC227907E29ULL } }, /* XSUM_XXH128_testdata[4505] */ + { 1502, 0x0000000000000000ULL, { 0xB005DD78C3CF30BCULL, 0x2785D2657FE46BB5ULL } }, /* XSUM_XXH128_testdata[4506] */ + { 1502, 0x000000009E3779B1ULL, { 0x6A0751A663DFB099ULL, 0x068D42291E2F398DULL } }, /* XSUM_XXH128_testdata[4507] */ + { 1502, 0x9E3779B185EBCA8DULL, { 0x70D60DE25EED0BDEULL, 0xBD59E7A13F640BA5ULL } }, /* XSUM_XXH128_testdata[4508] */ + { 1503, 0x0000000000000000ULL, { 0x0C683B1518B8FE2FULL, 0xEB34D8CF6B4E60B9ULL } }, /* XSUM_XXH128_testdata[4509] */ + { 1503, 0x000000009E3779B1ULL, { 0xAF8B32A8884E0284ULL, 0x56C19C96F2EF1F26ULL } }, /* XSUM_XXH128_testdata[4510] */ + { 1503, 0x9E3779B185EBCA8DULL, { 0xA7A4BDC4FE0A70CDULL, 0x02659EF29E08EAF5ULL } }, /* XSUM_XXH128_testdata[4511] */ + { 1504, 0x0000000000000000ULL, { 0x56BD12C5E82AE2E3ULL, 0x4828FC06228CE3D2ULL } }, /* XSUM_XXH128_testdata[4512] */ + { 1504, 0x000000009E3779B1ULL, { 0x40232A9F01184841ULL, 0x420B41308D6122B0ULL } }, /* XSUM_XXH128_testdata[4513] */ + { 1504, 0x9E3779B185EBCA8DULL, { 0x54B56D8804E18459ULL, 0xFBB6F5739BDE0479ULL } }, /* XSUM_XXH128_testdata[4514] */ + { 1505, 0x0000000000000000ULL, { 0x0E339E1EA59A7ECDULL, 0x2ADB96FA7300D7ABULL } }, /* XSUM_XXH128_testdata[4515] */ + { 1505, 0x000000009E3779B1ULL, { 0x965CAC7E4CC3B905ULL, 0xF00A781D88FF7264ULL } }, /* XSUM_XXH128_testdata[4516] */ + { 1505, 0x9E3779B185EBCA8DULL, { 0x100F6BD1A03D7D36ULL, 0x9E6EE5853C3FFBD4ULL } }, /* XSUM_XXH128_testdata[4517] */ + { 1506, 0x0000000000000000ULL, { 0xF7CE8A9373EC98ACULL, 0xA00AE2E210A8E287ULL } }, /* XSUM_XXH128_testdata[4518] */ + { 1506, 0x000000009E3779B1ULL, { 0xE721E8C672FEF83BULL, 0xF3D75F0345E4AE43ULL } }, /* XSUM_XXH128_testdata[4519] */ + { 1506, 0x9E3779B185EBCA8DULL, { 0x545EEB55F12926ECULL, 0x25C2C55D89D0B430ULL } }, /* XSUM_XXH128_testdata[4520] */ + { 1507, 0x0000000000000000ULL, { 0x53758D1F2109D846ULL, 0x472320872CD11BF1ULL } }, /* XSUM_XXH128_testdata[4521] */ + { 1507, 0x000000009E3779B1ULL, { 0xD64AB8BD7CC8B285ULL, 0x16BC501FCDD7518EULL } }, /* XSUM_XXH128_testdata[4522] */ + { 1507, 0x9E3779B185EBCA8DULL, { 0x2FC5EDF558CE04D7ULL, 0xCC9112BE38D29A41ULL } }, /* XSUM_XXH128_testdata[4523] */ + { 1508, 0x0000000000000000ULL, { 0x5E532C193D4B62BFULL, 0x3A3628B3295C0003ULL } }, /* XSUM_XXH128_testdata[4524] */ + { 1508, 0x000000009E3779B1ULL, { 0x221102ABF177B320ULL, 0xEF5A1B7AFCAAC703ULL } }, /* XSUM_XXH128_testdata[4525] */ + { 1508, 0x9E3779B185EBCA8DULL, { 0x23C6ED7D10BCF6DEULL, 0xEB00B8342F11AF92ULL } }, /* XSUM_XXH128_testdata[4526] */ + { 1509, 0x0000000000000000ULL, { 0xC45828EF5AE2513AULL, 0x32D8CF0B0486B55CULL } }, /* XSUM_XXH128_testdata[4527] */ + { 1509, 0x000000009E3779B1ULL, { 0xBACB01508934DD88ULL, 0x629B84A3C39D02F2ULL } }, /* XSUM_XXH128_testdata[4528] */ + { 1509, 0x9E3779B185EBCA8DULL, { 0x5687B04DC1DE930DULL, 0xE0EB65116B50EC5DULL } }, /* XSUM_XXH128_testdata[4529] */ + { 1510, 0x0000000000000000ULL, { 0x977A95A6D18ADBECULL, 0x0AF7C49D97B191CEULL } }, /* XSUM_XXH128_testdata[4530] */ + { 1510, 0x000000009E3779B1ULL, { 0xBB6814CE24C728DBULL, 0x7C51114B587C8B12ULL } }, /* XSUM_XXH128_testdata[4531] */ + { 1510, 0x9E3779B185EBCA8DULL, { 0xB8C8FFD3F4F31603ULL, 0xD40F4C3F550A2D1AULL } }, /* XSUM_XXH128_testdata[4532] */ + { 1511, 0x0000000000000000ULL, { 0x47920EE11E511CB2ULL, 0x884113416D8A978FULL } }, /* XSUM_XXH128_testdata[4533] */ + { 1511, 0x000000009E3779B1ULL, { 0xB1AA6A3A91B5DAFEULL, 0x6F9E98A8FCEE5E81ULL } }, /* XSUM_XXH128_testdata[4534] */ + { 1511, 0x9E3779B185EBCA8DULL, { 0xBD9A0732D413FFB6ULL, 0xC0AD8147FFD3034BULL } }, /* XSUM_XXH128_testdata[4535] */ + { 1512, 0x0000000000000000ULL, { 0x8C0DD31A0220F411ULL, 0x5011BF21EE7312D0ULL } }, /* XSUM_XXH128_testdata[4536] */ + { 1512, 0x000000009E3779B1ULL, { 0xA9544172EA2BF06FULL, 0xA4C8F406027F3C5AULL } }, /* XSUM_XXH128_testdata[4537] */ + { 1512, 0x9E3779B185EBCA8DULL, { 0x16DD87D0B3C13707ULL, 0xFBADFF8CE3AFBEACULL } }, /* XSUM_XXH128_testdata[4538] */ + { 1513, 0x0000000000000000ULL, { 0x3D12AA0B29777D6FULL, 0xEFBFF4590EBBB885ULL } }, /* XSUM_XXH128_testdata[4539] */ + { 1513, 0x000000009E3779B1ULL, { 0x0D6465CB5B380E59ULL, 0xB45B6F3FC4B114A3ULL } }, /* XSUM_XXH128_testdata[4540] */ + { 1513, 0x9E3779B185EBCA8DULL, { 0x5BF9C8569971E6F5ULL, 0x7741886934524E1DULL } }, /* XSUM_XXH128_testdata[4541] */ + { 1514, 0x0000000000000000ULL, { 0x112F5BA7BF0636C4ULL, 0x032930DD668D5EC6ULL } }, /* XSUM_XXH128_testdata[4542] */ + { 1514, 0x000000009E3779B1ULL, { 0x772A3474A57241C8ULL, 0x42F92D4D84DB40A8ULL } }, /* XSUM_XXH128_testdata[4543] */ + { 1514, 0x9E3779B185EBCA8DULL, { 0xB4A0B58609A78117ULL, 0xC23FB983402AE9B8ULL } }, /* XSUM_XXH128_testdata[4544] */ + { 1515, 0x0000000000000000ULL, { 0x6D44D3CF18C1335DULL, 0x543AF58C05C1B2CAULL } }, /* XSUM_XXH128_testdata[4545] */ + { 1515, 0x000000009E3779B1ULL, { 0x89FF93EDA9C73CCEULL, 0x148B0358459C10A5ULL } }, /* XSUM_XXH128_testdata[4546] */ + { 1515, 0x9E3779B185EBCA8DULL, { 0xA732C10D56D0F0F5ULL, 0x64204E6A9AB20033ULL } }, /* XSUM_XXH128_testdata[4547] */ + { 1516, 0x0000000000000000ULL, { 0x4ED102F971A4663BULL, 0xD7919850A5FB28FDULL } }, /* XSUM_XXH128_testdata[4548] */ + { 1516, 0x000000009E3779B1ULL, { 0xAC896B8BB141435AULL, 0x503E497FF8E7BAFEULL } }, /* XSUM_XXH128_testdata[4549] */ + { 1516, 0x9E3779B185EBCA8DULL, { 0x7EF8D696D908064BULL, 0x67CE416300AB8C97ULL } }, /* XSUM_XXH128_testdata[4550] */ + { 1517, 0x0000000000000000ULL, { 0x5E2B19AA9F43ECA7ULL, 0x5ECA2044EFAE4FD9ULL } }, /* XSUM_XXH128_testdata[4551] */ + { 1517, 0x000000009E3779B1ULL, { 0x1854EC60BCD39EF9ULL, 0xC87089D99553147BULL } }, /* XSUM_XXH128_testdata[4552] */ + { 1517, 0x9E3779B185EBCA8DULL, { 0xB01D9E184848CD4AULL, 0xDE3810FD2B4072DAULL } }, /* XSUM_XXH128_testdata[4553] */ + { 1518, 0x0000000000000000ULL, { 0x145ED9B2C279EF7DULL, 0xCC75640410D10D12ULL } }, /* XSUM_XXH128_testdata[4554] */ + { 1518, 0x000000009E3779B1ULL, { 0x4D7B1D8326D22442ULL, 0xECF71517ACDB6564ULL } }, /* XSUM_XXH128_testdata[4555] */ + { 1518, 0x9E3779B185EBCA8DULL, { 0xCAC9CD8B6DF6E473ULL, 0x08DEDC935053B3CBULL } }, /* XSUM_XXH128_testdata[4556] */ + { 1519, 0x0000000000000000ULL, { 0xC266AD258BC02F59ULL, 0x4AD7EECD054189E0ULL } }, /* XSUM_XXH128_testdata[4557] */ + { 1519, 0x000000009E3779B1ULL, { 0x3A5FD4C78BF2660FULL, 0x2E7B804B1023795CULL } }, /* XSUM_XXH128_testdata[4558] */ + { 1519, 0x9E3779B185EBCA8DULL, { 0x06EA6CFCFFD67490ULL, 0x7DD699E6E7BA35E5ULL } }, /* XSUM_XXH128_testdata[4559] */ + { 1520, 0x0000000000000000ULL, { 0xA601E0E6624AA703ULL, 0x8BA0C3EF48F316D3ULL } }, /* XSUM_XXH128_testdata[4560] */ + { 1520, 0x000000009E3779B1ULL, { 0xEA4E44C21E5D15F8ULL, 0x7FEAC147F1A3AF8AULL } }, /* XSUM_XXH128_testdata[4561] */ + { 1520, 0x9E3779B185EBCA8DULL, { 0xCA5CDC82A62D97E2ULL, 0x13706B91641BB007ULL } }, /* XSUM_XXH128_testdata[4562] */ + { 1521, 0x0000000000000000ULL, { 0x589BE8D5050257C2ULL, 0x09115FE5CCDAB565ULL } }, /* XSUM_XXH128_testdata[4563] */ + { 1521, 0x000000009E3779B1ULL, { 0x6B0FCF68C557CF69ULL, 0x32A4B7D10BE9434DULL } }, /* XSUM_XXH128_testdata[4564] */ + { 1521, 0x9E3779B185EBCA8DULL, { 0xC1CBF0A646D8BB14ULL, 0xEEF827C96AC79698ULL } }, /* XSUM_XXH128_testdata[4565] */ + { 1522, 0x0000000000000000ULL, { 0xC70EEDF28BBD665AULL, 0x56956D7201E0AD23ULL } }, /* XSUM_XXH128_testdata[4566] */ + { 1522, 0x000000009E3779B1ULL, { 0xDEEA1688D2730E4EULL, 0xE6DC70EEE094B805ULL } }, /* XSUM_XXH128_testdata[4567] */ + { 1522, 0x9E3779B185EBCA8DULL, { 0xA200829E1237F71CULL, 0x7931D14213C563F5ULL } }, /* XSUM_XXH128_testdata[4568] */ + { 1523, 0x0000000000000000ULL, { 0xB2C5EFEA1A95B309ULL, 0xDAA00EBF3D6F6CC0ULL } }, /* XSUM_XXH128_testdata[4569] */ + { 1523, 0x000000009E3779B1ULL, { 0x530C18D21ECCB8BAULL, 0x82E9AB38E8D6DACFULL } }, /* XSUM_XXH128_testdata[4570] */ + { 1523, 0x9E3779B185EBCA8DULL, { 0x4210AAC799206AABULL, 0x731419BDA5625FD5ULL } }, /* XSUM_XXH128_testdata[4571] */ + { 1524, 0x0000000000000000ULL, { 0x7999AA564264C984ULL, 0x7FD7A5A99D8BB6CDULL } }, /* XSUM_XXH128_testdata[4572] */ + { 1524, 0x000000009E3779B1ULL, { 0x94E6ABB917D5F2D0ULL, 0x83CC9D28DA81E29CULL } }, /* XSUM_XXH128_testdata[4573] */ + { 1524, 0x9E3779B185EBCA8DULL, { 0xD29CF91C87606278ULL, 0x3232414319B67584ULL } }, /* XSUM_XXH128_testdata[4574] */ + { 1525, 0x0000000000000000ULL, { 0x592527E8D34BAA1FULL, 0x822DE67398406F36ULL } }, /* XSUM_XXH128_testdata[4575] */ + { 1525, 0x000000009E3779B1ULL, { 0x143FD655918298B6ULL, 0xED65E4B0A0F8149BULL } }, /* XSUM_XXH128_testdata[4576] */ + { 1525, 0x9E3779B185EBCA8DULL, { 0xA7D655F3D758D2DDULL, 0x312528C7F6A2EEC4ULL } }, /* XSUM_XXH128_testdata[4577] */ + { 1526, 0x0000000000000000ULL, { 0xB0E0DA5EA984D823ULL, 0x4E6013D9900F9C54ULL } }, /* XSUM_XXH128_testdata[4578] */ + { 1526, 0x000000009E3779B1ULL, { 0x826F81F864A9E10AULL, 0x2A37363D456BDD01ULL } }, /* XSUM_XXH128_testdata[4579] */ + { 1526, 0x9E3779B185EBCA8DULL, { 0x46D0E44753D033BBULL, 0xCF4DC4893C97F130ULL } }, /* XSUM_XXH128_testdata[4580] */ + { 1527, 0x0000000000000000ULL, { 0xAF9421BDAB7DE566ULL, 0xEF25747B4EDA28C2ULL } }, /* XSUM_XXH128_testdata[4581] */ + { 1527, 0x000000009E3779B1ULL, { 0xA93EBEFE61203A0FULL, 0xF01B88784E3A4315ULL } }, /* XSUM_XXH128_testdata[4582] */ + { 1527, 0x9E3779B185EBCA8DULL, { 0xCB318F6E507A110FULL, 0xF496F7390B52FBD2ULL } }, /* XSUM_XXH128_testdata[4583] */ + { 1528, 0x0000000000000000ULL, { 0xDDE69757FC45453FULL, 0x8096E75EDB0F5E1CULL } }, /* XSUM_XXH128_testdata[4584] */ + { 1528, 0x000000009E3779B1ULL, { 0xAD1A61A43C5079D9ULL, 0x05E37A8CB6F8A581ULL } }, /* XSUM_XXH128_testdata[4585] */ + { 1528, 0x9E3779B185EBCA8DULL, { 0x6E89C3764D284D03ULL, 0x4FCEEB170F21D09FULL } }, /* XSUM_XXH128_testdata[4586] */ + { 1529, 0x0000000000000000ULL, { 0x790B2802BF5B6CA5ULL, 0x2D144A2C474990E0ULL } }, /* XSUM_XXH128_testdata[4587] */ + { 1529, 0x000000009E3779B1ULL, { 0x69BA756486E267DBULL, 0x654A6BDB7490971AULL } }, /* XSUM_XXH128_testdata[4588] */ + { 1529, 0x9E3779B185EBCA8DULL, { 0x330356E0FD650D8DULL, 0x40B7D8D9F47BD267ULL } }, /* XSUM_XXH128_testdata[4589] */ + { 1530, 0x0000000000000000ULL, { 0x1CBA0D20E1D49A9EULL, 0x94E2B18CF60CE746ULL } }, /* XSUM_XXH128_testdata[4590] */ + { 1530, 0x000000009E3779B1ULL, { 0x34E95637CA7BDE06ULL, 0x2BF1273FB7BED0B3ULL } }, /* XSUM_XXH128_testdata[4591] */ + { 1530, 0x9E3779B185EBCA8DULL, { 0xA73387A0D00C9B49ULL, 0xDE41B2C6C2944997ULL } }, /* XSUM_XXH128_testdata[4592] */ + { 1531, 0x0000000000000000ULL, { 0xCBA1D8BBCE62F3CCULL, 0x302B1551AD7C749FULL } }, /* XSUM_XXH128_testdata[4593] */ + { 1531, 0x000000009E3779B1ULL, { 0x79F440A0C1834BECULL, 0xAF999FACB7C50A44ULL } }, /* XSUM_XXH128_testdata[4594] */ + { 1531, 0x9E3779B185EBCA8DULL, { 0x1955AA7C05619D60ULL, 0xFE5A801637752EBCULL } }, /* XSUM_XXH128_testdata[4595] */ + { 1532, 0x0000000000000000ULL, { 0xC05CDA3641633E71ULL, 0xDB8F7E1DBF069132ULL } }, /* XSUM_XXH128_testdata[4596] */ + { 1532, 0x000000009E3779B1ULL, { 0xF2A2DB90DAF5F55EULL, 0x77B4FD6EDF573C83ULL } }, /* XSUM_XXH128_testdata[4597] */ + { 1532, 0x9E3779B185EBCA8DULL, { 0x0DBA8ACDD35665AAULL, 0xF1A59C884B895BB8ULL } }, /* XSUM_XXH128_testdata[4598] */ + { 1533, 0x0000000000000000ULL, { 0x12E82077408AA01FULL, 0x2EA2DE1353BE6AEEULL } }, /* XSUM_XXH128_testdata[4599] */ + { 1533, 0x000000009E3779B1ULL, { 0xD87296558758B772ULL, 0xAB1CE5396D51B550ULL } }, /* XSUM_XXH128_testdata[4600] */ + { 1533, 0x9E3779B185EBCA8DULL, { 0xE55F59BDE2B73BA6ULL, 0x2CF6B7C85F21EF28ULL } }, /* XSUM_XXH128_testdata[4601] */ + { 1534, 0x0000000000000000ULL, { 0x666B68328DA7CF55ULL, 0x19D95941A9AFFEA8ULL } }, /* XSUM_XXH128_testdata[4602] */ + { 1534, 0x000000009E3779B1ULL, { 0x7A08FE244BD0C542ULL, 0x0AA97D537D34D92AULL } }, /* XSUM_XXH128_testdata[4603] */ + { 1534, 0x9E3779B185EBCA8DULL, { 0xB798085F0C7EA859ULL, 0x333CD9CC9D1488ACULL } }, /* XSUM_XXH128_testdata[4604] */ + { 1535, 0x0000000000000000ULL, { 0x1B107DA31572D1E4ULL, 0xD08A50FD72A76924ULL } }, /* XSUM_XXH128_testdata[4605] */ + { 1535, 0x000000009E3779B1ULL, { 0xA9E387920C9D179AULL, 0xBEA29B10DE62A1BEULL } }, /* XSUM_XXH128_testdata[4606] */ + { 1535, 0x9E3779B185EBCA8DULL, { 0xC27684F8BDFFCD9BULL, 0x979B85EF60D56EF0ULL } }, /* XSUM_XXH128_testdata[4607] */ + { 1536, 0x0000000000000000ULL, { 0x8DAA8C2ECCABB68BULL, 0x5B9831DF57EAE14FULL } }, /* XSUM_XXH128_testdata[4608] */ + { 1536, 0x000000009E3779B1ULL, { 0x14176C0EA5A9B640ULL, 0xCF68DAB4800F1B98ULL } }, /* XSUM_XXH128_testdata[4609] */ + { 1536, 0x9E3779B185EBCA8DULL, { 0x672E8F732C4E55D7ULL, 0xBAD8871394824224ULL } }, /* XSUM_XXH128_testdata[4610] */ + { 1537, 0x0000000000000000ULL, { 0x57C8DBD143F74C9DULL, 0x5F88160892BBCDFDULL } }, /* XSUM_XXH128_testdata[4611] */ + { 1537, 0x000000009E3779B1ULL, { 0x4B7A3AC97EA64535ULL, 0x8B626C6B92E2D03AULL } }, /* XSUM_XXH128_testdata[4612] */ + { 1537, 0x9E3779B185EBCA8DULL, { 0x93A05689A5758F46ULL, 0x6766A727ABD47FB7ULL } }, /* XSUM_XXH128_testdata[4613] */ + { 1538, 0x0000000000000000ULL, { 0x48D172D3BC18AB8FULL, 0x8645B5ADE58CBD95ULL } }, /* XSUM_XXH128_testdata[4614] */ + { 1538, 0x000000009E3779B1ULL, { 0x15974951F8626009ULL, 0xA6246F1E47C34337ULL } }, /* XSUM_XXH128_testdata[4615] */ + { 1538, 0x9E3779B185EBCA8DULL, { 0x9E4A2D20455D1889ULL, 0xDAE2870FE728D867ULL } }, /* XSUM_XXH128_testdata[4616] */ + { 1539, 0x0000000000000000ULL, { 0xD901F594BDE7ADCEULL, 0x703AD7BE2B3E0F31ULL } }, /* XSUM_XXH128_testdata[4617] */ + { 1539, 0x000000009E3779B1ULL, { 0xBD77D82DE976FFC7ULL, 0x82DC0C54EAFFEB19ULL } }, /* XSUM_XXH128_testdata[4618] */ + { 1539, 0x9E3779B185EBCA8DULL, { 0x228B8162736F98E3ULL, 0x8CEAFE43295EA3A4ULL } }, /* XSUM_XXH128_testdata[4619] */ + { 1540, 0x0000000000000000ULL, { 0x8EE07EB9737A9276ULL, 0x2E26A77A0437A3E8ULL } }, /* XSUM_XXH128_testdata[4620] */ + { 1540, 0x000000009E3779B1ULL, { 0xC8F13AC142463C6FULL, 0xED622C2F763D2155ULL } }, /* XSUM_XXH128_testdata[4621] */ + { 1540, 0x9E3779B185EBCA8DULL, { 0xC2CF4E587BB9AA6BULL, 0x9315DED5CA6E1D6DULL } }, /* XSUM_XXH128_testdata[4622] */ + { 1541, 0x0000000000000000ULL, { 0xBB1F926D73745C78ULL, 0x326509D94F0CEA31ULL } }, /* XSUM_XXH128_testdata[4623] */ + { 1541, 0x000000009E3779B1ULL, { 0xB0D726385D29FBC6ULL, 0xA7ECC6BFD27F0113ULL } }, /* XSUM_XXH128_testdata[4624] */ + { 1541, 0x9E3779B185EBCA8DULL, { 0x24CF9F8CF02B76DBULL, 0xE8449601C6F9D22CULL } }, /* XSUM_XXH128_testdata[4625] */ + { 1542, 0x0000000000000000ULL, { 0x781EB0D61C859FDBULL, 0x3B82BE29C41DBD72ULL } }, /* XSUM_XXH128_testdata[4626] */ + { 1542, 0x000000009E3779B1ULL, { 0xA7354ECD057F40A5ULL, 0x35A286A0BA99D828ULL } }, /* XSUM_XXH128_testdata[4627] */ + { 1542, 0x9E3779B185EBCA8DULL, { 0xB586961CEFB728F2ULL, 0x8C5C35DFE592A64AULL } }, /* XSUM_XXH128_testdata[4628] */ + { 1543, 0x0000000000000000ULL, { 0xFCF91E6E9B54D87AULL, 0xE124A6AD32A6A85BULL } }, /* XSUM_XXH128_testdata[4629] */ + { 1543, 0x000000009E3779B1ULL, { 0xC1BAEDA156F63460ULL, 0xC953225DCDB0E078ULL } }, /* XSUM_XXH128_testdata[4630] */ + { 1543, 0x9E3779B185EBCA8DULL, { 0x972A5BBB45E4C1C2ULL, 0xA295D71190C8D4E6ULL } }, /* XSUM_XXH128_testdata[4631] */ + { 1544, 0x0000000000000000ULL, { 0xC731201E159A152EULL, 0xDDF1BE89A160BC2FULL } }, /* XSUM_XXH128_testdata[4632] */ + { 1544, 0x000000009E3779B1ULL, { 0x668858F15F96A987ULL, 0x904AE98A73C39159ULL } }, /* XSUM_XXH128_testdata[4633] */ + { 1544, 0x9E3779B185EBCA8DULL, { 0x7750BDF397E400B1ULL, 0xEA3950C012240993ULL } }, /* XSUM_XXH128_testdata[4634] */ + { 1545, 0x0000000000000000ULL, { 0xE1FDBC5884EABEB6ULL, 0xB6C15E3799711C55ULL } }, /* XSUM_XXH128_testdata[4635] */ + { 1545, 0x000000009E3779B1ULL, { 0x7920633A68992086ULL, 0x29C5DA0E3973260DULL } }, /* XSUM_XXH128_testdata[4636] */ + { 1545, 0x9E3779B185EBCA8DULL, { 0xAA93DFFD978594ABULL, 0xBDBB103EE752F608ULL } }, /* XSUM_XXH128_testdata[4637] */ + { 1546, 0x0000000000000000ULL, { 0x713A314F08EF6D14ULL, 0x2D1E4744BBCE0994ULL } }, /* XSUM_XXH128_testdata[4638] */ + { 1546, 0x000000009E3779B1ULL, { 0x06EAABF722D7A6A1ULL, 0xC470BEE0CC362BFAULL } }, /* XSUM_XXH128_testdata[4639] */ + { 1546, 0x9E3779B185EBCA8DULL, { 0x7680659B3474F11DULL, 0xA5B7485667AF0AACULL } }, /* XSUM_XXH128_testdata[4640] */ + { 1547, 0x0000000000000000ULL, { 0x14493E1DAADA1DCAULL, 0xBDD734E2784EDA5AULL } }, /* XSUM_XXH128_testdata[4641] */ + { 1547, 0x000000009E3779B1ULL, { 0x8AE51168F16A197BULL, 0xF5B866C67FD025E2ULL } }, /* XSUM_XXH128_testdata[4642] */ + { 1547, 0x9E3779B185EBCA8DULL, { 0xA4782ECAE48EB7A4ULL, 0x633DCC3FB7F8D679ULL } }, /* XSUM_XXH128_testdata[4643] */ + { 1548, 0x0000000000000000ULL, { 0x73FEB39FA6622479ULL, 0x5FDA3A9C799C5353ULL } }, /* XSUM_XXH128_testdata[4644] */ + { 1548, 0x000000009E3779B1ULL, { 0xADF6CE82ED27B469ULL, 0x24B0934CD460FA72ULL } }, /* XSUM_XXH128_testdata[4645] */ + { 1548, 0x9E3779B185EBCA8DULL, { 0x7FC2A81151FF1554ULL, 0xC73871215D6D4D9FULL } }, /* XSUM_XXH128_testdata[4646] */ + { 1549, 0x0000000000000000ULL, { 0x8B7BAC177B06229FULL, 0x7EF73FB6F3C77515ULL } }, /* XSUM_XXH128_testdata[4647] */ + { 1549, 0x000000009E3779B1ULL, { 0xF5C84AEEA708D128ULL, 0x1B6033E0A6E5F3C6ULL } }, /* XSUM_XXH128_testdata[4648] */ + { 1549, 0x9E3779B185EBCA8DULL, { 0x0945E5E7E5EB282AULL, 0xA2284EFCAF951866ULL } }, /* XSUM_XXH128_testdata[4649] */ + { 1550, 0x0000000000000000ULL, { 0xB0929D573881C869ULL, 0xC3D605C8DB090A25ULL } }, /* XSUM_XXH128_testdata[4650] */ + { 1550, 0x000000009E3779B1ULL, { 0xEE34B74D29569A5BULL, 0xDED030252C290246ULL } }, /* XSUM_XXH128_testdata[4651] */ + { 1550, 0x9E3779B185EBCA8DULL, { 0xB7725D34E26E7E2EULL, 0xF54833D7BEFAEB76ULL } }, /* XSUM_XXH128_testdata[4652] */ + { 1551, 0x0000000000000000ULL, { 0x8C8C1AFE32561877ULL, 0x2BB277A23F3D0929ULL } }, /* XSUM_XXH128_testdata[4653] */ + { 1551, 0x000000009E3779B1ULL, { 0xAE6B020DE49EC222ULL, 0xB8AC2485CCF28D7AULL } }, /* XSUM_XXH128_testdata[4654] */ + { 1551, 0x9E3779B185EBCA8DULL, { 0xF8C8F4C40D6F1C42ULL, 0x6C2EE78C4BC470FFULL } }, /* XSUM_XXH128_testdata[4655] */ + { 1552, 0x0000000000000000ULL, { 0xB7A14AE288A42F2FULL, 0x96EC9FBC276E56A1ULL } }, /* XSUM_XXH128_testdata[4656] */ + { 1552, 0x000000009E3779B1ULL, { 0xBDC11D478A6014EBULL, 0x4E1CC77A4F587E1BULL } }, /* XSUM_XXH128_testdata[4657] */ + { 1552, 0x9E3779B185EBCA8DULL, { 0x9B588CD6323138E6ULL, 0x7CBA84483CA2F3FFULL } }, /* XSUM_XXH128_testdata[4658] */ + { 1553, 0x0000000000000000ULL, { 0xA96E61B2E7B2B195ULL, 0x99F2D323F9FAC3ECULL } }, /* XSUM_XXH128_testdata[4659] */ + { 1553, 0x000000009E3779B1ULL, { 0x329A94265F0D9C3EULL, 0x4DF3AE93D6D96B1AULL } }, /* XSUM_XXH128_testdata[4660] */ + { 1553, 0x9E3779B185EBCA8DULL, { 0x882F797F9E56DDD8ULL, 0x1D5E634D7321CAC5ULL } }, /* XSUM_XXH128_testdata[4661] */ + { 1554, 0x0000000000000000ULL, { 0xBBFEE59943556FAFULL, 0x9EDB78E1EC3A1985ULL } }, /* XSUM_XXH128_testdata[4662] */ + { 1554, 0x000000009E3779B1ULL, { 0xC557A7EEDE0F2B78ULL, 0xD3FCD607CF311381ULL } }, /* XSUM_XXH128_testdata[4663] */ + { 1554, 0x9E3779B185EBCA8DULL, { 0xB46DC0C868791E04ULL, 0x691C5F9D9A6C94DDULL } }, /* XSUM_XXH128_testdata[4664] */ + { 1555, 0x0000000000000000ULL, { 0xAFFDA6A79337FA79ULL, 0xF258AB131B5E6A1BULL } }, /* XSUM_XXH128_testdata[4665] */ + { 1555, 0x000000009E3779B1ULL, { 0x9C599CD610B8049AULL, 0x36793996E52D7A1DULL } }, /* XSUM_XXH128_testdata[4666] */ + { 1555, 0x9E3779B185EBCA8DULL, { 0xD21D1599C67C84D9ULL, 0x7A30B78EED4BE961ULL } }, /* XSUM_XXH128_testdata[4667] */ + { 1556, 0x0000000000000000ULL, { 0x2D3DF3731171ABA9ULL, 0xF55AA6AA39858E75ULL } }, /* XSUM_XXH128_testdata[4668] */ + { 1556, 0x000000009E3779B1ULL, { 0x197C94FE72D24053ULL, 0x908D29F7B58D187FULL } }, /* XSUM_XXH128_testdata[4669] */ + { 1556, 0x9E3779B185EBCA8DULL, { 0x21D04224388027B0ULL, 0x97C81E8233751A36ULL } }, /* XSUM_XXH128_testdata[4670] */ + { 1557, 0x0000000000000000ULL, { 0xF7D0F61D0B2D6148ULL, 0x84C1608F2A050F07ULL } }, /* XSUM_XXH128_testdata[4671] */ + { 1557, 0x000000009E3779B1ULL, { 0x24CB0343DF882364ULL, 0x119BE0AEED1F7F30ULL } }, /* XSUM_XXH128_testdata[4672] */ + { 1557, 0x9E3779B185EBCA8DULL, { 0x77883AA22EFE233EULL, 0xCF12714C9A6CB1C5ULL } }, /* XSUM_XXH128_testdata[4673] */ + { 1558, 0x0000000000000000ULL, { 0x64B4F355C78AA20AULL, 0x91D7E8E37E6B11C7ULL } }, /* XSUM_XXH128_testdata[4674] */ + { 1558, 0x000000009E3779B1ULL, { 0xE3BDC4D855CBFC6DULL, 0x7A14C333B30867B6ULL } }, /* XSUM_XXH128_testdata[4675] */ + { 1558, 0x9E3779B185EBCA8DULL, { 0x992C1816C34EF8DEULL, 0x65B2E8A75FD2C51EULL } }, /* XSUM_XXH128_testdata[4676] */ + { 1559, 0x0000000000000000ULL, { 0x44552248B6A83EBAULL, 0x5FD043B238CAFE20ULL } }, /* XSUM_XXH128_testdata[4677] */ + { 1559, 0x000000009E3779B1ULL, { 0xBCA30B5D727DF517ULL, 0x62EAEC486DCA6DE5ULL } }, /* XSUM_XXH128_testdata[4678] */ + { 1559, 0x9E3779B185EBCA8DULL, { 0x5E53CB3CFBA3F8F9ULL, 0xC2D20120BE8670FEULL } }, /* XSUM_XXH128_testdata[4679] */ + { 1560, 0x0000000000000000ULL, { 0x1483FBF2F918B422ULL, 0xC0C666E6F4C070CEULL } }, /* XSUM_XXH128_testdata[4680] */ + { 1560, 0x000000009E3779B1ULL, { 0x67E4ADEE6A8E9BF3ULL, 0xE49FC9EA5D330C0CULL } }, /* XSUM_XXH128_testdata[4681] */ + { 1560, 0x9E3779B185EBCA8DULL, { 0x70A300CB25C29A0BULL, 0x8BF8F6E84C4804CEULL } }, /* XSUM_XXH128_testdata[4682] */ + { 1561, 0x0000000000000000ULL, { 0xCB99139C837D2084ULL, 0x9E5F6510BC73098BULL } }, /* XSUM_XXH128_testdata[4683] */ + { 1561, 0x000000009E3779B1ULL, { 0x385DDD1F14536E50ULL, 0xCCB2B55BA5A9A344ULL } }, /* XSUM_XXH128_testdata[4684] */ + { 1561, 0x9E3779B185EBCA8DULL, { 0x1EDAC8DFFBBE5BC0ULL, 0x07B65D76D37439E2ULL } }, /* XSUM_XXH128_testdata[4685] */ + { 1562, 0x0000000000000000ULL, { 0xA82C249FB4C794DDULL, 0x8E324C2C9929B9BDULL } }, /* XSUM_XXH128_testdata[4686] */ + { 1562, 0x000000009E3779B1ULL, { 0x690AC0EFC3AB27E9ULL, 0x60A400B9527C72D5ULL } }, /* XSUM_XXH128_testdata[4687] */ + { 1562, 0x9E3779B185EBCA8DULL, { 0x6400F980D9D85712ULL, 0x3ED5F16B45773D77ULL } }, /* XSUM_XXH128_testdata[4688] */ + { 1563, 0x0000000000000000ULL, { 0xD67895EEA2D79EEAULL, 0xC4C051C5ED04FCB3ULL } }, /* XSUM_XXH128_testdata[4689] */ + { 1563, 0x000000009E3779B1ULL, { 0xE7B922C6E06CDEBBULL, 0xB0B0CFF621F14937ULL } }, /* XSUM_XXH128_testdata[4690] */ + { 1563, 0x9E3779B185EBCA8DULL, { 0x7BE7BA43179D95BBULL, 0x49560CA2FCD24427ULL } }, /* XSUM_XXH128_testdata[4691] */ + { 1564, 0x0000000000000000ULL, { 0x7609AE3DDA24A26DULL, 0x06C24A5DE6BAD2EFULL } }, /* XSUM_XXH128_testdata[4692] */ + { 1564, 0x000000009E3779B1ULL, { 0x9A5940F262A94D1AULL, 0x24CAE69545648BA2ULL } }, /* XSUM_XXH128_testdata[4693] */ + { 1564, 0x9E3779B185EBCA8DULL, { 0xDDABC1FE67E41194ULL, 0x85B07244E091164FULL } }, /* XSUM_XXH128_testdata[4694] */ + { 1565, 0x0000000000000000ULL, { 0x67E28DAFA4DE6B19ULL, 0x01E9BEF46DCD83EEULL } }, /* XSUM_XXH128_testdata[4695] */ + { 1565, 0x000000009E3779B1ULL, { 0x091446732FB4EE03ULL, 0x7D63214C46B32973ULL } }, /* XSUM_XXH128_testdata[4696] */ + { 1565, 0x9E3779B185EBCA8DULL, { 0xB7E466CAE746467EULL, 0x689046BB9CA2250AULL } }, /* XSUM_XXH128_testdata[4697] */ + { 1566, 0x0000000000000000ULL, { 0x2F1A9DB823B5224AULL, 0x0B3150A1841C38E6ULL } }, /* XSUM_XXH128_testdata[4698] */ + { 1566, 0x000000009E3779B1ULL, { 0x90B46B8DDFD327A7ULL, 0x903999E4475CE896ULL } }, /* XSUM_XXH128_testdata[4699] */ + { 1566, 0x9E3779B185EBCA8DULL, { 0x84E1EB43F2FBC3F9ULL, 0x77008C1D02B857F1ULL } }, /* XSUM_XXH128_testdata[4700] */ + { 1567, 0x0000000000000000ULL, { 0x7D796B8C64CA888AULL, 0x4655512B5E6D0667ULL } }, /* XSUM_XXH128_testdata[4701] */ + { 1567, 0x000000009E3779B1ULL, { 0xB8DD23A54755BA25ULL, 0xF4407F4C3988BFEFULL } }, /* XSUM_XXH128_testdata[4702] */ + { 1567, 0x9E3779B185EBCA8DULL, { 0x2F19C51E51D4AB81ULL, 0x348B299D91D7706AULL } }, /* XSUM_XXH128_testdata[4703] */ + { 1568, 0x0000000000000000ULL, { 0x69DA97B583DEC845ULL, 0xD01FEA8FBDA8D4ABULL } }, /* XSUM_XXH128_testdata[4704] */ + { 1568, 0x000000009E3779B1ULL, { 0xCC00D2036D513447ULL, 0x3766DE039B357C1DULL } }, /* XSUM_XXH128_testdata[4705] */ + { 1568, 0x9E3779B185EBCA8DULL, { 0x9E11AC222EE21E1AULL, 0x25AC057CFFF55656ULL } }, /* XSUM_XXH128_testdata[4706] */ + { 1569, 0x0000000000000000ULL, { 0x815C5D1E89ED7407ULL, 0x4701D7BF348B99ACULL } }, /* XSUM_XXH128_testdata[4707] */ + { 1569, 0x000000009E3779B1ULL, { 0xDD906C003D1FA383ULL, 0x0C0009023317EFE7ULL } }, /* XSUM_XXH128_testdata[4708] */ + { 1569, 0x9E3779B185EBCA8DULL, { 0x52C01F40EDCB723EULL, 0xCB69A318167F6F7AULL } }, /* XSUM_XXH128_testdata[4709] */ + { 1570, 0x0000000000000000ULL, { 0xDD1C36027DCD186FULL, 0xE628927F11B157B4ULL } }, /* XSUM_XXH128_testdata[4710] */ + { 1570, 0x000000009E3779B1ULL, { 0xFC158048E82632FAULL, 0x244CE6BC7D5E485BULL } }, /* XSUM_XXH128_testdata[4711] */ + { 1570, 0x9E3779B185EBCA8DULL, { 0xB0B201368B2BEC76ULL, 0x99537D5CC7A6711BULL } }, /* XSUM_XXH128_testdata[4712] */ + { 1571, 0x0000000000000000ULL, { 0x58883470165C7DA3ULL, 0x45A64AC466B63CC8ULL } }, /* XSUM_XXH128_testdata[4713] */ + { 1571, 0x000000009E3779B1ULL, { 0xDC3B29B06C355A3BULL, 0x5EC718D400369E1AULL } }, /* XSUM_XXH128_testdata[4714] */ + { 1571, 0x9E3779B185EBCA8DULL, { 0x1619BE2824FDD4F9ULL, 0x9BB171B23B23C2B9ULL } }, /* XSUM_XXH128_testdata[4715] */ + { 1572, 0x0000000000000000ULL, { 0xC940C303F9CBEABCULL, 0xAE0B5FE81210C89FULL } }, /* XSUM_XXH128_testdata[4716] */ + { 1572, 0x000000009E3779B1ULL, { 0x18D27C5F0809A7DAULL, 0x3EB67CB3619AD589ULL } }, /* XSUM_XXH128_testdata[4717] */ + { 1572, 0x9E3779B185EBCA8DULL, { 0xFE77A4E168E65690ULL, 0xAB3413E6406DCA06ULL } }, /* XSUM_XXH128_testdata[4718] */ + { 1573, 0x0000000000000000ULL, { 0xA9E2DC206A9288B9ULL, 0x3EAB92860446CF57ULL } }, /* XSUM_XXH128_testdata[4719] */ + { 1573, 0x000000009E3779B1ULL, { 0xC8D512FF0BDDE589ULL, 0x6E53266CF17F33BAULL } }, /* XSUM_XXH128_testdata[4720] */ + { 1573, 0x9E3779B185EBCA8DULL, { 0xEA89C3A24A345C43ULL, 0x464DA78828B0D331ULL } }, /* XSUM_XXH128_testdata[4721] */ + { 1574, 0x0000000000000000ULL, { 0xF9178CB0888E6943ULL, 0x9903ED415639E308ULL } }, /* XSUM_XXH128_testdata[4722] */ + { 1574, 0x000000009E3779B1ULL, { 0xD7E063D8F465EA64ULL, 0x65B2E8A9C25835F0ULL } }, /* XSUM_XXH128_testdata[4723] */ + { 1574, 0x9E3779B185EBCA8DULL, { 0x9E31837E985F353EULL, 0x02C0D37FBEF7B40AULL } }, /* XSUM_XXH128_testdata[4724] */ + { 1575, 0x0000000000000000ULL, { 0x83C0F764EFF0AD9BULL, 0x1BDA024A626739D5ULL } }, /* XSUM_XXH128_testdata[4725] */ + { 1575, 0x000000009E3779B1ULL, { 0x7F81ACDB5652E3BAULL, 0x078B060D3D93829EULL } }, /* XSUM_XXH128_testdata[4726] */ + { 1575, 0x9E3779B185EBCA8DULL, { 0xF3CD0D6F71B8B8ACULL, 0x6F838321C13F843CULL } }, /* XSUM_XXH128_testdata[4727] */ + { 1576, 0x0000000000000000ULL, { 0xD05C1CB5990DD48EULL, 0xB1E0C56B15805B04ULL } }, /* XSUM_XXH128_testdata[4728] */ + { 1576, 0x000000009E3779B1ULL, { 0x0677C53712FD9CA1ULL, 0xECBC16A866897DC5ULL } }, /* XSUM_XXH128_testdata[4729] */ + { 1576, 0x9E3779B185EBCA8DULL, { 0xFFC0ED23DC372AEDULL, 0x997D1AC72C1299FEULL } }, /* XSUM_XXH128_testdata[4730] */ + { 1577, 0x0000000000000000ULL, { 0xD05B8448D4A4C37FULL, 0x9D789D4AB3AEF072ULL } }, /* XSUM_XXH128_testdata[4731] */ + { 1577, 0x000000009E3779B1ULL, { 0x45189067323EDB15ULL, 0x1C00902F6135D39CULL } }, /* XSUM_XXH128_testdata[4732] */ + { 1577, 0x9E3779B185EBCA8DULL, { 0x6AB0B55BAEC26ED0ULL, 0x99444C90B7B7B5B7ULL } }, /* XSUM_XXH128_testdata[4733] */ + { 1578, 0x0000000000000000ULL, { 0xF2E07A2139BBB81FULL, 0xB04F443D84669721ULL } }, /* XSUM_XXH128_testdata[4734] */ + { 1578, 0x000000009E3779B1ULL, { 0xD9B397442F68F5D3ULL, 0x3B5419FEDDF97E5CULL } }, /* XSUM_XXH128_testdata[4735] */ + { 1578, 0x9E3779B185EBCA8DULL, { 0x4E69AE6DC4D111B1ULL, 0xFB0D00A26079A00DULL } }, /* XSUM_XXH128_testdata[4736] */ + { 1579, 0x0000000000000000ULL, { 0x34C565FFFC42CE11ULL, 0xA1B6F384CA76B2C3ULL } }, /* XSUM_XXH128_testdata[4737] */ + { 1579, 0x000000009E3779B1ULL, { 0x639B111122D6ABBCULL, 0xEC38213FF02C3040ULL } }, /* XSUM_XXH128_testdata[4738] */ + { 1579, 0x9E3779B185EBCA8DULL, { 0x698082A359102999ULL, 0xACC82115A0437AA2ULL } }, /* XSUM_XXH128_testdata[4739] */ + { 1580, 0x0000000000000000ULL, { 0x3963318475805AF5ULL, 0xB0FD11FFEAD218CBULL } }, /* XSUM_XXH128_testdata[4740] */ + { 1580, 0x000000009E3779B1ULL, { 0xDB6BA762560C51B5ULL, 0xBF16A15161D20B5AULL } }, /* XSUM_XXH128_testdata[4741] */ + { 1580, 0x9E3779B185EBCA8DULL, { 0xC1EED8DDAAE46BC7ULL, 0x43DC4475C12FDA57ULL } }, /* XSUM_XXH128_testdata[4742] */ + { 1581, 0x0000000000000000ULL, { 0x84D1EC769B21AF34ULL, 0x7F7A3806C6B9DB6FULL } }, /* XSUM_XXH128_testdata[4743] */ + { 1581, 0x000000009E3779B1ULL, { 0x04F512E3A5A9B90AULL, 0xF5246E6C268E64D1ULL } }, /* XSUM_XXH128_testdata[4744] */ + { 1581, 0x9E3779B185EBCA8DULL, { 0x2998D1C9AE709AF6ULL, 0xB58310B0E770170CULL } }, /* XSUM_XXH128_testdata[4745] */ + { 1582, 0x0000000000000000ULL, { 0x8AC3925462820D1AULL, 0xAF7E5D061ED889C0ULL } }, /* XSUM_XXH128_testdata[4746] */ + { 1582, 0x000000009E3779B1ULL, { 0x58C598DE8041D635ULL, 0xFA3BCB83CC490CC0ULL } }, /* XSUM_XXH128_testdata[4747] */ + { 1582, 0x9E3779B185EBCA8DULL, { 0x6C4206FE79F48927ULL, 0x2565DD5D44B77F16ULL } }, /* XSUM_XXH128_testdata[4748] */ + { 1583, 0x0000000000000000ULL, { 0x320B91A78829FD61ULL, 0x9624B0F715101193ULL } }, /* XSUM_XXH128_testdata[4749] */ + { 1583, 0x000000009E3779B1ULL, { 0xE4BE9D6884F5EC5AULL, 0xFAB88A3542E92848ULL } }, /* XSUM_XXH128_testdata[4750] */ + { 1583, 0x9E3779B185EBCA8DULL, { 0x99D8E29048DFF054ULL, 0x3AF250F3A7F3E2C3ULL } }, /* XSUM_XXH128_testdata[4751] */ + { 1584, 0x0000000000000000ULL, { 0x112D360DABC99809ULL, 0x301863597ED5D6D7ULL } }, /* XSUM_XXH128_testdata[4752] */ + { 1584, 0x000000009E3779B1ULL, { 0xD0A6B015B86AD528ULL, 0xC3BD17327DF0DCDDULL } }, /* XSUM_XXH128_testdata[4753] */ + { 1584, 0x9E3779B185EBCA8DULL, { 0x69BFB77290E9E380ULL, 0x8D2EB87920CE7585ULL } }, /* XSUM_XXH128_testdata[4754] */ + { 1585, 0x0000000000000000ULL, { 0x16B8F188490984EFULL, 0xC887EF3F5C3F300EULL } }, /* XSUM_XXH128_testdata[4755] */ + { 1585, 0x000000009E3779B1ULL, { 0x4293F62B68083EE8ULL, 0xF8732A3FE1D5BCB1ULL } }, /* XSUM_XXH128_testdata[4756] */ + { 1585, 0x9E3779B185EBCA8DULL, { 0x974160CE63804BF2ULL, 0x9C91396A4F6A05DBULL } }, /* XSUM_XXH128_testdata[4757] */ + { 1586, 0x0000000000000000ULL, { 0x0D4E515CA984876DULL, 0x4813D69E24A236B9ULL } }, /* XSUM_XXH128_testdata[4758] */ + { 1586, 0x000000009E3779B1ULL, { 0x402D410DB3090526ULL, 0xC764542BAAB8EEE1ULL } }, /* XSUM_XXH128_testdata[4759] */ + { 1586, 0x9E3779B185EBCA8DULL, { 0x1D24D2E86F9CEB03ULL, 0x4A342313A99BAB56ULL } }, /* XSUM_XXH128_testdata[4760] */ + { 1587, 0x0000000000000000ULL, { 0xEA40D4F216011220ULL, 0xAEB1DFFCF71C6160ULL } }, /* XSUM_XXH128_testdata[4761] */ + { 1587, 0x000000009E3779B1ULL, { 0x440089E91708CC61ULL, 0xA41ECC9533653F91ULL } }, /* XSUM_XXH128_testdata[4762] */ + { 1587, 0x9E3779B185EBCA8DULL, { 0x4C9D21C5C10274C0ULL, 0x5BC459768D9F7D8DULL } }, /* XSUM_XXH128_testdata[4763] */ + { 1588, 0x0000000000000000ULL, { 0x10E0750B26E84A86ULL, 0x525C60D80B6C0E58ULL } }, /* XSUM_XXH128_testdata[4764] */ + { 1588, 0x000000009E3779B1ULL, { 0xB81B7B4DC1FA8046ULL, 0x029AF46564F502DEULL } }, /* XSUM_XXH128_testdata[4765] */ + { 1588, 0x9E3779B185EBCA8DULL, { 0xB75D8AEB8E40B44FULL, 0x4093567C843369A9ULL } }, /* XSUM_XXH128_testdata[4766] */ + { 1589, 0x0000000000000000ULL, { 0xDCC57A0AB1580C5BULL, 0xA09692A0F438F54FULL } }, /* XSUM_XXH128_testdata[4767] */ + { 1589, 0x000000009E3779B1ULL, { 0x850B229A25D65550ULL, 0xC079C09CB170E46DULL } }, /* XSUM_XXH128_testdata[4768] */ + { 1589, 0x9E3779B185EBCA8DULL, { 0xB0C608AD7843BF68ULL, 0xE88483B879F3A40CULL } }, /* XSUM_XXH128_testdata[4769] */ + { 1590, 0x0000000000000000ULL, { 0xE15F4B8D47E84506ULL, 0x1845E243B6AB308EULL } }, /* XSUM_XXH128_testdata[4770] */ + { 1590, 0x000000009E3779B1ULL, { 0xE69D3921E9B9E9C2ULL, 0x33A1B82A33B6A6A2ULL } }, /* XSUM_XXH128_testdata[4771] */ + { 1590, 0x9E3779B185EBCA8DULL, { 0xAE5AA10BB05F0E6DULL, 0xEF198B36DBC46609ULL } }, /* XSUM_XXH128_testdata[4772] */ + { 1591, 0x0000000000000000ULL, { 0xD863C7852DDB5F10ULL, 0x030A9C906CCD0839ULL } }, /* XSUM_XXH128_testdata[4773] */ + { 1591, 0x000000009E3779B1ULL, { 0x87DF8B260634FD24ULL, 0x84DA4CF3F0C87C0EULL } }, /* XSUM_XXH128_testdata[4774] */ + { 1591, 0x9E3779B185EBCA8DULL, { 0xFE9C2267D9503D0FULL, 0x9038C1C166438A24ULL } }, /* XSUM_XXH128_testdata[4775] */ + { 1592, 0x0000000000000000ULL, { 0x2022B8A266768AC2ULL, 0x6A3E84008F4C8430ULL } }, /* XSUM_XXH128_testdata[4776] */ + { 1592, 0x000000009E3779B1ULL, { 0x0B2445C0FBAE8D62ULL, 0x68FC75DFB3FC01ECULL } }, /* XSUM_XXH128_testdata[4777] */ + { 1592, 0x9E3779B185EBCA8DULL, { 0xC662236FD63B5820ULL, 0x24DBED8DE36A1756ULL } }, /* XSUM_XXH128_testdata[4778] */ + { 1593, 0x0000000000000000ULL, { 0xBA04DF2747C3E87BULL, 0xA66841CBC146FC14ULL } }, /* XSUM_XXH128_testdata[4779] */ + { 1593, 0x000000009E3779B1ULL, { 0xC9F85E2DEB874060ULL, 0x59174ED6BFCE324DULL } }, /* XSUM_XXH128_testdata[4780] */ + { 1593, 0x9E3779B185EBCA8DULL, { 0x74E98904F9C426C7ULL, 0x8ED4493CB187D2BDULL } }, /* XSUM_XXH128_testdata[4781] */ + { 1594, 0x0000000000000000ULL, { 0x68779DC926FC7E52ULL, 0x4A02490019DD63C0ULL } }, /* XSUM_XXH128_testdata[4782] */ + { 1594, 0x000000009E3779B1ULL, { 0x33A89E45D0F3B23BULL, 0xFB85BB05420F3484ULL } }, /* XSUM_XXH128_testdata[4783] */ + { 1594, 0x9E3779B185EBCA8DULL, { 0x80DD4F7449DC2620ULL, 0x28257DFA7D3071D7ULL } }, /* XSUM_XXH128_testdata[4784] */ + { 1595, 0x0000000000000000ULL, { 0x2A599C5CCD84D18BULL, 0x20C4D22C4DF2B977ULL } }, /* XSUM_XXH128_testdata[4785] */ + { 1595, 0x000000009E3779B1ULL, { 0x31F2F7B60BB03ECEULL, 0x9B97E9FB0AC3DA40ULL } }, /* XSUM_XXH128_testdata[4786] */ + { 1595, 0x9E3779B185EBCA8DULL, { 0x8191AD0EBF33CE41ULL, 0x156BB949B60AA4CBULL } }, /* XSUM_XXH128_testdata[4787] */ + { 1596, 0x0000000000000000ULL, { 0xA995602BA643AB19ULL, 0x25573184660AD238ULL } }, /* XSUM_XXH128_testdata[4788] */ + { 1596, 0x000000009E3779B1ULL, { 0x78F8B314967E3767ULL, 0xAFB3FB0C89C83A67ULL } }, /* XSUM_XXH128_testdata[4789] */ + { 1596, 0x9E3779B185EBCA8DULL, { 0xF373DF9D9F20E755ULL, 0xF0C5ACA307D6E3B2ULL } }, /* XSUM_XXH128_testdata[4790] */ + { 1597, 0x0000000000000000ULL, { 0x6E38B17B9962B35BULL, 0x1B4974751FDB2C89ULL } }, /* XSUM_XXH128_testdata[4791] */ + { 1597, 0x000000009E3779B1ULL, { 0x40EA0811E39C160FULL, 0xC48B12F876E2A515ULL } }, /* XSUM_XXH128_testdata[4792] */ + { 1597, 0x9E3779B185EBCA8DULL, { 0x145F6E75FAAEC511ULL, 0x0E66CE3C45C7F6A2ULL } }, /* XSUM_XXH128_testdata[4793] */ + { 1598, 0x0000000000000000ULL, { 0x2E423B8EBC700658ULL, 0x022CDB7EF672BE28ULL } }, /* XSUM_XXH128_testdata[4794] */ + { 1598, 0x000000009E3779B1ULL, { 0x38A5885A0C07479AULL, 0x4DE8551E192BE445ULL } }, /* XSUM_XXH128_testdata[4795] */ + { 1598, 0x9E3779B185EBCA8DULL, { 0x78A51671DC129C26ULL, 0xDE9F7FB32C02D38BULL } }, /* XSUM_XXH128_testdata[4796] */ + { 1599, 0x0000000000000000ULL, { 0x4250EA93B2DB41F0ULL, 0x604F5D376B70A991ULL } }, /* XSUM_XXH128_testdata[4797] */ + { 1599, 0x000000009E3779B1ULL, { 0x943468E14175DFDAULL, 0x5153510A15E31635ULL } }, /* XSUM_XXH128_testdata[4798] */ + { 1599, 0x9E3779B185EBCA8DULL, { 0xF1EEE97E41EAAB59ULL, 0x153C4A604D421418ULL } }, /* XSUM_XXH128_testdata[4799] */ + { 1600, 0x0000000000000000ULL, { 0x71FF997900401775ULL, 0x41D6F545968A3C00ULL } }, /* XSUM_XXH128_testdata[4800] */ + { 1600, 0x000000009E3779B1ULL, { 0x724CEA6E07BF1C6AULL, 0x039A01306B39E51EULL } }, /* XSUM_XXH128_testdata[4801] */ + { 1600, 0x9E3779B185EBCA8DULL, { 0x5984E7BDFEEF8AF9ULL, 0x6149425AD118CF6AULL } }, /* XSUM_XXH128_testdata[4802] */ + { 1601, 0x0000000000000000ULL, { 0x22E47641F3402193ULL, 0x2CC3959A4C8295DAULL } }, /* XSUM_XXH128_testdata[4803] */ + { 1601, 0x000000009E3779B1ULL, { 0xA2D53DA7E09B31F6ULL, 0x37903E10D119CE1BULL } }, /* XSUM_XXH128_testdata[4804] */ + { 1601, 0x9E3779B185EBCA8DULL, { 0xB624402888163BA7ULL, 0xF40D0000D72D6F37ULL } }, /* XSUM_XXH128_testdata[4805] */ + { 1602, 0x0000000000000000ULL, { 0xA50DDE1B67EA934FULL, 0x72EB5F498C43B712ULL } }, /* XSUM_XXH128_testdata[4806] */ + { 1602, 0x000000009E3779B1ULL, { 0x826490298840CA5FULL, 0x189039A3BF2FEB8FULL } }, /* XSUM_XXH128_testdata[4807] */ + { 1602, 0x9E3779B185EBCA8DULL, { 0xF5C10997A1A43E57ULL, 0x0418122A94763BD5ULL } }, /* XSUM_XXH128_testdata[4808] */ + { 1603, 0x0000000000000000ULL, { 0x94938C01F4D09D24ULL, 0x7D77DE2CC852EB0FULL } }, /* XSUM_XXH128_testdata[4809] */ + { 1603, 0x000000009E3779B1ULL, { 0x4DB03D9A521AD753ULL, 0x69DE7B5E70F8536FULL } }, /* XSUM_XXH128_testdata[4810] */ + { 1603, 0x9E3779B185EBCA8DULL, { 0x2711DB4DDF2692E2ULL, 0x1232478959DD53D2ULL } }, /* XSUM_XXH128_testdata[4811] */ + { 1604, 0x0000000000000000ULL, { 0xB1F4EDFF84361AD4ULL, 0x52ED8A669638BAEAULL } }, /* XSUM_XXH128_testdata[4812] */ + { 1604, 0x000000009E3779B1ULL, { 0xD132C7B802386357ULL, 0xC6FA7908D9480D19ULL } }, /* XSUM_XXH128_testdata[4813] */ + { 1604, 0x9E3779B185EBCA8DULL, { 0xF52B9AC7BA89D7EDULL, 0x86E32EE1BA6CE4CDULL } }, /* XSUM_XXH128_testdata[4814] */ + { 1605, 0x0000000000000000ULL, { 0xA6E594E6C06C0199ULL, 0x637C2CC223E50EA6ULL } }, /* XSUM_XXH128_testdata[4815] */ + { 1605, 0x000000009E3779B1ULL, { 0x1C6E0BBEA9C851E6ULL, 0x40F8588B2A530EBFULL } }, /* XSUM_XXH128_testdata[4816] */ + { 1605, 0x9E3779B185EBCA8DULL, { 0x12E6ED29DB7AC71CULL, 0x09592395E7765961ULL } }, /* XSUM_XXH128_testdata[4817] */ + { 1606, 0x0000000000000000ULL, { 0x87697AA039DF4CB7ULL, 0x8A7963379B54B015ULL } }, /* XSUM_XXH128_testdata[4818] */ + { 1606, 0x000000009E3779B1ULL, { 0xA30602D09F9FBB44ULL, 0x792DBDA0A72433B4ULL } }, /* XSUM_XXH128_testdata[4819] */ + { 1606, 0x9E3779B185EBCA8DULL, { 0x979313367467A225ULL, 0x7D1DFA681029F4FAULL } }, /* XSUM_XXH128_testdata[4820] */ + { 1607, 0x0000000000000000ULL, { 0x47AE8754657B2C1FULL, 0x3BB7A991BE3016B5ULL } }, /* XSUM_XXH128_testdata[4821] */ + { 1607, 0x000000009E3779B1ULL, { 0x0A3A51259808D26EULL, 0xD71B38B73B266B88ULL } }, /* XSUM_XXH128_testdata[4822] */ + { 1607, 0x9E3779B185EBCA8DULL, { 0x48337844D7C78DBAULL, 0x13997B617E972B8DULL } }, /* XSUM_XXH128_testdata[4823] */ + { 1608, 0x0000000000000000ULL, { 0x12271A02E802A432ULL, 0x94913574AC872C3EULL } }, /* XSUM_XXH128_testdata[4824] */ + { 1608, 0x000000009E3779B1ULL, { 0xB13270380605AB07ULL, 0xE4E52859854AB0C8ULL } }, /* XSUM_XXH128_testdata[4825] */ + { 1608, 0x9E3779B185EBCA8DULL, { 0xE0FB066273556224ULL, 0x46EFC63B9EA38C24ULL } }, /* XSUM_XXH128_testdata[4826] */ + { 1609, 0x0000000000000000ULL, { 0x1297AD9988374E37ULL, 0xDCDD0D79D8AAA329ULL } }, /* XSUM_XXH128_testdata[4827] */ + { 1609, 0x000000009E3779B1ULL, { 0x6820D2550B5FE403ULL, 0xB8534AC9119E9304ULL } }, /* XSUM_XXH128_testdata[4828] */ + { 1609, 0x9E3779B185EBCA8DULL, { 0x139B0231FA6AFBBBULL, 0x97BC9E5363F5D8BFULL } }, /* XSUM_XXH128_testdata[4829] */ + { 1610, 0x0000000000000000ULL, { 0x14B7882A424AE188ULL, 0x6706C52EF1D48C71ULL } }, /* XSUM_XXH128_testdata[4830] */ + { 1610, 0x000000009E3779B1ULL, { 0xDA3C47A2C583A88EULL, 0x6FA65F0D46C77DCEULL } }, /* XSUM_XXH128_testdata[4831] */ + { 1610, 0x9E3779B185EBCA8DULL, { 0xD1391165C4114251ULL, 0x1E52062A20D05767ULL } }, /* XSUM_XXH128_testdata[4832] */ + { 1611, 0x0000000000000000ULL, { 0x765420480C733AA5ULL, 0x957EB0440AB2B4DCULL } }, /* XSUM_XXH128_testdata[4833] */ + { 1611, 0x000000009E3779B1ULL, { 0x8EA47445EC31436EULL, 0xD4F594EE33C92CA7ULL } }, /* XSUM_XXH128_testdata[4834] */ + { 1611, 0x9E3779B185EBCA8DULL, { 0x0981C72C51AFC089ULL, 0xC7F4C2C90C4A029EULL } }, /* XSUM_XXH128_testdata[4835] */ + { 1612, 0x0000000000000000ULL, { 0xA7A2E1C6B74DF5B2ULL, 0x687441922754A28FULL } }, /* XSUM_XXH128_testdata[4836] */ + { 1612, 0x000000009E3779B1ULL, { 0x9E1BEFC269DB0EA5ULL, 0xB492A445058B8D5DULL } }, /* XSUM_XXH128_testdata[4837] */ + { 1612, 0x9E3779B185EBCA8DULL, { 0xAB31848E7F122EEBULL, 0x96610148C135C9FCULL } }, /* XSUM_XXH128_testdata[4838] */ + { 1613, 0x0000000000000000ULL, { 0x67E105DE318E43BAULL, 0x8BAB55A037D67F64ULL } }, /* XSUM_XXH128_testdata[4839] */ + { 1613, 0x000000009E3779B1ULL, { 0x5B9AAFE009F094E0ULL, 0xD7DD19052DCE0158ULL } }, /* XSUM_XXH128_testdata[4840] */ + { 1613, 0x9E3779B185EBCA8DULL, { 0xCF882ACCB3F0F8F7ULL, 0x89FE63B55AAE71DDULL } }, /* XSUM_XXH128_testdata[4841] */ + { 1614, 0x0000000000000000ULL, { 0x99A0079B783E73B6ULL, 0x32D1E0F3C042D7DEULL } }, /* XSUM_XXH128_testdata[4842] */ + { 1614, 0x000000009E3779B1ULL, { 0x57FCA87789E626FAULL, 0x43CD90D3EC3A2B66ULL } }, /* XSUM_XXH128_testdata[4843] */ + { 1614, 0x9E3779B185EBCA8DULL, { 0x8FCFA40C58CDE8A6ULL, 0x3A5996131471F1EAULL } }, /* XSUM_XXH128_testdata[4844] */ + { 1615, 0x0000000000000000ULL, { 0x0858FEE83C484F6CULL, 0x13DC8466F9FE72E9ULL } }, /* XSUM_XXH128_testdata[4845] */ + { 1615, 0x000000009E3779B1ULL, { 0xBE680AADD556928AULL, 0xBED5DBA978D77843ULL } }, /* XSUM_XXH128_testdata[4846] */ + { 1615, 0x9E3779B185EBCA8DULL, { 0x0818C90CD2F2F4FDULL, 0x524CA226B9D1554BULL } }, /* XSUM_XXH128_testdata[4847] */ + { 1616, 0x0000000000000000ULL, { 0x3B8A4AB709227959ULL, 0x02B7365CF903EF77ULL } }, /* XSUM_XXH128_testdata[4848] */ + { 1616, 0x000000009E3779B1ULL, { 0xB045BDDB2E5D2BF7ULL, 0x54628AEDF210A384ULL } }, /* XSUM_XXH128_testdata[4849] */ + { 1616, 0x9E3779B185EBCA8DULL, { 0x058048EAE6C53033ULL, 0x95DC71B4FF1CB13DULL } }, /* XSUM_XXH128_testdata[4850] */ + { 1617, 0x0000000000000000ULL, { 0xAA6A5396B6B40848ULL, 0x934D557757F8A0C8ULL } }, /* XSUM_XXH128_testdata[4851] */ + { 1617, 0x000000009E3779B1ULL, { 0xFF27CCB4B452AEEDULL, 0xF4D1CC062915322AULL } }, /* XSUM_XXH128_testdata[4852] */ + { 1617, 0x9E3779B185EBCA8DULL, { 0xE1CAEDB3665A1933ULL, 0xDC6DDEE21647936AULL } }, /* XSUM_XXH128_testdata[4853] */ + { 1618, 0x0000000000000000ULL, { 0x30C6D76861300D5AULL, 0x96C9E98F4D1CF0A5ULL } }, /* XSUM_XXH128_testdata[4854] */ + { 1618, 0x000000009E3779B1ULL, { 0xDE8AD75FEFA028A4ULL, 0x7648D644A5228BD4ULL } }, /* XSUM_XXH128_testdata[4855] */ + { 1618, 0x9E3779B185EBCA8DULL, { 0x5B6C1E42371F2CEDULL, 0x2E37E56840CAD4FCULL } }, /* XSUM_XXH128_testdata[4856] */ + { 1619, 0x0000000000000000ULL, { 0x41C32C29046DFB1BULL, 0x9A3F1D7F0E2678A4ULL } }, /* XSUM_XXH128_testdata[4857] */ + { 1619, 0x000000009E3779B1ULL, { 0x38ABE02E461EF2A7ULL, 0x80DFEC43A9E9DA04ULL } }, /* XSUM_XXH128_testdata[4858] */ + { 1619, 0x9E3779B185EBCA8DULL, { 0x8B03BBBF38A73028ULL, 0xAB115347671AEF4FULL } }, /* XSUM_XXH128_testdata[4859] */ + { 1620, 0x0000000000000000ULL, { 0xAFF70C02F131727AULL, 0x49F9236E5B0A5B3AULL } }, /* XSUM_XXH128_testdata[4860] */ + { 1620, 0x000000009E3779B1ULL, { 0xD09F355F072C6DF7ULL, 0x38E2A45DC7B6BF11ULL } }, /* XSUM_XXH128_testdata[4861] */ + { 1620, 0x9E3779B185EBCA8DULL, { 0x37ECE73A63C9C6E7ULL, 0x58A19EA37359F0FFULL } }, /* XSUM_XXH128_testdata[4862] */ + { 1621, 0x0000000000000000ULL, { 0x50DA203DB32C676CULL, 0x26444D8365898A51ULL } }, /* XSUM_XXH128_testdata[4863] */ + { 1621, 0x000000009E3779B1ULL, { 0x26722460078B5B9AULL, 0x0E50FEB1E0B61E14ULL } }, /* XSUM_XXH128_testdata[4864] */ + { 1621, 0x9E3779B185EBCA8DULL, { 0x5311BE5731F735A4ULL, 0xC57670A5E0D905D5ULL } }, /* XSUM_XXH128_testdata[4865] */ + { 1622, 0x0000000000000000ULL, { 0x075E01320DD1A984ULL, 0x2EB74118257E4342ULL } }, /* XSUM_XXH128_testdata[4866] */ + { 1622, 0x000000009E3779B1ULL, { 0xDA5D4ECC8FA78918ULL, 0xE6AA7521E4EAD5FDULL } }, /* XSUM_XXH128_testdata[4867] */ + { 1622, 0x9E3779B185EBCA8DULL, { 0x83F5BFCA88648CA4ULL, 0x35A49BD4627707D6ULL } }, /* XSUM_XXH128_testdata[4868] */ + { 1623, 0x0000000000000000ULL, { 0xC17245BEB95F51CCULL, 0x1B0692FC568E0649ULL } }, /* XSUM_XXH128_testdata[4869] */ + { 1623, 0x000000009E3779B1ULL, { 0xCF3545A824C83C1FULL, 0x8B1DF21824864110ULL } }, /* XSUM_XXH128_testdata[4870] */ + { 1623, 0x9E3779B185EBCA8DULL, { 0xFB3B4E6C9B25BB52ULL, 0xC960FC3BAFE76317ULL } }, /* XSUM_XXH128_testdata[4871] */ + { 1624, 0x0000000000000000ULL, { 0x7C4E6FD45D040135ULL, 0x1F4B3D96DE5D9AFDULL } }, /* XSUM_XXH128_testdata[4872] */ + { 1624, 0x000000009E3779B1ULL, { 0x3B93FA6B1C3B333CULL, 0x0523596073D255AFULL } }, /* XSUM_XXH128_testdata[4873] */ + { 1624, 0x9E3779B185EBCA8DULL, { 0xF3E579FAE8BEAE00ULL, 0x05EF8EEAA114C150ULL } }, /* XSUM_XXH128_testdata[4874] */ + { 1625, 0x0000000000000000ULL, { 0xB19353267D0B0A9BULL, 0xD93696629E1F3696ULL } }, /* XSUM_XXH128_testdata[4875] */ + { 1625, 0x000000009E3779B1ULL, { 0x3D52922A4BCCA490ULL, 0x77706942680D8CC2ULL } }, /* XSUM_XXH128_testdata[4876] */ + { 1625, 0x9E3779B185EBCA8DULL, { 0x307746B475A22529ULL, 0x5210C08E1A6B91BCULL } }, /* XSUM_XXH128_testdata[4877] */ + { 1626, 0x0000000000000000ULL, { 0x76749D9B41C79BBFULL, 0xC20EDC1461DD81FEULL } }, /* XSUM_XXH128_testdata[4878] */ + { 1626, 0x000000009E3779B1ULL, { 0x07A31C32F7523C56ULL, 0xBB19CF3EC6C40A21ULL } }, /* XSUM_XXH128_testdata[4879] */ + { 1626, 0x9E3779B185EBCA8DULL, { 0x4BF36CBFD5929113ULL, 0xBC0695FD59DACCA3ULL } }, /* XSUM_XXH128_testdata[4880] */ + { 1627, 0x0000000000000000ULL, { 0xD6E04C9EF0D9EAE0ULL, 0xD5B362310CC6836BULL } }, /* XSUM_XXH128_testdata[4881] */ + { 1627, 0x000000009E3779B1ULL, { 0x73BCF4CABEB688AEULL, 0xF62A7D893FEE991DULL } }, /* XSUM_XXH128_testdata[4882] */ + { 1627, 0x9E3779B185EBCA8DULL, { 0x57C9CDC8EC7799F6ULL, 0x18A8EA11FDDD9513ULL } }, /* XSUM_XXH128_testdata[4883] */ + { 1628, 0x0000000000000000ULL, { 0x65C8FF68B614224DULL, 0x3BC85F89223C7A90ULL } }, /* XSUM_XXH128_testdata[4884] */ + { 1628, 0x000000009E3779B1ULL, { 0xB2A56449726D3BD5ULL, 0xD33A16227148A17BULL } }, /* XSUM_XXH128_testdata[4885] */ + { 1628, 0x9E3779B185EBCA8DULL, { 0x14C70C1230F3E37DULL, 0x51D34150EE6EDAD9ULL } }, /* XSUM_XXH128_testdata[4886] */ + { 1629, 0x0000000000000000ULL, { 0xD6A1C15797266322ULL, 0x9471E73049CA5C4FULL } }, /* XSUM_XXH128_testdata[4887] */ + { 1629, 0x000000009E3779B1ULL, { 0xC3BD470EF469AF2EULL, 0xA6001D5BD43DF131ULL } }, /* XSUM_XXH128_testdata[4888] */ + { 1629, 0x9E3779B185EBCA8DULL, { 0x48CA0737C2DAE640ULL, 0xC4CECBA18CAA261CULL } }, /* XSUM_XXH128_testdata[4889] */ + { 1630, 0x0000000000000000ULL, { 0x4E1F343CC83DC406ULL, 0xFF385ED8A9C49084ULL } }, /* XSUM_XXH128_testdata[4890] */ + { 1630, 0x000000009E3779B1ULL, { 0x0749230A8D7FA702ULL, 0x03193A2398C38F11ULL } }, /* XSUM_XXH128_testdata[4891] */ + { 1630, 0x9E3779B185EBCA8DULL, { 0x66E0DB150C7A7C1FULL, 0x452C97E400079BAFULL } }, /* XSUM_XXH128_testdata[4892] */ + { 1631, 0x0000000000000000ULL, { 0xAF66891B587A8E00ULL, 0x95ABB6A8C479341BULL } }, /* XSUM_XXH128_testdata[4893] */ + { 1631, 0x000000009E3779B1ULL, { 0xE191D107C5D910CBULL, 0xEEC8275FD3278B12ULL } }, /* XSUM_XXH128_testdata[4894] */ + { 1631, 0x9E3779B185EBCA8DULL, { 0xB82DC2CE06D93DA0ULL, 0xF23697C235CD9F92ULL } }, /* XSUM_XXH128_testdata[4895] */ + { 1632, 0x0000000000000000ULL, { 0xAF73A17D73A67E4FULL, 0x6DF71F474663F6CAULL } }, /* XSUM_XXH128_testdata[4896] */ + { 1632, 0x000000009E3779B1ULL, { 0x905D2F8E7F6CA215ULL, 0x0571D3DF2039ED41ULL } }, /* XSUM_XXH128_testdata[4897] */ + { 1632, 0x9E3779B185EBCA8DULL, { 0x114DE89BE9154238ULL, 0x2D0AFCE670040B22ULL } }, /* XSUM_XXH128_testdata[4898] */ + { 1633, 0x0000000000000000ULL, { 0xCBAAF0DF2B180938ULL, 0x2FA001BE52298AE8ULL } }, /* XSUM_XXH128_testdata[4899] */ + { 1633, 0x000000009E3779B1ULL, { 0x5AA15288AAFD889BULL, 0xA67E7EF856893475ULL } }, /* XSUM_XXH128_testdata[4900] */ + { 1633, 0x9E3779B185EBCA8DULL, { 0x0B72E53782CAA73AULL, 0xD75B4C84A82DDB2BULL } }, /* XSUM_XXH128_testdata[4901] */ + { 1634, 0x0000000000000000ULL, { 0x9527CB7715757627ULL, 0x1205D5FE290D2556ULL } }, /* XSUM_XXH128_testdata[4902] */ + { 1634, 0x000000009E3779B1ULL, { 0xFC7B9A271A03F9F0ULL, 0xEB119C1F048828EFULL } }, /* XSUM_XXH128_testdata[4903] */ + { 1634, 0x9E3779B185EBCA8DULL, { 0xA732AF53D04AB047ULL, 0x7D9808AEA9656607ULL } }, /* XSUM_XXH128_testdata[4904] */ + { 1635, 0x0000000000000000ULL, { 0xF3506A787F72DC49ULL, 0x100C9E2D67FA7F68ULL } }, /* XSUM_XXH128_testdata[4905] */ + { 1635, 0x000000009E3779B1ULL, { 0x38B039CCAAFB78B5ULL, 0x94E33B5F0D819939ULL } }, /* XSUM_XXH128_testdata[4906] */ + { 1635, 0x9E3779B185EBCA8DULL, { 0xFF6B5F5D0B526102ULL, 0x8937CB6060F1CC56ULL } }, /* XSUM_XXH128_testdata[4907] */ + { 1636, 0x0000000000000000ULL, { 0xF01532579D0BA6D9ULL, 0x32FE0FFA8408ADFCULL } }, /* XSUM_XXH128_testdata[4908] */ + { 1636, 0x000000009E3779B1ULL, { 0x410F1D8427C4F7FDULL, 0xE74B0F97F55D3860ULL } }, /* XSUM_XXH128_testdata[4909] */ + { 1636, 0x9E3779B185EBCA8DULL, { 0x6B68A4D5AD606A8AULL, 0x29B7579C9D97F80AULL } }, /* XSUM_XXH128_testdata[4910] */ + { 1637, 0x0000000000000000ULL, { 0xB69DE7BA82EFD875ULL, 0xCEE64EED3DAB3275ULL } }, /* XSUM_XXH128_testdata[4911] */ + { 1637, 0x000000009E3779B1ULL, { 0x2797057591EDEAAFULL, 0xE7278220B456F6E0ULL } }, /* XSUM_XXH128_testdata[4912] */ + { 1637, 0x9E3779B185EBCA8DULL, { 0xBBF9D11E0B127B7BULL, 0x0BF4B0D36A4A1954ULL } }, /* XSUM_XXH128_testdata[4913] */ + { 1638, 0x0000000000000000ULL, { 0x9E759E7D2EA04907ULL, 0xCEBF046D08F3D1E5ULL } }, /* XSUM_XXH128_testdata[4914] */ + { 1638, 0x000000009E3779B1ULL, { 0xA6DE9FA13C01E5D0ULL, 0xEC141B07E9CE5874ULL } }, /* XSUM_XXH128_testdata[4915] */ + { 1638, 0x9E3779B185EBCA8DULL, { 0x1450D25D3E22B389ULL, 0x369C013222BA67C0ULL } }, /* XSUM_XXH128_testdata[4916] */ + { 1639, 0x0000000000000000ULL, { 0x01269D1AC5DC8866ULL, 0x1868DE788E46713CULL } }, /* XSUM_XXH128_testdata[4917] */ + { 1639, 0x000000009E3779B1ULL, { 0x12321E2BD426AC53ULL, 0xDAF8F38F7002453BULL } }, /* XSUM_XXH128_testdata[4918] */ + { 1639, 0x9E3779B185EBCA8DULL, { 0xEEE6A6FA68BFD87AULL, 0x8B60D689A6701280ULL } }, /* XSUM_XXH128_testdata[4919] */ + { 1640, 0x0000000000000000ULL, { 0x8F5B615C253FC230ULL, 0xA35EF3100E10D95FULL } }, /* XSUM_XXH128_testdata[4920] */ + { 1640, 0x000000009E3779B1ULL, { 0x4E4B57B4E4CC2494ULL, 0x121113AFE08B4DC0ULL } }, /* XSUM_XXH128_testdata[4921] */ + { 1640, 0x9E3779B185EBCA8DULL, { 0x6478EDFD1874F981ULL, 0xD0EC55334F8DA3F5ULL } }, /* XSUM_XXH128_testdata[4922] */ + { 1641, 0x0000000000000000ULL, { 0xD3703DB9BB6EF8FFULL, 0x355510A559047CD0ULL } }, /* XSUM_XXH128_testdata[4923] */ + { 1641, 0x000000009E3779B1ULL, { 0x7BE6979E77E3DEA9ULL, 0xBBF5B754A6E13555ULL } }, /* XSUM_XXH128_testdata[4924] */ + { 1641, 0x9E3779B185EBCA8DULL, { 0x62D010D1C4F5576DULL, 0x527176E9AB01FF75ULL } }, /* XSUM_XXH128_testdata[4925] */ + { 1642, 0x0000000000000000ULL, { 0x3C81BC738A8E8163ULL, 0x443C0159331D2436ULL } }, /* XSUM_XXH128_testdata[4926] */ + { 1642, 0x000000009E3779B1ULL, { 0xF0AFEFC1CB7F39E3ULL, 0x9D464B20060964A9ULL } }, /* XSUM_XXH128_testdata[4927] */ + { 1642, 0x9E3779B185EBCA8DULL, { 0xA50FCCD23CB089ADULL, 0x3557F5AC771FC99AULL } }, /* XSUM_XXH128_testdata[4928] */ + { 1643, 0x0000000000000000ULL, { 0x5F5445667F780B4AULL, 0x3DC8E67A069F6F70ULL } }, /* XSUM_XXH128_testdata[4929] */ + { 1643, 0x000000009E3779B1ULL, { 0xB30E4863247EEE3BULL, 0xF38947DE3AA55ED1ULL } }, /* XSUM_XXH128_testdata[4930] */ + { 1643, 0x9E3779B185EBCA8DULL, { 0xCD803F4570D469D0ULL, 0xD83D08592A74FC84ULL } }, /* XSUM_XXH128_testdata[4931] */ + { 1644, 0x0000000000000000ULL, { 0xE2BDF51648BBA936ULL, 0x5DB0DFCEF864A54CULL } }, /* XSUM_XXH128_testdata[4932] */ + { 1644, 0x000000009E3779B1ULL, { 0x9C1517E184C4EC67ULL, 0x31D63DEBBB0EDEFFULL } }, /* XSUM_XXH128_testdata[4933] */ + { 1644, 0x9E3779B185EBCA8DULL, { 0x35B1A3249ECF3464ULL, 0x53DD2E76F6166E8DULL } }, /* XSUM_XXH128_testdata[4934] */ + { 1645, 0x0000000000000000ULL, { 0x8D98BFBEEF6C3CC7ULL, 0xD7D2FC69A93B3759ULL } }, /* XSUM_XXH128_testdata[4935] */ + { 1645, 0x000000009E3779B1ULL, { 0xA868435A190F4011ULL, 0x078392C51D4EE490ULL } }, /* XSUM_XXH128_testdata[4936] */ + { 1645, 0x9E3779B185EBCA8DULL, { 0xA90FCAF5D4A644E7ULL, 0x130C8AF939CD0432ULL } }, /* XSUM_XXH128_testdata[4937] */ + { 1646, 0x0000000000000000ULL, { 0x67E887DFAEF4DAB2ULL, 0x5CD753656FD355F7ULL } }, /* XSUM_XXH128_testdata[4938] */ + { 1646, 0x000000009E3779B1ULL, { 0xD4A0D00D9E3F919FULL, 0xAD711B1946700CD0ULL } }, /* XSUM_XXH128_testdata[4939] */ + { 1646, 0x9E3779B185EBCA8DULL, { 0x8A00FCF5A57F6B2AULL, 0x54BB590D4DF956C6ULL } }, /* XSUM_XXH128_testdata[4940] */ + { 1647, 0x0000000000000000ULL, { 0x0C424D06E1B35917ULL, 0xF833FC395B476AD0ULL } }, /* XSUM_XXH128_testdata[4941] */ + { 1647, 0x000000009E3779B1ULL, { 0xFCAE9FE225F4A599ULL, 0x3FE08D8A6CE9CADCULL } }, /* XSUM_XXH128_testdata[4942] */ + { 1647, 0x9E3779B185EBCA8DULL, { 0x2CDF0C10241732C0ULL, 0x946070172FAE2D35ULL } }, /* XSUM_XXH128_testdata[4943] */ + { 1648, 0x0000000000000000ULL, { 0x4EF489B5D71A4003ULL, 0x7636263EB349B58BULL } }, /* XSUM_XXH128_testdata[4944] */ + { 1648, 0x000000009E3779B1ULL, { 0x3DC656964B7D7DA2ULL, 0x9DB3AADE595EC59CULL } }, /* XSUM_XXH128_testdata[4945] */ + { 1648, 0x9E3779B185EBCA8DULL, { 0x77B9713EEC425B81ULL, 0x9C0514B1954C26D0ULL } }, /* XSUM_XXH128_testdata[4946] */ + { 1649, 0x0000000000000000ULL, { 0xC29F4F6458B40232ULL, 0xCB9D4F5F9A3580C4ULL } }, /* XSUM_XXH128_testdata[4947] */ + { 1649, 0x000000009E3779B1ULL, { 0xE8EC82CD04E2589CULL, 0x65BACD8B38B455ECULL } }, /* XSUM_XXH128_testdata[4948] */ + { 1649, 0x9E3779B185EBCA8DULL, { 0x90F4D5B5908D43E3ULL, 0x16DB76FC85D2E164ULL } }, /* XSUM_XXH128_testdata[4949] */ + { 1650, 0x0000000000000000ULL, { 0xAA6465C49BF0B5C6ULL, 0x7DC9E3CF5692ADFAULL } }, /* XSUM_XXH128_testdata[4950] */ + { 1650, 0x000000009E3779B1ULL, { 0x865021C45BC96B02ULL, 0xABB5B7EC5942B17CULL } }, /* XSUM_XXH128_testdata[4951] */ + { 1650, 0x9E3779B185EBCA8DULL, { 0xA1D1F284DECA2C8EULL, 0x1FBFD11D5508E63AULL } }, /* XSUM_XXH128_testdata[4952] */ + { 1651, 0x0000000000000000ULL, { 0xC8401D2FC2B52852ULL, 0x2709465FF82533A8ULL } }, /* XSUM_XXH128_testdata[4953] */ + { 1651, 0x000000009E3779B1ULL, { 0x23147346353CCA8DULL, 0xCA18D009C37DD24BULL } }, /* XSUM_XXH128_testdata[4954] */ + { 1651, 0x9E3779B185EBCA8DULL, { 0x992C175AD669C528ULL, 0x5A4A84A186A100DDULL } }, /* XSUM_XXH128_testdata[4955] */ + { 1652, 0x0000000000000000ULL, { 0x893BF660E7D10AC0ULL, 0x58E31E78526B7A6AULL } }, /* XSUM_XXH128_testdata[4956] */ + { 1652, 0x000000009E3779B1ULL, { 0x6D9CB64B3C48F637ULL, 0x003D738A9A810E3AULL } }, /* XSUM_XXH128_testdata[4957] */ + { 1652, 0x9E3779B185EBCA8DULL, { 0xA4A0679F2E0C8A4FULL, 0x988EFDC85D071A31ULL } }, /* XSUM_XXH128_testdata[4958] */ + { 1653, 0x0000000000000000ULL, { 0x8763E5C3902926A6ULL, 0x3096BFBC8374AD2AULL } }, /* XSUM_XXH128_testdata[4959] */ + { 1653, 0x000000009E3779B1ULL, { 0xDC3BDA00F3AEBCE2ULL, 0x589D20E48390B334ULL } }, /* XSUM_XXH128_testdata[4960] */ + { 1653, 0x9E3779B185EBCA8DULL, { 0x7F184DE567358F30ULL, 0x88CBDBF4CFAD9CC6ULL } }, /* XSUM_XXH128_testdata[4961] */ + { 1654, 0x0000000000000000ULL, { 0xB0A10F0E35C22309ULL, 0x2B83CAB3E8B70460ULL } }, /* XSUM_XXH128_testdata[4962] */ + { 1654, 0x000000009E3779B1ULL, { 0xE0C497C804461B88ULL, 0x58D7A473E954239FULL } }, /* XSUM_XXH128_testdata[4963] */ + { 1654, 0x9E3779B185EBCA8DULL, { 0x3BFD1B41229251F7ULL, 0x5DDB1720525041F3ULL } }, /* XSUM_XXH128_testdata[4964] */ + { 1655, 0x0000000000000000ULL, { 0x47A4A388520B2D06ULL, 0x3A10DC0282EBD013ULL } }, /* XSUM_XXH128_testdata[4965] */ + { 1655, 0x000000009E3779B1ULL, { 0x951C0B2247A278CBULL, 0x64C9C7D20AD73196ULL } }, /* XSUM_XXH128_testdata[4966] */ + { 1655, 0x9E3779B185EBCA8DULL, { 0xAA0804050E3C54B0ULL, 0xDBF13CFB053E1638ULL } }, /* XSUM_XXH128_testdata[4967] */ + { 1656, 0x0000000000000000ULL, { 0xA5F5C1240239878CULL, 0xCD5309C65285D767ULL } }, /* XSUM_XXH128_testdata[4968] */ + { 1656, 0x000000009E3779B1ULL, { 0xD7D7D6978C169C08ULL, 0xF158ABF0B295E6B2ULL } }, /* XSUM_XXH128_testdata[4969] */ + { 1656, 0x9E3779B185EBCA8DULL, { 0x6F92386CEE0B255EULL, 0xA440DA60B15B8DC5ULL } }, /* XSUM_XXH128_testdata[4970] */ + { 1657, 0x0000000000000000ULL, { 0xF78E73264BD347E5ULL, 0x82BC2111BC578BAEULL } }, /* XSUM_XXH128_testdata[4971] */ + { 1657, 0x000000009E3779B1ULL, { 0xB04BDB24EAFE7485ULL, 0x81A537A04E613B45ULL } }, /* XSUM_XXH128_testdata[4972] */ + { 1657, 0x9E3779B185EBCA8DULL, { 0xB906F1EBE6B73016ULL, 0x4CC19F1CF5725847ULL } }, /* XSUM_XXH128_testdata[4973] */ + { 1658, 0x0000000000000000ULL, { 0x892BDCED877DE45CULL, 0x8068EB93EB765F33ULL } }, /* XSUM_XXH128_testdata[4974] */ + { 1658, 0x000000009E3779B1ULL, { 0x12E34A086D0798AFULL, 0x4690D6803E92454DULL } }, /* XSUM_XXH128_testdata[4975] */ + { 1658, 0x9E3779B185EBCA8DULL, { 0x1F87EAD446661AE5ULL, 0x3CCE5F14F4DE3951ULL } }, /* XSUM_XXH128_testdata[4976] */ + { 1659, 0x0000000000000000ULL, { 0xBAA08E5BEA937434ULL, 0xED3658D64C2E30F3ULL } }, /* XSUM_XXH128_testdata[4977] */ + { 1659, 0x000000009E3779B1ULL, { 0x09F725D00054D38BULL, 0xAD07DE8CF154D724ULL } }, /* XSUM_XXH128_testdata[4978] */ + { 1659, 0x9E3779B185EBCA8DULL, { 0x3533F879AA51BB0AULL, 0x42B92E7D4D685197ULL } }, /* XSUM_XXH128_testdata[4979] */ + { 1660, 0x0000000000000000ULL, { 0xF99BC5586AE8F084ULL, 0x8690782DCED1FA67ULL } }, /* XSUM_XXH128_testdata[4980] */ + { 1660, 0x000000009E3779B1ULL, { 0x32152AC1BD30A630ULL, 0x09AF24A4A777EA29ULL } }, /* XSUM_XXH128_testdata[4981] */ + { 1660, 0x9E3779B185EBCA8DULL, { 0xA4A58945B90F8025ULL, 0x9D7647755CE07306ULL } }, /* XSUM_XXH128_testdata[4982] */ + { 1661, 0x0000000000000000ULL, { 0x4821F4141C3CAFF1ULL, 0x9744CC2E84AADA35ULL } }, /* XSUM_XXH128_testdata[4983] */ + { 1661, 0x000000009E3779B1ULL, { 0x1CE52103AC987539ULL, 0xEDFCFDD3FC67EC68ULL } }, /* XSUM_XXH128_testdata[4984] */ + { 1661, 0x9E3779B185EBCA8DULL, { 0x6DC45E039BC0FD99ULL, 0xB2B565632DCE6E20ULL } }, /* XSUM_XXH128_testdata[4985] */ + { 1662, 0x0000000000000000ULL, { 0xAC0F5BF2D6BB23EDULL, 0xF8274018FD664E3AULL } }, /* XSUM_XXH128_testdata[4986] */ + { 1662, 0x000000009E3779B1ULL, { 0xA3BF0E896B0806DAULL, 0x26B1525398B27B71ULL } }, /* XSUM_XXH128_testdata[4987] */ + { 1662, 0x9E3779B185EBCA8DULL, { 0x4A2FAE9ADD0AF634ULL, 0x5729CC60F00A3E61ULL } }, /* XSUM_XXH128_testdata[4988] */ + { 1663, 0x0000000000000000ULL, { 0x0BB65AE615658F7EULL, 0x820E455C68525AEAULL } }, /* XSUM_XXH128_testdata[4989] */ + { 1663, 0x000000009E3779B1ULL, { 0xFCBA4A9ECD7E2063ULL, 0x8BBF47DD427E63B8ULL } }, /* XSUM_XXH128_testdata[4990] */ + { 1663, 0x9E3779B185EBCA8DULL, { 0xA5F3DC0D801A84DCULL, 0x62DF6056E3E9E9BFULL } }, /* XSUM_XXH128_testdata[4991] */ + { 1664, 0x0000000000000000ULL, { 0xDC8EE644ACBF2296ULL, 0x7596FB35DB291707ULL } }, /* XSUM_XXH128_testdata[4992] */ + { 1664, 0x000000009E3779B1ULL, { 0x69166E3D69759D5FULL, 0x5E079F754BF57098ULL } }, /* XSUM_XXH128_testdata[4993] */ + { 1664, 0x9E3779B185EBCA8DULL, { 0x0C1F83E678A50DCAULL, 0x0FAF6EEDB213DB7AULL } }, /* XSUM_XXH128_testdata[4994] */ + { 1665, 0x0000000000000000ULL, { 0x014559DF7B3BCE5EULL, 0x5D3B04DCE584E78AULL } }, /* XSUM_XXH128_testdata[4995] */ + { 1665, 0x000000009E3779B1ULL, { 0x3F1F0CB6625FB25BULL, 0x045C690F8D17464CULL } }, /* XSUM_XXH128_testdata[4996] */ + { 1665, 0x9E3779B185EBCA8DULL, { 0x9B5B643B44FB2BD8ULL, 0xBED7CAD0105647FBULL } }, /* XSUM_XXH128_testdata[4997] */ + { 1666, 0x0000000000000000ULL, { 0x9292914EF2E7DF06ULL, 0xC0D02E4DF88DEC2BULL } }, /* XSUM_XXH128_testdata[4998] */ + { 1666, 0x000000009E3779B1ULL, { 0x0528818F35A2275FULL, 0xFFD2FDA76C0E499CULL } }, /* XSUM_XXH128_testdata[4999] */ + { 1666, 0x9E3779B185EBCA8DULL, { 0xC53EBCB771C28F31ULL, 0xE0955937E4F75077ULL } }, /* XSUM_XXH128_testdata[5000] */ + { 1667, 0x0000000000000000ULL, { 0x6319CCBAFF5746EBULL, 0x2520DD127BEFAEB1ULL } }, /* XSUM_XXH128_testdata[5001] */ + { 1667, 0x000000009E3779B1ULL, { 0x1A41B96E2373F7C8ULL, 0xE7E0322670B8FC98ULL } }, /* XSUM_XXH128_testdata[5002] */ + { 1667, 0x9E3779B185EBCA8DULL, { 0x3B78F255E325D32AULL, 0x203864EB779693D3ULL } }, /* XSUM_XXH128_testdata[5003] */ + { 1668, 0x0000000000000000ULL, { 0x7C020819254B1D09ULL, 0x290CED97E070EC82ULL } }, /* XSUM_XXH128_testdata[5004] */ + { 1668, 0x000000009E3779B1ULL, { 0x1734ABC823CDC4E0ULL, 0x4D235831226CC27BULL } }, /* XSUM_XXH128_testdata[5005] */ + { 1668, 0x9E3779B185EBCA8DULL, { 0x300D3932D739495EULL, 0x0116F7FEF46095B8ULL } }, /* XSUM_XXH128_testdata[5006] */ + { 1669, 0x0000000000000000ULL, { 0x9F79BB9126872BD3ULL, 0x029A7BEB35921765ULL } }, /* XSUM_XXH128_testdata[5007] */ + { 1669, 0x000000009E3779B1ULL, { 0x5B18EC3F60779541ULL, 0xBB3DB1D88BF0F3A0ULL } }, /* XSUM_XXH128_testdata[5008] */ + { 1669, 0x9E3779B185EBCA8DULL, { 0xA5A7359367C0103BULL, 0x8B72E7C482304367ULL } }, /* XSUM_XXH128_testdata[5009] */ + { 1670, 0x0000000000000000ULL, { 0xFB48C25F3BDA21CFULL, 0x58A9E074FFF3C6CFULL } }, /* XSUM_XXH128_testdata[5010] */ + { 1670, 0x000000009E3779B1ULL, { 0xA7CB2C0A892252BEULL, 0x844C9F1A0A32CB60ULL } }, /* XSUM_XXH128_testdata[5011] */ + { 1670, 0x9E3779B185EBCA8DULL, { 0x23AA179A02C66BDFULL, 0x905D4F47D15F8BDCULL } }, /* XSUM_XXH128_testdata[5012] */ + { 1671, 0x0000000000000000ULL, { 0xA5CE283DD784296AULL, 0x0A322CA31C600887ULL } }, /* XSUM_XXH128_testdata[5013] */ + { 1671, 0x000000009E3779B1ULL, { 0xBE07B9326237CA0BULL, 0x8509F86E24CABC02ULL } }, /* XSUM_XXH128_testdata[5014] */ + { 1671, 0x9E3779B185EBCA8DULL, { 0x84A0B9F6703042E7ULL, 0x07AE2510BDB562A4ULL } }, /* XSUM_XXH128_testdata[5015] */ + { 1672, 0x0000000000000000ULL, { 0x1A72E2F2B48C2615ULL, 0x89288C842EC926AAULL } }, /* XSUM_XXH128_testdata[5016] */ + { 1672, 0x000000009E3779B1ULL, { 0xD599817A6F3B24B2ULL, 0x9DAC72DAB7B8B236ULL } }, /* XSUM_XXH128_testdata[5017] */ + { 1672, 0x9E3779B185EBCA8DULL, { 0xFB7361C7BDDDFE5FULL, 0x09695F8FFE30AF61ULL } }, /* XSUM_XXH128_testdata[5018] */ + { 1673, 0x0000000000000000ULL, { 0x65A5121142E2BE9CULL, 0x9202BC85D886C172ULL } }, /* XSUM_XXH128_testdata[5019] */ + { 1673, 0x000000009E3779B1ULL, { 0xBA0387BFAAA033DEULL, 0x72B10F5E6390EB32ULL } }, /* XSUM_XXH128_testdata[5020] */ + { 1673, 0x9E3779B185EBCA8DULL, { 0x6B49D15017288741ULL, 0x54D98FCABC486C80ULL } }, /* XSUM_XXH128_testdata[5021] */ + { 1674, 0x0000000000000000ULL, { 0x3C80D630C9D18076ULL, 0x3C2940085F38EC85ULL } }, /* XSUM_XXH128_testdata[5022] */ + { 1674, 0x000000009E3779B1ULL, { 0xC65B88994E953BD4ULL, 0xA5AE45EACCB7284FULL } }, /* XSUM_XXH128_testdata[5023] */ + { 1674, 0x9E3779B185EBCA8DULL, { 0x97E2B18D6520EC8BULL, 0x4DEDC76C796F6FC3ULL } }, /* XSUM_XXH128_testdata[5024] */ + { 1675, 0x0000000000000000ULL, { 0x8C49D14ECB693501ULL, 0x5CBCB6B980717D72ULL } }, /* XSUM_XXH128_testdata[5025] */ + { 1675, 0x000000009E3779B1ULL, { 0x94557B9A3A50A097ULL, 0x1CB74CAA3B04734BULL } }, /* XSUM_XXH128_testdata[5026] */ + { 1675, 0x9E3779B185EBCA8DULL, { 0xA6646B75FE02BB12ULL, 0x170D4ED192C3850DULL } }, /* XSUM_XXH128_testdata[5027] */ + { 1676, 0x0000000000000000ULL, { 0x4A71996DA2703AA2ULL, 0x24357EA7C797D429ULL } }, /* XSUM_XXH128_testdata[5028] */ + { 1676, 0x000000009E3779B1ULL, { 0x4A08E5A2F99D2A7AULL, 0xAC88C545C7AB1D87ULL } }, /* XSUM_XXH128_testdata[5029] */ + { 1676, 0x9E3779B185EBCA8DULL, { 0x8A82052F3E2A7775ULL, 0x8EB9BD10C71D756EULL } }, /* XSUM_XXH128_testdata[5030] */ + { 1677, 0x0000000000000000ULL, { 0x7C13B730BFB06745ULL, 0xD9657FC0D874953AULL } }, /* XSUM_XXH128_testdata[5031] */ + { 1677, 0x000000009E3779B1ULL, { 0x9AF15854E4E1BD4FULL, 0xE3D4CE805AAE01F4ULL } }, /* XSUM_XXH128_testdata[5032] */ + { 1677, 0x9E3779B185EBCA8DULL, { 0x5ECB30648A07C440ULL, 0xE28E7847C659E48EULL } }, /* XSUM_XXH128_testdata[5033] */ + { 1678, 0x0000000000000000ULL, { 0xB8FC2127B368C28DULL, 0x3EC748101B0B2277ULL } }, /* XSUM_XXH128_testdata[5034] */ + { 1678, 0x000000009E3779B1ULL, { 0xF6CD44D0D5310646ULL, 0x812085D5E05A172CULL } }, /* XSUM_XXH128_testdata[5035] */ + { 1678, 0x9E3779B185EBCA8DULL, { 0x23D8232F426474B0ULL, 0xBE2EF7D552E85D58ULL } }, /* XSUM_XXH128_testdata[5036] */ + { 1679, 0x0000000000000000ULL, { 0xC27A6F17D271D67FULL, 0x6555D1E8484CC673ULL } }, /* XSUM_XXH128_testdata[5037] */ + { 1679, 0x000000009E3779B1ULL, { 0x78D7D285EFEE2B2EULL, 0xCB2569A80A131699ULL } }, /* XSUM_XXH128_testdata[5038] */ + { 1679, 0x9E3779B185EBCA8DULL, { 0xF63AEC58CBDC4A05ULL, 0x6BA6F9683E4008CEULL } }, /* XSUM_XXH128_testdata[5039] */ + { 1680, 0x0000000000000000ULL, { 0x5BD2201FEEFBF2D8ULL, 0xE775BAA980036F10ULL } }, /* XSUM_XXH128_testdata[5040] */ + { 1680, 0x000000009E3779B1ULL, { 0xD72D3FA68162B080ULL, 0x888CBBD9A50A41D2ULL } }, /* XSUM_XXH128_testdata[5041] */ + { 1680, 0x9E3779B185EBCA8DULL, { 0xE86AD5E291F27C27ULL, 0xA485A9FCA6EB7220ULL } }, /* XSUM_XXH128_testdata[5042] */ + { 1681, 0x0000000000000000ULL, { 0xDD992FD8D1588751ULL, 0xB221374FE3CB0D49ULL } }, /* XSUM_XXH128_testdata[5043] */ + { 1681, 0x000000009E3779B1ULL, { 0x4A8A35E4DCB683CFULL, 0xD1A9F9C2F3498F1EULL } }, /* XSUM_XXH128_testdata[5044] */ + { 1681, 0x9E3779B185EBCA8DULL, { 0x505DDB442932F139ULL, 0xF787E424DA9EF1F4ULL } }, /* XSUM_XXH128_testdata[5045] */ + { 1682, 0x0000000000000000ULL, { 0x5A11F9CECF0A742BULL, 0xC012C4DF0D5E6520ULL } }, /* XSUM_XXH128_testdata[5046] */ + { 1682, 0x000000009E3779B1ULL, { 0xE44FFD16C57E3577ULL, 0x6C295FFC8D8331DFULL } }, /* XSUM_XXH128_testdata[5047] */ + { 1682, 0x9E3779B185EBCA8DULL, { 0x69EBBEFE26FC011EULL, 0xBFE87E950A794656ULL } }, /* XSUM_XXH128_testdata[5048] */ + { 1683, 0x0000000000000000ULL, { 0xCB713E69A99DA847ULL, 0x46B12D3B8FA28797ULL } }, /* XSUM_XXH128_testdata[5049] */ + { 1683, 0x000000009E3779B1ULL, { 0x790C6A8C9BB6760AULL, 0x3A3D18691E85DBDDULL } }, /* XSUM_XXH128_testdata[5050] */ + { 1683, 0x9E3779B185EBCA8DULL, { 0x8D6606AC9FD32978ULL, 0x7409152C9689EC69ULL } }, /* XSUM_XXH128_testdata[5051] */ + { 1684, 0x0000000000000000ULL, { 0x2678A2C83F2FFE65ULL, 0x8BBE994323CD95BAULL } }, /* XSUM_XXH128_testdata[5052] */ + { 1684, 0x000000009E3779B1ULL, { 0xE974783D0376379FULL, 0xF73F4BA5AE3D6FE8ULL } }, /* XSUM_XXH128_testdata[5053] */ + { 1684, 0x9E3779B185EBCA8DULL, { 0xDF10EC5B417F2A6DULL, 0x7935F61FCADE8B9FULL } }, /* XSUM_XXH128_testdata[5054] */ + { 1685, 0x0000000000000000ULL, { 0x187EEB97E80FA75DULL, 0x7135B7EAD4B2F503ULL } }, /* XSUM_XXH128_testdata[5055] */ + { 1685, 0x000000009E3779B1ULL, { 0xF9B6AE08E9B92A8EULL, 0x77F71B318DDB720DULL } }, /* XSUM_XXH128_testdata[5056] */ + { 1685, 0x9E3779B185EBCA8DULL, { 0xF344B102FBB78C5CULL, 0x4B7C6CE8EE5D8A94ULL } }, /* XSUM_XXH128_testdata[5057] */ + { 1686, 0x0000000000000000ULL, { 0x94A6908662A06FDFULL, 0x66B2D73AC280A5EAULL } }, /* XSUM_XXH128_testdata[5058] */ + { 1686, 0x000000009E3779B1ULL, { 0x87AB664292D728F3ULL, 0x1C571BE701AD3768ULL } }, /* XSUM_XXH128_testdata[5059] */ + { 1686, 0x9E3779B185EBCA8DULL, { 0x30129847B7F8E487ULL, 0x37659D3D163E2423ULL } }, /* XSUM_XXH128_testdata[5060] */ + { 1687, 0x0000000000000000ULL, { 0x6A895C80F46F85CDULL, 0xB22DD3F1119D3B33ULL } }, /* XSUM_XXH128_testdata[5061] */ + { 1687, 0x000000009E3779B1ULL, { 0x6E1960F42146865AULL, 0x5AF2AD6AB2C2D2F4ULL } }, /* XSUM_XXH128_testdata[5062] */ + { 1687, 0x9E3779B185EBCA8DULL, { 0x42AE31207908CC48ULL, 0x2C524F5DF7C83340ULL } }, /* XSUM_XXH128_testdata[5063] */ + { 1688, 0x0000000000000000ULL, { 0x87BCA4695B2DDE93ULL, 0xAA21545F1257D29FULL } }, /* XSUM_XXH128_testdata[5064] */ + { 1688, 0x000000009E3779B1ULL, { 0x84F7A71E82C3540EULL, 0xA707994CCCEBF53BULL } }, /* XSUM_XXH128_testdata[5065] */ + { 1688, 0x9E3779B185EBCA8DULL, { 0xBFB1490777061F65ULL, 0x34FE7F355DC466DDULL } }, /* XSUM_XXH128_testdata[5066] */ + { 1689, 0x0000000000000000ULL, { 0xF6E6E4CC2E17EBA0ULL, 0x403FA172ABBE6310ULL } }, /* XSUM_XXH128_testdata[5067] */ + { 1689, 0x000000009E3779B1ULL, { 0x984D7E1419B8EF51ULL, 0x9F36508D4D0C4B62ULL } }, /* XSUM_XXH128_testdata[5068] */ + { 1689, 0x9E3779B185EBCA8DULL, { 0x0BF130EAE0CF0AB8ULL, 0xA09F06FB19076AB1ULL } }, /* XSUM_XXH128_testdata[5069] */ + { 1690, 0x0000000000000000ULL, { 0x0380D89B487C0FB3ULL, 0xC1B7BC34962D221AULL } }, /* XSUM_XXH128_testdata[5070] */ + { 1690, 0x000000009E3779B1ULL, { 0x88A40A574B89148DULL, 0xBA88848C0519D41BULL } }, /* XSUM_XXH128_testdata[5071] */ + { 1690, 0x9E3779B185EBCA8DULL, { 0xBC9398A56DFD3815ULL, 0xBF8E34237A0090E0ULL } }, /* XSUM_XXH128_testdata[5072] */ + { 1691, 0x0000000000000000ULL, { 0xA59785EE66C08AA9ULL, 0x8323BDE1D034B05CULL } }, /* XSUM_XXH128_testdata[5073] */ + { 1691, 0x000000009E3779B1ULL, { 0x33871969B04BCC36ULL, 0xB62563162F52EC61ULL } }, /* XSUM_XXH128_testdata[5074] */ + { 1691, 0x9E3779B185EBCA8DULL, { 0x35666ACBF09F4EB9ULL, 0xD516613027518B42ULL } }, /* XSUM_XXH128_testdata[5075] */ + { 1692, 0x0000000000000000ULL, { 0xBC427B4C7F5256D8ULL, 0xA51E277F163B594DULL } }, /* XSUM_XXH128_testdata[5076] */ + { 1692, 0x000000009E3779B1ULL, { 0xFE095BC861DC119BULL, 0x666951CCCC31BD0BULL } }, /* XSUM_XXH128_testdata[5077] */ + { 1692, 0x9E3779B185EBCA8DULL, { 0x14E5B49F2E28B5C5ULL, 0xAC9724E31308A4C7ULL } }, /* XSUM_XXH128_testdata[5078] */ + { 1693, 0x0000000000000000ULL, { 0x4472B38397711962ULL, 0x2FB56AD8339A5058ULL } }, /* XSUM_XXH128_testdata[5079] */ + { 1693, 0x000000009E3779B1ULL, { 0x8789547C315FA196ULL, 0xB67EE222F15D53F4ULL } }, /* XSUM_XXH128_testdata[5080] */ + { 1693, 0x9E3779B185EBCA8DULL, { 0xE1FC2B1250738986ULL, 0x547BC87FD674071BULL } }, /* XSUM_XXH128_testdata[5081] */ + { 1694, 0x0000000000000000ULL, { 0x0712FDD21FF67C14ULL, 0x7F5CEDD21BCDE71BULL } }, /* XSUM_XXH128_testdata[5082] */ + { 1694, 0x000000009E3779B1ULL, { 0x0C87D2D661099879ULL, 0xB100E17D20F5B7EAULL } }, /* XSUM_XXH128_testdata[5083] */ + { 1694, 0x9E3779B185EBCA8DULL, { 0x799AB06A78FF90E6ULL, 0x0579FF43839BB82FULL } }, /* XSUM_XXH128_testdata[5084] */ + { 1695, 0x0000000000000000ULL, { 0xF64A2BBD33693E84ULL, 0xA03E542B8A4B9E8EULL } }, /* XSUM_XXH128_testdata[5085] */ + { 1695, 0x000000009E3779B1ULL, { 0x387FA6213630B458ULL, 0x2ACE07B1DA12DF86ULL } }, /* XSUM_XXH128_testdata[5086] */ + { 1695, 0x9E3779B185EBCA8DULL, { 0xAA3CC89E1064D0FAULL, 0x5098C8ECCC66B4BEULL } }, /* XSUM_XXH128_testdata[5087] */ + { 1696, 0x0000000000000000ULL, { 0x52677BEB2139CC5DULL, 0xF1F9B2968601912DULL } }, /* XSUM_XXH128_testdata[5088] */ + { 1696, 0x000000009E3779B1ULL, { 0x37A6DCC45C61FD86ULL, 0x2412D707B3F8E008ULL } }, /* XSUM_XXH128_testdata[5089] */ + { 1696, 0x9E3779B185EBCA8DULL, { 0x7AFE2676EDD1ECECULL, 0x9B16B3FC03E320A9ULL } }, /* XSUM_XXH128_testdata[5090] */ + { 1697, 0x0000000000000000ULL, { 0x300D981F56D14BA1ULL, 0xB661B56834DEE926ULL } }, /* XSUM_XXH128_testdata[5091] */ + { 1697, 0x000000009E3779B1ULL, { 0x83CD564975CABE8CULL, 0xF0F7BDBF1223688BULL } }, /* XSUM_XXH128_testdata[5092] */ + { 1697, 0x9E3779B185EBCA8DULL, { 0x25C739BECECD9EB5ULL, 0x3CA7119CE6AAB906ULL } }, /* XSUM_XXH128_testdata[5093] */ + { 1698, 0x0000000000000000ULL, { 0x79063E6F759B2CF4ULL, 0x5AF7801FE2F95AF1ULL } }, /* XSUM_XXH128_testdata[5094] */ + { 1698, 0x000000009E3779B1ULL, { 0x03DF3E1C65707CD8ULL, 0x3137C7F62DF2031DULL } }, /* XSUM_XXH128_testdata[5095] */ + { 1698, 0x9E3779B185EBCA8DULL, { 0x7CF876987D597B26ULL, 0x208D2378AA64725EULL } }, /* XSUM_XXH128_testdata[5096] */ + { 1699, 0x0000000000000000ULL, { 0xD4D8A31F46547D15ULL, 0x36185417D78D8146ULL } }, /* XSUM_XXH128_testdata[5097] */ + { 1699, 0x000000009E3779B1ULL, { 0x4670447BF7A7A9D3ULL, 0xE4C09BA41921CCF6ULL } }, /* XSUM_XXH128_testdata[5098] */ + { 1699, 0x9E3779B185EBCA8DULL, { 0xACB693DB1AE30757ULL, 0xE119D466865F8276ULL } }, /* XSUM_XXH128_testdata[5099] */ + { 1700, 0x0000000000000000ULL, { 0xBA2D1AED6D3F1291ULL, 0x6AD18012293C912BULL } }, /* XSUM_XXH128_testdata[5100] */ + { 1700, 0x000000009E3779B1ULL, { 0x04EB71A7E9A26F7BULL, 0x47EE2F8B307863E5ULL } }, /* XSUM_XXH128_testdata[5101] */ + { 1700, 0x9E3779B185EBCA8DULL, { 0xE295316275003170ULL, 0x1B17ED9D13864003ULL } }, /* XSUM_XXH128_testdata[5102] */ + { 1701, 0x0000000000000000ULL, { 0x51CEFCA43F9471BFULL, 0xED097AA2024A6DDBULL } }, /* XSUM_XXH128_testdata[5103] */ + { 1701, 0x000000009E3779B1ULL, { 0x6D3228081A319903ULL, 0x8A21C151AACD7BF4ULL } }, /* XSUM_XXH128_testdata[5104] */ + { 1701, 0x9E3779B185EBCA8DULL, { 0x74616698F5BE5948ULL, 0x8F8CB8BE8B27C151ULL } }, /* XSUM_XXH128_testdata[5105] */ + { 1702, 0x0000000000000000ULL, { 0x18808689370AAD8EULL, 0xF677F79938B0056EULL } }, /* XSUM_XXH128_testdata[5106] */ + { 1702, 0x000000009E3779B1ULL, { 0x120B751B9D7F3C79ULL, 0x47ABF2EFE8BAC617ULL } }, /* XSUM_XXH128_testdata[5107] */ + { 1702, 0x9E3779B185EBCA8DULL, { 0x79EDF381D1BC98EEULL, 0xF4C48A8263D8E746ULL } }, /* XSUM_XXH128_testdata[5108] */ + { 1703, 0x0000000000000000ULL, { 0x280FA24BA3BFDC30ULL, 0x21A99B184FBC7F00ULL } }, /* XSUM_XXH128_testdata[5109] */ + { 1703, 0x000000009E3779B1ULL, { 0x3B7C04EFF4DD70DCULL, 0x52373B1B99C68330ULL } }, /* XSUM_XXH128_testdata[5110] */ + { 1703, 0x9E3779B185EBCA8DULL, { 0x3A7238C526B090CBULL, 0xBA920BB06AA7B156ULL } }, /* XSUM_XXH128_testdata[5111] */ + { 1704, 0x0000000000000000ULL, { 0x9A13BBF8D5AB9FA0ULL, 0x575F8597FDD30DF7ULL } }, /* XSUM_XXH128_testdata[5112] */ + { 1704, 0x000000009E3779B1ULL, { 0xD0DA5594D265C2D8ULL, 0x0C153C25A6D753F5ULL } }, /* XSUM_XXH128_testdata[5113] */ + { 1704, 0x9E3779B185EBCA8DULL, { 0x4E7097F99B0219DEULL, 0xA9CE9C2BC7EC5BCEULL } }, /* XSUM_XXH128_testdata[5114] */ + { 1705, 0x0000000000000000ULL, { 0x751149F530F23B3DULL, 0x8EC20513131611D2ULL } }, /* XSUM_XXH128_testdata[5115] */ + { 1705, 0x000000009E3779B1ULL, { 0x886EB61BEE5139CFULL, 0x4626F1B956039205ULL } }, /* XSUM_XXH128_testdata[5116] */ + { 1705, 0x9E3779B185EBCA8DULL, { 0x1B2347FA6FAC3095ULL, 0x9C9E546947959A35ULL } }, /* XSUM_XXH128_testdata[5117] */ + { 1706, 0x0000000000000000ULL, { 0x5E7A6FCEEEA405DDULL, 0x14B187C36597ECA9ULL } }, /* XSUM_XXH128_testdata[5118] */ + { 1706, 0x000000009E3779B1ULL, { 0x5A58A159C440BEC5ULL, 0x7555807116143D7CULL } }, /* XSUM_XXH128_testdata[5119] */ + { 1706, 0x9E3779B185EBCA8DULL, { 0xAF6FE163245BC7A1ULL, 0x1711C696DD584D3CULL } }, /* XSUM_XXH128_testdata[5120] */ + { 1707, 0x0000000000000000ULL, { 0xF3E6115DF0F23C7AULL, 0x94CD9FF432282166ULL } }, /* XSUM_XXH128_testdata[5121] */ + { 1707, 0x000000009E3779B1ULL, { 0x6913413D1B13BA04ULL, 0xB307CE02E4BC9E5EULL } }, /* XSUM_XXH128_testdata[5122] */ + { 1707, 0x9E3779B185EBCA8DULL, { 0x3A24873941B5E49AULL, 0x1324776EFA10AD61ULL } }, /* XSUM_XXH128_testdata[5123] */ + { 1708, 0x0000000000000000ULL, { 0x16F8B128EADB9EF1ULL, 0x2965CF4000EAC99FULL } }, /* XSUM_XXH128_testdata[5124] */ + { 1708, 0x000000009E3779B1ULL, { 0xD9974937E20978E0ULL, 0xDC6494C7EDE3804BULL } }, /* XSUM_XXH128_testdata[5125] */ + { 1708, 0x9E3779B185EBCA8DULL, { 0x063F9C194C8EC62CULL, 0x3CBD4A0EAED29D3BULL } }, /* XSUM_XXH128_testdata[5126] */ + { 1709, 0x0000000000000000ULL, { 0xB16E53B1ABCBD5F6ULL, 0xBCEDA8F269361928ULL } }, /* XSUM_XXH128_testdata[5127] */ + { 1709, 0x000000009E3779B1ULL, { 0xA7EF622C0779B9A5ULL, 0x90B35846258552B3ULL } }, /* XSUM_XXH128_testdata[5128] */ + { 1709, 0x9E3779B185EBCA8DULL, { 0x8FA0AFEF906A3B08ULL, 0x7BFF3A932637FE7AULL } }, /* XSUM_XXH128_testdata[5129] */ + { 1710, 0x0000000000000000ULL, { 0x91AE6F2A4E04CE2FULL, 0xCDD0F1A95C7759E5ULL } }, /* XSUM_XXH128_testdata[5130] */ + { 1710, 0x000000009E3779B1ULL, { 0x96A97AD8A1573D09ULL, 0x96E401168E2C259CULL } }, /* XSUM_XXH128_testdata[5131] */ + { 1710, 0x9E3779B185EBCA8DULL, { 0x5E641D6DFC36F2E4ULL, 0xB98336EFDE9C78ECULL } }, /* XSUM_XXH128_testdata[5132] */ + { 1711, 0x0000000000000000ULL, { 0x72AA744E3224B21CULL, 0xE1633C569A5E6CAFULL } }, /* XSUM_XXH128_testdata[5133] */ + { 1711, 0x000000009E3779B1ULL, { 0xAE3C250C7B2D1CDFULL, 0xE6C205FB16FFF47BULL } }, /* XSUM_XXH128_testdata[5134] */ + { 1711, 0x9E3779B185EBCA8DULL, { 0xE808026D23323001ULL, 0x4F240AB91C449220ULL } }, /* XSUM_XXH128_testdata[5135] */ + { 1712, 0x0000000000000000ULL, { 0x5E84D67DB3CB690CULL, 0x40E71F6D08E1BAC0ULL } }, /* XSUM_XXH128_testdata[5136] */ + { 1712, 0x000000009E3779B1ULL, { 0x318742CB01E08057ULL, 0x1ABA3143186BDF32ULL } }, /* XSUM_XXH128_testdata[5137] */ + { 1712, 0x9E3779B185EBCA8DULL, { 0x92A2AF0F6F556626ULL, 0x252D43D35F573A90ULL } }, /* XSUM_XXH128_testdata[5138] */ + { 1713, 0x0000000000000000ULL, { 0xEA01D1C732815D95ULL, 0xFAF4F389303F6051ULL } }, /* XSUM_XXH128_testdata[5139] */ + { 1713, 0x000000009E3779B1ULL, { 0xD9603B5480582602ULL, 0x0B724407E181EBC2ULL } }, /* XSUM_XXH128_testdata[5140] */ + { 1713, 0x9E3779B185EBCA8DULL, { 0x990416FA99E3583EULL, 0x43657EB5B3BF19DFULL } }, /* XSUM_XXH128_testdata[5141] */ + { 1714, 0x0000000000000000ULL, { 0x2E7119639E3D4D35ULL, 0xB54D0DAF027A7A2AULL } }, /* XSUM_XXH128_testdata[5142] */ + { 1714, 0x000000009E3779B1ULL, { 0x332836B8F72719DAULL, 0xACAC7C5A7669E0D5ULL } }, /* XSUM_XXH128_testdata[5143] */ + { 1714, 0x9E3779B185EBCA8DULL, { 0x73AD703E2219297EULL, 0x36B3E3EC57F3D711ULL } }, /* XSUM_XXH128_testdata[5144] */ + { 1715, 0x0000000000000000ULL, { 0x51C9DC72F6C1EEA8ULL, 0x02E67DCB7A9A5A5BULL } }, /* XSUM_XXH128_testdata[5145] */ + { 1715, 0x000000009E3779B1ULL, { 0x7B2648CA1866C2F3ULL, 0x63E760A0A7FC220AULL } }, /* XSUM_XXH128_testdata[5146] */ + { 1715, 0x9E3779B185EBCA8DULL, { 0x81B6D259D25EB2BCULL, 0xB23A96E53264BFD6ULL } }, /* XSUM_XXH128_testdata[5147] */ + { 1716, 0x0000000000000000ULL, { 0x45D2F1C6B036F1CDULL, 0xEB390FD80AF367C6ULL } }, /* XSUM_XXH128_testdata[5148] */ + { 1716, 0x000000009E3779B1ULL, { 0x0338B617DC8E8E43ULL, 0x6CC965DE6C3CBE31ULL } }, /* XSUM_XXH128_testdata[5149] */ + { 1716, 0x9E3779B185EBCA8DULL, { 0x0DF5F8958B4D3DAAULL, 0xA9EB52B1D58F766EULL } }, /* XSUM_XXH128_testdata[5150] */ + { 1717, 0x0000000000000000ULL, { 0x61FBCD5F366792D7ULL, 0xD644E8E7B5941F4FULL } }, /* XSUM_XXH128_testdata[5151] */ + { 1717, 0x000000009E3779B1ULL, { 0xB39A66980945746DULL, 0xF33999BF9409FF1EULL } }, /* XSUM_XXH128_testdata[5152] */ + { 1717, 0x9E3779B185EBCA8DULL, { 0x6365F06DC899C90BULL, 0xDB45A522F6AA6C34ULL } }, /* XSUM_XXH128_testdata[5153] */ + { 1718, 0x0000000000000000ULL, { 0xABA05CE4BA47455FULL, 0x0433EFA770FD01E8ULL } }, /* XSUM_XXH128_testdata[5154] */ + { 1718, 0x000000009E3779B1ULL, { 0xE32C1A14F39B2EA9ULL, 0x2699183CE390D122ULL } }, /* XSUM_XXH128_testdata[5155] */ + { 1718, 0x9E3779B185EBCA8DULL, { 0x2F3C96BADC8EC27AULL, 0xC4E554E8BDADD633ULL } }, /* XSUM_XXH128_testdata[5156] */ + { 1719, 0x0000000000000000ULL, { 0x2D3FF1E8B05F4E9AULL, 0x068A4C38A6DA4BE5ULL } }, /* XSUM_XXH128_testdata[5157] */ + { 1719, 0x000000009E3779B1ULL, { 0x406917EFF4814536ULL, 0x866F5D98763B9BCCULL } }, /* XSUM_XXH128_testdata[5158] */ + { 1719, 0x9E3779B185EBCA8DULL, { 0x991F60E4CD736A13ULL, 0xEBB3BC4DC7C152F8ULL } }, /* XSUM_XXH128_testdata[5159] */ + { 1720, 0x0000000000000000ULL, { 0xDFF2D0888B0C99F4ULL, 0x3B1622175D3DA912ULL } }, /* XSUM_XXH128_testdata[5160] */ + { 1720, 0x000000009E3779B1ULL, { 0x7D53027C5E3027D8ULL, 0xF82907A99804749CULL } }, /* XSUM_XXH128_testdata[5161] */ + { 1720, 0x9E3779B185EBCA8DULL, { 0x9352C645DFFDA421ULL, 0x2F3CE62CDE3A99EAULL } }, /* XSUM_XXH128_testdata[5162] */ + { 1721, 0x0000000000000000ULL, { 0x8E05C59E1219124DULL, 0x0AA389225A1E7C95ULL } }, /* XSUM_XXH128_testdata[5163] */ + { 1721, 0x000000009E3779B1ULL, { 0x55DA1A77C6F9EEF7ULL, 0x6ADCA93724CD542EULL } }, /* XSUM_XXH128_testdata[5164] */ + { 1721, 0x9E3779B185EBCA8DULL, { 0x5C1F24B984ABB5F6ULL, 0x77AF2ED9BB78A480ULL } }, /* XSUM_XXH128_testdata[5165] */ + { 1722, 0x0000000000000000ULL, { 0x312DEB25A28BD45EULL, 0x66C6E3847F742EF4ULL } }, /* XSUM_XXH128_testdata[5166] */ + { 1722, 0x000000009E3779B1ULL, { 0x5375C8A2642FE022ULL, 0xE38BBDCFC2D5C34AULL } }, /* XSUM_XXH128_testdata[5167] */ + { 1722, 0x9E3779B185EBCA8DULL, { 0xDDE6A17CCD3EDB8CULL, 0x95761BBF26E8B7DAULL } }, /* XSUM_XXH128_testdata[5168] */ + { 1723, 0x0000000000000000ULL, { 0x99735C6A00896EA9ULL, 0xF707AEA0BBB90F48ULL } }, /* XSUM_XXH128_testdata[5169] */ + { 1723, 0x000000009E3779B1ULL, { 0xCDBE774E749A6820ULL, 0xEF93DDD0CED2C529ULL } }, /* XSUM_XXH128_testdata[5170] */ + { 1723, 0x9E3779B185EBCA8DULL, { 0x659A7B5EFC7F69F4ULL, 0xAF02E85C1188B4F3ULL } }, /* XSUM_XXH128_testdata[5171] */ + { 1724, 0x0000000000000000ULL, { 0xDA70A7331C758A11ULL, 0x8C98826127B67765ULL } }, /* XSUM_XXH128_testdata[5172] */ + { 1724, 0x000000009E3779B1ULL, { 0x7F8007E6AA4B1E21ULL, 0x13FDAB4730569347ULL } }, /* XSUM_XXH128_testdata[5173] */ + { 1724, 0x9E3779B185EBCA8DULL, { 0xE587F2DB4B7C28B2ULL, 0x69627096F2A540CCULL } }, /* XSUM_XXH128_testdata[5174] */ + { 1725, 0x0000000000000000ULL, { 0x671AC2B05CD1E93EULL, 0x686EFC80D2044577ULL } }, /* XSUM_XXH128_testdata[5175] */ + { 1725, 0x000000009E3779B1ULL, { 0x898D1B60DE49249DULL, 0xB99568517C5A6C6DULL } }, /* XSUM_XXH128_testdata[5176] */ + { 1725, 0x9E3779B185EBCA8DULL, { 0x0FD6460344094D86ULL, 0x8B954BE1891BFFADULL } }, /* XSUM_XXH128_testdata[5177] */ + { 1726, 0x0000000000000000ULL, { 0x1AC66A5AA86E9E25ULL, 0x66220A3D2DB88398ULL } }, /* XSUM_XXH128_testdata[5178] */ + { 1726, 0x000000009E3779B1ULL, { 0x40EAA4829B2876A8ULL, 0x19B703C57BA70B39ULL } }, /* XSUM_XXH128_testdata[5179] */ + { 1726, 0x9E3779B185EBCA8DULL, { 0x1EC51F9ABB08B913ULL, 0x0FFB942217C4736CULL } }, /* XSUM_XXH128_testdata[5180] */ + { 1727, 0x0000000000000000ULL, { 0xF78173A923B84753ULL, 0x54501EAC667E2604ULL } }, /* XSUM_XXH128_testdata[5181] */ + { 1727, 0x000000009E3779B1ULL, { 0xBA7311212B82E2FFULL, 0x3E7DE7949D05CCBEULL } }, /* XSUM_XXH128_testdata[5182] */ + { 1727, 0x9E3779B185EBCA8DULL, { 0x745FF5546F2C23DCULL, 0xB647014B42269B6BULL } }, /* XSUM_XXH128_testdata[5183] */ + { 1728, 0x0000000000000000ULL, { 0x220DAC2E47871091ULL, 0xBA2AADD1681AD8ACULL } }, /* XSUM_XXH128_testdata[5184] */ + { 1728, 0x000000009E3779B1ULL, { 0x9B3FD0F5ADF85E49ULL, 0xBE00C777103A502BULL } }, /* XSUM_XXH128_testdata[5185] */ + { 1728, 0x9E3779B185EBCA8DULL, { 0x79501CDE4D247902ULL, 0xBECBF4E097D96F33ULL } }, /* XSUM_XXH128_testdata[5186] */ + { 1729, 0x0000000000000000ULL, { 0x5F27B880EB82CBE3ULL, 0xB0D112053235871DULL } }, /* XSUM_XXH128_testdata[5187] */ + { 1729, 0x000000009E3779B1ULL, { 0x37F1FF4533854D53ULL, 0xE4610A1EF89E2D8AULL } }, /* XSUM_XXH128_testdata[5188] */ + { 1729, 0x9E3779B185EBCA8DULL, { 0x3ABE71821453D8A0ULL, 0xF11ACA683E289FA4ULL } }, /* XSUM_XXH128_testdata[5189] */ + { 1730, 0x0000000000000000ULL, { 0x13F5358188C8C705ULL, 0x0C4D45C89A0C42F3ULL } }, /* XSUM_XXH128_testdata[5190] */ + { 1730, 0x000000009E3779B1ULL, { 0x51A471BCF0518142ULL, 0xED6322209E789B77ULL } }, /* XSUM_XXH128_testdata[5191] */ + { 1730, 0x9E3779B185EBCA8DULL, { 0x5DEBDA86C8CCAD56ULL, 0xFA7ABEC35451986FULL } }, /* XSUM_XXH128_testdata[5192] */ + { 1731, 0x0000000000000000ULL, { 0x252BB54C35412507ULL, 0x21CEF6BDE683A13DULL } }, /* XSUM_XXH128_testdata[5193] */ + { 1731, 0x000000009E3779B1ULL, { 0xDC47F902399B4497ULL, 0x3AB4D8A488461F2EULL } }, /* XSUM_XXH128_testdata[5194] */ + { 1731, 0x9E3779B185EBCA8DULL, { 0xD3B16569E6073E74ULL, 0xC4A84221D5A9D82DULL } }, /* XSUM_XXH128_testdata[5195] */ + { 1732, 0x0000000000000000ULL, { 0x64A5B23189ABCB8CULL, 0x0F7059CF828DEB6EULL } }, /* XSUM_XXH128_testdata[5196] */ + { 1732, 0x000000009E3779B1ULL, { 0xA1C1AC712C1EEBDBULL, 0x721D62F49834E9A7ULL } }, /* XSUM_XXH128_testdata[5197] */ + { 1732, 0x9E3779B185EBCA8DULL, { 0x975A4B394E3570A6ULL, 0xC1657B21B0601434ULL } }, /* XSUM_XXH128_testdata[5198] */ + { 1733, 0x0000000000000000ULL, { 0xDA3EBB58E0F0DA51ULL, 0xF80846BAB9707189ULL } }, /* XSUM_XXH128_testdata[5199] */ + { 1733, 0x000000009E3779B1ULL, { 0x00CF9344442ED086ULL, 0xE589C51543DC9FFBULL } }, /* XSUM_XXH128_testdata[5200] */ + { 1733, 0x9E3779B185EBCA8DULL, { 0xCECBA4F5BDBA8B2AULL, 0x3A55AAEE2B39225AULL } }, /* XSUM_XXH128_testdata[5201] */ + { 1734, 0x0000000000000000ULL, { 0xB7043A69655059E3ULL, 0xB9D40930EE0A1DC7ULL } }, /* XSUM_XXH128_testdata[5202] */ + { 1734, 0x000000009E3779B1ULL, { 0xE574D59B5420309BULL, 0xBB6B1C1B01344944ULL } }, /* XSUM_XXH128_testdata[5203] */ + { 1734, 0x9E3779B185EBCA8DULL, { 0xAAD8EE22B3DE900FULL, 0x4E6C7013F32BA965ULL } }, /* XSUM_XXH128_testdata[5204] */ + { 1735, 0x0000000000000000ULL, { 0xBECA2F499E761EB3ULL, 0x9FEE56A1C278EFA8ULL } }, /* XSUM_XXH128_testdata[5205] */ + { 1735, 0x000000009E3779B1ULL, { 0xA034329BA5E56AF3ULL, 0x8B2A254DDA8F7E4FULL } }, /* XSUM_XXH128_testdata[5206] */ + { 1735, 0x9E3779B185EBCA8DULL, { 0x8AE05D359FC8BB7CULL, 0xCB2DDE97F010A7A9ULL } }, /* XSUM_XXH128_testdata[5207] */ + { 1736, 0x0000000000000000ULL, { 0xD9DC33599AFF2D43ULL, 0x6C39CB81DAF2986AULL } }, /* XSUM_XXH128_testdata[5208] */ + { 1736, 0x000000009E3779B1ULL, { 0x113C1A33FD3D171CULL, 0x67CE3E271B32FBD2ULL } }, /* XSUM_XXH128_testdata[5209] */ + { 1736, 0x9E3779B185EBCA8DULL, { 0x6CC9042D5E4EADDCULL, 0x63EF21F2136C1B88ULL } }, /* XSUM_XXH128_testdata[5210] */ + { 1737, 0x0000000000000000ULL, { 0x7FFA441E5FAC309FULL, 0x852D3EEDA8868754ULL } }, /* XSUM_XXH128_testdata[5211] */ + { 1737, 0x000000009E3779B1ULL, { 0x1C5516C5F70387E8ULL, 0x2A7EBD08A7533E55ULL } }, /* XSUM_XXH128_testdata[5212] */ + { 1737, 0x9E3779B185EBCA8DULL, { 0x58ADA79F6B44D126ULL, 0x9093DD8B7D00A20AULL } }, /* XSUM_XXH128_testdata[5213] */ + { 1738, 0x0000000000000000ULL, { 0x22CD0F38FB521217ULL, 0xC0B9EA93EC3513E0ULL } }, /* XSUM_XXH128_testdata[5214] */ + { 1738, 0x000000009E3779B1ULL, { 0x6BE025CB54C170BBULL, 0xAC0AEFBAF2AA0A5FULL } }, /* XSUM_XXH128_testdata[5215] */ + { 1738, 0x9E3779B185EBCA8DULL, { 0x9738D4E754A33DA1ULL, 0xFFA0A3CF17C8725BULL } }, /* XSUM_XXH128_testdata[5216] */ + { 1739, 0x0000000000000000ULL, { 0x4A5A3B33E78E44D4ULL, 0x1B31073264A82A09ULL } }, /* XSUM_XXH128_testdata[5217] */ + { 1739, 0x000000009E3779B1ULL, { 0x6EFDE3303E9B34EFULL, 0x8EA8ABF77C77E189ULL } }, /* XSUM_XXH128_testdata[5218] */ + { 1739, 0x9E3779B185EBCA8DULL, { 0x422E0C601DCA7742ULL, 0x4B6B8BF02E125017ULL } }, /* XSUM_XXH128_testdata[5219] */ + { 1740, 0x0000000000000000ULL, { 0xF03EB59E770E4CF9ULL, 0x09D36824D136FCB1ULL } }, /* XSUM_XXH128_testdata[5220] */ + { 1740, 0x000000009E3779B1ULL, { 0x833925BCAC206E90ULL, 0x1D6D24004451C822ULL } }, /* XSUM_XXH128_testdata[5221] */ + { 1740, 0x9E3779B185EBCA8DULL, { 0x8229CD6F18DACC95ULL, 0x47B1E7289C4E36E5ULL } }, /* XSUM_XXH128_testdata[5222] */ + { 1741, 0x0000000000000000ULL, { 0xDBE3D19DE2B85FDBULL, 0x474A495A4F864A12ULL } }, /* XSUM_XXH128_testdata[5223] */ + { 1741, 0x000000009E3779B1ULL, { 0x9375EB0FBAAAA5D7ULL, 0x647B76C964D074B6ULL } }, /* XSUM_XXH128_testdata[5224] */ + { 1741, 0x9E3779B185EBCA8DULL, { 0xE3BDD3ECB58B0EE4ULL, 0xE0993987411FCDC2ULL } }, /* XSUM_XXH128_testdata[5225] */ + { 1742, 0x0000000000000000ULL, { 0x7BDF6208541D8766ULL, 0x3120B69E532033A7ULL } }, /* XSUM_XXH128_testdata[5226] */ + { 1742, 0x000000009E3779B1ULL, { 0x792B40F296D414C4ULL, 0x7E45379DECA174ABULL } }, /* XSUM_XXH128_testdata[5227] */ + { 1742, 0x9E3779B185EBCA8DULL, { 0x724C23B0BCE23E84ULL, 0x6E70E57EDC9E927EULL } }, /* XSUM_XXH128_testdata[5228] */ + { 1743, 0x0000000000000000ULL, { 0x06D1B3351E6AC466ULL, 0x5D560FEF45AD33A3ULL } }, /* XSUM_XXH128_testdata[5229] */ + { 1743, 0x000000009E3779B1ULL, { 0xD6B7E047BEF455EBULL, 0xAFB992862F3D2FD6ULL } }, /* XSUM_XXH128_testdata[5230] */ + { 1743, 0x9E3779B185EBCA8DULL, { 0xB46EF27E6A19B6A2ULL, 0x555BB231B47E5936ULL } }, /* XSUM_XXH128_testdata[5231] */ + { 1744, 0x0000000000000000ULL, { 0xD4EDA665DC3A4B65ULL, 0x92A0B35C2D4A4A13ULL } }, /* XSUM_XXH128_testdata[5232] */ + { 1744, 0x000000009E3779B1ULL, { 0xC0AC89D384765DDDULL, 0xB95D2413D50613F9ULL } }, /* XSUM_XXH128_testdata[5233] */ + { 1744, 0x9E3779B185EBCA8DULL, { 0x630F4F4C2359C63EULL, 0x4846C375C7E573D5ULL } }, /* XSUM_XXH128_testdata[5234] */ + { 1745, 0x0000000000000000ULL, { 0xA108D968D8A4DDC9ULL, 0x8CAA78D7D9B09493ULL } }, /* XSUM_XXH128_testdata[5235] */ + { 1745, 0x000000009E3779B1ULL, { 0x119B67FC13C5204BULL, 0x3E84A18EB115F1AAULL } }, /* XSUM_XXH128_testdata[5236] */ + { 1745, 0x9E3779B185EBCA8DULL, { 0x28D998B9855C3E18ULL, 0x47FCA21F2A844691ULL } }, /* XSUM_XXH128_testdata[5237] */ + { 1746, 0x0000000000000000ULL, { 0x4988F7F0BE937CAEULL, 0xFF10AA020E0C8CACULL } }, /* XSUM_XXH128_testdata[5238] */ + { 1746, 0x000000009E3779B1ULL, { 0xD665385A69EC3437ULL, 0xBC960706782ECE6DULL } }, /* XSUM_XXH128_testdata[5239] */ + { 1746, 0x9E3779B185EBCA8DULL, { 0xA48FD8C5BB2CD9E1ULL, 0xA378A91218E7AAC2ULL } }, /* XSUM_XXH128_testdata[5240] */ + { 1747, 0x0000000000000000ULL, { 0xD6FB12FDB1622503ULL, 0xF11F8C08E0C8DCEBULL } }, /* XSUM_XXH128_testdata[5241] */ + { 1747, 0x000000009E3779B1ULL, { 0xEB5CF032481898B7ULL, 0xAC36B8A238936A21ULL } }, /* XSUM_XXH128_testdata[5242] */ + { 1747, 0x9E3779B185EBCA8DULL, { 0x81586448DE7D2F8CULL, 0xBCFCC0AEEA285B51ULL } }, /* XSUM_XXH128_testdata[5243] */ + { 1748, 0x0000000000000000ULL, { 0x27D8CEF8702F3CFBULL, 0x5718502B9DD68359ULL } }, /* XSUM_XXH128_testdata[5244] */ + { 1748, 0x000000009E3779B1ULL, { 0xF9119073782A4F9EULL, 0x401022B0A071EEE1ULL } }, /* XSUM_XXH128_testdata[5245] */ + { 1748, 0x9E3779B185EBCA8DULL, { 0x0B15BF0DC38C1EAEULL, 0x8B47C1DB20FF4237ULL } }, /* XSUM_XXH128_testdata[5246] */ + { 1749, 0x0000000000000000ULL, { 0xD155F7437A01C3E5ULL, 0xBCDF79F82611A413ULL } }, /* XSUM_XXH128_testdata[5247] */ + { 1749, 0x000000009E3779B1ULL, { 0x9F2AEC7E108F3969ULL, 0x821AB79161C39A91ULL } }, /* XSUM_XXH128_testdata[5248] */ + { 1749, 0x9E3779B185EBCA8DULL, { 0x6B86F11A836810B7ULL, 0xB0478CB6EC021056ULL } }, /* XSUM_XXH128_testdata[5249] */ + { 1750, 0x0000000000000000ULL, { 0xC8E020F2F9E8C469ULL, 0x312EF0A1464A2474ULL } }, /* XSUM_XXH128_testdata[5250] */ + { 1750, 0x000000009E3779B1ULL, { 0xA411B9BE43673069ULL, 0x6410AF2637F70176ULL } }, /* XSUM_XXH128_testdata[5251] */ + { 1750, 0x9E3779B185EBCA8DULL, { 0x89557BC08A51F05CULL, 0xA41F511629A94208ULL } }, /* XSUM_XXH128_testdata[5252] */ + { 1751, 0x0000000000000000ULL, { 0x1A92033D8555F351ULL, 0xE3A632DF90AA3BDCULL } }, /* XSUM_XXH128_testdata[5253] */ + { 1751, 0x000000009E3779B1ULL, { 0x1C16524A0B45459BULL, 0x39995DBF0CBFD444ULL } }, /* XSUM_XXH128_testdata[5254] */ + { 1751, 0x9E3779B185EBCA8DULL, { 0x37330043BC14621EULL, 0x24CB2068ED6341BAULL } }, /* XSUM_XXH128_testdata[5255] */ + { 1752, 0x0000000000000000ULL, { 0x96BBF5198F92D2E0ULL, 0xFFCDFE16E7798794ULL } }, /* XSUM_XXH128_testdata[5256] */ + { 1752, 0x000000009E3779B1ULL, { 0x8FB06950CE6FA183ULL, 0x33F0DA6C2B6E2A24ULL } }, /* XSUM_XXH128_testdata[5257] */ + { 1752, 0x9E3779B185EBCA8DULL, { 0x915B3EE331B9EF6EULL, 0x8BE28B4742522110ULL } }, /* XSUM_XXH128_testdata[5258] */ + { 1753, 0x0000000000000000ULL, { 0x8FEBB23093609094ULL, 0x5EF7E3538BCB78FEULL } }, /* XSUM_XXH128_testdata[5259] */ + { 1753, 0x000000009E3779B1ULL, { 0xACE879AEC1958B4CULL, 0x00C8B76F00EE6E7EULL } }, /* XSUM_XXH128_testdata[5260] */ + { 1753, 0x9E3779B185EBCA8DULL, { 0x9D99AFB6EDDE01C3ULL, 0x0C37834B28A3987DULL } }, /* XSUM_XXH128_testdata[5261] */ + { 1754, 0x0000000000000000ULL, { 0xB7EF3E6F6A42082CULL, 0xF56C1FE5941C10C8ULL } }, /* XSUM_XXH128_testdata[5262] */ + { 1754, 0x000000009E3779B1ULL, { 0x48768731016CA54BULL, 0x49D05C5433D09D53ULL } }, /* XSUM_XXH128_testdata[5263] */ + { 1754, 0x9E3779B185EBCA8DULL, { 0xC156FB0ED9A0B574ULL, 0x4E87D6681D766741ULL } }, /* XSUM_XXH128_testdata[5264] */ + { 1755, 0x0000000000000000ULL, { 0x856CF1FF067B3ADEULL, 0x4EF0783025EDA982ULL } }, /* XSUM_XXH128_testdata[5265] */ + { 1755, 0x000000009E3779B1ULL, { 0xB37B4D9CB55D43A7ULL, 0x58D957731ED24DFDULL } }, /* XSUM_XXH128_testdata[5266] */ + { 1755, 0x9E3779B185EBCA8DULL, { 0x7E059FB1914BD3FBULL, 0x356CE246FFF94B98ULL } }, /* XSUM_XXH128_testdata[5267] */ + { 1756, 0x0000000000000000ULL, { 0x3D1F07BED79EB024ULL, 0xD05BC4D4AAA9FA2DULL } }, /* XSUM_XXH128_testdata[5268] */ + { 1756, 0x000000009E3779B1ULL, { 0x6338E6E4C3D08DD3ULL, 0xADDFF61EFAED2008ULL } }, /* XSUM_XXH128_testdata[5269] */ + { 1756, 0x9E3779B185EBCA8DULL, { 0x9E8C8B897181AEC9ULL, 0x0771394FF7329435ULL } }, /* XSUM_XXH128_testdata[5270] */ + { 1757, 0x0000000000000000ULL, { 0x6CECD5D2CD92708CULL, 0xABF4754B3A020979ULL } }, /* XSUM_XXH128_testdata[5271] */ + { 1757, 0x000000009E3779B1ULL, { 0xA1B788FA25AFDF03ULL, 0xED971B880920B94BULL } }, /* XSUM_XXH128_testdata[5272] */ + { 1757, 0x9E3779B185EBCA8DULL, { 0x5545085298AA4C71ULL, 0xEE61B28D6B5050E7ULL } }, /* XSUM_XXH128_testdata[5273] */ + { 1758, 0x0000000000000000ULL, { 0x8E6BF225FD7F3FA1ULL, 0x95827A964FC42A73ULL } }, /* XSUM_XXH128_testdata[5274] */ + { 1758, 0x000000009E3779B1ULL, { 0x1E639598A602B984ULL, 0xE98FBA8811BAA904ULL } }, /* XSUM_XXH128_testdata[5275] */ + { 1758, 0x9E3779B185EBCA8DULL, { 0xB486909C53F163B1ULL, 0x912EA636EA172519ULL } }, /* XSUM_XXH128_testdata[5276] */ + { 1759, 0x0000000000000000ULL, { 0x7BF5430C9E06389AULL, 0x7C93AA5BA9DF70BEULL } }, /* XSUM_XXH128_testdata[5277] */ + { 1759, 0x000000009E3779B1ULL, { 0xCA362F1CA0402540ULL, 0x1A44D7D490054A1BULL } }, /* XSUM_XXH128_testdata[5278] */ + { 1759, 0x9E3779B185EBCA8DULL, { 0x5AC6791A15235D18ULL, 0x95FA9EAFD047A474ULL } }, /* XSUM_XXH128_testdata[5279] */ + { 1760, 0x0000000000000000ULL, { 0x49733C9DDE946FB4ULL, 0xD06F3095ABFD5243ULL } }, /* XSUM_XXH128_testdata[5280] */ + { 1760, 0x000000009E3779B1ULL, { 0x565607E534E459BCULL, 0x737260B029F4F18BULL } }, /* XSUM_XXH128_testdata[5281] */ + { 1760, 0x9E3779B185EBCA8DULL, { 0x20D21AC0B3025E9BULL, 0xC2DFDF6EE52C549DULL } }, /* XSUM_XXH128_testdata[5282] */ + { 1761, 0x0000000000000000ULL, { 0x7BD8D88D0D402CC8ULL, 0xC31CB9E7F8BD7004ULL } }, /* XSUM_XXH128_testdata[5283] */ + { 1761, 0x000000009E3779B1ULL, { 0xFB66695E42799E8EULL, 0x263CA2262FE93AEFULL } }, /* XSUM_XXH128_testdata[5284] */ + { 1761, 0x9E3779B185EBCA8DULL, { 0xCB34E8082EA11948ULL, 0x40DD823B30749AD2ULL } }, /* XSUM_XXH128_testdata[5285] */ + { 1762, 0x0000000000000000ULL, { 0xAAF2103EAD4F67DEULL, 0x6FC5BAC19F85F197ULL } }, /* XSUM_XXH128_testdata[5286] */ + { 1762, 0x000000009E3779B1ULL, { 0xEB4C6D58B84F6344ULL, 0xD0D0B2E8C77ACC62ULL } }, /* XSUM_XXH128_testdata[5287] */ + { 1762, 0x9E3779B185EBCA8DULL, { 0x6D2C80A8A7B34A4AULL, 0x85DA8A43333D2A96ULL } }, /* XSUM_XXH128_testdata[5288] */ + { 1763, 0x0000000000000000ULL, { 0xF64BA24F6F2C7671ULL, 0x7309FEF4EAB41889ULL } }, /* XSUM_XXH128_testdata[5289] */ + { 1763, 0x000000009E3779B1ULL, { 0x8262867865555F5BULL, 0x1F0EAE3B85377701ULL } }, /* XSUM_XXH128_testdata[5290] */ + { 1763, 0x9E3779B185EBCA8DULL, { 0xD98C1890DFE1418FULL, 0x8FDC0945DC38B494ULL } }, /* XSUM_XXH128_testdata[5291] */ + { 1764, 0x0000000000000000ULL, { 0xA097BC4C9DC93D8FULL, 0xAC6E5D73820F7D61ULL } }, /* XSUM_XXH128_testdata[5292] */ + { 1764, 0x000000009E3779B1ULL, { 0x98E061DA587134CDULL, 0x46663CE05A0B8808ULL } }, /* XSUM_XXH128_testdata[5293] */ + { 1764, 0x9E3779B185EBCA8DULL, { 0xF2C2AC304979B5A6ULL, 0x74B0EC2D3ECB29F8ULL } }, /* XSUM_XXH128_testdata[5294] */ + { 1765, 0x0000000000000000ULL, { 0x03E739F4A58A210EULL, 0xEF4368D31E065981ULL } }, /* XSUM_XXH128_testdata[5295] */ + { 1765, 0x000000009E3779B1ULL, { 0x029990C500AF581CULL, 0xD8F8814A93DC27A8ULL } }, /* XSUM_XXH128_testdata[5296] */ + { 1765, 0x9E3779B185EBCA8DULL, { 0x149D280829B49700ULL, 0x9A2931AC32AE94CCULL } }, /* XSUM_XXH128_testdata[5297] */ + { 1766, 0x0000000000000000ULL, { 0x2389D9082B242983ULL, 0x0F706B7EEE0B6573ULL } }, /* XSUM_XXH128_testdata[5298] */ + { 1766, 0x000000009E3779B1ULL, { 0xBA2C4BBE221BB6FCULL, 0x23627CAA427F63E0ULL } }, /* XSUM_XXH128_testdata[5299] */ + { 1766, 0x9E3779B185EBCA8DULL, { 0x602BBC51A33FC7AAULL, 0x2B4790BB1997B352ULL } }, /* XSUM_XXH128_testdata[5300] */ + { 1767, 0x0000000000000000ULL, { 0x4C19748B9519F6E5ULL, 0x1CB11D20A0373D78ULL } }, /* XSUM_XXH128_testdata[5301] */ + { 1767, 0x000000009E3779B1ULL, { 0x0EC81040E7D0EB92ULL, 0xDA14755636C1E437ULL } }, /* XSUM_XXH128_testdata[5302] */ + { 1767, 0x9E3779B185EBCA8DULL, { 0xCDD26659C7C05FF5ULL, 0x831247C37CC6A1B5ULL } }, /* XSUM_XXH128_testdata[5303] */ + { 1768, 0x0000000000000000ULL, { 0x872F5C85F902B2E6ULL, 0xA7719DEEABB89898ULL } }, /* XSUM_XXH128_testdata[5304] */ + { 1768, 0x000000009E3779B1ULL, { 0x8833A285AC05D7E9ULL, 0xA5B1F102BDA81C44ULL } }, /* XSUM_XXH128_testdata[5305] */ + { 1768, 0x9E3779B185EBCA8DULL, { 0x26AA174D954F2498ULL, 0x5487E326D480C8FAULL } }, /* XSUM_XXH128_testdata[5306] */ + { 1769, 0x0000000000000000ULL, { 0xF04114F5FB2E7219ULL, 0x4A184CF21E9C7122ULL } }, /* XSUM_XXH128_testdata[5307] */ + { 1769, 0x000000009E3779B1ULL, { 0x3C2C390AF36C0BEAULL, 0xF8F66188D81F3542ULL } }, /* XSUM_XXH128_testdata[5308] */ + { 1769, 0x9E3779B185EBCA8DULL, { 0x3E59BF2B3D0CA878ULL, 0x980F2931F2F4D2A8ULL } }, /* XSUM_XXH128_testdata[5309] */ + { 1770, 0x0000000000000000ULL, { 0xDC493AD0E7E20665ULL, 0xBCD56DEF83B129FEULL } }, /* XSUM_XXH128_testdata[5310] */ + { 1770, 0x000000009E3779B1ULL, { 0x45E70EF9E33731ECULL, 0x294EABA27F377471ULL } }, /* XSUM_XXH128_testdata[5311] */ + { 1770, 0x9E3779B185EBCA8DULL, { 0x3800DC833B5C18B9ULL, 0xAFD441BFFB6673E7ULL } }, /* XSUM_XXH128_testdata[5312] */ + { 1771, 0x0000000000000000ULL, { 0x9113DF900D00D5CBULL, 0xBC44DED32188D43BULL } }, /* XSUM_XXH128_testdata[5313] */ + { 1771, 0x000000009E3779B1ULL, { 0x68600EBF5FDF6C20ULL, 0x2600D20ECAA2789EULL } }, /* XSUM_XXH128_testdata[5314] */ + { 1771, 0x9E3779B185EBCA8DULL, { 0xB279ED197A6809C4ULL, 0x4257ACB6F042F17DULL } }, /* XSUM_XXH128_testdata[5315] */ + { 1772, 0x0000000000000000ULL, { 0xBA3E2263E19706AAULL, 0xD415CFF544D468B4ULL } }, /* XSUM_XXH128_testdata[5316] */ + { 1772, 0x000000009E3779B1ULL, { 0x01A707BDB3264D1EULL, 0xA245599F0447C7D0ULL } }, /* XSUM_XXH128_testdata[5317] */ + { 1772, 0x9E3779B185EBCA8DULL, { 0x4A94DFE3951D5816ULL, 0x2CA0C743A3236D59ULL } }, /* XSUM_XXH128_testdata[5318] */ + { 1773, 0x0000000000000000ULL, { 0x005C77B9B80C4E8FULL, 0xC87239B20BB91FC9ULL } }, /* XSUM_XXH128_testdata[5319] */ + { 1773, 0x000000009E3779B1ULL, { 0x20EA6BE76DB48A17ULL, 0x0317C11F5F3FA2B5ULL } }, /* XSUM_XXH128_testdata[5320] */ + { 1773, 0x9E3779B185EBCA8DULL, { 0x239B0A1EB5ECEB81ULL, 0x66EA5AA9614AC3E0ULL } }, /* XSUM_XXH128_testdata[5321] */ + { 1774, 0x0000000000000000ULL, { 0x70B9E7F2520F30EEULL, 0xCDB6A50DDED7F913ULL } }, /* XSUM_XXH128_testdata[5322] */ + { 1774, 0x000000009E3779B1ULL, { 0x2D05AD82A3D1CC59ULL, 0xA4189B755D65EA63ULL } }, /* XSUM_XXH128_testdata[5323] */ + { 1774, 0x9E3779B185EBCA8DULL, { 0x55AE8F34701876CBULL, 0xD91EF6A90B018FF8ULL } }, /* XSUM_XXH128_testdata[5324] */ + { 1775, 0x0000000000000000ULL, { 0x4EC99C083B39FD2BULL, 0x0AAFAB1AED5C30B4ULL } }, /* XSUM_XXH128_testdata[5325] */ + { 1775, 0x000000009E3779B1ULL, { 0xECBA6D4A26F4FA60ULL, 0xBEC9F8F357A68817ULL } }, /* XSUM_XXH128_testdata[5326] */ + { 1775, 0x9E3779B185EBCA8DULL, { 0x726C3C05200E1B87ULL, 0xA263F86BE2523AD1ULL } }, /* XSUM_XXH128_testdata[5327] */ + { 1776, 0x0000000000000000ULL, { 0x346ACEAFA0F4C865ULL, 0xF3CC02C24753E118ULL } }, /* XSUM_XXH128_testdata[5328] */ + { 1776, 0x000000009E3779B1ULL, { 0x7B2DC0D202B3CA0BULL, 0x0072486AF08C0086ULL } }, /* XSUM_XXH128_testdata[5329] */ + { 1776, 0x9E3779B185EBCA8DULL, { 0x8D64F6CEBB88E55BULL, 0x87279A0B2E4D1CE6ULL } }, /* XSUM_XXH128_testdata[5330] */ + { 1777, 0x0000000000000000ULL, { 0xEEB0D93FC377A9B4ULL, 0xB77F8E995DBD4D67ULL } }, /* XSUM_XXH128_testdata[5331] */ + { 1777, 0x000000009E3779B1ULL, { 0xAACFCB5C90A26EB9ULL, 0x2A4A63B629DF54C6ULL } }, /* XSUM_XXH128_testdata[5332] */ + { 1777, 0x9E3779B185EBCA8DULL, { 0x446FADB53542D92EULL, 0xA979B14FBF81B1EAULL } }, /* XSUM_XXH128_testdata[5333] */ + { 1778, 0x0000000000000000ULL, { 0x28545D09486B0EDEULL, 0x5EB3B9DF31A1A1F1ULL } }, /* XSUM_XXH128_testdata[5334] */ + { 1778, 0x000000009E3779B1ULL, { 0x04C0C88FF57225F2ULL, 0x753D9F064795A3BCULL } }, /* XSUM_XXH128_testdata[5335] */ + { 1778, 0x9E3779B185EBCA8DULL, { 0x3CA002D070E98821ULL, 0x53819414DE075C59ULL } }, /* XSUM_XXH128_testdata[5336] */ + { 1779, 0x0000000000000000ULL, { 0xF0CA94F97D50BBFEULL, 0x7D1D67DE12FE3700ULL } }, /* XSUM_XXH128_testdata[5337] */ + { 1779, 0x000000009E3779B1ULL, { 0xCCC2F102B39D5422ULL, 0x58D662B1A7DD3EB7ULL } }, /* XSUM_XXH128_testdata[5338] */ + { 1779, 0x9E3779B185EBCA8DULL, { 0xF59AE48D6BDD5E0AULL, 0x3617EA85CC98C3E8ULL } }, /* XSUM_XXH128_testdata[5339] */ + { 1780, 0x0000000000000000ULL, { 0x1B418E8757E55B1CULL, 0xCBB2466B29827B9DULL } }, /* XSUM_XXH128_testdata[5340] */ + { 1780, 0x000000009E3779B1ULL, { 0x240B924887EFCB4CULL, 0x27FF00DC1F60CA0FULL } }, /* XSUM_XXH128_testdata[5341] */ + { 1780, 0x9E3779B185EBCA8DULL, { 0x02EAF2FA4ECE6DEEULL, 0x062B49FB37E65F8DULL } }, /* XSUM_XXH128_testdata[5342] */ + { 1781, 0x0000000000000000ULL, { 0x76EE9AAE93299118ULL, 0xF6DCF3E3D6BD17F1ULL } }, /* XSUM_XXH128_testdata[5343] */ + { 1781, 0x000000009E3779B1ULL, { 0x89DEA57DF3A4B3CCULL, 0x37BB2F3B2C120D9EULL } }, /* XSUM_XXH128_testdata[5344] */ + { 1781, 0x9E3779B185EBCA8DULL, { 0xC7B9D76F32FDC14FULL, 0xCE17BC7EBDE75699ULL } }, /* XSUM_XXH128_testdata[5345] */ + { 1782, 0x0000000000000000ULL, { 0x30A587DC4F623029ULL, 0xA9BC1802B8D4838AULL } }, /* XSUM_XXH128_testdata[5346] */ + { 1782, 0x000000009E3779B1ULL, { 0xD00AA895BFA4E8E8ULL, 0xFDCE67B13631F3E4ULL } }, /* XSUM_XXH128_testdata[5347] */ + { 1782, 0x9E3779B185EBCA8DULL, { 0x8C443094A526F96EULL, 0xB64032582EEF0C8EULL } }, /* XSUM_XXH128_testdata[5348] */ + { 1783, 0x0000000000000000ULL, { 0xC98D9F8922FE6D86ULL, 0x6D08996D981FDB48ULL } }, /* XSUM_XXH128_testdata[5349] */ + { 1783, 0x000000009E3779B1ULL, { 0x0BAE9370A6DAFC19ULL, 0xDAEDBF9601AC3E8CULL } }, /* XSUM_XXH128_testdata[5350] */ + { 1783, 0x9E3779B185EBCA8DULL, { 0xD84F0298549F96D5ULL, 0x6E2AC745349E857AULL } }, /* XSUM_XXH128_testdata[5351] */ + { 1784, 0x0000000000000000ULL, { 0xB605BE989491FC40ULL, 0x7C609862D0468D63ULL } }, /* XSUM_XXH128_testdata[5352] */ + { 1784, 0x000000009E3779B1ULL, { 0x1E9A832A1E89B1F9ULL, 0x285DA1781D81F7C6ULL } }, /* XSUM_XXH128_testdata[5353] */ + { 1784, 0x9E3779B185EBCA8DULL, { 0xC367EC49E1BF23F3ULL, 0xB2ECD96D440454B2ULL } }, /* XSUM_XXH128_testdata[5354] */ + { 1785, 0x0000000000000000ULL, { 0x9D80AD9032C9486DULL, 0x7C7FF011ACE706CFULL } }, /* XSUM_XXH128_testdata[5355] */ + { 1785, 0x000000009E3779B1ULL, { 0xFE3B976D9D1DAF35ULL, 0xE8C6780A962FCE58ULL } }, /* XSUM_XXH128_testdata[5356] */ + { 1785, 0x9E3779B185EBCA8DULL, { 0xAED7D00BED5E8263ULL, 0x31D15CCCCF52D712ULL } }, /* XSUM_XXH128_testdata[5357] */ + { 1786, 0x0000000000000000ULL, { 0x2124A0F278C2B392ULL, 0x338BF9D17947730AULL } }, /* XSUM_XXH128_testdata[5358] */ + { 1786, 0x000000009E3779B1ULL, { 0x7D41E61FFBFCE9EDULL, 0xC52174205B9112D1ULL } }, /* XSUM_XXH128_testdata[5359] */ + { 1786, 0x9E3779B185EBCA8DULL, { 0x1E972898A06F3147ULL, 0x9FF52B56D4005F87ULL } }, /* XSUM_XXH128_testdata[5360] */ + { 1787, 0x0000000000000000ULL, { 0x75E335BE40042A57ULL, 0x2BA10297BC7330C2ULL } }, /* XSUM_XXH128_testdata[5361] */ + { 1787, 0x000000009E3779B1ULL, { 0xCAA867C8DB89240CULL, 0xBA161ADABA273A13ULL } }, /* XSUM_XXH128_testdata[5362] */ + { 1787, 0x9E3779B185EBCA8DULL, { 0x8E60B89DCD3F45ECULL, 0x1730D302A0F5D1C2ULL } }, /* XSUM_XXH128_testdata[5363] */ + { 1788, 0x0000000000000000ULL, { 0x137D7CCB6D40ABE2ULL, 0x26AAEBE38EB0668BULL } }, /* XSUM_XXH128_testdata[5364] */ + { 1788, 0x000000009E3779B1ULL, { 0x54150BD4DDD288CBULL, 0x325964B3A2E6869FULL } }, /* XSUM_XXH128_testdata[5365] */ + { 1788, 0x9E3779B185EBCA8DULL, { 0x227A5D232641DF7AULL, 0xE45B03AF640A0232ULL } }, /* XSUM_XXH128_testdata[5366] */ + { 1789, 0x0000000000000000ULL, { 0x0D7D2C85BC8340EAULL, 0xF6F17A353DF4F43EULL } }, /* XSUM_XXH128_testdata[5367] */ + { 1789, 0x000000009E3779B1ULL, { 0xC53340A8D489D5CFULL, 0x8F0DC9DE4E2AE776ULL } }, /* XSUM_XXH128_testdata[5368] */ + { 1789, 0x9E3779B185EBCA8DULL, { 0x2822DA21F08795C5ULL, 0x92F30277E5E01EF5ULL } }, /* XSUM_XXH128_testdata[5369] */ + { 1790, 0x0000000000000000ULL, { 0x59082F65C4BE2301ULL, 0x8D36A21BAA2B0FDFULL } }, /* XSUM_XXH128_testdata[5370] */ + { 1790, 0x000000009E3779B1ULL, { 0xA6A14D1B29846F1AULL, 0x75280B94A2C6EA93ULL } }, /* XSUM_XXH128_testdata[5371] */ + { 1790, 0x9E3779B185EBCA8DULL, { 0x5B83834233EA8169ULL, 0xCA573FD629CFCE25ULL } }, /* XSUM_XXH128_testdata[5372] */ + { 1791, 0x0000000000000000ULL, { 0x1CABC296AE13AFC9ULL, 0xF8F576F6C9C50459ULL } }, /* XSUM_XXH128_testdata[5373] */ + { 1791, 0x000000009E3779B1ULL, { 0xF96CEEEBA5242F77ULL, 0x95CA325165D8CBC3ULL } }, /* XSUM_XXH128_testdata[5374] */ + { 1791, 0x9E3779B185EBCA8DULL, { 0x4337C8383334571BULL, 0x53B938A6D5239614ULL } }, /* XSUM_XXH128_testdata[5375] */ + { 1792, 0x0000000000000000ULL, { 0x1600BFD22906D6D3ULL, 0x2DBC131AF44AD464ULL } }, /* XSUM_XXH128_testdata[5376] */ + { 1792, 0x000000009E3779B1ULL, { 0x829CBE2B8AC2B5ECULL, 0x8897854C137C9B90ULL } }, /* XSUM_XXH128_testdata[5377] */ + { 1792, 0x9E3779B185EBCA8DULL, { 0xE9D76D35B96143DBULL, 0xE5575CD21E0BFBE5ULL } }, /* XSUM_XXH128_testdata[5378] */ + { 1793, 0x0000000000000000ULL, { 0x7442C5CFB64761CDULL, 0xF80727272B9B0697ULL } }, /* XSUM_XXH128_testdata[5379] */ + { 1793, 0x000000009E3779B1ULL, { 0xC3E64600055EFF4BULL, 0x66604A05F1C83119ULL } }, /* XSUM_XXH128_testdata[5380] */ + { 1793, 0x9E3779B185EBCA8DULL, { 0x4DD3F5933ACDF470ULL, 0x9C99C420874898D3ULL } }, /* XSUM_XXH128_testdata[5381] */ + { 1794, 0x0000000000000000ULL, { 0xB5CE87CEBA63C5D5ULL, 0x345193F2B4C1D986ULL } }, /* XSUM_XXH128_testdata[5382] */ + { 1794, 0x000000009E3779B1ULL, { 0xD75DA1AD2B7DAFFFULL, 0xC114AB0F1C76597DULL } }, /* XSUM_XXH128_testdata[5383] */ + { 1794, 0x9E3779B185EBCA8DULL, { 0x1B6FDCDBF614B44CULL, 0x304DEB7EA350EB1DULL } }, /* XSUM_XXH128_testdata[5384] */ + { 1795, 0x0000000000000000ULL, { 0x203458291AFCB92EULL, 0xFC1CD883D4A111B5ULL } }, /* XSUM_XXH128_testdata[5385] */ + { 1795, 0x000000009E3779B1ULL, { 0x57A9C3A34F97F525ULL, 0x2F0CB8ECF37EB0C1ULL } }, /* XSUM_XXH128_testdata[5386] */ + { 1795, 0x9E3779B185EBCA8DULL, { 0x90E814F41CB31E27ULL, 0x882EC73D64F820F6ULL } }, /* XSUM_XXH128_testdata[5387] */ + { 1796, 0x0000000000000000ULL, { 0x6662DCB7A0C70C62ULL, 0x7C93F0C140D94534ULL } }, /* XSUM_XXH128_testdata[5388] */ + { 1796, 0x000000009E3779B1ULL, { 0x9D6849BBD605C043ULL, 0x110D40039F547845ULL } }, /* XSUM_XXH128_testdata[5389] */ + { 1796, 0x9E3779B185EBCA8DULL, { 0x11F227B612D8D3F1ULL, 0xB3E74E0B70FC15ACULL } }, /* XSUM_XXH128_testdata[5390] */ + { 1797, 0x0000000000000000ULL, { 0xE7CD93B7BBE19A89ULL, 0x9BB891ED3A6F7387ULL } }, /* XSUM_XXH128_testdata[5391] */ + { 1797, 0x000000009E3779B1ULL, { 0xB31B86A5D2561068ULL, 0x65AA4924AB2505B5ULL } }, /* XSUM_XXH128_testdata[5392] */ + { 1797, 0x9E3779B185EBCA8DULL, { 0x9DB0C9AF8CB16E95ULL, 0xF244C6D0F4BCEFFCULL } }, /* XSUM_XXH128_testdata[5393] */ + { 1798, 0x0000000000000000ULL, { 0x4239EC2E79A4A17BULL, 0xAA9DCF52BC7E62B2ULL } }, /* XSUM_XXH128_testdata[5394] */ + { 1798, 0x000000009E3779B1ULL, { 0xCE82CA4CFA61774EULL, 0x3A7863CC4DF96547ULL } }, /* XSUM_XXH128_testdata[5395] */ + { 1798, 0x9E3779B185EBCA8DULL, { 0x82622B15DE9DE4F4ULL, 0x396A799B322441A7ULL } }, /* XSUM_XXH128_testdata[5396] */ + { 1799, 0x0000000000000000ULL, { 0x19712A44419FBB0EULL, 0xB6E1FB70E8B3C33DULL } }, /* XSUM_XXH128_testdata[5397] */ + { 1799, 0x000000009E3779B1ULL, { 0x57F25D8914332F77ULL, 0xD0897610AEB15DAFULL } }, /* XSUM_XXH128_testdata[5398] */ + { 1799, 0x9E3779B185EBCA8DULL, { 0x41AC7FC823CE85FEULL, 0xDD06C96EDEBDBF2BULL } }, /* XSUM_XXH128_testdata[5399] */ + { 1800, 0x0000000000000000ULL, { 0x09138FDB0A328971ULL, 0x483CD980E0BADCACULL } }, /* XSUM_XXH128_testdata[5400] */ + { 1800, 0x000000009E3779B1ULL, { 0x542C2DDD0C2E1379ULL, 0x26EF3DD259C23B3AULL } }, /* XSUM_XXH128_testdata[5401] */ + { 1800, 0x9E3779B185EBCA8DULL, { 0xBA962ED162D0CD51ULL, 0xDE982B243F627205ULL } }, /* XSUM_XXH128_testdata[5402] */ + { 1801, 0x0000000000000000ULL, { 0x60BB2E0AE238E080ULL, 0x986CC37E7942FC25ULL } }, /* XSUM_XXH128_testdata[5403] */ + { 1801, 0x000000009E3779B1ULL, { 0x718CE1C7519A06CCULL, 0x945BCAB9D28A238DULL } }, /* XSUM_XXH128_testdata[5404] */ + { 1801, 0x9E3779B185EBCA8DULL, { 0xCF9D2A442939067AULL, 0x5EC55BA36E3C7DCBULL } }, /* XSUM_XXH128_testdata[5405] */ + { 1802, 0x0000000000000000ULL, { 0x5C7BE39A4D166B11ULL, 0x5284545EF2F4474EULL } }, /* XSUM_XXH128_testdata[5406] */ + { 1802, 0x000000009E3779B1ULL, { 0xEEF03C648E61E388ULL, 0x9EAD4F07BBD3E3C8ULL } }, /* XSUM_XXH128_testdata[5407] */ + { 1802, 0x9E3779B185EBCA8DULL, { 0xBE8B6B2210FE8928ULL, 0xF5DF5C673DF455EEULL } }, /* XSUM_XXH128_testdata[5408] */ + { 1803, 0x0000000000000000ULL, { 0xA8112FDF1FE59564ULL, 0x30B0BA8698B25A79ULL } }, /* XSUM_XXH128_testdata[5409] */ + { 1803, 0x000000009E3779B1ULL, { 0x1751E67BA77EE970ULL, 0x6FF993401DE80D72ULL } }, /* XSUM_XXH128_testdata[5410] */ + { 1803, 0x9E3779B185EBCA8DULL, { 0xABDAAC610AC20E1AULL, 0xD48691111803A3F7ULL } }, /* XSUM_XXH128_testdata[5411] */ + { 1804, 0x0000000000000000ULL, { 0xD3D8FF0B3F208BCBULL, 0x2E8968B351D41561ULL } }, /* XSUM_XXH128_testdata[5412] */ + { 1804, 0x000000009E3779B1ULL, { 0xA43F0A0B8822675DULL, 0x0B4D89478370763CULL } }, /* XSUM_XXH128_testdata[5413] */ + { 1804, 0x9E3779B185EBCA8DULL, { 0x2DD6D5156249E5FBULL, 0xCE3205E134ABA38DULL } }, /* XSUM_XXH128_testdata[5414] */ + { 1805, 0x0000000000000000ULL, { 0x055F42CC1C378003ULL, 0xB1FBB4BFCEDE746CULL } }, /* XSUM_XXH128_testdata[5415] */ + { 1805, 0x000000009E3779B1ULL, { 0xFF7B53ADE921C2E0ULL, 0x0A7C3F0AC9423FDDULL } }, /* XSUM_XXH128_testdata[5416] */ + { 1805, 0x9E3779B185EBCA8DULL, { 0x842ED122359E4A02ULL, 0x9473D5C125E59315ULL } }, /* XSUM_XXH128_testdata[5417] */ + { 1806, 0x0000000000000000ULL, { 0xCD607DBA7AD99830ULL, 0x68CB307135FC1B94ULL } }, /* XSUM_XXH128_testdata[5418] */ + { 1806, 0x000000009E3779B1ULL, { 0x35CC8411F42F8E77ULL, 0x8A2E5D42FF7BB0E9ULL } }, /* XSUM_XXH128_testdata[5419] */ + { 1806, 0x9E3779B185EBCA8DULL, { 0x9E68ED4EB7B5DA31ULL, 0x818F82668DDF5ED0ULL } }, /* XSUM_XXH128_testdata[5420] */ + { 1807, 0x0000000000000000ULL, { 0x6F3CBAB3D64C7DC1ULL, 0xAAD3C089C286E5ADULL } }, /* XSUM_XXH128_testdata[5421] */ + { 1807, 0x000000009E3779B1ULL, { 0xC0E50D66C10E5DF6ULL, 0x9B1BA7B86C3F0EF4ULL } }, /* XSUM_XXH128_testdata[5422] */ + { 1807, 0x9E3779B185EBCA8DULL, { 0x6B29605C4425F727ULL, 0x887752E19855BD58ULL } }, /* XSUM_XXH128_testdata[5423] */ + { 1808, 0x0000000000000000ULL, { 0xD6C0644F3EE9057EULL, 0x03D2E46EDB16D60EULL } }, /* XSUM_XXH128_testdata[5424] */ + { 1808, 0x000000009E3779B1ULL, { 0x6F2EE92A8DED742CULL, 0x3739DE0ACFEBB464ULL } }, /* XSUM_XXH128_testdata[5425] */ + { 1808, 0x9E3779B185EBCA8DULL, { 0x6095DA16E23ABCE7ULL, 0x2CAFF1A21B4B1966ULL } }, /* XSUM_XXH128_testdata[5426] */ + { 1809, 0x0000000000000000ULL, { 0xCC323714241418F9ULL, 0x26EEED7EAADA35D8ULL } }, /* XSUM_XXH128_testdata[5427] */ + { 1809, 0x000000009E3779B1ULL, { 0xEC6C95AEC35300EDULL, 0x169A305FB86AF370ULL } }, /* XSUM_XXH128_testdata[5428] */ + { 1809, 0x9E3779B185EBCA8DULL, { 0x08439A6E0F41E972ULL, 0x56378BD80C9DA2D5ULL } }, /* XSUM_XXH128_testdata[5429] */ + { 1810, 0x0000000000000000ULL, { 0xA2ADC107689E8EA8ULL, 0xB5901D7F44E89AC2ULL } }, /* XSUM_XXH128_testdata[5430] */ + { 1810, 0x000000009E3779B1ULL, { 0x882DEFB9A2E9BE88ULL, 0xB63E08357295498CULL } }, /* XSUM_XXH128_testdata[5431] */ + { 1810, 0x9E3779B185EBCA8DULL, { 0xAD99623A0186EA0CULL, 0xDBE4321A4A3F2B67ULL } }, /* XSUM_XXH128_testdata[5432] */ + { 1811, 0x0000000000000000ULL, { 0x906A2880DC1BF8BEULL, 0x1D1246E5E6D94B62ULL } }, /* XSUM_XXH128_testdata[5433] */ + { 1811, 0x000000009E3779B1ULL, { 0xD030D537A4F834FCULL, 0xA734408AA78800B9ULL } }, /* XSUM_XXH128_testdata[5434] */ + { 1811, 0x9E3779B185EBCA8DULL, { 0x26B1549538E80D59ULL, 0x01B3F396F82EC7DEULL } }, /* XSUM_XXH128_testdata[5435] */ + { 1812, 0x0000000000000000ULL, { 0xB668F76405AA3171ULL, 0x26EAC9D66B3A986BULL } }, /* XSUM_XXH128_testdata[5436] */ + { 1812, 0x000000009E3779B1ULL, { 0xF093084CEF993BFFULL, 0x7B8A080E4973EC51ULL } }, /* XSUM_XXH128_testdata[5437] */ + { 1812, 0x9E3779B185EBCA8DULL, { 0x029C0FD70CBE3722ULL, 0xB51C6C751FCEBBCAULL } }, /* XSUM_XXH128_testdata[5438] */ + { 1813, 0x0000000000000000ULL, { 0x4DDF364B72D57724ULL, 0xCC246C23058C10D8ULL } }, /* XSUM_XXH128_testdata[5439] */ + { 1813, 0x000000009E3779B1ULL, { 0xA17CCBADFFDAB623ULL, 0x409030429F6EDCC9ULL } }, /* XSUM_XXH128_testdata[5440] */ + { 1813, 0x9E3779B185EBCA8DULL, { 0xD12A4F2EBF788B64ULL, 0xA257CB88151CB25DULL } }, /* XSUM_XXH128_testdata[5441] */ + { 1814, 0x0000000000000000ULL, { 0x3ACCD4A8FC7EDB52ULL, 0x4FDB35FC28363374ULL } }, /* XSUM_XXH128_testdata[5442] */ + { 1814, 0x000000009E3779B1ULL, { 0x86B0AC0154CFD27CULL, 0x24C0D9841DD46E70ULL } }, /* XSUM_XXH128_testdata[5443] */ + { 1814, 0x9E3779B185EBCA8DULL, { 0x56E573B5D8466C25ULL, 0xFC612B5A76A0E1D0ULL } }, /* XSUM_XXH128_testdata[5444] */ + { 1815, 0x0000000000000000ULL, { 0x86BEA08138DF8496ULL, 0xAFBF60BA8DBEE4C7ULL } }, /* XSUM_XXH128_testdata[5445] */ + { 1815, 0x000000009E3779B1ULL, { 0x33D994855725A75EULL, 0x6240A05EE63FD385ULL } }, /* XSUM_XXH128_testdata[5446] */ + { 1815, 0x9E3779B185EBCA8DULL, { 0x94F9EB73D3671373ULL, 0x9900FEE5DADD99D6ULL } }, /* XSUM_XXH128_testdata[5447] */ + { 1816, 0x0000000000000000ULL, { 0xEB9B23A4064CA4F1ULL, 0xC33F497DC395EEBAULL } }, /* XSUM_XXH128_testdata[5448] */ + { 1816, 0x000000009E3779B1ULL, { 0x46DA7AEAA7A2099AULL, 0x598FA5CFDD3A3525ULL } }, /* XSUM_XXH128_testdata[5449] */ + { 1816, 0x9E3779B185EBCA8DULL, { 0xEB3591CFA85FBF19ULL, 0xEC0D69FD54F27759ULL } }, /* XSUM_XXH128_testdata[5450] */ + { 1817, 0x0000000000000000ULL, { 0xA19C89C1644C79CDULL, 0x1AAC82905C093AC4ULL } }, /* XSUM_XXH128_testdata[5451] */ + { 1817, 0x000000009E3779B1ULL, { 0xCB01A37D33FC8042ULL, 0x74CC0D3819EDFA6CULL } }, /* XSUM_XXH128_testdata[5452] */ + { 1817, 0x9E3779B185EBCA8DULL, { 0x097868EDA1665A24ULL, 0xEA675A49B3FC53ADULL } }, /* XSUM_XXH128_testdata[5453] */ + { 1818, 0x0000000000000000ULL, { 0x874B6E4172150EEFULL, 0x8BDD3FA12F782143ULL } }, /* XSUM_XXH128_testdata[5454] */ + { 1818, 0x000000009E3779B1ULL, { 0x91E6BAFA3FC1A9A4ULL, 0xFA5E994D086BEF76ULL } }, /* XSUM_XXH128_testdata[5455] */ + { 1818, 0x9E3779B185EBCA8DULL, { 0x026DC926C3652C4EULL, 0x70D7546CEE2A3CF6ULL } }, /* XSUM_XXH128_testdata[5456] */ + { 1819, 0x0000000000000000ULL, { 0x96812576E01F3B8CULL, 0xFD5DFF14EE01D877ULL } }, /* XSUM_XXH128_testdata[5457] */ + { 1819, 0x000000009E3779B1ULL, { 0x7D8F8A3585661728ULL, 0xFA167BC30E858B1EULL } }, /* XSUM_XXH128_testdata[5458] */ + { 1819, 0x9E3779B185EBCA8DULL, { 0xA09C4E9F4F6B933EULL, 0xE600FA9999C9C644ULL } }, /* XSUM_XXH128_testdata[5459] */ + { 1820, 0x0000000000000000ULL, { 0xF4B08FFD3703291CULL, 0xE0650B0D5987871BULL } }, /* XSUM_XXH128_testdata[5460] */ + { 1820, 0x000000009E3779B1ULL, { 0x7EDC07AB279F1C35ULL, 0xAE8E8D528422FD44ULL } }, /* XSUM_XXH128_testdata[5461] */ + { 1820, 0x9E3779B185EBCA8DULL, { 0xA84511296432A978ULL, 0x7ED74068B5578E11ULL } }, /* XSUM_XXH128_testdata[5462] */ + { 1821, 0x0000000000000000ULL, { 0x55161D50DBDC33B2ULL, 0x5A49BA761A44BC2FULL } }, /* XSUM_XXH128_testdata[5463] */ + { 1821, 0x000000009E3779B1ULL, { 0xAC62C98CF4A9CEFCULL, 0xD03946353F5183BCULL } }, /* XSUM_XXH128_testdata[5464] */ + { 1821, 0x9E3779B185EBCA8DULL, { 0x089AA97A0461F0B9ULL, 0xCDFBFE3E3F9BD845ULL } }, /* XSUM_XXH128_testdata[5465] */ + { 1822, 0x0000000000000000ULL, { 0xF323F26709AD9FFEULL, 0x72D2805B9BE8F1DAULL } }, /* XSUM_XXH128_testdata[5466] */ + { 1822, 0x000000009E3779B1ULL, { 0x27B58F835461FBB0ULL, 0x6E10A4D1200BD2F7ULL } }, /* XSUM_XXH128_testdata[5467] */ + { 1822, 0x9E3779B185EBCA8DULL, { 0x7FB6FC17345F3C04ULL, 0x6299CE8DDD2067D9ULL } }, /* XSUM_XXH128_testdata[5468] */ + { 1823, 0x0000000000000000ULL, { 0x87F8777310FFB883ULL, 0x64509F1B411F4452ULL } }, /* XSUM_XXH128_testdata[5469] */ + { 1823, 0x000000009E3779B1ULL, { 0xE4701B432E45F64FULL, 0x138FD904A35EBA0CULL } }, /* XSUM_XXH128_testdata[5470] */ + { 1823, 0x9E3779B185EBCA8DULL, { 0xD5AA462301EE9512ULL, 0xCD20802689BC3EB2ULL } }, /* XSUM_XXH128_testdata[5471] */ + { 1824, 0x0000000000000000ULL, { 0x1F380E20231D0A25ULL, 0x7CBC2C4B1CBDC63BULL } }, /* XSUM_XXH128_testdata[5472] */ + { 1824, 0x000000009E3779B1ULL, { 0xE44349BDEBF2B90CULL, 0x1F2AC463614517D4ULL } }, /* XSUM_XXH128_testdata[5473] */ + { 1824, 0x9E3779B185EBCA8DULL, { 0xF4FA50A56CFEFC9DULL, 0x7383F2CF64219180ULL } }, /* XSUM_XXH128_testdata[5474] */ + { 1825, 0x0000000000000000ULL, { 0xB3D9C2891C916519ULL, 0x847A61441A156D72ULL } }, /* XSUM_XXH128_testdata[5475] */ + { 1825, 0x000000009E3779B1ULL, { 0x01C2FB09F010DACEULL, 0xF4009D2034FE5E83ULL } }, /* XSUM_XXH128_testdata[5476] */ + { 1825, 0x9E3779B185EBCA8DULL, { 0x173D0678A2A672ECULL, 0x19187818568418A4ULL } }, /* XSUM_XXH128_testdata[5477] */ + { 1826, 0x0000000000000000ULL, { 0x2125C4D653CF7620ULL, 0x12FCCCA122C6EC8CULL } }, /* XSUM_XXH128_testdata[5478] */ + { 1826, 0x000000009E3779B1ULL, { 0x2609698FA5B7BA45ULL, 0xD72D8B5B811577FEULL } }, /* XSUM_XXH128_testdata[5479] */ + { 1826, 0x9E3779B185EBCA8DULL, { 0x92A0B4B951D045E4ULL, 0xC5F9769AB6525342ULL } }, /* XSUM_XXH128_testdata[5480] */ + { 1827, 0x0000000000000000ULL, { 0x4C9DA977D414FE62ULL, 0x795181C8F602C8D0ULL } }, /* XSUM_XXH128_testdata[5481] */ + { 1827, 0x000000009E3779B1ULL, { 0x9F715007526D5423ULL, 0x06ED17DAB584A813ULL } }, /* XSUM_XXH128_testdata[5482] */ + { 1827, 0x9E3779B185EBCA8DULL, { 0xEB7A8EAC6B438ACBULL, 0xB0B1958F16233732ULL } }, /* XSUM_XXH128_testdata[5483] */ + { 1828, 0x0000000000000000ULL, { 0xE69D3DEAD3A1D13AULL, 0x52D070B8732439DEULL } }, /* XSUM_XXH128_testdata[5484] */ + { 1828, 0x000000009E3779B1ULL, { 0xFD5A6AAEB78E5B78ULL, 0x94E696F34B52FA5CULL } }, /* XSUM_XXH128_testdata[5485] */ + { 1828, 0x9E3779B185EBCA8DULL, { 0x61D68F5DEF64FAE9ULL, 0x20E7CE9A60D3DCEAULL } }, /* XSUM_XXH128_testdata[5486] */ + { 1829, 0x0000000000000000ULL, { 0xB60AD19AE1577634ULL, 0xFB45C03061EB9AA9ULL } }, /* XSUM_XXH128_testdata[5487] */ + { 1829, 0x000000009E3779B1ULL, { 0x665D65BA02E7CADAULL, 0x4C8EE375AA233BB6ULL } }, /* XSUM_XXH128_testdata[5488] */ + { 1829, 0x9E3779B185EBCA8DULL, { 0x157BB6F64A0F8673ULL, 0xEB4E9840310F3F57ULL } }, /* XSUM_XXH128_testdata[5489] */ + { 1830, 0x0000000000000000ULL, { 0x23F7D3D78C9541A1ULL, 0x00A71CE04BED815DULL } }, /* XSUM_XXH128_testdata[5490] */ + { 1830, 0x000000009E3779B1ULL, { 0x2BC0AE3F91757B65ULL, 0x47B5565F34B96DEAULL } }, /* XSUM_XXH128_testdata[5491] */ + { 1830, 0x9E3779B185EBCA8DULL, { 0x9AD85BDDCB257D60ULL, 0x480E8211C5071B9BULL } }, /* XSUM_XXH128_testdata[5492] */ + { 1831, 0x0000000000000000ULL, { 0x847C49F72E712CA0ULL, 0x9BC2F47C971F748CULL } }, /* XSUM_XXH128_testdata[5493] */ + { 1831, 0x000000009E3779B1ULL, { 0xC0225C91328A9FACULL, 0xB036A6C92FA99859ULL } }, /* XSUM_XXH128_testdata[5494] */ + { 1831, 0x9E3779B185EBCA8DULL, { 0x21252068A044D273ULL, 0x234C0FF3BD810C44ULL } }, /* XSUM_XXH128_testdata[5495] */ + { 1832, 0x0000000000000000ULL, { 0x7E8D288D7E0903F5ULL, 0x83893A37BEBC04F8ULL } }, /* XSUM_XXH128_testdata[5496] */ + { 1832, 0x000000009E3779B1ULL, { 0x5EDE1087ECC28318ULL, 0x920EA2ED03E5934FULL } }, /* XSUM_XXH128_testdata[5497] */ + { 1832, 0x9E3779B185EBCA8DULL, { 0x52E4DFEE75669F66ULL, 0xCE28A9B9FBD381CDULL } }, /* XSUM_XXH128_testdata[5498] */ + { 1833, 0x0000000000000000ULL, { 0x5B5035E08D3F74D5ULL, 0x24B962E7406AED7AULL } }, /* XSUM_XXH128_testdata[5499] */ + { 1833, 0x000000009E3779B1ULL, { 0x988C816C4A2AEC2FULL, 0xFFDFF8BE5CC02177ULL } }, /* XSUM_XXH128_testdata[5500] */ + { 1833, 0x9E3779B185EBCA8DULL, { 0x0E0C589755838AC9ULL, 0x687B88AC5F6962DFULL } }, /* XSUM_XXH128_testdata[5501] */ + { 1834, 0x0000000000000000ULL, { 0xE445EAFCAE8B614AULL, 0xD21325B89D1457E8ULL } }, /* XSUM_XXH128_testdata[5502] */ + { 1834, 0x000000009E3779B1ULL, { 0xA7241658134513BEULL, 0xB63693F0E69205F3ULL } }, /* XSUM_XXH128_testdata[5503] */ + { 1834, 0x9E3779B185EBCA8DULL, { 0x95B44CB99239E72FULL, 0x389BC6BBE7BBA550ULL } }, /* XSUM_XXH128_testdata[5504] */ + { 1835, 0x0000000000000000ULL, { 0xC8C5C290B847E543ULL, 0xD70D67E10FB9AD33ULL } }, /* XSUM_XXH128_testdata[5505] */ + { 1835, 0x000000009E3779B1ULL, { 0x1E9FFDED7617779EULL, 0x49EA0DCF9A9A9656ULL } }, /* XSUM_XXH128_testdata[5506] */ + { 1835, 0x9E3779B185EBCA8DULL, { 0xA586269BB62C5529ULL, 0xDC4A86F929D0D27BULL } }, /* XSUM_XXH128_testdata[5507] */ + { 1836, 0x0000000000000000ULL, { 0x422C3F03566DF5ECULL, 0x6D5E217CC89A3551ULL } }, /* XSUM_XXH128_testdata[5508] */ + { 1836, 0x000000009E3779B1ULL, { 0x50C33F90BDA79E05ULL, 0xBAE61F58B0FABBB5ULL } }, /* XSUM_XXH128_testdata[5509] */ + { 1836, 0x9E3779B185EBCA8DULL, { 0x89681B08FA4BE38BULL, 0xEE6039DCB4FECFC9ULL } }, /* XSUM_XXH128_testdata[5510] */ + { 1837, 0x0000000000000000ULL, { 0x771B68394D919D8AULL, 0x8D3B794AFF831A7AULL } }, /* XSUM_XXH128_testdata[5511] */ + { 1837, 0x000000009E3779B1ULL, { 0xD8EE55EDAD3D1D93ULL, 0xCD070B34C92FB7A1ULL } }, /* XSUM_XXH128_testdata[5512] */ + { 1837, 0x9E3779B185EBCA8DULL, { 0x03C1D8F4A811E3DAULL, 0x42C0387DE56D920DULL } }, /* XSUM_XXH128_testdata[5513] */ + { 1838, 0x0000000000000000ULL, { 0xF40433C00031EA14ULL, 0x56191BF95B85DC43ULL } }, /* XSUM_XXH128_testdata[5514] */ + { 1838, 0x000000009E3779B1ULL, { 0xC6F567A2B19E3436ULL, 0x2C036287356FD6DDULL } }, /* XSUM_XXH128_testdata[5515] */ + { 1838, 0x9E3779B185EBCA8DULL, { 0xF4B53B2D1BB1D68BULL, 0x31635D734844049CULL } }, /* XSUM_XXH128_testdata[5516] */ + { 1839, 0x0000000000000000ULL, { 0xC9CC543789796BAAULL, 0x0E2AE7C0F78CAD6DULL } }, /* XSUM_XXH128_testdata[5517] */ + { 1839, 0x000000009E3779B1ULL, { 0x2341CBBD9AC6FBEAULL, 0xEF3460B4EAEBF3B2ULL } }, /* XSUM_XXH128_testdata[5518] */ + { 1839, 0x9E3779B185EBCA8DULL, { 0x7105D5BB6B8A528BULL, 0x01C082636666A851ULL } }, /* XSUM_XXH128_testdata[5519] */ + { 1840, 0x0000000000000000ULL, { 0xF33AED1F8EFD7B58ULL, 0x0CE429F1758EEA6BULL } }, /* XSUM_XXH128_testdata[5520] */ + { 1840, 0x000000009E3779B1ULL, { 0xDBA739601DC1967DULL, 0x38265CE5EC13FD1DULL } }, /* XSUM_XXH128_testdata[5521] */ + { 1840, 0x9E3779B185EBCA8DULL, { 0xBE71CFF42EF4CFC8ULL, 0x5924145EC48F651EULL } }, /* XSUM_XXH128_testdata[5522] */ + { 1841, 0x0000000000000000ULL, { 0x28ADBCC8145E1508ULL, 0xA8C6E4D46D05E733ULL } }, /* XSUM_XXH128_testdata[5523] */ + { 1841, 0x000000009E3779B1ULL, { 0xF95A543ABF839AE5ULL, 0xB27229509C6BAD9EULL } }, /* XSUM_XXH128_testdata[5524] */ + { 1841, 0x9E3779B185EBCA8DULL, { 0x7E6E24EB1DADEDA6ULL, 0xFD7C9578EEA6F63EULL } }, /* XSUM_XXH128_testdata[5525] */ + { 1842, 0x0000000000000000ULL, { 0x002E212FC7B05498ULL, 0xFE2F3764FEDBB9E5ULL } }, /* XSUM_XXH128_testdata[5526] */ + { 1842, 0x000000009E3779B1ULL, { 0xC0ADA0FCCD35A1F7ULL, 0x331857A257DDEDCAULL } }, /* XSUM_XXH128_testdata[5527] */ + { 1842, 0x9E3779B185EBCA8DULL, { 0x864A0B7A16D0DA18ULL, 0x35BD7CF44C4844BBULL } }, /* XSUM_XXH128_testdata[5528] */ + { 1843, 0x0000000000000000ULL, { 0x6BC99F64CD6F41C8ULL, 0x65F92552102C2B72ULL } }, /* XSUM_XXH128_testdata[5529] */ + { 1843, 0x000000009E3779B1ULL, { 0xC9CB5A9DAD729C38ULL, 0x7B39B7699302DD7CULL } }, /* XSUM_XXH128_testdata[5530] */ + { 1843, 0x9E3779B185EBCA8DULL, { 0xF2083C66596207F2ULL, 0xF7A7B916EBF0ABFBULL } }, /* XSUM_XXH128_testdata[5531] */ + { 1844, 0x0000000000000000ULL, { 0x2AD9AF1C60BF6D09ULL, 0x892003ABCEF85FAAULL } }, /* XSUM_XXH128_testdata[5532] */ + { 1844, 0x000000009E3779B1ULL, { 0x10128997E2E8D457ULL, 0x337BD1A815046C24ULL } }, /* XSUM_XXH128_testdata[5533] */ + { 1844, 0x9E3779B185EBCA8DULL, { 0xC652993AE2A03D4AULL, 0x568D88286B2E82AFULL } }, /* XSUM_XXH128_testdata[5534] */ + { 1845, 0x0000000000000000ULL, { 0x5A8D3D6113045AE5ULL, 0x7B9B0CBC02FB6CFCULL } }, /* XSUM_XXH128_testdata[5535] */ + { 1845, 0x000000009E3779B1ULL, { 0x404E237FE94C7B75ULL, 0xB90FA281601A3520ULL } }, /* XSUM_XXH128_testdata[5536] */ + { 1845, 0x9E3779B185EBCA8DULL, { 0x1FD1717FD92B2C72ULL, 0x3104464DA3F0738AULL } }, /* XSUM_XXH128_testdata[5537] */ + { 1846, 0x0000000000000000ULL, { 0xF067AA10F9E0D8B4ULL, 0xE6C099F67DE9C765ULL } }, /* XSUM_XXH128_testdata[5538] */ + { 1846, 0x000000009E3779B1ULL, { 0x84FF77118FC50152ULL, 0x04864596E36C1E29ULL } }, /* XSUM_XXH128_testdata[5539] */ + { 1846, 0x9E3779B185EBCA8DULL, { 0xFFDCFF68824087D2ULL, 0x909982A884CFFF79ULL } }, /* XSUM_XXH128_testdata[5540] */ + { 1847, 0x0000000000000000ULL, { 0x772F594F5ABEF00BULL, 0xA87933FB6D797B5DULL } }, /* XSUM_XXH128_testdata[5541] */ + { 1847, 0x000000009E3779B1ULL, { 0x5F88D695095A7524ULL, 0x482A3BA89D4A8A86ULL } }, /* XSUM_XXH128_testdata[5542] */ + { 1847, 0x9E3779B185EBCA8DULL, { 0xA47B236BA4A955F9ULL, 0x1B9CEB462D2848AEULL } }, /* XSUM_XXH128_testdata[5543] */ + { 1848, 0x0000000000000000ULL, { 0xA32FF4FEAC75EEE7ULL, 0x91602B3806DEE962ULL } }, /* XSUM_XXH128_testdata[5544] */ + { 1848, 0x000000009E3779B1ULL, { 0xBA6C8B852BD5B808ULL, 0x7A12EE04BB601247ULL } }, /* XSUM_XXH128_testdata[5545] */ + { 1848, 0x9E3779B185EBCA8DULL, { 0x8719FDF3277BADF9ULL, 0x371AE000F345F43EULL } }, /* XSUM_XXH128_testdata[5546] */ + { 1849, 0x0000000000000000ULL, { 0x899A02F04A493E0CULL, 0xED069740501DB2F8ULL } }, /* XSUM_XXH128_testdata[5547] */ + { 1849, 0x000000009E3779B1ULL, { 0x0DD96945D2DE8234ULL, 0x0D16CA32F40C3765ULL } }, /* XSUM_XXH128_testdata[5548] */ + { 1849, 0x9E3779B185EBCA8DULL, { 0x34E15C9E62826DFDULL, 0x483868A9DDAF68DDULL } }, /* XSUM_XXH128_testdata[5549] */ + { 1850, 0x0000000000000000ULL, { 0x5FCE4519F7BA538DULL, 0x7F34F8A6A30DABBCULL } }, /* XSUM_XXH128_testdata[5550] */ + { 1850, 0x000000009E3779B1ULL, { 0xFA1F7F9FFD7CEBC9ULL, 0x324E3A23B73EBE38ULL } }, /* XSUM_XXH128_testdata[5551] */ + { 1850, 0x9E3779B185EBCA8DULL, { 0x9AEEED50A300AE2BULL, 0xF4FCBF6ACF391D2BULL } }, /* XSUM_XXH128_testdata[5552] */ + { 1851, 0x0000000000000000ULL, { 0x95E54665921E36CAULL, 0xDC5D88E50B2942CDULL } }, /* XSUM_XXH128_testdata[5553] */ + { 1851, 0x000000009E3779B1ULL, { 0xE158AD228D202B08ULL, 0x9EA95E6D5077DC02ULL } }, /* XSUM_XXH128_testdata[5554] */ + { 1851, 0x9E3779B185EBCA8DULL, { 0xC815E5A3764647F5ULL, 0xEAE8FA4E14508C2DULL } }, /* XSUM_XXH128_testdata[5555] */ + { 1852, 0x0000000000000000ULL, { 0x43E506A9B7C094C0ULL, 0xCF999D84FF38376FULL } }, /* XSUM_XXH128_testdata[5556] */ + { 1852, 0x000000009E3779B1ULL, { 0x6CEE547B954DDECDULL, 0xA193065ED59BA671ULL } }, /* XSUM_XXH128_testdata[5557] */ + { 1852, 0x9E3779B185EBCA8DULL, { 0xFBF266164EABEF0AULL, 0x4FE2E0A99274CB57ULL } }, /* XSUM_XXH128_testdata[5558] */ + { 1853, 0x0000000000000000ULL, { 0x2DB4211DD510E86EULL, 0x152BACDF9F0181B8ULL } }, /* XSUM_XXH128_testdata[5559] */ + { 1853, 0x000000009E3779B1ULL, { 0xE32259B2B6E254EEULL, 0x4D282C859CE70756ULL } }, /* XSUM_XXH128_testdata[5560] */ + { 1853, 0x9E3779B185EBCA8DULL, { 0x2CEEB5600B4BCC1CULL, 0x7D0C134E081AAD89ULL } }, /* XSUM_XXH128_testdata[5561] */ + { 1854, 0x0000000000000000ULL, { 0xB2CA6E3EE5C50494ULL, 0xF78F92BA7EF5B21EULL } }, /* XSUM_XXH128_testdata[5562] */ + { 1854, 0x000000009E3779B1ULL, { 0x06DFB5170EB1753FULL, 0xFDEDA6D8BC47A684ULL } }, /* XSUM_XXH128_testdata[5563] */ + { 1854, 0x9E3779B185EBCA8DULL, { 0xF15C1AD85681921DULL, 0xD3E337478A569580ULL } }, /* XSUM_XXH128_testdata[5564] */ + { 1855, 0x0000000000000000ULL, { 0x3DEB6C55F0891670ULL, 0xA17BF53235842078ULL } }, /* XSUM_XXH128_testdata[5565] */ + { 1855, 0x000000009E3779B1ULL, { 0x7CE7B6D85BEB82A2ULL, 0x0E9537DAE415A54CULL } }, /* XSUM_XXH128_testdata[5566] */ + { 1855, 0x9E3779B185EBCA8DULL, { 0xA105D4D854F1E3D9ULL, 0x3F063603ED8B8885ULL } }, /* XSUM_XXH128_testdata[5567] */ + { 1856, 0x0000000000000000ULL, { 0x9FA7215524A44729ULL, 0xDD239B5F0AAF6BE2ULL } }, /* XSUM_XXH128_testdata[5568] */ + { 1856, 0x000000009E3779B1ULL, { 0x378E6DFCA1C00BF6ULL, 0x56BE603ED11B9C8AULL } }, /* XSUM_XXH128_testdata[5569] */ + { 1856, 0x9E3779B185EBCA8DULL, { 0xB3B482DD93C605DCULL, 0xE5599387DF057B57ULL } }, /* XSUM_XXH128_testdata[5570] */ + { 1857, 0x0000000000000000ULL, { 0xF9AA0C2B77C7B098ULL, 0xC52721014352BBF5ULL } }, /* XSUM_XXH128_testdata[5571] */ + { 1857, 0x000000009E3779B1ULL, { 0x4ADF66BF4D88C9D2ULL, 0x648942CEE41A5382ULL } }, /* XSUM_XXH128_testdata[5572] */ + { 1857, 0x9E3779B185EBCA8DULL, { 0xA27D279C1F375EEBULL, 0xB742A964F197BDD7ULL } }, /* XSUM_XXH128_testdata[5573] */ + { 1858, 0x0000000000000000ULL, { 0xDD47A0E487120F5DULL, 0xE12D967CB525EF95ULL } }, /* XSUM_XXH128_testdata[5574] */ + { 1858, 0x000000009E3779B1ULL, { 0x2F90FFF757FE2331ULL, 0x691A919E5ED213C6ULL } }, /* XSUM_XXH128_testdata[5575] */ + { 1858, 0x9E3779B185EBCA8DULL, { 0x1478152E6CF1E737ULL, 0x3E35989DFD19AF91ULL } }, /* XSUM_XXH128_testdata[5576] */ + { 1859, 0x0000000000000000ULL, { 0x67CBC7046EBC929DULL, 0x6FED852A343DA322ULL } }, /* XSUM_XXH128_testdata[5577] */ + { 1859, 0x000000009E3779B1ULL, { 0x4B5B0A5F32107AC3ULL, 0x6678CA6E4CE7E7EAULL } }, /* XSUM_XXH128_testdata[5578] */ + { 1859, 0x9E3779B185EBCA8DULL, { 0x1C83F3A23E47D4B9ULL, 0x7C22FFFE5750CDBDULL } }, /* XSUM_XXH128_testdata[5579] */ + { 1860, 0x0000000000000000ULL, { 0xA46136157CF8C9F9ULL, 0xA11FAE8CFCF20658ULL } }, /* XSUM_XXH128_testdata[5580] */ + { 1860, 0x000000009E3779B1ULL, { 0x6F8682287804FA99ULL, 0x0C824FCCAC43F8EAULL } }, /* XSUM_XXH128_testdata[5581] */ + { 1860, 0x9E3779B185EBCA8DULL, { 0xE48744287FB4D5C5ULL, 0xE41E5E563C8F701BULL } }, /* XSUM_XXH128_testdata[5582] */ + { 1861, 0x0000000000000000ULL, { 0xC129EE2298A73F50ULL, 0x7AFC39B49A8A90F8ULL } }, /* XSUM_XXH128_testdata[5583] */ + { 1861, 0x000000009E3779B1ULL, { 0x75567D4D139E1B40ULL, 0x9BE26B0EACB179EAULL } }, /* XSUM_XXH128_testdata[5584] */ + { 1861, 0x9E3779B185EBCA8DULL, { 0xF262838AABBAD4DEULL, 0x10879FA2736C5060ULL } }, /* XSUM_XXH128_testdata[5585] */ + { 1862, 0x0000000000000000ULL, { 0x189A180ED477ACCCULL, 0x40A06312491B7BDAULL } }, /* XSUM_XXH128_testdata[5586] */ + { 1862, 0x000000009E3779B1ULL, { 0xE8B2153638E0173DULL, 0x025FED0E3CAF119EULL } }, /* XSUM_XXH128_testdata[5587] */ + { 1862, 0x9E3779B185EBCA8DULL, { 0xEAB7668F179E94B7ULL, 0xBA60958F7092EAA5ULL } }, /* XSUM_XXH128_testdata[5588] */ + { 1863, 0x0000000000000000ULL, { 0xB83E7242C9564BC7ULL, 0x883062932F3C4DDDULL } }, /* XSUM_XXH128_testdata[5589] */ + { 1863, 0x000000009E3779B1ULL, { 0x3570DDB93ADDEA52ULL, 0xA513FA0F048E8B04ULL } }, /* XSUM_XXH128_testdata[5590] */ + { 1863, 0x9E3779B185EBCA8DULL, { 0xFF76ED1FFA07DEDDULL, 0xCFAF4B8CCE3055D3ULL } }, /* XSUM_XXH128_testdata[5591] */ + { 1864, 0x0000000000000000ULL, { 0x7E9B57A9205CA6D9ULL, 0x75256BC7953974E8ULL } }, /* XSUM_XXH128_testdata[5592] */ + { 1864, 0x000000009E3779B1ULL, { 0x7DC8B60B8926BFB1ULL, 0x2100BCDA7B1F5F94ULL } }, /* XSUM_XXH128_testdata[5593] */ + { 1864, 0x9E3779B185EBCA8DULL, { 0x4B386CAB0DFAAA63ULL, 0x79139746A28F7E21ULL } }, /* XSUM_XXH128_testdata[5594] */ + { 1865, 0x0000000000000000ULL, { 0x4F20A2A31D556868ULL, 0xED651847ECEB0CB7ULL } }, /* XSUM_XXH128_testdata[5595] */ + { 1865, 0x000000009E3779B1ULL, { 0x8741945EA60E3188ULL, 0x27B1A6B07610B205ULL } }, /* XSUM_XXH128_testdata[5596] */ + { 1865, 0x9E3779B185EBCA8DULL, { 0x957575A3A566C448ULL, 0x5366812830D141B6ULL } }, /* XSUM_XXH128_testdata[5597] */ + { 1866, 0x0000000000000000ULL, { 0xB80B9FDE4CC5E09EULL, 0x33ECD69D726267BDULL } }, /* XSUM_XXH128_testdata[5598] */ + { 1866, 0x000000009E3779B1ULL, { 0xBE7FD1D4D231212CULL, 0xF6ECEB87536C15ACULL } }, /* XSUM_XXH128_testdata[5599] */ + { 1866, 0x9E3779B185EBCA8DULL, { 0x1926A559E960EEEBULL, 0x61CDEF7DFCD9B20EULL } }, /* XSUM_XXH128_testdata[5600] */ + { 1867, 0x0000000000000000ULL, { 0xABE4CFBD11F4C967ULL, 0xD01CF80EAB5D9EFFULL } }, /* XSUM_XXH128_testdata[5601] */ + { 1867, 0x000000009E3779B1ULL, { 0x745E460BD6E7E217ULL, 0x1438D0B1823A8663ULL } }, /* XSUM_XXH128_testdata[5602] */ + { 1867, 0x9E3779B185EBCA8DULL, { 0x694405A422DA369BULL, 0x31E9450638B76DEAULL } }, /* XSUM_XXH128_testdata[5603] */ + { 1868, 0x0000000000000000ULL, { 0x752F23F575A73F89ULL, 0x05979F206A230633ULL } }, /* XSUM_XXH128_testdata[5604] */ + { 1868, 0x000000009E3779B1ULL, { 0x91422CB9846F349FULL, 0xA0347CFC95F7F5F5ULL } }, /* XSUM_XXH128_testdata[5605] */ + { 1868, 0x9E3779B185EBCA8DULL, { 0x60AD7DCD42AA4935ULL, 0x36278899067E3B32ULL } }, /* XSUM_XXH128_testdata[5606] */ + { 1869, 0x0000000000000000ULL, { 0xFE8DC867E8A911E3ULL, 0xE5EBB01640A62CE7ULL } }, /* XSUM_XXH128_testdata[5607] */ + { 1869, 0x000000009E3779B1ULL, { 0x7D137D6B59B2E205ULL, 0x23F1DCF0A6884A7DULL } }, /* XSUM_XXH128_testdata[5608] */ + { 1869, 0x9E3779B185EBCA8DULL, { 0xEF407DFF2E16475FULL, 0x65B13BA7D9CAB745ULL } }, /* XSUM_XXH128_testdata[5609] */ + { 1870, 0x0000000000000000ULL, { 0xF26A15D6413E94DFULL, 0x6C5D18213EBDBEB8ULL } }, /* XSUM_XXH128_testdata[5610] */ + { 1870, 0x000000009E3779B1ULL, { 0x7848511F0C4FD908ULL, 0x3A3EC3E4B52C50D4ULL } }, /* XSUM_XXH128_testdata[5611] */ + { 1870, 0x9E3779B185EBCA8DULL, { 0x98BB3A10DD853FA5ULL, 0x7504F0BF268D2348ULL } }, /* XSUM_XXH128_testdata[5612] */ + { 1871, 0x0000000000000000ULL, { 0xA703FFFF8195BEA8ULL, 0xF42A5858C74E0CAFULL } }, /* XSUM_XXH128_testdata[5613] */ + { 1871, 0x000000009E3779B1ULL, { 0x84EDE3F4FEAB8E6AULL, 0x540E1AA447C93877ULL } }, /* XSUM_XXH128_testdata[5614] */ + { 1871, 0x9E3779B185EBCA8DULL, { 0x2EDFB2573E68AD84ULL, 0x49565A4F71F14E38ULL } }, /* XSUM_XXH128_testdata[5615] */ + { 1872, 0x0000000000000000ULL, { 0x766D01020C397240ULL, 0xA1F7CF6DEDDC76A3ULL } }, /* XSUM_XXH128_testdata[5616] */ + { 1872, 0x000000009E3779B1ULL, { 0xDE44148D1EB4D092ULL, 0x559ACFA1907CD32DULL } }, /* XSUM_XXH128_testdata[5617] */ + { 1872, 0x9E3779B185EBCA8DULL, { 0x39B6B2DD5697BEE8ULL, 0x8AFCBDC3A7317990ULL } }, /* XSUM_XXH128_testdata[5618] */ + { 1873, 0x0000000000000000ULL, { 0x1AC1619971B93634ULL, 0x141E2DD251EC7E20ULL } }, /* XSUM_XXH128_testdata[5619] */ + { 1873, 0x000000009E3779B1ULL, { 0xA462A20B9630C6E7ULL, 0x02EF97113AB7DCF6ULL } }, /* XSUM_XXH128_testdata[5620] */ + { 1873, 0x9E3779B185EBCA8DULL, { 0x4C0F85D7CBA25BC9ULL, 0xC1C6E5EADFDD0C4AULL } }, /* XSUM_XXH128_testdata[5621] */ + { 1874, 0x0000000000000000ULL, { 0x722BFE7BA7F0B4A5ULL, 0x125448D6EA7F5DBEULL } }, /* XSUM_XXH128_testdata[5622] */ + { 1874, 0x000000009E3779B1ULL, { 0x10BCFE3D73151641ULL, 0x98EA428137AD3340ULL } }, /* XSUM_XXH128_testdata[5623] */ + { 1874, 0x9E3779B185EBCA8DULL, { 0x230BFCBD3C00DFD6ULL, 0x5AA9C44F1044E29FULL } }, /* XSUM_XXH128_testdata[5624] */ + { 1875, 0x0000000000000000ULL, { 0xB5128F81C9D02F72ULL, 0x5015A9F39715C0F2ULL } }, /* XSUM_XXH128_testdata[5625] */ + { 1875, 0x000000009E3779B1ULL, { 0x7E19513228FD912FULL, 0x285158B685ADBC88ULL } }, /* XSUM_XXH128_testdata[5626] */ + { 1875, 0x9E3779B185EBCA8DULL, { 0xC5597711385BC7BBULL, 0x2B818146FC4213CEULL } }, /* XSUM_XXH128_testdata[5627] */ + { 1876, 0x0000000000000000ULL, { 0xEAA9648EDD03C318ULL, 0x8A0E76E499BA0921ULL } }, /* XSUM_XXH128_testdata[5628] */ + { 1876, 0x000000009E3779B1ULL, { 0xBEBDE95D159BA4E7ULL, 0xB51018795B94C1ACULL } }, /* XSUM_XXH128_testdata[5629] */ + { 1876, 0x9E3779B185EBCA8DULL, { 0xC3A99B3C5489E336ULL, 0x70EF2BB96C500CD3ULL } }, /* XSUM_XXH128_testdata[5630] */ + { 1877, 0x0000000000000000ULL, { 0xB0E510F8207273ADULL, 0x89AF76DE40A40A60ULL } }, /* XSUM_XXH128_testdata[5631] */ + { 1877, 0x000000009E3779B1ULL, { 0x1F7C8FDCAEF95394ULL, 0xF9D8158E62918B79ULL } }, /* XSUM_XXH128_testdata[5632] */ + { 1877, 0x9E3779B185EBCA8DULL, { 0xD030F0F96F813BEBULL, 0x9945BBBC5C57A2A6ULL } }, /* XSUM_XXH128_testdata[5633] */ + { 1878, 0x0000000000000000ULL, { 0x5E5576D46AF9C904ULL, 0xB4FFEB1E4EC4EA59ULL } }, /* XSUM_XXH128_testdata[5634] */ + { 1878, 0x000000009E3779B1ULL, { 0xFF0A1F8528200454ULL, 0x2831DE4A48F16CC2ULL } }, /* XSUM_XXH128_testdata[5635] */ + { 1878, 0x9E3779B185EBCA8DULL, { 0x17583BBF412503FCULL, 0x3EB9AC416B9081ABULL } }, /* XSUM_XXH128_testdata[5636] */ + { 1879, 0x0000000000000000ULL, { 0x5EB81FCAEA965C85ULL, 0x4C1B427578E84064ULL } }, /* XSUM_XXH128_testdata[5637] */ + { 1879, 0x000000009E3779B1ULL, { 0x368611A046DEC4D9ULL, 0x4563D85DB6F57A89ULL } }, /* XSUM_XXH128_testdata[5638] */ + { 1879, 0x9E3779B185EBCA8DULL, { 0xAA1BE1BD283937EAULL, 0x43425CAFA88883B0ULL } }, /* XSUM_XXH128_testdata[5639] */ + { 1880, 0x0000000000000000ULL, { 0xAA63CE3CA93376D2ULL, 0xACC984E2101BB43DULL } }, /* XSUM_XXH128_testdata[5640] */ + { 1880, 0x000000009E3779B1ULL, { 0xAD530178F367C66DULL, 0xBE747265084FC1F3ULL } }, /* XSUM_XXH128_testdata[5641] */ + { 1880, 0x9E3779B185EBCA8DULL, { 0x354CBFC83B83AB2EULL, 0x6CD86B8E1189A168ULL } }, /* XSUM_XXH128_testdata[5642] */ + { 1881, 0x0000000000000000ULL, { 0x3431D6AFE9D6D74CULL, 0xF36B1B268FD7F64CULL } }, /* XSUM_XXH128_testdata[5643] */ + { 1881, 0x000000009E3779B1ULL, { 0xBCB70E87B7909945ULL, 0x176E7A1823011508ULL } }, /* XSUM_XXH128_testdata[5644] */ + { 1881, 0x9E3779B185EBCA8DULL, { 0x70BF6609A6D4A4D9ULL, 0x39F15FF0C18ACAD8ULL } }, /* XSUM_XXH128_testdata[5645] */ + { 1882, 0x0000000000000000ULL, { 0x27999F5F999B61EEULL, 0x33741411C2C2E997ULL } }, /* XSUM_XXH128_testdata[5646] */ + { 1882, 0x000000009E3779B1ULL, { 0x6B4393A17F0E9087ULL, 0x5CA78CE6301D73FCULL } }, /* XSUM_XXH128_testdata[5647] */ + { 1882, 0x9E3779B185EBCA8DULL, { 0xD366661DF9D4BBC5ULL, 0x68CD804E082B0ED2ULL } }, /* XSUM_XXH128_testdata[5648] */ + { 1883, 0x0000000000000000ULL, { 0x04953291B73FE8A9ULL, 0x0D7D92FD9F1750DFULL } }, /* XSUM_XXH128_testdata[5649] */ + { 1883, 0x000000009E3779B1ULL, { 0x11C6EE75BCB4DFADULL, 0x6554A33F3DCD0F62ULL } }, /* XSUM_XXH128_testdata[5650] */ + { 1883, 0x9E3779B185EBCA8DULL, { 0x5C1C9106539ADEC1ULL, 0xE5644808FF6FB7F9ULL } }, /* XSUM_XXH128_testdata[5651] */ + { 1884, 0x0000000000000000ULL, { 0xDA9A634B3F4FD842ULL, 0x23AC0E439B1115FFULL } }, /* XSUM_XXH128_testdata[5652] */ + { 1884, 0x000000009E3779B1ULL, { 0xB316331EAC7C6366ULL, 0x5E4EB225BBD363D9ULL } }, /* XSUM_XXH128_testdata[5653] */ + { 1884, 0x9E3779B185EBCA8DULL, { 0x785C24B03B223273ULL, 0x3CEF523B674A4F2DULL } }, /* XSUM_XXH128_testdata[5654] */ + { 1885, 0x0000000000000000ULL, { 0x1E7707FB2259E2DFULL, 0xD494DB875E30F575ULL } }, /* XSUM_XXH128_testdata[5655] */ + { 1885, 0x000000009E3779B1ULL, { 0x0653E35BD5D4C270ULL, 0xB7C0E9E4D9B4FBDBULL } }, /* XSUM_XXH128_testdata[5656] */ + { 1885, 0x9E3779B185EBCA8DULL, { 0xA9E4A34986CBAA36ULL, 0x6641B54D5B933DF6ULL } }, /* XSUM_XXH128_testdata[5657] */ + { 1886, 0x0000000000000000ULL, { 0x873AE950C9AE1884ULL, 0x66CA8A126FD6EB0AULL } }, /* XSUM_XXH128_testdata[5658] */ + { 1886, 0x000000009E3779B1ULL, { 0xE22EC5065BA83095ULL, 0x826B25A36EB50128ULL } }, /* XSUM_XXH128_testdata[5659] */ + { 1886, 0x9E3779B185EBCA8DULL, { 0x87813B855C1EABE6ULL, 0x6353F14C4EF49184ULL } }, /* XSUM_XXH128_testdata[5660] */ + { 1887, 0x0000000000000000ULL, { 0x2AE6F56A9E3BAC52ULL, 0x5EF3E3FCD815E50FULL } }, /* XSUM_XXH128_testdata[5661] */ + { 1887, 0x000000009E3779B1ULL, { 0x5D2DA82CC19B82F5ULL, 0x47438CD0DB56535DULL } }, /* XSUM_XXH128_testdata[5662] */ + { 1887, 0x9E3779B185EBCA8DULL, { 0x58F979CE3AE3F648ULL, 0x32E643BC63E7FBD4ULL } }, /* XSUM_XXH128_testdata[5663] */ + { 1888, 0x0000000000000000ULL, { 0x00D3E57E5091E324ULL, 0x18B818E689C0C34CULL } }, /* XSUM_XXH128_testdata[5664] */ + { 1888, 0x000000009E3779B1ULL, { 0x6C9392D3E1D4563AULL, 0x18DCCB0C9F16816AULL } }, /* XSUM_XXH128_testdata[5665] */ + { 1888, 0x9E3779B185EBCA8DULL, { 0xF5F12441DF3AFC4EULL, 0x7094A556199CF319ULL } }, /* XSUM_XXH128_testdata[5666] */ + { 1889, 0x0000000000000000ULL, { 0x45E9E33D7423F328ULL, 0x1CCC834C56FD8540ULL } }, /* XSUM_XXH128_testdata[5667] */ + { 1889, 0x000000009E3779B1ULL, { 0xE6A31D53F56E11B7ULL, 0xBDFC7DDBD68C829AULL } }, /* XSUM_XXH128_testdata[5668] */ + { 1889, 0x9E3779B185EBCA8DULL, { 0x4D7D63CA388066DCULL, 0xECE1221FEE5EF826ULL } }, /* XSUM_XXH128_testdata[5669] */ + { 1890, 0x0000000000000000ULL, { 0xCA83E06BECA16192ULL, 0x76C621A4B3914E45ULL } }, /* XSUM_XXH128_testdata[5670] */ + { 1890, 0x000000009E3779B1ULL, { 0x91292DBD66CC89E3ULL, 0x2B12512C83F9C5ECULL } }, /* XSUM_XXH128_testdata[5671] */ + { 1890, 0x9E3779B185EBCA8DULL, { 0x924E356BE74971A7ULL, 0x49E985F4B941F954ULL } }, /* XSUM_XXH128_testdata[5672] */ + { 1891, 0x0000000000000000ULL, { 0x368A8B7FC030C715ULL, 0xE62B53807E475281ULL } }, /* XSUM_XXH128_testdata[5673] */ + { 1891, 0x000000009E3779B1ULL, { 0x1DBEC38EEA67202CULL, 0x97BDDB44E781107DULL } }, /* XSUM_XXH128_testdata[5674] */ + { 1891, 0x9E3779B185EBCA8DULL, { 0x2DE1521B82474633ULL, 0x00FCC52CDA427BEEULL } }, /* XSUM_XXH128_testdata[5675] */ + { 1892, 0x0000000000000000ULL, { 0xE61A3B7031938F5DULL, 0x9499F81AD94AAEFDULL } }, /* XSUM_XXH128_testdata[5676] */ + { 1892, 0x000000009E3779B1ULL, { 0xD7483C552C314A2BULL, 0x386C6B215A4D0379ULL } }, /* XSUM_XXH128_testdata[5677] */ + { 1892, 0x9E3779B185EBCA8DULL, { 0x6EB843F22F82EF19ULL, 0xDEB7E57725788B00ULL } }, /* XSUM_XXH128_testdata[5678] */ + { 1893, 0x0000000000000000ULL, { 0xD0C5FD191971A365ULL, 0x8F6CDFA9586C3DFBULL } }, /* XSUM_XXH128_testdata[5679] */ + { 1893, 0x000000009E3779B1ULL, { 0xBB9C6F4642A56BBFULL, 0x9B8216215C1E2C03ULL } }, /* XSUM_XXH128_testdata[5680] */ + { 1893, 0x9E3779B185EBCA8DULL, { 0x4CD6C97E1F0F7FD8ULL, 0x018182B9C27C5D93ULL } }, /* XSUM_XXH128_testdata[5681] */ + { 1894, 0x0000000000000000ULL, { 0x09789EFF6ABA0913ULL, 0x82FE561C51064F1CULL } }, /* XSUM_XXH128_testdata[5682] */ + { 1894, 0x000000009E3779B1ULL, { 0xC17741AD33FA3B41ULL, 0x4106EC539E95BB03ULL } }, /* XSUM_XXH128_testdata[5683] */ + { 1894, 0x9E3779B185EBCA8DULL, { 0x81F68FB173855297ULL, 0x5D7AF8A83E924C66ULL } }, /* XSUM_XXH128_testdata[5684] */ + { 1895, 0x0000000000000000ULL, { 0x5D2D99D528130792ULL, 0xC1E66EBFFA465F8CULL } }, /* XSUM_XXH128_testdata[5685] */ + { 1895, 0x000000009E3779B1ULL, { 0x0E83E755FCBF97C5ULL, 0xD3CACB2DB63DDC33ULL } }, /* XSUM_XXH128_testdata[5686] */ + { 1895, 0x9E3779B185EBCA8DULL, { 0xFC66260FD442A50DULL, 0x0ECA6CBB8B381DB8ULL } }, /* XSUM_XXH128_testdata[5687] */ + { 1896, 0x0000000000000000ULL, { 0x0896D937983ED0FFULL, 0xA783D6E390DC6A09ULL } }, /* XSUM_XXH128_testdata[5688] */ + { 1896, 0x000000009E3779B1ULL, { 0x506788E1119FCCE6ULL, 0x5976688593EEFFB1ULL } }, /* XSUM_XXH128_testdata[5689] */ + { 1896, 0x9E3779B185EBCA8DULL, { 0xF8EE063306B3A591ULL, 0xAADCF94384C282D2ULL } }, /* XSUM_XXH128_testdata[5690] */ + { 1897, 0x0000000000000000ULL, { 0x976FDED61A373B5FULL, 0x36FEF92B537E1DE6ULL } }, /* XSUM_XXH128_testdata[5691] */ + { 1897, 0x000000009E3779B1ULL, { 0xEB30BED49BD38BB4ULL, 0x1D7767B0B52CC7D4ULL } }, /* XSUM_XXH128_testdata[5692] */ + { 1897, 0x9E3779B185EBCA8DULL, { 0xC4D3803ECC16C1CFULL, 0xBA788EB750A05625ULL } }, /* XSUM_XXH128_testdata[5693] */ + { 1898, 0x0000000000000000ULL, { 0xE434D792D95E6506ULL, 0xA107EB433BB68CCCULL } }, /* XSUM_XXH128_testdata[5694] */ + { 1898, 0x000000009E3779B1ULL, { 0x08DB40E8AE317BD2ULL, 0x2B4E7EC31C8951A4ULL } }, /* XSUM_XXH128_testdata[5695] */ + { 1898, 0x9E3779B185EBCA8DULL, { 0xA0A8262D8842A468ULL, 0x364494FF110BDC5CULL } }, /* XSUM_XXH128_testdata[5696] */ + { 1899, 0x0000000000000000ULL, { 0x7F8A795DCCF902F9ULL, 0xA245EB7A73AD61A9ULL } }, /* XSUM_XXH128_testdata[5697] */ + { 1899, 0x000000009E3779B1ULL, { 0x25F0F2FB81D9098AULL, 0x349E71A699618E38ULL } }, /* XSUM_XXH128_testdata[5698] */ + { 1899, 0x9E3779B185EBCA8DULL, { 0x0FD59F584C5547BCULL, 0xCB79C4F27390A905ULL } }, /* XSUM_XXH128_testdata[5699] */ + { 1900, 0x0000000000000000ULL, { 0x3360ED3DE59C7D92ULL, 0xFDACC7EE8C869F2EULL } }, /* XSUM_XXH128_testdata[5700] */ + { 1900, 0x000000009E3779B1ULL, { 0xD230257D6B164C78ULL, 0xBCFBF677A6B4B9E0ULL } }, /* XSUM_XXH128_testdata[5701] */ + { 1900, 0x9E3779B185EBCA8DULL, { 0x7AA5BC6D3D07DCC3ULL, 0xEE737536B249D868ULL } }, /* XSUM_XXH128_testdata[5702] */ + { 1901, 0x0000000000000000ULL, { 0x919932A3369ADA54ULL, 0x2FFCDF1BD6157881ULL } }, /* XSUM_XXH128_testdata[5703] */ + { 1901, 0x000000009E3779B1ULL, { 0x679639621BEA0EAFULL, 0x302F36AED0B13435ULL } }, /* XSUM_XXH128_testdata[5704] */ + { 1901, 0x9E3779B185EBCA8DULL, { 0x0458A2B338491AC8ULL, 0xF176B0606D87542BULL } }, /* XSUM_XXH128_testdata[5705] */ + { 1902, 0x0000000000000000ULL, { 0xB83B1B9968AEE18BULL, 0xD08F55ABF2B1E006ULL } }, /* XSUM_XXH128_testdata[5706] */ + { 1902, 0x000000009E3779B1ULL, { 0x5CC3579872D21683ULL, 0x692E955CC86A79DEULL } }, /* XSUM_XXH128_testdata[5707] */ + { 1902, 0x9E3779B185EBCA8DULL, { 0x84DB804F3D99B348ULL, 0x37E0B8C08EB9AAF5ULL } }, /* XSUM_XXH128_testdata[5708] */ + { 1903, 0x0000000000000000ULL, { 0x0354BB280D4691CFULL, 0x1A29F080E45C28B7ULL } }, /* XSUM_XXH128_testdata[5709] */ + { 1903, 0x000000009E3779B1ULL, { 0xD2DA2C3D4D0B2FB4ULL, 0x8D19FE18098FEAC7ULL } }, /* XSUM_XXH128_testdata[5710] */ + { 1903, 0x9E3779B185EBCA8DULL, { 0x0FBA9E0F80E2FFCEULL, 0xAE592AD023A43725ULL } }, /* XSUM_XXH128_testdata[5711] */ + { 1904, 0x0000000000000000ULL, { 0x9A4FAF3574E774C7ULL, 0x15212E8C0EE3ADA6ULL } }, /* XSUM_XXH128_testdata[5712] */ + { 1904, 0x000000009E3779B1ULL, { 0x27D81F1B6D8EED7AULL, 0x308DCCE9D568665FULL } }, /* XSUM_XXH128_testdata[5713] */ + { 1904, 0x9E3779B185EBCA8DULL, { 0x5BBADF72D1AF73DDULL, 0x3C11D5F28BB442D5ULL } }, /* XSUM_XXH128_testdata[5714] */ + { 1905, 0x0000000000000000ULL, { 0xA0BE0F26F6859F41ULL, 0x76EC0091C00E322BULL } }, /* XSUM_XXH128_testdata[5715] */ + { 1905, 0x000000009E3779B1ULL, { 0xF8299D04761EB11AULL, 0x72B82D00E1B9C079ULL } }, /* XSUM_XXH128_testdata[5716] */ + { 1905, 0x9E3779B185EBCA8DULL, { 0xC3644C218B16EE74ULL, 0xA0B6550F290B6761ULL } }, /* XSUM_XXH128_testdata[5717] */ + { 1906, 0x0000000000000000ULL, { 0x835FE0870E1F50ACULL, 0xF1ED6AC4BB3C04C5ULL } }, /* XSUM_XXH128_testdata[5718] */ + { 1906, 0x000000009E3779B1ULL, { 0x215B7723C27FD686ULL, 0x655A4B368969AE50ULL } }, /* XSUM_XXH128_testdata[5719] */ + { 1906, 0x9E3779B185EBCA8DULL, { 0x12668D958327E17EULL, 0x47A8A98070BAD7FDULL } }, /* XSUM_XXH128_testdata[5720] */ + { 1907, 0x0000000000000000ULL, { 0x14C1BDF6BF0838E7ULL, 0x013AF406ECDD2709ULL } }, /* XSUM_XXH128_testdata[5721] */ + { 1907, 0x000000009E3779B1ULL, { 0x29311674C336912EULL, 0x3344243AE4138D97ULL } }, /* XSUM_XXH128_testdata[5722] */ + { 1907, 0x9E3779B185EBCA8DULL, { 0x9808FA64F8C43DCCULL, 0x05B89D7E3ACB2517ULL } }, /* XSUM_XXH128_testdata[5723] */ + { 1908, 0x0000000000000000ULL, { 0x2777D49152560322ULL, 0x59F62335CCFDE938ULL } }, /* XSUM_XXH128_testdata[5724] */ + { 1908, 0x000000009E3779B1ULL, { 0xCCB63C20B1BCD332ULL, 0xE2357298B6CAF96BULL } }, /* XSUM_XXH128_testdata[5725] */ + { 1908, 0x9E3779B185EBCA8DULL, { 0xF9D863CC2EAA8645ULL, 0x2BFCFB8942A33BD1ULL } }, /* XSUM_XXH128_testdata[5726] */ + { 1909, 0x0000000000000000ULL, { 0xF3C16FACEAC5439BULL, 0xA86CC0955FB2AD3AULL } }, /* XSUM_XXH128_testdata[5727] */ + { 1909, 0x000000009E3779B1ULL, { 0xD3B2647CF2344A38ULL, 0xC1B250FEDBD4D383ULL } }, /* XSUM_XXH128_testdata[5728] */ + { 1909, 0x9E3779B185EBCA8DULL, { 0x97A1E6A6762D1DDBULL, 0x47F11BBEDCB18030ULL } }, /* XSUM_XXH128_testdata[5729] */ + { 1910, 0x0000000000000000ULL, { 0x0A392BBC27FDBF98ULL, 0x17BA9E3B81361BE7ULL } }, /* XSUM_XXH128_testdata[5730] */ + { 1910, 0x000000009E3779B1ULL, { 0xB2E724430A65D860ULL, 0x5A3B2C2E86AA9240ULL } }, /* XSUM_XXH128_testdata[5731] */ + { 1910, 0x9E3779B185EBCA8DULL, { 0x37C04E987336EDA6ULL, 0x2B05A004850C4AE6ULL } }, /* XSUM_XXH128_testdata[5732] */ + { 1911, 0x0000000000000000ULL, { 0x3F6D662DCBC36DA0ULL, 0x062EFC08285C70FAULL } }, /* XSUM_XXH128_testdata[5733] */ + { 1911, 0x000000009E3779B1ULL, { 0xBD0EF2BF8A5EAC82ULL, 0x3A7F9B11DC6680E5ULL } }, /* XSUM_XXH128_testdata[5734] */ + { 1911, 0x9E3779B185EBCA8DULL, { 0x7099B12412BF2F7BULL, 0xBB1B8C3319D0CCC2ULL } }, /* XSUM_XXH128_testdata[5735] */ + { 1912, 0x0000000000000000ULL, { 0xB3DD8A6812F31E0CULL, 0xD454672BC4DD7263ULL } }, /* XSUM_XXH128_testdata[5736] */ + { 1912, 0x000000009E3779B1ULL, { 0x45530A276B23FC4DULL, 0x103FEE1ABD0B8D45ULL } }, /* XSUM_XXH128_testdata[5737] */ + { 1912, 0x9E3779B185EBCA8DULL, { 0x2D13EB5B4D9B4FC8ULL, 0x84F7531D099215CBULL } }, /* XSUM_XXH128_testdata[5738] */ + { 1913, 0x0000000000000000ULL, { 0x37306315E558B82BULL, 0x0FCE5582584B6FEEULL } }, /* XSUM_XXH128_testdata[5739] */ + { 1913, 0x000000009E3779B1ULL, { 0xF71BAB13F619DD16ULL, 0xD8EDCC3D6E9CB674ULL } }, /* XSUM_XXH128_testdata[5740] */ + { 1913, 0x9E3779B185EBCA8DULL, { 0x238A8982B9E8E871ULL, 0x4B33968989E72137ULL } }, /* XSUM_XXH128_testdata[5741] */ + { 1914, 0x0000000000000000ULL, { 0xAF3B2494587FDF48ULL, 0x91FD5A11F09D3D55ULL } }, /* XSUM_XXH128_testdata[5742] */ + { 1914, 0x000000009E3779B1ULL, { 0x9F8BC3430729B026ULL, 0xCB048FA96234FB05ULL } }, /* XSUM_XXH128_testdata[5743] */ + { 1914, 0x9E3779B185EBCA8DULL, { 0x305D0629AD8F4388ULL, 0x62439D7FB37D3719ULL } }, /* XSUM_XXH128_testdata[5744] */ + { 1915, 0x0000000000000000ULL, { 0x865B3906323DA850ULL, 0x5FBAF3284C514CC5ULL } }, /* XSUM_XXH128_testdata[5745] */ + { 1915, 0x000000009E3779B1ULL, { 0xED4B137A8900D99BULL, 0x825A2DD2E7A4A69BULL } }, /* XSUM_XXH128_testdata[5746] */ + { 1915, 0x9E3779B185EBCA8DULL, { 0x4162EEA8EDBA1E21ULL, 0x8A460E9AEAD797D6ULL } }, /* XSUM_XXH128_testdata[5747] */ + { 1916, 0x0000000000000000ULL, { 0xBB0EB0C7C8E0D486ULL, 0xEB1F2586047F66D7ULL } }, /* XSUM_XXH128_testdata[5748] */ + { 1916, 0x000000009E3779B1ULL, { 0x0A9C81E7C0A22031ULL, 0x2E76EE0A9BE5B043ULL } }, /* XSUM_XXH128_testdata[5749] */ + { 1916, 0x9E3779B185EBCA8DULL, { 0x350BA3C51E6C98A9ULL, 0x626E408688220A13ULL } }, /* XSUM_XXH128_testdata[5750] */ + { 1917, 0x0000000000000000ULL, { 0x2FFE17BAF474B808ULL, 0xEA196774FDE9D21EULL } }, /* XSUM_XXH128_testdata[5751] */ + { 1917, 0x000000009E3779B1ULL, { 0x73693EFC8FB501DFULL, 0xC9BDD35CDBEC7F0DULL } }, /* XSUM_XXH128_testdata[5752] */ + { 1917, 0x9E3779B185EBCA8DULL, { 0x1032DFBCE2ECE9CEULL, 0xAC28CCD1CC51BF45ULL } }, /* XSUM_XXH128_testdata[5753] */ + { 1918, 0x0000000000000000ULL, { 0x2DDC81ACBC637995ULL, 0x2DC632CC3AF2DED2ULL } }, /* XSUM_XXH128_testdata[5754] */ + { 1918, 0x000000009E3779B1ULL, { 0x43A56939BEABC636ULL, 0xDEDEF930DB42B057ULL } }, /* XSUM_XXH128_testdata[5755] */ + { 1918, 0x9E3779B185EBCA8DULL, { 0xAF01E545CFF1AA6EULL, 0x8DD2D31326AAADA4ULL } }, /* XSUM_XXH128_testdata[5756] */ + { 1919, 0x0000000000000000ULL, { 0x9D7578BBBE43A0FBULL, 0xD4C9B42293A91393ULL } }, /* XSUM_XXH128_testdata[5757] */ + { 1919, 0x000000009E3779B1ULL, { 0x069B2F5B68CEC449ULL, 0x063C4055A509C0CEULL } }, /* XSUM_XXH128_testdata[5758] */ + { 1919, 0x9E3779B185EBCA8DULL, { 0xCF9BB65DBDC2A633ULL, 0xA86BC5265A687228ULL } }, /* XSUM_XXH128_testdata[5759] */ + { 1920, 0x0000000000000000ULL, { 0xA6E801F9E975D684ULL, 0x2D0A2834B63460E8ULL } }, /* XSUM_XXH128_testdata[5760] */ + { 1920, 0x000000009E3779B1ULL, { 0x11DBA2CA7080B444ULL, 0xBE5886B6DA05BDC7ULL } }, /* XSUM_XXH128_testdata[5761] */ + { 1920, 0x9E3779B185EBCA8DULL, { 0x8BBEE5F1AA06521EULL, 0x89D8163A3E27B5E0ULL } }, /* XSUM_XXH128_testdata[5762] */ + { 1921, 0x0000000000000000ULL, { 0x425BD2F47593A7DDULL, 0xC76260B3A06F78DBULL } }, /* XSUM_XXH128_testdata[5763] */ + { 1921, 0x000000009E3779B1ULL, { 0x661FD881C93160D9ULL, 0x4F9733AB2F2E2A0DULL } }, /* XSUM_XXH128_testdata[5764] */ + { 1921, 0x9E3779B185EBCA8DULL, { 0x00D38A9FCCE4BDD8ULL, 0x5170D0E21C1FA1A4ULL } }, /* XSUM_XXH128_testdata[5765] */ + { 1922, 0x0000000000000000ULL, { 0x7C712A084EA39B08ULL, 0x25C6C936716DD759ULL } }, /* XSUM_XXH128_testdata[5766] */ + { 1922, 0x000000009E3779B1ULL, { 0xD2219DF83E7C6C4DULL, 0xA4CDB00FFEDD15C9ULL } }, /* XSUM_XXH128_testdata[5767] */ + { 1922, 0x9E3779B185EBCA8DULL, { 0x9396761C649047ACULL, 0x4E31E6E6F78D0277ULL } }, /* XSUM_XXH128_testdata[5768] */ + { 1923, 0x0000000000000000ULL, { 0x7FADD2CCED07887AULL, 0x55419646A155D6D4ULL } }, /* XSUM_XXH128_testdata[5769] */ + { 1923, 0x000000009E3779B1ULL, { 0xFA2037242C152E5CULL, 0x4F059880BFE93E40ULL } }, /* XSUM_XXH128_testdata[5770] */ + { 1923, 0x9E3779B185EBCA8DULL, { 0xA3C5D6FD9F5A6039ULL, 0xAB96DCA8DFA64027ULL } }, /* XSUM_XXH128_testdata[5771] */ + { 1924, 0x0000000000000000ULL, { 0x4D43B69CEF7F96E4ULL, 0x9E961D9360D50D4AULL } }, /* XSUM_XXH128_testdata[5772] */ + { 1924, 0x000000009E3779B1ULL, { 0x378D4A15A62E17E5ULL, 0x2BB2BA46C6480CF3ULL } }, /* XSUM_XXH128_testdata[5773] */ + { 1924, 0x9E3779B185EBCA8DULL, { 0xC17248AE907D7638ULL, 0xA7299B1894D1BFE0ULL } }, /* XSUM_XXH128_testdata[5774] */ + { 1925, 0x0000000000000000ULL, { 0x9CF28859FABC409CULL, 0x7C3D36D0F01F0874ULL } }, /* XSUM_XXH128_testdata[5775] */ + { 1925, 0x000000009E3779B1ULL, { 0xF8EB9AB89E787EE1ULL, 0xCFFEB29CECDE3B45ULL } }, /* XSUM_XXH128_testdata[5776] */ + { 1925, 0x9E3779B185EBCA8DULL, { 0x29BAE4393EC02830ULL, 0x481A3F7819C9386EULL } }, /* XSUM_XXH128_testdata[5777] */ + { 1926, 0x0000000000000000ULL, { 0x87AE82A722CC651EULL, 0xA20EADD955049E11ULL } }, /* XSUM_XXH128_testdata[5778] */ + { 1926, 0x000000009E3779B1ULL, { 0x9F8E8793D642A35DULL, 0x9449374CDB1B9130ULL } }, /* XSUM_XXH128_testdata[5779] */ + { 1926, 0x9E3779B185EBCA8DULL, { 0x2D446AC4C7B2183CULL, 0xF23DEF2D79A8F5FDULL } }, /* XSUM_XXH128_testdata[5780] */ + { 1927, 0x0000000000000000ULL, { 0x22864029998C8DCCULL, 0x04DACD962FA4FA5CULL } }, /* XSUM_XXH128_testdata[5781] */ + { 1927, 0x000000009E3779B1ULL, { 0xF8EDF40733CD69BFULL, 0x5429682753403A1AULL } }, /* XSUM_XXH128_testdata[5782] */ + { 1927, 0x9E3779B185EBCA8DULL, { 0xF6E995A376FDE0BFULL, 0xEE0D895DF50BED4FULL } }, /* XSUM_XXH128_testdata[5783] */ + { 1928, 0x0000000000000000ULL, { 0x1297094001BEAB91ULL, 0xDC7B9102E4F75829ULL } }, /* XSUM_XXH128_testdata[5784] */ + { 1928, 0x000000009E3779B1ULL, { 0xA1C64A33E7A7919CULL, 0xE7D3CBBD29352B85ULL } }, /* XSUM_XXH128_testdata[5785] */ + { 1928, 0x9E3779B185EBCA8DULL, { 0x995E4F3E2717100EULL, 0x90F602DA693FEF45ULL } }, /* XSUM_XXH128_testdata[5786] */ + { 1929, 0x0000000000000000ULL, { 0x11A056A3E27BF8DBULL, 0xF570A860211F13A0ULL } }, /* XSUM_XXH128_testdata[5787] */ + { 1929, 0x000000009E3779B1ULL, { 0xC446ADB5B2188647ULL, 0x6E9D5FDA7C052852ULL } }, /* XSUM_XXH128_testdata[5788] */ + { 1929, 0x9E3779B185EBCA8DULL, { 0xCDDE483316829F76ULL, 0xCA4BB7F18CFBFF4EULL } }, /* XSUM_XXH128_testdata[5789] */ + { 1930, 0x0000000000000000ULL, { 0x504734057003512DULL, 0xD6F85B025BC2804AULL } }, /* XSUM_XXH128_testdata[5790] */ + { 1930, 0x000000009E3779B1ULL, { 0x8FEB0C1BB250A42CULL, 0x107FE881E834BD53ULL } }, /* XSUM_XXH128_testdata[5791] */ + { 1930, 0x9E3779B185EBCA8DULL, { 0x490C42431DBE8CC8ULL, 0x3D6550C4531FDBABULL } }, /* XSUM_XXH128_testdata[5792] */ + { 1931, 0x0000000000000000ULL, { 0x1CB5E6EFAC6E4E63ULL, 0x8FB440B250BDB2D8ULL } }, /* XSUM_XXH128_testdata[5793] */ + { 1931, 0x000000009E3779B1ULL, { 0x3033D0E25D73141FULL, 0x843A21CAA501B6A9ULL } }, /* XSUM_XXH128_testdata[5794] */ + { 1931, 0x9E3779B185EBCA8DULL, { 0xC2F750FABD205E94ULL, 0xA930A8E0CFC7B24CULL } }, /* XSUM_XXH128_testdata[5795] */ + { 1932, 0x0000000000000000ULL, { 0x6B7812A64BD91368ULL, 0xA5959E82FBCC438BULL } }, /* XSUM_XXH128_testdata[5796] */ + { 1932, 0x000000009E3779B1ULL, { 0x45CBFEC6AF752A77ULL, 0x9E93B88A6252A06BULL } }, /* XSUM_XXH128_testdata[5797] */ + { 1932, 0x9E3779B185EBCA8DULL, { 0xC25F2743431082ECULL, 0x9870DBBD592556F9ULL } }, /* XSUM_XXH128_testdata[5798] */ + { 1933, 0x0000000000000000ULL, { 0xE1283D2931CD27EFULL, 0x99061FD6AD7E7915ULL } }, /* XSUM_XXH128_testdata[5799] */ + { 1933, 0x000000009E3779B1ULL, { 0x2A78FE4AE539AFA5ULL, 0x35A0BDD60FFEE463ULL } }, /* XSUM_XXH128_testdata[5800] */ + { 1933, 0x9E3779B185EBCA8DULL, { 0x31F20A19301F485EULL, 0x7140573BF1C600B0ULL } }, /* XSUM_XXH128_testdata[5801] */ + { 1934, 0x0000000000000000ULL, { 0x640B44E7233CD7B5ULL, 0x1725F3D472B8BC89ULL } }, /* XSUM_XXH128_testdata[5802] */ + { 1934, 0x000000009E3779B1ULL, { 0xF8979387E3B9308EULL, 0x4ADA65A767EC9ECCULL } }, /* XSUM_XXH128_testdata[5803] */ + { 1934, 0x9E3779B185EBCA8DULL, { 0x42C3703CE5E02828ULL, 0x6EDF53BBA4960713ULL } }, /* XSUM_XXH128_testdata[5804] */ + { 1935, 0x0000000000000000ULL, { 0x7DCDD089C207F052ULL, 0x54B010B98CDB4A55ULL } }, /* XSUM_XXH128_testdata[5805] */ + { 1935, 0x000000009E3779B1ULL, { 0x0D4E763AA8AD4BB1ULL, 0x0853F7D4A3AD4892ULL } }, /* XSUM_XXH128_testdata[5806] */ + { 1935, 0x9E3779B185EBCA8DULL, { 0x97EB7CB9F13AE976ULL, 0x2A51360BD8DF15CAULL } }, /* XSUM_XXH128_testdata[5807] */ + { 1936, 0x0000000000000000ULL, { 0xF3D245265FAA9991ULL, 0x24CBA52F14A33AA2ULL } }, /* XSUM_XXH128_testdata[5808] */ + { 1936, 0x000000009E3779B1ULL, { 0x2F638BE2A221FF1BULL, 0x087A888F4C5A9D6BULL } }, /* XSUM_XXH128_testdata[5809] */ + { 1936, 0x9E3779B185EBCA8DULL, { 0x55FEE708A75B7E34ULL, 0x527DA7F57CB86BD7ULL } }, /* XSUM_XXH128_testdata[5810] */ + { 1937, 0x0000000000000000ULL, { 0xC239370CC5CE1B28ULL, 0xC5E6E7C79FCB2A14ULL } }, /* XSUM_XXH128_testdata[5811] */ + { 1937, 0x000000009E3779B1ULL, { 0xF3067F8125E3A687ULL, 0x260B2BC4597AF03DULL } }, /* XSUM_XXH128_testdata[5812] */ + { 1937, 0x9E3779B185EBCA8DULL, { 0x73499D53BC365C32ULL, 0x1D6563EAE1F34031ULL } }, /* XSUM_XXH128_testdata[5813] */ + { 1938, 0x0000000000000000ULL, { 0xE6FB9BEDD99FCF8DULL, 0x3283AEB219466903ULL } }, /* XSUM_XXH128_testdata[5814] */ + { 1938, 0x000000009E3779B1ULL, { 0x727D6A3723064D82ULL, 0xC89A7C6B5A30858DULL } }, /* XSUM_XXH128_testdata[5815] */ + { 1938, 0x9E3779B185EBCA8DULL, { 0xE9DDE1CF171E8CD8ULL, 0x61E05DF28D4C73B5ULL } }, /* XSUM_XXH128_testdata[5816] */ + { 1939, 0x0000000000000000ULL, { 0x1E29637C57820A30ULL, 0x7637334B55431602ULL } }, /* XSUM_XXH128_testdata[5817] */ + { 1939, 0x000000009E3779B1ULL, { 0x77E6482FB170964EULL, 0x15B6BF04765EFA32ULL } }, /* XSUM_XXH128_testdata[5818] */ + { 1939, 0x9E3779B185EBCA8DULL, { 0x8F40C42CF2E44B6CULL, 0x4300C9FE1D5C762AULL } }, /* XSUM_XXH128_testdata[5819] */ + { 1940, 0x0000000000000000ULL, { 0xABF025831D6ED30EULL, 0xD224E7AD82E93376ULL } }, /* XSUM_XXH128_testdata[5820] */ + { 1940, 0x000000009E3779B1ULL, { 0x738A8B418CC2F7BEULL, 0x0F3F177F33514D26ULL } }, /* XSUM_XXH128_testdata[5821] */ + { 1940, 0x9E3779B185EBCA8DULL, { 0xCEF6FA8C19F861E4ULL, 0xB4C1167D6A10D2DCULL } }, /* XSUM_XXH128_testdata[5822] */ + { 1941, 0x0000000000000000ULL, { 0x282F14ADD9FEB282ULL, 0xD2255CCF148339DEULL } }, /* XSUM_XXH128_testdata[5823] */ + { 1941, 0x000000009E3779B1ULL, { 0xCCEA72A1C426C628ULL, 0x783DF8936940A5ACULL } }, /* XSUM_XXH128_testdata[5824] */ + { 1941, 0x9E3779B185EBCA8DULL, { 0x4017524529E35BD8ULL, 0xF88CA90687C8F012ULL } }, /* XSUM_XXH128_testdata[5825] */ + { 1942, 0x0000000000000000ULL, { 0x527F417340C0F012ULL, 0xA46BA1F94A59E9CBULL } }, /* XSUM_XXH128_testdata[5826] */ + { 1942, 0x000000009E3779B1ULL, { 0xD0A7F534512901B0ULL, 0x98CF9D475FAA2E29ULL } }, /* XSUM_XXH128_testdata[5827] */ + { 1942, 0x9E3779B185EBCA8DULL, { 0xEB885704B63C9BBCULL, 0x59F75538AE54C8E7ULL } }, /* XSUM_XXH128_testdata[5828] */ + { 1943, 0x0000000000000000ULL, { 0xB213031B62D44FF8ULL, 0x381F8E8F9311F41EULL } }, /* XSUM_XXH128_testdata[5829] */ + { 1943, 0x000000009E3779B1ULL, { 0x6EE2885CED69E219ULL, 0x90359AEA6A6E2748ULL } }, /* XSUM_XXH128_testdata[5830] */ + { 1943, 0x9E3779B185EBCA8DULL, { 0x47FB300EB53CF271ULL, 0x5E12B401F0AE8AD7ULL } }, /* XSUM_XXH128_testdata[5831] */ + { 1944, 0x0000000000000000ULL, { 0x3DB7F3DAA5CF5975ULL, 0x7240A7643669514EULL } }, /* XSUM_XXH128_testdata[5832] */ + { 1944, 0x000000009E3779B1ULL, { 0x004D2EDFC198263EULL, 0x6D0C5DDDAA6034BDULL } }, /* XSUM_XXH128_testdata[5833] */ + { 1944, 0x9E3779B185EBCA8DULL, { 0x52E86537BAB05598ULL, 0x5687400E6BB5B90AULL } }, /* XSUM_XXH128_testdata[5834] */ + { 1945, 0x0000000000000000ULL, { 0x840658A5716284C9ULL, 0x155E1E7411E12A76ULL } }, /* XSUM_XXH128_testdata[5835] */ + { 1945, 0x000000009E3779B1ULL, { 0x617003603960C913ULL, 0xB8E5FCB55F821064ULL } }, /* XSUM_XXH128_testdata[5836] */ + { 1945, 0x9E3779B185EBCA8DULL, { 0x3CDB39929E37AA06ULL, 0x971719DA16B26D86ULL } }, /* XSUM_XXH128_testdata[5837] */ + { 1946, 0x0000000000000000ULL, { 0xEB5F75B38181CF28ULL, 0x830AAA16727B3F93ULL } }, /* XSUM_XXH128_testdata[5838] */ + { 1946, 0x000000009E3779B1ULL, { 0x60E41E42508B7686ULL, 0xB860DFDF2B28BEBBULL } }, /* XSUM_XXH128_testdata[5839] */ + { 1946, 0x9E3779B185EBCA8DULL, { 0x356AD1AC369381DFULL, 0xFBC4ADB0C9D6DE20ULL } }, /* XSUM_XXH128_testdata[5840] */ + { 1947, 0x0000000000000000ULL, { 0x2CB27006CF774852ULL, 0xA5E1FDD4E0F07891ULL } }, /* XSUM_XXH128_testdata[5841] */ + { 1947, 0x000000009E3779B1ULL, { 0x507450E785A19289ULL, 0xC2FD6841EB0DED12ULL } }, /* XSUM_XXH128_testdata[5842] */ + { 1947, 0x9E3779B185EBCA8DULL, { 0x003C04ACA46EE27FULL, 0x0208DE238A678F33ULL } }, /* XSUM_XXH128_testdata[5843] */ + { 1948, 0x0000000000000000ULL, { 0x03545653D2365723ULL, 0x44ED02305E7196BDULL } }, /* XSUM_XXH128_testdata[5844] */ + { 1948, 0x000000009E3779B1ULL, { 0x73BF9ED272CB5A65ULL, 0x181BFE3204F2B254ULL } }, /* XSUM_XXH128_testdata[5845] */ + { 1948, 0x9E3779B185EBCA8DULL, { 0xDC18F3AC5BC13200ULL, 0x26F4F9C51CDE3330ULL } }, /* XSUM_XXH128_testdata[5846] */ + { 1949, 0x0000000000000000ULL, { 0x9CF72BF218CFEC9BULL, 0xDA216CA4F7968DF7ULL } }, /* XSUM_XXH128_testdata[5847] */ + { 1949, 0x000000009E3779B1ULL, { 0xCB9315FAB3E49E8EULL, 0x34070E68D3994D27ULL } }, /* XSUM_XXH128_testdata[5848] */ + { 1949, 0x9E3779B185EBCA8DULL, { 0x276C49361D2E49D7ULL, 0x5A90CE13618C96A0ULL } }, /* XSUM_XXH128_testdata[5849] */ + { 1950, 0x0000000000000000ULL, { 0x3B41F6C3526966F9ULL, 0x7EDF8A4A2FC92770ULL } }, /* XSUM_XXH128_testdata[5850] */ + { 1950, 0x000000009E3779B1ULL, { 0xADFFD59921071192ULL, 0xD6BCC86147A63019ULL } }, /* XSUM_XXH128_testdata[5851] */ + { 1950, 0x9E3779B185EBCA8DULL, { 0xEE511A62306A4A89ULL, 0x55D16DE49B9B69B5ULL } }, /* XSUM_XXH128_testdata[5852] */ + { 1951, 0x0000000000000000ULL, { 0xC4365505457F718CULL, 0x6CD474945FDCE4E8ULL } }, /* XSUM_XXH128_testdata[5853] */ + { 1951, 0x000000009E3779B1ULL, { 0x247EDBAAA9D7F4E0ULL, 0x1EA992296411D2C8ULL } }, /* XSUM_XXH128_testdata[5854] */ + { 1951, 0x9E3779B185EBCA8DULL, { 0x5EC0F8F1B23D7D85ULL, 0x62984D2A6F3D183CULL } }, /* XSUM_XXH128_testdata[5855] */ + { 1952, 0x0000000000000000ULL, { 0x5DDB1030B7232D1FULL, 0xD928F39D90B438FEULL } }, /* XSUM_XXH128_testdata[5856] */ + { 1952, 0x000000009E3779B1ULL, { 0x74DB2882E17A1D98ULL, 0xA647879150414B89ULL } }, /* XSUM_XXH128_testdata[5857] */ + { 1952, 0x9E3779B185EBCA8DULL, { 0xA268820F12B866FAULL, 0x473E06B7E8F72974ULL } }, /* XSUM_XXH128_testdata[5858] */ + { 1953, 0x0000000000000000ULL, { 0x7FF90349002641B7ULL, 0xFC80520E88973909ULL } }, /* XSUM_XXH128_testdata[5859] */ + { 1953, 0x000000009E3779B1ULL, { 0x98A36542E12AA967ULL, 0x2E9649133F25FC2FULL } }, /* XSUM_XXH128_testdata[5860] */ + { 1953, 0x9E3779B185EBCA8DULL, { 0xEF06F23A1D869CDDULL, 0x35446D49C773C1EFULL } }, /* XSUM_XXH128_testdata[5861] */ + { 1954, 0x0000000000000000ULL, { 0xC1558AF0C93D89CDULL, 0xB3C8508F7D0B0A0EULL } }, /* XSUM_XXH128_testdata[5862] */ + { 1954, 0x000000009E3779B1ULL, { 0xB188B755CD7297CDULL, 0x7428C5288C99C2CCULL } }, /* XSUM_XXH128_testdata[5863] */ + { 1954, 0x9E3779B185EBCA8DULL, { 0xDE4FAB755C44BB20ULL, 0xA286AF5CAFB97374ULL } }, /* XSUM_XXH128_testdata[5864] */ + { 1955, 0x0000000000000000ULL, { 0x3FDA69020153BEA9ULL, 0x9C24E200B8F3620EULL } }, /* XSUM_XXH128_testdata[5865] */ + { 1955, 0x000000009E3779B1ULL, { 0x60467F8ED46ED7C6ULL, 0xB3196FBFB46C08F9ULL } }, /* XSUM_XXH128_testdata[5866] */ + { 1955, 0x9E3779B185EBCA8DULL, { 0x27B6372C52BC90C3ULL, 0x3EC75DAB5D734C9AULL } }, /* XSUM_XXH128_testdata[5867] */ + { 1956, 0x0000000000000000ULL, { 0x6E064C75A51650B1ULL, 0x6D76EB9CC185C3E5ULL } }, /* XSUM_XXH128_testdata[5868] */ + { 1956, 0x000000009E3779B1ULL, { 0x090A809EE5BDB645ULL, 0xB3A6172CC8605EB0ULL } }, /* XSUM_XXH128_testdata[5869] */ + { 1956, 0x9E3779B185EBCA8DULL, { 0xBEBB2584D460BD29ULL, 0x15CBB9BAC3093DA0ULL } }, /* XSUM_XXH128_testdata[5870] */ + { 1957, 0x0000000000000000ULL, { 0xC366A7C357FFEF0BULL, 0x7033960422867051ULL } }, /* XSUM_XXH128_testdata[5871] */ + { 1957, 0x000000009E3779B1ULL, { 0x6A5AFDAF242DFDD8ULL, 0xAD6EE97C90CB9AC4ULL } }, /* XSUM_XXH128_testdata[5872] */ + { 1957, 0x9E3779B185EBCA8DULL, { 0xB57E9DC331ED3EF3ULL, 0x0953F73DB596FED8ULL } }, /* XSUM_XXH128_testdata[5873] */ + { 1958, 0x0000000000000000ULL, { 0x8F06933F34934B99ULL, 0xF141A4B8F68D44DEULL } }, /* XSUM_XXH128_testdata[5874] */ + { 1958, 0x000000009E3779B1ULL, { 0x714D020C3D4FAD3CULL, 0x3F535927B1FB2A48ULL } }, /* XSUM_XXH128_testdata[5875] */ + { 1958, 0x9E3779B185EBCA8DULL, { 0x2E9B0E4BEA0FD06CULL, 0x8E9F1B731A6D8791ULL } }, /* XSUM_XXH128_testdata[5876] */ + { 1959, 0x0000000000000000ULL, { 0xF12971CE1F74C048ULL, 0x38ADDF305B841450ULL } }, /* XSUM_XXH128_testdata[5877] */ + { 1959, 0x000000009E3779B1ULL, { 0x899E65FC65CBF802ULL, 0x00D078FBE9758405ULL } }, /* XSUM_XXH128_testdata[5878] */ + { 1959, 0x9E3779B185EBCA8DULL, { 0x0CC667CEB5F97FC8ULL, 0x5B0C7CB251F53E8DULL } }, /* XSUM_XXH128_testdata[5879] */ + { 1960, 0x0000000000000000ULL, { 0x004A99DC027F4F6AULL, 0x919B9F1FC4C3C170ULL } }, /* XSUM_XXH128_testdata[5880] */ + { 1960, 0x000000009E3779B1ULL, { 0x1301E3259088A368ULL, 0x101CA7D15CE8A9FEULL } }, /* XSUM_XXH128_testdata[5881] */ + { 1960, 0x9E3779B185EBCA8DULL, { 0x77E9A7955331A07CULL, 0x4A6418E25423A51BULL } }, /* XSUM_XXH128_testdata[5882] */ + { 1961, 0x0000000000000000ULL, { 0xFC9E3E034471B0B1ULL, 0x13C1356077DA9C82ULL } }, /* XSUM_XXH128_testdata[5883] */ + { 1961, 0x000000009E3779B1ULL, { 0x359F7CF1E39AE1FAULL, 0x51570B3FEA2645C5ULL } }, /* XSUM_XXH128_testdata[5884] */ + { 1961, 0x9E3779B185EBCA8DULL, { 0xEEB603E711A16ECFULL, 0xE476D82902D4AA7FULL } }, /* XSUM_XXH128_testdata[5885] */ + { 1962, 0x0000000000000000ULL, { 0xE15EAEB8E35FA693ULL, 0x39EE913E9A7089AAULL } }, /* XSUM_XXH128_testdata[5886] */ + { 1962, 0x000000009E3779B1ULL, { 0x0D8D6DBF516F70D3ULL, 0xFAB6E2EE63DFC71FULL } }, /* XSUM_XXH128_testdata[5887] */ + { 1962, 0x9E3779B185EBCA8DULL, { 0x494F4A97DEB9DEC2ULL, 0xF982E24046F06A73ULL } }, /* XSUM_XXH128_testdata[5888] */ + { 1963, 0x0000000000000000ULL, { 0x0520FEC1D624BD75ULL, 0x677F154C23CF2377ULL } }, /* XSUM_XXH128_testdata[5889] */ + { 1963, 0x000000009E3779B1ULL, { 0x38ACA806A59AE1A3ULL, 0x65585002CAFF0988ULL } }, /* XSUM_XXH128_testdata[5890] */ + { 1963, 0x9E3779B185EBCA8DULL, { 0xF4FE41CC1C78E92EULL, 0x09FA7666FD71B543ULL } }, /* XSUM_XXH128_testdata[5891] */ + { 1964, 0x0000000000000000ULL, { 0x188EAA4B37E8886EULL, 0x00535289B52FDE4FULL } }, /* XSUM_XXH128_testdata[5892] */ + { 1964, 0x000000009E3779B1ULL, { 0x7F3825E944C206FCULL, 0x12B2B35241228B5AULL } }, /* XSUM_XXH128_testdata[5893] */ + { 1964, 0x9E3779B185EBCA8DULL, { 0xB25E366558EAAC28ULL, 0xC8EDF06443936BD6ULL } }, /* XSUM_XXH128_testdata[5894] */ + { 1965, 0x0000000000000000ULL, { 0xEFF8375D71EA92D4ULL, 0x0C1B38B3A6B19298ULL } }, /* XSUM_XXH128_testdata[5895] */ + { 1965, 0x000000009E3779B1ULL, { 0x8710B22A0375AF0BULL, 0x92FA66C59E006840ULL } }, /* XSUM_XXH128_testdata[5896] */ + { 1965, 0x9E3779B185EBCA8DULL, { 0xE8F4D7DD66D4A35BULL, 0xF9CB2B1FCEDCB25CULL } }, /* XSUM_XXH128_testdata[5897] */ + { 1966, 0x0000000000000000ULL, { 0x368D2A130B64710FULL, 0xDEBFBA9B807ECF90ULL } }, /* XSUM_XXH128_testdata[5898] */ + { 1966, 0x000000009E3779B1ULL, { 0xDE039962AA722F60ULL, 0x30AD958D83F06E98ULL } }, /* XSUM_XXH128_testdata[5899] */ + { 1966, 0x9E3779B185EBCA8DULL, { 0xBE0FA933D7FD6001ULL, 0x8B691E04F54A2D73ULL } }, /* XSUM_XXH128_testdata[5900] */ + { 1967, 0x0000000000000000ULL, { 0xDE5E1FF7BF3E9F55ULL, 0x6124F2D2CC2B6892ULL } }, /* XSUM_XXH128_testdata[5901] */ + { 1967, 0x000000009E3779B1ULL, { 0x3FEA716AC7A12AA2ULL, 0x40664BD06285B516ULL } }, /* XSUM_XXH128_testdata[5902] */ + { 1967, 0x9E3779B185EBCA8DULL, { 0xD00C19EE6414778DULL, 0xF67D09B8E0825F12ULL } }, /* XSUM_XXH128_testdata[5903] */ + { 1968, 0x0000000000000000ULL, { 0x27CD7EA8B820E3F8ULL, 0x4CE4C6F9E9CA4E54ULL } }, /* XSUM_XXH128_testdata[5904] */ + { 1968, 0x000000009E3779B1ULL, { 0xE0339C2779084462ULL, 0x9CF14C4763C59654ULL } }, /* XSUM_XXH128_testdata[5905] */ + { 1968, 0x9E3779B185EBCA8DULL, { 0x97EB78821BC00C9FULL, 0xCA3FB356ABBDA64FULL } }, /* XSUM_XXH128_testdata[5906] */ + { 1969, 0x0000000000000000ULL, { 0x3819844D9D7EA49BULL, 0xCC75F9D5C7870730ULL } }, /* XSUM_XXH128_testdata[5907] */ + { 1969, 0x000000009E3779B1ULL, { 0xD29A5DB03DEF8DC8ULL, 0x76FD74234F5E520DULL } }, /* XSUM_XXH128_testdata[5908] */ + { 1969, 0x9E3779B185EBCA8DULL, { 0xE5F841A89A45610DULL, 0x26CF5BA93F2B0125ULL } }, /* XSUM_XXH128_testdata[5909] */ + { 1970, 0x0000000000000000ULL, { 0x113F378BABB8D222ULL, 0xED363BC68BD69231ULL } }, /* XSUM_XXH128_testdata[5910] */ + { 1970, 0x000000009E3779B1ULL, { 0x278F6709A524BBD0ULL, 0xD53C322A5F0DF270ULL } }, /* XSUM_XXH128_testdata[5911] */ + { 1970, 0x9E3779B185EBCA8DULL, { 0xCF4641E5FF36CD1FULL, 0x8B85056C31144127ULL } }, /* XSUM_XXH128_testdata[5912] */ + { 1971, 0x0000000000000000ULL, { 0x9E48DB0D4CEC7023ULL, 0xA0D7EED773C12848ULL } }, /* XSUM_XXH128_testdata[5913] */ + { 1971, 0x000000009E3779B1ULL, { 0x6CB8F7122C66DAA5ULL, 0x64F045102A69E924ULL } }, /* XSUM_XXH128_testdata[5914] */ + { 1971, 0x9E3779B185EBCA8DULL, { 0x27DCBB1B5C554B88ULL, 0x08EE1F1117AE934DULL } }, /* XSUM_XXH128_testdata[5915] */ + { 1972, 0x0000000000000000ULL, { 0xDA2A9985D0E6AF05ULL, 0xED374FD52C625CA0ULL } }, /* XSUM_XXH128_testdata[5916] */ + { 1972, 0x000000009E3779B1ULL, { 0x32324D73B0E4AF12ULL, 0x34370C2EA5359959ULL } }, /* XSUM_XXH128_testdata[5917] */ + { 1972, 0x9E3779B185EBCA8DULL, { 0x725D63AB0031FBD9ULL, 0xBF834C3279D63722ULL } }, /* XSUM_XXH128_testdata[5918] */ + { 1973, 0x0000000000000000ULL, { 0x2FD8A1FADBE01596ULL, 0x7E7C9EA49F11A6E2ULL } }, /* XSUM_XXH128_testdata[5919] */ + { 1973, 0x000000009E3779B1ULL, { 0x98E282C259351E41ULL, 0xFEB7A29EE9C898D7ULL } }, /* XSUM_XXH128_testdata[5920] */ + { 1973, 0x9E3779B185EBCA8DULL, { 0x6FA07F9987D2ECDCULL, 0xB40DFAC4686A42E9ULL } }, /* XSUM_XXH128_testdata[5921] */ + { 1974, 0x0000000000000000ULL, { 0xD3A2F52B332A2A0BULL, 0xF2EE26AF07C09E46ULL } }, /* XSUM_XXH128_testdata[5922] */ + { 1974, 0x000000009E3779B1ULL, { 0xD87C7BF7575FD600ULL, 0x437BF9035F1D9B08ULL } }, /* XSUM_XXH128_testdata[5923] */ + { 1974, 0x9E3779B185EBCA8DULL, { 0x76C832BF7344FCDEULL, 0x1D44DD1CAB11DE09ULL } }, /* XSUM_XXH128_testdata[5924] */ + { 1975, 0x0000000000000000ULL, { 0xDC36A1336C937579ULL, 0x16C2320B1102D755ULL } }, /* XSUM_XXH128_testdata[5925] */ + { 1975, 0x000000009E3779B1ULL, { 0x8816C0A226BDE282ULL, 0xDB83F540E2F6F64DULL } }, /* XSUM_XXH128_testdata[5926] */ + { 1975, 0x9E3779B185EBCA8DULL, { 0xD08CE0443333A2A7ULL, 0xB45D91F593DE7F03ULL } }, /* XSUM_XXH128_testdata[5927] */ + { 1976, 0x0000000000000000ULL, { 0xAD661BDAC1B79FA4ULL, 0xFFA898F3B38943ACULL } }, /* XSUM_XXH128_testdata[5928] */ + { 1976, 0x000000009E3779B1ULL, { 0xFA280DCB92010703ULL, 0xBA341FC46B916166ULL } }, /* XSUM_XXH128_testdata[5929] */ + { 1976, 0x9E3779B185EBCA8DULL, { 0x5B5A77C1083D92F2ULL, 0xB74FCC61914D12F9ULL } }, /* XSUM_XXH128_testdata[5930] */ + { 1977, 0x0000000000000000ULL, { 0x1AE078E65B90BDC7ULL, 0xEDFC0BD28535B82EULL } }, /* XSUM_XXH128_testdata[5931] */ + { 1977, 0x000000009E3779B1ULL, { 0x0081506B8FD75E52ULL, 0x80189B7DD4BC546AULL } }, /* XSUM_XXH128_testdata[5932] */ + { 1977, 0x9E3779B185EBCA8DULL, { 0x8973E397727E94E8ULL, 0x0E7D35DD7764141EULL } }, /* XSUM_XXH128_testdata[5933] */ + { 1978, 0x0000000000000000ULL, { 0x2B0EF2DEBF6905C9ULL, 0x241237D7202B82BDULL } }, /* XSUM_XXH128_testdata[5934] */ + { 1978, 0x000000009E3779B1ULL, { 0x3730525F246CFF8AULL, 0x2FC71A9258872068ULL } }, /* XSUM_XXH128_testdata[5935] */ + { 1978, 0x9E3779B185EBCA8DULL, { 0xD6E2399A90B12AACULL, 0x8422FAB2E02F069EULL } }, /* XSUM_XXH128_testdata[5936] */ + { 1979, 0x0000000000000000ULL, { 0x058D6790B1E8B641ULL, 0xDF66C4A6C80474D4ULL } }, /* XSUM_XXH128_testdata[5937] */ + { 1979, 0x000000009E3779B1ULL, { 0xE0A9217E89EC01B4ULL, 0xF9F1BF7D6C019511ULL } }, /* XSUM_XXH128_testdata[5938] */ + { 1979, 0x9E3779B185EBCA8DULL, { 0x281131D3DABF1AF3ULL, 0xDC7609377411BE82ULL } }, /* XSUM_XXH128_testdata[5939] */ + { 1980, 0x0000000000000000ULL, { 0x562B194F83DA7A62ULL, 0x0E8834C5A3587F2BULL } }, /* XSUM_XXH128_testdata[5940] */ + { 1980, 0x000000009E3779B1ULL, { 0x83B37A5676A91F8AULL, 0x19A17826C0277296ULL } }, /* XSUM_XXH128_testdata[5941] */ + { 1980, 0x9E3779B185EBCA8DULL, { 0xDCBA1086B2BB7606ULL, 0x185B92D5C07A9EEEULL } }, /* XSUM_XXH128_testdata[5942] */ + { 1981, 0x0000000000000000ULL, { 0x07C8B39420943D33ULL, 0x4EC0986D9D46EF97ULL } }, /* XSUM_XXH128_testdata[5943] */ + { 1981, 0x000000009E3779B1ULL, { 0x16C99B9604CA49ABULL, 0xF537E1E6A0171615ULL } }, /* XSUM_XXH128_testdata[5944] */ + { 1981, 0x9E3779B185EBCA8DULL, { 0x05694B9506E958BDULL, 0x4B9982F5A32155A7ULL } }, /* XSUM_XXH128_testdata[5945] */ + { 1982, 0x0000000000000000ULL, { 0xC18F07D9E25725B9ULL, 0x672FAFB8D607EA65ULL } }, /* XSUM_XXH128_testdata[5946] */ + { 1982, 0x000000009E3779B1ULL, { 0xDA757DC3D4018829ULL, 0xAE6C4E0916507BD7ULL } }, /* XSUM_XXH128_testdata[5947] */ + { 1982, 0x9E3779B185EBCA8DULL, { 0xEB5734AF6F449CF3ULL, 0xFD2D929B82473125ULL } }, /* XSUM_XXH128_testdata[5948] */ + { 1983, 0x0000000000000000ULL, { 0x5F9FA6455DED3D7DULL, 0x7FC4112CEED3F5C6ULL } }, /* XSUM_XXH128_testdata[5949] */ + { 1983, 0x000000009E3779B1ULL, { 0x452EEE65F4DDE659ULL, 0xDCA7F2725024BA37ULL } }, /* XSUM_XXH128_testdata[5950] */ + { 1983, 0x9E3779B185EBCA8DULL, { 0x3311F0370651A269ULL, 0x5512EFEACBA0C4D9ULL } }, /* XSUM_XXH128_testdata[5951] */ + { 1984, 0x0000000000000000ULL, { 0x67F7098725D64EFBULL, 0x13FEC930F03D1097ULL } }, /* XSUM_XXH128_testdata[5952] */ + { 1984, 0x000000009E3779B1ULL, { 0xB419FC5675166C42ULL, 0x6958CA508F2158EFULL } }, /* XSUM_XXH128_testdata[5953] */ + { 1984, 0x9E3779B185EBCA8DULL, { 0x9EA022F9495C6EAEULL, 0x8D58BF770EB26629ULL } }, /* XSUM_XXH128_testdata[5954] */ + { 1985, 0x0000000000000000ULL, { 0xD7E199EAF2C77E2FULL, 0x68EC478CC749FD2CULL } }, /* XSUM_XXH128_testdata[5955] */ + { 1985, 0x000000009E3779B1ULL, { 0x4DF4F23F7DDEF3D9ULL, 0xCCA7C2E1FD1E9271ULL } }, /* XSUM_XXH128_testdata[5956] */ + { 1985, 0x9E3779B185EBCA8DULL, { 0x8177A5B7825B3C18ULL, 0xFCA79F2F5B2A2E2BULL } }, /* XSUM_XXH128_testdata[5957] */ + { 1986, 0x0000000000000000ULL, { 0x1D8ED4C85F51E2B3ULL, 0x4F3748D6627B03C3ULL } }, /* XSUM_XXH128_testdata[5958] */ + { 1986, 0x000000009E3779B1ULL, { 0xD2CF7C92A44E5AF2ULL, 0x9E241CF4B0EB3F9EULL } }, /* XSUM_XXH128_testdata[5959] */ + { 1986, 0x9E3779B185EBCA8DULL, { 0x6AA78118C3472702ULL, 0x3D31CCFA9225DDF7ULL } }, /* XSUM_XXH128_testdata[5960] */ + { 1987, 0x0000000000000000ULL, { 0xEAF6F48977C9F687ULL, 0xE6A23664AFA0CFC6ULL } }, /* XSUM_XXH128_testdata[5961] */ + { 1987, 0x000000009E3779B1ULL, { 0xD9D70C289A240916ULL, 0x9F09185246F023CFULL } }, /* XSUM_XXH128_testdata[5962] */ + { 1987, 0x9E3779B185EBCA8DULL, { 0x42FDED3727B7302EULL, 0x3119EBA09B802C8FULL } }, /* XSUM_XXH128_testdata[5963] */ + { 1988, 0x0000000000000000ULL, { 0x767F809C56CFAB14ULL, 0xE38CA82B97382D44ULL } }, /* XSUM_XXH128_testdata[5964] */ + { 1988, 0x000000009E3779B1ULL, { 0x2481CEA376C2DB15ULL, 0x49D588C1A8839169ULL } }, /* XSUM_XXH128_testdata[5965] */ + { 1988, 0x9E3779B185EBCA8DULL, { 0xBDE437D976206DBCULL, 0xDA3F6FB0CA6CFEEEULL } }, /* XSUM_XXH128_testdata[5966] */ + { 1989, 0x0000000000000000ULL, { 0x888CEFE06213FCA3ULL, 0x5C057BA6FEC3A0DAULL } }, /* XSUM_XXH128_testdata[5967] */ + { 1989, 0x000000009E3779B1ULL, { 0xDB0276550883AF8DULL, 0x1E18C0D5D09F9A99ULL } }, /* XSUM_XXH128_testdata[5968] */ + { 1989, 0x9E3779B185EBCA8DULL, { 0x41A2B968B085D690ULL, 0x9447CFFCC792D61CULL } }, /* XSUM_XXH128_testdata[5969] */ + { 1990, 0x0000000000000000ULL, { 0xB169E18197F5DC9EULL, 0x4E9A4B72F81AD1D5ULL } }, /* XSUM_XXH128_testdata[5970] */ + { 1990, 0x000000009E3779B1ULL, { 0x4C14C66D51E6CD5BULL, 0x4D70DB1ACA9D45DEULL } }, /* XSUM_XXH128_testdata[5971] */ + { 1990, 0x9E3779B185EBCA8DULL, { 0xEB63FBD3AE339EA3ULL, 0x8D228BBF8BD3325BULL } }, /* XSUM_XXH128_testdata[5972] */ + { 1991, 0x0000000000000000ULL, { 0xFAD4E62400E73579ULL, 0x0A87FD11B902529FULL } }, /* XSUM_XXH128_testdata[5973] */ + { 1991, 0x000000009E3779B1ULL, { 0x0AE2734039E9FD4FULL, 0xDB0C49F7B2BACCE1ULL } }, /* XSUM_XXH128_testdata[5974] */ + { 1991, 0x9E3779B185EBCA8DULL, { 0x16A527D69EE9489AULL, 0x1F1B10D3014D9BCBULL } }, /* XSUM_XXH128_testdata[5975] */ + { 1992, 0x0000000000000000ULL, { 0x1E827B8BA221E555ULL, 0xA57CFA4F6DDC7099ULL } }, /* XSUM_XXH128_testdata[5976] */ + { 1992, 0x000000009E3779B1ULL, { 0x8355AD7AF62AD029ULL, 0x2926F64AC5626568ULL } }, /* XSUM_XXH128_testdata[5977] */ + { 1992, 0x9E3779B185EBCA8DULL, { 0x1C31224954EAF715ULL, 0x6B7CE8CBDCC40213ULL } }, /* XSUM_XXH128_testdata[5978] */ + { 1993, 0x0000000000000000ULL, { 0x87C424B6FF539845ULL, 0xC55EE7E3D0E75584ULL } }, /* XSUM_XXH128_testdata[5979] */ + { 1993, 0x000000009E3779B1ULL, { 0xBDEB34885BDF098FULL, 0xFCFAF7EFCD47C175ULL } }, /* XSUM_XXH128_testdata[5980] */ + { 1993, 0x9E3779B185EBCA8DULL, { 0xCCD894F35873EE67ULL, 0x67FAAEB17EB5A8F3ULL } }, /* XSUM_XXH128_testdata[5981] */ + { 1994, 0x0000000000000000ULL, { 0x94F1B7BA2BA62F72ULL, 0xFE3A281CD3262EF2ULL } }, /* XSUM_XXH128_testdata[5982] */ + { 1994, 0x000000009E3779B1ULL, { 0xB09508244D5D192BULL, 0xBAF7D1A7210162A7ULL } }, /* XSUM_XXH128_testdata[5983] */ + { 1994, 0x9E3779B185EBCA8DULL, { 0x8E7A8E6E14BA57E6ULL, 0xC0694F58C57EDF2EULL } }, /* XSUM_XXH128_testdata[5984] */ + { 1995, 0x0000000000000000ULL, { 0xE40874ED5070A9D2ULL, 0xEB77906733FDA027ULL } }, /* XSUM_XXH128_testdata[5985] */ + { 1995, 0x000000009E3779B1ULL, { 0x1E20A3E154B84574ULL, 0xD95132EDCC0CDD0FULL } }, /* XSUM_XXH128_testdata[5986] */ + { 1995, 0x9E3779B185EBCA8DULL, { 0x83D414781EB5C843ULL, 0x0B3484524EC0E440ULL } }, /* XSUM_XXH128_testdata[5987] */ + { 1996, 0x0000000000000000ULL, { 0xE66ECF80A62A9B4EULL, 0x669BEDC4BF1237FDULL } }, /* XSUM_XXH128_testdata[5988] */ + { 1996, 0x000000009E3779B1ULL, { 0x8D4D45BA65418920ULL, 0x0242BA3BE5223A19ULL } }, /* XSUM_XXH128_testdata[5989] */ + { 1996, 0x9E3779B185EBCA8DULL, { 0xB6AD15FEDE29D715ULL, 0xBA7A99CB59D5CBDAULL } }, /* XSUM_XXH128_testdata[5990] */ + { 1997, 0x0000000000000000ULL, { 0xC74E7760D7362526ULL, 0x3CFC6128901223EDULL } }, /* XSUM_XXH128_testdata[5991] */ + { 1997, 0x000000009E3779B1ULL, { 0x60B85069A6613414ULL, 0x622C0AD24877C9BBULL } }, /* XSUM_XXH128_testdata[5992] */ + { 1997, 0x9E3779B185EBCA8DULL, { 0xA860AEED4A0A0D52ULL, 0xEE833F2699A05A49ULL } }, /* XSUM_XXH128_testdata[5993] */ + { 1998, 0x0000000000000000ULL, { 0x13D55387CE54E1FFULL, 0x678A94A840D245A0ULL } }, /* XSUM_XXH128_testdata[5994] */ + { 1998, 0x000000009E3779B1ULL, { 0x72D294F3671C5CB3ULL, 0xCB68A13A1DADFA4BULL } }, /* XSUM_XXH128_testdata[5995] */ + { 1998, 0x9E3779B185EBCA8DULL, { 0xE7956FF8D3AB8D98ULL, 0x0EAAD48A3C59C7C2ULL } }, /* XSUM_XXH128_testdata[5996] */ + { 1999, 0x0000000000000000ULL, { 0x7264D216CE954BC8ULL, 0xF356FA91C02766ACULL } }, /* XSUM_XXH128_testdata[5997] */ + { 1999, 0x000000009E3779B1ULL, { 0x58727B05E8F56484ULL, 0x4467FD4347236F74ULL } }, /* XSUM_XXH128_testdata[5998] */ + { 1999, 0x9E3779B185EBCA8DULL, { 0xAC51184AD530F754ULL, 0x17036198C95EDD53ULL } }, /* XSUM_XXH128_testdata[5999] */ + { 2000, 0x0000000000000000ULL, { 0xCB004B57E2C68C3CULL, 0x859EDCAF46CDC6AEULL } }, /* XSUM_XXH128_testdata[6000] */ + { 2000, 0x000000009E3779B1ULL, { 0xAF004EBB17BFB29BULL, 0x20D7946C3BFE04B0ULL } }, /* XSUM_XXH128_testdata[6001] */ + { 2000, 0x9E3779B185EBCA8DULL, { 0xA42E90FB128E2048ULL, 0xEBD253A542466CA5ULL } }, /* XSUM_XXH128_testdata[6002] */ + { 2001, 0x0000000000000000ULL, { 0x1E1F42B1994C1879ULL, 0xF869C689108F2A2EULL } }, /* XSUM_XXH128_testdata[6003] */ + { 2001, 0x000000009E3779B1ULL, { 0x950A1581ACBFCBABULL, 0x251FDA63E1481D12ULL } }, /* XSUM_XXH128_testdata[6004] */ + { 2001, 0x9E3779B185EBCA8DULL, { 0x03DA0D7A9420CF61ULL, 0xFF4D2C2464091186ULL } }, /* XSUM_XXH128_testdata[6005] */ + { 2002, 0x0000000000000000ULL, { 0x664FA560D857B113ULL, 0x67939DD29ED423C5ULL } }, /* XSUM_XXH128_testdata[6006] */ + { 2002, 0x000000009E3779B1ULL, { 0xF024772AAE2F49F9ULL, 0x6CA3A6F1C35DD634ULL } }, /* XSUM_XXH128_testdata[6007] */ + { 2002, 0x9E3779B185EBCA8DULL, { 0x05C79467E8C02D61ULL, 0x1DA4A79E3E422964ULL } }, /* XSUM_XXH128_testdata[6008] */ + { 2003, 0x0000000000000000ULL, { 0xE079D54B05F58408ULL, 0xFF17C4FB2039B78FULL } }, /* XSUM_XXH128_testdata[6009] */ + { 2003, 0x000000009E3779B1ULL, { 0x943CB60CE84EBB35ULL, 0xC32E5A01FADE2996ULL } }, /* XSUM_XXH128_testdata[6010] */ + { 2003, 0x9E3779B185EBCA8DULL, { 0x834B08E509012644ULL, 0xF258AE6C8BF64DFEULL } }, /* XSUM_XXH128_testdata[6011] */ + { 2004, 0x0000000000000000ULL, { 0x52DF2A94AD538041ULL, 0x60E2B477A57237B1ULL } }, /* XSUM_XXH128_testdata[6012] */ + { 2004, 0x000000009E3779B1ULL, { 0x0395FFA8E62EB7C3ULL, 0x8B2BDB090529E367ULL } }, /* XSUM_XXH128_testdata[6013] */ + { 2004, 0x9E3779B185EBCA8DULL, { 0x504B2AA2E2217292ULL, 0x42F26CCD8A41F9C9ULL } }, /* XSUM_XXH128_testdata[6014] */ + { 2005, 0x0000000000000000ULL, { 0x6AE5C974231CF0EBULL, 0xB39B60235679E472ULL } }, /* XSUM_XXH128_testdata[6015] */ + { 2005, 0x000000009E3779B1ULL, { 0x8A268D79CD1D5EA4ULL, 0x001571930BF2EDB8ULL } }, /* XSUM_XXH128_testdata[6016] */ + { 2005, 0x9E3779B185EBCA8DULL, { 0xEE5B63536540CCA8ULL, 0x2937EACEF18C5E56ULL } }, /* XSUM_XXH128_testdata[6017] */ + { 2006, 0x0000000000000000ULL, { 0xB3D3F97A23341F2BULL, 0xDD83E6B084DD7768ULL } }, /* XSUM_XXH128_testdata[6018] */ + { 2006, 0x000000009E3779B1ULL, { 0x793B5BEBD69C685DULL, 0xD14574B2EA746487ULL } }, /* XSUM_XXH128_testdata[6019] */ + { 2006, 0x9E3779B185EBCA8DULL, { 0x3539ACA03EA1E19FULL, 0x98CA75B97DAF1B11ULL } }, /* XSUM_XXH128_testdata[6020] */ + { 2007, 0x0000000000000000ULL, { 0x14496363E69C4C5BULL, 0x250C832850540596ULL } }, /* XSUM_XXH128_testdata[6021] */ + { 2007, 0x000000009E3779B1ULL, { 0x45DE5A95E736A500ULL, 0xB4E87E5FBC15E9FEULL } }, /* XSUM_XXH128_testdata[6022] */ + { 2007, 0x9E3779B185EBCA8DULL, { 0xC19C6F8FD60CCEFDULL, 0x0F01C3EC9563BAFDULL } }, /* XSUM_XXH128_testdata[6023] */ + { 2008, 0x0000000000000000ULL, { 0xFCCDF239ED44A88EULL, 0x5FD886EDB4B0D67BULL } }, /* XSUM_XXH128_testdata[6024] */ + { 2008, 0x000000009E3779B1ULL, { 0x287497E2BC166850ULL, 0x2ED0C8900ADA2261ULL } }, /* XSUM_XXH128_testdata[6025] */ + { 2008, 0x9E3779B185EBCA8DULL, { 0x2EC7A1B0B82533F0ULL, 0x1878739922358B20ULL } }, /* XSUM_XXH128_testdata[6026] */ + { 2009, 0x0000000000000000ULL, { 0x6876FDB5237590AFULL, 0x1347CC3B914FB540ULL } }, /* XSUM_XXH128_testdata[6027] */ + { 2009, 0x000000009E3779B1ULL, { 0xB8F3138D171996E7ULL, 0xE39A831824D82F8FULL } }, /* XSUM_XXH128_testdata[6028] */ + { 2009, 0x9E3779B185EBCA8DULL, { 0xC72D0F20062CCDB8ULL, 0xF72353137A6501CDULL } }, /* XSUM_XXH128_testdata[6029] */ + { 2010, 0x0000000000000000ULL, { 0xE2C785419211E98DULL, 0xBACF6AC631CB6AEBULL } }, /* XSUM_XXH128_testdata[6030] */ + { 2010, 0x000000009E3779B1ULL, { 0x7B7E7CC8EC25C46CULL, 0x7CC34488F2134F53ULL } }, /* XSUM_XXH128_testdata[6031] */ + { 2010, 0x9E3779B185EBCA8DULL, { 0x5622588346C1BC8BULL, 0x9E44FD77D2C81329ULL } }, /* XSUM_XXH128_testdata[6032] */ + { 2011, 0x0000000000000000ULL, { 0xA3D767040F0D0661ULL, 0xD4F0DEC7A15A9913ULL } }, /* XSUM_XXH128_testdata[6033] */ + { 2011, 0x000000009E3779B1ULL, { 0x523AA80F9F878FEBULL, 0xE962E2D27B2C7BCEULL } }, /* XSUM_XXH128_testdata[6034] */ + { 2011, 0x9E3779B185EBCA8DULL, { 0xFCA2FA56B540FADBULL, 0x43D11C34A5D0571CULL } }, /* XSUM_XXH128_testdata[6035] */ + { 2012, 0x0000000000000000ULL, { 0xC049B2DC7838F936ULL, 0x58820947BDC04C4CULL } }, /* XSUM_XXH128_testdata[6036] */ + { 2012, 0x000000009E3779B1ULL, { 0x215C9AE2DC616ADFULL, 0xA74D636B41D5EF84ULL } }, /* XSUM_XXH128_testdata[6037] */ + { 2012, 0x9E3779B185EBCA8DULL, { 0x4CACB3E58EE6C22AULL, 0xD1867F7555770FA9ULL } }, /* XSUM_XXH128_testdata[6038] */ + { 2013, 0x0000000000000000ULL, { 0xB6E73B07D480F818ULL, 0x27CB009A59D711B0ULL } }, /* XSUM_XXH128_testdata[6039] */ + { 2013, 0x000000009E3779B1ULL, { 0xBA3264A9C74D2A20ULL, 0x4B711D15E6FC5A5BULL } }, /* XSUM_XXH128_testdata[6040] */ + { 2013, 0x9E3779B185EBCA8DULL, { 0xFD34BCF6A3482135ULL, 0x48362AE18554CEE9ULL } }, /* XSUM_XXH128_testdata[6041] */ + { 2014, 0x0000000000000000ULL, { 0x8A3B04C52FC9AA23ULL, 0x1BED8FC2CB50AB73ULL } }, /* XSUM_XXH128_testdata[6042] */ + { 2014, 0x000000009E3779B1ULL, { 0xD3EA062A6B7CEF26ULL, 0xE98E5AA2B02A1E43ULL } }, /* XSUM_XXH128_testdata[6043] */ + { 2014, 0x9E3779B185EBCA8DULL, { 0x8139A1C6391CE7E2ULL, 0xC13B38977E5CC375ULL } }, /* XSUM_XXH128_testdata[6044] */ + { 2015, 0x0000000000000000ULL, { 0x1A239D5BD68C460FULL, 0x5377BDAA8F847EBCULL } }, /* XSUM_XXH128_testdata[6045] */ + { 2015, 0x000000009E3779B1ULL, { 0x38437308BC5A8FADULL, 0xDAD86D4C6F78E7D9ULL } }, /* XSUM_XXH128_testdata[6046] */ + { 2015, 0x9E3779B185EBCA8DULL, { 0xF9F0BC793F9ECFE2ULL, 0x8E9BCC512CB5B938ULL } }, /* XSUM_XXH128_testdata[6047] */ + { 2016, 0x0000000000000000ULL, { 0x534519D72E407E0CULL, 0xFCEBD0565AF0AC2DULL } }, /* XSUM_XXH128_testdata[6048] */ + { 2016, 0x000000009E3779B1ULL, { 0x2B914D5CAB07CB85ULL, 0x9CC6C772AA76F0F3ULL } }, /* XSUM_XXH128_testdata[6049] */ + { 2016, 0x9E3779B185EBCA8DULL, { 0x725AE54533395887ULL, 0x4E708CA426AC0045ULL } }, /* XSUM_XXH128_testdata[6050] */ + { 2017, 0x0000000000000000ULL, { 0xDAA50B3EA23ADC34ULL, 0xAA26106D9F5801A7ULL } }, /* XSUM_XXH128_testdata[6051] */ + { 2017, 0x000000009E3779B1ULL, { 0x274F059883039D7CULL, 0x65525209ED9DD1E3ULL } }, /* XSUM_XXH128_testdata[6052] */ + { 2017, 0x9E3779B185EBCA8DULL, { 0x40530C9B13FBD31BULL, 0xE5C62F816C8C98EBULL } }, /* XSUM_XXH128_testdata[6053] */ + { 2018, 0x0000000000000000ULL, { 0x39D77B2F9DF4CE40ULL, 0x8AA1589E4DA135B5ULL } }, /* XSUM_XXH128_testdata[6054] */ + { 2018, 0x000000009E3779B1ULL, { 0xA43883C83938E9B6ULL, 0xF913AD37E8291E23ULL } }, /* XSUM_XXH128_testdata[6055] */ + { 2018, 0x9E3779B185EBCA8DULL, { 0x31F74B0ADE0693F0ULL, 0xD24A15394AAAEBECULL } }, /* XSUM_XXH128_testdata[6056] */ + { 2019, 0x0000000000000000ULL, { 0x413C806DA2DF48BAULL, 0xCF82E755F199D67EULL } }, /* XSUM_XXH128_testdata[6057] */ + { 2019, 0x000000009E3779B1ULL, { 0x6CF04E768F60E6DCULL, 0xB940A15EC4B87C15ULL } }, /* XSUM_XXH128_testdata[6058] */ + { 2019, 0x9E3779B185EBCA8DULL, { 0x5C2BADA6E6CBBE9FULL, 0x5776A8DF3C111AEFULL } }, /* XSUM_XXH128_testdata[6059] */ + { 2020, 0x0000000000000000ULL, { 0x275A4C696DF53E8AULL, 0xDC59CC95E19005F3ULL } }, /* XSUM_XXH128_testdata[6060] */ + { 2020, 0x000000009E3779B1ULL, { 0x25C1B8B47BE99A39ULL, 0xE68D64862263827FULL } }, /* XSUM_XXH128_testdata[6061] */ + { 2020, 0x9E3779B185EBCA8DULL, { 0x28B2677EB66CA5B4ULL, 0x0F0A84778C8C8E63ULL } }, /* XSUM_XXH128_testdata[6062] */ + { 2021, 0x0000000000000000ULL, { 0x8959B2E089954F49ULL, 0x4F9A7C06CD8B8D2AULL } }, /* XSUM_XXH128_testdata[6063] */ + { 2021, 0x000000009E3779B1ULL, { 0xE590A51CD1913346ULL, 0x7FAA26B0597794A0ULL } }, /* XSUM_XXH128_testdata[6064] */ + { 2021, 0x9E3779B185EBCA8DULL, { 0xBD19EE9F34E838FBULL, 0xB3BE520CC45262C7ULL } }, /* XSUM_XXH128_testdata[6065] */ + { 2022, 0x0000000000000000ULL, { 0x88DEE9BC3FDE452FULL, 0xAB02FBA7C968A608ULL } }, /* XSUM_XXH128_testdata[6066] */ + { 2022, 0x000000009E3779B1ULL, { 0x05E3ACD91655DEF5ULL, 0x0CA1F0A1D2C1C5A4ULL } }, /* XSUM_XXH128_testdata[6067] */ + { 2022, 0x9E3779B185EBCA8DULL, { 0x9646A86F11CBB0FEULL, 0x2CDA2BAF4E508384ULL } }, /* XSUM_XXH128_testdata[6068] */ + { 2023, 0x0000000000000000ULL, { 0xB8F94EB2217B0BEFULL, 0xBA10816B6350B430ULL } }, /* XSUM_XXH128_testdata[6069] */ + { 2023, 0x000000009E3779B1ULL, { 0xAA62FF16495D5DFBULL, 0x523E2052E17F19D9ULL } }, /* XSUM_XXH128_testdata[6070] */ + { 2023, 0x9E3779B185EBCA8DULL, { 0xC13EC440EB36532DULL, 0x315A46D4EBFB5166ULL } }, /* XSUM_XXH128_testdata[6071] */ + { 2024, 0x0000000000000000ULL, { 0x558CD9D489374445ULL, 0xA3C7941849072C17ULL } }, /* XSUM_XXH128_testdata[6072] */ + { 2024, 0x000000009E3779B1ULL, { 0xBD34DEE10B502272ULL, 0x78ED43FE1BC3877CULL } }, /* XSUM_XXH128_testdata[6073] */ + { 2024, 0x9E3779B185EBCA8DULL, { 0xC709BAD6A00BD0A6ULL, 0x23A8B6A2BBF9FF6EULL } }, /* XSUM_XXH128_testdata[6074] */ + { 2025, 0x0000000000000000ULL, { 0x4A1BE4E9C58D67B0ULL, 0x5C7FBCEC47199FB0ULL } }, /* XSUM_XXH128_testdata[6075] */ + { 2025, 0x000000009E3779B1ULL, { 0xE3D3CEB8CC5B7D0DULL, 0xD55189BAB7CE3A64ULL } }, /* XSUM_XXH128_testdata[6076] */ + { 2025, 0x9E3779B185EBCA8DULL, { 0xE712E350253C4F20ULL, 0xAF2E2E48E2A11E4BULL } }, /* XSUM_XXH128_testdata[6077] */ + { 2026, 0x0000000000000000ULL, { 0xD60CDF85EB17A41DULL, 0xFC603F5542CBF57DULL } }, /* XSUM_XXH128_testdata[6078] */ + { 2026, 0x000000009E3779B1ULL, { 0xF5FE53A3D2DC6FB6ULL, 0x0F5DBAD97E9048DAULL } }, /* XSUM_XXH128_testdata[6079] */ + { 2026, 0x9E3779B185EBCA8DULL, { 0x8BD9EC91AEC9506CULL, 0xC82DCBDDC842AF68ULL } }, /* XSUM_XXH128_testdata[6080] */ + { 2027, 0x0000000000000000ULL, { 0x34030D2C2BD3620EULL, 0x620B79CF222E8013ULL } }, /* XSUM_XXH128_testdata[6081] */ + { 2027, 0x000000009E3779B1ULL, { 0x60B57703A2852C5BULL, 0x1FF265FF85FE0D18ULL } }, /* XSUM_XXH128_testdata[6082] */ + { 2027, 0x9E3779B185EBCA8DULL, { 0x1E6AADC5ACC59368ULL, 0x5CBD09598068CD96ULL } }, /* XSUM_XXH128_testdata[6083] */ + { 2028, 0x0000000000000000ULL, { 0x0482AD00A9BEA4DFULL, 0x004F6F30E3CDF9F7ULL } }, /* XSUM_XXH128_testdata[6084] */ + { 2028, 0x000000009E3779B1ULL, { 0xF7BCCBE86214EFF5ULL, 0xC74842B6CACB052BULL } }, /* XSUM_XXH128_testdata[6085] */ + { 2028, 0x9E3779B185EBCA8DULL, { 0x64B42B215687F156ULL, 0x678850160411ACF9ULL } }, /* XSUM_XXH128_testdata[6086] */ + { 2029, 0x0000000000000000ULL, { 0x43F8BAF5DCE60762ULL, 0x6875A3539DDB4C72ULL } }, /* XSUM_XXH128_testdata[6087] */ + { 2029, 0x000000009E3779B1ULL, { 0x6785F6F30F31FC87ULL, 0x7FAE963EA442A0ADULL } }, /* XSUM_XXH128_testdata[6088] */ + { 2029, 0x9E3779B185EBCA8DULL, { 0x3076B5F774B774ABULL, 0xFE81B7FA5258694DULL } }, /* XSUM_XXH128_testdata[6089] */ + { 2030, 0x0000000000000000ULL, { 0x7F3A75C5F47372BFULL, 0xB7E6F82C1F5FB9EEULL } }, /* XSUM_XXH128_testdata[6090] */ + { 2030, 0x000000009E3779B1ULL, { 0x6FCB76CE96D31C80ULL, 0xBCDCDF08A7633030ULL } }, /* XSUM_XXH128_testdata[6091] */ + { 2030, 0x9E3779B185EBCA8DULL, { 0xA41F7DE911B9388DULL, 0x7E58A1E191FFEE52ULL } }, /* XSUM_XXH128_testdata[6092] */ + { 2031, 0x0000000000000000ULL, { 0x0F07C63F0A64FB6BULL, 0x78E7CDCB9F8CA20AULL } }, /* XSUM_XXH128_testdata[6093] */ + { 2031, 0x000000009E3779B1ULL, { 0xA8DE3A6A6ACF3FC9ULL, 0x501FF62CB6348D9DULL } }, /* XSUM_XXH128_testdata[6094] */ + { 2031, 0x9E3779B185EBCA8DULL, { 0xD7AA163A998F94FFULL, 0x7815B9F113A6EE2BULL } }, /* XSUM_XXH128_testdata[6095] */ + { 2032, 0x0000000000000000ULL, { 0x730334D88E3E042EULL, 0x373E97EB8F27342DULL } }, /* XSUM_XXH128_testdata[6096] */ + { 2032, 0x000000009E3779B1ULL, { 0x8DE885E175AADDF9ULL, 0xA78608E1E95F5F52ULL } }, /* XSUM_XXH128_testdata[6097] */ + { 2032, 0x9E3779B185EBCA8DULL, { 0x43E3404431F6B57BULL, 0x5165C3C64BF1A970ULL } }, /* XSUM_XXH128_testdata[6098] */ + { 2033, 0x0000000000000000ULL, { 0x820AB0168AD91F9CULL, 0xEC275E450B0A4569ULL } }, /* XSUM_XXH128_testdata[6099] */ + { 2033, 0x000000009E3779B1ULL, { 0x9825D196FA77EE5EULL, 0x657B43CE0CD27766ULL } }, /* XSUM_XXH128_testdata[6100] */ + { 2033, 0x9E3779B185EBCA8DULL, { 0xA2FA5B655AC4CF82ULL, 0x102C9B7F5B610ADBULL } }, /* XSUM_XXH128_testdata[6101] */ + { 2034, 0x0000000000000000ULL, { 0x5983231050374BE5ULL, 0x45B6EE3E0FB1B94BULL } }, /* XSUM_XXH128_testdata[6102] */ + { 2034, 0x000000009E3779B1ULL, { 0xA76F9CFF400FF48FULL, 0xE63B2084566AB839ULL } }, /* XSUM_XXH128_testdata[6103] */ + { 2034, 0x9E3779B185EBCA8DULL, { 0x463BA881AF792E27ULL, 0xEA30796E2199ECD0ULL } }, /* XSUM_XXH128_testdata[6104] */ + { 2035, 0x0000000000000000ULL, { 0x64138A1310FB44C1ULL, 0x9548E8719069EC31ULL } }, /* XSUM_XXH128_testdata[6105] */ + { 2035, 0x000000009E3779B1ULL, { 0x7F0BC4EA67C1AA97ULL, 0x81AC5A175D5ED56AULL } }, /* XSUM_XXH128_testdata[6106] */ + { 2035, 0x9E3779B185EBCA8DULL, { 0xC567DEEA44BB2339ULL, 0xB208B3FAFD04DA0EULL } }, /* XSUM_XXH128_testdata[6107] */ + { 2036, 0x0000000000000000ULL, { 0xED8983739724FB6DULL, 0x1A8B0F9BF85AD378ULL } }, /* XSUM_XXH128_testdata[6108] */ + { 2036, 0x000000009E3779B1ULL, { 0xA91107C891C457C5ULL, 0xEBBB619A526255EEULL } }, /* XSUM_XXH128_testdata[6109] */ + { 2036, 0x9E3779B185EBCA8DULL, { 0x01E77A05708AFEB9ULL, 0x1D3930EB81432E87ULL } }, /* XSUM_XXH128_testdata[6110] */ + { 2037, 0x0000000000000000ULL, { 0x92054F5E50441F45ULL, 0xA448AC2065CE828AULL } }, /* XSUM_XXH128_testdata[6111] */ + { 2037, 0x000000009E3779B1ULL, { 0xEA4D0FDF32AFC990ULL, 0xDD11C3AB8D91D79FULL } }, /* XSUM_XXH128_testdata[6112] */ + { 2037, 0x9E3779B185EBCA8DULL, { 0x434B0B08AFC1ECF6ULL, 0x05468414A895A87BULL } }, /* XSUM_XXH128_testdata[6113] */ + { 2038, 0x0000000000000000ULL, { 0xE87C4A31666DD254ULL, 0xEF5F1DA1DF7C8200ULL } }, /* XSUM_XXH128_testdata[6114] */ + { 2038, 0x000000009E3779B1ULL, { 0x13F73C2864C69557ULL, 0xCED6DE9C4645DF69ULL } }, /* XSUM_XXH128_testdata[6115] */ + { 2038, 0x9E3779B185EBCA8DULL, { 0x732C503DE5D66BFAULL, 0x2F3BE671B6296FC2ULL } }, /* XSUM_XXH128_testdata[6116] */ + { 2039, 0x0000000000000000ULL, { 0x4977DEF98DA8CDDBULL, 0x701C2D3389213E3FULL } }, /* XSUM_XXH128_testdata[6117] */ + { 2039, 0x000000009E3779B1ULL, { 0xAFA97A032456FDC2ULL, 0xB026BA633B4CA7ADULL } }, /* XSUM_XXH128_testdata[6118] */ + { 2039, 0x9E3779B185EBCA8DULL, { 0x39AB97AAA1B56323ULL, 0x96AD35DC23B8C9AAULL } }, /* XSUM_XXH128_testdata[6119] */ + { 2040, 0x0000000000000000ULL, { 0xEEF5DBB6649AA0E3ULL, 0xC774517F0673497FULL } }, /* XSUM_XXH128_testdata[6120] */ + { 2040, 0x000000009E3779B1ULL, { 0xE0C71ED3F2CE3D70ULL, 0x1D1821201047B7D1ULL } }, /* XSUM_XXH128_testdata[6121] */ + { 2040, 0x9E3779B185EBCA8DULL, { 0x836669341AF0DB7EULL, 0xD51FDAA3A487672BULL } }, /* XSUM_XXH128_testdata[6122] */ + { 2041, 0x0000000000000000ULL, { 0x08D6503AD6329A06ULL, 0xFC20954936C4638EULL } }, /* XSUM_XXH128_testdata[6123] */ + { 2041, 0x000000009E3779B1ULL, { 0xB768548C329DB9DDULL, 0x36B33DD78DE185CEULL } }, /* XSUM_XXH128_testdata[6124] */ + { 2041, 0x9E3779B185EBCA8DULL, { 0xEF60C7E28ECDCFD8ULL, 0x54C6F879277722ECULL } }, /* XSUM_XXH128_testdata[6125] */ + { 2042, 0x0000000000000000ULL, { 0xEF868C71CFEB56FEULL, 0x73CC68B6E1371CF8ULL } }, /* XSUM_XXH128_testdata[6126] */ + { 2042, 0x000000009E3779B1ULL, { 0x2956EB532F06C8D4ULL, 0x4058A69ACD7C5433ULL } }, /* XSUM_XXH128_testdata[6127] */ + { 2042, 0x9E3779B185EBCA8DULL, { 0xE0D951BBF943A865ULL, 0x033B8C3040C8FD74ULL } }, /* XSUM_XXH128_testdata[6128] */ + { 2043, 0x0000000000000000ULL, { 0x8E1FE7164D991205ULL, 0xE52011A084CD03A9ULL } }, /* XSUM_XXH128_testdata[6129] */ + { 2043, 0x000000009E3779B1ULL, { 0xDE3A6754B2033E33ULL, 0x9E36C3C39B12A3D5ULL } }, /* XSUM_XXH128_testdata[6130] */ + { 2043, 0x9E3779B185EBCA8DULL, { 0x4E4FCF6E540BD98CULL, 0x43984208F289B02DULL } }, /* XSUM_XXH128_testdata[6131] */ + { 2044, 0x0000000000000000ULL, { 0x430EDA1712B71273ULL, 0x5E6BA2B132D472BBULL } }, /* XSUM_XXH128_testdata[6132] */ + { 2044, 0x000000009E3779B1ULL, { 0xE908FDB2405499D9ULL, 0x6C6957BDBBEB4072ULL } }, /* XSUM_XXH128_testdata[6133] */ + { 2044, 0x9E3779B185EBCA8DULL, { 0xD5CB570B453EA1EEULL, 0xEF5D918E4E094585ULL } }, /* XSUM_XXH128_testdata[6134] */ + { 2045, 0x0000000000000000ULL, { 0x0AC7FFEC88CB2C74ULL, 0x785D7C9AFFC48819ULL } }, /* XSUM_XXH128_testdata[6135] */ + { 2045, 0x000000009E3779B1ULL, { 0xB504B6F65B9FC84BULL, 0xC6A746E3594CA17BULL } }, /* XSUM_XXH128_testdata[6136] */ + { 2045, 0x9E3779B185EBCA8DULL, { 0x826B102E8728882AULL, 0x06F361AE0428FE9FULL } }, /* XSUM_XXH128_testdata[6137] */ + { 2046, 0x0000000000000000ULL, { 0x2FCD8606F9959DEDULL, 0xBDBA98C14D96BEACULL } }, /* XSUM_XXH128_testdata[6138] */ + { 2046, 0x000000009E3779B1ULL, { 0x234C730CFD80E676ULL, 0x656CE11DCFCF5301ULL } }, /* XSUM_XXH128_testdata[6139] */ + { 2046, 0x9E3779B185EBCA8DULL, { 0x251CA99F31B16336ULL, 0x5E957DE6D9EDA6AEULL } }, /* XSUM_XXH128_testdata[6140] */ + { 2047, 0x0000000000000000ULL, { 0xB36ECE19FCA2197FULL, 0x763A9143F0523D15ULL } }, /* XSUM_XXH128_testdata[6141] */ + { 2047, 0x000000009E3779B1ULL, { 0x8141F69F4BACDEA2ULL, 0xD2605592AB25DC1AULL } }, /* XSUM_XXH128_testdata[6142] */ + { 2047, 0x9E3779B185EBCA8DULL, { 0x8111BB82842ED0AEULL, 0x47C992688E710651ULL } }, /* XSUM_XXH128_testdata[6143] */ + { 2048, 0x0000000000000000ULL, { 0xDD59E2C3A5F038E0ULL, 0xF736557FD47073A5ULL } }, /* XSUM_XXH128_testdata[6144] */ + { 2048, 0x000000009E3779B1ULL, { 0x230D43F30206260BULL, 0x7FB03F7E7186C3EAULL } }, /* XSUM_XXH128_testdata[6145] */ + { 2048, 0x9E3779B185EBCA8DULL, { 0x66F81670669ABABCULL, 0x23CC3A2E75EBAAEAULL } }, /* XSUM_XXH128_testdata[6146] */ + { 2049, 0x0000000000000000ULL, { 0xD3AFA4329779B921ULL, 0x4CD2BD192F2D70BDULL } }, /* XSUM_XXH128_testdata[6147] */ + { 2049, 0x000000009E3779B1ULL, { 0x60E0F49946D79DAFULL, 0x782BC6262B86BFE8ULL } }, /* XSUM_XXH128_testdata[6148] */ + { 2049, 0x9E3779B185EBCA8DULL, { 0xE48083836CD58024ULL, 0xE4000F7A288A82CEULL } }, /* XSUM_XXH128_testdata[6149] */ + { 2050, 0x0000000000000000ULL, { 0x0532360C2902A5BDULL, 0x4B1861A7CA7A93C5ULL } }, /* XSUM_XXH128_testdata[6150] */ + { 2050, 0x000000009E3779B1ULL, { 0x5B6BB159ECFEA6CBULL, 0xDB35E9D09762164DULL } }, /* XSUM_XXH128_testdata[6151] */ + { 2050, 0x9E3779B185EBCA8DULL, { 0x662EC20AC24778FAULL, 0xAD4D243C38FE1D8EULL } }, /* XSUM_XXH128_testdata[6152] */ + { 2051, 0x0000000000000000ULL, { 0xE62F2E2BF20AAAC7ULL, 0x99120B1130BB7839ULL } }, /* XSUM_XXH128_testdata[6153] */ + { 2051, 0x000000009E3779B1ULL, { 0x485B17BDF08B568FULL, 0x359C82881DDE9D41ULL } }, /* XSUM_XXH128_testdata[6154] */ + { 2051, 0x9E3779B185EBCA8DULL, { 0x243368F8E121EE9CULL, 0xB76A302FC8DEC9DBULL } }, /* XSUM_XXH128_testdata[6155] */ + { 2052, 0x0000000000000000ULL, { 0x77E97B48DFD9C3A4ULL, 0x156DADD15FD9897BULL } }, /* XSUM_XXH128_testdata[6156] */ + { 2052, 0x000000009E3779B1ULL, { 0xC1DE931CD5EF7FE9ULL, 0x8A6AF73B673B11B1ULL } }, /* XSUM_XXH128_testdata[6157] */ + { 2052, 0x9E3779B185EBCA8DULL, { 0x1383D08E9F71026CULL, 0xC5F159D14A718848ULL } }, /* XSUM_XXH128_testdata[6158] */ + { 2053, 0x0000000000000000ULL, { 0x76A13FAD4EE49BB6ULL, 0xFE6259230F43C22CULL } }, /* XSUM_XXH128_testdata[6159] */ + { 2053, 0x000000009E3779B1ULL, { 0x0D1117E361DB78BAULL, 0xC7C6B0693F424E65ULL } }, /* XSUM_XXH128_testdata[6160] */ + { 2053, 0x9E3779B185EBCA8DULL, { 0x7D4B20F87FB1D4C6ULL, 0x50BDD7469DE21A49ULL } }, /* XSUM_XXH128_testdata[6161] */ + { 2054, 0x0000000000000000ULL, { 0xDFA75E9C69C94236ULL, 0x129EE0EB52028882ULL } }, /* XSUM_XXH128_testdata[6162] */ + { 2054, 0x000000009E3779B1ULL, { 0x79FE8F462F6D30E0ULL, 0x906231C502C9D6D7ULL } }, /* XSUM_XXH128_testdata[6163] */ + { 2054, 0x9E3779B185EBCA8DULL, { 0x4BAEE244F77B4556ULL, 0xAA7A4DBD0AACD445ULL } }, /* XSUM_XXH128_testdata[6164] */ + { 2055, 0x0000000000000000ULL, { 0x78F2A62C67FCE789ULL, 0xD24415AA4B7EA0B9ULL } }, /* XSUM_XXH128_testdata[6165] */ + { 2055, 0x000000009E3779B1ULL, { 0x0F661A88721C0F15ULL, 0xE42E09ED9CA8084BULL } }, /* XSUM_XXH128_testdata[6166] */ + { 2055, 0x9E3779B185EBCA8DULL, { 0x00C87FA2B31D9A7EULL, 0x4ED12A46F2DD2BAAULL } }, /* XSUM_XXH128_testdata[6167] */ + { 2056, 0x0000000000000000ULL, { 0x85673DCE828BB176ULL, 0x6E766BD7F58FDE36ULL } }, /* XSUM_XXH128_testdata[6168] */ + { 2056, 0x000000009E3779B1ULL, { 0xB1B1661153025D63ULL, 0x2F9CD855A651C12BULL } }, /* XSUM_XXH128_testdata[6169] */ + { 2056, 0x9E3779B185EBCA8DULL, { 0x639BBCB43B120051ULL, 0xD97E5108436F34E4ULL } }, /* XSUM_XXH128_testdata[6170] */ + { 2057, 0x0000000000000000ULL, { 0x5603E2339F4F826EULL, 0xCB4B5E6A5EE7920CULL } }, /* XSUM_XXH128_testdata[6171] */ + { 2057, 0x000000009E3779B1ULL, { 0xA94615CFE7097918ULL, 0xFC003C18022799B4ULL } }, /* XSUM_XXH128_testdata[6172] */ + { 2057, 0x9E3779B185EBCA8DULL, { 0x3EE81E2EEDA78865ULL, 0x38875F8095DB9BFFULL } }, /* XSUM_XXH128_testdata[6173] */ + { 2058, 0x0000000000000000ULL, { 0x8B79E2C538071EE1ULL, 0x807D962007307B45ULL } }, /* XSUM_XXH128_testdata[6174] */ + { 2058, 0x000000009E3779B1ULL, { 0x4327243FB12CB154ULL, 0x485FA03DA76E270AULL } }, /* XSUM_XXH128_testdata[6175] */ + { 2058, 0x9E3779B185EBCA8DULL, { 0x45D764AEA3909E3CULL, 0xCFDFFA43A86C2A81ULL } }, /* XSUM_XXH128_testdata[6176] */ + { 2059, 0x0000000000000000ULL, { 0x029818F64365392BULL, 0x388992A510C977D9ULL } }, /* XSUM_XXH128_testdata[6177] */ + { 2059, 0x000000009E3779B1ULL, { 0x0A5703B0DBC36F41ULL, 0xEDED364EB26AA249ULL } }, /* XSUM_XXH128_testdata[6178] */ + { 2059, 0x9E3779B185EBCA8DULL, { 0xB3DB05F5273BE806ULL, 0xDAE264BF1193E8B0ULL } }, /* XSUM_XXH128_testdata[6179] */ + { 2060, 0x0000000000000000ULL, { 0xD839C817BB6637E6ULL, 0xBC1F22D4E618E8C0ULL } }, /* XSUM_XXH128_testdata[6180] */ + { 2060, 0x000000009E3779B1ULL, { 0x678A74AC8207CD05ULL, 0x23DE42EA041A75B1ULL } }, /* XSUM_XXH128_testdata[6181] */ + { 2060, 0x9E3779B185EBCA8DULL, { 0x0A5E09622DA857AAULL, 0xCF08539B8183F4DDULL } }, /* XSUM_XXH128_testdata[6182] */ + { 2061, 0x0000000000000000ULL, { 0x4FD8B89CE6A4728AULL, 0x0B2B853E1E20365BULL } }, /* XSUM_XXH128_testdata[6183] */ + { 2061, 0x000000009E3779B1ULL, { 0x13041D40A6A597A5ULL, 0x7ACABBBC97B1EF59ULL } }, /* XSUM_XXH128_testdata[6184] */ + { 2061, 0x9E3779B185EBCA8DULL, { 0xCE450DDB8CB7585EULL, 0x1189EAF68FE13B0CULL } }, /* XSUM_XXH128_testdata[6185] */ + { 2062, 0x0000000000000000ULL, { 0xB8FB834F453F1CA4ULL, 0x2BAE3BB4E5A8BD6AULL } }, /* XSUM_XXH128_testdata[6186] */ + { 2062, 0x000000009E3779B1ULL, { 0x574560F5846E6AE1ULL, 0x0C0E354911B93F62ULL } }, /* XSUM_XXH128_testdata[6187] */ + { 2062, 0x9E3779B185EBCA8DULL, { 0x800978E7099890B7ULL, 0x32B67AABFA4F61A1ULL } }, /* XSUM_XXH128_testdata[6188] */ + { 2063, 0x0000000000000000ULL, { 0xA17842CF3E1F5965ULL, 0x6D7A6D9431AA1638ULL } }, /* XSUM_XXH128_testdata[6189] */ + { 2063, 0x000000009E3779B1ULL, { 0x05BB8C8F32D025ACULL, 0x8A8FEA9FDFB0D8D3ULL } }, /* XSUM_XXH128_testdata[6190] */ + { 2063, 0x9E3779B185EBCA8DULL, { 0xA62021E903E62AFEULL, 0xDF6812BBC8B23A49ULL } }, /* XSUM_XXH128_testdata[6191] */ + { 2064, 0x0000000000000000ULL, { 0x8F49404347CC5423ULL, 0x77341D0BD33948B6ULL } }, /* XSUM_XXH128_testdata[6192] */ + { 2064, 0x000000009E3779B1ULL, { 0x983F571976EB59F1ULL, 0xF64D5B0A87CBE39DULL } }, /* XSUM_XXH128_testdata[6193] */ + { 2064, 0x9E3779B185EBCA8DULL, { 0x7331ED58FB0DA04BULL, 0xEBF4169BA6E86C26ULL } }, /* XSUM_XXH128_testdata[6194] */ + { 2065, 0x0000000000000000ULL, { 0x9B78591A9560D69FULL, 0xA2121526A1CBFBCFULL } }, /* XSUM_XXH128_testdata[6195] */ + { 2065, 0x000000009E3779B1ULL, { 0x16AED76DD15C8676ULL, 0xE77EB6ABBABFB3ADULL } }, /* XSUM_XXH128_testdata[6196] */ + { 2065, 0x9E3779B185EBCA8DULL, { 0xD2E52479743D758DULL, 0x4083CBEEEBA500E2ULL } }, /* XSUM_XXH128_testdata[6197] */ + { 2066, 0x0000000000000000ULL, { 0x7D91DCA73A96F9ADULL, 0xB9F395D96553764BULL } }, /* XSUM_XXH128_testdata[6198] */ + { 2066, 0x000000009E3779B1ULL, { 0xADD18E7BC8C82607ULL, 0xA30C23CC105006CCULL } }, /* XSUM_XXH128_testdata[6199] */ + { 2066, 0x9E3779B185EBCA8DULL, { 0x73C5BE19951D450FULL, 0x74328132CC739B4CULL } }, /* XSUM_XXH128_testdata[6200] */ + { 2067, 0x0000000000000000ULL, { 0x093A7A97CB2C0C8BULL, 0x1F920C72E044FEC8ULL } }, /* XSUM_XXH128_testdata[6201] */ + { 2067, 0x000000009E3779B1ULL, { 0x791B615BC0A30901ULL, 0x37DF3D6F2533166AULL } }, /* XSUM_XXH128_testdata[6202] */ + { 2067, 0x9E3779B185EBCA8DULL, { 0x81DF286213071C56ULL, 0x85AAE06A93DEF3F5ULL } }, /* XSUM_XXH128_testdata[6203] */ + { 2068, 0x0000000000000000ULL, { 0xAA0061F7D290C673ULL, 0xD8DF2F2762BB7C9DULL } }, /* XSUM_XXH128_testdata[6204] */ + { 2068, 0x000000009E3779B1ULL, { 0x796E08FF78ED5EFEULL, 0xA3EF57347EB4A98AULL } }, /* XSUM_XXH128_testdata[6205] */ + { 2068, 0x9E3779B185EBCA8DULL, { 0xD7E52F51A9FA96A3ULL, 0xE8299E48757D0713ULL } }, /* XSUM_XXH128_testdata[6206] */ + { 2069, 0x0000000000000000ULL, { 0x19FDD32DE4083EE9ULL, 0x7C5087CE8A612552ULL } }, /* XSUM_XXH128_testdata[6207] */ + { 2069, 0x000000009E3779B1ULL, { 0x5BA76775212AB7BAULL, 0x6AF6CB5A25B02994ULL } }, /* XSUM_XXH128_testdata[6208] */ + { 2069, 0x9E3779B185EBCA8DULL, { 0xD5747C100812CFC0ULL, 0xDB4CD90164F3C7E9ULL } }, /* XSUM_XXH128_testdata[6209] */ + { 2070, 0x0000000000000000ULL, { 0x40DB06A00B5816C3ULL, 0x4B8A0C57FFD0FEF8ULL } }, /* XSUM_XXH128_testdata[6210] */ + { 2070, 0x000000009E3779B1ULL, { 0x22B186C05AD9710AULL, 0x5CD4EC53A49E19C5ULL } }, /* XSUM_XXH128_testdata[6211] */ + { 2070, 0x9E3779B185EBCA8DULL, { 0x9B3B101D222A4784ULL, 0x19C9543822AFF67AULL } }, /* XSUM_XXH128_testdata[6212] */ + { 2071, 0x0000000000000000ULL, { 0xA6C20034362C665CULL, 0x81560A2A086940F9ULL } }, /* XSUM_XXH128_testdata[6213] */ + { 2071, 0x000000009E3779B1ULL, { 0x0384ADF88899BA14ULL, 0xDA8E0D843B30EE00ULL } }, /* XSUM_XXH128_testdata[6214] */ + { 2071, 0x9E3779B185EBCA8DULL, { 0x81C4A52B28BBCF84ULL, 0xAB3A80A7457429BDULL } }, /* XSUM_XXH128_testdata[6215] */ + { 2072, 0x0000000000000000ULL, { 0xBC3968C3659D703AULL, 0x6E855E11C80E01E2ULL } }, /* XSUM_XXH128_testdata[6216] */ + { 2072, 0x000000009E3779B1ULL, { 0x7FB7EC75DBD0973CULL, 0xB8EF193718872B9CULL } }, /* XSUM_XXH128_testdata[6217] */ + { 2072, 0x9E3779B185EBCA8DULL, { 0xC0C0889D17F84BBBULL, 0x351081C49F8BAEC1ULL } }, /* XSUM_XXH128_testdata[6218] */ + { 2073, 0x0000000000000000ULL, { 0x80472139673A5CD7ULL, 0x518737725DBECA0DULL } }, /* XSUM_XXH128_testdata[6219] */ + { 2073, 0x000000009E3779B1ULL, { 0x2760C1DFF05A49D8ULL, 0x5E871420D0AAEAC7ULL } }, /* XSUM_XXH128_testdata[6220] */ + { 2073, 0x9E3779B185EBCA8DULL, { 0x3F97DB063DA7BEE4ULL, 0x443353E70707A1ECULL } }, /* XSUM_XXH128_testdata[6221] */ + { 2074, 0x0000000000000000ULL, { 0xFD34D0DA49DA6D7DULL, 0x9E460F9CC8B9701AULL } }, /* XSUM_XXH128_testdata[6222] */ + { 2074, 0x000000009E3779B1ULL, { 0xAD1AF74F74CD7088ULL, 0xC8FB0D93944BBC36ULL } }, /* XSUM_XXH128_testdata[6223] */ + { 2074, 0x9E3779B185EBCA8DULL, { 0x3E68AD6D11319979ULL, 0x244BCE0250D25846ULL } }, /* XSUM_XXH128_testdata[6224] */ + { 2075, 0x0000000000000000ULL, { 0x7BD1D5B89A83155AULL, 0xDD311355B512989EULL } }, /* XSUM_XXH128_testdata[6225] */ + { 2075, 0x000000009E3779B1ULL, { 0xF1A78EA0AC1F1139ULL, 0xE90BDADE383DA4A2ULL } }, /* XSUM_XXH128_testdata[6226] */ + { 2075, 0x9E3779B185EBCA8DULL, { 0x1A6BD0206FB411A9ULL, 0x3BCAC62838940B0EULL } }, /* XSUM_XXH128_testdata[6227] */ + { 2076, 0x0000000000000000ULL, { 0xDA10BBEC348E2389ULL, 0xCE5A1BC48FA8B097ULL } }, /* XSUM_XXH128_testdata[6228] */ + { 2076, 0x000000009E3779B1ULL, { 0x8FD4C8157BA3FCB5ULL, 0x0B57763958BB7DCFULL } }, /* XSUM_XXH128_testdata[6229] */ + { 2076, 0x9E3779B185EBCA8DULL, { 0xE2330C860120AEACULL, 0xAE39C73BAC1BC34BULL } }, /* XSUM_XXH128_testdata[6230] */ + { 2077, 0x0000000000000000ULL, { 0xAF3D4127CBF9214EULL, 0xCB66890E71971554ULL } }, /* XSUM_XXH128_testdata[6231] */ + { 2077, 0x000000009E3779B1ULL, { 0xF7866854F6D22D7DULL, 0x92FE506E210112A1ULL } }, /* XSUM_XXH128_testdata[6232] */ + { 2077, 0x9E3779B185EBCA8DULL, { 0x4F7C2583D69E104DULL, 0xF8CA19E2A24D54EEULL } }, /* XSUM_XXH128_testdata[6233] */ + { 2078, 0x0000000000000000ULL, { 0x308E1748E8FD7BABULL, 0x3FDBCDB012B31FB2ULL } }, /* XSUM_XXH128_testdata[6234] */ + { 2078, 0x000000009E3779B1ULL, { 0x5F2BE156567F1D9BULL, 0x3E4855D46EB48C1CULL } }, /* XSUM_XXH128_testdata[6235] */ + { 2078, 0x9E3779B185EBCA8DULL, { 0xDBDDC679BD81D759ULL, 0x3C5760BA698B30D6ULL } }, /* XSUM_XXH128_testdata[6236] */ + { 2079, 0x0000000000000000ULL, { 0xD7B03414F25CC611ULL, 0xBACA965C0825016DULL } }, /* XSUM_XXH128_testdata[6237] */ + { 2079, 0x000000009E3779B1ULL, { 0x28B6209325522105ULL, 0xBB7FD0A24C58558FULL } }, /* XSUM_XXH128_testdata[6238] */ + { 2079, 0x9E3779B185EBCA8DULL, { 0xE2613ED5DDF8DBC2ULL, 0x32E344E4704E0958ULL } }, /* XSUM_XXH128_testdata[6239] */ + { 2080, 0x0000000000000000ULL, { 0xC2A81FB74CEFD2BAULL, 0x09AEF3B8C069E0C8ULL } }, /* XSUM_XXH128_testdata[6240] */ + { 2080, 0x000000009E3779B1ULL, { 0x9D5A93F2F2FBCF64ULL, 0x0C817549B6997824ULL } }, /* XSUM_XXH128_testdata[6241] */ + { 2080, 0x9E3779B185EBCA8DULL, { 0x655245AC6C0DCDB3ULL, 0x2C769FFCC5E76F58ULL } }, /* XSUM_XXH128_testdata[6242] */ + { 2081, 0x0000000000000000ULL, { 0x9962F6C0C859565CULL, 0x4B6690AB519BF258ULL } }, /* XSUM_XXH128_testdata[6243] */ + { 2081, 0x000000009E3779B1ULL, { 0xD34C094BA014489CULL, 0x41E0E9BB9F99BA72ULL } }, /* XSUM_XXH128_testdata[6244] */ + { 2081, 0x9E3779B185EBCA8DULL, { 0x9B9FB1A37896DF4DULL, 0x13CA3DA383343F08ULL } }, /* XSUM_XXH128_testdata[6245] */ + { 2082, 0x0000000000000000ULL, { 0x525341066666BA5AULL, 0x74A481716E978388ULL } }, /* XSUM_XXH128_testdata[6246] */ + { 2082, 0x000000009E3779B1ULL, { 0x3E428791DCE5D4D5ULL, 0xB2C6D6CD44D4B717ULL } }, /* XSUM_XXH128_testdata[6247] */ + { 2082, 0x9E3779B185EBCA8DULL, { 0x3EFF2BB5FC448FE4ULL, 0x08ACB2F4418BD49EULL } }, /* XSUM_XXH128_testdata[6248] */ + { 2083, 0x0000000000000000ULL, { 0x36B8B23A64BC0BFEULL, 0x57B10AD95C245172ULL } }, /* XSUM_XXH128_testdata[6249] */ + { 2083, 0x000000009E3779B1ULL, { 0xE1E5C3B62265D4A8ULL, 0xECE52EDFC1E78578ULL } }, /* XSUM_XXH128_testdata[6250] */ + { 2083, 0x9E3779B185EBCA8DULL, { 0xD61D1388A367C6FFULL, 0x2BFAA8764C2798A6ULL } }, /* XSUM_XXH128_testdata[6251] */ + { 2084, 0x0000000000000000ULL, { 0x71CB8A8E594C1595ULL, 0x502FAB98DC15F41AULL } }, /* XSUM_XXH128_testdata[6252] */ + { 2084, 0x000000009E3779B1ULL, { 0xC7A21B4E0821AE77ULL, 0x2A127C4990E003A4ULL } }, /* XSUM_XXH128_testdata[6253] */ + { 2084, 0x9E3779B185EBCA8DULL, { 0x2A95CE9C889F2A77ULL, 0x77F87D8E2E9D8CCAULL } }, /* XSUM_XXH128_testdata[6254] */ + { 2085, 0x0000000000000000ULL, { 0x12C8C4DC92EC613EULL, 0x6D709C61C4B22A28ULL } }, /* XSUM_XXH128_testdata[6255] */ + { 2085, 0x000000009E3779B1ULL, { 0xB2A3A60BA50E694AULL, 0x9C19134F312D7D49ULL } }, /* XSUM_XXH128_testdata[6256] */ + { 2085, 0x9E3779B185EBCA8DULL, { 0x94B61038AB08733EULL, 0x67D990E96275C43EULL } }, /* XSUM_XXH128_testdata[6257] */ + { 2086, 0x0000000000000000ULL, { 0xB2DF30FBDB219EE1ULL, 0xAC9B06C21BC6E01CULL } }, /* XSUM_XXH128_testdata[6258] */ + { 2086, 0x000000009E3779B1ULL, { 0x290071DC1DE222BFULL, 0xF9382C9B469350B1ULL } }, /* XSUM_XXH128_testdata[6259] */ + { 2086, 0x9E3779B185EBCA8DULL, { 0x23C0CEFFC455E0D7ULL, 0xAF6A6FD4DEAC9B70ULL } }, /* XSUM_XXH128_testdata[6260] */ + { 2087, 0x0000000000000000ULL, { 0xE5F168DADC1D1412ULL, 0xA4009F3079BA29DFULL } }, /* XSUM_XXH128_testdata[6261] */ + { 2087, 0x000000009E3779B1ULL, { 0x21ECE46550D10E92ULL, 0x342212199D909B34ULL } }, /* XSUM_XXH128_testdata[6262] */ + { 2087, 0x9E3779B185EBCA8DULL, { 0xB76FC418A3663ACCULL, 0x073A226497F81356ULL } }, /* XSUM_XXH128_testdata[6263] */ + { 2088, 0x0000000000000000ULL, { 0x4605E9A359439A0AULL, 0xB552FA5FBC2008C3ULL } }, /* XSUM_XXH128_testdata[6264] */ + { 2088, 0x000000009E3779B1ULL, { 0x44C9CA3AAD81DA45ULL, 0xCB913D9AC717DFCBULL } }, /* XSUM_XXH128_testdata[6265] */ + { 2088, 0x9E3779B185EBCA8DULL, { 0xF5C043EDD0AAB1BFULL, 0x985478623A7F871AULL } }, /* XSUM_XXH128_testdata[6266] */ + { 2089, 0x0000000000000000ULL, { 0xC975BD5F02A26C46ULL, 0x40780F08D7FE9F92ULL } }, /* XSUM_XXH128_testdata[6267] */ + { 2089, 0x000000009E3779B1ULL, { 0x7965D386BFD80E68ULL, 0xCD56647C0850EC82ULL } }, /* XSUM_XXH128_testdata[6268] */ + { 2089, 0x9E3779B185EBCA8DULL, { 0x71AB75BD28471867ULL, 0x06868420B97E0580ULL } }, /* XSUM_XXH128_testdata[6269] */ + { 2090, 0x0000000000000000ULL, { 0x486A48B0AC95CEAEULL, 0x2D24404B834501C4ULL } }, /* XSUM_XXH128_testdata[6270] */ + { 2090, 0x000000009E3779B1ULL, { 0x010FB8B9A3D74536ULL, 0x7F51788CFB5FDAADULL } }, /* XSUM_XXH128_testdata[6271] */ + { 2090, 0x9E3779B185EBCA8DULL, { 0xA94D39ED402F7DD8ULL, 0xD1402F35B8D2FC13ULL } }, /* XSUM_XXH128_testdata[6272] */ + { 2091, 0x0000000000000000ULL, { 0xF1374E8DDFF89DA9ULL, 0x9679298F00604BE9ULL } }, /* XSUM_XXH128_testdata[6273] */ + { 2091, 0x000000009E3779B1ULL, { 0x3C0CB796310895C4ULL, 0xBCBF304A1D6F7265ULL } }, /* XSUM_XXH128_testdata[6274] */ + { 2091, 0x9E3779B185EBCA8DULL, { 0x6E49515D91B82E7BULL, 0x667FDCF9CCBE590DULL } }, /* XSUM_XXH128_testdata[6275] */ + { 2092, 0x0000000000000000ULL, { 0x455DD31697D63F7BULL, 0xB40DD7A24C8C15FFULL } }, /* XSUM_XXH128_testdata[6276] */ + { 2092, 0x000000009E3779B1ULL, { 0xC7BE24FF6700E449ULL, 0xEC9DCD5700689611ULL } }, /* XSUM_XXH128_testdata[6277] */ + { 2092, 0x9E3779B185EBCA8DULL, { 0xC56E1C2C10929BBEULL, 0x0C8EF3A8F918AF57ULL } }, /* XSUM_XXH128_testdata[6278] */ + { 2093, 0x0000000000000000ULL, { 0x9E269F2E5C9FB3E6ULL, 0x21CDA711E6CCBB41ULL } }, /* XSUM_XXH128_testdata[6279] */ + { 2093, 0x000000009E3779B1ULL, { 0xF04CC2A8212A0AD4ULL, 0x2840C434106E653EULL } }, /* XSUM_XXH128_testdata[6280] */ + { 2093, 0x9E3779B185EBCA8DULL, { 0x24341F87A9B010C3ULL, 0x34C42EE414554421ULL } }, /* XSUM_XXH128_testdata[6281] */ + { 2094, 0x0000000000000000ULL, { 0x4D9F684C2328F60FULL, 0xF06EAA76AB3AE7F1ULL } }, /* XSUM_XXH128_testdata[6282] */ + { 2094, 0x000000009E3779B1ULL, { 0x4BB21115657C5461ULL, 0x9B8179AE9C893838ULL } }, /* XSUM_XXH128_testdata[6283] */ + { 2094, 0x9E3779B185EBCA8DULL, { 0x8D5BA10F136BBBDEULL, 0x4833810FFB3B39C3ULL } }, /* XSUM_XXH128_testdata[6284] */ + { 2095, 0x0000000000000000ULL, { 0xB4E9526C757FB3E0ULL, 0x0193E7409F7D1A02ULL } }, /* XSUM_XXH128_testdata[6285] */ + { 2095, 0x000000009E3779B1ULL, { 0x4DF1B140534A685AULL, 0x954F98E3CCC6F0D2ULL } }, /* XSUM_XXH128_testdata[6286] */ + { 2095, 0x9E3779B185EBCA8DULL, { 0x6704B0AA74D6E9D8ULL, 0xB63C9D56630CA76DULL } }, /* XSUM_XXH128_testdata[6287] */ + { 2096, 0x0000000000000000ULL, { 0xDC98D78702F8D241ULL, 0xB8E7266DAF70CBADULL } }, /* XSUM_XXH128_testdata[6288] */ + { 2096, 0x000000009E3779B1ULL, { 0x422722BF2D7F1DE8ULL, 0xEE0AAC0C3F0CD80CULL } }, /* XSUM_XXH128_testdata[6289] */ + { 2096, 0x9E3779B185EBCA8DULL, { 0xC176C1D45D3D3F78ULL, 0x32EA2ED0BEA1641BULL } }, /* XSUM_XXH128_testdata[6290] */ + { 2097, 0x0000000000000000ULL, { 0x3EB8B58346323505ULL, 0x9E20DCDE7F9C0346ULL } }, /* XSUM_XXH128_testdata[6291] */ + { 2097, 0x000000009E3779B1ULL, { 0xDE3BEC79459729FAULL, 0x1041842AA6822484ULL } }, /* XSUM_XXH128_testdata[6292] */ + { 2097, 0x9E3779B185EBCA8DULL, { 0x34C3281A05464634ULL, 0x54F6F9DE1372A643ULL } }, /* XSUM_XXH128_testdata[6293] */ + { 2098, 0x0000000000000000ULL, { 0xD88C0787632D5D70ULL, 0xCC472361F253A745ULL } }, /* XSUM_XXH128_testdata[6294] */ + { 2098, 0x000000009E3779B1ULL, { 0xE9F6427BB34C8241ULL, 0x0FF5290059F7F8A0ULL } }, /* XSUM_XXH128_testdata[6295] */ + { 2098, 0x9E3779B185EBCA8DULL, { 0xDFE1DB342D29C290ULL, 0x77129E358E077407ULL } }, /* XSUM_XXH128_testdata[6296] */ + { 2099, 0x0000000000000000ULL, { 0xC6B9D9B3FC9AC765ULL, 0xAD48AE0A0951DC52ULL } }, /* XSUM_XXH128_testdata[6297] */ + { 2099, 0x000000009E3779B1ULL, { 0xA31129D68229F7D8ULL, 0x5F9F4B5F1E3A3BE4ULL } }, /* XSUM_XXH128_testdata[6298] */ + { 2099, 0x9E3779B185EBCA8DULL, { 0x184F316843663974ULL, 0xEF4C13B1D2FDAD6EULL } }, /* XSUM_XXH128_testdata[6299] */ + { 2100, 0x0000000000000000ULL, { 0xBE3D249D76B7F785ULL, 0xD0E46371EEF1591BULL } }, /* XSUM_XXH128_testdata[6300] */ + { 2100, 0x000000009E3779B1ULL, { 0x76F61DFAB377E5FEULL, 0x35F17EB3AA751F66ULL } }, /* XSUM_XXH128_testdata[6301] */ + { 2100, 0x9E3779B185EBCA8DULL, { 0x77EBCB5E10693AA4ULL, 0xA648DA7503EFCD40ULL } }, /* XSUM_XXH128_testdata[6302] */ + { 2101, 0x0000000000000000ULL, { 0x581217AD4076A60DULL, 0x829CA9B6610B0B38ULL } }, /* XSUM_XXH128_testdata[6303] */ + { 2101, 0x000000009E3779B1ULL, { 0xCAFD1EFDA5FC13B8ULL, 0xE12B5D339C882E2BULL } }, /* XSUM_XXH128_testdata[6304] */ + { 2101, 0x9E3779B185EBCA8DULL, { 0xE0038FDEB381E113ULL, 0xD61DC7DCB117B32AULL } }, /* XSUM_XXH128_testdata[6305] */ + { 2102, 0x0000000000000000ULL, { 0xF4892859B6CEA530ULL, 0x80D20DE65E2415C3ULL } }, /* XSUM_XXH128_testdata[6306] */ + { 2102, 0x000000009E3779B1ULL, { 0xF965CC21B830F32CULL, 0xB4C6A780AD5B0783ULL } }, /* XSUM_XXH128_testdata[6307] */ + { 2102, 0x9E3779B185EBCA8DULL, { 0x26585E897E7ED9D9ULL, 0x8F14A5730BA53167ULL } }, /* XSUM_XXH128_testdata[6308] */ + { 2103, 0x0000000000000000ULL, { 0xBE7381B819FACD77ULL, 0x0A8BF256348B8C03ULL } }, /* XSUM_XXH128_testdata[6309] */ + { 2103, 0x000000009E3779B1ULL, { 0x4885B51383BB2E56ULL, 0x94A1C8530746B126ULL } }, /* XSUM_XXH128_testdata[6310] */ + { 2103, 0x9E3779B185EBCA8DULL, { 0x7BC39431F4923940ULL, 0xA3A50C5F33CECFCEULL } }, /* XSUM_XXH128_testdata[6311] */ + { 2104, 0x0000000000000000ULL, { 0x818322F0EA0E23CBULL, 0x4C57ACE75FD09B4BULL } }, /* XSUM_XXH128_testdata[6312] */ + { 2104, 0x000000009E3779B1ULL, { 0xBB0D3D016D5264BBULL, 0xE7E4BDFA83AB0939ULL } }, /* XSUM_XXH128_testdata[6313] */ + { 2104, 0x9E3779B185EBCA8DULL, { 0xC8CF92ABAD383682ULL, 0x841171B5E9AFCB01ULL } }, /* XSUM_XXH128_testdata[6314] */ + { 2105, 0x0000000000000000ULL, { 0xB39F7FE5BBEDC6F9ULL, 0xBB1361876F5C47E9ULL } }, /* XSUM_XXH128_testdata[6315] */ + { 2105, 0x000000009E3779B1ULL, { 0x560B8284E49AB8F4ULL, 0xEAB769139A0D2F70ULL } }, /* XSUM_XXH128_testdata[6316] */ + { 2105, 0x9E3779B185EBCA8DULL, { 0xCB42EB694CEED592ULL, 0x28A1EFB1DF1DEDA9ULL } }, /* XSUM_XXH128_testdata[6317] */ + { 2106, 0x0000000000000000ULL, { 0x042E6EC5695BE98BULL, 0xF111DA96127135D8ULL } }, /* XSUM_XXH128_testdata[6318] */ + { 2106, 0x000000009E3779B1ULL, { 0xD91C6EE3F4FCD278ULL, 0x8AE3E71C5E65C990ULL } }, /* XSUM_XXH128_testdata[6319] */ + { 2106, 0x9E3779B185EBCA8DULL, { 0xA221F9494506A44EULL, 0x905B0FB412B2047EULL } }, /* XSUM_XXH128_testdata[6320] */ + { 2107, 0x0000000000000000ULL, { 0xC0D47A01E5589883ULL, 0xE08744F9D6C1D532ULL } }, /* XSUM_XXH128_testdata[6321] */ + { 2107, 0x000000009E3779B1ULL, { 0x5C7799DB544A053EULL, 0xA99682B0A0F90B39ULL } }, /* XSUM_XXH128_testdata[6322] */ + { 2107, 0x9E3779B185EBCA8DULL, { 0x5FA98BEE4E230E1EULL, 0xE8DC000FEA0CCD6AULL } }, /* XSUM_XXH128_testdata[6323] */ + { 2108, 0x0000000000000000ULL, { 0x9497E3F05B3CCAEDULL, 0xEB7CDC4E51F78BE5ULL } }, /* XSUM_XXH128_testdata[6324] */ + { 2108, 0x000000009E3779B1ULL, { 0x80F500523AFE9B39ULL, 0xF6D5AF4B597477E9ULL } }, /* XSUM_XXH128_testdata[6325] */ + { 2108, 0x9E3779B185EBCA8DULL, { 0xD58EA5004F550F86ULL, 0x3EDF1D210A69510BULL } }, /* XSUM_XXH128_testdata[6326] */ + { 2109, 0x0000000000000000ULL, { 0xDA51073DBF6CD9A1ULL, 0x589FE43968B333B1ULL } }, /* XSUM_XXH128_testdata[6327] */ + { 2109, 0x000000009E3779B1ULL, { 0x938F82C333005241ULL, 0x9B68A6C68156A2E3ULL } }, /* XSUM_XXH128_testdata[6328] */ + { 2109, 0x9E3779B185EBCA8DULL, { 0x45BE1DFC68CD3B56ULL, 0xF67E3F3077394D26ULL } }, /* XSUM_XXH128_testdata[6329] */ + { 2110, 0x0000000000000000ULL, { 0xD3E69C0BE984921DULL, 0x328DF0F8161B1607ULL } }, /* XSUM_XXH128_testdata[6330] */ + { 2110, 0x000000009E3779B1ULL, { 0x2303AFEE736532CEULL, 0x740C41A326A38DC0ULL } }, /* XSUM_XXH128_testdata[6331] */ + { 2110, 0x9E3779B185EBCA8DULL, { 0x88140AA8A0FCE957ULL, 0x91C2B6688A6A6A8EULL } }, /* XSUM_XXH128_testdata[6332] */ + { 2111, 0x0000000000000000ULL, { 0x161BC831576C278AULL, 0xF8027C5D3F6DD639ULL } }, /* XSUM_XXH128_testdata[6333] */ + { 2111, 0x000000009E3779B1ULL, { 0xFD671CD65ADF1E11ULL, 0x61AF147A079E51AEULL } }, /* XSUM_XXH128_testdata[6334] */ + { 2111, 0x9E3779B185EBCA8DULL, { 0x7DF29981A9D61E52ULL, 0x2F5AB3DC3092374FULL } }, /* XSUM_XXH128_testdata[6335] */ + { 2112, 0x0000000000000000ULL, { 0x7C33C86D9E6A8C39ULL, 0xA7761ECB840C30D0ULL } }, /* XSUM_XXH128_testdata[6336] */ + { 2112, 0x000000009E3779B1ULL, { 0x07D112187F830175ULL, 0x756A7A6AF1570C1DULL } }, /* XSUM_XXH128_testdata[6337] */ + { 2112, 0x9E3779B185EBCA8DULL, { 0x084352D520AF2E0CULL, 0xBF659D4C2D15F03EULL } }, /* XSUM_XXH128_testdata[6338] */ + { 2113, 0x0000000000000000ULL, { 0x30A8AA601425D0BCULL, 0x607C5C2E55AC396AULL } }, /* XSUM_XXH128_testdata[6339] */ + { 2113, 0x000000009E3779B1ULL, { 0xBAE6FAD6F1A45740ULL, 0xA7D0F67AC742EA19ULL } }, /* XSUM_XXH128_testdata[6340] */ + { 2113, 0x9E3779B185EBCA8DULL, { 0x59803CBF83152382ULL, 0xE4A215508CFB625EULL } }, /* XSUM_XXH128_testdata[6341] */ + { 2114, 0x0000000000000000ULL, { 0x7E7FDCCEB5A269A5ULL, 0xFC907AB502865671ULL } }, /* XSUM_XXH128_testdata[6342] */ + { 2114, 0x000000009E3779B1ULL, { 0xB10F7A896ACA96CBULL, 0xF66231B19DFA7276ULL } }, /* XSUM_XXH128_testdata[6343] */ + { 2114, 0x9E3779B185EBCA8DULL, { 0x337DE3C45901BC85ULL, 0xE486106CDA1EF632ULL } }, /* XSUM_XXH128_testdata[6344] */ + { 2115, 0x0000000000000000ULL, { 0xE819B9E23816758CULL, 0x85FCDC33BB393DE0ULL } }, /* XSUM_XXH128_testdata[6345] */ + { 2115, 0x000000009E3779B1ULL, { 0xB37BF62BEEA0D68FULL, 0x5B4106F87337415FULL } }, /* XSUM_XXH128_testdata[6346] */ + { 2115, 0x9E3779B185EBCA8DULL, { 0xDD75D078BAEE864DULL, 0x2227B2485E310D6DULL } }, /* XSUM_XXH128_testdata[6347] */ + { 2116, 0x0000000000000000ULL, { 0x0C443A18F53B58DEULL, 0x0FFAF56199A443A5ULL } }, /* XSUM_XXH128_testdata[6348] */ + { 2116, 0x000000009E3779B1ULL, { 0x8B02317177C6B482ULL, 0x5A1818275CFA55A7ULL } }, /* XSUM_XXH128_testdata[6349] */ + { 2116, 0x9E3779B185EBCA8DULL, { 0xDF99C6BF79C66AB8ULL, 0xFD46351FD813FB79ULL } }, /* XSUM_XXH128_testdata[6350] */ + { 2117, 0x0000000000000000ULL, { 0xCD60C473A00CF1ABULL, 0xFFAB2FD307FAF5D4ULL } }, /* XSUM_XXH128_testdata[6351] */ + { 2117, 0x000000009E3779B1ULL, { 0x6FA8524F2E1F55A1ULL, 0x0B30C45544D86FE1ULL } }, /* XSUM_XXH128_testdata[6352] */ + { 2117, 0x9E3779B185EBCA8DULL, { 0xD00D04FBD50B0769ULL, 0x75A553C8B2E548FDULL } }, /* XSUM_XXH128_testdata[6353] */ + { 2118, 0x0000000000000000ULL, { 0x3FA47D531B86C5A6ULL, 0x556B1861A9B7232EULL } }, /* XSUM_XXH128_testdata[6354] */ + { 2118, 0x000000009E3779B1ULL, { 0xCE1B8DE13D9DE9D1ULL, 0xE1338801914E157DULL } }, /* XSUM_XXH128_testdata[6355] */ + { 2118, 0x9E3779B185EBCA8DULL, { 0xF0CF23296153A098ULL, 0x6837261FDABCA4DBULL } }, /* XSUM_XXH128_testdata[6356] */ + { 2119, 0x0000000000000000ULL, { 0x2B01DC788CB5E37AULL, 0xE7078364A0B6BB7AULL } }, /* XSUM_XXH128_testdata[6357] */ + { 2119, 0x000000009E3779B1ULL, { 0x905E4816BA3D4736ULL, 0xFCC602CBA504F41EULL } }, /* XSUM_XXH128_testdata[6358] */ + { 2119, 0x9E3779B185EBCA8DULL, { 0xE463ADDBA6510841ULL, 0x614F15FBB73E4604ULL } }, /* XSUM_XXH128_testdata[6359] */ + { 2120, 0x0000000000000000ULL, { 0x04771E39BE145D9AULL, 0xE65E358830A35165ULL } }, /* XSUM_XXH128_testdata[6360] */ + { 2120, 0x000000009E3779B1ULL, { 0xF7244B5296F66411ULL, 0xDEDA51C5AD3F0EB4ULL } }, /* XSUM_XXH128_testdata[6361] */ + { 2120, 0x9E3779B185EBCA8DULL, { 0x751EC7E4FCAA6325ULL, 0x24DD03824C3FFC85ULL } }, /* XSUM_XXH128_testdata[6362] */ + { 2121, 0x0000000000000000ULL, { 0xD633B712A74BE039ULL, 0x0FA3A58A264E124BULL } }, /* XSUM_XXH128_testdata[6363] */ + { 2121, 0x000000009E3779B1ULL, { 0x5398B52F7BFD62EFULL, 0xCAC3A4787847025FULL } }, /* XSUM_XXH128_testdata[6364] */ + { 2121, 0x9E3779B185EBCA8DULL, { 0xF9724759FA9525B6ULL, 0x3DF333608D92A321ULL } }, /* XSUM_XXH128_testdata[6365] */ + { 2122, 0x0000000000000000ULL, { 0x24AE72CDA733DF48ULL, 0x24AF2FB7BAA1FAE7ULL } }, /* XSUM_XXH128_testdata[6366] */ + { 2122, 0x000000009E3779B1ULL, { 0xBD9E4C0F0E00477BULL, 0xAEB4ECADFCE526B5ULL } }, /* XSUM_XXH128_testdata[6367] */ + { 2122, 0x9E3779B185EBCA8DULL, { 0xBA2240309EC1C44CULL, 0x813A0ECA37B8C4FBULL } }, /* XSUM_XXH128_testdata[6368] */ + { 2123, 0x0000000000000000ULL, { 0x47102F1ED6BB4FE4ULL, 0x7EC1E0FCB9FBF497ULL } }, /* XSUM_XXH128_testdata[6369] */ + { 2123, 0x000000009E3779B1ULL, { 0xC9F43082B6565F0CULL, 0xAA198712D1B152B8ULL } }, /* XSUM_XXH128_testdata[6370] */ + { 2123, 0x9E3779B185EBCA8DULL, { 0x20D846BBF8E4C6ABULL, 0x0AF388237653CE02ULL } }, /* XSUM_XXH128_testdata[6371] */ + { 2124, 0x0000000000000000ULL, { 0x71CBB4B220C0FFCEULL, 0x0F7B71332BD8180BULL } }, /* XSUM_XXH128_testdata[6372] */ + { 2124, 0x000000009E3779B1ULL, { 0x49F34CB69594C9B5ULL, 0xE8FB7D1AC755940FULL } }, /* XSUM_XXH128_testdata[6373] */ + { 2124, 0x9E3779B185EBCA8DULL, { 0x1CEE7903F9FF9D6FULL, 0x0610FA83ADD0C69EULL } }, /* XSUM_XXH128_testdata[6374] */ + { 2125, 0x0000000000000000ULL, { 0x85DF5C3938DF2DB0ULL, 0xBBA0467DDCCC8984ULL } }, /* XSUM_XXH128_testdata[6375] */ + { 2125, 0x000000009E3779B1ULL, { 0x877373AD047F162CULL, 0x57B93E439AEFDA29ULL } }, /* XSUM_XXH128_testdata[6376] */ + { 2125, 0x9E3779B185EBCA8DULL, { 0xB9AD29A35A707ABDULL, 0x9A6FDC625B43705FULL } }, /* XSUM_XXH128_testdata[6377] */ + { 2126, 0x0000000000000000ULL, { 0x54B9B4C8D1D2F8E1ULL, 0x5503A60F716B4FB1ULL } }, /* XSUM_XXH128_testdata[6378] */ + { 2126, 0x000000009E3779B1ULL, { 0xF545413B23429917ULL, 0xDC0F17B0D7EB5F88ULL } }, /* XSUM_XXH128_testdata[6379] */ + { 2126, 0x9E3779B185EBCA8DULL, { 0x9C159E298C16AF55ULL, 0xFF80C91472FE519CULL } }, /* XSUM_XXH128_testdata[6380] */ + { 2127, 0x0000000000000000ULL, { 0xC4DA29D22439D9AAULL, 0x3D2FA9070C194421ULL } }, /* XSUM_XXH128_testdata[6381] */ + { 2127, 0x000000009E3779B1ULL, { 0x351FCC2B59FC001AULL, 0x5FC9B3FA8DF22161ULL } }, /* XSUM_XXH128_testdata[6382] */ + { 2127, 0x9E3779B185EBCA8DULL, { 0xC77E30862645CE42ULL, 0x0670AAF4D15C4016ULL } }, /* XSUM_XXH128_testdata[6383] */ + { 2128, 0x0000000000000000ULL, { 0xFAD97E0CDDA51E95ULL, 0xD263F3675B73D80DULL } }, /* XSUM_XXH128_testdata[6384] */ + { 2128, 0x000000009E3779B1ULL, { 0xD350D4677D748CCCULL, 0xEA080481D2D13440ULL } }, /* XSUM_XXH128_testdata[6385] */ + { 2128, 0x9E3779B185EBCA8DULL, { 0xB9FC31CE38AFED3FULL, 0xFC6AB110B8E8407BULL } }, /* XSUM_XXH128_testdata[6386] */ + { 2129, 0x0000000000000000ULL, { 0x5F33D37689AAAB61ULL, 0xB7E5CD69BBD2FB1EULL } }, /* XSUM_XXH128_testdata[6387] */ + { 2129, 0x000000009E3779B1ULL, { 0x373141748917AA93ULL, 0x2F62DFC83B064D15ULL } }, /* XSUM_XXH128_testdata[6388] */ + { 2129, 0x9E3779B185EBCA8DULL, { 0xD4AF6B7AE8C90ABBULL, 0x21735F238987442AULL } }, /* XSUM_XXH128_testdata[6389] */ + { 2130, 0x0000000000000000ULL, { 0x4A6C83F4986D25ABULL, 0x85BBAC402C299227ULL } }, /* XSUM_XXH128_testdata[6390] */ + { 2130, 0x000000009E3779B1ULL, { 0x2B510962653BC1B1ULL, 0x67EC7C9945374FE9ULL } }, /* XSUM_XXH128_testdata[6391] */ + { 2130, 0x9E3779B185EBCA8DULL, { 0xDA5B988675FEDBDCULL, 0xB7E4003FB4DD01F4ULL } }, /* XSUM_XXH128_testdata[6392] */ + { 2131, 0x0000000000000000ULL, { 0xB2FA919BEF281372ULL, 0x5FC157CE182E9864ULL } }, /* XSUM_XXH128_testdata[6393] */ + { 2131, 0x000000009E3779B1ULL, { 0x58E8B6A70F6DC071ULL, 0x0E6D5510C52BAEBBULL } }, /* XSUM_XXH128_testdata[6394] */ + { 2131, 0x9E3779B185EBCA8DULL, { 0x68F128D43DE48A69ULL, 0x0110F6770ABAF523ULL } }, /* XSUM_XXH128_testdata[6395] */ + { 2132, 0x0000000000000000ULL, { 0x8CA360DC297568D8ULL, 0x6DA9168F8F44E05CULL } }, /* XSUM_XXH128_testdata[6396] */ + { 2132, 0x000000009E3779B1ULL, { 0x63A141FBE45BA8EDULL, 0x0232873D1A6BFEC0ULL } }, /* XSUM_XXH128_testdata[6397] */ + { 2132, 0x9E3779B185EBCA8DULL, { 0xD9EB5BFF99512869ULL, 0x471751DEE5A0D91DULL } }, /* XSUM_XXH128_testdata[6398] */ + { 2133, 0x0000000000000000ULL, { 0xCFCEFDAEACFA0B96ULL, 0x5C7E638EC0C4A244ULL } }, /* XSUM_XXH128_testdata[6399] */ + { 2133, 0x000000009E3779B1ULL, { 0x034EDDC0C258F077ULL, 0x241705C904858B7DULL } }, /* XSUM_XXH128_testdata[6400] */ + { 2133, 0x9E3779B185EBCA8DULL, { 0x1DB7821732C9B28DULL, 0x1DEE44CF80D064D0ULL } }, /* XSUM_XXH128_testdata[6401] */ + { 2134, 0x0000000000000000ULL, { 0xB2CED2B335371695ULL, 0xE48978C83FBAD734ULL } }, /* XSUM_XXH128_testdata[6402] */ + { 2134, 0x000000009E3779B1ULL, { 0x4BA9D20382EFB7FCULL, 0x9B30935AF60CBD36ULL } }, /* XSUM_XXH128_testdata[6403] */ + { 2134, 0x9E3779B185EBCA8DULL, { 0x0D4487991C690B4CULL, 0x784BC77203D01BDAULL } }, /* XSUM_XXH128_testdata[6404] */ + { 2135, 0x0000000000000000ULL, { 0x10D459B4E7BB16F5ULL, 0xB2EDF8F4864AE131ULL } }, /* XSUM_XXH128_testdata[6405] */ + { 2135, 0x000000009E3779B1ULL, { 0xA0E747B3969469A0ULL, 0x838BEFCDB6F74902ULL } }, /* XSUM_XXH128_testdata[6406] */ + { 2135, 0x9E3779B185EBCA8DULL, { 0x474A36D98F36F4A0ULL, 0xFA28CE4D8610F5C0ULL } }, /* XSUM_XXH128_testdata[6407] */ + { 2136, 0x0000000000000000ULL, { 0x259F3610C2E2A640ULL, 0x41B55009DF61E8ACULL } }, /* XSUM_XXH128_testdata[6408] */ + { 2136, 0x000000009E3779B1ULL, { 0xD7225F8CA97DEE61ULL, 0xD7472077EBF24F2FULL } }, /* XSUM_XXH128_testdata[6409] */ + { 2136, 0x9E3779B185EBCA8DULL, { 0x9131CCB2D652847EULL, 0x96CF2282C2D696D1ULL } }, /* XSUM_XXH128_testdata[6410] */ + { 2137, 0x0000000000000000ULL, { 0xF6E0287F54678C67ULL, 0xFCA49B026C7E7498ULL } }, /* XSUM_XXH128_testdata[6411] */ + { 2137, 0x000000009E3779B1ULL, { 0xEAC83C203F4F4C54ULL, 0x39E85EB13F4B4409ULL } }, /* XSUM_XXH128_testdata[6412] */ + { 2137, 0x9E3779B185EBCA8DULL, { 0x34202D0AD2030DF8ULL, 0x4647AE0778CCD79BULL } }, /* XSUM_XXH128_testdata[6413] */ + { 2138, 0x0000000000000000ULL, { 0x20B9BD1B573C9654ULL, 0x6056811F8F029144ULL } }, /* XSUM_XXH128_testdata[6414] */ + { 2138, 0x000000009E3779B1ULL, { 0x1C04522ACDD4FD2BULL, 0x918B63F7B295131FULL } }, /* XSUM_XXH128_testdata[6415] */ + { 2138, 0x9E3779B185EBCA8DULL, { 0x7B66F99550C2A5C0ULL, 0xB31E5104B70E74D2ULL } }, /* XSUM_XXH128_testdata[6416] */ + { 2139, 0x0000000000000000ULL, { 0xE7ADB21AC122B16CULL, 0x4BEDF27E886AF793ULL } }, /* XSUM_XXH128_testdata[6417] */ + { 2139, 0x000000009E3779B1ULL, { 0x7362055B9C701279ULL, 0xF63C58B5EE922654ULL } }, /* XSUM_XXH128_testdata[6418] */ + { 2139, 0x9E3779B185EBCA8DULL, { 0xCC00DD72799C448CULL, 0x0184BBF0D737BF55ULL } }, /* XSUM_XXH128_testdata[6419] */ + { 2140, 0x0000000000000000ULL, { 0x8E95E0CF5838AE78ULL, 0x2E445618F66FA884ULL } }, /* XSUM_XXH128_testdata[6420] */ + { 2140, 0x000000009E3779B1ULL, { 0xF9034A7E5D4DB369ULL, 0x0E559665BAC30636ULL } }, /* XSUM_XXH128_testdata[6421] */ + { 2140, 0x9E3779B185EBCA8DULL, { 0x40F96A9363A78DD4ULL, 0xC0BFE9A20EFFD41EULL } }, /* XSUM_XXH128_testdata[6422] */ + { 2141, 0x0000000000000000ULL, { 0x714ED906850A3420ULL, 0xF1E424B71B2F5176ULL } }, /* XSUM_XXH128_testdata[6423] */ + { 2141, 0x000000009E3779B1ULL, { 0xD732147E1C54EAEDULL, 0x9E1DE1DB4F8FC67BULL } }, /* XSUM_XXH128_testdata[6424] */ + { 2141, 0x9E3779B185EBCA8DULL, { 0xFBF9450C1D1078C0ULL, 0xCC4435C92F978172ULL } }, /* XSUM_XXH128_testdata[6425] */ + { 2142, 0x0000000000000000ULL, { 0xD816E5FE3A8D6997ULL, 0x4E55AB3CE655100AULL } }, /* XSUM_XXH128_testdata[6426] */ + { 2142, 0x000000009E3779B1ULL, { 0xBC0C5CA38AE755D0ULL, 0x331C26CB20D8924FULL } }, /* XSUM_XXH128_testdata[6427] */ + { 2142, 0x9E3779B185EBCA8DULL, { 0x80ACC2D477815904ULL, 0xE555684EA2F5B33AULL } }, /* XSUM_XXH128_testdata[6428] */ + { 2143, 0x0000000000000000ULL, { 0xD9319C8C99EDEDEFULL, 0xBFA49ACD5C316209ULL } }, /* XSUM_XXH128_testdata[6429] */ + { 2143, 0x000000009E3779B1ULL, { 0xF3BBE629FDCBD407ULL, 0x858DF31F3E43A4DEULL } }, /* XSUM_XXH128_testdata[6430] */ + { 2143, 0x9E3779B185EBCA8DULL, { 0xA6569B7945AA5DDCULL, 0xB8106E84F1AF0FE8ULL } }, /* XSUM_XXH128_testdata[6431] */ + { 2144, 0x0000000000000000ULL, { 0x9CAD5B2A41F4BC3DULL, 0xE1804D575AC6B459ULL } }, /* XSUM_XXH128_testdata[6432] */ + { 2144, 0x000000009E3779B1ULL, { 0xAB3EC2A3F5726660ULL, 0xEFA0A6FC6AAC9DA8ULL } }, /* XSUM_XXH128_testdata[6433] */ + { 2144, 0x9E3779B185EBCA8DULL, { 0x61447524BEA2F61CULL, 0xF8E54D3E2B9240C9ULL } }, /* XSUM_XXH128_testdata[6434] */ + { 2145, 0x0000000000000000ULL, { 0x334D53022734D39BULL, 0xC015225AF1E73399ULL } }, /* XSUM_XXH128_testdata[6435] */ + { 2145, 0x000000009E3779B1ULL, { 0x5AA6C9E51FD533B0ULL, 0x3081056E06290603ULL } }, /* XSUM_XXH128_testdata[6436] */ + { 2145, 0x9E3779B185EBCA8DULL, { 0x8025C93720D8B0B4ULL, 0x2C117285DACA5FC2ULL } }, /* XSUM_XXH128_testdata[6437] */ + { 2146, 0x0000000000000000ULL, { 0xA72ED4637049BF03ULL, 0xF9F116E67F871C03ULL } }, /* XSUM_XXH128_testdata[6438] */ + { 2146, 0x000000009E3779B1ULL, { 0xF773523271108893ULL, 0x161CA9847E922231ULL } }, /* XSUM_XXH128_testdata[6439] */ + { 2146, 0x9E3779B185EBCA8DULL, { 0x9A059D5FC680F3D5ULL, 0xD1843CAA963421F5ULL } }, /* XSUM_XXH128_testdata[6440] */ + { 2147, 0x0000000000000000ULL, { 0x410742B45CC91D39ULL, 0x8D20383C8868B763ULL } }, /* XSUM_XXH128_testdata[6441] */ + { 2147, 0x000000009E3779B1ULL, { 0x4B3D2D02C9436571ULL, 0xC88DF40BB17E20FDULL } }, /* XSUM_XXH128_testdata[6442] */ + { 2147, 0x9E3779B185EBCA8DULL, { 0x9F357FDE2081FEDCULL, 0x6A46B2FB3EC4DA59ULL } }, /* XSUM_XXH128_testdata[6443] */ + { 2148, 0x0000000000000000ULL, { 0x2793899CDB4D8987ULL, 0x6C14FFF2D048A9CBULL } }, /* XSUM_XXH128_testdata[6444] */ + { 2148, 0x000000009E3779B1ULL, { 0x766A2E9494D815ECULL, 0x7F17343A6FA480C5ULL } }, /* XSUM_XXH128_testdata[6445] */ + { 2148, 0x9E3779B185EBCA8DULL, { 0xEEE157D27C8FE443ULL, 0xAC9417F0EAD539C7ULL } }, /* XSUM_XXH128_testdata[6446] */ + { 2149, 0x0000000000000000ULL, { 0x2B4C46687682EBC1ULL, 0xF113C61C2A275465ULL } }, /* XSUM_XXH128_testdata[6447] */ + { 2149, 0x000000009E3779B1ULL, { 0x51C21A9F2B19CF61ULL, 0x6285CC63008EC58CULL } }, /* XSUM_XXH128_testdata[6448] */ + { 2149, 0x9E3779B185EBCA8DULL, { 0x7F3359436EA05077ULL, 0xC6D62E69ADF193D6ULL } }, /* XSUM_XXH128_testdata[6449] */ + { 2150, 0x0000000000000000ULL, { 0xE3D5AA26C630C09CULL, 0xFB8266D0E51C66C2ULL } }, /* XSUM_XXH128_testdata[6450] */ + { 2150, 0x000000009E3779B1ULL, { 0xF8B31424BF6558E8ULL, 0x7483C0F42E8F2630ULL } }, /* XSUM_XXH128_testdata[6451] */ + { 2150, 0x9E3779B185EBCA8DULL, { 0x2A28BD92C2D4C989ULL, 0xF7A7140647EDB917ULL } }, /* XSUM_XXH128_testdata[6452] */ + { 2151, 0x0000000000000000ULL, { 0x0BB6A9EE880F6738ULL, 0xC2782F6BD49B09F2ULL } }, /* XSUM_XXH128_testdata[6453] */ + { 2151, 0x000000009E3779B1ULL, { 0xBD7257FE653811E4ULL, 0x3630159BA85170FFULL } }, /* XSUM_XXH128_testdata[6454] */ + { 2151, 0x9E3779B185EBCA8DULL, { 0x3A86A292CE8A02F5ULL, 0x0C973A83CEBFE777ULL } }, /* XSUM_XXH128_testdata[6455] */ + { 2152, 0x0000000000000000ULL, { 0xAB3F3D80E2CF4EC4ULL, 0x857586796A97F0B6ULL } }, /* XSUM_XXH128_testdata[6456] */ + { 2152, 0x000000009E3779B1ULL, { 0x887995FCA0AFBDD3ULL, 0x53227557D1292345ULL } }, /* XSUM_XXH128_testdata[6457] */ + { 2152, 0x9E3779B185EBCA8DULL, { 0xE9674006478DFD18ULL, 0x16E5D60B97B82DB8ULL } }, /* XSUM_XXH128_testdata[6458] */ + { 2153, 0x0000000000000000ULL, { 0x18B3B66AD0EA2DA8ULL, 0xD9457F88CB93307FULL } }, /* XSUM_XXH128_testdata[6459] */ + { 2153, 0x000000009E3779B1ULL, { 0xB4ABED08EC4722ABULL, 0x4EEFE733EB8EB1EBULL } }, /* XSUM_XXH128_testdata[6460] */ + { 2153, 0x9E3779B185EBCA8DULL, { 0x8BAF8A5439623563ULL, 0x703A223B1FFA98F8ULL } }, /* XSUM_XXH128_testdata[6461] */ + { 2154, 0x0000000000000000ULL, { 0x3F5F7F0DE2DAE083ULL, 0x5FD8CCF573C89755ULL } }, /* XSUM_XXH128_testdata[6462] */ + { 2154, 0x000000009E3779B1ULL, { 0xB93ACC8164174AB0ULL, 0x1B192FE471F719D4ULL } }, /* XSUM_XXH128_testdata[6463] */ + { 2154, 0x9E3779B185EBCA8DULL, { 0x1A757E35E405E699ULL, 0x3A4F7CA7984CF609ULL } }, /* XSUM_XXH128_testdata[6464] */ + { 2155, 0x0000000000000000ULL, { 0x0E026BA8C61DF56AULL, 0x6B2618D44F7686E0ULL } }, /* XSUM_XXH128_testdata[6465] */ + { 2155, 0x000000009E3779B1ULL, { 0x480E24762A927885ULL, 0xAA40470BBDEDB365ULL } }, /* XSUM_XXH128_testdata[6466] */ + { 2155, 0x9E3779B185EBCA8DULL, { 0x471C27F9B37D6851ULL, 0x9B4D5166BA153653ULL } }, /* XSUM_XXH128_testdata[6467] */ + { 2156, 0x0000000000000000ULL, { 0x573B4C99862191A1ULL, 0x90DD85B21211DC3CULL } }, /* XSUM_XXH128_testdata[6468] */ + { 2156, 0x000000009E3779B1ULL, { 0xC4993C7B179218ADULL, 0xB17C7A5D81FB10DCULL } }, /* XSUM_XXH128_testdata[6469] */ + { 2156, 0x9E3779B185EBCA8DULL, { 0xDF061BCC7759C1E5ULL, 0xB361380FF71DE2D6ULL } }, /* XSUM_XXH128_testdata[6470] */ + { 2157, 0x0000000000000000ULL, { 0x8E3349E34BBABB51ULL, 0xA9E283094D4A3209ULL } }, /* XSUM_XXH128_testdata[6471] */ + { 2157, 0x000000009E3779B1ULL, { 0x648E55E054AD14E0ULL, 0x634DB175DE73F924ULL } }, /* XSUM_XXH128_testdata[6472] */ + { 2157, 0x9E3779B185EBCA8DULL, { 0xE9CB28FA4F2B8F86ULL, 0xAC40112057CD8D39ULL } }, /* XSUM_XXH128_testdata[6473] */ + { 2158, 0x0000000000000000ULL, { 0x1DE9A6E944662A42ULL, 0x142EE51D339F1885ULL } }, /* XSUM_XXH128_testdata[6474] */ + { 2158, 0x000000009E3779B1ULL, { 0xFAF72ED80B9F7486ULL, 0x74FB1C7B41723778ULL } }, /* XSUM_XXH128_testdata[6475] */ + { 2158, 0x9E3779B185EBCA8DULL, { 0x31415F3C7C9E2538ULL, 0xE1E1143F4E70492DULL } }, /* XSUM_XXH128_testdata[6476] */ + { 2159, 0x0000000000000000ULL, { 0x3B2A7FA55BC6652BULL, 0x665A26B188BA3134ULL } }, /* XSUM_XXH128_testdata[6477] */ + { 2159, 0x000000009E3779B1ULL, { 0xEB8BC873B34D7460ULL, 0x795F3AC8E8E9E818ULL } }, /* XSUM_XXH128_testdata[6478] */ + { 2159, 0x9E3779B185EBCA8DULL, { 0xBA13B27EF111BD0BULL, 0x70F9FD7B3301CF54ULL } }, /* XSUM_XXH128_testdata[6479] */ + { 2160, 0x0000000000000000ULL, { 0x95A2C385B4C5DF62ULL, 0x29A32CDE85A1F315ULL } }, /* XSUM_XXH128_testdata[6480] */ + { 2160, 0x000000009E3779B1ULL, { 0x171EDEDF43115C05ULL, 0x55F875190A1669D5ULL } }, /* XSUM_XXH128_testdata[6481] */ + { 2160, 0x9E3779B185EBCA8DULL, { 0xE8A2054945537497ULL, 0x2C58FEB713373D62ULL } }, /* XSUM_XXH128_testdata[6482] */ + { 2161, 0x0000000000000000ULL, { 0xB6D672FBF2733519ULL, 0x3EC4CD3E90B677C6ULL } }, /* XSUM_XXH128_testdata[6483] */ + { 2161, 0x000000009E3779B1ULL, { 0x26E73AC2F852BEE6ULL, 0x083BE962B9126137ULL } }, /* XSUM_XXH128_testdata[6484] */ + { 2161, 0x9E3779B185EBCA8DULL, { 0xC43BFCD27780D6F5ULL, 0x5C008F1F644B1E6EULL } }, /* XSUM_XXH128_testdata[6485] */ + { 2162, 0x0000000000000000ULL, { 0x5E14EF81BEAE2696ULL, 0x56FA57C87BB314E4ULL } }, /* XSUM_XXH128_testdata[6486] */ + { 2162, 0x000000009E3779B1ULL, { 0xB92DD93813C41E6FULL, 0xD971B212B5C0C7BAULL } }, /* XSUM_XXH128_testdata[6487] */ + { 2162, 0x9E3779B185EBCA8DULL, { 0x04CB1436467C4B23ULL, 0xB3833ACF460772F3ULL } }, /* XSUM_XXH128_testdata[6488] */ + { 2163, 0x0000000000000000ULL, { 0xD105155AA83A2BCAULL, 0x7CE1349B7B5FA631ULL } }, /* XSUM_XXH128_testdata[6489] */ + { 2163, 0x000000009E3779B1ULL, { 0xF668197296D44DAAULL, 0x34C169759057D91DULL } }, /* XSUM_XXH128_testdata[6490] */ + { 2163, 0x9E3779B185EBCA8DULL, { 0x54952BBB7A3FAEBAULL, 0x5641E174B11CE42CULL } }, /* XSUM_XXH128_testdata[6491] */ + { 2164, 0x0000000000000000ULL, { 0x7B1F07253D3C8CF3ULL, 0xC31277302E30F749ULL } }, /* XSUM_XXH128_testdata[6492] */ + { 2164, 0x000000009E3779B1ULL, { 0x71612B354D327BBAULL, 0x27A136D2CE9C8C20ULL } }, /* XSUM_XXH128_testdata[6493] */ + { 2164, 0x9E3779B185EBCA8DULL, { 0x9484396B41B15FA8ULL, 0xF0F847CD13DB5502ULL } }, /* XSUM_XXH128_testdata[6494] */ + { 2165, 0x0000000000000000ULL, { 0x93F755CFA42D919DULL, 0x656FBD47E1CD5D79ULL } }, /* XSUM_XXH128_testdata[6495] */ + { 2165, 0x000000009E3779B1ULL, { 0x13BF007E44295B60ULL, 0x25CF5F4AF394153BULL } }, /* XSUM_XXH128_testdata[6496] */ + { 2165, 0x9E3779B185EBCA8DULL, { 0x2D7EED0342EB2799ULL, 0x244F8D761D518207ULL } }, /* XSUM_XXH128_testdata[6497] */ + { 2166, 0x0000000000000000ULL, { 0x85298A8704907A54ULL, 0xFF65D542DE17F191ULL } }, /* XSUM_XXH128_testdata[6498] */ + { 2166, 0x000000009E3779B1ULL, { 0x16E979ACE231E4B7ULL, 0x97B5C1A9A85D4747ULL } }, /* XSUM_XXH128_testdata[6499] */ + { 2166, 0x9E3779B185EBCA8DULL, { 0xA751C559BA4417A5ULL, 0xFC9941B8392D1C63ULL } }, /* XSUM_XXH128_testdata[6500] */ + { 2167, 0x0000000000000000ULL, { 0xE90C580C48DD9944ULL, 0x77D85ECB6F95F9CCULL } }, /* XSUM_XXH128_testdata[6501] */ + { 2167, 0x000000009E3779B1ULL, { 0x26F776E414A3F261ULL, 0x3898DE724F764A40ULL } }, /* XSUM_XXH128_testdata[6502] */ + { 2167, 0x9E3779B185EBCA8DULL, { 0x69C8C5584B02DFD6ULL, 0x922826B9F7CAAFABULL } }, /* XSUM_XXH128_testdata[6503] */ + { 2168, 0x0000000000000000ULL, { 0x9C64AFEB984B1FFDULL, 0x41B15639CE5C6559ULL } }, /* XSUM_XXH128_testdata[6504] */ + { 2168, 0x000000009E3779B1ULL, { 0xD243B0CDC50444CDULL, 0x29C639DC7A184E4AULL } }, /* XSUM_XXH128_testdata[6505] */ + { 2168, 0x9E3779B185EBCA8DULL, { 0x1304DF7E40B05E96ULL, 0xF534E415212740ABULL } }, /* XSUM_XXH128_testdata[6506] */ + { 2169, 0x0000000000000000ULL, { 0x92CDC29C3D92503CULL, 0xEEF21360598C98DAULL } }, /* XSUM_XXH128_testdata[6507] */ + { 2169, 0x000000009E3779B1ULL, { 0x33A354EC02ED1735ULL, 0xDDFA424814C8F224ULL } }, /* XSUM_XXH128_testdata[6508] */ + { 2169, 0x9E3779B185EBCA8DULL, { 0x729B2A3E789A550CULL, 0x808418C1B0542FA4ULL } }, /* XSUM_XXH128_testdata[6509] */ + { 2170, 0x0000000000000000ULL, { 0x83BDFD869BAD1F44ULL, 0x56171649E990549CULL } }, /* XSUM_XXH128_testdata[6510] */ + { 2170, 0x000000009E3779B1ULL, { 0xA35325517CB19F9BULL, 0xC47018021BB9161BULL } }, /* XSUM_XXH128_testdata[6511] */ + { 2170, 0x9E3779B185EBCA8DULL, { 0x89E2B8D5F514680FULL, 0xF9C58B91BA5FD880ULL } }, /* XSUM_XXH128_testdata[6512] */ + { 2171, 0x0000000000000000ULL, { 0x50D5661F7461E211ULL, 0x570A0E0BF4E4D905ULL } }, /* XSUM_XXH128_testdata[6513] */ + { 2171, 0x000000009E3779B1ULL, { 0x36DBCBB11ACDA971ULL, 0x4ECC82543AC3929AULL } }, /* XSUM_XXH128_testdata[6514] */ + { 2171, 0x9E3779B185EBCA8DULL, { 0x6AD13DDD0B545A8FULL, 0x30D67A31490170E3ULL } }, /* XSUM_XXH128_testdata[6515] */ + { 2172, 0x0000000000000000ULL, { 0x6AF342AE4840FC12ULL, 0x5947596EC1540F75ULL } }, /* XSUM_XXH128_testdata[6516] */ + { 2172, 0x000000009E3779B1ULL, { 0x898548F2CF59D2DDULL, 0x96B533F6C78E9EFFULL } }, /* XSUM_XXH128_testdata[6517] */ + { 2172, 0x9E3779B185EBCA8DULL, { 0x0E644A6A1D322111ULL, 0x1850CF42D2BC3120ULL } }, /* XSUM_XXH128_testdata[6518] */ + { 2173, 0x0000000000000000ULL, { 0x29614FF197A1CEC8ULL, 0x0AC804C65FF2A17BULL } }, /* XSUM_XXH128_testdata[6519] */ + { 2173, 0x000000009E3779B1ULL, { 0x1B1ED18802D65964ULL, 0x89497C3BC030EDF7ULL } }, /* XSUM_XXH128_testdata[6520] */ + { 2173, 0x9E3779B185EBCA8DULL, { 0x34319655235E1DF9ULL, 0x00B1FFCAC08FCBF5ULL } }, /* XSUM_XXH128_testdata[6521] */ + { 2174, 0x0000000000000000ULL, { 0x5851086F05ED5A93ULL, 0xEEEE564CA0825CF2ULL } }, /* XSUM_XXH128_testdata[6522] */ + { 2174, 0x000000009E3779B1ULL, { 0x5B0F053BA1E3451DULL, 0x367BF0C3DA3C50BDULL } }, /* XSUM_XXH128_testdata[6523] */ + { 2174, 0x9E3779B185EBCA8DULL, { 0x789E2E239B0D5889ULL, 0x655E6CC2C1EEABEFULL } }, /* XSUM_XXH128_testdata[6524] */ + { 2175, 0x0000000000000000ULL, { 0x50D01E3DB2EEB81BULL, 0x47A2D8A7E2611B9FULL } }, /* XSUM_XXH128_testdata[6525] */ + { 2175, 0x000000009E3779B1ULL, { 0xEA44797867CFD2A6ULL, 0xC84A93CD95662242ULL } }, /* XSUM_XXH128_testdata[6526] */ + { 2175, 0x9E3779B185EBCA8DULL, { 0x11B67E942D0D7E67ULL, 0x9E41FEBE2AA48EFBULL } }, /* XSUM_XXH128_testdata[6527] */ + { 2176, 0x0000000000000000ULL, { 0x29D2205BAFBD456BULL, 0xF3A31766DFFBBD9AULL } }, /* XSUM_XXH128_testdata[6528] */ + { 2176, 0x000000009E3779B1ULL, { 0xA30C678B0034A2E6ULL, 0xA92240BD750B5D84ULL } }, /* XSUM_XXH128_testdata[6529] */ + { 2176, 0x9E3779B185EBCA8DULL, { 0xFB7B4655AA6E39C8ULL, 0x33DD3EF1A331627DULL } }, /* XSUM_XXH128_testdata[6530] */ + { 2177, 0x0000000000000000ULL, { 0xA283CA0E29DC4F25ULL, 0x3322FBFE762FB470ULL } }, /* XSUM_XXH128_testdata[6531] */ + { 2177, 0x000000009E3779B1ULL, { 0x35B57E7E59E1CC32ULL, 0x8A23FF00681BB6B3ULL } }, /* XSUM_XXH128_testdata[6532] */ + { 2177, 0x9E3779B185EBCA8DULL, { 0x45FC46C710C757C1ULL, 0x5C7A1FD14BEB778AULL } }, /* XSUM_XXH128_testdata[6533] */ + { 2178, 0x0000000000000000ULL, { 0xEE0C669CCC24E35BULL, 0xF5744A8AA07BB926ULL } }, /* XSUM_XXH128_testdata[6534] */ + { 2178, 0x000000009E3779B1ULL, { 0x123132F829318FB1ULL, 0xC9F84BE13531175BULL } }, /* XSUM_XXH128_testdata[6535] */ + { 2178, 0x9E3779B185EBCA8DULL, { 0x6616E48AFBBE6B19ULL, 0x4BE1471BCC52B054ULL } }, /* XSUM_XXH128_testdata[6536] */ + { 2179, 0x0000000000000000ULL, { 0xC22CBE7E53601416ULL, 0x32CC9B560B4F1961ULL } }, /* XSUM_XXH128_testdata[6537] */ + { 2179, 0x000000009E3779B1ULL, { 0x007853C806BAF5D9ULL, 0x3EB71BA86E555DF3ULL } }, /* XSUM_XXH128_testdata[6538] */ + { 2179, 0x9E3779B185EBCA8DULL, { 0xAC82506CCE12F79AULL, 0x660B0AFF572168E6ULL } }, /* XSUM_XXH128_testdata[6539] */ + { 2180, 0x0000000000000000ULL, { 0xD9E8B2340AD0AE45ULL, 0x4DA01581897AAF6EULL } }, /* XSUM_XXH128_testdata[6540] */ + { 2180, 0x000000009E3779B1ULL, { 0xC1F2E97EC8AF284EULL, 0xA94A98328DE94792ULL } }, /* XSUM_XXH128_testdata[6541] */ + { 2180, 0x9E3779B185EBCA8DULL, { 0xE9E8841DDA45B168ULL, 0xC45A2AF2AB2943E5ULL } }, /* XSUM_XXH128_testdata[6542] */ + { 2181, 0x0000000000000000ULL, { 0x9715E4F64F6C87A7ULL, 0xB4F76F60E6AFC825ULL } }, /* XSUM_XXH128_testdata[6543] */ + { 2181, 0x000000009E3779B1ULL, { 0x177AADCF413FE7EBULL, 0x084E0A68269FFAF6ULL } }, /* XSUM_XXH128_testdata[6544] */ + { 2181, 0x9E3779B185EBCA8DULL, { 0xB5DF3C559501A8C0ULL, 0x5D8D1EB728387353ULL } }, /* XSUM_XXH128_testdata[6545] */ + { 2182, 0x0000000000000000ULL, { 0x8037071E726FFCF6ULL, 0xA39A31DE31EB2C63ULL } }, /* XSUM_XXH128_testdata[6546] */ + { 2182, 0x000000009E3779B1ULL, { 0x80F81DB5587DD2A8ULL, 0xA901883A3CF08141ULL } }, /* XSUM_XXH128_testdata[6547] */ + { 2182, 0x9E3779B185EBCA8DULL, { 0xE0DF7D2037EA35CDULL, 0x114A8B4C1F551264ULL } }, /* XSUM_XXH128_testdata[6548] */ + { 2183, 0x0000000000000000ULL, { 0xEFF8CC0E3F0641E4ULL, 0xDBB8E7254FA40329ULL } }, /* XSUM_XXH128_testdata[6549] */ + { 2183, 0x000000009E3779B1ULL, { 0x39964199C7EEF771ULL, 0x04BE6EEFBDED9C2DULL } }, /* XSUM_XXH128_testdata[6550] */ + { 2183, 0x9E3779B185EBCA8DULL, { 0x8044F342429D0F1EULL, 0x0DC66EEFF141F086ULL } }, /* XSUM_XXH128_testdata[6551] */ + { 2184, 0x0000000000000000ULL, { 0xA9FCE36A54750A1FULL, 0x5BE4DBFCCA0D177BULL } }, /* XSUM_XXH128_testdata[6552] */ + { 2184, 0x000000009E3779B1ULL, { 0xA112864CC9BBD020ULL, 0x3A771073B3A3872DULL } }, /* XSUM_XXH128_testdata[6553] */ + { 2184, 0x9E3779B185EBCA8DULL, { 0x6FDBF8F2D98BF87CULL, 0x1DFEE436A61F38CFULL } }, /* XSUM_XXH128_testdata[6554] */ + { 2185, 0x0000000000000000ULL, { 0x8660BD25E39DB30AULL, 0xB75C80A258AC14CEULL } }, /* XSUM_XXH128_testdata[6555] */ + { 2185, 0x000000009E3779B1ULL, { 0xD1F5F892B5EAB754ULL, 0xD840FAAFC39F1D79ULL } }, /* XSUM_XXH128_testdata[6556] */ + { 2185, 0x9E3779B185EBCA8DULL, { 0xDD5BD774387761EDULL, 0x5C86948864F4C626ULL } }, /* XSUM_XXH128_testdata[6557] */ + { 2186, 0x0000000000000000ULL, { 0x19344704011B72D3ULL, 0xD50C76BFCFF91871ULL } }, /* XSUM_XXH128_testdata[6558] */ + { 2186, 0x000000009E3779B1ULL, { 0x1A802B858E8327B7ULL, 0x280895559F2111CDULL } }, /* XSUM_XXH128_testdata[6559] */ + { 2186, 0x9E3779B185EBCA8DULL, { 0x0484D89689D09F20ULL, 0x3D3549213483A90FULL } }, /* XSUM_XXH128_testdata[6560] */ + { 2187, 0x0000000000000000ULL, { 0xE59CC4C985A720A2ULL, 0xA1460E2799B20314ULL } }, /* XSUM_XXH128_testdata[6561] */ + { 2187, 0x000000009E3779B1ULL, { 0x73C56943A1FCD05AULL, 0xEF031AC5F7A75082ULL } }, /* XSUM_XXH128_testdata[6562] */ + { 2187, 0x9E3779B185EBCA8DULL, { 0x2C4966E8D7B3F5E8ULL, 0x3C4ED19064BDF8FCULL } }, /* XSUM_XXH128_testdata[6563] */ + { 2188, 0x0000000000000000ULL, { 0xB223195A579011ACULL, 0x4E00998C6D7C8F73ULL } }, /* XSUM_XXH128_testdata[6564] */ + { 2188, 0x000000009E3779B1ULL, { 0x5959A76390680765ULL, 0x9FB4F21399888E8BULL } }, /* XSUM_XXH128_testdata[6565] */ + { 2188, 0x9E3779B185EBCA8DULL, { 0xD43C8AE1C4766194ULL, 0xF9DCF4691C043A89ULL } }, /* XSUM_XXH128_testdata[6566] */ + { 2189, 0x0000000000000000ULL, { 0xAF9E01D91A98738AULL, 0xB7DB726552C2883EULL } }, /* XSUM_XXH128_testdata[6567] */ + { 2189, 0x000000009E3779B1ULL, { 0x30B1A073005BFA5DULL, 0xBDF0DB52F4A05B73ULL } }, /* XSUM_XXH128_testdata[6568] */ + { 2189, 0x9E3779B185EBCA8DULL, { 0xBE047B287C786011ULL, 0x0FDAE48B06B0B6F5ULL } }, /* XSUM_XXH128_testdata[6569] */ + { 2190, 0x0000000000000000ULL, { 0x9B2878B998461347ULL, 0xAB2D64EB018E9990ULL } }, /* XSUM_XXH128_testdata[6570] */ + { 2190, 0x000000009E3779B1ULL, { 0xB56A29CA5046CD65ULL, 0x6B8C0C53B4CC61E4ULL } }, /* XSUM_XXH128_testdata[6571] */ + { 2190, 0x9E3779B185EBCA8DULL, { 0xD5FDCB465B9E2897ULL, 0x8ABDA0693F4B7475ULL } }, /* XSUM_XXH128_testdata[6572] */ + { 2191, 0x0000000000000000ULL, { 0x71B4CC7A01EF5656ULL, 0x2DD627FD95057864ULL } }, /* XSUM_XXH128_testdata[6573] */ + { 2191, 0x000000009E3779B1ULL, { 0x25CA847146304583ULL, 0xD52FC81E93226BF7ULL } }, /* XSUM_XXH128_testdata[6574] */ + { 2191, 0x9E3779B185EBCA8DULL, { 0x7A5C5E944C4D2499ULL, 0x1A710BB13C291329ULL } }, /* XSUM_XXH128_testdata[6575] */ + { 2192, 0x0000000000000000ULL, { 0x84E6EBA02934072EULL, 0xA15803BFD253EA7FULL } }, /* XSUM_XXH128_testdata[6576] */ + { 2192, 0x000000009E3779B1ULL, { 0xAAFE7F4628FB25E5ULL, 0x0BBF802DD3D7A093ULL } }, /* XSUM_XXH128_testdata[6577] */ + { 2192, 0x9E3779B185EBCA8DULL, { 0x481D2585061FE7FDULL, 0x522938F1B3621DDCULL } }, /* XSUM_XXH128_testdata[6578] */ + { 2193, 0x0000000000000000ULL, { 0x78B69BB4A862DB03ULL, 0x3492D5C82958A7D0ULL } }, /* XSUM_XXH128_testdata[6579] */ + { 2193, 0x000000009E3779B1ULL, { 0xF9A17F25FD9CB3FCULL, 0xF864A078FFB48506ULL } }, /* XSUM_XXH128_testdata[6580] */ + { 2193, 0x9E3779B185EBCA8DULL, { 0x767D20312ECBB69AULL, 0xBA1F70960FF650FBULL } }, /* XSUM_XXH128_testdata[6581] */ + { 2194, 0x0000000000000000ULL, { 0xC7AEF2FB42E6D43FULL, 0x291B1577380B5D7EULL } }, /* XSUM_XXH128_testdata[6582] */ + { 2194, 0x000000009E3779B1ULL, { 0x4FC1216C68F3123AULL, 0x1F0428592FAEF140ULL } }, /* XSUM_XXH128_testdata[6583] */ + { 2194, 0x9E3779B185EBCA8DULL, { 0xF441AC4B1766F7B1ULL, 0xC307C60A7184BD47ULL } }, /* XSUM_XXH128_testdata[6584] */ + { 2195, 0x0000000000000000ULL, { 0xEAC74EA8D924CA43ULL, 0xDB8FCFEF7B91509CULL } }, /* XSUM_XXH128_testdata[6585] */ + { 2195, 0x000000009E3779B1ULL, { 0x1E720D39B4B6266AULL, 0xC879B0E84F3611B7ULL } }, /* XSUM_XXH128_testdata[6586] */ + { 2195, 0x9E3779B185EBCA8DULL, { 0x49CC8123556CEF4EULL, 0xF36ACBBD7ED0CC37ULL } }, /* XSUM_XXH128_testdata[6587] */ + { 2196, 0x0000000000000000ULL, { 0xAD657634A1E509F8ULL, 0x180537117603F9D6ULL } }, /* XSUM_XXH128_testdata[6588] */ + { 2196, 0x000000009E3779B1ULL, { 0x45750E2C7C551802ULL, 0x68E62DF2E17A1847ULL } }, /* XSUM_XXH128_testdata[6589] */ + { 2196, 0x9E3779B185EBCA8DULL, { 0x0F993C64851F9F19ULL, 0x5940FCB7150C23C3ULL } }, /* XSUM_XXH128_testdata[6590] */ + { 2197, 0x0000000000000000ULL, { 0x63C87C3FB53F2903ULL, 0x1C575CE2681CCE0FULL } }, /* XSUM_XXH128_testdata[6591] */ + { 2197, 0x000000009E3779B1ULL, { 0x87F31123861CF8F1ULL, 0x518FFEB2CB4FF2A6ULL } }, /* XSUM_XXH128_testdata[6592] */ + { 2197, 0x9E3779B185EBCA8DULL, { 0x5C1B6EAC47E1080DULL, 0xA40C6496254A113EULL } }, /* XSUM_XXH128_testdata[6593] */ + { 2198, 0x0000000000000000ULL, { 0x6A7D831B5F4FE66DULL, 0x2C87211658082B2DULL } }, /* XSUM_XXH128_testdata[6594] */ + { 2198, 0x000000009E3779B1ULL, { 0x0C9D87F4C1AC999DULL, 0xCD18F0FD208E1C24ULL } }, /* XSUM_XXH128_testdata[6595] */ + { 2198, 0x9E3779B185EBCA8DULL, { 0x1AAE97153C6D5C42ULL, 0x8A5D32BD22A885C2ULL } }, /* XSUM_XXH128_testdata[6596] */ + { 2199, 0x0000000000000000ULL, { 0x01B53846E0D4AC64ULL, 0x7D7E869638A59D48ULL } }, /* XSUM_XXH128_testdata[6597] */ + { 2199, 0x000000009E3779B1ULL, { 0x03E3D0BADEDF58A2ULL, 0xCB9B8BD2E7D94575ULL } }, /* XSUM_XXH128_testdata[6598] */ + { 2199, 0x9E3779B185EBCA8DULL, { 0xEC90604F2829F411ULL, 0x093F44569A3BB56EULL } }, /* XSUM_XXH128_testdata[6599] */ + { 2200, 0x0000000000000000ULL, { 0xF18C2A1C91B939AFULL, 0x3DA03FA8121695F6ULL } }, /* XSUM_XXH128_testdata[6600] */ + { 2200, 0x000000009E3779B1ULL, { 0x437E33020662E4CBULL, 0x25541C4C12B85223ULL } }, /* XSUM_XXH128_testdata[6601] */ + { 2200, 0x9E3779B185EBCA8DULL, { 0x8AF27110B8519E3DULL, 0xDCC9465E6575C632ULL } }, /* XSUM_XXH128_testdata[6602] */ + { 2201, 0x0000000000000000ULL, { 0x4928A28948996E6DULL, 0xF1ED05ED33159953ULL } }, /* XSUM_XXH128_testdata[6603] */ + { 2201, 0x000000009E3779B1ULL, { 0x25F7562FDDF858B2ULL, 0xB33C41B7390D259EULL } }, /* XSUM_XXH128_testdata[6604] */ + { 2201, 0x9E3779B185EBCA8DULL, { 0xA22D2855F0D85572ULL, 0x2ADDC84DA4F25D9EULL } }, /* XSUM_XXH128_testdata[6605] */ + { 2202, 0x0000000000000000ULL, { 0xE948FCCAB5D2A3D7ULL, 0x34D27633C1BACA67ULL } }, /* XSUM_XXH128_testdata[6606] */ + { 2202, 0x000000009E3779B1ULL, { 0x4DFDD433B8297754ULL, 0x36F52BF7028BDFE7ULL } }, /* XSUM_XXH128_testdata[6607] */ + { 2202, 0x9E3779B185EBCA8DULL, { 0x8F6E2928A92848E3ULL, 0x97EDF046C1296805ULL } }, /* XSUM_XXH128_testdata[6608] */ + { 2203, 0x0000000000000000ULL, { 0xCBCC38906A5320E2ULL, 0x87F2CD0BC6EBB5DCULL } }, /* XSUM_XXH128_testdata[6609] */ + { 2203, 0x000000009E3779B1ULL, { 0x7B7CF77160E98763ULL, 0x48C836E2E0B0B8C3ULL } }, /* XSUM_XXH128_testdata[6610] */ + { 2203, 0x9E3779B185EBCA8DULL, { 0x3C54CBDE2AC16F9EULL, 0x45ADE45D63DF78D4ULL } }, /* XSUM_XXH128_testdata[6611] */ + { 2204, 0x0000000000000000ULL, { 0x5D48D592672E0092ULL, 0xBF70D16115FB97EDULL } }, /* XSUM_XXH128_testdata[6612] */ + { 2204, 0x000000009E3779B1ULL, { 0xCFF286FA07DE91A9ULL, 0xBC0046F948A174CAULL } }, /* XSUM_XXH128_testdata[6613] */ + { 2204, 0x9E3779B185EBCA8DULL, { 0x8A0BC0C14F9F13E3ULL, 0xBDE0AE8C6F8B236AULL } }, /* XSUM_XXH128_testdata[6614] */ + { 2205, 0x0000000000000000ULL, { 0x46855E38CDED0819ULL, 0x9F3A9384FC3C7E90ULL } }, /* XSUM_XXH128_testdata[6615] */ + { 2205, 0x000000009E3779B1ULL, { 0xA19F39C3FB7A1D6EULL, 0xB8F35B213AC5A4C3ULL } }, /* XSUM_XXH128_testdata[6616] */ + { 2205, 0x9E3779B185EBCA8DULL, { 0x75A04D065ACD038CULL, 0x59E5DCF2E12628DCULL } }, /* XSUM_XXH128_testdata[6617] */ + { 2206, 0x0000000000000000ULL, { 0x09358F24391EE1E7ULL, 0x417CB47DC0382754ULL } }, /* XSUM_XXH128_testdata[6618] */ + { 2206, 0x000000009E3779B1ULL, { 0xBFBFBB96668A6141ULL, 0xD729EE33F8C02771ULL } }, /* XSUM_XXH128_testdata[6619] */ + { 2206, 0x9E3779B185EBCA8DULL, { 0x41B3BB406058BD6DULL, 0xED6AAE8704C896A5ULL } }, /* XSUM_XXH128_testdata[6620] */ + { 2207, 0x0000000000000000ULL, { 0xF4C1F3BFB4B542A6ULL, 0xF0371557DB3208E1ULL } }, /* XSUM_XXH128_testdata[6621] */ + { 2207, 0x000000009E3779B1ULL, { 0x9CFF5A0E36C66863ULL, 0x7396A5E645573B99ULL } }, /* XSUM_XXH128_testdata[6622] */ + { 2207, 0x9E3779B185EBCA8DULL, { 0x20459DD50113E516ULL, 0x0A38EEB0F9897838ULL } }, /* XSUM_XXH128_testdata[6623] */ + { 2208, 0x0000000000000000ULL, { 0x700315ED88C7E92AULL, 0xDC28C2337BC3F428ULL } }, /* XSUM_XXH128_testdata[6624] */ + { 2208, 0x000000009E3779B1ULL, { 0xCC79D1DB0D335B35ULL, 0x47417C2750EEFD1DULL } }, /* XSUM_XXH128_testdata[6625] */ + { 2208, 0x9E3779B185EBCA8DULL, { 0xFAD72D454B231E1FULL, 0x8AB17B43CA6C5EC9ULL } }, /* XSUM_XXH128_testdata[6626] */ + { 2209, 0x0000000000000000ULL, { 0xB4A84B3022803926ULL, 0x57441B953C670A7AULL } }, /* XSUM_XXH128_testdata[6627] */ + { 2209, 0x000000009E3779B1ULL, { 0xEFA3BA47833DB0C1ULL, 0x30C0D8F1E363D5E8ULL } }, /* XSUM_XXH128_testdata[6628] */ + { 2209, 0x9E3779B185EBCA8DULL, { 0x04217C50D815E8D2ULL, 0x297A36F8A75E77B6ULL } }, /* XSUM_XXH128_testdata[6629] */ + { 2210, 0x0000000000000000ULL, { 0xA240352B602854D2ULL, 0xD54143637EFCD87EULL } }, /* XSUM_XXH128_testdata[6630] */ + { 2210, 0x000000009E3779B1ULL, { 0x86E4020000BF178CULL, 0xDEC97E481D2C35E7ULL } }, /* XSUM_XXH128_testdata[6631] */ + { 2210, 0x9E3779B185EBCA8DULL, { 0xD37F02C28289A656ULL, 0x082BA6E12A0A07BCULL } }, /* XSUM_XXH128_testdata[6632] */ + { 2211, 0x0000000000000000ULL, { 0x636FB1C6C3DBFE21ULL, 0x33382233158AE8C1ULL } }, /* XSUM_XXH128_testdata[6633] */ + { 2211, 0x000000009E3779B1ULL, { 0xDEB1625B7F2723D2ULL, 0x39EC38FD720F52E4ULL } }, /* XSUM_XXH128_testdata[6634] */ + { 2211, 0x9E3779B185EBCA8DULL, { 0x922BC8C06F60CA05ULL, 0x593731A63F22E4BBULL } }, /* XSUM_XXH128_testdata[6635] */ + { 2212, 0x0000000000000000ULL, { 0x8F7E08E639EE5396ULL, 0x29C3F56F59C1EB29ULL } }, /* XSUM_XXH128_testdata[6636] */ + { 2212, 0x000000009E3779B1ULL, { 0xE2DAB7783FE2E92FULL, 0x4975D8B3FEE5E644ULL } }, /* XSUM_XXH128_testdata[6637] */ + { 2212, 0x9E3779B185EBCA8DULL, { 0x291E3802522C3B4CULL, 0xC2933EA210B4F552ULL } }, /* XSUM_XXH128_testdata[6638] */ + { 2213, 0x0000000000000000ULL, { 0x9687D287CCF00986ULL, 0x003D42EABAFDB878ULL } }, /* XSUM_XXH128_testdata[6639] */ + { 2213, 0x000000009E3779B1ULL, { 0xCD005DC7D647FB34ULL, 0x2A5EEDC9090B849AULL } }, /* XSUM_XXH128_testdata[6640] */ + { 2213, 0x9E3779B185EBCA8DULL, { 0x44468F4841381E7CULL, 0xA00A8B41EA5EBA90ULL } }, /* XSUM_XXH128_testdata[6641] */ + { 2214, 0x0000000000000000ULL, { 0xFC3AAB6F3C760BA7ULL, 0x8E9FCFD628DA279EULL } }, /* XSUM_XXH128_testdata[6642] */ + { 2214, 0x000000009E3779B1ULL, { 0x6C997E435D6950D6ULL, 0x61A122ABF5589339ULL } }, /* XSUM_XXH128_testdata[6643] */ + { 2214, 0x9E3779B185EBCA8DULL, { 0x477AD85736CD6177ULL, 0x6093D716506B4095ULL } }, /* XSUM_XXH128_testdata[6644] */ + { 2215, 0x0000000000000000ULL, { 0x8E6365769D7FC136ULL, 0x18A39583F3F20B74ULL } }, /* XSUM_XXH128_testdata[6645] */ + { 2215, 0x000000009E3779B1ULL, { 0xCC7FAEF025E3C972ULL, 0x301A1F9081503C8EULL } }, /* XSUM_XXH128_testdata[6646] */ + { 2215, 0x9E3779B185EBCA8DULL, { 0xD9569AC3A784F21DULL, 0xCD1604AEB7A6A1CAULL } }, /* XSUM_XXH128_testdata[6647] */ + { 2216, 0x0000000000000000ULL, { 0x3748F951EEE389F2ULL, 0x0023268A1A1EE777ULL } }, /* XSUM_XXH128_testdata[6648] */ + { 2216, 0x000000009E3779B1ULL, { 0xF9539F5C251C266BULL, 0x99B4EE44D1238DDFULL } }, /* XSUM_XXH128_testdata[6649] */ + { 2216, 0x9E3779B185EBCA8DULL, { 0xEFE43D389C338830ULL, 0xAA12779D0F3AA792ULL } }, /* XSUM_XXH128_testdata[6650] */ + { 2217, 0x0000000000000000ULL, { 0x34C121B698E9AF1FULL, 0x7F0D97B39988A29AULL } }, /* XSUM_XXH128_testdata[6651] */ + { 2217, 0x000000009E3779B1ULL, { 0x125E6F17ACF526CDULL, 0x7AA73F1E3C5775C9ULL } }, /* XSUM_XXH128_testdata[6652] */ + { 2217, 0x9E3779B185EBCA8DULL, { 0x178415CFDCB7E73CULL, 0xB6CD1171FF0ED3BFULL } }, /* XSUM_XXH128_testdata[6653] */ + { 2218, 0x0000000000000000ULL, { 0xB51367FD5633A04EULL, 0xF8EBD705FD946282ULL } }, /* XSUM_XXH128_testdata[6654] */ + { 2218, 0x000000009E3779B1ULL, { 0x1F0FE38399D13FFBULL, 0x0172BBE22AC07F49ULL } }, /* XSUM_XXH128_testdata[6655] */ + { 2218, 0x9E3779B185EBCA8DULL, { 0xBC3A63FBADB4B27AULL, 0x4E2AA391184DE65DULL } }, /* XSUM_XXH128_testdata[6656] */ + { 2219, 0x0000000000000000ULL, { 0x35D6A10601EBD042ULL, 0x6166A79B11A2F680ULL } }, /* XSUM_XXH128_testdata[6657] */ + { 2219, 0x000000009E3779B1ULL, { 0x9A3EEDBE47911A25ULL, 0x18A5FFAFF5FF710DULL } }, /* XSUM_XXH128_testdata[6658] */ + { 2219, 0x9E3779B185EBCA8DULL, { 0x359E000DA9C69A8FULL, 0x6E7DBD0E74BA9F8BULL } }, /* XSUM_XXH128_testdata[6659] */ + { 2220, 0x0000000000000000ULL, { 0x4C283F09875945A8ULL, 0x674491979EB4859AULL } }, /* XSUM_XXH128_testdata[6660] */ + { 2220, 0x000000009E3779B1ULL, { 0x5F183549C50ABA95ULL, 0x7D246AF5013EBBFDULL } }, /* XSUM_XXH128_testdata[6661] */ + { 2220, 0x9E3779B185EBCA8DULL, { 0xEDD00581331B3A2AULL, 0xB05821249AA61F49ULL } }, /* XSUM_XXH128_testdata[6662] */ + { 2221, 0x0000000000000000ULL, { 0x27F10579DF439D79ULL, 0x44C1583A9E5FB31DULL } }, /* XSUM_XXH128_testdata[6663] */ + { 2221, 0x000000009E3779B1ULL, { 0x7CE67B5B3B6DEAB4ULL, 0xC26386B8F7CDDC0AULL } }, /* XSUM_XXH128_testdata[6664] */ + { 2221, 0x9E3779B185EBCA8DULL, { 0x0FC6A3B4F4FA84AFULL, 0xCB568B8C0A097279ULL } }, /* XSUM_XXH128_testdata[6665] */ + { 2222, 0x0000000000000000ULL, { 0x1ADBD424A23E32DEULL, 0x27E776A0DDE33211ULL } }, /* XSUM_XXH128_testdata[6666] */ + { 2222, 0x000000009E3779B1ULL, { 0x3B66C9F8F3EA2A7EULL, 0x7FB25E1985F771E3ULL } }, /* XSUM_XXH128_testdata[6667] */ + { 2222, 0x9E3779B185EBCA8DULL, { 0x7B38DE2656BD891FULL, 0x8A44041CC2110756ULL } }, /* XSUM_XXH128_testdata[6668] */ + { 2223, 0x0000000000000000ULL, { 0xDB429AE625C9FC6DULL, 0x14D9D76BB4F0C13BULL } }, /* XSUM_XXH128_testdata[6669] */ + { 2223, 0x000000009E3779B1ULL, { 0xD2AD2D8DED8060FBULL, 0x34D496A97880A3FAULL } }, /* XSUM_XXH128_testdata[6670] */ + { 2223, 0x9E3779B185EBCA8DULL, { 0x933CA63106E3A4F5ULL, 0x9FEDDAE44756CC2EULL } }, /* XSUM_XXH128_testdata[6671] */ + { 2224, 0x0000000000000000ULL, { 0x76F5F458101653A6ULL, 0x20F783F68F740C8CULL } }, /* XSUM_XXH128_testdata[6672] */ + { 2224, 0x000000009E3779B1ULL, { 0x2B50768B5BAC54BCULL, 0xE039686EBA1906F8ULL } }, /* XSUM_XXH128_testdata[6673] */ + { 2224, 0x9E3779B185EBCA8DULL, { 0x817E67E9987F2F90ULL, 0xBAE702F5ECCA9056ULL } }, /* XSUM_XXH128_testdata[6674] */ + { 2225, 0x0000000000000000ULL, { 0x711540673D7438BBULL, 0x3CB01A920B0AA733ULL } }, /* XSUM_XXH128_testdata[6675] */ + { 2225, 0x000000009E3779B1ULL, { 0x0639AC698802EDF9ULL, 0xD56FFF0EDCA5289BULL } }, /* XSUM_XXH128_testdata[6676] */ + { 2225, 0x9E3779B185EBCA8DULL, { 0x8331311180B2BB75ULL, 0x6F27A90BE78894BEULL } }, /* XSUM_XXH128_testdata[6677] */ + { 2226, 0x0000000000000000ULL, { 0xEA382838600F6246ULL, 0x97FB09B698F36C2CULL } }, /* XSUM_XXH128_testdata[6678] */ + { 2226, 0x000000009E3779B1ULL, { 0x9917A1D939016D4AULL, 0x948AC18FB9DDDBB0ULL } }, /* XSUM_XXH128_testdata[6679] */ + { 2226, 0x9E3779B185EBCA8DULL, { 0x6B3384DD94F74CA7ULL, 0xFD2C5C1CEBB16B42ULL } }, /* XSUM_XXH128_testdata[6680] */ + { 2227, 0x0000000000000000ULL, { 0x94AC31B78CBF3FD0ULL, 0xAD18008A2638358BULL } }, /* XSUM_XXH128_testdata[6681] */ + { 2227, 0x000000009E3779B1ULL, { 0xA356BC9149197284ULL, 0x32AEA4004174F33BULL } }, /* XSUM_XXH128_testdata[6682] */ + { 2227, 0x9E3779B185EBCA8DULL, { 0xC155AD752682B118ULL, 0x32BD88B04BEADAA2ULL } }, /* XSUM_XXH128_testdata[6683] */ + { 2228, 0x0000000000000000ULL, { 0x9CE739A7B0881A1DULL, 0x22211AF58BB969E5ULL } }, /* XSUM_XXH128_testdata[6684] */ + { 2228, 0x000000009E3779B1ULL, { 0x5B0D12956C37DBACULL, 0x8ACD6773986A3BF6ULL } }, /* XSUM_XXH128_testdata[6685] */ + { 2228, 0x9E3779B185EBCA8DULL, { 0x9E815FDB9F67F4EFULL, 0xE3A28A4A8A026A8CULL } }, /* XSUM_XXH128_testdata[6686] */ + { 2229, 0x0000000000000000ULL, { 0x700388F67B075989ULL, 0x5AF4E3F954D131AFULL } }, /* XSUM_XXH128_testdata[6687] */ + { 2229, 0x000000009E3779B1ULL, { 0x0FB1C26156E53C0CULL, 0xA2C5C7590C6F1BD7ULL } }, /* XSUM_XXH128_testdata[6688] */ + { 2229, 0x9E3779B185EBCA8DULL, { 0x1F4FF8D340256EBDULL, 0xCDE9DB7EFD7B2116ULL } }, /* XSUM_XXH128_testdata[6689] */ + { 2230, 0x0000000000000000ULL, { 0x6922538CFDE61217ULL, 0xDEE3D9BB377FD111ULL } }, /* XSUM_XXH128_testdata[6690] */ + { 2230, 0x000000009E3779B1ULL, { 0x2B271AD99E4B6948ULL, 0x52CA4D148F9CE6E3ULL } }, /* XSUM_XXH128_testdata[6691] */ + { 2230, 0x9E3779B185EBCA8DULL, { 0xC2518F847B8B641DULL, 0xCEF06C2DEB72592CULL } }, /* XSUM_XXH128_testdata[6692] */ + { 2231, 0x0000000000000000ULL, { 0xB683FC5049069978ULL, 0xBB4AB8B39E662CD8ULL } }, /* XSUM_XXH128_testdata[6693] */ + { 2231, 0x000000009E3779B1ULL, { 0x636A10534282AE91ULL, 0x5A30FF838D5B36C7ULL } }, /* XSUM_XXH128_testdata[6694] */ + { 2231, 0x9E3779B185EBCA8DULL, { 0x5336697F84525839ULL, 0x6D50444EB162771CULL } }, /* XSUM_XXH128_testdata[6695] */ + { 2232, 0x0000000000000000ULL, { 0xB1F34FE973A230AAULL, 0x0FEFCA31F48F24DCULL } }, /* XSUM_XXH128_testdata[6696] */ + { 2232, 0x000000009E3779B1ULL, { 0x565CF906E3845639ULL, 0x2EA509DB38B6AA7EULL } }, /* XSUM_XXH128_testdata[6697] */ + { 2232, 0x9E3779B185EBCA8DULL, { 0x61C662A59D44EB71ULL, 0x5EBC57B820E24BC8ULL } }, /* XSUM_XXH128_testdata[6698] */ + { 2233, 0x0000000000000000ULL, { 0xB91B2F72A927AD7BULL, 0x55883B7FB0685B3FULL } }, /* XSUM_XXH128_testdata[6699] */ + { 2233, 0x000000009E3779B1ULL, { 0x4938F5C3F2E587CCULL, 0x1AB6F66705D83D2CULL } }, /* XSUM_XXH128_testdata[6700] */ + { 2233, 0x9E3779B185EBCA8DULL, { 0xF43F1270175D6FD0ULL, 0xF2BD7426335FB0F8ULL } }, /* XSUM_XXH128_testdata[6701] */ + { 2234, 0x0000000000000000ULL, { 0x2E533EC105FE951FULL, 0x1FF75AD5F5276DCAULL } }, /* XSUM_XXH128_testdata[6702] */ + { 2234, 0x000000009E3779B1ULL, { 0x329AF29A40A36F62ULL, 0x842EBFB9C7E03778ULL } }, /* XSUM_XXH128_testdata[6703] */ + { 2234, 0x9E3779B185EBCA8DULL, { 0xAC51A60B038799ABULL, 0x5705B1DE71B2DF27ULL } }, /* XSUM_XXH128_testdata[6704] */ + { 2235, 0x0000000000000000ULL, { 0xB57A6D2663BD3318ULL, 0xF1FE6A9746226E98ULL } }, /* XSUM_XXH128_testdata[6705] */ + { 2235, 0x000000009E3779B1ULL, { 0xE7325D4EDF892F07ULL, 0xE7E493AF3D668959ULL } }, /* XSUM_XXH128_testdata[6706] */ + { 2235, 0x9E3779B185EBCA8DULL, { 0x6236E2EB27003B98ULL, 0xAF8E70E5E48A2721ULL } }, /* XSUM_XXH128_testdata[6707] */ + { 2236, 0x0000000000000000ULL, { 0xACD57AC1C6A6751DULL, 0xF55EE7788E7D7802ULL } }, /* XSUM_XXH128_testdata[6708] */ + { 2236, 0x000000009E3779B1ULL, { 0xB949D3BB008F6638ULL, 0x3105CC205F224699ULL } }, /* XSUM_XXH128_testdata[6709] */ + { 2236, 0x9E3779B185EBCA8DULL, { 0x0A3B7C12DD58733DULL, 0x3B371476D8CEEBFFULL } }, /* XSUM_XXH128_testdata[6710] */ + { 2237, 0x0000000000000000ULL, { 0xF403CEA1763CD9CCULL, 0x0CDABF3F3C98B371ULL } }, /* XSUM_XXH128_testdata[6711] */ + { 2237, 0x000000009E3779B1ULL, { 0xF3824EE446018851ULL, 0xC81B751764BD53C5ULL } }, /* XSUM_XXH128_testdata[6712] */ + { 2237, 0x9E3779B185EBCA8DULL, { 0xF7A5385336BEF410ULL, 0x3EEF572C60CBCDC0ULL } }, /* XSUM_XXH128_testdata[6713] */ + { 2238, 0x0000000000000000ULL, { 0xEEA5D3E6239E2D21ULL, 0x83673AA5BB380064ULL } }, /* XSUM_XXH128_testdata[6714] */ + { 2238, 0x000000009E3779B1ULL, { 0x180BB684761CE5C3ULL, 0x3A207CC3A56C2F1BULL } }, /* XSUM_XXH128_testdata[6715] */ + { 2238, 0x9E3779B185EBCA8DULL, { 0xCB29898047ACB7EFULL, 0xAD98B537DF20369DULL } }, /* XSUM_XXH128_testdata[6716] */ + { 2239, 0x0000000000000000ULL, { 0xA72607BA9BB75B9BULL, 0xD6ADD2D207458FB8ULL } }, /* XSUM_XXH128_testdata[6717] */ + { 2239, 0x000000009E3779B1ULL, { 0xD2A362574B5E942CULL, 0x08DC86196CCDCC80ULL } }, /* XSUM_XXH128_testdata[6718] */ + { 2239, 0x9E3779B185EBCA8DULL, { 0x017F09BFBB6474DAULL, 0x889CB9CDFAB6554EULL } }, /* XSUM_XXH128_testdata[6719] */ + { 2240, 0x0000000000000000ULL, { 0x6E73A90539CF2948ULL, 0xCCB134FBFA7CE49DULL } }, /* XSUM_XXH128_testdata[6720] */ + { 2240, 0x000000009E3779B1ULL, { 0xED385111126FBA6FULL, 0x50A1FE17B338995FULL } }, /* XSUM_XXH128_testdata[6721] */ + { 2240, 0x9E3779B185EBCA8DULL, { 0x757BA8487D1B5247ULL, 0xE40842F585875BA9ULL } }, /* XSUM_XXH128_testdata[6722] */ + { 2241, 0x0000000000000000ULL, { 0xE800ECA585FE92D9ULL, 0x64A1592C03F3B910ULL } }, /* XSUM_XXH128_testdata[6723] */ + { 2241, 0x000000009E3779B1ULL, { 0x9A40A64684495542ULL, 0x3EC0C842F6BAA223ULL } }, /* XSUM_XXH128_testdata[6724] */ + { 2241, 0x9E3779B185EBCA8DULL, { 0x3B33BDEC09C21950ULL, 0xFB5273E20F608F41ULL } }, /* XSUM_XXH128_testdata[6725] */ + { 2242, 0x0000000000000000ULL, { 0x0FEB720613C813C3ULL, 0x0865E6121C0BF608ULL } }, /* XSUM_XXH128_testdata[6726] */ + { 2242, 0x000000009E3779B1ULL, { 0xD0DBA62A0BA551CFULL, 0xF622C0FD474504F6ULL } }, /* XSUM_XXH128_testdata[6727] */ + { 2242, 0x9E3779B185EBCA8DULL, { 0x45883187E8068D6CULL, 0x7E0060C8096DBA49ULL } }, /* XSUM_XXH128_testdata[6728] */ + { 2243, 0x0000000000000000ULL, { 0xFDD97DDF7A83E7A9ULL, 0x13530813B1EEC8C4ULL } }, /* XSUM_XXH128_testdata[6729] */ + { 2243, 0x000000009E3779B1ULL, { 0xEAE560C38D5FAE45ULL, 0x4E55BD3B6D71E41FULL } }, /* XSUM_XXH128_testdata[6730] */ + { 2243, 0x9E3779B185EBCA8DULL, { 0xA2115D49B6729AEDULL, 0x858ACCB08C100F0CULL } }, /* XSUM_XXH128_testdata[6731] */ + { 2244, 0x0000000000000000ULL, { 0x4171B56A25BAC312ULL, 0x709101DA52E3CE14ULL } }, /* XSUM_XXH128_testdata[6732] */ + { 2244, 0x000000009E3779B1ULL, { 0xC8EFA24DFD3F2F12ULL, 0x39D2C7784645938EULL } }, /* XSUM_XXH128_testdata[6733] */ + { 2244, 0x9E3779B185EBCA8DULL, { 0x173F38DE0FB9118FULL, 0x23F676030A76A091ULL } }, /* XSUM_XXH128_testdata[6734] */ + { 2245, 0x0000000000000000ULL, { 0xC21734A280918825ULL, 0x3FFEFEC6984F0555ULL } }, /* XSUM_XXH128_testdata[6735] */ + { 2245, 0x000000009E3779B1ULL, { 0x4D4CB7CE803359B9ULL, 0x2FD91A5199D6B9A3ULL } }, /* XSUM_XXH128_testdata[6736] */ + { 2245, 0x9E3779B185EBCA8DULL, { 0x3F7757BEE2F1A6E0ULL, 0xC31AE05AA0FAE408ULL } }, /* XSUM_XXH128_testdata[6737] */ + { 2246, 0x0000000000000000ULL, { 0x982A35FE583FF9E2ULL, 0x799FA98302BA9B76ULL } }, /* XSUM_XXH128_testdata[6738] */ + { 2246, 0x000000009E3779B1ULL, { 0x574B89084E821E73ULL, 0xEBA1AA8A6FAB2E50ULL } }, /* XSUM_XXH128_testdata[6739] */ + { 2246, 0x9E3779B185EBCA8DULL, { 0x1091A8124BCF0EE7ULL, 0xDBBA2F677C667AF4ULL } }, /* XSUM_XXH128_testdata[6740] */ + { 2247, 0x0000000000000000ULL, { 0xFEE42592EF7949F4ULL, 0xA2DF71CE5F54C948ULL } }, /* XSUM_XXH128_testdata[6741] */ + { 2247, 0x000000009E3779B1ULL, { 0xD4B8251809CB2EE7ULL, 0xF229C5B23EA49A1FULL } }, /* XSUM_XXH128_testdata[6742] */ + { 2247, 0x9E3779B185EBCA8DULL, { 0x12E829B9589D157AULL, 0x39781A79C5DE4BFAULL } }, /* XSUM_XXH128_testdata[6743] */ + { 2248, 0x0000000000000000ULL, { 0xF8D88BF42753ABEFULL, 0xB07D239233E4E43FULL } }, /* XSUM_XXH128_testdata[6744] */ + { 2248, 0x000000009E3779B1ULL, { 0x1F8D932C349C834DULL, 0xEDEE4959797D2FD7ULL } }, /* XSUM_XXH128_testdata[6745] */ + { 2248, 0x9E3779B185EBCA8DULL, { 0x43D2B06987075096ULL, 0xB8E027D1007AA0F7ULL } }, /* XSUM_XXH128_testdata[6746] */ + { 2249, 0x0000000000000000ULL, { 0x433F7E65BABEFAE2ULL, 0xAACA671D8D3AE709ULL } }, /* XSUM_XXH128_testdata[6747] */ + { 2249, 0x000000009E3779B1ULL, { 0x9A881E2D444AD972ULL, 0x9F1D668DBB5AFF6FULL } }, /* XSUM_XXH128_testdata[6748] */ + { 2249, 0x9E3779B185EBCA8DULL, { 0xEB03510641F3EAF5ULL, 0x597067EA11EBD5F7ULL } }, /* XSUM_XXH128_testdata[6749] */ + { 2250, 0x0000000000000000ULL, { 0xCB6D8FCF1FBF3E2BULL, 0xE27971F6F739076CULL } }, /* XSUM_XXH128_testdata[6750] */ + { 2250, 0x000000009E3779B1ULL, { 0x2704746C65528173ULL, 0x79305B793D1843F9ULL } }, /* XSUM_XXH128_testdata[6751] */ + { 2250, 0x9E3779B185EBCA8DULL, { 0xE405262636B96B7BULL, 0xC45A97B17D41F9F0ULL } }, /* XSUM_XXH128_testdata[6752] */ + { 2251, 0x0000000000000000ULL, { 0x88E4C80D03A165D4ULL, 0x61436DAD87EB2DC1ULL } }, /* XSUM_XXH128_testdata[6753] */ + { 2251, 0x000000009E3779B1ULL, { 0x2615EE20B42B531BULL, 0x7786CD872E92D21CULL } }, /* XSUM_XXH128_testdata[6754] */ + { 2251, 0x9E3779B185EBCA8DULL, { 0xE6B07A12A77D3525ULL, 0x21C2231258913A01ULL } }, /* XSUM_XXH128_testdata[6755] */ + { 2252, 0x0000000000000000ULL, { 0x7EE028994641A9D0ULL, 0xEDDA8D0DC6C4052CULL } }, /* XSUM_XXH128_testdata[6756] */ + { 2252, 0x000000009E3779B1ULL, { 0x8FE7425F2A8CF1EBULL, 0x32C39446632C56CBULL } }, /* XSUM_XXH128_testdata[6757] */ + { 2252, 0x9E3779B185EBCA8DULL, { 0x766BC25749111756ULL, 0xF2AA603C269E8583ULL } }, /* XSUM_XXH128_testdata[6758] */ + { 2253, 0x0000000000000000ULL, { 0xA9322E6F56357F96ULL, 0x96B91131EC910756ULL } }, /* XSUM_XXH128_testdata[6759] */ + { 2253, 0x000000009E3779B1ULL, { 0xF09A7AFFB83FC184ULL, 0xF051442A150398C2ULL } }, /* XSUM_XXH128_testdata[6760] */ + { 2253, 0x9E3779B185EBCA8DULL, { 0x2D6E4A271DBBF521ULL, 0x8C73B4FF2F419564ULL } }, /* XSUM_XXH128_testdata[6761] */ + { 2254, 0x0000000000000000ULL, { 0xD15B147C188AA2BBULL, 0xD614CE8B8FAF376FULL } }, /* XSUM_XXH128_testdata[6762] */ + { 2254, 0x000000009E3779B1ULL, { 0x43BE1BCF02EFD807ULL, 0xA06920458EA436A4ULL } }, /* XSUM_XXH128_testdata[6763] */ + { 2254, 0x9E3779B185EBCA8DULL, { 0x7A4C01C9E6C70CCDULL, 0x12533102BC8EF26AULL } }, /* XSUM_XXH128_testdata[6764] */ + { 2255, 0x0000000000000000ULL, { 0xDF32168D24541296ULL, 0x404264DF94B74674ULL } }, /* XSUM_XXH128_testdata[6765] */ + { 2255, 0x000000009E3779B1ULL, { 0x951FB825689A3C59ULL, 0xF2CFB5B0425CAA3EULL } }, /* XSUM_XXH128_testdata[6766] */ + { 2255, 0x9E3779B185EBCA8DULL, { 0x4EF59C308318E6C4ULL, 0x164C7CF6C82D3AC0ULL } }, /* XSUM_XXH128_testdata[6767] */ + { 2256, 0x0000000000000000ULL, { 0x73B27BE044941B9AULL, 0x390B5AC0C6270984ULL } }, /* XSUM_XXH128_testdata[6768] */ + { 2256, 0x000000009E3779B1ULL, { 0xDFC0F0C0C85C91D3ULL, 0xAD1D3166AFC387C3ULL } }, /* XSUM_XXH128_testdata[6769] */ + { 2256, 0x9E3779B185EBCA8DULL, { 0xA95CC44C98A25F24ULL, 0x387A94B25EF312B1ULL } }, /* XSUM_XXH128_testdata[6770] */ + { 2257, 0x0000000000000000ULL, { 0xB7FF030FE002B07AULL, 0xBD97883D719E1B21ULL } }, /* XSUM_XXH128_testdata[6771] */ + { 2257, 0x000000009E3779B1ULL, { 0x89AC4DA34059438CULL, 0xD2A36AD913A4E85DULL } }, /* XSUM_XXH128_testdata[6772] */ + { 2257, 0x9E3779B185EBCA8DULL, { 0xD5D5A36A92895385ULL, 0x6D804A8068D55ED6ULL } }, /* XSUM_XXH128_testdata[6773] */ + { 2258, 0x0000000000000000ULL, { 0x3A79D49D11BC482DULL, 0xCFC7C757CB01265FULL } }, /* XSUM_XXH128_testdata[6774] */ + { 2258, 0x000000009E3779B1ULL, { 0xE726EEF8347AE40AULL, 0xE5ED05B10D099862ULL } }, /* XSUM_XXH128_testdata[6775] */ + { 2258, 0x9E3779B185EBCA8DULL, { 0xA640B7A60386F7C4ULL, 0x770836C43C44B4E2ULL } }, /* XSUM_XXH128_testdata[6776] */ + { 2259, 0x0000000000000000ULL, { 0xEAA7DDE52003DB2BULL, 0x8C5F09C6D32549FDULL } }, /* XSUM_XXH128_testdata[6777] */ + { 2259, 0x000000009E3779B1ULL, { 0xF6C0F0061B907EE3ULL, 0xBA9BCE797772EDCBULL } }, /* XSUM_XXH128_testdata[6778] */ + { 2259, 0x9E3779B185EBCA8DULL, { 0x0A9F761E2DA46512ULL, 0x0FA3E99862841DFAULL } }, /* XSUM_XXH128_testdata[6779] */ + { 2260, 0x0000000000000000ULL, { 0x806C898C78E7C075ULL, 0x9A651C845835A9A0ULL } }, /* XSUM_XXH128_testdata[6780] */ + { 2260, 0x000000009E3779B1ULL, { 0x50B1F1F6BB1627EBULL, 0x9597CADEF766C3E2ULL } }, /* XSUM_XXH128_testdata[6781] */ + { 2260, 0x9E3779B185EBCA8DULL, { 0xBF57DC6510BEFADEULL, 0x9B2E7301286B8BA6ULL } }, /* XSUM_XXH128_testdata[6782] */ + { 2261, 0x0000000000000000ULL, { 0x6B80C72796FD5086ULL, 0x568315AB06ADB184ULL } }, /* XSUM_XXH128_testdata[6783] */ + { 2261, 0x000000009E3779B1ULL, { 0x7D22965C9159CC73ULL, 0xEC0627E22AED4E4FULL } }, /* XSUM_XXH128_testdata[6784] */ + { 2261, 0x9E3779B185EBCA8DULL, { 0x9A0504ADFE069F95ULL, 0xBC941E302BA17D0EULL } }, /* XSUM_XXH128_testdata[6785] */ + { 2262, 0x0000000000000000ULL, { 0xAD917992036A3B5AULL, 0xBEC3D7D426222B18ULL } }, /* XSUM_XXH128_testdata[6786] */ + { 2262, 0x000000009E3779B1ULL, { 0x9C02AFABEAF54E8DULL, 0x7CC885ED438BBED1ULL } }, /* XSUM_XXH128_testdata[6787] */ + { 2262, 0x9E3779B185EBCA8DULL, { 0x3FAE6607A704C6FDULL, 0x25805640843033A2ULL } }, /* XSUM_XXH128_testdata[6788] */ + { 2263, 0x0000000000000000ULL, { 0xD5C4096846EFC9FAULL, 0x2547DE0DF95E1690ULL } }, /* XSUM_XXH128_testdata[6789] */ + { 2263, 0x000000009E3779B1ULL, { 0xDB0946CAD0BD1BBBULL, 0xAE85BBEE9B41DDABULL } }, /* XSUM_XXH128_testdata[6790] */ + { 2263, 0x9E3779B185EBCA8DULL, { 0xA59FC9AE584E4FFCULL, 0x0AC1EB3F346367FAULL } }, /* XSUM_XXH128_testdata[6791] */ + { 2264, 0x0000000000000000ULL, { 0xC90E31857B03E2D8ULL, 0xAAADD1346CED1D2FULL } }, /* XSUM_XXH128_testdata[6792] */ + { 2264, 0x000000009E3779B1ULL, { 0x44EB06DD5B0F00ECULL, 0x578B072D623492CEULL } }, /* XSUM_XXH128_testdata[6793] */ + { 2264, 0x9E3779B185EBCA8DULL, { 0x517AE8E7C0CA7721ULL, 0x861364CC9105F9F9ULL } }, /* XSUM_XXH128_testdata[6794] */ + { 2265, 0x0000000000000000ULL, { 0x0A338421E1E95A00ULL, 0x8BC34134CC37F671ULL } }, /* XSUM_XXH128_testdata[6795] */ + { 2265, 0x000000009E3779B1ULL, { 0xB5D28401AE923347ULL, 0x3B28E6228744FA59ULL } }, /* XSUM_XXH128_testdata[6796] */ + { 2265, 0x9E3779B185EBCA8DULL, { 0x49166C0E030CE3C2ULL, 0x5C07CFCA56704556ULL } }, /* XSUM_XXH128_testdata[6797] */ + { 2266, 0x0000000000000000ULL, { 0x442ACE25D6B1D5F9ULL, 0x5C2346FA1AE89A0CULL } }, /* XSUM_XXH128_testdata[6798] */ + { 2266, 0x000000009E3779B1ULL, { 0x49A0676CC2A81F74ULL, 0x0DDE325479A40231ULL } }, /* XSUM_XXH128_testdata[6799] */ + { 2266, 0x9E3779B185EBCA8DULL, { 0x560649A1EE97FFECULL, 0x1DA90FC1E234351CULL } }, /* XSUM_XXH128_testdata[6800] */ + { 2267, 0x0000000000000000ULL, { 0x62832B7DC5917770ULL, 0x9CCC134D41B01746ULL } }, /* XSUM_XXH128_testdata[6801] */ + { 2267, 0x000000009E3779B1ULL, { 0x7703E4B191A27583ULL, 0x39F73DB26DA429ADULL } }, /* XSUM_XXH128_testdata[6802] */ + { 2267, 0x9E3779B185EBCA8DULL, { 0x9F21B3BC256217CDULL, 0x52FD9E0C6B15CE43ULL } }, /* XSUM_XXH128_testdata[6803] */ + { 2268, 0x0000000000000000ULL, { 0x85E736777334BEB3ULL, 0xD17FBF436F88E4E7ULL } }, /* XSUM_XXH128_testdata[6804] */ + { 2268, 0x000000009E3779B1ULL, { 0x85FDC39E16120D83ULL, 0x163ED95D8772EBF2ULL } }, /* XSUM_XXH128_testdata[6805] */ + { 2268, 0x9E3779B185EBCA8DULL, { 0x085EB6DE430CBC01ULL, 0x7980935DC0194543ULL } }, /* XSUM_XXH128_testdata[6806] */ + { 2269, 0x0000000000000000ULL, { 0xB152650BDF04F3BDULL, 0x56D50075ECFA7C42ULL } }, /* XSUM_XXH128_testdata[6807] */ + { 2269, 0x000000009E3779B1ULL, { 0x17776593002DFED0ULL, 0x72ED389870700A94ULL } }, /* XSUM_XXH128_testdata[6808] */ + { 2269, 0x9E3779B185EBCA8DULL, { 0x59EE9A7FFA69591CULL, 0x4813157B52095BFCULL } }, /* XSUM_XXH128_testdata[6809] */ + { 2270, 0x0000000000000000ULL, { 0x7A78609851DB8E6CULL, 0x24A4350177427FE4ULL } }, /* XSUM_XXH128_testdata[6810] */ + { 2270, 0x000000009E3779B1ULL, { 0x8E2E5CC302E33E55ULL, 0xF230C6C854A39B48ULL } }, /* XSUM_XXH128_testdata[6811] */ + { 2270, 0x9E3779B185EBCA8DULL, { 0xA9DB0E062FA3A378ULL, 0x428C95FD97EC4FC2ULL } }, /* XSUM_XXH128_testdata[6812] */ + { 2271, 0x0000000000000000ULL, { 0x0DE4C74FC715BB66ULL, 0x9FDEB6941807BEC1ULL } }, /* XSUM_XXH128_testdata[6813] */ + { 2271, 0x000000009E3779B1ULL, { 0x1135FEF7179694DBULL, 0x2E24074B8D10CD4AULL } }, /* XSUM_XXH128_testdata[6814] */ + { 2271, 0x9E3779B185EBCA8DULL, { 0x9667350BB9742CC2ULL, 0xAD9A6015E1E2E53EULL } }, /* XSUM_XXH128_testdata[6815] */ + { 2272, 0x0000000000000000ULL, { 0x205BA204206B1EA8ULL, 0xE625418BD6AE0BC2ULL } }, /* XSUM_XXH128_testdata[6816] */ + { 2272, 0x000000009E3779B1ULL, { 0x06A2F92E27130530ULL, 0x33DEC999FF2DEA7DULL } }, /* XSUM_XXH128_testdata[6817] */ + { 2272, 0x9E3779B185EBCA8DULL, { 0x65060EF03CA34352ULL, 0x37A6B57F4E2BB749ULL } }, /* XSUM_XXH128_testdata[6818] */ + { 2273, 0x0000000000000000ULL, { 0x78F18EA9AFB2BFA6ULL, 0xCAA0581ECD8BA531ULL } }, /* XSUM_XXH128_testdata[6819] */ + { 2273, 0x000000009E3779B1ULL, { 0x9DC585182A658188ULL, 0x551F55752FB196D3ULL } }, /* XSUM_XXH128_testdata[6820] */ + { 2273, 0x9E3779B185EBCA8DULL, { 0xE03E1E75C4F2ADC8ULL, 0x8C2BFDD2C294FF0AULL } }, /* XSUM_XXH128_testdata[6821] */ + { 2274, 0x0000000000000000ULL, { 0xC95182F464F94C39ULL, 0x7374EC9C88C081F3ULL } }, /* XSUM_XXH128_testdata[6822] */ + { 2274, 0x000000009E3779B1ULL, { 0x38DCC878032FD580ULL, 0x29DB0CEFAA916651ULL } }, /* XSUM_XXH128_testdata[6823] */ + { 2274, 0x9E3779B185EBCA8DULL, { 0xF124B16F1B073F14ULL, 0x6D271BBF4AE06991ULL } }, /* XSUM_XXH128_testdata[6824] */ + { 2275, 0x0000000000000000ULL, { 0x136A53CC1DAD378DULL, 0x37493D49F8E3DB39ULL } }, /* XSUM_XXH128_testdata[6825] */ + { 2275, 0x000000009E3779B1ULL, { 0xC1FF957F26280DC2ULL, 0x9EE7C448B3106F75ULL } }, /* XSUM_XXH128_testdata[6826] */ + { 2275, 0x9E3779B185EBCA8DULL, { 0xF3D85D25178CA3CEULL, 0xB672BE05EFC519B2ULL } }, /* XSUM_XXH128_testdata[6827] */ + { 2276, 0x0000000000000000ULL, { 0x27C664F033387D11ULL, 0x2C6297DC11F6DDF1ULL } }, /* XSUM_XXH128_testdata[6828] */ + { 2276, 0x000000009E3779B1ULL, { 0xF1352A93738CC180ULL, 0xF6E5EA1097941C77ULL } }, /* XSUM_XXH128_testdata[6829] */ + { 2276, 0x9E3779B185EBCA8DULL, { 0x63F3842BC044F50CULL, 0xB6CA417DBD06333FULL } }, /* XSUM_XXH128_testdata[6830] */ + { 2277, 0x0000000000000000ULL, { 0x77B856EDB92FD06EULL, 0xB2255935BD55FC03ULL } }, /* XSUM_XXH128_testdata[6831] */ + { 2277, 0x000000009E3779B1ULL, { 0xB6DA73C09D3022B0ULL, 0x0B5AC13CB39F6C5AULL } }, /* XSUM_XXH128_testdata[6832] */ + { 2277, 0x9E3779B185EBCA8DULL, { 0x593AA4B7B0BAE338ULL, 0x1210C7C809E48CCCULL } }, /* XSUM_XXH128_testdata[6833] */ + { 2278, 0x0000000000000000ULL, { 0x1D47AFAB4DF2449BULL, 0x91249725F6D02241ULL } }, /* XSUM_XXH128_testdata[6834] */ + { 2278, 0x000000009E3779B1ULL, { 0x2A96C986BFABCB68ULL, 0x1CDC080BF366D508ULL } }, /* XSUM_XXH128_testdata[6835] */ + { 2278, 0x9E3779B185EBCA8DULL, { 0x8E5C48BB76EF91C6ULL, 0x3E110817011C3705ULL } }, /* XSUM_XXH128_testdata[6836] */ + { 2279, 0x0000000000000000ULL, { 0x0D7B7656E77FF387ULL, 0x8D7612C8B70202D7ULL } }, /* XSUM_XXH128_testdata[6837] */ + { 2279, 0x000000009E3779B1ULL, { 0x9B317192DFEEFEBAULL, 0x2593AEE1679FDE0DULL } }, /* XSUM_XXH128_testdata[6838] */ + { 2279, 0x9E3779B185EBCA8DULL, { 0x3B27C87292A3A4C6ULL, 0x9BF27D059ED0262CULL } }, /* XSUM_XXH128_testdata[6839] */ + { 2280, 0x0000000000000000ULL, { 0xBEDCDF7203D9E958ULL, 0x6AB29179E626B0E7ULL } }, /* XSUM_XXH128_testdata[6840] */ + { 2280, 0x000000009E3779B1ULL, { 0x8A8A44729C795914ULL, 0x748D64C9D51ABCCEULL } }, /* XSUM_XXH128_testdata[6841] */ + { 2280, 0x9E3779B185EBCA8DULL, { 0x06AC4295AE6C291BULL, 0x671D663A85C00FB1ULL } }, /* XSUM_XXH128_testdata[6842] */ + { 2281, 0x0000000000000000ULL, { 0xA1E08B2F1E533106ULL, 0x1452A7C2EA507711ULL } }, /* XSUM_XXH128_testdata[6843] */ + { 2281, 0x000000009E3779B1ULL, { 0x833FCC7C463B7532ULL, 0xAFCFC31275CD682CULL } }, /* XSUM_XXH128_testdata[6844] */ + { 2281, 0x9E3779B185EBCA8DULL, { 0x53FA8D8EEF4A1C63ULL, 0x3A4E66A9C47E6632ULL } }, /* XSUM_XXH128_testdata[6845] */ + { 2282, 0x0000000000000000ULL, { 0x3EF3E8E701C0C7B4ULL, 0x8037352B6FB23554ULL } }, /* XSUM_XXH128_testdata[6846] */ + { 2282, 0x000000009E3779B1ULL, { 0xCAD66BCA27870E55ULL, 0x8075399AFCB6D899ULL } }, /* XSUM_XXH128_testdata[6847] */ + { 2282, 0x9E3779B185EBCA8DULL, { 0xE0FD1C44964D8D77ULL, 0xEB5AB22061EFC7D6ULL } }, /* XSUM_XXH128_testdata[6848] */ + { 2283, 0x0000000000000000ULL, { 0xC565B056636147AEULL, 0x530902249003BCC6ULL } }, /* XSUM_XXH128_testdata[6849] */ + { 2283, 0x000000009E3779B1ULL, { 0xE881584FCD5202AFULL, 0xFA38129F3D819C53ULL } }, /* XSUM_XXH128_testdata[6850] */ + { 2283, 0x9E3779B185EBCA8DULL, { 0x3B002D7D59F1A1B2ULL, 0x04CF65C459EB0D73ULL } }, /* XSUM_XXH128_testdata[6851] */ + { 2284, 0x0000000000000000ULL, { 0x09A3D58C702C1043ULL, 0x15BC371D96187402ULL } }, /* XSUM_XXH128_testdata[6852] */ + { 2284, 0x000000009E3779B1ULL, { 0x7AABD2DE3D0CA036ULL, 0x9C98CE3DD5DDEDD1ULL } }, /* XSUM_XXH128_testdata[6853] */ + { 2284, 0x9E3779B185EBCA8DULL, { 0x120E2516F3560387ULL, 0xD15AA3DA740D5779ULL } }, /* XSUM_XXH128_testdata[6854] */ + { 2285, 0x0000000000000000ULL, { 0xBE7D2B875A7C12DFULL, 0xC5B44458019A7048ULL } }, /* XSUM_XXH128_testdata[6855] */ + { 2285, 0x000000009E3779B1ULL, { 0x6F5A937AB0D76A90ULL, 0x348887207B242B66ULL } }, /* XSUM_XXH128_testdata[6856] */ + { 2285, 0x9E3779B185EBCA8DULL, { 0xC08D9B2134293E93ULL, 0xB24E935D8B0C629DULL } }, /* XSUM_XXH128_testdata[6857] */ + { 2286, 0x0000000000000000ULL, { 0x955BF3D2E94FD1FFULL, 0x26B1603F87103DA0ULL } }, /* XSUM_XXH128_testdata[6858] */ + { 2286, 0x000000009E3779B1ULL, { 0x458946D0FB4D4175ULL, 0xC511E4A92F66D920ULL } }, /* XSUM_XXH128_testdata[6859] */ + { 2286, 0x9E3779B185EBCA8DULL, { 0xAA5CE1EDB06F7908ULL, 0x4C9F1B7D672079AAULL } }, /* XSUM_XXH128_testdata[6860] */ + { 2287, 0x0000000000000000ULL, { 0xECD34428F06D5BFDULL, 0xE0B947F3D6218B60ULL } }, /* XSUM_XXH128_testdata[6861] */ + { 2287, 0x000000009E3779B1ULL, { 0x1BEAECE4B06CBD58ULL, 0xF6583FE4B93AEF4CULL } }, /* XSUM_XXH128_testdata[6862] */ + { 2287, 0x9E3779B185EBCA8DULL, { 0x35880E98EEA5FF86ULL, 0xB92369E0BFDACA5DULL } }, /* XSUM_XXH128_testdata[6863] */ + { 2288, 0x0000000000000000ULL, { 0xC945F58A3E11BBBFULL, 0x15BB48C7CD5A8798ULL } }, /* XSUM_XXH128_testdata[6864] */ + { 2288, 0x000000009E3779B1ULL, { 0x78BFB58942B7B575ULL, 0xF8030F9674A151AAULL } }, /* XSUM_XXH128_testdata[6865] */ + { 2288, 0x9E3779B185EBCA8DULL, { 0x99A70C813A3A8A06ULL, 0xC8D64BB5E9B4E2B9ULL } }, /* XSUM_XXH128_testdata[6866] */ + { 2289, 0x0000000000000000ULL, { 0x2A1B1D4258A3EAD9ULL, 0x260CC90DCC0B41BDULL } }, /* XSUM_XXH128_testdata[6867] */ + { 2289, 0x000000009E3779B1ULL, { 0xA88786E3B9C02CF9ULL, 0x9B8F67F80E897A90ULL } }, /* XSUM_XXH128_testdata[6868] */ + { 2289, 0x9E3779B185EBCA8DULL, { 0x026E77D4FFBBA3F7ULL, 0x7139AD48F8BB34F2ULL } }, /* XSUM_XXH128_testdata[6869] */ + { 2290, 0x0000000000000000ULL, { 0x737A11187E3CC729ULL, 0x1C4AB67D6DE39662ULL } }, /* XSUM_XXH128_testdata[6870] */ + { 2290, 0x000000009E3779B1ULL, { 0x998C4C7E7BC0F467ULL, 0xDDF5ECD1EB6221A1ULL } }, /* XSUM_XXH128_testdata[6871] */ + { 2290, 0x9E3779B185EBCA8DULL, { 0xD890E8F23AC2243DULL, 0x132E79E65632E967ULL } }, /* XSUM_XXH128_testdata[6872] */ + { 2291, 0x0000000000000000ULL, { 0xD8B8D24905007477ULL, 0xBF274D9D57B53B57ULL } }, /* XSUM_XXH128_testdata[6873] */ + { 2291, 0x000000009E3779B1ULL, { 0xD7AEC843EEFAD203ULL, 0x1F16106D311DBDF5ULL } }, /* XSUM_XXH128_testdata[6874] */ + { 2291, 0x9E3779B185EBCA8DULL, { 0xC612772E5EFD06FCULL, 0xA4639A6364CB679EULL } }, /* XSUM_XXH128_testdata[6875] */ + { 2292, 0x0000000000000000ULL, { 0x75979C65433116DFULL, 0x84C7F8805965FC2EULL } }, /* XSUM_XXH128_testdata[6876] */ + { 2292, 0x000000009E3779B1ULL, { 0xBB49B18193EA7E5FULL, 0xCB9A3DACC298F727ULL } }, /* XSUM_XXH128_testdata[6877] */ + { 2292, 0x9E3779B185EBCA8DULL, { 0xF6834E2FA35BF140ULL, 0x5A8AECBF69C525A2ULL } }, /* XSUM_XXH128_testdata[6878] */ + { 2293, 0x0000000000000000ULL, { 0xC6B24469C52F92F0ULL, 0xFF2BD29A7ACA1451ULL } }, /* XSUM_XXH128_testdata[6879] */ + { 2293, 0x000000009E3779B1ULL, { 0x49C280F99B15B058ULL, 0xF46F7BC6E911EBE3ULL } }, /* XSUM_XXH128_testdata[6880] */ + { 2293, 0x9E3779B185EBCA8DULL, { 0xDB3D609B07535CDAULL, 0x7AA2DC2F756D4B6EULL } }, /* XSUM_XXH128_testdata[6881] */ + { 2294, 0x0000000000000000ULL, { 0x65BB90A9381B412AULL, 0x1BEC75A5FF1B01F1ULL } }, /* XSUM_XXH128_testdata[6882] */ + { 2294, 0x000000009E3779B1ULL, { 0xB8C743C7762B73E7ULL, 0x40D5AA1E21D667B2ULL } }, /* XSUM_XXH128_testdata[6883] */ + { 2294, 0x9E3779B185EBCA8DULL, { 0x9E48CE2F501345AFULL, 0x280F6E5C06B8A462ULL } }, /* XSUM_XXH128_testdata[6884] */ + { 2295, 0x0000000000000000ULL, { 0x005CF4C4F7FEB7E7ULL, 0xEEFA4B479C128C28ULL } }, /* XSUM_XXH128_testdata[6885] */ + { 2295, 0x000000009E3779B1ULL, { 0xBA90F91A99BD6088ULL, 0x0EAE7F92D6EFA37BULL } }, /* XSUM_XXH128_testdata[6886] */ + { 2295, 0x9E3779B185EBCA8DULL, { 0x3012626B178A2890ULL, 0xB3F4D0F05CE8739FULL } }, /* XSUM_XXH128_testdata[6887] */ + { 2296, 0x0000000000000000ULL, { 0xD22B7B9D733C15EBULL, 0xE22497BD07B64D4CULL } }, /* XSUM_XXH128_testdata[6888] */ + { 2296, 0x000000009E3779B1ULL, { 0xD2E30A7F54AC734FULL, 0xED03DBEF3DB75F82ULL } }, /* XSUM_XXH128_testdata[6889] */ + { 2296, 0x9E3779B185EBCA8DULL, { 0xF1401C2EABBC67BFULL, 0xDEEE0FF3D51A0F4DULL } }, /* XSUM_XXH128_testdata[6890] */ + { 2297, 0x0000000000000000ULL, { 0x8BAF32C8CD870138ULL, 0xDB8B3F98BD9D450AULL } }, /* XSUM_XXH128_testdata[6891] */ + { 2297, 0x000000009E3779B1ULL, { 0xB07B20E648640F20ULL, 0x0F279C8FB2F1DC57ULL } }, /* XSUM_XXH128_testdata[6892] */ + { 2297, 0x9E3779B185EBCA8DULL, { 0xDD48C8721FF0FF99ULL, 0x53144BC0845E8702ULL } }, /* XSUM_XXH128_testdata[6893] */ + { 2298, 0x0000000000000000ULL, { 0xC39C343085640F78ULL, 0xCCC57776D621B8F5ULL } }, /* XSUM_XXH128_testdata[6894] */ + { 2298, 0x000000009E3779B1ULL, { 0x60218C18665BB381ULL, 0xD6DC2515CECB0375ULL } }, /* XSUM_XXH128_testdata[6895] */ + { 2298, 0x9E3779B185EBCA8DULL, { 0x39263D88E4B12DECULL, 0xD2FFC5D842E3AAA8ULL } }, /* XSUM_XXH128_testdata[6896] */ + { 2299, 0x0000000000000000ULL, { 0x883DF03717BF1809ULL, 0xC48F34672483B62CULL } }, /* XSUM_XXH128_testdata[6897] */ + { 2299, 0x000000009E3779B1ULL, { 0x5A30EAE44A5C0953ULL, 0x345A6E9B98F25EA0ULL } }, /* XSUM_XXH128_testdata[6898] */ + { 2299, 0x9E3779B185EBCA8DULL, { 0xAD7775D2C13889B7ULL, 0xE9E49B1E2AFCC3F2ULL } }, /* XSUM_XXH128_testdata[6899] */ + { 2300, 0x0000000000000000ULL, { 0xE94780E1098E8AD5ULL, 0x97A70787C96DF57EULL } }, /* XSUM_XXH128_testdata[6900] */ + { 2300, 0x000000009E3779B1ULL, { 0xBDB0C67515EBD14DULL, 0x5F41484CBDAFEEC3ULL } }, /* XSUM_XXH128_testdata[6901] */ + { 2300, 0x9E3779B185EBCA8DULL, { 0x49C30E77841F419EULL, 0x9234DEB4E048BDB8ULL } }, /* XSUM_XXH128_testdata[6902] */ + { 2301, 0x0000000000000000ULL, { 0xB49F4AB400E3588BULL, 0x2CC3DE6CBDF46551ULL } }, /* XSUM_XXH128_testdata[6903] */ + { 2301, 0x000000009E3779B1ULL, { 0x4D03EE9DF7508A2EULL, 0xBAA9B7EF3866518CULL } }, /* XSUM_XXH128_testdata[6904] */ + { 2301, 0x9E3779B185EBCA8DULL, { 0xC0B43B291C7D50E2ULL, 0xF24ACBD815A6D3CAULL } }, /* XSUM_XXH128_testdata[6905] */ + { 2302, 0x0000000000000000ULL, { 0xED4FE85093C1F085ULL, 0x14F0AFE4AA80199FULL } }, /* XSUM_XXH128_testdata[6906] */ + { 2302, 0x000000009E3779B1ULL, { 0xD2F29AA8D07C3208ULL, 0x4A066B1F1565D38FULL } }, /* XSUM_XXH128_testdata[6907] */ + { 2302, 0x9E3779B185EBCA8DULL, { 0x63AFDAE0A1025D7CULL, 0xA49AEBB8875A31ECULL } }, /* XSUM_XXH128_testdata[6908] */ + { 2303, 0x0000000000000000ULL, { 0xF3DE079F959D331FULL, 0x444DB4A19D179E7BULL } }, /* XSUM_XXH128_testdata[6909] */ + { 2303, 0x000000009E3779B1ULL, { 0x1EB66BD166BCFE0EULL, 0x504DF4B6C795ABD6ULL } }, /* XSUM_XXH128_testdata[6910] */ + { 2303, 0x9E3779B185EBCA8DULL, { 0xADC58DC8F5685791ULL, 0x1F4128A0BA015D07ULL } }, /* XSUM_XXH128_testdata[6911] */ + { 2304, 0x0000000000000000ULL, { 0x16677470A0BCA896ULL, 0xD055E454570D4D21ULL } }, /* XSUM_XXH128_testdata[6912] */ + { 2304, 0x000000009E3779B1ULL, { 0x2F55645C358C522BULL, 0x7589AAD0FEADC8B3ULL } }, /* XSUM_XXH128_testdata[6913] */ + { 2304, 0x9E3779B185EBCA8DULL, { 0x19DD85F7C3CD2427ULL, 0x671F5482436A12ABULL } }, /* XSUM_XXH128_testdata[6914] */ + { 2305, 0x0000000000000000ULL, { 0xEEDF43B5C7B9728CULL, 0xA3E51C4726EF1E3CULL } }, /* XSUM_XXH128_testdata[6915] */ + { 2305, 0x000000009E3779B1ULL, { 0x14BAFBAE798F5C19ULL, 0x44CF684CA461B2A5ULL } }, /* XSUM_XXH128_testdata[6916] */ + { 2305, 0x9E3779B185EBCA8DULL, { 0xC3ECE12FE8DC206EULL, 0x2F7781B88B81F9A3ULL } }, /* XSUM_XXH128_testdata[6917] */ + { 2306, 0x0000000000000000ULL, { 0x67586E22E7918464ULL, 0x95AC2EBABD16AC3BULL } }, /* XSUM_XXH128_testdata[6918] */ + { 2306, 0x000000009E3779B1ULL, { 0xF37E9EE5D547AD1AULL, 0x49AFD25C3AB333A5ULL } }, /* XSUM_XXH128_testdata[6919] */ + { 2306, 0x9E3779B185EBCA8DULL, { 0x699DA7854C898E24ULL, 0x5036D114A1A39274ULL } }, /* XSUM_XXH128_testdata[6920] */ + { 2307, 0x0000000000000000ULL, { 0xE6B9B555EC783F03ULL, 0x20C19D85BB037FACULL } }, /* XSUM_XXH128_testdata[6921] */ + { 2307, 0x000000009E3779B1ULL, { 0xC747DC229852A8A7ULL, 0xBE9B7EB851455FB5ULL } }, /* XSUM_XXH128_testdata[6922] */ + { 2307, 0x9E3779B185EBCA8DULL, { 0x85E3784DE2E5875BULL, 0x57683FBF36D3D545ULL } }, /* XSUM_XXH128_testdata[6923] */ + { 2308, 0x0000000000000000ULL, { 0x7C3C6B95D57777E4ULL, 0x5B7BFE5ED200B670ULL } }, /* XSUM_XXH128_testdata[6924] */ + { 2308, 0x000000009E3779B1ULL, { 0xB6F12D4792D0B27DULL, 0x1875F9D16525BD7AULL } }, /* XSUM_XXH128_testdata[6925] */ + { 2308, 0x9E3779B185EBCA8DULL, { 0x2BAF3E6A01143518ULL, 0xB7EB96805E2F4C49ULL } }, /* XSUM_XXH128_testdata[6926] */ + { 2309, 0x0000000000000000ULL, { 0xB2D2F7E9194C38C8ULL, 0x76BB865FD92BE307ULL } }, /* XSUM_XXH128_testdata[6927] */ + { 2309, 0x000000009E3779B1ULL, { 0xDA8B58D5C707EC46ULL, 0x7A44B3BFE37A3C55ULL } }, /* XSUM_XXH128_testdata[6928] */ + { 2309, 0x9E3779B185EBCA8DULL, { 0x08CFA0325B330C15ULL, 0x73D2BB8371CD2397ULL } }, /* XSUM_XXH128_testdata[6929] */ + { 2310, 0x0000000000000000ULL, { 0x93BD3D647C099F3CULL, 0x499C57A26178E503ULL } }, /* XSUM_XXH128_testdata[6930] */ + { 2310, 0x000000009E3779B1ULL, { 0xB93C40DB82DF4523ULL, 0xBB3760B84A34A92AULL } }, /* XSUM_XXH128_testdata[6931] */ + { 2310, 0x9E3779B185EBCA8DULL, { 0xA31975D7871B3AE2ULL, 0x22ED4E0F235B4DC7ULL } }, /* XSUM_XXH128_testdata[6932] */ + { 2311, 0x0000000000000000ULL, { 0x9DDB170614BB9FB5ULL, 0x0852EAD5DBEF1F5FULL } }, /* XSUM_XXH128_testdata[6933] */ + { 2311, 0x000000009E3779B1ULL, { 0xD9670DF02E12DC7EULL, 0x62EE7C7A2B04555FULL } }, /* XSUM_XXH128_testdata[6934] */ + { 2311, 0x9E3779B185EBCA8DULL, { 0x64EB1577898D85ABULL, 0xF56B9DF993DF1E60ULL } }, /* XSUM_XXH128_testdata[6935] */ + { 2312, 0x0000000000000000ULL, { 0x03510487528E3167ULL, 0x57B550D479216F38ULL } }, /* XSUM_XXH128_testdata[6936] */ + { 2312, 0x000000009E3779B1ULL, { 0x41A1B84579085C1FULL, 0x21FD1B3644A3F426ULL } }, /* XSUM_XXH128_testdata[6937] */ + { 2312, 0x9E3779B185EBCA8DULL, { 0x569C5D84FBA7D5D8ULL, 0x5B1C0EC4B8349913ULL } }, /* XSUM_XXH128_testdata[6938] */ + { 2313, 0x0000000000000000ULL, { 0x83F66CE2C603CD7AULL, 0xE401CFD4948F73F1ULL } }, /* XSUM_XXH128_testdata[6939] */ + { 2313, 0x000000009E3779B1ULL, { 0x6EC1D580690748A7ULL, 0xADA1C84E375C67FDULL } }, /* XSUM_XXH128_testdata[6940] */ + { 2313, 0x9E3779B185EBCA8DULL, { 0x5FE69DBD86E8207CULL, 0x6C62344611AA3599ULL } }, /* XSUM_XXH128_testdata[6941] */ + { 2314, 0x0000000000000000ULL, { 0x3E340E2AA806D580ULL, 0x8CFE4866C118A0B4ULL } }, /* XSUM_XXH128_testdata[6942] */ + { 2314, 0x000000009E3779B1ULL, { 0xF0DA571731979C57ULL, 0xF6262995651CA25AULL } }, /* XSUM_XXH128_testdata[6943] */ + { 2314, 0x9E3779B185EBCA8DULL, { 0xCCFDA55FF364E867ULL, 0xC59DD9B18B73A9FAULL } }, /* XSUM_XXH128_testdata[6944] */ + { 2315, 0x0000000000000000ULL, { 0x77948228CAAC839FULL, 0xCD044F23BA54E9FCULL } }, /* XSUM_XXH128_testdata[6945] */ + { 2315, 0x000000009E3779B1ULL, { 0x40486704CD721708ULL, 0xCEC028D499CF9AB7ULL } }, /* XSUM_XXH128_testdata[6946] */ + { 2315, 0x9E3779B185EBCA8DULL, { 0xD867BD5C820D7CA4ULL, 0xE3C611CC76C033B1ULL } }, /* XSUM_XXH128_testdata[6947] */ + { 2316, 0x0000000000000000ULL, { 0xA358FC1C95EDEFB1ULL, 0xD28DD90A8DA21592ULL } }, /* XSUM_XXH128_testdata[6948] */ + { 2316, 0x000000009E3779B1ULL, { 0xAD8914A012EBA179ULL, 0xA5F839D860A9247DULL } }, /* XSUM_XXH128_testdata[6949] */ + { 2316, 0x9E3779B185EBCA8DULL, { 0xBE86C4D4964F616DULL, 0x1D5934DECE697756ULL } }, /* XSUM_XXH128_testdata[6950] */ + { 2317, 0x0000000000000000ULL, { 0x592C2C674DBFA5E1ULL, 0x93B946E70DB47203ULL } }, /* XSUM_XXH128_testdata[6951] */ + { 2317, 0x000000009E3779B1ULL, { 0x124E39155D30A248ULL, 0x8670192F75599CEEULL } }, /* XSUM_XXH128_testdata[6952] */ + { 2317, 0x9E3779B185EBCA8DULL, { 0xB961DC246722DFE2ULL, 0x75CB55D6BFEC3D0FULL } }, /* XSUM_XXH128_testdata[6953] */ + { 2318, 0x0000000000000000ULL, { 0x9D78B13CE3C7FE25ULL, 0x3ECF7ACD26F3F938ULL } }, /* XSUM_XXH128_testdata[6954] */ + { 2318, 0x000000009E3779B1ULL, { 0x354FD20E51924098ULL, 0xC012CAF6C95D647FULL } }, /* XSUM_XXH128_testdata[6955] */ + { 2318, 0x9E3779B185EBCA8DULL, { 0xE6B8F5ECDD2BEDE7ULL, 0xC5180407F0D64737ULL } }, /* XSUM_XXH128_testdata[6956] */ + { 2319, 0x0000000000000000ULL, { 0xB93E58276543CBFEULL, 0xF6D9737C273ACC17ULL } }, /* XSUM_XXH128_testdata[6957] */ + { 2319, 0x000000009E3779B1ULL, { 0xF0B5D1993B59E97BULL, 0x79B7A57BC237C2A5ULL } }, /* XSUM_XXH128_testdata[6958] */ + { 2319, 0x9E3779B185EBCA8DULL, { 0x7249F4DBA19A2F6BULL, 0x7A323E492473FFE8ULL } }, /* XSUM_XXH128_testdata[6959] */ + { 2320, 0x0000000000000000ULL, { 0xDEAD306DC84A30E3ULL, 0x63B41E631F4B70F5ULL } }, /* XSUM_XXH128_testdata[6960] */ + { 2320, 0x000000009E3779B1ULL, { 0x6DC2D26F7ADCB1FFULL, 0x0F86AB0DC9AAF755ULL } }, /* XSUM_XXH128_testdata[6961] */ + { 2320, 0x9E3779B185EBCA8DULL, { 0x25A12038A67CF226ULL, 0xE46897B069936F47ULL } }, /* XSUM_XXH128_testdata[6962] */ + { 2321, 0x0000000000000000ULL, { 0x68C9AEEC565E82B9ULL, 0xC41F6FB573FCCD73ULL } }, /* XSUM_XXH128_testdata[6963] */ + { 2321, 0x000000009E3779B1ULL, { 0xAE457047BAAEBE99ULL, 0x065449E4B1EA2335ULL } }, /* XSUM_XXH128_testdata[6964] */ + { 2321, 0x9E3779B185EBCA8DULL, { 0x6FDC93837DB71F1FULL, 0x49DB0D6EF08F084AULL } }, /* XSUM_XXH128_testdata[6965] */ + { 2322, 0x0000000000000000ULL, { 0xEF1D98CB4B1C4457ULL, 0xB93AC2FCB195B9C4ULL } }, /* XSUM_XXH128_testdata[6966] */ + { 2322, 0x000000009E3779B1ULL, { 0x2D68DC6A758F1D99ULL, 0xCA4860C4426D2E01ULL } }, /* XSUM_XXH128_testdata[6967] */ + { 2322, 0x9E3779B185EBCA8DULL, { 0x56871B4AD7DE1080ULL, 0x987292B1BA789D86ULL } }, /* XSUM_XXH128_testdata[6968] */ + { 2323, 0x0000000000000000ULL, { 0xB6163E363790B29BULL, 0x42B71B601B2529D6ULL } }, /* XSUM_XXH128_testdata[6969] */ + { 2323, 0x000000009E3779B1ULL, { 0x3F6A77E0818DCAACULL, 0xF568051103650B9FULL } }, /* XSUM_XXH128_testdata[6970] */ + { 2323, 0x9E3779B185EBCA8DULL, { 0x005293AC1F8D8089ULL, 0xD9E9B76A01AAEB49ULL } }, /* XSUM_XXH128_testdata[6971] */ + { 2324, 0x0000000000000000ULL, { 0x9F8BC517258F98E6ULL, 0x7DDFBEAB0E3500B5ULL } }, /* XSUM_XXH128_testdata[6972] */ + { 2324, 0x000000009E3779B1ULL, { 0xFF5F039091377776ULL, 0x88B4177C2984817DULL } }, /* XSUM_XXH128_testdata[6973] */ + { 2324, 0x9E3779B185EBCA8DULL, { 0x7C4CE8558C514DDEULL, 0x02A5213CD9A86B7DULL } }, /* XSUM_XXH128_testdata[6974] */ + { 2325, 0x0000000000000000ULL, { 0x177BEB437391C2B4ULL, 0xA23E6C40A128D8D3ULL } }, /* XSUM_XXH128_testdata[6975] */ + { 2325, 0x000000009E3779B1ULL, { 0xF17B4A7D294CE5E0ULL, 0x0FE5B3E9EB258A1BULL } }, /* XSUM_XXH128_testdata[6976] */ + { 2325, 0x9E3779B185EBCA8DULL, { 0xA71D1BD2B3918CFCULL, 0xE8F9523435FE0D3FULL } }, /* XSUM_XXH128_testdata[6977] */ + { 2326, 0x0000000000000000ULL, { 0x105176B2B29D46EDULL, 0x45830590B5496948ULL } }, /* XSUM_XXH128_testdata[6978] */ + { 2326, 0x000000009E3779B1ULL, { 0x6543713F6E4BE72DULL, 0x369756DB12E54EC7ULL } }, /* XSUM_XXH128_testdata[6979] */ + { 2326, 0x9E3779B185EBCA8DULL, { 0x44914594F5678B2BULL, 0x0F500476658F8409ULL } }, /* XSUM_XXH128_testdata[6980] */ + { 2327, 0x0000000000000000ULL, { 0x75F20D803272333FULL, 0xC7B9C29096DD6731ULL } }, /* XSUM_XXH128_testdata[6981] */ + { 2327, 0x000000009E3779B1ULL, { 0x9C507FE1BCD95EB7ULL, 0xF8FD811A97DFD79CULL } }, /* XSUM_XXH128_testdata[6982] */ + { 2327, 0x9E3779B185EBCA8DULL, { 0xC09622708F32C51DULL, 0x2F10FDE85E3F4DAEULL } }, /* XSUM_XXH128_testdata[6983] */ + { 2328, 0x0000000000000000ULL, { 0xC9840B7DF3679DE5ULL, 0x28FAA955608641A4ULL } }, /* XSUM_XXH128_testdata[6984] */ + { 2328, 0x000000009E3779B1ULL, { 0xDD0DF29864A5A812ULL, 0xE5234D6D404D8EA2ULL } }, /* XSUM_XXH128_testdata[6985] */ + { 2328, 0x9E3779B185EBCA8DULL, { 0x0628F71DEF9CA9B9ULL, 0x53580F6AB2CE8CECULL } }, /* XSUM_XXH128_testdata[6986] */ + { 2329, 0x0000000000000000ULL, { 0x547CD6B9CC06F4E1ULL, 0xDB8E9A95341B1D63ULL } }, /* XSUM_XXH128_testdata[6987] */ + { 2329, 0x000000009E3779B1ULL, { 0x5C3D236A3063EE50ULL, 0xEC1C70C2DAA0EFEFULL } }, /* XSUM_XXH128_testdata[6988] */ + { 2329, 0x9E3779B185EBCA8DULL, { 0xFCD3AB14BE7B942BULL, 0x17F6BB66862A7A7DULL } }, /* XSUM_XXH128_testdata[6989] */ + { 2330, 0x0000000000000000ULL, { 0x00DDC3B84881B56AULL, 0xB977DFD5E0001F7BULL } }, /* XSUM_XXH128_testdata[6990] */ + { 2330, 0x000000009E3779B1ULL, { 0xF4D2F281D7C589D2ULL, 0xABD126A939604E1AULL } }, /* XSUM_XXH128_testdata[6991] */ + { 2330, 0x9E3779B185EBCA8DULL, { 0xBCE205376DBCA1CEULL, 0x2704064DA068E51DULL } }, /* XSUM_XXH128_testdata[6992] */ + { 2331, 0x0000000000000000ULL, { 0xC6E1FB47CC10BD0CULL, 0x473A4B57EBB3EC9EULL } }, /* XSUM_XXH128_testdata[6993] */ + { 2331, 0x000000009E3779B1ULL, { 0x4629AE9416D08F65ULL, 0xCFEF5EFEF74C37FBULL } }, /* XSUM_XXH128_testdata[6994] */ + { 2331, 0x9E3779B185EBCA8DULL, { 0x5ED1015A48245D1AULL, 0x7E620CD1F07B3860ULL } }, /* XSUM_XXH128_testdata[6995] */ + { 2332, 0x0000000000000000ULL, { 0xC203CF14C7812768ULL, 0x099D54526E296BD0ULL } }, /* XSUM_XXH128_testdata[6996] */ + { 2332, 0x000000009E3779B1ULL, { 0xA3B800B30832ACC6ULL, 0x021F376C91EC0314ULL } }, /* XSUM_XXH128_testdata[6997] */ + { 2332, 0x9E3779B185EBCA8DULL, { 0xAE6CED78162528BDULL, 0x97ADE860A51C8736ULL } }, /* XSUM_XXH128_testdata[6998] */ + { 2333, 0x0000000000000000ULL, { 0xDB94037DD38C9779ULL, 0xD4E5BA171A83637FULL } }, /* XSUM_XXH128_testdata[6999] */ + { 2333, 0x000000009E3779B1ULL, { 0xA33F760BD54B358AULL, 0xC9DB36BDBCDA82DBULL } }, /* XSUM_XXH128_testdata[7000] */ + { 2333, 0x9E3779B185EBCA8DULL, { 0x0C4467D21B8A15B8ULL, 0xABFBFDA919EC8047ULL } }, /* XSUM_XXH128_testdata[7001] */ + { 2334, 0x0000000000000000ULL, { 0x25219C6EACA8B876ULL, 0xF59AFEF4A7809297ULL } }, /* XSUM_XXH128_testdata[7002] */ + { 2334, 0x000000009E3779B1ULL, { 0xB07B51E9B35C788CULL, 0x07CBB2A9E82A175AULL } }, /* XSUM_XXH128_testdata[7003] */ + { 2334, 0x9E3779B185EBCA8DULL, { 0x237F51AF413D775CULL, 0x9562C0FCC1E65027ULL } }, /* XSUM_XXH128_testdata[7004] */ + { 2335, 0x0000000000000000ULL, { 0x84761CF8AD8FDCDCULL, 0x72197EE0803D4D54ULL } }, /* XSUM_XXH128_testdata[7005] */ + { 2335, 0x000000009E3779B1ULL, { 0xD5EEC66427773E78ULL, 0xF8918707A42CF0BCULL } }, /* XSUM_XXH128_testdata[7006] */ + { 2335, 0x9E3779B185EBCA8DULL, { 0x51034B3E374768BEULL, 0x4EC3D806D3B8807EULL } }, /* XSUM_XXH128_testdata[7007] */ + { 2336, 0x0000000000000000ULL, { 0x646ADDC91C20C0D1ULL, 0xED3A0354D9ADAED9ULL } }, /* XSUM_XXH128_testdata[7008] */ + { 2336, 0x000000009E3779B1ULL, { 0xFCE59347BEBB1EFBULL, 0x29167E5F5E38DC46ULL } }, /* XSUM_XXH128_testdata[7009] */ + { 2336, 0x9E3779B185EBCA8DULL, { 0x8A6FA9B4EE2D3EDCULL, 0xD11AC9D835D38258ULL } }, /* XSUM_XXH128_testdata[7010] */ + { 2337, 0x0000000000000000ULL, { 0x7C7CC3761B3E4ED1ULL, 0x4CD180F43E9E6B9AULL } }, /* XSUM_XXH128_testdata[7011] */ + { 2337, 0x000000009E3779B1ULL, { 0x6B0601A16C0F6D06ULL, 0x72AE61B5DD2D4821ULL } }, /* XSUM_XXH128_testdata[7012] */ + { 2337, 0x9E3779B185EBCA8DULL, { 0x9773B70EEF4BE554ULL, 0x94B446DF130B7B27ULL } }, /* XSUM_XXH128_testdata[7013] */ + { 2338, 0x0000000000000000ULL, { 0xF8D4E0C09F0B9413ULL, 0x6463DC93E96916F9ULL } }, /* XSUM_XXH128_testdata[7014] */ + { 2338, 0x000000009E3779B1ULL, { 0x6EBA315255B90BB8ULL, 0xF2554C98413F521FULL } }, /* XSUM_XXH128_testdata[7015] */ + { 2338, 0x9E3779B185EBCA8DULL, { 0xC28F33A33B3C0D06ULL, 0xA71630ED140EE360ULL } }, /* XSUM_XXH128_testdata[7016] */ + { 2339, 0x0000000000000000ULL, { 0xE90E496E95E28D0AULL, 0x4A951F0635A90D14ULL } }, /* XSUM_XXH128_testdata[7017] */ + { 2339, 0x000000009E3779B1ULL, { 0x71DBA7B98DF6D1CFULL, 0xA1B6D3C4F80FA887ULL } }, /* XSUM_XXH128_testdata[7018] */ + { 2339, 0x9E3779B185EBCA8DULL, { 0xB73CB73CB16C6B32ULL, 0x20EF28C2DC0E177CULL } }, /* XSUM_XXH128_testdata[7019] */ + { 2340, 0x0000000000000000ULL, { 0xB4671C7890A22982ULL, 0x73215607BDFAD740ULL } }, /* XSUM_XXH128_testdata[7020] */ + { 2340, 0x000000009E3779B1ULL, { 0xEE10AFF52F948EA4ULL, 0x8C102041452C6BB0ULL } }, /* XSUM_XXH128_testdata[7021] */ + { 2340, 0x9E3779B185EBCA8DULL, { 0xD09CFEC7F9E99B8AULL, 0x6FD403C5CAD2E7E6ULL } }, /* XSUM_XXH128_testdata[7022] */ + { 2341, 0x0000000000000000ULL, { 0x8165023FDB696528ULL, 0xF7681C1221FFEF4CULL } }, /* XSUM_XXH128_testdata[7023] */ + { 2341, 0x000000009E3779B1ULL, { 0xCFD7BCC2375ED8B1ULL, 0xD5FD66CE36BDF43DULL } }, /* XSUM_XXH128_testdata[7024] */ + { 2341, 0x9E3779B185EBCA8DULL, { 0xC75F1A3C09DC2EC0ULL, 0x8A9EF6092F37A4B4ULL } }, /* XSUM_XXH128_testdata[7025] */ + { 2342, 0x0000000000000000ULL, { 0x3645D41D79592A95ULL, 0x83CCBF7366456690ULL } }, /* XSUM_XXH128_testdata[7026] */ + { 2342, 0x000000009E3779B1ULL, { 0xA4A2798502716497ULL, 0x6B4ECF42C3A41F91ULL } }, /* XSUM_XXH128_testdata[7027] */ + { 2342, 0x9E3779B185EBCA8DULL, { 0x6F4452A6467783B0ULL, 0xF0DA8C163E7B6F4CULL } }, /* XSUM_XXH128_testdata[7028] */ + { 2343, 0x0000000000000000ULL, { 0xF1ED40282C8884CBULL, 0xBACDB33D37A0CAC9ULL } }, /* XSUM_XXH128_testdata[7029] */ + { 2343, 0x000000009E3779B1ULL, { 0xBC25B37D352164A1ULL, 0x21F699D82FB0EA71ULL } }, /* XSUM_XXH128_testdata[7030] */ + { 2343, 0x9E3779B185EBCA8DULL, { 0xC587035C7782FDDAULL, 0x5798C8C013222E56ULL } }, /* XSUM_XXH128_testdata[7031] */ + { 2344, 0x0000000000000000ULL, { 0xA96F48DD5C721FBAULL, 0x2F62EC3EBE6CB948ULL } }, /* XSUM_XXH128_testdata[7032] */ + { 2344, 0x000000009E3779B1ULL, { 0x44AC3DDAF35B3C0AULL, 0xC0EFE3E0F5F37C2DULL } }, /* XSUM_XXH128_testdata[7033] */ + { 2344, 0x9E3779B185EBCA8DULL, { 0xD0ABE3F8FD5C7916ULL, 0xFB015D63AA47C599ULL } }, /* XSUM_XXH128_testdata[7034] */ + { 2345, 0x0000000000000000ULL, { 0xC19A80FAAECE9A70ULL, 0x6A929B214610B1DBULL } }, /* XSUM_XXH128_testdata[7035] */ + { 2345, 0x000000009E3779B1ULL, { 0xA25993320DB3E6A5ULL, 0x2228BFE8F542AAFBULL } }, /* XSUM_XXH128_testdata[7036] */ + { 2345, 0x9E3779B185EBCA8DULL, { 0x6F2D171632F42DB9ULL, 0xAABFD0DA40D340DDULL } }, /* XSUM_XXH128_testdata[7037] */ + { 2346, 0x0000000000000000ULL, { 0x897BE763FFB155DEULL, 0xF83FD0AF6DC23160ULL } }, /* XSUM_XXH128_testdata[7038] */ + { 2346, 0x000000009E3779B1ULL, { 0xD88ACDA970FF77AEULL, 0xD0DDB3AE9F1FDD4FULL } }, /* XSUM_XXH128_testdata[7039] */ + { 2346, 0x9E3779B185EBCA8DULL, { 0xD63E55AE9C453BFBULL, 0x3308BDCBB465FDCEULL } }, /* XSUM_XXH128_testdata[7040] */ + { 2347, 0x0000000000000000ULL, { 0x4D7CF54782AF36FCULL, 0x3DF8DEA15016BF04ULL } }, /* XSUM_XXH128_testdata[7041] */ + { 2347, 0x000000009E3779B1ULL, { 0xA598B32F9F9FCC25ULL, 0x5FAB8CB6A6B7B335ULL } }, /* XSUM_XXH128_testdata[7042] */ + { 2347, 0x9E3779B185EBCA8DULL, { 0x9D7706F5DBC683A6ULL, 0xEE1FBBA4879E4460ULL } }, /* XSUM_XXH128_testdata[7043] */ + { 2348, 0x0000000000000000ULL, { 0x384DA1B1646A9E71ULL, 0x854482DE82B3CBFCULL } }, /* XSUM_XXH128_testdata[7044] */ + { 2348, 0x000000009E3779B1ULL, { 0xB42BB78C35607A26ULL, 0xC5C0E36E2D77C04DULL } }, /* XSUM_XXH128_testdata[7045] */ + { 2348, 0x9E3779B185EBCA8DULL, { 0x8C629241D98ACC4EULL, 0x88FBCEEDE16EEE82ULL } }, /* XSUM_XXH128_testdata[7046] */ + { 2349, 0x0000000000000000ULL, { 0x9B207D3155536F74ULL, 0x6BAC29B04F719680ULL } }, /* XSUM_XXH128_testdata[7047] */ + { 2349, 0x000000009E3779B1ULL, { 0x28EF65B04FD3497AULL, 0xFD72A845C8E9EFA6ULL } }, /* XSUM_XXH128_testdata[7048] */ + { 2349, 0x9E3779B185EBCA8DULL, { 0x89D7E8E4EC5494E3ULL, 0x9E99E3CD3609D137ULL } }, /* XSUM_XXH128_testdata[7049] */ + { 2350, 0x0000000000000000ULL, { 0x8AA5382300DB7666ULL, 0x75B2FC0E01434131ULL } }, /* XSUM_XXH128_testdata[7050] */ + { 2350, 0x000000009E3779B1ULL, { 0x6A484BC934479A43ULL, 0xA6BD02750E9CE61BULL } }, /* XSUM_XXH128_testdata[7051] */ + { 2350, 0x9E3779B185EBCA8DULL, { 0x2B8D20FA052D2516ULL, 0xAA065CD325030AE4ULL } }, /* XSUM_XXH128_testdata[7052] */ + { 2351, 0x0000000000000000ULL, { 0xE12F860E909E7476ULL, 0x53EC22CEC54C3D45ULL } }, /* XSUM_XXH128_testdata[7053] */ + { 2351, 0x000000009E3779B1ULL, { 0xDB7068028EB6F1F6ULL, 0x9D6C7DA279B8568DULL } }, /* XSUM_XXH128_testdata[7054] */ + { 2351, 0x9E3779B185EBCA8DULL, { 0x4A7D9E732CF06A13ULL, 0x67B5C166513044E9ULL } }, /* XSUM_XXH128_testdata[7055] */ + { 2352, 0x0000000000000000ULL, { 0xE6E05AF95207F6D3ULL, 0x05E2EF125AD06976ULL } }, /* XSUM_XXH128_testdata[7056] */ + { 2352, 0x000000009E3779B1ULL, { 0x1801CF6671949621ULL, 0xB2750E6230BB194EULL } }, /* XSUM_XXH128_testdata[7057] */ + { 2352, 0x9E3779B185EBCA8DULL, { 0x5FF208793633440DULL, 0xD4FD2EC422CF8965ULL } }, /* XSUM_XXH128_testdata[7058] */ + { 2353, 0x0000000000000000ULL, { 0xC4B549BA270A8004ULL, 0x58A4076A3E87D363ULL } }, /* XSUM_XXH128_testdata[7059] */ + { 2353, 0x000000009E3779B1ULL, { 0xF32A8006DA29BB1BULL, 0x028CEFD1F718B208ULL } }, /* XSUM_XXH128_testdata[7060] */ + { 2353, 0x9E3779B185EBCA8DULL, { 0xC66B48806F287F63ULL, 0x6D45B7051DB53131ULL } }, /* XSUM_XXH128_testdata[7061] */ + { 2354, 0x0000000000000000ULL, { 0xC7803065E2803D31ULL, 0x9D8EA1DE4D08DAF6ULL } }, /* XSUM_XXH128_testdata[7062] */ + { 2354, 0x000000009E3779B1ULL, { 0x0801FD8D2C535036ULL, 0x28D054DD0A79CCAFULL } }, /* XSUM_XXH128_testdata[7063] */ + { 2354, 0x9E3779B185EBCA8DULL, { 0xB2D6B5A38A32F560ULL, 0x83A205A957278E20ULL } }, /* XSUM_XXH128_testdata[7064] */ + { 2355, 0x0000000000000000ULL, { 0xC7500A98B2BFF9AEULL, 0x456E4069B6BC2F0DULL } }, /* XSUM_XXH128_testdata[7065] */ + { 2355, 0x000000009E3779B1ULL, { 0xC027D4A560FA2C56ULL, 0x57CD341E30736B4AULL } }, /* XSUM_XXH128_testdata[7066] */ + { 2355, 0x9E3779B185EBCA8DULL, { 0x562D14A99EAD5989ULL, 0x8726155A76A69C0DULL } }, /* XSUM_XXH128_testdata[7067] */ + { 2356, 0x0000000000000000ULL, { 0x6CA7DF44BE47E963ULL, 0xE33BA5437C38DA9EULL } }, /* XSUM_XXH128_testdata[7068] */ + { 2356, 0x000000009E3779B1ULL, { 0x6497C3B303BF15E4ULL, 0xC183A6CF124C8FAAULL } }, /* XSUM_XXH128_testdata[7069] */ + { 2356, 0x9E3779B185EBCA8DULL, { 0x3AD492F595F77BAEULL, 0x573611C9E038CC40ULL } }, /* XSUM_XXH128_testdata[7070] */ + { 2357, 0x0000000000000000ULL, { 0x26F4AC8EFB39794BULL, 0xAFFC916FC9200FD7ULL } }, /* XSUM_XXH128_testdata[7071] */ + { 2357, 0x000000009E3779B1ULL, { 0xC5A75884893B98D9ULL, 0xF772F94E60EDD7CBULL } }, /* XSUM_XXH128_testdata[7072] */ + { 2357, 0x9E3779B185EBCA8DULL, { 0xFDB28975A00FBF75ULL, 0x97F33A83397AB16FULL } }, /* XSUM_XXH128_testdata[7073] */ + { 2358, 0x0000000000000000ULL, { 0x89396B87DA30246FULL, 0x75C593383F9B9851ULL } }, /* XSUM_XXH128_testdata[7074] */ + { 2358, 0x000000009E3779B1ULL, { 0x962277327BC5F7A7ULL, 0xF033202852E9BC48ULL } }, /* XSUM_XXH128_testdata[7075] */ + { 2358, 0x9E3779B185EBCA8DULL, { 0x78C3FBE50A336A70ULL, 0xED44B432F275D778ULL } }, /* XSUM_XXH128_testdata[7076] */ + { 2359, 0x0000000000000000ULL, { 0x5F1D193EFE8747BDULL, 0x232654A933F5FC70ULL } }, /* XSUM_XXH128_testdata[7077] */ + { 2359, 0x000000009E3779B1ULL, { 0x0826F38A40E8A46DULL, 0x2756C3AA36382463ULL } }, /* XSUM_XXH128_testdata[7078] */ + { 2359, 0x9E3779B185EBCA8DULL, { 0xF7DE5F7358D5A96FULL, 0x0210DAA04B603AA5ULL } }, /* XSUM_XXH128_testdata[7079] */ + { 2360, 0x0000000000000000ULL, { 0xEF123E59AB08BFAFULL, 0xE98A68B9D3A72C41ULL } }, /* XSUM_XXH128_testdata[7080] */ + { 2360, 0x000000009E3779B1ULL, { 0xA521059A8910958AULL, 0x424BB63F2DC9F35EULL } }, /* XSUM_XXH128_testdata[7081] */ + { 2360, 0x9E3779B185EBCA8DULL, { 0x235D1359CF0B0F68ULL, 0xF01EFC8E9F7E54FEULL } }, /* XSUM_XXH128_testdata[7082] */ + { 2361, 0x0000000000000000ULL, { 0x400D81A69F810FCFULL, 0x0A94490E097B899BULL } }, /* XSUM_XXH128_testdata[7083] */ + { 2361, 0x000000009E3779B1ULL, { 0xD78F3C75AB5D9800ULL, 0x3DC924DA3D1B7D97ULL } }, /* XSUM_XXH128_testdata[7084] */ + { 2361, 0x9E3779B185EBCA8DULL, { 0x5A148B49DA75B74CULL, 0x6528B1E494D43A29ULL } }, /* XSUM_XXH128_testdata[7085] */ + { 2362, 0x0000000000000000ULL, { 0x0A3AC0A24D2ECAC1ULL, 0x6FDC2438EC984052ULL } }, /* XSUM_XXH128_testdata[7086] */ + { 2362, 0x000000009E3779B1ULL, { 0x579517B7C8BF44D9ULL, 0x8C5C9629188D1F43ULL } }, /* XSUM_XXH128_testdata[7087] */ + { 2362, 0x9E3779B185EBCA8DULL, { 0xE01DE938B8193FE3ULL, 0xFB5FF8F74428987BULL } }, /* XSUM_XXH128_testdata[7088] */ + { 2363, 0x0000000000000000ULL, { 0x383581330EFB7EF0ULL, 0x90750697F10818DEULL } }, /* XSUM_XXH128_testdata[7089] */ + { 2363, 0x000000009E3779B1ULL, { 0xF7FB87955F9DC6F1ULL, 0x919BA3D4FAB9F660ULL } }, /* XSUM_XXH128_testdata[7090] */ + { 2363, 0x9E3779B185EBCA8DULL, { 0xEADA25B2100BFCF8ULL, 0x3BF306F0E8BFFC72ULL } }, /* XSUM_XXH128_testdata[7091] */ + { 2364, 0x0000000000000000ULL, { 0xBD10928B3A5C1EE5ULL, 0x2EB9B9C76DCC96DFULL } }, /* XSUM_XXH128_testdata[7092] */ + { 2364, 0x000000009E3779B1ULL, { 0x6F46E7B51EE09A31ULL, 0xE877CB6AE32C2A82ULL } }, /* XSUM_XXH128_testdata[7093] */ + { 2364, 0x9E3779B185EBCA8DULL, { 0xFDD30758359B8B48ULL, 0xE7EBA2CCEF4F3C97ULL } }, /* XSUM_XXH128_testdata[7094] */ + { 2365, 0x0000000000000000ULL, { 0x4AD7F9F1BF8D2D6EULL, 0x7B93F948C1986625ULL } }, /* XSUM_XXH128_testdata[7095] */ + { 2365, 0x000000009E3779B1ULL, { 0x32698D96EF1FCB3AULL, 0xAE7463BA79F1F73DULL } }, /* XSUM_XXH128_testdata[7096] */ + { 2365, 0x9E3779B185EBCA8DULL, { 0xA267CE28E79A6282ULL, 0x419A23DCBD908B9BULL } }, /* XSUM_XXH128_testdata[7097] */ + { 2366, 0x0000000000000000ULL, { 0xAE5743D5B81D5B9EULL, 0xB5DFCD5C308345E5ULL } }, /* XSUM_XXH128_testdata[7098] */ + { 2366, 0x000000009E3779B1ULL, { 0xD0B933390DBCBE3EULL, 0xE06E443B8F416577ULL } }, /* XSUM_XXH128_testdata[7099] */ + { 2366, 0x9E3779B185EBCA8DULL, { 0xFCEAD1CC5E07B6A9ULL, 0x93423D122F4DB3EAULL } }, /* XSUM_XXH128_testdata[7100] */ + { 2367, 0x0000000000000000ULL, { 0xCB37AEB9E5D361EDULL, 0xE89C0F6FF369B427ULL } }, /* XSUM_XXH128_testdata[7101] */ + { 2367, 0x000000009E3779B1ULL, { 0x6F5360AE69C2F406ULL, 0xD23AAE4B76C31ECBULL } }, /* XSUM_XXH128_testdata[7102] */ + { 2367, 0x9E3779B185EBCA8DULL, { 0xD2DB3415B942B42AULL, 0xCCB7A94CCA1A6496ULL } }, /* XSUM_XXH128_testdata[7103] */ + { 2368, 0x0000000000000000ULL, { 0x7BF80846CEB7121FULL, 0x7670107C41F0B6A8ULL } }, /* XSUM_XXH128_testdata[7104] */ + { 2368, 0x000000009E3779B1ULL, { 0x0A3C19A3D11F4121ULL, 0xF18564A128D1DD22ULL } }, /* XSUM_XXH128_testdata[7105] */ + { 2368, 0x9E3779B185EBCA8DULL, { 0xDAC21692ACD4E7B6ULL, 0x6781E68AB209D7C4ULL } }, /* XSUM_XXH128_testdata[7106] */ + { 2369, 0x0000000000000000ULL, { 0xAC9EF0983F8A4E2DULL, 0x1B4CA8473AEF3A22ULL } }, /* XSUM_XXH128_testdata[7107] */ + { 2369, 0x000000009E3779B1ULL, { 0x64F97E715B8FEED3ULL, 0x0EAFF8328743357BULL } }, /* XSUM_XXH128_testdata[7108] */ + { 2369, 0x9E3779B185EBCA8DULL, { 0x1EC405082AC801E7ULL, 0xAAEFAA6C8A215280ULL } }, /* XSUM_XXH128_testdata[7109] */ + { 2370, 0x0000000000000000ULL, { 0x2D634985896B31D0ULL, 0xB079DF931EF6D33CULL } }, /* XSUM_XXH128_testdata[7110] */ + { 2370, 0x000000009E3779B1ULL, { 0xDB44184F8402707DULL, 0xD8C1999D4965EAEAULL } }, /* XSUM_XXH128_testdata[7111] */ + { 2370, 0x9E3779B185EBCA8DULL, { 0xD1917CFB6834266CULL, 0x867822B735ABD898ULL } }, /* XSUM_XXH128_testdata[7112] */ + { 2371, 0x0000000000000000ULL, { 0xAB602C01606BF9CCULL, 0x9AE4CD773FFE6D90ULL } }, /* XSUM_XXH128_testdata[7113] */ + { 2371, 0x000000009E3779B1ULL, { 0xEBEB31880DCEA547ULL, 0xA8034166B6961B92ULL } }, /* XSUM_XXH128_testdata[7114] */ + { 2371, 0x9E3779B185EBCA8DULL, { 0xEE3535106BCE8956ULL, 0x127234786DE8A583ULL } }, /* XSUM_XXH128_testdata[7115] */ + { 2372, 0x0000000000000000ULL, { 0x9FC8DCA3B47EA5ADULL, 0x6E3C721446A5A1A6ULL } }, /* XSUM_XXH128_testdata[7116] */ + { 2372, 0x000000009E3779B1ULL, { 0x6A87F930F6C27602ULL, 0x9A92C31C05C4C45CULL } }, /* XSUM_XXH128_testdata[7117] */ + { 2372, 0x9E3779B185EBCA8DULL, { 0x1418AD973790D956ULL, 0xDE23D604A83CDE14ULL } }, /* XSUM_XXH128_testdata[7118] */ + { 2373, 0x0000000000000000ULL, { 0xF9AEEDEB5DBFFA68ULL, 0x20C2891FC66D8FF9ULL } }, /* XSUM_XXH128_testdata[7119] */ + { 2373, 0x000000009E3779B1ULL, { 0xBFAB4230A81BC302ULL, 0x350B90248F2FAAE8ULL } }, /* XSUM_XXH128_testdata[7120] */ + { 2373, 0x9E3779B185EBCA8DULL, { 0x25FE2515747A5E12ULL, 0x1F14DCE725ADC9F9ULL } }, /* XSUM_XXH128_testdata[7121] */ + { 2374, 0x0000000000000000ULL, { 0x8175A66989F79873ULL, 0xA243BB5D423305F2ULL } }, /* XSUM_XXH128_testdata[7122] */ + { 2374, 0x000000009E3779B1ULL, { 0xF7C50AD5967C1D73ULL, 0x6E2126E78ED2E6EEULL } }, /* XSUM_XXH128_testdata[7123] */ + { 2374, 0x9E3779B185EBCA8DULL, { 0xFD3270C4714D82C8ULL, 0x6378D48E18A0317FULL } }, /* XSUM_XXH128_testdata[7124] */ + { 2375, 0x0000000000000000ULL, { 0x275FF23CE3DC4593ULL, 0x46F35D0C2C0FEC3AULL } }, /* XSUM_XXH128_testdata[7125] */ + { 2375, 0x000000009E3779B1ULL, { 0x4606D1984C2CFD37ULL, 0xF1F575A752F2E987ULL } }, /* XSUM_XXH128_testdata[7126] */ + { 2375, 0x9E3779B185EBCA8DULL, { 0x5C6AE4A0B8D3E584ULL, 0xCD42423A753E3C75ULL } }, /* XSUM_XXH128_testdata[7127] */ + { 2376, 0x0000000000000000ULL, { 0x297633E6D89244CEULL, 0xBF48305F03C71B60ULL } }, /* XSUM_XXH128_testdata[7128] */ + { 2376, 0x000000009E3779B1ULL, { 0x993AAFB34989D003ULL, 0x923457FEC8BDF5B8ULL } }, /* XSUM_XXH128_testdata[7129] */ + { 2376, 0x9E3779B185EBCA8DULL, { 0xF880C7918F0E8F6FULL, 0x90C788ACBB2646F1ULL } }, /* XSUM_XXH128_testdata[7130] */ + { 2377, 0x0000000000000000ULL, { 0x7D01B42A26A3AA4FULL, 0x8CF8E51C38B30CB6ULL } }, /* XSUM_XXH128_testdata[7131] */ + { 2377, 0x000000009E3779B1ULL, { 0x512263DAB581AA26ULL, 0xDD9A0CFBBA67AD07ULL } }, /* XSUM_XXH128_testdata[7132] */ + { 2377, 0x9E3779B185EBCA8DULL, { 0x9B3152CDB0E90B93ULL, 0xA76423578EB1C50EULL } }, /* XSUM_XXH128_testdata[7133] */ + { 2378, 0x0000000000000000ULL, { 0x9A208842D0BB08F6ULL, 0x33B054DF812AAFBEULL } }, /* XSUM_XXH128_testdata[7134] */ + { 2378, 0x000000009E3779B1ULL, { 0x72899DE7E7F64651ULL, 0x216A190267854CE9ULL } }, /* XSUM_XXH128_testdata[7135] */ + { 2378, 0x9E3779B185EBCA8DULL, { 0x3A2E4AEB216684ECULL, 0x80A28EDA2CB952ABULL } }, /* XSUM_XXH128_testdata[7136] */ + { 2379, 0x0000000000000000ULL, { 0x40974B3BF1A11D89ULL, 0x1939ED77A4EE400CULL } }, /* XSUM_XXH128_testdata[7137] */ + { 2379, 0x000000009E3779B1ULL, { 0x9C06CE31AF09E55FULL, 0xB11540235A9B2A7EULL } }, /* XSUM_XXH128_testdata[7138] */ + { 2379, 0x9E3779B185EBCA8DULL, { 0xBA04552CCB5B3E3CULL, 0x9FA8013319A79127ULL } }, /* XSUM_XXH128_testdata[7139] */ + { 2380, 0x0000000000000000ULL, { 0x2F3A828F6C4CDAA4ULL, 0x2F84B8DE7578627BULL } }, /* XSUM_XXH128_testdata[7140] */ + { 2380, 0x000000009E3779B1ULL, { 0xD825670E9E2D625FULL, 0x6E24E83E3EF1EB01ULL } }, /* XSUM_XXH128_testdata[7141] */ + { 2380, 0x9E3779B185EBCA8DULL, { 0xAEEA8CD6166097B9ULL, 0x98874A95FC875BCFULL } }, /* XSUM_XXH128_testdata[7142] */ + { 2381, 0x0000000000000000ULL, { 0x7A2AF424699B079CULL, 0xB842C7473C15251CULL } }, /* XSUM_XXH128_testdata[7143] */ + { 2381, 0x000000009E3779B1ULL, { 0x8DE454A4089E75F7ULL, 0x62E8230D45DD1725ULL } }, /* XSUM_XXH128_testdata[7144] */ + { 2381, 0x9E3779B185EBCA8DULL, { 0xC8D43B8870FD4CBBULL, 0x8A729759B576BB24ULL } }, /* XSUM_XXH128_testdata[7145] */ + { 2382, 0x0000000000000000ULL, { 0x9304DE8DA31BD496ULL, 0xD5907FE54648F3A1ULL } }, /* XSUM_XXH128_testdata[7146] */ + { 2382, 0x000000009E3779B1ULL, { 0xE95261F216882F04ULL, 0x5D4433290AF04EFEULL } }, /* XSUM_XXH128_testdata[7147] */ + { 2382, 0x9E3779B185EBCA8DULL, { 0x34593C6BFFA5D569ULL, 0x2B1A80C2A6BCE6DAULL } }, /* XSUM_XXH128_testdata[7148] */ + { 2383, 0x0000000000000000ULL, { 0x80D3BA1CA3F56190ULL, 0xBB6D4440B527430CULL } }, /* XSUM_XXH128_testdata[7149] */ + { 2383, 0x000000009E3779B1ULL, { 0xA106EC5103A67104ULL, 0x6A8483C57836AAD2ULL } }, /* XSUM_XXH128_testdata[7150] */ + { 2383, 0x9E3779B185EBCA8DULL, { 0xDDB69D91088C128AULL, 0x9A5CB44C3F4F9A7CULL } }, /* XSUM_XXH128_testdata[7151] */ + { 2384, 0x0000000000000000ULL, { 0x441C9D94F2B9C0DFULL, 0x0E62857F2D144E28ULL } }, /* XSUM_XXH128_testdata[7152] */ + { 2384, 0x000000009E3779B1ULL, { 0x77B49611954E4AB7ULL, 0x63DB46E449E34995ULL } }, /* XSUM_XXH128_testdata[7153] */ + { 2384, 0x9E3779B185EBCA8DULL, { 0x55D3007BA3042A2AULL, 0x5F6989028266AD18ULL } }, /* XSUM_XXH128_testdata[7154] */ + { 2385, 0x0000000000000000ULL, { 0xE33C4DD70CAEBEE7ULL, 0xBDBA45AD34270FAEULL } }, /* XSUM_XXH128_testdata[7155] */ + { 2385, 0x000000009E3779B1ULL, { 0xD57C13CE5F7665F7ULL, 0x2BF25187CB7905B1ULL } }, /* XSUM_XXH128_testdata[7156] */ + { 2385, 0x9E3779B185EBCA8DULL, { 0x0FB197212BBB263CULL, 0x7F84AF32556E28C0ULL } }, /* XSUM_XXH128_testdata[7157] */ + { 2386, 0x0000000000000000ULL, { 0x06B51492A0779957ULL, 0x0B3275704D931FDBULL } }, /* XSUM_XXH128_testdata[7158] */ + { 2386, 0x000000009E3779B1ULL, { 0x5393D8CB35640C41ULL, 0xA8E00C9EC82C758AULL } }, /* XSUM_XXH128_testdata[7159] */ + { 2386, 0x9E3779B185EBCA8DULL, { 0xD1826B20858877D2ULL, 0x81573635C09C17A9ULL } }, /* XSUM_XXH128_testdata[7160] */ + { 2387, 0x0000000000000000ULL, { 0x17382140103BDFA5ULL, 0x490F1053DD29C313ULL } }, /* XSUM_XXH128_testdata[7161] */ + { 2387, 0x000000009E3779B1ULL, { 0xEB79D8350F453C27ULL, 0x52DC7A8DF599796EULL } }, /* XSUM_XXH128_testdata[7162] */ + { 2387, 0x9E3779B185EBCA8DULL, { 0x7CDB9A8AB644F256ULL, 0xD66FF7E00FD615B5ULL } }, /* XSUM_XXH128_testdata[7163] */ + { 2388, 0x0000000000000000ULL, { 0xC90AC3182F1ABB4DULL, 0x1BDABBB059660631ULL } }, /* XSUM_XXH128_testdata[7164] */ + { 2388, 0x000000009E3779B1ULL, { 0x3B945CD52B0B376FULL, 0x11C8DEFB99B128EDULL } }, /* XSUM_XXH128_testdata[7165] */ + { 2388, 0x9E3779B185EBCA8DULL, { 0xA399378375830CCEULL, 0x7413DBE941148DF7ULL } }, /* XSUM_XXH128_testdata[7166] */ + { 2389, 0x0000000000000000ULL, { 0x4BF7F88719686A38ULL, 0xC87F45080F036D03ULL } }, /* XSUM_XXH128_testdata[7167] */ + { 2389, 0x000000009E3779B1ULL, { 0x91E3262B20139A6EULL, 0xF37DDE4381C5BD2DULL } }, /* XSUM_XXH128_testdata[7168] */ + { 2389, 0x9E3779B185EBCA8DULL, { 0x801FD351A856CED5ULL, 0xF422F71C06FFA40BULL } }, /* XSUM_XXH128_testdata[7169] */ + { 2390, 0x0000000000000000ULL, { 0x2A54054B3745B0E8ULL, 0x7E63DCAF0CF6C2BEULL } }, /* XSUM_XXH128_testdata[7170] */ + { 2390, 0x000000009E3779B1ULL, { 0x31B64EF8D60AF67BULL, 0x845D787CD18734D1ULL } }, /* XSUM_XXH128_testdata[7171] */ + { 2390, 0x9E3779B185EBCA8DULL, { 0x32AC9D7484C16CFCULL, 0xA6226F05DAA8D837ULL } }, /* XSUM_XXH128_testdata[7172] */ + { 2391, 0x0000000000000000ULL, { 0xB42E2F3FBF9C7FF6ULL, 0xD36839FD7D918F12ULL } }, /* XSUM_XXH128_testdata[7173] */ + { 2391, 0x000000009E3779B1ULL, { 0x843895439B9BF4EBULL, 0x7D090CB7A0F8A8EFULL } }, /* XSUM_XXH128_testdata[7174] */ + { 2391, 0x9E3779B185EBCA8DULL, { 0x2ECCD134F6208ABAULL, 0x6B3588BD4D58BEF1ULL } }, /* XSUM_XXH128_testdata[7175] */ + { 2392, 0x0000000000000000ULL, { 0xE29C067EEB709C6DULL, 0x4250C3DEDCD60639ULL } }, /* XSUM_XXH128_testdata[7176] */ + { 2392, 0x000000009E3779B1ULL, { 0xED6951917E35438FULL, 0x4D352668EDD1E0CFULL } }, /* XSUM_XXH128_testdata[7177] */ + { 2392, 0x9E3779B185EBCA8DULL, { 0x725625789A95FAA0ULL, 0xDB72B96203E65E46ULL } }, /* XSUM_XXH128_testdata[7178] */ + { 2393, 0x0000000000000000ULL, { 0x363009F768016562ULL, 0x4F9AC584DEAF07BBULL } }, /* XSUM_XXH128_testdata[7179] */ + { 2393, 0x000000009E3779B1ULL, { 0x9403C4BA8DF6C002ULL, 0xF362D001FAA566A3ULL } }, /* XSUM_XXH128_testdata[7180] */ + { 2393, 0x9E3779B185EBCA8DULL, { 0x138C189F0AFE235FULL, 0x43555C34322F6C36ULL } }, /* XSUM_XXH128_testdata[7181] */ + { 2394, 0x0000000000000000ULL, { 0xF1C5DC9942E866F8ULL, 0x9902B1B36E345520ULL } }, /* XSUM_XXH128_testdata[7182] */ + { 2394, 0x000000009E3779B1ULL, { 0x9FE753C9A513AAE5ULL, 0x750A4B3A78B915CFULL } }, /* XSUM_XXH128_testdata[7183] */ + { 2394, 0x9E3779B185EBCA8DULL, { 0xCBB7386F910F0A8EULL, 0x947F04DDE95CDF98ULL } }, /* XSUM_XXH128_testdata[7184] */ + { 2395, 0x0000000000000000ULL, { 0x815C06F88504756EULL, 0xE1528A592A773E08ULL } }, /* XSUM_XXH128_testdata[7185] */ + { 2395, 0x000000009E3779B1ULL, { 0x6F1CBB20B6560061ULL, 0xABD39BB5F645D158ULL } }, /* XSUM_XXH128_testdata[7186] */ + { 2395, 0x9E3779B185EBCA8DULL, { 0x781575D8B8AE688CULL, 0xBF07FDB0DD5B39EDULL } }, /* XSUM_XXH128_testdata[7187] */ + { 2396, 0x0000000000000000ULL, { 0x0A94F1D7A46A7F11ULL, 0x64860326B2A0E8A2ULL } }, /* XSUM_XXH128_testdata[7188] */ + { 2396, 0x000000009E3779B1ULL, { 0x41EC2DD47F895182ULL, 0x9974DF003D5BDFE2ULL } }, /* XSUM_XXH128_testdata[7189] */ + { 2396, 0x9E3779B185EBCA8DULL, { 0xF3AF477BD3FDDFE3ULL, 0xCE01135CC5CA60EEULL } }, /* XSUM_XXH128_testdata[7190] */ + { 2397, 0x0000000000000000ULL, { 0x7E46BD55D126BAB4ULL, 0x86DF2C629555234FULL } }, /* XSUM_XXH128_testdata[7191] */ + { 2397, 0x000000009E3779B1ULL, { 0xF0CF410B1D50DFC9ULL, 0x781F45076B2CE622ULL } }, /* XSUM_XXH128_testdata[7192] */ + { 2397, 0x9E3779B185EBCA8DULL, { 0x530FCDA69E0755EEULL, 0x3FB46CCC8C7C14A3ULL } }, /* XSUM_XXH128_testdata[7193] */ + { 2398, 0x0000000000000000ULL, { 0x3D0260D2BD9CDCF8ULL, 0x5B0085EDDECB4DB2ULL } }, /* XSUM_XXH128_testdata[7194] */ + { 2398, 0x000000009E3779B1ULL, { 0x3BD1C3C75CD18ADBULL, 0xCE32E8978A13D06FULL } }, /* XSUM_XXH128_testdata[7195] */ + { 2398, 0x9E3779B185EBCA8DULL, { 0x9E79B2ED95CC1C13ULL, 0x9524419BAEA35A2BULL } }, /* XSUM_XXH128_testdata[7196] */ + { 2399, 0x0000000000000000ULL, { 0x3E202057EEB160DCULL, 0xF7CE4E167C715EB8ULL } }, /* XSUM_XXH128_testdata[7197] */ + { 2399, 0x000000009E3779B1ULL, { 0x613C891EE8A24337ULL, 0x7D2003059DCC7E68ULL } }, /* XSUM_XXH128_testdata[7198] */ + { 2399, 0x9E3779B185EBCA8DULL, { 0xFD61D2735B23807EULL, 0x567B5E7A21F0D87EULL } }, /* XSUM_XXH128_testdata[7199] */ + { 2400, 0x0000000000000000ULL, { 0x7DF9FC66BF737FD6ULL, 0xB9902D95D0D2E4C1ULL } }, /* XSUM_XXH128_testdata[7200] */ + { 2400, 0x000000009E3779B1ULL, { 0xB2171722C72164FCULL, 0xF034B4595BF71F95ULL } }, /* XSUM_XXH128_testdata[7201] */ + { 2400, 0x9E3779B185EBCA8DULL, { 0xADA195576C66A546ULL, 0x17FF924F600EA0F3ULL } }, /* XSUM_XXH128_testdata[7202] */ + { 2401, 0x0000000000000000ULL, { 0xE6DDEA16AEC1807AULL, 0xB0F6A3DAC2F2EBD0ULL } }, /* XSUM_XXH128_testdata[7203] */ + { 2401, 0x000000009E3779B1ULL, { 0x13A88B86B17A7E31ULL, 0x4E138ED5A6A0B291ULL } }, /* XSUM_XXH128_testdata[7204] */ + { 2401, 0x9E3779B185EBCA8DULL, { 0x03A77C66A1824D3EULL, 0xE2C9599F0A82007AULL } }, /* XSUM_XXH128_testdata[7205] */ + { 2402, 0x0000000000000000ULL, { 0xD881F94BA815ABC6ULL, 0x454B681060D59018ULL } }, /* XSUM_XXH128_testdata[7206] */ + { 2402, 0x000000009E3779B1ULL, { 0x8A3270291C9151ABULL, 0xF8F7976AC4B0FB76ULL } }, /* XSUM_XXH128_testdata[7207] */ + { 2402, 0x9E3779B185EBCA8DULL, { 0xDC8F9DA703D3AB56ULL, 0xC7BBB48582D4273CULL } }, /* XSUM_XXH128_testdata[7208] */ + { 2403, 0x0000000000000000ULL, { 0x517AFA5E367BB9D5ULL, 0xB8E13AD618A514EBULL } }, /* XSUM_XXH128_testdata[7209] */ + { 2403, 0x000000009E3779B1ULL, { 0xC487C0CF417B10E1ULL, 0x9A6E8CEECB7CBCB9ULL } }, /* XSUM_XXH128_testdata[7210] */ + { 2403, 0x9E3779B185EBCA8DULL, { 0xBB4B3A775BD26BD9ULL, 0x258A445EBC7BDDCBULL } }, /* XSUM_XXH128_testdata[7211] */ + { 2404, 0x0000000000000000ULL, { 0x28B4866679822E0AULL, 0xE762821A0812DBE6ULL } }, /* XSUM_XXH128_testdata[7212] */ + { 2404, 0x000000009E3779B1ULL, { 0xD8F0B451F6769196ULL, 0xAF32464DE8EA01A7ULL } }, /* XSUM_XXH128_testdata[7213] */ + { 2404, 0x9E3779B185EBCA8DULL, { 0xAA51349D15CC0FDEULL, 0x698C0B6DB1044822ULL } }, /* XSUM_XXH128_testdata[7214] */ + { 2405, 0x0000000000000000ULL, { 0x3CE5C20DE2F5C897ULL, 0x933BD578ED277DF4ULL } }, /* XSUM_XXH128_testdata[7215] */ + { 2405, 0x000000009E3779B1ULL, { 0x9995E89069B11B44ULL, 0x7BB4C0E3637E8BCFULL } }, /* XSUM_XXH128_testdata[7216] */ + { 2405, 0x9E3779B185EBCA8DULL, { 0xEEDCE89587FD1C51ULL, 0xE1B02C7B0C179190ULL } }, /* XSUM_XXH128_testdata[7217] */ + { 2406, 0x0000000000000000ULL, { 0x2817C7FEB92F4ECCULL, 0x932D147B04B0E78FULL } }, /* XSUM_XXH128_testdata[7218] */ + { 2406, 0x000000009E3779B1ULL, { 0x01157404B869FD3BULL, 0x59ABC88B6E9D3FC7ULL } }, /* XSUM_XXH128_testdata[7219] */ + { 2406, 0x9E3779B185EBCA8DULL, { 0xF271D583D5C08D60ULL, 0x204E5AC7FB597434ULL } }, /* XSUM_XXH128_testdata[7220] */ + { 2407, 0x0000000000000000ULL, { 0x7138C004788FC3C5ULL, 0x68A5ACAE7FBD6AC2ULL } }, /* XSUM_XXH128_testdata[7221] */ + { 2407, 0x000000009E3779B1ULL, { 0x4D943B335B201518ULL, 0x4E5A177B894FE208ULL } }, /* XSUM_XXH128_testdata[7222] */ + { 2407, 0x9E3779B185EBCA8DULL, { 0x900C534E25F8EE8FULL, 0x8C713D846DEB4B77ULL } }, /* XSUM_XXH128_testdata[7223] */ + { 2408, 0x0000000000000000ULL, { 0x0604E4B6EA6C24D5ULL, 0x3C44708B7782C5C3ULL } }, /* XSUM_XXH128_testdata[7224] */ + { 2408, 0x000000009E3779B1ULL, { 0x91C2D4B82E9286E2ULL, 0xF891EBBA1263DF12ULL } }, /* XSUM_XXH128_testdata[7225] */ + { 2408, 0x9E3779B185EBCA8DULL, { 0x9531D4198EB93D16ULL, 0xB8895735ADE70E7EULL } }, /* XSUM_XXH128_testdata[7226] */ + { 2409, 0x0000000000000000ULL, { 0x6C65C2A586EDE755ULL, 0x5E88B0E8F800DB1EULL } }, /* XSUM_XXH128_testdata[7227] */ + { 2409, 0x000000009E3779B1ULL, { 0x669D820CA30CFE5EULL, 0xD626D69A24E5B30AULL } }, /* XSUM_XXH128_testdata[7228] */ + { 2409, 0x9E3779B185EBCA8DULL, { 0x8CEEEE8B7F6A04B7ULL, 0x93B4FB7112259273ULL } }, /* XSUM_XXH128_testdata[7229] */ + { 2410, 0x0000000000000000ULL, { 0x3A325C261826AEE7ULL, 0xC414F7088CF10D39ULL } }, /* XSUM_XXH128_testdata[7230] */ + { 2410, 0x000000009E3779B1ULL, { 0xCD1A4F29B8785526ULL, 0x8049B8AB12384AFAULL } }, /* XSUM_XXH128_testdata[7231] */ + { 2410, 0x9E3779B185EBCA8DULL, { 0x69A9A60F334C045DULL, 0xBF6284B9830E5C65ULL } }, /* XSUM_XXH128_testdata[7232] */ + { 2411, 0x0000000000000000ULL, { 0x2BD1BD1E1D3B60A0ULL, 0x71932F603EF492FAULL } }, /* XSUM_XXH128_testdata[7233] */ + { 2411, 0x000000009E3779B1ULL, { 0x09C9E2F4952ACBCEULL, 0x1D60AE6C439BC9CAULL } }, /* XSUM_XXH128_testdata[7234] */ + { 2411, 0x9E3779B185EBCA8DULL, { 0x878A04EDAC12EA22ULL, 0x9E9E42D43BDC8D2CULL } }, /* XSUM_XXH128_testdata[7235] */ + { 2412, 0x0000000000000000ULL, { 0x7051EE180E0E02CBULL, 0xB9E2525240305162ULL } }, /* XSUM_XXH128_testdata[7236] */ + { 2412, 0x000000009E3779B1ULL, { 0x884691CA4FF16A81ULL, 0x3D1533984094C804ULL } }, /* XSUM_XXH128_testdata[7237] */ + { 2412, 0x9E3779B185EBCA8DULL, { 0xF8BDAEBB507AC864ULL, 0x24BB396107495800ULL } }, /* XSUM_XXH128_testdata[7238] */ + { 2413, 0x0000000000000000ULL, { 0x8DCDDD287F97CF14ULL, 0x956E2E07506FC9E0ULL } }, /* XSUM_XXH128_testdata[7239] */ + { 2413, 0x000000009E3779B1ULL, { 0x70E1A37A5E0E93B9ULL, 0xF37E4F73FFC03EF9ULL } }, /* XSUM_XXH128_testdata[7240] */ + { 2413, 0x9E3779B185EBCA8DULL, { 0x0B36D5B0FDA5985CULL, 0x2FAE7437B5A8792AULL } }, /* XSUM_XXH128_testdata[7241] */ + { 2414, 0x0000000000000000ULL, { 0x3EE02E4436180A4FULL, 0x38CB88B9211F2283ULL } }, /* XSUM_XXH128_testdata[7242] */ + { 2414, 0x000000009E3779B1ULL, { 0xA1637160BB064BBFULL, 0x3A8A39F9437C83D3ULL } }, /* XSUM_XXH128_testdata[7243] */ + { 2414, 0x9E3779B185EBCA8DULL, { 0xC63FA36634A9AA30ULL, 0xD03A48B447C9395DULL } }, /* XSUM_XXH128_testdata[7244] */ + { 2415, 0x0000000000000000ULL, { 0xBDEA754E7720A901ULL, 0xD13CC7A3DB60EC7CULL } }, /* XSUM_XXH128_testdata[7245] */ + { 2415, 0x000000009E3779B1ULL, { 0xB9872E74EC594421ULL, 0x11AC4AE85C8C6B97ULL } }, /* XSUM_XXH128_testdata[7246] */ + { 2415, 0x9E3779B185EBCA8DULL, { 0x5AFF8F9C6A0EFDC1ULL, 0x54DF6DB4513E7FF7ULL } }, /* XSUM_XXH128_testdata[7247] */ + { 2416, 0x0000000000000000ULL, { 0x0DB29183CD25C6D5ULL, 0x00B1408E92A4BB53ULL } }, /* XSUM_XXH128_testdata[7248] */ + { 2416, 0x000000009E3779B1ULL, { 0x4CE97919BE2F2416ULL, 0x6113C2BF7A1A2B13ULL } }, /* XSUM_XXH128_testdata[7249] */ + { 2416, 0x9E3779B185EBCA8DULL, { 0x98B8811EA213EF90ULL, 0x1A3DC7452FD5A433ULL } }, /* XSUM_XXH128_testdata[7250] */ + { 2417, 0x0000000000000000ULL, { 0x9DC19422D90242D7ULL, 0x73A51E91212500BFULL } }, /* XSUM_XXH128_testdata[7251] */ + { 2417, 0x000000009E3779B1ULL, { 0x32CDDC8E345EBB2EULL, 0x41D770D674F7836FULL } }, /* XSUM_XXH128_testdata[7252] */ + { 2417, 0x9E3779B185EBCA8DULL, { 0x40280F790E110E26ULL, 0x7F1554B63EC98A0AULL } }, /* XSUM_XXH128_testdata[7253] */ + { 2418, 0x0000000000000000ULL, { 0xA82B1C76DE8149B2ULL, 0x06C195D92BA1D098ULL } }, /* XSUM_XXH128_testdata[7254] */ + { 2418, 0x000000009E3779B1ULL, { 0x5824E0584FB6FF33ULL, 0xE926B7923036F77DULL } }, /* XSUM_XXH128_testdata[7255] */ + { 2418, 0x9E3779B185EBCA8DULL, { 0x142A9DC28F9B34E1ULL, 0x66BA02592BD93306ULL } }, /* XSUM_XXH128_testdata[7256] */ + { 2419, 0x0000000000000000ULL, { 0xD851B8B3E2B52CACULL, 0x4A557DE653D96FCBULL } }, /* XSUM_XXH128_testdata[7257] */ + { 2419, 0x000000009E3779B1ULL, { 0xA1F3CD250EEA43ABULL, 0xB668E0AE9D17B6FCULL } }, /* XSUM_XXH128_testdata[7258] */ + { 2419, 0x9E3779B185EBCA8DULL, { 0xF5C9BBF4F167C0F7ULL, 0x4914B4115E4BCE96ULL } }, /* XSUM_XXH128_testdata[7259] */ + { 2420, 0x0000000000000000ULL, { 0x8529E9FC2DAF0D5DULL, 0xD7492C1F1148BF9FULL } }, /* XSUM_XXH128_testdata[7260] */ + { 2420, 0x000000009E3779B1ULL, { 0x8C3E9D002E283092ULL, 0xEAB3A6EAFE1B044DULL } }, /* XSUM_XXH128_testdata[7261] */ + { 2420, 0x9E3779B185EBCA8DULL, { 0x4EF21EF6AF152D63ULL, 0x846BD56145816592ULL } }, /* XSUM_XXH128_testdata[7262] */ + { 2421, 0x0000000000000000ULL, { 0x5249697149FEC1F9ULL, 0xA13943BC355D5A8EULL } }, /* XSUM_XXH128_testdata[7263] */ + { 2421, 0x000000009E3779B1ULL, { 0x7D23965702A5E8D5ULL, 0x3ACB5C18F1E8E815ULL } }, /* XSUM_XXH128_testdata[7264] */ + { 2421, 0x9E3779B185EBCA8DULL, { 0x65D35A4934C7603CULL, 0x8363D83C903620F4ULL } }, /* XSUM_XXH128_testdata[7265] */ + { 2422, 0x0000000000000000ULL, { 0xF5D127B3552F2A4DULL, 0x689DD563A86E2A97ULL } }, /* XSUM_XXH128_testdata[7266] */ + { 2422, 0x000000009E3779B1ULL, { 0x7F51B75FFEABD442ULL, 0xFA3C28E629A92D1DULL } }, /* XSUM_XXH128_testdata[7267] */ + { 2422, 0x9E3779B185EBCA8DULL, { 0xAF75261C2DB129A2ULL, 0x984ECA2DA2ED190DULL } }, /* XSUM_XXH128_testdata[7268] */ + { 2423, 0x0000000000000000ULL, { 0x09AE23AE7ABE9D33ULL, 0x48FAD41D4E82B85EULL } }, /* XSUM_XXH128_testdata[7269] */ + { 2423, 0x000000009E3779B1ULL, { 0xC3365349EB2DD5CAULL, 0xF1C6F2E753B63766ULL } }, /* XSUM_XXH128_testdata[7270] */ + { 2423, 0x9E3779B185EBCA8DULL, { 0xC5C469E69AE9C75EULL, 0x9BD547F986348F28ULL } }, /* XSUM_XXH128_testdata[7271] */ + { 2424, 0x0000000000000000ULL, { 0x9D5F8EC8EAA2F01BULL, 0x7F76764C1B78D41CULL } }, /* XSUM_XXH128_testdata[7272] */ + { 2424, 0x000000009E3779B1ULL, { 0x3D16B719CC9D02F9ULL, 0x8E9610376BCD54D8ULL } }, /* XSUM_XXH128_testdata[7273] */ + { 2424, 0x9E3779B185EBCA8DULL, { 0x4FB82BD884C0D7A3ULL, 0xF12FD1ECB6EC9EBBULL } }, /* XSUM_XXH128_testdata[7274] */ + { 2425, 0x0000000000000000ULL, { 0x48C09EBF46A108C7ULL, 0xCD16FC5572AE5F21ULL } }, /* XSUM_XXH128_testdata[7275] */ + { 2425, 0x000000009E3779B1ULL, { 0x6AEE4FB1A6D618D9ULL, 0xC51AA708879B8AFAULL } }, /* XSUM_XXH128_testdata[7276] */ + { 2425, 0x9E3779B185EBCA8DULL, { 0x883A820B8C4B86A2ULL, 0xB50581083BCF0444ULL } }, /* XSUM_XXH128_testdata[7277] */ + { 2426, 0x0000000000000000ULL, { 0x3C6DFD3F231240EDULL, 0x20EE9D0A38C1D47DULL } }, /* XSUM_XXH128_testdata[7278] */ + { 2426, 0x000000009E3779B1ULL, { 0xFB2DE2228F825F56ULL, 0x6B28070F1D442E96ULL } }, /* XSUM_XXH128_testdata[7279] */ + { 2426, 0x9E3779B185EBCA8DULL, { 0x542145FC300CEEBEULL, 0x4F62D96AB845D043ULL } }, /* XSUM_XXH128_testdata[7280] */ + { 2427, 0x0000000000000000ULL, { 0xF29C5ABE595973EAULL, 0x15F4B5BF005D5A35ULL } }, /* XSUM_XXH128_testdata[7281] */ + { 2427, 0x000000009E3779B1ULL, { 0xD398767172E3C8B0ULL, 0xD0BF773050147F61ULL } }, /* XSUM_XXH128_testdata[7282] */ + { 2427, 0x9E3779B185EBCA8DULL, { 0x4FEA334DD9B79E8DULL, 0x9E0669FAED23166BULL } }, /* XSUM_XXH128_testdata[7283] */ + { 2428, 0x0000000000000000ULL, { 0x181F632921366CA0ULL, 0x6408946E2684F274ULL } }, /* XSUM_XXH128_testdata[7284] */ + { 2428, 0x000000009E3779B1ULL, { 0x821B53D9FFD0AFA3ULL, 0x5F94F17659607EDAULL } }, /* XSUM_XXH128_testdata[7285] */ + { 2428, 0x9E3779B185EBCA8DULL, { 0xE56364DBE587A5A1ULL, 0xD315349CA7F6DCA0ULL } }, /* XSUM_XXH128_testdata[7286] */ + { 2429, 0x0000000000000000ULL, { 0xCD451D734527603DULL, 0x25C88E036B858E10ULL } }, /* XSUM_XXH128_testdata[7287] */ + { 2429, 0x000000009E3779B1ULL, { 0x1EEC042EA524D906ULL, 0xD4164621C69A155AULL } }, /* XSUM_XXH128_testdata[7288] */ + { 2429, 0x9E3779B185EBCA8DULL, { 0xE02AEC9CA72BCE50ULL, 0x6BC020AC111E6572ULL } }, /* XSUM_XXH128_testdata[7289] */ + { 2430, 0x0000000000000000ULL, { 0x9D2998805DBCA3B0ULL, 0xA40F35E6F294EBEAULL } }, /* XSUM_XXH128_testdata[7290] */ + { 2430, 0x000000009E3779B1ULL, { 0x2F7E074BB5C0CE28ULL, 0xBD7B44CDF92356D6ULL } }, /* XSUM_XXH128_testdata[7291] */ + { 2430, 0x9E3779B185EBCA8DULL, { 0xD1E0757C87B4C04AULL, 0xDD5858E01B727FD8ULL } }, /* XSUM_XXH128_testdata[7292] */ + { 2431, 0x0000000000000000ULL, { 0x23A692E3C69FC54DULL, 0xE55A4FC57BC9F00EULL } }, /* XSUM_XXH128_testdata[7293] */ + { 2431, 0x000000009E3779B1ULL, { 0x49FDFDD09EA894F2ULL, 0xABDF325D9028B0B5ULL } }, /* XSUM_XXH128_testdata[7294] */ + { 2431, 0x9E3779B185EBCA8DULL, { 0x4887EE15CCDA25D0ULL, 0x90F4E63E95B52464ULL } }, /* XSUM_XXH128_testdata[7295] */ + { 2432, 0x0000000000000000ULL, { 0x8DC7DF4949BF38DFULL, 0x93A25E70E12E0609ULL } }, /* XSUM_XXH128_testdata[7296] */ + { 2432, 0x000000009E3779B1ULL, { 0xD8C442D4C31EB7DCULL, 0xFA5666EFA75FD9F4ULL } }, /* XSUM_XXH128_testdata[7297] */ + { 2432, 0x9E3779B185EBCA8DULL, { 0x2979E98145138149ULL, 0x04BC15BFF914281BULL } }, /* XSUM_XXH128_testdata[7298] */ + { 2433, 0x0000000000000000ULL, { 0xB8D09DA11BD7BB41ULL, 0xCE60F8671C48DDFCULL } }, /* XSUM_XXH128_testdata[7299] */ + { 2433, 0x000000009E3779B1ULL, { 0xF2174C157D2AB6EDULL, 0xF08EFE2A849AECF2ULL } }, /* XSUM_XXH128_testdata[7300] */ + { 2433, 0x9E3779B185EBCA8DULL, { 0x09CF950068A3F8A7ULL, 0x603C1D3510771F34ULL } }, /* XSUM_XXH128_testdata[7301] */ + { 2434, 0x0000000000000000ULL, { 0x602D368415842878ULL, 0xC77E40F44B916F4AULL } }, /* XSUM_XXH128_testdata[7302] */ + { 2434, 0x000000009E3779B1ULL, { 0xE6A411840337A4C5ULL, 0x0BD7965E89E56E05ULL } }, /* XSUM_XXH128_testdata[7303] */ + { 2434, 0x9E3779B185EBCA8DULL, { 0x05431A9CC10643C8ULL, 0x04EC2654CA49C22EULL } }, /* XSUM_XXH128_testdata[7304] */ + { 2435, 0x0000000000000000ULL, { 0x0D5A57C81AF12097ULL, 0x10FA684B81F0CB70ULL } }, /* XSUM_XXH128_testdata[7305] */ + { 2435, 0x000000009E3779B1ULL, { 0x66749179532E8C03ULL, 0x4F05D762C93B20FDULL } }, /* XSUM_XXH128_testdata[7306] */ + { 2435, 0x9E3779B185EBCA8DULL, { 0x2C570690D39384C4ULL, 0xD774F8E74F174500ULL } }, /* XSUM_XXH128_testdata[7307] */ + { 2436, 0x0000000000000000ULL, { 0xABDAB965D51BE0A7ULL, 0x010BC8024B932456ULL } }, /* XSUM_XXH128_testdata[7308] */ + { 2436, 0x000000009E3779B1ULL, { 0xC9591CCDA06EA0BFULL, 0xAD3A3A141B81EA35ULL } }, /* XSUM_XXH128_testdata[7309] */ + { 2436, 0x9E3779B185EBCA8DULL, { 0xB944CA075AE79E7CULL, 0xA5CCE93E1E67886EULL } }, /* XSUM_XXH128_testdata[7310] */ + { 2437, 0x0000000000000000ULL, { 0xF9F7285746440004ULL, 0xCE223FEEE6AE5FD2ULL } }, /* XSUM_XXH128_testdata[7311] */ + { 2437, 0x000000009E3779B1ULL, { 0x2DDC99DB6429513AULL, 0xC8D178375A1CC8A2ULL } }, /* XSUM_XXH128_testdata[7312] */ + { 2437, 0x9E3779B185EBCA8DULL, { 0xB26C26664D2A9600ULL, 0x5A937FB9C8589915ULL } }, /* XSUM_XXH128_testdata[7313] */ + { 2438, 0x0000000000000000ULL, { 0x41E0CB5498B910DCULL, 0x2415820BAF734367ULL } }, /* XSUM_XXH128_testdata[7314] */ + { 2438, 0x000000009E3779B1ULL, { 0x98969B07BEB5C275ULL, 0x3ABCA9D3E95B111AULL } }, /* XSUM_XXH128_testdata[7315] */ + { 2438, 0x9E3779B185EBCA8DULL, { 0x9A9E28BC453B8DB5ULL, 0xB9E587DA15387039ULL } }, /* XSUM_XXH128_testdata[7316] */ + { 2439, 0x0000000000000000ULL, { 0x4066C83ED65F4C42ULL, 0x0292030F29BA5C67ULL } }, /* XSUM_XXH128_testdata[7317] */ + { 2439, 0x000000009E3779B1ULL, { 0x14B1202BB17A4861ULL, 0x501AAE6572648ADCULL } }, /* XSUM_XXH128_testdata[7318] */ + { 2439, 0x9E3779B185EBCA8DULL, { 0xB20C91861C646670ULL, 0x064B3304A8C15787ULL } }, /* XSUM_XXH128_testdata[7319] */ + { 2440, 0x0000000000000000ULL, { 0x28C42D7C1D7ADB58ULL, 0xB4F9BE100BD87F30ULL } }, /* XSUM_XXH128_testdata[7320] */ + { 2440, 0x000000009E3779B1ULL, { 0x0C96F885F5CAE186ULL, 0xC726522A1273E5B1ULL } }, /* XSUM_XXH128_testdata[7321] */ + { 2440, 0x9E3779B185EBCA8DULL, { 0x7ECC97D6D7A3B313ULL, 0x9A5824FE998F2A52ULL } }, /* XSUM_XXH128_testdata[7322] */ + { 2441, 0x0000000000000000ULL, { 0x39B0DF7528EA6FF4ULL, 0x46FCEFECCCA6AC96ULL } }, /* XSUM_XXH128_testdata[7323] */ + { 2441, 0x000000009E3779B1ULL, { 0x798FB06D4840D55BULL, 0x5A52266D41500A22ULL } }, /* XSUM_XXH128_testdata[7324] */ + { 2441, 0x9E3779B185EBCA8DULL, { 0xE78D153ACA9FBCA9ULL, 0xA3206C901F33FF02ULL } }, /* XSUM_XXH128_testdata[7325] */ + { 2442, 0x0000000000000000ULL, { 0x15154D6AD175D54DULL, 0xA95776D4521BC057ULL } }, /* XSUM_XXH128_testdata[7326] */ + { 2442, 0x000000009E3779B1ULL, { 0x27DDD3AB9AE38107ULL, 0xEE8C75311D26F7D5ULL } }, /* XSUM_XXH128_testdata[7327] */ + { 2442, 0x9E3779B185EBCA8DULL, { 0xA61EE4A6487F4B71ULL, 0xF581FC4E19090F19ULL } }, /* XSUM_XXH128_testdata[7328] */ + { 2443, 0x0000000000000000ULL, { 0x8E8C8526F590986EULL, 0xCE77C6D2DC4F9D46ULL } }, /* XSUM_XXH128_testdata[7329] */ + { 2443, 0x000000009E3779B1ULL, { 0xAB27F09E48CDC3CEULL, 0x99817D61AA1A9DBDULL } }, /* XSUM_XXH128_testdata[7330] */ + { 2443, 0x9E3779B185EBCA8DULL, { 0xF727EC9ED02986A7ULL, 0x68900587F460C497ULL } }, /* XSUM_XXH128_testdata[7331] */ + { 2444, 0x0000000000000000ULL, { 0x7C531BE3A6674EA0ULL, 0x24E21CC852788387ULL } }, /* XSUM_XXH128_testdata[7332] */ + { 2444, 0x000000009E3779B1ULL, { 0x909EE418C11CF6A4ULL, 0x9E98F3E24ED882C3ULL } }, /* XSUM_XXH128_testdata[7333] */ + { 2444, 0x9E3779B185EBCA8DULL, { 0x6D2D1FAC09361F28ULL, 0x6C51B702A6F4E8A6ULL } }, /* XSUM_XXH128_testdata[7334] */ + { 2445, 0x0000000000000000ULL, { 0x4AAEA74B017E72F8ULL, 0xB4636E65AAC93D83ULL } }, /* XSUM_XXH128_testdata[7335] */ + { 2445, 0x000000009E3779B1ULL, { 0xF2B227309A8E76F4ULL, 0x96590A68D0C2CE85ULL } }, /* XSUM_XXH128_testdata[7336] */ + { 2445, 0x9E3779B185EBCA8DULL, { 0x35E7817B42766DCEULL, 0x3A8BEE36B2ED927CULL } }, /* XSUM_XXH128_testdata[7337] */ + { 2446, 0x0000000000000000ULL, { 0xC3F8C3084B712F01ULL, 0x30582957CF94F603ULL } }, /* XSUM_XXH128_testdata[7338] */ + { 2446, 0x000000009E3779B1ULL, { 0x34CE3DB082E2221AULL, 0xDF0CB3149826A3F2ULL } }, /* XSUM_XXH128_testdata[7339] */ + { 2446, 0x9E3779B185EBCA8DULL, { 0x588951B04523ABCFULL, 0x19B05038313D4BD7ULL } }, /* XSUM_XXH128_testdata[7340] */ + { 2447, 0x0000000000000000ULL, { 0xF22E9F3E39912A2BULL, 0x87850260A398F6BFULL } }, /* XSUM_XXH128_testdata[7341] */ + { 2447, 0x000000009E3779B1ULL, { 0x0D1B97897C7C5E4EULL, 0x9AD0DF74FF0CB7E1ULL } }, /* XSUM_XXH128_testdata[7342] */ + { 2447, 0x9E3779B185EBCA8DULL, { 0x849BC016B76881E7ULL, 0x2D99747EDDD98FCEULL } }, /* XSUM_XXH128_testdata[7343] */ + { 2448, 0x0000000000000000ULL, { 0x642CCF0761F30F6AULL, 0x8683364415133089ULL } }, /* XSUM_XXH128_testdata[7344] */ + { 2448, 0x000000009E3779B1ULL, { 0x3F02E42ABD323B47ULL, 0xDEE720030DD52B92ULL } }, /* XSUM_XXH128_testdata[7345] */ + { 2448, 0x9E3779B185EBCA8DULL, { 0x9FC2C7AB7B85313DULL, 0x26A0B48867F3A191ULL } }, /* XSUM_XXH128_testdata[7346] */ + { 2449, 0x0000000000000000ULL, { 0xD4E2D63D237029A9ULL, 0x59AD4B26B95DA46FULL } }, /* XSUM_XXH128_testdata[7347] */ + { 2449, 0x000000009E3779B1ULL, { 0xC2F9E35800F03902ULL, 0x7428AFA50E54980BULL } }, /* XSUM_XXH128_testdata[7348] */ + { 2449, 0x9E3779B185EBCA8DULL, { 0xAF548A5F25D3F854ULL, 0x610C02D10FF2D5ECULL } }, /* XSUM_XXH128_testdata[7349] */ + { 2450, 0x0000000000000000ULL, { 0x53F599D71297C443ULL, 0x2710131E996E58EBULL } }, /* XSUM_XXH128_testdata[7350] */ + { 2450, 0x000000009E3779B1ULL, { 0x6B389336CEB44628ULL, 0x6468DA7D11B0140EULL } }, /* XSUM_XXH128_testdata[7351] */ + { 2450, 0x9E3779B185EBCA8DULL, { 0xFEE1BDB8A8075A81ULL, 0xA75EB58B2DE1FB16ULL } }, /* XSUM_XXH128_testdata[7352] */ + { 2451, 0x0000000000000000ULL, { 0xBCAA7FFECC0FCBC1ULL, 0xC5C127C2BF6CF8CEULL } }, /* XSUM_XXH128_testdata[7353] */ + { 2451, 0x000000009E3779B1ULL, { 0x804C77898DED54E9ULL, 0xFAFE5D917EF4A424ULL } }, /* XSUM_XXH128_testdata[7354] */ + { 2451, 0x9E3779B185EBCA8DULL, { 0xE2B0FAF0CF5793F2ULL, 0xFFE38911AB21C95EULL } }, /* XSUM_XXH128_testdata[7355] */ + { 2452, 0x0000000000000000ULL, { 0x925FE275AFED3F64ULL, 0xE8FD8B9E46B7C82BULL } }, /* XSUM_XXH128_testdata[7356] */ + { 2452, 0x000000009E3779B1ULL, { 0xDEFDE77C183053A4ULL, 0xDBEEEF4EDC9DE7AAULL } }, /* XSUM_XXH128_testdata[7357] */ + { 2452, 0x9E3779B185EBCA8DULL, { 0x71873D6DEAACA142ULL, 0x035CE922D77FB59BULL } }, /* XSUM_XXH128_testdata[7358] */ + { 2453, 0x0000000000000000ULL, { 0xDABED809BA99689FULL, 0xE36F674B9B617BE5ULL } }, /* XSUM_XXH128_testdata[7359] */ + { 2453, 0x000000009E3779B1ULL, { 0x436DCD089751E4DBULL, 0xF7AA3FA8CEBC5866ULL } }, /* XSUM_XXH128_testdata[7360] */ + { 2453, 0x9E3779B185EBCA8DULL, { 0x170924333DB0395AULL, 0xB695B3C5C221135FULL } }, /* XSUM_XXH128_testdata[7361] */ + { 2454, 0x0000000000000000ULL, { 0xB6220703B8544774ULL, 0x3BC3481574C25ECEULL } }, /* XSUM_XXH128_testdata[7362] */ + { 2454, 0x000000009E3779B1ULL, { 0x087CD3D38F9CF2EBULL, 0xB60ECB7EF8F044E7ULL } }, /* XSUM_XXH128_testdata[7363] */ + { 2454, 0x9E3779B185EBCA8DULL, { 0x601D674299EFE340ULL, 0xD8F13CC06B0E9881ULL } }, /* XSUM_XXH128_testdata[7364] */ + { 2455, 0x0000000000000000ULL, { 0xE23994D8DDA1F254ULL, 0x43B29ABF277CA705ULL } }, /* XSUM_XXH128_testdata[7365] */ + { 2455, 0x000000009E3779B1ULL, { 0x4C94FD4851CF0A23ULL, 0x5FDA38F5E1430E11ULL } }, /* XSUM_XXH128_testdata[7366] */ + { 2455, 0x9E3779B185EBCA8DULL, { 0x0E19C8258C172708ULL, 0x326708CC57214164ULL } }, /* XSUM_XXH128_testdata[7367] */ + { 2456, 0x0000000000000000ULL, { 0x1876B35C77339FCCULL, 0xD951D8A0381DCC95ULL } }, /* XSUM_XXH128_testdata[7368] */ + { 2456, 0x000000009E3779B1ULL, { 0x58FD910045329F4EULL, 0x9E743234F690B782ULL } }, /* XSUM_XXH128_testdata[7369] */ + { 2456, 0x9E3779B185EBCA8DULL, { 0xF22B8BC4422C4A49ULL, 0xA6AB110B7EA12051ULL } }, /* XSUM_XXH128_testdata[7370] */ + { 2457, 0x0000000000000000ULL, { 0x313A6E1EA6811FD1ULL, 0x87CCEAE099C7D990ULL } }, /* XSUM_XXH128_testdata[7371] */ + { 2457, 0x000000009E3779B1ULL, { 0x3C4AE37D56F25FFBULL, 0xBF00BAF53D94C799ULL } }, /* XSUM_XXH128_testdata[7372] */ + { 2457, 0x9E3779B185EBCA8DULL, { 0xB1EA861656EE51BCULL, 0x074F7EE7F50EC987ULL } }, /* XSUM_XXH128_testdata[7373] */ + { 2458, 0x0000000000000000ULL, { 0x0498A44D87713BC7ULL, 0x8139AB1D86C8381CULL } }, /* XSUM_XXH128_testdata[7374] */ + { 2458, 0x000000009E3779B1ULL, { 0x6BA2EF0CE04ADE7FULL, 0x141A3AC3842289D2ULL } }, /* XSUM_XXH128_testdata[7375] */ + { 2458, 0x9E3779B185EBCA8DULL, { 0x17205DEC8F82C2E7ULL, 0x2D6EB860694A71E5ULL } }, /* XSUM_XXH128_testdata[7376] */ + { 2459, 0x0000000000000000ULL, { 0x406D73AAA0FF6D3FULL, 0x1635183BD6DCD0ABULL } }, /* XSUM_XXH128_testdata[7377] */ + { 2459, 0x000000009E3779B1ULL, { 0x54BD94F074D321ADULL, 0xB1003AC8929EF374ULL } }, /* XSUM_XXH128_testdata[7378] */ + { 2459, 0x9E3779B185EBCA8DULL, { 0xE71DF2534C959D90ULL, 0x1E06746849EEA300ULL } }, /* XSUM_XXH128_testdata[7379] */ + { 2460, 0x0000000000000000ULL, { 0xFD13A835848BFD82ULL, 0xA2DD6CD966E31458ULL } }, /* XSUM_XXH128_testdata[7380] */ + { 2460, 0x000000009E3779B1ULL, { 0x0E991F0341D0B882ULL, 0x35B0A6F5CE254F24ULL } }, /* XSUM_XXH128_testdata[7381] */ + { 2460, 0x9E3779B185EBCA8DULL, { 0xD3B50CA1421D3A51ULL, 0xF397D8CF745562B5ULL } }, /* XSUM_XXH128_testdata[7382] */ + { 2461, 0x0000000000000000ULL, { 0x82133237CB17D5AFULL, 0x7A40B444F97FE544ULL } }, /* XSUM_XXH128_testdata[7383] */ + { 2461, 0x000000009E3779B1ULL, { 0x1706F7D961FCEBFBULL, 0x21A32F6AA1CA84FFULL } }, /* XSUM_XXH128_testdata[7384] */ + { 2461, 0x9E3779B185EBCA8DULL, { 0xB2E52F0267163959ULL, 0x23EBD9BEFFF9F636ULL } }, /* XSUM_XXH128_testdata[7385] */ + { 2462, 0x0000000000000000ULL, { 0x1D113E71BA2A0486ULL, 0x79D571DE8D06259EULL } }, /* XSUM_XXH128_testdata[7386] */ + { 2462, 0x000000009E3779B1ULL, { 0xC7439F107543224CULL, 0x24FEDB90BBED9DC0ULL } }, /* XSUM_XXH128_testdata[7387] */ + { 2462, 0x9E3779B185EBCA8DULL, { 0xE65EB4D0A760BC93ULL, 0xA808A133D7D7F6CEULL } }, /* XSUM_XXH128_testdata[7388] */ + { 2463, 0x0000000000000000ULL, { 0xBFB5AB6F9BF505D3ULL, 0xAA79D4D9620F75F4ULL } }, /* XSUM_XXH128_testdata[7389] */ + { 2463, 0x000000009E3779B1ULL, { 0x2F424D834BC46489ULL, 0xA53DE0E0AC48244EULL } }, /* XSUM_XXH128_testdata[7390] */ + { 2463, 0x9E3779B185EBCA8DULL, { 0xB13A757A0FE44631ULL, 0x39C09203D656C01BULL } }, /* XSUM_XXH128_testdata[7391] */ + { 2464, 0x0000000000000000ULL, { 0xB03059CD80210C92ULL, 0x0F439BC0CCBF2BF0ULL } }, /* XSUM_XXH128_testdata[7392] */ + { 2464, 0x000000009E3779B1ULL, { 0xA8E034D62DEB07A5ULL, 0x06B2E2233E264A06ULL } }, /* XSUM_XXH128_testdata[7393] */ + { 2464, 0x9E3779B185EBCA8DULL, { 0x0918BBEBAF5DA807ULL, 0xCE814D81F4CBB2DCULL } }, /* XSUM_XXH128_testdata[7394] */ + { 2465, 0x0000000000000000ULL, { 0xE0BF0FD1C1967D68ULL, 0xE7225342D0CF03E8ULL } }, /* XSUM_XXH128_testdata[7395] */ + { 2465, 0x000000009E3779B1ULL, { 0x8E11811EB3D83AC7ULL, 0x7DB7B839A87A5C30ULL } }, /* XSUM_XXH128_testdata[7396] */ + { 2465, 0x9E3779B185EBCA8DULL, { 0x9F364253BBDF2D66ULL, 0x8CAE1EC4FF2A9EE4ULL } }, /* XSUM_XXH128_testdata[7397] */ + { 2466, 0x0000000000000000ULL, { 0xBA20A1D0EE4972DCULL, 0x4E1E95F282C6C630ULL } }, /* XSUM_XXH128_testdata[7398] */ + { 2466, 0x000000009E3779B1ULL, { 0x222A258F879B571FULL, 0xCBA8842C4E4BFA15ULL } }, /* XSUM_XXH128_testdata[7399] */ + { 2466, 0x9E3779B185EBCA8DULL, { 0xDD9FCF2B0F38C374ULL, 0x4500FCDB80347B3BULL } }, /* XSUM_XXH128_testdata[7400] */ + { 2467, 0x0000000000000000ULL, { 0xD0E4644C09C66D79ULL, 0xD1D7B28AB1CA92B5ULL } }, /* XSUM_XXH128_testdata[7401] */ + { 2467, 0x000000009E3779B1ULL, { 0x1018A112C1DE1765ULL, 0x91D9CA0B40A6BC98ULL } }, /* XSUM_XXH128_testdata[7402] */ + { 2467, 0x9E3779B185EBCA8DULL, { 0x9FD6101B524C3689ULL, 0xDD21263C64E06DB0ULL } }, /* XSUM_XXH128_testdata[7403] */ + { 2468, 0x0000000000000000ULL, { 0xA72FF00D991C2BECULL, 0x6A68BBF9C0614945ULL } }, /* XSUM_XXH128_testdata[7404] */ + { 2468, 0x000000009E3779B1ULL, { 0xF3F68B38E89E5446ULL, 0x581795019A5E5B3FULL } }, /* XSUM_XXH128_testdata[7405] */ + { 2468, 0x9E3779B185EBCA8DULL, { 0x66B8057EA205D71EULL, 0x6923AC1EF0E279E3ULL } }, /* XSUM_XXH128_testdata[7406] */ + { 2469, 0x0000000000000000ULL, { 0xF0AE948DB61194C8ULL, 0x25E2AE98DF7D68A6ULL } }, /* XSUM_XXH128_testdata[7407] */ + { 2469, 0x000000009E3779B1ULL, { 0x907A0DFE57C8EA0CULL, 0x04B4B5EA95608ED4ULL } }, /* XSUM_XXH128_testdata[7408] */ + { 2469, 0x9E3779B185EBCA8DULL, { 0x50BE61DD641CB7B4ULL, 0x5BD51BFB963C9E5EULL } }, /* XSUM_XXH128_testdata[7409] */ + { 2470, 0x0000000000000000ULL, { 0x23DBBEEBF027DC17ULL, 0x26F8D93C18056401ULL } }, /* XSUM_XXH128_testdata[7410] */ + { 2470, 0x000000009E3779B1ULL, { 0x97140BB929CCA518ULL, 0x0F7032B971C93065ULL } }, /* XSUM_XXH128_testdata[7411] */ + { 2470, 0x9E3779B185EBCA8DULL, { 0x70B592CF49D038CAULL, 0x185E0876360808D4ULL } }, /* XSUM_XXH128_testdata[7412] */ + { 2471, 0x0000000000000000ULL, { 0x77017F8424BEA763ULL, 0x45868186B8AAF141ULL } }, /* XSUM_XXH128_testdata[7413] */ + { 2471, 0x000000009E3779B1ULL, { 0x7566753701472081ULL, 0x4094E97B7E629D7AULL } }, /* XSUM_XXH128_testdata[7414] */ + { 2471, 0x9E3779B185EBCA8DULL, { 0x084397E9E092B31EULL, 0x419A6F1AA96CCF9DULL } }, /* XSUM_XXH128_testdata[7415] */ + { 2472, 0x0000000000000000ULL, { 0xC39B583F82D5ED3AULL, 0xF58642B1C32B9E3DULL } }, /* XSUM_XXH128_testdata[7416] */ + { 2472, 0x000000009E3779B1ULL, { 0x101C8D15195F8A8DULL, 0x22A18F8FCBC84C92ULL } }, /* XSUM_XXH128_testdata[7417] */ + { 2472, 0x9E3779B185EBCA8DULL, { 0xAE4BAD1A9C5685E6ULL, 0xEF0FC686AC463ED0ULL } }, /* XSUM_XXH128_testdata[7418] */ + { 2473, 0x0000000000000000ULL, { 0x2C5AC1B00E9148A9ULL, 0x64B1905B41435F79ULL } }, /* XSUM_XXH128_testdata[7419] */ + { 2473, 0x000000009E3779B1ULL, { 0xC529FD7ED95233A9ULL, 0xA4DD762C6840C55CULL } }, /* XSUM_XXH128_testdata[7420] */ + { 2473, 0x9E3779B185EBCA8DULL, { 0xFDFDA5F93706FB93ULL, 0xAE74971DB711A454ULL } }, /* XSUM_XXH128_testdata[7421] */ + { 2474, 0x0000000000000000ULL, { 0x493526E0DB2924E9ULL, 0xDAD9B1CCBD7436F5ULL } }, /* XSUM_XXH128_testdata[7422] */ + { 2474, 0x000000009E3779B1ULL, { 0x0662AC563A5C62A2ULL, 0x4CC8B312EE123763ULL } }, /* XSUM_XXH128_testdata[7423] */ + { 2474, 0x9E3779B185EBCA8DULL, { 0x4935872F6757D6A5ULL, 0xA5BD7F110BD2507EULL } }, /* XSUM_XXH128_testdata[7424] */ + { 2475, 0x0000000000000000ULL, { 0xB1F3BEF6F09D70A6ULL, 0x028270B6CF54AF8FULL } }, /* XSUM_XXH128_testdata[7425] */ + { 2475, 0x000000009E3779B1ULL, { 0x975F7CD22F2CF23DULL, 0x90A15BA62B4EFCDAULL } }, /* XSUM_XXH128_testdata[7426] */ + { 2475, 0x9E3779B185EBCA8DULL, { 0xFD35409753519FC5ULL, 0x7F491C890CA0C1ADULL } }, /* XSUM_XXH128_testdata[7427] */ + { 2476, 0x0000000000000000ULL, { 0x298B771F429863C7ULL, 0xFA59B6A0CC85F65CULL } }, /* XSUM_XXH128_testdata[7428] */ + { 2476, 0x000000009E3779B1ULL, { 0x9AB2442453E171ADULL, 0xE44B2C082FA74B4DULL } }, /* XSUM_XXH128_testdata[7429] */ + { 2476, 0x9E3779B185EBCA8DULL, { 0xF47455F43151E5EEULL, 0xE11A8912985286D6ULL } }, /* XSUM_XXH128_testdata[7430] */ + { 2477, 0x0000000000000000ULL, { 0xED60585128E31E32ULL, 0x4A874A7966398917ULL } }, /* XSUM_XXH128_testdata[7431] */ + { 2477, 0x000000009E3779B1ULL, { 0xC1A509FD77B5AFF6ULL, 0xA0592EC77431C99FULL } }, /* XSUM_XXH128_testdata[7432] */ + { 2477, 0x9E3779B185EBCA8DULL, { 0x7D42C1F3FE3D949AULL, 0xF99E57C2B14E8218ULL } }, /* XSUM_XXH128_testdata[7433] */ + { 2478, 0x0000000000000000ULL, { 0x836FD57D7CE40CD5ULL, 0x10C34881D94DF1F1ULL } }, /* XSUM_XXH128_testdata[7434] */ + { 2478, 0x000000009E3779B1ULL, { 0xEBF243D317C20AA9ULL, 0x41BF63829CA9EBD4ULL } }, /* XSUM_XXH128_testdata[7435] */ + { 2478, 0x9E3779B185EBCA8DULL, { 0x955BB327722E820FULL, 0x945ABD3928578941ULL } }, /* XSUM_XXH128_testdata[7436] */ + { 2479, 0x0000000000000000ULL, { 0x8B893C8E25356830ULL, 0xF8E8A6BCCBEE4AE0ULL } }, /* XSUM_XXH128_testdata[7437] */ + { 2479, 0x000000009E3779B1ULL, { 0xDF2A1C07AFAF1E34ULL, 0x3FEC4DC1422E4992ULL } }, /* XSUM_XXH128_testdata[7438] */ + { 2479, 0x9E3779B185EBCA8DULL, { 0xFCA32DE531B8D7C4ULL, 0x0CAE69CDAB61408BULL } }, /* XSUM_XXH128_testdata[7439] */ + { 2480, 0x0000000000000000ULL, { 0xAA801A1477B80024ULL, 0x6872B0581E8A37DDULL } }, /* XSUM_XXH128_testdata[7440] */ + { 2480, 0x000000009E3779B1ULL, { 0x0ABE5AE34C0184EEULL, 0xAEC527BA813CEF20ULL } }, /* XSUM_XXH128_testdata[7441] */ + { 2480, 0x9E3779B185EBCA8DULL, { 0x745B1264EC3EC79FULL, 0x4DF3E3BE32A48237ULL } }, /* XSUM_XXH128_testdata[7442] */ + { 2481, 0x0000000000000000ULL, { 0xFFC123CE2FEB19BBULL, 0xAA50C25DE279729BULL } }, /* XSUM_XXH128_testdata[7443] */ + { 2481, 0x000000009E3779B1ULL, { 0xA7DF445EE45BFFD7ULL, 0xCC3AA80312C22450ULL } }, /* XSUM_XXH128_testdata[7444] */ + { 2481, 0x9E3779B185EBCA8DULL, { 0x3E1432A43C9B3B21ULL, 0xAAF211DBB22D679FULL } }, /* XSUM_XXH128_testdata[7445] */ + { 2482, 0x0000000000000000ULL, { 0x67A2F28FAB9489FCULL, 0x94F4B00A2EC5DB7AULL } }, /* XSUM_XXH128_testdata[7446] */ + { 2482, 0x000000009E3779B1ULL, { 0xFA760BA1BABA6E5BULL, 0x43013406BED22AC2ULL } }, /* XSUM_XXH128_testdata[7447] */ + { 2482, 0x9E3779B185EBCA8DULL, { 0x646467775BC85519ULL, 0x381FBCAF26454ABFULL } }, /* XSUM_XXH128_testdata[7448] */ + { 2483, 0x0000000000000000ULL, { 0xF604D40AD38A735AULL, 0x5A579874C445429AULL } }, /* XSUM_XXH128_testdata[7449] */ + { 2483, 0x000000009E3779B1ULL, { 0x2E41F129AB8796A4ULL, 0x6FCD7754FDCEBC52ULL } }, /* XSUM_XXH128_testdata[7450] */ + { 2483, 0x9E3779B185EBCA8DULL, { 0x87F499EC7E7889C6ULL, 0x92C92D237ECD41DBULL } }, /* XSUM_XXH128_testdata[7451] */ + { 2484, 0x0000000000000000ULL, { 0x349E26D57FE46D76ULL, 0x1623389756BCA497ULL } }, /* XSUM_XXH128_testdata[7452] */ + { 2484, 0x000000009E3779B1ULL, { 0x060C2FE9758471FAULL, 0xF6CB65D1E5BD213CULL } }, /* XSUM_XXH128_testdata[7453] */ + { 2484, 0x9E3779B185EBCA8DULL, { 0xDB482692318A585AULL, 0x65F66DB36677BA50ULL } }, /* XSUM_XXH128_testdata[7454] */ + { 2485, 0x0000000000000000ULL, { 0x8F51D9BA3F224553ULL, 0xD3C5CD900E0D7E97ULL } }, /* XSUM_XXH128_testdata[7455] */ + { 2485, 0x000000009E3779B1ULL, { 0x7C64A3A219D82822ULL, 0xE866CA9F7847FD7CULL } }, /* XSUM_XXH128_testdata[7456] */ + { 2485, 0x9E3779B185EBCA8DULL, { 0xC8542B2AFCB15DFAULL, 0xFE111303931AC74CULL } }, /* XSUM_XXH128_testdata[7457] */ + { 2486, 0x0000000000000000ULL, { 0x396E933986D5207FULL, 0x8B3B9A1B830EC928ULL } }, /* XSUM_XXH128_testdata[7458] */ + { 2486, 0x000000009E3779B1ULL, { 0x67D9F219AEB8A7E4ULL, 0x81AD1D81E45BA045ULL } }, /* XSUM_XXH128_testdata[7459] */ + { 2486, 0x9E3779B185EBCA8DULL, { 0x0F51171332A16986ULL, 0x0A0BC0C8D74BC6FAULL } }, /* XSUM_XXH128_testdata[7460] */ + { 2487, 0x0000000000000000ULL, { 0x4D460642310AB50AULL, 0x0468B35176CD31CCULL } }, /* XSUM_XXH128_testdata[7461] */ + { 2487, 0x000000009E3779B1ULL, { 0x0860975C95CD7EA0ULL, 0x58072BF56C9C9AA6ULL } }, /* XSUM_XXH128_testdata[7462] */ + { 2487, 0x9E3779B185EBCA8DULL, { 0x98286BAD4038A667ULL, 0x7A69C224A065254CULL } }, /* XSUM_XXH128_testdata[7463] */ + { 2488, 0x0000000000000000ULL, { 0x5C55E27FFD987D8BULL, 0x34806E5EBCB4AF93ULL } }, /* XSUM_XXH128_testdata[7464] */ + { 2488, 0x000000009E3779B1ULL, { 0xAE7D7E04EF01D186ULL, 0x2F4A679704671E94ULL } }, /* XSUM_XXH128_testdata[7465] */ + { 2488, 0x9E3779B185EBCA8DULL, { 0xABB686BCBCD600F3ULL, 0xC37008A780C29775ULL } }, /* XSUM_XXH128_testdata[7466] */ + { 2489, 0x0000000000000000ULL, { 0x7B13729245828F1BULL, 0xBA21AC9ABF7F00C9ULL } }, /* XSUM_XXH128_testdata[7467] */ + { 2489, 0x000000009E3779B1ULL, { 0x6F0537FFD45664A4ULL, 0xD85BA54051D873AFULL } }, /* XSUM_XXH128_testdata[7468] */ + { 2489, 0x9E3779B185EBCA8DULL, { 0xAD9BD38D75CD546CULL, 0x35893F6EA431C639ULL } }, /* XSUM_XXH128_testdata[7469] */ + { 2490, 0x0000000000000000ULL, { 0xA0B1DD56AE1089D0ULL, 0x53BEFE3954BB20FDULL } }, /* XSUM_XXH128_testdata[7470] */ + { 2490, 0x000000009E3779B1ULL, { 0x5FB47F25BC13547CULL, 0xB9A3F4CAB704A47AULL } }, /* XSUM_XXH128_testdata[7471] */ + { 2490, 0x9E3779B185EBCA8DULL, { 0x12BB22DF6959D027ULL, 0x834219AB84C41B4BULL } }, /* XSUM_XXH128_testdata[7472] */ + { 2491, 0x0000000000000000ULL, { 0xEF32D3094C10D252ULL, 0xB3550B44BABA8C7FULL } }, /* XSUM_XXH128_testdata[7473] */ + { 2491, 0x000000009E3779B1ULL, { 0x807FD7339C061704ULL, 0xEAA86BB232C1F250ULL } }, /* XSUM_XXH128_testdata[7474] */ + { 2491, 0x9E3779B185EBCA8DULL, { 0x0445C2D133C6FBAAULL, 0x7D67F5A34F51847EULL } }, /* XSUM_XXH128_testdata[7475] */ + { 2492, 0x0000000000000000ULL, { 0xFC31BEDF37B39F9AULL, 0x091755601798030FULL } }, /* XSUM_XXH128_testdata[7476] */ + { 2492, 0x000000009E3779B1ULL, { 0x5B50BA72A80914CCULL, 0x07CFF71F0F8762F2ULL } }, /* XSUM_XXH128_testdata[7477] */ + { 2492, 0x9E3779B185EBCA8DULL, { 0xE7412EB1ABF45B43ULL, 0x307006B916A669FAULL } }, /* XSUM_XXH128_testdata[7478] */ + { 2493, 0x0000000000000000ULL, { 0x9BE368614DB83689ULL, 0x2C78EF57155AD8CFULL } }, /* XSUM_XXH128_testdata[7479] */ + { 2493, 0x000000009E3779B1ULL, { 0xDB9CF0798B75D6E0ULL, 0x32979BDAA1241A24ULL } }, /* XSUM_XXH128_testdata[7480] */ + { 2493, 0x9E3779B185EBCA8DULL, { 0x7AA0EE00D9289322ULL, 0xD8C12D2D2EF14FD0ULL } }, /* XSUM_XXH128_testdata[7481] */ + { 2494, 0x0000000000000000ULL, { 0x8C969B282CDEF258ULL, 0x8BB8B1AA8C0C4246ULL } }, /* XSUM_XXH128_testdata[7482] */ + { 2494, 0x000000009E3779B1ULL, { 0xEEBC0780E8825BB1ULL, 0x3BFD3C282C068F73ULL } }, /* XSUM_XXH128_testdata[7483] */ + { 2494, 0x9E3779B185EBCA8DULL, { 0x0ED41F3E4DF0E8C3ULL, 0xA54129E2EFA7AFEAULL } }, /* XSUM_XXH128_testdata[7484] */ + { 2495, 0x0000000000000000ULL, { 0xE6A765D030454BFBULL, 0xCF839597F1855013ULL } }, /* XSUM_XXH128_testdata[7485] */ + { 2495, 0x000000009E3779B1ULL, { 0xE53A8D04F8B63574ULL, 0xA908E512CD5749FAULL } }, /* XSUM_XXH128_testdata[7486] */ + { 2495, 0x9E3779B185EBCA8DULL, { 0x761DA60614C958BCULL, 0xA0F843D688A9EDD0ULL } }, /* XSUM_XXH128_testdata[7487] */ + { 2496, 0x0000000000000000ULL, { 0xB565B3202DEF23C1ULL, 0xEA685D99C5DCA495ULL } }, /* XSUM_XXH128_testdata[7488] */ + { 2496, 0x000000009E3779B1ULL, { 0x2F6C4855755BD055ULL, 0xF21E5C1B18F76FD6ULL } }, /* XSUM_XXH128_testdata[7489] */ + { 2496, 0x9E3779B185EBCA8DULL, { 0x96E5D8A2B6CB4E50ULL, 0x63927E9DE9FECD06ULL } }, /* XSUM_XXH128_testdata[7490] */ + { 2497, 0x0000000000000000ULL, { 0x31213BCB52410C9CULL, 0x651BCB5182974DFFULL } }, /* XSUM_XXH128_testdata[7491] */ + { 2497, 0x000000009E3779B1ULL, { 0x5BCB2817EBD7589AULL, 0x7F6BD87BE693BAA2ULL } }, /* XSUM_XXH128_testdata[7492] */ + { 2497, 0x9E3779B185EBCA8DULL, { 0xD6FF67DD99668F70ULL, 0x513F219C389B42BAULL } }, /* XSUM_XXH128_testdata[7493] */ + { 2498, 0x0000000000000000ULL, { 0x30046CF9FC40766EULL, 0x014AD0CE872B8F89ULL } }, /* XSUM_XXH128_testdata[7494] */ + { 2498, 0x000000009E3779B1ULL, { 0x9AC42EF3D991A7DFULL, 0x5E1FA9A2D6D481F2ULL } }, /* XSUM_XXH128_testdata[7495] */ + { 2498, 0x9E3779B185EBCA8DULL, { 0x2B783B4547273EF2ULL, 0x0B9A63D53C48D20FULL } }, /* XSUM_XXH128_testdata[7496] */ + { 2499, 0x0000000000000000ULL, { 0xF7554227E0ACEB04ULL, 0x9B09C7C46EF88951ULL } }, /* XSUM_XXH128_testdata[7497] */ + { 2499, 0x000000009E3779B1ULL, { 0xA62ECFB1C5F59461ULL, 0x41312E694A8CF321ULL } }, /* XSUM_XXH128_testdata[7498] */ + { 2499, 0x9E3779B185EBCA8DULL, { 0xD295304E2C26F07CULL, 0xC0ADD7EEEB4F0241ULL } }, /* XSUM_XXH128_testdata[7499] */ + { 2500, 0x0000000000000000ULL, { 0x26CB04F4741A52D1ULL, 0xE6AF56E96B691115ULL } }, /* XSUM_XXH128_testdata[7500] */ + { 2500, 0x000000009E3779B1ULL, { 0xA28ABB34B7DC5322ULL, 0x78AA6CBBC71FF5ECULL } }, /* XSUM_XXH128_testdata[7501] */ + { 2500, 0x9E3779B185EBCA8DULL, { 0x03AB853D8E6E77CDULL, 0x0887E7E262D7DE37ULL } }, /* XSUM_XXH128_testdata[7502] */ + { 2501, 0x0000000000000000ULL, { 0x1F08882A1F7E1AE0ULL, 0x303C542370B13BD4ULL } }, /* XSUM_XXH128_testdata[7503] */ + { 2501, 0x000000009E3779B1ULL, { 0x3CEFC7F98AC03EAFULL, 0x8ACC8713D13F4F33ULL } }, /* XSUM_XXH128_testdata[7504] */ + { 2501, 0x9E3779B185EBCA8DULL, { 0x6B89BDFBBA4A26C5ULL, 0xBF0A6F1A01723F39ULL } }, /* XSUM_XXH128_testdata[7505] */ + { 2502, 0x0000000000000000ULL, { 0x866571933B2D19BBULL, 0x0A883C99D28657A8ULL } }, /* XSUM_XXH128_testdata[7506] */ + { 2502, 0x000000009E3779B1ULL, { 0x01A16174A8786AA2ULL, 0x4BC07CC0080695BDULL } }, /* XSUM_XXH128_testdata[7507] */ + { 2502, 0x9E3779B185EBCA8DULL, { 0x29C3D35675D12109ULL, 0xCF3677F70E1D9CAAULL } }, /* XSUM_XXH128_testdata[7508] */ + { 2503, 0x0000000000000000ULL, { 0x91CCE7766CCE8FE5ULL, 0xA817BC540B7696A3ULL } }, /* XSUM_XXH128_testdata[7509] */ + { 2503, 0x000000009E3779B1ULL, { 0xC0229970C50118FFULL, 0xF556999DA549E109ULL } }, /* XSUM_XXH128_testdata[7510] */ + { 2503, 0x9E3779B185EBCA8DULL, { 0x992D977616FB9AE5ULL, 0x2FD7018C4644FA6EULL } }, /* XSUM_XXH128_testdata[7511] */ + { 2504, 0x0000000000000000ULL, { 0x29B54766DE5E1E94ULL, 0xFEA13807B5DE5AF2ULL } }, /* XSUM_XXH128_testdata[7512] */ + { 2504, 0x000000009E3779B1ULL, { 0x78846C05D07FD4CCULL, 0x4A69AEFB021A435FULL } }, /* XSUM_XXH128_testdata[7513] */ + { 2504, 0x9E3779B185EBCA8DULL, { 0xA4D691B058080700ULL, 0x1F73F7DDA64FFB16ULL } }, /* XSUM_XXH128_testdata[7514] */ + { 2505, 0x0000000000000000ULL, { 0x18F26802D56A53FEULL, 0x63EEE0C6C311162FULL } }, /* XSUM_XXH128_testdata[7515] */ + { 2505, 0x000000009E3779B1ULL, { 0x2A8A069CF3F64DF1ULL, 0x620ACB8A8292AAE1ULL } }, /* XSUM_XXH128_testdata[7516] */ + { 2505, 0x9E3779B185EBCA8DULL, { 0x37B621D8FECB486FULL, 0xD79DBAC81E83A260ULL } }, /* XSUM_XXH128_testdata[7517] */ + { 2506, 0x0000000000000000ULL, { 0xC5FCE365B5D65ACEULL, 0x842532B9D276832FULL } }, /* XSUM_XXH128_testdata[7518] */ + { 2506, 0x000000009E3779B1ULL, { 0x7A2BB0D31ADAE3C3ULL, 0x6FE66D3777C397E3ULL } }, /* XSUM_XXH128_testdata[7519] */ + { 2506, 0x9E3779B185EBCA8DULL, { 0x73350B5F23B064AEULL, 0xE2BB3A1741098C40ULL } }, /* XSUM_XXH128_testdata[7520] */ + { 2507, 0x0000000000000000ULL, { 0x213AF1A9B9E3410AULL, 0x8BD102AFC2E5E297ULL } }, /* XSUM_XXH128_testdata[7521] */ + { 2507, 0x000000009E3779B1ULL, { 0xE9AEA3FBDB7B63DFULL, 0x411CE535A121EFA5ULL } }, /* XSUM_XXH128_testdata[7522] */ + { 2507, 0x9E3779B185EBCA8DULL, { 0x949E27B85A874B7BULL, 0xCC94E49E68C1236EULL } }, /* XSUM_XXH128_testdata[7523] */ + { 2508, 0x0000000000000000ULL, { 0x516645DA2D3011A4ULL, 0xBB2A4E18DC44A8CCULL } }, /* XSUM_XXH128_testdata[7524] */ + { 2508, 0x000000009E3779B1ULL, { 0x97B9A97D098381CAULL, 0xF9FF1692E9C7EB74ULL } }, /* XSUM_XXH128_testdata[7525] */ + { 2508, 0x9E3779B185EBCA8DULL, { 0xD46731FF4070FE06ULL, 0x8B53D4D00A84BDDBULL } }, /* XSUM_XXH128_testdata[7526] */ + { 2509, 0x0000000000000000ULL, { 0x6C4BDD4D39806795ULL, 0x61D7A1754F09B998ULL } }, /* XSUM_XXH128_testdata[7527] */ + { 2509, 0x000000009E3779B1ULL, { 0x31180DFBAE2AA6E5ULL, 0x10C8F874A5AF0381ULL } }, /* XSUM_XXH128_testdata[7528] */ + { 2509, 0x9E3779B185EBCA8DULL, { 0x716550FFF0481238ULL, 0xB15AFB6810C7B9F2ULL } }, /* XSUM_XXH128_testdata[7529] */ + { 2510, 0x0000000000000000ULL, { 0x5F866CD65285EB7AULL, 0xF988EE706A46BCFDULL } }, /* XSUM_XXH128_testdata[7530] */ + { 2510, 0x000000009E3779B1ULL, { 0xC8D8DF0E1E8EAF19ULL, 0x8976867C799410AEULL } }, /* XSUM_XXH128_testdata[7531] */ + { 2510, 0x9E3779B185EBCA8DULL, { 0x0318A12DB7C9F162ULL, 0x9305FEEF305C6EA7ULL } }, /* XSUM_XXH128_testdata[7532] */ + { 2511, 0x0000000000000000ULL, { 0xEBA1A3DD90AEBFFFULL, 0x55D1BC5FB06B3A6DULL } }, /* XSUM_XXH128_testdata[7533] */ + { 2511, 0x000000009E3779B1ULL, { 0xC59F61AACDCAC8B2ULL, 0x5736FC739CB7DB11ULL } }, /* XSUM_XXH128_testdata[7534] */ + { 2511, 0x9E3779B185EBCA8DULL, { 0xBA953F31B3A00ECDULL, 0x61A554BBBDEB753EULL } }, /* XSUM_XXH128_testdata[7535] */ + { 2512, 0x0000000000000000ULL, { 0x74B3591496D9718BULL, 0x42E5E1BC8476B31AULL } }, /* XSUM_XXH128_testdata[7536] */ + { 2512, 0x000000009E3779B1ULL, { 0x22DD2564DCA2BB2DULL, 0xF950D8069F6A4B84ULL } }, /* XSUM_XXH128_testdata[7537] */ + { 2512, 0x9E3779B185EBCA8DULL, { 0xF13D881703493E17ULL, 0xA9AD84CC2577B374ULL } }, /* XSUM_XXH128_testdata[7538] */ + { 2513, 0x0000000000000000ULL, { 0xB6F86B89BCA03AC2ULL, 0x3F0DED2093AB972AULL } }, /* XSUM_XXH128_testdata[7539] */ + { 2513, 0x000000009E3779B1ULL, { 0x5EB305881983FBBAULL, 0xB42CA7D890F3E062ULL } }, /* XSUM_XXH128_testdata[7540] */ + { 2513, 0x9E3779B185EBCA8DULL, { 0x43B7AE38B94866A5ULL, 0x5F9DAFE4DD8F8839ULL } }, /* XSUM_XXH128_testdata[7541] */ + { 2514, 0x0000000000000000ULL, { 0x86F1B452363281E9ULL, 0x86716BA24C68522FULL } }, /* XSUM_XXH128_testdata[7542] */ + { 2514, 0x000000009E3779B1ULL, { 0x91B353FC5CEE74A8ULL, 0xFA157539385877C6ULL } }, /* XSUM_XXH128_testdata[7543] */ + { 2514, 0x9E3779B185EBCA8DULL, { 0xC55AD56621595369ULL, 0x0AF7DCEB25D8B7BBULL } }, /* XSUM_XXH128_testdata[7544] */ + { 2515, 0x0000000000000000ULL, { 0x9DFE8CFA5D090682ULL, 0xCEA6FFD1EAE3E577ULL } }, /* XSUM_XXH128_testdata[7545] */ + { 2515, 0x000000009E3779B1ULL, { 0xE08328FCC7C49774ULL, 0x9BDDA8D552349027ULL } }, /* XSUM_XXH128_testdata[7546] */ + { 2515, 0x9E3779B185EBCA8DULL, { 0xC4763A2984855956ULL, 0xB48CF60AB2F86F82ULL } }, /* XSUM_XXH128_testdata[7547] */ + { 2516, 0x0000000000000000ULL, { 0xA4A3D0FA8DF914BBULL, 0x018BBEFCE400411FULL } }, /* XSUM_XXH128_testdata[7548] */ + { 2516, 0x000000009E3779B1ULL, { 0x953C5ABAC42C7D99ULL, 0x5F5EE32AD445C29DULL } }, /* XSUM_XXH128_testdata[7549] */ + { 2516, 0x9E3779B185EBCA8DULL, { 0x55D9A21879096100ULL, 0xD7A6D419029E58DBULL } }, /* XSUM_XXH128_testdata[7550] */ + { 2517, 0x0000000000000000ULL, { 0x0C7E962BD2937142ULL, 0x734E71454BE0BABDULL } }, /* XSUM_XXH128_testdata[7551] */ + { 2517, 0x000000009E3779B1ULL, { 0x3FD93B9585B26AB0ULL, 0xFD0AE5AB0C5F9009ULL } }, /* XSUM_XXH128_testdata[7552] */ + { 2517, 0x9E3779B185EBCA8DULL, { 0xF56A061E20E1D9B7ULL, 0xDF57EC49376B10DFULL } }, /* XSUM_XXH128_testdata[7553] */ + { 2518, 0x0000000000000000ULL, { 0xEF0DA9D0D9C42F43ULL, 0xD5FF1FD54C3BEAD0ULL } }, /* XSUM_XXH128_testdata[7554] */ + { 2518, 0x000000009E3779B1ULL, { 0x86B7CEF980BD925BULL, 0xC3A5037278A9289CULL } }, /* XSUM_XXH128_testdata[7555] */ + { 2518, 0x9E3779B185EBCA8DULL, { 0x06334992C2AD9ADCULL, 0xE326FC8B008AA936ULL } }, /* XSUM_XXH128_testdata[7556] */ + { 2519, 0x0000000000000000ULL, { 0x981C612186C18BD7ULL, 0x36872F8AF31813C7ULL } }, /* XSUM_XXH128_testdata[7557] */ + { 2519, 0x000000009E3779B1ULL, { 0x087D4440D271D51FULL, 0x9C9DC8E5F1112652ULL } }, /* XSUM_XXH128_testdata[7558] */ + { 2519, 0x9E3779B185EBCA8DULL, { 0xE074A72E67FEEEB8ULL, 0xBB75875919B6C9D4ULL } }, /* XSUM_XXH128_testdata[7559] */ + { 2520, 0x0000000000000000ULL, { 0x63D13F8020F2E70AULL, 0x9418C2A99D103ED9ULL } }, /* XSUM_XXH128_testdata[7560] */ + { 2520, 0x000000009E3779B1ULL, { 0x399E979D78B6BF60ULL, 0x86B7BB98D9784E86ULL } }, /* XSUM_XXH128_testdata[7561] */ + { 2520, 0x9E3779B185EBCA8DULL, { 0x34FDDD40FF026698ULL, 0x3397851A7D81A541ULL } }, /* XSUM_XXH128_testdata[7562] */ + { 2521, 0x0000000000000000ULL, { 0x11E6CCC6E9726646ULL, 0x79FE87380918BEDEULL } }, /* XSUM_XXH128_testdata[7563] */ + { 2521, 0x000000009E3779B1ULL, { 0xF614FDA5037FB5D3ULL, 0x0BFE0E62D416A865ULL } }, /* XSUM_XXH128_testdata[7564] */ + { 2521, 0x9E3779B185EBCA8DULL, { 0xF56A02A1076B386BULL, 0xDDEDFB6D96A81045ULL } }, /* XSUM_XXH128_testdata[7565] */ + { 2522, 0x0000000000000000ULL, { 0x4D43554DFD39C5F1ULL, 0x57145880BABCE33CULL } }, /* XSUM_XXH128_testdata[7566] */ + { 2522, 0x000000009E3779B1ULL, { 0xF48B9B4D8564E8F5ULL, 0xBEA6CFEEED328995ULL } }, /* XSUM_XXH128_testdata[7567] */ + { 2522, 0x9E3779B185EBCA8DULL, { 0x3263BFB2AFF8A291ULL, 0x95074C68E6CE5C0BULL } }, /* XSUM_XXH128_testdata[7568] */ + { 2523, 0x0000000000000000ULL, { 0xCFAC84F889FF97B2ULL, 0x098802310334522EULL } }, /* XSUM_XXH128_testdata[7569] */ + { 2523, 0x000000009E3779B1ULL, { 0xA04623CEE9870790ULL, 0xE7425B44332D53EFULL } }, /* XSUM_XXH128_testdata[7570] */ + { 2523, 0x9E3779B185EBCA8DULL, { 0x8E8BCDE00512F9DBULL, 0x2D6C56A886FAD778ULL } }, /* XSUM_XXH128_testdata[7571] */ + { 2524, 0x0000000000000000ULL, { 0xDF7FE6D07F66358DULL, 0xD458E2C70DF670BEULL } }, /* XSUM_XXH128_testdata[7572] */ + { 2524, 0x000000009E3779B1ULL, { 0xEF5E1F68BC45F80DULL, 0xCEB525020B431717ULL } }, /* XSUM_XXH128_testdata[7573] */ + { 2524, 0x9E3779B185EBCA8DULL, { 0x06C77049AA50091BULL, 0x6DD8AD40DDEEEB4FULL } }, /* XSUM_XXH128_testdata[7574] */ + { 2525, 0x0000000000000000ULL, { 0x0DC047741CA34FD4ULL, 0x115CEBEA4FC813E1ULL } }, /* XSUM_XXH128_testdata[7575] */ + { 2525, 0x000000009E3779B1ULL, { 0x8C823EA28C9C5C82ULL, 0x39CF0C60CE667171ULL } }, /* XSUM_XXH128_testdata[7576] */ + { 2525, 0x9E3779B185EBCA8DULL, { 0x2B2EC50F1C779ECFULL, 0x64D71695412BE2E4ULL } }, /* XSUM_XXH128_testdata[7577] */ + { 2526, 0x0000000000000000ULL, { 0xDA22F631491949A5ULL, 0xF297E2169F9BA276ULL } }, /* XSUM_XXH128_testdata[7578] */ + { 2526, 0x000000009E3779B1ULL, { 0x66FFC0F1302AD242ULL, 0xB6A3945E100DBBA4ULL } }, /* XSUM_XXH128_testdata[7579] */ + { 2526, 0x9E3779B185EBCA8DULL, { 0x303A45291FB57D33ULL, 0x1B058F67AF737FAAULL } }, /* XSUM_XXH128_testdata[7580] */ + { 2527, 0x0000000000000000ULL, { 0xDEA2B9CC46C5A5F1ULL, 0x8D60AC8CEAB108B6ULL } }, /* XSUM_XXH128_testdata[7581] */ + { 2527, 0x000000009E3779B1ULL, { 0x3F9DAFC93D160C66ULL, 0xDA4F50D3BE653B3FULL } }, /* XSUM_XXH128_testdata[7582] */ + { 2527, 0x9E3779B185EBCA8DULL, { 0x9C26E09E495DC82BULL, 0x51C577AD9BA97C6DULL } }, /* XSUM_XXH128_testdata[7583] */ + { 2528, 0x0000000000000000ULL, { 0xDBA56F835255F96BULL, 0xFF157D8605F8DBFAULL } }, /* XSUM_XXH128_testdata[7584] */ + { 2528, 0x000000009E3779B1ULL, { 0x6CCD1F89FACE105BULL, 0xD78FF9DE91F5EFD5ULL } }, /* XSUM_XXH128_testdata[7585] */ + { 2528, 0x9E3779B185EBCA8DULL, { 0x991A268378ACA738ULL, 0x674ED769BCE2E843ULL } }, /* XSUM_XXH128_testdata[7586] */ + { 2529, 0x0000000000000000ULL, { 0xE0CDFC8278598809ULL, 0xDD52F438EF19C3ECULL } }, /* XSUM_XXH128_testdata[7587] */ + { 2529, 0x000000009E3779B1ULL, { 0x8B5923BE77D2A4A1ULL, 0x3EC8C9FBBE8AD287ULL } }, /* XSUM_XXH128_testdata[7588] */ + { 2529, 0x9E3779B185EBCA8DULL, { 0xD58FC1D2C92F0943ULL, 0xCD3048F0CBF53AAFULL } }, /* XSUM_XXH128_testdata[7589] */ + { 2530, 0x0000000000000000ULL, { 0xBA8BAF78823115A1ULL, 0x73E65B631911E7D9ULL } }, /* XSUM_XXH128_testdata[7590] */ + { 2530, 0x000000009E3779B1ULL, { 0xB7ED4DA3CEADA8CFULL, 0x870D5DD564E63D1AULL } }, /* XSUM_XXH128_testdata[7591] */ + { 2530, 0x9E3779B185EBCA8DULL, { 0xDA2BE7BB589960C7ULL, 0xA83DEDFCAD103D95ULL } }, /* XSUM_XXH128_testdata[7592] */ + { 2531, 0x0000000000000000ULL, { 0x84147A051CD8405CULL, 0xE49E31B31B763A44ULL } }, /* XSUM_XXH128_testdata[7593] */ + { 2531, 0x000000009E3779B1ULL, { 0x871B0FC35B35C98CULL, 0x30C14181CC06197EULL } }, /* XSUM_XXH128_testdata[7594] */ + { 2531, 0x9E3779B185EBCA8DULL, { 0xABD86C2E8CBF5471ULL, 0xB073574327E2ECE5ULL } }, /* XSUM_XXH128_testdata[7595] */ + { 2532, 0x0000000000000000ULL, { 0xA64FE619F33940FFULL, 0x043650026E9AC754ULL } }, /* XSUM_XXH128_testdata[7596] */ + { 2532, 0x000000009E3779B1ULL, { 0x29A9B987EC71C82DULL, 0x273D66CE1272E8E4ULL } }, /* XSUM_XXH128_testdata[7597] */ + { 2532, 0x9E3779B185EBCA8DULL, { 0xFB2312C177FDE048ULL, 0x6C9B231CF1FF916DULL } }, /* XSUM_XXH128_testdata[7598] */ + { 2533, 0x0000000000000000ULL, { 0xA6F08816CF4BACF2ULL, 0x71CA204FB637EF8FULL } }, /* XSUM_XXH128_testdata[7599] */ + { 2533, 0x000000009E3779B1ULL, { 0xAD9A92F8E3F5BBEFULL, 0x5A70DBB75343A804ULL } }, /* XSUM_XXH128_testdata[7600] */ + { 2533, 0x9E3779B185EBCA8DULL, { 0x2B81A778B504831CULL, 0x302EA4B4DDF2084FULL } }, /* XSUM_XXH128_testdata[7601] */ + { 2534, 0x0000000000000000ULL, { 0x4155B18A540E04FEULL, 0xC0C93D7BAFA13C8CULL } }, /* XSUM_XXH128_testdata[7602] */ + { 2534, 0x000000009E3779B1ULL, { 0xB65D5F30C3802490ULL, 0xC2861A406A823E94ULL } }, /* XSUM_XXH128_testdata[7603] */ + { 2534, 0x9E3779B185EBCA8DULL, { 0xE74CE315250E7713ULL, 0x6FF523BA03363BD0ULL } }, /* XSUM_XXH128_testdata[7604] */ + { 2535, 0x0000000000000000ULL, { 0xA4F15D9A49D534CDULL, 0xF5A7DF2273C55979ULL } }, /* XSUM_XXH128_testdata[7605] */ + { 2535, 0x000000009E3779B1ULL, { 0xD9899563AB853BB7ULL, 0x46DCA1F03C611F74ULL } }, /* XSUM_XXH128_testdata[7606] */ + { 2535, 0x9E3779B185EBCA8DULL, { 0x5E1998CF4EF8BB40ULL, 0x728C5286C6F54B0DULL } }, /* XSUM_XXH128_testdata[7607] */ + { 2536, 0x0000000000000000ULL, { 0x3513007897DFFAFAULL, 0xF636409AAF0039E7ULL } }, /* XSUM_XXH128_testdata[7608] */ + { 2536, 0x000000009E3779B1ULL, { 0x1447EEA08CC14933ULL, 0xFC89565976DBDF17ULL } }, /* XSUM_XXH128_testdata[7609] */ + { 2536, 0x9E3779B185EBCA8DULL, { 0x566B64163FD4D5A2ULL, 0xD89CBD120BC1600DULL } }, /* XSUM_XXH128_testdata[7610] */ + { 2537, 0x0000000000000000ULL, { 0xFC3AD43F345DF501ULL, 0x271EA76C46AF7106ULL } }, /* XSUM_XXH128_testdata[7611] */ + { 2537, 0x000000009E3779B1ULL, { 0xDF43117D2A94CC9FULL, 0xAC0F3ADEA094EE40ULL } }, /* XSUM_XXH128_testdata[7612] */ + { 2537, 0x9E3779B185EBCA8DULL, { 0x931558E8245B32A1ULL, 0xF897876FDE16458AULL } }, /* XSUM_XXH128_testdata[7613] */ + { 2538, 0x0000000000000000ULL, { 0x47AE535569E785C6ULL, 0x74B7946AF6E6A31BULL } }, /* XSUM_XXH128_testdata[7614] */ + { 2538, 0x000000009E3779B1ULL, { 0x2E7F075834805614ULL, 0xED6C2DFD411E4BC4ULL } }, /* XSUM_XXH128_testdata[7615] */ + { 2538, 0x9E3779B185EBCA8DULL, { 0x269E2991E7F8E7ABULL, 0xB83EC4B0EDACF70EULL } }, /* XSUM_XXH128_testdata[7616] */ + { 2539, 0x0000000000000000ULL, { 0xC4F897E74397D2DBULL, 0x9E6E1DB8ED64C0A5ULL } }, /* XSUM_XXH128_testdata[7617] */ + { 2539, 0x000000009E3779B1ULL, { 0x2A5E58CDA2006485ULL, 0x938B8DC24B8501CEULL } }, /* XSUM_XXH128_testdata[7618] */ + { 2539, 0x9E3779B185EBCA8DULL, { 0xCAE41E46D2B4D464ULL, 0x43A1B9475408DA35ULL } }, /* XSUM_XXH128_testdata[7619] */ + { 2540, 0x0000000000000000ULL, { 0xA5B0453FAD8F40ABULL, 0x05FAB909261BC287ULL } }, /* XSUM_XXH128_testdata[7620] */ + { 2540, 0x000000009E3779B1ULL, { 0xE3172F4A8C1C447EULL, 0x495A6047135E2C98ULL } }, /* XSUM_XXH128_testdata[7621] */ + { 2540, 0x9E3779B185EBCA8DULL, { 0xDA50A059C37DF89AULL, 0x5E0353B7B0E95E1FULL } }, /* XSUM_XXH128_testdata[7622] */ + { 2541, 0x0000000000000000ULL, { 0x2AD31C54C868E970ULL, 0x1EA2625352F6BB2EULL } }, /* XSUM_XXH128_testdata[7623] */ + { 2541, 0x000000009E3779B1ULL, { 0x50B278F197FB107FULL, 0xA58EEB7B16E75E29ULL } }, /* XSUM_XXH128_testdata[7624] */ + { 2541, 0x9E3779B185EBCA8DULL, { 0x8DC47215C1FAC750ULL, 0xE3900246A2DFD6CCULL } }, /* XSUM_XXH128_testdata[7625] */ + { 2542, 0x0000000000000000ULL, { 0x1ECD99D927119426ULL, 0xA9164C3CFC652D3AULL } }, /* XSUM_XXH128_testdata[7626] */ + { 2542, 0x000000009E3779B1ULL, { 0x481C8F9A752E86A9ULL, 0xAF8E1863E959D1A1ULL } }, /* XSUM_XXH128_testdata[7627] */ + { 2542, 0x9E3779B185EBCA8DULL, { 0xFE1270C2CD79B954ULL, 0x1A92A8C9D32C0C55ULL } }, /* XSUM_XXH128_testdata[7628] */ + { 2543, 0x0000000000000000ULL, { 0x7536E78A4E103EB7ULL, 0x33E46B26C8E58333ULL } }, /* XSUM_XXH128_testdata[7629] */ + { 2543, 0x000000009E3779B1ULL, { 0xA5D97BB3A6C944E7ULL, 0xBA3011E5E3784597ULL } }, /* XSUM_XXH128_testdata[7630] */ + { 2543, 0x9E3779B185EBCA8DULL, { 0x561825DB5725EC05ULL, 0x0CE8A96AA5DAFA3CULL } }, /* XSUM_XXH128_testdata[7631] */ + { 2544, 0x0000000000000000ULL, { 0xF84DD2FB541DBF14ULL, 0xBEFD4BC1EBDD8139ULL } }, /* XSUM_XXH128_testdata[7632] */ + { 2544, 0x000000009E3779B1ULL, { 0xD2932081B9548A9CULL, 0x559854A9C01122E3ULL } }, /* XSUM_XXH128_testdata[7633] */ + { 2544, 0x9E3779B185EBCA8DULL, { 0xEDB23E666D56D112ULL, 0x1BB676146853B069ULL } }, /* XSUM_XXH128_testdata[7634] */ + { 2545, 0x0000000000000000ULL, { 0xD80CBEE66D7975F5ULL, 0xB9732855CB681C8AULL } }, /* XSUM_XXH128_testdata[7635] */ + { 2545, 0x000000009E3779B1ULL, { 0xB6FD02CB022F85ECULL, 0xA03E2D47A89F4CA6ULL } }, /* XSUM_XXH128_testdata[7636] */ + { 2545, 0x9E3779B185EBCA8DULL, { 0x5AE5CF1BD53581EAULL, 0x291872CC2ECE35CDULL } }, /* XSUM_XXH128_testdata[7637] */ + { 2546, 0x0000000000000000ULL, { 0x74B79EB050C88A5BULL, 0xC29CDC0169165D22ULL } }, /* XSUM_XXH128_testdata[7638] */ + { 2546, 0x000000009E3779B1ULL, { 0xCCF7B63023B016AFULL, 0x8BA36CA4A1BBD047ULL } }, /* XSUM_XXH128_testdata[7639] */ + { 2546, 0x9E3779B185EBCA8DULL, { 0x9CA2C17DBF6403EBULL, 0x18758C71339E5C2AULL } }, /* XSUM_XXH128_testdata[7640] */ + { 2547, 0x0000000000000000ULL, { 0xAB0E6EA9E0AC02C9ULL, 0x44F40B0B4311F2FDULL } }, /* XSUM_XXH128_testdata[7641] */ + { 2547, 0x000000009E3779B1ULL, { 0xF9663CA993010975ULL, 0x0575049B064B1F72ULL } }, /* XSUM_XXH128_testdata[7642] */ + { 2547, 0x9E3779B185EBCA8DULL, { 0x1CC8952A920BE943ULL, 0x3703E91E46005407ULL } }, /* XSUM_XXH128_testdata[7643] */ + { 2548, 0x0000000000000000ULL, { 0x0BBF501CAB2045D0ULL, 0x37EDC5957C15DBF8ULL } }, /* XSUM_XXH128_testdata[7644] */ + { 2548, 0x000000009E3779B1ULL, { 0xFF46FFD58982536AULL, 0x379F63AD8220166CULL } }, /* XSUM_XXH128_testdata[7645] */ + { 2548, 0x9E3779B185EBCA8DULL, { 0x492E253BECC049B7ULL, 0x3CC37329A4284286ULL } }, /* XSUM_XXH128_testdata[7646] */ + { 2549, 0x0000000000000000ULL, { 0x744CBAF9B66702C9ULL, 0x4CB1A5BCC01E4D61ULL } }, /* XSUM_XXH128_testdata[7647] */ + { 2549, 0x000000009E3779B1ULL, { 0x3D8887953E485B94ULL, 0x9F09CFA98AAF9D03ULL } }, /* XSUM_XXH128_testdata[7648] */ + { 2549, 0x9E3779B185EBCA8DULL, { 0x089606A58D945131ULL, 0x8633531B5FD29DD5ULL } }, /* XSUM_XXH128_testdata[7649] */ + { 2550, 0x0000000000000000ULL, { 0xD452D819CAAA8F64ULL, 0xC5873E0ECCB455FDULL } }, /* XSUM_XXH128_testdata[7650] */ + { 2550, 0x000000009E3779B1ULL, { 0xD4F7E436E090F6FCULL, 0x62476D056D7EDAC5ULL } }, /* XSUM_XXH128_testdata[7651] */ + { 2550, 0x9E3779B185EBCA8DULL, { 0x0060BFDE7C67FB8CULL, 0x112BC8E4F6714623ULL } }, /* XSUM_XXH128_testdata[7652] */ + { 2551, 0x0000000000000000ULL, { 0x7441813208320928ULL, 0xC6946348C4EA188AULL } }, /* XSUM_XXH128_testdata[7653] */ + { 2551, 0x000000009E3779B1ULL, { 0x57B62BF99A055775ULL, 0x174521752E86AA35ULL } }, /* XSUM_XXH128_testdata[7654] */ + { 2551, 0x9E3779B185EBCA8DULL, { 0x78F88FB9DB734740ULL, 0xAE46D44D513935EFULL } }, /* XSUM_XXH128_testdata[7655] */ + { 2552, 0x0000000000000000ULL, { 0x2417C3FB8183F331ULL, 0x890342BA02352792ULL } }, /* XSUM_XXH128_testdata[7656] */ + { 2552, 0x000000009E3779B1ULL, { 0x76D838ED6B2A09CAULL, 0x7375F0E22DC5D1F6ULL } }, /* XSUM_XXH128_testdata[7657] */ + { 2552, 0x9E3779B185EBCA8DULL, { 0x7C0E5F122AE82E10ULL, 0xBCC384DB00B51F0AULL } }, /* XSUM_XXH128_testdata[7658] */ + { 2553, 0x0000000000000000ULL, { 0x245E2593E2467EF6ULL, 0xA13CB296E1BB5EA3ULL } }, /* XSUM_XXH128_testdata[7659] */ + { 2553, 0x000000009E3779B1ULL, { 0x8DE1D3CF1F3F0D85ULL, 0x5E60F072E4D8068DULL } }, /* XSUM_XXH128_testdata[7660] */ + { 2553, 0x9E3779B185EBCA8DULL, { 0x78648D15B7FE9001ULL, 0x0B6FB6527E54CFA2ULL } }, /* XSUM_XXH128_testdata[7661] */ + { 2554, 0x0000000000000000ULL, { 0xBCC23C16065715F6ULL, 0x17848CFA3809B4F7ULL } }, /* XSUM_XXH128_testdata[7662] */ + { 2554, 0x000000009E3779B1ULL, { 0x282E0EC3A6ACBF9FULL, 0x49A01E1A4FA6AEFCULL } }, /* XSUM_XXH128_testdata[7663] */ + { 2554, 0x9E3779B185EBCA8DULL, { 0x364DECBEF543F51DULL, 0xD15FF284757B93B1ULL } }, /* XSUM_XXH128_testdata[7664] */ + { 2555, 0x0000000000000000ULL, { 0xB095D4AD861C6D95ULL, 0xF402A429F265252AULL } }, /* XSUM_XXH128_testdata[7665] */ + { 2555, 0x000000009E3779B1ULL, { 0x4AE66F0FD341289EULL, 0x6765307742DD9954ULL } }, /* XSUM_XXH128_testdata[7666] */ + { 2555, 0x9E3779B185EBCA8DULL, { 0xC3F2906261781FB5ULL, 0xA3D7A7DC4D1B16C5ULL } }, /* XSUM_XXH128_testdata[7667] */ + { 2556, 0x0000000000000000ULL, { 0xD8B36BB0F3742305ULL, 0x9F1370AE56B67CE1ULL } }, /* XSUM_XXH128_testdata[7668] */ + { 2556, 0x000000009E3779B1ULL, { 0x523ED20184EE3F2BULL, 0xF919F44FBF4E4DA3ULL } }, /* XSUM_XXH128_testdata[7669] */ + { 2556, 0x9E3779B185EBCA8DULL, { 0x576FBFE384D1F3DCULL, 0xE93655834CAD8873ULL } }, /* XSUM_XXH128_testdata[7670] */ + { 2557, 0x0000000000000000ULL, { 0x7E5CBC4F08653A51ULL, 0x27309AFACB188FC7ULL } }, /* XSUM_XXH128_testdata[7671] */ + { 2557, 0x000000009E3779B1ULL, { 0xF5C4655F78B69A84ULL, 0x64688605A8D2C77BULL } }, /* XSUM_XXH128_testdata[7672] */ + { 2557, 0x9E3779B185EBCA8DULL, { 0x40EE18F37D3A6A3DULL, 0x11FD5944B3D9DD6EULL } }, /* XSUM_XXH128_testdata[7673] */ + { 2558, 0x0000000000000000ULL, { 0x027AC279D3E059D5ULL, 0xEBD2D65E6007708BULL } }, /* XSUM_XXH128_testdata[7674] */ + { 2558, 0x000000009E3779B1ULL, { 0x02095C19E73FB30BULL, 0xB362B9EEDA2386FAULL } }, /* XSUM_XXH128_testdata[7675] */ + { 2558, 0x9E3779B185EBCA8DULL, { 0x18655A56E8B5CEC7ULL, 0x7ACE91CB8224BAE4ULL } }, /* XSUM_XXH128_testdata[7676] */ + { 2559, 0x0000000000000000ULL, { 0xDFB77052CA36F5FAULL, 0x65B3C8E017232B92ULL } }, /* XSUM_XXH128_testdata[7677] */ + { 2559, 0x000000009E3779B1ULL, { 0x7278AAB800B9C7D1ULL, 0xEBDDD1080EE640E2ULL } }, /* XSUM_XXH128_testdata[7678] */ + { 2559, 0x9E3779B185EBCA8DULL, { 0x083D330A88FCC356ULL, 0x94D6A4406817305CULL } }, /* XSUM_XXH128_testdata[7679] */ + { 2560, 0x0000000000000000ULL, { 0xFE88B5D95CB0BA87ULL, 0x072BB3AA0BEF486AULL } }, /* XSUM_XXH128_testdata[7680] */ + { 2560, 0x000000009E3779B1ULL, { 0x732DB7768971A310ULL, 0xD17776C063AE5D10ULL } }, /* XSUM_XXH128_testdata[7681] */ + { 2560, 0x9E3779B185EBCA8DULL, { 0x9D718CB6BD910BA2ULL, 0xF291472AA7DA88CAULL } }, /* XSUM_XXH128_testdata[7682] */ + { 2561, 0x0000000000000000ULL, { 0xB417B3F1634546D4ULL, 0x0267D8AC41FFEEF4ULL } }, /* XSUM_XXH128_testdata[7683] */ + { 2561, 0x000000009E3779B1ULL, { 0x9D495AEA3A783030ULL, 0xE216A257245D752FULL } }, /* XSUM_XXH128_testdata[7684] */ + { 2561, 0x9E3779B185EBCA8DULL, { 0x98B20C48B84C4B1AULL, 0xF28CC19820B475F3ULL } }, /* XSUM_XXH128_testdata[7685] */ + { 2562, 0x0000000000000000ULL, { 0xCD93768E3866191BULL, 0xED3D4A222B5A16E7ULL } }, /* XSUM_XXH128_testdata[7686] */ + { 2562, 0x000000009E3779B1ULL, { 0xA31AE378CA19B9ADULL, 0xB3BD8B20F163EDFFULL } }, /* XSUM_XXH128_testdata[7687] */ + { 2562, 0x9E3779B185EBCA8DULL, { 0xE4A51A83EED3D7B7ULL, 0x6D1283993B3CE6C0ULL } }, /* XSUM_XXH128_testdata[7688] */ + { 2563, 0x0000000000000000ULL, { 0x466B225ADC4EFCB8ULL, 0x3C9912C58984680CULL } }, /* XSUM_XXH128_testdata[7689] */ + { 2563, 0x000000009E3779B1ULL, { 0xA485BA03B71D1F13ULL, 0xF8B10299EE254FB9ULL } }, /* XSUM_XXH128_testdata[7690] */ + { 2563, 0x9E3779B185EBCA8DULL, { 0xFC869FC17EE1ED47ULL, 0x29A7E2EC946B80C7ULL } }, /* XSUM_XXH128_testdata[7691] */ + { 2564, 0x0000000000000000ULL, { 0x97EEDCA68626A59AULL, 0xDB0781F99FEAEDFAULL } }, /* XSUM_XXH128_testdata[7692] */ + { 2564, 0x000000009E3779B1ULL, { 0xD9ECDABBEC53C6FDULL, 0x314FC86158BF1EE7ULL } }, /* XSUM_XXH128_testdata[7693] */ + { 2564, 0x9E3779B185EBCA8DULL, { 0xB5AE71338EF75449ULL, 0x9A7A395E10C07475ULL } }, /* XSUM_XXH128_testdata[7694] */ + { 2565, 0x0000000000000000ULL, { 0xB4F3EB6590D89B7AULL, 0xD2B78040D0842546ULL } }, /* XSUM_XXH128_testdata[7695] */ + { 2565, 0x000000009E3779B1ULL, { 0x0F89CA57EA3BC465ULL, 0x9453F13BA665A486ULL } }, /* XSUM_XXH128_testdata[7696] */ + { 2565, 0x9E3779B185EBCA8DULL, { 0xB5C10BDFE714DDE0ULL, 0xBCEA55D5012FC7F8ULL } }, /* XSUM_XXH128_testdata[7697] */ + { 2566, 0x0000000000000000ULL, { 0x2ABCC0FC86100D8BULL, 0x7CFCF69742786B4CULL } }, /* XSUM_XXH128_testdata[7698] */ + { 2566, 0x000000009E3779B1ULL, { 0x99230FCB2EC291E0ULL, 0x8876E799FEF65F06ULL } }, /* XSUM_XXH128_testdata[7699] */ + { 2566, 0x9E3779B185EBCA8DULL, { 0xAD4F7612DA2A8D6AULL, 0x5BF4D94687962C2EULL } }, /* XSUM_XXH128_testdata[7700] */ + { 2567, 0x0000000000000000ULL, { 0xF7A5777064BB2E3AULL, 0x4D0E084AA94B4B5EULL } }, /* XSUM_XXH128_testdata[7701] */ + { 2567, 0x000000009E3779B1ULL, { 0xD3B31B142CA26956ULL, 0xB2C6EBF00E022B2DULL } }, /* XSUM_XXH128_testdata[7702] */ + { 2567, 0x9E3779B185EBCA8DULL, { 0x2B809C5C59C1BA8CULL, 0xBBEE9A8C6479C998ULL } }, /* XSUM_XXH128_testdata[7703] */ + { 2568, 0x0000000000000000ULL, { 0xC37DE712755AF5A1ULL, 0xBF4511DA02622565ULL } }, /* XSUM_XXH128_testdata[7704] */ + { 2568, 0x000000009E3779B1ULL, { 0xBEF2AE343EA9DCCBULL, 0x9B001E1914DDEA89ULL } }, /* XSUM_XXH128_testdata[7705] */ + { 2568, 0x9E3779B185EBCA8DULL, { 0x59D9506FF4A1C59BULL, 0x4DE06B5B3C9FD74BULL } }, /* XSUM_XXH128_testdata[7706] */ + { 2569, 0x0000000000000000ULL, { 0x771B2E56B82F9305ULL, 0x8BA9F80E59EEE441ULL } }, /* XSUM_XXH128_testdata[7707] */ + { 2569, 0x000000009E3779B1ULL, { 0x98595ACD711EF707ULL, 0xFC0482BD9050DF10ULL } }, /* XSUM_XXH128_testdata[7708] */ + { 2569, 0x9E3779B185EBCA8DULL, { 0x602479761F075306ULL, 0xE2E955FE5A2994A2ULL } }, /* XSUM_XXH128_testdata[7709] */ + { 2570, 0x0000000000000000ULL, { 0xABD36BA52C8E93D7ULL, 0x1BB149CED4070395ULL } }, /* XSUM_XXH128_testdata[7710] */ + { 2570, 0x000000009E3779B1ULL, { 0xEC2039DF76DF4476ULL, 0x75BD9C069F9404C2ULL } }, /* XSUM_XXH128_testdata[7711] */ + { 2570, 0x9E3779B185EBCA8DULL, { 0x9BBEFFD3913419D9ULL, 0x971E51C9BF75E630ULL } }, /* XSUM_XXH128_testdata[7712] */ + { 2571, 0x0000000000000000ULL, { 0x1939BE0252324E1FULL, 0x6F5BB0CBB4810448ULL } }, /* XSUM_XXH128_testdata[7713] */ + { 2571, 0x000000009E3779B1ULL, { 0x77F5DED20D9008D2ULL, 0x1F3AD12109BCB54FULL } }, /* XSUM_XXH128_testdata[7714] */ + { 2571, 0x9E3779B185EBCA8DULL, { 0x818A2AEE26B274D7ULL, 0x41EE0D4C197FFF0DULL } }, /* XSUM_XXH128_testdata[7715] */ + { 2572, 0x0000000000000000ULL, { 0xD43C14CE9E282A46ULL, 0x551A5750BD2124CAULL } }, /* XSUM_XXH128_testdata[7716] */ + { 2572, 0x000000009E3779B1ULL, { 0x76DB36703397C995ULL, 0x2B78C8D47275E25BULL } }, /* XSUM_XXH128_testdata[7717] */ + { 2572, 0x9E3779B185EBCA8DULL, { 0x5F373D933A5DB1C8ULL, 0x60AE268F4D73D5D4ULL } }, /* XSUM_XXH128_testdata[7718] */ + { 2573, 0x0000000000000000ULL, { 0x1B195DF3CD94DF95ULL, 0x496A8B55ADC6489EULL } }, /* XSUM_XXH128_testdata[7719] */ + { 2573, 0x000000009E3779B1ULL, { 0xE8127E284F2C0AE0ULL, 0x76C30D9CE5C61E62ULL } }, /* XSUM_XXH128_testdata[7720] */ + { 2573, 0x9E3779B185EBCA8DULL, { 0x3A497628983CE0A2ULL, 0xBC2530F055C539B8ULL } }, /* XSUM_XXH128_testdata[7721] */ + { 2574, 0x0000000000000000ULL, { 0xBAD61B5DFEE4D9AEULL, 0x1E7D149E64DECB9CULL } }, /* XSUM_XXH128_testdata[7722] */ + { 2574, 0x000000009E3779B1ULL, { 0x4807605B826C30A1ULL, 0xD2C9D8DF98EFB1A2ULL } }, /* XSUM_XXH128_testdata[7723] */ + { 2574, 0x9E3779B185EBCA8DULL, { 0x9D2791365ABD4A7DULL, 0x9B18901373ED54FDULL } }, /* XSUM_XXH128_testdata[7724] */ + { 2575, 0x0000000000000000ULL, { 0xAE9812064E359199ULL, 0x67AEE74A18F85819ULL } }, /* XSUM_XXH128_testdata[7725] */ + { 2575, 0x000000009E3779B1ULL, { 0x90D548CF7DFC1B5DULL, 0x7CE0A4617F79D248ULL } }, /* XSUM_XXH128_testdata[7726] */ + { 2575, 0x9E3779B185EBCA8DULL, { 0x097296A247EDF44AULL, 0x3B0890C58905A104ULL } }, /* XSUM_XXH128_testdata[7727] */ + { 2576, 0x0000000000000000ULL, { 0x6C2FA6480D157458ULL, 0x1DEBB266D5A16DE1ULL } }, /* XSUM_XXH128_testdata[7728] */ + { 2576, 0x000000009E3779B1ULL, { 0xA166930C9CC1218BULL, 0xDCC92E667FD58E53ULL } }, /* XSUM_XXH128_testdata[7729] */ + { 2576, 0x9E3779B185EBCA8DULL, { 0x84CEB7F2EE585DC7ULL, 0xFF30E4043E73DCBEULL } }, /* XSUM_XXH128_testdata[7730] */ + { 2577, 0x0000000000000000ULL, { 0x120D18D2B6CA2129ULL, 0x19F18E0284525E61ULL } }, /* XSUM_XXH128_testdata[7731] */ + { 2577, 0x000000009E3779B1ULL, { 0x39519BC12AE74DD9ULL, 0x111B0AA55AF7E19AULL } }, /* XSUM_XXH128_testdata[7732] */ + { 2577, 0x9E3779B185EBCA8DULL, { 0x5E9C2895D3EE0058ULL, 0x23250317D5978A9FULL } }, /* XSUM_XXH128_testdata[7733] */ + { 2578, 0x0000000000000000ULL, { 0xB641BFFA78F79264ULL, 0x25713E16FBAFD88EULL } }, /* XSUM_XXH128_testdata[7734] */ + { 2578, 0x000000009E3779B1ULL, { 0x6F21AFA40C16754CULL, 0x10BE769D27228801ULL } }, /* XSUM_XXH128_testdata[7735] */ + { 2578, 0x9E3779B185EBCA8DULL, { 0xF1B40D4312F8C015ULL, 0x52CFD56772FB7AF8ULL } }, /* XSUM_XXH128_testdata[7736] */ + { 2579, 0x0000000000000000ULL, { 0xF795516B1D02A34DULL, 0xCF18C39FDBB8836DULL } }, /* XSUM_XXH128_testdata[7737] */ + { 2579, 0x000000009E3779B1ULL, { 0x2A9A98914B97E250ULL, 0xDE6AFDDA6EA0309CULL } }, /* XSUM_XXH128_testdata[7738] */ + { 2579, 0x9E3779B185EBCA8DULL, { 0x1088748B21DC25C5ULL, 0x0A14B83459A6ECAFULL } }, /* XSUM_XXH128_testdata[7739] */ + { 2580, 0x0000000000000000ULL, { 0xC8FB06691974FF06ULL, 0x1D5FE248452EC7A3ULL } }, /* XSUM_XXH128_testdata[7740] */ + { 2580, 0x000000009E3779B1ULL, { 0x65E132F7A29C95E6ULL, 0x046D2BE68DA7CE00ULL } }, /* XSUM_XXH128_testdata[7741] */ + { 2580, 0x9E3779B185EBCA8DULL, { 0x2402D2751DFA59FFULL, 0x57F9A8056D2C531CULL } }, /* XSUM_XXH128_testdata[7742] */ + { 2581, 0x0000000000000000ULL, { 0x9E3727290CF565DBULL, 0x558906B907976267ULL } }, /* XSUM_XXH128_testdata[7743] */ + { 2581, 0x000000009E3779B1ULL, { 0x95BE8EB94B8B0FBDULL, 0xAAC7EC3ED724C3ABULL } }, /* XSUM_XXH128_testdata[7744] */ + { 2581, 0x9E3779B185EBCA8DULL, { 0xC6B39BCDB68D7521ULL, 0x76B8F6D51E9C26C9ULL } }, /* XSUM_XXH128_testdata[7745] */ + { 2582, 0x0000000000000000ULL, { 0xECB9B7BE0D388A50ULL, 0xB607CAE4D439E381ULL } }, /* XSUM_XXH128_testdata[7746] */ + { 2582, 0x000000009E3779B1ULL, { 0x255C3690DF2DF1B6ULL, 0x62BF8ACB20816EC7ULL } }, /* XSUM_XXH128_testdata[7747] */ + { 2582, 0x9E3779B185EBCA8DULL, { 0xB4A2DF2140BF045AULL, 0xAC626D48A818F564ULL } }, /* XSUM_XXH128_testdata[7748] */ + { 2583, 0x0000000000000000ULL, { 0xADBB641E5C1A2DA7ULL, 0x0AAB3840BFBB7CDEULL } }, /* XSUM_XXH128_testdata[7749] */ + { 2583, 0x000000009E3779B1ULL, { 0x3A250609C17C4830ULL, 0x2D68866200B3C6D3ULL } }, /* XSUM_XXH128_testdata[7750] */ + { 2583, 0x9E3779B185EBCA8DULL, { 0x5962AEF99E1D82EDULL, 0xBF9F1520D1F173D4ULL } }, /* XSUM_XXH128_testdata[7751] */ + { 2584, 0x0000000000000000ULL, { 0x352D8CB9B5A57A57ULL, 0xBC94356E887291A2ULL } }, /* XSUM_XXH128_testdata[7752] */ + { 2584, 0x000000009E3779B1ULL, { 0x7180462E37B3D33DULL, 0xAB34674046CF1267ULL } }, /* XSUM_XXH128_testdata[7753] */ + { 2584, 0x9E3779B185EBCA8DULL, { 0x1E8D8C0D1C18DF5EULL, 0xEB19830F3D12E183ULL } }, /* XSUM_XXH128_testdata[7754] */ + { 2585, 0x0000000000000000ULL, { 0x27BD3C273D8D682CULL, 0xBDC32A159605D51FULL } }, /* XSUM_XXH128_testdata[7755] */ + { 2585, 0x000000009E3779B1ULL, { 0x420D4F586056EF62ULL, 0xA472C0D9A57171C5ULL } }, /* XSUM_XXH128_testdata[7756] */ + { 2585, 0x9E3779B185EBCA8DULL, { 0x3819D8CFCB6CCE7AULL, 0xA7BF7B3CFC0C9115ULL } }, /* XSUM_XXH128_testdata[7757] */ + { 2586, 0x0000000000000000ULL, { 0x713E8F363CB3E1ECULL, 0x914D32EE60FCF23DULL } }, /* XSUM_XXH128_testdata[7758] */ + { 2586, 0x000000009E3779B1ULL, { 0x9975A2D22B449992ULL, 0x271DF2F757E44C60ULL } }, /* XSUM_XXH128_testdata[7759] */ + { 2586, 0x9E3779B185EBCA8DULL, { 0x9D7ADB7C07AE3C05ULL, 0x92CF4CB9C799ACA7ULL } }, /* XSUM_XXH128_testdata[7760] */ + { 2587, 0x0000000000000000ULL, { 0x511F33647D70DE7DULL, 0x7D2C9BA284E455FCULL } }, /* XSUM_XXH128_testdata[7761] */ + { 2587, 0x000000009E3779B1ULL, { 0x85E2D3DEB6D39DEDULL, 0xC44EC5C1FA471E63ULL } }, /* XSUM_XXH128_testdata[7762] */ + { 2587, 0x9E3779B185EBCA8DULL, { 0x0B324080469F52BBULL, 0xDAA781BF793C031FULL } }, /* XSUM_XXH128_testdata[7763] */ + { 2588, 0x0000000000000000ULL, { 0xDD3FEB274F4356C5ULL, 0x9F9EE85A3D241B28ULL } }, /* XSUM_XXH128_testdata[7764] */ + { 2588, 0x000000009E3779B1ULL, { 0x722C73C359AAB883ULL, 0xD9EB823DA1D58C66ULL } }, /* XSUM_XXH128_testdata[7765] */ + { 2588, 0x9E3779B185EBCA8DULL, { 0x1005F0A623F5543DULL, 0x58D2F45AFC59A4DBULL } }, /* XSUM_XXH128_testdata[7766] */ + { 2589, 0x0000000000000000ULL, { 0x6A45D690D397327CULL, 0xC8A1B7BA67D52970ULL } }, /* XSUM_XXH128_testdata[7767] */ + { 2589, 0x000000009E3779B1ULL, { 0xB6CDCF5772D72967ULL, 0x8A47BBDA1F744599ULL } }, /* XSUM_XXH128_testdata[7768] */ + { 2589, 0x9E3779B185EBCA8DULL, { 0x5181ACBF3D01F5CBULL, 0xF6A77821530E7367ULL } }, /* XSUM_XXH128_testdata[7769] */ + { 2590, 0x0000000000000000ULL, { 0x0F311BD0CE8CB7DCULL, 0xCAF3A328BA4AEA76ULL } }, /* XSUM_XXH128_testdata[7770] */ + { 2590, 0x000000009E3779B1ULL, { 0x49C90414CA6853EBULL, 0x9A42F6B3E7C29D50ULL } }, /* XSUM_XXH128_testdata[7771] */ + { 2590, 0x9E3779B185EBCA8DULL, { 0x0BAE41BB7EA97721ULL, 0xFF376A672A2DDD0FULL } }, /* XSUM_XXH128_testdata[7772] */ + { 2591, 0x0000000000000000ULL, { 0x2D7E8992C887B638ULL, 0xF4E0BE32E3498722ULL } }, /* XSUM_XXH128_testdata[7773] */ + { 2591, 0x000000009E3779B1ULL, { 0xBD4DDDAFCF82BB11ULL, 0xF3C4571A2E0F7C7CULL } }, /* XSUM_XXH128_testdata[7774] */ + { 2591, 0x9E3779B185EBCA8DULL, { 0xA28BA394DD194668ULL, 0xE3296576627DA17BULL } }, /* XSUM_XXH128_testdata[7775] */ + { 2592, 0x0000000000000000ULL, { 0xA0985AF7DB1C78DAULL, 0x3F4F9BCCE1A2A279ULL } }, /* XSUM_XXH128_testdata[7776] */ + { 2592, 0x000000009E3779B1ULL, { 0x18968EDF80450ABFULL, 0x4B0EA18803B1081DULL } }, /* XSUM_XXH128_testdata[7777] */ + { 2592, 0x9E3779B185EBCA8DULL, { 0xCD03D5EF50B7F641ULL, 0x2E3FD124BC0CD593ULL } }, /* XSUM_XXH128_testdata[7778] */ + { 2593, 0x0000000000000000ULL, { 0xC18A32BFAC492DA5ULL, 0xE129F921C65AEF75ULL } }, /* XSUM_XXH128_testdata[7779] */ + { 2593, 0x000000009E3779B1ULL, { 0x90F03903227DC4B5ULL, 0x9748E4203EED8EBEULL } }, /* XSUM_XXH128_testdata[7780] */ + { 2593, 0x9E3779B185EBCA8DULL, { 0x8ACB50DDDBDC01A5ULL, 0x4EFC407680CF99CBULL } }, /* XSUM_XXH128_testdata[7781] */ + { 2594, 0x0000000000000000ULL, { 0xF64DA444EB493F68ULL, 0x3866C5E7C13329E6ULL } }, /* XSUM_XXH128_testdata[7782] */ + { 2594, 0x000000009E3779B1ULL, { 0x4A334577431D8A9EULL, 0xA42570675F504D80ULL } }, /* XSUM_XXH128_testdata[7783] */ + { 2594, 0x9E3779B185EBCA8DULL, { 0xD4D6DC9610B09ED9ULL, 0xAC679A1B7F038987ULL } }, /* XSUM_XXH128_testdata[7784] */ + { 2595, 0x0000000000000000ULL, { 0xE52B406153967B5DULL, 0x23BA3495FD112633ULL } }, /* XSUM_XXH128_testdata[7785] */ + { 2595, 0x000000009E3779B1ULL, { 0x83A14100CA69532EULL, 0x7423042229BBAA15ULL } }, /* XSUM_XXH128_testdata[7786] */ + { 2595, 0x9E3779B185EBCA8DULL, { 0x32D2229033C5E7E8ULL, 0x906CBEE1C11C549AULL } }, /* XSUM_XXH128_testdata[7787] */ + { 2596, 0x0000000000000000ULL, { 0xFD06FE5D8AB51DE0ULL, 0x6E17E42006A48260ULL } }, /* XSUM_XXH128_testdata[7788] */ + { 2596, 0x000000009E3779B1ULL, { 0xF0D012181CA56F64ULL, 0xC7E6FB18740D4161ULL } }, /* XSUM_XXH128_testdata[7789] */ + { 2596, 0x9E3779B185EBCA8DULL, { 0xA3E51AB7B2578095ULL, 0xBFD10393547A306BULL } }, /* XSUM_XXH128_testdata[7790] */ + { 2597, 0x0000000000000000ULL, { 0x6AD78967B48D27B0ULL, 0x50571D7D9D9C7EDCULL } }, /* XSUM_XXH128_testdata[7791] */ + { 2597, 0x000000009E3779B1ULL, { 0x2B44C5BAB8167A31ULL, 0xD33E235E23795A89ULL } }, /* XSUM_XXH128_testdata[7792] */ + { 2597, 0x9E3779B185EBCA8DULL, { 0xB9EC608D42131699ULL, 0x33CA756B43B41096ULL } }, /* XSUM_XXH128_testdata[7793] */ + { 2598, 0x0000000000000000ULL, { 0x5CF771A99E79B668ULL, 0x874573EDC80977ECULL } }, /* XSUM_XXH128_testdata[7794] */ + { 2598, 0x000000009E3779B1ULL, { 0xDAA9422DAA288201ULL, 0xF59E63E7EC574C14ULL } }, /* XSUM_XXH128_testdata[7795] */ + { 2598, 0x9E3779B185EBCA8DULL, { 0x12D534B6B541F6F2ULL, 0xAA775AEFB68FEB5BULL } }, /* XSUM_XXH128_testdata[7796] */ + { 2599, 0x0000000000000000ULL, { 0x84CDC90932783EB7ULL, 0xBEF31C7C6DAF838FULL } }, /* XSUM_XXH128_testdata[7797] */ + { 2599, 0x000000009E3779B1ULL, { 0xA756BBFF4B2F382AULL, 0x9B97CEB549719B72ULL } }, /* XSUM_XXH128_testdata[7798] */ + { 2599, 0x9E3779B185EBCA8DULL, { 0x6A81DD60A3513541ULL, 0x0011F10A5A1904DBULL } }, /* XSUM_XXH128_testdata[7799] */ + { 2600, 0x0000000000000000ULL, { 0x793556D83DF49115ULL, 0x5DADF58E251CC0D1ULL } }, /* XSUM_XXH128_testdata[7800] */ + { 2600, 0x000000009E3779B1ULL, { 0x74E6698BB68E6BFDULL, 0x36738B3B150CD15EULL } }, /* XSUM_XXH128_testdata[7801] */ + { 2600, 0x9E3779B185EBCA8DULL, { 0x4A7FADFBD097FEF4ULL, 0x1212D6BF106E747AULL } }, /* XSUM_XXH128_testdata[7802] */ + { 2601, 0x0000000000000000ULL, { 0x4DF044753E280E1BULL, 0x0C00F56BBC776F55ULL } }, /* XSUM_XXH128_testdata[7803] */ + { 2601, 0x000000009E3779B1ULL, { 0x9DA2568178EA86CEULL, 0xCAFD33B82D3FC3D5ULL } }, /* XSUM_XXH128_testdata[7804] */ + { 2601, 0x9E3779B185EBCA8DULL, { 0x7983257C51743B94ULL, 0xFBFBE2B1B2B66550ULL } }, /* XSUM_XXH128_testdata[7805] */ + { 2602, 0x0000000000000000ULL, { 0x51C2F2A5AA9AC6EEULL, 0xE650ED333350D62DULL } }, /* XSUM_XXH128_testdata[7806] */ + { 2602, 0x000000009E3779B1ULL, { 0x99FD9059AB1102FCULL, 0x9517003D65DCE282ULL } }, /* XSUM_XXH128_testdata[7807] */ + { 2602, 0x9E3779B185EBCA8DULL, { 0xE34EFE3511F7B5DFULL, 0xB90FF853E5FDE63CULL } }, /* XSUM_XXH128_testdata[7808] */ + { 2603, 0x0000000000000000ULL, { 0x577F4E5B8F4E89DDULL, 0xD3A047275C468F75ULL } }, /* XSUM_XXH128_testdata[7809] */ + { 2603, 0x000000009E3779B1ULL, { 0xC1FBBF41CBCE8835ULL, 0x31A229956EC352BDULL } }, /* XSUM_XXH128_testdata[7810] */ + { 2603, 0x9E3779B185EBCA8DULL, { 0xFD32BEF84E7F1106ULL, 0x5F86E108BA916D74ULL } }, /* XSUM_XXH128_testdata[7811] */ + { 2604, 0x0000000000000000ULL, { 0x8902BC5E2A41B147ULL, 0x5404C99234AA8EA1ULL } }, /* XSUM_XXH128_testdata[7812] */ + { 2604, 0x000000009E3779B1ULL, { 0x56BFC60D7EDE75CBULL, 0x4E29F562146B7259ULL } }, /* XSUM_XXH128_testdata[7813] */ + { 2604, 0x9E3779B185EBCA8DULL, { 0x706BFD376CC52DFFULL, 0x6517FA81C9388CB0ULL } }, /* XSUM_XXH128_testdata[7814] */ + { 2605, 0x0000000000000000ULL, { 0x5FAE4460F3C39846ULL, 0xADE11EA8BA4B3AD9ULL } }, /* XSUM_XXH128_testdata[7815] */ + { 2605, 0x000000009E3779B1ULL, { 0x450283361A7F8C95ULL, 0x80A7F9E44B3D58C8ULL } }, /* XSUM_XXH128_testdata[7816] */ + { 2605, 0x9E3779B185EBCA8DULL, { 0x9DED80F95A23BD06ULL, 0x797E1E1581A5E7B0ULL } }, /* XSUM_XXH128_testdata[7817] */ + { 2606, 0x0000000000000000ULL, { 0xF8E61A854B43505DULL, 0xD127150891862D88ULL } }, /* XSUM_XXH128_testdata[7818] */ + { 2606, 0x000000009E3779B1ULL, { 0x492C736A436CAB5CULL, 0xA2100A455D8BFB12ULL } }, /* XSUM_XXH128_testdata[7819] */ + { 2606, 0x9E3779B185EBCA8DULL, { 0x469072E7463A91F5ULL, 0x1F108B994CD5A742ULL } }, /* XSUM_XXH128_testdata[7820] */ + { 2607, 0x0000000000000000ULL, { 0xBF55E4C17172119FULL, 0x56A9E5B0FDE68CE1ULL } }, /* XSUM_XXH128_testdata[7821] */ + { 2607, 0x000000009E3779B1ULL, { 0x65362AE1FBA2EE66ULL, 0x48585772EE0E5E09ULL } }, /* XSUM_XXH128_testdata[7822] */ + { 2607, 0x9E3779B185EBCA8DULL, { 0x83B3CF9D92F676FAULL, 0x6505178476A8F51FULL } }, /* XSUM_XXH128_testdata[7823] */ + { 2608, 0x0000000000000000ULL, { 0x9557766EF78170A7ULL, 0x611717E4DDE9123BULL } }, /* XSUM_XXH128_testdata[7824] */ + { 2608, 0x000000009E3779B1ULL, { 0x0AC721609C3D59E8ULL, 0x98A8F249A3AAF8C2ULL } }, /* XSUM_XXH128_testdata[7825] */ + { 2608, 0x9E3779B185EBCA8DULL, { 0x3DC22CB0B2E4E775ULL, 0xCD027C56CD221E54ULL } }, /* XSUM_XXH128_testdata[7826] */ + { 2609, 0x0000000000000000ULL, { 0xCF262555C32C1E2CULL, 0xC0016489EC43CBA8ULL } }, /* XSUM_XXH128_testdata[7827] */ + { 2609, 0x000000009E3779B1ULL, { 0x3968E5BA89BF7F89ULL, 0x0ADC1557C1B75283ULL } }, /* XSUM_XXH128_testdata[7828] */ + { 2609, 0x9E3779B185EBCA8DULL, { 0x47ACA6B43896AD9CULL, 0xA1A08D4C1146A8DFULL } }, /* XSUM_XXH128_testdata[7829] */ + { 2610, 0x0000000000000000ULL, { 0xA6A5D0D502CD8978ULL, 0x28A75ECCCF6275EAULL } }, /* XSUM_XXH128_testdata[7830] */ + { 2610, 0x000000009E3779B1ULL, { 0x44570A8E72ED1EA2ULL, 0x07C346D0D7A23D8AULL } }, /* XSUM_XXH128_testdata[7831] */ + { 2610, 0x9E3779B185EBCA8DULL, { 0xF01F3210CCF55F10ULL, 0x2EED900776EC84FEULL } }, /* XSUM_XXH128_testdata[7832] */ + { 2611, 0x0000000000000000ULL, { 0x2C4DBEE8D8330A21ULL, 0xAFBA78CD33A837B8ULL } }, /* XSUM_XXH128_testdata[7833] */ + { 2611, 0x000000009E3779B1ULL, { 0x3C614F8630DDC329ULL, 0x046EADFD08EBC612ULL } }, /* XSUM_XXH128_testdata[7834] */ + { 2611, 0x9E3779B185EBCA8DULL, { 0x7C1FA94B50C9F82DULL, 0xEBE506B7A9D8A46BULL } }, /* XSUM_XXH128_testdata[7835] */ + { 2612, 0x0000000000000000ULL, { 0x79DC7D9B0FCED621ULL, 0x60976FF009DCC7F7ULL } }, /* XSUM_XXH128_testdata[7836] */ + { 2612, 0x000000009E3779B1ULL, { 0xF260B6EF1F870DBBULL, 0x0E621BB4CB2D05F2ULL } }, /* XSUM_XXH128_testdata[7837] */ + { 2612, 0x9E3779B185EBCA8DULL, { 0x9F530ECF38A6A595ULL, 0xFAD61D75BC259EE8ULL } }, /* XSUM_XXH128_testdata[7838] */ + { 2613, 0x0000000000000000ULL, { 0xB0D601D09C8E2486ULL, 0x34389E4421222A74ULL } }, /* XSUM_XXH128_testdata[7839] */ + { 2613, 0x000000009E3779B1ULL, { 0x63BFF52CC24E9AC5ULL, 0xD80E97903D4EC48EULL } }, /* XSUM_XXH128_testdata[7840] */ + { 2613, 0x9E3779B185EBCA8DULL, { 0x168988B52DF66509ULL, 0xC99DBB34C4B172EBULL } }, /* XSUM_XXH128_testdata[7841] */ + { 2614, 0x0000000000000000ULL, { 0x296703ED6B4E2196ULL, 0x1F23E598EC55881EULL } }, /* XSUM_XXH128_testdata[7842] */ + { 2614, 0x000000009E3779B1ULL, { 0x4667D8A9A4D8BBEAULL, 0x183206E69CB9F329ULL } }, /* XSUM_XXH128_testdata[7843] */ + { 2614, 0x9E3779B185EBCA8DULL, { 0x077FA33DF4E8106BULL, 0x814C8C598013E930ULL } }, /* XSUM_XXH128_testdata[7844] */ + { 2615, 0x0000000000000000ULL, { 0x3C129D5A06CD7375ULL, 0xA9FA6C8D7D4E3575ULL } }, /* XSUM_XXH128_testdata[7845] */ + { 2615, 0x000000009E3779B1ULL, { 0x359A4624A8080B60ULL, 0xDD5F2AA46CABE5E8ULL } }, /* XSUM_XXH128_testdata[7846] */ + { 2615, 0x9E3779B185EBCA8DULL, { 0x7FF5CFE58BD3D80FULL, 0x0347A66D5880A20EULL } }, /* XSUM_XXH128_testdata[7847] */ + { 2616, 0x0000000000000000ULL, { 0xB7B4AC0A5B5946E3ULL, 0x32929A684BA158ACULL } }, /* XSUM_XXH128_testdata[7848] */ + { 2616, 0x000000009E3779B1ULL, { 0x3F39A96E1A88A718ULL, 0x13BDFA7F9482673DULL } }, /* XSUM_XXH128_testdata[7849] */ + { 2616, 0x9E3779B185EBCA8DULL, { 0xD34936D799A3ACF2ULL, 0x04D5BA1A8F05545BULL } }, /* XSUM_XXH128_testdata[7850] */ + { 2617, 0x0000000000000000ULL, { 0xC692D17EAF1C1954ULL, 0x919618D01DA8D502ULL } }, /* XSUM_XXH128_testdata[7851] */ + { 2617, 0x000000009E3779B1ULL, { 0x3D4E79176877F5A8ULL, 0xA277B58E6C46A6F9ULL } }, /* XSUM_XXH128_testdata[7852] */ + { 2617, 0x9E3779B185EBCA8DULL, { 0x17BE5362B26B02BEULL, 0x51D0DD9536B9DC2DULL } }, /* XSUM_XXH128_testdata[7853] */ + { 2618, 0x0000000000000000ULL, { 0x271B46700F1A8C6BULL, 0x5376D95674B9467AULL } }, /* XSUM_XXH128_testdata[7854] */ + { 2618, 0x000000009E3779B1ULL, { 0xC6F99D9E4F683C0BULL, 0x95428CF4AF56F900ULL } }, /* XSUM_XXH128_testdata[7855] */ + { 2618, 0x9E3779B185EBCA8DULL, { 0x6EE5315756FC49CEULL, 0x6DD2E16C42D1C331ULL } }, /* XSUM_XXH128_testdata[7856] */ + { 2619, 0x0000000000000000ULL, { 0xA9C0AE3CC22EC8CEULL, 0x831EBA3A8F2C176FULL } }, /* XSUM_XXH128_testdata[7857] */ + { 2619, 0x000000009E3779B1ULL, { 0xDB16FE8FCB1CC11AULL, 0xBD3C6B3BD727B1A7ULL } }, /* XSUM_XXH128_testdata[7858] */ + { 2619, 0x9E3779B185EBCA8DULL, { 0x76E30F2B751FDC75ULL, 0x82375CB2E1FFB7E4ULL } }, /* XSUM_XXH128_testdata[7859] */ + { 2620, 0x0000000000000000ULL, { 0x9E54D2B87B91BE4FULL, 0x9746DAD232D719BFULL } }, /* XSUM_XXH128_testdata[7860] */ + { 2620, 0x000000009E3779B1ULL, { 0x571CEC29CDFA3DC3ULL, 0xDF2F3FA17B8C6065ULL } }, /* XSUM_XXH128_testdata[7861] */ + { 2620, 0x9E3779B185EBCA8DULL, { 0x847D5F2BEC873CD6ULL, 0x5018E36E4E53E0BCULL } }, /* XSUM_XXH128_testdata[7862] */ + { 2621, 0x0000000000000000ULL, { 0x04DE572AD2A5375BULL, 0xC95F5A54E614AD4AULL } }, /* XSUM_XXH128_testdata[7863] */ + { 2621, 0x000000009E3779B1ULL, { 0x860A593D6ADF9C1EULL, 0x32E967C56DF1EB9BULL } }, /* XSUM_XXH128_testdata[7864] */ + { 2621, 0x9E3779B185EBCA8DULL, { 0x0686E8B46801DBCCULL, 0x5482116E0EF00F91ULL } }, /* XSUM_XXH128_testdata[7865] */ + { 2622, 0x0000000000000000ULL, { 0xADC6AE2C7840086EULL, 0xE52F7695D2536EDDULL } }, /* XSUM_XXH128_testdata[7866] */ + { 2622, 0x000000009E3779B1ULL, { 0xEC785891BBCB4518ULL, 0x8DE26CA8F5EB30FAULL } }, /* XSUM_XXH128_testdata[7867] */ + { 2622, 0x9E3779B185EBCA8DULL, { 0x9ABEE55D46148633ULL, 0x426A6BC6AC326663ULL } }, /* XSUM_XXH128_testdata[7868] */ + { 2623, 0x0000000000000000ULL, { 0x8E5BAC3A499DAED2ULL, 0x96C79BF8E56E1C98ULL } }, /* XSUM_XXH128_testdata[7869] */ + { 2623, 0x000000009E3779B1ULL, { 0xC22325D1FACC4096ULL, 0xA337E0A187C062DCULL } }, /* XSUM_XXH128_testdata[7870] */ + { 2623, 0x9E3779B185EBCA8DULL, { 0xC4EE815218C26490ULL, 0xC400292076B4542EULL } }, /* XSUM_XXH128_testdata[7871] */ + { 2624, 0x0000000000000000ULL, { 0x79937D40FBEAE0EEULL, 0xAD1D9EEB07326B52ULL } }, /* XSUM_XXH128_testdata[7872] */ + { 2624, 0x000000009E3779B1ULL, { 0x57CFD1E9695D6DEEULL, 0xEEB994AAC9B0B3C0ULL } }, /* XSUM_XXH128_testdata[7873] */ + { 2624, 0x9E3779B185EBCA8DULL, { 0xA2311717DEBB82A4ULL, 0x368AA2AF21B68E78ULL } }, /* XSUM_XXH128_testdata[7874] */ + { 2625, 0x0000000000000000ULL, { 0xDD4481334E9FB9C2ULL, 0x0149C161B62B3116ULL } }, /* XSUM_XXH128_testdata[7875] */ + { 2625, 0x000000009E3779B1ULL, { 0x810A80AD2C5BE420ULL, 0x9C4DEB734DED999DULL } }, /* XSUM_XXH128_testdata[7876] */ + { 2625, 0x9E3779B185EBCA8DULL, { 0xA19D3278B3193132ULL, 0x39E451D3C433B1C9ULL } }, /* XSUM_XXH128_testdata[7877] */ + { 2626, 0x0000000000000000ULL, { 0x0241BB191BEEAA15ULL, 0xB4A0063D73DB314BULL } }, /* XSUM_XXH128_testdata[7878] */ + { 2626, 0x000000009E3779B1ULL, { 0x4D18C68F8D1856A1ULL, 0x7473805EF4E67661ULL } }, /* XSUM_XXH128_testdata[7879] */ + { 2626, 0x9E3779B185EBCA8DULL, { 0xC074D83A8C31BDBCULL, 0x08CE43D99992FF2FULL } }, /* XSUM_XXH128_testdata[7880] */ + { 2627, 0x0000000000000000ULL, { 0x1EB83BA0E95C1655ULL, 0xA1B6E6B715466BF9ULL } }, /* XSUM_XXH128_testdata[7881] */ + { 2627, 0x000000009E3779B1ULL, { 0x7F55C60424DF3C84ULL, 0xF1C7FB0A5B77E030ULL } }, /* XSUM_XXH128_testdata[7882] */ + { 2627, 0x9E3779B185EBCA8DULL, { 0xC477C01EE6C3A537ULL, 0x933AC580FFFBC3F7ULL } }, /* XSUM_XXH128_testdata[7883] */ + { 2628, 0x0000000000000000ULL, { 0x0C4DD67BB0F562C8ULL, 0x1AA4C09432AD9913ULL } }, /* XSUM_XXH128_testdata[7884] */ + { 2628, 0x000000009E3779B1ULL, { 0x11A1CD70E72E4C55ULL, 0x5A77B8411279B682ULL } }, /* XSUM_XXH128_testdata[7885] */ + { 2628, 0x9E3779B185EBCA8DULL, { 0x79EA32FD8F436AA2ULL, 0x6B0FC009C374CDD9ULL } }, /* XSUM_XXH128_testdata[7886] */ + { 2629, 0x0000000000000000ULL, { 0x737EBAEA0ADEFF70ULL, 0x76EF8F2A45ED0BA5ULL } }, /* XSUM_XXH128_testdata[7887] */ + { 2629, 0x000000009E3779B1ULL, { 0xEA9233D9EB71C315ULL, 0x73F832B64BC92659ULL } }, /* XSUM_XXH128_testdata[7888] */ + { 2629, 0x9E3779B185EBCA8DULL, { 0xBC70DCF943FBCBD4ULL, 0x435EE03311C48B22ULL } }, /* XSUM_XXH128_testdata[7889] */ + { 2630, 0x0000000000000000ULL, { 0x246BA432B5769B9EULL, 0xE7AB2344A7C5AFA3ULL } }, /* XSUM_XXH128_testdata[7890] */ + { 2630, 0x000000009E3779B1ULL, { 0x45858F6C1DBB30E3ULL, 0xE01396E5411B8728ULL } }, /* XSUM_XXH128_testdata[7891] */ + { 2630, 0x9E3779B185EBCA8DULL, { 0x9B3DF72E9DF51AA8ULL, 0xF7F85BCB2B6B612DULL } }, /* XSUM_XXH128_testdata[7892] */ + { 2631, 0x0000000000000000ULL, { 0x2C424F0EC27B9333ULL, 0x5F85F4C143FEB636ULL } }, /* XSUM_XXH128_testdata[7893] */ + { 2631, 0x000000009E3779B1ULL, { 0x4C7562DF7BE0A87FULL, 0x8533EE03C7AA7199ULL } }, /* XSUM_XXH128_testdata[7894] */ + { 2631, 0x9E3779B185EBCA8DULL, { 0x24417D77C0E33AC6ULL, 0x548AE0604D9A269CULL } }, /* XSUM_XXH128_testdata[7895] */ + { 2632, 0x0000000000000000ULL, { 0x1AD8B96CF5A303DAULL, 0x28C107FB88488C02ULL } }, /* XSUM_XXH128_testdata[7896] */ + { 2632, 0x000000009E3779B1ULL, { 0x438D8CE72B0310CEULL, 0xB00EF6BD6CF23DFFULL } }, /* XSUM_XXH128_testdata[7897] */ + { 2632, 0x9E3779B185EBCA8DULL, { 0x5AAA8E098E454774ULL, 0xD585EEFDE642A72AULL } }, /* XSUM_XXH128_testdata[7898] */ + { 2633, 0x0000000000000000ULL, { 0xD2C83ED9155634FEULL, 0x238EDD4DC389C7CCULL } }, /* XSUM_XXH128_testdata[7899] */ + { 2633, 0x000000009E3779B1ULL, { 0x15C30A48AA043024ULL, 0xAABB8CA8F4E31C51ULL } }, /* XSUM_XXH128_testdata[7900] */ + { 2633, 0x9E3779B185EBCA8DULL, { 0x5C85BFCCF0926393ULL, 0x6FFAF48B4C8A02E1ULL } }, /* XSUM_XXH128_testdata[7901] */ + { 2634, 0x0000000000000000ULL, { 0xB26D421672653094ULL, 0xE6AB2BB13694F48BULL } }, /* XSUM_XXH128_testdata[7902] */ + { 2634, 0x000000009E3779B1ULL, { 0xD396007CD02B73F7ULL, 0xE65D974B19927A99ULL } }, /* XSUM_XXH128_testdata[7903] */ + { 2634, 0x9E3779B185EBCA8DULL, { 0xC39EB9D4E889AC53ULL, 0x35EE53B741DC4103ULL } }, /* XSUM_XXH128_testdata[7904] */ + { 2635, 0x0000000000000000ULL, { 0xAE65782138999678ULL, 0x8BEA66637F25C6EBULL } }, /* XSUM_XXH128_testdata[7905] */ + { 2635, 0x000000009E3779B1ULL, { 0x1119EAFB6FD54EF2ULL, 0xE70768A39FCE58E6ULL } }, /* XSUM_XXH128_testdata[7906] */ + { 2635, 0x9E3779B185EBCA8DULL, { 0xD6DE637F2CF60651ULL, 0x731200DFA735EE80ULL } }, /* XSUM_XXH128_testdata[7907] */ + { 2636, 0x0000000000000000ULL, { 0x8293E92420859F92ULL, 0x30474FE99759A538ULL } }, /* XSUM_XXH128_testdata[7908] */ + { 2636, 0x000000009E3779B1ULL, { 0x5026DE539216110BULL, 0xE245A95C1FFAEF71ULL } }, /* XSUM_XXH128_testdata[7909] */ + { 2636, 0x9E3779B185EBCA8DULL, { 0xAA98B201C1EB0FB2ULL, 0x517ECED263785700ULL } }, /* XSUM_XXH128_testdata[7910] */ + { 2637, 0x0000000000000000ULL, { 0x463D5BB372D71DF8ULL, 0x45A581BB1939AB31ULL } }, /* XSUM_XXH128_testdata[7911] */ + { 2637, 0x000000009E3779B1ULL, { 0x8103315F0F389593ULL, 0x076E63EEB457A39EULL } }, /* XSUM_XXH128_testdata[7912] */ + { 2637, 0x9E3779B185EBCA8DULL, { 0x17A02B21B39C4518ULL, 0xE2275FDC6269FCE1ULL } }, /* XSUM_XXH128_testdata[7913] */ + { 2638, 0x0000000000000000ULL, { 0x2FABFE4DF1017EF5ULL, 0x00ACD6A14F8FF4DFULL } }, /* XSUM_XXH128_testdata[7914] */ + { 2638, 0x000000009E3779B1ULL, { 0x6F290FC646CA8E9AULL, 0xC656DDF1354BD304ULL } }, /* XSUM_XXH128_testdata[7915] */ + { 2638, 0x9E3779B185EBCA8DULL, { 0x676D60830BF6C2A4ULL, 0x0B241A22E62BBB84ULL } }, /* XSUM_XXH128_testdata[7916] */ + { 2639, 0x0000000000000000ULL, { 0x052B70E8495A8C5FULL, 0x5725CABE0753A848ULL } }, /* XSUM_XXH128_testdata[7917] */ + { 2639, 0x000000009E3779B1ULL, { 0xD6240AA67DCF1D57ULL, 0x82365409153590D6ULL } }, /* XSUM_XXH128_testdata[7918] */ + { 2639, 0x9E3779B185EBCA8DULL, { 0xFDBDCE1EDA106F45ULL, 0xA9A30ACB711668E6ULL } }, /* XSUM_XXH128_testdata[7919] */ + { 2640, 0x0000000000000000ULL, { 0x13B98550B2E1133AULL, 0xF3139142914075E5ULL } }, /* XSUM_XXH128_testdata[7920] */ + { 2640, 0x000000009E3779B1ULL, { 0xCFD3D18A991F5DBCULL, 0x576F382957FDEEDBULL } }, /* XSUM_XXH128_testdata[7921] */ + { 2640, 0x9E3779B185EBCA8DULL, { 0xA7C90E41655651CBULL, 0xED4913F56EB79A75ULL } }, /* XSUM_XXH128_testdata[7922] */ + { 2641, 0x0000000000000000ULL, { 0x993917249E53DD10ULL, 0xB0F5ADC3D99A133CULL } }, /* XSUM_XXH128_testdata[7923] */ + { 2641, 0x000000009E3779B1ULL, { 0xD44E6525F1840726ULL, 0x48140BF82D739DA5ULL } }, /* XSUM_XXH128_testdata[7924] */ + { 2641, 0x9E3779B185EBCA8DULL, { 0xA25D31BBF1522234ULL, 0x0F0861346BF4F7E8ULL } }, /* XSUM_XXH128_testdata[7925] */ + { 2642, 0x0000000000000000ULL, { 0x79DFAF4CDE4E7990ULL, 0x75E764412534FC8AULL } }, /* XSUM_XXH128_testdata[7926] */ + { 2642, 0x000000009E3779B1ULL, { 0x29DAD003C308A2BDULL, 0x5CFA1C4270508DE2ULL } }, /* XSUM_XXH128_testdata[7927] */ + { 2642, 0x9E3779B185EBCA8DULL, { 0xC08961744B1C05A1ULL, 0xFFA2C64F799A0B83ULL } }, /* XSUM_XXH128_testdata[7928] */ + { 2643, 0x0000000000000000ULL, { 0x02F6E5D0B5E36602ULL, 0xDD072756C8E72F00ULL } }, /* XSUM_XXH128_testdata[7929] */ + { 2643, 0x000000009E3779B1ULL, { 0x57560FCEF57391F1ULL, 0xFF7E33D6D84727AAULL } }, /* XSUM_XXH128_testdata[7930] */ + { 2643, 0x9E3779B185EBCA8DULL, { 0x5DD5F86B860B983DULL, 0xBB52375A2C707FCDULL } }, /* XSUM_XXH128_testdata[7931] */ + { 2644, 0x0000000000000000ULL, { 0x59D7C04DCD7A9C31ULL, 0x3673EEBFF0977A28ULL } }, /* XSUM_XXH128_testdata[7932] */ + { 2644, 0x000000009E3779B1ULL, { 0x7226852EE94C2BA2ULL, 0xE0A655E662B1253AULL } }, /* XSUM_XXH128_testdata[7933] */ + { 2644, 0x9E3779B185EBCA8DULL, { 0x09727950E5C8FB44ULL, 0xDE4115314C6DAA2AULL } }, /* XSUM_XXH128_testdata[7934] */ + { 2645, 0x0000000000000000ULL, { 0xA73A74733557657FULL, 0x5DBA58620BA2ABC5ULL } }, /* XSUM_XXH128_testdata[7935] */ + { 2645, 0x000000009E3779B1ULL, { 0x2D6560589379FCCAULL, 0x24891201BA523948ULL } }, /* XSUM_XXH128_testdata[7936] */ + { 2645, 0x9E3779B185EBCA8DULL, { 0xC4BD5D9640F75625ULL, 0xC18CC674B942083CULL } }, /* XSUM_XXH128_testdata[7937] */ + { 2646, 0x0000000000000000ULL, { 0x68772A55C9E56246ULL, 0x48C8318D9166F8E7ULL } }, /* XSUM_XXH128_testdata[7938] */ + { 2646, 0x000000009E3779B1ULL, { 0x5076CB6C8C108876ULL, 0x2250184E9D859265ULL } }, /* XSUM_XXH128_testdata[7939] */ + { 2646, 0x9E3779B185EBCA8DULL, { 0x1C50DD529DB79DC6ULL, 0xF3986AF89A7F7B46ULL } }, /* XSUM_XXH128_testdata[7940] */ + { 2647, 0x0000000000000000ULL, { 0x388AC2C4452446F5ULL, 0xE4756E014611BC4AULL } }, /* XSUM_XXH128_testdata[7941] */ + { 2647, 0x000000009E3779B1ULL, { 0x106E4CA2E3E7723BULL, 0x28316891249E6A9BULL } }, /* XSUM_XXH128_testdata[7942] */ + { 2647, 0x9E3779B185EBCA8DULL, { 0xDFA71D727175FE54ULL, 0x060174389CD28713ULL } }, /* XSUM_XXH128_testdata[7943] */ + { 2648, 0x0000000000000000ULL, { 0x17C777FE609883D9ULL, 0x740778D1F93165ADULL } }, /* XSUM_XXH128_testdata[7944] */ + { 2648, 0x000000009E3779B1ULL, { 0x63FE25A5979EC89EULL, 0xF0184ED5356E5EE5ULL } }, /* XSUM_XXH128_testdata[7945] */ + { 2648, 0x9E3779B185EBCA8DULL, { 0x086F565F371F7BF5ULL, 0xC6FC4EE043B3A7F7ULL } }, /* XSUM_XXH128_testdata[7946] */ + { 2649, 0x0000000000000000ULL, { 0x29D915B6CDAF1576ULL, 0xD28F183F90AAE11AULL } }, /* XSUM_XXH128_testdata[7947] */ + { 2649, 0x000000009E3779B1ULL, { 0xA21ED745F0D1E4C7ULL, 0x542F4BDCB102C9B5ULL } }, /* XSUM_XXH128_testdata[7948] */ + { 2649, 0x9E3779B185EBCA8DULL, { 0x725766FA1F433305ULL, 0x31FA67E10DC6E275ULL } }, /* XSUM_XXH128_testdata[7949] */ + { 2650, 0x0000000000000000ULL, { 0x4428A0F2F241E77CULL, 0x73FE59B5BA266D95ULL } }, /* XSUM_XXH128_testdata[7950] */ + { 2650, 0x000000009E3779B1ULL, { 0x1F64D6F3E566C7EEULL, 0x3F435E85E9242C92ULL } }, /* XSUM_XXH128_testdata[7951] */ + { 2650, 0x9E3779B185EBCA8DULL, { 0xD8837F9E84379EADULL, 0x3E610E7EB4D4A930ULL } }, /* XSUM_XXH128_testdata[7952] */ + { 2651, 0x0000000000000000ULL, { 0x50226B7D26F9FFEFULL, 0x4F3BF3F47D7BDB7DULL } }, /* XSUM_XXH128_testdata[7953] */ + { 2651, 0x000000009E3779B1ULL, { 0x5376AA061E3FB933ULL, 0x792AC7CBA9CA7867ULL } }, /* XSUM_XXH128_testdata[7954] */ + { 2651, 0x9E3779B185EBCA8DULL, { 0xCDDFA7F0AAB17C21ULL, 0x55F73D20EF9B3575ULL } }, /* XSUM_XXH128_testdata[7955] */ + { 2652, 0x0000000000000000ULL, { 0xAFDD18658C66F457ULL, 0x28886023C37C06A7ULL } }, /* XSUM_XXH128_testdata[7956] */ + { 2652, 0x000000009E3779B1ULL, { 0x302A50421C0421BAULL, 0x3D31DD2BA20A37A0ULL } }, /* XSUM_XXH128_testdata[7957] */ + { 2652, 0x9E3779B185EBCA8DULL, { 0x0CA3F1A77FEB0AD0ULL, 0x454C23744E264174ULL } }, /* XSUM_XXH128_testdata[7958] */ + { 2653, 0x0000000000000000ULL, { 0x90D6CB1D97A2C85AULL, 0x82CC4E8FA3CA6850ULL } }, /* XSUM_XXH128_testdata[7959] */ + { 2653, 0x000000009E3779B1ULL, { 0x7C898430C851F1BEULL, 0x9A5D2BCC67517ADEULL } }, /* XSUM_XXH128_testdata[7960] */ + { 2653, 0x9E3779B185EBCA8DULL, { 0xE68075A9292A3EBEULL, 0xCD69A4DD5E4DBCE7ULL } }, /* XSUM_XXH128_testdata[7961] */ + { 2654, 0x0000000000000000ULL, { 0x4E1FA4CEC6584CB9ULL, 0x0B891E19938F26CEULL } }, /* XSUM_XXH128_testdata[7962] */ + { 2654, 0x000000009E3779B1ULL, { 0xA8A27111AF3B1AFFULL, 0x42181B0AC31D492EULL } }, /* XSUM_XXH128_testdata[7963] */ + { 2654, 0x9E3779B185EBCA8DULL, { 0x71A47E1A45F59D80ULL, 0x6734BD84F2A7A0A8ULL } }, /* XSUM_XXH128_testdata[7964] */ + { 2655, 0x0000000000000000ULL, { 0x59AC02AC895A5379ULL, 0xE2DAAAC648743FC7ULL } }, /* XSUM_XXH128_testdata[7965] */ + { 2655, 0x000000009E3779B1ULL, { 0xF5E40C3407A993A0ULL, 0xD436901D85DAE14BULL } }, /* XSUM_XXH128_testdata[7966] */ + { 2655, 0x9E3779B185EBCA8DULL, { 0xD83081AA95B4AA8EULL, 0xBE3F1CA26B267E4BULL } }, /* XSUM_XXH128_testdata[7967] */ + { 2656, 0x0000000000000000ULL, { 0x13981EC22DD78499ULL, 0xA6C3A2DA835B768DULL } }, /* XSUM_XXH128_testdata[7968] */ + { 2656, 0x000000009E3779B1ULL, { 0x81BC1AE7BC95861AULL, 0xE34361D7EC01A797ULL } }, /* XSUM_XXH128_testdata[7969] */ + { 2656, 0x9E3779B185EBCA8DULL, { 0x76F0AD69CDFD0254ULL, 0xB0E3E0A12B575B50ULL } }, /* XSUM_XXH128_testdata[7970] */ + { 2657, 0x0000000000000000ULL, { 0xAACD492864D6B9E4ULL, 0xA2A9DCED4E372C0DULL } }, /* XSUM_XXH128_testdata[7971] */ + { 2657, 0x000000009E3779B1ULL, { 0xCB1AC67E9FA0132AULL, 0xC0CB386EAA49BC7BULL } }, /* XSUM_XXH128_testdata[7972] */ + { 2657, 0x9E3779B185EBCA8DULL, { 0x6F8384F087AF019DULL, 0x17C005EED1F919E4ULL } }, /* XSUM_XXH128_testdata[7973] */ + { 2658, 0x0000000000000000ULL, { 0xDE0C44779FFEE002ULL, 0x9934121280BC1ADEULL } }, /* XSUM_XXH128_testdata[7974] */ + { 2658, 0x000000009E3779B1ULL, { 0x53B6CECCF88066CAULL, 0xD932A8B78A8DB188ULL } }, /* XSUM_XXH128_testdata[7975] */ + { 2658, 0x9E3779B185EBCA8DULL, { 0x6338E397A813A3F9ULL, 0x376A1EA587F5E423ULL } }, /* XSUM_XXH128_testdata[7976] */ + { 2659, 0x0000000000000000ULL, { 0x89B7998E416EC5CDULL, 0x9F5C3CE0FC384F4FULL } }, /* XSUM_XXH128_testdata[7977] */ + { 2659, 0x000000009E3779B1ULL, { 0xF36716B9FAE7DEDAULL, 0x716450100F7CC036ULL } }, /* XSUM_XXH128_testdata[7978] */ + { 2659, 0x9E3779B185EBCA8DULL, { 0x1910B8DCBBDA7530ULL, 0x12DA2DF527CE32E0ULL } }, /* XSUM_XXH128_testdata[7979] */ + { 2660, 0x0000000000000000ULL, { 0x9FA812A12388E7A3ULL, 0x57F2D17056B01846ULL } }, /* XSUM_XXH128_testdata[7980] */ + { 2660, 0x000000009E3779B1ULL, { 0x53AC172458789B4AULL, 0x0C8F5362213DF11CULL } }, /* XSUM_XXH128_testdata[7981] */ + { 2660, 0x9E3779B185EBCA8DULL, { 0xAEE3667EB03F3485ULL, 0xD9CEC9C74AA6DD7CULL } }, /* XSUM_XXH128_testdata[7982] */ + { 2661, 0x0000000000000000ULL, { 0xC016F36D3412818FULL, 0xE48EDF1CC308D3ADULL } }, /* XSUM_XXH128_testdata[7983] */ + { 2661, 0x000000009E3779B1ULL, { 0xC9335FAD9AF77500ULL, 0xDEAE0B8DDAE12C82ULL } }, /* XSUM_XXH128_testdata[7984] */ + { 2661, 0x9E3779B185EBCA8DULL, { 0x25B163D739A0D36AULL, 0xEA4B8A78D326ABC9ULL } }, /* XSUM_XXH128_testdata[7985] */ + { 2662, 0x0000000000000000ULL, { 0x8D1F596F263D9397ULL, 0x53B5996C5E42263CULL } }, /* XSUM_XXH128_testdata[7986] */ + { 2662, 0x000000009E3779B1ULL, { 0xF6C554A1D5BDCFBFULL, 0xDD8244F72220152EULL } }, /* XSUM_XXH128_testdata[7987] */ + { 2662, 0x9E3779B185EBCA8DULL, { 0x6A8BB4C01177798DULL, 0x36B8382475F7745BULL } }, /* XSUM_XXH128_testdata[7988] */ + { 2663, 0x0000000000000000ULL, { 0x42D9F50DCE51E48FULL, 0xBC01F13792A3616AULL } }, /* XSUM_XXH128_testdata[7989] */ + { 2663, 0x000000009E3779B1ULL, { 0x3F2F21E0DE88B4B3ULL, 0xA54DB0F6BAA0AAE6ULL } }, /* XSUM_XXH128_testdata[7990] */ + { 2663, 0x9E3779B185EBCA8DULL, { 0x568D106E7EB991DFULL, 0x8257627D388A176EULL } }, /* XSUM_XXH128_testdata[7991] */ + { 2664, 0x0000000000000000ULL, { 0x9EE636034F83E51EULL, 0xEDFB589DC510F3E4ULL } }, /* XSUM_XXH128_testdata[7992] */ + { 2664, 0x000000009E3779B1ULL, { 0x249C4954E54D8E2BULL, 0x4CAA0582EE5DF4EEULL } }, /* XSUM_XXH128_testdata[7993] */ + { 2664, 0x9E3779B185EBCA8DULL, { 0xBDC01BEE7D7F6342ULL, 0xA3781EEC541A1041ULL } }, /* XSUM_XXH128_testdata[7994] */ + { 2665, 0x0000000000000000ULL, { 0x844C87FB2DBC28C1ULL, 0x3F6EC8B97BE696E9ULL } }, /* XSUM_XXH128_testdata[7995] */ + { 2665, 0x000000009E3779B1ULL, { 0x8429EB39611E81FCULL, 0xD95FA150C5D2DE66ULL } }, /* XSUM_XXH128_testdata[7996] */ + { 2665, 0x9E3779B185EBCA8DULL, { 0x1B7B68C2FB38F0BFULL, 0x08226EBA8187C89BULL } }, /* XSUM_XXH128_testdata[7997] */ + { 2666, 0x0000000000000000ULL, { 0xF38FC2659AFA13E7ULL, 0x1A16A97DDA1483BFULL } }, /* XSUM_XXH128_testdata[7998] */ + { 2666, 0x000000009E3779B1ULL, { 0x630E6F93BBAA5B74ULL, 0x8840C9937B3788C3ULL } }, /* XSUM_XXH128_testdata[7999] */ + { 2666, 0x9E3779B185EBCA8DULL, { 0xE85DEBAD6838BCF9ULL, 0x8A218F6057F3D03BULL } }, /* XSUM_XXH128_testdata[8000] */ + { 2667, 0x0000000000000000ULL, { 0x276FF5707C509A89ULL, 0xAD3520A8EB8449A8ULL } }, /* XSUM_XXH128_testdata[8001] */ + { 2667, 0x000000009E3779B1ULL, { 0x66D6AC9CE0193EDBULL, 0xE8564B73726A6EB0ULL } }, /* XSUM_XXH128_testdata[8002] */ + { 2667, 0x9E3779B185EBCA8DULL, { 0x5BCC923A6CE9D2E3ULL, 0xB92806921D021D76ULL } }, /* XSUM_XXH128_testdata[8003] */ + { 2668, 0x0000000000000000ULL, { 0x99A95EA696BD6785ULL, 0x3D2B2AB54E4163ACULL } }, /* XSUM_XXH128_testdata[8004] */ + { 2668, 0x000000009E3779B1ULL, { 0xB22B79DD315C1CBFULL, 0x34AFE1511029D341ULL } }, /* XSUM_XXH128_testdata[8005] */ + { 2668, 0x9E3779B185EBCA8DULL, { 0x598FACDB1FC4FF31ULL, 0xC8F0FF8CDD1F99F7ULL } }, /* XSUM_XXH128_testdata[8006] */ + { 2669, 0x0000000000000000ULL, { 0x587C1525793EAC83ULL, 0x52F80813117A2274ULL } }, /* XSUM_XXH128_testdata[8007] */ + { 2669, 0x000000009E3779B1ULL, { 0xB62478D480043629ULL, 0xE18827E28AFDDDCDULL } }, /* XSUM_XXH128_testdata[8008] */ + { 2669, 0x9E3779B185EBCA8DULL, { 0xFE934DA8D6689EADULL, 0x7D68FC275A37BEC1ULL } }, /* XSUM_XXH128_testdata[8009] */ + { 2670, 0x0000000000000000ULL, { 0xAE625CFCC51CA5B6ULL, 0x01A211FC55B7D935ULL } }, /* XSUM_XXH128_testdata[8010] */ + { 2670, 0x000000009E3779B1ULL, { 0xCC802C7D3F3E1F92ULL, 0x796C5D18CA88AF59ULL } }, /* XSUM_XXH128_testdata[8011] */ + { 2670, 0x9E3779B185EBCA8DULL, { 0x82203BFF0066A4D6ULL, 0xD0A5BF99F8D7C938ULL } }, /* XSUM_XXH128_testdata[8012] */ + { 2671, 0x0000000000000000ULL, { 0xA87597FFB968B6E0ULL, 0xF052A7DC098D4F3BULL } }, /* XSUM_XXH128_testdata[8013] */ + { 2671, 0x000000009E3779B1ULL, { 0xF67D968045EA0A4CULL, 0xF0E8E4669913CCD9ULL } }, /* XSUM_XXH128_testdata[8014] */ + { 2671, 0x9E3779B185EBCA8DULL, { 0x5C87AE9CF5951A93ULL, 0xD4798822605AB8F3ULL } }, /* XSUM_XXH128_testdata[8015] */ + { 2672, 0x0000000000000000ULL, { 0x615BD5A28193AEF1ULL, 0x86E4786BEC7F63C4ULL } }, /* XSUM_XXH128_testdata[8016] */ + { 2672, 0x000000009E3779B1ULL, { 0x2388865B2021B082ULL, 0xF173D833A20BFE55ULL } }, /* XSUM_XXH128_testdata[8017] */ + { 2672, 0x9E3779B185EBCA8DULL, { 0x495B718A1B4B8408ULL, 0x6CA73781BFCDE03DULL } }, /* XSUM_XXH128_testdata[8018] */ + { 2673, 0x0000000000000000ULL, { 0x9D4E0BF6898776B0ULL, 0x777A9FB80A4481BAULL } }, /* XSUM_XXH128_testdata[8019] */ + { 2673, 0x000000009E3779B1ULL, { 0x9228B1703B2E7B92ULL, 0xB2BD04287375D2D4ULL } }, /* XSUM_XXH128_testdata[8020] */ + { 2673, 0x9E3779B185EBCA8DULL, { 0xDEC8490ACBE435ADULL, 0x23E4E106EEDC37F1ULL } }, /* XSUM_XXH128_testdata[8021] */ + { 2674, 0x0000000000000000ULL, { 0xA5C43A054767C765ULL, 0xD877683D482D7C17ULL } }, /* XSUM_XXH128_testdata[8022] */ + { 2674, 0x000000009E3779B1ULL, { 0xAE58183AA24EE64EULL, 0x819423349090CD48ULL } }, /* XSUM_XXH128_testdata[8023] */ + { 2674, 0x9E3779B185EBCA8DULL, { 0x8368867E1EA6FC99ULL, 0xA665A5FD29BBF2F2ULL } }, /* XSUM_XXH128_testdata[8024] */ + { 2675, 0x0000000000000000ULL, { 0x16BBD0C10B5D2923ULL, 0xCD5FD6B8C651D094ULL } }, /* XSUM_XXH128_testdata[8025] */ + { 2675, 0x000000009E3779B1ULL, { 0xA5172604E8F4BC62ULL, 0x027E3B089219D07CULL } }, /* XSUM_XXH128_testdata[8026] */ + { 2675, 0x9E3779B185EBCA8DULL, { 0x164E8EE293E821BCULL, 0x1A3D8D961FF27A38ULL } }, /* XSUM_XXH128_testdata[8027] */ + { 2676, 0x0000000000000000ULL, { 0x84BC3B4237C011F0ULL, 0x702EB06368CDDBFEULL } }, /* XSUM_XXH128_testdata[8028] */ + { 2676, 0x000000009E3779B1ULL, { 0xDFAC95037B0832A6ULL, 0xDDBE04B81FC83914ULL } }, /* XSUM_XXH128_testdata[8029] */ + { 2676, 0x9E3779B185EBCA8DULL, { 0xCA34B1C20B89EA14ULL, 0x33AEFA2A431525C2ULL } }, /* XSUM_XXH128_testdata[8030] */ + { 2677, 0x0000000000000000ULL, { 0x85F78F29D4E96850ULL, 0xFD65B4F8BC955232ULL } }, /* XSUM_XXH128_testdata[8031] */ + { 2677, 0x000000009E3779B1ULL, { 0x2C1532CEE441E7DFULL, 0xB40A73223B1B4420ULL } }, /* XSUM_XXH128_testdata[8032] */ + { 2677, 0x9E3779B185EBCA8DULL, { 0x391275578A5E0783ULL, 0xEA60DCE555962A9CULL } }, /* XSUM_XXH128_testdata[8033] */ + { 2678, 0x0000000000000000ULL, { 0xF3EFCA9185986EB0ULL, 0x63BD3A1919922F62ULL } }, /* XSUM_XXH128_testdata[8034] */ + { 2678, 0x000000009E3779B1ULL, { 0x073A1C74EEC36772ULL, 0x78D81CB3C9ADF1D5ULL } }, /* XSUM_XXH128_testdata[8035] */ + { 2678, 0x9E3779B185EBCA8DULL, { 0x377E026296B6768DULL, 0x561FA1D6A3189E94ULL } }, /* XSUM_XXH128_testdata[8036] */ + { 2679, 0x0000000000000000ULL, { 0x03308A07CDF022E0ULL, 0x902F9E2B808D58B7ULL } }, /* XSUM_XXH128_testdata[8037] */ + { 2679, 0x000000009E3779B1ULL, { 0x5ABDBA8D8557EAD4ULL, 0x4138585DCC5A23ACULL } }, /* XSUM_XXH128_testdata[8038] */ + { 2679, 0x9E3779B185EBCA8DULL, { 0xCC09B8CFA131A49CULL, 0x7C2B96480BECBEF1ULL } }, /* XSUM_XXH128_testdata[8039] */ + { 2680, 0x0000000000000000ULL, { 0xD90831B33475C6DCULL, 0x44EDA2A42364920BULL } }, /* XSUM_XXH128_testdata[8040] */ + { 2680, 0x000000009E3779B1ULL, { 0xBA808585E596AED3ULL, 0x077E196B7FE6A20AULL } }, /* XSUM_XXH128_testdata[8041] */ + { 2680, 0x9E3779B185EBCA8DULL, { 0xD4954B2E7FDE32ACULL, 0x2D004C0B0F294980ULL } }, /* XSUM_XXH128_testdata[8042] */ + { 2681, 0x0000000000000000ULL, { 0xC1547AC0EE938EDDULL, 0x76DFC928AB2263B3ULL } }, /* XSUM_XXH128_testdata[8043] */ + { 2681, 0x000000009E3779B1ULL, { 0xEA4704B267C13922ULL, 0xEE88AC7642826FAFULL } }, /* XSUM_XXH128_testdata[8044] */ + { 2681, 0x9E3779B185EBCA8DULL, { 0xBCCE8DD6ABF21DBFULL, 0xC6EE6381311450D4ULL } }, /* XSUM_XXH128_testdata[8045] */ + { 2682, 0x0000000000000000ULL, { 0xF4D2F97480A43A13ULL, 0x140608ED5EB3AA42ULL } }, /* XSUM_XXH128_testdata[8046] */ + { 2682, 0x000000009E3779B1ULL, { 0xEDB5747CA934AD3EULL, 0x754E41C0A2C44442ULL } }, /* XSUM_XXH128_testdata[8047] */ + { 2682, 0x9E3779B185EBCA8DULL, { 0x79716517796A6054ULL, 0x13DADDD5A8CFD186ULL } }, /* XSUM_XXH128_testdata[8048] */ + { 2683, 0x0000000000000000ULL, { 0xC29DCF207A0AA424ULL, 0x933513CC3BC10F44ULL } }, /* XSUM_XXH128_testdata[8049] */ + { 2683, 0x000000009E3779B1ULL, { 0x2360259B78119512ULL, 0x821F906B8ED5D20DULL } }, /* XSUM_XXH128_testdata[8050] */ + { 2683, 0x9E3779B185EBCA8DULL, { 0xACB24D3AD0D98BCFULL, 0x37A50BDECAACEA10ULL } }, /* XSUM_XXH128_testdata[8051] */ + { 2684, 0x0000000000000000ULL, { 0x13B268BDF2A4552BULL, 0x459F3399A9C521D9ULL } }, /* XSUM_XXH128_testdata[8052] */ + { 2684, 0x000000009E3779B1ULL, { 0x7771F5C60C1445ADULL, 0xE83E27129B9196AFULL } }, /* XSUM_XXH128_testdata[8053] */ + { 2684, 0x9E3779B185EBCA8DULL, { 0x027F4FDCE5AFB403ULL, 0x202DFBFA380A87DBULL } }, /* XSUM_XXH128_testdata[8054] */ + { 2685, 0x0000000000000000ULL, { 0xACE63EF23FB86E6AULL, 0x44F497C0BC832766ULL } }, /* XSUM_XXH128_testdata[8055] */ + { 2685, 0x000000009E3779B1ULL, { 0x664442EC2D2A17C4ULL, 0xB22795790F22B7A9ULL } }, /* XSUM_XXH128_testdata[8056] */ + { 2685, 0x9E3779B185EBCA8DULL, { 0x3B0AFC1CCDA1C39FULL, 0xF1575653D97E7B3DULL } }, /* XSUM_XXH128_testdata[8057] */ + { 2686, 0x0000000000000000ULL, { 0x9A49DCE5BE630EAEULL, 0x3424408176D19657ULL } }, /* XSUM_XXH128_testdata[8058] */ + { 2686, 0x000000009E3779B1ULL, { 0xD040876637A282DAULL, 0xF77B40F85163C679ULL } }, /* XSUM_XXH128_testdata[8059] */ + { 2686, 0x9E3779B185EBCA8DULL, { 0x4574DA06250C1577ULL, 0x2FBE85A4F21E87A5ULL } }, /* XSUM_XXH128_testdata[8060] */ + { 2687, 0x0000000000000000ULL, { 0xD871E9EE58D825F7ULL, 0xB6F86538C03D2F1EULL } }, /* XSUM_XXH128_testdata[8061] */ + { 2687, 0x000000009E3779B1ULL, { 0x2489FF9B273CD7D8ULL, 0x82590B5902937A9FULL } }, /* XSUM_XXH128_testdata[8062] */ + { 2687, 0x9E3779B185EBCA8DULL, { 0xFA3625BF5B009957ULL, 0xD3A04210FE517CAAULL } }, /* XSUM_XXH128_testdata[8063] */ + { 2688, 0x0000000000000000ULL, { 0x3266FF28F9519B04ULL, 0xD8CACDC5723E19F4ULL } }, /* XSUM_XXH128_testdata[8064] */ + { 2688, 0x000000009E3779B1ULL, { 0x27215E8A58397042ULL, 0x4689B220F95E0813ULL } }, /* XSUM_XXH128_testdata[8065] */ + { 2688, 0x9E3779B185EBCA8DULL, { 0x578B167B0CAAFFD2ULL, 0x651424E896736C11ULL } }, /* XSUM_XXH128_testdata[8066] */ + { 2689, 0x0000000000000000ULL, { 0x101AC0C3B5522413ULL, 0xA4B8E83359EF9DC5ULL } }, /* XSUM_XXH128_testdata[8067] */ + { 2689, 0x000000009E3779B1ULL, { 0x259F95D7F93720B8ULL, 0x7620E17BE95AC58EULL } }, /* XSUM_XXH128_testdata[8068] */ + { 2689, 0x9E3779B185EBCA8DULL, { 0x7A06AFAA36487437ULL, 0x93A2CED490874A88ULL } }, /* XSUM_XXH128_testdata[8069] */ + { 2690, 0x0000000000000000ULL, { 0xFADDE89B51C359C9ULL, 0xA5F884CC3B4549B0ULL } }, /* XSUM_XXH128_testdata[8070] */ + { 2690, 0x000000009E3779B1ULL, { 0x9B84E68CE57263B4ULL, 0xA5E7699C7687B995ULL } }, /* XSUM_XXH128_testdata[8071] */ + { 2690, 0x9E3779B185EBCA8DULL, { 0xE38E645BF761AC4DULL, 0xB6164C7B067A3F45ULL } }, /* XSUM_XXH128_testdata[8072] */ + { 2691, 0x0000000000000000ULL, { 0x63506FAC4CBA52C1ULL, 0xBFD9852033DD723CULL } }, /* XSUM_XXH128_testdata[8073] */ + { 2691, 0x000000009E3779B1ULL, { 0x086D105267DCA9B1ULL, 0x81441B7FD6B7164CULL } }, /* XSUM_XXH128_testdata[8074] */ + { 2691, 0x9E3779B185EBCA8DULL, { 0xE27E0ABCCE7904DFULL, 0x39AF68A658B7E326ULL } }, /* XSUM_XXH128_testdata[8075] */ + { 2692, 0x0000000000000000ULL, { 0x71F53880758D7060ULL, 0x0B2BDA83FD9D3476ULL } }, /* XSUM_XXH128_testdata[8076] */ + { 2692, 0x000000009E3779B1ULL, { 0x2557948AA0CFDB77ULL, 0x4010EA4311E3A0CCULL } }, /* XSUM_XXH128_testdata[8077] */ + { 2692, 0x9E3779B185EBCA8DULL, { 0x78581FBA0A1144F3ULL, 0x0D5C20DCA6FFC5F5ULL } }, /* XSUM_XXH128_testdata[8078] */ + { 2693, 0x0000000000000000ULL, { 0xDE9508CCD369CE41ULL, 0x1F7482A89BE505AAULL } }, /* XSUM_XXH128_testdata[8079] */ + { 2693, 0x000000009E3779B1ULL, { 0x1A9F7D5653DCC096ULL, 0x08852564D4412749ULL } }, /* XSUM_XXH128_testdata[8080] */ + { 2693, 0x9E3779B185EBCA8DULL, { 0x280431D740E85450ULL, 0x1465D4DE8AE3E331ULL } }, /* XSUM_XXH128_testdata[8081] */ + { 2694, 0x0000000000000000ULL, { 0x71DBA1E913B47BD6ULL, 0x2C8CEFC3D1409A25ULL } }, /* XSUM_XXH128_testdata[8082] */ + { 2694, 0x000000009E3779B1ULL, { 0x2224AB1CA0F5BD8AULL, 0x391E22818FC6CA10ULL } }, /* XSUM_XXH128_testdata[8083] */ + { 2694, 0x9E3779B185EBCA8DULL, { 0xF19B1A1929F741AEULL, 0x94CF2D6F01C55A3FULL } }, /* XSUM_XXH128_testdata[8084] */ + { 2695, 0x0000000000000000ULL, { 0x55D2D49B1F2BD88CULL, 0xBC5C20B7ED784789ULL } }, /* XSUM_XXH128_testdata[8085] */ + { 2695, 0x000000009E3779B1ULL, { 0x2C640DD917E7A63AULL, 0xBF8732CB05665659ULL } }, /* XSUM_XXH128_testdata[8086] */ + { 2695, 0x9E3779B185EBCA8DULL, { 0xA5801C01E48F00F9ULL, 0xC314A0ED3EBD5B1EULL } }, /* XSUM_XXH128_testdata[8087] */ + { 2696, 0x0000000000000000ULL, { 0x1064CF1956972EB3ULL, 0x34726BD4AC6307DDULL } }, /* XSUM_XXH128_testdata[8088] */ + { 2696, 0x000000009E3779B1ULL, { 0xF4ECC73DCF2F0C35ULL, 0xB85E5246DFD0F0A1ULL } }, /* XSUM_XXH128_testdata[8089] */ + { 2696, 0x9E3779B185EBCA8DULL, { 0x9BAF49DC05ACE5D5ULL, 0xDD49D640DBA5D1C1ULL } }, /* XSUM_XXH128_testdata[8090] */ + { 2697, 0x0000000000000000ULL, { 0x5889C462CEA8A71DULL, 0xF27F91E5DFFA82FBULL } }, /* XSUM_XXH128_testdata[8091] */ + { 2697, 0x000000009E3779B1ULL, { 0xC2D437106A282F5FULL, 0xA514EE4CF92926EDULL } }, /* XSUM_XXH128_testdata[8092] */ + { 2697, 0x9E3779B185EBCA8DULL, { 0x7CD2AA74EC82B7AFULL, 0x2098E524B7F84CB3ULL } }, /* XSUM_XXH128_testdata[8093] */ + { 2698, 0x0000000000000000ULL, { 0x4517D3A546E2CDF8ULL, 0x9021A8CB9CCA766FULL } }, /* XSUM_XXH128_testdata[8094] */ + { 2698, 0x000000009E3779B1ULL, { 0x1CFA14DEDBDA9DD6ULL, 0xCAB752E986BB3367ULL } }, /* XSUM_XXH128_testdata[8095] */ + { 2698, 0x9E3779B185EBCA8DULL, { 0x85D8B977234EEC88ULL, 0x67495F88CF61DB13ULL } }, /* XSUM_XXH128_testdata[8096] */ + { 2699, 0x0000000000000000ULL, { 0x26324B0C49D31CDCULL, 0x9881904735B3D35FULL } }, /* XSUM_XXH128_testdata[8097] */ + { 2699, 0x000000009E3779B1ULL, { 0xA7C253EB43B60771ULL, 0x2A97E83252E72E66ULL } }, /* XSUM_XXH128_testdata[8098] */ + { 2699, 0x9E3779B185EBCA8DULL, { 0xD9624BAD327F76F3ULL, 0x893FD371AFA225EAULL } }, /* XSUM_XXH128_testdata[8099] */ + { 2700, 0x0000000000000000ULL, { 0x770688060303A701ULL, 0x5B036D83FD90B0EEULL } }, /* XSUM_XXH128_testdata[8100] */ + { 2700, 0x000000009E3779B1ULL, { 0x8099086C4C11A11DULL, 0x1AF4CBB22B8BA2CAULL } }, /* XSUM_XXH128_testdata[8101] */ + { 2700, 0x9E3779B185EBCA8DULL, { 0x6EE35FED0CE66F45ULL, 0x072D7B645FC216C4ULL } }, /* XSUM_XXH128_testdata[8102] */ + { 2701, 0x0000000000000000ULL, { 0x967A50209E1DB590ULL, 0xB0B7DB54825FDCB4ULL } }, /* XSUM_XXH128_testdata[8103] */ + { 2701, 0x000000009E3779B1ULL, { 0x18613DD2DDDDF0BAULL, 0x9E9B9FB1DA96B16FULL } }, /* XSUM_XXH128_testdata[8104] */ + { 2701, 0x9E3779B185EBCA8DULL, { 0xE5654F6E586D4E45ULL, 0x3BC5F82FC89BFEFAULL } }, /* XSUM_XXH128_testdata[8105] */ + { 2702, 0x0000000000000000ULL, { 0x8C5F324B88AFD79CULL, 0x78A3267A9880C01FULL } }, /* XSUM_XXH128_testdata[8106] */ + { 2702, 0x000000009E3779B1ULL, { 0x2F97FE00E99F32FCULL, 0x513578130A8F8D40ULL } }, /* XSUM_XXH128_testdata[8107] */ + { 2702, 0x9E3779B185EBCA8DULL, { 0xB8CFD42B4236EA07ULL, 0x1E8A53376DE22089ULL } }, /* XSUM_XXH128_testdata[8108] */ + { 2703, 0x0000000000000000ULL, { 0xCBD4632639DAB36DULL, 0xA649B70D922B97F0ULL } }, /* XSUM_XXH128_testdata[8109] */ + { 2703, 0x000000009E3779B1ULL, { 0x4621C1C2F5D43E2BULL, 0xF0B51E4DDDB0399DULL } }, /* XSUM_XXH128_testdata[8110] */ + { 2703, 0x9E3779B185EBCA8DULL, { 0xE58EDC615C166AD5ULL, 0xA1F1F84BD45EDCE1ULL } }, /* XSUM_XXH128_testdata[8111] */ + { 2704, 0x0000000000000000ULL, { 0x49BC475C9EB2111CULL, 0x9FB9CBC37E5C2AF8ULL } }, /* XSUM_XXH128_testdata[8112] */ + { 2704, 0x000000009E3779B1ULL, { 0x038DDBF13ADEAA87ULL, 0x830FB527D6311AABULL } }, /* XSUM_XXH128_testdata[8113] */ + { 2704, 0x9E3779B185EBCA8DULL, { 0xB02A55F8B8CC1358ULL, 0x89C1E0D15D9D200BULL } }, /* XSUM_XXH128_testdata[8114] */ + { 2705, 0x0000000000000000ULL, { 0x95FAC591C6986D3BULL, 0x682202FE896769FAULL } }, /* XSUM_XXH128_testdata[8115] */ + { 2705, 0x000000009E3779B1ULL, { 0x2FDA693BB60E88A2ULL, 0x8F95A36E9E5B5A73ULL } }, /* XSUM_XXH128_testdata[8116] */ + { 2705, 0x9E3779B185EBCA8DULL, { 0xEEBAA21D62DB3FE2ULL, 0xA530F2F2BE1A9620ULL } }, /* XSUM_XXH128_testdata[8117] */ + { 2706, 0x0000000000000000ULL, { 0x792DF4D618BFEE49ULL, 0x38984BA9706B3A3CULL } }, /* XSUM_XXH128_testdata[8118] */ + { 2706, 0x000000009E3779B1ULL, { 0x2516DE30FA88BF05ULL, 0xA0D9130DAC4E1862ULL } }, /* XSUM_XXH128_testdata[8119] */ + { 2706, 0x9E3779B185EBCA8DULL, { 0x8D9B3B158B7B0A3AULL, 0x428C9BF940172DD3ULL } }, /* XSUM_XXH128_testdata[8120] */ + { 2707, 0x0000000000000000ULL, { 0x35E99A2BC3203AF2ULL, 0x8D50912D783EA31FULL } }, /* XSUM_XXH128_testdata[8121] */ + { 2707, 0x000000009E3779B1ULL, { 0xF6421B5F9ECE5E91ULL, 0xF50D9F5F0DED4B4BULL } }, /* XSUM_XXH128_testdata[8122] */ + { 2707, 0x9E3779B185EBCA8DULL, { 0x2AF059E8D350DCB9ULL, 0x1B287FE68D674F1DULL } }, /* XSUM_XXH128_testdata[8123] */ + { 2708, 0x0000000000000000ULL, { 0xB569AF88772A0683ULL, 0xF75225ADAF44D5B1ULL } }, /* XSUM_XXH128_testdata[8124] */ + { 2708, 0x000000009E3779B1ULL, { 0x54BD25FB39D6C29BULL, 0x35FCD2FB4355A546ULL } }, /* XSUM_XXH128_testdata[8125] */ + { 2708, 0x9E3779B185EBCA8DULL, { 0x3D5378B9C7FC63B7ULL, 0x76FC53A26EE85555ULL } }, /* XSUM_XXH128_testdata[8126] */ + { 2709, 0x0000000000000000ULL, { 0x8D48AA0E64721261ULL, 0x51CDEDE9ED041153ULL } }, /* XSUM_XXH128_testdata[8127] */ + { 2709, 0x000000009E3779B1ULL, { 0x408C4AFC6C0220DCULL, 0xCC1198B352A169C7ULL } }, /* XSUM_XXH128_testdata[8128] */ + { 2709, 0x9E3779B185EBCA8DULL, { 0x271CEA42E8444202ULL, 0x6B7FD855D28FB27AULL } }, /* XSUM_XXH128_testdata[8129] */ + { 2710, 0x0000000000000000ULL, { 0xC6FF9D293A1AA329ULL, 0xCD7368BCF05CF4D8ULL } }, /* XSUM_XXH128_testdata[8130] */ + { 2710, 0x000000009E3779B1ULL, { 0xB207280F894E35BFULL, 0x7924C8A27BE2EB55ULL } }, /* XSUM_XXH128_testdata[8131] */ + { 2710, 0x9E3779B185EBCA8DULL, { 0x4C2CEA3B16BBB71FULL, 0x9AA72CC2C275413BULL } }, /* XSUM_XXH128_testdata[8132] */ + { 2711, 0x0000000000000000ULL, { 0x5F530CC8CBB57EE2ULL, 0x643790690D8C54ACULL } }, /* XSUM_XXH128_testdata[8133] */ + { 2711, 0x000000009E3779B1ULL, { 0x1BD2515DD5E85347ULL, 0x3A7D00D7585CBEE2ULL } }, /* XSUM_XXH128_testdata[8134] */ + { 2711, 0x9E3779B185EBCA8DULL, { 0xD970F7003E55C31DULL, 0xA8E264A3FA3FD800ULL } }, /* XSUM_XXH128_testdata[8135] */ + { 2712, 0x0000000000000000ULL, { 0xBC54D452E46BC7D0ULL, 0xA337CBA859AE2F0EULL } }, /* XSUM_XXH128_testdata[8136] */ + { 2712, 0x000000009E3779B1ULL, { 0xD42599529F61D53EULL, 0x4B681387127740E8ULL } }, /* XSUM_XXH128_testdata[8137] */ + { 2712, 0x9E3779B185EBCA8DULL, { 0x8A22A690E83F1229ULL, 0x6F5C4B2FC20AF5A9ULL } }, /* XSUM_XXH128_testdata[8138] */ + { 2713, 0x0000000000000000ULL, { 0xD72E6109D358D35AULL, 0x74A87C13FAFFF872ULL } }, /* XSUM_XXH128_testdata[8139] */ + { 2713, 0x000000009E3779B1ULL, { 0xAFD876589F61B711ULL, 0x2C956BCD51BA71C9ULL } }, /* XSUM_XXH128_testdata[8140] */ + { 2713, 0x9E3779B185EBCA8DULL, { 0xB09F86C0560A7B30ULL, 0x0E9980A436025B7BULL } }, /* XSUM_XXH128_testdata[8141] */ + { 2714, 0x0000000000000000ULL, { 0x953DE252454629D6ULL, 0xD9AAD2CCB5CE43FCULL } }, /* XSUM_XXH128_testdata[8142] */ + { 2714, 0x000000009E3779B1ULL, { 0xB271884175FA26EAULL, 0x172A751A136A6562ULL } }, /* XSUM_XXH128_testdata[8143] */ + { 2714, 0x9E3779B185EBCA8DULL, { 0x25DCCEABA8C25758ULL, 0x6E196EA8364F0288ULL } }, /* XSUM_XXH128_testdata[8144] */ + { 2715, 0x0000000000000000ULL, { 0xF76715E5D4557FACULL, 0xDC197E2E2F7A096FULL } }, /* XSUM_XXH128_testdata[8145] */ + { 2715, 0x000000009E3779B1ULL, { 0x69CE495194AD2CD0ULL, 0xCD3FE1548DC1C02EULL } }, /* XSUM_XXH128_testdata[8146] */ + { 2715, 0x9E3779B185EBCA8DULL, { 0x077ED657DB913C38ULL, 0x92EA183F6B887FCEULL } }, /* XSUM_XXH128_testdata[8147] */ + { 2716, 0x0000000000000000ULL, { 0x776E23A66AEB84B6ULL, 0x3797AAC8F6536D08ULL } }, /* XSUM_XXH128_testdata[8148] */ + { 2716, 0x000000009E3779B1ULL, { 0x326232AC42E8011BULL, 0x4CF521316B0EC7C8ULL } }, /* XSUM_XXH128_testdata[8149] */ + { 2716, 0x9E3779B185EBCA8DULL, { 0xEB50F50AF62FF0DDULL, 0x87BAC0CC8EEC501BULL } }, /* XSUM_XXH128_testdata[8150] */ + { 2717, 0x0000000000000000ULL, { 0x36D2B4C2D5F229B9ULL, 0x4F162B8A61BFF678ULL } }, /* XSUM_XXH128_testdata[8151] */ + { 2717, 0x000000009E3779B1ULL, { 0xD74563C5C135987EULL, 0x12F4834B3944B56EULL } }, /* XSUM_XXH128_testdata[8152] */ + { 2717, 0x9E3779B185EBCA8DULL, { 0xE7257DB30D66F4ABULL, 0x8357595B92D3D4BDULL } }, /* XSUM_XXH128_testdata[8153] */ + { 2718, 0x0000000000000000ULL, { 0x3FCF289950CEE08AULL, 0xF1E4662908D73333ULL } }, /* XSUM_XXH128_testdata[8154] */ + { 2718, 0x000000009E3779B1ULL, { 0x79073F5BA67F8798ULL, 0x21D17C7B70324108ULL } }, /* XSUM_XXH128_testdata[8155] */ + { 2718, 0x9E3779B185EBCA8DULL, { 0x419F3C320B5D1D8EULL, 0x17566A472F81A13AULL } }, /* XSUM_XXH128_testdata[8156] */ + { 2719, 0x0000000000000000ULL, { 0x4E9F78279B4602A1ULL, 0x52999DC97400EAEBULL } }, /* XSUM_XXH128_testdata[8157] */ + { 2719, 0x000000009E3779B1ULL, { 0x64ECFC0FBCEFBC44ULL, 0xF149B2A4780019DAULL } }, /* XSUM_XXH128_testdata[8158] */ + { 2719, 0x9E3779B185EBCA8DULL, { 0x9548F72117A6EB81ULL, 0xFB0B787FC8DF5FE0ULL } }, /* XSUM_XXH128_testdata[8159] */ + { 2720, 0x0000000000000000ULL, { 0x753D8BF5C30B6F75ULL, 0xDB593A258663442CULL } }, /* XSUM_XXH128_testdata[8160] */ + { 2720, 0x000000009E3779B1ULL, { 0x6DD525D5EA0704C9ULL, 0x65AA6CE707CB619DULL } }, /* XSUM_XXH128_testdata[8161] */ + { 2720, 0x9E3779B185EBCA8DULL, { 0x7015D8EEB6AA4C5FULL, 0x7A9C80638C34A4C9ULL } }, /* XSUM_XXH128_testdata[8162] */ + { 2721, 0x0000000000000000ULL, { 0xE45A2972F797B027ULL, 0x4E53AC25F61AA349ULL } }, /* XSUM_XXH128_testdata[8163] */ + { 2721, 0x000000009E3779B1ULL, { 0x081E5D65CEDBE9EDULL, 0x328D721892D3C38CULL } }, /* XSUM_XXH128_testdata[8164] */ + { 2721, 0x9E3779B185EBCA8DULL, { 0x1EFE37D9156E2D85ULL, 0xE2E7C1422788B4A4ULL } }, /* XSUM_XXH128_testdata[8165] */ + { 2722, 0x0000000000000000ULL, { 0x720FA85611E358D7ULL, 0xBCB9B5DCC8EB2205ULL } }, /* XSUM_XXH128_testdata[8166] */ + { 2722, 0x000000009E3779B1ULL, { 0x03BECAA314D56A79ULL, 0x757105753CAE325DULL } }, /* XSUM_XXH128_testdata[8167] */ + { 2722, 0x9E3779B185EBCA8DULL, { 0xA5E64C7F065161F6ULL, 0x27299587B1D65D70ULL } }, /* XSUM_XXH128_testdata[8168] */ + { 2723, 0x0000000000000000ULL, { 0x535D73EFBCEA79A7ULL, 0x6BE5766403D0F66FULL } }, /* XSUM_XXH128_testdata[8169] */ + { 2723, 0x000000009E3779B1ULL, { 0x35A81B313B2C9119ULL, 0xF7F57952397C4760ULL } }, /* XSUM_XXH128_testdata[8170] */ + { 2723, 0x9E3779B185EBCA8DULL, { 0x21E76579CA88C0B5ULL, 0x444FAB26DAF1F146ULL } }, /* XSUM_XXH128_testdata[8171] */ + { 2724, 0x0000000000000000ULL, { 0x8951F4CB202A9A7BULL, 0xA516F21F5E1D5CBFULL } }, /* XSUM_XXH128_testdata[8172] */ + { 2724, 0x000000009E3779B1ULL, { 0x2CD8EE4E238DBE78ULL, 0xA98B631C10EEAFEBULL } }, /* XSUM_XXH128_testdata[8173] */ + { 2724, 0x9E3779B185EBCA8DULL, { 0x6D5DE30B925BB243ULL, 0xC5572B00C63B2992ULL } }, /* XSUM_XXH128_testdata[8174] */ + { 2725, 0x0000000000000000ULL, { 0x02EA34C18E600923ULL, 0xF6EE283CF212D1B6ULL } }, /* XSUM_XXH128_testdata[8175] */ + { 2725, 0x000000009E3779B1ULL, { 0x939B37ABCEAB06C6ULL, 0x7895C490C2039D90ULL } }, /* XSUM_XXH128_testdata[8176] */ + { 2725, 0x9E3779B185EBCA8DULL, { 0x16E400B1E8002ECAULL, 0x41031788EAADAF96ULL } }, /* XSUM_XXH128_testdata[8177] */ + { 2726, 0x0000000000000000ULL, { 0x2D861439B2387DA3ULL, 0xDCBEF132E5BAD67EULL } }, /* XSUM_XXH128_testdata[8178] */ + { 2726, 0x000000009E3779B1ULL, { 0xCD2A44873C8DA36EULL, 0x082EEE46A685F19EULL } }, /* XSUM_XXH128_testdata[8179] */ + { 2726, 0x9E3779B185EBCA8DULL, { 0x466E61CDCECD8965ULL, 0xE92679116378B4DBULL } }, /* XSUM_XXH128_testdata[8180] */ + { 2727, 0x0000000000000000ULL, { 0x126BA5E1221D558EULL, 0x702E30957549891EULL } }, /* XSUM_XXH128_testdata[8181] */ + { 2727, 0x000000009E3779B1ULL, { 0x548AE5B875E49920ULL, 0x43C70FD52DE39087ULL } }, /* XSUM_XXH128_testdata[8182] */ + { 2727, 0x9E3779B185EBCA8DULL, { 0x6E2A5ACD0E5E94EAULL, 0xBB5B2EB9EC14A2B5ULL } }, /* XSUM_XXH128_testdata[8183] */ + { 2728, 0x0000000000000000ULL, { 0x142E85167FC6F09EULL, 0x5A18748E4A572DC7ULL } }, /* XSUM_XXH128_testdata[8184] */ + { 2728, 0x000000009E3779B1ULL, { 0x5AC3DF54764AB1C6ULL, 0x21EA040D29C50E64ULL } }, /* XSUM_XXH128_testdata[8185] */ + { 2728, 0x9E3779B185EBCA8DULL, { 0xDDBA453DB1CE4644ULL, 0xFD8EA5CEBA0B9816ULL } }, /* XSUM_XXH128_testdata[8186] */ + { 2729, 0x0000000000000000ULL, { 0x54E2E27AA70E87CDULL, 0x2765461B8B9B5300ULL } }, /* XSUM_XXH128_testdata[8187] */ + { 2729, 0x000000009E3779B1ULL, { 0x1CCA2E9BBD998A08ULL, 0x50C76C8F3FA2025CULL } }, /* XSUM_XXH128_testdata[8188] */ + { 2729, 0x9E3779B185EBCA8DULL, { 0x133CD21C564974FEULL, 0x7108D5488F1DC901ULL } }, /* XSUM_XXH128_testdata[8189] */ + { 2730, 0x0000000000000000ULL, { 0x19F5A51C54B3A6D2ULL, 0x87D58CD60AEC8306ULL } }, /* XSUM_XXH128_testdata[8190] */ + { 2730, 0x000000009E3779B1ULL, { 0xBF5E185529373067ULL, 0xA916100929036B11ULL } }, /* XSUM_XXH128_testdata[8191] */ + { 2730, 0x9E3779B185EBCA8DULL, { 0x1F6AF6A0CFA750B0ULL, 0xB3199AB99B67FD44ULL } }, /* XSUM_XXH128_testdata[8192] */ + { 2731, 0x0000000000000000ULL, { 0xA6DFEEA3C262AADDULL, 0xB299CE7429797E39ULL } }, /* XSUM_XXH128_testdata[8193] */ + { 2731, 0x000000009E3779B1ULL, { 0x670065541AC16AA1ULL, 0x783FF89DBDDFD1D7ULL } }, /* XSUM_XXH128_testdata[8194] */ + { 2731, 0x9E3779B185EBCA8DULL, { 0x1CB91B67F8F2EE5DULL, 0x9BB28419A1DC9298ULL } }, /* XSUM_XXH128_testdata[8195] */ + { 2732, 0x0000000000000000ULL, { 0x1130AA460B92A232ULL, 0x1DB09C28BA09C798ULL } }, /* XSUM_XXH128_testdata[8196] */ + { 2732, 0x000000009E3779B1ULL, { 0x28D18266069939F7ULL, 0xDE5B746B3B075246ULL } }, /* XSUM_XXH128_testdata[8197] */ + { 2732, 0x9E3779B185EBCA8DULL, { 0x2CF3E546D8821900ULL, 0x1CCDE88F68CFC986ULL } }, /* XSUM_XXH128_testdata[8198] */ + { 2733, 0x0000000000000000ULL, { 0xB2DCE0E3338954E8ULL, 0x736E4426489A49D3ULL } }, /* XSUM_XXH128_testdata[8199] */ + { 2733, 0x000000009E3779B1ULL, { 0x0F49F696B930D565ULL, 0xD16C634828D68337ULL } }, /* XSUM_XXH128_testdata[8200] */ + { 2733, 0x9E3779B185EBCA8DULL, { 0xE0F0924F7EE26EB7ULL, 0x5D16550BE031EF04ULL } }, /* XSUM_XXH128_testdata[8201] */ + { 2734, 0x0000000000000000ULL, { 0xB7C5C80CB54C1AB8ULL, 0x30E78BE660A44442ULL } }, /* XSUM_XXH128_testdata[8202] */ + { 2734, 0x000000009E3779B1ULL, { 0xB73CBB4EE4015E75ULL, 0x69A3E505A9BF8EC8ULL } }, /* XSUM_XXH128_testdata[8203] */ + { 2734, 0x9E3779B185EBCA8DULL, { 0xDB5C1FCC7A178F80ULL, 0xF276E6D5C4BA8B65ULL } }, /* XSUM_XXH128_testdata[8204] */ + { 2735, 0x0000000000000000ULL, { 0x6EDDE6BB963333E4ULL, 0xFEF48CF2D293F9DBULL } }, /* XSUM_XXH128_testdata[8205] */ + { 2735, 0x000000009E3779B1ULL, { 0x9E22701B46DB7FA9ULL, 0x085FE551BEDC3CD3ULL } }, /* XSUM_XXH128_testdata[8206] */ + { 2735, 0x9E3779B185EBCA8DULL, { 0x6E8710724AD69BC4ULL, 0x73A3765B7A307FF8ULL } }, /* XSUM_XXH128_testdata[8207] */ + { 2736, 0x0000000000000000ULL, { 0x7A3DCFBA08DD2218ULL, 0x8CC8302C3A0847C5ULL } }, /* XSUM_XXH128_testdata[8208] */ + { 2736, 0x000000009E3779B1ULL, { 0x5CEB1F79DA8C0C7FULL, 0x198305D938004F2DULL } }, /* XSUM_XXH128_testdata[8209] */ + { 2736, 0x9E3779B185EBCA8DULL, { 0x13E8FEE1C71AAAC5ULL, 0xFD59B34A1E5F2131ULL } }, /* XSUM_XXH128_testdata[8210] */ + { 2737, 0x0000000000000000ULL, { 0xE236CBC86C3366C0ULL, 0x918FF03C4B235969ULL } }, /* XSUM_XXH128_testdata[8211] */ + { 2737, 0x000000009E3779B1ULL, { 0xB1431B93BA6730C5ULL, 0x8FE8832D6595998FULL } }, /* XSUM_XXH128_testdata[8212] */ + { 2737, 0x9E3779B185EBCA8DULL, { 0xB2FF2DD5FAD7D707ULL, 0xBE51FFEB6D67D6BEULL } }, /* XSUM_XXH128_testdata[8213] */ + { 2738, 0x0000000000000000ULL, { 0x0740BABCB82C79E1ULL, 0xAF4621AC51D637C7ULL } }, /* XSUM_XXH128_testdata[8214] */ + { 2738, 0x000000009E3779B1ULL, { 0x752768D72BF04E68ULL, 0xD22ACA1D86D79444ULL } }, /* XSUM_XXH128_testdata[8215] */ + { 2738, 0x9E3779B185EBCA8DULL, { 0x053A090CB71D2A97ULL, 0x83CCCCFA4B1664B5ULL } }, /* XSUM_XXH128_testdata[8216] */ + { 2739, 0x0000000000000000ULL, { 0x25B01CC08FA2F76CULL, 0x2287E63714C43F39ULL } }, /* XSUM_XXH128_testdata[8217] */ + { 2739, 0x000000009E3779B1ULL, { 0x4E8E86920ADB2FA5ULL, 0x7E5FB11D0D8AED40ULL } }, /* XSUM_XXH128_testdata[8218] */ + { 2739, 0x9E3779B185EBCA8DULL, { 0x06B6774E705B6F04ULL, 0x5A078BBBE115ACD6ULL } }, /* XSUM_XXH128_testdata[8219] */ + { 2740, 0x0000000000000000ULL, { 0x03B8F0D95A0503C9ULL, 0x6ADA4891E901DE2CULL } }, /* XSUM_XXH128_testdata[8220] */ + { 2740, 0x000000009E3779B1ULL, { 0xF31EB33040712945ULL, 0xA61A5F7B2743DFBDULL } }, /* XSUM_XXH128_testdata[8221] */ + { 2740, 0x9E3779B185EBCA8DULL, { 0x4EFBDC5FCC5FF48DULL, 0x911D35D4E850E4C2ULL } }, /* XSUM_XXH128_testdata[8222] */ + { 2741, 0x0000000000000000ULL, { 0x2A3C8F37C50C5D4DULL, 0x1B58F69801889D99ULL } }, /* XSUM_XXH128_testdata[8223] */ + { 2741, 0x000000009E3779B1ULL, { 0x5C3448A6056839ACULL, 0xEF8FBB1D5C92EBFFULL } }, /* XSUM_XXH128_testdata[8224] */ + { 2741, 0x9E3779B185EBCA8DULL, { 0xA7034CA7B8F00A87ULL, 0xBA3ACD4F1F1FB437ULL } }, /* XSUM_XXH128_testdata[8225] */ + { 2742, 0x0000000000000000ULL, { 0x19D39A92C8099D35ULL, 0xCB4CED767A7D78A8ULL } }, /* XSUM_XXH128_testdata[8226] */ + { 2742, 0x000000009E3779B1ULL, { 0x6706D81E7B194EB6ULL, 0xEF6890EF7423DA3FULL } }, /* XSUM_XXH128_testdata[8227] */ + { 2742, 0x9E3779B185EBCA8DULL, { 0x18ED7073D3D37414ULL, 0xAD67465AFD3D8503ULL } }, /* XSUM_XXH128_testdata[8228] */ + { 2743, 0x0000000000000000ULL, { 0xD6479A438E07F0BCULL, 0xDBE9060C9661C4FFULL } }, /* XSUM_XXH128_testdata[8229] */ + { 2743, 0x000000009E3779B1ULL, { 0xCA6D0C180BBAA30CULL, 0x5F9FC831DCC13DC9ULL } }, /* XSUM_XXH128_testdata[8230] */ + { 2743, 0x9E3779B185EBCA8DULL, { 0xD569FCB2E3FE0526ULL, 0xF8899D4AA68C3168ULL } }, /* XSUM_XXH128_testdata[8231] */ + { 2744, 0x0000000000000000ULL, { 0x25305373A50C2A9BULL, 0x7E6E83F5087AF878ULL } }, /* XSUM_XXH128_testdata[8232] */ + { 2744, 0x000000009E3779B1ULL, { 0x1B197AC0EE23495DULL, 0xAE1DECDEB0CB07EFULL } }, /* XSUM_XXH128_testdata[8233] */ + { 2744, 0x9E3779B185EBCA8DULL, { 0xBBFC4F0BFD00D728ULL, 0xEC624794384479D2ULL } }, /* XSUM_XXH128_testdata[8234] */ + { 2745, 0x0000000000000000ULL, { 0x95C91E93B8FEC500ULL, 0x1783BAAD77D1BEF0ULL } }, /* XSUM_XXH128_testdata[8235] */ + { 2745, 0x000000009E3779B1ULL, { 0x122C8E7992FD9C12ULL, 0x2D7E29559D905776ULL } }, /* XSUM_XXH128_testdata[8236] */ + { 2745, 0x9E3779B185EBCA8DULL, { 0xE9EFACD2ED18C3ABULL, 0xD1EE1D93015E0E2AULL } }, /* XSUM_XXH128_testdata[8237] */ + { 2746, 0x0000000000000000ULL, { 0x077B587B5C5BD810ULL, 0x5274E8584C80D03EULL } }, /* XSUM_XXH128_testdata[8238] */ + { 2746, 0x000000009E3779B1ULL, { 0x639CA410DCAF6CC6ULL, 0x6489192DAC37EE2EULL } }, /* XSUM_XXH128_testdata[8239] */ + { 2746, 0x9E3779B185EBCA8DULL, { 0xC178F72E6F411074ULL, 0x414CC3F684A7B258ULL } }, /* XSUM_XXH128_testdata[8240] */ + { 2747, 0x0000000000000000ULL, { 0xCA8D3A0F2190E06FULL, 0x66FECFDA249DB547ULL } }, /* XSUM_XXH128_testdata[8241] */ + { 2747, 0x000000009E3779B1ULL, { 0x7772D6657DE5B14FULL, 0xF72304873A799F69ULL } }, /* XSUM_XXH128_testdata[8242] */ + { 2747, 0x9E3779B185EBCA8DULL, { 0x5CF89C801F50BE4BULL, 0x73E2247FF3CEBEDCULL } }, /* XSUM_XXH128_testdata[8243] */ + { 2748, 0x0000000000000000ULL, { 0x59A9D5F7C3E59433ULL, 0x4322D34FCCC445B8ULL } }, /* XSUM_XXH128_testdata[8244] */ + { 2748, 0x000000009E3779B1ULL, { 0x4B71B8D5FDA408D0ULL, 0x81776F97200E2DAFULL } }, /* XSUM_XXH128_testdata[8245] */ + { 2748, 0x9E3779B185EBCA8DULL, { 0x0D438D59A0EE0295ULL, 0x41FDB17617460AE4ULL } }, /* XSUM_XXH128_testdata[8246] */ + { 2749, 0x0000000000000000ULL, { 0x7572D747C29A03FAULL, 0xE78F4F6B652EC007ULL } }, /* XSUM_XXH128_testdata[8247] */ + { 2749, 0x000000009E3779B1ULL, { 0x8255B16223A74EDEULL, 0x65B7D35249FB878AULL } }, /* XSUM_XXH128_testdata[8248] */ + { 2749, 0x9E3779B185EBCA8DULL, { 0xC25AEA9C6A74B873ULL, 0xD042AB9D7B59DA9EULL } }, /* XSUM_XXH128_testdata[8249] */ + { 2750, 0x0000000000000000ULL, { 0x1F0F0FDB414AEE14ULL, 0x36C49844D81AB4FFULL } }, /* XSUM_XXH128_testdata[8250] */ + { 2750, 0x000000009E3779B1ULL, { 0xF7CC0F9DFE2C157BULL, 0xEACE4C99153C080CULL } }, /* XSUM_XXH128_testdata[8251] */ + { 2750, 0x9E3779B185EBCA8DULL, { 0x8F8DE9C001788984ULL, 0xD4501C81614E1D24ULL } }, /* XSUM_XXH128_testdata[8252] */ + { 2751, 0x0000000000000000ULL, { 0x30CA11D1D6F7D240ULL, 0x79D412A5D7A42FA0ULL } }, /* XSUM_XXH128_testdata[8253] */ + { 2751, 0x000000009E3779B1ULL, { 0xA6652071055323FCULL, 0xD44393CD4170B33FULL } }, /* XSUM_XXH128_testdata[8254] */ + { 2751, 0x9E3779B185EBCA8DULL, { 0x336DC6720F051ECAULL, 0x16553A05EFA1E543ULL } }, /* XSUM_XXH128_testdata[8255] */ + { 2752, 0x0000000000000000ULL, { 0x458EE1F5CED1B45AULL, 0x33B45BDF034BE797ULL } }, /* XSUM_XXH128_testdata[8256] */ + { 2752, 0x000000009E3779B1ULL, { 0x5B94F869B59AF26CULL, 0x63F569C37B93B6B8ULL } }, /* XSUM_XXH128_testdata[8257] */ + { 2752, 0x9E3779B185EBCA8DULL, { 0xC66C6D0011AF599FULL, 0x8A2D9271CBBF2CBBULL } }, /* XSUM_XXH128_testdata[8258] */ + { 2753, 0x0000000000000000ULL, { 0x55ADD9C7930867DBULL, 0x877ADF8680621FC8ULL } }, /* XSUM_XXH128_testdata[8259] */ + { 2753, 0x000000009E3779B1ULL, { 0x4CB88FE72DCD4EDEULL, 0xC0474FD4F1900CDEULL } }, /* XSUM_XXH128_testdata[8260] */ + { 2753, 0x9E3779B185EBCA8DULL, { 0xD7E1D7F7D04E0FB0ULL, 0x08F536B8A92523E5ULL } }, /* XSUM_XXH128_testdata[8261] */ + { 2754, 0x0000000000000000ULL, { 0x21E57418A4ED11A2ULL, 0x6023CCFBCEF59B89ULL } }, /* XSUM_XXH128_testdata[8262] */ + { 2754, 0x000000009E3779B1ULL, { 0x73088702C9CBDF40ULL, 0x5430613ECF0CA5D8ULL } }, /* XSUM_XXH128_testdata[8263] */ + { 2754, 0x9E3779B185EBCA8DULL, { 0xA0765E3336FEEA07ULL, 0x87BE08FA90DB8E15ULL } }, /* XSUM_XXH128_testdata[8264] */ + { 2755, 0x0000000000000000ULL, { 0x3D95DD744AD00F7CULL, 0x5038AC8B24D84E71ULL } }, /* XSUM_XXH128_testdata[8265] */ + { 2755, 0x000000009E3779B1ULL, { 0xF247E53A35FCAE63ULL, 0xD459851452D1996BULL } }, /* XSUM_XXH128_testdata[8266] */ + { 2755, 0x9E3779B185EBCA8DULL, { 0xE9AB7F5E0914C6C2ULL, 0x8BE3C69B3D46A9ACULL } }, /* XSUM_XXH128_testdata[8267] */ + { 2756, 0x0000000000000000ULL, { 0x30B8DF382853F200ULL, 0x93F763FD9FC69916ULL } }, /* XSUM_XXH128_testdata[8268] */ + { 2756, 0x000000009E3779B1ULL, { 0x71BF6A281ABF27DCULL, 0x6E82A38E9CADB2CDULL } }, /* XSUM_XXH128_testdata[8269] */ + { 2756, 0x9E3779B185EBCA8DULL, { 0xE9247B49C5668B31ULL, 0x16D07F766E8E0A1FULL } }, /* XSUM_XXH128_testdata[8270] */ + { 2757, 0x0000000000000000ULL, { 0x961656946CA43EEBULL, 0x45CBC0B4EC5BC1F4ULL } }, /* XSUM_XXH128_testdata[8271] */ + { 2757, 0x000000009E3779B1ULL, { 0x206385051FA34B0FULL, 0xE86EAC4D63463555ULL } }, /* XSUM_XXH128_testdata[8272] */ + { 2757, 0x9E3779B185EBCA8DULL, { 0xEC66FDE043F82FF6ULL, 0x9650D0F0B342B8A8ULL } }, /* XSUM_XXH128_testdata[8273] */ + { 2758, 0x0000000000000000ULL, { 0xDE25B87C2A769309ULL, 0x0E483C9DE71E42FAULL } }, /* XSUM_XXH128_testdata[8274] */ + { 2758, 0x000000009E3779B1ULL, { 0x95E8FBDD0DEB9611ULL, 0x7F7A47B2F204CB4EULL } }, /* XSUM_XXH128_testdata[8275] */ + { 2758, 0x9E3779B185EBCA8DULL, { 0xF79A9EB6D410AD6DULL, 0xA5C2F930C5284726ULL } }, /* XSUM_XXH128_testdata[8276] */ + { 2759, 0x0000000000000000ULL, { 0xC68D576FAF60E351ULL, 0x137CC05886CBDE35ULL } }, /* XSUM_XXH128_testdata[8277] */ + { 2759, 0x000000009E3779B1ULL, { 0xD0D901F6EF4F197DULL, 0x954D62A654215F95ULL } }, /* XSUM_XXH128_testdata[8278] */ + { 2759, 0x9E3779B185EBCA8DULL, { 0xF45E1897BC935ED7ULL, 0x1F01A0E351C8966BULL } }, /* XSUM_XXH128_testdata[8279] */ + { 2760, 0x0000000000000000ULL, { 0xD4121E03DFE0B422ULL, 0x7056F79C81077BA0ULL } }, /* XSUM_XXH128_testdata[8280] */ + { 2760, 0x000000009E3779B1ULL, { 0x65EA176999A2CB92ULL, 0x225735B3FB4D99D9ULL } }, /* XSUM_XXH128_testdata[8281] */ + { 2760, 0x9E3779B185EBCA8DULL, { 0x6D63BC064A5AD595ULL, 0xABC9CCF65B815925ULL } }, /* XSUM_XXH128_testdata[8282] */ + { 2761, 0x0000000000000000ULL, { 0x6405876AF8FDA8DBULL, 0x8B6C8784007FD332ULL } }, /* XSUM_XXH128_testdata[8283] */ + { 2761, 0x000000009E3779B1ULL, { 0x5FDD82B2FA851F4DULL, 0x4CD540315574E083ULL } }, /* XSUM_XXH128_testdata[8284] */ + { 2761, 0x9E3779B185EBCA8DULL, { 0x791A22C29E2A70A1ULL, 0x92B860478F2AF7B9ULL } }, /* XSUM_XXH128_testdata[8285] */ + { 2762, 0x0000000000000000ULL, { 0x29FB0D9D51C5357CULL, 0x6E74C85534467070ULL } }, /* XSUM_XXH128_testdata[8286] */ + { 2762, 0x000000009E3779B1ULL, { 0xDF1A2DD7FCACDDD0ULL, 0xF64AC9CA9D804266ULL } }, /* XSUM_XXH128_testdata[8287] */ + { 2762, 0x9E3779B185EBCA8DULL, { 0xA656D8D374F98FB2ULL, 0xCE9B69B77F08BCA2ULL } }, /* XSUM_XXH128_testdata[8288] */ + { 2763, 0x0000000000000000ULL, { 0xD385572F3331434BULL, 0x44D7EF65D61B1D93ULL } }, /* XSUM_XXH128_testdata[8289] */ + { 2763, 0x000000009E3779B1ULL, { 0x0443816CBBE8D408ULL, 0x297CF630D0698811ULL } }, /* XSUM_XXH128_testdata[8290] */ + { 2763, 0x9E3779B185EBCA8DULL, { 0x93F2DC4243EF4A0DULL, 0xC898566B205F71FFULL } }, /* XSUM_XXH128_testdata[8291] */ + { 2764, 0x0000000000000000ULL, { 0x6252F1B78A182579ULL, 0xE3BC28CF90B0B9F6ULL } }, /* XSUM_XXH128_testdata[8292] */ + { 2764, 0x000000009E3779B1ULL, { 0x1DB7C68EAB3EA523ULL, 0xD54B3020480D7652ULL } }, /* XSUM_XXH128_testdata[8293] */ + { 2764, 0x9E3779B185EBCA8DULL, { 0x9CFAB6B1ED5BC767ULL, 0xC0B82DABC906D5B1ULL } }, /* XSUM_XXH128_testdata[8294] */ + { 2765, 0x0000000000000000ULL, { 0x608232243E88E9E8ULL, 0x9C631B944DBC5B2DULL } }, /* XSUM_XXH128_testdata[8295] */ + { 2765, 0x000000009E3779B1ULL, { 0xA371B3309072056BULL, 0x8D966BBDA4330158ULL } }, /* XSUM_XXH128_testdata[8296] */ + { 2765, 0x9E3779B185EBCA8DULL, { 0x81BEC015284F9D0AULL, 0x8E8ED7812D5782FFULL } }, /* XSUM_XXH128_testdata[8297] */ + { 2766, 0x0000000000000000ULL, { 0x4CA11F94AA9311FDULL, 0x1049317DC2F35CEFULL } }, /* XSUM_XXH128_testdata[8298] */ + { 2766, 0x000000009E3779B1ULL, { 0x4C407EE0B958FFF5ULL, 0x8E88AFD7A3137FA0ULL } }, /* XSUM_XXH128_testdata[8299] */ + { 2766, 0x9E3779B185EBCA8DULL, { 0x757BBBA8832A2596ULL, 0x0DE3E3285D29923CULL } }, /* XSUM_XXH128_testdata[8300] */ + { 2767, 0x0000000000000000ULL, { 0x89073CEAB2998F7DULL, 0xA8AA09AF2B2C1822ULL } }, /* XSUM_XXH128_testdata[8301] */ + { 2767, 0x000000009E3779B1ULL, { 0xDD69C00D4C1141ECULL, 0x63B1D60CD5205524ULL } }, /* XSUM_XXH128_testdata[8302] */ + { 2767, 0x9E3779B185EBCA8DULL, { 0xF50449D89C506855ULL, 0x08FD2B4B96A81C6AULL } }, /* XSUM_XXH128_testdata[8303] */ + { 2768, 0x0000000000000000ULL, { 0xE1D5CC26D5DA41C4ULL, 0x6BEE01086FAB8C0DULL } }, /* XSUM_XXH128_testdata[8304] */ + { 2768, 0x000000009E3779B1ULL, { 0x3D4965F1A03979A6ULL, 0xDD34878BB313416BULL } }, /* XSUM_XXH128_testdata[8305] */ + { 2768, 0x9E3779B185EBCA8DULL, { 0x30E85E6688F63EE0ULL, 0xC9B2D74CA2CE493AULL } }, /* XSUM_XXH128_testdata[8306] */ + { 2769, 0x0000000000000000ULL, { 0x53123794A8B8D2C1ULL, 0x5FC241C89B817D42ULL } }, /* XSUM_XXH128_testdata[8307] */ + { 2769, 0x000000009E3779B1ULL, { 0x6CF015BE66CEC504ULL, 0x5A49F66B8CB5FF77ULL } }, /* XSUM_XXH128_testdata[8308] */ + { 2769, 0x9E3779B185EBCA8DULL, { 0xEDED2614F1AAFCF2ULL, 0x41A86A632EBB215DULL } }, /* XSUM_XXH128_testdata[8309] */ + { 2770, 0x0000000000000000ULL, { 0xA1AE5426E70C4FFCULL, 0xB551EB53725F0B73ULL } }, /* XSUM_XXH128_testdata[8310] */ + { 2770, 0x000000009E3779B1ULL, { 0x44D88F6241266689ULL, 0x6C12BBCBA13D162FULL } }, /* XSUM_XXH128_testdata[8311] */ + { 2770, 0x9E3779B185EBCA8DULL, { 0xB93D989BE8CD54CAULL, 0xE2E6702D9E28E096ULL } }, /* XSUM_XXH128_testdata[8312] */ + { 2771, 0x0000000000000000ULL, { 0x1D4DA91632EF09EEULL, 0x6B36A8FD2F2A3A87ULL } }, /* XSUM_XXH128_testdata[8313] */ + { 2771, 0x000000009E3779B1ULL, { 0xE4CB23F3844FD598ULL, 0x6117FE9619814658ULL } }, /* XSUM_XXH128_testdata[8314] */ + { 2771, 0x9E3779B185EBCA8DULL, { 0xC34E628EC15481A5ULL, 0x1F8F3D252C0664B8ULL } }, /* XSUM_XXH128_testdata[8315] */ + { 2772, 0x0000000000000000ULL, { 0x9ECE7C8A98D7B2E7ULL, 0x9F411F4A942D2321ULL } }, /* XSUM_XXH128_testdata[8316] */ + { 2772, 0x000000009E3779B1ULL, { 0x6F0F7F4363862F40ULL, 0xD85A87B8A099F079ULL } }, /* XSUM_XXH128_testdata[8317] */ + { 2772, 0x9E3779B185EBCA8DULL, { 0x47F5821AAE0F7082ULL, 0x18B156304C718B44ULL } }, /* XSUM_XXH128_testdata[8318] */ + { 2773, 0x0000000000000000ULL, { 0x6BB09DD7198D07A2ULL, 0x8BF8AE54456E7887ULL } }, /* XSUM_XXH128_testdata[8319] */ + { 2773, 0x000000009E3779B1ULL, { 0x00C007217449FDEFULL, 0x2CF4CF89B9CDDBB0ULL } }, /* XSUM_XXH128_testdata[8320] */ + { 2773, 0x9E3779B185EBCA8DULL, { 0xC4E207B5168826C0ULL, 0x781E165130B73D3BULL } }, /* XSUM_XXH128_testdata[8321] */ + { 2774, 0x0000000000000000ULL, { 0xE25C5745DA05D231ULL, 0xE590D39EC43EBC05ULL } }, /* XSUM_XXH128_testdata[8322] */ + { 2774, 0x000000009E3779B1ULL, { 0x71062BFEB909A7EBULL, 0x78FA94D471896B61ULL } }, /* XSUM_XXH128_testdata[8323] */ + { 2774, 0x9E3779B185EBCA8DULL, { 0xE8D3435F6DF7CBEDULL, 0x069E30A28469497DULL } }, /* XSUM_XXH128_testdata[8324] */ + { 2775, 0x0000000000000000ULL, { 0x1AA5E49A629B1132ULL, 0x1F18D49CAF008E84ULL } }, /* XSUM_XXH128_testdata[8325] */ + { 2775, 0x000000009E3779B1ULL, { 0x2F42ADF886763919ULL, 0x5E8E6593F7DE2F07ULL } }, /* XSUM_XXH128_testdata[8326] */ + { 2775, 0x9E3779B185EBCA8DULL, { 0xFBC9277E659170B6ULL, 0x67DACBF47EAD9538ULL } }, /* XSUM_XXH128_testdata[8327] */ + { 2776, 0x0000000000000000ULL, { 0xDEF60C67EEF33AF9ULL, 0x703E0A3138316E24ULL } }, /* XSUM_XXH128_testdata[8328] */ + { 2776, 0x000000009E3779B1ULL, { 0x3F1030118A49BA7CULL, 0x07E2DBAE4BBBD545ULL } }, /* XSUM_XXH128_testdata[8329] */ + { 2776, 0x9E3779B185EBCA8DULL, { 0x6BA7B30A047DA388ULL, 0x3C2EEC3A02E3522DULL } }, /* XSUM_XXH128_testdata[8330] */ + { 2777, 0x0000000000000000ULL, { 0xD693241CC8A8F08EULL, 0xDB8FF6359AB243D7ULL } }, /* XSUM_XXH128_testdata[8331] */ + { 2777, 0x000000009E3779B1ULL, { 0x090EC8883D51857EULL, 0xA2710AD6C1A35F4DULL } }, /* XSUM_XXH128_testdata[8332] */ + { 2777, 0x9E3779B185EBCA8DULL, { 0xB72757341DD668F9ULL, 0x208B2CEA93A190C5ULL } }, /* XSUM_XXH128_testdata[8333] */ + { 2778, 0x0000000000000000ULL, { 0xC241C02AB68275D1ULL, 0x6A13C9DD6AA4364BULL } }, /* XSUM_XXH128_testdata[8334] */ + { 2778, 0x000000009E3779B1ULL, { 0x89BDBF396898D9DAULL, 0x164D07DBF625778AULL } }, /* XSUM_XXH128_testdata[8335] */ + { 2778, 0x9E3779B185EBCA8DULL, { 0xD939281132FB39B2ULL, 0x01E198A52B79A7AAULL } }, /* XSUM_XXH128_testdata[8336] */ + { 2779, 0x0000000000000000ULL, { 0x23980E87C0E6A1A8ULL, 0x39A5920C145DBF09ULL } }, /* XSUM_XXH128_testdata[8337] */ + { 2779, 0x000000009E3779B1ULL, { 0x0DA202801E72B009ULL, 0x77639ADB71123066ULL } }, /* XSUM_XXH128_testdata[8338] */ + { 2779, 0x9E3779B185EBCA8DULL, { 0xFCFFD0BDECDD5A4DULL, 0x022258892D944618ULL } }, /* XSUM_XXH128_testdata[8339] */ + { 2780, 0x0000000000000000ULL, { 0x4D6E1D1FEB019F6CULL, 0xFA8248028E2D942EULL } }, /* XSUM_XXH128_testdata[8340] */ + { 2780, 0x000000009E3779B1ULL, { 0x28CBEBBDB623B025ULL, 0xF219F78B31509952ULL } }, /* XSUM_XXH128_testdata[8341] */ + { 2780, 0x9E3779B185EBCA8DULL, { 0xA7FBD57639340763ULL, 0xBA8DAA1091295185ULL } }, /* XSUM_XXH128_testdata[8342] */ + { 2781, 0x0000000000000000ULL, { 0xFAB2435B6EB9D069ULL, 0x1A92D3533C3CA2C2ULL } }, /* XSUM_XXH128_testdata[8343] */ + { 2781, 0x000000009E3779B1ULL, { 0x984811D56E09B326ULL, 0x49151186CD1387D6ULL } }, /* XSUM_XXH128_testdata[8344] */ + { 2781, 0x9E3779B185EBCA8DULL, { 0x2248F2C9F0E1999BULL, 0xCED2885E397CEBA9ULL } }, /* XSUM_XXH128_testdata[8345] */ + { 2782, 0x0000000000000000ULL, { 0x05EF981B41DEC457ULL, 0x91945F30AB70AE4DULL } }, /* XSUM_XXH128_testdata[8346] */ + { 2782, 0x000000009E3779B1ULL, { 0x4D2ABF3CC3B555D8ULL, 0x678A5C7E816853E2ULL } }, /* XSUM_XXH128_testdata[8347] */ + { 2782, 0x9E3779B185EBCA8DULL, { 0xAFF4964A346B1121ULL, 0xD8149D4AE89F58ABULL } }, /* XSUM_XXH128_testdata[8348] */ + { 2783, 0x0000000000000000ULL, { 0x64DCA626F718A945ULL, 0xB694766A4A05E24DULL } }, /* XSUM_XXH128_testdata[8349] */ + { 2783, 0x000000009E3779B1ULL, { 0x04804472505C6267ULL, 0x44078F69CBE091E8ULL } }, /* XSUM_XXH128_testdata[8350] */ + { 2783, 0x9E3779B185EBCA8DULL, { 0x48DC7C4EA9F0995BULL, 0x76B2233EB6EBAE8DULL } }, /* XSUM_XXH128_testdata[8351] */ + { 2784, 0x0000000000000000ULL, { 0x6A0DECB019CD9D1FULL, 0x2C1372D524D91FDAULL } }, /* XSUM_XXH128_testdata[8352] */ + { 2784, 0x000000009E3779B1ULL, { 0x9C40B706AE1ED456ULL, 0x3885415759D89FB8ULL } }, /* XSUM_XXH128_testdata[8353] */ + { 2784, 0x9E3779B185EBCA8DULL, { 0x28737B55D92BD60BULL, 0xA10E185B8C254B67ULL } }, /* XSUM_XXH128_testdata[8354] */ + { 2785, 0x0000000000000000ULL, { 0xC1FA2E1BB99625BAULL, 0x24AB32D9B9C0F2B4ULL } }, /* XSUM_XXH128_testdata[8355] */ + { 2785, 0x000000009E3779B1ULL, { 0xB763663978F0F2A4ULL, 0x0694ADB8B6319D8DULL } }, /* XSUM_XXH128_testdata[8356] */ + { 2785, 0x9E3779B185EBCA8DULL, { 0xB7882C698A0383C5ULL, 0x6068072BFDC0099CULL } }, /* XSUM_XXH128_testdata[8357] */ + { 2786, 0x0000000000000000ULL, { 0xBF23BE2BA21C48D5ULL, 0xDA36769D7887A3C5ULL } }, /* XSUM_XXH128_testdata[8358] */ + { 2786, 0x000000009E3779B1ULL, { 0x735DC7B27EFF050CULL, 0xCEF950D9546DEAF0ULL } }, /* XSUM_XXH128_testdata[8359] */ + { 2786, 0x9E3779B185EBCA8DULL, { 0x1394CFA56A673081ULL, 0x7A22C59467663858ULL } }, /* XSUM_XXH128_testdata[8360] */ + { 2787, 0x0000000000000000ULL, { 0xADC591AF19B11864ULL, 0x11F0DC634A0D1ADAULL } }, /* XSUM_XXH128_testdata[8361] */ + { 2787, 0x000000009E3779B1ULL, { 0x8A2F55E18F34DB68ULL, 0x0603C007860DFD7DULL } }, /* XSUM_XXH128_testdata[8362] */ + { 2787, 0x9E3779B185EBCA8DULL, { 0x848CE896419C53E8ULL, 0x13F51776279BDBBDULL } }, /* XSUM_XXH128_testdata[8363] */ + { 2788, 0x0000000000000000ULL, { 0xF4B7D076FEB765F9ULL, 0xB967303B35943986ULL } }, /* XSUM_XXH128_testdata[8364] */ + { 2788, 0x000000009E3779B1ULL, { 0x4C59122CCA522AA4ULL, 0x9C1392903B4D5A3CULL } }, /* XSUM_XXH128_testdata[8365] */ + { 2788, 0x9E3779B185EBCA8DULL, { 0x2D970A62183B59FAULL, 0xCDFE6B79B77B6F99ULL } }, /* XSUM_XXH128_testdata[8366] */ + { 2789, 0x0000000000000000ULL, { 0xE3FAC33EEB9E4B43ULL, 0x9106E646BAB17F7CULL } }, /* XSUM_XXH128_testdata[8367] */ + { 2789, 0x000000009E3779B1ULL, { 0x52C9004D14F9DC36ULL, 0xE55EE8FA57166599ULL } }, /* XSUM_XXH128_testdata[8368] */ + { 2789, 0x9E3779B185EBCA8DULL, { 0xE51EA4FC3621CED4ULL, 0xA82D6A91626AB65CULL } }, /* XSUM_XXH128_testdata[8369] */ + { 2790, 0x0000000000000000ULL, { 0xA1BD080329CBF8B2ULL, 0x7161CADA90ED30DBULL } }, /* XSUM_XXH128_testdata[8370] */ + { 2790, 0x000000009E3779B1ULL, { 0x4B061B427024F49EULL, 0xD6A2ECC386BDF8D5ULL } }, /* XSUM_XXH128_testdata[8371] */ + { 2790, 0x9E3779B185EBCA8DULL, { 0xD95400EEA98D4BC7ULL, 0xCC07A8C0547E37D1ULL } }, /* XSUM_XXH128_testdata[8372] */ + { 2791, 0x0000000000000000ULL, { 0x5858D025CF1FFC7AULL, 0xD76F0A9B5CB7A428ULL } }, /* XSUM_XXH128_testdata[8373] */ + { 2791, 0x000000009E3779B1ULL, { 0xC4EBAD83F39F8482ULL, 0xA2A09BA8B4041EB2ULL } }, /* XSUM_XXH128_testdata[8374] */ + { 2791, 0x9E3779B185EBCA8DULL, { 0xEEB3C317B1750030ULL, 0xCDEB874CE0671B47ULL } }, /* XSUM_XXH128_testdata[8375] */ + { 2792, 0x0000000000000000ULL, { 0xC3CDB2533D838FBAULL, 0xB4FE261DCB4E2247ULL } }, /* XSUM_XXH128_testdata[8376] */ + { 2792, 0x000000009E3779B1ULL, { 0x4453730D19106B2BULL, 0xE08D1D88A10A00DEULL } }, /* XSUM_XXH128_testdata[8377] */ + { 2792, 0x9E3779B185EBCA8DULL, { 0x45F3C5DF6BC55CBAULL, 0xCAED23088C8F6C82ULL } }, /* XSUM_XXH128_testdata[8378] */ + { 2793, 0x0000000000000000ULL, { 0x6A1EED32A35708E9ULL, 0x7F6A2A9A75EDDE42ULL } }, /* XSUM_XXH128_testdata[8379] */ + { 2793, 0x000000009E3779B1ULL, { 0xB7D741EBB000B1BFULL, 0x746C52702B6F2695ULL } }, /* XSUM_XXH128_testdata[8380] */ + { 2793, 0x9E3779B185EBCA8DULL, { 0x136058660CE27205ULL, 0xF23B3C1909CF6A95ULL } }, /* XSUM_XXH128_testdata[8381] */ + { 2794, 0x0000000000000000ULL, { 0x0AB420E5BAC8786BULL, 0x93B5F041A2867879ULL } }, /* XSUM_XXH128_testdata[8382] */ + { 2794, 0x000000009E3779B1ULL, { 0x22959A55465114C3ULL, 0xA40D8D557C31083AULL } }, /* XSUM_XXH128_testdata[8383] */ + { 2794, 0x9E3779B185EBCA8DULL, { 0xD8481AA9976853A8ULL, 0x5E18A3D5ECDB098FULL } }, /* XSUM_XXH128_testdata[8384] */ + { 2795, 0x0000000000000000ULL, { 0x6C3292D057491B10ULL, 0x1EA168458D5F9FEFULL } }, /* XSUM_XXH128_testdata[8385] */ + { 2795, 0x000000009E3779B1ULL, { 0x138805EF67EC2E69ULL, 0x343F90D5860F40F6ULL } }, /* XSUM_XXH128_testdata[8386] */ + { 2795, 0x9E3779B185EBCA8DULL, { 0xD689615FD6EBDE33ULL, 0xC092FA2EACB2E567ULL } }, /* XSUM_XXH128_testdata[8387] */ + { 2796, 0x0000000000000000ULL, { 0xEB47D4162112B62BULL, 0x879ADD15AFB40EEEULL } }, /* XSUM_XXH128_testdata[8388] */ + { 2796, 0x000000009E3779B1ULL, { 0x54C73D53B799295DULL, 0x6D38491DC84C7419ULL } }, /* XSUM_XXH128_testdata[8389] */ + { 2796, 0x9E3779B185EBCA8DULL, { 0xA2B84BB91016CBD3ULL, 0xE28867DE7CABD2F4ULL } }, /* XSUM_XXH128_testdata[8390] */ + { 2797, 0x0000000000000000ULL, { 0x6EBE41CBA6B32EBCULL, 0xB0D518639EC5162BULL } }, /* XSUM_XXH128_testdata[8391] */ + { 2797, 0x000000009E3779B1ULL, { 0x6498DCA521E3E6B6ULL, 0x5BAA9AB11AF981B5ULL } }, /* XSUM_XXH128_testdata[8392] */ + { 2797, 0x9E3779B185EBCA8DULL, { 0xD8BFE83A2C863701ULL, 0xFB95E0AD093626C1ULL } }, /* XSUM_XXH128_testdata[8393] */ + { 2798, 0x0000000000000000ULL, { 0x210D49A6879775D2ULL, 0x2C3F185AD6EAF272ULL } }, /* XSUM_XXH128_testdata[8394] */ + { 2798, 0x000000009E3779B1ULL, { 0xBF97A8B0E673FFABULL, 0xB24B8C29893A7671ULL } }, /* XSUM_XXH128_testdata[8395] */ + { 2798, 0x9E3779B185EBCA8DULL, { 0x116FCBE17C5A571CULL, 0xFBB61A6FE91722B2ULL } }, /* XSUM_XXH128_testdata[8396] */ + { 2799, 0x0000000000000000ULL, { 0x2F5FC4E20EADDE64ULL, 0xF9800461E6A4DB2AULL } }, /* XSUM_XXH128_testdata[8397] */ + { 2799, 0x000000009E3779B1ULL, { 0x68235CFE27FBA269ULL, 0x723AFC041D8686E7ULL } }, /* XSUM_XXH128_testdata[8398] */ + { 2799, 0x9E3779B185EBCA8DULL, { 0xE1C0130AB1E55D95ULL, 0x9DED5B492FB24033ULL } }, /* XSUM_XXH128_testdata[8399] */ + { 2800, 0x0000000000000000ULL, { 0x1B1671FFCE9AC043ULL, 0xD987F9DD4FBE37E3ULL } }, /* XSUM_XXH128_testdata[8400] */ + { 2800, 0x000000009E3779B1ULL, { 0x6FB1D3E4AFD4AFA6ULL, 0xCD0173D162997830ULL } }, /* XSUM_XXH128_testdata[8401] */ + { 2800, 0x9E3779B185EBCA8DULL, { 0x02BD1944F810DD92ULL, 0x624FEF870EA6457BULL } }, /* XSUM_XXH128_testdata[8402] */ + { 2801, 0x0000000000000000ULL, { 0x9830CF8F663EC7EDULL, 0x2E85368B04186622ULL } }, /* XSUM_XXH128_testdata[8403] */ + { 2801, 0x000000009E3779B1ULL, { 0xA3724FA877C7617BULL, 0xA2EAB16FF45B0603ULL } }, /* XSUM_XXH128_testdata[8404] */ + { 2801, 0x9E3779B185EBCA8DULL, { 0xD472EFED50CEC5C4ULL, 0x480E00602EFB6669ULL } }, /* XSUM_XXH128_testdata[8405] */ + { 2802, 0x0000000000000000ULL, { 0xABDD355871184D94ULL, 0xC2ED9E8641B91E81ULL } }, /* XSUM_XXH128_testdata[8406] */ + { 2802, 0x000000009E3779B1ULL, { 0x3E712D15D4B1F46CULL, 0xF56C22D2AD4C79AFULL } }, /* XSUM_XXH128_testdata[8407] */ + { 2802, 0x9E3779B185EBCA8DULL, { 0x198D10AA902453B7ULL, 0x75D348431910E5E5ULL } }, /* XSUM_XXH128_testdata[8408] */ + { 2803, 0x0000000000000000ULL, { 0x9465C024549ACF59ULL, 0xF9F7E3D2D5F0AF86ULL } }, /* XSUM_XXH128_testdata[8409] */ + { 2803, 0x000000009E3779B1ULL, { 0x3F0E0A1F0F579199ULL, 0x984C426D9DF4D9F2ULL } }, /* XSUM_XXH128_testdata[8410] */ + { 2803, 0x9E3779B185EBCA8DULL, { 0x9DFFEAE566EFD06DULL, 0x85D8B88812D7A5D3ULL } }, /* XSUM_XXH128_testdata[8411] */ + { 2804, 0x0000000000000000ULL, { 0x19B8C0A283BAE743ULL, 0x22E70B272D7A2BD5ULL } }, /* XSUM_XXH128_testdata[8412] */ + { 2804, 0x000000009E3779B1ULL, { 0x74884BAA72CF7E32ULL, 0x5A883B3D4112B36FULL } }, /* XSUM_XXH128_testdata[8413] */ + { 2804, 0x9E3779B185EBCA8DULL, { 0x22582296967DA4F2ULL, 0xD730A0C85A544403ULL } }, /* XSUM_XXH128_testdata[8414] */ + { 2805, 0x0000000000000000ULL, { 0xEA1789858301C007ULL, 0xEDA3BD1ED4A9938AULL } }, /* XSUM_XXH128_testdata[8415] */ + { 2805, 0x000000009E3779B1ULL, { 0x79420CFCD433D0A2ULL, 0x22C1CF6B90FFB96CULL } }, /* XSUM_XXH128_testdata[8416] */ + { 2805, 0x9E3779B185EBCA8DULL, { 0x9DA7AED963685999ULL, 0x027397A671CA9DCEULL } }, /* XSUM_XXH128_testdata[8417] */ + { 2806, 0x0000000000000000ULL, { 0x41469656B5D06BE5ULL, 0x467EA3CFC5194A35ULL } }, /* XSUM_XXH128_testdata[8418] */ + { 2806, 0x000000009E3779B1ULL, { 0xAE39C1CA82EBCEB8ULL, 0xA2E4594172AFEAFAULL } }, /* XSUM_XXH128_testdata[8419] */ + { 2806, 0x9E3779B185EBCA8DULL, { 0x6CC73C1166A2ABA9ULL, 0x57EF4D87367FC4F1ULL } }, /* XSUM_XXH128_testdata[8420] */ + { 2807, 0x0000000000000000ULL, { 0x7273ED17287001B5ULL, 0x399BF5935443533EULL } }, /* XSUM_XXH128_testdata[8421] */ + { 2807, 0x000000009E3779B1ULL, { 0xE0ABE9FDB81867A6ULL, 0x0254B2A7529B48BEULL } }, /* XSUM_XXH128_testdata[8422] */ + { 2807, 0x9E3779B185EBCA8DULL, { 0x831ADC73FFCDF6F9ULL, 0xB24E7ED32648C98FULL } }, /* XSUM_XXH128_testdata[8423] */ + { 2808, 0x0000000000000000ULL, { 0xB9DEA446174EB818ULL, 0x7983CEB3DDF73DF1ULL } }, /* XSUM_XXH128_testdata[8424] */ + { 2808, 0x000000009E3779B1ULL, { 0xD2B8E6AAD63D33B8ULL, 0x63230816DBCEC1A2ULL } }, /* XSUM_XXH128_testdata[8425] */ + { 2808, 0x9E3779B185EBCA8DULL, { 0x84DDF73FDDCB5ED8ULL, 0xE8870AFF08A6693AULL } }, /* XSUM_XXH128_testdata[8426] */ + { 2809, 0x0000000000000000ULL, { 0x8AC31E45973AECC1ULL, 0xF4BA04A87E839A33ULL } }, /* XSUM_XXH128_testdata[8427] */ + { 2809, 0x000000009E3779B1ULL, { 0x0530ADFB30B24584ULL, 0xA2DEB2B57F4DC655ULL } }, /* XSUM_XXH128_testdata[8428] */ + { 2809, 0x9E3779B185EBCA8DULL, { 0x51AA142CF757DBD0ULL, 0x7F5DBB1570495C9CULL } }, /* XSUM_XXH128_testdata[8429] */ + { 2810, 0x0000000000000000ULL, { 0xB6B2435E7436BB07ULL, 0x8FD1664E9028188FULL } }, /* XSUM_XXH128_testdata[8430] */ + { 2810, 0x000000009E3779B1ULL, { 0x25A31100DE61298AULL, 0x8418410B181B8219ULL } }, /* XSUM_XXH128_testdata[8431] */ + { 2810, 0x9E3779B185EBCA8DULL, { 0x045F8087ED8F321FULL, 0x228DB2B20D36DB12ULL } }, /* XSUM_XXH128_testdata[8432] */ + { 2811, 0x0000000000000000ULL, { 0x932BE6F1A5AFB020ULL, 0xAA764C1D98B3B26CULL } }, /* XSUM_XXH128_testdata[8433] */ + { 2811, 0x000000009E3779B1ULL, { 0x411426EA6BF035E5ULL, 0x3CFAA6571C783682ULL } }, /* XSUM_XXH128_testdata[8434] */ + { 2811, 0x9E3779B185EBCA8DULL, { 0x96480703F1516151ULL, 0x0DEA22D9F4760643ULL } }, /* XSUM_XXH128_testdata[8435] */ + { 2812, 0x0000000000000000ULL, { 0x8E0EA93D3213FB93ULL, 0xCA30FF0A6B048A61ULL } }, /* XSUM_XXH128_testdata[8436] */ + { 2812, 0x000000009E3779B1ULL, { 0x9B6768C351D01868ULL, 0xEE6E568A5E5AC55CULL } }, /* XSUM_XXH128_testdata[8437] */ + { 2812, 0x9E3779B185EBCA8DULL, { 0xCE0158085EB13056ULL, 0x938DA89F0597BD2DULL } }, /* XSUM_XXH128_testdata[8438] */ + { 2813, 0x0000000000000000ULL, { 0x4BE7E6FB4F03AD46ULL, 0x3351F1B252B52F2FULL } }, /* XSUM_XXH128_testdata[8439] */ + { 2813, 0x000000009E3779B1ULL, { 0xE5A59F1D31EDC614ULL, 0x53855DC8F89225F6ULL } }, /* XSUM_XXH128_testdata[8440] */ + { 2813, 0x9E3779B185EBCA8DULL, { 0x2EB0F58BCD59E94DULL, 0xED5083D54631A3EEULL } }, /* XSUM_XXH128_testdata[8441] */ + { 2814, 0x0000000000000000ULL, { 0x63AC6B0C5EB8E548ULL, 0xBC74A0770AFE7DAEULL } }, /* XSUM_XXH128_testdata[8442] */ + { 2814, 0x000000009E3779B1ULL, { 0xE931859E2893A88CULL, 0xA7AD5D8AB590CBFFULL } }, /* XSUM_XXH128_testdata[8443] */ + { 2814, 0x9E3779B185EBCA8DULL, { 0xA4968260C0175247ULL, 0x420C4C7F83658C26ULL } }, /* XSUM_XXH128_testdata[8444] */ + { 2815, 0x0000000000000000ULL, { 0x7D160EA25A0BF263ULL, 0x1ED397FF084A6060ULL } }, /* XSUM_XXH128_testdata[8445] */ + { 2815, 0x000000009E3779B1ULL, { 0x1FA9AAFE47730164ULL, 0xD182C7ADD8D3245FULL } }, /* XSUM_XXH128_testdata[8446] */ + { 2815, 0x9E3779B185EBCA8DULL, { 0x04C38423EDB1143DULL, 0x13B755EFD1993CCAULL } }, /* XSUM_XXH128_testdata[8447] */ + { 2816, 0x0000000000000000ULL, { 0x7DD9AD11BF74219BULL, 0x1004EAEB0207F911ULL } }, /* XSUM_XXH128_testdata[8448] */ + { 2816, 0x000000009E3779B1ULL, { 0x16BCDF0B6F332795ULL, 0x6111F9E7F0652B54ULL } }, /* XSUM_XXH128_testdata[8449] */ + { 2816, 0x9E3779B185EBCA8DULL, { 0x5132595AB0718E60ULL, 0xEE3FD8D0DAD10314ULL } }, /* XSUM_XXH128_testdata[8450] */ + { 2817, 0x0000000000000000ULL, { 0xACE84D8987BC9A3FULL, 0x8BD1947DB627DBCAULL } }, /* XSUM_XXH128_testdata[8451] */ + { 2817, 0x000000009E3779B1ULL, { 0x5D2781F628C62962ULL, 0x9CC84ED9C0FF95A8ULL } }, /* XSUM_XXH128_testdata[8452] */ + { 2817, 0x9E3779B185EBCA8DULL, { 0x09F4E8C5970DFC0FULL, 0x138299337CEAE854ULL } }, /* XSUM_XXH128_testdata[8453] */ + { 2818, 0x0000000000000000ULL, { 0x782E18AA3283A000ULL, 0xE5B5CE068B97969FULL } }, /* XSUM_XXH128_testdata[8454] */ + { 2818, 0x000000009E3779B1ULL, { 0xB4FB7CF2ABE3D076ULL, 0x5C44D7FFDA4E1D24ULL } }, /* XSUM_XXH128_testdata[8455] */ + { 2818, 0x9E3779B185EBCA8DULL, { 0xC1DC5000C515B924ULL, 0xD48783DCEBB89F3AULL } }, /* XSUM_XXH128_testdata[8456] */ + { 2819, 0x0000000000000000ULL, { 0x506C12F0559AC04CULL, 0x362CFA0B4EDB4F90ULL } }, /* XSUM_XXH128_testdata[8457] */ + { 2819, 0x000000009E3779B1ULL, { 0x4504753CDA1895FEULL, 0xC6DE700208703AE6ULL } }, /* XSUM_XXH128_testdata[8458] */ + { 2819, 0x9E3779B185EBCA8DULL, { 0xF5E0E9A9A29AD075ULL, 0xAE281467D394AACBULL } }, /* XSUM_XXH128_testdata[8459] */ + { 2820, 0x0000000000000000ULL, { 0xEFBC8B5CFA8BE0DDULL, 0x3DA428B3E2B50251ULL } }, /* XSUM_XXH128_testdata[8460] */ + { 2820, 0x000000009E3779B1ULL, { 0x6C321DEB8196A423ULL, 0x839A742AAF9FF585ULL } }, /* XSUM_XXH128_testdata[8461] */ + { 2820, 0x9E3779B185EBCA8DULL, { 0x49D6E8A233638F01ULL, 0xD799067AAC03A60FULL } }, /* XSUM_XXH128_testdata[8462] */ + { 2821, 0x0000000000000000ULL, { 0x1CF5B9AD7407EBF6ULL, 0x00B104A65B647A2BULL } }, /* XSUM_XXH128_testdata[8463] */ + { 2821, 0x000000009E3779B1ULL, { 0x4B3DFDA45D34EC8EULL, 0xA2909B562F302319ULL } }, /* XSUM_XXH128_testdata[8464] */ + { 2821, 0x9E3779B185EBCA8DULL, { 0x17B9E24D08DFE8AAULL, 0x78BF56E1F1C455DFULL } }, /* XSUM_XXH128_testdata[8465] */ + { 2822, 0x0000000000000000ULL, { 0x449C2F455774B179ULL, 0xDB83BAE421E5AB03ULL } }, /* XSUM_XXH128_testdata[8466] */ + { 2822, 0x000000009E3779B1ULL, { 0x428E6FAC68F73E5BULL, 0x787EE8FF713EF1A1ULL } }, /* XSUM_XXH128_testdata[8467] */ + { 2822, 0x9E3779B185EBCA8DULL, { 0x31796BFCBBE3115CULL, 0x0F36B12D07BC6C5DULL } }, /* XSUM_XXH128_testdata[8468] */ + { 2823, 0x0000000000000000ULL, { 0x50AFDAA39AA339C2ULL, 0xF0DC4AD5B1ACF1EDULL } }, /* XSUM_XXH128_testdata[8469] */ + { 2823, 0x000000009E3779B1ULL, { 0xC72D735D35EFF567ULL, 0x784E9506737F9E33ULL } }, /* XSUM_XXH128_testdata[8470] */ + { 2823, 0x9E3779B185EBCA8DULL, { 0x1F384BEE77C93C38ULL, 0xE00A7272F83C291DULL } }, /* XSUM_XXH128_testdata[8471] */ + { 2824, 0x0000000000000000ULL, { 0xC2D49E3821E9E5F5ULL, 0x4379224D240FD8AEULL } }, /* XSUM_XXH128_testdata[8472] */ + { 2824, 0x000000009E3779B1ULL, { 0x0C8A9D04A2961E82ULL, 0x0D6DA7334DB6D9F1ULL } }, /* XSUM_XXH128_testdata[8473] */ + { 2824, 0x9E3779B185EBCA8DULL, { 0x8EDC26F2F9D932BBULL, 0x757E3273E4D5C834ULL } }, /* XSUM_XXH128_testdata[8474] */ + { 2825, 0x0000000000000000ULL, { 0xB672CE5DCEDBED8FULL, 0x97DB7AFDF0479A37ULL } }, /* XSUM_XXH128_testdata[8475] */ + { 2825, 0x000000009E3779B1ULL, { 0x9FE3A627D41AAC4AULL, 0x606614018D0DA168ULL } }, /* XSUM_XXH128_testdata[8476] */ + { 2825, 0x9E3779B185EBCA8DULL, { 0x6782D661DF360E87ULL, 0xD8AA37CB8927F3ECULL } }, /* XSUM_XXH128_testdata[8477] */ + { 2826, 0x0000000000000000ULL, { 0x0020BE95E992DBD4ULL, 0xD9C80277108AA243ULL } }, /* XSUM_XXH128_testdata[8478] */ + { 2826, 0x000000009E3779B1ULL, { 0xFCB6AFD2E3000F44ULL, 0x9E4AF4BFCDA8142BULL } }, /* XSUM_XXH128_testdata[8479] */ + { 2826, 0x9E3779B185EBCA8DULL, { 0x383D0140E3C362EBULL, 0xAD8D58E00C5292EAULL } }, /* XSUM_XXH128_testdata[8480] */ + { 2827, 0x0000000000000000ULL, { 0xDB0BB50E3BBA26C8ULL, 0xAA3C0B34D8611BD3ULL } }, /* XSUM_XXH128_testdata[8481] */ + { 2827, 0x000000009E3779B1ULL, { 0xE1A9110B53552D21ULL, 0xF52089F0C69F3639ULL } }, /* XSUM_XXH128_testdata[8482] */ + { 2827, 0x9E3779B185EBCA8DULL, { 0x9F59C9D3C5999E83ULL, 0xB30095B8FF1A3816ULL } }, /* XSUM_XXH128_testdata[8483] */ + { 2828, 0x0000000000000000ULL, { 0xFE45A73BBC75F478ULL, 0x6526066106EE13DFULL } }, /* XSUM_XXH128_testdata[8484] */ + { 2828, 0x000000009E3779B1ULL, { 0xB4F0D50D35FA26F0ULL, 0x8E509005DB26B4D0ULL } }, /* XSUM_XXH128_testdata[8485] */ + { 2828, 0x9E3779B185EBCA8DULL, { 0xCFFADC847709337EULL, 0xF9FE1E94D9897416ULL } }, /* XSUM_XXH128_testdata[8486] */ + { 2829, 0x0000000000000000ULL, { 0x13B8EC0BAB66B4B3ULL, 0x4794DB171A581BD1ULL } }, /* XSUM_XXH128_testdata[8487] */ + { 2829, 0x000000009E3779B1ULL, { 0x59AEA158E3F64012ULL, 0x81DDB6CD869FE5FBULL } }, /* XSUM_XXH128_testdata[8488] */ + { 2829, 0x9E3779B185EBCA8DULL, { 0x30834E9FDD028750ULL, 0x9FA5B647457F1A59ULL } }, /* XSUM_XXH128_testdata[8489] */ + { 2830, 0x0000000000000000ULL, { 0x043869A252B753D6ULL, 0x7B866E633A11AF9EULL } }, /* XSUM_XXH128_testdata[8490] */ + { 2830, 0x000000009E3779B1ULL, { 0xFA20091D825A8EF7ULL, 0xD826D6EE3D565A02ULL } }, /* XSUM_XXH128_testdata[8491] */ + { 2830, 0x9E3779B185EBCA8DULL, { 0x4A943340D1C8711FULL, 0x838DB8F976FCB68DULL } }, /* XSUM_XXH128_testdata[8492] */ + { 2831, 0x0000000000000000ULL, { 0xF6AFDECD4341D20DULL, 0xE05D2F73A0FEB454ULL } }, /* XSUM_XXH128_testdata[8493] */ + { 2831, 0x000000009E3779B1ULL, { 0xFD714DEAF3EA85BCULL, 0x0963E84AF741B79EULL } }, /* XSUM_XXH128_testdata[8494] */ + { 2831, 0x9E3779B185EBCA8DULL, { 0x3D75507F9F47D29DULL, 0xE990CDCAC0349A70ULL } }, /* XSUM_XXH128_testdata[8495] */ + { 2832, 0x0000000000000000ULL, { 0xD83CA294E171861FULL, 0x69A6C651C6C022A6ULL } }, /* XSUM_XXH128_testdata[8496] */ + { 2832, 0x000000009E3779B1ULL, { 0x7B07A69D7350AD83ULL, 0x2BA7E2CB429C9213ULL } }, /* XSUM_XXH128_testdata[8497] */ + { 2832, 0x9E3779B185EBCA8DULL, { 0x28687D3C9FC4DBBBULL, 0x3430722A9C88BA08ULL } }, /* XSUM_XXH128_testdata[8498] */ + { 2833, 0x0000000000000000ULL, { 0x2796F656449258E9ULL, 0xC352C530477A9D4FULL } }, /* XSUM_XXH128_testdata[8499] */ + { 2833, 0x000000009E3779B1ULL, { 0x4707FF1EBDC81924ULL, 0xCC66370366C54101ULL } }, /* XSUM_XXH128_testdata[8500] */ + { 2833, 0x9E3779B185EBCA8DULL, { 0xF99981E1437C06CCULL, 0x142AF4D1EC7CC9A0ULL } }, /* XSUM_XXH128_testdata[8501] */ + { 2834, 0x0000000000000000ULL, { 0x26621BAC8504AAAAULL, 0xDA01E11F6CF80996ULL } }, /* XSUM_XXH128_testdata[8502] */ + { 2834, 0x000000009E3779B1ULL, { 0x287637B8983914C9ULL, 0x8B5119A8C0172539ULL } }, /* XSUM_XXH128_testdata[8503] */ + { 2834, 0x9E3779B185EBCA8DULL, { 0xB2E56CCABE2B5225ULL, 0x11D420158D368249ULL } }, /* XSUM_XXH128_testdata[8504] */ + { 2835, 0x0000000000000000ULL, { 0x12E8A2F03E702055ULL, 0x9025C80BFE099A08ULL } }, /* XSUM_XXH128_testdata[8505] */ + { 2835, 0x000000009E3779B1ULL, { 0x67A8A2BBFD70E9DDULL, 0x75F8C82CFEEEA345ULL } }, /* XSUM_XXH128_testdata[8506] */ + { 2835, 0x9E3779B185EBCA8DULL, { 0xDF931C2E62D72D1EULL, 0xF57E20493D5D9568ULL } }, /* XSUM_XXH128_testdata[8507] */ + { 2836, 0x0000000000000000ULL, { 0xB319ECC965CA289FULL, 0x47B0DCA4DB3FE997ULL } }, /* XSUM_XXH128_testdata[8508] */ + { 2836, 0x000000009E3779B1ULL, { 0x88A57DEB7DD2ADBAULL, 0x1926329EAFF5AA66ULL } }, /* XSUM_XXH128_testdata[8509] */ + { 2836, 0x9E3779B185EBCA8DULL, { 0xD3EB886D9C44442DULL, 0x968C791EC6036647ULL } }, /* XSUM_XXH128_testdata[8510] */ + { 2837, 0x0000000000000000ULL, { 0xD23665D737269144ULL, 0x3F1E33CA54B9DDBEULL } }, /* XSUM_XXH128_testdata[8511] */ + { 2837, 0x000000009E3779B1ULL, { 0xED536CC822FD0426ULL, 0x6D510FDC1E7B27E2ULL } }, /* XSUM_XXH128_testdata[8512] */ + { 2837, 0x9E3779B185EBCA8DULL, { 0x0194403601289C2CULL, 0x886FC1AA27E461E8ULL } }, /* XSUM_XXH128_testdata[8513] */ + { 2838, 0x0000000000000000ULL, { 0xE702BA54A74FA497ULL, 0xFCBC76CBB1CCE0C0ULL } }, /* XSUM_XXH128_testdata[8514] */ + { 2838, 0x000000009E3779B1ULL, { 0x34274AB10DDFD9EEULL, 0x91F624287404F2A5ULL } }, /* XSUM_XXH128_testdata[8515] */ + { 2838, 0x9E3779B185EBCA8DULL, { 0x5769316EF3DA366CULL, 0xF28CB2C194596AA5ULL } }, /* XSUM_XXH128_testdata[8516] */ + { 2839, 0x0000000000000000ULL, { 0xBE4ECDF9E0A0E838ULL, 0xA2FC627E2E28E29DULL } }, /* XSUM_XXH128_testdata[8517] */ + { 2839, 0x000000009E3779B1ULL, { 0xC1FD6D1397596815ULL, 0x21FF9654BB8B3E86ULL } }, /* XSUM_XXH128_testdata[8518] */ + { 2839, 0x9E3779B185EBCA8DULL, { 0x5C887FAFDC1DC215ULL, 0x563B38FB281CAAF1ULL } }, /* XSUM_XXH128_testdata[8519] */ + { 2840, 0x0000000000000000ULL, { 0x3FD70D2173444B7DULL, 0x4C3518166546ADDDULL } }, /* XSUM_XXH128_testdata[8520] */ + { 2840, 0x000000009E3779B1ULL, { 0xD37AFDE5BD82CC15ULL, 0x45534542D10DDEE1ULL } }, /* XSUM_XXH128_testdata[8521] */ + { 2840, 0x9E3779B185EBCA8DULL, { 0xB3AE4E046EBB1950ULL, 0x105CA133B7DDF04BULL } }, /* XSUM_XXH128_testdata[8522] */ + { 2841, 0x0000000000000000ULL, { 0x6BC356BA1DAA80E8ULL, 0x9BFD95164D09A95EULL } }, /* XSUM_XXH128_testdata[8523] */ + { 2841, 0x000000009E3779B1ULL, { 0xC2BE683D281525A1ULL, 0x5D6A44722F3AD04CULL } }, /* XSUM_XXH128_testdata[8524] */ + { 2841, 0x9E3779B185EBCA8DULL, { 0x728EDAD0E00862BCULL, 0x2B6282C06DA5377BULL } }, /* XSUM_XXH128_testdata[8525] */ + { 2842, 0x0000000000000000ULL, { 0x7C9F96FA9AEFA04DULL, 0x61976D6F8EFCAA50ULL } }, /* XSUM_XXH128_testdata[8526] */ + { 2842, 0x000000009E3779B1ULL, { 0xC392784DFD345EB4ULL, 0xA2496E32DA6C79AFULL } }, /* XSUM_XXH128_testdata[8527] */ + { 2842, 0x9E3779B185EBCA8DULL, { 0xC18AF3EC4472D298ULL, 0xE23575522297ED3DULL } }, /* XSUM_XXH128_testdata[8528] */ + { 2843, 0x0000000000000000ULL, { 0x64E3B33E887DFBDAULL, 0xF6AAE93F2D39D940ULL } }, /* XSUM_XXH128_testdata[8529] */ + { 2843, 0x000000009E3779B1ULL, { 0xB3250F7935B27433ULL, 0xADC3AD1F34F9393FULL } }, /* XSUM_XXH128_testdata[8530] */ + { 2843, 0x9E3779B185EBCA8DULL, { 0x64F8EA1F92A54193ULL, 0xF3B9B4BAEED0D712ULL } }, /* XSUM_XXH128_testdata[8531] */ + { 2844, 0x0000000000000000ULL, { 0xCEB1C3EAA134F4E9ULL, 0xB865A6D7C715F82EULL } }, /* XSUM_XXH128_testdata[8532] */ + { 2844, 0x000000009E3779B1ULL, { 0xF5E01ADD7FCC4E66ULL, 0xC8A72A3827DAE9A9ULL } }, /* XSUM_XXH128_testdata[8533] */ + { 2844, 0x9E3779B185EBCA8DULL, { 0x896F0580B69753AAULL, 0x7293826D689DE51EULL } }, /* XSUM_XXH128_testdata[8534] */ + { 2845, 0x0000000000000000ULL, { 0x5DDA1A2241F53771ULL, 0xEA9E591C5356A359ULL } }, /* XSUM_XXH128_testdata[8535] */ + { 2845, 0x000000009E3779B1ULL, { 0xF626E55788653E4EULL, 0xF4C8BA0E7F9EE1DFULL } }, /* XSUM_XXH128_testdata[8536] */ + { 2845, 0x9E3779B185EBCA8DULL, { 0xEB8500517B953A49ULL, 0x47819BC917CA8397ULL } }, /* XSUM_XXH128_testdata[8537] */ + { 2846, 0x0000000000000000ULL, { 0x37327FF81F7BA9C2ULL, 0x621ED143D00BC1E1ULL } }, /* XSUM_XXH128_testdata[8538] */ + { 2846, 0x000000009E3779B1ULL, { 0x8A36216601B0F7F2ULL, 0x4AAE8E33A461B918ULL } }, /* XSUM_XXH128_testdata[8539] */ + { 2846, 0x9E3779B185EBCA8DULL, { 0x0AF45F16D15A419DULL, 0xACA099926C0CBAF8ULL } }, /* XSUM_XXH128_testdata[8540] */ + { 2847, 0x0000000000000000ULL, { 0xDE608449A6A9121BULL, 0x141B0E7B6BC79A45ULL } }, /* XSUM_XXH128_testdata[8541] */ + { 2847, 0x000000009E3779B1ULL, { 0x7CE084D8A76EB101ULL, 0x4C9A466CFC49F076ULL } }, /* XSUM_XXH128_testdata[8542] */ + { 2847, 0x9E3779B185EBCA8DULL, { 0x8DCA4A69A796563FULL, 0x155C898A72E8EBF5ULL } }, /* XSUM_XXH128_testdata[8543] */ + { 2848, 0x0000000000000000ULL, { 0x6D42B73340789D60ULL, 0xEFF20932A0919094ULL } }, /* XSUM_XXH128_testdata[8544] */ + { 2848, 0x000000009E3779B1ULL, { 0x1E4AC3D566820972ULL, 0xA312B9FA4A221448ULL } }, /* XSUM_XXH128_testdata[8545] */ + { 2848, 0x9E3779B185EBCA8DULL, { 0x44B45E0C589CCDDFULL, 0x8FCD8A6D55107681ULL } }, /* XSUM_XXH128_testdata[8546] */ + { 2849, 0x0000000000000000ULL, { 0x8A3BB3A77A6748E5ULL, 0x33B8598145D18ECFULL } }, /* XSUM_XXH128_testdata[8547] */ + { 2849, 0x000000009E3779B1ULL, { 0x4F83A99484C728B5ULL, 0x94CDC30546A919D0ULL } }, /* XSUM_XXH128_testdata[8548] */ + { 2849, 0x9E3779B185EBCA8DULL, { 0x7118AB2C4762154CULL, 0xA5AC0484D4114D7DULL } }, /* XSUM_XXH128_testdata[8549] */ + { 2850, 0x0000000000000000ULL, { 0x2C074FADAFB7E9CEULL, 0x4A5B88E37F48A54AULL } }, /* XSUM_XXH128_testdata[8550] */ + { 2850, 0x000000009E3779B1ULL, { 0x421C6F70B242CB88ULL, 0x8484D10278615AEBULL } }, /* XSUM_XXH128_testdata[8551] */ + { 2850, 0x9E3779B185EBCA8DULL, { 0x7294E9D3D4CD08FDULL, 0xA00318903B891DEBULL } }, /* XSUM_XXH128_testdata[8552] */ + { 2851, 0x0000000000000000ULL, { 0x8861A8A47A2F964BULL, 0x32F65A30D7483871ULL } }, /* XSUM_XXH128_testdata[8553] */ + { 2851, 0x000000009E3779B1ULL, { 0xA9D2FB260D98ED5FULL, 0xA980C4EB23519506ULL } }, /* XSUM_XXH128_testdata[8554] */ + { 2851, 0x9E3779B185EBCA8DULL, { 0xBE0B90B85FF50DFAULL, 0x2CD9778AF862CB69ULL } }, /* XSUM_XXH128_testdata[8555] */ + { 2852, 0x0000000000000000ULL, { 0x22E6F6001F4531EAULL, 0x70486A400EEA8B51ULL } }, /* XSUM_XXH128_testdata[8556] */ + { 2852, 0x000000009E3779B1ULL, { 0xDD5AF9269C9AC102ULL, 0x70F93BC1B146E619ULL } }, /* XSUM_XXH128_testdata[8557] */ + { 2852, 0x9E3779B185EBCA8DULL, { 0x52F2F562BE1BE088ULL, 0x9AE3881107C09FDFULL } }, /* XSUM_XXH128_testdata[8558] */ + { 2853, 0x0000000000000000ULL, { 0x80E1EAB3C1F77681ULL, 0x2A0E93F5C913DF9BULL } }, /* XSUM_XXH128_testdata[8559] */ + { 2853, 0x000000009E3779B1ULL, { 0x734953A2E0F41D40ULL, 0x4AE5945D861B4DA5ULL } }, /* XSUM_XXH128_testdata[8560] */ + { 2853, 0x9E3779B185EBCA8DULL, { 0xCAC7242BCDD7EB8EULL, 0xAA897C158CF1E820ULL } }, /* XSUM_XXH128_testdata[8561] */ + { 2854, 0x0000000000000000ULL, { 0x4A7671FDCE297BBEULL, 0xA6FF579DECCD9963ULL } }, /* XSUM_XXH128_testdata[8562] */ + { 2854, 0x000000009E3779B1ULL, { 0x062B41AEE735863EULL, 0x418DE967092F70A2ULL } }, /* XSUM_XXH128_testdata[8563] */ + { 2854, 0x9E3779B185EBCA8DULL, { 0x259E93D62E7EF2A1ULL, 0x30E7BB92D193821AULL } }, /* XSUM_XXH128_testdata[8564] */ + { 2855, 0x0000000000000000ULL, { 0x0A49C4ACDDA4DE33ULL, 0x0503314024AE180EULL } }, /* XSUM_XXH128_testdata[8565] */ + { 2855, 0x000000009E3779B1ULL, { 0x39E137B7F2E10790ULL, 0x5AA24D8CDB6151E1ULL } }, /* XSUM_XXH128_testdata[8566] */ + { 2855, 0x9E3779B185EBCA8DULL, { 0x53E4DCD01C5D114EULL, 0x411210C68336AE4FULL } }, /* XSUM_XXH128_testdata[8567] */ + { 2856, 0x0000000000000000ULL, { 0x6A34FD012D7D379EULL, 0x0E6F85ACEC33EBC4ULL } }, /* XSUM_XXH128_testdata[8568] */ + { 2856, 0x000000009E3779B1ULL, { 0xEFB3BC35D0B835B8ULL, 0x33A20D7FF90F93D7ULL } }, /* XSUM_XXH128_testdata[8569] */ + { 2856, 0x9E3779B185EBCA8DULL, { 0x2A09BE56719E22FCULL, 0x3270E0114E716180ULL } }, /* XSUM_XXH128_testdata[8570] */ + { 2857, 0x0000000000000000ULL, { 0xE833105304C012B9ULL, 0xFA9D6ED7CE1AC75FULL } }, /* XSUM_XXH128_testdata[8571] */ + { 2857, 0x000000009E3779B1ULL, { 0x92033EC5B876B596ULL, 0x8FB1E7CB1E19DE4FULL } }, /* XSUM_XXH128_testdata[8572] */ + { 2857, 0x9E3779B185EBCA8DULL, { 0x50E134066756229AULL, 0x4705892E566D6F8AULL } }, /* XSUM_XXH128_testdata[8573] */ + { 2858, 0x0000000000000000ULL, { 0xA084125D75F93750ULL, 0xC1DEA14D597CF003ULL } }, /* XSUM_XXH128_testdata[8574] */ + { 2858, 0x000000009E3779B1ULL, { 0x2E2A5ACC3522A5D3ULL, 0x79420B1870292308ULL } }, /* XSUM_XXH128_testdata[8575] */ + { 2858, 0x9E3779B185EBCA8DULL, { 0x291177B5FD99AF4FULL, 0x1A59426BA3204DB1ULL } }, /* XSUM_XXH128_testdata[8576] */ + { 2859, 0x0000000000000000ULL, { 0x697C9C5AA1DB3011ULL, 0x1A5095595B521642ULL } }, /* XSUM_XXH128_testdata[8577] */ + { 2859, 0x000000009E3779B1ULL, { 0xBAF72F093FAC74C2ULL, 0x5D4CC258EF67AAA4ULL } }, /* XSUM_XXH128_testdata[8578] */ + { 2859, 0x9E3779B185EBCA8DULL, { 0x9111A8EF08BDC86FULL, 0x769188C59A5806DFULL } }, /* XSUM_XXH128_testdata[8579] */ + { 2860, 0x0000000000000000ULL, { 0xC01BD3A9C8B676ACULL, 0x55EF05BC44B6EFCAULL } }, /* XSUM_XXH128_testdata[8580] */ + { 2860, 0x000000009E3779B1ULL, { 0xA85B35CD84A0A3E3ULL, 0x4428F147A2B561F8ULL } }, /* XSUM_XXH128_testdata[8581] */ + { 2860, 0x9E3779B185EBCA8DULL, { 0x065ED12B38BE9194ULL, 0xB0FEE59AD9AC6E87ULL } }, /* XSUM_XXH128_testdata[8582] */ + { 2861, 0x0000000000000000ULL, { 0xC438B94D48DCAB4EULL, 0x5B5316D910BEB77EULL } }, /* XSUM_XXH128_testdata[8583] */ + { 2861, 0x000000009E3779B1ULL, { 0xA534CB7048FD7CEBULL, 0xB9DD7D692CD73077ULL } }, /* XSUM_XXH128_testdata[8584] */ + { 2861, 0x9E3779B185EBCA8DULL, { 0xB95538E5F009C012ULL, 0xB12046A219B3E525ULL } }, /* XSUM_XXH128_testdata[8585] */ + { 2862, 0x0000000000000000ULL, { 0x8EC74AE7A04D1704ULL, 0x6642B37C7D4BB43FULL } }, /* XSUM_XXH128_testdata[8586] */ + { 2862, 0x000000009E3779B1ULL, { 0xFE091772FEC4744EULL, 0x0FF5F6E8F9390DE7ULL } }, /* XSUM_XXH128_testdata[8587] */ + { 2862, 0x9E3779B185EBCA8DULL, { 0x414D2BF6C4ED9503ULL, 0xFE6DB55F230C86F1ULL } }, /* XSUM_XXH128_testdata[8588] */ + { 2863, 0x0000000000000000ULL, { 0x4CC8AC8D4DEC3B17ULL, 0x575BEA73B854232BULL } }, /* XSUM_XXH128_testdata[8589] */ + { 2863, 0x000000009E3779B1ULL, { 0xDBA3E720944D1DF1ULL, 0x0B1DAE032B43773BULL } }, /* XSUM_XXH128_testdata[8590] */ + { 2863, 0x9E3779B185EBCA8DULL, { 0x86405A3ABAFD5616ULL, 0xBB97BF1F52544811ULL } }, /* XSUM_XXH128_testdata[8591] */ + { 2864, 0x0000000000000000ULL, { 0xAE4B62FFCAEC21CEULL, 0xAB6A65A69D9A5213ULL } }, /* XSUM_XXH128_testdata[8592] */ + { 2864, 0x000000009E3779B1ULL, { 0x227F9236B9765ED5ULL, 0x3A91D7AA3273C901ULL } }, /* XSUM_XXH128_testdata[8593] */ + { 2864, 0x9E3779B185EBCA8DULL, { 0x292AE79353E674ECULL, 0x6747D93A644CB607ULL } }, /* XSUM_XXH128_testdata[8594] */ + { 2865, 0x0000000000000000ULL, { 0x7A1B24D068F5CBA4ULL, 0x69D9E506A6166D86ULL } }, /* XSUM_XXH128_testdata[8595] */ + { 2865, 0x000000009E3779B1ULL, { 0x7536128D57A8BB59ULL, 0x418A87CA4D553BD6ULL } }, /* XSUM_XXH128_testdata[8596] */ + { 2865, 0x9E3779B185EBCA8DULL, { 0xFDD9401FEC1AA869ULL, 0x066DDDF7A37BC741ULL } }, /* XSUM_XXH128_testdata[8597] */ + { 2866, 0x0000000000000000ULL, { 0x45951F249262A503ULL, 0x395A1781ABC22956ULL } }, /* XSUM_XXH128_testdata[8598] */ + { 2866, 0x000000009E3779B1ULL, { 0x8DFFAB3717860111ULL, 0x5D09CAF594E0838FULL } }, /* XSUM_XXH128_testdata[8599] */ + { 2866, 0x9E3779B185EBCA8DULL, { 0xD0FA59F2B388526FULL, 0x12C9498C2F9859CEULL } }, /* XSUM_XXH128_testdata[8600] */ + { 2867, 0x0000000000000000ULL, { 0xF04016338B794411ULL, 0xD987186A25FCC3C8ULL } }, /* XSUM_XXH128_testdata[8601] */ + { 2867, 0x000000009E3779B1ULL, { 0xF53FD1B3F1C7738CULL, 0x2862217733D0344EULL } }, /* XSUM_XXH128_testdata[8602] */ + { 2867, 0x9E3779B185EBCA8DULL, { 0xF959B4A6FD455DB0ULL, 0x4ADD960ED69049B1ULL } }, /* XSUM_XXH128_testdata[8603] */ + { 2868, 0x0000000000000000ULL, { 0x33CD0CF2BFDDA8C7ULL, 0x49517B16E86C3E39ULL } }, /* XSUM_XXH128_testdata[8604] */ + { 2868, 0x000000009E3779B1ULL, { 0x2E63541FFA4EF79EULL, 0xA49A36ADD06406F1ULL } }, /* XSUM_XXH128_testdata[8605] */ + { 2868, 0x9E3779B185EBCA8DULL, { 0xA7DCF401D957FC3DULL, 0xAA38A74981D52CC5ULL } }, /* XSUM_XXH128_testdata[8606] */ + { 2869, 0x0000000000000000ULL, { 0xF6B73BDF3FD3F7C8ULL, 0x8C5936E80C013625ULL } }, /* XSUM_XXH128_testdata[8607] */ + { 2869, 0x000000009E3779B1ULL, { 0x578B9D5548A362C1ULL, 0x8E70323A9FD933B7ULL } }, /* XSUM_XXH128_testdata[8608] */ + { 2869, 0x9E3779B185EBCA8DULL, { 0x87EFE8D4501CD8EFULL, 0x17F4F9F325C2537EULL } }, /* XSUM_XXH128_testdata[8609] */ + { 2870, 0x0000000000000000ULL, { 0x851146CFEFE7A86BULL, 0x1EAB5392A21F576EULL } }, /* XSUM_XXH128_testdata[8610] */ + { 2870, 0x000000009E3779B1ULL, { 0x9206DEC0B8EAE0FBULL, 0x8E1376486F323E0FULL } }, /* XSUM_XXH128_testdata[8611] */ + { 2870, 0x9E3779B185EBCA8DULL, { 0xA79C2E2E22ACC8F5ULL, 0xFDB607F4A40E47DAULL } }, /* XSUM_XXH128_testdata[8612] */ + { 2871, 0x0000000000000000ULL, { 0x3E4C9798133B8D0DULL, 0xD5C5247C7627A3FDULL } }, /* XSUM_XXH128_testdata[8613] */ + { 2871, 0x000000009E3779B1ULL, { 0xDFC91F000F576FE8ULL, 0x55FA0CF61C0696AFULL } }, /* XSUM_XXH128_testdata[8614] */ + { 2871, 0x9E3779B185EBCA8DULL, { 0x98EA874578066F8CULL, 0xDED59168E9C99DABULL } }, /* XSUM_XXH128_testdata[8615] */ + { 2872, 0x0000000000000000ULL, { 0x8ED4D507B1D71E5FULL, 0xD8F91503004FF691ULL } }, /* XSUM_XXH128_testdata[8616] */ + { 2872, 0x000000009E3779B1ULL, { 0x87E0C319EB18C4DAULL, 0x9EA9829EB426F858ULL } }, /* XSUM_XXH128_testdata[8617] */ + { 2872, 0x9E3779B185EBCA8DULL, { 0xCFA0AA9C4DC31B33ULL, 0x78950B46F6C07013ULL } }, /* XSUM_XXH128_testdata[8618] */ + { 2873, 0x0000000000000000ULL, { 0xD7F745B00F4C99C6ULL, 0x3766531F42DB2F09ULL } }, /* XSUM_XXH128_testdata[8619] */ + { 2873, 0x000000009E3779B1ULL, { 0x1D829B37761EA98BULL, 0xD73F6D03A134F936ULL } }, /* XSUM_XXH128_testdata[8620] */ + { 2873, 0x9E3779B185EBCA8DULL, { 0xA15EE2B199D447DAULL, 0xEBEF9B51D849D083ULL } }, /* XSUM_XXH128_testdata[8621] */ + { 2874, 0x0000000000000000ULL, { 0x360C5493162E6139ULL, 0x24FFAD6E92858F50ULL } }, /* XSUM_XXH128_testdata[8622] */ + { 2874, 0x000000009E3779B1ULL, { 0x43E48BD07F589398ULL, 0xCA832AE62D0FBB16ULL } }, /* XSUM_XXH128_testdata[8623] */ + { 2874, 0x9E3779B185EBCA8DULL, { 0x0B4BA2E110C40A7DULL, 0xED31185475F45612ULL } }, /* XSUM_XXH128_testdata[8624] */ + { 2875, 0x0000000000000000ULL, { 0x2C2C75069E5F0C87ULL, 0x9F500AC736939A82ULL } }, /* XSUM_XXH128_testdata[8625] */ + { 2875, 0x000000009E3779B1ULL, { 0x24098B14B55E7437ULL, 0x3C6973C411C3A94FULL } }, /* XSUM_XXH128_testdata[8626] */ + { 2875, 0x9E3779B185EBCA8DULL, { 0x9E00E20A113A71F2ULL, 0xD11498187D64448AULL } }, /* XSUM_XXH128_testdata[8627] */ + { 2876, 0x0000000000000000ULL, { 0xBAA009937EF7AB3DULL, 0x87AEBCBD14C0253AULL } }, /* XSUM_XXH128_testdata[8628] */ + { 2876, 0x000000009E3779B1ULL, { 0x69C904821E19E969ULL, 0xFC6D45F8A8C42CF5ULL } }, /* XSUM_XXH128_testdata[8629] */ + { 2876, 0x9E3779B185EBCA8DULL, { 0x434D361FD8FA5F90ULL, 0x5C35C6E6A5D0743BULL } }, /* XSUM_XXH128_testdata[8630] */ + { 2877, 0x0000000000000000ULL, { 0x1AC95EE241D9604DULL, 0xEE259F499400591CULL } }, /* XSUM_XXH128_testdata[8631] */ + { 2877, 0x000000009E3779B1ULL, { 0x9BDB3A02B510372EULL, 0x6BD78BDA70D126B4ULL } }, /* XSUM_XXH128_testdata[8632] */ + { 2877, 0x9E3779B185EBCA8DULL, { 0xA73A88A94D6AAEE3ULL, 0x01B483A1B0ECD127ULL } }, /* XSUM_XXH128_testdata[8633] */ + { 2878, 0x0000000000000000ULL, { 0x0C97CAB6AA8AEFA1ULL, 0x180E8415FAB43824ULL } }, /* XSUM_XXH128_testdata[8634] */ + { 2878, 0x000000009E3779B1ULL, { 0x5796F164E45B2ABFULL, 0xF4526FAC643B7335ULL } }, /* XSUM_XXH128_testdata[8635] */ + { 2878, 0x9E3779B185EBCA8DULL, { 0x3C779BCB58A0A65DULL, 0x60742EB3410530AFULL } }, /* XSUM_XXH128_testdata[8636] */ + { 2879, 0x0000000000000000ULL, { 0xDD75425D038D346DULL, 0x856B3F922E9EAB50ULL } }, /* XSUM_XXH128_testdata[8637] */ + { 2879, 0x000000009E3779B1ULL, { 0x5EAFE3B9A0292C5EULL, 0x783B4004874DD139ULL } }, /* XSUM_XXH128_testdata[8638] */ + { 2879, 0x9E3779B185EBCA8DULL, { 0x0A8B237C83DF1BAFULL, 0x46FE8F5CC7A62E8BULL } }, /* XSUM_XXH128_testdata[8639] */ + { 2880, 0x0000000000000000ULL, { 0x1569AEC031E74877ULL, 0xD990597BF6D2CF5EULL } }, /* XSUM_XXH128_testdata[8640] */ + { 2880, 0x000000009E3779B1ULL, { 0x7509BD0364683AB0ULL, 0x1973E6AF1E015C69ULL } }, /* XSUM_XXH128_testdata[8641] */ + { 2880, 0x9E3779B185EBCA8DULL, { 0x4312A84752DF1392ULL, 0x36D3AFE081D95C26ULL } }, /* XSUM_XXH128_testdata[8642] */ + { 2881, 0x0000000000000000ULL, { 0x50F4C429EB0B5DA9ULL, 0xFE7DB537950EC345ULL } }, /* XSUM_XXH128_testdata[8643] */ + { 2881, 0x000000009E3779B1ULL, { 0x441B4D3CB362818BULL, 0xAD159E4E00FFB262ULL } }, /* XSUM_XXH128_testdata[8644] */ + { 2881, 0x9E3779B185EBCA8DULL, { 0x80059CDACC9C58B2ULL, 0x26087D29F7A154C6ULL } }, /* XSUM_XXH128_testdata[8645] */ + { 2882, 0x0000000000000000ULL, { 0x3C51B37EE08390D9ULL, 0x4582A302A712E673ULL } }, /* XSUM_XXH128_testdata[8646] */ + { 2882, 0x000000009E3779B1ULL, { 0x64A8B9CEB5CF5670ULL, 0x76302A11B823AD5EULL } }, /* XSUM_XXH128_testdata[8647] */ + { 2882, 0x9E3779B185EBCA8DULL, { 0xAD864F5AEE70A173ULL, 0x79F8494C16D32AE6ULL } }, /* XSUM_XXH128_testdata[8648] */ + { 2883, 0x0000000000000000ULL, { 0x13F4EED17CD88548ULL, 0xE0E16D966ABEF54EULL } }, /* XSUM_XXH128_testdata[8649] */ + { 2883, 0x000000009E3779B1ULL, { 0x1C9467150737C2C8ULL, 0x19CDFBC8C915FFE5ULL } }, /* XSUM_XXH128_testdata[8650] */ + { 2883, 0x9E3779B185EBCA8DULL, { 0xEF76EE2F31E05999ULL, 0x71E60A899A38CD7EULL } }, /* XSUM_XXH128_testdata[8651] */ + { 2884, 0x0000000000000000ULL, { 0x2533472603287D23ULL, 0x036FA310F1785EE5ULL } }, /* XSUM_XXH128_testdata[8652] */ + { 2884, 0x000000009E3779B1ULL, { 0xD187BEF5C96EF9C2ULL, 0x5D939A13DF38A0E6ULL } }, /* XSUM_XXH128_testdata[8653] */ + { 2884, 0x9E3779B185EBCA8DULL, { 0x554A64EF49681144ULL, 0xCC2B001AF2FDFB17ULL } }, /* XSUM_XXH128_testdata[8654] */ + { 2885, 0x0000000000000000ULL, { 0x0E93D60C4AFE6A2BULL, 0x867D084D48611494ULL } }, /* XSUM_XXH128_testdata[8655] */ + { 2885, 0x000000009E3779B1ULL, { 0x0F339CC33E88EBA2ULL, 0x38006BFBCDCA54F1ULL } }, /* XSUM_XXH128_testdata[8656] */ + { 2885, 0x9E3779B185EBCA8DULL, { 0x4B301FEDB9B5441CULL, 0x1CB82260085B1D7CULL } }, /* XSUM_XXH128_testdata[8657] */ + { 2886, 0x0000000000000000ULL, { 0x01EB1A14E2478FACULL, 0x6221A96DEDA442FBULL } }, /* XSUM_XXH128_testdata[8658] */ + { 2886, 0x000000009E3779B1ULL, { 0xF9B9AD0CBBF5FA40ULL, 0x209EB2FB74082219ULL } }, /* XSUM_XXH128_testdata[8659] */ + { 2886, 0x9E3779B185EBCA8DULL, { 0x512FDC6471997AB3ULL, 0x94CA61C393C72430ULL } }, /* XSUM_XXH128_testdata[8660] */ + { 2887, 0x0000000000000000ULL, { 0x2765A5C100EA0266ULL, 0x9390946C57A09DFCULL } }, /* XSUM_XXH128_testdata[8661] */ + { 2887, 0x000000009E3779B1ULL, { 0x3EE0DA5EDC0A9E36ULL, 0xCEBE5CC10084048BULL } }, /* XSUM_XXH128_testdata[8662] */ + { 2887, 0x9E3779B185EBCA8DULL, { 0x7BB842DB067D6F19ULL, 0x9F8853405607A804ULL } }, /* XSUM_XXH128_testdata[8663] */ + { 2888, 0x0000000000000000ULL, { 0xEE7819CD674E60D1ULL, 0xAE452CD12B0A1B2FULL } }, /* XSUM_XXH128_testdata[8664] */ + { 2888, 0x000000009E3779B1ULL, { 0xE51080DCE66DBF40ULL, 0x806ECCD6F32051BDULL } }, /* XSUM_XXH128_testdata[8665] */ + { 2888, 0x9E3779B185EBCA8DULL, { 0x0DACBB39F18EF099ULL, 0x35EEB7A9E8538C51ULL } }, /* XSUM_XXH128_testdata[8666] */ + { 2889, 0x0000000000000000ULL, { 0xFAF36DFB18B4F794ULL, 0x69C159CDDE35F993ULL } }, /* XSUM_XXH128_testdata[8667] */ + { 2889, 0x000000009E3779B1ULL, { 0x3B70315E05777022ULL, 0x24918D140882F810ULL } }, /* XSUM_XXH128_testdata[8668] */ + { 2889, 0x9E3779B185EBCA8DULL, { 0xFE8D0B026249AFB2ULL, 0xB22E80FEA7C77479ULL } }, /* XSUM_XXH128_testdata[8669] */ + { 2890, 0x0000000000000000ULL, { 0x59A3D9A04057B014ULL, 0xF9620F41641A4348ULL } }, /* XSUM_XXH128_testdata[8670] */ + { 2890, 0x000000009E3779B1ULL, { 0x6CB2CBB1BFEE9243ULL, 0x482A8CA621E590C6ULL } }, /* XSUM_XXH128_testdata[8671] */ + { 2890, 0x9E3779B185EBCA8DULL, { 0x89711CA2BAAA440BULL, 0x68602B0E4B051CD2ULL } }, /* XSUM_XXH128_testdata[8672] */ + { 2891, 0x0000000000000000ULL, { 0xCD08AD27BE784216ULL, 0x16FC1FAA83905427ULL } }, /* XSUM_XXH128_testdata[8673] */ + { 2891, 0x000000009E3779B1ULL, { 0xEF242E5D1AA6B845ULL, 0x4D989EFE9816A6DCULL } }, /* XSUM_XXH128_testdata[8674] */ + { 2891, 0x9E3779B185EBCA8DULL, { 0x62D6E6128B98A1A7ULL, 0xB952A38AFE1BDE39ULL } }, /* XSUM_XXH128_testdata[8675] */ + { 2892, 0x0000000000000000ULL, { 0xCEE4AF3CF43E2A5FULL, 0xD00D7FF932AA3EF7ULL } }, /* XSUM_XXH128_testdata[8676] */ + { 2892, 0x000000009E3779B1ULL, { 0xE6641D7C6166FCD0ULL, 0xF8C02E7EF512580BULL } }, /* XSUM_XXH128_testdata[8677] */ + { 2892, 0x9E3779B185EBCA8DULL, { 0x71DD0854DCF0C185ULL, 0x821B4952AEFE4EBDULL } }, /* XSUM_XXH128_testdata[8678] */ + { 2893, 0x0000000000000000ULL, { 0x86FBBA87613F456FULL, 0xCFF17560BBB6E697ULL } }, /* XSUM_XXH128_testdata[8679] */ + { 2893, 0x000000009E3779B1ULL, { 0xEFAFA8FF6B2AD4A6ULL, 0xDF537EF6B01B465FULL } }, /* XSUM_XXH128_testdata[8680] */ + { 2893, 0x9E3779B185EBCA8DULL, { 0x4412BC45B5C45E0FULL, 0xEB0D524688C276C6ULL } }, /* XSUM_XXH128_testdata[8681] */ + { 2894, 0x0000000000000000ULL, { 0x2C6C34D4C16411D5ULL, 0x884CA706DFEBB5BEULL } }, /* XSUM_XXH128_testdata[8682] */ + { 2894, 0x000000009E3779B1ULL, { 0x819DCD87CA32CE7CULL, 0xE7382A0410B2DCE2ULL } }, /* XSUM_XXH128_testdata[8683] */ + { 2894, 0x9E3779B185EBCA8DULL, { 0x9677ED6A93D72EBCULL, 0xF75D73D824CCB50CULL } }, /* XSUM_XXH128_testdata[8684] */ + { 2895, 0x0000000000000000ULL, { 0xE2B5DEB318801298ULL, 0x4E194C0D34E50586ULL } }, /* XSUM_XXH128_testdata[8685] */ + { 2895, 0x000000009E3779B1ULL, { 0x1487AFC47E31ECAEULL, 0xECCA53FD6A5E55DCULL } }, /* XSUM_XXH128_testdata[8686] */ + { 2895, 0x9E3779B185EBCA8DULL, { 0xE4448348C66AEA5BULL, 0xCE1399B2C6B7A48AULL } }, /* XSUM_XXH128_testdata[8687] */ + { 2896, 0x0000000000000000ULL, { 0xD2C49A2972FC88E3ULL, 0xFC455E2196C58AB5ULL } }, /* XSUM_XXH128_testdata[8688] */ + { 2896, 0x000000009E3779B1ULL, { 0xE15EBC84CDE3F722ULL, 0x3EE1DFF8627249E9ULL } }, /* XSUM_XXH128_testdata[8689] */ + { 2896, 0x9E3779B185EBCA8DULL, { 0xF80757E2A01C4068ULL, 0x965F7EB20EE1B8B1ULL } }, /* XSUM_XXH128_testdata[8690] */ + { 2897, 0x0000000000000000ULL, { 0x141104A3E73DC453ULL, 0xC04FBA0CCB6C73C4ULL } }, /* XSUM_XXH128_testdata[8691] */ + { 2897, 0x000000009E3779B1ULL, { 0xAA501F75BDF8F984ULL, 0x0BB31440785E6566ULL } }, /* XSUM_XXH128_testdata[8692] */ + { 2897, 0x9E3779B185EBCA8DULL, { 0x8A5866A43B23145AULL, 0x7378106B9B844101ULL } }, /* XSUM_XXH128_testdata[8693] */ + { 2898, 0x0000000000000000ULL, { 0x34DB3A72949DA213ULL, 0x434C9FB9E7EA8BD9ULL } }, /* XSUM_XXH128_testdata[8694] */ + { 2898, 0x000000009E3779B1ULL, { 0xF3D515EBF65496A8ULL, 0xA6453164D57F21A6ULL } }, /* XSUM_XXH128_testdata[8695] */ + { 2898, 0x9E3779B185EBCA8DULL, { 0x2424B5C3177D30F9ULL, 0xE73F7E0FAADE922AULL } }, /* XSUM_XXH128_testdata[8696] */ + { 2899, 0x0000000000000000ULL, { 0x984AF7FBBCE247A3ULL, 0x18390C464ADB7E89ULL } }, /* XSUM_XXH128_testdata[8697] */ + { 2899, 0x000000009E3779B1ULL, { 0x27D7D15C3E5F0448ULL, 0x357895170C2971F7ULL } }, /* XSUM_XXH128_testdata[8698] */ + { 2899, 0x9E3779B185EBCA8DULL, { 0x26F58F312DBB36F7ULL, 0x6B20D018260E2A96ULL } }, /* XSUM_XXH128_testdata[8699] */ + { 2900, 0x0000000000000000ULL, { 0x05A7E42E977AEFBFULL, 0x41A7B33A9E5F2605ULL } }, /* XSUM_XXH128_testdata[8700] */ + { 2900, 0x000000009E3779B1ULL, { 0x8B51A1B6F706B64DULL, 0xE78F1DD3F0EA497DULL } }, /* XSUM_XXH128_testdata[8701] */ + { 2900, 0x9E3779B185EBCA8DULL, { 0x2308BBFFE6CCAC11ULL, 0x1E7DB8496CA744A4ULL } }, /* XSUM_XXH128_testdata[8702] */ + { 2901, 0x0000000000000000ULL, { 0xD2276B6308652305ULL, 0x520486521CD5830CULL } }, /* XSUM_XXH128_testdata[8703] */ + { 2901, 0x000000009E3779B1ULL, { 0x9F6794B9D2B9F758ULL, 0xFBAE1441BE6343ADULL } }, /* XSUM_XXH128_testdata[8704] */ + { 2901, 0x9E3779B185EBCA8DULL, { 0x9350ACC7278373F9ULL, 0x87B97A2EB7422131ULL } }, /* XSUM_XXH128_testdata[8705] */ + { 2902, 0x0000000000000000ULL, { 0x2CA93644EBCE42F5ULL, 0x551DAA8BEE478A49ULL } }, /* XSUM_XXH128_testdata[8706] */ + { 2902, 0x000000009E3779B1ULL, { 0xFF204CD48EFC35A5ULL, 0x4BAF5C0CC6A63650ULL } }, /* XSUM_XXH128_testdata[8707] */ + { 2902, 0x9E3779B185EBCA8DULL, { 0xF0FE9E18372572D3ULL, 0xF126343DBB4758E5ULL } }, /* XSUM_XXH128_testdata[8708] */ + { 2903, 0x0000000000000000ULL, { 0xFE5CD7D2F3A38C0BULL, 0xF9029B5DCBC976B9ULL } }, /* XSUM_XXH128_testdata[8709] */ + { 2903, 0x000000009E3779B1ULL, { 0xF2EE2DEBC003A1B0ULL, 0x4DD14560DE3E39E5ULL } }, /* XSUM_XXH128_testdata[8710] */ + { 2903, 0x9E3779B185EBCA8DULL, { 0x4C6A0DB668F82BEBULL, 0x32F250719C3436E7ULL } }, /* XSUM_XXH128_testdata[8711] */ + { 2904, 0x0000000000000000ULL, { 0x21D867EBD5FC4E0AULL, 0x53B57F93FB119A1EULL } }, /* XSUM_XXH128_testdata[8712] */ + { 2904, 0x000000009E3779B1ULL, { 0x0FBE5A3A767684CEULL, 0xFD116F943CD15FC7ULL } }, /* XSUM_XXH128_testdata[8713] */ + { 2904, 0x9E3779B185EBCA8DULL, { 0x008EF198EEF4C618ULL, 0x1E441554EAB45164ULL } }, /* XSUM_XXH128_testdata[8714] */ + { 2905, 0x0000000000000000ULL, { 0x6D34EFAF31163CDCULL, 0xC4B3DD48DAA0FDC5ULL } }, /* XSUM_XXH128_testdata[8715] */ + { 2905, 0x000000009E3779B1ULL, { 0x154466CC8D45AAE6ULL, 0x82DF2E9E545BCBDBULL } }, /* XSUM_XXH128_testdata[8716] */ + { 2905, 0x9E3779B185EBCA8DULL, { 0x1CD2ADD8BBD4E97EULL, 0xC13DFAF2E58B6A2BULL } }, /* XSUM_XXH128_testdata[8717] */ + { 2906, 0x0000000000000000ULL, { 0xD663DB2BACEB027EULL, 0xD7824CCE12348F47ULL } }, /* XSUM_XXH128_testdata[8718] */ + { 2906, 0x000000009E3779B1ULL, { 0x00CC4F9EB488C22AULL, 0x61927EC5CF8C37FCULL } }, /* XSUM_XXH128_testdata[8719] */ + { 2906, 0x9E3779B185EBCA8DULL, { 0x1CE37DAD30EEC2A5ULL, 0x24412A3961F728C6ULL } }, /* XSUM_XXH128_testdata[8720] */ + { 2907, 0x0000000000000000ULL, { 0xBEA17878CE925885ULL, 0xC0C00ED98B8094AFULL } }, /* XSUM_XXH128_testdata[8721] */ + { 2907, 0x000000009E3779B1ULL, { 0xFC78A3FF5EB79890ULL, 0x9B2B9379B1D4B15FULL } }, /* XSUM_XXH128_testdata[8722] */ + { 2907, 0x9E3779B185EBCA8DULL, { 0x336315FBCEC44E62ULL, 0xD7B8687E3F03B11FULL } }, /* XSUM_XXH128_testdata[8723] */ + { 2908, 0x0000000000000000ULL, { 0xF4EF93220B92BA40ULL, 0x192008530865269BULL } }, /* XSUM_XXH128_testdata[8724] */ + { 2908, 0x000000009E3779B1ULL, { 0xA72569D3DB1836F0ULL, 0xA9D2F4FA6628066EULL } }, /* XSUM_XXH128_testdata[8725] */ + { 2908, 0x9E3779B185EBCA8DULL, { 0xDB6BF0A4B49134AEULL, 0x4A0D958E5DA93B02ULL } }, /* XSUM_XXH128_testdata[8726] */ + { 2909, 0x0000000000000000ULL, { 0x436021B24F571768ULL, 0xCC60A9ACA0F37526ULL } }, /* XSUM_XXH128_testdata[8727] */ + { 2909, 0x000000009E3779B1ULL, { 0x0D15AAFE38266D4EULL, 0x27C41D3BCE8351BFULL } }, /* XSUM_XXH128_testdata[8728] */ + { 2909, 0x9E3779B185EBCA8DULL, { 0x11A0401C050B4358ULL, 0xFEF864909324E784ULL } }, /* XSUM_XXH128_testdata[8729] */ + { 2910, 0x0000000000000000ULL, { 0x4BC346B3F9FF37A3ULL, 0xFC449C4793673C53ULL } }, /* XSUM_XXH128_testdata[8730] */ + { 2910, 0x000000009E3779B1ULL, { 0x1C9082545C11BD09ULL, 0x533AB90900D2F0ACULL } }, /* XSUM_XXH128_testdata[8731] */ + { 2910, 0x9E3779B185EBCA8DULL, { 0xC8B0154E930427FDULL, 0x6C638457D9D3AC63ULL } }, /* XSUM_XXH128_testdata[8732] */ + { 2911, 0x0000000000000000ULL, { 0xDBFBE89DF1427DC9ULL, 0x641D225CDD3B973BULL } }, /* XSUM_XXH128_testdata[8733] */ + { 2911, 0x000000009E3779B1ULL, { 0xB73FAEC8290EE3F0ULL, 0x3687D0271D34D310ULL } }, /* XSUM_XXH128_testdata[8734] */ + { 2911, 0x9E3779B185EBCA8DULL, { 0x959C3EFE3A9FFBADULL, 0x9F2492BB1A9E7B16ULL } }, /* XSUM_XXH128_testdata[8735] */ + { 2912, 0x0000000000000000ULL, { 0x6898B302FA2DE57FULL, 0xF975D00A8866D3B7ULL } }, /* XSUM_XXH128_testdata[8736] */ + { 2912, 0x000000009E3779B1ULL, { 0xCBDE13BED99E6A31ULL, 0x351BA63223299114ULL } }, /* XSUM_XXH128_testdata[8737] */ + { 2912, 0x9E3779B185EBCA8DULL, { 0xEAD47BE6C4B72653ULL, 0x9BD9241CC580E48CULL } }, /* XSUM_XXH128_testdata[8738] */ + { 2913, 0x0000000000000000ULL, { 0x3A444D5877850E15ULL, 0x51A64859C7EB3F28ULL } }, /* XSUM_XXH128_testdata[8739] */ + { 2913, 0x000000009E3779B1ULL, { 0xD4DA0A9BCEBE45CFULL, 0xFC9AE008C1DDBA86ULL } }, /* XSUM_XXH128_testdata[8740] */ + { 2913, 0x9E3779B185EBCA8DULL, { 0x8B8C8FE28D4AB564ULL, 0x16264F6223CB2B0EULL } }, /* XSUM_XXH128_testdata[8741] */ + { 2914, 0x0000000000000000ULL, { 0xB9BB6D96B866D954ULL, 0x44C28856348EA8B9ULL } }, /* XSUM_XXH128_testdata[8742] */ + { 2914, 0x000000009E3779B1ULL, { 0x5EDAA78FB752D6D9ULL, 0xFB008DA515251F49ULL } }, /* XSUM_XXH128_testdata[8743] */ + { 2914, 0x9E3779B185EBCA8DULL, { 0xBF970B0F4FEAD08EULL, 0xE51854F0809D970EULL } }, /* XSUM_XXH128_testdata[8744] */ + { 2915, 0x0000000000000000ULL, { 0xB425E40BCAABF6F0ULL, 0x00588FB12E83A65DULL } }, /* XSUM_XXH128_testdata[8745] */ + { 2915, 0x000000009E3779B1ULL, { 0xD0F76BF1BF44E329ULL, 0xCA6261617CD0B83AULL } }, /* XSUM_XXH128_testdata[8746] */ + { 2915, 0x9E3779B185EBCA8DULL, { 0x184AE70EC6F480E8ULL, 0x20BC49985D22F93BULL } }, /* XSUM_XXH128_testdata[8747] */ + { 2916, 0x0000000000000000ULL, { 0xC0980B081CAAC13EULL, 0xD0F03E96CF41D342ULL } }, /* XSUM_XXH128_testdata[8748] */ + { 2916, 0x000000009E3779B1ULL, { 0x9CD9C142083BE797ULL, 0x5EA408C93DC1250BULL } }, /* XSUM_XXH128_testdata[8749] */ + { 2916, 0x9E3779B185EBCA8DULL, { 0xAC4378B3BA949539ULL, 0x6142B3A4C51E9415ULL } }, /* XSUM_XXH128_testdata[8750] */ + { 2917, 0x0000000000000000ULL, { 0xD81CF066572FC06DULL, 0xC63452EDC242397EULL } }, /* XSUM_XXH128_testdata[8751] */ + { 2917, 0x000000009E3779B1ULL, { 0x7EF2E44FA3843F6AULL, 0x0FE9AE709BBB43AFULL } }, /* XSUM_XXH128_testdata[8752] */ + { 2917, 0x9E3779B185EBCA8DULL, { 0xE909FA49AD169084ULL, 0xCF14F59A6D7424B9ULL } }, /* XSUM_XXH128_testdata[8753] */ + { 2918, 0x0000000000000000ULL, { 0xFE97D61C77F33CA8ULL, 0x5923537FE35F75C7ULL } }, /* XSUM_XXH128_testdata[8754] */ + { 2918, 0x000000009E3779B1ULL, { 0x7F31C16459A8F80CULL, 0xAC0D84BA954CEB7CULL } }, /* XSUM_XXH128_testdata[8755] */ + { 2918, 0x9E3779B185EBCA8DULL, { 0x9FD8690E59E936C0ULL, 0x3D45C8A2CA62182EULL } }, /* XSUM_XXH128_testdata[8756] */ + { 2919, 0x0000000000000000ULL, { 0x90DE987789853E18ULL, 0x7EC99FC9FFD07937ULL } }, /* XSUM_XXH128_testdata[8757] */ + { 2919, 0x000000009E3779B1ULL, { 0x9DC9FD57D7D7433FULL, 0x6281F6B0CE72F6FBULL } }, /* XSUM_XXH128_testdata[8758] */ + { 2919, 0x9E3779B185EBCA8DULL, { 0xEA97F43444968484ULL, 0xD3CE5A9A36A65794ULL } }, /* XSUM_XXH128_testdata[8759] */ + { 2920, 0x0000000000000000ULL, { 0x54EE786D33C130CCULL, 0x9E769C51D2DBAD3AULL } }, /* XSUM_XXH128_testdata[8760] */ + { 2920, 0x000000009E3779B1ULL, { 0xD9B840FDD7C5F394ULL, 0x8B4A2771E3B6E191ULL } }, /* XSUM_XXH128_testdata[8761] */ + { 2920, 0x9E3779B185EBCA8DULL, { 0x3046EE02CCE9E480ULL, 0x42E34296074A8918ULL } }, /* XSUM_XXH128_testdata[8762] */ + { 2921, 0x0000000000000000ULL, { 0x7A2340581E6B8BBCULL, 0x4F35E2A16E9F0C7AULL } }, /* XSUM_XXH128_testdata[8763] */ + { 2921, 0x000000009E3779B1ULL, { 0xEE7EE7E6BD07565EULL, 0x2E70E03C8F134D3FULL } }, /* XSUM_XXH128_testdata[8764] */ + { 2921, 0x9E3779B185EBCA8DULL, { 0x01CECA730C6FFF9BULL, 0x676AFA24366DD251ULL } }, /* XSUM_XXH128_testdata[8765] */ + { 2922, 0x0000000000000000ULL, { 0x753BDAEC0C775A6CULL, 0x32A53E731B8714B9ULL } }, /* XSUM_XXH128_testdata[8766] */ + { 2922, 0x000000009E3779B1ULL, { 0x84E2D690CC61F03AULL, 0x9B924AE467D09305ULL } }, /* XSUM_XXH128_testdata[8767] */ + { 2922, 0x9E3779B185EBCA8DULL, { 0x8A8D2710D71D3533ULL, 0x11BAEA514FCBF55EULL } }, /* XSUM_XXH128_testdata[8768] */ + { 2923, 0x0000000000000000ULL, { 0xAE2EB637BB2566B6ULL, 0x2FF031B9A34597F2ULL } }, /* XSUM_XXH128_testdata[8769] */ + { 2923, 0x000000009E3779B1ULL, { 0xBCB9B13A9472B03FULL, 0x5C75A1BB521127E5ULL } }, /* XSUM_XXH128_testdata[8770] */ + { 2923, 0x9E3779B185EBCA8DULL, { 0xAEBAC1FF4EFF8F81ULL, 0x6735148DFBC06B83ULL } }, /* XSUM_XXH128_testdata[8771] */ + { 2924, 0x0000000000000000ULL, { 0xF7C951FA76F91F04ULL, 0x49BBE303DEE20F72ULL } }, /* XSUM_XXH128_testdata[8772] */ + { 2924, 0x000000009E3779B1ULL, { 0x8FCA291B4BEC8616ULL, 0x6BF2259E7FA35B44ULL } }, /* XSUM_XXH128_testdata[8773] */ + { 2924, 0x9E3779B185EBCA8DULL, { 0xC5A60CBB19EA4578ULL, 0x39D69A625594B9C5ULL } }, /* XSUM_XXH128_testdata[8774] */ + { 2925, 0x0000000000000000ULL, { 0xABAB9443CD114538ULL, 0x4B1F669693ABD207ULL } }, /* XSUM_XXH128_testdata[8775] */ + { 2925, 0x000000009E3779B1ULL, { 0x63FC39C5472F720FULL, 0x76E5BFAD874298B0ULL } }, /* XSUM_XXH128_testdata[8776] */ + { 2925, 0x9E3779B185EBCA8DULL, { 0x723E7E1D128C1E7BULL, 0x5AFE510DADD37A16ULL } }, /* XSUM_XXH128_testdata[8777] */ + { 2926, 0x0000000000000000ULL, { 0x9EA70C87CBF18F54ULL, 0x715BD6F89EB599A3ULL } }, /* XSUM_XXH128_testdata[8778] */ + { 2926, 0x000000009E3779B1ULL, { 0xEB9F9D7C5DACC7DFULL, 0x4DE150E7FD53A57FULL } }, /* XSUM_XXH128_testdata[8779] */ + { 2926, 0x9E3779B185EBCA8DULL, { 0xDBB8637F27CD02A6ULL, 0x5D8174D248275552ULL } }, /* XSUM_XXH128_testdata[8780] */ + { 2927, 0x0000000000000000ULL, { 0xEB0A44B1C78D5F39ULL, 0xF694A524718D8BA9ULL } }, /* XSUM_XXH128_testdata[8781] */ + { 2927, 0x000000009E3779B1ULL, { 0x1382623ECB019461ULL, 0x470EED9CD4A90F5CULL } }, /* XSUM_XXH128_testdata[8782] */ + { 2927, 0x9E3779B185EBCA8DULL, { 0x8D391F60755ADE6BULL, 0x0F4F1050934030CBULL } }, /* XSUM_XXH128_testdata[8783] */ + { 2928, 0x0000000000000000ULL, { 0x133DCF49D8583460ULL, 0x03FBB6108D59E630ULL } }, /* XSUM_XXH128_testdata[8784] */ + { 2928, 0x000000009E3779B1ULL, { 0xC38FEE1011E4A8B2ULL, 0xAF01C552DA2F3A7CULL } }, /* XSUM_XXH128_testdata[8785] */ + { 2928, 0x9E3779B185EBCA8DULL, { 0x361CB85CA98D5525ULL, 0x8BC64C92D48BBBCCULL } }, /* XSUM_XXH128_testdata[8786] */ + { 2929, 0x0000000000000000ULL, { 0x0DE608C5C6CEFB45ULL, 0xECA5730056316FABULL } }, /* XSUM_XXH128_testdata[8787] */ + { 2929, 0x000000009E3779B1ULL, { 0xFCCBB06578FABE38ULL, 0x19AB0974E5B6B169ULL } }, /* XSUM_XXH128_testdata[8788] */ + { 2929, 0x9E3779B185EBCA8DULL, { 0xDB67D5C9E5BD578AULL, 0x331A225445714DA5ULL } }, /* XSUM_XXH128_testdata[8789] */ + { 2930, 0x0000000000000000ULL, { 0xB9ACAFD4BDA2772BULL, 0x175E9C9BFA6A18D2ULL } }, /* XSUM_XXH128_testdata[8790] */ + { 2930, 0x000000009E3779B1ULL, { 0xC064503B7BE8E7E7ULL, 0x983DBD6220755BA0ULL } }, /* XSUM_XXH128_testdata[8791] */ + { 2930, 0x9E3779B185EBCA8DULL, { 0xB24BE8EBD7FD2429ULL, 0x118B3FC8646EA93DULL } }, /* XSUM_XXH128_testdata[8792] */ + { 2931, 0x0000000000000000ULL, { 0x50506F8081CA14FEULL, 0x7525893A1F82A6BAULL } }, /* XSUM_XXH128_testdata[8793] */ + { 2931, 0x000000009E3779B1ULL, { 0x8094FE23B15DD8F9ULL, 0x8299B2B1337B260EULL } }, /* XSUM_XXH128_testdata[8794] */ + { 2931, 0x9E3779B185EBCA8DULL, { 0x3D1A9B131E8A82BAULL, 0x4641DE14982D1A49ULL } }, /* XSUM_XXH128_testdata[8795] */ + { 2932, 0x0000000000000000ULL, { 0x22ABBE6A3F4AACFAULL, 0xE62530C72731A0A8ULL } }, /* XSUM_XXH128_testdata[8796] */ + { 2932, 0x000000009E3779B1ULL, { 0xD774805580A89A18ULL, 0xDDD40C241A132224ULL } }, /* XSUM_XXH128_testdata[8797] */ + { 2932, 0x9E3779B185EBCA8DULL, { 0x3EAC1BADB7A35388ULL, 0x0D018D43C62D8C42ULL } }, /* XSUM_XXH128_testdata[8798] */ + { 2933, 0x0000000000000000ULL, { 0x4B46B1DC6AF605DCULL, 0x31400396F552A0D2ULL } }, /* XSUM_XXH128_testdata[8799] */ + { 2933, 0x000000009E3779B1ULL, { 0x0502D0FBA1DE88AFULL, 0x89AB2FE001F93A46ULL } }, /* XSUM_XXH128_testdata[8800] */ + { 2933, 0x9E3779B185EBCA8DULL, { 0x3F3A84CBB2EEA098ULL, 0x5F12FF6199C5CA46ULL } }, /* XSUM_XXH128_testdata[8801] */ + { 2934, 0x0000000000000000ULL, { 0x184CF0DFC8130466ULL, 0xFADE41E46ABB41EEULL } }, /* XSUM_XXH128_testdata[8802] */ + { 2934, 0x000000009E3779B1ULL, { 0x210B2663852E87B1ULL, 0x062D57DC9B2BE0A6ULL } }, /* XSUM_XXH128_testdata[8803] */ + { 2934, 0x9E3779B185EBCA8DULL, { 0x6912FBF0815C4D3BULL, 0x2FD06F811D527BE8ULL } }, /* XSUM_XXH128_testdata[8804] */ + { 2935, 0x0000000000000000ULL, { 0x8C26A0D0B25E1825ULL, 0x1404AEE824E3BD7CULL } }, /* XSUM_XXH128_testdata[8805] */ + { 2935, 0x000000009E3779B1ULL, { 0xF48962159D1F497AULL, 0x72945CC557F1B1EDULL } }, /* XSUM_XXH128_testdata[8806] */ + { 2935, 0x9E3779B185EBCA8DULL, { 0x0FE45F1BFDB3A789ULL, 0x0C170FC428101A5BULL } }, /* XSUM_XXH128_testdata[8807] */ + { 2936, 0x0000000000000000ULL, { 0x390CFD95463BF23DULL, 0xF60AB3EC73FFBAF9ULL } }, /* XSUM_XXH128_testdata[8808] */ + { 2936, 0x000000009E3779B1ULL, { 0x68D37437E42D586CULL, 0xA88EA3CE745278CFULL } }, /* XSUM_XXH128_testdata[8809] */ + { 2936, 0x9E3779B185EBCA8DULL, { 0xCCBD1D191EBF98D9ULL, 0x5DE38185D9FD8110ULL } }, /* XSUM_XXH128_testdata[8810] */ + { 2937, 0x0000000000000000ULL, { 0xED8496BFF6CB147AULL, 0x0D53267945286B05ULL } }, /* XSUM_XXH128_testdata[8811] */ + { 2937, 0x000000009E3779B1ULL, { 0x368DF3C0A23BB804ULL, 0x6BBEF6690D5E8848ULL } }, /* XSUM_XXH128_testdata[8812] */ + { 2937, 0x9E3779B185EBCA8DULL, { 0x1B714943D1FA7301ULL, 0xDB4E4C6099358761ULL } }, /* XSUM_XXH128_testdata[8813] */ + { 2938, 0x0000000000000000ULL, { 0x0518732D96C57B48ULL, 0xB8F65323761A49C0ULL } }, /* XSUM_XXH128_testdata[8814] */ + { 2938, 0x000000009E3779B1ULL, { 0xFDAE63C6366C53B1ULL, 0x12E9B8D903D0C3D0ULL } }, /* XSUM_XXH128_testdata[8815] */ + { 2938, 0x9E3779B185EBCA8DULL, { 0x1B6BE8BF3F1DDFB1ULL, 0x1B1A4A45156743D8ULL } }, /* XSUM_XXH128_testdata[8816] */ + { 2939, 0x0000000000000000ULL, { 0xD261DBE24537BD6EULL, 0x30F210CDD0CAF176ULL } }, /* XSUM_XXH128_testdata[8817] */ + { 2939, 0x000000009E3779B1ULL, { 0x3DD7ABE8D03B5AFAULL, 0xB3786B5CD18B2446ULL } }, /* XSUM_XXH128_testdata[8818] */ + { 2939, 0x9E3779B185EBCA8DULL, { 0x12D3216FAD9E2066ULL, 0xF4C325827850F766ULL } }, /* XSUM_XXH128_testdata[8819] */ + { 2940, 0x0000000000000000ULL, { 0x7BA59CE95AA839C3ULL, 0x3624DE767365BCFFULL } }, /* XSUM_XXH128_testdata[8820] */ + { 2940, 0x000000009E3779B1ULL, { 0x86698A840451C1FEULL, 0x7FA9F9B6653FC5E2ULL } }, /* XSUM_XXH128_testdata[8821] */ + { 2940, 0x9E3779B185EBCA8DULL, { 0xE75E35C9A2647D26ULL, 0x5F9B887D26660D32ULL } }, /* XSUM_XXH128_testdata[8822] */ + { 2941, 0x0000000000000000ULL, { 0x0CD6A1AB39128B86ULL, 0x46CCC271059DD389ULL } }, /* XSUM_XXH128_testdata[8823] */ + { 2941, 0x000000009E3779B1ULL, { 0x9360C4698129469DULL, 0xF9CF8541E8986B7EULL } }, /* XSUM_XXH128_testdata[8824] */ + { 2941, 0x9E3779B185EBCA8DULL, { 0x979B859D0D4BFB95ULL, 0x15DC8F016CA9D636ULL } }, /* XSUM_XXH128_testdata[8825] */ + { 2942, 0x0000000000000000ULL, { 0x0943C31E81275520ULL, 0x8E71B84B71D62C7EULL } }, /* XSUM_XXH128_testdata[8826] */ + { 2942, 0x000000009E3779B1ULL, { 0x709BDE4D1E90FA9AULL, 0x21ADAD419D3C1503ULL } }, /* XSUM_XXH128_testdata[8827] */ + { 2942, 0x9E3779B185EBCA8DULL, { 0xDC0CE937B0FA2A17ULL, 0x007E35FA5919DF50ULL } }, /* XSUM_XXH128_testdata[8828] */ + { 2943, 0x0000000000000000ULL, { 0x58DFE07CC7195D4BULL, 0x5BF3E1C0A9074895ULL } }, /* XSUM_XXH128_testdata[8829] */ + { 2943, 0x000000009E3779B1ULL, { 0x65FC0B3CE79D9B08ULL, 0xA0492C6FA8C0198EULL } }, /* XSUM_XXH128_testdata[8830] */ + { 2943, 0x9E3779B185EBCA8DULL, { 0x7B69CA3D51C3C4FDULL, 0x21595001BF9727FDULL } }, /* XSUM_XXH128_testdata[8831] */ + { 2944, 0x0000000000000000ULL, { 0x4A76E054ADB05801ULL, 0x14BC7E33703AEFB3ULL } }, /* XSUM_XXH128_testdata[8832] */ + { 2944, 0x000000009E3779B1ULL, { 0xB60D500D352AE60DULL, 0x3699737616D8D7AFULL } }, /* XSUM_XXH128_testdata[8833] */ + { 2944, 0x9E3779B185EBCA8DULL, { 0x8441D8DB8F90440DULL, 0x7B60132B85756F4BULL } }, /* XSUM_XXH128_testdata[8834] */ + { 2945, 0x0000000000000000ULL, { 0x680E1F01F989965CULL, 0x792D99DFE60D347EULL } }, /* XSUM_XXH128_testdata[8835] */ + { 2945, 0x000000009E3779B1ULL, { 0xE4891C6EB5F71ED5ULL, 0xE683D2F765A09A98ULL } }, /* XSUM_XXH128_testdata[8836] */ + { 2945, 0x9E3779B185EBCA8DULL, { 0xB95BD799C0DB1384ULL, 0xF3FAE1B4C37F3A02ULL } }, /* XSUM_XXH128_testdata[8837] */ + { 2946, 0x0000000000000000ULL, { 0xA4C06C959C025D2CULL, 0xBEC0E77ADFE01C5AULL } }, /* XSUM_XXH128_testdata[8838] */ + { 2946, 0x000000009E3779B1ULL, { 0x0BC5B27F05727FC4ULL, 0x632522FD2F4F8158ULL } }, /* XSUM_XXH128_testdata[8839] */ + { 2946, 0x9E3779B185EBCA8DULL, { 0x79C1D7ECA1AC6553ULL, 0xAE983753ED6881A4ULL } }, /* XSUM_XXH128_testdata[8840] */ + { 2947, 0x0000000000000000ULL, { 0xAB2AEFA418BC2546ULL, 0xA62301D3059D9CABULL } }, /* XSUM_XXH128_testdata[8841] */ + { 2947, 0x000000009E3779B1ULL, { 0x08161E21C93DD56CULL, 0x926D78E5A6ABFBF0ULL } }, /* XSUM_XXH128_testdata[8842] */ + { 2947, 0x9E3779B185EBCA8DULL, { 0x75FCA75B9FDF1FD2ULL, 0x572E6C69786B5F99ULL } }, /* XSUM_XXH128_testdata[8843] */ + { 2948, 0x0000000000000000ULL, { 0x16928BCCA1A24E72ULL, 0x9DEA336CDB8AC1E6ULL } }, /* XSUM_XXH128_testdata[8844] */ + { 2948, 0x000000009E3779B1ULL, { 0x459B0691B10951B1ULL, 0x264DD9E05638AA22ULL } }, /* XSUM_XXH128_testdata[8845] */ + { 2948, 0x9E3779B185EBCA8DULL, { 0x14BBCD4E631C60D4ULL, 0x028B88FBE650181FULL } }, /* XSUM_XXH128_testdata[8846] */ + { 2949, 0x0000000000000000ULL, { 0x7F406076F20DDB9EULL, 0x8FD3D3094B624A21ULL } }, /* XSUM_XXH128_testdata[8847] */ + { 2949, 0x000000009E3779B1ULL, { 0x79396D466ADE3AA2ULL, 0xD6AF532E3F626EA3ULL } }, /* XSUM_XXH128_testdata[8848] */ + { 2949, 0x9E3779B185EBCA8DULL, { 0x4F833CECC66FAA63ULL, 0xC98328BF9A1FC0B3ULL } }, /* XSUM_XXH128_testdata[8849] */ + { 2950, 0x0000000000000000ULL, { 0x006F8F1E8F0251C4ULL, 0x84BEF9D2A6AD90A6ULL } }, /* XSUM_XXH128_testdata[8850] */ + { 2950, 0x000000009E3779B1ULL, { 0x420C4AFA47D3E37FULL, 0x67EDFDF9C87F76FBULL } }, /* XSUM_XXH128_testdata[8851] */ + { 2950, 0x9E3779B185EBCA8DULL, { 0xFC6994E9E8C5B2C5ULL, 0x10BBC2D9426F78FFULL } }, /* XSUM_XXH128_testdata[8852] */ + { 2951, 0x0000000000000000ULL, { 0xEFA253902662DB87ULL, 0xAD8CEAFAA22C8033ULL } }, /* XSUM_XXH128_testdata[8853] */ + { 2951, 0x000000009E3779B1ULL, { 0x57091E64CFE42BE9ULL, 0xB35246FD51DE0EE9ULL } }, /* XSUM_XXH128_testdata[8854] */ + { 2951, 0x9E3779B185EBCA8DULL, { 0x7A570CD29CD1E2B7ULL, 0x95ACC957B28DBC51ULL } }, /* XSUM_XXH128_testdata[8855] */ + { 2952, 0x0000000000000000ULL, { 0xEBB014405B806812ULL, 0x8F6ACEC5086A16E5ULL } }, /* XSUM_XXH128_testdata[8856] */ + { 2952, 0x000000009E3779B1ULL, { 0x75786ACEBA2FAA23ULL, 0xDB65EC8E574FF257ULL } }, /* XSUM_XXH128_testdata[8857] */ + { 2952, 0x9E3779B185EBCA8DULL, { 0x3B46BBCAB608B2CAULL, 0x84C0C7F69805F0BEULL } }, /* XSUM_XXH128_testdata[8858] */ + { 2953, 0x0000000000000000ULL, { 0x3B9A4BFF10FF6AE6ULL, 0x42583612205545B9ULL } }, /* XSUM_XXH128_testdata[8859] */ + { 2953, 0x000000009E3779B1ULL, { 0x13649CF8734B129EULL, 0xCA43C2C2BD91B0CBULL } }, /* XSUM_XXH128_testdata[8860] */ + { 2953, 0x9E3779B185EBCA8DULL, { 0x72004CE62504F78DULL, 0x514263351CC45E39ULL } }, /* XSUM_XXH128_testdata[8861] */ + { 2954, 0x0000000000000000ULL, { 0x48ADBED331F6F056ULL, 0xED772561661D60E3ULL } }, /* XSUM_XXH128_testdata[8862] */ + { 2954, 0x000000009E3779B1ULL, { 0xC84474EE6A491B7EULL, 0xEF0FBB8FDC545DFCULL } }, /* XSUM_XXH128_testdata[8863] */ + { 2954, 0x9E3779B185EBCA8DULL, { 0x289BB372AA8BC4ABULL, 0x881C923CFF9A10E3ULL } }, /* XSUM_XXH128_testdata[8864] */ + { 2955, 0x0000000000000000ULL, { 0xABE41E353F27CDD6ULL, 0xDA1A26670937393DULL } }, /* XSUM_XXH128_testdata[8865] */ + { 2955, 0x000000009E3779B1ULL, { 0x949E0F0B43C31EE0ULL, 0x469B2914FEB0EC7CULL } }, /* XSUM_XXH128_testdata[8866] */ + { 2955, 0x9E3779B185EBCA8DULL, { 0x7B96FF58A34CCC40ULL, 0x90A0FD4A681A8FA8ULL } }, /* XSUM_XXH128_testdata[8867] */ + { 2956, 0x0000000000000000ULL, { 0xB3C1032D86F85248ULL, 0x85915476E356DD08ULL } }, /* XSUM_XXH128_testdata[8868] */ + { 2956, 0x000000009E3779B1ULL, { 0x0C974E1DCADA6F1BULL, 0xAE67F06FDFD95ED3ULL } }, /* XSUM_XXH128_testdata[8869] */ + { 2956, 0x9E3779B185EBCA8DULL, { 0x37AA261ABE5D9178ULL, 0x5B8251A16F149225ULL } }, /* XSUM_XXH128_testdata[8870] */ + { 2957, 0x0000000000000000ULL, { 0xF54E143C8A968519ULL, 0x79FE0CB5ABF28241ULL } }, /* XSUM_XXH128_testdata[8871] */ + { 2957, 0x000000009E3779B1ULL, { 0xD37D0019F81B1584ULL, 0x9BF701D5323BB6C3ULL } }, /* XSUM_XXH128_testdata[8872] */ + { 2957, 0x9E3779B185EBCA8DULL, { 0xC280CA2CF4268637ULL, 0xD0B51E68D85464F7ULL } }, /* XSUM_XXH128_testdata[8873] */ + { 2958, 0x0000000000000000ULL, { 0x06E07E5DCFB1E33CULL, 0xEA3977C1EAC4A0D4ULL } }, /* XSUM_XXH128_testdata[8874] */ + { 2958, 0x000000009E3779B1ULL, { 0x1465CF368037B5C3ULL, 0xCEFBA526E983DD1FULL } }, /* XSUM_XXH128_testdata[8875] */ + { 2958, 0x9E3779B185EBCA8DULL, { 0xB3A571D5054CA644ULL, 0x0DA61A858BC8579AULL } }, /* XSUM_XXH128_testdata[8876] */ + { 2959, 0x0000000000000000ULL, { 0x6F5CA95AC200CD6CULL, 0x2751164D51C9EEA9ULL } }, /* XSUM_XXH128_testdata[8877] */ + { 2959, 0x000000009E3779B1ULL, { 0x60DBE34A6E32C1DAULL, 0x0A1A483CABFD9D61ULL } }, /* XSUM_XXH128_testdata[8878] */ + { 2959, 0x9E3779B185EBCA8DULL, { 0x69A0F7A810B65584ULL, 0x9461A3A461A81E2CULL } }, /* XSUM_XXH128_testdata[8879] */ + { 2960, 0x0000000000000000ULL, { 0x43FD02C0E22DA2DFULL, 0x53980F4DA6583395ULL } }, /* XSUM_XXH128_testdata[8880] */ + { 2960, 0x000000009E3779B1ULL, { 0xC95BFA533943182CULL, 0x71D1AEDCAEBB12E1ULL } }, /* XSUM_XXH128_testdata[8881] */ + { 2960, 0x9E3779B185EBCA8DULL, { 0x7CAB8C4CC74C30C8ULL, 0x1B50385C82548D72ULL } }, /* XSUM_XXH128_testdata[8882] */ + { 2961, 0x0000000000000000ULL, { 0x1F227D712B0174FFULL, 0x6A762F526E165072ULL } }, /* XSUM_XXH128_testdata[8883] */ + { 2961, 0x000000009E3779B1ULL, { 0x0C9C814DD97E0275ULL, 0x34EF4987C682275CULL } }, /* XSUM_XXH128_testdata[8884] */ + { 2961, 0x9E3779B185EBCA8DULL, { 0xD9073AE57337F53CULL, 0x43EE37C238F8293DULL } }, /* XSUM_XXH128_testdata[8885] */ + { 2962, 0x0000000000000000ULL, { 0xE258AC71EA94A519ULL, 0x76765129329AC492ULL } }, /* XSUM_XXH128_testdata[8886] */ + { 2962, 0x000000009E3779B1ULL, { 0xA277FD166820B884ULL, 0xE465892EFEF2609AULL } }, /* XSUM_XXH128_testdata[8887] */ + { 2962, 0x9E3779B185EBCA8DULL, { 0x4B29A6C7737461E0ULL, 0x76741A70728295B2ULL } }, /* XSUM_XXH128_testdata[8888] */ + { 2963, 0x0000000000000000ULL, { 0x73821F123EAA5BCDULL, 0xEE3CC7E6F97B5A89ULL } }, /* XSUM_XXH128_testdata[8889] */ + { 2963, 0x000000009E3779B1ULL, { 0xC3206D79CA0A02F2ULL, 0x50D4EA4B2E2B823EULL } }, /* XSUM_XXH128_testdata[8890] */ + { 2963, 0x9E3779B185EBCA8DULL, { 0xC216558938EF5BA1ULL, 0x1934F86B35982BCDULL } }, /* XSUM_XXH128_testdata[8891] */ + { 2964, 0x0000000000000000ULL, { 0xB8670BFE99897050ULL, 0x7349CF46A74019D7ULL } }, /* XSUM_XXH128_testdata[8892] */ + { 2964, 0x000000009E3779B1ULL, { 0xF2083DB92E490258ULL, 0x4D0759AB7BD70A16ULL } }, /* XSUM_XXH128_testdata[8893] */ + { 2964, 0x9E3779B185EBCA8DULL, { 0x4B2339A54EF3C147ULL, 0xC5470090467F78ACULL } }, /* XSUM_XXH128_testdata[8894] */ + { 2965, 0x0000000000000000ULL, { 0x350AEDE785B8945FULL, 0xC8CB48A3D102EE4AULL } }, /* XSUM_XXH128_testdata[8895] */ + { 2965, 0x000000009E3779B1ULL, { 0x91950C3E8B7C9375ULL, 0x8E8BD6B09B677B44ULL } }, /* XSUM_XXH128_testdata[8896] */ + { 2965, 0x9E3779B185EBCA8DULL, { 0xD77179604E547276ULL, 0x786E76FFB3654870ULL } }, /* XSUM_XXH128_testdata[8897] */ + { 2966, 0x0000000000000000ULL, { 0x01E9D910AA7B1E8AULL, 0x264ADF90B52588D3ULL } }, /* XSUM_XXH128_testdata[8898] */ + { 2966, 0x000000009E3779B1ULL, { 0x1F4F3DA30A86D17EULL, 0x8C7B59B4368F4F49ULL } }, /* XSUM_XXH128_testdata[8899] */ + { 2966, 0x9E3779B185EBCA8DULL, { 0xB9F2F7F6A64C5F94ULL, 0xC005296544FC8CC2ULL } }, /* XSUM_XXH128_testdata[8900] */ + { 2967, 0x0000000000000000ULL, { 0x5F4FF3856B78A4FEULL, 0xBDC7F78968969392ULL } }, /* XSUM_XXH128_testdata[8901] */ + { 2967, 0x000000009E3779B1ULL, { 0xE36E9E17E4AFF1A8ULL, 0xACB1165581FE1CBCULL } }, /* XSUM_XXH128_testdata[8902] */ + { 2967, 0x9E3779B185EBCA8DULL, { 0x71C8AD9C2F67484EULL, 0xE34C76ED6333D978ULL } }, /* XSUM_XXH128_testdata[8903] */ + { 2968, 0x0000000000000000ULL, { 0x10A3909BD2B6FED3ULL, 0x5A61F83C570F30D9ULL } }, /* XSUM_XXH128_testdata[8904] */ + { 2968, 0x000000009E3779B1ULL, { 0xD39131E46B414D8CULL, 0x3385A383926259FAULL } }, /* XSUM_XXH128_testdata[8905] */ + { 2968, 0x9E3779B185EBCA8DULL, { 0x19B33D48681B4F8CULL, 0xAC621B9C5B9A20B7ULL } }, /* XSUM_XXH128_testdata[8906] */ + { 2969, 0x0000000000000000ULL, { 0x891109FF2CD1F81AULL, 0x3946BC77081E4170ULL } }, /* XSUM_XXH128_testdata[8907] */ + { 2969, 0x000000009E3779B1ULL, { 0x9F4AA17352660082ULL, 0x5E1B536E51323153ULL } }, /* XSUM_XXH128_testdata[8908] */ + { 2969, 0x9E3779B185EBCA8DULL, { 0xAE5019A2ECCAC731ULL, 0xD8E5955B4D952636ULL } }, /* XSUM_XXH128_testdata[8909] */ + { 2970, 0x0000000000000000ULL, { 0x773DC838314988EEULL, 0xD6EA56331C7A8924ULL } }, /* XSUM_XXH128_testdata[8910] */ + { 2970, 0x000000009E3779B1ULL, { 0xF8A0D156356CEF2FULL, 0x2F15A1D1F2CF97AFULL } }, /* XSUM_XXH128_testdata[8911] */ + { 2970, 0x9E3779B185EBCA8DULL, { 0xAB15925E641C6538ULL, 0xF24031E3A42ED2CEULL } }, /* XSUM_XXH128_testdata[8912] */ + { 2971, 0x0000000000000000ULL, { 0x55F595FDC543E155ULL, 0x259742EB2279D178ULL } }, /* XSUM_XXH128_testdata[8913] */ + { 2971, 0x000000009E3779B1ULL, { 0x2F27F7AF1ACD955AULL, 0x0E16E4EE0ECF2164ULL } }, /* XSUM_XXH128_testdata[8914] */ + { 2971, 0x9E3779B185EBCA8DULL, { 0x02C8C5C1900C7F1DULL, 0x077D86681C0602F7ULL } }, /* XSUM_XXH128_testdata[8915] */ + { 2972, 0x0000000000000000ULL, { 0x10738BBD06F66724ULL, 0xC688F60F6BACC7A3ULL } }, /* XSUM_XXH128_testdata[8916] */ + { 2972, 0x000000009E3779B1ULL, { 0xD08BC2B5A539530EULL, 0xEF0D3C1E9A60EDDAULL } }, /* XSUM_XXH128_testdata[8917] */ + { 2972, 0x9E3779B185EBCA8DULL, { 0x35B3371D7EB05CC4ULL, 0xFFE5070CE95B2541ULL } }, /* XSUM_XXH128_testdata[8918] */ + { 2973, 0x0000000000000000ULL, { 0x4B7A87BA2A49557FULL, 0xE61AC5BB68C70F70ULL } }, /* XSUM_XXH128_testdata[8919] */ + { 2973, 0x000000009E3779B1ULL, { 0xF631E73109150903ULL, 0x4D25C84D594B3C42ULL } }, /* XSUM_XXH128_testdata[8920] */ + { 2973, 0x9E3779B185EBCA8DULL, { 0xE27FF33B45CC8234ULL, 0x48E185EA0BA85D19ULL } }, /* XSUM_XXH128_testdata[8921] */ + { 2974, 0x0000000000000000ULL, { 0xAC6BDA0C97618B0CULL, 0x922AFA879B1A5E66ULL } }, /* XSUM_XXH128_testdata[8922] */ + { 2974, 0x000000009E3779B1ULL, { 0xC981679107D8A746ULL, 0xA4556A83E9BBCA82ULL } }, /* XSUM_XXH128_testdata[8923] */ + { 2974, 0x9E3779B185EBCA8DULL, { 0xA1366887D230130DULL, 0x6188D626001ADCD9ULL } }, /* XSUM_XXH128_testdata[8924] */ + { 2975, 0x0000000000000000ULL, { 0xB04EF32B4BE0890DULL, 0xCFEF4C33B6702BB9ULL } }, /* XSUM_XXH128_testdata[8925] */ + { 2975, 0x000000009E3779B1ULL, { 0xAC760D27933D741EULL, 0x07CFAC84E0481EA6ULL } }, /* XSUM_XXH128_testdata[8926] */ + { 2975, 0x9E3779B185EBCA8DULL, { 0xBAEFD0D4E7EA0EBFULL, 0xA24AB377D6C1E8CFULL } }, /* XSUM_XXH128_testdata[8927] */ + { 2976, 0x0000000000000000ULL, { 0xFA45F5F6DD5D8913ULL, 0x1F51794290552D63ULL } }, /* XSUM_XXH128_testdata[8928] */ + { 2976, 0x000000009E3779B1ULL, { 0xAC92D73D85A3D61CULL, 0xB106D2A26B0AB26DULL } }, /* XSUM_XXH128_testdata[8929] */ + { 2976, 0x9E3779B185EBCA8DULL, { 0xA58C343D872636C5ULL, 0xB7CEB9240D8CD05AULL } }, /* XSUM_XXH128_testdata[8930] */ + { 2977, 0x0000000000000000ULL, { 0x3DF4C00C299B3601ULL, 0x5E46526FE341E175ULL } }, /* XSUM_XXH128_testdata[8931] */ + { 2977, 0x000000009E3779B1ULL, { 0xCF25120BAD2E8898ULL, 0x75385DE832B82D74ULL } }, /* XSUM_XXH128_testdata[8932] */ + { 2977, 0x9E3779B185EBCA8DULL, { 0x0D6370493E3E3961ULL, 0xCE849683FE162397ULL } }, /* XSUM_XXH128_testdata[8933] */ + { 2978, 0x0000000000000000ULL, { 0x973ED2696A9742C9ULL, 0x1D8D9D65C5CAFB6DULL } }, /* XSUM_XXH128_testdata[8934] */ + { 2978, 0x000000009E3779B1ULL, { 0x1C6B6D28BCFB8108ULL, 0xF3AA8E1350134C33ULL } }, /* XSUM_XXH128_testdata[8935] */ + { 2978, 0x9E3779B185EBCA8DULL, { 0xDD813B4FC767EB80ULL, 0x08803BD50ACC08A6ULL } }, /* XSUM_XXH128_testdata[8936] */ + { 2979, 0x0000000000000000ULL, { 0xDDDB9B2A22EF8D7FULL, 0x6E890C7925242C1FULL } }, /* XSUM_XXH128_testdata[8937] */ + { 2979, 0x000000009E3779B1ULL, { 0xD25F193B6D5BA1C7ULL, 0x0F3F34DD41CCD375ULL } }, /* XSUM_XXH128_testdata[8938] */ + { 2979, 0x9E3779B185EBCA8DULL, { 0xA025A99A14FD30A9ULL, 0xEF8405452B6DB6EAULL } }, /* XSUM_XXH128_testdata[8939] */ + { 2980, 0x0000000000000000ULL, { 0x3E90C1E8E2F00671ULL, 0x5D035B6AC8408DB5ULL } }, /* XSUM_XXH128_testdata[8940] */ + { 2980, 0x000000009E3779B1ULL, { 0x5CB809134FDD0920ULL, 0xEA7F0928278167C3ULL } }, /* XSUM_XXH128_testdata[8941] */ + { 2980, 0x9E3779B185EBCA8DULL, { 0x9357B6B8987937EFULL, 0x4EB3CA943810CD72ULL } }, /* XSUM_XXH128_testdata[8942] */ + { 2981, 0x0000000000000000ULL, { 0x0DF4B30E83CDFAADULL, 0x283C32BB3607A6DDULL } }, /* XSUM_XXH128_testdata[8943] */ + { 2981, 0x000000009E3779B1ULL, { 0xA5A4BB3B6FE19562ULL, 0x03185141C2442800ULL } }, /* XSUM_XXH128_testdata[8944] */ + { 2981, 0x9E3779B185EBCA8DULL, { 0x354FA2D2070B8EBFULL, 0x569D77010294B95DULL } }, /* XSUM_XXH128_testdata[8945] */ + { 2982, 0x0000000000000000ULL, { 0xCD64CC85D330BB10ULL, 0x7578EEF20815C16FULL } }, /* XSUM_XXH128_testdata[8946] */ + { 2982, 0x000000009E3779B1ULL, { 0x12410F91EE55429FULL, 0x80092DFC3F1CFCA6ULL } }, /* XSUM_XXH128_testdata[8947] */ + { 2982, 0x9E3779B185EBCA8DULL, { 0x76120161E0167446ULL, 0x958EC43C1D08E574ULL } }, /* XSUM_XXH128_testdata[8948] */ + { 2983, 0x0000000000000000ULL, { 0xE6442ADA820FDED9ULL, 0xA2168F1589150701ULL } }, /* XSUM_XXH128_testdata[8949] */ + { 2983, 0x000000009E3779B1ULL, { 0x05910F11A629C2EAULL, 0x302F39E6BFC92794ULL } }, /* XSUM_XXH128_testdata[8950] */ + { 2983, 0x9E3779B185EBCA8DULL, { 0x4A1A16B2DF9813EEULL, 0x8755F1C66AFA7DC9ULL } }, /* XSUM_XXH128_testdata[8951] */ + { 2984, 0x0000000000000000ULL, { 0x1F1F8D1837A6E627ULL, 0xAEA74F73BB1E6FB1ULL } }, /* XSUM_XXH128_testdata[8952] */ + { 2984, 0x000000009E3779B1ULL, { 0xE00168A17930D386ULL, 0x879F43B8F2CDBE72ULL } }, /* XSUM_XXH128_testdata[8953] */ + { 2984, 0x9E3779B185EBCA8DULL, { 0xF183248EF277F11FULL, 0x732B9B709D55DE29ULL } }, /* XSUM_XXH128_testdata[8954] */ + { 2985, 0x0000000000000000ULL, { 0xA54E84B3E626BC14ULL, 0x666467238827F395ULL } }, /* XSUM_XXH128_testdata[8955] */ + { 2985, 0x000000009E3779B1ULL, { 0x96E35EB2BA0D95BCULL, 0x154B11C331C1E13AULL } }, /* XSUM_XXH128_testdata[8956] */ + { 2985, 0x9E3779B185EBCA8DULL, { 0x5E570299E42A17ADULL, 0x1BCB6CD11BFBE1F8ULL } }, /* XSUM_XXH128_testdata[8957] */ + { 2986, 0x0000000000000000ULL, { 0x729FE02D49B315F5ULL, 0x8D4BA7335F711238ULL } }, /* XSUM_XXH128_testdata[8958] */ + { 2986, 0x000000009E3779B1ULL, { 0x131270CD91F6854EULL, 0x564C77B094FFDD86ULL } }, /* XSUM_XXH128_testdata[8959] */ + { 2986, 0x9E3779B185EBCA8DULL, { 0x78E1C8124E2B1FECULL, 0x6CF405217D465BE1ULL } }, /* XSUM_XXH128_testdata[8960] */ + { 2987, 0x0000000000000000ULL, { 0x74FED483ED5A315AULL, 0x2D9197F92280C789ULL } }, /* XSUM_XXH128_testdata[8961] */ + { 2987, 0x000000009E3779B1ULL, { 0xD6DC2B762314B7FFULL, 0x2B186CC65B66C349ULL } }, /* XSUM_XXH128_testdata[8962] */ + { 2987, 0x9E3779B185EBCA8DULL, { 0x63780DA1AD3A7530ULL, 0x8F34BB97CB6C3CBCULL } }, /* XSUM_XXH128_testdata[8963] */ + { 2988, 0x0000000000000000ULL, { 0x6EE24DA5C58D40EBULL, 0x88A0A83D9F5A0088ULL } }, /* XSUM_XXH128_testdata[8964] */ + { 2988, 0x000000009E3779B1ULL, { 0x67EF4D1893CFFF51ULL, 0x9262DE4EF2365141ULL } }, /* XSUM_XXH128_testdata[8965] */ + { 2988, 0x9E3779B185EBCA8DULL, { 0x53B4A2299704976FULL, 0x56836E85EAE1D1D1ULL } }, /* XSUM_XXH128_testdata[8966] */ + { 2989, 0x0000000000000000ULL, { 0xDF9396E9CB33F25DULL, 0x455EB8288D5A5D4AULL } }, /* XSUM_XXH128_testdata[8967] */ + { 2989, 0x000000009E3779B1ULL, { 0xBDE3B419F92920A5ULL, 0x9177274D94519B50ULL } }, /* XSUM_XXH128_testdata[8968] */ + { 2989, 0x9E3779B185EBCA8DULL, { 0xBE9AB6ADD058F5E5ULL, 0xCFC21BC29D2021EFULL } }, /* XSUM_XXH128_testdata[8969] */ + { 2990, 0x0000000000000000ULL, { 0x488A3DB0190C2AF7ULL, 0xC6C4B003D8868F2CULL } }, /* XSUM_XXH128_testdata[8970] */ + { 2990, 0x000000009E3779B1ULL, { 0xF12E787A91DDE718ULL, 0xA2A1B4956425472AULL } }, /* XSUM_XXH128_testdata[8971] */ + { 2990, 0x9E3779B185EBCA8DULL, { 0xE023AA8311308C98ULL, 0x4B520EEAD705DCC7ULL } }, /* XSUM_XXH128_testdata[8972] */ + { 2991, 0x0000000000000000ULL, { 0xE88A7AE31E1B3C03ULL, 0x6E155FDA6A01704AULL } }, /* XSUM_XXH128_testdata[8973] */ + { 2991, 0x000000009E3779B1ULL, { 0x7CECDD49003508CFULL, 0x9026B20B92C44EC0ULL } }, /* XSUM_XXH128_testdata[8974] */ + { 2991, 0x9E3779B185EBCA8DULL, { 0x3AAE2857DD0842FDULL, 0x884D15DBBFC09C39ULL } }, /* XSUM_XXH128_testdata[8975] */ + { 2992, 0x0000000000000000ULL, { 0xAAB44EC10D54893AULL, 0x59174147AF373FE1ULL } }, /* XSUM_XXH128_testdata[8976] */ + { 2992, 0x000000009E3779B1ULL, { 0x7C01647526BD92EDULL, 0x7E858B8A6217B465ULL } }, /* XSUM_XXH128_testdata[8977] */ + { 2992, 0x9E3779B185EBCA8DULL, { 0x70D3504445732DBCULL, 0x9E0B47F37987EDC5ULL } }, /* XSUM_XXH128_testdata[8978] */ + { 2993, 0x0000000000000000ULL, { 0x0065EDB278F462B0ULL, 0x6D47A9C85229B2B1ULL } }, /* XSUM_XXH128_testdata[8979] */ + { 2993, 0x000000009E3779B1ULL, { 0x0CC941CCCB77D877ULL, 0x91707319C28D3FB8ULL } }, /* XSUM_XXH128_testdata[8980] */ + { 2993, 0x9E3779B185EBCA8DULL, { 0x7DB5A87970B6B6FDULL, 0xCA9756FD9BCE1F3EULL } }, /* XSUM_XXH128_testdata[8981] */ + { 2994, 0x0000000000000000ULL, { 0x81D350FEF6FD05B7ULL, 0xB6F14BC588D7ECD2ULL } }, /* XSUM_XXH128_testdata[8982] */ + { 2994, 0x000000009E3779B1ULL, { 0xE9E4C7CE1EB912ECULL, 0xED381C600B183F19ULL } }, /* XSUM_XXH128_testdata[8983] */ + { 2994, 0x9E3779B185EBCA8DULL, { 0x7E59DF9453895B26ULL, 0x19CB8A8611181F81ULL } }, /* XSUM_XXH128_testdata[8984] */ + { 2995, 0x0000000000000000ULL, { 0xBEB814BD7EFCDD21ULL, 0x59F3771701F5DE45ULL } }, /* XSUM_XXH128_testdata[8985] */ + { 2995, 0x000000009E3779B1ULL, { 0x75D05C024BB1A7DCULL, 0x0D39107B9275298EULL } }, /* XSUM_XXH128_testdata[8986] */ + { 2995, 0x9E3779B185EBCA8DULL, { 0x3872DF50F3B4D9A4ULL, 0x7A570F68B42EC57DULL } }, /* XSUM_XXH128_testdata[8987] */ + { 2996, 0x0000000000000000ULL, { 0xA4E7165D54A94B2CULL, 0x9EF2DF69F49019A0ULL } }, /* XSUM_XXH128_testdata[8988] */ + { 2996, 0x000000009E3779B1ULL, { 0x3D5BF677C73BB075ULL, 0x03DA27380F46A31FULL } }, /* XSUM_XXH128_testdata[8989] */ + { 2996, 0x9E3779B185EBCA8DULL, { 0x83E8155E769985B4ULL, 0xFA48452217534166ULL } }, /* XSUM_XXH128_testdata[8990] */ + { 2997, 0x0000000000000000ULL, { 0xF69CCD46A0C66AC5ULL, 0xADFD5283EC62E194ULL } }, /* XSUM_XXH128_testdata[8991] */ + { 2997, 0x000000009E3779B1ULL, { 0xF920827A2611C096ULL, 0x1B48BFD42853303BULL } }, /* XSUM_XXH128_testdata[8992] */ + { 2997, 0x9E3779B185EBCA8DULL, { 0x2152D5835CA1F62EULL, 0xFEAA8D2BE7DC5362ULL } }, /* XSUM_XXH128_testdata[8993] */ + { 2998, 0x0000000000000000ULL, { 0x13D37A8060290967ULL, 0x2E71825EFB14AD1AULL } }, /* XSUM_XXH128_testdata[8994] */ + { 2998, 0x000000009E3779B1ULL, { 0xE46464B714A9CB0AULL, 0xF37316A51355897CULL } }, /* XSUM_XXH128_testdata[8995] */ + { 2998, 0x9E3779B185EBCA8DULL, { 0x00AA1AD532A9A220ULL, 0xED52723B97AB3698ULL } }, /* XSUM_XXH128_testdata[8996] */ + { 2999, 0x0000000000000000ULL, { 0xFBF8E37174E7CBE0ULL, 0xB471CACDA4DA4BA2ULL } }, /* XSUM_XXH128_testdata[8997] */ + { 2999, 0x000000009E3779B1ULL, { 0x2526BA7BC6EF2486ULL, 0xF0CB66537A2D4608ULL } }, /* XSUM_XXH128_testdata[8998] */ + { 2999, 0x9E3779B185EBCA8DULL, { 0xD0A29ADBC80300A4ULL, 0x097785426BD15300ULL } }, /* XSUM_XXH128_testdata[8999] */ + { 3000, 0x0000000000000000ULL, { 0x120A15F4CBD5A736ULL, 0x0CD29F36CCF9BDE6ULL } }, /* XSUM_XXH128_testdata[9000] */ + { 3000, 0x000000009E3779B1ULL, { 0x487EF66883FB6F86ULL, 0x3D82CA54D0B2490FULL } }, /* XSUM_XXH128_testdata[9001] */ + { 3000, 0x9E3779B185EBCA8DULL, { 0xB84AA460C0E807F1ULL, 0xFA6638ECFCB88254ULL } }, /* XSUM_XXH128_testdata[9002] */ + { 3001, 0x0000000000000000ULL, { 0x7D9993DA4C537BC5ULL, 0x7B25FECED32E29C4ULL } }, /* XSUM_XXH128_testdata[9003] */ + { 3001, 0x000000009E3779B1ULL, { 0x425DE1D33E8798F9ULL, 0x0DA582BE7EA6DA50ULL } }, /* XSUM_XXH128_testdata[9004] */ + { 3001, 0x9E3779B185EBCA8DULL, { 0xDE2FB45CBA95F913ULL, 0x589D1F7322A037F7ULL } }, /* XSUM_XXH128_testdata[9005] */ + { 3002, 0x0000000000000000ULL, { 0x54424A1161D69445ULL, 0xDEE9592939A54846ULL } }, /* XSUM_XXH128_testdata[9006] */ + { 3002, 0x000000009E3779B1ULL, { 0x9DE47E01E702FC48ULL, 0xD6FEB517F9B7C672ULL } }, /* XSUM_XXH128_testdata[9007] */ + { 3002, 0x9E3779B185EBCA8DULL, { 0x5F2D667FA1A2146CULL, 0xCB1C36279BFD21D0ULL } }, /* XSUM_XXH128_testdata[9008] */ + { 3003, 0x0000000000000000ULL, { 0x9E513BFD6058A2A7ULL, 0x23A6EF6309F3AB03ULL } }, /* XSUM_XXH128_testdata[9009] */ + { 3003, 0x000000009E3779B1ULL, { 0x624798EA1EAEDBC9ULL, 0xEBCBB8C8E39E6CEEULL } }, /* XSUM_XXH128_testdata[9010] */ + { 3003, 0x9E3779B185EBCA8DULL, { 0xCBF5BADE7FCB38FEULL, 0x3A734BE477DCBCBDULL } }, /* XSUM_XXH128_testdata[9011] */ + { 3004, 0x0000000000000000ULL, { 0x289460C19CE6733BULL, 0xF876D3B7AA77837BULL } }, /* XSUM_XXH128_testdata[9012] */ + { 3004, 0x000000009E3779B1ULL, { 0xE57A4E9471050EA6ULL, 0x8C259CCDC86D4754ULL } }, /* XSUM_XXH128_testdata[9013] */ + { 3004, 0x9E3779B185EBCA8DULL, { 0x1948A67656A4E2E2ULL, 0x293D8BB57642E06FULL } }, /* XSUM_XXH128_testdata[9014] */ + { 3005, 0x0000000000000000ULL, { 0xB55D673EBCF611F6ULL, 0xDEF34A1F8879B620ULL } }, /* XSUM_XXH128_testdata[9015] */ + { 3005, 0x000000009E3779B1ULL, { 0x3F424D168FC74438ULL, 0xC026A7B27520DBA9ULL } }, /* XSUM_XXH128_testdata[9016] */ + { 3005, 0x9E3779B185EBCA8DULL, { 0xCE30C9FE31493EB3ULL, 0x89E7D425FC27D642ULL } }, /* XSUM_XXH128_testdata[9017] */ + { 3006, 0x0000000000000000ULL, { 0x079CAF50E31D73B0ULL, 0x1527779B526D1351ULL } }, /* XSUM_XXH128_testdata[9018] */ + { 3006, 0x000000009E3779B1ULL, { 0xBEC11E162D80EDB4ULL, 0x9ECCB6467BFEA343ULL } }, /* XSUM_XXH128_testdata[9019] */ + { 3006, 0x9E3779B185EBCA8DULL, { 0x75638175D0ADD699ULL, 0x49FC2CED689D8D8DULL } }, /* XSUM_XXH128_testdata[9020] */ + { 3007, 0x0000000000000000ULL, { 0x8D9A798A827FF464ULL, 0xFA88EE42A5A154DDULL } }, /* XSUM_XXH128_testdata[9021] */ + { 3007, 0x000000009E3779B1ULL, { 0x959D1606732E04C9ULL, 0x1E8E5B7843D851B3ULL } }, /* XSUM_XXH128_testdata[9022] */ + { 3007, 0x9E3779B185EBCA8DULL, { 0xDF0F7D428DB03369ULL, 0xFC92D4E58CF9EFECULL } }, /* XSUM_XXH128_testdata[9023] */ + { 3008, 0x0000000000000000ULL, { 0x032A128E0003C6CCULL, 0xE57BA7944FCDB054ULL } }, /* XSUM_XXH128_testdata[9024] */ + { 3008, 0x000000009E3779B1ULL, { 0x7A37E37A51007B4AULL, 0xD61F954D1CCEC81AULL } }, /* XSUM_XXH128_testdata[9025] */ + { 3008, 0x9E3779B185EBCA8DULL, { 0x1B392BBB2F4F7265ULL, 0xDEA242B0725F2FB0ULL } }, /* XSUM_XXH128_testdata[9026] */ + { 3009, 0x0000000000000000ULL, { 0x71B96ED13C84B7A6ULL, 0x593AB8BD32190FDBULL } }, /* XSUM_XXH128_testdata[9027] */ + { 3009, 0x000000009E3779B1ULL, { 0x5C00FDD37D739C46ULL, 0xCC957A10D6327CFAULL } }, /* XSUM_XXH128_testdata[9028] */ + { 3009, 0x9E3779B185EBCA8DULL, { 0x99198184E43578D1ULL, 0x86ABD768551497BEULL } }, /* XSUM_XXH128_testdata[9029] */ + { 3010, 0x0000000000000000ULL, { 0x8BCAB6A425108497ULL, 0x0686F80D3FA41367ULL } }, /* XSUM_XXH128_testdata[9030] */ + { 3010, 0x000000009E3779B1ULL, { 0x4B83E89DB2902719ULL, 0x7D78D4465315F024ULL } }, /* XSUM_XXH128_testdata[9031] */ + { 3010, 0x9E3779B185EBCA8DULL, { 0xF23991A244685F08ULL, 0x92C25000B779E881ULL } }, /* XSUM_XXH128_testdata[9032] */ + { 3011, 0x0000000000000000ULL, { 0x2A1C0F57BFC2D83AULL, 0x23427A4A1E9494A5ULL } }, /* XSUM_XXH128_testdata[9033] */ + { 3011, 0x000000009E3779B1ULL, { 0xF50CF3401431990FULL, 0x893D23FC87633EBEULL } }, /* XSUM_XXH128_testdata[9034] */ + { 3011, 0x9E3779B185EBCA8DULL, { 0x2C6F1F48D5EF740FULL, 0x25810DC1E79D6913ULL } }, /* XSUM_XXH128_testdata[9035] */ + { 3012, 0x0000000000000000ULL, { 0x2727AE494F5A75FEULL, 0xF21E344608AF8AB4ULL } }, /* XSUM_XXH128_testdata[9036] */ + { 3012, 0x000000009E3779B1ULL, { 0x0F093E11B457AE4DULL, 0x44216EC55D5DA6BFULL } }, /* XSUM_XXH128_testdata[9037] */ + { 3012, 0x9E3779B185EBCA8DULL, { 0xC69CB787B7281DF4ULL, 0x00DE3B6728738338ULL } }, /* XSUM_XXH128_testdata[9038] */ + { 3013, 0x0000000000000000ULL, { 0x4DE3E131E4BD2EDFULL, 0x2DB40FC4D047D0A4ULL } }, /* XSUM_XXH128_testdata[9039] */ + { 3013, 0x000000009E3779B1ULL, { 0xDD8CF9B841ADE88DULL, 0xF351A66F103F7FFBULL } }, /* XSUM_XXH128_testdata[9040] */ + { 3013, 0x9E3779B185EBCA8DULL, { 0x78AEA8833E396C88ULL, 0x0B3BF41CF08267CAULL } }, /* XSUM_XXH128_testdata[9041] */ + { 3014, 0x0000000000000000ULL, { 0xDDE4CAEA2A781517ULL, 0xB1668DAE3B448E52ULL } }, /* XSUM_XXH128_testdata[9042] */ + { 3014, 0x000000009E3779B1ULL, { 0x90BE61A34BD67858ULL, 0x21C8F0B3C615C8FCULL } }, /* XSUM_XXH128_testdata[9043] */ + { 3014, 0x9E3779B185EBCA8DULL, { 0xC0A851C6413BD17CULL, 0x75564E7CF8EB3E9CULL } }, /* XSUM_XXH128_testdata[9044] */ + { 3015, 0x0000000000000000ULL, { 0xF44B7A75661491C6ULL, 0x2FAB2E3D52C11D63ULL } }, /* XSUM_XXH128_testdata[9045] */ + { 3015, 0x000000009E3779B1ULL, { 0x34FDA9C397DF08F9ULL, 0x092E747DDD44982FULL } }, /* XSUM_XXH128_testdata[9046] */ + { 3015, 0x9E3779B185EBCA8DULL, { 0x6ADDF0491196D913ULL, 0x995A4D08FB12BB42ULL } }, /* XSUM_XXH128_testdata[9047] */ + { 3016, 0x0000000000000000ULL, { 0x157BA455BB39FAB5ULL, 0x4243EA8CFA19FC75ULL } }, /* XSUM_XXH128_testdata[9048] */ + { 3016, 0x000000009E3779B1ULL, { 0x62812314120511F9ULL, 0xA03D43D945493A33ULL } }, /* XSUM_XXH128_testdata[9049] */ + { 3016, 0x9E3779B185EBCA8DULL, { 0xA211324DF0557420ULL, 0x710404AEA0E511E4ULL } }, /* XSUM_XXH128_testdata[9050] */ + { 3017, 0x0000000000000000ULL, { 0x2F8C767875C1963BULL, 0xF6DF9B284FE61A41ULL } }, /* XSUM_XXH128_testdata[9051] */ + { 3017, 0x000000009E3779B1ULL, { 0x07ED9ABB8ABFE8B9ULL, 0x0CF773D53A39E67DULL } }, /* XSUM_XXH128_testdata[9052] */ + { 3017, 0x9E3779B185EBCA8DULL, { 0x32ED4EDDC3D0EBE9ULL, 0x69A673AA79BC0734ULL } }, /* XSUM_XXH128_testdata[9053] */ + { 3018, 0x0000000000000000ULL, { 0x3D2AC11529277793ULL, 0xE75E7D6004CE6695ULL } }, /* XSUM_XXH128_testdata[9054] */ + { 3018, 0x000000009E3779B1ULL, { 0x177F8FDB8779C86CULL, 0x3E1A5465173303AEULL } }, /* XSUM_XXH128_testdata[9055] */ + { 3018, 0x9E3779B185EBCA8DULL, { 0xEFD99140F72AFA32ULL, 0x2206EB32897258DBULL } }, /* XSUM_XXH128_testdata[9056] */ + { 3019, 0x0000000000000000ULL, { 0x0F92385982E5763EULL, 0xC49C847631A91987ULL } }, /* XSUM_XXH128_testdata[9057] */ + { 3019, 0x000000009E3779B1ULL, { 0x00822263413D42E0ULL, 0xD6E8CDC544DF7677ULL } }, /* XSUM_XXH128_testdata[9058] */ + { 3019, 0x9E3779B185EBCA8DULL, { 0xAA9CAC946BCFD58AULL, 0x4820B0D14382B4CEULL } }, /* XSUM_XXH128_testdata[9059] */ + { 3020, 0x0000000000000000ULL, { 0xFFCD172FC10CC01EULL, 0x0A0A4E0145B11AAFULL } }, /* XSUM_XXH128_testdata[9060] */ + { 3020, 0x000000009E3779B1ULL, { 0x62441AB068655C66ULL, 0x7C8EF0A97A264C7BULL } }, /* XSUM_XXH128_testdata[9061] */ + { 3020, 0x9E3779B185EBCA8DULL, { 0x72BE9E8C15D00463ULL, 0x6A2193C845E036DEULL } }, /* XSUM_XXH128_testdata[9062] */ + { 3021, 0x0000000000000000ULL, { 0xED5D86E0B3185A9CULL, 0xBDD761F5BC548A42ULL } }, /* XSUM_XXH128_testdata[9063] */ + { 3021, 0x000000009E3779B1ULL, { 0x4B5CB603F365B02DULL, 0x8C58CC12B7FE9515ULL } }, /* XSUM_XXH128_testdata[9064] */ + { 3021, 0x9E3779B185EBCA8DULL, { 0xFFF71150D904ADA0ULL, 0x3F5BC0C4131ED292ULL } }, /* XSUM_XXH128_testdata[9065] */ + { 3022, 0x0000000000000000ULL, { 0x7C4A57D1E819ECC0ULL, 0x011EF89A5595950EULL } }, /* XSUM_XXH128_testdata[9066] */ + { 3022, 0x000000009E3779B1ULL, { 0x1559E8A4CAF73014ULL, 0x297817120EC4F0E3ULL } }, /* XSUM_XXH128_testdata[9067] */ + { 3022, 0x9E3779B185EBCA8DULL, { 0xAA982C793CF4FE2CULL, 0xF864DDD3BD6FD471ULL } }, /* XSUM_XXH128_testdata[9068] */ + { 3023, 0x0000000000000000ULL, { 0x2604439004011CAAULL, 0x6401EB9641726191ULL } }, /* XSUM_XXH128_testdata[9069] */ + { 3023, 0x000000009E3779B1ULL, { 0xF38FB731D51730BCULL, 0x3B283D1BBFFE6CCBULL } }, /* XSUM_XXH128_testdata[9070] */ + { 3023, 0x9E3779B185EBCA8DULL, { 0x6F49B7EA4BD6066EULL, 0xE6C9B22E6A9FD98CULL } }, /* XSUM_XXH128_testdata[9071] */ + { 3024, 0x0000000000000000ULL, { 0x4BEF54052BE525D0ULL, 0xAE56699CB6622532ULL } }, /* XSUM_XXH128_testdata[9072] */ + { 3024, 0x000000009E3779B1ULL, { 0x6991E1C912DF7258ULL, 0xB07B673C78C1C805ULL } }, /* XSUM_XXH128_testdata[9073] */ + { 3024, 0x9E3779B185EBCA8DULL, { 0x2811E539BB44335EULL, 0xE0C9A105F3359751ULL } }, /* XSUM_XXH128_testdata[9074] */ + { 3025, 0x0000000000000000ULL, { 0xB8B5D14615D49784ULL, 0xDF846FCAE970BFB6ULL } }, /* XSUM_XXH128_testdata[9075] */ + { 3025, 0x000000009E3779B1ULL, { 0x500E2AEFE3999C2DULL, 0x004D5866EA1F75FBULL } }, /* XSUM_XXH128_testdata[9076] */ + { 3025, 0x9E3779B185EBCA8DULL, { 0xF6683BCA789C6AB6ULL, 0x36F376752C66110AULL } }, /* XSUM_XXH128_testdata[9077] */ + { 3026, 0x0000000000000000ULL, { 0xE5ED2E4BC25ED4FEULL, 0x56403B6B865D98B6ULL } }, /* XSUM_XXH128_testdata[9078] */ + { 3026, 0x000000009E3779B1ULL, { 0x08143B3BD68BDE3DULL, 0x9E40C0764BE22664ULL } }, /* XSUM_XXH128_testdata[9079] */ + { 3026, 0x9E3779B185EBCA8DULL, { 0x746B882F7D2B6584ULL, 0x726CBE0B443B32C4ULL } }, /* XSUM_XXH128_testdata[9080] */ + { 3027, 0x0000000000000000ULL, { 0x494D8A012B18DEA3ULL, 0x9C08AA2E662DB1F8ULL } }, /* XSUM_XXH128_testdata[9081] */ + { 3027, 0x000000009E3779B1ULL, { 0xFF640C41873A96B1ULL, 0x5FCBDF68ACD45317ULL } }, /* XSUM_XXH128_testdata[9082] */ + { 3027, 0x9E3779B185EBCA8DULL, { 0xD6C2BF6089B48362ULL, 0xD558868260BDE57BULL } }, /* XSUM_XXH128_testdata[9083] */ + { 3028, 0x0000000000000000ULL, { 0xE4FAB24810CF98EEULL, 0xE3A6B5B4A396A847ULL } }, /* XSUM_XXH128_testdata[9084] */ + { 3028, 0x000000009E3779B1ULL, { 0x9D731AB38C4A49D3ULL, 0x814C164A3EA73D24ULL } }, /* XSUM_XXH128_testdata[9085] */ + { 3028, 0x9E3779B185EBCA8DULL, { 0xB3D503EF09864DCAULL, 0xD0D7D666017F0136ULL } }, /* XSUM_XXH128_testdata[9086] */ + { 3029, 0x0000000000000000ULL, { 0xFF05BDA59C8692F7ULL, 0x2666A75EE8F6E1FFULL } }, /* XSUM_XXH128_testdata[9087] */ + { 3029, 0x000000009E3779B1ULL, { 0x18C663D535BDF6ACULL, 0xDE85C3E4980CBAC6ULL } }, /* XSUM_XXH128_testdata[9088] */ + { 3029, 0x9E3779B185EBCA8DULL, { 0x5A169FD2CB2E3912ULL, 0x799273B3B7EED0BEULL } }, /* XSUM_XXH128_testdata[9089] */ + { 3030, 0x0000000000000000ULL, { 0xD74E824D71198E1BULL, 0x6CB3D837CF5C977DULL } }, /* XSUM_XXH128_testdata[9090] */ + { 3030, 0x000000009E3779B1ULL, { 0xE2F9B0ABF26918B5ULL, 0x75665B5CFAEDABB3ULL } }, /* XSUM_XXH128_testdata[9091] */ + { 3030, 0x9E3779B185EBCA8DULL, { 0xE0B0FC1E68033657ULL, 0x6EB84B6488D1A0BCULL } }, /* XSUM_XXH128_testdata[9092] */ + { 3031, 0x0000000000000000ULL, { 0x52BC157813CA28FDULL, 0x3EB0BDF8AE3E861FULL } }, /* XSUM_XXH128_testdata[9093] */ + { 3031, 0x000000009E3779B1ULL, { 0xDA627C3927203559ULL, 0xC09504CD31CDE827ULL } }, /* XSUM_XXH128_testdata[9094] */ + { 3031, 0x9E3779B185EBCA8DULL, { 0xC2C8C146172EF2B6ULL, 0xEDDE09BD85754A7AULL } }, /* XSUM_XXH128_testdata[9095] */ + { 3032, 0x0000000000000000ULL, { 0x0192F4C36C19F541ULL, 0x0B75A31A0F740C1BULL } }, /* XSUM_XXH128_testdata[9096] */ + { 3032, 0x000000009E3779B1ULL, { 0xFC951E6B7C8ADC67ULL, 0x0A73991A340509CFULL } }, /* XSUM_XXH128_testdata[9097] */ + { 3032, 0x9E3779B185EBCA8DULL, { 0xB8680C299F8C2670ULL, 0xBF66B4ED5C161C86ULL } }, /* XSUM_XXH128_testdata[9098] */ + { 3033, 0x0000000000000000ULL, { 0xC1118A662B3E5381ULL, 0xFC8CF7015A3B0E0AULL } }, /* XSUM_XXH128_testdata[9099] */ + { 3033, 0x000000009E3779B1ULL, { 0x230924DDE91D9C43ULL, 0x02BE57D05CBF8B4CULL } }, /* XSUM_XXH128_testdata[9100] */ + { 3033, 0x9E3779B185EBCA8DULL, { 0x2617D6300D8B98AFULL, 0x826A4EF014C25833ULL } }, /* XSUM_XXH128_testdata[9101] */ + { 3034, 0x0000000000000000ULL, { 0xC612DDA77A2B6739ULL, 0x46BE8BCFDB8CF057ULL } }, /* XSUM_XXH128_testdata[9102] */ + { 3034, 0x000000009E3779B1ULL, { 0xDC3DFD26AB69EA82ULL, 0x55C6D50AC28FA603ULL } }, /* XSUM_XXH128_testdata[9103] */ + { 3034, 0x9E3779B185EBCA8DULL, { 0xFF054E6A928BAE7FULL, 0x6EF608A0B50FF4D7ULL } }, /* XSUM_XXH128_testdata[9104] */ + { 3035, 0x0000000000000000ULL, { 0x891E8F4349525A0EULL, 0xBBEF8A557197D704ULL } }, /* XSUM_XXH128_testdata[9105] */ + { 3035, 0x000000009E3779B1ULL, { 0xE7AE6E549FF9C0FDULL, 0x1E5669584AD4F747ULL } }, /* XSUM_XXH128_testdata[9106] */ + { 3035, 0x9E3779B185EBCA8DULL, { 0x2DDEE65737D657A8ULL, 0x25D6A2172F6F640BULL } }, /* XSUM_XXH128_testdata[9107] */ + { 3036, 0x0000000000000000ULL, { 0x52F254763AE93985ULL, 0xA02F714A54A62C8AULL } }, /* XSUM_XXH128_testdata[9108] */ + { 3036, 0x000000009E3779B1ULL, { 0x0D8C6EA9AB1D4FADULL, 0xF83A5D671E813EAAULL } }, /* XSUM_XXH128_testdata[9109] */ + { 3036, 0x9E3779B185EBCA8DULL, { 0x448708C1C3DE9CFBULL, 0x30E5E77D8B9D5E23ULL } }, /* XSUM_XXH128_testdata[9110] */ + { 3037, 0x0000000000000000ULL, { 0xC0FD98CDAF535969ULL, 0xB7BAF7EC51B17646ULL } }, /* XSUM_XXH128_testdata[9111] */ + { 3037, 0x000000009E3779B1ULL, { 0x67BBF55BE5650C5EULL, 0x49A94C50132EE1FAULL } }, /* XSUM_XXH128_testdata[9112] */ + { 3037, 0x9E3779B185EBCA8DULL, { 0x0084DA76277128B6ULL, 0x01A2F15CDC0200B0ULL } }, /* XSUM_XXH128_testdata[9113] */ + { 3038, 0x0000000000000000ULL, { 0xB4858BA14CC418E2ULL, 0xAABBD49BF5116B84ULL } }, /* XSUM_XXH128_testdata[9114] */ + { 3038, 0x000000009E3779B1ULL, { 0xC2C9A9DD4BEE0F4EULL, 0x1B7EA5BBA5B3D060ULL } }, /* XSUM_XXH128_testdata[9115] */ + { 3038, 0x9E3779B185EBCA8DULL, { 0x522D3572219112D7ULL, 0x0531F55A6C434947ULL } }, /* XSUM_XXH128_testdata[9116] */ + { 3039, 0x0000000000000000ULL, { 0x1569F693B70669F0ULL, 0x4F7C4F91DFB79FAAULL } }, /* XSUM_XXH128_testdata[9117] */ + { 3039, 0x000000009E3779B1ULL, { 0x5F8D0A88F5E3248CULL, 0x6ACE299004DE693CULL } }, /* XSUM_XXH128_testdata[9118] */ + { 3039, 0x9E3779B185EBCA8DULL, { 0x60C5FD7C6FECE230ULL, 0x3FF411A2E43417B3ULL } }, /* XSUM_XXH128_testdata[9119] */ + { 3040, 0x0000000000000000ULL, { 0x7FC80D9A5EFCC67DULL, 0x45C0AA0DCADDCC1CULL } }, /* XSUM_XXH128_testdata[9120] */ + { 3040, 0x000000009E3779B1ULL, { 0xBD6140A3D12469CCULL, 0x905AB40E82904668ULL } }, /* XSUM_XXH128_testdata[9121] */ + { 3040, 0x9E3779B185EBCA8DULL, { 0x9AB4B05D244B7B00ULL, 0x94649F3B3497F937ULL } }, /* XSUM_XXH128_testdata[9122] */ + { 3041, 0x0000000000000000ULL, { 0x53E111516A359F39ULL, 0x1D932490BD549B79ULL } }, /* XSUM_XXH128_testdata[9123] */ + { 3041, 0x000000009E3779B1ULL, { 0x6EB091C15BDB7E3BULL, 0xFB6F413093D89FE9ULL } }, /* XSUM_XXH128_testdata[9124] */ + { 3041, 0x9E3779B185EBCA8DULL, { 0x0A7FDF4A5152F876ULL, 0x5491527C31D86871ULL } }, /* XSUM_XXH128_testdata[9125] */ + { 3042, 0x0000000000000000ULL, { 0xE10FAA1FF256B134ULL, 0x097BBA719BA65DA8ULL } }, /* XSUM_XXH128_testdata[9126] */ + { 3042, 0x000000009E3779B1ULL, { 0x2F2CF9191AB058E9ULL, 0x8B90934843C26BC6ULL } }, /* XSUM_XXH128_testdata[9127] */ + { 3042, 0x9E3779B185EBCA8DULL, { 0x4685F5F0714BF906ULL, 0x9ADEE058830BAE4AULL } }, /* XSUM_XXH128_testdata[9128] */ + { 3043, 0x0000000000000000ULL, { 0xE9DAA50EF33FAEE0ULL, 0x35881BD46B223FBEULL } }, /* XSUM_XXH128_testdata[9129] */ + { 3043, 0x000000009E3779B1ULL, { 0xA30AA62BA49D3A98ULL, 0xB63E8C770C83A327ULL } }, /* XSUM_XXH128_testdata[9130] */ + { 3043, 0x9E3779B185EBCA8DULL, { 0x5628D585CE6A2F71ULL, 0x779B8F6F5A3848D1ULL } }, /* XSUM_XXH128_testdata[9131] */ + { 3044, 0x0000000000000000ULL, { 0x3FB549E119A1DB0BULL, 0x167E78DF5A8C8C82ULL } }, /* XSUM_XXH128_testdata[9132] */ + { 3044, 0x000000009E3779B1ULL, { 0x6ABC7452D9B02395ULL, 0xEF6355B4A94F28D0ULL } }, /* XSUM_XXH128_testdata[9133] */ + { 3044, 0x9E3779B185EBCA8DULL, { 0x0EC5349117230073ULL, 0x70160114A5B63117ULL } }, /* XSUM_XXH128_testdata[9134] */ + { 3045, 0x0000000000000000ULL, { 0xC52C880527E7EE42ULL, 0x371666B88F960A50ULL } }, /* XSUM_XXH128_testdata[9135] */ + { 3045, 0x000000009E3779B1ULL, { 0x94E5B4346E80C514ULL, 0x7E21C1EB92D75399ULL } }, /* XSUM_XXH128_testdata[9136] */ + { 3045, 0x9E3779B185EBCA8DULL, { 0x79561D65F06AF1E4ULL, 0x799E45EA6D934C76ULL } }, /* XSUM_XXH128_testdata[9137] */ + { 3046, 0x0000000000000000ULL, { 0x85AF39ECC47380D6ULL, 0xD8F8D4E3EC5D5434ULL } }, /* XSUM_XXH128_testdata[9138] */ + { 3046, 0x000000009E3779B1ULL, { 0x66B13D1BE5315F0AULL, 0x595685F70E0F8437ULL } }, /* XSUM_XXH128_testdata[9139] */ + { 3046, 0x9E3779B185EBCA8DULL, { 0x2F406936C9E75008ULL, 0xB184260DB7B8F634ULL } }, /* XSUM_XXH128_testdata[9140] */ + { 3047, 0x0000000000000000ULL, { 0xA17883ED34DF9C9CULL, 0x83BC02F793BF4FB7ULL } }, /* XSUM_XXH128_testdata[9141] */ + { 3047, 0x000000009E3779B1ULL, { 0x2C6E0402C4A3917DULL, 0x2F0BFDDA4731CD91ULL } }, /* XSUM_XXH128_testdata[9142] */ + { 3047, 0x9E3779B185EBCA8DULL, { 0x3505A10DC45FAFF5ULL, 0x24EACD451CB2882BULL } }, /* XSUM_XXH128_testdata[9143] */ + { 3048, 0x0000000000000000ULL, { 0x56FCB8BF621BC46CULL, 0x12514D449010ADCCULL } }, /* XSUM_XXH128_testdata[9144] */ + { 3048, 0x000000009E3779B1ULL, { 0xA6F37FB38C751CFDULL, 0x00EEA903432E2261ULL } }, /* XSUM_XXH128_testdata[9145] */ + { 3048, 0x9E3779B185EBCA8DULL, { 0x135F0AD585E4B49BULL, 0x22647403F87081A2ULL } }, /* XSUM_XXH128_testdata[9146] */ + { 3049, 0x0000000000000000ULL, { 0xFCABF74067D91081ULL, 0x7DE7368825093312ULL } }, /* XSUM_XXH128_testdata[9147] */ + { 3049, 0x000000009E3779B1ULL, { 0xBF5BD92759AC1F2EULL, 0x6AF066022008C6ECULL } }, /* XSUM_XXH128_testdata[9148] */ + { 3049, 0x9E3779B185EBCA8DULL, { 0x63111E6E094071FBULL, 0xAAAC265C5100D372ULL } }, /* XSUM_XXH128_testdata[9149] */ + { 3050, 0x0000000000000000ULL, { 0xA6D55CB1163CBBAEULL, 0x2A34A59F45E1A826ULL } }, /* XSUM_XXH128_testdata[9150] */ + { 3050, 0x000000009E3779B1ULL, { 0xFF2FA834B82DFA99ULL, 0x2E3B67BE3E72CFB1ULL } }, /* XSUM_XXH128_testdata[9151] */ + { 3050, 0x9E3779B185EBCA8DULL, { 0xEA638F18EFD67488ULL, 0x123B7960419F1C13ULL } }, /* XSUM_XXH128_testdata[9152] */ + { 3051, 0x0000000000000000ULL, { 0xEB24F505D0201A73ULL, 0x333019498D7DAE74ULL } }, /* XSUM_XXH128_testdata[9153] */ + { 3051, 0x000000009E3779B1ULL, { 0xE859600ABFBE19DFULL, 0xDBB376F8DDA84FCBULL } }, /* XSUM_XXH128_testdata[9154] */ + { 3051, 0x9E3779B185EBCA8DULL, { 0xDAB8124FE18205AFULL, 0x54DC4558F1E5FB4EULL } }, /* XSUM_XXH128_testdata[9155] */ + { 3052, 0x0000000000000000ULL, { 0x7987ACF1829352A3ULL, 0x9BFC59D99D4B813BULL } }, /* XSUM_XXH128_testdata[9156] */ + { 3052, 0x000000009E3779B1ULL, { 0x761F3F92B6125543ULL, 0xBE3887722FFE5CBBULL } }, /* XSUM_XXH128_testdata[9157] */ + { 3052, 0x9E3779B185EBCA8DULL, { 0x0DA619B29FEFD3AEULL, 0x3E9E267F1F678072ULL } }, /* XSUM_XXH128_testdata[9158] */ + { 3053, 0x0000000000000000ULL, { 0xF6DCAFED19C2110FULL, 0x1956EF6B0B0E3E9AULL } }, /* XSUM_XXH128_testdata[9159] */ + { 3053, 0x000000009E3779B1ULL, { 0x7D55B3F60EE9EB4EULL, 0x2CFDFEC90CC6E7DEULL } }, /* XSUM_XXH128_testdata[9160] */ + { 3053, 0x9E3779B185EBCA8DULL, { 0xCE6F6D56D6B819A5ULL, 0x86483364DA3B04E7ULL } }, /* XSUM_XXH128_testdata[9161] */ + { 3054, 0x0000000000000000ULL, { 0x113BB1975695F267ULL, 0x60947CCD8C92D501ULL } }, /* XSUM_XXH128_testdata[9162] */ + { 3054, 0x000000009E3779B1ULL, { 0x0D260D814FD8FD46ULL, 0xD3AC9C429BF99123ULL } }, /* XSUM_XXH128_testdata[9163] */ + { 3054, 0x9E3779B185EBCA8DULL, { 0x41BEB0A9045C46E9ULL, 0xA664D508D8D8054AULL } }, /* XSUM_XXH128_testdata[9164] */ + { 3055, 0x0000000000000000ULL, { 0x31EC14CB1C6A64D4ULL, 0x12331D338412A227ULL } }, /* XSUM_XXH128_testdata[9165] */ + { 3055, 0x000000009E3779B1ULL, { 0x4209C836DD87BAE8ULL, 0x79F9F7308CAE9040ULL } }, /* XSUM_XXH128_testdata[9166] */ + { 3055, 0x9E3779B185EBCA8DULL, { 0x630502A72FC9F91BULL, 0x3C6E1A0150FDAA51ULL } }, /* XSUM_XXH128_testdata[9167] */ + { 3056, 0x0000000000000000ULL, { 0xFC8D946315923718ULL, 0x3EFFC45E2336D779ULL } }, /* XSUM_XXH128_testdata[9168] */ + { 3056, 0x000000009E3779B1ULL, { 0xD084163A3449E3D4ULL, 0x54D084C51BC4CCCDULL } }, /* XSUM_XXH128_testdata[9169] */ + { 3056, 0x9E3779B185EBCA8DULL, { 0x6DC4FDCC5C188187ULL, 0x769C21715D7A9544ULL } }, /* XSUM_XXH128_testdata[9170] */ + { 3057, 0x0000000000000000ULL, { 0xA91700F13F1BBE4BULL, 0x481102941B28D21FULL } }, /* XSUM_XXH128_testdata[9171] */ + { 3057, 0x000000009E3779B1ULL, { 0xC063F6CC065F2B79ULL, 0x9787AC0D0B956E4EULL } }, /* XSUM_XXH128_testdata[9172] */ + { 3057, 0x9E3779B185EBCA8DULL, { 0x722795CBBFCE823FULL, 0x997AD581ADA2D322ULL } }, /* XSUM_XXH128_testdata[9173] */ + { 3058, 0x0000000000000000ULL, { 0xA6D433839C43C439ULL, 0xE75511D54BBB0D31ULL } }, /* XSUM_XXH128_testdata[9174] */ + { 3058, 0x000000009E3779B1ULL, { 0x8907C4A0482066ACULL, 0x8915A94486A6EB4BULL } }, /* XSUM_XXH128_testdata[9175] */ + { 3058, 0x9E3779B185EBCA8DULL, { 0x131C0BBEC45BF54FULL, 0x9B752BBFBF8AD230ULL } }, /* XSUM_XXH128_testdata[9176] */ + { 3059, 0x0000000000000000ULL, { 0x719B83FD2D183A0FULL, 0xBFF9B31068356CCEULL } }, /* XSUM_XXH128_testdata[9177] */ + { 3059, 0x000000009E3779B1ULL, { 0x58E86937365D43C6ULL, 0x4B96CAD373CACEB1ULL } }, /* XSUM_XXH128_testdata[9178] */ + { 3059, 0x9E3779B185EBCA8DULL, { 0xADB87552F234D8B0ULL, 0x28B1CCFE6789B516ULL } }, /* XSUM_XXH128_testdata[9179] */ + { 3060, 0x0000000000000000ULL, { 0x9324D8E772F6F02FULL, 0xEAF81A94BE48E725ULL } }, /* XSUM_XXH128_testdata[9180] */ + { 3060, 0x000000009E3779B1ULL, { 0xA25D8257B922F547ULL, 0x6DDAD4DD47F9FF60ULL } }, /* XSUM_XXH128_testdata[9181] */ + { 3060, 0x9E3779B185EBCA8DULL, { 0x6909E806601A139CULL, 0x86F40FAE36020B98ULL } }, /* XSUM_XXH128_testdata[9182] */ + { 3061, 0x0000000000000000ULL, { 0x109A2D2288ACD199ULL, 0xD7BA671B270043A1ULL } }, /* XSUM_XXH128_testdata[9183] */ + { 3061, 0x000000009E3779B1ULL, { 0xB2C19CFEA11DAC0FULL, 0x406AB97E672B8211ULL } }, /* XSUM_XXH128_testdata[9184] */ + { 3061, 0x9E3779B185EBCA8DULL, { 0x3385E38DD96DF2AFULL, 0x22BE4E78AB910AA9ULL } }, /* XSUM_XXH128_testdata[9185] */ + { 3062, 0x0000000000000000ULL, { 0x1BEE81BC69B566F6ULL, 0x4D0A44D42AC5CDE5ULL } }, /* XSUM_XXH128_testdata[9186] */ + { 3062, 0x000000009E3779B1ULL, { 0x52013CE90FBF726EULL, 0x51D0EECC3C6335DAULL } }, /* XSUM_XXH128_testdata[9187] */ + { 3062, 0x9E3779B185EBCA8DULL, { 0xE6CADD5EA67A1DAEULL, 0xA6A1A9A83FB44C53ULL } }, /* XSUM_XXH128_testdata[9188] */ + { 3063, 0x0000000000000000ULL, { 0xFBFB4557EC34D698ULL, 0x5A24BEA54115AF20ULL } }, /* XSUM_XXH128_testdata[9189] */ + { 3063, 0x000000009E3779B1ULL, { 0x80A284CAFAEEB348ULL, 0xDC8E18314B76518CULL } }, /* XSUM_XXH128_testdata[9190] */ + { 3063, 0x9E3779B185EBCA8DULL, { 0x3696BBD4171643A2ULL, 0xC74BD0F188C85A3BULL } }, /* XSUM_XXH128_testdata[9191] */ + { 3064, 0x0000000000000000ULL, { 0x14E282185745F79CULL, 0xCC637841FC3385DBULL } }, /* XSUM_XXH128_testdata[9192] */ + { 3064, 0x000000009E3779B1ULL, { 0x59C50F54417BFE95ULL, 0x904C189F0D08711AULL } }, /* XSUM_XXH128_testdata[9193] */ + { 3064, 0x9E3779B185EBCA8DULL, { 0x96BC2B8FAD88A929ULL, 0xC7B1C86C548D3F69ULL } }, /* XSUM_XXH128_testdata[9194] */ + { 3065, 0x0000000000000000ULL, { 0x25C9F9879393E997ULL, 0x72CA9E62D2BADD92ULL } }, /* XSUM_XXH128_testdata[9195] */ + { 3065, 0x000000009E3779B1ULL, { 0xFF1A1CA083935315ULL, 0xD197BEA6D72BF46FULL } }, /* XSUM_XXH128_testdata[9196] */ + { 3065, 0x9E3779B185EBCA8DULL, { 0x1F0D9D4AFFE22D31ULL, 0xE0B764F9062CB8C7ULL } }, /* XSUM_XXH128_testdata[9197] */ + { 3066, 0x0000000000000000ULL, { 0x010325C9A4640B46ULL, 0xA5B129F1C8D8D3E8ULL } }, /* XSUM_XXH128_testdata[9198] */ + { 3066, 0x000000009E3779B1ULL, { 0x2ED5EBB7C4932794ULL, 0x01468D83D2EC6937ULL } }, /* XSUM_XXH128_testdata[9199] */ + { 3066, 0x9E3779B185EBCA8DULL, { 0xC85B74B109ACF054ULL, 0xB8B8C73157EA89FCULL } }, /* XSUM_XXH128_testdata[9200] */ + { 3067, 0x0000000000000000ULL, { 0xEF768413CBDAD45EULL, 0xF9BFADBF3416DBA7ULL } }, /* XSUM_XXH128_testdata[9201] */ + { 3067, 0x000000009E3779B1ULL, { 0x28E33EC1414E1480ULL, 0xC8450F92AFF0E932ULL } }, /* XSUM_XXH128_testdata[9202] */ + { 3067, 0x9E3779B185EBCA8DULL, { 0xA32B4C15F274FC23ULL, 0x64387AA152DF374FULL } }, /* XSUM_XXH128_testdata[9203] */ + { 3068, 0x0000000000000000ULL, { 0xB5B5BE7F2181A7ABULL, 0xE86516066854F5E6ULL } }, /* XSUM_XXH128_testdata[9204] */ + { 3068, 0x000000009E3779B1ULL, { 0x27D8C4A76230F5C2ULL, 0x9437EC23D0131F9AULL } }, /* XSUM_XXH128_testdata[9205] */ + { 3068, 0x9E3779B185EBCA8DULL, { 0xEC3896CA46CFBEBCULL, 0x58AEB3739DE57F1AULL } }, /* XSUM_XXH128_testdata[9206] */ + { 3069, 0x0000000000000000ULL, { 0x65B0891D197D8052ULL, 0x85AF1D452C3E328FULL } }, /* XSUM_XXH128_testdata[9207] */ + { 3069, 0x000000009E3779B1ULL, { 0x49965C505160B5A3ULL, 0x86EEB540B066C0D3ULL } }, /* XSUM_XXH128_testdata[9208] */ + { 3069, 0x9E3779B185EBCA8DULL, { 0xEA5C229CE48A537AULL, 0x881EC240096D1B3FULL } }, /* XSUM_XXH128_testdata[9209] */ + { 3070, 0x0000000000000000ULL, { 0xB4146D3B212234C3ULL, 0x0646D37EEBE3ED42ULL } }, /* XSUM_XXH128_testdata[9210] */ + { 3070, 0x000000009E3779B1ULL, { 0x9146467A9F27CEE5ULL, 0xA8BA36D4000DD7FCULL } }, /* XSUM_XXH128_testdata[9211] */ + { 3070, 0x9E3779B185EBCA8DULL, { 0x28DE1E99104CA396ULL, 0xAA45B59D406BBE50ULL } }, /* XSUM_XXH128_testdata[9212] */ + { 3071, 0x0000000000000000ULL, { 0xEA91DBA6A78E984AULL, 0x89E9DC2FB96E1C7AULL } }, /* XSUM_XXH128_testdata[9213] */ + { 3071, 0x000000009E3779B1ULL, { 0xD65903034E3DD6BDULL, 0x564F109D252270FDULL } }, /* XSUM_XXH128_testdata[9214] */ + { 3071, 0x9E3779B185EBCA8DULL, { 0xE031963E4476103AULL, 0x600A0F0BA278B334ULL } }, /* XSUM_XXH128_testdata[9215] */ + { 3072, 0x0000000000000000ULL, { 0x696BF231F32AB848ULL, 0x27DFCD2295AB7006ULL } }, /* XSUM_XXH128_testdata[9216] */ + { 3072, 0x000000009E3779B1ULL, { 0xB446DDC740559498ULL, 0x4E25B5E52C8F6918ULL } }, /* XSUM_XXH128_testdata[9217] */ + { 3072, 0x9E3779B185EBCA8DULL, { 0xFE150E487CFF7C10ULL, 0x85521B34251EF4FFULL } }, /* XSUM_XXH128_testdata[9218] */ + { 3073, 0x0000000000000000ULL, { 0xBB5CD7893718D93DULL, 0x4DEC8E07862B4006ULL } }, /* XSUM_XXH128_testdata[9219] */ + { 3073, 0x000000009E3779B1ULL, { 0x13078708D6864617ULL, 0x070C9014C1408CFFULL } }, /* XSUM_XXH128_testdata[9220] */ + { 3073, 0x9E3779B185EBCA8DULL, { 0x5233345A92E0B7D2ULL, 0x463D0C0012122156ULL } }, /* XSUM_XXH128_testdata[9221] */ + { 3074, 0x0000000000000000ULL, { 0x4544D303A760BFFAULL, 0x022A3E60A565046FULL } }, /* XSUM_XXH128_testdata[9222] */ + { 3074, 0x000000009E3779B1ULL, { 0xF4DD7C540106ED9CULL, 0x517A3DA8B132201FULL } }, /* XSUM_XXH128_testdata[9223] */ + { 3074, 0x9E3779B185EBCA8DULL, { 0x1667C4FDDA475558ULL, 0x42A4EF462C7F3C14ULL } }, /* XSUM_XXH128_testdata[9224] */ + { 3075, 0x0000000000000000ULL, { 0x20A0F9FB85F87027ULL, 0x3000FA79498B65F0ULL } }, /* XSUM_XXH128_testdata[9225] */ + { 3075, 0x000000009E3779B1ULL, { 0x503EF8D52FCF2EE7ULL, 0xDFA6EA31F59F3BDEULL } }, /* XSUM_XXH128_testdata[9226] */ + { 3075, 0x9E3779B185EBCA8DULL, { 0x83F78721C54EA38CULL, 0xE5F2CB827A792FC1ULL } }, /* XSUM_XXH128_testdata[9227] */ + { 3076, 0x0000000000000000ULL, { 0x3A7D67C26ECD3469ULL, 0xED2C77B7B0740B02ULL } }, /* XSUM_XXH128_testdata[9228] */ + { 3076, 0x000000009E3779B1ULL, { 0x6572BFA32E238DD6ULL, 0x020FCB39AFD7D827ULL } }, /* XSUM_XXH128_testdata[9229] */ + { 3076, 0x9E3779B185EBCA8DULL, { 0xB5BE83A696B09303ULL, 0x1BB002B0D7EFB884ULL } }, /* XSUM_XXH128_testdata[9230] */ + { 3077, 0x0000000000000000ULL, { 0x2673E1EFA109AD4BULL, 0x1719ECCA0CC5D847ULL } }, /* XSUM_XXH128_testdata[9231] */ + { 3077, 0x000000009E3779B1ULL, { 0x30189D29AC321B1CULL, 0x5D2C4EBFCA5FFA3BULL } }, /* XSUM_XXH128_testdata[9232] */ + { 3077, 0x9E3779B185EBCA8DULL, { 0x9027ED80737DB3C2ULL, 0x98522D289C7471F4ULL } }, /* XSUM_XXH128_testdata[9233] */ + { 3078, 0x0000000000000000ULL, { 0x211FB4B295AC7DDEULL, 0xF1B529F69759E589ULL } }, /* XSUM_XXH128_testdata[9234] */ + { 3078, 0x000000009E3779B1ULL, { 0x933E20C8DD26DF6EULL, 0x4A1188965604941BULL } }, /* XSUM_XXH128_testdata[9235] */ + { 3078, 0x9E3779B185EBCA8DULL, { 0xDD74CF8FA750EAF3ULL, 0x2AC1DB2F26AA35A4ULL } }, /* XSUM_XXH128_testdata[9236] */ + { 3079, 0x0000000000000000ULL, { 0x394653F476FCE696ULL, 0x07FF92D146DA6315ULL } }, /* XSUM_XXH128_testdata[9237] */ + { 3079, 0x000000009E3779B1ULL, { 0x85E15DD43F6CFF99ULL, 0x89963621BBC4A984ULL } }, /* XSUM_XXH128_testdata[9238] */ + { 3079, 0x9E3779B185EBCA8DULL, { 0xABC82F2E8CA84916ULL, 0x6182FE3D9687E5A2ULL } }, /* XSUM_XXH128_testdata[9239] */ + { 3080, 0x0000000000000000ULL, { 0xDEC5003A5B3E0A29ULL, 0xA592DE4DFB0B76A8ULL } }, /* XSUM_XXH128_testdata[9240] */ + { 3080, 0x000000009E3779B1ULL, { 0x18607B652E2C83EFULL, 0x6D5783D1A074BD9BULL } }, /* XSUM_XXH128_testdata[9241] */ + { 3080, 0x9E3779B185EBCA8DULL, { 0x94C2C8873615DCF5ULL, 0x773A689F73A0AEB5ULL } }, /* XSUM_XXH128_testdata[9242] */ + { 3081, 0x0000000000000000ULL, { 0x013EE3A30B2101F5ULL, 0x30180DAEED837347ULL } }, /* XSUM_XXH128_testdata[9243] */ + { 3081, 0x000000009E3779B1ULL, { 0x763DEA605C0B4035ULL, 0xF83800145536CD1EULL } }, /* XSUM_XXH128_testdata[9244] */ + { 3081, 0x9E3779B185EBCA8DULL, { 0x41656992552CCC2AULL, 0xC91E45A6104B85FBULL } }, /* XSUM_XXH128_testdata[9245] */ + { 3082, 0x0000000000000000ULL, { 0x448827E84F765F4AULL, 0xA797149C44D59A4DULL } }, /* XSUM_XXH128_testdata[9246] */ + { 3082, 0x000000009E3779B1ULL, { 0x41EB2288A6FB4190ULL, 0xAB1A711AA9D37731ULL } }, /* XSUM_XXH128_testdata[9247] */ + { 3082, 0x9E3779B185EBCA8DULL, { 0x046BDD756789FA35ULL, 0x4CAA21422EE17659ULL } }, /* XSUM_XXH128_testdata[9248] */ + { 3083, 0x0000000000000000ULL, { 0xB3494BD4B2633F2BULL, 0xE6E560D85CD80942ULL } }, /* XSUM_XXH128_testdata[9249] */ + { 3083, 0x000000009E3779B1ULL, { 0x7BAE63FBFBDABDA6ULL, 0xC49F77E58C1A8234ULL } }, /* XSUM_XXH128_testdata[9250] */ + { 3083, 0x9E3779B185EBCA8DULL, { 0x916119ED75DE8D24ULL, 0xFB0C5A2A7A2ECEF5ULL } }, /* XSUM_XXH128_testdata[9251] */ + { 3084, 0x0000000000000000ULL, { 0x12579A5674B09B07ULL, 0x2E4ECCD316ACDD8FULL } }, /* XSUM_XXH128_testdata[9252] */ + { 3084, 0x000000009E3779B1ULL, { 0xF39292DC0F32271FULL, 0x3F04A0CC1823EAF9ULL } }, /* XSUM_XXH128_testdata[9253] */ + { 3084, 0x9E3779B185EBCA8DULL, { 0xFB07F8F25B5AE020ULL, 0xA217558C789F6218ULL } }, /* XSUM_XXH128_testdata[9254] */ + { 3085, 0x0000000000000000ULL, { 0x2757A7411AAA0AF5ULL, 0x00577463F2EC61D1ULL } }, /* XSUM_XXH128_testdata[9255] */ + { 3085, 0x000000009E3779B1ULL, { 0x48AF1A3DBE81EF03ULL, 0x117C64BAF6C704D9ULL } }, /* XSUM_XXH128_testdata[9256] */ + { 3085, 0x9E3779B185EBCA8DULL, { 0x98832C78F0EEE15BULL, 0x1A40B68D945824EEULL } }, /* XSUM_XXH128_testdata[9257] */ + { 3086, 0x0000000000000000ULL, { 0xF51AA9442403576AULL, 0xCB4070612F412FACULL } }, /* XSUM_XXH128_testdata[9258] */ + { 3086, 0x000000009E3779B1ULL, { 0xE2AC4FF69D04343EULL, 0xB0D09674CED00BB4ULL } }, /* XSUM_XXH128_testdata[9259] */ + { 3086, 0x9E3779B185EBCA8DULL, { 0xD1E8E39ADAE2E67AULL, 0xD6BA9D3B218539CDULL } }, /* XSUM_XXH128_testdata[9260] */ + { 3087, 0x0000000000000000ULL, { 0x4EFDFECD0C1218DAULL, 0xBDE6A6944491F0BEULL } }, /* XSUM_XXH128_testdata[9261] */ + { 3087, 0x000000009E3779B1ULL, { 0x0C5F63787CAD69E9ULL, 0xA991C53B479A2EFFULL } }, /* XSUM_XXH128_testdata[9262] */ + { 3087, 0x9E3779B185EBCA8DULL, { 0x566184AA59123BFFULL, 0xEBE992466272E4BDULL } }, /* XSUM_XXH128_testdata[9263] */ + { 3088, 0x0000000000000000ULL, { 0x71453920FCFBDCB5ULL, 0x8C44734AFA3CDB88ULL } }, /* XSUM_XXH128_testdata[9264] */ + { 3088, 0x000000009E3779B1ULL, { 0x824D59EAE96796E0ULL, 0x02DEE15F54C3FE0AULL } }, /* XSUM_XXH128_testdata[9265] */ + { 3088, 0x9E3779B185EBCA8DULL, { 0xB5ECA63537B8CAB6ULL, 0x52215BBA834D5B91ULL } }, /* XSUM_XXH128_testdata[9266] */ + { 3089, 0x0000000000000000ULL, { 0xB8DB9958E9F8DAF1ULL, 0x595EC30015EF7254ULL } }, /* XSUM_XXH128_testdata[9267] */ + { 3089, 0x000000009E3779B1ULL, { 0x6936C6D86814B0CCULL, 0x426E0D140DF4EF5BULL } }, /* XSUM_XXH128_testdata[9268] */ + { 3089, 0x9E3779B185EBCA8DULL, { 0x4F1D1FAA85396B9CULL, 0x9D525D26D5BF20B5ULL } }, /* XSUM_XXH128_testdata[9269] */ + { 3090, 0x0000000000000000ULL, { 0xADDAEAC431A05F24ULL, 0x5C5193D32E85D97AULL } }, /* XSUM_XXH128_testdata[9270] */ + { 3090, 0x000000009E3779B1ULL, { 0x4BA06E0F4FF276D6ULL, 0xFDE059E11B73BBDBULL } }, /* XSUM_XXH128_testdata[9271] */ + { 3090, 0x9E3779B185EBCA8DULL, { 0x99B4E9662E4CA04DULL, 0x2B9561AD4B21AF22ULL } }, /* XSUM_XXH128_testdata[9272] */ + { 3091, 0x0000000000000000ULL, { 0x6115EB504AD836EAULL, 0x0D18B09C2C7D2667ULL } }, /* XSUM_XXH128_testdata[9273] */ + { 3091, 0x000000009E3779B1ULL, { 0x4DC188B8DEB3FE26ULL, 0x4D30431F3728ED3FULL } }, /* XSUM_XXH128_testdata[9274] */ + { 3091, 0x9E3779B185EBCA8DULL, { 0x172CD5B6646EB12AULL, 0xD0F69660D704443AULL } }, /* XSUM_XXH128_testdata[9275] */ + { 3092, 0x0000000000000000ULL, { 0xDB3D25A94028892AULL, 0x5A163AC95DAF5F54ULL } }, /* XSUM_XXH128_testdata[9276] */ + { 3092, 0x000000009E3779B1ULL, { 0x48E73EFE00129EDEULL, 0xFA29674F3B70D31BULL } }, /* XSUM_XXH128_testdata[9277] */ + { 3092, 0x9E3779B185EBCA8DULL, { 0xE337C680B9A11A0AULL, 0xBEBE7F3EE83506BDULL } }, /* XSUM_XXH128_testdata[9278] */ + { 3093, 0x0000000000000000ULL, { 0x11F008344CCFA92BULL, 0x70452BE8D94540F8ULL } }, /* XSUM_XXH128_testdata[9279] */ + { 3093, 0x000000009E3779B1ULL, { 0x0398DAD6E97A74D4ULL, 0x0A1BC1498F8828C0ULL } }, /* XSUM_XXH128_testdata[9280] */ + { 3093, 0x9E3779B185EBCA8DULL, { 0xF63D77109C6E4C3DULL, 0x38DFEE39985988DCULL } }, /* XSUM_XXH128_testdata[9281] */ + { 3094, 0x0000000000000000ULL, { 0x47B5D05EAF2979E3ULL, 0xEBC550F30C99F902ULL } }, /* XSUM_XXH128_testdata[9282] */ + { 3094, 0x000000009E3779B1ULL, { 0xCE24123A1A62E0DDULL, 0x71A02D691CC3CACCULL } }, /* XSUM_XXH128_testdata[9283] */ + { 3094, 0x9E3779B185EBCA8DULL, { 0xC9B7DFA126271448ULL, 0xA858B9EABA185260ULL } }, /* XSUM_XXH128_testdata[9284] */ + { 3095, 0x0000000000000000ULL, { 0x29882EBDD91DC29CULL, 0xD4427457247DDBC9ULL } }, /* XSUM_XXH128_testdata[9285] */ + { 3095, 0x000000009E3779B1ULL, { 0xD626C333F2AF145FULL, 0xEF840577A37631BCULL } }, /* XSUM_XXH128_testdata[9286] */ + { 3095, 0x9E3779B185EBCA8DULL, { 0xBBD1B325B1DDD3A7ULL, 0x2DC54B451192395AULL } }, /* XSUM_XXH128_testdata[9287] */ + { 3096, 0x0000000000000000ULL, { 0xAB2D37B15F786F13ULL, 0xBCAA7AC252E1DF00ULL } }, /* XSUM_XXH128_testdata[9288] */ + { 3096, 0x000000009E3779B1ULL, { 0x9BCFF250B5E0B6A5ULL, 0x42685C0DC1888CF2ULL } }, /* XSUM_XXH128_testdata[9289] */ + { 3096, 0x9E3779B185EBCA8DULL, { 0x5FAED81210AF3B2AULL, 0xF1EA4AFBD33AD28BULL } }, /* XSUM_XXH128_testdata[9290] */ + { 3097, 0x0000000000000000ULL, { 0x5B9EE12B5CE61876ULL, 0xB2089B9337093E5AULL } }, /* XSUM_XXH128_testdata[9291] */ + { 3097, 0x000000009E3779B1ULL, { 0x79B22F4A56298C14ULL, 0xEAB373CE5D141E70ULL } }, /* XSUM_XXH128_testdata[9292] */ + { 3097, 0x9E3779B185EBCA8DULL, { 0xDA856D0A3246871FULL, 0x5C3C3583DB13CFC2ULL } }, /* XSUM_XXH128_testdata[9293] */ + { 3098, 0x0000000000000000ULL, { 0x0CA96524F2F351FDULL, 0x411A6848563F86C7ULL } }, /* XSUM_XXH128_testdata[9294] */ + { 3098, 0x000000009E3779B1ULL, { 0x57C6196BB462AA0CULL, 0x3D20A23E5725CF50ULL } }, /* XSUM_XXH128_testdata[9295] */ + { 3098, 0x9E3779B185EBCA8DULL, { 0x33D31C4C4C9A192AULL, 0xF1950D1CE6595766ULL } }, /* XSUM_XXH128_testdata[9296] */ + { 3099, 0x0000000000000000ULL, { 0xBE9B42B9D7A7DE77ULL, 0xC13F86C3CAAB2A71ULL } }, /* XSUM_XXH128_testdata[9297] */ + { 3099, 0x000000009E3779B1ULL, { 0x938F447D6CDA51ADULL, 0x3198A83E5A23930CULL } }, /* XSUM_XXH128_testdata[9298] */ + { 3099, 0x9E3779B185EBCA8DULL, { 0xC69BED9367D3CA12ULL, 0x32C5AEEFD206B922ULL } }, /* XSUM_XXH128_testdata[9299] */ + { 3100, 0x0000000000000000ULL, { 0x53C9FC5F9E22A184ULL, 0xE023326BEBBFD4ECULL } }, /* XSUM_XXH128_testdata[9300] */ + { 3100, 0x000000009E3779B1ULL, { 0xFC0A57172F99ECB5ULL, 0xD8FF90447A111A1EULL } }, /* XSUM_XXH128_testdata[9301] */ + { 3100, 0x9E3779B185EBCA8DULL, { 0xE8D9012FD958628AULL, 0xC1C84DC7113A3EC3ULL } }, /* XSUM_XXH128_testdata[9302] */ + { 3101, 0x0000000000000000ULL, { 0x5B827245B5450701ULL, 0x012B9308CA3AEC6DULL } }, /* XSUM_XXH128_testdata[9303] */ + { 3101, 0x000000009E3779B1ULL, { 0x38A24140A0672AEDULL, 0x0AD6D0D9F34A3602ULL } }, /* XSUM_XXH128_testdata[9304] */ + { 3101, 0x9E3779B185EBCA8DULL, { 0xD02A3FCA9A98DA37ULL, 0x57A6B534F09193BCULL } }, /* XSUM_XXH128_testdata[9305] */ + { 3102, 0x0000000000000000ULL, { 0xB99D171D1373071EULL, 0x7F6A8C01F10FA914ULL } }, /* XSUM_XXH128_testdata[9306] */ + { 3102, 0x000000009E3779B1ULL, { 0xD8753459BF11E365ULL, 0xB24EF7968C4BB6D9ULL } }, /* XSUM_XXH128_testdata[9307] */ + { 3102, 0x9E3779B185EBCA8DULL, { 0xFAACE1AD8099B9B9ULL, 0xED3E726B07440228ULL } }, /* XSUM_XXH128_testdata[9308] */ + { 3103, 0x0000000000000000ULL, { 0x0674140175B3E039ULL, 0xAC266D7D72209489ULL } }, /* XSUM_XXH128_testdata[9309] */ + { 3103, 0x000000009E3779B1ULL, { 0xC037764399266126ULL, 0x8134D8E7DC4239E4ULL } }, /* XSUM_XXH128_testdata[9310] */ + { 3103, 0x9E3779B185EBCA8DULL, { 0xE336F90201941233ULL, 0x5981B29FBB5D99F0ULL } }, /* XSUM_XXH128_testdata[9311] */ + { 3104, 0x0000000000000000ULL, { 0xADB58ED4D1193F58ULL, 0x4CC3AC897B4B0881ULL } }, /* XSUM_XXH128_testdata[9312] */ + { 3104, 0x000000009E3779B1ULL, { 0xB6CFC5F1CFFF1D04ULL, 0x48E8FA18CBFD70D7ULL } }, /* XSUM_XXH128_testdata[9313] */ + { 3104, 0x9E3779B185EBCA8DULL, { 0xB45FE8D1E3ED3A79ULL, 0xC1783B825AFD66A1ULL } }, /* XSUM_XXH128_testdata[9314] */ + { 3105, 0x0000000000000000ULL, { 0xDCEF77642A90D552ULL, 0x272B5FBFF271C308ULL } }, /* XSUM_XXH128_testdata[9315] */ + { 3105, 0x000000009E3779B1ULL, { 0x56025C200D77CAEFULL, 0x91C81E14A5B48C98ULL } }, /* XSUM_XXH128_testdata[9316] */ + { 3105, 0x9E3779B185EBCA8DULL, { 0x3042D8FF87B76D4FULL, 0xA6CE4EC1777C27F3ULL } }, /* XSUM_XXH128_testdata[9317] */ + { 3106, 0x0000000000000000ULL, { 0x8BF3C167F4FBFCAAULL, 0x3CD1604EE36D3BE5ULL } }, /* XSUM_XXH128_testdata[9318] */ + { 3106, 0x000000009E3779B1ULL, { 0xB04C8A68220F98EFULL, 0xFA6D5D631461BB2DULL } }, /* XSUM_XXH128_testdata[9319] */ + { 3106, 0x9E3779B185EBCA8DULL, { 0xC457533DDAB1435AULL, 0x16444596177AFE13ULL } }, /* XSUM_XXH128_testdata[9320] */ + { 3107, 0x0000000000000000ULL, { 0xB198BD1563FFEDEAULL, 0xAD2519D976A0DA4AULL } }, /* XSUM_XXH128_testdata[9321] */ + { 3107, 0x000000009E3779B1ULL, { 0xFA477ED7D486AA36ULL, 0x41A4945DA12031AFULL } }, /* XSUM_XXH128_testdata[9322] */ + { 3107, 0x9E3779B185EBCA8DULL, { 0x8C02F5DB14AC6991ULL, 0xCE47E067AB116AD3ULL } }, /* XSUM_XXH128_testdata[9323] */ + { 3108, 0x0000000000000000ULL, { 0xDE8A2527EF986A80ULL, 0x35D8AEA4D4203811ULL } }, /* XSUM_XXH128_testdata[9324] */ + { 3108, 0x000000009E3779B1ULL, { 0x149FAD555CF20D88ULL, 0xAD4EF3FBD6E121BDULL } }, /* XSUM_XXH128_testdata[9325] */ + { 3108, 0x9E3779B185EBCA8DULL, { 0x323C46D327FBE997ULL, 0x604C9FC69C3CA8BAULL } }, /* XSUM_XXH128_testdata[9326] */ + { 3109, 0x0000000000000000ULL, { 0x3C9D70E9F3DCA228ULL, 0xA3D0AC55CC676460ULL } }, /* XSUM_XXH128_testdata[9327] */ + { 3109, 0x000000009E3779B1ULL, { 0xAC8C07C6FDDD257CULL, 0x50669EB8BFF98155ULL } }, /* XSUM_XXH128_testdata[9328] */ + { 3109, 0x9E3779B185EBCA8DULL, { 0x089743EA9952136AULL, 0x24E50797C0CE6DB0ULL } }, /* XSUM_XXH128_testdata[9329] */ + { 3110, 0x0000000000000000ULL, { 0x62549962E266F326ULL, 0xB2CD4723E5626618ULL } }, /* XSUM_XXH128_testdata[9330] */ + { 3110, 0x000000009E3779B1ULL, { 0xAF9928A12E810084ULL, 0x1628F0F2346DA4A8ULL } }, /* XSUM_XXH128_testdata[9331] */ + { 3110, 0x9E3779B185EBCA8DULL, { 0xF65C7D89EBFAF3ACULL, 0x6801246C0343E23AULL } }, /* XSUM_XXH128_testdata[9332] */ + { 3111, 0x0000000000000000ULL, { 0x084FF959C351B8F4ULL, 0x7C2A90E21B83FEBDULL } }, /* XSUM_XXH128_testdata[9333] */ + { 3111, 0x000000009E3779B1ULL, { 0xBC1F7B23B9EADB5EULL, 0x28C9D4D5FFB46156ULL } }, /* XSUM_XXH128_testdata[9334] */ + { 3111, 0x9E3779B185EBCA8DULL, { 0x3F8F287E03EEEB3DULL, 0x22DF6FB0C47793B0ULL } }, /* XSUM_XXH128_testdata[9335] */ + { 3112, 0x0000000000000000ULL, { 0x87D72D416F9C4F7FULL, 0xB627FA1381B22C08ULL } }, /* XSUM_XXH128_testdata[9336] */ + { 3112, 0x000000009E3779B1ULL, { 0x2A716610F3AE8FCBULL, 0xC6C56944CA7FEDE6ULL } }, /* XSUM_XXH128_testdata[9337] */ + { 3112, 0x9E3779B185EBCA8DULL, { 0x94FCCB3682E44009ULL, 0x11701812C69C8C3EULL } }, /* XSUM_XXH128_testdata[9338] */ + { 3113, 0x0000000000000000ULL, { 0xB9619D8F5FF431E3ULL, 0x5CC27E25191DCD43ULL } }, /* XSUM_XXH128_testdata[9339] */ + { 3113, 0x000000009E3779B1ULL, { 0x76A1429C3084ED08ULL, 0x052A738A385E3FA7ULL } }, /* XSUM_XXH128_testdata[9340] */ + { 3113, 0x9E3779B185EBCA8DULL, { 0xDA8D99E6A4FA9AFEULL, 0x8A080FE964473194ULL } }, /* XSUM_XXH128_testdata[9341] */ + { 3114, 0x0000000000000000ULL, { 0x94BD88FF1F6C585CULL, 0x9A87FBDAA6B5BACBULL } }, /* XSUM_XXH128_testdata[9342] */ + { 3114, 0x000000009E3779B1ULL, { 0x625CA3851FEA147DULL, 0x9AF7C7321398CF4CULL } }, /* XSUM_XXH128_testdata[9343] */ + { 3114, 0x9E3779B185EBCA8DULL, { 0xD73515514A35F44DULL, 0xD73C822D86906107ULL } }, /* XSUM_XXH128_testdata[9344] */ + { 3115, 0x0000000000000000ULL, { 0xFAF335BE4F829B6DULL, 0xF0256ACCAEAB3F42ULL } }, /* XSUM_XXH128_testdata[9345] */ + { 3115, 0x000000009E3779B1ULL, { 0x18A817E15C822828ULL, 0x4ECEC515667D4D7AULL } }, /* XSUM_XXH128_testdata[9346] */ + { 3115, 0x9E3779B185EBCA8DULL, { 0x1ED29810523AEC23ULL, 0xA8AA42875FDA9D57ULL } }, /* XSUM_XXH128_testdata[9347] */ + { 3116, 0x0000000000000000ULL, { 0xC7ED0CDE7F354105ULL, 0xEF2282254EF12421ULL } }, /* XSUM_XXH128_testdata[9348] */ + { 3116, 0x000000009E3779B1ULL, { 0xE53C7D52223988B5ULL, 0x97430715DD9A3625ULL } }, /* XSUM_XXH128_testdata[9349] */ + { 3116, 0x9E3779B185EBCA8DULL, { 0x27D90923B7D9848AULL, 0x742F8EEC2EB59EB6ULL } }, /* XSUM_XXH128_testdata[9350] */ + { 3117, 0x0000000000000000ULL, { 0x687C760766487BDEULL, 0x524FBA0F235C3BC4ULL } }, /* XSUM_XXH128_testdata[9351] */ + { 3117, 0x000000009E3779B1ULL, { 0xA069C61351A2CC6FULL, 0xEE404D958D5EB0D4ULL } }, /* XSUM_XXH128_testdata[9352] */ + { 3117, 0x9E3779B185EBCA8DULL, { 0x5090AA65123EBA67ULL, 0xBEEA0A3D48A728A6ULL } }, /* XSUM_XXH128_testdata[9353] */ + { 3118, 0x0000000000000000ULL, { 0xC9FB98EB9A86E2A6ULL, 0xAD18CEB0C0316976ULL } }, /* XSUM_XXH128_testdata[9354] */ + { 3118, 0x000000009E3779B1ULL, { 0x15375CC0B9CED4BDULL, 0x0FB187413D5A1B23ULL } }, /* XSUM_XXH128_testdata[9355] */ + { 3118, 0x9E3779B185EBCA8DULL, { 0x175C7B5E6D8DEA25ULL, 0x5C9E52D5E7D35607ULL } }, /* XSUM_XXH128_testdata[9356] */ + { 3119, 0x0000000000000000ULL, { 0xDAA2C2AE0E315B6DULL, 0x248A20C08E10489EULL } }, /* XSUM_XXH128_testdata[9357] */ + { 3119, 0x000000009E3779B1ULL, { 0xD5DB41D9FE41C444ULL, 0x4B21A810748604E6ULL } }, /* XSUM_XXH128_testdata[9358] */ + { 3119, 0x9E3779B185EBCA8DULL, { 0x767646AE2C2EDA92ULL, 0x79B6E849EE80D559ULL } }, /* XSUM_XXH128_testdata[9359] */ + { 3120, 0x0000000000000000ULL, { 0xD98AFF362DB10D7AULL, 0xEF9210887B57079EULL } }, /* XSUM_XXH128_testdata[9360] */ + { 3120, 0x000000009E3779B1ULL, { 0xF501E3248C96F99DULL, 0xE52D61E14177E427ULL } }, /* XSUM_XXH128_testdata[9361] */ + { 3120, 0x9E3779B185EBCA8DULL, { 0xD20C4D9D22CFACC6ULL, 0xF4E1BC5E6DD51BA1ULL } }, /* XSUM_XXH128_testdata[9362] */ + { 3121, 0x0000000000000000ULL, { 0x038150265809A8B1ULL, 0x17C51E460AD39FEFULL } }, /* XSUM_XXH128_testdata[9363] */ + { 3121, 0x000000009E3779B1ULL, { 0x456BFD9E7871B899ULL, 0x213057F6E708A1BBULL } }, /* XSUM_XXH128_testdata[9364] */ + { 3121, 0x9E3779B185EBCA8DULL, { 0xBD3F3EF1214251DCULL, 0xF557BAFB8A6F0581ULL } }, /* XSUM_XXH128_testdata[9365] */ + { 3122, 0x0000000000000000ULL, { 0xABC349A9D25C1A31ULL, 0x810A56E3CDF868E7ULL } }, /* XSUM_XXH128_testdata[9366] */ + { 3122, 0x000000009E3779B1ULL, { 0x45017702CDE6D3BBULL, 0xFF164063DF2EF3C8ULL } }, /* XSUM_XXH128_testdata[9367] */ + { 3122, 0x9E3779B185EBCA8DULL, { 0x8EC920C51176CEB9ULL, 0x910B31CF21B8309AULL } }, /* XSUM_XXH128_testdata[9368] */ + { 3123, 0x0000000000000000ULL, { 0xFB5A30A329BAA9E2ULL, 0xCA14142F8C13688DULL } }, /* XSUM_XXH128_testdata[9369] */ + { 3123, 0x000000009E3779B1ULL, { 0xAE748FEA26037C9EULL, 0xB823C0E8C19157BEULL } }, /* XSUM_XXH128_testdata[9370] */ + { 3123, 0x9E3779B185EBCA8DULL, { 0x749AC63A986C0D4FULL, 0xEA8D5862D3D58817ULL } }, /* XSUM_XXH128_testdata[9371] */ + { 3124, 0x0000000000000000ULL, { 0x72CB4EC0BFE6F042ULL, 0xE66185F987B953E8ULL } }, /* XSUM_XXH128_testdata[9372] */ + { 3124, 0x000000009E3779B1ULL, { 0x9A087D22FE8CCDC9ULL, 0x6E57BB8B39D0D5E4ULL } }, /* XSUM_XXH128_testdata[9373] */ + { 3124, 0x9E3779B185EBCA8DULL, { 0xA31BA4F7705CCAF1ULL, 0x0289A5B300E38D48ULL } }, /* XSUM_XXH128_testdata[9374] */ + { 3125, 0x0000000000000000ULL, { 0x6DCFB8D92E795FEBULL, 0xA37D8C34EFF94D48ULL } }, /* XSUM_XXH128_testdata[9375] */ + { 3125, 0x000000009E3779B1ULL, { 0x65E9CF2876641D58ULL, 0x46B970F8A7058687ULL } }, /* XSUM_XXH128_testdata[9376] */ + { 3125, 0x9E3779B185EBCA8DULL, { 0x42C04093BB99C195ULL, 0xC38EEF341C41232EULL } }, /* XSUM_XXH128_testdata[9377] */ + { 3126, 0x0000000000000000ULL, { 0x076F4E299D242338ULL, 0x79E5278B7516E5F4ULL } }, /* XSUM_XXH128_testdata[9378] */ + { 3126, 0x000000009E3779B1ULL, { 0x250EBD502074B4A0ULL, 0x1A32B43BFA1E2C49ULL } }, /* XSUM_XXH128_testdata[9379] */ + { 3126, 0x9E3779B185EBCA8DULL, { 0xD2ECA180AB8CC107ULL, 0x7E67D7CB45B1CB59ULL } }, /* XSUM_XXH128_testdata[9380] */ + { 3127, 0x0000000000000000ULL, { 0x2781EAFBCC0DCCA7ULL, 0x3818A140BE16D10AULL } }, /* XSUM_XXH128_testdata[9381] */ + { 3127, 0x000000009E3779B1ULL, { 0x2C07692982097F3AULL, 0x87C2D26728A0552DULL } }, /* XSUM_XXH128_testdata[9382] */ + { 3127, 0x9E3779B185EBCA8DULL, { 0x79EABFB5CEBF8F43ULL, 0xA1978240F1526118ULL } }, /* XSUM_XXH128_testdata[9383] */ + { 3128, 0x0000000000000000ULL, { 0xCE79CBB5A4B1BA89ULL, 0x1EB666C14E786FB8ULL } }, /* XSUM_XXH128_testdata[9384] */ + { 3128, 0x000000009E3779B1ULL, { 0xA23D7485AC016065ULL, 0x5621DA3FEA83ADBBULL } }, /* XSUM_XXH128_testdata[9385] */ + { 3128, 0x9E3779B185EBCA8DULL, { 0xA75D571105EF80D1ULL, 0x824979BBAEB6A973ULL } }, /* XSUM_XXH128_testdata[9386] */ + { 3129, 0x0000000000000000ULL, { 0xC0C5D7AD380558DEULL, 0xAF7BF82BFD79E7B3ULL } }, /* XSUM_XXH128_testdata[9387] */ + { 3129, 0x000000009E3779B1ULL, { 0x72E5F176FB3F6052ULL, 0x5ABC9745F3AD9DF6ULL } }, /* XSUM_XXH128_testdata[9388] */ + { 3129, 0x9E3779B185EBCA8DULL, { 0xEE973E882E57C4AEULL, 0x204FC7047A9919D1ULL } }, /* XSUM_XXH128_testdata[9389] */ + { 3130, 0x0000000000000000ULL, { 0xD9104A6D1F3926F4ULL, 0x763633049DBA132EULL } }, /* XSUM_XXH128_testdata[9390] */ + { 3130, 0x000000009E3779B1ULL, { 0x9B03A4D75CE6EAFDULL, 0x90E2EFA2432442CFULL } }, /* XSUM_XXH128_testdata[9391] */ + { 3130, 0x9E3779B185EBCA8DULL, { 0x67826953983AD136ULL, 0xD5736156F0C8AB65ULL } }, /* XSUM_XXH128_testdata[9392] */ + { 3131, 0x0000000000000000ULL, { 0xA332A2D2C117EB73ULL, 0x005847166F1025DCULL } }, /* XSUM_XXH128_testdata[9393] */ + { 3131, 0x000000009E3779B1ULL, { 0xE1F8D73D2FD9A2FEULL, 0x09B90C6FDA35F459ULL } }, /* XSUM_XXH128_testdata[9394] */ + { 3131, 0x9E3779B185EBCA8DULL, { 0x4288C89AFCACC083ULL, 0xBEF7A76CF2179176ULL } }, /* XSUM_XXH128_testdata[9395] */ + { 3132, 0x0000000000000000ULL, { 0xC4B80ED5628A9CE9ULL, 0xA5EA02DCA5B59CF9ULL } }, /* XSUM_XXH128_testdata[9396] */ + { 3132, 0x000000009E3779B1ULL, { 0x37C8A212E1CACFD6ULL, 0xB2DDF0A445A3B5E0ULL } }, /* XSUM_XXH128_testdata[9397] */ + { 3132, 0x9E3779B185EBCA8DULL, { 0xCA2292AF916BE54FULL, 0xB8CA8EA7F5B30C0CULL } }, /* XSUM_XXH128_testdata[9398] */ + { 3133, 0x0000000000000000ULL, { 0x98A8F8752190384EULL, 0xF805EF1DC0B95D9FULL } }, /* XSUM_XXH128_testdata[9399] */ + { 3133, 0x000000009E3779B1ULL, { 0x117ED7862CF134FAULL, 0x0D238B471026EDB8ULL } }, /* XSUM_XXH128_testdata[9400] */ + { 3133, 0x9E3779B185EBCA8DULL, { 0xD2FF66EF4A69D81AULL, 0x94303B05CCCF33FAULL } }, /* XSUM_XXH128_testdata[9401] */ + { 3134, 0x0000000000000000ULL, { 0xD4051CE8E22ACD38ULL, 0x809E7134A1CC3F68ULL } }, /* XSUM_XXH128_testdata[9402] */ + { 3134, 0x000000009E3779B1ULL, { 0x093440257B5D0F42ULL, 0x7E16649086AE2A91ULL } }, /* XSUM_XXH128_testdata[9403] */ + { 3134, 0x9E3779B185EBCA8DULL, { 0xF514098C73AD1AB5ULL, 0xD3838A1E3B890B9DULL } }, /* XSUM_XXH128_testdata[9404] */ + { 3135, 0x0000000000000000ULL, { 0x8141CD88F539D640ULL, 0xF4EBE555DD1BFA8BULL } }, /* XSUM_XXH128_testdata[9405] */ + { 3135, 0x000000009E3779B1ULL, { 0x420CD70628C0DA3FULL, 0x7895E1A546952C61ULL } }, /* XSUM_XXH128_testdata[9406] */ + { 3135, 0x9E3779B185EBCA8DULL, { 0x663037A3D108C4EDULL, 0xBC57529A3254F336ULL } }, /* XSUM_XXH128_testdata[9407] */ + { 3136, 0x0000000000000000ULL, { 0x5D9FB666D8DDDF57ULL, 0x69BAB0154E8760C4ULL } }, /* XSUM_XXH128_testdata[9408] */ + { 3136, 0x000000009E3779B1ULL, { 0xA33E0D2CE61C45E1ULL, 0xDB3B35B6FC975A3CULL } }, /* XSUM_XXH128_testdata[9409] */ + { 3136, 0x9E3779B185EBCA8DULL, { 0x8BC253EDE067B042ULL, 0x7A6DA57D84048C0CULL } }, /* XSUM_XXH128_testdata[9410] */ + { 3137, 0x0000000000000000ULL, { 0x8BD8A25724AE2167ULL, 0x01B63DDCF4AA68DBULL } }, /* XSUM_XXH128_testdata[9411] */ + { 3137, 0x000000009E3779B1ULL, { 0x7FCB863C1171EE13ULL, 0xB955EF5F7B2F4E39ULL } }, /* XSUM_XXH128_testdata[9412] */ + { 3137, 0x9E3779B185EBCA8DULL, { 0x67EF3573D079A8EBULL, 0x2DD70AFF06BB4770ULL } }, /* XSUM_XXH128_testdata[9413] */ + { 3138, 0x0000000000000000ULL, { 0x466023E7FED1EBA0ULL, 0x10F5596820BE9B65ULL } }, /* XSUM_XXH128_testdata[9414] */ + { 3138, 0x000000009E3779B1ULL, { 0xD6A4C33D8D950C82ULL, 0xC51163B2CE0AC4DFULL } }, /* XSUM_XXH128_testdata[9415] */ + { 3138, 0x9E3779B185EBCA8DULL, { 0xC3E25652D609F7E1ULL, 0xF2BB4302D8475529ULL } }, /* XSUM_XXH128_testdata[9416] */ + { 3139, 0x0000000000000000ULL, { 0xADDD3527A73D9A21ULL, 0xB94242323ED58C34ULL } }, /* XSUM_XXH128_testdata[9417] */ + { 3139, 0x000000009E3779B1ULL, { 0x16564656DCD0C39AULL, 0xC5CE4298568E3C09ULL } }, /* XSUM_XXH128_testdata[9418] */ + { 3139, 0x9E3779B185EBCA8DULL, { 0x2A754AB3FDFA7279ULL, 0xC2F6D9D46AFBD928ULL } }, /* XSUM_XXH128_testdata[9419] */ + { 3140, 0x0000000000000000ULL, { 0xAAD5191EDC83C88BULL, 0xA58CB82EF5CFD69CULL } }, /* XSUM_XXH128_testdata[9420] */ + { 3140, 0x000000009E3779B1ULL, { 0xFB5E968C30FCBF7DULL, 0xAF9758619F4409B8ULL } }, /* XSUM_XXH128_testdata[9421] */ + { 3140, 0x9E3779B185EBCA8DULL, { 0x883FF7F14EB52B56ULL, 0x7537359A06130384ULL } }, /* XSUM_XXH128_testdata[9422] */ + { 3141, 0x0000000000000000ULL, { 0xA76A101D0ECB7CADULL, 0xB5180F499A37A95BULL } }, /* XSUM_XXH128_testdata[9423] */ + { 3141, 0x000000009E3779B1ULL, { 0x934956D5248B8183ULL, 0x9096917C3D068241ULL } }, /* XSUM_XXH128_testdata[9424] */ + { 3141, 0x9E3779B185EBCA8DULL, { 0xF0C7C97645AFA36CULL, 0xA15A759CC691F2D7ULL } }, /* XSUM_XXH128_testdata[9425] */ + { 3142, 0x0000000000000000ULL, { 0x8EBE2C0D983672D1ULL, 0xDC04B2CE6469660EULL } }, /* XSUM_XXH128_testdata[9426] */ + { 3142, 0x000000009E3779B1ULL, { 0x26191168D5C41EBCULL, 0x5F60413C478277CBULL } }, /* XSUM_XXH128_testdata[9427] */ + { 3142, 0x9E3779B185EBCA8DULL, { 0x7BF659361A6376B3ULL, 0xF9FF597A157AEF91ULL } }, /* XSUM_XXH128_testdata[9428] */ + { 3143, 0x0000000000000000ULL, { 0x7752767611545404ULL, 0x81682A8D8D964913ULL } }, /* XSUM_XXH128_testdata[9429] */ + { 3143, 0x000000009E3779B1ULL, { 0x7914DBAAF23CE330ULL, 0x9C9A804744AB7B8DULL } }, /* XSUM_XXH128_testdata[9430] */ + { 3143, 0x9E3779B185EBCA8DULL, { 0x260BFD3E65208182ULL, 0xE0FF1F360BDB8CD8ULL } }, /* XSUM_XXH128_testdata[9431] */ + { 3144, 0x0000000000000000ULL, { 0xBE7A4C7BED46B55BULL, 0x9BAE25F6ACBF3B55ULL } }, /* XSUM_XXH128_testdata[9432] */ + { 3144, 0x000000009E3779B1ULL, { 0x3A691675C8F5ADD8ULL, 0xA2E3A3C5A893E646ULL } }, /* XSUM_XXH128_testdata[9433] */ + { 3144, 0x9E3779B185EBCA8DULL, { 0x92131DB8BF216CD6ULL, 0x340ED41011F4CEBBULL } }, /* XSUM_XXH128_testdata[9434] */ + { 3145, 0x0000000000000000ULL, { 0xF2500C96A26A435AULL, 0x7B427E5FB674B9B3ULL } }, /* XSUM_XXH128_testdata[9435] */ + { 3145, 0x000000009E3779B1ULL, { 0xE3096C0CF9B613ABULL, 0x13FF9F27F155C7EEULL } }, /* XSUM_XXH128_testdata[9436] */ + { 3145, 0x9E3779B185EBCA8DULL, { 0x42B8DE92C6B1CF90ULL, 0x5CAA7330B5B7911EULL } }, /* XSUM_XXH128_testdata[9437] */ + { 3146, 0x0000000000000000ULL, { 0x7283019679119DD4ULL, 0x0B59C47D7E4BE7E8ULL } }, /* XSUM_XXH128_testdata[9438] */ + { 3146, 0x000000009E3779B1ULL, { 0xF33A63D6D5C3BCE6ULL, 0xC4DA98C70F28826AULL } }, /* XSUM_XXH128_testdata[9439] */ + { 3146, 0x9E3779B185EBCA8DULL, { 0xAC866D69D4189BE0ULL, 0x66B9F504226A9C9BULL } }, /* XSUM_XXH128_testdata[9440] */ + { 3147, 0x0000000000000000ULL, { 0xEE62C8434C674EFDULL, 0x52791DD78ED03663ULL } }, /* XSUM_XXH128_testdata[9441] */ + { 3147, 0x000000009E3779B1ULL, { 0xDE532BBFEBD70C98ULL, 0x962B6867D8A8FD10ULL } }, /* XSUM_XXH128_testdata[9442] */ + { 3147, 0x9E3779B185EBCA8DULL, { 0xB8B22ADA709264B6ULL, 0xF4F8FFC6F0C2B41CULL } }, /* XSUM_XXH128_testdata[9443] */ + { 3148, 0x0000000000000000ULL, { 0x7D74E58E0BEFDB70ULL, 0x719C3BC481B6216BULL } }, /* XSUM_XXH128_testdata[9444] */ + { 3148, 0x000000009E3779B1ULL, { 0x626499006289FD61ULL, 0xE4D7F3111E97A364ULL } }, /* XSUM_XXH128_testdata[9445] */ + { 3148, 0x9E3779B185EBCA8DULL, { 0xF77695F5F393512DULL, 0x0A8EE89E1E9A0F9BULL } }, /* XSUM_XXH128_testdata[9446] */ + { 3149, 0x0000000000000000ULL, { 0x1FDDD0BAD4CE88C9ULL, 0xB47DBD792421C08CULL } }, /* XSUM_XXH128_testdata[9447] */ + { 3149, 0x000000009E3779B1ULL, { 0xACEA06034BE35867ULL, 0x28646A58C32E8E61ULL } }, /* XSUM_XXH128_testdata[9448] */ + { 3149, 0x9E3779B185EBCA8DULL, { 0xB3EFE44467B32FEAULL, 0x3F3BDE7A510B011BULL } }, /* XSUM_XXH128_testdata[9449] */ + { 3150, 0x0000000000000000ULL, { 0x38D6BCB4926F185CULL, 0xFD763841F0B09B6BULL } }, /* XSUM_XXH128_testdata[9450] */ + { 3150, 0x000000009E3779B1ULL, { 0x1CD1ADBB410D19E4ULL, 0xAA61F743DA9D1E8AULL } }, /* XSUM_XXH128_testdata[9451] */ + { 3150, 0x9E3779B185EBCA8DULL, { 0x0FC39459D2521D4EULL, 0x9C3F60C10F622128ULL } }, /* XSUM_XXH128_testdata[9452] */ + { 3151, 0x0000000000000000ULL, { 0x855665D5F6FA8D52ULL, 0x797EA44FEB23DF9EULL } }, /* XSUM_XXH128_testdata[9453] */ + { 3151, 0x000000009E3779B1ULL, { 0xCCEFFBC0CB9FBD08ULL, 0x260DB4940E9DA08EULL } }, /* XSUM_XXH128_testdata[9454] */ + { 3151, 0x9E3779B185EBCA8DULL, { 0x2EA467EEF6193680ULL, 0xFBC54C0A5CE3758FULL } }, /* XSUM_XXH128_testdata[9455] */ + { 3152, 0x0000000000000000ULL, { 0xB1C8419925DC1A9AULL, 0xF8213CEFD0FCC625ULL } }, /* XSUM_XXH128_testdata[9456] */ + { 3152, 0x000000009E3779B1ULL, { 0x3F5D848B06EC312FULL, 0x7C07B2C0ECEBD084ULL } }, /* XSUM_XXH128_testdata[9457] */ + { 3152, 0x9E3779B185EBCA8DULL, { 0xE8946ACD5185D7FBULL, 0x5F584B0117E0AF68ULL } }, /* XSUM_XXH128_testdata[9458] */ + { 3153, 0x0000000000000000ULL, { 0xBC151DA81698FCFEULL, 0xF55FBAC4D4D8E24DULL } }, /* XSUM_XXH128_testdata[9459] */ + { 3153, 0x000000009E3779B1ULL, { 0xA927FEF3B46A7C33ULL, 0x8774BBF8A2F70E53ULL } }, /* XSUM_XXH128_testdata[9460] */ + { 3153, 0x9E3779B185EBCA8DULL, { 0xAC962934E496454EULL, 0x304B6BFE8170E883ULL } }, /* XSUM_XXH128_testdata[9461] */ + { 3154, 0x0000000000000000ULL, { 0x4DEDCFFA68D5467EULL, 0x700122800630D681ULL } }, /* XSUM_XXH128_testdata[9462] */ + { 3154, 0x000000009E3779B1ULL, { 0x8EA68B738E358C73ULL, 0x10252C42A793BDAEULL } }, /* XSUM_XXH128_testdata[9463] */ + { 3154, 0x9E3779B185EBCA8DULL, { 0x8A019BF926F56AFCULL, 0x7B4324D04988F04BULL } }, /* XSUM_XXH128_testdata[9464] */ + { 3155, 0x0000000000000000ULL, { 0xC5F668C2918366E7ULL, 0x552BD4D0AB7C54EEULL } }, /* XSUM_XXH128_testdata[9465] */ + { 3155, 0x000000009E3779B1ULL, { 0x69DDE2B4D11FA0E0ULL, 0x1B3EE2A4179C9158ULL } }, /* XSUM_XXH128_testdata[9466] */ + { 3155, 0x9E3779B185EBCA8DULL, { 0x45D2A4EB35321947ULL, 0x07270DA3DC3A8142ULL } }, /* XSUM_XXH128_testdata[9467] */ + { 3156, 0x0000000000000000ULL, { 0x67D816DEAC08D438ULL, 0xA885673378F4289FULL } }, /* XSUM_XXH128_testdata[9468] */ + { 3156, 0x000000009E3779B1ULL, { 0x9CB5F166EBCF354DULL, 0x3C9C1445D104096AULL } }, /* XSUM_XXH128_testdata[9469] */ + { 3156, 0x9E3779B185EBCA8DULL, { 0x79739B9941637BC9ULL, 0x16E3C9DE57C1F114ULL } }, /* XSUM_XXH128_testdata[9470] */ + { 3157, 0x0000000000000000ULL, { 0x32DC83E1F0CC21EDULL, 0xF7B5D5E36B21A57CULL } }, /* XSUM_XXH128_testdata[9471] */ + { 3157, 0x000000009E3779B1ULL, { 0x5D0D2E5DEF7CDD9EULL, 0x46BE7FCE8BF717C0ULL } }, /* XSUM_XXH128_testdata[9472] */ + { 3157, 0x9E3779B185EBCA8DULL, { 0x7B527F237756C38DULL, 0xE95CD3D5FB1E3271ULL } }, /* XSUM_XXH128_testdata[9473] */ + { 3158, 0x0000000000000000ULL, { 0x06D81FE3725F1B9CULL, 0x29F7E7C43DA0CE4CULL } }, /* XSUM_XXH128_testdata[9474] */ + { 3158, 0x000000009E3779B1ULL, { 0x68FE175EDEF6AE0DULL, 0xDA1530EFD4EDDAB6ULL } }, /* XSUM_XXH128_testdata[9475] */ + { 3158, 0x9E3779B185EBCA8DULL, { 0x0C08026E67295C55ULL, 0xD7351A0D4B76D546ULL } }, /* XSUM_XXH128_testdata[9476] */ + { 3159, 0x0000000000000000ULL, { 0xDB8FA3B1AFB7ECBAULL, 0x66A1FD3A5C63C5BBULL } }, /* XSUM_XXH128_testdata[9477] */ + { 3159, 0x000000009E3779B1ULL, { 0x1A12C03231EBE860ULL, 0x6BDC189D5AD92807ULL } }, /* XSUM_XXH128_testdata[9478] */ + { 3159, 0x9E3779B185EBCA8DULL, { 0x79EDA5CF3C973FDAULL, 0xCCFAB3881B1C0044ULL } }, /* XSUM_XXH128_testdata[9479] */ + { 3160, 0x0000000000000000ULL, { 0x5BBDE357F603F527ULL, 0x607DFB1DBE7A12E7ULL } }, /* XSUM_XXH128_testdata[9480] */ + { 3160, 0x000000009E3779B1ULL, { 0xA86E32924D73A56AULL, 0x53A108F4883FD412ULL } }, /* XSUM_XXH128_testdata[9481] */ + { 3160, 0x9E3779B185EBCA8DULL, { 0xB1A42426012B539AULL, 0xE867C9F1CBEA1631ULL } }, /* XSUM_XXH128_testdata[9482] */ + { 3161, 0x0000000000000000ULL, { 0xF8DCBC45A4C0C21EULL, 0x0960A06C4C3A4BF7ULL } }, /* XSUM_XXH128_testdata[9483] */ + { 3161, 0x000000009E3779B1ULL, { 0x1F9134E0378094FAULL, 0xD91AA4F35DEA1978ULL } }, /* XSUM_XXH128_testdata[9484] */ + { 3161, 0x9E3779B185EBCA8DULL, { 0xDD6271CEEC1093A2ULL, 0xFB94F359E761401DULL } }, /* XSUM_XXH128_testdata[9485] */ + { 3162, 0x0000000000000000ULL, { 0x80FFBDF5A887CF78ULL, 0xBDAF6C0AC593177CULL } }, /* XSUM_XXH128_testdata[9486] */ + { 3162, 0x000000009E3779B1ULL, { 0x00BB364FA51EB0FAULL, 0x808251F9ECC64B85ULL } }, /* XSUM_XXH128_testdata[9487] */ + { 3162, 0x9E3779B185EBCA8DULL, { 0x33A277578F7C70A7ULL, 0x987FFB62B00FC06DULL } }, /* XSUM_XXH128_testdata[9488] */ + { 3163, 0x0000000000000000ULL, { 0x7CB788B0AAD0217BULL, 0xFB98736154BC7E16ULL } }, /* XSUM_XXH128_testdata[9489] */ + { 3163, 0x000000009E3779B1ULL, { 0xE7B7071586D955C9ULL, 0x363C6F6B7DB7F31FULL } }, /* XSUM_XXH128_testdata[9490] */ + { 3163, 0x9E3779B185EBCA8DULL, { 0xC227D2FF3DF3C920ULL, 0x20CB567C25DEED0BULL } }, /* XSUM_XXH128_testdata[9491] */ + { 3164, 0x0000000000000000ULL, { 0xAF2B32B04A995872ULL, 0xF0F54204AFC7BA3FULL } }, /* XSUM_XXH128_testdata[9492] */ + { 3164, 0x000000009E3779B1ULL, { 0x101B1AE2830D5AA9ULL, 0x6CB615532DE0D4C6ULL } }, /* XSUM_XXH128_testdata[9493] */ + { 3164, 0x9E3779B185EBCA8DULL, { 0x7EE4CCD02886B51BULL, 0x17B1C212E18C3C13ULL } }, /* XSUM_XXH128_testdata[9494] */ + { 3165, 0x0000000000000000ULL, { 0xCA116C1D32F16850ULL, 0x9066E69DCD089B57ULL } }, /* XSUM_XXH128_testdata[9495] */ + { 3165, 0x000000009E3779B1ULL, { 0x9A3CC7E1F1EB7B0FULL, 0x2FAAFBBD48F35AE7ULL } }, /* XSUM_XXH128_testdata[9496] */ + { 3165, 0x9E3779B185EBCA8DULL, { 0x40DFBFE05CD60823ULL, 0xA9E11F4865A2D892ULL } }, /* XSUM_XXH128_testdata[9497] */ + { 3166, 0x0000000000000000ULL, { 0x721C1AF6E46B140BULL, 0x7AAF2B627BCC65CAULL } }, /* XSUM_XXH128_testdata[9498] */ + { 3166, 0x000000009E3779B1ULL, { 0x55AB62FAAF0FA19DULL, 0xEFA2227239B9F5B5ULL } }, /* XSUM_XXH128_testdata[9499] */ + { 3166, 0x9E3779B185EBCA8DULL, { 0xB57F8B4F4981F8A8ULL, 0x2D215F07596BCC11ULL } }, /* XSUM_XXH128_testdata[9500] */ + { 3167, 0x0000000000000000ULL, { 0xDD4A21EB8827AFA9ULL, 0xCC39039BB860F781ULL } }, /* XSUM_XXH128_testdata[9501] */ + { 3167, 0x000000009E3779B1ULL, { 0x21C51ACE619E5E03ULL, 0x70BBB963650CF672ULL } }, /* XSUM_XXH128_testdata[9502] */ + { 3167, 0x9E3779B185EBCA8DULL, { 0xAC727DD105324DCFULL, 0xFEFAD7AACD1DFEEBULL } }, /* XSUM_XXH128_testdata[9503] */ + { 3168, 0x0000000000000000ULL, { 0xC5D7E262E4384AB3ULL, 0x21D9CABC9DB5042FULL } }, /* XSUM_XXH128_testdata[9504] */ + { 3168, 0x000000009E3779B1ULL, { 0x5794BECC1ECB9979ULL, 0x9A2AF551408920E1ULL } }, /* XSUM_XXH128_testdata[9505] */ + { 3168, 0x9E3779B185EBCA8DULL, { 0xEEB067CADF77011EULL, 0x0676D6447DBFAD0DULL } }, /* XSUM_XXH128_testdata[9506] */ + { 3169, 0x0000000000000000ULL, { 0x9218F4A889AA03D8ULL, 0x0EE2823659D5451BULL } }, /* XSUM_XXH128_testdata[9507] */ + { 3169, 0x000000009E3779B1ULL, { 0x264E7C5D65ADAC52ULL, 0xC8594FC3A4D96463ULL } }, /* XSUM_XXH128_testdata[9508] */ + { 3169, 0x9E3779B185EBCA8DULL, { 0xCBEC7F6BBC8A85EBULL, 0xA1951E7CBDDE47F7ULL } }, /* XSUM_XXH128_testdata[9509] */ + { 3170, 0x0000000000000000ULL, { 0xDE01D8F5378D481BULL, 0x9B7C7208C780A6C8ULL } }, /* XSUM_XXH128_testdata[9510] */ + { 3170, 0x000000009E3779B1ULL, { 0xF73AAB6E411A6858ULL, 0xCDC079F66AC35220ULL } }, /* XSUM_XXH128_testdata[9511] */ + { 3170, 0x9E3779B185EBCA8DULL, { 0xA8D425444A3E7BF5ULL, 0xB8529F3A7319CA7AULL } }, /* XSUM_XXH128_testdata[9512] */ + { 3171, 0x0000000000000000ULL, { 0xBB4477B4F1092CAEULL, 0x7F4680BF2373DE77ULL } }, /* XSUM_XXH128_testdata[9513] */ + { 3171, 0x000000009E3779B1ULL, { 0x629B5A371E328E83ULL, 0xAD17121D7BB278A9ULL } }, /* XSUM_XXH128_testdata[9514] */ + { 3171, 0x9E3779B185EBCA8DULL, { 0xAF9138F57295DF4EULL, 0x6821083BC7275DBCULL } }, /* XSUM_XXH128_testdata[9515] */ + { 3172, 0x0000000000000000ULL, { 0xCEF365E0B1653DD0ULL, 0x5E9DA3024919C647ULL } }, /* XSUM_XXH128_testdata[9516] */ + { 3172, 0x000000009E3779B1ULL, { 0xE9EDF49CD6F811DCULL, 0x9C3E911576BC84EAULL } }, /* XSUM_XXH128_testdata[9517] */ + { 3172, 0x9E3779B185EBCA8DULL, { 0xF59389E7F8293C0BULL, 0x61E65B01FCAD7489ULL } }, /* XSUM_XXH128_testdata[9518] */ + { 3173, 0x0000000000000000ULL, { 0xFA644D72D95371EBULL, 0xB218F1A27B7BF37FULL } }, /* XSUM_XXH128_testdata[9519] */ + { 3173, 0x000000009E3779B1ULL, { 0xB29A74743747ED04ULL, 0x6DFC42B3DFE10D64ULL } }, /* XSUM_XXH128_testdata[9520] */ + { 3173, 0x9E3779B185EBCA8DULL, { 0xC00024B7481AD55FULL, 0x11D2F58DCB1E69C3ULL } }, /* XSUM_XXH128_testdata[9521] */ + { 3174, 0x0000000000000000ULL, { 0x1938F58C6870DDE4ULL, 0xBB720BA2FFFB852FULL } }, /* XSUM_XXH128_testdata[9522] */ + { 3174, 0x000000009E3779B1ULL, { 0xDD7CB75218B11014ULL, 0x1B5D9475BFF462FBULL } }, /* XSUM_XXH128_testdata[9523] */ + { 3174, 0x9E3779B185EBCA8DULL, { 0x2AEF53C26297B485ULL, 0x7FD0675741AE1996ULL } }, /* XSUM_XXH128_testdata[9524] */ + { 3175, 0x0000000000000000ULL, { 0xA5B4D3ADA8247BE3ULL, 0x2162C708CCB8897CULL } }, /* XSUM_XXH128_testdata[9525] */ + { 3175, 0x000000009E3779B1ULL, { 0x2C88DEDAA60E0186ULL, 0x26EB851F9CB599AFULL } }, /* XSUM_XXH128_testdata[9526] */ + { 3175, 0x9E3779B185EBCA8DULL, { 0x69E247AC862672B7ULL, 0x0B99A672B18B2632ULL } }, /* XSUM_XXH128_testdata[9527] */ + { 3176, 0x0000000000000000ULL, { 0x6E0961238AD61E51ULL, 0x3DF72E01FDF1E01EULL } }, /* XSUM_XXH128_testdata[9528] */ + { 3176, 0x000000009E3779B1ULL, { 0x4C77C5AD636B90ECULL, 0x571449F97134F771ULL } }, /* XSUM_XXH128_testdata[9529] */ + { 3176, 0x9E3779B185EBCA8DULL, { 0xCD569004C2B170DFULL, 0xFDBEC4CB13E5071DULL } }, /* XSUM_XXH128_testdata[9530] */ + { 3177, 0x0000000000000000ULL, { 0xCF91B2CA001D8F69ULL, 0xEB50A4AEFE0C443FULL } }, /* XSUM_XXH128_testdata[9531] */ + { 3177, 0x000000009E3779B1ULL, { 0xF5C23E50BD57FF3DULL, 0x8C49E7ED65107301ULL } }, /* XSUM_XXH128_testdata[9532] */ + { 3177, 0x9E3779B185EBCA8DULL, { 0xB14BCA810E177D60ULL, 0x5B142FCBAA4FC0ABULL } }, /* XSUM_XXH128_testdata[9533] */ + { 3178, 0x0000000000000000ULL, { 0x6E888E518A0F027FULL, 0x9B3CEF2DC596DCC1ULL } }, /* XSUM_XXH128_testdata[9534] */ + { 3178, 0x000000009E3779B1ULL, { 0xE4A1C0B56ED9D9D6ULL, 0x5063D044163D4A85ULL } }, /* XSUM_XXH128_testdata[9535] */ + { 3178, 0x9E3779B185EBCA8DULL, { 0x79DA0978BE221017ULL, 0xCA7D3E2767048778ULL } }, /* XSUM_XXH128_testdata[9536] */ + { 3179, 0x0000000000000000ULL, { 0x99E992B164F58E57ULL, 0xA2B3F0135C8D52C3ULL } }, /* XSUM_XXH128_testdata[9537] */ + { 3179, 0x000000009E3779B1ULL, { 0xBEC587654F445D68ULL, 0xA3B429B8943A4B5DULL } }, /* XSUM_XXH128_testdata[9538] */ + { 3179, 0x9E3779B185EBCA8DULL, { 0xA990AB564E78F30DULL, 0x1AA73A6D7D97E01BULL } }, /* XSUM_XXH128_testdata[9539] */ + { 3180, 0x0000000000000000ULL, { 0xA7B031E2ABB1D9B9ULL, 0xCE9AE902F9869416ULL } }, /* XSUM_XXH128_testdata[9540] */ + { 3180, 0x000000009E3779B1ULL, { 0x1BC7A000E9C9F44DULL, 0x4ACA7AFFB8D0C015ULL } }, /* XSUM_XXH128_testdata[9541] */ + { 3180, 0x9E3779B185EBCA8DULL, { 0xA4E61E865A7D5D3BULL, 0x49D03ADD8AF9BAD1ULL } }, /* XSUM_XXH128_testdata[9542] */ + { 3181, 0x0000000000000000ULL, { 0xB23CE7F2568B5811ULL, 0x8FB3175F7B499B2AULL } }, /* XSUM_XXH128_testdata[9543] */ + { 3181, 0x000000009E3779B1ULL, { 0x2F25D51C8C59EDECULL, 0x762FA5F4D69A9E1FULL } }, /* XSUM_XXH128_testdata[9544] */ + { 3181, 0x9E3779B185EBCA8DULL, { 0x6B4F89A3C4EB7CE1ULL, 0x23153E15E8FE0838ULL } }, /* XSUM_XXH128_testdata[9545] */ + { 3182, 0x0000000000000000ULL, { 0x4EB82133191B1BB9ULL, 0x1C5E52D633E5553AULL } }, /* XSUM_XXH128_testdata[9546] */ + { 3182, 0x000000009E3779B1ULL, { 0xFDAA21767B38FD93ULL, 0x047FDD205B04B6C0ULL } }, /* XSUM_XXH128_testdata[9547] */ + { 3182, 0x9E3779B185EBCA8DULL, { 0x34799BCBAE6F22EBULL, 0xDDC90AB016BEC363ULL } }, /* XSUM_XXH128_testdata[9548] */ + { 3183, 0x0000000000000000ULL, { 0xEF646324A5097522ULL, 0xECCDA991DEFBF464ULL } }, /* XSUM_XXH128_testdata[9549] */ + { 3183, 0x000000009E3779B1ULL, { 0xE47272553105B543ULL, 0xF3D97B3D94EF51CBULL } }, /* XSUM_XXH128_testdata[9550] */ + { 3183, 0x9E3779B185EBCA8DULL, { 0x84B2C177605C0E14ULL, 0x3A65E980FFE09C1BULL } }, /* XSUM_XXH128_testdata[9551] */ + { 3184, 0x0000000000000000ULL, { 0x61F2380BEC36708BULL, 0x29CC04A5CADFEF89ULL } }, /* XSUM_XXH128_testdata[9552] */ + { 3184, 0x000000009E3779B1ULL, { 0x88A1983273B78629ULL, 0xF9F8FBBACC12E468ULL } }, /* XSUM_XXH128_testdata[9553] */ + { 3184, 0x9E3779B185EBCA8DULL, { 0x6B395E53284250DDULL, 0x4E2F34DA409E225DULL } }, /* XSUM_XXH128_testdata[9554] */ + { 3185, 0x0000000000000000ULL, { 0x7B672597E5745924ULL, 0xB15526999E63FAF9ULL } }, /* XSUM_XXH128_testdata[9555] */ + { 3185, 0x000000009E3779B1ULL, { 0x6B81A7A5AEBFA2BBULL, 0x79D59497CA26B509ULL } }, /* XSUM_XXH128_testdata[9556] */ + { 3185, 0x9E3779B185EBCA8DULL, { 0x1B3B332DB85C89C6ULL, 0x326D993AC0C6E625ULL } }, /* XSUM_XXH128_testdata[9557] */ + { 3186, 0x0000000000000000ULL, { 0x57588E8652F646B3ULL, 0x053DC4E514818133ULL } }, /* XSUM_XXH128_testdata[9558] */ + { 3186, 0x000000009E3779B1ULL, { 0xE2F098D3CA5A9F94ULL, 0x3814B10C23D46C28ULL } }, /* XSUM_XXH128_testdata[9559] */ + { 3186, 0x9E3779B185EBCA8DULL, { 0x25B922125C9144C8ULL, 0xBCFC5084D89F0481ULL } }, /* XSUM_XXH128_testdata[9560] */ + { 3187, 0x0000000000000000ULL, { 0xDF2FC9037E06173FULL, 0x8B82B354D8056D07ULL } }, /* XSUM_XXH128_testdata[9561] */ + { 3187, 0x000000009E3779B1ULL, { 0x7B49F69F74617F03ULL, 0xC41A4A27BE4ABF2FULL } }, /* XSUM_XXH128_testdata[9562] */ + { 3187, 0x9E3779B185EBCA8DULL, { 0x64138127DEC583E4ULL, 0xD65554E65ECE9EAEULL } }, /* XSUM_XXH128_testdata[9563] */ + { 3188, 0x0000000000000000ULL, { 0xCD4A4AFCD0540A03ULL, 0x9D62BA6EB1C63E8DULL } }, /* XSUM_XXH128_testdata[9564] */ + { 3188, 0x000000009E3779B1ULL, { 0x9883EE8134337339ULL, 0x8518863F4E6143A3ULL } }, /* XSUM_XXH128_testdata[9565] */ + { 3188, 0x9E3779B185EBCA8DULL, { 0x766D05399B680371ULL, 0x1B1D9AE8A6B6CB20ULL } }, /* XSUM_XXH128_testdata[9566] */ + { 3189, 0x0000000000000000ULL, { 0xE38C2538DFDFC867ULL, 0x2E6627FBCD960976ULL } }, /* XSUM_XXH128_testdata[9567] */ + { 3189, 0x000000009E3779B1ULL, { 0x84B972121D869CD6ULL, 0xF13863D2B034527DULL } }, /* XSUM_XXH128_testdata[9568] */ + { 3189, 0x9E3779B185EBCA8DULL, { 0xA51F716204993CE6ULL, 0x69F1C1BCF644295EULL } }, /* XSUM_XXH128_testdata[9569] */ + { 3190, 0x0000000000000000ULL, { 0x7B96AC539F64EC20ULL, 0xF132F3592A013852ULL } }, /* XSUM_XXH128_testdata[9570] */ + { 3190, 0x000000009E3779B1ULL, { 0xB8A0CF8725A8A8ABULL, 0xA53274B1802C4B22ULL } }, /* XSUM_XXH128_testdata[9571] */ + { 3190, 0x9E3779B185EBCA8DULL, { 0x171E356F3E050A39ULL, 0xA85B00C0AF32341BULL } }, /* XSUM_XXH128_testdata[9572] */ + { 3191, 0x0000000000000000ULL, { 0xBD29C98EFB036850ULL, 0x6CBFF9E3E74AE9AAULL } }, /* XSUM_XXH128_testdata[9573] */ + { 3191, 0x000000009E3779B1ULL, { 0x052AE8A16BD193BEULL, 0x18130D1E3914CE18ULL } }, /* XSUM_XXH128_testdata[9574] */ + { 3191, 0x9E3779B185EBCA8DULL, { 0xAA1DC8EA46F5581BULL, 0x961C38DC821EA789ULL } }, /* XSUM_XXH128_testdata[9575] */ + { 3192, 0x0000000000000000ULL, { 0x2CF893DB51A28DE4ULL, 0x02A9995C9D13C357ULL } }, /* XSUM_XXH128_testdata[9576] */ + { 3192, 0x000000009E3779B1ULL, { 0x2F076245AA78315BULL, 0xA6544DBEB469EF5AULL } }, /* XSUM_XXH128_testdata[9577] */ + { 3192, 0x9E3779B185EBCA8DULL, { 0xC47F8B7D70654B75ULL, 0xBED585F5307DB39AULL } }, /* XSUM_XXH128_testdata[9578] */ + { 3193, 0x0000000000000000ULL, { 0x5333861320F7224CULL, 0xE77EE0BBAD96BACDULL } }, /* XSUM_XXH128_testdata[9579] */ + { 3193, 0x000000009E3779B1ULL, { 0x8D97A2FB587A3E44ULL, 0xAC82DBE76356FB0BULL } }, /* XSUM_XXH128_testdata[9580] */ + { 3193, 0x9E3779B185EBCA8DULL, { 0x8805977B05B510F7ULL, 0x6F374071632CAC3EULL } }, /* XSUM_XXH128_testdata[9581] */ + { 3194, 0x0000000000000000ULL, { 0x71572463208AC824ULL, 0x5E23D112C1C89D53ULL } }, /* XSUM_XXH128_testdata[9582] */ + { 3194, 0x000000009E3779B1ULL, { 0x1662549C5DC439C6ULL, 0xC8A2730DDEEFDFD9ULL } }, /* XSUM_XXH128_testdata[9583] */ + { 3194, 0x9E3779B185EBCA8DULL, { 0xD738493B17010BE8ULL, 0xBA4A8EAA9AB84BA2ULL } }, /* XSUM_XXH128_testdata[9584] */ + { 3195, 0x0000000000000000ULL, { 0xBB1F7B7CBDD9DE66ULL, 0x599BE01816C0074CULL } }, /* XSUM_XXH128_testdata[9585] */ + { 3195, 0x000000009E3779B1ULL, { 0xA973D66E21588F15ULL, 0x33114724DF8C6901ULL } }, /* XSUM_XXH128_testdata[9586] */ + { 3195, 0x9E3779B185EBCA8DULL, { 0x63407B9EED2586E7ULL, 0x738AE2BAA15EC9C2ULL } }, /* XSUM_XXH128_testdata[9587] */ + { 3196, 0x0000000000000000ULL, { 0xE3C8FE53CA50AC3BULL, 0xF91E4746FB54FE20ULL } }, /* XSUM_XXH128_testdata[9588] */ + { 3196, 0x000000009E3779B1ULL, { 0x7C538AA00B3AE28CULL, 0x3B5EB4B029C3E821ULL } }, /* XSUM_XXH128_testdata[9589] */ + { 3196, 0x9E3779B185EBCA8DULL, { 0x7360FE7337E97DFAULL, 0xAA945D1351764895ULL } }, /* XSUM_XXH128_testdata[9590] */ + { 3197, 0x0000000000000000ULL, { 0x958B951AA7D6A602ULL, 0x311B58F8167E05D1ULL } }, /* XSUM_XXH128_testdata[9591] */ + { 3197, 0x000000009E3779B1ULL, { 0xD0CEB4937BA797B6ULL, 0x307C215EBB428997ULL } }, /* XSUM_XXH128_testdata[9592] */ + { 3197, 0x9E3779B185EBCA8DULL, { 0x8D45E049E572DAC7ULL, 0x5461E921046DA5DFULL } }, /* XSUM_XXH128_testdata[9593] */ + { 3198, 0x0000000000000000ULL, { 0xF721684AD49AD334ULL, 0xAF5C8AC7C34E529CULL } }, /* XSUM_XXH128_testdata[9594] */ + { 3198, 0x000000009E3779B1ULL, { 0x0E1EDEBD72B2E10CULL, 0xB2F4B6DE96CA8D71ULL } }, /* XSUM_XXH128_testdata[9595] */ + { 3198, 0x9E3779B185EBCA8DULL, { 0xB09F86AB41D114A5ULL, 0xCB9C75351375154EULL } }, /* XSUM_XXH128_testdata[9596] */ + { 3199, 0x0000000000000000ULL, { 0x10937A9EA8245551ULL, 0x233AF391E30E4E0FULL } }, /* XSUM_XXH128_testdata[9597] */ + { 3199, 0x000000009E3779B1ULL, { 0x760E9D88004AF0F1ULL, 0x50812AC28BA035F6ULL } }, /* XSUM_XXH128_testdata[9598] */ + { 3199, 0x9E3779B185EBCA8DULL, { 0x374C2BE03FF66B93ULL, 0x0B8006358736E5D3ULL } }, /* XSUM_XXH128_testdata[9599] */ + { 3200, 0x0000000000000000ULL, { 0xE4F44142422C90AEULL, 0x66836464182028CAULL } }, /* XSUM_XXH128_testdata[9600] */ + { 3200, 0x000000009E3779B1ULL, { 0x48A485D44C5DA580ULL, 0x9CA19F1378DDFDB6ULL } }, /* XSUM_XXH128_testdata[9601] */ + { 3200, 0x9E3779B185EBCA8DULL, { 0x87B4AA4EBCE160EAULL, 0x0805F125CD937438ULL } }, /* XSUM_XXH128_testdata[9602] */ + { 3201, 0x0000000000000000ULL, { 0x41CCAA0B3010027FULL, 0xD6B8B9DA7A95CB35ULL } }, /* XSUM_XXH128_testdata[9603] */ + { 3201, 0x000000009E3779B1ULL, { 0x15EDB7F9773654E2ULL, 0x2736E1C11F152647ULL } }, /* XSUM_XXH128_testdata[9604] */ + { 3201, 0x9E3779B185EBCA8DULL, { 0x4D03036AAD73E5DEULL, 0x363D8FA0FF39A2B6ULL } }, /* XSUM_XXH128_testdata[9605] */ + { 3202, 0x0000000000000000ULL, { 0x8D3755C9954B5747ULL, 0xC36E79B4E8B3A27CULL } }, /* XSUM_XXH128_testdata[9606] */ + { 3202, 0x000000009E3779B1ULL, { 0x6A6265E168F4FB10ULL, 0x3FEE2DE9ABEFF395ULL } }, /* XSUM_XXH128_testdata[9607] */ + { 3202, 0x9E3779B185EBCA8DULL, { 0x0CA71FD194BDE3A7ULL, 0x401BC2C886EA941AULL } }, /* XSUM_XXH128_testdata[9608] */ + { 3203, 0x0000000000000000ULL, { 0x6666F844EBCE1C79ULL, 0xE3959FCB1834B4ECULL } }, /* XSUM_XXH128_testdata[9609] */ + { 3203, 0x000000009E3779B1ULL, { 0x2FE2C3591D035876ULL, 0xD616837CD88CE63FULL } }, /* XSUM_XXH128_testdata[9610] */ + { 3203, 0x9E3779B185EBCA8DULL, { 0xD480ECFD26CE75A3ULL, 0x4E1E4F8E3343D85CULL } }, /* XSUM_XXH128_testdata[9611] */ + { 3204, 0x0000000000000000ULL, { 0x4D0200F714A6AD28ULL, 0xEF0A7DE40698A58CULL } }, /* XSUM_XXH128_testdata[9612] */ + { 3204, 0x000000009E3779B1ULL, { 0xEFC112E8DF8AD662ULL, 0xEF24AE9FC733B403ULL } }, /* XSUM_XXH128_testdata[9613] */ + { 3204, 0x9E3779B185EBCA8DULL, { 0xA107631C511D1C36ULL, 0x18C6EDC62CB8EA80ULL } }, /* XSUM_XXH128_testdata[9614] */ + { 3205, 0x0000000000000000ULL, { 0x794974AC9022F826ULL, 0xD528E8E4ED2CE00FULL } }, /* XSUM_XXH128_testdata[9615] */ + { 3205, 0x000000009E3779B1ULL, { 0xB92300CDE618DE15ULL, 0x11EB86C432C549E5ULL } }, /* XSUM_XXH128_testdata[9616] */ + { 3205, 0x9E3779B185EBCA8DULL, { 0x1F908D5F57F7A269ULL, 0xD81A00C6CB30299CULL } }, /* XSUM_XXH128_testdata[9617] */ + { 3206, 0x0000000000000000ULL, { 0x9C40FCD5E16690FBULL, 0xD324DC3BFA9A7637ULL } }, /* XSUM_XXH128_testdata[9618] */ + { 3206, 0x000000009E3779B1ULL, { 0xCA0D782379268408ULL, 0x6E45D3039F430C8FULL } }, /* XSUM_XXH128_testdata[9619] */ + { 3206, 0x9E3779B185EBCA8DULL, { 0xC6F7CCD7ACCDB0CFULL, 0xAF9EED43C9D9BC3BULL } }, /* XSUM_XXH128_testdata[9620] */ + { 3207, 0x0000000000000000ULL, { 0xDE08B46FADEB1AB9ULL, 0xD0F075C383C5DF26ULL } }, /* XSUM_XXH128_testdata[9621] */ + { 3207, 0x000000009E3779B1ULL, { 0xB214842EDD94BD19ULL, 0x8EF200711FC45CCFULL } }, /* XSUM_XXH128_testdata[9622] */ + { 3207, 0x9E3779B185EBCA8DULL, { 0x514CF2CF2CBC93D1ULL, 0x7C7C4341E5E320CCULL } }, /* XSUM_XXH128_testdata[9623] */ + { 3208, 0x0000000000000000ULL, { 0x8A7438A43529C222ULL, 0x625AEDC5227223B3ULL } }, /* XSUM_XXH128_testdata[9624] */ + { 3208, 0x000000009E3779B1ULL, { 0x88233A53244A5AE7ULL, 0x8FCA330D87467D03ULL } }, /* XSUM_XXH128_testdata[9625] */ + { 3208, 0x9E3779B185EBCA8DULL, { 0x1A227D3389B55505ULL, 0x21ECCE4F3248767DULL } }, /* XSUM_XXH128_testdata[9626] */ + { 3209, 0x0000000000000000ULL, { 0x50DD979D54711E20ULL, 0xF195C078C53EA4CCULL } }, /* XSUM_XXH128_testdata[9627] */ + { 3209, 0x000000009E3779B1ULL, { 0x9A9DEDDBA1FD8FEFULL, 0xB36653894542E5E4ULL } }, /* XSUM_XXH128_testdata[9628] */ + { 3209, 0x9E3779B185EBCA8DULL, { 0xBB983FBA9B8D6000ULL, 0xD910876346F514C0ULL } }, /* XSUM_XXH128_testdata[9629] */ + { 3210, 0x0000000000000000ULL, { 0x327FD7CC0801A0E2ULL, 0x565A454217B5D73BULL } }, /* XSUM_XXH128_testdata[9630] */ + { 3210, 0x000000009E3779B1ULL, { 0x280FCC1D1E742AD8ULL, 0xD6894B7A0236C71BULL } }, /* XSUM_XXH128_testdata[9631] */ + { 3210, 0x9E3779B185EBCA8DULL, { 0xDC5196C9020C217CULL, 0x9BDD3AD6009079F9ULL } }, /* XSUM_XXH128_testdata[9632] */ + { 3211, 0x0000000000000000ULL, { 0x39E068DB5A6B02DBULL, 0xF62C84545C0281F1ULL } }, /* XSUM_XXH128_testdata[9633] */ + { 3211, 0x000000009E3779B1ULL, { 0x994F100594EC34B8ULL, 0xF2D093322C96D766ULL } }, /* XSUM_XXH128_testdata[9634] */ + { 3211, 0x9E3779B185EBCA8DULL, { 0x75D4E560E34F1106ULL, 0xBAA44D885443731AULL } }, /* XSUM_XXH128_testdata[9635] */ + { 3212, 0x0000000000000000ULL, { 0x29A0143EDE45AEE1ULL, 0x976C3835463937EFULL } }, /* XSUM_XXH128_testdata[9636] */ + { 3212, 0x000000009E3779B1ULL, { 0x0347D8F4FFEB92B3ULL, 0x733513490DDCC26AULL } }, /* XSUM_XXH128_testdata[9637] */ + { 3212, 0x9E3779B185EBCA8DULL, { 0xAF25DF4AAFEDF21AULL, 0x23B0DE734A96E757ULL } }, /* XSUM_XXH128_testdata[9638] */ + { 3213, 0x0000000000000000ULL, { 0x6343015E343C3D4FULL, 0x257E098313F8DBA1ULL } }, /* XSUM_XXH128_testdata[9639] */ + { 3213, 0x000000009E3779B1ULL, { 0xED1F6FF701ED2337ULL, 0xFAEF70173E65B1C0ULL } }, /* XSUM_XXH128_testdata[9640] */ + { 3213, 0x9E3779B185EBCA8DULL, { 0xB9664745FCAE35F9ULL, 0x1E1AE89AFF2D73CCULL } }, /* XSUM_XXH128_testdata[9641] */ + { 3214, 0x0000000000000000ULL, { 0xE3463CBC2B13D590ULL, 0x95DEE7453B300B62ULL } }, /* XSUM_XXH128_testdata[9642] */ + { 3214, 0x000000009E3779B1ULL, { 0x0D2C22D56AA33511ULL, 0x497795B613CED1B1ULL } }, /* XSUM_XXH128_testdata[9643] */ + { 3214, 0x9E3779B185EBCA8DULL, { 0xBFAE251499EA61C6ULL, 0x58B5967C2F5C3B7AULL } }, /* XSUM_XXH128_testdata[9644] */ + { 3215, 0x0000000000000000ULL, { 0xDA53BAC60D4D22FBULL, 0x5CF00CCAC72154DBULL } }, /* XSUM_XXH128_testdata[9645] */ + { 3215, 0x000000009E3779B1ULL, { 0xBB08AAB63B38F7C1ULL, 0x1215B41561208DF3ULL } }, /* XSUM_XXH128_testdata[9646] */ + { 3215, 0x9E3779B185EBCA8DULL, { 0xC330B390CBBB2745ULL, 0x07C0F8EE9D820C09ULL } }, /* XSUM_XXH128_testdata[9647] */ + { 3216, 0x0000000000000000ULL, { 0x33733C1897345AFEULL, 0x95F5E9091C10B813ULL } }, /* XSUM_XXH128_testdata[9648] */ + { 3216, 0x000000009E3779B1ULL, { 0x6800ED3B5D8F422BULL, 0xCF993FB29BF31E2BULL } }, /* XSUM_XXH128_testdata[9649] */ + { 3216, 0x9E3779B185EBCA8DULL, { 0x8CC5892CC7A8149CULL, 0x370D383C94E27F6EULL } }, /* XSUM_XXH128_testdata[9650] */ + { 3217, 0x0000000000000000ULL, { 0x1BCB0445A3CB7848ULL, 0x1AE168942EE51851ULL } }, /* XSUM_XXH128_testdata[9651] */ + { 3217, 0x000000009E3779B1ULL, { 0x9DE832E0A0F93341ULL, 0x1CCA5FCAFD8C9643ULL } }, /* XSUM_XXH128_testdata[9652] */ + { 3217, 0x9E3779B185EBCA8DULL, { 0xB605E36385A53084ULL, 0x8BFB869AAE699ACFULL } }, /* XSUM_XXH128_testdata[9653] */ + { 3218, 0x0000000000000000ULL, { 0xCB1AC0AA280D7940ULL, 0x73A49494D6F52BDFULL } }, /* XSUM_XXH128_testdata[9654] */ + { 3218, 0x000000009E3779B1ULL, { 0xD119E60014842B22ULL, 0x6186F4693BA9058CULL } }, /* XSUM_XXH128_testdata[9655] */ + { 3218, 0x9E3779B185EBCA8DULL, { 0x48A71403DDA6AA2AULL, 0xDAD341E203E09BB8ULL } }, /* XSUM_XXH128_testdata[9656] */ + { 3219, 0x0000000000000000ULL, { 0x198618AAF11FD491ULL, 0x3D6902EA2B64F31CULL } }, /* XSUM_XXH128_testdata[9657] */ + { 3219, 0x000000009E3779B1ULL, { 0x9B179CA9B5EFC919ULL, 0x01887ECBE894F14DULL } }, /* XSUM_XXH128_testdata[9658] */ + { 3219, 0x9E3779B185EBCA8DULL, { 0x3DE97BF2A3C67501ULL, 0x1C130E89597EA53BULL } }, /* XSUM_XXH128_testdata[9659] */ + { 3220, 0x0000000000000000ULL, { 0xF3FF97A90BAAB6D2ULL, 0x0AA9EAEFCD373BB9ULL } }, /* XSUM_XXH128_testdata[9660] */ + { 3220, 0x000000009E3779B1ULL, { 0x4F5829440589BEA6ULL, 0xB3F4D5897A87EF59ULL } }, /* XSUM_XXH128_testdata[9661] */ + { 3220, 0x9E3779B185EBCA8DULL, { 0xF99AC95EC5B45504ULL, 0xCE824B1DA11897FEULL } }, /* XSUM_XXH128_testdata[9662] */ + { 3221, 0x0000000000000000ULL, { 0x1C7A0A7A246C04EAULL, 0x432A17EFD1DF3EB6ULL } }, /* XSUM_XXH128_testdata[9663] */ + { 3221, 0x000000009E3779B1ULL, { 0xCDFEAF9A4FF2992AULL, 0x12F7B2A459580D77ULL } }, /* XSUM_XXH128_testdata[9664] */ + { 3221, 0x9E3779B185EBCA8DULL, { 0xE76310623B1F8C4BULL, 0x6D2BE04D6BC23AFAULL } }, /* XSUM_XXH128_testdata[9665] */ + { 3222, 0x0000000000000000ULL, { 0xA988BA83C7D83F50ULL, 0xC61B5C3A9848BC7EULL } }, /* XSUM_XXH128_testdata[9666] */ + { 3222, 0x000000009E3779B1ULL, { 0xCCF182233C5A4B7FULL, 0xC77A86DAE9F7B960ULL } }, /* XSUM_XXH128_testdata[9667] */ + { 3222, 0x9E3779B185EBCA8DULL, { 0x9439184E103217FDULL, 0x6673C2C3097D4C07ULL } }, /* XSUM_XXH128_testdata[9668] */ + { 3223, 0x0000000000000000ULL, { 0x8F522D070E6B88CEULL, 0xB955F58D2A3BEE52ULL } }, /* XSUM_XXH128_testdata[9669] */ + { 3223, 0x000000009E3779B1ULL, { 0x65F5F87EF7BFFE2FULL, 0x66EEAB7BBB67F2A9ULL } }, /* XSUM_XXH128_testdata[9670] */ + { 3223, 0x9E3779B185EBCA8DULL, { 0xEA27D437295C59CEULL, 0xF7EE23BFF0961582ULL } }, /* XSUM_XXH128_testdata[9671] */ + { 3224, 0x0000000000000000ULL, { 0xD02006011364318CULL, 0x5CEEEBC78A5A7055ULL } }, /* XSUM_XXH128_testdata[9672] */ + { 3224, 0x000000009E3779B1ULL, { 0x400A8A3217DC1DA0ULL, 0xCD26C7F404BCAAE9ULL } }, /* XSUM_XXH128_testdata[9673] */ + { 3224, 0x9E3779B185EBCA8DULL, { 0xA62255EA71CE8F03ULL, 0x1A1325788C759F2BULL } }, /* XSUM_XXH128_testdata[9674] */ + { 3225, 0x0000000000000000ULL, { 0xA0950D4312443264ULL, 0x69CA3D49E44CA27AULL } }, /* XSUM_XXH128_testdata[9675] */ + { 3225, 0x000000009E3779B1ULL, { 0xF26F1BCCECB1D281ULL, 0xB491F3BC10AC381BULL } }, /* XSUM_XXH128_testdata[9676] */ + { 3225, 0x9E3779B185EBCA8DULL, { 0xA388B1738E4DCE26ULL, 0x1CCA4F143BC47887ULL } }, /* XSUM_XXH128_testdata[9677] */ + { 3226, 0x0000000000000000ULL, { 0x924AAF6E6E149E4BULL, 0x4896F95B2C626160ULL } }, /* XSUM_XXH128_testdata[9678] */ + { 3226, 0x000000009E3779B1ULL, { 0x9A6E497B436A6079ULL, 0x75D59187A48DE29AULL } }, /* XSUM_XXH128_testdata[9679] */ + { 3226, 0x9E3779B185EBCA8DULL, { 0x3E205BEF5C51CBE5ULL, 0xE66AACE24803CD2AULL } }, /* XSUM_XXH128_testdata[9680] */ + { 3227, 0x0000000000000000ULL, { 0x7B79F55D2FCBCC2CULL, 0x16E1AE7441AE7C19ULL } }, /* XSUM_XXH128_testdata[9681] */ + { 3227, 0x000000009E3779B1ULL, { 0x960872C2770FF59EULL, 0x63C8467153740F89ULL } }, /* XSUM_XXH128_testdata[9682] */ + { 3227, 0x9E3779B185EBCA8DULL, { 0xC967B942DE4F6B41ULL, 0x5ED5791E61795267ULL } }, /* XSUM_XXH128_testdata[9683] */ + { 3228, 0x0000000000000000ULL, { 0x55A51FAB12C21F43ULL, 0xDB4491FFB8A756C3ULL } }, /* XSUM_XXH128_testdata[9684] */ + { 3228, 0x000000009E3779B1ULL, { 0xF3011E35C885B6DEULL, 0xA20E35E5B5D604F4ULL } }, /* XSUM_XXH128_testdata[9685] */ + { 3228, 0x9E3779B185EBCA8DULL, { 0xA555BDC2254BB1A2ULL, 0xD3CBADA55A7970B9ULL } }, /* XSUM_XXH128_testdata[9686] */ + { 3229, 0x0000000000000000ULL, { 0x297D5667C2932EA7ULL, 0xBAA3D3C4803C5F83ULL } }, /* XSUM_XXH128_testdata[9687] */ + { 3229, 0x000000009E3779B1ULL, { 0x17D95F06D0EB3011ULL, 0x625783CAF216C4C8ULL } }, /* XSUM_XXH128_testdata[9688] */ + { 3229, 0x9E3779B185EBCA8DULL, { 0x2E419470FD93628EULL, 0xA2CDABE0E48FE00EULL } }, /* XSUM_XXH128_testdata[9689] */ + { 3230, 0x0000000000000000ULL, { 0x348E764CE266D3A4ULL, 0x36E4CC4A2F22BDC9ULL } }, /* XSUM_XXH128_testdata[9690] */ + { 3230, 0x000000009E3779B1ULL, { 0x961E247BC3D1778EULL, 0xFB125FF618FA5F9DULL } }, /* XSUM_XXH128_testdata[9691] */ + { 3230, 0x9E3779B185EBCA8DULL, { 0xBC4D6463962C0C16ULL, 0x810EE6B8FA4E4327ULL } }, /* XSUM_XXH128_testdata[9692] */ + { 3231, 0x0000000000000000ULL, { 0xF7DEAE36D4A13F7BULL, 0x8A46ACC647AA3009ULL } }, /* XSUM_XXH128_testdata[9693] */ + { 3231, 0x000000009E3779B1ULL, { 0x5807EBDD3D1DCF2CULL, 0x21D6978E1CBB0A54ULL } }, /* XSUM_XXH128_testdata[9694] */ + { 3231, 0x9E3779B185EBCA8DULL, { 0x3AEF51CFBFBCFC23ULL, 0xCD76F40D58899F6AULL } }, /* XSUM_XXH128_testdata[9695] */ + { 3232, 0x0000000000000000ULL, { 0xAB1DA87080C2C0C9ULL, 0x26749F9A9E4FC3EEULL } }, /* XSUM_XXH128_testdata[9696] */ + { 3232, 0x000000009E3779B1ULL, { 0x4C2A777CE3E31A04ULL, 0x716FCB8C5C0CB466ULL } }, /* XSUM_XXH128_testdata[9697] */ + { 3232, 0x9E3779B185EBCA8DULL, { 0x7888A6FC9DC02F45ULL, 0x733EC63C9778DDE4ULL } }, /* XSUM_XXH128_testdata[9698] */ + { 3233, 0x0000000000000000ULL, { 0x28F2070C54DDE886ULL, 0x8A99B13C789643CDULL } }, /* XSUM_XXH128_testdata[9699] */ + { 3233, 0x000000009E3779B1ULL, { 0xAE7D7E3349E39831ULL, 0x461E9602B48691C5ULL } }, /* XSUM_XXH128_testdata[9700] */ + { 3233, 0x9E3779B185EBCA8DULL, { 0x518A60E025B9C80EULL, 0x2FEA11C2DC0E7BA9ULL } }, /* XSUM_XXH128_testdata[9701] */ + { 3234, 0x0000000000000000ULL, { 0x5E1FA7815D4E3ADAULL, 0xBBC62320A8F3CC58ULL } }, /* XSUM_XXH128_testdata[9702] */ + { 3234, 0x000000009E3779B1ULL, { 0xFF70CEA46B306FA2ULL, 0x1368CB91636D41F5ULL } }, /* XSUM_XXH128_testdata[9703] */ + { 3234, 0x9E3779B185EBCA8DULL, { 0x3FE12BF0DB2C4466ULL, 0xC7DAB895BC81EAF2ULL } }, /* XSUM_XXH128_testdata[9704] */ + { 3235, 0x0000000000000000ULL, { 0x5981A86021DC4747ULL, 0x2A10AE909B770AEBULL } }, /* XSUM_XXH128_testdata[9705] */ + { 3235, 0x000000009E3779B1ULL, { 0xBAA0293ADEA9F370ULL, 0xB2884A154DCF13A4ULL } }, /* XSUM_XXH128_testdata[9706] */ + { 3235, 0x9E3779B185EBCA8DULL, { 0xE5E102BCAF8AE325ULL, 0x294AD51E51A0B020ULL } }, /* XSUM_XXH128_testdata[9707] */ + { 3236, 0x0000000000000000ULL, { 0xE859E6D7B3DBEDC1ULL, 0x66A9DE57B3AA2808ULL } }, /* XSUM_XXH128_testdata[9708] */ + { 3236, 0x000000009E3779B1ULL, { 0x0A6D9DBEBDBE2632ULL, 0xE355FC2DBCCFEAE0ULL } }, /* XSUM_XXH128_testdata[9709] */ + { 3236, 0x9E3779B185EBCA8DULL, { 0x0AA3AF2339430811ULL, 0x4042CE8F07C4C66DULL } }, /* XSUM_XXH128_testdata[9710] */ + { 3237, 0x0000000000000000ULL, { 0x8BF0287F66CF1B7DULL, 0x8E5FA9322B547F3AULL } }, /* XSUM_XXH128_testdata[9711] */ + { 3237, 0x000000009E3779B1ULL, { 0x39FF56F26C979F0EULL, 0x945AF08D690813DEULL } }, /* XSUM_XXH128_testdata[9712] */ + { 3237, 0x9E3779B185EBCA8DULL, { 0x2759B8065D0F6FAAULL, 0xE8B74B54A324F80EULL } }, /* XSUM_XXH128_testdata[9713] */ + { 3238, 0x0000000000000000ULL, { 0xF41F7674BB560D40ULL, 0xC845F716B10418C1ULL } }, /* XSUM_XXH128_testdata[9714] */ + { 3238, 0x000000009E3779B1ULL, { 0x659FA50A239DFDD3ULL, 0x3572C6C9840845FBULL } }, /* XSUM_XXH128_testdata[9715] */ + { 3238, 0x9E3779B185EBCA8DULL, { 0x1B20B5D920F3298CULL, 0xA0DDEA56CADD1B7FULL } }, /* XSUM_XXH128_testdata[9716] */ + { 3239, 0x0000000000000000ULL, { 0xD3704CEE911EFC0DULL, 0x63FA7C984AA5ED4EULL } }, /* XSUM_XXH128_testdata[9717] */ + { 3239, 0x000000009E3779B1ULL, { 0xB7DA70C3EF5C1327ULL, 0xD0B45E6F259E3672ULL } }, /* XSUM_XXH128_testdata[9718] */ + { 3239, 0x9E3779B185EBCA8DULL, { 0xEB835F6123188D7CULL, 0xBF59A43C04EFD2F7ULL } }, /* XSUM_XXH128_testdata[9719] */ + { 3240, 0x0000000000000000ULL, { 0x57AF8FC2E141FE9FULL, 0x388A7D1D8D6E1E34ULL } }, /* XSUM_XXH128_testdata[9720] */ + { 3240, 0x000000009E3779B1ULL, { 0x58E6ED6F80C657F3ULL, 0xA2AAC118085C14CBULL } }, /* XSUM_XXH128_testdata[9721] */ + { 3240, 0x9E3779B185EBCA8DULL, { 0xF461FF724877E97FULL, 0x1BE98E0D61628F5EULL } }, /* XSUM_XXH128_testdata[9722] */ + { 3241, 0x0000000000000000ULL, { 0x2FF3C47F857C7F56ULL, 0x2D649760E99FDD7FULL } }, /* XSUM_XXH128_testdata[9723] */ + { 3241, 0x000000009E3779B1ULL, { 0xC5471286AA906824ULL, 0x4E63B81D1001DF11ULL } }, /* XSUM_XXH128_testdata[9724] */ + { 3241, 0x9E3779B185EBCA8DULL, { 0x3394AA51E8E71D51ULL, 0x40F4BCC5978C0D0FULL } }, /* XSUM_XXH128_testdata[9725] */ + { 3242, 0x0000000000000000ULL, { 0xCD86E6710567AB9DULL, 0x74E056A5CB7B6940ULL } }, /* XSUM_XXH128_testdata[9726] */ + { 3242, 0x000000009E3779B1ULL, { 0x458B385B009D238BULL, 0xE36A6EBEFE21F609ULL } }, /* XSUM_XXH128_testdata[9727] */ + { 3242, 0x9E3779B185EBCA8DULL, { 0x7AFCEB3D05B3F086ULL, 0x364C3B9D61A975B0ULL } }, /* XSUM_XXH128_testdata[9728] */ + { 3243, 0x0000000000000000ULL, { 0x3ECD3DFB69A5A02FULL, 0x4271A73905BDDAAEULL } }, /* XSUM_XXH128_testdata[9729] */ + { 3243, 0x000000009E3779B1ULL, { 0xC0E0684E8E001962ULL, 0x2BC1E80C819399D7ULL } }, /* XSUM_XXH128_testdata[9730] */ + { 3243, 0x9E3779B185EBCA8DULL, { 0x11A366BFBA1B1FF6ULL, 0x2F35C9E6F3293545ULL } }, /* XSUM_XXH128_testdata[9731] */ + { 3244, 0x0000000000000000ULL, { 0xC1836275539BBF33ULL, 0x926B74B45431A0F8ULL } }, /* XSUM_XXH128_testdata[9732] */ + { 3244, 0x000000009E3779B1ULL, { 0xD3AF3D4C60527AA9ULL, 0xD616DDCE484137CBULL } }, /* XSUM_XXH128_testdata[9733] */ + { 3244, 0x9E3779B185EBCA8DULL, { 0x0913E9453F9040C3ULL, 0xB664B3D235007419ULL } }, /* XSUM_XXH128_testdata[9734] */ + { 3245, 0x0000000000000000ULL, { 0x7883530DE619F0BBULL, 0xE75F9F258B633DB5ULL } }, /* XSUM_XXH128_testdata[9735] */ + { 3245, 0x000000009E3779B1ULL, { 0x9E515E4B3810ED39ULL, 0xF1C8B4592BDB53EBULL } }, /* XSUM_XXH128_testdata[9736] */ + { 3245, 0x9E3779B185EBCA8DULL, { 0xA8168205780B81D7ULL, 0x9729ED448789C160ULL } }, /* XSUM_XXH128_testdata[9737] */ + { 3246, 0x0000000000000000ULL, { 0x961D9ABC9110663CULL, 0xFFA5372FF0986D4DULL } }, /* XSUM_XXH128_testdata[9738] */ + { 3246, 0x000000009E3779B1ULL, { 0x0614A860FDB03187ULL, 0x5831644976912A9FULL } }, /* XSUM_XXH128_testdata[9739] */ + { 3246, 0x9E3779B185EBCA8DULL, { 0xC8044D5074ECEEA6ULL, 0xB0B489E225DC085FULL } }, /* XSUM_XXH128_testdata[9740] */ + { 3247, 0x0000000000000000ULL, { 0xF1A4528F93427127ULL, 0x21C85927021AAAC5ULL } }, /* XSUM_XXH128_testdata[9741] */ + { 3247, 0x000000009E3779B1ULL, { 0x1837E8079DFDF430ULL, 0x0C80690A35DC53F7ULL } }, /* XSUM_XXH128_testdata[9742] */ + { 3247, 0x9E3779B185EBCA8DULL, { 0x595C2D7A7E8CC7D3ULL, 0x74EE43E2700DEDFBULL } }, /* XSUM_XXH128_testdata[9743] */ + { 3248, 0x0000000000000000ULL, { 0x48B294E4222613AEULL, 0x8EF9B8D5808837C1ULL } }, /* XSUM_XXH128_testdata[9744] */ + { 3248, 0x000000009E3779B1ULL, { 0xFFBEA37D6545E323ULL, 0xF4CF196840593FC6ULL } }, /* XSUM_XXH128_testdata[9745] */ + { 3248, 0x9E3779B185EBCA8DULL, { 0x1C85BEBE8EC3E10AULL, 0x1619623BCF2F6641ULL } }, /* XSUM_XXH128_testdata[9746] */ + { 3249, 0x0000000000000000ULL, { 0x0B9195B0554CB009ULL, 0xC721A90AE634C777ULL } }, /* XSUM_XXH128_testdata[9747] */ + { 3249, 0x000000009E3779B1ULL, { 0x41A532916497AC41ULL, 0xCD75683245FB31FFULL } }, /* XSUM_XXH128_testdata[9748] */ + { 3249, 0x9E3779B185EBCA8DULL, { 0xFB5E602F3FF2A4FAULL, 0xB5FC16472561C814ULL } }, /* XSUM_XXH128_testdata[9749] */ + { 3250, 0x0000000000000000ULL, { 0x2BF68FE7F6AFE161ULL, 0x87E0E757165F9ED5ULL } }, /* XSUM_XXH128_testdata[9750] */ + { 3250, 0x000000009E3779B1ULL, { 0xB14568CAC322A43FULL, 0xD5358CB148286248ULL } }, /* XSUM_XXH128_testdata[9751] */ + { 3250, 0x9E3779B185EBCA8DULL, { 0x6F697117A9DD8EF4ULL, 0x9D2645F905D68451ULL } }, /* XSUM_XXH128_testdata[9752] */ + { 3251, 0x0000000000000000ULL, { 0x9D8C951C965C65D9ULL, 0xEECE1ABE1CFA5B58ULL } }, /* XSUM_XXH128_testdata[9753] */ + { 3251, 0x000000009E3779B1ULL, { 0xD90E322F866C1A39ULL, 0x46E4CFF2A4190302ULL } }, /* XSUM_XXH128_testdata[9754] */ + { 3251, 0x9E3779B185EBCA8DULL, { 0x25FC40DFE962BA9BULL, 0xF42678FA7B6AEAF3ULL } }, /* XSUM_XXH128_testdata[9755] */ + { 3252, 0x0000000000000000ULL, { 0x636813F1D275647DULL, 0x481D02A3A7948052ULL } }, /* XSUM_XXH128_testdata[9756] */ + { 3252, 0x000000009E3779B1ULL, { 0x4C7B4BDBE63E7F47ULL, 0x7057A8D01A8A0D9AULL } }, /* XSUM_XXH128_testdata[9757] */ + { 3252, 0x9E3779B185EBCA8DULL, { 0xC16AC4E59B00949AULL, 0x224FDD530F93C72AULL } }, /* XSUM_XXH128_testdata[9758] */ + { 3253, 0x0000000000000000ULL, { 0x79168EB9963AE95DULL, 0x9B800BE59110922FULL } }, /* XSUM_XXH128_testdata[9759] */ + { 3253, 0x000000009E3779B1ULL, { 0xC07BA844F5E8084FULL, 0x7AD2B22D04F1E408ULL } }, /* XSUM_XXH128_testdata[9760] */ + { 3253, 0x9E3779B185EBCA8DULL, { 0x2B86B765967A725CULL, 0x3F1DA0E2E180ED5DULL } }, /* XSUM_XXH128_testdata[9761] */ + { 3254, 0x0000000000000000ULL, { 0x4418D7EDCCA192CEULL, 0x0B3A46A70925123AULL } }, /* XSUM_XXH128_testdata[9762] */ + { 3254, 0x000000009E3779B1ULL, { 0x4C2DDB3633D9579FULL, 0xF5CDDBF3B49011F5ULL } }, /* XSUM_XXH128_testdata[9763] */ + { 3254, 0x9E3779B185EBCA8DULL, { 0xEADE7CC58ACD41E4ULL, 0x40A48DAF0951316DULL } }, /* XSUM_XXH128_testdata[9764] */ + { 3255, 0x0000000000000000ULL, { 0xA440E3AD2D93FAB4ULL, 0x22194C924AE33155ULL } }, /* XSUM_XXH128_testdata[9765] */ + { 3255, 0x000000009E3779B1ULL, { 0x120E80486686E40DULL, 0x785213FF15290F82ULL } }, /* XSUM_XXH128_testdata[9766] */ + { 3255, 0x9E3779B185EBCA8DULL, { 0x16AFC580F8754A16ULL, 0x1070F22CF791ED42ULL } }, /* XSUM_XXH128_testdata[9767] */ + { 3256, 0x0000000000000000ULL, { 0x6EE7EF3CBF414EC5ULL, 0x36F75D69DDD3A321ULL } }, /* XSUM_XXH128_testdata[9768] */ + { 3256, 0x000000009E3779B1ULL, { 0x714BC168508D4290ULL, 0xA53143FF867CBBE6ULL } }, /* XSUM_XXH128_testdata[9769] */ + { 3256, 0x9E3779B185EBCA8DULL, { 0x78D2D7BEC6CBE2A8ULL, 0x0F24898E5D64771BULL } }, /* XSUM_XXH128_testdata[9770] */ + { 3257, 0x0000000000000000ULL, { 0xED2C0FE9F32BB2A8ULL, 0xC2E11C34E65D2B50ULL } }, /* XSUM_XXH128_testdata[9771] */ + { 3257, 0x000000009E3779B1ULL, { 0xF395C74B68CAC6ADULL, 0xF070E05249CEF12BULL } }, /* XSUM_XXH128_testdata[9772] */ + { 3257, 0x9E3779B185EBCA8DULL, { 0x1FFC8441658EA638ULL, 0x4B2492D98C69112CULL } }, /* XSUM_XXH128_testdata[9773] */ + { 3258, 0x0000000000000000ULL, { 0x7B47DC76E070E20FULL, 0x97F3C8A7C04ADE46ULL } }, /* XSUM_XXH128_testdata[9774] */ + { 3258, 0x000000009E3779B1ULL, { 0x24611AA6D0DF2DD4ULL, 0x7F1EF4FEAAB4D023ULL } }, /* XSUM_XXH128_testdata[9775] */ + { 3258, 0x9E3779B185EBCA8DULL, { 0x746E32A296FC4368ULL, 0xEF7004E88B006E81ULL } }, /* XSUM_XXH128_testdata[9776] */ + { 3259, 0x0000000000000000ULL, { 0x91BA511409D2A7FAULL, 0x0C545761A45ECBB8ULL } }, /* XSUM_XXH128_testdata[9777] */ + { 3259, 0x000000009E3779B1ULL, { 0xB55410798B074AC6ULL, 0xA75B780CB929235EULL } }, /* XSUM_XXH128_testdata[9778] */ + { 3259, 0x9E3779B185EBCA8DULL, { 0xE82A453ED103E49FULL, 0x89A741EB763AA5C6ULL } }, /* XSUM_XXH128_testdata[9779] */ + { 3260, 0x0000000000000000ULL, { 0x8B401BB0AE7FE563ULL, 0xA264B0BC29CBBA70ULL } }, /* XSUM_XXH128_testdata[9780] */ + { 3260, 0x000000009E3779B1ULL, { 0xCCCAC24CD2B90133ULL, 0x5AE20B556D0B5FA1ULL } }, /* XSUM_XXH128_testdata[9781] */ + { 3260, 0x9E3779B185EBCA8DULL, { 0x2BD046201CE8C118ULL, 0x05CFF73E2CE3E57BULL } }, /* XSUM_XXH128_testdata[9782] */ + { 3261, 0x0000000000000000ULL, { 0x566A5A0C036794E6ULL, 0xD0BEF1C2DA82FFA6ULL } }, /* XSUM_XXH128_testdata[9783] */ + { 3261, 0x000000009E3779B1ULL, { 0x2B2F627E535BED58ULL, 0x8655BA6FD14FD4D9ULL } }, /* XSUM_XXH128_testdata[9784] */ + { 3261, 0x9E3779B185EBCA8DULL, { 0x17B908EC0C3CE7BBULL, 0x63DC02A88C3D8763ULL } }, /* XSUM_XXH128_testdata[9785] */ + { 3262, 0x0000000000000000ULL, { 0x1C013FA650289828ULL, 0x6C7F4999B1909AA4ULL } }, /* XSUM_XXH128_testdata[9786] */ + { 3262, 0x000000009E3779B1ULL, { 0x9A18778A5676DE7AULL, 0x1F841E7B598F831FULL } }, /* XSUM_XXH128_testdata[9787] */ + { 3262, 0x9E3779B185EBCA8DULL, { 0xD70F5E0594269646ULL, 0x4F0C9E9D115AA160ULL } }, /* XSUM_XXH128_testdata[9788] */ + { 3263, 0x0000000000000000ULL, { 0x5646399424235FFBULL, 0x84598744B4F196CCULL } }, /* XSUM_XXH128_testdata[9789] */ + { 3263, 0x000000009E3779B1ULL, { 0x6C3F3AAAA0CBFE45ULL, 0x396A4C7010335DF7ULL } }, /* XSUM_XXH128_testdata[9790] */ + { 3263, 0x9E3779B185EBCA8DULL, { 0x742383EE12CED5F1ULL, 0x385BDA4520E0F5E1ULL } }, /* XSUM_XXH128_testdata[9791] */ + { 3264, 0x0000000000000000ULL, { 0x9B8739702F078EAEULL, 0xFFF3605BACC00702ULL } }, /* XSUM_XXH128_testdata[9792] */ + { 3264, 0x000000009E3779B1ULL, { 0xA68170CD0B49C40BULL, 0xD86124F2E1F8B8CAULL } }, /* XSUM_XXH128_testdata[9793] */ + { 3264, 0x9E3779B185EBCA8DULL, { 0x184E648FBA928D2CULL, 0x11C2FAE8C84A6DE4ULL } }, /* XSUM_XXH128_testdata[9794] */ + { 3265, 0x0000000000000000ULL, { 0x0EC956D8FE806B22ULL, 0xE5D856687F829497ULL } }, /* XSUM_XXH128_testdata[9795] */ + { 3265, 0x000000009E3779B1ULL, { 0x41C39E57135E3681ULL, 0x73843679321E220DULL } }, /* XSUM_XXH128_testdata[9796] */ + { 3265, 0x9E3779B185EBCA8DULL, { 0x3CAAE786AAFE1AF7ULL, 0x5CD34FC906337636ULL } }, /* XSUM_XXH128_testdata[9797] */ + { 3266, 0x0000000000000000ULL, { 0x0A06674EBA2293F8ULL, 0x562EDFA28C8E4D29ULL } }, /* XSUM_XXH128_testdata[9798] */ + { 3266, 0x000000009E3779B1ULL, { 0x869AA67AF087642EULL, 0x88E9E9457A15CFB8ULL } }, /* XSUM_XXH128_testdata[9799] */ + { 3266, 0x9E3779B185EBCA8DULL, { 0xBE2884F3D07394B1ULL, 0x770FB93B985E3EDDULL } }, /* XSUM_XXH128_testdata[9800] */ + { 3267, 0x0000000000000000ULL, { 0x2F6DFF8AD0994EADULL, 0x2112AA6BF007DD3EULL } }, /* XSUM_XXH128_testdata[9801] */ + { 3267, 0x000000009E3779B1ULL, { 0xD47FC095297B70E0ULL, 0x263DE599E1056DFDULL } }, /* XSUM_XXH128_testdata[9802] */ + { 3267, 0x9E3779B185EBCA8DULL, { 0x6C4D1AB2AFA02DEAULL, 0x83E8F235BB85F7C8ULL } }, /* XSUM_XXH128_testdata[9803] */ + { 3268, 0x0000000000000000ULL, { 0x0D3D26B243410F6CULL, 0x87CDCE822998B4CAULL } }, /* XSUM_XXH128_testdata[9804] */ + { 3268, 0x000000009E3779B1ULL, { 0xCB6057200FB9154EULL, 0xE2359D9B7BE6074DULL } }, /* XSUM_XXH128_testdata[9805] */ + { 3268, 0x9E3779B185EBCA8DULL, { 0x57C056432DD87495ULL, 0xC325D9C49E8D91B7ULL } }, /* XSUM_XXH128_testdata[9806] */ + { 3269, 0x0000000000000000ULL, { 0x237DD207AFF853D8ULL, 0xE1498F2EF7A02E3CULL } }, /* XSUM_XXH128_testdata[9807] */ + { 3269, 0x000000009E3779B1ULL, { 0xC2E1B6A51C7F570FULL, 0x98B3132F6B7A1771ULL } }, /* XSUM_XXH128_testdata[9808] */ + { 3269, 0x9E3779B185EBCA8DULL, { 0xE8AFB4AA2B702614ULL, 0x595D3C6ED548FCFDULL } }, /* XSUM_XXH128_testdata[9809] */ + { 3270, 0x0000000000000000ULL, { 0x3F49BF7883FED811ULL, 0xFB9030DB7BEC9BB3ULL } }, /* XSUM_XXH128_testdata[9810] */ + { 3270, 0x000000009E3779B1ULL, { 0xA1882D2C9C34F22CULL, 0x682E3150CFE6F612ULL } }, /* XSUM_XXH128_testdata[9811] */ + { 3270, 0x9E3779B185EBCA8DULL, { 0x1C05DE58EC169FD6ULL, 0xFEBBD3E8F9F74CE5ULL } }, /* XSUM_XXH128_testdata[9812] */ + { 3271, 0x0000000000000000ULL, { 0xC48D63F39B62F523ULL, 0x4118053E4E8FE951ULL } }, /* XSUM_XXH128_testdata[9813] */ + { 3271, 0x000000009E3779B1ULL, { 0x1685D2CF2AEBE768ULL, 0x55D404FBD002F56CULL } }, /* XSUM_XXH128_testdata[9814] */ + { 3271, 0x9E3779B185EBCA8DULL, { 0x7CEE441E3B41E236ULL, 0x1A97823DB2F93094ULL } }, /* XSUM_XXH128_testdata[9815] */ + { 3272, 0x0000000000000000ULL, { 0xE585B402C5B27728ULL, 0x19E397453CF1282FULL } }, /* XSUM_XXH128_testdata[9816] */ + { 3272, 0x000000009E3779B1ULL, { 0xD1847B66B5FFF4E5ULL, 0x7F07C23473589D2DULL } }, /* XSUM_XXH128_testdata[9817] */ + { 3272, 0x9E3779B185EBCA8DULL, { 0x75335CFF84A6D040ULL, 0xDA1668420CDFE626ULL } }, /* XSUM_XXH128_testdata[9818] */ + { 3273, 0x0000000000000000ULL, { 0x17408941AA9636EDULL, 0x67969B5719FFFE79ULL } }, /* XSUM_XXH128_testdata[9819] */ + { 3273, 0x000000009E3779B1ULL, { 0xAF11AFFE9F0E179EULL, 0x8FE24E40EFDDB08AULL } }, /* XSUM_XXH128_testdata[9820] */ + { 3273, 0x9E3779B185EBCA8DULL, { 0xB34CAA8293B0E8D8ULL, 0xD2AC619EE89D378AULL } }, /* XSUM_XXH128_testdata[9821] */ + { 3274, 0x0000000000000000ULL, { 0x4C1BFB3D06B5B19DULL, 0xFD8F6DB4D5156B55ULL } }, /* XSUM_XXH128_testdata[9822] */ + { 3274, 0x000000009E3779B1ULL, { 0x6546D775A996A68AULL, 0xA2FDBE048EA23813ULL } }, /* XSUM_XXH128_testdata[9823] */ + { 3274, 0x9E3779B185EBCA8DULL, { 0x402C85067D5CFD99ULL, 0x2A186B8EDFDEBA4EULL } }, /* XSUM_XXH128_testdata[9824] */ + { 3275, 0x0000000000000000ULL, { 0x7D07873053C9F239ULL, 0xD4F5C5F72F16FAFDULL } }, /* XSUM_XXH128_testdata[9825] */ + { 3275, 0x000000009E3779B1ULL, { 0xA247091DA46900C2ULL, 0xC055045AAF3498F2ULL } }, /* XSUM_XXH128_testdata[9826] */ + { 3275, 0x9E3779B185EBCA8DULL, { 0xFE7CD26D019C5854ULL, 0xFE6BCF1C39A2206FULL } }, /* XSUM_XXH128_testdata[9827] */ + { 3276, 0x0000000000000000ULL, { 0x3AE4B482DAE90651ULL, 0x11BD6D7CE6F5FB4EULL } }, /* XSUM_XXH128_testdata[9828] */ + { 3276, 0x000000009E3779B1ULL, { 0x08880FAABBB5086BULL, 0x7CBA6FFB0CB9C11FULL } }, /* XSUM_XXH128_testdata[9829] */ + { 3276, 0x9E3779B185EBCA8DULL, { 0xD0773C5CD881FD75ULL, 0xC1C2FEF0C3E28BBFULL } }, /* XSUM_XXH128_testdata[9830] */ + { 3277, 0x0000000000000000ULL, { 0xB158E4DF2C1A8793ULL, 0xE186144BFD685A79ULL } }, /* XSUM_XXH128_testdata[9831] */ + { 3277, 0x000000009E3779B1ULL, { 0xDA1A45BC4DFB3CB9ULL, 0x1203706A0EDEED59ULL } }, /* XSUM_XXH128_testdata[9832] */ + { 3277, 0x9E3779B185EBCA8DULL, { 0x685E3DC975295240ULL, 0x3C1915B694B1ACB5ULL } }, /* XSUM_XXH128_testdata[9833] */ + { 3278, 0x0000000000000000ULL, { 0x6A46EA0EF200F7CEULL, 0x97CE1F4ECB703FA5ULL } }, /* XSUM_XXH128_testdata[9834] */ + { 3278, 0x000000009E3779B1ULL, { 0xC9C19B22F3EC90C4ULL, 0x1F3B104B24FD637BULL } }, /* XSUM_XXH128_testdata[9835] */ + { 3278, 0x9E3779B185EBCA8DULL, { 0x1A43B1238C6B6508ULL, 0x3DDE842320173A93ULL } }, /* XSUM_XXH128_testdata[9836] */ + { 3279, 0x0000000000000000ULL, { 0xE43A423E305A8565ULL, 0x8275059FA140AD1CULL } }, /* XSUM_XXH128_testdata[9837] */ + { 3279, 0x000000009E3779B1ULL, { 0xE5C0E3F4FD0AE3F6ULL, 0x05413438908851E7ULL } }, /* XSUM_XXH128_testdata[9838] */ + { 3279, 0x9E3779B185EBCA8DULL, { 0x8686418BF152D4DCULL, 0x0F17EA21EDB926AEULL } }, /* XSUM_XXH128_testdata[9839] */ + { 3280, 0x0000000000000000ULL, { 0x290CA8866A12AFFEULL, 0x3E5287D4F3325DD3ULL } }, /* XSUM_XXH128_testdata[9840] */ + { 3280, 0x000000009E3779B1ULL, { 0x91E1999A5EFD9931ULL, 0x97A04AB87A8F0829ULL } }, /* XSUM_XXH128_testdata[9841] */ + { 3280, 0x9E3779B185EBCA8DULL, { 0x6ACBB86F60374CF8ULL, 0x1B349FD5F9AD975AULL } }, /* XSUM_XXH128_testdata[9842] */ + { 3281, 0x0000000000000000ULL, { 0x8DBD8B41922B5078ULL, 0x814591A594C8EC2BULL } }, /* XSUM_XXH128_testdata[9843] */ + { 3281, 0x000000009E3779B1ULL, { 0x17759CE4CDA30150ULL, 0x2C1B436A82627745ULL } }, /* XSUM_XXH128_testdata[9844] */ + { 3281, 0x9E3779B185EBCA8DULL, { 0xFF09DEC6A3C20841ULL, 0xF035E01D36CD53B5ULL } }, /* XSUM_XXH128_testdata[9845] */ + { 3282, 0x0000000000000000ULL, { 0xEE787FB6216E6011ULL, 0x34ED8B43B14EE4A1ULL } }, /* XSUM_XXH128_testdata[9846] */ + { 3282, 0x000000009E3779B1ULL, { 0xF0A5BEBC6093D8D9ULL, 0x7016E62440F2801BULL } }, /* XSUM_XXH128_testdata[9847] */ + { 3282, 0x9E3779B185EBCA8DULL, { 0x98E9EE8F5070942CULL, 0x6965202591A61609ULL } }, /* XSUM_XXH128_testdata[9848] */ + { 3283, 0x0000000000000000ULL, { 0x953C27BDFDECF124ULL, 0x761B1BA4370F0DA6ULL } }, /* XSUM_XXH128_testdata[9849] */ + { 3283, 0x000000009E3779B1ULL, { 0x25BDDA2DE8B2CC51ULL, 0x99C20362D041FDB8ULL } }, /* XSUM_XXH128_testdata[9850] */ + { 3283, 0x9E3779B185EBCA8DULL, { 0x10AC6D3D9DC372B2ULL, 0x207C64E96ED4E54BULL } }, /* XSUM_XXH128_testdata[9851] */ + { 3284, 0x0000000000000000ULL, { 0xE4234E6A0823E382ULL, 0x408D56E420940F52ULL } }, /* XSUM_XXH128_testdata[9852] */ + { 3284, 0x000000009E3779B1ULL, { 0xF43BA86B66EEE360ULL, 0x431473E5F54C694FULL } }, /* XSUM_XXH128_testdata[9853] */ + { 3284, 0x9E3779B185EBCA8DULL, { 0x8BA7CE4934FEB2E1ULL, 0x6C0FA800F9E221E8ULL } }, /* XSUM_XXH128_testdata[9854] */ + { 3285, 0x0000000000000000ULL, { 0x5C403AC86FC535BCULL, 0xC19A53230262B384ULL } }, /* XSUM_XXH128_testdata[9855] */ + { 3285, 0x000000009E3779B1ULL, { 0xB45D044A0D995A30ULL, 0x0A04ADA0307AF7FAULL } }, /* XSUM_XXH128_testdata[9856] */ + { 3285, 0x9E3779B185EBCA8DULL, { 0x154C0CFAA9CCFD75ULL, 0x7CDA6C158C59365CULL } }, /* XSUM_XXH128_testdata[9857] */ + { 3286, 0x0000000000000000ULL, { 0xA429912EB2E28218ULL, 0xE6286AE59AAF5D65ULL } }, /* XSUM_XXH128_testdata[9858] */ + { 3286, 0x000000009E3779B1ULL, { 0x751DC54F054C892EULL, 0x3AAE8E7F647D591DULL } }, /* XSUM_XXH128_testdata[9859] */ + { 3286, 0x9E3779B185EBCA8DULL, { 0x72C6B7BD2A454604ULL, 0x73F2FAC3B0B68229ULL } }, /* XSUM_XXH128_testdata[9860] */ + { 3287, 0x0000000000000000ULL, { 0x9C06DC9435498F37ULL, 0x180C30FABAB9BFF7ULL } }, /* XSUM_XXH128_testdata[9861] */ + { 3287, 0x000000009E3779B1ULL, { 0x3BEE191E2DE543A3ULL, 0xAC1F6B9799E44538ULL } }, /* XSUM_XXH128_testdata[9862] */ + { 3287, 0x9E3779B185EBCA8DULL, { 0xC725960C2DE40EB7ULL, 0x2F5FC789F8617835ULL } }, /* XSUM_XXH128_testdata[9863] */ + { 3288, 0x0000000000000000ULL, { 0xFDC4819EF73EED40ULL, 0x66AAD8FE85F52A3BULL } }, /* XSUM_XXH128_testdata[9864] */ + { 3288, 0x000000009E3779B1ULL, { 0x835C3C118B216496ULL, 0xD707E51DA7C0B321ULL } }, /* XSUM_XXH128_testdata[9865] */ + { 3288, 0x9E3779B185EBCA8DULL, { 0x08F29DF35BB2DAE7ULL, 0xC5B55D662D375461ULL } }, /* XSUM_XXH128_testdata[9866] */ + { 3289, 0x0000000000000000ULL, { 0xD5055BB66A0D37BBULL, 0x0E0D28AEBF26F8C2ULL } }, /* XSUM_XXH128_testdata[9867] */ + { 3289, 0x000000009E3779B1ULL, { 0x1D1C00B1F953D9FFULL, 0x01612E6F1C814BD9ULL } }, /* XSUM_XXH128_testdata[9868] */ + { 3289, 0x9E3779B185EBCA8DULL, { 0x19D5799BECE479F4ULL, 0x49DDA86F8F30B177ULL } }, /* XSUM_XXH128_testdata[9869] */ + { 3290, 0x0000000000000000ULL, { 0x07382BB2BF607897ULL, 0x2507FFD92054F8AAULL } }, /* XSUM_XXH128_testdata[9870] */ + { 3290, 0x000000009E3779B1ULL, { 0x45E4F676ACC5BA44ULL, 0xE60D21E15DC2B433ULL } }, /* XSUM_XXH128_testdata[9871] */ + { 3290, 0x9E3779B185EBCA8DULL, { 0x0256F5995038CD26ULL, 0x6CD9025D11F71D9FULL } }, /* XSUM_XXH128_testdata[9872] */ + { 3291, 0x0000000000000000ULL, { 0x22A55154436863B3ULL, 0x8BB2A23F0C61B78CULL } }, /* XSUM_XXH128_testdata[9873] */ + { 3291, 0x000000009E3779B1ULL, { 0x3CCDAB1E4B77EB15ULL, 0x08A111369144E94DULL } }, /* XSUM_XXH128_testdata[9874] */ + { 3291, 0x9E3779B185EBCA8DULL, { 0x404FE5667BAD1D13ULL, 0xCEBC5F58BBB96898ULL } }, /* XSUM_XXH128_testdata[9875] */ + { 3292, 0x0000000000000000ULL, { 0x8C92B6C0DBCE279EULL, 0x2506079D880840A5ULL } }, /* XSUM_XXH128_testdata[9876] */ + { 3292, 0x000000009E3779B1ULL, { 0xFCEA11F17C4AF224ULL, 0x0117D97581B8C1EAULL } }, /* XSUM_XXH128_testdata[9877] */ + { 3292, 0x9E3779B185EBCA8DULL, { 0x2783832554DCF35FULL, 0x8B77BF98902A35B7ULL } }, /* XSUM_XXH128_testdata[9878] */ + { 3293, 0x0000000000000000ULL, { 0x116C41EB4A23AC65ULL, 0x612214E834B4645BULL } }, /* XSUM_XXH128_testdata[9879] */ + { 3293, 0x000000009E3779B1ULL, { 0xA07E8CBECFE53BD6ULL, 0xDB1E8748D61CF06BULL } }, /* XSUM_XXH128_testdata[9880] */ + { 3293, 0x9E3779B185EBCA8DULL, { 0xD1F55F5515EA8C61ULL, 0x66502C49CCB4E8A9ULL } }, /* XSUM_XXH128_testdata[9881] */ + { 3294, 0x0000000000000000ULL, { 0xAC933622B1150321ULL, 0x2E78C21489AB1E59ULL } }, /* XSUM_XXH128_testdata[9882] */ + { 3294, 0x000000009E3779B1ULL, { 0xA31F7201DBE0970FULL, 0xBF1CED5BD5D9B7DEULL } }, /* XSUM_XXH128_testdata[9883] */ + { 3294, 0x9E3779B185EBCA8DULL, { 0xEFAEFE35789602DBULL, 0xD0E289B3F2FF2B6FULL } }, /* XSUM_XXH128_testdata[9884] */ + { 3295, 0x0000000000000000ULL, { 0xBA6BB073CCE8DA46ULL, 0x52278CC3304377D3ULL } }, /* XSUM_XXH128_testdata[9885] */ + { 3295, 0x000000009E3779B1ULL, { 0x636B47A5A0079B00ULL, 0xF2403AF52A625A6DULL } }, /* XSUM_XXH128_testdata[9886] */ + { 3295, 0x9E3779B185EBCA8DULL, { 0xE2AD5B19AA401D1DULL, 0x4E617B27357B931EULL } }, /* XSUM_XXH128_testdata[9887] */ + { 3296, 0x0000000000000000ULL, { 0x3E897823507028D7ULL, 0x96C5AC965C57FC09ULL } }, /* XSUM_XXH128_testdata[9888] */ + { 3296, 0x000000009E3779B1ULL, { 0x396BF8E65CA159CCULL, 0x5C05EC175C8CBC87ULL } }, /* XSUM_XXH128_testdata[9889] */ + { 3296, 0x9E3779B185EBCA8DULL, { 0x6A143760E53496E1ULL, 0x992335C00F8E0189ULL } }, /* XSUM_XXH128_testdata[9890] */ + { 3297, 0x0000000000000000ULL, { 0x09D42D669748D197ULL, 0x59F753AC334EA54CULL } }, /* XSUM_XXH128_testdata[9891] */ + { 3297, 0x000000009E3779B1ULL, { 0x1DC3CA6614D2C018ULL, 0x0A5B268B24DA5903ULL } }, /* XSUM_XXH128_testdata[9892] */ + { 3297, 0x9E3779B185EBCA8DULL, { 0x20C2A979B1E7F622ULL, 0x8B2DBACB28D7C8B2ULL } }, /* XSUM_XXH128_testdata[9893] */ + { 3298, 0x0000000000000000ULL, { 0x68089737D023D610ULL, 0x135D18E16FCC7DADULL } }, /* XSUM_XXH128_testdata[9894] */ + { 3298, 0x000000009E3779B1ULL, { 0xD7C9D13370D99A2AULL, 0x61FEBFF5CFACCAB3ULL } }, /* XSUM_XXH128_testdata[9895] */ + { 3298, 0x9E3779B185EBCA8DULL, { 0x2FB5B00F9E1212C5ULL, 0xB95C374A6F8FD7ABULL } }, /* XSUM_XXH128_testdata[9896] */ + { 3299, 0x0000000000000000ULL, { 0x8726F55958B56B92ULL, 0xFFE592C876A84922ULL } }, /* XSUM_XXH128_testdata[9897] */ + { 3299, 0x000000009E3779B1ULL, { 0xCA75DB9DF60570A1ULL, 0x77FD685D054F6325ULL } }, /* XSUM_XXH128_testdata[9898] */ + { 3299, 0x9E3779B185EBCA8DULL, { 0x558F3C38C9C7CBA8ULL, 0xECAB78DA1A72671FULL } }, /* XSUM_XXH128_testdata[9899] */ + { 3300, 0x0000000000000000ULL, { 0xFAB28032690FEE15ULL, 0x1F92EA61FB3627F9ULL } }, /* XSUM_XXH128_testdata[9900] */ + { 3300, 0x000000009E3779B1ULL, { 0xCA4161AF2605644CULL, 0xCAE080F64948B2F1ULL } }, /* XSUM_XXH128_testdata[9901] */ + { 3300, 0x9E3779B185EBCA8DULL, { 0xCBF7403183AFC3BCULL, 0x9AFD29C9869B7E31ULL } }, /* XSUM_XXH128_testdata[9902] */ + { 3301, 0x0000000000000000ULL, { 0x4F06D3E08E04F544ULL, 0x113ED4F2B4B88205ULL } }, /* XSUM_XXH128_testdata[9903] */ + { 3301, 0x000000009E3779B1ULL, { 0xDF7B35A51AC4A1CAULL, 0x66ACE83B43AB2B60ULL } }, /* XSUM_XXH128_testdata[9904] */ + { 3301, 0x9E3779B185EBCA8DULL, { 0xE5A8DCF9100C42D7ULL, 0xF0BF83F3CCAF96BFULL } }, /* XSUM_XXH128_testdata[9905] */ + { 3302, 0x0000000000000000ULL, { 0x2F332C59D43FED19ULL, 0x58BCC3BFBDC0BE5FULL } }, /* XSUM_XXH128_testdata[9906] */ + { 3302, 0x000000009E3779B1ULL, { 0x240D36633B293A7CULL, 0xF19085700253D631ULL } }, /* XSUM_XXH128_testdata[9907] */ + { 3302, 0x9E3779B185EBCA8DULL, { 0x3A810A8B75CD3F70ULL, 0x37F44DB0C10E2B2FULL } }, /* XSUM_XXH128_testdata[9908] */ + { 3303, 0x0000000000000000ULL, { 0x830F21FF5337560EULL, 0x7F0BCC5E6EF76111ULL } }, /* XSUM_XXH128_testdata[9909] */ + { 3303, 0x000000009E3779B1ULL, { 0x35DA74DC24B1E4C6ULL, 0xF7834F733E72FC55ULL } }, /* XSUM_XXH128_testdata[9910] */ + { 3303, 0x9E3779B185EBCA8DULL, { 0x45F7FBFBEE62E831ULL, 0xC58574DB73546396ULL } }, /* XSUM_XXH128_testdata[9911] */ + { 3304, 0x0000000000000000ULL, { 0xAB744FA69344997EULL, 0xCB4656EDED80C9E0ULL } }, /* XSUM_XXH128_testdata[9912] */ + { 3304, 0x000000009E3779B1ULL, { 0x5F38916DE19A6355ULL, 0x3C05BAD7E43471F3ULL } }, /* XSUM_XXH128_testdata[9913] */ + { 3304, 0x9E3779B185EBCA8DULL, { 0xEC87E96EB9AA48BAULL, 0x47475830D60AC1F2ULL } }, /* XSUM_XXH128_testdata[9914] */ + { 3305, 0x0000000000000000ULL, { 0xD1FEAFB0C097B189ULL, 0x2B7854305BF85E95ULL } }, /* XSUM_XXH128_testdata[9915] */ + { 3305, 0x000000009E3779B1ULL, { 0x3AD0A1A77D90C939ULL, 0x3239E940F61CF035ULL } }, /* XSUM_XXH128_testdata[9916] */ + { 3305, 0x9E3779B185EBCA8DULL, { 0xC55659615D737704ULL, 0xB49E30A6DF04B1CAULL } }, /* XSUM_XXH128_testdata[9917] */ + { 3306, 0x0000000000000000ULL, { 0x85D7E7704DDA2F90ULL, 0xA13A2809139A99E8ULL } }, /* XSUM_XXH128_testdata[9918] */ + { 3306, 0x000000009E3779B1ULL, { 0x8E39E14C6FB43649ULL, 0x69211DC6C5B98A46ULL } }, /* XSUM_XXH128_testdata[9919] */ + { 3306, 0x9E3779B185EBCA8DULL, { 0x9CFF0E41C30D3959ULL, 0x044ADB0BF104212AULL } }, /* XSUM_XXH128_testdata[9920] */ + { 3307, 0x0000000000000000ULL, { 0xD4904AEFED3EDC1AULL, 0x8A665EEE9329AE24ULL } }, /* XSUM_XXH128_testdata[9921] */ + { 3307, 0x000000009E3779B1ULL, { 0xFC358BA06E61D943ULL, 0x15633CF60A447580ULL } }, /* XSUM_XXH128_testdata[9922] */ + { 3307, 0x9E3779B185EBCA8DULL, { 0xC7A984C32605B8ABULL, 0xA4A7B4B1E792EEEBULL } }, /* XSUM_XXH128_testdata[9923] */ + { 3308, 0x0000000000000000ULL, { 0x78AB5906A8635550ULL, 0x127BAB2101BA1A86ULL } }, /* XSUM_XXH128_testdata[9924] */ + { 3308, 0x000000009E3779B1ULL, { 0x6FC34892BF3A584DULL, 0x857E052F20E5A2B1ULL } }, /* XSUM_XXH128_testdata[9925] */ + { 3308, 0x9E3779B185EBCA8DULL, { 0x279FD3B95866FCF0ULL, 0xAD0F4A7474FDE7EFULL } }, /* XSUM_XXH128_testdata[9926] */ + { 3309, 0x0000000000000000ULL, { 0x43F13CAD6A0C80EFULL, 0xF5D1DF6248D5F201ULL } }, /* XSUM_XXH128_testdata[9927] */ + { 3309, 0x000000009E3779B1ULL, { 0x661847B8213A12FAULL, 0xB20322544EB4309DULL } }, /* XSUM_XXH128_testdata[9928] */ + { 3309, 0x9E3779B185EBCA8DULL, { 0x843065019A02EBE3ULL, 0x4DF6D07345F1045AULL } }, /* XSUM_XXH128_testdata[9929] */ + { 3310, 0x0000000000000000ULL, { 0xBC07FC109DF9428EULL, 0x6ABC4144E98A36CCULL } }, /* XSUM_XXH128_testdata[9930] */ + { 3310, 0x000000009E3779B1ULL, { 0x655E9A87DFE5779AULL, 0x7DF0AB84FF8067ADULL } }, /* XSUM_XXH128_testdata[9931] */ + { 3310, 0x9E3779B185EBCA8DULL, { 0xC52F7E06B2709FE6ULL, 0x1A3052778503D7CDULL } }, /* XSUM_XXH128_testdata[9932] */ + { 3311, 0x0000000000000000ULL, { 0x2EED7825B3318277ULL, 0x930C0F84000CC1ADULL } }, /* XSUM_XXH128_testdata[9933] */ + { 3311, 0x000000009E3779B1ULL, { 0x91F40E41E5033303ULL, 0x59994A7EAB19E6CDULL } }, /* XSUM_XXH128_testdata[9934] */ + { 3311, 0x9E3779B185EBCA8DULL, { 0xD4684FBB86410DC5ULL, 0x287356E9A50E5327ULL } }, /* XSUM_XXH128_testdata[9935] */ + { 3312, 0x0000000000000000ULL, { 0x17AC8E090B8B0E1BULL, 0x850515F27BC1AF8DULL } }, /* XSUM_XXH128_testdata[9936] */ + { 3312, 0x000000009E3779B1ULL, { 0x40063C280756B9E6ULL, 0x61AD50CF7B52E3A4ULL } }, /* XSUM_XXH128_testdata[9937] */ + { 3312, 0x9E3779B185EBCA8DULL, { 0xC42086CDDDEA61BCULL, 0x6C86A1B812632788ULL } }, /* XSUM_XXH128_testdata[9938] */ + { 3313, 0x0000000000000000ULL, { 0x23F5784BBF9B1DF1ULL, 0xFE7142B591EF5BB2ULL } }, /* XSUM_XXH128_testdata[9939] */ + { 3313, 0x000000009E3779B1ULL, { 0x6803A17680AF9D3EULL, 0x0A7AF5245CF0FE4DULL } }, /* XSUM_XXH128_testdata[9940] */ + { 3313, 0x9E3779B185EBCA8DULL, { 0x3DA59CE11B907414ULL, 0x50288506EF9258A8ULL } }, /* XSUM_XXH128_testdata[9941] */ + { 3314, 0x0000000000000000ULL, { 0x9695900D67CCD95EULL, 0xFE27911B94F88E30ULL } }, /* XSUM_XXH128_testdata[9942] */ + { 3314, 0x000000009E3779B1ULL, { 0x8AD588DB74FDEF77ULL, 0xE29AC6D44FB8C2F4ULL } }, /* XSUM_XXH128_testdata[9943] */ + { 3314, 0x9E3779B185EBCA8DULL, { 0x1014606F1DD648A1ULL, 0xD9F2ED37922CA0FDULL } }, /* XSUM_XXH128_testdata[9944] */ + { 3315, 0x0000000000000000ULL, { 0x0C1C74544502BB15ULL, 0x73644B6FFE7195DBULL } }, /* XSUM_XXH128_testdata[9945] */ + { 3315, 0x000000009E3779B1ULL, { 0x62AE52BE3624DBB2ULL, 0x8F4A05623DCFDDCEULL } }, /* XSUM_XXH128_testdata[9946] */ + { 3315, 0x9E3779B185EBCA8DULL, { 0x0583BE7443333A4DULL, 0x6D8E4AF8CE866FFEULL } }, /* XSUM_XXH128_testdata[9947] */ + { 3316, 0x0000000000000000ULL, { 0x278D8FE0095296E4ULL, 0xFF18B22F7414F212ULL } }, /* XSUM_XXH128_testdata[9948] */ + { 3316, 0x000000009E3779B1ULL, { 0x1F235E8C79902E41ULL, 0xF8EB2769DECAC453ULL } }, /* XSUM_XXH128_testdata[9949] */ + { 3316, 0x9E3779B185EBCA8DULL, { 0xB1A0354E681F6578ULL, 0x223EFC3FD6E0278DULL } }, /* XSUM_XXH128_testdata[9950] */ + { 3317, 0x0000000000000000ULL, { 0x02C89CFEDF3EC26DULL, 0xCA52D48017598CE2ULL } }, /* XSUM_XXH128_testdata[9951] */ + { 3317, 0x000000009E3779B1ULL, { 0x080EF9223E9411A3ULL, 0x6FC4BCE5212C95D9ULL } }, /* XSUM_XXH128_testdata[9952] */ + { 3317, 0x9E3779B185EBCA8DULL, { 0x9BFB13E995951D98ULL, 0x48317FAB36A2294AULL } }, /* XSUM_XXH128_testdata[9953] */ + { 3318, 0x0000000000000000ULL, { 0xDC2FAA0D4B80D12BULL, 0x8641D645AD8626F4ULL } }, /* XSUM_XXH128_testdata[9954] */ + { 3318, 0x000000009E3779B1ULL, { 0xED88A032F125AD81ULL, 0xE27AFD6B5B909FDDULL } }, /* XSUM_XXH128_testdata[9955] */ + { 3318, 0x9E3779B185EBCA8DULL, { 0xCCD4BFFE0B66ECC7ULL, 0xA04247A3DEB2807FULL } }, /* XSUM_XXH128_testdata[9956] */ + { 3319, 0x0000000000000000ULL, { 0xFCCD4EB901FE69BEULL, 0x866204F4BE35CB60ULL } }, /* XSUM_XXH128_testdata[9957] */ + { 3319, 0x000000009E3779B1ULL, { 0x3C66692FB98CC4A7ULL, 0x2B296DB81C7B9240ULL } }, /* XSUM_XXH128_testdata[9958] */ + { 3319, 0x9E3779B185EBCA8DULL, { 0x1FFD3A5E3CB95033ULL, 0x2A88864DEA33A41EULL } }, /* XSUM_XXH128_testdata[9959] */ + { 3320, 0x0000000000000000ULL, { 0x0CAD253666032FD6ULL, 0x68A120BE78E25659ULL } }, /* XSUM_XXH128_testdata[9960] */ + { 3320, 0x000000009E3779B1ULL, { 0xF8623CEC49A0B519ULL, 0x1FA0E27F2FEE33B0ULL } }, /* XSUM_XXH128_testdata[9961] */ + { 3320, 0x9E3779B185EBCA8DULL, { 0xDBAD1A09D40AFD8EULL, 0x6D5C91155E7A1E87ULL } }, /* XSUM_XXH128_testdata[9962] */ + { 3321, 0x0000000000000000ULL, { 0xE97362BD28AADE28ULL, 0x774C7FF6F22F7780ULL } }, /* XSUM_XXH128_testdata[9963] */ + { 3321, 0x000000009E3779B1ULL, { 0x18AE790C6A2B9A02ULL, 0x2F2D050AD9FC2807ULL } }, /* XSUM_XXH128_testdata[9964] */ + { 3321, 0x9E3779B185EBCA8DULL, { 0x6A1A5A4876C9ED06ULL, 0x6D0E042DD46446B5ULL } }, /* XSUM_XXH128_testdata[9965] */ + { 3322, 0x0000000000000000ULL, { 0xE582F38E9D03E630ULL, 0xC1125EBED0C2BED7ULL } }, /* XSUM_XXH128_testdata[9966] */ + { 3322, 0x000000009E3779B1ULL, { 0x97F6B3DF3AF17A3BULL, 0x7DB24DACEBA9F8ABULL } }, /* XSUM_XXH128_testdata[9967] */ + { 3322, 0x9E3779B185EBCA8DULL, { 0x9B1951C099D93D9BULL, 0x27F600CD36CAA616ULL } }, /* XSUM_XXH128_testdata[9968] */ + { 3323, 0x0000000000000000ULL, { 0x9BABE22F9703E396ULL, 0x6953EE139FB8FA72ULL } }, /* XSUM_XXH128_testdata[9969] */ + { 3323, 0x000000009E3779B1ULL, { 0x5C9A755EB1E789C7ULL, 0xBD1E4E98FCD77BBFULL } }, /* XSUM_XXH128_testdata[9970] */ + { 3323, 0x9E3779B185EBCA8DULL, { 0x7266AE275DEB3628ULL, 0xF2EA4D9953859774ULL } }, /* XSUM_XXH128_testdata[9971] */ + { 3324, 0x0000000000000000ULL, { 0x5CD985B664FBDBAFULL, 0x71BD7E7F59FF5656ULL } }, /* XSUM_XXH128_testdata[9972] */ + { 3324, 0x000000009E3779B1ULL, { 0x96A872C5EE1691FCULL, 0x94862504BA6FCB16ULL } }, /* XSUM_XXH128_testdata[9973] */ + { 3324, 0x9E3779B185EBCA8DULL, { 0x40DEA3B6DA6AF66DULL, 0x6DD991C09510281EULL } }, /* XSUM_XXH128_testdata[9974] */ + { 3325, 0x0000000000000000ULL, { 0xB5F91FFDCF207925ULL, 0x48318A31F4E5F288ULL } }, /* XSUM_XXH128_testdata[9975] */ + { 3325, 0x000000009E3779B1ULL, { 0x195966EE1544128DULL, 0x9F29DBE6E6207D75ULL } }, /* XSUM_XXH128_testdata[9976] */ + { 3325, 0x9E3779B185EBCA8DULL, { 0xD4343DD1B8076D6EULL, 0x53E188CA2498EAFEULL } }, /* XSUM_XXH128_testdata[9977] */ + { 3326, 0x0000000000000000ULL, { 0x01ADD999619CBD9FULL, 0xF1ED50F42BA63C1CULL } }, /* XSUM_XXH128_testdata[9978] */ + { 3326, 0x000000009E3779B1ULL, { 0x42F2FD2F2B068E72ULL, 0x4AC99B78C5FABFE5ULL } }, /* XSUM_XXH128_testdata[9979] */ + { 3326, 0x9E3779B185EBCA8DULL, { 0x2C5A15142FEC2FD8ULL, 0x1CEAD2407286197FULL } }, /* XSUM_XXH128_testdata[9980] */ + { 3327, 0x0000000000000000ULL, { 0x08011836C094CA6BULL, 0x8DE21D8E415DA08AULL } }, /* XSUM_XXH128_testdata[9981] */ + { 3327, 0x000000009E3779B1ULL, { 0x61BDC2C282DEC50DULL, 0xF4BA90075ACF5A12ULL } }, /* XSUM_XXH128_testdata[9982] */ + { 3327, 0x9E3779B185EBCA8DULL, { 0xA5CAE26D8B91D68DULL, 0xA500F33C58093FA5ULL } }, /* XSUM_XXH128_testdata[9983] */ + { 3328, 0x0000000000000000ULL, { 0xBA4A5091A9EEEBB5ULL, 0xA9727199513916D8ULL } }, /* XSUM_XXH128_testdata[9984] */ + { 3328, 0x000000009E3779B1ULL, { 0x53BFFB986A9CEE5DULL, 0x3B8696BB795F8094ULL } }, /* XSUM_XXH128_testdata[9985] */ + { 3328, 0x9E3779B185EBCA8DULL, { 0xB13BEA7A298FB067ULL, 0x1CBB2C8FD804D031ULL } }, /* XSUM_XXH128_testdata[9986] */ + { 3329, 0x0000000000000000ULL, { 0x50D1FDCB976BE957ULL, 0x74662081E750DC6CULL } }, /* XSUM_XXH128_testdata[9987] */ + { 3329, 0x000000009E3779B1ULL, { 0xA7F0DE3C7CDDBCAAULL, 0x788E715DD23CF275ULL } }, /* XSUM_XXH128_testdata[9988] */ + { 3329, 0x9E3779B185EBCA8DULL, { 0x7559494E41899903ULL, 0x53A772F2899A6BC8ULL } }, /* XSUM_XXH128_testdata[9989] */ + { 3330, 0x0000000000000000ULL, { 0x75107DA44865BEB5ULL, 0xAAEAD4D8149D93B2ULL } }, /* XSUM_XXH128_testdata[9990] */ + { 3330, 0x000000009E3779B1ULL, { 0x71C286186AC5EE7EULL, 0x07BD774C8386271BULL } }, /* XSUM_XXH128_testdata[9991] */ + { 3330, 0x9E3779B185EBCA8DULL, { 0x5AAE1D66586FFDA2ULL, 0xA2F32568E98AD9BAULL } }, /* XSUM_XXH128_testdata[9992] */ + { 3331, 0x0000000000000000ULL, { 0xAF58DBE70F0E263DULL, 0x776B3F2ACAF584A2ULL } }, /* XSUM_XXH128_testdata[9993] */ + { 3331, 0x000000009E3779B1ULL, { 0x4C95CF2BB49FF401ULL, 0x3775E24432D8FFA1ULL } }, /* XSUM_XXH128_testdata[9994] */ + { 3331, 0x9E3779B185EBCA8DULL, { 0x14692C98F9DAD48EULL, 0xC63667FB2D376690ULL } }, /* XSUM_XXH128_testdata[9995] */ + { 3332, 0x0000000000000000ULL, { 0x6F617384900EEF25ULL, 0x2D0B0FC0AD06A1C3ULL } }, /* XSUM_XXH128_testdata[9996] */ + { 3332, 0x000000009E3779B1ULL, { 0x231279DFA47BE1ACULL, 0xD66D9BAC9CA60FA3ULL } }, /* XSUM_XXH128_testdata[9997] */ + { 3332, 0x9E3779B185EBCA8DULL, { 0x58B58C579F7E6D00ULL, 0xD847CB2EBDAF58A8ULL } }, /* XSUM_XXH128_testdata[9998] */ + { 3333, 0x0000000000000000ULL, { 0x60C4155E452F5F87ULL, 0x1DA933D9D16457A8ULL } }, /* XSUM_XXH128_testdata[9999] */ + { 3333, 0x000000009E3779B1ULL, { 0xD98EB98AE0791AB7ULL, 0xA060E1CDEB8862BDULL } }, /* XSUM_XXH128_testdata[10000] */ + { 3333, 0x9E3779B185EBCA8DULL, { 0xC96A96E04A3E849AULL, 0x4AE5EE2723486A80ULL } }, /* XSUM_XXH128_testdata[10001] */ + { 3334, 0x0000000000000000ULL, { 0xBCAF54AB908B193DULL, 0x4438A855624150FBULL } }, /* XSUM_XXH128_testdata[10002] */ + { 3334, 0x000000009E3779B1ULL, { 0xB47D397DF9D7F6D0ULL, 0xCBFD37ED5FB9792CULL } }, /* XSUM_XXH128_testdata[10003] */ + { 3334, 0x9E3779B185EBCA8DULL, { 0x54260454C2736A73ULL, 0x998A23F28674E738ULL } }, /* XSUM_XXH128_testdata[10004] */ + { 3335, 0x0000000000000000ULL, { 0xBBF027A0ADD25BBFULL, 0xF69E06814406D67CULL } }, /* XSUM_XXH128_testdata[10005] */ + { 3335, 0x000000009E3779B1ULL, { 0x6749046BF0D7C0DDULL, 0x3B2A24A7CCDA5890ULL } }, /* XSUM_XXH128_testdata[10006] */ + { 3335, 0x9E3779B185EBCA8DULL, { 0x26E4D35633D2C8FDULL, 0x86A0BA59DAD30E65ULL } }, /* XSUM_XXH128_testdata[10007] */ + { 3336, 0x0000000000000000ULL, { 0xBB0ADB598F22AE91ULL, 0xE05D89A2880A83A1ULL } }, /* XSUM_XXH128_testdata[10008] */ + { 3336, 0x000000009E3779B1ULL, { 0x7FFE97E5C48A85D7ULL, 0xD58EBF4AAB868B0FULL } }, /* XSUM_XXH128_testdata[10009] */ + { 3336, 0x9E3779B185EBCA8DULL, { 0xD90552E320AB9A00ULL, 0xC8900FD6AA4277F8ULL } }, /* XSUM_XXH128_testdata[10010] */ + { 3337, 0x0000000000000000ULL, { 0x02CFCE1529C38652ULL, 0xA7F561A7A992CC5CULL } }, /* XSUM_XXH128_testdata[10011] */ + { 3337, 0x000000009E3779B1ULL, { 0x87161D75086B69FBULL, 0xC37BEF3BEA52B590ULL } }, /* XSUM_XXH128_testdata[10012] */ + { 3337, 0x9E3779B185EBCA8DULL, { 0xCD6BA1C7A54511C5ULL, 0x2CFD4A8893C70393ULL } }, /* XSUM_XXH128_testdata[10013] */ + { 3338, 0x0000000000000000ULL, { 0x13E3324E216C09F9ULL, 0x273AB1544CECFE42ULL } }, /* XSUM_XXH128_testdata[10014] */ + { 3338, 0x000000009E3779B1ULL, { 0xB0363C54B1985BBEULL, 0xFDA5A221A43D52D0ULL } }, /* XSUM_XXH128_testdata[10015] */ + { 3338, 0x9E3779B185EBCA8DULL, { 0x312386F8BCB31407ULL, 0x7094BD9D61202A45ULL } }, /* XSUM_XXH128_testdata[10016] */ + { 3339, 0x0000000000000000ULL, { 0x29DA89CAA19A37FAULL, 0xFB6DDFA7DD25E8B4ULL } }, /* XSUM_XXH128_testdata[10017] */ + { 3339, 0x000000009E3779B1ULL, { 0xCB73B2EC6A9C8CFBULL, 0xFC8286D8586C9D93ULL } }, /* XSUM_XXH128_testdata[10018] */ + { 3339, 0x9E3779B185EBCA8DULL, { 0x9485DED18A88C4AEULL, 0xD14EA37AB16B4890ULL } }, /* XSUM_XXH128_testdata[10019] */ + { 3340, 0x0000000000000000ULL, { 0xA389A6247E5CB6F7ULL, 0x34B659DE4D1AC1ACULL } }, /* XSUM_XXH128_testdata[10020] */ + { 3340, 0x000000009E3779B1ULL, { 0x7877691FDBFE8661ULL, 0x9FB90444CEB40C87ULL } }, /* XSUM_XXH128_testdata[10021] */ + { 3340, 0x9E3779B185EBCA8DULL, { 0xEBF9E42F004427E0ULL, 0xCD826099B5E4A5F4ULL } }, /* XSUM_XXH128_testdata[10022] */ + { 3341, 0x0000000000000000ULL, { 0xD07406613E1B3E9CULL, 0x86B998545650E4EBULL } }, /* XSUM_XXH128_testdata[10023] */ + { 3341, 0x000000009E3779B1ULL, { 0x9180E74A637B1078ULL, 0xC098979B5D29E145ULL } }, /* XSUM_XXH128_testdata[10024] */ + { 3341, 0x9E3779B185EBCA8DULL, { 0x872729C833153C1DULL, 0xF6EBA16B10754150ULL } }, /* XSUM_XXH128_testdata[10025] */ + { 3342, 0x0000000000000000ULL, { 0xC07FDF2155D4E7B6ULL, 0x519C700AE628CDCBULL } }, /* XSUM_XXH128_testdata[10026] */ + { 3342, 0x000000009E3779B1ULL, { 0x6EBABC5056D2519FULL, 0xF3BD02C0DBA91966ULL } }, /* XSUM_XXH128_testdata[10027] */ + { 3342, 0x9E3779B185EBCA8DULL, { 0x30679A03126AD5FDULL, 0x9C0B7880E9F60A1DULL } }, /* XSUM_XXH128_testdata[10028] */ + { 3343, 0x0000000000000000ULL, { 0x836CD924F0E9680CULL, 0xAF79587755E380AAULL } }, /* XSUM_XXH128_testdata[10029] */ + { 3343, 0x000000009E3779B1ULL, { 0x432424848547E841ULL, 0xE7B09949EC4D0F52ULL } }, /* XSUM_XXH128_testdata[10030] */ + { 3343, 0x9E3779B185EBCA8DULL, { 0x776D5AAD3298CD2BULL, 0xEBDC8C7B1BB4582CULL } }, /* XSUM_XXH128_testdata[10031] */ + { 3344, 0x0000000000000000ULL, { 0xC3956381E842E2DEULL, 0xED7CC17BF58CDAFBULL } }, /* XSUM_XXH128_testdata[10032] */ + { 3344, 0x000000009E3779B1ULL, { 0x5793CE2FA1B482CFULL, 0x03FCA2DA18359C6BULL } }, /* XSUM_XXH128_testdata[10033] */ + { 3344, 0x9E3779B185EBCA8DULL, { 0x86C94661FF3B2BB8ULL, 0x53BC4CECA0A79FB2ULL } }, /* XSUM_XXH128_testdata[10034] */ + { 3345, 0x0000000000000000ULL, { 0xB10484FA074AE206ULL, 0x270016F449C92359ULL } }, /* XSUM_XXH128_testdata[10035] */ + { 3345, 0x000000009E3779B1ULL, { 0xCBE411D6DA9F5E66ULL, 0x7AAADA83B99F7BB2ULL } }, /* XSUM_XXH128_testdata[10036] */ + { 3345, 0x9E3779B185EBCA8DULL, { 0x1C726988BBC91D6DULL, 0x2DC89312FBA477A0ULL } }, /* XSUM_XXH128_testdata[10037] */ + { 3346, 0x0000000000000000ULL, { 0x3B608660818671B3ULL, 0xB51FE53EBF726684ULL } }, /* XSUM_XXH128_testdata[10038] */ + { 3346, 0x000000009E3779B1ULL, { 0xE47967A625666583ULL, 0xE48F0F101A24D366ULL } }, /* XSUM_XXH128_testdata[10039] */ + { 3346, 0x9E3779B185EBCA8DULL, { 0xF5CCFA1B960AF066ULL, 0x05B8A20B2D4AD971ULL } }, /* XSUM_XXH128_testdata[10040] */ + { 3347, 0x0000000000000000ULL, { 0x95FFFB7642F9E1EFULL, 0xBD7397A489A1860DULL } }, /* XSUM_XXH128_testdata[10041] */ + { 3347, 0x000000009E3779B1ULL, { 0xADC957EBFDA41C9AULL, 0xEA2E80DF67A123C9ULL } }, /* XSUM_XXH128_testdata[10042] */ + { 3347, 0x9E3779B185EBCA8DULL, { 0xFE131ED5AD63D1B7ULL, 0xEF32C597C459F7BAULL } }, /* XSUM_XXH128_testdata[10043] */ + { 3348, 0x0000000000000000ULL, { 0x7869A6A32C26E54AULL, 0x6495FDFA40B0E6E4ULL } }, /* XSUM_XXH128_testdata[10044] */ + { 3348, 0x000000009E3779B1ULL, { 0x286FF157D24F3562ULL, 0xE8322C6EBADAC1FAULL } }, /* XSUM_XXH128_testdata[10045] */ + { 3348, 0x9E3779B185EBCA8DULL, { 0x1E9C1E7CA1E6D5C1ULL, 0x252D739BDEE245D2ULL } }, /* XSUM_XXH128_testdata[10046] */ + { 3349, 0x0000000000000000ULL, { 0x51BDFE289C4066A9ULL, 0x0AC5E31AB65BBBC5ULL } }, /* XSUM_XXH128_testdata[10047] */ + { 3349, 0x000000009E3779B1ULL, { 0x4B3828922886605DULL, 0x56160F2064EA5844ULL } }, /* XSUM_XXH128_testdata[10048] */ + { 3349, 0x9E3779B185EBCA8DULL, { 0xB7BE52394DE63E0EULL, 0x4631CC0B714E5DE0ULL } }, /* XSUM_XXH128_testdata[10049] */ + { 3350, 0x0000000000000000ULL, { 0xAA01801391E98925ULL, 0xE5A02FB35D930345ULL } }, /* XSUM_XXH128_testdata[10050] */ + { 3350, 0x000000009E3779B1ULL, { 0x0C8B2EFBB0A6F739ULL, 0xC680A004646A299CULL } }, /* XSUM_XXH128_testdata[10051] */ + { 3350, 0x9E3779B185EBCA8DULL, { 0x2E2A6D6E3F43CDB0ULL, 0xDD5F06C9579609FEULL } }, /* XSUM_XXH128_testdata[10052] */ + { 3351, 0x0000000000000000ULL, { 0xCF2A402353A99FE1ULL, 0x90FBA4DAF0B72296ULL } }, /* XSUM_XXH128_testdata[10053] */ + { 3351, 0x000000009E3779B1ULL, { 0x556EF6EF6D03CB25ULL, 0x0CF2944D55666516ULL } }, /* XSUM_XXH128_testdata[10054] */ + { 3351, 0x9E3779B185EBCA8DULL, { 0xAD52CCD11E3555DEULL, 0x5BE2FAC824248EE5ULL } }, /* XSUM_XXH128_testdata[10055] */ + { 3352, 0x0000000000000000ULL, { 0xB01D33C38F36DC5CULL, 0x9B4B0FFEA91968A6ULL } }, /* XSUM_XXH128_testdata[10056] */ + { 3352, 0x000000009E3779B1ULL, { 0xF75B46237DFC9A46ULL, 0x501E285DD7D768F9ULL } }, /* XSUM_XXH128_testdata[10057] */ + { 3352, 0x9E3779B185EBCA8DULL, { 0x9E3FFE25B3EB2075ULL, 0xB931F96815C94EFAULL } }, /* XSUM_XXH128_testdata[10058] */ + { 3353, 0x0000000000000000ULL, { 0x3FB85D3FFD9E06E8ULL, 0xFC25A47B34F63E5EULL } }, /* XSUM_XXH128_testdata[10059] */ + { 3353, 0x000000009E3779B1ULL, { 0xF8FFD76562AE5203ULL, 0x0C2B9BCD95E9E470ULL } }, /* XSUM_XXH128_testdata[10060] */ + { 3353, 0x9E3779B185EBCA8DULL, { 0xF27DEE2A8D630D4FULL, 0xE912405C3B166644ULL } }, /* XSUM_XXH128_testdata[10061] */ + { 3354, 0x0000000000000000ULL, { 0xC37FF70659119746ULL, 0x1018E6312FD5FB97ULL } }, /* XSUM_XXH128_testdata[10062] */ + { 3354, 0x000000009E3779B1ULL, { 0x8AFA38EEAD709520ULL, 0x01E461658626964CULL } }, /* XSUM_XXH128_testdata[10063] */ + { 3354, 0x9E3779B185EBCA8DULL, { 0xEAF15F8417A1811FULL, 0x33AC58C0594974B5ULL } }, /* XSUM_XXH128_testdata[10064] */ + { 3355, 0x0000000000000000ULL, { 0xC5973EAD1F297A47ULL, 0x42D21E6A8F97FFFCULL } }, /* XSUM_XXH128_testdata[10065] */ + { 3355, 0x000000009E3779B1ULL, { 0x176449E7076165F3ULL, 0x7C0E6CD0F6F07A53ULL } }, /* XSUM_XXH128_testdata[10066] */ + { 3355, 0x9E3779B185EBCA8DULL, { 0x054A37E362E960FFULL, 0x1D960DBB78DD4EFCULL } }, /* XSUM_XXH128_testdata[10067] */ + { 3356, 0x0000000000000000ULL, { 0x45132AD6742E601BULL, 0x5628FB4D71421EC4ULL } }, /* XSUM_XXH128_testdata[10068] */ + { 3356, 0x000000009E3779B1ULL, { 0xE6CDA84500B3AF3EULL, 0xB55AF9ECBC23FEE2ULL } }, /* XSUM_XXH128_testdata[10069] */ + { 3356, 0x9E3779B185EBCA8DULL, { 0xFF64C5779A13E1A8ULL, 0x214E4FAE46921089ULL } }, /* XSUM_XXH128_testdata[10070] */ + { 3357, 0x0000000000000000ULL, { 0x4AD4D09228AE74EBULL, 0x3AA74D64C084B2B7ULL } }, /* XSUM_XXH128_testdata[10071] */ + { 3357, 0x000000009E3779B1ULL, { 0x7EFFFED559AF3D41ULL, 0x54EE561F7A70A4B7ULL } }, /* XSUM_XXH128_testdata[10072] */ + { 3357, 0x9E3779B185EBCA8DULL, { 0xAB3C130407D8E34CULL, 0xB41E6250F14B0A24ULL } }, /* XSUM_XXH128_testdata[10073] */ + { 3358, 0x0000000000000000ULL, { 0xBDE7F52D428B5626ULL, 0x7EE71805EB4A02B4ULL } }, /* XSUM_XXH128_testdata[10074] */ + { 3358, 0x000000009E3779B1ULL, { 0x9C6275C5CE1C855DULL, 0x8698A80D7A7B81ADULL } }, /* XSUM_XXH128_testdata[10075] */ + { 3358, 0x9E3779B185EBCA8DULL, { 0x7FF63CE94956ABB8ULL, 0x4145BC748ED10BB1ULL } }, /* XSUM_XXH128_testdata[10076] */ + { 3359, 0x0000000000000000ULL, { 0xFE2565182D1952EAULL, 0x0983C85C2E8FB88DULL } }, /* XSUM_XXH128_testdata[10077] */ + { 3359, 0x000000009E3779B1ULL, { 0xFD7B9FD9600B201DULL, 0x1806D851D29EDF31ULL } }, /* XSUM_XXH128_testdata[10078] */ + { 3359, 0x9E3779B185EBCA8DULL, { 0x40A726019BC38DB4ULL, 0x20442FE258849CD9ULL } }, /* XSUM_XXH128_testdata[10079] */ + { 3360, 0x0000000000000000ULL, { 0x4649D4969584C272ULL, 0x32D32558CD66383CULL } }, /* XSUM_XXH128_testdata[10080] */ + { 3360, 0x000000009E3779B1ULL, { 0x9281B1AE8489AE0AULL, 0xDD698BEF720DB559ULL } }, /* XSUM_XXH128_testdata[10081] */ + { 3360, 0x9E3779B185EBCA8DULL, { 0x29A9207541EEA68BULL, 0x6A3284B18EA84F6FULL } }, /* XSUM_XXH128_testdata[10082] */ + { 3361, 0x0000000000000000ULL, { 0xD01EA1AB2CDC3528ULL, 0x017B9F7A0E71FCCCULL } }, /* XSUM_XXH128_testdata[10083] */ + { 3361, 0x000000009E3779B1ULL, { 0xD133391189361FECULL, 0x1204AC98913912E7ULL } }, /* XSUM_XXH128_testdata[10084] */ + { 3361, 0x9E3779B185EBCA8DULL, { 0xD92BA5B55FD6F780ULL, 0xA26A91A74A0684D6ULL } }, /* XSUM_XXH128_testdata[10085] */ + { 3362, 0x0000000000000000ULL, { 0x070B61EF22A12393ULL, 0x13F105D821532CC1ULL } }, /* XSUM_XXH128_testdata[10086] */ + { 3362, 0x000000009E3779B1ULL, { 0x4089D26FEB06B6D6ULL, 0xCA87BE23F0A01631ULL } }, /* XSUM_XXH128_testdata[10087] */ + { 3362, 0x9E3779B185EBCA8DULL, { 0xAB53607E21F191A9ULL, 0xA371E57DD90C32E8ULL } }, /* XSUM_XXH128_testdata[10088] */ + { 3363, 0x0000000000000000ULL, { 0x4AE0136971A34E18ULL, 0x50A0368BCC23B49EULL } }, /* XSUM_XXH128_testdata[10089] */ + { 3363, 0x000000009E3779B1ULL, { 0x1162A4B3072EFBD1ULL, 0x7BF249E06DD43FC3ULL } }, /* XSUM_XXH128_testdata[10090] */ + { 3363, 0x9E3779B185EBCA8DULL, { 0x004526D172BEC24BULL, 0x5DA20A7765D3DB9CULL } }, /* XSUM_XXH128_testdata[10091] */ + { 3364, 0x0000000000000000ULL, { 0x42A56637D7F0FA18ULL, 0x3C204F5691B25B52ULL } }, /* XSUM_XXH128_testdata[10092] */ + { 3364, 0x000000009E3779B1ULL, { 0xB59666B784876936ULL, 0x9A95B7D136DF1E8CULL } }, /* XSUM_XXH128_testdata[10093] */ + { 3364, 0x9E3779B185EBCA8DULL, { 0xA7C3097CF412264DULL, 0x4A946E78BF64D06FULL } }, /* XSUM_XXH128_testdata[10094] */ + { 3365, 0x0000000000000000ULL, { 0x21FE144D6968D4F2ULL, 0xA398423DBA0D2F0AULL } }, /* XSUM_XXH128_testdata[10095] */ + { 3365, 0x000000009E3779B1ULL, { 0xF27DFB0F7408B6BCULL, 0x53B5E3500D3458BAULL } }, /* XSUM_XXH128_testdata[10096] */ + { 3365, 0x9E3779B185EBCA8DULL, { 0xC4D1BE69C49EF35BULL, 0x70F0ACBF7ECE06D1ULL } }, /* XSUM_XXH128_testdata[10097] */ + { 3366, 0x0000000000000000ULL, { 0x12D77C635653B2B8ULL, 0x58DE0A148A62CEBEULL } }, /* XSUM_XXH128_testdata[10098] */ + { 3366, 0x000000009E3779B1ULL, { 0x5E0B4DFB930E5F5BULL, 0x4B801BBC3A7A6CF1ULL } }, /* XSUM_XXH128_testdata[10099] */ + { 3366, 0x9E3779B185EBCA8DULL, { 0xB73F37C743862437ULL, 0x096F5F5840D33A4FULL } }, /* XSUM_XXH128_testdata[10100] */ + { 3367, 0x0000000000000000ULL, { 0x0752F2C4C8A25C1AULL, 0x0BF71394045F6293ULL } }, /* XSUM_XXH128_testdata[10101] */ + { 3367, 0x000000009E3779B1ULL, { 0xEB23BCBC231E6048ULL, 0x7010F9D4985E012CULL } }, /* XSUM_XXH128_testdata[10102] */ + { 3367, 0x9E3779B185EBCA8DULL, { 0xC983E99166B19B17ULL, 0x6FB2579440B21364ULL } }, /* XSUM_XXH128_testdata[10103] */ + { 3368, 0x0000000000000000ULL, { 0x15AA8640193B2254ULL, 0xDEAEFC19C4E8DA6AULL } }, /* XSUM_XXH128_testdata[10104] */ + { 3368, 0x000000009E3779B1ULL, { 0x1FD0411C0282732CULL, 0x3EA50DD348293F9CULL } }, /* XSUM_XXH128_testdata[10105] */ + { 3368, 0x9E3779B185EBCA8DULL, { 0x53D54D74763AD4B2ULL, 0x10E91A20C3254F94ULL } }, /* XSUM_XXH128_testdata[10106] */ + { 3369, 0x0000000000000000ULL, { 0x3A2B1F7886668CC8ULL, 0x23D0F39FAE054F2FULL } }, /* XSUM_XXH128_testdata[10107] */ + { 3369, 0x000000009E3779B1ULL, { 0xEEB4990BE9621AF7ULL, 0x5D0B876C019EFDD8ULL } }, /* XSUM_XXH128_testdata[10108] */ + { 3369, 0x9E3779B185EBCA8DULL, { 0x5B0B2B5F227D1228ULL, 0xA274B712D97490A0ULL } }, /* XSUM_XXH128_testdata[10109] */ + { 3370, 0x0000000000000000ULL, { 0x256280630F5EAFF2ULL, 0xF098F25D00EE1C81ULL } }, /* XSUM_XXH128_testdata[10110] */ + { 3370, 0x000000009E3779B1ULL, { 0xC7A850C66FA0827CULL, 0xDE95B222F2A50B6EULL } }, /* XSUM_XXH128_testdata[10111] */ + { 3370, 0x9E3779B185EBCA8DULL, { 0xFD87C26C8883F638ULL, 0x2489DD8F53D6B382ULL } }, /* XSUM_XXH128_testdata[10112] */ + { 3371, 0x0000000000000000ULL, { 0x8BC58F317FFE3E5AULL, 0x14ABE31C140FB353ULL } }, /* XSUM_XXH128_testdata[10113] */ + { 3371, 0x000000009E3779B1ULL, { 0x1ADE577F86DFEF22ULL, 0xC0DF17ED6C402C1BULL } }, /* XSUM_XXH128_testdata[10114] */ + { 3371, 0x9E3779B185EBCA8DULL, { 0x724319694EDADAB3ULL, 0x9D02307164F10A92ULL } }, /* XSUM_XXH128_testdata[10115] */ + { 3372, 0x0000000000000000ULL, { 0xB15A5B5D991811AFULL, 0x6EDC69808C58FCE9ULL } }, /* XSUM_XXH128_testdata[10116] */ + { 3372, 0x000000009E3779B1ULL, { 0x454F88075C261CF1ULL, 0x6E4A09D62DDFF57BULL } }, /* XSUM_XXH128_testdata[10117] */ + { 3372, 0x9E3779B185EBCA8DULL, { 0x11A111EE2A25D794ULL, 0xB63D073DDEFB02A8ULL } }, /* XSUM_XXH128_testdata[10118] */ + { 3373, 0x0000000000000000ULL, { 0xA07DF89EACE870B5ULL, 0x56E62BED2C55E779ULL } }, /* XSUM_XXH128_testdata[10119] */ + { 3373, 0x000000009E3779B1ULL, { 0x4711820EE1407E34ULL, 0xA3BD8352D83B272BULL } }, /* XSUM_XXH128_testdata[10120] */ + { 3373, 0x9E3779B185EBCA8DULL, { 0x575E9182CEFD992FULL, 0x4D0D9603D19DE09BULL } }, /* XSUM_XXH128_testdata[10121] */ + { 3374, 0x0000000000000000ULL, { 0xF14876CD4E593F54ULL, 0xD7C45746E8A0C27AULL } }, /* XSUM_XXH128_testdata[10122] */ + { 3374, 0x000000009E3779B1ULL, { 0xF5697D10A5D415EFULL, 0x7C4F7D293F9C9A49ULL } }, /* XSUM_XXH128_testdata[10123] */ + { 3374, 0x9E3779B185EBCA8DULL, { 0xD8E781A0A6F6D906ULL, 0x4882173CCB7E8951ULL } }, /* XSUM_XXH128_testdata[10124] */ + { 3375, 0x0000000000000000ULL, { 0x7566CE50C709787DULL, 0x80DCFA53A6E10AA6ULL } }, /* XSUM_XXH128_testdata[10125] */ + { 3375, 0x000000009E3779B1ULL, { 0x10AA52F50859D070ULL, 0x065A2687ECF87E77ULL } }, /* XSUM_XXH128_testdata[10126] */ + { 3375, 0x9E3779B185EBCA8DULL, { 0xD41FF1B992AA75F9ULL, 0xC6355DB1E99D5ECCULL } }, /* XSUM_XXH128_testdata[10127] */ + { 3376, 0x0000000000000000ULL, { 0xD6BC865A0060E024ULL, 0xE804EF61E55F1709ULL } }, /* XSUM_XXH128_testdata[10128] */ + { 3376, 0x000000009E3779B1ULL, { 0x40FD46C5E95FFB3AULL, 0xEEB6BD4903DF8897ULL } }, /* XSUM_XXH128_testdata[10129] */ + { 3376, 0x9E3779B185EBCA8DULL, { 0x6DBC027EE86B52F1ULL, 0xF88AE234B973D457ULL } }, /* XSUM_XXH128_testdata[10130] */ + { 3377, 0x0000000000000000ULL, { 0x8852757DEF3F3AC7ULL, 0xF550F13DC48DDE0DULL } }, /* XSUM_XXH128_testdata[10131] */ + { 3377, 0x000000009E3779B1ULL, { 0xFD4551ED468EF969ULL, 0xA1C582E464F5392CULL } }, /* XSUM_XXH128_testdata[10132] */ + { 3377, 0x9E3779B185EBCA8DULL, { 0x7CD92F439E03EBBBULL, 0x660FCB588401AF18ULL } }, /* XSUM_XXH128_testdata[10133] */ + { 3378, 0x0000000000000000ULL, { 0x3CF6812DD0D09CB1ULL, 0x8647CD6CB7748936ULL } }, /* XSUM_XXH128_testdata[10134] */ + { 3378, 0x000000009E3779B1ULL, { 0x2B760D916613E6F4ULL, 0xFF18E745195EE8C0ULL } }, /* XSUM_XXH128_testdata[10135] */ + { 3378, 0x9E3779B185EBCA8DULL, { 0x626B10E13E9647AEULL, 0x6CB7A898B9FB363CULL } }, /* XSUM_XXH128_testdata[10136] */ + { 3379, 0x0000000000000000ULL, { 0x5698A6D102F8C1F4ULL, 0x091CFCFEE8D1A359ULL } }, /* XSUM_XXH128_testdata[10137] */ + { 3379, 0x000000009E3779B1ULL, { 0x10FD0583763D23CBULL, 0x20BB38CEFCEC4FEDULL } }, /* XSUM_XXH128_testdata[10138] */ + { 3379, 0x9E3779B185EBCA8DULL, { 0xA6E18A45A57807B6ULL, 0xD321A77225C2AE01ULL } }, /* XSUM_XXH128_testdata[10139] */ + { 3380, 0x0000000000000000ULL, { 0x96795C27D904C9CAULL, 0xAB72EB77BCF2D32CULL } }, /* XSUM_XXH128_testdata[10140] */ + { 3380, 0x000000009E3779B1ULL, { 0x2AEFDC32692D8591ULL, 0x8E475ACF823C0E9CULL } }, /* XSUM_XXH128_testdata[10141] */ + { 3380, 0x9E3779B185EBCA8DULL, { 0x600BDE3FC41E808CULL, 0xDD04349AD39992A3ULL } }, /* XSUM_XXH128_testdata[10142] */ + { 3381, 0x0000000000000000ULL, { 0xF5EA6A3869DB8865ULL, 0xC4FBF3E16269DC2BULL } }, /* XSUM_XXH128_testdata[10143] */ + { 3381, 0x000000009E3779B1ULL, { 0xEE37157BD657EE8CULL, 0xD6B2974684EB2469ULL } }, /* XSUM_XXH128_testdata[10144] */ + { 3381, 0x9E3779B185EBCA8DULL, { 0xF3386B856B7BF6B9ULL, 0xE02498FEEF0B1EE7ULL } }, /* XSUM_XXH128_testdata[10145] */ + { 3382, 0x0000000000000000ULL, { 0x3E356A6CB2C2273CULL, 0xCEF7121B4F6EAB1EULL } }, /* XSUM_XXH128_testdata[10146] */ + { 3382, 0x000000009E3779B1ULL, { 0x3C48D8F4C555295DULL, 0x6069DF879FC49906ULL } }, /* XSUM_XXH128_testdata[10147] */ + { 3382, 0x9E3779B185EBCA8DULL, { 0x938ED73AA86A3EA6ULL, 0x75845DDF6E545C8AULL } }, /* XSUM_XXH128_testdata[10148] */ + { 3383, 0x0000000000000000ULL, { 0x02A498021F3FE5DAULL, 0xBEA2F1B39786FFD4ULL } }, /* XSUM_XXH128_testdata[10149] */ + { 3383, 0x000000009E3779B1ULL, { 0xA9B9CDC732BC4030ULL, 0xBC60C19BD9B65885ULL } }, /* XSUM_XXH128_testdata[10150] */ + { 3383, 0x9E3779B185EBCA8DULL, { 0x167408B658D97687ULL, 0x4B08EAB7C2154228ULL } }, /* XSUM_XXH128_testdata[10151] */ + { 3384, 0x0000000000000000ULL, { 0x6F58654097A2362CULL, 0x54BA122DE73A6812ULL } }, /* XSUM_XXH128_testdata[10152] */ + { 3384, 0x000000009E3779B1ULL, { 0xA7BE027E58CEB262ULL, 0xD078B596E9E53863ULL } }, /* XSUM_XXH128_testdata[10153] */ + { 3384, 0x9E3779B185EBCA8DULL, { 0xEAE046A15ECAF386ULL, 0x6A778A984A5DF7BDULL } }, /* XSUM_XXH128_testdata[10154] */ + { 3385, 0x0000000000000000ULL, { 0x5ABE011F58851AC1ULL, 0xB0856E1BE1AF18F9ULL } }, /* XSUM_XXH128_testdata[10155] */ + { 3385, 0x000000009E3779B1ULL, { 0xBB23EB6BFC820AF6ULL, 0xD33DD793F60B1DBEULL } }, /* XSUM_XXH128_testdata[10156] */ + { 3385, 0x9E3779B185EBCA8DULL, { 0xA242766363ECFFD1ULL, 0x8D4B7275F0D1EA19ULL } }, /* XSUM_XXH128_testdata[10157] */ + { 3386, 0x0000000000000000ULL, { 0x7D6FB06860923912ULL, 0x0D911E2EEF550723ULL } }, /* XSUM_XXH128_testdata[10158] */ + { 3386, 0x000000009E3779B1ULL, { 0x0A0980640C65686DULL, 0xD457460D6113FF76ULL } }, /* XSUM_XXH128_testdata[10159] */ + { 3386, 0x9E3779B185EBCA8DULL, { 0x721052AEF679D3ACULL, 0xE3A6BDFEDE4E8C7CULL } }, /* XSUM_XXH128_testdata[10160] */ + { 3387, 0x0000000000000000ULL, { 0xA76665E0C3EF9A9BULL, 0x892F3110154A5960ULL } }, /* XSUM_XXH128_testdata[10161] */ + { 3387, 0x000000009E3779B1ULL, { 0x951E3DF06166DF1FULL, 0x0DD734F8844E8103ULL } }, /* XSUM_XXH128_testdata[10162] */ + { 3387, 0x9E3779B185EBCA8DULL, { 0xF895B633A5B18B63ULL, 0x8CEA707BF95ADF12ULL } }, /* XSUM_XXH128_testdata[10163] */ + { 3388, 0x0000000000000000ULL, { 0x75DA9626A90ADA95ULL, 0xABB884C6832438DBULL } }, /* XSUM_XXH128_testdata[10164] */ + { 3388, 0x000000009E3779B1ULL, { 0x58079A4886136135ULL, 0xBE4A69DB68DF96EFULL } }, /* XSUM_XXH128_testdata[10165] */ + { 3388, 0x9E3779B185EBCA8DULL, { 0x51D970EBFE6D9BD2ULL, 0x2CFCFEE7BD380E8AULL } }, /* XSUM_XXH128_testdata[10166] */ + { 3389, 0x0000000000000000ULL, { 0x387890C21988999AULL, 0x1A4BF215A0DFCF65ULL } }, /* XSUM_XXH128_testdata[10167] */ + { 3389, 0x000000009E3779B1ULL, { 0x859360F4E8ED7BE6ULL, 0x43C400A135690E00ULL } }, /* XSUM_XXH128_testdata[10168] */ + { 3389, 0x9E3779B185EBCA8DULL, { 0xFA3EB1B97303FB7DULL, 0xB2689C56E3DA7418ULL } }, /* XSUM_XXH128_testdata[10169] */ + { 3390, 0x0000000000000000ULL, { 0xCC3B112F2C79A3A7ULL, 0x4145C2501C4819F7ULL } }, /* XSUM_XXH128_testdata[10170] */ + { 3390, 0x000000009E3779B1ULL, { 0x20359A42878BB673ULL, 0x45C93721246DF445ULL } }, /* XSUM_XXH128_testdata[10171] */ + { 3390, 0x9E3779B185EBCA8DULL, { 0x472523F5CFCC6459ULL, 0x194822021F80B60DULL } }, /* XSUM_XXH128_testdata[10172] */ + { 3391, 0x0000000000000000ULL, { 0x56FD48AD2C3F7AE2ULL, 0x595ECBEEA5BA689EULL } }, /* XSUM_XXH128_testdata[10173] */ + { 3391, 0x000000009E3779B1ULL, { 0xDE906855C34B861CULL, 0x1FBF361668A5AA91ULL } }, /* XSUM_XXH128_testdata[10174] */ + { 3391, 0x9E3779B185EBCA8DULL, { 0x1954BEE13911BEF0ULL, 0x4AC41AC310BA3181ULL } }, /* XSUM_XXH128_testdata[10175] */ + { 3392, 0x0000000000000000ULL, { 0x069C8A3CBB355320ULL, 0x37D45271A2B55E65ULL } }, /* XSUM_XXH128_testdata[10176] */ + { 3392, 0x000000009E3779B1ULL, { 0x7F37507C3B77849CULL, 0x36D50D80B6333ED7ULL } }, /* XSUM_XXH128_testdata[10177] */ + { 3392, 0x9E3779B185EBCA8DULL, { 0x992366365E422669ULL, 0xE85BBEB6523A9011ULL } }, /* XSUM_XXH128_testdata[10178] */ + { 3393, 0x0000000000000000ULL, { 0x2D6D9564C994E53CULL, 0xDBB97D2FE92C18F5ULL } }, /* XSUM_XXH128_testdata[10179] */ + { 3393, 0x000000009E3779B1ULL, { 0xEC6C952E25F3083DULL, 0x1C187795C1EB9C47ULL } }, /* XSUM_XXH128_testdata[10180] */ + { 3393, 0x9E3779B185EBCA8DULL, { 0x061C4F86D60A20AFULL, 0x36460AC449CDDBA5ULL } }, /* XSUM_XXH128_testdata[10181] */ + { 3394, 0x0000000000000000ULL, { 0xB0B37ECBEEA4EB83ULL, 0xB661196AD57CAEB2ULL } }, /* XSUM_XXH128_testdata[10182] */ + { 3394, 0x000000009E3779B1ULL, { 0xA3C86A7CDF3C1E20ULL, 0x6195B2F669D2CCE1ULL } }, /* XSUM_XXH128_testdata[10183] */ + { 3394, 0x9E3779B185EBCA8DULL, { 0xEDC67A98C8453C98ULL, 0xECF033AD7F389A4FULL } }, /* XSUM_XXH128_testdata[10184] */ + { 3395, 0x0000000000000000ULL, { 0x150198DF293C0A4BULL, 0x6E93164C8A4A2B9BULL } }, /* XSUM_XXH128_testdata[10185] */ + { 3395, 0x000000009E3779B1ULL, { 0x51EFD36AF3B55860ULL, 0xB72B2E57A7C801C1ULL } }, /* XSUM_XXH128_testdata[10186] */ + { 3395, 0x9E3779B185EBCA8DULL, { 0x6077B479F4DBB10DULL, 0x57B570320ED1E09BULL } }, /* XSUM_XXH128_testdata[10187] */ + { 3396, 0x0000000000000000ULL, { 0x5DA9C28DBDE35D4AULL, 0x94F75507B0E60E14ULL } }, /* XSUM_XXH128_testdata[10188] */ + { 3396, 0x000000009E3779B1ULL, { 0xB00EB6950C71E60BULL, 0x25972A09B4D9F4BDULL } }, /* XSUM_XXH128_testdata[10189] */ + { 3396, 0x9E3779B185EBCA8DULL, { 0x792D8912B6067280ULL, 0xACF40BA51B3AB1AAULL } }, /* XSUM_XXH128_testdata[10190] */ + { 3397, 0x0000000000000000ULL, { 0x42819BD28C9C8BBBULL, 0x154984D5FEF6660CULL } }, /* XSUM_XXH128_testdata[10191] */ + { 3397, 0x000000009E3779B1ULL, { 0x08EA4911A5A3583DULL, 0xB71AB22075F496B6ULL } }, /* XSUM_XXH128_testdata[10192] */ + { 3397, 0x9E3779B185EBCA8DULL, { 0x987B8D15969B50CCULL, 0x0BAF478DAC3E8D10ULL } }, /* XSUM_XXH128_testdata[10193] */ + { 3398, 0x0000000000000000ULL, { 0x230D4F0FB1F52D75ULL, 0x92390BBCEF6AD358ULL } }, /* XSUM_XXH128_testdata[10194] */ + { 3398, 0x000000009E3779B1ULL, { 0x9807227C58CC171FULL, 0x5ECC99D3CEA18B56ULL } }, /* XSUM_XXH128_testdata[10195] */ + { 3398, 0x9E3779B185EBCA8DULL, { 0x8FD85DD189EF36AFULL, 0xBA05E913938B10C8ULL } }, /* XSUM_XXH128_testdata[10196] */ + { 3399, 0x0000000000000000ULL, { 0x556F3F29D18C0072ULL, 0x64C2767D533DAEBFULL } }, /* XSUM_XXH128_testdata[10197] */ + { 3399, 0x000000009E3779B1ULL, { 0x2D34A5B1690003B5ULL, 0xE1A0D4D060B2B344ULL } }, /* XSUM_XXH128_testdata[10198] */ + { 3399, 0x9E3779B185EBCA8DULL, { 0xFC79DD9F134BDE40ULL, 0xBA26347FADB7C4DCULL } }, /* XSUM_XXH128_testdata[10199] */ + { 3400, 0x0000000000000000ULL, { 0x8667E4F6A9AE7D71ULL, 0x30F2B04C3353876CULL } }, /* XSUM_XXH128_testdata[10200] */ + { 3400, 0x000000009E3779B1ULL, { 0x897BE0F399AB88D1ULL, 0x24E08DBE1C015B69ULL } }, /* XSUM_XXH128_testdata[10201] */ + { 3400, 0x9E3779B185EBCA8DULL, { 0x442B3EA2542D3EC1ULL, 0x9FD3002DD0724F6BULL } }, /* XSUM_XXH128_testdata[10202] */ + { 3401, 0x0000000000000000ULL, { 0xA45C652DA3612B31ULL, 0x7B722BF5BF97B8C9ULL } }, /* XSUM_XXH128_testdata[10203] */ + { 3401, 0x000000009E3779B1ULL, { 0xEFBD4BC90774B890ULL, 0x2FAAD0D188B939DBULL } }, /* XSUM_XXH128_testdata[10204] */ + { 3401, 0x9E3779B185EBCA8DULL, { 0xA1F6535133673725ULL, 0x9BFC8B0BB0BD7143ULL } }, /* XSUM_XXH128_testdata[10205] */ + { 3402, 0x0000000000000000ULL, { 0xC3393268BD9A580FULL, 0x40F0BE912E007527ULL } }, /* XSUM_XXH128_testdata[10206] */ + { 3402, 0x000000009E3779B1ULL, { 0xD1CF54E3945B1D3CULL, 0xA0E5AEC170480BCAULL } }, /* XSUM_XXH128_testdata[10207] */ + { 3402, 0x9E3779B185EBCA8DULL, { 0x900537CE674E5C29ULL, 0xACDC51BB0ACA0F75ULL } }, /* XSUM_XXH128_testdata[10208] */ + { 3403, 0x0000000000000000ULL, { 0x5EF6FB124B92471AULL, 0x8AF84C78BC9028CAULL } }, /* XSUM_XXH128_testdata[10209] */ + { 3403, 0x000000009E3779B1ULL, { 0x61527F40620D22DAULL, 0xE42F47C8736F8CCFULL } }, /* XSUM_XXH128_testdata[10210] */ + { 3403, 0x9E3779B185EBCA8DULL, { 0xE9B203C1E1A13490ULL, 0xB8AA668753F09F8AULL } }, /* XSUM_XXH128_testdata[10211] */ + { 3404, 0x0000000000000000ULL, { 0xFEEF85FD8F064FB8ULL, 0x594E32F02DEC493AULL } }, /* XSUM_XXH128_testdata[10212] */ + { 3404, 0x000000009E3779B1ULL, { 0x4F7653007B9D9DAEULL, 0x64947802766DB2CEULL } }, /* XSUM_XXH128_testdata[10213] */ + { 3404, 0x9E3779B185EBCA8DULL, { 0x36D403BFD873D29EULL, 0x16F45D985C084226ULL } }, /* XSUM_XXH128_testdata[10214] */ + { 3405, 0x0000000000000000ULL, { 0xAD4E16D2BCF13E91ULL, 0x3A7FA312FBDA6A42ULL } }, /* XSUM_XXH128_testdata[10215] */ + { 3405, 0x000000009E3779B1ULL, { 0xD5A05A4F957E5B75ULL, 0x2746F5D1F0F12B9BULL } }, /* XSUM_XXH128_testdata[10216] */ + { 3405, 0x9E3779B185EBCA8DULL, { 0xCA663C3422B8AC5AULL, 0xF689690CDE964C4CULL } }, /* XSUM_XXH128_testdata[10217] */ + { 3406, 0x0000000000000000ULL, { 0x04C879B2B9C607D1ULL, 0x2472D0C28D949599ULL } }, /* XSUM_XXH128_testdata[10218] */ + { 3406, 0x000000009E3779B1ULL, { 0x360BDB67D042250EULL, 0x70AA8112F408461AULL } }, /* XSUM_XXH128_testdata[10219] */ + { 3406, 0x9E3779B185EBCA8DULL, { 0x3E18E39DD05AD200ULL, 0x8B37620E205407A4ULL } }, /* XSUM_XXH128_testdata[10220] */ + { 3407, 0x0000000000000000ULL, { 0x3DC2FBCD16225841ULL, 0xBEC10FA7F910F096ULL } }, /* XSUM_XXH128_testdata[10221] */ + { 3407, 0x000000009E3779B1ULL, { 0xF80A841C7A499AA7ULL, 0xA852619546B79E31ULL } }, /* XSUM_XXH128_testdata[10222] */ + { 3407, 0x9E3779B185EBCA8DULL, { 0xB0102B3A179982DFULL, 0xF935D7D8E10EDFFDULL } }, /* XSUM_XXH128_testdata[10223] */ + { 3408, 0x0000000000000000ULL, { 0xF5EA4DB56376A521ULL, 0x28EC8C205EE740BBULL } }, /* XSUM_XXH128_testdata[10224] */ + { 3408, 0x000000009E3779B1ULL, { 0xDFEA453925C72D90ULL, 0x8F2CC2DCED630200ULL } }, /* XSUM_XXH128_testdata[10225] */ + { 3408, 0x9E3779B185EBCA8DULL, { 0x76CBDCD851E1578DULL, 0xA59BC1D9776C3D39ULL } }, /* XSUM_XXH128_testdata[10226] */ + { 3409, 0x0000000000000000ULL, { 0xE987EBEEE1EECCD9ULL, 0x878AD21AC06C55F0ULL } }, /* XSUM_XXH128_testdata[10227] */ + { 3409, 0x000000009E3779B1ULL, { 0x9F5FC5E2CD6EF83DULL, 0xD28BE69A70D1302DULL } }, /* XSUM_XXH128_testdata[10228] */ + { 3409, 0x9E3779B185EBCA8DULL, { 0xA2B2B1828D920A8FULL, 0x1443BD4EDE66CE7AULL } }, /* XSUM_XXH128_testdata[10229] */ + { 3410, 0x0000000000000000ULL, { 0xA28A69165BC6201FULL, 0x58B60BC89AC3D8EEULL } }, /* XSUM_XXH128_testdata[10230] */ + { 3410, 0x000000009E3779B1ULL, { 0xA1AE2C7E52FBADE0ULL, 0x7BC707AB9840B98AULL } }, /* XSUM_XXH128_testdata[10231] */ + { 3410, 0x9E3779B185EBCA8DULL, { 0x6D3E68040E28F068ULL, 0x2FD03AAA40A92094ULL } }, /* XSUM_XXH128_testdata[10232] */ + { 3411, 0x0000000000000000ULL, { 0xD084835BE48582BAULL, 0xFB062FD9069DD918ULL } }, /* XSUM_XXH128_testdata[10233] */ + { 3411, 0x000000009E3779B1ULL, { 0xE9C755AED39E3F16ULL, 0x825C2D74CA8657DEULL } }, /* XSUM_XXH128_testdata[10234] */ + { 3411, 0x9E3779B185EBCA8DULL, { 0xFAE48A7F6D0EA3ADULL, 0x10179D5590C25744ULL } }, /* XSUM_XXH128_testdata[10235] */ + { 3412, 0x0000000000000000ULL, { 0x99FAC1585DA2979EULL, 0x1DC55DDBC512A54AULL } }, /* XSUM_XXH128_testdata[10236] */ + { 3412, 0x000000009E3779B1ULL, { 0xAAA8BF0D78CC11E3ULL, 0x55BA06A24C250683ULL } }, /* XSUM_XXH128_testdata[10237] */ + { 3412, 0x9E3779B185EBCA8DULL, { 0x8A0946D812EC9930ULL, 0xE7B5321617B66CF6ULL } }, /* XSUM_XXH128_testdata[10238] */ + { 3413, 0x0000000000000000ULL, { 0x9B7D110224DE3741ULL, 0x7D29879CEA4BC6EFULL } }, /* XSUM_XXH128_testdata[10239] */ + { 3413, 0x000000009E3779B1ULL, { 0x5023CCB0B1DD2BCFULL, 0x1C24810361A6A800ULL } }, /* XSUM_XXH128_testdata[10240] */ + { 3413, 0x9E3779B185EBCA8DULL, { 0x512B43626433FFD5ULL, 0x451B9A54222912EDULL } }, /* XSUM_XXH128_testdata[10241] */ + { 3414, 0x0000000000000000ULL, { 0x068464F851726C21ULL, 0xCBF70CEB00AE78F0ULL } }, /* XSUM_XXH128_testdata[10242] */ + { 3414, 0x000000009E3779B1ULL, { 0x4ABA29CB4C21BD43ULL, 0xF449EBFC44D2F60AULL } }, /* XSUM_XXH128_testdata[10243] */ + { 3414, 0x9E3779B185EBCA8DULL, { 0x1B249FDF51CB749BULL, 0xC95484A2EB536862ULL } }, /* XSUM_XXH128_testdata[10244] */ + { 3415, 0x0000000000000000ULL, { 0xFA428E8672E650F5ULL, 0x6D8EF62E29F4FA94ULL } }, /* XSUM_XXH128_testdata[10245] */ + { 3415, 0x000000009E3779B1ULL, { 0x7E5056490F731D01ULL, 0x2E2EF841FCBEEF9FULL } }, /* XSUM_XXH128_testdata[10246] */ + { 3415, 0x9E3779B185EBCA8DULL, { 0x30E2D66C047374EAULL, 0x170D312A468192D9ULL } }, /* XSUM_XXH128_testdata[10247] */ + { 3416, 0x0000000000000000ULL, { 0x537AE0407DA6E36EULL, 0x9B5FE17827B8DFC4ULL } }, /* XSUM_XXH128_testdata[10248] */ + { 3416, 0x000000009E3779B1ULL, { 0x3711A4203BF2C04FULL, 0x516342393222E0BBULL } }, /* XSUM_XXH128_testdata[10249] */ + { 3416, 0x9E3779B185EBCA8DULL, { 0x3A2632845436AFA4ULL, 0xE47FB4FDCACEB3C8ULL } }, /* XSUM_XXH128_testdata[10250] */ + { 3417, 0x0000000000000000ULL, { 0xC78CBD900D0FA155ULL, 0x3E0CFFB36CB41979ULL } }, /* XSUM_XXH128_testdata[10251] */ + { 3417, 0x000000009E3779B1ULL, { 0x2238A7CDD4728648ULL, 0xEDEF4CF40506AA45ULL } }, /* XSUM_XXH128_testdata[10252] */ + { 3417, 0x9E3779B185EBCA8DULL, { 0xEA043C3AE68F0072ULL, 0x56D02579634E4A0AULL } }, /* XSUM_XXH128_testdata[10253] */ + { 3418, 0x0000000000000000ULL, { 0x16A5A54E8C5C26E1ULL, 0x0D9239AFF663185EULL } }, /* XSUM_XXH128_testdata[10254] */ + { 3418, 0x000000009E3779B1ULL, { 0x26B9E11C030B6599ULL, 0x8A968632CBFC17D2ULL } }, /* XSUM_XXH128_testdata[10255] */ + { 3418, 0x9E3779B185EBCA8DULL, { 0xBCD3F01DC87BEACFULL, 0x481A4784425DCC4DULL } }, /* XSUM_XXH128_testdata[10256] */ + { 3419, 0x0000000000000000ULL, { 0x99D4EE76AF195731ULL, 0xD7680A2C3ED9240AULL } }, /* XSUM_XXH128_testdata[10257] */ + { 3419, 0x000000009E3779B1ULL, { 0xBE2650365DE6E9EFULL, 0x66943CCEDF4B0E80ULL } }, /* XSUM_XXH128_testdata[10258] */ + { 3419, 0x9E3779B185EBCA8DULL, { 0x4B4454EAE9502B87ULL, 0xB5A9E10D659992B9ULL } }, /* XSUM_XXH128_testdata[10259] */ + { 3420, 0x0000000000000000ULL, { 0xBEED4A7672B35DA1ULL, 0x07C8B93C31F79DF4ULL } }, /* XSUM_XXH128_testdata[10260] */ + { 3420, 0x000000009E3779B1ULL, { 0x8CEABEF7CDED21CEULL, 0x8130E5D588C02233ULL } }, /* XSUM_XXH128_testdata[10261] */ + { 3420, 0x9E3779B185EBCA8DULL, { 0x9165EC9EFB91D063ULL, 0x19A0EC2C44433604ULL } }, /* XSUM_XXH128_testdata[10262] */ + { 3421, 0x0000000000000000ULL, { 0xD2B64EFAB2C7F3B6ULL, 0x5791BCF9AC2C1300ULL } }, /* XSUM_XXH128_testdata[10263] */ + { 3421, 0x000000009E3779B1ULL, { 0x02374F9F5533472EULL, 0x90E1F802BCEA1989ULL } }, /* XSUM_XXH128_testdata[10264] */ + { 3421, 0x9E3779B185EBCA8DULL, { 0x26F3512DBB64CCD6ULL, 0xFFB425542FB23BECULL } }, /* XSUM_XXH128_testdata[10265] */ + { 3422, 0x0000000000000000ULL, { 0x16994ADC95C3DD59ULL, 0xC21E3D1F5D9D10CBULL } }, /* XSUM_XXH128_testdata[10266] */ + { 3422, 0x000000009E3779B1ULL, { 0x82AB9E7499FEFD69ULL, 0x3FF6435BE4D5DAC8ULL } }, /* XSUM_XXH128_testdata[10267] */ + { 3422, 0x9E3779B185EBCA8DULL, { 0x25DD06403D47B9E2ULL, 0x2B10CF7BFE61623AULL } }, /* XSUM_XXH128_testdata[10268] */ + { 3423, 0x0000000000000000ULL, { 0x5F95506988F7A6E2ULL, 0xFC94FEC0B6744D60ULL } }, /* XSUM_XXH128_testdata[10269] */ + { 3423, 0x000000009E3779B1ULL, { 0x470D152A69E2F469ULL, 0x19D20D2E82488117ULL } }, /* XSUM_XXH128_testdata[10270] */ + { 3423, 0x9E3779B185EBCA8DULL, { 0xBCF53EAAA0FAFE5BULL, 0xC7EE9FCD562FDE9DULL } }, /* XSUM_XXH128_testdata[10271] */ + { 3424, 0x0000000000000000ULL, { 0xB82C4D58447071F6ULL, 0x8364BEFFD2AC3038ULL } }, /* XSUM_XXH128_testdata[10272] */ + { 3424, 0x000000009E3779B1ULL, { 0xF63140A861AF8C9BULL, 0xC96BCF15DD33758BULL } }, /* XSUM_XXH128_testdata[10273] */ + { 3424, 0x9E3779B185EBCA8DULL, { 0x53C6A0C80A8CE03AULL, 0x3DD1CC9D84CAD59CULL } }, /* XSUM_XXH128_testdata[10274] */ + { 3425, 0x0000000000000000ULL, { 0x51EC8660F7BE8073ULL, 0x3F6CDE68D1629951ULL } }, /* XSUM_XXH128_testdata[10275] */ + { 3425, 0x000000009E3779B1ULL, { 0xBF9B7CFB587A3243ULL, 0xBC8BCAA26A8A67B0ULL } }, /* XSUM_XXH128_testdata[10276] */ + { 3425, 0x9E3779B185EBCA8DULL, { 0x62287687188CEDD3ULL, 0x08B34B47B7B31FBAULL } }, /* XSUM_XXH128_testdata[10277] */ + { 3426, 0x0000000000000000ULL, { 0x17CD1C93665A3EEAULL, 0x09FB3F23ED20D41BULL } }, /* XSUM_XXH128_testdata[10278] */ + { 3426, 0x000000009E3779B1ULL, { 0x0DA1E04279D094CEULL, 0x2ECE0B59B3425A35ULL } }, /* XSUM_XXH128_testdata[10279] */ + { 3426, 0x9E3779B185EBCA8DULL, { 0x85B611DDF5A748AEULL, 0x7A4F6611C57D876DULL } }, /* XSUM_XXH128_testdata[10280] */ + { 3427, 0x0000000000000000ULL, { 0x6807CC5D6956C70CULL, 0x8F152806C92B4DC6ULL } }, /* XSUM_XXH128_testdata[10281] */ + { 3427, 0x000000009E3779B1ULL, { 0xCD5EB90D65C77A8DULL, 0x0460CFB7B309B9ACULL } }, /* XSUM_XXH128_testdata[10282] */ + { 3427, 0x9E3779B185EBCA8DULL, { 0x3D1F4E12503D6B0EULL, 0x5028762CC8504023ULL } }, /* XSUM_XXH128_testdata[10283] */ + { 3428, 0x0000000000000000ULL, { 0x49133B7C04546C61ULL, 0x5DB813A9524CA4D3ULL } }, /* XSUM_XXH128_testdata[10284] */ + { 3428, 0x000000009E3779B1ULL, { 0x383C37D1BEBDBF40ULL, 0x6833B9E07134043BULL } }, /* XSUM_XXH128_testdata[10285] */ + { 3428, 0x9E3779B185EBCA8DULL, { 0xAAF1A828EC52CB6AULL, 0x1BB21081FF864185ULL } }, /* XSUM_XXH128_testdata[10286] */ + { 3429, 0x0000000000000000ULL, { 0xEE23B02BF3D00EB6ULL, 0xB5D7F063055B7059ULL } }, /* XSUM_XXH128_testdata[10287] */ + { 3429, 0x000000009E3779B1ULL, { 0x5BCFCF4883D62874ULL, 0x617731F8EFAC52C7ULL } }, /* XSUM_XXH128_testdata[10288] */ + { 3429, 0x9E3779B185EBCA8DULL, { 0xC4C9BA35282BF46AULL, 0x1BE5C9FD5EB55CA5ULL } }, /* XSUM_XXH128_testdata[10289] */ + { 3430, 0x0000000000000000ULL, { 0x5923EB8CFFF27A78ULL, 0xCD6EC9C6798D656AULL } }, /* XSUM_XXH128_testdata[10290] */ + { 3430, 0x000000009E3779B1ULL, { 0xB2D8A60ED099AA78ULL, 0x40D29D22E3D6040DULL } }, /* XSUM_XXH128_testdata[10291] */ + { 3430, 0x9E3779B185EBCA8DULL, { 0x8B21E6279C861866ULL, 0x8689D7805570BD4AULL } }, /* XSUM_XXH128_testdata[10292] */ + { 3431, 0x0000000000000000ULL, { 0x715B9D93A9515421ULL, 0x5025F06AF88B089BULL } }, /* XSUM_XXH128_testdata[10293] */ + { 3431, 0x000000009E3779B1ULL, { 0x8BEDDF618BBEFFA3ULL, 0xE4ABCE529739A82DULL } }, /* XSUM_XXH128_testdata[10294] */ + { 3431, 0x9E3779B185EBCA8DULL, { 0x5578E24B67696515ULL, 0xA172BCA03C18F70DULL } }, /* XSUM_XXH128_testdata[10295] */ + { 3432, 0x0000000000000000ULL, { 0x852C7D23D9C52C61ULL, 0x59E59D5347A2EB05ULL } }, /* XSUM_XXH128_testdata[10296] */ + { 3432, 0x000000009E3779B1ULL, { 0x3A6CBE07190A005AULL, 0x900F476EDA02D588ULL } }, /* XSUM_XXH128_testdata[10297] */ + { 3432, 0x9E3779B185EBCA8DULL, { 0xF2860B377932F538ULL, 0x03576654E6A024B9ULL } }, /* XSUM_XXH128_testdata[10298] */ + { 3433, 0x0000000000000000ULL, { 0x2CACD2411AA01EDFULL, 0xD46290E649FFF836ULL } }, /* XSUM_XXH128_testdata[10299] */ + { 3433, 0x000000009E3779B1ULL, { 0xA88E18543D822425ULL, 0xA0A05717A1F128D1ULL } }, /* XSUM_XXH128_testdata[10300] */ + { 3433, 0x9E3779B185EBCA8DULL, { 0x293B3F36962943D9ULL, 0x3F8DEBEF4D605044ULL } }, /* XSUM_XXH128_testdata[10301] */ + { 3434, 0x0000000000000000ULL, { 0x7C19178BEF5EE94CULL, 0xBE4D5F39D239B2F5ULL } }, /* XSUM_XXH128_testdata[10302] */ + { 3434, 0x000000009E3779B1ULL, { 0xB6BB2113CC29DDA1ULL, 0xE86A75EB35949913ULL } }, /* XSUM_XXH128_testdata[10303] */ + { 3434, 0x9E3779B185EBCA8DULL, { 0x20E2E82BB895B8A1ULL, 0x0E13CDFA472708CCULL } }, /* XSUM_XXH128_testdata[10304] */ + { 3435, 0x0000000000000000ULL, { 0x3F781F8F6FF6355AULL, 0x61BEE9D9A5121655ULL } }, /* XSUM_XXH128_testdata[10305] */ + { 3435, 0x000000009E3779B1ULL, { 0x37F802B6779C0860ULL, 0x85D57A3E686FB9D4ULL } }, /* XSUM_XXH128_testdata[10306] */ + { 3435, 0x9E3779B185EBCA8DULL, { 0x2BE5292F21AFAA55ULL, 0x141641AA35BC4731ULL } }, /* XSUM_XXH128_testdata[10307] */ + { 3436, 0x0000000000000000ULL, { 0x6613D5C175439532ULL, 0x42F877F85EF75856ULL } }, /* XSUM_XXH128_testdata[10308] */ + { 3436, 0x000000009E3779B1ULL, { 0x869BA9C330BC7DCEULL, 0xFA83FE08A33CA16EULL } }, /* XSUM_XXH128_testdata[10309] */ + { 3436, 0x9E3779B185EBCA8DULL, { 0x14730479802AE13AULL, 0xDDD6B39224D47856ULL } }, /* XSUM_XXH128_testdata[10310] */ + { 3437, 0x0000000000000000ULL, { 0xB2F9827610AE5FD8ULL, 0x77257FCB55FDECBCULL } }, /* XSUM_XXH128_testdata[10311] */ + { 3437, 0x000000009E3779B1ULL, { 0x915370D9379782CCULL, 0x51F7405F22C35094ULL } }, /* XSUM_XXH128_testdata[10312] */ + { 3437, 0x9E3779B185EBCA8DULL, { 0x9D9D6E47EEF46586ULL, 0x53029B3E01A26E04ULL } }, /* XSUM_XXH128_testdata[10313] */ + { 3438, 0x0000000000000000ULL, { 0x03608AC79778363EULL, 0x0436694C4BBA62D1ULL } }, /* XSUM_XXH128_testdata[10314] */ + { 3438, 0x000000009E3779B1ULL, { 0xC5623369768F70D7ULL, 0xAC2E9F7741A9F33CULL } }, /* XSUM_XXH128_testdata[10315] */ + { 3438, 0x9E3779B185EBCA8DULL, { 0x81CF8D41A65F977EULL, 0x4F43F7004000C8A0ULL } }, /* XSUM_XXH128_testdata[10316] */ + { 3439, 0x0000000000000000ULL, { 0x90729D66C715DFAFULL, 0x6D02C2F3485AC5ADULL } }, /* XSUM_XXH128_testdata[10317] */ + { 3439, 0x000000009E3779B1ULL, { 0x64C0C397479B42EDULL, 0x479F30EFE4950DC5ULL } }, /* XSUM_XXH128_testdata[10318] */ + { 3439, 0x9E3779B185EBCA8DULL, { 0x3B6F4CD6BD92BE88ULL, 0x90D3886D7BECF875ULL } }, /* XSUM_XXH128_testdata[10319] */ + { 3440, 0x0000000000000000ULL, { 0x323981E33475BF91ULL, 0x7FE51AB97D51073DULL } }, /* XSUM_XXH128_testdata[10320] */ + { 3440, 0x000000009E3779B1ULL, { 0x6A63A05E7994B6E2ULL, 0x0C6BDF331F6C1BAEULL } }, /* XSUM_XXH128_testdata[10321] */ + { 3440, 0x9E3779B185EBCA8DULL, { 0x144B191EC86C3643ULL, 0x9079F6904A5493BBULL } }, /* XSUM_XXH128_testdata[10322] */ + { 3441, 0x0000000000000000ULL, { 0x9A9ACC5955002DFDULL, 0xC2B408E27C58BEE5ULL } }, /* XSUM_XXH128_testdata[10323] */ + { 3441, 0x000000009E3779B1ULL, { 0xDFF2B1FB99727E5CULL, 0x3AAF9D8510C70762ULL } }, /* XSUM_XXH128_testdata[10324] */ + { 3441, 0x9E3779B185EBCA8DULL, { 0x021F71FC64158D63ULL, 0xD87D65F9244C1E38ULL } }, /* XSUM_XXH128_testdata[10325] */ + { 3442, 0x0000000000000000ULL, { 0xDF539EAE3D64E04FULL, 0xF2F82C56EF79B9C5ULL } }, /* XSUM_XXH128_testdata[10326] */ + { 3442, 0x000000009E3779B1ULL, { 0xB316B19E3A0E815AULL, 0xB73B97D2774CD35BULL } }, /* XSUM_XXH128_testdata[10327] */ + { 3442, 0x9E3779B185EBCA8DULL, { 0x3BECB796BDA1FD82ULL, 0x46FACF285569978CULL } }, /* XSUM_XXH128_testdata[10328] */ + { 3443, 0x0000000000000000ULL, { 0x336A96389E5FDFCEULL, 0x4A4CC0018217537DULL } }, /* XSUM_XXH128_testdata[10329] */ + { 3443, 0x000000009E3779B1ULL, { 0xB0E76044169F6EABULL, 0xE9FAFB0E78106FEEULL } }, /* XSUM_XXH128_testdata[10330] */ + { 3443, 0x9E3779B185EBCA8DULL, { 0x1192397EC8E8CF2FULL, 0x364F9F623BB0DDE0ULL } }, /* XSUM_XXH128_testdata[10331] */ + { 3444, 0x0000000000000000ULL, { 0x556F1E7C93E809B7ULL, 0x2655D669E205BCECULL } }, /* XSUM_XXH128_testdata[10332] */ + { 3444, 0x000000009E3779B1ULL, { 0xB62A913506ED4283ULL, 0xD8B20E6FEBDECE78ULL } }, /* XSUM_XXH128_testdata[10333] */ + { 3444, 0x9E3779B185EBCA8DULL, { 0x2ED343BD289B4E62ULL, 0x4A04815BE776E029ULL } }, /* XSUM_XXH128_testdata[10334] */ + { 3445, 0x0000000000000000ULL, { 0x080D6F59003E4FC4ULL, 0x258A30F4ECB033D2ULL } }, /* XSUM_XXH128_testdata[10335] */ + { 3445, 0x000000009E3779B1ULL, { 0xCB12F5952ADEF24EULL, 0x47290EC212D2AC6DULL } }, /* XSUM_XXH128_testdata[10336] */ + { 3445, 0x9E3779B185EBCA8DULL, { 0xFDAF46FCD54D5FD1ULL, 0x1B7125B8679EB0B8ULL } }, /* XSUM_XXH128_testdata[10337] */ + { 3446, 0x0000000000000000ULL, { 0x84A0088DB36E1F64ULL, 0x2359B06ED329B334ULL } }, /* XSUM_XXH128_testdata[10338] */ + { 3446, 0x000000009E3779B1ULL, { 0xB5E4A4801CA01B1BULL, 0x99E49B8A0D8C17A6ULL } }, /* XSUM_XXH128_testdata[10339] */ + { 3446, 0x9E3779B185EBCA8DULL, { 0x4F8457DDCA33663DULL, 0x04D7B8AFDDA71444ULL } }, /* XSUM_XXH128_testdata[10340] */ + { 3447, 0x0000000000000000ULL, { 0xCED536C2D29C87EFULL, 0x2E189E9EA35B0282ULL } }, /* XSUM_XXH128_testdata[10341] */ + { 3447, 0x000000009E3779B1ULL, { 0xF0FA9E8C618D1451ULL, 0xD50D1EC101D75E2AULL } }, /* XSUM_XXH128_testdata[10342] */ + { 3447, 0x9E3779B185EBCA8DULL, { 0x83F8E89E2E59F5D8ULL, 0x44F21A82844FA2D5ULL } }, /* XSUM_XXH128_testdata[10343] */ + { 3448, 0x0000000000000000ULL, { 0x4B040A83B50A8CC0ULL, 0xA44D902ADA411BE0ULL } }, /* XSUM_XXH128_testdata[10344] */ + { 3448, 0x000000009E3779B1ULL, { 0xD3639D1217DD9527ULL, 0xD9198FD4D69380E0ULL } }, /* XSUM_XXH128_testdata[10345] */ + { 3448, 0x9E3779B185EBCA8DULL, { 0xAD33E209B12DE98AULL, 0x1F310A3496D31D95ULL } }, /* XSUM_XXH128_testdata[10346] */ + { 3449, 0x0000000000000000ULL, { 0x742BF7496BB72640ULL, 0x746FBBDC11A020A1ULL } }, /* XSUM_XXH128_testdata[10347] */ + { 3449, 0x000000009E3779B1ULL, { 0x2124C0389D976820ULL, 0x39A0600FF2732E9DULL } }, /* XSUM_XXH128_testdata[10348] */ + { 3449, 0x9E3779B185EBCA8DULL, { 0xA763199E64F92DCCULL, 0x4801D68F2F803B60ULL } }, /* XSUM_XXH128_testdata[10349] */ + { 3450, 0x0000000000000000ULL, { 0xFD63BD7EFEDD98E3ULL, 0xD85F52EF6517065CULL } }, /* XSUM_XXH128_testdata[10350] */ + { 3450, 0x000000009E3779B1ULL, { 0xBFE03678C33B52CFULL, 0x93D65EC2EBCE7EA8ULL } }, /* XSUM_XXH128_testdata[10351] */ + { 3450, 0x9E3779B185EBCA8DULL, { 0xA42BEBCE3C653456ULL, 0xF075B9459F3B5B82ULL } }, /* XSUM_XXH128_testdata[10352] */ + { 3451, 0x0000000000000000ULL, { 0x0538AAB855AF7831ULL, 0x5657C8C2AC7A6A17ULL } }, /* XSUM_XXH128_testdata[10353] */ + { 3451, 0x000000009E3779B1ULL, { 0xDD0D062EB3F6D144ULL, 0xC081B999E9ECED29ULL } }, /* XSUM_XXH128_testdata[10354] */ + { 3451, 0x9E3779B185EBCA8DULL, { 0xA973A0AA06A01C7DULL, 0x7F2C542C49385D6CULL } }, /* XSUM_XXH128_testdata[10355] */ + { 3452, 0x0000000000000000ULL, { 0x4CA97A96065818D5ULL, 0x407C6E24E72B7D5AULL } }, /* XSUM_XXH128_testdata[10356] */ + { 3452, 0x000000009E3779B1ULL, { 0x9640F8DD72BF4D4AULL, 0x6E709AF08D0FC3F3ULL } }, /* XSUM_XXH128_testdata[10357] */ + { 3452, 0x9E3779B185EBCA8DULL, { 0x8AA10488C167A8D8ULL, 0xF47AD0B6470A1469ULL } }, /* XSUM_XXH128_testdata[10358] */ + { 3453, 0x0000000000000000ULL, { 0xFCC4220563AD3B2DULL, 0x9913601AD10A9E76ULL } }, /* XSUM_XXH128_testdata[10359] */ + { 3453, 0x000000009E3779B1ULL, { 0x509FB157FDC576E9ULL, 0x344897420BFE0E2BULL } }, /* XSUM_XXH128_testdata[10360] */ + { 3453, 0x9E3779B185EBCA8DULL, { 0xADA3C779BAF99218ULL, 0x1123CAAABA91453BULL } }, /* XSUM_XXH128_testdata[10361] */ + { 3454, 0x0000000000000000ULL, { 0x2BA0F086D16C658DULL, 0x0709AEE2ECC4E42FULL } }, /* XSUM_XXH128_testdata[10362] */ + { 3454, 0x000000009E3779B1ULL, { 0xAE32EC06D94D2EF1ULL, 0x038E72C53B1492DAULL } }, /* XSUM_XXH128_testdata[10363] */ + { 3454, 0x9E3779B185EBCA8DULL, { 0x8D86FA4EDA6D474CULL, 0x48AAABE6EFD0C887ULL } }, /* XSUM_XXH128_testdata[10364] */ + { 3455, 0x0000000000000000ULL, { 0x5EB5CCCC2C59EA39ULL, 0x4CC0F2EDEC93ED20ULL } }, /* XSUM_XXH128_testdata[10365] */ + { 3455, 0x000000009E3779B1ULL, { 0x50D9A5C1424823F7ULL, 0x49988519EBB4E56BULL } }, /* XSUM_XXH128_testdata[10366] */ + { 3455, 0x9E3779B185EBCA8DULL, { 0xF9F51AE372D23DC7ULL, 0x80768BB0F057B7A7ULL } }, /* XSUM_XXH128_testdata[10367] */ + { 3456, 0x0000000000000000ULL, { 0xE57B9B091D086CFEULL, 0x310AC93B7C835671ULL } }, /* XSUM_XXH128_testdata[10368] */ + { 3456, 0x000000009E3779B1ULL, { 0x71B9AD10BC14D03BULL, 0x9ADF23012BC9DEFDULL } }, /* XSUM_XXH128_testdata[10369] */ + { 3456, 0x9E3779B185EBCA8DULL, { 0xD59013D9A35564C3ULL, 0x7DB32E9CD740D2F0ULL } }, /* XSUM_XXH128_testdata[10370] */ + { 3457, 0x0000000000000000ULL, { 0x7EB941A402BFEDB4ULL, 0x4273E46BFE5668EDULL } }, /* XSUM_XXH128_testdata[10371] */ + { 3457, 0x000000009E3779B1ULL, { 0x0FC6A79726418973ULL, 0xF7F90260B5F8968AULL } }, /* XSUM_XXH128_testdata[10372] */ + { 3457, 0x9E3779B185EBCA8DULL, { 0xCEF2BA119E1F2490ULL, 0x4EB2172E10A8B45AULL } }, /* XSUM_XXH128_testdata[10373] */ + { 3458, 0x0000000000000000ULL, { 0x15A8595F20AB7869ULL, 0x86192FD480A7E7AFULL } }, /* XSUM_XXH128_testdata[10374] */ + { 3458, 0x000000009E3779B1ULL, { 0x0967B20AF23BC655ULL, 0xE90CEAA121A22DDEULL } }, /* XSUM_XXH128_testdata[10375] */ + { 3458, 0x9E3779B185EBCA8DULL, { 0x5F570F540BFB5D14ULL, 0x41128796CF0268BDULL } }, /* XSUM_XXH128_testdata[10376] */ + { 3459, 0x0000000000000000ULL, { 0x2BDB99769C00EF97ULL, 0x5C6B7D6CE4DF0418ULL } }, /* XSUM_XXH128_testdata[10377] */ + { 3459, 0x000000009E3779B1ULL, { 0xDA5BF93863A2F49CULL, 0xB64F9B179B72822FULL } }, /* XSUM_XXH128_testdata[10378] */ + { 3459, 0x9E3779B185EBCA8DULL, { 0x1A6C238C35C7AB6AULL, 0x68C666701A2FDB97ULL } }, /* XSUM_XXH128_testdata[10379] */ + { 3460, 0x0000000000000000ULL, { 0xB13E92D074159621ULL, 0x44D32AC36A408797ULL } }, /* XSUM_XXH128_testdata[10380] */ + { 3460, 0x000000009E3779B1ULL, { 0xB6D5D0210F02339BULL, 0xD7BF516A9BBF1182ULL } }, /* XSUM_XXH128_testdata[10381] */ + { 3460, 0x9E3779B185EBCA8DULL, { 0xE12928F662EB9C09ULL, 0x5E8CADFED197B670ULL } }, /* XSUM_XXH128_testdata[10382] */ + { 3461, 0x0000000000000000ULL, { 0x7AA1893136ECA326ULL, 0x4A028B0A99E7694AULL } }, /* XSUM_XXH128_testdata[10383] */ + { 3461, 0x000000009E3779B1ULL, { 0x4441B667EF5CDBB0ULL, 0xA37E0A09C41B4B33ULL } }, /* XSUM_XXH128_testdata[10384] */ + { 3461, 0x9E3779B185EBCA8DULL, { 0x189A347EEE5B44A7ULL, 0xA1E6F17E835F8441ULL } }, /* XSUM_XXH128_testdata[10385] */ + { 3462, 0x0000000000000000ULL, { 0x444A65AE4ADAA185ULL, 0x25632A64EE16BB15ULL } }, /* XSUM_XXH128_testdata[10386] */ + { 3462, 0x000000009E3779B1ULL, { 0x33EFD4DBE8CFE3FBULL, 0x994AA8674EBC124FULL } }, /* XSUM_XXH128_testdata[10387] */ + { 3462, 0x9E3779B185EBCA8DULL, { 0x4D31B5EFA7943093ULL, 0x16BDBA22465B83DEULL } }, /* XSUM_XXH128_testdata[10388] */ + { 3463, 0x0000000000000000ULL, { 0x743C88E7E0808C6EULL, 0xB85A28FE241E994CULL } }, /* XSUM_XXH128_testdata[10389] */ + { 3463, 0x000000009E3779B1ULL, { 0x4054964D27AB669FULL, 0x4BAEC490F83F938AULL } }, /* XSUM_XXH128_testdata[10390] */ + { 3463, 0x9E3779B185EBCA8DULL, { 0x457B3C8C414C7E00ULL, 0x3CCC3738BBCCCBD9ULL } }, /* XSUM_XXH128_testdata[10391] */ + { 3464, 0x0000000000000000ULL, { 0x766A3D9A086BEEDCULL, 0xAD3DD95E685CD39DULL } }, /* XSUM_XXH128_testdata[10392] */ + { 3464, 0x000000009E3779B1ULL, { 0x1262D9FB39858594ULL, 0x2AB45614A1BC0C39ULL } }, /* XSUM_XXH128_testdata[10393] */ + { 3464, 0x9E3779B185EBCA8DULL, { 0xD00BD9334F499621ULL, 0xDA353161447BAF4EULL } }, /* XSUM_XXH128_testdata[10394] */ + { 3465, 0x0000000000000000ULL, { 0x5A9AF97390F2D336ULL, 0x7C447FD1AC621B1CULL } }, /* XSUM_XXH128_testdata[10395] */ + { 3465, 0x000000009E3779B1ULL, { 0x32CDBC7938E39758ULL, 0x0FFA6425D2408CACULL } }, /* XSUM_XXH128_testdata[10396] */ + { 3465, 0x9E3779B185EBCA8DULL, { 0xDD343FDD81C24DECULL, 0x8463663F87A77DFEULL } }, /* XSUM_XXH128_testdata[10397] */ + { 3466, 0x0000000000000000ULL, { 0x299058CAE275128CULL, 0x385243985149B98AULL } }, /* XSUM_XXH128_testdata[10398] */ + { 3466, 0x000000009E3779B1ULL, { 0x8F9ECB391879F830ULL, 0x4CE4E63186813A49ULL } }, /* XSUM_XXH128_testdata[10399] */ + { 3466, 0x9E3779B185EBCA8DULL, { 0x43D2E53F08DFAA8EULL, 0x3995CDC8877BB43EULL } }, /* XSUM_XXH128_testdata[10400] */ + { 3467, 0x0000000000000000ULL, { 0x8A9B1790BBBBE02EULL, 0x6DD49A1D9F1DB501ULL } }, /* XSUM_XXH128_testdata[10401] */ + { 3467, 0x000000009E3779B1ULL, { 0x8F69317F3193A5B1ULL, 0xBC10A0D97100D9B2ULL } }, /* XSUM_XXH128_testdata[10402] */ + { 3467, 0x9E3779B185EBCA8DULL, { 0x850B34730EC56B2AULL, 0x22520D712B951644ULL } }, /* XSUM_XXH128_testdata[10403] */ + { 3468, 0x0000000000000000ULL, { 0x4A61BD0288C15033ULL, 0x3DCEC5A135E189CDULL } }, /* XSUM_XXH128_testdata[10404] */ + { 3468, 0x000000009E3779B1ULL, { 0x5C70E9185FA7BC0DULL, 0x53EE657AA0397520ULL } }, /* XSUM_XXH128_testdata[10405] */ + { 3468, 0x9E3779B185EBCA8DULL, { 0x0F7DB390A1AE23CFULL, 0xAB5F47523ECA22D7ULL } }, /* XSUM_XXH128_testdata[10406] */ + { 3469, 0x0000000000000000ULL, { 0x3174C25757772AB3ULL, 0x3432821690C309C4ULL } }, /* XSUM_XXH128_testdata[10407] */ + { 3469, 0x000000009E3779B1ULL, { 0x6E166C4C33C97128ULL, 0x0A63A60E2C751490ULL } }, /* XSUM_XXH128_testdata[10408] */ + { 3469, 0x9E3779B185EBCA8DULL, { 0x297D151445B94380ULL, 0x744679C9022EE879ULL } }, /* XSUM_XXH128_testdata[10409] */ + { 3470, 0x0000000000000000ULL, { 0x5B6E6073547F45B6ULL, 0xD09B43BE543F9EB3ULL } }, /* XSUM_XXH128_testdata[10410] */ + { 3470, 0x000000009E3779B1ULL, { 0xF5BEE47961AE9386ULL, 0xCBC6D481A09A174CULL } }, /* XSUM_XXH128_testdata[10411] */ + { 3470, 0x9E3779B185EBCA8DULL, { 0x2FA021070D76E41FULL, 0x2546E0C31BC1126FULL } }, /* XSUM_XXH128_testdata[10412] */ + { 3471, 0x0000000000000000ULL, { 0x9ACF9C0E8A90C860ULL, 0xD1D20263D482205AULL } }, /* XSUM_XXH128_testdata[10413] */ + { 3471, 0x000000009E3779B1ULL, { 0xA253CC5A28BDFAE1ULL, 0x329255F2954BBE63ULL } }, /* XSUM_XXH128_testdata[10414] */ + { 3471, 0x9E3779B185EBCA8DULL, { 0x01FF2388F7E6CC3AULL, 0xEFAC6B114FB82E31ULL } }, /* XSUM_XXH128_testdata[10415] */ + { 3472, 0x0000000000000000ULL, { 0x831D808CCFDCC740ULL, 0x1D6D819DCADF5C04ULL } }, /* XSUM_XXH128_testdata[10416] */ + { 3472, 0x000000009E3779B1ULL, { 0xD7CDEDF90D33DA32ULL, 0x6C8B45FD8D2AD820ULL } }, /* XSUM_XXH128_testdata[10417] */ + { 3472, 0x9E3779B185EBCA8DULL, { 0x83D2BCB7E486903CULL, 0x42B12F16EF924459ULL } }, /* XSUM_XXH128_testdata[10418] */ + { 3473, 0x0000000000000000ULL, { 0xA65DDD73B8B83E3FULL, 0x05B26B58F266F2D2ULL } }, /* XSUM_XXH128_testdata[10419] */ + { 3473, 0x000000009E3779B1ULL, { 0x77D8BF9A8379C917ULL, 0xD9BC35B60908EC7DULL } }, /* XSUM_XXH128_testdata[10420] */ + { 3473, 0x9E3779B185EBCA8DULL, { 0xE6E97D4164F67B46ULL, 0xFEC7BA5A1A2EF1CDULL } }, /* XSUM_XXH128_testdata[10421] */ + { 3474, 0x0000000000000000ULL, { 0xD0289F03FB746F35ULL, 0x5FCBBE1D7334B807ULL } }, /* XSUM_XXH128_testdata[10422] */ + { 3474, 0x000000009E3779B1ULL, { 0x64DD0552BB592867ULL, 0xABB3E376A2D05270ULL } }, /* XSUM_XXH128_testdata[10423] */ + { 3474, 0x9E3779B185EBCA8DULL, { 0x4D27362F8B024FDDULL, 0xC54FF5D8A1DD9C1DULL } }, /* XSUM_XXH128_testdata[10424] */ + { 3475, 0x0000000000000000ULL, { 0xE5CE9E51C78660DAULL, 0x3E29C1A8FFAE96A1ULL } }, /* XSUM_XXH128_testdata[10425] */ + { 3475, 0x000000009E3779B1ULL, { 0x9DDA53D5A020FE34ULL, 0x4BDBEB45F2E224F6ULL } }, /* XSUM_XXH128_testdata[10426] */ + { 3475, 0x9E3779B185EBCA8DULL, { 0x6B7F4F6CDA082302ULL, 0x64761ED18A2DC6D6ULL } }, /* XSUM_XXH128_testdata[10427] */ + { 3476, 0x0000000000000000ULL, { 0xF04176F1CC863F0FULL, 0xC2D165D313F98526ULL } }, /* XSUM_XXH128_testdata[10428] */ + { 3476, 0x000000009E3779B1ULL, { 0xC4A501502AA41918ULL, 0x154A08AFF1D5089DULL } }, /* XSUM_XXH128_testdata[10429] */ + { 3476, 0x9E3779B185EBCA8DULL, { 0xE77E97BAB81B8059ULL, 0xF1D2128B2D03BD17ULL } }, /* XSUM_XXH128_testdata[10430] */ + { 3477, 0x0000000000000000ULL, { 0x9638BDB097A6FA75ULL, 0xCBFB38B5F154B840ULL } }, /* XSUM_XXH128_testdata[10431] */ + { 3477, 0x000000009E3779B1ULL, { 0xF94FD5851BB3B745ULL, 0xF4253864FC61F946ULL } }, /* XSUM_XXH128_testdata[10432] */ + { 3477, 0x9E3779B185EBCA8DULL, { 0x7744A44DA3915EE1ULL, 0xDECFAB81A5716402ULL } }, /* XSUM_XXH128_testdata[10433] */ + { 3478, 0x0000000000000000ULL, { 0xA8D4FBA6FC32EFC1ULL, 0x84543C32B4CC33C4ULL } }, /* XSUM_XXH128_testdata[10434] */ + { 3478, 0x000000009E3779B1ULL, { 0xF61F23053483C4B4ULL, 0xA3EC2DA9EDD65BA7ULL } }, /* XSUM_XXH128_testdata[10435] */ + { 3478, 0x9E3779B185EBCA8DULL, { 0xE6F333D64DD1810EULL, 0x44192D95FBCD20AEULL } }, /* XSUM_XXH128_testdata[10436] */ + { 3479, 0x0000000000000000ULL, { 0x1E94F229081009E8ULL, 0x0B83CC4C3B28795EULL } }, /* XSUM_XXH128_testdata[10437] */ + { 3479, 0x000000009E3779B1ULL, { 0xBDB8139DCF4ADEE0ULL, 0x5D91132265154A96ULL } }, /* XSUM_XXH128_testdata[10438] */ + { 3479, 0x9E3779B185EBCA8DULL, { 0xAB72B923B1CDA151ULL, 0x9CE1773AF7AA5CC3ULL } }, /* XSUM_XXH128_testdata[10439] */ + { 3480, 0x0000000000000000ULL, { 0xE2A83E16DE1CCCE6ULL, 0xAD6EF8CEC74DB429ULL } }, /* XSUM_XXH128_testdata[10440] */ + { 3480, 0x000000009E3779B1ULL, { 0x261D4AB3063AD696ULL, 0xBBDB0A320AA0B808ULL } }, /* XSUM_XXH128_testdata[10441] */ + { 3480, 0x9E3779B185EBCA8DULL, { 0x74335749B7ED9BFCULL, 0x7CB54AEBB8C05242ULL } }, /* XSUM_XXH128_testdata[10442] */ + { 3481, 0x0000000000000000ULL, { 0x1CD87893878D0190ULL, 0x07A8B2DFA76007B7ULL } }, /* XSUM_XXH128_testdata[10443] */ + { 3481, 0x000000009E3779B1ULL, { 0x43AAC48202BD4A26ULL, 0xDD42A46A059A7071ULL } }, /* XSUM_XXH128_testdata[10444] */ + { 3481, 0x9E3779B185EBCA8DULL, { 0x60F080CD5DC9A29BULL, 0x31E871B561505E7BULL } }, /* XSUM_XXH128_testdata[10445] */ + { 3482, 0x0000000000000000ULL, { 0xA24BBA3F25FB6D7CULL, 0x583357477DA07AADULL } }, /* XSUM_XXH128_testdata[10446] */ + { 3482, 0x000000009E3779B1ULL, { 0x18610E185F086629ULL, 0x17AF0242F841CBDAULL } }, /* XSUM_XXH128_testdata[10447] */ + { 3482, 0x9E3779B185EBCA8DULL, { 0x4A8B8192A9BB035FULL, 0xC303710ACF6898C2ULL } }, /* XSUM_XXH128_testdata[10448] */ + { 3483, 0x0000000000000000ULL, { 0x217A994179A6BC5DULL, 0x190FABAA8AC3CBF2ULL } }, /* XSUM_XXH128_testdata[10449] */ + { 3483, 0x000000009E3779B1ULL, { 0x4FD467B1EA29D666ULL, 0x15284F00B06B1AC4ULL } }, /* XSUM_XXH128_testdata[10450] */ + { 3483, 0x9E3779B185EBCA8DULL, { 0x6BE650AFD14961D1ULL, 0x75F90265847C24A8ULL } }, /* XSUM_XXH128_testdata[10451] */ + { 3484, 0x0000000000000000ULL, { 0x68F866F7D427B598ULL, 0xB14DE1C4AA8E469BULL } }, /* XSUM_XXH128_testdata[10452] */ + { 3484, 0x000000009E3779B1ULL, { 0x2591310F6E577553ULL, 0xD741AB02B9B2D448ULL } }, /* XSUM_XXH128_testdata[10453] */ + { 3484, 0x9E3779B185EBCA8DULL, { 0x2BEBE4EB94CA4FCEULL, 0xDF960A9B5E39534BULL } }, /* XSUM_XXH128_testdata[10454] */ + { 3485, 0x0000000000000000ULL, { 0x67FAB96FF6EEF146ULL, 0x5AE84A4182FAA010ULL } }, /* XSUM_XXH128_testdata[10455] */ + { 3485, 0x000000009E3779B1ULL, { 0xD6C2C9E8C16A73BBULL, 0x266FFAA8263D7149ULL } }, /* XSUM_XXH128_testdata[10456] */ + { 3485, 0x9E3779B185EBCA8DULL, { 0xBFAF58FA7B05D347ULL, 0x161138F57D77F9C7ULL } }, /* XSUM_XXH128_testdata[10457] */ + { 3486, 0x0000000000000000ULL, { 0x4616EBD342D399DEULL, 0x89BB4D69D5931D82ULL } }, /* XSUM_XXH128_testdata[10458] */ + { 3486, 0x000000009E3779B1ULL, { 0xE09DAD0E7D301432ULL, 0xAB37AAF7A09E6FC3ULL } }, /* XSUM_XXH128_testdata[10459] */ + { 3486, 0x9E3779B185EBCA8DULL, { 0x96FF3FF4EA1AF519ULL, 0x783AA051CB4569B2ULL } }, /* XSUM_XXH128_testdata[10460] */ + { 3487, 0x0000000000000000ULL, { 0x84B39B619C6CC1A7ULL, 0x2CD2814629EA4970ULL } }, /* XSUM_XXH128_testdata[10461] */ + { 3487, 0x000000009E3779B1ULL, { 0xA30C4677F15422FCULL, 0x551B03087DEB9E6AULL } }, /* XSUM_XXH128_testdata[10462] */ + { 3487, 0x9E3779B185EBCA8DULL, { 0xF2DCD7B641C34D59ULL, 0xCF6707656CCD6A48ULL } }, /* XSUM_XXH128_testdata[10463] */ + { 3488, 0x0000000000000000ULL, { 0xB6EF7257B128E516ULL, 0x83205C3C8BC50278ULL } }, /* XSUM_XXH128_testdata[10464] */ + { 3488, 0x000000009E3779B1ULL, { 0x41DDDBF70F829815ULL, 0xFDACC9CFE18592B4ULL } }, /* XSUM_XXH128_testdata[10465] */ + { 3488, 0x9E3779B185EBCA8DULL, { 0xA1E9A1B2B3A6A69DULL, 0xAD21758B7451C4DAULL } }, /* XSUM_XXH128_testdata[10466] */ + { 3489, 0x0000000000000000ULL, { 0x8950CBBD53A60547ULL, 0x5A30E21AF8A718F3ULL } }, /* XSUM_XXH128_testdata[10467] */ + { 3489, 0x000000009E3779B1ULL, { 0xE65967ED9B2696F4ULL, 0xCE61204A72565DFFULL } }, /* XSUM_XXH128_testdata[10468] */ + { 3489, 0x9E3779B185EBCA8DULL, { 0x8074F486A6B47B13ULL, 0x9384C6FA4778233EULL } }, /* XSUM_XXH128_testdata[10469] */ + { 3490, 0x0000000000000000ULL, { 0x5D5B88EAC0DC140BULL, 0xC7DAEC65D585A55CULL } }, /* XSUM_XXH128_testdata[10470] */ + { 3490, 0x000000009E3779B1ULL, { 0x95F8B90796203A83ULL, 0x4B918D08C853648CULL } }, /* XSUM_XXH128_testdata[10471] */ + { 3490, 0x9E3779B185EBCA8DULL, { 0xE66929B48B91CF24ULL, 0x7BFA6E18BB7170B2ULL } }, /* XSUM_XXH128_testdata[10472] */ + { 3491, 0x0000000000000000ULL, { 0xFC92F8F0AFEBFC33ULL, 0x58D04B3788D15643ULL } }, /* XSUM_XXH128_testdata[10473] */ + { 3491, 0x000000009E3779B1ULL, { 0xE33B01AE12BDDB63ULL, 0x0201614FE0612CA6ULL } }, /* XSUM_XXH128_testdata[10474] */ + { 3491, 0x9E3779B185EBCA8DULL, { 0xF34BCB5C3D7D3CC3ULL, 0x00B4C0779770A0A6ULL } }, /* XSUM_XXH128_testdata[10475] */ + { 3492, 0x0000000000000000ULL, { 0xF0FFCA34C0BF3748ULL, 0x9DF2B22C6FCFA781ULL } }, /* XSUM_XXH128_testdata[10476] */ + { 3492, 0x000000009E3779B1ULL, { 0x378B03BFAFFF0B56ULL, 0x937F1ED35F432421ULL } }, /* XSUM_XXH128_testdata[10477] */ + { 3492, 0x9E3779B185EBCA8DULL, { 0xB6639893A4C48798ULL, 0x1251374BE14850F5ULL } }, /* XSUM_XXH128_testdata[10478] */ + { 3493, 0x0000000000000000ULL, { 0x1C5E70682A017652ULL, 0x4AEF2B8A32F534EEULL } }, /* XSUM_XXH128_testdata[10479] */ + { 3493, 0x000000009E3779B1ULL, { 0x5A5927FAB7DB37ADULL, 0x94AE59E3019BABD4ULL } }, /* XSUM_XXH128_testdata[10480] */ + { 3493, 0x9E3779B185EBCA8DULL, { 0x3A40431A3CBA8FF1ULL, 0x12002EBD0C875DE0ULL } }, /* XSUM_XXH128_testdata[10481] */ + { 3494, 0x0000000000000000ULL, { 0x54D2299A8BE480D9ULL, 0xC3DAB77735EFA8BEULL } }, /* XSUM_XXH128_testdata[10482] */ + { 3494, 0x000000009E3779B1ULL, { 0x20BA991AA707B930ULL, 0xEEF80FC353700612ULL } }, /* XSUM_XXH128_testdata[10483] */ + { 3494, 0x9E3779B185EBCA8DULL, { 0xF7182620D32B3A6AULL, 0x7EF9A32A79929D2BULL } }, /* XSUM_XXH128_testdata[10484] */ + { 3495, 0x0000000000000000ULL, { 0x4A853ABFA346C31BULL, 0x7BAC96BB2C886E10ULL } }, /* XSUM_XXH128_testdata[10485] */ + { 3495, 0x000000009E3779B1ULL, { 0x6FE42F23A080BC5BULL, 0x9F3B5374BDE2135EULL } }, /* XSUM_XXH128_testdata[10486] */ + { 3495, 0x9E3779B185EBCA8DULL, { 0x6F5A7ABEB7062D8CULL, 0x437D8F16E1F7BEC4ULL } }, /* XSUM_XXH128_testdata[10487] */ + { 3496, 0x0000000000000000ULL, { 0x42E32DF7BCAB7B41ULL, 0x15E8EF189C4F0C09ULL } }, /* XSUM_XXH128_testdata[10488] */ + { 3496, 0x000000009E3779B1ULL, { 0x40C835C6D1B2B662ULL, 0x3B32A6E038B1C100ULL } }, /* XSUM_XXH128_testdata[10489] */ + { 3496, 0x9E3779B185EBCA8DULL, { 0x64E2A123B21A2BF8ULL, 0x3B0FEDE061985C4EULL } }, /* XSUM_XXH128_testdata[10490] */ + { 3497, 0x0000000000000000ULL, { 0xE55C51B036F73069ULL, 0x7DCDADB1B2B27031ULL } }, /* XSUM_XXH128_testdata[10491] */ + { 3497, 0x000000009E3779B1ULL, { 0xCFC4A9F0D28F531DULL, 0x6255BC88A2CE4EA9ULL } }, /* XSUM_XXH128_testdata[10492] */ + { 3497, 0x9E3779B185EBCA8DULL, { 0xFA13D0C4D3B50397ULL, 0x5D296588E302F8FCULL } }, /* XSUM_XXH128_testdata[10493] */ + { 3498, 0x0000000000000000ULL, { 0x6A94E0A0CBBC011DULL, 0x244A1EBA1B560C52ULL } }, /* XSUM_XXH128_testdata[10494] */ + { 3498, 0x000000009E3779B1ULL, { 0x87FFDC9E499D2E41ULL, 0x9211D21F992FC315ULL } }, /* XSUM_XXH128_testdata[10495] */ + { 3498, 0x9E3779B185EBCA8DULL, { 0xAB916A459F2BA77EULL, 0x3DB770D41E159069ULL } }, /* XSUM_XXH128_testdata[10496] */ + { 3499, 0x0000000000000000ULL, { 0x8A31780B8FA49271ULL, 0xC98604CA4ABA0505ULL } }, /* XSUM_XXH128_testdata[10497] */ + { 3499, 0x000000009E3779B1ULL, { 0x37751957ACE5F843ULL, 0x82471A28B4DF26D3ULL } }, /* XSUM_XXH128_testdata[10498] */ + { 3499, 0x9E3779B185EBCA8DULL, { 0x3248502F7430CCB3ULL, 0x58A55BEC94B816AEULL } }, /* XSUM_XXH128_testdata[10499] */ + { 3500, 0x0000000000000000ULL, { 0x3F5C20E9C5BC30FCULL, 0xB7A3EC131C816B88ULL } }, /* XSUM_XXH128_testdata[10500] */ + { 3500, 0x000000009E3779B1ULL, { 0x5FF0D20D96BDD13BULL, 0x2076B2E5C3D9EB10ULL } }, /* XSUM_XXH128_testdata[10501] */ + { 3500, 0x9E3779B185EBCA8DULL, { 0x52A0B718A327F78EULL, 0x20EDD1304B74BD7FULL } }, /* XSUM_XXH128_testdata[10502] */ + { 3501, 0x0000000000000000ULL, { 0x0C557138EF665113ULL, 0x1F8470FAC9B07C52ULL } }, /* XSUM_XXH128_testdata[10503] */ + { 3501, 0x000000009E3779B1ULL, { 0xA8C5CD42C4463AF3ULL, 0xF1E44055A2D8D20BULL } }, /* XSUM_XXH128_testdata[10504] */ + { 3501, 0x9E3779B185EBCA8DULL, { 0x32EF2B9798DAD279ULL, 0xEBD839C3909AA99BULL } }, /* XSUM_XXH128_testdata[10505] */ + { 3502, 0x0000000000000000ULL, { 0x11F297CF29906C4DULL, 0xBACFFE67940E6D78ULL } }, /* XSUM_XXH128_testdata[10506] */ + { 3502, 0x000000009E3779B1ULL, { 0xCDD2FC1218B5B419ULL, 0x40A270916CE07CA5ULL } }, /* XSUM_XXH128_testdata[10507] */ + { 3502, 0x9E3779B185EBCA8DULL, { 0x62D4F0C4295680C7ULL, 0x0681C6D63F7D6D2BULL } }, /* XSUM_XXH128_testdata[10508] */ + { 3503, 0x0000000000000000ULL, { 0xEDDDA0CFF6FF3EBDULL, 0x53E532F2B657AAB6ULL } }, /* XSUM_XXH128_testdata[10509] */ + { 3503, 0x000000009E3779B1ULL, { 0xD4176175188827D6ULL, 0xDBB6E042C0B6B9BCULL } }, /* XSUM_XXH128_testdata[10510] */ + { 3503, 0x9E3779B185EBCA8DULL, { 0xF9B9B3D472878220ULL, 0x0E5225D63A5DFD64ULL } }, /* XSUM_XXH128_testdata[10511] */ + { 3504, 0x0000000000000000ULL, { 0x9C6FE29AABCD2FC1ULL, 0xC37B8330C5FC7F7DULL } }, /* XSUM_XXH128_testdata[10512] */ + { 3504, 0x000000009E3779B1ULL, { 0xAC1F8AB84A316A0FULL, 0xBE4FA20ED667E67DULL } }, /* XSUM_XXH128_testdata[10513] */ + { 3504, 0x9E3779B185EBCA8DULL, { 0xA0CFFC0B6B3AC754ULL, 0x7D26FDCB83E083D5ULL } }, /* XSUM_XXH128_testdata[10514] */ + { 3505, 0x0000000000000000ULL, { 0x2990C386E98E500DULL, 0xA36D73984010FB97ULL } }, /* XSUM_XXH128_testdata[10515] */ + { 3505, 0x000000009E3779B1ULL, { 0x3E5EF204FCB19868ULL, 0x7F2E698915B39839ULL } }, /* XSUM_XXH128_testdata[10516] */ + { 3505, 0x9E3779B185EBCA8DULL, { 0xB5D0853395C2AE0FULL, 0x09006F745413573AULL } }, /* XSUM_XXH128_testdata[10517] */ + { 3506, 0x0000000000000000ULL, { 0xFC2DD49ACEC84325ULL, 0xF3EA9A551CD8CA60ULL } }, /* XSUM_XXH128_testdata[10518] */ + { 3506, 0x000000009E3779B1ULL, { 0x47723D05B2A00630ULL, 0x95760B9EA2AC5A61ULL } }, /* XSUM_XXH128_testdata[10519] */ + { 3506, 0x9E3779B185EBCA8DULL, { 0x2555D00473A5EC76ULL, 0x91E63B02E7CFE2D3ULL } }, /* XSUM_XXH128_testdata[10520] */ + { 3507, 0x0000000000000000ULL, { 0x4219204CC3F19E86ULL, 0xED95FF34DD0C34BBULL } }, /* XSUM_XXH128_testdata[10521] */ + { 3507, 0x000000009E3779B1ULL, { 0x816304B95CDD67C7ULL, 0x76C45ACE3DC312B9ULL } }, /* XSUM_XXH128_testdata[10522] */ + { 3507, 0x9E3779B185EBCA8DULL, { 0x17301B4AFF1A12B3ULL, 0x9539AC3197A95651ULL } }, /* XSUM_XXH128_testdata[10523] */ + { 3508, 0x0000000000000000ULL, { 0x531F5129E885FC1FULL, 0x471A28AFFF011EF3ULL } }, /* XSUM_XXH128_testdata[10524] */ + { 3508, 0x000000009E3779B1ULL, { 0x3135BEC8204C3B55ULL, 0x99211F67350237BEULL } }, /* XSUM_XXH128_testdata[10525] */ + { 3508, 0x9E3779B185EBCA8DULL, { 0x2D25FD09A8BCF3FCULL, 0x3BA26AD392B08F80ULL } }, /* XSUM_XXH128_testdata[10526] */ + { 3509, 0x0000000000000000ULL, { 0xE30ED992B37CA5CFULL, 0x7FDB213706A68381ULL } }, /* XSUM_XXH128_testdata[10527] */ + { 3509, 0x000000009E3779B1ULL, { 0x4CF64AE73E0150BCULL, 0x8D9515078276BA0BULL } }, /* XSUM_XXH128_testdata[10528] */ + { 3509, 0x9E3779B185EBCA8DULL, { 0xACBF1DAEB4DEB0D1ULL, 0x34D3FBE677B033D3ULL } }, /* XSUM_XXH128_testdata[10529] */ + { 3510, 0x0000000000000000ULL, { 0xF5C771258932B3F7ULL, 0x8F769A419579BD46ULL } }, /* XSUM_XXH128_testdata[10530] */ + { 3510, 0x000000009E3779B1ULL, { 0x542A78F649F1FF92ULL, 0x15CD0301A545759FULL } }, /* XSUM_XXH128_testdata[10531] */ + { 3510, 0x9E3779B185EBCA8DULL, { 0xC6CAC08CDFBF1E5EULL, 0x701D32EDC6863A08ULL } }, /* XSUM_XXH128_testdata[10532] */ + { 3511, 0x0000000000000000ULL, { 0xCA68DB7B3A40AB67ULL, 0x4265AE1E19D47E0FULL } }, /* XSUM_XXH128_testdata[10533] */ + { 3511, 0x000000009E3779B1ULL, { 0x322BEF2FD6D7F761ULL, 0x0AAC54716DE33BB1ULL } }, /* XSUM_XXH128_testdata[10534] */ + { 3511, 0x9E3779B185EBCA8DULL, { 0xE978EA397A49AD49ULL, 0x78CCF7BD5E72F21CULL } }, /* XSUM_XXH128_testdata[10535] */ + { 3512, 0x0000000000000000ULL, { 0x4BC21D7DBAB3335BULL, 0x3363F49E4E9E7EAEULL } }, /* XSUM_XXH128_testdata[10536] */ + { 3512, 0x000000009E3779B1ULL, { 0x28EC82EFAABD8DDAULL, 0x2381FF43915233ECULL } }, /* XSUM_XXH128_testdata[10537] */ + { 3512, 0x9E3779B185EBCA8DULL, { 0x499821766185E65AULL, 0xE7C6C2AA8FC64579ULL } }, /* XSUM_XXH128_testdata[10538] */ + { 3513, 0x0000000000000000ULL, { 0x3E83E1110CA570D7ULL, 0x1B3649F2714ED7B2ULL } }, /* XSUM_XXH128_testdata[10539] */ + { 3513, 0x000000009E3779B1ULL, { 0x272C2E0726555F07ULL, 0xB4A21E140CA3F163ULL } }, /* XSUM_XXH128_testdata[10540] */ + { 3513, 0x9E3779B185EBCA8DULL, { 0x322C23FA880C25E9ULL, 0x5ADA2860B6D93C4AULL } }, /* XSUM_XXH128_testdata[10541] */ + { 3514, 0x0000000000000000ULL, { 0xD0EFE226CF83E639ULL, 0x5EB9A15D111FF8F6ULL } }, /* XSUM_XXH128_testdata[10542] */ + { 3514, 0x000000009E3779B1ULL, { 0x4F91D05989621B57ULL, 0x2BEAAAAAE42876CDULL } }, /* XSUM_XXH128_testdata[10543] */ + { 3514, 0x9E3779B185EBCA8DULL, { 0xE6E965BD126DF290ULL, 0x1BC21E057307D643ULL } }, /* XSUM_XXH128_testdata[10544] */ + { 3515, 0x0000000000000000ULL, { 0xAD4EE35B65B3E97DULL, 0x1A5BABA2B90A618EULL } }, /* XSUM_XXH128_testdata[10545] */ + { 3515, 0x000000009E3779B1ULL, { 0x1085109BE043EFECULL, 0x4AACA0D87A70CEECULL } }, /* XSUM_XXH128_testdata[10546] */ + { 3515, 0x9E3779B185EBCA8DULL, { 0x59C43CEE47577A6FULL, 0x21F4665E2D0B2C05ULL } }, /* XSUM_XXH128_testdata[10547] */ + { 3516, 0x0000000000000000ULL, { 0x1CD8D79750245445ULL, 0x98C8F7D0CE310666ULL } }, /* XSUM_XXH128_testdata[10548] */ + { 3516, 0x000000009E3779B1ULL, { 0xDFA66D5552C64590ULL, 0xEC6205FCFF99A155ULL } }, /* XSUM_XXH128_testdata[10549] */ + { 3516, 0x9E3779B185EBCA8DULL, { 0x106182CF4F44ECACULL, 0xE27635B10B8F2F60ULL } }, /* XSUM_XXH128_testdata[10550] */ + { 3517, 0x0000000000000000ULL, { 0xF81CDF250458461FULL, 0x3FCD06589660D5FCULL } }, /* XSUM_XXH128_testdata[10551] */ + { 3517, 0x000000009E3779B1ULL, { 0x4D2ACACBD9017330ULL, 0x1B3C3713FFBBF0EBULL } }, /* XSUM_XXH128_testdata[10552] */ + { 3517, 0x9E3779B185EBCA8DULL, { 0xCB300D8AFA2B9074ULL, 0x98EC0820CB1E29CCULL } }, /* XSUM_XXH128_testdata[10553] */ + { 3518, 0x0000000000000000ULL, { 0x00B44D4311B0BDDDULL, 0x77F99FE357132B14ULL } }, /* XSUM_XXH128_testdata[10554] */ + { 3518, 0x000000009E3779B1ULL, { 0xE5D995AD7C1C414BULL, 0x455DC5A05FC54B85ULL } }, /* XSUM_XXH128_testdata[10555] */ + { 3518, 0x9E3779B185EBCA8DULL, { 0xED0ECE687F943E96ULL, 0xEC4FBBDC05BFEB65ULL } }, /* XSUM_XXH128_testdata[10556] */ + { 3519, 0x0000000000000000ULL, { 0xAD6884D76586C425ULL, 0x3D67CBF4536A8251ULL } }, /* XSUM_XXH128_testdata[10557] */ + { 3519, 0x000000009E3779B1ULL, { 0x1BB0A07921D369CBULL, 0xD39E3BEE3C731D3EULL } }, /* XSUM_XXH128_testdata[10558] */ + { 3519, 0x9E3779B185EBCA8DULL, { 0x3CCBE7697C09D027ULL, 0x088C298B837FB96CULL } }, /* XSUM_XXH128_testdata[10559] */ + { 3520, 0x0000000000000000ULL, { 0x4AE72B2CEC0154A4ULL, 0x93474E5D2F10413EULL } }, /* XSUM_XXH128_testdata[10560] */ + { 3520, 0x000000009E3779B1ULL, { 0xD92EFD6B9921C363ULL, 0x713896FD65D64692ULL } }, /* XSUM_XXH128_testdata[10561] */ + { 3520, 0x9E3779B185EBCA8DULL, { 0x669A38E31F403AB3ULL, 0xD6D2B73AEF95EF31ULL } }, /* XSUM_XXH128_testdata[10562] */ + { 3521, 0x0000000000000000ULL, { 0x1C2467C36A4A05FEULL, 0xFCAAE425D3EE764AULL } }, /* XSUM_XXH128_testdata[10563] */ + { 3521, 0x000000009E3779B1ULL, { 0xA9A2A11E704BFDCDULL, 0x705AC76F5DFD2DC5ULL } }, /* XSUM_XXH128_testdata[10564] */ + { 3521, 0x9E3779B185EBCA8DULL, { 0x47C14D66AE006FE2ULL, 0x4417D6F287BB1257ULL } }, /* XSUM_XXH128_testdata[10565] */ + { 3522, 0x0000000000000000ULL, { 0x7D6785D29ABBC1E0ULL, 0xBD18823575EE9DB6ULL } }, /* XSUM_XXH128_testdata[10566] */ + { 3522, 0x000000009E3779B1ULL, { 0x78DF265187F1B5A1ULL, 0x5760F1FE19AF72ABULL } }, /* XSUM_XXH128_testdata[10567] */ + { 3522, 0x9E3779B185EBCA8DULL, { 0xAA6ECF8894E63171ULL, 0x86157B59454A1817ULL } }, /* XSUM_XXH128_testdata[10568] */ + { 3523, 0x0000000000000000ULL, { 0x02DE7A761E2005CAULL, 0x2773059046830A36ULL } }, /* XSUM_XXH128_testdata[10569] */ + { 3523, 0x000000009E3779B1ULL, { 0xD2D93A348390CB5FULL, 0xE90E32A5ECE6A766ULL } }, /* XSUM_XXH128_testdata[10570] */ + { 3523, 0x9E3779B185EBCA8DULL, { 0xB9DB1F14D2FEFB7CULL, 0x02AE7D3A36F301E5ULL } }, /* XSUM_XXH128_testdata[10571] */ + { 3524, 0x0000000000000000ULL, { 0x4F7155D176B1B538ULL, 0x925DA98337217016ULL } }, /* XSUM_XXH128_testdata[10572] */ + { 3524, 0x000000009E3779B1ULL, { 0x70B1F602461CC218ULL, 0x2308BA2141FE40E7ULL } }, /* XSUM_XXH128_testdata[10573] */ + { 3524, 0x9E3779B185EBCA8DULL, { 0xB99634196AF64BACULL, 0xF047A8522FE9C118ULL } }, /* XSUM_XXH128_testdata[10574] */ + { 3525, 0x0000000000000000ULL, { 0x31A4028F7190238CULL, 0xEDB17D675CDB1C54ULL } }, /* XSUM_XXH128_testdata[10575] */ + { 3525, 0x000000009E3779B1ULL, { 0x151EC930AE9A43C3ULL, 0x81F62E0755632D3DULL } }, /* XSUM_XXH128_testdata[10576] */ + { 3525, 0x9E3779B185EBCA8DULL, { 0x78D2ADEF9ED92542ULL, 0x454CB8B0702E7B82ULL } }, /* XSUM_XXH128_testdata[10577] */ + { 3526, 0x0000000000000000ULL, { 0xF57F055E22094776ULL, 0x0F8814251CCD4F25ULL } }, /* XSUM_XXH128_testdata[10578] */ + { 3526, 0x000000009E3779B1ULL, { 0xEE636BF41BF852E9ULL, 0xFE6C438E0F535F67ULL } }, /* XSUM_XXH128_testdata[10579] */ + { 3526, 0x9E3779B185EBCA8DULL, { 0x96E7802E11B04294ULL, 0xE62852EE6395D0CFULL } }, /* XSUM_XXH128_testdata[10580] */ + { 3527, 0x0000000000000000ULL, { 0x273C0105C788A7C5ULL, 0xD9675B5F91DF0C35ULL } }, /* XSUM_XXH128_testdata[10581] */ + { 3527, 0x000000009E3779B1ULL, { 0x7CA9A812B701DEADULL, 0xE816A1F4230A824EULL } }, /* XSUM_XXH128_testdata[10582] */ + { 3527, 0x9E3779B185EBCA8DULL, { 0x063F26B879C7FB5DULL, 0xFC4AE08B539F7584ULL } }, /* XSUM_XXH128_testdata[10583] */ + { 3528, 0x0000000000000000ULL, { 0x788AFF64C26E40DDULL, 0xA64AD2965DF7C1DEULL } }, /* XSUM_XXH128_testdata[10584] */ + { 3528, 0x000000009E3779B1ULL, { 0x268247DB86DD5266ULL, 0xEDA15D7A1DA7F5D0ULL } }, /* XSUM_XXH128_testdata[10585] */ + { 3528, 0x9E3779B185EBCA8DULL, { 0xC67BD3AEC2A767BAULL, 0xF9E74E5DA5D2C347ULL } }, /* XSUM_XXH128_testdata[10586] */ + { 3529, 0x0000000000000000ULL, { 0x9A4C28EC5B274073ULL, 0xE2EF1445946BB598ULL } }, /* XSUM_XXH128_testdata[10587] */ + { 3529, 0x000000009E3779B1ULL, { 0x92F6FF7E316E8A8FULL, 0x1FA8AE433ED3942DULL } }, /* XSUM_XXH128_testdata[10588] */ + { 3529, 0x9E3779B185EBCA8DULL, { 0xD10F17D18AF09FC1ULL, 0x5F3011D1F4749033ULL } }, /* XSUM_XXH128_testdata[10589] */ + { 3530, 0x0000000000000000ULL, { 0x41EAF5870F1FAF02ULL, 0x29C7D8FBA216159AULL } }, /* XSUM_XXH128_testdata[10590] */ + { 3530, 0x000000009E3779B1ULL, { 0xAA819D98BEDC4749ULL, 0xD5AC8ED4C49F2E09ULL } }, /* XSUM_XXH128_testdata[10591] */ + { 3530, 0x9E3779B185EBCA8DULL, { 0x492DBEB2FA597712ULL, 0xBA73CAF649CD774DULL } }, /* XSUM_XXH128_testdata[10592] */ + { 3531, 0x0000000000000000ULL, { 0x060202E0CECDCD82ULL, 0x19A08BE2AC6D63C2ULL } }, /* XSUM_XXH128_testdata[10593] */ + { 3531, 0x000000009E3779B1ULL, { 0x7B2E27454B5924B8ULL, 0x3E688BAE287BC74DULL } }, /* XSUM_XXH128_testdata[10594] */ + { 3531, 0x9E3779B185EBCA8DULL, { 0x85530139005E7679ULL, 0x46D0E1C5753F36DAULL } }, /* XSUM_XXH128_testdata[10595] */ + { 3532, 0x0000000000000000ULL, { 0x670E724A3F1B6F46ULL, 0x565BBBDF0D1C1651ULL } }, /* XSUM_XXH128_testdata[10596] */ + { 3532, 0x000000009E3779B1ULL, { 0x9976B58CA927AB64ULL, 0x4D8D618418F2E56DULL } }, /* XSUM_XXH128_testdata[10597] */ + { 3532, 0x9E3779B185EBCA8DULL, { 0x723E3D34E0272BF6ULL, 0xAF1F89C2FDD9331CULL } }, /* XSUM_XXH128_testdata[10598] */ + { 3533, 0x0000000000000000ULL, { 0xC89223A0DD16699EULL, 0x6DC5C8D285B8E3A2ULL } }, /* XSUM_XXH128_testdata[10599] */ + { 3533, 0x000000009E3779B1ULL, { 0x4A611F741DFD6384ULL, 0x99ADC5F0CA25FF01ULL } }, /* XSUM_XXH128_testdata[10600] */ + { 3533, 0x9E3779B185EBCA8DULL, { 0xFF5F9BE615303278ULL, 0x90BB84A324CA531DULL } }, /* XSUM_XXH128_testdata[10601] */ + { 3534, 0x0000000000000000ULL, { 0x9037DF505832F655ULL, 0x9598EE4289C9D6E9ULL } }, /* XSUM_XXH128_testdata[10602] */ + { 3534, 0x000000009E3779B1ULL, { 0xFDAAC1AD647D6DCCULL, 0x6A6FB07F85795DADULL } }, /* XSUM_XXH128_testdata[10603] */ + { 3534, 0x9E3779B185EBCA8DULL, { 0xDFFA2D78C3B80F87ULL, 0x09972FF3C7682359ULL } }, /* XSUM_XXH128_testdata[10604] */ + { 3535, 0x0000000000000000ULL, { 0x9C8539B53F903384ULL, 0x6A867F80D2F13D14ULL } }, /* XSUM_XXH128_testdata[10605] */ + { 3535, 0x000000009E3779B1ULL, { 0xAB3D743E9BB3DE72ULL, 0x38AE899CB9D13385ULL } }, /* XSUM_XXH128_testdata[10606] */ + { 3535, 0x9E3779B185EBCA8DULL, { 0x56CC63E59E9A8784ULL, 0xCE7C57DEFB6DFD9BULL } }, /* XSUM_XXH128_testdata[10607] */ + { 3536, 0x0000000000000000ULL, { 0xDEBA0228DD563402ULL, 0xEC651E749A1D47DBULL } }, /* XSUM_XXH128_testdata[10608] */ + { 3536, 0x000000009E3779B1ULL, { 0x2E8F580086DCE8C7ULL, 0x51BC1F94735627E2ULL } }, /* XSUM_XXH128_testdata[10609] */ + { 3536, 0x9E3779B185EBCA8DULL, { 0x24449B6E45030239ULL, 0x7B3359E26B40F6FAULL } }, /* XSUM_XXH128_testdata[10610] */ + { 3537, 0x0000000000000000ULL, { 0xB01738BE6C965ED6ULL, 0xBB82FFFAD5B696D2ULL } }, /* XSUM_XXH128_testdata[10611] */ + { 3537, 0x000000009E3779B1ULL, { 0x77ADFBF6CFC41D01ULL, 0xA63AD2A184F2C875ULL } }, /* XSUM_XXH128_testdata[10612] */ + { 3537, 0x9E3779B185EBCA8DULL, { 0x908A583B0811DA9BULL, 0xE3A726FB81CACD97ULL } }, /* XSUM_XXH128_testdata[10613] */ + { 3538, 0x0000000000000000ULL, { 0x4A4750E1AC27E245ULL, 0x738EBCEB1C84650CULL } }, /* XSUM_XXH128_testdata[10614] */ + { 3538, 0x000000009E3779B1ULL, { 0x49823AFEFBFE061DULL, 0x70398200AB32580BULL } }, /* XSUM_XXH128_testdata[10615] */ + { 3538, 0x9E3779B185EBCA8DULL, { 0x0965BFFEBDE28B60ULL, 0x5F8471A56A2955CBULL } }, /* XSUM_XXH128_testdata[10616] */ + { 3539, 0x0000000000000000ULL, { 0x8FF61D5636A8AAA2ULL, 0xE413DAB03CE496C3ULL } }, /* XSUM_XXH128_testdata[10617] */ + { 3539, 0x000000009E3779B1ULL, { 0xE0E7EE64C0EBF909ULL, 0x76BBD39CAC5ED8E2ULL } }, /* XSUM_XXH128_testdata[10618] */ + { 3539, 0x9E3779B185EBCA8DULL, { 0x2670E92B26669470ULL, 0x3D50995C3514B5FCULL } }, /* XSUM_XXH128_testdata[10619] */ + { 3540, 0x0000000000000000ULL, { 0xA4542598B8184DAAULL, 0xC498C650DD5F9ED9ULL } }, /* XSUM_XXH128_testdata[10620] */ + { 3540, 0x000000009E3779B1ULL, { 0x1E25AF660A2F8DA6ULL, 0x0374CB7229A16225ULL } }, /* XSUM_XXH128_testdata[10621] */ + { 3540, 0x9E3779B185EBCA8DULL, { 0x75B41EEE8678CEA1ULL, 0x1C834BC8737BD5F3ULL } }, /* XSUM_XXH128_testdata[10622] */ + { 3541, 0x0000000000000000ULL, { 0x7CCF736EE2195F4DULL, 0xD08F31D76474E63CULL } }, /* XSUM_XXH128_testdata[10623] */ + { 3541, 0x000000009E3779B1ULL, { 0x6EBE97C4E3792C9AULL, 0xD7A74F248D5E4D4AULL } }, /* XSUM_XXH128_testdata[10624] */ + { 3541, 0x9E3779B185EBCA8DULL, { 0x2D350B3D5CD557A7ULL, 0xB5763D3D1AF08FEAULL } }, /* XSUM_XXH128_testdata[10625] */ + { 3542, 0x0000000000000000ULL, { 0x0E1E5960452AA0D4ULL, 0x65797834CDB2ED27ULL } }, /* XSUM_XXH128_testdata[10626] */ + { 3542, 0x000000009E3779B1ULL, { 0x6A3D67C2864AB7EFULL, 0xC0D027A4B7D6A662ULL } }, /* XSUM_XXH128_testdata[10627] */ + { 3542, 0x9E3779B185EBCA8DULL, { 0x6D0F8B676827E02CULL, 0x301DC86D18A09E62ULL } }, /* XSUM_XXH128_testdata[10628] */ + { 3543, 0x0000000000000000ULL, { 0xD3EBE6832A073A89ULL, 0xE1AC8AE3B21B1A26ULL } }, /* XSUM_XXH128_testdata[10629] */ + { 3543, 0x000000009E3779B1ULL, { 0x02A31006121400E0ULL, 0xFEECA8EF1DF05938ULL } }, /* XSUM_XXH128_testdata[10630] */ + { 3543, 0x9E3779B185EBCA8DULL, { 0x2222E929AFE2DE90ULL, 0x37111E5885E38E5CULL } }, /* XSUM_XXH128_testdata[10631] */ + { 3544, 0x0000000000000000ULL, { 0xA23BD60E84E52E11ULL, 0xA002FF7EB3272E1BULL } }, /* XSUM_XXH128_testdata[10632] */ + { 3544, 0x000000009E3779B1ULL, { 0x4E192E424F770523ULL, 0xD3560128BA80EBE8ULL } }, /* XSUM_XXH128_testdata[10633] */ + { 3544, 0x9E3779B185EBCA8DULL, { 0x374DD01907BE5B27ULL, 0x4B5E8E87A06EC5B9ULL } }, /* XSUM_XXH128_testdata[10634] */ + { 3545, 0x0000000000000000ULL, { 0xE77FFA0FBB030992ULL, 0x181FFBC109A01A55ULL } }, /* XSUM_XXH128_testdata[10635] */ + { 3545, 0x000000009E3779B1ULL, { 0x0000E9625A56B22EULL, 0x8B7646DFCF413DEAULL } }, /* XSUM_XXH128_testdata[10636] */ + { 3545, 0x9E3779B185EBCA8DULL, { 0xB3928F9C6C2344A7ULL, 0xF67A4319A2FF44A4ULL } }, /* XSUM_XXH128_testdata[10637] */ + { 3546, 0x0000000000000000ULL, { 0x479CF3EF2877688DULL, 0x0E65ED97956788A0ULL } }, /* XSUM_XXH128_testdata[10638] */ + { 3546, 0x000000009E3779B1ULL, { 0x21A8ABE16ABE3F5EULL, 0xCCB07832C159AF83ULL } }, /* XSUM_XXH128_testdata[10639] */ + { 3546, 0x9E3779B185EBCA8DULL, { 0xA74CA629D4DB9ED2ULL, 0x2C10A9446F0334BAULL } }, /* XSUM_XXH128_testdata[10640] */ + { 3547, 0x0000000000000000ULL, { 0x46A5D4538EEA1B1EULL, 0x193BCCCDD604226DULL } }, /* XSUM_XXH128_testdata[10641] */ + { 3547, 0x000000009E3779B1ULL, { 0x8AE4123CDA055E63ULL, 0xC51D1A2A99FFF957ULL } }, /* XSUM_XXH128_testdata[10642] */ + { 3547, 0x9E3779B185EBCA8DULL, { 0x4A54B76E585FB369ULL, 0x482B15A4786EDCF0ULL } }, /* XSUM_XXH128_testdata[10643] */ + { 3548, 0x0000000000000000ULL, { 0xDFC7639B53F79E1DULL, 0x6A2DE159674093BAULL } }, /* XSUM_XXH128_testdata[10644] */ + { 3548, 0x000000009E3779B1ULL, { 0x70E16030B3A7848DULL, 0x6019728761A53883ULL } }, /* XSUM_XXH128_testdata[10645] */ + { 3548, 0x9E3779B185EBCA8DULL, { 0xD7331396B0968C55ULL, 0x0C17A8481E2D12F9ULL } }, /* XSUM_XXH128_testdata[10646] */ + { 3549, 0x0000000000000000ULL, { 0x3A21E252457E09C2ULL, 0x2B41ACDF8B0C0539ULL } }, /* XSUM_XXH128_testdata[10647] */ + { 3549, 0x000000009E3779B1ULL, { 0xFD07CA9448EC2CF6ULL, 0x31CE5CD19464F4D3ULL } }, /* XSUM_XXH128_testdata[10648] */ + { 3549, 0x9E3779B185EBCA8DULL, { 0x8F8A090028F047D4ULL, 0xBCCEC4A770F9BDBEULL } }, /* XSUM_XXH128_testdata[10649] */ + { 3550, 0x0000000000000000ULL, { 0x5E081111B8168FABULL, 0xC4D5BD7BE609EB8AULL } }, /* XSUM_XXH128_testdata[10650] */ + { 3550, 0x000000009E3779B1ULL, { 0xDB9A4EE4C39E4DCBULL, 0x28B76DBBDCEB94B2ULL } }, /* XSUM_XXH128_testdata[10651] */ + { 3550, 0x9E3779B185EBCA8DULL, { 0xD9CF0859AC3F0022ULL, 0xC97F2821B2D1A47AULL } }, /* XSUM_XXH128_testdata[10652] */ + { 3551, 0x0000000000000000ULL, { 0x04A3ABF712732F54ULL, 0x37E142620B9A86B8ULL } }, /* XSUM_XXH128_testdata[10653] */ + { 3551, 0x000000009E3779B1ULL, { 0xF1A64E2BD2C5F4D2ULL, 0x1C644381B9BE0ED0ULL } }, /* XSUM_XXH128_testdata[10654] */ + { 3551, 0x9E3779B185EBCA8DULL, { 0x6962B7DBDB3007BEULL, 0x4BD13E8393949CBBULL } }, /* XSUM_XXH128_testdata[10655] */ + { 3552, 0x0000000000000000ULL, { 0xD4F34FB029E5E662ULL, 0x94161735EC225FFAULL } }, /* XSUM_XXH128_testdata[10656] */ + { 3552, 0x000000009E3779B1ULL, { 0x062D7AA7CC69440DULL, 0x01F61BD26C4C891CULL } }, /* XSUM_XXH128_testdata[10657] */ + { 3552, 0x9E3779B185EBCA8DULL, { 0x2AE713A28FBBF1D8ULL, 0x3C0E5E08AE5C6FE3ULL } }, /* XSUM_XXH128_testdata[10658] */ + { 3553, 0x0000000000000000ULL, { 0x5E31DE75F1C44D4EULL, 0xF0415669B103CEE6ULL } }, /* XSUM_XXH128_testdata[10659] */ + { 3553, 0x000000009E3779B1ULL, { 0xF0A91D6499C8B007ULL, 0x69F21CF40364A6EEULL } }, /* XSUM_XXH128_testdata[10660] */ + { 3553, 0x9E3779B185EBCA8DULL, { 0xB8E299521A9EADB6ULL, 0x2DE8C8D0C69E487BULL } }, /* XSUM_XXH128_testdata[10661] */ + { 3554, 0x0000000000000000ULL, { 0xDDC496EB0576A021ULL, 0xF94A28D116898E9EULL } }, /* XSUM_XXH128_testdata[10662] */ + { 3554, 0x000000009E3779B1ULL, { 0x30231FBA405B625EULL, 0x4BFB7DB975F1046DULL } }, /* XSUM_XXH128_testdata[10663] */ + { 3554, 0x9E3779B185EBCA8DULL, { 0x2B6A8AE7E8273F4AULL, 0xC5EAB007FC8098B9ULL } }, /* XSUM_XXH128_testdata[10664] */ + { 3555, 0x0000000000000000ULL, { 0x294F75CD1E32C40FULL, 0xA4D69E56948C4424ULL } }, /* XSUM_XXH128_testdata[10665] */ + { 3555, 0x000000009E3779B1ULL, { 0x92B0EEA509CB453EULL, 0xE867EA12ED4A8F45ULL } }, /* XSUM_XXH128_testdata[10666] */ + { 3555, 0x9E3779B185EBCA8DULL, { 0x0873DC3E634E1A9DULL, 0x19DDD66B1D0DC197ULL } }, /* XSUM_XXH128_testdata[10667] */ + { 3556, 0x0000000000000000ULL, { 0xA4237F94D2FD6D01ULL, 0xBF14B0DC007A545BULL } }, /* XSUM_XXH128_testdata[10668] */ + { 3556, 0x000000009E3779B1ULL, { 0xF4837D90AC3F8386ULL, 0x5DC1E04191541120ULL } }, /* XSUM_XXH128_testdata[10669] */ + { 3556, 0x9E3779B185EBCA8DULL, { 0x2489A06A4DCF3103ULL, 0x8D6A17A7BD7C380BULL } }, /* XSUM_XXH128_testdata[10670] */ + { 3557, 0x0000000000000000ULL, { 0x722C2FCF3BE61AE1ULL, 0x9AE049D22B973660ULL } }, /* XSUM_XXH128_testdata[10671] */ + { 3557, 0x000000009E3779B1ULL, { 0x29C90ACB9B354794ULL, 0x6F24CDC5EBACAEF4ULL } }, /* XSUM_XXH128_testdata[10672] */ + { 3557, 0x9E3779B185EBCA8DULL, { 0x3C17B01F08ACA576ULL, 0x9576B78932C75033ULL } }, /* XSUM_XXH128_testdata[10673] */ + { 3558, 0x0000000000000000ULL, { 0x274F1DF2D2FD2D09ULL, 0x6CE3AD5CB1AD04E0ULL } }, /* XSUM_XXH128_testdata[10674] */ + { 3558, 0x000000009E3779B1ULL, { 0x76C79DAF277161E4ULL, 0xE441905521FAE0C5ULL } }, /* XSUM_XXH128_testdata[10675] */ + { 3558, 0x9E3779B185EBCA8DULL, { 0x0BF25086DFE92169ULL, 0xCAE82AB6E898D86DULL } }, /* XSUM_XXH128_testdata[10676] */ + { 3559, 0x0000000000000000ULL, { 0x4E4E18771F4919FAULL, 0x47F023F51F40766EULL } }, /* XSUM_XXH128_testdata[10677] */ + { 3559, 0x000000009E3779B1ULL, { 0x94A447A4DD986CE4ULL, 0xA7521E1790E629A2ULL } }, /* XSUM_XXH128_testdata[10678] */ + { 3559, 0x9E3779B185EBCA8DULL, { 0xA07A5686E36F9F0BULL, 0x054E97ECFB802847ULL } }, /* XSUM_XXH128_testdata[10679] */ + { 3560, 0x0000000000000000ULL, { 0xA9A7CEA7CC0D573DULL, 0x71AF85E280EC1437ULL } }, /* XSUM_XXH128_testdata[10680] */ + { 3560, 0x000000009E3779B1ULL, { 0xA2BC5B044D7DEBC1ULL, 0x5CA7252B465860EEULL } }, /* XSUM_XXH128_testdata[10681] */ + { 3560, 0x9E3779B185EBCA8DULL, { 0xAE3432EED2CEBD1FULL, 0xEDB1DC1530FD6EBAULL } }, /* XSUM_XXH128_testdata[10682] */ + { 3561, 0x0000000000000000ULL, { 0x1487A53D57713BF5ULL, 0x90FA3D54701FDCA6ULL } }, /* XSUM_XXH128_testdata[10683] */ + { 3561, 0x000000009E3779B1ULL, { 0xF9C1D14EC582EEE2ULL, 0xC173C436DA7794CAULL } }, /* XSUM_XXH128_testdata[10684] */ + { 3561, 0x9E3779B185EBCA8DULL, { 0x833DD631DC8E3D62ULL, 0x8D788DB1E04639E9ULL } }, /* XSUM_XXH128_testdata[10685] */ + { 3562, 0x0000000000000000ULL, { 0x8B3F554DFB49918FULL, 0x482F0EC9EE9C63C4ULL } }, /* XSUM_XXH128_testdata[10686] */ + { 3562, 0x000000009E3779B1ULL, { 0x159E4A9189B4C13BULL, 0x6BBF771E2C092A9FULL } }, /* XSUM_XXH128_testdata[10687] */ + { 3562, 0x9E3779B185EBCA8DULL, { 0x455250994E286120ULL, 0xCC816A22837D9FD8ULL } }, /* XSUM_XXH128_testdata[10688] */ + { 3563, 0x0000000000000000ULL, { 0x42B18C25D75724DDULL, 0xD9B2FE3D50C9B27AULL } }, /* XSUM_XXH128_testdata[10689] */ + { 3563, 0x000000009E3779B1ULL, { 0x3E9DE732B35D697FULL, 0xF0C5910F4CE07ED7ULL } }, /* XSUM_XXH128_testdata[10690] */ + { 3563, 0x9E3779B185EBCA8DULL, { 0xF4B14B16682AEE35ULL, 0x92EA87904A331655ULL } }, /* XSUM_XXH128_testdata[10691] */ + { 3564, 0x0000000000000000ULL, { 0xC45207103DFE5459ULL, 0xDF66DACA2CCE4866ULL } }, /* XSUM_XXH128_testdata[10692] */ + { 3564, 0x000000009E3779B1ULL, { 0x1F015159675C9669ULL, 0x6378D2F58EAD5336ULL } }, /* XSUM_XXH128_testdata[10693] */ + { 3564, 0x9E3779B185EBCA8DULL, { 0x268660893C6BE3FFULL, 0xD1FBB2B1D5DE1834ULL } }, /* XSUM_XXH128_testdata[10694] */ + { 3565, 0x0000000000000000ULL, { 0x7EA7440DA5DE1034ULL, 0x49D45941AE5ACD9CULL } }, /* XSUM_XXH128_testdata[10695] */ + { 3565, 0x000000009E3779B1ULL, { 0x1A12E9A9D3BC71F5ULL, 0x4C0434A6626715A6ULL } }, /* XSUM_XXH128_testdata[10696] */ + { 3565, 0x9E3779B185EBCA8DULL, { 0xEB34A9D3E86EC4E3ULL, 0x84E881BF18F607FEULL } }, /* XSUM_XXH128_testdata[10697] */ + { 3566, 0x0000000000000000ULL, { 0x2554A811CA1AC6B2ULL, 0xDFCF1E894E038E51ULL } }, /* XSUM_XXH128_testdata[10698] */ + { 3566, 0x000000009E3779B1ULL, { 0x92699E8F456E3625ULL, 0xC711CD0C3546AE77ULL } }, /* XSUM_XXH128_testdata[10699] */ + { 3566, 0x9E3779B185EBCA8DULL, { 0x78A675E3834817A9ULL, 0x46ABF73E30759829ULL } }, /* XSUM_XXH128_testdata[10700] */ + { 3567, 0x0000000000000000ULL, { 0x6CB83092A773C943ULL, 0xE44B97AD13139EECULL } }, /* XSUM_XXH128_testdata[10701] */ + { 3567, 0x000000009E3779B1ULL, { 0x91D964E5FFC1A4B1ULL, 0x707D0C88675531A0ULL } }, /* XSUM_XXH128_testdata[10702] */ + { 3567, 0x9E3779B185EBCA8DULL, { 0x892F392819A08B3FULL, 0xE157765B2C8DEB7FULL } }, /* XSUM_XXH128_testdata[10703] */ + { 3568, 0x0000000000000000ULL, { 0xAFB74CB13F672C01ULL, 0x449C94E63A936159ULL } }, /* XSUM_XXH128_testdata[10704] */ + { 3568, 0x000000009E3779B1ULL, { 0xEB6D87E536D84B30ULL, 0x62FA3412FBB0D787ULL } }, /* XSUM_XXH128_testdata[10705] */ + { 3568, 0x9E3779B185EBCA8DULL, { 0x6EBA646E3A553F11ULL, 0x3120CA8A3EF425E0ULL } }, /* XSUM_XXH128_testdata[10706] */ + { 3569, 0x0000000000000000ULL, { 0x32EDCFEE170F5043ULL, 0x5BA2FA914E0F5BD9ULL } }, /* XSUM_XXH128_testdata[10707] */ + { 3569, 0x000000009E3779B1ULL, { 0xFEFF472BBA807BDEULL, 0x6A46657C57B0AF34ULL } }, /* XSUM_XXH128_testdata[10708] */ + { 3569, 0x9E3779B185EBCA8DULL, { 0x6505C4F15EAF3A39ULL, 0x1EFB0D53FDA07734ULL } }, /* XSUM_XXH128_testdata[10709] */ + { 3570, 0x0000000000000000ULL, { 0x79E2D6B25304F053ULL, 0xED109A0121528E04ULL } }, /* XSUM_XXH128_testdata[10710] */ + { 3570, 0x000000009E3779B1ULL, { 0xD09F3335019EB016ULL, 0x07FC6D1C9FBA07F0ULL } }, /* XSUM_XXH128_testdata[10711] */ + { 3570, 0x9E3779B185EBCA8DULL, { 0xF6F4D30AFDC033D3ULL, 0x26762B8FFDF2D86AULL } }, /* XSUM_XXH128_testdata[10712] */ + { 3571, 0x0000000000000000ULL, { 0x2B1456214F2109C3ULL, 0xE532483D3D01657DULL } }, /* XSUM_XXH128_testdata[10713] */ + { 3571, 0x000000009E3779B1ULL, { 0x19C75D862E12518EULL, 0x2BA97CB97D965CC8ULL } }, /* XSUM_XXH128_testdata[10714] */ + { 3571, 0x9E3779B185EBCA8DULL, { 0xF251B8C586DD62E3ULL, 0x100E10DE5547B870ULL } }, /* XSUM_XXH128_testdata[10715] */ + { 3572, 0x0000000000000000ULL, { 0x0AAB88F1CB058429ULL, 0x86CC82B74F352D08ULL } }, /* XSUM_XXH128_testdata[10716] */ + { 3572, 0x000000009E3779B1ULL, { 0xD2B8FFC9212869F4ULL, 0xA09001EEDBE2A45CULL } }, /* XSUM_XXH128_testdata[10717] */ + { 3572, 0x9E3779B185EBCA8DULL, { 0xCEB65F6ED58BB8DDULL, 0xFD17A83C50E7ECD4ULL } }, /* XSUM_XXH128_testdata[10718] */ + { 3573, 0x0000000000000000ULL, { 0x006B7E62560ED657ULL, 0x30F8459F158229AEULL } }, /* XSUM_XXH128_testdata[10719] */ + { 3573, 0x000000009E3779B1ULL, { 0x006F43FB2CE9C183ULL, 0xCD1604DFCAC6C7E0ULL } }, /* XSUM_XXH128_testdata[10720] */ + { 3573, 0x9E3779B185EBCA8DULL, { 0x166BFA47B059BA61ULL, 0x6174378B469DD3F0ULL } }, /* XSUM_XXH128_testdata[10721] */ + { 3574, 0x0000000000000000ULL, { 0xC3E729B2EE5CBBE9ULL, 0x4E0B54E0DF4CC4BDULL } }, /* XSUM_XXH128_testdata[10722] */ + { 3574, 0x000000009E3779B1ULL, { 0x9706C943231CB7DAULL, 0x9D245890442E95AEULL } }, /* XSUM_XXH128_testdata[10723] */ + { 3574, 0x9E3779B185EBCA8DULL, { 0x4AC6E31B52DC128DULL, 0xA8EF451204645CA1ULL } }, /* XSUM_XXH128_testdata[10724] */ + { 3575, 0x0000000000000000ULL, { 0xB07AD514C9CF88D9ULL, 0x63357ED3223F12B5ULL } }, /* XSUM_XXH128_testdata[10725] */ + { 3575, 0x000000009E3779B1ULL, { 0xDC4B36F3D0E3028AULL, 0xCBCB8162E090BBC2ULL } }, /* XSUM_XXH128_testdata[10726] */ + { 3575, 0x9E3779B185EBCA8DULL, { 0xDB53F9E7492CE18FULL, 0x86CF9CF8F25D9349ULL } }, /* XSUM_XXH128_testdata[10727] */ + { 3576, 0x0000000000000000ULL, { 0x31DE82458FD07128ULL, 0xF440B93D7A254D39ULL } }, /* XSUM_XXH128_testdata[10728] */ + { 3576, 0x000000009E3779B1ULL, { 0x6D8884E1BC6ADAFFULL, 0x07148B9C5195FF16ULL } }, /* XSUM_XXH128_testdata[10729] */ + { 3576, 0x9E3779B185EBCA8DULL, { 0x1341859CD2A40C80ULL, 0xBC779DD1995A7442ULL } }, /* XSUM_XXH128_testdata[10730] */ + { 3577, 0x0000000000000000ULL, { 0xF82B20916E6E9457ULL, 0xE2D907671F3310FEULL } }, /* XSUM_XXH128_testdata[10731] */ + { 3577, 0x000000009E3779B1ULL, { 0x920659A071A339D5ULL, 0x2F8A87937A438F1DULL } }, /* XSUM_XXH128_testdata[10732] */ + { 3577, 0x9E3779B185EBCA8DULL, { 0xF9E394EEC271A1C8ULL, 0xCB21784A6A656BAEULL } }, /* XSUM_XXH128_testdata[10733] */ + { 3578, 0x0000000000000000ULL, { 0x9FB57A5DAAD860FFULL, 0x6683197992C6E9EEULL } }, /* XSUM_XXH128_testdata[10734] */ + { 3578, 0x000000009E3779B1ULL, { 0x19150CA24DE94881ULL, 0x12AD314C8DA1DCDCULL } }, /* XSUM_XXH128_testdata[10735] */ + { 3578, 0x9E3779B185EBCA8DULL, { 0xD7CC947000BA8D58ULL, 0xDF26E73DAD1400A4ULL } }, /* XSUM_XXH128_testdata[10736] */ + { 3579, 0x0000000000000000ULL, { 0x25ABC08107A016BAULL, 0xC82BA9A23003D151ULL } }, /* XSUM_XXH128_testdata[10737] */ + { 3579, 0x000000009E3779B1ULL, { 0x81646D24A8E3A392ULL, 0xA364F53E05A67417ULL } }, /* XSUM_XXH128_testdata[10738] */ + { 3579, 0x9E3779B185EBCA8DULL, { 0x125F0504A2BA0106ULL, 0x02B3E4CC02DDDDD3ULL } }, /* XSUM_XXH128_testdata[10739] */ + { 3580, 0x0000000000000000ULL, { 0x34EA64F41B8E6927ULL, 0x9A88119D723052ADULL } }, /* XSUM_XXH128_testdata[10740] */ + { 3580, 0x000000009E3779B1ULL, { 0xD51D7929745C573BULL, 0x2419D9D2214DCACDULL } }, /* XSUM_XXH128_testdata[10741] */ + { 3580, 0x9E3779B185EBCA8DULL, { 0xAE4C173EE0108EFFULL, 0x46D4018A664C6EDDULL } }, /* XSUM_XXH128_testdata[10742] */ + { 3581, 0x0000000000000000ULL, { 0x201F2EF77AB96730ULL, 0xAA715E83EB5A0E02ULL } }, /* XSUM_XXH128_testdata[10743] */ + { 3581, 0x000000009E3779B1ULL, { 0xD7B16365CE2657B3ULL, 0x3076DD9472F48846ULL } }, /* XSUM_XXH128_testdata[10744] */ + { 3581, 0x9E3779B185EBCA8DULL, { 0x425ED79ADBC7D660ULL, 0xB2849BEAFB0FAF6AULL } }, /* XSUM_XXH128_testdata[10745] */ + { 3582, 0x0000000000000000ULL, { 0x322C6A43F77EFFEFULL, 0xB2A7B6C143E4B606ULL } }, /* XSUM_XXH128_testdata[10746] */ + { 3582, 0x000000009E3779B1ULL, { 0x5434E2C7C1BFD2D1ULL, 0x588E4B78B64F22E7ULL } }, /* XSUM_XXH128_testdata[10747] */ + { 3582, 0x9E3779B185EBCA8DULL, { 0x1FFB384D89EA209BULL, 0x234CBD980ABBBE76ULL } }, /* XSUM_XXH128_testdata[10748] */ + { 3583, 0x0000000000000000ULL, { 0xE86866EA3CC2CC43ULL, 0xB7E0C1B92B9CC2A0ULL } }, /* XSUM_XXH128_testdata[10749] */ + { 3583, 0x000000009E3779B1ULL, { 0x5FEA40427DBB8F19ULL, 0x95E1C7A05599DC47ULL } }, /* XSUM_XXH128_testdata[10750] */ + { 3583, 0x9E3779B185EBCA8DULL, { 0x9B29185982068C91ULL, 0x9847ACA6874F4A0AULL } }, /* XSUM_XXH128_testdata[10751] */ + { 3584, 0x0000000000000000ULL, { 0x2AF9EAD626D25D94ULL, 0x9932645325765B2FULL } }, /* XSUM_XXH128_testdata[10752] */ + { 3584, 0x000000009E3779B1ULL, { 0x656A238617736356ULL, 0x1D909B192E431DDCULL } }, /* XSUM_XXH128_testdata[10753] */ + { 3584, 0x9E3779B185EBCA8DULL, { 0xB6FC9C8B10AAB2CFULL, 0x6077CD42706F8EB3ULL } }, /* XSUM_XXH128_testdata[10754] */ + { 3585, 0x0000000000000000ULL, { 0xF0D334FE274B6A91ULL, 0xED30D29722166379ULL } }, /* XSUM_XXH128_testdata[10755] */ + { 3585, 0x000000009E3779B1ULL, { 0x8DE0461C5D6D5CC5ULL, 0x35A6AE520CD009E5ULL } }, /* XSUM_XXH128_testdata[10756] */ + { 3585, 0x9E3779B185EBCA8DULL, { 0xFD4786CE9F6DFC03ULL, 0x73E3EC4DA2126EE8ULL } }, /* XSUM_XXH128_testdata[10757] */ + { 3586, 0x0000000000000000ULL, { 0xB8DB9C3D608FDC8AULL, 0xE570DB07A0E2AE53ULL } }, /* XSUM_XXH128_testdata[10758] */ + { 3586, 0x000000009E3779B1ULL, { 0xC9C1D3DD05F9DD2FULL, 0x12720801CA5CFBA9ULL } }, /* XSUM_XXH128_testdata[10759] */ + { 3586, 0x9E3779B185EBCA8DULL, { 0x4171818A418960B0ULL, 0xC1BE72C1E9844F75ULL } }, /* XSUM_XXH128_testdata[10760] */ + { 3587, 0x0000000000000000ULL, { 0xCECD706FDDFEA151ULL, 0x1069678970B7C3D4ULL } }, /* XSUM_XXH128_testdata[10761] */ + { 3587, 0x000000009E3779B1ULL, { 0x3E0B70258AFE40B3ULL, 0xC54E7C72B9CE1E94ULL } }, /* XSUM_XXH128_testdata[10762] */ + { 3587, 0x9E3779B185EBCA8DULL, { 0x3BD04E90AB23DF55ULL, 0x8393FDA422A5332DULL } }, /* XSUM_XXH128_testdata[10763] */ + { 3588, 0x0000000000000000ULL, { 0x86485AE18E893682ULL, 0x0E47EC98D07157A6ULL } }, /* XSUM_XXH128_testdata[10764] */ + { 3588, 0x000000009E3779B1ULL, { 0x9D870095D9693221ULL, 0xD2D39552B7FEA00DULL } }, /* XSUM_XXH128_testdata[10765] */ + { 3588, 0x9E3779B185EBCA8DULL, { 0xB7F96EF6F2CD907FULL, 0xF1CD7A8B66E58EFCULL } }, /* XSUM_XXH128_testdata[10766] */ + { 3589, 0x0000000000000000ULL, { 0xF798C9AAC4FFC627ULL, 0xE5A3062CC2974E47ULL } }, /* XSUM_XXH128_testdata[10767] */ + { 3589, 0x000000009E3779B1ULL, { 0x8BA690C79668DD72ULL, 0x62977A584DF649A8ULL } }, /* XSUM_XXH128_testdata[10768] */ + { 3589, 0x9E3779B185EBCA8DULL, { 0x78983FD6CBFB1601ULL, 0xB3AA27961C2C4FEFULL } }, /* XSUM_XXH128_testdata[10769] */ + { 3590, 0x0000000000000000ULL, { 0xA141AA3FE418801FULL, 0x4C3A599C51470F5BULL } }, /* XSUM_XXH128_testdata[10770] */ + { 3590, 0x000000009E3779B1ULL, { 0x4FCE6ED581E3AB2EULL, 0x0BA053427CEC2680ULL } }, /* XSUM_XXH128_testdata[10771] */ + { 3590, 0x9E3779B185EBCA8DULL, { 0xB15EF590F1E955C8ULL, 0x3826DA92054F07F9ULL } }, /* XSUM_XXH128_testdata[10772] */ + { 3591, 0x0000000000000000ULL, { 0xA9DF21A4D35BB610ULL, 0x6AC72927C170C5C3ULL } }, /* XSUM_XXH128_testdata[10773] */ + { 3591, 0x000000009E3779B1ULL, { 0xB82D712CAA7E7963ULL, 0x09B3950334ED87F6ULL } }, /* XSUM_XXH128_testdata[10774] */ + { 3591, 0x9E3779B185EBCA8DULL, { 0x563A23C9417E8CB4ULL, 0xD59FC107B8F7F1A6ULL } }, /* XSUM_XXH128_testdata[10775] */ + { 3592, 0x0000000000000000ULL, { 0xC3FBFE7A73562CBCULL, 0xCB59A34745C8AB15ULL } }, /* XSUM_XXH128_testdata[10776] */ + { 3592, 0x000000009E3779B1ULL, { 0x5A3EF525876F0CD7ULL, 0x6B50689598A673B4ULL } }, /* XSUM_XXH128_testdata[10777] */ + { 3592, 0x9E3779B185EBCA8DULL, { 0xDEEA695CDD3BFB9FULL, 0x4B66D2390B2A6DFDULL } }, /* XSUM_XXH128_testdata[10778] */ + { 3593, 0x0000000000000000ULL, { 0xD29E95DE693E9014ULL, 0x29DF3C34B3BFE86EULL } }, /* XSUM_XXH128_testdata[10779] */ + { 3593, 0x000000009E3779B1ULL, { 0xCF2EF4C1C4144CC9ULL, 0xBA4B46AC91E40864ULL } }, /* XSUM_XXH128_testdata[10780] */ + { 3593, 0x9E3779B185EBCA8DULL, { 0xC56E25C9764CC202ULL, 0x698F52B6C9D539B0ULL } }, /* XSUM_XXH128_testdata[10781] */ + { 3594, 0x0000000000000000ULL, { 0x6C1E228FED5BECC8ULL, 0x1ECBC79FC22BD74CULL } }, /* XSUM_XXH128_testdata[10782] */ + { 3594, 0x000000009E3779B1ULL, { 0x0DC1C3059988E432ULL, 0x979C4DDFBFBC2BFFULL } }, /* XSUM_XXH128_testdata[10783] */ + { 3594, 0x9E3779B185EBCA8DULL, { 0xAE44EE3A0B3E8AB0ULL, 0x4ECCC469FCA632E5ULL } }, /* XSUM_XXH128_testdata[10784] */ + { 3595, 0x0000000000000000ULL, { 0xE935CC0325A6067FULL, 0xF0FB9E56BAA3209EULL } }, /* XSUM_XXH128_testdata[10785] */ + { 3595, 0x000000009E3779B1ULL, { 0xF99A9C13E17308E2ULL, 0xB61CDC808B009788ULL } }, /* XSUM_XXH128_testdata[10786] */ + { 3595, 0x9E3779B185EBCA8DULL, { 0xD0A65CB862DEB411ULL, 0x397AD417BDF6EBB4ULL } }, /* XSUM_XXH128_testdata[10787] */ + { 3596, 0x0000000000000000ULL, { 0x98F22C7F63866CCFULL, 0xA3EFDE908F7BF481ULL } }, /* XSUM_XXH128_testdata[10788] */ + { 3596, 0x000000009E3779B1ULL, { 0x68E6E0BA9D27CA19ULL, 0x6E461F7194B3EA4CULL } }, /* XSUM_XXH128_testdata[10789] */ + { 3596, 0x9E3779B185EBCA8DULL, { 0xCB9A83003440D127ULL, 0x4DD7A45A66A00846ULL } }, /* XSUM_XXH128_testdata[10790] */ + { 3597, 0x0000000000000000ULL, { 0xC61982D4F98F6AD5ULL, 0xB310032F3EEECDE5ULL } }, /* XSUM_XXH128_testdata[10791] */ + { 3597, 0x000000009E3779B1ULL, { 0x85E8A4E9FED33255ULL, 0x3F8940F800634EDBULL } }, /* XSUM_XXH128_testdata[10792] */ + { 3597, 0x9E3779B185EBCA8DULL, { 0x71D6BCB2F4EFFE6BULL, 0x773FFF59172C40D6ULL } }, /* XSUM_XXH128_testdata[10793] */ + { 3598, 0x0000000000000000ULL, { 0x1F7BCE3664E5902FULL, 0xED9F5CAC450EB810ULL } }, /* XSUM_XXH128_testdata[10794] */ + { 3598, 0x000000009E3779B1ULL, { 0x39996D7FCF527F4AULL, 0x007A3D2BB3359894ULL } }, /* XSUM_XXH128_testdata[10795] */ + { 3598, 0x9E3779B185EBCA8DULL, { 0x48749CF945445E65ULL, 0x78724070E48749D8ULL } }, /* XSUM_XXH128_testdata[10796] */ + { 3599, 0x0000000000000000ULL, { 0x6E855514404372F2ULL, 0x233A64BABC3F2747ULL } }, /* XSUM_XXH128_testdata[10797] */ + { 3599, 0x000000009E3779B1ULL, { 0x681E676D9154B488ULL, 0x1BE614EF165BC0D6ULL } }, /* XSUM_XXH128_testdata[10798] */ + { 3599, 0x9E3779B185EBCA8DULL, { 0xE34FA316A98BE161ULL, 0x598544243D6E05AFULL } }, /* XSUM_XXH128_testdata[10799] */ + { 3600, 0x0000000000000000ULL, { 0xEC24DBD259A92CF9ULL, 0x91A4625DBC3EC228ULL } }, /* XSUM_XXH128_testdata[10800] */ + { 3600, 0x000000009E3779B1ULL, { 0x5979E555AFBDEC7FULL, 0xFE4F42EFF44DF75EULL } }, /* XSUM_XXH128_testdata[10801] */ + { 3600, 0x9E3779B185EBCA8DULL, { 0x8964C0ED9681AB0BULL, 0xFC986BC78FD3643AULL } }, /* XSUM_XXH128_testdata[10802] */ + { 3601, 0x0000000000000000ULL, { 0x0C80A31650CED06BULL, 0x6F9B1D6135C75AEAULL } }, /* XSUM_XXH128_testdata[10803] */ + { 3601, 0x000000009E3779B1ULL, { 0x683D7923648C2DB8ULL, 0xDCE638A5673E0698ULL } }, /* XSUM_XXH128_testdata[10804] */ + { 3601, 0x9E3779B185EBCA8DULL, { 0x74B82B0E04787D8CULL, 0xEC638D519C48D1D0ULL } }, /* XSUM_XXH128_testdata[10805] */ + { 3602, 0x0000000000000000ULL, { 0x4DE3483FC4182F48ULL, 0xF9D199702C4B03BAULL } }, /* XSUM_XXH128_testdata[10806] */ + { 3602, 0x000000009E3779B1ULL, { 0xC65EE3C3F42FA23CULL, 0x411B0CABC7D80BDFULL } }, /* XSUM_XXH128_testdata[10807] */ + { 3602, 0x9E3779B185EBCA8DULL, { 0x7161C533B05B5F24ULL, 0x3C84DD8C3C6F87D8ULL } }, /* XSUM_XXH128_testdata[10808] */ + { 3603, 0x0000000000000000ULL, { 0x6EBFCC95D71CE048ULL, 0x9134F08C09A3F5D4ULL } }, /* XSUM_XXH128_testdata[10809] */ + { 3603, 0x000000009E3779B1ULL, { 0xC048F4D9B20FCBACULL, 0x30F167679D72129FULL } }, /* XSUM_XXH128_testdata[10810] */ + { 3603, 0x9E3779B185EBCA8DULL, { 0x83FD806AC13CC621ULL, 0xE16E3DDA39F0081DULL } }, /* XSUM_XXH128_testdata[10811] */ + { 3604, 0x0000000000000000ULL, { 0x7C528E5DD889A5B7ULL, 0xD6FFAD97BDEF77DCULL } }, /* XSUM_XXH128_testdata[10812] */ + { 3604, 0x000000009E3779B1ULL, { 0x8D8C0D6610741C47ULL, 0x5E226DF6D6B49EE9ULL } }, /* XSUM_XXH128_testdata[10813] */ + { 3604, 0x9E3779B185EBCA8DULL, { 0x77E6D86EA7B9E60BULL, 0x4A601DB093F67C65ULL } }, /* XSUM_XXH128_testdata[10814] */ + { 3605, 0x0000000000000000ULL, { 0x1775BBA9945AB5C7ULL, 0x77EC1E92173843DFULL } }, /* XSUM_XXH128_testdata[10815] */ + { 3605, 0x000000009E3779B1ULL, { 0x2A64AFB85F741EF9ULL, 0xCB71DC3D47348E13ULL } }, /* XSUM_XXH128_testdata[10816] */ + { 3605, 0x9E3779B185EBCA8DULL, { 0xC4611E1571038030ULL, 0xFA4BE82D53D23E6CULL } }, /* XSUM_XXH128_testdata[10817] */ + { 3606, 0x0000000000000000ULL, { 0x13FA2FF572F0F0D4ULL, 0xE75AAB19DD04A544ULL } }, /* XSUM_XXH128_testdata[10818] */ + { 3606, 0x000000009E3779B1ULL, { 0xA8584F4C23211015ULL, 0x5A1B7D12FD42FC49ULL } }, /* XSUM_XXH128_testdata[10819] */ + { 3606, 0x9E3779B185EBCA8DULL, { 0x78379AC100A01282ULL, 0xCD04EB7912F358C0ULL } }, /* XSUM_XXH128_testdata[10820] */ + { 3607, 0x0000000000000000ULL, { 0xB38ABFE4157261E4ULL, 0x6F277904387FD0F1ULL } }, /* XSUM_XXH128_testdata[10821] */ + { 3607, 0x000000009E3779B1ULL, { 0x27EF4956EEB6DEECULL, 0x2E0739A8EAA9197BULL } }, /* XSUM_XXH128_testdata[10822] */ + { 3607, 0x9E3779B185EBCA8DULL, { 0x44FE5B51DD645D59ULL, 0xD195CA40D8EA10BAULL } }, /* XSUM_XXH128_testdata[10823] */ + { 3608, 0x0000000000000000ULL, { 0x1EA557EFB225BD55ULL, 0x39F2A151FBBA8E12ULL } }, /* XSUM_XXH128_testdata[10824] */ + { 3608, 0x000000009E3779B1ULL, { 0x32D47CD3FA13F0A3ULL, 0x08D6FD69CE2FB4AEULL } }, /* XSUM_XXH128_testdata[10825] */ + { 3608, 0x9E3779B185EBCA8DULL, { 0xCF5B8E6399DC3E6DULL, 0xCD98B8C9DD39D825ULL } }, /* XSUM_XXH128_testdata[10826] */ + { 3609, 0x0000000000000000ULL, { 0x5DAEC0E322AA11ACULL, 0x52C0BFBA1F3AFC1CULL } }, /* XSUM_XXH128_testdata[10827] */ + { 3609, 0x000000009E3779B1ULL, { 0x9DE4FA2A6DEEE598ULL, 0x9F977B0FF12A61E0ULL } }, /* XSUM_XXH128_testdata[10828] */ + { 3609, 0x9E3779B185EBCA8DULL, { 0xB97A05380B5E97F4ULL, 0xDA04586D43A2BD47ULL } }, /* XSUM_XXH128_testdata[10829] */ + { 3610, 0x0000000000000000ULL, { 0x0618560527D8EE74ULL, 0x56A30A29B14B8331ULL } }, /* XSUM_XXH128_testdata[10830] */ + { 3610, 0x000000009E3779B1ULL, { 0xDDF49F7EABD451BBULL, 0x99A58331CD255124ULL } }, /* XSUM_XXH128_testdata[10831] */ + { 3610, 0x9E3779B185EBCA8DULL, { 0x810CFF0D5D82C499ULL, 0x24D1B3F8DC37AD0DULL } }, /* XSUM_XXH128_testdata[10832] */ + { 3611, 0x0000000000000000ULL, { 0x428CB7AB1700986EULL, 0x51187BCE808D00FEULL } }, /* XSUM_XXH128_testdata[10833] */ + { 3611, 0x000000009E3779B1ULL, { 0x2B0D554C5B61E875ULL, 0x7795F8B92140EA77ULL } }, /* XSUM_XXH128_testdata[10834] */ + { 3611, 0x9E3779B185EBCA8DULL, { 0xCDA885166AFAEA10ULL, 0xC12BFF2F7D907E5BULL } }, /* XSUM_XXH128_testdata[10835] */ + { 3612, 0x0000000000000000ULL, { 0xD8F050F264F8572FULL, 0x3BBE1C08E7B44C5CULL } }, /* XSUM_XXH128_testdata[10836] */ + { 3612, 0x000000009E3779B1ULL, { 0x1003FE0FD3852668ULL, 0xC13FC362BFB10140ULL } }, /* XSUM_XXH128_testdata[10837] */ + { 3612, 0x9E3779B185EBCA8DULL, { 0x23481BBD0BB290ACULL, 0x168DF46B8C49D281ULL } }, /* XSUM_XXH128_testdata[10838] */ + { 3613, 0x0000000000000000ULL, { 0x7D2FE80FC76388AFULL, 0xB884EEF77554156EULL } }, /* XSUM_XXH128_testdata[10839] */ + { 3613, 0x000000009E3779B1ULL, { 0x89D7CEB02267B6CCULL, 0x6221C4B4B8D75B7CULL } }, /* XSUM_XXH128_testdata[10840] */ + { 3613, 0x9E3779B185EBCA8DULL, { 0x63489215D53E7F36ULL, 0x88705F30F12275D4ULL } }, /* XSUM_XXH128_testdata[10841] */ + { 3614, 0x0000000000000000ULL, { 0x9EE18D9CE70D3D81ULL, 0x4D13B9883C5E2BBDULL } }, /* XSUM_XXH128_testdata[10842] */ + { 3614, 0x000000009E3779B1ULL, { 0xCBF155803AD520D6ULL, 0x32F3D9D12BFA036FULL } }, /* XSUM_XXH128_testdata[10843] */ + { 3614, 0x9E3779B185EBCA8DULL, { 0x44A9E8E08BA4F358ULL, 0x8D5C954C9CE285A9ULL } }, /* XSUM_XXH128_testdata[10844] */ + { 3615, 0x0000000000000000ULL, { 0x805D0048FE2B4461ULL, 0x7002A5B47ACE46A7ULL } }, /* XSUM_XXH128_testdata[10845] */ + { 3615, 0x000000009E3779B1ULL, { 0xCD081FF8427C8FB8ULL, 0x11D330D18BB7AE38ULL } }, /* XSUM_XXH128_testdata[10846] */ + { 3615, 0x9E3779B185EBCA8DULL, { 0xB8793230EFE60C6CULL, 0x4F20E385E3D186CFULL } }, /* XSUM_XXH128_testdata[10847] */ + { 3616, 0x0000000000000000ULL, { 0xE224004BA5C50173ULL, 0xDD0B65401C98ABB6ULL } }, /* XSUM_XXH128_testdata[10848] */ + { 3616, 0x000000009E3779B1ULL, { 0xA760B14434C25ACCULL, 0x7C52F2F047DED25DULL } }, /* XSUM_XXH128_testdata[10849] */ + { 3616, 0x9E3779B185EBCA8DULL, { 0xC495BF75B748E46FULL, 0x34F0AD4D13906DDCULL } }, /* XSUM_XXH128_testdata[10850] */ + { 3617, 0x0000000000000000ULL, { 0x60AD3345643EF778ULL, 0x9B601510885D901CULL } }, /* XSUM_XXH128_testdata[10851] */ + { 3617, 0x000000009E3779B1ULL, { 0x8E89481F72340891ULL, 0x6F7F30F9CA0D3D03ULL } }, /* XSUM_XXH128_testdata[10852] */ + { 3617, 0x9E3779B185EBCA8DULL, { 0xF5C0690CA81473FAULL, 0x316C3F5BF11E6381ULL } }, /* XSUM_XXH128_testdata[10853] */ + { 3618, 0x0000000000000000ULL, { 0xA05FE941BED3C5A6ULL, 0x780CE95EB89A66C9ULL } }, /* XSUM_XXH128_testdata[10854] */ + { 3618, 0x000000009E3779B1ULL, { 0x634D09A2255E80CEULL, 0x95D2DE555B8AE783ULL } }, /* XSUM_XXH128_testdata[10855] */ + { 3618, 0x9E3779B185EBCA8DULL, { 0xDDAAFD89E60E967EULL, 0xE646B96E6D3383FCULL } }, /* XSUM_XXH128_testdata[10856] */ + { 3619, 0x0000000000000000ULL, { 0x2E1FABE6A10E014AULL, 0x85F7AAC038B89185ULL } }, /* XSUM_XXH128_testdata[10857] */ + { 3619, 0x000000009E3779B1ULL, { 0xD499B10BE5DA3A6FULL, 0xCD029C79568D478CULL } }, /* XSUM_XXH128_testdata[10858] */ + { 3619, 0x9E3779B185EBCA8DULL, { 0x62B46AE80876FDFFULL, 0x28CB9E06F9E9A9ECULL } }, /* XSUM_XXH128_testdata[10859] */ + { 3620, 0x0000000000000000ULL, { 0x819F6BD70A3D520AULL, 0x025FE210043F6EA8ULL } }, /* XSUM_XXH128_testdata[10860] */ + { 3620, 0x000000009E3779B1ULL, { 0xA70CA525C05C750CULL, 0xEAB67AEA07810D39ULL } }, /* XSUM_XXH128_testdata[10861] */ + { 3620, 0x9E3779B185EBCA8DULL, { 0x996A04888536CCDFULL, 0x629A221C2663DFB4ULL } }, /* XSUM_XXH128_testdata[10862] */ + { 3621, 0x0000000000000000ULL, { 0xB51D2FDE94AC39C0ULL, 0xC0FD95CF23E9E40DULL } }, /* XSUM_XXH128_testdata[10863] */ + { 3621, 0x000000009E3779B1ULL, { 0x0F0A2043F4AB993AULL, 0x43BC364B2A90EC15ULL } }, /* XSUM_XXH128_testdata[10864] */ + { 3621, 0x9E3779B185EBCA8DULL, { 0xA86FAE2B6048A1EAULL, 0x7A948BFECC9CCD0BULL } }, /* XSUM_XXH128_testdata[10865] */ + { 3622, 0x0000000000000000ULL, { 0x5FBAFF28E55997C2ULL, 0x45937C4EFA774CB4ULL } }, /* XSUM_XXH128_testdata[10866] */ + { 3622, 0x000000009E3779B1ULL, { 0x73283C0FCAF83189ULL, 0x874BF1362690B06AULL } }, /* XSUM_XXH128_testdata[10867] */ + { 3622, 0x9E3779B185EBCA8DULL, { 0x04EA2187B3EB8741ULL, 0xCF13FF12789F8A72ULL } }, /* XSUM_XXH128_testdata[10868] */ + { 3623, 0x0000000000000000ULL, { 0xC15DD9F52DF74671ULL, 0x923F8C358F2FEF4FULL } }, /* XSUM_XXH128_testdata[10869] */ + { 3623, 0x000000009E3779B1ULL, { 0xE21ED81486D44BF3ULL, 0x89881C879F341D4DULL } }, /* XSUM_XXH128_testdata[10870] */ + { 3623, 0x9E3779B185EBCA8DULL, { 0x9790921F255745AEULL, 0x7C5170C204268F12ULL } }, /* XSUM_XXH128_testdata[10871] */ + { 3624, 0x0000000000000000ULL, { 0x4E7C46B2442D5DC7ULL, 0x5D834BB65CFFE622ULL } }, /* XSUM_XXH128_testdata[10872] */ + { 3624, 0x000000009E3779B1ULL, { 0xD34D620409795805ULL, 0x3811738D1D9E2D02ULL } }, /* XSUM_XXH128_testdata[10873] */ + { 3624, 0x9E3779B185EBCA8DULL, { 0xC52C4A382BA1F303ULL, 0xA68DBA1FDA89A0DEULL } }, /* XSUM_XXH128_testdata[10874] */ + { 3625, 0x0000000000000000ULL, { 0x7D1C31F2A34070B3ULL, 0x29DB2F2766C3D4C7ULL } }, /* XSUM_XXH128_testdata[10875] */ + { 3625, 0x000000009E3779B1ULL, { 0xF1C21D6FC227790CULL, 0x43520462E2B421E5ULL } }, /* XSUM_XXH128_testdata[10876] */ + { 3625, 0x9E3779B185EBCA8DULL, { 0xFC641C9B2410A120ULL, 0xE0B1E191437BAF34ULL } }, /* XSUM_XXH128_testdata[10877] */ + { 3626, 0x0000000000000000ULL, { 0xB81891D504173694ULL, 0xAAEB1D9BCB3EF484ULL } }, /* XSUM_XXH128_testdata[10878] */ + { 3626, 0x000000009E3779B1ULL, { 0xC74D936F79FADE71ULL, 0x5DACBA79A6BB8145ULL } }, /* XSUM_XXH128_testdata[10879] */ + { 3626, 0x9E3779B185EBCA8DULL, { 0xF2D50EDF58249D59ULL, 0x08B0C00C366A160AULL } }, /* XSUM_XXH128_testdata[10880] */ + { 3627, 0x0000000000000000ULL, { 0xF63AF445777115FAULL, 0xC45D4D57D9A62158ULL } }, /* XSUM_XXH128_testdata[10881] */ + { 3627, 0x000000009E3779B1ULL, { 0xC64B4117BA44B531ULL, 0xF1025B3172B7AFD1ULL } }, /* XSUM_XXH128_testdata[10882] */ + { 3627, 0x9E3779B185EBCA8DULL, { 0xC173275130321B6EULL, 0xE377659BFDC9E0DEULL } }, /* XSUM_XXH128_testdata[10883] */ + { 3628, 0x0000000000000000ULL, { 0xEC5927B6AD279E13ULL, 0xBF179F0D89705D4FULL } }, /* XSUM_XXH128_testdata[10884] */ + { 3628, 0x000000009E3779B1ULL, { 0x0C2B8EB2E3A05F6FULL, 0xD1FA5ED15E15AB40ULL } }, /* XSUM_XXH128_testdata[10885] */ + { 3628, 0x9E3779B185EBCA8DULL, { 0x9693A39017C2A9ACULL, 0x011CB17627E3D0D1ULL } }, /* XSUM_XXH128_testdata[10886] */ + { 3629, 0x0000000000000000ULL, { 0x71651D7611EC2532ULL, 0xADCF22EDCDE2856CULL } }, /* XSUM_XXH128_testdata[10887] */ + { 3629, 0x000000009E3779B1ULL, { 0x0F1298DC6E8B5456ULL, 0xBAFBA8BE0796235BULL } }, /* XSUM_XXH128_testdata[10888] */ + { 3629, 0x9E3779B185EBCA8DULL, { 0x9718A64B81FD5DE1ULL, 0xC3ABF2B1DDBE6561ULL } }, /* XSUM_XXH128_testdata[10889] */ + { 3630, 0x0000000000000000ULL, { 0x7C449AB2BD997001ULL, 0x3EA2B3DCE4136C55ULL } }, /* XSUM_XXH128_testdata[10890] */ + { 3630, 0x000000009E3779B1ULL, { 0xC10E79A2711187ADULL, 0xD8C3A351155FADF8ULL } }, /* XSUM_XXH128_testdata[10891] */ + { 3630, 0x9E3779B185EBCA8DULL, { 0x7EB44826101D0ED4ULL, 0x86E3535976B4D3A4ULL } }, /* XSUM_XXH128_testdata[10892] */ + { 3631, 0x0000000000000000ULL, { 0xDA4282DB4571841EULL, 0x4F0EB39E5570A2D4ULL } }, /* XSUM_XXH128_testdata[10893] */ + { 3631, 0x000000009E3779B1ULL, { 0x3B9DE7D2CE5255F6ULL, 0x611083834939E49FULL } }, /* XSUM_XXH128_testdata[10894] */ + { 3631, 0x9E3779B185EBCA8DULL, { 0xD9F1F147717C384EULL, 0x567165E5BA0F44FDULL } }, /* XSUM_XXH128_testdata[10895] */ + { 3632, 0x0000000000000000ULL, { 0x2E18036391ED1627ULL, 0x0967E109A7042532ULL } }, /* XSUM_XXH128_testdata[10896] */ + { 3632, 0x000000009E3779B1ULL, { 0x128CF3D3ABB36E6BULL, 0x8D3A59D44E6A9FCEULL } }, /* XSUM_XXH128_testdata[10897] */ + { 3632, 0x9E3779B185EBCA8DULL, { 0x132C5DF528C31BB6ULL, 0xFC1A1F313E36270BULL } }, /* XSUM_XXH128_testdata[10898] */ + { 3633, 0x0000000000000000ULL, { 0x209115FAE7B80378ULL, 0x1795584D4221796FULL } }, /* XSUM_XXH128_testdata[10899] */ + { 3633, 0x000000009E3779B1ULL, { 0x222C8A2C3C2CCC60ULL, 0x1C4B34AD324B9A21ULL } }, /* XSUM_XXH128_testdata[10900] */ + { 3633, 0x9E3779B185EBCA8DULL, { 0xE866A17FAB1F0AF8ULL, 0xB9F3D13322046883ULL } }, /* XSUM_XXH128_testdata[10901] */ + { 3634, 0x0000000000000000ULL, { 0x7DE2CA817F381BC0ULL, 0x40FF0CE9223D2079ULL } }, /* XSUM_XXH128_testdata[10902] */ + { 3634, 0x000000009E3779B1ULL, { 0x5B452AA35A11AADCULL, 0xBE74F53A6D18AD97ULL } }, /* XSUM_XXH128_testdata[10903] */ + { 3634, 0x9E3779B185EBCA8DULL, { 0xF462694243DBE9B8ULL, 0x136C0F6B4FBE481BULL } }, /* XSUM_XXH128_testdata[10904] */ + { 3635, 0x0000000000000000ULL, { 0x46485158EA4469B8ULL, 0x5789F7AB518996C7ULL } }, /* XSUM_XXH128_testdata[10905] */ + { 3635, 0x000000009E3779B1ULL, { 0x270AC88AC091CF1DULL, 0x13F016681179750BULL } }, /* XSUM_XXH128_testdata[10906] */ + { 3635, 0x9E3779B185EBCA8DULL, { 0x50D200F9426AB0B8ULL, 0x07C31CF976913821ULL } }, /* XSUM_XXH128_testdata[10907] */ + { 3636, 0x0000000000000000ULL, { 0x7DD0DD3A7FBB7019ULL, 0x68626C9973DCD5F6ULL } }, /* XSUM_XXH128_testdata[10908] */ + { 3636, 0x000000009E3779B1ULL, { 0xA12863A4BAAFE970ULL, 0x3F935C1BD239FDF8ULL } }, /* XSUM_XXH128_testdata[10909] */ + { 3636, 0x9E3779B185EBCA8DULL, { 0xE717E13C97FAABAFULL, 0xCCB00219D440A5A9ULL } }, /* XSUM_XXH128_testdata[10910] */ + { 3637, 0x0000000000000000ULL, { 0x983F18C1468B2D10ULL, 0xC4D18B8D57901CADULL } }, /* XSUM_XXH128_testdata[10911] */ + { 3637, 0x000000009E3779B1ULL, { 0x5BF76CDE29FD03D4ULL, 0x213EF5841384F834ULL } }, /* XSUM_XXH128_testdata[10912] */ + { 3637, 0x9E3779B185EBCA8DULL, { 0x8DF8356CF393EFC0ULL, 0x3077160DDA987460ULL } }, /* XSUM_XXH128_testdata[10913] */ + { 3638, 0x0000000000000000ULL, { 0x717C350EB3CD9807ULL, 0x20A66EAD750F301AULL } }, /* XSUM_XXH128_testdata[10914] */ + { 3638, 0x000000009E3779B1ULL, { 0x881F28A20BC070ACULL, 0x56801B9D970D8E92ULL } }, /* XSUM_XXH128_testdata[10915] */ + { 3638, 0x9E3779B185EBCA8DULL, { 0x41B956F428CCAB4CULL, 0x064134D7016A05BFULL } }, /* XSUM_XXH128_testdata[10916] */ + { 3639, 0x0000000000000000ULL, { 0xD64AB539E854D1FEULL, 0x4D6B4F6A68BC67A7ULL } }, /* XSUM_XXH128_testdata[10917] */ + { 3639, 0x000000009E3779B1ULL, { 0x11EA10DA21842301ULL, 0x5D70102592804A8BULL } }, /* XSUM_XXH128_testdata[10918] */ + { 3639, 0x9E3779B185EBCA8DULL, { 0xE67F4E3648D08E65ULL, 0x148E5F5D863E8432ULL } }, /* XSUM_XXH128_testdata[10919] */ + { 3640, 0x0000000000000000ULL, { 0x083B58BA720C4DF3ULL, 0xC06363796284B07EULL } }, /* XSUM_XXH128_testdata[10920] */ + { 3640, 0x000000009E3779B1ULL, { 0xD8896E0B1378C6D0ULL, 0xA6500595444A6730ULL } }, /* XSUM_XXH128_testdata[10921] */ + { 3640, 0x9E3779B185EBCA8DULL, { 0xD09854B17E7E765CULL, 0x1600C1BE9B71FB37ULL } }, /* XSUM_XXH128_testdata[10922] */ + { 3641, 0x0000000000000000ULL, { 0xA6010F7BCC7EDE24ULL, 0x608DE9CFF5F16322ULL } }, /* XSUM_XXH128_testdata[10923] */ + { 3641, 0x000000009E3779B1ULL, { 0x5B935FC4D845A51DULL, 0xEF3039521413BC4EULL } }, /* XSUM_XXH128_testdata[10924] */ + { 3641, 0x9E3779B185EBCA8DULL, { 0xBD61E0A48814535CULL, 0xC9DECAA909A30D6CULL } }, /* XSUM_XXH128_testdata[10925] */ + { 3642, 0x0000000000000000ULL, { 0xFDA39821B3F36757ULL, 0x367DE9BBC9BB7EAEULL } }, /* XSUM_XXH128_testdata[10926] */ + { 3642, 0x000000009E3779B1ULL, { 0x4492880092C6ED2CULL, 0x4C71F7427261E9E6ULL } }, /* XSUM_XXH128_testdata[10927] */ + { 3642, 0x9E3779B185EBCA8DULL, { 0x2546DF17F90A2192ULL, 0xC3518BF916D929C5ULL } }, /* XSUM_XXH128_testdata[10928] */ + { 3643, 0x0000000000000000ULL, { 0x8BCB3B6F54E7DBAEULL, 0x024F44277B9D6915ULL } }, /* XSUM_XXH128_testdata[10929] */ + { 3643, 0x000000009E3779B1ULL, { 0xE654E30858B88B53ULL, 0xADDA22F6C03C5A2AULL } }, /* XSUM_XXH128_testdata[10930] */ + { 3643, 0x9E3779B185EBCA8DULL, { 0x0CDBE992BAC2E837ULL, 0x0EFA2BD5A978CB02ULL } }, /* XSUM_XXH128_testdata[10931] */ + { 3644, 0x0000000000000000ULL, { 0x52B947E32C3D68DCULL, 0x65F61B7880554C79ULL } }, /* XSUM_XXH128_testdata[10932] */ + { 3644, 0x000000009E3779B1ULL, { 0xF9E1E88A7EB2A849ULL, 0xFE12D6505D78D681ULL } }, /* XSUM_XXH128_testdata[10933] */ + { 3644, 0x9E3779B185EBCA8DULL, { 0xA67E8BCB1BA3AD03ULL, 0x703C8294F4C84186ULL } }, /* XSUM_XXH128_testdata[10934] */ + { 3645, 0x0000000000000000ULL, { 0x88FE1049B811C230ULL, 0x3835C56D37856CCEULL } }, /* XSUM_XXH128_testdata[10935] */ + { 3645, 0x000000009E3779B1ULL, { 0xC61C3F304259E0AEULL, 0xF70CBC888509A00CULL } }, /* XSUM_XXH128_testdata[10936] */ + { 3645, 0x9E3779B185EBCA8DULL, { 0xE9CF3FD2C327C16FULL, 0x83129099A012E0B5ULL } }, /* XSUM_XXH128_testdata[10937] */ + { 3646, 0x0000000000000000ULL, { 0xD26C15C31BDBBAA2ULL, 0x7C959381974C435EULL } }, /* XSUM_XXH128_testdata[10938] */ + { 3646, 0x000000009E3779B1ULL, { 0xBD623870634D0669ULL, 0x6B4127DB6A5D6233ULL } }, /* XSUM_XXH128_testdata[10939] */ + { 3646, 0x9E3779B185EBCA8DULL, { 0x271AFF2D889CD83EULL, 0xA9C8B5600043DACCULL } }, /* XSUM_XXH128_testdata[10940] */ + { 3647, 0x0000000000000000ULL, { 0x76579FBF54975EF8ULL, 0x1EAE03887CEB57A4ULL } }, /* XSUM_XXH128_testdata[10941] */ + { 3647, 0x000000009E3779B1ULL, { 0x75E487A1BE6B4B57ULL, 0x72859F991170566BULL } }, /* XSUM_XXH128_testdata[10942] */ + { 3647, 0x9E3779B185EBCA8DULL, { 0x391A5EDBFEC575E3ULL, 0xEC3F0C600BBD0B4DULL } }, /* XSUM_XXH128_testdata[10943] */ + { 3648, 0x0000000000000000ULL, { 0x610A4475518EA93BULL, 0xADC8FFEB4534EA00ULL } }, /* XSUM_XXH128_testdata[10944] */ + { 3648, 0x000000009E3779B1ULL, { 0x4F65BF876879D1CAULL, 0x6EB37ED8485AC017ULL } }, /* XSUM_XXH128_testdata[10945] */ + { 3648, 0x9E3779B185EBCA8DULL, { 0xD1470284DFFCC536ULL, 0x8CB3B048F1414376ULL } }, /* XSUM_XXH128_testdata[10946] */ + { 3649, 0x0000000000000000ULL, { 0x7355EAEB71F2ADD7ULL, 0x748B3279745A5A6BULL } }, /* XSUM_XXH128_testdata[10947] */ + { 3649, 0x000000009E3779B1ULL, { 0x166C69706CF0BB68ULL, 0xA2E4E79056BCCAE2ULL } }, /* XSUM_XXH128_testdata[10948] */ + { 3649, 0x9E3779B185EBCA8DULL, { 0x43F63766EB203184ULL, 0x75119D65DC4AA02EULL } }, /* XSUM_XXH128_testdata[10949] */ + { 3650, 0x0000000000000000ULL, { 0x49220BDC3DC68B25ULL, 0x1A698BA41CB8DB38ULL } }, /* XSUM_XXH128_testdata[10950] */ + { 3650, 0x000000009E3779B1ULL, { 0x46B855F81BE7F4D2ULL, 0xA097B76F634F352BULL } }, /* XSUM_XXH128_testdata[10951] */ + { 3650, 0x9E3779B185EBCA8DULL, { 0x43669AC1AF931192ULL, 0x256771A70DBF9591ULL } }, /* XSUM_XXH128_testdata[10952] */ + { 3651, 0x0000000000000000ULL, { 0xD0F53AF95EBB06B4ULL, 0xCD71A14B1624D17BULL } }, /* XSUM_XXH128_testdata[10953] */ + { 3651, 0x000000009E3779B1ULL, { 0x6ED204AFA99B4507ULL, 0x0C916DF46F43C0F8ULL } }, /* XSUM_XXH128_testdata[10954] */ + { 3651, 0x9E3779B185EBCA8DULL, { 0x4511BCD1E506D310ULL, 0x7578E354AC9EF364ULL } }, /* XSUM_XXH128_testdata[10955] */ + { 3652, 0x0000000000000000ULL, { 0xD468B155F10FB02DULL, 0x3FD35763FAEBF106ULL } }, /* XSUM_XXH128_testdata[10956] */ + { 3652, 0x000000009E3779B1ULL, { 0xAD9C05E2672FE0B0ULL, 0x509E70A305D71F3AULL } }, /* XSUM_XXH128_testdata[10957] */ + { 3652, 0x9E3779B185EBCA8DULL, { 0x1C337EC9BE934644ULL, 0xFF94AB5D3D7F30D4ULL } }, /* XSUM_XXH128_testdata[10958] */ + { 3653, 0x0000000000000000ULL, { 0x9E9025CDC2778AD2ULL, 0x31176A23D2035624ULL } }, /* XSUM_XXH128_testdata[10959] */ + { 3653, 0x000000009E3779B1ULL, { 0xF15EBD171E27588CULL, 0x9E61A0E456F9FA82ULL } }, /* XSUM_XXH128_testdata[10960] */ + { 3653, 0x9E3779B185EBCA8DULL, { 0x0B6F102F04CE0841ULL, 0x6D2C85E67C338580ULL } }, /* XSUM_XXH128_testdata[10961] */ + { 3654, 0x0000000000000000ULL, { 0x9792DB0C1F18EFC8ULL, 0x2C4521B29B3DC78AULL } }, /* XSUM_XXH128_testdata[10962] */ + { 3654, 0x000000009E3779B1ULL, { 0x7CB8D6AF8DE401C5ULL, 0x859B9788EE0C00C3ULL } }, /* XSUM_XXH128_testdata[10963] */ + { 3654, 0x9E3779B185EBCA8DULL, { 0x2E43CCFC8CEB2824ULL, 0x380F2C8A40551A75ULL } }, /* XSUM_XXH128_testdata[10964] */ + { 3655, 0x0000000000000000ULL, { 0x3E0610AB1BFEE240ULL, 0x090642BDAB684F79ULL } }, /* XSUM_XXH128_testdata[10965] */ + { 3655, 0x000000009E3779B1ULL, { 0x346E2A76C4E9F390ULL, 0x62DD53895B52CDAEULL } }, /* XSUM_XXH128_testdata[10966] */ + { 3655, 0x9E3779B185EBCA8DULL, { 0x1AF7E00CB6C71727ULL, 0x8B85E3CAD6CF4A45ULL } }, /* XSUM_XXH128_testdata[10967] */ + { 3656, 0x0000000000000000ULL, { 0xB31EE9E702342246ULL, 0x2E828C0EFC7CDD4CULL } }, /* XSUM_XXH128_testdata[10968] */ + { 3656, 0x000000009E3779B1ULL, { 0x14A307CD277505B3ULL, 0xA52CE3E0E8C74D94ULL } }, /* XSUM_XXH128_testdata[10969] */ + { 3656, 0x9E3779B185EBCA8DULL, { 0x563F9E869AF53FC2ULL, 0x9284C63AF128CB7FULL } }, /* XSUM_XXH128_testdata[10970] */ + { 3657, 0x0000000000000000ULL, { 0x714874FD55D5AB76ULL, 0xB461EA64815D4492ULL } }, /* XSUM_XXH128_testdata[10971] */ + { 3657, 0x000000009E3779B1ULL, { 0x1166892E610427ECULL, 0x5DB56543CC8FEF0CULL } }, /* XSUM_XXH128_testdata[10972] */ + { 3657, 0x9E3779B185EBCA8DULL, { 0x991F0CDCE38857A4ULL, 0x0E2C6CBC1299E447ULL } }, /* XSUM_XXH128_testdata[10973] */ + { 3658, 0x0000000000000000ULL, { 0x7D2BBDA44E88C402ULL, 0x9F6C9B0FC8DCFAFFULL } }, /* XSUM_XXH128_testdata[10974] */ + { 3658, 0x000000009E3779B1ULL, { 0x34C75D0548877FC3ULL, 0x463433D125332547ULL } }, /* XSUM_XXH128_testdata[10975] */ + { 3658, 0x9E3779B185EBCA8DULL, { 0xC96E20000F45DC7AULL, 0xC11AF36BE198528CULL } }, /* XSUM_XXH128_testdata[10976] */ + { 3659, 0x0000000000000000ULL, { 0x388FAC01BB9971E7ULL, 0x72A5DDB428982E87ULL } }, /* XSUM_XXH128_testdata[10977] */ + { 3659, 0x000000009E3779B1ULL, { 0xF387E46CA200EB16ULL, 0xAD1522A86F2CEC4AULL } }, /* XSUM_XXH128_testdata[10978] */ + { 3659, 0x9E3779B185EBCA8DULL, { 0x409B353294E7250BULL, 0xDAD2AA30C71B355CULL } }, /* XSUM_XXH128_testdata[10979] */ + { 3660, 0x0000000000000000ULL, { 0x6658D39A5794EC9EULL, 0xE29D8636284F1398ULL } }, /* XSUM_XXH128_testdata[10980] */ + { 3660, 0x000000009E3779B1ULL, { 0x44BF7BDDF3F917D6ULL, 0x5D283F4D9DC939DAULL } }, /* XSUM_XXH128_testdata[10981] */ + { 3660, 0x9E3779B185EBCA8DULL, { 0x877A001BA85CD57FULL, 0x5DB413157B46B672ULL } }, /* XSUM_XXH128_testdata[10982] */ + { 3661, 0x0000000000000000ULL, { 0x9229DEFEB9C5CFCFULL, 0xBC974AD83E819DE8ULL } }, /* XSUM_XXH128_testdata[10983] */ + { 3661, 0x000000009E3779B1ULL, { 0x41E534958C4FFFF7ULL, 0x7B918FD2CA44D58EULL } }, /* XSUM_XXH128_testdata[10984] */ + { 3661, 0x9E3779B185EBCA8DULL, { 0x0A7AB1E105A88727ULL, 0x4A31831552FA53F5ULL } }, /* XSUM_XXH128_testdata[10985] */ + { 3662, 0x0000000000000000ULL, { 0x0DEA8A92E86777ECULL, 0xA40A489B05E4169EULL } }, /* XSUM_XXH128_testdata[10986] */ + { 3662, 0x000000009E3779B1ULL, { 0x3D7F99E0CABC745AULL, 0xFF0527C237357E80ULL } }, /* XSUM_XXH128_testdata[10987] */ + { 3662, 0x9E3779B185EBCA8DULL, { 0xDA9D525FC518C611ULL, 0x37EDA4F0B970570DULL } }, /* XSUM_XXH128_testdata[10988] */ + { 3663, 0x0000000000000000ULL, { 0x7645DFFB0345DC71ULL, 0x2BCEF36EF7E0F6FBULL } }, /* XSUM_XXH128_testdata[10989] */ + { 3663, 0x000000009E3779B1ULL, { 0x5F509C3DCB426183ULL, 0xEAC245E4479A8C2AULL } }, /* XSUM_XXH128_testdata[10990] */ + { 3663, 0x9E3779B185EBCA8DULL, { 0x1F14663C9906311FULL, 0x468208FF6895FF7BULL } }, /* XSUM_XXH128_testdata[10991] */ + { 3664, 0x0000000000000000ULL, { 0x2B813BC349183AD8ULL, 0xA653388A00ADA313ULL } }, /* XSUM_XXH128_testdata[10992] */ + { 3664, 0x000000009E3779B1ULL, { 0xA6F5BD133CDD5AFCULL, 0x763744D5B494568EULL } }, /* XSUM_XXH128_testdata[10993] */ + { 3664, 0x9E3779B185EBCA8DULL, { 0x1C688F2BB8FEACA0ULL, 0xB026EF7F90938D67ULL } }, /* XSUM_XXH128_testdata[10994] */ + { 3665, 0x0000000000000000ULL, { 0x74E7A9D6B3E98D45ULL, 0x0FCB7CF7909D569CULL } }, /* XSUM_XXH128_testdata[10995] */ + { 3665, 0x000000009E3779B1ULL, { 0xABBE812E1093754CULL, 0xCD74B8E7833763A8ULL } }, /* XSUM_XXH128_testdata[10996] */ + { 3665, 0x9E3779B185EBCA8DULL, { 0x334D7716485A5AEDULL, 0xEB81F3958B956BBEULL } }, /* XSUM_XXH128_testdata[10997] */ + { 3666, 0x0000000000000000ULL, { 0x057313555EE1643EULL, 0x9DAB8378B9CC7CAEULL } }, /* XSUM_XXH128_testdata[10998] */ + { 3666, 0x000000009E3779B1ULL, { 0xA4231BDB1052C4CCULL, 0xF6D19E2201D224DAULL } }, /* XSUM_XXH128_testdata[10999] */ + { 3666, 0x9E3779B185EBCA8DULL, { 0x43EA2793D65754A1ULL, 0xEFA8C98DC4B3FD76ULL } }, /* XSUM_XXH128_testdata[11000] */ + { 3667, 0x0000000000000000ULL, { 0x472EC8CC0F5932EDULL, 0x23121ADA1CA431A7ULL } }, /* XSUM_XXH128_testdata[11001] */ + { 3667, 0x000000009E3779B1ULL, { 0x5EB4CEFBB0127797ULL, 0x5C31A6D221EDD949ULL } }, /* XSUM_XXH128_testdata[11002] */ + { 3667, 0x9E3779B185EBCA8DULL, { 0xA1E9CB6FD03E99CCULL, 0xF82BAC9F3CC336B6ULL } }, /* XSUM_XXH128_testdata[11003] */ + { 3668, 0x0000000000000000ULL, { 0x20A378B56457CC71ULL, 0x0B814214D3F934E2ULL } }, /* XSUM_XXH128_testdata[11004] */ + { 3668, 0x000000009E3779B1ULL, { 0xCEF6C548F3A6242BULL, 0x9337E64C6877C21DULL } }, /* XSUM_XXH128_testdata[11005] */ + { 3668, 0x9E3779B185EBCA8DULL, { 0xDEF548BC96712061ULL, 0x4CABE6B4D59CA904ULL } }, /* XSUM_XXH128_testdata[11006] */ + { 3669, 0x0000000000000000ULL, { 0x5A4CABE2108EB0AEULL, 0x7860401B29062582ULL } }, /* XSUM_XXH128_testdata[11007] */ + { 3669, 0x000000009E3779B1ULL, { 0x716FEEF8DE7EAFA0ULL, 0xEBAA3134F6B269A1ULL } }, /* XSUM_XXH128_testdata[11008] */ + { 3669, 0x9E3779B185EBCA8DULL, { 0x0AFD1831FA89CFB4ULL, 0x25B4813ACBEDD345ULL } }, /* XSUM_XXH128_testdata[11009] */ + { 3670, 0x0000000000000000ULL, { 0x82019D1F6C3E2E74ULL, 0x6C9004B172FD80F5ULL } }, /* XSUM_XXH128_testdata[11010] */ + { 3670, 0x000000009E3779B1ULL, { 0xD7C615E3D875473DULL, 0xACA4326A2C4723D9ULL } }, /* XSUM_XXH128_testdata[11011] */ + { 3670, 0x9E3779B185EBCA8DULL, { 0xD6D8C4CA9D0AB2C3ULL, 0x86F29D28140247B1ULL } }, /* XSUM_XXH128_testdata[11012] */ + { 3671, 0x0000000000000000ULL, { 0xE47829572E431531ULL, 0x80899F4DCC808238ULL } }, /* XSUM_XXH128_testdata[11013] */ + { 3671, 0x000000009E3779B1ULL, { 0x9E3B30D7F40750EDULL, 0x7CFECF3C9DE5C75AULL } }, /* XSUM_XXH128_testdata[11014] */ + { 3671, 0x9E3779B185EBCA8DULL, { 0xE343EED75B07F8C0ULL, 0x0A49CEE8AAFA510FULL } }, /* XSUM_XXH128_testdata[11015] */ + { 3672, 0x0000000000000000ULL, { 0x8DDCAA138D9C6C24ULL, 0x886CB7A3272A5A2DULL } }, /* XSUM_XXH128_testdata[11016] */ + { 3672, 0x000000009E3779B1ULL, { 0xBB27FEA1A6FA84A1ULL, 0x63AB19CB62AE30E4ULL } }, /* XSUM_XXH128_testdata[11017] */ + { 3672, 0x9E3779B185EBCA8DULL, { 0xB77A7680E8EFB54CULL, 0x3CC4BE9086C1019AULL } }, /* XSUM_XXH128_testdata[11018] */ + { 3673, 0x0000000000000000ULL, { 0x89DA001EE3A0B053ULL, 0x9BF6075A8E8F2F80ULL } }, /* XSUM_XXH128_testdata[11019] */ + { 3673, 0x000000009E3779B1ULL, { 0x570A9AAE5AB49D2CULL, 0x05793B3E8163F79BULL } }, /* XSUM_XXH128_testdata[11020] */ + { 3673, 0x9E3779B185EBCA8DULL, { 0x0DF66A76DB3C0056ULL, 0x9B1564C96A8B1267ULL } }, /* XSUM_XXH128_testdata[11021] */ + { 3674, 0x0000000000000000ULL, { 0xD81F9027F710D6E4ULL, 0x2227C65A956C992AULL } }, /* XSUM_XXH128_testdata[11022] */ + { 3674, 0x000000009E3779B1ULL, { 0x292499ADF1B2CA71ULL, 0x0178B1A76CEAB1DFULL } }, /* XSUM_XXH128_testdata[11023] */ + { 3674, 0x9E3779B185EBCA8DULL, { 0x2ED21B61A2F8840FULL, 0x1B49A86B829606C9ULL } }, /* XSUM_XXH128_testdata[11024] */ + { 3675, 0x0000000000000000ULL, { 0x82CBFF9D183E749FULL, 0x409B8754241217F7ULL } }, /* XSUM_XXH128_testdata[11025] */ + { 3675, 0x000000009E3779B1ULL, { 0x6F396597D937DD8FULL, 0xA0AFE12F3CC8AB2BULL } }, /* XSUM_XXH128_testdata[11026] */ + { 3675, 0x9E3779B185EBCA8DULL, { 0xDD56A057434E8529ULL, 0x523E5546C6D68F14ULL } }, /* XSUM_XXH128_testdata[11027] */ + { 3676, 0x0000000000000000ULL, { 0xF5AC5F41BBB7EE12ULL, 0x5FA27AC02D1EC077ULL } }, /* XSUM_XXH128_testdata[11028] */ + { 3676, 0x000000009E3779B1ULL, { 0x2D0919A2DC7D2DE5ULL, 0x843498ACF081C1A0ULL } }, /* XSUM_XXH128_testdata[11029] */ + { 3676, 0x9E3779B185EBCA8DULL, { 0x4F0900B248D31555ULL, 0xC80EA4AAF09A60E7ULL } }, /* XSUM_XXH128_testdata[11030] */ + { 3677, 0x0000000000000000ULL, { 0x68D21C5BC5A86459ULL, 0xF258F036268F8A03ULL } }, /* XSUM_XXH128_testdata[11031] */ + { 3677, 0x000000009E3779B1ULL, { 0x59F4B90B20DBF5C7ULL, 0x1A784450AFC0A25FULL } }, /* XSUM_XXH128_testdata[11032] */ + { 3677, 0x9E3779B185EBCA8DULL, { 0xF5028F8358823812ULL, 0xB3B05C24B284A263ULL } }, /* XSUM_XXH128_testdata[11033] */ + { 3678, 0x0000000000000000ULL, { 0x30B49D06835F3AC3ULL, 0xDF1ADCCE8DCFAF2EULL } }, /* XSUM_XXH128_testdata[11034] */ + { 3678, 0x000000009E3779B1ULL, { 0x0B5A70A2A94BDA52ULL, 0x4D5CEF970C4FC8ADULL } }, /* XSUM_XXH128_testdata[11035] */ + { 3678, 0x9E3779B185EBCA8DULL, { 0x9817808DDC221565ULL, 0xB6F5DE2099FD3270ULL } }, /* XSUM_XXH128_testdata[11036] */ + { 3679, 0x0000000000000000ULL, { 0xB8E3272D2F06B449ULL, 0xB497733CF5552DF1ULL } }, /* XSUM_XXH128_testdata[11037] */ + { 3679, 0x000000009E3779B1ULL, { 0x89D413CF39C641BDULL, 0xF6FB65DF6248F568ULL } }, /* XSUM_XXH128_testdata[11038] */ + { 3679, 0x9E3779B185EBCA8DULL, { 0x5736B2C5C03A0720ULL, 0xA4A0528C7C1BBEA8ULL } }, /* XSUM_XXH128_testdata[11039] */ + { 3680, 0x0000000000000000ULL, { 0xCEDB8AB1C347936EULL, 0xEECFF9CCFA504C2EULL } }, /* XSUM_XXH128_testdata[11040] */ + { 3680, 0x000000009E3779B1ULL, { 0x55752FADEBE23EC5ULL, 0x0C8A4CA382B96657ULL } }, /* XSUM_XXH128_testdata[11041] */ + { 3680, 0x9E3779B185EBCA8DULL, { 0x2F50AC8E8F284017ULL, 0x61C94352B7984282ULL } }, /* XSUM_XXH128_testdata[11042] */ + { 3681, 0x0000000000000000ULL, { 0x6550E7E182454B71ULL, 0x810CB782A8EC03B7ULL } }, /* XSUM_XXH128_testdata[11043] */ + { 3681, 0x000000009E3779B1ULL, { 0x3751F9038699CD87ULL, 0x1669072653191C70ULL } }, /* XSUM_XXH128_testdata[11044] */ + { 3681, 0x9E3779B185EBCA8DULL, { 0x26C4F4D208002F53ULL, 0x4077D636E16D7433ULL } }, /* XSUM_XXH128_testdata[11045] */ + { 3682, 0x0000000000000000ULL, { 0x1A3CE9C073D99D8FULL, 0xF426BFBA9EA57F0FULL } }, /* XSUM_XXH128_testdata[11046] */ + { 3682, 0x000000009E3779B1ULL, { 0x6A6C038F463B8397ULL, 0x330BDB48D92EE24FULL } }, /* XSUM_XXH128_testdata[11047] */ + { 3682, 0x9E3779B185EBCA8DULL, { 0x01EEA2098BD2CB83ULL, 0xEE0539CCB702B720ULL } }, /* XSUM_XXH128_testdata[11048] */ + { 3683, 0x0000000000000000ULL, { 0x07B59DA40C98D2F1ULL, 0x81CE535921B67BCAULL } }, /* XSUM_XXH128_testdata[11049] */ + { 3683, 0x000000009E3779B1ULL, { 0xBAAD84F27E93BEFCULL, 0x1F512D79E76299D2ULL } }, /* XSUM_XXH128_testdata[11050] */ + { 3683, 0x9E3779B185EBCA8DULL, { 0xB53E0C157F767219ULL, 0xD637121AB9DA634DULL } }, /* XSUM_XXH128_testdata[11051] */ + { 3684, 0x0000000000000000ULL, { 0x4E1C5A0C63E98879ULL, 0x37F820471032D101ULL } }, /* XSUM_XXH128_testdata[11052] */ + { 3684, 0x000000009E3779B1ULL, { 0x9340C060891B384CULL, 0x52E7EE156E8BFAD9ULL } }, /* XSUM_XXH128_testdata[11053] */ + { 3684, 0x9E3779B185EBCA8DULL, { 0x48A1B9C9EB852A95ULL, 0x741B3ECF8C610B67ULL } }, /* XSUM_XXH128_testdata[11054] */ + { 3685, 0x0000000000000000ULL, { 0xAA83A3F5C90A9558ULL, 0x1CF3A1643174B201ULL } }, /* XSUM_XXH128_testdata[11055] */ + { 3685, 0x000000009E3779B1ULL, { 0xAC1BF22F645891C3ULL, 0x4C323819410E1287ULL } }, /* XSUM_XXH128_testdata[11056] */ + { 3685, 0x9E3779B185EBCA8DULL, { 0x4CD131EA08ACCDDCULL, 0x395CF4DDDBCF8DAAULL } }, /* XSUM_XXH128_testdata[11057] */ + { 3686, 0x0000000000000000ULL, { 0x9903B927FE6E57DEULL, 0xF5DC74107DD1E168ULL } }, /* XSUM_XXH128_testdata[11058] */ + { 3686, 0x000000009E3779B1ULL, { 0xA4D89B9261F42998ULL, 0xBE63C95149044832ULL } }, /* XSUM_XXH128_testdata[11059] */ + { 3686, 0x9E3779B185EBCA8DULL, { 0x52D4FE4DCB866096ULL, 0xAC0DE34C3A001DFFULL } }, /* XSUM_XXH128_testdata[11060] */ + { 3687, 0x0000000000000000ULL, { 0x0EC74B98C8E26F7BULL, 0x0C0747B35903FDA4ULL } }, /* XSUM_XXH128_testdata[11061] */ + { 3687, 0x000000009E3779B1ULL, { 0x0F7DA25C5C5E673AULL, 0xADCF520FD9E167A1ULL } }, /* XSUM_XXH128_testdata[11062] */ + { 3687, 0x9E3779B185EBCA8DULL, { 0x5BB8229D8A74E2EDULL, 0x26907BC1B8CAD5E2ULL } }, /* XSUM_XXH128_testdata[11063] */ + { 3688, 0x0000000000000000ULL, { 0x9F78C9CFBAA50470ULL, 0x2225D1F81AA43A2BULL } }, /* XSUM_XXH128_testdata[11064] */ + { 3688, 0x000000009E3779B1ULL, { 0x71562E33D93E8B3AULL, 0x485CB70347CA21C8ULL } }, /* XSUM_XXH128_testdata[11065] */ + { 3688, 0x9E3779B185EBCA8DULL, { 0xAE63489AAE57AE33ULL, 0x09923001362CE110ULL } }, /* XSUM_XXH128_testdata[11066] */ + { 3689, 0x0000000000000000ULL, { 0x2A952671D26A6FFAULL, 0x0A27801877D769DDULL } }, /* XSUM_XXH128_testdata[11067] */ + { 3689, 0x000000009E3779B1ULL, { 0x16B6223F6F4AF6BEULL, 0x4B92C12381D7A30BULL } }, /* XSUM_XXH128_testdata[11068] */ + { 3689, 0x9E3779B185EBCA8DULL, { 0xE038C243D2CCA34EULL, 0x8E010356A6B3022CULL } }, /* XSUM_XXH128_testdata[11069] */ + { 3690, 0x0000000000000000ULL, { 0x529F41A68EF2AA3EULL, 0x92BB6688C8D0F515ULL } }, /* XSUM_XXH128_testdata[11070] */ + { 3690, 0x000000009E3779B1ULL, { 0xF2946B347BFCB1B0ULL, 0x6A6EE3A09C8B07E1ULL } }, /* XSUM_XXH128_testdata[11071] */ + { 3690, 0x9E3779B185EBCA8DULL, { 0xEFD1AD4FCFC6FBBDULL, 0x36D2B2DF5376E8BAULL } }, /* XSUM_XXH128_testdata[11072] */ + { 3691, 0x0000000000000000ULL, { 0x3659D81C4A6C3DF6ULL, 0xF315A1CE896765CCULL } }, /* XSUM_XXH128_testdata[11073] */ + { 3691, 0x000000009E3779B1ULL, { 0x26FCAD23094EC492ULL, 0x86CC0C3BBC8D979CULL } }, /* XSUM_XXH128_testdata[11074] */ + { 3691, 0x9E3779B185EBCA8DULL, { 0xB3678284360EE813ULL, 0xE9AD4542C5E836C0ULL } }, /* XSUM_XXH128_testdata[11075] */ + { 3692, 0x0000000000000000ULL, { 0x7F3F4732C7238C59ULL, 0x27C215EE4A21DF86ULL } }, /* XSUM_XXH128_testdata[11076] */ + { 3692, 0x000000009E3779B1ULL, { 0x27644CE1CFD83CB3ULL, 0xDC6A3B206BACA7A7ULL } }, /* XSUM_XXH128_testdata[11077] */ + { 3692, 0x9E3779B185EBCA8DULL, { 0x144CFF00565F45BAULL, 0x9BF67713CC7FFC75ULL } }, /* XSUM_XXH128_testdata[11078] */ + { 3693, 0x0000000000000000ULL, { 0x91ADED714C093708ULL, 0xE6C87210D6DFF0F0ULL } }, /* XSUM_XXH128_testdata[11079] */ + { 3693, 0x000000009E3779B1ULL, { 0x029889B952EEC664ULL, 0x459E54364D1D1979ULL } }, /* XSUM_XXH128_testdata[11080] */ + { 3693, 0x9E3779B185EBCA8DULL, { 0xF29B4E6485A31250ULL, 0x72557B04A3042D32ULL } }, /* XSUM_XXH128_testdata[11081] */ + { 3694, 0x0000000000000000ULL, { 0x6F0440F2434F1AECULL, 0x412DE589A6F18DFBULL } }, /* XSUM_XXH128_testdata[11082] */ + { 3694, 0x000000009E3779B1ULL, { 0x9F326E4C30018560ULL, 0x28CFD1EA59E760F7ULL } }, /* XSUM_XXH128_testdata[11083] */ + { 3694, 0x9E3779B185EBCA8DULL, { 0x6605B7A79602CB9DULL, 0xCCF46BF6E719232FULL } }, /* XSUM_XXH128_testdata[11084] */ + { 3695, 0x0000000000000000ULL, { 0x62396D74B3807469ULL, 0xEC6F4D484FD2159CULL } }, /* XSUM_XXH128_testdata[11085] */ + { 3695, 0x000000009E3779B1ULL, { 0x402EA912F27F5A48ULL, 0xA8AF258427A0AD5EULL } }, /* XSUM_XXH128_testdata[11086] */ + { 3695, 0x9E3779B185EBCA8DULL, { 0xEB50F68A2F82600AULL, 0xA74D88B6D942F1C8ULL } }, /* XSUM_XXH128_testdata[11087] */ + { 3696, 0x0000000000000000ULL, { 0x9DEB9F6FCB13C1D1ULL, 0x594C792643ADBB40ULL } }, /* XSUM_XXH128_testdata[11088] */ + { 3696, 0x000000009E3779B1ULL, { 0xFAC23FC5549933B8ULL, 0xD5B1D1F5EAA483CFULL } }, /* XSUM_XXH128_testdata[11089] */ + { 3696, 0x9E3779B185EBCA8DULL, { 0xDFD8A81D57831F5AULL, 0x0B3F37DD5554D7AFULL } }, /* XSUM_XXH128_testdata[11090] */ + { 3697, 0x0000000000000000ULL, { 0x2BE03188E30F00BAULL, 0xFBB90C349AFFF432ULL } }, /* XSUM_XXH128_testdata[11091] */ + { 3697, 0x000000009E3779B1ULL, { 0xE0EB68B1DC7FF598ULL, 0xF0AE23D99FB80F90ULL } }, /* XSUM_XXH128_testdata[11092] */ + { 3697, 0x9E3779B185EBCA8DULL, { 0x6092B3B0C7B588EFULL, 0xB79A95CAE8795D1AULL } }, /* XSUM_XXH128_testdata[11093] */ + { 3698, 0x0000000000000000ULL, { 0x5ED20B63A3F94214ULL, 0x257A05E466D84F6FULL } }, /* XSUM_XXH128_testdata[11094] */ + { 3698, 0x000000009E3779B1ULL, { 0xBD377A5C1B2F6269ULL, 0xC9E754FA11BD558CULL } }, /* XSUM_XXH128_testdata[11095] */ + { 3698, 0x9E3779B185EBCA8DULL, { 0x864F42F85EFE0BBAULL, 0xC92C53D2571E2D95ULL } }, /* XSUM_XXH128_testdata[11096] */ + { 3699, 0x0000000000000000ULL, { 0xC689706F998A00C3ULL, 0x89AEA136FDF40589ULL } }, /* XSUM_XXH128_testdata[11097] */ + { 3699, 0x000000009E3779B1ULL, { 0x01641EC35FBEC471ULL, 0x614C3C18BAC4F5FEULL } }, /* XSUM_XXH128_testdata[11098] */ + { 3699, 0x9E3779B185EBCA8DULL, { 0x0D1883CBE5717F8FULL, 0x895CADF29EA9F979ULL } }, /* XSUM_XXH128_testdata[11099] */ + { 3700, 0x0000000000000000ULL, { 0xE6A90433FB2F086BULL, 0x99EB8C2BE975C244ULL } }, /* XSUM_XXH128_testdata[11100] */ + { 3700, 0x000000009E3779B1ULL, { 0x0C234634F8CA88E8ULL, 0xC25D370701707B8FULL } }, /* XSUM_XXH128_testdata[11101] */ + { 3700, 0x9E3779B185EBCA8DULL, { 0x6AF73F6E9BE7EAD0ULL, 0xE2E3C706853538F0ULL } }, /* XSUM_XXH128_testdata[11102] */ + { 3701, 0x0000000000000000ULL, { 0xB81DABC129DE83F4ULL, 0xDBFB88BD2A2DDCF6ULL } }, /* XSUM_XXH128_testdata[11103] */ + { 3701, 0x000000009E3779B1ULL, { 0x4FAB0DEBFDD1D44AULL, 0x1132CA52548A89CFULL } }, /* XSUM_XXH128_testdata[11104] */ + { 3701, 0x9E3779B185EBCA8DULL, { 0x29D4D6930E899D09ULL, 0xA0ADDA1810244685ULL } }, /* XSUM_XXH128_testdata[11105] */ + { 3702, 0x0000000000000000ULL, { 0xE6060A782BEE1FBCULL, 0xC45ED2727BDACFC3ULL } }, /* XSUM_XXH128_testdata[11106] */ + { 3702, 0x000000009E3779B1ULL, { 0xCAFCEBDDDD83EC32ULL, 0xAF1BE591F5096875ULL } }, /* XSUM_XXH128_testdata[11107] */ + { 3702, 0x9E3779B185EBCA8DULL, { 0xF9BE6AAA96953CE4ULL, 0xEB082ADC95257388ULL } }, /* XSUM_XXH128_testdata[11108] */ + { 3703, 0x0000000000000000ULL, { 0xE6F3FEB5D81374C0ULL, 0x7F080EEA3367CD1EULL } }, /* XSUM_XXH128_testdata[11109] */ + { 3703, 0x000000009E3779B1ULL, { 0xD9510A16BB57474FULL, 0x01139823C75A1FFDULL } }, /* XSUM_XXH128_testdata[11110] */ + { 3703, 0x9E3779B185EBCA8DULL, { 0x1BD0294C74993124ULL, 0x328FBEF870FBCF64ULL } }, /* XSUM_XXH128_testdata[11111] */ + { 3704, 0x0000000000000000ULL, { 0xC338F23B324DBB9AULL, 0x1A2C25CDCCE33CCEULL } }, /* XSUM_XXH128_testdata[11112] */ + { 3704, 0x000000009E3779B1ULL, { 0xD3E391B47A03D266ULL, 0x910E15ED2131E165ULL } }, /* XSUM_XXH128_testdata[11113] */ + { 3704, 0x9E3779B185EBCA8DULL, { 0x8F4146188F8CE740ULL, 0x4A351501CBF42652ULL } }, /* XSUM_XXH128_testdata[11114] */ + { 3705, 0x0000000000000000ULL, { 0xA7A142E3469E3183ULL, 0x55E4C4CE17460E8DULL } }, /* XSUM_XXH128_testdata[11115] */ + { 3705, 0x000000009E3779B1ULL, { 0xF32F602BD23DF6CEULL, 0x3F7102169F8B11FCULL } }, /* XSUM_XXH128_testdata[11116] */ + { 3705, 0x9E3779B185EBCA8DULL, { 0x0624F76D4D087EA7ULL, 0x34CC8202D9AF29A6ULL } }, /* XSUM_XXH128_testdata[11117] */ + { 3706, 0x0000000000000000ULL, { 0x7827841051328D85ULL, 0xAECA716A3EEB4BDDULL } }, /* XSUM_XXH128_testdata[11118] */ + { 3706, 0x000000009E3779B1ULL, { 0x830ED17C80C0520FULL, 0x31354A575A57AA2AULL } }, /* XSUM_XXH128_testdata[11119] */ + { 3706, 0x9E3779B185EBCA8DULL, { 0xE84DA382E63CBC76ULL, 0xE36207F771C2CE25ULL } }, /* XSUM_XXH128_testdata[11120] */ + { 3707, 0x0000000000000000ULL, { 0xF1A2459F1B360D44ULL, 0xA08B8441971C5497ULL } }, /* XSUM_XXH128_testdata[11121] */ + { 3707, 0x000000009E3779B1ULL, { 0x88F047D9A53EA8C8ULL, 0x50E0D87F0259FA74ULL } }, /* XSUM_XXH128_testdata[11122] */ + { 3707, 0x9E3779B185EBCA8DULL, { 0x91E6043E763B72ADULL, 0x2B20CEBE77793B80ULL } }, /* XSUM_XXH128_testdata[11123] */ + { 3708, 0x0000000000000000ULL, { 0x693FE3C3A8505B5AULL, 0x4E203AEFAC6178CBULL } }, /* XSUM_XXH128_testdata[11124] */ + { 3708, 0x000000009E3779B1ULL, { 0xC4EEB317DB50CBEFULL, 0x4AEA568C4B000E22ULL } }, /* XSUM_XXH128_testdata[11125] */ + { 3708, 0x9E3779B185EBCA8DULL, { 0x065560626340E3CEULL, 0xAAB0B2B97DD7F346ULL } }, /* XSUM_XXH128_testdata[11126] */ + { 3709, 0x0000000000000000ULL, { 0xE652AD737192EBA9ULL, 0xF30170769072EB1FULL } }, /* XSUM_XXH128_testdata[11127] */ + { 3709, 0x000000009E3779B1ULL, { 0xEEA59007AAEC0212ULL, 0x11FA26C6D68AC054ULL } }, /* XSUM_XXH128_testdata[11128] */ + { 3709, 0x9E3779B185EBCA8DULL, { 0x40800D8F73C138C6ULL, 0x0106A0DD05D83A52ULL } }, /* XSUM_XXH128_testdata[11129] */ + { 3710, 0x0000000000000000ULL, { 0x0D0354875972AADAULL, 0x24A5F9E4EB8B1718ULL } }, /* XSUM_XXH128_testdata[11130] */ + { 3710, 0x000000009E3779B1ULL, { 0xBE7366B05E324954ULL, 0x297FAD49F5712780ULL } }, /* XSUM_XXH128_testdata[11131] */ + { 3710, 0x9E3779B185EBCA8DULL, { 0x6F84F6348BF70FACULL, 0xEBB798C76E5A0AF3ULL } }, /* XSUM_XXH128_testdata[11132] */ + { 3711, 0x0000000000000000ULL, { 0x9485A0B8934E04EAULL, 0x96B8A5A4C63D0A28ULL } }, /* XSUM_XXH128_testdata[11133] */ + { 3711, 0x000000009E3779B1ULL, { 0xC574187EAF37148AULL, 0xA4BE862E7A1250A7ULL } }, /* XSUM_XXH128_testdata[11134] */ + { 3711, 0x9E3779B185EBCA8DULL, { 0x2B7E3B2F33D0CAB6ULL, 0xF453917AFC16CE22ULL } }, /* XSUM_XXH128_testdata[11135] */ + { 3712, 0x0000000000000000ULL, { 0x09A90CC714E0F0C3ULL, 0xF1F168CDB474C1B4ULL } }, /* XSUM_XXH128_testdata[11136] */ + { 3712, 0x000000009E3779B1ULL, { 0x4BD8775AFD48E8EBULL, 0xCA7D2D7BBA8BCFADULL } }, /* XSUM_XXH128_testdata[11137] */ + { 3712, 0x9E3779B185EBCA8DULL, { 0xE2E4513A65CE25ACULL, 0xC557C7EB0C962ED3ULL } }, /* XSUM_XXH128_testdata[11138] */ + { 3713, 0x0000000000000000ULL, { 0x02CDD57D95AEEBC3ULL, 0xC138BDCB896F8107ULL } }, /* XSUM_XXH128_testdata[11139] */ + { 3713, 0x000000009E3779B1ULL, { 0x4E520BE8DFDA562DULL, 0xE17B90789F98F7A9ULL } }, /* XSUM_XXH128_testdata[11140] */ + { 3713, 0x9E3779B185EBCA8DULL, { 0x5D2B0E22E2A986EAULL, 0x2BD5B37424704DC6ULL } }, /* XSUM_XXH128_testdata[11141] */ + { 3714, 0x0000000000000000ULL, { 0xD98F7052D7F549F3ULL, 0x4EC9F43C988E86FAULL } }, /* XSUM_XXH128_testdata[11142] */ + { 3714, 0x000000009E3779B1ULL, { 0x6471907F59974045ULL, 0xDEA3B49A998CD9EBULL } }, /* XSUM_XXH128_testdata[11143] */ + { 3714, 0x9E3779B185EBCA8DULL, { 0xFC8CC370A4791CD8ULL, 0xB2AA960AFD2941EAULL } }, /* XSUM_XXH128_testdata[11144] */ + { 3715, 0x0000000000000000ULL, { 0x3FE8B5DBACBB95B0ULL, 0xC3110738D76A7A07ULL } }, /* XSUM_XXH128_testdata[11145] */ + { 3715, 0x000000009E3779B1ULL, { 0xA428C1BEA5A6C4C6ULL, 0x55711E714FB2745DULL } }, /* XSUM_XXH128_testdata[11146] */ + { 3715, 0x9E3779B185EBCA8DULL, { 0x30CD4C3BD9D73599ULL, 0x78D94484E9F9B289ULL } }, /* XSUM_XXH128_testdata[11147] */ + { 3716, 0x0000000000000000ULL, { 0x513C9DABFD807F3CULL, 0x87C45213450A1E34ULL } }, /* XSUM_XXH128_testdata[11148] */ + { 3716, 0x000000009E3779B1ULL, { 0x37DACA18D922873CULL, 0x00A4F22FD0ACD18DULL } }, /* XSUM_XXH128_testdata[11149] */ + { 3716, 0x9E3779B185EBCA8DULL, { 0x4FC039FA36A3F823ULL, 0x26473A2F90B1C297ULL } }, /* XSUM_XXH128_testdata[11150] */ + { 3717, 0x0000000000000000ULL, { 0xB43EE4662B6EFCBEULL, 0x50BE339423150FB3ULL } }, /* XSUM_XXH128_testdata[11151] */ + { 3717, 0x000000009E3779B1ULL, { 0xDACB24E79572481AULL, 0xF50064695F7C0402ULL } }, /* XSUM_XXH128_testdata[11152] */ + { 3717, 0x9E3779B185EBCA8DULL, { 0xDFF9F622B896974AULL, 0x5F8FEE5FC1FEA621ULL } }, /* XSUM_XXH128_testdata[11153] */ + { 3718, 0x0000000000000000ULL, { 0x4526037CC817421EULL, 0xE53A8C7C1477B9A9ULL } }, /* XSUM_XXH128_testdata[11154] */ + { 3718, 0x000000009E3779B1ULL, { 0x2185F18D9E5D5DFFULL, 0xEB70572168F7EA32ULL } }, /* XSUM_XXH128_testdata[11155] */ + { 3718, 0x9E3779B185EBCA8DULL, { 0x49D4604E10E46CA3ULL, 0x96A138320FA0D57CULL } }, /* XSUM_XXH128_testdata[11156] */ + { 3719, 0x0000000000000000ULL, { 0xEF0783A5717C5158ULL, 0xDA9D0B5C4F931D32ULL } }, /* XSUM_XXH128_testdata[11157] */ + { 3719, 0x000000009E3779B1ULL, { 0xA5D65AA8994608C2ULL, 0x01C555158359ED00ULL } }, /* XSUM_XXH128_testdata[11158] */ + { 3719, 0x9E3779B185EBCA8DULL, { 0x1CA3A0942FAA5299ULL, 0x4A1F6FBCE0C4AEC3ULL } }, /* XSUM_XXH128_testdata[11159] */ + { 3720, 0x0000000000000000ULL, { 0x89A84DDB6CD1153AULL, 0x793956E816899990ULL } }, /* XSUM_XXH128_testdata[11160] */ + { 3720, 0x000000009E3779B1ULL, { 0x841A9EE5261BE25BULL, 0x6C9ACD86E749A520ULL } }, /* XSUM_XXH128_testdata[11161] */ + { 3720, 0x9E3779B185EBCA8DULL, { 0x73897329F114958BULL, 0x187A4498F87126B3ULL } }, /* XSUM_XXH128_testdata[11162] */ + { 3721, 0x0000000000000000ULL, { 0xCA31357C8308F48FULL, 0x3FB6E5D04140536FULL } }, /* XSUM_XXH128_testdata[11163] */ + { 3721, 0x000000009E3779B1ULL, { 0x48515E0986862639ULL, 0x7DB753484B1FF1F5ULL } }, /* XSUM_XXH128_testdata[11164] */ + { 3721, 0x9E3779B185EBCA8DULL, { 0x7F7547E6D51145B1ULL, 0x9C6A88029C276596ULL } }, /* XSUM_XXH128_testdata[11165] */ + { 3722, 0x0000000000000000ULL, { 0x69FE031C6805ACA3ULL, 0x1889EBD98FF74B32ULL } }, /* XSUM_XXH128_testdata[11166] */ + { 3722, 0x000000009E3779B1ULL, { 0xAAE937853F74D181ULL, 0x02EAA0B23E579CD5ULL } }, /* XSUM_XXH128_testdata[11167] */ + { 3722, 0x9E3779B185EBCA8DULL, { 0xDA8A4C35AE999E31ULL, 0xAACBBCF440E65A21ULL } }, /* XSUM_XXH128_testdata[11168] */ + { 3723, 0x0000000000000000ULL, { 0x6B3D87A525E5D55AULL, 0xD69E04F57CF7632EULL } }, /* XSUM_XXH128_testdata[11169] */ + { 3723, 0x000000009E3779B1ULL, { 0x3588CFE2B6BA3A2AULL, 0x76DCD1B3A2B643C6ULL } }, /* XSUM_XXH128_testdata[11170] */ + { 3723, 0x9E3779B185EBCA8DULL, { 0xA0D1DD5C643ACF76ULL, 0x76718EC0525ACA25ULL } }, /* XSUM_XXH128_testdata[11171] */ + { 3724, 0x0000000000000000ULL, { 0x78DFC979977ACE9CULL, 0x00A547AA64884AECULL } }, /* XSUM_XXH128_testdata[11172] */ + { 3724, 0x000000009E3779B1ULL, { 0xB172D5BB950D3853ULL, 0x358E67CD645A426CULL } }, /* XSUM_XXH128_testdata[11173] */ + { 3724, 0x9E3779B185EBCA8DULL, { 0xA46DD8844CA63062ULL, 0x4181F6507D00BA79ULL } }, /* XSUM_XXH128_testdata[11174] */ + { 3725, 0x0000000000000000ULL, { 0x18F749CBAE11D021ULL, 0x4BC5B536AA0579C0ULL } }, /* XSUM_XXH128_testdata[11175] */ + { 3725, 0x000000009E3779B1ULL, { 0x6ECB7D06E06B2451ULL, 0x485FA4E1240D9854ULL } }, /* XSUM_XXH128_testdata[11176] */ + { 3725, 0x9E3779B185EBCA8DULL, { 0xEA9174E9A43BD9A5ULL, 0x3B965463D3A88CD9ULL } }, /* XSUM_XXH128_testdata[11177] */ + { 3726, 0x0000000000000000ULL, { 0xBA376D29BF143E24ULL, 0x75A068B10D504BD6ULL } }, /* XSUM_XXH128_testdata[11178] */ + { 3726, 0x000000009E3779B1ULL, { 0x4E69D2723EB34C56ULL, 0x78C2E5CCF32BEA82ULL } }, /* XSUM_XXH128_testdata[11179] */ + { 3726, 0x9E3779B185EBCA8DULL, { 0x02E273037A8F35F0ULL, 0x1E1B220C338AE746ULL } }, /* XSUM_XXH128_testdata[11180] */ + { 3727, 0x0000000000000000ULL, { 0x55B8146358325573ULL, 0x80A376594133C6CAULL } }, /* XSUM_XXH128_testdata[11181] */ + { 3727, 0x000000009E3779B1ULL, { 0xB226F1BAAAD52162ULL, 0x4E7080A001DBCAC4ULL } }, /* XSUM_XXH128_testdata[11182] */ + { 3727, 0x9E3779B185EBCA8DULL, { 0x4462E034B0AD298BULL, 0x67E6BA42E50C8D6BULL } }, /* XSUM_XXH128_testdata[11183] */ + { 3728, 0x0000000000000000ULL, { 0x59BB474966976FECULL, 0x2FECE47103072E48ULL } }, /* XSUM_XXH128_testdata[11184] */ + { 3728, 0x000000009E3779B1ULL, { 0xC6F20EF913CDDF61ULL, 0xAF38A42791F8D6E1ULL } }, /* XSUM_XXH128_testdata[11185] */ + { 3728, 0x9E3779B185EBCA8DULL, { 0x8A40108D3EF3BAFFULL, 0xA50124430DB90497ULL } }, /* XSUM_XXH128_testdata[11186] */ + { 3729, 0x0000000000000000ULL, { 0xA0D47376DA73CF93ULL, 0xEBFA62F11DD716C5ULL } }, /* XSUM_XXH128_testdata[11187] */ + { 3729, 0x000000009E3779B1ULL, { 0xA1BB769ACECA8464ULL, 0x5E0443F316FB851DULL } }, /* XSUM_XXH128_testdata[11188] */ + { 3729, 0x9E3779B185EBCA8DULL, { 0xDC635F4DC0D43A8EULL, 0xA7AC4B036BCC527FULL } }, /* XSUM_XXH128_testdata[11189] */ + { 3730, 0x0000000000000000ULL, { 0x04BD448733D3769CULL, 0xE3F0B0FB7F16544CULL } }, /* XSUM_XXH128_testdata[11190] */ + { 3730, 0x000000009E3779B1ULL, { 0x0442B900D00BBA65ULL, 0x06B76FEB20D7D877ULL } }, /* XSUM_XXH128_testdata[11191] */ + { 3730, 0x9E3779B185EBCA8DULL, { 0x8B5411EE4654B2C5ULL, 0xF2F30A75895BEE43ULL } }, /* XSUM_XXH128_testdata[11192] */ + { 3731, 0x0000000000000000ULL, { 0xC85ECC7AF5D2B2CBULL, 0xB4A79F937EF976C6ULL } }, /* XSUM_XXH128_testdata[11193] */ + { 3731, 0x000000009E3779B1ULL, { 0x5A8C8704D9756E55ULL, 0xF37904187EB80F86ULL } }, /* XSUM_XXH128_testdata[11194] */ + { 3731, 0x9E3779B185EBCA8DULL, { 0xF4834D9116B0DC17ULL, 0x9E21F97DEE8DE039ULL } }, /* XSUM_XXH128_testdata[11195] */ + { 3732, 0x0000000000000000ULL, { 0x32B2C45489FA7153ULL, 0x27D480808B0597B9ULL } }, /* XSUM_XXH128_testdata[11196] */ + { 3732, 0x000000009E3779B1ULL, { 0x7C6998972DB6D6D4ULL, 0xDDF1727AA9F25163ULL } }, /* XSUM_XXH128_testdata[11197] */ + { 3732, 0x9E3779B185EBCA8DULL, { 0xE5690B05A6716E8DULL, 0x74E071B1D87F9082ULL } }, /* XSUM_XXH128_testdata[11198] */ + { 3733, 0x0000000000000000ULL, { 0x8CC202AF0213DB19ULL, 0xF6BF0432476C4B58ULL } }, /* XSUM_XXH128_testdata[11199] */ + { 3733, 0x000000009E3779B1ULL, { 0x436EFC59CA2BD8C1ULL, 0x64FBD2A07C634084ULL } }, /* XSUM_XXH128_testdata[11200] */ + { 3733, 0x9E3779B185EBCA8DULL, { 0x739E0B6E01D50941ULL, 0x57B630705878E87AULL } }, /* XSUM_XXH128_testdata[11201] */ + { 3734, 0x0000000000000000ULL, { 0x614262D97FABE3B1ULL, 0x645034990D0B090FULL } }, /* XSUM_XXH128_testdata[11202] */ + { 3734, 0x000000009E3779B1ULL, { 0xE92148814AC557A4ULL, 0xEAF74F1D0DDBFE49ULL } }, /* XSUM_XXH128_testdata[11203] */ + { 3734, 0x9E3779B185EBCA8DULL, { 0x9E72B381D4C2B189ULL, 0x5FBBADC4C5811F03ULL } }, /* XSUM_XXH128_testdata[11204] */ + { 3735, 0x0000000000000000ULL, { 0xE5CCCB7DE403691DULL, 0xAA392A5B567F33DFULL } }, /* XSUM_XXH128_testdata[11205] */ + { 3735, 0x000000009E3779B1ULL, { 0x7DD1872FC9E94B28ULL, 0x60BF25858E88B9B3ULL } }, /* XSUM_XXH128_testdata[11206] */ + { 3735, 0x9E3779B185EBCA8DULL, { 0xAFC0C48AD1328C65ULL, 0xE7881C5580BBA4A3ULL } }, /* XSUM_XXH128_testdata[11207] */ + { 3736, 0x0000000000000000ULL, { 0x5502670C3FB7D016ULL, 0x2D9A93B8F77795B7ULL } }, /* XSUM_XXH128_testdata[11208] */ + { 3736, 0x000000009E3779B1ULL, { 0x94EFA555BF4116B1ULL, 0x50D9E554B17A8FD5ULL } }, /* XSUM_XXH128_testdata[11209] */ + { 3736, 0x9E3779B185EBCA8DULL, { 0x350691E72B4DD829ULL, 0x4B1923BDDE4314BBULL } }, /* XSUM_XXH128_testdata[11210] */ + { 3737, 0x0000000000000000ULL, { 0x1C0D9132913AB65BULL, 0x6E69038E773EEB1FULL } }, /* XSUM_XXH128_testdata[11211] */ + { 3737, 0x000000009E3779B1ULL, { 0xADE8A72CE3499388ULL, 0xD66A72871EF61321ULL } }, /* XSUM_XXH128_testdata[11212] */ + { 3737, 0x9E3779B185EBCA8DULL, { 0x691AC974C80C9CB4ULL, 0x9D36EF32456352BAULL } }, /* XSUM_XXH128_testdata[11213] */ + { 3738, 0x0000000000000000ULL, { 0x50928AD862FF5482ULL, 0xF73F60D7370B68E3ULL } }, /* XSUM_XXH128_testdata[11214] */ + { 3738, 0x000000009E3779B1ULL, { 0x2C1E7B9CDEEA9873ULL, 0x979D65528BEBF5FDULL } }, /* XSUM_XXH128_testdata[11215] */ + { 3738, 0x9E3779B185EBCA8DULL, { 0x791AB6E4E1D79DA5ULL, 0x7B9AD7D2BC28DEC4ULL } }, /* XSUM_XXH128_testdata[11216] */ + { 3739, 0x0000000000000000ULL, { 0x788A893F3580DBB3ULL, 0xA9DDA4A81FE8FA3EULL } }, /* XSUM_XXH128_testdata[11217] */ + { 3739, 0x000000009E3779B1ULL, { 0xD24DDE162CF3349AULL, 0xCC9F3A794E038738ULL } }, /* XSUM_XXH128_testdata[11218] */ + { 3739, 0x9E3779B185EBCA8DULL, { 0x35A7C64D137ED697ULL, 0x1378136063A42DAEULL } }, /* XSUM_XXH128_testdata[11219] */ + { 3740, 0x0000000000000000ULL, { 0xEF36F51A70E1176AULL, 0xA373B6F68F5F81A1ULL } }, /* XSUM_XXH128_testdata[11220] */ + { 3740, 0x000000009E3779B1ULL, { 0xA3EFC18F66F6AD1DULL, 0xAEFF16D2078C4377ULL } }, /* XSUM_XXH128_testdata[11221] */ + { 3740, 0x9E3779B185EBCA8DULL, { 0xD79EB7C11F7D73C7ULL, 0xE63450ED9905911CULL } }, /* XSUM_XXH128_testdata[11222] */ + { 3741, 0x0000000000000000ULL, { 0x160D545C4F12D175ULL, 0x1D5A20F07E7620C4ULL } }, /* XSUM_XXH128_testdata[11223] */ + { 3741, 0x000000009E3779B1ULL, { 0x1784084BA1B9D040ULL, 0x9AE7EE85F105CF79ULL } }, /* XSUM_XXH128_testdata[11224] */ + { 3741, 0x9E3779B185EBCA8DULL, { 0x23083B142A17BCCCULL, 0x7D73DC342C3770B7ULL } }, /* XSUM_XXH128_testdata[11225] */ + { 3742, 0x0000000000000000ULL, { 0x048D23A67900441DULL, 0x3A98E948103DDE29ULL } }, /* XSUM_XXH128_testdata[11226] */ + { 3742, 0x000000009E3779B1ULL, { 0xEEADB50B4E0592EBULL, 0x949D4635541BA210ULL } }, /* XSUM_XXH128_testdata[11227] */ + { 3742, 0x9E3779B185EBCA8DULL, { 0x94858FFC745EDE56ULL, 0xEDB1D652F9BA6F8AULL } }, /* XSUM_XXH128_testdata[11228] */ + { 3743, 0x0000000000000000ULL, { 0x8F8E421BB56A72D7ULL, 0x9C4D29AB63A24A1BULL } }, /* XSUM_XXH128_testdata[11229] */ + { 3743, 0x000000009E3779B1ULL, { 0x516E2C9CD2DA80C2ULL, 0xCD04E419C3A2F6DFULL } }, /* XSUM_XXH128_testdata[11230] */ + { 3743, 0x9E3779B185EBCA8DULL, { 0x211E8D9A2B00DFBEULL, 0x9CEAC7BCA938E3C9ULL } }, /* XSUM_XXH128_testdata[11231] */ + { 3744, 0x0000000000000000ULL, { 0x6FDA6CC50FFF775EULL, 0xED28AA70AE51B0B3ULL } }, /* XSUM_XXH128_testdata[11232] */ + { 3744, 0x000000009E3779B1ULL, { 0xE325E6B60F472343ULL, 0xD6B5532DE22EF177ULL } }, /* XSUM_XXH128_testdata[11233] */ + { 3744, 0x9E3779B185EBCA8DULL, { 0x6B9BB526E508A2A4ULL, 0xB00E7849858C8E02ULL } }, /* XSUM_XXH128_testdata[11234] */ + { 3745, 0x0000000000000000ULL, { 0xCBE92041CADA6769ULL, 0xD2BE60A51B74F98DULL } }, /* XSUM_XXH128_testdata[11235] */ + { 3745, 0x000000009E3779B1ULL, { 0x4E585F34477B4B8FULL, 0x6BB7D8280C91D380ULL } }, /* XSUM_XXH128_testdata[11236] */ + { 3745, 0x9E3779B185EBCA8DULL, { 0x7A374D815AD594DBULL, 0x05B4F889632711D2ULL } }, /* XSUM_XXH128_testdata[11237] */ + { 3746, 0x0000000000000000ULL, { 0x196895C9869F0984ULL, 0xDE642DB0DD1257F2ULL } }, /* XSUM_XXH128_testdata[11238] */ + { 3746, 0x000000009E3779B1ULL, { 0xEB8DF83B8930DB09ULL, 0xDF5B0CF9F69D62C3ULL } }, /* XSUM_XXH128_testdata[11239] */ + { 3746, 0x9E3779B185EBCA8DULL, { 0x8954653330AA1AEDULL, 0x5333431A220B8914ULL } }, /* XSUM_XXH128_testdata[11240] */ + { 3747, 0x0000000000000000ULL, { 0x21DAA55D79F707B1ULL, 0x092B6BB14DB0919BULL } }, /* XSUM_XXH128_testdata[11241] */ + { 3747, 0x000000009E3779B1ULL, { 0x38CD071C3ABBA87CULL, 0x0C3E427D8A89D0E2ULL } }, /* XSUM_XXH128_testdata[11242] */ + { 3747, 0x9E3779B185EBCA8DULL, { 0x4066CC6D67A45999ULL, 0x1C2FE1A6D364CA44ULL } }, /* XSUM_XXH128_testdata[11243] */ + { 3748, 0x0000000000000000ULL, { 0x216E93059BA46330ULL, 0x0133416989E276CCULL } }, /* XSUM_XXH128_testdata[11244] */ + { 3748, 0x000000009E3779B1ULL, { 0x92AE5F315C039072ULL, 0x350D87C0EF482763ULL } }, /* XSUM_XXH128_testdata[11245] */ + { 3748, 0x9E3779B185EBCA8DULL, { 0xA03B92EF3F4FCB50ULL, 0x7827DFC27C42667DULL } }, /* XSUM_XXH128_testdata[11246] */ + { 3749, 0x0000000000000000ULL, { 0x17CC59CD036A9607ULL, 0x2240E28E0A33ECB7ULL } }, /* XSUM_XXH128_testdata[11247] */ + { 3749, 0x000000009E3779B1ULL, { 0x6B9E22A936A8AC05ULL, 0x90E75538051E440DULL } }, /* XSUM_XXH128_testdata[11248] */ + { 3749, 0x9E3779B185EBCA8DULL, { 0xC0F9FF0DD0F46AE4ULL, 0xE83204A900D53AA1ULL } }, /* XSUM_XXH128_testdata[11249] */ + { 3750, 0x0000000000000000ULL, { 0xE386F95CAF4835E8ULL, 0xE77FFC632C8A3968ULL } }, /* XSUM_XXH128_testdata[11250] */ + { 3750, 0x000000009E3779B1ULL, { 0xE2E23A7146297580ULL, 0xA71A0EE6AC796672ULL } }, /* XSUM_XXH128_testdata[11251] */ + { 3750, 0x9E3779B185EBCA8DULL, { 0xBA62D59E44DCBFA7ULL, 0xCADDC509F4B2BCA7ULL } }, /* XSUM_XXH128_testdata[11252] */ + { 3751, 0x0000000000000000ULL, { 0xEF18B53F73CD64B5ULL, 0xAC4C290DA6366B5CULL } }, /* XSUM_XXH128_testdata[11253] */ + { 3751, 0x000000009E3779B1ULL, { 0xD90451100183BA5CULL, 0x459BE1ABD60687C2ULL } }, /* XSUM_XXH128_testdata[11254] */ + { 3751, 0x9E3779B185EBCA8DULL, { 0xE9E2FDDFF4EB6712ULL, 0xE23F282CF45B44DCULL } }, /* XSUM_XXH128_testdata[11255] */ + { 3752, 0x0000000000000000ULL, { 0x5E536EED5442A058ULL, 0xDF82CAF1B56336D2ULL } }, /* XSUM_XXH128_testdata[11256] */ + { 3752, 0x000000009E3779B1ULL, { 0x2DD9979CB36BF94EULL, 0x583F78BEAAAABD4BULL } }, /* XSUM_XXH128_testdata[11257] */ + { 3752, 0x9E3779B185EBCA8DULL, { 0xD56F640E0C162CF7ULL, 0x25AE96FA7FCBA255ULL } }, /* XSUM_XXH128_testdata[11258] */ + { 3753, 0x0000000000000000ULL, { 0x74EF504AF879B808ULL, 0x45FE94533D025921ULL } }, /* XSUM_XXH128_testdata[11259] */ + { 3753, 0x000000009E3779B1ULL, { 0x045D1BF56C76B3C4ULL, 0x9BB2A62D6BD90700ULL } }, /* XSUM_XXH128_testdata[11260] */ + { 3753, 0x9E3779B185EBCA8DULL, { 0x709127F88C3DF13CULL, 0x43614B7CD5AFE794ULL } }, /* XSUM_XXH128_testdata[11261] */ + { 3754, 0x0000000000000000ULL, { 0x31C9008085741884ULL, 0xF2E091E9654A485FULL } }, /* XSUM_XXH128_testdata[11262] */ + { 3754, 0x000000009E3779B1ULL, { 0xAFBFA1DDC0FEB4F4ULL, 0x4982B2E21AE54EF2ULL } }, /* XSUM_XXH128_testdata[11263] */ + { 3754, 0x9E3779B185EBCA8DULL, { 0x93365D974F825F2FULL, 0x0D9CAE33F36FBC4CULL } }, /* XSUM_XXH128_testdata[11264] */ + { 3755, 0x0000000000000000ULL, { 0xF31CDEF874993121ULL, 0x5B5AB0F096599FCDULL } }, /* XSUM_XXH128_testdata[11265] */ + { 3755, 0x000000009E3779B1ULL, { 0x3BE4523D6C0C4005ULL, 0x44F8F3C74158C9FEULL } }, /* XSUM_XXH128_testdata[11266] */ + { 3755, 0x9E3779B185EBCA8DULL, { 0x3A5237AB9C4B9DABULL, 0xFAF7B7983D145F56ULL } }, /* XSUM_XXH128_testdata[11267] */ + { 3756, 0x0000000000000000ULL, { 0x875A6A708A10D7A5ULL, 0xCFB5CA809EEDFA3AULL } }, /* XSUM_XXH128_testdata[11268] */ + { 3756, 0x000000009E3779B1ULL, { 0xEAE38F466D89B090ULL, 0xAF8716FC1D295858ULL } }, /* XSUM_XXH128_testdata[11269] */ + { 3756, 0x9E3779B185EBCA8DULL, { 0x647D099636D67886ULL, 0xD5199F699BEFDC51ULL } }, /* XSUM_XXH128_testdata[11270] */ + { 3757, 0x0000000000000000ULL, { 0xDA5F418C0C48B9F3ULL, 0xFE2D0153FCBD7BF8ULL } }, /* XSUM_XXH128_testdata[11271] */ + { 3757, 0x000000009E3779B1ULL, { 0x6D589A64E38DDB74ULL, 0xF47CD2E79222D9F4ULL } }, /* XSUM_XXH128_testdata[11272] */ + { 3757, 0x9E3779B185EBCA8DULL, { 0xDD5E0A89173AC558ULL, 0xAF7B4C217D5403B5ULL } }, /* XSUM_XXH128_testdata[11273] */ + { 3758, 0x0000000000000000ULL, { 0xE4FD66CE689C4C38ULL, 0x7B15F2822AFDE326ULL } }, /* XSUM_XXH128_testdata[11274] */ + { 3758, 0x000000009E3779B1ULL, { 0xACDBDA0BA80F9121ULL, 0xDA912F5D164C2C1FULL } }, /* XSUM_XXH128_testdata[11275] */ + { 3758, 0x9E3779B185EBCA8DULL, { 0x6B1D2773AB1C257EULL, 0xE7845F6D955ECDEFULL } }, /* XSUM_XXH128_testdata[11276] */ + { 3759, 0x0000000000000000ULL, { 0xA33D54DF0582FDD3ULL, 0x10488296CE454F49ULL } }, /* XSUM_XXH128_testdata[11277] */ + { 3759, 0x000000009E3779B1ULL, { 0xD20E38D7743C7502ULL, 0x76CF6887C7B0BCDCULL } }, /* XSUM_XXH128_testdata[11278] */ + { 3759, 0x9E3779B185EBCA8DULL, { 0xBD4FD631EF67C7ACULL, 0xE4DB5E33AD8BBFB6ULL } }, /* XSUM_XXH128_testdata[11279] */ + { 3760, 0x0000000000000000ULL, { 0xCE4B2BC11D0DD601ULL, 0xCDBFBD8E2B0E9E98ULL } }, /* XSUM_XXH128_testdata[11280] */ + { 3760, 0x000000009E3779B1ULL, { 0x141AF48ED1DDF5B2ULL, 0x97D772B512714469ULL } }, /* XSUM_XXH128_testdata[11281] */ + { 3760, 0x9E3779B185EBCA8DULL, { 0xE6D4C63D68AFE2E4ULL, 0xC9CB4CF6EFCEA902ULL } }, /* XSUM_XXH128_testdata[11282] */ + { 3761, 0x0000000000000000ULL, { 0xF3ACB5DDFDC8EC24ULL, 0xC434A4CF2A319A33ULL } }, /* XSUM_XXH128_testdata[11283] */ + { 3761, 0x000000009E3779B1ULL, { 0x25A76D887AEC9862ULL, 0x5228E15A90691AF3ULL } }, /* XSUM_XXH128_testdata[11284] */ + { 3761, 0x9E3779B185EBCA8DULL, { 0xC44120D54A8C985BULL, 0xEAFD755338A17C9AULL } }, /* XSUM_XXH128_testdata[11285] */ + { 3762, 0x0000000000000000ULL, { 0xE1DBF7FFD31762EDULL, 0x63F7F891B3A775DAULL } }, /* XSUM_XXH128_testdata[11286] */ + { 3762, 0x000000009E3779B1ULL, { 0x16A36BD9E28C3411ULL, 0x78299D886F5E9C34ULL } }, /* XSUM_XXH128_testdata[11287] */ + { 3762, 0x9E3779B185EBCA8DULL, { 0xDE71A2766082AF5CULL, 0x3EC9DE6A705B960FULL } }, /* XSUM_XXH128_testdata[11288] */ + { 3763, 0x0000000000000000ULL, { 0x99D0CA424979CFC4ULL, 0x7E0D7CA000B7C399ULL } }, /* XSUM_XXH128_testdata[11289] */ + { 3763, 0x000000009E3779B1ULL, { 0xB63E386399A298D4ULL, 0x29E63D91C2ECC74FULL } }, /* XSUM_XXH128_testdata[11290] */ + { 3763, 0x9E3779B185EBCA8DULL, { 0x77DE869DB10834A6ULL, 0x7D55D3ECEEE26A18ULL } }, /* XSUM_XXH128_testdata[11291] */ + { 3764, 0x0000000000000000ULL, { 0x975000D6E24B65AAULL, 0xDE2817EF0B8F078CULL } }, /* XSUM_XXH128_testdata[11292] */ + { 3764, 0x000000009E3779B1ULL, { 0x3ABDCDC5BFB5C2A4ULL, 0x468E2C5B7F8CCAF2ULL } }, /* XSUM_XXH128_testdata[11293] */ + { 3764, 0x9E3779B185EBCA8DULL, { 0x27C414411195A2B6ULL, 0x9202B8BDF7D1B09EULL } }, /* XSUM_XXH128_testdata[11294] */ + { 3765, 0x0000000000000000ULL, { 0xA54B018E1EA523E1ULL, 0xB9FA2B16B62C3C0BULL } }, /* XSUM_XXH128_testdata[11295] */ + { 3765, 0x000000009E3779B1ULL, { 0x589A37D2AE1F8966ULL, 0xDA0055418797F344ULL } }, /* XSUM_XXH128_testdata[11296] */ + { 3765, 0x9E3779B185EBCA8DULL, { 0x9A3775C8860D1647ULL, 0xB9FD799F1DEF3671ULL } }, /* XSUM_XXH128_testdata[11297] */ + { 3766, 0x0000000000000000ULL, { 0xF6CC319B0CE415ABULL, 0xE8E06D7BF1F716E1ULL } }, /* XSUM_XXH128_testdata[11298] */ + { 3766, 0x000000009E3779B1ULL, { 0x9182DE762EFAB8C0ULL, 0xBDD0B5B243A52555ULL } }, /* XSUM_XXH128_testdata[11299] */ + { 3766, 0x9E3779B185EBCA8DULL, { 0x43D40AFB31D7B9A4ULL, 0x8C8CCAAFABF9E82DULL } }, /* XSUM_XXH128_testdata[11300] */ + { 3767, 0x0000000000000000ULL, { 0xC92638F48F4B4B4AULL, 0xAE1F5D31382FCD3AULL } }, /* XSUM_XXH128_testdata[11301] */ + { 3767, 0x000000009E3779B1ULL, { 0x02430DC2F9D76778ULL, 0xCD05E23D74029EFEULL } }, /* XSUM_XXH128_testdata[11302] */ + { 3767, 0x9E3779B185EBCA8DULL, { 0xC684479AE4E462D9ULL, 0xA0555C96A0D99C1FULL } }, /* XSUM_XXH128_testdata[11303] */ + { 3768, 0x0000000000000000ULL, { 0xFAF863BB0FAB5D63ULL, 0xDE1238AFAA39B6B9ULL } }, /* XSUM_XXH128_testdata[11304] */ + { 3768, 0x000000009E3779B1ULL, { 0x9260CC73DEEC55BEULL, 0x32C6C9AE257167EAULL } }, /* XSUM_XXH128_testdata[11305] */ + { 3768, 0x9E3779B185EBCA8DULL, { 0x531FEDD7E49D2C4BULL, 0x670890DAA748411FULL } }, /* XSUM_XXH128_testdata[11306] */ + { 3769, 0x0000000000000000ULL, { 0x936B400D1810CBF7ULL, 0x9302F8F85AE0B7A2ULL } }, /* XSUM_XXH128_testdata[11307] */ + { 3769, 0x000000009E3779B1ULL, { 0x407ECA0F137EC118ULL, 0x8390909AB17CF0A3ULL } }, /* XSUM_XXH128_testdata[11308] */ + { 3769, 0x9E3779B185EBCA8DULL, { 0x9489255C446C1ED3ULL, 0x326E78039F307780ULL } }, /* XSUM_XXH128_testdata[11309] */ + { 3770, 0x0000000000000000ULL, { 0x36C6AE290EEB1E47ULL, 0xD5976CFEB7363A93ULL } }, /* XSUM_XXH128_testdata[11310] */ + { 3770, 0x000000009E3779B1ULL, { 0xD74AEF1F3B72178EULL, 0xDFCA695A9A1A0DF3ULL } }, /* XSUM_XXH128_testdata[11311] */ + { 3770, 0x9E3779B185EBCA8DULL, { 0xC90A24A12D3173B1ULL, 0xB7E9DEF92DDB4209ULL } }, /* XSUM_XXH128_testdata[11312] */ + { 3771, 0x0000000000000000ULL, { 0xBD2E90F967E0ECF0ULL, 0xF58C9D4F51F721B3ULL } }, /* XSUM_XXH128_testdata[11313] */ + { 3771, 0x000000009E3779B1ULL, { 0xA6B4BBC245B78614ULL, 0xEF295BDABDC1E162ULL } }, /* XSUM_XXH128_testdata[11314] */ + { 3771, 0x9E3779B185EBCA8DULL, { 0xEEBCE2936136164DULL, 0x28FA56EB44BA8EBBULL } }, /* XSUM_XXH128_testdata[11315] */ + { 3772, 0x0000000000000000ULL, { 0xE2D79A3537258580ULL, 0xED685FA9917CA0CBULL } }, /* XSUM_XXH128_testdata[11316] */ + { 3772, 0x000000009E3779B1ULL, { 0xA3F3409C87382FFDULL, 0x4CE365779DAC9051ULL } }, /* XSUM_XXH128_testdata[11317] */ + { 3772, 0x9E3779B185EBCA8DULL, { 0xB82F0C39B6C843BAULL, 0x29C383289508A400ULL } }, /* XSUM_XXH128_testdata[11318] */ + { 3773, 0x0000000000000000ULL, { 0x62065EAA58ACED1FULL, 0xC6454F2B437F2075ULL } }, /* XSUM_XXH128_testdata[11319] */ + { 3773, 0x000000009E3779B1ULL, { 0xBA4EC63A5B1259AFULL, 0x629664B198C18588ULL } }, /* XSUM_XXH128_testdata[11320] */ + { 3773, 0x9E3779B185EBCA8DULL, { 0x7E043B40F0E105EDULL, 0x3582E238724708A3ULL } }, /* XSUM_XXH128_testdata[11321] */ + { 3774, 0x0000000000000000ULL, { 0x4CF30A36BCB03B2EULL, 0x0DDFC31C9FC37D96ULL } }, /* XSUM_XXH128_testdata[11322] */ + { 3774, 0x000000009E3779B1ULL, { 0x63423F901114B8B4ULL, 0x9616DC76C52D3ABEULL } }, /* XSUM_XXH128_testdata[11323] */ + { 3774, 0x9E3779B185EBCA8DULL, { 0x0113534F920D555BULL, 0x8A381B69CF4FCA5DULL } }, /* XSUM_XXH128_testdata[11324] */ + { 3775, 0x0000000000000000ULL, { 0x6100353633C7FE15ULL, 0x6EF3CE2854857B79ULL } }, /* XSUM_XXH128_testdata[11325] */ + { 3775, 0x000000009E3779B1ULL, { 0x66168A0C2BCD64ECULL, 0x84C05740993A3AACULL } }, /* XSUM_XXH128_testdata[11326] */ + { 3775, 0x9E3779B185EBCA8DULL, { 0xC6BF443448301C81ULL, 0x09E260690336897BULL } }, /* XSUM_XXH128_testdata[11327] */ + { 3776, 0x0000000000000000ULL, { 0xE8420EE21D49B572ULL, 0x7ADC59C3769CBBE0ULL } }, /* XSUM_XXH128_testdata[11328] */ + { 3776, 0x000000009E3779B1ULL, { 0x75C221C0FFB88069ULL, 0x7DB368262ECEFE14ULL } }, /* XSUM_XXH128_testdata[11329] */ + { 3776, 0x9E3779B185EBCA8DULL, { 0xE3B0A466F0E12001ULL, 0xF92F3E027DB1C1E7ULL } }, /* XSUM_XXH128_testdata[11330] */ + { 3777, 0x0000000000000000ULL, { 0xAFAA257A326E94E4ULL, 0xA2A8FE8890685564ULL } }, /* XSUM_XXH128_testdata[11331] */ + { 3777, 0x000000009E3779B1ULL, { 0xF540B107B86A9BF3ULL, 0x4707A0E427EF2DB9ULL } }, /* XSUM_XXH128_testdata[11332] */ + { 3777, 0x9E3779B185EBCA8DULL, { 0xFD746ED0FC69F1E7ULL, 0xFD2AA537C1DD7374ULL } }, /* XSUM_XXH128_testdata[11333] */ + { 3778, 0x0000000000000000ULL, { 0xE9561BBFF4B01599ULL, 0xEF7DF517AF2B2976ULL } }, /* XSUM_XXH128_testdata[11334] */ + { 3778, 0x000000009E3779B1ULL, { 0xDD89DBFEEE433155ULL, 0x31827AD72061AE41ULL } }, /* XSUM_XXH128_testdata[11335] */ + { 3778, 0x9E3779B185EBCA8DULL, { 0xBE1594C86FAC1BF5ULL, 0xAC48E51700379EF0ULL } }, /* XSUM_XXH128_testdata[11336] */ + { 3779, 0x0000000000000000ULL, { 0x7E8AB13F37EE7041ULL, 0x4AD153482F4A26A6ULL } }, /* XSUM_XXH128_testdata[11337] */ + { 3779, 0x000000009E3779B1ULL, { 0x63E162E49EE0F930ULL, 0xBFFA5F4C18D0B4BBULL } }, /* XSUM_XXH128_testdata[11338] */ + { 3779, 0x9E3779B185EBCA8DULL, { 0xD98F596960FACA4DULL, 0x980F9A1C7FA40767ULL } }, /* XSUM_XXH128_testdata[11339] */ + { 3780, 0x0000000000000000ULL, { 0xA6BB97D10685E042ULL, 0x35A7C298B366E4F3ULL } }, /* XSUM_XXH128_testdata[11340] */ + { 3780, 0x000000009E3779B1ULL, { 0x6D58750BAFDED0F1ULL, 0x8CB0CC728605D512ULL } }, /* XSUM_XXH128_testdata[11341] */ + { 3780, 0x9E3779B185EBCA8DULL, { 0x77C69B6342E274D4ULL, 0x7697AA6C2B2A5F1EULL } }, /* XSUM_XXH128_testdata[11342] */ + { 3781, 0x0000000000000000ULL, { 0xB82179D7EE7EAF5BULL, 0x165838706B00CB48ULL } }, /* XSUM_XXH128_testdata[11343] */ + { 3781, 0x000000009E3779B1ULL, { 0xC0A74104342EC47FULL, 0x5CC70EE16F380D32ULL } }, /* XSUM_XXH128_testdata[11344] */ + { 3781, 0x9E3779B185EBCA8DULL, { 0xF87D2038BD1BC882ULL, 0x9A71864A4FE91DB8ULL } }, /* XSUM_XXH128_testdata[11345] */ + { 3782, 0x0000000000000000ULL, { 0x709C23CE41B289ACULL, 0xE2A694EFD3DCB74FULL } }, /* XSUM_XXH128_testdata[11346] */ + { 3782, 0x000000009E3779B1ULL, { 0x164F5CF6D30BF3A5ULL, 0xAD84F7622C13EEAFULL } }, /* XSUM_XXH128_testdata[11347] */ + { 3782, 0x9E3779B185EBCA8DULL, { 0xA6602D9C1A23DC28ULL, 0x7C10EC3CF3699A32ULL } }, /* XSUM_XXH128_testdata[11348] */ + { 3783, 0x0000000000000000ULL, { 0x736F72A6C444DA78ULL, 0x7CAF8982A7B9B62AULL } }, /* XSUM_XXH128_testdata[11349] */ + { 3783, 0x000000009E3779B1ULL, { 0x532306868BA3D715ULL, 0xC27428D1C3E220A5ULL } }, /* XSUM_XXH128_testdata[11350] */ + { 3783, 0x9E3779B185EBCA8DULL, { 0x1CB370300838B920ULL, 0xE8A60822A89A0EE4ULL } }, /* XSUM_XXH128_testdata[11351] */ + { 3784, 0x0000000000000000ULL, { 0x0F0D57103217BA27ULL, 0x7BFFE9C443D4B751ULL } }, /* XSUM_XXH128_testdata[11352] */ + { 3784, 0x000000009E3779B1ULL, { 0x59C5634FAEEDC803ULL, 0x4C6173DF0D585F00ULL } }, /* XSUM_XXH128_testdata[11353] */ + { 3784, 0x9E3779B185EBCA8DULL, { 0x64DA519F00FDA8D4ULL, 0x9B3E1646B9160E16ULL } }, /* XSUM_XXH128_testdata[11354] */ + { 3785, 0x0000000000000000ULL, { 0x4FEE2E01ADA875C5ULL, 0xF6EB77731E60C1CBULL } }, /* XSUM_XXH128_testdata[11355] */ + { 3785, 0x000000009E3779B1ULL, { 0x619F1086E9FB35A1ULL, 0x0A879EA3E5FAD9C1ULL } }, /* XSUM_XXH128_testdata[11356] */ + { 3785, 0x9E3779B185EBCA8DULL, { 0x4BD896C9647748E1ULL, 0x80BAC7D0B77B9A5CULL } }, /* XSUM_XXH128_testdata[11357] */ + { 3786, 0x0000000000000000ULL, { 0x0B815A4597CC8A93ULL, 0xF1E04E8354EFB190ULL } }, /* XSUM_XXH128_testdata[11358] */ + { 3786, 0x000000009E3779B1ULL, { 0xE8B8AEBCA9A78505ULL, 0x5216911357B4A00AULL } }, /* XSUM_XXH128_testdata[11359] */ + { 3786, 0x9E3779B185EBCA8DULL, { 0x179708F028180C05ULL, 0xCF244F8AEAFABA3FULL } }, /* XSUM_XXH128_testdata[11360] */ + { 3787, 0x0000000000000000ULL, { 0x5F3AC5FDB80B57A7ULL, 0x3B5ED5FF9EF3C60DULL } }, /* XSUM_XXH128_testdata[11361] */ + { 3787, 0x000000009E3779B1ULL, { 0x01B7EC93D0E819B3ULL, 0x2DB2B3799FB26A3FULL } }, /* XSUM_XXH128_testdata[11362] */ + { 3787, 0x9E3779B185EBCA8DULL, { 0x37CF4C5F23A586CAULL, 0x85FE64CECDF0083EULL } }, /* XSUM_XXH128_testdata[11363] */ + { 3788, 0x0000000000000000ULL, { 0x1B1627FE3E596885ULL, 0xA3D373EAA6A05C4FULL } }, /* XSUM_XXH128_testdata[11364] */ + { 3788, 0x000000009E3779B1ULL, { 0xA269ED965720AF0EULL, 0x09555BA0A5CB79CEULL } }, /* XSUM_XXH128_testdata[11365] */ + { 3788, 0x9E3779B185EBCA8DULL, { 0xBD6F7FC73C8E3F7EULL, 0x7374EB58C1CFC4B9ULL } }, /* XSUM_XXH128_testdata[11366] */ + { 3789, 0x0000000000000000ULL, { 0x5DE097996C083E3FULL, 0xA3FB0BC562CEFB89ULL } }, /* XSUM_XXH128_testdata[11367] */ + { 3789, 0x000000009E3779B1ULL, { 0xEA62A70F2C37023EULL, 0x956CD8322CAE7539ULL } }, /* XSUM_XXH128_testdata[11368] */ + { 3789, 0x9E3779B185EBCA8DULL, { 0x06B38612D639C2E8ULL, 0xCDEFEA0876AEDF66ULL } }, /* XSUM_XXH128_testdata[11369] */ + { 3790, 0x0000000000000000ULL, { 0x959D554BBC464D43ULL, 0x49ECE9B0E387EBBFULL } }, /* XSUM_XXH128_testdata[11370] */ + { 3790, 0x000000009E3779B1ULL, { 0xF312C5A1BFFFCE54ULL, 0xDCB904D63E38364FULL } }, /* XSUM_XXH128_testdata[11371] */ + { 3790, 0x9E3779B185EBCA8DULL, { 0xE3DB7878B20B2A65ULL, 0x5CD401FC646B5F30ULL } }, /* XSUM_XXH128_testdata[11372] */ + { 3791, 0x0000000000000000ULL, { 0x287E3D544D49AD56ULL, 0x95748ECB2CD057D3ULL } }, /* XSUM_XXH128_testdata[11373] */ + { 3791, 0x000000009E3779B1ULL, { 0x4FC3802422F001D0ULL, 0x08BC9B13B24829B3ULL } }, /* XSUM_XXH128_testdata[11374] */ + { 3791, 0x9E3779B185EBCA8DULL, { 0x340C1FE8159512DCULL, 0x6B421B1AFEE6D1C5ULL } }, /* XSUM_XXH128_testdata[11375] */ + { 3792, 0x0000000000000000ULL, { 0xFCDCF7E2D3CED00EULL, 0xC2994A0CB4B921DDULL } }, /* XSUM_XXH128_testdata[11376] */ + { 3792, 0x000000009E3779B1ULL, { 0x83C53EE3B7510289ULL, 0xBDA5620C7D345F6BULL } }, /* XSUM_XXH128_testdata[11377] */ + { 3792, 0x9E3779B185EBCA8DULL, { 0xF43E42D4F8E31503ULL, 0x531E01E84B65F88BULL } }, /* XSUM_XXH128_testdata[11378] */ + { 3793, 0x0000000000000000ULL, { 0x96CF0C1327AD3362ULL, 0x3AE7607CE567A001ULL } }, /* XSUM_XXH128_testdata[11379] */ + { 3793, 0x000000009E3779B1ULL, { 0x792B4EDE0B7CF978ULL, 0xD95270356CEDD4F9ULL } }, /* XSUM_XXH128_testdata[11380] */ + { 3793, 0x9E3779B185EBCA8DULL, { 0x45F243F3B82BE91AULL, 0xE52F931044B372E6ULL } }, /* XSUM_XXH128_testdata[11381] */ + { 3794, 0x0000000000000000ULL, { 0x3B565B2DE1CBABB5ULL, 0x67BC8428BB65F494ULL } }, /* XSUM_XXH128_testdata[11382] */ + { 3794, 0x000000009E3779B1ULL, { 0x457B54F68430DCF8ULL, 0xBA5C2C68C916A7EBULL } }, /* XSUM_XXH128_testdata[11383] */ + { 3794, 0x9E3779B185EBCA8DULL, { 0x0BCAD4FB08542609ULL, 0xB7616EC938175BD2ULL } }, /* XSUM_XXH128_testdata[11384] */ + { 3795, 0x0000000000000000ULL, { 0xF4ED3DE0EB3AD21FULL, 0xCAABC86136634091ULL } }, /* XSUM_XXH128_testdata[11385] */ + { 3795, 0x000000009E3779B1ULL, { 0x9F682EC04AB727B3ULL, 0x1559CC1821A75493ULL } }, /* XSUM_XXH128_testdata[11386] */ + { 3795, 0x9E3779B185EBCA8DULL, { 0x00E30C8255DB84C8ULL, 0x1BB9FC441E693503ULL } }, /* XSUM_XXH128_testdata[11387] */ + { 3796, 0x0000000000000000ULL, { 0x218713C9DF900B36ULL, 0x57381453BC7D0A70ULL } }, /* XSUM_XXH128_testdata[11388] */ + { 3796, 0x000000009E3779B1ULL, { 0xD71F82AF46CB236AULL, 0x4F523B6561005C44ULL } }, /* XSUM_XXH128_testdata[11389] */ + { 3796, 0x9E3779B185EBCA8DULL, { 0xE0E1C94010401A39ULL, 0x1E7EBDF0A97A9874ULL } }, /* XSUM_XXH128_testdata[11390] */ + { 3797, 0x0000000000000000ULL, { 0x80041555230A1072ULL, 0x8DB7406216D37249ULL } }, /* XSUM_XXH128_testdata[11391] */ + { 3797, 0x000000009E3779B1ULL, { 0x9395B2BE0DF5D82FULL, 0x3EBCF63C32142C64ULL } }, /* XSUM_XXH128_testdata[11392] */ + { 3797, 0x9E3779B185EBCA8DULL, { 0x0D49454DCCCE0D97ULL, 0xF3EB96A4DAC4444BULL } }, /* XSUM_XXH128_testdata[11393] */ + { 3798, 0x0000000000000000ULL, { 0x9DBF4F510B64A4B9ULL, 0x38B9406EC9701D59ULL } }, /* XSUM_XXH128_testdata[11394] */ + { 3798, 0x000000009E3779B1ULL, { 0x9CACAE1B8FD02BF9ULL, 0x6293BD415A9D6DCBULL } }, /* XSUM_XXH128_testdata[11395] */ + { 3798, 0x9E3779B185EBCA8DULL, { 0x80D908F2C666246CULL, 0x5869A68E7FA30DF3ULL } }, /* XSUM_XXH128_testdata[11396] */ + { 3799, 0x0000000000000000ULL, { 0xCD5831EB3FAC6C57ULL, 0x8130994798006AA5ULL } }, /* XSUM_XXH128_testdata[11397] */ + { 3799, 0x000000009E3779B1ULL, { 0x6B32D39B79029FDAULL, 0xD23E072AF57B1086ULL } }, /* XSUM_XXH128_testdata[11398] */ + { 3799, 0x9E3779B185EBCA8DULL, { 0x8F65710EDCA4E40AULL, 0x743E66B137CEEF54ULL } }, /* XSUM_XXH128_testdata[11399] */ + { 3800, 0x0000000000000000ULL, { 0x55319685EA231551ULL, 0xE7F5D22B693CC550ULL } }, /* XSUM_XXH128_testdata[11400] */ + { 3800, 0x000000009E3779B1ULL, { 0x1C6353D39F53ED8DULL, 0x124A77284824D220ULL } }, /* XSUM_XXH128_testdata[11401] */ + { 3800, 0x9E3779B185EBCA8DULL, { 0x784A06EBD5A5170CULL, 0x68B150B91B66C081ULL } }, /* XSUM_XXH128_testdata[11402] */ + { 3801, 0x0000000000000000ULL, { 0x50DE87E1C2576530ULL, 0x23B276D7C010FBAAULL } }, /* XSUM_XXH128_testdata[11403] */ + { 3801, 0x000000009E3779B1ULL, { 0x87320E1B490F6650ULL, 0x5061878292BE0B8EULL } }, /* XSUM_XXH128_testdata[11404] */ + { 3801, 0x9E3779B185EBCA8DULL, { 0xDA8BA623A7F35CDBULL, 0x14312596138B8E59ULL } }, /* XSUM_XXH128_testdata[11405] */ + { 3802, 0x0000000000000000ULL, { 0xB74AA3DC57902ECFULL, 0x2827B6BE4F3279CFULL } }, /* XSUM_XXH128_testdata[11406] */ + { 3802, 0x000000009E3779B1ULL, { 0x7E687DF1BAD50A01ULL, 0x37319FA810D6A7ABULL } }, /* XSUM_XXH128_testdata[11407] */ + { 3802, 0x9E3779B185EBCA8DULL, { 0xBCA030E1B7BB43B0ULL, 0xEB2C3982A3F7C8E9ULL } }, /* XSUM_XXH128_testdata[11408] */ + { 3803, 0x0000000000000000ULL, { 0xEB098D224002D7F8ULL, 0xC651D98F26A5A008ULL } }, /* XSUM_XXH128_testdata[11409] */ + { 3803, 0x000000009E3779B1ULL, { 0xC4B9F5E10B502EBBULL, 0x7CB3A89A95CFD356ULL } }, /* XSUM_XXH128_testdata[11410] */ + { 3803, 0x9E3779B185EBCA8DULL, { 0x6156A394E2C83E1AULL, 0xAF38450754FE58AFULL } }, /* XSUM_XXH128_testdata[11411] */ + { 3804, 0x0000000000000000ULL, { 0xF3F724BAB2807C29ULL, 0x9CA85B5E5CA2C8CEULL } }, /* XSUM_XXH128_testdata[11412] */ + { 3804, 0x000000009E3779B1ULL, { 0x9B70503DCD6A45A5ULL, 0xF522A0D09AB8E1C9ULL } }, /* XSUM_XXH128_testdata[11413] */ + { 3804, 0x9E3779B185EBCA8DULL, { 0xAA319462EB330908ULL, 0x8F6A10448A81F4B7ULL } }, /* XSUM_XXH128_testdata[11414] */ + { 3805, 0x0000000000000000ULL, { 0x08BB557991858B15ULL, 0x22B0C27F2A4A6747ULL } }, /* XSUM_XXH128_testdata[11415] */ + { 3805, 0x000000009E3779B1ULL, { 0x4C2F97ABF400ABD0ULL, 0xB26109D1750B5567ULL } }, /* XSUM_XXH128_testdata[11416] */ + { 3805, 0x9E3779B185EBCA8DULL, { 0x27E91D67BEDAB3D8ULL, 0xC93AC748A8819355ULL } }, /* XSUM_XXH128_testdata[11417] */ + { 3806, 0x0000000000000000ULL, { 0xAC1E0A06014917C1ULL, 0x3F68CBB4A87812A7ULL } }, /* XSUM_XXH128_testdata[11418] */ + { 3806, 0x000000009E3779B1ULL, { 0x8DC1F636C4A0EE9AULL, 0x312014C9333CE70CULL } }, /* XSUM_XXH128_testdata[11419] */ + { 3806, 0x9E3779B185EBCA8DULL, { 0x1E20BBC3E6CBBA6AULL, 0xDB2A141A1AA4D477ULL } }, /* XSUM_XXH128_testdata[11420] */ + { 3807, 0x0000000000000000ULL, { 0x31B3D51B38C6F040ULL, 0xFCB291BBA7E42EE0ULL } }, /* XSUM_XXH128_testdata[11421] */ + { 3807, 0x000000009E3779B1ULL, { 0xC57946DB0ED71782ULL, 0x1CF840B6DE850149ULL } }, /* XSUM_XXH128_testdata[11422] */ + { 3807, 0x9E3779B185EBCA8DULL, { 0x66760B07932674DBULL, 0x802A2B55B1D395CEULL } }, /* XSUM_XXH128_testdata[11423] */ + { 3808, 0x0000000000000000ULL, { 0x83C42AA57DB30E65ULL, 0x71F3A1581218A140ULL } }, /* XSUM_XXH128_testdata[11424] */ + { 3808, 0x000000009E3779B1ULL, { 0xAD5AFC2C0996C586ULL, 0xECB09DA3EE6A7CB7ULL } }, /* XSUM_XXH128_testdata[11425] */ + { 3808, 0x9E3779B185EBCA8DULL, { 0xADB112A57B36D6E0ULL, 0xF0A24125A1E7ED89ULL } }, /* XSUM_XXH128_testdata[11426] */ + { 3809, 0x0000000000000000ULL, { 0xE7682750E2D6BC5AULL, 0xB1C54B2E920A4441ULL } }, /* XSUM_XXH128_testdata[11427] */ + { 3809, 0x000000009E3779B1ULL, { 0x847674272D15BC3DULL, 0x28D0441DCA413B47ULL } }, /* XSUM_XXH128_testdata[11428] */ + { 3809, 0x9E3779B185EBCA8DULL, { 0x4E16116791A49006ULL, 0x715AE99561DB4B23ULL } }, /* XSUM_XXH128_testdata[11429] */ + { 3810, 0x0000000000000000ULL, { 0xE06D01D13F1FA55AULL, 0x8F5B03FA15C7A022ULL } }, /* XSUM_XXH128_testdata[11430] */ + { 3810, 0x000000009E3779B1ULL, { 0x46D4C0DA75754224ULL, 0x529C8B2AC8CF568BULL } }, /* XSUM_XXH128_testdata[11431] */ + { 3810, 0x9E3779B185EBCA8DULL, { 0x8BD54EB7AB491CCEULL, 0x8C645D735F1067ADULL } }, /* XSUM_XXH128_testdata[11432] */ + { 3811, 0x0000000000000000ULL, { 0x3E830041BB06B48DULL, 0xFDC77CF6DB9DCA22ULL } }, /* XSUM_XXH128_testdata[11433] */ + { 3811, 0x000000009E3779B1ULL, { 0xF659B5AEEB4878D5ULL, 0x371DAC24164B202EULL } }, /* XSUM_XXH128_testdata[11434] */ + { 3811, 0x9E3779B185EBCA8DULL, { 0x40119B18809725E2ULL, 0x99BADD09006EA39AULL } }, /* XSUM_XXH128_testdata[11435] */ + { 3812, 0x0000000000000000ULL, { 0x7CF9C48F6C725792ULL, 0x99021D87AC9BFB6FULL } }, /* XSUM_XXH128_testdata[11436] */ + { 3812, 0x000000009E3779B1ULL, { 0x0C927CD700B6B3BCULL, 0x6449C4A4FEBDB7B9ULL } }, /* XSUM_XXH128_testdata[11437] */ + { 3812, 0x9E3779B185EBCA8DULL, { 0xAB4CD2FE7D072F0BULL, 0xEC35C2A7C3AE8717ULL } }, /* XSUM_XXH128_testdata[11438] */ + { 3813, 0x0000000000000000ULL, { 0xF43595034D2753A3ULL, 0x2075990F74F1B2FBULL } }, /* XSUM_XXH128_testdata[11439] */ + { 3813, 0x000000009E3779B1ULL, { 0xDB683EB290B3FAF5ULL, 0x0F39646B31F830DDULL } }, /* XSUM_XXH128_testdata[11440] */ + { 3813, 0x9E3779B185EBCA8DULL, { 0xFFC30A49AD2CF413ULL, 0x5E74C7C3D45422BFULL } }, /* XSUM_XXH128_testdata[11441] */ + { 3814, 0x0000000000000000ULL, { 0x0C6760FA6000CB2EULL, 0x487D7FDA1236AB2CULL } }, /* XSUM_XXH128_testdata[11442] */ + { 3814, 0x000000009E3779B1ULL, { 0xAFC951720F4F7AF4ULL, 0x9FFBB0B22E88AABFULL } }, /* XSUM_XXH128_testdata[11443] */ + { 3814, 0x9E3779B185EBCA8DULL, { 0x75E30859FAAB68C3ULL, 0x4C79995DE3048A87ULL } }, /* XSUM_XXH128_testdata[11444] */ + { 3815, 0x0000000000000000ULL, { 0x05CCA8A1304D5869ULL, 0x8FC16E429C4F96D8ULL } }, /* XSUM_XXH128_testdata[11445] */ + { 3815, 0x000000009E3779B1ULL, { 0x769DAC7D460101E3ULL, 0x7BBB4E9C8E00F07DULL } }, /* XSUM_XXH128_testdata[11446] */ + { 3815, 0x9E3779B185EBCA8DULL, { 0x982E92B57F6AB3CFULL, 0x0FB4787A06E3C9ADULL } }, /* XSUM_XXH128_testdata[11447] */ + { 3816, 0x0000000000000000ULL, { 0x04741578A20F332AULL, 0xC122F41E13903794ULL } }, /* XSUM_XXH128_testdata[11448] */ + { 3816, 0x000000009E3779B1ULL, { 0xE6B01BE96BAAEAA5ULL, 0x84A9664DCDC590BCULL } }, /* XSUM_XXH128_testdata[11449] */ + { 3816, 0x9E3779B185EBCA8DULL, { 0x524404074ACDC1F9ULL, 0x9CDC5C159985ABF5ULL } }, /* XSUM_XXH128_testdata[11450] */ + { 3817, 0x0000000000000000ULL, { 0x64B6259CEF4C025DULL, 0x8F285C09BD1D5283ULL } }, /* XSUM_XXH128_testdata[11451] */ + { 3817, 0x000000009E3779B1ULL, { 0xEBD0E314D4436DDCULL, 0x5333EF6E665DA7B6ULL } }, /* XSUM_XXH128_testdata[11452] */ + { 3817, 0x9E3779B185EBCA8DULL, { 0x95A71E8202E4ED0FULL, 0xF190822EEBFEDEF3ULL } }, /* XSUM_XXH128_testdata[11453] */ + { 3818, 0x0000000000000000ULL, { 0x9EAC34253F826437ULL, 0x5430B70E1303D48CULL } }, /* XSUM_XXH128_testdata[11454] */ + { 3818, 0x000000009E3779B1ULL, { 0xBDC7F393559DA295ULL, 0xBB41987CB7CE7410ULL } }, /* XSUM_XXH128_testdata[11455] */ + { 3818, 0x9E3779B185EBCA8DULL, { 0x63154BA10CE16DDEULL, 0xAEC2112308D5F675ULL } }, /* XSUM_XXH128_testdata[11456] */ + { 3819, 0x0000000000000000ULL, { 0x9394E2746D5D50FDULL, 0xF25932D9545DA636ULL } }, /* XSUM_XXH128_testdata[11457] */ + { 3819, 0x000000009E3779B1ULL, { 0x21CCE0690D0AD39EULL, 0x64BD8702BE7976E3ULL } }, /* XSUM_XXH128_testdata[11458] */ + { 3819, 0x9E3779B185EBCA8DULL, { 0x26657E7C4D0966AFULL, 0x2F378C949CE112F8ULL } }, /* XSUM_XXH128_testdata[11459] */ + { 3820, 0x0000000000000000ULL, { 0xF49F95900FF0F64AULL, 0x9D688F4A69A58B90ULL } }, /* XSUM_XXH128_testdata[11460] */ + { 3820, 0x000000009E3779B1ULL, { 0x37D16AFA6F6DDB98ULL, 0xB3C1426C3EC67B3AULL } }, /* XSUM_XXH128_testdata[11461] */ + { 3820, 0x9E3779B185EBCA8DULL, { 0x50DE1AF5E0A1786BULL, 0x9564CA30E0AA4962ULL } }, /* XSUM_XXH128_testdata[11462] */ + { 3821, 0x0000000000000000ULL, { 0xA7C52B25579548CFULL, 0x383995E747F07218ULL } }, /* XSUM_XXH128_testdata[11463] */ + { 3821, 0x000000009E3779B1ULL, { 0x9403FFC26DF3478EULL, 0x9FFAA17F9A3A1D31ULL } }, /* XSUM_XXH128_testdata[11464] */ + { 3821, 0x9E3779B185EBCA8DULL, { 0x803445AC31701E5BULL, 0xD3CD68E3EC343B80ULL } }, /* XSUM_XXH128_testdata[11465] */ + { 3822, 0x0000000000000000ULL, { 0x129E4B9E7B9C4CC6ULL, 0x169DD35A2031F3F9ULL } }, /* XSUM_XXH128_testdata[11466] */ + { 3822, 0x000000009E3779B1ULL, { 0x410BA71FB2AC7353ULL, 0x6C18DFA41CB013ABULL } }, /* XSUM_XXH128_testdata[11467] */ + { 3822, 0x9E3779B185EBCA8DULL, { 0xDD63AE21F81D9051ULL, 0xDB2648C090C9C6A4ULL } }, /* XSUM_XXH128_testdata[11468] */ + { 3823, 0x0000000000000000ULL, { 0xA6B93533FCF6680FULL, 0x83ADB93BB3A8D8C4ULL } }, /* XSUM_XXH128_testdata[11469] */ + { 3823, 0x000000009E3779B1ULL, { 0x44F3FD692F0D4450ULL, 0x7D981E51573000D1ULL } }, /* XSUM_XXH128_testdata[11470] */ + { 3823, 0x9E3779B185EBCA8DULL, { 0x238055088B737C05ULL, 0x94B279F8710EA2E1ULL } }, /* XSUM_XXH128_testdata[11471] */ + { 3824, 0x0000000000000000ULL, { 0x15EEECA90C7D8E6CULL, 0x4C63F97ECB314D5BULL } }, /* XSUM_XXH128_testdata[11472] */ + { 3824, 0x000000009E3779B1ULL, { 0x07DFAF4C292EA65BULL, 0x9898D53BD949E504ULL } }, /* XSUM_XXH128_testdata[11473] */ + { 3824, 0x9E3779B185EBCA8DULL, { 0x276385508D5FE2C9ULL, 0x5A0EBA7B68D2BCAAULL } }, /* XSUM_XXH128_testdata[11474] */ + { 3825, 0x0000000000000000ULL, { 0x5B97424C3116BBF8ULL, 0x5154B5B81ADCC7BFULL } }, /* XSUM_XXH128_testdata[11475] */ + { 3825, 0x000000009E3779B1ULL, { 0xF619DCB73C31CE86ULL, 0xB22C9D5F35806B66ULL } }, /* XSUM_XXH128_testdata[11476] */ + { 3825, 0x9E3779B185EBCA8DULL, { 0xF9E852C079609234ULL, 0x5F2B27A2CA6E6AE6ULL } }, /* XSUM_XXH128_testdata[11477] */ + { 3826, 0x0000000000000000ULL, { 0x1E218240A9F6FFBFULL, 0x173799DB502D920BULL } }, /* XSUM_XXH128_testdata[11478] */ + { 3826, 0x000000009E3779B1ULL, { 0xAB82BFEDFB0A84B8ULL, 0x72DEEFDBCC365F88ULL } }, /* XSUM_XXH128_testdata[11479] */ + { 3826, 0x9E3779B185EBCA8DULL, { 0xEB605BFADC7BAD5EULL, 0x749C392CA88CCC3FULL } }, /* XSUM_XXH128_testdata[11480] */ + { 3827, 0x0000000000000000ULL, { 0x602CF49EB3FBEFB2ULL, 0xB280424E07FE3B91ULL } }, /* XSUM_XXH128_testdata[11481] */ + { 3827, 0x000000009E3779B1ULL, { 0x3BD694120F70A468ULL, 0x5069B8B0DADF603FULL } }, /* XSUM_XXH128_testdata[11482] */ + { 3827, 0x9E3779B185EBCA8DULL, { 0xBEA5339614684102ULL, 0xEDF2164CF0391A34ULL } }, /* XSUM_XXH128_testdata[11483] */ + { 3828, 0x0000000000000000ULL, { 0x170EE6A51721F704ULL, 0x82232B2AE41059EBULL } }, /* XSUM_XXH128_testdata[11484] */ + { 3828, 0x000000009E3779B1ULL, { 0x7485E2711CA82409ULL, 0xA0A70099EE83A7A2ULL } }, /* XSUM_XXH128_testdata[11485] */ + { 3828, 0x9E3779B185EBCA8DULL, { 0x8521AC2AEDFAF055ULL, 0xE410F89B8F5F4C1CULL } }, /* XSUM_XXH128_testdata[11486] */ + { 3829, 0x0000000000000000ULL, { 0x5DBF5C8A8B7A6394ULL, 0xE797118812EE0974ULL } }, /* XSUM_XXH128_testdata[11487] */ + { 3829, 0x000000009E3779B1ULL, { 0xAEFB1AA4CE9A52C9ULL, 0x2E05575B90FF796EULL } }, /* XSUM_XXH128_testdata[11488] */ + { 3829, 0x9E3779B185EBCA8DULL, { 0x41BD4051EA4625BCULL, 0x5923E29329E9A852ULL } }, /* XSUM_XXH128_testdata[11489] */ + { 3830, 0x0000000000000000ULL, { 0xBCD0DD9C11D29C74ULL, 0xED760F6C6DD9F9D2ULL } }, /* XSUM_XXH128_testdata[11490] */ + { 3830, 0x000000009E3779B1ULL, { 0x8FE3D2B527272446ULL, 0xBD4234B96D0B8BE9ULL } }, /* XSUM_XXH128_testdata[11491] */ + { 3830, 0x9E3779B185EBCA8DULL, { 0x2B2C509F0EEBAEEDULL, 0x2CE85745BF134499ULL } }, /* XSUM_XXH128_testdata[11492] */ + { 3831, 0x0000000000000000ULL, { 0x8E7D6D42DE080846ULL, 0x2AA76EACD25E49FFULL } }, /* XSUM_XXH128_testdata[11493] */ + { 3831, 0x000000009E3779B1ULL, { 0x235CAD10068D8596ULL, 0x8167469F913133C9ULL } }, /* XSUM_XXH128_testdata[11494] */ + { 3831, 0x9E3779B185EBCA8DULL, { 0x381675387F62A07EULL, 0x20038B0D05ACE360ULL } }, /* XSUM_XXH128_testdata[11495] */ + { 3832, 0x0000000000000000ULL, { 0x427AEEED5B81FF59ULL, 0xEB76DDF77FB90276ULL } }, /* XSUM_XXH128_testdata[11496] */ + { 3832, 0x000000009E3779B1ULL, { 0xFB90DAB41028CC49ULL, 0x79507E73757A5798ULL } }, /* XSUM_XXH128_testdata[11497] */ + { 3832, 0x9E3779B185EBCA8DULL, { 0xD62C95F791FD61D5ULL, 0x7EA7BA3DDFCD148DULL } }, /* XSUM_XXH128_testdata[11498] */ + { 3833, 0x0000000000000000ULL, { 0x237BC2347EAC4315ULL, 0x5B2FC5F5142A4A3BULL } }, /* XSUM_XXH128_testdata[11499] */ + { 3833, 0x000000009E3779B1ULL, { 0x3A4398E2BC3516B2ULL, 0x22A1A6DBD7D3D5D0ULL } }, /* XSUM_XXH128_testdata[11500] */ + { 3833, 0x9E3779B185EBCA8DULL, { 0x24206F13857AB874ULL, 0x3C835F63314B0179ULL } }, /* XSUM_XXH128_testdata[11501] */ + { 3834, 0x0000000000000000ULL, { 0x52B2A1456A279CA8ULL, 0xB984C6F386C3B5A3ULL } }, /* XSUM_XXH128_testdata[11502] */ + { 3834, 0x000000009E3779B1ULL, { 0x6002603743D000F0ULL, 0xCC2C43955B94A4EBULL } }, /* XSUM_XXH128_testdata[11503] */ + { 3834, 0x9E3779B185EBCA8DULL, { 0xA4EAB214A87374DCULL, 0xFBF6DB2C5C79EE06ULL } }, /* XSUM_XXH128_testdata[11504] */ + { 3835, 0x0000000000000000ULL, { 0x509E1010C276C143ULL, 0x7761B229D6A2AD55ULL } }, /* XSUM_XXH128_testdata[11505] */ + { 3835, 0x000000009E3779B1ULL, { 0x10ED521489F68F36ULL, 0xA26DB854AAFCB643ULL } }, /* XSUM_XXH128_testdata[11506] */ + { 3835, 0x9E3779B185EBCA8DULL, { 0x0983CC6F9B4AAACCULL, 0x26B469D7F2D863E7ULL } }, /* XSUM_XXH128_testdata[11507] */ + { 3836, 0x0000000000000000ULL, { 0xCC438962ABBABA3CULL, 0x494158B38E9AB6F9ULL } }, /* XSUM_XXH128_testdata[11508] */ + { 3836, 0x000000009E3779B1ULL, { 0x8992096C6C1509ECULL, 0x7A445D83884D709FULL } }, /* XSUM_XXH128_testdata[11509] */ + { 3836, 0x9E3779B185EBCA8DULL, { 0x8251BE8005D1C985ULL, 0xA860616C526D2A66ULL } }, /* XSUM_XXH128_testdata[11510] */ + { 3837, 0x0000000000000000ULL, { 0x92910933B68434EEULL, 0xEE7F4CDDD13613F6ULL } }, /* XSUM_XXH128_testdata[11511] */ + { 3837, 0x000000009E3779B1ULL, { 0xACF2BF62E540FF4FULL, 0x169AAE974B9B9DD6ULL } }, /* XSUM_XXH128_testdata[11512] */ + { 3837, 0x9E3779B185EBCA8DULL, { 0xC47EED770A2B1125ULL, 0x6EA2FC2AFA4D2F95ULL } }, /* XSUM_XXH128_testdata[11513] */ + { 3838, 0x0000000000000000ULL, { 0x4597957723960669ULL, 0x7F5294FE997916C5ULL } }, /* XSUM_XXH128_testdata[11514] */ + { 3838, 0x000000009E3779B1ULL, { 0x4A8199406FD78A79ULL, 0xC1913579C1820924ULL } }, /* XSUM_XXH128_testdata[11515] */ + { 3838, 0x9E3779B185EBCA8DULL, { 0x0409143A4FBCF14EULL, 0x65176E8EFEE36956ULL } }, /* XSUM_XXH128_testdata[11516] */ + { 3839, 0x0000000000000000ULL, { 0x43E534929E376558ULL, 0xA86B25886DA77695ULL } }, /* XSUM_XXH128_testdata[11517] */ + { 3839, 0x000000009E3779B1ULL, { 0x441271B602DFABD2ULL, 0xED70470D98AC57F0ULL } }, /* XSUM_XXH128_testdata[11518] */ + { 3839, 0x9E3779B185EBCA8DULL, { 0xFC440769C76D630FULL, 0x0D73C43DEC667719ULL } }, /* XSUM_XXH128_testdata[11519] */ + { 3840, 0x0000000000000000ULL, { 0xEC86F51892999868ULL, 0x448D457A5B0F6F70ULL } }, /* XSUM_XXH128_testdata[11520] */ + { 3840, 0x000000009E3779B1ULL, { 0x51C1F0D60D35E41DULL, 0x829C4276DCA009BCULL } }, /* XSUM_XXH128_testdata[11521] */ + { 3840, 0x9E3779B185EBCA8DULL, { 0xF59832040C6E571AULL, 0x4F07E3AD63DA1EDEULL } }, /* XSUM_XXH128_testdata[11522] */ + { 3841, 0x0000000000000000ULL, { 0xA84A2444C316F722ULL, 0xB6AA94D572C3546DULL } }, /* XSUM_XXH128_testdata[11523] */ + { 3841, 0x000000009E3779B1ULL, { 0x985C168D2C796AD6ULL, 0x270C761628CDE0C6ULL } }, /* XSUM_XXH128_testdata[11524] */ + { 3841, 0x9E3779B185EBCA8DULL, { 0xAE2D8BE6079C85CAULL, 0x83168DA8BEE6B3B2ULL } }, /* XSUM_XXH128_testdata[11525] */ + { 3842, 0x0000000000000000ULL, { 0x62E5665E92C13BA8ULL, 0x6A5A7F75E0FA8E63ULL } }, /* XSUM_XXH128_testdata[11526] */ + { 3842, 0x000000009E3779B1ULL, { 0x3C4B840053DDD7F4ULL, 0x79372B579F778CACULL } }, /* XSUM_XXH128_testdata[11527] */ + { 3842, 0x9E3779B185EBCA8DULL, { 0x755E4A7DE36EC52BULL, 0x0D6E0A023C80ECBBULL } }, /* XSUM_XXH128_testdata[11528] */ + { 3843, 0x0000000000000000ULL, { 0xBE710E80296B648AULL, 0x85B99FA25FB258E3ULL } }, /* XSUM_XXH128_testdata[11529] */ + { 3843, 0x000000009E3779B1ULL, { 0x561DDE609CD1AC8DULL, 0x619647DDD58BDF4DULL } }, /* XSUM_XXH128_testdata[11530] */ + { 3843, 0x9E3779B185EBCA8DULL, { 0x3EC0D18D655F9064ULL, 0x4A7E1D568EA90908ULL } }, /* XSUM_XXH128_testdata[11531] */ + { 3844, 0x0000000000000000ULL, { 0x503F019B76F1B450ULL, 0xD38DE2DED968C42AULL } }, /* XSUM_XXH128_testdata[11532] */ + { 3844, 0x000000009E3779B1ULL, { 0xABC567B52AAAEB65ULL, 0xBB985F29E050D0E1ULL } }, /* XSUM_XXH128_testdata[11533] */ + { 3844, 0x9E3779B185EBCA8DULL, { 0xC8657E063E5D093AULL, 0x79DE4A36D60C8F9FULL } }, /* XSUM_XXH128_testdata[11534] */ + { 3845, 0x0000000000000000ULL, { 0xA308A478CCBF13A7ULL, 0x0F83FDB125724AC9ULL } }, /* XSUM_XXH128_testdata[11535] */ + { 3845, 0x000000009E3779B1ULL, { 0x6E351631DE8E9ACFULL, 0x71B1136EE7912A79ULL } }, /* XSUM_XXH128_testdata[11536] */ + { 3845, 0x9E3779B185EBCA8DULL, { 0x25D1CDAD516052B9ULL, 0x5ABE8D4B889D7310ULL } }, /* XSUM_XXH128_testdata[11537] */ + { 3846, 0x0000000000000000ULL, { 0x0E921949350C1841ULL, 0x1CB0AC27442B6DB3ULL } }, /* XSUM_XXH128_testdata[11538] */ + { 3846, 0x000000009E3779B1ULL, { 0x39F166A518C3EF1AULL, 0x6EEC1517D06F4FFAULL } }, /* XSUM_XXH128_testdata[11539] */ + { 3846, 0x9E3779B185EBCA8DULL, { 0xCCFCD31C9CB44682ULL, 0x15FF8F8E8E6A3C29ULL } }, /* XSUM_XXH128_testdata[11540] */ + { 3847, 0x0000000000000000ULL, { 0x383FE3A038136BC9ULL, 0x856C5FD4B063704AULL } }, /* XSUM_XXH128_testdata[11541] */ + { 3847, 0x000000009E3779B1ULL, { 0xA8E00174353ADB22ULL, 0xDACE410803CEC542ULL } }, /* XSUM_XXH128_testdata[11542] */ + { 3847, 0x9E3779B185EBCA8DULL, { 0x7FB2EE65825CB40BULL, 0xF70004EBF52C2DDDULL } }, /* XSUM_XXH128_testdata[11543] */ + { 3848, 0x0000000000000000ULL, { 0x234261DCB7E7BD4DULL, 0x76AED66080245F9BULL } }, /* XSUM_XXH128_testdata[11544] */ + { 3848, 0x000000009E3779B1ULL, { 0xCB3520152F876E90ULL, 0x922E1C0492CFEE36ULL } }, /* XSUM_XXH128_testdata[11545] */ + { 3848, 0x9E3779B185EBCA8DULL, { 0x19102C68BB066747ULL, 0x2F525BF484D8A64CULL } }, /* XSUM_XXH128_testdata[11546] */ + { 3849, 0x0000000000000000ULL, { 0x8D2300E3BC207CB3ULL, 0x947029C05BC7C2FCULL } }, /* XSUM_XXH128_testdata[11547] */ + { 3849, 0x000000009E3779B1ULL, { 0x3DDD32366BB9CE04ULL, 0x4F1E93341C53FD7CULL } }, /* XSUM_XXH128_testdata[11548] */ + { 3849, 0x9E3779B185EBCA8DULL, { 0x36DC82A6B9B2642AULL, 0x1F75C5AB88B51C55ULL } }, /* XSUM_XXH128_testdata[11549] */ + { 3850, 0x0000000000000000ULL, { 0x8D186332CB70251CULL, 0x4C89E59006671627ULL } }, /* XSUM_XXH128_testdata[11550] */ + { 3850, 0x000000009E3779B1ULL, { 0xEFC1AED3938498A1ULL, 0xC3D193328909B626ULL } }, /* XSUM_XXH128_testdata[11551] */ + { 3850, 0x9E3779B185EBCA8DULL, { 0x3E65E06E355242C0ULL, 0x994C2718F547064DULL } }, /* XSUM_XXH128_testdata[11552] */ + { 3851, 0x0000000000000000ULL, { 0x53204CE4BC1D9889ULL, 0x36E630E74B6C7C93ULL } }, /* XSUM_XXH128_testdata[11553] */ + { 3851, 0x000000009E3779B1ULL, { 0x75C78A91C1835C7DULL, 0xF265ECD31C485007ULL } }, /* XSUM_XXH128_testdata[11554] */ + { 3851, 0x9E3779B185EBCA8DULL, { 0xAA81059143B50B2FULL, 0x6D83D418E86A0EA0ULL } }, /* XSUM_XXH128_testdata[11555] */ + { 3852, 0x0000000000000000ULL, { 0x4DAB8DEE06B52323ULL, 0x0958E9196E843706ULL } }, /* XSUM_XXH128_testdata[11556] */ + { 3852, 0x000000009E3779B1ULL, { 0x9C55972F7CCED603ULL, 0x6B60B9C5FC8D0DF0ULL } }, /* XSUM_XXH128_testdata[11557] */ + { 3852, 0x9E3779B185EBCA8DULL, { 0x31B0BBA5A6B97F98ULL, 0xC3E81515A31B299EULL } }, /* XSUM_XXH128_testdata[11558] */ + { 3853, 0x0000000000000000ULL, { 0xC7FFE33A5C9C65ABULL, 0x43D87E9AD4D58750ULL } }, /* XSUM_XXH128_testdata[11559] */ + { 3853, 0x000000009E3779B1ULL, { 0xF38CE06CD6C718B7ULL, 0xD8C975DF5ADAD0FBULL } }, /* XSUM_XXH128_testdata[11560] */ + { 3853, 0x9E3779B185EBCA8DULL, { 0xA0D8601BA5E49E14ULL, 0x6B66A8AD1F4794E4ULL } }, /* XSUM_XXH128_testdata[11561] */ + { 3854, 0x0000000000000000ULL, { 0xAF15FAD96D19C7DDULL, 0xA71F4548C4620F4FULL } }, /* XSUM_XXH128_testdata[11562] */ + { 3854, 0x000000009E3779B1ULL, { 0x0C309123538C3CBDULL, 0x9D972B36EAD51004ULL } }, /* XSUM_XXH128_testdata[11563] */ + { 3854, 0x9E3779B185EBCA8DULL, { 0x83D33F7DA75CEF8CULL, 0xF8823606BB420236ULL } }, /* XSUM_XXH128_testdata[11564] */ + { 3855, 0x0000000000000000ULL, { 0x1B9BFCF0EA36721EULL, 0xAB84F04FE89920B5ULL } }, /* XSUM_XXH128_testdata[11565] */ + { 3855, 0x000000009E3779B1ULL, { 0xA0B46F1D1B2BF9A7ULL, 0x7A359ACEDADE064DULL } }, /* XSUM_XXH128_testdata[11566] */ + { 3855, 0x9E3779B185EBCA8DULL, { 0xE4EF08783106A26BULL, 0x07D43DD61CD503E8ULL } }, /* XSUM_XXH128_testdata[11567] */ + { 3856, 0x0000000000000000ULL, { 0x6AC4E1682A031581ULL, 0x40C0EF7F7D424D2CULL } }, /* XSUM_XXH128_testdata[11568] */ + { 3856, 0x000000009E3779B1ULL, { 0x2D0B62960F1606C4ULL, 0x92150A5FBBE4134AULL } }, /* XSUM_XXH128_testdata[11569] */ + { 3856, 0x9E3779B185EBCA8DULL, { 0x71E05AA4C1142514ULL, 0x45AB2461857EDD9BULL } }, /* XSUM_XXH128_testdata[11570] */ + { 3857, 0x0000000000000000ULL, { 0xD2C7E3B7B8F49DEEULL, 0xCAA6F675A62827A6ULL } }, /* XSUM_XXH128_testdata[11571] */ + { 3857, 0x000000009E3779B1ULL, { 0xD515A18457B5E1ECULL, 0xA3FBE87F5433E6FCULL } }, /* XSUM_XXH128_testdata[11572] */ + { 3857, 0x9E3779B185EBCA8DULL, { 0xA71331C8A5754119ULL, 0x8A919AC00A3508A7ULL } }, /* XSUM_XXH128_testdata[11573] */ + { 3858, 0x0000000000000000ULL, { 0x7B3BABB696208617ULL, 0x16AD4E72804110B2ULL } }, /* XSUM_XXH128_testdata[11574] */ + { 3858, 0x000000009E3779B1ULL, { 0x11A8D2E95D96B231ULL, 0xE0CA40F037A64661ULL } }, /* XSUM_XXH128_testdata[11575] */ + { 3858, 0x9E3779B185EBCA8DULL, { 0x4A1B9140ECAC425BULL, 0xF0E6F93E7C467971ULL } }, /* XSUM_XXH128_testdata[11576] */ + { 3859, 0x0000000000000000ULL, { 0xBA380F059564043FULL, 0x54850D42446064EBULL } }, /* XSUM_XXH128_testdata[11577] */ + { 3859, 0x000000009E3779B1ULL, { 0x200BB2FA24F47BC4ULL, 0x44CA4E5F8E1980EBULL } }, /* XSUM_XXH128_testdata[11578] */ + { 3859, 0x9E3779B185EBCA8DULL, { 0x494FD55DC8543FF6ULL, 0x000AF7D226898B63ULL } }, /* XSUM_XXH128_testdata[11579] */ + { 3860, 0x0000000000000000ULL, { 0x045A951633C1CDF2ULL, 0xAB8CD7BE27BE4B22ULL } }, /* XSUM_XXH128_testdata[11580] */ + { 3860, 0x000000009E3779B1ULL, { 0x3447225E9CAC002DULL, 0xBAABDC3AAB82C6AFULL } }, /* XSUM_XXH128_testdata[11581] */ + { 3860, 0x9E3779B185EBCA8DULL, { 0x10AD411F18864D72ULL, 0xE97EF72ADCFC9ADDULL } }, /* XSUM_XXH128_testdata[11582] */ + { 3861, 0x0000000000000000ULL, { 0x2F50A14FCDC278B5ULL, 0x67A63038280770F4ULL } }, /* XSUM_XXH128_testdata[11583] */ + { 3861, 0x000000009E3779B1ULL, { 0xB6D61C2170AE10B8ULL, 0xC81AF93893D3513FULL } }, /* XSUM_XXH128_testdata[11584] */ + { 3861, 0x9E3779B185EBCA8DULL, { 0x6B1FD754B3F65F10ULL, 0xEF51B6F0678FC60DULL } }, /* XSUM_XXH128_testdata[11585] */ + { 3862, 0x0000000000000000ULL, { 0x504228ACB96CBB3BULL, 0x5235B3DE5EBE7F26ULL } }, /* XSUM_XXH128_testdata[11586] */ + { 3862, 0x000000009E3779B1ULL, { 0x716FD98E7A5F235CULL, 0x26A8440771946CE9ULL } }, /* XSUM_XXH128_testdata[11587] */ + { 3862, 0x9E3779B185EBCA8DULL, { 0xD0D7CED9AD49283FULL, 0xD62682F324372A6CULL } }, /* XSUM_XXH128_testdata[11588] */ + { 3863, 0x0000000000000000ULL, { 0xA57C24978D1C0DF7ULL, 0x396C2B1403D770ABULL } }, /* XSUM_XXH128_testdata[11589] */ + { 3863, 0x000000009E3779B1ULL, { 0xA6AF0C5BCF57945CULL, 0x3827325155105152ULL } }, /* XSUM_XXH128_testdata[11590] */ + { 3863, 0x9E3779B185EBCA8DULL, { 0x1F0092DE5DE373DDULL, 0xECD4B4FAFC4DBCCEULL } }, /* XSUM_XXH128_testdata[11591] */ + { 3864, 0x0000000000000000ULL, { 0x461A5717BB985B4DULL, 0xB0FA49504F536A70ULL } }, /* XSUM_XXH128_testdata[11592] */ + { 3864, 0x000000009E3779B1ULL, { 0xB0589CBAD8098470ULL, 0x617EC0A2DD4CB3D6ULL } }, /* XSUM_XXH128_testdata[11593] */ + { 3864, 0x9E3779B185EBCA8DULL, { 0xD190B446241F3B38ULL, 0xF41E27A98DDE7C30ULL } }, /* XSUM_XXH128_testdata[11594] */ + { 3865, 0x0000000000000000ULL, { 0x6DC0045A88E940B6ULL, 0xE911A9E7D618BBF9ULL } }, /* XSUM_XXH128_testdata[11595] */ + { 3865, 0x000000009E3779B1ULL, { 0xFFD58BD48442E84EULL, 0xA6AEEAA91602F11FULL } }, /* XSUM_XXH128_testdata[11596] */ + { 3865, 0x9E3779B185EBCA8DULL, { 0xD57AEE654F6EB1BFULL, 0xD6668D212E019227ULL } }, /* XSUM_XXH128_testdata[11597] */ + { 3866, 0x0000000000000000ULL, { 0xEFE0DF87729BD807ULL, 0x897B0354EA505AFCULL } }, /* XSUM_XXH128_testdata[11598] */ + { 3866, 0x000000009E3779B1ULL, { 0xD2ED208D8CA06B27ULL, 0x8FBB8FD0F120F18DULL } }, /* XSUM_XXH128_testdata[11599] */ + { 3866, 0x9E3779B185EBCA8DULL, { 0xAF71173D60491A3CULL, 0x5C95B7D63482E7A0ULL } }, /* XSUM_XXH128_testdata[11600] */ + { 3867, 0x0000000000000000ULL, { 0xB3219BCAA7B285CFULL, 0x7C4FCC6BE3D1A459ULL } }, /* XSUM_XXH128_testdata[11601] */ + { 3867, 0x000000009E3779B1ULL, { 0x99672D222121E0B8ULL, 0xF484CA58BE8294C5ULL } }, /* XSUM_XXH128_testdata[11602] */ + { 3867, 0x9E3779B185EBCA8DULL, { 0xADDE5EDD388DC62CULL, 0x184386880E3B5B9AULL } }, /* XSUM_XXH128_testdata[11603] */ + { 3868, 0x0000000000000000ULL, { 0x9B933F677C078864ULL, 0x11C32BAC86E70A29ULL } }, /* XSUM_XXH128_testdata[11604] */ + { 3868, 0x000000009E3779B1ULL, { 0x39B172DE271D26AEULL, 0xB975366FDEB70AC8ULL } }, /* XSUM_XXH128_testdata[11605] */ + { 3868, 0x9E3779B185EBCA8DULL, { 0x07D9DBB0DC842CCBULL, 0x91181FC01629F7EDULL } }, /* XSUM_XXH128_testdata[11606] */ + { 3869, 0x0000000000000000ULL, { 0x2D58E9727B802A55ULL, 0x7003ACCDFCFB7145ULL } }, /* XSUM_XXH128_testdata[11607] */ + { 3869, 0x000000009E3779B1ULL, { 0x5897F4667AD04CCEULL, 0x7691FAC036760521ULL } }, /* XSUM_XXH128_testdata[11608] */ + { 3869, 0x9E3779B185EBCA8DULL, { 0x1A5D50C3938F2419ULL, 0x37BDE41031BF104AULL } }, /* XSUM_XXH128_testdata[11609] */ + { 3870, 0x0000000000000000ULL, { 0xB3C17DD1E50D455EULL, 0x8D0A0F01F7FB9A49ULL } }, /* XSUM_XXH128_testdata[11610] */ + { 3870, 0x000000009E3779B1ULL, { 0xFC72FE9C2A1ADD94ULL, 0xD43A24B2A1C93CE0ULL } }, /* XSUM_XXH128_testdata[11611] */ + { 3870, 0x9E3779B185EBCA8DULL, { 0x8471229D76103349ULL, 0x459AFA19157C9993ULL } }, /* XSUM_XXH128_testdata[11612] */ + { 3871, 0x0000000000000000ULL, { 0x5C174EC1D16D67FEULL, 0x1E50B3DF1A090722ULL } }, /* XSUM_XXH128_testdata[11613] */ + { 3871, 0x000000009E3779B1ULL, { 0xB1D3C4FEE6616680ULL, 0xD44B6313F09B7B3DULL } }, /* XSUM_XXH128_testdata[11614] */ + { 3871, 0x9E3779B185EBCA8DULL, { 0x82C201E346AB9BA7ULL, 0xE80D9117CC764FC3ULL } }, /* XSUM_XXH128_testdata[11615] */ + { 3872, 0x0000000000000000ULL, { 0xE0DD0C13C002BCE5ULL, 0xF5D300A3FED58F5FULL } }, /* XSUM_XXH128_testdata[11616] */ + { 3872, 0x000000009E3779B1ULL, { 0xB09BA9D3B2FC78A9ULL, 0x633846676EE1BD8DULL } }, /* XSUM_XXH128_testdata[11617] */ + { 3872, 0x9E3779B185EBCA8DULL, { 0xC4233EEE0E37A52BULL, 0x82B2C815907C21C4ULL } }, /* XSUM_XXH128_testdata[11618] */ + { 3873, 0x0000000000000000ULL, { 0x8A696B168B580A84ULL, 0x16C5ACBA53ED37FBULL } }, /* XSUM_XXH128_testdata[11619] */ + { 3873, 0x000000009E3779B1ULL, { 0xEDC58C323E4E5500ULL, 0x74DC0CB7FFDCFE14ULL } }, /* XSUM_XXH128_testdata[11620] */ + { 3873, 0x9E3779B185EBCA8DULL, { 0x821158749EF3576EULL, 0x8FD273097EA8C7E0ULL } }, /* XSUM_XXH128_testdata[11621] */ + { 3874, 0x0000000000000000ULL, { 0xDFEBD1A1913389C2ULL, 0x2C893428F31F677BULL } }, /* XSUM_XXH128_testdata[11622] */ + { 3874, 0x000000009E3779B1ULL, { 0x8368822C1DCC920EULL, 0x8C9CCB01F37F114EULL } }, /* XSUM_XXH128_testdata[11623] */ + { 3874, 0x9E3779B185EBCA8DULL, { 0x0F50D14692814C60ULL, 0x3CBD018EE0278916ULL } }, /* XSUM_XXH128_testdata[11624] */ + { 3875, 0x0000000000000000ULL, { 0x8B885A174EEADCF0ULL, 0x7634B4806ECF7DC2ULL } }, /* XSUM_XXH128_testdata[11625] */ + { 3875, 0x000000009E3779B1ULL, { 0xEE9F67EF9026B375ULL, 0x9A100D77F969AA9BULL } }, /* XSUM_XXH128_testdata[11626] */ + { 3875, 0x9E3779B185EBCA8DULL, { 0xBE08E4516752B35AULL, 0x1ACB5C750E3298F8ULL } }, /* XSUM_XXH128_testdata[11627] */ + { 3876, 0x0000000000000000ULL, { 0x09553D435DD83629ULL, 0x0136FCDBBC38E62BULL } }, /* XSUM_XXH128_testdata[11628] */ + { 3876, 0x000000009E3779B1ULL, { 0xA729E2008756889EULL, 0x582CF2049CC6AA1FULL } }, /* XSUM_XXH128_testdata[11629] */ + { 3876, 0x9E3779B185EBCA8DULL, { 0xB7C4E9607A887E62ULL, 0xCA79678D11549D5CULL } }, /* XSUM_XXH128_testdata[11630] */ + { 3877, 0x0000000000000000ULL, { 0x6DC55AA026DF9FD3ULL, 0x5D8C13AE0ECAA6B3ULL } }, /* XSUM_XXH128_testdata[11631] */ + { 3877, 0x000000009E3779B1ULL, { 0x483767510E968471ULL, 0x4F750E8EAEC3FD41ULL } }, /* XSUM_XXH128_testdata[11632] */ + { 3877, 0x9E3779B185EBCA8DULL, { 0x0F82F985D21275A8ULL, 0xBB4F1B80171698F5ULL } }, /* XSUM_XXH128_testdata[11633] */ + { 3878, 0x0000000000000000ULL, { 0x0AB69E2D8FFDB433ULL, 0xA7BC8168C668F958ULL } }, /* XSUM_XXH128_testdata[11634] */ + { 3878, 0x000000009E3779B1ULL, { 0xF5AFBC93FFF6C117ULL, 0xF83B6C0FE57158BDULL } }, /* XSUM_XXH128_testdata[11635] */ + { 3878, 0x9E3779B185EBCA8DULL, { 0xA0BDB20607B467B0ULL, 0xA46E6FE92A5ED2F2ULL } }, /* XSUM_XXH128_testdata[11636] */ + { 3879, 0x0000000000000000ULL, { 0xDC044E994F514388ULL, 0xB5C0AF59CD7ABA7BULL } }, /* XSUM_XXH128_testdata[11637] */ + { 3879, 0x000000009E3779B1ULL, { 0x10E2DFEA4F271BE3ULL, 0xB15E96F02B16DEC0ULL } }, /* XSUM_XXH128_testdata[11638] */ + { 3879, 0x9E3779B185EBCA8DULL, { 0xEE7FBF4DABA32D11ULL, 0x3D0F266B6DAAFFFFULL } }, /* XSUM_XXH128_testdata[11639] */ + { 3880, 0x0000000000000000ULL, { 0x187666F80C00DD3BULL, 0x12D70028CC7DE0F4ULL } }, /* XSUM_XXH128_testdata[11640] */ + { 3880, 0x000000009E3779B1ULL, { 0xD81DD7D12E0EB32DULL, 0x6CB30EBCA6FC2CBDULL } }, /* XSUM_XXH128_testdata[11641] */ + { 3880, 0x9E3779B185EBCA8DULL, { 0x4B4E138DB039E9A6ULL, 0x42EF410C0262AF03ULL } }, /* XSUM_XXH128_testdata[11642] */ + { 3881, 0x0000000000000000ULL, { 0x1B8C6170BA920F83ULL, 0x4C11909745309AC4ULL } }, /* XSUM_XXH128_testdata[11643] */ + { 3881, 0x000000009E3779B1ULL, { 0x60EFCC9F9BD4AD86ULL, 0xC65399E6B598978BULL } }, /* XSUM_XXH128_testdata[11644] */ + { 3881, 0x9E3779B185EBCA8DULL, { 0x791E308DBD22EFD9ULL, 0x5A78B484A83E997BULL } }, /* XSUM_XXH128_testdata[11645] */ + { 3882, 0x0000000000000000ULL, { 0xF04B471039625B62ULL, 0xA7774A599C6EFC79ULL } }, /* XSUM_XXH128_testdata[11646] */ + { 3882, 0x000000009E3779B1ULL, { 0xEED1AA994556A78DULL, 0xE071352F6F36D4F7ULL } }, /* XSUM_XXH128_testdata[11647] */ + { 3882, 0x9E3779B185EBCA8DULL, { 0xB74488D33A785C73ULL, 0x24A6050259E800E0ULL } }, /* XSUM_XXH128_testdata[11648] */ + { 3883, 0x0000000000000000ULL, { 0x4688B01A257F4566ULL, 0x14EEBCD6A611AF8DULL } }, /* XSUM_XXH128_testdata[11649] */ + { 3883, 0x000000009E3779B1ULL, { 0x1AE8417C5432E3C9ULL, 0x166FF7A75CD458CEULL } }, /* XSUM_XXH128_testdata[11650] */ + { 3883, 0x9E3779B185EBCA8DULL, { 0xEDD8269066A13BBEULL, 0x5B353F41220C0327ULL } }, /* XSUM_XXH128_testdata[11651] */ + { 3884, 0x0000000000000000ULL, { 0x7C8BE48761A9C3A5ULL, 0x84F2C70684B42802ULL } }, /* XSUM_XXH128_testdata[11652] */ + { 3884, 0x000000009E3779B1ULL, { 0x267298A17BE3A98DULL, 0x6E50D088B9E243F9ULL } }, /* XSUM_XXH128_testdata[11653] */ + { 3884, 0x9E3779B185EBCA8DULL, { 0x131209234A41D5ABULL, 0x9667A50D756B11F8ULL } }, /* XSUM_XXH128_testdata[11654] */ + { 3885, 0x0000000000000000ULL, { 0x9F9397B2208C2543ULL, 0x453EF329D9B65F05ULL } }, /* XSUM_XXH128_testdata[11655] */ + { 3885, 0x000000009E3779B1ULL, { 0x31EB795EFE061089ULL, 0x9C053896BC792D34ULL } }, /* XSUM_XXH128_testdata[11656] */ + { 3885, 0x9E3779B185EBCA8DULL, { 0x6640AEFF006DF4A4ULL, 0x2C662AAFEE53C777ULL } }, /* XSUM_XXH128_testdata[11657] */ + { 3886, 0x0000000000000000ULL, { 0xB8669BF8EF126845ULL, 0xBA6DADA153EBEF7BULL } }, /* XSUM_XXH128_testdata[11658] */ + { 3886, 0x000000009E3779B1ULL, { 0xCB6B05ED3706EA69ULL, 0xC7CEAA5721368067ULL } }, /* XSUM_XXH128_testdata[11659] */ + { 3886, 0x9E3779B185EBCA8DULL, { 0x0A044609E706CDD7ULL, 0xDB8FFA95A8C4B929ULL } }, /* XSUM_XXH128_testdata[11660] */ + { 3887, 0x0000000000000000ULL, { 0x4CFCD4413DD99027ULL, 0x90A231621D697345ULL } }, /* XSUM_XXH128_testdata[11661] */ + { 3887, 0x000000009E3779B1ULL, { 0x0FEF1A3A40395A6FULL, 0x1BFA83D67571A904ULL } }, /* XSUM_XXH128_testdata[11662] */ + { 3887, 0x9E3779B185EBCA8DULL, { 0xC44CF1C21F8CF592ULL, 0x58A7BE11FE53AAA3ULL } }, /* XSUM_XXH128_testdata[11663] */ + { 3888, 0x0000000000000000ULL, { 0xE331E128DBB1D7D9ULL, 0x2C7DB41FC161D4E4ULL } }, /* XSUM_XXH128_testdata[11664] */ + { 3888, 0x000000009E3779B1ULL, { 0x8633C13293A3EA0BULL, 0xF4D72FE1639B30CFULL } }, /* XSUM_XXH128_testdata[11665] */ + { 3888, 0x9E3779B185EBCA8DULL, { 0x6EFB06CE53DE9E24ULL, 0x833899E86A9E0870ULL } }, /* XSUM_XXH128_testdata[11666] */ + { 3889, 0x0000000000000000ULL, { 0x11D44E6082CBE4E5ULL, 0x7B0122BCC343085EULL } }, /* XSUM_XXH128_testdata[11667] */ + { 3889, 0x000000009E3779B1ULL, { 0x9F38CF7B0056ADA9ULL, 0xAC7277DCAA1769BAULL } }, /* XSUM_XXH128_testdata[11668] */ + { 3889, 0x9E3779B185EBCA8DULL, { 0xE35CDE98F72C647FULL, 0x6DDA7A79D9F189ACULL } }, /* XSUM_XXH128_testdata[11669] */ + { 3890, 0x0000000000000000ULL, { 0xA1295DE3AF67B2A3ULL, 0x3F31C6D0EF5463D7ULL } }, /* XSUM_XXH128_testdata[11670] */ + { 3890, 0x000000009E3779B1ULL, { 0x2AE4F1299B3F6ABDULL, 0xDC512917AB34B7C9ULL } }, /* XSUM_XXH128_testdata[11671] */ + { 3890, 0x9E3779B185EBCA8DULL, { 0x3DA1793B4CED76FBULL, 0x3116DEE7207B7CDFULL } }, /* XSUM_XXH128_testdata[11672] */ + { 3891, 0x0000000000000000ULL, { 0xBA73830B67A21E08ULL, 0x23E1BDEB7BC7AE1BULL } }, /* XSUM_XXH128_testdata[11673] */ + { 3891, 0x000000009E3779B1ULL, { 0x7A97C2858BFA3CF6ULL, 0x39B0A3F39D09CB13ULL } }, /* XSUM_XXH128_testdata[11674] */ + { 3891, 0x9E3779B185EBCA8DULL, { 0x3F2B72C5B004F19FULL, 0x751B2A186EAEF68EULL } }, /* XSUM_XXH128_testdata[11675] */ + { 3892, 0x0000000000000000ULL, { 0xAC94A1510989D9B1ULL, 0x00A1374B9B09AA1BULL } }, /* XSUM_XXH128_testdata[11676] */ + { 3892, 0x000000009E3779B1ULL, { 0x84217F6A2803F66CULL, 0xA5A8B5EFFDC57A5EULL } }, /* XSUM_XXH128_testdata[11677] */ + { 3892, 0x9E3779B185EBCA8DULL, { 0x12858508E6900F2CULL, 0x947F03FF301DF802ULL } }, /* XSUM_XXH128_testdata[11678] */ + { 3893, 0x0000000000000000ULL, { 0xF93FAEA85A65A233ULL, 0xA3C61D10EBDEE020ULL } }, /* XSUM_XXH128_testdata[11679] */ + { 3893, 0x000000009E3779B1ULL, { 0x347745C4E9003090ULL, 0xF086FAB225D94499ULL } }, /* XSUM_XXH128_testdata[11680] */ + { 3893, 0x9E3779B185EBCA8DULL, { 0x9BDB0D7C925A0E32ULL, 0xD3B1A8012E472A83ULL } }, /* XSUM_XXH128_testdata[11681] */ + { 3894, 0x0000000000000000ULL, { 0x9CB7F6F5DA5CE644ULL, 0xAE4DD0EF725789D6ULL } }, /* XSUM_XXH128_testdata[11682] */ + { 3894, 0x000000009E3779B1ULL, { 0x8AC343489782B48AULL, 0x20550773CE8ACC9CULL } }, /* XSUM_XXH128_testdata[11683] */ + { 3894, 0x9E3779B185EBCA8DULL, { 0xD579E994521A5D4BULL, 0x6CA7E9E2E670C6C4ULL } }, /* XSUM_XXH128_testdata[11684] */ + { 3895, 0x0000000000000000ULL, { 0x5325D38ABDF70B44ULL, 0x232BA5CA4C8CFD96ULL } }, /* XSUM_XXH128_testdata[11685] */ + { 3895, 0x000000009E3779B1ULL, { 0xE673560B6D531996ULL, 0xD4489515227E676AULL } }, /* XSUM_XXH128_testdata[11686] */ + { 3895, 0x9E3779B185EBCA8DULL, { 0xE35BCE7BB70760E5ULL, 0x6A6A58E13050D9C7ULL } }, /* XSUM_XXH128_testdata[11687] */ + { 3896, 0x0000000000000000ULL, { 0x9BD58AC8EC762F16ULL, 0xA057FFFAA8A4A26BULL } }, /* XSUM_XXH128_testdata[11688] */ + { 3896, 0x000000009E3779B1ULL, { 0xD642C9B4F08A4EDFULL, 0x9E51FC12E42E0D73ULL } }, /* XSUM_XXH128_testdata[11689] */ + { 3896, 0x9E3779B185EBCA8DULL, { 0x1359A61535C77027ULL, 0x1D9AF80878DB9793ULL } }, /* XSUM_XXH128_testdata[11690] */ + { 3897, 0x0000000000000000ULL, { 0x4E0D77736DC183D2ULL, 0x1E9D62A1A7289135ULL } }, /* XSUM_XXH128_testdata[11691] */ + { 3897, 0x000000009E3779B1ULL, { 0x995203C2E458E909ULL, 0xA33F792EE4FEE2F8ULL } }, /* XSUM_XXH128_testdata[11692] */ + { 3897, 0x9E3779B185EBCA8DULL, { 0x425C3F29DE942D3BULL, 0x931719A1A69C48CAULL } }, /* XSUM_XXH128_testdata[11693] */ + { 3898, 0x0000000000000000ULL, { 0x24F2F622BF81A57EULL, 0xA2BCD4DF363B1841ULL } }, /* XSUM_XXH128_testdata[11694] */ + { 3898, 0x000000009E3779B1ULL, { 0xD3FEAE1C4CC853A6ULL, 0xBF1BFACA122BC96AULL } }, /* XSUM_XXH128_testdata[11695] */ + { 3898, 0x9E3779B185EBCA8DULL, { 0x2EF182AFF3828F57ULL, 0x31E90B1069B78B1DULL } }, /* XSUM_XXH128_testdata[11696] */ + { 3899, 0x0000000000000000ULL, { 0x99FFFA13BD4D2CD9ULL, 0xDB0D204836A2DB1FULL } }, /* XSUM_XXH128_testdata[11697] */ + { 3899, 0x000000009E3779B1ULL, { 0xDBCF2AAB90E8D4E1ULL, 0xE840741E382D75B6ULL } }, /* XSUM_XXH128_testdata[11698] */ + { 3899, 0x9E3779B185EBCA8DULL, { 0xA0E33190010A3EA7ULL, 0xF129CB01F328A594ULL } }, /* XSUM_XXH128_testdata[11699] */ + { 3900, 0x0000000000000000ULL, { 0x19805A069F62A49AULL, 0x4C82B088804406FCULL } }, /* XSUM_XXH128_testdata[11700] */ + { 3900, 0x000000009E3779B1ULL, { 0xFC57BA9D64D86DD0ULL, 0x5108217BD03C7614ULL } }, /* XSUM_XXH128_testdata[11701] */ + { 3900, 0x9E3779B185EBCA8DULL, { 0x14F3FF037E3009BDULL, 0xF6720D5A57916315ULL } }, /* XSUM_XXH128_testdata[11702] */ + { 3901, 0x0000000000000000ULL, { 0xE09BAE0C7FFDF76EULL, 0xC60DA997D1D45385ULL } }, /* XSUM_XXH128_testdata[11703] */ + { 3901, 0x000000009E3779B1ULL, { 0xBB0B619068644C83ULL, 0x11577724970D7C45ULL } }, /* XSUM_XXH128_testdata[11704] */ + { 3901, 0x9E3779B185EBCA8DULL, { 0xD4D3B755157F2668ULL, 0xAD1DAC1F97741DDBULL } }, /* XSUM_XXH128_testdata[11705] */ + { 3902, 0x0000000000000000ULL, { 0xCE34D7FB7210BC00ULL, 0xC7C798605FEA692EULL } }, /* XSUM_XXH128_testdata[11706] */ + { 3902, 0x000000009E3779B1ULL, { 0x38C3BE91DC544C80ULL, 0x2224790F17A35E49ULL } }, /* XSUM_XXH128_testdata[11707] */ + { 3902, 0x9E3779B185EBCA8DULL, { 0x7C16164229315FB0ULL, 0x233DB3E07FA0A5E2ULL } }, /* XSUM_XXH128_testdata[11708] */ + { 3903, 0x0000000000000000ULL, { 0x7B13DAF4971CF1FFULL, 0x3346B16245EE855AULL } }, /* XSUM_XXH128_testdata[11709] */ + { 3903, 0x000000009E3779B1ULL, { 0x38FDDE27E01C58BDULL, 0x2FDCA53B88742C64ULL } }, /* XSUM_XXH128_testdata[11710] */ + { 3903, 0x9E3779B185EBCA8DULL, { 0x1C3A041D1102B153ULL, 0x6B024FDE7EAAC4CDULL } }, /* XSUM_XXH128_testdata[11711] */ + { 3904, 0x0000000000000000ULL, { 0xBBE687851D63B3AFULL, 0x23ECFCD6535F5348ULL } }, /* XSUM_XXH128_testdata[11712] */ + { 3904, 0x000000009E3779B1ULL, { 0x2AF40FE0FF26D23AULL, 0x916BAE1A5E26A77CULL } }, /* XSUM_XXH128_testdata[11713] */ + { 3904, 0x9E3779B185EBCA8DULL, { 0x5470D1C9A6CCA7EFULL, 0x982E1CFE9D029AC1ULL } }, /* XSUM_XXH128_testdata[11714] */ + { 3905, 0x0000000000000000ULL, { 0xC31F7A782896527AULL, 0xC23217FCE40E2490ULL } }, /* XSUM_XXH128_testdata[11715] */ + { 3905, 0x000000009E3779B1ULL, { 0x04A372E548B4FCCBULL, 0xE8524F9794D9AC4EULL } }, /* XSUM_XXH128_testdata[11716] */ + { 3905, 0x9E3779B185EBCA8DULL, { 0xA349F0FCFE77288AULL, 0xB44C856CC9B92416ULL } }, /* XSUM_XXH128_testdata[11717] */ + { 3906, 0x0000000000000000ULL, { 0xE87F7F6E7457F2EAULL, 0xBFC023F217AD7FF2ULL } }, /* XSUM_XXH128_testdata[11718] */ + { 3906, 0x000000009E3779B1ULL, { 0x7AAD198E5462270BULL, 0x8B4F261581E40CA7ULL } }, /* XSUM_XXH128_testdata[11719] */ + { 3906, 0x9E3779B185EBCA8DULL, { 0xCF37E72730B3F6BFULL, 0xCEAE9408ACDF1023ULL } }, /* XSUM_XXH128_testdata[11720] */ + { 3907, 0x0000000000000000ULL, { 0xAF7BA8F0F6BDE866ULL, 0x7E777093FAFFCFE7ULL } }, /* XSUM_XXH128_testdata[11721] */ + { 3907, 0x000000009E3779B1ULL, { 0x2B62F2422A64C5B9ULL, 0xBE916AFC0F870D21ULL } }, /* XSUM_XXH128_testdata[11722] */ + { 3907, 0x9E3779B185EBCA8DULL, { 0xCAB66BE2356E26B7ULL, 0x7DCD51B0F96D5B47ULL } }, /* XSUM_XXH128_testdata[11723] */ + { 3908, 0x0000000000000000ULL, { 0xBF921BD5317E4A34ULL, 0x3D2D80C39355491CULL } }, /* XSUM_XXH128_testdata[11724] */ + { 3908, 0x000000009E3779B1ULL, { 0x0BDCCBC396BB4DAAULL, 0x3A9A4978C71F6CC6ULL } }, /* XSUM_XXH128_testdata[11725] */ + { 3908, 0x9E3779B185EBCA8DULL, { 0x0B66F365D26D2B03ULL, 0x38C1A4F6758AB753ULL } }, /* XSUM_XXH128_testdata[11726] */ + { 3909, 0x0000000000000000ULL, { 0x9CB57F78F4578087ULL, 0xCAA0B0A1AFCD229FULL } }, /* XSUM_XXH128_testdata[11727] */ + { 3909, 0x000000009E3779B1ULL, { 0xF7FE73D798514D40ULL, 0xCF2175BC74FF0AF3ULL } }, /* XSUM_XXH128_testdata[11728] */ + { 3909, 0x9E3779B185EBCA8DULL, { 0x2CB9FE7B7E8EA2B3ULL, 0x7FCF57CCF0938548ULL } }, /* XSUM_XXH128_testdata[11729] */ + { 3910, 0x0000000000000000ULL, { 0x3F9ECFE64F0200BCULL, 0x4E0C356C64034AC3ULL } }, /* XSUM_XXH128_testdata[11730] */ + { 3910, 0x000000009E3779B1ULL, { 0x0CA27154C57D0F6EULL, 0xF48502B0F880A6F6ULL } }, /* XSUM_XXH128_testdata[11731] */ + { 3910, 0x9E3779B185EBCA8DULL, { 0x141C8C489F2B039AULL, 0x0ACD69A4990E7291ULL } }, /* XSUM_XXH128_testdata[11732] */ + { 3911, 0x0000000000000000ULL, { 0xB761FC9603EDC210ULL, 0x07F1D2D313CD850BULL } }, /* XSUM_XXH128_testdata[11733] */ + { 3911, 0x000000009E3779B1ULL, { 0xAE3A6CC1EEB13F73ULL, 0xA49663CE9C6E6EA4ULL } }, /* XSUM_XXH128_testdata[11734] */ + { 3911, 0x9E3779B185EBCA8DULL, { 0x1AA8771E12C97EEEULL, 0x178EFE459E9B35D9ULL } }, /* XSUM_XXH128_testdata[11735] */ + { 3912, 0x0000000000000000ULL, { 0xCB369450ECBDBC90ULL, 0x757D75CF88B0C931ULL } }, /* XSUM_XXH128_testdata[11736] */ + { 3912, 0x000000009E3779B1ULL, { 0x0577D7CE99CEFE0AULL, 0xB82683469E78B623ULL } }, /* XSUM_XXH128_testdata[11737] */ + { 3912, 0x9E3779B185EBCA8DULL, { 0x9E0687BFC2CF96CAULL, 0x5861DEC8A4F95072ULL } }, /* XSUM_XXH128_testdata[11738] */ + { 3913, 0x0000000000000000ULL, { 0x431E499D64D673F6ULL, 0xB2A67AE8A3C7CDF3ULL } }, /* XSUM_XXH128_testdata[11739] */ + { 3913, 0x000000009E3779B1ULL, { 0xB5A3A2B3AD8B469EULL, 0x19A1D95BFCA4FC64ULL } }, /* XSUM_XXH128_testdata[11740] */ + { 3913, 0x9E3779B185EBCA8DULL, { 0x4FAF932DB8149ACCULL, 0x4160A5CEE75A817FULL } }, /* XSUM_XXH128_testdata[11741] */ + { 3914, 0x0000000000000000ULL, { 0xE6D911BC72C6AE51ULL, 0x9DCBC28F27F6C47AULL } }, /* XSUM_XXH128_testdata[11742] */ + { 3914, 0x000000009E3779B1ULL, { 0x98D107A1A27CABAEULL, 0x091EAEBA924C9A10ULL } }, /* XSUM_XXH128_testdata[11743] */ + { 3914, 0x9E3779B185EBCA8DULL, { 0xE2BF052CEF79FF47ULL, 0x6FD9207F56E53448ULL } }, /* XSUM_XXH128_testdata[11744] */ + { 3915, 0x0000000000000000ULL, { 0x79C6F6782413023AULL, 0x87B3008DBCB73982ULL } }, /* XSUM_XXH128_testdata[11745] */ + { 3915, 0x000000009E3779B1ULL, { 0xB9B005E2DBA0B5F6ULL, 0x2BA66985CC459CFEULL } }, /* XSUM_XXH128_testdata[11746] */ + { 3915, 0x9E3779B185EBCA8DULL, { 0x1B3809FE35FE127EULL, 0x34108F63AD03D2EFULL } }, /* XSUM_XXH128_testdata[11747] */ + { 3916, 0x0000000000000000ULL, { 0xEF8F193FDB2112A3ULL, 0x2F10749BC3A75FE1ULL } }, /* XSUM_XXH128_testdata[11748] */ + { 3916, 0x000000009E3779B1ULL, { 0x4031502C08D8F2EEULL, 0xC34CD81D37D628B2ULL } }, /* XSUM_XXH128_testdata[11749] */ + { 3916, 0x9E3779B185EBCA8DULL, { 0x98AD7D5406A19295ULL, 0x01A1666B938A9161ULL } }, /* XSUM_XXH128_testdata[11750] */ + { 3917, 0x0000000000000000ULL, { 0x69FB09EAA27F3706ULL, 0xE4ADB55C11AA77D9ULL } }, /* XSUM_XXH128_testdata[11751] */ + { 3917, 0x000000009E3779B1ULL, { 0x5A22BC3B03D1DCBCULL, 0xF218DAA82F3327F0ULL } }, /* XSUM_XXH128_testdata[11752] */ + { 3917, 0x9E3779B185EBCA8DULL, { 0x03163CABD1527F68ULL, 0x068956DFF5C6481EULL } }, /* XSUM_XXH128_testdata[11753] */ + { 3918, 0x0000000000000000ULL, { 0x7D8DD4199BED3A35ULL, 0x0D606CC902A48651ULL } }, /* XSUM_XXH128_testdata[11754] */ + { 3918, 0x000000009E3779B1ULL, { 0xE7B86753ED059A50ULL, 0xE8EA58083D463FBDULL } }, /* XSUM_XXH128_testdata[11755] */ + { 3918, 0x9E3779B185EBCA8DULL, { 0xBC4F45AE3E4BEBE9ULL, 0x2ED692A9256D0F54ULL } }, /* XSUM_XXH128_testdata[11756] */ + { 3919, 0x0000000000000000ULL, { 0x8C8101E9DF878947ULL, 0xC703806F8C5BDB12ULL } }, /* XSUM_XXH128_testdata[11757] */ + { 3919, 0x000000009E3779B1ULL, { 0x1DFDBB3B962FC30AULL, 0x72ACA0CC0019DE47ULL } }, /* XSUM_XXH128_testdata[11758] */ + { 3919, 0x9E3779B185EBCA8DULL, { 0x0D012DC456C35931ULL, 0x2BC917D90C3A67E3ULL } }, /* XSUM_XXH128_testdata[11759] */ + { 3920, 0x0000000000000000ULL, { 0x256E7D270201A5F8ULL, 0x1BC0578432B6D166ULL } }, /* XSUM_XXH128_testdata[11760] */ + { 3920, 0x000000009E3779B1ULL, { 0x086F0B405B2B717BULL, 0x7CF078BB18DD10ACULL } }, /* XSUM_XXH128_testdata[11761] */ + { 3920, 0x9E3779B185EBCA8DULL, { 0x2594B97E220C378CULL, 0x7A2202350DBBED2CULL } }, /* XSUM_XXH128_testdata[11762] */ + { 3921, 0x0000000000000000ULL, { 0x2413C09AA63529D4ULL, 0xE0FF53AC442D02F7ULL } }, /* XSUM_XXH128_testdata[11763] */ + { 3921, 0x000000009E3779B1ULL, { 0x26063C593C4AB85EULL, 0xC4C1D386D5E0DDD0ULL } }, /* XSUM_XXH128_testdata[11764] */ + { 3921, 0x9E3779B185EBCA8DULL, { 0xAE6981E821162C41ULL, 0xDB14B7D11811A0B1ULL } }, /* XSUM_XXH128_testdata[11765] */ + { 3922, 0x0000000000000000ULL, { 0x1B4729EEA242B464ULL, 0x0B613FAA48910593ULL } }, /* XSUM_XXH128_testdata[11766] */ + { 3922, 0x000000009E3779B1ULL, { 0xB17848B81E471979ULL, 0xFA29B30DFEAD7E37ULL } }, /* XSUM_XXH128_testdata[11767] */ + { 3922, 0x9E3779B185EBCA8DULL, { 0x2DE6748B08EF0008ULL, 0x9BA7A305151E29FCULL } }, /* XSUM_XXH128_testdata[11768] */ + { 3923, 0x0000000000000000ULL, { 0x5D3C90B72C299E81ULL, 0xA2EB4D09EB763472ULL } }, /* XSUM_XXH128_testdata[11769] */ + { 3923, 0x000000009E3779B1ULL, { 0x2BC4CDC35767F969ULL, 0xAF893907BE463249ULL } }, /* XSUM_XXH128_testdata[11770] */ + { 3923, 0x9E3779B185EBCA8DULL, { 0xA080487A07FE5B1BULL, 0xE1503B4C64A907BFULL } }, /* XSUM_XXH128_testdata[11771] */ + { 3924, 0x0000000000000000ULL, { 0x7CABA0FF1828406EULL, 0xD253201FB2E5A6E6ULL } }, /* XSUM_XXH128_testdata[11772] */ + { 3924, 0x000000009E3779B1ULL, { 0xCF52261ACD2A973BULL, 0x7E80112FFB7C879EULL } }, /* XSUM_XXH128_testdata[11773] */ + { 3924, 0x9E3779B185EBCA8DULL, { 0xAD0EB6A479FE5234ULL, 0xCBCB6AE6963031D9ULL } }, /* XSUM_XXH128_testdata[11774] */ + { 3925, 0x0000000000000000ULL, { 0x34849449A343A369ULL, 0xCA0C6D77D2BCFF01ULL } }, /* XSUM_XXH128_testdata[11775] */ + { 3925, 0x000000009E3779B1ULL, { 0xF1B2FE539DE1BD78ULL, 0x25DD5C5A7F109A57ULL } }, /* XSUM_XXH128_testdata[11776] */ + { 3925, 0x9E3779B185EBCA8DULL, { 0x1AB002D4AE5A96C6ULL, 0xAC75326380C94E20ULL } }, /* XSUM_XXH128_testdata[11777] */ + { 3926, 0x0000000000000000ULL, { 0x821338A8BDB22901ULL, 0xDEE48B2BE52BBDCDULL } }, /* XSUM_XXH128_testdata[11778] */ + { 3926, 0x000000009E3779B1ULL, { 0xFA125E981F0765E1ULL, 0xF688DBBB8865E8C7ULL } }, /* XSUM_XXH128_testdata[11779] */ + { 3926, 0x9E3779B185EBCA8DULL, { 0xD9304221475D4F53ULL, 0xF7AF17857A1871EBULL } }, /* XSUM_XXH128_testdata[11780] */ + { 3927, 0x0000000000000000ULL, { 0x711649750101681CULL, 0x641D020DF6935613ULL } }, /* XSUM_XXH128_testdata[11781] */ + { 3927, 0x000000009E3779B1ULL, { 0x4B48416C231B90E7ULL, 0x3CC2D6A184F7473BULL } }, /* XSUM_XXH128_testdata[11782] */ + { 3927, 0x9E3779B185EBCA8DULL, { 0x6400186109233657ULL, 0xA4C910A50E210C18ULL } }, /* XSUM_XXH128_testdata[11783] */ + { 3928, 0x0000000000000000ULL, { 0x1EF643BB4D6280AEULL, 0xF504991A89229F5FULL } }, /* XSUM_XXH128_testdata[11784] */ + { 3928, 0x000000009E3779B1ULL, { 0xDE5916BD621EC86AULL, 0xEEB413169504787FULL } }, /* XSUM_XXH128_testdata[11785] */ + { 3928, 0x9E3779B185EBCA8DULL, { 0x45F6407A80B1B838ULL, 0xFE90EDD6DB7E6DC5ULL } }, /* XSUM_XXH128_testdata[11786] */ + { 3929, 0x0000000000000000ULL, { 0x46AEB90D8F7ABFF1ULL, 0x0963DFCCB8231CDEULL } }, /* XSUM_XXH128_testdata[11787] */ + { 3929, 0x000000009E3779B1ULL, { 0xCD8DC67AF485CE7EULL, 0x31A1ED31E572B853ULL } }, /* XSUM_XXH128_testdata[11788] */ + { 3929, 0x9E3779B185EBCA8DULL, { 0xDFBD52053FEA117CULL, 0x40F86D77248AFED2ULL } }, /* XSUM_XXH128_testdata[11789] */ + { 3930, 0x0000000000000000ULL, { 0xF96C47244C8E68D9ULL, 0xFE38E5A8DA5EFBDDULL } }, /* XSUM_XXH128_testdata[11790] */ + { 3930, 0x000000009E3779B1ULL, { 0xD7E8BB6F22572FFEULL, 0x48E4E55C27087040ULL } }, /* XSUM_XXH128_testdata[11791] */ + { 3930, 0x9E3779B185EBCA8DULL, { 0xE94C4D97EB097F05ULL, 0x97F3AC1C03230B0BULL } }, /* XSUM_XXH128_testdata[11792] */ + { 3931, 0x0000000000000000ULL, { 0x2D9755A556DC4C68ULL, 0xE2AE93EEF7615E4AULL } }, /* XSUM_XXH128_testdata[11793] */ + { 3931, 0x000000009E3779B1ULL, { 0x772A4E86E5A94CA3ULL, 0x2663D2F96B821EC3ULL } }, /* XSUM_XXH128_testdata[11794] */ + { 3931, 0x9E3779B185EBCA8DULL, { 0x356571D8B096CF77ULL, 0xB8C9AA9A45BD062AULL } }, /* XSUM_XXH128_testdata[11795] */ + { 3932, 0x0000000000000000ULL, { 0x2690DE96B8F122BFULL, 0xF3474BBD3DE863A9ULL } }, /* XSUM_XXH128_testdata[11796] */ + { 3932, 0x000000009E3779B1ULL, { 0x9AE357FD6F988617ULL, 0x6F4874C348141620ULL } }, /* XSUM_XXH128_testdata[11797] */ + { 3932, 0x9E3779B185EBCA8DULL, { 0xD855005339822D9FULL, 0x2E96ABC332DD4D77ULL } }, /* XSUM_XXH128_testdata[11798] */ + { 3933, 0x0000000000000000ULL, { 0x03F17E5C69752446ULL, 0xA5C48093150CCF9CULL } }, /* XSUM_XXH128_testdata[11799] */ + { 3933, 0x000000009E3779B1ULL, { 0xCBE8851BBFA402CBULL, 0x388B203C58138DEBULL } }, /* XSUM_XXH128_testdata[11800] */ + { 3933, 0x9E3779B185EBCA8DULL, { 0x6DB8D83F02C4D6F4ULL, 0xF9CE2347D140645CULL } }, /* XSUM_XXH128_testdata[11801] */ + { 3934, 0x0000000000000000ULL, { 0xAE5BAEE4A55FA92AULL, 0xB94B1E2E4C6339D4ULL } }, /* XSUM_XXH128_testdata[11802] */ + { 3934, 0x000000009E3779B1ULL, { 0x7D4657E53D55CA67ULL, 0x42D69EB8AFDC8759ULL } }, /* XSUM_XXH128_testdata[11803] */ + { 3934, 0x9E3779B185EBCA8DULL, { 0xE84342F512CBB54CULL, 0x87653BAEDC135A8DULL } }, /* XSUM_XXH128_testdata[11804] */ + { 3935, 0x0000000000000000ULL, { 0x10C818EA41884D5DULL, 0x27BC4A437CF04D5AULL } }, /* XSUM_XXH128_testdata[11805] */ + { 3935, 0x000000009E3779B1ULL, { 0xE5A2E4008DBE097CULL, 0xF0EB9F85FEA78A64ULL } }, /* XSUM_XXH128_testdata[11806] */ + { 3935, 0x9E3779B185EBCA8DULL, { 0xB4712B7E5B822501ULL, 0x8FAC1D31921F3B0BULL } }, /* XSUM_XXH128_testdata[11807] */ + { 3936, 0x0000000000000000ULL, { 0xAA8A8708F5777330ULL, 0x981F0F7F71786FC8ULL } }, /* XSUM_XXH128_testdata[11808] */ + { 3936, 0x000000009E3779B1ULL, { 0x4238728C97EF6315ULL, 0x6B8C3DB274A65F5FULL } }, /* XSUM_XXH128_testdata[11809] */ + { 3936, 0x9E3779B185EBCA8DULL, { 0xA4B6E3C721522422ULL, 0x78835E4971C1EA96ULL } }, /* XSUM_XXH128_testdata[11810] */ + { 3937, 0x0000000000000000ULL, { 0x067D12376D718DAFULL, 0x4DAAB5E35D4F4688ULL } }, /* XSUM_XXH128_testdata[11811] */ + { 3937, 0x000000009E3779B1ULL, { 0xCD51872322C7BA75ULL, 0x38E89697CF7EBC05ULL } }, /* XSUM_XXH128_testdata[11812] */ + { 3937, 0x9E3779B185EBCA8DULL, { 0x36B8E2E811E9040AULL, 0x23453BDBB15D7B2BULL } }, /* XSUM_XXH128_testdata[11813] */ + { 3938, 0x0000000000000000ULL, { 0xF98EC9412B15364FULL, 0xD389CA7B8E514872ULL } }, /* XSUM_XXH128_testdata[11814] */ + { 3938, 0x000000009E3779B1ULL, { 0x4997E8692D1DC936ULL, 0xFCE6AF496F31888AULL } }, /* XSUM_XXH128_testdata[11815] */ + { 3938, 0x9E3779B185EBCA8DULL, { 0xF2069144A2208295ULL, 0x963C9E45D9816580ULL } }, /* XSUM_XXH128_testdata[11816] */ + { 3939, 0x0000000000000000ULL, { 0x3F9E497288C054EEULL, 0x466F51FBD31A6804ULL } }, /* XSUM_XXH128_testdata[11817] */ + { 3939, 0x000000009E3779B1ULL, { 0x9BB9E077666211F9ULL, 0xA3E6355E9CBA59DCULL } }, /* XSUM_XXH128_testdata[11818] */ + { 3939, 0x9E3779B185EBCA8DULL, { 0xC2509F473718907BULL, 0x14551A76FCF6CB67ULL } }, /* XSUM_XXH128_testdata[11819] */ + { 3940, 0x0000000000000000ULL, { 0xBDEABE2B0DA048E9ULL, 0x493610CD2D5F833DULL } }, /* XSUM_XXH128_testdata[11820] */ + { 3940, 0x000000009E3779B1ULL, { 0x7DDB67A63929B067ULL, 0x6032B99D8CC6F186ULL } }, /* XSUM_XXH128_testdata[11821] */ + { 3940, 0x9E3779B185EBCA8DULL, { 0x4668552A42C21C1AULL, 0xDA1CFB57893AC63AULL } }, /* XSUM_XXH128_testdata[11822] */ + { 3941, 0x0000000000000000ULL, { 0x10AB1C99F00A85BEULL, 0x58C0FFFD295064C6ULL } }, /* XSUM_XXH128_testdata[11823] */ + { 3941, 0x000000009E3779B1ULL, { 0x0CA9E90EC33AD566ULL, 0xA6972A8464F106BAULL } }, /* XSUM_XXH128_testdata[11824] */ + { 3941, 0x9E3779B185EBCA8DULL, { 0x817F51B557AE9312ULL, 0x5E09B0F53F7AAA58ULL } }, /* XSUM_XXH128_testdata[11825] */ + { 3942, 0x0000000000000000ULL, { 0x532A1A1C827E3C32ULL, 0x51847BB665A3D74BULL } }, /* XSUM_XXH128_testdata[11826] */ + { 3942, 0x000000009E3779B1ULL, { 0xECD5DBEFD425D04AULL, 0x22DCD9AA783E6191ULL } }, /* XSUM_XXH128_testdata[11827] */ + { 3942, 0x9E3779B185EBCA8DULL, { 0xFC9E9A61C043F893ULL, 0x56B6FADA016E6C40ULL } }, /* XSUM_XXH128_testdata[11828] */ + { 3943, 0x0000000000000000ULL, { 0x17DF5FEBAA199DDCULL, 0x1B99346B0CD754AEULL } }, /* XSUM_XXH128_testdata[11829] */ + { 3943, 0x000000009E3779B1ULL, { 0xC328DDFC71C9E8BEULL, 0x4B147E2EAAEE3579ULL } }, /* XSUM_XXH128_testdata[11830] */ + { 3943, 0x9E3779B185EBCA8DULL, { 0xBF866768A90B586BULL, 0x27E89F6B1EC52E10ULL } }, /* XSUM_XXH128_testdata[11831] */ + { 3944, 0x0000000000000000ULL, { 0x71398075626A805FULL, 0xDB28F32A83F95301ULL } }, /* XSUM_XXH128_testdata[11832] */ + { 3944, 0x000000009E3779B1ULL, { 0x2F89CD851869AE2FULL, 0x05028DDA6BAAFBFAULL } }, /* XSUM_XXH128_testdata[11833] */ + { 3944, 0x9E3779B185EBCA8DULL, { 0x2EAD63956448AC42ULL, 0xFD217EA32B25D87FULL } }, /* XSUM_XXH128_testdata[11834] */ + { 3945, 0x0000000000000000ULL, { 0x8B96C85B6B09AE09ULL, 0x40A4930DADB5D54FULL } }, /* XSUM_XXH128_testdata[11835] */ + { 3945, 0x000000009E3779B1ULL, { 0xA7C403CB78E5D4DFULL, 0xB86EB0F1B34EB6C1ULL } }, /* XSUM_XXH128_testdata[11836] */ + { 3945, 0x9E3779B185EBCA8DULL, { 0x53945379415EEA57ULL, 0xBD26F2DF64E34865ULL } }, /* XSUM_XXH128_testdata[11837] */ + { 3946, 0x0000000000000000ULL, { 0xBDD556FEB977EB7EULL, 0xCB97717C26E68D25ULL } }, /* XSUM_XXH128_testdata[11838] */ + { 3946, 0x000000009E3779B1ULL, { 0x593531278BCB5FAEULL, 0xE8CEFF77544C1727ULL } }, /* XSUM_XXH128_testdata[11839] */ + { 3946, 0x9E3779B185EBCA8DULL, { 0x323281D91889CD49ULL, 0x5A670B021C55BC3AULL } }, /* XSUM_XXH128_testdata[11840] */ + { 3947, 0x0000000000000000ULL, { 0x64971C22DBC5527CULL, 0xA854ACD0F3D9BF5CULL } }, /* XSUM_XXH128_testdata[11841] */ + { 3947, 0x000000009E3779B1ULL, { 0x536EF1BEE9EA34E3ULL, 0x64737D904AEA5004ULL } }, /* XSUM_XXH128_testdata[11842] */ + { 3947, 0x9E3779B185EBCA8DULL, { 0x89022F7E2B8360A5ULL, 0x1E8D596FE179E006ULL } }, /* XSUM_XXH128_testdata[11843] */ + { 3948, 0x0000000000000000ULL, { 0xDD8BE1C1AA8ADD2DULL, 0x068E6779F2005C17ULL } }, /* XSUM_XXH128_testdata[11844] */ + { 3948, 0x000000009E3779B1ULL, { 0x36699CDC62EEC21CULL, 0x7DADC6B744299E89ULL } }, /* XSUM_XXH128_testdata[11845] */ + { 3948, 0x9E3779B185EBCA8DULL, { 0x5C30025D03808D2BULL, 0xB90280D42101D3A6ULL } }, /* XSUM_XXH128_testdata[11846] */ + { 3949, 0x0000000000000000ULL, { 0x8C07CF58AB41A74CULL, 0x1A88B67A3043D14FULL } }, /* XSUM_XXH128_testdata[11847] */ + { 3949, 0x000000009E3779B1ULL, { 0x6BC1AF41B7E4545BULL, 0xC2A7B5AC9AA9D4B7ULL } }, /* XSUM_XXH128_testdata[11848] */ + { 3949, 0x9E3779B185EBCA8DULL, { 0xB1D01B95BAA92AABULL, 0x4BDAD39456D7E694ULL } }, /* XSUM_XXH128_testdata[11849] */ + { 3950, 0x0000000000000000ULL, { 0xD02F3D99DAF12BFBULL, 0xA2FF9B9B06FA3BE3ULL } }, /* XSUM_XXH128_testdata[11850] */ + { 3950, 0x000000009E3779B1ULL, { 0xCE34C728A3E19EF6ULL, 0x808315E9A19E8E0DULL } }, /* XSUM_XXH128_testdata[11851] */ + { 3950, 0x9E3779B185EBCA8DULL, { 0xB51B642756A4A758ULL, 0x9677F9E7E4D5080CULL } }, /* XSUM_XXH128_testdata[11852] */ + { 3951, 0x0000000000000000ULL, { 0x4348531E49C511F4ULL, 0x007F52F2204F1CA9ULL } }, /* XSUM_XXH128_testdata[11853] */ + { 3951, 0x000000009E3779B1ULL, { 0x16BB8891B47AE125ULL, 0x73EAD5665BD8226CULL } }, /* XSUM_XXH128_testdata[11854] */ + { 3951, 0x9E3779B185EBCA8DULL, { 0x18BD395AEEA58688ULL, 0x80BB6A17B8819A89ULL } }, /* XSUM_XXH128_testdata[11855] */ + { 3952, 0x0000000000000000ULL, { 0x9D4C66540A962773ULL, 0x1F57AB2147DADBC1ULL } }, /* XSUM_XXH128_testdata[11856] */ + { 3952, 0x000000009E3779B1ULL, { 0x62F59DF0A6BCD81AULL, 0x075508B173FE327AULL } }, /* XSUM_XXH128_testdata[11857] */ + { 3952, 0x9E3779B185EBCA8DULL, { 0xE00964BE57FD3E66ULL, 0x0E50FB2993E9AE7CULL } }, /* XSUM_XXH128_testdata[11858] */ + { 3953, 0x0000000000000000ULL, { 0x7CE772BEA8E4786BULL, 0xD4EACAE049532F6CULL } }, /* XSUM_XXH128_testdata[11859] */ + { 3953, 0x000000009E3779B1ULL, { 0x74625AF257BF1E94ULL, 0x7ACD76B6FF6E4403ULL } }, /* XSUM_XXH128_testdata[11860] */ + { 3953, 0x9E3779B185EBCA8DULL, { 0xF61BB140BE5D765FULL, 0xB1065B1E36D10F1FULL } }, /* XSUM_XXH128_testdata[11861] */ + { 3954, 0x0000000000000000ULL, { 0xEF207CADC1E1289DULL, 0x4360FAA0C0507345ULL } }, /* XSUM_XXH128_testdata[11862] */ + { 3954, 0x000000009E3779B1ULL, { 0xDC8EC45A830286DDULL, 0x7F893B36D1112F5CULL } }, /* XSUM_XXH128_testdata[11863] */ + { 3954, 0x9E3779B185EBCA8DULL, { 0xFAE666B60898B751ULL, 0x6C99685CC49BB680ULL } }, /* XSUM_XXH128_testdata[11864] */ + { 3955, 0x0000000000000000ULL, { 0x26CC10398A6749B7ULL, 0x9D02DB01129B4D33ULL } }, /* XSUM_XXH128_testdata[11865] */ + { 3955, 0x000000009E3779B1ULL, { 0x1B5557E53320EA00ULL, 0x79B2F9224093CE33ULL } }, /* XSUM_XXH128_testdata[11866] */ + { 3955, 0x9E3779B185EBCA8DULL, { 0x92DE2797740DD6B7ULL, 0x9C12C4536B3669ACULL } }, /* XSUM_XXH128_testdata[11867] */ + { 3956, 0x0000000000000000ULL, { 0x242CFB81AFEB4A52ULL, 0x1E1B0FF24C65D9C5ULL } }, /* XSUM_XXH128_testdata[11868] */ + { 3956, 0x000000009E3779B1ULL, { 0x909B020E68303C6EULL, 0xFBFEC0FF109E204CULL } }, /* XSUM_XXH128_testdata[11869] */ + { 3956, 0x9E3779B185EBCA8DULL, { 0x52AC4FDC444D7946ULL, 0x66DCA0177AB6C933ULL } }, /* XSUM_XXH128_testdata[11870] */ + { 3957, 0x0000000000000000ULL, { 0x281754EE7F02B5E8ULL, 0x36D9580ADE599F03ULL } }, /* XSUM_XXH128_testdata[11871] */ + { 3957, 0x000000009E3779B1ULL, { 0x23BC5CBA08E4DBA5ULL, 0xC31A7E2D44F7EB27ULL } }, /* XSUM_XXH128_testdata[11872] */ + { 3957, 0x9E3779B185EBCA8DULL, { 0x334BB05F13E21683ULL, 0xF64D333616862ECEULL } }, /* XSUM_XXH128_testdata[11873] */ + { 3958, 0x0000000000000000ULL, { 0x99422CCBED686E68ULL, 0xC6A5B277DB213AE6ULL } }, /* XSUM_XXH128_testdata[11874] */ + { 3958, 0x000000009E3779B1ULL, { 0x8DBBD0A43BA5AC06ULL, 0xBAA8C4CC51D0F17FULL } }, /* XSUM_XXH128_testdata[11875] */ + { 3958, 0x9E3779B185EBCA8DULL, { 0x37F7156BD866B0ADULL, 0x184C96F0E6792036ULL } }, /* XSUM_XXH128_testdata[11876] */ + { 3959, 0x0000000000000000ULL, { 0x598741D332E3B68CULL, 0x4D530F062FFEFD2EULL } }, /* XSUM_XXH128_testdata[11877] */ + { 3959, 0x000000009E3779B1ULL, { 0xE28C31626379D313ULL, 0x8AA61836F5763CD7ULL } }, /* XSUM_XXH128_testdata[11878] */ + { 3959, 0x9E3779B185EBCA8DULL, { 0x6586AE3B6DDACD16ULL, 0xA218BF0090B8FCB3ULL } }, /* XSUM_XXH128_testdata[11879] */ + { 3960, 0x0000000000000000ULL, { 0x4B628B36B33EC98CULL, 0x3BADE1697D646880ULL } }, /* XSUM_XXH128_testdata[11880] */ + { 3960, 0x000000009E3779B1ULL, { 0xD29CC48078836602ULL, 0x11A3DE19FBCECD10ULL } }, /* XSUM_XXH128_testdata[11881] */ + { 3960, 0x9E3779B185EBCA8DULL, { 0xA6C22E0382278A9BULL, 0x7CCF1D8257F9C16AULL } }, /* XSUM_XXH128_testdata[11882] */ + { 3961, 0x0000000000000000ULL, { 0x33EA7BB343EBBDB5ULL, 0xC457795F5A3A16ABULL } }, /* XSUM_XXH128_testdata[11883] */ + { 3961, 0x000000009E3779B1ULL, { 0x8B51B12CB26E5BBFULL, 0xDC9955CF3E06D2DAULL } }, /* XSUM_XXH128_testdata[11884] */ + { 3961, 0x9E3779B185EBCA8DULL, { 0x75699EDC5951867DULL, 0x7DF90CE9755A6D83ULL } }, /* XSUM_XXH128_testdata[11885] */ + { 3962, 0x0000000000000000ULL, { 0x126AEA81F63590F4ULL, 0x83402C769E44648FULL } }, /* XSUM_XXH128_testdata[11886] */ + { 3962, 0x000000009E3779B1ULL, { 0x24FE277C1D27E078ULL, 0x14C50CB8BCCE008EULL } }, /* XSUM_XXH128_testdata[11887] */ + { 3962, 0x9E3779B185EBCA8DULL, { 0x886FD5F60CD3E0EEULL, 0x44CFDA51D2C84C04ULL } }, /* XSUM_XXH128_testdata[11888] */ + { 3963, 0x0000000000000000ULL, { 0x7841B62776B307AAULL, 0xE4C0C5C26B696679ULL } }, /* XSUM_XXH128_testdata[11889] */ + { 3963, 0x000000009E3779B1ULL, { 0xB242C9CD71FFCCF7ULL, 0xBC4A538811381648ULL } }, /* XSUM_XXH128_testdata[11890] */ + { 3963, 0x9E3779B185EBCA8DULL, { 0xF82E085079EC75FAULL, 0xEB3DDEB24B8030C5ULL } }, /* XSUM_XXH128_testdata[11891] */ + { 3964, 0x0000000000000000ULL, { 0xECBF0B670679A0F6ULL, 0xAD580720A6A4F942ULL } }, /* XSUM_XXH128_testdata[11892] */ + { 3964, 0x000000009E3779B1ULL, { 0x77373F58CE358250ULL, 0x3F95066A8642722BULL } }, /* XSUM_XXH128_testdata[11893] */ + { 3964, 0x9E3779B185EBCA8DULL, { 0x288522438415AC10ULL, 0xBBE316AD8074F9D3ULL } }, /* XSUM_XXH128_testdata[11894] */ + { 3965, 0x0000000000000000ULL, { 0x27A262BDF741056FULL, 0x932B6B56F6C57BBFULL } }, /* XSUM_XXH128_testdata[11895] */ + { 3965, 0x000000009E3779B1ULL, { 0x8B1239EC9D6031E1ULL, 0x572B8BEE094752DCULL } }, /* XSUM_XXH128_testdata[11896] */ + { 3965, 0x9E3779B185EBCA8DULL, { 0x59897257B77D9E2CULL, 0x93F238370B515501ULL } }, /* XSUM_XXH128_testdata[11897] */ + { 3966, 0x0000000000000000ULL, { 0x2F809602FE931B3CULL, 0x7CB8018FFE0EEE40ULL } }, /* XSUM_XXH128_testdata[11898] */ + { 3966, 0x000000009E3779B1ULL, { 0x445CE7B92EC0D4D6ULL, 0xEAC6C7F7BC9EC762ULL } }, /* XSUM_XXH128_testdata[11899] */ + { 3966, 0x9E3779B185EBCA8DULL, { 0xCADC0F606616E761ULL, 0x1033E8891D0BFCEAULL } }, /* XSUM_XXH128_testdata[11900] */ + { 3967, 0x0000000000000000ULL, { 0x141E1F3175F8052CULL, 0x8120B5A4B074E7E9ULL } }, /* XSUM_XXH128_testdata[11901] */ + { 3967, 0x000000009E3779B1ULL, { 0x4275D819CA5B4065ULL, 0x7A922635C96FB34BULL } }, /* XSUM_XXH128_testdata[11902] */ + { 3967, 0x9E3779B185EBCA8DULL, { 0x329CC677D6B63E01ULL, 0x4054CE5D890E85C9ULL } }, /* XSUM_XXH128_testdata[11903] */ + { 3968, 0x0000000000000000ULL, { 0xE4BBC3788C0BDD64ULL, 0x69FA3449377E05F5ULL } }, /* XSUM_XXH128_testdata[11904] */ + { 3968, 0x000000009E3779B1ULL, { 0xCE73B9246F9C4DDEULL, 0xAEA19BC9D1E858A8ULL } }, /* XSUM_XXH128_testdata[11905] */ + { 3968, 0x9E3779B185EBCA8DULL, { 0x5DEB326944BE123EULL, 0x5783B11C5A5185CDULL } }, /* XSUM_XXH128_testdata[11906] */ + { 3969, 0x0000000000000000ULL, { 0xE31B53A785778F54ULL, 0x4D0C9B4912BFC81AULL } }, /* XSUM_XXH128_testdata[11907] */ + { 3969, 0x000000009E3779B1ULL, { 0xDAA6CFF3536CFCB5ULL, 0x3A28441BA4C40E03ULL } }, /* XSUM_XXH128_testdata[11908] */ + { 3969, 0x9E3779B185EBCA8DULL, { 0x6A2E262687B66653ULL, 0x5319232E7C499C68ULL } }, /* XSUM_XXH128_testdata[11909] */ + { 3970, 0x0000000000000000ULL, { 0xE616BA7289AA5EBDULL, 0x2CCF7C6CE6D54FC1ULL } }, /* XSUM_XXH128_testdata[11910] */ + { 3970, 0x000000009E3779B1ULL, { 0x1905400C405C4FDDULL, 0x212F07FB03086872ULL } }, /* XSUM_XXH128_testdata[11911] */ + { 3970, 0x9E3779B185EBCA8DULL, { 0x8780C20C605A6403ULL, 0xE47F313C03032C35ULL } }, /* XSUM_XXH128_testdata[11912] */ + { 3971, 0x0000000000000000ULL, { 0x51921934B133BCBCULL, 0x4A49EA5C557E6FCCULL } }, /* XSUM_XXH128_testdata[11913] */ + { 3971, 0x000000009E3779B1ULL, { 0xB4E78BE526731B0BULL, 0xD5CEEEA932DE51C1ULL } }, /* XSUM_XXH128_testdata[11914] */ + { 3971, 0x9E3779B185EBCA8DULL, { 0x1491A8A669564D3DULL, 0xF0C791D66BE253F1ULL } }, /* XSUM_XXH128_testdata[11915] */ + { 3972, 0x0000000000000000ULL, { 0x2FD77747DC1304CBULL, 0x19D229768896FA08ULL } }, /* XSUM_XXH128_testdata[11916] */ + { 3972, 0x000000009E3779B1ULL, { 0xE8CF26A3C7D25DD1ULL, 0xD1E70619559BF3B7ULL } }, /* XSUM_XXH128_testdata[11917] */ + { 3972, 0x9E3779B185EBCA8DULL, { 0x00E8B8F5C0C77E2FULL, 0xDA6DC5B7D68A6F8DULL } }, /* XSUM_XXH128_testdata[11918] */ + { 3973, 0x0000000000000000ULL, { 0xD5FA765B6B147CBCULL, 0x8D7E9F0048069C53ULL } }, /* XSUM_XXH128_testdata[11919] */ + { 3973, 0x000000009E3779B1ULL, { 0xA9C93DB795069ABEULL, 0x7E024AFFF797A81EULL } }, /* XSUM_XXH128_testdata[11920] */ + { 3973, 0x9E3779B185EBCA8DULL, { 0xB8A191D1D112F794ULL, 0xC6F6F6868AEF29CAULL } }, /* XSUM_XXH128_testdata[11921] */ + { 3974, 0x0000000000000000ULL, { 0x096E1E10CE979DF3ULL, 0xF19D6087F3079F1BULL } }, /* XSUM_XXH128_testdata[11922] */ + { 3974, 0x000000009E3779B1ULL, { 0x9F61530FDD00E553ULL, 0x778122A42D9D8B7AULL } }, /* XSUM_XXH128_testdata[11923] */ + { 3974, 0x9E3779B185EBCA8DULL, { 0x25311F01B72B0F5DULL, 0x21E311E17216E3B9ULL } }, /* XSUM_XXH128_testdata[11924] */ + { 3975, 0x0000000000000000ULL, { 0x724CD26BCEE10D7DULL, 0xE242E2459E262023ULL } }, /* XSUM_XXH128_testdata[11925] */ + { 3975, 0x000000009E3779B1ULL, { 0xADC6EE6ECAFB7199ULL, 0x469FECE362F313AFULL } }, /* XSUM_XXH128_testdata[11926] */ + { 3975, 0x9E3779B185EBCA8DULL, { 0xFEFDAF2604950A59ULL, 0xC0E1F47C01DDCB6EULL } }, /* XSUM_XXH128_testdata[11927] */ + { 3976, 0x0000000000000000ULL, { 0x624EB9ED7DA8BC8BULL, 0x7C062168A81DE394ULL } }, /* XSUM_XXH128_testdata[11928] */ + { 3976, 0x000000009E3779B1ULL, { 0x60D1CEFB9BF0B98FULL, 0xF05B2BB41095A23BULL } }, /* XSUM_XXH128_testdata[11929] */ + { 3976, 0x9E3779B185EBCA8DULL, { 0xB1484E07468C6A87ULL, 0x726C69E72AE6022AULL } }, /* XSUM_XXH128_testdata[11930] */ + { 3977, 0x0000000000000000ULL, { 0xB97681089D65E1B3ULL, 0x03001631EDE6A3E6ULL } }, /* XSUM_XXH128_testdata[11931] */ + { 3977, 0x000000009E3779B1ULL, { 0x557B5023689217DCULL, 0x0FA3A30694156FEEULL } }, /* XSUM_XXH128_testdata[11932] */ + { 3977, 0x9E3779B185EBCA8DULL, { 0x995046795DDBFFA3ULL, 0x3F4C5544089DF435ULL } }, /* XSUM_XXH128_testdata[11933] */ + { 3978, 0x0000000000000000ULL, { 0x96CE1FD0B7BBB048ULL, 0xB2E9A076639C52C4ULL } }, /* XSUM_XXH128_testdata[11934] */ + { 3978, 0x000000009E3779B1ULL, { 0x5BA120BA1DBCF592ULL, 0xA66AD00E3B29A390ULL } }, /* XSUM_XXH128_testdata[11935] */ + { 3978, 0x9E3779B185EBCA8DULL, { 0xE6A71D136860A7DEULL, 0x700F136553254E11ULL } }, /* XSUM_XXH128_testdata[11936] */ + { 3979, 0x0000000000000000ULL, { 0x75DED1B9308B1928ULL, 0x5CC9A3A00066172DULL } }, /* XSUM_XXH128_testdata[11937] */ + { 3979, 0x000000009E3779B1ULL, { 0xFB89EF93F346B459ULL, 0xA861F8871184C0AFULL } }, /* XSUM_XXH128_testdata[11938] */ + { 3979, 0x9E3779B185EBCA8DULL, { 0xDED6EE6AC82110D1ULL, 0x6C5347D72BB18F3BULL } }, /* XSUM_XXH128_testdata[11939] */ + { 3980, 0x0000000000000000ULL, { 0x74108B5207DA6495ULL, 0x374AE9170A094953ULL } }, /* XSUM_XXH128_testdata[11940] */ + { 3980, 0x000000009E3779B1ULL, { 0x7A581ED3243C10ACULL, 0x419F1D60382C2C68ULL } }, /* XSUM_XXH128_testdata[11941] */ + { 3980, 0x9E3779B185EBCA8DULL, { 0xBCF1BB06F6F9F1D2ULL, 0xD812059BE7E7D57FULL } }, /* XSUM_XXH128_testdata[11942] */ + { 3981, 0x0000000000000000ULL, { 0x583132D445F6E764ULL, 0xC486AE8F702C2AC6ULL } }, /* XSUM_XXH128_testdata[11943] */ + { 3981, 0x000000009E3779B1ULL, { 0x2E062AC56AD8F069ULL, 0x10CC92AF83A2751BULL } }, /* XSUM_XXH128_testdata[11944] */ + { 3981, 0x9E3779B185EBCA8DULL, { 0xC5DD54DA32E1E97BULL, 0xA434350DE5430206ULL } }, /* XSUM_XXH128_testdata[11945] */ + { 3982, 0x0000000000000000ULL, { 0x9481AB87F0647F15ULL, 0x162F91CC4F9CC5D0ULL } }, /* XSUM_XXH128_testdata[11946] */ + { 3982, 0x000000009E3779B1ULL, { 0xAE2554FD116D7BEEULL, 0x19E3B624B8E7D289ULL } }, /* XSUM_XXH128_testdata[11947] */ + { 3982, 0x9E3779B185EBCA8DULL, { 0xF4477239172D8121ULL, 0x93B3423521D1DA21ULL } }, /* XSUM_XXH128_testdata[11948] */ + { 3983, 0x0000000000000000ULL, { 0xE200117CCB74CD9CULL, 0x0CA403D5B7867E4DULL } }, /* XSUM_XXH128_testdata[11949] */ + { 3983, 0x000000009E3779B1ULL, { 0xB8920F895577C5EEULL, 0xFAEF5AC477FD5F2BULL } }, /* XSUM_XXH128_testdata[11950] */ + { 3983, 0x9E3779B185EBCA8DULL, { 0x404ED3E5DB505D73ULL, 0xD9D18E9E41DE926AULL } }, /* XSUM_XXH128_testdata[11951] */ + { 3984, 0x0000000000000000ULL, { 0xCE9467B900AEFA85ULL, 0x611809AA955B26EFULL } }, /* XSUM_XXH128_testdata[11952] */ + { 3984, 0x000000009E3779B1ULL, { 0xE7F857DDAB3A80A5ULL, 0x8B6556E3C5D4F122ULL } }, /* XSUM_XXH128_testdata[11953] */ + { 3984, 0x9E3779B185EBCA8DULL, { 0x42C043E3244AF7E8ULL, 0x8718001BD6A4C000ULL } }, /* XSUM_XXH128_testdata[11954] */ + { 3985, 0x0000000000000000ULL, { 0xB8FE9445B6FBF8C0ULL, 0x43ED517C1FD21B1DULL } }, /* XSUM_XXH128_testdata[11955] */ + { 3985, 0x000000009E3779B1ULL, { 0xC0F4FA4EAA86CFE7ULL, 0x1AB8E5725EE3ABCBULL } }, /* XSUM_XXH128_testdata[11956] */ + { 3985, 0x9E3779B185EBCA8DULL, { 0xDF322C15B737F0A8ULL, 0x7CD33B7A6A22430CULL } }, /* XSUM_XXH128_testdata[11957] */ + { 3986, 0x0000000000000000ULL, { 0x983B40D937389E12ULL, 0x6468A683CBB80F44ULL } }, /* XSUM_XXH128_testdata[11958] */ + { 3986, 0x000000009E3779B1ULL, { 0x334B8DE5E9484A2AULL, 0x1ACFB1D95248A33AULL } }, /* XSUM_XXH128_testdata[11959] */ + { 3986, 0x9E3779B185EBCA8DULL, { 0x85128DA1EFFEC291ULL, 0x40A3EE0E9FFAAAA5ULL } }, /* XSUM_XXH128_testdata[11960] */ + { 3987, 0x0000000000000000ULL, { 0x022BDCA841C7E36AULL, 0x22F3558B3C26DF0BULL } }, /* XSUM_XXH128_testdata[11961] */ + { 3987, 0x000000009E3779B1ULL, { 0xFBD0A256EC8AB921ULL, 0x6E677F8E17D4ADA6ULL } }, /* XSUM_XXH128_testdata[11962] */ + { 3987, 0x9E3779B185EBCA8DULL, { 0x01FE2ADABDCFC75CULL, 0xE6C5432C2A34E286ULL } }, /* XSUM_XXH128_testdata[11963] */ + { 3988, 0x0000000000000000ULL, { 0xA2DBCDCFFDB287F2ULL, 0xA94D628637276731ULL } }, /* XSUM_XXH128_testdata[11964] */ + { 3988, 0x000000009E3779B1ULL, { 0xDB2A5856FF9D0D48ULL, 0x5FA88D10BFE444CFULL } }, /* XSUM_XXH128_testdata[11965] */ + { 3988, 0x9E3779B185EBCA8DULL, { 0x82D212A8FB8DBE03ULL, 0x73EF35B3A52824D5ULL } }, /* XSUM_XXH128_testdata[11966] */ + { 3989, 0x0000000000000000ULL, { 0xE9E21701E2BB0AF7ULL, 0xCA6A88B2167872D1ULL } }, /* XSUM_XXH128_testdata[11967] */ + { 3989, 0x000000009E3779B1ULL, { 0xC7F0E70032CDB8B0ULL, 0xDF980FDFC3986A21ULL } }, /* XSUM_XXH128_testdata[11968] */ + { 3989, 0x9E3779B185EBCA8DULL, { 0xDF967A00E46837CCULL, 0xB77BFD184FD909AAULL } }, /* XSUM_XXH128_testdata[11969] */ + { 3990, 0x0000000000000000ULL, { 0xA3951EEAC572F24DULL, 0x1C12944A2EDF7336ULL } }, /* XSUM_XXH128_testdata[11970] */ + { 3990, 0x000000009E3779B1ULL, { 0xE1DFDA45271C8C3FULL, 0x1B2A1D4C689726DAULL } }, /* XSUM_XXH128_testdata[11971] */ + { 3990, 0x9E3779B185EBCA8DULL, { 0x5FC170EF073D265DULL, 0x90D41568387273D0ULL } }, /* XSUM_XXH128_testdata[11972] */ + { 3991, 0x0000000000000000ULL, { 0x71B75CFBC5C7FF7AULL, 0x05B1E169245520BEULL } }, /* XSUM_XXH128_testdata[11973] */ + { 3991, 0x000000009E3779B1ULL, { 0xBC98DB2D6926C502ULL, 0x197C6ED8DBFBF272ULL } }, /* XSUM_XXH128_testdata[11974] */ + { 3991, 0x9E3779B185EBCA8DULL, { 0xE044F7B8115A2BEDULL, 0xCAB4613C496702C9ULL } }, /* XSUM_XXH128_testdata[11975] */ + { 3992, 0x0000000000000000ULL, { 0x560473B92CA66B06ULL, 0x64143F6C376C0971ULL } }, /* XSUM_XXH128_testdata[11976] */ + { 3992, 0x000000009E3779B1ULL, { 0x2B0825CF2BAF78F0ULL, 0x04BC41396231DBC0ULL } }, /* XSUM_XXH128_testdata[11977] */ + { 3992, 0x9E3779B185EBCA8DULL, { 0x5420B09C1771B61AULL, 0xD9387B47F7AE04B8ULL } }, /* XSUM_XXH128_testdata[11978] */ + { 3993, 0x0000000000000000ULL, { 0xD10183EE95BA2333ULL, 0x7BB228DE3C763460ULL } }, /* XSUM_XXH128_testdata[11979] */ + { 3993, 0x000000009E3779B1ULL, { 0x54CA355C309847F2ULL, 0x5997346A21AAD2FCULL } }, /* XSUM_XXH128_testdata[11980] */ + { 3993, 0x9E3779B185EBCA8DULL, { 0x6FC53C76904E0CBBULL, 0x58C7161D78059AB2ULL } }, /* XSUM_XXH128_testdata[11981] */ + { 3994, 0x0000000000000000ULL, { 0xA137F43241A5B99DULL, 0x3EB29083AE4CC026ULL } }, /* XSUM_XXH128_testdata[11982] */ + { 3994, 0x000000009E3779B1ULL, { 0xD4218553F5D0D833ULL, 0x68F4E7AC18BFCF6CULL } }, /* XSUM_XXH128_testdata[11983] */ + { 3994, 0x9E3779B185EBCA8DULL, { 0xD6421EA72D97B5B5ULL, 0x63635A0AB4C3793EULL } }, /* XSUM_XXH128_testdata[11984] */ + { 3995, 0x0000000000000000ULL, { 0x0B094A9A19E93FEAULL, 0xBD3D730CC82ED50CULL } }, /* XSUM_XXH128_testdata[11985] */ + { 3995, 0x000000009E3779B1ULL, { 0xF221CDCD603B8BEEULL, 0x643573BC91765EDBULL } }, /* XSUM_XXH128_testdata[11986] */ + { 3995, 0x9E3779B185EBCA8DULL, { 0xDF5FF6C3F8F85DAEULL, 0x480547FCB92C77C1ULL } }, /* XSUM_XXH128_testdata[11987] */ + { 3996, 0x0000000000000000ULL, { 0xF7F1B9E355A56C78ULL, 0xE26BEB64A2D58D22ULL } }, /* XSUM_XXH128_testdata[11988] */ + { 3996, 0x000000009E3779B1ULL, { 0xEA427C8C21FE5309ULL, 0x5600BE87B997092CULL } }, /* XSUM_XXH128_testdata[11989] */ + { 3996, 0x9E3779B185EBCA8DULL, { 0x440D8BF0C28F2386ULL, 0xDCE624E3537597CAULL } }, /* XSUM_XXH128_testdata[11990] */ + { 3997, 0x0000000000000000ULL, { 0xB59E0DA0D0AC15FAULL, 0x9019B90A1B80B7A4ULL } }, /* XSUM_XXH128_testdata[11991] */ + { 3997, 0x000000009E3779B1ULL, { 0x7DAB1C3398E6BE09ULL, 0x92A92182C3F05839ULL } }, /* XSUM_XXH128_testdata[11992] */ + { 3997, 0x9E3779B185EBCA8DULL, { 0x4C1A420DB1CC198BULL, 0xFD0139C840FD09CCULL } }, /* XSUM_XXH128_testdata[11993] */ + { 3998, 0x0000000000000000ULL, { 0x3C921215EB653D1DULL, 0x2E4E99EED0CE397BULL } }, /* XSUM_XXH128_testdata[11994] */ + { 3998, 0x000000009E3779B1ULL, { 0x0F58342E02C1D3D8ULL, 0x58B16DB8CCAB7811ULL } }, /* XSUM_XXH128_testdata[11995] */ + { 3998, 0x9E3779B185EBCA8DULL, { 0x26E9B9483790551FULL, 0xA69E93C6C73E53D9ULL } }, /* XSUM_XXH128_testdata[11996] */ + { 3999, 0x0000000000000000ULL, { 0xA4A38A7850158E01ULL, 0x42B0F2DD2CCDE339ULL } }, /* XSUM_XXH128_testdata[11997] */ + { 3999, 0x000000009E3779B1ULL, { 0xCAC68648F6BAE700ULL, 0x6AAFD1267C8B7083ULL } }, /* XSUM_XXH128_testdata[11998] */ + { 3999, 0x9E3779B185EBCA8DULL, { 0xC8A7D8FE1F072911ULL, 0xE4F550589121717AULL } }, /* XSUM_XXH128_testdata[11999] */ + { 4000, 0x0000000000000000ULL, { 0xD4BBD44AE7A245D6ULL, 0x96AAC0AEDCE46149ULL } }, /* XSUM_XXH128_testdata[12000] */ + { 4000, 0x000000009E3779B1ULL, { 0x1F8BDC777AD5A5CBULL, 0x60DB627041DEA629ULL } }, /* XSUM_XXH128_testdata[12001] */ + { 4000, 0x9E3779B185EBCA8DULL, { 0x14D1D38BF7F90929ULL, 0x784C8D03F3B2C209ULL } }, /* XSUM_XXH128_testdata[12002] */ + { 4001, 0x0000000000000000ULL, { 0x40865A418C827014ULL, 0xEB813993C4D13A19ULL } }, /* XSUM_XXH128_testdata[12003] */ + { 4001, 0x000000009E3779B1ULL, { 0x45F56695DB5C8B0CULL, 0xD715BE78B3527479ULL } }, /* XSUM_XXH128_testdata[12004] */ + { 4001, 0x9E3779B185EBCA8DULL, { 0xA2CE1E5EAAE13199ULL, 0xA5C0BA5F026D8D87ULL } }, /* XSUM_XXH128_testdata[12005] */ + { 4002, 0x0000000000000000ULL, { 0xDED0BB8EB0E9E5BBULL, 0xB22B3A5B529A667CULL } }, /* XSUM_XXH128_testdata[12006] */ + { 4002, 0x000000009E3779B1ULL, { 0x8BF52FC3174E6E6AULL, 0xBEAE20156631A38DULL } }, /* XSUM_XXH128_testdata[12007] */ + { 4002, 0x9E3779B185EBCA8DULL, { 0xEDCD3A406D723DEAULL, 0x1A17461551BAFFB3ULL } }, /* XSUM_XXH128_testdata[12008] */ + { 4003, 0x0000000000000000ULL, { 0xAA4AD1D0A48CB176ULL, 0x8BD41F6840770D45ULL } }, /* XSUM_XXH128_testdata[12009] */ + { 4003, 0x000000009E3779B1ULL, { 0xAEE007565B0042DBULL, 0x5C4CDCBAB70A7635ULL } }, /* XSUM_XXH128_testdata[12010] */ + { 4003, 0x9E3779B185EBCA8DULL, { 0x880A5B734D046849ULL, 0x823E45EDF4571F99ULL } }, /* XSUM_XXH128_testdata[12011] */ + { 4004, 0x0000000000000000ULL, { 0xD58188ABC81D37C6ULL, 0x46B283FE8F6B719CULL } }, /* XSUM_XXH128_testdata[12012] */ + { 4004, 0x000000009E3779B1ULL, { 0xE18D2F14F2FDEC59ULL, 0xDED6C1629B62F6C8ULL } }, /* XSUM_XXH128_testdata[12013] */ + { 4004, 0x9E3779B185EBCA8DULL, { 0x712781E12FBEF921ULL, 0xFAC6B585383E1189ULL } }, /* XSUM_XXH128_testdata[12014] */ + { 4005, 0x0000000000000000ULL, { 0x5B06AA2C44621825ULL, 0xB274F0F08C6B52E3ULL } }, /* XSUM_XXH128_testdata[12015] */ + { 4005, 0x000000009E3779B1ULL, { 0x95BFC155B2A01D93ULL, 0xB657DADB297FBCBBULL } }, /* XSUM_XXH128_testdata[12016] */ + { 4005, 0x9E3779B185EBCA8DULL, { 0xD9C37C284E6A8216ULL, 0x73EB73BB7E46F2E1ULL } }, /* XSUM_XXH128_testdata[12017] */ + { 4006, 0x0000000000000000ULL, { 0xEB57CC9F39C8879EULL, 0xDAE56DE27F2A0008ULL } }, /* XSUM_XXH128_testdata[12018] */ + { 4006, 0x000000009E3779B1ULL, { 0x5DF53AE0BF18EDF7ULL, 0xB2E6FFEBC2FD2AE2ULL } }, /* XSUM_XXH128_testdata[12019] */ + { 4006, 0x9E3779B185EBCA8DULL, { 0x4F33FAAF2C4EC509ULL, 0x6F13836602C132EBULL } }, /* XSUM_XXH128_testdata[12020] */ + { 4007, 0x0000000000000000ULL, { 0x3DCDD807BD42EE26ULL, 0xE55336D81AC59A9BULL } }, /* XSUM_XXH128_testdata[12021] */ + { 4007, 0x000000009E3779B1ULL, { 0x7F37D22BF3C733A5ULL, 0x6B92D55DFC96E7B8ULL } }, /* XSUM_XXH128_testdata[12022] */ + { 4007, 0x9E3779B185EBCA8DULL, { 0xD8F0E8A6D8B9FB59ULL, 0x6E0A84AD2B364B37ULL } }, /* XSUM_XXH128_testdata[12023] */ + { 4008, 0x0000000000000000ULL, { 0xF6F0C51DDFE11B30ULL, 0x244811AA0635583AULL } }, /* XSUM_XXH128_testdata[12024] */ + { 4008, 0x000000009E3779B1ULL, { 0xD63E59BD4222ECE2ULL, 0x41BD882FD050681CULL } }, /* XSUM_XXH128_testdata[12025] */ + { 4008, 0x9E3779B185EBCA8DULL, { 0xA6DB86CDF49CDC24ULL, 0xC7447DAF67350DB3ULL } }, /* XSUM_XXH128_testdata[12026] */ + { 4009, 0x0000000000000000ULL, { 0x5BED8336DA2E1B91ULL, 0xB85EE6F21FC10FE3ULL } }, /* XSUM_XXH128_testdata[12027] */ + { 4009, 0x000000009E3779B1ULL, { 0x755952F3D671ABFEULL, 0xD652830FC5B04265ULL } }, /* XSUM_XXH128_testdata[12028] */ + { 4009, 0x9E3779B185EBCA8DULL, { 0x80C78888E438C8E4ULL, 0x0794B70AFB7A93EDULL } }, /* XSUM_XXH128_testdata[12029] */ + { 4010, 0x0000000000000000ULL, { 0x18B1FDDD465EA2C1ULL, 0xA022BF9A74E21682ULL } }, /* XSUM_XXH128_testdata[12030] */ + { 4010, 0x000000009E3779B1ULL, { 0x23332DDE5E2C2992ULL, 0x25D969F96BF67460ULL } }, /* XSUM_XXH128_testdata[12031] */ + { 4010, 0x9E3779B185EBCA8DULL, { 0x44B5135B49E9F8C5ULL, 0x4ED6FEE5D90D3637ULL } }, /* XSUM_XXH128_testdata[12032] */ + { 4011, 0x0000000000000000ULL, { 0xB5C12C9C61209F68ULL, 0x12CDC0C7CAC38DDEULL } }, /* XSUM_XXH128_testdata[12033] */ + { 4011, 0x000000009E3779B1ULL, { 0x78404738FE29A0E6ULL, 0xF52A9128A8788AF8ULL } }, /* XSUM_XXH128_testdata[12034] */ + { 4011, 0x9E3779B185EBCA8DULL, { 0x282C356F51F01633ULL, 0x3E726CE188BBA456ULL } }, /* XSUM_XXH128_testdata[12035] */ + { 4012, 0x0000000000000000ULL, { 0x85C82A6C0F1274E3ULL, 0x6604DF649F97D469ULL } }, /* XSUM_XXH128_testdata[12036] */ + { 4012, 0x000000009E3779B1ULL, { 0xF8ACF858E0518105ULL, 0xB8BCEE201C50D015ULL } }, /* XSUM_XXH128_testdata[12037] */ + { 4012, 0x9E3779B185EBCA8DULL, { 0x3F3CC56500850438ULL, 0x93D5F7A31131044AULL } }, /* XSUM_XXH128_testdata[12038] */ + { 4013, 0x0000000000000000ULL, { 0x44AA6A2ECB850B99ULL, 0x85E27174CB17C1B1ULL } }, /* XSUM_XXH128_testdata[12039] */ + { 4013, 0x000000009E3779B1ULL, { 0x8AC029F298143A38ULL, 0x0B7496DBAF500F6FULL } }, /* XSUM_XXH128_testdata[12040] */ + { 4013, 0x9E3779B185EBCA8DULL, { 0xFC918DF96A2F9086ULL, 0xF2A38C019E11BA4CULL } }, /* XSUM_XXH128_testdata[12041] */ + { 4014, 0x0000000000000000ULL, { 0x6CC9DA2929EBB547ULL, 0xC9DC14AB770AFC06ULL } }, /* XSUM_XXH128_testdata[12042] */ + { 4014, 0x000000009E3779B1ULL, { 0x959A54DAAEF18A5FULL, 0x4BD04EC0CA5E1C9AULL } }, /* XSUM_XXH128_testdata[12043] */ + { 4014, 0x9E3779B185EBCA8DULL, { 0x0FA30447394E3206ULL, 0x6BCE4AFAD524F320ULL } }, /* XSUM_XXH128_testdata[12044] */ + { 4015, 0x0000000000000000ULL, { 0x45D8135F5AEF31F4ULL, 0xF54780EFD4F92385ULL } }, /* XSUM_XXH128_testdata[12045] */ + { 4015, 0x000000009E3779B1ULL, { 0x271180DF1D3BC1A2ULL, 0x1177D80C1ED9A435ULL } }, /* XSUM_XXH128_testdata[12046] */ + { 4015, 0x9E3779B185EBCA8DULL, { 0x52BB0C869F802BE6ULL, 0x9250C29620A55716ULL } }, /* XSUM_XXH128_testdata[12047] */ + { 4016, 0x0000000000000000ULL, { 0x7620342B18B38037ULL, 0x6DE8D427C81CD086ULL } }, /* XSUM_XXH128_testdata[12048] */ + { 4016, 0x000000009E3779B1ULL, { 0xF7FA8087BC562486ULL, 0xB4072DD7CB31631FULL } }, /* XSUM_XXH128_testdata[12049] */ + { 4016, 0x9E3779B185EBCA8DULL, { 0xBD27FB07E38FFB89ULL, 0x6F9385DC8B628BD7ULL } }, /* XSUM_XXH128_testdata[12050] */ + { 4017, 0x0000000000000000ULL, { 0x19AA8582519EFB78ULL, 0xE0C8C6E9B7F3CE86ULL } }, /* XSUM_XXH128_testdata[12051] */ + { 4017, 0x000000009E3779B1ULL, { 0x9F3331F7D4C5B40FULL, 0x2893421DFA88D131ULL } }, /* XSUM_XXH128_testdata[12052] */ + { 4017, 0x9E3779B185EBCA8DULL, { 0xF6AE9ED2299687ECULL, 0x72C20CCC2D8A361BULL } }, /* XSUM_XXH128_testdata[12053] */ + { 4018, 0x0000000000000000ULL, { 0x18AB9343042FFD7BULL, 0x21970F294DDAC44CULL } }, /* XSUM_XXH128_testdata[12054] */ + { 4018, 0x000000009E3779B1ULL, { 0x133F3047D21D7B37ULL, 0x9A5CCE40CF0EA5A2ULL } }, /* XSUM_XXH128_testdata[12055] */ + { 4018, 0x9E3779B185EBCA8DULL, { 0x9CA0D8345D0C1364ULL, 0x634D1629740E521FULL } }, /* XSUM_XXH128_testdata[12056] */ + { 4019, 0x0000000000000000ULL, { 0x58240880A0D0C9DAULL, 0x6DA0851BAC4C118EULL } }, /* XSUM_XXH128_testdata[12057] */ + { 4019, 0x000000009E3779B1ULL, { 0xD1CDCEA596DC82A3ULL, 0xCACAC226F02DF774ULL } }, /* XSUM_XXH128_testdata[12058] */ + { 4019, 0x9E3779B185EBCA8DULL, { 0x3084812F602A7184ULL, 0xF393EAABEA890B2CULL } }, /* XSUM_XXH128_testdata[12059] */ + { 4020, 0x0000000000000000ULL, { 0xC6BF91DBA283CBFDULL, 0xE51420BB986E3C29ULL } }, /* XSUM_XXH128_testdata[12060] */ + { 4020, 0x000000009E3779B1ULL, { 0x5FF3C77B9FA56A38ULL, 0x40B4EE8459BFF8DBULL } }, /* XSUM_XXH128_testdata[12061] */ + { 4020, 0x9E3779B185EBCA8DULL, { 0x7C966FE6D9E62F5FULL, 0xE22677397AB736E6ULL } }, /* XSUM_XXH128_testdata[12062] */ + { 4021, 0x0000000000000000ULL, { 0x65BA8FAA88EE3FB6ULL, 0x31AD16588E73CF1CULL } }, /* XSUM_XXH128_testdata[12063] */ + { 4021, 0x000000009E3779B1ULL, { 0x35DCDCF0759EBCAEULL, 0x2EBE2DF49980290AULL } }, /* XSUM_XXH128_testdata[12064] */ + { 4021, 0x9E3779B185EBCA8DULL, { 0x37826DE37F8188ADULL, 0x4E422FFBE7019E96ULL } }, /* XSUM_XXH128_testdata[12065] */ + { 4022, 0x0000000000000000ULL, { 0xE54A695510735977ULL, 0xAA47B471438E326EULL } }, /* XSUM_XXH128_testdata[12066] */ + { 4022, 0x000000009E3779B1ULL, { 0x5A448A9E4271DDD8ULL, 0xCA06E874419EF398ULL } }, /* XSUM_XXH128_testdata[12067] */ + { 4022, 0x9E3779B185EBCA8DULL, { 0x55CCAA4287B96BAFULL, 0x58F1B09CF0737DEDULL } }, /* XSUM_XXH128_testdata[12068] */ + { 4023, 0x0000000000000000ULL, { 0x8E04EDA3E75BF177ULL, 0xAF568681626563AFULL } }, /* XSUM_XXH128_testdata[12069] */ + { 4023, 0x000000009E3779B1ULL, { 0x89A1D9FA352520B3ULL, 0x7083580360572879ULL } }, /* XSUM_XXH128_testdata[12070] */ + { 4023, 0x9E3779B185EBCA8DULL, { 0xE8DD69B31C7AA562ULL, 0x1575FF83E6C675EEULL } }, /* XSUM_XXH128_testdata[12071] */ + { 4024, 0x0000000000000000ULL, { 0x8A0F3CA734A6FE60ULL, 0x192F6C598252A3EBULL } }, /* XSUM_XXH128_testdata[12072] */ + { 4024, 0x000000009E3779B1ULL, { 0x97B39145E13218BCULL, 0x2B6A39883CD39CBFULL } }, /* XSUM_XXH128_testdata[12073] */ + { 4024, 0x9E3779B185EBCA8DULL, { 0xBD6286044C530E55ULL, 0x4CF6802F959666FBULL } }, /* XSUM_XXH128_testdata[12074] */ + { 4025, 0x0000000000000000ULL, { 0xD9ED85C42BB2F252ULL, 0xFFDDBEF427178907ULL } }, /* XSUM_XXH128_testdata[12075] */ + { 4025, 0x000000009E3779B1ULL, { 0x5B2FDC9A536A0D2AULL, 0x0EBC02FEB5E86916ULL } }, /* XSUM_XXH128_testdata[12076] */ + { 4025, 0x9E3779B185EBCA8DULL, { 0xD0ECFCBE239FDAE4ULL, 0x92790027768B0CB8ULL } }, /* XSUM_XXH128_testdata[12077] */ + { 4026, 0x0000000000000000ULL, { 0xF8084F228EC4F387ULL, 0xBFB551290A69862CULL } }, /* XSUM_XXH128_testdata[12078] */ + { 4026, 0x000000009E3779B1ULL, { 0x7F96057AADF5A0EDULL, 0x687D31148F2FFBCBULL } }, /* XSUM_XXH128_testdata[12079] */ + { 4026, 0x9E3779B185EBCA8DULL, { 0x406784D868BF9889ULL, 0xDDDC1E0F16650DE0ULL } }, /* XSUM_XXH128_testdata[12080] */ + { 4027, 0x0000000000000000ULL, { 0x1C9144339B38AA9AULL, 0x1FE0A63B1F2B20A7ULL } }, /* XSUM_XXH128_testdata[12081] */ + { 4027, 0x000000009E3779B1ULL, { 0x52C5D30CF7F24FEAULL, 0xECC190382AC6E095ULL } }, /* XSUM_XXH128_testdata[12082] */ + { 4027, 0x9E3779B185EBCA8DULL, { 0x416651D9DF1E676FULL, 0xFEAD2D70B7659463ULL } }, /* XSUM_XXH128_testdata[12083] */ + { 4028, 0x0000000000000000ULL, { 0xED9E073AD05153EAULL, 0x4BB6A5CCCBC4D7FDULL } }, /* XSUM_XXH128_testdata[12084] */ + { 4028, 0x000000009E3779B1ULL, { 0x6A8AF2962064888BULL, 0xFDBDCCF821000500ULL } }, /* XSUM_XXH128_testdata[12085] */ + { 4028, 0x9E3779B185EBCA8DULL, { 0xFBD66B77B585F7A0ULL, 0x9F1A26056951A6B2ULL } }, /* XSUM_XXH128_testdata[12086] */ + { 4029, 0x0000000000000000ULL, { 0x4E8E5C7C933C15C7ULL, 0xD71DEA87F79F11DFULL } }, /* XSUM_XXH128_testdata[12087] */ + { 4029, 0x000000009E3779B1ULL, { 0x5702ECCEA2206B2FULL, 0x00563BD5E590127BULL } }, /* XSUM_XXH128_testdata[12088] */ + { 4029, 0x9E3779B185EBCA8DULL, { 0xCF53A8E7C5B6C534ULL, 0x8035EDA194B1375BULL } }, /* XSUM_XXH128_testdata[12089] */ + { 4030, 0x0000000000000000ULL, { 0x7AF4A9E0038F11F7ULL, 0x7B8E6ACB38F5F647ULL } }, /* XSUM_XXH128_testdata[12090] */ + { 4030, 0x000000009E3779B1ULL, { 0x0C0DF348C50E6824ULL, 0xFA5D012CB69F650DULL } }, /* XSUM_XXH128_testdata[12091] */ + { 4030, 0x9E3779B185EBCA8DULL, { 0x8A017810F4FC9DEDULL, 0x9F89F5D494C6C9BBULL } }, /* XSUM_XXH128_testdata[12092] */ + { 4031, 0x0000000000000000ULL, { 0x8BD0CF454B28920EULL, 0xE045A21855546E82ULL } }, /* XSUM_XXH128_testdata[12093] */ + { 4031, 0x000000009E3779B1ULL, { 0x8F37936C9193A765ULL, 0xF89887BD538E72DEULL } }, /* XSUM_XXH128_testdata[12094] */ + { 4031, 0x9E3779B185EBCA8DULL, { 0xAD5E5C4D36915D21ULL, 0xC6701B2ED638BD40ULL } }, /* XSUM_XXH128_testdata[12095] */ + { 4032, 0x0000000000000000ULL, { 0x526C9E698660795FULL, 0x8CE99EF2876FAF30ULL } }, /* XSUM_XXH128_testdata[12096] */ + { 4032, 0x000000009E3779B1ULL, { 0x088695FC31EAB457ULL, 0x76D483A80EE271B5ULL } }, /* XSUM_XXH128_testdata[12097] */ + { 4032, 0x9E3779B185EBCA8DULL, { 0xEDFA9AF90A2570F4ULL, 0x00C5ADFAB20F9B88ULL } }, /* XSUM_XXH128_testdata[12098] */ + { 4033, 0x0000000000000000ULL, { 0x5B78ACBA805C7A9DULL, 0x0DB6B8034A0AB08EULL } }, /* XSUM_XXH128_testdata[12099] */ + { 4033, 0x000000009E3779B1ULL, { 0x87A6E65D24F9402FULL, 0x18B17AC69C245542ULL } }, /* XSUM_XXH128_testdata[12100] */ + { 4033, 0x9E3779B185EBCA8DULL, { 0xE4FF46D5A5AD419BULL, 0xB0345F3C4A1BDC39ULL } }, /* XSUM_XXH128_testdata[12101] */ + { 4034, 0x0000000000000000ULL, { 0xA102C5136A2E85B3ULL, 0xDFC0BCF53A3A10F5ULL } }, /* XSUM_XXH128_testdata[12102] */ + { 4034, 0x000000009E3779B1ULL, { 0x319934842C00B428ULL, 0xFAB4397C8B21DF39ULL } }, /* XSUM_XXH128_testdata[12103] */ + { 4034, 0x9E3779B185EBCA8DULL, { 0x395C36DE86C13BB0ULL, 0x868D5A9DEF297371ULL } }, /* XSUM_XXH128_testdata[12104] */ + { 4035, 0x0000000000000000ULL, { 0x4511241B19C0FA71ULL, 0x721632FB62D262C2ULL } }, /* XSUM_XXH128_testdata[12105] */ + { 4035, 0x000000009E3779B1ULL, { 0xE9E20C35A88FA80AULL, 0x9456CF248C9EC71BULL } }, /* XSUM_XXH128_testdata[12106] */ + { 4035, 0x9E3779B185EBCA8DULL, { 0x5E7C04526A4CD6E9ULL, 0x407A24E1B155DF19ULL } }, /* XSUM_XXH128_testdata[12107] */ + { 4036, 0x0000000000000000ULL, { 0x313E19B2397F5306ULL, 0xD0906614FC071208ULL } }, /* XSUM_XXH128_testdata[12108] */ + { 4036, 0x000000009E3779B1ULL, { 0x8827751054976A08ULL, 0xE9656CDC490D0531ULL } }, /* XSUM_XXH128_testdata[12109] */ + { 4036, 0x9E3779B185EBCA8DULL, { 0x8E4378ADB6056F30ULL, 0xA930B9BE45AB08F0ULL } }, /* XSUM_XXH128_testdata[12110] */ + { 4037, 0x0000000000000000ULL, { 0xF45852F43FB45730ULL, 0x28F2C20ADF6562E6ULL } }, /* XSUM_XXH128_testdata[12111] */ + { 4037, 0x000000009E3779B1ULL, { 0x7049D22E007D6037ULL, 0x1F0ED3128AA5343EULL } }, /* XSUM_XXH128_testdata[12112] */ + { 4037, 0x9E3779B185EBCA8DULL, { 0x9EABF4BCD1D9854DULL, 0x76F3C1730DF4D64BULL } }, /* XSUM_XXH128_testdata[12113] */ + { 4038, 0x0000000000000000ULL, { 0xAEB3ED5AA3FAFBB3ULL, 0x10FE014A2CF9DCA3ULL } }, /* XSUM_XXH128_testdata[12114] */ + { 4038, 0x000000009E3779B1ULL, { 0x8DEE5BA97BCBC13BULL, 0x37114AEA0398F184ULL } }, /* XSUM_XXH128_testdata[12115] */ + { 4038, 0x9E3779B185EBCA8DULL, { 0xDD8ED04139CDA479ULL, 0x9DD8F010C9E381FBULL } }, /* XSUM_XXH128_testdata[12116] */ + { 4039, 0x0000000000000000ULL, { 0x629A488F54BB9A5CULL, 0xC3FA6E3944B749FEULL } }, /* XSUM_XXH128_testdata[12117] */ + { 4039, 0x000000009E3779B1ULL, { 0xB2437C4FBE76D05BULL, 0xFDBEB3B6A80FA500ULL } }, /* XSUM_XXH128_testdata[12118] */ + { 4039, 0x9E3779B185EBCA8DULL, { 0x88D289E20F432896ULL, 0xB67CAA09809DF524ULL } }, /* XSUM_XXH128_testdata[12119] */ + { 4040, 0x0000000000000000ULL, { 0x302AC702D017AF48ULL, 0xE6AEA08E96AE9411ULL } }, /* XSUM_XXH128_testdata[12120] */ + { 4040, 0x000000009E3779B1ULL, { 0xDEF85C6DD05D0EF8ULL, 0x554DC522AD699CD2ULL } }, /* XSUM_XXH128_testdata[12121] */ + { 4040, 0x9E3779B185EBCA8DULL, { 0x63B3EBA53DD3C7F3ULL, 0xD93A4637FD9EBCC1ULL } }, /* XSUM_XXH128_testdata[12122] */ + { 4041, 0x0000000000000000ULL, { 0xF392BF0F187C48A3ULL, 0x72817D30F94043E8ULL } }, /* XSUM_XXH128_testdata[12123] */ + { 4041, 0x000000009E3779B1ULL, { 0xD18164FA609CF715ULL, 0x537E530D06A0F8FAULL } }, /* XSUM_XXH128_testdata[12124] */ + { 4041, 0x9E3779B185EBCA8DULL, { 0x4B18A944D21F9E8FULL, 0x8C0220B17ED50720ULL } }, /* XSUM_XXH128_testdata[12125] */ + { 4042, 0x0000000000000000ULL, { 0x7E2E33EAE958DCF4ULL, 0x43BFEC6C8742CE35ULL } }, /* XSUM_XXH128_testdata[12126] */ + { 4042, 0x000000009E3779B1ULL, { 0xC1877A73FA900118ULL, 0x1437C063DE4FBF6DULL } }, /* XSUM_XXH128_testdata[12127] */ + { 4042, 0x9E3779B185EBCA8DULL, { 0xDA44FEE50C8F5BB0ULL, 0x02F7D0F4ADAC0B7DULL } }, /* XSUM_XXH128_testdata[12128] */ + { 4043, 0x0000000000000000ULL, { 0x7955E4BB5942274AULL, 0xF58228B99C7ECC80ULL } }, /* XSUM_XXH128_testdata[12129] */ + { 4043, 0x000000009E3779B1ULL, { 0x9D8CDFCAFB516E43ULL, 0xAFFCF2B39940AC4BULL } }, /* XSUM_XXH128_testdata[12130] */ + { 4043, 0x9E3779B185EBCA8DULL, { 0xC28A8539FECBA7EBULL, 0x1AB3A8A82FF5CCD8ULL } }, /* XSUM_XXH128_testdata[12131] */ + { 4044, 0x0000000000000000ULL, { 0x7FFDDDE92A33E6F3ULL, 0xDA491EAF0254C5E4ULL } }, /* XSUM_XXH128_testdata[12132] */ + { 4044, 0x000000009E3779B1ULL, { 0xE6A90A879FBB1B09ULL, 0x245C362A87FD666EULL } }, /* XSUM_XXH128_testdata[12133] */ + { 4044, 0x9E3779B185EBCA8DULL, { 0x51923CA9096E6215ULL, 0x9C738951D8D8864CULL } }, /* XSUM_XXH128_testdata[12134] */ + { 4045, 0x0000000000000000ULL, { 0xE876C93C712F5CE6ULL, 0x2AC424F3F34E12A2ULL } }, /* XSUM_XXH128_testdata[12135] */ + { 4045, 0x000000009E3779B1ULL, { 0xC5EEDF6D322E1FE0ULL, 0x9BB94E4FE52997A5ULL } }, /* XSUM_XXH128_testdata[12136] */ + { 4045, 0x9E3779B185EBCA8DULL, { 0xDC6FD6E67A34FED4ULL, 0x5BAD35B4F283C10AULL } }, /* XSUM_XXH128_testdata[12137] */ + { 4046, 0x0000000000000000ULL, { 0xCC6D082EB77008E6ULL, 0xCAE6EE9D14891F4BULL } }, /* XSUM_XXH128_testdata[12138] */ + { 4046, 0x000000009E3779B1ULL, { 0xF383A90459055FD7ULL, 0x44AFE54C2372CF56ULL } }, /* XSUM_XXH128_testdata[12139] */ + { 4046, 0x9E3779B185EBCA8DULL, { 0x791FEF31ACFE46C7ULL, 0x95D64B5B97421255ULL } }, /* XSUM_XXH128_testdata[12140] */ + { 4047, 0x0000000000000000ULL, { 0xC4DA2A18C857B469ULL, 0x8076F48AF505497BULL } }, /* XSUM_XXH128_testdata[12141] */ + { 4047, 0x000000009E3779B1ULL, { 0x88826A7F5E5582E5ULL, 0x6CC716C40519EB64ULL } }, /* XSUM_XXH128_testdata[12142] */ + { 4047, 0x9E3779B185EBCA8DULL, { 0x6E5C68216122FB2BULL, 0x7FCDC893C37DD5E5ULL } }, /* XSUM_XXH128_testdata[12143] */ + { 4048, 0x0000000000000000ULL, { 0x0AC08275816C6F95ULL, 0xF3A4F654845607A9ULL } }, /* XSUM_XXH128_testdata[12144] */ + { 4048, 0x000000009E3779B1ULL, { 0x07E146965BA53631ULL, 0xE5461BE5FE62E412ULL } }, /* XSUM_XXH128_testdata[12145] */ + { 4048, 0x9E3779B185EBCA8DULL, { 0x108827705704EFC6ULL, 0x1CF0AF0027CCF455ULL } }, /* XSUM_XXH128_testdata[12146] */ + { 4049, 0x0000000000000000ULL, { 0xB8E89026CB7C7029ULL, 0x429E5D83877E7AF7ULL } }, /* XSUM_XXH128_testdata[12147] */ + { 4049, 0x000000009E3779B1ULL, { 0x7035788F86E2CCCCULL, 0xD63B4F15F3D4C4CAULL } }, /* XSUM_XXH128_testdata[12148] */ + { 4049, 0x9E3779B185EBCA8DULL, { 0xB61ABB09B081A25DULL, 0xB36AA4C4B1F274C7ULL } }, /* XSUM_XXH128_testdata[12149] */ + { 4050, 0x0000000000000000ULL, { 0xEDF79795BF9144C8ULL, 0x52682C115C27CE41ULL } }, /* XSUM_XXH128_testdata[12150] */ + { 4050, 0x000000009E3779B1ULL, { 0xB848899C9BB550C8ULL, 0x1A1145FA433063D0ULL } }, /* XSUM_XXH128_testdata[12151] */ + { 4050, 0x9E3779B185EBCA8DULL, { 0xB74696F2CA2997D1ULL, 0x465CB342B7C2D949ULL } }, /* XSUM_XXH128_testdata[12152] */ + { 4051, 0x0000000000000000ULL, { 0xC729C7AC4BB14964ULL, 0x509EAB137D6CF2FEULL } }, /* XSUM_XXH128_testdata[12153] */ + { 4051, 0x000000009E3779B1ULL, { 0xA477E246AF2A5ECBULL, 0xE586BEF3B125FE98ULL } }, /* XSUM_XXH128_testdata[12154] */ + { 4051, 0x9E3779B185EBCA8DULL, { 0x9D1CABF0F0D96765ULL, 0xD6F3FAECEBB1FB10ULL } }, /* XSUM_XXH128_testdata[12155] */ + { 4052, 0x0000000000000000ULL, { 0x609A24843463E169ULL, 0x5B8F35F9C483DF05ULL } }, /* XSUM_XXH128_testdata[12156] */ + { 4052, 0x000000009E3779B1ULL, { 0xFABA72FAA1C452E2ULL, 0x4337F98D4A6C6AC2ULL } }, /* XSUM_XXH128_testdata[12157] */ + { 4052, 0x9E3779B185EBCA8DULL, { 0xB87E44998D71C162ULL, 0xE352A4E9C94F7BE5ULL } }, /* XSUM_XXH128_testdata[12158] */ + { 4053, 0x0000000000000000ULL, { 0x1BED4238AF1CB24BULL, 0xB33A9289B4928574ULL } }, /* XSUM_XXH128_testdata[12159] */ + { 4053, 0x000000009E3779B1ULL, { 0xD58BD24EC74962DCULL, 0xCBC2714C04ACBFADULL } }, /* XSUM_XXH128_testdata[12160] */ + { 4053, 0x9E3779B185EBCA8DULL, { 0x31D93BB2EA4F386FULL, 0xACB3404C40811783ULL } }, /* XSUM_XXH128_testdata[12161] */ + { 4054, 0x0000000000000000ULL, { 0x770B55A6A483BCA4ULL, 0xDF1AF7287A212D18ULL } }, /* XSUM_XXH128_testdata[12162] */ + { 4054, 0x000000009E3779B1ULL, { 0x8318A5748BA88EE7ULL, 0x40A248624E171124ULL } }, /* XSUM_XXH128_testdata[12163] */ + { 4054, 0x9E3779B185EBCA8DULL, { 0xBA70C2B74F653493ULL, 0x4E7A43ECB02F95B4ULL } }, /* XSUM_XXH128_testdata[12164] */ + { 4055, 0x0000000000000000ULL, { 0x23D3E35D5AD116E8ULL, 0x890CC34C8AFC0A49ULL } }, /* XSUM_XXH128_testdata[12165] */ + { 4055, 0x000000009E3779B1ULL, { 0x5F950D3D3CAFE3CAULL, 0xC30254530C698E6CULL } }, /* XSUM_XXH128_testdata[12166] */ + { 4055, 0x9E3779B185EBCA8DULL, { 0xE340C14E0B16781EULL, 0x8EFF162EF04EE897ULL } }, /* XSUM_XXH128_testdata[12167] */ + { 4056, 0x0000000000000000ULL, { 0x8F52A469B0314027ULL, 0x259AD397D38DE876ULL } }, /* XSUM_XXH128_testdata[12168] */ + { 4056, 0x000000009E3779B1ULL, { 0xB7F15014746ADC90ULL, 0xF8778E4A509BF6D1ULL } }, /* XSUM_XXH128_testdata[12169] */ + { 4056, 0x9E3779B185EBCA8DULL, { 0x42E9D3AABC86D1A3ULL, 0x25740280FFD41ECAULL } }, /* XSUM_XXH128_testdata[12170] */ + { 4057, 0x0000000000000000ULL, { 0xE80E3D01DFC0DFAAULL, 0x286A21BC6620B56EULL } }, /* XSUM_XXH128_testdata[12171] */ + { 4057, 0x000000009E3779B1ULL, { 0xA07B220C262D5731ULL, 0x41AE337ABBB8B9F2ULL } }, /* XSUM_XXH128_testdata[12172] */ + { 4057, 0x9E3779B185EBCA8DULL, { 0x8331A93BCEA6A7E7ULL, 0x48F53F7ACBA83A85ULL } }, /* XSUM_XXH128_testdata[12173] */ + { 4058, 0x0000000000000000ULL, { 0xA46F0713D1D96AACULL, 0x699CBFC534AF20D7ULL } }, /* XSUM_XXH128_testdata[12174] */ + { 4058, 0x000000009E3779B1ULL, { 0x153F08DE2D52BD51ULL, 0x9F4631E08AFD8D24ULL } }, /* XSUM_XXH128_testdata[12175] */ + { 4058, 0x9E3779B185EBCA8DULL, { 0x12226CE027536089ULL, 0x40A01219C00F17B9ULL } }, /* XSUM_XXH128_testdata[12176] */ + { 4059, 0x0000000000000000ULL, { 0x48AB03C22EA5B06FULL, 0x934E7D0888CCE588ULL } }, /* XSUM_XXH128_testdata[12177] */ + { 4059, 0x000000009E3779B1ULL, { 0x5EC36DDF37928931ULL, 0xB82A19FBE31C97C6ULL } }, /* XSUM_XXH128_testdata[12178] */ + { 4059, 0x9E3779B185EBCA8DULL, { 0x781B9FE3805E8D49ULL, 0x38D4DD02648A1D73ULL } }, /* XSUM_XXH128_testdata[12179] */ + { 4060, 0x0000000000000000ULL, { 0x1CF540D651D84B2CULL, 0x4AB17CE097E2045CULL } }, /* XSUM_XXH128_testdata[12180] */ + { 4060, 0x000000009E3779B1ULL, { 0x8A61F965E37B0664ULL, 0x4EBA550A17AD0569ULL } }, /* XSUM_XXH128_testdata[12181] */ + { 4060, 0x9E3779B185EBCA8DULL, { 0x9B2A4997E91BB32CULL, 0x296ED99E572D7E53ULL } }, /* XSUM_XXH128_testdata[12182] */ + { 4061, 0x0000000000000000ULL, { 0x395B9F1A3476D098ULL, 0xC1BF122EDA317A97ULL } }, /* XSUM_XXH128_testdata[12183] */ + { 4061, 0x000000009E3779B1ULL, { 0xC50A8E48223D52F0ULL, 0x54060F6003C760F3ULL } }, /* XSUM_XXH128_testdata[12184] */ + { 4061, 0x9E3779B185EBCA8DULL, { 0x00E4E50A72AE87DBULL, 0xCBF2A288F1B371ADULL } }, /* XSUM_XXH128_testdata[12185] */ + { 4062, 0x0000000000000000ULL, { 0x613625FF381D6585ULL, 0xA38040B96B91C00DULL } }, /* XSUM_XXH128_testdata[12186] */ + { 4062, 0x000000009E3779B1ULL, { 0x4C993E2C212ECC0EULL, 0x47CDDCF88F6DCD6FULL } }, /* XSUM_XXH128_testdata[12187] */ + { 4062, 0x9E3779B185EBCA8DULL, { 0xDF96924A26842033ULL, 0xBB14221853CBE824ULL } }, /* XSUM_XXH128_testdata[12188] */ + { 4063, 0x0000000000000000ULL, { 0x44A5F2DC91EFDB81ULL, 0xF2F6AC6A9E0E0545ULL } }, /* XSUM_XXH128_testdata[12189] */ + { 4063, 0x000000009E3779B1ULL, { 0x7EA93425F1D68E4AULL, 0x5F67D12A8874FF72ULL } }, /* XSUM_XXH128_testdata[12190] */ + { 4063, 0x9E3779B185EBCA8DULL, { 0x5A763652DB9F7AA1ULL, 0xDDB0C4CE7F898DC4ULL } }, /* XSUM_XXH128_testdata[12191] */ + { 4064, 0x0000000000000000ULL, { 0xD005690B90F42B3DULL, 0xF96F6EB92E01093DULL } }, /* XSUM_XXH128_testdata[12192] */ + { 4064, 0x000000009E3779B1ULL, { 0xD95DB26CB8C1BB8DULL, 0x57477753C74C7E54ULL } }, /* XSUM_XXH128_testdata[12193] */ + { 4064, 0x9E3779B185EBCA8DULL, { 0x6646113CF792EFCCULL, 0x3BA9B794CD67E58AULL } }, /* XSUM_XXH128_testdata[12194] */ + { 4065, 0x0000000000000000ULL, { 0x2AABD3E749018693ULL, 0xFE37B3CB82AD665CULL } }, /* XSUM_XXH128_testdata[12195] */ + { 4065, 0x000000009E3779B1ULL, { 0x27012B46D854E592ULL, 0x3DF1A03AF138410BULL } }, /* XSUM_XXH128_testdata[12196] */ + { 4065, 0x9E3779B185EBCA8DULL, { 0x8F69704EFAFC7CE6ULL, 0xCFFD472BE8FC2122ULL } }, /* XSUM_XXH128_testdata[12197] */ + { 4066, 0x0000000000000000ULL, { 0xBD32EC6AC8590941ULL, 0x2DB28CD8B0CA2275ULL } }, /* XSUM_XXH128_testdata[12198] */ + { 4066, 0x000000009E3779B1ULL, { 0x10F5982688F23BACULL, 0xC69DD5DAF91730C5ULL } }, /* XSUM_XXH128_testdata[12199] */ + { 4066, 0x9E3779B185EBCA8DULL, { 0xAFDC666E089AD97FULL, 0x378F002EC9609378ULL } }, /* XSUM_XXH128_testdata[12200] */ + { 4067, 0x0000000000000000ULL, { 0x17F48E89EA383997ULL, 0xDD5C97BB5FC07047ULL } }, /* XSUM_XXH128_testdata[12201] */ + { 4067, 0x000000009E3779B1ULL, { 0x2D947798BE9E5B06ULL, 0x1935938E82CDD5E8ULL } }, /* XSUM_XXH128_testdata[12202] */ + { 4067, 0x9E3779B185EBCA8DULL, { 0xE80949C6577D0B1DULL, 0xDAEA54AE7B97D22CULL } }, /* XSUM_XXH128_testdata[12203] */ + { 4068, 0x0000000000000000ULL, { 0x409EE52A6BB82E50ULL, 0xA2773E2E17B93FB8ULL } }, /* XSUM_XXH128_testdata[12204] */ + { 4068, 0x000000009E3779B1ULL, { 0x5E9C826599B7E64BULL, 0xB3655A3FC524DC0EULL } }, /* XSUM_XXH128_testdata[12205] */ + { 4068, 0x9E3779B185EBCA8DULL, { 0x83B486082089F055ULL, 0x1CFFE816E7E7BDB8ULL } }, /* XSUM_XXH128_testdata[12206] */ + { 4069, 0x0000000000000000ULL, { 0x2A37D8C283560A96ULL, 0xED682E323BFB3AEFULL } }, /* XSUM_XXH128_testdata[12207] */ + { 4069, 0x000000009E3779B1ULL, { 0xE9F9280617A4C10CULL, 0x95CE961995354E4CULL } }, /* XSUM_XXH128_testdata[12208] */ + { 4069, 0x9E3779B185EBCA8DULL, { 0x9FFAAF61614F195BULL, 0x11A2944C18995F06ULL } }, /* XSUM_XXH128_testdata[12209] */ + { 4070, 0x0000000000000000ULL, { 0xB6BD6711BD542608ULL, 0x9BDDAF5DEF9AAD33ULL } }, /* XSUM_XXH128_testdata[12210] */ + { 4070, 0x000000009E3779B1ULL, { 0x5F77A8A58A6E188AULL, 0x9AB28623C719405EULL } }, /* XSUM_XXH128_testdata[12211] */ + { 4070, 0x9E3779B185EBCA8DULL, { 0xBA4BF117D8520CC6ULL, 0x08633A54F0FE8341ULL } }, /* XSUM_XXH128_testdata[12212] */ + { 4071, 0x0000000000000000ULL, { 0x0DED6A95422B54AAULL, 0x03DFE26C11C7A8FCULL } }, /* XSUM_XXH128_testdata[12213] */ + { 4071, 0x000000009E3779B1ULL, { 0x01B85EE2228AEDDCULL, 0xA73C97C1091DDF7EULL } }, /* XSUM_XXH128_testdata[12214] */ + { 4071, 0x9E3779B185EBCA8DULL, { 0x73019662E3B7E5A5ULL, 0x8EB1EA7E47A53994ULL } }, /* XSUM_XXH128_testdata[12215] */ + { 4072, 0x0000000000000000ULL, { 0x617DBA28E3EF7CCFULL, 0x0A633F1777C030E9ULL } }, /* XSUM_XXH128_testdata[12216] */ + { 4072, 0x000000009E3779B1ULL, { 0x60583E2FDDA30EC1ULL, 0xC190B4E9DBD812F0ULL } }, /* XSUM_XXH128_testdata[12217] */ + { 4072, 0x9E3779B185EBCA8DULL, { 0x42B5B0478A2F9F19ULL, 0xCCF326BF1C5FC56FULL } }, /* XSUM_XXH128_testdata[12218] */ + { 4073, 0x0000000000000000ULL, { 0x985E6670B051042DULL, 0x794CF0CB955D034FULL } }, /* XSUM_XXH128_testdata[12219] */ + { 4073, 0x000000009E3779B1ULL, { 0x21E763A91A99B5E4ULL, 0xE93E9B7A0DCADC9DULL } }, /* XSUM_XXH128_testdata[12220] */ + { 4073, 0x9E3779B185EBCA8DULL, { 0xF2271200229B7305ULL, 0x7BEFADF985C9B9A5ULL } }, /* XSUM_XXH128_testdata[12221] */ + { 4074, 0x0000000000000000ULL, { 0x683A8A468EDB302EULL, 0xD0E8B9C36618FD6DULL } }, /* XSUM_XXH128_testdata[12222] */ + { 4074, 0x000000009E3779B1ULL, { 0xEBAF37993F854B7AULL, 0x0696F0C0577232C1ULL } }, /* XSUM_XXH128_testdata[12223] */ + { 4074, 0x9E3779B185EBCA8DULL, { 0xAEFB4E179FED9C88ULL, 0x6AF41788A779AD8EULL } }, /* XSUM_XXH128_testdata[12224] */ + { 4075, 0x0000000000000000ULL, { 0xE00A8B375D31275AULL, 0xCB5CC9E1E4531563ULL } }, /* XSUM_XXH128_testdata[12225] */ + { 4075, 0x000000009E3779B1ULL, { 0x1B95AC875033A80BULL, 0x022D1D9F330F9523ULL } }, /* XSUM_XXH128_testdata[12226] */ + { 4075, 0x9E3779B185EBCA8DULL, { 0x9FA2D2CA8DDBBCF3ULL, 0xCE91EF11B80A66BBULL } }, /* XSUM_XXH128_testdata[12227] */ + { 4076, 0x0000000000000000ULL, { 0x1D09F151EC8021E5ULL, 0xA545126F4CAC1835ULL } }, /* XSUM_XXH128_testdata[12228] */ + { 4076, 0x000000009E3779B1ULL, { 0x7EBFB2D9FCA5A0A0ULL, 0xB1EFADF15115ABC5ULL } }, /* XSUM_XXH128_testdata[12229] */ + { 4076, 0x9E3779B185EBCA8DULL, { 0x73A09B83EE65723CULL, 0x938DE04AC836FF28ULL } }, /* XSUM_XXH128_testdata[12230] */ + { 4077, 0x0000000000000000ULL, { 0xA3C2A4A8FB52E329ULL, 0xCBF4BBFC2E7105D2ULL } }, /* XSUM_XXH128_testdata[12231] */ + { 4077, 0x000000009E3779B1ULL, { 0x578832AD952CFA1CULL, 0xB29BFE805C5BEEA8ULL } }, /* XSUM_XXH128_testdata[12232] */ + { 4077, 0x9E3779B185EBCA8DULL, { 0x27701C5AF11C0069ULL, 0x0C4C62C213E15389ULL } }, /* XSUM_XXH128_testdata[12233] */ + { 4078, 0x0000000000000000ULL, { 0x6670C8D7DEC04183ULL, 0x0A62882C053244C8ULL } }, /* XSUM_XXH128_testdata[12234] */ + { 4078, 0x000000009E3779B1ULL, { 0xDEECD9E1368DF1CEULL, 0x8E24E6F84D6D3CD9ULL } }, /* XSUM_XXH128_testdata[12235] */ + { 4078, 0x9E3779B185EBCA8DULL, { 0x6AFE8BB05CA6B943ULL, 0x5D7ACB37B2A3AB81ULL } }, /* XSUM_XXH128_testdata[12236] */ + { 4079, 0x0000000000000000ULL, { 0x8A5BBE290F81A57EULL, 0xFC949799B9841516ULL } }, /* XSUM_XXH128_testdata[12237] */ + { 4079, 0x000000009E3779B1ULL, { 0x86F375514CC7CEB1ULL, 0x477F39E1006DBC59ULL } }, /* XSUM_XXH128_testdata[12238] */ + { 4079, 0x9E3779B185EBCA8DULL, { 0x7C522C7AE0D03876ULL, 0x7D5C22947323F0C1ULL } }, /* XSUM_XXH128_testdata[12239] */ + { 4080, 0x0000000000000000ULL, { 0x7ED2234F362A97D5ULL, 0x9EC21BF269AEB135ULL } }, /* XSUM_XXH128_testdata[12240] */ + { 4080, 0x000000009E3779B1ULL, { 0x6D10B94436A0325BULL, 0x8CD6F56D211A922CULL } }, /* XSUM_XXH128_testdata[12241] */ + { 4080, 0x9E3779B185EBCA8DULL, { 0x7F3D70A7E5B3F9A1ULL, 0x6338E626D33A145AULL } }, /* XSUM_XXH128_testdata[12242] */ + { 4081, 0x0000000000000000ULL, { 0x1B8EAFCDF80BBDFDULL, 0x0F588C79AACC751DULL } }, /* XSUM_XXH128_testdata[12243] */ + { 4081, 0x000000009E3779B1ULL, { 0x3F6EA6560B8E8CD3ULL, 0x233708FFB4967FF9ULL } }, /* XSUM_XXH128_testdata[12244] */ + { 4081, 0x9E3779B185EBCA8DULL, { 0x02E79635CCC002EEULL, 0xBAB13C1FD36BF127ULL } }, /* XSUM_XXH128_testdata[12245] */ + { 4082, 0x0000000000000000ULL, { 0x5013EF2EAA3C5683ULL, 0xEF2AD96B10A78CE0ULL } }, /* XSUM_XXH128_testdata[12246] */ + { 4082, 0x000000009E3779B1ULL, { 0xB02B56EF33E84BCDULL, 0x06245F316E6A94F0ULL } }, /* XSUM_XXH128_testdata[12247] */ + { 4082, 0x9E3779B185EBCA8DULL, { 0x3C373EC1D9A78477ULL, 0x2431A2D7EE8141D9ULL } }, /* XSUM_XXH128_testdata[12248] */ + { 4083, 0x0000000000000000ULL, { 0x4981B6B6B69E0F80ULL, 0xC9E6B57962CA3F8AULL } }, /* XSUM_XXH128_testdata[12249] */ + { 4083, 0x000000009E3779B1ULL, { 0x6E1C74C8AAB23964ULL, 0xA541A56BD558889CULL } }, /* XSUM_XXH128_testdata[12250] */ + { 4083, 0x9E3779B185EBCA8DULL, { 0x3058EC4F3EDDDA22ULL, 0xB852A0B9506F1C90ULL } }, /* XSUM_XXH128_testdata[12251] */ + { 4084, 0x0000000000000000ULL, { 0x1EC74897CEDF2D47ULL, 0x8EDDAD3DCAFEC7E3ULL } }, /* XSUM_XXH128_testdata[12252] */ + { 4084, 0x000000009E3779B1ULL, { 0xE5D8DE93EA43A343ULL, 0x90A2DB1F5ED8634EULL } }, /* XSUM_XXH128_testdata[12253] */ + { 4084, 0x9E3779B185EBCA8DULL, { 0xB212E516ADC3536BULL, 0xD501F90005E4C0CBULL } }, /* XSUM_XXH128_testdata[12254] */ + { 4085, 0x0000000000000000ULL, { 0x267430998005772AULL, 0x94C6FCABD7A9ECEAULL } }, /* XSUM_XXH128_testdata[12255] */ + { 4085, 0x000000009E3779B1ULL, { 0xA96BE6C641D294E8ULL, 0x4FB78AED5739A96CULL } }, /* XSUM_XXH128_testdata[12256] */ + { 4085, 0x9E3779B185EBCA8DULL, { 0xDDA517E217ED7B80ULL, 0x5D796C23A2EAEA4DULL } }, /* XSUM_XXH128_testdata[12257] */ + { 4086, 0x0000000000000000ULL, { 0xC9DDE2A74BA8925FULL, 0xC764D99837428789ULL } }, /* XSUM_XXH128_testdata[12258] */ + { 4086, 0x000000009E3779B1ULL, { 0x4B92D3091C611D68ULL, 0x6887DCB3504E3407ULL } }, /* XSUM_XXH128_testdata[12259] */ + { 4086, 0x9E3779B185EBCA8DULL, { 0xB9C9D4582A006BEAULL, 0x2BF12BFA6C938E01ULL } }, /* XSUM_XXH128_testdata[12260] */ + { 4087, 0x0000000000000000ULL, { 0x563098BE90EC168FULL, 0xB3B8159C0EF4CA2AULL } }, /* XSUM_XXH128_testdata[12261] */ + { 4087, 0x000000009E3779B1ULL, { 0xEC015C43972F3857ULL, 0x6DA355DD0C0962DDULL } }, /* XSUM_XXH128_testdata[12262] */ + { 4087, 0x9E3779B185EBCA8DULL, { 0xDFA20FC688D0AF48ULL, 0x09D5FB34C340357AULL } }, /* XSUM_XXH128_testdata[12263] */ + { 4088, 0x0000000000000000ULL, { 0xA36A687AAB49E554ULL, 0xCE31CA111798CF73ULL } }, /* XSUM_XXH128_testdata[12264] */ + { 4088, 0x000000009E3779B1ULL, { 0x3F716CCFF8BB677CULL, 0x4A68C33172C630F1ULL } }, /* XSUM_XXH128_testdata[12265] */ + { 4088, 0x9E3779B185EBCA8DULL, { 0x379BF665192E4775ULL, 0x253AC5172741E40FULL } }, /* XSUM_XXH128_testdata[12266] */ + { 4089, 0x0000000000000000ULL, { 0x34338C8FF9753005ULL, 0x6564F5C8B1534454ULL } }, /* XSUM_XXH128_testdata[12267] */ + { 4089, 0x000000009E3779B1ULL, { 0x3BAEA5913AD4AD23ULL, 0xA01BDB3578DFC436ULL } }, /* XSUM_XXH128_testdata[12268] */ + { 4089, 0x9E3779B185EBCA8DULL, { 0x0A508219A77780C7ULL, 0x090432F5800C078DULL } }, /* XSUM_XXH128_testdata[12269] */ + { 4090, 0x0000000000000000ULL, { 0x7614D500BBB0CB51ULL, 0x1FDB04AFA68ABEBAULL } }, /* XSUM_XXH128_testdata[12270] */ + { 4090, 0x000000009E3779B1ULL, { 0xAE345C9D014886E9ULL, 0x9F02ADD186DA6BF0ULL } }, /* XSUM_XXH128_testdata[12271] */ + { 4090, 0x9E3779B185EBCA8DULL, { 0x9F2E62A9B61FDAD5ULL, 0xE15AD2BA213FC473ULL } }, /* XSUM_XXH128_testdata[12272] */ + { 4091, 0x0000000000000000ULL, { 0x81DDA05D3E0F7E7DULL, 0x6B1CB742E7AAB610ULL } }, /* XSUM_XXH128_testdata[12273] */ + { 4091, 0x000000009E3779B1ULL, { 0x66C5BE336C17A8C1ULL, 0xCB895D96A2A0242BULL } }, /* XSUM_XXH128_testdata[12274] */ + { 4091, 0x9E3779B185EBCA8DULL, { 0x37DACC934EF3BCF8ULL, 0x49AE4E263D461D99ULL } }, /* XSUM_XXH128_testdata[12275] */ + { 4092, 0x0000000000000000ULL, { 0xA1CB210DD29A93C4ULL, 0x2724BF9D822505B1ULL } }, /* XSUM_XXH128_testdata[12276] */ + { 4092, 0x000000009E3779B1ULL, { 0x3739F6B6634AEAF7ULL, 0xA6A8E3A942BC8148ULL } }, /* XSUM_XXH128_testdata[12277] */ + { 4092, 0x9E3779B185EBCA8DULL, { 0xEFB39BD4EA2906AEULL, 0xA2F3DA9ED70806ACULL } }, /* XSUM_XXH128_testdata[12278] */ + { 4093, 0x0000000000000000ULL, { 0x43E2C26AF42C201AULL, 0x00AC894276460A63ULL } }, /* XSUM_XXH128_testdata[12279] */ + { 4093, 0x000000009E3779B1ULL, { 0xF17F40259EE337A4ULL, 0xD48F547C9507D9E6ULL } }, /* XSUM_XXH128_testdata[12280] */ + { 4093, 0x9E3779B185EBCA8DULL, { 0xF693A0588A836DD0ULL, 0xC60863B37BD3893FULL } }, /* XSUM_XXH128_testdata[12281] */ + { 4094, 0x0000000000000000ULL, { 0x197717AFE7C9B73EULL, 0x6CBD01A93EA90009ULL } }, /* XSUM_XXH128_testdata[12282] */ + { 4094, 0x000000009E3779B1ULL, { 0x7363F203FFC6613EULL, 0xC2076BBA7F3D027FULL } }, /* XSUM_XXH128_testdata[12283] */ + { 4094, 0x9E3779B185EBCA8DULL, { 0x2F2B070D052B1D2DULL, 0xD76770FAD1BD736AULL } }, /* XSUM_XXH128_testdata[12284] */ + { 4095, 0x0000000000000000ULL, { 0x3044187222AB0EFBULL, 0xF69E23CFA8CEA8C3ULL } }, /* XSUM_XXH128_testdata[12285] */ + { 4095, 0x000000009E3779B1ULL, { 0x9C35919132DD0089ULL, 0xC4C45DC2BB4F3560ULL } }, /* XSUM_XXH128_testdata[12286] */ + { 4095, 0x9E3779B185EBCA8DULL, { 0x9F7DDF29C377A8ECULL, 0x01790E949E0CD4FAULL } }, /* XSUM_XXH128_testdata[12287] */ + { 4096, 0x0000000000000000ULL, { 0xE91206429D1F48F9ULL, 0xB9CFAEA2CA5626A4ULL } }, /* XSUM_XXH128_testdata[12288] */ + { 4096, 0x000000009E3779B1ULL, { 0x2C32262E6834F8B9ULL, 0x61F9525DA2DCBE15ULL } }, /* XSUM_XXH128_testdata[12289] */ + { 4096, 0x9E3779B185EBCA8DULL, { 0x2A3BBB20A5439DCDULL, 0x8FBC8FD4D526D1BDULL } }, /* XSUM_XXH128_testdata[12290] */ + { 4097, 0x0000000000000000ULL, { 0xDAC80D543E339451ULL, 0x0C6A7A5F1D0BBB1AULL } }, /* XSUM_XXH128_testdata[12291] */ + { 4097, 0x000000009E3779B1ULL, { 0x1AF3E6A9C2C87515ULL, 0x09B52D3E4FAEF7ECULL } }, /* XSUM_XXH128_testdata[12292] */ + { 4097, 0x9E3779B185EBCA8DULL, { 0xA78887A19A340214ULL, 0xC94C98BCF2D279FCULL } }, /* XSUM_XXH128_testdata[12293] */ + { 4098, 0x0000000000000000ULL, { 0x536E2124F23DF4DCULL, 0x25636E77911EEC8FULL } }, /* XSUM_XXH128_testdata[12294] */ + { 4098, 0x000000009E3779B1ULL, { 0x4FBE7BE9C4339917ULL, 0x137D037C023E11D2ULL } }, /* XSUM_XXH128_testdata[12295] */ + { 4098, 0x9E3779B185EBCA8DULL, { 0x63604DD99F9A0D25ULL, 0x12E99603DD13F5BBULL } }, /* XSUM_XXH128_testdata[12296] */ + { 4099, 0x0000000000000000ULL, { 0x318D235ABA648B01ULL, 0x56EF94DFD3309161ULL } }, /* XSUM_XXH128_testdata[12297] */ + { 4099, 0x000000009E3779B1ULL, { 0x3B6D4E7287012F83ULL, 0xFE68B6E1D6D1E25AULL } }, /* XSUM_XXH128_testdata[12298] */ + { 4099, 0x9E3779B185EBCA8DULL, { 0x7849F825702B5C2FULL, 0xD026293EEB51E01DULL } }, /* XSUM_XXH128_testdata[12299] */ + { 4100, 0x0000000000000000ULL, { 0x708DA8E991EA3767ULL, 0xD817306709E50508ULL } }, /* XSUM_XXH128_testdata[12300] */ + { 4100, 0x000000009E3779B1ULL, { 0x30535B2ACDC9B04AULL, 0xEDC44305B560199CULL } }, /* XSUM_XXH128_testdata[12301] */ + { 4100, 0x9E3779B185EBCA8DULL, { 0x68C5E93C2C55D53FULL, 0xD9861D9CB9383E68ULL } }, /* XSUM_XXH128_testdata[12302] */ + { 4101, 0x0000000000000000ULL, { 0x7B6E0277636B7D11ULL, 0x3D3FF4039AA08D05ULL } }, /* XSUM_XXH128_testdata[12303] */ + { 4101, 0x000000009E3779B1ULL, { 0xD9A86E6ADCC7713AULL, 0x52400B8A64C9FD99ULL } }, /* XSUM_XXH128_testdata[12304] */ + { 4101, 0x9E3779B185EBCA8DULL, { 0x0415084858687771ULL, 0xAB2F82FB8FF3CF4EULL } }, /* XSUM_XXH128_testdata[12305] */ + { 4102, 0x0000000000000000ULL, { 0x9B7212296B317024ULL, 0xCB773F88FEEEE24CULL } }, /* XSUM_XXH128_testdata[12306] */ + { 4102, 0x000000009E3779B1ULL, { 0x9D327689BC16D846ULL, 0x2C1E5836AD4E6059ULL } }, /* XSUM_XXH128_testdata[12307] */ + { 4102, 0x9E3779B185EBCA8DULL, { 0xB508A2861AA205C7ULL, 0xC82C3445A417F416ULL } }, /* XSUM_XXH128_testdata[12308] */ + { 4103, 0x0000000000000000ULL, { 0xD6E778C94923EA44ULL, 0x5B449E3ABEEA1486ULL } }, /* XSUM_XXH128_testdata[12309] */ + { 4103, 0x000000009E3779B1ULL, { 0xCCEA3F05E82D0559ULL, 0x744335AE42CB1D21ULL } }, /* XSUM_XXH128_testdata[12310] */ + { 4103, 0x9E3779B185EBCA8DULL, { 0x917A70D1756179ADULL, 0xCD1A0902F7E5354CULL } }, /* XSUM_XXH128_testdata[12311] */ + { 4104, 0x0000000000000000ULL, { 0x7E6885379F309E58ULL, 0x42149D0631884E6AULL } }, /* XSUM_XXH128_testdata[12312] */ + { 4104, 0x000000009E3779B1ULL, { 0x5457B7E9C0295D71ULL, 0x1CB7E2D222F48032ULL } }, /* XSUM_XXH128_testdata[12313] */ + { 4104, 0x9E3779B185EBCA8DULL, { 0xDD8CBBA844976FDAULL, 0xCAE6C3F6813F2F28ULL } }, /* XSUM_XXH128_testdata[12314] */ + { 4105, 0x0000000000000000ULL, { 0x01B01BA093BD2B56ULL, 0xA6EAC58FBD3E9AD2ULL } }, /* XSUM_XXH128_testdata[12315] */ + { 4105, 0x000000009E3779B1ULL, { 0x01ADA294EF915892ULL, 0xF5248A8E5D003D68ULL } }, /* XSUM_XXH128_testdata[12316] */ + { 4105, 0x9E3779B185EBCA8DULL, { 0x6831B8F9AF88C06EULL, 0x6536E364491B412FULL } }, /* XSUM_XXH128_testdata[12317] */ + { 4106, 0x0000000000000000ULL, { 0x8E223FE2C8A6C523ULL, 0xDC8CDD955202B3EDULL } }, /* XSUM_XXH128_testdata[12318] */ + { 4106, 0x000000009E3779B1ULL, { 0x1DAB57BD0D1A7999ULL, 0x70DD2DABA73F9E1CULL } }, /* XSUM_XXH128_testdata[12319] */ + { 4106, 0x9E3779B185EBCA8DULL, { 0x236C0B797A639A03ULL, 0x9AC3AF61FFC9DDAFULL } }, /* XSUM_XXH128_testdata[12320] */ + { 4107, 0x0000000000000000ULL, { 0xCB55589B16B7596EULL, 0xB84D4A7645CAB431ULL } }, /* XSUM_XXH128_testdata[12321] */ + { 4107, 0x000000009E3779B1ULL, { 0xB9225530DE10B60EULL, 0x908E64A315FF57BFULL } }, /* XSUM_XXH128_testdata[12322] */ + { 4107, 0x9E3779B185EBCA8DULL, { 0x822FD6CBD55DEAF3ULL, 0x24722A518495A1B5ULL } }, /* XSUM_XXH128_testdata[12323] */ + { 4108, 0x0000000000000000ULL, { 0xD2B50F5E142497B9ULL, 0x1EF7E0BB66615DC7ULL } }, /* XSUM_XXH128_testdata[12324] */ + { 4108, 0x000000009E3779B1ULL, { 0x7453AFBF5C79C535ULL, 0x63D1154D063B10D0ULL } }, /* XSUM_XXH128_testdata[12325] */ + { 4108, 0x9E3779B185EBCA8DULL, { 0xCC1DCFF11EE70755ULL, 0x88F52C272BE44145ULL } }, /* XSUM_XXH128_testdata[12326] */ + { 4109, 0x0000000000000000ULL, { 0x54D5D3B1358B288AULL, 0x29B89CFB90DF2D4AULL } }, /* XSUM_XXH128_testdata[12327] */ + { 4109, 0x000000009E3779B1ULL, { 0x76E04B049C5A28D9ULL, 0xE3B2C8783BE35A25ULL } }, /* XSUM_XXH128_testdata[12328] */ + { 4109, 0x9E3779B185EBCA8DULL, { 0x7EE3373734321C73ULL, 0x91F640E8E189ED8BULL } }, /* XSUM_XXH128_testdata[12329] */ + { 4110, 0x0000000000000000ULL, { 0xC005E3BEDA002458ULL, 0xA737FC5ABF88B66DULL } }, /* XSUM_XXH128_testdata[12330] */ + { 4110, 0x000000009E3779B1ULL, { 0xFDFC6EC0AC9ABF35ULL, 0x8A8C2618937A3E3AULL } }, /* XSUM_XXH128_testdata[12331] */ + { 4110, 0x9E3779B185EBCA8DULL, { 0xABFAC6375AEC37C7ULL, 0x8C731A8361E546E3ULL } }, /* XSUM_XXH128_testdata[12332] */ + { 4111, 0x0000000000000000ULL, { 0xA7F37BEB267E36E5ULL, 0xEA7A25CFA231348CULL } }, /* XSUM_XXH128_testdata[12333] */ + { 4111, 0x000000009E3779B1ULL, { 0xA00520ECEF7B9E9FULL, 0x6C6EC0F99F812646ULL } }, /* XSUM_XXH128_testdata[12334] */ + { 4111, 0x9E3779B185EBCA8DULL, { 0x7E001F4B3ECFB1C9ULL, 0x26F20EB6414B3376ULL } }, /* XSUM_XXH128_testdata[12335] */ + { 4112, 0x0000000000000000ULL, { 0xE6C6754333B04AA6ULL, 0x6F85BAAD7B7C1DEAULL } }, /* XSUM_XXH128_testdata[12336] */ + { 4112, 0x000000009E3779B1ULL, { 0xDEE37FB922F4534DULL, 0x98FD3334E32475D9ULL } }, /* XSUM_XXH128_testdata[12337] */ + { 4112, 0x9E3779B185EBCA8DULL, { 0x7568121A6F2E2F51ULL, 0x48003CD94DB7302BULL } }, /* XSUM_XXH128_testdata[12338] */ + { 4113, 0x0000000000000000ULL, { 0x01F24DFB53ED6D89ULL, 0x83C02DCC7A806596ULL } }, /* XSUM_XXH128_testdata[12339] */ + { 4113, 0x000000009E3779B1ULL, { 0xBDE090AD461626D1ULL, 0x50530472D692FE67ULL } }, /* XSUM_XXH128_testdata[12340] */ + { 4113, 0x9E3779B185EBCA8DULL, { 0x3912A517D7CB58BEULL, 0xE3BB5D1F48B74DC6ULL } }, /* XSUM_XXH128_testdata[12341] */ + { 4114, 0x0000000000000000ULL, { 0xDF151F68306972B7ULL, 0x349C1F2C759A8423ULL } }, /* XSUM_XXH128_testdata[12342] */ + { 4114, 0x000000009E3779B1ULL, { 0x2A869B08632FDA55ULL, 0xB80CD812A803D9F7ULL } }, /* XSUM_XXH128_testdata[12343] */ + { 4114, 0x9E3779B185EBCA8DULL, { 0x52FA1526770C4EC7ULL, 0xABE822B6EA0ECC7BULL } }, /* XSUM_XXH128_testdata[12344] */ + { 4115, 0x0000000000000000ULL, { 0xE98596DA3274CFBAULL, 0x11D6FFDC2102D4B5ULL } }, /* XSUM_XXH128_testdata[12345] */ + { 4115, 0x000000009E3779B1ULL, { 0x4FF83295066895F3ULL, 0x1DC10BF6E5D2CD7FULL } }, /* XSUM_XXH128_testdata[12346] */ + { 4115, 0x9E3779B185EBCA8DULL, { 0x1C3B5137394A9482ULL, 0xD9E50B43862A32B7ULL } }, /* XSUM_XXH128_testdata[12347] */ + { 4116, 0x0000000000000000ULL, { 0x44E1F7DD02552FB6ULL, 0x1CC2FDECA4C9BF25ULL } }, /* XSUM_XXH128_testdata[12348] */ + { 4116, 0x000000009E3779B1ULL, { 0xEB91D9B1BD3BF8C1ULL, 0xE5D65C7F707466C5ULL } }, /* XSUM_XXH128_testdata[12349] */ + { 4116, 0x9E3779B185EBCA8DULL, { 0x08F4B72C651043BAULL, 0x2BF3CD8ABA29725CULL } }, /* XSUM_XXH128_testdata[12350] */ + { 4117, 0x0000000000000000ULL, { 0x28DF58954DE4025FULL, 0x3BEE797E0B58C64BULL } }, /* XSUM_XXH128_testdata[12351] */ + { 4117, 0x000000009E3779B1ULL, { 0x637752455CD19392ULL, 0x93BD2FFF478321E7ULL } }, /* XSUM_XXH128_testdata[12352] */ + { 4117, 0x9E3779B185EBCA8DULL, { 0xAB508A47A93BB882ULL, 0xFE385EDE2FAC96D7ULL } }, /* XSUM_XXH128_testdata[12353] */ + { 4118, 0x0000000000000000ULL, { 0x2D6AD31EABD0EF8BULL, 0xBF9111E603306B13ULL } }, /* XSUM_XXH128_testdata[12354] */ + { 4118, 0x000000009E3779B1ULL, { 0xF0E8C7602926219CULL, 0xFBCFA780EDE98579ULL } }, /* XSUM_XXH128_testdata[12355] */ + { 4118, 0x9E3779B185EBCA8DULL, { 0x8352B0B7C75E5F9BULL, 0x1E66DF984346D8D8ULL } }, /* XSUM_XXH128_testdata[12356] */ + { 4119, 0x0000000000000000ULL, { 0x29C77571022B3DFCULL, 0xD70406DD9898D4D8ULL } }, /* XSUM_XXH128_testdata[12357] */ + { 4119, 0x000000009E3779B1ULL, { 0x29E11A98C99640D3ULL, 0xC744DE955953D68DULL } }, /* XSUM_XXH128_testdata[12358] */ + { 4119, 0x9E3779B185EBCA8DULL, { 0xAA05BDB0FF756E28ULL, 0xC029FB2D6D7DAA6CULL } }, /* XSUM_XXH128_testdata[12359] */ + { 4120, 0x0000000000000000ULL, { 0xF78F1E6B64FC4FAFULL, 0xEA9ABBF3870AAEFBULL } }, /* XSUM_XXH128_testdata[12360] */ + { 4120, 0x000000009E3779B1ULL, { 0x01C478EA1BD7FF96ULL, 0xCF25F6E06B668082ULL } }, /* XSUM_XXH128_testdata[12361] */ + { 4120, 0x9E3779B185EBCA8DULL, { 0x2AF071ED04DE3706ULL, 0x907B7FB60893E441ULL } }, /* XSUM_XXH128_testdata[12362] */ + { 4121, 0x0000000000000000ULL, { 0x9F07644999D631FEULL, 0x168010E2AC154E1BULL } }, /* XSUM_XXH128_testdata[12363] */ + { 4121, 0x000000009E3779B1ULL, { 0x5727964A8A274DF8ULL, 0x547F87F5B79D73CEULL } }, /* XSUM_XXH128_testdata[12364] */ + { 4121, 0x9E3779B185EBCA8DULL, { 0x58D5AED23AC86D18ULL, 0xC9F003A6A18F45FCULL } }, /* XSUM_XXH128_testdata[12365] */ + { 4122, 0x0000000000000000ULL, { 0xAB4CD24CD29D8970ULL, 0x4EF4EC9B5011763DULL } }, /* XSUM_XXH128_testdata[12366] */ + { 4122, 0x000000009E3779B1ULL, { 0xCF5AC9A1D228BE11ULL, 0x0FC67DE1A307E1DBULL } }, /* XSUM_XXH128_testdata[12367] */ + { 4122, 0x9E3779B185EBCA8DULL, { 0x7BAD5355D287C703ULL, 0x2B5A193889D64849ULL } }, /* XSUM_XXH128_testdata[12368] */ + { 4123, 0x0000000000000000ULL, { 0x2F9C1C05A78B37D8ULL, 0xE52EBFD6B77D7146ULL } }, /* XSUM_XXH128_testdata[12369] */ + { 4123, 0x000000009E3779B1ULL, { 0x40D0ABF27943F5CAULL, 0x57597B82A83DA996ULL } }, /* XSUM_XXH128_testdata[12370] */ + { 4123, 0x9E3779B185EBCA8DULL, { 0x4A8959FCB1E4E4AFULL, 0xDBB927E1247CD643ULL } }, /* XSUM_XXH128_testdata[12371] */ + { 4124, 0x0000000000000000ULL, { 0x35AD8F65591B2C05ULL, 0x70930D2F5F4CF848ULL } }, /* XSUM_XXH128_testdata[12372] */ + { 4124, 0x000000009E3779B1ULL, { 0xB573AE0F672E99A4ULL, 0x15015615FBE36D5CULL } }, /* XSUM_XXH128_testdata[12373] */ + { 4124, 0x9E3779B185EBCA8DULL, { 0x603CCE1C74CED430ULL, 0xCEC0C425CCE440CCULL } }, /* XSUM_XXH128_testdata[12374] */ + { 4125, 0x0000000000000000ULL, { 0xBEBE4BF06A34E0ADULL, 0xA93452BD9537A5A5ULL } }, /* XSUM_XXH128_testdata[12375] */ + { 4125, 0x000000009E3779B1ULL, { 0x84037F101EFE1D6DULL, 0x259D24F53FE3E5F8ULL } }, /* XSUM_XXH128_testdata[12376] */ + { 4125, 0x9E3779B185EBCA8DULL, { 0xB9DE0F8488404CE1ULL, 0xFD066D8BC803D169ULL } }, /* XSUM_XXH128_testdata[12377] */ + { 4126, 0x0000000000000000ULL, { 0xD5B0CFEE781B17F4ULL, 0x4C782670680C49C4ULL } }, /* XSUM_XXH128_testdata[12378] */ + { 4126, 0x000000009E3779B1ULL, { 0x5AA28925FFDC262CULL, 0x36C0F302AEFF0E76ULL } }, /* XSUM_XXH128_testdata[12379] */ + { 4126, 0x9E3779B185EBCA8DULL, { 0xEC08F7276FD854C4ULL, 0x924E9070C4311C00ULL } }, /* XSUM_XXH128_testdata[12380] */ + { 4127, 0x0000000000000000ULL, { 0x60E4E4B2B75A028FULL, 0xB8079F97D6D2D8FEULL } }, /* XSUM_XXH128_testdata[12381] */ + { 4127, 0x000000009E3779B1ULL, { 0x8B8F7F486FBEB4B4ULL, 0x2A24DC9DB9E871CBULL } }, /* XSUM_XXH128_testdata[12382] */ + { 4127, 0x9E3779B185EBCA8DULL, { 0x3640249C9E7F6A99ULL, 0xCE79246FCA32DB94ULL } }, /* XSUM_XXH128_testdata[12383] */ + { 4128, 0x0000000000000000ULL, { 0x58F87C03A5109698ULL, 0xD57458AEFEAF5328ULL } }, /* XSUM_XXH128_testdata[12384] */ + { 4128, 0x000000009E3779B1ULL, { 0x974EF550C85A1DFDULL, 0xA1DF2D4E89323232ULL } }, /* XSUM_XXH128_testdata[12385] */ + { 4128, 0x9E3779B185EBCA8DULL, { 0x099F06BA6D0AEA6EULL, 0x04E6CD14F8B2962EULL } }, /* XSUM_XXH128_testdata[12386] */ + { 4129, 0x0000000000000000ULL, { 0xFD79517DA353C9C7ULL, 0x2050980D9C749C3EULL } }, /* XSUM_XXH128_testdata[12387] */ + { 4129, 0x000000009E3779B1ULL, { 0xFA4A9B749B4E45EFULL, 0x07A0B8FE3974F458ULL } }, /* XSUM_XXH128_testdata[12388] */ + { 4129, 0x9E3779B185EBCA8DULL, { 0x1CFB7C71EE7A3874ULL, 0x769B784DDBF0E300ULL } }, /* XSUM_XXH128_testdata[12389] */ + { 4130, 0x0000000000000000ULL, { 0xD0F8D653F6C74FF0ULL, 0xD8FF1B6081DA716DULL } }, /* XSUM_XXH128_testdata[12390] */ + { 4130, 0x000000009E3779B1ULL, { 0x2ED4BB092708F224ULL, 0xC1438D1AFDE83F9CULL } }, /* XSUM_XXH128_testdata[12391] */ + { 4130, 0x9E3779B185EBCA8DULL, { 0x8031A56A7D2F92AEULL, 0xC2CA4CE6F6D68250ULL } }, /* XSUM_XXH128_testdata[12392] */ + { 4131, 0x0000000000000000ULL, { 0x951F461DB8CD496CULL, 0x2572D8FA01204ED2ULL } }, /* XSUM_XXH128_testdata[12393] */ + { 4131, 0x000000009E3779B1ULL, { 0xBF9F49BF2A28B42AULL, 0x08E305315EC6046DULL } }, /* XSUM_XXH128_testdata[12394] */ + { 4131, 0x9E3779B185EBCA8DULL, { 0x7A407673EB490FF5ULL, 0xBF9AA8B6C82F90A9ULL } }, /* XSUM_XXH128_testdata[12395] */ + { 4132, 0x0000000000000000ULL, { 0x7645BA69A2B2FF52ULL, 0x20C0FD5651A328FBULL } }, /* XSUM_XXH128_testdata[12396] */ + { 4132, 0x000000009E3779B1ULL, { 0x11999B04A59A2B56ULL, 0x38838376AD5250B0ULL } }, /* XSUM_XXH128_testdata[12397] */ + { 4132, 0x9E3779B185EBCA8DULL, { 0x77B67ABE4C6842A2ULL, 0x08077E64242CF102ULL } }, /* XSUM_XXH128_testdata[12398] */ + { 4133, 0x0000000000000000ULL, { 0xB1793BB4317787F8ULL, 0xD83FA6A792ACB0C0ULL } }, /* XSUM_XXH128_testdata[12399] */ + { 4133, 0x000000009E3779B1ULL, { 0xEDCB2167489178F9ULL, 0x3F71E0051E0597C4ULL } }, /* XSUM_XXH128_testdata[12400] */ + { 4133, 0x9E3779B185EBCA8DULL, { 0x13CDADE8147771D8ULL, 0xB5CB8DE1D75A0D4CULL } }, /* XSUM_XXH128_testdata[12401] */ + { 4134, 0x0000000000000000ULL, { 0x06DEEEE425EAEC97ULL, 0x3A2BF0F1877F2152ULL } }, /* XSUM_XXH128_testdata[12402] */ + { 4134, 0x000000009E3779B1ULL, { 0x80265C1FA55767FBULL, 0xB75322B45E4880E7ULL } }, /* XSUM_XXH128_testdata[12403] */ + { 4134, 0x9E3779B185EBCA8DULL, { 0x47410600B8A6DC30ULL, 0xD40E51F78F1E1AA3ULL } }, /* XSUM_XXH128_testdata[12404] */ + { 4135, 0x0000000000000000ULL, { 0x07794C32F9ABB48FULL, 0x267D2D5331EA8729ULL } }, /* XSUM_XXH128_testdata[12405] */ + { 4135, 0x000000009E3779B1ULL, { 0xC532E2451C518080ULL, 0x99DCF14AF20D5C1DULL } }, /* XSUM_XXH128_testdata[12406] */ + { 4135, 0x9E3779B185EBCA8DULL, { 0x965359AACAED70CDULL, 0x22F4198D8EB57420ULL } }, /* XSUM_XXH128_testdata[12407] */ + { 4136, 0x0000000000000000ULL, { 0xCFD131A86A9BAD5DULL, 0x5A941B30D04C85A6ULL } }, /* XSUM_XXH128_testdata[12408] */ + { 4136, 0x000000009E3779B1ULL, { 0x74883E72B0EB9DC1ULL, 0x8A0F5CF16C896BFFULL } }, /* XSUM_XXH128_testdata[12409] */ + { 4136, 0x9E3779B185EBCA8DULL, { 0x9D698ADA391EBBD6ULL, 0xD0BDF3D93FE549F2ULL } }, /* XSUM_XXH128_testdata[12410] */ + { 4137, 0x0000000000000000ULL, { 0x609D2C8FFEDC356AULL, 0x77943EF9AC2E9BC1ULL } }, /* XSUM_XXH128_testdata[12411] */ + { 4137, 0x000000009E3779B1ULL, { 0xA5D04935A056D153ULL, 0xE1FB04240E5BE361ULL } }, /* XSUM_XXH128_testdata[12412] */ + { 4137, 0x9E3779B185EBCA8DULL, { 0xFC186A81B9635DA7ULL, 0xD904EE6A6B46082FULL } }, /* XSUM_XXH128_testdata[12413] */ + { 4138, 0x0000000000000000ULL, { 0x593FBE1328A081C8ULL, 0xDAC27B8FA57CA2ADULL } }, /* XSUM_XXH128_testdata[12414] */ + { 4138, 0x000000009E3779B1ULL, { 0x4CB6D510A9EBD051ULL, 0x42058DA9A6DC4C80ULL } }, /* XSUM_XXH128_testdata[12415] */ + { 4138, 0x9E3779B185EBCA8DULL, { 0x886E386B2E8BAF4FULL, 0xB9508B8DACF4736DULL } }, /* XSUM_XXH128_testdata[12416] */ + { 4139, 0x0000000000000000ULL, { 0x35C0267703DEB52AULL, 0x4415F16F9DF0026FULL } }, /* XSUM_XXH128_testdata[12417] */ + { 4139, 0x000000009E3779B1ULL, { 0xF712DD1C45E3529FULL, 0x55CC0D833A9AFF33ULL } }, /* XSUM_XXH128_testdata[12418] */ + { 4139, 0x9E3779B185EBCA8DULL, { 0x1335705DF9DFF4AFULL, 0xC9679EFF5CFD0BF2ULL } }, /* XSUM_XXH128_testdata[12419] */ + { 4140, 0x0000000000000000ULL, { 0x5B9C2CCB1A190108ULL, 0x90C26A4EAF2F2D80ULL } }, /* XSUM_XXH128_testdata[12420] */ + { 4140, 0x000000009E3779B1ULL, { 0x1BFA9BEEF8E34BBCULL, 0xECDB1FCED62CD3D7ULL } }, /* XSUM_XXH128_testdata[12421] */ + { 4140, 0x9E3779B185EBCA8DULL, { 0xB4460979100B3C8FULL, 0x20802617211552F1ULL } }, /* XSUM_XXH128_testdata[12422] */ + { 4141, 0x0000000000000000ULL, { 0x3CE6D83750A87654ULL, 0xB1437843DD53BE8CULL } }, /* XSUM_XXH128_testdata[12423] */ + { 4141, 0x000000009E3779B1ULL, { 0xFEB6DA52EBFCC242ULL, 0x85A2C29F0082A10BULL } }, /* XSUM_XXH128_testdata[12424] */ + { 4141, 0x9E3779B185EBCA8DULL, { 0xDA80A64ABB430483ULL, 0x882AB905ADFEEF59ULL } }, /* XSUM_XXH128_testdata[12425] */ + { 4142, 0x0000000000000000ULL, { 0x1162D413E7ED9194ULL, 0xE273B7EC360F646CULL } }, /* XSUM_XXH128_testdata[12426] */ + { 4142, 0x000000009E3779B1ULL, { 0x9DAC080861EB29A3ULL, 0x4DB15924A0B312CEULL } }, /* XSUM_XXH128_testdata[12427] */ + { 4142, 0x9E3779B185EBCA8DULL, { 0xC7C177607C970768ULL, 0x78A5C95A94337474ULL } }, /* XSUM_XXH128_testdata[12428] */ + { 4143, 0x0000000000000000ULL, { 0x8CE229BE4C9AAD31ULL, 0x928327BFED8B9FD4ULL } }, /* XSUM_XXH128_testdata[12429] */ + { 4143, 0x000000009E3779B1ULL, { 0x1E4682C77A2AACB2ULL, 0x41378D2EF83F506FULL } }, /* XSUM_XXH128_testdata[12430] */ + { 4143, 0x9E3779B185EBCA8DULL, { 0xF68CF2EDEE66AA53ULL, 0x8718E6A03E96DB94ULL } }, /* XSUM_XXH128_testdata[12431] */ + { 4144, 0x0000000000000000ULL, { 0xA360545F02F6A5ECULL, 0x9A37014B883E8280ULL } }, /* XSUM_XXH128_testdata[12432] */ + { 4144, 0x000000009E3779B1ULL, { 0xBA42A26F1D2399FCULL, 0x59531702B7B98AF5ULL } }, /* XSUM_XXH128_testdata[12433] */ + { 4144, 0x9E3779B185EBCA8DULL, { 0xBEB893BE02633B6EULL, 0x1500C4879CB50D1AULL } }, /* XSUM_XXH128_testdata[12434] */ + { 4145, 0x0000000000000000ULL, { 0xABD8127787B83F8EULL, 0x711EFC394B1A8F2AULL } }, /* XSUM_XXH128_testdata[12435] */ + { 4145, 0x000000009E3779B1ULL, { 0xA488B07BE86AB94AULL, 0x2F8FF5468ECAD6EAULL } }, /* XSUM_XXH128_testdata[12436] */ + { 4145, 0x9E3779B185EBCA8DULL, { 0xD452D7D8018971B4ULL, 0x9B6D4BBD9668EC0FULL } }, /* XSUM_XXH128_testdata[12437] */ + { 4146, 0x0000000000000000ULL, { 0x5C926EB5DB8927D2ULL, 0x347F6C333047DC03ULL } }, /* XSUM_XXH128_testdata[12438] */ + { 4146, 0x000000009E3779B1ULL, { 0x4FBD3EADF704B204ULL, 0x7F39F5F0EFD6CF06ULL } }, /* XSUM_XXH128_testdata[12439] */ + { 4146, 0x9E3779B185EBCA8DULL, { 0x7B4A283B13347765ULL, 0xDD356C02A330D107ULL } }, /* XSUM_XXH128_testdata[12440] */ + { 4147, 0x0000000000000000ULL, { 0x53622CE56808C5A5ULL, 0x5E4567F6CBA1F86FULL } }, /* XSUM_XXH128_testdata[12441] */ + { 4147, 0x000000009E3779B1ULL, { 0xA386AE5BF015A8FAULL, 0x7E1A7389E68A91FAULL } }, /* XSUM_XXH128_testdata[12442] */ + { 4147, 0x9E3779B185EBCA8DULL, { 0x540B305923998D7CULL, 0xDA54F31E18337A0EULL } }, /* XSUM_XXH128_testdata[12443] */ + { 4148, 0x0000000000000000ULL, { 0x4C76DFDDEE340812ULL, 0x1EF27C1D0C5F3ADDULL } }, /* XSUM_XXH128_testdata[12444] */ + { 4148, 0x000000009E3779B1ULL, { 0x5D964B579158622AULL, 0x5B8A72132580F0A7ULL } }, /* XSUM_XXH128_testdata[12445] */ + { 4148, 0x9E3779B185EBCA8DULL, { 0x9015A06A74AAF7ADULL, 0xE87ACD0201AA9FAAULL } }, /* XSUM_XXH128_testdata[12446] */ + { 4149, 0x0000000000000000ULL, { 0xC8BC0D4587507A82ULL, 0xF6836F6AD221F5B6ULL } }, /* XSUM_XXH128_testdata[12447] */ + { 4149, 0x000000009E3779B1ULL, { 0xD4444F34E9075DEEULL, 0xEDD8FC01F4AB10E1ULL } }, /* XSUM_XXH128_testdata[12448] */ + { 4149, 0x9E3779B185EBCA8DULL, { 0x49078EE634DAC055ULL, 0xC2B828A03F2BF9F6ULL } }, /* XSUM_XXH128_testdata[12449] */ + { 4150, 0x0000000000000000ULL, { 0xF361427C856A2130ULL, 0x90C883660E021750ULL } }, /* XSUM_XXH128_testdata[12450] */ + { 4150, 0x000000009E3779B1ULL, { 0x1513E1FD516D1856ULL, 0x31B55225D5A9D4FCULL } }, /* XSUM_XXH128_testdata[12451] */ + { 4150, 0x9E3779B185EBCA8DULL, { 0x2C274D3B17BDAB2BULL, 0xDDAD40CC38D505F9ULL } }, /* XSUM_XXH128_testdata[12452] */ + { 4151, 0x0000000000000000ULL, { 0x73C28767099B7F10ULL, 0x9718C499A390F9E5ULL } }, /* XSUM_XXH128_testdata[12453] */ + { 4151, 0x000000009E3779B1ULL, { 0xA6FC83B0756159C9ULL, 0xCAF7D4636DA0E3A9ULL } }, /* XSUM_XXH128_testdata[12454] */ + { 4151, 0x9E3779B185EBCA8DULL, { 0x50D6EF8D5079F59EULL, 0xAAE4A2353B166BC7ULL } }, /* XSUM_XXH128_testdata[12455] */ + { 4152, 0x0000000000000000ULL, { 0xCD366C29C2EFCBEEULL, 0x59A68CC7A0373E09ULL } }, /* XSUM_XXH128_testdata[12456] */ + { 4152, 0x000000009E3779B1ULL, { 0x9FC44D66AAC4FA55ULL, 0x7D232AF2C0DE1F50ULL } }, /* XSUM_XXH128_testdata[12457] */ + { 4152, 0x9E3779B185EBCA8DULL, { 0x788CA0DA89BA7994ULL, 0xD1B92AB066C4A922ULL } }, /* XSUM_XXH128_testdata[12458] */ + { 4153, 0x0000000000000000ULL, { 0xDECDEB44E10C8AEDULL, 0xFAD3BCD9C17B88C4ULL } }, /* XSUM_XXH128_testdata[12459] */ + { 4153, 0x000000009E3779B1ULL, { 0xA59E521110E02A00ULL, 0x8EF3716EBEC457C8ULL } }, /* XSUM_XXH128_testdata[12460] */ + { 4153, 0x9E3779B185EBCA8DULL, { 0xF9EC4FC72ED3022BULL, 0x0C26F64DFCF006B8ULL } }, /* XSUM_XXH128_testdata[12461] */ + { 4154, 0x0000000000000000ULL, { 0x3D275C1B1AE8039BULL, 0xC562C22B11969932ULL } }, /* XSUM_XXH128_testdata[12462] */ + { 4154, 0x000000009E3779B1ULL, { 0x8F31A710140CFB77ULL, 0x385F23BFCB77E320ULL } }, /* XSUM_XXH128_testdata[12463] */ + { 4154, 0x9E3779B185EBCA8DULL, { 0xA5102A522AA1A09FULL, 0x53211B5A58A112A5ULL } }, /* XSUM_XXH128_testdata[12464] */ + { 4155, 0x0000000000000000ULL, { 0xA4FDF77C6F559146ULL, 0x1CAC67B546DE515CULL } }, /* XSUM_XXH128_testdata[12465] */ + { 4155, 0x000000009E3779B1ULL, { 0x6665592D1B66D151ULL, 0xCF0234C0E4CC39ABULL } }, /* XSUM_XXH128_testdata[12466] */ + { 4155, 0x9E3779B185EBCA8DULL, { 0x35C840E2E19D43F2ULL, 0x1BE5F303C3BC7A59ULL } }, /* XSUM_XXH128_testdata[12467] */ + { 4156, 0x0000000000000000ULL, { 0xF813FD5B27829876ULL, 0x4BB69A6334CDF859ULL } }, /* XSUM_XXH128_testdata[12468] */ + { 4156, 0x000000009E3779B1ULL, { 0x15C84E63D508D93BULL, 0x38AC0335709E3460ULL } }, /* XSUM_XXH128_testdata[12469] */ + { 4156, 0x9E3779B185EBCA8DULL, { 0xF7111F8114507DD9ULL, 0xE3C68007CF3A4D32ULL } }, /* XSUM_XXH128_testdata[12470] */ + { 4157, 0x0000000000000000ULL, { 0xF42176B56C73715FULL, 0xDA5CEF5035548605ULL } }, /* XSUM_XXH128_testdata[12471] */ + { 4157, 0x000000009E3779B1ULL, { 0x17EDB71E44A36B60ULL, 0xADB32597DD1AC25DULL } }, /* XSUM_XXH128_testdata[12472] */ + { 4157, 0x9E3779B185EBCA8DULL, { 0x077018E0E617CDEBULL, 0x65814F500FC51474ULL } }, /* XSUM_XXH128_testdata[12473] */ + { 4158, 0x0000000000000000ULL, { 0xEDBE4799591C4E15ULL, 0x39ED96905B72DA2EULL } }, /* XSUM_XXH128_testdata[12474] */ + { 4158, 0x000000009E3779B1ULL, { 0x017BFA1CFA1BC49FULL, 0x26511ADA5A09B022ULL } }, /* XSUM_XXH128_testdata[12475] */ + { 4158, 0x9E3779B185EBCA8DULL, { 0xB2707B4590CF62F7ULL, 0x8B2F0D434743A246ULL } }, /* XSUM_XXH128_testdata[12476] */ + { 4159, 0x0000000000000000ULL, { 0x4414D090B4A6043FULL, 0x6541793B06DFEC57ULL } }, /* XSUM_XXH128_testdata[12477] */ + { 4159, 0x000000009E3779B1ULL, { 0x1293CC5598CC1459ULL, 0xD9F7953934F23FF3ULL } }, /* XSUM_XXH128_testdata[12478] */ + { 4159, 0x9E3779B185EBCA8DULL, { 0x19BC48EE50380E4DULL, 0xEEF9E54E3894796DULL } }, /* XSUM_XXH128_testdata[12479] */ + { 4160, 0x0000000000000000ULL, { 0x4F323B15321E94E1ULL, 0x67140711C1E3E335ULL } }, /* XSUM_XXH128_testdata[12480] */ + { 4160, 0x000000009E3779B1ULL, { 0x71C9218C2DC48FF4ULL, 0x82466B99FEB516A4ULL } }, /* XSUM_XXH128_testdata[12481] */ + { 4160, 0x9E3779B185EBCA8DULL, { 0x1BF6F5FAF9EECABDULL, 0xEE430626BA3B2F3CULL } }, /* XSUM_XXH128_testdata[12482] */ +}; +static const XSUM_testdata128_t XSUM_XXH128_withSecret_testdata[] = { + { 0, 0x0000000000000000ULL, { 0x005923CCEECBE8AEULL, 0x5F70F4EA232F1D38ULL } }, /* XSUM_XXH128_withSecret_testdata[0] */ + { 1, 0x0000000000000000ULL, { 0x8A52451418B2DA4DULL, 0x3A66AF5A9819198EULL } }, /* XSUM_XXH128_withSecret_testdata[1] */ + { 2, 0x0000000000000000ULL, { 0x37F66AEA23328C98ULL, 0xC08CDA5D6AC10716ULL } }, /* XSUM_XXH128_withSecret_testdata[2] */ + { 3, 0x0000000000000000ULL, { 0xE9AF94712FFBC846ULL, 0x51103173FA1F0727ULL } }, /* XSUM_XXH128_withSecret_testdata[3] */ + { 4, 0x0000000000000000ULL, { 0x266A9B610A7A5641ULL, 0xCCC924914B0D8032ULL } }, /* XSUM_XXH128_withSecret_testdata[4] */ + { 5, 0x0000000000000000ULL, { 0x89ABEB0FC033BCDDULL, 0xC07170D355040D90ULL } }, /* XSUM_XXH128_withSecret_testdata[5] */ + { 6, 0x0000000000000000ULL, { 0x0B61C8ACA7D4778FULL, 0x376BD91B6432F36DULL } }, /* XSUM_XXH128_withSecret_testdata[6] */ + { 7, 0x0000000000000000ULL, { 0x0F93C8858E92AEEDULL, 0x37BBC5F1880C27F5ULL } }, /* XSUM_XXH128_withSecret_testdata[7] */ + { 8, 0x0000000000000000ULL, { 0xF668474D2FEE1F92ULL, 0x20ED43FF46F7A0A1ULL } }, /* XSUM_XXH128_withSecret_testdata[8] */ + { 9, 0x0000000000000000ULL, { 0xC3BBF94649C59DFCULL, 0x6AF09813AF70CFD1ULL } }, /* XSUM_XXH128_withSecret_testdata[9] */ + { 10, 0x0000000000000000ULL, { 0xCD818BFB9B889C9CULL, 0x922146F77F672CFDULL } }, /* XSUM_XXH128_withSecret_testdata[10] */ + { 11, 0x0000000000000000ULL, { 0xD5DDEF8A3FF337A3ULL, 0x908549F4C0AACEA0ULL } }, /* XSUM_XXH128_withSecret_testdata[11] */ + { 12, 0x0000000000000000ULL, { 0xAF82F6EBA263D7D8ULL, 0x90A3C2D839F57D0FULL } }, /* XSUM_XXH128_withSecret_testdata[12] */ + { 13, 0x0000000000000000ULL, { 0xA534F08E64933220ULL, 0xFBD2B34EFBD0D3D5ULL } }, /* XSUM_XXH128_withSecret_testdata[13] */ + { 14, 0x0000000000000000ULL, { 0xD33216B1CCC6EA36ULL, 0x03A185A4F2FFE703ULL } }, /* XSUM_XXH128_withSecret_testdata[14] */ + { 15, 0x0000000000000000ULL, { 0x3DA015D718D1795BULL, 0x9F08AF8798BC4B65ULL } }, /* XSUM_XXH128_withSecret_testdata[15] */ + { 16, 0x0000000000000000ULL, { 0xFE396195466852B9ULL, 0x4C317FD601BCDA88ULL } }, /* XSUM_XXH128_withSecret_testdata[16] */ + { 17, 0x0000000000000000ULL, { 0xE94EB4616009B975ULL, 0x604CC5EE8F142950ULL } }, /* XSUM_XXH128_withSecret_testdata[17] */ + { 18, 0x0000000000000000ULL, { 0xA9F9C25E1EFD4455ULL, 0xF7254A7CC4734D98ULL } }, /* XSUM_XXH128_withSecret_testdata[18] */ + { 19, 0x0000000000000000ULL, { 0x0EA924F634D5719DULL, 0xF4DDA3401B71E49AULL } }, /* XSUM_XXH128_withSecret_testdata[19] */ + { 20, 0x0000000000000000ULL, { 0xC24600D29F90EB72ULL, 0xE8150662049BDD49ULL } }, /* XSUM_XXH128_withSecret_testdata[20] */ + { 21, 0x0000000000000000ULL, { 0xF6DA2F888E077822ULL, 0x9A0538BD266A8FF0ULL } }, /* XSUM_XXH128_withSecret_testdata[21] */ + { 22, 0x0000000000000000ULL, { 0x868F7FDC6B64A5E1ULL, 0x4719A571742551BEULL } }, /* XSUM_XXH128_withSecret_testdata[22] */ + { 23, 0x0000000000000000ULL, { 0xC022FADA03B0C806ULL, 0xE4FDDCF94F7E8890ULL } }, /* XSUM_XXH128_withSecret_testdata[23] */ + { 24, 0x0000000000000000ULL, { 0xD9ED8351E0BB5526ULL, 0x3476C01AB8B8E821ULL } }, /* XSUM_XXH128_withSecret_testdata[24] */ + { 25, 0x0000000000000000ULL, { 0x06552D62CFD95F3FULL, 0xFA745BDD1A2F6D9CULL } }, /* XSUM_XXH128_withSecret_testdata[25] */ + { 26, 0x0000000000000000ULL, { 0x263FB24D3DBFDDD8ULL, 0xD03DFEBC3EE25BD9ULL } }, /* XSUM_XXH128_withSecret_testdata[26] */ + { 27, 0x0000000000000000ULL, { 0x7C631513922C42FEULL, 0x7276F216804D2407ULL } }, /* XSUM_XXH128_withSecret_testdata[27] */ + { 28, 0x0000000000000000ULL, { 0x180993978812CBB8ULL, 0x09997A9571F03BFCULL } }, /* XSUM_XXH128_withSecret_testdata[28] */ + { 29, 0x0000000000000000ULL, { 0xA1CFB5DE48C3358BULL, 0xE9F78EBAB8892F78ULL } }, /* XSUM_XXH128_withSecret_testdata[29] */ + { 30, 0x0000000000000000ULL, { 0x67B5699BBC065685ULL, 0x9E50D6ADA4F8FB69ULL } }, /* XSUM_XXH128_withSecret_testdata[30] */ + { 31, 0x0000000000000000ULL, { 0x0826F7A00A7D7826ULL, 0xB40BDDCA373A4F2BULL } }, /* XSUM_XXH128_withSecret_testdata[31] */ + { 32, 0x0000000000000000ULL, { 0x28FEAFA7CAF376DCULL, 0x125FB63CC4369AECULL } }, /* XSUM_XXH128_withSecret_testdata[32] */ + { 33, 0x0000000000000000ULL, { 0xF7402A52B40DB03DULL, 0xB2407E682B957AF2ULL } }, /* XSUM_XXH128_withSecret_testdata[33] */ + { 34, 0x0000000000000000ULL, { 0xCA0B380DCA415E54ULL, 0x814D60B94F75D99FULL } }, /* XSUM_XXH128_withSecret_testdata[34] */ + { 35, 0x0000000000000000ULL, { 0x04A3A1198E95A8E7ULL, 0xF975305FC60335C9ULL } }, /* XSUM_XXH128_withSecret_testdata[35] */ + { 36, 0x0000000000000000ULL, { 0x4240C7A78F554C61ULL, 0xC656675239072BB9ULL } }, /* XSUM_XXH128_withSecret_testdata[36] */ + { 37, 0x0000000000000000ULL, { 0x62A1823E9B10EDC1ULL, 0xDB1C8510F04171E1ULL } }, /* XSUM_XXH128_withSecret_testdata[37] */ + { 38, 0x0000000000000000ULL, { 0xE333413A9FCAD345ULL, 0xB642EEE9C13876D4ULL } }, /* XSUM_XXH128_withSecret_testdata[38] */ + { 39, 0x0000000000000000ULL, { 0x8288525A3A70C1C4ULL, 0xA91F3EBCA128158FULL } }, /* XSUM_XXH128_withSecret_testdata[39] */ + { 40, 0x0000000000000000ULL, { 0x604408A611E47F28ULL, 0x385A961FDA81DCF9ULL } }, /* XSUM_XXH128_withSecret_testdata[40] */ + { 41, 0x0000000000000000ULL, { 0x04F891EBD95C9908ULL, 0x467401BE2C8A3240ULL } }, /* XSUM_XXH128_withSecret_testdata[41] */ + { 42, 0x0000000000000000ULL, { 0x6A237EF0C30661B9ULL, 0xF733D3ED2B3388B5ULL } }, /* XSUM_XXH128_withSecret_testdata[42] */ + { 43, 0x0000000000000000ULL, { 0x55B7FCD60A95CD5CULL, 0x021FE773A32511E6ULL } }, /* XSUM_XXH128_withSecret_testdata[43] */ + { 44, 0x0000000000000000ULL, { 0x05E95609D6695482ULL, 0xBCE8FC2576CB2AE4ULL } }, /* XSUM_XXH128_withSecret_testdata[44] */ + { 45, 0x0000000000000000ULL, { 0x7D471775B2B298D7ULL, 0x24EED63FD8DF0E0DULL } }, /* XSUM_XXH128_withSecret_testdata[45] */ + { 46, 0x0000000000000000ULL, { 0xED9D3B0818352685ULL, 0x5ACD7633EB5491B4ULL } }, /* XSUM_XXH128_withSecret_testdata[46] */ + { 47, 0x0000000000000000ULL, { 0xBD362F91C9DFA9C7ULL, 0xE1D33A035CADD7FAULL } }, /* XSUM_XXH128_withSecret_testdata[47] */ + { 48, 0x0000000000000000ULL, { 0xD3488D14A0FC9147ULL, 0x2C599633A4D78138ULL } }, /* XSUM_XXH128_withSecret_testdata[48] */ + { 49, 0x0000000000000000ULL, { 0xAC2779FC52FE2A62ULL, 0x02E2F6D713F11585ULL } }, /* XSUM_XXH128_withSecret_testdata[49] */ + { 50, 0x0000000000000000ULL, { 0xFA42D7D6DF651F9CULL, 0x02E0C3E60325765BULL } }, /* XSUM_XXH128_withSecret_testdata[50] */ + { 51, 0x0000000000000000ULL, { 0x9E47E769CF244AE9ULL, 0x550496A7C9AFC757ULL } }, /* XSUM_XXH128_withSecret_testdata[51] */ + { 52, 0x0000000000000000ULL, { 0x25E2303DF976DCB8ULL, 0x684DDA2DB6044167ULL } }, /* XSUM_XXH128_withSecret_testdata[52] */ + { 53, 0x0000000000000000ULL, { 0x3A4EA63096FD3BD5ULL, 0x24979FD18F8408B1ULL } }, /* XSUM_XXH128_withSecret_testdata[53] */ + { 54, 0x0000000000000000ULL, { 0x4FB4F385AE98821EULL, 0x34DE69F041D57134ULL } }, /* XSUM_XXH128_withSecret_testdata[54] */ + { 55, 0x0000000000000000ULL, { 0xCD02BCD5210A1D03ULL, 0x9305842C5FBFB062ULL } }, /* XSUM_XXH128_withSecret_testdata[55] */ + { 56, 0x0000000000000000ULL, { 0xF965EDE191513EA8ULL, 0xBD1030FC3B5BB71CULL } }, /* XSUM_XXH128_withSecret_testdata[56] */ + { 57, 0x0000000000000000ULL, { 0x6E86FB8C8FD80F62ULL, 0xA3320DBDC0329751ULL } }, /* XSUM_XXH128_withSecret_testdata[57] */ + { 58, 0x0000000000000000ULL, { 0xEDD4CF814C86693BULL, 0x63319ACFC8DBC3F9ULL } }, /* XSUM_XXH128_withSecret_testdata[58] */ + { 59, 0x0000000000000000ULL, { 0x9B883A1D90D5AEDDULL, 0xE5FF022237E6EAC7ULL } }, /* XSUM_XXH128_withSecret_testdata[59] */ + { 60, 0x0000000000000000ULL, { 0xAB60882A5393BEB4ULL, 0x64E50BB90EB19E6EULL } }, /* XSUM_XXH128_withSecret_testdata[60] */ + { 61, 0x0000000000000000ULL, { 0x48A71551C10FE426ULL, 0xD927E2CBC325145CULL } }, /* XSUM_XXH128_withSecret_testdata[61] */ + { 62, 0x0000000000000000ULL, { 0xCA08B695F08F171CULL, 0x8D2039B21310C929ULL } }, /* XSUM_XXH128_withSecret_testdata[62] */ + { 63, 0x0000000000000000ULL, { 0x04E41BB83D10B818ULL, 0x8158A2943D5FDEDDULL } }, /* XSUM_XXH128_withSecret_testdata[63] */ + { 64, 0x0000000000000000ULL, { 0x5638769ED33E3E38ULL, 0x40EBDA012DB18E86ULL } }, /* XSUM_XXH128_withSecret_testdata[64] */ + { 65, 0x0000000000000000ULL, { 0xEBE6FF11BCEDA8E5ULL, 0x1F99B7E7674A4B4AULL } }, /* XSUM_XXH128_withSecret_testdata[65] */ + { 66, 0x0000000000000000ULL, { 0x63FCDF2A6A73A73CULL, 0x739C2FB969E42143ULL } }, /* XSUM_XXH128_withSecret_testdata[66] */ + { 67, 0x0000000000000000ULL, { 0xA4083546C2211DCDULL, 0x6C05DFBB7C451237ULL } }, /* XSUM_XXH128_withSecret_testdata[67] */ + { 68, 0x0000000000000000ULL, { 0x2210E480F785B592ULL, 0xC6F674D3A0CB5F7FULL } }, /* XSUM_XXH128_withSecret_testdata[68] */ + { 69, 0x0000000000000000ULL, { 0xDBCCB67DAFB98A8FULL, 0x96F8CDB04116DBF1ULL } }, /* XSUM_XXH128_withSecret_testdata[69] */ + { 70, 0x0000000000000000ULL, { 0xE7F3648D5A346C44ULL, 0x9E79EFD228DA1EB7ULL } }, /* XSUM_XXH128_withSecret_testdata[70] */ + { 71, 0x0000000000000000ULL, { 0x671D1976C4EC726BULL, 0x914808520C7232DEULL } }, /* XSUM_XXH128_withSecret_testdata[71] */ + { 72, 0x0000000000000000ULL, { 0x6181BD9E19757843ULL, 0x71309C1A23E88DC0ULL } }, /* XSUM_XXH128_withSecret_testdata[72] */ + { 73, 0x0000000000000000ULL, { 0xE5A67532DE2A789CULL, 0x27EF9666A461F781ULL } }, /* XSUM_XXH128_withSecret_testdata[73] */ + { 74, 0x0000000000000000ULL, { 0x10A78206F2872A09ULL, 0xB80FF0C5C5CF01D6ULL } }, /* XSUM_XXH128_withSecret_testdata[74] */ + { 75, 0x0000000000000000ULL, { 0xF54EE29150EDA715ULL, 0x7F33AF0DD8E18136ULL } }, /* XSUM_XXH128_withSecret_testdata[75] */ + { 76, 0x0000000000000000ULL, { 0xD04BE658B9FF0ADCULL, 0x511BA43F47D8007FULL } }, /* XSUM_XXH128_withSecret_testdata[76] */ + { 77, 0x0000000000000000ULL, { 0xF04C3A9EEFA9C625ULL, 0x147C0560AE8F81CFULL } }, /* XSUM_XXH128_withSecret_testdata[77] */ + { 78, 0x0000000000000000ULL, { 0x5D7A58A57EAE992AULL, 0xDC7411E6DA72AE63ULL } }, /* XSUM_XXH128_withSecret_testdata[78] */ + { 79, 0x0000000000000000ULL, { 0x61B7E6F3AEC97327ULL, 0x2A872E47D42DD3D1ULL } }, /* XSUM_XXH128_withSecret_testdata[79] */ + { 80, 0x0000000000000000ULL, { 0x12568D8D732F8544ULL, 0x5DE1C8EB7BD056B8ULL } }, /* XSUM_XXH128_withSecret_testdata[80] */ + { 81, 0x0000000000000000ULL, { 0x66C0D63926FF0562ULL, 0xCA4A09CE396FEACCULL } }, /* XSUM_XXH128_withSecret_testdata[81] */ + { 82, 0x0000000000000000ULL, { 0x627F5C0C3D57830BULL, 0xC9620A8410AD57CBULL } }, /* XSUM_XXH128_withSecret_testdata[82] */ + { 83, 0x0000000000000000ULL, { 0xFFE8AF061E65D671ULL, 0x1C815B5C20222A1DULL } }, /* XSUM_XXH128_withSecret_testdata[83] */ + { 84, 0x0000000000000000ULL, { 0x7ED64FF58BEAA26EULL, 0x1D71C98458A42247ULL } }, /* XSUM_XXH128_withSecret_testdata[84] */ + { 85, 0x0000000000000000ULL, { 0x04402715E249DC7EULL, 0x2F30F5B222C131E9ULL } }, /* XSUM_XXH128_withSecret_testdata[85] */ + { 86, 0x0000000000000000ULL, { 0xF89589B48611BBC1ULL, 0xB609ADDA7D9A0103ULL } }, /* XSUM_XXH128_withSecret_testdata[86] */ + { 87, 0x0000000000000000ULL, { 0x4536A064566F2248ULL, 0x3F418745C4F4AC52ULL } }, /* XSUM_XXH128_withSecret_testdata[87] */ + { 88, 0x0000000000000000ULL, { 0x728F33268CEB7286ULL, 0x30B632A27E5D0D5FULL } }, /* XSUM_XXH128_withSecret_testdata[88] */ + { 89, 0x0000000000000000ULL, { 0x07EB7F8A89BDD335ULL, 0xC65710C5D1B4310AULL } }, /* XSUM_XXH128_withSecret_testdata[89] */ + { 90, 0x0000000000000000ULL, { 0xA51772F3B3A1CBFAULL, 0xE30B4FB5954869F5ULL } }, /* XSUM_XXH128_withSecret_testdata[90] */ + { 91, 0x0000000000000000ULL, { 0x1D256B71C5FBA848ULL, 0x22306578BF922F54ULL } }, /* XSUM_XXH128_withSecret_testdata[91] */ + { 92, 0x0000000000000000ULL, { 0x7C1605D78161B246ULL, 0xB13CD259B18B2519ULL } }, /* XSUM_XXH128_withSecret_testdata[92] */ + { 93, 0x0000000000000000ULL, { 0x45C5187CEDDF1D28ULL, 0x9DD204B428420FFCULL } }, /* XSUM_XXH128_withSecret_testdata[93] */ + { 94, 0x0000000000000000ULL, { 0xFB4FAA95CC9754CDULL, 0x7E5D92E997B7D18FULL } }, /* XSUM_XXH128_withSecret_testdata[94] */ + { 95, 0x0000000000000000ULL, { 0xAAC141890FB205A6ULL, 0xE0E43F1DA6491546ULL } }, /* XSUM_XXH128_withSecret_testdata[95] */ + { 96, 0x0000000000000000ULL, { 0x23F2A73C006F4795ULL, 0x60166D062D8C6594ULL } }, /* XSUM_XXH128_withSecret_testdata[96] */ + { 97, 0x0000000000000000ULL, { 0x3988B2EE2211C48AULL, 0x5DEA30EA8FCDB355ULL } }, /* XSUM_XXH128_withSecret_testdata[97] */ + { 98, 0x0000000000000000ULL, { 0x54C1538C29193B14ULL, 0x0BAF1E1FFF55D8FDULL } }, /* XSUM_XXH128_withSecret_testdata[98] */ + { 99, 0x0000000000000000ULL, { 0xE4B987648656E4EFULL, 0x69163098A876FEB5ULL } }, /* XSUM_XXH128_withSecret_testdata[99] */ + { 100, 0x0000000000000000ULL, { 0xA817DC08F5B6190AULL, 0x410FD4B26A319BA9ULL } }, /* XSUM_XXH128_withSecret_testdata[100] */ + { 101, 0x0000000000000000ULL, { 0x71D5F260CA034E1DULL, 0x2A4DD5900022016AULL } }, /* XSUM_XXH128_withSecret_testdata[101] */ + { 102, 0x0000000000000000ULL, { 0x91CBB6A54E65095DULL, 0xFDAF159BEF221A11ULL } }, /* XSUM_XXH128_withSecret_testdata[102] */ + { 103, 0x0000000000000000ULL, { 0x8AD1103C4C5047C1ULL, 0x279CEB16694CD472ULL } }, /* XSUM_XXH128_withSecret_testdata[103] */ + { 104, 0x0000000000000000ULL, { 0xF019F19F3E087ABCULL, 0x801BF630506BF978ULL } }, /* XSUM_XXH128_withSecret_testdata[104] */ + { 105, 0x0000000000000000ULL, { 0xE457551A70141EBAULL, 0xBDDAD8D50EB25775ULL } }, /* XSUM_XXH128_withSecret_testdata[105] */ + { 106, 0x0000000000000000ULL, { 0x5318CF58EBA84A7CULL, 0xC913863B844233E0ULL } }, /* XSUM_XXH128_withSecret_testdata[106] */ + { 107, 0x0000000000000000ULL, { 0x53CBA6E311862BAFULL, 0x2BCAF0756BDAFD0BULL } }, /* XSUM_XXH128_withSecret_testdata[107] */ + { 108, 0x0000000000000000ULL, { 0x03B99A08DD81208BULL, 0x71CA15769903D27BULL } }, /* XSUM_XXH128_withSecret_testdata[108] */ + { 109, 0x0000000000000000ULL, { 0xF7EF02BF9701F786ULL, 0x51801F29B7F3E2A3ULL } }, /* XSUM_XXH128_withSecret_testdata[109] */ + { 110, 0x0000000000000000ULL, { 0x30BF20F52A70A3C7ULL, 0x52BC7CF79E6AD74BULL } }, /* XSUM_XXH128_withSecret_testdata[110] */ + { 111, 0x0000000000000000ULL, { 0x0FB5ADC5336A3697ULL, 0xC79F7F3A6B06237EULL } }, /* XSUM_XXH128_withSecret_testdata[111] */ + { 112, 0x0000000000000000ULL, { 0xB72238D96DBCA9DCULL, 0x6876111893721E19ULL } }, /* XSUM_XXH128_withSecret_testdata[112] */ + { 113, 0x0000000000000000ULL, { 0x8055B2E82BCC93ACULL, 0x728CAC14B83493F4ULL } }, /* XSUM_XXH128_withSecret_testdata[113] */ + { 114, 0x0000000000000000ULL, { 0xC400BD9A0E4D032DULL, 0x630BA8B3AB188199ULL } }, /* XSUM_XXH128_withSecret_testdata[114] */ + { 115, 0x0000000000000000ULL, { 0x01ED38D4CB12C081ULL, 0x20CDCAD4B333DA62ULL } }, /* XSUM_XXH128_withSecret_testdata[115] */ + { 116, 0x0000000000000000ULL, { 0xBCC3833F8B6C4941ULL, 0x4A58ACD41F053635ULL } }, /* XSUM_XXH128_withSecret_testdata[116] */ + { 117, 0x0000000000000000ULL, { 0x09766781BF9ACBB2ULL, 0x87EA392EB2C28A05ULL } }, /* XSUM_XXH128_withSecret_testdata[117] */ + { 118, 0x0000000000000000ULL, { 0x6ABAF2650601424AULL, 0x05D7A40898F0815CULL } }, /* XSUM_XXH128_withSecret_testdata[118] */ + { 119, 0x0000000000000000ULL, { 0xE8581C268DCE332DULL, 0x2CEB454728F41A21ULL } }, /* XSUM_XXH128_withSecret_testdata[119] */ + { 120, 0x0000000000000000ULL, { 0x01D39C5E5D4DFC37ULL, 0x12099BBC68C3A850ULL } }, /* XSUM_XXH128_withSecret_testdata[120] */ + { 121, 0x0000000000000000ULL, { 0xAC6B9AA12F4F28DEULL, 0xE4BF1FBD197511D1ULL } }, /* XSUM_XXH128_withSecret_testdata[121] */ + { 122, 0x0000000000000000ULL, { 0xB74424F50F8BE791ULL, 0xE258FCC02563B763ULL } }, /* XSUM_XXH128_withSecret_testdata[122] */ + { 123, 0x0000000000000000ULL, { 0xED1BCC5CCA34CDA9ULL, 0x947599FF34606547ULL } }, /* XSUM_XXH128_withSecret_testdata[123] */ + { 124, 0x0000000000000000ULL, { 0xA97FFDB90CD8D597ULL, 0xE628833F79F3DEAFULL } }, /* XSUM_XXH128_withSecret_testdata[124] */ + { 125, 0x0000000000000000ULL, { 0xD136093D550E6446ULL, 0x58085A541C209BEDULL } }, /* XSUM_XXH128_withSecret_testdata[125] */ + { 126, 0x0000000000000000ULL, { 0x30329ED50A8CC757ULL, 0x39EA9E35F9BAACCAULL } }, /* XSUM_XXH128_withSecret_testdata[126] */ + { 127, 0x0000000000000000ULL, { 0xB3F6E1C75D2D5B7AULL, 0x6F8B43137ED85CC7ULL } }, /* XSUM_XXH128_withSecret_testdata[127] */ + { 128, 0x0000000000000000ULL, { 0xB8FEEC0B6B6EAF60ULL, 0x1DF8CCE15FE35B2CULL } }, /* XSUM_XXH128_withSecret_testdata[128] */ + { 129, 0x0000000000000000ULL, { 0x9DEF70D87B89ED7BULL, 0x72D4D4395002B150ULL } }, /* XSUM_XXH128_withSecret_testdata[129] */ + { 130, 0x0000000000000000ULL, { 0xDDBEA0A707C25741ULL, 0x1C55429ED8BBDEC1ULL } }, /* XSUM_XXH128_withSecret_testdata[130] */ + { 131, 0x0000000000000000ULL, { 0xD470341F5D2FA9CBULL, 0x3893367CB6DDBF63ULL } }, /* XSUM_XXH128_withSecret_testdata[131] */ + { 132, 0x0000000000000000ULL, { 0xDBBA90102D020290ULL, 0x83339A17DC88410BULL } }, /* XSUM_XXH128_withSecret_testdata[132] */ + { 133, 0x0000000000000000ULL, { 0x3221BFA1F8A1D051ULL, 0x93B74C0214AA4D6AULL } }, /* XSUM_XXH128_withSecret_testdata[133] */ + { 134, 0x0000000000000000ULL, { 0x9958E2018A688DEFULL, 0x963E5B7CDAF4236DULL } }, /* XSUM_XXH128_withSecret_testdata[134] */ + { 135, 0x0000000000000000ULL, { 0xD61FD072B03D81F6ULL, 0xC77991B971B3A464ULL } }, /* XSUM_XXH128_withSecret_testdata[135] */ + { 136, 0x0000000000000000ULL, { 0xF6912A73DE377C0EULL, 0xD2CC2F0C370973D9ULL } }, /* XSUM_XXH128_withSecret_testdata[136] */ + { 137, 0x0000000000000000ULL, { 0xBCA442E48EAD20F0ULL, 0x39666F59876009ADULL } }, /* XSUM_XXH128_withSecret_testdata[137] */ + { 138, 0x0000000000000000ULL, { 0xDE965FAAB7E9D02AULL, 0x30299D240E2E473FULL } }, /* XSUM_XXH128_withSecret_testdata[138] */ + { 139, 0x0000000000000000ULL, { 0xC34A1B4999505ADCULL, 0x68E28AFC53EDDCCAULL } }, /* XSUM_XXH128_withSecret_testdata[139] */ + { 140, 0x0000000000000000ULL, { 0x8CF5C8F2B296F9FFULL, 0xAF914D0D28F77269ULL } }, /* XSUM_XXH128_withSecret_testdata[140] */ + { 141, 0x0000000000000000ULL, { 0xC32966A5C243D365ULL, 0x5BBF57053F319A25ULL } }, /* XSUM_XXH128_withSecret_testdata[141] */ + { 142, 0x0000000000000000ULL, { 0x1055CF2DD9C7F592ULL, 0xEB41BF69D1719356ULL } }, /* XSUM_XXH128_withSecret_testdata[142] */ + { 143, 0x0000000000000000ULL, { 0x862D7AEDA5A75D1EULL, 0xFF1B59F987821919ULL } }, /* XSUM_XXH128_withSecret_testdata[143] */ + { 144, 0x0000000000000000ULL, { 0x96C7C5A1E486F9ACULL, 0xDC04E81604A1058EULL } }, /* XSUM_XXH128_withSecret_testdata[144] */ + { 145, 0x0000000000000000ULL, { 0xBFDE067D31343802ULL, 0xCB0F612FE98CDBC5ULL } }, /* XSUM_XXH128_withSecret_testdata[145] */ + { 146, 0x0000000000000000ULL, { 0x8776BA5C03949FC2ULL, 0x88E9C30C8EE953D6ULL } }, /* XSUM_XXH128_withSecret_testdata[146] */ + { 147, 0x0000000000000000ULL, { 0xE78E7F2841F11DF4ULL, 0x9D0EE772874F1D68ULL } }, /* XSUM_XXH128_withSecret_testdata[147] */ + { 148, 0x0000000000000000ULL, { 0xFA1EC1D3E9284D03ULL, 0xF81394C71915BF4BULL } }, /* XSUM_XXH128_withSecret_testdata[148] */ + { 149, 0x0000000000000000ULL, { 0xA3CA27B80BB01E26ULL, 0x9CDEF2A47DD408C6ULL } }, /* XSUM_XXH128_withSecret_testdata[149] */ + { 150, 0x0000000000000000ULL, { 0xC3AC18DA3DCCB14BULL, 0xD24662A5002390B7ULL } }, /* XSUM_XXH128_withSecret_testdata[150] */ + { 151, 0x0000000000000000ULL, { 0x5DFCED57ECE5AE97ULL, 0x828B2919E5AB0BA7ULL } }, /* XSUM_XXH128_withSecret_testdata[151] */ + { 152, 0x0000000000000000ULL, { 0x80D99C16BE5B4746ULL, 0x50D07D4D9711759FULL } }, /* XSUM_XXH128_withSecret_testdata[152] */ + { 153, 0x0000000000000000ULL, { 0x0D90470AE6114654ULL, 0x4F8EFB392DBB8248ULL } }, /* XSUM_XXH128_withSecret_testdata[153] */ + { 154, 0x0000000000000000ULL, { 0xCC9BB080CC86D5A1ULL, 0x0961BF86A5F3024DULL } }, /* XSUM_XXH128_withSecret_testdata[154] */ + { 155, 0x0000000000000000ULL, { 0xB1A7D7D0AB8EBEB5ULL, 0x0B9DB6903BA667F3ULL } }, /* XSUM_XXH128_withSecret_testdata[155] */ + { 156, 0x0000000000000000ULL, { 0x8C602417036EBF44ULL, 0x534C73F8E08B1B80ULL } }, /* XSUM_XXH128_withSecret_testdata[156] */ + { 157, 0x0000000000000000ULL, { 0x68DE6650D55302F4ULL, 0xDC6ADCBB66A904E9ULL } }, /* XSUM_XXH128_withSecret_testdata[157] */ + { 158, 0x0000000000000000ULL, { 0x5763F534CCDB1EBDULL, 0xAE81F148A97ABCE5ULL } }, /* XSUM_XXH128_withSecret_testdata[158] */ + { 159, 0x0000000000000000ULL, { 0x366637379715D5C5ULL, 0xF628DF357D4D234FULL } }, /* XSUM_XXH128_withSecret_testdata[159] */ + { 160, 0x0000000000000000ULL, { 0x250196B1551D54A1ULL, 0xA1564FEC41891DCFULL } }, /* XSUM_XXH128_withSecret_testdata[160] */ + { 161, 0x0000000000000000ULL, { 0x1C3EA0BF48135821ULL, 0xB3C5644903AA4E30ULL } }, /* XSUM_XXH128_withSecret_testdata[161] */ + { 162, 0x0000000000000000ULL, { 0xCACFD46F95C9C747ULL, 0xD398B74B9E18203EULL } }, /* XSUM_XXH128_withSecret_testdata[162] */ + { 163, 0x0000000000000000ULL, { 0xB657B2EE7B28DE86ULL, 0xE8DE674F85299010ULL } }, /* XSUM_XXH128_withSecret_testdata[163] */ + { 164, 0x0000000000000000ULL, { 0x2803FCF4ACB907E5ULL, 0x19325C761BB8918AULL } }, /* XSUM_XXH128_withSecret_testdata[164] */ + { 165, 0x0000000000000000ULL, { 0xA285C1FCC06B013BULL, 0x01411098BE847E51ULL } }, /* XSUM_XXH128_withSecret_testdata[165] */ + { 166, 0x0000000000000000ULL, { 0x1C65C7B3CF6A8339ULL, 0x6661402ADF5B429AULL } }, /* XSUM_XXH128_withSecret_testdata[166] */ + { 167, 0x0000000000000000ULL, { 0x037EC42FBA712AB1ULL, 0x0D9682813309E518ULL } }, /* XSUM_XXH128_withSecret_testdata[167] */ + { 168, 0x0000000000000000ULL, { 0xC7B4CFFECFE5D900ULL, 0x2ABA056AE904DC2EULL } }, /* XSUM_XXH128_withSecret_testdata[168] */ + { 169, 0x0000000000000000ULL, { 0x12B3BC668BDF5DEFULL, 0x9609D1233AB9E3F5ULL } }, /* XSUM_XXH128_withSecret_testdata[169] */ + { 170, 0x0000000000000000ULL, { 0x64E61397B3DA1608ULL, 0x1E0477A15B3F14BDULL } }, /* XSUM_XXH128_withSecret_testdata[170] */ + { 171, 0x0000000000000000ULL, { 0xCA1813B7A5D83E57ULL, 0xBA7D07226C2979A0ULL } }, /* XSUM_XXH128_withSecret_testdata[171] */ + { 172, 0x0000000000000000ULL, { 0x56CCFDB6204ED03DULL, 0x90E6FF200CAECD5EULL } }, /* XSUM_XXH128_withSecret_testdata[172] */ + { 173, 0x0000000000000000ULL, { 0x244B741853065344ULL, 0x801ABA5FA84BA9F1ULL } }, /* XSUM_XXH128_withSecret_testdata[173] */ + { 174, 0x0000000000000000ULL, { 0x583943B41EBFA43DULL, 0xBF2E0DA0A8C8EEA4ULL } }, /* XSUM_XXH128_withSecret_testdata[174] */ + { 175, 0x0000000000000000ULL, { 0x4753CB4AAFB01C1CULL, 0x367F89DD1620ABEFULL } }, /* XSUM_XXH128_withSecret_testdata[175] */ + { 176, 0x0000000000000000ULL, { 0x4CB3ADCE8349FC51ULL, 0xD9350A7FE35D2373ULL } }, /* XSUM_XXH128_withSecret_testdata[176] */ + { 177, 0x0000000000000000ULL, { 0xFF192BACFB87F40CULL, 0x27E60FC5EEFC6394ULL } }, /* XSUM_XXH128_withSecret_testdata[177] */ + { 178, 0x0000000000000000ULL, { 0x1E027E6D31573E6DULL, 0xB405AE45338123C3ULL } }, /* XSUM_XXH128_withSecret_testdata[178] */ + { 179, 0x0000000000000000ULL, { 0x9602BB0BD5650AECULL, 0x06D5C7025A4141F9ULL } }, /* XSUM_XXH128_withSecret_testdata[179] */ + { 180, 0x0000000000000000ULL, { 0x0998A3314A63DB22ULL, 0x3212D1EA4E51AEB0ULL } }, /* XSUM_XXH128_withSecret_testdata[180] */ + { 181, 0x0000000000000000ULL, { 0x5DF11BE19242A2F9ULL, 0x25AF994855F8D9C4ULL } }, /* XSUM_XXH128_withSecret_testdata[181] */ + { 182, 0x0000000000000000ULL, { 0xE95BB4B1C8119EF5ULL, 0x0DB6B9CA912777E6ULL } }, /* XSUM_XXH128_withSecret_testdata[182] */ + { 183, 0x0000000000000000ULL, { 0xA7AED4E10D584942ULL, 0xC71A2048E3F065A1ULL } }, /* XSUM_XXH128_withSecret_testdata[183] */ + { 184, 0x0000000000000000ULL, { 0x2E85101E4CDBDFD0ULL, 0x3B2A3806A42A412EULL } }, /* XSUM_XXH128_withSecret_testdata[184] */ + { 185, 0x0000000000000000ULL, { 0x1E8AF88066EE9C79ULL, 0x274685715F9998C7ULL } }, /* XSUM_XXH128_withSecret_testdata[185] */ + { 186, 0x0000000000000000ULL, { 0x192A4F6C4E51FA2BULL, 0x1A59513112DF72FFULL } }, /* XSUM_XXH128_withSecret_testdata[186] */ + { 187, 0x0000000000000000ULL, { 0x8344D3385D91A0DAULL, 0x761D19AD42DB8705ULL } }, /* XSUM_XXH128_withSecret_testdata[187] */ + { 188, 0x0000000000000000ULL, { 0xDF58F5954EB2F703ULL, 0x5DC618167F54435BULL } }, /* XSUM_XXH128_withSecret_testdata[188] */ + { 189, 0x0000000000000000ULL, { 0xD6F764DC006C84CAULL, 0x2E1BAA5DE26E94D6ULL } }, /* XSUM_XXH128_withSecret_testdata[189] */ + { 190, 0x0000000000000000ULL, { 0x2CB768345E16CF0DULL, 0x6EA0B9871340F8E6ULL } }, /* XSUM_XXH128_withSecret_testdata[190] */ + { 191, 0x0000000000000000ULL, { 0xAFB3A6316B3F1A64ULL, 0xF47D033B148F9107ULL } }, /* XSUM_XXH128_withSecret_testdata[191] */ + { 192, 0x0000000000000000ULL, { 0x296FFF5080AC60FEULL, 0xD727DC9F932A3654ULL } }, /* XSUM_XXH128_withSecret_testdata[192] */ + { 193, 0x0000000000000000ULL, { 0x836AD3763C8CDBDBULL, 0x6B17D82CA7F9A4FEULL } }, /* XSUM_XXH128_withSecret_testdata[193] */ + { 194, 0x0000000000000000ULL, { 0xA39E96B90FACE188ULL, 0x3EE1B15B39AE6CA9ULL } }, /* XSUM_XXH128_withSecret_testdata[194] */ + { 195, 0x0000000000000000ULL, { 0x002CDB4476B9A36FULL, 0x18783075F43015BEULL } }, /* XSUM_XXH128_withSecret_testdata[195] */ + { 196, 0x0000000000000000ULL, { 0x5ECA957E3A80F726ULL, 0x44A29C06F0626E95ULL } }, /* XSUM_XXH128_withSecret_testdata[196] */ + { 197, 0x0000000000000000ULL, { 0xC877409EA44A1E35ULL, 0x38DA2D39A2F42513ULL } }, /* XSUM_XXH128_withSecret_testdata[197] */ + { 198, 0x0000000000000000ULL, { 0xA59943963467BE83ULL, 0xFD6D31661C4F6042ULL } }, /* XSUM_XXH128_withSecret_testdata[198] */ + { 199, 0x0000000000000000ULL, { 0xB567998BD707ACDCULL, 0x20EC30C3B7E51727ULL } }, /* XSUM_XXH128_withSecret_testdata[199] */ + { 200, 0x0000000000000000ULL, { 0x5E1AE1C5869D3DC8ULL, 0x8ECB565D80B81F29ULL } }, /* XSUM_XXH128_withSecret_testdata[200] */ + { 201, 0x0000000000000000ULL, { 0xBFC7A339821B8E57ULL, 0xF0722315E90E8BD2ULL } }, /* XSUM_XXH128_withSecret_testdata[201] */ + { 202, 0x0000000000000000ULL, { 0xE2E8FAC1485EBE0CULL, 0x9197D3839F852444ULL } }, /* XSUM_XXH128_withSecret_testdata[202] */ + { 203, 0x0000000000000000ULL, { 0x153D96599D40B97CULL, 0x6900B65DD17395ABULL } }, /* XSUM_XXH128_withSecret_testdata[203] */ + { 204, 0x0000000000000000ULL, { 0x82743778230C0E33ULL, 0x63C818D9FCEB09E3ULL } }, /* XSUM_XXH128_withSecret_testdata[204] */ + { 205, 0x0000000000000000ULL, { 0xE3686CDBF334337AULL, 0x871C37C916C8484DULL } }, /* XSUM_XXH128_withSecret_testdata[205] */ + { 206, 0x0000000000000000ULL, { 0x307B8DE6DBD6E111ULL, 0xC64E877FCA0C102EULL } }, /* XSUM_XXH128_withSecret_testdata[206] */ + { 207, 0x0000000000000000ULL, { 0x0EF173C9E83AFFA6ULL, 0x6C2F86CB875B1F0CULL } }, /* XSUM_XXH128_withSecret_testdata[207] */ + { 208, 0x0000000000000000ULL, { 0xFC95AB9084F7955DULL, 0x23C10890CDB6F8EAULL } }, /* XSUM_XXH128_withSecret_testdata[208] */ + { 209, 0x0000000000000000ULL, { 0x32CBDE81E25752FBULL, 0xCBFD24AF228EE79DULL } }, /* XSUM_XXH128_withSecret_testdata[209] */ + { 210, 0x0000000000000000ULL, { 0xECE7B6BDDF0AD920ULL, 0xE5A36273A8D38A72ULL } }, /* XSUM_XXH128_withSecret_testdata[210] */ + { 211, 0x0000000000000000ULL, { 0xF176B32A6D8B97F5ULL, 0x21532AF458ED2BE1ULL } }, /* XSUM_XXH128_withSecret_testdata[211] */ + { 212, 0x0000000000000000ULL, { 0xF35F71734170D3B4ULL, 0x8F12A02057843F17ULL } }, /* XSUM_XXH128_withSecret_testdata[212] */ + { 213, 0x0000000000000000ULL, { 0x6628B3F5D3420A04ULL, 0x36E26A348E761B47ULL } }, /* XSUM_XXH128_withSecret_testdata[213] */ + { 214, 0x0000000000000000ULL, { 0xF14558DFCF74ADDFULL, 0xC1F6E90192ACAFB4ULL } }, /* XSUM_XXH128_withSecret_testdata[214] */ + { 215, 0x0000000000000000ULL, { 0x95135DF9CD1E9846ULL, 0x2E2246C831A4D08BULL } }, /* XSUM_XXH128_withSecret_testdata[215] */ + { 216, 0x0000000000000000ULL, { 0x247BF962C591874CULL, 0x4D7792162E2E24CEULL } }, /* XSUM_XXH128_withSecret_testdata[216] */ + { 217, 0x0000000000000000ULL, { 0xD1B9B005072AE2F0ULL, 0x9B5D40085490D84AULL } }, /* XSUM_XXH128_withSecret_testdata[217] */ + { 218, 0x0000000000000000ULL, { 0x50EAEF7E162C4F61ULL, 0xD0DFA87D112299F8ULL } }, /* XSUM_XXH128_withSecret_testdata[218] */ + { 219, 0x0000000000000000ULL, { 0x1703DF077D5589D2ULL, 0x70CBDCA6AE2D610FULL } }, /* XSUM_XXH128_withSecret_testdata[219] */ + { 220, 0x0000000000000000ULL, { 0x4EA288E848658496ULL, 0x2D510C4C829A102FULL } }, /* XSUM_XXH128_withSecret_testdata[220] */ + { 221, 0x0000000000000000ULL, { 0xA6AED727FC876025ULL, 0xB4E8522085A88772ULL } }, /* XSUM_XXH128_withSecret_testdata[221] */ + { 222, 0x0000000000000000ULL, { 0x51088F6C8FD00277ULL, 0x10A43149CC10FD05ULL } }, /* XSUM_XXH128_withSecret_testdata[222] */ + { 223, 0x0000000000000000ULL, { 0x075DD2C669124BB9ULL, 0x3CB6607A24EFDA77ULL } }, /* XSUM_XXH128_withSecret_testdata[223] */ + { 224, 0x0000000000000000ULL, { 0x45C17E9731C621AAULL, 0xE82557A8E700A942ULL } }, /* XSUM_XXH128_withSecret_testdata[224] */ + { 225, 0x0000000000000000ULL, { 0x95C12E3F03B581EBULL, 0xC44C8D77A59305E5ULL } }, /* XSUM_XXH128_withSecret_testdata[225] */ + { 226, 0x0000000000000000ULL, { 0x5C3871155A286C66ULL, 0x9AF71D1F255C7DEDULL } }, /* XSUM_XXH128_withSecret_testdata[226] */ + { 227, 0x0000000000000000ULL, { 0xEA2AA1E5E5571F9DULL, 0x7BADAF95D789490AULL } }, /* XSUM_XXH128_withSecret_testdata[227] */ + { 228, 0x0000000000000000ULL, { 0xF9BA83DDC3EBFB20ULL, 0x840D59B4E338FBB7ULL } }, /* XSUM_XXH128_withSecret_testdata[228] */ + { 229, 0x0000000000000000ULL, { 0xB1A136B696AC30E9ULL, 0xDB58B22B375ACCD2ULL } }, /* XSUM_XXH128_withSecret_testdata[229] */ + { 230, 0x0000000000000000ULL, { 0xA599E6E7C1770D95ULL, 0x28DB0D054CCDFDE2ULL } }, /* XSUM_XXH128_withSecret_testdata[230] */ + { 231, 0x0000000000000000ULL, { 0xFD2598544F8BC68EULL, 0x2CCC1B9FC0ABB0ACULL } }, /* XSUM_XXH128_withSecret_testdata[231] */ + { 232, 0x0000000000000000ULL, { 0xD110F1F9B0D554AAULL, 0x90676C77D94B1701ULL } }, /* XSUM_XXH128_withSecret_testdata[232] */ + { 233, 0x0000000000000000ULL, { 0xE663979254786251ULL, 0x8A82723AA205D34DULL } }, /* XSUM_XXH128_withSecret_testdata[233] */ + { 234, 0x0000000000000000ULL, { 0x0CA9892DF96D93C8ULL, 0xAB7553583832FEB3ULL } }, /* XSUM_XXH128_withSecret_testdata[234] */ + { 235, 0x0000000000000000ULL, { 0x4F0E1FF9F41DA4B9ULL, 0x69828153D032538CULL } }, /* XSUM_XXH128_withSecret_testdata[235] */ + { 236, 0x0000000000000000ULL, { 0xE32AE240608EBDD8ULL, 0xFD2708F531968BFCULL } }, /* XSUM_XXH128_withSecret_testdata[236] */ + { 237, 0x0000000000000000ULL, { 0xCC7C5E20C58EF26CULL, 0x19D969D1BDAE72BEULL } }, /* XSUM_XXH128_withSecret_testdata[237] */ + { 238, 0x0000000000000000ULL, { 0x690962986163E1D1ULL, 0xB25FD32293E03EDFULL } }, /* XSUM_XXH128_withSecret_testdata[238] */ + { 239, 0x0000000000000000ULL, { 0x24F6932C00EFBF5FULL, 0xC73C1D7278FA152FULL } }, /* XSUM_XXH128_withSecret_testdata[239] */ + { 240, 0x0000000000000000ULL, { 0x29DD17317E40CBA2ULL, 0x8033FD83D4336CA9ULL } }, /* XSUM_XXH128_withSecret_testdata[240] */ + { 241, 0x0000000000000000ULL, { 0x454805371DF98A91ULL, 0x0ECDE988107F17F2ULL } }, /* XSUM_XXH128_withSecret_testdata[241] */ + { 242, 0x0000000000000000ULL, { 0x7A1D6CC9B38309B6ULL, 0x6E4904B9098FEF30ULL } }, /* XSUM_XXH128_withSecret_testdata[242] */ + { 243, 0x0000000000000000ULL, { 0xA21530DBA67105A2ULL, 0x0884F43B4B97B1B6ULL } }, /* XSUM_XXH128_withSecret_testdata[243] */ + { 244, 0x0000000000000000ULL, { 0x338A6D6127CF7AA5ULL, 0xDF9C9D8C4687C59EULL } }, /* XSUM_XXH128_withSecret_testdata[244] */ + { 245, 0x0000000000000000ULL, { 0xD39B23A3496DE71FULL, 0x3517DE4818EAB436ULL } }, /* XSUM_XXH128_withSecret_testdata[245] */ + { 246, 0x0000000000000000ULL, { 0xC9D906953A05E2A0ULL, 0x0D33E3FCF7D69BC4ULL } }, /* XSUM_XXH128_withSecret_testdata[246] */ + { 247, 0x0000000000000000ULL, { 0xE6C99047FB256B39ULL, 0xCCCFB2852699A406ULL } }, /* XSUM_XXH128_withSecret_testdata[247] */ + { 248, 0x0000000000000000ULL, { 0xF07CCBDD8B5F77B8ULL, 0x76EDE095D0D879B2ULL } }, /* XSUM_XXH128_withSecret_testdata[248] */ + { 249, 0x0000000000000000ULL, { 0xF645DD08AF66414BULL, 0xC23995007FCC4209ULL } }, /* XSUM_XXH128_withSecret_testdata[249] */ + { 250, 0x0000000000000000ULL, { 0x9A4C8798F876F82BULL, 0x6B472D097B55A77BULL } }, /* XSUM_XXH128_withSecret_testdata[250] */ + { 251, 0x0000000000000000ULL, { 0x649BC177D2142082ULL, 0xD5625A518E4ADFD9ULL } }, /* XSUM_XXH128_withSecret_testdata[251] */ + { 252, 0x0000000000000000ULL, { 0x1A271919C8C3E8B5ULL, 0xFEE13F4E943EEBD3ULL } }, /* XSUM_XXH128_withSecret_testdata[252] */ + { 253, 0x0000000000000000ULL, { 0x92B0F8103137B547ULL, 0x0F316A17433B8B49ULL } }, /* XSUM_XXH128_withSecret_testdata[253] */ + { 254, 0x0000000000000000ULL, { 0xF6516FADBA34B6A8ULL, 0x06292FDD06C0B273ULL } }, /* XSUM_XXH128_withSecret_testdata[254] */ + { 255, 0x0000000000000000ULL, { 0xE1E3461712968B3EULL, 0xF44F7290A7123665ULL } }, /* XSUM_XXH128_withSecret_testdata[255] */ + { 256, 0x0000000000000000ULL, { 0xD4CBA59E2E2CF9F0ULL, 0xDC8CD5DC03C0DA95ULL } }, /* XSUM_XXH128_withSecret_testdata[256] */ + { 257, 0x0000000000000000ULL, { 0x1E4B71E703D08492ULL, 0x15FDA9442E840F61ULL } }, /* XSUM_XXH128_withSecret_testdata[257] */ + { 258, 0x0000000000000000ULL, { 0x4644E9534017CF3CULL, 0xE57019D0DE141BCCULL } }, /* XSUM_XXH128_withSecret_testdata[258] */ + { 259, 0x0000000000000000ULL, { 0xC5211B50A170EF65ULL, 0xE02AE60D5D37E5A5ULL } }, /* XSUM_XXH128_withSecret_testdata[259] */ + { 260, 0x0000000000000000ULL, { 0x8D89E78FAB4C8B4DULL, 0x3C01422963C13DA9ULL } }, /* XSUM_XXH128_withSecret_testdata[260] */ + { 261, 0x0000000000000000ULL, { 0x5445BC41965D9CB8ULL, 0xF160C7E37B1B07E9ULL } }, /* XSUM_XXH128_withSecret_testdata[261] */ + { 262, 0x0000000000000000ULL, { 0x1E18538BFD02BC10ULL, 0xCA31C8B27F5D4B50ULL } }, /* XSUM_XXH128_withSecret_testdata[262] */ + { 263, 0x0000000000000000ULL, { 0x10BB0E32115E3989ULL, 0xD23C78F5C5164C67ULL } }, /* XSUM_XXH128_withSecret_testdata[263] */ + { 264, 0x0000000000000000ULL, { 0xE481E99CB17FCFA7ULL, 0x3713C46784EF5B6DULL } }, /* XSUM_XXH128_withSecret_testdata[264] */ + { 265, 0x0000000000000000ULL, { 0x5719499F498B55F1ULL, 0x2C8EAFEA14409139ULL } }, /* XSUM_XXH128_withSecret_testdata[265] */ + { 266, 0x0000000000000000ULL, { 0xF05D5811FC05A53BULL, 0x18FC0917BBDA4D59ULL } }, /* XSUM_XXH128_withSecret_testdata[266] */ + { 267, 0x0000000000000000ULL, { 0x692ED07D9D863E3BULL, 0x2DB2B573A0B7F9DBULL } }, /* XSUM_XXH128_withSecret_testdata[267] */ + { 268, 0x0000000000000000ULL, { 0x8632AD27595A52E9ULL, 0xF654A0636825693DULL } }, /* XSUM_XXH128_withSecret_testdata[268] */ + { 269, 0x0000000000000000ULL, { 0x2668F196EF76E609ULL, 0xF4410DA3435EECABULL } }, /* XSUM_XXH128_withSecret_testdata[269] */ + { 270, 0x0000000000000000ULL, { 0x3FC93757FBF494ECULL, 0x7B5D7CB30D93717EULL } }, /* XSUM_XXH128_withSecret_testdata[270] */ + { 271, 0x0000000000000000ULL, { 0x47FB222445B9AAF9ULL, 0xF1B86A17078F3561ULL } }, /* XSUM_XXH128_withSecret_testdata[271] */ + { 272, 0x0000000000000000ULL, { 0xD9376B102E3630D9ULL, 0xC546EBE3EE0F28DDULL } }, /* XSUM_XXH128_withSecret_testdata[272] */ + { 273, 0x0000000000000000ULL, { 0x65895492C94B9DE3ULL, 0x24211E92D6FAAEB0ULL } }, /* XSUM_XXH128_withSecret_testdata[273] */ + { 274, 0x0000000000000000ULL, { 0xE9E82F040E18DC8FULL, 0xFB7227EE59E7F77FULL } }, /* XSUM_XXH128_withSecret_testdata[274] */ + { 275, 0x0000000000000000ULL, { 0x32D3679B0E9C6074ULL, 0x87FAC48029908332ULL } }, /* XSUM_XXH128_withSecret_testdata[275] */ + { 276, 0x0000000000000000ULL, { 0xF9F0E5709E4412C2ULL, 0x2FE5BCC65DE7B566ULL } }, /* XSUM_XXH128_withSecret_testdata[276] */ + { 277, 0x0000000000000000ULL, { 0x3C62BC830C37A47BULL, 0x3B08B0459EF7E263ULL } }, /* XSUM_XXH128_withSecret_testdata[277] */ + { 278, 0x0000000000000000ULL, { 0x1C46017F954A8887ULL, 0x731C78467880A017ULL } }, /* XSUM_XXH128_withSecret_testdata[278] */ + { 279, 0x0000000000000000ULL, { 0x2821691C07FC0BF5ULL, 0x5FA0D4FE00D8383AULL } }, /* XSUM_XXH128_withSecret_testdata[279] */ + { 280, 0x0000000000000000ULL, { 0x13746F0595225BF8ULL, 0xD4A23B746BD52EEBULL } }, /* XSUM_XXH128_withSecret_testdata[280] */ + { 281, 0x0000000000000000ULL, { 0xDBED1F02AFE46AB6ULL, 0xF099ED4FBEF95963ULL } }, /* XSUM_XXH128_withSecret_testdata[281] */ + { 282, 0x0000000000000000ULL, { 0x8BEC42DB9CA3856AULL, 0xA3026F52A8DAD20FULL } }, /* XSUM_XXH128_withSecret_testdata[282] */ + { 283, 0x0000000000000000ULL, { 0x7FC7D29CD3DC1077ULL, 0xE449CACB55800A05ULL } }, /* XSUM_XXH128_withSecret_testdata[283] */ + { 284, 0x0000000000000000ULL, { 0x33F520321A07B375ULL, 0x99F36042C73F4B5DULL } }, /* XSUM_XXH128_withSecret_testdata[284] */ + { 285, 0x0000000000000000ULL, { 0x687B7AE99E7CB3BEULL, 0xC52481AB2E02E6B3ULL } }, /* XSUM_XXH128_withSecret_testdata[285] */ + { 286, 0x0000000000000000ULL, { 0x0F91BD5C4572144CULL, 0x3A647A6697EE6CB7ULL } }, /* XSUM_XXH128_withSecret_testdata[286] */ + { 287, 0x0000000000000000ULL, { 0x4EB562DCC46F44E3ULL, 0xCAA256FC0872A7A0ULL } }, /* XSUM_XXH128_withSecret_testdata[287] */ + { 288, 0x0000000000000000ULL, { 0x0D392C2BA4C1974CULL, 0x145B9B9C5968565AULL } }, /* XSUM_XXH128_withSecret_testdata[288] */ + { 289, 0x0000000000000000ULL, { 0x23F0342FB15D6F76ULL, 0x61345F530EAF24ABULL } }, /* XSUM_XXH128_withSecret_testdata[289] */ + { 290, 0x0000000000000000ULL, { 0x5F123B83B84089BFULL, 0x4CFE3CC79C686D9EULL } }, /* XSUM_XXH128_withSecret_testdata[290] */ + { 291, 0x0000000000000000ULL, { 0x889F2101629E55ADULL, 0xA1177A239F9CAD1CULL } }, /* XSUM_XXH128_withSecret_testdata[291] */ + { 292, 0x0000000000000000ULL, { 0x2BCFEC3E258BFEEFULL, 0x0ECF34687AC35E5BULL } }, /* XSUM_XXH128_withSecret_testdata[292] */ + { 293, 0x0000000000000000ULL, { 0x85CF2A67380C6897ULL, 0x78121FC8093A3001ULL } }, /* XSUM_XXH128_withSecret_testdata[293] */ + { 294, 0x0000000000000000ULL, { 0x237B4672769369B7ULL, 0x2E53D01957988D0DULL } }, /* XSUM_XXH128_withSecret_testdata[294] */ + { 295, 0x0000000000000000ULL, { 0x49BECA529E0108F8ULL, 0x531921B3CF59C024ULL } }, /* XSUM_XXH128_withSecret_testdata[295] */ + { 296, 0x0000000000000000ULL, { 0xEE6FE33A46F9B8ABULL, 0x22E53BB6D321BC8CULL } }, /* XSUM_XXH128_withSecret_testdata[296] */ + { 297, 0x0000000000000000ULL, { 0xAB5AD272C269CB84ULL, 0xA6B400F49E990277ULL } }, /* XSUM_XXH128_withSecret_testdata[297] */ + { 298, 0x0000000000000000ULL, { 0x647D5B4FA1E77077ULL, 0x0F1090EB6570BF44ULL } }, /* XSUM_XXH128_withSecret_testdata[298] */ + { 299, 0x0000000000000000ULL, { 0x08F146C57890970DULL, 0xFE673A3D2E957B5FULL } }, /* XSUM_XXH128_withSecret_testdata[299] */ + { 300, 0x0000000000000000ULL, { 0xAD4EEFE44DA3771CULL, 0xBE8F26BCC8394F48ULL } }, /* XSUM_XXH128_withSecret_testdata[300] */ + { 301, 0x0000000000000000ULL, { 0x00795F9213CC7BEBULL, 0xE68CCAA26AC452F8ULL } }, /* XSUM_XXH128_withSecret_testdata[301] */ + { 302, 0x0000000000000000ULL, { 0xF712D99AB912CE71ULL, 0xF6C3F89589658611ULL } }, /* XSUM_XXH128_withSecret_testdata[302] */ + { 303, 0x0000000000000000ULL, { 0x4964AB4691B49154ULL, 0xEAB292E4CCBE59DCULL } }, /* XSUM_XXH128_withSecret_testdata[303] */ + { 304, 0x0000000000000000ULL, { 0x1608E2A44BD97C89ULL, 0x716510A50E63A848ULL } }, /* XSUM_XXH128_withSecret_testdata[304] */ + { 305, 0x0000000000000000ULL, { 0x6472A585CF6668DFULL, 0xCB4F943B9983706CULL } }, /* XSUM_XXH128_withSecret_testdata[305] */ + { 306, 0x0000000000000000ULL, { 0xD2BEAD64AB7F10A4ULL, 0xD9E730357122CF8BULL } }, /* XSUM_XXH128_withSecret_testdata[306] */ + { 307, 0x0000000000000000ULL, { 0xF11A50ECA38C3575ULL, 0x89B11C4F30127B53ULL } }, /* XSUM_XXH128_withSecret_testdata[307] */ + { 308, 0x0000000000000000ULL, { 0x722A4F986419071AULL, 0xCB2A7F12BABE6FE0ULL } }, /* XSUM_XXH128_withSecret_testdata[308] */ + { 309, 0x0000000000000000ULL, { 0xC770E666D63849F9ULL, 0xDDC6AFF54DB68DB1ULL } }, /* XSUM_XXH128_withSecret_testdata[309] */ + { 310, 0x0000000000000000ULL, { 0xA626F5639A03A9B1ULL, 0x234B2491EF5BD244ULL } }, /* XSUM_XXH128_withSecret_testdata[310] */ + { 311, 0x0000000000000000ULL, { 0xD9CEE82AA29AED92ULL, 0x772DB2BEC5490B26ULL } }, /* XSUM_XXH128_withSecret_testdata[311] */ + { 312, 0x0000000000000000ULL, { 0x96E7904694872669ULL, 0xE1A30A7DFEA0F1BAULL } }, /* XSUM_XXH128_withSecret_testdata[312] */ + { 313, 0x0000000000000000ULL, { 0xA14D3B0A5285F4ADULL, 0x2C969BAD4F4BCBAAULL } }, /* XSUM_XXH128_withSecret_testdata[313] */ + { 314, 0x0000000000000000ULL, { 0xF5B6891890914AFFULL, 0x421E146C251DCC38ULL } }, /* XSUM_XXH128_withSecret_testdata[314] */ + { 315, 0x0000000000000000ULL, { 0x999AB9F81AE460A9ULL, 0xA0E60A06FFCADEE2ULL } }, /* XSUM_XXH128_withSecret_testdata[315] */ + { 316, 0x0000000000000000ULL, { 0x2636CB73B8310C34ULL, 0x8334F1F644418D73ULL } }, /* XSUM_XXH128_withSecret_testdata[316] */ + { 317, 0x0000000000000000ULL, { 0x3F6B687ADE1EAEA8ULL, 0x3D3A59F4994C5AEBULL } }, /* XSUM_XXH128_withSecret_testdata[317] */ + { 318, 0x0000000000000000ULL, { 0x0B93FE00D04DF81EULL, 0x5764E8B2FF9BB057ULL } }, /* XSUM_XXH128_withSecret_testdata[318] */ + { 319, 0x0000000000000000ULL, { 0xDDA2B628C4879108ULL, 0x2016AAD442CDBE79ULL } }, /* XSUM_XXH128_withSecret_testdata[319] */ + { 320, 0x0000000000000000ULL, { 0x194C2D1C4A993F3CULL, 0xB45D31739E534AFCULL } }, /* XSUM_XXH128_withSecret_testdata[320] */ + { 321, 0x0000000000000000ULL, { 0xFD6049BC3D821B0BULL, 0xE217BF541F1CD2AFULL } }, /* XSUM_XXH128_withSecret_testdata[321] */ + { 322, 0x0000000000000000ULL, { 0xAC4A5D33460A0D8FULL, 0x199C4642D1EB98EDULL } }, /* XSUM_XXH128_withSecret_testdata[322] */ + { 323, 0x0000000000000000ULL, { 0x52E8F6AEAF1B5E2EULL, 0xCC39CABB18BA4C6CULL } }, /* XSUM_XXH128_withSecret_testdata[323] */ + { 324, 0x0000000000000000ULL, { 0x0FC71062B04343A3ULL, 0xF96AE611CC83C97FULL } }, /* XSUM_XXH128_withSecret_testdata[324] */ + { 325, 0x0000000000000000ULL, { 0xA7FF1D6E81A588E4ULL, 0x34534AA9F891F59CULL } }, /* XSUM_XXH128_withSecret_testdata[325] */ + { 326, 0x0000000000000000ULL, { 0xA77100819A31451CULL, 0xA87C246BF5D057A0ULL } }, /* XSUM_XXH128_withSecret_testdata[326] */ + { 327, 0x0000000000000000ULL, { 0x3900B897CC037C54ULL, 0xE8E42BED96DAE031ULL } }, /* XSUM_XXH128_withSecret_testdata[327] */ + { 328, 0x0000000000000000ULL, { 0x2CCC45D68CFCBE8DULL, 0xA4657C4DFE57C74DULL } }, /* XSUM_XXH128_withSecret_testdata[328] */ + { 329, 0x0000000000000000ULL, { 0xC5D310D557FEF6C8ULL, 0x4D3254BB67025951ULL } }, /* XSUM_XXH128_withSecret_testdata[329] */ + { 330, 0x0000000000000000ULL, { 0xED4CF75B85C7C208ULL, 0x6DE8BEAA946F8CEFULL } }, /* XSUM_XXH128_withSecret_testdata[330] */ + { 331, 0x0000000000000000ULL, { 0x06C32247652F6E66ULL, 0x49B244719BAE658DULL } }, /* XSUM_XXH128_withSecret_testdata[331] */ + { 332, 0x0000000000000000ULL, { 0x0C5AAFD89A34F935ULL, 0x5CB088CB198853BBULL } }, /* XSUM_XXH128_withSecret_testdata[332] */ + { 333, 0x0000000000000000ULL, { 0x5793D857574D7657ULL, 0x3AFACC0A6DB668F8ULL } }, /* XSUM_XXH128_withSecret_testdata[333] */ + { 334, 0x0000000000000000ULL, { 0x6E7E849FBD00AA49ULL, 0xBA3A0ED019C62E5AULL } }, /* XSUM_XXH128_withSecret_testdata[334] */ + { 335, 0x0000000000000000ULL, { 0xBCDB86FB248DDF09ULL, 0x98830E6EC1DEDEECULL } }, /* XSUM_XXH128_withSecret_testdata[335] */ + { 336, 0x0000000000000000ULL, { 0xC482729B771A98D6ULL, 0x29757E9E041D9D20ULL } }, /* XSUM_XXH128_withSecret_testdata[336] */ + { 337, 0x0000000000000000ULL, { 0x76A7E94E68306FD7ULL, 0x72A2AB89F84D1D3AULL } }, /* XSUM_XXH128_withSecret_testdata[337] */ + { 338, 0x0000000000000000ULL, { 0x99345B97606E0954ULL, 0x350EF4B1CB27AA90ULL } }, /* XSUM_XXH128_withSecret_testdata[338] */ + { 339, 0x0000000000000000ULL, { 0xEF8E23FD4925C9B5ULL, 0xA26D4FF25BFD6F20ULL } }, /* XSUM_XXH128_withSecret_testdata[339] */ + { 340, 0x0000000000000000ULL, { 0x9C06E9F9E8F95A1BULL, 0xDCCE30F2771D58CDULL } }, /* XSUM_XXH128_withSecret_testdata[340] */ + { 341, 0x0000000000000000ULL, { 0x7440FC10FFC82E30ULL, 0x3E322EC65DCA2065ULL } }, /* XSUM_XXH128_withSecret_testdata[341] */ + { 342, 0x0000000000000000ULL, { 0xA9F13DA859FE0DD5ULL, 0x36F37EDD89A2556EULL } }, /* XSUM_XXH128_withSecret_testdata[342] */ + { 343, 0x0000000000000000ULL, { 0x8008021E109891BBULL, 0x7A00D63CAD65CAC2ULL } }, /* XSUM_XXH128_withSecret_testdata[343] */ + { 344, 0x0000000000000000ULL, { 0x27A32662397B2B8EULL, 0x5031CCAC003939DFULL } }, /* XSUM_XXH128_withSecret_testdata[344] */ + { 345, 0x0000000000000000ULL, { 0x42416962BB6568B0ULL, 0x4919B1C32608998CULL } }, /* XSUM_XXH128_withSecret_testdata[345] */ + { 346, 0x0000000000000000ULL, { 0x0F9E193156B85403ULL, 0xC3A988892DAD49BAULL } }, /* XSUM_XXH128_withSecret_testdata[346] */ + { 347, 0x0000000000000000ULL, { 0xACAEFA2E644AE0CCULL, 0x41C011D09E2042FAULL } }, /* XSUM_XXH128_withSecret_testdata[347] */ + { 348, 0x0000000000000000ULL, { 0xB903628701269F0FULL, 0xC8366E3F2EBD72ECULL } }, /* XSUM_XXH128_withSecret_testdata[348] */ + { 349, 0x0000000000000000ULL, { 0x21F9F87CED7F59ECULL, 0x15A91E869AAD1790ULL } }, /* XSUM_XXH128_withSecret_testdata[349] */ + { 350, 0x0000000000000000ULL, { 0x510C00D6E6CA0292ULL, 0xA1092C3588889F0EULL } }, /* XSUM_XXH128_withSecret_testdata[350] */ + { 351, 0x0000000000000000ULL, { 0x067C68EA7336F2BBULL, 0x107C695BE16A5EF0ULL } }, /* XSUM_XXH128_withSecret_testdata[351] */ + { 352, 0x0000000000000000ULL, { 0x2FA1AA59DD588D9EULL, 0x896F856A0C89FE2CULL } }, /* XSUM_XXH128_withSecret_testdata[352] */ + { 353, 0x0000000000000000ULL, { 0x6427D4F16BB0B275ULL, 0x60349531FEF86FB1ULL } }, /* XSUM_XXH128_withSecret_testdata[353] */ + { 354, 0x0000000000000000ULL, { 0x945B95851BBF0CEBULL, 0x3B73FE4F958C578FULL } }, /* XSUM_XXH128_withSecret_testdata[354] */ + { 355, 0x0000000000000000ULL, { 0x4097F41CB9A6C7C0ULL, 0x8F9CB84B5E70B661ULL } }, /* XSUM_XXH128_withSecret_testdata[355] */ + { 356, 0x0000000000000000ULL, { 0x2B3DB75847E4D9A5ULL, 0x1586E65E74022840ULL } }, /* XSUM_XXH128_withSecret_testdata[356] */ + { 357, 0x0000000000000000ULL, { 0xC03244E03567B277ULL, 0x85B4508683198D82ULL } }, /* XSUM_XXH128_withSecret_testdata[357] */ + { 358, 0x0000000000000000ULL, { 0xEE4D73BC4AAFC328ULL, 0x4D46BD0823C6BD26ULL } }, /* XSUM_XXH128_withSecret_testdata[358] */ + { 359, 0x0000000000000000ULL, { 0x0A321BE91994A2B5ULL, 0xEFBB6581CA85AB90ULL } }, /* XSUM_XXH128_withSecret_testdata[359] */ + { 360, 0x0000000000000000ULL, { 0xA34661ED84F91D96ULL, 0x6E06891E2BE2D48DULL } }, /* XSUM_XXH128_withSecret_testdata[360] */ + { 361, 0x0000000000000000ULL, { 0x2A79F41AC7E29D95ULL, 0x8320C929F14B65C9ULL } }, /* XSUM_XXH128_withSecret_testdata[361] */ + { 362, 0x0000000000000000ULL, { 0xB37D84C527A15E6CULL, 0xEBB2B69E5A92DA25ULL } }, /* XSUM_XXH128_withSecret_testdata[362] */ + { 363, 0x0000000000000000ULL, { 0x1E7C1743806AD536ULL, 0x6B68FFAA5A865C3CULL } }, /* XSUM_XXH128_withSecret_testdata[363] */ + { 364, 0x0000000000000000ULL, { 0x7AF7CE01C75EE6FFULL, 0x485B5D0D0853AF2BULL } }, /* XSUM_XXH128_withSecret_testdata[364] */ + { 365, 0x0000000000000000ULL, { 0xCFEB51C858A5622EULL, 0x206CE4A05C4CA64CULL } }, /* XSUM_XXH128_withSecret_testdata[365] */ + { 366, 0x0000000000000000ULL, { 0xF58BBCA1C9747069ULL, 0xF8E3A08627B86040ULL } }, /* XSUM_XXH128_withSecret_testdata[366] */ + { 367, 0x0000000000000000ULL, { 0x1BA132260A257D3FULL, 0x73A563A19C7B3826ULL } }, /* XSUM_XXH128_withSecret_testdata[367] */ + { 368, 0x0000000000000000ULL, { 0x9219084B7F90DE95ULL, 0xAB25C65276EE6721ULL } }, /* XSUM_XXH128_withSecret_testdata[368] */ + { 369, 0x0000000000000000ULL, { 0xAA306A3323A36F10ULL, 0x99F19307D7BA9F66ULL } }, /* XSUM_XXH128_withSecret_testdata[369] */ + { 370, 0x0000000000000000ULL, { 0x5E1E41A3EE73C4CAULL, 0x38DEDDB2115A4263ULL } }, /* XSUM_XXH128_withSecret_testdata[370] */ + { 371, 0x0000000000000000ULL, { 0xC34FDC36198F74EDULL, 0xC048AE7182EE8086ULL } }, /* XSUM_XXH128_withSecret_testdata[371] */ + { 372, 0x0000000000000000ULL, { 0x3DA69079085A04E9ULL, 0xE3815EC8451E4F43ULL } }, /* XSUM_XXH128_withSecret_testdata[372] */ + { 373, 0x0000000000000000ULL, { 0xA94B7213A0252AB3ULL, 0x5373D866840A4EDFULL } }, /* XSUM_XXH128_withSecret_testdata[373] */ + { 374, 0x0000000000000000ULL, { 0xB8A38E5866DAA69AULL, 0xC71A655496313985ULL } }, /* XSUM_XXH128_withSecret_testdata[374] */ + { 375, 0x0000000000000000ULL, { 0xD815C3B6A81D988AULL, 0x26EA9E0E0C0DB13AULL } }, /* XSUM_XXH128_withSecret_testdata[375] */ + { 376, 0x0000000000000000ULL, { 0x48021E8BEF7C0F91ULL, 0x3DBDAFF272095E20ULL } }, /* XSUM_XXH128_withSecret_testdata[376] */ + { 377, 0x0000000000000000ULL, { 0x2403D3B5EF2187C1ULL, 0x51A3B26094D996AEULL } }, /* XSUM_XXH128_withSecret_testdata[377] */ + { 378, 0x0000000000000000ULL, { 0xB599C0DBFA7B38ABULL, 0x03B9755D3B7D15FEULL } }, /* XSUM_XXH128_withSecret_testdata[378] */ + { 379, 0x0000000000000000ULL, { 0x3F1C230AE6A51A09ULL, 0x8DCFCEED8CD2EAB1ULL } }, /* XSUM_XXH128_withSecret_testdata[379] */ + { 380, 0x0000000000000000ULL, { 0x1D947ED6C9B124BAULL, 0xD99A6081ED238662ULL } }, /* XSUM_XXH128_withSecret_testdata[380] */ + { 381, 0x0000000000000000ULL, { 0x8AE2F1EDDC6FA197ULL, 0x73BB67250C370F9BULL } }, /* XSUM_XXH128_withSecret_testdata[381] */ + { 382, 0x0000000000000000ULL, { 0x5686BC7B2C3699F0ULL, 0x4E5F7C373DE895EDULL } }, /* XSUM_XXH128_withSecret_testdata[382] */ + { 383, 0x0000000000000000ULL, { 0x5B081C559D5A2691ULL, 0xDB04662DC65DE5FBULL } }, /* XSUM_XXH128_withSecret_testdata[383] */ + { 384, 0x0000000000000000ULL, { 0x3E4ACFE089AAAC49ULL, 0x1B4CD7BA5DA832CCULL } }, /* XSUM_XXH128_withSecret_testdata[384] */ + { 385, 0x0000000000000000ULL, { 0x68E16289A463A85CULL, 0xD964A8880DA403E6ULL } }, /* XSUM_XXH128_withSecret_testdata[385] */ + { 386, 0x0000000000000000ULL, { 0x8361384F1C833DBBULL, 0x0523B60FA2951D89ULL } }, /* XSUM_XXH128_withSecret_testdata[386] */ + { 387, 0x0000000000000000ULL, { 0x619589E8B878E5B1ULL, 0x83B7224A81C7093DULL } }, /* XSUM_XXH128_withSecret_testdata[387] */ + { 388, 0x0000000000000000ULL, { 0xAA1FD2CDF886DB48ULL, 0xC81E922665810322ULL } }, /* XSUM_XXH128_withSecret_testdata[388] */ + { 389, 0x0000000000000000ULL, { 0x4A691FB625C012D6ULL, 0xA82B359DFEA526FEULL } }, /* XSUM_XXH128_withSecret_testdata[389] */ + { 390, 0x0000000000000000ULL, { 0x4DF5BEE29D39A198ULL, 0x8E5C8371940D2216ULL } }, /* XSUM_XXH128_withSecret_testdata[390] */ + { 391, 0x0000000000000000ULL, { 0x8A1852777D68C286ULL, 0x8C06E033BA3B279AULL } }, /* XSUM_XXH128_withSecret_testdata[391] */ + { 392, 0x0000000000000000ULL, { 0x9E87BE43FBCBC9EBULL, 0x9C40B9942D8DF0B0ULL } }, /* XSUM_XXH128_withSecret_testdata[392] */ + { 393, 0x0000000000000000ULL, { 0x6CA925A00CC82F84ULL, 0x4373EC0BEC204B4FULL } }, /* XSUM_XXH128_withSecret_testdata[393] */ + { 394, 0x0000000000000000ULL, { 0xEDA2EA217928B5F5ULL, 0x8A68BEE9BBD0118FULL } }, /* XSUM_XXH128_withSecret_testdata[394] */ + { 395, 0x0000000000000000ULL, { 0x36015D830AFA1151ULL, 0xC0F0F70BC6704DE2ULL } }, /* XSUM_XXH128_withSecret_testdata[395] */ + { 396, 0x0000000000000000ULL, { 0x2F6F98A51CB51691ULL, 0xE8C878E878E9E62FULL } }, /* XSUM_XXH128_withSecret_testdata[396] */ + { 397, 0x0000000000000000ULL, { 0xBBF2DC743F67DE36ULL, 0x2C3FABDBB51F436CULL } }, /* XSUM_XXH128_withSecret_testdata[397] */ + { 398, 0x0000000000000000ULL, { 0x9742E652697AA2CFULL, 0x1E56C54F15E7EB73ULL } }, /* XSUM_XXH128_withSecret_testdata[398] */ + { 399, 0x0000000000000000ULL, { 0x4EB106A1AA40FA23ULL, 0x75DC19749F4C69A8ULL } }, /* XSUM_XXH128_withSecret_testdata[399] */ + { 400, 0x0000000000000000ULL, { 0xAEA4953E8ADE0709ULL, 0x1C1AFC1DECE68B41ULL } }, /* XSUM_XXH128_withSecret_testdata[400] */ + { 401, 0x0000000000000000ULL, { 0x0112CF533D114963ULL, 0x990DFF5052F6DA8CULL } }, /* XSUM_XXH128_withSecret_testdata[401] */ + { 402, 0x0000000000000000ULL, { 0xF22A46521BB555DBULL, 0xF9EDF1EEA2C83086ULL } }, /* XSUM_XXH128_withSecret_testdata[402] */ + { 403, 0x0000000000000000ULL, { 0x14546019124D43B8ULL, 0xE14EEDF084A487F3ULL } }, /* XSUM_XXH128_withSecret_testdata[403] */ + { 404, 0x0000000000000000ULL, { 0xD7C6DB1687C9CCE4ULL, 0xAFA5D0B2B47F7676ULL } }, /* XSUM_XXH128_withSecret_testdata[404] */ + { 405, 0x0000000000000000ULL, { 0xD9D0709DDDF7D8FDULL, 0x0C53914E283B0592ULL } }, /* XSUM_XXH128_withSecret_testdata[405] */ + { 406, 0x0000000000000000ULL, { 0xFCCA387E865C2566ULL, 0xFBA44C10A33DCBF5ULL } }, /* XSUM_XXH128_withSecret_testdata[406] */ + { 407, 0x0000000000000000ULL, { 0x64AF408F11B9217DULL, 0x477B00E6C455400DULL } }, /* XSUM_XXH128_withSecret_testdata[407] */ + { 408, 0x0000000000000000ULL, { 0xB9E9F14A1D9E0397ULL, 0x8C6AA8E39AD17331ULL } }, /* XSUM_XXH128_withSecret_testdata[408] */ + { 409, 0x0000000000000000ULL, { 0x99AFB4E6A523221BULL, 0x1B87E898CD2FE3D1ULL } }, /* XSUM_XXH128_withSecret_testdata[409] */ + { 410, 0x0000000000000000ULL, { 0x5254EDB9EB3DBB94ULL, 0x82EBBE3848FD3327ULL } }, /* XSUM_XXH128_withSecret_testdata[410] */ + { 411, 0x0000000000000000ULL, { 0xB6B23CD56A79121CULL, 0xE8ACF86FFA526094ULL } }, /* XSUM_XXH128_withSecret_testdata[411] */ + { 412, 0x0000000000000000ULL, { 0x1BFB20FD55E49164ULL, 0x9A33917D8976424EULL } }, /* XSUM_XXH128_withSecret_testdata[412] */ + { 413, 0x0000000000000000ULL, { 0xF4CBBBA8889F9520ULL, 0xBC804B53597616B4ULL } }, /* XSUM_XXH128_withSecret_testdata[413] */ + { 414, 0x0000000000000000ULL, { 0x1C4CBC873CCF23B7ULL, 0x3D67E61338C42494ULL } }, /* XSUM_XXH128_withSecret_testdata[414] */ + { 415, 0x0000000000000000ULL, { 0xCBACAAE57B2FFCB4ULL, 0xAB8D4E5CDB42CEFCULL } }, /* XSUM_XXH128_withSecret_testdata[415] */ + { 416, 0x0000000000000000ULL, { 0xFEB5537A0E295659ULL, 0x6E623CA1EF369211ULL } }, /* XSUM_XXH128_withSecret_testdata[416] */ + { 417, 0x0000000000000000ULL, { 0x0047ADBB08006B06ULL, 0x7D736CDE1F87140EULL } }, /* XSUM_XXH128_withSecret_testdata[417] */ + { 418, 0x0000000000000000ULL, { 0xC610CC3AF8C4C9ECULL, 0x87A11AD79ED3AD34ULL } }, /* XSUM_XXH128_withSecret_testdata[418] */ + { 419, 0x0000000000000000ULL, { 0x3F7975EF1A922ED9ULL, 0xF5F2774B46587872ULL } }, /* XSUM_XXH128_withSecret_testdata[419] */ + { 420, 0x0000000000000000ULL, { 0x21207F5F4B43C72EULL, 0x099D14AE35CD8064ULL } }, /* XSUM_XXH128_withSecret_testdata[420] */ + { 421, 0x0000000000000000ULL, { 0x2EDE601DC0BC9006ULL, 0x8781D872186B4F70ULL } }, /* XSUM_XXH128_withSecret_testdata[421] */ + { 422, 0x0000000000000000ULL, { 0x0F4C0CF035A33F14ULL, 0x20488FC7EAC5827AULL } }, /* XSUM_XXH128_withSecret_testdata[422] */ + { 423, 0x0000000000000000ULL, { 0x4131CBFEF56B3263ULL, 0x036E241F4CB3CD2FULL } }, /* XSUM_XXH128_withSecret_testdata[423] */ + { 424, 0x0000000000000000ULL, { 0xD2863D9CAE01FE62ULL, 0x8C37F962AE5A6495ULL } }, /* XSUM_XXH128_withSecret_testdata[424] */ + { 425, 0x0000000000000000ULL, { 0xA6BB4DF2FC91FD60ULL, 0x89DC73F79AF207BEULL } }, /* XSUM_XXH128_withSecret_testdata[425] */ + { 426, 0x0000000000000000ULL, { 0x978D1CCF305BAE7DULL, 0x657A9DA9666B5F66ULL } }, /* XSUM_XXH128_withSecret_testdata[426] */ + { 427, 0x0000000000000000ULL, { 0xA9FB094491E5FFBEULL, 0x37C9D06BF5670EFCULL } }, /* XSUM_XXH128_withSecret_testdata[427] */ + { 428, 0x0000000000000000ULL, { 0x0EBE48BE365952CBULL, 0xC51ED8196BC0BF7CULL } }, /* XSUM_XXH128_withSecret_testdata[428] */ + { 429, 0x0000000000000000ULL, { 0x25237F7BE323FF7FULL, 0x9533824DBBE47D00ULL } }, /* XSUM_XXH128_withSecret_testdata[429] */ + { 430, 0x0000000000000000ULL, { 0x4B4F4FE9DE6B2E2CULL, 0x6B3041AB35EE0843ULL } }, /* XSUM_XXH128_withSecret_testdata[430] */ + { 431, 0x0000000000000000ULL, { 0x74D082ED70E8A13FULL, 0xBFE8F74D7B3C69B3ULL } }, /* XSUM_XXH128_withSecret_testdata[431] */ + { 432, 0x0000000000000000ULL, { 0x4D084F04ABE7620EULL, 0x2E9E52BFA3FB1BD6ULL } }, /* XSUM_XXH128_withSecret_testdata[432] */ + { 433, 0x0000000000000000ULL, { 0x6390929D32DB775AULL, 0xB4166866D6E9F0F1ULL } }, /* XSUM_XXH128_withSecret_testdata[433] */ + { 434, 0x0000000000000000ULL, { 0x86BC650A8AFFA1A4ULL, 0x26C13F569318AAF0ULL } }, /* XSUM_XXH128_withSecret_testdata[434] */ + { 435, 0x0000000000000000ULL, { 0x525B7109EB14DB23ULL, 0x98C0E7204D4C7FFEULL } }, /* XSUM_XXH128_withSecret_testdata[435] */ + { 436, 0x0000000000000000ULL, { 0x41A700E2DFEF822EULL, 0x7E55F4ABC7B2FB0FULL } }, /* XSUM_XXH128_withSecret_testdata[436] */ + { 437, 0x0000000000000000ULL, { 0x6CB4BEFFF28DF8ACULL, 0x914AF1CD1E48AE4CULL } }, /* XSUM_XXH128_withSecret_testdata[437] */ + { 438, 0x0000000000000000ULL, { 0x810C53827E409D0CULL, 0x77ACF35D06888242ULL } }, /* XSUM_XXH128_withSecret_testdata[438] */ + { 439, 0x0000000000000000ULL, { 0x5E1A75786BC7D5EFULL, 0xF0073F2608406DB7ULL } }, /* XSUM_XXH128_withSecret_testdata[439] */ + { 440, 0x0000000000000000ULL, { 0x7B2FCA065E805463ULL, 0x2DBAA38704F781A1ULL } }, /* XSUM_XXH128_withSecret_testdata[440] */ + { 441, 0x0000000000000000ULL, { 0xFE97333284356D7DULL, 0x0F00087B07FC3FADULL } }, /* XSUM_XXH128_withSecret_testdata[441] */ + { 442, 0x0000000000000000ULL, { 0x106231A1F8C0FFCCULL, 0x8DC14F341795C07DULL } }, /* XSUM_XXH128_withSecret_testdata[442] */ + { 443, 0x0000000000000000ULL, { 0xF8FBD2920F51BF03ULL, 0x03895A8B63E81AE8ULL } }, /* XSUM_XXH128_withSecret_testdata[443] */ + { 444, 0x0000000000000000ULL, { 0x6CD891B1A44EE649ULL, 0xD736427EA23279CBULL } }, /* XSUM_XXH128_withSecret_testdata[444] */ + { 445, 0x0000000000000000ULL, { 0xA0C07BC7005909B9ULL, 0xCA356CFBAB97ABA7ULL } }, /* XSUM_XXH128_withSecret_testdata[445] */ + { 446, 0x0000000000000000ULL, { 0x184DC35A01F19A69ULL, 0x3960AB05D8F7BF24ULL } }, /* XSUM_XXH128_withSecret_testdata[446] */ + { 447, 0x0000000000000000ULL, { 0xE57C1002023987FEULL, 0x67706109739EC675ULL } }, /* XSUM_XXH128_withSecret_testdata[447] */ + { 448, 0x0000000000000000ULL, { 0x8EA484E6F2659C6FULL, 0x8446304BD77F2DA2ULL } }, /* XSUM_XXH128_withSecret_testdata[448] */ + { 449, 0x0000000000000000ULL, { 0xF260E6432FC489A2ULL, 0xF8E52694B150DCD4ULL } }, /* XSUM_XXH128_withSecret_testdata[449] */ + { 450, 0x0000000000000000ULL, { 0xAE8D2868FE6AC4C4ULL, 0x2107CAB0C6E90926ULL } }, /* XSUM_XXH128_withSecret_testdata[450] */ + { 451, 0x0000000000000000ULL, { 0x04099B3D6ACEB18BULL, 0x235A2C83F529F739ULL } }, /* XSUM_XXH128_withSecret_testdata[451] */ + { 452, 0x0000000000000000ULL, { 0xDDB5426BF3E3EA19ULL, 0x044C3B7AD59DF71FULL } }, /* XSUM_XXH128_withSecret_testdata[452] */ + { 453, 0x0000000000000000ULL, { 0xCCB0A8860651FEC0ULL, 0xFA6064C9B9E328A5ULL } }, /* XSUM_XXH128_withSecret_testdata[453] */ + { 454, 0x0000000000000000ULL, { 0x9617D50B4A3EF1B3ULL, 0xEFC70D4C1BCC874CULL } }, /* XSUM_XXH128_withSecret_testdata[454] */ + { 455, 0x0000000000000000ULL, { 0x6F2B8E3512F86464ULL, 0x02E8B69C637AC751ULL } }, /* XSUM_XXH128_withSecret_testdata[455] */ + { 456, 0x0000000000000000ULL, { 0x05A8D79A5ED7FC14ULL, 0xA53A4D85F36DB882ULL } }, /* XSUM_XXH128_withSecret_testdata[456] */ + { 457, 0x0000000000000000ULL, { 0x8B10941099EF6821ULL, 0x66856D29C54FD542ULL } }, /* XSUM_XXH128_withSecret_testdata[457] */ + { 458, 0x0000000000000000ULL, { 0x531E70FF6FAD7D8BULL, 0x0BBE77CED652BD05ULL } }, /* XSUM_XXH128_withSecret_testdata[458] */ + { 459, 0x0000000000000000ULL, { 0x76489F7455586327ULL, 0xA7FFC0FD56A6F781ULL } }, /* XSUM_XXH128_withSecret_testdata[459] */ + { 460, 0x0000000000000000ULL, { 0x564DF8086324198DULL, 0xA76F4EE1E39E53E1ULL } }, /* XSUM_XXH128_withSecret_testdata[460] */ + { 461, 0x0000000000000000ULL, { 0x1C11818055102C22ULL, 0x58A0AD6FA989152DULL } }, /* XSUM_XXH128_withSecret_testdata[461] */ + { 462, 0x0000000000000000ULL, { 0xEBD34A4B973A81E7ULL, 0xA347A4AEBD1C82D1ULL } }, /* XSUM_XXH128_withSecret_testdata[462] */ + { 463, 0x0000000000000000ULL, { 0x139366BA74F1922DULL, 0x6B11B4B7143045E7ULL } }, /* XSUM_XXH128_withSecret_testdata[463] */ + { 464, 0x0000000000000000ULL, { 0x0D5E0CFA6D8177ECULL, 0x9796369488334C97ULL } }, /* XSUM_XXH128_withSecret_testdata[464] */ + { 465, 0x0000000000000000ULL, { 0x696BB5F52A5A4D2AULL, 0x49C74CE505826632ULL } }, /* XSUM_XXH128_withSecret_testdata[465] */ + { 466, 0x0000000000000000ULL, { 0x1DA3384D51C3989EULL, 0x3964CBDBF34322ACULL } }, /* XSUM_XXH128_withSecret_testdata[466] */ + { 467, 0x0000000000000000ULL, { 0xEB1E8FB9E569B1BEULL, 0x3E593067E72A4676ULL } }, /* XSUM_XXH128_withSecret_testdata[467] */ + { 468, 0x0000000000000000ULL, { 0xBE451DC21D6711F3ULL, 0x4B1B8E754AD2BFEDULL } }, /* XSUM_XXH128_withSecret_testdata[468] */ + { 469, 0x0000000000000000ULL, { 0x9AA9F786DB7FB505ULL, 0x83FEAFC31A5812F9ULL } }, /* XSUM_XXH128_withSecret_testdata[469] */ + { 470, 0x0000000000000000ULL, { 0x05A05AF0D472D478ULL, 0x805AC1F92FBF85DAULL } }, /* XSUM_XXH128_withSecret_testdata[470] */ + { 471, 0x0000000000000000ULL, { 0x74E2DACFF08AA645ULL, 0x942265DB8CDF4D47ULL } }, /* XSUM_XXH128_withSecret_testdata[471] */ + { 472, 0x0000000000000000ULL, { 0xF85348C7CFB5B9EAULL, 0x8BC0F0ACDE1421D2ULL } }, /* XSUM_XXH128_withSecret_testdata[472] */ + { 473, 0x0000000000000000ULL, { 0xA883F3EB96291568ULL, 0x4898C5F2942A3D83ULL } }, /* XSUM_XXH128_withSecret_testdata[473] */ + { 474, 0x0000000000000000ULL, { 0xC720FBE31C03664FULL, 0x13695088B5F85539ULL } }, /* XSUM_XXH128_withSecret_testdata[474] */ + { 475, 0x0000000000000000ULL, { 0x4D97B2885715A5AAULL, 0xCAB8E6F4A802C9E1ULL } }, /* XSUM_XXH128_withSecret_testdata[475] */ + { 476, 0x0000000000000000ULL, { 0x71A3B155E993C666ULL, 0x58D844B69A96D476ULL } }, /* XSUM_XXH128_withSecret_testdata[476] */ + { 477, 0x0000000000000000ULL, { 0x06CE86D9F84391BAULL, 0xAF70278539F5DE64ULL } }, /* XSUM_XXH128_withSecret_testdata[477] */ + { 478, 0x0000000000000000ULL, { 0x0D7529EF6859BCE0ULL, 0x0B50CB32E8288FE1ULL } }, /* XSUM_XXH128_withSecret_testdata[478] */ + { 479, 0x0000000000000000ULL, { 0x788F89E922618A08ULL, 0x0EB5B7F30B9960B6ULL } }, /* XSUM_XXH128_withSecret_testdata[479] */ + { 480, 0x0000000000000000ULL, { 0x7FADB159F9E17B6BULL, 0xF3FB55E95BF1DBFFULL } }, /* XSUM_XXH128_withSecret_testdata[480] */ + { 481, 0x0000000000000000ULL, { 0x8DD9EFDDB2292E61ULL, 0x9FD23ED53D694F9FULL } }, /* XSUM_XXH128_withSecret_testdata[481] */ + { 482, 0x0000000000000000ULL, { 0x9E3AD6DAEABABA39ULL, 0x6FBA5EFD80A47646ULL } }, /* XSUM_XXH128_withSecret_testdata[482] */ + { 483, 0x0000000000000000ULL, { 0x981222C1C613688DULL, 0xF6B86EF965DB5F18ULL } }, /* XSUM_XXH128_withSecret_testdata[483] */ + { 484, 0x0000000000000000ULL, { 0xB4F8AB78FEFEABB2ULL, 0x14992814225B5F49ULL } }, /* XSUM_XXH128_withSecret_testdata[484] */ + { 485, 0x0000000000000000ULL, { 0xB13480CA4EE9DFC4ULL, 0x0F233501CE9C803EULL } }, /* XSUM_XXH128_withSecret_testdata[485] */ + { 486, 0x0000000000000000ULL, { 0x55E7EF4BE393F7D9ULL, 0x36C2E6D8B879AA99ULL } }, /* XSUM_XXH128_withSecret_testdata[486] */ + { 487, 0x0000000000000000ULL, { 0xAE4EA572FD01D019ULL, 0x6D12C8FFB9C57CB4ULL } }, /* XSUM_XXH128_withSecret_testdata[487] */ + { 488, 0x0000000000000000ULL, { 0xAF36559E92729487ULL, 0xE232E63C9D83780AULL } }, /* XSUM_XXH128_withSecret_testdata[488] */ + { 489, 0x0000000000000000ULL, { 0x890D3420854C7C5AULL, 0x9CA6519EB2E18CA5ULL } }, /* XSUM_XXH128_withSecret_testdata[489] */ + { 490, 0x0000000000000000ULL, { 0xCAE024633D1614D0ULL, 0xE2558061CC65E73BULL } }, /* XSUM_XXH128_withSecret_testdata[490] */ + { 491, 0x0000000000000000ULL, { 0xEE8EECBBCB3E766BULL, 0xD4924B1CDAE524F3ULL } }, /* XSUM_XXH128_withSecret_testdata[491] */ + { 492, 0x0000000000000000ULL, { 0xAF71D10211457BB0ULL, 0x6A03D0B1050B34EBULL } }, /* XSUM_XXH128_withSecret_testdata[492] */ + { 493, 0x0000000000000000ULL, { 0x12B1032FE1D490BCULL, 0x3B620519889A92DAULL } }, /* XSUM_XXH128_withSecret_testdata[493] */ + { 494, 0x0000000000000000ULL, { 0x496205F656F46869ULL, 0x362D49A348230AAAULL } }, /* XSUM_XXH128_withSecret_testdata[494] */ + { 495, 0x0000000000000000ULL, { 0xA6BEDED188B0D541ULL, 0xC0AE51966CF007E1ULL } }, /* XSUM_XXH128_withSecret_testdata[495] */ + { 496, 0x0000000000000000ULL, { 0xB6C8E95F9ED250E1ULL, 0x39DC1A6C20BD7665ULL } }, /* XSUM_XXH128_withSecret_testdata[496] */ + { 497, 0x0000000000000000ULL, { 0x0DAF283FCCE83BA0ULL, 0x66C37CDFDB62E369ULL } }, /* XSUM_XXH128_withSecret_testdata[497] */ + { 498, 0x0000000000000000ULL, { 0xC9C8BB888444FCDCULL, 0x99244D6A9497DA7AULL } }, /* XSUM_XXH128_withSecret_testdata[498] */ + { 499, 0x0000000000000000ULL, { 0xB09E0768B25AF325ULL, 0xCF1800089A692B70ULL } }, /* XSUM_XXH128_withSecret_testdata[499] */ + { 500, 0x0000000000000000ULL, { 0x1E33D40CD0295252ULL, 0xC8CE4860BB964C63ULL } }, /* XSUM_XXH128_withSecret_testdata[500] */ + { 501, 0x0000000000000000ULL, { 0xBBC2DDD4CDFB1D8FULL, 0x0C4D54549FB83FFFULL } }, /* XSUM_XXH128_withSecret_testdata[501] */ + { 502, 0x0000000000000000ULL, { 0x390B3C654F27BA9BULL, 0x0F25C62428555E95ULL } }, /* XSUM_XXH128_withSecret_testdata[502] */ + { 503, 0x0000000000000000ULL, { 0x5B4E4DA2D546AF16ULL, 0x561839E2D89EF402ULL } }, /* XSUM_XXH128_withSecret_testdata[503] */ + { 504, 0x0000000000000000ULL, { 0x6188E7B007CB5BBEULL, 0xD9A752A5D2854A06ULL } }, /* XSUM_XXH128_withSecret_testdata[504] */ + { 505, 0x0000000000000000ULL, { 0x66136B194844318CULL, 0x00DC46C25DE557EEULL } }, /* XSUM_XXH128_withSecret_testdata[505] */ + { 506, 0x0000000000000000ULL, { 0x6AE4F042EFE78B47ULL, 0xE45E492998EF6966ULL } }, /* XSUM_XXH128_withSecret_testdata[506] */ + { 507, 0x0000000000000000ULL, { 0x9A0086AF00460BE4ULL, 0xB1945C1EC28C1113ULL } }, /* XSUM_XXH128_withSecret_testdata[507] */ + { 508, 0x0000000000000000ULL, { 0x7C6304A187315EB8ULL, 0x365A93BB18C61668ULL } }, /* XSUM_XXH128_withSecret_testdata[508] */ + { 509, 0x0000000000000000ULL, { 0x7F6C42510D7ACD65ULL, 0xE97C15187B4ADDA6ULL } }, /* XSUM_XXH128_withSecret_testdata[509] */ + { 510, 0x0000000000000000ULL, { 0x1BE1981EA82F7194ULL, 0xAE158DD4A911AD3DULL } }, /* XSUM_XXH128_withSecret_testdata[510] */ + { 511, 0x0000000000000000ULL, { 0x13E7046BC1C1F16AULL, 0x86764F81BB226A35ULL } }, /* XSUM_XXH128_withSecret_testdata[511] */ + { 512, 0x0000000000000000ULL, { 0x7564693DD526E28DULL, 0x918C0F2C7656AB6DULL } }, /* XSUM_XXH128_withSecret_testdata[512] */ + { 513, 0x0000000000000000ULL, { 0x90ECD952A5E1DB2AULL, 0x4FB7B816335F2927ULL } }, /* XSUM_XXH128_withSecret_testdata[513] */ + { 514, 0x0000000000000000ULL, { 0x1AA64FBAC9FDA462ULL, 0x3DBC9221575DDA22ULL } }, /* XSUM_XXH128_withSecret_testdata[514] */ + { 515, 0x0000000000000000ULL, { 0x6FCBB3CD2F992BA2ULL, 0xB809D5EB9E204645ULL } }, /* XSUM_XXH128_withSecret_testdata[515] */ + { 516, 0x0000000000000000ULL, { 0x91D589A1CC429931ULL, 0xD76EA8ADA4BCEE9DULL } }, /* XSUM_XXH128_withSecret_testdata[516] */ + { 517, 0x0000000000000000ULL, { 0x250BA0C99E63EB69ULL, 0xD900F07E83743271ULL } }, /* XSUM_XXH128_withSecret_testdata[517] */ + { 518, 0x0000000000000000ULL, { 0xB5806B40F35EBA8FULL, 0xDD307FAE0AB62248ULL } }, /* XSUM_XXH128_withSecret_testdata[518] */ + { 519, 0x0000000000000000ULL, { 0x5E60CDD342A90D11ULL, 0x663AEB1A46163A0DULL } }, /* XSUM_XXH128_withSecret_testdata[519] */ + { 520, 0x0000000000000000ULL, { 0xB7E74BEB49229E4AULL, 0xFE76F40069CACF7DULL } }, /* XSUM_XXH128_withSecret_testdata[520] */ + { 521, 0x0000000000000000ULL, { 0x99BF1AD8A3848DCEULL, 0xF1DD04822D6ABE23ULL } }, /* XSUM_XXH128_withSecret_testdata[521] */ + { 522, 0x0000000000000000ULL, { 0xE829587F4E69AEF4ULL, 0x5DCE037273B313D9ULL } }, /* XSUM_XXH128_withSecret_testdata[522] */ + { 523, 0x0000000000000000ULL, { 0xB7FCF1AE6B935506ULL, 0xF057CE94A181620AULL } }, /* XSUM_XXH128_withSecret_testdata[523] */ + { 524, 0x0000000000000000ULL, { 0x0EBEE873C033D02BULL, 0x1347075F70E66618ULL } }, /* XSUM_XXH128_withSecret_testdata[524] */ + { 525, 0x0000000000000000ULL, { 0xD30F10C56CB2BA6CULL, 0x68E2CC33CE0AC155ULL } }, /* XSUM_XXH128_withSecret_testdata[525] */ + { 526, 0x0000000000000000ULL, { 0x3231AF77DE6BF16BULL, 0x38ECF46F1D9E62FCULL } }, /* XSUM_XXH128_withSecret_testdata[526] */ + { 527, 0x0000000000000000ULL, { 0x4DF21324B4C9D980ULL, 0x257EAA888F18499AULL } }, /* XSUM_XXH128_withSecret_testdata[527] */ + { 528, 0x0000000000000000ULL, { 0x116D8F2EEC17F844ULL, 0xACA5335C73C8D9A4ULL } }, /* XSUM_XXH128_withSecret_testdata[528] */ + { 529, 0x0000000000000000ULL, { 0x7A520D146D8EACC4ULL, 0x2DCAFE475591F498ULL } }, /* XSUM_XXH128_withSecret_testdata[529] */ + { 530, 0x0000000000000000ULL, { 0xCEF7415A2376AFF8ULL, 0xDE6F55CA5B4AB5A4ULL } }, /* XSUM_XXH128_withSecret_testdata[530] */ + { 531, 0x0000000000000000ULL, { 0x593BEC9404885FE6ULL, 0xE983DD57660D0AB5ULL } }, /* XSUM_XXH128_withSecret_testdata[531] */ + { 532, 0x0000000000000000ULL, { 0x3678DAE654D1BA14ULL, 0x1F37AC7260FC01F8ULL } }, /* XSUM_XXH128_withSecret_testdata[532] */ + { 533, 0x0000000000000000ULL, { 0xBC46CAD7E4A3A91DULL, 0xB7987D61006CC653ULL } }, /* XSUM_XXH128_withSecret_testdata[533] */ + { 534, 0x0000000000000000ULL, { 0x22AAE7BE6E3CE69CULL, 0xB76CF2417554CC76ULL } }, /* XSUM_XXH128_withSecret_testdata[534] */ + { 535, 0x0000000000000000ULL, { 0xAFD83E6D60A03601ULL, 0x302017DCD9D0C7FEULL } }, /* XSUM_XXH128_withSecret_testdata[535] */ + { 536, 0x0000000000000000ULL, { 0x4FEC4ECD4DF997D8ULL, 0xEAF13E6E6BC84633ULL } }, /* XSUM_XXH128_withSecret_testdata[536] */ + { 537, 0x0000000000000000ULL, { 0x7C678DC167B9FB60ULL, 0x2FE332C55EEE4CD2ULL } }, /* XSUM_XXH128_withSecret_testdata[537] */ + { 538, 0x0000000000000000ULL, { 0xC878F611DE29F652ULL, 0x391C09079DFFD0F7ULL } }, /* XSUM_XXH128_withSecret_testdata[538] */ + { 539, 0x0000000000000000ULL, { 0x6A1CD0BE28964327ULL, 0x3F53F7A3049EA2D9ULL } }, /* XSUM_XXH128_withSecret_testdata[539] */ + { 540, 0x0000000000000000ULL, { 0x8FCA7332782D66CFULL, 0x4C63B3FC6E0B933AULL } }, /* XSUM_XXH128_withSecret_testdata[540] */ + { 541, 0x0000000000000000ULL, { 0xB8480536E3E32AE0ULL, 0x1B4F6248A4740E01ULL } }, /* XSUM_XXH128_withSecret_testdata[541] */ + { 542, 0x0000000000000000ULL, { 0x94AC4ABBB2A84A0CULL, 0x6122451DA4DD6766ULL } }, /* XSUM_XXH128_withSecret_testdata[542] */ + { 543, 0x0000000000000000ULL, { 0x90517D8900279F68ULL, 0x31BE901379790427ULL } }, /* XSUM_XXH128_withSecret_testdata[543] */ + { 544, 0x0000000000000000ULL, { 0x246A6757E15C8B12ULL, 0x4AA67BC4C985E345ULL } }, /* XSUM_XXH128_withSecret_testdata[544] */ + { 545, 0x0000000000000000ULL, { 0x6C03DFBB0752B899ULL, 0xDDA891328B5494A2ULL } }, /* XSUM_XXH128_withSecret_testdata[545] */ + { 546, 0x0000000000000000ULL, { 0xABA2842DEAFF612FULL, 0x9C88E2CB891ADFF8ULL } }, /* XSUM_XXH128_withSecret_testdata[546] */ + { 547, 0x0000000000000000ULL, { 0xBAB39E5A45FFC560ULL, 0x8348D5454F6BA250ULL } }, /* XSUM_XXH128_withSecret_testdata[547] */ + { 548, 0x0000000000000000ULL, { 0x38D42B0D8EF776F7ULL, 0x011BCBD9C11A772DULL } }, /* XSUM_XXH128_withSecret_testdata[548] */ + { 549, 0x0000000000000000ULL, { 0x0D9B4FA58442EFDBULL, 0xA7C37D836B1AE3E8ULL } }, /* XSUM_XXH128_withSecret_testdata[549] */ + { 550, 0x0000000000000000ULL, { 0x42CB75A41891135DULL, 0x6213F66A356AC328ULL } }, /* XSUM_XXH128_withSecret_testdata[550] */ + { 551, 0x0000000000000000ULL, { 0xE192FF04B2BEB969ULL, 0xC1534F974360FAA0ULL } }, /* XSUM_XXH128_withSecret_testdata[551] */ + { 552, 0x0000000000000000ULL, { 0xDD39E20665BF4C76ULL, 0xE45A791AB0719752ULL } }, /* XSUM_XXH128_withSecret_testdata[552] */ + { 553, 0x0000000000000000ULL, { 0x2A33A053BDE45941ULL, 0xAC27AC849766E0E1ULL } }, /* XSUM_XXH128_withSecret_testdata[553] */ + { 554, 0x0000000000000000ULL, { 0x0FF51ED801CA9663ULL, 0x7054516C7B426F34ULL } }, /* XSUM_XXH128_withSecret_testdata[554] */ + { 555, 0x0000000000000000ULL, { 0x8EF39E398852DE24ULL, 0x23C45AC283099EECULL } }, /* XSUM_XXH128_withSecret_testdata[555] */ + { 556, 0x0000000000000000ULL, { 0x27F33BB18BBCAA58ULL, 0x26539F6EBDE5AF07ULL } }, /* XSUM_XXH128_withSecret_testdata[556] */ + { 557, 0x0000000000000000ULL, { 0x1D8EA93FD71B3AA6ULL, 0xB82CCCE35F73D63BULL } }, /* XSUM_XXH128_withSecret_testdata[557] */ + { 558, 0x0000000000000000ULL, { 0x1756B0AEB6138559ULL, 0x923A50F24B3DB92DULL } }, /* XSUM_XXH128_withSecret_testdata[558] */ + { 559, 0x0000000000000000ULL, { 0x28C2ECC7A2F13035ULL, 0x7C7C0D355872C574ULL } }, /* XSUM_XXH128_withSecret_testdata[559] */ + { 560, 0x0000000000000000ULL, { 0x4D1629FBA22FF016ULL, 0x66AA3520AA869C8AULL } }, /* XSUM_XXH128_withSecret_testdata[560] */ + { 561, 0x0000000000000000ULL, { 0xF7637F2CF266B6B0ULL, 0xB0EAF3555CA04AD0ULL } }, /* XSUM_XXH128_withSecret_testdata[561] */ + { 562, 0x0000000000000000ULL, { 0xAB32B43837B334B0ULL, 0x9FB1D8ECD7F98AFBULL } }, /* XSUM_XXH128_withSecret_testdata[562] */ + { 563, 0x0000000000000000ULL, { 0xBBBD33C2D61F089CULL, 0x7D3D0FD9C1942798ULL } }, /* XSUM_XXH128_withSecret_testdata[563] */ + { 564, 0x0000000000000000ULL, { 0xBFF15485EE081A17ULL, 0x852904792588EA7DULL } }, /* XSUM_XXH128_withSecret_testdata[564] */ + { 565, 0x0000000000000000ULL, { 0x809C50B82ABABF38ULL, 0x77B38633ACC74C63ULL } }, /* XSUM_XXH128_withSecret_testdata[565] */ + { 566, 0x0000000000000000ULL, { 0xE61690E5F2BD778EULL, 0xB7B504C3DCD5C133ULL } }, /* XSUM_XXH128_withSecret_testdata[566] */ + { 567, 0x0000000000000000ULL, { 0xEA3888F2AAE96689ULL, 0x5F49C0ABA1FE11F1ULL } }, /* XSUM_XXH128_withSecret_testdata[567] */ + { 568, 0x0000000000000000ULL, { 0xCB4333286A2517EAULL, 0x5903B3AFD6A7990AULL } }, /* XSUM_XXH128_withSecret_testdata[568] */ + { 569, 0x0000000000000000ULL, { 0xB0E94197F3C32AA4ULL, 0xC97111ED65B8B86BULL } }, /* XSUM_XXH128_withSecret_testdata[569] */ + { 570, 0x0000000000000000ULL, { 0xF0D81738946F5CE0ULL, 0xCC0AAFFAEA71FC57ULL } }, /* XSUM_XXH128_withSecret_testdata[570] */ + { 571, 0x0000000000000000ULL, { 0x1A9D7CF2D42FFEEAULL, 0x93EFC93EDC00AE08ULL } }, /* XSUM_XXH128_withSecret_testdata[571] */ + { 572, 0x0000000000000000ULL, { 0x26BB4CAFF1C913F2ULL, 0x7D14F980838057ECULL } }, /* XSUM_XXH128_withSecret_testdata[572] */ + { 573, 0x0000000000000000ULL, { 0xD5B00D056E5E1CD8ULL, 0xA76B753289434DD3ULL } }, /* XSUM_XXH128_withSecret_testdata[573] */ + { 574, 0x0000000000000000ULL, { 0x7DC4689B61EA61E5ULL, 0xD69303AFA05EB306ULL } }, /* XSUM_XXH128_withSecret_testdata[574] */ + { 575, 0x0000000000000000ULL, { 0x467D25957A0F8C8FULL, 0x26CAB2D12F605AA9ULL } }, /* XSUM_XXH128_withSecret_testdata[575] */ + { 576, 0x0000000000000000ULL, { 0xFE07E9C6C4A371CAULL, 0x9A517CEA778FE047ULL } }, /* XSUM_XXH128_withSecret_testdata[576] */ + { 577, 0x0000000000000000ULL, { 0x84087F00F175E5DBULL, 0xBC591BEF324EC35AULL } }, /* XSUM_XXH128_withSecret_testdata[577] */ + { 578, 0x0000000000000000ULL, { 0x1BC927804009B88FULL, 0x48D89ED0A4E72273ULL } }, /* XSUM_XXH128_withSecret_testdata[578] */ + { 579, 0x0000000000000000ULL, { 0x55BBF74F3DE64961ULL, 0xF3AFD5119FB9893FULL } }, /* XSUM_XXH128_withSecret_testdata[579] */ + { 580, 0x0000000000000000ULL, { 0x7845B62245EAC6C9ULL, 0xA982A0D95D504405ULL } }, /* XSUM_XXH128_withSecret_testdata[580] */ + { 581, 0x0000000000000000ULL, { 0x20D4D64D55285E23ULL, 0x293A2FD034245DBFULL } }, /* XSUM_XXH128_withSecret_testdata[581] */ + { 582, 0x0000000000000000ULL, { 0x06549657D84B48F0ULL, 0x2B1960D7F17CC456ULL } }, /* XSUM_XXH128_withSecret_testdata[582] */ + { 583, 0x0000000000000000ULL, { 0x66A6764AB8F52C8CULL, 0xD26A5C1F7F18A018ULL } }, /* XSUM_XXH128_withSecret_testdata[583] */ + { 584, 0x0000000000000000ULL, { 0x1DB3C57AE2A569F2ULL, 0x79FB805AA1D320B3ULL } }, /* XSUM_XXH128_withSecret_testdata[584] */ + { 585, 0x0000000000000000ULL, { 0xFDC545403F1736A2ULL, 0xDDCE1B2BF90A9361ULL } }, /* XSUM_XXH128_withSecret_testdata[585] */ + { 586, 0x0000000000000000ULL, { 0xB92C4D8DFF25AA4BULL, 0xCDD8389EFF976CA1ULL } }, /* XSUM_XXH128_withSecret_testdata[586] */ + { 587, 0x0000000000000000ULL, { 0x0EE24667615AAE8AULL, 0x7EC45187E08B25E2ULL } }, /* XSUM_XXH128_withSecret_testdata[587] */ + { 588, 0x0000000000000000ULL, { 0x163CFA2B101E3E2EULL, 0x80A297834328E7A7ULL } }, /* XSUM_XXH128_withSecret_testdata[588] */ + { 589, 0x0000000000000000ULL, { 0xD95A3ADA05D46BD8ULL, 0x1FDDA7A1C0B7370CULL } }, /* XSUM_XXH128_withSecret_testdata[589] */ + { 590, 0x0000000000000000ULL, { 0xC50602315F6DCAC4ULL, 0x120822B91CC8029AULL } }, /* XSUM_XXH128_withSecret_testdata[590] */ + { 591, 0x0000000000000000ULL, { 0xD797827DFC7270E5ULL, 0x89BCBB5295C0F7F5ULL } }, /* XSUM_XXH128_withSecret_testdata[591] */ + { 592, 0x0000000000000000ULL, { 0x39DF2CFEF1965140ULL, 0xAB2315DDD7B141D1ULL } }, /* XSUM_XXH128_withSecret_testdata[592] */ + { 593, 0x0000000000000000ULL, { 0x27A57312A8BF08AAULL, 0xC9873810954BD68DULL } }, /* XSUM_XXH128_withSecret_testdata[593] */ + { 594, 0x0000000000000000ULL, { 0x49884742F7161A91ULL, 0x9780D680D983B950ULL } }, /* XSUM_XXH128_withSecret_testdata[594] */ + { 595, 0x0000000000000000ULL, { 0x703F1C859BA43E85ULL, 0x656C86D4B58D6AEBULL } }, /* XSUM_XXH128_withSecret_testdata[595] */ + { 596, 0x0000000000000000ULL, { 0xC99F5919077F1602ULL, 0xAF6F393C875C1543ULL } }, /* XSUM_XXH128_withSecret_testdata[596] */ + { 597, 0x0000000000000000ULL, { 0x3EBFE1A698C87150ULL, 0x52F2CA0850FE62DCULL } }, /* XSUM_XXH128_withSecret_testdata[597] */ + { 598, 0x0000000000000000ULL, { 0xF52114FB53B42FA0ULL, 0x771230289FBA571EULL } }, /* XSUM_XXH128_withSecret_testdata[598] */ + { 599, 0x0000000000000000ULL, { 0xF880FF0AA16AD7E5ULL, 0xFB702AECF4F4ED60ULL } }, /* XSUM_XXH128_withSecret_testdata[599] */ + { 600, 0x0000000000000000ULL, { 0x310F1CB6A2BD239FULL, 0x2C4B1CE3CDAAB492ULL } }, /* XSUM_XXH128_withSecret_testdata[600] */ + { 601, 0x0000000000000000ULL, { 0x3DDB0C6513545BBDULL, 0xD1686FA63CAB4340ULL } }, /* XSUM_XXH128_withSecret_testdata[601] */ + { 602, 0x0000000000000000ULL, { 0xC5CD92FCB501617AULL, 0x0FE8392F051B215DULL } }, /* XSUM_XXH128_withSecret_testdata[602] */ + { 603, 0x0000000000000000ULL, { 0xB6B4FFBB69CBC605ULL, 0x7F5E93324BBD45E1ULL } }, /* XSUM_XXH128_withSecret_testdata[603] */ + { 604, 0x0000000000000000ULL, { 0x7A6DAFA8F51949B1ULL, 0x526FE442D61C316AULL } }, /* XSUM_XXH128_withSecret_testdata[604] */ + { 605, 0x0000000000000000ULL, { 0x718A65EED805BF72ULL, 0x51F2352FD1E0144EULL } }, /* XSUM_XXH128_withSecret_testdata[605] */ + { 606, 0x0000000000000000ULL, { 0xFE312FFC698A2E0CULL, 0x60A168B25AA043CFULL } }, /* XSUM_XXH128_withSecret_testdata[606] */ + { 607, 0x0000000000000000ULL, { 0x78E791990076D6B8ULL, 0x65E0EE94BF6C0E72ULL } }, /* XSUM_XXH128_withSecret_testdata[607] */ + { 608, 0x0000000000000000ULL, { 0x4740522E691209B0ULL, 0x73997F75372E3D50ULL } }, /* XSUM_XXH128_withSecret_testdata[608] */ + { 609, 0x0000000000000000ULL, { 0xF81A17580E4F9F64ULL, 0xB2BD11E56FC18C93ULL } }, /* XSUM_XXH128_withSecret_testdata[609] */ + { 610, 0x0000000000000000ULL, { 0x231C26FD3126B62FULL, 0x8C25E2306D0E8562ULL } }, /* XSUM_XXH128_withSecret_testdata[610] */ + { 611, 0x0000000000000000ULL, { 0x527D43263D1CB17DULL, 0x26C7014669C5B788ULL } }, /* XSUM_XXH128_withSecret_testdata[611] */ + { 612, 0x0000000000000000ULL, { 0x1F2B5E82293DF3DAULL, 0x75E388BFB7801C58ULL } }, /* XSUM_XXH128_withSecret_testdata[612] */ + { 613, 0x0000000000000000ULL, { 0xECCD21F291D58491ULL, 0x7CAA9671CCF9E359ULL } }, /* XSUM_XXH128_withSecret_testdata[613] */ + { 614, 0x0000000000000000ULL, { 0xDB58F6F0463116ABULL, 0x3814F0A1C6671655ULL } }, /* XSUM_XXH128_withSecret_testdata[614] */ + { 615, 0x0000000000000000ULL, { 0x7CCD180281A935DBULL, 0x1292E8ED0EB7C449ULL } }, /* XSUM_XXH128_withSecret_testdata[615] */ + { 616, 0x0000000000000000ULL, { 0xFE1BB71A72BD3FC0ULL, 0xB69B6466F9F5A485ULL } }, /* XSUM_XXH128_withSecret_testdata[616] */ + { 617, 0x0000000000000000ULL, { 0xD8E4682F83685AC6ULL, 0x3D0D12D74321B502ULL } }, /* XSUM_XXH128_withSecret_testdata[617] */ + { 618, 0x0000000000000000ULL, { 0x2A097BE4ACF1CB3DULL, 0xEDD47AAC6EA1FC49ULL } }, /* XSUM_XXH128_withSecret_testdata[618] */ + { 619, 0x0000000000000000ULL, { 0x4BB0559191CD6694ULL, 0xC012575F69B63F18ULL } }, /* XSUM_XXH128_withSecret_testdata[619] */ + { 620, 0x0000000000000000ULL, { 0x6AEEF8D74CB794ABULL, 0xD718245C24C3FF07ULL } }, /* XSUM_XXH128_withSecret_testdata[620] */ + { 621, 0x0000000000000000ULL, { 0x44D4F1955B2B77ABULL, 0xDB55993A8B0C20F3ULL } }, /* XSUM_XXH128_withSecret_testdata[621] */ + { 622, 0x0000000000000000ULL, { 0x19DB5915F3827B4EULL, 0x511F08FEF7FDACB8ULL } }, /* XSUM_XXH128_withSecret_testdata[622] */ + { 623, 0x0000000000000000ULL, { 0x14D765413927C1F7ULL, 0x0E5D8FE89AC69269ULL } }, /* XSUM_XXH128_withSecret_testdata[623] */ + { 624, 0x0000000000000000ULL, { 0xE9A2D756CD39BD67ULL, 0xB98614B230E7A983ULL } }, /* XSUM_XXH128_withSecret_testdata[624] */ + { 625, 0x0000000000000000ULL, { 0xCE1568B11F19346EULL, 0x18CB79560E9B9FE9ULL } }, /* XSUM_XXH128_withSecret_testdata[625] */ + { 626, 0x0000000000000000ULL, { 0xEC3E07F1679E7153ULL, 0x938EF1F405619C4BULL } }, /* XSUM_XXH128_withSecret_testdata[626] */ + { 627, 0x0000000000000000ULL, { 0xC1BBAB36A97BA650ULL, 0x6D41670F610BC909ULL } }, /* XSUM_XXH128_withSecret_testdata[627] */ + { 628, 0x0000000000000000ULL, { 0xF40C6B258C2D2F59ULL, 0x0EF2986F6278D1AAULL } }, /* XSUM_XXH128_withSecret_testdata[628] */ + { 629, 0x0000000000000000ULL, { 0x3ECEAFDE6185BC06ULL, 0xD1397DD405194BBBULL } }, /* XSUM_XXH128_withSecret_testdata[629] */ + { 630, 0x0000000000000000ULL, { 0x2F7B8EB209344D00ULL, 0x17A1C198E9E2D61AULL } }, /* XSUM_XXH128_withSecret_testdata[630] */ + { 631, 0x0000000000000000ULL, { 0x7EB108637364B0B0ULL, 0xBBB39E672D673272ULL } }, /* XSUM_XXH128_withSecret_testdata[631] */ + { 632, 0x0000000000000000ULL, { 0x3F360E7FFE69F06CULL, 0xBE8CBD79680AEC2FULL } }, /* XSUM_XXH128_withSecret_testdata[632] */ + { 633, 0x0000000000000000ULL, { 0x1BDEB7800D9CF0BBULL, 0x103CFCED0E20282DULL } }, /* XSUM_XXH128_withSecret_testdata[633] */ + { 634, 0x0000000000000000ULL, { 0x97E39550F9F0AA25ULL, 0x21262607525F012BULL } }, /* XSUM_XXH128_withSecret_testdata[634] */ + { 635, 0x0000000000000000ULL, { 0x5D773AA3022107D0ULL, 0xA5BE1731B007553AULL } }, /* XSUM_XXH128_withSecret_testdata[635] */ + { 636, 0x0000000000000000ULL, { 0x7B3EBE0204A998D2ULL, 0x0C93DD3C24F66057ULL } }, /* XSUM_XXH128_withSecret_testdata[636] */ + { 637, 0x0000000000000000ULL, { 0x04BAA36E1EAEE3BFULL, 0x8F813BC156CC6402ULL } }, /* XSUM_XXH128_withSecret_testdata[637] */ + { 638, 0x0000000000000000ULL, { 0x64BBFD74C721AAA3ULL, 0x08A02241AB7F35DDULL } }, /* XSUM_XXH128_withSecret_testdata[638] */ + { 639, 0x0000000000000000ULL, { 0x88C492DA2815EFDDULL, 0xA3842D308D8D7D0BULL } }, /* XSUM_XXH128_withSecret_testdata[639] */ + { 640, 0x0000000000000000ULL, { 0x46679B44DB4DC036ULL, 0xCE1ED41638BEA10AULL } }, /* XSUM_XXH128_withSecret_testdata[640] */ + { 641, 0x0000000000000000ULL, { 0xC0F26241C55DB4E6ULL, 0x0E346F74E20D7F95ULL } }, /* XSUM_XXH128_withSecret_testdata[641] */ + { 642, 0x0000000000000000ULL, { 0x1B68CECD4E15423CULL, 0xEC0E8B153916E257ULL } }, /* XSUM_XXH128_withSecret_testdata[642] */ + { 643, 0x0000000000000000ULL, { 0x933C50D80ED75373ULL, 0x44A3763CF46997C5ULL } }, /* XSUM_XXH128_withSecret_testdata[643] */ + { 644, 0x0000000000000000ULL, { 0xCCCFB912FB0F29AAULL, 0x72BD068FF4123DECULL } }, /* XSUM_XXH128_withSecret_testdata[644] */ + { 645, 0x0000000000000000ULL, { 0xCC48BA3862246859ULL, 0x066450E7AA097D45ULL } }, /* XSUM_XXH128_withSecret_testdata[645] */ + { 646, 0x0000000000000000ULL, { 0x32FDBEADE5A50042ULL, 0xFC032E26FC17283AULL } }, /* XSUM_XXH128_withSecret_testdata[646] */ + { 647, 0x0000000000000000ULL, { 0x489E5E8E2F383746ULL, 0x5ABEE281806D6E3DULL } }, /* XSUM_XXH128_withSecret_testdata[647] */ + { 648, 0x0000000000000000ULL, { 0xE344D9ABFE602B22ULL, 0x3C23132601095F1DULL } }, /* XSUM_XXH128_withSecret_testdata[648] */ + { 649, 0x0000000000000000ULL, { 0x21531EF875D4FA29ULL, 0xDF52C259A1E7B570ULL } }, /* XSUM_XXH128_withSecret_testdata[649] */ + { 650, 0x0000000000000000ULL, { 0x3B59069D9A2B8135ULL, 0xAFE97D16FA562452ULL } }, /* XSUM_XXH128_withSecret_testdata[650] */ + { 651, 0x0000000000000000ULL, { 0x78AB22FE4F0FBF0FULL, 0xF65DA152A9036A43ULL } }, /* XSUM_XXH128_withSecret_testdata[651] */ + { 652, 0x0000000000000000ULL, { 0xACB8C5400199B242ULL, 0x056D98709E4B6081ULL } }, /* XSUM_XXH128_withSecret_testdata[652] */ + { 653, 0x0000000000000000ULL, { 0x71919508938CA38DULL, 0x4E4EE7899CACBF19ULL } }, /* XSUM_XXH128_withSecret_testdata[653] */ + { 654, 0x0000000000000000ULL, { 0x7633B021B9E6BCCCULL, 0x7596482A5ABD975DULL } }, /* XSUM_XXH128_withSecret_testdata[654] */ + { 655, 0x0000000000000000ULL, { 0xD087E689A0489715ULL, 0x3A25DC4460D439AEULL } }, /* XSUM_XXH128_withSecret_testdata[655] */ + { 656, 0x0000000000000000ULL, { 0x0B76872649A7A181ULL, 0x7AEBD309A8FFA826ULL } }, /* XSUM_XXH128_withSecret_testdata[656] */ + { 657, 0x0000000000000000ULL, { 0x960389D3025ED64FULL, 0x40CAF15CC4D2BAC4ULL } }, /* XSUM_XXH128_withSecret_testdata[657] */ + { 658, 0x0000000000000000ULL, { 0x5EFB5D57310F3290ULL, 0x18508B247DFE11BBULL } }, /* XSUM_XXH128_withSecret_testdata[658] */ + { 659, 0x0000000000000000ULL, { 0x4635C245BCC082F8ULL, 0x20196AD5FCD0A681ULL } }, /* XSUM_XXH128_withSecret_testdata[659] */ + { 660, 0x0000000000000000ULL, { 0x1A44D63C80336D7CULL, 0x9780F27FBC5A5321ULL } }, /* XSUM_XXH128_withSecret_testdata[660] */ + { 661, 0x0000000000000000ULL, { 0x4051FBAFDC0A9EE7ULL, 0x10C1B692E047420CULL } }, /* XSUM_XXH128_withSecret_testdata[661] */ + { 662, 0x0000000000000000ULL, { 0xEE1DC1BED1BBF340ULL, 0x2D1354A63D7563ACULL } }, /* XSUM_XXH128_withSecret_testdata[662] */ + { 663, 0x0000000000000000ULL, { 0x567732FFF10E10DDULL, 0x279CECE8ED7D94FFULL } }, /* XSUM_XXH128_withSecret_testdata[663] */ + { 664, 0x0000000000000000ULL, { 0xCA0D4F910158778CULL, 0x367D441791393114ULL } }, /* XSUM_XXH128_withSecret_testdata[664] */ + { 665, 0x0000000000000000ULL, { 0x8CB80A374551419CULL, 0x62C3E725A3451528ULL } }, /* XSUM_XXH128_withSecret_testdata[665] */ + { 666, 0x0000000000000000ULL, { 0x2EA34B279531E9A6ULL, 0x4EBE6C2B687E3A7DULL } }, /* XSUM_XXH128_withSecret_testdata[666] */ + { 667, 0x0000000000000000ULL, { 0xFC3478CF609E74BFULL, 0xC04F9A61558C953DULL } }, /* XSUM_XXH128_withSecret_testdata[667] */ + { 668, 0x0000000000000000ULL, { 0xF89675F751403E46ULL, 0x458AB6C65E3E1002ULL } }, /* XSUM_XXH128_withSecret_testdata[668] */ + { 669, 0x0000000000000000ULL, { 0x002903C1251E2536ULL, 0x4B9636A24D3D8276ULL } }, /* XSUM_XXH128_withSecret_testdata[669] */ + { 670, 0x0000000000000000ULL, { 0x48645513501B1AF2ULL, 0xFB941BBA9F1CA76DULL } }, /* XSUM_XXH128_withSecret_testdata[670] */ + { 671, 0x0000000000000000ULL, { 0x14B899EF06C56DCEULL, 0x4951E89CE78A5579ULL } }, /* XSUM_XXH128_withSecret_testdata[671] */ + { 672, 0x0000000000000000ULL, { 0xCCC02F5A3F2338A7ULL, 0xBA80C5057EB2C510ULL } }, /* XSUM_XXH128_withSecret_testdata[672] */ + { 673, 0x0000000000000000ULL, { 0x29F8CB8B53ACA0F7ULL, 0x195C6CE12196C9C4ULL } }, /* XSUM_XXH128_withSecret_testdata[673] */ + { 674, 0x0000000000000000ULL, { 0xBD15D6F15EC47EA2ULL, 0xEF9109454B90408FULL } }, /* XSUM_XXH128_withSecret_testdata[674] */ + { 675, 0x0000000000000000ULL, { 0xC89746EEF3F9AA1CULL, 0x820BA17403DBDFC9ULL } }, /* XSUM_XXH128_withSecret_testdata[675] */ + { 676, 0x0000000000000000ULL, { 0x0C5BA69608ADCA74ULL, 0x7B04F7F12AD2CBD3ULL } }, /* XSUM_XXH128_withSecret_testdata[676] */ + { 677, 0x0000000000000000ULL, { 0x80BD5048EDAE6489ULL, 0x8116EB272A1F43CAULL } }, /* XSUM_XXH128_withSecret_testdata[677] */ + { 678, 0x0000000000000000ULL, { 0xAC744213B2F7172FULL, 0xBA09B48EEF9A62CCULL } }, /* XSUM_XXH128_withSecret_testdata[678] */ + { 679, 0x0000000000000000ULL, { 0xE9B82480B309EF6EULL, 0x0614AB6BC76E1746ULL } }, /* XSUM_XXH128_withSecret_testdata[679] */ + { 680, 0x0000000000000000ULL, { 0xF83032CF5D84B833ULL, 0x252BABF4A15E9F5DULL } }, /* XSUM_XXH128_withSecret_testdata[680] */ + { 681, 0x0000000000000000ULL, { 0x08AB6FB3C3C8D24DULL, 0x66788BD49DDE6EB9ULL } }, /* XSUM_XXH128_withSecret_testdata[681] */ + { 682, 0x0000000000000000ULL, { 0xF2A2C2154E58C9B4ULL, 0x4149FB5FD176D3D9ULL } }, /* XSUM_XXH128_withSecret_testdata[682] */ + { 683, 0x0000000000000000ULL, { 0xBD8D45E6543A8F07ULL, 0xC1CD01E55C3CBEF2ULL } }, /* XSUM_XXH128_withSecret_testdata[683] */ + { 684, 0x0000000000000000ULL, { 0x02010E1040D4A75EULL, 0x8017DC8629741F05ULL } }, /* XSUM_XXH128_withSecret_testdata[684] */ + { 685, 0x0000000000000000ULL, { 0xD350EEA999B807F6ULL, 0xF56C6826B7BEACF4ULL } }, /* XSUM_XXH128_withSecret_testdata[685] */ + { 686, 0x0000000000000000ULL, { 0xF2D1DF6BFA7379B5ULL, 0x7D98FC3F9FB6BDA8ULL } }, /* XSUM_XXH128_withSecret_testdata[686] */ + { 687, 0x0000000000000000ULL, { 0xE520648ACD33CAC8ULL, 0x1743C38F880C2F70ULL } }, /* XSUM_XXH128_withSecret_testdata[687] */ + { 688, 0x0000000000000000ULL, { 0x71BDE128795B979AULL, 0xBAB99D4D96E7F066ULL } }, /* XSUM_XXH128_withSecret_testdata[688] */ + { 689, 0x0000000000000000ULL, { 0xF314701CB0A2B713ULL, 0x366A07E31EE285D6ULL } }, /* XSUM_XXH128_withSecret_testdata[689] */ + { 690, 0x0000000000000000ULL, { 0x62F19C456C28BB9EULL, 0x0A9499191EC9B12BULL } }, /* XSUM_XXH128_withSecret_testdata[690] */ + { 691, 0x0000000000000000ULL, { 0xA3517F9E43BF2893ULL, 0xF9D06E7C4C62F189ULL } }, /* XSUM_XXH128_withSecret_testdata[691] */ + { 692, 0x0000000000000000ULL, { 0xC00D3D8ABCBB60F6ULL, 0x52EE34B1E76E5A08ULL } }, /* XSUM_XXH128_withSecret_testdata[692] */ + { 693, 0x0000000000000000ULL, { 0x3AFA9A6198D94AACULL, 0xB939621D7082D5F3ULL } }, /* XSUM_XXH128_withSecret_testdata[693] */ + { 694, 0x0000000000000000ULL, { 0xB2D00E56EDEA2069ULL, 0x5E8585AA8323E3C4ULL } }, /* XSUM_XXH128_withSecret_testdata[694] */ + { 695, 0x0000000000000000ULL, { 0xC23DFF8D4D99A8EBULL, 0x6C00446348CC8924ULL } }, /* XSUM_XXH128_withSecret_testdata[695] */ + { 696, 0x0000000000000000ULL, { 0xE07B20DB4DF65B1AULL, 0x5CECFAAA3AB4F9C7ULL } }, /* XSUM_XXH128_withSecret_testdata[696] */ + { 697, 0x0000000000000000ULL, { 0x659A6E34580198E9ULL, 0x89988A1AD40C17D6ULL } }, /* XSUM_XXH128_withSecret_testdata[697] */ + { 698, 0x0000000000000000ULL, { 0x33F1B0918FCA5B70ULL, 0x72F6D8120C223986ULL } }, /* XSUM_XXH128_withSecret_testdata[698] */ + { 699, 0x0000000000000000ULL, { 0x05E35B0C5159D052ULL, 0x50C118E33D2303A7ULL } }, /* XSUM_XXH128_withSecret_testdata[699] */ + { 700, 0x0000000000000000ULL, { 0x402EA3F681BF8779ULL, 0x7E6C69E70D48D255ULL } }, /* XSUM_XXH128_withSecret_testdata[700] */ + { 701, 0x0000000000000000ULL, { 0x4EB4891136AE353AULL, 0xA2A27BA7C0B7B63EULL } }, /* XSUM_XXH128_withSecret_testdata[701] */ + { 702, 0x0000000000000000ULL, { 0xD74670F74631927FULL, 0x82B2FDDE4CC35C16ULL } }, /* XSUM_XXH128_withSecret_testdata[702] */ + { 703, 0x0000000000000000ULL, { 0x2B44C65E1573C013ULL, 0xB7516140F342A3D8ULL } }, /* XSUM_XXH128_withSecret_testdata[703] */ + { 704, 0x0000000000000000ULL, { 0xA41AB04CE9A2579FULL, 0x82CBB3C77C8636AAULL } }, /* XSUM_XXH128_withSecret_testdata[704] */ + { 705, 0x0000000000000000ULL, { 0x10976DA8C629A1ADULL, 0x43CDC29E8D60224FULL } }, /* XSUM_XXH128_withSecret_testdata[705] */ + { 706, 0x0000000000000000ULL, { 0x969DEE0B318482B7ULL, 0xA81030098E6DF0D3ULL } }, /* XSUM_XXH128_withSecret_testdata[706] */ + { 707, 0x0000000000000000ULL, { 0xBB9674583F7864EDULL, 0x1E4D17AEE864B63EULL } }, /* XSUM_XXH128_withSecret_testdata[707] */ + { 708, 0x0000000000000000ULL, { 0x8789C8266AED0667ULL, 0xDB38FA3D205211D4ULL } }, /* XSUM_XXH128_withSecret_testdata[708] */ + { 709, 0x0000000000000000ULL, { 0x48F472194E709005ULL, 0xCD4814659578FE76ULL } }, /* XSUM_XXH128_withSecret_testdata[709] */ + { 710, 0x0000000000000000ULL, { 0x2D2D3E6DAF08044FULL, 0xF50A5E4F296C7FB5ULL } }, /* XSUM_XXH128_withSecret_testdata[710] */ + { 711, 0x0000000000000000ULL, { 0xB48D7153CED1A82CULL, 0xD815A2A640871FDBULL } }, /* XSUM_XXH128_withSecret_testdata[711] */ + { 712, 0x0000000000000000ULL, { 0x24DD7E127E91C3EBULL, 0x4BCF8420A8201991ULL } }, /* XSUM_XXH128_withSecret_testdata[712] */ + { 713, 0x0000000000000000ULL, { 0x8A62D86D2097F56FULL, 0xA6DD688481E50DEAULL } }, /* XSUM_XXH128_withSecret_testdata[713] */ + { 714, 0x0000000000000000ULL, { 0x5FEB5D0B5A459D5FULL, 0xA8D2831CFAF65AB4ULL } }, /* XSUM_XXH128_withSecret_testdata[714] */ + { 715, 0x0000000000000000ULL, { 0x72DD0A1F49A494AEULL, 0x4380BDE1C0C97745ULL } }, /* XSUM_XXH128_withSecret_testdata[715] */ + { 716, 0x0000000000000000ULL, { 0x56165D4F0AE93796ULL, 0xF260E03A38B1C0EDULL } }, /* XSUM_XXH128_withSecret_testdata[716] */ + { 717, 0x0000000000000000ULL, { 0x32B453DC9A40536BULL, 0xC5788145256925BAULL } }, /* XSUM_XXH128_withSecret_testdata[717] */ + { 718, 0x0000000000000000ULL, { 0xF9FF068AD17E12D4ULL, 0xF8028D6A6BFA2EE3ULL } }, /* XSUM_XXH128_withSecret_testdata[718] */ + { 719, 0x0000000000000000ULL, { 0xD6B57914B3051F9BULL, 0xFF66A3954DC80B0FULL } }, /* XSUM_XXH128_withSecret_testdata[719] */ + { 720, 0x0000000000000000ULL, { 0xFE283636BB19F190ULL, 0x514A5DF2A1E156FAULL } }, /* XSUM_XXH128_withSecret_testdata[720] */ + { 721, 0x0000000000000000ULL, { 0x0B7D684B7D87A90AULL, 0xB4A701EB7EF350F6ULL } }, /* XSUM_XXH128_withSecret_testdata[721] */ + { 722, 0x0000000000000000ULL, { 0xF033F9A6114B31DDULL, 0xDB4EB0248DB66619ULL } }, /* XSUM_XXH128_withSecret_testdata[722] */ + { 723, 0x0000000000000000ULL, { 0x14D23747EAB0059DULL, 0x18335F2B381CC2FAULL } }, /* XSUM_XXH128_withSecret_testdata[723] */ + { 724, 0x0000000000000000ULL, { 0x53B7F60F9A96A4E2ULL, 0x26184C62D81086C5ULL } }, /* XSUM_XXH128_withSecret_testdata[724] */ + { 725, 0x0000000000000000ULL, { 0x2DC466F5A1DB6334ULL, 0xAC5ECD5BF7CC5770ULL } }, /* XSUM_XXH128_withSecret_testdata[725] */ + { 726, 0x0000000000000000ULL, { 0x9F4037D5CD604912ULL, 0x34A09E036D4D564EULL } }, /* XSUM_XXH128_withSecret_testdata[726] */ + { 727, 0x0000000000000000ULL, { 0xC6126C6BFCD9987CULL, 0x260DDB862E570F29ULL } }, /* XSUM_XXH128_withSecret_testdata[727] */ + { 728, 0x0000000000000000ULL, { 0x70C6C6077CAB17CFULL, 0xA0700B5963AFED83ULL } }, /* XSUM_XXH128_withSecret_testdata[728] */ + { 729, 0x0000000000000000ULL, { 0x40F31F9E3DC11283ULL, 0xEBE4F9994AF146B0ULL } }, /* XSUM_XXH128_withSecret_testdata[729] */ + { 730, 0x0000000000000000ULL, { 0xA76292426E4D3721ULL, 0x2FAA8206DDCA99DBULL } }, /* XSUM_XXH128_withSecret_testdata[730] */ + { 731, 0x0000000000000000ULL, { 0x9C1E2F0357FDC2ADULL, 0xCF5F3DD1955FF51CULL } }, /* XSUM_XXH128_withSecret_testdata[731] */ + { 732, 0x0000000000000000ULL, { 0x6FCA7F5216355242ULL, 0x52FD0E05B3494903ULL } }, /* XSUM_XXH128_withSecret_testdata[732] */ + { 733, 0x0000000000000000ULL, { 0xECE8CF23AE474819ULL, 0x08396F483D711EF2ULL } }, /* XSUM_XXH128_withSecret_testdata[733] */ + { 734, 0x0000000000000000ULL, { 0x38D3E24C911537B9ULL, 0xBA966212A475EC3BULL } }, /* XSUM_XXH128_withSecret_testdata[734] */ + { 735, 0x0000000000000000ULL, { 0x28B2C70FC001D1B8ULL, 0x4D855EB893C83E54ULL } }, /* XSUM_XXH128_withSecret_testdata[735] */ + { 736, 0x0000000000000000ULL, { 0xDF81596452BB7BA0ULL, 0xBD1BDD92BDBE50E3ULL } }, /* XSUM_XXH128_withSecret_testdata[736] */ + { 737, 0x0000000000000000ULL, { 0x99659599BFFF1C8CULL, 0x84EC5BDD05B55D1EULL } }, /* XSUM_XXH128_withSecret_testdata[737] */ + { 738, 0x0000000000000000ULL, { 0x9BBF45234136AE76ULL, 0x41DF6A02BED5128DULL } }, /* XSUM_XXH128_withSecret_testdata[738] */ + { 739, 0x0000000000000000ULL, { 0xDB5F6A3B2009ED23ULL, 0xF16B16D91D81ED15ULL } }, /* XSUM_XXH128_withSecret_testdata[739] */ + { 740, 0x0000000000000000ULL, { 0xF137E2C95EAFABEEULL, 0xCE91709D93C858F3ULL } }, /* XSUM_XXH128_withSecret_testdata[740] */ + { 741, 0x0000000000000000ULL, { 0x9EA9DCEA28C67283ULL, 0xD24F34A6797CB92DULL } }, /* XSUM_XXH128_withSecret_testdata[741] */ + { 742, 0x0000000000000000ULL, { 0x1D614D3FCEF1BFF2ULL, 0xD8B8ACB390CC7090ULL } }, /* XSUM_XXH128_withSecret_testdata[742] */ + { 743, 0x0000000000000000ULL, { 0x6505CDD578A13F90ULL, 0xF85FC6D862C16F94ULL } }, /* XSUM_XXH128_withSecret_testdata[743] */ + { 744, 0x0000000000000000ULL, { 0xD9BD23E78D5FDB64ULL, 0xD31D2D90AF3D46D4ULL } }, /* XSUM_XXH128_withSecret_testdata[744] */ + { 745, 0x0000000000000000ULL, { 0x16EB6BA76C662BD1ULL, 0x416A89FD427FDCA7ULL } }, /* XSUM_XXH128_withSecret_testdata[745] */ + { 746, 0x0000000000000000ULL, { 0xB1B82DA246EDC970ULL, 0x6C25142705281987ULL } }, /* XSUM_XXH128_withSecret_testdata[746] */ + { 747, 0x0000000000000000ULL, { 0xFD227BB3D813462CULL, 0x66BE3DE7AE995043ULL } }, /* XSUM_XXH128_withSecret_testdata[747] */ + { 748, 0x0000000000000000ULL, { 0xCD8E446999810C93ULL, 0xB891331E4F18D105ULL } }, /* XSUM_XXH128_withSecret_testdata[748] */ + { 749, 0x0000000000000000ULL, { 0x58BD25D1B692F670ULL, 0x9B536C92318BACACULL } }, /* XSUM_XXH128_withSecret_testdata[749] */ + { 750, 0x0000000000000000ULL, { 0xE61566F9D3ABEF07ULL, 0x74BE0AD434A6DA07ULL } }, /* XSUM_XXH128_withSecret_testdata[750] */ + { 751, 0x0000000000000000ULL, { 0x4CF9B93AE03C3DFDULL, 0xCD21C34FDD36F74EULL } }, /* XSUM_XXH128_withSecret_testdata[751] */ + { 752, 0x0000000000000000ULL, { 0xDE22C47EDEC52203ULL, 0x0C97D7AE463CB8D4ULL } }, /* XSUM_XXH128_withSecret_testdata[752] */ + { 753, 0x0000000000000000ULL, { 0x25D22BD3CFB1D0D1ULL, 0x595F8F37AA4E853EULL } }, /* XSUM_XXH128_withSecret_testdata[753] */ + { 754, 0x0000000000000000ULL, { 0x8BD7853928697AC6ULL, 0xD8CF575298CC4445ULL } }, /* XSUM_XXH128_withSecret_testdata[754] */ + { 755, 0x0000000000000000ULL, { 0x92E08C319A200940ULL, 0xAC101BD2AD03C1E7ULL } }, /* XSUM_XXH128_withSecret_testdata[755] */ + { 756, 0x0000000000000000ULL, { 0x27AD06BDEAC44267ULL, 0xD2E439FE81C01C3CULL } }, /* XSUM_XXH128_withSecret_testdata[756] */ + { 757, 0x0000000000000000ULL, { 0xA17D03CD9A632AE3ULL, 0x4A58519A0DD2FDE4ULL } }, /* XSUM_XXH128_withSecret_testdata[757] */ + { 758, 0x0000000000000000ULL, { 0xF0FBB2A73E157F15ULL, 0xEA9C7D647EB5A42DULL } }, /* XSUM_XXH128_withSecret_testdata[758] */ + { 759, 0x0000000000000000ULL, { 0xDAF9B6534BD1921EULL, 0xD0890432EAC1D257ULL } }, /* XSUM_XXH128_withSecret_testdata[759] */ + { 760, 0x0000000000000000ULL, { 0xD4D0979DCE515AD9ULL, 0x2F6E3BD9781DB696ULL } }, /* XSUM_XXH128_withSecret_testdata[760] */ + { 761, 0x0000000000000000ULL, { 0x0FB5BC6999532331ULL, 0x906CAC031A855AA1ULL } }, /* XSUM_XXH128_withSecret_testdata[761] */ + { 762, 0x0000000000000000ULL, { 0xFB9F3A8FF62149B6ULL, 0xF217EC2A8401C249ULL } }, /* XSUM_XXH128_withSecret_testdata[762] */ + { 763, 0x0000000000000000ULL, { 0xDB70A13D62BC4863ULL, 0x03EE32B0B22593ACULL } }, /* XSUM_XXH128_withSecret_testdata[763] */ + { 764, 0x0000000000000000ULL, { 0x08E6397A0C6712D1ULL, 0xF1A43388F1009D12ULL } }, /* XSUM_XXH128_withSecret_testdata[764] */ + { 765, 0x0000000000000000ULL, { 0x1D0DF8656A195DD3ULL, 0x11B9B905F8FB74ADULL } }, /* XSUM_XXH128_withSecret_testdata[765] */ + { 766, 0x0000000000000000ULL, { 0xFA9F107DAB90CF8EULL, 0x25CB81DF2111F344ULL } }, /* XSUM_XXH128_withSecret_testdata[766] */ + { 767, 0x0000000000000000ULL, { 0x35BC1AD6E243381BULL, 0x1102369B034AECF8ULL } }, /* XSUM_XXH128_withSecret_testdata[767] */ + { 768, 0x0000000000000000ULL, { 0x07A458215F1F3BFFULL, 0x88C29C408EAECC4BULL } }, /* XSUM_XXH128_withSecret_testdata[768] */ + { 769, 0x0000000000000000ULL, { 0xC57164A8296F20C5ULL, 0x4104B88C5B150A1EULL } }, /* XSUM_XXH128_withSecret_testdata[769] */ + { 770, 0x0000000000000000ULL, { 0x881B664D5A8434CEULL, 0xBB9F9DD19522C0F1ULL } }, /* XSUM_XXH128_withSecret_testdata[770] */ + { 771, 0x0000000000000000ULL, { 0xF682457611F25916ULL, 0x028F432A87E31ED9ULL } }, /* XSUM_XXH128_withSecret_testdata[771] */ + { 772, 0x0000000000000000ULL, { 0x62972939496F3809ULL, 0x366939194BA34C6BULL } }, /* XSUM_XXH128_withSecret_testdata[772] */ + { 773, 0x0000000000000000ULL, { 0x6EFA77B933151865ULL, 0x1584EEA583A2D3FDULL } }, /* XSUM_XXH128_withSecret_testdata[773] */ + { 774, 0x0000000000000000ULL, { 0x4790D7FB3353945EULL, 0xE04C61D8541D5518ULL } }, /* XSUM_XXH128_withSecret_testdata[774] */ + { 775, 0x0000000000000000ULL, { 0x2069E9A0771D6E82ULL, 0x8A9DC99F45CA491EULL } }, /* XSUM_XXH128_withSecret_testdata[775] */ + { 776, 0x0000000000000000ULL, { 0x825AB08463AC858DULL, 0x7FA23FEC183485ADULL } }, /* XSUM_XXH128_withSecret_testdata[776] */ + { 777, 0x0000000000000000ULL, { 0x0105B5B85B8A54F4ULL, 0x79401F4F076C1933ULL } }, /* XSUM_XXH128_withSecret_testdata[777] */ + { 778, 0x0000000000000000ULL, { 0x29FC19B50DDDAAFFULL, 0xE1DE27BE7BC6B00FULL } }, /* XSUM_XXH128_withSecret_testdata[778] */ + { 779, 0x0000000000000000ULL, { 0xAB7E1C73D5784D27ULL, 0x5CB1FB09E7FB3D1BULL } }, /* XSUM_XXH128_withSecret_testdata[779] */ + { 780, 0x0000000000000000ULL, { 0xD1FC314A124B6BC8ULL, 0xADA643D1D6D585E5ULL } }, /* XSUM_XXH128_withSecret_testdata[780] */ + { 781, 0x0000000000000000ULL, { 0x68D85A5E8387D9CEULL, 0x6056979A8F95507BULL } }, /* XSUM_XXH128_withSecret_testdata[781] */ + { 782, 0x0000000000000000ULL, { 0x87166ECB309BA154ULL, 0xF196C07280B8CC5CULL } }, /* XSUM_XXH128_withSecret_testdata[782] */ + { 783, 0x0000000000000000ULL, { 0xAEA1BABA0D3E45AFULL, 0x1DE1243B36059252ULL } }, /* XSUM_XXH128_withSecret_testdata[783] */ + { 784, 0x0000000000000000ULL, { 0x8D8496E2CC45886DULL, 0x18B2C3FF319B316DULL } }, /* XSUM_XXH128_withSecret_testdata[784] */ + { 785, 0x0000000000000000ULL, { 0x6C396D60F7A4F0A0ULL, 0xC920260D21362886ULL } }, /* XSUM_XXH128_withSecret_testdata[785] */ + { 786, 0x0000000000000000ULL, { 0xEFFF37679BE15016ULL, 0x4565CE9980BE63EEULL } }, /* XSUM_XXH128_withSecret_testdata[786] */ + { 787, 0x0000000000000000ULL, { 0xB7CB3C488DB2E57AULL, 0x38F4CB1BD6A39CE4ULL } }, /* XSUM_XXH128_withSecret_testdata[787] */ + { 788, 0x0000000000000000ULL, { 0x65EC1669F2D5BAF0ULL, 0xFDAFC03603AC024FULL } }, /* XSUM_XXH128_withSecret_testdata[788] */ + { 789, 0x0000000000000000ULL, { 0xABE83EBA7E7F7F70ULL, 0x5E4C737655B81981ULL } }, /* XSUM_XXH128_withSecret_testdata[789] */ + { 790, 0x0000000000000000ULL, { 0x31E138509E94325AULL, 0x1CE4FEE4D52E25F1ULL } }, /* XSUM_XXH128_withSecret_testdata[790] */ + { 791, 0x0000000000000000ULL, { 0x9318AC0BEEBCEECDULL, 0x3B940F58139AACCDULL } }, /* XSUM_XXH128_withSecret_testdata[791] */ + { 792, 0x0000000000000000ULL, { 0x9D31670328859E39ULL, 0xF0006EA4519D2DFAULL } }, /* XSUM_XXH128_withSecret_testdata[792] */ + { 793, 0x0000000000000000ULL, { 0x53F9B2069E2AE9BEULL, 0x7950B01F423E2F93ULL } }, /* XSUM_XXH128_withSecret_testdata[793] */ + { 794, 0x0000000000000000ULL, { 0x20A05E04DDFD2C43ULL, 0xA947619DB46FE218ULL } }, /* XSUM_XXH128_withSecret_testdata[794] */ + { 795, 0x0000000000000000ULL, { 0xBFBC227CEEEB4FA7ULL, 0x0594F531F794634CULL } }, /* XSUM_XXH128_withSecret_testdata[795] */ + { 796, 0x0000000000000000ULL, { 0x50A953955EE32C70ULL, 0xF6E788D1E12A34EBULL } }, /* XSUM_XXH128_withSecret_testdata[796] */ + { 797, 0x0000000000000000ULL, { 0x0F09DBD59B27961DULL, 0x739BAA1A1C655E8BULL } }, /* XSUM_XXH128_withSecret_testdata[797] */ + { 798, 0x0000000000000000ULL, { 0x3416F050549CAC60ULL, 0x691E50B656445B96ULL } }, /* XSUM_XXH128_withSecret_testdata[798] */ + { 799, 0x0000000000000000ULL, { 0x4BA29FA396DDBA98ULL, 0x98CDBE7A64BD7B4FULL } }, /* XSUM_XXH128_withSecret_testdata[799] */ + { 800, 0x0000000000000000ULL, { 0x312B72B55C7208E2ULL, 0xA0753902F66104FBULL } }, /* XSUM_XXH128_withSecret_testdata[800] */ + { 801, 0x0000000000000000ULL, { 0x3D769F14101FE7C4ULL, 0x2C7C35100FE0C72FULL } }, /* XSUM_XXH128_withSecret_testdata[801] */ + { 802, 0x0000000000000000ULL, { 0xD7250DEEB225E7D2ULL, 0x9DC242D2FFE43D8AULL } }, /* XSUM_XXH128_withSecret_testdata[802] */ + { 803, 0x0000000000000000ULL, { 0x1E39FD083C51CD90ULL, 0xEA59DF03E976A9E5ULL } }, /* XSUM_XXH128_withSecret_testdata[803] */ + { 804, 0x0000000000000000ULL, { 0xAA53D012095CE25DULL, 0x5B6B564CE8AADB73ULL } }, /* XSUM_XXH128_withSecret_testdata[804] */ + { 805, 0x0000000000000000ULL, { 0x3F8684552873B76AULL, 0x2CE5D7F3BA62F9AEULL } }, /* XSUM_XXH128_withSecret_testdata[805] */ + { 806, 0x0000000000000000ULL, { 0xFC18EA6A1819C626ULL, 0xFCD3DE268F28B8FEULL } }, /* XSUM_XXH128_withSecret_testdata[806] */ + { 807, 0x0000000000000000ULL, { 0xA5B2AF212A5D51AFULL, 0x839906CF79C39CF1ULL } }, /* XSUM_XXH128_withSecret_testdata[807] */ + { 808, 0x0000000000000000ULL, { 0xFB5512AF1C6871E2ULL, 0x59A1C7C24042902BULL } }, /* XSUM_XXH128_withSecret_testdata[808] */ + { 809, 0x0000000000000000ULL, { 0xAC41F21A3CDC474AULL, 0xA60DE8505ABDAEE3ULL } }, /* XSUM_XXH128_withSecret_testdata[809] */ + { 810, 0x0000000000000000ULL, { 0x3481CC77F6819677ULL, 0xF9FD15F54A63DCC0ULL } }, /* XSUM_XXH128_withSecret_testdata[810] */ + { 811, 0x0000000000000000ULL, { 0x6428F11429383DEBULL, 0x6E6D7BB4A81F9C00ULL } }, /* XSUM_XXH128_withSecret_testdata[811] */ + { 812, 0x0000000000000000ULL, { 0x6E3B873C32B994ADULL, 0x661C99A0EADC011DULL } }, /* XSUM_XXH128_withSecret_testdata[812] */ + { 813, 0x0000000000000000ULL, { 0xB2077E7E7D77A3F4ULL, 0x1B310F2AC218BB10ULL } }, /* XSUM_XXH128_withSecret_testdata[813] */ + { 814, 0x0000000000000000ULL, { 0xCB9EB8F368116E1BULL, 0x94C7CECF3D6807C7ULL } }, /* XSUM_XXH128_withSecret_testdata[814] */ + { 815, 0x0000000000000000ULL, { 0x7CAD7B69251A2FF9ULL, 0x1C544EE3C7F92A10ULL } }, /* XSUM_XXH128_withSecret_testdata[815] */ + { 816, 0x0000000000000000ULL, { 0x8C0BB7585B99B11FULL, 0x82AD86CCDEEDE82BULL } }, /* XSUM_XXH128_withSecret_testdata[816] */ + { 817, 0x0000000000000000ULL, { 0xEDB0F9587C7765BBULL, 0x665ADEF2AAB0629EULL } }, /* XSUM_XXH128_withSecret_testdata[817] */ + { 818, 0x0000000000000000ULL, { 0xEBD1CE0BFE187E21ULL, 0x2D6B466BBE50AC24ULL } }, /* XSUM_XXH128_withSecret_testdata[818] */ + { 819, 0x0000000000000000ULL, { 0xD72A43DA55C38C85ULL, 0x33736F4D1AD10966ULL } }, /* XSUM_XXH128_withSecret_testdata[819] */ + { 820, 0x0000000000000000ULL, { 0x2660C967923AC585ULL, 0xF47BD871E1934CC0ULL } }, /* XSUM_XXH128_withSecret_testdata[820] */ + { 821, 0x0000000000000000ULL, { 0x6D4C89FF3B625CABULL, 0x663D99BF6344C5E0ULL } }, /* XSUM_XXH128_withSecret_testdata[821] */ + { 822, 0x0000000000000000ULL, { 0x47E717BC6A8B5234ULL, 0x45C9EAEF3D175E6FULL } }, /* XSUM_XXH128_withSecret_testdata[822] */ + { 823, 0x0000000000000000ULL, { 0x1918AA521A7787C5ULL, 0x9F78AAF260E6F1EDULL } }, /* XSUM_XXH128_withSecret_testdata[823] */ + { 824, 0x0000000000000000ULL, { 0xF261C5AD66E4D972ULL, 0x6377D525A6FFC629ULL } }, /* XSUM_XXH128_withSecret_testdata[824] */ + { 825, 0x0000000000000000ULL, { 0x24C41F2E555A52CCULL, 0x8218A4D7002C09D1ULL } }, /* XSUM_XXH128_withSecret_testdata[825] */ + { 826, 0x0000000000000000ULL, { 0x2DB2A30A92401FBFULL, 0xB106E3F3089F0D57ULL } }, /* XSUM_XXH128_withSecret_testdata[826] */ + { 827, 0x0000000000000000ULL, { 0x31A31AD75A7323AFULL, 0xDCA7FFF134F49BD5ULL } }, /* XSUM_XXH128_withSecret_testdata[827] */ + { 828, 0x0000000000000000ULL, { 0xCB76753807565B45ULL, 0x0AB7335B3231F79AULL } }, /* XSUM_XXH128_withSecret_testdata[828] */ + { 829, 0x0000000000000000ULL, { 0x17935EBAF156B066ULL, 0x96D294157BDE8286ULL } }, /* XSUM_XXH128_withSecret_testdata[829] */ + { 830, 0x0000000000000000ULL, { 0x8AAA1B83562FDEB6ULL, 0x84916A7D38C068EEULL } }, /* XSUM_XXH128_withSecret_testdata[830] */ + { 831, 0x0000000000000000ULL, { 0xE5C95A762CD150AEULL, 0xCAFCCDBCC3D63AD9ULL } }, /* XSUM_XXH128_withSecret_testdata[831] */ + { 832, 0x0000000000000000ULL, { 0x2617FC698E497A38ULL, 0xFD5DB43393880DADULL } }, /* XSUM_XXH128_withSecret_testdata[832] */ + { 833, 0x0000000000000000ULL, { 0x144F4AAA69C19F15ULL, 0xE0F32F08C6298648ULL } }, /* XSUM_XXH128_withSecret_testdata[833] */ + { 834, 0x0000000000000000ULL, { 0x99E7A94392A4EE2EULL, 0xA259DA070B30582BULL } }, /* XSUM_XXH128_withSecret_testdata[834] */ + { 835, 0x0000000000000000ULL, { 0xFB94A6E9B4643FE1ULL, 0xD379AF64BF15D4D1ULL } }, /* XSUM_XXH128_withSecret_testdata[835] */ + { 836, 0x0000000000000000ULL, { 0x2EEF25CD166EB0CFULL, 0xC2B2B0E2C938CF50ULL } }, /* XSUM_XXH128_withSecret_testdata[836] */ + { 837, 0x0000000000000000ULL, { 0xFE9B761CAA13B66EULL, 0xE12D7E61F45B45CEULL } }, /* XSUM_XXH128_withSecret_testdata[837] */ + { 838, 0x0000000000000000ULL, { 0x57B7874938141AAEULL, 0xC6674A4AB39FA237ULL } }, /* XSUM_XXH128_withSecret_testdata[838] */ + { 839, 0x0000000000000000ULL, { 0xF79088ED2B43C60AULL, 0x192A7299D8F0645BULL } }, /* XSUM_XXH128_withSecret_testdata[839] */ + { 840, 0x0000000000000000ULL, { 0x3AD79A82E659F12BULL, 0x9302FDB61A8F7177ULL } }, /* XSUM_XXH128_withSecret_testdata[840] */ + { 841, 0x0000000000000000ULL, { 0x0DEC17391585DFDEULL, 0xABBE93722A983821ULL } }, /* XSUM_XXH128_withSecret_testdata[841] */ + { 842, 0x0000000000000000ULL, { 0x66299809E567E7F0ULL, 0x21509C5B830082C4ULL } }, /* XSUM_XXH128_withSecret_testdata[842] */ + { 843, 0x0000000000000000ULL, { 0x752AACD314E756C6ULL, 0x8DD5098BB5684969ULL } }, /* XSUM_XXH128_withSecret_testdata[843] */ + { 844, 0x0000000000000000ULL, { 0x1AE014F08EBE2C6CULL, 0x355D8A670A6BA5B4ULL } }, /* XSUM_XXH128_withSecret_testdata[844] */ + { 845, 0x0000000000000000ULL, { 0xA9554E9F9E4394EFULL, 0x5914E1C283B1FD55ULL } }, /* XSUM_XXH128_withSecret_testdata[845] */ + { 846, 0x0000000000000000ULL, { 0xF1A16B2C2F7DED2DULL, 0x9F13600B1E8E8439ULL } }, /* XSUM_XXH128_withSecret_testdata[846] */ + { 847, 0x0000000000000000ULL, { 0x8AD8E776B573CC65ULL, 0x8945C756681DEA24ULL } }, /* XSUM_XXH128_withSecret_testdata[847] */ + { 848, 0x0000000000000000ULL, { 0x28486CB33028023BULL, 0x6CD462A3AC063CD2ULL } }, /* XSUM_XXH128_withSecret_testdata[848] */ + { 849, 0x0000000000000000ULL, { 0xB677C580F80CAA74ULL, 0x6DD34832C49C7053ULL } }, /* XSUM_XXH128_withSecret_testdata[849] */ + { 850, 0x0000000000000000ULL, { 0x6563F9447F2DFAD7ULL, 0x10556B9B9B9A68E7ULL } }, /* XSUM_XXH128_withSecret_testdata[850] */ + { 851, 0x0000000000000000ULL, { 0x3F959D533722594AULL, 0xEBED9640D1698021ULL } }, /* XSUM_XXH128_withSecret_testdata[851] */ + { 852, 0x0000000000000000ULL, { 0x4FECD02A4281A4DEULL, 0x4CF55C323AABC84EULL } }, /* XSUM_XXH128_withSecret_testdata[852] */ + { 853, 0x0000000000000000ULL, { 0xF80BFC68BAC87FE6ULL, 0x15165D9B273A17FAULL } }, /* XSUM_XXH128_withSecret_testdata[853] */ + { 854, 0x0000000000000000ULL, { 0xADBB99110E3DC5C8ULL, 0x3F674B885A738B24ULL } }, /* XSUM_XXH128_withSecret_testdata[854] */ + { 855, 0x0000000000000000ULL, { 0x1624DB70FABCF1BBULL, 0xD3A2219B58F2F930ULL } }, /* XSUM_XXH128_withSecret_testdata[855] */ + { 856, 0x0000000000000000ULL, { 0x47D080213B5F6B7AULL, 0xEFDB367F4947287BULL } }, /* XSUM_XXH128_withSecret_testdata[856] */ + { 857, 0x0000000000000000ULL, { 0x55E53C96F067ABD1ULL, 0xF6A116167B4837F8ULL } }, /* XSUM_XXH128_withSecret_testdata[857] */ + { 858, 0x0000000000000000ULL, { 0x96E4DA063B4BCD11ULL, 0xA1EE60AFB99FD1BDULL } }, /* XSUM_XXH128_withSecret_testdata[858] */ + { 859, 0x0000000000000000ULL, { 0xF0DDE3E2E3F524B0ULL, 0x932F25703C4694F3ULL } }, /* XSUM_XXH128_withSecret_testdata[859] */ + { 860, 0x0000000000000000ULL, { 0xBA387AEE58213E3AULL, 0x7A30B1B328223294ULL } }, /* XSUM_XXH128_withSecret_testdata[860] */ + { 861, 0x0000000000000000ULL, { 0xE0802DAB34A6D5A6ULL, 0x18F97AE555BC156DULL } }, /* XSUM_XXH128_withSecret_testdata[861] */ + { 862, 0x0000000000000000ULL, { 0x83D157DA4B3251B9ULL, 0xCEF6220F6F9F9FABULL } }, /* XSUM_XXH128_withSecret_testdata[862] */ + { 863, 0x0000000000000000ULL, { 0x0EB879E58C37A9BEULL, 0x85BDBDE1A8C6393DULL } }, /* XSUM_XXH128_withSecret_testdata[863] */ + { 864, 0x0000000000000000ULL, { 0x259A239831DF6B15ULL, 0x1FBE50777A2A725AULL } }, /* XSUM_XXH128_withSecret_testdata[864] */ + { 865, 0x0000000000000000ULL, { 0x27C4E3710EB7CFF6ULL, 0xB9995A90E881B862ULL } }, /* XSUM_XXH128_withSecret_testdata[865] */ + { 866, 0x0000000000000000ULL, { 0xA026856BC1006D57ULL, 0x37810F0CD7634D8BULL } }, /* XSUM_XXH128_withSecret_testdata[866] */ + { 867, 0x0000000000000000ULL, { 0x76D72DB18A5872ABULL, 0x6169FAC4553C2DF8ULL } }, /* XSUM_XXH128_withSecret_testdata[867] */ + { 868, 0x0000000000000000ULL, { 0x0667DC0A5FF702CCULL, 0xDBE44492E2E97DC1ULL } }, /* XSUM_XXH128_withSecret_testdata[868] */ + { 869, 0x0000000000000000ULL, { 0xCB3D8D142F846DC8ULL, 0x8D23FF292B8C2C36ULL } }, /* XSUM_XXH128_withSecret_testdata[869] */ + { 870, 0x0000000000000000ULL, { 0x614791183BD261C4ULL, 0x032E9AD2EB7D984BULL } }, /* XSUM_XXH128_withSecret_testdata[870] */ + { 871, 0x0000000000000000ULL, { 0xE6F68A1EB569851CULL, 0x4534CC104E638889ULL } }, /* XSUM_XXH128_withSecret_testdata[871] */ + { 872, 0x0000000000000000ULL, { 0x13B16E7916DE86A6ULL, 0x078D92FCF6BC41A0ULL } }, /* XSUM_XXH128_withSecret_testdata[872] */ + { 873, 0x0000000000000000ULL, { 0x312ACD8E47D79F6AULL, 0x420624E678EE418AULL } }, /* XSUM_XXH128_withSecret_testdata[873] */ + { 874, 0x0000000000000000ULL, { 0x6581DFD36267EC93ULL, 0xFB7FF30850DD49D3ULL } }, /* XSUM_XXH128_withSecret_testdata[874] */ + { 875, 0x0000000000000000ULL, { 0x112D90A3A2790D2EULL, 0x2EC6A493A5BA1053ULL } }, /* XSUM_XXH128_withSecret_testdata[875] */ + { 876, 0x0000000000000000ULL, { 0x1474F4016B9F64A4ULL, 0x92E5DF85EA73693CULL } }, /* XSUM_XXH128_withSecret_testdata[876] */ + { 877, 0x0000000000000000ULL, { 0xF652765BC35398AFULL, 0xB89823915CA8851DULL } }, /* XSUM_XXH128_withSecret_testdata[877] */ + { 878, 0x0000000000000000ULL, { 0xCF4D914D0F5C6D82ULL, 0x7212312B2EEE5889ULL } }, /* XSUM_XXH128_withSecret_testdata[878] */ + { 879, 0x0000000000000000ULL, { 0x4F9849DA1E433123ULL, 0xF44A80C478611C86ULL } }, /* XSUM_XXH128_withSecret_testdata[879] */ + { 880, 0x0000000000000000ULL, { 0x552EFFA215B076E6ULL, 0x8E2A75789D1F954CULL } }, /* XSUM_XXH128_withSecret_testdata[880] */ + { 881, 0x0000000000000000ULL, { 0x70550BE650B85D78ULL, 0x495AC05C87AC8283ULL } }, /* XSUM_XXH128_withSecret_testdata[881] */ + { 882, 0x0000000000000000ULL, { 0xA051A52D4FCF1196ULL, 0xBAF6653287A7D2B6ULL } }, /* XSUM_XXH128_withSecret_testdata[882] */ + { 883, 0x0000000000000000ULL, { 0x89A09140CFC09BEFULL, 0xD6D401C846E3ABC6ULL } }, /* XSUM_XXH128_withSecret_testdata[883] */ + { 884, 0x0000000000000000ULL, { 0xFABC1A2C1EEF0D88ULL, 0x84C348C6A7475454ULL } }, /* XSUM_XXH128_withSecret_testdata[884] */ + { 885, 0x0000000000000000ULL, { 0xEDDD143E28EC9E3BULL, 0xCBB1A753FF8FAB0BULL } }, /* XSUM_XXH128_withSecret_testdata[885] */ + { 886, 0x0000000000000000ULL, { 0xA0F647AE17840307ULL, 0xEB92E4F250F211DBULL } }, /* XSUM_XXH128_withSecret_testdata[886] */ + { 887, 0x0000000000000000ULL, { 0x66D27AF5585FBF7AULL, 0xBC4ECA716E90E56BULL } }, /* XSUM_XXH128_withSecret_testdata[887] */ + { 888, 0x0000000000000000ULL, { 0x769CD692AE051FD5ULL, 0x95FEC2A8C0086A84ULL } }, /* XSUM_XXH128_withSecret_testdata[888] */ + { 889, 0x0000000000000000ULL, { 0x43E34DE3A0E1AC4FULL, 0xC6FA6E045AC55FEAULL } }, /* XSUM_XXH128_withSecret_testdata[889] */ + { 890, 0x0000000000000000ULL, { 0x842B3ADDF6124DAFULL, 0x88CE3A7F8A225BCAULL } }, /* XSUM_XXH128_withSecret_testdata[890] */ + { 891, 0x0000000000000000ULL, { 0x12B41F63EDF27FA4ULL, 0x82524E1EA5459EF4ULL } }, /* XSUM_XXH128_withSecret_testdata[891] */ + { 892, 0x0000000000000000ULL, { 0x7D7E4308983537F5ULL, 0x40AD0E097D47D4BFULL } }, /* XSUM_XXH128_withSecret_testdata[892] */ + { 893, 0x0000000000000000ULL, { 0x02DF99A1CFBC1485ULL, 0x46CEA15D278A7869ULL } }, /* XSUM_XXH128_withSecret_testdata[893] */ + { 894, 0x0000000000000000ULL, { 0xE69C8725E90BB200ULL, 0x2437061CB6D0A210ULL } }, /* XSUM_XXH128_withSecret_testdata[894] */ + { 895, 0x0000000000000000ULL, { 0x797F9C68E051A294ULL, 0x9181A2B2776996A8ULL } }, /* XSUM_XXH128_withSecret_testdata[895] */ + { 896, 0x0000000000000000ULL, { 0x0C4795BEAB61DA26ULL, 0x2475EFE5EB10A72AULL } }, /* XSUM_XXH128_withSecret_testdata[896] */ + { 897, 0x0000000000000000ULL, { 0x9494865A708F647BULL, 0xF11864566BF37F06ULL } }, /* XSUM_XXH128_withSecret_testdata[897] */ + { 898, 0x0000000000000000ULL, { 0xFB3CC76B89A8D3F9ULL, 0x2E2D0F370487CA8FULL } }, /* XSUM_XXH128_withSecret_testdata[898] */ + { 899, 0x0000000000000000ULL, { 0x402DA935DC5F53C8ULL, 0xFD7B8D2C94C773B3ULL } }, /* XSUM_XXH128_withSecret_testdata[899] */ + { 900, 0x0000000000000000ULL, { 0xD7C585B83D7F950CULL, 0x248664C0BB8F4EC2ULL } }, /* XSUM_XXH128_withSecret_testdata[900] */ + { 901, 0x0000000000000000ULL, { 0x7928B820B60BD25DULL, 0x2D652E649EDF3D01ULL } }, /* XSUM_XXH128_withSecret_testdata[901] */ + { 902, 0x0000000000000000ULL, { 0x2AC0887A2885FD81ULL, 0xBEC17C74AFB20E6AULL } }, /* XSUM_XXH128_withSecret_testdata[902] */ + { 903, 0x0000000000000000ULL, { 0x71E1F757232B61AEULL, 0xEA0D5580FE4F7DC6ULL } }, /* XSUM_XXH128_withSecret_testdata[903] */ + { 904, 0x0000000000000000ULL, { 0x13C7D74D13E2BB04ULL, 0xC3A5C8B78EAA1508ULL } }, /* XSUM_XXH128_withSecret_testdata[904] */ + { 905, 0x0000000000000000ULL, { 0xDDE0FFB62C3024E1ULL, 0xB9BCA903DE30A424ULL } }, /* XSUM_XXH128_withSecret_testdata[905] */ + { 906, 0x0000000000000000ULL, { 0x4CC6D1E08062805CULL, 0xBEF629E6971BED81ULL } }, /* XSUM_XXH128_withSecret_testdata[906] */ + { 907, 0x0000000000000000ULL, { 0x1201BD7C8B743A35ULL, 0xB2D1C6A262D33E75ULL } }, /* XSUM_XXH128_withSecret_testdata[907] */ + { 908, 0x0000000000000000ULL, { 0xF1BEE9939AEC969CULL, 0x2B08C3A7EA6C4FA4ULL } }, /* XSUM_XXH128_withSecret_testdata[908] */ + { 909, 0x0000000000000000ULL, { 0x98A7334BC1F88F07ULL, 0xE114C84B9EB55567ULL } }, /* XSUM_XXH128_withSecret_testdata[909] */ + { 910, 0x0000000000000000ULL, { 0xF626D98D61D57409ULL, 0x0A479B2EF9466509ULL } }, /* XSUM_XXH128_withSecret_testdata[910] */ + { 911, 0x0000000000000000ULL, { 0xE2EFC99122D59592ULL, 0x788CB7991823BD2DULL } }, /* XSUM_XXH128_withSecret_testdata[911] */ + { 912, 0x0000000000000000ULL, { 0x50D2225C2BB125DBULL, 0x102B32CCB00C23CDULL } }, /* XSUM_XXH128_withSecret_testdata[912] */ + { 913, 0x0000000000000000ULL, { 0x4B640FC853FA2799ULL, 0x76527AF3C5006398ULL } }, /* XSUM_XXH128_withSecret_testdata[913] */ + { 914, 0x0000000000000000ULL, { 0x9C14CB5B5514D1FDULL, 0xE2DFC404B7FF330EULL } }, /* XSUM_XXH128_withSecret_testdata[914] */ + { 915, 0x0000000000000000ULL, { 0xB02845F8F73EDCB8ULL, 0x1FE07E2CB0C7CF0EULL } }, /* XSUM_XXH128_withSecret_testdata[915] */ + { 916, 0x0000000000000000ULL, { 0xF6589946632A567BULL, 0x82E3F9260A4F1F6CULL } }, /* XSUM_XXH128_withSecret_testdata[916] */ + { 917, 0x0000000000000000ULL, { 0xBA65AC9153533E7BULL, 0x0B2DE93B054FBEA8ULL } }, /* XSUM_XXH128_withSecret_testdata[917] */ + { 918, 0x0000000000000000ULL, { 0xE4BF20D9EC0F91C8ULL, 0x57554AFC04EBF3AAULL } }, /* XSUM_XXH128_withSecret_testdata[918] */ + { 919, 0x0000000000000000ULL, { 0x72E15B4C5522B974ULL, 0xEC7C0FDD7E38DB62ULL } }, /* XSUM_XXH128_withSecret_testdata[919] */ + { 920, 0x0000000000000000ULL, { 0x704A31FF18C45558ULL, 0x2AAF444CA12B79D7ULL } }, /* XSUM_XXH128_withSecret_testdata[920] */ + { 921, 0x0000000000000000ULL, { 0x3A3526958FA7690AULL, 0x618E9BA03A458B0CULL } }, /* XSUM_XXH128_withSecret_testdata[921] */ + { 922, 0x0000000000000000ULL, { 0x95094FB8FB21C56DULL, 0x476B6C9A543E1DC4ULL } }, /* XSUM_XXH128_withSecret_testdata[922] */ + { 923, 0x0000000000000000ULL, { 0x258F7A3E80BF68E9ULL, 0xD066B8E54BAE515BULL } }, /* XSUM_XXH128_withSecret_testdata[923] */ + { 924, 0x0000000000000000ULL, { 0x9D1AEEDFBAF6C740ULL, 0x57536C801A5CB760ULL } }, /* XSUM_XXH128_withSecret_testdata[924] */ + { 925, 0x0000000000000000ULL, { 0x988BD124E6723286ULL, 0x6BE01DD7BD2C84B5ULL } }, /* XSUM_XXH128_withSecret_testdata[925] */ + { 926, 0x0000000000000000ULL, { 0x4660899B351D8A0CULL, 0xFD89177E0223F3DEULL } }, /* XSUM_XXH128_withSecret_testdata[926] */ + { 927, 0x0000000000000000ULL, { 0xBEF8BD2F821B14E2ULL, 0xD90B6769F68E9650ULL } }, /* XSUM_XXH128_withSecret_testdata[927] */ + { 928, 0x0000000000000000ULL, { 0x2EA82BC6D5D6721EULL, 0x569B08E632FEAA26ULL } }, /* XSUM_XXH128_withSecret_testdata[928] */ + { 929, 0x0000000000000000ULL, { 0xD329F24849343C53ULL, 0xE7604F28BB244243ULL } }, /* XSUM_XXH128_withSecret_testdata[929] */ + { 930, 0x0000000000000000ULL, { 0x0F9B2C3C3AE9B86EULL, 0x3025FFB23D1511D2ULL } }, /* XSUM_XXH128_withSecret_testdata[930] */ + { 931, 0x0000000000000000ULL, { 0xFBE3F4EC0CB70530ULL, 0xB64A954B003C2007ULL } }, /* XSUM_XXH128_withSecret_testdata[931] */ + { 932, 0x0000000000000000ULL, { 0x59761EF490E2AF06ULL, 0x6662CF82D19AECEEULL } }, /* XSUM_XXH128_withSecret_testdata[932] */ + { 933, 0x0000000000000000ULL, { 0xA4738BF536A69E5BULL, 0xAA4CBFE4874FC682ULL } }, /* XSUM_XXH128_withSecret_testdata[933] */ + { 934, 0x0000000000000000ULL, { 0x911A75070974DA15ULL, 0x8A420DAE4B6A205FULL } }, /* XSUM_XXH128_withSecret_testdata[934] */ + { 935, 0x0000000000000000ULL, { 0x67D5A83C1BE32956ULL, 0x2ED86326081D69A7ULL } }, /* XSUM_XXH128_withSecret_testdata[935] */ + { 936, 0x0000000000000000ULL, { 0x4A7A843C9FFDD50BULL, 0xEF4A317A2E2688BCULL } }, /* XSUM_XXH128_withSecret_testdata[936] */ + { 937, 0x0000000000000000ULL, { 0x416AAB70DC9D34DBULL, 0xDCF983EF06A036A3ULL } }, /* XSUM_XXH128_withSecret_testdata[937] */ + { 938, 0x0000000000000000ULL, { 0xD92D5D02BDEA9DA2ULL, 0x3BC6B7061E293B58ULL } }, /* XSUM_XXH128_withSecret_testdata[938] */ + { 939, 0x0000000000000000ULL, { 0x30F6FAC94051EE6EULL, 0x09D7BDBF3988579BULL } }, /* XSUM_XXH128_withSecret_testdata[939] */ + { 940, 0x0000000000000000ULL, { 0x997D4B57DBBA2F39ULL, 0xFF4A72E7839270D6ULL } }, /* XSUM_XXH128_withSecret_testdata[940] */ + { 941, 0x0000000000000000ULL, { 0x70F502215BDFFDCEULL, 0x24BC8EFCD782AA6BULL } }, /* XSUM_XXH128_withSecret_testdata[941] */ + { 942, 0x0000000000000000ULL, { 0xE7C5531B2F7AE75EULL, 0xF69FD25F0B5B4CA1ULL } }, /* XSUM_XXH128_withSecret_testdata[942] */ + { 943, 0x0000000000000000ULL, { 0xCF17531240C40A90ULL, 0xDCCEA8E15471FAC6ULL } }, /* XSUM_XXH128_withSecret_testdata[943] */ + { 944, 0x0000000000000000ULL, { 0xE750D09A90109D46ULL, 0x10CD0F389039938EULL } }, /* XSUM_XXH128_withSecret_testdata[944] */ + { 945, 0x0000000000000000ULL, { 0x94D0792E4B037609ULL, 0x352AC45AE36D34D4ULL } }, /* XSUM_XXH128_withSecret_testdata[945] */ + { 946, 0x0000000000000000ULL, { 0xC3C7213AA478A475ULL, 0xF7D1E0F67E9D4141ULL } }, /* XSUM_XXH128_withSecret_testdata[946] */ + { 947, 0x0000000000000000ULL, { 0xEB17825A5AED3468ULL, 0x841F079EE345C626ULL } }, /* XSUM_XXH128_withSecret_testdata[947] */ + { 948, 0x0000000000000000ULL, { 0x1721AA31972F81E0ULL, 0x9DC7A17B10864140ULL } }, /* XSUM_XXH128_withSecret_testdata[948] */ + { 949, 0x0000000000000000ULL, { 0x0D05BBE4C710F623ULL, 0x60E45B37356F648CULL } }, /* XSUM_XXH128_withSecret_testdata[949] */ + { 950, 0x0000000000000000ULL, { 0x2FB6E7D26424E839ULL, 0x781DDAFDDD724DF9ULL } }, /* XSUM_XXH128_withSecret_testdata[950] */ + { 951, 0x0000000000000000ULL, { 0xC4F258AC43633CB3ULL, 0x294411E1AB74F4F8ULL } }, /* XSUM_XXH128_withSecret_testdata[951] */ + { 952, 0x0000000000000000ULL, { 0x42CE2EA60A969C39ULL, 0x3888CDB1430B0336ULL } }, /* XSUM_XXH128_withSecret_testdata[952] */ + { 953, 0x0000000000000000ULL, { 0x1A1D5C18C52D900FULL, 0x8369F7625B9BC621ULL } }, /* XSUM_XXH128_withSecret_testdata[953] */ + { 954, 0x0000000000000000ULL, { 0x7B9C17FE518ED92BULL, 0x0EFFA214EA3E99DFULL } }, /* XSUM_XXH128_withSecret_testdata[954] */ + { 955, 0x0000000000000000ULL, { 0x72F37756AC8B4A0DULL, 0xC12F01C685A10F20ULL } }, /* XSUM_XXH128_withSecret_testdata[955] */ + { 956, 0x0000000000000000ULL, { 0xB67130D3C149B7DCULL, 0x8FB75C90FAC78CB5ULL } }, /* XSUM_XXH128_withSecret_testdata[956] */ + { 957, 0x0000000000000000ULL, { 0x2F8716437A5DE917ULL, 0xA5A5E451911A3011ULL } }, /* XSUM_XXH128_withSecret_testdata[957] */ + { 958, 0x0000000000000000ULL, { 0xBC12F20F3357341FULL, 0x911EBF4D817E6D9FULL } }, /* XSUM_XXH128_withSecret_testdata[958] */ + { 959, 0x0000000000000000ULL, { 0xBBE849D3D9DC3A49ULL, 0xCB0B4637D3BE2FE4ULL } }, /* XSUM_XXH128_withSecret_testdata[959] */ + { 960, 0x0000000000000000ULL, { 0x7D81FB44A2BEFC42ULL, 0x9230640AA9582B6FULL } }, /* XSUM_XXH128_withSecret_testdata[960] */ + { 961, 0x0000000000000000ULL, { 0xAA83EC5BDF669D48ULL, 0xAB154E9205E781B6ULL } }, /* XSUM_XXH128_withSecret_testdata[961] */ + { 962, 0x0000000000000000ULL, { 0xE52EB07AB85F6463ULL, 0xF93BCAEFCD6DBE7BULL } }, /* XSUM_XXH128_withSecret_testdata[962] */ + { 963, 0x0000000000000000ULL, { 0xD3CBF2232C7F1596ULL, 0x64358B67921A63A9ULL } }, /* XSUM_XXH128_withSecret_testdata[963] */ + { 964, 0x0000000000000000ULL, { 0x834ABC25322F6158ULL, 0xF0127263906586B5ULL } }, /* XSUM_XXH128_withSecret_testdata[964] */ + { 965, 0x0000000000000000ULL, { 0x4DABAB40E70A6CF9ULL, 0x7901CA5F3158D0E8ULL } }, /* XSUM_XXH128_withSecret_testdata[965] */ + { 966, 0x0000000000000000ULL, { 0x263B7CC10D692218ULL, 0xFE7C3E47876A7EA0ULL } }, /* XSUM_XXH128_withSecret_testdata[966] */ + { 967, 0x0000000000000000ULL, { 0x6D7CB408F6B1A793ULL, 0xE02C3CE10CEFB442ULL } }, /* XSUM_XXH128_withSecret_testdata[967] */ + { 968, 0x0000000000000000ULL, { 0x7D8C4C23E27244A7ULL, 0x6D584AF20176D18BULL } }, /* XSUM_XXH128_withSecret_testdata[968] */ + { 969, 0x0000000000000000ULL, { 0xC7990759FE3760E7ULL, 0x7DDBA7EE0DF02FB4ULL } }, /* XSUM_XXH128_withSecret_testdata[969] */ + { 970, 0x0000000000000000ULL, { 0x771B0B4D873DF382ULL, 0x6FAC2D57845520A0ULL } }, /* XSUM_XXH128_withSecret_testdata[970] */ + { 971, 0x0000000000000000ULL, { 0x2AF4ACD0FED451D2ULL, 0xE70CDEC361B2F851ULL } }, /* XSUM_XXH128_withSecret_testdata[971] */ + { 972, 0x0000000000000000ULL, { 0x60D3E93119ED11E8ULL, 0xA4C50EED5A92E4C5ULL } }, /* XSUM_XXH128_withSecret_testdata[972] */ + { 973, 0x0000000000000000ULL, { 0xEF6877FD70853DFDULL, 0x1D827D39DFD4D2EBULL } }, /* XSUM_XXH128_withSecret_testdata[973] */ + { 974, 0x0000000000000000ULL, { 0x37CDCEC9C8C4437DULL, 0x9B348AF6876CED78ULL } }, /* XSUM_XXH128_withSecret_testdata[974] */ + { 975, 0x0000000000000000ULL, { 0xED986901D8854950ULL, 0x7D85C9EE3D0F719FULL } }, /* XSUM_XXH128_withSecret_testdata[975] */ + { 976, 0x0000000000000000ULL, { 0xB0DF387E07094087ULL, 0x95C5A217C236E99DULL } }, /* XSUM_XXH128_withSecret_testdata[976] */ + { 977, 0x0000000000000000ULL, { 0xB47AF4DE8A46B7D7ULL, 0xE5C3AB15B7172F1FULL } }, /* XSUM_XXH128_withSecret_testdata[977] */ + { 978, 0x0000000000000000ULL, { 0xD3F33C98F2A94C64ULL, 0x685149C9C70660A0ULL } }, /* XSUM_XXH128_withSecret_testdata[978] */ + { 979, 0x0000000000000000ULL, { 0xED647406557A1D3FULL, 0x31B916776B8177A2ULL } }, /* XSUM_XXH128_withSecret_testdata[979] */ + { 980, 0x0000000000000000ULL, { 0xCFB755BDA6749186ULL, 0x75D04CEAF729CB76ULL } }, /* XSUM_XXH128_withSecret_testdata[980] */ + { 981, 0x0000000000000000ULL, { 0xD3420936F2F33C50ULL, 0x37CD3C0092B0049AULL } }, /* XSUM_XXH128_withSecret_testdata[981] */ + { 982, 0x0000000000000000ULL, { 0x5F89BBB695A43F39ULL, 0xFF2E02015A96A97FULL } }, /* XSUM_XXH128_withSecret_testdata[982] */ + { 983, 0x0000000000000000ULL, { 0xDE6398E9B9B34199ULL, 0xDEE33BDADF168A49ULL } }, /* XSUM_XXH128_withSecret_testdata[983] */ + { 984, 0x0000000000000000ULL, { 0xEC02BAC4581D84E1ULL, 0xD2F675D3FE0629C0ULL } }, /* XSUM_XXH128_withSecret_testdata[984] */ + { 985, 0x0000000000000000ULL, { 0xE02AFC42D407D47EULL, 0x2FD111B010966D7DULL } }, /* XSUM_XXH128_withSecret_testdata[985] */ + { 986, 0x0000000000000000ULL, { 0x3E887C56DBED03C3ULL, 0x4E3BC8784DD7AAADULL } }, /* XSUM_XXH128_withSecret_testdata[986] */ + { 987, 0x0000000000000000ULL, { 0x0F3D52819622EB53ULL, 0x78A1691A0CBBA9C7ULL } }, /* XSUM_XXH128_withSecret_testdata[987] */ + { 988, 0x0000000000000000ULL, { 0x8B0C2867BE4548B7ULL, 0xBE0F97ACF3780ADEULL } }, /* XSUM_XXH128_withSecret_testdata[988] */ + { 989, 0x0000000000000000ULL, { 0x4DA94C69601A58AAULL, 0xC72F7F5CD72FA076ULL } }, /* XSUM_XXH128_withSecret_testdata[989] */ + { 990, 0x0000000000000000ULL, { 0x6C097F10DF3E086DULL, 0xD986318501409DA5ULL } }, /* XSUM_XXH128_withSecret_testdata[990] */ + { 991, 0x0000000000000000ULL, { 0xDA0B8C6098699C76ULL, 0xE3AF8E6172D4708CULL } }, /* XSUM_XXH128_withSecret_testdata[991] */ + { 992, 0x0000000000000000ULL, { 0x21FBB67E7817E5DDULL, 0x1E9E11F4D5B36351ULL } }, /* XSUM_XXH128_withSecret_testdata[992] */ + { 993, 0x0000000000000000ULL, { 0x4B3798B3588D48AFULL, 0x25A6B53249C58EACULL } }, /* XSUM_XXH128_withSecret_testdata[993] */ + { 994, 0x0000000000000000ULL, { 0xD5A9173C1BF8A85DULL, 0xFE0DE455F7C6A60CULL } }, /* XSUM_XXH128_withSecret_testdata[994] */ + { 995, 0x0000000000000000ULL, { 0x9B507C3291E239BAULL, 0x401CE73C4CF23637ULL } }, /* XSUM_XXH128_withSecret_testdata[995] */ + { 996, 0x0000000000000000ULL, { 0x068CDAA12DD978CCULL, 0xC2182A08C6CDE7F0ULL } }, /* XSUM_XXH128_withSecret_testdata[996] */ + { 997, 0x0000000000000000ULL, { 0xD8E39798B8B939F9ULL, 0xD57E8588F9D7DD1EULL } }, /* XSUM_XXH128_withSecret_testdata[997] */ + { 998, 0x0000000000000000ULL, { 0x997F71C88F791884ULL, 0x40A44BF03F1BE6ADULL } }, /* XSUM_XXH128_withSecret_testdata[998] */ + { 999, 0x0000000000000000ULL, { 0xC9A7479FAF1BCB96ULL, 0xE994D9EB4867EAFFULL } }, /* XSUM_XXH128_withSecret_testdata[999] */ + { 1000, 0x0000000000000000ULL, { 0xBDB88F3E40D1FF3AULL, 0x226416E1B1D1F884ULL } }, /* XSUM_XXH128_withSecret_testdata[1000] */ + { 1001, 0x0000000000000000ULL, { 0xD23F888FDE1DE9A2ULL, 0xBD06A93E3F95ED75ULL } }, /* XSUM_XXH128_withSecret_testdata[1001] */ + { 1002, 0x0000000000000000ULL, { 0x1C2F94B7DC6A27BCULL, 0x6AF7706FD6F4636CULL } }, /* XSUM_XXH128_withSecret_testdata[1002] */ + { 1003, 0x0000000000000000ULL, { 0xAA5B5CCC0548887EULL, 0x3EE677331F0FE599ULL } }, /* XSUM_XXH128_withSecret_testdata[1003] */ + { 1004, 0x0000000000000000ULL, { 0x679D5AABC8FD60A3ULL, 0x9435AC046DDBBEF9ULL } }, /* XSUM_XXH128_withSecret_testdata[1004] */ + { 1005, 0x0000000000000000ULL, { 0x3452C8C86D780104ULL, 0xE4E9E66297E8EACEULL } }, /* XSUM_XXH128_withSecret_testdata[1005] */ + { 1006, 0x0000000000000000ULL, { 0xA486F1DF1AC2259CULL, 0xC8B7D18DA1FFD4A5ULL } }, /* XSUM_XXH128_withSecret_testdata[1006] */ + { 1007, 0x0000000000000000ULL, { 0xE6CD4A8CD269214FULL, 0xF15F877996139734ULL } }, /* XSUM_XXH128_withSecret_testdata[1007] */ + { 1008, 0x0000000000000000ULL, { 0xC863AF1CD3EBB974ULL, 0x6ED833145E38B53AULL } }, /* XSUM_XXH128_withSecret_testdata[1008] */ + { 1009, 0x0000000000000000ULL, { 0xE2D21BB3F1925A07ULL, 0x26B700BFF626E7CEULL } }, /* XSUM_XXH128_withSecret_testdata[1009] */ + { 1010, 0x0000000000000000ULL, { 0x131E2D3A7FAB0ABCULL, 0xB42FAEE2EF1D1C38ULL } }, /* XSUM_XXH128_withSecret_testdata[1010] */ + { 1011, 0x0000000000000000ULL, { 0x1F5FDE33C60EA32DULL, 0x4AC4FBDC3CA7C384ULL } }, /* XSUM_XXH128_withSecret_testdata[1011] */ + { 1012, 0x0000000000000000ULL, { 0x91CDBC421A3B8FCBULL, 0x89E6D5F4D83821ACULL } }, /* XSUM_XXH128_withSecret_testdata[1012] */ + { 1013, 0x0000000000000000ULL, { 0x4538A7A320B450EEULL, 0xC530509FD86692ECULL } }, /* XSUM_XXH128_withSecret_testdata[1013] */ + { 1014, 0x0000000000000000ULL, { 0x26BF3D3957258C79ULL, 0xAD65C5E94CE2A4FBULL } }, /* XSUM_XXH128_withSecret_testdata[1014] */ + { 1015, 0x0000000000000000ULL, { 0xBE646FBB26AE4B4EULL, 0xBE0E5A5F2E171BF4ULL } }, /* XSUM_XXH128_withSecret_testdata[1015] */ + { 1016, 0x0000000000000000ULL, { 0xC68689CCB079DAB9ULL, 0x8266EA84C0ED31A7ULL } }, /* XSUM_XXH128_withSecret_testdata[1016] */ + { 1017, 0x0000000000000000ULL, { 0x55C17A5AEF3BB64FULL, 0x29C30793F75D815FULL } }, /* XSUM_XXH128_withSecret_testdata[1017] */ + { 1018, 0x0000000000000000ULL, { 0xA220A164F62EE9AFULL, 0xFE76EF3758C5DA96ULL } }, /* XSUM_XXH128_withSecret_testdata[1018] */ + { 1019, 0x0000000000000000ULL, { 0x6E70B56151BE3B47ULL, 0x0BC5C34C62A60B63ULL } }, /* XSUM_XXH128_withSecret_testdata[1019] */ + { 1020, 0x0000000000000000ULL, { 0x87D210BA884EB95AULL, 0x3E8F172C7E47D374ULL } }, /* XSUM_XXH128_withSecret_testdata[1020] */ + { 1021, 0x0000000000000000ULL, { 0x6A22585803D5C4CCULL, 0x4B1848024C9ABAE0ULL } }, /* XSUM_XXH128_withSecret_testdata[1021] */ + { 1022, 0x0000000000000000ULL, { 0x031260A84B3226E1ULL, 0x9EFEFAC2928F8EEEULL } }, /* XSUM_XXH128_withSecret_testdata[1022] */ + { 1023, 0x0000000000000000ULL, { 0x6DF5A1773B876CFBULL, 0x21FE7C4FBCEBE042ULL } }, /* XSUM_XXH128_withSecret_testdata[1023] */ + { 1024, 0x0000000000000000ULL, { 0x3538A2D1EA7410D0ULL, 0x7663338D0B32666DULL } }, /* XSUM_XXH128_withSecret_testdata[1024] */ + { 1025, 0x0000000000000000ULL, { 0xE33739F32D405604ULL, 0x3644184C7D1E8F29ULL } }, /* XSUM_XXH128_withSecret_testdata[1025] */ + { 1026, 0x0000000000000000ULL, { 0x0382509E7F46E913ULL, 0xE1327F3F6C9EB596ULL } }, /* XSUM_XXH128_withSecret_testdata[1026] */ + { 1027, 0x0000000000000000ULL, { 0x8F628F9F34D9F295ULL, 0xF2555DAFA3601FFEULL } }, /* XSUM_XXH128_withSecret_testdata[1027] */ + { 1028, 0x0000000000000000ULL, { 0xECDFA3F555AB23E6ULL, 0xA775184C18AE3419ULL } }, /* XSUM_XXH128_withSecret_testdata[1028] */ + { 1029, 0x0000000000000000ULL, { 0x7C4838926C7A36F5ULL, 0x442F24311A6C7EDEULL } }, /* XSUM_XXH128_withSecret_testdata[1029] */ + { 1030, 0x0000000000000000ULL, { 0xBCA5C9202530B602ULL, 0x2A5A99D86B36EF3CULL } }, /* XSUM_XXH128_withSecret_testdata[1030] */ + { 1031, 0x0000000000000000ULL, { 0xC19526A62E0781A2ULL, 0x24EA782ADB9F4648ULL } }, /* XSUM_XXH128_withSecret_testdata[1031] */ + { 1032, 0x0000000000000000ULL, { 0x50F02E1E977C8F24ULL, 0xE16D7E0128A6C317ULL } }, /* XSUM_XXH128_withSecret_testdata[1032] */ + { 1033, 0x0000000000000000ULL, { 0xD7F050FE207D8801ULL, 0xFD6422CF4EF95915ULL } }, /* XSUM_XXH128_withSecret_testdata[1033] */ + { 1034, 0x0000000000000000ULL, { 0xEACD71E313EBF530ULL, 0xA25DA43BB630460AULL } }, /* XSUM_XXH128_withSecret_testdata[1034] */ + { 1035, 0x0000000000000000ULL, { 0xEBEC21F8305F93FEULL, 0xBEF63EC123FEAC8DULL } }, /* XSUM_XXH128_withSecret_testdata[1035] */ + { 1036, 0x0000000000000000ULL, { 0x35093262AC38CCB9ULL, 0x696F646537643D03ULL } }, /* XSUM_XXH128_withSecret_testdata[1036] */ + { 1037, 0x0000000000000000ULL, { 0x1D1716FF6311DF8DULL, 0x0396664ABBA6C990ULL } }, /* XSUM_XXH128_withSecret_testdata[1037] */ + { 1038, 0x0000000000000000ULL, { 0xC7A90B83DECE449FULL, 0x0B11E66F7EC018E8ULL } }, /* XSUM_XXH128_withSecret_testdata[1038] */ + { 1039, 0x0000000000000000ULL, { 0x332FF74A20BBC9D5ULL, 0x7EFE7E0C50199EFEULL } }, /* XSUM_XXH128_withSecret_testdata[1039] */ + { 1040, 0x0000000000000000ULL, { 0x96565B90C44AC72AULL, 0x5E3B90D3A1E43B9DULL } }, /* XSUM_XXH128_withSecret_testdata[1040] */ + { 1041, 0x0000000000000000ULL, { 0xFEB28E9ECA726E7AULL, 0xA6B2A0E874724AE7ULL } }, /* XSUM_XXH128_withSecret_testdata[1041] */ + { 1042, 0x0000000000000000ULL, { 0x4F481C37E0065F4FULL, 0x6BC0C7099AEBAD12ULL } }, /* XSUM_XXH128_withSecret_testdata[1042] */ + { 1043, 0x0000000000000000ULL, { 0x19E1B83A3DE421CDULL, 0x730ED954C4E5A4DAULL } }, /* XSUM_XXH128_withSecret_testdata[1043] */ + { 1044, 0x0000000000000000ULL, { 0x9048D93DC6B55296ULL, 0x4345959E6391715DULL } }, /* XSUM_XXH128_withSecret_testdata[1044] */ + { 1045, 0x0000000000000000ULL, { 0xFC77E3D7F36DB5DBULL, 0x03743AA5F1F6D408ULL } }, /* XSUM_XXH128_withSecret_testdata[1045] */ + { 1046, 0x0000000000000000ULL, { 0xCDB626AD4D6F0D93ULL, 0x560B392FAD7670E3ULL } }, /* XSUM_XXH128_withSecret_testdata[1046] */ + { 1047, 0x0000000000000000ULL, { 0x44AE225D80251F48ULL, 0x597BF89407FE4B27ULL } }, /* XSUM_XXH128_withSecret_testdata[1047] */ + { 1048, 0x0000000000000000ULL, { 0xADD9CD6ABE27EC88ULL, 0x238FFE4FA98834B6ULL } }, /* XSUM_XXH128_withSecret_testdata[1048] */ + { 1049, 0x0000000000000000ULL, { 0x868CF613DA16B7D3ULL, 0xEB55233F76071E69ULL } }, /* XSUM_XXH128_withSecret_testdata[1049] */ + { 1050, 0x0000000000000000ULL, { 0xB274B680AA452344ULL, 0xD9958250CDDB824FULL } }, /* XSUM_XXH128_withSecret_testdata[1050] */ + { 1051, 0x0000000000000000ULL, { 0x77D6692B33D5D00EULL, 0x99C99D270087FD04ULL } }, /* XSUM_XXH128_withSecret_testdata[1051] */ + { 1052, 0x0000000000000000ULL, { 0xB63ED5FDF8A3CB23ULL, 0x50C33D9251CDC802ULL } }, /* XSUM_XXH128_withSecret_testdata[1052] */ + { 1053, 0x0000000000000000ULL, { 0x3EF0EE07076FA410ULL, 0x45F97ABE62423564ULL } }, /* XSUM_XXH128_withSecret_testdata[1053] */ + { 1054, 0x0000000000000000ULL, { 0xC783C4FB3E66DA50ULL, 0xD9B940D94C1DCB39ULL } }, /* XSUM_XXH128_withSecret_testdata[1054] */ + { 1055, 0x0000000000000000ULL, { 0x363A06FAC4681739ULL, 0xF5350D05D9E61CA3ULL } }, /* XSUM_XXH128_withSecret_testdata[1055] */ + { 1056, 0x0000000000000000ULL, { 0x55B66523B75E9169ULL, 0x89A91E15AEA258EDULL } }, /* XSUM_XXH128_withSecret_testdata[1056] */ + { 1057, 0x0000000000000000ULL, { 0x8DC21437F59A5090ULL, 0xDC4F571122043F5BULL } }, /* XSUM_XXH128_withSecret_testdata[1057] */ + { 1058, 0x0000000000000000ULL, { 0xD8619D1AC4CCAFF9ULL, 0x0E4E1C2DE9128D6FULL } }, /* XSUM_XXH128_withSecret_testdata[1058] */ + { 1059, 0x0000000000000000ULL, { 0xAED383D6427E91DDULL, 0x53788021BDA137BEULL } }, /* XSUM_XXH128_withSecret_testdata[1059] */ + { 1060, 0x0000000000000000ULL, { 0x75C86503D0551B28ULL, 0x3444251356389556ULL } }, /* XSUM_XXH128_withSecret_testdata[1060] */ + { 1061, 0x0000000000000000ULL, { 0x89895FE864841CFFULL, 0x1233332DB86E89C4ULL } }, /* XSUM_XXH128_withSecret_testdata[1061] */ + { 1062, 0x0000000000000000ULL, { 0xD577866EFB7E65B6ULL, 0xBF6021C15DB686A5ULL } }, /* XSUM_XXH128_withSecret_testdata[1062] */ + { 1063, 0x0000000000000000ULL, { 0x696E4AE81F17E9E5ULL, 0x785D0649657E3E91ULL } }, /* XSUM_XXH128_withSecret_testdata[1063] */ + { 1064, 0x0000000000000000ULL, { 0x20B4F5B6777B1D80ULL, 0x08B2283F7E3DCBDEULL } }, /* XSUM_XXH128_withSecret_testdata[1064] */ + { 1065, 0x0000000000000000ULL, { 0xF867D9CD9A5A0A5EULL, 0xDE1F57FDD3C566A8ULL } }, /* XSUM_XXH128_withSecret_testdata[1065] */ + { 1066, 0x0000000000000000ULL, { 0x7184156D346568A9ULL, 0xA70B009F21DC19ACULL } }, /* XSUM_XXH128_withSecret_testdata[1066] */ + { 1067, 0x0000000000000000ULL, { 0x1FB3C2F8A211D614ULL, 0xD671B7B224C26134ULL } }, /* XSUM_XXH128_withSecret_testdata[1067] */ + { 1068, 0x0000000000000000ULL, { 0xAEC09F84F474BEE6ULL, 0x9108983E5944FBA2ULL } }, /* XSUM_XXH128_withSecret_testdata[1068] */ + { 1069, 0x0000000000000000ULL, { 0xD0B736D98040E155ULL, 0x6CD0BC4F19277CA0ULL } }, /* XSUM_XXH128_withSecret_testdata[1069] */ + { 1070, 0x0000000000000000ULL, { 0x5025C87B098698F3ULL, 0x7911EF2BDE36B3AFULL } }, /* XSUM_XXH128_withSecret_testdata[1070] */ + { 1071, 0x0000000000000000ULL, { 0xBAC1074155F2FD5CULL, 0x9AD519953350B189ULL } }, /* XSUM_XXH128_withSecret_testdata[1071] */ + { 1072, 0x0000000000000000ULL, { 0x674308AAD60BB6E0ULL, 0x9326D795AE6319B1ULL } }, /* XSUM_XXH128_withSecret_testdata[1072] */ + { 1073, 0x0000000000000000ULL, { 0xDFE0D4AB4893F42AULL, 0xC6321DED4675FF32ULL } }, /* XSUM_XXH128_withSecret_testdata[1073] */ + { 1074, 0x0000000000000000ULL, { 0x5C58E1AABA5CE5FBULL, 0x70823050B3827FD8ULL } }, /* XSUM_XXH128_withSecret_testdata[1074] */ + { 1075, 0x0000000000000000ULL, { 0x1EFBEE56BF8BE2E5ULL, 0xAC887538293CF84BULL } }, /* XSUM_XXH128_withSecret_testdata[1075] */ + { 1076, 0x0000000000000000ULL, { 0x02AC1D1D06435355ULL, 0x09C09F8F136A2DA9ULL } }, /* XSUM_XXH128_withSecret_testdata[1076] */ + { 1077, 0x0000000000000000ULL, { 0xC9DDF826C9F08173ULL, 0x4921BEEB39297B88ULL } }, /* XSUM_XXH128_withSecret_testdata[1077] */ + { 1078, 0x0000000000000000ULL, { 0x7C3673BEA98FF744ULL, 0x681BEC3415B1B6D0ULL } }, /* XSUM_XXH128_withSecret_testdata[1078] */ + { 1079, 0x0000000000000000ULL, { 0xDEA45D59E46D986BULL, 0x009CC57ADECE1F84ULL } }, /* XSUM_XXH128_withSecret_testdata[1079] */ + { 1080, 0x0000000000000000ULL, { 0xFCCC5B98BBF807A5ULL, 0x428E2659AFE0D1D2ULL } }, /* XSUM_XXH128_withSecret_testdata[1080] */ + { 1081, 0x0000000000000000ULL, { 0x5A6B2883A5549B3AULL, 0xB959BEA9B5E37B30ULL } }, /* XSUM_XXH128_withSecret_testdata[1081] */ + { 1082, 0x0000000000000000ULL, { 0xA7C90378E8783D1EULL, 0x48A062B737564DC0ULL } }, /* XSUM_XXH128_withSecret_testdata[1082] */ + { 1083, 0x0000000000000000ULL, { 0x1D041CD8ECD51B06ULL, 0x57EDA0DC4A3D6DB9ULL } }, /* XSUM_XXH128_withSecret_testdata[1083] */ + { 1084, 0x0000000000000000ULL, { 0xB092E24774DCD316ULL, 0x3BC46711D19D52B3ULL } }, /* XSUM_XXH128_withSecret_testdata[1084] */ + { 1085, 0x0000000000000000ULL, { 0x14F716BD88451F4FULL, 0x8A23B024A8B3EB8AULL } }, /* XSUM_XXH128_withSecret_testdata[1085] */ + { 1086, 0x0000000000000000ULL, { 0x08AD7CC409755341ULL, 0xA5234210E9C0A598ULL } }, /* XSUM_XXH128_withSecret_testdata[1086] */ + { 1087, 0x0000000000000000ULL, { 0x9DF1DF0101707F29ULL, 0x8A3EB529AAD49BB7ULL } }, /* XSUM_XXH128_withSecret_testdata[1087] */ + { 1088, 0x0000000000000000ULL, { 0x8BCAEDDF41F82A85ULL, 0xE9E26973BF6CB984ULL } }, /* XSUM_XXH128_withSecret_testdata[1088] */ + { 1089, 0x0000000000000000ULL, { 0x396734BF79E3529AULL, 0x5DCE8F4802EC2140ULL } }, /* XSUM_XXH128_withSecret_testdata[1089] */ + { 1090, 0x0000000000000000ULL, { 0x1D42972E7F9069E4ULL, 0x704210CA87C4CF98ULL } }, /* XSUM_XXH128_withSecret_testdata[1090] */ + { 1091, 0x0000000000000000ULL, { 0x2BE62A7E5377A93DULL, 0xF22B40E24F3999FAULL } }, /* XSUM_XXH128_withSecret_testdata[1091] */ + { 1092, 0x0000000000000000ULL, { 0x29FEF2D065B79DC4ULL, 0x22140C715F371FBBULL } }, /* XSUM_XXH128_withSecret_testdata[1092] */ + { 1093, 0x0000000000000000ULL, { 0x9268870FE3CD0A28ULL, 0x11CF5ADA62DECA1AULL } }, /* XSUM_XXH128_withSecret_testdata[1093] */ + { 1094, 0x0000000000000000ULL, { 0x531A8BB86A48C172ULL, 0x1B9F60B31DEE3CD8ULL } }, /* XSUM_XXH128_withSecret_testdata[1094] */ + { 1095, 0x0000000000000000ULL, { 0x96F782DBD7F2EAFAULL, 0xE6CC2C773F568F80ULL } }, /* XSUM_XXH128_withSecret_testdata[1095] */ + { 1096, 0x0000000000000000ULL, { 0x57709214A6291F2BULL, 0x5E4F405845DF77F1ULL } }, /* XSUM_XXH128_withSecret_testdata[1096] */ + { 1097, 0x0000000000000000ULL, { 0xFB1FB5DF61A74DC0ULL, 0xB17B178D1C9DB179ULL } }, /* XSUM_XXH128_withSecret_testdata[1097] */ + { 1098, 0x0000000000000000ULL, { 0xF13705687AC37277ULL, 0xF214545767197ABCULL } }, /* XSUM_XXH128_withSecret_testdata[1098] */ + { 1099, 0x0000000000000000ULL, { 0x2E4F43DCAA8C1F8AULL, 0x467B7E0613103F94ULL } }, /* XSUM_XXH128_withSecret_testdata[1099] */ + { 1100, 0x0000000000000000ULL, { 0x6C15FF4422D23ED8ULL, 0x8802FEFC6F9DB8CAULL } }, /* XSUM_XXH128_withSecret_testdata[1100] */ + { 1101, 0x0000000000000000ULL, { 0xB2BC6B9EE59935A4ULL, 0x775C3D2F8F7943EBULL } }, /* XSUM_XXH128_withSecret_testdata[1101] */ + { 1102, 0x0000000000000000ULL, { 0x2375A86A7F20B64AULL, 0x30B157BF1E0C97A0ULL } }, /* XSUM_XXH128_withSecret_testdata[1102] */ + { 1103, 0x0000000000000000ULL, { 0x9C48F9BD5EA51031ULL, 0x37AD5C6E582C103FULL } }, /* XSUM_XXH128_withSecret_testdata[1103] */ + { 1104, 0x0000000000000000ULL, { 0x1EFCFD356691F623ULL, 0x2F3DF6F570B3AB21ULL } }, /* XSUM_XXH128_withSecret_testdata[1104] */ + { 1105, 0x0000000000000000ULL, { 0x6FC1B0A00982F5F1ULL, 0x5455F5A4B4879652ULL } }, /* XSUM_XXH128_withSecret_testdata[1105] */ + { 1106, 0x0000000000000000ULL, { 0x7A21C783934EDF22ULL, 0x3E823ABC956BF3F2ULL } }, /* XSUM_XXH128_withSecret_testdata[1106] */ + { 1107, 0x0000000000000000ULL, { 0x86F7D8CF19913C4AULL, 0xCFA859A16FB68FF6ULL } }, /* XSUM_XXH128_withSecret_testdata[1107] */ + { 1108, 0x0000000000000000ULL, { 0xC703E339E016D17CULL, 0x58066D3C02C10817ULL } }, /* XSUM_XXH128_withSecret_testdata[1108] */ + { 1109, 0x0000000000000000ULL, { 0xE68EEBAF5A98A4B2ULL, 0x508BB14A5B420C74ULL } }, /* XSUM_XXH128_withSecret_testdata[1109] */ + { 1110, 0x0000000000000000ULL, { 0x7EA1C9918A69252EULL, 0xF4FAAD7FAD3FF023ULL } }, /* XSUM_XXH128_withSecret_testdata[1110] */ + { 1111, 0x0000000000000000ULL, { 0xD23D81E9D487B330ULL, 0xC003A81B0A462285ULL } }, /* XSUM_XXH128_withSecret_testdata[1111] */ + { 1112, 0x0000000000000000ULL, { 0xDCF2B8168A1D2D59ULL, 0xC8C9060D65FF2F69ULL } }, /* XSUM_XXH128_withSecret_testdata[1112] */ + { 1113, 0x0000000000000000ULL, { 0xF4CA1A757145DC43ULL, 0xDDCB3DADC0F22500ULL } }, /* XSUM_XXH128_withSecret_testdata[1113] */ + { 1114, 0x0000000000000000ULL, { 0x73AB52221B088939ULL, 0xE9891AD78DC6BA7DULL } }, /* XSUM_XXH128_withSecret_testdata[1114] */ + { 1115, 0x0000000000000000ULL, { 0x8CBB9BA7EF78D775ULL, 0x71C972DDEDF51C84ULL } }, /* XSUM_XXH128_withSecret_testdata[1115] */ + { 1116, 0x0000000000000000ULL, { 0x563C8E056CAF5FDDULL, 0x99D3A34D4BACD657ULL } }, /* XSUM_XXH128_withSecret_testdata[1116] */ + { 1117, 0x0000000000000000ULL, { 0xF50811E87CE88663ULL, 0x7214B7C11C96089DULL } }, /* XSUM_XXH128_withSecret_testdata[1117] */ + { 1118, 0x0000000000000000ULL, { 0xFFCEA770436C3AD2ULL, 0x3AFC3154D20B0EDCULL } }, /* XSUM_XXH128_withSecret_testdata[1118] */ + { 1119, 0x0000000000000000ULL, { 0xE281B61DF4C561DDULL, 0xE931BCD8A025984CULL } }, /* XSUM_XXH128_withSecret_testdata[1119] */ + { 1120, 0x0000000000000000ULL, { 0xEED366622AAB0A63ULL, 0xD0F47D5293F62231ULL } }, /* XSUM_XXH128_withSecret_testdata[1120] */ + { 1121, 0x0000000000000000ULL, { 0x5DEE82EEA840A274ULL, 0x441FB2B99E794D32ULL } }, /* XSUM_XXH128_withSecret_testdata[1121] */ + { 1122, 0x0000000000000000ULL, { 0xD264D7263140C0C6ULL, 0x5CE0D1054F039E19ULL } }, /* XSUM_XXH128_withSecret_testdata[1122] */ + { 1123, 0x0000000000000000ULL, { 0xABEA45EC624E1B97ULL, 0xBD3F8830DD810995ULL } }, /* XSUM_XXH128_withSecret_testdata[1123] */ + { 1124, 0x0000000000000000ULL, { 0x56F66AB1DE036491ULL, 0xF4DC281FF7A40AF5ULL } }, /* XSUM_XXH128_withSecret_testdata[1124] */ + { 1125, 0x0000000000000000ULL, { 0x1DD9EDEFCDE3A24CULL, 0x82F9353829C09A3EULL } }, /* XSUM_XXH128_withSecret_testdata[1125] */ + { 1126, 0x0000000000000000ULL, { 0x562ADB80BB93632FULL, 0xC90C86CC80B43DEDULL } }, /* XSUM_XXH128_withSecret_testdata[1126] */ + { 1127, 0x0000000000000000ULL, { 0x1E1B819E3B623D82ULL, 0xC6ACCCF01DD256B2ULL } }, /* XSUM_XXH128_withSecret_testdata[1127] */ + { 1128, 0x0000000000000000ULL, { 0x56A07C82F5CCB7A6ULL, 0x1B719AAE9DFBD419ULL } }, /* XSUM_XXH128_withSecret_testdata[1128] */ + { 1129, 0x0000000000000000ULL, { 0x82005C2A80B0149DULL, 0xC7B53925BC6D0FA2ULL } }, /* XSUM_XXH128_withSecret_testdata[1129] */ + { 1130, 0x0000000000000000ULL, { 0x16DDB1C9DDF5C17BULL, 0xEE451286956718A1ULL } }, /* XSUM_XXH128_withSecret_testdata[1130] */ + { 1131, 0x0000000000000000ULL, { 0x7158F8CF26C94C16ULL, 0x2552EF5C602111F1ULL } }, /* XSUM_XXH128_withSecret_testdata[1131] */ + { 1132, 0x0000000000000000ULL, { 0x2C3A5709497CFF7CULL, 0x47ADDAC5DE06647DULL } }, /* XSUM_XXH128_withSecret_testdata[1132] */ + { 1133, 0x0000000000000000ULL, { 0x6F680E3DD0D3A52BULL, 0xDC2DD75DC5703DE1ULL } }, /* XSUM_XXH128_withSecret_testdata[1133] */ + { 1134, 0x0000000000000000ULL, { 0x196FB1546D757E6AULL, 0x7F0D373F8E8FC291ULL } }, /* XSUM_XXH128_withSecret_testdata[1134] */ + { 1135, 0x0000000000000000ULL, { 0x70BBF8E10A4030ACULL, 0xC1CAF4C9FE9FCB42ULL } }, /* XSUM_XXH128_withSecret_testdata[1135] */ + { 1136, 0x0000000000000000ULL, { 0xFB83EFA18C82B830ULL, 0x040FABB943177471ULL } }, /* XSUM_XXH128_withSecret_testdata[1136] */ + { 1137, 0x0000000000000000ULL, { 0x3ECB963BF6DB8E5CULL, 0xD5BD5C0155FB30D6ULL } }, /* XSUM_XXH128_withSecret_testdata[1137] */ + { 1138, 0x0000000000000000ULL, { 0x9D88D48EB2CD97BDULL, 0xEDFD5CB51B8E96F8ULL } }, /* XSUM_XXH128_withSecret_testdata[1138] */ + { 1139, 0x0000000000000000ULL, { 0xF2AE9FEAFFC676A9ULL, 0x6F806B865B02704BULL } }, /* XSUM_XXH128_withSecret_testdata[1139] */ + { 1140, 0x0000000000000000ULL, { 0xA66D3138F7B07A23ULL, 0x3AF607D490C36A0BULL } }, /* XSUM_XXH128_withSecret_testdata[1140] */ + { 1141, 0x0000000000000000ULL, { 0x2EC6BB65849FFEFDULL, 0x069093143379BEC0ULL } }, /* XSUM_XXH128_withSecret_testdata[1141] */ + { 1142, 0x0000000000000000ULL, { 0x912EF74ADB55BF9CULL, 0x09497A6E3854945BULL } }, /* XSUM_XXH128_withSecret_testdata[1142] */ + { 1143, 0x0000000000000000ULL, { 0x69810688BDAAF761ULL, 0x1451D950ED7F0C2BULL } }, /* XSUM_XXH128_withSecret_testdata[1143] */ + { 1144, 0x0000000000000000ULL, { 0x641CE096D569D437ULL, 0x820538F0321279D8ULL } }, /* XSUM_XXH128_withSecret_testdata[1144] */ + { 1145, 0x0000000000000000ULL, { 0x0BA2EF1F7D45150EULL, 0xC1C86B1BF7F51BBBULL } }, /* XSUM_XXH128_withSecret_testdata[1145] */ + { 1146, 0x0000000000000000ULL, { 0xC81E3264CD6F765BULL, 0x6125255AE11E7013ULL } }, /* XSUM_XXH128_withSecret_testdata[1146] */ + { 1147, 0x0000000000000000ULL, { 0x0E5CB6A65F043CE6ULL, 0x753C90AB6CE228E1ULL } }, /* XSUM_XXH128_withSecret_testdata[1147] */ + { 1148, 0x0000000000000000ULL, { 0x94D9E6AC62497AC8ULL, 0xF0ED804133233F35ULL } }, /* XSUM_XXH128_withSecret_testdata[1148] */ + { 1149, 0x0000000000000000ULL, { 0xD949C814CA42C692ULL, 0x138E8D604CE8562FULL } }, /* XSUM_XXH128_withSecret_testdata[1149] */ + { 1150, 0x0000000000000000ULL, { 0x6B1E0A0FDD1220E8ULL, 0x0CA95116F7422197ULL } }, /* XSUM_XXH128_withSecret_testdata[1150] */ + { 1151, 0x0000000000000000ULL, { 0x02156F6DB0CDBBB1ULL, 0x7F020F172AB8AAC5ULL } }, /* XSUM_XXH128_withSecret_testdata[1151] */ + { 1152, 0x0000000000000000ULL, { 0xDF4FE79C337C19C8ULL, 0x56047D2AAA7E789CULL } }, /* XSUM_XXH128_withSecret_testdata[1152] */ + { 1153, 0x0000000000000000ULL, { 0x2ECD944DEF155B3EULL, 0x15BBCEAC0788EBECULL } }, /* XSUM_XXH128_withSecret_testdata[1153] */ + { 1154, 0x0000000000000000ULL, { 0xAB258F9CE50EC939ULL, 0x556E343FFFC1D579ULL } }, /* XSUM_XXH128_withSecret_testdata[1154] */ + { 1155, 0x0000000000000000ULL, { 0x4C86BB5973A6A74FULL, 0x27D25293DC5A74B2ULL } }, /* XSUM_XXH128_withSecret_testdata[1155] */ + { 1156, 0x0000000000000000ULL, { 0xB3ADFA10F5CABB5BULL, 0x69BC24294173159DULL } }, /* XSUM_XXH128_withSecret_testdata[1156] */ + { 1157, 0x0000000000000000ULL, { 0xD75426EA89F13149ULL, 0xF6FD88B1364D08F2ULL } }, /* XSUM_XXH128_withSecret_testdata[1157] */ + { 1158, 0x0000000000000000ULL, { 0xE84718A0766D310CULL, 0xF3F547452BED99A6ULL } }, /* XSUM_XXH128_withSecret_testdata[1158] */ + { 1159, 0x0000000000000000ULL, { 0x005B0C0DC58C246AULL, 0xAA2D0D49BB23CAABULL } }, /* XSUM_XXH128_withSecret_testdata[1159] */ + { 1160, 0x0000000000000000ULL, { 0x2009C20E994DADAFULL, 0x3798E08D4075EFBFULL } }, /* XSUM_XXH128_withSecret_testdata[1160] */ + { 1161, 0x0000000000000000ULL, { 0x0ED2F88BA0A38011ULL, 0x2A8C9D7639101237ULL } }, /* XSUM_XXH128_withSecret_testdata[1161] */ + { 1162, 0x0000000000000000ULL, { 0x0DD4C1E9C72AAF8AULL, 0x100E2FFB4D34CA87ULL } }, /* XSUM_XXH128_withSecret_testdata[1162] */ + { 1163, 0x0000000000000000ULL, { 0x03906A618FA58EC0ULL, 0x52290CB55F2FB422ULL } }, /* XSUM_XXH128_withSecret_testdata[1163] */ + { 1164, 0x0000000000000000ULL, { 0x896CD47C9D3E1A7BULL, 0xB4EEE34965F0451AULL } }, /* XSUM_XXH128_withSecret_testdata[1164] */ + { 1165, 0x0000000000000000ULL, { 0xEF3FF7FC0BA52A9BULL, 0x9F370F848596F765ULL } }, /* XSUM_XXH128_withSecret_testdata[1165] */ + { 1166, 0x0000000000000000ULL, { 0x5C0975D67B2B6EF6ULL, 0x97596E51D7034144ULL } }, /* XSUM_XXH128_withSecret_testdata[1166] */ + { 1167, 0x0000000000000000ULL, { 0xB7CB344311452280ULL, 0x755E81DAD86F2FA3ULL } }, /* XSUM_XXH128_withSecret_testdata[1167] */ + { 1168, 0x0000000000000000ULL, { 0xE2F6F9063E5205BBULL, 0xFEB80C5B026335FDULL } }, /* XSUM_XXH128_withSecret_testdata[1168] */ + { 1169, 0x0000000000000000ULL, { 0x856578127453CB3EULL, 0xC5C2CBF986EE1506ULL } }, /* XSUM_XXH128_withSecret_testdata[1169] */ + { 1170, 0x0000000000000000ULL, { 0xA55707FB47A3D31EULL, 0x4EC623498AADADC3ULL } }, /* XSUM_XXH128_withSecret_testdata[1170] */ + { 1171, 0x0000000000000000ULL, { 0xB06E2CDB12458F98ULL, 0xD52D75090DDBDA2FULL } }, /* XSUM_XXH128_withSecret_testdata[1171] */ + { 1172, 0x0000000000000000ULL, { 0xACD1394078DCF1AAULL, 0x16F63322FACC37B2ULL } }, /* XSUM_XXH128_withSecret_testdata[1172] */ + { 1173, 0x0000000000000000ULL, { 0xD84CA8AE4D64CFE0ULL, 0xC0AC8D79D7F71768ULL } }, /* XSUM_XXH128_withSecret_testdata[1173] */ + { 1174, 0x0000000000000000ULL, { 0xAA55B791EF895214ULL, 0x704AE9E33C2BDDA1ULL } }, /* XSUM_XXH128_withSecret_testdata[1174] */ + { 1175, 0x0000000000000000ULL, { 0x529383E16F813C4FULL, 0x2455DA28F3697C5AULL } }, /* XSUM_XXH128_withSecret_testdata[1175] */ + { 1176, 0x0000000000000000ULL, { 0xECA853EEDD2A2E54ULL, 0x93B2C898B563EE85ULL } }, /* XSUM_XXH128_withSecret_testdata[1176] */ + { 1177, 0x0000000000000000ULL, { 0x4002EB2DC543C39CULL, 0xC7A7914250311583ULL } }, /* XSUM_XXH128_withSecret_testdata[1177] */ + { 1178, 0x0000000000000000ULL, { 0x59C372FEE8837209ULL, 0xFF4C903C7CEFD623ULL } }, /* XSUM_XXH128_withSecret_testdata[1178] */ + { 1179, 0x0000000000000000ULL, { 0x44B1D065396DFE18ULL, 0xCB523C07017E5631ULL } }, /* XSUM_XXH128_withSecret_testdata[1179] */ + { 1180, 0x0000000000000000ULL, { 0x87CDA611DF1416AEULL, 0xA8E68A017F6A708AULL } }, /* XSUM_XXH128_withSecret_testdata[1180] */ + { 1181, 0x0000000000000000ULL, { 0x45A0F65632F65AE8ULL, 0x563E8B8E09AA1AA8ULL } }, /* XSUM_XXH128_withSecret_testdata[1181] */ + { 1182, 0x0000000000000000ULL, { 0x59DA218BAEEDCDC4ULL, 0xAD642F8190807440ULL } }, /* XSUM_XXH128_withSecret_testdata[1182] */ + { 1183, 0x0000000000000000ULL, { 0x7D8A93640511D6BBULL, 0x98D284BAC88DFD0AULL } }, /* XSUM_XXH128_withSecret_testdata[1183] */ + { 1184, 0x0000000000000000ULL, { 0xF7A914AC3196E7AEULL, 0x4CEE884BC59326C0ULL } }, /* XSUM_XXH128_withSecret_testdata[1184] */ + { 1185, 0x0000000000000000ULL, { 0xC1B5BECE599E7823ULL, 0xD6F107CCC46372D9ULL } }, /* XSUM_XXH128_withSecret_testdata[1185] */ + { 1186, 0x0000000000000000ULL, { 0x5866D3A1E9235620ULL, 0x91059D972F71904DULL } }, /* XSUM_XXH128_withSecret_testdata[1186] */ + { 1187, 0x0000000000000000ULL, { 0xDA1BD59F46500051ULL, 0x90F8ACC7FD144532ULL } }, /* XSUM_XXH128_withSecret_testdata[1187] */ + { 1188, 0x0000000000000000ULL, { 0x28D7A6EB19297C11ULL, 0x7E5E4C1397567786ULL } }, /* XSUM_XXH128_withSecret_testdata[1188] */ + { 1189, 0x0000000000000000ULL, { 0xF1A423015A009AA1ULL, 0x0E4DB1A989DFA435ULL } }, /* XSUM_XXH128_withSecret_testdata[1189] */ + { 1190, 0x0000000000000000ULL, { 0xEAA47268810887FDULL, 0x9AFA2E6FFF53894AULL } }, /* XSUM_XXH128_withSecret_testdata[1190] */ + { 1191, 0x0000000000000000ULL, { 0x2507000374A67D69ULL, 0x26A1BE514D62AE43ULL } }, /* XSUM_XXH128_withSecret_testdata[1191] */ + { 1192, 0x0000000000000000ULL, { 0x86B72482FE8CC0B4ULL, 0x52E121C96498CF79ULL } }, /* XSUM_XXH128_withSecret_testdata[1192] */ + { 1193, 0x0000000000000000ULL, { 0xCCE29661119C453AULL, 0x6763B52F0604468FULL } }, /* XSUM_XXH128_withSecret_testdata[1193] */ + { 1194, 0x0000000000000000ULL, { 0x5718C15955D8E86EULL, 0x144FB1F0E1C4D94CULL } }, /* XSUM_XXH128_withSecret_testdata[1194] */ + { 1195, 0x0000000000000000ULL, { 0xA45DD6275981C651ULL, 0x53788CD0CE5EE169ULL } }, /* XSUM_XXH128_withSecret_testdata[1195] */ + { 1196, 0x0000000000000000ULL, { 0xC31C3276F4711CD9ULL, 0xC4E4F002EEFCCA4EULL } }, /* XSUM_XXH128_withSecret_testdata[1196] */ + { 1197, 0x0000000000000000ULL, { 0x7057D8D2E26A41C6ULL, 0x19B05BCDC9553C6FULL } }, /* XSUM_XXH128_withSecret_testdata[1197] */ + { 1198, 0x0000000000000000ULL, { 0xB2B056A783B96CFBULL, 0x5D3A214FCA3818E2ULL } }, /* XSUM_XXH128_withSecret_testdata[1198] */ + { 1199, 0x0000000000000000ULL, { 0xC76ABEB7BC46B70BULL, 0x2C2007C60038F35AULL } }, /* XSUM_XXH128_withSecret_testdata[1199] */ + { 1200, 0x0000000000000000ULL, { 0x73755FC8551A96C0ULL, 0xD0EBA5F8F9CA6116ULL } }, /* XSUM_XXH128_withSecret_testdata[1200] */ + { 1201, 0x0000000000000000ULL, { 0xB753309CFD6AE937ULL, 0xEE8380A1DF7F46FBULL } }, /* XSUM_XXH128_withSecret_testdata[1201] */ + { 1202, 0x0000000000000000ULL, { 0x59EBC9D68AB74308ULL, 0xA15CBC183721D8F5ULL } }, /* XSUM_XXH128_withSecret_testdata[1202] */ + { 1203, 0x0000000000000000ULL, { 0xD30471451F8D7F23ULL, 0x187499D7A33F5404ULL } }, /* XSUM_XXH128_withSecret_testdata[1203] */ + { 1204, 0x0000000000000000ULL, { 0x49D1C3584FE44DDBULL, 0x95D6C814A3DEA4E4ULL } }, /* XSUM_XXH128_withSecret_testdata[1204] */ + { 1205, 0x0000000000000000ULL, { 0x243157916985F87BULL, 0x45A15FC36B2BE2DAULL } }, /* XSUM_XXH128_withSecret_testdata[1205] */ + { 1206, 0x0000000000000000ULL, { 0x202E01C447EE0F84ULL, 0x20D1DC05B0E49AC6ULL } }, /* XSUM_XXH128_withSecret_testdata[1206] */ + { 1207, 0x0000000000000000ULL, { 0xA40C5DFD692473E8ULL, 0x701659E8CAAF75C3ULL } }, /* XSUM_XXH128_withSecret_testdata[1207] */ + { 1208, 0x0000000000000000ULL, { 0x64FB4F94E14A516EULL, 0xA4A218568E85B149ULL } }, /* XSUM_XXH128_withSecret_testdata[1208] */ + { 1209, 0x0000000000000000ULL, { 0xE549E2C3449F09FFULL, 0x281AD1B420E1C976ULL } }, /* XSUM_XXH128_withSecret_testdata[1209] */ + { 1210, 0x0000000000000000ULL, { 0x8F4F0A0652F62A6EULL, 0xAABF4931CA2B43ACULL } }, /* XSUM_XXH128_withSecret_testdata[1210] */ + { 1211, 0x0000000000000000ULL, { 0x63FB3196D346A6B7ULL, 0x2EE9674FF81E58DAULL } }, /* XSUM_XXH128_withSecret_testdata[1211] */ + { 1212, 0x0000000000000000ULL, { 0xF231B7882BB00AA5ULL, 0xAF811A0DEA976009ULL } }, /* XSUM_XXH128_withSecret_testdata[1212] */ + { 1213, 0x0000000000000000ULL, { 0x386A02178E23A5CAULL, 0xE1F256B1B82BF0D4ULL } }, /* XSUM_XXH128_withSecret_testdata[1213] */ + { 1214, 0x0000000000000000ULL, { 0xD23493CD42EEDD55ULL, 0x3635A53F10C67726ULL } }, /* XSUM_XXH128_withSecret_testdata[1214] */ + { 1215, 0x0000000000000000ULL, { 0x61438E729742F3E7ULL, 0x76C6A5A8B77A9572ULL } }, /* XSUM_XXH128_withSecret_testdata[1215] */ + { 1216, 0x0000000000000000ULL, { 0x92F607D509447369ULL, 0x64863E6A3AE59016ULL } }, /* XSUM_XXH128_withSecret_testdata[1216] */ + { 1217, 0x0000000000000000ULL, { 0x663DE7FFFE25062BULL, 0xCE0D0FA7A2055562ULL } }, /* XSUM_XXH128_withSecret_testdata[1217] */ + { 1218, 0x0000000000000000ULL, { 0x09224BF6696D0C87ULL, 0x59B245B57F843A19ULL } }, /* XSUM_XXH128_withSecret_testdata[1218] */ + { 1219, 0x0000000000000000ULL, { 0x0DC6477ADA60C46EULL, 0xF2DBA8027CCCA51FULL } }, /* XSUM_XXH128_withSecret_testdata[1219] */ + { 1220, 0x0000000000000000ULL, { 0x1DBEAEE3D8B6AEE3ULL, 0xBABE0343B49CCAABULL } }, /* XSUM_XXH128_withSecret_testdata[1220] */ + { 1221, 0x0000000000000000ULL, { 0x9C04B23D21BFF9D4ULL, 0xCED5A43B3230FB80ULL } }, /* XSUM_XXH128_withSecret_testdata[1221] */ + { 1222, 0x0000000000000000ULL, { 0xA55E3990D596F4F5ULL, 0x42BE19377A0DA742ULL } }, /* XSUM_XXH128_withSecret_testdata[1222] */ + { 1223, 0x0000000000000000ULL, { 0x393633C0019FA593ULL, 0x705CE2CF8BD863C7ULL } }, /* XSUM_XXH128_withSecret_testdata[1223] */ + { 1224, 0x0000000000000000ULL, { 0xCD109408C4096802ULL, 0x8EA44CEA879CCD36ULL } }, /* XSUM_XXH128_withSecret_testdata[1224] */ + { 1225, 0x0000000000000000ULL, { 0x234D3FFD498043ADULL, 0x61FD1082F645AFABULL } }, /* XSUM_XXH128_withSecret_testdata[1225] */ + { 1226, 0x0000000000000000ULL, { 0xCC62B983E6E16175ULL, 0x2AB3C3EA6B3FDAAAULL } }, /* XSUM_XXH128_withSecret_testdata[1226] */ + { 1227, 0x0000000000000000ULL, { 0x27B595365C29A97DULL, 0xADEE283D90912477ULL } }, /* XSUM_XXH128_withSecret_testdata[1227] */ + { 1228, 0x0000000000000000ULL, { 0xFFAD0D865E21BF53ULL, 0x44ACB1E609A808C3ULL } }, /* XSUM_XXH128_withSecret_testdata[1228] */ + { 1229, 0x0000000000000000ULL, { 0x41CE386C213D93CEULL, 0x9FAE3C113D68FF28ULL } }, /* XSUM_XXH128_withSecret_testdata[1229] */ + { 1230, 0x0000000000000000ULL, { 0x284740FCD667DA17ULL, 0xBD493568B93FD54AULL } }, /* XSUM_XXH128_withSecret_testdata[1230] */ + { 1231, 0x0000000000000000ULL, { 0x1B1D48F3B30A1884ULL, 0x47F56C812076DA6AULL } }, /* XSUM_XXH128_withSecret_testdata[1231] */ + { 1232, 0x0000000000000000ULL, { 0xCDA4172D1A1DBDF0ULL, 0x7C0F687CF98F67F0ULL } }, /* XSUM_XXH128_withSecret_testdata[1232] */ + { 1233, 0x0000000000000000ULL, { 0xF90351A1085B9FA9ULL, 0xB070225E4C3B1CCFULL } }, /* XSUM_XXH128_withSecret_testdata[1233] */ + { 1234, 0x0000000000000000ULL, { 0x343C0D92B24D640DULL, 0xFBB767DFE565DEB6ULL } }, /* XSUM_XXH128_withSecret_testdata[1234] */ + { 1235, 0x0000000000000000ULL, { 0x64A949C8B1108BFBULL, 0xCCF0780E1A457EF6ULL } }, /* XSUM_XXH128_withSecret_testdata[1235] */ + { 1236, 0x0000000000000000ULL, { 0x245919762B221E7FULL, 0x16998C9A2AC38717ULL } }, /* XSUM_XXH128_withSecret_testdata[1236] */ + { 1237, 0x0000000000000000ULL, { 0xFD9BB3384A8857F5ULL, 0x8AB73D1FD1A268F1ULL } }, /* XSUM_XXH128_withSecret_testdata[1237] */ + { 1238, 0x0000000000000000ULL, { 0x9E133E37A83E21DBULL, 0x3B580A3ADCF3A48AULL } }, /* XSUM_XXH128_withSecret_testdata[1238] */ + { 1239, 0x0000000000000000ULL, { 0xF71278EFE523DB46ULL, 0xE6B9E68D3AFEF7F5ULL } }, /* XSUM_XXH128_withSecret_testdata[1239] */ + { 1240, 0x0000000000000000ULL, { 0xC82413F84E6E3EC5ULL, 0x98670D2F8CC6F5CBULL } }, /* XSUM_XXH128_withSecret_testdata[1240] */ + { 1241, 0x0000000000000000ULL, { 0x166BD3C786FDECB0ULL, 0x210253E1CF8C7A34ULL } }, /* XSUM_XXH128_withSecret_testdata[1241] */ + { 1242, 0x0000000000000000ULL, { 0x96F0738F94FD7CBAULL, 0xB28F0EBF0812ADDBULL } }, /* XSUM_XXH128_withSecret_testdata[1242] */ + { 1243, 0x0000000000000000ULL, { 0xD250E16AC85D91ABULL, 0x7BF10B34B3862F9CULL } }, /* XSUM_XXH128_withSecret_testdata[1243] */ + { 1244, 0x0000000000000000ULL, { 0x785A62391800E61FULL, 0x077925D834A400BBULL } }, /* XSUM_XXH128_withSecret_testdata[1244] */ + { 1245, 0x0000000000000000ULL, { 0x3FFB5401C9F7A3FFULL, 0x4EDFBB34402527E2ULL } }, /* XSUM_XXH128_withSecret_testdata[1245] */ + { 1246, 0x0000000000000000ULL, { 0x2A29AC53000E997FULL, 0xE10125AAF318AE02ULL } }, /* XSUM_XXH128_withSecret_testdata[1246] */ + { 1247, 0x0000000000000000ULL, { 0xAE58D698404A2776ULL, 0xE9E963A487ED59D7ULL } }, /* XSUM_XXH128_withSecret_testdata[1247] */ + { 1248, 0x0000000000000000ULL, { 0xA53C9031684A836CULL, 0x6D4EF30F334B1DE9ULL } }, /* XSUM_XXH128_withSecret_testdata[1248] */ + { 1249, 0x0000000000000000ULL, { 0x6F3ABC5DCDD19D53ULL, 0x8E673F01A8623EA1ULL } }, /* XSUM_XXH128_withSecret_testdata[1249] */ + { 1250, 0x0000000000000000ULL, { 0x75AD1818E82EC2FEULL, 0x65FD25FBB4920421ULL } }, /* XSUM_XXH128_withSecret_testdata[1250] */ + { 1251, 0x0000000000000000ULL, { 0x2C17F682AFC67F69ULL, 0x54A3C93439C2DCDEULL } }, /* XSUM_XXH128_withSecret_testdata[1251] */ + { 1252, 0x0000000000000000ULL, { 0x8815882995B4B2B5ULL, 0xA48F1C5DF2BA1C5AULL } }, /* XSUM_XXH128_withSecret_testdata[1252] */ + { 1253, 0x0000000000000000ULL, { 0x24E082C698E1F0C5ULL, 0xF41670656EB73837ULL } }, /* XSUM_XXH128_withSecret_testdata[1253] */ + { 1254, 0x0000000000000000ULL, { 0xEDDE9C789512BA59ULL, 0x61D15306BFF18A75ULL } }, /* XSUM_XXH128_withSecret_testdata[1254] */ + { 1255, 0x0000000000000000ULL, { 0x189407CBCC7DA351ULL, 0x8BB20CA0B299EEAFULL } }, /* XSUM_XXH128_withSecret_testdata[1255] */ + { 1256, 0x0000000000000000ULL, { 0xA6B6B78A5B3BEDDAULL, 0x182E4C56275AAD2BULL } }, /* XSUM_XXH128_withSecret_testdata[1256] */ + { 1257, 0x0000000000000000ULL, { 0xB8748DD6087FD1B7ULL, 0x650323961FC93C0DULL } }, /* XSUM_XXH128_withSecret_testdata[1257] */ + { 1258, 0x0000000000000000ULL, { 0x30FF824085C7AC1FULL, 0x96B212D3027C075CULL } }, /* XSUM_XXH128_withSecret_testdata[1258] */ + { 1259, 0x0000000000000000ULL, { 0x01208E35DCBC5342ULL, 0xAA22B4B27E4F409AULL } }, /* XSUM_XXH128_withSecret_testdata[1259] */ + { 1260, 0x0000000000000000ULL, { 0xBE93C8449B0F4D28ULL, 0xCB29DAC217D85F93ULL } }, /* XSUM_XXH128_withSecret_testdata[1260] */ + { 1261, 0x0000000000000000ULL, { 0x2E61B5BB8D7312E2ULL, 0x4A0C1707171A9FD4ULL } }, /* XSUM_XXH128_withSecret_testdata[1261] */ + { 1262, 0x0000000000000000ULL, { 0x9005CF7F4A946D0DULL, 0xF0DFC768419200FDULL } }, /* XSUM_XXH128_withSecret_testdata[1262] */ + { 1263, 0x0000000000000000ULL, { 0xFCB02DBE12CDCECDULL, 0x5F2F61C1BB11AA05ULL } }, /* XSUM_XXH128_withSecret_testdata[1263] */ + { 1264, 0x0000000000000000ULL, { 0x77115021CC4B7E79ULL, 0xF7DB1ABE1C4B3FF8ULL } }, /* XSUM_XXH128_withSecret_testdata[1264] */ + { 1265, 0x0000000000000000ULL, { 0x45B53F7C10D68DF3ULL, 0x888FB2CD89F09792ULL } }, /* XSUM_XXH128_withSecret_testdata[1265] */ + { 1266, 0x0000000000000000ULL, { 0xEE9685A40F3894A5ULL, 0x28211211D3CE8E09ULL } }, /* XSUM_XXH128_withSecret_testdata[1266] */ + { 1267, 0x0000000000000000ULL, { 0x9ABF6ADB0E588970ULL, 0x00EF9A8C85D35CBCULL } }, /* XSUM_XXH128_withSecret_testdata[1267] */ + { 1268, 0x0000000000000000ULL, { 0x50A2DD1114B3A393ULL, 0x56BA6CB92161430BULL } }, /* XSUM_XXH128_withSecret_testdata[1268] */ + { 1269, 0x0000000000000000ULL, { 0xFEEAA9C0D309D11DULL, 0x29CB8FE4AD4DDBD6ULL } }, /* XSUM_XXH128_withSecret_testdata[1269] */ + { 1270, 0x0000000000000000ULL, { 0xDD86053FB8F3C843ULL, 0x73EFC8A22B316F51ULL } }, /* XSUM_XXH128_withSecret_testdata[1270] */ + { 1271, 0x0000000000000000ULL, { 0xF607C259AD6046D2ULL, 0x7C37505F14745336ULL } }, /* XSUM_XXH128_withSecret_testdata[1271] */ + { 1272, 0x0000000000000000ULL, { 0x2308CEB57312D420ULL, 0xA8882EF189DA425EULL } }, /* XSUM_XXH128_withSecret_testdata[1272] */ + { 1273, 0x0000000000000000ULL, { 0x42121BF4F0804A49ULL, 0xF741093D49B40D13ULL } }, /* XSUM_XXH128_withSecret_testdata[1273] */ + { 1274, 0x0000000000000000ULL, { 0x788CC0A18468029BULL, 0x05DE216C103918C4ULL } }, /* XSUM_XXH128_withSecret_testdata[1274] */ + { 1275, 0x0000000000000000ULL, { 0x6508C03B3657F8D4ULL, 0xA2EBB198A713B84DULL } }, /* XSUM_XXH128_withSecret_testdata[1275] */ + { 1276, 0x0000000000000000ULL, { 0x6C461606A62F6A67ULL, 0x2A8B51795E566F20ULL } }, /* XSUM_XXH128_withSecret_testdata[1276] */ + { 1277, 0x0000000000000000ULL, { 0x39282AFC7B3CDB3AULL, 0x571B16E41F6A4E9AULL } }, /* XSUM_XXH128_withSecret_testdata[1277] */ + { 1278, 0x0000000000000000ULL, { 0x74076DD2F86447F5ULL, 0xBA8AF90BFC3DFB96ULL } }, /* XSUM_XXH128_withSecret_testdata[1278] */ + { 1279, 0x0000000000000000ULL, { 0xA8D717918A5784B2ULL, 0x7E2638C3EB82E4C1ULL } }, /* XSUM_XXH128_withSecret_testdata[1279] */ + { 1280, 0x0000000000000000ULL, { 0x435F9EB1675EA225ULL, 0x69D503954A4CA67FULL } }, /* XSUM_XXH128_withSecret_testdata[1280] */ + { 1281, 0x0000000000000000ULL, { 0xDC2DB93C9AE6807FULL, 0xDAA57F92107A2CA5ULL } }, /* XSUM_XXH128_withSecret_testdata[1281] */ + { 1282, 0x0000000000000000ULL, { 0xA1E2C0F65BE822C9ULL, 0x3EAA144FFDECAD93ULL } }, /* XSUM_XXH128_withSecret_testdata[1282] */ + { 1283, 0x0000000000000000ULL, { 0x1D95E563E3A8C9C3ULL, 0x295A87643B107A7BULL } }, /* XSUM_XXH128_withSecret_testdata[1283] */ + { 1284, 0x0000000000000000ULL, { 0xEBBB6C45226CA339ULL, 0xC430087D7EE92CDBULL } }, /* XSUM_XXH128_withSecret_testdata[1284] */ + { 1285, 0x0000000000000000ULL, { 0xC8C526B210C30578ULL, 0xD97138C7A70C04E5ULL } }, /* XSUM_XXH128_withSecret_testdata[1285] */ + { 1286, 0x0000000000000000ULL, { 0x1630BC64A5B3F61AULL, 0x4DF88D4C58C8C9F2ULL } }, /* XSUM_XXH128_withSecret_testdata[1286] */ + { 1287, 0x0000000000000000ULL, { 0xDF062B18695B0AD8ULL, 0x6377411CB6214FA5ULL } }, /* XSUM_XXH128_withSecret_testdata[1287] */ + { 1288, 0x0000000000000000ULL, { 0x56698F4C67AE3002ULL, 0x4ED729C4E855B81FULL } }, /* XSUM_XXH128_withSecret_testdata[1288] */ + { 1289, 0x0000000000000000ULL, { 0xF4DCA376472FAE9DULL, 0x9F55301AD3966023ULL } }, /* XSUM_XXH128_withSecret_testdata[1289] */ + { 1290, 0x0000000000000000ULL, { 0x2C4EEB0F1A3F2B74ULL, 0x8B8C7F011AE2B925ULL } }, /* XSUM_XXH128_withSecret_testdata[1290] */ + { 1291, 0x0000000000000000ULL, { 0x4F913E6E14087E32ULL, 0x9A1CFF80147E4807ULL } }, /* XSUM_XXH128_withSecret_testdata[1291] */ + { 1292, 0x0000000000000000ULL, { 0x8E28F817714CCF9EULL, 0x77058EEABC495323ULL } }, /* XSUM_XXH128_withSecret_testdata[1292] */ + { 1293, 0x0000000000000000ULL, { 0x53A628FCC781B8C6ULL, 0x33E8A4547CA567A8ULL } }, /* XSUM_XXH128_withSecret_testdata[1293] */ + { 1294, 0x0000000000000000ULL, { 0x20BDAB7E198554A1ULL, 0x8DDF5C59E6049835ULL } }, /* XSUM_XXH128_withSecret_testdata[1294] */ + { 1295, 0x0000000000000000ULL, { 0x650BDEE530735691ULL, 0x1DEFB9517C03BF91ULL } }, /* XSUM_XXH128_withSecret_testdata[1295] */ + { 1296, 0x0000000000000000ULL, { 0x916FE213BA38F63FULL, 0xBE535F4D5DCAE03CULL } }, /* XSUM_XXH128_withSecret_testdata[1296] */ + { 1297, 0x0000000000000000ULL, { 0x1FC7BAB7BBB5FAF4ULL, 0x9F6AE9849A531AEEULL } }, /* XSUM_XXH128_withSecret_testdata[1297] */ + { 1298, 0x0000000000000000ULL, { 0x8933CB240512BC03ULL, 0x00B8802454E8A930ULL } }, /* XSUM_XXH128_withSecret_testdata[1298] */ + { 1299, 0x0000000000000000ULL, { 0xAA19796DAE123B34ULL, 0x5C2C0C352B8AC4A5ULL } }, /* XSUM_XXH128_withSecret_testdata[1299] */ + { 1300, 0x0000000000000000ULL, { 0xDEE64FF495E05965ULL, 0x783D1918B28DC202ULL } }, /* XSUM_XXH128_withSecret_testdata[1300] */ + { 1301, 0x0000000000000000ULL, { 0x2E510FDCA174B8FFULL, 0xE170FA5F6A1C8704ULL } }, /* XSUM_XXH128_withSecret_testdata[1301] */ + { 1302, 0x0000000000000000ULL, { 0x08B033AE042B7134ULL, 0x933CA03E551702E4ULL } }, /* XSUM_XXH128_withSecret_testdata[1302] */ + { 1303, 0x0000000000000000ULL, { 0x37B175392C8B7634ULL, 0x38341E944776B94EULL } }, /* XSUM_XXH128_withSecret_testdata[1303] */ + { 1304, 0x0000000000000000ULL, { 0x0056F1F63D1624C1ULL, 0x2E929CC55EFF6E16ULL } }, /* XSUM_XXH128_withSecret_testdata[1304] */ + { 1305, 0x0000000000000000ULL, { 0x409073AF7B9FC7A8ULL, 0x91FB8D09F88CA897ULL } }, /* XSUM_XXH128_withSecret_testdata[1305] */ + { 1306, 0x0000000000000000ULL, { 0x5106BD992B25FB60ULL, 0xB02CB1A5B297A5A4ULL } }, /* XSUM_XXH128_withSecret_testdata[1306] */ + { 1307, 0x0000000000000000ULL, { 0x6EB2815B2767DDA2ULL, 0x9F4AF1944AF7CFBBULL } }, /* XSUM_XXH128_withSecret_testdata[1307] */ + { 1308, 0x0000000000000000ULL, { 0xF92809041F943667ULL, 0x1459841F636D3BBFULL } }, /* XSUM_XXH128_withSecret_testdata[1308] */ + { 1309, 0x0000000000000000ULL, { 0x2E9E667E6997DC6AULL, 0xA98633D7E8C564E8ULL } }, /* XSUM_XXH128_withSecret_testdata[1309] */ + { 1310, 0x0000000000000000ULL, { 0xFA3298E8C2101F66ULL, 0x8F8C78B22B5123EFULL } }, /* XSUM_XXH128_withSecret_testdata[1310] */ + { 1311, 0x0000000000000000ULL, { 0x367FB94648BD8EC4ULL, 0x13C1CBFF5BBA0D7DULL } }, /* XSUM_XXH128_withSecret_testdata[1311] */ + { 1312, 0x0000000000000000ULL, { 0xE295652DC945F248ULL, 0x4B2DB5CBBF1308F3ULL } }, /* XSUM_XXH128_withSecret_testdata[1312] */ + { 1313, 0x0000000000000000ULL, { 0x1497264F4AEE877BULL, 0x8932DA6C6276E8C6ULL } }, /* XSUM_XXH128_withSecret_testdata[1313] */ + { 1314, 0x0000000000000000ULL, { 0x097EA52B2F2CEC0FULL, 0x935565CF3487B08EULL } }, /* XSUM_XXH128_withSecret_testdata[1314] */ + { 1315, 0x0000000000000000ULL, { 0x7494E3D589BD925DULL, 0x6A38C202A4BE4F3BULL } }, /* XSUM_XXH128_withSecret_testdata[1315] */ + { 1316, 0x0000000000000000ULL, { 0x1BE7F1FAC69F2A96ULL, 0xCED7653B6BB28010ULL } }, /* XSUM_XXH128_withSecret_testdata[1316] */ + { 1317, 0x0000000000000000ULL, { 0x2D32EB078EB76499ULL, 0xBD9928485C2F942CULL } }, /* XSUM_XXH128_withSecret_testdata[1317] */ + { 1318, 0x0000000000000000ULL, { 0x061AA905761C05FCULL, 0x46667CD771D032D2ULL } }, /* XSUM_XXH128_withSecret_testdata[1318] */ + { 1319, 0x0000000000000000ULL, { 0x95574AF3902C9275ULL, 0x52D1579F95EA4FC2ULL } }, /* XSUM_XXH128_withSecret_testdata[1319] */ + { 1320, 0x0000000000000000ULL, { 0xE412CFFC01B99338ULL, 0x1CA808BF418A5E95ULL } }, /* XSUM_XXH128_withSecret_testdata[1320] */ + { 1321, 0x0000000000000000ULL, { 0x9CB3BB605A83A497ULL, 0xA65E6C251CCCB71DULL } }, /* XSUM_XXH128_withSecret_testdata[1321] */ + { 1322, 0x0000000000000000ULL, { 0x5FA866FF5B5E26E2ULL, 0x280ABDD0D5816A88ULL } }, /* XSUM_XXH128_withSecret_testdata[1322] */ + { 1323, 0x0000000000000000ULL, { 0xC9EB8EBA6300B7B9ULL, 0x3F5B975046FFB61CULL } }, /* XSUM_XXH128_withSecret_testdata[1323] */ + { 1324, 0x0000000000000000ULL, { 0x4366ECBC2241CDCBULL, 0xE9226CDF0956CAE0ULL } }, /* XSUM_XXH128_withSecret_testdata[1324] */ + { 1325, 0x0000000000000000ULL, { 0xE81FE26D39C60C1AULL, 0x374CA95470527F07ULL } }, /* XSUM_XXH128_withSecret_testdata[1325] */ + { 1326, 0x0000000000000000ULL, { 0xA9FAC797AF26E3A3ULL, 0x58C527FAFC9E2565ULL } }, /* XSUM_XXH128_withSecret_testdata[1326] */ + { 1327, 0x0000000000000000ULL, { 0xC73722D6E30D0314ULL, 0x6119E87FD5A10492ULL } }, /* XSUM_XXH128_withSecret_testdata[1327] */ + { 1328, 0x0000000000000000ULL, { 0x87D861475092E84EULL, 0xF8D965DB296D0259ULL } }, /* XSUM_XXH128_withSecret_testdata[1328] */ + { 1329, 0x0000000000000000ULL, { 0x7BD90034C6CA14E8ULL, 0x207CAC2C2C56B782ULL } }, /* XSUM_XXH128_withSecret_testdata[1329] */ + { 1330, 0x0000000000000000ULL, { 0x11E710FAF368141DULL, 0x722972A8CE5B8605ULL } }, /* XSUM_XXH128_withSecret_testdata[1330] */ + { 1331, 0x0000000000000000ULL, { 0xB0D71F9C170851B9ULL, 0xFB7E10B30A44E16BULL } }, /* XSUM_XXH128_withSecret_testdata[1331] */ + { 1332, 0x0000000000000000ULL, { 0x8E3E730800AD0365ULL, 0x1F26294FC255187AULL } }, /* XSUM_XXH128_withSecret_testdata[1332] */ + { 1333, 0x0000000000000000ULL, { 0x7EBF5F93F98E698DULL, 0x645DCD43D87F7FE6ULL } }, /* XSUM_XXH128_withSecret_testdata[1333] */ + { 1334, 0x0000000000000000ULL, { 0x9126271F39408106ULL, 0x0160EF425945D206ULL } }, /* XSUM_XXH128_withSecret_testdata[1334] */ + { 1335, 0x0000000000000000ULL, { 0xCD219896FED405EEULL, 0xC4B4478BB679B34FULL } }, /* XSUM_XXH128_withSecret_testdata[1335] */ + { 1336, 0x0000000000000000ULL, { 0x68B7D403FA534589ULL, 0x91F717183F852A88ULL } }, /* XSUM_XXH128_withSecret_testdata[1336] */ + { 1337, 0x0000000000000000ULL, { 0x4FB3E1315E622702ULL, 0xEB99780DEDD9E5ACULL } }, /* XSUM_XXH128_withSecret_testdata[1337] */ + { 1338, 0x0000000000000000ULL, { 0xC5DC08DF8C7EE533ULL, 0xE74654D437746031ULL } }, /* XSUM_XXH128_withSecret_testdata[1338] */ + { 1339, 0x0000000000000000ULL, { 0x68E975F07090E13CULL, 0x19EACFF6D0BA4A0AULL } }, /* XSUM_XXH128_withSecret_testdata[1339] */ + { 1340, 0x0000000000000000ULL, { 0x7C053AD6AE67606FULL, 0xDC92CB260702CCA2ULL } }, /* XSUM_XXH128_withSecret_testdata[1340] */ + { 1341, 0x0000000000000000ULL, { 0xB9956077392BDDF9ULL, 0x4E78DA94432A9AB2ULL } }, /* XSUM_XXH128_withSecret_testdata[1341] */ + { 1342, 0x0000000000000000ULL, { 0xC86247A8DB10780DULL, 0x65EE68CD00E562E5ULL } }, /* XSUM_XXH128_withSecret_testdata[1342] */ + { 1343, 0x0000000000000000ULL, { 0xB8287244C41F84CAULL, 0xFBFCC7B968E2E325ULL } }, /* XSUM_XXH128_withSecret_testdata[1343] */ + { 1344, 0x0000000000000000ULL, { 0xA4D4CD1EB538AAF2ULL, 0x891E790D93229323ULL } }, /* XSUM_XXH128_withSecret_testdata[1344] */ + { 1345, 0x0000000000000000ULL, { 0x0B0ED86D8A98669CULL, 0xD4B3489382C02344ULL } }, /* XSUM_XXH128_withSecret_testdata[1345] */ + { 1346, 0x0000000000000000ULL, { 0x4B045826F76D5C9BULL, 0xC67A606054C367B4ULL } }, /* XSUM_XXH128_withSecret_testdata[1346] */ + { 1347, 0x0000000000000000ULL, { 0x0F352D87BD2D2A5EULL, 0xA9B00E773ACF2011ULL } }, /* XSUM_XXH128_withSecret_testdata[1347] */ + { 1348, 0x0000000000000000ULL, { 0x0161262E6584CACEULL, 0xD023A3F6EA0EC0B9ULL } }, /* XSUM_XXH128_withSecret_testdata[1348] */ + { 1349, 0x0000000000000000ULL, { 0x3FD1CA8714F715BFULL, 0x8129929FDC8E5C83ULL } }, /* XSUM_XXH128_withSecret_testdata[1349] */ + { 1350, 0x0000000000000000ULL, { 0x2889F452FF13791CULL, 0x423FF8EC2F1A43C3ULL } }, /* XSUM_XXH128_withSecret_testdata[1350] */ + { 1351, 0x0000000000000000ULL, { 0x6658548D5D914D3EULL, 0xD76F53578E277D6CULL } }, /* XSUM_XXH128_withSecret_testdata[1351] */ + { 1352, 0x0000000000000000ULL, { 0xCC30345A1184FA4DULL, 0xB6D533CAF36069FBULL } }, /* XSUM_XXH128_withSecret_testdata[1352] */ + { 1353, 0x0000000000000000ULL, { 0x32C9DB4DD75C3465ULL, 0x845B844AE0E5C771ULL } }, /* XSUM_XXH128_withSecret_testdata[1353] */ + { 1354, 0x0000000000000000ULL, { 0xA3314658723A788EULL, 0xDCA189C1B705982CULL } }, /* XSUM_XXH128_withSecret_testdata[1354] */ + { 1355, 0x0000000000000000ULL, { 0x55E1274E9CBC37AFULL, 0xE08B6A4E5ED023B6ULL } }, /* XSUM_XXH128_withSecret_testdata[1355] */ + { 1356, 0x0000000000000000ULL, { 0xDEEF4DC4B394BEDBULL, 0xE3298697737EC43CULL } }, /* XSUM_XXH128_withSecret_testdata[1356] */ + { 1357, 0x0000000000000000ULL, { 0x313BC7A45BED6865ULL, 0x8E247B2EB82E2691ULL } }, /* XSUM_XXH128_withSecret_testdata[1357] */ + { 1358, 0x0000000000000000ULL, { 0x57297121D1B7D1E0ULL, 0xBEC349946325229CULL } }, /* XSUM_XXH128_withSecret_testdata[1358] */ + { 1359, 0x0000000000000000ULL, { 0x913742F691445D60ULL, 0x4F8C789430DE6592ULL } }, /* XSUM_XXH128_withSecret_testdata[1359] */ + { 1360, 0x0000000000000000ULL, { 0x489983AE80D732ECULL, 0x12043FA34322CA67ULL } }, /* XSUM_XXH128_withSecret_testdata[1360] */ + { 1361, 0x0000000000000000ULL, { 0x7213A1A7FD59E105ULL, 0x1E02E9213EE979BCULL } }, /* XSUM_XXH128_withSecret_testdata[1361] */ + { 1362, 0x0000000000000000ULL, { 0x2DD2971B61A24DDEULL, 0x27DDE7B28C8C5F67ULL } }, /* XSUM_XXH128_withSecret_testdata[1362] */ + { 1363, 0x0000000000000000ULL, { 0x8CFC1ED61F2AFA6DULL, 0x2B77B9D6FB53DFD6ULL } }, /* XSUM_XXH128_withSecret_testdata[1363] */ + { 1364, 0x0000000000000000ULL, { 0x9A669204AD01AE3CULL, 0xFA95EC582826854EULL } }, /* XSUM_XXH128_withSecret_testdata[1364] */ + { 1365, 0x0000000000000000ULL, { 0xB43133C814D37F9BULL, 0x2FAA95F9FBACE5F0ULL } }, /* XSUM_XXH128_withSecret_testdata[1365] */ + { 1366, 0x0000000000000000ULL, { 0xF0607F89A0028E13ULL, 0x74759E6B062C7D04ULL } }, /* XSUM_XXH128_withSecret_testdata[1366] */ + { 1367, 0x0000000000000000ULL, { 0x02F95A6892D5FDF5ULL, 0xE0C8DA1A0986F020ULL } }, /* XSUM_XXH128_withSecret_testdata[1367] */ + { 1368, 0x0000000000000000ULL, { 0x1FC4256EDE0F7D5CULL, 0x128589AEB9846173ULL } }, /* XSUM_XXH128_withSecret_testdata[1368] */ + { 1369, 0x0000000000000000ULL, { 0x02348B5D138A22CDULL, 0xA43CCCB6EBA57F58ULL } }, /* XSUM_XXH128_withSecret_testdata[1369] */ + { 1370, 0x0000000000000000ULL, { 0x769EB83BD8470425ULL, 0x9A6153088901D188ULL } }, /* XSUM_XXH128_withSecret_testdata[1370] */ + { 1371, 0x0000000000000000ULL, { 0x8E1F11C7BC124DCBULL, 0x3F2021781A35863BULL } }, /* XSUM_XXH128_withSecret_testdata[1371] */ + { 1372, 0x0000000000000000ULL, { 0xC7EEDADD53CD2C1FULL, 0xA62928534139ECF8ULL } }, /* XSUM_XXH128_withSecret_testdata[1372] */ + { 1373, 0x0000000000000000ULL, { 0x7EE46BBE70E984F7ULL, 0x8BFFFA7187128193ULL } }, /* XSUM_XXH128_withSecret_testdata[1373] */ + { 1374, 0x0000000000000000ULL, { 0xF0CDEEEA3466E488ULL, 0xED312636B06E646FULL } }, /* XSUM_XXH128_withSecret_testdata[1374] */ + { 1375, 0x0000000000000000ULL, { 0xD459006BAE6290B1ULL, 0x174FB33A5F3B9524ULL } }, /* XSUM_XXH128_withSecret_testdata[1375] */ + { 1376, 0x0000000000000000ULL, { 0x14E4991605F37CD7ULL, 0xFE2B8208435CEFF1ULL } }, /* XSUM_XXH128_withSecret_testdata[1376] */ + { 1377, 0x0000000000000000ULL, { 0x4E6B79C2847AA59BULL, 0x1B21543C2DEA5EA2ULL } }, /* XSUM_XXH128_withSecret_testdata[1377] */ + { 1378, 0x0000000000000000ULL, { 0xD6461CA4956C3204ULL, 0x2010649BE6BEF5A4ULL } }, /* XSUM_XXH128_withSecret_testdata[1378] */ + { 1379, 0x0000000000000000ULL, { 0xDDBA221F4BF6C519ULL, 0xB6BBFCE9CC2AC247ULL } }, /* XSUM_XXH128_withSecret_testdata[1379] */ + { 1380, 0x0000000000000000ULL, { 0x0B2230A1B569AA9BULL, 0x0D25E669779044E7ULL } }, /* XSUM_XXH128_withSecret_testdata[1380] */ + { 1381, 0x0000000000000000ULL, { 0x25EF2299E0CBC6CAULL, 0x1C64278054A2E455ULL } }, /* XSUM_XXH128_withSecret_testdata[1381] */ + { 1382, 0x0000000000000000ULL, { 0xC4B36FCBFA31C554ULL, 0xEE668F79AEF0A7F8ULL } }, /* XSUM_XXH128_withSecret_testdata[1382] */ + { 1383, 0x0000000000000000ULL, { 0xD6D7671AF406DA16ULL, 0x42FF33F3FDEB3ED8ULL } }, /* XSUM_XXH128_withSecret_testdata[1383] */ + { 1384, 0x0000000000000000ULL, { 0x5BAE5DC9E6E5F381ULL, 0xADDCF823F25F3A5BULL } }, /* XSUM_XXH128_withSecret_testdata[1384] */ + { 1385, 0x0000000000000000ULL, { 0x17DE1CA5FB745BFBULL, 0x7C7F509D3D06BDA5ULL } }, /* XSUM_XXH128_withSecret_testdata[1385] */ + { 1386, 0x0000000000000000ULL, { 0xA1237AD4519070F8ULL, 0xB3731295B781C144ULL } }, /* XSUM_XXH128_withSecret_testdata[1386] */ + { 1387, 0x0000000000000000ULL, { 0xCCC5A02338D61784ULL, 0x46519F7CA62CF7B2ULL } }, /* XSUM_XXH128_withSecret_testdata[1387] */ + { 1388, 0x0000000000000000ULL, { 0x98E931D2B81745CEULL, 0xFE14513AAD55BEFEULL } }, /* XSUM_XXH128_withSecret_testdata[1388] */ + { 1389, 0x0000000000000000ULL, { 0xAA114F0C757036E3ULL, 0xCA3C9CCE7C779D7CULL } }, /* XSUM_XXH128_withSecret_testdata[1389] */ + { 1390, 0x0000000000000000ULL, { 0xAAB5D2F62EF80779ULL, 0x2215A23CEAC3232AULL } }, /* XSUM_XXH128_withSecret_testdata[1390] */ + { 1391, 0x0000000000000000ULL, { 0x63C03FFD8A52E4B2ULL, 0xB62A589F1BD31589ULL } }, /* XSUM_XXH128_withSecret_testdata[1391] */ + { 1392, 0x0000000000000000ULL, { 0x528D9C34036F69F3ULL, 0x97C5A350BEB424CFULL } }, /* XSUM_XXH128_withSecret_testdata[1392] */ + { 1393, 0x0000000000000000ULL, { 0x420ED6C9BAF1BD6CULL, 0x20C27BC717C209D0ULL } }, /* XSUM_XXH128_withSecret_testdata[1393] */ + { 1394, 0x0000000000000000ULL, { 0x9858FCBFF7AD61C7ULL, 0x533EF8B38C27094EULL } }, /* XSUM_XXH128_withSecret_testdata[1394] */ + { 1395, 0x0000000000000000ULL, { 0x078D2E1BAEAC8ED3ULL, 0x9E375FE38AA3A18AULL } }, /* XSUM_XXH128_withSecret_testdata[1395] */ + { 1396, 0x0000000000000000ULL, { 0x76CDEEB41FB0C12AULL, 0x3F58456395C5FEF1ULL } }, /* XSUM_XXH128_withSecret_testdata[1396] */ + { 1397, 0x0000000000000000ULL, { 0xEACEEF02615156F9ULL, 0xCC1322B1D436CDBDULL } }, /* XSUM_XXH128_withSecret_testdata[1397] */ + { 1398, 0x0000000000000000ULL, { 0xB8D39A816267F1DDULL, 0x780430FA5D842319ULL } }, /* XSUM_XXH128_withSecret_testdata[1398] */ + { 1399, 0x0000000000000000ULL, { 0x5994BF3CE38FB2E1ULL, 0xAF7243AC2D031E63ULL } }, /* XSUM_XXH128_withSecret_testdata[1399] */ + { 1400, 0x0000000000000000ULL, { 0x6D91347F36D08F36ULL, 0x596AF228B1DA2064ULL } }, /* XSUM_XXH128_withSecret_testdata[1400] */ + { 1401, 0x0000000000000000ULL, { 0x1DE7C00E0969BDBEULL, 0x727DDBE05C3D4CEEULL } }, /* XSUM_XXH128_withSecret_testdata[1401] */ + { 1402, 0x0000000000000000ULL, { 0x583C26C46085BE1AULL, 0xD7729397925BE77EULL } }, /* XSUM_XXH128_withSecret_testdata[1402] */ + { 1403, 0x0000000000000000ULL, { 0xBEEC35ADCB348DAFULL, 0x28E8B7FA33E7B8DBULL } }, /* XSUM_XXH128_withSecret_testdata[1403] */ + { 1404, 0x0000000000000000ULL, { 0xAFBD331DC6E4386EULL, 0x4C9F052C446FAE25ULL } }, /* XSUM_XXH128_withSecret_testdata[1404] */ + { 1405, 0x0000000000000000ULL, { 0x9559937A90665EE5ULL, 0xD90F9552E89AADEFULL } }, /* XSUM_XXH128_withSecret_testdata[1405] */ + { 1406, 0x0000000000000000ULL, { 0x40116694DD7AAA11ULL, 0xAC1D0586334BCB15ULL } }, /* XSUM_XXH128_withSecret_testdata[1406] */ + { 1407, 0x0000000000000000ULL, { 0xB82A445942E93521ULL, 0x27E52E57175958BFULL } }, /* XSUM_XXH128_withSecret_testdata[1407] */ + { 1408, 0x0000000000000000ULL, { 0x02C47388A3111151ULL, 0xD4BFDF5559290BBCULL } }, /* XSUM_XXH128_withSecret_testdata[1408] */ + { 1409, 0x0000000000000000ULL, { 0xB8AA13002E7B2AD5ULL, 0x667E297A9AEF17D4ULL } }, /* XSUM_XXH128_withSecret_testdata[1409] */ + { 1410, 0x0000000000000000ULL, { 0x25B30179D77075A2ULL, 0x08827878430D674AULL } }, /* XSUM_XXH128_withSecret_testdata[1410] */ + { 1411, 0x0000000000000000ULL, { 0x970C7B6FDB288922ULL, 0x7A977CE72280E709ULL } }, /* XSUM_XXH128_withSecret_testdata[1411] */ + { 1412, 0x0000000000000000ULL, { 0xC4306C0F33D4E63BULL, 0x2DEC705EDF9A1C08ULL } }, /* XSUM_XXH128_withSecret_testdata[1412] */ + { 1413, 0x0000000000000000ULL, { 0xF3E192D4034202A2ULL, 0xAABEC80CCCE02C46ULL } }, /* XSUM_XXH128_withSecret_testdata[1413] */ + { 1414, 0x0000000000000000ULL, { 0xE5E6820E28353565ULL, 0x221A742211F36D62ULL } }, /* XSUM_XXH128_withSecret_testdata[1414] */ + { 1415, 0x0000000000000000ULL, { 0x45F2455297796FB1ULL, 0xC5C4472F21540966ULL } }, /* XSUM_XXH128_withSecret_testdata[1415] */ + { 1416, 0x0000000000000000ULL, { 0xBB08A3CD1068D556ULL, 0x48DF74488E2228B7ULL } }, /* XSUM_XXH128_withSecret_testdata[1416] */ + { 1417, 0x0000000000000000ULL, { 0x8A3267871B458F55ULL, 0x98C4259679046C6CULL } }, /* XSUM_XXH128_withSecret_testdata[1417] */ + { 1418, 0x0000000000000000ULL, { 0x1638764CF805F94FULL, 0x15BBF72B4D246042ULL } }, /* XSUM_XXH128_withSecret_testdata[1418] */ + { 1419, 0x0000000000000000ULL, { 0x34496200B255B27FULL, 0xDBF4BDBD2264F6C9ULL } }, /* XSUM_XXH128_withSecret_testdata[1419] */ + { 1420, 0x0000000000000000ULL, { 0xDD4BC2E2F82B1C2EULL, 0x0923D20B99711ACDULL } }, /* XSUM_XXH128_withSecret_testdata[1420] */ + { 1421, 0x0000000000000000ULL, { 0xEB1A9397DFCFFD59ULL, 0x85A9ABFEC560FF8BULL } }, /* XSUM_XXH128_withSecret_testdata[1421] */ + { 1422, 0x0000000000000000ULL, { 0x1CB9BBFC1E6A953AULL, 0xAC99AAD02BD5FCD3ULL } }, /* XSUM_XXH128_withSecret_testdata[1422] */ + { 1423, 0x0000000000000000ULL, { 0x94D77548A18A149DULL, 0xB4D454032EC15766ULL } }, /* XSUM_XXH128_withSecret_testdata[1423] */ + { 1424, 0x0000000000000000ULL, { 0x5B642D3E95D6C3FBULL, 0xC96422221CEC1B78ULL } }, /* XSUM_XXH128_withSecret_testdata[1424] */ + { 1425, 0x0000000000000000ULL, { 0x732EE523654D619DULL, 0x51DE4291FD547697ULL } }, /* XSUM_XXH128_withSecret_testdata[1425] */ + { 1426, 0x0000000000000000ULL, { 0x08EE73C403588B89ULL, 0x5DA87961B39F08CAULL } }, /* XSUM_XXH128_withSecret_testdata[1426] */ + { 1427, 0x0000000000000000ULL, { 0xBC2120E7C3C28258ULL, 0xE58D1311CE92BF3AULL } }, /* XSUM_XXH128_withSecret_testdata[1427] */ + { 1428, 0x0000000000000000ULL, { 0x323B99D646505E1BULL, 0xB270DBA3D4B14D34ULL } }, /* XSUM_XXH128_withSecret_testdata[1428] */ + { 1429, 0x0000000000000000ULL, { 0x04BB11F406DB02A5ULL, 0xA5BACB0BB5DF0782ULL } }, /* XSUM_XXH128_withSecret_testdata[1429] */ + { 1430, 0x0000000000000000ULL, { 0x2CDAEB0037371D72ULL, 0xC660080F6D3710EEULL } }, /* XSUM_XXH128_withSecret_testdata[1430] */ + { 1431, 0x0000000000000000ULL, { 0xDFE286A81E9CB8ADULL, 0x046FB0280602CC12ULL } }, /* XSUM_XXH128_withSecret_testdata[1431] */ + { 1432, 0x0000000000000000ULL, { 0xFEB49ACC6A4BC21BULL, 0xE6430E5500301F55ULL } }, /* XSUM_XXH128_withSecret_testdata[1432] */ + { 1433, 0x0000000000000000ULL, { 0xDA1B59366DDA2736ULL, 0xD0FE04896276A351ULL } }, /* XSUM_XXH128_withSecret_testdata[1433] */ + { 1434, 0x0000000000000000ULL, { 0xB32AF872B9AD7B6FULL, 0x8DC2AE0B7689AD58ULL } }, /* XSUM_XXH128_withSecret_testdata[1434] */ + { 1435, 0x0000000000000000ULL, { 0x941E87EB0AA89CE0ULL, 0xF1207C65BADE925DULL } }, /* XSUM_XXH128_withSecret_testdata[1435] */ + { 1436, 0x0000000000000000ULL, { 0x4266A95A8D49739CULL, 0x43CE67E9F6E9087AULL } }, /* XSUM_XXH128_withSecret_testdata[1436] */ + { 1437, 0x0000000000000000ULL, { 0xD2C604962750D4F5ULL, 0x9C9E01C80E4FBDFEULL } }, /* XSUM_XXH128_withSecret_testdata[1437] */ + { 1438, 0x0000000000000000ULL, { 0xAD664A49281622EAULL, 0x28FDEF0786F6F34EULL } }, /* XSUM_XXH128_withSecret_testdata[1438] */ + { 1439, 0x0000000000000000ULL, { 0x550E77E8A0DF4278ULL, 0xC560BADD0AEB08CFULL } }, /* XSUM_XXH128_withSecret_testdata[1439] */ + { 1440, 0x0000000000000000ULL, { 0x84DCC5BCBBD6BFE1ULL, 0x00B4A3F2D92214BEULL } }, /* XSUM_XXH128_withSecret_testdata[1440] */ + { 1441, 0x0000000000000000ULL, { 0xF171A82750101FB4ULL, 0x4DE0FBC3F1D114DEULL } }, /* XSUM_XXH128_withSecret_testdata[1441] */ + { 1442, 0x0000000000000000ULL, { 0x7EE49B0C3C0A4AECULL, 0xBCF7F317915B6769ULL } }, /* XSUM_XXH128_withSecret_testdata[1442] */ + { 1443, 0x0000000000000000ULL, { 0x06B1CAF38CCFFA57ULL, 0x19A2AF25EC1B67CEULL } }, /* XSUM_XXH128_withSecret_testdata[1443] */ + { 1444, 0x0000000000000000ULL, { 0x6D26181748CC55FBULL, 0xD8BE1B236744B605ULL } }, /* XSUM_XXH128_withSecret_testdata[1444] */ + { 1445, 0x0000000000000000ULL, { 0x3AEA776E1F1770BFULL, 0xF123487DF6F089F8ULL } }, /* XSUM_XXH128_withSecret_testdata[1445] */ + { 1446, 0x0000000000000000ULL, { 0x755AB27728FCF4EFULL, 0x6CBFFAF0069D02ABULL } }, /* XSUM_XXH128_withSecret_testdata[1446] */ + { 1447, 0x0000000000000000ULL, { 0x1CA7EA1B4B7398F9ULL, 0xB9BDB7E2340C1F9BULL } }, /* XSUM_XXH128_withSecret_testdata[1447] */ + { 1448, 0x0000000000000000ULL, { 0x02448134164C4068ULL, 0x0146C1E97805316EULL } }, /* XSUM_XXH128_withSecret_testdata[1448] */ + { 1449, 0x0000000000000000ULL, { 0xFD5B9CF13FE58C85ULL, 0x4930FBB3484049B7ULL } }, /* XSUM_XXH128_withSecret_testdata[1449] */ + { 1450, 0x0000000000000000ULL, { 0x9801D4DDCD3513BEULL, 0xB33D782A5017CD85ULL } }, /* XSUM_XXH128_withSecret_testdata[1450] */ + { 1451, 0x0000000000000000ULL, { 0x651340C38D9A1EEAULL, 0xBB1EDB7AD7EF46FBULL } }, /* XSUM_XXH128_withSecret_testdata[1451] */ + { 1452, 0x0000000000000000ULL, { 0x77EBF1883BBAC649ULL, 0xC9DE62AEA93FB455ULL } }, /* XSUM_XXH128_withSecret_testdata[1452] */ + { 1453, 0x0000000000000000ULL, { 0x4A3A724827460C8FULL, 0xEC3C29345B392512ULL } }, /* XSUM_XXH128_withSecret_testdata[1453] */ + { 1454, 0x0000000000000000ULL, { 0x93AD20742E286C96ULL, 0x15E4D3B04C38287BULL } }, /* XSUM_XXH128_withSecret_testdata[1454] */ + { 1455, 0x0000000000000000ULL, { 0x4638CA4E88FE3480ULL, 0x2749D7E66C0D0E5FULL } }, /* XSUM_XXH128_withSecret_testdata[1455] */ + { 1456, 0x0000000000000000ULL, { 0xD363EE4842B69F4DULL, 0xC66126DC58049434ULL } }, /* XSUM_XXH128_withSecret_testdata[1456] */ + { 1457, 0x0000000000000000ULL, { 0x43E03B2471EAE066ULL, 0x0CE16DD7C976C5F7ULL } }, /* XSUM_XXH128_withSecret_testdata[1457] */ + { 1458, 0x0000000000000000ULL, { 0x18E733421644F2EBULL, 0xDD06F1CAED324B69ULL } }, /* XSUM_XXH128_withSecret_testdata[1458] */ + { 1459, 0x0000000000000000ULL, { 0x2BF5663715849BC0ULL, 0x225CC6D48EA1B7C6ULL } }, /* XSUM_XXH128_withSecret_testdata[1459] */ + { 1460, 0x0000000000000000ULL, { 0x75C50907EFEF26EAULL, 0x2BBA44AEA132C93AULL } }, /* XSUM_XXH128_withSecret_testdata[1460] */ + { 1461, 0x0000000000000000ULL, { 0xFEE3B16CDD0D7476ULL, 0xAB95923E337A4958ULL } }, /* XSUM_XXH128_withSecret_testdata[1461] */ + { 1462, 0x0000000000000000ULL, { 0x962B8A19330A46F7ULL, 0xDE81E1DCF559714EULL } }, /* XSUM_XXH128_withSecret_testdata[1462] */ + { 1463, 0x0000000000000000ULL, { 0x6D87ECF619EDACA6ULL, 0xFBE486A19382AC5BULL } }, /* XSUM_XXH128_withSecret_testdata[1463] */ + { 1464, 0x0000000000000000ULL, { 0x602E6D6A3853CA99ULL, 0xDA0A984EC4ED9DF0ULL } }, /* XSUM_XXH128_withSecret_testdata[1464] */ + { 1465, 0x0000000000000000ULL, { 0x639C9DD50F215D37ULL, 0x6647A730CD0CA90DULL } }, /* XSUM_XXH128_withSecret_testdata[1465] */ + { 1466, 0x0000000000000000ULL, { 0xF81F9A2366D05732ULL, 0x1E668F9137CF7C13ULL } }, /* XSUM_XXH128_withSecret_testdata[1466] */ + { 1467, 0x0000000000000000ULL, { 0x921B8FC56EFF4938ULL, 0x98D166ADF31DD0DDULL } }, /* XSUM_XXH128_withSecret_testdata[1467] */ + { 1468, 0x0000000000000000ULL, { 0xF17BDFB887F43B8BULL, 0x86147612D6AA4F0DULL } }, /* XSUM_XXH128_withSecret_testdata[1468] */ + { 1469, 0x0000000000000000ULL, { 0x58795B2755E3C94BULL, 0xFA5A206F1BFFF916ULL } }, /* XSUM_XXH128_withSecret_testdata[1469] */ + { 1470, 0x0000000000000000ULL, { 0xE396B152BDEFE195ULL, 0xD311AF3B68E407B0ULL } }, /* XSUM_XXH128_withSecret_testdata[1470] */ + { 1471, 0x0000000000000000ULL, { 0x842AB048580B7330ULL, 0x00FF581A1465DBF1ULL } }, /* XSUM_XXH128_withSecret_testdata[1471] */ + { 1472, 0x0000000000000000ULL, { 0x156DEF4CAB5718C6ULL, 0x30042B4149C48E00ULL } }, /* XSUM_XXH128_withSecret_testdata[1472] */ + { 1473, 0x0000000000000000ULL, { 0xF6CD1ECC31D2665FULL, 0xA81FA8E97A5A9786ULL } }, /* XSUM_XXH128_withSecret_testdata[1473] */ + { 1474, 0x0000000000000000ULL, { 0x0E2E2A87645BEA7FULL, 0xB7BC42E6F0AEBD19ULL } }, /* XSUM_XXH128_withSecret_testdata[1474] */ + { 1475, 0x0000000000000000ULL, { 0x10FC1D4A3AAFB892ULL, 0xCA10804232172D7EULL } }, /* XSUM_XXH128_withSecret_testdata[1475] */ + { 1476, 0x0000000000000000ULL, { 0x326FB3992B7C6656ULL, 0xA025C2A694C20869ULL } }, /* XSUM_XXH128_withSecret_testdata[1476] */ + { 1477, 0x0000000000000000ULL, { 0x720055F94021470BULL, 0xC5CA6F3271E56734ULL } }, /* XSUM_XXH128_withSecret_testdata[1477] */ + { 1478, 0x0000000000000000ULL, { 0x2C27EC8E23D4A26FULL, 0xF9067724B038771DULL } }, /* XSUM_XXH128_withSecret_testdata[1478] */ + { 1479, 0x0000000000000000ULL, { 0x7C86FBA1CE126A67ULL, 0x6EA143522F393E2FULL } }, /* XSUM_XXH128_withSecret_testdata[1479] */ + { 1480, 0x0000000000000000ULL, { 0xA2E3DD5CDB96E9B8ULL, 0x7931B289C0667366ULL } }, /* XSUM_XXH128_withSecret_testdata[1480] */ + { 1481, 0x0000000000000000ULL, { 0x9B6E8326AF521732ULL, 0x4CAB8C445F6C6EADULL } }, /* XSUM_XXH128_withSecret_testdata[1481] */ + { 1482, 0x0000000000000000ULL, { 0x0DD26DC26C67C870ULL, 0xDC37FAD6E2F955A4ULL } }, /* XSUM_XXH128_withSecret_testdata[1482] */ + { 1483, 0x0000000000000000ULL, { 0xDF2EAD57662B2119ULL, 0x2FD85CD13D3538E5ULL } }, /* XSUM_XXH128_withSecret_testdata[1483] */ + { 1484, 0x0000000000000000ULL, { 0xF4F828C9432372F1ULL, 0xECDB79F1507B2141ULL } }, /* XSUM_XXH128_withSecret_testdata[1484] */ + { 1485, 0x0000000000000000ULL, { 0x2F87F791C7EEC150ULL, 0x1723F6412E5AFD0BULL } }, /* XSUM_XXH128_withSecret_testdata[1485] */ + { 1486, 0x0000000000000000ULL, { 0xB8D09106EA4AF4EAULL, 0x2B3CDAD73E846A23ULL } }, /* XSUM_XXH128_withSecret_testdata[1486] */ + { 1487, 0x0000000000000000ULL, { 0x254E4EBABB62AB6AULL, 0x860435378C772FC9ULL } }, /* XSUM_XXH128_withSecret_testdata[1487] */ + { 1488, 0x0000000000000000ULL, { 0xA66C49C2052C3C32ULL, 0x64DB2629CFF0A13EULL } }, /* XSUM_XXH128_withSecret_testdata[1488] */ + { 1489, 0x0000000000000000ULL, { 0x4BD128B01C399EA6ULL, 0x8CFEFBC2FFE8DC8FULL } }, /* XSUM_XXH128_withSecret_testdata[1489] */ + { 1490, 0x0000000000000000ULL, { 0x41B5366204D791CBULL, 0x9E323D0DA5672285ULL } }, /* XSUM_XXH128_withSecret_testdata[1490] */ + { 1491, 0x0000000000000000ULL, { 0x5518478FD7F6D78FULL, 0xFE189B2875CE365BULL } }, /* XSUM_XXH128_withSecret_testdata[1491] */ + { 1492, 0x0000000000000000ULL, { 0x144E7A95EE920229ULL, 0xC9353BA639C1A824ULL } }, /* XSUM_XXH128_withSecret_testdata[1492] */ + { 1493, 0x0000000000000000ULL, { 0x97310E5B1F4BCC47ULL, 0xFAFD395879F0CFB4ULL } }, /* XSUM_XXH128_withSecret_testdata[1493] */ + { 1494, 0x0000000000000000ULL, { 0xD06C471AADFA71BAULL, 0xC26D952BCCF31F39ULL } }, /* XSUM_XXH128_withSecret_testdata[1494] */ + { 1495, 0x0000000000000000ULL, { 0x8165BE3BF3C8CB7AULL, 0x2EE6D0D4E462406CULL } }, /* XSUM_XXH128_withSecret_testdata[1495] */ + { 1496, 0x0000000000000000ULL, { 0xC0A2AE3FC71C0DC9ULL, 0x146AAE8A882E241FULL } }, /* XSUM_XXH128_withSecret_testdata[1496] */ + { 1497, 0x0000000000000000ULL, { 0x09795832DB2F7376ULL, 0x32C10925A42D554FULL } }, /* XSUM_XXH128_withSecret_testdata[1497] */ + { 1498, 0x0000000000000000ULL, { 0x82CF71C8BBC60BE1ULL, 0xFEABB1ABDE3AE350ULL } }, /* XSUM_XXH128_withSecret_testdata[1498] */ + { 1499, 0x0000000000000000ULL, { 0xBB61264AD362D930ULL, 0x30F8D8FEF95E33A3ULL } }, /* XSUM_XXH128_withSecret_testdata[1499] */ + { 1500, 0x0000000000000000ULL, { 0x3B38381C80B00F79ULL, 0x078493317F67BDEEULL } }, /* XSUM_XXH128_withSecret_testdata[1500] */ + { 1501, 0x0000000000000000ULL, { 0x02ED1B074BE91143ULL, 0x8BEB282D250BB805ULL } }, /* XSUM_XXH128_withSecret_testdata[1501] */ + { 1502, 0x0000000000000000ULL, { 0x0492A4AFAC8C52EDULL, 0x335563A164FE3ED7ULL } }, /* XSUM_XXH128_withSecret_testdata[1502] */ + { 1503, 0x0000000000000000ULL, { 0x41707564BEB2A166ULL, 0x48E9CC20CAC04B01ULL } }, /* XSUM_XXH128_withSecret_testdata[1503] */ + { 1504, 0x0000000000000000ULL, { 0x801B6844619FD6A4ULL, 0x81DEAD747BFDC116ULL } }, /* XSUM_XXH128_withSecret_testdata[1504] */ + { 1505, 0x0000000000000000ULL, { 0x38EE44C5E7E6F350ULL, 0xC76A94F76D114E78ULL } }, /* XSUM_XXH128_withSecret_testdata[1505] */ + { 1506, 0x0000000000000000ULL, { 0x491383C0B1871230ULL, 0xEBCB3FF7F949DAC8ULL } }, /* XSUM_XXH128_withSecret_testdata[1506] */ + { 1507, 0x0000000000000000ULL, { 0x06DF1E6DB070BD15ULL, 0x029B19D545C35D92ULL } }, /* XSUM_XXH128_withSecret_testdata[1507] */ + { 1508, 0x0000000000000000ULL, { 0xACC617BF22DAC0CAULL, 0xA24DB94C57098451ULL } }, /* XSUM_XXH128_withSecret_testdata[1508] */ + { 1509, 0x0000000000000000ULL, { 0x27647763439B3B6FULL, 0x9E370D1911850FCEULL } }, /* XSUM_XXH128_withSecret_testdata[1509] */ + { 1510, 0x0000000000000000ULL, { 0xFB388226E5E566DDULL, 0x949D290442E451BEULL } }, /* XSUM_XXH128_withSecret_testdata[1510] */ + { 1511, 0x0000000000000000ULL, { 0xCFFAE0EE63D45CEBULL, 0x62EF202D5BA68ADBULL } }, /* XSUM_XXH128_withSecret_testdata[1511] */ + { 1512, 0x0000000000000000ULL, { 0x0045C1ADFE33D115ULL, 0xEE3B954B76238251ULL } }, /* XSUM_XXH128_withSecret_testdata[1512] */ + { 1513, 0x0000000000000000ULL, { 0x2041DE1902485870ULL, 0x0C90CA77E3DAFC73ULL } }, /* XSUM_XXH128_withSecret_testdata[1513] */ + { 1514, 0x0000000000000000ULL, { 0x752ED0BFE64491E4ULL, 0x40EB1595BEBCBAA3ULL } }, /* XSUM_XXH128_withSecret_testdata[1514] */ + { 1515, 0x0000000000000000ULL, { 0xACF6520478022AE3ULL, 0xA7180B51CE069F97ULL } }, /* XSUM_XXH128_withSecret_testdata[1515] */ + { 1516, 0x0000000000000000ULL, { 0xF92176A24CC1AC82ULL, 0x93F8E389AAB78F93ULL } }, /* XSUM_XXH128_withSecret_testdata[1516] */ + { 1517, 0x0000000000000000ULL, { 0x972D0074898064AAULL, 0x3FFB8DEE0BA341DCULL } }, /* XSUM_XXH128_withSecret_testdata[1517] */ + { 1518, 0x0000000000000000ULL, { 0x3BF9CDC5E8654E28ULL, 0x7681F862F8822AF1ULL } }, /* XSUM_XXH128_withSecret_testdata[1518] */ + { 1519, 0x0000000000000000ULL, { 0x0424912948892A2DULL, 0xCFD378DE956FF859ULL } }, /* XSUM_XXH128_withSecret_testdata[1519] */ + { 1520, 0x0000000000000000ULL, { 0x0C850FFD4E8D900AULL, 0x3F16018EE93FA9FEULL } }, /* XSUM_XXH128_withSecret_testdata[1520] */ + { 1521, 0x0000000000000000ULL, { 0x30A4FB81E01891F6ULL, 0x1914CC9465EBCFAFULL } }, /* XSUM_XXH128_withSecret_testdata[1521] */ + { 1522, 0x0000000000000000ULL, { 0xCA6B5F7264AC7212ULL, 0x400C4064E9EF2090ULL } }, /* XSUM_XXH128_withSecret_testdata[1522] */ + { 1523, 0x0000000000000000ULL, { 0x0459F2C51EAE2D8FULL, 0x2E76F8F544307E32ULL } }, /* XSUM_XXH128_withSecret_testdata[1523] */ + { 1524, 0x0000000000000000ULL, { 0x02F3F01168480D1DULL, 0x761C31FF63FD301FULL } }, /* XSUM_XXH128_withSecret_testdata[1524] */ + { 1525, 0x0000000000000000ULL, { 0x5DA46A20A21BC416ULL, 0x96C592AA5044FE8AULL } }, /* XSUM_XXH128_withSecret_testdata[1525] */ + { 1526, 0x0000000000000000ULL, { 0x8761BB27E289006BULL, 0x0F2BB4011812C453ULL } }, /* XSUM_XXH128_withSecret_testdata[1526] */ + { 1527, 0x0000000000000000ULL, { 0x1FB705B86DFED16EULL, 0x5E25FEB571816DD8ULL } }, /* XSUM_XXH128_withSecret_testdata[1527] */ + { 1528, 0x0000000000000000ULL, { 0xD84E37677B1A4025ULL, 0x6D5E0E595F76DF2FULL } }, /* XSUM_XXH128_withSecret_testdata[1528] */ + { 1529, 0x0000000000000000ULL, { 0x103CF494565CD699ULL, 0x11A6CE24DA22C6E5ULL } }, /* XSUM_XXH128_withSecret_testdata[1529] */ + { 1530, 0x0000000000000000ULL, { 0x64FCC3AC7F95A3B6ULL, 0x662416750927CE0FULL } }, /* XSUM_XXH128_withSecret_testdata[1530] */ + { 1531, 0x0000000000000000ULL, { 0xF3B0049664EC7806ULL, 0xEEA2AC489D09A744ULL } }, /* XSUM_XXH128_withSecret_testdata[1531] */ + { 1532, 0x0000000000000000ULL, { 0x7622E26C33FF525CULL, 0x80D7B90D8C9E0C3CULL } }, /* XSUM_XXH128_withSecret_testdata[1532] */ + { 1533, 0x0000000000000000ULL, { 0xF910057B2F72A925ULL, 0x436399C5596AB3B7ULL } }, /* XSUM_XXH128_withSecret_testdata[1533] */ + { 1534, 0x0000000000000000ULL, { 0xD6DE080F1BD67BB6ULL, 0x0EEE5CE121FCCD63ULL } }, /* XSUM_XXH128_withSecret_testdata[1534] */ + { 1535, 0x0000000000000000ULL, { 0x010C1FC496F3D1C0ULL, 0x599434EE8F4F99C2ULL } }, /* XSUM_XXH128_withSecret_testdata[1535] */ + { 1536, 0x0000000000000000ULL, { 0x5481CAC709A00547ULL, 0x9B43E9240FFB9F2DULL } }, /* XSUM_XXH128_withSecret_testdata[1536] */ + { 1537, 0x0000000000000000ULL, { 0x49142C7D411F3ABBULL, 0x8E0857763EEAE55CULL } }, /* XSUM_XXH128_withSecret_testdata[1537] */ + { 1538, 0x0000000000000000ULL, { 0xA87D244DFACBB7F7ULL, 0x6C4D77340FD5E879ULL } }, /* XSUM_XXH128_withSecret_testdata[1538] */ + { 1539, 0x0000000000000000ULL, { 0x6E9DD1A63172A284ULL, 0xACEB01926E57E69FULL } }, /* XSUM_XXH128_withSecret_testdata[1539] */ + { 1540, 0x0000000000000000ULL, { 0xE3E599C92E0E41BAULL, 0xDB75CFA6A44D5F91ULL } }, /* XSUM_XXH128_withSecret_testdata[1540] */ + { 1541, 0x0000000000000000ULL, { 0xDDD5A3042B4832ABULL, 0xF11BBC273AADAF96ULL } }, /* XSUM_XXH128_withSecret_testdata[1541] */ + { 1542, 0x0000000000000000ULL, { 0xADE9103FEED62C59ULL, 0x5317EC4B13828EB7ULL } }, /* XSUM_XXH128_withSecret_testdata[1542] */ + { 1543, 0x0000000000000000ULL, { 0xB16127F2122E49F3ULL, 0x4FC5C47DAFF734D9ULL } }, /* XSUM_XXH128_withSecret_testdata[1543] */ + { 1544, 0x0000000000000000ULL, { 0x5D5D8B07ECFC25DFULL, 0x7FCDF79BD44034F7ULL } }, /* XSUM_XXH128_withSecret_testdata[1544] */ + { 1545, 0x0000000000000000ULL, { 0xA1C0A4CB4424231BULL, 0xA12D2A07326DCECFULL } }, /* XSUM_XXH128_withSecret_testdata[1545] */ + { 1546, 0x0000000000000000ULL, { 0x747982BBE45543EFULL, 0x36B830124813BFCBULL } }, /* XSUM_XXH128_withSecret_testdata[1546] */ + { 1547, 0x0000000000000000ULL, { 0x9ECCEA6659D59EDCULL, 0x4E7FE625028D2E96ULL } }, /* XSUM_XXH128_withSecret_testdata[1547] */ + { 1548, 0x0000000000000000ULL, { 0x38769A9591DD2D12ULL, 0xF17160DC7F682E39ULL } }, /* XSUM_XXH128_withSecret_testdata[1548] */ + { 1549, 0x0000000000000000ULL, { 0x027F6C6D14CCF327ULL, 0x760EDA013FD76603ULL } }, /* XSUM_XXH128_withSecret_testdata[1549] */ + { 1550, 0x0000000000000000ULL, { 0xDE5498324B8F85A4ULL, 0xFFD66410E70BEDE0ULL } }, /* XSUM_XXH128_withSecret_testdata[1550] */ + { 1551, 0x0000000000000000ULL, { 0xB536DD44995AFC76ULL, 0x73CDFA14D8F8EB31ULL } }, /* XSUM_XXH128_withSecret_testdata[1551] */ + { 1552, 0x0000000000000000ULL, { 0x770720AFAB500B79ULL, 0x8AC71A0E5F75634BULL } }, /* XSUM_XXH128_withSecret_testdata[1552] */ + { 1553, 0x0000000000000000ULL, { 0x06D08A6EFB7981ACULL, 0x6BFDCBAF130C1117ULL } }, /* XSUM_XXH128_withSecret_testdata[1553] */ + { 1554, 0x0000000000000000ULL, { 0xB41B472B821086DDULL, 0x513A5EA565ACAD90ULL } }, /* XSUM_XXH128_withSecret_testdata[1554] */ + { 1555, 0x0000000000000000ULL, { 0x242E5AE5EEF53F40ULL, 0xEB9A684DDEF624F7ULL } }, /* XSUM_XXH128_withSecret_testdata[1555] */ + { 1556, 0x0000000000000000ULL, { 0x35FAA23CCE3198F2ULL, 0xF0FA60B4881298D2ULL } }, /* XSUM_XXH128_withSecret_testdata[1556] */ + { 1557, 0x0000000000000000ULL, { 0xD23B5C173B99B35BULL, 0xCFC887FC00EAF66AULL } }, /* XSUM_XXH128_withSecret_testdata[1557] */ + { 1558, 0x0000000000000000ULL, { 0xA33782D76DDC38EBULL, 0x5E908C4AAA86E984ULL } }, /* XSUM_XXH128_withSecret_testdata[1558] */ + { 1559, 0x0000000000000000ULL, { 0x9E5A86B789766272ULL, 0x965299942D320A2FULL } }, /* XSUM_XXH128_withSecret_testdata[1559] */ + { 1560, 0x0000000000000000ULL, { 0xB507A75CF1020B56ULL, 0xEBF52521D791C5A1ULL } }, /* XSUM_XXH128_withSecret_testdata[1560] */ + { 1561, 0x0000000000000000ULL, { 0x6124EB9E1634FC72ULL, 0x71D7B07765BC07A0ULL } }, /* XSUM_XXH128_withSecret_testdata[1561] */ + { 1562, 0x0000000000000000ULL, { 0xEE3BD02C1CE375CAULL, 0x03D00C2AAB65A238ULL } }, /* XSUM_XXH128_withSecret_testdata[1562] */ + { 1563, 0x0000000000000000ULL, { 0xECA0D51E89F2E7ECULL, 0x98BC89F11336C53BULL } }, /* XSUM_XXH128_withSecret_testdata[1563] */ + { 1564, 0x0000000000000000ULL, { 0xCE30CFCB000C0C5FULL, 0xB19946328CE6A3CCULL } }, /* XSUM_XXH128_withSecret_testdata[1564] */ + { 1565, 0x0000000000000000ULL, { 0x14F3CDA1154E344DULL, 0x5A145871C5C0E091ULL } }, /* XSUM_XXH128_withSecret_testdata[1565] */ + { 1566, 0x0000000000000000ULL, { 0x116A649F8D9706A2ULL, 0x503121A0971FE1BAULL } }, /* XSUM_XXH128_withSecret_testdata[1566] */ + { 1567, 0x0000000000000000ULL, { 0xA28D05E3EA45CA69ULL, 0x9CB8EA55B04F2B5FULL } }, /* XSUM_XXH128_withSecret_testdata[1567] */ + { 1568, 0x0000000000000000ULL, { 0x710FD06512AA5BE8ULL, 0x86C21CBB4D65FF80ULL } }, /* XSUM_XXH128_withSecret_testdata[1568] */ + { 1569, 0x0000000000000000ULL, { 0x784391AF1A9BA1B7ULL, 0x368D0EF3C25B95A2ULL } }, /* XSUM_XXH128_withSecret_testdata[1569] */ + { 1570, 0x0000000000000000ULL, { 0x79FA23ABB58BBCFFULL, 0xEBF9E4DFB48F77B2ULL } }, /* XSUM_XXH128_withSecret_testdata[1570] */ + { 1571, 0x0000000000000000ULL, { 0x1DA468E8064598A5ULL, 0x2B7EDCD25B09EF70ULL } }, /* XSUM_XXH128_withSecret_testdata[1571] */ + { 1572, 0x0000000000000000ULL, { 0xB4C4FD66D826C688ULL, 0x03D60F2E20EB3C97ULL } }, /* XSUM_XXH128_withSecret_testdata[1572] */ + { 1573, 0x0000000000000000ULL, { 0x35D164F09F1FB56DULL, 0x3B745972A4B7EA05ULL } }, /* XSUM_XXH128_withSecret_testdata[1573] */ + { 1574, 0x0000000000000000ULL, { 0x448F80DC191044CEULL, 0x9F684EF83E2B9407ULL } }, /* XSUM_XXH128_withSecret_testdata[1574] */ + { 1575, 0x0000000000000000ULL, { 0xECBE6AF44DED7706ULL, 0xBA800CCA5E973648ULL } }, /* XSUM_XXH128_withSecret_testdata[1575] */ + { 1576, 0x0000000000000000ULL, { 0xC7D9766F768E79A9ULL, 0x4688FC07F3785634ULL } }, /* XSUM_XXH128_withSecret_testdata[1576] */ + { 1577, 0x0000000000000000ULL, { 0x4028751D1475BEE9ULL, 0x3EB15DD61C7F6A1FULL } }, /* XSUM_XXH128_withSecret_testdata[1577] */ + { 1578, 0x0000000000000000ULL, { 0x17190FA37A712740ULL, 0x6631D559CAE48AAAULL } }, /* XSUM_XXH128_withSecret_testdata[1578] */ + { 1579, 0x0000000000000000ULL, { 0x5C433B8B127909A1ULL, 0x9558FD4DBA97544BULL } }, /* XSUM_XXH128_withSecret_testdata[1579] */ + { 1580, 0x0000000000000000ULL, { 0x734558FFEE5A74D2ULL, 0x736199966F8B837BULL } }, /* XSUM_XXH128_withSecret_testdata[1580] */ + { 1581, 0x0000000000000000ULL, { 0xDF7A69D5C69D2389ULL, 0x7A5E74218AB69631ULL } }, /* XSUM_XXH128_withSecret_testdata[1581] */ + { 1582, 0x0000000000000000ULL, { 0x11C96BFB6DE24BE0ULL, 0x3618D395F4DC53F9ULL } }, /* XSUM_XXH128_withSecret_testdata[1582] */ + { 1583, 0x0000000000000000ULL, { 0xD74F6A9969484337ULL, 0xBF16D35312F90445ULL } }, /* XSUM_XXH128_withSecret_testdata[1583] */ + { 1584, 0x0000000000000000ULL, { 0x7A2527499384FBDDULL, 0x740ED71895CF200AULL } }, /* XSUM_XXH128_withSecret_testdata[1584] */ + { 1585, 0x0000000000000000ULL, { 0xA7DD5A711E85FC3FULL, 0x00CD152BA8D3979FULL } }, /* XSUM_XXH128_withSecret_testdata[1585] */ + { 1586, 0x0000000000000000ULL, { 0x771AD1F9E0EFDD27ULL, 0x64084995F54D98E4ULL } }, /* XSUM_XXH128_withSecret_testdata[1586] */ + { 1587, 0x0000000000000000ULL, { 0xCD346BF1A2FC701BULL, 0x764CD8A9B3BA0B53ULL } }, /* XSUM_XXH128_withSecret_testdata[1587] */ + { 1588, 0x0000000000000000ULL, { 0x2B2C5902B173E4D1ULL, 0xB310F749EA3FCF51ULL } }, /* XSUM_XXH128_withSecret_testdata[1588] */ + { 1589, 0x0000000000000000ULL, { 0x7C4D63D009E0E16AULL, 0xB2CEEC14F57EA843ULL } }, /* XSUM_XXH128_withSecret_testdata[1589] */ + { 1590, 0x0000000000000000ULL, { 0x0BE8E14E1F1667C4ULL, 0x387BD33664A95B64ULL } }, /* XSUM_XXH128_withSecret_testdata[1590] */ + { 1591, 0x0000000000000000ULL, { 0xDE41BB81852B1504ULL, 0x9CE2AF254FDB0EE9ULL } }, /* XSUM_XXH128_withSecret_testdata[1591] */ + { 1592, 0x0000000000000000ULL, { 0x42919116FF583596ULL, 0xCC662E1F1C46F052ULL } }, /* XSUM_XXH128_withSecret_testdata[1592] */ + { 1593, 0x0000000000000000ULL, { 0xCB6BB1CDC70E944EULL, 0xE07D122F7C54D0D2ULL } }, /* XSUM_XXH128_withSecret_testdata[1593] */ + { 1594, 0x0000000000000000ULL, { 0xE6FB522266DB7768ULL, 0x1006DC4AFBDABC1EULL } }, /* XSUM_XXH128_withSecret_testdata[1594] */ + { 1595, 0x0000000000000000ULL, { 0x3077B5CE685507F9ULL, 0x5C82EA376A56EB1EULL } }, /* XSUM_XXH128_withSecret_testdata[1595] */ + { 1596, 0x0000000000000000ULL, { 0x4C54EF7FD7168075ULL, 0x1C21F4D866CB4FF1ULL } }, /* XSUM_XXH128_withSecret_testdata[1596] */ + { 1597, 0x0000000000000000ULL, { 0x8558C82444B27772ULL, 0x48BDDAF8B54CE45CULL } }, /* XSUM_XXH128_withSecret_testdata[1597] */ + { 1598, 0x0000000000000000ULL, { 0x93E87A5F083EE095ULL, 0xE410DF7A5D4B1F60ULL } }, /* XSUM_XXH128_withSecret_testdata[1598] */ + { 1599, 0x0000000000000000ULL, { 0x23CA33AF6972592DULL, 0xDF3D4C241F6D88F1ULL } }, /* XSUM_XXH128_withSecret_testdata[1599] */ + { 1600, 0x0000000000000000ULL, { 0x4CD10D6E0C2120FFULL, 0x2EF6CBF1F60BF0F7ULL } }, /* XSUM_XXH128_withSecret_testdata[1600] */ + { 1601, 0x0000000000000000ULL, { 0x9B922B5C8DAEB98FULL, 0x17A561F7F2E968ADULL } }, /* XSUM_XXH128_withSecret_testdata[1601] */ + { 1602, 0x0000000000000000ULL, { 0x0018FD000AD87B0DULL, 0x6187908B26966708ULL } }, /* XSUM_XXH128_withSecret_testdata[1602] */ + { 1603, 0x0000000000000000ULL, { 0x3D5FD5FF17C26FB9ULL, 0x97022B96B4FACDE8ULL } }, /* XSUM_XXH128_withSecret_testdata[1603] */ + { 1604, 0x0000000000000000ULL, { 0x124D24DBBF79D2FBULL, 0x9BE265E23D83A80BULL } }, /* XSUM_XXH128_withSecret_testdata[1604] */ + { 1605, 0x0000000000000000ULL, { 0xBBD097F42CCC1414ULL, 0x9E4A10B9688E284CULL } }, /* XSUM_XXH128_withSecret_testdata[1605] */ + { 1606, 0x0000000000000000ULL, { 0x7A6DB19C8E6004F9ULL, 0x12A1E292841E7096ULL } }, /* XSUM_XXH128_withSecret_testdata[1606] */ + { 1607, 0x0000000000000000ULL, { 0x3E9DD3BFF6393C7FULL, 0x6A0B91AE32B7ED50ULL } }, /* XSUM_XXH128_withSecret_testdata[1607] */ + { 1608, 0x0000000000000000ULL, { 0xA1E2CEB3A64DD81BULL, 0x2AEC3F3512BB07F3ULL } }, /* XSUM_XXH128_withSecret_testdata[1608] */ + { 1609, 0x0000000000000000ULL, { 0x60D5E04AB38C48D6ULL, 0x5CCBE84B0A0AF8D5ULL } }, /* XSUM_XXH128_withSecret_testdata[1609] */ + { 1610, 0x0000000000000000ULL, { 0xAF05C39906A7D047ULL, 0xCD11D5DB371FA63BULL } }, /* XSUM_XXH128_withSecret_testdata[1610] */ + { 1611, 0x0000000000000000ULL, { 0x1539BA514ED93D01ULL, 0x2605C23EC0AA7A27ULL } }, /* XSUM_XXH128_withSecret_testdata[1611] */ + { 1612, 0x0000000000000000ULL, { 0x1AED0B3FE9A4225AULL, 0x659EE257678CD2DDULL } }, /* XSUM_XXH128_withSecret_testdata[1612] */ + { 1613, 0x0000000000000000ULL, { 0x28AA65B421E1EA27ULL, 0xBE52C7657BE7AECEULL } }, /* XSUM_XXH128_withSecret_testdata[1613] */ + { 1614, 0x0000000000000000ULL, { 0x34E1C901C76FEEA4ULL, 0x46D98702F671FEA5ULL } }, /* XSUM_XXH128_withSecret_testdata[1614] */ + { 1615, 0x0000000000000000ULL, { 0x4833BF58602325C5ULL, 0xC97F97EB95EFBB47ULL } }, /* XSUM_XXH128_withSecret_testdata[1615] */ + { 1616, 0x0000000000000000ULL, { 0x8BBE98BDA7BC8B0EULL, 0x615577491F7EDE90ULL } }, /* XSUM_XXH128_withSecret_testdata[1616] */ + { 1617, 0x0000000000000000ULL, { 0x95E2FC99C7236B83ULL, 0xDD6F3D8ECC3F1193ULL } }, /* XSUM_XXH128_withSecret_testdata[1617] */ + { 1618, 0x0000000000000000ULL, { 0x76E2F0B45C4F5599ULL, 0x2ABC7E0A2DF2B47CULL } }, /* XSUM_XXH128_withSecret_testdata[1618] */ + { 1619, 0x0000000000000000ULL, { 0x0A06FF738EDD1822ULL, 0x50187A7927A233F7ULL } }, /* XSUM_XXH128_withSecret_testdata[1619] */ + { 1620, 0x0000000000000000ULL, { 0xEE02AF50A2EFA79CULL, 0xB21BE3567B4A89CEULL } }, /* XSUM_XXH128_withSecret_testdata[1620] */ + { 1621, 0x0000000000000000ULL, { 0xC7BF41F42FDF6DADULL, 0xBFD3E0C51C8E1272ULL } }, /* XSUM_XXH128_withSecret_testdata[1621] */ + { 1622, 0x0000000000000000ULL, { 0x36691EE554839BE8ULL, 0x87B404A9987CE0F9ULL } }, /* XSUM_XXH128_withSecret_testdata[1622] */ + { 1623, 0x0000000000000000ULL, { 0x1817F64ED6B4307AULL, 0x1C1C6EEAD4CF7BBDULL } }, /* XSUM_XXH128_withSecret_testdata[1623] */ + { 1624, 0x0000000000000000ULL, { 0xB0D50D4B178B6538ULL, 0x2FC54964960EA3F9ULL } }, /* XSUM_XXH128_withSecret_testdata[1624] */ + { 1625, 0x0000000000000000ULL, { 0x5D5F2EF8171826E3ULL, 0x66823AC63879F6F3ULL } }, /* XSUM_XXH128_withSecret_testdata[1625] */ + { 1626, 0x0000000000000000ULL, { 0x545F8280EEC1AA1EULL, 0x3552A7D08502C2D7ULL } }, /* XSUM_XXH128_withSecret_testdata[1626] */ + { 1627, 0x0000000000000000ULL, { 0x3F6E2E4A9259428AULL, 0x4075DF64CD4F5A7BULL } }, /* XSUM_XXH128_withSecret_testdata[1627] */ + { 1628, 0x0000000000000000ULL, { 0x5117B94804A0D3B5ULL, 0x9DCF796C714BE364ULL } }, /* XSUM_XXH128_withSecret_testdata[1628] */ + { 1629, 0x0000000000000000ULL, { 0x5206F42D911152A1ULL, 0x1023A928C83D0369ULL } }, /* XSUM_XXH128_withSecret_testdata[1629] */ + { 1630, 0x0000000000000000ULL, { 0x6D53167B653D23A3ULL, 0x9EF085C5FC2F7F0EULL } }, /* XSUM_XXH128_withSecret_testdata[1630] */ + { 1631, 0x0000000000000000ULL, { 0x61CF1FC1538031F9ULL, 0x37B5AB6EAD8FD633ULL } }, /* XSUM_XXH128_withSecret_testdata[1631] */ + { 1632, 0x0000000000000000ULL, { 0xBC6E90CFA1602D65ULL, 0x3F20362E4991A35BULL } }, /* XSUM_XXH128_withSecret_testdata[1632] */ + { 1633, 0x0000000000000000ULL, { 0xB98632BEADED0CF2ULL, 0x384112A79506389DULL } }, /* XSUM_XXH128_withSecret_testdata[1633] */ + { 1634, 0x0000000000000000ULL, { 0x0F251F190D9F95EFULL, 0xFB92D82FF5E924EFULL } }, /* XSUM_XXH128_withSecret_testdata[1634] */ + { 1635, 0x0000000000000000ULL, { 0x99F9CDF97192A511ULL, 0x1BA75D3B3CC72172ULL } }, /* XSUM_XXH128_withSecret_testdata[1635] */ + { 1636, 0x0000000000000000ULL, { 0x30473897CAA4D5E4ULL, 0x7E80E23CDED4B031ULL } }, /* XSUM_XXH128_withSecret_testdata[1636] */ + { 1637, 0x0000000000000000ULL, { 0xE921D35B983CD4DCULL, 0x31FB3475FF758965ULL } }, /* XSUM_XXH128_withSecret_testdata[1637] */ + { 1638, 0x0000000000000000ULL, { 0x432796EED8D03163ULL, 0x762789F4E27ABA59ULL } }, /* XSUM_XXH128_withSecret_testdata[1638] */ + { 1639, 0x0000000000000000ULL, { 0xED5FDDE2580CFA2DULL, 0x9F30417E40ABB5F9ULL } }, /* XSUM_XXH128_withSecret_testdata[1639] */ + { 1640, 0x0000000000000000ULL, { 0x88B24FCACD224C33ULL, 0x74D13237E55408B4ULL } }, /* XSUM_XXH128_withSecret_testdata[1640] */ + { 1641, 0x0000000000000000ULL, { 0x7AD61154D515D039ULL, 0x8F7DF9D85938AF7DULL } }, /* XSUM_XXH128_withSecret_testdata[1641] */ + { 1642, 0x0000000000000000ULL, { 0xBD453138BF7C74B4ULL, 0x5AA8C669516F2E09ULL } }, /* XSUM_XXH128_withSecret_testdata[1642] */ + { 1643, 0x0000000000000000ULL, { 0x9C56497963AAE6CAULL, 0x5397D4CEC34A9066ULL } }, /* XSUM_XXH128_withSecret_testdata[1643] */ + { 1644, 0x0000000000000000ULL, { 0x394A05C13E70EE7BULL, 0xA9EBCF69927EE5E4ULL } }, /* XSUM_XXH128_withSecret_testdata[1644] */ + { 1645, 0x0000000000000000ULL, { 0x64C3F15471DBCB81ULL, 0x4767275650E76DC9ULL } }, /* XSUM_XXH128_withSecret_testdata[1645] */ + { 1646, 0x0000000000000000ULL, { 0x0AE2FFAD636B5F1AULL, 0x4AF8EEC42F830257ULL } }, /* XSUM_XXH128_withSecret_testdata[1646] */ + { 1647, 0x0000000000000000ULL, { 0xE57655AC00FEF568ULL, 0x9D28FACC0BB5FEB5ULL } }, /* XSUM_XXH128_withSecret_testdata[1647] */ + { 1648, 0x0000000000000000ULL, { 0xB2F7378B9D2E3678ULL, 0x0BF193C9057B9232ULL } }, /* XSUM_XXH128_withSecret_testdata[1648] */ + { 1649, 0x0000000000000000ULL, { 0x4750A565227FF789ULL, 0x8C5187FA02EC0DE5ULL } }, /* XSUM_XXH128_withSecret_testdata[1649] */ + { 1650, 0x0000000000000000ULL, { 0xF29DF3F473111615ULL, 0x71081B290C3FBDD2ULL } }, /* XSUM_XXH128_withSecret_testdata[1650] */ + { 1651, 0x0000000000000000ULL, { 0x1849FA7D03F17040ULL, 0xD58DCA462EFC30F2ULL } }, /* XSUM_XXH128_withSecret_testdata[1651] */ + { 1652, 0x0000000000000000ULL, { 0x6DAC844A0DE17D75ULL, 0xC2AD42976A3E8513ULL } }, /* XSUM_XXH128_withSecret_testdata[1652] */ + { 1653, 0x0000000000000000ULL, { 0xE6E4CAD7D1E68B8BULL, 0x62A8AF07DCCD6CD0ULL } }, /* XSUM_XXH128_withSecret_testdata[1653] */ + { 1654, 0x0000000000000000ULL, { 0x3E9D32F021CDD06EULL, 0x1833B6D97DE9C8E5ULL } }, /* XSUM_XXH128_withSecret_testdata[1654] */ + { 1655, 0x0000000000000000ULL, { 0xAE40EADE5A295701ULL, 0x7D1AF2ABF9646F56ULL } }, /* XSUM_XXH128_withSecret_testdata[1655] */ + { 1656, 0x0000000000000000ULL, { 0x0DFAFD784832F12FULL, 0xD416563B0E6F23C0ULL } }, /* XSUM_XXH128_withSecret_testdata[1656] */ + { 1657, 0x0000000000000000ULL, { 0xB53A09FE4BA3595DULL, 0x80C60C4E2D629161ULL } }, /* XSUM_XXH128_withSecret_testdata[1657] */ + { 1658, 0x0000000000000000ULL, { 0x35D3EFCD7A75BE8CULL, 0xFAE5F4D81E52A917ULL } }, /* XSUM_XXH128_withSecret_testdata[1658] */ + { 1659, 0x0000000000000000ULL, { 0x5FCDD6ACFE98BB96ULL, 0xCEEFCA3680547BBCULL } }, /* XSUM_XXH128_withSecret_testdata[1659] */ + { 1660, 0x0000000000000000ULL, { 0xE3552314056A2927ULL, 0xB04BDB3A70E2CC66ULL } }, /* XSUM_XXH128_withSecret_testdata[1660] */ + { 1661, 0x0000000000000000ULL, { 0x821AAEA79BDC7C91ULL, 0x4D032382ABB154BCULL } }, /* XSUM_XXH128_withSecret_testdata[1661] */ + { 1662, 0x0000000000000000ULL, { 0xD165076A82DC0232ULL, 0x42EC515811D267B4ULL } }, /* XSUM_XXH128_withSecret_testdata[1662] */ + { 1663, 0x0000000000000000ULL, { 0x0E65012F1826C7EBULL, 0x61E10B668F1427CBULL } }, /* XSUM_XXH128_withSecret_testdata[1663] */ + { 1664, 0x0000000000000000ULL, { 0x6A6E3428C9890B5AULL, 0xB08D97D7DD5815EEULL } }, /* XSUM_XXH128_withSecret_testdata[1664] */ + { 1665, 0x0000000000000000ULL, { 0x9ED6B48A75E0CF91ULL, 0x4EC96865B9DA6E69ULL } }, /* XSUM_XXH128_withSecret_testdata[1665] */ + { 1666, 0x0000000000000000ULL, { 0xF54699B3DAF2CD27ULL, 0x75596135E1BA75E7ULL } }, /* XSUM_XXH128_withSecret_testdata[1666] */ + { 1667, 0x0000000000000000ULL, { 0x6215FAF5576D64C6ULL, 0xB7F768B12656E42BULL } }, /* XSUM_XXH128_withSecret_testdata[1667] */ + { 1668, 0x0000000000000000ULL, { 0x1F8EDBAC4C8F5E72ULL, 0x9058D242E52201EDULL } }, /* XSUM_XXH128_withSecret_testdata[1668] */ + { 1669, 0x0000000000000000ULL, { 0x285606E5D557A904ULL, 0x04BF19ACACD2D8ACULL } }, /* XSUM_XXH128_withSecret_testdata[1669] */ + { 1670, 0x0000000000000000ULL, { 0xE03302BF7677FC2AULL, 0xF95F9DB58A586A49ULL } }, /* XSUM_XXH128_withSecret_testdata[1670] */ + { 1671, 0x0000000000000000ULL, { 0x1018E6584D733993ULL, 0xB2563FC88A4D7D07ULL } }, /* XSUM_XXH128_withSecret_testdata[1671] */ + { 1672, 0x0000000000000000ULL, { 0x9FC949445C23D3FDULL, 0x673215AEB7475FFAULL } }, /* XSUM_XXH128_withSecret_testdata[1672] */ + { 1673, 0x0000000000000000ULL, { 0x98D13467937AE9B5ULL, 0x4834A2879FAC71E1ULL } }, /* XSUM_XXH128_withSecret_testdata[1673] */ + { 1674, 0x0000000000000000ULL, { 0x021FC4717A1A5C29ULL, 0x8D1F702C579B0EA1ULL } }, /* XSUM_XXH128_withSecret_testdata[1674] */ + { 1675, 0x0000000000000000ULL, { 0xEC9DD872987A7305ULL, 0x94D271FA329B503CULL } }, /* XSUM_XXH128_withSecret_testdata[1675] */ + { 1676, 0x0000000000000000ULL, { 0x538C7C9BFF65F8DFULL, 0xF887AAF02F371905ULL } }, /* XSUM_XXH128_withSecret_testdata[1676] */ + { 1677, 0x0000000000000000ULL, { 0x16098A7AEDE26A97ULL, 0xBFA9CB6EABDD58B9ULL } }, /* XSUM_XXH128_withSecret_testdata[1677] */ + { 1678, 0x0000000000000000ULL, { 0x4788AA014F8A7CE5ULL, 0xBADD94A7D2BE4912ULL } }, /* XSUM_XXH128_withSecret_testdata[1678] */ + { 1679, 0x0000000000000000ULL, { 0xB60E9D831D9A523AULL, 0x34A9456650245443ULL } }, /* XSUM_XXH128_withSecret_testdata[1679] */ + { 1680, 0x0000000000000000ULL, { 0xA69CA251D7BAB81DULL, 0xD693A3FB6257D448ULL } }, /* XSUM_XXH128_withSecret_testdata[1680] */ + { 1681, 0x0000000000000000ULL, { 0x0A5C49F10F98DAB2ULL, 0xD3EBD8362487E003ULL } }, /* XSUM_XXH128_withSecret_testdata[1681] */ + { 1682, 0x0000000000000000ULL, { 0xBF8AD466578B929CULL, 0xCE81AC92A07927E1ULL } }, /* XSUM_XXH128_withSecret_testdata[1682] */ + { 1683, 0x0000000000000000ULL, { 0xA3B49891EE338F11ULL, 0xCE852C1E037151E1ULL } }, /* XSUM_XXH128_withSecret_testdata[1683] */ + { 1684, 0x0000000000000000ULL, { 0x2B767F09C4073B50ULL, 0x4A71B86370C953F3ULL } }, /* XSUM_XXH128_withSecret_testdata[1684] */ + { 1685, 0x0000000000000000ULL, { 0xE44207E3D4A0F1A8ULL, 0x86601CFA15C0C60FULL } }, /* XSUM_XXH128_withSecret_testdata[1685] */ + { 1686, 0x0000000000000000ULL, { 0xB2963A7EF9647A12ULL, 0x946BC7872F92F4A8ULL } }, /* XSUM_XXH128_withSecret_testdata[1686] */ + { 1687, 0x0000000000000000ULL, { 0x7B5D91DF290769D6ULL, 0xFA4644460C661C5CULL } }, /* XSUM_XXH128_withSecret_testdata[1687] */ + { 1688, 0x0000000000000000ULL, { 0x5A4F1BCF6ED04EE1ULL, 0x4D96A966A6F6A652ULL } }, /* XSUM_XXH128_withSecret_testdata[1688] */ + { 1689, 0x0000000000000000ULL, { 0xD98304DC00E59A9AULL, 0xC16EDD4F01DC2CB7ULL } }, /* XSUM_XXH128_withSecret_testdata[1689] */ + { 1690, 0x0000000000000000ULL, { 0x70E03BCE13B9D2F7ULL, 0xA84A5DE16AD111FDULL } }, /* XSUM_XXH128_withSecret_testdata[1690] */ + { 1691, 0x0000000000000000ULL, { 0x9778670DA0C866DEULL, 0xE0EB24C778E484E6ULL } }, /* XSUM_XXH128_withSecret_testdata[1691] */ + { 1692, 0x0000000000000000ULL, { 0x76DDF8E2E304FE1BULL, 0x30A01181E71B5E35ULL } }, /* XSUM_XXH128_withSecret_testdata[1692] */ + { 1693, 0x0000000000000000ULL, { 0xA93C2CEE9AAC9C51ULL, 0x7D5057668893231CULL } }, /* XSUM_XXH128_withSecret_testdata[1693] */ + { 1694, 0x0000000000000000ULL, { 0xA191D1C7778C72B8ULL, 0x56BC7D7A50570B3FULL } }, /* XSUM_XXH128_withSecret_testdata[1694] */ + { 1695, 0x0000000000000000ULL, { 0x9286563D24E83CF3ULL, 0x7411E26CECE7B476ULL } }, /* XSUM_XXH128_withSecret_testdata[1695] */ + { 1696, 0x0000000000000000ULL, { 0x30CB745D74507075ULL, 0xAFDA2A8FEAB5299EULL } }, /* XSUM_XXH128_withSecret_testdata[1696] */ + { 1697, 0x0000000000000000ULL, { 0x1AD39F0EB4A14D62ULL, 0x531CC3FE008018EBULL } }, /* XSUM_XXH128_withSecret_testdata[1697] */ + { 1698, 0x0000000000000000ULL, { 0x75E51A9F37A4DE9BULL, 0xC1C1FC69EEBB8BF3ULL } }, /* XSUM_XXH128_withSecret_testdata[1698] */ + { 1699, 0x0000000000000000ULL, { 0xAFAE965CF499655AULL, 0x7A933605777A6190ULL } }, /* XSUM_XXH128_withSecret_testdata[1699] */ + { 1700, 0x0000000000000000ULL, { 0xA2C74FD12C5B9658ULL, 0xBCF019773A05057AULL } }, /* XSUM_XXH128_withSecret_testdata[1700] */ + { 1701, 0x0000000000000000ULL, { 0x03D678483CBA4A68ULL, 0xAD7AF2D9460D0526ULL } }, /* XSUM_XXH128_withSecret_testdata[1701] */ + { 1702, 0x0000000000000000ULL, { 0xA10387282F95641DULL, 0x3BAE2041C3151B23ULL } }, /* XSUM_XXH128_withSecret_testdata[1702] */ + { 1703, 0x0000000000000000ULL, { 0x2F97A3C5F8B955FEULL, 0x89429CA5E3A53C50ULL } }, /* XSUM_XXH128_withSecret_testdata[1703] */ + { 1704, 0x0000000000000000ULL, { 0x9F0ADFFC22A97C8AULL, 0x94C535CA82DAD455ULL } }, /* XSUM_XXH128_withSecret_testdata[1704] */ + { 1705, 0x0000000000000000ULL, { 0x1A00C96BC09EDDECULL, 0xCB06009FE58E3EE1ULL } }, /* XSUM_XXH128_withSecret_testdata[1705] */ + { 1706, 0x0000000000000000ULL, { 0x0AEEA8B351F7C655ULL, 0x4304552001BA5C04ULL } }, /* XSUM_XXH128_withSecret_testdata[1706] */ + { 1707, 0x0000000000000000ULL, { 0x5146CA83E1B94E12ULL, 0xBC594183BBE80DC2ULL } }, /* XSUM_XXH128_withSecret_testdata[1707] */ + { 1708, 0x0000000000000000ULL, { 0x5BBA3ED7929E5FA5ULL, 0x17D29DFB8D9309C6ULL } }, /* XSUM_XXH128_withSecret_testdata[1708] */ + { 1709, 0x0000000000000000ULL, { 0x3963D6E7C2185C10ULL, 0x842AA7F7BDCA9ABEULL } }, /* XSUM_XXH128_withSecret_testdata[1709] */ + { 1710, 0x0000000000000000ULL, { 0x5A4C5E91EE8FA95BULL, 0xA7E6AE2855D37BEBULL } }, /* XSUM_XXH128_withSecret_testdata[1710] */ + { 1711, 0x0000000000000000ULL, { 0x9B8FAB3B30D5895EULL, 0x64BE8BCC5D7E2D09ULL } }, /* XSUM_XXH128_withSecret_testdata[1711] */ + { 1712, 0x0000000000000000ULL, { 0xE56728B6588CC4B1ULL, 0x7011AC030046E6F2ULL } }, /* XSUM_XXH128_withSecret_testdata[1712] */ + { 1713, 0x0000000000000000ULL, { 0xFB4E881A3E75AF1EULL, 0x30CC3727FC017CC8ULL } }, /* XSUM_XXH128_withSecret_testdata[1713] */ + { 1714, 0x0000000000000000ULL, { 0xF57DFDF5902E14CDULL, 0xB9E5BB05099B0A63ULL } }, /* XSUM_XXH128_withSecret_testdata[1714] */ + { 1715, 0x0000000000000000ULL, { 0x82686F6DEE271950ULL, 0x6C5476F56E0A95E7ULL } }, /* XSUM_XXH128_withSecret_testdata[1715] */ + { 1716, 0x0000000000000000ULL, { 0x5CE3E44A78BCDC66ULL, 0xAE3595F9F63DBCFFULL } }, /* XSUM_XXH128_withSecret_testdata[1716] */ + { 1717, 0x0000000000000000ULL, { 0x27AC6414C2645329ULL, 0xA71DD2D67EFD6756ULL } }, /* XSUM_XXH128_withSecret_testdata[1717] */ + { 1718, 0x0000000000000000ULL, { 0x54C7D888E4BFE81AULL, 0xE0479FE81D236E96ULL } }, /* XSUM_XXH128_withSecret_testdata[1718] */ + { 1719, 0x0000000000000000ULL, { 0x38BAE8C8F5FF30C4ULL, 0x0C3B396DDAA2F14AULL } }, /* XSUM_XXH128_withSecret_testdata[1719] */ + { 1720, 0x0000000000000000ULL, { 0xB53E60907F8390D2ULL, 0x68CAF237181F57FFULL } }, /* XSUM_XXH128_withSecret_testdata[1720] */ + { 1721, 0x0000000000000000ULL, { 0x932891E5ECFFC1E4ULL, 0xE98E26094D3C067AULL } }, /* XSUM_XXH128_withSecret_testdata[1721] */ + { 1722, 0x0000000000000000ULL, { 0xCBF716940E4CE9CDULL, 0x8B0C40EEE5CC51F3ULL } }, /* XSUM_XXH128_withSecret_testdata[1722] */ + { 1723, 0x0000000000000000ULL, { 0xA3812CF5FC908675ULL, 0x330D382D33434D90ULL } }, /* XSUM_XXH128_withSecret_testdata[1723] */ + { 1724, 0x0000000000000000ULL, { 0x196ED6DDB482776DULL, 0xBF1F564D0617974BULL } }, /* XSUM_XXH128_withSecret_testdata[1724] */ + { 1725, 0x0000000000000000ULL, { 0x9B70D5D56D68BCDAULL, 0x492CEEE0254ADAF6ULL } }, /* XSUM_XXH128_withSecret_testdata[1725] */ + { 1726, 0x0000000000000000ULL, { 0x89D41A820982DE7AULL, 0x60480A3DFDBE9B5BULL } }, /* XSUM_XXH128_withSecret_testdata[1726] */ + { 1727, 0x0000000000000000ULL, { 0x670B2B5F74D6B39DULL, 0x9B850D12B5CC9512ULL } }, /* XSUM_XXH128_withSecret_testdata[1727] */ + { 1728, 0x0000000000000000ULL, { 0x4BF73CCEFD067D44ULL, 0x674764448306B665ULL } }, /* XSUM_XXH128_withSecret_testdata[1728] */ + { 1729, 0x0000000000000000ULL, { 0xF9E7E25E5F226055ULL, 0x40CC5525FD310C04ULL } }, /* XSUM_XXH128_withSecret_testdata[1729] */ + { 1730, 0x0000000000000000ULL, { 0x6F625819AB986B5FULL, 0x48FB11D5E3B0EE11ULL } }, /* XSUM_XXH128_withSecret_testdata[1730] */ + { 1731, 0x0000000000000000ULL, { 0xDD0CA453D1D30B0EULL, 0x566E0AA899526F1DULL } }, /* XSUM_XXH128_withSecret_testdata[1731] */ + { 1732, 0x0000000000000000ULL, { 0x61F29C66BFF1DC60ULL, 0x4DD2B72F54696E10ULL } }, /* XSUM_XXH128_withSecret_testdata[1732] */ + { 1733, 0x0000000000000000ULL, { 0x79C26E766BF9C59CULL, 0xBF5D164253C1BEF7ULL } }, /* XSUM_XXH128_withSecret_testdata[1733] */ + { 1734, 0x0000000000000000ULL, { 0x7EC9B47E0552E6E0ULL, 0x889C1326E5715035ULL } }, /* XSUM_XXH128_withSecret_testdata[1734] */ + { 1735, 0x0000000000000000ULL, { 0xC6010C35C8CB4BCFULL, 0x7D0463E5262616EAULL } }, /* XSUM_XXH128_withSecret_testdata[1735] */ + { 1736, 0x0000000000000000ULL, { 0xE99F407164825C89ULL, 0x9F88B71C23A3C86AULL } }, /* XSUM_XXH128_withSecret_testdata[1736] */ + { 1737, 0x0000000000000000ULL, { 0x74523C6A58C7C381ULL, 0xF59C105FFE45FA4BULL } }, /* XSUM_XXH128_withSecret_testdata[1737] */ + { 1738, 0x0000000000000000ULL, { 0x981CB1A9260139EFULL, 0x16FE408141543EA2ULL } }, /* XSUM_XXH128_withSecret_testdata[1738] */ + { 1739, 0x0000000000000000ULL, { 0xA7472311411B7F44ULL, 0xCA93D4983C8723CFULL } }, /* XSUM_XXH128_withSecret_testdata[1739] */ + { 1740, 0x0000000000000000ULL, { 0x7772D0A69EA6B5C6ULL, 0xF5811D05EDE6CD14ULL } }, /* XSUM_XXH128_withSecret_testdata[1740] */ + { 1741, 0x0000000000000000ULL, { 0xA0910DEDF04A7D99ULL, 0xBC91583731D291F8ULL } }, /* XSUM_XXH128_withSecret_testdata[1741] */ + { 1742, 0x0000000000000000ULL, { 0xC49241AE38755E89ULL, 0xFBB67AFE4C9339BCULL } }, /* XSUM_XXH128_withSecret_testdata[1742] */ + { 1743, 0x0000000000000000ULL, { 0xB5AB1F244DA833DDULL, 0x72F0F811BB9F934AULL } }, /* XSUM_XXH128_withSecret_testdata[1743] */ + { 1744, 0x0000000000000000ULL, { 0x567B28C34B63D694ULL, 0xB1147F0A9597F5E5ULL } }, /* XSUM_XXH128_withSecret_testdata[1744] */ + { 1745, 0x0000000000000000ULL, { 0x235CBE03E9E1E7F2ULL, 0x4828379959B59F84ULL } }, /* XSUM_XXH128_withSecret_testdata[1745] */ + { 1746, 0x0000000000000000ULL, { 0x76B3592B13BE309AULL, 0x36F0C5DF058AA83CULL } }, /* XSUM_XXH128_withSecret_testdata[1746] */ + { 1747, 0x0000000000000000ULL, { 0x1529FE740A3AC230ULL, 0xFD4447958E147ECCULL } }, /* XSUM_XXH128_withSecret_testdata[1747] */ + { 1748, 0x0000000000000000ULL, { 0xF5097CC1AAA76BD7ULL, 0x7006F68E4F7DA255ULL } }, /* XSUM_XXH128_withSecret_testdata[1748] */ + { 1749, 0x0000000000000000ULL, { 0xD92584C1C9760C59ULL, 0xA74F21EAD0E57141ULL } }, /* XSUM_XXH128_withSecret_testdata[1749] */ + { 1750, 0x0000000000000000ULL, { 0x35DFE8BF25B84863ULL, 0x23FF06ACA131449AULL } }, /* XSUM_XXH128_withSecret_testdata[1750] */ + { 1751, 0x0000000000000000ULL, { 0x36158F70ACE15DD8ULL, 0x305C2C56D6505585ULL } }, /* XSUM_XXH128_withSecret_testdata[1751] */ + { 1752, 0x0000000000000000ULL, { 0xBA23ACC7B52C06D0ULL, 0x5685642EC592AB3FULL } }, /* XSUM_XXH128_withSecret_testdata[1752] */ + { 1753, 0x0000000000000000ULL, { 0x3307FFFC9BD358DFULL, 0x244BC2B9DC969C1CULL } }, /* XSUM_XXH128_withSecret_testdata[1753] */ + { 1754, 0x0000000000000000ULL, { 0x979E3BBBA5E77CFEULL, 0xCA4D389464D514D1ULL } }, /* XSUM_XXH128_withSecret_testdata[1754] */ + { 1755, 0x0000000000000000ULL, { 0x36DE102859B0B962ULL, 0xF6D738DD4D654F4DULL } }, /* XSUM_XXH128_withSecret_testdata[1755] */ + { 1756, 0x0000000000000000ULL, { 0x71BF2E2A55C5E814ULL, 0x45A3D0078C00CE65ULL } }, /* XSUM_XXH128_withSecret_testdata[1756] */ + { 1757, 0x0000000000000000ULL, { 0xEBDA4FB991779C55ULL, 0x7A8B431C9B6F85EEULL } }, /* XSUM_XXH128_withSecret_testdata[1757] */ + { 1758, 0x0000000000000000ULL, { 0x1728848CF44E43A3ULL, 0xD87C454E73CAEC9DULL } }, /* XSUM_XXH128_withSecret_testdata[1758] */ + { 1759, 0x0000000000000000ULL, { 0x593BB4D41BAFE16BULL, 0xC7AEC633592F7127ULL } }, /* XSUM_XXH128_withSecret_testdata[1759] */ + { 1760, 0x0000000000000000ULL, { 0x284CF892AE408A70ULL, 0x17A720455C7FDAFDULL } }, /* XSUM_XXH128_withSecret_testdata[1760] */ + { 1761, 0x0000000000000000ULL, { 0xEC09ABCEB857D071ULL, 0x8EFAE9835E2BE808ULL } }, /* XSUM_XXH128_withSecret_testdata[1761] */ + { 1762, 0x0000000000000000ULL, { 0xB871997236BF5AA8ULL, 0x1B2311C09B0BC447ULL } }, /* XSUM_XXH128_withSecret_testdata[1762] */ + { 1763, 0x0000000000000000ULL, { 0x744E7DF18A4D7FA0ULL, 0x87E30C0EE479C7FEULL } }, /* XSUM_XXH128_withSecret_testdata[1763] */ + { 1764, 0x0000000000000000ULL, { 0x2FE3A05D5D0E7D65ULL, 0x6A248BAEE883F36FULL } }, /* XSUM_XXH128_withSecret_testdata[1764] */ + { 1765, 0x0000000000000000ULL, { 0x9EA83E964E3E0AEDULL, 0x3CAEEAB473F1A97DULL } }, /* XSUM_XXH128_withSecret_testdata[1765] */ + { 1766, 0x0000000000000000ULL, { 0xBA912716E055FB61ULL, 0x4C65DF6E15A611E0ULL } }, /* XSUM_XXH128_withSecret_testdata[1766] */ + { 1767, 0x0000000000000000ULL, { 0x2CBF229C008619AAULL, 0x38D26721DE252BD8ULL } }, /* XSUM_XXH128_withSecret_testdata[1767] */ + { 1768, 0x0000000000000000ULL, { 0xAC0FABF720119D5DULL, 0xEC089A4654D8F2D0ULL } }, /* XSUM_XXH128_withSecret_testdata[1768] */ + { 1769, 0x0000000000000000ULL, { 0xCD9FEAF318CF59B0ULL, 0xD39B3DD8358F52D3ULL } }, /* XSUM_XXH128_withSecret_testdata[1769] */ + { 1770, 0x0000000000000000ULL, { 0x3362CC1D4116F147ULL, 0xD3FA920E6C7E9013ULL } }, /* XSUM_XXH128_withSecret_testdata[1770] */ + { 1771, 0x0000000000000000ULL, { 0x14AD4884FDCE337CULL, 0x337BCC98986A30C2ULL } }, /* XSUM_XXH128_withSecret_testdata[1771] */ + { 1772, 0x0000000000000000ULL, { 0x14D399478B7B428AULL, 0x31ADEE8AD3B87279ULL } }, /* XSUM_XXH128_withSecret_testdata[1772] */ + { 1773, 0x0000000000000000ULL, { 0xB11C4FE43B9C7293ULL, 0xCFEF407A3E5E05C3ULL } }, /* XSUM_XXH128_withSecret_testdata[1773] */ + { 1774, 0x0000000000000000ULL, { 0x7AD9F263024DA989ULL, 0x85240C8419B640D5ULL } }, /* XSUM_XXH128_withSecret_testdata[1774] */ + { 1775, 0x0000000000000000ULL, { 0xC51C01AC58688B36ULL, 0x3A424AF6AF3FB798ULL } }, /* XSUM_XXH128_withSecret_testdata[1775] */ + { 1776, 0x0000000000000000ULL, { 0xC440BB91EA4815DDULL, 0xF45B6F369B2BA29DULL } }, /* XSUM_XXH128_withSecret_testdata[1776] */ + { 1777, 0x0000000000000000ULL, { 0x5BF91B033E1C28DBULL, 0xEB863EEDC677827BULL } }, /* XSUM_XXH128_withSecret_testdata[1777] */ + { 1778, 0x0000000000000000ULL, { 0x3B11CE47991EEFD7ULL, 0xFEE0764A70DC0D45ULL } }, /* XSUM_XXH128_withSecret_testdata[1778] */ + { 1779, 0x0000000000000000ULL, { 0x7C15AC70C1714DC2ULL, 0xA49107A49A404383ULL } }, /* XSUM_XXH128_withSecret_testdata[1779] */ + { 1780, 0x0000000000000000ULL, { 0x82479F182059F91FULL, 0x6ED6BAE56E38DD22ULL } }, /* XSUM_XXH128_withSecret_testdata[1780] */ + { 1781, 0x0000000000000000ULL, { 0x7B9678B2C21965ECULL, 0x6A8EEFB0FE5C4672ULL } }, /* XSUM_XXH128_withSecret_testdata[1781] */ + { 1782, 0x0000000000000000ULL, { 0x216FE3AF81D0FCBDULL, 0x62F20FEFFDDCEF7DULL } }, /* XSUM_XXH128_withSecret_testdata[1782] */ + { 1783, 0x0000000000000000ULL, { 0xA207CCEE1D8AD5D2ULL, 0x2A8186214EA65D58ULL } }, /* XSUM_XXH128_withSecret_testdata[1783] */ + { 1784, 0x0000000000000000ULL, { 0x1EABEDCDD5F67A55ULL, 0xED51F39029C59819ULL } }, /* XSUM_XXH128_withSecret_testdata[1784] */ + { 1785, 0x0000000000000000ULL, { 0xE3AA024B094F9D33ULL, 0xAE81754B237453B9ULL } }, /* XSUM_XXH128_withSecret_testdata[1785] */ + { 1786, 0x0000000000000000ULL, { 0x0617282894D26D61ULL, 0x3AAC36CEA4E35961ULL } }, /* XSUM_XXH128_withSecret_testdata[1786] */ + { 1787, 0x0000000000000000ULL, { 0xDC618587DDA8FC5FULL, 0x3A8C372937B11862ULL } }, /* XSUM_XXH128_withSecret_testdata[1787] */ + { 1788, 0x0000000000000000ULL, { 0xC851676837A79E40ULL, 0xC73D7E6E79E492B9ULL } }, /* XSUM_XXH128_withSecret_testdata[1788] */ + { 1789, 0x0000000000000000ULL, { 0x91ED14D62BBFBCEDULL, 0xF8BE4ED131838333ULL } }, /* XSUM_XXH128_withSecret_testdata[1789] */ + { 1790, 0x0000000000000000ULL, { 0x8D4F8D0602285AB2ULL, 0x5D76761EFBD357D3ULL } }, /* XSUM_XXH128_withSecret_testdata[1790] */ + { 1791, 0x0000000000000000ULL, { 0xCF44DFE6C083C272ULL, 0xF6D55507549BAC23ULL } }, /* XSUM_XXH128_withSecret_testdata[1791] */ + { 1792, 0x0000000000000000ULL, { 0x47DDC481F1DB095FULL, 0xDFB4FAABB3FF1AB6ULL } }, /* XSUM_XXH128_withSecret_testdata[1792] */ + { 1793, 0x0000000000000000ULL, { 0xA10AE242C3A730EBULL, 0xA4D9B75FF45BE0D0ULL } }, /* XSUM_XXH128_withSecret_testdata[1793] */ + { 1794, 0x0000000000000000ULL, { 0xDB1E7B5DC72BDEC4ULL, 0x6B05DD2F755587B5ULL } }, /* XSUM_XXH128_withSecret_testdata[1794] */ + { 1795, 0x0000000000000000ULL, { 0x988258BB7135C65BULL, 0x9BAA21C67B4EF72EULL } }, /* XSUM_XXH128_withSecret_testdata[1795] */ + { 1796, 0x0000000000000000ULL, { 0xB39D76C082AB8837ULL, 0xDE6E6EAD6FFDD0A1ULL } }, /* XSUM_XXH128_withSecret_testdata[1796] */ + { 1797, 0x0000000000000000ULL, { 0xE4606B36C8AC7379ULL, 0xE60446DEC444D6B0ULL } }, /* XSUM_XXH128_withSecret_testdata[1797] */ + { 1798, 0x0000000000000000ULL, { 0x9B52580AAA9CDC0BULL, 0xB5855CECB5DD9338ULL } }, /* XSUM_XXH128_withSecret_testdata[1798] */ + { 1799, 0x0000000000000000ULL, { 0xC961FA5351789300ULL, 0xCA83F1EC149EBBDFULL } }, /* XSUM_XXH128_withSecret_testdata[1799] */ + { 1800, 0x0000000000000000ULL, { 0xE7B46AB47D510BBBULL, 0x592FE649C43917E7ULL } }, /* XSUM_XXH128_withSecret_testdata[1800] */ + { 1801, 0x0000000000000000ULL, { 0x4B6A8F15C17973F6ULL, 0x8F28E3E5875B9200ULL } }, /* XSUM_XXH128_withSecret_testdata[1801] */ + { 1802, 0x0000000000000000ULL, { 0xEBE353EF65A651F6ULL, 0x0EBBD6E7B0A5CED1ULL } }, /* XSUM_XXH128_withSecret_testdata[1802] */ + { 1803, 0x0000000000000000ULL, { 0x0FB0CAB2A8AD54C1ULL, 0xD39A22E753D4D3BAULL } }, /* XSUM_XXH128_withSecret_testdata[1803] */ + { 1804, 0x0000000000000000ULL, { 0xB0FC1F6DDD75AD6DULL, 0xF3C53D456CDC71B4ULL } }, /* XSUM_XXH128_withSecret_testdata[1804] */ + { 1805, 0x0000000000000000ULL, { 0x9E6286E5DFBAE99EULL, 0x8F4FC64C8DA0B573ULL } }, /* XSUM_XXH128_withSecret_testdata[1805] */ + { 1806, 0x0000000000000000ULL, { 0x3DF343EEBA68959AULL, 0x9D7C522A81BAC618ULL } }, /* XSUM_XXH128_withSecret_testdata[1806] */ + { 1807, 0x0000000000000000ULL, { 0x6939F13CBCAEC0F6ULL, 0x59D87DC5E39A0139ULL } }, /* XSUM_XXH128_withSecret_testdata[1807] */ + { 1808, 0x0000000000000000ULL, { 0x79806F82290A05D3ULL, 0x2D95C1A2E36DA4F1ULL } }, /* XSUM_XXH128_withSecret_testdata[1808] */ + { 1809, 0x0000000000000000ULL, { 0xF57C2DB3C71D1EC0ULL, 0x73A5EC7F2F952DDFULL } }, /* XSUM_XXH128_withSecret_testdata[1809] */ + { 1810, 0x0000000000000000ULL, { 0x1A05E375DD295438ULL, 0xB51C90E604CE10F3ULL } }, /* XSUM_XXH128_withSecret_testdata[1810] */ + { 1811, 0x0000000000000000ULL, { 0xA74DBBE413B4E89BULL, 0x3CE37A783F61B9BFULL } }, /* XSUM_XXH128_withSecret_testdata[1811] */ + { 1812, 0x0000000000000000ULL, { 0x971B8DD67515E5E0ULL, 0x436B037A664642FBULL } }, /* XSUM_XXH128_withSecret_testdata[1812] */ + { 1813, 0x0000000000000000ULL, { 0x6610D45C74760EC4ULL, 0xC4D706B947E9104AULL } }, /* XSUM_XXH128_withSecret_testdata[1813] */ + { 1814, 0x0000000000000000ULL, { 0xA593A38377386C31ULL, 0xDD5A86B909129D0CULL } }, /* XSUM_XXH128_withSecret_testdata[1814] */ + { 1815, 0x0000000000000000ULL, { 0xA9B45FF3A9192DDBULL, 0x35CBB02D1C5A59D4ULL } }, /* XSUM_XXH128_withSecret_testdata[1815] */ + { 1816, 0x0000000000000000ULL, { 0xCCAFB051380D1E98ULL, 0x80AE77DCA1412FCFULL } }, /* XSUM_XXH128_withSecret_testdata[1816] */ + { 1817, 0x0000000000000000ULL, { 0x203EE0860BF29DF7ULL, 0x3709058D61B2C94DULL } }, /* XSUM_XXH128_withSecret_testdata[1817] */ + { 1818, 0x0000000000000000ULL, { 0xA76E0EBB41E17FD9ULL, 0x5454A52267D05AC8ULL } }, /* XSUM_XXH128_withSecret_testdata[1818] */ + { 1819, 0x0000000000000000ULL, { 0x6A159A6052A2166DULL, 0xECC1478BCE811D56ULL } }, /* XSUM_XXH128_withSecret_testdata[1819] */ + { 1820, 0x0000000000000000ULL, { 0x63A3361FD6F4C1A2ULL, 0xAD00658471870C01ULL } }, /* XSUM_XXH128_withSecret_testdata[1820] */ + { 1821, 0x0000000000000000ULL, { 0xC93683A587826A2CULL, 0xF43EB1159A516CE3ULL } }, /* XSUM_XXH128_withSecret_testdata[1821] */ + { 1822, 0x0000000000000000ULL, { 0x02D5148F65DAF251ULL, 0x239D0F874F203605ULL } }, /* XSUM_XXH128_withSecret_testdata[1822] */ + { 1823, 0x0000000000000000ULL, { 0x25E1162FCFA75CA5ULL, 0xDFC59B25EFEFA605ULL } }, /* XSUM_XXH128_withSecret_testdata[1823] */ + { 1824, 0x0000000000000000ULL, { 0xBD5484CE7E50F07DULL, 0x69F4D23E2D458061ULL } }, /* XSUM_XXH128_withSecret_testdata[1824] */ + { 1825, 0x0000000000000000ULL, { 0x6EB6067839498B06ULL, 0xA36198917C683040ULL } }, /* XSUM_XXH128_withSecret_testdata[1825] */ + { 1826, 0x0000000000000000ULL, { 0x52F20341A5DAD1E3ULL, 0x7B4F8BEFD7908467ULL } }, /* XSUM_XXH128_withSecret_testdata[1826] */ + { 1827, 0x0000000000000000ULL, { 0x50F562657386533FULL, 0x9AB8A1FE6C5ECF25ULL } }, /* XSUM_XXH128_withSecret_testdata[1827] */ + { 1828, 0x0000000000000000ULL, { 0x1F10472FC2F01C96ULL, 0x0A77414FB51E5F1BULL } }, /* XSUM_XXH128_withSecret_testdata[1828] */ + { 1829, 0x0000000000000000ULL, { 0x8C474EF701FB3909ULL, 0xD203ED4BDE492C8EULL } }, /* XSUM_XXH128_withSecret_testdata[1829] */ + { 1830, 0x0000000000000000ULL, { 0x54BA08B1FA0D590AULL, 0xF83805A845205CF4ULL } }, /* XSUM_XXH128_withSecret_testdata[1830] */ + { 1831, 0x0000000000000000ULL, { 0x652E59502189E111ULL, 0x592C0141037728F7ULL } }, /* XSUM_XXH128_withSecret_testdata[1831] */ + { 1832, 0x0000000000000000ULL, { 0x6877E92A32E2B991ULL, 0x312DBAD9E4AE9A66ULL } }, /* XSUM_XXH128_withSecret_testdata[1832] */ + { 1833, 0x0000000000000000ULL, { 0x9C6831D78A76126DULL, 0x736A479E1ABF06FFULL } }, /* XSUM_XXH128_withSecret_testdata[1833] */ + { 1834, 0x0000000000000000ULL, { 0x26A22D43A7AE2EF6ULL, 0x97DBFEBF86DA6CE1ULL } }, /* XSUM_XXH128_withSecret_testdata[1834] */ + { 1835, 0x0000000000000000ULL, { 0x9DD7F5B61B8A8816ULL, 0x881BBE5C5758F381ULL } }, /* XSUM_XXH128_withSecret_testdata[1835] */ + { 1836, 0x0000000000000000ULL, { 0x4A01F6B43A1F053CULL, 0x0EDD780901E76DAAULL } }, /* XSUM_XXH128_withSecret_testdata[1836] */ + { 1837, 0x0000000000000000ULL, { 0xC7ED38842F51E59AULL, 0xFCD3A578036BBBC2ULL } }, /* XSUM_XXH128_withSecret_testdata[1837] */ + { 1838, 0x0000000000000000ULL, { 0x8B476BBB4ABE5430ULL, 0x21F0CFC99D32D13BULL } }, /* XSUM_XXH128_withSecret_testdata[1838] */ + { 1839, 0x0000000000000000ULL, { 0x5FB0DFE505A82222ULL, 0x28E24DE2012F139CULL } }, /* XSUM_XXH128_withSecret_testdata[1839] */ + { 1840, 0x0000000000000000ULL, { 0x81671324076187EEULL, 0x035A7CCC7F2051E4ULL } }, /* XSUM_XXH128_withSecret_testdata[1840] */ + { 1841, 0x0000000000000000ULL, { 0xD656A0AE18DB6402ULL, 0x68E7AA79CA1AAE53ULL } }, /* XSUM_XXH128_withSecret_testdata[1841] */ + { 1842, 0x0000000000000000ULL, { 0x9356D1863E69A0DCULL, 0x23300F3E08984DE6ULL } }, /* XSUM_XXH128_withSecret_testdata[1842] */ + { 1843, 0x0000000000000000ULL, { 0x46269A68E2273394ULL, 0x5701444BBB2CD84CULL } }, /* XSUM_XXH128_withSecret_testdata[1843] */ + { 1844, 0x0000000000000000ULL, { 0x8F740F53C7BA8F35ULL, 0xCC695A4C3742F1F8ULL } }, /* XSUM_XXH128_withSecret_testdata[1844] */ + { 1845, 0x0000000000000000ULL, { 0xB05CFDCA7BA4531FULL, 0x7715EB72E2E84A55ULL } }, /* XSUM_XXH128_withSecret_testdata[1845] */ + { 1846, 0x0000000000000000ULL, { 0x469325140F78A2DFULL, 0x4D1C3548BF631951ULL } }, /* XSUM_XXH128_withSecret_testdata[1846] */ + { 1847, 0x0000000000000000ULL, { 0x087ECF42F55D5E0DULL, 0x8709A1321729C18BULL } }, /* XSUM_XXH128_withSecret_testdata[1847] */ + { 1848, 0x0000000000000000ULL, { 0xDE3EE4E0EAC16ED4ULL, 0x97621A064CB5B7BBULL } }, /* XSUM_XXH128_withSecret_testdata[1848] */ + { 1849, 0x0000000000000000ULL, { 0x6FF2BB185054F40EULL, 0x8AFF243A39841C9FULL } }, /* XSUM_XXH128_withSecret_testdata[1849] */ + { 1850, 0x0000000000000000ULL, { 0xED2CF3EB5E728E1AULL, 0xB44388F40C55342DULL } }, /* XSUM_XXH128_withSecret_testdata[1850] */ + { 1851, 0x0000000000000000ULL, { 0xA7FAAD240ED4D3BDULL, 0xAEC5B51C18D386FFULL } }, /* XSUM_XXH128_withSecret_testdata[1851] */ + { 1852, 0x0000000000000000ULL, { 0x843FFFB94BA6E942ULL, 0x0F0BDC9D6EF58965ULL } }, /* XSUM_XXH128_withSecret_testdata[1852] */ + { 1853, 0x0000000000000000ULL, { 0xF3BAF1752618BB5BULL, 0x906918AB72CC691EULL } }, /* XSUM_XXH128_withSecret_testdata[1853] */ + { 1854, 0x0000000000000000ULL, { 0xE78D42311004927CULL, 0xD7158E92393C3F1DULL } }, /* XSUM_XXH128_withSecret_testdata[1854] */ + { 1855, 0x0000000000000000ULL, { 0x91EEBD8F732E178EULL, 0x9CFD74C077BD7477ULL } }, /* XSUM_XXH128_withSecret_testdata[1855] */ + { 1856, 0x0000000000000000ULL, { 0xC99C980B41019B22ULL, 0x307DC8747D30484EULL } }, /* XSUM_XXH128_withSecret_testdata[1856] */ + { 1857, 0x0000000000000000ULL, { 0x16C6E879C8E235BEULL, 0xA087EC6545817A50ULL } }, /* XSUM_XXH128_withSecret_testdata[1857] */ + { 1858, 0x0000000000000000ULL, { 0x0CECC7F3AB9C1F40ULL, 0x8BC5BF87FDFF32E8ULL } }, /* XSUM_XXH128_withSecret_testdata[1858] */ + { 1859, 0x0000000000000000ULL, { 0xFA8D2FD6D59DC280ULL, 0x9B12129BD4A0862AULL } }, /* XSUM_XXH128_withSecret_testdata[1859] */ + { 1860, 0x0000000000000000ULL, { 0x8562961C091342CEULL, 0x94C6E4FFCE555ED3ULL } }, /* XSUM_XXH128_withSecret_testdata[1860] */ + { 1861, 0x0000000000000000ULL, { 0x62F62194E584CAF7ULL, 0xAF84927EEFC765E8ULL } }, /* XSUM_XXH128_withSecret_testdata[1861] */ + { 1862, 0x0000000000000000ULL, { 0x4E92BB3A8BFEA159ULL, 0x320508671EFEECC3ULL } }, /* XSUM_XXH128_withSecret_testdata[1862] */ + { 1863, 0x0000000000000000ULL, { 0x38365B5F64F64A98ULL, 0x6E4B439DA3E68454ULL } }, /* XSUM_XXH128_withSecret_testdata[1863] */ + { 1864, 0x0000000000000000ULL, { 0xD147B36243C5C323ULL, 0xBAA392B06D50515BULL } }, /* XSUM_XXH128_withSecret_testdata[1864] */ + { 1865, 0x0000000000000000ULL, { 0xE9ACE440CDB60441ULL, 0x48B135599D024B7EULL } }, /* XSUM_XXH128_withSecret_testdata[1865] */ + { 1866, 0x0000000000000000ULL, { 0x0A57F63533193ECAULL, 0x5870902AB1B31936ULL } }, /* XSUM_XXH128_withSecret_testdata[1866] */ + { 1867, 0x0000000000000000ULL, { 0xE571EDBF602C3DA8ULL, 0x0AE760102B171D95ULL } }, /* XSUM_XXH128_withSecret_testdata[1867] */ + { 1868, 0x0000000000000000ULL, { 0x0E9AAF89C2E43AB3ULL, 0xD0904EFE1C7450D8ULL } }, /* XSUM_XXH128_withSecret_testdata[1868] */ + { 1869, 0x0000000000000000ULL, { 0xBBEDAE93C8E71634ULL, 0x971CCA7B87A3C571ULL } }, /* XSUM_XXH128_withSecret_testdata[1869] */ + { 1870, 0x0000000000000000ULL, { 0x893CBC1E009A0A03ULL, 0xC02796492EB677CAULL } }, /* XSUM_XXH128_withSecret_testdata[1870] */ + { 1871, 0x0000000000000000ULL, { 0xC6B24114B6F6E938ULL, 0x91A8BF3307BA7FA1ULL } }, /* XSUM_XXH128_withSecret_testdata[1871] */ + { 1872, 0x0000000000000000ULL, { 0xEC60D1DD4E0B72EFULL, 0x5EFBD85B7FAC597CULL } }, /* XSUM_XXH128_withSecret_testdata[1872] */ + { 1873, 0x0000000000000000ULL, { 0xEE180979A8839059ULL, 0xDA23C6E58CA5AE74ULL } }, /* XSUM_XXH128_withSecret_testdata[1873] */ + { 1874, 0x0000000000000000ULL, { 0xE79FC5C968E39F05ULL, 0xA842540FB1BEC066ULL } }, /* XSUM_XXH128_withSecret_testdata[1874] */ + { 1875, 0x0000000000000000ULL, { 0xD877733C14DE5624ULL, 0xFF6CCA18F8017DC6ULL } }, /* XSUM_XXH128_withSecret_testdata[1875] */ + { 1876, 0x0000000000000000ULL, { 0xDC64CF1E1B3C621BULL, 0xDA5E35E84C415267ULL } }, /* XSUM_XXH128_withSecret_testdata[1876] */ + { 1877, 0x0000000000000000ULL, { 0xDE1EEDB9FEDF1B50ULL, 0x893901D670E9D168ULL } }, /* XSUM_XXH128_withSecret_testdata[1877] */ + { 1878, 0x0000000000000000ULL, { 0x5917DB36A8A1EC86ULL, 0xC933D5A1DBE0BA45ULL } }, /* XSUM_XXH128_withSecret_testdata[1878] */ + { 1879, 0x0000000000000000ULL, { 0x31DCF9B84864E732ULL, 0xE7E93B5AE41E7123ULL } }, /* XSUM_XXH128_withSecret_testdata[1879] */ + { 1880, 0x0000000000000000ULL, { 0xA270D68EB626F81FULL, 0x45F9E50D38ACC1A3ULL } }, /* XSUM_XXH128_withSecret_testdata[1880] */ + { 1881, 0x0000000000000000ULL, { 0x448CA992B405B478ULL, 0xF73A385CD71F6B48ULL } }, /* XSUM_XXH128_withSecret_testdata[1881] */ + { 1882, 0x0000000000000000ULL, { 0xC687F7288F59642FULL, 0x654687A3A02D25E4ULL } }, /* XSUM_XXH128_withSecret_testdata[1882] */ + { 1883, 0x0000000000000000ULL, { 0x09904DB3F3073429ULL, 0x5F3434903E8E5A1DULL } }, /* XSUM_XXH128_withSecret_testdata[1883] */ + { 1884, 0x0000000000000000ULL, { 0xBCFDF2A3E0EB5764ULL, 0x0EA0F1B31A20C0D2ULL } }, /* XSUM_XXH128_withSecret_testdata[1884] */ + { 1885, 0x0000000000000000ULL, { 0xE8AC4995374E498AULL, 0xA5C5D7831EC773A6ULL } }, /* XSUM_XXH128_withSecret_testdata[1885] */ + { 1886, 0x0000000000000000ULL, { 0x597CADBA4B5B8E18ULL, 0xBE6EBE608A5EBAF2ULL } }, /* XSUM_XXH128_withSecret_testdata[1886] */ + { 1887, 0x0000000000000000ULL, { 0x71B4E40C69AD0E85ULL, 0xA5A0C85FCFB39C89ULL } }, /* XSUM_XXH128_withSecret_testdata[1887] */ + { 1888, 0x0000000000000000ULL, { 0x6BF88D864523E374ULL, 0xA7FB1AC519891279ULL } }, /* XSUM_XXH128_withSecret_testdata[1888] */ + { 1889, 0x0000000000000000ULL, { 0x9CA99D485C9FE5A9ULL, 0x15DAFB89C7531F9CULL } }, /* XSUM_XXH128_withSecret_testdata[1889] */ + { 1890, 0x0000000000000000ULL, { 0x724E950BEE61D453ULL, 0x83F125F33E101B11ULL } }, /* XSUM_XXH128_withSecret_testdata[1890] */ + { 1891, 0x0000000000000000ULL, { 0x32790EA97BB99A4AULL, 0xB03275B7E4CA09B4ULL } }, /* XSUM_XXH128_withSecret_testdata[1891] */ + { 1892, 0x0000000000000000ULL, { 0x653B234CAE064A5FULL, 0x975A0D40E04D416CULL } }, /* XSUM_XXH128_withSecret_testdata[1892] */ + { 1893, 0x0000000000000000ULL, { 0x4872009907840C63ULL, 0xB45A1F8C1235A936ULL } }, /* XSUM_XXH128_withSecret_testdata[1893] */ + { 1894, 0x0000000000000000ULL, { 0x6243D1800D7D75D0ULL, 0x295A9BDACFA6CA45ULL } }, /* XSUM_XXH128_withSecret_testdata[1894] */ + { 1895, 0x0000000000000000ULL, { 0x2E7980EAD2979C81ULL, 0x7C4DBCF7F0B59000ULL } }, /* XSUM_XXH128_withSecret_testdata[1895] */ + { 1896, 0x0000000000000000ULL, { 0x0C5D37F9D498521BULL, 0x7E5D418501755040ULL } }, /* XSUM_XXH128_withSecret_testdata[1896] */ + { 1897, 0x0000000000000000ULL, { 0xBE22F8844228CA21ULL, 0xB0EF82D5B363DE18ULL } }, /* XSUM_XXH128_withSecret_testdata[1897] */ + { 1898, 0x0000000000000000ULL, { 0xA38E8323477AFDEBULL, 0xE66BF734A3E5843AULL } }, /* XSUM_XXH128_withSecret_testdata[1898] */ + { 1899, 0x0000000000000000ULL, { 0xD1F1A219688BFD74ULL, 0x6C070151F3A98CE8ULL } }, /* XSUM_XXH128_withSecret_testdata[1899] */ + { 1900, 0x0000000000000000ULL, { 0x18FFC2BA99E13E26ULL, 0x8B80ADCBB2810992ULL } }, /* XSUM_XXH128_withSecret_testdata[1900] */ + { 1901, 0x0000000000000000ULL, { 0x98DB456D96CA4A7CULL, 0x93A8C8494A491AF2ULL } }, /* XSUM_XXH128_withSecret_testdata[1901] */ + { 1902, 0x0000000000000000ULL, { 0xBE521AFF481876BDULL, 0x8D6F19B3087C5823ULL } }, /* XSUM_XXH128_withSecret_testdata[1902] */ + { 1903, 0x0000000000000000ULL, { 0x91F819C3C1F15995ULL, 0x929865E56B111B37ULL } }, /* XSUM_XXH128_withSecret_testdata[1903] */ + { 1904, 0x0000000000000000ULL, { 0xE738A023A9B0BA6DULL, 0x6145A74A1FC899B4ULL } }, /* XSUM_XXH128_withSecret_testdata[1904] */ + { 1905, 0x0000000000000000ULL, { 0x34F3E5A9FAF610FDULL, 0xCB0CA0DFA3A8FD67ULL } }, /* XSUM_XXH128_withSecret_testdata[1905] */ + { 1906, 0x0000000000000000ULL, { 0xC1D2B440968DD445ULL, 0xA1F26FB47FA1C9CEULL } }, /* XSUM_XXH128_withSecret_testdata[1906] */ + { 1907, 0x0000000000000000ULL, { 0x603A8D4E0954F2ABULL, 0x18A2E6FE8C4D73D7ULL } }, /* XSUM_XXH128_withSecret_testdata[1907] */ + { 1908, 0x0000000000000000ULL, { 0x6163D84213C0D1CCULL, 0xA96F0F5C4D25AD52ULL } }, /* XSUM_XXH128_withSecret_testdata[1908] */ + { 1909, 0x0000000000000000ULL, { 0x7EDA5DF9B18F6D30ULL, 0x26F2990401B56C28ULL } }, /* XSUM_XXH128_withSecret_testdata[1909] */ + { 1910, 0x0000000000000000ULL, { 0xFF985775B462CAC9ULL, 0xEA580570EBF4A321ULL } }, /* XSUM_XXH128_withSecret_testdata[1910] */ + { 1911, 0x0000000000000000ULL, { 0x395DEE7376657B59ULL, 0x1FDC711522ECDCC5ULL } }, /* XSUM_XXH128_withSecret_testdata[1911] */ + { 1912, 0x0000000000000000ULL, { 0xEB4260FC7DD69737ULL, 0x3667ECDF56768D4AULL } }, /* XSUM_XXH128_withSecret_testdata[1912] */ + { 1913, 0x0000000000000000ULL, { 0x947F26C70E715B2FULL, 0xF0F9B66E4348F78CULL } }, /* XSUM_XXH128_withSecret_testdata[1913] */ + { 1914, 0x0000000000000000ULL, { 0xC1DC1C9BC70A67C1ULL, 0xF7E9EAD6100641D5ULL } }, /* XSUM_XXH128_withSecret_testdata[1914] */ + { 1915, 0x0000000000000000ULL, { 0x08B572BCF56713CEULL, 0xF343E679A6E65FF7ULL } }, /* XSUM_XXH128_withSecret_testdata[1915] */ + { 1916, 0x0000000000000000ULL, { 0x995E661AB54A9E8CULL, 0xB34B350C7310B7FBULL } }, /* XSUM_XXH128_withSecret_testdata[1916] */ + { 1917, 0x0000000000000000ULL, { 0x0C6630E181E66DEAULL, 0x19EE5628E06A2144ULL } }, /* XSUM_XXH128_withSecret_testdata[1917] */ + { 1918, 0x0000000000000000ULL, { 0x77F20A683428BE33ULL, 0x4854FCBEC3D97455ULL } }, /* XSUM_XXH128_withSecret_testdata[1918] */ + { 1919, 0x0000000000000000ULL, { 0x74D2536C2C5D7259ULL, 0xECE8723179A75C78ULL } }, /* XSUM_XXH128_withSecret_testdata[1919] */ + { 1920, 0x0000000000000000ULL, { 0x751D2EC54BC6038BULL, 0xD7CB046C8A09C983ULL } }, /* XSUM_XXH128_withSecret_testdata[1920] */ + { 1921, 0x0000000000000000ULL, { 0x4AA03B6DB9DAFB6CULL, 0x3F62A440651C96B0ULL } }, /* XSUM_XXH128_withSecret_testdata[1921] */ + { 1922, 0x0000000000000000ULL, { 0x4399281D1A5B9E03ULL, 0x25D1E25CD1BB8F5BULL } }, /* XSUM_XXH128_withSecret_testdata[1922] */ + { 1923, 0x0000000000000000ULL, { 0x4F39521CD6AD5E2AULL, 0x1390C98E51E464FDULL } }, /* XSUM_XXH128_withSecret_testdata[1923] */ + { 1924, 0x0000000000000000ULL, { 0x86FE68ED8D696FAAULL, 0x4A179E966295D262ULL } }, /* XSUM_XXH128_withSecret_testdata[1924] */ + { 1925, 0x0000000000000000ULL, { 0x7D5B81AB9E3835EBULL, 0x42BE8A76CA3A9872ULL } }, /* XSUM_XXH128_withSecret_testdata[1925] */ + { 1926, 0x0000000000000000ULL, { 0x20CDCFF43C617248ULL, 0xC4EEAC767D8FB402ULL } }, /* XSUM_XXH128_withSecret_testdata[1926] */ + { 1927, 0x0000000000000000ULL, { 0x17EDC44C20536181ULL, 0x67C16187F4F5BADBULL } }, /* XSUM_XXH128_withSecret_testdata[1927] */ + { 1928, 0x0000000000000000ULL, { 0xEADDA2B5CD3C9E5DULL, 0x4BE8E9121BE153FDULL } }, /* XSUM_XXH128_withSecret_testdata[1928] */ + { 1929, 0x0000000000000000ULL, { 0x268FB0850E2369ECULL, 0x235E10BC63EC4DB0ULL } }, /* XSUM_XXH128_withSecret_testdata[1929] */ + { 1930, 0x0000000000000000ULL, { 0x6F5BE676BB821FD0ULL, 0xDE42EFCF3BF7D07AULL } }, /* XSUM_XXH128_withSecret_testdata[1930] */ + { 1931, 0x0000000000000000ULL, { 0xA8C578FCC34F7D60ULL, 0xDB1382CCF8A26350ULL } }, /* XSUM_XXH128_withSecret_testdata[1931] */ + { 1932, 0x0000000000000000ULL, { 0x8EB8504FB4F00254ULL, 0x83C3FF8EE0AD7F3AULL } }, /* XSUM_XXH128_withSecret_testdata[1932] */ + { 1933, 0x0000000000000000ULL, { 0x00763B822214A7B0ULL, 0x8192A0614942C362ULL } }, /* XSUM_XXH128_withSecret_testdata[1933] */ + { 1934, 0x0000000000000000ULL, { 0x28165E0E06EBEFB5ULL, 0x0726C694CBF8AFE0ULL } }, /* XSUM_XXH128_withSecret_testdata[1934] */ + { 1935, 0x0000000000000000ULL, { 0x40665B23B5D5EBFEULL, 0x96B731B9F3F4883CULL } }, /* XSUM_XXH128_withSecret_testdata[1935] */ + { 1936, 0x0000000000000000ULL, { 0xAAE0C571AC56F9D4ULL, 0x5F75B3FB903EDBB7ULL } }, /* XSUM_XXH128_withSecret_testdata[1936] */ + { 1937, 0x0000000000000000ULL, { 0x16E7AEE32C1D2511ULL, 0xC9B1B389287DDF7AULL } }, /* XSUM_XXH128_withSecret_testdata[1937] */ + { 1938, 0x0000000000000000ULL, { 0x6FC1B6B272BA2D63ULL, 0x98E79A534B0A589AULL } }, /* XSUM_XXH128_withSecret_testdata[1938] */ + { 1939, 0x0000000000000000ULL, { 0x30879A4A2DB0F19AULL, 0x1C808ECADD7D621AULL } }, /* XSUM_XXH128_withSecret_testdata[1939] */ + { 1940, 0x0000000000000000ULL, { 0xA1C75F5361E34F1EULL, 0xF7CB34250FEA2893ULL } }, /* XSUM_XXH128_withSecret_testdata[1940] */ + { 1941, 0x0000000000000000ULL, { 0x50AB08C3D1B53756ULL, 0x6649B3DBDB96A945ULL } }, /* XSUM_XXH128_withSecret_testdata[1941] */ + { 1942, 0x0000000000000000ULL, { 0x3E367154753FBACCULL, 0xEC0B7FCDC6EC972EULL } }, /* XSUM_XXH128_withSecret_testdata[1942] */ + { 1943, 0x0000000000000000ULL, { 0x083A8F92DA030F2BULL, 0x3C5448018C97B326ULL } }, /* XSUM_XXH128_withSecret_testdata[1943] */ + { 1944, 0x0000000000000000ULL, { 0xAEC52F821EA2D3B2ULL, 0xFEEF0081E3C77320ULL } }, /* XSUM_XXH128_withSecret_testdata[1944] */ + { 1945, 0x0000000000000000ULL, { 0x300E70829CB7CB7CULL, 0x0D8F66E7A15EA07FULL } }, /* XSUM_XXH128_withSecret_testdata[1945] */ + { 1946, 0x0000000000000000ULL, { 0xAAB6F53BCBC50A11ULL, 0xDBB072901B2F92E1ULL } }, /* XSUM_XXH128_withSecret_testdata[1946] */ + { 1947, 0x0000000000000000ULL, { 0x70645A7FE1D47DDAULL, 0x711BFB4313BD0825ULL } }, /* XSUM_XXH128_withSecret_testdata[1947] */ + { 1948, 0x0000000000000000ULL, { 0x55387B935C997944ULL, 0x7CAC12E4B641CCA4ULL } }, /* XSUM_XXH128_withSecret_testdata[1948] */ + { 1949, 0x0000000000000000ULL, { 0x93D15D16187F8AD5ULL, 0xB80AC74D472B8D1DULL } }, /* XSUM_XXH128_withSecret_testdata[1949] */ + { 1950, 0x0000000000000000ULL, { 0x45CEB57061DFAD2DULL, 0xA9C84F6C58631F70ULL } }, /* XSUM_XXH128_withSecret_testdata[1950] */ + { 1951, 0x0000000000000000ULL, { 0x7CFA4E0F0C2371A3ULL, 0xAE28B7231EDB811FULL } }, /* XSUM_XXH128_withSecret_testdata[1951] */ + { 1952, 0x0000000000000000ULL, { 0xBA41CE761134E091ULL, 0x257158F706B51A37ULL } }, /* XSUM_XXH128_withSecret_testdata[1952] */ + { 1953, 0x0000000000000000ULL, { 0x25D634A52D0C6BAAULL, 0x6E1BB93242FA2CF6ULL } }, /* XSUM_XXH128_withSecret_testdata[1953] */ + { 1954, 0x0000000000000000ULL, { 0xAAB9D4227FB7FF6AULL, 0xC0A852DD4C08DD05ULL } }, /* XSUM_XXH128_withSecret_testdata[1954] */ + { 1955, 0x0000000000000000ULL, { 0x570535A6A349A47DULL, 0x077802AA2D387973ULL } }, /* XSUM_XXH128_withSecret_testdata[1955] */ + { 1956, 0x0000000000000000ULL, { 0x2DC890196CBF71ACULL, 0x11A5DDB90ACE8467ULL } }, /* XSUM_XXH128_withSecret_testdata[1956] */ + { 1957, 0x0000000000000000ULL, { 0xDF8DF47F892B5E9CULL, 0x740B0860A0A44A7BULL } }, /* XSUM_XXH128_withSecret_testdata[1957] */ + { 1958, 0x0000000000000000ULL, { 0x4D4D1C063F97F8ACULL, 0x02B9B4AC28D75E1CULL } }, /* XSUM_XXH128_withSecret_testdata[1958] */ + { 1959, 0x0000000000000000ULL, { 0x26D28B5FE6A309F9ULL, 0xD0796181E98C0A5BULL } }, /* XSUM_XXH128_withSecret_testdata[1959] */ + { 1960, 0x0000000000000000ULL, { 0xDE6767AF345144A4ULL, 0x9CF8274FF5B2351DULL } }, /* XSUM_XXH128_withSecret_testdata[1960] */ + { 1961, 0x0000000000000000ULL, { 0x66BD1E08C06BE67BULL, 0xE6F4569987836E75ULL } }, /* XSUM_XXH128_withSecret_testdata[1961] */ + { 1962, 0x0000000000000000ULL, { 0xCFA6614E56565F1AULL, 0x20EE3701BC19E646ULL } }, /* XSUM_XXH128_withSecret_testdata[1962] */ + { 1963, 0x0000000000000000ULL, { 0xE1C87D4A9FFD7AB8ULL, 0x0F94B21CAEA967F2ULL } }, /* XSUM_XXH128_withSecret_testdata[1963] */ + { 1964, 0x0000000000000000ULL, { 0x1C40586BD0EEA8D1ULL, 0xC5EE92F49D3C62DAULL } }, /* XSUM_XXH128_withSecret_testdata[1964] */ + { 1965, 0x0000000000000000ULL, { 0x3532630E352A209DULL, 0xB14C32A89D04971CULL } }, /* XSUM_XXH128_withSecret_testdata[1965] */ + { 1966, 0x0000000000000000ULL, { 0xE9DC7C827B0C99B0ULL, 0x14C8C21858C4A54EULL } }, /* XSUM_XXH128_withSecret_testdata[1966] */ + { 1967, 0x0000000000000000ULL, { 0x53D67F8ABE8DAEF5ULL, 0x31511BD584986E75ULL } }, /* XSUM_XXH128_withSecret_testdata[1967] */ + { 1968, 0x0000000000000000ULL, { 0xE854B14F5317D22AULL, 0xD4F676E4529C7B76ULL } }, /* XSUM_XXH128_withSecret_testdata[1968] */ + { 1969, 0x0000000000000000ULL, { 0x8A2D2A82A3EB9933ULL, 0xA6AD85000E7E36D2ULL } }, /* XSUM_XXH128_withSecret_testdata[1969] */ + { 1970, 0x0000000000000000ULL, { 0x66BC8652E2FAB64BULL, 0xD31475CAB8120A52ULL } }, /* XSUM_XXH128_withSecret_testdata[1970] */ + { 1971, 0x0000000000000000ULL, { 0x323091C1E0318144ULL, 0xAF4762A30AFB17E3ULL } }, /* XSUM_XXH128_withSecret_testdata[1971] */ + { 1972, 0x0000000000000000ULL, { 0xABFFB27F0698185FULL, 0x32B8C8A89A712418ULL } }, /* XSUM_XXH128_withSecret_testdata[1972] */ + { 1973, 0x0000000000000000ULL, { 0xCE0BCC1DE702A8A2ULL, 0xF98D1E720BCF2786ULL } }, /* XSUM_XXH128_withSecret_testdata[1973] */ + { 1974, 0x0000000000000000ULL, { 0xA891D776F1058526ULL, 0x8962F2533D871591ULL } }, /* XSUM_XXH128_withSecret_testdata[1974] */ + { 1975, 0x0000000000000000ULL, { 0xA07E0E04765D1A06ULL, 0x533958D85C048345ULL } }, /* XSUM_XXH128_withSecret_testdata[1975] */ + { 1976, 0x0000000000000000ULL, { 0xD94B1CAA0A7C6CA6ULL, 0x978B9153ABC9667AULL } }, /* XSUM_XXH128_withSecret_testdata[1976] */ + { 1977, 0x0000000000000000ULL, { 0x0DE7EC06A9D79A59ULL, 0xAFC68C3F8CA51B64ULL } }, /* XSUM_XXH128_withSecret_testdata[1977] */ + { 1978, 0x0000000000000000ULL, { 0x83450511C21A36ABULL, 0xC1D56E7FC74519E3ULL } }, /* XSUM_XXH128_withSecret_testdata[1978] */ + { 1979, 0x0000000000000000ULL, { 0x20D014B8011E22A7ULL, 0x64641A5260E6DF32ULL } }, /* XSUM_XXH128_withSecret_testdata[1979] */ + { 1980, 0x0000000000000000ULL, { 0x4E183403B1E728D7ULL, 0xBAF7B36210C85E73ULL } }, /* XSUM_XXH128_withSecret_testdata[1980] */ + { 1981, 0x0000000000000000ULL, { 0xA274442A270F7A2BULL, 0xF4F34AA0B340DCCDULL } }, /* XSUM_XXH128_withSecret_testdata[1981] */ + { 1982, 0x0000000000000000ULL, { 0xAA57D4C24A4C5A3CULL, 0x620855E624C0E8A2ULL } }, /* XSUM_XXH128_withSecret_testdata[1982] */ + { 1983, 0x0000000000000000ULL, { 0x3DA716FB6D15D010ULL, 0xD24EF75EF2DF3B36ULL } }, /* XSUM_XXH128_withSecret_testdata[1983] */ + { 1984, 0x0000000000000000ULL, { 0xF0DBCAD3AF0FC637ULL, 0x9B71FA0E82684400ULL } }, /* XSUM_XXH128_withSecret_testdata[1984] */ + { 1985, 0x0000000000000000ULL, { 0x4F5012143EAA22EFULL, 0x11D926CD045654B7ULL } }, /* XSUM_XXH128_withSecret_testdata[1985] */ + { 1986, 0x0000000000000000ULL, { 0x0A6569F03DDBCE77ULL, 0x5D7D9FDD0BBF9BA0ULL } }, /* XSUM_XXH128_withSecret_testdata[1986] */ + { 1987, 0x0000000000000000ULL, { 0x1F3EAEF95A8DF63EULL, 0x9FB1C1ABEEC70BC0ULL } }, /* XSUM_XXH128_withSecret_testdata[1987] */ + { 1988, 0x0000000000000000ULL, { 0x979A6629B25EEC66ULL, 0x47AFB0876A34AFFAULL } }, /* XSUM_XXH128_withSecret_testdata[1988] */ + { 1989, 0x0000000000000000ULL, { 0xAD1DE4B26AFDDC5AULL, 0x64F7A70006AA6AB2ULL } }, /* XSUM_XXH128_withSecret_testdata[1989] */ + { 1990, 0x0000000000000000ULL, { 0x02471AA9EC8F3FF7ULL, 0x6C5FAFB597AF3139ULL } }, /* XSUM_XXH128_withSecret_testdata[1990] */ + { 1991, 0x0000000000000000ULL, { 0x55C037ECD9007807ULL, 0x324CF6A1B3B50F20ULL } }, /* XSUM_XXH128_withSecret_testdata[1991] */ + { 1992, 0x0000000000000000ULL, { 0xA7B7E36C2F5CD2CDULL, 0xA4DA052B511860AAULL } }, /* XSUM_XXH128_withSecret_testdata[1992] */ + { 1993, 0x0000000000000000ULL, { 0x6FFA0680FF416EE0ULL, 0x96E639931352EBE0ULL } }, /* XSUM_XXH128_withSecret_testdata[1993] */ + { 1994, 0x0000000000000000ULL, { 0x43B362F86DD5E34FULL, 0xE636EB19DC7EA733ULL } }, /* XSUM_XXH128_withSecret_testdata[1994] */ + { 1995, 0x0000000000000000ULL, { 0x68D3CE07A02C606BULL, 0x210D1ED510E22168ULL } }, /* XSUM_XXH128_withSecret_testdata[1995] */ + { 1996, 0x0000000000000000ULL, { 0xD3F6021C2CC7C145ULL, 0xF12F4615F2620D36ULL } }, /* XSUM_XXH128_withSecret_testdata[1996] */ + { 1997, 0x0000000000000000ULL, { 0xF70238CF5D392572ULL, 0xB575F6C0EF7E92D1ULL } }, /* XSUM_XXH128_withSecret_testdata[1997] */ + { 1998, 0x0000000000000000ULL, { 0x5F308D427071394CULL, 0xB0948E8AF96BDEB1ULL } }, /* XSUM_XXH128_withSecret_testdata[1998] */ + { 1999, 0x0000000000000000ULL, { 0x57523F6650F55E0DULL, 0x9806545B07A25B44ULL } }, /* XSUM_XXH128_withSecret_testdata[1999] */ + { 2000, 0x0000000000000000ULL, { 0x680E40011860C581ULL, 0x141F7CCB021A0CE3ULL } }, /* XSUM_XXH128_withSecret_testdata[2000] */ + { 2001, 0x0000000000000000ULL, { 0xD0B11AAD1F5C23C1ULL, 0x066E3B0524350747ULL } }, /* XSUM_XXH128_withSecret_testdata[2001] */ + { 2002, 0x0000000000000000ULL, { 0xA6A9688B992ED021ULL, 0x71C116E5ECBDBE92ULL } }, /* XSUM_XXH128_withSecret_testdata[2002] */ + { 2003, 0x0000000000000000ULL, { 0x50BC82C67C5B7A2AULL, 0x12B29122D44AFF08ULL } }, /* XSUM_XXH128_withSecret_testdata[2003] */ + { 2004, 0x0000000000000000ULL, { 0x13D22CED68E76785ULL, 0x46ADCA838C542577ULL } }, /* XSUM_XXH128_withSecret_testdata[2004] */ + { 2005, 0x0000000000000000ULL, { 0x378EF2D33B8CC69DULL, 0x8A85A47F9A06D5E6ULL } }, /* XSUM_XXH128_withSecret_testdata[2005] */ + { 2006, 0x0000000000000000ULL, { 0x60B89260458BDF90ULL, 0xFB8B0940924B4492ULL } }, /* XSUM_XXH128_withSecret_testdata[2006] */ + { 2007, 0x0000000000000000ULL, { 0xEF62145B4D67249BULL, 0xA779703D5242C0C9ULL } }, /* XSUM_XXH128_withSecret_testdata[2007] */ + { 2008, 0x0000000000000000ULL, { 0x0759C5A7E12CCF8BULL, 0x9996C3230697BF94ULL } }, /* XSUM_XXH128_withSecret_testdata[2008] */ + { 2009, 0x0000000000000000ULL, { 0x83E9CD30677C2674ULL, 0x90A575870D76095FULL } }, /* XSUM_XXH128_withSecret_testdata[2009] */ + { 2010, 0x0000000000000000ULL, { 0x00C92FEFD25FFB3FULL, 0x7605109F2EA07BC1ULL } }, /* XSUM_XXH128_withSecret_testdata[2010] */ + { 2011, 0x0000000000000000ULL, { 0xA714A805852DD9EDULL, 0x9515D96677ED44A6ULL } }, /* XSUM_XXH128_withSecret_testdata[2011] */ + { 2012, 0x0000000000000000ULL, { 0x1AE6E24CC00EC603ULL, 0x7BE7227A525A6719ULL } }, /* XSUM_XXH128_withSecret_testdata[2012] */ + { 2013, 0x0000000000000000ULL, { 0x928ED8E2EE11805FULL, 0x694E2A2EA446C9E9ULL } }, /* XSUM_XXH128_withSecret_testdata[2013] */ + { 2014, 0x0000000000000000ULL, { 0xC12EB28602014B6AULL, 0x12A911A13E418FA3ULL } }, /* XSUM_XXH128_withSecret_testdata[2014] */ + { 2015, 0x0000000000000000ULL, { 0x7420C0D871AAF4DAULL, 0xB1FE8E14EF29D6D2ULL } }, /* XSUM_XXH128_withSecret_testdata[2015] */ + { 2016, 0x0000000000000000ULL, { 0xD11FEA4183B4ABBAULL, 0x5DD1E2A9F2EF80BCULL } }, /* XSUM_XXH128_withSecret_testdata[2016] */ + { 2017, 0x0000000000000000ULL, { 0xA1A8D9B0B2E816AEULL, 0x23B7F45DB6BC01C5ULL } }, /* XSUM_XXH128_withSecret_testdata[2017] */ + { 2018, 0x0000000000000000ULL, { 0x7518F2FD9C9EB851ULL, 0x47508B85DD04B273ULL } }, /* XSUM_XXH128_withSecret_testdata[2018] */ + { 2019, 0x0000000000000000ULL, { 0xBBFC3AD965E4F459ULL, 0x6F8F36683DF0FE94ULL } }, /* XSUM_XXH128_withSecret_testdata[2019] */ + { 2020, 0x0000000000000000ULL, { 0xEB96E630F1F12D5CULL, 0x42A622E64404FD1EULL } }, /* XSUM_XXH128_withSecret_testdata[2020] */ + { 2021, 0x0000000000000000ULL, { 0x8AE95135640DB9AFULL, 0xEBF42A458719B1A0ULL } }, /* XSUM_XXH128_withSecret_testdata[2021] */ + { 2022, 0x0000000000000000ULL, { 0xF0FD6C215C2FAB7DULL, 0x14D5535D3F81E74FULL } }, /* XSUM_XXH128_withSecret_testdata[2022] */ + { 2023, 0x0000000000000000ULL, { 0x22E379A68D4A26E8ULL, 0x8923A340282471E6ULL } }, /* XSUM_XXH128_withSecret_testdata[2023] */ + { 2024, 0x0000000000000000ULL, { 0x751D0B04BD155367ULL, 0x000CB52D6FC2ACD5ULL } }, /* XSUM_XXH128_withSecret_testdata[2024] */ + { 2025, 0x0000000000000000ULL, { 0xBAF9A0F558671628ULL, 0x22CF7D208D8A1ED8ULL } }, /* XSUM_XXH128_withSecret_testdata[2025] */ + { 2026, 0x0000000000000000ULL, { 0x2C98EDD28EB24A27ULL, 0x71F1CAD81AA4B6DEULL } }, /* XSUM_XXH128_withSecret_testdata[2026] */ + { 2027, 0x0000000000000000ULL, { 0x39FF6BB04D78CECBULL, 0x54884D3D57EB308BULL } }, /* XSUM_XXH128_withSecret_testdata[2027] */ + { 2028, 0x0000000000000000ULL, { 0x6C5B98692DA17DECULL, 0x97F8E9D7920D7E76ULL } }, /* XSUM_XXH128_withSecret_testdata[2028] */ + { 2029, 0x0000000000000000ULL, { 0xE3C17365A6225E2EULL, 0x06AC325DE1DB1497ULL } }, /* XSUM_XXH128_withSecret_testdata[2029] */ + { 2030, 0x0000000000000000ULL, { 0x9679231B1AB02919ULL, 0x8207C0CB21771D2BULL } }, /* XSUM_XXH128_withSecret_testdata[2030] */ + { 2031, 0x0000000000000000ULL, { 0x9D6531F5C0D6BFBBULL, 0xD3D2986291E11CAEULL } }, /* XSUM_XXH128_withSecret_testdata[2031] */ + { 2032, 0x0000000000000000ULL, { 0x47D9A3AB7BB9557EULL, 0x47C00287F4185A02ULL } }, /* XSUM_XXH128_withSecret_testdata[2032] */ + { 2033, 0x0000000000000000ULL, { 0xC8EE10B303E59B90ULL, 0xADA457CEDBDEF93EULL } }, /* XSUM_XXH128_withSecret_testdata[2033] */ + { 2034, 0x0000000000000000ULL, { 0x7744087C5E09B4A0ULL, 0x0694EB828BD2CA59ULL } }, /* XSUM_XXH128_withSecret_testdata[2034] */ + { 2035, 0x0000000000000000ULL, { 0x2320AF628CF370B9ULL, 0x80242B8D75CDE372ULL } }, /* XSUM_XXH128_withSecret_testdata[2035] */ + { 2036, 0x0000000000000000ULL, { 0xED1098FAB4D69854ULL, 0xA50426FA977EEF9DULL } }, /* XSUM_XXH128_withSecret_testdata[2036] */ + { 2037, 0x0000000000000000ULL, { 0x5C441874E06823A9ULL, 0x1A253257005475BCULL } }, /* XSUM_XXH128_withSecret_testdata[2037] */ + { 2038, 0x0000000000000000ULL, { 0x88136156AC52E87AULL, 0xBFD170780342F14EULL } }, /* XSUM_XXH128_withSecret_testdata[2038] */ + { 2039, 0x0000000000000000ULL, { 0x357838F44B24482FULL, 0x8C339266C5EFAD8DULL } }, /* XSUM_XXH128_withSecret_testdata[2039] */ + { 2040, 0x0000000000000000ULL, { 0x7EC986E34C09ACD8ULL, 0xAEE68D921ED893ABULL } }, /* XSUM_XXH128_withSecret_testdata[2040] */ + { 2041, 0x0000000000000000ULL, { 0x8219190DAE71BA9EULL, 0xBE9CD710AF8C3598ULL } }, /* XSUM_XXH128_withSecret_testdata[2041] */ + { 2042, 0x0000000000000000ULL, { 0x6D2A9F3B4B4E71F0ULL, 0xF16BDE43AC530E78ULL } }, /* XSUM_XXH128_withSecret_testdata[2042] */ + { 2043, 0x0000000000000000ULL, { 0x8EC03594DB1AD0DAULL, 0xAE6B92902FCFD0ECULL } }, /* XSUM_XXH128_withSecret_testdata[2043] */ + { 2044, 0x0000000000000000ULL, { 0x59EED54EB42DE33AULL, 0x39CCC673B50690CDULL } }, /* XSUM_XXH128_withSecret_testdata[2044] */ + { 2045, 0x0000000000000000ULL, { 0x13805D233DAD8790ULL, 0x3919DD9BA0A9C354ULL } }, /* XSUM_XXH128_withSecret_testdata[2045] */ + { 2046, 0x0000000000000000ULL, { 0x43676048065E159CULL, 0x44EB3E80CF7C839DULL } }, /* XSUM_XXH128_withSecret_testdata[2046] */ + { 2047, 0x0000000000000000ULL, { 0x209243520DBDB300ULL, 0x47AA10BA88A049F3ULL } }, /* XSUM_XXH128_withSecret_testdata[2047] */ + { 2048, 0x0000000000000000ULL, { 0xD32E975821D6519FULL, 0xE862D841C07049AFULL } }, /* XSUM_XXH128_withSecret_testdata[2048] */ + { 2049, 0x0000000000000000ULL, { 0xA21BE3A04630DEF3ULL, 0x545E67046AF902FBULL } }, /* XSUM_XXH128_withSecret_testdata[2049] */ + { 2050, 0x0000000000000000ULL, { 0x66C1DE03D1E73446ULL, 0xF5BFE57D4A779A84ULL } }, /* XSUM_XXH128_withSecret_testdata[2050] */ + { 2051, 0x0000000000000000ULL, { 0x6F919C733E968D5FULL, 0xF1EF2A561E04DC77ULL } }, /* XSUM_XXH128_withSecret_testdata[2051] */ + { 2052, 0x0000000000000000ULL, { 0x26C292BB2CE4A52BULL, 0xCBF1D16F03D0EC63ULL } }, /* XSUM_XXH128_withSecret_testdata[2052] */ + { 2053, 0x0000000000000000ULL, { 0x38BC94F790714231ULL, 0x6E0F0D4778789FA4ULL } }, /* XSUM_XXH128_withSecret_testdata[2053] */ + { 2054, 0x0000000000000000ULL, { 0x1CC2A38D40B0B479ULL, 0xCCA02436A44113E1ULL } }, /* XSUM_XXH128_withSecret_testdata[2054] */ + { 2055, 0x0000000000000000ULL, { 0x1F88E6D332129AD7ULL, 0x0BF615DF232877BAULL } }, /* XSUM_XXH128_withSecret_testdata[2055] */ + { 2056, 0x0000000000000000ULL, { 0xEB2297D9BC7DAB31ULL, 0x2146FAD8C43B91A6ULL } }, /* XSUM_XXH128_withSecret_testdata[2056] */ + { 2057, 0x0000000000000000ULL, { 0x5AD39A25C77470A7ULL, 0x47AF2D018B76E6B1ULL } }, /* XSUM_XXH128_withSecret_testdata[2057] */ + { 2058, 0x0000000000000000ULL, { 0xE2EBAE7AA5590976ULL, 0xD6B1F25D0BEE37F2ULL } }, /* XSUM_XXH128_withSecret_testdata[2058] */ + { 2059, 0x0000000000000000ULL, { 0xC95A7CE1FA9D862CULL, 0x1E31752B942ECE49ULL } }, /* XSUM_XXH128_withSecret_testdata[2059] */ + { 2060, 0x0000000000000000ULL, { 0x4164FD4B4B60A744ULL, 0xF401E7D41A9E2206ULL } }, /* XSUM_XXH128_withSecret_testdata[2060] */ + { 2061, 0x0000000000000000ULL, { 0xD5EBADC52B3BE9B4ULL, 0x9FAC53595E2FDFE1ULL } }, /* XSUM_XXH128_withSecret_testdata[2061] */ + { 2062, 0x0000000000000000ULL, { 0x911E0F903F1D33ADULL, 0xC3C7D68077720013ULL } }, /* XSUM_XXH128_withSecret_testdata[2062] */ + { 2063, 0x0000000000000000ULL, { 0xE6672AD872CCD53FULL, 0xA1F266D68BF5F7C9ULL } }, /* XSUM_XXH128_withSecret_testdata[2063] */ + { 2064, 0x0000000000000000ULL, { 0xEFB596ADA9519FDDULL, 0xD868F7624117B9CFULL } }, /* XSUM_XXH128_withSecret_testdata[2064] */ + { 2065, 0x0000000000000000ULL, { 0xB46502B4C20DB573ULL, 0x61BACB371730F040ULL } }, /* XSUM_XXH128_withSecret_testdata[2065] */ + { 2066, 0x0000000000000000ULL, { 0xE96B5AA61BE76157ULL, 0xAE640BD3DEB2BAF6ULL } }, /* XSUM_XXH128_withSecret_testdata[2066] */ + { 2067, 0x0000000000000000ULL, { 0x6778895F05F19804ULL, 0xAA6939561FA84A1EULL } }, /* XSUM_XXH128_withSecret_testdata[2067] */ + { 2068, 0x0000000000000000ULL, { 0x81D3331F18F62106ULL, 0x3792C49A08615B47ULL } }, /* XSUM_XXH128_withSecret_testdata[2068] */ + { 2069, 0x0000000000000000ULL, { 0x73B7E0205B9C8F02ULL, 0xF5BA4D6AA2B2822AULL } }, /* XSUM_XXH128_withSecret_testdata[2069] */ + { 2070, 0x0000000000000000ULL, { 0xBC279DDACB497915ULL, 0x6F3E071C1AFF38EAULL } }, /* XSUM_XXH128_withSecret_testdata[2070] */ + { 2071, 0x0000000000000000ULL, { 0x26E6F63E802A0237ULL, 0xACE401609601C7A1ULL } }, /* XSUM_XXH128_withSecret_testdata[2071] */ + { 2072, 0x0000000000000000ULL, { 0x6FDDA4A779C05513ULL, 0x8CF66E7291C565A9ULL } }, /* XSUM_XXH128_withSecret_testdata[2072] */ + { 2073, 0x0000000000000000ULL, { 0x8C117EA6D5CB1D6AULL, 0x48AEF9199F0B5632ULL } }, /* XSUM_XXH128_withSecret_testdata[2073] */ + { 2074, 0x0000000000000000ULL, { 0xBEF162C7599DB103ULL, 0x1F95FC693850C422ULL } }, /* XSUM_XXH128_withSecret_testdata[2074] */ + { 2075, 0x0000000000000000ULL, { 0x99A8565C62D35B6BULL, 0x49F5951D8A7EB59BULL } }, /* XSUM_XXH128_withSecret_testdata[2075] */ + { 2076, 0x0000000000000000ULL, { 0x8C09C893AA0745B4ULL, 0x648A5EAC25E6F1F4ULL } }, /* XSUM_XXH128_withSecret_testdata[2076] */ + { 2077, 0x0000000000000000ULL, { 0x259D32B53BC5C483ULL, 0x71EEF38B3C86E852ULL } }, /* XSUM_XXH128_withSecret_testdata[2077] */ + { 2078, 0x0000000000000000ULL, { 0xF34E587F40BA1DC4ULL, 0x9767A1664AACE315ULL } }, /* XSUM_XXH128_withSecret_testdata[2078] */ + { 2079, 0x0000000000000000ULL, { 0x86EF0E042CD99677ULL, 0x5AC13EEB839FD291ULL } }, /* XSUM_XXH128_withSecret_testdata[2079] */ + { 2080, 0x0000000000000000ULL, { 0xD50E1D4B97E7610DULL, 0xB63D1657485E68ECULL } }, /* XSUM_XXH128_withSecret_testdata[2080] */ + { 2081, 0x0000000000000000ULL, { 0x8D79F9511D9BD6C8ULL, 0x54845D5FB1DB9C6DULL } }, /* XSUM_XXH128_withSecret_testdata[2081] */ + { 2082, 0x0000000000000000ULL, { 0xBD601351D0BA0291ULL, 0x0F0A91583BC94E90ULL } }, /* XSUM_XXH128_withSecret_testdata[2082] */ + { 2083, 0x0000000000000000ULL, { 0x7A7871FDFED55F62ULL, 0xF1D3350CF0DCD6A6ULL } }, /* XSUM_XXH128_withSecret_testdata[2083] */ + { 2084, 0x0000000000000000ULL, { 0x1561798466C5452CULL, 0x9F65E75ADBAC73BCULL } }, /* XSUM_XXH128_withSecret_testdata[2084] */ + { 2085, 0x0000000000000000ULL, { 0x0D21BCE3EF6C5C55ULL, 0x288D94B2C2DCF374ULL } }, /* XSUM_XXH128_withSecret_testdata[2085] */ + { 2086, 0x0000000000000000ULL, { 0xAAB4CE0A582B1E13ULL, 0x0EA448C36843D120ULL } }, /* XSUM_XXH128_withSecret_testdata[2086] */ + { 2087, 0x0000000000000000ULL, { 0x7DF76FB93499EF9EULL, 0xC7944B7C09813BD6ULL } }, /* XSUM_XXH128_withSecret_testdata[2087] */ + { 2088, 0x0000000000000000ULL, { 0x8C8786ECB7222674ULL, 0xCBD4D46F637134E9ULL } }, /* XSUM_XXH128_withSecret_testdata[2088] */ + { 2089, 0x0000000000000000ULL, { 0x76F06F2C42B2BF52ULL, 0xF351BB79D2A2BAAAULL } }, /* XSUM_XXH128_withSecret_testdata[2089] */ + { 2090, 0x0000000000000000ULL, { 0xE819BD3C60E0DD3EULL, 0x30C7B5F905FF796BULL } }, /* XSUM_XXH128_withSecret_testdata[2090] */ + { 2091, 0x0000000000000000ULL, { 0xEECA6A591070079EULL, 0xAFE68D99E19A54EAULL } }, /* XSUM_XXH128_withSecret_testdata[2091] */ + { 2092, 0x0000000000000000ULL, { 0xBB3BEA3E401EAD72ULL, 0x4027D7D6F9B98E72ULL } }, /* XSUM_XXH128_withSecret_testdata[2092] */ + { 2093, 0x0000000000000000ULL, { 0x844123209C9A55F9ULL, 0x3F87B0F5F0178633ULL } }, /* XSUM_XXH128_withSecret_testdata[2093] */ + { 2094, 0x0000000000000000ULL, { 0x6E64CDD471315BB3ULL, 0xE5FFAD7979DC61DDULL } }, /* XSUM_XXH128_withSecret_testdata[2094] */ + { 2095, 0x0000000000000000ULL, { 0x3B457BD683D5C88BULL, 0xDC9C5A00DB6DCFF0ULL } }, /* XSUM_XXH128_withSecret_testdata[2095] */ + { 2096, 0x0000000000000000ULL, { 0xF509FFB4B4B76710ULL, 0x8289DD2326661413ULL } }, /* XSUM_XXH128_withSecret_testdata[2096] */ + { 2097, 0x0000000000000000ULL, { 0x1573E7DE38373E65ULL, 0x341B4FA84C58C6EFULL } }, /* XSUM_XXH128_withSecret_testdata[2097] */ + { 2098, 0x0000000000000000ULL, { 0xEBEB0F4DBB4C8377ULL, 0x81EC3B9F61271B06ULL } }, /* XSUM_XXH128_withSecret_testdata[2098] */ + { 2099, 0x0000000000000000ULL, { 0x8DCD6D2487F34E24ULL, 0x6A997419B3FAEED7ULL } }, /* XSUM_XXH128_withSecret_testdata[2099] */ + { 2100, 0x0000000000000000ULL, { 0xC4D66A26C8A2FDADULL, 0xFB51FBD4E516D4A6ULL } }, /* XSUM_XXH128_withSecret_testdata[2100] */ + { 2101, 0x0000000000000000ULL, { 0x52712CF283F417CEULL, 0x82D34AE72D121F23ULL } }, /* XSUM_XXH128_withSecret_testdata[2101] */ + { 2102, 0x0000000000000000ULL, { 0x924F8C83442180D7ULL, 0x8F2B8F46EBEAE304ULL } }, /* XSUM_XXH128_withSecret_testdata[2102] */ + { 2103, 0x0000000000000000ULL, { 0x343DE55494B2C245ULL, 0x794A16E5FC1AB286ULL } }, /* XSUM_XXH128_withSecret_testdata[2103] */ + { 2104, 0x0000000000000000ULL, { 0x5CAF411F83BA19F6ULL, 0xF0FF81E9FDC27825ULL } }, /* XSUM_XXH128_withSecret_testdata[2104] */ + { 2105, 0x0000000000000000ULL, { 0x06EA3A8C72522C43ULL, 0x039947AF94ECB7F0ULL } }, /* XSUM_XXH128_withSecret_testdata[2105] */ + { 2106, 0x0000000000000000ULL, { 0x2A0A7FC6FA02CBEAULL, 0x917A2F9EDC5406C8ULL } }, /* XSUM_XXH128_withSecret_testdata[2106] */ + { 2107, 0x0000000000000000ULL, { 0xBD81E26F559D5741ULL, 0xAAE5572DBE32AE42ULL } }, /* XSUM_XXH128_withSecret_testdata[2107] */ + { 2108, 0x0000000000000000ULL, { 0x8F2996F3DECAA2B9ULL, 0x52B5D7C122488B9BULL } }, /* XSUM_XXH128_withSecret_testdata[2108] */ + { 2109, 0x0000000000000000ULL, { 0xFBEC878C8A37DF88ULL, 0x25E4B8871E05AE6FULL } }, /* XSUM_XXH128_withSecret_testdata[2109] */ + { 2110, 0x0000000000000000ULL, { 0xBB27B7BA8CD54B6DULL, 0x4D35A31D66621723ULL } }, /* XSUM_XXH128_withSecret_testdata[2110] */ + { 2111, 0x0000000000000000ULL, { 0xADFD8F12387660C6ULL, 0x24EDC189B3B3196CULL } }, /* XSUM_XXH128_withSecret_testdata[2111] */ + { 2112, 0x0000000000000000ULL, { 0x7734C5CB42F4AA50ULL, 0xD8C1064592D83B85ULL } }, /* XSUM_XXH128_withSecret_testdata[2112] */ + { 2113, 0x0000000000000000ULL, { 0x37AAADC6FB38A58EULL, 0x00BF183B60146686ULL } }, /* XSUM_XXH128_withSecret_testdata[2113] */ + { 2114, 0x0000000000000000ULL, { 0x72822DA7E16EBD52ULL, 0x6B5A32B6CC325CB0ULL } }, /* XSUM_XXH128_withSecret_testdata[2114] */ + { 2115, 0x0000000000000000ULL, { 0xF2514B8997F56ADAULL, 0x6E4CD1B7C684B1C6ULL } }, /* XSUM_XXH128_withSecret_testdata[2115] */ + { 2116, 0x0000000000000000ULL, { 0x7B0E13F461B450DCULL, 0x60DB69CFD53B208EULL } }, /* XSUM_XXH128_withSecret_testdata[2116] */ + { 2117, 0x0000000000000000ULL, { 0x6299C85970CB72F3ULL, 0xFEF3AB0B1B6AE6FCULL } }, /* XSUM_XXH128_withSecret_testdata[2117] */ + { 2118, 0x0000000000000000ULL, { 0x9F00FEBF3293C5D2ULL, 0x1CAB3C4F20E6F247ULL } }, /* XSUM_XXH128_withSecret_testdata[2118] */ + { 2119, 0x0000000000000000ULL, { 0x29F5866058BB82CFULL, 0x0C67449CBA003AE0ULL } }, /* XSUM_XXH128_withSecret_testdata[2119] */ + { 2120, 0x0000000000000000ULL, { 0x7B68AC656D8544D3ULL, 0x14620B120C293592ULL } }, /* XSUM_XXH128_withSecret_testdata[2120] */ + { 2121, 0x0000000000000000ULL, { 0x14676FD39C54BEC3ULL, 0x178C30861EA26F6AULL } }, /* XSUM_XXH128_withSecret_testdata[2121] */ + { 2122, 0x0000000000000000ULL, { 0x74B2C201D6E3F634ULL, 0x34AE106DFA9AF302ULL } }, /* XSUM_XXH128_withSecret_testdata[2122] */ + { 2123, 0x0000000000000000ULL, { 0xB784D3F03CDC62C5ULL, 0x4180C1A7BB899A4FULL } }, /* XSUM_XXH128_withSecret_testdata[2123] */ + { 2124, 0x0000000000000000ULL, { 0x1071B2D025552CD9ULL, 0x62358C671DC9DAC0ULL } }, /* XSUM_XXH128_withSecret_testdata[2124] */ + { 2125, 0x0000000000000000ULL, { 0x95B0032D43F512C3ULL, 0xAF32EC0A0AEDE325ULL } }, /* XSUM_XXH128_withSecret_testdata[2125] */ + { 2126, 0x0000000000000000ULL, { 0xB089997C117D2050ULL, 0x0B22866EFF7CA22BULL } }, /* XSUM_XXH128_withSecret_testdata[2126] */ + { 2127, 0x0000000000000000ULL, { 0x50F0CB60BD0A4454ULL, 0x112CE70CE2EDF652ULL } }, /* XSUM_XXH128_withSecret_testdata[2127] */ + { 2128, 0x0000000000000000ULL, { 0x55B2F545EECC6289ULL, 0xE4EEBD5A9147A80AULL } }, /* XSUM_XXH128_withSecret_testdata[2128] */ + { 2129, 0x0000000000000000ULL, { 0xB9252EC3C2B99725ULL, 0xE08216FD5C0FA6C6ULL } }, /* XSUM_XXH128_withSecret_testdata[2129] */ + { 2130, 0x0000000000000000ULL, { 0x01C577B1E6F49009ULL, 0xDCB248C4795BA261ULL } }, /* XSUM_XXH128_withSecret_testdata[2130] */ + { 2131, 0x0000000000000000ULL, { 0x3D09169CB408C167ULL, 0x729DFC1F92B49D59ULL } }, /* XSUM_XXH128_withSecret_testdata[2131] */ + { 2132, 0x0000000000000000ULL, { 0x02114BEE3F68C72AULL, 0xFD24D3DBB1682978ULL } }, /* XSUM_XXH128_withSecret_testdata[2132] */ + { 2133, 0x0000000000000000ULL, { 0x8E6428C72B768BD8ULL, 0xF5FBBAFB376FADB2ULL } }, /* XSUM_XXH128_withSecret_testdata[2133] */ + { 2134, 0x0000000000000000ULL, { 0x8EE2E521028193B2ULL, 0x09AD2A073825D62AULL } }, /* XSUM_XXH128_withSecret_testdata[2134] */ + { 2135, 0x0000000000000000ULL, { 0xC3242FE952F2409AULL, 0xAFB8CC1E5FE224B3ULL } }, /* XSUM_XXH128_withSecret_testdata[2135] */ + { 2136, 0x0000000000000000ULL, { 0xC884F8B40EA4D506ULL, 0xD6A745C985239C1EULL } }, /* XSUM_XXH128_withSecret_testdata[2136] */ + { 2137, 0x0000000000000000ULL, { 0x61E514D4720C4879ULL, 0x240C87BDED648746ULL } }, /* XSUM_XXH128_withSecret_testdata[2137] */ + { 2138, 0x0000000000000000ULL, { 0xEDD2803ED3C69260ULL, 0x6A1D32114B6A4AB7ULL } }, /* XSUM_XXH128_withSecret_testdata[2138] */ + { 2139, 0x0000000000000000ULL, { 0x7D410220AE855F6BULL, 0xEBCAE06386D14559ULL } }, /* XSUM_XXH128_withSecret_testdata[2139] */ + { 2140, 0x0000000000000000ULL, { 0xB585C3659C5134AAULL, 0x4149F9B20B57C3DBULL } }, /* XSUM_XXH128_withSecret_testdata[2140] */ + { 2141, 0x0000000000000000ULL, { 0xE7A30A7EEBBE9FE5ULL, 0x99895A736C6C049BULL } }, /* XSUM_XXH128_withSecret_testdata[2141] */ + { 2142, 0x0000000000000000ULL, { 0x3D48856325430C1EULL, 0x13C3EA1A91CC42C9ULL } }, /* XSUM_XXH128_withSecret_testdata[2142] */ + { 2143, 0x0000000000000000ULL, { 0xB6C9104D13537A3FULL, 0xC28762897699F2E9ULL } }, /* XSUM_XXH128_withSecret_testdata[2143] */ + { 2144, 0x0000000000000000ULL, { 0x52432918B4F4334BULL, 0x297071BA2B49EFA1ULL } }, /* XSUM_XXH128_withSecret_testdata[2144] */ + { 2145, 0x0000000000000000ULL, { 0x1E9DFCF70AFEA2C6ULL, 0xC3F149BF7B9B38F0ULL } }, /* XSUM_XXH128_withSecret_testdata[2145] */ + { 2146, 0x0000000000000000ULL, { 0xDF53EC34725FEF8DULL, 0x618A100BE51AA6A0ULL } }, /* XSUM_XXH128_withSecret_testdata[2146] */ + { 2147, 0x0000000000000000ULL, { 0xE02E5F9CED9796F5ULL, 0xD6DCA295449F6295ULL } }, /* XSUM_XXH128_withSecret_testdata[2147] */ + { 2148, 0x0000000000000000ULL, { 0x67C08B1347A9FBE6ULL, 0xF4682799540725B9ULL } }, /* XSUM_XXH128_withSecret_testdata[2148] */ + { 2149, 0x0000000000000000ULL, { 0x596ACD131E8324E6ULL, 0x9CC492037A263484ULL } }, /* XSUM_XXH128_withSecret_testdata[2149] */ + { 2150, 0x0000000000000000ULL, { 0x857B573F75AF45B3ULL, 0xE5D52F7198E78E95ULL } }, /* XSUM_XXH128_withSecret_testdata[2150] */ + { 2151, 0x0000000000000000ULL, { 0xF621184FD7387501ULL, 0xEEE3AD55FDEC915EULL } }, /* XSUM_XXH128_withSecret_testdata[2151] */ + { 2152, 0x0000000000000000ULL, { 0xBF3DD7EA4DA7F9B3ULL, 0x84625CBAECFA3C6BULL } }, /* XSUM_XXH128_withSecret_testdata[2152] */ + { 2153, 0x0000000000000000ULL, { 0xA778BD9689DA8D92ULL, 0xE6D6C36A49D4D19DULL } }, /* XSUM_XXH128_withSecret_testdata[2153] */ + { 2154, 0x0000000000000000ULL, { 0xF9F8714A7D2B38D8ULL, 0xBE82BE3A286F6F87ULL } }, /* XSUM_XXH128_withSecret_testdata[2154] */ + { 2155, 0x0000000000000000ULL, { 0x8F1D87FA7292F138ULL, 0xB396F9C7C86303A6ULL } }, /* XSUM_XXH128_withSecret_testdata[2155] */ + { 2156, 0x0000000000000000ULL, { 0xC5545D2DAD173E28ULL, 0xC2D9AB02403F812DULL } }, /* XSUM_XXH128_withSecret_testdata[2156] */ + { 2157, 0x0000000000000000ULL, { 0xB51D09BF3D4A4F17ULL, 0x340A3E2E9D318A19ULL } }, /* XSUM_XXH128_withSecret_testdata[2157] */ + { 2158, 0x0000000000000000ULL, { 0x3E4D380ABA6BBED3ULL, 0x7AF87D54BE2CC563ULL } }, /* XSUM_XXH128_withSecret_testdata[2158] */ + { 2159, 0x0000000000000000ULL, { 0xD87EDF8499C1EFCBULL, 0x25D9BC4E4553E6BCULL } }, /* XSUM_XXH128_withSecret_testdata[2159] */ + { 2160, 0x0000000000000000ULL, { 0x883CAFC7E6BDA01FULL, 0x9168F7B53E474B7CULL } }, /* XSUM_XXH128_withSecret_testdata[2160] */ + { 2161, 0x0000000000000000ULL, { 0xC2A0A8C60408CB03ULL, 0x3E5ACF676E4865A6ULL } }, /* XSUM_XXH128_withSecret_testdata[2161] */ + { 2162, 0x0000000000000000ULL, { 0x4FF2D7CF67B9D722ULL, 0x1567A3A775CD9BBAULL } }, /* XSUM_XXH128_withSecret_testdata[2162] */ + { 2163, 0x0000000000000000ULL, { 0xC6A790AC7051FDA7ULL, 0x0B8AA5FD5BFE4BF2ULL } }, /* XSUM_XXH128_withSecret_testdata[2163] */ + { 2164, 0x0000000000000000ULL, { 0x290824A0B617FAA1ULL, 0x14170CDF62C3BA98ULL } }, /* XSUM_XXH128_withSecret_testdata[2164] */ + { 2165, 0x0000000000000000ULL, { 0x70926C396EEF2312ULL, 0x78FE4A07E04A2D57ULL } }, /* XSUM_XXH128_withSecret_testdata[2165] */ + { 2166, 0x0000000000000000ULL, { 0xD1760A6B92C41E94ULL, 0x4B46055042E73D86ULL } }, /* XSUM_XXH128_withSecret_testdata[2166] */ + { 2167, 0x0000000000000000ULL, { 0x6EF1770EA5C074AFULL, 0xD488865192EE4481ULL } }, /* XSUM_XXH128_withSecret_testdata[2167] */ + { 2168, 0x0000000000000000ULL, { 0xAEDE9A122E3DF1EDULL, 0xCE45A651F042A8F3ULL } }, /* XSUM_XXH128_withSecret_testdata[2168] */ + { 2169, 0x0000000000000000ULL, { 0x97966969D62D7923ULL, 0xFCD0E761671B3BDEULL } }, /* XSUM_XXH128_withSecret_testdata[2169] */ + { 2170, 0x0000000000000000ULL, { 0x1C92CB86837BA1EAULL, 0x7621F0AD53529B0DULL } }, /* XSUM_XXH128_withSecret_testdata[2170] */ + { 2171, 0x0000000000000000ULL, { 0x1CDC56581C55A9C6ULL, 0x7EFF33184E1185BAULL } }, /* XSUM_XXH128_withSecret_testdata[2171] */ + { 2172, 0x0000000000000000ULL, { 0x3636D7EA7BC90F01ULL, 0x26B4F359EFCF35CFULL } }, /* XSUM_XXH128_withSecret_testdata[2172] */ + { 2173, 0x0000000000000000ULL, { 0x38048B8DEA0CA60AULL, 0x698D8BE137968736ULL } }, /* XSUM_XXH128_withSecret_testdata[2173] */ + { 2174, 0x0000000000000000ULL, { 0xD02B6B9E5AA664EAULL, 0x877B665AE43817FCULL } }, /* XSUM_XXH128_withSecret_testdata[2174] */ + { 2175, 0x0000000000000000ULL, { 0x0539B782E6DFBD35ULL, 0xB140523BD6ED4314ULL } }, /* XSUM_XXH128_withSecret_testdata[2175] */ + { 2176, 0x0000000000000000ULL, { 0xD6E73682701B5995ULL, 0x00FD69B918BF252DULL } }, /* XSUM_XXH128_withSecret_testdata[2176] */ + { 2177, 0x0000000000000000ULL, { 0x60B860587E195139ULL, 0xEFCA8083D8E004E4ULL } }, /* XSUM_XXH128_withSecret_testdata[2177] */ + { 2178, 0x0000000000000000ULL, { 0x25EE8AEA8EEA3138ULL, 0x5613EC937C92A476ULL } }, /* XSUM_XXH128_withSecret_testdata[2178] */ + { 2179, 0x0000000000000000ULL, { 0x50CB0FCF6C709664ULL, 0x12D5E0A9FA000F4CULL } }, /* XSUM_XXH128_withSecret_testdata[2179] */ + { 2180, 0x0000000000000000ULL, { 0xE174F4506DC059A0ULL, 0x3D0EEA665113BE36ULL } }, /* XSUM_XXH128_withSecret_testdata[2180] */ + { 2181, 0x0000000000000000ULL, { 0x29F30375099FD331ULL, 0x6663139F6633B627ULL } }, /* XSUM_XXH128_withSecret_testdata[2181] */ + { 2182, 0x0000000000000000ULL, { 0x0911ED3330826D10ULL, 0x85E513B4923F64DEULL } }, /* XSUM_XXH128_withSecret_testdata[2182] */ + { 2183, 0x0000000000000000ULL, { 0x09DB411B3F57F5EAULL, 0xEF092B04FC65FDC2ULL } }, /* XSUM_XXH128_withSecret_testdata[2183] */ + { 2184, 0x0000000000000000ULL, { 0x20E42F7D0F648E29ULL, 0x42E7A32DA3C9AF8DULL } }, /* XSUM_XXH128_withSecret_testdata[2184] */ + { 2185, 0x0000000000000000ULL, { 0x26EEDE1A6CED9BDAULL, 0x9AAFD57459097CDAULL } }, /* XSUM_XXH128_withSecret_testdata[2185] */ + { 2186, 0x0000000000000000ULL, { 0x1BFFC9DF26D340F9ULL, 0x6BDC1545032CBF64ULL } }, /* XSUM_XXH128_withSecret_testdata[2186] */ + { 2187, 0x0000000000000000ULL, { 0x2EDA55B6A2EF296AULL, 0x772C99ECEF2D9C47ULL } }, /* XSUM_XXH128_withSecret_testdata[2187] */ + { 2188, 0x0000000000000000ULL, { 0x4E36B8B0DE4FC569ULL, 0x0B45B90BBCFF66EDULL } }, /* XSUM_XXH128_withSecret_testdata[2188] */ + { 2189, 0x0000000000000000ULL, { 0xB3F247689FEA7D39ULL, 0xFE5157B7416BB5AFULL } }, /* XSUM_XXH128_withSecret_testdata[2189] */ + { 2190, 0x0000000000000000ULL, { 0xAA5325019870AA88ULL, 0x5F5EE157F5BE4298ULL } }, /* XSUM_XXH128_withSecret_testdata[2190] */ + { 2191, 0x0000000000000000ULL, { 0xAF1F74B12B1598BCULL, 0x373DF8098552C863ULL } }, /* XSUM_XXH128_withSecret_testdata[2191] */ + { 2192, 0x0000000000000000ULL, { 0x3758717C3AEF2F7DULL, 0xEC3521F2357BD062ULL } }, /* XSUM_XXH128_withSecret_testdata[2192] */ + { 2193, 0x0000000000000000ULL, { 0x1F4624F680940704ULL, 0x337800FE1A1A0D66ULL } }, /* XSUM_XXH128_withSecret_testdata[2193] */ + { 2194, 0x0000000000000000ULL, { 0x7A29300A4BFC4F98ULL, 0xB5CBE2591D62F2F5ULL } }, /* XSUM_XXH128_withSecret_testdata[2194] */ + { 2195, 0x0000000000000000ULL, { 0x9BCA2AF8728075FDULL, 0x51351521314ED6D9ULL } }, /* XSUM_XXH128_withSecret_testdata[2195] */ + { 2196, 0x0000000000000000ULL, { 0xAE4D849184AD3BDDULL, 0x96223084B0BF3382ULL } }, /* XSUM_XXH128_withSecret_testdata[2196] */ + { 2197, 0x0000000000000000ULL, { 0xA1B5FAF56D9DFF7FULL, 0x7762F8CAB902D260ULL } }, /* XSUM_XXH128_withSecret_testdata[2197] */ + { 2198, 0x0000000000000000ULL, { 0xF06E29546BEB29FEULL, 0xFA74BF4E1D54AB54ULL } }, /* XSUM_XXH128_withSecret_testdata[2198] */ + { 2199, 0x0000000000000000ULL, { 0x6899A86016F32CCCULL, 0xA9C1C7DDEE6EBAE1ULL } }, /* XSUM_XXH128_withSecret_testdata[2199] */ + { 2200, 0x0000000000000000ULL, { 0x336C1F494516C5CFULL, 0x4BFF5E68B3FCA4AEULL } }, /* XSUM_XXH128_withSecret_testdata[2200] */ + { 2201, 0x0000000000000000ULL, { 0x909390D4ECF72E10ULL, 0xA406FE2EB929287EULL } }, /* XSUM_XXH128_withSecret_testdata[2201] */ + { 2202, 0x0000000000000000ULL, { 0x1D36F744CA69DEFDULL, 0xF6969011A47EA4CFULL } }, /* XSUM_XXH128_withSecret_testdata[2202] */ + { 2203, 0x0000000000000000ULL, { 0xFD829BB76B9D4869ULL, 0x62C4A68F0C9E2AEBULL } }, /* XSUM_XXH128_withSecret_testdata[2203] */ + { 2204, 0x0000000000000000ULL, { 0x5C039EDB6334D64FULL, 0x4EF360E19FE63E40ULL } }, /* XSUM_XXH128_withSecret_testdata[2204] */ + { 2205, 0x0000000000000000ULL, { 0xE5B34EBBF9D385B4ULL, 0x3D60581F36103A15ULL } }, /* XSUM_XXH128_withSecret_testdata[2205] */ + { 2206, 0x0000000000000000ULL, { 0xCAE9F8B87FD48178ULL, 0xEADAB8243971337EULL } }, /* XSUM_XXH128_withSecret_testdata[2206] */ + { 2207, 0x0000000000000000ULL, { 0xE7C0334ED41AAD82ULL, 0x5BB1A3F308EEA2EDULL } }, /* XSUM_XXH128_withSecret_testdata[2207] */ + { 2208, 0x0000000000000000ULL, { 0x25DB0183D11240A7ULL, 0x5098E1506B5DD841ULL } }, /* XSUM_XXH128_withSecret_testdata[2208] */ + { 2209, 0x0000000000000000ULL, { 0x25BE6E483CA29A06ULL, 0x3C102E4255E95269ULL } }, /* XSUM_XXH128_withSecret_testdata[2209] */ + { 2210, 0x0000000000000000ULL, { 0x6EEC50B126409696ULL, 0xBE33872F6BE21403ULL } }, /* XSUM_XXH128_withSecret_testdata[2210] */ + { 2211, 0x0000000000000000ULL, { 0x28630B9216B6B1B5ULL, 0x1ADC22A158D68CFDULL } }, /* XSUM_XXH128_withSecret_testdata[2211] */ + { 2212, 0x0000000000000000ULL, { 0xDD5F2BB4C8213D2CULL, 0x7A5F341496667873ULL } }, /* XSUM_XXH128_withSecret_testdata[2212] */ + { 2213, 0x0000000000000000ULL, { 0xF73FDB2ABD004047ULL, 0x11D47923D75523D0ULL } }, /* XSUM_XXH128_withSecret_testdata[2213] */ + { 2214, 0x0000000000000000ULL, { 0x5FC59786B18C00A6ULL, 0x93781E93D0A073EFULL } }, /* XSUM_XXH128_withSecret_testdata[2214] */ + { 2215, 0x0000000000000000ULL, { 0xF60C96501D50DFB6ULL, 0x110D3F41ED1C7DC0ULL } }, /* XSUM_XXH128_withSecret_testdata[2215] */ + { 2216, 0x0000000000000000ULL, { 0x22E2D42C123565EDULL, 0x8F0F0F7D4085348EULL } }, /* XSUM_XXH128_withSecret_testdata[2216] */ + { 2217, 0x0000000000000000ULL, { 0x9A708BA1C587E313ULL, 0x739D30DF8714C6B4ULL } }, /* XSUM_XXH128_withSecret_testdata[2217] */ + { 2218, 0x0000000000000000ULL, { 0x39F4108425FE61D9ULL, 0x732CBB6B607D07A8ULL } }, /* XSUM_XXH128_withSecret_testdata[2218] */ + { 2219, 0x0000000000000000ULL, { 0x28B00C7A4B8226A6ULL, 0xEE2D1DDE4E4C1058ULL } }, /* XSUM_XXH128_withSecret_testdata[2219] */ + { 2220, 0x0000000000000000ULL, { 0x7D1E4243181151E6ULL, 0x87E4B3F36B0F5F29ULL } }, /* XSUM_XXH128_withSecret_testdata[2220] */ + { 2221, 0x0000000000000000ULL, { 0x79C7FAEB4BA041BEULL, 0xAA5E42A3D72806A6ULL } }, /* XSUM_XXH128_withSecret_testdata[2221] */ + { 2222, 0x0000000000000000ULL, { 0x6ED768A5652D7700ULL, 0x93028FF6C0725DE7ULL } }, /* XSUM_XXH128_withSecret_testdata[2222] */ + { 2223, 0x0000000000000000ULL, { 0xF9A78935B335652DULL, 0x7A8EB05C1DBC0796ULL } }, /* XSUM_XXH128_withSecret_testdata[2223] */ + { 2224, 0x0000000000000000ULL, { 0x5D7FF63F85C6ED9AULL, 0x6C523A954A7E82EEULL } }, /* XSUM_XXH128_withSecret_testdata[2224] */ + { 2225, 0x0000000000000000ULL, { 0xD8B9E693B3AAB45EULL, 0x03C2210535C54CE2ULL } }, /* XSUM_XXH128_withSecret_testdata[2225] */ + { 2226, 0x0000000000000000ULL, { 0xF413F7EFF888972FULL, 0x881F081F8F45A9D2ULL } }, /* XSUM_XXH128_withSecret_testdata[2226] */ + { 2227, 0x0000000000000000ULL, { 0xC96DC8C5385F67D2ULL, 0xC4B78BDAA45C369EULL } }, /* XSUM_XXH128_withSecret_testdata[2227] */ + { 2228, 0x0000000000000000ULL, { 0xAA1F998B9558EFFCULL, 0x89B6DA694527EDDBULL } }, /* XSUM_XXH128_withSecret_testdata[2228] */ + { 2229, 0x0000000000000000ULL, { 0xD3A161393EC9F87FULL, 0x779C41CCCD58EE4EULL } }, /* XSUM_XXH128_withSecret_testdata[2229] */ + { 2230, 0x0000000000000000ULL, { 0xA0A3A55CF9468C9EULL, 0x149BB33FC75A90BEULL } }, /* XSUM_XXH128_withSecret_testdata[2230] */ + { 2231, 0x0000000000000000ULL, { 0x7C0D4337C9FDD88AULL, 0x199D8E47552658BDULL } }, /* XSUM_XXH128_withSecret_testdata[2231] */ + { 2232, 0x0000000000000000ULL, { 0xB6F588D74008E382ULL, 0x14E17637C95A1708ULL } }, /* XSUM_XXH128_withSecret_testdata[2232] */ + { 2233, 0x0000000000000000ULL, { 0xD6079562C6E6FCB2ULL, 0x65F959CA16E9059AULL } }, /* XSUM_XXH128_withSecret_testdata[2233] */ + { 2234, 0x0000000000000000ULL, { 0x226100ED97CBBDF4ULL, 0x40FA70563B3E4AA7ULL } }, /* XSUM_XXH128_withSecret_testdata[2234] */ + { 2235, 0x0000000000000000ULL, { 0xA4B6FE30750DD2DFULL, 0xD1ABE804E744D64EULL } }, /* XSUM_XXH128_withSecret_testdata[2235] */ + { 2236, 0x0000000000000000ULL, { 0x08B202BF52DDF891ULL, 0xB123094E707D4550ULL } }, /* XSUM_XXH128_withSecret_testdata[2236] */ + { 2237, 0x0000000000000000ULL, { 0xBD6A715D6EC4A2FEULL, 0xB24DF30F63A1259BULL } }, /* XSUM_XXH128_withSecret_testdata[2237] */ + { 2238, 0x0000000000000000ULL, { 0x83AF768E4FC9DCAEULL, 0x95A87BE0F0F88D4BULL } }, /* XSUM_XXH128_withSecret_testdata[2238] */ + { 2239, 0x0000000000000000ULL, { 0xC9A9023234565E91ULL, 0x454DC41FB24788B2ULL } }, /* XSUM_XXH128_withSecret_testdata[2239] */ + { 2240, 0x0000000000000000ULL, { 0xB26C938C7AF3A71FULL, 0x1E89EE710A768055ULL } }, /* XSUM_XXH128_withSecret_testdata[2240] */ + { 2241, 0x0000000000000000ULL, { 0xBC5C9973093ED600ULL, 0xF4915CB6D7CE0BC5ULL } }, /* XSUM_XXH128_withSecret_testdata[2241] */ + { 2242, 0x0000000000000000ULL, { 0xC4A13D1873FFABCEULL, 0x47C8CC1B3BEB95C6ULL } }, /* XSUM_XXH128_withSecret_testdata[2242] */ + { 2243, 0x0000000000000000ULL, { 0x27BDD19F2D168989ULL, 0x28DF4435469A029FULL } }, /* XSUM_XXH128_withSecret_testdata[2243] */ + { 2244, 0x0000000000000000ULL, { 0xC77DEEBE4BF19064ULL, 0x61C3499577AD74B3ULL } }, /* XSUM_XXH128_withSecret_testdata[2244] */ + { 2245, 0x0000000000000000ULL, { 0x7EC103ADD9B43ADDULL, 0x813E86D9BF9B6572ULL } }, /* XSUM_XXH128_withSecret_testdata[2245] */ + { 2246, 0x0000000000000000ULL, { 0xEF03C35D9751C6F4ULL, 0x4F27C79828D29D3AULL } }, /* XSUM_XXH128_withSecret_testdata[2246] */ + { 2247, 0x0000000000000000ULL, { 0x804531532668391EULL, 0x17C3E56AC9C51FDBULL } }, /* XSUM_XXH128_withSecret_testdata[2247] */ + { 2248, 0x0000000000000000ULL, { 0x5CBDBD17A3538DF8ULL, 0xCAFAD8093DE5773BULL } }, /* XSUM_XXH128_withSecret_testdata[2248] */ + { 2249, 0x0000000000000000ULL, { 0x72C149715AD0517BULL, 0xBF75EDCC6F11D41FULL } }, /* XSUM_XXH128_withSecret_testdata[2249] */ + { 2250, 0x0000000000000000ULL, { 0xF3E97C36038D1D60ULL, 0xBBA5CD765B4A69C8ULL } }, /* XSUM_XXH128_withSecret_testdata[2250] */ + { 2251, 0x0000000000000000ULL, { 0x5145D630BC5A53BFULL, 0xB45520F8478125A9ULL } }, /* XSUM_XXH128_withSecret_testdata[2251] */ + { 2252, 0x0000000000000000ULL, { 0x59BA7CA921C1230DULL, 0x20462CD1480E0A23ULL } }, /* XSUM_XXH128_withSecret_testdata[2252] */ + { 2253, 0x0000000000000000ULL, { 0xC70763A3879EE91EULL, 0x21DCA07AEFBEC673ULL } }, /* XSUM_XXH128_withSecret_testdata[2253] */ + { 2254, 0x0000000000000000ULL, { 0x8199110ED9BBA114ULL, 0x851E84997498C611ULL } }, /* XSUM_XXH128_withSecret_testdata[2254] */ + { 2255, 0x0000000000000000ULL, { 0x2354D7FE431DAE7AULL, 0x25602F19E5CC2AE6ULL } }, /* XSUM_XXH128_withSecret_testdata[2255] */ + { 2256, 0x0000000000000000ULL, { 0x09CD399A744FB965ULL, 0x6EA9B00C560857CAULL } }, /* XSUM_XXH128_withSecret_testdata[2256] */ + { 2257, 0x0000000000000000ULL, { 0x55D9C79A8AA3DA7BULL, 0x38CDD608C14F1253ULL } }, /* XSUM_XXH128_withSecret_testdata[2257] */ + { 2258, 0x0000000000000000ULL, { 0xFA30DE23B3836096ULL, 0x17E8EC7E90C2F654ULL } }, /* XSUM_XXH128_withSecret_testdata[2258] */ + { 2259, 0x0000000000000000ULL, { 0x713D5DB68DB30414ULL, 0x3C6A7393F4CA2587ULL } }, /* XSUM_XXH128_withSecret_testdata[2259] */ + { 2260, 0x0000000000000000ULL, { 0x4193437A072082D0ULL, 0x4CC721376A09BE86ULL } }, /* XSUM_XXH128_withSecret_testdata[2260] */ + { 2261, 0x0000000000000000ULL, { 0xC1BC64C4C4C9619CULL, 0x74F09284417F7829ULL } }, /* XSUM_XXH128_withSecret_testdata[2261] */ + { 2262, 0x0000000000000000ULL, { 0xAEE890BF51352B13ULL, 0x54E3A6D6C2292EB1ULL } }, /* XSUM_XXH128_withSecret_testdata[2262] */ + { 2263, 0x0000000000000000ULL, { 0x6723CC64A6E66603ULL, 0x93693F0D34AC0D9AULL } }, /* XSUM_XXH128_withSecret_testdata[2263] */ + { 2264, 0x0000000000000000ULL, { 0xAE56CAEA5D1B01C7ULL, 0x0C0788E72748CE03ULL } }, /* XSUM_XXH128_withSecret_testdata[2264] */ + { 2265, 0x0000000000000000ULL, { 0x6342032FC46E6EECULL, 0x0C4EC91CC85F6663ULL } }, /* XSUM_XXH128_withSecret_testdata[2265] */ + { 2266, 0x0000000000000000ULL, { 0x85C23DB28F6047E2ULL, 0xF91B02EB9C11ECC5ULL } }, /* XSUM_XXH128_withSecret_testdata[2266] */ + { 2267, 0x0000000000000000ULL, { 0x4FCD32B63E1A64DAULL, 0xC3268FF1900C60C4ULL } }, /* XSUM_XXH128_withSecret_testdata[2267] */ + { 2268, 0x0000000000000000ULL, { 0xE8C4F61E1DC023B4ULL, 0x9F4F1B893A31B4AEULL } }, /* XSUM_XXH128_withSecret_testdata[2268] */ + { 2269, 0x0000000000000000ULL, { 0x4471974B48134F1FULL, 0x8523355D37C4BC30ULL } }, /* XSUM_XXH128_withSecret_testdata[2269] */ + { 2270, 0x0000000000000000ULL, { 0x4B574C457CC748ACULL, 0x582EFC476E0B0A1BULL } }, /* XSUM_XXH128_withSecret_testdata[2270] */ + { 2271, 0x0000000000000000ULL, { 0x8B961ABE89821A5BULL, 0x503615666A51535DULL } }, /* XSUM_XXH128_withSecret_testdata[2271] */ + { 2272, 0x0000000000000000ULL, { 0xB4F162F7476B02F8ULL, 0x6C4ECA999A3B4A3FULL } }, /* XSUM_XXH128_withSecret_testdata[2272] */ + { 2273, 0x0000000000000000ULL, { 0xA8596A044226B4B5ULL, 0x595DA7D413285DBEULL } }, /* XSUM_XXH128_withSecret_testdata[2273] */ + { 2274, 0x0000000000000000ULL, { 0xB46AE2C707E652EDULL, 0x1077F2F9A43E0118ULL } }, /* XSUM_XXH128_withSecret_testdata[2274] */ + { 2275, 0x0000000000000000ULL, { 0x8998E0503123BD36ULL, 0x553CC80BDA7C29DEULL } }, /* XSUM_XXH128_withSecret_testdata[2275] */ + { 2276, 0x0000000000000000ULL, { 0x6920D7B185CFA861ULL, 0x3F9F8D6132D774A4ULL } }, /* XSUM_XXH128_withSecret_testdata[2276] */ + { 2277, 0x0000000000000000ULL, { 0xD5382417A6B1CC5AULL, 0xE1CC6BD176CA9F53ULL } }, /* XSUM_XXH128_withSecret_testdata[2277] */ + { 2278, 0x0000000000000000ULL, { 0x1FC5895FF42CFCFFULL, 0xD89425098076597AULL } }, /* XSUM_XXH128_withSecret_testdata[2278] */ + { 2279, 0x0000000000000000ULL, { 0xE3383CF25DFB4830ULL, 0x924022136EDE2F20ULL } }, /* XSUM_XXH128_withSecret_testdata[2279] */ + { 2280, 0x0000000000000000ULL, { 0x1D7738B4E24E553BULL, 0xA9AB301255AC28FBULL } }, /* XSUM_XXH128_withSecret_testdata[2280] */ + { 2281, 0x0000000000000000ULL, { 0x13240DE7D612861EULL, 0x8DDF1EFB030478C9ULL } }, /* XSUM_XXH128_withSecret_testdata[2281] */ + { 2282, 0x0000000000000000ULL, { 0xFF572AB52662D912ULL, 0xF8E7F40950026E0AULL } }, /* XSUM_XXH128_withSecret_testdata[2282] */ + { 2283, 0x0000000000000000ULL, { 0xB7C29C229F6BE899ULL, 0x3E5E744C8CA16560ULL } }, /* XSUM_XXH128_withSecret_testdata[2283] */ + { 2284, 0x0000000000000000ULL, { 0x0BBB745326479CDBULL, 0xDA729FD4AEC53EB1ULL } }, /* XSUM_XXH128_withSecret_testdata[2284] */ + { 2285, 0x0000000000000000ULL, { 0x947D7531189C1D65ULL, 0xD38E7FF05A6CF012ULL } }, /* XSUM_XXH128_withSecret_testdata[2285] */ + { 2286, 0x0000000000000000ULL, { 0x9ABD6EF3250F1494ULL, 0xB783F24EBE8A75CDULL } }, /* XSUM_XXH128_withSecret_testdata[2286] */ + { 2287, 0x0000000000000000ULL, { 0xCC3115D4324406D1ULL, 0x68A8AB20BF999F3FULL } }, /* XSUM_XXH128_withSecret_testdata[2287] */ + { 2288, 0x0000000000000000ULL, { 0xD818495BF495BBB8ULL, 0xF871022EB0CFBB1AULL } }, /* XSUM_XXH128_withSecret_testdata[2288] */ + { 2289, 0x0000000000000000ULL, { 0xE3F0E0CBDAA66C3DULL, 0xF88F600F9779E69EULL } }, /* XSUM_XXH128_withSecret_testdata[2289] */ + { 2290, 0x0000000000000000ULL, { 0x93CFDB535AAEF8A6ULL, 0xF6E2E4B44CF09B56ULL } }, /* XSUM_XXH128_withSecret_testdata[2290] */ + { 2291, 0x0000000000000000ULL, { 0xE824856FC547AED2ULL, 0x6F1BF5A24879E640ULL } }, /* XSUM_XXH128_withSecret_testdata[2291] */ + { 2292, 0x0000000000000000ULL, { 0x1F24C86993C3DA02ULL, 0xB9AD7DE77CCA02F8ULL } }, /* XSUM_XXH128_withSecret_testdata[2292] */ + { 2293, 0x0000000000000000ULL, { 0xD101BD8752C5CA57ULL, 0xAF0AE09ADFCF1886ULL } }, /* XSUM_XXH128_withSecret_testdata[2293] */ + { 2294, 0x0000000000000000ULL, { 0xE0F688D96576672CULL, 0x12EA9AF537ACF5F6ULL } }, /* XSUM_XXH128_withSecret_testdata[2294] */ + { 2295, 0x0000000000000000ULL, { 0xB0BE8DAE214360EDULL, 0x8A4067D5EDB2DB41ULL } }, /* XSUM_XXH128_withSecret_testdata[2295] */ + { 2296, 0x0000000000000000ULL, { 0xED767DDFE4DD76FBULL, 0x919D589E75F23637ULL } }, /* XSUM_XXH128_withSecret_testdata[2296] */ + { 2297, 0x0000000000000000ULL, { 0x1416BB25000457C6ULL, 0xC3A04FC57FF0EED0ULL } }, /* XSUM_XXH128_withSecret_testdata[2297] */ + { 2298, 0x0000000000000000ULL, { 0x8D3763863C621A67ULL, 0x41A3D6719DDAACBEULL } }, /* XSUM_XXH128_withSecret_testdata[2298] */ + { 2299, 0x0000000000000000ULL, { 0xBA806D61C6F26C17ULL, 0x281487C1FAA88A22ULL } }, /* XSUM_XXH128_withSecret_testdata[2299] */ + { 2300, 0x0000000000000000ULL, { 0x078884BAD7E55EECULL, 0xFA8B5AFFC175441AULL } }, /* XSUM_XXH128_withSecret_testdata[2300] */ + { 2301, 0x0000000000000000ULL, { 0xF20409B35741CA4EULL, 0x1AF9D70C3A87567CULL } }, /* XSUM_XXH128_withSecret_testdata[2301] */ + { 2302, 0x0000000000000000ULL, { 0xDD6DE3189F1F5F24ULL, 0xA0E9CF47FD6EE3FCULL } }, /* XSUM_XXH128_withSecret_testdata[2302] */ + { 2303, 0x0000000000000000ULL, { 0xD84AE042F62F6A58ULL, 0xE3674DBFEF3F8D79ULL } }, /* XSUM_XXH128_withSecret_testdata[2303] */ + { 2304, 0x0000000000000000ULL, { 0x1EA95AF94ECBAF21ULL, 0x4256122EE146F458ULL } }, /* XSUM_XXH128_withSecret_testdata[2304] */ + { 2305, 0x0000000000000000ULL, { 0x32D8780451319123ULL, 0x03575ABD607C4EA0ULL } }, /* XSUM_XXH128_withSecret_testdata[2305] */ + { 2306, 0x0000000000000000ULL, { 0xA67F9361F98F5946ULL, 0x418DB9DB671C9B74ULL } }, /* XSUM_XXH128_withSecret_testdata[2306] */ + { 2307, 0x0000000000000000ULL, { 0x4D14CC2887932B7BULL, 0xDC64E5B55801DF25ULL } }, /* XSUM_XXH128_withSecret_testdata[2307] */ + { 2308, 0x0000000000000000ULL, { 0xB6E4E4BD5025430FULL, 0x1385B3BB2A65518DULL } }, /* XSUM_XXH128_withSecret_testdata[2308] */ + { 2309, 0x0000000000000000ULL, { 0xB2DE0721E6E6D689ULL, 0xAB07E30C5F0F00C4ULL } }, /* XSUM_XXH128_withSecret_testdata[2309] */ + { 2310, 0x0000000000000000ULL, { 0x2816A89C31EF1425ULL, 0x2410A5B6D8FC0F6CULL } }, /* XSUM_XXH128_withSecret_testdata[2310] */ + { 2311, 0x0000000000000000ULL, { 0xC97BF984197E16AAULL, 0x2F9DEC357EBCFDC8ULL } }, /* XSUM_XXH128_withSecret_testdata[2311] */ + { 2312, 0x0000000000000000ULL, { 0x7A2F77A7BD35086DULL, 0x31C56C5783E3A755ULL } }, /* XSUM_XXH128_withSecret_testdata[2312] */ + { 2313, 0x0000000000000000ULL, { 0xC7FC1669D8D4501EULL, 0xCDE1A7C49E0023DAULL } }, /* XSUM_XXH128_withSecret_testdata[2313] */ + { 2314, 0x0000000000000000ULL, { 0xBA1B459E031C39DDULL, 0x6CC0FD4FDB49B801ULL } }, /* XSUM_XXH128_withSecret_testdata[2314] */ + { 2315, 0x0000000000000000ULL, { 0x10A540C71BE0860FULL, 0x92BF10A8B6323C5FULL } }, /* XSUM_XXH128_withSecret_testdata[2315] */ + { 2316, 0x0000000000000000ULL, { 0xF4B0C0B556056656ULL, 0xD3ECDE090665A495ULL } }, /* XSUM_XXH128_withSecret_testdata[2316] */ + { 2317, 0x0000000000000000ULL, { 0x7034B160B689BD8DULL, 0x8814EF82910BBF0EULL } }, /* XSUM_XXH128_withSecret_testdata[2317] */ + { 2318, 0x0000000000000000ULL, { 0x72ED1F0D11CA236EULL, 0x15EC7D263CC9D2BFULL } }, /* XSUM_XXH128_withSecret_testdata[2318] */ + { 2319, 0x0000000000000000ULL, { 0x91A5EDED19E6B21DULL, 0xB6F751DD0FF18E5AULL } }, /* XSUM_XXH128_withSecret_testdata[2319] */ + { 2320, 0x0000000000000000ULL, { 0x9D1DD02EBF7D1EACULL, 0xC932B5E428120D2AULL } }, /* XSUM_XXH128_withSecret_testdata[2320] */ + { 2321, 0x0000000000000000ULL, { 0x4A96D43422E9788CULL, 0x9B5E9DD270F30796ULL } }, /* XSUM_XXH128_withSecret_testdata[2321] */ + { 2322, 0x0000000000000000ULL, { 0x28A8AE128E2400E9ULL, 0x54668BE2FD949A8DULL } }, /* XSUM_XXH128_withSecret_testdata[2322] */ + { 2323, 0x0000000000000000ULL, { 0x7A8ADC44D0CE36A3ULL, 0x7523FB581E061E97ULL } }, /* XSUM_XXH128_withSecret_testdata[2323] */ + { 2324, 0x0000000000000000ULL, { 0xA22FE5073B324209ULL, 0x6B9E87E9F2A41B72ULL } }, /* XSUM_XXH128_withSecret_testdata[2324] */ + { 2325, 0x0000000000000000ULL, { 0x63EBA538567ABC9BULL, 0x53FED55CA165728DULL } }, /* XSUM_XXH128_withSecret_testdata[2325] */ + { 2326, 0x0000000000000000ULL, { 0xC5339DEFE5025E17ULL, 0x1782573740DBF22BULL } }, /* XSUM_XXH128_withSecret_testdata[2326] */ + { 2327, 0x0000000000000000ULL, { 0x3E4BD70D3109D5BDULL, 0xA7F654796E01E225ULL } }, /* XSUM_XXH128_withSecret_testdata[2327] */ + { 2328, 0x0000000000000000ULL, { 0xE77E5092D3C9423DULL, 0x8E3436B48ECB4CE8ULL } }, /* XSUM_XXH128_withSecret_testdata[2328] */ + { 2329, 0x0000000000000000ULL, { 0xAE061850019DBE99ULL, 0x39DF39B76DE7EA32ULL } }, /* XSUM_XXH128_withSecret_testdata[2329] */ + { 2330, 0x0000000000000000ULL, { 0xE1F39AB61B422293ULL, 0x18182C7750A74F43ULL } }, /* XSUM_XXH128_withSecret_testdata[2330] */ + { 2331, 0x0000000000000000ULL, { 0x62DB49AFC1C4F8FDULL, 0xFC4B65509B9DE57FULL } }, /* XSUM_XXH128_withSecret_testdata[2331] */ + { 2332, 0x0000000000000000ULL, { 0x0E15D12F409EAF30ULL, 0x7E59BC10C3A3EFB2ULL } }, /* XSUM_XXH128_withSecret_testdata[2332] */ + { 2333, 0x0000000000000000ULL, { 0xA6F5062EC3828EF0ULL, 0xE0B5A55E9C4DFA1AULL } }, /* XSUM_XXH128_withSecret_testdata[2333] */ + { 2334, 0x0000000000000000ULL, { 0x36B250A63D1C818BULL, 0xBB201565306464D4ULL } }, /* XSUM_XXH128_withSecret_testdata[2334] */ + { 2335, 0x0000000000000000ULL, { 0xDFABE5A2F7961DDFULL, 0x738A0FDDE98CCF84ULL } }, /* XSUM_XXH128_withSecret_testdata[2335] */ + { 2336, 0x0000000000000000ULL, { 0x67A437068B4C2600ULL, 0xC77082BBE41AB40BULL } }, /* XSUM_XXH128_withSecret_testdata[2336] */ + { 2337, 0x0000000000000000ULL, { 0x1BA587D9A6DB72C3ULL, 0xEBBC79866092B2EFULL } }, /* XSUM_XXH128_withSecret_testdata[2337] */ + { 2338, 0x0000000000000000ULL, { 0x538AEE8149587087ULL, 0xCC006DF2CDF04389ULL } }, /* XSUM_XXH128_withSecret_testdata[2338] */ + { 2339, 0x0000000000000000ULL, { 0x3285AAB013567C5FULL, 0xD7F054311F0456B9ULL } }, /* XSUM_XXH128_withSecret_testdata[2339] */ + { 2340, 0x0000000000000000ULL, { 0xC26F3DEE44BF2EA9ULL, 0x05E76CA2F5C1A658ULL } }, /* XSUM_XXH128_withSecret_testdata[2340] */ + { 2341, 0x0000000000000000ULL, { 0x348A7241B6AD28A7ULL, 0xB1A2D535AC53FC73ULL } }, /* XSUM_XXH128_withSecret_testdata[2341] */ + { 2342, 0x0000000000000000ULL, { 0xDDF55A6756E09B30ULL, 0x2C66AE1FFFF68495ULL } }, /* XSUM_XXH128_withSecret_testdata[2342] */ + { 2343, 0x0000000000000000ULL, { 0x3E8B939249709C03ULL, 0x43551B9FD2D6BCA5ULL } }, /* XSUM_XXH128_withSecret_testdata[2343] */ + { 2344, 0x0000000000000000ULL, { 0x91CF4DD9B8F8177EULL, 0x5912131090F9D5AFULL } }, /* XSUM_XXH128_withSecret_testdata[2344] */ + { 2345, 0x0000000000000000ULL, { 0x41ECB4ED9F081942ULL, 0x8DC7E340C4D524FCULL } }, /* XSUM_XXH128_withSecret_testdata[2345] */ + { 2346, 0x0000000000000000ULL, { 0xAEB871BD0869CDE0ULL, 0x45E856C50FA56C3DULL } }, /* XSUM_XXH128_withSecret_testdata[2346] */ + { 2347, 0x0000000000000000ULL, { 0x9038DEA18662CC53ULL, 0xBB3A46082FDB74F2ULL } }, /* XSUM_XXH128_withSecret_testdata[2347] */ + { 2348, 0x0000000000000000ULL, { 0xBDACB85FB4C86F0EULL, 0x82F204234620AA64ULL } }, /* XSUM_XXH128_withSecret_testdata[2348] */ + { 2349, 0x0000000000000000ULL, { 0x105F2CB1E1EC335EULL, 0x3298193BDEFB5FEAULL } }, /* XSUM_XXH128_withSecret_testdata[2349] */ + { 2350, 0x0000000000000000ULL, { 0x090F11A76291D38DULL, 0xC355EDCF8B577116ULL } }, /* XSUM_XXH128_withSecret_testdata[2350] */ + { 2351, 0x0000000000000000ULL, { 0x237DE0A8D44955B6ULL, 0xBADD8A1DE896C377ULL } }, /* XSUM_XXH128_withSecret_testdata[2351] */ + { 2352, 0x0000000000000000ULL, { 0x7E0F9D584CF5208AULL, 0x12017B6F257BB332ULL } }, /* XSUM_XXH128_withSecret_testdata[2352] */ + { 2353, 0x0000000000000000ULL, { 0x7EF09D5885593DB0ULL, 0xAF95949114A0968DULL } }, /* XSUM_XXH128_withSecret_testdata[2353] */ + { 2354, 0x0000000000000000ULL, { 0xD6BE93AAA0B8A89FULL, 0xC0C4A251896D1578ULL } }, /* XSUM_XXH128_withSecret_testdata[2354] */ + { 2355, 0x0000000000000000ULL, { 0x7D15F8309D70544CULL, 0x135DB961BCFC9F66ULL } }, /* XSUM_XXH128_withSecret_testdata[2355] */ + { 2356, 0x0000000000000000ULL, { 0xB5F14F5E7471A2B7ULL, 0x7406D703D1CBA578ULL } }, /* XSUM_XXH128_withSecret_testdata[2356] */ + { 2357, 0x0000000000000000ULL, { 0x334064923E684682ULL, 0xD75CA45BF2401E14ULL } }, /* XSUM_XXH128_withSecret_testdata[2357] */ + { 2358, 0x0000000000000000ULL, { 0xFF30F03C59F38BBDULL, 0xF3985C595DC92C84ULL } }, /* XSUM_XXH128_withSecret_testdata[2358] */ + { 2359, 0x0000000000000000ULL, { 0x3A762E4100546EA4ULL, 0xE9EE38F8E30FD505ULL } }, /* XSUM_XXH128_withSecret_testdata[2359] */ + { 2360, 0x0000000000000000ULL, { 0xD9DDC565C9E9A0E7ULL, 0x13B34D359DC849AAULL } }, /* XSUM_XXH128_withSecret_testdata[2360] */ + { 2361, 0x0000000000000000ULL, { 0x70F36B58887180BBULL, 0x5F00003D6F8E9D18ULL } }, /* XSUM_XXH128_withSecret_testdata[2361] */ + { 2362, 0x0000000000000000ULL, { 0x29BF285E3EBA4ED9ULL, 0x8BC2B7790B03C915ULL } }, /* XSUM_XXH128_withSecret_testdata[2362] */ + { 2363, 0x0000000000000000ULL, { 0x14FC2BC449A6ECF0ULL, 0x56DD35A724A3DE0BULL } }, /* XSUM_XXH128_withSecret_testdata[2363] */ + { 2364, 0x0000000000000000ULL, { 0xFE96956AB41CD859ULL, 0xB30446E4EA9D1BD5ULL } }, /* XSUM_XXH128_withSecret_testdata[2364] */ + { 2365, 0x0000000000000000ULL, { 0xBB96D17D6E83D9C9ULL, 0xDB88C1CE60995BE0ULL } }, /* XSUM_XXH128_withSecret_testdata[2365] */ + { 2366, 0x0000000000000000ULL, { 0x6B4B68C062B0298AULL, 0x0E2484D843648E73ULL } }, /* XSUM_XXH128_withSecret_testdata[2366] */ + { 2367, 0x0000000000000000ULL, { 0x293FA8E5173BB5E7ULL, 0x343654A35ACF0DAEULL } }, /* XSUM_XXH128_withSecret_testdata[2367] */ + { 2368, 0x0000000000000000ULL, { 0x1B882F5651079927ULL, 0x7BA2FE90989DDABCULL } }, /* XSUM_XXH128_withSecret_testdata[2368] */ + { 2369, 0x0000000000000000ULL, { 0x6A188C171457CE57ULL, 0x371DCB3CB026773FULL } }, /* XSUM_XXH128_withSecret_testdata[2369] */ + { 2370, 0x0000000000000000ULL, { 0xD3F44413B4D09324ULL, 0x6B673D7788DC85A0ULL } }, /* XSUM_XXH128_withSecret_testdata[2370] */ + { 2371, 0x0000000000000000ULL, { 0x6C6CD3EA872E5A8CULL, 0x5102D4A2022755CFULL } }, /* XSUM_XXH128_withSecret_testdata[2371] */ + { 2372, 0x0000000000000000ULL, { 0x79DFB0C0A6B634E0ULL, 0xC636F9DD98721D87ULL } }, /* XSUM_XXH128_withSecret_testdata[2372] */ + { 2373, 0x0000000000000000ULL, { 0xD1241D21D50CA4BAULL, 0x3CB78D0E723B9AEFULL } }, /* XSUM_XXH128_withSecret_testdata[2373] */ + { 2374, 0x0000000000000000ULL, { 0xF56B4D8A22A9B86FULL, 0xE6BA4CF37C72C072ULL } }, /* XSUM_XXH128_withSecret_testdata[2374] */ + { 2375, 0x0000000000000000ULL, { 0x87B5E3A9CD6C1B65ULL, 0xC93A8BAB43D10CABULL } }, /* XSUM_XXH128_withSecret_testdata[2375] */ + { 2376, 0x0000000000000000ULL, { 0xFFC47ACC372230BFULL, 0xB917697339EE5A60ULL } }, /* XSUM_XXH128_withSecret_testdata[2376] */ + { 2377, 0x0000000000000000ULL, { 0x5BED7B696B6C12F1ULL, 0x8FE48DEC509DCC24ULL } }, /* XSUM_XXH128_withSecret_testdata[2377] */ + { 2378, 0x0000000000000000ULL, { 0x18CE009FEDEE2156ULL, 0xADA28535EC0AB0CBULL } }, /* XSUM_XXH128_withSecret_testdata[2378] */ + { 2379, 0x0000000000000000ULL, { 0xBDF6F810379417BAULL, 0xAA79D983BB9AADE6ULL } }, /* XSUM_XXH128_withSecret_testdata[2379] */ + { 2380, 0x0000000000000000ULL, { 0xC7F1AF342CE168D0ULL, 0x45D794CD35F88376ULL } }, /* XSUM_XXH128_withSecret_testdata[2380] */ + { 2381, 0x0000000000000000ULL, { 0x0AAF181DD47DBB5DULL, 0x1B93EAE04F3D0A1BULL } }, /* XSUM_XXH128_withSecret_testdata[2381] */ + { 2382, 0x0000000000000000ULL, { 0x1CF5DCB8CDB85907ULL, 0x0B9429EAC879B151ULL } }, /* XSUM_XXH128_withSecret_testdata[2382] */ + { 2383, 0x0000000000000000ULL, { 0x9E0F5C5CED32BE4FULL, 0x82721AD9E8950F22ULL } }, /* XSUM_XXH128_withSecret_testdata[2383] */ + { 2384, 0x0000000000000000ULL, { 0x522A7BA369A1B06AULL, 0xB2258C5F05501AECULL } }, /* XSUM_XXH128_withSecret_testdata[2384] */ + { 2385, 0x0000000000000000ULL, { 0xEA13FB7B2DB0E8F7ULL, 0xE3AFC1C37F814A9CULL } }, /* XSUM_XXH128_withSecret_testdata[2385] */ + { 2386, 0x0000000000000000ULL, { 0x111C82EFEF4AC81CULL, 0xC98EE1D016376073ULL } }, /* XSUM_XXH128_withSecret_testdata[2386] */ + { 2387, 0x0000000000000000ULL, { 0xD42417E6AB91AA73ULL, 0x8169425BBD63308EULL } }, /* XSUM_XXH128_withSecret_testdata[2387] */ + { 2388, 0x0000000000000000ULL, { 0xA5ED1CAE4267B139ULL, 0xDB284F35A03776F1ULL } }, /* XSUM_XXH128_withSecret_testdata[2388] */ + { 2389, 0x0000000000000000ULL, { 0x8B8F7C5BE746D545ULL, 0x97292A42EFEE64F8ULL } }, /* XSUM_XXH128_withSecret_testdata[2389] */ + { 2390, 0x0000000000000000ULL, { 0xF1B79500277FA08CULL, 0x90B7401652321609ULL } }, /* XSUM_XXH128_withSecret_testdata[2390] */ + { 2391, 0x0000000000000000ULL, { 0xAD9BD3DB0300687AULL, 0x135F74626A38DAE7ULL } }, /* XSUM_XXH128_withSecret_testdata[2391] */ + { 2392, 0x0000000000000000ULL, { 0x33D69ACF9C4FE222ULL, 0x152422CFAF9980B9ULL } }, /* XSUM_XXH128_withSecret_testdata[2392] */ + { 2393, 0x0000000000000000ULL, { 0x98A88A43B3E3CDBEULL, 0xF4FFBE17C97823D4ULL } }, /* XSUM_XXH128_withSecret_testdata[2393] */ + { 2394, 0x0000000000000000ULL, { 0x30A45D82B0F02EB7ULL, 0x2E8A40F3D2E473EEULL } }, /* XSUM_XXH128_withSecret_testdata[2394] */ + { 2395, 0x0000000000000000ULL, { 0x580A108EAD043AC9ULL, 0xD5AAC9F49160D6E7ULL } }, /* XSUM_XXH128_withSecret_testdata[2395] */ + { 2396, 0x0000000000000000ULL, { 0x7429D8E3A53EE029ULL, 0x7D25203B8791DCE6ULL } }, /* XSUM_XXH128_withSecret_testdata[2396] */ + { 2397, 0x0000000000000000ULL, { 0xEA9930AE2B2F60FBULL, 0xEDFD7F09185BF1E7ULL } }, /* XSUM_XXH128_withSecret_testdata[2397] */ + { 2398, 0x0000000000000000ULL, { 0x0DA3DC8BCB20D64EULL, 0x41B3275EC3E53038ULL } }, /* XSUM_XXH128_withSecret_testdata[2398] */ + { 2399, 0x0000000000000000ULL, { 0x0C75205DB3508B7AULL, 0x35FB3DC6EC3B1A27ULL } }, /* XSUM_XXH128_withSecret_testdata[2399] */ + { 2400, 0x0000000000000000ULL, { 0x80D24D897A728551ULL, 0xE4BC1C367C898452ULL } }, /* XSUM_XXH128_withSecret_testdata[2400] */ + { 2401, 0x0000000000000000ULL, { 0xFE30EFE50F946152ULL, 0xF7A1D92FD82175BAULL } }, /* XSUM_XXH128_withSecret_testdata[2401] */ + { 2402, 0x0000000000000000ULL, { 0x85E4BE18299D1285ULL, 0x425AED83DABB85E2ULL } }, /* XSUM_XXH128_withSecret_testdata[2402] */ + { 2403, 0x0000000000000000ULL, { 0xB2D074B0382F056EULL, 0x414A5C3E83C615ECULL } }, /* XSUM_XXH128_withSecret_testdata[2403] */ + { 2404, 0x0000000000000000ULL, { 0xA21EE5579EB5A4C9ULL, 0xCA6CD4770796BAF6ULL } }, /* XSUM_XXH128_withSecret_testdata[2404] */ + { 2405, 0x0000000000000000ULL, { 0xE790C026712CB55AULL, 0xE3AC7E1D879D05F8ULL } }, /* XSUM_XXH128_withSecret_testdata[2405] */ + { 2406, 0x0000000000000000ULL, { 0x0F45A0AE8363254CULL, 0x6C9AAB01AA46CBA1ULL } }, /* XSUM_XXH128_withSecret_testdata[2406] */ + { 2407, 0x0000000000000000ULL, { 0xB3DA237C9CACA60EULL, 0xA3496CADDF260069ULL } }, /* XSUM_XXH128_withSecret_testdata[2407] */ + { 2408, 0x0000000000000000ULL, { 0x70E33D72FA0DA509ULL, 0x88E130A475439868ULL } }, /* XSUM_XXH128_withSecret_testdata[2408] */ + { 2409, 0x0000000000000000ULL, { 0x05EE5A65D7D947AFULL, 0x9D85170F7C382716ULL } }, /* XSUM_XXH128_withSecret_testdata[2409] */ + { 2410, 0x0000000000000000ULL, { 0x4ECC270183F5940EULL, 0xB492E1D2437499A2ULL } }, /* XSUM_XXH128_withSecret_testdata[2410] */ + { 2411, 0x0000000000000000ULL, { 0x98CDFECB890A7AFFULL, 0x530B8FD82ABB37D2ULL } }, /* XSUM_XXH128_withSecret_testdata[2411] */ + { 2412, 0x0000000000000000ULL, { 0x895CA875DFC9CE10ULL, 0x8D827763C9DC3CCBULL } }, /* XSUM_XXH128_withSecret_testdata[2412] */ + { 2413, 0x0000000000000000ULL, { 0xC6F78CB061FF6482ULL, 0xB5E25BCCD978C8ECULL } }, /* XSUM_XXH128_withSecret_testdata[2413] */ + { 2414, 0x0000000000000000ULL, { 0x8B1D3731F960D49CULL, 0xB49FAF269EF8534AULL } }, /* XSUM_XXH128_withSecret_testdata[2414] */ + { 2415, 0x0000000000000000ULL, { 0x7F0729071F504C31ULL, 0x6185708DD211F275ULL } }, /* XSUM_XXH128_withSecret_testdata[2415] */ + { 2416, 0x0000000000000000ULL, { 0xC6A780A664181A68ULL, 0x086AC670AF51B323ULL } }, /* XSUM_XXH128_withSecret_testdata[2416] */ + { 2417, 0x0000000000000000ULL, { 0xE7715AD23570691DULL, 0x8EDE08EE02876661ULL } }, /* XSUM_XXH128_withSecret_testdata[2417] */ + { 2418, 0x0000000000000000ULL, { 0xBDCCF3236454FC8BULL, 0xC4EDC4036C0DB91AULL } }, /* XSUM_XXH128_withSecret_testdata[2418] */ + { 2419, 0x0000000000000000ULL, { 0x0932E0E9EDB1CD68ULL, 0xD383BE6C216D02B6ULL } }, /* XSUM_XXH128_withSecret_testdata[2419] */ + { 2420, 0x0000000000000000ULL, { 0x433EE97B5C9631A8ULL, 0x5529343930A5B428ULL } }, /* XSUM_XXH128_withSecret_testdata[2420] */ + { 2421, 0x0000000000000000ULL, { 0xB6889338EC2C18E0ULL, 0x0B44646B18737036ULL } }, /* XSUM_XXH128_withSecret_testdata[2421] */ + { 2422, 0x0000000000000000ULL, { 0x8696A03271D1ECE7ULL, 0xF517367057D8F592ULL } }, /* XSUM_XXH128_withSecret_testdata[2422] */ + { 2423, 0x0000000000000000ULL, { 0xCEB3924AB5A6725FULL, 0xD42690D5C90C6497ULL } }, /* XSUM_XXH128_withSecret_testdata[2423] */ + { 2424, 0x0000000000000000ULL, { 0x20C9F0CD77CA41BCULL, 0xF33A063481440709ULL } }, /* XSUM_XXH128_withSecret_testdata[2424] */ + { 2425, 0x0000000000000000ULL, { 0xC2505C37116B8B22ULL, 0x4669BE2846624139ULL } }, /* XSUM_XXH128_withSecret_testdata[2425] */ + { 2426, 0x0000000000000000ULL, { 0x70FD393B1C645A72ULL, 0x972854DF48492B37ULL } }, /* XSUM_XXH128_withSecret_testdata[2426] */ + { 2427, 0x0000000000000000ULL, { 0x07FFF1FA5AC85111ULL, 0xEDEF0D969D8FA2D5ULL } }, /* XSUM_XXH128_withSecret_testdata[2427] */ + { 2428, 0x0000000000000000ULL, { 0x8DEF2B5E61346C3CULL, 0xE18FE6227D5111CBULL } }, /* XSUM_XXH128_withSecret_testdata[2428] */ + { 2429, 0x0000000000000000ULL, { 0xD29906E134ECCBDEULL, 0x99866345E2A0915CULL } }, /* XSUM_XXH128_withSecret_testdata[2429] */ + { 2430, 0x0000000000000000ULL, { 0x9BFC0064C0007990ULL, 0x5A074649295A7DF2ULL } }, /* XSUM_XXH128_withSecret_testdata[2430] */ + { 2431, 0x0000000000000000ULL, { 0x4274443E4156CA77ULL, 0x2A03D35413DC1EAEULL } }, /* XSUM_XXH128_withSecret_testdata[2431] */ + { 2432, 0x0000000000000000ULL, { 0x0D4D78D4EDF1FCB6ULL, 0x34A14D898E8ED17FULL } }, /* XSUM_XXH128_withSecret_testdata[2432] */ + { 2433, 0x0000000000000000ULL, { 0x2D55D642B7700A7CULL, 0x9B3B46B4B73212EDULL } }, /* XSUM_XXH128_withSecret_testdata[2433] */ + { 2434, 0x0000000000000000ULL, { 0x24E462804F657DF5ULL, 0x6ED3764B1E4AA65CULL } }, /* XSUM_XXH128_withSecret_testdata[2434] */ + { 2435, 0x0000000000000000ULL, { 0x5D28B70B8FA63D27ULL, 0x26AF9E36EA5A6154ULL } }, /* XSUM_XXH128_withSecret_testdata[2435] */ + { 2436, 0x0000000000000000ULL, { 0x44F818945C47786DULL, 0xF633344EA4B5510DULL } }, /* XSUM_XXH128_withSecret_testdata[2436] */ + { 2437, 0x0000000000000000ULL, { 0x281105C6C8092779ULL, 0x03A5D5DEFF761FA7ULL } }, /* XSUM_XXH128_withSecret_testdata[2437] */ + { 2438, 0x0000000000000000ULL, { 0x869008B4D0AF7346ULL, 0x1389B1F113EACEF0ULL } }, /* XSUM_XXH128_withSecret_testdata[2438] */ + { 2439, 0x0000000000000000ULL, { 0x3120496A0616B651ULL, 0x676859BEDD65889DULL } }, /* XSUM_XXH128_withSecret_testdata[2439] */ + { 2440, 0x0000000000000000ULL, { 0xD4DB81F310CEC01CULL, 0xA0B63E63C83C993DULL } }, /* XSUM_XXH128_withSecret_testdata[2440] */ + { 2441, 0x0000000000000000ULL, { 0x57362AF4E0DDF68AULL, 0xFF93E68064B57E99ULL } }, /* XSUM_XXH128_withSecret_testdata[2441] */ + { 2442, 0x0000000000000000ULL, { 0x95C96818627768E6ULL, 0x09824DDBB291C809ULL } }, /* XSUM_XXH128_withSecret_testdata[2442] */ + { 2443, 0x0000000000000000ULL, { 0x2788FF564FEC3E57ULL, 0xD42F9C4F376E4C51ULL } }, /* XSUM_XXH128_withSecret_testdata[2443] */ + { 2444, 0x0000000000000000ULL, { 0x9C15B563D3265543ULL, 0x13074B68E7E24288ULL } }, /* XSUM_XXH128_withSecret_testdata[2444] */ + { 2445, 0x0000000000000000ULL, { 0xFADBEF090BE12542ULL, 0xC5A5CCF05FFF9836ULL } }, /* XSUM_XXH128_withSecret_testdata[2445] */ + { 2446, 0x0000000000000000ULL, { 0x3256859436D9DDF7ULL, 0x2F281DC7485933E1ULL } }, /* XSUM_XXH128_withSecret_testdata[2446] */ + { 2447, 0x0000000000000000ULL, { 0x8F5F40B4D39240A2ULL, 0xA3530638A6C355C6ULL } }, /* XSUM_XXH128_withSecret_testdata[2447] */ + { 2448, 0x0000000000000000ULL, { 0x0E00107DF805EB9CULL, 0x10489EE112DD0DF3ULL } }, /* XSUM_XXH128_withSecret_testdata[2448] */ + { 2449, 0x0000000000000000ULL, { 0xAAFB5767B351AB41ULL, 0x14271FABFA1FD59AULL } }, /* XSUM_XXH128_withSecret_testdata[2449] */ + { 2450, 0x0000000000000000ULL, { 0x2D9FD1C8B0405917ULL, 0x2DD677E8486D93B3ULL } }, /* XSUM_XXH128_withSecret_testdata[2450] */ + { 2451, 0x0000000000000000ULL, { 0x27308E0DDB72C823ULL, 0xA2F7C8CD0B319268ULL } }, /* XSUM_XXH128_withSecret_testdata[2451] */ + { 2452, 0x0000000000000000ULL, { 0xFB55B59AFFB43916ULL, 0x394893ED89DD64BFULL } }, /* XSUM_XXH128_withSecret_testdata[2452] */ + { 2453, 0x0000000000000000ULL, { 0xC07DFEFCB5B2D5B6ULL, 0xEB34DA8347225739ULL } }, /* XSUM_XXH128_withSecret_testdata[2453] */ + { 2454, 0x0000000000000000ULL, { 0x40879FA760711BAFULL, 0x74908E66627E9312ULL } }, /* XSUM_XXH128_withSecret_testdata[2454] */ + { 2455, 0x0000000000000000ULL, { 0x667ED3F019228B0CULL, 0x7B49259924B4727EULL } }, /* XSUM_XXH128_withSecret_testdata[2455] */ + { 2456, 0x0000000000000000ULL, { 0xEBE6ECAD9764AA3EULL, 0xEA61414B94BEEEF3ULL } }, /* XSUM_XXH128_withSecret_testdata[2456] */ + { 2457, 0x0000000000000000ULL, { 0x1246C8795EFE16D1ULL, 0x2AD36DE1CDAA957CULL } }, /* XSUM_XXH128_withSecret_testdata[2457] */ + { 2458, 0x0000000000000000ULL, { 0x88D31024FB5E683DULL, 0xB9B827558EABA50FULL } }, /* XSUM_XXH128_withSecret_testdata[2458] */ + { 2459, 0x0000000000000000ULL, { 0xD96D0332AE7548C8ULL, 0x30FDD1CF7F15FF51ULL } }, /* XSUM_XXH128_withSecret_testdata[2459] */ + { 2460, 0x0000000000000000ULL, { 0xAA5575DD95A6BA06ULL, 0x0448A5DE4F99246BULL } }, /* XSUM_XXH128_withSecret_testdata[2460] */ + { 2461, 0x0000000000000000ULL, { 0x5682F991E5BC5D8AULL, 0x17A401F54F71FE52ULL } }, /* XSUM_XXH128_withSecret_testdata[2461] */ + { 2462, 0x0000000000000000ULL, { 0xEDFE8BB51A687107ULL, 0x7BAE67AB4D688D61ULL } }, /* XSUM_XXH128_withSecret_testdata[2462] */ + { 2463, 0x0000000000000000ULL, { 0x1B38DBE4F651736FULL, 0xC6FD42BDFA61A652ULL } }, /* XSUM_XXH128_withSecret_testdata[2463] */ + { 2464, 0x0000000000000000ULL, { 0x1CC60A21BC604F8DULL, 0xEB824B873E86078DULL } }, /* XSUM_XXH128_withSecret_testdata[2464] */ + { 2465, 0x0000000000000000ULL, { 0x270053B3B13C42DAULL, 0x92014DE2A64C01ACULL } }, /* XSUM_XXH128_withSecret_testdata[2465] */ + { 2466, 0x0000000000000000ULL, { 0x2180A9FF32236AAFULL, 0xAE198208F0456241ULL } }, /* XSUM_XXH128_withSecret_testdata[2466] */ + { 2467, 0x0000000000000000ULL, { 0x85F2BD99858D5E6DULL, 0x498A866C1437AB5BULL } }, /* XSUM_XXH128_withSecret_testdata[2467] */ + { 2468, 0x0000000000000000ULL, { 0xA168796BF2C8C114ULL, 0x9477DD1A67E0D32BULL } }, /* XSUM_XXH128_withSecret_testdata[2468] */ + { 2469, 0x0000000000000000ULL, { 0xC818D608F9023AE9ULL, 0xBED028AAAAD0F367ULL } }, /* XSUM_XXH128_withSecret_testdata[2469] */ + { 2470, 0x0000000000000000ULL, { 0x89B52704F5E3069FULL, 0xE9ED8D46B438E27FULL } }, /* XSUM_XXH128_withSecret_testdata[2470] */ + { 2471, 0x0000000000000000ULL, { 0x56073CAA4FCABE72ULL, 0x31D5C07B838F268AULL } }, /* XSUM_XXH128_withSecret_testdata[2471] */ + { 2472, 0x0000000000000000ULL, { 0x8E508BBE3198B900ULL, 0x87B8374C37AC181EULL } }, /* XSUM_XXH128_withSecret_testdata[2472] */ + { 2473, 0x0000000000000000ULL, { 0x1677CCEC11C3F063ULL, 0x8527DCF867C2B6ABULL } }, /* XSUM_XXH128_withSecret_testdata[2473] */ + { 2474, 0x0000000000000000ULL, { 0x8D85A95827FBFAD8ULL, 0xE56B6482C60F73D3ULL } }, /* XSUM_XXH128_withSecret_testdata[2474] */ + { 2475, 0x0000000000000000ULL, { 0x7F7633ED9861DF1EULL, 0xEE98B9069EF6759CULL } }, /* XSUM_XXH128_withSecret_testdata[2475] */ + { 2476, 0x0000000000000000ULL, { 0xD348FAF7835D577AULL, 0xA7987C5745CD9156ULL } }, /* XSUM_XXH128_withSecret_testdata[2476] */ + { 2477, 0x0000000000000000ULL, { 0xF908BB63497C2945ULL, 0x3AECAB6F4054D7EBULL } }, /* XSUM_XXH128_withSecret_testdata[2477] */ + { 2478, 0x0000000000000000ULL, { 0x979518A224EB5E87ULL, 0x5026F845EAF79F0CULL } }, /* XSUM_XXH128_withSecret_testdata[2478] */ + { 2479, 0x0000000000000000ULL, { 0x3D203CC868768949ULL, 0x27DDBBAD758F750EULL } }, /* XSUM_XXH128_withSecret_testdata[2479] */ + { 2480, 0x0000000000000000ULL, { 0xF3101E499D73F4C8ULL, 0x37FF0A15656DD1FAULL } }, /* XSUM_XXH128_withSecret_testdata[2480] */ + { 2481, 0x0000000000000000ULL, { 0x102F7AF08F61921CULL, 0xCC4A86920C8759B3ULL } }, /* XSUM_XXH128_withSecret_testdata[2481] */ + { 2482, 0x0000000000000000ULL, { 0x208B7FF8E2D506EAULL, 0x8B8012007A60D350ULL } }, /* XSUM_XXH128_withSecret_testdata[2482] */ + { 2483, 0x0000000000000000ULL, { 0x8D7F78B8EF6276CAULL, 0xD02B2CA197693058ULL } }, /* XSUM_XXH128_withSecret_testdata[2483] */ + { 2484, 0x0000000000000000ULL, { 0xB088A088843D3809ULL, 0x8856A022C998ED2AULL } }, /* XSUM_XXH128_withSecret_testdata[2484] */ + { 2485, 0x0000000000000000ULL, { 0x954FBFC5EC93F9B4ULL, 0x0383FE369C9CE0D4ULL } }, /* XSUM_XXH128_withSecret_testdata[2485] */ + { 2486, 0x0000000000000000ULL, { 0xCF57A7D34AECF59AULL, 0xA91C49214734B70BULL } }, /* XSUM_XXH128_withSecret_testdata[2486] */ + { 2487, 0x0000000000000000ULL, { 0xE2C95460AFE2B595ULL, 0x465D2C99C5236E50ULL } }, /* XSUM_XXH128_withSecret_testdata[2487] */ + { 2488, 0x0000000000000000ULL, { 0xB4CEE088A87489D8ULL, 0x37D851CE8188BFB0ULL } }, /* XSUM_XXH128_withSecret_testdata[2488] */ + { 2489, 0x0000000000000000ULL, { 0x0F0E7C83FB06D9C5ULL, 0xAD6DDC92672BAF3FULL } }, /* XSUM_XXH128_withSecret_testdata[2489] */ + { 2490, 0x0000000000000000ULL, { 0xAF57F16C7833732DULL, 0x647620A2A9093AF1ULL } }, /* XSUM_XXH128_withSecret_testdata[2490] */ + { 2491, 0x0000000000000000ULL, { 0x8B1B9676501880D3ULL, 0x71DC44777A6B5AD0ULL } }, /* XSUM_XXH128_withSecret_testdata[2491] */ + { 2492, 0x0000000000000000ULL, { 0x12FC866CD78CE6DEULL, 0xC78C172D9E4935CCULL } }, /* XSUM_XXH128_withSecret_testdata[2492] */ + { 2493, 0x0000000000000000ULL, { 0x0EE4CDEF24E19E99ULL, 0xD024D4CC59DA684FULL } }, /* XSUM_XXH128_withSecret_testdata[2493] */ + { 2494, 0x0000000000000000ULL, { 0x6807875A1D02F65CULL, 0x5997AA17A35C7297ULL } }, /* XSUM_XXH128_withSecret_testdata[2494] */ + { 2495, 0x0000000000000000ULL, { 0x94A6BA9FD94FA3A6ULL, 0x9B77D6258847442EULL } }, /* XSUM_XXH128_withSecret_testdata[2495] */ + { 2496, 0x0000000000000000ULL, { 0x98C9DEF1F19EC98BULL, 0x473CBEE2A81A556BULL } }, /* XSUM_XXH128_withSecret_testdata[2496] */ + { 2497, 0x0000000000000000ULL, { 0xB0B6920A0649B742ULL, 0xEC935ED3A858D923ULL } }, /* XSUM_XXH128_withSecret_testdata[2497] */ + { 2498, 0x0000000000000000ULL, { 0xC9BECEBB737AB089ULL, 0x6620FFD2F6A45EC9ULL } }, /* XSUM_XXH128_withSecret_testdata[2498] */ + { 2499, 0x0000000000000000ULL, { 0x571F9E81DFA87670ULL, 0x443768E9472C6E69ULL } }, /* XSUM_XXH128_withSecret_testdata[2499] */ + { 2500, 0x0000000000000000ULL, { 0xC30E1D27E4245484ULL, 0x746C3DA6E13464F5ULL } }, /* XSUM_XXH128_withSecret_testdata[2500] */ + { 2501, 0x0000000000000000ULL, { 0xB013E7F8FD67F03FULL, 0x457156C7259BCFEEULL } }, /* XSUM_XXH128_withSecret_testdata[2501] */ + { 2502, 0x0000000000000000ULL, { 0x303BC518E2B05577ULL, 0xB8FFC9963BF24408ULL } }, /* XSUM_XXH128_withSecret_testdata[2502] */ + { 2503, 0x0000000000000000ULL, { 0x150C8479B8B7AC06ULL, 0xED8244A885925734ULL } }, /* XSUM_XXH128_withSecret_testdata[2503] */ + { 2504, 0x0000000000000000ULL, { 0x53E0E976AC861E3AULL, 0xBD44FBEA41C2F3BBULL } }, /* XSUM_XXH128_withSecret_testdata[2504] */ + { 2505, 0x0000000000000000ULL, { 0xF46C5524FDC4D85EULL, 0x3633A66531D9467FULL } }, /* XSUM_XXH128_withSecret_testdata[2505] */ + { 2506, 0x0000000000000000ULL, { 0x3E890C313A5E3202ULL, 0x2A1AAB9A184D7E34ULL } }, /* XSUM_XXH128_withSecret_testdata[2506] */ + { 2507, 0x0000000000000000ULL, { 0x893E6CA9065BEDD2ULL, 0x33065C0479D24F59ULL } }, /* XSUM_XXH128_withSecret_testdata[2507] */ + { 2508, 0x0000000000000000ULL, { 0xD586CAA92858A4BDULL, 0xC120ECC81F72CC7EULL } }, /* XSUM_XXH128_withSecret_testdata[2508] */ + { 2509, 0x0000000000000000ULL, { 0x84B0D3570788F93EULL, 0x06A07DF10045B0B9ULL } }, /* XSUM_XXH128_withSecret_testdata[2509] */ + { 2510, 0x0000000000000000ULL, { 0xD61AFB9478BA478DULL, 0xB38E51C5DC44A645ULL } }, /* XSUM_XXH128_withSecret_testdata[2510] */ + { 2511, 0x0000000000000000ULL, { 0x29607FF29311310EULL, 0xA87DE481782D0AA8ULL } }, /* XSUM_XXH128_withSecret_testdata[2511] */ + { 2512, 0x0000000000000000ULL, { 0x0D808C86F2EF5F22ULL, 0x23904A267E48177BULL } }, /* XSUM_XXH128_withSecret_testdata[2512] */ + { 2513, 0x0000000000000000ULL, { 0xF54FF2663629C10BULL, 0x4DEBE276700A2F5AULL } }, /* XSUM_XXH128_withSecret_testdata[2513] */ + { 2514, 0x0000000000000000ULL, { 0x419D659851931A87ULL, 0x6AF6A9546A2F7886ULL } }, /* XSUM_XXH128_withSecret_testdata[2514] */ + { 2515, 0x0000000000000000ULL, { 0x1BD6867547C59B6DULL, 0x6BE5BA3C5B717E8AULL } }, /* XSUM_XXH128_withSecret_testdata[2515] */ + { 2516, 0x0000000000000000ULL, { 0x6BAAB7CF89ADC0F7ULL, 0xB008B52418D05FBCULL } }, /* XSUM_XXH128_withSecret_testdata[2516] */ + { 2517, 0x0000000000000000ULL, { 0x95EF25B5E3BD9EDFULL, 0x1A3AF10B2BB7D538ULL } }, /* XSUM_XXH128_withSecret_testdata[2517] */ + { 2518, 0x0000000000000000ULL, { 0x86424658110D1E62ULL, 0x369B04B63A6EE7CAULL } }, /* XSUM_XXH128_withSecret_testdata[2518] */ + { 2519, 0x0000000000000000ULL, { 0x6F9843416A88B93EULL, 0x9948249F44011137ULL } }, /* XSUM_XXH128_withSecret_testdata[2519] */ + { 2520, 0x0000000000000000ULL, { 0xC809656F05AD6C8DULL, 0x352C1F52DA8D703DULL } }, /* XSUM_XXH128_withSecret_testdata[2520] */ + { 2521, 0x0000000000000000ULL, { 0xA026416073B3FBABULL, 0x03B2D5268797D606ULL } }, /* XSUM_XXH128_withSecret_testdata[2521] */ + { 2522, 0x0000000000000000ULL, { 0xAFD0D8DD43FCD09FULL, 0x2E0A74345BE2AE6DULL } }, /* XSUM_XXH128_withSecret_testdata[2522] */ + { 2523, 0x0000000000000000ULL, { 0x2760C965119529F0ULL, 0xAAAE970CCB711CD2ULL } }, /* XSUM_XXH128_withSecret_testdata[2523] */ + { 2524, 0x0000000000000000ULL, { 0x83CAC7433219E867ULL, 0xA9B7E76596BB1657ULL } }, /* XSUM_XXH128_withSecret_testdata[2524] */ + { 2525, 0x0000000000000000ULL, { 0x64E93944571E86C8ULL, 0x448D3A89628F1E75ULL } }, /* XSUM_XXH128_withSecret_testdata[2525] */ + { 2526, 0x0000000000000000ULL, { 0x2C19A96954E7A833ULL, 0xD9EAA9A88D773C4DULL } }, /* XSUM_XXH128_withSecret_testdata[2526] */ + { 2527, 0x0000000000000000ULL, { 0x543DFEDA890C39BBULL, 0xD0736B4ACD443E34ULL } }, /* XSUM_XXH128_withSecret_testdata[2527] */ + { 2528, 0x0000000000000000ULL, { 0x5720CBADD0EFDCBEULL, 0xC1C6D766199C31D8ULL } }, /* XSUM_XXH128_withSecret_testdata[2528] */ + { 2529, 0x0000000000000000ULL, { 0x4FD962132FEC0ED2ULL, 0xFFA059B624916D9BULL } }, /* XSUM_XXH128_withSecret_testdata[2529] */ + { 2530, 0x0000000000000000ULL, { 0xCCD4FECCF1E8032EULL, 0xDC8E112BBF4BAC96ULL } }, /* XSUM_XXH128_withSecret_testdata[2530] */ + { 2531, 0x0000000000000000ULL, { 0xB3AE392B45F6A37CULL, 0xF66AB03DF68089C5ULL } }, /* XSUM_XXH128_withSecret_testdata[2531] */ + { 2532, 0x0000000000000000ULL, { 0x3C75320C9AD26401ULL, 0xB87A8FEA3D2882FCULL } }, /* XSUM_XXH128_withSecret_testdata[2532] */ + { 2533, 0x0000000000000000ULL, { 0xDC3F74F3D216386CULL, 0x259166EC1AB8FB7EULL } }, /* XSUM_XXH128_withSecret_testdata[2533] */ + { 2534, 0x0000000000000000ULL, { 0x160EF753CB403670ULL, 0x7C59DA79714B2D27ULL } }, /* XSUM_XXH128_withSecret_testdata[2534] */ + { 2535, 0x0000000000000000ULL, { 0x736C58212031C9F2ULL, 0xBE5D77621C045A45ULL } }, /* XSUM_XXH128_withSecret_testdata[2535] */ + { 2536, 0x0000000000000000ULL, { 0x840DF498666247B0ULL, 0x3F303A5CFF0566A2ULL } }, /* XSUM_XXH128_withSecret_testdata[2536] */ + { 2537, 0x0000000000000000ULL, { 0x974AA66890FC3B30ULL, 0x98394D659E6133D3ULL } }, /* XSUM_XXH128_withSecret_testdata[2537] */ + { 2538, 0x0000000000000000ULL, { 0x04954981FB429374ULL, 0x71347476484573EDULL } }, /* XSUM_XXH128_withSecret_testdata[2538] */ + { 2539, 0x0000000000000000ULL, { 0x4A6304B4C047FF06ULL, 0x3D7E59B9CC949361ULL } }, /* XSUM_XXH128_withSecret_testdata[2539] */ + { 2540, 0x0000000000000000ULL, { 0x2D9D745BCB5101F5ULL, 0xB80FCA6B3C2498A5ULL } }, /* XSUM_XXH128_withSecret_testdata[2540] */ + { 2541, 0x0000000000000000ULL, { 0xC28C2179D0AC9E6BULL, 0xCE1DB8CAAEA40F0FULL } }, /* XSUM_XXH128_withSecret_testdata[2541] */ + { 2542, 0x0000000000000000ULL, { 0x7B33FE2A667B40D9ULL, 0x3FDCCCE0D280FB35ULL } }, /* XSUM_XXH128_withSecret_testdata[2542] */ + { 2543, 0x0000000000000000ULL, { 0x018DD8A27F419088ULL, 0x639397B21AD88A78ULL } }, /* XSUM_XXH128_withSecret_testdata[2543] */ + { 2544, 0x0000000000000000ULL, { 0x6B76AE9256EDF554ULL, 0x8C03BA6BE7096D26ULL } }, /* XSUM_XXH128_withSecret_testdata[2544] */ + { 2545, 0x0000000000000000ULL, { 0x18FEF311A3055CFAULL, 0x5AB66D9E6ED0EBF6ULL } }, /* XSUM_XXH128_withSecret_testdata[2545] */ + { 2546, 0x0000000000000000ULL, { 0x41B142ADD315C08AULL, 0x55705203628BE64BULL } }, /* XSUM_XXH128_withSecret_testdata[2546] */ + { 2547, 0x0000000000000000ULL, { 0x776E02A5C2BCCB16ULL, 0xD73F8BD5CA6F71B2ULL } }, /* XSUM_XXH128_withSecret_testdata[2547] */ + { 2548, 0x0000000000000000ULL, { 0x8B3568C5708894A7ULL, 0x128D443A1FE0D995ULL } }, /* XSUM_XXH128_withSecret_testdata[2548] */ + { 2549, 0x0000000000000000ULL, { 0xD5FBC5EC8C745887ULL, 0x620D1256965BA246ULL } }, /* XSUM_XXH128_withSecret_testdata[2549] */ + { 2550, 0x0000000000000000ULL, { 0x0D138006F0EFEBB6ULL, 0x1EF90FC7E18B03E1ULL } }, /* XSUM_XXH128_withSecret_testdata[2550] */ + { 2551, 0x0000000000000000ULL, { 0xD81964889ACDA99CULL, 0x0B06D7B66D99E86CULL } }, /* XSUM_XXH128_withSecret_testdata[2551] */ + { 2552, 0x0000000000000000ULL, { 0xF2DAE9DDB84211F1ULL, 0x0E79593472072151ULL } }, /* XSUM_XXH128_withSecret_testdata[2552] */ + { 2553, 0x0000000000000000ULL, { 0xB682C5F44B0F4ADFULL, 0x041D1937F43151F5ULL } }, /* XSUM_XXH128_withSecret_testdata[2553] */ + { 2554, 0x0000000000000000ULL, { 0x3F79622325944B3AULL, 0x310A59C508E10922ULL } }, /* XSUM_XXH128_withSecret_testdata[2554] */ + { 2555, 0x0000000000000000ULL, { 0xE1573557F70CC302ULL, 0xAC9F2E64C8DACACEULL } }, /* XSUM_XXH128_withSecret_testdata[2555] */ + { 2556, 0x0000000000000000ULL, { 0xDF8146D7E8F45BD6ULL, 0x6C3D9F28DED867ACULL } }, /* XSUM_XXH128_withSecret_testdata[2556] */ + { 2557, 0x0000000000000000ULL, { 0xE556F3A899F3CECDULL, 0x48AB85FB841A5443ULL } }, /* XSUM_XXH128_withSecret_testdata[2557] */ + { 2558, 0x0000000000000000ULL, { 0xB2FD4B464AE294B6ULL, 0x8DD7B956F53B35CEULL } }, /* XSUM_XXH128_withSecret_testdata[2558] */ + { 2559, 0x0000000000000000ULL, { 0x8DEF064E344B1567ULL, 0x01B27EDAE79D58EDULL } }, /* XSUM_XXH128_withSecret_testdata[2559] */ + { 2560, 0x0000000000000000ULL, { 0x16EE80901F5FD360ULL, 0x3A42CA60D34FA621ULL } }, /* XSUM_XXH128_withSecret_testdata[2560] */ + { 2561, 0x0000000000000000ULL, { 0x93212C53420EAB20ULL, 0xEB1DA3FAD763EB13ULL } }, /* XSUM_XXH128_withSecret_testdata[2561] */ + { 2562, 0x0000000000000000ULL, { 0x4E97EBED9E7BB8ABULL, 0x2A7EBD26A983E142ULL } }, /* XSUM_XXH128_withSecret_testdata[2562] */ + { 2563, 0x0000000000000000ULL, { 0x36A00A2095233FA5ULL, 0xED4D44C29A7171B0ULL } }, /* XSUM_XXH128_withSecret_testdata[2563] */ + { 2564, 0x0000000000000000ULL, { 0x5FFB1980AB9EF7A5ULL, 0xB841D06A9A5D5A06ULL } }, /* XSUM_XXH128_withSecret_testdata[2564] */ + { 2565, 0x0000000000000000ULL, { 0xC7CF3B9AD3DFC66CULL, 0xCCA5A41DE2C95C74ULL } }, /* XSUM_XXH128_withSecret_testdata[2565] */ + { 2566, 0x0000000000000000ULL, { 0x302798DF16BE571EULL, 0x01ADF1846AC418D9ULL } }, /* XSUM_XXH128_withSecret_testdata[2566] */ + { 2567, 0x0000000000000000ULL, { 0xA96EF549FA2166CDULL, 0x5430161933694960ULL } }, /* XSUM_XXH128_withSecret_testdata[2567] */ + { 2568, 0x0000000000000000ULL, { 0xE87D4F0D2633710EULL, 0x3566FC3B374E1EB5ULL } }, /* XSUM_XXH128_withSecret_testdata[2568] */ + { 2569, 0x0000000000000000ULL, { 0x37C4DDC5E76B9552ULL, 0x55A591A09FF15373ULL } }, /* XSUM_XXH128_withSecret_testdata[2569] */ + { 2570, 0x0000000000000000ULL, { 0x6730458D0BEC200CULL, 0x30D9DEB2A2F37EDCULL } }, /* XSUM_XXH128_withSecret_testdata[2570] */ + { 2571, 0x0000000000000000ULL, { 0x7EB259A765331316ULL, 0x034547C9C890045AULL } }, /* XSUM_XXH128_withSecret_testdata[2571] */ + { 2572, 0x0000000000000000ULL, { 0x9C7AA86195F57267ULL, 0xC9C0478CE8EFFF76ULL } }, /* XSUM_XXH128_withSecret_testdata[2572] */ + { 2573, 0x0000000000000000ULL, { 0xF73FD42643DC849EULL, 0x33CE78BE14844193ULL } }, /* XSUM_XXH128_withSecret_testdata[2573] */ + { 2574, 0x0000000000000000ULL, { 0x2A909E1A7BAE7038ULL, 0x1AE600FC630F0D10ULL } }, /* XSUM_XXH128_withSecret_testdata[2574] */ + { 2575, 0x0000000000000000ULL, { 0xA368FC34F33D2775ULL, 0x2D03EDA88390ABDFULL } }, /* XSUM_XXH128_withSecret_testdata[2575] */ + { 2576, 0x0000000000000000ULL, { 0x37A51C9E6EE2277BULL, 0x8EE7FE277A411C7DULL } }, /* XSUM_XXH128_withSecret_testdata[2576] */ + { 2577, 0x0000000000000000ULL, { 0xD54B979F6DA0F96DULL, 0xB1E881C8AC3520F6ULL } }, /* XSUM_XXH128_withSecret_testdata[2577] */ + { 2578, 0x0000000000000000ULL, { 0x57FDF444EB565B36ULL, 0x99B3503E1A49F57AULL } }, /* XSUM_XXH128_withSecret_testdata[2578] */ + { 2579, 0x0000000000000000ULL, { 0xEC30F9C831A60851ULL, 0x2172D9D7D8B10BFFULL } }, /* XSUM_XXH128_withSecret_testdata[2579] */ + { 2580, 0x0000000000000000ULL, { 0x6E2D789FE72D6F4DULL, 0x9939E3723EA3CD7BULL } }, /* XSUM_XXH128_withSecret_testdata[2580] */ + { 2581, 0x0000000000000000ULL, { 0x942E1D90CF6B9E18ULL, 0x5912AF08590AB4CCULL } }, /* XSUM_XXH128_withSecret_testdata[2581] */ + { 2582, 0x0000000000000000ULL, { 0x8AE3BE86A47DA957ULL, 0xAC6F0BD184238CB2ULL } }, /* XSUM_XXH128_withSecret_testdata[2582] */ + { 2583, 0x0000000000000000ULL, { 0xCCA4C892ADFE4F73ULL, 0x392919AD00E5B377ULL } }, /* XSUM_XXH128_withSecret_testdata[2583] */ + { 2584, 0x0000000000000000ULL, { 0x833C06D264B01768ULL, 0xDEEC4692EC1DA9CBULL } }, /* XSUM_XXH128_withSecret_testdata[2584] */ + { 2585, 0x0000000000000000ULL, { 0x6D1048FF62E9EB4AULL, 0x1EBBAADE56A3C795ULL } }, /* XSUM_XXH128_withSecret_testdata[2585] */ + { 2586, 0x0000000000000000ULL, { 0xD655BA7431A0912BULL, 0x795A4D145CFA3284ULL } }, /* XSUM_XXH128_withSecret_testdata[2586] */ + { 2587, 0x0000000000000000ULL, { 0x017B15C673D638F2ULL, 0x141F4DC2599D46F7ULL } }, /* XSUM_XXH128_withSecret_testdata[2587] */ + { 2588, 0x0000000000000000ULL, { 0x060FF36A6F988FF4ULL, 0x85AED5C08F23BB59ULL } }, /* XSUM_XXH128_withSecret_testdata[2588] */ + { 2589, 0x0000000000000000ULL, { 0xE7F046C6DEAD7BCFULL, 0x6F32A767B8B9CE3DULL } }, /* XSUM_XXH128_withSecret_testdata[2589] */ + { 2590, 0x0000000000000000ULL, { 0x55606B4202BAD261ULL, 0xAB9873F62F1B6E7DULL } }, /* XSUM_XXH128_withSecret_testdata[2590] */ + { 2591, 0x0000000000000000ULL, { 0x70B45508D2567155ULL, 0x954821A0F0DD285EULL } }, /* XSUM_XXH128_withSecret_testdata[2591] */ + { 2592, 0x0000000000000000ULL, { 0xFDDBEB1AAB020A1AULL, 0x01D72701856194E9ULL } }, /* XSUM_XXH128_withSecret_testdata[2592] */ + { 2593, 0x0000000000000000ULL, { 0xADBBB1B29B1D5ACEULL, 0xCB5AE340EBC82CFEULL } }, /* XSUM_XXH128_withSecret_testdata[2593] */ + { 2594, 0x0000000000000000ULL, { 0xDD7F32DF066A745EULL, 0x47C0957050848CCAULL } }, /* XSUM_XXH128_withSecret_testdata[2594] */ + { 2595, 0x0000000000000000ULL, { 0xB495E5866461FE91ULL, 0x3CEE93E2095F45B2ULL } }, /* XSUM_XXH128_withSecret_testdata[2595] */ + { 2596, 0x0000000000000000ULL, { 0x8F53A734753051B8ULL, 0xCEC853C32DD4B7FCULL } }, /* XSUM_XXH128_withSecret_testdata[2596] */ + { 2597, 0x0000000000000000ULL, { 0xE2936E2F47754D48ULL, 0x4BD53FC0174325AAULL } }, /* XSUM_XXH128_withSecret_testdata[2597] */ + { 2598, 0x0000000000000000ULL, { 0x7DFFDDBB3380E963ULL, 0xB706B43FAF8ABB39ULL } }, /* XSUM_XXH128_withSecret_testdata[2598] */ + { 2599, 0x0000000000000000ULL, { 0x9D1CAD8EFEAAE47FULL, 0x41D32A8D5BC0A48CULL } }, /* XSUM_XXH128_withSecret_testdata[2599] */ + { 2600, 0x0000000000000000ULL, { 0xC8F4FF8AA05CF97BULL, 0xE6179CF3AC077FB6ULL } }, /* XSUM_XXH128_withSecret_testdata[2600] */ + { 2601, 0x0000000000000000ULL, { 0x664EB6E49571EA2DULL, 0xEEF04B570D605B30ULL } }, /* XSUM_XXH128_withSecret_testdata[2601] */ + { 2602, 0x0000000000000000ULL, { 0x692108073687893CULL, 0x316C3878926C971EULL } }, /* XSUM_XXH128_withSecret_testdata[2602] */ + { 2603, 0x0000000000000000ULL, { 0x7BDF43C6D590A9D1ULL, 0xD10EBB43B28FD5BCULL } }, /* XSUM_XXH128_withSecret_testdata[2603] */ + { 2604, 0x0000000000000000ULL, { 0x7A91B2ABC5A49158ULL, 0xE861642BD5C07A26ULL } }, /* XSUM_XXH128_withSecret_testdata[2604] */ + { 2605, 0x0000000000000000ULL, { 0x88E7C28EA89E5B6DULL, 0x8321DFB9F3098DD8ULL } }, /* XSUM_XXH128_withSecret_testdata[2605] */ + { 2606, 0x0000000000000000ULL, { 0xCE5E9D6C768E31C8ULL, 0x5FB8EB05094DE8EFULL } }, /* XSUM_XXH128_withSecret_testdata[2606] */ + { 2607, 0x0000000000000000ULL, { 0x543A7FA1ADA6E389ULL, 0x8C5A364AC3C33C6FULL } }, /* XSUM_XXH128_withSecret_testdata[2607] */ + { 2608, 0x0000000000000000ULL, { 0xB1323D2F495C71EEULL, 0x9B499C1F62DB4848ULL } }, /* XSUM_XXH128_withSecret_testdata[2608] */ + { 2609, 0x0000000000000000ULL, { 0x1137F916C416A5F0ULL, 0x607A9C5A41B04541ULL } }, /* XSUM_XXH128_withSecret_testdata[2609] */ + { 2610, 0x0000000000000000ULL, { 0xD9856B10DBF1F456ULL, 0x4053923FA3CCF557ULL } }, /* XSUM_XXH128_withSecret_testdata[2610] */ + { 2611, 0x0000000000000000ULL, { 0xB74F58BE5684931CULL, 0x7CB891492C84BA92ULL } }, /* XSUM_XXH128_withSecret_testdata[2611] */ + { 2612, 0x0000000000000000ULL, { 0xEDEA21DC494254DCULL, 0x73481D1BBBF07BA1ULL } }, /* XSUM_XXH128_withSecret_testdata[2612] */ + { 2613, 0x0000000000000000ULL, { 0x01B756211ABF146CULL, 0x6CC21738D8880BCEULL } }, /* XSUM_XXH128_withSecret_testdata[2613] */ + { 2614, 0x0000000000000000ULL, { 0x967C06CCEBB5A471ULL, 0xB38E9946FC6AB8F3ULL } }, /* XSUM_XXH128_withSecret_testdata[2614] */ + { 2615, 0x0000000000000000ULL, { 0xF144F6B209875574ULL, 0x42C6A3F576079BF2ULL } }, /* XSUM_XXH128_withSecret_testdata[2615] */ + { 2616, 0x0000000000000000ULL, { 0xC198AC39900B1793ULL, 0xD51C070FFE43B7F8ULL } }, /* XSUM_XXH128_withSecret_testdata[2616] */ + { 2617, 0x0000000000000000ULL, { 0xDA26311DFE811C2DULL, 0x8BAB479CE6D29EA8ULL } }, /* XSUM_XXH128_withSecret_testdata[2617] */ + { 2618, 0x0000000000000000ULL, { 0x7F14937F6C7ED2A7ULL, 0xB755A49B8E6E1074ULL } }, /* XSUM_XXH128_withSecret_testdata[2618] */ + { 2619, 0x0000000000000000ULL, { 0x4066C04C1DD840DBULL, 0x88EF10EC94B4324BULL } }, /* XSUM_XXH128_withSecret_testdata[2619] */ + { 2620, 0x0000000000000000ULL, { 0x1E2D0B4FA2C9824AULL, 0x0FB26617042809F1ULL } }, /* XSUM_XXH128_withSecret_testdata[2620] */ + { 2621, 0x0000000000000000ULL, { 0xC73016F08F32DD84ULL, 0x62BBF9D4E04C76FDULL } }, /* XSUM_XXH128_withSecret_testdata[2621] */ + { 2622, 0x0000000000000000ULL, { 0xB8EBE60A20704C50ULL, 0x7573E2BDD741A805ULL } }, /* XSUM_XXH128_withSecret_testdata[2622] */ + { 2623, 0x0000000000000000ULL, { 0xD4D18BB02D843624ULL, 0xA7F3A3019672255AULL } }, /* XSUM_XXH128_withSecret_testdata[2623] */ + { 2624, 0x0000000000000000ULL, { 0x9578A4EBD51BFF5AULL, 0xE1C7E50485143627ULL } }, /* XSUM_XXH128_withSecret_testdata[2624] */ + { 2625, 0x0000000000000000ULL, { 0xB57F7BB909809262ULL, 0x8669B5B8421D5653ULL } }, /* XSUM_XXH128_withSecret_testdata[2625] */ + { 2626, 0x0000000000000000ULL, { 0x9372C2DC9DFCE366ULL, 0x6BF64EA5FAF7D4E4ULL } }, /* XSUM_XXH128_withSecret_testdata[2626] */ + { 2627, 0x0000000000000000ULL, { 0x81EF7C0B63BC899FULL, 0xD22B8F5DE1AC3057ULL } }, /* XSUM_XXH128_withSecret_testdata[2627] */ + { 2628, 0x0000000000000000ULL, { 0x190A38990E8A0DD0ULL, 0x086D0A874E1AC21FULL } }, /* XSUM_XXH128_withSecret_testdata[2628] */ + { 2629, 0x0000000000000000ULL, { 0x1BDA829E6225EAE3ULL, 0x4C51D9CFFE8106FBULL } }, /* XSUM_XXH128_withSecret_testdata[2629] */ + { 2630, 0x0000000000000000ULL, { 0xDDE9CBA47EA1D192ULL, 0x3A34DDEC077281FBULL } }, /* XSUM_XXH128_withSecret_testdata[2630] */ + { 2631, 0x0000000000000000ULL, { 0x0F0E82D98FCC1F93ULL, 0x6646903F7BDA0BA6ULL } }, /* XSUM_XXH128_withSecret_testdata[2631] */ + { 2632, 0x0000000000000000ULL, { 0x00A7DDF5CD8188D4ULL, 0xFF5F1DC44AAC1620ULL } }, /* XSUM_XXH128_withSecret_testdata[2632] */ + { 2633, 0x0000000000000000ULL, { 0x02E7E82785C1E2A9ULL, 0xCAE521359FF1B755ULL } }, /* XSUM_XXH128_withSecret_testdata[2633] */ + { 2634, 0x0000000000000000ULL, { 0x0BC2BEA55AFD193BULL, 0x456967096FD0553DULL } }, /* XSUM_XXH128_withSecret_testdata[2634] */ + { 2635, 0x0000000000000000ULL, { 0x439AD5248A2FB89FULL, 0x4FD95B100CB0C4B8ULL } }, /* XSUM_XXH128_withSecret_testdata[2635] */ + { 2636, 0x0000000000000000ULL, { 0x58C9ADCB09BEC325ULL, 0xC2EDB5BF19B2343AULL } }, /* XSUM_XXH128_withSecret_testdata[2636] */ + { 2637, 0x0000000000000000ULL, { 0x5001BBC78E724B9DULL, 0x4AE68F5A8AECDD5BULL } }, /* XSUM_XXH128_withSecret_testdata[2637] */ + { 2638, 0x0000000000000000ULL, { 0x0804A7BC3B216DB1ULL, 0x30E959732ED04407ULL } }, /* XSUM_XXH128_withSecret_testdata[2638] */ + { 2639, 0x0000000000000000ULL, { 0x8BBCCD92E34788DFULL, 0x7362B9457042CE99ULL } }, /* XSUM_XXH128_withSecret_testdata[2639] */ + { 2640, 0x0000000000000000ULL, { 0xC41A91B7D8601816ULL, 0xD8409D4118631DFEULL } }, /* XSUM_XXH128_withSecret_testdata[2640] */ + { 2641, 0x0000000000000000ULL, { 0x55BEE36549E0870BULL, 0x92A1CB88F801EA31ULL } }, /* XSUM_XXH128_withSecret_testdata[2641] */ + { 2642, 0x0000000000000000ULL, { 0x16089A865A847A43ULL, 0xD1E45EF5538A0462ULL } }, /* XSUM_XXH128_withSecret_testdata[2642] */ + { 2643, 0x0000000000000000ULL, { 0x8105DF0C7462BF52ULL, 0x1CDA3006CCC48611ULL } }, /* XSUM_XXH128_withSecret_testdata[2643] */ + { 2644, 0x0000000000000000ULL, { 0xE71BA1F013FB3E10ULL, 0x9F457C3A0DEF3F26ULL } }, /* XSUM_XXH128_withSecret_testdata[2644] */ + { 2645, 0x0000000000000000ULL, { 0x64A5697CB91C7206ULL, 0xE87F530D3CA590EFULL } }, /* XSUM_XXH128_withSecret_testdata[2645] */ + { 2646, 0x0000000000000000ULL, { 0x9E373E290C75846AULL, 0x5C4BDBC82536D310ULL } }, /* XSUM_XXH128_withSecret_testdata[2646] */ + { 2647, 0x0000000000000000ULL, { 0xD1BBE5E4FCBDC2ADULL, 0x1FCE59F7711C5080ULL } }, /* XSUM_XXH128_withSecret_testdata[2647] */ + { 2648, 0x0000000000000000ULL, { 0xFEE2E93D7FB4E975ULL, 0xD9E676F708930E4BULL } }, /* XSUM_XXH128_withSecret_testdata[2648] */ + { 2649, 0x0000000000000000ULL, { 0x6876D7CB7DC9797FULL, 0x6DA20903F86CB212ULL } }, /* XSUM_XXH128_withSecret_testdata[2649] */ + { 2650, 0x0000000000000000ULL, { 0xD9B0BCDE3BF12705ULL, 0x1A543338C76FCC42ULL } }, /* XSUM_XXH128_withSecret_testdata[2650] */ + { 2651, 0x0000000000000000ULL, { 0x495250888BB32B49ULL, 0xA74DFEFD8D8E8229ULL } }, /* XSUM_XXH128_withSecret_testdata[2651] */ + { 2652, 0x0000000000000000ULL, { 0xEE445EFDF52C0A42ULL, 0xC182812214647F1BULL } }, /* XSUM_XXH128_withSecret_testdata[2652] */ + { 2653, 0x0000000000000000ULL, { 0x3164C3796738DAE1ULL, 0x43028024B3FD58FEULL } }, /* XSUM_XXH128_withSecret_testdata[2653] */ + { 2654, 0x0000000000000000ULL, { 0x7AE6680348D45EFFULL, 0x7194D3BCD13D906EULL } }, /* XSUM_XXH128_withSecret_testdata[2654] */ + { 2655, 0x0000000000000000ULL, { 0x8E70038B332D3F54ULL, 0x1F213FFE633C3C29ULL } }, /* XSUM_XXH128_withSecret_testdata[2655] */ + { 2656, 0x0000000000000000ULL, { 0x3E03BCB79DA50B2FULL, 0x3D3236F23DCD14E8ULL } }, /* XSUM_XXH128_withSecret_testdata[2656] */ + { 2657, 0x0000000000000000ULL, { 0x7386A16500321DAAULL, 0x2AE992C965F98F72ULL } }, /* XSUM_XXH128_withSecret_testdata[2657] */ + { 2658, 0x0000000000000000ULL, { 0x7918738CBE919FD2ULL, 0xEF5CBA1688B5C8A2ULL } }, /* XSUM_XXH128_withSecret_testdata[2658] */ + { 2659, 0x0000000000000000ULL, { 0x36B19C977E3D64F2ULL, 0xCFC42A5304CEFFD7ULL } }, /* XSUM_XXH128_withSecret_testdata[2659] */ + { 2660, 0x0000000000000000ULL, { 0x672A654152793BF1ULL, 0x2D30115ECCECC5D2ULL } }, /* XSUM_XXH128_withSecret_testdata[2660] */ + { 2661, 0x0000000000000000ULL, { 0x91C67413D6E7609AULL, 0x4FC4ED1636C8F4CCULL } }, /* XSUM_XXH128_withSecret_testdata[2661] */ + { 2662, 0x0000000000000000ULL, { 0x1EEFBAA7DFBEFFEBULL, 0xE9E882A725CEA513ULL } }, /* XSUM_XXH128_withSecret_testdata[2662] */ + { 2663, 0x0000000000000000ULL, { 0x9F436ADFD10DD39DULL, 0x3CA44CEE42C4BD2EULL } }, /* XSUM_XXH128_withSecret_testdata[2663] */ + { 2664, 0x0000000000000000ULL, { 0x52B95946FB502CCEULL, 0xD94CC54AAE93770AULL } }, /* XSUM_XXH128_withSecret_testdata[2664] */ + { 2665, 0x0000000000000000ULL, { 0x00D500026F9AB861ULL, 0x3E9664F8A8A59195ULL } }, /* XSUM_XXH128_withSecret_testdata[2665] */ + { 2666, 0x0000000000000000ULL, { 0xB967DD7695010DF6ULL, 0xB54F027651A63D66ULL } }, /* XSUM_XXH128_withSecret_testdata[2666] */ + { 2667, 0x0000000000000000ULL, { 0x8E7606272F097FB8ULL, 0xFB472433BC298AA0ULL } }, /* XSUM_XXH128_withSecret_testdata[2667] */ + { 2668, 0x0000000000000000ULL, { 0x4C9A07056EC8C59AULL, 0xE76CFAF75D179B86ULL } }, /* XSUM_XXH128_withSecret_testdata[2668] */ + { 2669, 0x0000000000000000ULL, { 0x5508DAD47A6CC2CBULL, 0x34AAA29BE8C6063BULL } }, /* XSUM_XXH128_withSecret_testdata[2669] */ + { 2670, 0x0000000000000000ULL, { 0xEB6360E14EEE1610ULL, 0x766FB782F07AC9FCULL } }, /* XSUM_XXH128_withSecret_testdata[2670] */ + { 2671, 0x0000000000000000ULL, { 0xC6372020B33BFD65ULL, 0x05BBB3EC7FF45099ULL } }, /* XSUM_XXH128_withSecret_testdata[2671] */ + { 2672, 0x0000000000000000ULL, { 0x0F843F9C945C94E6ULL, 0x3C8D7FEE6C221B0DULL } }, /* XSUM_XXH128_withSecret_testdata[2672] */ + { 2673, 0x0000000000000000ULL, { 0xBFDCB8BE05DD7A65ULL, 0xA7AABA0EDD72702FULL } }, /* XSUM_XXH128_withSecret_testdata[2673] */ + { 2674, 0x0000000000000000ULL, { 0x25DE628289633226ULL, 0x6730929B7E634A0DULL } }, /* XSUM_XXH128_withSecret_testdata[2674] */ + { 2675, 0x0000000000000000ULL, { 0x32688F8FE66182AEULL, 0x25DAD9F7E1FB378CULL } }, /* XSUM_XXH128_withSecret_testdata[2675] */ + { 2676, 0x0000000000000000ULL, { 0x84C8E782DDC3C81BULL, 0xE6F5CEAA3C8DAAF6ULL } }, /* XSUM_XXH128_withSecret_testdata[2676] */ + { 2677, 0x0000000000000000ULL, { 0x3B658359E7BACF1EULL, 0x4232D163B737CB7FULL } }, /* XSUM_XXH128_withSecret_testdata[2677] */ + { 2678, 0x0000000000000000ULL, { 0xAD7CFACBC79F8003ULL, 0x4F4D66CDBF789DF1ULL } }, /* XSUM_XXH128_withSecret_testdata[2678] */ + { 2679, 0x0000000000000000ULL, { 0xBD610924ED01294CULL, 0xB723CA44B3E1E876ULL } }, /* XSUM_XXH128_withSecret_testdata[2679] */ + { 2680, 0x0000000000000000ULL, { 0x096AD93B09F09B17ULL, 0x0E0ECD2924E87CFBULL } }, /* XSUM_XXH128_withSecret_testdata[2680] */ + { 2681, 0x0000000000000000ULL, { 0xD8D202571A42DF76ULL, 0xB0AD493D13E98F7EULL } }, /* XSUM_XXH128_withSecret_testdata[2681] */ + { 2682, 0x0000000000000000ULL, { 0x392D755A24555DA7ULL, 0x9640DEFF3193324FULL } }, /* XSUM_XXH128_withSecret_testdata[2682] */ + { 2683, 0x0000000000000000ULL, { 0xFE625F185A910F2DULL, 0x496D708C9AEF0D13ULL } }, /* XSUM_XXH128_withSecret_testdata[2683] */ + { 2684, 0x0000000000000000ULL, { 0xF782909443ACBABAULL, 0xC29CB88A5A0BF192ULL } }, /* XSUM_XXH128_withSecret_testdata[2684] */ + { 2685, 0x0000000000000000ULL, { 0xE0168A31A9DEA40CULL, 0xDBC54C3D4880C707ULL } }, /* XSUM_XXH128_withSecret_testdata[2685] */ + { 2686, 0x0000000000000000ULL, { 0xAF0735145F93B14AULL, 0xFDB84FA0E73ACE4AULL } }, /* XSUM_XXH128_withSecret_testdata[2686] */ + { 2687, 0x0000000000000000ULL, { 0x85E8513DC79A8724ULL, 0x64C903FFAFABCAB4ULL } }, /* XSUM_XXH128_withSecret_testdata[2687] */ + { 2688, 0x0000000000000000ULL, { 0x330F96D0DA8D3B4CULL, 0x284F631031E00ADAULL } }, /* XSUM_XXH128_withSecret_testdata[2688] */ + { 2689, 0x0000000000000000ULL, { 0x6AA04F0588D67194ULL, 0xD1AC19238A95C461ULL } }, /* XSUM_XXH128_withSecret_testdata[2689] */ + { 2690, 0x0000000000000000ULL, { 0xC51B098BBFA4637AULL, 0x0514ED526D7C7F34ULL } }, /* XSUM_XXH128_withSecret_testdata[2690] */ + { 2691, 0x0000000000000000ULL, { 0x5787EC409CD94EC7ULL, 0xDABAA7C10DA92C62ULL } }, /* XSUM_XXH128_withSecret_testdata[2691] */ + { 2692, 0x0000000000000000ULL, { 0x3AF92D8FB21B10CFULL, 0xDE130088F4B5BDDFULL } }, /* XSUM_XXH128_withSecret_testdata[2692] */ + { 2693, 0x0000000000000000ULL, { 0x47B7CA6CED64886DULL, 0xBCE878F6C29634DEULL } }, /* XSUM_XXH128_withSecret_testdata[2693] */ + { 2694, 0x0000000000000000ULL, { 0x812E544FD90EF1BAULL, 0x47C7F7E058DE9C56ULL } }, /* XSUM_XXH128_withSecret_testdata[2694] */ + { 2695, 0x0000000000000000ULL, { 0xA55D70EE8F02E8BDULL, 0xC596C14D2683348EULL } }, /* XSUM_XXH128_withSecret_testdata[2695] */ + { 2696, 0x0000000000000000ULL, { 0x233CD540E5FCC33CULL, 0x3CBA35923A806274ULL } }, /* XSUM_XXH128_withSecret_testdata[2696] */ + { 2697, 0x0000000000000000ULL, { 0xFB9341114FA4CC29ULL, 0xC07AB5A00ADC8A0AULL } }, /* XSUM_XXH128_withSecret_testdata[2697] */ + { 2698, 0x0000000000000000ULL, { 0xC29841FC3A675EF6ULL, 0x8D9E55A6E6F0AEB6ULL } }, /* XSUM_XXH128_withSecret_testdata[2698] */ + { 2699, 0x0000000000000000ULL, { 0xC4EB0FE70A33F62FULL, 0x7187D02DE31E5DF8ULL } }, /* XSUM_XXH128_withSecret_testdata[2699] */ + { 2700, 0x0000000000000000ULL, { 0xA3AA5B1F50D9E77CULL, 0x182AA4C6295FDD76ULL } }, /* XSUM_XXH128_withSecret_testdata[2700] */ + { 2701, 0x0000000000000000ULL, { 0x1A3A391DBBE402E5ULL, 0x4F4632C738C9C324ULL } }, /* XSUM_XXH128_withSecret_testdata[2701] */ + { 2702, 0x0000000000000000ULL, { 0xA4724F3C58FD0920ULL, 0x492C4F5317B1D566ULL } }, /* XSUM_XXH128_withSecret_testdata[2702] */ + { 2703, 0x0000000000000000ULL, { 0x0A71207441D9CC62ULL, 0x2E97885E3696680EULL } }, /* XSUM_XXH128_withSecret_testdata[2703] */ + { 2704, 0x0000000000000000ULL, { 0xB5AB2E664CC1F0E3ULL, 0xE80EF1D16442D394ULL } }, /* XSUM_XXH128_withSecret_testdata[2704] */ + { 2705, 0x0000000000000000ULL, { 0x28237936A1716622ULL, 0x06B576378C78CBFDULL } }, /* XSUM_XXH128_withSecret_testdata[2705] */ + { 2706, 0x0000000000000000ULL, { 0x8FF7CB7CDFBE8552ULL, 0x90FB03FD8EF82A9DULL } }, /* XSUM_XXH128_withSecret_testdata[2706] */ + { 2707, 0x0000000000000000ULL, { 0x95D17737A4533EB1ULL, 0xF96B6C0C77CF5090ULL } }, /* XSUM_XXH128_withSecret_testdata[2707] */ + { 2708, 0x0000000000000000ULL, { 0x88CE7CAFDD755DA6ULL, 0x7349A3B81ABF8A43ULL } }, /* XSUM_XXH128_withSecret_testdata[2708] */ + { 2709, 0x0000000000000000ULL, { 0xA7A708CA9BE6603DULL, 0xD07B030C96BF9D4FULL } }, /* XSUM_XXH128_withSecret_testdata[2709] */ + { 2710, 0x0000000000000000ULL, { 0x6CBC38D67BAE5390ULL, 0x0D358CCEA9BD95ACULL } }, /* XSUM_XXH128_withSecret_testdata[2710] */ + { 2711, 0x0000000000000000ULL, { 0xB7E1FB656B7422A3ULL, 0x771669DC6AB53032ULL } }, /* XSUM_XXH128_withSecret_testdata[2711] */ + { 2712, 0x0000000000000000ULL, { 0x55D7049F9FF1CA3EULL, 0xE37992E155E88F9CULL } }, /* XSUM_XXH128_withSecret_testdata[2712] */ + { 2713, 0x0000000000000000ULL, { 0xDBF632660DD99CB0ULL, 0xBC5B9F441D899106ULL } }, /* XSUM_XXH128_withSecret_testdata[2713] */ + { 2714, 0x0000000000000000ULL, { 0x4D3CD71295F6ABF8ULL, 0x634EC7C7FF9AC684ULL } }, /* XSUM_XXH128_withSecret_testdata[2714] */ + { 2715, 0x0000000000000000ULL, { 0x14092CBC6368A1FCULL, 0x320D44AD8973C091ULL } }, /* XSUM_XXH128_withSecret_testdata[2715] */ + { 2716, 0x0000000000000000ULL, { 0x3A10DD5737B434B2ULL, 0x3168899B6AB6DDE2ULL } }, /* XSUM_XXH128_withSecret_testdata[2716] */ + { 2717, 0x0000000000000000ULL, { 0x253A2D1AC1138049ULL, 0x3A1D9631DB85C662ULL } }, /* XSUM_XXH128_withSecret_testdata[2717] */ + { 2718, 0x0000000000000000ULL, { 0x2726706B5ED76122ULL, 0x17A38D8C93CF7C60ULL } }, /* XSUM_XXH128_withSecret_testdata[2718] */ + { 2719, 0x0000000000000000ULL, { 0x6DCB497FFE8EFDF0ULL, 0x5DC76D0637AC71E5ULL } }, /* XSUM_XXH128_withSecret_testdata[2719] */ + { 2720, 0x0000000000000000ULL, { 0xBFBE9DDD15CCA78BULL, 0x8867D87263AD475EULL } }, /* XSUM_XXH128_withSecret_testdata[2720] */ + { 2721, 0x0000000000000000ULL, { 0x93080165E74F2113ULL, 0xCF2346A0586AB0EDULL } }, /* XSUM_XXH128_withSecret_testdata[2721] */ + { 2722, 0x0000000000000000ULL, { 0x34F93E545F17B00BULL, 0xA89428F4B44E70ECULL } }, /* XSUM_XXH128_withSecret_testdata[2722] */ + { 2723, 0x0000000000000000ULL, { 0x9FBF9134D52E17A8ULL, 0x72A00CF2C25C6FB3ULL } }, /* XSUM_XXH128_withSecret_testdata[2723] */ + { 2724, 0x0000000000000000ULL, { 0x0095C26912C593CBULL, 0x7C1DC5EF453D99A6ULL } }, /* XSUM_XXH128_withSecret_testdata[2724] */ + { 2725, 0x0000000000000000ULL, { 0x4295CA7092D53393ULL, 0x346C345307D3DB9AULL } }, /* XSUM_XXH128_withSecret_testdata[2725] */ + { 2726, 0x0000000000000000ULL, { 0xBF2BF797289CCA26ULL, 0x372F6C8A692EE567ULL } }, /* XSUM_XXH128_withSecret_testdata[2726] */ + { 2727, 0x0000000000000000ULL, { 0xDE8896D86795A88FULL, 0x2D66F82F57AB30D8ULL } }, /* XSUM_XXH128_withSecret_testdata[2727] */ + { 2728, 0x0000000000000000ULL, { 0x98F44195153814DFULL, 0xA9A6D5A9F06091F3ULL } }, /* XSUM_XXH128_withSecret_testdata[2728] */ + { 2729, 0x0000000000000000ULL, { 0xF95CFB8318C7728CULL, 0x556FE5D80B639772ULL } }, /* XSUM_XXH128_withSecret_testdata[2729] */ + { 2730, 0x0000000000000000ULL, { 0xBB95647B025D4046ULL, 0xDF464CECE2199E6CULL } }, /* XSUM_XXH128_withSecret_testdata[2730] */ + { 2731, 0x0000000000000000ULL, { 0xCCC3908B111E3898ULL, 0xE5DBF3CEF2C3F7E6ULL } }, /* XSUM_XXH128_withSecret_testdata[2731] */ + { 2732, 0x0000000000000000ULL, { 0xBDEFCC0464C26D71ULL, 0x0A6B0E044782CE2EULL } }, /* XSUM_XXH128_withSecret_testdata[2732] */ + { 2733, 0x0000000000000000ULL, { 0xAAB0EC47ED4C44B8ULL, 0xB164C3DD312497F2ULL } }, /* XSUM_XXH128_withSecret_testdata[2733] */ + { 2734, 0x0000000000000000ULL, { 0x1010BC3F4C8126CEULL, 0xF4C278A65A48D5D3ULL } }, /* XSUM_XXH128_withSecret_testdata[2734] */ + { 2735, 0x0000000000000000ULL, { 0x0DFE9A3A9921B584ULL, 0xB3BCD4966CC4EA03ULL } }, /* XSUM_XXH128_withSecret_testdata[2735] */ + { 2736, 0x0000000000000000ULL, { 0xF0544A704E23132FULL, 0xD64EC6C01B714F52ULL } }, /* XSUM_XXH128_withSecret_testdata[2736] */ + { 2737, 0x0000000000000000ULL, { 0x343DEE93E6A3B726ULL, 0x92B120B56E933183ULL } }, /* XSUM_XXH128_withSecret_testdata[2737] */ + { 2738, 0x0000000000000000ULL, { 0x3F739461D94B435EULL, 0x45B792847AFA10C1ULL } }, /* XSUM_XXH128_withSecret_testdata[2738] */ + { 2739, 0x0000000000000000ULL, { 0xA859C4CC314E13DCULL, 0x35F27DE43DC20B4FULL } }, /* XSUM_XXH128_withSecret_testdata[2739] */ + { 2740, 0x0000000000000000ULL, { 0x4E8FFBF5D701FEBEULL, 0x254924C0AF1E70CEULL } }, /* XSUM_XXH128_withSecret_testdata[2740] */ + { 2741, 0x0000000000000000ULL, { 0x1EEA03B3C7D154B3ULL, 0x128C09B9CCE489E5ULL } }, /* XSUM_XXH128_withSecret_testdata[2741] */ + { 2742, 0x0000000000000000ULL, { 0x2C034DFB36591DDDULL, 0x5A0DA60AD3251A00ULL } }, /* XSUM_XXH128_withSecret_testdata[2742] */ + { 2743, 0x0000000000000000ULL, { 0x97A3613150ACE4A6ULL, 0x8CEC6711D4418684ULL } }, /* XSUM_XXH128_withSecret_testdata[2743] */ + { 2744, 0x0000000000000000ULL, { 0x08F6AC5C1542135CULL, 0x9C4CF21C6F05CA9DULL } }, /* XSUM_XXH128_withSecret_testdata[2744] */ + { 2745, 0x0000000000000000ULL, { 0x499AEA26832D3187ULL, 0x3E1EB7ED13EE7923ULL } }, /* XSUM_XXH128_withSecret_testdata[2745] */ + { 2746, 0x0000000000000000ULL, { 0xCF1C3217B3FA96A5ULL, 0x7FBE0ADFDE797E0CULL } }, /* XSUM_XXH128_withSecret_testdata[2746] */ + { 2747, 0x0000000000000000ULL, { 0x324E2BF9393F49C0ULL, 0xBEBEF797465B24A7ULL } }, /* XSUM_XXH128_withSecret_testdata[2747] */ + { 2748, 0x0000000000000000ULL, { 0xE70F81395137C31EULL, 0x420E1462A4BF665CULL } }, /* XSUM_XXH128_withSecret_testdata[2748] */ + { 2749, 0x0000000000000000ULL, { 0x93D5F5C4CC553B50ULL, 0x1FFC43AE76641EC4ULL } }, /* XSUM_XXH128_withSecret_testdata[2749] */ + { 2750, 0x0000000000000000ULL, { 0xBFFA783F1CBFF56DULL, 0x0EA0D431CB677DEFULL } }, /* XSUM_XXH128_withSecret_testdata[2750] */ + { 2751, 0x0000000000000000ULL, { 0x1D78DE39E4B359A6ULL, 0x4C3EEE558DCB3626ULL } }, /* XSUM_XXH128_withSecret_testdata[2751] */ + { 2752, 0x0000000000000000ULL, { 0xBB287377235EDC08ULL, 0x61C001C3535CE7F6ULL } }, /* XSUM_XXH128_withSecret_testdata[2752] */ + { 2753, 0x0000000000000000ULL, { 0x6C2456AD352C9554ULL, 0xAEA0D438AAC1374DULL } }, /* XSUM_XXH128_withSecret_testdata[2753] */ + { 2754, 0x0000000000000000ULL, { 0x1BF4054BCCA27FD7ULL, 0xC65DE2FF21A47C30ULL } }, /* XSUM_XXH128_withSecret_testdata[2754] */ + { 2755, 0x0000000000000000ULL, { 0xAC7B608DDDB27358ULL, 0xAF6DD19184D6C668ULL } }, /* XSUM_XXH128_withSecret_testdata[2755] */ + { 2756, 0x0000000000000000ULL, { 0x0235B968B50ACFEFULL, 0x886BFCBCAA27DB99ULL } }, /* XSUM_XXH128_withSecret_testdata[2756] */ + { 2757, 0x0000000000000000ULL, { 0xF6A70A14FC5BDD6BULL, 0x7C46EBC532CE1BC5ULL } }, /* XSUM_XXH128_withSecret_testdata[2757] */ + { 2758, 0x0000000000000000ULL, { 0xE3DE3EBC2E388DCAULL, 0x1917FDAE30171C9FULL } }, /* XSUM_XXH128_withSecret_testdata[2758] */ + { 2759, 0x0000000000000000ULL, { 0xB0AE9AB15E900917ULL, 0x02736A47C416F4FEULL } }, /* XSUM_XXH128_withSecret_testdata[2759] */ + { 2760, 0x0000000000000000ULL, { 0x66FA24FBF160B1FDULL, 0x06B5583B752C1FD9ULL } }, /* XSUM_XXH128_withSecret_testdata[2760] */ + { 2761, 0x0000000000000000ULL, { 0xF353DF47B4F0EC48ULL, 0x2A3ADACBC934EF5CULL } }, /* XSUM_XXH128_withSecret_testdata[2761] */ + { 2762, 0x0000000000000000ULL, { 0xFB59B70C1578CF38ULL, 0xA583EDC1FDF9F2C8ULL } }, /* XSUM_XXH128_withSecret_testdata[2762] */ + { 2763, 0x0000000000000000ULL, { 0xE05DFF1C885A7D80ULL, 0x76AD8CA2CBCB79C0ULL } }, /* XSUM_XXH128_withSecret_testdata[2763] */ + { 2764, 0x0000000000000000ULL, { 0xE5EEA924203FA37DULL, 0x7F9F0624AFB96894ULL } }, /* XSUM_XXH128_withSecret_testdata[2764] */ + { 2765, 0x0000000000000000ULL, { 0xCD6F7FB5C036ED16ULL, 0x04A203B66EDE8A08ULL } }, /* XSUM_XXH128_withSecret_testdata[2765] */ + { 2766, 0x0000000000000000ULL, { 0x79A96F1D3B95841BULL, 0xDF07D320D403D0E0ULL } }, /* XSUM_XXH128_withSecret_testdata[2766] */ + { 2767, 0x0000000000000000ULL, { 0x72DCFAFA56ABF4DFULL, 0x4D114962DFB6B3C1ULL } }, /* XSUM_XXH128_withSecret_testdata[2767] */ + { 2768, 0x0000000000000000ULL, { 0xF204B717392BD4D0ULL, 0x9A785F22935A2091ULL } }, /* XSUM_XXH128_withSecret_testdata[2768] */ + { 2769, 0x0000000000000000ULL, { 0x6DE5C83C19B338BBULL, 0xF57A0BFA4DC07D60ULL } }, /* XSUM_XXH128_withSecret_testdata[2769] */ + { 2770, 0x0000000000000000ULL, { 0xC5C567298EBFB60BULL, 0xD531BBA247B06F6FULL } }, /* XSUM_XXH128_withSecret_testdata[2770] */ + { 2771, 0x0000000000000000ULL, { 0xC788884D383D1896ULL, 0xAC40E0D50C43B017ULL } }, /* XSUM_XXH128_withSecret_testdata[2771] */ + { 2772, 0x0000000000000000ULL, { 0x2C0FFBBFA9A79F05ULL, 0x0EBFF5D6EF77694BULL } }, /* XSUM_XXH128_withSecret_testdata[2772] */ + { 2773, 0x0000000000000000ULL, { 0x94797FAB3BAFBBB3ULL, 0x03CF411266C3DBE9ULL } }, /* XSUM_XXH128_withSecret_testdata[2773] */ + { 2774, 0x0000000000000000ULL, { 0xC34B8C0729D4BE4CULL, 0x12C9F4D5BD5C6D25ULL } }, /* XSUM_XXH128_withSecret_testdata[2774] */ + { 2775, 0x0000000000000000ULL, { 0x8DF43637A9297CBAULL, 0xAF0DD29BF27C2683ULL } }, /* XSUM_XXH128_withSecret_testdata[2775] */ + { 2776, 0x0000000000000000ULL, { 0xCD5FA536464E2E65ULL, 0x085EC6871E3CCF56ULL } }, /* XSUM_XXH128_withSecret_testdata[2776] */ + { 2777, 0x0000000000000000ULL, { 0xE9541F4387BD4A25ULL, 0x70D3552368F8C9EFULL } }, /* XSUM_XXH128_withSecret_testdata[2777] */ + { 2778, 0x0000000000000000ULL, { 0x9BFED168E94DDCA8ULL, 0xDA59ACC410F61FE8ULL } }, /* XSUM_XXH128_withSecret_testdata[2778] */ + { 2779, 0x0000000000000000ULL, { 0x9E7FCB267E30D861ULL, 0xFBBC513B86AFB459ULL } }, /* XSUM_XXH128_withSecret_testdata[2779] */ + { 2780, 0x0000000000000000ULL, { 0x702DF6FC825656DEULL, 0x414A17DDC6329DDFULL } }, /* XSUM_XXH128_withSecret_testdata[2780] */ + { 2781, 0x0000000000000000ULL, { 0xE707780A7986FAB8ULL, 0x06FDE4F77D6AD305ULL } }, /* XSUM_XXH128_withSecret_testdata[2781] */ + { 2782, 0x0000000000000000ULL, { 0xC03C37E26F0934B9ULL, 0xFA27883549536C19ULL } }, /* XSUM_XXH128_withSecret_testdata[2782] */ + { 2783, 0x0000000000000000ULL, { 0xA09B4C7DC5CA5A3FULL, 0x640A2CD54E061F71ULL } }, /* XSUM_XXH128_withSecret_testdata[2783] */ + { 2784, 0x0000000000000000ULL, { 0xFC1E02A96E3343CCULL, 0x01274CF66488C7C9ULL } }, /* XSUM_XXH128_withSecret_testdata[2784] */ + { 2785, 0x0000000000000000ULL, { 0x24D2C545F6E3E6BEULL, 0xFBF51CEE009EA03AULL } }, /* XSUM_XXH128_withSecret_testdata[2785] */ + { 2786, 0x0000000000000000ULL, { 0x8AFEB9BBFB72540DULL, 0xBAC96AA6A1FF468CULL } }, /* XSUM_XXH128_withSecret_testdata[2786] */ + { 2787, 0x0000000000000000ULL, { 0xC4E33683C40A9E77ULL, 0x674E3A9F97139D37ULL } }, /* XSUM_XXH128_withSecret_testdata[2787] */ + { 2788, 0x0000000000000000ULL, { 0xEE25F588F432B1ADULL, 0xED7D7F4A2A6EFFC9ULL } }, /* XSUM_XXH128_withSecret_testdata[2788] */ + { 2789, 0x0000000000000000ULL, { 0xF9ED1427FE79DF11ULL, 0x7391B5B3F39E1EC1ULL } }, /* XSUM_XXH128_withSecret_testdata[2789] */ + { 2790, 0x0000000000000000ULL, { 0x0A22E09ED079E537ULL, 0x613BEFA3D3A4A39DULL } }, /* XSUM_XXH128_withSecret_testdata[2790] */ + { 2791, 0x0000000000000000ULL, { 0xE999A877D8EC41FDULL, 0x0A5CECA84D2C866CULL } }, /* XSUM_XXH128_withSecret_testdata[2791] */ + { 2792, 0x0000000000000000ULL, { 0x1FB3987DDC9EBB52ULL, 0xCD3FCDF31068623CULL } }, /* XSUM_XXH128_withSecret_testdata[2792] */ + { 2793, 0x0000000000000000ULL, { 0x9FF55CAB0FB3D20BULL, 0x96EDFD793C8D1C35ULL } }, /* XSUM_XXH128_withSecret_testdata[2793] */ + { 2794, 0x0000000000000000ULL, { 0x36DCFAEE4C766E66ULL, 0xC628788A610014CFULL } }, /* XSUM_XXH128_withSecret_testdata[2794] */ + { 2795, 0x0000000000000000ULL, { 0xD7BC29A3A977EA17ULL, 0x4372185EAD012721ULL } }, /* XSUM_XXH128_withSecret_testdata[2795] */ + { 2796, 0x0000000000000000ULL, { 0x5377D82B7C001FC2ULL, 0xF337DB5A2B6D2EEEULL } }, /* XSUM_XXH128_withSecret_testdata[2796] */ + { 2797, 0x0000000000000000ULL, { 0x5561318FC103405DULL, 0x05AE944B06B3BD6EULL } }, /* XSUM_XXH128_withSecret_testdata[2797] */ + { 2798, 0x0000000000000000ULL, { 0xEEB4E2A60F230FBFULL, 0xD21DAE61EED103B1ULL } }, /* XSUM_XXH128_withSecret_testdata[2798] */ + { 2799, 0x0000000000000000ULL, { 0x8BDB1E653E8A49C3ULL, 0x5F76C7256C26C453ULL } }, /* XSUM_XXH128_withSecret_testdata[2799] */ + { 2800, 0x0000000000000000ULL, { 0x12A204BF81E34B69ULL, 0xE261EEBC41A73CC9ULL } }, /* XSUM_XXH128_withSecret_testdata[2800] */ + { 2801, 0x0000000000000000ULL, { 0xCC3D2BA4D7D7005CULL, 0x399A67278FDBB166ULL } }, /* XSUM_XXH128_withSecret_testdata[2801] */ + { 2802, 0x0000000000000000ULL, { 0x051EFE66635C5537ULL, 0x619ED17661062B40ULL } }, /* XSUM_XXH128_withSecret_testdata[2802] */ + { 2803, 0x0000000000000000ULL, { 0x7C95EF8AE5C78FCFULL, 0x45D0345AB7BA7855ULL } }, /* XSUM_XXH128_withSecret_testdata[2803] */ + { 2804, 0x0000000000000000ULL, { 0x9C432F611839A1EBULL, 0x5D5BBD411DB73A68ULL } }, /* XSUM_XXH128_withSecret_testdata[2804] */ + { 2805, 0x0000000000000000ULL, { 0x6679AEABC3ADF699ULL, 0x3EDC36B9ED1AD10FULL } }, /* XSUM_XXH128_withSecret_testdata[2805] */ + { 2806, 0x0000000000000000ULL, { 0x02D753654FE918E9ULL, 0x0CFA5776DC6D3779ULL } }, /* XSUM_XXH128_withSecret_testdata[2806] */ + { 2807, 0x0000000000000000ULL, { 0x210F9D87A85522C4ULL, 0xAB732C7C2FCB885AULL } }, /* XSUM_XXH128_withSecret_testdata[2807] */ + { 2808, 0x0000000000000000ULL, { 0xB0CE9CFB1FEF7927ULL, 0x16CD09AFC2FB1064ULL } }, /* XSUM_XXH128_withSecret_testdata[2808] */ + { 2809, 0x0000000000000000ULL, { 0x8C2D9AF242C9863BULL, 0xC1A38FDBE71116ECULL } }, /* XSUM_XXH128_withSecret_testdata[2809] */ + { 2810, 0x0000000000000000ULL, { 0xE0FF20BC9CE0A8E5ULL, 0x537BEB8898779262ULL } }, /* XSUM_XXH128_withSecret_testdata[2810] */ + { 2811, 0x0000000000000000ULL, { 0x3534E1CE731A2E86ULL, 0x07C315D2DC7C22CAULL } }, /* XSUM_XXH128_withSecret_testdata[2811] */ + { 2812, 0x0000000000000000ULL, { 0xA26DF2A499A9871EULL, 0x3D8EF73A4F86ABE3ULL } }, /* XSUM_XXH128_withSecret_testdata[2812] */ + { 2813, 0x0000000000000000ULL, { 0x9F4B4AB7255B02B9ULL, 0x89D8972FC5EC2BD3ULL } }, /* XSUM_XXH128_withSecret_testdata[2813] */ + { 2814, 0x0000000000000000ULL, { 0xBCAEBE57332E22F9ULL, 0x0F080C75156DCAC0ULL } }, /* XSUM_XXH128_withSecret_testdata[2814] */ + { 2815, 0x0000000000000000ULL, { 0xE6277102A50222ECULL, 0x63D31D7E18F03A1DULL } }, /* XSUM_XXH128_withSecret_testdata[2815] */ + { 2816, 0x0000000000000000ULL, { 0x999C2EB9E577279AULL, 0x94030A283E532786ULL } }, /* XSUM_XXH128_withSecret_testdata[2816] */ + { 2817, 0x0000000000000000ULL, { 0x29C1DC459C9130C2ULL, 0xE271A886C0087604ULL } }, /* XSUM_XXH128_withSecret_testdata[2817] */ + { 2818, 0x0000000000000000ULL, { 0xC1CAC38ED190EE18ULL, 0xA7B040EA4A24F358ULL } }, /* XSUM_XXH128_withSecret_testdata[2818] */ + { 2819, 0x0000000000000000ULL, { 0x9B1350B1B96661A2ULL, 0xEC301A29E403201BULL } }, /* XSUM_XXH128_withSecret_testdata[2819] */ + { 2820, 0x0000000000000000ULL, { 0x71CAED77C7200A2BULL, 0x83951748BEEE03EDULL } }, /* XSUM_XXH128_withSecret_testdata[2820] */ + { 2821, 0x0000000000000000ULL, { 0xB2EB0F1B367D1F1CULL, 0x4458908E33CA2DB8ULL } }, /* XSUM_XXH128_withSecret_testdata[2821] */ + { 2822, 0x0000000000000000ULL, { 0x705227E5AA6724C3ULL, 0x31BE77801492635CULL } }, /* XSUM_XXH128_withSecret_testdata[2822] */ + { 2823, 0x0000000000000000ULL, { 0xD4774A063460F910ULL, 0xDA012FF9764B9145ULL } }, /* XSUM_XXH128_withSecret_testdata[2823] */ + { 2824, 0x0000000000000000ULL, { 0xF32D1692780E6408ULL, 0x7153F476A5181737ULL } }, /* XSUM_XXH128_withSecret_testdata[2824] */ + { 2825, 0x0000000000000000ULL, { 0xB73D40295D5D4EC4ULL, 0xBD670FBB2ED83982ULL } }, /* XSUM_XXH128_withSecret_testdata[2825] */ + { 2826, 0x0000000000000000ULL, { 0x91240DFD2CA34842ULL, 0xF3575ED67908BE42ULL } }, /* XSUM_XXH128_withSecret_testdata[2826] */ + { 2827, 0x0000000000000000ULL, { 0x50220D292F064558ULL, 0xACE4B38E81D57AC7ULL } }, /* XSUM_XXH128_withSecret_testdata[2827] */ + { 2828, 0x0000000000000000ULL, { 0x7126AB3CAA1CBA42ULL, 0x2401B6F4EBBED59AULL } }, /* XSUM_XXH128_withSecret_testdata[2828] */ + { 2829, 0x0000000000000000ULL, { 0x039BC018490153BFULL, 0x28FA131772F3F59AULL } }, /* XSUM_XXH128_withSecret_testdata[2829] */ + { 2830, 0x0000000000000000ULL, { 0x39C5942416D59D64ULL, 0xC91FAD840EEA942EULL } }, /* XSUM_XXH128_withSecret_testdata[2830] */ + { 2831, 0x0000000000000000ULL, { 0xD1A57EE78B392178ULL, 0xBA88D2996FD65527ULL } }, /* XSUM_XXH128_withSecret_testdata[2831] */ + { 2832, 0x0000000000000000ULL, { 0xE50A80674449DB42ULL, 0xEFF34B09BDB6C2E3ULL } }, /* XSUM_XXH128_withSecret_testdata[2832] */ + { 2833, 0x0000000000000000ULL, { 0x7719C3795D06E89CULL, 0xDA9A6DC6B889D9B3ULL } }, /* XSUM_XXH128_withSecret_testdata[2833] */ + { 2834, 0x0000000000000000ULL, { 0x4A739CBF8E891946ULL, 0xBA0F2202ADE13344ULL } }, /* XSUM_XXH128_withSecret_testdata[2834] */ + { 2835, 0x0000000000000000ULL, { 0x6D330BD9B1BF21E6ULL, 0x5E7ECAF28334198EULL } }, /* XSUM_XXH128_withSecret_testdata[2835] */ + { 2836, 0x0000000000000000ULL, { 0x9E5BB469D8D97558ULL, 0xA4AF2E27D6EE9702ULL } }, /* XSUM_XXH128_withSecret_testdata[2836] */ + { 2837, 0x0000000000000000ULL, { 0x83BADC427E8FF272ULL, 0xAE41154C5776E1F4ULL } }, /* XSUM_XXH128_withSecret_testdata[2837] */ + { 2838, 0x0000000000000000ULL, { 0x46B3AE7CEBB9A538ULL, 0xE82F76114D71A5D8ULL } }, /* XSUM_XXH128_withSecret_testdata[2838] */ + { 2839, 0x0000000000000000ULL, { 0x425119385FAF41FDULL, 0xC75AC30EBDBC4DE0ULL } }, /* XSUM_XXH128_withSecret_testdata[2839] */ + { 2840, 0x0000000000000000ULL, { 0xF4B2C887B8BE31DCULL, 0x43FD65B44B25ADC1ULL } }, /* XSUM_XXH128_withSecret_testdata[2840] */ + { 2841, 0x0000000000000000ULL, { 0xF2756DFC7B95624AULL, 0x849038BB5BA2B151ULL } }, /* XSUM_XXH128_withSecret_testdata[2841] */ + { 2842, 0x0000000000000000ULL, { 0x3ECEFC1A76C19E67ULL, 0x96A61BB8CF6B2063ULL } }, /* XSUM_XXH128_withSecret_testdata[2842] */ + { 2843, 0x0000000000000000ULL, { 0xCD7C55019E788D6CULL, 0xEC6BE0F3ABF4B663ULL } }, /* XSUM_XXH128_withSecret_testdata[2843] */ + { 2844, 0x0000000000000000ULL, { 0x3DD559ACBFD56CC2ULL, 0xF1AB070CF9C3B66EULL } }, /* XSUM_XXH128_withSecret_testdata[2844] */ + { 2845, 0x0000000000000000ULL, { 0x6D469F7989A711A5ULL, 0x326519EFFEC75C10ULL } }, /* XSUM_XXH128_withSecret_testdata[2845] */ + { 2846, 0x0000000000000000ULL, { 0xDFDBE44FC2F9ED49ULL, 0x2AF1672FAB30E9EFULL } }, /* XSUM_XXH128_withSecret_testdata[2846] */ + { 2847, 0x0000000000000000ULL, { 0x3625AAB3C169708BULL, 0xB757E9734DE62070ULL } }, /* XSUM_XXH128_withSecret_testdata[2847] */ + { 2848, 0x0000000000000000ULL, { 0x35C3F7C6D3486020ULL, 0xDBC5A0778D1B8E49ULL } }, /* XSUM_XXH128_withSecret_testdata[2848] */ + { 2849, 0x0000000000000000ULL, { 0x0BEFA2238E9365ADULL, 0xC9110674E098BA2FULL } }, /* XSUM_XXH128_withSecret_testdata[2849] */ + { 2850, 0x0000000000000000ULL, { 0x0696ABFA8C9BB130ULL, 0x4061945D2F811C14ULL } }, /* XSUM_XXH128_withSecret_testdata[2850] */ + { 2851, 0x0000000000000000ULL, { 0x5850A42F4E854EBEULL, 0xE546AD03265E7D58ULL } }, /* XSUM_XXH128_withSecret_testdata[2851] */ + { 2852, 0x0000000000000000ULL, { 0x10B415F2D678A86AULL, 0xF27C31B841A81682ULL } }, /* XSUM_XXH128_withSecret_testdata[2852] */ + { 2853, 0x0000000000000000ULL, { 0xD1C1749BE69AD494ULL, 0x624225C475FAB44CULL } }, /* XSUM_XXH128_withSecret_testdata[2853] */ + { 2854, 0x0000000000000000ULL, { 0xA46932A6C4B1953EULL, 0xA78DA5D0022AD392ULL } }, /* XSUM_XXH128_withSecret_testdata[2854] */ + { 2855, 0x0000000000000000ULL, { 0x88CB1FED07729FECULL, 0x42334F313D587CC1ULL } }, /* XSUM_XXH128_withSecret_testdata[2855] */ + { 2856, 0x0000000000000000ULL, { 0x3ADE9267084894AFULL, 0x1848C0465971E882ULL } }, /* XSUM_XXH128_withSecret_testdata[2856] */ + { 2857, 0x0000000000000000ULL, { 0xDF70FFEEB7F5DAE3ULL, 0x5C1F44F4A3B01975ULL } }, /* XSUM_XXH128_withSecret_testdata[2857] */ + { 2858, 0x0000000000000000ULL, { 0x02315C318359AFF1ULL, 0x2E8364EAF85C2E16ULL } }, /* XSUM_XXH128_withSecret_testdata[2858] */ + { 2859, 0x0000000000000000ULL, { 0x5B38CEEA2CB023C2ULL, 0xD6623926B7D0C3BAULL } }, /* XSUM_XXH128_withSecret_testdata[2859] */ + { 2860, 0x0000000000000000ULL, { 0x4C067A257B0B9D80ULL, 0x4C687223CA7D7780ULL } }, /* XSUM_XXH128_withSecret_testdata[2860] */ + { 2861, 0x0000000000000000ULL, { 0x0B1A088D92171A91ULL, 0x5B88944CC1780DADULL } }, /* XSUM_XXH128_withSecret_testdata[2861] */ + { 2862, 0x0000000000000000ULL, { 0xE009B2698AEEBADEULL, 0x3453DE95999E96F3ULL } }, /* XSUM_XXH128_withSecret_testdata[2862] */ + { 2863, 0x0000000000000000ULL, { 0x8924C02524FE7413ULL, 0x3953E9B7DE486826ULL } }, /* XSUM_XXH128_withSecret_testdata[2863] */ + { 2864, 0x0000000000000000ULL, { 0x34786BD34726328BULL, 0xACE4F5EA6D9C9A15ULL } }, /* XSUM_XXH128_withSecret_testdata[2864] */ + { 2865, 0x0000000000000000ULL, { 0x5D8F0CB1295702E6ULL, 0x7C89ED86C6ED7A43ULL } }, /* XSUM_XXH128_withSecret_testdata[2865] */ + { 2866, 0x0000000000000000ULL, { 0xEB2DA9C9F3DA673EULL, 0xDACD0078A95DEF26ULL } }, /* XSUM_XXH128_withSecret_testdata[2866] */ + { 2867, 0x0000000000000000ULL, { 0x5CA1165213EF818FULL, 0xC8AE563971462DF3ULL } }, /* XSUM_XXH128_withSecret_testdata[2867] */ + { 2868, 0x0000000000000000ULL, { 0x93C6848735D05D15ULL, 0xA05EEE84F5055072ULL } }, /* XSUM_XXH128_withSecret_testdata[2868] */ + { 2869, 0x0000000000000000ULL, { 0x8878647E504E661DULL, 0xFAFDB3BAEB604824ULL } }, /* XSUM_XXH128_withSecret_testdata[2869] */ + { 2870, 0x0000000000000000ULL, { 0x1D5F1DBEE675B24AULL, 0xE79A5180CB0489AAULL } }, /* XSUM_XXH128_withSecret_testdata[2870] */ + { 2871, 0x0000000000000000ULL, { 0x115D63E36B0F1FBEULL, 0xF32B582D71696058ULL } }, /* XSUM_XXH128_withSecret_testdata[2871] */ + { 2872, 0x0000000000000000ULL, { 0x4DF2F24A2E98D962ULL, 0x83C06402DC26488BULL } }, /* XSUM_XXH128_withSecret_testdata[2872] */ + { 2873, 0x0000000000000000ULL, { 0x3B1E3D0177F4B488ULL, 0xA58F4785F407F7F1ULL } }, /* XSUM_XXH128_withSecret_testdata[2873] */ + { 2874, 0x0000000000000000ULL, { 0x49658533C6146A5EULL, 0x24A912BFAD823575ULL } }, /* XSUM_XXH128_withSecret_testdata[2874] */ + { 2875, 0x0000000000000000ULL, { 0xB714BC9FFB355DB7ULL, 0x0F5C04B62C3E0763ULL } }, /* XSUM_XXH128_withSecret_testdata[2875] */ + { 2876, 0x0000000000000000ULL, { 0x5843138528F6CBD1ULL, 0x48F550495501BBA5ULL } }, /* XSUM_XXH128_withSecret_testdata[2876] */ + { 2877, 0x0000000000000000ULL, { 0x3493D0BFCFDEE423ULL, 0xA9071EE67A4F88A4ULL } }, /* XSUM_XXH128_withSecret_testdata[2877] */ + { 2878, 0x0000000000000000ULL, { 0xC6893D3EE31368A3ULL, 0xA0544222F32522BAULL } }, /* XSUM_XXH128_withSecret_testdata[2878] */ + { 2879, 0x0000000000000000ULL, { 0xB13736A51649E9CFULL, 0x1F618FFEA72FDFB9ULL } }, /* XSUM_XXH128_withSecret_testdata[2879] */ + { 2880, 0x0000000000000000ULL, { 0xB494AE6C2A905015ULL, 0x4E7123F7C6C38A20ULL } }, /* XSUM_XXH128_withSecret_testdata[2880] */ + { 2881, 0x0000000000000000ULL, { 0x27177CBAFBC37006ULL, 0x77E1BA94BB2EC1FFULL } }, /* XSUM_XXH128_withSecret_testdata[2881] */ + { 2882, 0x0000000000000000ULL, { 0x04A94338FE7B046DULL, 0x8C68615BC09E1B17ULL } }, /* XSUM_XXH128_withSecret_testdata[2882] */ + { 2883, 0x0000000000000000ULL, { 0x97630E06E0DFCEFEULL, 0x3E6217B0A1FF40F8ULL } }, /* XSUM_XXH128_withSecret_testdata[2883] */ + { 2884, 0x0000000000000000ULL, { 0xFD38D6319F3B28DBULL, 0x379360B0C8718E21ULL } }, /* XSUM_XXH128_withSecret_testdata[2884] */ + { 2885, 0x0000000000000000ULL, { 0x4EC1A9D59AC9AC98ULL, 0xE102CFED5E51E72DULL } }, /* XSUM_XXH128_withSecret_testdata[2885] */ + { 2886, 0x0000000000000000ULL, { 0x7710ECE049A1EE47ULL, 0x3B62886AEB531868ULL } }, /* XSUM_XXH128_withSecret_testdata[2886] */ + { 2887, 0x0000000000000000ULL, { 0x0E87931145CC74DEULL, 0xA088CDC03E780BD5ULL } }, /* XSUM_XXH128_withSecret_testdata[2887] */ + { 2888, 0x0000000000000000ULL, { 0x79C59FE86B852C41ULL, 0xAE6404152CE20C78ULL } }, /* XSUM_XXH128_withSecret_testdata[2888] */ + { 2889, 0x0000000000000000ULL, { 0x9FD3DFD399579356ULL, 0x0912745803125460ULL } }, /* XSUM_XXH128_withSecret_testdata[2889] */ + { 2890, 0x0000000000000000ULL, { 0x34B2D10D4B5421D7ULL, 0x0389DE791FE58305ULL } }, /* XSUM_XXH128_withSecret_testdata[2890] */ + { 2891, 0x0000000000000000ULL, { 0xD5E4579B474E464EULL, 0xF1ECB25E8BB8E6F4ULL } }, /* XSUM_XXH128_withSecret_testdata[2891] */ + { 2892, 0x0000000000000000ULL, { 0xF28C6770BFC26AC7ULL, 0x03A5A92B0723F64CULL } }, /* XSUM_XXH128_withSecret_testdata[2892] */ + { 2893, 0x0000000000000000ULL, { 0xD377046A26F17C89ULL, 0x97E4E413E8DF53C1ULL } }, /* XSUM_XXH128_withSecret_testdata[2893] */ + { 2894, 0x0000000000000000ULL, { 0xBD7E0363D136E7C8ULL, 0xDF7679B26E24B35BULL } }, /* XSUM_XXH128_withSecret_testdata[2894] */ + { 2895, 0x0000000000000000ULL, { 0x33A42E350F0D7A95ULL, 0xC0F6C2DDD1150182ULL } }, /* XSUM_XXH128_withSecret_testdata[2895] */ + { 2896, 0x0000000000000000ULL, { 0x692A55C8A2F34504ULL, 0x347C0EBEFEF05765ULL } }, /* XSUM_XXH128_withSecret_testdata[2896] */ + { 2897, 0x0000000000000000ULL, { 0x8243CD9917D5888AULL, 0xF9712260862159C0ULL } }, /* XSUM_XXH128_withSecret_testdata[2897] */ + { 2898, 0x0000000000000000ULL, { 0x85C34825497D544DULL, 0x897943C26B8CFACFULL } }, /* XSUM_XXH128_withSecret_testdata[2898] */ + { 2899, 0x0000000000000000ULL, { 0x1874C3A72EE520EFULL, 0xFD4FAF815CAC3FC7ULL } }, /* XSUM_XXH128_withSecret_testdata[2899] */ + { 2900, 0x0000000000000000ULL, { 0x6A2B9EF6A1B82F46ULL, 0x29FC0076A9E99C5FULL } }, /* XSUM_XXH128_withSecret_testdata[2900] */ + { 2901, 0x0000000000000000ULL, { 0xC1FA8FD25D5522E5ULL, 0x695FC3CD3A0EB9BEULL } }, /* XSUM_XXH128_withSecret_testdata[2901] */ + { 2902, 0x0000000000000000ULL, { 0xA46AEC4357A6A0A4ULL, 0x5507CD7A00628A73ULL } }, /* XSUM_XXH128_withSecret_testdata[2902] */ + { 2903, 0x0000000000000000ULL, { 0xA327142A63323D97ULL, 0x623FE423CC1E363DULL } }, /* XSUM_XXH128_withSecret_testdata[2903] */ + { 2904, 0x0000000000000000ULL, { 0x7F59130823574970ULL, 0xC6AD6A4D973A216DULL } }, /* XSUM_XXH128_withSecret_testdata[2904] */ + { 2905, 0x0000000000000000ULL, { 0xB7E62F19E6D0FDE6ULL, 0xCD949076DAA6092CULL } }, /* XSUM_XXH128_withSecret_testdata[2905] */ + { 2906, 0x0000000000000000ULL, { 0x32530270AC8581A2ULL, 0x96CBAAEA4B1DE3FEULL } }, /* XSUM_XXH128_withSecret_testdata[2906] */ + { 2907, 0x0000000000000000ULL, { 0xEA4C04EFF7300831ULL, 0xF856D98DB90CE71EULL } }, /* XSUM_XXH128_withSecret_testdata[2907] */ + { 2908, 0x0000000000000000ULL, { 0x3271E6E36689C35CULL, 0xE111362835518243ULL } }, /* XSUM_XXH128_withSecret_testdata[2908] */ + { 2909, 0x0000000000000000ULL, { 0xD80C86B0A79FB06BULL, 0x3BC052F03EE32D29ULL } }, /* XSUM_XXH128_withSecret_testdata[2909] */ + { 2910, 0x0000000000000000ULL, { 0x127ACC9F23D3DC82ULL, 0x9E3C79053244A530ULL } }, /* XSUM_XXH128_withSecret_testdata[2910] */ + { 2911, 0x0000000000000000ULL, { 0x1940C66BF858A647ULL, 0xC20E3422461116FCULL } }, /* XSUM_XXH128_withSecret_testdata[2911] */ + { 2912, 0x0000000000000000ULL, { 0x9AB8A8D48E03336DULL, 0xE6BDCF30B06CB241ULL } }, /* XSUM_XXH128_withSecret_testdata[2912] */ + { 2913, 0x0000000000000000ULL, { 0xF55386F445650D8CULL, 0xB3FF0CEC13EF7D72ULL } }, /* XSUM_XXH128_withSecret_testdata[2913] */ + { 2914, 0x0000000000000000ULL, { 0x30C30B5A9CCBE11FULL, 0x32212639E893B79EULL } }, /* XSUM_XXH128_withSecret_testdata[2914] */ + { 2915, 0x0000000000000000ULL, { 0xC9BE00FC4AD2E7F4ULL, 0x93782E55A3D67FFEULL } }, /* XSUM_XXH128_withSecret_testdata[2915] */ + { 2916, 0x0000000000000000ULL, { 0x17CDED5911477A60ULL, 0x9458B9CF12431CE4ULL } }, /* XSUM_XXH128_withSecret_testdata[2916] */ + { 2917, 0x0000000000000000ULL, { 0xA75B0B9F5608BDD8ULL, 0xBE78590BD81C371CULL } }, /* XSUM_XXH128_withSecret_testdata[2917] */ + { 2918, 0x0000000000000000ULL, { 0x8D037984687F5942ULL, 0xCABC08FBD412F9BBULL } }, /* XSUM_XXH128_withSecret_testdata[2918] */ + { 2919, 0x0000000000000000ULL, { 0x2A5D8EEFEF26153CULL, 0xD5985B7F7589B7E5ULL } }, /* XSUM_XXH128_withSecret_testdata[2919] */ + { 2920, 0x0000000000000000ULL, { 0x2BFAB5944FE9C364ULL, 0x9FD8C24BF6FE5150ULL } }, /* XSUM_XXH128_withSecret_testdata[2920] */ + { 2921, 0x0000000000000000ULL, { 0x89423403078D740EULL, 0xC9B9FF919E6ED1AAULL } }, /* XSUM_XXH128_withSecret_testdata[2921] */ + { 2922, 0x0000000000000000ULL, { 0xAC3D0A9B2BD84C8BULL, 0x4B0B8E325D800192ULL } }, /* XSUM_XXH128_withSecret_testdata[2922] */ + { 2923, 0x0000000000000000ULL, { 0xFCCF992B8EE26854ULL, 0x975603340F7552F9ULL } }, /* XSUM_XXH128_withSecret_testdata[2923] */ + { 2924, 0x0000000000000000ULL, { 0x1A84D6CD10EAC49EULL, 0xE111D29E78842EF8ULL } }, /* XSUM_XXH128_withSecret_testdata[2924] */ + { 2925, 0x0000000000000000ULL, { 0xB52E848D2238CC49ULL, 0x7145CCE44ED91D47ULL } }, /* XSUM_XXH128_withSecret_testdata[2925] */ + { 2926, 0x0000000000000000ULL, { 0x1E657C6CC7390AA9ULL, 0x5DE1A8B53E778CEBULL } }, /* XSUM_XXH128_withSecret_testdata[2926] */ + { 2927, 0x0000000000000000ULL, { 0xFD04D7D199782140ULL, 0x225D392280CAD8F7ULL } }, /* XSUM_XXH128_withSecret_testdata[2927] */ + { 2928, 0x0000000000000000ULL, { 0x0D646EDD4EA8E0B5ULL, 0x758C7A51FD785A88ULL } }, /* XSUM_XXH128_withSecret_testdata[2928] */ + { 2929, 0x0000000000000000ULL, { 0xFA68DF886EEED4BCULL, 0xC7A695E90661D468ULL } }, /* XSUM_XXH128_withSecret_testdata[2929] */ + { 2930, 0x0000000000000000ULL, { 0xB82D60F9EC312618ULL, 0xED58448E66F8027FULL } }, /* XSUM_XXH128_withSecret_testdata[2930] */ + { 2931, 0x0000000000000000ULL, { 0x3B745EB2D5C98654ULL, 0x61BAC6ECE4157B86ULL } }, /* XSUM_XXH128_withSecret_testdata[2931] */ + { 2932, 0x0000000000000000ULL, { 0xB130D4CDF9F55D0AULL, 0xC410E449912CBCE4ULL } }, /* XSUM_XXH128_withSecret_testdata[2932] */ + { 2933, 0x0000000000000000ULL, { 0xA66A35D31AE1F395ULL, 0xD5511BB694A4F9F0ULL } }, /* XSUM_XXH128_withSecret_testdata[2933] */ + { 2934, 0x0000000000000000ULL, { 0x9FBB6F77F3A85EBEULL, 0xD2817CBB3F222201ULL } }, /* XSUM_XXH128_withSecret_testdata[2934] */ + { 2935, 0x0000000000000000ULL, { 0x3C3AA7EE1BB221D1ULL, 0xCB58168C79355D09ULL } }, /* XSUM_XXH128_withSecret_testdata[2935] */ + { 2936, 0x0000000000000000ULL, { 0xDA79B8AE9B825249ULL, 0x68AAA4747C9D4632ULL } }, /* XSUM_XXH128_withSecret_testdata[2936] */ + { 2937, 0x0000000000000000ULL, { 0x0FDFEF32A59627A6ULL, 0xE30A76AAF8D4B80BULL } }, /* XSUM_XXH128_withSecret_testdata[2937] */ + { 2938, 0x0000000000000000ULL, { 0x706F4AF597DBE5A1ULL, 0xBDB95B87111C6E8AULL } }, /* XSUM_XXH128_withSecret_testdata[2938] */ + { 2939, 0x0000000000000000ULL, { 0xD91F82F858438339ULL, 0xD2D7A74CE8B86169ULL } }, /* XSUM_XXH128_withSecret_testdata[2939] */ + { 2940, 0x0000000000000000ULL, { 0x86E840A5F08BDC1CULL, 0x8FC2768578FCEC35ULL } }, /* XSUM_XXH128_withSecret_testdata[2940] */ + { 2941, 0x0000000000000000ULL, { 0xE9BCEA2E8EAE5511ULL, 0x32EC18B57EE488D8ULL } }, /* XSUM_XXH128_withSecret_testdata[2941] */ + { 2942, 0x0000000000000000ULL, { 0x49482DD0A8A66DFDULL, 0x22933D1BFF50842BULL } }, /* XSUM_XXH128_withSecret_testdata[2942] */ + { 2943, 0x0000000000000000ULL, { 0x620B9D9636DD8BFEULL, 0xB2CF0BDEC5375675ULL } }, /* XSUM_XXH128_withSecret_testdata[2943] */ + { 2944, 0x0000000000000000ULL, { 0xBB78B6D00515DC1BULL, 0xE46116D21BD9C87CULL } }, /* XSUM_XXH128_withSecret_testdata[2944] */ + { 2945, 0x0000000000000000ULL, { 0x47EEEA42E2A9FDB3ULL, 0xBCCA5E21B87F42E9ULL } }, /* XSUM_XXH128_withSecret_testdata[2945] */ + { 2946, 0x0000000000000000ULL, { 0x11FB56CA0236EE6FULL, 0x00A5A02E296B9BA8ULL } }, /* XSUM_XXH128_withSecret_testdata[2946] */ + { 2947, 0x0000000000000000ULL, { 0xAD90BD39650625DDULL, 0xD963F7B03CB509E3ULL } }, /* XSUM_XXH128_withSecret_testdata[2947] */ + { 2948, 0x0000000000000000ULL, { 0x094C3B0244E78655ULL, 0xDFD4866E730995F7ULL } }, /* XSUM_XXH128_withSecret_testdata[2948] */ + { 2949, 0x0000000000000000ULL, { 0x11231A6A714E2F35ULL, 0x42BF88FA4DB0C0C9ULL } }, /* XSUM_XXH128_withSecret_testdata[2949] */ + { 2950, 0x0000000000000000ULL, { 0xFEC0654F83BB9C8DULL, 0xC7AA20F5A8A4EC9FULL } }, /* XSUM_XXH128_withSecret_testdata[2950] */ + { 2951, 0x0000000000000000ULL, { 0x295E1F606E5F54C1ULL, 0x6A2A3E0AEBD5EE97ULL } }, /* XSUM_XXH128_withSecret_testdata[2951] */ + { 2952, 0x0000000000000000ULL, { 0x0FB5E42BE9E6E710ULL, 0x593917197BCC5ADCULL } }, /* XSUM_XXH128_withSecret_testdata[2952] */ + { 2953, 0x0000000000000000ULL, { 0xC41F6CC6D803B236ULL, 0xA9871CCE5FAEEFE1ULL } }, /* XSUM_XXH128_withSecret_testdata[2953] */ + { 2954, 0x0000000000000000ULL, { 0xDA4D34D846086CC2ULL, 0xD2C4F599405FDF28ULL } }, /* XSUM_XXH128_withSecret_testdata[2954] */ + { 2955, 0x0000000000000000ULL, { 0xB2B2C9CA61D494E1ULL, 0xDC60CC615AA095DEULL } }, /* XSUM_XXH128_withSecret_testdata[2955] */ + { 2956, 0x0000000000000000ULL, { 0x82F0178E124F477CULL, 0x93EFE09338DDF453ULL } }, /* XSUM_XXH128_withSecret_testdata[2956] */ + { 2957, 0x0000000000000000ULL, { 0x3FE22F0919C3D383ULL, 0x66AEDD347258FBEAULL } }, /* XSUM_XXH128_withSecret_testdata[2957] */ + { 2958, 0x0000000000000000ULL, { 0x781120F2D102450DULL, 0x8A25640B0F0FDF0FULL } }, /* XSUM_XXH128_withSecret_testdata[2958] */ + { 2959, 0x0000000000000000ULL, { 0x4581B8E8BA4B8E15ULL, 0x29F4C5621B26B30DULL } }, /* XSUM_XXH128_withSecret_testdata[2959] */ + { 2960, 0x0000000000000000ULL, { 0x5EF8BC6F614A1E38ULL, 0x7D5447B22A978BFFULL } }, /* XSUM_XXH128_withSecret_testdata[2960] */ + { 2961, 0x0000000000000000ULL, { 0x5584A7DA5704B8A5ULL, 0x02930EA7FF3DC485ULL } }, /* XSUM_XXH128_withSecret_testdata[2961] */ + { 2962, 0x0000000000000000ULL, { 0x410E213C34BED8DAULL, 0x5E7570F3217B7B71ULL } }, /* XSUM_XXH128_withSecret_testdata[2962] */ + { 2963, 0x0000000000000000ULL, { 0x3C06473A20355DF1ULL, 0x34AFDC7B3E28A78AULL } }, /* XSUM_XXH128_withSecret_testdata[2963] */ + { 2964, 0x0000000000000000ULL, { 0x46A4D368431E6F27ULL, 0x1B30EE5D7FF35A18ULL } }, /* XSUM_XXH128_withSecret_testdata[2964] */ + { 2965, 0x0000000000000000ULL, { 0x0DAC2A7183236D55ULL, 0x2B314CE9FAADCBD0ULL } }, /* XSUM_XXH128_withSecret_testdata[2965] */ + { 2966, 0x0000000000000000ULL, { 0x84E0448ECF502BD7ULL, 0x6629CB497EDFD10DULL } }, /* XSUM_XXH128_withSecret_testdata[2966] */ + { 2967, 0x0000000000000000ULL, { 0x3E3B324F1D7A67C0ULL, 0xFA4652E5EE83C7A7ULL } }, /* XSUM_XXH128_withSecret_testdata[2967] */ + { 2968, 0x0000000000000000ULL, { 0x752D76BA546789B5ULL, 0xA06669C33BA99877ULL } }, /* XSUM_XXH128_withSecret_testdata[2968] */ + { 2969, 0x0000000000000000ULL, { 0x6AF4416ADA64A6E8ULL, 0x09A10D8B79EE68A9ULL } }, /* XSUM_XXH128_withSecret_testdata[2969] */ + { 2970, 0x0000000000000000ULL, { 0xE51908F69CE5CB3CULL, 0xB7BD6D63B43ABFDCULL } }, /* XSUM_XXH128_withSecret_testdata[2970] */ + { 2971, 0x0000000000000000ULL, { 0x07840A67B1220907ULL, 0x285B56C604BBB2FEULL } }, /* XSUM_XXH128_withSecret_testdata[2971] */ + { 2972, 0x0000000000000000ULL, { 0x9726EC41E319AE79ULL, 0x841AE62BA4651003ULL } }, /* XSUM_XXH128_withSecret_testdata[2972] */ + { 2973, 0x0000000000000000ULL, { 0xB5AA05B6E09E6D52ULL, 0xAB6F24204E18D1B2ULL } }, /* XSUM_XXH128_withSecret_testdata[2973] */ + { 2974, 0x0000000000000000ULL, { 0xDEE4714EFE0D7D19ULL, 0xD316A184301F4E43ULL } }, /* XSUM_XXH128_withSecret_testdata[2974] */ + { 2975, 0x0000000000000000ULL, { 0x8683B9609AD2BAD8ULL, 0x7E071D0D4B5259F4ULL } }, /* XSUM_XXH128_withSecret_testdata[2975] */ + { 2976, 0x0000000000000000ULL, { 0xE597E8277DB17FEEULL, 0x67B4E6CE07ED61E4ULL } }, /* XSUM_XXH128_withSecret_testdata[2976] */ + { 2977, 0x0000000000000000ULL, { 0x8B9B29ACB557BFDFULL, 0x1D53E43945C0CCA8ULL } }, /* XSUM_XXH128_withSecret_testdata[2977] */ + { 2978, 0x0000000000000000ULL, { 0x6E5FD99A3502572CULL, 0x29A082B3C24523BEULL } }, /* XSUM_XXH128_withSecret_testdata[2978] */ + { 2979, 0x0000000000000000ULL, { 0x5A98A81AF673BA24ULL, 0x11DB4DE8A933CE38ULL } }, /* XSUM_XXH128_withSecret_testdata[2979] */ + { 2980, 0x0000000000000000ULL, { 0x63F598A7EA196E5CULL, 0x0B16F1B590472799ULL } }, /* XSUM_XXH128_withSecret_testdata[2980] */ + { 2981, 0x0000000000000000ULL, { 0x4313CB47CA9D3AE4ULL, 0xBB0C2418AF1CFA3FULL } }, /* XSUM_XXH128_withSecret_testdata[2981] */ + { 2982, 0x0000000000000000ULL, { 0x7218A7ABC1937665ULL, 0xA615D56725ED7A77ULL } }, /* XSUM_XXH128_withSecret_testdata[2982] */ + { 2983, 0x0000000000000000ULL, { 0xF156732278FFF3CFULL, 0x141D72505D747FB6ULL } }, /* XSUM_XXH128_withSecret_testdata[2983] */ + { 2984, 0x0000000000000000ULL, { 0xF7CC0418DC1C114BULL, 0xA6E4A2C5BE30FDCDULL } }, /* XSUM_XXH128_withSecret_testdata[2984] */ + { 2985, 0x0000000000000000ULL, { 0x0E0CA08644DD54C2ULL, 0x8FCA55D6A08154C9ULL } }, /* XSUM_XXH128_withSecret_testdata[2985] */ + { 2986, 0x0000000000000000ULL, { 0xAA74DEDCB1A81017ULL, 0x9EB93E52AA0D9A06ULL } }, /* XSUM_XXH128_withSecret_testdata[2986] */ + { 2987, 0x0000000000000000ULL, { 0xF255D515D5E9EB26ULL, 0x89FDDDB988C09719ULL } }, /* XSUM_XXH128_withSecret_testdata[2987] */ + { 2988, 0x0000000000000000ULL, { 0x542F350CDA095756ULL, 0x287B1B213CA1838CULL } }, /* XSUM_XXH128_withSecret_testdata[2988] */ + { 2989, 0x0000000000000000ULL, { 0x7BDDF1C94E03824FULL, 0x975342BFF057BFA2ULL } }, /* XSUM_XXH128_withSecret_testdata[2989] */ + { 2990, 0x0000000000000000ULL, { 0x9AE455D15AABC880ULL, 0x846C6A7C95A5CFA5ULL } }, /* XSUM_XXH128_withSecret_testdata[2990] */ + { 2991, 0x0000000000000000ULL, { 0x33AB3BE4A89D3625ULL, 0x1806651E4B11A0B4ULL } }, /* XSUM_XXH128_withSecret_testdata[2991] */ + { 2992, 0x0000000000000000ULL, { 0x6C63E6CF94383962ULL, 0xBAC3CBD7BA57D9B5ULL } }, /* XSUM_XXH128_withSecret_testdata[2992] */ + { 2993, 0x0000000000000000ULL, { 0x8EDCD05B919EE191ULL, 0xEDC94F02B4F079FBULL } }, /* XSUM_XXH128_withSecret_testdata[2993] */ + { 2994, 0x0000000000000000ULL, { 0xF67E7C8B2C9A4669ULL, 0xA974160CB86B7B92ULL } }, /* XSUM_XXH128_withSecret_testdata[2994] */ + { 2995, 0x0000000000000000ULL, { 0x39E4266FFC536EB8ULL, 0x52399BE0CD8C3B46ULL } }, /* XSUM_XXH128_withSecret_testdata[2995] */ + { 2996, 0x0000000000000000ULL, { 0x829ACE387570537AULL, 0xE0686A7ED23863A6ULL } }, /* XSUM_XXH128_withSecret_testdata[2996] */ + { 2997, 0x0000000000000000ULL, { 0xDCFD4A34A8E6BD26ULL, 0xB239F0035E57AF90ULL } }, /* XSUM_XXH128_withSecret_testdata[2997] */ + { 2998, 0x0000000000000000ULL, { 0xEE34D3DCA438A74FULL, 0x5753FDE4914B7A9BULL } }, /* XSUM_XXH128_withSecret_testdata[2998] */ + { 2999, 0x0000000000000000ULL, { 0x060D44F7CDD5904EULL, 0xEF0C13A3A8A50EA4ULL } }, /* XSUM_XXH128_withSecret_testdata[2999] */ + { 3000, 0x0000000000000000ULL, { 0x1250C48602594CBEULL, 0xE32402D864067C66ULL } }, /* XSUM_XXH128_withSecret_testdata[3000] */ + { 3001, 0x0000000000000000ULL, { 0x75B1B05BD9768D80ULL, 0x1D0780B56A55EC06ULL } }, /* XSUM_XXH128_withSecret_testdata[3001] */ + { 3002, 0x0000000000000000ULL, { 0x8E1D4A3E93349F6AULL, 0x87A8CB888B2949A2ULL } }, /* XSUM_XXH128_withSecret_testdata[3002] */ + { 3003, 0x0000000000000000ULL, { 0x317D33B5C2F3B1DFULL, 0xC8DC443B3821037EULL } }, /* XSUM_XXH128_withSecret_testdata[3003] */ + { 3004, 0x0000000000000000ULL, { 0xFD4650A34245B96EULL, 0x5E6879056903F236ULL } }, /* XSUM_XXH128_withSecret_testdata[3004] */ + { 3005, 0x0000000000000000ULL, { 0x08BAA1559B83D5EBULL, 0xFA07FA674281FFE6ULL } }, /* XSUM_XXH128_withSecret_testdata[3005] */ + { 3006, 0x0000000000000000ULL, { 0xBF782E901A3A9A8DULL, 0xEF40659EE39AB105ULL } }, /* XSUM_XXH128_withSecret_testdata[3006] */ + { 3007, 0x0000000000000000ULL, { 0xC5931ED0ABC4D964ULL, 0x2D0FBE025210507FULL } }, /* XSUM_XXH128_withSecret_testdata[3007] */ + { 3008, 0x0000000000000000ULL, { 0x0BF450B3BF31E586ULL, 0x98E06D11FADF46C6ULL } }, /* XSUM_XXH128_withSecret_testdata[3008] */ + { 3009, 0x0000000000000000ULL, { 0x4DBE698BD5B96DA0ULL, 0x84CC18798691EA23ULL } }, /* XSUM_XXH128_withSecret_testdata[3009] */ + { 3010, 0x0000000000000000ULL, { 0x3E241D5756D85033ULL, 0xC7C2E0D480C50E47ULL } }, /* XSUM_XXH128_withSecret_testdata[3010] */ + { 3011, 0x0000000000000000ULL, { 0xD8D8FCB6AD17DB65ULL, 0x09342E0BCF49DCA6ULL } }, /* XSUM_XXH128_withSecret_testdata[3011] */ + { 3012, 0x0000000000000000ULL, { 0x979038EEB6FDBB23ULL, 0x12654886AD2BAED5ULL } }, /* XSUM_XXH128_withSecret_testdata[3012] */ + { 3013, 0x0000000000000000ULL, { 0x17C29623ACB086D2ULL, 0x1269850B4B37DD84ULL } }, /* XSUM_XXH128_withSecret_testdata[3013] */ + { 3014, 0x0000000000000000ULL, { 0x3398BF7A94E8965EULL, 0x01F374FDA615B592ULL } }, /* XSUM_XXH128_withSecret_testdata[3014] */ + { 3015, 0x0000000000000000ULL, { 0x0AD193A4EA7A18E5ULL, 0x4049975CEA370633ULL } }, /* XSUM_XXH128_withSecret_testdata[3015] */ + { 3016, 0x0000000000000000ULL, { 0xF209082DA597AD24ULL, 0x7B30C5A979CFB88FULL } }, /* XSUM_XXH128_withSecret_testdata[3016] */ + { 3017, 0x0000000000000000ULL, { 0x8AAD1032243F99E4ULL, 0x3FDEE09A9A2C2A9AULL } }, /* XSUM_XXH128_withSecret_testdata[3017] */ + { 3018, 0x0000000000000000ULL, { 0xA94CDBDACDF7A210ULL, 0x960E5D3F0B0D2F33ULL } }, /* XSUM_XXH128_withSecret_testdata[3018] */ + { 3019, 0x0000000000000000ULL, { 0x6B62D320328C5AE1ULL, 0x48C678A550147CE3ULL } }, /* XSUM_XXH128_withSecret_testdata[3019] */ + { 3020, 0x0000000000000000ULL, { 0xDA5E557F5E28DB8AULL, 0x6A6AF9A3B21AA38FULL } }, /* XSUM_XXH128_withSecret_testdata[3020] */ + { 3021, 0x0000000000000000ULL, { 0xDAF472C7EAA50F9DULL, 0x8CE00429A969019DULL } }, /* XSUM_XXH128_withSecret_testdata[3021] */ + { 3022, 0x0000000000000000ULL, { 0xEF7DC5BDD4EFB484ULL, 0x8AC97E660C6EE823ULL } }, /* XSUM_XXH128_withSecret_testdata[3022] */ + { 3023, 0x0000000000000000ULL, { 0x4273AEBD8F95C306ULL, 0xA9A6F5F1150AE0C5ULL } }, /* XSUM_XXH128_withSecret_testdata[3023] */ + { 3024, 0x0000000000000000ULL, { 0xE3535E7338CA8698ULL, 0xD6FF32BB3179E104ULL } }, /* XSUM_XXH128_withSecret_testdata[3024] */ + { 3025, 0x0000000000000000ULL, { 0x6CD575AD5ED07DA4ULL, 0xCD9E1D3DDCF9F81AULL } }, /* XSUM_XXH128_withSecret_testdata[3025] */ + { 3026, 0x0000000000000000ULL, { 0x29276AE02486AD00ULL, 0x7AD0A9CD2A307E23ULL } }, /* XSUM_XXH128_withSecret_testdata[3026] */ + { 3027, 0x0000000000000000ULL, { 0xA0B5CE2365382D03ULL, 0x23DCEC3B5E281442ULL } }, /* XSUM_XXH128_withSecret_testdata[3027] */ + { 3028, 0x0000000000000000ULL, { 0x410F0E6B726FCDEBULL, 0x2E1F86167D193DE4ULL } }, /* XSUM_XXH128_withSecret_testdata[3028] */ + { 3029, 0x0000000000000000ULL, { 0xA62AC30207B7C447ULL, 0x3417D3B8938ED958ULL } }, /* XSUM_XXH128_withSecret_testdata[3029] */ + { 3030, 0x0000000000000000ULL, { 0x92DACCF62A620D30ULL, 0xA72B7E11D3A4FFFDULL } }, /* XSUM_XXH128_withSecret_testdata[3030] */ + { 3031, 0x0000000000000000ULL, { 0x6ABF0B99521E0E9DULL, 0xE657BAF6AF1BDECCULL } }, /* XSUM_XXH128_withSecret_testdata[3031] */ + { 3032, 0x0000000000000000ULL, { 0x3B0CD98E1372D43CULL, 0xC5AD86A74006328CULL } }, /* XSUM_XXH128_withSecret_testdata[3032] */ + { 3033, 0x0000000000000000ULL, { 0x01E2872E1C17BDA7ULL, 0x0A8A27429C3A7125ULL } }, /* XSUM_XXH128_withSecret_testdata[3033] */ + { 3034, 0x0000000000000000ULL, { 0x2D9E2633E53DB16CULL, 0x5F440C34722C5017ULL } }, /* XSUM_XXH128_withSecret_testdata[3034] */ + { 3035, 0x0000000000000000ULL, { 0x368DD48533B9F31DULL, 0x7BF8DCA08595A2D6ULL } }, /* XSUM_XXH128_withSecret_testdata[3035] */ + { 3036, 0x0000000000000000ULL, { 0x4F2E1EE3DDA45EE4ULL, 0x040297293CFD5524ULL } }, /* XSUM_XXH128_withSecret_testdata[3036] */ + { 3037, 0x0000000000000000ULL, { 0x30FF66799DA36614ULL, 0x5414D8CE3887F39BULL } }, /* XSUM_XXH128_withSecret_testdata[3037] */ + { 3038, 0x0000000000000000ULL, { 0x4AAFC20716828FF3ULL, 0x5CC78A7172ADB465ULL } }, /* XSUM_XXH128_withSecret_testdata[3038] */ + { 3039, 0x0000000000000000ULL, { 0xF226B8DD54DA35E7ULL, 0x5613B07800D7DD40ULL } }, /* XSUM_XXH128_withSecret_testdata[3039] */ + { 3040, 0x0000000000000000ULL, { 0x6C1A227605D08804ULL, 0xD45EB75674508CCDULL } }, /* XSUM_XXH128_withSecret_testdata[3040] */ + { 3041, 0x0000000000000000ULL, { 0x4ED822AEF5847837ULL, 0x60FD5B24797503E6ULL } }, /* XSUM_XXH128_withSecret_testdata[3041] */ + { 3042, 0x0000000000000000ULL, { 0x883B36AA1CD505BFULL, 0x9AA3CA20E960050DULL } }, /* XSUM_XXH128_withSecret_testdata[3042] */ + { 3043, 0x0000000000000000ULL, { 0x058963E8D54F90BEULL, 0x02075FA73293C794ULL } }, /* XSUM_XXH128_withSecret_testdata[3043] */ + { 3044, 0x0000000000000000ULL, { 0x9C29F0D4C28B90C7ULL, 0xF0FBEB809D32ADD5ULL } }, /* XSUM_XXH128_withSecret_testdata[3044] */ + { 3045, 0x0000000000000000ULL, { 0x5FD9A0A4209B6F90ULL, 0x61EC3989FB23F98FULL } }, /* XSUM_XXH128_withSecret_testdata[3045] */ + { 3046, 0x0000000000000000ULL, { 0xF3E49B5D7B049C5EULL, 0x664701531394C5CEULL } }, /* XSUM_XXH128_withSecret_testdata[3046] */ + { 3047, 0x0000000000000000ULL, { 0x98E9345AFA285850ULL, 0x0965F478580E6CAEULL } }, /* XSUM_XXH128_withSecret_testdata[3047] */ + { 3048, 0x0000000000000000ULL, { 0x8D1129C3B9E67388ULL, 0x22E916EFBC474920ULL } }, /* XSUM_XXH128_withSecret_testdata[3048] */ + { 3049, 0x0000000000000000ULL, { 0x855BB6F44F6A85F3ULL, 0x0498AC67DDCC500BULL } }, /* XSUM_XXH128_withSecret_testdata[3049] */ + { 3050, 0x0000000000000000ULL, { 0x9D78F527CAC4A3AEULL, 0xE9F179D35FE2A243ULL } }, /* XSUM_XXH128_withSecret_testdata[3050] */ + { 3051, 0x0000000000000000ULL, { 0xDE61E8DA3F4D75FCULL, 0xB3562B79A94FB37BULL } }, /* XSUM_XXH128_withSecret_testdata[3051] */ + { 3052, 0x0000000000000000ULL, { 0x1AD45D5B6AB5D872ULL, 0x69298CD44F055768ULL } }, /* XSUM_XXH128_withSecret_testdata[3052] */ + { 3053, 0x0000000000000000ULL, { 0xE3F249B6B96D76D4ULL, 0xF5D363383E481A57ULL } }, /* XSUM_XXH128_withSecret_testdata[3053] */ + { 3054, 0x0000000000000000ULL, { 0x79C8D995A0685F8BULL, 0x6D8298807D8F6BAEULL } }, /* XSUM_XXH128_withSecret_testdata[3054] */ + { 3055, 0x0000000000000000ULL, { 0x68D85EAB36CB3870ULL, 0xB903AE4A241DD738ULL } }, /* XSUM_XXH128_withSecret_testdata[3055] */ + { 3056, 0x0000000000000000ULL, { 0x853590CBE8F7C06EULL, 0x926D0FF629E2F718ULL } }, /* XSUM_XXH128_withSecret_testdata[3056] */ + { 3057, 0x0000000000000000ULL, { 0xB19AD049A7D460D3ULL, 0x3D4E4298D08E660DULL } }, /* XSUM_XXH128_withSecret_testdata[3057] */ + { 3058, 0x0000000000000000ULL, { 0x4545D3E37516E8CBULL, 0x1EE35AD054F2284AULL } }, /* XSUM_XXH128_withSecret_testdata[3058] */ + { 3059, 0x0000000000000000ULL, { 0x0B73B87EF4753050ULL, 0x7AF2D2DE003CA400ULL } }, /* XSUM_XXH128_withSecret_testdata[3059] */ + { 3060, 0x0000000000000000ULL, { 0x4280EBDF257E215BULL, 0x5D22B23507AA23EFULL } }, /* XSUM_XXH128_withSecret_testdata[3060] */ + { 3061, 0x0000000000000000ULL, { 0x5ED37552FE3E09FFULL, 0x6034D6130547723FULL } }, /* XSUM_XXH128_withSecret_testdata[3061] */ + { 3062, 0x0000000000000000ULL, { 0x3CEEB6B4D7839EF2ULL, 0x7D7D5622CF61B9BBULL } }, /* XSUM_XXH128_withSecret_testdata[3062] */ + { 3063, 0x0000000000000000ULL, { 0x9D74B7565FB68879ULL, 0xE5A826DBEF55F292ULL } }, /* XSUM_XXH128_withSecret_testdata[3063] */ + { 3064, 0x0000000000000000ULL, { 0xBCC97275F418532BULL, 0xD8BE53038E7A1333ULL } }, /* XSUM_XXH128_withSecret_testdata[3064] */ + { 3065, 0x0000000000000000ULL, { 0x9286EE8B29B7D677ULL, 0x41D9BC4A63C32A12ULL } }, /* XSUM_XXH128_withSecret_testdata[3065] */ + { 3066, 0x0000000000000000ULL, { 0x2D301FDD114930D5ULL, 0x8CCBA5DC9DE4D8DBULL } }, /* XSUM_XXH128_withSecret_testdata[3066] */ + { 3067, 0x0000000000000000ULL, { 0xF4A5F0BA1AD09DFFULL, 0x2EFCB5671D691C8BULL } }, /* XSUM_XXH128_withSecret_testdata[3067] */ + { 3068, 0x0000000000000000ULL, { 0x2445BA11D91914DAULL, 0xC7A07BED2235EB7AULL } }, /* XSUM_XXH128_withSecret_testdata[3068] */ + { 3069, 0x0000000000000000ULL, { 0xDB217281B4AC796DULL, 0x1D7B77AD7447CC01ULL } }, /* XSUM_XXH128_withSecret_testdata[3069] */ + { 3070, 0x0000000000000000ULL, { 0x535E96FDD327B705ULL, 0xB461D2D4E58C67D7ULL } }, /* XSUM_XXH128_withSecret_testdata[3070] */ + { 3071, 0x0000000000000000ULL, { 0x8B57904DB74393D5ULL, 0xBF4BD9205DA09DD1ULL } }, /* XSUM_XXH128_withSecret_testdata[3071] */ + { 3072, 0x0000000000000000ULL, { 0xF5A0D758BA06FCFEULL, 0x36E9283B5A0EE016ULL } }, /* XSUM_XXH128_withSecret_testdata[3072] */ + { 3073, 0x0000000000000000ULL, { 0x70C7020C10282027ULL, 0xF69E224B153303ABULL } }, /* XSUM_XXH128_withSecret_testdata[3073] */ + { 3074, 0x0000000000000000ULL, { 0xFC72B1DF46FB974CULL, 0x3C766B9DE37A7120ULL } }, /* XSUM_XXH128_withSecret_testdata[3074] */ + { 3075, 0x0000000000000000ULL, { 0x9C7919FFA900C172ULL, 0x449D427939BF2D41ULL } }, /* XSUM_XXH128_withSecret_testdata[3075] */ + { 3076, 0x0000000000000000ULL, { 0xB37179BE95C6DA2CULL, 0xB975A26CD6D2B9A2ULL } }, /* XSUM_XXH128_withSecret_testdata[3076] */ + { 3077, 0x0000000000000000ULL, { 0xB2F096B36193A13AULL, 0xBBA307E106AC3A17ULL } }, /* XSUM_XXH128_withSecret_testdata[3077] */ + { 3078, 0x0000000000000000ULL, { 0xFE2E4C5796FEEF55ULL, 0xBF8950DDCC5CA94CULL } }, /* XSUM_XXH128_withSecret_testdata[3078] */ + { 3079, 0x0000000000000000ULL, { 0xFA51B9C142426A7CULL, 0xA548B9DB545DBF89ULL } }, /* XSUM_XXH128_withSecret_testdata[3079] */ + { 3080, 0x0000000000000000ULL, { 0x8DC4F7C6C8E1141FULL, 0x8A13794EC16D46A1ULL } }, /* XSUM_XXH128_withSecret_testdata[3080] */ + { 3081, 0x0000000000000000ULL, { 0x9FBE21513A0281D6ULL, 0xB921AC3ECBDF8605ULL } }, /* XSUM_XXH128_withSecret_testdata[3081] */ + { 3082, 0x0000000000000000ULL, { 0x46D73042AF729452ULL, 0x8838CAACE6E9817CULL } }, /* XSUM_XXH128_withSecret_testdata[3082] */ + { 3083, 0x0000000000000000ULL, { 0x8E50D0A1EB4555D7ULL, 0x5EC234788A104BBDULL } }, /* XSUM_XXH128_withSecret_testdata[3083] */ + { 3084, 0x0000000000000000ULL, { 0x9C60BF2B5F53C3A8ULL, 0xD10D93891988EA0FULL } }, /* XSUM_XXH128_withSecret_testdata[3084] */ + { 3085, 0x0000000000000000ULL, { 0xACFB0D25BE2473E4ULL, 0x7F3B3A62F18BED86ULL } }, /* XSUM_XXH128_withSecret_testdata[3085] */ + { 3086, 0x0000000000000000ULL, { 0x68F68D81C62DDDFAULL, 0x40BF8546B85051FFULL } }, /* XSUM_XXH128_withSecret_testdata[3086] */ + { 3087, 0x0000000000000000ULL, { 0xA021287FC6E85E87ULL, 0xB7BACB354948917EULL } }, /* XSUM_XXH128_withSecret_testdata[3087] */ + { 3088, 0x0000000000000000ULL, { 0x9722CD9C66A0C16AULL, 0x92784951D193C861ULL } }, /* XSUM_XXH128_withSecret_testdata[3088] */ + { 3089, 0x0000000000000000ULL, { 0x43F580D2A0F20E3CULL, 0x577831CF7B822585ULL } }, /* XSUM_XXH128_withSecret_testdata[3089] */ + { 3090, 0x0000000000000000ULL, { 0x5E45E938F19764A3ULL, 0xF03D6B9B307259D5ULL } }, /* XSUM_XXH128_withSecret_testdata[3090] */ + { 3091, 0x0000000000000000ULL, { 0xFDDEABFF7F3808E6ULL, 0xFC07EFA1D902A150ULL } }, /* XSUM_XXH128_withSecret_testdata[3091] */ + { 3092, 0x0000000000000000ULL, { 0xA2D965DB999F4B59ULL, 0xB87BC6E8DB5B3AFDULL } }, /* XSUM_XXH128_withSecret_testdata[3092] */ + { 3093, 0x0000000000000000ULL, { 0x7E75B21D76D4D7D3ULL, 0xCAF4B859BE74B054ULL } }, /* XSUM_XXH128_withSecret_testdata[3093] */ + { 3094, 0x0000000000000000ULL, { 0xE28496279A4E4CCFULL, 0x63BF30E3926DC3D7ULL } }, /* XSUM_XXH128_withSecret_testdata[3094] */ + { 3095, 0x0000000000000000ULL, { 0xFA9EAC5C07C0D47BULL, 0x23A44CAB7075335EULL } }, /* XSUM_XXH128_withSecret_testdata[3095] */ + { 3096, 0x0000000000000000ULL, { 0xF5DCB369B6A947E1ULL, 0x9239BFB2A1A67DCBULL } }, /* XSUM_XXH128_withSecret_testdata[3096] */ + { 3097, 0x0000000000000000ULL, { 0x55213D013BB9F51AULL, 0xCB4FC1BC977378D7ULL } }, /* XSUM_XXH128_withSecret_testdata[3097] */ + { 3098, 0x0000000000000000ULL, { 0xB09E9866DDD82727ULL, 0x192AC0E2E3364D27ULL } }, /* XSUM_XXH128_withSecret_testdata[3098] */ + { 3099, 0x0000000000000000ULL, { 0xA4068525FE5AD786ULL, 0xC989A56F9AC0D23FULL } }, /* XSUM_XXH128_withSecret_testdata[3099] */ + { 3100, 0x0000000000000000ULL, { 0x5769EBD2B8848612ULL, 0xD03195C9E4341712ULL } }, /* XSUM_XXH128_withSecret_testdata[3100] */ + { 3101, 0x0000000000000000ULL, { 0x593AA572515D7990ULL, 0xF738E6DAD7226449ULL } }, /* XSUM_XXH128_withSecret_testdata[3101] */ + { 3102, 0x0000000000000000ULL, { 0x8895097FFF3EAFBBULL, 0xA7D38039AA6B12EFULL } }, /* XSUM_XXH128_withSecret_testdata[3102] */ + { 3103, 0x0000000000000000ULL, { 0x4545E80628795066ULL, 0xF5B8C4D06CE1D640ULL } }, /* XSUM_XXH128_withSecret_testdata[3103] */ + { 3104, 0x0000000000000000ULL, { 0xE2D95816794AF1C5ULL, 0x15C25962DEE3CC2AULL } }, /* XSUM_XXH128_withSecret_testdata[3104] */ + { 3105, 0x0000000000000000ULL, { 0x0A8B6B98242FD79DULL, 0x9E105E26D33E0927ULL } }, /* XSUM_XXH128_withSecret_testdata[3105] */ + { 3106, 0x0000000000000000ULL, { 0xE8F63F15B49ADBDEULL, 0xD7F052CA55405CE1ULL } }, /* XSUM_XXH128_withSecret_testdata[3106] */ + { 3107, 0x0000000000000000ULL, { 0xD305410E5F630498ULL, 0xA1155662D364CCCCULL } }, /* XSUM_XXH128_withSecret_testdata[3107] */ + { 3108, 0x0000000000000000ULL, { 0x8D7C9A3E9593CE00ULL, 0xED18A117B6CAAE4DULL } }, /* XSUM_XXH128_withSecret_testdata[3108] */ + { 3109, 0x0000000000000000ULL, { 0x2BC9BB427B8B5CF2ULL, 0x3BCC36C62D118107ULL } }, /* XSUM_XXH128_withSecret_testdata[3109] */ + { 3110, 0x0000000000000000ULL, { 0x3DC4AA81C295CDCCULL, 0x0D89169F82EBD8D3ULL } }, /* XSUM_XXH128_withSecret_testdata[3110] */ + { 3111, 0x0000000000000000ULL, { 0x6B87FC5DDBDEE26AULL, 0x00F8CB070D512C9DULL } }, /* XSUM_XXH128_withSecret_testdata[3111] */ + { 3112, 0x0000000000000000ULL, { 0xCA452A60E351B246ULL, 0x4363D98AA2CD212BULL } }, /* XSUM_XXH128_withSecret_testdata[3112] */ + { 3113, 0x0000000000000000ULL, { 0x9828C09D21790437ULL, 0x2CF9A3E1AB040C15ULL } }, /* XSUM_XXH128_withSecret_testdata[3113] */ + { 3114, 0x0000000000000000ULL, { 0xBC7702DBF295E1F2ULL, 0x02A5CB6E17898AA3ULL } }, /* XSUM_XXH128_withSecret_testdata[3114] */ + { 3115, 0x0000000000000000ULL, { 0x24816B508733E6BFULL, 0x5A64940084F7F1EDULL } }, /* XSUM_XXH128_withSecret_testdata[3115] */ + { 3116, 0x0000000000000000ULL, { 0xEED74289728E004FULL, 0x916532902A02698DULL } }, /* XSUM_XXH128_withSecret_testdata[3116] */ + { 3117, 0x0000000000000000ULL, { 0xBD07A4B465E0B215ULL, 0xBECEE25066E65BEDULL } }, /* XSUM_XXH128_withSecret_testdata[3117] */ + { 3118, 0x0000000000000000ULL, { 0x85303ACEDDA3E876ULL, 0x0D2D78445F814E7CULL } }, /* XSUM_XXH128_withSecret_testdata[3118] */ + { 3119, 0x0000000000000000ULL, { 0x950EE5D649E02718ULL, 0x098E9D910EB69CECULL } }, /* XSUM_XXH128_withSecret_testdata[3119] */ + { 3120, 0x0000000000000000ULL, { 0x44E13EB803569F36ULL, 0x505564597FC978FDULL } }, /* XSUM_XXH128_withSecret_testdata[3120] */ + { 3121, 0x0000000000000000ULL, { 0x9052958C5F1AB505ULL, 0xC9E7F55BCF6AAB1DULL } }, /* XSUM_XXH128_withSecret_testdata[3121] */ + { 3122, 0x0000000000000000ULL, { 0xADFCDB64C1F35FF1ULL, 0x4B28D6C18745FFE2ULL } }, /* XSUM_XXH128_withSecret_testdata[3122] */ + { 3123, 0x0000000000000000ULL, { 0xC3A8337A16A60E97ULL, 0xE9D5A4EDAED972E9ULL } }, /* XSUM_XXH128_withSecret_testdata[3123] */ + { 3124, 0x0000000000000000ULL, { 0xCB8A6BDF5CAB2CB6ULL, 0xE0EF410FF8EBE4DCULL } }, /* XSUM_XXH128_withSecret_testdata[3124] */ + { 3125, 0x0000000000000000ULL, { 0x14701532B3149D63ULL, 0x7C336116FA0D34EDULL } }, /* XSUM_XXH128_withSecret_testdata[3125] */ + { 3126, 0x0000000000000000ULL, { 0xAD4936262BFB674DULL, 0xB2DD184AFCD873DCULL } }, /* XSUM_XXH128_withSecret_testdata[3126] */ + { 3127, 0x0000000000000000ULL, { 0xCB4435C89BEE4D6DULL, 0x9DFB4365150099ADULL } }, /* XSUM_XXH128_withSecret_testdata[3127] */ + { 3128, 0x0000000000000000ULL, { 0x319772CA8C513FC3ULL, 0x85D0E84EFEF26D24ULL } }, /* XSUM_XXH128_withSecret_testdata[3128] */ + { 3129, 0x0000000000000000ULL, { 0xB14F6E0D24FB425AULL, 0x53B14391FC11551CULL } }, /* XSUM_XXH128_withSecret_testdata[3129] */ + { 3130, 0x0000000000000000ULL, { 0xD8C42EABA81D5D74ULL, 0x0B1D6667D8155B1AULL } }, /* XSUM_XXH128_withSecret_testdata[3130] */ + { 3131, 0x0000000000000000ULL, { 0xCC1BDC02061EFFC1ULL, 0xDF1BD67C9591DBC4ULL } }, /* XSUM_XXH128_withSecret_testdata[3131] */ + { 3132, 0x0000000000000000ULL, { 0x53164136A7DAD369ULL, 0x59A092D6763EEF70ULL } }, /* XSUM_XXH128_withSecret_testdata[3132] */ + { 3133, 0x0000000000000000ULL, { 0x1CF7D5D6CFA19B84ULL, 0x70A51B188D7367C1ULL } }, /* XSUM_XXH128_withSecret_testdata[3133] */ + { 3134, 0x0000000000000000ULL, { 0x6F54091F0DC97503ULL, 0xAD5D6EAB272D6DEBULL } }, /* XSUM_XXH128_withSecret_testdata[3134] */ + { 3135, 0x0000000000000000ULL, { 0x4FDF2B64A40B7D71ULL, 0x34F69716AA5FC420ULL } }, /* XSUM_XXH128_withSecret_testdata[3135] */ + { 3136, 0x0000000000000000ULL, { 0xD95623C151DE1B95ULL, 0x62DCFD8584402765ULL } }, /* XSUM_XXH128_withSecret_testdata[3136] */ + { 3137, 0x0000000000000000ULL, { 0x7C68A24FC4BBFF0AULL, 0xC6555A9BFE0A5719ULL } }, /* XSUM_XXH128_withSecret_testdata[3137] */ + { 3138, 0x0000000000000000ULL, { 0x8D4A355AF955A352ULL, 0xCF77018CCCD338E2ULL } }, /* XSUM_XXH128_withSecret_testdata[3138] */ + { 3139, 0x0000000000000000ULL, { 0x9506F8F6A8582A58ULL, 0x032F80B8160E79F9ULL } }, /* XSUM_XXH128_withSecret_testdata[3139] */ + { 3140, 0x0000000000000000ULL, { 0x6A2B11D6DE59D82CULL, 0x709E217D2E839E29ULL } }, /* XSUM_XXH128_withSecret_testdata[3140] */ + { 3141, 0x0000000000000000ULL, { 0xB2C155DB1DDD708CULL, 0xC9C025400B7C4EE7ULL } }, /* XSUM_XXH128_withSecret_testdata[3141] */ + { 3142, 0x0000000000000000ULL, { 0x0BE121D269940379ULL, 0x1F5013523456DBC7ULL } }, /* XSUM_XXH128_withSecret_testdata[3142] */ + { 3143, 0x0000000000000000ULL, { 0x1864D6B09A67166AULL, 0x1CE2A1A049EFA11FULL } }, /* XSUM_XXH128_withSecret_testdata[3143] */ + { 3144, 0x0000000000000000ULL, { 0x99F7030C2A25BB9BULL, 0x0C3AB49DF122A543ULL } }, /* XSUM_XXH128_withSecret_testdata[3144] */ + { 3145, 0x0000000000000000ULL, { 0x77ED4A9F6BEB8243ULL, 0x4B036F049B595902ULL } }, /* XSUM_XXH128_withSecret_testdata[3145] */ + { 3146, 0x0000000000000000ULL, { 0xBB093C1935EDA716ULL, 0xC40BF92BF8F14877ULL } }, /* XSUM_XXH128_withSecret_testdata[3146] */ + { 3147, 0x0000000000000000ULL, { 0x7491E7B95E770CD0ULL, 0xEE68448679BB7F6AULL } }, /* XSUM_XXH128_withSecret_testdata[3147] */ + { 3148, 0x0000000000000000ULL, { 0x652DBD7D11D10C92ULL, 0x5BA17ACCBDE062C9ULL } }, /* XSUM_XXH128_withSecret_testdata[3148] */ + { 3149, 0x0000000000000000ULL, { 0x800857B56BAA6999ULL, 0xB9608E4C88097CC5ULL } }, /* XSUM_XXH128_withSecret_testdata[3149] */ + { 3150, 0x0000000000000000ULL, { 0xC7E4380E43DE0CE7ULL, 0x7B2230F5E4D6C81CULL } }, /* XSUM_XXH128_withSecret_testdata[3150] */ + { 3151, 0x0000000000000000ULL, { 0xFD7B186DF737F475ULL, 0xBCD900EFD39FECBFULL } }, /* XSUM_XXH128_withSecret_testdata[3151] */ + { 3152, 0x0000000000000000ULL, { 0xA1760DFF2512F00BULL, 0xC78AFE4D135C8448ULL } }, /* XSUM_XXH128_withSecret_testdata[3152] */ + { 3153, 0x0000000000000000ULL, { 0x293C0DB7672CFFA0ULL, 0xFD3E3F2EF1C82430ULL } }, /* XSUM_XXH128_withSecret_testdata[3153] */ + { 3154, 0x0000000000000000ULL, { 0x1E7350299B820EC1ULL, 0x40C30FDF6267D28CULL } }, /* XSUM_XXH128_withSecret_testdata[3154] */ + { 3155, 0x0000000000000000ULL, { 0x396EFA75E8FC579BULL, 0xF19E7B0E60741ABDULL } }, /* XSUM_XXH128_withSecret_testdata[3155] */ + { 3156, 0x0000000000000000ULL, { 0x310227B2DFEC0B08ULL, 0x70168832F3E30036ULL } }, /* XSUM_XXH128_withSecret_testdata[3156] */ + { 3157, 0x0000000000000000ULL, { 0xA1A80226C7A2CE9FULL, 0x0DA9AFA9DFAE460DULL } }, /* XSUM_XXH128_withSecret_testdata[3157] */ + { 3158, 0x0000000000000000ULL, { 0x33ACF7C54F5BA9A2ULL, 0x5BE77193672B2579ULL } }, /* XSUM_XXH128_withSecret_testdata[3158] */ + { 3159, 0x0000000000000000ULL, { 0x148730CA3B26F9DFULL, 0x2CA99457F818F7A7ULL } }, /* XSUM_XXH128_withSecret_testdata[3159] */ + { 3160, 0x0000000000000000ULL, { 0xAE67E4D47D742A18ULL, 0x25AE5EFACCDD1ABAULL } }, /* XSUM_XXH128_withSecret_testdata[3160] */ + { 3161, 0x0000000000000000ULL, { 0x690643FC05471E6DULL, 0xBF1D6535BFA20BE4ULL } }, /* XSUM_XXH128_withSecret_testdata[3161] */ + { 3162, 0x0000000000000000ULL, { 0xDF4B703D708BF09FULL, 0xD845AF08E435E4B1ULL } }, /* XSUM_XXH128_withSecret_testdata[3162] */ + { 3163, 0x0000000000000000ULL, { 0xBC2A9A17890539EBULL, 0x59A384648BC418DCULL } }, /* XSUM_XXH128_withSecret_testdata[3163] */ + { 3164, 0x0000000000000000ULL, { 0x8C7F7ED0164BC7D3ULL, 0x5F7C0F35054AB1B0ULL } }, /* XSUM_XXH128_withSecret_testdata[3164] */ + { 3165, 0x0000000000000000ULL, { 0x495255725E29D9B2ULL, 0x1D6C3D7B74E30721ULL } }, /* XSUM_XXH128_withSecret_testdata[3165] */ + { 3166, 0x0000000000000000ULL, { 0x3083F54957C6159CULL, 0xE34BF89C6A748A95ULL } }, /* XSUM_XXH128_withSecret_testdata[3166] */ + { 3167, 0x0000000000000000ULL, { 0xD2B819E0D63C599CULL, 0x2F8AA28D9C5AE806ULL } }, /* XSUM_XXH128_withSecret_testdata[3167] */ + { 3168, 0x0000000000000000ULL, { 0xFD92D442AA13E961ULL, 0xED71F6980A2BCE2AULL } }, /* XSUM_XXH128_withSecret_testdata[3168] */ + { 3169, 0x0000000000000000ULL, { 0x286AEE2983DB23BDULL, 0x91C66E3F1C76A691ULL } }, /* XSUM_XXH128_withSecret_testdata[3169] */ + { 3170, 0x0000000000000000ULL, { 0x33DDFAEB4EBC48F6ULL, 0xFCA1EF4494C9C240ULL } }, /* XSUM_XXH128_withSecret_testdata[3170] */ + { 3171, 0x0000000000000000ULL, { 0xC48860DC6C0BB4C4ULL, 0x58E06E99E3830FD1ULL } }, /* XSUM_XXH128_withSecret_testdata[3171] */ + { 3172, 0x0000000000000000ULL, { 0x9B74162796A02469ULL, 0xD2D0253DBDD0F65AULL } }, /* XSUM_XXH128_withSecret_testdata[3172] */ + { 3173, 0x0000000000000000ULL, { 0x3A1F72EEAAE2FF5CULL, 0xCEA59CD30DE60C62ULL } }, /* XSUM_XXH128_withSecret_testdata[3173] */ + { 3174, 0x0000000000000000ULL, { 0xFC2277998C3144BEULL, 0xD8CACB2371AF4CBFULL } }, /* XSUM_XXH128_withSecret_testdata[3174] */ + { 3175, 0x0000000000000000ULL, { 0x2AE9DD5B8FD328E3ULL, 0x55BB157942540D15ULL } }, /* XSUM_XXH128_withSecret_testdata[3175] */ + { 3176, 0x0000000000000000ULL, { 0xFC5A0B7233DB06B7ULL, 0xB02509331A6E6544ULL } }, /* XSUM_XXH128_withSecret_testdata[3176] */ + { 3177, 0x0000000000000000ULL, { 0x665A0A09FFFFE390ULL, 0xFA7FE4F9B381A8A6ULL } }, /* XSUM_XXH128_withSecret_testdata[3177] */ + { 3178, 0x0000000000000000ULL, { 0x3BC5D322F3AA0932ULL, 0x75B2DA7BD25276ABULL } }, /* XSUM_XXH128_withSecret_testdata[3178] */ + { 3179, 0x0000000000000000ULL, { 0xF44D1AB38E620FEBULL, 0x25FBF0CE8AE65FC4ULL } }, /* XSUM_XXH128_withSecret_testdata[3179] */ + { 3180, 0x0000000000000000ULL, { 0x14BD81EAB16E510EULL, 0x3EA3F488BE566084ULL } }, /* XSUM_XXH128_withSecret_testdata[3180] */ + { 3181, 0x0000000000000000ULL, { 0x6F56C6F9E8BB459EULL, 0x1AEF24DEFDF3AC35ULL } }, /* XSUM_XXH128_withSecret_testdata[3181] */ + { 3182, 0x0000000000000000ULL, { 0x97BD98B2A293810CULL, 0x38FDE8B45C66E4DFULL } }, /* XSUM_XXH128_withSecret_testdata[3182] */ + { 3183, 0x0000000000000000ULL, { 0x6F26D4EADE05ABF6ULL, 0x52B3CBA987BF4AA6ULL } }, /* XSUM_XXH128_withSecret_testdata[3183] */ + { 3184, 0x0000000000000000ULL, { 0x1248E27C46185A24ULL, 0x2EA9CD525763430BULL } }, /* XSUM_XXH128_withSecret_testdata[3184] */ + { 3185, 0x0000000000000000ULL, { 0xB17D2E2C98F3AF5CULL, 0xA1EE6C1F5D20AFF0ULL } }, /* XSUM_XXH128_withSecret_testdata[3185] */ + { 3186, 0x0000000000000000ULL, { 0xA71E3F08DD214859ULL, 0x042114AC98CEC37BULL } }, /* XSUM_XXH128_withSecret_testdata[3186] */ + { 3187, 0x0000000000000000ULL, { 0xC61C31200BDC48FAULL, 0xB6113BC428978C90ULL } }, /* XSUM_XXH128_withSecret_testdata[3187] */ + { 3188, 0x0000000000000000ULL, { 0xD0E13FC28B2F9913ULL, 0x590D8CCA1D4CF56BULL } }, /* XSUM_XXH128_withSecret_testdata[3188] */ + { 3189, 0x0000000000000000ULL, { 0x917EBBA225F50792ULL, 0x0E0DEA6E483D37E0ULL } }, /* XSUM_XXH128_withSecret_testdata[3189] */ + { 3190, 0x0000000000000000ULL, { 0xBEEB801645B5DBD4ULL, 0x54C92ADF59A8F143ULL } }, /* XSUM_XXH128_withSecret_testdata[3190] */ + { 3191, 0x0000000000000000ULL, { 0xD5FDBBFCC774BB33ULL, 0x9E30123433243813ULL } }, /* XSUM_XXH128_withSecret_testdata[3191] */ + { 3192, 0x0000000000000000ULL, { 0xB39010374D35AF77ULL, 0x336EF650BD227697ULL } }, /* XSUM_XXH128_withSecret_testdata[3192] */ + { 3193, 0x0000000000000000ULL, { 0xC79015AFC8B3B628ULL, 0xE8922C42B33A2A77ULL } }, /* XSUM_XXH128_withSecret_testdata[3193] */ + { 3194, 0x0000000000000000ULL, { 0x65B4346F6BD4953DULL, 0x75920775C1F47ECEULL } }, /* XSUM_XXH128_withSecret_testdata[3194] */ + { 3195, 0x0000000000000000ULL, { 0x64BE0D2EE2E286D0ULL, 0xCDB7D2ED13258AAFULL } }, /* XSUM_XXH128_withSecret_testdata[3195] */ + { 3196, 0x0000000000000000ULL, { 0x5059571289760C2AULL, 0x426F460B6118B287ULL } }, /* XSUM_XXH128_withSecret_testdata[3196] */ + { 3197, 0x0000000000000000ULL, { 0xE97995973A7CC660ULL, 0xEE57A495410BA361ULL } }, /* XSUM_XXH128_withSecret_testdata[3197] */ + { 3198, 0x0000000000000000ULL, { 0xF0B90BF70B7105E4ULL, 0xBAFEEA5A4629CB81ULL } }, /* XSUM_XXH128_withSecret_testdata[3198] */ + { 3199, 0x0000000000000000ULL, { 0xFF6A9D5D707A6F1CULL, 0x04D3B2E8EFD25D7DULL } }, /* XSUM_XXH128_withSecret_testdata[3199] */ + { 3200, 0x0000000000000000ULL, { 0xD7200BA5B8275086ULL, 0x4467F7A954D7096FULL } }, /* XSUM_XXH128_withSecret_testdata[3200] */ + { 3201, 0x0000000000000000ULL, { 0x40C880A6D9B3D3FAULL, 0xC56BBE776D45C69FULL } }, /* XSUM_XXH128_withSecret_testdata[3201] */ + { 3202, 0x0000000000000000ULL, { 0xE1AC910E7A8736E7ULL, 0xC04EDC3ABFF86438ULL } }, /* XSUM_XXH128_withSecret_testdata[3202] */ + { 3203, 0x0000000000000000ULL, { 0x2FB99866A4A515CCULL, 0x6B155AF637D986EFULL } }, /* XSUM_XXH128_withSecret_testdata[3203] */ + { 3204, 0x0000000000000000ULL, { 0x3E62E8EFB0A503B8ULL, 0xF2C4052C111CF93AULL } }, /* XSUM_XXH128_withSecret_testdata[3204] */ + { 3205, 0x0000000000000000ULL, { 0xBBDD949C0182C902ULL, 0xAD3990DDE017CB35ULL } }, /* XSUM_XXH128_withSecret_testdata[3205] */ + { 3206, 0x0000000000000000ULL, { 0xAD7FB51FA61A277BULL, 0xB708F47AE38BCE45ULL } }, /* XSUM_XXH128_withSecret_testdata[3206] */ + { 3207, 0x0000000000000000ULL, { 0x6E991973891858B7ULL, 0xBA88FD9999E5D31EULL } }, /* XSUM_XXH128_withSecret_testdata[3207] */ + { 3208, 0x0000000000000000ULL, { 0x997053F6C459F928ULL, 0xF54E34E3FF28333BULL } }, /* XSUM_XXH128_withSecret_testdata[3208] */ + { 3209, 0x0000000000000000ULL, { 0xEE41F7488F928DABULL, 0xEAAE4D7E36604C2EULL } }, /* XSUM_XXH128_withSecret_testdata[3209] */ + { 3210, 0x0000000000000000ULL, { 0x3E7E7CA24E05CC73ULL, 0x6C43ED1CA4CED4A5ULL } }, /* XSUM_XXH128_withSecret_testdata[3210] */ + { 3211, 0x0000000000000000ULL, { 0xE23E5E2F1C63B479ULL, 0x23DBE704C1D3A341ULL } }, /* XSUM_XXH128_withSecret_testdata[3211] */ + { 3212, 0x0000000000000000ULL, { 0x14EC7278C8ECAE37ULL, 0x0F86EA4FA373A477ULL } }, /* XSUM_XXH128_withSecret_testdata[3212] */ + { 3213, 0x0000000000000000ULL, { 0x5AA9E0AEBEC9477AULL, 0xC17CA7646F8DB341ULL } }, /* XSUM_XXH128_withSecret_testdata[3213] */ + { 3214, 0x0000000000000000ULL, { 0x55CD91E1BBA19DFEULL, 0xC426B3AF6A680F4DULL } }, /* XSUM_XXH128_withSecret_testdata[3214] */ + { 3215, 0x0000000000000000ULL, { 0xFF0BEE5FE295C1ABULL, 0x03B59C4421E8CB90ULL } }, /* XSUM_XXH128_withSecret_testdata[3215] */ + { 3216, 0x0000000000000000ULL, { 0xDA59587CD473B873ULL, 0x2E24A68A81E958CBULL } }, /* XSUM_XXH128_withSecret_testdata[3216] */ + { 3217, 0x0000000000000000ULL, { 0xC1249BE859936A26ULL, 0x3B7AB1FBD9425045ULL } }, /* XSUM_XXH128_withSecret_testdata[3217] */ + { 3218, 0x0000000000000000ULL, { 0xA273BECC861BABA9ULL, 0x2AFBAA8BD6B7D7C1ULL } }, /* XSUM_XXH128_withSecret_testdata[3218] */ + { 3219, 0x0000000000000000ULL, { 0x21ABF4545EF8335BULL, 0x10DE2C8CD6EDE0C3ULL } }, /* XSUM_XXH128_withSecret_testdata[3219] */ + { 3220, 0x0000000000000000ULL, { 0x9F35CFC3E0091E3CULL, 0x353B049D3363FB41ULL } }, /* XSUM_XXH128_withSecret_testdata[3220] */ + { 3221, 0x0000000000000000ULL, { 0xC4136979A80FE8F0ULL, 0xC7ECB1F1713C2827ULL } }, /* XSUM_XXH128_withSecret_testdata[3221] */ + { 3222, 0x0000000000000000ULL, { 0x9F85920843FA1F7FULL, 0x5FA6C5D978F6DAA0ULL } }, /* XSUM_XXH128_withSecret_testdata[3222] */ + { 3223, 0x0000000000000000ULL, { 0xECCCB09DCDFBAE5EULL, 0xD95E685B22EBE7D7ULL } }, /* XSUM_XXH128_withSecret_testdata[3223] */ + { 3224, 0x0000000000000000ULL, { 0xAADB3A586BC7FE2CULL, 0xDD8182AE077AC751ULL } }, /* XSUM_XXH128_withSecret_testdata[3224] */ + { 3225, 0x0000000000000000ULL, { 0x86870DF14A65EE9AULL, 0x243C61863110520AULL } }, /* XSUM_XXH128_withSecret_testdata[3225] */ + { 3226, 0x0000000000000000ULL, { 0x0E4F7208A416DA59ULL, 0x43FBB7E309CFFD22ULL } }, /* XSUM_XXH128_withSecret_testdata[3226] */ + { 3227, 0x0000000000000000ULL, { 0x05D234FCE6387034ULL, 0x084F99600D07D971ULL } }, /* XSUM_XXH128_withSecret_testdata[3227] */ + { 3228, 0x0000000000000000ULL, { 0xCCEBE82EBCFF38DDULL, 0x174E831F9D8DA1DEULL } }, /* XSUM_XXH128_withSecret_testdata[3228] */ + { 3229, 0x0000000000000000ULL, { 0x1D7576EAF2ED8398ULL, 0x65709581ECA805F8ULL } }, /* XSUM_XXH128_withSecret_testdata[3229] */ + { 3230, 0x0000000000000000ULL, { 0xF6A84BDF1974F42EULL, 0x344610FAB0D1021BULL } }, /* XSUM_XXH128_withSecret_testdata[3230] */ + { 3231, 0x0000000000000000ULL, { 0x8FE2D205D4EF2916ULL, 0x32EF7B9597655E60ULL } }, /* XSUM_XXH128_withSecret_testdata[3231] */ + { 3232, 0x0000000000000000ULL, { 0xCEE1E2241957271BULL, 0x9CAB28DCD8A4E33EULL } }, /* XSUM_XXH128_withSecret_testdata[3232] */ + { 3233, 0x0000000000000000ULL, { 0xD4D39543A5EAC379ULL, 0x2D1ABD86F5F4B42EULL } }, /* XSUM_XXH128_withSecret_testdata[3233] */ + { 3234, 0x0000000000000000ULL, { 0x07483EE0BECEB02DULL, 0x5CACB9F0AABACB88ULL } }, /* XSUM_XXH128_withSecret_testdata[3234] */ + { 3235, 0x0000000000000000ULL, { 0x9F79C88265C00AE5ULL, 0x5AF214857176FE1FULL } }, /* XSUM_XXH128_withSecret_testdata[3235] */ + { 3236, 0x0000000000000000ULL, { 0xF4B64A31BB0925F3ULL, 0xB7BB5A2AC2BAF7E3ULL } }, /* XSUM_XXH128_withSecret_testdata[3236] */ + { 3237, 0x0000000000000000ULL, { 0x17629432F2AC5569ULL, 0x9EB4A614C2371D67ULL } }, /* XSUM_XXH128_withSecret_testdata[3237] */ + { 3238, 0x0000000000000000ULL, { 0x75960AABB155EED0ULL, 0x5018AB5066E15EDFULL } }, /* XSUM_XXH128_withSecret_testdata[3238] */ + { 3239, 0x0000000000000000ULL, { 0x805586E578DA6070ULL, 0x983E830F0A9C4C85ULL } }, /* XSUM_XXH128_withSecret_testdata[3239] */ + { 3240, 0x0000000000000000ULL, { 0x2B7A4B339E92DBB7ULL, 0xD6C928F84851CDAAULL } }, /* XSUM_XXH128_withSecret_testdata[3240] */ + { 3241, 0x0000000000000000ULL, { 0xDAC8041DADC13ABCULL, 0x55BCA5199195D06DULL } }, /* XSUM_XXH128_withSecret_testdata[3241] */ + { 3242, 0x0000000000000000ULL, { 0x78278E639874DC18ULL, 0x95DDB8BC1FB6E0EDULL } }, /* XSUM_XXH128_withSecret_testdata[3242] */ + { 3243, 0x0000000000000000ULL, { 0xA80739581807C6A0ULL, 0xE3CD68A4589DB2ECULL } }, /* XSUM_XXH128_withSecret_testdata[3243] */ + { 3244, 0x0000000000000000ULL, { 0x06724F4774CC1152ULL, 0xB6C24F1C0222D759ULL } }, /* XSUM_XXH128_withSecret_testdata[3244] */ + { 3245, 0x0000000000000000ULL, { 0xD29FFA0A3D696069ULL, 0x443D6062AF3204A6ULL } }, /* XSUM_XXH128_withSecret_testdata[3245] */ + { 3246, 0x0000000000000000ULL, { 0x7800F152663EC731ULL, 0xF9793435CE54D8E7ULL } }, /* XSUM_XXH128_withSecret_testdata[3246] */ + { 3247, 0x0000000000000000ULL, { 0x7147FFB2AE7057E3ULL, 0xADA58BC60440B504ULL } }, /* XSUM_XXH128_withSecret_testdata[3247] */ + { 3248, 0x0000000000000000ULL, { 0xF93CDDB9E4BDEEF3ULL, 0xDD55D60F53254A58ULL } }, /* XSUM_XXH128_withSecret_testdata[3248] */ + { 3249, 0x0000000000000000ULL, { 0xB26C47203FC0BA4AULL, 0xC0D736D79B2E57DEULL } }, /* XSUM_XXH128_withSecret_testdata[3249] */ + { 3250, 0x0000000000000000ULL, { 0x30928BB6516AD8E9ULL, 0x0E54E4BF003A447BULL } }, /* XSUM_XXH128_withSecret_testdata[3250] */ + { 3251, 0x0000000000000000ULL, { 0xCD68EEB7FFEFEE77ULL, 0x2467A35F659956EFULL } }, /* XSUM_XXH128_withSecret_testdata[3251] */ + { 3252, 0x0000000000000000ULL, { 0x182D8D18B7DA7BAFULL, 0x04DFFEF719F05AD2ULL } }, /* XSUM_XXH128_withSecret_testdata[3252] */ + { 3253, 0x0000000000000000ULL, { 0xEC90638331FFE0EAULL, 0x7E96ECD23E196731ULL } }, /* XSUM_XXH128_withSecret_testdata[3253] */ + { 3254, 0x0000000000000000ULL, { 0x92136719A30FE7C3ULL, 0xFD1B579FDA78F901ULL } }, /* XSUM_XXH128_withSecret_testdata[3254] */ + { 3255, 0x0000000000000000ULL, { 0x4188F703E8995151ULL, 0x6F92EFBAC2BD9239ULL } }, /* XSUM_XXH128_withSecret_testdata[3255] */ + { 3256, 0x0000000000000000ULL, { 0x5FBCAB7C0F5A1A9AULL, 0x4BE3A4E388418D9DULL } }, /* XSUM_XXH128_withSecret_testdata[3256] */ + { 3257, 0x0000000000000000ULL, { 0x3577B9297D0D93E0ULL, 0x25FC11B4F557AD9CULL } }, /* XSUM_XXH128_withSecret_testdata[3257] */ + { 3258, 0x0000000000000000ULL, { 0xEEDDC51C0284D48CULL, 0x9E2EE402F91DBD9BULL } }, /* XSUM_XXH128_withSecret_testdata[3258] */ + { 3259, 0x0000000000000000ULL, { 0xAAE49BBB5A6C03B0ULL, 0xBB4831016CDDB972ULL } }, /* XSUM_XXH128_withSecret_testdata[3259] */ + { 3260, 0x0000000000000000ULL, { 0xE9847176A70B8B77ULL, 0x4F066319907BB1BCULL } }, /* XSUM_XXH128_withSecret_testdata[3260] */ + { 3261, 0x0000000000000000ULL, { 0x451B1206F26996CFULL, 0xA4C7EADB01E6F20CULL } }, /* XSUM_XXH128_withSecret_testdata[3261] */ + { 3262, 0x0000000000000000ULL, { 0x96D2704A4EDF5ED9ULL, 0xE6E9053B4E145AB8ULL } }, /* XSUM_XXH128_withSecret_testdata[3262] */ + { 3263, 0x0000000000000000ULL, { 0xB78D78D2CEDA1298ULL, 0x56397808614D1F0DULL } }, /* XSUM_XXH128_withSecret_testdata[3263] */ + { 3264, 0x0000000000000000ULL, { 0x30E758251E3ABB42ULL, 0x3A674937D5E40222ULL } }, /* XSUM_XXH128_withSecret_testdata[3264] */ + { 3265, 0x0000000000000000ULL, { 0xDC2EEF69D4E8EAE3ULL, 0x0076FB1CA05C1762ULL } }, /* XSUM_XXH128_withSecret_testdata[3265] */ + { 3266, 0x0000000000000000ULL, { 0xC1CCE6D532429655ULL, 0x2023667489118D46ULL } }, /* XSUM_XXH128_withSecret_testdata[3266] */ + { 3267, 0x0000000000000000ULL, { 0xB5365644227C182FULL, 0x4ED76EFAD881DE85ULL } }, /* XSUM_XXH128_withSecret_testdata[3267] */ + { 3268, 0x0000000000000000ULL, { 0x495ADC025DE4FE81ULL, 0x1A4D8296A1B0306DULL } }, /* XSUM_XXH128_withSecret_testdata[3268] */ + { 3269, 0x0000000000000000ULL, { 0x59B76DB9F2595C4DULL, 0x07F327995D4B7232ULL } }, /* XSUM_XXH128_withSecret_testdata[3269] */ + { 3270, 0x0000000000000000ULL, { 0x64F4B76BB4C42F3FULL, 0x3E4FE2A44BC1E066ULL } }, /* XSUM_XXH128_withSecret_testdata[3270] */ + { 3271, 0x0000000000000000ULL, { 0xBB6ADA7A691FAFDFULL, 0x6298AABDEAFC3763ULL } }, /* XSUM_XXH128_withSecret_testdata[3271] */ + { 3272, 0x0000000000000000ULL, { 0x7AFB04DA397BDB6EULL, 0x1AF9F3046B27250EULL } }, /* XSUM_XXH128_withSecret_testdata[3272] */ + { 3273, 0x0000000000000000ULL, { 0x3388D1D5A1BD43F2ULL, 0xE8742E429A1B713EULL } }, /* XSUM_XXH128_withSecret_testdata[3273] */ + { 3274, 0x0000000000000000ULL, { 0xD4B44FC5D63B2CFDULL, 0xF89B9CC67094EA44ULL } }, /* XSUM_XXH128_withSecret_testdata[3274] */ + { 3275, 0x0000000000000000ULL, { 0x1009E1BB12141C55ULL, 0x6651331371A4799BULL } }, /* XSUM_XXH128_withSecret_testdata[3275] */ + { 3276, 0x0000000000000000ULL, { 0x1148520E5409A130ULL, 0x0ECAF470B462CBB7ULL } }, /* XSUM_XXH128_withSecret_testdata[3276] */ + { 3277, 0x0000000000000000ULL, { 0x07DD7D8893705506ULL, 0xFDA205F5058FAF66ULL } }, /* XSUM_XXH128_withSecret_testdata[3277] */ + { 3278, 0x0000000000000000ULL, { 0x5A7E5EE9780970CDULL, 0xFE9204ECE8D04EB6ULL } }, /* XSUM_XXH128_withSecret_testdata[3278] */ + { 3279, 0x0000000000000000ULL, { 0x8FE6E18067B39220ULL, 0x4EDABB93927B6EDEULL } }, /* XSUM_XXH128_withSecret_testdata[3279] */ + { 3280, 0x0000000000000000ULL, { 0xEEF84C2AE2A5730EULL, 0xCD52612070782655ULL } }, /* XSUM_XXH128_withSecret_testdata[3280] */ + { 3281, 0x0000000000000000ULL, { 0x92440C8DDB9D92B3ULL, 0xD067680EA42A8A81ULL } }, /* XSUM_XXH128_withSecret_testdata[3281] */ + { 3282, 0x0000000000000000ULL, { 0xC43FF10C2585ACDEULL, 0xC7493193AE42F45CULL } }, /* XSUM_XXH128_withSecret_testdata[3282] */ + { 3283, 0x0000000000000000ULL, { 0xBB93E04E5654CDB9ULL, 0x1698E9372089CD58ULL } }, /* XSUM_XXH128_withSecret_testdata[3283] */ + { 3284, 0x0000000000000000ULL, { 0xA495E819DA447A59ULL, 0xEAC851BD26534907ULL } }, /* XSUM_XXH128_withSecret_testdata[3284] */ + { 3285, 0x0000000000000000ULL, { 0x85140AB1AB2056F2ULL, 0xE30B8B36978A9733ULL } }, /* XSUM_XXH128_withSecret_testdata[3285] */ + { 3286, 0x0000000000000000ULL, { 0xA7D605BD2B36A010ULL, 0x69FE07354760B857ULL } }, /* XSUM_XXH128_withSecret_testdata[3286] */ + { 3287, 0x0000000000000000ULL, { 0x9DF31DA867F80254ULL, 0xAAAF94ACD1A73962ULL } }, /* XSUM_XXH128_withSecret_testdata[3287] */ + { 3288, 0x0000000000000000ULL, { 0xE4C101854AD46B56ULL, 0xF90BADA9CFF3DB7EULL } }, /* XSUM_XXH128_withSecret_testdata[3288] */ + { 3289, 0x0000000000000000ULL, { 0xE5B20108F51BC39CULL, 0x71DA280C80E0B773ULL } }, /* XSUM_XXH128_withSecret_testdata[3289] */ + { 3290, 0x0000000000000000ULL, { 0xD49B7388BDE1C27AULL, 0x230AFF4E652B49BEULL } }, /* XSUM_XXH128_withSecret_testdata[3290] */ + { 3291, 0x0000000000000000ULL, { 0x3B5930EDB0275616ULL, 0x4D45A5D0489FE6D9ULL } }, /* XSUM_XXH128_withSecret_testdata[3291] */ + { 3292, 0x0000000000000000ULL, { 0x00D797ACF214994EULL, 0x5206D2A6E530E01FULL } }, /* XSUM_XXH128_withSecret_testdata[3292] */ + { 3293, 0x0000000000000000ULL, { 0x91119537BC88F950ULL, 0xDA00103556FB9FC9ULL } }, /* XSUM_XXH128_withSecret_testdata[3293] */ + { 3294, 0x0000000000000000ULL, { 0x48287C9BB49C2670ULL, 0xBAFE3001256FBF3FULL } }, /* XSUM_XXH128_withSecret_testdata[3294] */ + { 3295, 0x0000000000000000ULL, { 0x862AD932ED34EDAAULL, 0x5BB8C29570E602B2ULL } }, /* XSUM_XXH128_withSecret_testdata[3295] */ + { 3296, 0x0000000000000000ULL, { 0xE3F9D6D114BBF9B7ULL, 0x11B26DC269AE200FULL } }, /* XSUM_XXH128_withSecret_testdata[3296] */ + { 3297, 0x0000000000000000ULL, { 0x85B5773D9231AAC3ULL, 0xB77767AFA044ED92ULL } }, /* XSUM_XXH128_withSecret_testdata[3297] */ + { 3298, 0x0000000000000000ULL, { 0x254B00553E101FFEULL, 0x86B0F05D03CA13EFULL } }, /* XSUM_XXH128_withSecret_testdata[3298] */ + { 3299, 0x0000000000000000ULL, { 0x4195D2FD420E6CCEULL, 0xCFB0B9410CA408AEULL } }, /* XSUM_XXH128_withSecret_testdata[3299] */ + { 3300, 0x0000000000000000ULL, { 0xCCD350CD5CFB6ECBULL, 0xDB8B39151927824FULL } }, /* XSUM_XXH128_withSecret_testdata[3300] */ + { 3301, 0x0000000000000000ULL, { 0xC5ABBB0329F83D2DULL, 0x291EAE66DFD71EB7ULL } }, /* XSUM_XXH128_withSecret_testdata[3301] */ + { 3302, 0x0000000000000000ULL, { 0xF1F22B9E046FC2B0ULL, 0x134DAC60C0B2AD97ULL } }, /* XSUM_XXH128_withSecret_testdata[3302] */ + { 3303, 0x0000000000000000ULL, { 0x5A21565F187E49B2ULL, 0x45E1C2CEFF26AE06ULL } }, /* XSUM_XXH128_withSecret_testdata[3303] */ + { 3304, 0x0000000000000000ULL, { 0xF8864AE64FD2E35EULL, 0x98F09CAFD5DAEE11ULL } }, /* XSUM_XXH128_withSecret_testdata[3304] */ + { 3305, 0x0000000000000000ULL, { 0x0E0DF6F5AC512303ULL, 0x2947BD1E79576C8FULL } }, /* XSUM_XXH128_withSecret_testdata[3305] */ + { 3306, 0x0000000000000000ULL, { 0x241137A1E90532C2ULL, 0x30A53CC80B8A95CAULL } }, /* XSUM_XXH128_withSecret_testdata[3306] */ + { 3307, 0x0000000000000000ULL, { 0x69131DBC1BCE80D5ULL, 0xE6B58E06BC7560FEULL } }, /* XSUM_XXH128_withSecret_testdata[3307] */ + { 3308, 0x0000000000000000ULL, { 0x971AE3846A3E0DD8ULL, 0x5C4A5F302F6A9E90ULL } }, /* XSUM_XXH128_withSecret_testdata[3308] */ + { 3309, 0x0000000000000000ULL, { 0xCC26928F2A3914EBULL, 0xC999247513187868ULL } }, /* XSUM_XXH128_withSecret_testdata[3309] */ + { 3310, 0x0000000000000000ULL, { 0x765885B0A2C43AD7ULL, 0xA3E05A08E67F45BAULL } }, /* XSUM_XXH128_withSecret_testdata[3310] */ + { 3311, 0x0000000000000000ULL, { 0xA0AAF79C407D828FULL, 0xBD215A7BF1CBEB48ULL } }, /* XSUM_XXH128_withSecret_testdata[3311] */ + { 3312, 0x0000000000000000ULL, { 0x58AED2BDC5A0501AULL, 0x1637CB8CE94E64C6ULL } }, /* XSUM_XXH128_withSecret_testdata[3312] */ + { 3313, 0x0000000000000000ULL, { 0x75B6E58CF5AEA735ULL, 0xD7820744C794B5F7ULL } }, /* XSUM_XXH128_withSecret_testdata[3313] */ + { 3314, 0x0000000000000000ULL, { 0xF5443445D5F02406ULL, 0x11A365359402096AULL } }, /* XSUM_XXH128_withSecret_testdata[3314] */ + { 3315, 0x0000000000000000ULL, { 0xC8AE4A0700F4BB6DULL, 0x0BA6B27F6098E47AULL } }, /* XSUM_XXH128_withSecret_testdata[3315] */ + { 3316, 0x0000000000000000ULL, { 0xD1A2F329AA5E7186ULL, 0x554C915DFD8DAF85ULL } }, /* XSUM_XXH128_withSecret_testdata[3316] */ + { 3317, 0x0000000000000000ULL, { 0x8474A93D2E092B76ULL, 0xF7D55F1D3B1C61FCULL } }, /* XSUM_XXH128_withSecret_testdata[3317] */ + { 3318, 0x0000000000000000ULL, { 0xEFD2D9C0171BC450ULL, 0x10D07A499EA79191ULL } }, /* XSUM_XXH128_withSecret_testdata[3318] */ + { 3319, 0x0000000000000000ULL, { 0xA8EAAD936EFC9644ULL, 0x59D1A9CC904F3F39ULL } }, /* XSUM_XXH128_withSecret_testdata[3319] */ + { 3320, 0x0000000000000000ULL, { 0x3154F45940979876ULL, 0xF36A46866D444CF1ULL } }, /* XSUM_XXH128_withSecret_testdata[3320] */ + { 3321, 0x0000000000000000ULL, { 0x6867827F42D85DA1ULL, 0xBFED00F5EFF4DE50ULL } }, /* XSUM_XXH128_withSecret_testdata[3321] */ + { 3322, 0x0000000000000000ULL, { 0x27D35C66A2078647ULL, 0xA71908D29764B4DBULL } }, /* XSUM_XXH128_withSecret_testdata[3322] */ + { 3323, 0x0000000000000000ULL, { 0x1FB48A7BB6C7E866ULL, 0x7B1D0467CFE948C7ULL } }, /* XSUM_XXH128_withSecret_testdata[3323] */ + { 3324, 0x0000000000000000ULL, { 0xACCF0955174A0FB6ULL, 0x2DC1A46825AB6891ULL } }, /* XSUM_XXH128_withSecret_testdata[3324] */ + { 3325, 0x0000000000000000ULL, { 0xDBBBC8EA97F0AB5CULL, 0xF2362ADFC99C88F5ULL } }, /* XSUM_XXH128_withSecret_testdata[3325] */ + { 3326, 0x0000000000000000ULL, { 0x2E0B6A9C942F0179ULL, 0xC4BC67E47E48D457ULL } }, /* XSUM_XXH128_withSecret_testdata[3326] */ + { 3327, 0x0000000000000000ULL, { 0xD9024DB1AB2DB04AULL, 0x15C30CAF9D610202ULL } }, /* XSUM_XXH128_withSecret_testdata[3327] */ + { 3328, 0x0000000000000000ULL, { 0x22BE7EC41F5881ACULL, 0xEB6A0D08549F4874ULL } }, /* XSUM_XXH128_withSecret_testdata[3328] */ + { 3329, 0x0000000000000000ULL, { 0x5FDA9CB1BECAE68BULL, 0x171C2075F6A0A0C7ULL } }, /* XSUM_XXH128_withSecret_testdata[3329] */ + { 3330, 0x0000000000000000ULL, { 0xCBC6EA773CF5F46AULL, 0x976DC66C4593FE89ULL } }, /* XSUM_XXH128_withSecret_testdata[3330] */ + { 3331, 0x0000000000000000ULL, { 0x3289D61E07B72947ULL, 0x25480310C116ED0CULL } }, /* XSUM_XXH128_withSecret_testdata[3331] */ + { 3332, 0x0000000000000000ULL, { 0x1DA621CFECD5322AULL, 0x0AA7E56841AF058FULL } }, /* XSUM_XXH128_withSecret_testdata[3332] */ + { 3333, 0x0000000000000000ULL, { 0x581102C840775F6EULL, 0x7E8A406074C05C26ULL } }, /* XSUM_XXH128_withSecret_testdata[3333] */ + { 3334, 0x0000000000000000ULL, { 0xB7514DC2DCD88519ULL, 0x363E723103658207ULL } }, /* XSUM_XXH128_withSecret_testdata[3334] */ + { 3335, 0x0000000000000000ULL, { 0xD5148C3FFC895731ULL, 0x036E6DF7AC6D8CB3ULL } }, /* XSUM_XXH128_withSecret_testdata[3335] */ + { 3336, 0x0000000000000000ULL, { 0xDEBCC70AAE8E3F39ULL, 0x82AD8EFBF455C43AULL } }, /* XSUM_XXH128_withSecret_testdata[3336] */ + { 3337, 0x0000000000000000ULL, { 0xDAFFE55F387D7D0BULL, 0x2AB7798C9101D559ULL } }, /* XSUM_XXH128_withSecret_testdata[3337] */ + { 3338, 0x0000000000000000ULL, { 0x4B31BD84C077BFF3ULL, 0x54DD6FD1D30CF542ULL } }, /* XSUM_XXH128_withSecret_testdata[3338] */ + { 3339, 0x0000000000000000ULL, { 0x69C7CFD19DE68375ULL, 0xA796B4029CED80C3ULL } }, /* XSUM_XXH128_withSecret_testdata[3339] */ + { 3340, 0x0000000000000000ULL, { 0x8A75EDF821F67D68ULL, 0x0BCD22006480D850ULL } }, /* XSUM_XXH128_withSecret_testdata[3340] */ + { 3341, 0x0000000000000000ULL, { 0x72656CBBF2D41FE6ULL, 0x79144679878EC2DBULL } }, /* XSUM_XXH128_withSecret_testdata[3341] */ + { 3342, 0x0000000000000000ULL, { 0x01D34BADE4436B21ULL, 0x6DD86FC1042F67C3ULL } }, /* XSUM_XXH128_withSecret_testdata[3342] */ + { 3343, 0x0000000000000000ULL, { 0xE9DFCFC7698F5745ULL, 0xB8C2F8CCBA8ECB08ULL } }, /* XSUM_XXH128_withSecret_testdata[3343] */ + { 3344, 0x0000000000000000ULL, { 0x86F52912C82257BBULL, 0xA5A71D83EDBB0CF7ULL } }, /* XSUM_XXH128_withSecret_testdata[3344] */ + { 3345, 0x0000000000000000ULL, { 0xDCD247235E0F57F4ULL, 0x2D93A2AB116FBAB9ULL } }, /* XSUM_XXH128_withSecret_testdata[3345] */ + { 3346, 0x0000000000000000ULL, { 0x32962431CB54C379ULL, 0xAB1986325684229DULL } }, /* XSUM_XXH128_withSecret_testdata[3346] */ + { 3347, 0x0000000000000000ULL, { 0xC6101795110831C5ULL, 0x16D45DEC619162DCULL } }, /* XSUM_XXH128_withSecret_testdata[3347] */ + { 3348, 0x0000000000000000ULL, { 0xFCC02E23C7FE6354ULL, 0x09E21A9FCF9C5453ULL } }, /* XSUM_XXH128_withSecret_testdata[3348] */ + { 3349, 0x0000000000000000ULL, { 0x717E9FB2891FFCF2ULL, 0xE5BFC149B7629E74ULL } }, /* XSUM_XXH128_withSecret_testdata[3349] */ + { 3350, 0x0000000000000000ULL, { 0x1A11A562F5D6FF4AULL, 0x7373829ED7516844ULL } }, /* XSUM_XXH128_withSecret_testdata[3350] */ + { 3351, 0x0000000000000000ULL, { 0x20E380F25BF86BCCULL, 0xB0A5370E68CF85EEULL } }, /* XSUM_XXH128_withSecret_testdata[3351] */ + { 3352, 0x0000000000000000ULL, { 0xE1236EE4B1313B4EULL, 0x7A711312A45C750EULL } }, /* XSUM_XXH128_withSecret_testdata[3352] */ + { 3353, 0x0000000000000000ULL, { 0xCFC1CB67F77C950FULL, 0x0687B7769D1751C2ULL } }, /* XSUM_XXH128_withSecret_testdata[3353] */ + { 3354, 0x0000000000000000ULL, { 0xC44B23226042A290ULL, 0xD7B9C316FD916A9FULL } }, /* XSUM_XXH128_withSecret_testdata[3354] */ + { 3355, 0x0000000000000000ULL, { 0x8EB724FDC15B92B9ULL, 0x316F58EF9A5A8FA6ULL } }, /* XSUM_XXH128_withSecret_testdata[3355] */ + { 3356, 0x0000000000000000ULL, { 0xC3FB53E431E565D4ULL, 0xCCC3A3339612FA4EULL } }, /* XSUM_XXH128_withSecret_testdata[3356] */ + { 3357, 0x0000000000000000ULL, { 0x2AAA176CF7123037ULL, 0x71D7F3D826231D2AULL } }, /* XSUM_XXH128_withSecret_testdata[3357] */ + { 3358, 0x0000000000000000ULL, { 0x9777A22355C740F0ULL, 0x14C8D524D47EAF27ULL } }, /* XSUM_XXH128_withSecret_testdata[3358] */ + { 3359, 0x0000000000000000ULL, { 0xF1D1D1E98F215748ULL, 0x2CDD641C04C3DCF8ULL } }, /* XSUM_XXH128_withSecret_testdata[3359] */ + { 3360, 0x0000000000000000ULL, { 0x37F269BD32EB4DF6ULL, 0x9A89358DECD5A08DULL } }, /* XSUM_XXH128_withSecret_testdata[3360] */ + { 3361, 0x0000000000000000ULL, { 0xC2948418FA69D5B0ULL, 0xF92ABE87C8EEA6BFULL } }, /* XSUM_XXH128_withSecret_testdata[3361] */ + { 3362, 0x0000000000000000ULL, { 0xCDB58B11E43CE594ULL, 0xF27B43D9B784F312ULL } }, /* XSUM_XXH128_withSecret_testdata[3362] */ + { 3363, 0x0000000000000000ULL, { 0x7386CD87F857E8FFULL, 0xCC2D3F28B4C9B07EULL } }, /* XSUM_XXH128_withSecret_testdata[3363] */ + { 3364, 0x0000000000000000ULL, { 0xCB908BBE4BF4115AULL, 0xA123CAD22B16C28BULL } }, /* XSUM_XXH128_withSecret_testdata[3364] */ + { 3365, 0x0000000000000000ULL, { 0xBC04E85A82136D9DULL, 0x3B1BD97D1E57EFE8ULL } }, /* XSUM_XXH128_withSecret_testdata[3365] */ + { 3366, 0x0000000000000000ULL, { 0xA074DFB34D9C8159ULL, 0xDCD19B0500218C5AULL } }, /* XSUM_XXH128_withSecret_testdata[3366] */ + { 3367, 0x0000000000000000ULL, { 0xE104838A3794A121ULL, 0x3A86EDA4AA44A7EDULL } }, /* XSUM_XXH128_withSecret_testdata[3367] */ + { 3368, 0x0000000000000000ULL, { 0x8D9535A0589E87DEULL, 0x392138C19C42756DULL } }, /* XSUM_XXH128_withSecret_testdata[3368] */ + { 3369, 0x0000000000000000ULL, { 0x8C7E2E952E9582E1ULL, 0x3FC569347E8559ABULL } }, /* XSUM_XXH128_withSecret_testdata[3369] */ + { 3370, 0x0000000000000000ULL, { 0x36429AC325D34750ULL, 0x6D025E486229758FULL } }, /* XSUM_XXH128_withSecret_testdata[3370] */ + { 3371, 0x0000000000000000ULL, { 0x337C994A4E29F517ULL, 0x5698ED82626EDA40ULL } }, /* XSUM_XXH128_withSecret_testdata[3371] */ + { 3372, 0x0000000000000000ULL, { 0x27A7DAF417F30136ULL, 0x696CC8EF3053E9D5ULL } }, /* XSUM_XXH128_withSecret_testdata[3372] */ + { 3373, 0x0000000000000000ULL, { 0x2BAFE1E23A552CC2ULL, 0xEEA73AD9CB549F35ULL } }, /* XSUM_XXH128_withSecret_testdata[3373] */ + { 3374, 0x0000000000000000ULL, { 0x24111ED11860681BULL, 0xC1B70D4917938782ULL } }, /* XSUM_XXH128_withSecret_testdata[3374] */ + { 3375, 0x0000000000000000ULL, { 0xFF3E50967E0B68C5ULL, 0xE07CF290164C38F7ULL } }, /* XSUM_XXH128_withSecret_testdata[3375] */ + { 3376, 0x0000000000000000ULL, { 0x5F77AD45130555B9ULL, 0xF4F5282C363E6C9CULL } }, /* XSUM_XXH128_withSecret_testdata[3376] */ + { 3377, 0x0000000000000000ULL, { 0x91EBB464DF8A0BB2ULL, 0xE2A5149229ED22B9ULL } }, /* XSUM_XXH128_withSecret_testdata[3377] */ + { 3378, 0x0000000000000000ULL, { 0xE3F92F8355BC4A2BULL, 0x7F2E0BDBC676E674ULL } }, /* XSUM_XXH128_withSecret_testdata[3378] */ + { 3379, 0x0000000000000000ULL, { 0xB26A54C0DB52120FULL, 0x0988386A3A481D2BULL } }, /* XSUM_XXH128_withSecret_testdata[3379] */ + { 3380, 0x0000000000000000ULL, { 0x236F061D731241E9ULL, 0x64CE68CE28F85F93ULL } }, /* XSUM_XXH128_withSecret_testdata[3380] */ + { 3381, 0x0000000000000000ULL, { 0x80951F0AAF6F69F3ULL, 0x1E7C7504CA1592CCULL } }, /* XSUM_XXH128_withSecret_testdata[3381] */ + { 3382, 0x0000000000000000ULL, { 0x8D4E6C9A4B81E8CEULL, 0x77EBD5C2E1F94758ULL } }, /* XSUM_XXH128_withSecret_testdata[3382] */ + { 3383, 0x0000000000000000ULL, { 0xDCF18FC251E124B4ULL, 0xD6D3F4D63B8E2D1BULL } }, /* XSUM_XXH128_withSecret_testdata[3383] */ + { 3384, 0x0000000000000000ULL, { 0x0BAFB9DF872E349AULL, 0xF7099173F14148FBULL } }, /* XSUM_XXH128_withSecret_testdata[3384] */ + { 3385, 0x0000000000000000ULL, { 0x991EBBFC2C40A6DDULL, 0x3C3D145B35BB32A4ULL } }, /* XSUM_XXH128_withSecret_testdata[3385] */ + { 3386, 0x0000000000000000ULL, { 0x3DEF4AAE67B96ECDULL, 0x33E89514CCB9063FULL } }, /* XSUM_XXH128_withSecret_testdata[3386] */ + { 3387, 0x0000000000000000ULL, { 0x6845EC17968F7B7AULL, 0x19277B7044C27B38ULL } }, /* XSUM_XXH128_withSecret_testdata[3387] */ + { 3388, 0x0000000000000000ULL, { 0x05849C1F2D68ECC0ULL, 0xDD8CE9D7A45AF4CBULL } }, /* XSUM_XXH128_withSecret_testdata[3388] */ + { 3389, 0x0000000000000000ULL, { 0x3DB3176DC226A032ULL, 0xDB5276C2A68E6485ULL } }, /* XSUM_XXH128_withSecret_testdata[3389] */ + { 3390, 0x0000000000000000ULL, { 0xC81C6F3080B6E009ULL, 0xC20905992B379C78ULL } }, /* XSUM_XXH128_withSecret_testdata[3390] */ + { 3391, 0x0000000000000000ULL, { 0x42E42EB70B7207D1ULL, 0x3F14E6B904364407ULL } }, /* XSUM_XXH128_withSecret_testdata[3391] */ + { 3392, 0x0000000000000000ULL, { 0x82FA4358B988550DULL, 0xB3FEEB82E0DA8305ULL } }, /* XSUM_XXH128_withSecret_testdata[3392] */ + { 3393, 0x0000000000000000ULL, { 0x093C69D9241951C5ULL, 0xC8FC838893013BE1ULL } }, /* XSUM_XXH128_withSecret_testdata[3393] */ + { 3394, 0x0000000000000000ULL, { 0xB9782191AD905FA7ULL, 0x97B10B1AD125B5A2ULL } }, /* XSUM_XXH128_withSecret_testdata[3394] */ + { 3395, 0x0000000000000000ULL, { 0x5ACD4F5C19F7D7A8ULL, 0xC09469572A1AD6BBULL } }, /* XSUM_XXH128_withSecret_testdata[3395] */ + { 3396, 0x0000000000000000ULL, { 0xD78563937BE06A6CULL, 0x4BFC2604E7E0A2AEULL } }, /* XSUM_XXH128_withSecret_testdata[3396] */ + { 3397, 0x0000000000000000ULL, { 0x7B583784D1ABF630ULL, 0x11E7D1143CAC2431ULL } }, /* XSUM_XXH128_withSecret_testdata[3397] */ + { 3398, 0x0000000000000000ULL, { 0x34A3E1EDB4806DE4ULL, 0x21EBD6AF050EE60DULL } }, /* XSUM_XXH128_withSecret_testdata[3398] */ + { 3399, 0x0000000000000000ULL, { 0x258BAD758E0FAC7CULL, 0x4CA46EF94B24B47AULL } }, /* XSUM_XXH128_withSecret_testdata[3399] */ + { 3400, 0x0000000000000000ULL, { 0x79BA922E496E37A4ULL, 0xC690CC9B0A07F5B7ULL } }, /* XSUM_XXH128_withSecret_testdata[3400] */ + { 3401, 0x0000000000000000ULL, { 0xD2C6D271ED08F4FBULL, 0xDE521D48F762C361ULL } }, /* XSUM_XXH128_withSecret_testdata[3401] */ + { 3402, 0x0000000000000000ULL, { 0x777E2F00B8C6C6B1ULL, 0x9142D5FFBE2095C2ULL } }, /* XSUM_XXH128_withSecret_testdata[3402] */ + { 3403, 0x0000000000000000ULL, { 0xA33A36F54892C4C2ULL, 0x25E1BBCEEC7DBE7EULL } }, /* XSUM_XXH128_withSecret_testdata[3403] */ + { 3404, 0x0000000000000000ULL, { 0x83D54CC50F2B4C82ULL, 0xA4F12C3FC45973F5ULL } }, /* XSUM_XXH128_withSecret_testdata[3404] */ + { 3405, 0x0000000000000000ULL, { 0xB86A5DEAFA888777ULL, 0x522ADA5EDB2E3F69ULL } }, /* XSUM_XXH128_withSecret_testdata[3405] */ + { 3406, 0x0000000000000000ULL, { 0x93394DCB88F3233CULL, 0xA26F2BE4F65CE029ULL } }, /* XSUM_XXH128_withSecret_testdata[3406] */ + { 3407, 0x0000000000000000ULL, { 0xAB29CE5CD9E87492ULL, 0x368C44E102ECD32DULL } }, /* XSUM_XXH128_withSecret_testdata[3407] */ + { 3408, 0x0000000000000000ULL, { 0xD24C131AA2728CDFULL, 0xFC2E72131409DB8BULL } }, /* XSUM_XXH128_withSecret_testdata[3408] */ + { 3409, 0x0000000000000000ULL, { 0xEC1AA50643F6BEB4ULL, 0x08212BBEA0569524ULL } }, /* XSUM_XXH128_withSecret_testdata[3409] */ + { 3410, 0x0000000000000000ULL, { 0xDC8CC90497C3070AULL, 0x0C1E536BD4CADA60ULL } }, /* XSUM_XXH128_withSecret_testdata[3410] */ + { 3411, 0x0000000000000000ULL, { 0xCDF848036CC2D584ULL, 0x73D8212F897B48B0ULL } }, /* XSUM_XXH128_withSecret_testdata[3411] */ + { 3412, 0x0000000000000000ULL, { 0xF5FF7497697376B5ULL, 0x41701BBB3F58C6C1ULL } }, /* XSUM_XXH128_withSecret_testdata[3412] */ + { 3413, 0x0000000000000000ULL, { 0x61AEB2965FC007F9ULL, 0x73451FF564161836ULL } }, /* XSUM_XXH128_withSecret_testdata[3413] */ + { 3414, 0x0000000000000000ULL, { 0xC8331389EE21A290ULL, 0x1E0CC3E6B16EDC4FULL } }, /* XSUM_XXH128_withSecret_testdata[3414] */ + { 3415, 0x0000000000000000ULL, { 0xD25ACAD6E45BEC7EULL, 0x41CD62B6AC9B6223ULL } }, /* XSUM_XXH128_withSecret_testdata[3415] */ + { 3416, 0x0000000000000000ULL, { 0x9C79AD9A2989B5B0ULL, 0x3280D6D48623B6F2ULL } }, /* XSUM_XXH128_withSecret_testdata[3416] */ + { 3417, 0x0000000000000000ULL, { 0x7B7A9186400259C3ULL, 0x6CF13B54342B7D6EULL } }, /* XSUM_XXH128_withSecret_testdata[3417] */ + { 3418, 0x0000000000000000ULL, { 0xC090B82039D98D66ULL, 0x0AB00B4A337A09B4ULL } }, /* XSUM_XXH128_withSecret_testdata[3418] */ + { 3419, 0x0000000000000000ULL, { 0x1616EFC6B06CE942ULL, 0x13218CAF43474D32ULL } }, /* XSUM_XXH128_withSecret_testdata[3419] */ + { 3420, 0x0000000000000000ULL, { 0x536959E69DDBDA4DULL, 0x4ABE26A508980417ULL } }, /* XSUM_XXH128_withSecret_testdata[3420] */ + { 3421, 0x0000000000000000ULL, { 0x308BC74EAD14A59EULL, 0x457267AE3CDEA9B6ULL } }, /* XSUM_XXH128_withSecret_testdata[3421] */ + { 3422, 0x0000000000000000ULL, { 0xE9E96C5C85C6E33DULL, 0x6D56A757F2AB3FDAULL } }, /* XSUM_XXH128_withSecret_testdata[3422] */ + { 3423, 0x0000000000000000ULL, { 0x97B51867A23476C7ULL, 0x14C67E58FCF4E5B9ULL } }, /* XSUM_XXH128_withSecret_testdata[3423] */ + { 3424, 0x0000000000000000ULL, { 0xDBA270BBD09D0382ULL, 0x631864BF1C2DA5CDULL } }, /* XSUM_XXH128_withSecret_testdata[3424] */ + { 3425, 0x0000000000000000ULL, { 0x2B3A9E8D9890E5EDULL, 0xF67BBAD02EDE0C64ULL } }, /* XSUM_XXH128_withSecret_testdata[3425] */ + { 3426, 0x0000000000000000ULL, { 0xB8AEDCB04D901184ULL, 0x3A1C0DC9FA5D2BE2ULL } }, /* XSUM_XXH128_withSecret_testdata[3426] */ + { 3427, 0x0000000000000000ULL, { 0x72973E93DD568423ULL, 0x55C83C56B6C856D8ULL } }, /* XSUM_XXH128_withSecret_testdata[3427] */ + { 3428, 0x0000000000000000ULL, { 0x8642362E361F385BULL, 0x6342142225691F92ULL } }, /* XSUM_XXH128_withSecret_testdata[3428] */ + { 3429, 0x0000000000000000ULL, { 0xEA93D41FC4BE6EF3ULL, 0x51D889B5FAAA6E64ULL } }, /* XSUM_XXH128_withSecret_testdata[3429] */ + { 3430, 0x0000000000000000ULL, { 0x53A9D7804532B024ULL, 0x79FA36A53E8A8916ULL } }, /* XSUM_XXH128_withSecret_testdata[3430] */ + { 3431, 0x0000000000000000ULL, { 0x0D6669392B360D1AULL, 0x02B5BC4804DD0D45ULL } }, /* XSUM_XXH128_withSecret_testdata[3431] */ + { 3432, 0x0000000000000000ULL, { 0xD61A6DDFF9192A4AULL, 0x659ED00610061E2FULL } }, /* XSUM_XXH128_withSecret_testdata[3432] */ + { 3433, 0x0000000000000000ULL, { 0x258EF23516BA0AD6ULL, 0x0C05DA7D4BD64F69ULL } }, /* XSUM_XXH128_withSecret_testdata[3433] */ + { 3434, 0x0000000000000000ULL, { 0x1D8F02DB1F6D895AULL, 0xB5B1CE361619A9BDULL } }, /* XSUM_XXH128_withSecret_testdata[3434] */ + { 3435, 0x0000000000000000ULL, { 0x1731E194D0768893ULL, 0x496FB332747E1010ULL } }, /* XSUM_XXH128_withSecret_testdata[3435] */ + { 3436, 0x0000000000000000ULL, { 0xD5535C6A2B10C987ULL, 0x400DF91951A4BAA5ULL } }, /* XSUM_XXH128_withSecret_testdata[3436] */ + { 3437, 0x0000000000000000ULL, { 0x283020A907CF151AULL, 0xB6022CE6AE3A191FULL } }, /* XSUM_XXH128_withSecret_testdata[3437] */ + { 3438, 0x0000000000000000ULL, { 0xF70ACA1841EE13BEULL, 0xA81D100EB4B3FAA4ULL } }, /* XSUM_XXH128_withSecret_testdata[3438] */ + { 3439, 0x0000000000000000ULL, { 0x4293F1911E7B457FULL, 0x021806193936A129ULL } }, /* XSUM_XXH128_withSecret_testdata[3439] */ + { 3440, 0x0000000000000000ULL, { 0xFFF9BF31E101EBF5ULL, 0x19776C5EB0ED8184ULL } }, /* XSUM_XXH128_withSecret_testdata[3440] */ + { 3441, 0x0000000000000000ULL, { 0xFA3ACD1C15F4A837ULL, 0xBAD86D2A528591C0ULL } }, /* XSUM_XXH128_withSecret_testdata[3441] */ + { 3442, 0x0000000000000000ULL, { 0x94CFFAD4CA5A5B35ULL, 0xFE8E196824E6C127ULL } }, /* XSUM_XXH128_withSecret_testdata[3442] */ + { 3443, 0x0000000000000000ULL, { 0xEFAC9A8E9C224383ULL, 0xC8148C32B9DC24F8ULL } }, /* XSUM_XXH128_withSecret_testdata[3443] */ + { 3444, 0x0000000000000000ULL, { 0x55F6012D99ADCC77ULL, 0xB45E3C6F7D93144CULL } }, /* XSUM_XXH128_withSecret_testdata[3444] */ + { 3445, 0x0000000000000000ULL, { 0xF9D085CD6FD41AC1ULL, 0x51760575D6F9453CULL } }, /* XSUM_XXH128_withSecret_testdata[3445] */ + { 3446, 0x0000000000000000ULL, { 0x75EAF0D20198628BULL, 0x7D7A45A2E061CE0EULL } }, /* XSUM_XXH128_withSecret_testdata[3446] */ + { 3447, 0x0000000000000000ULL, { 0xC989C6AD9C5AF1E3ULL, 0x155FA2B3A77C9234ULL } }, /* XSUM_XXH128_withSecret_testdata[3447] */ + { 3448, 0x0000000000000000ULL, { 0x684DF3EBFD7F9B21ULL, 0x8ACCD850ADEA0140ULL } }, /* XSUM_XXH128_withSecret_testdata[3448] */ + { 3449, 0x0000000000000000ULL, { 0x3EC4EEDFC8418706ULL, 0x75527CCAA4EA9965ULL } }, /* XSUM_XXH128_withSecret_testdata[3449] */ + { 3450, 0x0000000000000000ULL, { 0x3C7F7AA726BFFCD3ULL, 0xF62E0F714655C018ULL } }, /* XSUM_XXH128_withSecret_testdata[3450] */ + { 3451, 0x0000000000000000ULL, { 0x9F4A22AD503F31CCULL, 0x3CE6C411CBA36F39ULL } }, /* XSUM_XXH128_withSecret_testdata[3451] */ + { 3452, 0x0000000000000000ULL, { 0x5544A4478AB92340ULL, 0x919C82BBB281AE3EULL } }, /* XSUM_XXH128_withSecret_testdata[3452] */ + { 3453, 0x0000000000000000ULL, { 0x7913996FC7843BD6ULL, 0x2EC8C9529EAAE765ULL } }, /* XSUM_XXH128_withSecret_testdata[3453] */ + { 3454, 0x0000000000000000ULL, { 0x668F78CFD1C07BD1ULL, 0x3A54FB6FD41015E6ULL } }, /* XSUM_XXH128_withSecret_testdata[3454] */ + { 3455, 0x0000000000000000ULL, { 0xDC83E3831178BA1BULL, 0xBD4D6AADEF59B45DULL } }, /* XSUM_XXH128_withSecret_testdata[3455] */ + { 3456, 0x0000000000000000ULL, { 0xBD3FC86BB5AC2B3CULL, 0x7E135CFF5E0A680AULL } }, /* XSUM_XXH128_withSecret_testdata[3456] */ + { 3457, 0x0000000000000000ULL, { 0xB5D6A0E431E5326FULL, 0x8400C48BBF3889D0ULL } }, /* XSUM_XXH128_withSecret_testdata[3457] */ + { 3458, 0x0000000000000000ULL, { 0x3F96397D0AEE13FAULL, 0xA6E854259A581FD3ULL } }, /* XSUM_XXH128_withSecret_testdata[3458] */ + { 3459, 0x0000000000000000ULL, { 0xA057BB7D8FFBE4EFULL, 0x5DBCFA1F62085B4FULL } }, /* XSUM_XXH128_withSecret_testdata[3459] */ + { 3460, 0x0000000000000000ULL, { 0x0B5B3120716A277DULL, 0x17138E39E68BFE13ULL } }, /* XSUM_XXH128_withSecret_testdata[3460] */ + { 3461, 0x0000000000000000ULL, { 0x3ADD2BAED9FBB522ULL, 0x41D062878408AB10ULL } }, /* XSUM_XXH128_withSecret_testdata[3461] */ + { 3462, 0x0000000000000000ULL, { 0x9F5D67039AA7B20AULL, 0x126CD3630B2270A6ULL } }, /* XSUM_XXH128_withSecret_testdata[3462] */ + { 3463, 0x0000000000000000ULL, { 0xED541A1A74A8E0D6ULL, 0x54741D036E8EDCDCULL } }, /* XSUM_XXH128_withSecret_testdata[3463] */ + { 3464, 0x0000000000000000ULL, { 0x21A1B9C81F31BD56ULL, 0xDDDD6FAABC3385E5ULL } }, /* XSUM_XXH128_withSecret_testdata[3464] */ + { 3465, 0x0000000000000000ULL, { 0x2AB63DF73A5FD82BULL, 0xF007ECB319CCDBE8ULL } }, /* XSUM_XXH128_withSecret_testdata[3465] */ + { 3466, 0x0000000000000000ULL, { 0xA13D48E366FE694FULL, 0x60C9619A598700E2ULL } }, /* XSUM_XXH128_withSecret_testdata[3466] */ + { 3467, 0x0000000000000000ULL, { 0xCBC1A8BC9E23A2C8ULL, 0xEB47F9F5025315A7ULL } }, /* XSUM_XXH128_withSecret_testdata[3467] */ + { 3468, 0x0000000000000000ULL, { 0xBE271DEE6955B1F8ULL, 0x19CC18A66CE9F47AULL } }, /* XSUM_XXH128_withSecret_testdata[3468] */ + { 3469, 0x0000000000000000ULL, { 0xA4AC7A4DD33CB54EULL, 0x5DE64DDDBD5A8D4CULL } }, /* XSUM_XXH128_withSecret_testdata[3469] */ + { 3470, 0x0000000000000000ULL, { 0x7A33C76C43E97C63ULL, 0xAC28B1BF3A550C43ULL } }, /* XSUM_XXH128_withSecret_testdata[3470] */ + { 3471, 0x0000000000000000ULL, { 0x36098BE82B1D6630ULL, 0x187B0A5D8317E68EULL } }, /* XSUM_XXH128_withSecret_testdata[3471] */ + { 3472, 0x0000000000000000ULL, { 0x7F361C40279A7156ULL, 0x4E53129778BAC9CBULL } }, /* XSUM_XXH128_withSecret_testdata[3472] */ + { 3473, 0x0000000000000000ULL, { 0x2CC810852E1BB733ULL, 0x1824A8D9526F0225ULL } }, /* XSUM_XXH128_withSecret_testdata[3473] */ + { 3474, 0x0000000000000000ULL, { 0xC0CA765A630B30ADULL, 0x4C4235724AA154BDULL } }, /* XSUM_XXH128_withSecret_testdata[3474] */ + { 3475, 0x0000000000000000ULL, { 0x1B97DC802A05F93EULL, 0xDF1A38B8690CA225ULL } }, /* XSUM_XXH128_withSecret_testdata[3475] */ + { 3476, 0x0000000000000000ULL, { 0x9BE7B4728943211FULL, 0x7386A997D9952D9DULL } }, /* XSUM_XXH128_withSecret_testdata[3476] */ + { 3477, 0x0000000000000000ULL, { 0x46024E5F8747440EULL, 0x38EAC25C786ECA74ULL } }, /* XSUM_XXH128_withSecret_testdata[3477] */ + { 3478, 0x0000000000000000ULL, { 0x3611EB1A2CA4FE01ULL, 0x90B4BE1FDD43869AULL } }, /* XSUM_XXH128_withSecret_testdata[3478] */ + { 3479, 0x0000000000000000ULL, { 0x3D5E5E1369724D8FULL, 0x38F48A2B2D1BF750ULL } }, /* XSUM_XXH128_withSecret_testdata[3479] */ + { 3480, 0x0000000000000000ULL, { 0x3777657FE0E2103AULL, 0xE7CAD7782EB97BD5ULL } }, /* XSUM_XXH128_withSecret_testdata[3480] */ + { 3481, 0x0000000000000000ULL, { 0x1182DAAB985250A5ULL, 0x7BF5F8FCA471D3FAULL } }, /* XSUM_XXH128_withSecret_testdata[3481] */ + { 3482, 0x0000000000000000ULL, { 0x9D72547E8773AA1FULL, 0x30D743F6B06442D7ULL } }, /* XSUM_XXH128_withSecret_testdata[3482] */ + { 3483, 0x0000000000000000ULL, { 0x022316F49083EEA8ULL, 0x8D3EB9905CA435E6ULL } }, /* XSUM_XXH128_withSecret_testdata[3483] */ + { 3484, 0x0000000000000000ULL, { 0xF4DD6BCAC532838CULL, 0x3AE6B8FFAC2CB508ULL } }, /* XSUM_XXH128_withSecret_testdata[3484] */ + { 3485, 0x0000000000000000ULL, { 0x0C1A9A078ADB82E6ULL, 0xE02A2A18DBFBBDB7ULL } }, /* XSUM_XXH128_withSecret_testdata[3485] */ + { 3486, 0x0000000000000000ULL, { 0xD063A1BE391CB91EULL, 0x7AE9220AFF8136D0ULL } }, /* XSUM_XXH128_withSecret_testdata[3486] */ + { 3487, 0x0000000000000000ULL, { 0x680EA488740E19F5ULL, 0xBF1D0B9A4AF346D7ULL } }, /* XSUM_XXH128_withSecret_testdata[3487] */ + { 3488, 0x0000000000000000ULL, { 0xBE9D44B1C25FF51DULL, 0x2A44604E51A9F57CULL } }, /* XSUM_XXH128_withSecret_testdata[3488] */ + { 3489, 0x0000000000000000ULL, { 0xC522140D7EB13068ULL, 0xB725403448461257ULL } }, /* XSUM_XXH128_withSecret_testdata[3489] */ + { 3490, 0x0000000000000000ULL, { 0x87D5F5143378E63AULL, 0x05BC0A74D887E256ULL } }, /* XSUM_XXH128_withSecret_testdata[3490] */ + { 3491, 0x0000000000000000ULL, { 0x2B5526EA89A862E9ULL, 0x141144038786FF09ULL } }, /* XSUM_XXH128_withSecret_testdata[3491] */ + { 3492, 0x0000000000000000ULL, { 0xB0E4F51AE9532152ULL, 0xA7F93AD6A22BF271ULL } }, /* XSUM_XXH128_withSecret_testdata[3492] */ + { 3493, 0x0000000000000000ULL, { 0xF517E37DF40186A6ULL, 0xDE8AEB5DCBB3CCCBULL } }, /* XSUM_XXH128_withSecret_testdata[3493] */ + { 3494, 0x0000000000000000ULL, { 0x9471C5B58399F14EULL, 0x56596848A1FE638EULL } }, /* XSUM_XXH128_withSecret_testdata[3494] */ + { 3495, 0x0000000000000000ULL, { 0x367DC8C13EA45D49ULL, 0xFFCF398571ABBF32ULL } }, /* XSUM_XXH128_withSecret_testdata[3495] */ + { 3496, 0x0000000000000000ULL, { 0xFA63C29BD3E79A0BULL, 0xF0401FFA45E1C9F0ULL } }, /* XSUM_XXH128_withSecret_testdata[3496] */ + { 3497, 0x0000000000000000ULL, { 0xF0D40F8AF56875DCULL, 0x83F9AB597ACBA37EULL } }, /* XSUM_XXH128_withSecret_testdata[3497] */ + { 3498, 0x0000000000000000ULL, { 0x218260B595F251EDULL, 0xB80DD1D791D966A0ULL } }, /* XSUM_XXH128_withSecret_testdata[3498] */ + { 3499, 0x0000000000000000ULL, { 0x5CD2D64184919EE1ULL, 0xEE1312DE139F4C8FULL } }, /* XSUM_XXH128_withSecret_testdata[3499] */ + { 3500, 0x0000000000000000ULL, { 0xA8D6FFA8E88CAAC1ULL, 0xF6B6EE8AE7E1EE25ULL } }, /* XSUM_XXH128_withSecret_testdata[3500] */ + { 3501, 0x0000000000000000ULL, { 0x00559483FB681A14ULL, 0xEA694881C419936FULL } }, /* XSUM_XXH128_withSecret_testdata[3501] */ + { 3502, 0x0000000000000000ULL, { 0x7BB6A0499D828F3AULL, 0x4AF492B77B5228B6ULL } }, /* XSUM_XXH128_withSecret_testdata[3502] */ + { 3503, 0x0000000000000000ULL, { 0xF54E38E392CDC9FFULL, 0xD3B4A574249829C1ULL } }, /* XSUM_XXH128_withSecret_testdata[3503] */ + { 3504, 0x0000000000000000ULL, { 0x68C8BED722F70F29ULL, 0x3C3F34C4CDA0A557ULL } }, /* XSUM_XXH128_withSecret_testdata[3504] */ + { 3505, 0x0000000000000000ULL, { 0x8FAA3D530B78038BULL, 0x77EDB64B8C31BCCFULL } }, /* XSUM_XXH128_withSecret_testdata[3505] */ + { 3506, 0x0000000000000000ULL, { 0x7217EA896318D81BULL, 0x16802D83CB8DF051ULL } }, /* XSUM_XXH128_withSecret_testdata[3506] */ + { 3507, 0x0000000000000000ULL, { 0xD3329B5DB272AD1CULL, 0x69E97668A5362810ULL } }, /* XSUM_XXH128_withSecret_testdata[3507] */ + { 3508, 0x0000000000000000ULL, { 0x3F178629EAAA53E2ULL, 0xBFB827331B602B5BULL } }, /* XSUM_XXH128_withSecret_testdata[3508] */ + { 3509, 0x0000000000000000ULL, { 0x0E880000C319A233ULL, 0x9E5AFC2EEFBD4A59ULL } }, /* XSUM_XXH128_withSecret_testdata[3509] */ + { 3510, 0x0000000000000000ULL, { 0x5131CD8B7A9DA841ULL, 0xAC89C8DE987CE9D3ULL } }, /* XSUM_XXH128_withSecret_testdata[3510] */ + { 3511, 0x0000000000000000ULL, { 0x116E9A3F1B0EAD60ULL, 0xF2E3CBC1460BF0EBULL } }, /* XSUM_XXH128_withSecret_testdata[3511] */ + { 3512, 0x0000000000000000ULL, { 0x4D877B440F8C9E21ULL, 0xE9EE0EDC7B84DA66ULL } }, /* XSUM_XXH128_withSecret_testdata[3512] */ + { 3513, 0x0000000000000000ULL, { 0xB5A3F7DC5DB9B323ULL, 0x38C902F2219F260EULL } }, /* XSUM_XXH128_withSecret_testdata[3513] */ + { 3514, 0x0000000000000000ULL, { 0x7E57BB5FEA85F44BULL, 0x2DF3F2BC3694669BULL } }, /* XSUM_XXH128_withSecret_testdata[3514] */ + { 3515, 0x0000000000000000ULL, { 0x7F5959414C7047A7ULL, 0x316ABD0E00FCFCD3ULL } }, /* XSUM_XXH128_withSecret_testdata[3515] */ + { 3516, 0x0000000000000000ULL, { 0xA3080EE0954618B4ULL, 0xFC2E91E8B759CADDULL } }, /* XSUM_XXH128_withSecret_testdata[3516] */ + { 3517, 0x0000000000000000ULL, { 0xFC144E068075D4A0ULL, 0x9F2143E210158ECFULL } }, /* XSUM_XXH128_withSecret_testdata[3517] */ + { 3518, 0x0000000000000000ULL, { 0xBC4CFDDC25674520ULL, 0x97A6B6D80BBA8143ULL } }, /* XSUM_XXH128_withSecret_testdata[3518] */ + { 3519, 0x0000000000000000ULL, { 0x86484327D89DAF41ULL, 0xBECEB0B78C9153BBULL } }, /* XSUM_XXH128_withSecret_testdata[3519] */ + { 3520, 0x0000000000000000ULL, { 0x68A2F0773F075633ULL, 0xF9B31D3C1AD0FB9CULL } }, /* XSUM_XXH128_withSecret_testdata[3520] */ + { 3521, 0x0000000000000000ULL, { 0xB69CC64FAADBB820ULL, 0x668B450194A348DFULL } }, /* XSUM_XXH128_withSecret_testdata[3521] */ + { 3522, 0x0000000000000000ULL, { 0x492B501DEAEF4FF0ULL, 0xAD1BD33EDCE0775DULL } }, /* XSUM_XXH128_withSecret_testdata[3522] */ + { 3523, 0x0000000000000000ULL, { 0xC88BD6340BE8014DULL, 0xA6AC9B89E55FED9EULL } }, /* XSUM_XXH128_withSecret_testdata[3523] */ + { 3524, 0x0000000000000000ULL, { 0x942BE9E21E2A4D63ULL, 0xDE91CD834EDC7CDEULL } }, /* XSUM_XXH128_withSecret_testdata[3524] */ + { 3525, 0x0000000000000000ULL, { 0xF473FAD358FE75F8ULL, 0xB6CB4FB48B59977DULL } }, /* XSUM_XXH128_withSecret_testdata[3525] */ + { 3526, 0x0000000000000000ULL, { 0x7BC0BAC88A27AEF6ULL, 0xC69F8C9F65AC7D67ULL } }, /* XSUM_XXH128_withSecret_testdata[3526] */ + { 3527, 0x0000000000000000ULL, { 0x7649FD5EF3277B3BULL, 0xD8DC149C43EB66CEULL } }, /* XSUM_XXH128_withSecret_testdata[3527] */ + { 3528, 0x0000000000000000ULL, { 0x145AB1F42B600E7FULL, 0x2E030EB3BB99EAE6ULL } }, /* XSUM_XXH128_withSecret_testdata[3528] */ + { 3529, 0x0000000000000000ULL, { 0x563CEE44F6371D4EULL, 0xD3B1B01EF2DC86E7ULL } }, /* XSUM_XXH128_withSecret_testdata[3529] */ + { 3530, 0x0000000000000000ULL, { 0x4ABD41196F8910F4ULL, 0x42AC3170646B109AULL } }, /* XSUM_XXH128_withSecret_testdata[3530] */ + { 3531, 0x0000000000000000ULL, { 0xA407B860E9317657ULL, 0x658C36E0D8CB0B99ULL } }, /* XSUM_XXH128_withSecret_testdata[3531] */ + { 3532, 0x0000000000000000ULL, { 0x26EAA7780E207FBFULL, 0x3A08E5E4EC1EBC69ULL } }, /* XSUM_XXH128_withSecret_testdata[3532] */ + { 3533, 0x0000000000000000ULL, { 0xD7FFE10A171EDB54ULL, 0x6F00299790A8052BULL } }, /* XSUM_XXH128_withSecret_testdata[3533] */ + { 3534, 0x0000000000000000ULL, { 0x3A92D578E1BDA03DULL, 0xC915A24F617CA10CULL } }, /* XSUM_XXH128_withSecret_testdata[3534] */ + { 3535, 0x0000000000000000ULL, { 0x0199237099517BEBULL, 0xD7C848AB24AA17AFULL } }, /* XSUM_XXH128_withSecret_testdata[3535] */ + { 3536, 0x0000000000000000ULL, { 0xFBEE7D5E392C26D4ULL, 0xF822C9D2C797760AULL } }, /* XSUM_XXH128_withSecret_testdata[3536] */ + { 3537, 0x0000000000000000ULL, { 0xBDFD0088D497ED2FULL, 0x930666D67A2DFFD4ULL } }, /* XSUM_XXH128_withSecret_testdata[3537] */ + { 3538, 0x0000000000000000ULL, { 0x913ADB607F7346BAULL, 0x38E5B7D3E30A8906ULL } }, /* XSUM_XXH128_withSecret_testdata[3538] */ + { 3539, 0x0000000000000000ULL, { 0xAB338CEBDA365578ULL, 0x9BD8308AB6C3E7CCULL } }, /* XSUM_XXH128_withSecret_testdata[3539] */ + { 3540, 0x0000000000000000ULL, { 0xC69DB27CB9AF675EULL, 0xD04E45EB060D0376ULL } }, /* XSUM_XXH128_withSecret_testdata[3540] */ + { 3541, 0x0000000000000000ULL, { 0xE2FBEAF26A98C333ULL, 0xBD1D5E3231F709F8ULL } }, /* XSUM_XXH128_withSecret_testdata[3541] */ + { 3542, 0x0000000000000000ULL, { 0x5CB786875FD33694ULL, 0x2C1E935823B37C1CULL } }, /* XSUM_XXH128_withSecret_testdata[3542] */ + { 3543, 0x0000000000000000ULL, { 0x093F890C691390C5ULL, 0x6E01E710C1B6CF69ULL } }, /* XSUM_XXH128_withSecret_testdata[3543] */ + { 3544, 0x0000000000000000ULL, { 0x779F918D25F304D2ULL, 0xC70060B52D17DC19ULL } }, /* XSUM_XXH128_withSecret_testdata[3544] */ + { 3545, 0x0000000000000000ULL, { 0xD1CCD84274C2157FULL, 0xDD2E07FE89B124BEULL } }, /* XSUM_XXH128_withSecret_testdata[3545] */ + { 3546, 0x0000000000000000ULL, { 0xE503ADE933E1EBA7ULL, 0xC2661CA126DA542AULL } }, /* XSUM_XXH128_withSecret_testdata[3546] */ + { 3547, 0x0000000000000000ULL, { 0x31D46CEB10F92FACULL, 0x7FC1D3A038E5CBBAULL } }, /* XSUM_XXH128_withSecret_testdata[3547] */ + { 3548, 0x0000000000000000ULL, { 0x955A378CF5ACAB28ULL, 0x7E0078633C94B7FBULL } }, /* XSUM_XXH128_withSecret_testdata[3548] */ + { 3549, 0x0000000000000000ULL, { 0x67FB9B45D80BF422ULL, 0x62DD93DBB01D3C2EULL } }, /* XSUM_XXH128_withSecret_testdata[3549] */ + { 3550, 0x0000000000000000ULL, { 0x48913A9057BB25BBULL, 0xE136129F162361C0ULL } }, /* XSUM_XXH128_withSecret_testdata[3550] */ + { 3551, 0x0000000000000000ULL, { 0x2A9236D869059A44ULL, 0xE1B7F9E4AFE4BE03ULL } }, /* XSUM_XXH128_withSecret_testdata[3551] */ + { 3552, 0x0000000000000000ULL, { 0x3F5EECA3B0516EB9ULL, 0x4CB76D23D2D0E7C2ULL } }, /* XSUM_XXH128_withSecret_testdata[3552] */ + { 3553, 0x0000000000000000ULL, { 0xD334174F750CF9AFULL, 0x6220911A3285D02EULL } }, /* XSUM_XXH128_withSecret_testdata[3553] */ + { 3554, 0x0000000000000000ULL, { 0x591884D8EC794875ULL, 0x385B0C5743336858ULL } }, /* XSUM_XXH128_withSecret_testdata[3554] */ + { 3555, 0x0000000000000000ULL, { 0x0FFC2DF8CE4AB956ULL, 0x691A3B51433C4A89ULL } }, /* XSUM_XXH128_withSecret_testdata[3555] */ + { 3556, 0x0000000000000000ULL, { 0xE1405F0654D54E5AULL, 0x99D114334760D55EULL } }, /* XSUM_XXH128_withSecret_testdata[3556] */ + { 3557, 0x0000000000000000ULL, { 0x82FEDEB47FDDA9D7ULL, 0xCE25FD97181D3DD1ULL } }, /* XSUM_XXH128_withSecret_testdata[3557] */ + { 3558, 0x0000000000000000ULL, { 0xF5AC976F29F525EBULL, 0x955D8CF39E19EBCAULL } }, /* XSUM_XXH128_withSecret_testdata[3558] */ + { 3559, 0x0000000000000000ULL, { 0x5E084976A1D92262ULL, 0x618E46DF2B03FF51ULL } }, /* XSUM_XXH128_withSecret_testdata[3559] */ + { 3560, 0x0000000000000000ULL, { 0xDEDBFD6CB3BAD25BULL, 0x9A82B0A7D5C2C41AULL } }, /* XSUM_XXH128_withSecret_testdata[3560] */ + { 3561, 0x0000000000000000ULL, { 0x4065E1690CA6B2D3ULL, 0x8CD4757A772164A1ULL } }, /* XSUM_XXH128_withSecret_testdata[3561] */ + { 3562, 0x0000000000000000ULL, { 0x4005ADBD239EAC3BULL, 0xA2A9D18B8A16C967ULL } }, /* XSUM_XXH128_withSecret_testdata[3562] */ + { 3563, 0x0000000000000000ULL, { 0x904933B2B60879C5ULL, 0x574ED362590052F2ULL } }, /* XSUM_XXH128_withSecret_testdata[3563] */ + { 3564, 0x0000000000000000ULL, { 0xAE8A4B93560A3CBAULL, 0x7BD0CAC36A387317ULL } }, /* XSUM_XXH128_withSecret_testdata[3564] */ + { 3565, 0x0000000000000000ULL, { 0x85F5586B522C8B75ULL, 0xAECE5C34EEF439D6ULL } }, /* XSUM_XXH128_withSecret_testdata[3565] */ + { 3566, 0x0000000000000000ULL, { 0xB8626D8B20C2B1D8ULL, 0xD6CE8BF76D5C5BC4ULL } }, /* XSUM_XXH128_withSecret_testdata[3566] */ + { 3567, 0x0000000000000000ULL, { 0x8BAE6D7ED0145D71ULL, 0xB6F1A940FAD77FD1ULL } }, /* XSUM_XXH128_withSecret_testdata[3567] */ + { 3568, 0x0000000000000000ULL, { 0xCE2A3966C6EAB263ULL, 0x91ADD37AEA87AC9CULL } }, /* XSUM_XXH128_withSecret_testdata[3568] */ + { 3569, 0x0000000000000000ULL, { 0xC187A11B99654153ULL, 0xF3D5AA70BE18C611ULL } }, /* XSUM_XXH128_withSecret_testdata[3569] */ + { 3570, 0x0000000000000000ULL, { 0x7576A3857F02863BULL, 0x7AA48745BF8B2234ULL } }, /* XSUM_XXH128_withSecret_testdata[3570] */ + { 3571, 0x0000000000000000ULL, { 0x7CE79F2F32812262ULL, 0x56D53CC696C59C46ULL } }, /* XSUM_XXH128_withSecret_testdata[3571] */ + { 3572, 0x0000000000000000ULL, { 0x0566340B25C7698CULL, 0xFC7D6B7DD132523FULL } }, /* XSUM_XXH128_withSecret_testdata[3572] */ + { 3573, 0x0000000000000000ULL, { 0xCBB7CDE1F4A2629CULL, 0xDB8CB08FCE8465CDULL } }, /* XSUM_XXH128_withSecret_testdata[3573] */ + { 3574, 0x0000000000000000ULL, { 0x54A31560323CF6A8ULL, 0x9AA58F808ED9F6A0ULL } }, /* XSUM_XXH128_withSecret_testdata[3574] */ + { 3575, 0x0000000000000000ULL, { 0x8B3C00FF37CFDC35ULL, 0x5749F9881CC117BAULL } }, /* XSUM_XXH128_withSecret_testdata[3575] */ + { 3576, 0x0000000000000000ULL, { 0x6CBF4B6F2F663076ULL, 0x5F6C6EA44897CA37ULL } }, /* XSUM_XXH128_withSecret_testdata[3576] */ + { 3577, 0x0000000000000000ULL, { 0x744D2DEF804E02F6ULL, 0xB26D70C83BBD9B87ULL } }, /* XSUM_XXH128_withSecret_testdata[3577] */ + { 3578, 0x0000000000000000ULL, { 0xDBA8658D39D669E9ULL, 0xC834CD0CEABAE21FULL } }, /* XSUM_XXH128_withSecret_testdata[3578] */ + { 3579, 0x0000000000000000ULL, { 0x9D6021A58F675AA8ULL, 0xEAED604BBF64A759ULL } }, /* XSUM_XXH128_withSecret_testdata[3579] */ + { 3580, 0x0000000000000000ULL, { 0xE5B1DDE4DD40BD1CULL, 0x4B7528E9C000121AULL } }, /* XSUM_XXH128_withSecret_testdata[3580] */ + { 3581, 0x0000000000000000ULL, { 0x7E7919DD1258900DULL, 0xD39758630406C053ULL } }, /* XSUM_XXH128_withSecret_testdata[3581] */ + { 3582, 0x0000000000000000ULL, { 0xCC13F7C38D17C331ULL, 0xE186C272D414E52AULL } }, /* XSUM_XXH128_withSecret_testdata[3582] */ + { 3583, 0x0000000000000000ULL, { 0xFA22827AF6C4BF5BULL, 0xF10FC660DEECB279ULL } }, /* XSUM_XXH128_withSecret_testdata[3583] */ + { 3584, 0x0000000000000000ULL, { 0x67FD740F19C06775ULL, 0x7E6558905C8F390CULL } }, /* XSUM_XXH128_withSecret_testdata[3584] */ + { 3585, 0x0000000000000000ULL, { 0x2D56EA589DE0B5ADULL, 0x0C94C991D5600034ULL } }, /* XSUM_XXH128_withSecret_testdata[3585] */ + { 3586, 0x0000000000000000ULL, { 0x83578517FB5732D3ULL, 0x6DEC474F06C904BCULL } }, /* XSUM_XXH128_withSecret_testdata[3586] */ + { 3587, 0x0000000000000000ULL, { 0x583F8A960F22B1D2ULL, 0x621AFC4F309B4E36ULL } }, /* XSUM_XXH128_withSecret_testdata[3587] */ + { 3588, 0x0000000000000000ULL, { 0x29C57FE0F226E9C9ULL, 0xE59AD6BDC1E8CC55ULL } }, /* XSUM_XXH128_withSecret_testdata[3588] */ + { 3589, 0x0000000000000000ULL, { 0xD596D4108C1343A8ULL, 0xA018B83065C4155CULL } }, /* XSUM_XXH128_withSecret_testdata[3589] */ + { 3590, 0x0000000000000000ULL, { 0x33F576E3671AE132ULL, 0x70F0F28ADC3D4DBFULL } }, /* XSUM_XXH128_withSecret_testdata[3590] */ + { 3591, 0x0000000000000000ULL, { 0x8685990709433B50ULL, 0x4667208E3357E8C5ULL } }, /* XSUM_XXH128_withSecret_testdata[3591] */ + { 3592, 0x0000000000000000ULL, { 0xD0BE36496EBDD162ULL, 0xDF6FC537CA2526ABULL } }, /* XSUM_XXH128_withSecret_testdata[3592] */ + { 3593, 0x0000000000000000ULL, { 0x89CA224F64403215ULL, 0xECA564181BA0DB0EULL } }, /* XSUM_XXH128_withSecret_testdata[3593] */ + { 3594, 0x0000000000000000ULL, { 0x3FE5569B45626A3EULL, 0x5B5C761802C18732ULL } }, /* XSUM_XXH128_withSecret_testdata[3594] */ + { 3595, 0x0000000000000000ULL, { 0x3C2BFDE5F55EEFBFULL, 0x5A4D3644AF28D0DBULL } }, /* XSUM_XXH128_withSecret_testdata[3595] */ + { 3596, 0x0000000000000000ULL, { 0x7A5608B2040F9B98ULL, 0x491D79330141F7B6ULL } }, /* XSUM_XXH128_withSecret_testdata[3596] */ + { 3597, 0x0000000000000000ULL, { 0xAE3B0A88BD95C013ULL, 0xEEA56B7C33A62AF8ULL } }, /* XSUM_XXH128_withSecret_testdata[3597] */ + { 3598, 0x0000000000000000ULL, { 0xEDDBEF70B16F362FULL, 0x6B437B423BAAD623ULL } }, /* XSUM_XXH128_withSecret_testdata[3598] */ + { 3599, 0x0000000000000000ULL, { 0xD66C5A019D495089ULL, 0x7E65A33DB4C1A238ULL } }, /* XSUM_XXH128_withSecret_testdata[3599] */ + { 3600, 0x0000000000000000ULL, { 0x12ECA429B130C61AULL, 0x10AB5550793C7B3FULL } }, /* XSUM_XXH128_withSecret_testdata[3600] */ + { 3601, 0x0000000000000000ULL, { 0xDD9D353BA9000578ULL, 0xCA31696447BED5D5ULL } }, /* XSUM_XXH128_withSecret_testdata[3601] */ + { 3602, 0x0000000000000000ULL, { 0x5825919EE11D0B9AULL, 0x4383E93A40B073DCULL } }, /* XSUM_XXH128_withSecret_testdata[3602] */ + { 3603, 0x0000000000000000ULL, { 0x9DD38DC468658916ULL, 0x819FDF4FCCD8D6A7ULL } }, /* XSUM_XXH128_withSecret_testdata[3603] */ + { 3604, 0x0000000000000000ULL, { 0x21A36E3176D2F743ULL, 0x4D75712B8D62795FULL } }, /* XSUM_XXH128_withSecret_testdata[3604] */ + { 3605, 0x0000000000000000ULL, { 0xF83B77A6680719FEULL, 0xAC99843B47E8A038ULL } }, /* XSUM_XXH128_withSecret_testdata[3605] */ + { 3606, 0x0000000000000000ULL, { 0xD4B1975280EB54F2ULL, 0x90CE66C21944E2F4ULL } }, /* XSUM_XXH128_withSecret_testdata[3606] */ + { 3607, 0x0000000000000000ULL, { 0x602F4720DA49BDEAULL, 0x5670AD50FA849D1CULL } }, /* XSUM_XXH128_withSecret_testdata[3607] */ + { 3608, 0x0000000000000000ULL, { 0x59A285BCB4BBDBFBULL, 0x206963A9D2A5ACAFULL } }, /* XSUM_XXH128_withSecret_testdata[3608] */ + { 3609, 0x0000000000000000ULL, { 0xD9519020FEF530A7ULL, 0x0658BFDE304CF3F4ULL } }, /* XSUM_XXH128_withSecret_testdata[3609] */ + { 3610, 0x0000000000000000ULL, { 0xAACF5921E6D501ECULL, 0xA067E477F08620DEULL } }, /* XSUM_XXH128_withSecret_testdata[3610] */ + { 3611, 0x0000000000000000ULL, { 0x07A636AF3271EBB6ULL, 0x53C210A268AB9A2AULL } }, /* XSUM_XXH128_withSecret_testdata[3611] */ + { 3612, 0x0000000000000000ULL, { 0x4013EA3FE665B0D5ULL, 0x05AB6EB0B93B50A7ULL } }, /* XSUM_XXH128_withSecret_testdata[3612] */ + { 3613, 0x0000000000000000ULL, { 0x2EC368F9BB598D51ULL, 0x11037168A1072533ULL } }, /* XSUM_XXH128_withSecret_testdata[3613] */ + { 3614, 0x0000000000000000ULL, { 0xBD2165F9606C8D61ULL, 0x23D6865B5D395FBAULL } }, /* XSUM_XXH128_withSecret_testdata[3614] */ + { 3615, 0x0000000000000000ULL, { 0xDFAF7B5D28668D5EULL, 0xCB91D6D4A9582235ULL } }, /* XSUM_XXH128_withSecret_testdata[3615] */ + { 3616, 0x0000000000000000ULL, { 0x3D6FDCBF546F83D0ULL, 0x19E32F719D09BD4AULL } }, /* XSUM_XXH128_withSecret_testdata[3616] */ + { 3617, 0x0000000000000000ULL, { 0xF23C27847715A884ULL, 0xDB44BE024F116E2DULL } }, /* XSUM_XXH128_withSecret_testdata[3617] */ + { 3618, 0x0000000000000000ULL, { 0x240A3D3B1B06AD6FULL, 0x2E622CDA3A7AC6F0ULL } }, /* XSUM_XXH128_withSecret_testdata[3618] */ + { 3619, 0x0000000000000000ULL, { 0x5DE3B1263086D356ULL, 0x02F16C050E687D6CULL } }, /* XSUM_XXH128_withSecret_testdata[3619] */ + { 3620, 0x0000000000000000ULL, { 0xACFAE3B137C0AF5AULL, 0x3A4D41ED8C9D4120ULL } }, /* XSUM_XXH128_withSecret_testdata[3620] */ + { 3621, 0x0000000000000000ULL, { 0xA1B32A532E4AE965ULL, 0xE0800443ECA54B73ULL } }, /* XSUM_XXH128_withSecret_testdata[3621] */ + { 3622, 0x0000000000000000ULL, { 0x7803002806FE567DULL, 0x5E7C4C68D9362901ULL } }, /* XSUM_XXH128_withSecret_testdata[3622] */ + { 3623, 0x0000000000000000ULL, { 0xE350F1C3D9B30327ULL, 0x2275287F02B51C03ULL } }, /* XSUM_XXH128_withSecret_testdata[3623] */ + { 3624, 0x0000000000000000ULL, { 0xD3C100B30A2DF110ULL, 0x80FACA9B3FE61D6BULL } }, /* XSUM_XXH128_withSecret_testdata[3624] */ + { 3625, 0x0000000000000000ULL, { 0x4684AF31B6374A8DULL, 0x64B17FD6FBE86DC1ULL } }, /* XSUM_XXH128_withSecret_testdata[3625] */ + { 3626, 0x0000000000000000ULL, { 0x4F1A0143A68B1CD5ULL, 0x9231C1AC37C932E5ULL } }, /* XSUM_XXH128_withSecret_testdata[3626] */ + { 3627, 0x0000000000000000ULL, { 0xB086237B79F08F2AULL, 0x6D04E17773CF55EDULL } }, /* XSUM_XXH128_withSecret_testdata[3627] */ + { 3628, 0x0000000000000000ULL, { 0x61A6E3B6CB72D192ULL, 0xF632404B96B60101ULL } }, /* XSUM_XXH128_withSecret_testdata[3628] */ + { 3629, 0x0000000000000000ULL, { 0x13FB132F642B074FULL, 0x8AB4C9A53B946DE2ULL } }, /* XSUM_XXH128_withSecret_testdata[3629] */ + { 3630, 0x0000000000000000ULL, { 0xC335AE03249A6F93ULL, 0x4F04B4FED1F27774ULL } }, /* XSUM_XXH128_withSecret_testdata[3630] */ + { 3631, 0x0000000000000000ULL, { 0x86BB9D9B7810927CULL, 0x5A186129AF9C1B4BULL } }, /* XSUM_XXH128_withSecret_testdata[3631] */ + { 3632, 0x0000000000000000ULL, { 0x97CF88EE83090D33ULL, 0xAEA1D739E1E6C581ULL } }, /* XSUM_XXH128_withSecret_testdata[3632] */ + { 3633, 0x0000000000000000ULL, { 0xAD7264DE0835485FULL, 0x91351A42B4844225ULL } }, /* XSUM_XXH128_withSecret_testdata[3633] */ + { 3634, 0x0000000000000000ULL, { 0xEB6874CDF40A6ADAULL, 0x94B9385ADA767096ULL } }, /* XSUM_XXH128_withSecret_testdata[3634] */ + { 3635, 0x0000000000000000ULL, { 0xE4D8C29D2D21CDCDULL, 0xC8E2530280055FE0ULL } }, /* XSUM_XXH128_withSecret_testdata[3635] */ + { 3636, 0x0000000000000000ULL, { 0x2F70C55B1CE33DF2ULL, 0x1839D66F6ADAF1B4ULL } }, /* XSUM_XXH128_withSecret_testdata[3636] */ + { 3637, 0x0000000000000000ULL, { 0x32CB28B1E0DC2AEFULL, 0xB4B0A5013801DD5FULL } }, /* XSUM_XXH128_withSecret_testdata[3637] */ + { 3638, 0x0000000000000000ULL, { 0x1F8A763161F47771ULL, 0x9C41FE985095DD0FULL } }, /* XSUM_XXH128_withSecret_testdata[3638] */ + { 3639, 0x0000000000000000ULL, { 0x4B9E7F78ED95A2F9ULL, 0xDE95AFBC88A668EFULL } }, /* XSUM_XXH128_withSecret_testdata[3639] */ + { 3640, 0x0000000000000000ULL, { 0x0330B8B4657E5D20ULL, 0xE6527026071B9EACULL } }, /* XSUM_XXH128_withSecret_testdata[3640] */ + { 3641, 0x0000000000000000ULL, { 0xCB5EB84AC49FCD38ULL, 0x4831CCC7F886850AULL } }, /* XSUM_XXH128_withSecret_testdata[3641] */ + { 3642, 0x0000000000000000ULL, { 0x9954450CB7119880ULL, 0xB692E66988005919ULL } }, /* XSUM_XXH128_withSecret_testdata[3642] */ + { 3643, 0x0000000000000000ULL, { 0x39A6D0CCD9D7334DULL, 0x4EB862D03CCBCBFFULL } }, /* XSUM_XXH128_withSecret_testdata[3643] */ + { 3644, 0x0000000000000000ULL, { 0x29F426ACE9922249ULL, 0xFBB6E3DC5EE6D636ULL } }, /* XSUM_XXH128_withSecret_testdata[3644] */ + { 3645, 0x0000000000000000ULL, { 0xD6BCCF95E17F5A5AULL, 0x4E81DCD400A81702ULL } }, /* XSUM_XXH128_withSecret_testdata[3645] */ + { 3646, 0x0000000000000000ULL, { 0x52E2F5BBA58DE285ULL, 0x33FDE381627E76DCULL } }, /* XSUM_XXH128_withSecret_testdata[3646] */ + { 3647, 0x0000000000000000ULL, { 0x5C2F0AF653744211ULL, 0x8D2B90DBB9177C76ULL } }, /* XSUM_XXH128_withSecret_testdata[3647] */ + { 3648, 0x0000000000000000ULL, { 0x13D0266107F906FEULL, 0xF216B03BADD8D08AULL } }, /* XSUM_XXH128_withSecret_testdata[3648] */ + { 3649, 0x0000000000000000ULL, { 0x73B63D1E9267CBC3ULL, 0x1C3DEF2062C316F3ULL } }, /* XSUM_XXH128_withSecret_testdata[3649] */ + { 3650, 0x0000000000000000ULL, { 0x5AE4F695636FBDB3ULL, 0x6C850EF5C22F98FEULL } }, /* XSUM_XXH128_withSecret_testdata[3650] */ + { 3651, 0x0000000000000000ULL, { 0xBE6F08CB4A10EA2DULL, 0x123E3E0F69A7B976ULL } }, /* XSUM_XXH128_withSecret_testdata[3651] */ + { 3652, 0x0000000000000000ULL, { 0x9ECE66636DF61E30ULL, 0xFD26E69B6A9EAA59ULL } }, /* XSUM_XXH128_withSecret_testdata[3652] */ + { 3653, 0x0000000000000000ULL, { 0x76897F6B48754D9CULL, 0x0F004AC1E0A04FC1ULL } }, /* XSUM_XXH128_withSecret_testdata[3653] */ + { 3654, 0x0000000000000000ULL, { 0x96893F3A1625D67CULL, 0x5649A6D6B5FCE672ULL } }, /* XSUM_XXH128_withSecret_testdata[3654] */ + { 3655, 0x0000000000000000ULL, { 0x1BFA6342365DB03EULL, 0x6BA8B5B535E8E2ABULL } }, /* XSUM_XXH128_withSecret_testdata[3655] */ + { 3656, 0x0000000000000000ULL, { 0x9CAEDFDC9E5BBC45ULL, 0x92A45251117A6AA0ULL } }, /* XSUM_XXH128_withSecret_testdata[3656] */ + { 3657, 0x0000000000000000ULL, { 0xEAD8C3DF0BC2B6EEULL, 0x1A758FD9E844ADD2ULL } }, /* XSUM_XXH128_withSecret_testdata[3657] */ + { 3658, 0x0000000000000000ULL, { 0x5F3510D10299D194ULL, 0xF33117B1D0182D8DULL } }, /* XSUM_XXH128_withSecret_testdata[3658] */ + { 3659, 0x0000000000000000ULL, { 0x4F7D6E007B2E2EE7ULL, 0x3DF7069966FF8D21ULL } }, /* XSUM_XXH128_withSecret_testdata[3659] */ + { 3660, 0x0000000000000000ULL, { 0xD5F60C63C8EC5E09ULL, 0x8A290852CDAD7503ULL } }, /* XSUM_XXH128_withSecret_testdata[3660] */ + { 3661, 0x0000000000000000ULL, { 0x30959A76A7B20A41ULL, 0x551214A875D93EFAULL } }, /* XSUM_XXH128_withSecret_testdata[3661] */ + { 3662, 0x0000000000000000ULL, { 0x27F8DA0A1E12A2BDULL, 0xBC1E28FBBD0ED43BULL } }, /* XSUM_XXH128_withSecret_testdata[3662] */ + { 3663, 0x0000000000000000ULL, { 0xEF629975E153E4CEULL, 0x088414603272089EULL } }, /* XSUM_XXH128_withSecret_testdata[3663] */ + { 3664, 0x0000000000000000ULL, { 0x33F7BFE74C443E29ULL, 0xCC0D197D9E0941A8ULL } }, /* XSUM_XXH128_withSecret_testdata[3664] */ + { 3665, 0x0000000000000000ULL, { 0xE8A73C1DD4AB5D52ULL, 0x7843195517B02F6DULL } }, /* XSUM_XXH128_withSecret_testdata[3665] */ + { 3666, 0x0000000000000000ULL, { 0x63E3746CC32627BDULL, 0xE874151531E77DCCULL } }, /* XSUM_XXH128_withSecret_testdata[3666] */ + { 3667, 0x0000000000000000ULL, { 0x8872F8B441AE8026ULL, 0x1D327BAE3496AAF1ULL } }, /* XSUM_XXH128_withSecret_testdata[3667] */ + { 3668, 0x0000000000000000ULL, { 0x34E1FCC0E6FC205CULL, 0x341C213A8E4DB8CCULL } }, /* XSUM_XXH128_withSecret_testdata[3668] */ + { 3669, 0x0000000000000000ULL, { 0xCC5BDD63DE4C9FA8ULL, 0x8CB2375BA70C659AULL } }, /* XSUM_XXH128_withSecret_testdata[3669] */ + { 3670, 0x0000000000000000ULL, { 0xA958069D7004AF42ULL, 0xB636D1DB0AA18897ULL } }, /* XSUM_XXH128_withSecret_testdata[3670] */ + { 3671, 0x0000000000000000ULL, { 0x03C01B5A23891673ULL, 0x302B32049A620892ULL } }, /* XSUM_XXH128_withSecret_testdata[3671] */ + { 3672, 0x0000000000000000ULL, { 0xFE4E34A64A5497BAULL, 0xAF24183EAEB7F39FULL } }, /* XSUM_XXH128_withSecret_testdata[3672] */ + { 3673, 0x0000000000000000ULL, { 0xDB1DBA66C78E84DBULL, 0xA73C1DCD3472EE57ULL } }, /* XSUM_XXH128_withSecret_testdata[3673] */ + { 3674, 0x0000000000000000ULL, { 0x001F20363F2628DBULL, 0x8E15CC3D124CF050ULL } }, /* XSUM_XXH128_withSecret_testdata[3674] */ + { 3675, 0x0000000000000000ULL, { 0xE03DD488BF20420DULL, 0x33FF10584F2E8676ULL } }, /* XSUM_XXH128_withSecret_testdata[3675] */ + { 3676, 0x0000000000000000ULL, { 0xE7A872FDEFCA807BULL, 0x484EFEE6D1F0BD60ULL } }, /* XSUM_XXH128_withSecret_testdata[3676] */ + { 3677, 0x0000000000000000ULL, { 0x72B8216B72DFE57AULL, 0x965502B73B9B8E33ULL } }, /* XSUM_XXH128_withSecret_testdata[3677] */ + { 3678, 0x0000000000000000ULL, { 0x9B0B6D2B15023E94ULL, 0x23BA6EB9216C3883ULL } }, /* XSUM_XXH128_withSecret_testdata[3678] */ + { 3679, 0x0000000000000000ULL, { 0x3C2A43ABE217905AULL, 0x1DF33E382BB49FCCULL } }, /* XSUM_XXH128_withSecret_testdata[3679] */ + { 3680, 0x0000000000000000ULL, { 0x21A35114EC6CDAE8ULL, 0xBC40D4984CB2B7FEULL } }, /* XSUM_XXH128_withSecret_testdata[3680] */ + { 3681, 0x0000000000000000ULL, { 0x048CB0141AC4C76AULL, 0xF1A6B438D5DAC413ULL } }, /* XSUM_XXH128_withSecret_testdata[3681] */ + { 3682, 0x0000000000000000ULL, { 0xE5AFFACD2AC33F04ULL, 0x79E43AF15106A64BULL } }, /* XSUM_XXH128_withSecret_testdata[3682] */ + { 3683, 0x0000000000000000ULL, { 0x2FEBC09FA68F6EDEULL, 0xA0804C7852045C99ULL } }, /* XSUM_XXH128_withSecret_testdata[3683] */ + { 3684, 0x0000000000000000ULL, { 0x044907FA64CEBE97ULL, 0xDFBF9B96BCC8E4C9ULL } }, /* XSUM_XXH128_withSecret_testdata[3684] */ + { 3685, 0x0000000000000000ULL, { 0x18B8803680479C1FULL, 0xF7FD3F491048408FULL } }, /* XSUM_XXH128_withSecret_testdata[3685] */ + { 3686, 0x0000000000000000ULL, { 0x3B434DC270FFA40EULL, 0x236CA81DE5FDAB28ULL } }, /* XSUM_XXH128_withSecret_testdata[3686] */ + { 3687, 0x0000000000000000ULL, { 0x0E81B1243D4ECBA7ULL, 0x6389ECBE1643DF6BULL } }, /* XSUM_XXH128_withSecret_testdata[3687] */ + { 3688, 0x0000000000000000ULL, { 0xDB48C5430E0E2B55ULL, 0x82F6A90E59A28E7CULL } }, /* XSUM_XXH128_withSecret_testdata[3688] */ + { 3689, 0x0000000000000000ULL, { 0x4DA4C8361F09744CULL, 0xA6382E9431ADE881ULL } }, /* XSUM_XXH128_withSecret_testdata[3689] */ + { 3690, 0x0000000000000000ULL, { 0x4880F9B5A5272B75ULL, 0xFA446188A5ECC6BEULL } }, /* XSUM_XXH128_withSecret_testdata[3690] */ + { 3691, 0x0000000000000000ULL, { 0xF9C814C22C0ADCF5ULL, 0x0557BB4598582ECCULL } }, /* XSUM_XXH128_withSecret_testdata[3691] */ + { 3692, 0x0000000000000000ULL, { 0xDBCA1057366F2159ULL, 0xC2C19CCED088C4AFULL } }, /* XSUM_XXH128_withSecret_testdata[3692] */ + { 3693, 0x0000000000000000ULL, { 0xC35907B3C5889075ULL, 0xED1FE611155F931EULL } }, /* XSUM_XXH128_withSecret_testdata[3693] */ + { 3694, 0x0000000000000000ULL, { 0x072767B99173763DULL, 0x80292EA3DFF7787AULL } }, /* XSUM_XXH128_withSecret_testdata[3694] */ + { 3695, 0x0000000000000000ULL, { 0x8F06E469E4C88337ULL, 0xCEB62FA518A42F2BULL } }, /* XSUM_XXH128_withSecret_testdata[3695] */ + { 3696, 0x0000000000000000ULL, { 0xE37A69802CE42D43ULL, 0xDD53239A93E68FF8ULL } }, /* XSUM_XXH128_withSecret_testdata[3696] */ + { 3697, 0x0000000000000000ULL, { 0x10EA5A56C4D77ABEULL, 0x05F2B58BB8AF4315ULL } }, /* XSUM_XXH128_withSecret_testdata[3697] */ + { 3698, 0x0000000000000000ULL, { 0xA26396BD4BCFF063ULL, 0x11EB12F2FFE86077ULL } }, /* XSUM_XXH128_withSecret_testdata[3698] */ + { 3699, 0x0000000000000000ULL, { 0x5A128CB189F273E3ULL, 0xF7BFA5CA3A4710EDULL } }, /* XSUM_XXH128_withSecret_testdata[3699] */ + { 3700, 0x0000000000000000ULL, { 0xE0D7D181B089D4FCULL, 0xF6FFEA802B82E7A3ULL } }, /* XSUM_XXH128_withSecret_testdata[3700] */ + { 3701, 0x0000000000000000ULL, { 0xB0B1D7BD188AF12AULL, 0xE8C03AB83AD9CF1DULL } }, /* XSUM_XXH128_withSecret_testdata[3701] */ + { 3702, 0x0000000000000000ULL, { 0x31C2116B4AC8C726ULL, 0xE6857F21675E4AB4ULL } }, /* XSUM_XXH128_withSecret_testdata[3702] */ + { 3703, 0x0000000000000000ULL, { 0xC71F338F4647AFC5ULL, 0xBED1A820003BBCEBULL } }, /* XSUM_XXH128_withSecret_testdata[3703] */ + { 3704, 0x0000000000000000ULL, { 0xBDA992AD1A4CBF1BULL, 0x4E36F15B99CED1B1ULL } }, /* XSUM_XXH128_withSecret_testdata[3704] */ + { 3705, 0x0000000000000000ULL, { 0x63DC6F9CDE581FC3ULL, 0x97BEC37E5D753142ULL } }, /* XSUM_XXH128_withSecret_testdata[3705] */ + { 3706, 0x0000000000000000ULL, { 0xE71687229E8DC725ULL, 0xCA55400E7EB7A92EULL } }, /* XSUM_XXH128_withSecret_testdata[3706] */ + { 3707, 0x0000000000000000ULL, { 0xF6267DED115F5C50ULL, 0xFCB25836D337820DULL } }, /* XSUM_XXH128_withSecret_testdata[3707] */ + { 3708, 0x0000000000000000ULL, { 0xED27136F285EECF5ULL, 0x632937F9BCB99F4FULL } }, /* XSUM_XXH128_withSecret_testdata[3708] */ + { 3709, 0x0000000000000000ULL, { 0x18A8AF1881FD9A23ULL, 0x3F2379634B9FF564ULL } }, /* XSUM_XXH128_withSecret_testdata[3709] */ + { 3710, 0x0000000000000000ULL, { 0x0E87706AAF47190DULL, 0xB36B10616B98C079ULL } }, /* XSUM_XXH128_withSecret_testdata[3710] */ + { 3711, 0x0000000000000000ULL, { 0xC9ACE76107EA4689ULL, 0xADD29A137DB2F177ULL } }, /* XSUM_XXH128_withSecret_testdata[3711] */ + { 3712, 0x0000000000000000ULL, { 0x1DB32201CD76C745ULL, 0xE7A16B40190C4940ULL } }, /* XSUM_XXH128_withSecret_testdata[3712] */ + { 3713, 0x0000000000000000ULL, { 0xFFE21B586BF9A39AULL, 0xD5DA0C82D4B05C48ULL } }, /* XSUM_XXH128_withSecret_testdata[3713] */ + { 3714, 0x0000000000000000ULL, { 0xF3F49E55DD107D6DULL, 0x9C275686445CA002ULL } }, /* XSUM_XXH128_withSecret_testdata[3714] */ + { 3715, 0x0000000000000000ULL, { 0xE9D9654ED3D54F89ULL, 0x86CF8219626A5B19ULL } }, /* XSUM_XXH128_withSecret_testdata[3715] */ + { 3716, 0x0000000000000000ULL, { 0x9CBECD831B45BB4CULL, 0x0B4D241F463DD49DULL } }, /* XSUM_XXH128_withSecret_testdata[3716] */ + { 3717, 0x0000000000000000ULL, { 0x485976A8B12D67BBULL, 0x4762C7BFC780E49CULL } }, /* XSUM_XXH128_withSecret_testdata[3717] */ + { 3718, 0x0000000000000000ULL, { 0xB7585765FC20C4A2ULL, 0xEA6CA0EA9EE33487ULL } }, /* XSUM_XXH128_withSecret_testdata[3718] */ + { 3719, 0x0000000000000000ULL, { 0xB1DA481EDE8C3255ULL, 0xC836FBA1DDFCF10DULL } }, /* XSUM_XXH128_withSecret_testdata[3719] */ + { 3720, 0x0000000000000000ULL, { 0xB8C0A08B5E236251ULL, 0x5047459C5E3BD360ULL } }, /* XSUM_XXH128_withSecret_testdata[3720] */ + { 3721, 0x0000000000000000ULL, { 0x5A255FC9D278D00AULL, 0xCAB1161197685DE8ULL } }, /* XSUM_XXH128_withSecret_testdata[3721] */ + { 3722, 0x0000000000000000ULL, { 0x48F4BE2687506EA9ULL, 0x79C0C706A38096A0ULL } }, /* XSUM_XXH128_withSecret_testdata[3722] */ + { 3723, 0x0000000000000000ULL, { 0x2558380F89CAEB03ULL, 0x9FCE2062EC6D4906ULL } }, /* XSUM_XXH128_withSecret_testdata[3723] */ + { 3724, 0x0000000000000000ULL, { 0x0DC2E4D8D7ECA5E0ULL, 0xB1B7AA22FF1393BFULL } }, /* XSUM_XXH128_withSecret_testdata[3724] */ + { 3725, 0x0000000000000000ULL, { 0x05F606044236F491ULL, 0xD814CF2A649657B1ULL } }, /* XSUM_XXH128_withSecret_testdata[3725] */ + { 3726, 0x0000000000000000ULL, { 0x7406113BF7451CF1ULL, 0x90075E8088B2671EULL } }, /* XSUM_XXH128_withSecret_testdata[3726] */ + { 3727, 0x0000000000000000ULL, { 0x76FB9D866FAFB2BAULL, 0x8334B9F7EB6D3DE9ULL } }, /* XSUM_XXH128_withSecret_testdata[3727] */ + { 3728, 0x0000000000000000ULL, { 0x7E137B468B29D288ULL, 0x32E91132C2ADE718ULL } }, /* XSUM_XXH128_withSecret_testdata[3728] */ + { 3729, 0x0000000000000000ULL, { 0x7EF51369C118D410ULL, 0x30189B04DBA895B9ULL } }, /* XSUM_XXH128_withSecret_testdata[3729] */ + { 3730, 0x0000000000000000ULL, { 0xCA6DBC27D4DF0824ULL, 0xEE525D521870A10AULL } }, /* XSUM_XXH128_withSecret_testdata[3730] */ + { 3731, 0x0000000000000000ULL, { 0xAC173AD877A8B109ULL, 0xBE035B0C7A5460E2ULL } }, /* XSUM_XXH128_withSecret_testdata[3731] */ + { 3732, 0x0000000000000000ULL, { 0x3B23CCA050FDB25EULL, 0x00D0595E5121101CULL } }, /* XSUM_XXH128_withSecret_testdata[3732] */ + { 3733, 0x0000000000000000ULL, { 0x54992EA328E6A79AULL, 0x1316ADCA331574D9ULL } }, /* XSUM_XXH128_withSecret_testdata[3733] */ + { 3734, 0x0000000000000000ULL, { 0x1526C8960EA4823EULL, 0x004300598AFB8C6AULL } }, /* XSUM_XXH128_withSecret_testdata[3734] */ + { 3735, 0x0000000000000000ULL, { 0xA94DD15791A710EFULL, 0x553F87808A455EE0ULL } }, /* XSUM_XXH128_withSecret_testdata[3735] */ + { 3736, 0x0000000000000000ULL, { 0x0AE776D7B71B14EEULL, 0x4F25856965089050ULL } }, /* XSUM_XXH128_withSecret_testdata[3736] */ + { 3737, 0x0000000000000000ULL, { 0x7A84970010538609ULL, 0x5D28BE599E83340DULL } }, /* XSUM_XXH128_withSecret_testdata[3737] */ + { 3738, 0x0000000000000000ULL, { 0xAA6BCBD050ED92E3ULL, 0xD56BC6259D4DE3C7ULL } }, /* XSUM_XXH128_withSecret_testdata[3738] */ + { 3739, 0x0000000000000000ULL, { 0xB61E295FBC27DC6FULL, 0x1E3AA41CD134A597ULL } }, /* XSUM_XXH128_withSecret_testdata[3739] */ + { 3740, 0x0000000000000000ULL, { 0x9FE549999C1629FBULL, 0x924CBB6AE0514907ULL } }, /* XSUM_XXH128_withSecret_testdata[3740] */ + { 3741, 0x0000000000000000ULL, { 0x9230E380E452E7D5ULL, 0xEE4AD80E7435A577ULL } }, /* XSUM_XXH128_withSecret_testdata[3741] */ + { 3742, 0x0000000000000000ULL, { 0x50C2D319AC1DAD66ULL, 0xA9A53C519E71CB3AULL } }, /* XSUM_XXH128_withSecret_testdata[3742] */ + { 3743, 0x0000000000000000ULL, { 0x0A4AB987174866CBULL, 0x7F068C1221198BABULL } }, /* XSUM_XXH128_withSecret_testdata[3743] */ + { 3744, 0x0000000000000000ULL, { 0xEB1CA8391A884420ULL, 0xFD496AA77D5FE07CULL } }, /* XSUM_XXH128_withSecret_testdata[3744] */ + { 3745, 0x0000000000000000ULL, { 0x1FFB61B556F72EE6ULL, 0x67751065D9BDD334ULL } }, /* XSUM_XXH128_withSecret_testdata[3745] */ + { 3746, 0x0000000000000000ULL, { 0x75AA2A4413656C14ULL, 0x4F4AA3FD6B9839D6ULL } }, /* XSUM_XXH128_withSecret_testdata[3746] */ + { 3747, 0x0000000000000000ULL, { 0x4CDA01A88A2AA595ULL, 0xD5A140C32FADA734ULL } }, /* XSUM_XXH128_withSecret_testdata[3747] */ + { 3748, 0x0000000000000000ULL, { 0xF6DE07C01752A9BDULL, 0xCC8C56F4906CFD11ULL } }, /* XSUM_XXH128_withSecret_testdata[3748] */ + { 3749, 0x0000000000000000ULL, { 0xA8A8B0A39D2A1FC2ULL, 0xB43E3F821CF7C5E3ULL } }, /* XSUM_XXH128_withSecret_testdata[3749] */ + { 3750, 0x0000000000000000ULL, { 0x5784AB60AEA1B6BCULL, 0xBAF3F36F5A0C9663ULL } }, /* XSUM_XXH128_withSecret_testdata[3750] */ + { 3751, 0x0000000000000000ULL, { 0xD64C5CB2A53FDCCAULL, 0x5F2FA4FF7B56D847ULL } }, /* XSUM_XXH128_withSecret_testdata[3751] */ + { 3752, 0x0000000000000000ULL, { 0x4DAFBC77C45F9225ULL, 0x0247FB56E2069B01ULL } }, /* XSUM_XXH128_withSecret_testdata[3752] */ + { 3753, 0x0000000000000000ULL, { 0xB075D911FFA1708FULL, 0x45D97E14EF54ABF7ULL } }, /* XSUM_XXH128_withSecret_testdata[3753] */ + { 3754, 0x0000000000000000ULL, { 0xB152C65017329C71ULL, 0xF8A3BB36B64E033BULL } }, /* XSUM_XXH128_withSecret_testdata[3754] */ + { 3755, 0x0000000000000000ULL, { 0xECEDCDA57DA1D9B6ULL, 0x45A36584E1C8D274ULL } }, /* XSUM_XXH128_withSecret_testdata[3755] */ + { 3756, 0x0000000000000000ULL, { 0xF582183984FDB908ULL, 0x8D984F873D9DED31ULL } }, /* XSUM_XXH128_withSecret_testdata[3756] */ + { 3757, 0x0000000000000000ULL, { 0x94BEE11D8AAA2CE3ULL, 0x9611A2DBCA466249ULL } }, /* XSUM_XXH128_withSecret_testdata[3757] */ + { 3758, 0x0000000000000000ULL, { 0xE92ED29BFBB00F69ULL, 0x2175E9E7506BB208ULL } }, /* XSUM_XXH128_withSecret_testdata[3758] */ + { 3759, 0x0000000000000000ULL, { 0x666F41EC3C2B2965ULL, 0x66BBEC748F2731F9ULL } }, /* XSUM_XXH128_withSecret_testdata[3759] */ + { 3760, 0x0000000000000000ULL, { 0x7B9E87883F93C2F9ULL, 0x5EF3B016FAD2D6DFULL } }, /* XSUM_XXH128_withSecret_testdata[3760] */ + { 3761, 0x0000000000000000ULL, { 0xEDADD8EFEEA8A3A0ULL, 0xA10E5A8EE0D4A7C6ULL } }, /* XSUM_XXH128_withSecret_testdata[3761] */ + { 3762, 0x0000000000000000ULL, { 0xF342739645FF0E44ULL, 0xF655754E0CDB5F93ULL } }, /* XSUM_XXH128_withSecret_testdata[3762] */ + { 3763, 0x0000000000000000ULL, { 0x2B0C530C6BC98851ULL, 0xD87936E5C59004A8ULL } }, /* XSUM_XXH128_withSecret_testdata[3763] */ + { 3764, 0x0000000000000000ULL, { 0x8B612A3272D16644ULL, 0x08FC7D68F877DBAFULL } }, /* XSUM_XXH128_withSecret_testdata[3764] */ + { 3765, 0x0000000000000000ULL, { 0xEA8BDCDEFCEF283CULL, 0xCB9AD1C1B9338B22ULL } }, /* XSUM_XXH128_withSecret_testdata[3765] */ + { 3766, 0x0000000000000000ULL, { 0x6416BB5A98C1FB2AULL, 0xD56F6DDF2C2E3431ULL } }, /* XSUM_XXH128_withSecret_testdata[3766] */ + { 3767, 0x0000000000000000ULL, { 0xB7F499E2B37496DCULL, 0x99D8B34070F37CB8ULL } }, /* XSUM_XXH128_withSecret_testdata[3767] */ + { 3768, 0x0000000000000000ULL, { 0x33CB4D1B2ED8DC8DULL, 0xD388E910AE693432ULL } }, /* XSUM_XXH128_withSecret_testdata[3768] */ + { 3769, 0x0000000000000000ULL, { 0xEAC1D6CFE61BE787ULL, 0x1CFEC1026ECBC881ULL } }, /* XSUM_XXH128_withSecret_testdata[3769] */ + { 3770, 0x0000000000000000ULL, { 0x46C761EFDD47C86CULL, 0x271CC5D5699049E5ULL } }, /* XSUM_XXH128_withSecret_testdata[3770] */ + { 3771, 0x0000000000000000ULL, { 0xAB537E712965BA86ULL, 0x39082A9E9AF968A3ULL } }, /* XSUM_XXH128_withSecret_testdata[3771] */ + { 3772, 0x0000000000000000ULL, { 0x02D305D648501AADULL, 0xD5AE0175BBE942D7ULL } }, /* XSUM_XXH128_withSecret_testdata[3772] */ + { 3773, 0x0000000000000000ULL, { 0xB17AD8CCD4BC7A04ULL, 0x0C3411FD80AE6405ULL } }, /* XSUM_XXH128_withSecret_testdata[3773] */ + { 3774, 0x0000000000000000ULL, { 0xBCF6823A22C99244ULL, 0xE08CFDE823997C3CULL } }, /* XSUM_XXH128_withSecret_testdata[3774] */ + { 3775, 0x0000000000000000ULL, { 0x96EEEB261AF86AD9ULL, 0x36521B3235EB864BULL } }, /* XSUM_XXH128_withSecret_testdata[3775] */ + { 3776, 0x0000000000000000ULL, { 0x2C7A8443A839BA3AULL, 0xB5CBAE63894C7379ULL } }, /* XSUM_XXH128_withSecret_testdata[3776] */ + { 3777, 0x0000000000000000ULL, { 0x0E474F9A93CCB242ULL, 0x5403B0FA090FF504ULL } }, /* XSUM_XXH128_withSecret_testdata[3777] */ + { 3778, 0x0000000000000000ULL, { 0xFDC63A0F211D3154ULL, 0x34AAAF7E46D3C7EBULL } }, /* XSUM_XXH128_withSecret_testdata[3778] */ + { 3779, 0x0000000000000000ULL, { 0xE56BED521618B7BAULL, 0x52FDCE63F644C14EULL } }, /* XSUM_XXH128_withSecret_testdata[3779] */ + { 3780, 0x0000000000000000ULL, { 0xDA685DF97CA1506DULL, 0xEC3D03DD91665F05ULL } }, /* XSUM_XXH128_withSecret_testdata[3780] */ + { 3781, 0x0000000000000000ULL, { 0x1C1FD38460B6F82AULL, 0x2F2EC2313092A143ULL } }, /* XSUM_XXH128_withSecret_testdata[3781] */ + { 3782, 0x0000000000000000ULL, { 0xF9DF2C7BBBF67FA1ULL, 0x05D0D581DEF42659ULL } }, /* XSUM_XXH128_withSecret_testdata[3782] */ + { 3783, 0x0000000000000000ULL, { 0x7BCFE3EF0B35C54FULL, 0x250708C41F6FD18FULL } }, /* XSUM_XXH128_withSecret_testdata[3783] */ + { 3784, 0x0000000000000000ULL, { 0x77E909EC093B2113ULL, 0xFDB204915CC8B2C4ULL } }, /* XSUM_XXH128_withSecret_testdata[3784] */ + { 3785, 0x0000000000000000ULL, { 0xB74CAA8CBFC01E10ULL, 0x177D70C9CFC574E2ULL } }, /* XSUM_XXH128_withSecret_testdata[3785] */ + { 3786, 0x0000000000000000ULL, { 0xDAC8D10D0862BCD5ULL, 0x53F946795CAB7F1DULL } }, /* XSUM_XXH128_withSecret_testdata[3786] */ + { 3787, 0x0000000000000000ULL, { 0xB9E4FAF7B370A187ULL, 0xD7F74DC4F9722AAAULL } }, /* XSUM_XXH128_withSecret_testdata[3787] */ + { 3788, 0x0000000000000000ULL, { 0x3D82B66B5D1BB880ULL, 0x903811FB9EF8935DULL } }, /* XSUM_XXH128_withSecret_testdata[3788] */ + { 3789, 0x0000000000000000ULL, { 0x9304E5F1EBAFE4C7ULL, 0xB5622198A036948CULL } }, /* XSUM_XXH128_withSecret_testdata[3789] */ + { 3790, 0x0000000000000000ULL, { 0xC7A9C2576FBD767DULL, 0x601A9D64975E346CULL } }, /* XSUM_XXH128_withSecret_testdata[3790] */ + { 3791, 0x0000000000000000ULL, { 0x14F01E3E28FC759DULL, 0x2064A854A3F28AE6ULL } }, /* XSUM_XXH128_withSecret_testdata[3791] */ + { 3792, 0x0000000000000000ULL, { 0x76FD38736065BED7ULL, 0x1EA4DFA3207A480BULL } }, /* XSUM_XXH128_withSecret_testdata[3792] */ + { 3793, 0x0000000000000000ULL, { 0x4E31D701EB7670D3ULL, 0xB3EC2E30282777CFULL } }, /* XSUM_XXH128_withSecret_testdata[3793] */ + { 3794, 0x0000000000000000ULL, { 0x340F87F84F06CC94ULL, 0xA6FAF0DB69FAB8FEULL } }, /* XSUM_XXH128_withSecret_testdata[3794] */ + { 3795, 0x0000000000000000ULL, { 0xDA2B3FBB4B61DB28ULL, 0x18365C5B6241310BULL } }, /* XSUM_XXH128_withSecret_testdata[3795] */ + { 3796, 0x0000000000000000ULL, { 0x63401C635E1CEFFFULL, 0xA75AD25BDD073B90ULL } }, /* XSUM_XXH128_withSecret_testdata[3796] */ + { 3797, 0x0000000000000000ULL, { 0x07EA5DE2D1677BB5ULL, 0x21D520BBB49D64CBULL } }, /* XSUM_XXH128_withSecret_testdata[3797] */ + { 3798, 0x0000000000000000ULL, { 0x32882E6562EE4F9AULL, 0xF8CA3A0B9BF9A3E5ULL } }, /* XSUM_XXH128_withSecret_testdata[3798] */ + { 3799, 0x0000000000000000ULL, { 0x16D20325CB5BAFD0ULL, 0x78EF6704D9265E7DULL } }, /* XSUM_XXH128_withSecret_testdata[3799] */ + { 3800, 0x0000000000000000ULL, { 0xD1D2AE3C74F79A1DULL, 0x1E672E9D194C98DAULL } }, /* XSUM_XXH128_withSecret_testdata[3800] */ + { 3801, 0x0000000000000000ULL, { 0x58F0413920C56ADBULL, 0x606D20FC45557FD7ULL } }, /* XSUM_XXH128_withSecret_testdata[3801] */ + { 3802, 0x0000000000000000ULL, { 0x84B5A597342D2628ULL, 0x1539304B02386693ULL } }, /* XSUM_XXH128_withSecret_testdata[3802] */ + { 3803, 0x0000000000000000ULL, { 0x49093794D9FC2868ULL, 0xEC793686C0FA481AULL } }, /* XSUM_XXH128_withSecret_testdata[3803] */ + { 3804, 0x0000000000000000ULL, { 0x92FBA0D90B409409ULL, 0x7D88D99987FCD15AULL } }, /* XSUM_XXH128_withSecret_testdata[3804] */ + { 3805, 0x0000000000000000ULL, { 0x649EA52C223F577AULL, 0xB96DED16CDAF578BULL } }, /* XSUM_XXH128_withSecret_testdata[3805] */ + { 3806, 0x0000000000000000ULL, { 0x423C53D0087BFDD5ULL, 0x44FCF1ABED497468ULL } }, /* XSUM_XXH128_withSecret_testdata[3806] */ + { 3807, 0x0000000000000000ULL, { 0x613799A6F9D3F0C2ULL, 0xEF3544B362EBEA23ULL } }, /* XSUM_XXH128_withSecret_testdata[3807] */ + { 3808, 0x0000000000000000ULL, { 0x1DD793160A191682ULL, 0x55378472784E553CULL } }, /* XSUM_XXH128_withSecret_testdata[3808] */ + { 3809, 0x0000000000000000ULL, { 0xE354257ACA462674ULL, 0x4874F80A39AC81B7ULL } }, /* XSUM_XXH128_withSecret_testdata[3809] */ + { 3810, 0x0000000000000000ULL, { 0x7A90A29F197857D9ULL, 0xE61B58E00F47C682ULL } }, /* XSUM_XXH128_withSecret_testdata[3810] */ + { 3811, 0x0000000000000000ULL, { 0x479DDA084F200DD5ULL, 0x890E7B627A59C879ULL } }, /* XSUM_XXH128_withSecret_testdata[3811] */ + { 3812, 0x0000000000000000ULL, { 0x1C8590EC97FD6CB5ULL, 0x361AEBCC6E4FC99DULL } }, /* XSUM_XXH128_withSecret_testdata[3812] */ + { 3813, 0x0000000000000000ULL, { 0x33D6C48753A38611ULL, 0xE3B19D40DC36F336ULL } }, /* XSUM_XXH128_withSecret_testdata[3813] */ + { 3814, 0x0000000000000000ULL, { 0x40B740DFA545198BULL, 0x73B6E68B4C5B2D46ULL } }, /* XSUM_XXH128_withSecret_testdata[3814] */ + { 3815, 0x0000000000000000ULL, { 0x8D1D8E8C352095D4ULL, 0x550B075ED6539795ULL } }, /* XSUM_XXH128_withSecret_testdata[3815] */ + { 3816, 0x0000000000000000ULL, { 0xC69121B15BFEA3CCULL, 0xFA54F260EA30D95DULL } }, /* XSUM_XXH128_withSecret_testdata[3816] */ + { 3817, 0x0000000000000000ULL, { 0x9B0CE9D9A00F332AULL, 0x65459678955D8B16ULL } }, /* XSUM_XXH128_withSecret_testdata[3817] */ + { 3818, 0x0000000000000000ULL, { 0xD4B48E6420DAD175ULL, 0x639C640BB29EDEC4ULL } }, /* XSUM_XXH128_withSecret_testdata[3818] */ + { 3819, 0x0000000000000000ULL, { 0x9AF27DA42034A1AEULL, 0x9F4F747C1BACB0F0ULL } }, /* XSUM_XXH128_withSecret_testdata[3819] */ + { 3820, 0x0000000000000000ULL, { 0xC8C71DEC751587A6ULL, 0xF3EF4540C7AC80A4ULL } }, /* XSUM_XXH128_withSecret_testdata[3820] */ + { 3821, 0x0000000000000000ULL, { 0x0316EC3A75873436ULL, 0xB5B2BE9BEDA57B61ULL } }, /* XSUM_XXH128_withSecret_testdata[3821] */ + { 3822, 0x0000000000000000ULL, { 0x3B37690A367657FAULL, 0xCB6F58A011B9FBE0ULL } }, /* XSUM_XXH128_withSecret_testdata[3822] */ + { 3823, 0x0000000000000000ULL, { 0xC09F52288854CAE0ULL, 0x7A7C5FF63D639777ULL } }, /* XSUM_XXH128_withSecret_testdata[3823] */ + { 3824, 0x0000000000000000ULL, { 0xAC7D977DBFED7A45ULL, 0xDC9324D85F7100FDULL } }, /* XSUM_XXH128_withSecret_testdata[3824] */ + { 3825, 0x0000000000000000ULL, { 0x8F756E5031220FA0ULL, 0x14ED6C065DDCEF7EULL } }, /* XSUM_XXH128_withSecret_testdata[3825] */ + { 3826, 0x0000000000000000ULL, { 0x121FA696A8744068ULL, 0xC1E33C3F401D2F1BULL } }, /* XSUM_XXH128_withSecret_testdata[3826] */ + { 3827, 0x0000000000000000ULL, { 0x935280FAA6F76A56ULL, 0x6AD10A8BC33835FEULL } }, /* XSUM_XXH128_withSecret_testdata[3827] */ + { 3828, 0x0000000000000000ULL, { 0x66211848A15A1541ULL, 0x53D57D4B6853031FULL } }, /* XSUM_XXH128_withSecret_testdata[3828] */ + { 3829, 0x0000000000000000ULL, { 0x440A03E907D66571ULL, 0x3120E61389BDDA65ULL } }, /* XSUM_XXH128_withSecret_testdata[3829] */ + { 3830, 0x0000000000000000ULL, { 0x9491D55283A09C43ULL, 0x94CFD847A73CAC0DULL } }, /* XSUM_XXH128_withSecret_testdata[3830] */ + { 3831, 0x0000000000000000ULL, { 0x308FD6DCD408AA5AULL, 0x005993E54FC37E03ULL } }, /* XSUM_XXH128_withSecret_testdata[3831] */ + { 3832, 0x0000000000000000ULL, { 0x6F5D57109CA10AEAULL, 0x22C858EA457D707FULL } }, /* XSUM_XXH128_withSecret_testdata[3832] */ + { 3833, 0x0000000000000000ULL, { 0x0BB422616E2FF0F5ULL, 0x3D4A5D17CEBC61EEULL } }, /* XSUM_XXH128_withSecret_testdata[3833] */ + { 3834, 0x0000000000000000ULL, { 0xF71FB6B3FABCC5B5ULL, 0x4BBA66DAEC7143E6ULL } }, /* XSUM_XXH128_withSecret_testdata[3834] */ + { 3835, 0x0000000000000000ULL, { 0x0D077380BC66E5F8ULL, 0xE0AA41A47D4DF604ULL } }, /* XSUM_XXH128_withSecret_testdata[3835] */ + { 3836, 0x0000000000000000ULL, { 0x2D18821A1CE7A0D3ULL, 0xFB28762F8E97D391ULL } }, /* XSUM_XXH128_withSecret_testdata[3836] */ + { 3837, 0x0000000000000000ULL, { 0x89741346BBAF3616ULL, 0x78F14FDF4E138E09ULL } }, /* XSUM_XXH128_withSecret_testdata[3837] */ + { 3838, 0x0000000000000000ULL, { 0x5BE5AE3674120F8EULL, 0x0A6B2B02BF89AC19ULL } }, /* XSUM_XXH128_withSecret_testdata[3838] */ + { 3839, 0x0000000000000000ULL, { 0x83FC1E78888AEB54ULL, 0xDBB0805DECF2169BULL } }, /* XSUM_XXH128_withSecret_testdata[3839] */ + { 3840, 0x0000000000000000ULL, { 0xED8925DFA219FFB2ULL, 0xE0127B85EC7E2004ULL } }, /* XSUM_XXH128_withSecret_testdata[3840] */ + { 3841, 0x0000000000000000ULL, { 0xBB51262335EFC2A7ULL, 0x60CDCDCF591B2E5EULL } }, /* XSUM_XXH128_withSecret_testdata[3841] */ + { 3842, 0x0000000000000000ULL, { 0xF781FFA8219D2D48ULL, 0xAD802AB0D6878EEFULL } }, /* XSUM_XXH128_withSecret_testdata[3842] */ + { 3843, 0x0000000000000000ULL, { 0xF5AA718CEE24D232ULL, 0x2B5D64791A5A9F01ULL } }, /* XSUM_XXH128_withSecret_testdata[3843] */ + { 3844, 0x0000000000000000ULL, { 0x6F983BF6054906C1ULL, 0x09F95C9CCBEDC819ULL } }, /* XSUM_XXH128_withSecret_testdata[3844] */ + { 3845, 0x0000000000000000ULL, { 0xB9A4B25D6D15DD75ULL, 0x207ED6D3F33FD1B0ULL } }, /* XSUM_XXH128_withSecret_testdata[3845] */ + { 3846, 0x0000000000000000ULL, { 0x03DFB187DE44D487ULL, 0xDF14E97752118223ULL } }, /* XSUM_XXH128_withSecret_testdata[3846] */ + { 3847, 0x0000000000000000ULL, { 0x77DA1F2A998FE3ABULL, 0xFC8F3EAF1513D808ULL } }, /* XSUM_XXH128_withSecret_testdata[3847] */ + { 3848, 0x0000000000000000ULL, { 0x26C8738103EF1A53ULL, 0xB42EE7752E38C5F3ULL } }, /* XSUM_XXH128_withSecret_testdata[3848] */ + { 3849, 0x0000000000000000ULL, { 0xA458541991D43DB4ULL, 0x434950A83707729DULL } }, /* XSUM_XXH128_withSecret_testdata[3849] */ + { 3850, 0x0000000000000000ULL, { 0x477DE4BF55A335CEULL, 0x68B699F55980684CULL } }, /* XSUM_XXH128_withSecret_testdata[3850] */ + { 3851, 0x0000000000000000ULL, { 0x147708C7E1BE1F09ULL, 0x4F5E50E64B870B94ULL } }, /* XSUM_XXH128_withSecret_testdata[3851] */ + { 3852, 0x0000000000000000ULL, { 0x4F80B172AD9704ECULL, 0x8C89A127D3A3A71AULL } }, /* XSUM_XXH128_withSecret_testdata[3852] */ + { 3853, 0x0000000000000000ULL, { 0x0CA2B096526C33F9ULL, 0x5FA4BDF7CD43F324ULL } }, /* XSUM_XXH128_withSecret_testdata[3853] */ + { 3854, 0x0000000000000000ULL, { 0x013AE1F7A29A617AULL, 0x42C8FDF65B4D7FC6ULL } }, /* XSUM_XXH128_withSecret_testdata[3854] */ + { 3855, 0x0000000000000000ULL, { 0x049FAA6D542D15CFULL, 0x3F9AE0EF96E0D25CULL } }, /* XSUM_XXH128_withSecret_testdata[3855] */ + { 3856, 0x0000000000000000ULL, { 0x13039E7C64323905ULL, 0xEAB2ABBE6039DF7EULL } }, /* XSUM_XXH128_withSecret_testdata[3856] */ + { 3857, 0x0000000000000000ULL, { 0x79D4917EA102D901ULL, 0x46840D9B86E1E5BDULL } }, /* XSUM_XXH128_withSecret_testdata[3857] */ + { 3858, 0x0000000000000000ULL, { 0xDACB2985AEC67711ULL, 0x4E3B0BFF9393123BULL } }, /* XSUM_XXH128_withSecret_testdata[3858] */ + { 3859, 0x0000000000000000ULL, { 0x601C42A33E2D0902ULL, 0x36430AC5FACC09C4ULL } }, /* XSUM_XXH128_withSecret_testdata[3859] */ + { 3860, 0x0000000000000000ULL, { 0xF1FA5A2ADE2EE6C7ULL, 0xF55AA203C6787896ULL } }, /* XSUM_XXH128_withSecret_testdata[3860] */ + { 3861, 0x0000000000000000ULL, { 0x8640BA9218BB17E9ULL, 0x88B616997E0FC038ULL } }, /* XSUM_XXH128_withSecret_testdata[3861] */ + { 3862, 0x0000000000000000ULL, { 0x61364A17DAE52AE8ULL, 0x8BE45412A43C8C2DULL } }, /* XSUM_XXH128_withSecret_testdata[3862] */ + { 3863, 0x0000000000000000ULL, { 0x8B8256DE86A83190ULL, 0x309F288C902DD7C4ULL } }, /* XSUM_XXH128_withSecret_testdata[3863] */ + { 3864, 0x0000000000000000ULL, { 0x0CE94D5DCE669515ULL, 0xB08233133A6B26B3ULL } }, /* XSUM_XXH128_withSecret_testdata[3864] */ + { 3865, 0x0000000000000000ULL, { 0x376563E1285C6D31ULL, 0x338119C81719118BULL } }, /* XSUM_XXH128_withSecret_testdata[3865] */ + { 3866, 0x0000000000000000ULL, { 0xC75FAC7CEF0E0B28ULL, 0xCA2303D5E6EE5F3EULL } }, /* XSUM_XXH128_withSecret_testdata[3866] */ + { 3867, 0x0000000000000000ULL, { 0x15757DB615C48441ULL, 0xF446A408CE1701F7ULL } }, /* XSUM_XXH128_withSecret_testdata[3867] */ + { 3868, 0x0000000000000000ULL, { 0x3B900D93E2E69F82ULL, 0x472DE4F58D728062ULL } }, /* XSUM_XXH128_withSecret_testdata[3868] */ + { 3869, 0x0000000000000000ULL, { 0xF3EB1C5CAC0AECA8ULL, 0x22DAE0563EB1DC52ULL } }, /* XSUM_XXH128_withSecret_testdata[3869] */ + { 3870, 0x0000000000000000ULL, { 0x6C6E7AD81742B826ULL, 0x716FA1319EF3D90BULL } }, /* XSUM_XXH128_withSecret_testdata[3870] */ + { 3871, 0x0000000000000000ULL, { 0xC951CB98838C3165ULL, 0x3962DC8211FA1217ULL } }, /* XSUM_XXH128_withSecret_testdata[3871] */ + { 3872, 0x0000000000000000ULL, { 0x7084FDE99B988E35ULL, 0xF859FF8BCF5AEC45ULL } }, /* XSUM_XXH128_withSecret_testdata[3872] */ + { 3873, 0x0000000000000000ULL, { 0x21BA5B9DE45DEA90ULL, 0x69C4ECB204A0F69CULL } }, /* XSUM_XXH128_withSecret_testdata[3873] */ + { 3874, 0x0000000000000000ULL, { 0x9F1607F01961CB5EULL, 0xA70AAE1334530255ULL } }, /* XSUM_XXH128_withSecret_testdata[3874] */ + { 3875, 0x0000000000000000ULL, { 0x5E21F010B693F7DDULL, 0x53FF1810A3F920CEULL } }, /* XSUM_XXH128_withSecret_testdata[3875] */ + { 3876, 0x0000000000000000ULL, { 0xFD7A548ABFE10CBAULL, 0x25ABE7B4D62DB540ULL } }, /* XSUM_XXH128_withSecret_testdata[3876] */ + { 3877, 0x0000000000000000ULL, { 0x0F73AD12D922EF01ULL, 0xED145049C1F033DBULL } }, /* XSUM_XXH128_withSecret_testdata[3877] */ + { 3878, 0x0000000000000000ULL, { 0x552A4D2349FD8930ULL, 0xE2272D59EEFCD624ULL } }, /* XSUM_XXH128_withSecret_testdata[3878] */ + { 3879, 0x0000000000000000ULL, { 0x3ED45EF89DDD1BEFULL, 0x45767C1F1E48EAD7ULL } }, /* XSUM_XXH128_withSecret_testdata[3879] */ + { 3880, 0x0000000000000000ULL, { 0x3968D05D6F1D061AULL, 0x501356691452FB96ULL } }, /* XSUM_XXH128_withSecret_testdata[3880] */ + { 3881, 0x0000000000000000ULL, { 0x3344DBEEB28A34BEULL, 0xE566272EF55D6B6BULL } }, /* XSUM_XXH128_withSecret_testdata[3881] */ + { 3882, 0x0000000000000000ULL, { 0x60AD1E4CB1E6BE07ULL, 0x0A272B96506A12ADULL } }, /* XSUM_XXH128_withSecret_testdata[3882] */ + { 3883, 0x0000000000000000ULL, { 0x1B803BE7A6EE325DULL, 0x37457240507ED6FCULL } }, /* XSUM_XXH128_withSecret_testdata[3883] */ + { 3884, 0x0000000000000000ULL, { 0xD4999587BCC54BA7ULL, 0xA04EA4D555184EBCULL } }, /* XSUM_XXH128_withSecret_testdata[3884] */ + { 3885, 0x0000000000000000ULL, { 0x685F7F3FCEFC0BDAULL, 0x7141B0D1559C8CF8ULL } }, /* XSUM_XXH128_withSecret_testdata[3885] */ + { 3886, 0x0000000000000000ULL, { 0x6372BF182DC55808ULL, 0xCD9CD5DA5D996E84ULL } }, /* XSUM_XXH128_withSecret_testdata[3886] */ + { 3887, 0x0000000000000000ULL, { 0x3156503EA20E4BCAULL, 0xC66999F813844D2FULL } }, /* XSUM_XXH128_withSecret_testdata[3887] */ + { 3888, 0x0000000000000000ULL, { 0xDA2C23CD9B86B7CDULL, 0x457BE21D773B20DFULL } }, /* XSUM_XXH128_withSecret_testdata[3888] */ + { 3889, 0x0000000000000000ULL, { 0x7F5FAA17E5806167ULL, 0xBD72EFD2CCF4BC21ULL } }, /* XSUM_XXH128_withSecret_testdata[3889] */ + { 3890, 0x0000000000000000ULL, { 0xB1096B3D48C20008ULL, 0xECAE62DD5E418200ULL } }, /* XSUM_XXH128_withSecret_testdata[3890] */ + { 3891, 0x0000000000000000ULL, { 0x4AD5418DD0EAC137ULL, 0x8A4702B8F9DD7D27ULL } }, /* XSUM_XXH128_withSecret_testdata[3891] */ + { 3892, 0x0000000000000000ULL, { 0x466D3013825AE37CULL, 0x23C76E8095FC6A87ULL } }, /* XSUM_XXH128_withSecret_testdata[3892] */ + { 3893, 0x0000000000000000ULL, { 0x042F95B677AB0DD5ULL, 0xD7565BA1FE24A1CBULL } }, /* XSUM_XXH128_withSecret_testdata[3893] */ + { 3894, 0x0000000000000000ULL, { 0xEA13C83EFEF8A615ULL, 0x14DDA8B564DFCE37ULL } }, /* XSUM_XXH128_withSecret_testdata[3894] */ + { 3895, 0x0000000000000000ULL, { 0x9E4A0F97E8D5666EULL, 0x20396B5D075308DCULL } }, /* XSUM_XXH128_withSecret_testdata[3895] */ + { 3896, 0x0000000000000000ULL, { 0x0D80D8CCE3ED4C48ULL, 0x2802C33D4E10C614ULL } }, /* XSUM_XXH128_withSecret_testdata[3896] */ + { 3897, 0x0000000000000000ULL, { 0xBF430BCD17E867B5ULL, 0x3208047D37727256ULL } }, /* XSUM_XXH128_withSecret_testdata[3897] */ + { 3898, 0x0000000000000000ULL, { 0x9BB9BC9B675F788AULL, 0x54ECA26A0B0B48A1ULL } }, /* XSUM_XXH128_withSecret_testdata[3898] */ + { 3899, 0x0000000000000000ULL, { 0x3774510B1E6E7F04ULL, 0x66559625F5D1719FULL } }, /* XSUM_XXH128_withSecret_testdata[3899] */ + { 3900, 0x0000000000000000ULL, { 0xDF7A7AD16BD22D35ULL, 0x7D540A1EB60F180EULL } }, /* XSUM_XXH128_withSecret_testdata[3900] */ + { 3901, 0x0000000000000000ULL, { 0x52B56258F36FB33DULL, 0x511344F8A9E08F1DULL } }, /* XSUM_XXH128_withSecret_testdata[3901] */ + { 3902, 0x0000000000000000ULL, { 0x0E1E913ADF08DF1FULL, 0x6BC21FD4A402FB93ULL } }, /* XSUM_XXH128_withSecret_testdata[3902] */ + { 3903, 0x0000000000000000ULL, { 0xB95B7C9F36356CD2ULL, 0xE4CE8D43EB886C92ULL } }, /* XSUM_XXH128_withSecret_testdata[3903] */ + { 3904, 0x0000000000000000ULL, { 0x1F90A3C3B9455555ULL, 0xBD0D663F0EA974C7ULL } }, /* XSUM_XXH128_withSecret_testdata[3904] */ + { 3905, 0x0000000000000000ULL, { 0x1DB6217A29421657ULL, 0xD8E252289066312AULL } }, /* XSUM_XXH128_withSecret_testdata[3905] */ + { 3906, 0x0000000000000000ULL, { 0x5E1883B8DBCDBF1FULL, 0xECF699D1AD976F92ULL } }, /* XSUM_XXH128_withSecret_testdata[3906] */ + { 3907, 0x0000000000000000ULL, { 0x90C2FA82176C1BE2ULL, 0x2E22521DD89F1FA0ULL } }, /* XSUM_XXH128_withSecret_testdata[3907] */ + { 3908, 0x0000000000000000ULL, { 0x3C4AB5B9A1BE2EAFULL, 0xAC1239F2B202DDA2ULL } }, /* XSUM_XXH128_withSecret_testdata[3908] */ + { 3909, 0x0000000000000000ULL, { 0x0C8A9C33F8C25C1FULL, 0xACFBEE8AFCFFAEB2ULL } }, /* XSUM_XXH128_withSecret_testdata[3909] */ + { 3910, 0x0000000000000000ULL, { 0xE8440A7A4D68B7ABULL, 0xCC8ACF4A787B2930ULL } }, /* XSUM_XXH128_withSecret_testdata[3910] */ + { 3911, 0x0000000000000000ULL, { 0xC52FD58F9FC58964ULL, 0x98095D0301A62EF1ULL } }, /* XSUM_XXH128_withSecret_testdata[3911] */ + { 3912, 0x0000000000000000ULL, { 0x9EC76C894C62DE08ULL, 0xD0075F4CEE85C2D4ULL } }, /* XSUM_XXH128_withSecret_testdata[3912] */ + { 3913, 0x0000000000000000ULL, { 0x767105D328069CE7ULL, 0x7F7339720F39ED6BULL } }, /* XSUM_XXH128_withSecret_testdata[3913] */ + { 3914, 0x0000000000000000ULL, { 0x52D4745EC61C14EBULL, 0x1FA452A20EB38D8AULL } }, /* XSUM_XXH128_withSecret_testdata[3914] */ + { 3915, 0x0000000000000000ULL, { 0x1E67F6E12B7F93CEULL, 0x5EBFA76E9EC4DFE1ULL } }, /* XSUM_XXH128_withSecret_testdata[3915] */ + { 3916, 0x0000000000000000ULL, { 0x9ABB0531A9D44411ULL, 0xF45019AAEF8B19A9ULL } }, /* XSUM_XXH128_withSecret_testdata[3916] */ + { 3917, 0x0000000000000000ULL, { 0x040C7F9A4964F3F0ULL, 0xD92459BDC5B90A7FULL } }, /* XSUM_XXH128_withSecret_testdata[3917] */ + { 3918, 0x0000000000000000ULL, { 0x6E17312BA20C938CULL, 0xF4E71CFD5B71AB7AULL } }, /* XSUM_XXH128_withSecret_testdata[3918] */ + { 3919, 0x0000000000000000ULL, { 0x7D4C56E59201E07AULL, 0xC3A44EA30DD56990ULL } }, /* XSUM_XXH128_withSecret_testdata[3919] */ + { 3920, 0x0000000000000000ULL, { 0x394E53379B160483ULL, 0x27C600DE4DAAEF04ULL } }, /* XSUM_XXH128_withSecret_testdata[3920] */ + { 3921, 0x0000000000000000ULL, { 0x0A0B7FE58C246440ULL, 0xD946FD1AE5F20E58ULL } }, /* XSUM_XXH128_withSecret_testdata[3921] */ + { 3922, 0x0000000000000000ULL, { 0x9ABAD672A06F8EC3ULL, 0x221F05447409AA6DULL } }, /* XSUM_XXH128_withSecret_testdata[3922] */ + { 3923, 0x0000000000000000ULL, { 0xED7857BE50F696EEULL, 0xFAC666486A6A5B0CULL } }, /* XSUM_XXH128_withSecret_testdata[3923] */ + { 3924, 0x0000000000000000ULL, { 0x5BCBD2C839AF6810ULL, 0xB69079BAA26FBE9BULL } }, /* XSUM_XXH128_withSecret_testdata[3924] */ + { 3925, 0x0000000000000000ULL, { 0x44886BAE5A33F6BDULL, 0xA0DF316D53A2BEE1ULL } }, /* XSUM_XXH128_withSecret_testdata[3925] */ + { 3926, 0x0000000000000000ULL, { 0x6A716B87F0459627ULL, 0x9B585314CDD77255ULL } }, /* XSUM_XXH128_withSecret_testdata[3926] */ + { 3927, 0x0000000000000000ULL, { 0x88E0523327EBC31BULL, 0x6831D25E9AA883A5ULL } }, /* XSUM_XXH128_withSecret_testdata[3927] */ + { 3928, 0x0000000000000000ULL, { 0x0A0C83F05753D320ULL, 0x916DAC7D7453C5D7ULL } }, /* XSUM_XXH128_withSecret_testdata[3928] */ + { 3929, 0x0000000000000000ULL, { 0xB5BD6EF42352751EULL, 0x616F6FFC87825716ULL } }, /* XSUM_XXH128_withSecret_testdata[3929] */ + { 3930, 0x0000000000000000ULL, { 0xF1B64D06A9674EC5ULL, 0x6BD8BFE46CFC52D3ULL } }, /* XSUM_XXH128_withSecret_testdata[3930] */ + { 3931, 0x0000000000000000ULL, { 0x2B77BADB2628D036ULL, 0x5A99FE0967C7ADE8ULL } }, /* XSUM_XXH128_withSecret_testdata[3931] */ + { 3932, 0x0000000000000000ULL, { 0x826F2F97D7BFD76CULL, 0x8FF3FE0551388A23ULL } }, /* XSUM_XXH128_withSecret_testdata[3932] */ + { 3933, 0x0000000000000000ULL, { 0xD667DA118A339719ULL, 0xB99C93175EA8900CULL } }, /* XSUM_XXH128_withSecret_testdata[3933] */ + { 3934, 0x0000000000000000ULL, { 0x501E1D45774C0E55ULL, 0xD5B6FCF36FEE4716ULL } }, /* XSUM_XXH128_withSecret_testdata[3934] */ + { 3935, 0x0000000000000000ULL, { 0xE4A479DA36C1CAB8ULL, 0xCC6FFE942C3F0944ULL } }, /* XSUM_XXH128_withSecret_testdata[3935] */ + { 3936, 0x0000000000000000ULL, { 0x3B0D3D4D2725B066ULL, 0x58EDFEFFF3009F84ULL } }, /* XSUM_XXH128_withSecret_testdata[3936] */ + { 3937, 0x0000000000000000ULL, { 0x9E0C63E6BACFC21CULL, 0x6930169AD4ECB14CULL } }, /* XSUM_XXH128_withSecret_testdata[3937] */ + { 3938, 0x0000000000000000ULL, { 0x4CE6D62F07031DB7ULL, 0xAFC2BBA12EC643FDULL } }, /* XSUM_XXH128_withSecret_testdata[3938] */ + { 3939, 0x0000000000000000ULL, { 0x0F4BEBD8BB21E5F1ULL, 0x338BD175D6534D14ULL } }, /* XSUM_XXH128_withSecret_testdata[3939] */ + { 3940, 0x0000000000000000ULL, { 0xB67EF66C05DD3737ULL, 0xAEEAA72FC41CB938ULL } }, /* XSUM_XXH128_withSecret_testdata[3940] */ + { 3941, 0x0000000000000000ULL, { 0x3E225CA0833C7B24ULL, 0xA47162E4FCDC3810ULL } }, /* XSUM_XXH128_withSecret_testdata[3941] */ + { 3942, 0x0000000000000000ULL, { 0xEC16404F1138A509ULL, 0xE4ECD315BDC073C0ULL } }, /* XSUM_XXH128_withSecret_testdata[3942] */ + { 3943, 0x0000000000000000ULL, { 0xD09524AA524FC24FULL, 0xB5923F3811EE0AEDULL } }, /* XSUM_XXH128_withSecret_testdata[3943] */ + { 3944, 0x0000000000000000ULL, { 0xA57072D294086351ULL, 0x073D56DE59919C7FULL } }, /* XSUM_XXH128_withSecret_testdata[3944] */ + { 3945, 0x0000000000000000ULL, { 0xB11118C50C185FF3ULL, 0x5214FB31D113C214ULL } }, /* XSUM_XXH128_withSecret_testdata[3945] */ + { 3946, 0x0000000000000000ULL, { 0x5FD78C944C803E26ULL, 0x147789A6C8F1E613ULL } }, /* XSUM_XXH128_withSecret_testdata[3946] */ + { 3947, 0x0000000000000000ULL, { 0xEDA8B44313DA978FULL, 0xB3295BE6BE6B9985ULL } }, /* XSUM_XXH128_withSecret_testdata[3947] */ + { 3948, 0x0000000000000000ULL, { 0x265E621233257D37ULL, 0x55FAA14790CFF73FULL } }, /* XSUM_XXH128_withSecret_testdata[3948] */ + { 3949, 0x0000000000000000ULL, { 0x4E37AACED239559CULL, 0x04CB5CE795369960ULL } }, /* XSUM_XXH128_withSecret_testdata[3949] */ + { 3950, 0x0000000000000000ULL, { 0x1BEDAF55A1905256ULL, 0x530E6DA8525AAEBBULL } }, /* XSUM_XXH128_withSecret_testdata[3950] */ + { 3951, 0x0000000000000000ULL, { 0x35B4561FC0AFF903ULL, 0xD34BEACC5C437D0FULL } }, /* XSUM_XXH128_withSecret_testdata[3951] */ + { 3952, 0x0000000000000000ULL, { 0x2B2E8D7ED978BF9BULL, 0xDAA55E38BC466A05ULL } }, /* XSUM_XXH128_withSecret_testdata[3952] */ + { 3953, 0x0000000000000000ULL, { 0x851B421178EE4DEAULL, 0xE3492B1D46B32835ULL } }, /* XSUM_XXH128_withSecret_testdata[3953] */ + { 3954, 0x0000000000000000ULL, { 0xAD11DBE6D67810CFULL, 0x8E13365CB5EAF80BULL } }, /* XSUM_XXH128_withSecret_testdata[3954] */ + { 3955, 0x0000000000000000ULL, { 0x832EFB6BE76C4917ULL, 0xBCA175229C3D8293ULL } }, /* XSUM_XXH128_withSecret_testdata[3955] */ + { 3956, 0x0000000000000000ULL, { 0x5AF2B3FE52A9644FULL, 0x08F86A6B8F211C4DULL } }, /* XSUM_XXH128_withSecret_testdata[3956] */ + { 3957, 0x0000000000000000ULL, { 0x99C4F79C46EEA142ULL, 0xEF5CB72391FD13AEULL } }, /* XSUM_XXH128_withSecret_testdata[3957] */ + { 3958, 0x0000000000000000ULL, { 0x8DF60D6BF156B9D8ULL, 0x755D5DE498D3B005ULL } }, /* XSUM_XXH128_withSecret_testdata[3958] */ + { 3959, 0x0000000000000000ULL, { 0xD2140DF6D84FDBC9ULL, 0x22B420038B49C3F9ULL } }, /* XSUM_XXH128_withSecret_testdata[3959] */ + { 3960, 0x0000000000000000ULL, { 0xF1B421A351DEEB31ULL, 0xBE5D2CCEACD5962FULL } }, /* XSUM_XXH128_withSecret_testdata[3960] */ + { 3961, 0x0000000000000000ULL, { 0xA88741587B91149FULL, 0x8C5CE4A3BE418F10ULL } }, /* XSUM_XXH128_withSecret_testdata[3961] */ + { 3962, 0x0000000000000000ULL, { 0x573F1EBA59887F2DULL, 0x3F81992D44125A14ULL } }, /* XSUM_XXH128_withSecret_testdata[3962] */ + { 3963, 0x0000000000000000ULL, { 0x80673C41C8A6DECBULL, 0x51B23F533D4044CFULL } }, /* XSUM_XXH128_withSecret_testdata[3963] */ + { 3964, 0x0000000000000000ULL, { 0x126388575C84BD3FULL, 0x17187E49661F47F6ULL } }, /* XSUM_XXH128_withSecret_testdata[3964] */ + { 3965, 0x0000000000000000ULL, { 0xFF6FFD276118DD59ULL, 0x6D2FAE3571572DD7ULL } }, /* XSUM_XXH128_withSecret_testdata[3965] */ + { 3966, 0x0000000000000000ULL, { 0xE28FBC0EBC9EC543ULL, 0xB2BAFCE6C288E926ULL } }, /* XSUM_XXH128_withSecret_testdata[3966] */ + { 3967, 0x0000000000000000ULL, { 0x478D04F28282DD16ULL, 0x5C39282A0F7DB9D2ULL } }, /* XSUM_XXH128_withSecret_testdata[3967] */ + { 3968, 0x0000000000000000ULL, { 0x39A88CC5AEB672C6ULL, 0x07206208B75C17A9ULL } }, /* XSUM_XXH128_withSecret_testdata[3968] */ + { 3969, 0x0000000000000000ULL, { 0x753907B13FB656ADULL, 0x5AE6EA8D48402F48ULL } }, /* XSUM_XXH128_withSecret_testdata[3969] */ + { 3970, 0x0000000000000000ULL, { 0x8A86D19768F6F8B2ULL, 0x75BC038A7A2EBEBEULL } }, /* XSUM_XXH128_withSecret_testdata[3970] */ + { 3971, 0x0000000000000000ULL, { 0xEF27D20E3A59A265ULL, 0x4F524247AAB58EBEULL } }, /* XSUM_XXH128_withSecret_testdata[3971] */ + { 3972, 0x0000000000000000ULL, { 0x599785FBACD3F5B2ULL, 0x5ADA489A8B313AF1ULL } }, /* XSUM_XXH128_withSecret_testdata[3972] */ + { 3973, 0x0000000000000000ULL, { 0x5E120D059DF126DFULL, 0x98642E02FEA742F0ULL } }, /* XSUM_XXH128_withSecret_testdata[3973] */ + { 3974, 0x0000000000000000ULL, { 0x323341DA425D5971ULL, 0x4747172D8A36BF68ULL } }, /* XSUM_XXH128_withSecret_testdata[3974] */ + { 3975, 0x0000000000000000ULL, { 0x66E9ED33A0FE926AULL, 0x435D68B4FAEA910BULL } }, /* XSUM_XXH128_withSecret_testdata[3975] */ + { 3976, 0x0000000000000000ULL, { 0xDAEBE9F14941E4B1ULL, 0xE2E439A5C3647C46ULL } }, /* XSUM_XXH128_withSecret_testdata[3976] */ + { 3977, 0x0000000000000000ULL, { 0x69CB9F838670B8DDULL, 0xCC02B5A88F93E2CEULL } }, /* XSUM_XXH128_withSecret_testdata[3977] */ + { 3978, 0x0000000000000000ULL, { 0x1A230CA712BE6276ULL, 0x08A0E933F7050C0DULL } }, /* XSUM_XXH128_withSecret_testdata[3978] */ + { 3979, 0x0000000000000000ULL, { 0x1F1D2458C37728AFULL, 0xE80C969590328560ULL } }, /* XSUM_XXH128_withSecret_testdata[3979] */ + { 3980, 0x0000000000000000ULL, { 0x6F1E017185E5AD9FULL, 0xA92A3E7E85983C40ULL } }, /* XSUM_XXH128_withSecret_testdata[3980] */ + { 3981, 0x0000000000000000ULL, { 0x58DC29264CBBA138ULL, 0x334FEC5A97726F0CULL } }, /* XSUM_XXH128_withSecret_testdata[3981] */ + { 3982, 0x0000000000000000ULL, { 0x69BCCDFF30E140B3ULL, 0x7061632B8C1EDDD8ULL } }, /* XSUM_XXH128_withSecret_testdata[3982] */ + { 3983, 0x0000000000000000ULL, { 0xD4956F25E5E7F77BULL, 0xBF700FA7280E63D1ULL } }, /* XSUM_XXH128_withSecret_testdata[3983] */ + { 3984, 0x0000000000000000ULL, { 0x61516A317A9423E3ULL, 0x1597A46EE419DB22ULL } }, /* XSUM_XXH128_withSecret_testdata[3984] */ + { 3985, 0x0000000000000000ULL, { 0x3CA5AD0A3FDE38FFULL, 0xC95E49FBA1B29636ULL } }, /* XSUM_XXH128_withSecret_testdata[3985] */ + { 3986, 0x0000000000000000ULL, { 0xDC0FE42917D33C1CULL, 0x3A9EA720802D0BBCULL } }, /* XSUM_XXH128_withSecret_testdata[3986] */ + { 3987, 0x0000000000000000ULL, { 0x552B5DD320E034F6ULL, 0xF87AEC6415519757ULL } }, /* XSUM_XXH128_withSecret_testdata[3987] */ + { 3988, 0x0000000000000000ULL, { 0xB4D0495D78EB47F6ULL, 0x38447C2A0C3CE869ULL } }, /* XSUM_XXH128_withSecret_testdata[3988] */ + { 3989, 0x0000000000000000ULL, { 0xD99543CC2F1660B2ULL, 0xA591726990C42058ULL } }, /* XSUM_XXH128_withSecret_testdata[3989] */ + { 3990, 0x0000000000000000ULL, { 0x1D7E294B3E7BF0D5ULL, 0x060D54679B2A6EFFULL } }, /* XSUM_XXH128_withSecret_testdata[3990] */ + { 3991, 0x0000000000000000ULL, { 0x7FC8297D93F7C81FULL, 0xDDD9730DBADB7069ULL } }, /* XSUM_XXH128_withSecret_testdata[3991] */ + { 3992, 0x0000000000000000ULL, { 0xB417170FF1E42E8DULL, 0x501A8BA711DEF3CFULL } }, /* XSUM_XXH128_withSecret_testdata[3992] */ + { 3993, 0x0000000000000000ULL, { 0xFF8DDA8ADF2B6642ULL, 0x5E756960648573E9ULL } }, /* XSUM_XXH128_withSecret_testdata[3993] */ + { 3994, 0x0000000000000000ULL, { 0x08147B80B15B89FCULL, 0x4E202D6CAFA89B6AULL } }, /* XSUM_XXH128_withSecret_testdata[3994] */ + { 3995, 0x0000000000000000ULL, { 0x33ABD4C640F5BDC3ULL, 0x085F4915B2552364ULL } }, /* XSUM_XXH128_withSecret_testdata[3995] */ + { 3996, 0x0000000000000000ULL, { 0x1A11C60C3BA5BEB4ULL, 0x3CC4A494994690EDULL } }, /* XSUM_XXH128_withSecret_testdata[3996] */ + { 3997, 0x0000000000000000ULL, { 0x9B9A5C7F0E7DF4EEULL, 0x3D8CA1A5C196050FULL } }, /* XSUM_XXH128_withSecret_testdata[3997] */ + { 3998, 0x0000000000000000ULL, { 0x9ADE7A91058E6D7DULL, 0x4FFB6234767F5933ULL } }, /* XSUM_XXH128_withSecret_testdata[3998] */ + { 3999, 0x0000000000000000ULL, { 0x57F0B9FB8739989AULL, 0x684D5A8AFA470021ULL } }, /* XSUM_XXH128_withSecret_testdata[3999] */ + { 4000, 0x0000000000000000ULL, { 0xE184CBF1E98AD05EULL, 0x1959DF5132D71E78ULL } }, /* XSUM_XXH128_withSecret_testdata[4000] */ + { 4001, 0x0000000000000000ULL, { 0xE85B45D7683D9CE0ULL, 0xFB0BC59E82FECB5EULL } }, /* XSUM_XXH128_withSecret_testdata[4001] */ + { 4002, 0x0000000000000000ULL, { 0x074A0C2BAB5E950BULL, 0x17426B6D83A5B4ACULL } }, /* XSUM_XXH128_withSecret_testdata[4002] */ + { 4003, 0x0000000000000000ULL, { 0xADABC1ADBC07D3AAULL, 0x9641934035E13C58ULL } }, /* XSUM_XXH128_withSecret_testdata[4003] */ + { 4004, 0x0000000000000000ULL, { 0xFCEC87DD9320E9EAULL, 0x657F2EFD7F927920ULL } }, /* XSUM_XXH128_withSecret_testdata[4004] */ + { 4005, 0x0000000000000000ULL, { 0x48BCD4503CB02471ULL, 0x673C91BF4745855AULL } }, /* XSUM_XXH128_withSecret_testdata[4005] */ + { 4006, 0x0000000000000000ULL, { 0x830D0A44B28510BDULL, 0x4E2D0C42457CFF16ULL } }, /* XSUM_XXH128_withSecret_testdata[4006] */ + { 4007, 0x0000000000000000ULL, { 0xD5F28186C763F8E7ULL, 0xAFCF61AC36EF1440ULL } }, /* XSUM_XXH128_withSecret_testdata[4007] */ + { 4008, 0x0000000000000000ULL, { 0xDF89B3916F9E329CULL, 0xD54C8D72D63044CCULL } }, /* XSUM_XXH128_withSecret_testdata[4008] */ + { 4009, 0x0000000000000000ULL, { 0xA77D92102028B930ULL, 0x494DBEA4BF59450EULL } }, /* XSUM_XXH128_withSecret_testdata[4009] */ + { 4010, 0x0000000000000000ULL, { 0x0907F224A3DB335FULL, 0x3D1CC934515DA795ULL } }, /* XSUM_XXH128_withSecret_testdata[4010] */ + { 4011, 0x0000000000000000ULL, { 0x39257686BB9BD6DBULL, 0x46E238B605D230C9ULL } }, /* XSUM_XXH128_withSecret_testdata[4011] */ + { 4012, 0x0000000000000000ULL, { 0x1908A83C25A09B3EULL, 0x68B7F1654D5F7037ULL } }, /* XSUM_XXH128_withSecret_testdata[4012] */ + { 4013, 0x0000000000000000ULL, { 0x1C228F0313F05621ULL, 0x734E24471179CDACULL } }, /* XSUM_XXH128_withSecret_testdata[4013] */ + { 4014, 0x0000000000000000ULL, { 0xD29D4BB6C83B212FULL, 0x96841446536D6975ULL } }, /* XSUM_XXH128_withSecret_testdata[4014] */ + { 4015, 0x0000000000000000ULL, { 0xA4EF22E7990EFCDCULL, 0x972CFAD449C29BB6ULL } }, /* XSUM_XXH128_withSecret_testdata[4015] */ + { 4016, 0x0000000000000000ULL, { 0x10DC31A45CECDF06ULL, 0x684FC5CA9F8842E1ULL } }, /* XSUM_XXH128_withSecret_testdata[4016] */ + { 4017, 0x0000000000000000ULL, { 0xF8EC25F1FB6A58B9ULL, 0xBBE85249F2A0B784ULL } }, /* XSUM_XXH128_withSecret_testdata[4017] */ + { 4018, 0x0000000000000000ULL, { 0xF7DA74361E4E6608ULL, 0x636C8CFCA417C964ULL } }, /* XSUM_XXH128_withSecret_testdata[4018] */ + { 4019, 0x0000000000000000ULL, { 0xE0D78070D8474ECDULL, 0x7BCDCF6EEE8FCF9FULL } }, /* XSUM_XXH128_withSecret_testdata[4019] */ + { 4020, 0x0000000000000000ULL, { 0xD006A9834E2719CEULL, 0x28801A32698C9094ULL } }, /* XSUM_XXH128_withSecret_testdata[4020] */ + { 4021, 0x0000000000000000ULL, { 0x4B4D94054CEA6E1FULL, 0x9759B4B051895040ULL } }, /* XSUM_XXH128_withSecret_testdata[4021] */ + { 4022, 0x0000000000000000ULL, { 0x765FBFBA601A57BDULL, 0xFCB4B67F533DA921ULL } }, /* XSUM_XXH128_withSecret_testdata[4022] */ + { 4023, 0x0000000000000000ULL, { 0xFBB6F86EFDEBC52DULL, 0xC32CA75E16E74917ULL } }, /* XSUM_XXH128_withSecret_testdata[4023] */ + { 4024, 0x0000000000000000ULL, { 0x82166375EA042B26ULL, 0x8E34A6E01B9ED87DULL } }, /* XSUM_XXH128_withSecret_testdata[4024] */ + { 4025, 0x0000000000000000ULL, { 0xEF3FEB717072EE91ULL, 0x943452B19373728DULL } }, /* XSUM_XXH128_withSecret_testdata[4025] */ + { 4026, 0x0000000000000000ULL, { 0x2DD6C3FBE072545BULL, 0x614272B5B488D282ULL } }, /* XSUM_XXH128_withSecret_testdata[4026] */ + { 4027, 0x0000000000000000ULL, { 0x6A2FDD401C94D1EBULL, 0x241CB870D7ED1A22ULL } }, /* XSUM_XXH128_withSecret_testdata[4027] */ + { 4028, 0x0000000000000000ULL, { 0x18136EE230F0BE7DULL, 0xDB850B8BA651F61AULL } }, /* XSUM_XXH128_withSecret_testdata[4028] */ + { 4029, 0x0000000000000000ULL, { 0x69A9A1CF3A907C8FULL, 0x87677D9F3C04C059ULL } }, /* XSUM_XXH128_withSecret_testdata[4029] */ + { 4030, 0x0000000000000000ULL, { 0x74C1650BE5290626ULL, 0xF8430FF196A894AAULL } }, /* XSUM_XXH128_withSecret_testdata[4030] */ + { 4031, 0x0000000000000000ULL, { 0x3C4D733B3DC00870ULL, 0xA04D1972F78805A6ULL } }, /* XSUM_XXH128_withSecret_testdata[4031] */ + { 4032, 0x0000000000000000ULL, { 0x695ACEBA82CCE59CULL, 0xE080B3BA32F81009ULL } }, /* XSUM_XXH128_withSecret_testdata[4032] */ + { 4033, 0x0000000000000000ULL, { 0x19533A9067D621E1ULL, 0x96FC5165E3AC069DULL } }, /* XSUM_XXH128_withSecret_testdata[4033] */ + { 4034, 0x0000000000000000ULL, { 0x7E43CBAE4E42C1FBULL, 0x22CDDCDF36B9CE36ULL } }, /* XSUM_XXH128_withSecret_testdata[4034] */ + { 4035, 0x0000000000000000ULL, { 0xA0A7A7857C8B5B01ULL, 0x7428DFDD0618A9A5ULL } }, /* XSUM_XXH128_withSecret_testdata[4035] */ + { 4036, 0x0000000000000000ULL, { 0x92F3BA8EE6DF084BULL, 0x427CE15623FB1444ULL } }, /* XSUM_XXH128_withSecret_testdata[4036] */ + { 4037, 0x0000000000000000ULL, { 0xAA7D2A090985E856ULL, 0x0217C99FECD610DCULL } }, /* XSUM_XXH128_withSecret_testdata[4037] */ + { 4038, 0x0000000000000000ULL, { 0xCE5E19CA0ACE70AAULL, 0xE1C425A76DAFF1C0ULL } }, /* XSUM_XXH128_withSecret_testdata[4038] */ + { 4039, 0x0000000000000000ULL, { 0x6A0DB81389E7EB64ULL, 0xE22E7399AF1FCE7AULL } }, /* XSUM_XXH128_withSecret_testdata[4039] */ + { 4040, 0x0000000000000000ULL, { 0x1C428423E92CB936ULL, 0x6CF950F0DA32CDCCULL } }, /* XSUM_XXH128_withSecret_testdata[4040] */ + { 4041, 0x0000000000000000ULL, { 0x2E94046589D1E6FDULL, 0x9DDAFBEEA5731B4DULL } }, /* XSUM_XXH128_withSecret_testdata[4041] */ + { 4042, 0x0000000000000000ULL, { 0x593811EB10E67DE3ULL, 0x7F552F3BEF17DCE7ULL } }, /* XSUM_XXH128_withSecret_testdata[4042] */ + { 4043, 0x0000000000000000ULL, { 0xB2D714E38B1E1C8EULL, 0x37DFB27ACB7ACB92ULL } }, /* XSUM_XXH128_withSecret_testdata[4043] */ + { 4044, 0x0000000000000000ULL, { 0x9DD048F3866DAC6FULL, 0x9822C44A60CA8074ULL } }, /* XSUM_XXH128_withSecret_testdata[4044] */ + { 4045, 0x0000000000000000ULL, { 0x320CD8D172089096ULL, 0x06D8DFEE844051C1ULL } }, /* XSUM_XXH128_withSecret_testdata[4045] */ + { 4046, 0x0000000000000000ULL, { 0x2A29BF44AF69A300ULL, 0x9D1F570D43ECC8C0ULL } }, /* XSUM_XXH128_withSecret_testdata[4046] */ + { 4047, 0x0000000000000000ULL, { 0xC3D96538AD370D5EULL, 0x1BAC405B92475865ULL } }, /* XSUM_XXH128_withSecret_testdata[4047] */ + { 4048, 0x0000000000000000ULL, { 0xE659FE2A37FDB433ULL, 0xEBC9FC24A62759DCULL } }, /* XSUM_XXH128_withSecret_testdata[4048] */ + { 4049, 0x0000000000000000ULL, { 0xD66D84E01673DF06ULL, 0x9BAA6B7FAD2D95B3ULL } }, /* XSUM_XXH128_withSecret_testdata[4049] */ + { 4050, 0x0000000000000000ULL, { 0xCFC21220DEA96813ULL, 0x93DEB30E0F38083EULL } }, /* XSUM_XXH128_withSecret_testdata[4050] */ + { 4051, 0x0000000000000000ULL, { 0x2EC201721E40001FULL, 0x43147DFA73D7EB5EULL } }, /* XSUM_XXH128_withSecret_testdata[4051] */ + { 4052, 0x0000000000000000ULL, { 0xE5255D2DC8B240B6ULL, 0x8E5B16BEEC1E6EEDULL } }, /* XSUM_XXH128_withSecret_testdata[4052] */ + { 4053, 0x0000000000000000ULL, { 0x4444D1FC699709E0ULL, 0x934AAFD8D4B30D62ULL } }, /* XSUM_XXH128_withSecret_testdata[4053] */ + { 4054, 0x0000000000000000ULL, { 0xCD5F6DB7C0C22D88ULL, 0x487AE90F9367DB52ULL } }, /* XSUM_XXH128_withSecret_testdata[4054] */ + { 4055, 0x0000000000000000ULL, { 0x97C72BF132FC429AULL, 0x099D053F17DFFF7DULL } }, /* XSUM_XXH128_withSecret_testdata[4055] */ + { 4056, 0x0000000000000000ULL, { 0xF18A47875C8FDC63ULL, 0x9BDAE52091C0F8FAULL } }, /* XSUM_XXH128_withSecret_testdata[4056] */ + { 4057, 0x0000000000000000ULL, { 0x11A76F8B731BE563ULL, 0xE5E3DF6B77868D36ULL } }, /* XSUM_XXH128_withSecret_testdata[4057] */ + { 4058, 0x0000000000000000ULL, { 0xDA3D9AC8AC1BC359ULL, 0x5BA5E3333B81D08AULL } }, /* XSUM_XXH128_withSecret_testdata[4058] */ + { 4059, 0x0000000000000000ULL, { 0xD050D2E1C6187F83ULL, 0x1E9D2521894C332CULL } }, /* XSUM_XXH128_withSecret_testdata[4059] */ + { 4060, 0x0000000000000000ULL, { 0xA2B9C98FF937B9F2ULL, 0x10D057C3B3B4F6EDULL } }, /* XSUM_XXH128_withSecret_testdata[4060] */ + { 4061, 0x0000000000000000ULL, { 0xE824E15F45FCE2DFULL, 0x798D5F42D1CA5CFDULL } }, /* XSUM_XXH128_withSecret_testdata[4061] */ + { 4062, 0x0000000000000000ULL, { 0xF46BF3281D9C12CBULL, 0xC67862386A6A8D3DULL } }, /* XSUM_XXH128_withSecret_testdata[4062] */ + { 4063, 0x0000000000000000ULL, { 0xBA926F8C9CACD028ULL, 0x2C928BA95F7D0DFFULL } }, /* XSUM_XXH128_withSecret_testdata[4063] */ + { 4064, 0x0000000000000000ULL, { 0x974C54681B33886CULL, 0x55AAD4C7FF471799ULL } }, /* XSUM_XXH128_withSecret_testdata[4064] */ + { 4065, 0x0000000000000000ULL, { 0x2A95F80B0C3CCCB1ULL, 0x2CEAD3749FD0F246ULL } }, /* XSUM_XXH128_withSecret_testdata[4065] */ + { 4066, 0x0000000000000000ULL, { 0x43B843C1A74C8DFAULL, 0xC04DBD28EB00DD98ULL } }, /* XSUM_XXH128_withSecret_testdata[4066] */ + { 4067, 0x0000000000000000ULL, { 0x32534850ECCF80FEULL, 0xE5AA5C08CCD16D7EULL } }, /* XSUM_XXH128_withSecret_testdata[4067] */ + { 4068, 0x0000000000000000ULL, { 0xAD4E9636F7F31E69ULL, 0x5A050DA3E194ED87ULL } }, /* XSUM_XXH128_withSecret_testdata[4068] */ + { 4069, 0x0000000000000000ULL, { 0xCD00CB1BE568FDE6ULL, 0x098C9295860294B6ULL } }, /* XSUM_XXH128_withSecret_testdata[4069] */ + { 4070, 0x0000000000000000ULL, { 0xE46940245DBB7272ULL, 0xAC9A5592C61031B8ULL } }, /* XSUM_XXH128_withSecret_testdata[4070] */ + { 4071, 0x0000000000000000ULL, { 0x13D146F7570C6044ULL, 0x57A637789734E5ADULL } }, /* XSUM_XXH128_withSecret_testdata[4071] */ + { 4072, 0x0000000000000000ULL, { 0x7A956B6CB3576E14ULL, 0x99FFEFDF0E95F01EULL } }, /* XSUM_XXH128_withSecret_testdata[4072] */ + { 4073, 0x0000000000000000ULL, { 0xEC83FCBD3ACF3B26ULL, 0xEBB54B2676004C64ULL } }, /* XSUM_XXH128_withSecret_testdata[4073] */ + { 4074, 0x0000000000000000ULL, { 0x16AC17FD7088386EULL, 0x7488543EEBB7213CULL } }, /* XSUM_XXH128_withSecret_testdata[4074] */ + { 4075, 0x0000000000000000ULL, { 0x83F54BB36686D6D9ULL, 0xE3099F7F49370BA9ULL } }, /* XSUM_XXH128_withSecret_testdata[4075] */ + { 4076, 0x0000000000000000ULL, { 0xBE63E230272CA46AULL, 0xB108D4959E79E962ULL } }, /* XSUM_XXH128_withSecret_testdata[4076] */ + { 4077, 0x0000000000000000ULL, { 0x28E6AEE6ACB9630BULL, 0xBDCA3FBB860CE081ULL } }, /* XSUM_XXH128_withSecret_testdata[4077] */ + { 4078, 0x0000000000000000ULL, { 0x1F9D0601A901C88BULL, 0x02D5894FF3822061ULL } }, /* XSUM_XXH128_withSecret_testdata[4078] */ + { 4079, 0x0000000000000000ULL, { 0xAE20E4E718E23A10ULL, 0x7EB7EE6F5C60C2C8ULL } }, /* XSUM_XXH128_withSecret_testdata[4079] */ + { 4080, 0x0000000000000000ULL, { 0xB25FC769707558F5ULL, 0x5F7D3E9E5F3FD840ULL } }, /* XSUM_XXH128_withSecret_testdata[4080] */ + { 4081, 0x0000000000000000ULL, { 0x1A21C8D19774A134ULL, 0xB756A943B6F7EA2BULL } }, /* XSUM_XXH128_withSecret_testdata[4081] */ + { 4082, 0x0000000000000000ULL, { 0xED0038B9B1E99BCEULL, 0x3F6A0053DA3469A9ULL } }, /* XSUM_XXH128_withSecret_testdata[4082] */ + { 4083, 0x0000000000000000ULL, { 0x277C62825BFD4071ULL, 0x55122CAF71F56270ULL } }, /* XSUM_XXH128_withSecret_testdata[4083] */ + { 4084, 0x0000000000000000ULL, { 0x02F57766E9409B19ULL, 0x5ACF287B3FBC0EF6ULL } }, /* XSUM_XXH128_withSecret_testdata[4084] */ + { 4085, 0x0000000000000000ULL, { 0xD7C6EF5A72071921ULL, 0x1737DD9BE60AC094ULL } }, /* XSUM_XXH128_withSecret_testdata[4085] */ + { 4086, 0x0000000000000000ULL, { 0x83615114B601772EULL, 0x086B56B711B85704ULL } }, /* XSUM_XXH128_withSecret_testdata[4086] */ + { 4087, 0x0000000000000000ULL, { 0x625139954D12967FULL, 0x616482F68B2BB50AULL } }, /* XSUM_XXH128_withSecret_testdata[4087] */ + { 4088, 0x0000000000000000ULL, { 0x20260B56D71BD17AULL, 0x74033B140E03CA4EULL } }, /* XSUM_XXH128_withSecret_testdata[4088] */ + { 4089, 0x0000000000000000ULL, { 0x3ED7823D39AA50A9ULL, 0x5D5D184CD3691B3FULL } }, /* XSUM_XXH128_withSecret_testdata[4089] */ + { 4090, 0x0000000000000000ULL, { 0xDEEB68EC8D3B620DULL, 0x89EEED3BDEF19437ULL } }, /* XSUM_XXH128_withSecret_testdata[4090] */ + { 4091, 0x0000000000000000ULL, { 0xC043260D09205B7DULL, 0x4157760BE6AFBD61ULL } }, /* XSUM_XXH128_withSecret_testdata[4091] */ + { 4092, 0x0000000000000000ULL, { 0xAC6A09090419D299ULL, 0x559E6291899C2B55ULL } }, /* XSUM_XXH128_withSecret_testdata[4092] */ + { 4093, 0x0000000000000000ULL, { 0xC338BC98DE2FD265ULL, 0xB8C655D4E555AF81ULL } }, /* XSUM_XXH128_withSecret_testdata[4093] */ + { 4094, 0x0000000000000000ULL, { 0x552205B28FB1448FULL, 0xA70ACD274E12F7E9ULL } }, /* XSUM_XXH128_withSecret_testdata[4094] */ + { 4095, 0x0000000000000000ULL, { 0xC2D888327F91A534ULL, 0x42FE4D688287BEE7ULL } }, /* XSUM_XXH128_withSecret_testdata[4095] */ + { 4096, 0x0000000000000000ULL, { 0x80C043073074A679ULL, 0x7771BE334FA36A7AULL } }, /* XSUM_XXH128_withSecret_testdata[4096] */ + { 4097, 0x0000000000000000ULL, { 0x365C254DC189E688ULL, 0xBE5955C3BE450149ULL } }, /* XSUM_XXH128_withSecret_testdata[4097] */ + { 4098, 0x0000000000000000ULL, { 0x6E28FBB5DC82753AULL, 0x4344005D3877DF73ULL } }, /* XSUM_XXH128_withSecret_testdata[4098] */ + { 4099, 0x0000000000000000ULL, { 0x1647C7E776D79A08ULL, 0x8D691A1C95F0FF5DULL } }, /* XSUM_XXH128_withSecret_testdata[4099] */ + { 4100, 0x0000000000000000ULL, { 0x75C6ED860F1F0A29ULL, 0x648E8CA4C5A4C982ULL } }, /* XSUM_XXH128_withSecret_testdata[4100] */ + { 4101, 0x0000000000000000ULL, { 0x9E4E03BED42CA656ULL, 0x799A7D1B0E29CE2EULL } }, /* XSUM_XXH128_withSecret_testdata[4101] */ + { 4102, 0x0000000000000000ULL, { 0xAA5368B6B20CA18AULL, 0xDB900926C19976E9ULL } }, /* XSUM_XXH128_withSecret_testdata[4102] */ + { 4103, 0x0000000000000000ULL, { 0xE98606A8E305E53BULL, 0x46A1D7C2EA756513ULL } }, /* XSUM_XXH128_withSecret_testdata[4103] */ + { 4104, 0x0000000000000000ULL, { 0x227F43A44EABCF0BULL, 0x13A20E6CE320F034ULL } }, /* XSUM_XXH128_withSecret_testdata[4104] */ + { 4105, 0x0000000000000000ULL, { 0x045E5F690BAE4E7BULL, 0x47B1AE340E6C6B84ULL } }, /* XSUM_XXH128_withSecret_testdata[4105] */ + { 4106, 0x0000000000000000ULL, { 0x0A17834E8D0D9A22ULL, 0x95C5B6E739ED6469ULL } }, /* XSUM_XXH128_withSecret_testdata[4106] */ + { 4107, 0x0000000000000000ULL, { 0x3637F62A915BEA14ULL, 0x3076274B81E59217ULL } }, /* XSUM_XXH128_withSecret_testdata[4107] */ + { 4108, 0x0000000000000000ULL, { 0xCE88302E57251D0CULL, 0xDB37EFCB58E8F954ULL } }, /* XSUM_XXH128_withSecret_testdata[4108] */ + { 4109, 0x0000000000000000ULL, { 0xE4BE4F80013DBAE0ULL, 0x2492D7F0190568A5ULL } }, /* XSUM_XXH128_withSecret_testdata[4109] */ + { 4110, 0x0000000000000000ULL, { 0x6F1CF2ACD36F6174ULL, 0xE1D6CE3A7BB57063ULL } }, /* XSUM_XXH128_withSecret_testdata[4110] */ + { 4111, 0x0000000000000000ULL, { 0x187CFF657B38CAEEULL, 0xC080B622D6DF3178ULL } }, /* XSUM_XXH128_withSecret_testdata[4111] */ + { 4112, 0x0000000000000000ULL, { 0xB7875A044BFBAF6FULL, 0x5BF1B073EA8A51BDULL } }, /* XSUM_XXH128_withSecret_testdata[4112] */ + { 4113, 0x0000000000000000ULL, { 0xAE64B4E0AA6D9082ULL, 0x86A01BB50F74A258ULL } }, /* XSUM_XXH128_withSecret_testdata[4113] */ + { 4114, 0x0000000000000000ULL, { 0xB9AC502202937977ULL, 0x062A1079EFF5DCCEULL } }, /* XSUM_XXH128_withSecret_testdata[4114] */ + { 4115, 0x0000000000000000ULL, { 0x1E32D6F34229408EULL, 0x2D1290991F8A099DULL } }, /* XSUM_XXH128_withSecret_testdata[4115] */ + { 4116, 0x0000000000000000ULL, { 0x96C8D36AFC955CF6ULL, 0x5DE889D38177B104ULL } }, /* XSUM_XXH128_withSecret_testdata[4116] */ + { 4117, 0x0000000000000000ULL, { 0x8087ABF9BDAD6C57ULL, 0xF264FE7C870CDA72ULL } }, /* XSUM_XXH128_withSecret_testdata[4117] */ + { 4118, 0x0000000000000000ULL, { 0xDB5EDE0ED22BF4BFULL, 0x566BFA1945E09134ULL } }, /* XSUM_XXH128_withSecret_testdata[4118] */ + { 4119, 0x0000000000000000ULL, { 0xCC01A835D3DE330DULL, 0x34FF37EF9A700AEDULL } }, /* XSUM_XXH128_withSecret_testdata[4119] */ + { 4120, 0x0000000000000000ULL, { 0x25A2490F71CC7B71ULL, 0x94936CAC172100D1ULL } }, /* XSUM_XXH128_withSecret_testdata[4120] */ + { 4121, 0x0000000000000000ULL, { 0xEDF7047605F28040ULL, 0x39DB92F177A51241ULL } }, /* XSUM_XXH128_withSecret_testdata[4121] */ + { 4122, 0x0000000000000000ULL, { 0x18AC9AC377A0EFC3ULL, 0x7B84A80EED6EA567ULL } }, /* XSUM_XXH128_withSecret_testdata[4122] */ + { 4123, 0x0000000000000000ULL, { 0xBC2DF7ABA89807A3ULL, 0xC05B5E503458384BULL } }, /* XSUM_XXH128_withSecret_testdata[4123] */ + { 4124, 0x0000000000000000ULL, { 0x0E9843295ABA9534ULL, 0x0126253BC8650C2AULL } }, /* XSUM_XXH128_withSecret_testdata[4124] */ + { 4125, 0x0000000000000000ULL, { 0xF63369AFF35C62A8ULL, 0x6EFF666C66D4902CULL } }, /* XSUM_XXH128_withSecret_testdata[4125] */ + { 4126, 0x0000000000000000ULL, { 0x144948966B9E5FB3ULL, 0x16BAC5A7B452B3B1ULL } }, /* XSUM_XXH128_withSecret_testdata[4126] */ + { 4127, 0x0000000000000000ULL, { 0xFC3E5F7090065C0BULL, 0xB6E83C07AA1940C5ULL } }, /* XSUM_XXH128_withSecret_testdata[4127] */ + { 4128, 0x0000000000000000ULL, { 0x8764A90EAD5AAA4BULL, 0x385E729CC5406A29ULL } }, /* XSUM_XXH128_withSecret_testdata[4128] */ + { 4129, 0x0000000000000000ULL, { 0x49037C823D75F316ULL, 0xF0B96516CFB4A392ULL } }, /* XSUM_XXH128_withSecret_testdata[4129] */ + { 4130, 0x0000000000000000ULL, { 0xB7B87312F9AA9E2FULL, 0x572C4337DC1CE906ULL } }, /* XSUM_XXH128_withSecret_testdata[4130] */ + { 4131, 0x0000000000000000ULL, { 0x5A0216171E94CA70ULL, 0xE798DDE614C3F793ULL } }, /* XSUM_XXH128_withSecret_testdata[4131] */ + { 4132, 0x0000000000000000ULL, { 0x71B88242877B00CFULL, 0xADBFCD550820792DULL } }, /* XSUM_XXH128_withSecret_testdata[4132] */ + { 4133, 0x0000000000000000ULL, { 0x933452561A285618ULL, 0xC2A6C2CAF4551D51ULL } }, /* XSUM_XXH128_withSecret_testdata[4133] */ + { 4134, 0x0000000000000000ULL, { 0xADC07705C8ECACF8ULL, 0x9D5D54B4D08B7731ULL } }, /* XSUM_XXH128_withSecret_testdata[4134] */ + { 4135, 0x0000000000000000ULL, { 0xDFE8C72B4BB06B17ULL, 0x0AAC1A0D21A72517ULL } }, /* XSUM_XXH128_withSecret_testdata[4135] */ + { 4136, 0x0000000000000000ULL, { 0xB494370C708119B7ULL, 0x599130263076477FULL } }, /* XSUM_XXH128_withSecret_testdata[4136] */ + { 4137, 0x0000000000000000ULL, { 0x2521A15362F39765ULL, 0x150C8D700528AF2BULL } }, /* XSUM_XXH128_withSecret_testdata[4137] */ + { 4138, 0x0000000000000000ULL, { 0xDA6491BE0377B78AULL, 0xF1E131DE076A0B98ULL } }, /* XSUM_XXH128_withSecret_testdata[4138] */ + { 4139, 0x0000000000000000ULL, { 0xDDE3551DA0B0B16FULL, 0x2FD913711405D1E7ULL } }, /* XSUM_XXH128_withSecret_testdata[4139] */ + { 4140, 0x0000000000000000ULL, { 0x66EEEBDF6FBE67B5ULL, 0x74ECDB5E8A8B8551ULL } }, /* XSUM_XXH128_withSecret_testdata[4140] */ + { 4141, 0x0000000000000000ULL, { 0xF69061DEB5B18F0DULL, 0x819C71D94B78CE12ULL } }, /* XSUM_XXH128_withSecret_testdata[4141] */ + { 4142, 0x0000000000000000ULL, { 0xEC0E8775C7613779ULL, 0xC6F7683CE6E45968ULL } }, /* XSUM_XXH128_withSecret_testdata[4142] */ + { 4143, 0x0000000000000000ULL, { 0x1F46C226E82FC9A4ULL, 0xBD1168FE1E2DCBA6ULL } }, /* XSUM_XXH128_withSecret_testdata[4143] */ + { 4144, 0x0000000000000000ULL, { 0x11370EF7CCBDF4C2ULL, 0x877EA117994C23FCULL } }, /* XSUM_XXH128_withSecret_testdata[4144] */ + { 4145, 0x0000000000000000ULL, { 0x7CC7E7A1BE2D8411ULL, 0x133106DE74DEDD33ULL } }, /* XSUM_XXH128_withSecret_testdata[4145] */ + { 4146, 0x0000000000000000ULL, { 0xBA101C10F3ED8F3BULL, 0x792AD14B23DB7697ULL } }, /* XSUM_XXH128_withSecret_testdata[4146] */ + { 4147, 0x0000000000000000ULL, { 0x9927A22BB5DEF0F1ULL, 0xACF28CC3E03C7ADDULL } }, /* XSUM_XXH128_withSecret_testdata[4147] */ + { 4148, 0x0000000000000000ULL, { 0x77B2C7E8C3F7816DULL, 0xEDAF28317C84978EULL } }, /* XSUM_XXH128_withSecret_testdata[4148] */ + { 4149, 0x0000000000000000ULL, { 0x04ED012D897B2195ULL, 0xB04500057580A6C4ULL } }, /* XSUM_XXH128_withSecret_testdata[4149] */ + { 4150, 0x0000000000000000ULL, { 0x6815B6C81F5C6E09ULL, 0x652D2977F58539ACULL } }, /* XSUM_XXH128_withSecret_testdata[4150] */ + { 4151, 0x0000000000000000ULL, { 0xB7C436CAA4DAE17CULL, 0x11F331CC0862D858ULL } }, /* XSUM_XXH128_withSecret_testdata[4151] */ + { 4152, 0x0000000000000000ULL, { 0x86D16BB9CECD85DEULL, 0xAB821D038072FF43ULL } }, /* XSUM_XXH128_withSecret_testdata[4152] */ + { 4153, 0x0000000000000000ULL, { 0x4C0AF3A16D2D68D9ULL, 0xFDACD982A8D9A62EULL } }, /* XSUM_XXH128_withSecret_testdata[4153] */ + { 4154, 0x0000000000000000ULL, { 0x93C1EDFD5C9BE932ULL, 0x9012B0943C72AB18ULL } }, /* XSUM_XXH128_withSecret_testdata[4154] */ + { 4155, 0x0000000000000000ULL, { 0xB6E82601450A902AULL, 0xCE1CC90D235348BFULL } }, /* XSUM_XXH128_withSecret_testdata[4155] */ + { 4156, 0x0000000000000000ULL, { 0x1A27D4B001A828A1ULL, 0x0AC976A30253837DULL } }, /* XSUM_XXH128_withSecret_testdata[4156] */ + { 4157, 0x0000000000000000ULL, { 0xC234BC46C88914E8ULL, 0x5B0FFA037F1537A5ULL } }, /* XSUM_XXH128_withSecret_testdata[4157] */ + { 4158, 0x0000000000000000ULL, { 0x6DEB5E1719BA9E57ULL, 0x6B9A380B2C10B003ULL } }, /* XSUM_XXH128_withSecret_testdata[4158] */ + { 4159, 0x0000000000000000ULL, { 0xB12AB27B68460462ULL, 0x262239CEF1E9E0DFULL } }, /* XSUM_XXH128_withSecret_testdata[4159] */ + { 4160, 0x0000000000000000ULL, { 0x7CD56BF8CB910475ULL, 0x06CD51765E2D12B6ULL } }, /* XSUM_XXH128_withSecret_testdata[4160] */ +}; +static const XSUM_testdata_sample_t XSUM_XXH3_generateSecret_testdata[] = { + { 0, 192, { 0xE7, 0x8C, 0x77, 0x77, 0x00 } }, /* XSUM_XXH3_generateSecret_testdata[0] */ + { 0, 240, { 0xE7, 0x8C, 0x77, 0xAA, 0x00 } }, /* XSUM_XXH3_generateSecret_testdata[1] */ + { 0, 277, { 0xE7, 0x8C, 0x77, 0xAA, 0xED } }, /* XSUM_XXH3_generateSecret_testdata[2] */ + { 0, 9867, { 0xE7, 0x8C, 0x77, 0xAA, 0xED } }, /* XSUM_XXH3_generateSecret_testdata[3] */ + { 1, 192, { 0x2B, 0x3E, 0xDE, 0x67, 0x00 } }, /* XSUM_XXH3_generateSecret_testdata[4] */ + { 1, 240, { 0x2B, 0x3E, 0xDE, 0xC1, 0x00 } }, /* XSUM_XXH3_generateSecret_testdata[5] */ + { 1, 277, { 0x2B, 0x3E, 0xDE, 0xC1, 0xCC } }, /* XSUM_XXH3_generateSecret_testdata[6] */ + { 1, 9867, { 0x2B, 0x3E, 0xDE, 0xC1, 0xCC } }, /* XSUM_XXH3_generateSecret_testdata[7] */ + { 135, 192, { 0xE8, 0x39, 0x6C, 0x16, 0x00 } }, /* XSUM_XXH3_generateSecret_testdata[8] */ + { 135, 240, { 0xE8, 0x39, 0x6C, 0xCC, 0x00 } }, /* XSUM_XXH3_generateSecret_testdata[9] */ + { 135, 277, { 0xE8, 0x39, 0x6C, 0xCC, 0x7B } }, /* XSUM_XXH3_generateSecret_testdata[10] */ + { 135, 9867, { 0xE8, 0x39, 0x6C, 0xCC, 0x7B } }, /* XSUM_XXH3_generateSecret_testdata[11] */ + { 692, 192, { 0xD6, 0x1C, 0x41, 0x69, 0x00 } }, /* XSUM_XXH3_generateSecret_testdata[12] */ + { 692, 240, { 0xD6, 0x1C, 0x41, 0x17, 0x00 } }, /* XSUM_XXH3_generateSecret_testdata[13] */ + { 692, 277, { 0xD6, 0x1C, 0x41, 0x17, 0xB3 } }, /* XSUM_XXH3_generateSecret_testdata[14] */ + { 692, 9867, { 0xD6, 0x1C, 0x41, 0x17, 0xB3 } }, /* XSUM_XXH3_generateSecret_testdata[15] */ +}; diff --git a/deps/xxHash/tests/sanity_test_vectors_generator.c b/deps/xxHash/tests/sanity_test_vectors_generator.c new file mode 100644 index 000000000..f91046230 --- /dev/null +++ b/deps/xxHash/tests/sanity_test_vectors_generator.c @@ -0,0 +1,464 @@ +// xxHash/tests/sanity_test_vectors_generator.c +// SPDX-License-Identifier: GPL-2.0-only +// +// So far, this program just generates sanity_test_vectors.h +// +// Building +// ======== +// +// cc sanity_test_vectors_generator.c && ./a.out +// less sanity_test_vectors.h +// +#define XXH_STATIC_LINKING_ONLY +#define XXH_IMPLEMENTATION /* access definitions */ +#include "../cli/xsum_arch.h" +#include "../cli/xsum_os_specific.h" +#include "../xxhash.h" + +#include /* assert */ + +/* use #define to make them constant, required for initialization */ +#define PRIME32 2654435761U +#define PRIME64 11400714785074694797ULL + +#define SANITY_BUFFER_SIZE (4096 + 64 + 1) + + +/* TODO : Share these test vector definitions with sanity_check.c and xsum_sanity_check.c */ +/* + * Test data vectors + */ +typedef struct { + XSUM_U32 len; + XSUM_U32 seed; + XSUM_U32 Nresult; +} XSUM_testdata32_t; + +typedef struct { + XSUM_U32 len; + XSUM_U64 seed; + XSUM_U64 Nresult; +} XSUM_testdata64_t; + +typedef struct { + XSUM_U32 len; + XSUM_U64 seed; + XXH128_hash_t Nresult; +} XSUM_testdata128_t; + +#define SECRET_SAMPLE_NBBYTES 5 +typedef struct { + XSUM_U32 seedLen; + XSUM_U32 secretLen; + XSUM_U8 byte[SECRET_SAMPLE_NBBYTES]; +} XSUM_testdata_sample_t; + +#ifndef SECRET_SIZE_MAX +# define SECRET_SIZE_MAX 9867 +#endif + + +/* TODO : Share these generators with sanity_check.c and xsum_sanity_check.c */ +/* Test vector generators */ +static XSUM_testdata32_t tvgen_XXH32(const XSUM_U8* buf, size_t len, XSUM_U32 seed) { + XSUM_testdata32_t v; + v.len = len; + v.seed = seed; + v.Nresult = XXH32(buf, len, seed); + return v; +} + +static XSUM_testdata64_t tvgen_XXH64(const XSUM_U8* buf, size_t len, XSUM_U64 seed) { + XSUM_testdata64_t v; + v.len = len; + v.seed = seed; + v.Nresult = XXH64(buf, len, seed); + return v; +} + +static XSUM_testdata64_t tvgen_XXH3_64bits_withSeed(const XSUM_U8* buf, size_t len, XSUM_U64 seed) { + XSUM_testdata64_t v; + v.len = len; + v.seed = seed; + v.Nresult = XXH3_64bits_withSeed(buf, len, seed); + return v; +} + +static XSUM_testdata64_t tvgen_XXH3_64bits_withSecret(const XSUM_U8* buf, size_t len, const void* secret, size_t secretSize) { + XSUM_testdata64_t v; + v.len = len; + v.seed = 0; + v.Nresult = XXH3_64bits_withSecret(buf, len, secret, secretSize); + return v; +} + +static XSUM_testdata128_t tvgen_XXH3_128bits_withSeed(const XSUM_U8* buf, size_t len, XSUM_U64 seed) { + XSUM_testdata128_t v; + v.len = len; + v.seed = seed; + v.Nresult = XXH3_128bits_withSeed(buf, len, seed); + return v; +} + +static XSUM_testdata128_t tvgen_XXH3_128bits_withSecret(const XSUM_U8* buf, size_t len, const void* secret, size_t secretSize) { + XSUM_testdata128_t v; + v.len = len; + v.seed = 0; + v.Nresult = XXH3_128bits_withSecret(buf, len, secret, secretSize); + return v; +} + +static XSUM_testdata_sample_t tvgen_XXH3_generateSecret( + void* secretBuffer, + size_t secretSize, + const void* customSeed, + size_t customSeedSize +) { + XXH3_generateSecret(secretBuffer, secretSize, customSeed, customSeedSize); + + XSUM_testdata_sample_t v; + v.seedLen = customSeedSize; + v.secretLen = secretSize; + + /* TODO : Share this array with sanity_check.c and xsum_sanity_check.c */ + /* position of sampled bytes */ + static const int sampleIndex[SECRET_SAMPLE_NBBYTES] = { 0, 62, 131, 191, 241 }; + + for(int i = 0; i < SECRET_SAMPLE_NBBYTES; ++i) { + const XSUM_U8* const secretBufferAsU8 = (const XSUM_U8*) secretBuffer; + v.byte[i] = secretBufferAsU8[sampleIndex[i]]; + } + return v; +} + + +/* Test vector serializers */ +static void fprintf_XSUM_testdata32_t(FILE* fp, XSUM_testdata32_t const v) { + fprintf(fp, "{ %4d, 0x%08XU, 0x%08XU },", v.len, v.seed, v.Nresult); +} + +static void fprintf_XSUM_testdata64_t(FILE* fp, XSUM_testdata64_t const v) { + fprintf(fp, "{ %4d, 0x%016llXULL, 0x%016llXULL },", v.len, v.seed, v.Nresult); +} + +static void fprintf_XSUM_testdata128_t(FILE* fp, XSUM_testdata128_t const v) { + fprintf(fp, "{ %4d, 0x%016llXULL, { 0x%016llXULL, 0x%016llXULL } },", + v.len, v.seed, v.Nresult.low64, v.Nresult.high64); +} + +static void fprintf_XSUM_testdata_sample_t(FILE* fp, XSUM_testdata_sample_t const v) { + fprintf(fp,"{ %4d, %4d, { 0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%02X } },", + v.seedLen, v.secretLen, v.byte[0], v.byte[1], v.byte[2], v.byte[3], v.byte[4]); +} + + +/* TODO : Share this function with sanity_check.c and xsum_sanity_check.c */ +/* + * Fills a test buffer with pseudorandom data. + * + * This is used in the sanity check - its values must not be changed. + */ +static void fillTestBuffer(XSUM_U8* buffer, size_t bufferLenInBytes) +{ + XSUM_U64 byteGen = PRIME32; + size_t i; + + assert(buffer != NULL); + + for (i = 0; i < bufferLenInBytes; ++i) { + buffer[i] = (XSUM_U8)(byteGen>>56); + byteGen *= PRIME64; + } +} + + +/* TODO : Share this function with sanity_check.c and xsum_sanity_check.c */ +/* + * Create (malloc) and fill buffer with pseudorandom data for sanity check. + * + * Use releaseSanityBuffer() to delete the buffer. + */ +static XSUM_U8* createSanityBuffer(size_t bufferLenInBytes) +{ + XSUM_U8* const buffer = (XSUM_U8*) malloc(bufferLenInBytes); + assert(buffer != NULL); + fillTestBuffer(buffer, bufferLenInBytes); + return buffer; +} + + +/* TODO : Share this function with sanity_check.c and xsum_sanity_check.c */ +/* + * Delete (free) the buffer which has been genereated by createSanityBuffer() + */ +static void releaseSanityBuffer(XSUM_U8* buffer) +{ + assert(buffer != NULL); + free(buffer); +} + + +/* Generate test vectors for XXH32() */ +static void generate_sanity_test_vectors_xxh32(FILE* fp, size_t maxLen) { + const char* const arrayTypeName = "XSUM_testdata32_t"; + const char* const arrayName = "XSUM_XXH32_testdata"; + fprintf(fp, "static const %s %s[] = {\n", arrayTypeName, arrayName); + + XSUM_U8* const sanityBuffer = createSanityBuffer(maxLen); + + size_t index = 0; + for(size_t len = 0; len < maxLen; ++len) { + static const uint64_t seeds[] = { 0, PRIME32 }; + for(size_t iSeed = 0; iSeed < sizeof(seeds)/sizeof(seeds[0]); ++iSeed) { + size_t const seed = seeds[iSeed]; + XSUM_testdata32_t const v = tvgen_XXH32(sanityBuffer, len, seed); + + fprintf(fp, " "); + fprintf_XSUM_testdata32_t(fp, v); + fprintf(fp, " /* %s[%zd] */\n", arrayName, index++); + } + } + + releaseSanityBuffer(sanityBuffer); + fprintf(fp, "};\n"); +} + + +/* Generate test vectors for XXH64() */ +static void generate_sanity_test_vectors_xxh64(FILE* fp, size_t maxLen) { + const char* const arrayTypeName = "XSUM_testdata64_t"; + const char* const arrayName = "XSUM_XXH64_testdata"; + fprintf(fp, "static const %s %s[] = {\n", arrayTypeName, arrayName); + + XSUM_U8* const sanityBuffer = createSanityBuffer(maxLen); + + size_t index = 0; + for(size_t len = 0; len < maxLen; ++len) { + static const uint64_t seeds[] = { 0, PRIME32 }; + for(size_t iSeed = 0; iSeed < sizeof(seeds)/sizeof(seeds[0]); ++iSeed) { + size_t const seed = seeds[iSeed]; + XSUM_testdata64_t const v = tvgen_XXH64(sanityBuffer, len, seed); + + fprintf(fp, " "); + fprintf_XSUM_testdata64_t(fp, v); + fprintf(fp, " /* %s[%zd] */\n", arrayName, index++); + } + } + + releaseSanityBuffer(sanityBuffer); + fprintf(fp, "};\n"); +} + + +/* Generate test vectors for XXH3_64bits_withSeed() */ +static void generate_sanity_test_vectors_xxh3(FILE* fp, size_t maxLen) { + const char* const arrayTypeName = "XSUM_testdata64_t"; + const char* const arrayName = "XSUM_XXH3_testdata"; + fprintf(fp, "static const %s %s[] = {\n", arrayTypeName, arrayName); + + XSUM_U8* const sanityBuffer = createSanityBuffer(maxLen); + + size_t index = 0; + for(size_t len = 0; len < maxLen; ++len) { + static const uint64_t seeds[] = { 0, PRIME64 }; + for(size_t iSeed = 0; iSeed < sizeof(seeds)/sizeof(seeds[0]); ++iSeed) { + size_t const seed = seeds[iSeed]; + XSUM_testdata64_t const v = tvgen_XXH3_64bits_withSeed(sanityBuffer, len, seed); + + fprintf(fp, " "); + fprintf_XSUM_testdata64_t(fp, v); + fprintf(fp, " /* %s[%zd] */\n", arrayName, index++); + } + } + + releaseSanityBuffer(sanityBuffer); + fprintf(fp, "};\n"); +} + + +/* Generate test vectors for XXH3_64bits_withSecret() */ +static void generate_sanity_test_vectors_xxh3_withSecret(FILE* fp, size_t maxLen) { + const char* const arrayTypeName = "XSUM_testdata64_t"; + const char* const arrayName = "XSUM_XXH3_withSecret_testdata"; + fprintf(fp, "static const %s %s[] = {\n", arrayTypeName, arrayName); + + XSUM_U8* const sanityBuffer = createSanityBuffer(maxLen); + + const void* const secret = sanityBuffer + 7; + size_t const secretSize = XXH3_SECRET_SIZE_MIN + 11; + assert(maxLen >= 7 + secretSize); + + size_t index = 0; + for(size_t len = 0; len < maxLen; ++len) { + XSUM_testdata64_t const v = tvgen_XXH3_64bits_withSecret(sanityBuffer, len, secret, secretSize); + + fprintf(fp, " "); + fprintf_XSUM_testdata64_t(fp, v); + fprintf(fp, " /* %s[%zd] */\n", arrayName, index++); + } + + releaseSanityBuffer(sanityBuffer); + fprintf(fp, "};\n"); +} + + +/* Generate test vectors for XXH3_128bits_withSeed() */ +static void generate_sanity_test_vectors_xxh128(FILE* fp, size_t maxLen) { + const char* const arrayTypeName = "XSUM_testdata128_t"; + const char* const arrayName = "XSUM_XXH128_testdata"; + fprintf(fp, "static const %s %s[] = {\n", arrayTypeName, arrayName); + + XSUM_U8* const sanityBuffer = createSanityBuffer(maxLen); + + size_t index = 0; + for(size_t len = 0; len < maxLen; ++len) { + static const uint64_t seeds[] = { 0, PRIME32, PRIME64 }; + for(size_t iSeed = 0; iSeed < sizeof(seeds)/sizeof(seeds[0]); ++iSeed) { + XSUM_U64 const seed = seeds[iSeed]; + XSUM_testdata128_t const v = tvgen_XXH3_128bits_withSeed(sanityBuffer, len, seed); + + fprintf(fp, " "); + fprintf_XSUM_testdata128_t(fp, v); + fprintf(fp, " /* %s[%zd] */\n", arrayName, index++); + } + } + fprintf(fp, "};\n"); + releaseSanityBuffer(sanityBuffer); +} + + +/* Generate test vectors for XXH3_128bits_withSecret() */ +static void generate_sanity_test_vectors_xxh128_withSecret(FILE* fp, size_t maxLen) { + const char* const arrayTypeName = "XSUM_testdata128_t"; + const char* const arrayName = "XSUM_XXH128_withSecret_testdata"; + fprintf(fp, "static const %s %s[] = {\n", arrayTypeName, arrayName); + + XSUM_U8* const sanityBuffer = createSanityBuffer(maxLen); + + const void* const secret = sanityBuffer + 7; + size_t const secretSize = XXH3_SECRET_SIZE_MIN + 11; + assert(maxLen >= 7 + secretSize); + + size_t index = 0; + for(size_t len = 0; len < maxLen; ++len) { + XSUM_testdata128_t const v = tvgen_XXH3_128bits_withSecret(sanityBuffer, len, secret, secretSize); + + fprintf(fp, " "); + fprintf_XSUM_testdata128_t(fp, v); + fprintf(fp, " /* %s[%zd] */\n", arrayName, index++); + } + + fprintf(fp, "};\n"); + releaseSanityBuffer(sanityBuffer); +} + + +/* Generate test vectors for XXH3_generateSecret() */ +static void generate_sanity_test_vectors_xxh3_generateSecret(FILE* fp, size_t maxLen) { + const char* const arrayTypeName = "XSUM_testdata_sample_t"; + const char* const arrayName = "XSUM_XXH3_generateSecret_testdata"; + fprintf(fp, "static const %s %s[] = {\n", arrayTypeName, arrayName); + + XSUM_U8* const sanityBuffer = createSanityBuffer(maxLen); + const void* const customSeed = sanityBuffer; + static const size_t seedLens[] = { + 0, + 1, + XXH3_SECRET_SIZE_MIN - 1, + XXH3_SECRET_DEFAULT_SIZE + 500 + }; + static const size_t secretLens[] = { + 192, + 240, + 277, + SECRET_SIZE_MAX + }; + + size_t index = 0; + for(size_t iSeedLen = 0; iSeedLen < sizeof(seedLens)/sizeof(seedLens[0]); ++iSeedLen) { + for(size_t iSecretLen = 0; iSecretLen < sizeof(secretLens)/sizeof(secretLens[0]); ++iSecretLen) { + size_t const seedLen = seedLens[iSeedLen]; + size_t const secretLen = secretLens[iSecretLen]; + XSUM_U8 secretBuffer[SECRET_SIZE_MAX] = {0}; + + assert(seedLen <= maxLen); + assert(secretLen <= SECRET_SIZE_MAX); + + XSUM_testdata_sample_t const v = tvgen_XXH3_generateSecret( + secretBuffer, + secretLen, + customSeed, + seedLen + ); + + fprintf(fp, " "); + fprintf_XSUM_testdata_sample_t(fp, v); + fprintf(fp, " /* %s[%zd] */\n", arrayName, index++); + } + } + fprintf(fp, "};\n"); + + releaseSanityBuffer(sanityBuffer); +} + + +/* Generate test vectors */ +void generate_sanity_test_vectors(size_t maxLen) { + const char* filename = "sanity_test_vectors.h"; + fprintf(stderr, "Generating %s\n", filename); + FILE* fp = fopen(filename, "w"); + fprintf(fp, + "typedef struct {\n" + " XSUM_U32 len;\n" + " XSUM_U32 seed;\n" + " XSUM_U32 Nresult;\n" + "} XSUM_testdata32_t;\n" + "\n" + "typedef struct {\n" + " XSUM_U32 len;\n" + " XSUM_U64 seed;\n" + " XSUM_U64 Nresult;\n" + "} XSUM_testdata64_t;\n" + "\n" + "typedef struct {\n" + " XSUM_U32 len;\n" + " XSUM_U64 seed;\n" + " XXH128_hash_t Nresult;\n" + "} XSUM_testdata128_t;\n" + "\n" + "#ifndef SECRET_SAMPLE_NBBYTES\n" + "#define SECRET_SAMPLE_NBBYTES 5\n" + "#endif\n" + "\n" + "typedef struct {\n" + " XSUM_U32 seedLen;\n" + " XSUM_U32 secretLen;\n" + " XSUM_U8 byte[SECRET_SAMPLE_NBBYTES];\n" + "} XSUM_testdata_sample_t;\n" + "\n" + "#ifndef SECRET_SIZE_MAX\n" + "#define SECRET_SIZE_MAX 9867\n" + "#endif\n" + "\n" + ); + + generate_sanity_test_vectors_xxh32(fp, maxLen); + generate_sanity_test_vectors_xxh64(fp, maxLen); + generate_sanity_test_vectors_xxh3(fp, maxLen); + generate_sanity_test_vectors_xxh3_withSecret(fp, maxLen); + generate_sanity_test_vectors_xxh128(fp, maxLen); + generate_sanity_test_vectors_xxh128_withSecret(fp, maxLen); + generate_sanity_test_vectors_xxh3_generateSecret(fp, maxLen); + fclose(fp); +} + + +/**/ +int main(int argc, const char* argv[]) +{ + (void) argc; + (void) argv; + const size_t sanityBufferSizeInBytes = SANITY_BUFFER_SIZE; + generate_sanity_test_vectors(sanityBufferSizeInBytes); + return EXIT_SUCCESS; +} diff --git a/deps/xxHash/tests/unicode_lint.sh b/deps/xxHash/tests/unicode_lint.sh new file mode 100644 index 000000000..2e68f5867 --- /dev/null +++ b/deps/xxHash/tests/unicode_lint.sh @@ -0,0 +1,43 @@ +#!/bin/bash + +# `unicode_lint.sh' determines whether source files under ${dirs} directories +# contain Unicode characters, and fails if any do. +# +# We don't recommend to call this script directly. +# Instead of it, use `make lint-unicode` via root directory Makefile. + +# ${dirs} : target directories +dirs=(./ ./cli ./tests ./tests/bench ./tests/collisions) + +SCRIPT_DIR="`dirname "${BASH_SOURCE[0]}"`" +cd ${SCRIPT_DIR}/.. + +echo "Ensure no unicode character is present in source files *.{c,h}" +pass=true + +# Scan each directory in ${dirs} for Unicode in source (*.c, *.h) files +i=0 +while [ $i -lt ${#dirs[@]} ] +do + dir=${dirs[$i]} + echo dir=$dir + result=$( + find ${dir} -regex '.*\.\(c\|h\)$' -exec grep -P -n "[^\x00-\x7F]" {} \; -exec echo "{}: FAIL" \; + ) + if [[ $result ]]; then + echo "$result" + pass=false + fi + i=`expr $i + 1` +done + + +# Result +if [ "$pass" = true ]; then + echo "All tests successful: no unicode character detected" + echo "Result: PASS" + exit 0 +else + echo "Result: FAIL" + exit 1 +fi diff --git a/deps/xxHash/xxh3.h b/deps/xxHash/xxh3.h index 7e83e6418..7e3ce68e0 100644 --- a/deps/xxHash/xxh3.h +++ b/deps/xxHash/xxh3.h @@ -1,7 +1,7 @@ /* * xxHash - Extremely Fast Hash algorithm * Development source file for `xxh3` - * Copyright (C) 2019-2020 Yann Collet + * Copyright (C) 2019-2021 Yann Collet * * BSD 2-Clause License (https://www.opensource.org/licenses/bsd-license.php) * @@ -42,7 +42,7 @@ * but it is still provided for compatibility with source code * which used to include it directly. * - * Programs are now highly discourage to include xxh3.h. + * Programs are now highly discouraged to include xxh3.h. * Include `xxhash.h` instead, which is the officially supported interface. * * In the future, xxh3.h will start to generate warnings, then errors, diff --git a/deps/xxHash/xxh_x86dispatch.c b/deps/xxHash/xxh_x86dispatch.c index a618ae898..0c1582008 100644 --- a/deps/xxHash/xxh_x86dispatch.c +++ b/deps/xxHash/xxh_x86dispatch.c @@ -1,6 +1,6 @@ /* * xxHash - Extremely Fast Hash algorithm - * Copyright (C) 2020 Yann Collet + * Copyright (C) 2020-2021 Yann Collet * * BSD 2-Clause License (https://www.opensource.org/licenses/bsd-license.php) * @@ -33,24 +33,158 @@ */ +/*! + * @file xxh_x86dispatch.c + * + * Automatic dispatcher code for the @ref XXH3_family on x86-based targets. + * + * Optional add-on. + * + * **Compile this file with the default flags for your target.** + * Note that compiling with flags like `-mavx*`, `-march=native`, or `/arch:AVX*` + * will make the resulting binary incompatible with cpus not supporting the requested instruction set. + * + * @defgroup dispatch x86 Dispatcher + * @{ + */ + #if defined (__cplusplus) extern "C" { #endif -/* - * Dispatcher code for XXH3 on x86-based targets. - */ #if !(defined(__x86_64__) || defined(__i386__) || defined(_M_IX86) || defined(_M_X64)) # error "Dispatching is currently only supported on x86 and x86_64." #endif -#ifndef __GNUC__ -# error "Dispatching requires __attribute__((__target__)) capability" +/*! @cond Doxygen ignores this part */ +#ifndef XXH_HAS_INCLUDE +# ifdef __has_include +/* + * Not defined as XXH_HAS_INCLUDE(x) (function-like) because + * this causes segfaults in Apple Clang 4.2 (on Mac OS X 10.7 Lion) + */ +# define XXH_HAS_INCLUDE __has_include +# else +# define XXH_HAS_INCLUDE(x) 0 +# endif +#endif +/*! @endcond */ + +/*! + * @def XXH_DISPATCH_SCALAR + * @brief Enables/dispatching the scalar code path. + * + * If this is defined to 0, SSE2 support is assumed. This reduces code size + * when the scalar path is not needed. + * + * This is automatically defined to 0 when... + * - SSE2 support is enabled in the compiler + * - Targeting x86_64 + * - Targeting Android x86 + * - Targeting macOS + */ +#ifndef XXH_DISPATCH_SCALAR +# if defined(__SSE2__) || (defined(_M_IX86_FP) && _M_IX86_FP >= 2) /* SSE2 on by default */ \ + || defined(__x86_64__) || defined(_M_X64) /* x86_64 */ \ + || defined(__ANDROID__) || defined(__APPLE__) /* Android or macOS */ +# define XXH_DISPATCH_SCALAR 0 /* disable */ +# else +# define XXH_DISPATCH_SCALAR 1 +# endif +#endif +/*! + * @def XXH_DISPATCH_AVX2 + * @brief Enables/disables dispatching for AVX2. + * + * This is automatically detected if it is not defined. + * - GCC 4.7 and later are known to support AVX2, but >4.9 is required for + * to get the AVX2 intrinsics and typedefs without -mavx -mavx2. + * - Visual Studio 2013 Update 2 and later are known to support AVX2. + * - The GCC/Clang internal header `` is detected. While this is + * not allowed to be included directly, it still appears in the builtin + * include path and is detectable with `__has_include`. + * + * @see XXH_AVX2 + */ +#ifndef XXH_DISPATCH_AVX2 +# if (defined(__GNUC__) && (__GNUC__ > 4)) /* GCC 5.0+ */ \ + || (defined(_MSC_VER) && _MSC_VER >= 1900) /* VS 2015+ */ \ + || (defined(_MSC_FULL_VER) && _MSC_FULL_VER >= 180030501) /* VS 2013 Update 2 */ \ + || XXH_HAS_INCLUDE() /* GCC/Clang internal header */ +# define XXH_DISPATCH_AVX2 1 /* enable dispatch towards AVX2 */ +# else +# define XXH_DISPATCH_AVX2 0 +# endif +#endif /* XXH_DISPATCH_AVX2 */ + +/*! + * @def XXH_DISPATCH_AVX512 + * @brief Enables/disables dispatching for AVX512. + * + * Automatically detected if one of the following conditions is met: + * - GCC 4.9 and later are known to support AVX512. + * - Visual Studio 2017 and later are known to support AVX2. + * - The GCC/Clang internal header `` is detected. While this + * is not allowed to be included directly, it still appears in the builtin + * include path and is detectable with `__has_include`. + * + * @see XXH_AVX512 + */ +#ifndef XXH_DISPATCH_AVX512 +# if (defined(__GNUC__) \ + && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 9))) /* GCC 4.9+ */ \ + || (defined(_MSC_VER) && _MSC_VER >= 1910) /* VS 2017+ */ \ + || XXH_HAS_INCLUDE() /* GCC/Clang internal header */ +# define XXH_DISPATCH_AVX512 1 /* enable dispatch towards AVX512 */ +# else +# define XXH_DISPATCH_AVX512 0 +# endif +#endif /* XXH_DISPATCH_AVX512 */ + +/*! + * @def XXH_TARGET_SSE2 + * @brief Allows a function to be compiled with SSE2 intrinsics. + * + * Uses `__attribute__((__target__("sse2")))` on GCC to allow SSE2 to be used + * even with `-mno-sse2`. + * + * @def XXH_TARGET_AVX2 + * @brief Like @ref XXH_TARGET_SSE2, but for AVX2. + * + * @def XXH_TARGET_AVX512 + * @brief Like @ref XXH_TARGET_SSE2, but for AVX512. + * + */ +#if defined(__GNUC__) +# include /* SSE2 */ +# if XXH_DISPATCH_AVX2 || XXH_DISPATCH_AVX512 +# include /* AVX2, AVX512F */ +# endif +# define XXH_TARGET_SSE2 __attribute__((__target__("sse2"))) +# define XXH_TARGET_AVX2 __attribute__((__target__("avx2"))) +# define XXH_TARGET_AVX512 __attribute__((__target__("avx512f"))) +#elif defined(__clang__) && defined(_MSC_VER) /* clang-cl.exe */ +# include /* SSE2 */ +# if XXH_DISPATCH_AVX2 || XXH_DISPATCH_AVX512 +# include /* AVX2, AVX512F */ +# include +# include +# include +# include +# endif +# define XXH_TARGET_SSE2 __attribute__((__target__("sse2"))) +# define XXH_TARGET_AVX2 __attribute__((__target__("avx2"))) +# define XXH_TARGET_AVX512 __attribute__((__target__("avx512f"))) +#elif defined(_MSC_VER) +# include +# define XXH_TARGET_SSE2 +# define XXH_TARGET_AVX2 +# define XXH_TARGET_AVX512 +#else +# error "Dispatching is currently not supported for your compiler." #endif -#define XXH_DISPATCH_AVX2 /* enable dispatch towards AVX2 */ -#define XXH_DISPATCH_AVX512 /* enable dispatch towards AVX512 */ - +/*! @cond Doxygen ignores this part */ #ifdef XXH_DISPATCH_DEBUG /* debug logging */ # include @@ -60,30 +194,37 @@ extern "C" { # undef NDEBUG /* avoid redefinition */ # define NDEBUG #endif +/*! @endcond */ #include -#if defined(__GNUC__) -# include /* sse2 */ -# include /* avx2 */ -#elif defined(_MSC_VER) -# include -#endif - +#ifndef XXH_DOXYGEN #define XXH_INLINE_ALL #define XXH_X86DISPATCH -#define XXH_TARGET_AVX512 __attribute__((__target__("avx512f"))) -#define XXH_TARGET_AVX2 __attribute__((__target__("avx2"))) -#define XXH_TARGET_SSE2 __attribute__((__target__("sse2"))) #include "xxhash.h" - -/* - * Modified version of Intel's guide - * https://software.intel.com/en-us/articles/how-to-detect-new-instruction-support-in-the-4th-generation-intel-core-processor-family - */ -#if defined(_MSC_VER) -# include #endif +/*! @cond Doxygen ignores this part */ +#ifndef XXH_HAS_ATTRIBUTE +# ifdef __has_attribute +# define XXH_HAS_ATTRIBUTE(...) __has_attribute(__VA_ARGS__) +# else +# define XXH_HAS_ATTRIBUTE(...) 0 +# endif +#endif +/*! @endcond */ + +/*! @cond Doxygen ignores this part */ +#if XXH_HAS_ATTRIBUTE(constructor) +# define XXH_CONSTRUCTOR __attribute__((constructor)) +# define XXH_DISPATCH_MAYBE_NULL 0 +#else +# define XXH_CONSTRUCTOR +# define XXH_DISPATCH_MAYBE_NULL 1 +#endif +/*! @endcond */ + + +/*! @cond Doxygen ignores this part */ /* * Support both AT&T and Intel dialects * @@ -97,16 +238,23 @@ extern "C" { * Note: Comments are written in the inline assembly itself. */ #ifdef __clang__ -# define I_ATT(intel, att) att "\n\t" +# define XXH_I_ATT(intel, att) att "\n\t" #else -# define I_ATT(intel, att) "{" att "|" intel "}\n\t" +# define XXH_I_ATT(intel, att) "{" att "|" intel "}\n\t" #endif +/*! @endcond */ - +/*! + * @private + * @brief Runs CPUID. + * + * @param eax , ecx The parameters to pass to CPUID, %eax and %ecx respectively. + * @param abcd The array to store the result in, `{ eax, ebx, ecx, edx }` + */ static void XXH_cpuid(xxh_u32 eax, xxh_u32 ecx, xxh_u32* abcd) { #if defined(_MSC_VER) - __cpuidex(abcd, eax, ecx); + __cpuidex((int*)abcd, eax, ecx); #else xxh_u32 ebx, edx; # if defined(__i386__) && defined(__PIC__) @@ -115,14 +263,14 @@ static void XXH_cpuid(xxh_u32 eax, xxh_u32 ecx, xxh_u32* abcd) "#\n\t" "# On 32-bit x86 with PIC enabled, we are not allowed to overwrite\n\t" "# EBX, so we use EDI instead.\n\t" - I_ATT("mov edi, ebx", "movl %%ebx, %%edi") - I_ATT("cpuid", "cpuid" ) - I_ATT("xchg edi, ebx", "xchgl %%ebx, %%edi") + XXH_I_ATT("mov edi, ebx", "movl %%ebx, %%edi") + XXH_I_ATT("cpuid", "cpuid" ) + XXH_I_ATT("xchg edi, ebx", "xchgl %%ebx, %%edi") : "=D" (ebx), # else __asm__( "# Call CPUID\n\t" - I_ATT("cpuid", "cpuid") + XXH_I_ATT("cpuid", "cpuid") : "=b" (ebx), # endif "+a" (eax), "+c" (ecx), "=d" (edx)); @@ -133,8 +281,16 @@ static void XXH_cpuid(xxh_u32 eax, xxh_u32 ecx, xxh_u32* abcd) #endif } -#if defined(XXH_DISPATCH_AVX2) || defined(XXH_DISPATCH_AVX512) /* + * Modified version of Intel's guide + * https://software.intel.com/en-us/articles/how-to-detect-new-instruction-support-in-the-4th-generation-intel-core-processor-family + */ + +#if XXH_DISPATCH_AVX2 || XXH_DISPATCH_AVX512 +/*! + * @private + * @brief Runs `XGETBV`. + * * While the CPU may support AVX2, the operating system might not properly save * the full YMM/ZMM registers. * @@ -166,20 +322,30 @@ static xxh_u64 XXH_xgetbv(void) } #endif -#define SSE2_CPUID_MASK (1 << 26) -#define OSXSAVE_CPUID_MASK ((1 << 26) | (1 << 27)) -#define AVX2_CPUID_MASK (1 << 5) -#define AVX2_XGETBV_MASK ((1 << 2) | (1 << 1)) -#define AVX512F_CPUID_MASK (1 << 16) -#define AVX512F_XGETBV_MASK ((7 << 5) | (1 << 2) | (1 << 1)) +/*! @cond Doxygen ignores this part */ +#define XXH_SSE2_CPUID_MASK (1 << 26) +#define XXH_OSXSAVE_CPUID_MASK ((1 << 26) | (1 << 27)) +#define XXH_AVX2_CPUID_MASK (1 << 5) +#define XXH_AVX2_XGETBV_MASK ((1 << 2) | (1 << 1)) +#define XXH_AVX512F_CPUID_MASK (1 << 16) +#define XXH_AVX512F_XGETBV_MASK ((7 << 5) | (1 << 2) | (1 << 1)) +/*! @endcond */ -/* Returns the best XXH3 implementation */ -static int XXH_featureTest(void) +/*! + * @private + * @brief Returns the best XXH3 implementation. + * + * Runs various CPUID/XGETBV tests to try and determine the best implementation. + * + * @return The best @ref XXH_VECTOR implementation. + * @see XXH_VECTOR_TYPES + */ +int XXH_featureTest(void) { xxh_u32 abcd[4]; xxh_u32 max_leaves; int best = XXH_SCALAR; -#if defined(XXH_DISPATCH_AVX2) || defined(XXH_DISPATCH_AVX512) +#if XXH_DISPATCH_AVX2 || XXH_DISPATCH_AVX512 xxh_u64 xgetbv_val; #endif #if defined(__GNUC__) && defined(__i386__) @@ -197,23 +363,23 @@ static int XXH_featureTest(void) "# Routine is from .\n\t" "# Save EFLAGS\n\t" - I_ATT("pushfd", "pushfl" ) + XXH_I_ATT("pushfd", "pushfl" ) "# Store EFLAGS\n\t" - I_ATT("pushfd", "pushfl" ) + XXH_I_ATT("pushfd", "pushfl" ) "# Invert the ID bit in stored EFLAGS\n\t" - I_ATT("xor dword ptr[esp], 0x200000", "xorl $0x200000, (%%esp)") + XXH_I_ATT("xor dword ptr[esp], 0x200000", "xorl $0x200000, (%%esp)") "# Load stored EFLAGS (with ID bit inverted)\n\t" - I_ATT("popfd", "popfl" ) + XXH_I_ATT("popfd", "popfl" ) "# Store EFLAGS again (ID bit may or not be inverted)\n\t" - I_ATT("pushfd", "pushfl" ) + XXH_I_ATT("pushfd", "pushfl" ) "# eax = modified EFLAGS (ID bit may or may not be inverted)\n\t" - I_ATT("pop eax", "popl %%eax" ) + XXH_I_ATT("pop eax", "popl %%eax" ) "# eax = whichever bits were changed\n\t" - I_ATT("xor eax, dword ptr[esp]", "xorl (%%esp), %%eax" ) + XXH_I_ATT("xor eax, dword ptr[esp]", "xorl (%%esp), %%eax" ) "# Restore original EFLAGS\n\t" - I_ATT("popfd", "popfl" ) + XXH_I_ATT("popfd", "popfl" ) "# eax = zero if ID bit can't be changed, else non-zero\n\t" - I_ATT("and eax, 0x200000", "andl $0x200000, %%eax" ) + XXH_I_ATT("and eax, 0x200000", "andl $0x200000, %%eax" ) : "=a" (cpuid_supported) :: "cc"); if (XXH_unlikely(!cpuid_supported)) { @@ -238,32 +404,32 @@ static int XXH_featureTest(void) /* * Test for SSE2. The check is redundant on x86_64, but it doesn't hurt. */ - if (XXH_unlikely((abcd[3] & SSE2_CPUID_MASK) != SSE2_CPUID_MASK)) + if (XXH_unlikely((abcd[3] & XXH_SSE2_CPUID_MASK) != XXH_SSE2_CPUID_MASK)) return best; XXH_debugPrint("SSE2 support detected."); best = XXH_SSE2; -#if defined(XXH_DISPATCH_AVX2) || defined(XXH_DISPATCH_AVX512) +#if XXH_DISPATCH_AVX2 || XXH_DISPATCH_AVX512 /* Make sure we have enough leaves */ if (XXH_unlikely(max_leaves < 7)) return best; /* Test for OSXSAVE and XGETBV */ - if ((abcd[2] & OSXSAVE_CPUID_MASK) != OSXSAVE_CPUID_MASK) + if ((abcd[2] & XXH_OSXSAVE_CPUID_MASK) != XXH_OSXSAVE_CPUID_MASK) return best; /* CPUID check for AVX features */ XXH_cpuid(7, 0, abcd); xgetbv_val = XXH_xgetbv(); -#if defined(XXH_DISPATCH_AVX2) +#if XXH_DISPATCH_AVX2 /* Validate that AVX2 is supported by the CPU */ - if ((abcd[1] & AVX2_CPUID_MASK) != AVX2_CPUID_MASK) + if ((abcd[1] & XXH_AVX2_CPUID_MASK) != XXH_AVX2_CPUID_MASK) return best; /* Validate that the OS supports YMM registers */ - if ((xgetbv_val & AVX2_XGETBV_MASK) != AVX2_XGETBV_MASK) { + if ((xgetbv_val & XXH_AVX2_XGETBV_MASK) != XXH_AVX2_XGETBV_MASK) { XXH_debugPrint("AVX2 supported by the CPU, but not the OS."); return best; } @@ -272,15 +438,15 @@ static int XXH_featureTest(void) XXH_debugPrint("AVX2 support detected."); best = XXH_AVX2; #endif -#if defined(XXH_DISPATCH_AVX512) +#if XXH_DISPATCH_AVX512 /* Check if AVX512F is supported by the CPU */ - if ((abcd[1] & AVX512F_CPUID_MASK) != AVX512F_CPUID_MASK) { + if ((abcd[1] & XXH_AVX512F_CPUID_MASK) != XXH_AVX512F_CPUID_MASK) { XXH_debugPrint("AVX512F not supported by CPU"); return best; } /* Validate that the OS supports ZMM registers */ - if ((xgetbv_val & AVX512F_XGETBV_MASK) != AVX512F_XGETBV_MASK) { + if ((xgetbv_val & XXH_AVX512F_XGETBV_MASK) != XXH_AVX512F_XGETBV_MASK) { XXH_debugPrint("AVX512F supported by the CPU, but not the OS."); return best; } @@ -296,429 +462,330 @@ static int XXH_featureTest(void) /* === Vector implementations === */ -/* === XXH3, default variants === */ +/*! @cond PRIVATE */ +/*! + * @private + * @brief Defines the various dispatch functions. + * + * TODO: Consolidate? + * + * @param suffix The suffix for the functions, e.g. sse2 or scalar + * @param target XXH_TARGET_* or empty. + */ -XXH_NO_INLINE XXH64_hash_t -XXHL64_default_scalar(const void* XXH_RESTRICT input, size_t len) -{ - return XXH3_hashLong_64b_internal(input, len, XXH3_kSecret, sizeof(XXH3_kSecret), XXH3_accumulate_512_scalar, XXH3_scrambleAcc_scalar); +#define XXH_DEFINE_DISPATCH_FUNCS(suffix, target) \ + \ +/* === XXH3, default variants === */ \ + \ +XXH_NO_INLINE target XXH64_hash_t \ +XXHL64_default_##suffix(XXH_NOESCAPE const void* XXH_RESTRICT input, \ + size_t len) \ +{ \ + return XXH3_hashLong_64b_internal( \ + input, len, XXH3_kSecret, sizeof(XXH3_kSecret), \ + XXH3_accumulate_##suffix, XXH3_scrambleAcc_##suffix \ + ); \ +} \ + \ +/* === XXH3, Seeded variants === */ \ + \ +XXH_NO_INLINE target XXH64_hash_t \ +XXHL64_seed_##suffix(XXH_NOESCAPE const void* XXH_RESTRICT input, size_t len, \ + XXH64_hash_t seed) \ +{ \ + return XXH3_hashLong_64b_withSeed_internal( \ + input, len, seed, XXH3_accumulate_##suffix, \ + XXH3_scrambleAcc_##suffix, XXH3_initCustomSecret_##suffix \ + ); \ +} \ + \ +/* === XXH3, Secret variants === */ \ + \ +XXH_NO_INLINE target XXH64_hash_t \ +XXHL64_secret_##suffix(XXH_NOESCAPE const void* XXH_RESTRICT input, \ + size_t len, XXH_NOESCAPE const void* secret, \ + size_t secretLen) \ +{ \ + return XXH3_hashLong_64b_internal( \ + input, len, secret, secretLen, \ + XXH3_accumulate_##suffix, XXH3_scrambleAcc_##suffix \ + ); \ +} \ + \ +/* === XXH3 update variants === */ \ + \ +XXH_NO_INLINE target XXH_errorcode \ +XXH3_update_##suffix(XXH_NOESCAPE XXH3_state_t* state, \ + XXH_NOESCAPE const void* input, size_t len) \ +{ \ + return XXH3_update(state, (const xxh_u8*)input, len, \ + XXH3_accumulate_##suffix, XXH3_scrambleAcc_##suffix); \ +} \ + \ +/* === XXH128 default variants === */ \ + \ +XXH_NO_INLINE target XXH128_hash_t \ +XXHL128_default_##suffix(XXH_NOESCAPE const void* XXH_RESTRICT input, \ + size_t len) \ +{ \ + return XXH3_hashLong_128b_internal( \ + input, len, XXH3_kSecret, sizeof(XXH3_kSecret), \ + XXH3_accumulate_##suffix, XXH3_scrambleAcc_##suffix \ + ); \ +} \ + \ +/* === XXH128 Secret variants === */ \ + \ +XXH_NO_INLINE target XXH128_hash_t \ +XXHL128_secret_##suffix(XXH_NOESCAPE const void* XXH_RESTRICT input, \ + size_t len, \ + XXH_NOESCAPE const void* XXH_RESTRICT secret, \ + size_t secretLen) \ +{ \ + return XXH3_hashLong_128b_internal( \ + input, len, (const xxh_u8*)secret, secretLen, \ + XXH3_accumulate_##suffix, XXH3_scrambleAcc_##suffix); \ +} \ + \ +/* === XXH128 Seeded variants === */ \ + \ +XXH_NO_INLINE target XXH128_hash_t \ +XXHL128_seed_##suffix(XXH_NOESCAPE const void* XXH_RESTRICT input, size_t len,\ + XXH64_hash_t seed) \ +{ \ + return XXH3_hashLong_128b_withSeed_internal(input, len, seed, \ + XXH3_accumulate_##suffix, XXH3_scrambleAcc_##suffix, \ + XXH3_initCustomSecret_##suffix); \ } -XXH_NO_INLINE XXH_TARGET_SSE2 XXH64_hash_t -XXHL64_default_sse2(const void* XXH_RESTRICT input, size_t len) -{ - return XXH3_hashLong_64b_internal(input, len, XXH3_kSecret, sizeof(XXH3_kSecret), XXH3_accumulate_512_sse2, XXH3_scrambleAcc_sse2); -} +/*! @endcond */ +/* End XXH_DEFINE_DISPATCH_FUNCS */ -#ifdef XXH_DISPATCH_AVX2 -XXH_NO_INLINE XXH_TARGET_AVX2 XXH64_hash_t -XXHL64_default_avx2(const void* XXH_RESTRICT input, size_t len) -{ - return XXH3_hashLong_64b_internal(input, len, XXH3_kSecret, sizeof(XXH3_kSecret), XXH3_accumulate_512_avx2, XXH3_scrambleAcc_avx2); -} +/*! @cond Doxygen ignores this part */ +#if XXH_DISPATCH_SCALAR +XXH_DEFINE_DISPATCH_FUNCS(scalar, /* nothing */) #endif - -#ifdef XXH_DISPATCH_AVX512 -XXH_NO_INLINE XXH_TARGET_AVX512 XXH64_hash_t -XXHL64_default_avx512(const void* XXH_RESTRICT input, size_t len) -{ - return XXH3_hashLong_64b_internal(input, len, XXH3_kSecret, sizeof(XXH3_kSecret), XXH3_accumulate_512_avx512, XXH3_scrambleAcc_avx512); -} +XXH_DEFINE_DISPATCH_FUNCS(sse2, XXH_TARGET_SSE2) +#if XXH_DISPATCH_AVX2 +XXH_DEFINE_DISPATCH_FUNCS(avx2, XXH_TARGET_AVX2) #endif - -/* === XXH3, Seeded variants === */ - -XXH_NO_INLINE XXH64_hash_t -XXHL64_seed_scalar(const void* XXH_RESTRICT input, size_t len, XXH64_hash_t seed) -{ - return XXH3_hashLong_64b_withSeed_internal(input, len, seed, - XXH3_accumulate_512_scalar, XXH3_scrambleAcc_scalar, XXH3_initCustomSecret_scalar); -} - -XXH_NO_INLINE XXH_TARGET_SSE2 XXH64_hash_t -XXHL64_seed_sse2(const void* XXH_RESTRICT input, size_t len, XXH64_hash_t seed) -{ - return XXH3_hashLong_64b_withSeed_internal(input, len, seed, - XXH3_accumulate_512_sse2, XXH3_scrambleAcc_sse2, XXH3_initCustomSecret_sse2); -} - -#ifdef XXH_DISPATCH_AVX2 -XXH_NO_INLINE XXH_TARGET_AVX2 XXH64_hash_t -XXHL64_seed_avx2(const void* XXH_RESTRICT input, size_t len, XXH64_hash_t seed) -{ - return XXH3_hashLong_64b_withSeed_internal(input, len, seed, - XXH3_accumulate_512_avx2, XXH3_scrambleAcc_avx2, XXH3_initCustomSecret_avx2); -} -#endif - -#ifdef XXH_DISPATCH_AVX512 -XXH_NO_INLINE XXH_TARGET_AVX512 XXH64_hash_t -XXHL64_seed_avx512(const void* XXH_RESTRICT input, size_t len, XXH64_hash_t seed) -{ - return XXH3_hashLong_64b_withSeed_internal(input, len, seed, - XXH3_accumulate_512_avx512, XXH3_scrambleAcc_avx512, XXH3_initCustomSecret_avx512); -} -#endif - -/* === XXH3, Secret variants === */ - -XXH_NO_INLINE XXH64_hash_t -XXHL64_secret_scalar(const void* XXH_RESTRICT input, size_t len, const void* secret, size_t secretLen) -{ - return XXH3_hashLong_64b_internal(input, len, secret, secretLen, - XXH3_accumulate_512_scalar, XXH3_scrambleAcc_scalar); -} - -XXH_NO_INLINE XXH_TARGET_SSE2 XXH64_hash_t -XXHL64_secret_sse2(const void* XXH_RESTRICT input, size_t len, const void* secret, size_t secretLen) -{ - return XXH3_hashLong_64b_internal(input, len, secret, secretLen, - XXH3_accumulate_512_sse2, XXH3_scrambleAcc_sse2); -} - -#ifdef XXH_DISPATCH_AVX2 -XXH_NO_INLINE XXH_TARGET_AVX2 XXH64_hash_t -XXHL64_secret_avx2(const void* XXH_RESTRICT input, size_t len, const void* secret, size_t secretLen) -{ - return XXH3_hashLong_64b_internal(input, len, secret, secretLen, - XXH3_accumulate_512_avx2, XXH3_scrambleAcc_avx2); -} -#endif - -#ifdef XXH_DISPATCH_AVX512 -XXH_NO_INLINE XXH_TARGET_AVX512 XXH64_hash_t -XXHL64_secret_avx512(const void* XXH_RESTRICT input, size_t len, const void* secret, size_t secretLen) -{ - return XXH3_hashLong_64b_internal(input, len, secret, secretLen, - XXH3_accumulate_512_avx512, XXH3_scrambleAcc_avx512); -} -#endif - -/* === XXH3 update variants === */ - -XXH_NO_INLINE XXH_errorcode -XXH3_64bits_update_scalar(XXH3_state_t* state, const void* input, size_t len) -{ - return XXH3_update(state, (const xxh_u8*)input, len, - XXH3_accumulate_512_scalar, XXH3_scrambleAcc_scalar); -} - -XXH_NO_INLINE XXH_TARGET_SSE2 XXH_errorcode -XXH3_64bits_update_sse2(XXH3_state_t* state, const void* input, size_t len) -{ - return XXH3_update(state, (const xxh_u8*)input, len, - XXH3_accumulate_512_sse2, XXH3_scrambleAcc_sse2); -} - -#ifdef XXH_DISPATCH_AVX2 -XXH_NO_INLINE XXH_TARGET_AVX2 XXH_errorcode -XXH3_64bits_update_avx2(XXH3_state_t* state, const void* input, size_t len) -{ - return XXH3_update(state, (const xxh_u8*)input, len, - XXH3_accumulate_512_avx2, XXH3_scrambleAcc_avx2); -} -#endif - -#ifdef XXH_DISPATCH_AVX512 -XXH_NO_INLINE XXH_TARGET_AVX512 XXH_errorcode -XXH3_64bits_update_avx512(XXH3_state_t* state, const void* input, size_t len) -{ - return XXH3_update(state, (const xxh_u8*)input, len, - XXH3_accumulate_512_avx512, XXH3_scrambleAcc_avx512); -} -#endif - -/* === XXH128 default variants === */ - -XXH_NO_INLINE XXH128_hash_t -XXHL128_default_scalar(const void* XXH_RESTRICT input, size_t len) -{ - return XXH3_hashLong_128b_internal(input, len, XXH3_kSecret, sizeof(XXH3_kSecret), XXH3_accumulate_512_scalar, XXH3_scrambleAcc_scalar); -} - -XXH_NO_INLINE XXH_TARGET_SSE2 XXH128_hash_t -XXHL128_default_sse2(const void* XXH_RESTRICT input, size_t len) -{ - return XXH3_hashLong_128b_internal(input, len, XXH3_kSecret, sizeof(XXH3_kSecret), XXH3_accumulate_512_sse2, XXH3_scrambleAcc_sse2); -} - -#ifdef XXH_DISPATCH_AVX2 -XXH_NO_INLINE XXH_TARGET_AVX2 XXH128_hash_t -XXHL128_default_avx2(const void* XXH_RESTRICT input, size_t len) -{ - return XXH3_hashLong_128b_internal(input, len, XXH3_kSecret, sizeof(XXH3_kSecret), XXH3_accumulate_512_avx2, XXH3_scrambleAcc_avx2); -} -#endif - -#ifdef XXH_DISPATCH_AVX512 -XXH_NO_INLINE XXH_TARGET_AVX512 XXH128_hash_t -XXHL128_default_avx512(const void* XXH_RESTRICT input, size_t len) -{ - return XXH3_hashLong_128b_internal(input, len, XXH3_kSecret, sizeof(XXH3_kSecret), XXH3_accumulate_512_avx512, XXH3_scrambleAcc_avx512); -} -#endif - -/* === XXH128 Secret variants === */ - -XXH_NO_INLINE XXH128_hash_t -XXHL128_secret_scalar(const void* XXH_RESTRICT input, size_t len, const void* XXH_RESTRICT secret, size_t secretLen) -{ - return XXH3_hashLong_128b_internal(input, len, (const xxh_u8*)secret, secretLen, - XXH3_accumulate_512_scalar, XXH3_scrambleAcc_scalar); -} - -XXH_NO_INLINE XXH_TARGET_SSE2 XXH128_hash_t -XXHL128_secret_sse2(const void* XXH_RESTRICT input, size_t len, const void* XXH_RESTRICT secret, size_t secretLen) -{ - return XXH3_hashLong_128b_internal(input, len, (const xxh_u8*)secret, secretLen, - XXH3_accumulate_512_sse2, XXH3_scrambleAcc_sse2); -} - -#ifdef XXH_DISPATCH_AVX2 -XXH_NO_INLINE XXH_TARGET_AVX2 XXH128_hash_t -XXHL128_secret_avx2(const void* XXH_RESTRICT input, size_t len, const void* XXH_RESTRICT secret, size_t secretLen) -{ - return XXH3_hashLong_128b_internal(input, len, (const xxh_u8*)secret, secretLen, - XXH3_accumulate_512_avx2, XXH3_scrambleAcc_avx2); -} -#endif - -#ifdef XXH_DISPATCH_AVX512 -XXH_NO_INLINE XXH_TARGET_AVX512 XXH128_hash_t -XXHL128_secret_avx512(const void* XXH_RESTRICT input, size_t len, const void* XXH_RESTRICT secret, size_t secretLen) -{ - return XXH3_hashLong_128b_internal(input, len, (const xxh_u8*)secret, secretLen, - XXH3_accumulate_512_avx512, XXH3_scrambleAcc_avx512); -} -#endif - -/* === XXH128 Seeded variants === */ - -XXH_NO_INLINE XXH128_hash_t -XXHL128_seed_scalar(const void* XXH_RESTRICT input, size_t len, XXH64_hash_t seed) -{ - return XXH3_hashLong_128b_withSeed_internal(input, len, seed, - XXH3_accumulate_512_scalar, XXH3_scrambleAcc_scalar, XXH3_initCustomSecret_scalar); -} - -XXH_NO_INLINE XXH_TARGET_SSE2 XXH128_hash_t -XXHL128_seed_sse2(const void* XXH_RESTRICT input, size_t len, XXH64_hash_t seed) -{ - return XXH3_hashLong_128b_withSeed_internal(input, len, seed, - XXH3_accumulate_512_sse2, XXH3_scrambleAcc_sse2, XXH3_initCustomSecret_sse2); -} - -#ifdef XXH_DISPATCH_AVX2 -XXH_NO_INLINE XXH_TARGET_AVX2 XXH128_hash_t -XXHL128_seed_avx2(const void* XXH_RESTRICT input, size_t len, XXH64_hash_t seed) -{ - return XXH3_hashLong_128b_withSeed_internal(input, len, seed, - XXH3_accumulate_512_avx2, XXH3_scrambleAcc_avx2, XXH3_initCustomSecret_avx2); -} -#endif - -#ifdef XXH_DISPATCH_AVX512 -XXH_NO_INLINE XXH_TARGET_AVX512 XXH128_hash_t -XXHL128_seed_avx512(const void* XXH_RESTRICT input, size_t len, XXH64_hash_t seed) -{ - return XXH3_hashLong_128b_withSeed_internal(input, len, seed, - XXH3_accumulate_512_avx512, XXH3_scrambleAcc_avx512, XXH3_initCustomSecret_avx512); -} -#endif - -/* === XXH128 update variants === */ - -XXH_NO_INLINE XXH_errorcode -XXH3_128bits_update_scalar(XXH3_state_t* state, const void* input, size_t len) -{ - return XXH3_update(state, (const xxh_u8*)input, len, - XXH3_accumulate_512_scalar, XXH3_scrambleAcc_scalar); -} - -XXH_NO_INLINE XXH_TARGET_SSE2 XXH_errorcode -XXH3_128bits_update_sse2(XXH3_state_t* state, const void* input, size_t len) -{ - return XXH3_update(state, (const xxh_u8*)input, len, - XXH3_accumulate_512_sse2, XXH3_scrambleAcc_sse2); -} - -#ifdef XXH_DISPATCH_AVX2 -XXH_NO_INLINE XXH_TARGET_AVX2 XXH_errorcode -XXH3_128bits_update_avx2(XXH3_state_t* state, const void* input, size_t len) -{ - return XXH3_update(state, (const xxh_u8*)input, len, - XXH3_accumulate_512_avx2, XXH3_scrambleAcc_avx2); -} -#endif - -#ifdef XXH_DISPATCH_AVX512 -XXH_NO_INLINE XXH_TARGET_AVX512 XXH_errorcode -XXH3_128bits_update_avx512(XXH3_state_t* state, const void* input, size_t len) -{ - return XXH3_update(state, (const xxh_u8*)input, len, - XXH3_accumulate_512_avx512, XXH3_scrambleAcc_avx512); -} +#if XXH_DISPATCH_AVX512 +XXH_DEFINE_DISPATCH_FUNCS(avx512, XXH_TARGET_AVX512) #endif +#undef XXH_DEFINE_DISPATCH_FUNCS +/*! @endcond */ /* ==== Dispatchers ==== */ -typedef XXH64_hash_t (*XXH3_dispatchx86_hashLong64_default)(const void* XXH_RESTRICT, size_t); +/*! @cond Doxygen ignores this part */ +typedef XXH64_hash_t (*XXH3_dispatchx86_hashLong64_default)(XXH_NOESCAPE const void* XXH_RESTRICT, size_t); -typedef XXH64_hash_t (*XXH3_dispatchx86_hashLong64_withSeed)(const void* XXH_RESTRICT, size_t, XXH64_hash_t); +typedef XXH64_hash_t (*XXH3_dispatchx86_hashLong64_withSeed)(XXH_NOESCAPE const void* XXH_RESTRICT, size_t, XXH64_hash_t); -typedef XXH64_hash_t (*XXH3_dispatchx86_hashLong64_withSecret)(const void* XXH_RESTRICT, size_t, const void* XXH_RESTRICT, size_t); +typedef XXH64_hash_t (*XXH3_dispatchx86_hashLong64_withSecret)(XXH_NOESCAPE const void* XXH_RESTRICT, size_t, XXH_NOESCAPE const void* XXH_RESTRICT, size_t); -typedef XXH_errorcode (*XXH3_dispatchx86_update)(XXH3_state_t*, const void*, size_t); +typedef XXH_errorcode (*XXH3_dispatchx86_update)(XXH_NOESCAPE XXH3_state_t*, XXH_NOESCAPE const void*, size_t); typedef struct { XXH3_dispatchx86_hashLong64_default hashLong64_default; XXH3_dispatchx86_hashLong64_withSeed hashLong64_seed; XXH3_dispatchx86_hashLong64_withSecret hashLong64_secret; XXH3_dispatchx86_update update; -} dispatchFunctions_s; +} XXH_dispatchFunctions_s; -static dispatchFunctions_s g_dispatch = { NULL, NULL, NULL, NULL}; +#define XXH_NB_DISPATCHES 4 +/*! @endcond */ -#define NB_DISPATCHES 4 -static const dispatchFunctions_s k_dispatch[NB_DISPATCHES] = { - /* scalar */ { XXHL64_default_scalar, XXHL64_seed_scalar, XXHL64_secret_scalar, XXH3_64bits_update_scalar }, - /* sse2 */ { XXHL64_default_sse2, XXHL64_seed_sse2, XXHL64_secret_sse2, XXH3_64bits_update_sse2 }, -#ifdef XXH_DISPATCH_AVX2 - /* avx2 */ { XXHL64_default_avx2, XXHL64_seed_avx2, XXHL64_secret_avx2, XXH3_64bits_update_avx2 }, +/*! + * @private + * @brief Table of dispatchers for @ref XXH3_64bits(). + * + * @pre The indices must match @ref XXH_VECTOR_TYPE. + */ +static const XXH_dispatchFunctions_s XXH_kDispatch[XXH_NB_DISPATCHES] = { +#if XXH_DISPATCH_SCALAR + /* Scalar */ { XXHL64_default_scalar, XXHL64_seed_scalar, XXHL64_secret_scalar, XXH3_update_scalar }, #else - /* avx2 */ { NULL, NULL, NULL, NULL }, + /* Scalar */ { NULL, NULL, NULL, NULL }, #endif -#ifdef XXH_DISPATCH_AVX512 - /* avx512 */ { XXHL64_default_avx512, XXHL64_seed_avx512, XXHL64_secret_avx512, XXH3_64bits_update_avx512 } + /* SSE2 */ { XXHL64_default_sse2, XXHL64_seed_sse2, XXHL64_secret_sse2, XXH3_update_sse2 }, +#if XXH_DISPATCH_AVX2 + /* AVX2 */ { XXHL64_default_avx2, XXHL64_seed_avx2, XXHL64_secret_avx2, XXH3_update_avx2 }, #else - /* avx512 */ { NULL, NULL, NULL, NULL } + /* AVX2 */ { NULL, NULL, NULL, NULL }, +#endif +#if XXH_DISPATCH_AVX512 + /* AVX512 */ { XXHL64_default_avx512, XXHL64_seed_avx512, XXHL64_secret_avx512, XXH3_update_avx512 } +#else + /* AVX512 */ { NULL, NULL, NULL, NULL } #endif }; +/*! + * @private + * @brief The selected dispatch table for @ref XXH3_64bits(). + */ +static XXH_dispatchFunctions_s XXH_g_dispatch = { NULL, NULL, NULL, NULL }; -typedef XXH128_hash_t (*XXH3_dispatchx86_hashLong128_default)(const void* XXH_RESTRICT, size_t); -typedef XXH128_hash_t (*XXH3_dispatchx86_hashLong128_withSeed)(const void* XXH_RESTRICT, size_t, XXH64_hash_t); +/*! @cond Doxygen ignores this part */ +typedef XXH128_hash_t (*XXH3_dispatchx86_hashLong128_default)(XXH_NOESCAPE const void* XXH_RESTRICT, size_t); -typedef XXH128_hash_t (*XXH3_dispatchx86_hashLong128_withSecret)(const void* XXH_RESTRICT, size_t, const void* XXH_RESTRICT, size_t); +typedef XXH128_hash_t (*XXH3_dispatchx86_hashLong128_withSeed)(XXH_NOESCAPE const void* XXH_RESTRICT, size_t, XXH64_hash_t); + +typedef XXH128_hash_t (*XXH3_dispatchx86_hashLong128_withSecret)(XXH_NOESCAPE const void* XXH_RESTRICT, size_t, XXH_NOESCAPE const void* XXH_RESTRICT, size_t); typedef struct { XXH3_dispatchx86_hashLong128_default hashLong128_default; XXH3_dispatchx86_hashLong128_withSeed hashLong128_seed; XXH3_dispatchx86_hashLong128_withSecret hashLong128_secret; XXH3_dispatchx86_update update; -} dispatch128Functions_s; +} XXH_dispatch128Functions_s; +/*! @endcond */ -static dispatch128Functions_s g_dispatch128 = { NULL, NULL, NULL, NULL }; -static const dispatch128Functions_s k_dispatch128[NB_DISPATCHES] = { - /* scalar */ { XXHL128_default_scalar, XXHL128_seed_scalar, XXHL128_secret_scalar, XXH3_128bits_update_scalar }, - /* sse2 */ { XXHL128_default_sse2, XXHL128_seed_sse2, XXHL128_secret_sse2, XXH3_128bits_update_sse2 }, -#ifdef XXH_DISPATCH_AVX2 - /* avx2 */ { XXHL128_default_avx2, XXHL128_seed_avx2, XXHL128_secret_avx2, XXH3_128bits_update_avx2 }, +/*! + * @private + * @brief Table of dispatchers for @ref XXH3_128bits(). + * + * @pre The indices must match @ref XXH_VECTOR_TYPE. + */ +static const XXH_dispatch128Functions_s XXH_kDispatch128[XXH_NB_DISPATCHES] = { +#if XXH_DISPATCH_SCALAR + /* Scalar */ { XXHL128_default_scalar, XXHL128_seed_scalar, XXHL128_secret_scalar, XXH3_update_scalar }, #else - /* avx2 */ { NULL, NULL, NULL, NULL }, + /* Scalar */ { NULL, NULL, NULL, NULL }, #endif -#ifdef XXH_DISPATCH_AVX512 - /* avx512 */ { XXHL128_default_avx512, XXHL128_seed_avx512, XXHL128_secret_avx512, XXH3_128bits_update_avx512 } + /* SSE2 */ { XXHL128_default_sse2, XXHL128_seed_sse2, XXHL128_secret_sse2, XXH3_update_sse2 }, +#if XXH_DISPATCH_AVX2 + /* AVX2 */ { XXHL128_default_avx2, XXHL128_seed_avx2, XXHL128_secret_avx2, XXH3_update_avx2 }, #else - /* avx512 */ { NULL, NULL, NULL, NULL } + /* AVX2 */ { NULL, NULL, NULL, NULL }, +#endif +#if XXH_DISPATCH_AVX512 + /* AVX512 */ { XXHL128_default_avx512, XXHL128_seed_avx512, XXHL128_secret_avx512, XXH3_update_avx512 } +#else + /* AVX512 */ { NULL, NULL, NULL, NULL } #endif }; -static void setDispatch(void) +/*! + * @private + * @brief The selected dispatch table for @ref XXH3_64bits(). + */ +static XXH_dispatch128Functions_s XXH_g_dispatch128 = { NULL, NULL, NULL, NULL }; + +/*! + * @private + * @brief Runs a CPUID check and sets the correct dispatch tables. + */ +static XXH_CONSTRUCTOR void XXH_setDispatch(void) { int vecID = XXH_featureTest(); - XXH_STATIC_ASSERT(XXH_AVX512 == NB_DISPATCHES-1); + XXH_STATIC_ASSERT(XXH_AVX512 == XXH_NB_DISPATCHES-1); assert(XXH_SCALAR <= vecID && vecID <= XXH_AVX512); -#ifndef XXH_DISPATCH_AVX512 +#if !XXH_DISPATCH_SCALAR + assert(vecID != XXH_SCALAR); +#endif +#if !XXH_DISPATCH_AVX512 assert(vecID != XXH_AVX512); #endif -#ifndef XXH_DISPATCH_AVX2 +#if !XXH_DISPATCH_AVX2 assert(vecID != XXH_AVX2); #endif - g_dispatch = k_dispatch[vecID]; - g_dispatch128 = k_dispatch128[vecID]; + XXH_g_dispatch = XXH_kDispatch[vecID]; + XXH_g_dispatch128 = XXH_kDispatch128[vecID]; } /* ==== XXH3 public functions ==== */ +/*! @cond Doxygen ignores this part */ static XXH64_hash_t -XXH3_hashLong_64b_defaultSecret_selection(const void* input, size_t len, - XXH64_hash_t seed64, const xxh_u8* secret, size_t secretLen) +XXH3_hashLong_64b_defaultSecret_selection(const void* XXH_RESTRICT input, size_t len, + XXH64_hash_t seed64, const xxh_u8* XXH_RESTRICT secret, size_t secretLen) { (void)seed64; (void)secret; (void)secretLen; - if (g_dispatch.hashLong64_default == NULL) setDispatch(); - return g_dispatch.hashLong64_default(input, len); + if (XXH_DISPATCH_MAYBE_NULL && XXH_g_dispatch.hashLong64_default == NULL) + XXH_setDispatch(); + return XXH_g_dispatch.hashLong64_default(input, len); } -XXH64_hash_t XXH3_64bits_dispatch(const void* input, size_t len) +XXH64_hash_t XXH3_64bits_dispatch(XXH_NOESCAPE const void* input, size_t len) { return XXH3_64bits_internal(input, len, 0, XXH3_kSecret, sizeof(XXH3_kSecret), XXH3_hashLong_64b_defaultSecret_selection); } static XXH64_hash_t -XXH3_hashLong_64b_withSeed_selection(const void* input, size_t len, - XXH64_hash_t seed64, const xxh_u8* secret, size_t secretLen) +XXH3_hashLong_64b_withSeed_selection(const void* XXH_RESTRICT input, size_t len, + XXH64_hash_t seed64, const xxh_u8* XXH_RESTRICT secret, size_t secretLen) { (void)secret; (void)secretLen; - if (g_dispatch.hashLong64_seed == NULL) setDispatch(); - return g_dispatch.hashLong64_seed(input, len, seed64); + if (XXH_DISPATCH_MAYBE_NULL && XXH_g_dispatch.hashLong64_seed == NULL) + XXH_setDispatch(); + return XXH_g_dispatch.hashLong64_seed(input, len, seed64); } -XXH64_hash_t XXH3_64bits_withSeed_dispatch(const void* input, size_t len, XXH64_hash_t seed) +XXH64_hash_t XXH3_64bits_withSeed_dispatch(XXH_NOESCAPE const void* input, size_t len, XXH64_hash_t seed) { return XXH3_64bits_internal(input, len, seed, XXH3_kSecret, sizeof(XXH3_kSecret), XXH3_hashLong_64b_withSeed_selection); } static XXH64_hash_t -XXH3_hashLong_64b_withSecret_selection(const void* input, size_t len, - XXH64_hash_t seed64, const xxh_u8* secret, size_t secretLen) +XXH3_hashLong_64b_withSecret_selection(const void* XXH_RESTRICT input, size_t len, + XXH64_hash_t seed64, const xxh_u8* XXH_RESTRICT secret, size_t secretLen) { (void)seed64; - if (g_dispatch.hashLong64_secret == NULL) setDispatch(); - return g_dispatch.hashLong64_secret(input, len, secret, secretLen); + if (XXH_DISPATCH_MAYBE_NULL && XXH_g_dispatch.hashLong64_secret == NULL) + XXH_setDispatch(); + return XXH_g_dispatch.hashLong64_secret(input, len, secret, secretLen); } -XXH64_hash_t XXH3_64bits_withSecret_dispatch(const void* input, size_t len, const void* secret, size_t secretLen) +XXH64_hash_t XXH3_64bits_withSecret_dispatch(XXH_NOESCAPE const void* input, size_t len, XXH_NOESCAPE const void* secret, size_t secretLen) { return XXH3_64bits_internal(input, len, 0, secret, secretLen, XXH3_hashLong_64b_withSecret_selection); } XXH_errorcode -XXH3_64bits_update_dispatch(XXH3_state_t* state, const void* input, size_t len) +XXH3_64bits_update_dispatch(XXH_NOESCAPE XXH3_state_t* state, XXH_NOESCAPE const void* input, size_t len) { - if (g_dispatch.update == NULL) setDispatch(); - return g_dispatch.update(state, (const xxh_u8*)input, len); + if (XXH_DISPATCH_MAYBE_NULL && XXH_g_dispatch.update == NULL) + XXH_setDispatch(); + + return XXH_g_dispatch.update(state, (const xxh_u8*)input, len); } +/*! @endcond */ + /* ==== XXH128 public functions ==== */ +/*! @cond Doxygen ignores this part */ static XXH128_hash_t XXH3_hashLong_128b_defaultSecret_selection(const void* input, size_t len, XXH64_hash_t seed64, const void* secret, size_t secretLen) { (void)seed64; (void)secret; (void)secretLen; - if (g_dispatch128.hashLong128_default == NULL) setDispatch(); - return g_dispatch128.hashLong128_default(input, len); + if (XXH_DISPATCH_MAYBE_NULL && XXH_g_dispatch128.hashLong128_default == NULL) + XXH_setDispatch(); + return XXH_g_dispatch128.hashLong128_default(input, len); } -XXH128_hash_t XXH3_128bits_dispatch(const void* input, size_t len) +XXH128_hash_t XXH3_128bits_dispatch(XXH_NOESCAPE const void* input, size_t len) { return XXH3_128bits_internal(input, len, 0, XXH3_kSecret, sizeof(XXH3_kSecret), XXH3_hashLong_128b_defaultSecret_selection); } static XXH128_hash_t XXH3_hashLong_128b_withSeed_selection(const void* input, size_t len, - XXH64_hash_t seed64, const void* secret, size_t secretLen) + XXH64_hash_t seed64, const void* secret, size_t secretLen) { (void)secret; (void)secretLen; - if (g_dispatch128.hashLong128_seed == NULL) setDispatch(); - return g_dispatch128.hashLong128_seed(input, len, seed64); + if (XXH_DISPATCH_MAYBE_NULL && XXH_g_dispatch128.hashLong128_seed == NULL) + XXH_setDispatch(); + return XXH_g_dispatch128.hashLong128_seed(input, len, seed64); } -XXH128_hash_t XXH3_128bits_withSeed_dispatch(const void* input, size_t len, XXH64_hash_t seed) +XXH128_hash_t XXH3_128bits_withSeed_dispatch(XXH_NOESCAPE const void* input, size_t len, XXH64_hash_t seed) { return XXH3_128bits_internal(input, len, seed, XXH3_kSecret, sizeof(XXH3_kSecret), XXH3_hashLong_128b_withSeed_selection); } @@ -728,22 +795,27 @@ XXH3_hashLong_128b_withSecret_selection(const void* input, size_t len, XXH64_hash_t seed64, const void* secret, size_t secretLen) { (void)seed64; - if (g_dispatch128.hashLong128_secret == NULL) setDispatch(); - return g_dispatch128.hashLong128_secret(input, len, secret, secretLen); + if (XXH_DISPATCH_MAYBE_NULL && XXH_g_dispatch128.hashLong128_secret == NULL) + XXH_setDispatch(); + return XXH_g_dispatch128.hashLong128_secret(input, len, secret, secretLen); } -XXH128_hash_t XXH3_128bits_withSecret_dispatch(const void* input, size_t len, const void* secret, size_t secretLen) +XXH128_hash_t XXH3_128bits_withSecret_dispatch(XXH_NOESCAPE const void* input, size_t len, XXH_NOESCAPE const void* secret, size_t secretLen) { return XXH3_128bits_internal(input, len, 0, secret, secretLen, XXH3_hashLong_128b_withSecret_selection); } XXH_errorcode -XXH3_128bits_update_dispatch(XXH3_state_t* state, const void* input, size_t len) +XXH3_128bits_update_dispatch(XXH_NOESCAPE XXH3_state_t* state, XXH_NOESCAPE const void* input, size_t len) { - if (g_dispatch128.update == NULL) setDispatch(); - return g_dispatch128.update(state, (const xxh_u8*)input, len); + if (XXH_DISPATCH_MAYBE_NULL && XXH_g_dispatch128.update == NULL) + XXH_setDispatch(); + return XXH_g_dispatch128.update(state, (const xxh_u8*)input, len); } +/*! @endcond */ + #if defined (__cplusplus) } #endif +/*! @} */ diff --git a/deps/xxHash/xxh_x86dispatch.h b/deps/xxHash/xxh_x86dispatch.h index 6bc17bcbb..708522157 100644 --- a/deps/xxHash/xxh_x86dispatch.h +++ b/deps/xxHash/xxh_x86dispatch.h @@ -1,6 +1,6 @@ /* * xxHash - XXH3 Dispatcher for x86-based targets - * Copyright (C) 2020 Yann Collet + * Copyright (C) 2020-2024 Yann Collet * * BSD 2-Clause License (https://www.opensource.org/licenses/bsd-license.php) * @@ -41,15 +41,23 @@ extern "C" { #endif -XXH_PUBLIC_API XXH64_hash_t XXH3_64bits_dispatch(const void* input, size_t len); -XXH_PUBLIC_API XXH64_hash_t XXH3_64bits_withSeed_dispatch(const void* input, size_t len, XXH64_hash_t seed); -XXH_PUBLIC_API XXH64_hash_t XXH3_64bits_withSecret_dispatch(const void* input, size_t len, const void* secret, size_t secretLen); -XXH_PUBLIC_API XXH_errorcode XXH3_64bits_update_dispatch(XXH3_state_t* state, const void* input, size_t len); +/*! + * @brief Returns the best XXH3 implementation for x86 + * + * @return The best @ref XXH_VECTOR implementation. + * @see XXH_VECTOR_TYPES + */ +XXH_PUBLIC_API int XXH_featureTest(void); -XXH_PUBLIC_API XXH128_hash_t XXH3_128bits_dispatch(const void* input, size_t len); -XXH_PUBLIC_API XXH128_hash_t XXH3_128bits_withSeed_dispatch(const void* input, size_t len, XXH64_hash_t seed); -XXH_PUBLIC_API XXH128_hash_t XXH3_128bits_withSecret_dispatch(const void* input, size_t len, const void* secret, size_t secretLen); -XXH_PUBLIC_API XXH_errorcode XXH3_128bits_update_dispatch(XXH3_state_t* state, const void* input, size_t len); +XXH_PUBLIC_API XXH64_hash_t XXH3_64bits_dispatch(XXH_NOESCAPE const void* input, size_t len); +XXH_PUBLIC_API XXH64_hash_t XXH3_64bits_withSeed_dispatch(XXH_NOESCAPE const void* input, size_t len, XXH64_hash_t seed); +XXH_PUBLIC_API XXH64_hash_t XXH3_64bits_withSecret_dispatch(XXH_NOESCAPE const void* input, size_t len, XXH_NOESCAPE const void* secret, size_t secretLen); +XXH_PUBLIC_API XXH_errorcode XXH3_64bits_update_dispatch(XXH_NOESCAPE XXH3_state_t* state, XXH_NOESCAPE const void* input, size_t len); + +XXH_PUBLIC_API XXH128_hash_t XXH3_128bits_dispatch(XXH_NOESCAPE const void* input, size_t len); +XXH_PUBLIC_API XXH128_hash_t XXH3_128bits_withSeed_dispatch(XXH_NOESCAPE const void* input, size_t len, XXH64_hash_t seed); +XXH_PUBLIC_API XXH128_hash_t XXH3_128bits_withSecret_dispatch(XXH_NOESCAPE const void* input, size_t len, XXH_NOESCAPE const void* secret, size_t secretLen); +XXH_PUBLIC_API XXH_errorcode XXH3_128bits_update_dispatch(XXH_NOESCAPE XXH3_state_t* state, XXH_NOESCAPE const void* input, size_t len); #if defined (__cplusplus) } @@ -71,7 +79,6 @@ XXH_PUBLIC_API XXH_errorcode XXH3_128bits_update_dispatch(XXH3_state_t* state, c # undef XXH128 # define XXH128 XXH3_128bits_withSeed_dispatch -# define XXH3_128bits XXH3_128bits_dispatch # undef XXH3_128bits # define XXH3_128bits XXH3_128bits_dispatch # undef XXH3_128bits_withSeed diff --git a/deps/xxHash/xxhash.c b/deps/xxHash/xxhash.c index 0fae88c5d..e60cc37f1 100644 --- a/deps/xxHash/xxhash.c +++ b/deps/xxHash/xxhash.c @@ -1,6 +1,6 @@ /* * xxHash - Extremely Fast Hash algorithm - * Copyright (C) 2012-2020 Yann Collet + * Copyright (C) 2012-2023 Yann Collet * * BSD 2-Clause License (https://www.opensource.org/licenses/bsd-license.php) * @@ -32,12 +32,11 @@ * - xxHash source repository: https://github.com/Cyan4973/xxHash */ - /* * xxhash.c instantiates functions defined in xxhash.h */ -#define XXH_STATIC_LINKING_ONLY /* access advanced declarations */ -#define XXH_IMPLEMENTATION /* access definitions */ +#define XXH_STATIC_LINKING_ONLY /* access advanced declarations */ +#define XXH_IMPLEMENTATION /* access definitions */ #include "xxhash.h" diff --git a/deps/xxHash/xxhash.h b/deps/xxHash/xxhash.h index 2d56d23c5..1ad2ddb61 100644 --- a/deps/xxHash/xxhash.h +++ b/deps/xxHash/xxhash.h @@ -1,7 +1,7 @@ /* * xxHash - Extremely Fast Hash algorithm * Header File - * Copyright (C) 2012-2020 Yann Collet + * Copyright (C) 2012-2023 Yann Collet * * BSD 2-Clause License (https://www.opensource.org/licenses/bsd-license.php) * @@ -33,45 +33,215 @@ * - xxHash source repository: https://github.com/Cyan4973/xxHash */ -/* TODO: update */ -/* Notice extracted from xxHash homepage: +/*! + * @mainpage xxHash + * + * xxHash is an extremely fast non-cryptographic hash algorithm, working at RAM speed + * limits. + * + * It is proposed in four flavors, in three families: + * 1. @ref XXH32_family + * - Classic 32-bit hash function. Simple, compact, and runs on almost all + * 32-bit and 64-bit systems. + * 2. @ref XXH64_family + * - Classic 64-bit adaptation of XXH32. Just as simple, and runs well on most + * 64-bit systems (but _not_ 32-bit systems). + * 3. @ref XXH3_family + * - Modern 64-bit and 128-bit hash function family which features improved + * strength and performance across the board, especially on smaller data. + * It benefits greatly from SIMD and 64-bit without requiring it. + * + * Benchmarks + * --- + * The reference system uses an Intel i7-9700K CPU, and runs Ubuntu x64 20.04. + * The open source benchmark program is compiled with clang v10.0 using -O3 flag. + * + * | Hash Name | ISA ext | Width | Large Data Speed | Small Data Velocity | + * | -------------------- | ------- | ----: | ---------------: | ------------------: | + * | XXH3_64bits() | @b AVX2 | 64 | 59.4 GB/s | 133.1 | + * | MeowHash | AES-NI | 128 | 58.2 GB/s | 52.5 | + * | XXH3_128bits() | @b AVX2 | 128 | 57.9 GB/s | 118.1 | + * | CLHash | PCLMUL | 64 | 37.1 GB/s | 58.1 | + * | XXH3_64bits() | @b SSE2 | 64 | 31.5 GB/s | 133.1 | + * | XXH3_128bits() | @b SSE2 | 128 | 29.6 GB/s | 118.1 | + * | RAM sequential read | | N/A | 28.0 GB/s | N/A | + * | ahash | AES-NI | 64 | 22.5 GB/s | 107.2 | + * | City64 | | 64 | 22.0 GB/s | 76.6 | + * | T1ha2 | | 64 | 22.0 GB/s | 99.0 | + * | City128 | | 128 | 21.7 GB/s | 57.7 | + * | FarmHash | AES-NI | 64 | 21.3 GB/s | 71.9 | + * | XXH64() | | 64 | 19.4 GB/s | 71.0 | + * | SpookyHash | | 64 | 19.3 GB/s | 53.2 | + * | Mum | | 64 | 18.0 GB/s | 67.0 | + * | CRC32C | SSE4.2 | 32 | 13.0 GB/s | 57.9 | + * | XXH32() | | 32 | 9.7 GB/s | 71.9 | + * | City32 | | 32 | 9.1 GB/s | 66.0 | + * | Blake3* | @b AVX2 | 256 | 4.4 GB/s | 8.1 | + * | Murmur3 | | 32 | 3.9 GB/s | 56.1 | + * | SipHash* | | 64 | 3.0 GB/s | 43.2 | + * | Blake3* | @b SSE2 | 256 | 2.4 GB/s | 8.1 | + * | HighwayHash | | 64 | 1.4 GB/s | 6.0 | + * | FNV64 | | 64 | 1.2 GB/s | 62.7 | + * | Blake2* | | 256 | 1.1 GB/s | 5.1 | + * | SHA1* | | 160 | 0.8 GB/s | 5.6 | + * | MD5* | | 128 | 0.6 GB/s | 7.8 | + * @note + * - Hashes which require a specific ISA extension are noted. SSE2 is also noted, + * even though it is mandatory on x64. + * - Hashes with an asterisk are cryptographic. Note that MD5 is non-cryptographic + * by modern standards. + * - Small data velocity is a rough average of algorithm's efficiency for small + * data. For more accurate information, see the wiki. + * - More benchmarks and strength tests are found on the wiki: + * https://github.com/Cyan4973/xxHash/wiki + * + * Usage + * ------ + * All xxHash variants use a similar API. Changing the algorithm is a trivial + * substitution. + * + * @pre + * For functions which take an input and length parameter, the following + * requirements are assumed: + * - The range from [`input`, `input + length`) is valid, readable memory. + * - The only exception is if the `length` is `0`, `input` may be `NULL`. + * - For C++, the objects must have the *TriviallyCopyable* property, as the + * functions access bytes directly as if it was an array of `unsigned char`. + * + * @anchor single_shot_example + * **Single Shot** + * + * These functions are stateless functions which hash a contiguous block of memory, + * immediately returning the result. They are the easiest and usually the fastest + * option. + * + * XXH32(), XXH64(), XXH3_64bits(), XXH3_128bits() + * + * @code{.c} + * #include + * #include "xxhash.h" + * + * // Example for a function which hashes a null terminated string with XXH32(). + * XXH32_hash_t hash_string(const char* string, XXH32_hash_t seed) + * { + * // NULL pointers are only valid if the length is zero + * size_t length = (string == NULL) ? 0 : strlen(string); + * return XXH32(string, length, seed); + * } + * @endcode + * + * + * @anchor streaming_example + * **Streaming** + * + * These groups of functions allow incremental hashing of unknown size, even + * more than what would fit in a size_t. + * + * XXH32_reset(), XXH64_reset(), XXH3_64bits_reset(), XXH3_128bits_reset() + * + * @code{.c} + * #include + * #include + * #include "xxhash.h" + * // Example for a function which hashes a FILE incrementally with XXH3_64bits(). + * XXH64_hash_t hashFile(FILE* f) + * { + * // Allocate a state struct. Do not just use malloc() or new. + * XXH3_state_t* state = XXH3_createState(); + * assert(state != NULL && "Out of memory!"); + * // Reset the state to start a new hashing session. + * XXH3_64bits_reset(state); + * char buffer[4096]; + * size_t count; + * // Read the file in chunks + * while ((count = fread(buffer, 1, sizeof(buffer), f)) != 0) { + * // Run update() as many times as necessary to process the data + * XXH3_64bits_update(state, buffer, count); + * } + * // Retrieve the finalized hash. This will not change the state. + * XXH64_hash_t result = XXH3_64bits_digest(state); + * // Free the state. Do not use free(). + * XXH3_freeState(state); + * return result; + * } + * @endcode + * + * Streaming functions generate the xxHash value from an incremental input. + * This method is slower than single-call functions, due to state management. + * For small inputs, prefer `XXH32()` and `XXH64()`, which are better optimized. + * + * An XXH state must first be allocated using `XXH*_createState()`. + * + * Start a new hash by initializing the state with a seed using `XXH*_reset()`. + * + * Then, feed the hash state by calling `XXH*_update()` as many times as necessary. + * + * The function returns an error code, with 0 meaning OK, and any other value + * meaning there is an error. + * + * Finally, a hash value can be produced anytime, by using `XXH*_digest()`. + * This function returns the nn-bits hash as an int or long long. + * + * It's still possible to continue inserting input into the hash state after a + * digest, and generate new hash values later on by invoking `XXH*_digest()`. + * + * When done, release the state using `XXH*_freeState()`. + * + * + * @anchor canonical_representation_example + * **Canonical Representation** + * + * The default return values from XXH functions are unsigned 32, 64 and 128 bit + * integers. + * This the simplest and fastest format for further post-processing. + * + * However, this leaves open the question of what is the order on the byte level, + * since little and big endian conventions will store the same number differently. + * + * The canonical representation settles this issue by mandating big-endian + * convention, the same convention as human-readable numbers (large digits first). + * + * When writing hash values to storage, sending them over a network, or printing + * them, it's highly recommended to use the canonical representation to ensure + * portability across a wider range of systems, present and future. + * + * The following functions allow transformation of hash values to and from + * canonical format. + * + * XXH32_canonicalFromHash(), XXH32_hashFromCanonical(), + * XXH64_canonicalFromHash(), XXH64_hashFromCanonical(), + * XXH128_canonicalFromHash(), XXH128_hashFromCanonical(), + * + * @code{.c} + * #include + * #include "xxhash.h" + * + * // Example for a function which prints XXH32_hash_t in human readable format + * void printXxh32(XXH32_hash_t hash) + * { + * XXH32_canonical_t cano; + * XXH32_canonicalFromHash(&cano, hash); + * size_t i; + * for(i = 0; i < sizeof(cano.digest); ++i) { + * printf("%02x", cano.digest[i]); + * } + * printf("\n"); + * } + * + * // Example for a function which converts XXH32_canonical_t to XXH32_hash_t + * XXH32_hash_t convertCanonicalToXxh32(XXH32_canonical_t cano) + * { + * XXH32_hash_t hash = XXH32_hashFromCanonical(&cano); + * return hash; + * } + * @endcode + * + * + * @file xxhash.h + * xxHash prototypes and implementation + */ -xxHash is an extremely fast hash algorithm, running at RAM speed limits. -It also successfully passes all tests from the SMHasher suite. - -Comparison (single thread, Windows Seven 32 bits, using SMHasher on a Core 2 Duo @3GHz) - -Name Speed Q.Score Author -xxHash 5.4 GB/s 10 -CrapWow 3.2 GB/s 2 Andrew -MumurHash 3a 2.7 GB/s 10 Austin Appleby -SpookyHash 2.0 GB/s 10 Bob Jenkins -SBox 1.4 GB/s 9 Bret Mulvey -Lookup3 1.2 GB/s 9 Bob Jenkins -SuperFastHash 1.2 GB/s 1 Paul Hsieh -CityHash64 1.05 GB/s 10 Pike & Alakuijala -FNV 0.55 GB/s 5 Fowler, Noll, Vo -CRC32 0.43 GB/s 9 -MD5-32 0.33 GB/s 10 Ronald L. Rivest -SHA1-32 0.28 GB/s 10 - -Q.Score is a measure of quality of the hash function. -It depends on successfully passing SMHasher test set. -10 is a perfect score. - -Note: SMHasher's CRC32 implementation is not the fastest one. -Other speed-oriented implementations can be faster, -especially in combination with PCLMUL instruction: -https://fastcompression.blogspot.com/2019/03/presenting-xxh3.html?showComment=1552696407071#c3490092340461170735 - -A 64-bit version, named XXH64, is available since r35. -It offers much better speed, but for 64-bit applications only. -Name Speed on 64 bits Speed on 32 bits -XXH64 13.8 GB/s 1.9 GB/s -XXH32 6.8 GB/s 6.0 GB/s -*/ - -#if defined (__cplusplus) +#if defined(__cplusplus) && !defined(XXH_NO_EXTERNC_GUARD) extern "C" { #endif @@ -79,21 +249,80 @@ extern "C" { * INLINE mode ******************************/ /*! - * XXH_INLINE_ALL (and XXH_PRIVATE_API) + * @defgroup public Public API + * Contains details on the public xxHash functions. + * @{ + */ +#ifdef XXH_DOXYGEN +/*! + * @brief Gives access to internal state declaration, required for static allocation. + * + * Incompatible with dynamic linking, due to risks of ABI changes. + * + * Usage: + * @code{.c} + * #define XXH_STATIC_LINKING_ONLY + * #include "xxhash.h" + * @endcode + */ +# define XXH_STATIC_LINKING_ONLY +/* Do not undef XXH_STATIC_LINKING_ONLY for Doxygen */ + +/*! + * @brief Gives access to internal definitions. + * + * Usage: + * @code{.c} + * #define XXH_STATIC_LINKING_ONLY + * #define XXH_IMPLEMENTATION + * #include "xxhash.h" + * @endcode + */ +# define XXH_IMPLEMENTATION +/* Do not undef XXH_IMPLEMENTATION for Doxygen */ + +/*! + * @brief Exposes the implementation and marks all functions as `inline`. + * * Use these build macros to inline xxhash into the target unit. * Inlining improves performance on small inputs, especially when the length is * expressed as a compile-time constant: * - * https://fastcompression.blogspot.com/2018/03/xxhash-for-small-keys-impressive-power.html + * https://fastcompression.blogspot.com/2018/03/xxhash-for-small-keys-impressive-power.html * * It also keeps xxHash symbols private to the unit, so they are not exported. * * Usage: + * @code{.c} * #define XXH_INLINE_ALL * #include "xxhash.h" - * + * @endcode * Do not compile and link xxhash.o as a separate object, as it is not useful. */ +# define XXH_INLINE_ALL +# undef XXH_INLINE_ALL +/*! + * @brief Exposes the implementation without marking functions as inline. + */ +# define XXH_PRIVATE_API +# undef XXH_PRIVATE_API +/*! + * @brief Emulate a namespace by transparently prefixing all symbols. + * + * If you want to include _and expose_ xxHash functions from within your own + * library, but also want to avoid symbol collisions with other libraries which + * may also include xxHash, you can use @ref XXH_NAMESPACE to automatically prefix + * any public symbol from xxhash library with the value of @ref XXH_NAMESPACE + * (therefore, avoid empty or numeric values). + * + * Note that no change is required within the calling program as long as it + * includes `xxhash.h`: Regular symbol names will be automatically translated + * by this header. + */ +# define XXH_NAMESPACE /* YOUR NAME HERE */ +# undef XXH_NAMESPACE +#endif + #if (defined(XXH_INLINE_ALL) || defined(XXH_PRIVATE_API)) \ && !defined(XXH_INLINE_ALL_31684351384) /* this section should be traversed only once */ @@ -104,7 +333,7 @@ extern "C" { /* make all functions private */ # undef XXH_PUBLIC_API # if defined(__GNUC__) -# define XXH_PUBLIC_API static __inline __attribute__((unused)) +# define XXH_PUBLIC_API static __inline __attribute__((__unused__)) # elif defined (__cplusplus) || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */) # define XXH_PUBLIC_API static inline # elif defined(_MSC_VER) @@ -116,29 +345,80 @@ extern "C" { /* * This part deals with the special case where a unit wants to inline xxHash, - * but "xxhash.h" has previously been included without XXH_INLINE_ALL, such - * as part of some previously included *.h header file. + * but "xxhash.h" has previously been included without XXH_INLINE_ALL, + * such as part of some previously included *.h header file. * Without further action, the new include would just be ignored, * and functions would effectively _not_ be inlined (silent failure). * The following macros solve this situation by prefixing all inlined names, * avoiding naming collision with previous inclusions. */ -# ifdef XXH_NAMESPACE -# error "XXH_INLINE_ALL with XXH_NAMESPACE is not supported" - /* - * Note: Alternative: #undef all symbols (it's a pretty large list). - * Without #error: it compiles, but functions are actually not inlined. - */ -# endif + /* Before that, we unconditionally #undef all symbols, + * in case they were already defined with XXH_NAMESPACE. + * They will then be redefined for XXH_INLINE_ALL + */ +# undef XXH_versionNumber + /* XXH32 */ +# undef XXH32 +# undef XXH32_createState +# undef XXH32_freeState +# undef XXH32_reset +# undef XXH32_update +# undef XXH32_digest +# undef XXH32_copyState +# undef XXH32_canonicalFromHash +# undef XXH32_hashFromCanonical + /* XXH64 */ +# undef XXH64 +# undef XXH64_createState +# undef XXH64_freeState +# undef XXH64_reset +# undef XXH64_update +# undef XXH64_digest +# undef XXH64_copyState +# undef XXH64_canonicalFromHash +# undef XXH64_hashFromCanonical + /* XXH3_64bits */ +# undef XXH3_64bits +# undef XXH3_64bits_withSecret +# undef XXH3_64bits_withSeed +# undef XXH3_64bits_withSecretandSeed +# undef XXH3_createState +# undef XXH3_freeState +# undef XXH3_copyState +# undef XXH3_64bits_reset +# undef XXH3_64bits_reset_withSeed +# undef XXH3_64bits_reset_withSecret +# undef XXH3_64bits_update +# undef XXH3_64bits_digest +# undef XXH3_generateSecret + /* XXH3_128bits */ +# undef XXH128 +# undef XXH3_128bits +# undef XXH3_128bits_withSeed +# undef XXH3_128bits_withSecret +# undef XXH3_128bits_reset +# undef XXH3_128bits_reset_withSeed +# undef XXH3_128bits_reset_withSecret +# undef XXH3_128bits_reset_withSecretandSeed +# undef XXH3_128bits_update +# undef XXH3_128bits_digest +# undef XXH128_isEqual +# undef XXH128_cmp +# undef XXH128_canonicalFromHash +# undef XXH128_hashFromCanonical + /* Finally, free the namespace itself */ +# undef XXH_NAMESPACE + + /* employ the namespace for XXH_INLINE_ALL */ # define XXH_NAMESPACE XXH_INLINE_ /* - * Some identifiers (enums, type names) are not symbols, but they must - * still be renamed to avoid redeclaration. + * Some identifiers (enums, type names) are not symbols, + * but they must nonetheless be renamed to avoid redeclaration. * Alternative solution: do not redeclare them. - * However, this requires some #ifdefs, and is a more dispersed action. - * Meanwhile, renaming can be achieved in a single block + * However, this requires some #ifdefs, and has a more dispersed impact. + * Meanwhile, renaming can be achieved in a single place. */ -# define XXH_IPREF(Id) XXH_INLINE_ ## Id +# define XXH_IPREF(Id) XXH_NAMESPACE ## Id # define XXH_OK XXH_IPREF(XXH_OK) # define XXH_ERROR XXH_IPREF(XXH_ERROR) # define XXH_errorcode XXH_IPREF(XXH_errorcode) @@ -157,17 +437,15 @@ extern "C" { # undef XXHASH_H_STATIC_13879238742 #endif /* XXH_INLINE_ALL || XXH_PRIVATE_API */ - - /* **************************************************************** * Stable API *****************************************************************/ #ifndef XXHASH_H_5627135585666179 #define XXHASH_H_5627135585666179 1 -/* specific declaration modes for Windows */ +/*! @brief Marks a global symbol. */ #if !defined(XXH_INLINE_ALL) && !defined(XXH_PRIVATE_API) -# if defined(WIN32) && defined(_MSC_VER) && (defined(XXH_IMPORT) || defined(XXH_EXPORT)) +# if defined(_WIN32) && defined(_MSC_VER) && (defined(XXH_IMPORT) || defined(XXH_EXPORT)) # ifdef XXH_EXPORT # define XXH_PUBLIC_API __declspec(dllexport) # elif XXH_IMPORT @@ -178,19 +456,6 @@ extern "C" { # endif #endif -/*! - * XXH_NAMESPACE, aka Namespace Emulation: - * - * If you want to include _and expose_ xxHash functions from within your own - * library, but also want to avoid symbol collisions with other libraries which - * may also include xxHash, you can use XXH_NAMESPACE to automatically prefix - * any public symbol from xxhash library with the value of XXH_NAMESPACE - * (therefore, avoid empty or numeric values). - * - * Note that no change is required within the calling program as long as it - * includes `xxhash.h`: Regular symbol names will be automatically translated - * by this header. - */ #ifdef XXH_NAMESPACE # define XXH_CAT(A,B) A##B # define XXH_NAME2(A,B) XXH_CAT(A,B) @@ -219,23 +484,28 @@ extern "C" { # define XXH3_64bits XXH_NAME2(XXH_NAMESPACE, XXH3_64bits) # define XXH3_64bits_withSecret XXH_NAME2(XXH_NAMESPACE, XXH3_64bits_withSecret) # define XXH3_64bits_withSeed XXH_NAME2(XXH_NAMESPACE, XXH3_64bits_withSeed) +# define XXH3_64bits_withSecretandSeed XXH_NAME2(XXH_NAMESPACE, XXH3_64bits_withSecretandSeed) # define XXH3_createState XXH_NAME2(XXH_NAMESPACE, XXH3_createState) # define XXH3_freeState XXH_NAME2(XXH_NAMESPACE, XXH3_freeState) # define XXH3_copyState XXH_NAME2(XXH_NAMESPACE, XXH3_copyState) # define XXH3_64bits_reset XXH_NAME2(XXH_NAMESPACE, XXH3_64bits_reset) # define XXH3_64bits_reset_withSeed XXH_NAME2(XXH_NAMESPACE, XXH3_64bits_reset_withSeed) # define XXH3_64bits_reset_withSecret XXH_NAME2(XXH_NAMESPACE, XXH3_64bits_reset_withSecret) +# define XXH3_64bits_reset_withSecretandSeed XXH_NAME2(XXH_NAMESPACE, XXH3_64bits_reset_withSecretandSeed) # define XXH3_64bits_update XXH_NAME2(XXH_NAMESPACE, XXH3_64bits_update) # define XXH3_64bits_digest XXH_NAME2(XXH_NAMESPACE, XXH3_64bits_digest) # define XXH3_generateSecret XXH_NAME2(XXH_NAMESPACE, XXH3_generateSecret) +# define XXH3_generateSecret_fromSeed XXH_NAME2(XXH_NAMESPACE, XXH3_generateSecret_fromSeed) /* XXH3_128bits */ # define XXH128 XXH_NAME2(XXH_NAMESPACE, XXH128) # define XXH3_128bits XXH_NAME2(XXH_NAMESPACE, XXH3_128bits) # define XXH3_128bits_withSeed XXH_NAME2(XXH_NAMESPACE, XXH3_128bits_withSeed) # define XXH3_128bits_withSecret XXH_NAME2(XXH_NAMESPACE, XXH3_128bits_withSecret) +# define XXH3_128bits_withSecretandSeed XXH_NAME2(XXH_NAMESPACE, XXH3_128bits_withSecretandSeed) # define XXH3_128bits_reset XXH_NAME2(XXH_NAMESPACE, XXH3_128bits_reset) # define XXH3_128bits_reset_withSeed XXH_NAME2(XXH_NAMESPACE, XXH3_128bits_reset_withSeed) # define XXH3_128bits_reset_withSecret XXH_NAME2(XXH_NAMESPACE, XXH3_128bits_reset_withSecret) +# define XXH3_128bits_reset_withSecretandSeed XXH_NAME2(XXH_NAMESPACE, XXH3_128bits_reset_withSecretandSeed) # define XXH3_128bits_update XXH_NAME2(XXH_NAMESPACE, XXH3_128bits_update) # define XXH3_128bits_digest XXH_NAME2(XXH_NAMESPACE, XXH3_128bits_digest) # define XXH128_isEqual XXH_NAME2(XXH_NAMESPACE, XXH128_isEqual) @@ -245,168 +515,555 @@ extern "C" { #endif +/* ************************************* +* Compiler specifics +***************************************/ + +/* specific declaration modes for Windows */ +#if !defined(XXH_INLINE_ALL) && !defined(XXH_PRIVATE_API) +# if defined(_WIN32) && defined(_MSC_VER) && (defined(XXH_IMPORT) || defined(XXH_EXPORT)) +# ifdef XXH_EXPORT +# define XXH_PUBLIC_API __declspec(dllexport) +# elif XXH_IMPORT +# define XXH_PUBLIC_API __declspec(dllimport) +# endif +# else +# define XXH_PUBLIC_API /* do nothing */ +# endif +#endif + +#if defined (__GNUC__) +# define XXH_CONSTF __attribute__((__const__)) +# define XXH_PUREF __attribute__((__pure__)) +# define XXH_MALLOCF __attribute__((__malloc__)) +#else +# define XXH_CONSTF /* disable */ +# define XXH_PUREF +# define XXH_MALLOCF +#endif + /* ************************************* * Version ***************************************/ #define XXH_VERSION_MAJOR 0 #define XXH_VERSION_MINOR 8 -#define XXH_VERSION_RELEASE 0 +#define XXH_VERSION_RELEASE 3 +/*! @brief Version number, encoded as two digits each */ #define XXH_VERSION_NUMBER (XXH_VERSION_MAJOR *100*100 + XXH_VERSION_MINOR *100 + XXH_VERSION_RELEASE) -XXH_PUBLIC_API unsigned XXH_versionNumber (void); + +/*! + * @brief Obtains the xxHash version. + * + * This is mostly useful when xxHash is compiled as a shared library, + * since the returned value comes from the library, as opposed to header file. + * + * @return @ref XXH_VERSION_NUMBER of the invoked library. + */ +XXH_PUBLIC_API XXH_CONSTF unsigned XXH_versionNumber (void); /* **************************** -* Definitions +* Common basic types ******************************/ #include /* size_t */ -typedef enum { XXH_OK=0, XXH_ERROR } XXH_errorcode; +/*! + * @brief Exit code for the streaming API. + */ +typedef enum { + XXH_OK = 0, /*!< OK */ + XXH_ERROR /*!< Error */ +} XXH_errorcode; /*-********************************************************************** * 32-bit hash ************************************************************************/ -#if !defined (__VMS) \ +#if defined(XXH_DOXYGEN) /* Don't show include */ +/*! + * @brief An unsigned 32-bit integer. + * + * Not necessarily defined to `uint32_t` but functionally equivalent. + */ +typedef uint32_t XXH32_hash_t; + +#elif !defined (__VMS) \ && (defined (__cplusplus) \ || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */) ) -# include +# ifdef _AIX +# include +# else +# include +# endif typedef uint32_t XXH32_hash_t; + #else # include # if UINT_MAX == 0xFFFFFFFFUL typedef unsigned int XXH32_hash_t; +# elif ULONG_MAX == 0xFFFFFFFFUL + typedef unsigned long XXH32_hash_t; # else -# if ULONG_MAX == 0xFFFFFFFFUL - typedef unsigned long XXH32_hash_t; -# else -# error "unsupported platform: need a 32-bit type" -# endif +# error "unsupported platform: need a 32-bit type" # endif #endif /*! - * XXH32(): - * Calculate the 32-bit hash of sequence "length" bytes stored at memory address "input". - * The memory between input & input+length must be valid (allocated and read-accessible). - * "seed" can be used to alter the result predictably. - * Speed on Core 2 Duo @ 3 GHz (single thread, SMHasher benchmark): 5.4 GB/s + * @} * - * Note: XXH3 provides competitive speed for both 32-bit and 64-bit systems, - * and offers true 64/128 bit hash results. It provides a superior level of - * dispersion, and greatly reduces the risks of collisions. - */ -XXH_PUBLIC_API XXH32_hash_t XXH32 (const void* input, size_t length, XXH32_hash_t seed); - -/******* Streaming *******/ - -/* - * Streaming functions generate the xxHash value from an incrememtal input. - * This method is slower than single-call functions, due to state management. - * For small inputs, prefer `XXH32()` and `XXH64()`, which are better optimized. + * @defgroup XXH32_family XXH32 family + * @ingroup public + * Contains functions used in the classic 32-bit xxHash algorithm. * - * An XXH state must first be allocated using `XXH*_createState()`. + * @note + * XXH32 is useful for older platforms, with no or poor 64-bit performance. + * Note that the @ref XXH3_family provides competitive speed for both 32-bit + * and 64-bit systems, and offers true 64/128 bit hash results. * - * Start a new hash by initializing the state with a seed using `XXH*_reset()`. - * - * Then, feed the hash state by calling `XXH*_update()` as many times as necessary. - * - * The function returns an error code, with 0 meaning OK, and any other value - * meaning there is an error. - * - * Finally, a hash value can be produced anytime, by using `XXH*_digest()`. - * This function returns the nn-bits hash as an int or long long. - * - * It's still possible to continue inserting input into the hash state after a - * digest, and generate new hash values later on by invoking `XXH*_digest()`. - * - * When done, release the state using `XXH*_freeState()`. + * @see @ref XXH64_family, @ref XXH3_family : Other xxHash families + * @see @ref XXH32_impl for implementation details + * @{ */ -typedef struct XXH32_state_s XXH32_state_t; /* incomplete type */ -XXH_PUBLIC_API XXH32_state_t* XXH32_createState(void); +/*! + * @brief Calculates the 32-bit hash of @p input using xxHash32. + * + * @param input The block of data to be hashed, at least @p length bytes in size. + * @param length The length of @p input, in bytes. + * @param seed The 32-bit seed to alter the hash's output predictably. + * + * @pre + * The memory between @p input and @p input + @p length must be valid, + * readable, contiguous memory. However, if @p length is `0`, @p input may be + * `NULL`. In C++, this also must be *TriviallyCopyable*. + * + * @return The calculated 32-bit xxHash32 value. + * + * @see @ref single_shot_example "Single Shot Example" for an example. + */ +XXH_PUBLIC_API XXH_PUREF XXH32_hash_t XXH32 (const void* input, size_t length, XXH32_hash_t seed); + +#ifndef XXH_NO_STREAM +/*! + * @typedef struct XXH32_state_s XXH32_state_t + * @brief The opaque state struct for the XXH32 streaming API. + * + * @see XXH32_state_s for details. + * @see @ref streaming_example "Streaming Example" + */ +typedef struct XXH32_state_s XXH32_state_t; + +/*! + * @brief Allocates an @ref XXH32_state_t. + * + * @return An allocated pointer of @ref XXH32_state_t on success. + * @return `NULL` on failure. + * + * @note Must be freed with XXH32_freeState(). + * + * @see @ref streaming_example "Streaming Example" + */ +XXH_PUBLIC_API XXH_MALLOCF XXH32_state_t* XXH32_createState(void); +/*! + * @brief Frees an @ref XXH32_state_t. + * + * @param statePtr A pointer to an @ref XXH32_state_t allocated with @ref XXH32_createState(). + * + * @return @ref XXH_OK. + * + * @note @p statePtr must be allocated with XXH32_createState(). + * + * @see @ref streaming_example "Streaming Example" + * + */ XXH_PUBLIC_API XXH_errorcode XXH32_freeState(XXH32_state_t* statePtr); +/*! + * @brief Copies one @ref XXH32_state_t to another. + * + * @param dst_state The state to copy to. + * @param src_state The state to copy from. + * @pre + * @p dst_state and @p src_state must not be `NULL` and must not overlap. + */ XXH_PUBLIC_API void XXH32_copyState(XXH32_state_t* dst_state, const XXH32_state_t* src_state); +/*! + * @brief Resets an @ref XXH32_state_t to begin a new hash. + * + * @param statePtr The state struct to reset. + * @param seed The 32-bit seed to alter the hash result predictably. + * + * @pre + * @p statePtr must not be `NULL`. + * + * @return @ref XXH_OK on success. + * @return @ref XXH_ERROR on failure. + * + * @note This function resets and seeds a state. Call it before @ref XXH32_update(). + * + * @see @ref streaming_example "Streaming Example" + */ XXH_PUBLIC_API XXH_errorcode XXH32_reset (XXH32_state_t* statePtr, XXH32_hash_t seed); + +/*! + * @brief Consumes a block of @p input to an @ref XXH32_state_t. + * + * @param statePtr The state struct to update. + * @param input The block of data to be hashed, at least @p length bytes in size. + * @param length The length of @p input, in bytes. + * + * @pre + * @p statePtr must not be `NULL`. + * @pre + * The memory between @p input and @p input + @p length must be valid, + * readable, contiguous memory. However, if @p length is `0`, @p input may be + * `NULL`. In C++, this also must be *TriviallyCopyable*. + * + * @return @ref XXH_OK on success. + * @return @ref XXH_ERROR on failure. + * + * @note Call this to incrementally consume blocks of data. + * + * @see @ref streaming_example "Streaming Example" + */ XXH_PUBLIC_API XXH_errorcode XXH32_update (XXH32_state_t* statePtr, const void* input, size_t length); -XXH_PUBLIC_API XXH32_hash_t XXH32_digest (const XXH32_state_t* statePtr); + +/*! + * @brief Returns the calculated hash value from an @ref XXH32_state_t. + * + * @param statePtr The state struct to calculate the hash from. + * + * @pre + * @p statePtr must not be `NULL`. + * + * @return The calculated 32-bit xxHash32 value from that state. + * + * @note + * Calling XXH32_digest() will not affect @p statePtr, so you can update, + * digest, and update again. + * + * @see @ref streaming_example "Streaming Example" + */ +XXH_PUBLIC_API XXH_PUREF XXH32_hash_t XXH32_digest (const XXH32_state_t* statePtr); +#endif /* !XXH_NO_STREAM */ /******* Canonical representation *******/ -/* - * The default return values from XXH functions are unsigned 32 and 64 bit - * integers. - * This the simplest and fastest format for further post-processing. - * - * However, this leaves open the question of what is the order on the byte level, - * since little and big endian conventions will store the same number differently. - * - * The canonical representation settles this issue by mandating big-endian - * convention, the same convention as human-readable numbers (large digits first). - * - * When writing hash values to storage, sending them over a network, or printing - * them, it's highly recommended to use the canonical representation to ensure - * portability across a wider range of systems, present and future. - * - * The following functions allow transformation of hash values to and from - * canonical format. +/*! + * @brief Canonical (big endian) representation of @ref XXH32_hash_t. */ +typedef struct { + unsigned char digest[4]; /*!< Hash bytes, big endian */ +} XXH32_canonical_t; -typedef struct { unsigned char digest[4]; } XXH32_canonical_t; +/*! + * @brief Converts an @ref XXH32_hash_t to a big endian @ref XXH32_canonical_t. + * + * @param dst The @ref XXH32_canonical_t pointer to be stored to. + * @param hash The @ref XXH32_hash_t to be converted. + * + * @pre + * @p dst must not be `NULL`. + * + * @see @ref canonical_representation_example "Canonical Representation Example" + */ XXH_PUBLIC_API void XXH32_canonicalFromHash(XXH32_canonical_t* dst, XXH32_hash_t hash); -XXH_PUBLIC_API XXH32_hash_t XXH32_hashFromCanonical(const XXH32_canonical_t* src); +/*! + * @brief Converts an @ref XXH32_canonical_t to a native @ref XXH32_hash_t. + * + * @param src The @ref XXH32_canonical_t to convert. + * + * @pre + * @p src must not be `NULL`. + * + * @return The converted hash. + * + * @see @ref canonical_representation_example "Canonical Representation Example" + */ +XXH_PUBLIC_API XXH_PUREF XXH32_hash_t XXH32_hashFromCanonical(const XXH32_canonical_t* src); + + +/*! @cond Doxygen ignores this part */ +#ifdef __has_attribute +# define XXH_HAS_ATTRIBUTE(x) __has_attribute(x) +#else +# define XXH_HAS_ATTRIBUTE(x) 0 +#endif +/*! @endcond */ + +/*! @cond Doxygen ignores this part */ +/* + * C23 __STDC_VERSION__ number hasn't been specified yet. For now + * leave as `201711L` (C17 + 1). + * TODO: Update to correct value when its been specified. + */ +#define XXH_C23_VN 201711L +/*! @endcond */ + +/*! @cond Doxygen ignores this part */ +/* C-language Attributes are added in C23. */ +#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= XXH_C23_VN) && defined(__has_c_attribute) +# define XXH_HAS_C_ATTRIBUTE(x) __has_c_attribute(x) +#else +# define XXH_HAS_C_ATTRIBUTE(x) 0 +#endif +/*! @endcond */ + +/*! @cond Doxygen ignores this part */ +#if defined(__cplusplus) && defined(__has_cpp_attribute) +# define XXH_HAS_CPP_ATTRIBUTE(x) __has_cpp_attribute(x) +#else +# define XXH_HAS_CPP_ATTRIBUTE(x) 0 +#endif +/*! @endcond */ + +/*! @cond Doxygen ignores this part */ +/* + * Define XXH_FALLTHROUGH macro for annotating switch case with the 'fallthrough' attribute + * introduced in CPP17 and C23. + * CPP17 : https://en.cppreference.com/w/cpp/language/attributes/fallthrough + * C23 : https://en.cppreference.com/w/c/language/attributes/fallthrough + */ +#if XXH_HAS_C_ATTRIBUTE(fallthrough) || XXH_HAS_CPP_ATTRIBUTE(fallthrough) +# define XXH_FALLTHROUGH [[fallthrough]] +#elif XXH_HAS_ATTRIBUTE(__fallthrough__) +# define XXH_FALLTHROUGH __attribute__ ((__fallthrough__)) +#else +# define XXH_FALLTHROUGH /* fallthrough */ +#endif +/*! @endcond */ + +/*! @cond Doxygen ignores this part */ +/* + * Define XXH_NOESCAPE for annotated pointers in public API. + * https://clang.llvm.org/docs/AttributeReference.html#noescape + * As of writing this, only supported by clang. + */ +#if XXH_HAS_ATTRIBUTE(noescape) +# define XXH_NOESCAPE __attribute__((__noescape__)) +#else +# define XXH_NOESCAPE +#endif +/*! @endcond */ + + +/*! + * @} + * @ingroup public + * @{ + */ #ifndef XXH_NO_LONG_LONG /*-********************************************************************** * 64-bit hash ************************************************************************/ -#if !defined (__VMS) \ +#if defined(XXH_DOXYGEN) /* don't include */ +/*! + * @brief An unsigned 64-bit integer. + * + * Not necessarily defined to `uint64_t` but functionally equivalent. + */ +typedef uint64_t XXH64_hash_t; +#elif !defined (__VMS) \ && (defined (__cplusplus) \ || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */) ) -# include - typedef uint64_t XXH64_hash_t; +# ifdef _AIX +# include +# else +# include +# endif + typedef uint64_t XXH64_hash_t; #else - /* the following type must have a width of 64-bit */ - typedef unsigned long long XXH64_hash_t; +# include +# if defined(__LP64__) && ULONG_MAX == 0xFFFFFFFFFFFFFFFFULL + /* LP64 ABI says uint64_t is unsigned long */ + typedef unsigned long XXH64_hash_t; +# else + /* the following type must have a width of 64-bit */ + typedef unsigned long long XXH64_hash_t; +# endif #endif /*! - * XXH64(): - * Returns the 64-bit hash of sequence of length @length stored at memory - * address @input. - * @seed can be used to alter the result predictably. + * @} * - * This function usually runs faster on 64-bit systems, but slower on 32-bit - * systems (see benchmark). + * @defgroup XXH64_family XXH64 family + * @ingroup public + * @{ + * Contains functions used in the classic 64-bit xxHash algorithm. * - * Note: XXH3 provides competitive speed for both 32-bit and 64-bit systems, - * and offers true 64/128 bit hash results. It provides a superior level of - * dispersion, and greatly reduces the risks of collisions. + * @note + * XXH3 provides competitive speed for both 32-bit and 64-bit systems, + * and offers true 64/128 bit hash results. + * It provides better speed for systems with vector processing capabilities. */ -XXH_PUBLIC_API XXH64_hash_t XXH64 (const void* input, size_t length, XXH64_hash_t seed); + +/*! + * @brief Calculates the 64-bit hash of @p input using xxHash64. + * + * @param input The block of data to be hashed, at least @p length bytes in size. + * @param length The length of @p input, in bytes. + * @param seed The 64-bit seed to alter the hash's output predictably. + * + * @pre + * The memory between @p input and @p input + @p length must be valid, + * readable, contiguous memory. However, if @p length is `0`, @p input may be + * `NULL`. In C++, this also must be *TriviallyCopyable*. + * + * @return The calculated 64-bit xxHash64 value. + * + * @see @ref single_shot_example "Single Shot Example" for an example. + */ +XXH_PUBLIC_API XXH_PUREF XXH64_hash_t XXH64(XXH_NOESCAPE const void* input, size_t length, XXH64_hash_t seed); /******* Streaming *******/ +#ifndef XXH_NO_STREAM +/*! + * @brief The opaque state struct for the XXH64 streaming API. + * + * @see XXH64_state_s for details. + * @see @ref streaming_example "Streaming Example" + */ typedef struct XXH64_state_s XXH64_state_t; /* incomplete type */ -XXH_PUBLIC_API XXH64_state_t* XXH64_createState(void); + +/*! + * @brief Allocates an @ref XXH64_state_t. + * + * @return An allocated pointer of @ref XXH64_state_t on success. + * @return `NULL` on failure. + * + * @note Must be freed with XXH64_freeState(). + * + * @see @ref streaming_example "Streaming Example" + */ +XXH_PUBLIC_API XXH_MALLOCF XXH64_state_t* XXH64_createState(void); + +/*! + * @brief Frees an @ref XXH64_state_t. + * + * @param statePtr A pointer to an @ref XXH64_state_t allocated with @ref XXH64_createState(). + * + * @return @ref XXH_OK. + * + * @note @p statePtr must be allocated with XXH64_createState(). + * + * @see @ref streaming_example "Streaming Example" + */ XXH_PUBLIC_API XXH_errorcode XXH64_freeState(XXH64_state_t* statePtr); -XXH_PUBLIC_API void XXH64_copyState(XXH64_state_t* dst_state, const XXH64_state_t* src_state); -XXH_PUBLIC_API XXH_errorcode XXH64_reset (XXH64_state_t* statePtr, XXH64_hash_t seed); -XXH_PUBLIC_API XXH_errorcode XXH64_update (XXH64_state_t* statePtr, const void* input, size_t length); -XXH_PUBLIC_API XXH64_hash_t XXH64_digest (const XXH64_state_t* statePtr); +/*! + * @brief Copies one @ref XXH64_state_t to another. + * + * @param dst_state The state to copy to. + * @param src_state The state to copy from. + * @pre + * @p dst_state and @p src_state must not be `NULL` and must not overlap. + */ +XXH_PUBLIC_API void XXH64_copyState(XXH_NOESCAPE XXH64_state_t* dst_state, const XXH64_state_t* src_state); +/*! + * @brief Resets an @ref XXH64_state_t to begin a new hash. + * + * @param statePtr The state struct to reset. + * @param seed The 64-bit seed to alter the hash result predictably. + * + * @pre + * @p statePtr must not be `NULL`. + * + * @return @ref XXH_OK on success. + * @return @ref XXH_ERROR on failure. + * + * @note This function resets and seeds a state. Call it before @ref XXH64_update(). + * + * @see @ref streaming_example "Streaming Example" + */ +XXH_PUBLIC_API XXH_errorcode XXH64_reset (XXH_NOESCAPE XXH64_state_t* statePtr, XXH64_hash_t seed); + +/*! + * @brief Consumes a block of @p input to an @ref XXH64_state_t. + * + * @param statePtr The state struct to update. + * @param input The block of data to be hashed, at least @p length bytes in size. + * @param length The length of @p input, in bytes. + * + * @pre + * @p statePtr must not be `NULL`. + * @pre + * The memory between @p input and @p input + @p length must be valid, + * readable, contiguous memory. However, if @p length is `0`, @p input may be + * `NULL`. In C++, this also must be *TriviallyCopyable*. + * + * @return @ref XXH_OK on success. + * @return @ref XXH_ERROR on failure. + * + * @note Call this to incrementally consume blocks of data. + * + * @see @ref streaming_example "Streaming Example" + */ +XXH_PUBLIC_API XXH_errorcode XXH64_update (XXH_NOESCAPE XXH64_state_t* statePtr, XXH_NOESCAPE const void* input, size_t length); + +/*! + * @brief Returns the calculated hash value from an @ref XXH64_state_t. + * + * @param statePtr The state struct to calculate the hash from. + * + * @pre + * @p statePtr must not be `NULL`. + * + * @return The calculated 64-bit xxHash64 value from that state. + * + * @note + * Calling XXH64_digest() will not affect @p statePtr, so you can update, + * digest, and update again. + * + * @see @ref streaming_example "Streaming Example" + */ +XXH_PUBLIC_API XXH_PUREF XXH64_hash_t XXH64_digest (XXH_NOESCAPE const XXH64_state_t* statePtr); +#endif /* !XXH_NO_STREAM */ /******* Canonical representation *******/ + +/*! + * @brief Canonical (big endian) representation of @ref XXH64_hash_t. + */ typedef struct { unsigned char digest[sizeof(XXH64_hash_t)]; } XXH64_canonical_t; -XXH_PUBLIC_API void XXH64_canonicalFromHash(XXH64_canonical_t* dst, XXH64_hash_t hash); -XXH_PUBLIC_API XXH64_hash_t XXH64_hashFromCanonical(const XXH64_canonical_t* src); +/*! + * @brief Converts an @ref XXH64_hash_t to a big endian @ref XXH64_canonical_t. + * + * @param dst The @ref XXH64_canonical_t pointer to be stored to. + * @param hash The @ref XXH64_hash_t to be converted. + * + * @pre + * @p dst must not be `NULL`. + * + * @see @ref canonical_representation_example "Canonical Representation Example" + */ +XXH_PUBLIC_API void XXH64_canonicalFromHash(XXH_NOESCAPE XXH64_canonical_t* dst, XXH64_hash_t hash); -/*-********************************************************************** -* XXH3 64-bit variant -************************************************************************/ +/*! + * @brief Converts an @ref XXH64_canonical_t to a native @ref XXH64_hash_t. + * + * @param src The @ref XXH64_canonical_t to convert. + * + * @pre + * @p src must not be `NULL`. + * + * @return The converted hash. + * + * @see @ref canonical_representation_example "Canonical Representation Example" + */ +XXH_PUBLIC_API XXH_PUREF XXH64_hash_t XXH64_hashFromCanonical(XXH_NOESCAPE const XXH64_canonical_t* src); -/* ************************************************************************ - * XXH3 is a new hash algorithm featuring: +#ifndef XXH_NO_XXH3 + +/*! + * @} + * ************************************************************************ + * @defgroup XXH3_family XXH3 family + * @ingroup public + * @{ + * + * XXH3 is a more recent hash algorithm featuring: * - Improved speed for both small and large inputs * - True 64-bit and 128-bit outputs * - SIMD acceleration @@ -416,114 +1073,298 @@ XXH_PUBLIC_API XXH64_hash_t XXH64_hashFromCanonical(const XXH64_canonical_t* src * * https://fastcompression.blogspot.com/2019/03/presenting-xxh3.html * - * In general, expect XXH3 to run about ~2x faster on large inputs and >3x - * faster on small ones compared to XXH64, though exact differences depend on - * the platform. + * Compared to XXH64, expect XXH3 to run approximately + * ~2x faster on large inputs and >3x faster on small ones, + * exact differences vary depending on platform. * - * The algorithm is portable: Like XXH32 and XXH64, it generates the same hash - * on all platforms. - * - * It benefits greatly from SIMD and 64-bit arithmetic, but does not require it. - * - * Almost all 32-bit and 64-bit targets that can run XXH32 smoothly can run - * XXH3 at competitive speeds, even if XXH64 runs slowly. Further details are + * XXH3's speed benefits greatly from SIMD and 64-bit arithmetic, + * but does not require it. + * Most 32-bit and 64-bit targets that can run XXH32 smoothly can run XXH3 + * at competitive speeds, even without vector support. Further details are * explained in the implementation. * - * Optimized implementations are provided for AVX512, AVX2, SSE2, NEON, POWER8, - * ZVector and scalar targets. This can be controlled with the XXH_VECTOR macro. + * XXH3 has a fast scalar implementation, but it also includes accelerated SIMD + * implementations for many common platforms: + * - AVX512 + * - AVX2 + * - SSE2 + * - ARM NEON + * - WebAssembly SIMD128 + * - POWER8 VSX + * - s390x ZVector + * This can be controlled via the @ref XXH_VECTOR macro, but it automatically + * selects the best version according to predefined macros. For the x86 family, an + * automatic runtime dispatcher is included separately in @ref xxh_x86dispatch.c. + * + * XXH3 implementation is portable: + * it has a generic C90 formulation that can be compiled on any platform, + * all implementations generate exactly the same hash value on all platforms. + * Starting from v0.8.0, it's also labelled "stable", meaning that + * any future version will also generate the same hash value. * * XXH3 offers 2 variants, _64bits and _128bits. - * When only 64 bits are needed, prefer calling the _64bits variant, as it + * + * When only 64 bits are needed, prefer invoking the _64bits variant, as it * reduces the amount of mixing, resulting in faster speed on small inputs. - * * It's also generally simpler to manipulate a scalar return type than a struct. * - * The 128-bit version adds additional strength, but it is slightly slower. - * - * The XXH3 algorithm is still in development. - * The results it produces may still change in future versions. - * - * Results produced by v0.7.x are not comparable with results from v0.7.y. - * However, the API is completely stable, and it can safely be used for - * ephemeral data (local sessions). - * - * Avoid storing values in long-term storage until the algorithm is finalized. - * XXH3's return values will be officially finalized upon reaching v0.8.0. - * - * After which, return values of XXH3 and XXH128 will no longer change in - * future versions. - * * The API supports one-shot hashing, streaming mode, and custom secrets. */ -/* XXH3_64bits(): - * default 64-bit variant, using default secret and default seed of 0. - * It's the fastest variant. */ -XXH_PUBLIC_API XXH64_hash_t XXH3_64bits(const void* data, size_t len); - -/* - * XXH3_64bits_withSeed(): - * This variant generates a custom secret on the fly - * based on default secret altered using the `seed` value. - * While this operation is decently fast, note that it's not completely free. - * Note: seed==0 produces the same results as XXH3_64bits(). +/*! + * @ingroup tuning + * @brief Possible values for @ref XXH_VECTOR. + * + * Unless set explicitly, determined automatically. */ -XXH_PUBLIC_API XXH64_hash_t XXH3_64bits_withSeed(const void* data, size_t len, XXH64_hash_t seed); +# define XXH_SCALAR 0 /*!< Portable scalar version */ +# define XXH_SSE2 1 /*!< SSE2 for Pentium 4, Opteron, all x86_64. */ +# define XXH_AVX2 2 /*!< AVX2 for Haswell and Bulldozer */ +# define XXH_AVX512 3 /*!< AVX512 for Skylake and Icelake */ +# define XXH_NEON 4 /*!< NEON for most ARMv7-A, all AArch64, and WASM SIMD128 */ +# define XXH_VSX 5 /*!< VSX and ZVector for POWER8/z13 (64-bit) */ +# define XXH_SVE 6 /*!< SVE for some ARMv8-A and ARMv9-A */ +# define XXH_LSX 7 /*!< LSX (128-bit SIMD) for LoongArch64 */ +# define XXH_LASX 8 /*!< LASX (256-bit SIMD) for LoongArch64 */ -/* - * XXH3_64bits_withSecret(): - * It's possible to provide any blob of bytes as a "secret" to generate the hash. - * This makes it more difficult for an external actor to prepare an intentional collision. - * The main condition is that secretSize *must* be large enough (>= XXH3_SECRET_SIZE_MIN). - * However, the quality of produced hash values depends on secret's entropy. - * Technically, the secret must look like a bunch of random bytes. - * Avoid "trivial" or structured data such as repeated sequences or a text document. - * Whenever unsure about the "randomness" of the blob of bytes, - * consider relabelling it as a "custom seed" instead, - * and employ "XXH3_generateSecret()" (see below) - * to generate a high entropy secret derived from the custom seed. + +/*-********************************************************************** +* XXH3 64-bit variant +************************************************************************/ + +/*! + * @brief Calculates 64-bit unseeded variant of XXH3 hash of @p input. + * + * @param input The block of data to be hashed, at least @p length bytes in size. + * @param length The length of @p input, in bytes. + * + * @pre + * The memory between @p input and @p input + @p length must be valid, + * readable, contiguous memory. However, if @p length is `0`, @p input may be + * `NULL`. In C++, this also must be *TriviallyCopyable*. + * + * @return The calculated 64-bit XXH3 hash value. + * + * @note + * This is equivalent to @ref XXH3_64bits_withSeed() with a seed of `0`, however + * it may have slightly better performance due to constant propagation of the + * defaults. + * + * @see + * XXH3_64bits_withSeed(), XXH3_64bits_withSecret(): other seeding variants + * @see @ref single_shot_example "Single Shot Example" for an example. + */ +XXH_PUBLIC_API XXH_PUREF XXH64_hash_t XXH3_64bits(XXH_NOESCAPE const void* input, size_t length); + +/*! + * @brief Calculates 64-bit seeded variant of XXH3 hash of @p input. + * + * @param input The block of data to be hashed, at least @p length bytes in size. + * @param length The length of @p input, in bytes. + * @param seed The 64-bit seed to alter the hash result predictably. + * + * @pre + * The memory between @p input and @p input + @p length must be valid, + * readable, contiguous memory. However, if @p length is `0`, @p input may be + * `NULL`. In C++, this also must be *TriviallyCopyable*. + * + * @return The calculated 64-bit XXH3 hash value. + * + * @note + * seed == 0 produces the same results as @ref XXH3_64bits(). + * + * This variant generates a custom secret on the fly based on default secret + * altered using the @p seed value. + * + * While this operation is decently fast, note that it's not completely free. + * + * @see @ref single_shot_example "Single Shot Example" for an example. + */ +XXH_PUBLIC_API XXH_PUREF XXH64_hash_t XXH3_64bits_withSeed(XXH_NOESCAPE const void* input, size_t length, XXH64_hash_t seed); + +/*! + * The bare minimum size for a custom secret. + * + * @see + * XXH3_64bits_withSecret(), XXH3_64bits_reset_withSecret(), + * XXH3_128bits_withSecret(), XXH3_128bits_reset_withSecret(). */ #define XXH3_SECRET_SIZE_MIN 136 -XXH_PUBLIC_API XXH64_hash_t XXH3_64bits_withSecret(const void* data, size_t len, const void* secret, size_t secretSize); + +/*! + * @brief Calculates 64-bit variant of XXH3 with a custom "secret". + * + * @param data The block of data to be hashed, at least @p len bytes in size. + * @param len The length of @p data, in bytes. + * @param secret The secret data. + * @param secretSize The length of @p secret, in bytes. + * + * @return The calculated 64-bit XXH3 hash value. + * + * @pre + * The memory between @p data and @p data + @p len must be valid, + * readable, contiguous memory. However, if @p length is `0`, @p data may be + * `NULL`. In C++, this also must be *TriviallyCopyable*. + * + * It's possible to provide any blob of bytes as a "secret" to generate the hash. + * This makes it more difficult for an external actor to prepare an intentional collision. + * The main condition is that @p secretSize *must* be large enough (>= @ref XXH3_SECRET_SIZE_MIN). + * However, the quality of the secret impacts the dispersion of the hash algorithm. + * Therefore, the secret _must_ look like a bunch of random bytes. + * Avoid "trivial" or structured data such as repeated sequences or a text document. + * Whenever in doubt about the "randomness" of the blob of bytes, + * consider employing @ref XXH3_generateSecret() instead (see below). + * It will generate a proper high entropy secret derived from the blob of bytes. + * Another advantage of using XXH3_generateSecret() is that + * it guarantees that all bits within the initial blob of bytes + * will impact every bit of the output. + * This is not necessarily the case when using the blob of bytes directly + * because, when hashing _small_ inputs, only a portion of the secret is employed. + * + * @see @ref single_shot_example "Single Shot Example" for an example. + */ +XXH_PUBLIC_API XXH_PUREF XXH64_hash_t XXH3_64bits_withSecret(XXH_NOESCAPE const void* data, size_t len, XXH_NOESCAPE const void* secret, size_t secretSize); /******* Streaming *******/ +#ifndef XXH_NO_STREAM /* * Streaming requires state maintenance. * This operation costs memory and CPU. * As a consequence, streaming is slower than one-shot hashing. * For better performance, prefer one-shot functions whenever applicable. */ -typedef struct XXH3_state_s XXH3_state_t; -XXH_PUBLIC_API XXH3_state_t* XXH3_createState(void); -XXH_PUBLIC_API XXH_errorcode XXH3_freeState(XXH3_state_t* statePtr); -XXH_PUBLIC_API void XXH3_copyState(XXH3_state_t* dst_state, const XXH3_state_t* src_state); -/* - * XXH3_64bits_reset(): - * Initialize with default parameters. - * digest will be equivalent to `XXH3_64bits()`. +/*! + * @brief The opaque state struct for the XXH3 streaming API. + * + * @see XXH3_state_s for details. + * @see @ref streaming_example "Streaming Example" */ -XXH_PUBLIC_API XXH_errorcode XXH3_64bits_reset(XXH3_state_t* statePtr); -/* - * XXH3_64bits_reset_withSeed(): - * Generate a custom secret from `seed`, and store it into `statePtr`. - * digest will be equivalent to `XXH3_64bits_withSeed()`. +typedef struct XXH3_state_s XXH3_state_t; +XXH_PUBLIC_API XXH_MALLOCF XXH3_state_t* XXH3_createState(void); +XXH_PUBLIC_API XXH_errorcode XXH3_freeState(XXH3_state_t* statePtr); + +/*! + * @brief Copies one @ref XXH3_state_t to another. + * + * @param dst_state The state to copy to. + * @param src_state The state to copy from. + * @pre + * @p dst_state and @p src_state must not be `NULL` and must not overlap. */ -XXH_PUBLIC_API XXH_errorcode XXH3_64bits_reset_withSeed(XXH3_state_t* statePtr, XXH64_hash_t seed); -/* - * XXH3_64bits_reset_withSecret(): - * `secret` is referenced, it _must outlive_ the hash streaming session. - * Similar to one-shot API, `secretSize` must be >= `XXH3_SECRET_SIZE_MIN`, +XXH_PUBLIC_API void XXH3_copyState(XXH_NOESCAPE XXH3_state_t* dst_state, XXH_NOESCAPE const XXH3_state_t* src_state); + +/*! + * @brief Resets an @ref XXH3_state_t to begin a new hash. + * + * @param statePtr The state struct to reset. + * + * @pre + * @p statePtr must not be `NULL`. + * + * @return @ref XXH_OK on success. + * @return @ref XXH_ERROR on failure. + * + * @note + * - This function resets `statePtr` and generate a secret with default parameters. + * - Call this function before @ref XXH3_64bits_update(). + * - Digest will be equivalent to `XXH3_64bits()`. + * + * @see @ref streaming_example "Streaming Example" + * + */ +XXH_PUBLIC_API XXH_errorcode XXH3_64bits_reset(XXH_NOESCAPE XXH3_state_t* statePtr); + +/*! + * @brief Resets an @ref XXH3_state_t with 64-bit seed to begin a new hash. + * + * @param statePtr The state struct to reset. + * @param seed The 64-bit seed to alter the hash result predictably. + * + * @pre + * @p statePtr must not be `NULL`. + * + * @return @ref XXH_OK on success. + * @return @ref XXH_ERROR on failure. + * + * @note + * - This function resets `statePtr` and generate a secret from `seed`. + * - Call this function before @ref XXH3_64bits_update(). + * - Digest will be equivalent to `XXH3_64bits_withSeed()`. + * + * @see @ref streaming_example "Streaming Example" + * + */ +XXH_PUBLIC_API XXH_errorcode XXH3_64bits_reset_withSeed(XXH_NOESCAPE XXH3_state_t* statePtr, XXH64_hash_t seed); + +/*! + * @brief Resets an @ref XXH3_state_t with secret data to begin a new hash. + * + * @param statePtr The state struct to reset. + * @param secret The secret data. + * @param secretSize The length of @p secret, in bytes. + * + * @pre + * @p statePtr must not be `NULL`. + * + * @return @ref XXH_OK on success. + * @return @ref XXH_ERROR on failure. + * + * @note + * `secret` is referenced, it _must outlive_ the hash streaming session. + * + * Similar to one-shot API, `secretSize` must be >= @ref XXH3_SECRET_SIZE_MIN, * and the quality of produced hash values depends on secret's entropy * (secret's content should look like a bunch of random bytes). * When in doubt about the randomness of a candidate `secret`, * consider employing `XXH3_generateSecret()` instead (see below). + * + * @see @ref streaming_example "Streaming Example" */ -XXH_PUBLIC_API XXH_errorcode XXH3_64bits_reset_withSecret(XXH3_state_t* statePtr, const void* secret, size_t secretSize); +XXH_PUBLIC_API XXH_errorcode XXH3_64bits_reset_withSecret(XXH_NOESCAPE XXH3_state_t* statePtr, XXH_NOESCAPE const void* secret, size_t secretSize); -XXH_PUBLIC_API XXH_errorcode XXH3_64bits_update (XXH3_state_t* statePtr, const void* input, size_t length); -XXH_PUBLIC_API XXH64_hash_t XXH3_64bits_digest (const XXH3_state_t* statePtr); +/*! + * @brief Consumes a block of @p input to an @ref XXH3_state_t. + * + * @param statePtr The state struct to update. + * @param input The block of data to be hashed, at least @p length bytes in size. + * @param length The length of @p input, in bytes. + * + * @pre + * @p statePtr must not be `NULL`. + * @pre + * The memory between @p input and @p input + @p length must be valid, + * readable, contiguous memory. However, if @p length is `0`, @p input may be + * `NULL`. In C++, this also must be *TriviallyCopyable*. + * + * @return @ref XXH_OK on success. + * @return @ref XXH_ERROR on failure. + * + * @note Call this to incrementally consume blocks of data. + * + * @see @ref streaming_example "Streaming Example" + */ +XXH_PUBLIC_API XXH_errorcode XXH3_64bits_update (XXH_NOESCAPE XXH3_state_t* statePtr, XXH_NOESCAPE const void* input, size_t length); + +/*! + * @brief Returns the calculated XXH3 64-bit hash value from an @ref XXH3_state_t. + * + * @param statePtr The state struct to calculate the hash from. + * + * @pre + * @p statePtr must not be `NULL`. + * + * @return The calculated XXH3 64-bit hash value from that state. + * + * @note + * Calling XXH3_64bits_digest() will not affect @p statePtr, so you can update, + * digest, and update again. + * + * @see @ref streaming_example "Streaming Example" + */ +XXH_PUBLIC_API XXH_PUREF XXH64_hash_t XXH3_64bits_digest (XXH_NOESCAPE const XXH3_state_t* statePtr); +#endif /* !XXH_NO_STREAM */ /* note : canonical representation of XXH3 is the same as XXH64 * since they both produce XXH64_hash_t values */ @@ -533,16 +1374,87 @@ XXH_PUBLIC_API XXH64_hash_t XXH3_64bits_digest (const XXH3_state_t* statePtr); * XXH3 128-bit variant ************************************************************************/ +/*! + * @brief The return value from 128-bit hashes. + * + * Stored in little endian order, although the fields themselves are in native + * endianness. + */ typedef struct { - XXH64_hash_t low64; - XXH64_hash_t high64; + XXH64_hash_t low64; /*!< `value & 0xFFFFFFFFFFFFFFFF` */ + XXH64_hash_t high64; /*!< `value >> 64` */ } XXH128_hash_t; -XXH_PUBLIC_API XXH128_hash_t XXH3_128bits(const void* data, size_t len); -XXH_PUBLIC_API XXH128_hash_t XXH3_128bits_withSeed(const void* data, size_t len, XXH64_hash_t seed); -XXH_PUBLIC_API XXH128_hash_t XXH3_128bits_withSecret(const void* data, size_t len, const void* secret, size_t secretSize); +/*! + * @brief Calculates 128-bit unseeded variant of XXH3 of @p data. + * + * @param data The block of data to be hashed, at least @p length bytes in size. + * @param len The length of @p data, in bytes. + * + * @return The calculated 128-bit variant of XXH3 value. + * + * The 128-bit variant of XXH3 has more strength, but it has a bit of overhead + * for shorter inputs. + * + * This is equivalent to @ref XXH3_128bits_withSeed() with a seed of `0`, however + * it may have slightly better performance due to constant propagation of the + * defaults. + * + * @see XXH3_128bits_withSeed(), XXH3_128bits_withSecret(): other seeding variants + * @see @ref single_shot_example "Single Shot Example" for an example. + */ +XXH_PUBLIC_API XXH_PUREF XXH128_hash_t XXH3_128bits(XXH_NOESCAPE const void* data, size_t len); +/*! @brief Calculates 128-bit seeded variant of XXH3 hash of @p data. + * + * @param data The block of data to be hashed, at least @p length bytes in size. + * @param len The length of @p data, in bytes. + * @param seed The 64-bit seed to alter the hash result predictably. + * + * @return The calculated 128-bit variant of XXH3 value. + * + * @note + * seed == 0 produces the same results as @ref XXH3_64bits(). + * + * This variant generates a custom secret on the fly based on default secret + * altered using the @p seed value. + * + * While this operation is decently fast, note that it's not completely free. + * + * @see XXH3_128bits(), XXH3_128bits_withSecret(): other seeding variants + * @see @ref single_shot_example "Single Shot Example" for an example. + */ +XXH_PUBLIC_API XXH_PUREF XXH128_hash_t XXH3_128bits_withSeed(XXH_NOESCAPE const void* data, size_t len, XXH64_hash_t seed); +/*! + * @brief Calculates 128-bit variant of XXH3 with a custom "secret". + * + * @param data The block of data to be hashed, at least @p len bytes in size. + * @param len The length of @p data, in bytes. + * @param secret The secret data. + * @param secretSize The length of @p secret, in bytes. + * + * @return The calculated 128-bit variant of XXH3 value. + * + * It's possible to provide any blob of bytes as a "secret" to generate the hash. + * This makes it more difficult for an external actor to prepare an intentional collision. + * The main condition is that @p secretSize *must* be large enough (>= @ref XXH3_SECRET_SIZE_MIN). + * However, the quality of the secret impacts the dispersion of the hash algorithm. + * Therefore, the secret _must_ look like a bunch of random bytes. + * Avoid "trivial" or structured data such as repeated sequences or a text document. + * Whenever in doubt about the "randomness" of the blob of bytes, + * consider employing @ref XXH3_generateSecret() instead (see below). + * It will generate a proper high entropy secret derived from the blob of bytes. + * Another advantage of using XXH3_generateSecret() is that + * it guarantees that all bits within the initial blob of bytes + * will impact every bit of the output. + * This is not necessarily the case when using the blob of bytes directly + * because, when hashing _small_ inputs, only a portion of the secret is employed. + * + * @see @ref single_shot_example "Single Shot Example" for an example. + */ +XXH_PUBLIC_API XXH_PUREF XXH128_hash_t XXH3_128bits_withSecret(XXH_NOESCAPE const void* data, size_t len, XXH_NOESCAPE const void* secret, size_t secretSize); /******* Streaming *******/ +#ifndef XXH_NO_STREAM /* * Streaming requires state maintenance. * This operation costs memory and CPU. @@ -555,43 +1467,177 @@ XXH_PUBLIC_API XXH128_hash_t XXH3_128bits_withSecret(const void* data, size_t le * All reset and streaming functions have same meaning as their 64-bit counterpart. */ -XXH_PUBLIC_API XXH_errorcode XXH3_128bits_reset(XXH3_state_t* statePtr); -XXH_PUBLIC_API XXH_errorcode XXH3_128bits_reset_withSeed(XXH3_state_t* statePtr, XXH64_hash_t seed); -XXH_PUBLIC_API XXH_errorcode XXH3_128bits_reset_withSecret(XXH3_state_t* statePtr, const void* secret, size_t secretSize); +/*! + * @brief Resets an @ref XXH3_state_t to begin a new hash. + * + * @param statePtr The state struct to reset. + * + * @pre + * @p statePtr must not be `NULL`. + * + * @return @ref XXH_OK on success. + * @return @ref XXH_ERROR on failure. + * + * @note + * - This function resets `statePtr` and generate a secret with default parameters. + * - Call it before @ref XXH3_128bits_update(). + * - Digest will be equivalent to `XXH3_128bits()`. + * + * @see @ref streaming_example "Streaming Example" + */ +XXH_PUBLIC_API XXH_errorcode XXH3_128bits_reset(XXH_NOESCAPE XXH3_state_t* statePtr); -XXH_PUBLIC_API XXH_errorcode XXH3_128bits_update (XXH3_state_t* statePtr, const void* input, size_t length); -XXH_PUBLIC_API XXH128_hash_t XXH3_128bits_digest (const XXH3_state_t* statePtr); +/*! + * @brief Resets an @ref XXH3_state_t with 64-bit seed to begin a new hash. + * + * @param statePtr The state struct to reset. + * @param seed The 64-bit seed to alter the hash result predictably. + * + * @pre + * @p statePtr must not be `NULL`. + * + * @return @ref XXH_OK on success. + * @return @ref XXH_ERROR on failure. + * + * @note + * - This function resets `statePtr` and generate a secret from `seed`. + * - Call it before @ref XXH3_128bits_update(). + * - Digest will be equivalent to `XXH3_128bits_withSeed()`. + * + * @see @ref streaming_example "Streaming Example" + */ +XXH_PUBLIC_API XXH_errorcode XXH3_128bits_reset_withSeed(XXH_NOESCAPE XXH3_state_t* statePtr, XXH64_hash_t seed); +/*! + * @brief Resets an @ref XXH3_state_t with secret data to begin a new hash. + * + * @param statePtr The state struct to reset. + * @param secret The secret data. + * @param secretSize The length of @p secret, in bytes. + * + * @pre + * @p statePtr must not be `NULL`. + * + * @return @ref XXH_OK on success. + * @return @ref XXH_ERROR on failure. + * + * `secret` is referenced, it _must outlive_ the hash streaming session. + * Similar to one-shot API, `secretSize` must be >= @ref XXH3_SECRET_SIZE_MIN, + * and the quality of produced hash values depends on secret's entropy + * (secret's content should look like a bunch of random bytes). + * When in doubt about the randomness of a candidate `secret`, + * consider employing `XXH3_generateSecret()` instead (see below). + * + * @see @ref streaming_example "Streaming Example" + */ +XXH_PUBLIC_API XXH_errorcode XXH3_128bits_reset_withSecret(XXH_NOESCAPE XXH3_state_t* statePtr, XXH_NOESCAPE const void* secret, size_t secretSize); + +/*! + * @brief Consumes a block of @p input to an @ref XXH3_state_t. + * + * Call this to incrementally consume blocks of data. + * + * @param statePtr The state struct to update. + * @param input The block of data to be hashed, at least @p length bytes in size. + * @param length The length of @p input, in bytes. + * + * @pre + * @p statePtr must not be `NULL`. + * + * @return @ref XXH_OK on success. + * @return @ref XXH_ERROR on failure. + * + * @note + * The memory between @p input and @p input + @p length must be valid, + * readable, contiguous memory. However, if @p length is `0`, @p input may be + * `NULL`. In C++, this also must be *TriviallyCopyable*. + * + */ +XXH_PUBLIC_API XXH_errorcode XXH3_128bits_update (XXH_NOESCAPE XXH3_state_t* statePtr, XXH_NOESCAPE const void* input, size_t length); + +/*! + * @brief Returns the calculated XXH3 128-bit hash value from an @ref XXH3_state_t. + * + * @param statePtr The state struct to calculate the hash from. + * + * @pre + * @p statePtr must not be `NULL`. + * + * @return The calculated XXH3 128-bit hash value from that state. + * + * @note + * Calling XXH3_128bits_digest() will not affect @p statePtr, so you can update, + * digest, and update again. + * + */ +XXH_PUBLIC_API XXH_PUREF XXH128_hash_t XXH3_128bits_digest (XXH_NOESCAPE const XXH3_state_t* statePtr); +#endif /* !XXH_NO_STREAM */ /* Following helper functions make it possible to compare XXH128_hast_t values. * Since XXH128_hash_t is a structure, this capability is not offered by the language. * Note: For better performance, these functions can be inlined using XXH_INLINE_ALL */ /*! - * XXH128_isEqual(): - * Return: 1 if `h1` and `h2` are equal, 0 if they are not. + * @brief Check equality of two XXH128_hash_t values + * + * @param h1 The 128-bit hash value. + * @param h2 Another 128-bit hash value. + * + * @return `1` if `h1` and `h2` are equal. + * @return `0` if they are not. */ -XXH_PUBLIC_API int XXH128_isEqual(XXH128_hash_t h1, XXH128_hash_t h2); +XXH_PUBLIC_API XXH_PUREF int XXH128_isEqual(XXH128_hash_t h1, XXH128_hash_t h2); /*! - * XXH128_cmp(): + * @brief Compares two @ref XXH128_hash_t * * This comparator is compatible with stdlib's `qsort()`/`bsearch()`. * - * return: >0 if *h128_1 > *h128_2 - * =0 if *h128_1 == *h128_2 - * <0 if *h128_1 < *h128_2 + * @param h128_1 Left-hand side value + * @param h128_2 Right-hand side value + * + * @return >0 if @p h128_1 > @p h128_2 + * @return =0 if @p h128_1 == @p h128_2 + * @return <0 if @p h128_1 < @p h128_2 */ -XXH_PUBLIC_API int XXH128_cmp(const void* h128_1, const void* h128_2); +XXH_PUBLIC_API XXH_PUREF int XXH128_cmp(XXH_NOESCAPE const void* h128_1, XXH_NOESCAPE const void* h128_2); /******* Canonical representation *******/ typedef struct { unsigned char digest[sizeof(XXH128_hash_t)]; } XXH128_canonical_t; -XXH_PUBLIC_API void XXH128_canonicalFromHash(XXH128_canonical_t* dst, XXH128_hash_t hash); -XXH_PUBLIC_API XXH128_hash_t XXH128_hashFromCanonical(const XXH128_canonical_t* src); +/*! + * @brief Converts an @ref XXH128_hash_t to a big endian @ref XXH128_canonical_t. + * + * @param dst The @ref XXH128_canonical_t pointer to be stored to. + * @param hash The @ref XXH128_hash_t to be converted. + * + * @pre + * @p dst must not be `NULL`. + * @see @ref canonical_representation_example "Canonical Representation Example" + */ +XXH_PUBLIC_API void XXH128_canonicalFromHash(XXH_NOESCAPE XXH128_canonical_t* dst, XXH128_hash_t hash); + +/*! + * @brief Converts an @ref XXH128_canonical_t to a native @ref XXH128_hash_t. + * + * @param src The @ref XXH128_canonical_t to convert. + * + * @pre + * @p src must not be `NULL`. + * + * @return The converted hash. + * @see @ref canonical_representation_example "Canonical Representation Example" + */ +XXH_PUBLIC_API XXH_PUREF XXH128_hash_t XXH128_hashFromCanonical(XXH_NOESCAPE const XXH128_canonical_t* src); + + +#endif /* !XXH_NO_XXH3 */ #endif /* XXH_NO_LONG_LONG */ +/*! + * @} + */ #endif /* XXHASH_H_5627135585666179 */ @@ -612,35 +1658,57 @@ XXH_PUBLIC_API XXH128_hash_t XXH128_hashFromCanonical(const XXH128_canonical_t* * Never **ever** access their members directly. */ +/*! + * @internal + * @brief Structure for XXH32 streaming API. + * + * @note This is only defined when @ref XXH_STATIC_LINKING_ONLY, + * @ref XXH_INLINE_ALL, or @ref XXH_IMPLEMENTATION is defined. Otherwise it is + * an opaque type. This allows fields to safely be changed. + * + * Typedef'd to @ref XXH32_state_t. + * Do not access the members of this struct directly. + * @see XXH64_state_s, XXH3_state_s + */ struct XXH32_state_s { - XXH32_hash_t total_len_32; - XXH32_hash_t large_len; - XXH32_hash_t v1; - XXH32_hash_t v2; - XXH32_hash_t v3; - XXH32_hash_t v4; - XXH32_hash_t mem32[4]; - XXH32_hash_t memsize; - XXH32_hash_t reserved; /* never read nor write, might be removed in a future version */ + XXH32_hash_t total_len_32; /*!< Total length hashed, modulo 2^32 */ + XXH32_hash_t large_len; /*!< Whether the hash is >= 16 (handles @ref total_len_32 overflow) */ + XXH32_hash_t acc[4]; /*!< Accumulator lanes */ + unsigned char buffer[16]; /*!< Internal buffer for partial reads. */ + XXH32_hash_t bufferedSize; /*!< Amount of data in @ref buffer */ + XXH32_hash_t reserved; /*!< Reserved field. Do not read nor write to it. */ }; /* typedef'd to XXH32_state_t */ #ifndef XXH_NO_LONG_LONG /* defined when there is no 64-bit support */ +/*! + * @internal + * @brief Structure for XXH64 streaming API. + * + * @note This is only defined when @ref XXH_STATIC_LINKING_ONLY, + * @ref XXH_INLINE_ALL, or @ref XXH_IMPLEMENTATION is defined. Otherwise it is + * an opaque type. This allows fields to safely be changed. + * + * Typedef'd to @ref XXH64_state_t. + * Do not access the members of this struct directly. + * @see XXH32_state_s, XXH3_state_s + */ struct XXH64_state_s { - XXH64_hash_t total_len; - XXH64_hash_t v1; - XXH64_hash_t v2; - XXH64_hash_t v3; - XXH64_hash_t v4; - XXH64_hash_t mem64[4]; - XXH32_hash_t memsize; - XXH32_hash_t reserved32; /* required for padding anyway */ - XXH64_hash_t reserved64; /* never read nor write, might be removed in a future version */ + XXH64_hash_t total_len; /*!< Total length hashed. This is always 64-bit. */ + XXH64_hash_t acc[4]; /*!< Accumulator lanes */ + unsigned char buffer[32]; /*!< Internal buffer for partial reads.. */ + XXH32_hash_t bufferedSize; /*!< Amount of data in @ref buffer */ + XXH32_hash_t reserved32; /*!< Reserved field, needed for padding anyways*/ + XXH64_hash_t reserved64; /*!< Reserved field. Do not read or write to it. */ }; /* typedef'd to XXH64_state_t */ -#if defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L) /* C11+ */ -# include +#ifndef XXH_NO_XXH3 + +#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L) /* >= C11 */ +# define XXH_ALIGN(n) _Alignas(n) +#elif defined(__cplusplus) && (__cplusplus >= 201103L) /* >= C++11 */ +/* In C++ alignas() is a keyword */ # define XXH_ALIGN(n) alignas(n) #elif defined(__GNUC__) # define XXH_ALIGN(n) __attribute__ ((aligned(n))) @@ -652,35 +1720,91 @@ struct XXH64_state_s { /* Old GCC versions only accept the attribute after the type in structures. */ #if !(defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L)) /* C11+ */ \ + && ! (defined(__cplusplus) && (__cplusplus >= 201103L)) /* >= C++11 */ \ && defined(__GNUC__) # define XXH_ALIGN_MEMBER(align, type) type XXH_ALIGN(align) #else # define XXH_ALIGN_MEMBER(align, type) XXH_ALIGN(align) type #endif +/*! + * @internal + * @brief The size of the internal XXH3 buffer. + * + * This is the optimal update size for incremental hashing. + * + * @see XXH3_64b_update(), XXH3_128b_update(). + */ #define XXH3_INTERNALBUFFER_SIZE 256 + +/*! + * @def XXH3_SECRET_DEFAULT_SIZE + * @brief Default Secret's size + * + * This is the size of internal XXH3_kSecret + * and is needed by XXH3_generateSecret_fromSeed(). + * + * Not to be confused with @ref XXH3_SECRET_SIZE_MIN. + */ #define XXH3_SECRET_DEFAULT_SIZE 192 + +/*! + * @internal + * @brief Structure for XXH3 streaming API. + * + * @note This is only defined when @ref XXH_STATIC_LINKING_ONLY, + * @ref XXH_INLINE_ALL, or @ref XXH_IMPLEMENTATION is defined. + * Otherwise it is an opaque type. + * Never use this definition in combination with dynamic library. + * This allows fields to safely be changed in the future. + * + * @note ** This structure has a strict alignment requirement of 64 bytes!! ** + * Do not allocate this with `malloc()` or `new`, + * it will not be sufficiently aligned. + * Use @ref XXH3_createState() and @ref XXH3_freeState(), or stack allocation. + * + * Typedef'd to @ref XXH3_state_t. + * Do never access the members of this struct directly. + * + * @see XXH3_INITSTATE() for stack initialization. + * @see XXH3_createState(), XXH3_freeState(). + * @see XXH32_state_s, XXH64_state_s + */ struct XXH3_state_s { XXH_ALIGN_MEMBER(64, XXH64_hash_t acc[8]); - /* used to store a custom secret generated from a seed */ + /*!< The 8 accumulators. See @ref XXH32_state_s::acc and @ref XXH64_state_s::acc */ XXH_ALIGN_MEMBER(64, unsigned char customSecret[XXH3_SECRET_DEFAULT_SIZE]); + /*!< Used to store a custom secret generated from a seed. */ XXH_ALIGN_MEMBER(64, unsigned char buffer[XXH3_INTERNALBUFFER_SIZE]); + /*!< The internal buffer. @see XXH32_state_s::mem32 */ XXH32_hash_t bufferedSize; - XXH32_hash_t reserved32; + /*!< The amount of memory in @ref buffer, @see XXH32_state_s::memsize */ + XXH32_hash_t useSeed; + /*!< Reserved field. Needed for padding on 64-bit. */ size_t nbStripesSoFar; + /*!< Number or stripes processed. */ XXH64_hash_t totalLen; + /*!< Total length hashed. 64-bit even on 32-bit targets. */ size_t nbStripesPerBlock; + /*!< Number of stripes per block. */ size_t secretLimit; + /*!< Size of @ref customSecret or @ref extSecret */ XXH64_hash_t seed; + /*!< Seed for _withSeed variants. Must be zero otherwise, @see XXH3_INITSTATE() */ XXH64_hash_t reserved64; - const unsigned char* extSecret; /* reference to external secret; - * if == NULL, use .customSecret instead */ + /*!< Reserved field. */ + const unsigned char* extSecret; + /*!< Reference to an external secret for the _withSecret variants, NULL + * for other variants. */ /* note: there may be some padding at the end due to alignment on 64 bytes */ }; /* typedef'd to XXH3_state_t */ #undef XXH_ALIGN_MEMBER -/* When the XXH3_state_t structure is merely emplaced on stack, +/*! + * @brief Initializes a stack-allocated `XXH3_state_s`. + * + * When the @ref XXH3_state_t structure is merely emplaced on stack, * it should be initialized with XXH3_INITSTATE() or a memset() * in case its first reset uses XXH3_NNbits_reset_withSeed(). * This init can be omitted if the first reset uses default or _withSecret mode. @@ -688,51 +1812,248 @@ struct XXH3_state_s { * Note that this doesn't prepare the state for a streaming operation, * it's still necessary to use XXH3_NNbits_reset*() afterwards. */ -#define XXH3_INITSTATE(XXH3_state_ptr) { (XXH3_state_ptr)->seed = 0; } +#define XXH3_INITSTATE(XXH3_state_ptr) \ + do { \ + XXH3_state_t* tmp_xxh3_state_ptr = (XXH3_state_ptr); \ + tmp_xxh3_state_ptr->seed = 0; \ + tmp_xxh3_state_ptr->extSecret = NULL; \ + } while(0) + + +/*! + * @brief Calculates the 128-bit hash of @p data using XXH3. + * + * @param data The block of data to be hashed, at least @p len bytes in size. + * @param len The length of @p data, in bytes. + * @param seed The 64-bit seed to alter the hash's output predictably. + * + * @pre + * The memory between @p data and @p data + @p len must be valid, + * readable, contiguous memory. However, if @p len is `0`, @p data may be + * `NULL`. In C++, this also must be *TriviallyCopyable*. + * + * @return The calculated 128-bit XXH3 value. + * + * @see @ref single_shot_example "Single Shot Example" for an example. + */ +XXH_PUBLIC_API XXH_PUREF XXH128_hash_t XXH128(XXH_NOESCAPE const void* data, size_t len, XXH64_hash_t seed); /* === Experimental API === */ /* Symbols defined below must be considered tied to a specific library version. */ -/* - * XXH3_generateSecret(): +/*! + * @brief Derive a high-entropy secret from any user-defined content, named customSeed. + * + * @param secretBuffer A writable buffer for derived high-entropy secret data. + * @param secretSize Size of secretBuffer, in bytes. Must be >= XXH3_SECRET_SIZE_MIN. + * @param customSeed A user-defined content. + * @param customSeedSize Size of customSeed, in bytes. + * + * @return @ref XXH_OK on success. + * @return @ref XXH_ERROR on failure. * - * Derive a high-entropy secret from any user-defined content, named customSeed. * The generated secret can be used in combination with `*_withSecret()` functions. - * The `_withSecret()` variants are useful to provide a higher level of protection than 64-bit seed, - * as it becomes much more difficult for an external actor to guess how to impact the calculation logic. + * The `_withSecret()` variants are useful to provide a higher level of protection + * than 64-bit seed, as it becomes much more difficult for an external actor to + * guess how to impact the calculation logic. * * The function accepts as input a custom seed of any length and any content, - * and derives from it a high-entropy secret of length XXH3_SECRET_DEFAULT_SIZE - * into an already allocated buffer secretBuffer. - * The generated secret is _always_ XXH_SECRET_DEFAULT_SIZE bytes long. + * and derives from it a high-entropy secret of length @p secretSize into an + * already allocated buffer @p secretBuffer. * * The generated secret can then be used with any `*_withSecret()` variant. - * Functions `XXH3_128bits_withSecret()`, `XXH3_64bits_withSecret()`, - * `XXH3_128bits_reset_withSecret()` and `XXH3_64bits_reset_withSecret()` + * The functions @ref XXH3_128bits_withSecret(), @ref XXH3_64bits_withSecret(), + * @ref XXH3_128bits_reset_withSecret() and @ref XXH3_64bits_reset_withSecret() * are part of this list. They all accept a `secret` parameter - * which must be very long for implementation reasons (>= XXH3_SECRET_SIZE_MIN) + * which must be large enough for implementation reasons (>= @ref XXH3_SECRET_SIZE_MIN) * _and_ feature very high entropy (consist of random-looking bytes). - * These conditions can be a high bar to meet, so - * this function can be used to generate a secret of proper quality. + * These conditions can be a high bar to meet, so @ref XXH3_generateSecret() can + * be employed to ensure proper quality. * - * customSeed can be anything. It can have any size, even small ones, - * and its content can be anything, even stupidly "low entropy" source such as a bunch of zeroes. - * The resulting `secret` will nonetheless provide all expected qualities. + * @p customSeed can be anything. It can have any size, even small ones, + * and its content can be anything, even "poor entropy" sources such as a bunch + * of zeroes. The resulting `secret` will nonetheless provide all required qualities. * - * Supplying NULL as the customSeed copies the default secret into `secretBuffer`. - * When customSeedSize > 0, supplying NULL as customSeed is undefined behavior. + * @pre + * - @p secretSize must be >= @ref XXH3_SECRET_SIZE_MIN + * - When @p customSeedSize > 0, supplying NULL as customSeed is undefined behavior. + * + * Example code: + * @code{.c} + * #include + * #include + * #include + * #define XXH_STATIC_LINKING_ONLY // expose unstable API + * #include "xxhash.h" + * // Hashes argv[2] using the entropy from argv[1]. + * int main(int argc, char* argv[]) + * { + * char secret[XXH3_SECRET_SIZE_MIN]; + * if (argv != 3) { return 1; } + * XXH3_generateSecret(secret, sizeof(secret), argv[1], strlen(argv[1])); + * XXH64_hash_t h = XXH3_64bits_withSecret( + * argv[2], strlen(argv[2]), + * secret, sizeof(secret) + * ); + * printf("%016llx\n", (unsigned long long) h); + * } + * @endcode */ -XXH_PUBLIC_API void XXH3_generateSecret(void* secretBuffer, const void* customSeed, size_t customSeedSize); +XXH_PUBLIC_API XXH_errorcode XXH3_generateSecret(XXH_NOESCAPE void* secretBuffer, size_t secretSize, XXH_NOESCAPE const void* customSeed, size_t customSeedSize); +/*! + * @brief Generate the same secret as the _withSeed() variants. + * + * @param secretBuffer A writable buffer of @ref XXH3_SECRET_DEFAULT_SIZE bytes + * @param seed The 64-bit seed to alter the hash result predictably. + * + * The generated secret can be used in combination with + *`*_withSecret()` and `_withSecretandSeed()` variants. + * + * Example C++ `std::string` hash class: + * @code{.cpp} + * #include + * #define XXH_STATIC_LINKING_ONLY // expose unstable API + * #include "xxhash.h" + * // Slow, seeds each time + * class HashSlow { + * XXH64_hash_t seed; + * public: + * HashSlow(XXH64_hash_t s) : seed{s} {} + * size_t operator()(const std::string& x) const { + * return size_t{XXH3_64bits_withSeed(x.c_str(), x.length(), seed)}; + * } + * }; + * // Fast, caches the seeded secret for future uses. + * class HashFast { + * unsigned char secret[XXH3_SECRET_DEFAULT_SIZE]; + * public: + * HashFast(XXH64_hash_t s) { + * XXH3_generateSecret_fromSeed(secret, seed); + * } + * size_t operator()(const std::string& x) const { + * return size_t{ + * XXH3_64bits_withSecret(x.c_str(), x.length(), secret, sizeof(secret)) + * }; + * } + * }; + * @endcode + */ +XXH_PUBLIC_API void XXH3_generateSecret_fromSeed(XXH_NOESCAPE void* secretBuffer, XXH64_hash_t seed); -/* simple short-cut to pre-selected XXH3_128bits variant */ -XXH_PUBLIC_API XXH128_hash_t XXH128(const void* data, size_t len, XXH64_hash_t seed); +/*! + * @brief Maximum size of "short" key in bytes. + */ +#define XXH3_MIDSIZE_MAX 240 +/*! + * @brief Calculates 64/128-bit seeded variant of XXH3 hash of @p data. + * + * @param data The block of data to be hashed, at least @p len bytes in size. + * @param len The length of @p data, in bytes. + * @param secret The secret data. + * @param secretSize The length of @p secret, in bytes. + * @param seed The 64-bit seed to alter the hash result predictably. + * + * These variants generate hash values using either: + * - @p seed for "short" keys (< @ref XXH3_MIDSIZE_MAX = 240 bytes) + * - @p secret for "large" keys (>= @ref XXH3_MIDSIZE_MAX). + * + * This generally benefits speed, compared to `_withSeed()` or `_withSecret()`. + * `_withSeed()` has to generate the secret on the fly for "large" keys. + * It's fast, but can be perceptible for "not so large" keys (< 1 KB). + * `_withSecret()` has to generate the masks on the fly for "small" keys, + * which requires more instructions than _withSeed() variants. + * Therefore, _withSecretandSeed variant combines the best of both worlds. + * + * When @p secret has been generated by XXH3_generateSecret_fromSeed(), + * this variant produces *exactly* the same results as `_withSeed()` variant, + * hence offering only a pure speed benefit on "large" input, + * by skipping the need to regenerate the secret for every large input. + * + * Another usage scenario is to hash the secret to a 64-bit hash value, + * for example with XXH3_64bits(), which then becomes the seed, + * and then employ both the seed and the secret in _withSecretandSeed(). + * On top of speed, an added benefit is that each bit in the secret + * has a 50% chance to swap each bit in the output, via its impact to the seed. + * + * This is not guaranteed when using the secret directly in "small data" scenarios, + * because only portions of the secret are employed for small data. + */ +XXH_PUBLIC_API XXH_PUREF XXH64_hash_t +XXH3_64bits_withSecretandSeed(XXH_NOESCAPE const void* data, size_t len, + XXH_NOESCAPE const void* secret, size_t secretSize, + XXH64_hash_t seed); +/*! + * @brief Calculates 128-bit seeded variant of XXH3 hash of @p data. + * + * @param input The memory segment to be hashed, at least @p len bytes in size. + * @param length The length of @p data, in bytes. + * @param secret The secret used to alter hash result predictably. + * @param secretSize The length of @p secret, in bytes (must be >= XXH3_SECRET_SIZE_MIN) + * @param seed64 The 64-bit seed to alter the hash result predictably. + * + * @return @ref XXH_OK on success. + * @return @ref XXH_ERROR on failure. + * + * @see XXH3_64bits_withSecretandSeed(): contract is the same. + */ +XXH_PUBLIC_API XXH_PUREF XXH128_hash_t +XXH3_128bits_withSecretandSeed(XXH_NOESCAPE const void* input, size_t length, + XXH_NOESCAPE const void* secret, size_t secretSize, + XXH64_hash_t seed64); + +#ifndef XXH_NO_STREAM +/*! + * @brief Resets an @ref XXH3_state_t with secret data to begin a new hash. + * + * @param statePtr A pointer to an @ref XXH3_state_t allocated with @ref XXH3_createState(). + * @param secret The secret data. + * @param secretSize The length of @p secret, in bytes. + * @param seed64 The 64-bit seed to alter the hash result predictably. + * + * @return @ref XXH_OK on success. + * @return @ref XXH_ERROR on failure. + * + * @see XXH3_64bits_withSecretandSeed(). Contract is identical. + */ +XXH_PUBLIC_API XXH_errorcode +XXH3_64bits_reset_withSecretandSeed(XXH_NOESCAPE XXH3_state_t* statePtr, + XXH_NOESCAPE const void* secret, size_t secretSize, + XXH64_hash_t seed64); + +/*! + * @brief Resets an @ref XXH3_state_t with secret data to begin a new hash. + * + * @param statePtr A pointer to an @ref XXH3_state_t allocated with @ref XXH3_createState(). + * @param secret The secret data. + * @param secretSize The length of @p secret, in bytes. + * @param seed64 The 64-bit seed to alter the hash result predictably. + * + * @return @ref XXH_OK on success. + * @return @ref XXH_ERROR on failure. + * + * @see XXH3_64bits_withSecretandSeed(). Contract is identical. + * + * Note: there was a bug in an earlier version of this function (<= v0.8.2) + * that would make it generate an incorrect hash value + * when @p seed == 0 and @p length < XXH3_MIDSIZE_MAX + * and @p secret is different from XXH3_generateSecret_fromSeed(). + * As stated in the contract, the correct hash result must be + * the same as XXH3_128bits_withSeed() when @p length <= XXH3_MIDSIZE_MAX. + * Results generated by this older version are wrong, hence not comparable. + */ +XXH_PUBLIC_API XXH_errorcode +XXH3_128bits_reset_withSecretandSeed(XXH_NOESCAPE XXH3_state_t* statePtr, + XXH_NOESCAPE const void* secret, size_t secretSize, + XXH64_hash_t seed64); + +#endif /* !XXH_NO_STREAM */ + +#endif /* !XXH_NO_XXH3 */ #endif /* XXH_NO_LONG_LONG */ - - #if defined(XXH_INLINE_ALL) || defined(XXH_PRIVATE_API) # define XXH_IMPLEMENTATION #endif @@ -774,8 +2095,24 @@ XXH_PUBLIC_API XXH128_hash_t XXH128(const void* data, size_t len, XXH64_hash_t s /* ************************************* * Tuning parameters ***************************************/ + /*! - * XXH_FORCE_MEMORY_ACCESS: + * @defgroup tuning Tuning parameters + * @{ + * + * Various macros to control xxHash's behavior. + */ +#ifdef XXH_DOXYGEN +/*! + * @brief Define this to disable 64-bit code. + * + * Useful if only using the @ref XXH32_family and you have a strict C90 compiler. + */ +# define XXH_NO_LONG_LONG +# undef XXH_NO_LONG_LONG /* don't actually */ +/*! + * @brief Controls how unaligned memory is accessed. + * * By default, access to unaligned memory is controlled by `memcpy()`, which is * safe and portable. * @@ -784,77 +2121,108 @@ XXH_PUBLIC_API XXH128_hash_t XXH128(const void* data, size_t len, XXH64_hash_t s * * The below switch allow selection of a different access method * in the search for improved performance. - * Method 0 (default): - * Use `memcpy()`. Safe and portable. Default. - * Method 1: - * `__attribute__((packed))` statement. It depends on compiler extensions - * and is therefore not portable. - * This method is safe if your compiler supports it, and *generally* as - * fast or faster than `memcpy`. - * Method 2: - * Direct access via cast. This method doesn't depend on the compiler but - * violates the C standard. - * It can generate buggy code on targets which do not support unaligned - * memory accesses. - * But in some circumstances, it's the only known way to get the most - * performance (example: GCC + ARMv6) - * Method 3: - * Byteshift. This can generate the best code on old compilers which don't - * inline small `memcpy()` calls, and it might also be faster on big-endian - * systems which lack a native byteswap instruction. - * See https://stackoverflow.com/a/32095106/646947 for details. - * Prefer these methods in priority order (0 > 1 > 2 > 3) - */ -#ifndef XXH_FORCE_MEMORY_ACCESS /* can be defined externally, on command line for example */ -# if !defined(__clang__) && defined(__GNUC__) && defined(__ARM_FEATURE_UNALIGNED) && defined(__ARM_ARCH) && (__ARM_ARCH == 6) -# define XXH_FORCE_MEMORY_ACCESS 2 -# elif !defined(__clang__) && ((defined(__INTEL_COMPILER) && !defined(_WIN32)) || \ - (defined(__GNUC__) && (defined(__ARM_ARCH) && __ARM_ARCH >= 7))) -# define XXH_FORCE_MEMORY_ACCESS 1 -# endif -#endif - -/*! - * XXH_ACCEPT_NULL_INPUT_POINTER: - * If the input pointer is NULL, xxHash's default behavior is to dereference it, - * triggering a segfault. - * When this macro is enabled, xxHash actively checks the input for a null pointer. - * If it is, the result for null input pointers is the same as a zero-length input. - */ -#ifndef XXH_ACCEPT_NULL_INPUT_POINTER /* can be defined externally */ -# define XXH_ACCEPT_NULL_INPUT_POINTER 0 -#endif - -/*! - * XXH_FORCE_ALIGN_CHECK: - * This is an important performance trick - * for architectures without decent unaligned memory access performance. - * It checks for input alignment, and when conditions are met, - * uses a "fast path" employing direct 32-bit/64-bit read, - * resulting in _dramatically faster_ read speed. * - * The check costs one initial branch per hash, which is generally negligible, but not zero. - * Moreover, it's not useful to generate binary for an additional code path - * if memory access uses same instruction for both aligned and unaligned adresses. + * @par Possible options: + * + * - `XXH_FORCE_MEMORY_ACCESS=0` (default): `memcpy` + * @par + * Use `memcpy()`. Safe and portable. Note that most modern compilers will + * eliminate the function call and treat it as an unaligned access. + * + * - `XXH_FORCE_MEMORY_ACCESS=1`: `__attribute__((aligned(1)))` + * @par + * Depends on compiler extensions and is therefore not portable. + * This method is safe _if_ your compiler supports it, + * and *generally* as fast or faster than `memcpy`. + * + * - `XXH_FORCE_MEMORY_ACCESS=2`: Direct cast + * @par + * Casts directly and dereferences. This method doesn't depend on the + * compiler, but it violates the C standard as it directly dereferences an + * unaligned pointer. It can generate buggy code on targets which do not + * support unaligned memory accesses, but in some circumstances, it's the + * only known way to get the most performance. + * + * - `XXH_FORCE_MEMORY_ACCESS=3`: Byteshift + * @par + * Also portable. This can generate the best code on old compilers which don't + * inline small `memcpy()` calls, and it might also be faster on big-endian + * systems which lack a native byteswap instruction. However, some compilers + * will emit literal byteshifts even if the target supports unaligned access. + * + * + * @warning + * Methods 1 and 2 rely on implementation-defined behavior. Use these with + * care, as what works on one compiler/platform/optimization level may cause + * another to read garbage data or even crash. + * + * See https://fastcompression.blogspot.com/2015/08/accessing-unaligned-memory.html for details. + * + * Prefer these methods in priority order (0 > 3 > 1 > 2) + */ +# define XXH_FORCE_MEMORY_ACCESS 0 + +/*! + * @def XXH_SIZE_OPT + * @brief Controls how much xxHash optimizes for size. + * + * xxHash, when compiled, tends to result in a rather large binary size. This + * is mostly due to heavy usage to forced inlining and constant folding of the + * @ref XXH3_family to increase performance. + * + * However, some developers prefer size over speed. This option can + * significantly reduce the size of the generated code. When using the `-Os` + * or `-Oz` options on GCC or Clang, this is defined to 1 by default, + * otherwise it is defined to 0. + * + * Most of these size optimizations can be controlled manually. + * + * This is a number from 0-2. + * - `XXH_SIZE_OPT` == 0: Default. xxHash makes no size optimizations. Speed + * comes first. + * - `XXH_SIZE_OPT` == 1: Default for `-Os` and `-Oz`. xxHash is more + * conservative and disables hacks that increase code size. It implies the + * options @ref XXH_NO_INLINE_HINTS == 1, @ref XXH_FORCE_ALIGN_CHECK == 0, + * and @ref XXH3_NEON_LANES == 8 if they are not already defined. + * - `XXH_SIZE_OPT` == 2: xxHash tries to make itself as small as possible. + * Performance may cry. For example, the single shot functions just use the + * streaming API. + */ +# define XXH_SIZE_OPT 0 + +/*! + * @def XXH_FORCE_ALIGN_CHECK + * @brief If defined to non-zero, adds a special path for aligned inputs (XXH32() + * and XXH64() only). + * + * This is an important performance trick for architectures without decent + * unaligned memory access performance. + * + * It checks for input alignment, and when conditions are met, uses a "fast + * path" employing direct 32-bit/64-bit reads, resulting in _dramatically + * faster_ read speed. + * + * The check costs one initial branch per hash, which is generally negligible, + * but not zero. + * + * Moreover, it's not useful to generate an additional code path if memory + * access uses the same instruction for both aligned and unaligned + * addresses (e.g. x86 and aarch64). * * In these cases, the alignment check can be removed by setting this macro to 0. * Then the code will always use unaligned memory access. - * Align check is automatically disabled on x86, x64 & arm64, + * Align check is automatically disabled on x86, x64, ARM64, and some ARM chips * which are platforms known to offer good unaligned memory accesses performance. * + * It is also disabled by default when @ref XXH_SIZE_OPT >= 1. + * * This option does not affect XXH3 (only XXH32 and XXH64). */ -#ifndef XXH_FORCE_ALIGN_CHECK /* can be defined externally */ -# if defined(__i386) || defined(__x86_64__) || defined(__aarch64__) \ - || defined(_M_IX86) || defined(_M_X64) || defined(_M_ARM64) /* visual */ -# define XXH_FORCE_ALIGN_CHECK 0 -# else -# define XXH_FORCE_ALIGN_CHECK 1 -# endif -#endif +# define XXH_FORCE_ALIGN_CHECK 0 /*! - * XXH_NO_INLINE_HINTS: + * @def XXH_NO_INLINE_HINTS + * @brief When non-zero, sets all functions to `static`. * * By default, xxHash tries to force the compiler to inline almost all internal * functions. @@ -869,52 +2237,192 @@ XXH_PUBLIC_API XXH128_hash_t XXH128(const void* data, size_t len, XXH64_hash_t s * XXH_NO_INLINE_HINTS marks all internal functions as static, giving the * compiler full control on whether to inline or not. * - * When not optimizing (-O0), optimizing for size (-Os, -Oz), or using - * -fno-inline with GCC or Clang, this will automatically be defined. + * When not optimizing (-O0), using `-fno-inline` with GCC or Clang, or if + * @ref XXH_SIZE_OPT >= 1, this will automatically be defined. */ +# define XXH_NO_INLINE_HINTS 0 + +/*! + * @def XXH3_INLINE_SECRET + * @brief Determines whether to inline the XXH3 withSecret code. + * + * When the secret size is known, the compiler can improve the performance + * of XXH3_64bits_withSecret() and XXH3_128bits_withSecret(). + * + * However, if the secret size is not known, it doesn't have any benefit. This + * happens when xxHash is compiled into a global symbol. Therefore, if + * @ref XXH_INLINE_ALL is *not* defined, this will be defined to 0. + * + * Additionally, this defaults to 0 on GCC 12+, which has an issue with function pointers + * that are *sometimes* force inline on -Og, and it is impossible to automatically + * detect this optimization level. + */ +# define XXH3_INLINE_SECRET 0 + +/*! + * @def XXH32_ENDJMP + * @brief Whether to use a jump for `XXH32_finalize`. + * + * For performance, `XXH32_finalize` uses multiple branches in the finalizer. + * This is generally preferable for performance, + * but depending on exact architecture, a jmp may be preferable. + * + * This setting is only possibly making a difference for very small inputs. + */ +# define XXH32_ENDJMP 0 + +/*! + * @internal + * @brief Redefines old internal names. + * + * For compatibility with code that uses xxHash's internals before the names + * were changed to improve namespacing. There is no other reason to use this. + */ +# define XXH_OLD_NAMES +# undef XXH_OLD_NAMES /* don't actually use, it is ugly. */ + +/*! + * @def XXH_NO_STREAM + * @brief Disables the streaming API. + * + * When xxHash is not inlined and the streaming functions are not used, disabling + * the streaming functions can improve code size significantly, especially with + * the @ref XXH3_family which tends to make constant folded copies of itself. + */ +# define XXH_NO_STREAM +# undef XXH_NO_STREAM /* don't actually */ +#endif /* XXH_DOXYGEN */ +/*! + * @} + */ + +#ifndef XXH_FORCE_MEMORY_ACCESS /* can be defined externally, on command line for example */ + /* prefer __packed__ structures (method 1) for GCC + * < ARMv7 with unaligned access (e.g. Raspbian armhf) still uses byte shifting, so we use memcpy + * which for some reason does unaligned loads. */ +# if defined(__GNUC__) && !(defined(__ARM_ARCH) && __ARM_ARCH < 7 && defined(__ARM_FEATURE_UNALIGNED)) +# define XXH_FORCE_MEMORY_ACCESS 1 +# endif +#endif + +#ifndef XXH_SIZE_OPT + /* default to 1 for -Os or -Oz */ +# if (defined(__GNUC__) || defined(__clang__)) && defined(__OPTIMIZE_SIZE__) +# define XXH_SIZE_OPT 1 +# else +# define XXH_SIZE_OPT 0 +# endif +#endif + +#ifndef XXH_FORCE_ALIGN_CHECK /* can be defined externally */ + /* don't check on sizeopt, x86, aarch64, or arm when unaligned access is available */ +# if XXH_SIZE_OPT >= 1 || \ + defined(__i386) || defined(__x86_64__) || defined(__aarch64__) || defined(__ARM_FEATURE_UNALIGNED) \ + || defined(_M_IX86) || defined(_M_X64) || defined(_M_ARM64) || defined(_M_ARM) /* visual */ +# define XXH_FORCE_ALIGN_CHECK 0 +# else +# define XXH_FORCE_ALIGN_CHECK 1 +# endif +#endif + #ifndef XXH_NO_INLINE_HINTS -# if defined(__OPTIMIZE_SIZE__) /* -Os, -Oz */ \ - || defined(__NO_INLINE__) /* -O0, -fno-inline */ +# if XXH_SIZE_OPT >= 1 || defined(__NO_INLINE__) /* -O0, -fno-inline */ # define XXH_NO_INLINE_HINTS 1 # else # define XXH_NO_INLINE_HINTS 0 # endif #endif -/*! - * XXH_REROLL: - * Whether to reroll XXH32_finalize, and XXH64_finalize, - * instead of using an unrolled jump table/if statement loop. - * - * This is automatically defined on -Os/-Oz on GCC and Clang. - */ -#ifndef XXH_REROLL -# if defined(__OPTIMIZE_SIZE__) -# define XXH_REROLL 1 +#ifndef XXH3_INLINE_SECRET +# if (defined(__GNUC__) && !defined(__clang__) && __GNUC__ >= 12) \ + || !defined(XXH_INLINE_ALL) +# define XXH3_INLINE_SECRET 0 # else -# define XXH_REROLL 0 +# define XXH3_INLINE_SECRET 1 # endif #endif +#ifndef XXH32_ENDJMP +/* generally preferable for performance */ +# define XXH32_ENDJMP 0 +#endif + +/*! + * @defgroup impl Implementation + * @{ + */ + /* ************************************* * Includes & Memory related functions ***************************************/ -/*! +#if defined(XXH_NO_STREAM) +/* nothing */ +#elif defined(XXH_NO_STDLIB) + +/* When requesting to disable any mention of stdlib, + * the library loses the ability to invoked malloc / free. + * In practice, it means that functions like `XXH*_createState()` + * will always fail, and return NULL. + * This flag is useful in situations where + * xxhash.h is integrated into some kernel, embedded or limited environment + * without access to dynamic allocation. + */ + +static XXH_CONSTF void* XXH_malloc(size_t s) { (void)s; return NULL; } +static void XXH_free(void* p) { (void)p; } + +#else + +/* * Modify the local functions below should you wish to use * different memory routines for malloc() and free() */ #include -static void* XXH_malloc(size_t s) { return malloc(s); } +/*! + * @internal + * @brief Modify this function to use a different routine than malloc(). + */ +static XXH_MALLOCF void* XXH_malloc(size_t s) { return malloc(s); } + +/*! + * @internal + * @brief Modify this function to use a different routine than free(). + */ static void XXH_free(void* p) { free(p); } -/*! and for memcpy() */ -#include -static void* XXH_memcpy(void* dest, const void* src, size_t size) -{ - return memcpy(dest,src,size); -} +#endif /* XXH_NO_STDLIB */ + +#ifndef XXH_memcpy +/*! + * @internal + * @brief XXH_memcpy() macro can be redirected at compile time + */ +# include +# define XXH_memcpy memcpy +#endif + +#ifndef XXH_memset +/*! + * @internal + * @brief XXH_memset() macro can be redirected at compile time + */ +# include +# define XXH_memset memset +#endif + +#ifndef XXH_memcmp +/*! + * @internal + * @brief XXH_memcmp() macro can be redirected at compile time + * Note: only needed by XXH128. + */ +# include +# define XXH_memcmp memcmp +#endif + + #include /* ULLONG_MAX */ @@ -927,19 +2435,19 @@ static void* XXH_memcpy(void* dest, const void* src, size_t size) #endif #if XXH_NO_INLINE_HINTS /* disable inlining hints */ -# if defined(__GNUC__) -# define XXH_FORCE_INLINE static __attribute__((unused)) +# if defined(__GNUC__) || defined(__clang__) +# define XXH_FORCE_INLINE static __attribute__((__unused__)) # else # define XXH_FORCE_INLINE static # endif # define XXH_NO_INLINE static /* enable inlining hints */ +#elif defined(__GNUC__) || defined(__clang__) +# define XXH_FORCE_INLINE static __inline__ __attribute__((__always_inline__, __unused__)) +# define XXH_NO_INLINE static __attribute__((__noinline__)) #elif defined(_MSC_VER) /* Visual Studio */ # define XXH_FORCE_INLINE static __forceinline # define XXH_NO_INLINE static __declspec(noinline) -#elif defined(__GNUC__) -# define XXH_FORCE_INLINE static __inline__ __attribute__((always_inline, unused)) -# define XXH_NO_INLINE static __attribute__((noinline)) #elif defined (__cplusplus) \ || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) /* C99 */ # define XXH_FORCE_INLINE static inline @@ -949,12 +2457,43 @@ static void* XXH_memcpy(void* dest, const void* src, size_t size) # define XXH_NO_INLINE static #endif +#if defined(XXH_INLINE_ALL) +# define XXH_STATIC XXH_FORCE_INLINE +#else +# define XXH_STATIC static +#endif +#if XXH3_INLINE_SECRET +# define XXH3_WITH_SECRET_INLINE XXH_FORCE_INLINE +#else +# define XXH3_WITH_SECRET_INLINE XXH_NO_INLINE +#endif + +#if ((defined(sun) || defined(__sun)) && __cplusplus) /* Solaris includes __STDC_VERSION__ with C++. Tested with GCC 5.5 */ +# define XXH_RESTRICT /* disable */ +#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* >= C99 */ +# define XXH_RESTRICT restrict +#elif (defined (__GNUC__) && ((__GNUC__ > 3) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1))) \ + || (defined (__clang__)) \ + || (defined (_MSC_VER) && (_MSC_VER >= 1400)) \ + || (defined (__INTEL_COMPILER) && (__INTEL_COMPILER >= 1300)) +/* + * There are a LOT more compilers that recognize __restrict but this + * covers the major ones. + */ +# define XXH_RESTRICT __restrict +#else +# define XXH_RESTRICT /* disable */ +#endif /* ************************************* * Debug ***************************************/ -/* +/*! + * @ingroup tuning + * @def XXH_DEBUGLEVEL + * @brief Sets the debugging level. + * * XXH_DEBUGLEVEL is expected to be defined externally, typically via the * compiler's command line options. The value must be a number. */ @@ -970,12 +2509,54 @@ static void* XXH_memcpy(void* dest, const void* src, size_t size) # include /* note: can still be disabled with NDEBUG */ # define XXH_ASSERT(c) assert(c) #else -# define XXH_ASSERT(c) ((void)0) +# if defined(__INTEL_COMPILER) +# define XXH_ASSERT(c) XXH_ASSUME((unsigned char) (c)) +# else +# define XXH_ASSERT(c) XXH_ASSUME(c) +# endif #endif /* note: use after variable declarations */ -#define XXH_STATIC_ASSERT(c) do { enum { XXH_sa = 1/(int)(!!(c)) }; } while (0) +#ifndef XXH_STATIC_ASSERT +# if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L) /* C11 */ +# define XXH_STATIC_ASSERT_WITH_MESSAGE(c,m) do { _Static_assert((c),m); } while(0) +# elif defined(__cplusplus) && (__cplusplus >= 201103L) /* C++11 */ +# define XXH_STATIC_ASSERT_WITH_MESSAGE(c,m) do { static_assert((c),m); } while(0) +# else +# define XXH_STATIC_ASSERT_WITH_MESSAGE(c,m) do { struct xxh_sa { char x[(c) ? 1 : -1]; }; } while(0) +# endif +# define XXH_STATIC_ASSERT(c) XXH_STATIC_ASSERT_WITH_MESSAGE((c),#c) +#endif +/*! + * @internal + * @def XXH_COMPILER_GUARD(var) + * @brief Used to prevent unwanted optimizations for @p var. + * + * It uses an empty GCC inline assembly statement with a register constraint + * which forces @p var into a general purpose register (eg eax, ebx, ecx + * on x86) and marks it as modified. + * + * This is used in a few places to avoid unwanted autovectorization (e.g. + * XXH32_round()). All vectorization we want is explicit via intrinsics, + * and _usually_ isn't wanted elsewhere. + * + * We also use it to prevent unwanted constant folding for AArch64 in + * XXH3_initCustomSecret_scalar(). + */ +#if defined(__GNUC__) || defined(__clang__) +# define XXH_COMPILER_GUARD(var) __asm__("" : "+r" (var)) +#else +# define XXH_COMPILER_GUARD(var) ((void)0) +#endif + +/* Specifically for NEON vectors which use the "w" constraint, on + * Clang. */ +#if defined(__clang__) && defined(__ARM_ARCH) && !defined(__wasm__) +# define XXH_COMPILER_GUARD_CLANG_NEON(var) __asm__("" : "+w" (var)) +#else +# define XXH_COMPILER_GUARD_CLANG_NEON(var) ((void)0) +#endif /* ************************************* * Basic Types @@ -983,14 +2564,19 @@ static void* XXH_memcpy(void* dest, const void* src, size_t size) #if !defined (__VMS) \ && (defined (__cplusplus) \ || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */) ) -# include - typedef uint8_t xxh_u8; +# ifdef _AIX +# include +# else +# include +# endif + typedef uint8_t xxh_u8; #else - typedef unsigned char xxh_u8; + typedef unsigned char xxh_u8; #endif typedef XXH32_hash_t xxh_u32; #ifdef XXH_OLD_NAMES +# warning "XXH_OLD_NAMES is planned to be removed starting v0.9. If the program depends on it, consider moving away from it by employing newer type names directly" # define BYTE xxh_u8 # define U8 xxh_u8 # define U32 xxh_u32 @@ -998,6 +2584,56 @@ typedef XXH32_hash_t xxh_u32; /* *** Memory access *** */ +/*! + * @internal + * @fn xxh_u32 XXH_read32(const void* ptr) + * @brief Reads an unaligned 32-bit integer from @p ptr in native endianness. + * + * Affected by @ref XXH_FORCE_MEMORY_ACCESS. + * + * @param ptr The pointer to read from. + * @return The 32-bit native endian integer from the bytes at @p ptr. + */ + +/*! + * @internal + * @fn xxh_u32 XXH_readLE32(const void* ptr) + * @brief Reads an unaligned 32-bit little endian integer from @p ptr. + * + * Affected by @ref XXH_FORCE_MEMORY_ACCESS. + * + * @param ptr The pointer to read from. + * @return The 32-bit little endian integer from the bytes at @p ptr. + */ + +/*! + * @internal + * @fn xxh_u32 XXH_readBE32(const void* ptr) + * @brief Reads an unaligned 32-bit big endian integer from @p ptr. + * + * Affected by @ref XXH_FORCE_MEMORY_ACCESS. + * + * @param ptr The pointer to read from. + * @return The 32-bit big endian integer from the bytes at @p ptr. + */ + +/*! + * @internal + * @fn xxh_u32 XXH_readLE32_align(const void* ptr, XXH_alignment align) + * @brief Like @ref XXH_readLE32(), but has an option for aligned reads. + * + * Affected by @ref XXH_FORCE_MEMORY_ACCESS. + * Note that when @ref XXH_FORCE_ALIGN_CHECK == 0, the @p align parameter is + * always @ref XXH_alignment::XXH_unaligned. + * + * @param ptr The pointer to read from. + * @param align Whether @p ptr is aligned. + * @pre + * If @p align == @ref XXH_alignment::XXH_aligned, @p ptr must be 4 byte + * aligned. + * @return The 32-bit little endian integer from the bytes at @p ptr. + */ + #if (defined(XXH_FORCE_MEMORY_ACCESS) && (XXH_FORCE_MEMORY_ACCESS==3)) /* * Manual byteshift. Best for old compilers which don't inline memcpy. @@ -1014,46 +2650,54 @@ static xxh_u32 XXH_read32(const void* memPtr) { return *(const xxh_u32*) memPtr; #elif (defined(XXH_FORCE_MEMORY_ACCESS) && (XXH_FORCE_MEMORY_ACCESS==1)) /* - * __pack instructions are safer but compiler specific, hence potentially - * problematic for some compilers. - * - * Currently only defined for GCC and ICC. + * __attribute__((aligned(1))) is supported by gcc and clang. Originally the + * documentation claimed that it only increased the alignment, but actually it + * can decrease it on gcc, clang, and icc: + * https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69502, + * https://gcc.godbolt.org/z/xYez1j67Y. */ #ifdef XXH_OLD_NAMES -typedef union { xxh_u32 u32; } __attribute__((packed)) unalign; +typedef union { xxh_u32 u32; } __attribute__((__packed__)) unalign; #endif static xxh_u32 XXH_read32(const void* ptr) { - typedef union { xxh_u32 u32; } __attribute__((packed)) xxh_unalign; - return ((const xxh_unalign*)ptr)->u32; + typedef __attribute__((__aligned__(1))) xxh_u32 xxh_unalign32; + return *((const xxh_unalign32*)ptr); } #else /* * Portable and safe solution. Generally efficient. - * see: https://stackoverflow.com/a/32095106/646947 + * see: https://fastcompression.blogspot.com/2015/08/accessing-unaligned-memory.html */ static xxh_u32 XXH_read32(const void* memPtr) { xxh_u32 val; - memcpy(&val, memPtr, sizeof(val)); + XXH_memcpy(&val, memPtr, sizeof(val)); return val; } #endif /* XXH_FORCE_DIRECT_MEMORY_ACCESS */ -/* *** Endianess *** */ -typedef enum { XXH_bigEndian=0, XXH_littleEndian=1 } XXH_endianess; +/* *** Endianness *** */ /*! - * XXH_CPU_LITTLE_ENDIAN: + * @ingroup tuning + * @def XXH_CPU_LITTLE_ENDIAN + * @brief Whether the target is little endian. + * * Defined to 1 if the target is little endian, or 0 if it is big endian. * It can be defined externally, for example on the compiler command line. * - * If it is not defined, a runtime check (which is usually constant folded) - * is used instead. + * If it is not defined, + * a runtime check (which is usually constant folded) is used instead. + * + * @note + * This is not necessarily defined to an integer constant. + * + * @see XXH_isLittleEndian() for the runtime check. */ #ifndef XXH_CPU_LITTLE_ENDIAN /* @@ -1068,8 +2712,11 @@ typedef enum { XXH_bigEndian=0, XXH_littleEndian=1 } XXH_endianess; || (defined(__BYTE_ORDER__) && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) # define XXH_CPU_LITTLE_ENDIAN 0 # else -/* - * runtime test, presumed to simplify to a constant by compiler +/*! + * @internal + * @brief Runtime check for @ref XXH_CPU_LITTLE_ENDIAN. + * + * Most compilers will constant fold this. */ static int XXH_isLittleEndian(void) { @@ -1098,10 +2745,71 @@ static int XXH_isLittleEndian(void) # define XXH_HAS_BUILTIN(x) 0 #endif + + +/* + * C23 and future versions have standard "unreachable()". + * Once it has been implemented reliably we can add it as an + * additional case: + * + * ``` + * #if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= XXH_C23_VN) + * # include + * # ifdef unreachable + * # define XXH_UNREACHABLE() unreachable() + * # endif + * #endif + * ``` + * + * Note C++23 also has std::unreachable() which can be detected + * as follows: + * ``` + * #if defined(__cpp_lib_unreachable) && (__cpp_lib_unreachable >= 202202L) + * # include + * # define XXH_UNREACHABLE() std::unreachable() + * #endif + * ``` + * NB: `__cpp_lib_unreachable` is defined in the `` header. + * We don't use that as including `` in `extern "C"` blocks + * doesn't work on GCC12 + */ + +#if XXH_HAS_BUILTIN(__builtin_unreachable) +# define XXH_UNREACHABLE() __builtin_unreachable() + +#elif defined(_MSC_VER) +# define XXH_UNREACHABLE() __assume(0) + +#else +# define XXH_UNREACHABLE() +#endif + +#if XXH_HAS_BUILTIN(__builtin_assume) +# define XXH_ASSUME(c) __builtin_assume(c) +#else +# define XXH_ASSUME(c) if (!(c)) { XXH_UNREACHABLE(); } +#endif + +/*! + * @internal + * @def XXH_rotl32(x,r) + * @brief 32-bit rotate left. + * + * @param x The 32-bit integer to be rotated. + * @param r The number of bits to rotate. + * @pre + * @p r > 0 && @p r < 32 + * @note + * @p x and @p r may be evaluated multiple times. + * @return The rotated result. + */ #if !defined(NO_CLANG_BUILTIN) && XXH_HAS_BUILTIN(__builtin_rotateleft32) \ && XXH_HAS_BUILTIN(__builtin_rotateleft64) # define XXH_rotl32 __builtin_rotateleft32 # define XXH_rotl64 __builtin_rotateleft64 +#elif XXH_HAS_BUILTIN(__builtin_stdc_rotate_left) +# define XXH_rotl32 __builtin_stdc_rotate_left +# define XXH_rotl64 __builtin_stdc_rotate_left /* Note: although _rotl exists for minGW (GCC under windows), performance seems poor */ #elif defined(_MSC_VER) # define XXH_rotl32(x,r) _rotl(x,r) @@ -1111,6 +2819,14 @@ static int XXH_isLittleEndian(void) # define XXH_rotl64(x,r) (((x) << (r)) | ((x) >> (64 - (r)))) #endif +/*! + * @internal + * @fn xxh_u32 XXH_swap32(xxh_u32 x) + * @brief A 32-bit byteswap. + * + * @param x The 32-bit integer to byteswap. + * @return @p x, byteswapped. + */ #if defined(_MSC_VER) /* Visual Studio */ # define XXH_swap32 _byteswap_ulong #elif XXH_GCC_VERSION >= 403 @@ -1129,7 +2845,15 @@ static xxh_u32 XXH_swap32 (xxh_u32 x) /* *************************** * Memory reads *****************************/ -typedef enum { XXH_aligned, XXH_unaligned } XXH_alignment; + +/*! + * @internal + * @brief Enum to indicate whether a pointer is aligned. + */ +typedef enum { + XXH_aligned, /*!< Aligned */ + XXH_unaligned /*!< Possibly unaligned */ +} XXH_alignment; /* * XXH_FORCE_MEMORY_ACCESS==3 is an endian-independent byteshift load. @@ -1182,17 +2906,27 @@ XXH_readLE32_align(const void* ptr, XXH_alignment align) /* ************************************* * Misc ***************************************/ +/*! @ingroup public */ XXH_PUBLIC_API unsigned XXH_versionNumber (void) { return XXH_VERSION_NUMBER; } /* ******************************************************************* * 32-bit hash functions *********************************************************************/ -static const xxh_u32 XXH_PRIME32_1 = 0x9E3779B1U; /* 0b10011110001101110111100110110001 */ -static const xxh_u32 XXH_PRIME32_2 = 0x85EBCA77U; /* 0b10000101111010111100101001110111 */ -static const xxh_u32 XXH_PRIME32_3 = 0xC2B2AE3DU; /* 0b11000010101100101010111000111101 */ -static const xxh_u32 XXH_PRIME32_4 = 0x27D4EB2FU; /* 0b00100111110101001110101100101111 */ -static const xxh_u32 XXH_PRIME32_5 = 0x165667B1U; /* 0b00010110010101100110011110110001 */ +/*! + * @} + * @defgroup XXH32_impl XXH32 implementation + * @ingroup impl + * + * Details on the XXH32 implementation. + * @{ + */ + /* #define instead of static const, to be used as initializers */ +#define XXH_PRIME32_1 0x9E3779B1U /*!< 0b10011110001101110111100110110001 */ +#define XXH_PRIME32_2 0x85EBCA77U /*!< 0b10000101111010111100101001110111 */ +#define XXH_PRIME32_3 0xC2B2AE3DU /*!< 0b11000010101100101010111000111101 */ +#define XXH_PRIME32_4 0x27D4EB2FU /*!< 0b00100111110101001110101100101111 */ +#define XXH_PRIME32_5 0x165667B1U /*!< 0b00010110010101100110011110110001 */ #ifdef XXH_OLD_NAMES # define PRIME32_1 XXH_PRIME32_1 @@ -1202,18 +2936,28 @@ static const xxh_u32 XXH_PRIME32_5 = 0x165667B1U; /* 0b00010110010101100110011 # define PRIME32_5 XXH_PRIME32_5 #endif +/*! + * @internal + * @brief Normal stripe processing routine. + * + * This shuffles the bits so that any bit from @p input impacts several bits in + * @p acc. + * + * @param acc The accumulator lane. + * @param input The stripe of input to mix. + * @return The mixed accumulator lane. + */ static xxh_u32 XXH32_round(xxh_u32 acc, xxh_u32 input) { acc += input * XXH_PRIME32_2; acc = XXH_rotl32(acc, 13); acc *= XXH_PRIME32_1; -#if defined(__GNUC__) && defined(__SSE4_1__) && !defined(XXH_ENABLE_AUTOVECTORIZE) +#if (defined(__SSE4_1__) || defined(__aarch64__) || defined(__wasm_simd128__)) && !defined(XXH_ENABLE_AUTOVECTORIZE) /* * UGLY HACK: - * This inline assembly hack forces acc into a normal register. This is the - * only thing that prevents GCC and Clang from autovectorizing the XXH32 - * loop (pragmas and attributes don't work for some resason) without globally - * disabling SSE4.1. + * A compiler fence is used to prevent GCC and Clang from + * autovectorizing the XXH32 loop (pragmas and attributes don't work for some + * reason) without globally disabling SSE4.1. * * The reason we want to avoid vectorization is because despite working on * 4 integers at a time, there are multiple factors slowing XXH32 down on @@ -1238,55 +2982,128 @@ static xxh_u32 XXH32_round(xxh_u32 acc, xxh_u32 input) * can load data, while v3 can multiply. SSE forces them to operate * together. * - * How this hack works: - * __asm__("" // Declare an assembly block but don't declare any instructions - * : // However, as an Input/Output Operand, - * "+r" // constrain a read/write operand (+) as a general purpose register (r). - * (acc) // and set acc as the operand - * ); + * This is also enabled on AArch64, as Clang is *very aggressive* in vectorizing + * the loop. NEON is only faster on the A53, and with the newer cores, it is less + * than half the speed. * - * Because of the 'r', the compiler has promised that seed will be in a - * general purpose register and the '+' says that it will be 'read/write', - * so it has to assume it has changed. It is like volatile without all the - * loads and stores. - * - * Since the argument has to be in a normal register (not an SSE register), - * each time XXH32_round is called, it is impossible to vectorize. + * Additionally, this is used on WASM SIMD128 because it JITs to the same + * SIMD instructions and has the same issue. */ - __asm__("" : "+r" (acc)); + XXH_COMPILER_GUARD(acc); #endif return acc; } -/* mix all bits */ -static xxh_u32 XXH32_avalanche(xxh_u32 h32) +/*! + * @internal + * @brief Mixes all bits to finalize the hash. + * + * The final mix ensures that all input bits have a chance to impact any bit in + * the output digest, resulting in an unbiased distribution. + * + * @param hash The hash to avalanche. + * @return The avalanched hash. + */ +static xxh_u32 XXH32_avalanche(xxh_u32 hash) { - h32 ^= h32 >> 15; - h32 *= XXH_PRIME32_2; - h32 ^= h32 >> 13; - h32 *= XXH_PRIME32_3; - h32 ^= h32 >> 16; - return(h32); + hash ^= hash >> 15; + hash *= XXH_PRIME32_2; + hash ^= hash >> 13; + hash *= XXH_PRIME32_3; + hash ^= hash >> 16; + return hash; } #define XXH_get32bits(p) XXH_readLE32_align(p, align) -static xxh_u32 -XXH32_finalize(xxh_u32 h32, const xxh_u8* ptr, size_t len, XXH_alignment align) +/*! + * @internal + * @brief Sets up the initial accumulator state for XXH32(). + */ +XXH_FORCE_INLINE void +XXH32_initAccs(xxh_u32 *acc, xxh_u32 seed) { -#define XXH_PROCESS1 do { \ - h32 += (*ptr++) * XXH_PRIME32_5; \ - h32 = XXH_rotl32(h32, 11) * XXH_PRIME32_1; \ + XXH_ASSERT(acc != NULL); + acc[0] = seed + XXH_PRIME32_1 + XXH_PRIME32_2; + acc[1] = seed + XXH_PRIME32_2; + acc[2] = seed + 0; + acc[3] = seed - XXH_PRIME32_1; +} + +/*! + * @internal + * @brief Consumes a block of data for XXH32(). + * + * @return the end input pointer. + */ +XXH_FORCE_INLINE const xxh_u8 * +XXH32_consumeLong( + xxh_u32 *XXH_RESTRICT acc, + xxh_u8 const *XXH_RESTRICT input, + size_t len, + XXH_alignment align +) +{ + const xxh_u8* const bEnd = input + len; + const xxh_u8* const limit = bEnd - 15; + XXH_ASSERT(acc != NULL); + XXH_ASSERT(input != NULL); + XXH_ASSERT(len >= 16); + do { + acc[0] = XXH32_round(acc[0], XXH_get32bits(input)); input += 4; + acc[1] = XXH32_round(acc[1], XXH_get32bits(input)); input += 4; + acc[2] = XXH32_round(acc[2], XXH_get32bits(input)); input += 4; + acc[3] = XXH32_round(acc[3], XXH_get32bits(input)); input += 4; + } while (input < limit); + + return input; +} + +/*! + * @internal + * @brief Merges the accumulator lanes together for XXH32() + */ +XXH_FORCE_INLINE XXH_PUREF xxh_u32 +XXH32_mergeAccs(const xxh_u32 *acc) +{ + XXH_ASSERT(acc != NULL); + return XXH_rotl32(acc[0], 1) + XXH_rotl32(acc[1], 7) + + XXH_rotl32(acc[2], 12) + XXH_rotl32(acc[3], 18); +} + +/*! + * @internal + * @brief Processes the last 0-15 bytes of @p ptr. + * + * There may be up to 15 bytes remaining to consume from the input. + * This final stage will digest them to ensure that all input bytes are present + * in the final mix. + * + * @param hash The hash to finalize. + * @param ptr The pointer to the remaining input. + * @param len The remaining length, modulo 16. + * @param align Whether @p ptr is aligned. + * @return The finalized hash. + * @see XXH64_finalize(). + */ +static XXH_PUREF xxh_u32 +XXH32_finalize(xxh_u32 hash, const xxh_u8* ptr, size_t len, XXH_alignment align) +{ +#define XXH_PROCESS1 do { \ + hash += (*ptr++) * XXH_PRIME32_5; \ + hash = XXH_rotl32(hash, 11) * XXH_PRIME32_1; \ } while (0) -#define XXH_PROCESS4 do { \ - h32 += XXH_get32bits(ptr) * XXH_PRIME32_3; \ - ptr += 4; \ - h32 = XXH_rotl32(h32, 17) * XXH_PRIME32_4; \ +#define XXH_PROCESS4 do { \ + hash += XXH_get32bits(ptr) * XXH_PRIME32_3; \ + ptr += 4; \ + hash = XXH_rotl32(hash, 17) * XXH_PRIME32_4; \ } while (0) - /* Compact rerolled version */ - if (XXH_REROLL) { + if (ptr==NULL) XXH_ASSERT(len == 0); + + /* Compact rerolled version; generally faster */ + if (!XXH32_ENDJMP) { len &= 15; while (len >= 4) { XXH_PROCESS4; @@ -1296,49 +3113,49 @@ XXH32_finalize(xxh_u32 h32, const xxh_u8* ptr, size_t len, XXH_alignment align) XXH_PROCESS1; --len; } - return XXH32_avalanche(h32); + return XXH32_avalanche(hash); } else { switch(len&15) /* or switch(bEnd - p) */ { case 12: XXH_PROCESS4; - /* fallthrough */ + XXH_FALLTHROUGH; /* fallthrough */ case 8: XXH_PROCESS4; - /* fallthrough */ + XXH_FALLTHROUGH; /* fallthrough */ case 4: XXH_PROCESS4; - return XXH32_avalanche(h32); + return XXH32_avalanche(hash); case 13: XXH_PROCESS4; - /* fallthrough */ + XXH_FALLTHROUGH; /* fallthrough */ case 9: XXH_PROCESS4; - /* fallthrough */ + XXH_FALLTHROUGH; /* fallthrough */ case 5: XXH_PROCESS4; XXH_PROCESS1; - return XXH32_avalanche(h32); + return XXH32_avalanche(hash); case 14: XXH_PROCESS4; - /* fallthrough */ + XXH_FALLTHROUGH; /* fallthrough */ case 10: XXH_PROCESS4; - /* fallthrough */ + XXH_FALLTHROUGH; /* fallthrough */ case 6: XXH_PROCESS4; XXH_PROCESS1; XXH_PROCESS1; - return XXH32_avalanche(h32); + return XXH32_avalanche(hash); case 15: XXH_PROCESS4; - /* fallthrough */ + XXH_FALLTHROUGH; /* fallthrough */ case 11: XXH_PROCESS4; - /* fallthrough */ + XXH_FALLTHROUGH; /* fallthrough */ case 7: XXH_PROCESS4; - /* fallthrough */ + XXH_FALLTHROUGH; /* fallthrough */ case 3: XXH_PROCESS1; - /* fallthrough */ + XXH_FALLTHROUGH; /* fallthrough */ case 2: XXH_PROCESS1; - /* fallthrough */ + XXH_FALLTHROUGH; /* fallthrough */ case 1: XXH_PROCESS1; - /* fallthrough */ - case 0: return XXH32_avalanche(h32); + XXH_FALLTHROUGH; /* fallthrough */ + case 0: return XXH32_avalanche(hash); } XXH_ASSERT(0); - return h32; /* reaching this point is deemed impossible */ + return hash; /* reaching this point is deemed impossible */ } } @@ -1350,35 +3167,28 @@ XXH32_finalize(xxh_u32 h32, const xxh_u8* ptr, size_t len, XXH_alignment align) # undef XXH_PROCESS4 #endif -XXH_FORCE_INLINE xxh_u32 +/*! + * @internal + * @brief The implementation for @ref XXH32(). + * + * @param input , len , seed Directly passed from @ref XXH32(). + * @param align Whether @p input is aligned. + * @return The calculated hash. + */ +XXH_FORCE_INLINE XXH_PUREF xxh_u32 XXH32_endian_align(const xxh_u8* input, size_t len, xxh_u32 seed, XXH_alignment align) { - const xxh_u8* bEnd = input + len; xxh_u32 h32; -#if defined(XXH_ACCEPT_NULL_INPUT_POINTER) && (XXH_ACCEPT_NULL_INPUT_POINTER>=1) - if (input==NULL) { - len=0; - bEnd=input=(const xxh_u8*)(size_t)16; - } -#endif + if (input==NULL) XXH_ASSERT(len == 0); if (len>=16) { - const xxh_u8* const limit = bEnd - 15; - xxh_u32 v1 = seed + XXH_PRIME32_1 + XXH_PRIME32_2; - xxh_u32 v2 = seed + XXH_PRIME32_2; - xxh_u32 v3 = seed + 0; - xxh_u32 v4 = seed - XXH_PRIME32_1; + xxh_u32 acc[4]; + XXH32_initAccs(acc, seed); - do { - v1 = XXH32_round(v1, XXH_get32bits(input)); input += 4; - v2 = XXH32_round(v2, XXH_get32bits(input)); input += 4; - v3 = XXH32_round(v3, XXH_get32bits(input)); input += 4; - v4 = XXH32_round(v4, XXH_get32bits(input)); input += 4; - } while (input < limit); + input = XXH32_consumeLong(acc, input, len, align); - h32 = XXH_rotl32(v1, 1) + XXH_rotl32(v2, 7) - + XXH_rotl32(v3, 12) + XXH_rotl32(v4, 18); + h32 = XXH32_mergeAccs(acc); } else { h32 = seed + XXH_PRIME32_5; } @@ -1388,18 +3198,16 @@ XXH32_endian_align(const xxh_u8* input, size_t len, xxh_u32 seed, XXH_alignment return XXH32_finalize(h32, input, len&15, align); } - +/*! @ingroup XXH32_family */ XXH_PUBLIC_API XXH32_hash_t XXH32 (const void* input, size_t len, XXH32_hash_t seed) { -#if 0 +#if !defined(XXH_NO_STREAM) && XXH_SIZE_OPT >= 2 /* Simple version, good for code maintenance, but unfortunately slow for small inputs */ XXH32_state_t state; XXH32_reset(&state, seed); XXH32_update(&state, (const xxh_u8*)input, len); return XXH32_digest(&state); - #else - if (XXH_FORCE_ALIGN_CHECK) { if ((((size_t)input) & 3) == 0) { /* Input is 4-bytes aligned, leverage the speed benefit */ return XXH32_endian_align((const xxh_u8*)input, len, seed, XXH_aligned); @@ -1412,93 +3220,75 @@ XXH_PUBLIC_API XXH32_hash_t XXH32 (const void* input, size_t len, XXH32_hash_t s /******* Hash streaming *******/ - +#ifndef XXH_NO_STREAM +/*! @ingroup XXH32_family */ XXH_PUBLIC_API XXH32_state_t* XXH32_createState(void) { return (XXH32_state_t*)XXH_malloc(sizeof(XXH32_state_t)); } +/*! @ingroup XXH32_family */ XXH_PUBLIC_API XXH_errorcode XXH32_freeState(XXH32_state_t* statePtr) { XXH_free(statePtr); return XXH_OK; } +/*! @ingroup XXH32_family */ XXH_PUBLIC_API void XXH32_copyState(XXH32_state_t* dstState, const XXH32_state_t* srcState) { - memcpy(dstState, srcState, sizeof(*dstState)); + XXH_memcpy(dstState, srcState, sizeof(*dstState)); } +/*! @ingroup XXH32_family */ XXH_PUBLIC_API XXH_errorcode XXH32_reset(XXH32_state_t* statePtr, XXH32_hash_t seed) { - XXH32_state_t state; /* using a local state to memcpy() in order to avoid strict-aliasing warnings */ - memset(&state, 0, sizeof(state)); - state.v1 = seed + XXH_PRIME32_1 + XXH_PRIME32_2; - state.v2 = seed + XXH_PRIME32_2; - state.v3 = seed + 0; - state.v4 = seed - XXH_PRIME32_1; - /* do not write into reserved, planned to be removed in a future version */ - memcpy(statePtr, &state, sizeof(state) - sizeof(state.reserved)); + XXH_ASSERT(statePtr != NULL); + XXH_memset(statePtr, 0, sizeof(*statePtr)); + XXH32_initAccs(statePtr->acc, seed); return XXH_OK; } +/*! @ingroup XXH32_family */ XXH_PUBLIC_API XXH_errorcode XXH32_update(XXH32_state_t* state, const void* input, size_t len) { - if (input==NULL) -#if defined(XXH_ACCEPT_NULL_INPUT_POINTER) && (XXH_ACCEPT_NULL_INPUT_POINTER>=1) + if (input==NULL) { + XXH_ASSERT(len == 0); return XXH_OK; -#else - return XXH_ERROR; -#endif + } - { const xxh_u8* p = (const xxh_u8*)input; - const xxh_u8* const bEnd = p + len; + state->total_len_32 += (XXH32_hash_t)len; + state->large_len |= (XXH32_hash_t)((len>=16) | (state->total_len_32>=16)); - state->total_len_32 += (XXH32_hash_t)len; - state->large_len |= (XXH32_hash_t)((len>=16) | (state->total_len_32>=16)); + XXH_ASSERT(state->bufferedSize < sizeof(state->buffer)); + if (len < sizeof(state->buffer) - state->bufferedSize) { /* fill in tmp buffer */ + XXH_memcpy(state->buffer + state->bufferedSize, input, len); + state->bufferedSize += (XXH32_hash_t)len; + return XXH_OK; + } - if (state->memsize + len < 16) { /* fill in tmp buffer */ - XXH_memcpy((xxh_u8*)(state->mem32) + state->memsize, input, len); - state->memsize += (XXH32_hash_t)len; - return XXH_OK; + { const xxh_u8* xinput = (const xxh_u8*)input; + const xxh_u8* const bEnd = xinput + len; + + if (state->bufferedSize) { /* non-empty buffer: complete first */ + XXH_memcpy(state->buffer + state->bufferedSize, xinput, sizeof(state->buffer) - state->bufferedSize); + xinput += sizeof(state->buffer) - state->bufferedSize; + /* then process one round */ + (void)XXH32_consumeLong(state->acc, state->buffer, sizeof(state->buffer), XXH_aligned); + state->bufferedSize = 0; } - if (state->memsize) { /* some data left from previous update */ - XXH_memcpy((xxh_u8*)(state->mem32) + state->memsize, input, 16-state->memsize); - { const xxh_u32* p32 = state->mem32; - state->v1 = XXH32_round(state->v1, XXH_readLE32(p32)); p32++; - state->v2 = XXH32_round(state->v2, XXH_readLE32(p32)); p32++; - state->v3 = XXH32_round(state->v3, XXH_readLE32(p32)); p32++; - state->v4 = XXH32_round(state->v4, XXH_readLE32(p32)); - } - p += 16-state->memsize; - state->memsize = 0; + XXH_ASSERT(xinput <= bEnd); + if ((size_t)(bEnd - xinput) >= sizeof(state->buffer)) { + /* Process the remaining data */ + xinput = XXH32_consumeLong(state->acc, xinput, (size_t)(bEnd - xinput), XXH_unaligned); } - if (p <= bEnd-16) { - const xxh_u8* const limit = bEnd - 16; - xxh_u32 v1 = state->v1; - xxh_u32 v2 = state->v2; - xxh_u32 v3 = state->v3; - xxh_u32 v4 = state->v4; - - do { - v1 = XXH32_round(v1, XXH_readLE32(p)); p+=4; - v2 = XXH32_round(v2, XXH_readLE32(p)); p+=4; - v3 = XXH32_round(v3, XXH_readLE32(p)); p+=4; - v4 = XXH32_round(v4, XXH_readLE32(p)); p+=4; - } while (p<=limit); - - state->v1 = v1; - state->v2 = v2; - state->v3 = v3; - state->v4 = v4; - } - - if (p < bEnd) { - XXH_memcpy(state->mem32, p, (size_t)(bEnd-p)); - state->memsize = (unsigned)(bEnd-p); + if (xinput < bEnd) { + /* Copy the leftover to the tmp buffer */ + XXH_memcpy(state->buffer, xinput, (size_t)(bEnd-xinput)); + state->bufferedSize = (unsigned)(bEnd-xinput); } } @@ -1506,47 +3296,33 @@ XXH32_update(XXH32_state_t* state, const void* input, size_t len) } -XXH_PUBLIC_API XXH32_hash_t XXH32_digest (const XXH32_state_t* state) +/*! @ingroup XXH32_family */ +XXH_PUBLIC_API XXH32_hash_t XXH32_digest(const XXH32_state_t* state) { xxh_u32 h32; if (state->large_len) { - h32 = XXH_rotl32(state->v1, 1) - + XXH_rotl32(state->v2, 7) - + XXH_rotl32(state->v3, 12) - + XXH_rotl32(state->v4, 18); + h32 = XXH32_mergeAccs(state->acc); } else { - h32 = state->v3 /* == seed */ + XXH_PRIME32_5; + h32 = state->acc[2] /* == seed */ + XXH_PRIME32_5; } h32 += state->total_len_32; - return XXH32_finalize(h32, (const xxh_u8*)state->mem32, state->memsize, XXH_aligned); + return XXH32_finalize(h32, state->buffer, state->bufferedSize, XXH_aligned); } - +#endif /* !XXH_NO_STREAM */ /******* Canonical representation *******/ -/* - * The default return values from XXH functions are unsigned 32 and 64 bit - * integers. - * - * The canonical representation uses big endian convention, the same convention - * as human-readable numbers (large digits first). - * - * This way, hash values can be written into a file or buffer, remaining - * comparable across different systems. - * - * The following functions allow transformation of hash values to and from their - * canonical format. - */ +/*! @ingroup XXH32_family */ XXH_PUBLIC_API void XXH32_canonicalFromHash(XXH32_canonical_t* dst, XXH32_hash_t hash) { XXH_STATIC_ASSERT(sizeof(XXH32_canonical_t) == sizeof(XXH32_hash_t)); if (XXH_CPU_LITTLE_ENDIAN) hash = XXH_swap32(hash); - memcpy(dst, &hash, sizeof(*dst)); + XXH_memcpy(dst, &hash, sizeof(*dst)); } - +/*! @ingroup XXH32_family */ XXH_PUBLIC_API XXH32_hash_t XXH32_hashFromCanonical(const XXH32_canonical_t* src) { return XXH_readBE32(src); @@ -1558,7 +3334,11 @@ XXH_PUBLIC_API XXH32_hash_t XXH32_hashFromCanonical(const XXH32_canonical_t* src /* ******************************************************************* * 64-bit hash functions *********************************************************************/ - +/*! + * @} + * @ingroup impl + * @{ + */ /******* Memory access *******/ typedef XXH64_hash_t xxh_u64; @@ -1567,35 +3347,6 @@ typedef XXH64_hash_t xxh_u64; # define U64 xxh_u64 #endif -/*! - * XXH_REROLL_XXH64: - * Whether to reroll the XXH64_finalize() loop. - * - * Just like XXH32, we can unroll the XXH64_finalize() loop. This can be a - * performance gain on 64-bit hosts, as only one jump is required. - * - * However, on 32-bit hosts, because arithmetic needs to be done with two 32-bit - * registers, and 64-bit arithmetic needs to be simulated, it isn't beneficial - * to unroll. The code becomes ridiculously large (the largest function in the - * binary on i386!), and rerolling it saves anywhere from 3kB to 20kB. It is - * also slightly faster because it fits into cache better and is more likely - * to be inlined by the compiler. - * - * If XXH_REROLL is defined, this is ignored and the loop is always rerolled. - */ -#ifndef XXH_REROLL_XXH64 -# if (defined(__ILP32__) || defined(_ILP32)) /* ILP32 is often defined on 32-bit GCC family */ \ - || !(defined(__x86_64__) || defined(_M_X64) || defined(_M_AMD64) /* x86-64 */ \ - || defined(_M_ARM64) || defined(__aarch64__) || defined(__arm64__) /* aarch64 */ \ - || defined(__PPC64__) || defined(__PPC64LE__) || defined(__ppc64__) || defined(__powerpc64__) /* ppc64 */ \ - || defined(__mips64__) || defined(__mips64)) /* mips64 */ \ - || (!defined(SIZE_MAX) || SIZE_MAX < ULLONG_MAX) /* check limits */ -# define XXH_REROLL_XXH64 1 -# else -# define XXH_REROLL_XXH64 0 -# endif -#endif /* !defined(XXH_REROLL_XXH64) */ - #if (defined(XXH_FORCE_MEMORY_ACCESS) && (XXH_FORCE_MEMORY_ACCESS==3)) /* * Manual byteshift. Best for old compilers which don't inline memcpy. @@ -1604,35 +3355,39 @@ typedef XXH64_hash_t xxh_u64; #elif (defined(XXH_FORCE_MEMORY_ACCESS) && (XXH_FORCE_MEMORY_ACCESS==2)) /* Force direct memory access. Only works on CPU which support unaligned memory access in hardware */ -static xxh_u64 XXH_read64(const void* memPtr) { return *(const xxh_u64*) memPtr; } +static xxh_u64 XXH_read64(const void* memPtr) +{ + return *(const xxh_u64*) memPtr; +} #elif (defined(XXH_FORCE_MEMORY_ACCESS) && (XXH_FORCE_MEMORY_ACCESS==1)) /* - * __pack instructions are safer, but compiler specific, hence potentially - * problematic for some compilers. - * - * Currently only defined for GCC and ICC. + * __attribute__((aligned(1))) is supported by gcc and clang. Originally the + * documentation claimed that it only increased the alignment, but actually it + * can decrease it on gcc, clang, and icc: + * https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69502, + * https://gcc.godbolt.org/z/xYez1j67Y. */ #ifdef XXH_OLD_NAMES -typedef union { xxh_u32 u32; xxh_u64 u64; } __attribute__((packed)) unalign64; +typedef union { xxh_u32 u32; xxh_u64 u64; } __attribute__((__packed__)) unalign64; #endif static xxh_u64 XXH_read64(const void* ptr) { - typedef union { xxh_u32 u32; xxh_u64 u64; } __attribute__((packed)) xxh_unalign64; - return ((const xxh_unalign64*)ptr)->u64; + typedef __attribute__((__aligned__(1))) xxh_u64 xxh_unalign64; + return *((const xxh_unalign64*)ptr); } #else /* * Portable and safe solution. Generally efficient. - * see: https://stackoverflow.com/a/32095106/646947 + * see: https://fastcompression.blogspot.com/2015/08/accessing-unaligned-memory.html */ static xxh_u64 XXH_read64(const void* memPtr) { xxh_u64 val; - memcpy(&val, memPtr, sizeof(val)); + XXH_memcpy(&val, memPtr, sizeof(val)); return val; } @@ -1643,7 +3398,7 @@ static xxh_u64 XXH_read64(const void* memPtr) #elif XXH_GCC_VERSION >= 403 # define XXH_swap64 __builtin_bswap64 #else -static xxh_u64 XXH_swap64 (xxh_u64 x) +static xxh_u64 XXH_swap64(xxh_u64 x) { return ((x << 56) & 0xff00000000000000ULL) | ((x << 40) & 0x00ff000000000000ULL) | @@ -1709,12 +3464,20 @@ XXH_readLE64_align(const void* ptr, XXH_alignment align) /******* xxh64 *******/ - -static const xxh_u64 XXH_PRIME64_1 = 0x9E3779B185EBCA87ULL; /* 0b1001111000110111011110011011000110000101111010111100101010000111 */ -static const xxh_u64 XXH_PRIME64_2 = 0xC2B2AE3D27D4EB4FULL; /* 0b1100001010110010101011100011110100100111110101001110101101001111 */ -static const xxh_u64 XXH_PRIME64_3 = 0x165667B19E3779F9ULL; /* 0b0001011001010110011001111011000110011110001101110111100111111001 */ -static const xxh_u64 XXH_PRIME64_4 = 0x85EBCA77C2B2AE63ULL; /* 0b1000010111101011110010100111011111000010101100101010111001100011 */ -static const xxh_u64 XXH_PRIME64_5 = 0x27D4EB2F165667C5ULL; /* 0b0010011111010100111010110010111100010110010101100110011111000101 */ +/*! + * @} + * @defgroup XXH64_impl XXH64 implementation + * @ingroup impl + * + * Details on the XXH64 implementation. + * @{ + */ +/* #define rather that static const, to be used as initializers */ +#define XXH_PRIME64_1 0x9E3779B185EBCA87ULL /*!< 0b1001111000110111011110011011000110000101111010111100101010000111 */ +#define XXH_PRIME64_2 0xC2B2AE3D27D4EB4FULL /*!< 0b1100001010110010101011100011110100100111110101001110101101001111 */ +#define XXH_PRIME64_3 0x165667B19E3779F9ULL /*!< 0b0001011001010110011001111011000110011110001101110111100111111001 */ +#define XXH_PRIME64_4 0x85EBCA77C2B2AE63ULL /*!< 0b1000010111101011110010100111011111000010101100101010111001100011 */ +#define XXH_PRIME64_5 0x27D4EB2F165667C5ULL /*!< 0b0010011111010100111010110010111100010110010101100110011111000101 */ #ifdef XXH_OLD_NAMES # define PRIME64_1 XXH_PRIME64_1 @@ -1724,11 +3487,29 @@ static const xxh_u64 XXH_PRIME64_5 = 0x27D4EB2F165667C5ULL; /* 0b0010011111010 # define PRIME64_5 XXH_PRIME64_5 #endif +/*! @copydoc XXH32_round */ static xxh_u64 XXH64_round(xxh_u64 acc, xxh_u64 input) { acc += input * XXH_PRIME64_2; acc = XXH_rotl64(acc, 31); acc *= XXH_PRIME64_1; +#if (defined(__AVX512F__)) && !defined(XXH_ENABLE_AUTOVECTORIZE) + /* + * DISABLE AUTOVECTORIZATION: + * A compiler fence is used to prevent GCC and Clang from + * autovectorizing the XXH64 loop (pragmas and attributes don't work for some + * reason) without globally disabling AVX512. + * + * Autovectorization of XXH64 tends to be detrimental, + * though the exact outcome may change depending on exact cpu and compiler version. + * For information, it has been reported as detrimental for Skylake-X, + * but possibly beneficial for Zen4. + * + * The default is to disable auto-vectorization, + * but you can select to enable it instead using `XXH_ENABLE_AUTOVECTORIZE` build variable. + */ + XXH_COMPILER_GUARD(acc); +#endif return acc; } @@ -1740,142 +3521,138 @@ static xxh_u64 XXH64_mergeRound(xxh_u64 acc, xxh_u64 val) return acc; } -static xxh_u64 XXH64_avalanche(xxh_u64 h64) +/*! @copydoc XXH32_avalanche */ +static xxh_u64 XXH64_avalanche(xxh_u64 hash) { - h64 ^= h64 >> 33; - h64 *= XXH_PRIME64_2; - h64 ^= h64 >> 29; - h64 *= XXH_PRIME64_3; - h64 ^= h64 >> 32; - return h64; + hash ^= hash >> 33; + hash *= XXH_PRIME64_2; + hash ^= hash >> 29; + hash *= XXH_PRIME64_3; + hash ^= hash >> 32; + return hash; } #define XXH_get64bits(p) XXH_readLE64_align(p, align) -static xxh_u64 -XXH64_finalize(xxh_u64 h64, const xxh_u8* ptr, size_t len, XXH_alignment align) +/*! + * @internal + * @brief Sets up the initial accumulator state for XXH64(). + */ +XXH_FORCE_INLINE void +XXH64_initAccs(xxh_u64 *acc, xxh_u64 seed) { -#define XXH_PROCESS1_64 do { \ - h64 ^= (*ptr++) * XXH_PRIME64_5; \ - h64 = XXH_rotl64(h64, 11) * XXH_PRIME64_1; \ -} while (0) + XXH_ASSERT(acc != NULL); + acc[0] = seed + XXH_PRIME64_1 + XXH_PRIME64_2; + acc[1] = seed + XXH_PRIME64_2; + acc[2] = seed + 0; + acc[3] = seed - XXH_PRIME64_1; +} -#define XXH_PROCESS4_64 do { \ - h64 ^= (xxh_u64)(XXH_get32bits(ptr)) * XXH_PRIME64_1; \ - ptr += 4; \ - h64 = XXH_rotl64(h64, 23) * XXH_PRIME64_2 + XXH_PRIME64_3; \ -} while (0) - -#define XXH_PROCESS8_64 do { \ - xxh_u64 const k1 = XXH64_round(0, XXH_get64bits(ptr)); \ - ptr += 8; \ - h64 ^= k1; \ - h64 = XXH_rotl64(h64,27) * XXH_PRIME64_1 + XXH_PRIME64_4; \ -} while (0) - - /* Rerolled version for 32-bit targets is faster and much smaller. */ - if (XXH_REROLL || XXH_REROLL_XXH64) { - len &= 31; - while (len >= 8) { - XXH_PROCESS8_64; - len -= 8; +/*! + * @internal + * @brief Consumes a block of data for XXH64(). + * + * @return the end input pointer. + */ +XXH_FORCE_INLINE const xxh_u8 * +XXH64_consumeLong( + xxh_u64 *XXH_RESTRICT acc, + xxh_u8 const *XXH_RESTRICT input, + size_t len, + XXH_alignment align +) +{ + const xxh_u8* const bEnd = input + len; + const xxh_u8* const limit = bEnd - 31; + XXH_ASSERT(acc != NULL); + XXH_ASSERT(input != NULL); + XXH_ASSERT(len >= 32); + do { + /* reroll on 32-bit */ + if (sizeof(void *) < sizeof(xxh_u64)) { + size_t i; + for (i = 0; i < 4; i++) { + acc[i] = XXH64_round(acc[i], XXH_get64bits(input)); + input += 8; + } + } else { + acc[0] = XXH64_round(acc[0], XXH_get64bits(input)); input += 8; + acc[1] = XXH64_round(acc[1], XXH_get64bits(input)); input += 8; + acc[2] = XXH64_round(acc[2], XXH_get64bits(input)); input += 8; + acc[3] = XXH64_round(acc[3], XXH_get64bits(input)); input += 8; } - if (len >= 4) { - XXH_PROCESS4_64; - len -= 4; - } - while (len > 0) { - XXH_PROCESS1_64; - --len; - } - return XXH64_avalanche(h64); - } else { - switch(len & 31) { - case 24: XXH_PROCESS8_64; - /* fallthrough */ - case 16: XXH_PROCESS8_64; - /* fallthrough */ - case 8: XXH_PROCESS8_64; - return XXH64_avalanche(h64); - - case 28: XXH_PROCESS8_64; - /* fallthrough */ - case 20: XXH_PROCESS8_64; - /* fallthrough */ - case 12: XXH_PROCESS8_64; - /* fallthrough */ - case 4: XXH_PROCESS4_64; - return XXH64_avalanche(h64); - - case 25: XXH_PROCESS8_64; - /* fallthrough */ - case 17: XXH_PROCESS8_64; - /* fallthrough */ - case 9: XXH_PROCESS8_64; - XXH_PROCESS1_64; - return XXH64_avalanche(h64); - - case 29: XXH_PROCESS8_64; - /* fallthrough */ - case 21: XXH_PROCESS8_64; - /* fallthrough */ - case 13: XXH_PROCESS8_64; - /* fallthrough */ - case 5: XXH_PROCESS4_64; - XXH_PROCESS1_64; - return XXH64_avalanche(h64); - - case 26: XXH_PROCESS8_64; - /* fallthrough */ - case 18: XXH_PROCESS8_64; - /* fallthrough */ - case 10: XXH_PROCESS8_64; - XXH_PROCESS1_64; - XXH_PROCESS1_64; - return XXH64_avalanche(h64); - - case 30: XXH_PROCESS8_64; - /* fallthrough */ - case 22: XXH_PROCESS8_64; - /* fallthrough */ - case 14: XXH_PROCESS8_64; - /* fallthrough */ - case 6: XXH_PROCESS4_64; - XXH_PROCESS1_64; - XXH_PROCESS1_64; - return XXH64_avalanche(h64); - - case 27: XXH_PROCESS8_64; - /* fallthrough */ - case 19: XXH_PROCESS8_64; - /* fallthrough */ - case 11: XXH_PROCESS8_64; - XXH_PROCESS1_64; - XXH_PROCESS1_64; - XXH_PROCESS1_64; - return XXH64_avalanche(h64); - - case 31: XXH_PROCESS8_64; - /* fallthrough */ - case 23: XXH_PROCESS8_64; - /* fallthrough */ - case 15: XXH_PROCESS8_64; - /* fallthrough */ - case 7: XXH_PROCESS4_64; - /* fallthrough */ - case 3: XXH_PROCESS1_64; - /* fallthrough */ - case 2: XXH_PROCESS1_64; - /* fallthrough */ - case 1: XXH_PROCESS1_64; - /* fallthrough */ - case 0: return XXH64_avalanche(h64); + } while (input < limit); + + return input; +} + +/*! + * @internal + * @brief Merges the accumulator lanes together for XXH64() + */ +XXH_FORCE_INLINE XXH_PUREF xxh_u64 +XXH64_mergeAccs(const xxh_u64 *acc) +{ + XXH_ASSERT(acc != NULL); + { + xxh_u64 h64 = XXH_rotl64(acc[0], 1) + XXH_rotl64(acc[1], 7) + + XXH_rotl64(acc[2], 12) + XXH_rotl64(acc[3], 18); + /* reroll on 32-bit */ + if (sizeof(void *) < sizeof(xxh_u64)) { + size_t i; + for (i = 0; i < 4; i++) { + h64 = XXH64_mergeRound(h64, acc[i]); + } + } else { + h64 = XXH64_mergeRound(h64, acc[0]); + h64 = XXH64_mergeRound(h64, acc[1]); + h64 = XXH64_mergeRound(h64, acc[2]); + h64 = XXH64_mergeRound(h64, acc[3]); } + return h64; } - /* impossible to reach */ - XXH_ASSERT(0); - return 0; /* unreachable, but some compilers complain without it */ +} + +/*! + * @internal + * @brief Processes the last 0-31 bytes of @p ptr. + * + * There may be up to 31 bytes remaining to consume from the input. + * This final stage will digest them to ensure that all input bytes are present + * in the final mix. + * + * @param hash The hash to finalize. + * @param ptr The pointer to the remaining input. + * @param len The remaining length, modulo 32. + * @param align Whether @p ptr is aligned. + * @return The finalized hash + * @see XXH32_finalize(). + */ +XXH_STATIC XXH_PUREF xxh_u64 +XXH64_finalize(xxh_u64 hash, const xxh_u8* ptr, size_t len, XXH_alignment align) +{ + if (ptr==NULL) XXH_ASSERT(len == 0); + len &= 31; + while (len >= 8) { + xxh_u64 const k1 = XXH64_round(0, XXH_get64bits(ptr)); + ptr += 8; + hash ^= k1; + hash = XXH_rotl64(hash,27) * XXH_PRIME64_1 + XXH_PRIME64_4; + len -= 8; + } + if (len >= 4) { + hash ^= (xxh_u64)(XXH_get32bits(ptr)) * XXH_PRIME64_1; + ptr += 4; + hash = XXH_rotl64(hash, 23) * XXH_PRIME64_2 + XXH_PRIME64_3; + len -= 4; + } + while (len > 0) { + hash ^= (*ptr++) * XXH_PRIME64_5; + hash = XXH_rotl64(hash, 11) * XXH_PRIME64_1; + --len; + } + return XXH64_avalanche(hash); } #ifdef XXH_OLD_NAMES @@ -1888,39 +3665,27 @@ XXH64_finalize(xxh_u64 h64, const xxh_u8* ptr, size_t len, XXH_alignment align) # undef XXH_PROCESS8_64 #endif -XXH_FORCE_INLINE xxh_u64 +/*! + * @internal + * @brief The implementation for @ref XXH64(). + * + * @param input , len , seed Directly passed from @ref XXH64(). + * @param align Whether @p input is aligned. + * @return The calculated hash. + */ +XXH_FORCE_INLINE XXH_PUREF xxh_u64 XXH64_endian_align(const xxh_u8* input, size_t len, xxh_u64 seed, XXH_alignment align) { - const xxh_u8* bEnd = input + len; xxh_u64 h64; + if (input==NULL) XXH_ASSERT(len == 0); -#if defined(XXH_ACCEPT_NULL_INPUT_POINTER) && (XXH_ACCEPT_NULL_INPUT_POINTER>=1) - if (input==NULL) { - len=0; - bEnd=input=(const xxh_u8*)(size_t)32; - } -#endif + if (len>=32) { /* Process a large block of data */ + xxh_u64 acc[4]; + XXH64_initAccs(acc, seed); - if (len>=32) { - const xxh_u8* const limit = bEnd - 32; - xxh_u64 v1 = seed + XXH_PRIME64_1 + XXH_PRIME64_2; - xxh_u64 v2 = seed + XXH_PRIME64_2; - xxh_u64 v3 = seed + 0; - xxh_u64 v4 = seed - XXH_PRIME64_1; - - do { - v1 = XXH64_round(v1, XXH_get64bits(input)); input+=8; - v2 = XXH64_round(v2, XXH_get64bits(input)); input+=8; - v3 = XXH64_round(v3, XXH_get64bits(input)); input+=8; - v4 = XXH64_round(v4, XXH_get64bits(input)); input+=8; - } while (input<=limit); - - h64 = XXH_rotl64(v1, 1) + XXH_rotl64(v2, 7) + XXH_rotl64(v3, 12) + XXH_rotl64(v4, 18); - h64 = XXH64_mergeRound(h64, v1); - h64 = XXH64_mergeRound(h64, v2); - h64 = XXH64_mergeRound(h64, v3); - h64 = XXH64_mergeRound(h64, v4); + input = XXH64_consumeLong(acc, input, len, align); + h64 = XXH64_mergeAccs(acc); } else { h64 = seed + XXH_PRIME64_5; } @@ -1931,17 +3696,16 @@ XXH64_endian_align(const xxh_u8* input, size_t len, xxh_u64 seed, XXH_alignment } -XXH_PUBLIC_API XXH64_hash_t XXH64 (const void* input, size_t len, XXH64_hash_t seed) +/*! @ingroup XXH64_family */ +XXH_PUBLIC_API XXH64_hash_t XXH64 (XXH_NOESCAPE const void* input, size_t len, XXH64_hash_t seed) { -#if 0 +#if !defined(XXH_NO_STREAM) && XXH_SIZE_OPT >= 2 /* Simple version, good for code maintenance, but unfortunately slow for small inputs */ XXH64_state_t state; XXH64_reset(&state, seed); XXH64_update(&state, (const xxh_u8*)input, len); return XXH64_digest(&state); - #else - if (XXH_FORCE_ALIGN_CHECK) { if ((((size_t)input) & 7)==0) { /* Input is aligned, let's leverage the speed advantage */ return XXH64_endian_align((const xxh_u8*)input, len, seed, XXH_aligned); @@ -1953,89 +3717,73 @@ XXH_PUBLIC_API XXH64_hash_t XXH64 (const void* input, size_t len, XXH64_hash_t s } /******* Hash Streaming *******/ - +#ifndef XXH_NO_STREAM +/*! @ingroup XXH64_family*/ XXH_PUBLIC_API XXH64_state_t* XXH64_createState(void) { return (XXH64_state_t*)XXH_malloc(sizeof(XXH64_state_t)); } +/*! @ingroup XXH64_family */ XXH_PUBLIC_API XXH_errorcode XXH64_freeState(XXH64_state_t* statePtr) { XXH_free(statePtr); return XXH_OK; } -XXH_PUBLIC_API void XXH64_copyState(XXH64_state_t* dstState, const XXH64_state_t* srcState) +/*! @ingroup XXH64_family */ +XXH_PUBLIC_API void XXH64_copyState(XXH_NOESCAPE XXH64_state_t* dstState, const XXH64_state_t* srcState) { - memcpy(dstState, srcState, sizeof(*dstState)); + XXH_memcpy(dstState, srcState, sizeof(*dstState)); } -XXH_PUBLIC_API XXH_errorcode XXH64_reset(XXH64_state_t* statePtr, XXH64_hash_t seed) +/*! @ingroup XXH64_family */ +XXH_PUBLIC_API XXH_errorcode XXH64_reset(XXH_NOESCAPE XXH64_state_t* statePtr, XXH64_hash_t seed) { - XXH64_state_t state; /* use a local state to memcpy() in order to avoid strict-aliasing warnings */ - memset(&state, 0, sizeof(state)); - state.v1 = seed + XXH_PRIME64_1 + XXH_PRIME64_2; - state.v2 = seed + XXH_PRIME64_2; - state.v3 = seed + 0; - state.v4 = seed - XXH_PRIME64_1; - /* do not write into reserved64, might be removed in a future version */ - memcpy(statePtr, &state, sizeof(state) - sizeof(state.reserved64)); + XXH_ASSERT(statePtr != NULL); + XXH_memset(statePtr, 0, sizeof(*statePtr)); + XXH64_initAccs(statePtr->acc, seed); return XXH_OK; } +/*! @ingroup XXH64_family */ XXH_PUBLIC_API XXH_errorcode -XXH64_update (XXH64_state_t* state, const void* input, size_t len) +XXH64_update (XXH_NOESCAPE XXH64_state_t* state, XXH_NOESCAPE const void* input, size_t len) { - if (input==NULL) -#if defined(XXH_ACCEPT_NULL_INPUT_POINTER) && (XXH_ACCEPT_NULL_INPUT_POINTER>=1) + if (input==NULL) { + XXH_ASSERT(len == 0); return XXH_OK; -#else - return XXH_ERROR; -#endif + } - { const xxh_u8* p = (const xxh_u8*)input; - const xxh_u8* const bEnd = p + len; + state->total_len += len; - state->total_len += len; + XXH_ASSERT(state->bufferedSize <= sizeof(state->buffer)); + if (len < sizeof(state->buffer) - state->bufferedSize) { /* fill in tmp buffer */ + XXH_memcpy(state->buffer + state->bufferedSize, input, len); + state->bufferedSize += (XXH32_hash_t)len; + return XXH_OK; + } - if (state->memsize + len < 32) { /* fill in tmp buffer */ - XXH_memcpy(((xxh_u8*)state->mem64) + state->memsize, input, len); - state->memsize += (xxh_u32)len; - return XXH_OK; + { const xxh_u8* xinput = (const xxh_u8*)input; + const xxh_u8* const bEnd = xinput + len; + + if (state->bufferedSize) { /* non-empty buffer => complete first */ + XXH_memcpy(state->buffer + state->bufferedSize, xinput, sizeof(state->buffer) - state->bufferedSize); + xinput += sizeof(state->buffer) - state->bufferedSize; + /* and process one round */ + (void)XXH64_consumeLong(state->acc, state->buffer, sizeof(state->buffer), XXH_aligned); + state->bufferedSize = 0; } - if (state->memsize) { /* tmp buffer is full */ - XXH_memcpy(((xxh_u8*)state->mem64) + state->memsize, input, 32-state->memsize); - state->v1 = XXH64_round(state->v1, XXH_readLE64(state->mem64+0)); - state->v2 = XXH64_round(state->v2, XXH_readLE64(state->mem64+1)); - state->v3 = XXH64_round(state->v3, XXH_readLE64(state->mem64+2)); - state->v4 = XXH64_round(state->v4, XXH_readLE64(state->mem64+3)); - p += 32-state->memsize; - state->memsize = 0; + XXH_ASSERT(xinput <= bEnd); + if ((size_t)(bEnd - xinput) >= sizeof(state->buffer)) { + /* Process the remaining data */ + xinput = XXH64_consumeLong(state->acc, xinput, (size_t)(bEnd - xinput), XXH_unaligned); } - if (p+32 <= bEnd) { - const xxh_u8* const limit = bEnd - 32; - xxh_u64 v1 = state->v1; - xxh_u64 v2 = state->v2; - xxh_u64 v3 = state->v3; - xxh_u64 v4 = state->v4; - - do { - v1 = XXH64_round(v1, XXH_readLE64(p)); p+=8; - v2 = XXH64_round(v2, XXH_readLE64(p)); p+=8; - v3 = XXH64_round(v3, XXH_readLE64(p)); p+=8; - v4 = XXH64_round(v4, XXH_readLE64(p)); p+=8; - } while (p<=limit); - - state->v1 = v1; - state->v2 = v2; - state->v3 = v3; - state->v4 = v4; - } - - if (p < bEnd) { - XXH_memcpy(state->mem64, p, (size_t)(bEnd-p)); - state->memsize = (unsigned)(bEnd-p); + if (xinput < bEnd) { + /* Copy the leftover to the tmp buffer */ + XXH_memcpy(state->buffer, xinput, (size_t)(bEnd-xinput)); + state->bufferedSize = (unsigned)(bEnd-xinput); } } @@ -2043,60 +3791,54 @@ XXH64_update (XXH64_state_t* state, const void* input, size_t len) } -XXH_PUBLIC_API XXH64_hash_t XXH64_digest (const XXH64_state_t* state) +/*! @ingroup XXH64_family */ +XXH_PUBLIC_API XXH64_hash_t XXH64_digest(XXH_NOESCAPE const XXH64_state_t* state) { xxh_u64 h64; if (state->total_len >= 32) { - xxh_u64 const v1 = state->v1; - xxh_u64 const v2 = state->v2; - xxh_u64 const v3 = state->v3; - xxh_u64 const v4 = state->v4; - - h64 = XXH_rotl64(v1, 1) + XXH_rotl64(v2, 7) + XXH_rotl64(v3, 12) + XXH_rotl64(v4, 18); - h64 = XXH64_mergeRound(h64, v1); - h64 = XXH64_mergeRound(h64, v2); - h64 = XXH64_mergeRound(h64, v3); - h64 = XXH64_mergeRound(h64, v4); + h64 = XXH64_mergeAccs(state->acc); } else { - h64 = state->v3 /*seed*/ + XXH_PRIME64_5; + h64 = state->acc[2] /*seed*/ + XXH_PRIME64_5; } h64 += (xxh_u64) state->total_len; - return XXH64_finalize(h64, (const xxh_u8*)state->mem64, (size_t)state->total_len, XXH_aligned); + return XXH64_finalize(h64, state->buffer, (size_t)state->total_len, XXH_aligned); } - +#endif /* !XXH_NO_STREAM */ /******* Canonical representation *******/ -XXH_PUBLIC_API void XXH64_canonicalFromHash(XXH64_canonical_t* dst, XXH64_hash_t hash) +/*! @ingroup XXH64_family */ +XXH_PUBLIC_API void XXH64_canonicalFromHash(XXH_NOESCAPE XXH64_canonical_t* dst, XXH64_hash_t hash) { XXH_STATIC_ASSERT(sizeof(XXH64_canonical_t) == sizeof(XXH64_hash_t)); if (XXH_CPU_LITTLE_ENDIAN) hash = XXH_swap64(hash); - memcpy(dst, &hash, sizeof(*dst)); + XXH_memcpy(dst, &hash, sizeof(*dst)); } -XXH_PUBLIC_API XXH64_hash_t XXH64_hashFromCanonical(const XXH64_canonical_t* src) +/*! @ingroup XXH64_family */ +XXH_PUBLIC_API XXH64_hash_t XXH64_hashFromCanonical(XXH_NOESCAPE const XXH64_canonical_t* src) { return XXH_readBE64(src); } - +#ifndef XXH_NO_XXH3 /* ********************************************************************* * XXH3 * New generation hash designed for speed on small keys and vectorization ************************************************************************ */ +/*! + * @} + * @defgroup XXH3_impl XXH3 implementation + * @ingroup impl + * @{ + */ /* === Compiler specifics === */ -#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* >= C99 */ -# define XXH_RESTRICT restrict -#else -/* Note: it might be useful to define __restrict or __restrict__ for some C++ compilers */ -# define XXH_RESTRICT /* disable */ -#endif #if (defined(__GNUC__) && (__GNUC__ >= 3)) \ || (defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 800)) \ @@ -2108,17 +3850,42 @@ XXH_PUBLIC_API XXH64_hash_t XXH64_hashFromCanonical(const XXH64_canonical_t* src # define XXH_unlikely(x) (x) #endif -#if defined(__GNUC__) -# if defined(__AVX2__) -# include -# elif defined(__SSE2__) -# include -# elif defined(__ARM_NEON__) || defined(__ARM_NEON) +#ifndef XXH_HAS_INCLUDE +# ifdef __has_include +/* + * Not defined as XXH_HAS_INCLUDE(x) (function-like) because + * this causes segfaults in Apple Clang 4.2 (on Mac OS X 10.7 Lion) + */ +# define XXH_HAS_INCLUDE __has_include +# else +# define XXH_HAS_INCLUDE(x) 0 +# endif +#endif + +#if defined(__GNUC__) || defined(__clang__) +# if defined(__ARM_FEATURE_SVE) +# include +# endif +# if defined(__ARM_NEON__) || defined(__ARM_NEON) \ + || (defined(_M_ARM) && _M_ARM >= 7) \ + || defined(_M_ARM64) || defined(_M_ARM64EC) \ + || (defined(__wasm_simd128__) && XXH_HAS_INCLUDE()) /* WASM SIMD128 via SIMDe */ # define inline __inline__ /* circumvent a clang bug */ # include # undef inline +# elif defined(__AVX2__) +# include +# elif defined(__SSE2__) +# include +# elif defined(__loongarch_asx) +# include +# include +# elif defined(__loongarch_sx) +# include # endif -#elif defined(_MSC_VER) +#endif + +#if defined(_MSC_VER) # include #endif @@ -2198,34 +3965,77 @@ XXH_PUBLIC_API XXH64_hash_t XXH64_hashFromCanonical(const XXH64_canonical_t* src /* ========================================== * Vectorization detection * ========================================== */ -#define XXH_SCALAR 0 /* Portable scalar version */ -#define XXH_SSE2 1 /* SSE2 for Pentium 4 and all x86_64 */ -#define XXH_AVX2 2 /* AVX2 for Haswell and Bulldozer */ -#define XXH_AVX512 3 /* AVX512 for Skylake and Icelake */ -#define XXH_NEON 4 /* NEON for most ARMv7-A and all AArch64 */ -#define XXH_VSX 5 /* VSX and ZVector for POWER8/z13 */ + +#ifdef XXH_DOXYGEN +/*! + * @ingroup tuning + * @brief Overrides the vectorization implementation chosen for XXH3. + * + * Can be defined to 0 to disable SIMD, + * or any other authorized value of @ref XXH_VECTOR. + * + * If this is not defined, it uses predefined macros to determine the best + * implementation. + */ +# define XXH_VECTOR XXH_SCALAR +/*! + * @ingroup tuning + * @brief Selects the minimum alignment for XXH3's accumulators. + * + * When using SIMD, this should match the alignment required for said vector + * type, so, for example, 32 for AVX2. + * + * Default: Auto detected. + */ +# define XXH_ACC_ALIGN 8 +#endif + +/* Actual definition */ +#ifndef XXH_DOXYGEN +#endif #ifndef XXH_VECTOR /* can be defined on command line */ -# if defined(__AVX512F__) +# if defined(__ARM_FEATURE_SVE) +# define XXH_VECTOR XXH_SVE +# elif ( \ + defined(__ARM_NEON__) || defined(__ARM_NEON) /* gcc */ \ + || defined(_M_ARM) || defined(_M_ARM64) || defined(_M_ARM64EC) /* msvc */ \ + || (defined(__wasm_simd128__) && XXH_HAS_INCLUDE()) /* wasm simd128 via SIMDe */ \ + ) && ( \ + defined(_WIN32) || defined(__LITTLE_ENDIAN__) /* little endian only */ \ + || (defined(__BYTE_ORDER__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) \ + ) +# define XXH_VECTOR XXH_NEON +# elif defined(__AVX512F__) # define XXH_VECTOR XXH_AVX512 # elif defined(__AVX2__) # define XXH_VECTOR XXH_AVX2 -# elif defined(__SSE2__) || defined(_M_AMD64) || defined(_M_X64) || (defined(_M_IX86_FP) && (_M_IX86_FP == 2)) +# elif defined(__SSE2__) || defined(_M_X64) || (defined(_M_IX86_FP) && (_M_IX86_FP == 2)) # define XXH_VECTOR XXH_SSE2 -# elif defined(__GNUC__) /* msvc support maybe later */ \ - && (defined(__ARM_NEON__) || defined(__ARM_NEON)) \ - && (defined(__LITTLE_ENDIAN__) /* We only support little endian NEON */ \ - || (defined(__BYTE_ORDER__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)) -# define XXH_VECTOR XXH_NEON # elif (defined(__PPC64__) && defined(__POWER8_VECTOR__)) \ || (defined(__s390x__) && defined(__VEC__)) \ && defined(__GNUC__) /* TODO: IBM XL */ # define XXH_VECTOR XXH_VSX +# elif defined(__loongarch_asx) +# define XXH_VECTOR XXH_LASX +# elif defined(__loongarch_sx) +# define XXH_VECTOR XXH_LSX # else # define XXH_VECTOR XXH_SCALAR # endif #endif +/* __ARM_FEATURE_SVE is only supported by GCC & Clang. */ +#if (XXH_VECTOR == XXH_SVE) && !defined(__ARM_FEATURE_SVE) +# ifdef _MSC_VER +# pragma warning(once : 4606) +# else +# warning "__ARM_FEATURE_SVE isn't supported. Use SCALAR instead." +# endif +# undef XXH_VECTOR +# define XXH_VECTOR XXH_SCALAR +#endif + /* * Controls the alignment of the accumulator, * for compatibility with aligned vector loads, which are usually faster. @@ -2245,16 +4055,30 @@ XXH_PUBLIC_API XXH64_hash_t XXH64_hashFromCanonical(const XXH64_canonical_t* src # define XXH_ACC_ALIGN 16 # elif XXH_VECTOR == XXH_AVX512 /* avx512 */ # define XXH_ACC_ALIGN 64 +# elif XXH_VECTOR == XXH_SVE /* sve */ +# define XXH_ACC_ALIGN 64 +# elif XXH_VECTOR == XXH_LASX /* lasx */ +# define XXH_ACC_ALIGN 64 +# elif XXH_VECTOR == XXH_LSX /* lsx */ +# define XXH_ACC_ALIGN 64 # endif #endif #if defined(XXH_X86DISPATCH) || XXH_VECTOR == XXH_SSE2 \ || XXH_VECTOR == XXH_AVX2 || XXH_VECTOR == XXH_AVX512 # define XXH_SEC_ALIGN XXH_ACC_ALIGN +#elif XXH_VECTOR == XXH_SVE +# define XXH_SEC_ALIGN XXH_ACC_ALIGN #else # define XXH_SEC_ALIGN 8 #endif +#if defined(__GNUC__) || defined(__clang__) +# define XXH_ALIASING __attribute__((__may_alias__)) +#else +# define XXH_ALIASING /* nothing */ +#endif + /* * UGLY HACK: * GCC usually generates the best code with -O3 for xxHash. @@ -2278,111 +4102,130 @@ XXH_PUBLIC_API XXH64_hash_t XXH64_hashFromCanonical(const XXH64_canonical_t* src */ #if XXH_VECTOR == XXH_AVX2 /* AVX2 */ \ && defined(__GNUC__) && !defined(__clang__) /* GCC, not Clang */ \ - && defined(__OPTIMIZE__) && !defined(__OPTIMIZE_SIZE__) /* respect -O0 and -Os */ + && defined(__OPTIMIZE__) && XXH_SIZE_OPT <= 0 /* respect -O0 and -Os */ # pragma GCC push_options # pragma GCC optimize("-O2") #endif - #if XXH_VECTOR == XXH_NEON -/* - * NEON's setup for vmlal_u32 is a little more complicated than it is on - * SSE2, AVX2, and VSX. - * - * While PMULUDQ and VMULEUW both perform a mask, VMLAL.U32 performs an upcast. - * - * To do the same operation, the 128-bit 'Q' register needs to be split into - * two 64-bit 'D' registers, performing this operation:: - * - * [ a | b ] - * | '---------. .--------' | - * | x | - * | .---------' '--------. | - * [ a & 0xFFFFFFFF | b & 0xFFFFFFFF ],[ a >> 32 | b >> 32 ] - * - * Due to significant changes in aarch64, the fastest method for aarch64 is - * completely different than the fastest method for ARMv7-A. - * - * ARMv7-A treats D registers as unions overlaying Q registers, so modifying - * D11 will modify the high half of Q5. This is similar to how modifying AH - * will only affect bits 8-15 of AX on x86. - * - * VZIP takes two registers, and puts even lanes in one register and odd lanes - * in the other. - * - * On ARMv7-A, this strangely modifies both parameters in place instead of - * taking the usual 3-operand form. - * - * Therefore, if we want to do this, we can simply use a D-form VZIP.32 on the - * lower and upper halves of the Q register to end up with the high and low - * halves where we want - all in one instruction. - * - * vzip.32 d10, d11 @ d10 = { d10[0], d11[0] }; d11 = { d10[1], d11[1] } - * - * Unfortunately we need inline assembly for this: Instructions modifying two - * registers at once is not possible in GCC or Clang's IR, and they have to - * create a copy. - * - * aarch64 requires a different approach. - * - * In order to make it easier to write a decent compiler for aarch64, many - * quirks were removed, such as conditional execution. - * - * NEON was also affected by this. - * - * aarch64 cannot access the high bits of a Q-form register, and writes to a - * D-form register zero the high bits, similar to how writes to W-form scalar - * registers (or DWORD registers on x86_64) work. - * - * The formerly free vget_high intrinsics now require a vext (with a few - * exceptions) - * - * Additionally, VZIP was replaced by ZIP1 and ZIP2, which are the equivalent - * of PUNPCKL* and PUNPCKH* in SSE, respectively, in order to only modify one - * operand. - * - * The equivalent of the VZIP.32 on the lower and upper halves would be this - * mess: - * - * ext v2.4s, v0.4s, v0.4s, #2 // v2 = { v0[2], v0[3], v0[0], v0[1] } - * zip1 v1.2s, v0.2s, v2.2s // v1 = { v0[0], v2[0] } - * zip2 v0.2s, v0.2s, v1.2s // v0 = { v0[1], v2[1] } - * - * Instead, we use a literal downcast, vmovn_u64 (XTN), and vshrn_n_u64 (SHRN): - * - * shrn v1.2s, v0.2d, #32 // v1 = (uint32x2_t)(v0 >> 32); - * xtn v0.2s, v0.2d // v0 = (uint32x2_t)(v0 & 0xFFFFFFFF); - * - * This is available on ARMv7-A, but is less efficient than a single VZIP.32. - */ /* - * Function-like macro: - * void XXH_SPLIT_IN_PLACE(uint64x2_t &in, uint32x2_t &outLo, uint32x2_t &outHi) - * { - * outLo = (uint32x2_t)(in & 0xFFFFFFFF); - * outHi = (uint32x2_t)(in >> 32); - * in = UNDEFINED; - * } + * UGLY HACK: While AArch64 GCC on Linux does not seem to care, on macOS, GCC -O3 + * optimizes out the entire hashLong loop because of the aliasing violation. + * + * However, GCC is also inefficient at load-store optimization with vld1q/vst1q, + * so the only option is to mark it as aliasing. */ -# if !defined(XXH_NO_VZIP_HACK) /* define to disable */ \ - && defined(__GNUC__) \ - && !defined(__aarch64__) && !defined(__arm64__) -# define XXH_SPLIT_IN_PLACE(in, outLo, outHi) \ - do { \ - /* Undocumented GCC/Clang operand modifier: %e0 = lower D half, %f0 = upper D half */ \ - /* https://github.com/gcc-mirror/gcc/blob/38cf91e5/gcc/config/arm/arm.c#L22486 */ \ - /* https://github.com/llvm-mirror/llvm/blob/2c4ca683/lib/Target/ARM/ARMAsmPrinter.cpp#L399 */ \ - __asm__("vzip.32 %e0, %f0" : "+w" (in)); \ - (outLo) = vget_low_u32 (vreinterpretq_u32_u64(in)); \ - (outHi) = vget_high_u32(vreinterpretq_u32_u64(in)); \ - } while (0) -# else -# define XXH_SPLIT_IN_PLACE(in, outLo, outHi) \ - do { \ - (outLo) = vmovn_u64 (in); \ - (outHi) = vshrn_n_u64 ((in), 32); \ - } while (0) +typedef uint64x2_t xxh_aliasing_uint64x2_t XXH_ALIASING; + +/*! + * @internal + * @brief `vld1q_u64` but faster and alignment-safe. + * + * On AArch64, unaligned access is always safe, but on ARMv7-a, it is only + * *conditionally* safe (`vld1` has an alignment bit like `movdq[ua]` in x86). + * + * GCC for AArch64 sees `vld1q_u8` as an intrinsic instead of a load, so it + * prohibits load-store optimizations. Therefore, a direct dereference is used. + * + * Otherwise, `vld1q_u8` is used with `vreinterpretq_u8_u64` to do a safe + * unaligned load. + */ +#if defined(__aarch64__) && defined(__GNUC__) && !defined(__clang__) +XXH_FORCE_INLINE uint64x2_t XXH_vld1q_u64(void const* ptr) /* silence -Wcast-align */ +{ + return *(xxh_aliasing_uint64x2_t const *)ptr; +} +#else +XXH_FORCE_INLINE uint64x2_t XXH_vld1q_u64(void const* ptr) +{ + return vreinterpretq_u64_u8(vld1q_u8((uint8_t const*)ptr)); +} +#endif + +/*! + * @internal + * @brief `vmlal_u32` on low and high halves of a vector. + * + * This is a workaround for AArch64 GCC < 11 which implemented arm_neon.h with + * inline assembly and were therefore incapable of merging the `vget_{low, high}_u32` + * with `vmlal_u32`. + */ +#if defined(__aarch64__) && defined(__GNUC__) && !defined(__clang__) && __GNUC__ < 11 +XXH_FORCE_INLINE uint64x2_t +XXH_vmlal_low_u32(uint64x2_t acc, uint32x4_t lhs, uint32x4_t rhs) +{ + /* Inline assembly is the only way */ + __asm__("umlal %0.2d, %1.2s, %2.2s" : "+w" (acc) : "w" (lhs), "w" (rhs)); + return acc; +} +XXH_FORCE_INLINE uint64x2_t +XXH_vmlal_high_u32(uint64x2_t acc, uint32x4_t lhs, uint32x4_t rhs) +{ + /* This intrinsic works as expected */ + return vmlal_high_u32(acc, lhs, rhs); +} +#else +/* Portable intrinsic versions */ +XXH_FORCE_INLINE uint64x2_t +XXH_vmlal_low_u32(uint64x2_t acc, uint32x4_t lhs, uint32x4_t rhs) +{ + return vmlal_u32(acc, vget_low_u32(lhs), vget_low_u32(rhs)); +} +/*! @copydoc XXH_vmlal_low_u32 + * Assume the compiler converts this to vmlal_high_u32 on aarch64 */ +XXH_FORCE_INLINE uint64x2_t +XXH_vmlal_high_u32(uint64x2_t acc, uint32x4_t lhs, uint32x4_t rhs) +{ + return vmlal_u32(acc, vget_high_u32(lhs), vget_high_u32(rhs)); +} +#endif + +/*! + * @ingroup tuning + * @brief Controls the NEON to scalar ratio for XXH3 + * + * This can be set to 2, 4, 6, or 8. + * + * ARM Cortex CPUs are _very_ sensitive to how their pipelines are used. + * + * For example, the Cortex-A73 can dispatch 3 micro-ops per cycle, but only 2 of those + * can be NEON. If you are only using NEON instructions, you are only using 2/3 of the CPU + * bandwidth. + * + * This is even more noticeable on the more advanced cores like the Cortex-A76 which + * can dispatch 8 micro-ops per cycle, but still only 2 NEON micro-ops at once. + * + * Therefore, to make the most out of the pipeline, it is beneficial to run 6 NEON lanes + * and 2 scalar lanes, which is chosen by default. + * + * This does not apply to Apple processors or 32-bit processors, which run better with + * full NEON. These will default to 8. Additionally, size-optimized builds run 8 lanes. + * + * This change benefits CPUs with large micro-op buffers without negatively affecting + * most other CPUs: + * + * | Chipset | Dispatch type | NEON only | 6:2 hybrid | Diff. | + * |:----------------------|:--------------------|----------:|-----------:|------:| + * | Snapdragon 730 (A76) | 2 NEON/8 micro-ops | 8.8 GB/s | 10.1 GB/s | ~16% | + * | Snapdragon 835 (A73) | 2 NEON/3 micro-ops | 5.1 GB/s | 5.3 GB/s | ~5% | + * | Marvell PXA1928 (A53) | In-order dual-issue | 1.9 GB/s | 1.9 GB/s | 0% | + * | Apple M1 | 4 NEON/8 micro-ops | 37.3 GB/s | 36.1 GB/s | ~-3% | + * + * It also seems to fix some bad codegen on GCC, making it almost as fast as clang. + * + * When using WASM SIMD128, if this is 2 or 6, SIMDe will scalarize 2 of the lanes meaning + * it effectively becomes worse 4. + * + * @see XXH3_accumulate_512_neon() + */ +# ifndef XXH3_NEON_LANES +# if (defined(__aarch64__) || defined(__arm64__) || defined(_M_ARM64) || defined(_M_ARM64EC)) \ + && !defined(__APPLE__) && XXH_SIZE_OPT <= 0 +# define XXH3_NEON_LANES 6 +# else +# define XXH3_NEON_LANES XXH_ACC_NB +# endif # endif #endif /* XXH_VECTOR == XXH_NEON */ @@ -2395,27 +4238,42 @@ XXH_PUBLIC_API XXH64_hash_t XXH64_hashFromCanonical(const XXH64_canonical_t* src * inconsistent intrinsics, spotty coverage, and multiple endiannesses. */ #if XXH_VECTOR == XXH_VSX +/* Annoyingly, these headers _may_ define three macros: `bool`, `vector`, + * and `pixel`. This is a problem for obvious reasons. + * + * These keywords are unnecessary; the spec literally says they are + * equivalent to `__bool`, `__vector`, and `__pixel` and may be undef'd + * after including the header. + * + * We use pragma push_macro/pop_macro to keep the namespace clean. */ +# pragma push_macro("bool") +# pragma push_macro("vector") +# pragma push_macro("pixel") +/* silence potential macro redefined warnings */ +# undef bool +# undef vector +# undef pixel + # if defined(__s390x__) # include # else -/* gcc's altivec.h can have the unwanted consequence to unconditionally - * #define bool, vector, and pixel keywords, - * with bad consequences for programs already using these keywords for other purposes. - * The paragraph defining these macros is skipped when __APPLE_ALTIVEC__ is defined. - * __APPLE_ALTIVEC__ is _generally_ defined automatically by the compiler, - * but it seems that, in some cases, it isn't. - * Force the build macro to be defined, so that keywords are not altered. - */ -# if defined(__GNUC__) && !defined(__APPLE_ALTIVEC__) -# define __APPLE_ALTIVEC__ -# endif # include # endif +/* Restore the original macro values, if applicable. */ +# pragma pop_macro("pixel") +# pragma pop_macro("vector") +# pragma pop_macro("bool") + typedef __vector unsigned long long xxh_u64x2; typedef __vector unsigned char xxh_u8x16; typedef __vector unsigned xxh_u32x4; +/* + * UGLY HACK: Similar to aarch64 macOS GCC, s390x GCC has the same aliasing issue. + */ +typedef xxh_u64x2 xxh_aliasing_u64x2 XXH_ALIASING; + # ifndef XXH_VSX_BE # if defined(__BIG_ENDIAN__) \ || (defined(__BYTE_ORDER__) && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) @@ -2429,10 +4287,12 @@ typedef __vector unsigned xxh_u32x4; # endif /* !defined(XXH_VSX_BE) */ # if XXH_VSX_BE -/* A wrapper for POWER9's vec_revb. */ # if defined(__POWER9_VECTOR__) || (defined(__clang__) && defined(__s390x__)) # define XXH_vec_revb vec_revb # else +/*! + * A polyfill for POWER9's vec_revb(). + */ XXH_FORCE_INLINE xxh_u64x2 XXH_vec_revb(xxh_u64x2 val) { xxh_u8x16 const vByteSwap = { 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, @@ -2442,13 +4302,13 @@ XXH_FORCE_INLINE xxh_u64x2 XXH_vec_revb(xxh_u64x2 val) # endif # endif /* XXH_VSX_BE */ -/* - * Performs an unaligned load and byte swaps it on big endian. +/*! + * Performs an unaligned vector load and byte swaps it on big endian. */ XXH_FORCE_INLINE xxh_u64x2 XXH_vec_loadu(const void *ptr) { xxh_u64x2 ret; - memcpy(&ret, ptr, sizeof(xxh_u64x2)); + XXH_memcpy(&ret, ptr, sizeof(xxh_u64x2)); # if XXH_VSX_BE ret = XXH_vec_revb(ret); # endif @@ -2465,8 +4325,9 @@ XXH_FORCE_INLINE xxh_u64x2 XXH_vec_loadu(const void *ptr) /* s390x is always big endian, no issue on this platform */ # define XXH_vec_mulo vec_mulo # define XXH_vec_mule vec_mule -# elif defined(__clang__) && XXH_HAS_BUILTIN(__builtin_altivec_vmuleuw) +# elif defined(__clang__) && XXH_HAS_BUILTIN(__builtin_altivec_vmuleuw) && !defined(__ibmxl__) /* Clang has a better way to control this, we can just use the builtin which doesn't swap. */ + /* The IBM XL Compiler (which defined __clang__) only implements the vec_* operations */ # define XXH_vec_mulo __builtin_altivec_vmulouw # define XXH_vec_mule __builtin_altivec_vmuleuw # else @@ -2487,13 +4348,28 @@ XXH_FORCE_INLINE xxh_u64x2 XXH_vec_mule(xxh_u32x4 a, xxh_u32x4 b) # endif /* XXH_vec_mulo, XXH_vec_mule */ #endif /* XXH_VECTOR == XXH_VSX */ +#if XXH_VECTOR == XXH_SVE +#define ACCRND(acc, offset) \ +do { \ + svuint64_t input_vec = svld1_u64(mask, xinput + offset); \ + svuint64_t secret_vec = svld1_u64(mask, xsecret + offset); \ + svuint64_t mixed = sveor_u64_x(mask, secret_vec, input_vec); \ + svuint64_t swapped = svtbl_u64(input_vec, kSwap); \ + svuint64_t mixed_lo = svextw_u64_x(mask, mixed); \ + svuint64_t mixed_hi = svlsr_n_u64_x(mask, mixed, 32); \ + svuint64_t mul = svmad_u64_x(mask, mixed_lo, mixed_hi, swapped); \ + acc = svadd_u64_x(mask, acc, mul); \ +} while (0) +#endif /* XXH_VECTOR == XXH_SVE */ /* prefetch * can be disabled, by declaring XXH_NO_PREFETCH build macro */ #if defined(XXH_NO_PREFETCH) # define XXH_PREFETCH(ptr) (void)(ptr) /* disabled */ #else -# if defined(_MSC_VER) && (defined(_M_X64) || defined(_M_I86)) /* _mm_prefetch() is not defined outside of x86/x64 */ +# if XXH_SIZE_OPT >= 1 +# define XXH_PREFETCH(ptr) (void)(ptr) +# elif defined(_MSC_VER) && (defined(_M_X64) || defined(_M_IX86)) /* _mm_prefetch() not defined outside of x86/x64 */ # include /* https://msdn.microsoft.com/fr-fr/library/84szxsww(v=vs.90).aspx */ # define XXH_PREFETCH(ptr) _mm_prefetch((const char*)(ptr), _MM_HINT_T0) # elif defined(__GNUC__) && ( (__GNUC__ >= 4) || ( (__GNUC__ == 3) && (__GNUC_MINOR__ >= 1) ) ) @@ -2514,7 +4390,10 @@ XXH_FORCE_INLINE xxh_u64x2 XXH_vec_mule(xxh_u32x4 a, xxh_u32x4 b) # error "default keyset is not large enough" #endif -/* Pseudorandom secret taken directly from FARSH */ +/*! + * @internal + * @def XXH3_kSecret + * @brief Pseudorandom secret taken directly from FARSH. */ XXH_ALIGN(64) static const xxh_u8 XXH3_kSecret[XXH_SECRET_DEFAULT_SIZE] = { 0xb8, 0xfe, 0x6c, 0x39, 0x23, 0xa4, 0x4b, 0xbe, 0x7c, 0x01, 0x81, 0x2c, 0xf7, 0x21, 0xad, 0x1c, 0xde, 0xd4, 0x6d, 0xe9, 0x83, 0x90, 0x97, 0xdb, 0x72, 0x40, 0xa4, 0xa4, 0xb7, 0xb3, 0x67, 0x1f, @@ -2530,29 +4409,36 @@ XXH_ALIGN(64) static const xxh_u8 XXH3_kSecret[XXH_SECRET_DEFAULT_SIZE] = { 0x45, 0xcb, 0x3a, 0x8f, 0x95, 0x16, 0x04, 0x28, 0xaf, 0xd7, 0xfb, 0xca, 0xbb, 0x4b, 0x40, 0x7e, }; +static const xxh_u64 PRIME_MX1 = 0x165667919E3779F9ULL; /*!< 0b0001011001010110011001111001000110011110001101110111100111111001 */ +static const xxh_u64 PRIME_MX2 = 0x9FB21C651E98DF25ULL; /*!< 0b1001111110110010000111000110010100011110100110001101111100100101 */ #ifdef XXH_OLD_NAMES # define kSecret XXH3_kSecret #endif -/* - * Calculates a 32-bit to 64-bit long multiply. +#ifdef XXH_DOXYGEN +/*! + * @brief Calculates a 32-bit to 64-bit long multiply. * - * Wraps __emulu on MSVC x86 because it tends to call __allmul when it doesn't + * Implemented as a macro. + * + * Wraps `__emulu` on MSVC x86 because it tends to call `__allmul` when it doesn't * need to (but it shouldn't need to anyways, it is about 7 instructions to do - * a 64x64 multiply...). Since we know that this will _always_ emit MULL, we + * a 64x64 multiply...). Since we know that this will _always_ emit `MULL`, we * use that instead of the normal method. * * If you are compiling for platforms like Thumb-1 and don't have a better option, * you may also want to write your own long multiply routine here. * - * XXH_FORCE_INLINE xxh_u64 XXH_mult32to64(xxh_u64 x, xxh_u64 y) - * { - * return (x & 0xFFFFFFFF) * (y & 0xFFFFFFFF); - * } + * @param x, y Numbers to be multiplied + * @return 64-bit product of the low 32 bits of @p x and @p y. */ -#if defined(_MSC_VER) && defined(_M_IX86) -# include +XXH_FORCE_INLINE xxh_u64 +XXH_mult32to64(xxh_u64 x, xxh_u64 y) +{ + return (x & 0xFFFFFFFF) * (y & 0xFFFFFFFF); +} +#elif defined(_MSC_VER) && defined(_M_IX86) # define XXH_mult32to64(x, y) __emulu((unsigned)(x), (unsigned)(y)) #else /* @@ -2565,10 +4451,14 @@ XXH_ALIGN(64) static const xxh_u8 XXH3_kSecret[XXH_SECRET_DEFAULT_SIZE] = { # define XXH_mult32to64(x, y) ((xxh_u64)(xxh_u32)(x) * (xxh_u64)(xxh_u32)(y)) #endif -/* - * Calculates a 64->128-bit long multiply. +/*! + * @brief Calculates a 64->128-bit long multiply. * - * Uses __uint128_t and _umul128 if available, otherwise uses a scalar version. + * Uses `__uint128_t` and `_umul128` if available, otherwise uses a scalar + * version. + * + * @param lhs , rhs The 64-bit integers to be multiplied + * @return The 128-bit result represented in an @ref XXH128_hash_t. */ static XXH128_hash_t XXH_mult64to128(xxh_u64 lhs, xxh_u64 rhs) @@ -2588,7 +4478,7 @@ XXH_mult64to128(xxh_u64 lhs, xxh_u64 rhs) * In that case it is best to use the portable one. * https://github.com/Cyan4973/xxHash/issues/211#issuecomment-515575677 */ -#if defined(__GNUC__) && !defined(__wasm__) \ +#if (defined(__GNUC__) || defined(__clang__)) && !defined(__wasm__) \ && defined(__SIZEOF_INT128__) \ || (defined(_INTEGRAL_MAX_BITS) && _INTEGRAL_MAX_BITS >= 128) @@ -2605,7 +4495,7 @@ XXH_mult64to128(xxh_u64 lhs, xxh_u64 rhs) * * This compiles to single operand MUL on x64. */ -#elif defined(_M_X64) || defined(_M_IA64) +#elif (defined(_M_X64) || defined(_M_IA64)) && !defined(_M_ARM64EC) #ifndef _MSC_VER # pragma intrinsic(_umul128) @@ -2617,6 +4507,21 @@ XXH_mult64to128(xxh_u64 lhs, xxh_u64 rhs) r128.high64 = product_high; return r128; + /* + * MSVC for ARM64's __umulh method. + * + * This compiles to the same MUL + UMULH as GCC/Clang's __uint128_t method. + */ +#elif defined(_M_ARM64) || defined(_M_ARM64EC) + +#ifndef _MSC_VER +# pragma intrinsic(__umulh) +#endif + XXH128_hash_t r128; + r128.low64 = lhs * rhs; + r128.high64 = __umulh(lhs, rhs); + return r128; + #else /* * Portable scalar method. Optimized for 32-bit and 64-bit ALUs. @@ -2679,11 +4584,15 @@ XXH_mult64to128(xxh_u64 lhs, xxh_u64 rhs) #endif } -/* - * Does a 64-bit to 128-bit multiply, then XOR folds it. +/*! + * @brief Calculates a 64-bit to 128-bit multiply, then XOR folds it. * * The reason for the separate function is to prevent passing too many structs * around by value. This will hopefully inline the multiply, but we don't force it. + * + * @param lhs , rhs The 64-bit integers to multiply + * @return The low 64 bits of the product XOR'd by the high 64 bits. + * @see XXH_mult64to128() */ static xxh_u64 XXH3_mul128_fold64(xxh_u64 lhs, xxh_u64 rhs) @@ -2692,8 +4601,8 @@ XXH3_mul128_fold64(xxh_u64 lhs, xxh_u64 rhs) return product.low64 ^ product.high64; } -/* Seems to produce slightly better code on GCC for some reason. */ -XXH_FORCE_INLINE xxh_u64 XXH_xorshift64(xxh_u64 v64, int shift) +/*! Seems to produce slightly better code on GCC for some reason. */ +XXH_FORCE_INLINE XXH_CONSTF xxh_u64 XXH_xorshift64(xxh_u64 v64, int shift) { XXH_ASSERT(0 <= shift && shift < 64); return v64 ^ (v64 >> shift); @@ -2706,7 +4615,7 @@ XXH_FORCE_INLINE xxh_u64 XXH_xorshift64(xxh_u64 v64, int shift) static XXH64_hash_t XXH3_avalanche(xxh_u64 h64) { h64 = XXH_xorshift64(h64, 37); - h64 *= 0x165667919E3779F9ULL; + h64 *= PRIME_MX1; h64 = XXH_xorshift64(h64, 32); return h64; } @@ -2720,9 +4629,9 @@ static XXH64_hash_t XXH3_rrmxmx(xxh_u64 h64, xxh_u64 len) { /* this mix is inspired by Pelle Evensen's rrmxmx */ h64 ^= XXH_rotl64(h64, 49) ^ XXH_rotl64(h64, 24); - h64 *= 0x9FB21C651E98DF25ULL; + h64 *= PRIME_MX2; h64 ^= (h64 >> 35) + len ; - h64 *= 0x9FB21C651E98DF25ULL; + h64 *= PRIME_MX2; return XXH_xorshift64(h64, 28); } @@ -2760,7 +4669,7 @@ static XXH64_hash_t XXH3_rrmxmx(xxh_u64 h64, xxh_u64 len) * * This adds an extra layer of strength for custom secrets. */ -XXH_FORCE_INLINE XXH64_hash_t +XXH_FORCE_INLINE XXH_PUREF XXH64_hash_t XXH3_len_1to3_64b(const xxh_u8* input, size_t len, const xxh_u8* secret, XXH64_hash_t seed) { XXH_ASSERT(input != NULL); @@ -2782,12 +4691,12 @@ XXH3_len_1to3_64b(const xxh_u8* input, size_t len, const xxh_u8* secret, XXH64_h } } -XXH_FORCE_INLINE XXH64_hash_t +XXH_FORCE_INLINE XXH_PUREF XXH64_hash_t XXH3_len_4to8_64b(const xxh_u8* input, size_t len, const xxh_u8* secret, XXH64_hash_t seed) { XXH_ASSERT(input != NULL); XXH_ASSERT(secret != NULL); - XXH_ASSERT(4 <= len && len < 8); + XXH_ASSERT(4 <= len && len <= 8); seed ^= (xxh_u64)XXH_swap32((xxh_u32)seed) << 32; { xxh_u32 const input1 = XXH_readLE32(input); xxh_u32 const input2 = XXH_readLE32(input + len - 4); @@ -2798,12 +4707,12 @@ XXH3_len_4to8_64b(const xxh_u8* input, size_t len, const xxh_u8* secret, XXH64_h } } -XXH_FORCE_INLINE XXH64_hash_t +XXH_FORCE_INLINE XXH_PUREF XXH64_hash_t XXH3_len_9to16_64b(const xxh_u8* input, size_t len, const xxh_u8* secret, XXH64_hash_t seed) { XXH_ASSERT(input != NULL); XXH_ASSERT(secret != NULL); - XXH_ASSERT(8 <= len && len <= 16); + XXH_ASSERT(9 <= len && len <= 16); { xxh_u64 const bitflip1 = (XXH_readLE64(secret+24) ^ XXH_readLE64(secret+32)) + seed; xxh_u64 const bitflip2 = (XXH_readLE64(secret+40) ^ XXH_readLE64(secret+48)) - seed; xxh_u64 const input_lo = XXH_readLE64(input) ^ bitflip1; @@ -2815,7 +4724,7 @@ XXH3_len_9to16_64b(const xxh_u8* input, size_t len, const xxh_u8* secret, XXH64_ } } -XXH_FORCE_INLINE XXH64_hash_t +XXH_FORCE_INLINE XXH_PUREF XXH64_hash_t XXH3_len_0to16_64b(const xxh_u8* input, size_t len, const xxh_u8* secret, XXH64_hash_t seed) { XXH_ASSERT(len <= 16); @@ -2873,7 +4782,7 @@ XXH_FORCE_INLINE xxh_u64 XXH3_mix16B(const xxh_u8* XXH_RESTRICT input, * GCC generates much better scalar code than Clang for the rest of XXH3, * which is why finding a more optimal codepath is an interest. */ - __asm__ ("" : "+r" (seed64)); + XXH_COMPILER_GUARD(seed64); #endif { xxh_u64 const input_lo = XXH_readLE64(input); xxh_u64 const input_hi = XXH_readLE64(input+8); @@ -2885,7 +4794,7 @@ XXH_FORCE_INLINE xxh_u64 XXH3_mix16B(const xxh_u8* XXH_RESTRICT input, } /* For mid range keys, XXH3 uses a Mum-hash variant. */ -XXH_FORCE_INLINE XXH64_hash_t +XXH_FORCE_INLINE XXH_PUREF XXH64_hash_t XXH3_len_17to128_64b(const xxh_u8* XXH_RESTRICT input, size_t len, const xxh_u8* XXH_RESTRICT secret, size_t secretSize, XXH64_hash_t seed) @@ -2894,6 +4803,14 @@ XXH3_len_17to128_64b(const xxh_u8* XXH_RESTRICT input, size_t len, XXH_ASSERT(16 < len && len <= 128); { xxh_u64 acc = len * XXH_PRIME64_1; +#if XXH_SIZE_OPT >= 1 + /* Smaller and cleaner, but slightly slower. */ + unsigned int i = (unsigned int)(len - 1) / 32; + do { + acc += XXH3_mix16B(input+16 * i, secret+32*i, seed); + acc += XXH3_mix16B(input+len-16*(i+1), secret+32*i+16, seed); + } while (i-- != 0); +#else if (len > 32) { if (len > 64) { if (len > 96) { @@ -2908,14 +4825,12 @@ XXH3_len_17to128_64b(const xxh_u8* XXH_RESTRICT input, size_t len, } acc += XXH3_mix16B(input+0, secret+0, seed); acc += XXH3_mix16B(input+len-16, secret+16, seed); - +#endif return XXH3_avalanche(acc); } } -#define XXH3_MIDSIZE_MAX 240 - -XXH_NO_INLINE XXH64_hash_t +XXH_NO_INLINE XXH_PUREF XXH64_hash_t XXH3_len_129to240_64b(const xxh_u8* XXH_RESTRICT input, size_t len, const xxh_u8* XXH_RESTRICT secret, size_t secretSize, XXH64_hash_t seed) @@ -2927,13 +4842,17 @@ XXH3_len_129to240_64b(const xxh_u8* XXH_RESTRICT input, size_t len, #define XXH3_MIDSIZE_LASTOFFSET 17 { xxh_u64 acc = len * XXH_PRIME64_1; - int const nbRounds = (int)len / 16; - int i; + xxh_u64 acc_end; + unsigned int const nbRounds = (unsigned int)len / 16; + unsigned int i; + XXH_ASSERT(128 < len && len <= XXH3_MIDSIZE_MAX); for (i=0; i<8; i++) { acc += XXH3_mix16B(input+(16*i), secret+(16*i), seed); } - acc = XXH3_avalanche(acc); + /* last bytes */ + acc_end = XXH3_mix16B(input + len - 16, secret + XXH3_SECRET_SIZE_MIN - XXH3_MIDSIZE_LASTOFFSET, seed); XXH_ASSERT(nbRounds >= 8); + acc = XXH3_avalanche(acc); #if defined(__clang__) /* Clang */ \ && (defined(__ARM_NEON) || defined(__ARM_NEON__)) /* NEON */ \ && !defined(XXH_ENABLE_AUTOVECTORIZE) /* Define to disable */ @@ -2960,11 +4879,13 @@ XXH3_len_129to240_64b(const xxh_u8* XXH_RESTRICT input, size_t len, #pragma clang loop vectorize(disable) #endif for (i=8 ; i < nbRounds; i++) { - acc += XXH3_mix16B(input+(16*i), secret+(16*(i-8)) + XXH3_MIDSIZE_STARTOFFSET, seed); + /* + * Prevents clang for unrolling the acc loop and interleaving with this one. + */ + XXH_COMPILER_GUARD(acc); + acc_end += XXH3_mix16B(input+(16*i), secret+(16*(i-8)) + XXH3_MIDSIZE_STARTOFFSET, seed); } - /* last bytes */ - acc += XXH3_mix16B(input + len - 16, secret + XXH3_SECRET_SIZE_MIN - XXH3_MIDSIZE_LASTOFFSET, seed); - return XXH3_avalanche(acc); + return XXH3_avalanche(acc + acc_end); } } @@ -2980,10 +4901,51 @@ XXH3_len_129to240_64b(const xxh_u8* XXH_RESTRICT input, size_t len, # define ACC_NB XXH_ACC_NB #endif +#ifndef XXH_PREFETCH_DIST +# ifdef __clang__ +# define XXH_PREFETCH_DIST 320 +# else +# if (XXH_VECTOR == XXH_AVX512) +# define XXH_PREFETCH_DIST 512 +# else +# define XXH_PREFETCH_DIST 384 +# endif +# endif /* __clang__ */ +#endif /* XXH_PREFETCH_DIST */ + +/* + * These macros are to generate an XXH3_accumulate() function. + * The two arguments select the name suffix and target attribute. + * + * The name of this symbol is XXH3_accumulate_() and it calls + * XXH3_accumulate_512_(). + * + * It may be useful to hand implement this function if the compiler fails to + * optimize the inline function. + */ +#define XXH3_ACCUMULATE_TEMPLATE(name) \ +void \ +XXH3_accumulate_##name(xxh_u64* XXH_RESTRICT acc, \ + const xxh_u8* XXH_RESTRICT input, \ + const xxh_u8* XXH_RESTRICT secret, \ + size_t nbStripes) \ +{ \ + size_t n; \ + for (n = 0; n < nbStripes; n++ ) { \ + const xxh_u8* const in = input + n*XXH_STRIPE_LEN; \ + XXH_PREFETCH(in + XXH_PREFETCH_DIST); \ + XXH3_accumulate_512_##name( \ + acc, \ + in, \ + secret + n*XXH_SECRET_CONSUME_RATE); \ + } \ +} + + XXH_FORCE_INLINE void XXH_writeLE64(void* dst, xxh_u64 v64) { if (!XXH_CPU_LITTLE_ENDIAN) v64 = XXH_swap64(v64); - memcpy(dst, &v64, sizeof(v64)); + XXH_memcpy(dst, &v64, sizeof(v64)); } /* Several intrinsic functions below are supposed to accept __int64 as argument, @@ -3000,6 +4962,7 @@ XXH_FORCE_INLINE void XXH_writeLE64(void* dst, xxh_u64 v64) typedef long long xxh_i64; #endif + /* * XXH3_accumulate_512 is the tightest loop for long inputs, and it is the most optimized. * @@ -3023,7 +4986,8 @@ XXH_FORCE_INLINE void XXH_writeLE64(void* dst, xxh_u64 v64) * Both XXH3_64bits and XXH3_128bits use this subroutine. */ -#if (XXH_VECTOR == XXH_AVX512) || defined(XXH_X86DISPATCH) +#if (XXH_VECTOR == XXH_AVX512) \ + || (defined(XXH_DISPATCH_AVX512) && XXH_DISPATCH_AVX512 != 0) #ifndef XXH_TARGET_AVX512 # define XXH_TARGET_AVX512 /* disable attribute target */ @@ -3034,7 +4998,7 @@ XXH3_accumulate_512_avx512(void* XXH_RESTRICT acc, const void* XXH_RESTRICT input, const void* XXH_RESTRICT secret) { - XXH_ALIGN(64) __m512i* const xacc = (__m512i *) acc; + __m512i* const xacc = (__m512i *) acc; XXH_ASSERT((((size_t)acc) & 63) == 0); XXH_STATIC_ASSERT(XXH_STRIPE_LEN == sizeof(__m512i)); @@ -3046,7 +5010,7 @@ XXH3_accumulate_512_avx512(void* XXH_RESTRICT acc, /* data_key = data_vec ^ key_vec; */ __m512i const data_key = _mm512_xor_si512 (data_vec, key_vec); /* data_key_lo = data_key >> 32; */ - __m512i const data_key_lo = _mm512_shuffle_epi32 (data_key, (_MM_PERM_ENUM)_MM_SHUFFLE(0, 3, 0, 1)); + __m512i const data_key_lo = _mm512_srli_epi64 (data_key, 32); /* product = (data_key & 0xffffffff) * (data_key_lo & 0xffffffff); */ __m512i const product = _mm512_mul_epu32 (data_key, data_key_lo); /* xacc[0] += swap(data_vec); */ @@ -3056,6 +5020,7 @@ XXH3_accumulate_512_avx512(void* XXH_RESTRICT acc, *xacc = _mm512_add_epi64(product, sum); } } +XXH_FORCE_INLINE XXH_TARGET_AVX512 XXH3_ACCUMULATE_TEMPLATE(avx512) /* * XXH3_scrambleAcc: Scrambles the accumulators to improve mixing. @@ -3083,19 +5048,18 @@ XXH3_scrambleAcc_avx512(void* XXH_RESTRICT acc, const void* XXH_RESTRICT secret) { XXH_ASSERT((((size_t)acc) & 63) == 0); XXH_STATIC_ASSERT(XXH_STRIPE_LEN == sizeof(__m512i)); - { XXH_ALIGN(64) __m512i* const xacc = (__m512i*) acc; + { __m512i* const xacc = (__m512i*) acc; const __m512i prime32 = _mm512_set1_epi32((int)XXH_PRIME32_1); /* xacc[0] ^= (xacc[0] >> 47) */ __m512i const acc_vec = *xacc; __m512i const shifted = _mm512_srli_epi64 (acc_vec, 47); - __m512i const data_vec = _mm512_xor_si512 (acc_vec, shifted); /* xacc[0] ^= secret; */ __m512i const key_vec = _mm512_loadu_si512 (secret); - __m512i const data_key = _mm512_xor_si512 (data_vec, key_vec); + __m512i const data_key = _mm512_ternarylogic_epi32(key_vec, acc_vec, shifted, 0x96 /* key_vec ^ acc_vec ^ shifted */); /* xacc[0] *= XXH_PRIME32_1; */ - __m512i const data_key_hi = _mm512_shuffle_epi32 (data_key, (_MM_PERM_ENUM)_MM_SHUFFLE(0, 3, 0, 1)); + __m512i const data_key_hi = _mm512_srli_epi64 (data_key, 32); __m512i const prod_lo = _mm512_mul_epu32 (data_key, prime32); __m512i const prod_hi = _mm512_mul_epu32 (data_key_hi, prime32); *xacc = _mm512_add_epi64(prod_lo, _mm512_slli_epi64(prod_hi, 32)); @@ -3110,26 +5074,23 @@ XXH3_initCustomSecret_avx512(void* XXH_RESTRICT customSecret, xxh_u64 seed64) XXH_ASSERT(((size_t)customSecret & 63) == 0); (void)(&XXH_writeLE64); { int const nbRounds = XXH_SECRET_DEFAULT_SIZE / sizeof(__m512i); - __m512i const seed = _mm512_mask_set1_epi64(_mm512_set1_epi64((xxh_i64)seed64), 0xAA, -(xxh_i64)seed64); + __m512i const seed_pos = _mm512_set1_epi64((xxh_i64)seed64); + __m512i const seed = _mm512_mask_sub_epi64(seed_pos, 0xAA, _mm512_set1_epi8(0), seed_pos); - XXH_ALIGN(64) const __m512i* const src = (const __m512i*) XXH3_kSecret; - XXH_ALIGN(64) __m512i* const dest = ( __m512i*) customSecret; + const __m512i* const src = (const __m512i*) ((const void*) XXH3_kSecret); + __m512i* const dest = ( __m512i*) customSecret; int i; + XXH_ASSERT(((size_t)src & 63) == 0); /* control alignment */ + XXH_ASSERT(((size_t)dest & 63) == 0); for (i=0; i < nbRounds; ++i) { - /* GCC has a bug, _mm512_stream_load_si512 accepts 'void*', not 'void const*', - * this will warn "discards ‘const’ qualifier". */ - union { - XXH_ALIGN(64) const __m512i* cp; - XXH_ALIGN(64) void* p; - } remote_const_void; - remote_const_void.cp = src + i; - dest[i] = _mm512_add_epi64(_mm512_stream_load_si512(remote_const_void.p), seed); + dest[i] = _mm512_add_epi64(_mm512_load_si512(src + i), seed); } } } #endif -#if (XXH_VECTOR == XXH_AVX2) || defined(XXH_X86DISPATCH) +#if (XXH_VECTOR == XXH_AVX2) \ + || (defined(XXH_DISPATCH_AVX2) && XXH_DISPATCH_AVX2 != 0) #ifndef XXH_TARGET_AVX2 # define XXH_TARGET_AVX2 /* disable attribute target */ @@ -3141,7 +5102,7 @@ XXH3_accumulate_512_avx2( void* XXH_RESTRICT acc, const void* XXH_RESTRICT secret) { XXH_ASSERT((((size_t)acc) & 31) == 0); - { XXH_ALIGN(32) __m256i* const xacc = (__m256i *) acc; + { __m256i* const xacc = (__m256i *) acc; /* Unaligned. This is mainly for pointer arithmetic, and because * _mm256_loadu_si256 requires a const __m256i * pointer for some reason. */ const __m256i* const xinput = (const __m256i *) input; @@ -3158,7 +5119,7 @@ XXH3_accumulate_512_avx2( void* XXH_RESTRICT acc, /* data_key = data_vec ^ key_vec; */ __m256i const data_key = _mm256_xor_si256 (data_vec, key_vec); /* data_key_lo = data_key >> 32; */ - __m256i const data_key_lo = _mm256_shuffle_epi32 (data_key, _MM_SHUFFLE(0, 3, 0, 1)); + __m256i const data_key_lo = _mm256_srli_epi64 (data_key, 32); /* product = (data_key & 0xffffffff) * (data_key_lo & 0xffffffff); */ __m256i const product = _mm256_mul_epu32 (data_key, data_key_lo); /* xacc[i] += swap(data_vec); */ @@ -3168,12 +5129,13 @@ XXH3_accumulate_512_avx2( void* XXH_RESTRICT acc, xacc[i] = _mm256_add_epi64(product, sum); } } } +XXH_FORCE_INLINE XXH_TARGET_AVX2 XXH3_ACCUMULATE_TEMPLATE(avx2) XXH_FORCE_INLINE XXH_TARGET_AVX2 void XXH3_scrambleAcc_avx2(void* XXH_RESTRICT acc, const void* XXH_RESTRICT secret) { XXH_ASSERT((((size_t)acc) & 31) == 0); - { XXH_ALIGN(32) __m256i* const xacc = (__m256i*) acc; + { __m256i* const xacc = (__m256i*) acc; /* Unaligned. This is mainly for pointer arithmetic, and because * _mm256_loadu_si256 requires a const __m256i * pointer for some reason. */ const __m256i* const xsecret = (const __m256i *) secret; @@ -3190,7 +5152,7 @@ XXH3_scrambleAcc_avx2(void* XXH_RESTRICT acc, const void* XXH_RESTRICT secret) __m256i const data_key = _mm256_xor_si256 (data_vec, key_vec); /* xacc[i] *= XXH_PRIME32_1; */ - __m256i const data_key_hi = _mm256_shuffle_epi32 (data_key, _MM_SHUFFLE(0, 3, 0, 1)); + __m256i const data_key_hi = _mm256_srli_epi64 (data_key, 32); __m256i const prod_lo = _mm256_mul_epu32 (data_key, prime32); __m256i const prod_hi = _mm256_mul_epu32 (data_key_hi, prime32); xacc[i] = _mm256_add_epi64(prod_lo, _mm256_slli_epi64(prod_hi, 32)); @@ -3205,36 +5167,35 @@ XXH_FORCE_INLINE XXH_TARGET_AVX2 void XXH3_initCustomSecret_avx2(void* XXH_RESTR XXH_STATIC_ASSERT(XXH_SEC_ALIGN <= 64); (void)(&XXH_writeLE64); XXH_PREFETCH(customSecret); - { __m256i const seed = _mm256_set_epi64x(-(xxh_i64)seed64, (xxh_i64)seed64, -(xxh_i64)seed64, (xxh_i64)seed64); + { __m256i const seed = _mm256_set_epi64x((xxh_i64)(0U - seed64), (xxh_i64)seed64, (xxh_i64)(0U - seed64), (xxh_i64)seed64); - XXH_ALIGN(64) const __m256i* const src = (const __m256i*) XXH3_kSecret; - XXH_ALIGN(64) __m256i* dest = ( __m256i*) customSecret; + const __m256i* const src = (const __m256i*) ((const void*) XXH3_kSecret); + __m256i* dest = ( __m256i*) customSecret; # if defined(__GNUC__) || defined(__clang__) /* * On GCC & Clang, marking 'dest' as modified will cause the compiler: * - do not extract the secret from sse registers in the internal loop * - use less common registers, and avoid pushing these reg into stack - * The asm hack causes Clang to assume that XXH3_kSecretPtr aliases with - * customSecret, and on aarch64, this prevented LDP from merging two - * loads together for free. Putting the loads together before the stores - * properly generates LDP. */ - __asm__("" : "+r" (dest)); + XXH_COMPILER_GUARD(dest); # endif + XXH_ASSERT(((size_t)src & 31) == 0); /* control alignment */ + XXH_ASSERT(((size_t)dest & 31) == 0); /* GCC -O2 need unroll loop manually */ - dest[0] = _mm256_add_epi64(_mm256_stream_load_si256(src+0), seed); - dest[1] = _mm256_add_epi64(_mm256_stream_load_si256(src+1), seed); - dest[2] = _mm256_add_epi64(_mm256_stream_load_si256(src+2), seed); - dest[3] = _mm256_add_epi64(_mm256_stream_load_si256(src+3), seed); - dest[4] = _mm256_add_epi64(_mm256_stream_load_si256(src+4), seed); - dest[5] = _mm256_add_epi64(_mm256_stream_load_si256(src+5), seed); + dest[0] = _mm256_add_epi64(_mm256_load_si256(src+0), seed); + dest[1] = _mm256_add_epi64(_mm256_load_si256(src+1), seed); + dest[2] = _mm256_add_epi64(_mm256_load_si256(src+2), seed); + dest[3] = _mm256_add_epi64(_mm256_load_si256(src+3), seed); + dest[4] = _mm256_add_epi64(_mm256_load_si256(src+4), seed); + dest[5] = _mm256_add_epi64(_mm256_load_si256(src+5), seed); } } #endif +/* x86dispatch always generates SSE2 */ #if (XXH_VECTOR == XXH_SSE2) || defined(XXH_X86DISPATCH) #ifndef XXH_TARGET_SSE2 @@ -3248,7 +5209,7 @@ XXH3_accumulate_512_sse2( void* XXH_RESTRICT acc, { /* SSE2 is just a half-scale version of the AVX2 version. */ XXH_ASSERT((((size_t)acc) & 15) == 0); - { XXH_ALIGN(16) __m128i* const xacc = (__m128i *) acc; + { __m128i* const xacc = (__m128i *) acc; /* Unaligned. This is mainly for pointer arithmetic, and because * _mm_loadu_si128 requires a const __m128i * pointer for some reason. */ const __m128i* const xinput = (const __m128i *) input; @@ -3275,12 +5236,13 @@ XXH3_accumulate_512_sse2( void* XXH_RESTRICT acc, xacc[i] = _mm_add_epi64(product, sum); } } } +XXH_FORCE_INLINE XXH_TARGET_SSE2 XXH3_ACCUMULATE_TEMPLATE(sse2) XXH_FORCE_INLINE XXH_TARGET_SSE2 void XXH3_scrambleAcc_sse2(void* XXH_RESTRICT acc, const void* XXH_RESTRICT secret) { XXH_ASSERT((((size_t)acc) & 15) == 0); - { XXH_ALIGN(16) __m128i* const xacc = (__m128i*) acc; + { __m128i* const xacc = (__m128i*) acc; /* Unaligned. This is mainly for pointer arithmetic, and because * _mm_loadu_si128 requires a const __m128i * pointer for some reason. */ const __m128i* const xsecret = (const __m128i *) secret; @@ -3312,27 +5274,29 @@ XXH_FORCE_INLINE XXH_TARGET_SSE2 void XXH3_initCustomSecret_sse2(void* XXH_RESTR { int const nbRounds = XXH_SECRET_DEFAULT_SIZE / sizeof(__m128i); # if defined(_MSC_VER) && defined(_M_IX86) && _MSC_VER < 1900 - // MSVC 32bit mode does not support _mm_set_epi64x before 2015 - XXH_ALIGN(16) const xxh_i64 seed64x2[2] = { (xxh_i64)seed64, -(xxh_i64)seed64 }; + /* MSVC 32bit mode does not support _mm_set_epi64x before 2015 */ + XXH_ALIGN(16) const xxh_i64 seed64x2[2] = { (xxh_i64)seed64, (xxh_i64)(0U - seed64) }; __m128i const seed = _mm_load_si128((__m128i const*)seed64x2); # else - __m128i const seed = _mm_set_epi64x(-(xxh_i64)seed64, (xxh_i64)seed64); + __m128i const seed = _mm_set_epi64x((xxh_i64)(0U - seed64), (xxh_i64)seed64); # endif int i; - XXH_ALIGN(64) const float* const src = (float const*) XXH3_kSecret; - XXH_ALIGN(XXH_SEC_ALIGN) __m128i* dest = (__m128i*) customSecret; + const void* const src16 = XXH3_kSecret; + __m128i* dst16 = (__m128i*) customSecret; # if defined(__GNUC__) || defined(__clang__) /* * On GCC & Clang, marking 'dest' as modified will cause the compiler: * - do not extract the secret from sse registers in the internal loop * - use less common registers, and avoid pushing these reg into stack */ - __asm__("" : "+r" (dest)); + XXH_COMPILER_GUARD(dst16); # endif + XXH_ASSERT(((size_t)src16 & 15) == 0); /* control alignment */ + XXH_ASSERT(((size_t)dst16 & 15) == 0); for (i=0; i < nbRounds; ++i) { - dest[i] = _mm_add_epi64(_mm_castps_si128(_mm_load_ps(src+i*4)), seed); + dst16[i] = _mm_add_epi64(_mm_load_si128((const __m128i *)src16+i), seed); } } } @@ -3340,96 +5304,222 @@ XXH_FORCE_INLINE XXH_TARGET_SSE2 void XXH3_initCustomSecret_sse2(void* XXH_RESTR #if (XXH_VECTOR == XXH_NEON) +/* forward declarations for the scalar routines */ +XXH_FORCE_INLINE void +XXH3_scalarRound(void* XXH_RESTRICT acc, void const* XXH_RESTRICT input, + void const* XXH_RESTRICT secret, size_t lane); + +XXH_FORCE_INLINE void +XXH3_scalarScrambleRound(void* XXH_RESTRICT acc, + void const* XXH_RESTRICT secret, size_t lane); + +/*! + * @internal + * @brief The bulk processing loop for NEON and WASM SIMD128. + * + * The NEON code path is actually partially scalar when running on AArch64. This + * is to optimize the pipelining and can have up to 15% speedup depending on the + * CPU, and it also mitigates some GCC codegen issues. + * + * @see XXH3_NEON_LANES for configuring this and details about this optimization. + * + * NEON's 32-bit to 64-bit long multiply takes a half vector of 32-bit + * integers instead of the other platforms which mask full 64-bit vectors, + * so the setup is more complicated than just shifting right. + * + * Additionally, there is an optimization for 4 lanes at once noted below. + * + * Since, as stated, the most optimal amount of lanes for Cortexes is 6, + * there needs to be *three* versions of the accumulate operation used + * for the remaining 2 lanes. + * + * WASM's SIMD128 uses SIMDe's arm_neon.h polyfill because the intrinsics overlap + * nearly perfectly. + */ + XXH_FORCE_INLINE void XXH3_accumulate_512_neon( void* XXH_RESTRICT acc, const void* XXH_RESTRICT input, const void* XXH_RESTRICT secret) { XXH_ASSERT((((size_t)acc) & 15) == 0); - { - XXH_ALIGN(16) uint64x2_t* const xacc = (uint64x2_t *) acc; + XXH_STATIC_ASSERT(XXH3_NEON_LANES > 0 && XXH3_NEON_LANES <= XXH_ACC_NB && XXH3_NEON_LANES % 2 == 0); + { /* GCC for darwin arm64 does not like aliasing here */ + xxh_aliasing_uint64x2_t* const xacc = (xxh_aliasing_uint64x2_t*) acc; /* We don't use a uint32x4_t pointer because it causes bus errors on ARMv7. */ - uint8_t const* const xinput = (const uint8_t *) input; - uint8_t const* const xsecret = (const uint8_t *) secret; + uint8_t const* xinput = (const uint8_t *) input; + uint8_t const* xsecret = (const uint8_t *) secret; size_t i; - for (i=0; i < XXH_STRIPE_LEN / sizeof(uint64x2_t); i++) { +#ifdef __wasm_simd128__ + /* + * On WASM SIMD128, Clang emits direct address loads when XXH3_kSecret + * is constant propagated, which results in it converting it to this + * inside the loop: + * + * a = v128.load(XXH3_kSecret + 0 + $secret_offset, offset = 0) + * b = v128.load(XXH3_kSecret + 16 + $secret_offset, offset = 0) + * ... + * + * This requires a full 32-bit address immediate (and therefore a 6 byte + * instruction) as well as an add for each offset. + * + * Putting an asm guard prevents it from folding (at the cost of losing + * the alignment hint), and uses the free offset in `v128.load` instead + * of adding secret_offset each time which overall reduces code size by + * about a kilobyte and improves performance. + */ + XXH_COMPILER_GUARD(xsecret); +#endif + /* Scalar lanes use the normal scalarRound routine */ + for (i = XXH3_NEON_LANES; i < XXH_ACC_NB; i++) { + XXH3_scalarRound(acc, input, secret, i); + } + i = 0; + /* 4 NEON lanes at a time. */ + for (; i+1 < XXH3_NEON_LANES / 2; i+=2) { /* data_vec = xinput[i]; */ - uint8x16_t data_vec = vld1q_u8(xinput + (i * 16)); + uint64x2_t data_vec_1 = XXH_vld1q_u64(xinput + (i * 16)); + uint64x2_t data_vec_2 = XXH_vld1q_u64(xinput + ((i+1) * 16)); /* key_vec = xsecret[i]; */ - uint8x16_t key_vec = vld1q_u8(xsecret + (i * 16)); - uint64x2_t data_key; - uint32x2_t data_key_lo, data_key_hi; - /* xacc[i] += swap(data_vec); */ - uint64x2_t const data64 = vreinterpretq_u64_u8(data_vec); - uint64x2_t const swapped = vextq_u64(data64, data64, 1); - xacc[i] = vaddq_u64 (xacc[i], swapped); + uint64x2_t key_vec_1 = XXH_vld1q_u64(xsecret + (i * 16)); + uint64x2_t key_vec_2 = XXH_vld1q_u64(xsecret + ((i+1) * 16)); + /* data_swap = swap(data_vec) */ + uint64x2_t data_swap_1 = vextq_u64(data_vec_1, data_vec_1, 1); + uint64x2_t data_swap_2 = vextq_u64(data_vec_2, data_vec_2, 1); /* data_key = data_vec ^ key_vec; */ - data_key = vreinterpretq_u64_u8(veorq_u8(data_vec, key_vec)); - /* data_key_lo = (uint32x2_t) (data_key & 0xFFFFFFFF); - * data_key_hi = (uint32x2_t) (data_key >> 32); - * data_key = UNDEFINED; */ - XXH_SPLIT_IN_PLACE(data_key, data_key_lo, data_key_hi); - /* xacc[i] += (uint64x2_t) data_key_lo * (uint64x2_t) data_key_hi; */ - xacc[i] = vmlal_u32 (xacc[i], data_key_lo, data_key_hi); + uint64x2_t data_key_1 = veorq_u64(data_vec_1, key_vec_1); + uint64x2_t data_key_2 = veorq_u64(data_vec_2, key_vec_2); + /* + * If we reinterpret the 64x2 vectors as 32x4 vectors, we can use a + * de-interleave operation for 4 lanes in 1 step with `vuzpq_u32` to + * get one vector with the low 32 bits of each lane, and one vector + * with the high 32 bits of each lane. + * + * The intrinsic returns a double vector because the original ARMv7-a + * instruction modified both arguments in place. AArch64 and SIMD128 emit + * two instructions from this intrinsic. + * + * [ dk11L | dk11H | dk12L | dk12H ] -> [ dk11L | dk12L | dk21L | dk22L ] + * [ dk21L | dk21H | dk22L | dk22H ] -> [ dk11H | dk12H | dk21H | dk22H ] + */ + uint32x4x2_t unzipped = vuzpq_u32( + vreinterpretq_u32_u64(data_key_1), + vreinterpretq_u32_u64(data_key_2) + ); + /* data_key_lo = data_key & 0xFFFFFFFF */ + uint32x4_t data_key_lo = unzipped.val[0]; + /* data_key_hi = data_key >> 32 */ + uint32x4_t data_key_hi = unzipped.val[1]; + /* + * Then, we can split the vectors horizontally and multiply which, as for most + * widening intrinsics, have a variant that works on both high half vectors + * for free on AArch64. A similar instruction is available on SIMD128. + * + * sum = data_swap + (u64x2) data_key_lo * (u64x2) data_key_hi + */ + uint64x2_t sum_1 = XXH_vmlal_low_u32(data_swap_1, data_key_lo, data_key_hi); + uint64x2_t sum_2 = XXH_vmlal_high_u32(data_swap_2, data_key_lo, data_key_hi); + /* + * Clang reorders + * a += b * c; // umlal swap.2d, dkl.2s, dkh.2s + * c += a; // add acc.2d, acc.2d, swap.2d + * to + * c += a; // add acc.2d, acc.2d, swap.2d + * c += b * c; // umlal acc.2d, dkl.2s, dkh.2s + * + * While it would make sense in theory since the addition is faster, + * for reasons likely related to umlal being limited to certain NEON + * pipelines, this is worse. A compiler guard fixes this. + */ + XXH_COMPILER_GUARD_CLANG_NEON(sum_1); + XXH_COMPILER_GUARD_CLANG_NEON(sum_2); + /* xacc[i] = acc_vec + sum; */ + xacc[i] = vaddq_u64(xacc[i], sum_1); + xacc[i+1] = vaddq_u64(xacc[i+1], sum_2); + } + /* Operate on the remaining NEON lanes 2 at a time. */ + for (; i < XXH3_NEON_LANES / 2; i++) { + /* data_vec = xinput[i]; */ + uint64x2_t data_vec = XXH_vld1q_u64(xinput + (i * 16)); + /* key_vec = xsecret[i]; */ + uint64x2_t key_vec = XXH_vld1q_u64(xsecret + (i * 16)); + /* acc_vec_2 = swap(data_vec) */ + uint64x2_t data_swap = vextq_u64(data_vec, data_vec, 1); + /* data_key = data_vec ^ key_vec; */ + uint64x2_t data_key = veorq_u64(data_vec, key_vec); + /* For two lanes, just use VMOVN and VSHRN. */ + /* data_key_lo = data_key & 0xFFFFFFFF; */ + uint32x2_t data_key_lo = vmovn_u64(data_key); + /* data_key_hi = data_key >> 32; */ + uint32x2_t data_key_hi = vshrn_n_u64(data_key, 32); + /* sum = data_swap + (u64x2) data_key_lo * (u64x2) data_key_hi; */ + uint64x2_t sum = vmlal_u32(data_swap, data_key_lo, data_key_hi); + /* Same Clang workaround as before */ + XXH_COMPILER_GUARD_CLANG_NEON(sum); + /* xacc[i] = acc_vec + sum; */ + xacc[i] = vaddq_u64 (xacc[i], sum); } } } +XXH_FORCE_INLINE XXH3_ACCUMULATE_TEMPLATE(neon) XXH_FORCE_INLINE void XXH3_scrambleAcc_neon(void* XXH_RESTRICT acc, const void* XXH_RESTRICT secret) { XXH_ASSERT((((size_t)acc) & 15) == 0); - { uint64x2_t* xacc = (uint64x2_t*) acc; + { xxh_aliasing_uint64x2_t* xacc = (xxh_aliasing_uint64x2_t*) acc; uint8_t const* xsecret = (uint8_t const*) secret; - uint32x2_t prime = vdup_n_u32 (XXH_PRIME32_1); size_t i; - for (i=0; i < XXH_STRIPE_LEN/sizeof(uint64x2_t); i++) { + /* WASM uses operator overloads and doesn't need these. */ +#ifndef __wasm_simd128__ + /* { prime32_1, prime32_1 } */ + uint32x2_t const kPrimeLo = vdup_n_u32(XXH_PRIME32_1); + /* { 0, prime32_1, 0, prime32_1 } */ + uint32x4_t const kPrimeHi = vreinterpretq_u32_u64(vdupq_n_u64((xxh_u64)XXH_PRIME32_1 << 32)); +#endif + + /* AArch64 uses both scalar and neon at the same time */ + for (i = XXH3_NEON_LANES; i < XXH_ACC_NB; i++) { + XXH3_scalarScrambleRound(acc, secret, i); + } + for (i=0; i < XXH3_NEON_LANES / 2; i++) { /* xacc[i] ^= (xacc[i] >> 47); */ uint64x2_t acc_vec = xacc[i]; - uint64x2_t shifted = vshrq_n_u64 (acc_vec, 47); - uint64x2_t data_vec = veorq_u64 (acc_vec, shifted); + uint64x2_t shifted = vshrq_n_u64(acc_vec, 47); + uint64x2_t data_vec = veorq_u64(acc_vec, shifted); /* xacc[i] ^= xsecret[i]; */ - uint8x16_t key_vec = vld1q_u8(xsecret + (i * 16)); - uint64x2_t data_key = veorq_u64(data_vec, vreinterpretq_u64_u8(key_vec)); - + uint64x2_t key_vec = XXH_vld1q_u64(xsecret + (i * 16)); + uint64x2_t data_key = veorq_u64(data_vec, key_vec); /* xacc[i] *= XXH_PRIME32_1 */ - uint32x2_t data_key_lo, data_key_hi; - /* data_key_lo = (uint32x2_t) (xacc[i] & 0xFFFFFFFF); - * data_key_hi = (uint32x2_t) (xacc[i] >> 32); - * xacc[i] = UNDEFINED; */ - XXH_SPLIT_IN_PLACE(data_key, data_key_lo, data_key_hi); - { /* - * prod_hi = (data_key >> 32) * XXH_PRIME32_1; - * - * Avoid vmul_u32 + vshll_n_u32 since Clang 6 and 7 will - * incorrectly "optimize" this: - * tmp = vmul_u32(vmovn_u64(a), vmovn_u64(b)); - * shifted = vshll_n_u32(tmp, 32); - * to this: - * tmp = "vmulq_u64"(a, b); // no such thing! - * shifted = vshlq_n_u64(tmp, 32); - * - * However, unlike SSE, Clang lacks a 64-bit multiply routine - * for NEON, and it scalarizes two 64-bit multiplies instead. - * - * vmull_u32 has the same timing as vmul_u32, and it avoids - * this bug completely. - * See https://bugs.llvm.org/show_bug.cgi?id=39967 - */ - uint64x2_t prod_hi = vmull_u32 (data_key_hi, prime); - /* xacc[i] = prod_hi << 32; */ - xacc[i] = vshlq_n_u64(prod_hi, 32); - /* xacc[i] += (prod_hi & 0xFFFFFFFF) * XXH_PRIME32_1; */ - xacc[i] = vmlal_u32(xacc[i], data_key_lo, prime); - } - } } +#ifdef __wasm_simd128__ + /* SIMD128 has multiply by u64x2, use it instead of expanding and scalarizing */ + xacc[i] = data_key * XXH_PRIME32_1; +#else + /* + * Expanded version with portable NEON intrinsics + * + * lo(x) * lo(y) + (hi(x) * lo(y) << 32) + * + * prod_hi = hi(data_key) * lo(prime) << 32 + * + * Since we only need 32 bits of this multiply a trick can be used, reinterpreting the vector + * as a uint32x4_t and multiplying by { 0, prime, 0, prime } to cancel out the unwanted bits + * and avoid the shift. + */ + uint32x4_t prod_hi = vmulq_u32 (vreinterpretq_u32_u64(data_key), kPrimeHi); + /* Extract low bits for vmlal_u32 */ + uint32x2_t data_key_lo = vmovn_u64(data_key); + /* xacc[i] = prod_hi + lo(data_key) * XXH_PRIME32_1; */ + xacc[i] = vmlal_u32(vreinterpretq_u64_u32(prod_hi), data_key_lo, kPrimeLo); +#endif + } + } } - #endif #if (XXH_VECTOR == XXH_VSX) @@ -3439,39 +5529,44 @@ XXH3_accumulate_512_vsx( void* XXH_RESTRICT acc, const void* XXH_RESTRICT input, const void* XXH_RESTRICT secret) { - xxh_u64x2* const xacc = (xxh_u64x2*) acc; /* presumed aligned */ - xxh_u64x2 const* const xinput = (xxh_u64x2 const*) input; /* no alignment restriction */ - xxh_u64x2 const* const xsecret = (xxh_u64x2 const*) secret; /* no alignment restriction */ + /* presumed aligned */ + xxh_aliasing_u64x2* const xacc = (xxh_aliasing_u64x2*) acc; + xxh_u8 const* const xinput = (xxh_u8 const*) input; /* no alignment restriction */ + xxh_u8 const* const xsecret = (xxh_u8 const*) secret; /* no alignment restriction */ xxh_u64x2 const v32 = { 32, 32 }; size_t i; for (i = 0; i < XXH_STRIPE_LEN / sizeof(xxh_u64x2); i++) { /* data_vec = xinput[i]; */ - xxh_u64x2 const data_vec = XXH_vec_loadu(xinput + i); + xxh_u64x2 const data_vec = XXH_vec_loadu(xinput + 16*i); /* key_vec = xsecret[i]; */ - xxh_u64x2 const key_vec = XXH_vec_loadu(xsecret + i); + xxh_u64x2 const key_vec = XXH_vec_loadu(xsecret + 16*i); xxh_u64x2 const data_key = data_vec ^ key_vec; /* shuffled = (data_key << 32) | (data_key >> 32); */ xxh_u32x4 const shuffled = (xxh_u32x4)vec_rl(data_key, v32); /* product = ((xxh_u64x2)data_key & 0xFFFFFFFF) * ((xxh_u64x2)shuffled & 0xFFFFFFFF); */ xxh_u64x2 const product = XXH_vec_mulo((xxh_u32x4)data_key, shuffled); - xacc[i] += product; + /* acc_vec = xacc[i]; */ + xxh_u64x2 acc_vec = xacc[i]; + acc_vec += product; /* swap high and low halves */ #ifdef __s390x__ - xacc[i] += vec_permi(data_vec, data_vec, 2); + acc_vec += vec_permi(data_vec, data_vec, 2); #else - xacc[i] += vec_xxpermdi(data_vec, data_vec, 2); + acc_vec += vec_xxpermdi(data_vec, data_vec, 2); #endif + xacc[i] = acc_vec; } } +XXH_FORCE_INLINE XXH3_ACCUMULATE_TEMPLATE(vsx) XXH_FORCE_INLINE void XXH3_scrambleAcc_vsx(void* XXH_RESTRICT acc, const void* XXH_RESTRICT secret) { XXH_ASSERT((((size_t)acc) & 15) == 0); - { xxh_u64x2* const xacc = (xxh_u64x2*) acc; - const xxh_u64x2* const xsecret = (const xxh_u64x2*) secret; + { xxh_aliasing_u64x2* const xacc = (xxh_aliasing_u64x2*) acc; + const xxh_u8* const xsecret = (const xxh_u8*) secret; /* constants */ xxh_u64x2 const v32 = { 32, 32 }; xxh_u64x2 const v47 = { 47, 47 }; @@ -3483,7 +5578,7 @@ XXH3_scrambleAcc_vsx(void* XXH_RESTRICT acc, const void* XXH_RESTRICT secret) xxh_u64x2 const data_vec = acc_vec ^ (acc_vec >> v47); /* xacc[i] ^= xsecret[i]; */ - xxh_u64x2 const key_vec = XXH_vec_loadu(xsecret + i); + xxh_u64x2 const key_vec = XXH_vec_loadu(xsecret + 16*i); xxh_u64x2 const data_key = data_vec ^ key_vec; /* xacc[i] *= XXH_PRIME32_1 */ @@ -3497,40 +5592,357 @@ XXH3_scrambleAcc_vsx(void* XXH_RESTRICT acc, const void* XXH_RESTRICT secret) #endif +#if (XXH_VECTOR == XXH_SVE) + +XXH_FORCE_INLINE void +XXH3_accumulate_512_sve( void* XXH_RESTRICT acc, + const void* XXH_RESTRICT input, + const void* XXH_RESTRICT secret) +{ + uint64_t *xacc = (uint64_t *)acc; + const uint64_t *xinput = (const uint64_t *)(const void *)input; + const uint64_t *xsecret = (const uint64_t *)(const void *)secret; + svuint64_t kSwap = sveor_n_u64_z(svptrue_b64(), svindex_u64(0, 1), 1); + uint64_t element_count = svcntd(); + if (element_count >= 8) { + svbool_t mask = svptrue_pat_b64(SV_VL8); + svuint64_t vacc = svld1_u64(mask, xacc); + ACCRND(vacc, 0); + svst1_u64(mask, xacc, vacc); + } else if (element_count == 2) { /* sve128 */ + svbool_t mask = svptrue_pat_b64(SV_VL2); + svuint64_t acc0 = svld1_u64(mask, xacc + 0); + svuint64_t acc1 = svld1_u64(mask, xacc + 2); + svuint64_t acc2 = svld1_u64(mask, xacc + 4); + svuint64_t acc3 = svld1_u64(mask, xacc + 6); + ACCRND(acc0, 0); + ACCRND(acc1, 2); + ACCRND(acc2, 4); + ACCRND(acc3, 6); + svst1_u64(mask, xacc + 0, acc0); + svst1_u64(mask, xacc + 2, acc1); + svst1_u64(mask, xacc + 4, acc2); + svst1_u64(mask, xacc + 6, acc3); + } else { + svbool_t mask = svptrue_pat_b64(SV_VL4); + svuint64_t acc0 = svld1_u64(mask, xacc + 0); + svuint64_t acc1 = svld1_u64(mask, xacc + 4); + ACCRND(acc0, 0); + ACCRND(acc1, 4); + svst1_u64(mask, xacc + 0, acc0); + svst1_u64(mask, xacc + 4, acc1); + } +} + +XXH_FORCE_INLINE void +XXH3_accumulate_sve(xxh_u64* XXH_RESTRICT acc, + const xxh_u8* XXH_RESTRICT input, + const xxh_u8* XXH_RESTRICT secret, + size_t nbStripes) +{ + if (nbStripes != 0) { + uint64_t *xacc = (uint64_t *)acc; + const uint64_t *xinput = (const uint64_t *)(const void *)input; + const uint64_t *xsecret = (const uint64_t *)(const void *)secret; + svuint64_t kSwap = sveor_n_u64_z(svptrue_b64(), svindex_u64(0, 1), 1); + uint64_t element_count = svcntd(); + if (element_count >= 8) { + svbool_t mask = svptrue_pat_b64(SV_VL8); + svuint64_t vacc = svld1_u64(mask, xacc + 0); + do { + /* svprfd(svbool_t, void *, enum svfprop); */ + svprfd(mask, xinput + 128, SV_PLDL1STRM); + ACCRND(vacc, 0); + xinput += 8; + xsecret += 1; + nbStripes--; + } while (nbStripes != 0); + + svst1_u64(mask, xacc + 0, vacc); + } else if (element_count == 2) { /* sve128 */ + svbool_t mask = svptrue_pat_b64(SV_VL2); + svuint64_t acc0 = svld1_u64(mask, xacc + 0); + svuint64_t acc1 = svld1_u64(mask, xacc + 2); + svuint64_t acc2 = svld1_u64(mask, xacc + 4); + svuint64_t acc3 = svld1_u64(mask, xacc + 6); + do { + svprfd(mask, xinput + 128, SV_PLDL1STRM); + ACCRND(acc0, 0); + ACCRND(acc1, 2); + ACCRND(acc2, 4); + ACCRND(acc3, 6); + xinput += 8; + xsecret += 1; + nbStripes--; + } while (nbStripes != 0); + + svst1_u64(mask, xacc + 0, acc0); + svst1_u64(mask, xacc + 2, acc1); + svst1_u64(mask, xacc + 4, acc2); + svst1_u64(mask, xacc + 6, acc3); + } else { + svbool_t mask = svptrue_pat_b64(SV_VL4); + svuint64_t acc0 = svld1_u64(mask, xacc + 0); + svuint64_t acc1 = svld1_u64(mask, xacc + 4); + do { + svprfd(mask, xinput + 128, SV_PLDL1STRM); + ACCRND(acc0, 0); + ACCRND(acc1, 4); + xinput += 8; + xsecret += 1; + nbStripes--; + } while (nbStripes != 0); + + svst1_u64(mask, xacc + 0, acc0); + svst1_u64(mask, xacc + 4, acc1); + } + } +} + +#endif + +#if (XXH_VECTOR == XXH_LSX) +#define _LSX_SHUFFLE(z, y, x, w) (((z) << 6) | ((y) << 4) | ((x) << 2) | (w)) + +XXH_FORCE_INLINE void +XXH3_accumulate_512_lsx( void* XXH_RESTRICT acc, + const void* XXH_RESTRICT input, + const void* XXH_RESTRICT secret) +{ + XXH_ASSERT((((size_t)acc) & 15) == 0); + { + __m128i* const xacc = (__m128i *) acc; + const __m128i* const xinput = (const __m128i *) input; + const __m128i* const xsecret = (const __m128i *) secret; + + for (size_t i = 0; i < XXH_STRIPE_LEN / sizeof(__m128i); i++) { + /* data_vec = xinput[i]; */ + __m128i const data_vec = __lsx_vld(xinput + i, 0); + /* key_vec = xsecret[i]; */ + __m128i const key_vec = __lsx_vld(xsecret + i, 0); + /* data_key = data_vec ^ key_vec; */ + __m128i const data_key = __lsx_vxor_v(data_vec, key_vec); + /* data_key_lo = data_key >> 32; */ + __m128i const data_key_lo = __lsx_vsrli_d(data_key, 32); + // __m128i const data_key_lo = __lsx_vsrli_d(data_key, 32); + /* product = (data_key & 0xffffffff) * (data_key_lo & 0xffffffff); */ + __m128i const product = __lsx_vmulwev_d_wu(data_key, data_key_lo); + /* xacc[i] += swap(data_vec); */ + __m128i const data_swap = __lsx_vshuf4i_w(data_vec, _LSX_SHUFFLE(1, 0, 3, 2)); + __m128i const sum = __lsx_vadd_d(xacc[i], data_swap); + /* xacc[i] += product; */ + xacc[i] = __lsx_vadd_d(product, sum); + } + } +} +XXH_FORCE_INLINE XXH3_ACCUMULATE_TEMPLATE(lsx) + +XXH_FORCE_INLINE void +XXH3_scrambleAcc_lsx(void* XXH_RESTRICT acc, const void* XXH_RESTRICT secret) +{ + XXH_ASSERT((((size_t)acc) & 15) == 0); + { + __m128i* const xacc = (__m128i*) acc; + const __m128i* const xsecret = (const __m128i *) secret; + const __m128i prime32 = __lsx_vreplgr2vr_d(XXH_PRIME32_1); + + for (size_t i = 0; i < XXH_STRIPE_LEN / sizeof(__m128i); i++) { + /* xacc[i] ^= (xacc[i] >> 47) */ + __m128i const acc_vec = xacc[i]; + __m128i const shifted = __lsx_vsrli_d(acc_vec, 47); + __m128i const data_vec = __lsx_vxor_v(acc_vec, shifted); + /* xacc[i] ^= xsecret[i]; */ + __m128i const key_vec = __lsx_vld(xsecret + i, 0); + __m128i const data_key = __lsx_vxor_v(data_vec, key_vec); + + /* xacc[i] *= XXH_PRIME32_1; */ + xacc[i] = __lsx_vmul_d(data_key, prime32); + } + } +} + +#endif + +#if (XXH_VECTOR == XXH_LASX) +#define _LASX_SHUFFLE(z, y, x, w) (((z) << 6) | ((y) << 4) | ((x) << 2) | (w)) + +XXH_FORCE_INLINE void +XXH3_accumulate_512_lasx( void* XXH_RESTRICT acc, + const void* XXH_RESTRICT input, + const void* XXH_RESTRICT secret) +{ + XXH_ASSERT((((size_t)acc) & 31) == 0); + { + __m256i* const xacc = (__m256i *) acc; + const __m256i* const xinput = (const __m256i *) input; + const __m256i* const xsecret = (const __m256i *) secret; + + for (size_t i = 0; i < XXH_STRIPE_LEN / sizeof(__m256i); i++) { + /* data_vec = xinput[i]; */ + __m256i const data_vec = __lasx_xvld(xinput + i, 0); + /* key_vec = xsecret[i]; */ + __m256i const key_vec = __lasx_xvld(xsecret + i, 0); + /* data_key = data_vec ^ key_vec; */ + __m256i const data_key = __lasx_xvxor_v(data_vec, key_vec); + /* data_key_lo = data_key >> 32; */ + __m256i const data_key_lo = __lasx_xvsrli_d(data_key, 32); + // __m256i const data_key_lo = __lasx_xvsrli_d(data_key, 32); + /* product = (data_key & 0xffffffff) * (data_key_lo & 0xffffffff); */ + __m256i const product = __lasx_xvmulwev_d_wu(data_key, data_key_lo); + /* xacc[i] += swap(data_vec); */ + __m256i const data_swap = __lasx_xvshuf4i_w(data_vec, _LASX_SHUFFLE(1, 0, 3, 2)); + __m256i const sum = __lasx_xvadd_d(xacc[i], data_swap); + /* xacc[i] += product; */ + xacc[i] = __lasx_xvadd_d(product, sum); + } + } +} +XXH_FORCE_INLINE XXH3_ACCUMULATE_TEMPLATE(lasx) + +XXH_FORCE_INLINE void +XXH3_scrambleAcc_lasx(void* XXH_RESTRICT acc, const void* XXH_RESTRICT secret) +{ + XXH_ASSERT((((size_t)acc) & 31) == 0); + { + __m256i* const xacc = (__m256i*) acc; + const __m256i* const xsecret = (const __m256i *) secret; + const __m256i prime32 = __lasx_xvreplgr2vr_d(XXH_PRIME32_1); + + for (size_t i = 0; i < XXH_STRIPE_LEN / sizeof(__m256i); i++) { + /* xacc[i] ^= (xacc[i] >> 47) */ + __m256i const acc_vec = xacc[i]; + __m256i const shifted = __lasx_xvsrli_d(acc_vec, 47); + __m256i const data_vec = __lasx_xvxor_v(acc_vec, shifted); + /* xacc[i] ^= xsecret[i]; */ + __m256i const key_vec = __lasx_xvld(xsecret + i, 0); + __m256i const data_key = __lasx_xvxor_v(data_vec, key_vec); + + /* xacc[i] *= XXH_PRIME32_1; */ + xacc[i] = __lasx_xvmul_d(data_key, prime32); + } + } +} + +#endif + /* scalar variants - universal */ +#if defined(__aarch64__) && (defined(__GNUC__) || defined(__clang__)) +/* + * In XXH3_scalarRound(), GCC and Clang have a similar codegen issue, where they + * emit an excess mask and a full 64-bit multiply-add (MADD X-form). + * + * While this might not seem like much, as AArch64 is a 64-bit architecture, only + * big Cortex designs have a full 64-bit multiplier. + * + * On the little cores, the smaller 32-bit multiplier is used, and full 64-bit + * multiplies expand to 2-3 multiplies in microcode. This has a major penalty + * of up to 4 latency cycles and 2 stall cycles in the multiply pipeline. + * + * Thankfully, AArch64 still provides the 32-bit long multiply-add (UMADDL) which does + * not have this penalty and does the mask automatically. + */ +XXH_FORCE_INLINE xxh_u64 +XXH_mult32to64_add64(xxh_u64 lhs, xxh_u64 rhs, xxh_u64 acc) +{ + xxh_u64 ret; + /* note: %x = 64-bit register, %w = 32-bit register */ + __asm__("umaddl %x0, %w1, %w2, %x3" : "=r" (ret) : "r" (lhs), "r" (rhs), "r" (acc)); + return ret; +} +#else +XXH_FORCE_INLINE xxh_u64 +XXH_mult32to64_add64(xxh_u64 lhs, xxh_u64 rhs, xxh_u64 acc) +{ + return XXH_mult32to64((xxh_u32)lhs, (xxh_u32)rhs) + acc; +} +#endif + +/*! + * @internal + * @brief Scalar round for @ref XXH3_accumulate_512_scalar(). + * + * This is extracted to its own function because the NEON path uses a combination + * of NEON and scalar. + */ +XXH_FORCE_INLINE void +XXH3_scalarRound(void* XXH_RESTRICT acc, + void const* XXH_RESTRICT input, + void const* XXH_RESTRICT secret, + size_t lane) +{ + xxh_u64* xacc = (xxh_u64*) acc; + xxh_u8 const* xinput = (xxh_u8 const*) input; + xxh_u8 const* xsecret = (xxh_u8 const*) secret; + XXH_ASSERT(lane < XXH_ACC_NB); + XXH_ASSERT(((size_t)acc & (XXH_ACC_ALIGN-1)) == 0); + { + xxh_u64 const data_val = XXH_readLE64(xinput + lane * 8); + xxh_u64 const data_key = data_val ^ XXH_readLE64(xsecret + lane * 8); + xacc[lane ^ 1] += data_val; /* swap adjacent lanes */ + xacc[lane] = XXH_mult32to64_add64(data_key /* & 0xFFFFFFFF */, data_key >> 32, xacc[lane]); + } +} + +/*! + * @internal + * @brief Processes a 64 byte block of data using the scalar path. + */ XXH_FORCE_INLINE void XXH3_accumulate_512_scalar(void* XXH_RESTRICT acc, const void* XXH_RESTRICT input, const void* XXH_RESTRICT secret) { - XXH_ALIGN(XXH_ACC_ALIGN) xxh_u64* const xacc = (xxh_u64*) acc; /* presumed aligned */ - const xxh_u8* const xinput = (const xxh_u8*) input; /* no alignment restriction */ - const xxh_u8* const xsecret = (const xxh_u8*) secret; /* no alignment restriction */ size_t i; - XXH_ASSERT(((size_t)acc & (XXH_ACC_ALIGN-1)) == 0); + /* ARM GCC refuses to unroll this loop, resulting in a 24% slowdown on ARMv6. */ +#if defined(__GNUC__) && !defined(__clang__) \ + && (defined(__arm__) || defined(__thumb2__)) \ + && defined(__ARM_FEATURE_UNALIGNED) /* no unaligned access just wastes bytes */ \ + && XXH_SIZE_OPT <= 0 +# pragma GCC unroll 8 +#endif for (i=0; i < XXH_ACC_NB; i++) { - xxh_u64 const data_val = XXH_readLE64(xinput + 8*i); - xxh_u64 const data_key = data_val ^ XXH_readLE64(xsecret + i*8); - xacc[i ^ 1] += data_val; /* swap adjacent lanes */ - xacc[i] += XXH_mult32to64(data_key & 0xFFFFFFFF, data_key >> 32); + XXH3_scalarRound(acc, input, secret, i); } } +XXH_FORCE_INLINE XXH3_ACCUMULATE_TEMPLATE(scalar) +/*! + * @internal + * @brief Scalar scramble step for @ref XXH3_scrambleAcc_scalar(). + * + * This is extracted to its own function because the NEON path uses a combination + * of NEON and scalar. + */ XXH_FORCE_INLINE void -XXH3_scrambleAcc_scalar(void* XXH_RESTRICT acc, const void* XXH_RESTRICT secret) +XXH3_scalarScrambleRound(void* XXH_RESTRICT acc, + void const* XXH_RESTRICT secret, + size_t lane) { - XXH_ALIGN(XXH_ACC_ALIGN) xxh_u64* const xacc = (xxh_u64*) acc; /* presumed aligned */ + xxh_u64* const xacc = (xxh_u64*) acc; /* presumed aligned */ const xxh_u8* const xsecret = (const xxh_u8*) secret; /* no alignment restriction */ - size_t i; XXH_ASSERT((((size_t)acc) & (XXH_ACC_ALIGN-1)) == 0); - for (i=0; i < XXH_ACC_NB; i++) { - xxh_u64 const key64 = XXH_readLE64(xsecret + 8*i); - xxh_u64 acc64 = xacc[i]; + XXH_ASSERT(lane < XXH_ACC_NB); + { + xxh_u64 const key64 = XXH_readLE64(xsecret + lane * 8); + xxh_u64 acc64 = xacc[lane]; acc64 = XXH_xorshift64(acc64, 47); acc64 ^= key64; acc64 *= XXH_PRIME32_1; - xacc[i] = acc64; + xacc[lane] = acc64; + } +} + +/*! + * @internal + * @brief Scrambles the accumulators after a large chunk has been read + */ +XXH_FORCE_INLINE void +XXH3_scrambleAcc_scalar(void* XXH_RESTRICT acc, const void* XXH_RESTRICT secret) +{ + size_t i; + for (i=0; i < XXH_ACC_NB; i++) { + XXH3_scalarScrambleRound(acc, secret, i); } } @@ -3545,15 +5957,16 @@ XXH3_initCustomSecret_scalar(void* XXH_RESTRICT customSecret, xxh_u64 seed64) const xxh_u8* kSecretPtr = XXH3_kSecret; XXH_STATIC_ASSERT((XXH_SECRET_DEFAULT_SIZE & 15) == 0); -#if defined(__clang__) && defined(__aarch64__) +#if defined(__GNUC__) && defined(__aarch64__) /* * UGLY HACK: - * Clang generates a bunch of MOV/MOVK pairs for aarch64, and they are + * GCC and Clang generate a bunch of MOV/MOVK pairs for aarch64, and they are * placed sequentially, in order, at the top of the unrolled loop. * * While MOVK is great for generating constants (2 cycles for a 64-bit - * constant compared to 4 cycles for LDR), long MOVK chains stall the - * integer pipelines: + * constant compared to 4 cycles for LDR), it fights for bandwidth with + * the arithmetic instructions. + * * I L S * MOVK * MOVK @@ -3562,7 +5975,7 @@ XXH3_initCustomSecret_scalar(void* XXH_RESTRICT customSecret, xxh_u64 seed64) * ADD * SUB STR * STR - * By forcing loads from memory (as the asm line causes Clang to assume + * By forcing loads from memory (as the asm line causes the compiler to assume * that XXH3_kSecretPtr has been changed), the pipelines are used more * efficiently: * I L S @@ -3570,23 +5983,20 @@ XXH3_initCustomSecret_scalar(void* XXH_RESTRICT customSecret, xxh_u64 seed64) * ADD LDR * SUB STR * STR + * + * See XXH3_NEON_LANES for details on the pipsline. + * * XXH3_64bits_withSeed, len == 256, Snapdragon 835 * without hack: 2654.4 MB/s * with hack: 3202.9 MB/s */ - __asm__("" : "+r" (kSecretPtr)); + XXH_COMPILER_GUARD(kSecretPtr); #endif - /* - * Note: in debug mode, this overrides the asm optimization - * and Clang will emit MOVK chains again. - */ - XXH_ASSERT(kSecretPtr == XXH3_kSecret); - { int const nbRounds = XXH_SECRET_DEFAULT_SIZE / 16; int i; for (i=0; i < nbRounds; i++) { /* - * The asm hack causes Clang to assume that kSecretPtr aliases with + * The asm hack causes the compiler to assume that kSecretPtr aliases with * customSecret, and on aarch64, this prevented LDP from merging two * loads together for free. Putting the loads together before the stores * properly generates LDP. @@ -3599,7 +6009,7 @@ XXH3_initCustomSecret_scalar(void* XXH_RESTRICT customSecret, xxh_u64 seed64) } -typedef void (*XXH3_f_accumulate_512)(void* XXH_RESTRICT, const void*, const void*); +typedef void (*XXH3_f_accumulate)(xxh_u64* XXH_RESTRICT, const xxh_u8* XXH_RESTRICT, const xxh_u8* XXH_RESTRICT, size_t); typedef void (*XXH3_f_scrambleAcc)(void* XXH_RESTRICT, const void*); typedef void (*XXH3_f_initCustomSecret)(void* XXH_RESTRICT, xxh_u64); @@ -3607,82 +6017,75 @@ typedef void (*XXH3_f_initCustomSecret)(void* XXH_RESTRICT, xxh_u64); #if (XXH_VECTOR == XXH_AVX512) #define XXH3_accumulate_512 XXH3_accumulate_512_avx512 +#define XXH3_accumulate XXH3_accumulate_avx512 #define XXH3_scrambleAcc XXH3_scrambleAcc_avx512 #define XXH3_initCustomSecret XXH3_initCustomSecret_avx512 #elif (XXH_VECTOR == XXH_AVX2) #define XXH3_accumulate_512 XXH3_accumulate_512_avx2 +#define XXH3_accumulate XXH3_accumulate_avx2 #define XXH3_scrambleAcc XXH3_scrambleAcc_avx2 #define XXH3_initCustomSecret XXH3_initCustomSecret_avx2 #elif (XXH_VECTOR == XXH_SSE2) #define XXH3_accumulate_512 XXH3_accumulate_512_sse2 +#define XXH3_accumulate XXH3_accumulate_sse2 #define XXH3_scrambleAcc XXH3_scrambleAcc_sse2 #define XXH3_initCustomSecret XXH3_initCustomSecret_sse2 #elif (XXH_VECTOR == XXH_NEON) #define XXH3_accumulate_512 XXH3_accumulate_512_neon +#define XXH3_accumulate XXH3_accumulate_neon #define XXH3_scrambleAcc XXH3_scrambleAcc_neon #define XXH3_initCustomSecret XXH3_initCustomSecret_scalar #elif (XXH_VECTOR == XXH_VSX) #define XXH3_accumulate_512 XXH3_accumulate_512_vsx +#define XXH3_accumulate XXH3_accumulate_vsx #define XXH3_scrambleAcc XXH3_scrambleAcc_vsx #define XXH3_initCustomSecret XXH3_initCustomSecret_scalar +#elif (XXH_VECTOR == XXH_SVE) +#define XXH3_accumulate_512 XXH3_accumulate_512_sve +#define XXH3_accumulate XXH3_accumulate_sve +#define XXH3_scrambleAcc XXH3_scrambleAcc_scalar +#define XXH3_initCustomSecret XXH3_initCustomSecret_scalar + +#elif (XXH_VECTOR == XXH_LASX) +#define XXH3_accumulate_512 XXH3_accumulate_512_lasx +#define XXH3_accumulate XXH3_accumulate_lasx +#define XXH3_scrambleAcc XXH3_scrambleAcc_lasx +#define XXH3_initCustomSecret XXH3_initCustomSecret_scalar + +#elif (XXH_VECTOR == XXH_LSX) +#define XXH3_accumulate_512 XXH3_accumulate_512_lsx +#define XXH3_accumulate XXH3_accumulate_lsx +#define XXH3_scrambleAcc XXH3_scrambleAcc_lsx +#define XXH3_initCustomSecret XXH3_initCustomSecret_scalar + #else /* scalar */ #define XXH3_accumulate_512 XXH3_accumulate_512_scalar +#define XXH3_accumulate XXH3_accumulate_scalar #define XXH3_scrambleAcc XXH3_scrambleAcc_scalar #define XXH3_initCustomSecret XXH3_initCustomSecret_scalar #endif - - -#ifndef XXH_PREFETCH_DIST -# ifdef __clang__ -# define XXH_PREFETCH_DIST 320 -# else -# if (XXH_VECTOR == XXH_AVX512) -# define XXH_PREFETCH_DIST 512 -# else -# define XXH_PREFETCH_DIST 384 -# endif -# endif /* __clang__ */ -#endif /* XXH_PREFETCH_DIST */ - -/* - * XXH3_accumulate() - * Loops over XXH3_accumulate_512(). - * Assumption: nbStripes will not overflow the secret size - */ -XXH_FORCE_INLINE void -XXH3_accumulate( xxh_u64* XXH_RESTRICT acc, - const xxh_u8* XXH_RESTRICT input, - const xxh_u8* XXH_RESTRICT secret, - size_t nbStripes, - XXH3_f_accumulate_512 f_acc512) -{ - size_t n; - for (n = 0; n < nbStripes; n++ ) { - const xxh_u8* const in = input + n*XXH_STRIPE_LEN; - XXH_PREFETCH(in + XXH_PREFETCH_DIST); - f_acc512(acc, - in, - secret + n*XXH_SECRET_CONSUME_RATE); - } -} +#if XXH_SIZE_OPT >= 1 /* don't do SIMD for initialization */ +# undef XXH3_initCustomSecret +# define XXH3_initCustomSecret XXH3_initCustomSecret_scalar +#endif XXH_FORCE_INLINE void XXH3_hashLong_internal_loop(xxh_u64* XXH_RESTRICT acc, const xxh_u8* XXH_RESTRICT input, size_t len, const xxh_u8* XXH_RESTRICT secret, size_t secretSize, - XXH3_f_accumulate_512 f_acc512, + XXH3_f_accumulate f_acc, XXH3_f_scrambleAcc f_scramble) { size_t const nbStripesPerBlock = (secretSize - XXH_STRIPE_LEN) / XXH_SECRET_CONSUME_RATE; @@ -3694,7 +6097,7 @@ XXH3_hashLong_internal_loop(xxh_u64* XXH_RESTRICT acc, XXH_ASSERT(secretSize >= XXH3_SECRET_SIZE_MIN); for (n = 0; n < nb_blocks; n++) { - XXH3_accumulate(acc, input + n*block_len, secret, nbStripesPerBlock, f_acc512); + f_acc(acc, input + n*block_len, secret, nbStripesPerBlock); f_scramble(acc, secret + secretSize - XXH_STRIPE_LEN); } @@ -3702,12 +6105,12 @@ XXH3_hashLong_internal_loop(xxh_u64* XXH_RESTRICT acc, XXH_ASSERT(len > XXH_STRIPE_LEN); { size_t const nbStripes = ((len - 1) - (block_len * nb_blocks)) / XXH_STRIPE_LEN; XXH_ASSERT(nbStripes <= (secretSize / XXH_SECRET_CONSUME_RATE)); - XXH3_accumulate(acc, input + nb_blocks*block_len, secret, nbStripes, f_acc512); + f_acc(acc, input + nb_blocks*block_len, secret, nbStripes); /* last stripe */ { const xxh_u8* const p = input + len - XXH_STRIPE_LEN; #define XXH_SECRET_LASTACC_START 7 /* not aligned on 8, last secret is different from acc & scrambler */ - f_acc512(acc, p, secret + secretSize - XXH_STRIPE_LEN - XXH_SECRET_LASTACC_START); + XXH3_accumulate_512(acc, p, secret + secretSize - XXH_STRIPE_LEN - XXH_SECRET_LASTACC_START); } } } @@ -3719,7 +6122,7 @@ XXH3_mix2Accs(const xxh_u64* XXH_RESTRICT acc, const xxh_u8* XXH_RESTRICT secret acc[1] ^ XXH_readLE64(secret+8) ); } -static XXH64_hash_t +static XXH_PUREF XXH64_hash_t XXH3_mergeAccs(const xxh_u64* XXH_RESTRICT acc, const xxh_u8* XXH_RESTRICT secret, xxh_u64 start) { xxh_u64 result64 = start; @@ -3739,58 +6142,68 @@ XXH3_mergeAccs(const xxh_u64* XXH_RESTRICT acc, const xxh_u8* XXH_RESTRICT secre * without hack: 2063.7 MB/s * with hack: 2560.7 MB/s */ - __asm__("" : "+r" (result64)); + XXH_COMPILER_GUARD(result64); #endif } return XXH3_avalanche(result64); } +/* do not align on 8, so that the secret is different from the accumulator */ +#define XXH_SECRET_MERGEACCS_START 11 + +static XXH_PUREF XXH64_hash_t +XXH3_finalizeLong_64b(const xxh_u64* XXH_RESTRICT acc, const xxh_u8* XXH_RESTRICT secret, xxh_u64 len) +{ + return XXH3_mergeAccs(acc, secret + XXH_SECRET_MERGEACCS_START, len * XXH_PRIME64_1); +} + #define XXH3_INIT_ACC { XXH_PRIME32_3, XXH_PRIME64_1, XXH_PRIME64_2, XXH_PRIME64_3, \ XXH_PRIME64_4, XXH_PRIME32_2, XXH_PRIME64_5, XXH_PRIME32_1 } XXH_FORCE_INLINE XXH64_hash_t XXH3_hashLong_64b_internal(const void* XXH_RESTRICT input, size_t len, const void* XXH_RESTRICT secret, size_t secretSize, - XXH3_f_accumulate_512 f_acc512, + XXH3_f_accumulate f_acc, XXH3_f_scrambleAcc f_scramble) { XXH_ALIGN(XXH_ACC_ALIGN) xxh_u64 acc[XXH_ACC_NB] = XXH3_INIT_ACC; - XXH3_hashLong_internal_loop(acc, (const xxh_u8*)input, len, (const xxh_u8*)secret, secretSize, f_acc512, f_scramble); + XXH3_hashLong_internal_loop(acc, (const xxh_u8*)input, len, (const xxh_u8*)secret, secretSize, f_acc, f_scramble); /* converge into final hash */ XXH_STATIC_ASSERT(sizeof(acc) == 64); - /* do not align on 8, so that the secret is different from the accumulator */ -#define XXH_SECRET_MERGEACCS_START 11 XXH_ASSERT(secretSize >= sizeof(acc) + XXH_SECRET_MERGEACCS_START); - return XXH3_mergeAccs(acc, (const xxh_u8*)secret + XXH_SECRET_MERGEACCS_START, (xxh_u64)len * XXH_PRIME64_1); + return XXH3_finalizeLong_64b(acc, (const xxh_u8*)secret, (xxh_u64)len); } /* - * It's important for performance that XXH3_hashLong is not inlined. + * It's important for performance to transmit secret's size (when it's static) + * so that the compiler can properly optimize the vectorized loop. + * This makes a big performance difference for "medium" keys (<1 KB) when using AVX instruction set. + * When the secret size is unknown, or on GCC 12 where the mix of NO_INLINE and FORCE_INLINE + * breaks -Og, this is XXH_NO_INLINE. */ -XXH_NO_INLINE XXH64_hash_t +XXH3_WITH_SECRET_INLINE XXH64_hash_t XXH3_hashLong_64b_withSecret(const void* XXH_RESTRICT input, size_t len, XXH64_hash_t seed64, const xxh_u8* XXH_RESTRICT secret, size_t secretLen) { (void)seed64; - return XXH3_hashLong_64b_internal(input, len, secret, secretLen, XXH3_accumulate_512, XXH3_scrambleAcc); + return XXH3_hashLong_64b_internal(input, len, secret, secretLen, XXH3_accumulate, XXH3_scrambleAcc); } /* - * It's important for performance that XXH3_hashLong is not inlined. - * Since the function is not inlined, the compiler may not be able to understand that, - * in some scenarios, its `secret` argument is actually a compile time constant. - * This variant enforces that the compiler can detect that, - * and uses this opportunity to streamline the generated code for better performance. + * It's preferable for performance that XXH3_hashLong is not inlined, + * as it results in a smaller function for small data, easier to the instruction cache. + * Note that inside this no_inline function, we do inline the internal loop, + * and provide a statically defined secret size to allow optimization of vector loop. */ -XXH_NO_INLINE XXH64_hash_t +XXH_NO_INLINE XXH_PUREF XXH64_hash_t XXH3_hashLong_64b_default(const void* XXH_RESTRICT input, size_t len, XXH64_hash_t seed64, const xxh_u8* XXH_RESTRICT secret, size_t secretLen) { (void)seed64; (void)secret; (void)secretLen; - return XXH3_hashLong_64b_internal(input, len, XXH3_kSecret, sizeof(XXH3_kSecret), XXH3_accumulate_512, XXH3_scrambleAcc); + return XXH3_hashLong_64b_internal(input, len, XXH3_kSecret, sizeof(XXH3_kSecret), XXH3_accumulate, XXH3_scrambleAcc); } /* @@ -3807,18 +6220,20 @@ XXH3_hashLong_64b_default(const void* XXH_RESTRICT input, size_t len, XXH_FORCE_INLINE XXH64_hash_t XXH3_hashLong_64b_withSeed_internal(const void* input, size_t len, XXH64_hash_t seed, - XXH3_f_accumulate_512 f_acc512, + XXH3_f_accumulate f_acc, XXH3_f_scrambleAcc f_scramble, XXH3_f_initCustomSecret f_initSec) { +#if XXH_SIZE_OPT <= 0 if (seed == 0) return XXH3_hashLong_64b_internal(input, len, XXH3_kSecret, sizeof(XXH3_kSecret), - f_acc512, f_scramble); + f_acc, f_scramble); +#endif { XXH_ALIGN(XXH_SEC_ALIGN) xxh_u8 secret[XXH_SECRET_DEFAULT_SIZE]; f_initSec(secret, seed); return XXH3_hashLong_64b_internal(input, len, secret, sizeof(secret), - f_acc512, f_scramble); + f_acc, f_scramble); } } @@ -3826,12 +6241,12 @@ XXH3_hashLong_64b_withSeed_internal(const void* input, size_t len, * It's important for performance that XXH3_hashLong is not inlined. */ XXH_NO_INLINE XXH64_hash_t -XXH3_hashLong_64b_withSeed(const void* input, size_t len, - XXH64_hash_t seed, const xxh_u8* secret, size_t secretLen) +XXH3_hashLong_64b_withSeed(const void* XXH_RESTRICT input, size_t len, + XXH64_hash_t seed, const xxh_u8* XXH_RESTRICT secret, size_t secretLen) { (void)secret; (void)secretLen; return XXH3_hashLong_64b_withSeed_internal(input, len, seed, - XXH3_accumulate_512, XXH3_scrambleAcc, XXH3_initCustomSecret); + XXH3_accumulate, XXH3_scrambleAcc, XXH3_initCustomSecret); } @@ -3863,28 +6278,39 @@ XXH3_64bits_internal(const void* XXH_RESTRICT input, size_t len, /* === Public entry point === */ -XXH_PUBLIC_API XXH64_hash_t XXH3_64bits(const void* input, size_t len) +/*! @ingroup XXH3_family */ +XXH_PUBLIC_API XXH64_hash_t XXH3_64bits(XXH_NOESCAPE const void* input, size_t length) { - return XXH3_64bits_internal(input, len, 0, XXH3_kSecret, sizeof(XXH3_kSecret), XXH3_hashLong_64b_default); + return XXH3_64bits_internal(input, length, 0, XXH3_kSecret, sizeof(XXH3_kSecret), XXH3_hashLong_64b_default); +} + +/*! @ingroup XXH3_family */ +XXH_PUBLIC_API XXH64_hash_t +XXH3_64bits_withSecret(XXH_NOESCAPE const void* input, size_t length, XXH_NOESCAPE const void* secret, size_t secretSize) +{ + return XXH3_64bits_internal(input, length, 0, secret, secretSize, XXH3_hashLong_64b_withSecret); +} + +/*! @ingroup XXH3_family */ +XXH_PUBLIC_API XXH64_hash_t +XXH3_64bits_withSeed(XXH_NOESCAPE const void* input, size_t length, XXH64_hash_t seed) +{ + return XXH3_64bits_internal(input, length, seed, XXH3_kSecret, sizeof(XXH3_kSecret), XXH3_hashLong_64b_withSeed); } XXH_PUBLIC_API XXH64_hash_t -XXH3_64bits_withSecret(const void* input, size_t len, const void* secret, size_t secretSize) +XXH3_64bits_withSecretandSeed(XXH_NOESCAPE const void* input, size_t length, XXH_NOESCAPE const void* secret, size_t secretSize, XXH64_hash_t seed) { - return XXH3_64bits_internal(input, len, 0, secret, secretSize, XXH3_hashLong_64b_withSecret); -} - -XXH_PUBLIC_API XXH64_hash_t -XXH3_64bits_withSeed(const void* input, size_t len, XXH64_hash_t seed) -{ - return XXH3_64bits_internal(input, len, seed, XXH3_kSecret, sizeof(XXH3_kSecret), XXH3_hashLong_64b_withSeed); + if (length <= XXH3_MIDSIZE_MAX) + return XXH3_64bits_internal(input, length, seed, XXH3_kSecret, sizeof(XXH3_kSecret), NULL); + return XXH3_hashLong_64b_withSecret(input, length, seed, (const xxh_u8*)secret, secretSize); } /* === XXH3 streaming === */ - +#ifndef XXH_NO_STREAM /* - * Malloc's a pointer that is always aligned to align. + * Malloc's a pointer that is always aligned to @align. * * This must be freed with `XXH_alignedFree()`. * @@ -3906,7 +6332,7 @@ XXH3_64bits_withSeed(const void* input, size_t len, XXH64_hash_t seed) * * Align must be a power of 2 and 8 <= align <= 128. */ -static void* XXH_alignedMalloc(size_t s, size_t align) +static XXH_MALLOCF void* XXH_alignedMalloc(size_t s, size_t align) { XXH_ASSERT(align <= 128 && align >= 8); /* range check */ XXH_ASSERT((align & (align-1)) == 0); /* power of 2 */ @@ -3948,6 +6374,17 @@ static void XXH_alignedFree(void* p) XXH_free(base); } } +/*! @ingroup XXH3_family */ +/*! + * @brief Allocate an @ref XXH3_state_t. + * + * @return An allocated pointer of @ref XXH3_state_t on success. + * @return `NULL` on failure. + * + * @note Must be freed with XXH3_freeState(). + * + * @see @ref streaming_example "Streaming Example" + */ XXH_PUBLIC_API XXH3_state_t* XXH3_createState(void) { XXH3_state_t* const state = (XXH3_state_t*)XXH_alignedMalloc(sizeof(XXH3_state_t), 64); @@ -3956,29 +6393,42 @@ XXH_PUBLIC_API XXH3_state_t* XXH3_createState(void) return state; } +/*! @ingroup XXH3_family */ +/*! + * @brief Frees an @ref XXH3_state_t. + * + * @param statePtr A pointer to an @ref XXH3_state_t allocated with @ref XXH3_createState(). + * + * @return @ref XXH_OK. + * + * @note Must be allocated with XXH3_createState(). + * + * @see @ref streaming_example "Streaming Example" + */ XXH_PUBLIC_API XXH_errorcode XXH3_freeState(XXH3_state_t* statePtr) { XXH_alignedFree(statePtr); return XXH_OK; } +/*! @ingroup XXH3_family */ XXH_PUBLIC_API void -XXH3_copyState(XXH3_state_t* dst_state, const XXH3_state_t* src_state) +XXH3_copyState(XXH_NOESCAPE XXH3_state_t* dst_state, XXH_NOESCAPE const XXH3_state_t* src_state) { - memcpy(dst_state, src_state, sizeof(*dst_state)); + XXH_memcpy(dst_state, src_state, sizeof(*dst_state)); } static void -XXH3_64bits_reset_internal(XXH3_state_t* statePtr, - XXH64_hash_t seed, - const void* secret, size_t secretSize) +XXH3_reset_internal(XXH3_state_t* statePtr, + XXH64_hash_t seed, + const void* secret, size_t secretSize) { size_t const initStart = offsetof(XXH3_state_t, bufferedSize); size_t const initLength = offsetof(XXH3_state_t, nbStripesPerBlock) - initStart; XXH_ASSERT(offsetof(XXH3_state_t, nbStripesPerBlock) > initStart); XXH_ASSERT(statePtr != NULL); /* set members from bufferedSize to nbStripesPerBlock (excluded) to 0 */ - memset((char*)statePtr + initStart, 0, initLength); + XXH_memset((char*)statePtr + initStart, 0, initLength); statePtr->acc[0] = XXH_PRIME32_3; statePtr->acc[1] = XXH_PRIME64_1; statePtr->acc[2] = XXH_PRIME64_2; @@ -3988,95 +6438,154 @@ XXH3_64bits_reset_internal(XXH3_state_t* statePtr, statePtr->acc[6] = XXH_PRIME64_5; statePtr->acc[7] = XXH_PRIME32_1; statePtr->seed = seed; + statePtr->useSeed = (seed != 0); statePtr->extSecret = (const unsigned char*)secret; XXH_ASSERT(secretSize >= XXH3_SECRET_SIZE_MIN); statePtr->secretLimit = secretSize - XXH_STRIPE_LEN; statePtr->nbStripesPerBlock = statePtr->secretLimit / XXH_SECRET_CONSUME_RATE; } +/*! @ingroup XXH3_family */ XXH_PUBLIC_API XXH_errorcode -XXH3_64bits_reset(XXH3_state_t* statePtr) +XXH3_64bits_reset(XXH_NOESCAPE XXH3_state_t* statePtr) { if (statePtr == NULL) return XXH_ERROR; - XXH3_64bits_reset_internal(statePtr, 0, XXH3_kSecret, XXH_SECRET_DEFAULT_SIZE); + XXH3_reset_internal(statePtr, 0, XXH3_kSecret, XXH_SECRET_DEFAULT_SIZE); return XXH_OK; } +/*! @ingroup XXH3_family */ XXH_PUBLIC_API XXH_errorcode -XXH3_64bits_reset_withSecret(XXH3_state_t* statePtr, const void* secret, size_t secretSize) +XXH3_64bits_reset_withSecret(XXH_NOESCAPE XXH3_state_t* statePtr, XXH_NOESCAPE const void* secret, size_t secretSize) { if (statePtr == NULL) return XXH_ERROR; - XXH3_64bits_reset_internal(statePtr, 0, secret, secretSize); + XXH3_reset_internal(statePtr, 0, secret, secretSize); if (secret == NULL) return XXH_ERROR; if (secretSize < XXH3_SECRET_SIZE_MIN) return XXH_ERROR; return XXH_OK; } +/*! @ingroup XXH3_family */ XXH_PUBLIC_API XXH_errorcode -XXH3_64bits_reset_withSeed(XXH3_state_t* statePtr, XXH64_hash_t seed) +XXH3_64bits_reset_withSeed(XXH_NOESCAPE XXH3_state_t* statePtr, XXH64_hash_t seed) { if (statePtr == NULL) return XXH_ERROR; if (seed==0) return XXH3_64bits_reset(statePtr); - if (seed != statePtr->seed) XXH3_initCustomSecret(statePtr->customSecret, seed); - XXH3_64bits_reset_internal(statePtr, seed, NULL, XXH_SECRET_DEFAULT_SIZE); + if ((seed != statePtr->seed) || (statePtr->extSecret != NULL)) + XXH3_initCustomSecret(statePtr->customSecret, seed); + XXH3_reset_internal(statePtr, seed, NULL, XXH_SECRET_DEFAULT_SIZE); return XXH_OK; } -/* Note : when XXH3_consumeStripes() is invoked, - * there must be a guarantee that at least one more byte must be consumed from input - * so that the function can blindly consume all stripes using the "normal" secret segment */ -XXH_FORCE_INLINE void +/*! @ingroup XXH3_family */ +XXH_PUBLIC_API XXH_errorcode +XXH3_64bits_reset_withSecretandSeed(XXH_NOESCAPE XXH3_state_t* statePtr, XXH_NOESCAPE const void* secret, size_t secretSize, XXH64_hash_t seed64) +{ + if (statePtr == NULL) return XXH_ERROR; + if (secret == NULL) return XXH_ERROR; + if (secretSize < XXH3_SECRET_SIZE_MIN) return XXH_ERROR; + XXH3_reset_internal(statePtr, seed64, secret, secretSize); + statePtr->useSeed = 1; /* always, even if seed64==0 */ + return XXH_OK; +} + +/*! + * @internal + * @brief Processes a large input for XXH3_update() and XXH3_digest_long(). + * + * Unlike XXH3_hashLong_internal_loop(), this can process data that overlaps a block. + * + * @param acc Pointer to the 8 accumulator lanes + * @param nbStripesSoFarPtr In/out pointer to the number of leftover stripes in the block* + * @param nbStripesPerBlock Number of stripes in a block + * @param input Input pointer + * @param nbStripes Number of stripes to process + * @param secret Secret pointer + * @param secretLimit Offset of the last block in @p secret + * @param f_acc Pointer to an XXH3_accumulate implementation + * @param f_scramble Pointer to an XXH3_scrambleAcc implementation + * @return Pointer past the end of @p input after processing + */ +XXH_FORCE_INLINE const xxh_u8 * XXH3_consumeStripes(xxh_u64* XXH_RESTRICT acc, size_t* XXH_RESTRICT nbStripesSoFarPtr, size_t nbStripesPerBlock, const xxh_u8* XXH_RESTRICT input, size_t nbStripes, const xxh_u8* XXH_RESTRICT secret, size_t secretLimit, - XXH3_f_accumulate_512 f_acc512, + XXH3_f_accumulate f_acc, XXH3_f_scrambleAcc f_scramble) { - XXH_ASSERT(nbStripes <= nbStripesPerBlock); /* can handle max 1 scramble per invocation */ - XXH_ASSERT(*nbStripesSoFarPtr < nbStripesPerBlock); - if (nbStripesPerBlock - *nbStripesSoFarPtr <= nbStripes) { - /* need a scrambling operation */ - size_t const nbStripesToEndofBlock = nbStripesPerBlock - *nbStripesSoFarPtr; - size_t const nbStripesAfterBlock = nbStripes - nbStripesToEndofBlock; - XXH3_accumulate(acc, input, secret + nbStripesSoFarPtr[0] * XXH_SECRET_CONSUME_RATE, nbStripesToEndofBlock, f_acc512); - f_scramble(acc, secret + secretLimit); - XXH3_accumulate(acc, input + nbStripesToEndofBlock * XXH_STRIPE_LEN, secret, nbStripesAfterBlock, f_acc512); - *nbStripesSoFarPtr = nbStripesAfterBlock; - } else { - XXH3_accumulate(acc, input, secret + nbStripesSoFarPtr[0] * XXH_SECRET_CONSUME_RATE, nbStripes, f_acc512); + const xxh_u8* initialSecret = secret + *nbStripesSoFarPtr * XXH_SECRET_CONSUME_RATE; + /* Process full blocks */ + if (nbStripes >= (nbStripesPerBlock - *nbStripesSoFarPtr)) { + /* Process the initial partial block... */ + size_t nbStripesThisIter = nbStripesPerBlock - *nbStripesSoFarPtr; + + do { + /* Accumulate and scramble */ + f_acc(acc, input, initialSecret, nbStripesThisIter); + f_scramble(acc, secret + secretLimit); + input += nbStripesThisIter * XXH_STRIPE_LEN; + nbStripes -= nbStripesThisIter; + /* Then continue the loop with the full block size */ + nbStripesThisIter = nbStripesPerBlock; + initialSecret = secret; + } while (nbStripes >= nbStripesPerBlock); + *nbStripesSoFarPtr = 0; + } + /* Process a partial block */ + if (nbStripes > 0) { + f_acc(acc, input, initialSecret, nbStripes); + input += nbStripes * XXH_STRIPE_LEN; *nbStripesSoFarPtr += nbStripes; } + /* Return end pointer */ + return input; } -/* - * Both XXH3_64bits_update and XXH3_128bits_update use this routine. +#ifndef XXH3_STREAM_USE_STACK +# if XXH_SIZE_OPT <= 0 && !defined(__clang__) /* clang doesn't need additional stack space */ +# define XXH3_STREAM_USE_STACK 1 +# endif +#endif +/* This function accepts f_acc and f_scramble as function pointers, + * making it possible to implement multiple variants with different acc & scramble stages. + * This is notably useful to implement multiple vector variants with different intrinsics. */ XXH_FORCE_INLINE XXH_errorcode -XXH3_update(XXH3_state_t* state, - const xxh_u8* input, size_t len, - XXH3_f_accumulate_512 f_acc512, +XXH3_update(XXH3_state_t* XXH_RESTRICT const state, + const xxh_u8* XXH_RESTRICT input, size_t len, + XXH3_f_accumulate f_acc, XXH3_f_scrambleAcc f_scramble) { - if (input==NULL) -#if defined(XXH_ACCEPT_NULL_INPUT_POINTER) && (XXH_ACCEPT_NULL_INPUT_POINTER>=1) + if (input==NULL) { + XXH_ASSERT(len == 0); return XXH_OK; -#else - return XXH_ERROR; -#endif + } + XXH_ASSERT(state != NULL); { const xxh_u8* const bEnd = input + len; const unsigned char* const secret = (state->extSecret == NULL) ? state->customSecret : state->extSecret; - +#if defined(XXH3_STREAM_USE_STACK) && XXH3_STREAM_USE_STACK >= 1 + /* For some reason, gcc and MSVC seem to suffer greatly + * when operating accumulators directly into state. + * Operating into stack space seems to enable proper optimization. + * clang, on the other hand, doesn't seem to need this trick */ + XXH_ALIGN(XXH_ACC_ALIGN) xxh_u64 acc[8]; + XXH_memcpy(acc, state->acc, sizeof(acc)); +#else + xxh_u64* XXH_RESTRICT const acc = state->acc; +#endif state->totalLen += len; + XXH_ASSERT(state->bufferedSize <= XXH3_INTERNALBUFFER_SIZE); - if (state->bufferedSize + len <= XXH3_INTERNALBUFFER_SIZE) { /* fill in tmp buffer */ + /* small input : just fill in tmp buffer */ + if (len <= XXH3_INTERNALBUFFER_SIZE - state->bufferedSize) { XXH_memcpy(state->buffer + state->bufferedSize, input, len); state->bufferedSize += (XXH32_hash_t)len; return XXH_OK; } - /* total input is now > XXH3_INTERNALBUFFER_SIZE */ + /* total input is now > XXH3_INTERNALBUFFER_SIZE */ #define XXH3_INTERNALBUFFER_STRIPES (XXH3_INTERNALBUFFER_SIZE / XXH_STRIPE_LEN) XXH_STATIC_ASSERT(XXH3_INTERNALBUFFER_SIZE % XXH_STRIPE_LEN == 0); /* clean multiple */ @@ -4088,44 +6597,54 @@ XXH3_update(XXH3_state_t* state, size_t const loadSize = XXH3_INTERNALBUFFER_SIZE - state->bufferedSize; XXH_memcpy(state->buffer + state->bufferedSize, input, loadSize); input += loadSize; - XXH3_consumeStripes(state->acc, + XXH3_consumeStripes(acc, &state->nbStripesSoFar, state->nbStripesPerBlock, state->buffer, XXH3_INTERNALBUFFER_STRIPES, secret, state->secretLimit, - f_acc512, f_scramble); + f_acc, f_scramble); state->bufferedSize = 0; } XXH_ASSERT(input < bEnd); + if (bEnd - input > XXH3_INTERNALBUFFER_SIZE) { + size_t nbStripes = (size_t)(bEnd - 1 - input) / XXH_STRIPE_LEN; + input = XXH3_consumeStripes(acc, + &state->nbStripesSoFar, state->nbStripesPerBlock, + input, nbStripes, + secret, state->secretLimit, + f_acc, f_scramble); + XXH_memcpy(state->buffer + sizeof(state->buffer) - XXH_STRIPE_LEN, input - XXH_STRIPE_LEN, XXH_STRIPE_LEN); - /* Consume input by a multiple of internal buffer size */ - if (input+XXH3_INTERNALBUFFER_SIZE < bEnd) { - const xxh_u8* const limit = bEnd - XXH3_INTERNALBUFFER_SIZE; - do { - XXH3_consumeStripes(state->acc, - &state->nbStripesSoFar, state->nbStripesPerBlock, - input, XXH3_INTERNALBUFFER_STRIPES, - secret, state->secretLimit, - f_acc512, f_scramble); - input += XXH3_INTERNALBUFFER_SIZE; - } while (inputbuffer + sizeof(state->buffer) - XXH_STRIPE_LEN, input - XXH_STRIPE_LEN, XXH_STRIPE_LEN); } - XXH_ASSERT(input < bEnd); - /* Some remaining input (always) : buffer it */ + XXH_ASSERT(input < bEnd); + XXH_ASSERT(bEnd - input <= XXH3_INTERNALBUFFER_SIZE); + XXH_ASSERT(state->bufferedSize == 0); XXH_memcpy(state->buffer, input, (size_t)(bEnd-input)); state->bufferedSize = (XXH32_hash_t)(bEnd-input); +#if defined(XXH3_STREAM_USE_STACK) && XXH3_STREAM_USE_STACK >= 1 + /* save stack accumulators into state */ + XXH_memcpy(state->acc, acc, sizeof(acc)); +#endif } return XXH_OK; } -XXH_PUBLIC_API XXH_errorcode -XXH3_64bits_update(XXH3_state_t* state, const void* input, size_t len) +/* + * Both XXH3_64bits_update and XXH3_128bits_update use this routine. + */ +XXH_NO_INLINE XXH_errorcode +XXH3_update_regular(XXH_NOESCAPE XXH3_state_t* state, XXH_NOESCAPE const void* input, size_t len) { return XXH3_update(state, (const xxh_u8*)input, len, - XXH3_accumulate_512, XXH3_scrambleAcc); + XXH3_accumulate, XXH3_scrambleAcc); +} + +/*! @ingroup XXH3_family */ +XXH_PUBLIC_API XXH_errorcode +XXH3_64bits_update(XXH_NOESCAPE XXH3_state_t* state, XXH_NOESCAPE const void* input, size_t len) +{ + return XXH3_update_regular(state, input, len); } @@ -4134,96 +6653,54 @@ XXH3_digest_long (XXH64_hash_t* acc, const XXH3_state_t* state, const unsigned char* secret) { + xxh_u8 lastStripe[XXH_STRIPE_LEN]; + const xxh_u8* lastStripePtr; + /* * Digest on a local copy. This way, the state remains unaltered, and it can * continue ingesting more input afterwards. */ - memcpy(acc, state->acc, sizeof(state->acc)); + XXH_memcpy(acc, state->acc, sizeof(state->acc)); if (state->bufferedSize >= XXH_STRIPE_LEN) { + /* Consume remaining stripes then point to remaining data in buffer */ size_t const nbStripes = (state->bufferedSize - 1) / XXH_STRIPE_LEN; size_t nbStripesSoFar = state->nbStripesSoFar; XXH3_consumeStripes(acc, &nbStripesSoFar, state->nbStripesPerBlock, state->buffer, nbStripes, secret, state->secretLimit, - XXH3_accumulate_512, XXH3_scrambleAcc); - /* last stripe */ - XXH3_accumulate_512(acc, - state->buffer + state->bufferedSize - XXH_STRIPE_LEN, - secret + state->secretLimit - XXH_SECRET_LASTACC_START); + XXH3_accumulate, XXH3_scrambleAcc); + lastStripePtr = state->buffer + state->bufferedSize - XXH_STRIPE_LEN; } else { /* bufferedSize < XXH_STRIPE_LEN */ - xxh_u8 lastStripe[XXH_STRIPE_LEN]; + /* Copy to temp buffer */ size_t const catchupSize = XXH_STRIPE_LEN - state->bufferedSize; XXH_ASSERT(state->bufferedSize > 0); /* there is always some input buffered */ - memcpy(lastStripe, state->buffer + sizeof(state->buffer) - catchupSize, catchupSize); - memcpy(lastStripe + catchupSize, state->buffer, state->bufferedSize); - XXH3_accumulate_512(acc, - lastStripe, - secret + state->secretLimit - XXH_SECRET_LASTACC_START); + XXH_memcpy(lastStripe, state->buffer + sizeof(state->buffer) - catchupSize, catchupSize); + XXH_memcpy(lastStripe + catchupSize, state->buffer, state->bufferedSize); + lastStripePtr = lastStripe; } + /* Last stripe */ + XXH3_accumulate_512(acc, + lastStripePtr, + secret + state->secretLimit - XXH_SECRET_LASTACC_START); } -XXH_PUBLIC_API XXH64_hash_t XXH3_64bits_digest (const XXH3_state_t* state) +/*! @ingroup XXH3_family */ +XXH_PUBLIC_API XXH64_hash_t XXH3_64bits_digest (XXH_NOESCAPE const XXH3_state_t* state) { const unsigned char* const secret = (state->extSecret == NULL) ? state->customSecret : state->extSecret; if (state->totalLen > XXH3_MIDSIZE_MAX) { XXH_ALIGN(XXH_ACC_ALIGN) XXH64_hash_t acc[XXH_ACC_NB]; XXH3_digest_long(acc, state, secret); - return XXH3_mergeAccs(acc, - secret + XXH_SECRET_MERGEACCS_START, - (xxh_u64)state->totalLen * XXH_PRIME64_1); + return XXH3_finalizeLong_64b(acc, secret, (xxh_u64)state->totalLen); } /* totalLen <= XXH3_MIDSIZE_MAX: digesting a short input */ - if (state->seed) + if (state->useSeed) return XXH3_64bits_withSeed(state->buffer, (size_t)state->totalLen, state->seed); return XXH3_64bits_withSecret(state->buffer, (size_t)(state->totalLen), secret, state->secretLimit + XXH_STRIPE_LEN); } - - -#define XXH_MIN(x, y) (((x) > (y)) ? (y) : (x)) - -XXH_PUBLIC_API void -XXH3_generateSecret(void* secretBuffer, const void* customSeed, size_t customSeedSize) -{ - XXH_ASSERT(secretBuffer != NULL); - if (customSeedSize == 0) { - memcpy(secretBuffer, XXH3_kSecret, XXH_SECRET_DEFAULT_SIZE); - return; - } - XXH_ASSERT(customSeed != NULL); - - { size_t const segmentSize = sizeof(XXH128_hash_t); - size_t const nbSegments = XXH_SECRET_DEFAULT_SIZE / segmentSize; - XXH128_canonical_t scrambler; - XXH64_hash_t seeds[12]; - size_t segnb; - XXH_ASSERT(nbSegments == 12); - XXH_ASSERT(segmentSize * nbSegments == XXH_SECRET_DEFAULT_SIZE); /* exact multiple */ - XXH128_canonicalFromHash(&scrambler, XXH128(customSeed, customSeedSize, 0)); - - /* - * Copy customSeed to seeds[], truncating or repeating as necessary. - */ - { size_t toFill = XXH_MIN(customSeedSize, sizeof(seeds)); - size_t filled = toFill; - memcpy(seeds, customSeed, toFill); - while (filled < sizeof(seeds)) { - toFill = XXH_MIN(filled, sizeof(seeds) - filled); - memcpy((char*)seeds + filled, seeds, toFill); - filled += toFill; - } } - - /* generate secret */ - memcpy(secretBuffer, &scrambler, sizeof(scrambler)); - for (segnb=1; segnb < nbSegments; segnb++) { - size_t const segmentStart = segnb * segmentSize; - XXH128_canonical_t segment; - XXH128_canonicalFromHash(&segment, - XXH128(&scrambler, sizeof(scrambler), XXH_readLE64(seeds + segnb) + segnb) ); - memcpy((char*)secretBuffer + segmentStart, &segment, sizeof(segment)); - } } -} +#endif /* !XXH_NO_STREAM */ /* ========================================== @@ -4243,7 +6720,7 @@ XXH3_generateSecret(void* secretBuffer, const void* customSeed, size_t customSee * fast for a _128-bit_ hash on 32-bit (it usually clears XXH64). */ -XXH_FORCE_INLINE XXH128_hash_t +XXH_FORCE_INLINE XXH_PUREF XXH128_hash_t XXH3_len_1to3_128b(const xxh_u8* input, size_t len, const xxh_u8* secret, XXH64_hash_t seed) { /* A doubled version of 1to3_64b with different constants. */ @@ -4272,7 +6749,7 @@ XXH3_len_1to3_128b(const xxh_u8* input, size_t len, const xxh_u8* secret, XXH64_ } } -XXH_FORCE_INLINE XXH128_hash_t +XXH_FORCE_INLINE XXH_PUREF XXH128_hash_t XXH3_len_4to8_128b(const xxh_u8* input, size_t len, const xxh_u8* secret, XXH64_hash_t seed) { XXH_ASSERT(input != NULL); @@ -4292,14 +6769,14 @@ XXH3_len_4to8_128b(const xxh_u8* input, size_t len, const xxh_u8* secret, XXH64_ m128.low64 ^= (m128.high64 >> 3); m128.low64 = XXH_xorshift64(m128.low64, 35); - m128.low64 *= 0x9FB21C651E98DF25ULL; + m128.low64 *= PRIME_MX2; m128.low64 = XXH_xorshift64(m128.low64, 28); m128.high64 = XXH3_avalanche(m128.high64); return m128; } } -XXH_FORCE_INLINE XXH128_hash_t +XXH_FORCE_INLINE XXH_PUREF XXH128_hash_t XXH3_len_9to16_128b(const xxh_u8* input, size_t len, const xxh_u8* secret, XXH64_hash_t seed) { XXH_ASSERT(input != NULL); @@ -4374,7 +6851,7 @@ XXH3_len_9to16_128b(const xxh_u8* input, size_t len, const xxh_u8* secret, XXH64 /* * Assumption: `secret` size is >= XXH3_SECRET_SIZE_MIN */ -XXH_FORCE_INLINE XXH128_hash_t +XXH_FORCE_INLINE XXH_PUREF XXH128_hash_t XXH3_len_0to16_128b(const xxh_u8* input, size_t len, const xxh_u8* secret, XXH64_hash_t seed) { XXH_ASSERT(len <= 16); @@ -4405,7 +6882,7 @@ XXH128_mix32B(XXH128_hash_t acc, const xxh_u8* input_1, const xxh_u8* input_2, } -XXH_FORCE_INLINE XXH128_hash_t +XXH_FORCE_INLINE XXH_PUREF XXH128_hash_t XXH3_len_17to128_128b(const xxh_u8* XXH_RESTRICT input, size_t len, const xxh_u8* XXH_RESTRICT secret, size_t secretSize, XXH64_hash_t seed) @@ -4416,6 +6893,16 @@ XXH3_len_17to128_128b(const xxh_u8* XXH_RESTRICT input, size_t len, { XXH128_hash_t acc; acc.low64 = len * XXH_PRIME64_1; acc.high64 = 0; + +#if XXH_SIZE_OPT >= 1 + { + /* Smaller, but slightly slower. */ + unsigned int i = (unsigned int)(len - 1) / 32; + do { + acc = XXH128_mix32B(acc, input+16*i, input+len-16*(i+1), secret+32*i, seed); + } while (i-- != 0); + } +#else if (len > 32) { if (len > 64) { if (len > 96) { @@ -4426,6 +6913,7 @@ XXH3_len_17to128_128b(const xxh_u8* XXH_RESTRICT input, size_t len, acc = XXH128_mix32B(acc, input+16, input+len-32, secret+32, seed); } acc = XXH128_mix32B(acc, input, input+len-16, secret, seed); +#endif { XXH128_hash_t h128; h128.low64 = acc.low64 + acc.high64; h128.high64 = (acc.low64 * XXH_PRIME64_1) @@ -4438,7 +6926,7 @@ XXH3_len_17to128_128b(const xxh_u8* XXH_RESTRICT input, size_t len, } } -XXH_NO_INLINE XXH128_hash_t +XXH_NO_INLINE XXH_PUREF XXH128_hash_t XXH3_len_129to240_128b(const xxh_u8* XXH_RESTRICT input, size_t len, const xxh_u8* XXH_RESTRICT secret, size_t secretSize, XXH64_hash_t seed) @@ -4447,25 +6935,34 @@ XXH3_len_129to240_128b(const xxh_u8* XXH_RESTRICT input, size_t len, XXH_ASSERT(128 < len && len <= XXH3_MIDSIZE_MAX); { XXH128_hash_t acc; - int const nbRounds = (int)len / 32; - int i; + unsigned i; acc.low64 = len * XXH_PRIME64_1; acc.high64 = 0; - for (i=0; i<4; i++) { + /* + * We set as `i` as offset + 32. We do this so that unchanged + * `len` can be used as upper bound. This reaches a sweet spot + * where both x86 and aarch64 get simple agen and good codegen + * for the loop. + */ + for (i = 32; i < 160; i += 32) { acc = XXH128_mix32B(acc, - input + (32 * i), - input + (32 * i) + 16, - secret + (32 * i), + input + i - 32, + input + i - 16, + secret + i - 32, seed); } acc.low64 = XXH3_avalanche(acc.low64); acc.high64 = XXH3_avalanche(acc.high64); - XXH_ASSERT(nbRounds >= 4); - for (i=4 ; i < nbRounds; i++) { + /* + * NB: `i <= len` will duplicate the last 32-bytes if + * len % 32 was zero. This is an unfortunate necessity to keep + * the hash result stable. + */ + for (i=160; i <= len; i += 32) { acc = XXH128_mix32B(acc, - input + (32 * i), - input + (32 * i) + 16, - secret + XXH3_MIDSIZE_STARTOFFSET + (32 * (i - 4)), + input + i - 32, + input + i - 16, + secret + XXH3_MIDSIZE_STARTOFFSET + i - 160, seed); } /* last bytes */ @@ -4473,7 +6970,7 @@ XXH3_len_129to240_128b(const xxh_u8* XXH_RESTRICT input, size_t len, input + len - 16, input + len - 32, secret + XXH3_SECRET_SIZE_MIN - XXH3_MIDSIZE_LASTOFFSET - 16, - 0ULL - seed); + (XXH64_hash_t)0 - seed); { XXH128_hash_t h128; h128.low64 = acc.low64 + acc.high64; @@ -4487,72 +6984,78 @@ XXH3_len_129to240_128b(const xxh_u8* XXH_RESTRICT input, size_t len, } } +static XXH_PUREF XXH128_hash_t +XXH3_finalizeLong_128b(const xxh_u64* XXH_RESTRICT acc, const xxh_u8* XXH_RESTRICT secret, size_t secretSize, xxh_u64 len) +{ + XXH128_hash_t h128; + h128.low64 = XXH3_finalizeLong_64b(acc, secret, len); + h128.high64 = XXH3_mergeAccs(acc, secret + secretSize + - XXH_STRIPE_LEN - XXH_SECRET_MERGEACCS_START, + ~(len * XXH_PRIME64_2)); + return h128; +} + XXH_FORCE_INLINE XXH128_hash_t XXH3_hashLong_128b_internal(const void* XXH_RESTRICT input, size_t len, const xxh_u8* XXH_RESTRICT secret, size_t secretSize, - XXH3_f_accumulate_512 f_acc512, + XXH3_f_accumulate f_acc, XXH3_f_scrambleAcc f_scramble) { XXH_ALIGN(XXH_ACC_ALIGN) xxh_u64 acc[XXH_ACC_NB] = XXH3_INIT_ACC; - XXH3_hashLong_internal_loop(acc, (const xxh_u8*)input, len, secret, secretSize, f_acc512, f_scramble); + XXH3_hashLong_internal_loop(acc, (const xxh_u8*)input, len, secret, secretSize, f_acc, f_scramble); /* converge into final hash */ XXH_STATIC_ASSERT(sizeof(acc) == 64); XXH_ASSERT(secretSize >= sizeof(acc) + XXH_SECRET_MERGEACCS_START); - { XXH128_hash_t h128; - h128.low64 = XXH3_mergeAccs(acc, - secret + XXH_SECRET_MERGEACCS_START, - (xxh_u64)len * XXH_PRIME64_1); - h128.high64 = XXH3_mergeAccs(acc, - secret + secretSize - - sizeof(acc) - XXH_SECRET_MERGEACCS_START, - ~((xxh_u64)len * XXH_PRIME64_2)); - return h128; - } + return XXH3_finalizeLong_128b(acc, secret, secretSize, (xxh_u64)len); } /* - * It's important for performance that XXH3_hashLong is not inlined. + * It's important for performance that XXH3_hashLong() is not inlined. */ -XXH_NO_INLINE XXH128_hash_t +XXH_NO_INLINE XXH_PUREF XXH128_hash_t XXH3_hashLong_128b_default(const void* XXH_RESTRICT input, size_t len, XXH64_hash_t seed64, const void* XXH_RESTRICT secret, size_t secretLen) { (void)seed64; (void)secret; (void)secretLen; return XXH3_hashLong_128b_internal(input, len, XXH3_kSecret, sizeof(XXH3_kSecret), - XXH3_accumulate_512, XXH3_scrambleAcc); + XXH3_accumulate, XXH3_scrambleAcc); } /* - * It's important for performance that XXH3_hashLong is not inlined. + * It's important for performance to pass @p secretLen (when it's static) + * to the compiler, so that it can properly optimize the vectorized loop. + * + * When the secret size is unknown, or on GCC 12 where the mix of NO_INLINE and FORCE_INLINE + * breaks -Og, this is XXH_NO_INLINE. */ -XXH_NO_INLINE XXH128_hash_t +XXH3_WITH_SECRET_INLINE XXH128_hash_t XXH3_hashLong_128b_withSecret(const void* XXH_RESTRICT input, size_t len, XXH64_hash_t seed64, const void* XXH_RESTRICT secret, size_t secretLen) { (void)seed64; return XXH3_hashLong_128b_internal(input, len, (const xxh_u8*)secret, secretLen, - XXH3_accumulate_512, XXH3_scrambleAcc); + XXH3_accumulate, XXH3_scrambleAcc); } XXH_FORCE_INLINE XXH128_hash_t XXH3_hashLong_128b_withSeed_internal(const void* XXH_RESTRICT input, size_t len, XXH64_hash_t seed64, - XXH3_f_accumulate_512 f_acc512, + XXH3_f_accumulate f_acc, XXH3_f_scrambleAcc f_scramble, XXH3_f_initCustomSecret f_initSec) { if (seed64 == 0) return XXH3_hashLong_128b_internal(input, len, XXH3_kSecret, sizeof(XXH3_kSecret), - f_acc512, f_scramble); + f_acc, f_scramble); { XXH_ALIGN(XXH_SEC_ALIGN) xxh_u8 secret[XXH_SECRET_DEFAULT_SIZE]; f_initSec(secret, seed64); return XXH3_hashLong_128b_internal(input, len, (const xxh_u8*)secret, sizeof(secret), - f_acc512, f_scramble); + f_acc, f_scramble); } } @@ -4565,7 +7068,7 @@ XXH3_hashLong_128b_withSeed(const void* input, size_t len, { (void)secret; (void)secretLen; return XXH3_hashLong_128b_withSeed_internal(input, len, seed64, - XXH3_accumulate_512, XXH3_scrambleAcc, XXH3_initCustomSecret); + XXH3_accumulate, XXH3_scrambleAcc, XXH3_initCustomSecret); } typedef XXH128_hash_t (*XXH3_hashLong128_f)(const void* XXH_RESTRICT, size_t, @@ -4595,127 +7098,124 @@ XXH3_128bits_internal(const void* input, size_t len, /* === Public XXH128 API === */ -XXH_PUBLIC_API XXH128_hash_t XXH3_128bits(const void* input, size_t len) +/*! @ingroup XXH3_family */ +XXH_PUBLIC_API XXH128_hash_t XXH3_128bits(XXH_NOESCAPE const void* input, size_t len) { return XXH3_128bits_internal(input, len, 0, XXH3_kSecret, sizeof(XXH3_kSecret), XXH3_hashLong_128b_default); } +/*! @ingroup XXH3_family */ XXH_PUBLIC_API XXH128_hash_t -XXH3_128bits_withSecret(const void* input, size_t len, const void* secret, size_t secretSize) +XXH3_128bits_withSecret(XXH_NOESCAPE const void* input, size_t len, XXH_NOESCAPE const void* secret, size_t secretSize) { return XXH3_128bits_internal(input, len, 0, (const xxh_u8*)secret, secretSize, XXH3_hashLong_128b_withSecret); } +/*! @ingroup XXH3_family */ XXH_PUBLIC_API XXH128_hash_t -XXH3_128bits_withSeed(const void* input, size_t len, XXH64_hash_t seed) +XXH3_128bits_withSeed(XXH_NOESCAPE const void* input, size_t len, XXH64_hash_t seed) { return XXH3_128bits_internal(input, len, seed, XXH3_kSecret, sizeof(XXH3_kSecret), XXH3_hashLong_128b_withSeed); } +/*! @ingroup XXH3_family */ XXH_PUBLIC_API XXH128_hash_t -XXH128(const void* input, size_t len, XXH64_hash_t seed) +XXH3_128bits_withSecretandSeed(XXH_NOESCAPE const void* input, size_t len, XXH_NOESCAPE const void* secret, size_t secretSize, XXH64_hash_t seed) +{ + if (len <= XXH3_MIDSIZE_MAX) + return XXH3_128bits_internal(input, len, seed, XXH3_kSecret, sizeof(XXH3_kSecret), NULL); + return XXH3_hashLong_128b_withSecret(input, len, seed, secret, secretSize); +} + +/*! @ingroup XXH3_family */ +XXH_PUBLIC_API XXH128_hash_t +XXH128(XXH_NOESCAPE const void* input, size_t len, XXH64_hash_t seed) { return XXH3_128bits_withSeed(input, len, seed); } /* === XXH3 128-bit streaming === */ - +#ifndef XXH_NO_STREAM /* - * All the functions are actually the same as for 64-bit streaming variant. - * The only difference is the finalizatiom routine. + * All initialization and update functions are identical to 64-bit streaming variant. + * The only difference is the finalization routine. */ -static void -XXH3_128bits_reset_internal(XXH3_state_t* statePtr, - XXH64_hash_t seed, - const void* secret, size_t secretSize) -{ - XXH3_64bits_reset_internal(statePtr, seed, secret, secretSize); -} - +/*! @ingroup XXH3_family */ XXH_PUBLIC_API XXH_errorcode -XXH3_128bits_reset(XXH3_state_t* statePtr) +XXH3_128bits_reset(XXH_NOESCAPE XXH3_state_t* statePtr) { - if (statePtr == NULL) return XXH_ERROR; - XXH3_128bits_reset_internal(statePtr, 0, XXH3_kSecret, XXH_SECRET_DEFAULT_SIZE); - return XXH_OK; + return XXH3_64bits_reset(statePtr); } +/*! @ingroup XXH3_family */ XXH_PUBLIC_API XXH_errorcode -XXH3_128bits_reset_withSecret(XXH3_state_t* statePtr, const void* secret, size_t secretSize) +XXH3_128bits_reset_withSecret(XXH_NOESCAPE XXH3_state_t* statePtr, XXH_NOESCAPE const void* secret, size_t secretSize) { - if (statePtr == NULL) return XXH_ERROR; - XXH3_128bits_reset_internal(statePtr, 0, secret, secretSize); - if (secret == NULL) return XXH_ERROR; - if (secretSize < XXH3_SECRET_SIZE_MIN) return XXH_ERROR; - return XXH_OK; + return XXH3_64bits_reset_withSecret(statePtr, secret, secretSize); } +/*! @ingroup XXH3_family */ XXH_PUBLIC_API XXH_errorcode -XXH3_128bits_reset_withSeed(XXH3_state_t* statePtr, XXH64_hash_t seed) +XXH3_128bits_reset_withSeed(XXH_NOESCAPE XXH3_state_t* statePtr, XXH64_hash_t seed) { - if (statePtr == NULL) return XXH_ERROR; - if (seed==0) return XXH3_128bits_reset(statePtr); - if (seed != statePtr->seed) XXH3_initCustomSecret(statePtr->customSecret, seed); - XXH3_128bits_reset_internal(statePtr, seed, NULL, XXH_SECRET_DEFAULT_SIZE); - return XXH_OK; + return XXH3_64bits_reset_withSeed(statePtr, seed); } +/*! @ingroup XXH3_family */ XXH_PUBLIC_API XXH_errorcode -XXH3_128bits_update(XXH3_state_t* state, const void* input, size_t len) +XXH3_128bits_reset_withSecretandSeed(XXH_NOESCAPE XXH3_state_t* statePtr, XXH_NOESCAPE const void* secret, size_t secretSize, XXH64_hash_t seed) { - return XXH3_update(state, (const xxh_u8*)input, len, - XXH3_accumulate_512, XXH3_scrambleAcc); + return XXH3_64bits_reset_withSecretandSeed(statePtr, secret, secretSize, seed); } -XXH_PUBLIC_API XXH128_hash_t XXH3_128bits_digest (const XXH3_state_t* state) +/*! @ingroup XXH3_family */ +XXH_PUBLIC_API XXH_errorcode +XXH3_128bits_update(XXH_NOESCAPE XXH3_state_t* state, XXH_NOESCAPE const void* input, size_t len) +{ + return XXH3_update_regular(state, input, len); +} + +/*! @ingroup XXH3_family */ +XXH_PUBLIC_API XXH128_hash_t XXH3_128bits_digest (XXH_NOESCAPE const XXH3_state_t* state) { const unsigned char* const secret = (state->extSecret == NULL) ? state->customSecret : state->extSecret; if (state->totalLen > XXH3_MIDSIZE_MAX) { XXH_ALIGN(XXH_ACC_ALIGN) XXH64_hash_t acc[XXH_ACC_NB]; XXH3_digest_long(acc, state, secret); XXH_ASSERT(state->secretLimit + XXH_STRIPE_LEN >= sizeof(acc) + XXH_SECRET_MERGEACCS_START); - { XXH128_hash_t h128; - h128.low64 = XXH3_mergeAccs(acc, - secret + XXH_SECRET_MERGEACCS_START, - (xxh_u64)state->totalLen * XXH_PRIME64_1); - h128.high64 = XXH3_mergeAccs(acc, - secret + state->secretLimit + XXH_STRIPE_LEN - - sizeof(acc) - XXH_SECRET_MERGEACCS_START, - ~((xxh_u64)state->totalLen * XXH_PRIME64_2)); - return h128; - } + return XXH3_finalizeLong_128b(acc, secret, state->secretLimit + XXH_STRIPE_LEN, (xxh_u64)state->totalLen); } /* len <= XXH3_MIDSIZE_MAX : short code */ - if (state->seed) + if (state->useSeed) return XXH3_128bits_withSeed(state->buffer, (size_t)state->totalLen, state->seed); return XXH3_128bits_withSecret(state->buffer, (size_t)(state->totalLen), secret, state->secretLimit + XXH_STRIPE_LEN); } - +#endif /* !XXH_NO_STREAM */ /* 128-bit utility functions */ -#include /* memcmp, memcpy */ - /* return : 1 is equal, 0 if different */ +/*! @ingroup XXH3_family */ XXH_PUBLIC_API int XXH128_isEqual(XXH128_hash_t h1, XXH128_hash_t h2) { /* note : XXH128_hash_t is compact, it has no padding byte */ - return !(memcmp(&h1, &h2, sizeof(h1))); + return !(XXH_memcmp(&h1, &h2, sizeof(h1))); } /* This prototype is compatible with stdlib's qsort(). - * return : >0 if *h128_1 > *h128_2 - * <0 if *h128_1 < *h128_2 - * =0 if *h128_1 == *h128_2 */ -XXH_PUBLIC_API int XXH128_cmp(const void* h128_1, const void* h128_2) + * @return : >0 if *h128_1 > *h128_2 + * <0 if *h128_1 < *h128_2 + * =0 if *h128_1 == *h128_2 */ +/*! @ingroup XXH3_family */ +XXH_PUBLIC_API int XXH128_cmp(XXH_NOESCAPE const void* h128_1, XXH_NOESCAPE const void* h128_2) { XXH128_hash_t const h1 = *(const XXH128_hash_t*)h128_1; XXH128_hash_t const h2 = *(const XXH128_hash_t*)h128_2; @@ -4727,20 +7227,22 @@ XXH_PUBLIC_API int XXH128_cmp(const void* h128_1, const void* h128_2) /*====== Canonical representation ======*/ +/*! @ingroup XXH3_family */ XXH_PUBLIC_API void -XXH128_canonicalFromHash(XXH128_canonical_t* dst, XXH128_hash_t hash) +XXH128_canonicalFromHash(XXH_NOESCAPE XXH128_canonical_t* dst, XXH128_hash_t hash) { XXH_STATIC_ASSERT(sizeof(XXH128_canonical_t) == sizeof(XXH128_hash_t)); if (XXH_CPU_LITTLE_ENDIAN) { hash.high64 = XXH_swap64(hash.high64); hash.low64 = XXH_swap64(hash.low64); } - memcpy(dst, &hash.high64, sizeof(hash.high64)); - memcpy((char*)dst + sizeof(hash.high64), &hash.low64, sizeof(hash.low64)); + XXH_memcpy(dst, &hash.high64, sizeof(hash.high64)); + XXH_memcpy((char*)dst + sizeof(hash.high64), &hash.low64, sizeof(hash.low64)); } +/*! @ingroup XXH3_family */ XXH_PUBLIC_API XXH128_hash_t -XXH128_hashFromCanonical(const XXH128_canonical_t* src) +XXH128_hashFromCanonical(XXH_NOESCAPE const XXH128_canonical_t* src) { XXH128_hash_t h; h.high64 = XXH_readBE64(src); @@ -4748,19 +7250,94 @@ XXH128_hashFromCanonical(const XXH128_canonical_t* src) return h; } + + +/* ========================================== + * Secret generators + * ========================================== + */ +#define XXH_MIN(x, y) (((x) > (y)) ? (y) : (x)) + +XXH_FORCE_INLINE void XXH3_combine16(void* dst, XXH128_hash_t h128) +{ + XXH_writeLE64( dst, XXH_readLE64(dst) ^ h128.low64 ); + XXH_writeLE64( (char*)dst+8, XXH_readLE64((char*)dst+8) ^ h128.high64 ); +} + +/*! @ingroup XXH3_family */ +XXH_PUBLIC_API XXH_errorcode +XXH3_generateSecret(XXH_NOESCAPE void* secretBuffer, size_t secretSize, XXH_NOESCAPE const void* customSeed, size_t customSeedSize) +{ +#if (XXH_DEBUGLEVEL >= 1) + XXH_ASSERT(secretBuffer != NULL); + XXH_ASSERT(secretSize >= XXH3_SECRET_SIZE_MIN); +#else + /* production mode, assert() are disabled */ + if (secretBuffer == NULL) return XXH_ERROR; + if (secretSize < XXH3_SECRET_SIZE_MIN) return XXH_ERROR; +#endif + + if (customSeedSize == 0) { + customSeed = XXH3_kSecret; + customSeedSize = XXH_SECRET_DEFAULT_SIZE; + } +#if (XXH_DEBUGLEVEL >= 1) + XXH_ASSERT(customSeed != NULL); +#else + if (customSeed == NULL) return XXH_ERROR; +#endif + + /* Fill secretBuffer with a copy of customSeed - repeat as needed */ + { size_t pos = 0; + while (pos < secretSize) { + size_t const toCopy = XXH_MIN((secretSize - pos), customSeedSize); + XXH_memcpy((char*)secretBuffer + pos, customSeed, toCopy); + pos += toCopy; + } } + + { size_t const nbSeg16 = secretSize / 16; + size_t n; + XXH128_canonical_t scrambler; + XXH128_canonicalFromHash(&scrambler, XXH128(customSeed, customSeedSize, 0)); + for (n=0; n] \.\.\. [] \.\.\.\fR \fBxxhsum \-b [
/MACHINE:X86 /NODEFAULTLIB %(AdditionalOptions) - ..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies) + %(AdditionalDependencies) $(OutDir)zlibstat.lib true - - cd ..\..\masmx86 -bld_ml32.bat - OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) + ..\..\..;%(AdditionalIncludeDirectories) WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) true @@ -252,7 +244,7 @@ bld_ml32.bat
Disabled - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) + ..\..\..;%(AdditionalIncludeDirectories) ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions) @@ -274,10 +266,6 @@ bld_ml32.bat
$(OutDir)zlibstat.lib true - - cd ..\..\masmx64 -bld_ml64.bat - @@ -285,7 +273,7 @@ bld_ml64.bat
Disabled - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) + ..\..\..;%(AdditionalIncludeDirectories) ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions) @@ -314,8 +302,8 @@ bld_ml64.bat
OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) - ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ASMV;ASMINF;WIN64;%(PreprocessorDefinitions) + ..\..\..;%(AdditionalIncludeDirectories) + ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions) true @@ -334,14 +322,10 @@ bld_ml64.bat
/MACHINE:AMD64 /NODEFAULTLIB %(AdditionalOptions) - ..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies) + %(AdditionalDependencies) $(OutDir)zlibstat.lib true - - cd ..\..\masmx64 -bld_ml64.bat - @@ -349,7 +333,7 @@ bld_ml64.bat OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) + ..\..\..;%(AdditionalIncludeDirectories) ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions) true @@ -379,7 +363,7 @@ bld_ml64.bat OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) + ..\..\..;%(AdditionalIncludeDirectories) ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions) true @@ -409,7 +393,7 @@ bld_ml64.bat OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) + ..\..\..;%(AdditionalIncludeDirectories) ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions) true @@ -443,14 +427,6 @@ bld_ml64.bat - - true - true - true - true - true - true - diff --git a/deps/zlib/contrib/vstudio/vc10/zlibstat.vcxproj.filters b/deps/zlib/contrib/vstudio/vc10/zlibstat.vcxproj.filters index c8c7f7ea3..ba7e23d32 100644 --- a/deps/zlib/contrib/vstudio/vc10/zlibstat.vcxproj.filters +++ b/deps/zlib/contrib/vstudio/vc10/zlibstat.vcxproj.filters @@ -33,9 +33,6 @@ Source Files - - Source Files - Source Files diff --git a/deps/zlib/contrib/vstudio/vc10/zlibvc.def b/deps/zlib/contrib/vstudio/vc10/zlibvc.def index 54e683d99..61b2d3fbe 100644 --- a/deps/zlib/contrib/vstudio/vc10/zlibvc.def +++ b/deps/zlib/contrib/vstudio/vc10/zlibvc.def @@ -1,7 +1,7 @@ LIBRARY ; zlib data compression and ZIP file I/O library -VERSION 1.2 +VERSION 1.3 EXPORTS adler32 @1 @@ -151,3 +151,11 @@ EXPORTS deflateGetDictionary @173 adler32_z @174 crc32_z @175 + +; zlib1 v1.2.12 added: + crc32_combine_gen @176 + crc32_combine_gen64 @177 + crc32_combine_op @178 + +; zlib1 v1.3.2 added: + deflateUsed @179 diff --git a/deps/zlib/contrib/vstudio/vc10/zlibvc.vcxproj b/deps/zlib/contrib/vstudio/vc10/zlibvc.vcxproj index 6ff9ddb07..19dfc35bf 100644 --- a/deps/zlib/contrib/vstudio/vc10/zlibvc.vcxproj +++ b/deps/zlib/contrib/vstudio/vc10/zlibvc.vcxproj @@ -197,8 +197,8 @@ Disabled - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) - WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;%(PreprocessorDefinitions) + ..\..\..;%(AdditionalIncludeDirectories) + WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;%(PreprocessorDefinitions) MultiThreadedDebug @@ -219,7 +219,7 @@ /MACHINE:I386 %(AdditionalOptions) - ..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies) + %(AdditionalDependencies) true .\zlibvc.def true @@ -229,10 +229,6 @@ - - cd ..\..\masmx86 -bld_ml32.bat - @@ -244,7 +240,7 @@ bld_ml32.bat OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) + ..\..\..;%(AdditionalIncludeDirectories) WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;%(PreprocessorDefinitions) true @@ -288,8 +284,8 @@ bld_ml32.bat OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) - WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;%(PreprocessorDefinitions) + ..\..\..;%(AdditionalIncludeDirectories) + WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;%(PreprocessorDefinitions) true @@ -312,7 +308,7 @@ bld_ml32.bat /MACHINE:I386 %(AdditionalOptions) - ..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies) + %(AdditionalDependencies) true false .\zlibvc.def @@ -322,10 +318,6 @@ bld_ml32.bat - - cd ..\..\masmx86 -bld_ml32.bat - @@ -337,8 +329,8 @@ bld_ml32.bat Disabled - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) - WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;WIN64;%(PreprocessorDefinitions) + ..\..\..;%(AdditionalIncludeDirectories) + WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions) MultiThreadedDebugDLL @@ -358,7 +350,7 @@ bld_ml32.bat 0x040c - ..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies) + %(AdditionalDependencies) true .\zlibvc.def true @@ -366,10 +358,6 @@ bld_ml32.bat Windows MachineX64 - - cd ..\..\masmx64 -bld_ml64.bat - @@ -381,7 +369,7 @@ bld_ml64.bat Disabled - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) + ..\..\..;%(AdditionalIncludeDirectories) WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions) @@ -424,7 +412,7 @@ bld_ml64.bat OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) + ..\..\..;%(AdditionalIncludeDirectories) WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions) true @@ -465,7 +453,7 @@ bld_ml64.bat OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) + ..\..\..;%(AdditionalIncludeDirectories) WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions) true @@ -510,8 +498,8 @@ bld_ml64.bat OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) - _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;WIN64;%(PreprocessorDefinitions) + ..\..\..;%(AdditionalIncludeDirectories) + _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions) true @@ -533,7 +521,7 @@ bld_ml64.bat 0x040c - ..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies) + %(AdditionalDependencies) true false .\zlibvc.def @@ -541,10 +529,6 @@ bld_ml64.bat Windows MachineX64 - - cd ..\..\masmx64 -bld_ml64.bat - @@ -556,7 +540,7 @@ bld_ml64.bat OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) + ..\..\..;%(AdditionalIncludeDirectories) _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions) true @@ -601,14 +585,6 @@ bld_ml64.bat - - true - true - true - true - true - true - diff --git a/deps/zlib/contrib/vstudio/vc10/zlibvc.vcxproj.filters b/deps/zlib/contrib/vstudio/vc10/zlibvc.vcxproj.filters index 180b71cd6..67c444ab9 100644 --- a/deps/zlib/contrib/vstudio/vc10/zlibvc.vcxproj.filters +++ b/deps/zlib/contrib/vstudio/vc10/zlibvc.vcxproj.filters @@ -42,9 +42,6 @@ Source Files - - Source Files - Source Files diff --git a/deps/zlib/contrib/vstudio/vc11/testzlib.vcxproj b/deps/zlib/contrib/vstudio/vc11/testzlib.vcxproj index 6d5595401..c6198c1fd 100644 --- a/deps/zlib/contrib/vstudio/vc11/testzlib.vcxproj +++ b/deps/zlib/contrib/vstudio/vc11/testzlib.vcxproj @@ -187,7 +187,7 @@ Disabled ..\..\..;%(AdditionalIncludeDirectories) - ASMV;ASMINF;WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) + WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) true Default MultiThreadedDebugDLL @@ -200,7 +200,7 @@ ProgramDatabase - ..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies) + %(AdditionalDependencies) $(OutDir)testzlib.exe true $(OutDir)testzlib.pdb @@ -247,7 +247,7 @@ OnlyExplicitInline true ..\..\..;%(AdditionalIncludeDirectories) - ASMV;ASMINF;WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) + WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) true Default MultiThreaded @@ -260,7 +260,7 @@ ProgramDatabase - ..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies) + %(AdditionalDependencies) $(OutDir)testzlib.exe true Console @@ -275,14 +275,14 @@ ..\..\..;%(AdditionalIncludeDirectories) - ASMV;ASMINF;WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) + WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) Default MultiThreadedDebugDLL false $(IntDir) - ..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies) + %(AdditionalDependencies) @@ -358,14 +358,14 @@ ..\..\..;%(AdditionalIncludeDirectories) - ASMV;ASMINF;WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) + WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) Default MultiThreadedDLL false $(IntDir) - ..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies) + %(AdditionalDependencies) @@ -404,14 +404,6 @@ - - true - true - true - true - true - true - diff --git a/deps/zlib/contrib/vstudio/vc11/zlib.rc b/deps/zlib/contrib/vstudio/vc11/zlib.rc index fee177a71..ee4b1fc6a 100644 --- a/deps/zlib/contrib/vstudio/vc11/zlib.rc +++ b/deps/zlib/contrib/vstudio/vc11/zlib.rc @@ -2,8 +2,8 @@ #define IDR_VERSION1 1 IDR_VERSION1 VERSIONINFO MOVEABLE IMPURE LOADONCALL DISCARDABLE - FILEVERSION 1, 2, 11, 0 - PRODUCTVERSION 1, 2, 11, 0 + FILEVERSION 1, 3, 1, 1 + PRODUCTVERSION 1, 3, 1, 1 FILEFLAGSMASK VS_FFI_FILEFLAGSMASK FILEFLAGS 0 FILEOS VOS_DOS_WINDOWS32 @@ -17,12 +17,12 @@ BEGIN BEGIN VALUE "FileDescription", "zlib data compression and ZIP file I/O library\0" - VALUE "FileVersion", "1.2.11\0" + VALUE "FileVersion", "1.3.1.1\0" VALUE "InternalName", "zlib\0" VALUE "OriginalFilename", "zlibwapi.dll\0" VALUE "ProductName", "ZLib.DLL\0" VALUE "Comments","DLL support by Alessandro Iacopetti & Gilles Vollant\0" - VALUE "LegalCopyright", "(C) 1995-2017 Jean-loup Gailly & Mark Adler\0" + VALUE "LegalCopyright", "(C) 1995-2024 Jean-loup Gailly & Mark Adler\0" END END BLOCK "VarFileInfo" diff --git a/deps/zlib/contrib/vstudio/vc11/zlibstat.vcxproj b/deps/zlib/contrib/vstudio/vc11/zlibstat.vcxproj index 806b76a88..86fb1c8bf 100644 --- a/deps/zlib/contrib/vstudio/vc11/zlibstat.vcxproj +++ b/deps/zlib/contrib/vstudio/vc11/zlibstat.vcxproj @@ -167,7 +167,7 @@ Disabled - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) + ..\..\..;%(AdditionalIncludeDirectories) WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) @@ -193,8 +193,8 @@ OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) - WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ASMV;ASMINF;%(PreprocessorDefinitions) + ..\..\..;%(AdditionalIncludeDirectories) + WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) true @@ -213,7 +213,7 @@ /MACHINE:X86 /NODEFAULTLIB %(AdditionalOptions) - ..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies) + %(AdditionalDependencies) $(OutDir)zlibstat.lib true @@ -221,7 +221,7 @@ OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) + ..\..\..;%(AdditionalIncludeDirectories) WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) true @@ -251,7 +251,7 @@ Disabled - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) + ..\..\..;%(AdditionalIncludeDirectories) ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions) @@ -280,7 +280,7 @@ Disabled - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) + ..\..\..;%(AdditionalIncludeDirectories) ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions) @@ -309,8 +309,8 @@ OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) - ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ASMV;ASMINF;WIN64;%(PreprocessorDefinitions) + ..\..\..;%(AdditionalIncludeDirectories) + ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions) true @@ -329,7 +329,7 @@ /MACHINE:AMD64 /NODEFAULTLIB %(AdditionalOptions) - ..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies) + %(AdditionalDependencies) $(OutDir)zlibstat.lib true @@ -340,7 +340,7 @@ OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) + ..\..\..;%(AdditionalIncludeDirectories) ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions) true @@ -370,7 +370,7 @@ OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) + ..\..\..;%(AdditionalIncludeDirectories) ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions) true @@ -400,7 +400,7 @@ OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) + ..\..\..;%(AdditionalIncludeDirectories) ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions) true @@ -434,14 +434,6 @@ - - true - true - true - true - true - true - diff --git a/deps/zlib/contrib/vstudio/vc11/zlibvc.def b/deps/zlib/contrib/vstudio/vc11/zlibvc.def index 54e683d99..61b2d3fbe 100644 --- a/deps/zlib/contrib/vstudio/vc11/zlibvc.def +++ b/deps/zlib/contrib/vstudio/vc11/zlibvc.def @@ -1,7 +1,7 @@ LIBRARY ; zlib data compression and ZIP file I/O library -VERSION 1.2 +VERSION 1.3 EXPORTS adler32 @1 @@ -151,3 +151,11 @@ EXPORTS deflateGetDictionary @173 adler32_z @174 crc32_z @175 + +; zlib1 v1.2.12 added: + crc32_combine_gen @176 + crc32_combine_gen64 @177 + crc32_combine_op @178 + +; zlib1 v1.3.2 added: + deflateUsed @179 diff --git a/deps/zlib/contrib/vstudio/vc11/zlibvc.vcxproj b/deps/zlib/contrib/vstudio/vc11/zlibvc.vcxproj index c65b95fdb..fc8cd9c17 100644 --- a/deps/zlib/contrib/vstudio/vc11/zlibvc.vcxproj +++ b/deps/zlib/contrib/vstudio/vc11/zlibvc.vcxproj @@ -204,8 +204,8 @@ Disabled - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) - WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;%(PreprocessorDefinitions) + ..\..\..;%(AdditionalIncludeDirectories) + WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;%(PreprocessorDefinitions) MultiThreadedDebugDLL @@ -226,7 +226,7 @@ /MACHINE:I386 %(AdditionalOptions) - ..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies) + %(AdditionalDependencies) $(OutDir)zlibwapi.dll true .\zlibvc.def @@ -240,10 +240,6 @@ $(OutDir)zlibwapi.lib - - cd ..\..\masmx86 -bld_ml32.bat - @@ -255,7 +251,7 @@ bld_ml32.bat OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) + ..\..\..;%(AdditionalIncludeDirectories) WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;%(PreprocessorDefinitions) true @@ -303,8 +299,8 @@ bld_ml32.bat OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) - WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;%(PreprocessorDefinitions) + ..\..\..;%(AdditionalIncludeDirectories) + WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;%(PreprocessorDefinitions) true @@ -327,7 +323,7 @@ bld_ml32.bat /MACHINE:I386 %(AdditionalOptions) - ..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies) + %(AdditionalDependencies) $(OutDir)zlibwapi.dll true false @@ -341,10 +337,6 @@ bld_ml32.bat $(OutDir)zlibwapi.lib - - cd ..\..\masmx86 -bld_ml32.bat - @@ -356,8 +348,8 @@ bld_ml32.bat Disabled - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) - WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;WIN64;%(PreprocessorDefinitions) + ..\..\..;%(AdditionalIncludeDirectories) + WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions) MultiThreadedDebugDLL @@ -377,7 +369,7 @@ bld_ml32.bat 0x040c - ..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies) + %(AdditionalDependencies) $(OutDir)zlibwapi.dll true .\zlibvc.def @@ -389,10 +381,6 @@ bld_ml32.bat $(OutDir)zlibwapi.lib MachineX64 - - cd ..\..\contrib\masmx64 -bld_ml64.bat - @@ -404,7 +392,7 @@ bld_ml64.bat Disabled - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) + ..\..\..;%(AdditionalIncludeDirectories) WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions) @@ -447,7 +435,7 @@ bld_ml64.bat OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) + ..\..\..;%(AdditionalIncludeDirectories) WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions) true @@ -492,7 +480,7 @@ bld_ml64.bat OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) + ..\..\..;%(AdditionalIncludeDirectories) WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions) true @@ -537,8 +525,8 @@ bld_ml64.bat OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) - _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;WIN64;%(PreprocessorDefinitions) + ..\..\..;%(AdditionalIncludeDirectories) + _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions) true @@ -560,7 +548,7 @@ bld_ml64.bat 0x040c - ..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies) + %(AdditionalDependencies) $(OutDir)zlibwapi.dll true false @@ -572,10 +560,6 @@ bld_ml64.bat $(OutDir)zlibwapi.lib MachineX64 - - cd ..\..\masmx64 -bld_ml64.bat - @@ -587,7 +571,7 @@ bld_ml64.bat OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) + ..\..\..;%(AdditionalIncludeDirectories) _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions) true @@ -632,14 +616,6 @@ bld_ml64.bat - - true - true - true - true - true - true - diff --git a/deps/zlib/contrib/vstudio/vc12/testzlib.vcxproj b/deps/zlib/contrib/vstudio/vc12/testzlib.vcxproj index 64b2cbe34..41303c0af 100644 --- a/deps/zlib/contrib/vstudio/vc12/testzlib.vcxproj +++ b/deps/zlib/contrib/vstudio/vc12/testzlib.vcxproj @@ -190,7 +190,7 @@ Disabled ..\..\..;%(AdditionalIncludeDirectories) - ASMV;ASMINF;WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) + WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) true Default MultiThreadedDebugDLL @@ -203,7 +203,7 @@ ProgramDatabase - ..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies) + %(AdditionalDependencies) $(OutDir)testzlib.exe true $(OutDir)testzlib.pdb @@ -250,7 +250,7 @@ OnlyExplicitInline true ..\..\..;%(AdditionalIncludeDirectories) - ASMV;ASMINF;WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) + WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) true Default MultiThreaded @@ -263,7 +263,7 @@ ProgramDatabase - ..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies) + %(AdditionalDependencies) $(OutDir)testzlib.exe true Console @@ -279,14 +279,14 @@ ..\..\..;%(AdditionalIncludeDirectories) - ASMV;ASMINF;WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) + WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) Default MultiThreadedDebugDLL false $(IntDir) - ..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies) + %(AdditionalDependencies) @@ -362,14 +362,14 @@ ..\..\..;%(AdditionalIncludeDirectories) - ASMV;ASMINF;WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) + WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) Default MultiThreadedDLL false $(IntDir) - ..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies) + %(AdditionalDependencies) @@ -408,14 +408,6 @@ - - true - true - true - true - true - true - diff --git a/deps/zlib/contrib/vstudio/vc12/zlib.rc b/deps/zlib/contrib/vstudio/vc12/zlib.rc index c4e4b016e..fdfb12414 100644 --- a/deps/zlib/contrib/vstudio/vc12/zlib.rc +++ b/deps/zlib/contrib/vstudio/vc12/zlib.rc @@ -2,8 +2,8 @@ #define IDR_VERSION1 1 IDR_VERSION1 VERSIONINFO MOVEABLE IMPURE LOADONCALL DISCARDABLE - FILEVERSION 1, 2, 11, 0 - PRODUCTVERSION 1, 2, 11, 0 + FILEVERSION 1, 3, 1, 1 + PRODUCTVERSION 1, 3, 1, 1 FILEFLAGSMASK VS_FFI_FILEFLAGSMASK FILEFLAGS 0 FILEOS VOS_DOS_WINDOWS32 @@ -17,12 +17,12 @@ BEGIN BEGIN VALUE "FileDescription", "zlib data compression and ZIP file I/O library\0" - VALUE "FileVersion", "1.2.11\0" + VALUE "FileVersion", "1.3.1.1\0" VALUE "InternalName", "zlib\0" VALUE "OriginalFilename", "zlibwapi.dll\0" VALUE "ProductName", "ZLib.DLL\0" VALUE "Comments","DLL support by Alessandro Iacopetti & Gilles Vollant\0" - VALUE "LegalCopyright", "(C) 1995-2017 Jean-loup Gailly & Mark Adler\0" + VALUE "LegalCopyright", "(C) 1995-2024 Jean-loup Gailly & Mark Adler\0" END END BLOCK "VarFileInfo" diff --git a/deps/zlib/contrib/vstudio/vc12/zlibstat.vcxproj b/deps/zlib/contrib/vstudio/vc12/zlibstat.vcxproj index 3fdee7c50..6629d8e2a 100644 --- a/deps/zlib/contrib/vstudio/vc12/zlibstat.vcxproj +++ b/deps/zlib/contrib/vstudio/vc12/zlibstat.vcxproj @@ -170,7 +170,7 @@ Disabled - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) + ..\..\..;%(AdditionalIncludeDirectories) WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) @@ -196,8 +196,8 @@ OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) - WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ASMV;ASMINF;%(PreprocessorDefinitions) + ..\..\..;%(AdditionalIncludeDirectories) + WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) true @@ -216,7 +216,7 @@ /MACHINE:X86 /NODEFAULTLIB %(AdditionalOptions) - ..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies) + %(AdditionalDependencies) $(OutDir)zlibstat.lib true @@ -224,7 +224,7 @@ OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) + ..\..\..;%(AdditionalIncludeDirectories) WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) true @@ -254,7 +254,7 @@ Disabled - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) + ..\..\..;%(AdditionalIncludeDirectories) ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions) @@ -283,7 +283,7 @@ Disabled - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) + ..\..\..;%(AdditionalIncludeDirectories) ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions) @@ -312,8 +312,8 @@ OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) - ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ASMV;ASMINF;WIN64;%(PreprocessorDefinitions) + ..\..\..;%(AdditionalIncludeDirectories) + ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions) true @@ -332,7 +332,7 @@ /MACHINE:AMD64 /NODEFAULTLIB %(AdditionalOptions) - ..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies) + %(AdditionalDependencies) $(OutDir)zlibstat.lib true @@ -343,7 +343,7 @@ OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) + ..\..\..;%(AdditionalIncludeDirectories) ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions) true @@ -373,7 +373,7 @@ OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) + ..\..\..;%(AdditionalIncludeDirectories) ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions) true @@ -403,7 +403,7 @@ OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) + ..\..\..;%(AdditionalIncludeDirectories) ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions) true @@ -437,14 +437,6 @@ - - true - true - true - true - true - true - diff --git a/deps/zlib/contrib/vstudio/vc12/zlibvc.def b/deps/zlib/contrib/vstudio/vc12/zlibvc.def index 54e683d99..61b2d3fbe 100644 --- a/deps/zlib/contrib/vstudio/vc12/zlibvc.def +++ b/deps/zlib/contrib/vstudio/vc12/zlibvc.def @@ -1,7 +1,7 @@ LIBRARY ; zlib data compression and ZIP file I/O library -VERSION 1.2 +VERSION 1.3 EXPORTS adler32 @1 @@ -151,3 +151,11 @@ EXPORTS deflateGetDictionary @173 adler32_z @174 crc32_z @175 + +; zlib1 v1.2.12 added: + crc32_combine_gen @176 + crc32_combine_gen64 @177 + crc32_combine_op @178 + +; zlib1 v1.3.2 added: + deflateUsed @179 diff --git a/deps/zlib/contrib/vstudio/vc12/zlibvc.vcxproj b/deps/zlib/contrib/vstudio/vc12/zlibvc.vcxproj index ab2b6c360..4e0de691e 100644 --- a/deps/zlib/contrib/vstudio/vc12/zlibvc.vcxproj +++ b/deps/zlib/contrib/vstudio/vc12/zlibvc.vcxproj @@ -207,8 +207,8 @@ Disabled - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) - WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;%(PreprocessorDefinitions) + ..\..\..;%(AdditionalIncludeDirectories) + WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;%(PreprocessorDefinitions) MultiThreadedDebugDLL @@ -229,7 +229,7 @@ /MACHINE:I386 %(AdditionalOptions) - ..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies) + %(AdditionalDependencies) $(OutDir)zlibwapi.dll true .\zlibvc.def @@ -243,10 +243,6 @@ $(OutDir)zlibwapi.lib - - cd ..\..\masmx86 -bld_ml32.bat - @@ -258,7 +254,7 @@ bld_ml32.bat OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) + ..\..\..;%(AdditionalIncludeDirectories) WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;%(PreprocessorDefinitions) true @@ -306,8 +302,8 @@ bld_ml32.bat OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) - WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;%(PreprocessorDefinitions) + ..\..\..;%(AdditionalIncludeDirectories) + WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;%(PreprocessorDefinitions) true @@ -330,7 +326,7 @@ bld_ml32.bat /MACHINE:I386 %(AdditionalOptions) - ..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies) + %(AdditionalDependencies) $(OutDir)zlibwapi.dll true false @@ -345,10 +341,6 @@ bld_ml32.bat $(OutDir)zlibwapi.lib false - - cd ..\..\masmx86 -bld_ml32.bat - @@ -360,8 +352,8 @@ bld_ml32.bat Disabled - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) - WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;WIN64;%(PreprocessorDefinitions) + ..\..\..;%(AdditionalIncludeDirectories) + WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions) MultiThreadedDebugDLL @@ -381,7 +373,7 @@ bld_ml32.bat 0x040c - ..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies) + %(AdditionalDependencies) $(OutDir)zlibwapi.dll true .\zlibvc.def @@ -393,10 +385,6 @@ bld_ml32.bat $(OutDir)zlibwapi.lib MachineX64 - - cd ..\..\contrib\masmx64 -bld_ml64.bat - @@ -408,7 +396,7 @@ bld_ml64.bat Disabled - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) + ..\..\..;%(AdditionalIncludeDirectories) WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions) @@ -451,7 +439,7 @@ bld_ml64.bat OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) + ..\..\..;%(AdditionalIncludeDirectories) WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions) true @@ -496,7 +484,7 @@ bld_ml64.bat OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) + ..\..\..;%(AdditionalIncludeDirectories) WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions) true @@ -541,8 +529,8 @@ bld_ml64.bat OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) - _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;WIN64;%(PreprocessorDefinitions) + ..\..\..;%(AdditionalIncludeDirectories) + _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions) true @@ -564,7 +552,7 @@ bld_ml64.bat 0x040c - ..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies) + %(AdditionalDependencies) $(OutDir)zlibwapi.dll true false @@ -576,10 +564,6 @@ bld_ml64.bat $(OutDir)zlibwapi.lib MachineX64 - - cd ..\..\masmx64 -bld_ml64.bat - @@ -591,7 +575,7 @@ bld_ml64.bat OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) + ..\..\..;%(AdditionalIncludeDirectories) _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions) true @@ -636,14 +620,6 @@ bld_ml64.bat - - true - true - true - true - true - true - diff --git a/deps/zlib/contrib/vstudio/vc14/testzlib.vcxproj b/deps/zlib/contrib/vstudio/vc14/testzlib.vcxproj index 2c371252a..545204954 100644 --- a/deps/zlib/contrib/vstudio/vc14/testzlib.vcxproj +++ b/deps/zlib/contrib/vstudio/vc14/testzlib.vcxproj @@ -190,7 +190,7 @@ Disabled ..\..\..;%(AdditionalIncludeDirectories) - ASMV;ASMINF;WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) + WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) true Default MultiThreadedDebugDLL @@ -203,7 +203,7 @@ ProgramDatabase - ..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies) + %(AdditionalDependencies) $(OutDir)testzlib.exe true $(OutDir)testzlib.pdb @@ -250,7 +250,7 @@ OnlyExplicitInline true ..\..\..;%(AdditionalIncludeDirectories) - ASMV;ASMINF;WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) + WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) true Default MultiThreaded @@ -263,7 +263,7 @@ ProgramDatabase - ..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies) + %(AdditionalDependencies) $(OutDir)testzlib.exe true Console @@ -279,14 +279,14 @@ ..\..\..;%(AdditionalIncludeDirectories) - ASMV;ASMINF;WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) + WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) Default MultiThreadedDebugDLL false $(IntDir) - ..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies) + %(AdditionalDependencies) @@ -362,14 +362,14 @@ ..\..\..;%(AdditionalIncludeDirectories) - ASMV;ASMINF;WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) + WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) Default MultiThreadedDLL false $(IntDir) - ..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies) + %(AdditionalDependencies) @@ -408,14 +408,6 @@ - - true - true - true - true - true - true - diff --git a/deps/zlib/contrib/vstudio/vc14/zlib.rc b/deps/zlib/contrib/vstudio/vc14/zlib.rc index c4e4b016e..fdfb12414 100644 --- a/deps/zlib/contrib/vstudio/vc14/zlib.rc +++ b/deps/zlib/contrib/vstudio/vc14/zlib.rc @@ -2,8 +2,8 @@ #define IDR_VERSION1 1 IDR_VERSION1 VERSIONINFO MOVEABLE IMPURE LOADONCALL DISCARDABLE - FILEVERSION 1, 2, 11, 0 - PRODUCTVERSION 1, 2, 11, 0 + FILEVERSION 1, 3, 1, 1 + PRODUCTVERSION 1, 3, 1, 1 FILEFLAGSMASK VS_FFI_FILEFLAGSMASK FILEFLAGS 0 FILEOS VOS_DOS_WINDOWS32 @@ -17,12 +17,12 @@ BEGIN BEGIN VALUE "FileDescription", "zlib data compression and ZIP file I/O library\0" - VALUE "FileVersion", "1.2.11\0" + VALUE "FileVersion", "1.3.1.1\0" VALUE "InternalName", "zlib\0" VALUE "OriginalFilename", "zlibwapi.dll\0" VALUE "ProductName", "ZLib.DLL\0" VALUE "Comments","DLL support by Alessandro Iacopetti & Gilles Vollant\0" - VALUE "LegalCopyright", "(C) 1995-2017 Jean-loup Gailly & Mark Adler\0" + VALUE "LegalCopyright", "(C) 1995-2024 Jean-loup Gailly & Mark Adler\0" END END BLOCK "VarFileInfo" diff --git a/deps/zlib/contrib/vstudio/vc14/zlibstat.vcxproj b/deps/zlib/contrib/vstudio/vc14/zlibstat.vcxproj index 3e4b98639..85c1e8958 100644 --- a/deps/zlib/contrib/vstudio/vc14/zlibstat.vcxproj +++ b/deps/zlib/contrib/vstudio/vc14/zlibstat.vcxproj @@ -170,7 +170,7 @@ Disabled - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) + ..\..\..;%(AdditionalIncludeDirectories) WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) @@ -196,8 +196,8 @@ OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) - WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ASMV;ASMINF;%(PreprocessorDefinitions) + ..\..\..;%(AdditionalIncludeDirectories) + WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) true @@ -216,7 +216,7 @@ /MACHINE:X86 /NODEFAULTLIB %(AdditionalOptions) - ..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies) + %(AdditionalDependencies) $(OutDir)zlibstat.lib true @@ -224,7 +224,7 @@ OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) + ..\..\..;%(AdditionalIncludeDirectories) WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) true @@ -254,7 +254,7 @@ Disabled - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) + ..\..\..;%(AdditionalIncludeDirectories) ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions) @@ -283,7 +283,7 @@ Disabled - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) + ..\..\..;%(AdditionalIncludeDirectories) ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions) @@ -312,8 +312,8 @@ OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) - ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ASMV;ASMINF;WIN64;%(PreprocessorDefinitions) + ..\..\..;%(AdditionalIncludeDirectories) + ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions) true @@ -332,7 +332,7 @@ /MACHINE:AMD64 /NODEFAULTLIB %(AdditionalOptions) - ..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies) + %(AdditionalDependencies) $(OutDir)zlibstat.lib true @@ -343,7 +343,7 @@ OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) + ..\..\..;%(AdditionalIncludeDirectories) ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions) true @@ -373,7 +373,7 @@ OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) + ..\..\..;%(AdditionalIncludeDirectories) ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions) true @@ -403,7 +403,7 @@ OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) + ..\..\..;%(AdditionalIncludeDirectories) ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions) true @@ -437,14 +437,6 @@ - - true - true - true - true - true - true - diff --git a/deps/zlib/contrib/vstudio/vc14/zlibvc.def b/deps/zlib/contrib/vstudio/vc14/zlibvc.def index 54e683d99..61b2d3fbe 100644 --- a/deps/zlib/contrib/vstudio/vc14/zlibvc.def +++ b/deps/zlib/contrib/vstudio/vc14/zlibvc.def @@ -1,7 +1,7 @@ LIBRARY ; zlib data compression and ZIP file I/O library -VERSION 1.2 +VERSION 1.3 EXPORTS adler32 @1 @@ -151,3 +151,11 @@ EXPORTS deflateGetDictionary @173 adler32_z @174 crc32_z @175 + +; zlib1 v1.2.12 added: + crc32_combine_gen @176 + crc32_combine_gen64 @177 + crc32_combine_op @178 + +; zlib1 v1.3.2 added: + deflateUsed @179 diff --git a/deps/zlib/contrib/vstudio/vc14/zlibvc.vcxproj b/deps/zlib/contrib/vstudio/vc14/zlibvc.vcxproj index f8f673cb0..424ff55b7 100644 --- a/deps/zlib/contrib/vstudio/vc14/zlibvc.vcxproj +++ b/deps/zlib/contrib/vstudio/vc14/zlibvc.vcxproj @@ -207,8 +207,8 @@ Disabled - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) - WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;%(PreprocessorDefinitions) + ..\..\..;%(AdditionalIncludeDirectories) + WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;%(PreprocessorDefinitions) MultiThreadedDebugDLL @@ -229,7 +229,7 @@ /MACHINE:I386 %(AdditionalOptions) - ..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies) + %(AdditionalDependencies) $(OutDir)zlibwapi.dll true .\zlibvc.def @@ -243,10 +243,6 @@ $(OutDir)zlibwapi.lib - - cd ..\..\masmx86 -bld_ml32.bat - @@ -258,7 +254,7 @@ bld_ml32.bat OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) + ..\..\..;%(AdditionalIncludeDirectories) WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;%(PreprocessorDefinitions) true @@ -306,8 +302,8 @@ bld_ml32.bat OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) - WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;%(PreprocessorDefinitions) + ..\..\..;%(AdditionalIncludeDirectories) + WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;%(PreprocessorDefinitions) true @@ -330,7 +326,7 @@ bld_ml32.bat /MACHINE:I386 %(AdditionalOptions) - ..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies) + %(AdditionalDependencies) $(OutDir)zlibwapi.dll true false @@ -345,10 +341,6 @@ bld_ml32.bat $(OutDir)zlibwapi.lib false - - cd ..\..\masmx86 -bld_ml32.bat - @@ -360,8 +352,8 @@ bld_ml32.bat Disabled - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) - WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;WIN64;%(PreprocessorDefinitions) + ..\..\..;%(AdditionalIncludeDirectories) + WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions) MultiThreadedDebugDLL @@ -381,7 +373,7 @@ bld_ml32.bat 0x040c - ..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies) + %(AdditionalDependencies) $(OutDir)zlibwapi.dll true .\zlibvc.def @@ -393,10 +385,6 @@ bld_ml32.bat $(OutDir)zlibwapi.lib MachineX64 - - cd ..\..\contrib\masmx64 -bld_ml64.bat - @@ -408,7 +396,7 @@ bld_ml64.bat Disabled - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) + ..\..\..;%(AdditionalIncludeDirectories) WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions) @@ -451,7 +439,7 @@ bld_ml64.bat OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) + ..\..\..;%(AdditionalIncludeDirectories) WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions) true @@ -496,7 +484,7 @@ bld_ml64.bat OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) + ..\..\..;%(AdditionalIncludeDirectories) WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions) true @@ -541,8 +529,8 @@ bld_ml64.bat OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) - _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;WIN64;%(PreprocessorDefinitions) + ..\..\..;%(AdditionalIncludeDirectories) + _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions) true @@ -564,7 +552,7 @@ bld_ml64.bat 0x040c - ..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies) + %(AdditionalDependencies) $(OutDir)zlibwapi.dll true false @@ -576,10 +564,6 @@ bld_ml64.bat $(OutDir)zlibwapi.lib MachineX64 - - cd ..\..\masmx64 -bld_ml64.bat - @@ -591,7 +575,7 @@ bld_ml64.bat OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) + ..\..\..;%(AdditionalIncludeDirectories) _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions) true @@ -636,14 +620,6 @@ bld_ml64.bat - - true - true - true - true - true - true - diff --git a/deps/zlib/contrib/vstudio/vc17/miniunz.vcxproj b/deps/zlib/contrib/vstudio/vc17/miniunz.vcxproj new file mode 100644 index 000000000..68ef16588 --- /dev/null +++ b/deps/zlib/contrib/vstudio/vc17/miniunz.vcxproj @@ -0,0 +1,409 @@ + + + + + Debug + ARM + + + Debug + ARM64 + + + Debug + Win32 + + + Debug + x64 + + + Release + ARM + + + Release + ARM64 + + + Release + Win32 + + + Release + x64 + + + + {C52F9E7B-498A-42BE-8DB4-85A15694382A} + Win32Proj + 10.0 + + + + Application + MultiByte + v143 + + + Application + Unicode + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30128.1 + x86\MiniUnzip$(Configuration)\ + x86\MiniUnzip$(Configuration)\Tmp\ + true + false + x86\MiniUnzip$(Configuration)\ + x86\MiniUnzip$(Configuration)\Tmp\ + false + false + x64\MiniUnzip$(Configuration)\ + x64\MiniUnzip$(Configuration)\Tmp\ + true + true + true + false + false + false + x64\MiniUnzip$(Configuration)\ + x64\MiniUnzip$(Configuration)\Tmp\ + false + false + false + false + false + false + AllRules.ruleset + + + AllRules.ruleset + AllRules.ruleset + AllRules.ruleset + + + + + + + AllRules.ruleset + + + AllRules.ruleset + AllRules.ruleset + AllRules.ruleset + + + + + + + + + arm64\MiniUnzip$(Configuration)\ + arm64\MiniUnzip$(Configuration)\Tmp\ + + + arm64\MiniUnzip$(Configuration)\ + arm64\MiniUnzip$(Configuration)\Tmp\ + + + arm\MiniUnzip$(Configuration)\ + arm\MiniUnzip$(Configuration)\Tmp\ + + + arm\MiniUnzip$(Configuration)\ + arm\MiniUnzip$(Configuration)\Tmp\ + + + + Disabled + ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) + WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + Default + MultiThreadedDebugDLL + false + + + $(IntDir) + Level3 + ProgramDatabase + + + x86\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies) + $(OutDir)miniunz.exe + true + $(OutDir)miniunz.pdb + Console + false + + + MachineX86 + + + + + MaxSpeed + OnlyExplicitInline + true + ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) + WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + Default + MultiThreaded + false + true + + + $(IntDir) + Level3 + ProgramDatabase + + + x86\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies) + $(OutDir)miniunz.exe + true + Console + true + true + false + + + MachineX86 + + + + + X64 + + + Disabled + ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) + _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions) + true + Default + MultiThreadedDebugDLL + false + + + $(IntDir) + Level3 + ProgramDatabase + + + x64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies) + $(OutDir)miniunz.exe + true + $(OutDir)miniunz.pdb + Console + MachineX64 + + + + + + Disabled + ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) + _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions) + true + Default + MultiThreadedDebugDLL + false + + + $(IntDir) + Level3 + ProgramDatabase + + + x64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies) + $(OutDir)miniunz.exe + true + $(OutDir)miniunz.pdb + Console + + + + + + Disabled + ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) + _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions) + true + Default + MultiThreadedDebugDLL + false + + + $(IntDir) + Level3 + ProgramDatabase + + + x64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies) + $(OutDir)miniunz.exe + true + $(OutDir)miniunz.pdb + Console + + + + + X64 + + + MaxSpeed + OnlyExplicitInline + true + ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) + _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions) + true + Default + MultiThreadedDLL + false + true + + + $(IntDir) + Level3 + ProgramDatabase + + + x64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies) + $(OutDir)miniunz.exe + true + Console + true + true + MachineX64 + + + + + + MaxSpeed + OnlyExplicitInline + true + ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) + _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions) + true + Default + MultiThreadedDLL + false + true + + + $(IntDir) + Level3 + ProgramDatabase + + + x64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies) + $(OutDir)miniunz.exe + true + Console + true + true + + + + + + MaxSpeed + OnlyExplicitInline + true + ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) + _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions) + true + Default + MultiThreadedDLL + false + true + + + $(IntDir) + Level3 + ProgramDatabase + + + x64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies) + $(OutDir)miniunz.exe + true + Console + true + true + + + + + + + + {8fd826f8-3739-44e6-8cc8-997122e53b8d} + + + + + + \ No newline at end of file diff --git a/deps/zlib/contrib/vstudio/vc17/minizip.vcxproj b/deps/zlib/contrib/vstudio/vc17/minizip.vcxproj new file mode 100644 index 000000000..dd3c52e70 --- /dev/null +++ b/deps/zlib/contrib/vstudio/vc17/minizip.vcxproj @@ -0,0 +1,405 @@ + + + + + Debug + ARM + + + Debug + ARM64 + + + Debug + Win32 + + + Debug + x64 + + + Release + ARM + + + Release + ARM64 + + + Release + Win32 + + + Release + x64 + + + + {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B} + Win32Proj + 10.0 + + + + Application + MultiByte + v143 + + + Application + Unicode + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30128.1 + x86\MiniZip$(Configuration)\ + x86\MiniZip$(Configuration)\Tmp\ + true + false + x86\MiniZip$(Configuration)\ + x86\MiniZip$(Configuration)\Tmp\ + false + x64\$(Configuration)\ + x64\$(Configuration)\ + true + true + true + false + false + false + x64\$(Configuration)\ + x64\$(Configuration)\ + false + false + false + AllRules.ruleset + + + AllRules.ruleset + AllRules.ruleset + AllRules.ruleset + + + + + + + AllRules.ruleset + + + AllRules.ruleset + AllRules.ruleset + AllRules.ruleset + + + + + + + + + arm64\MiniZip$(Configuration)\ + arm64\MiniZip$(Configuration)\Tmp\ + + + arm64\MiniZip$(Configuration)\ + arm64\MiniZip$(Configuration)\Tmp\ + + + arm\MiniZip$(Configuration)\ + arm\MiniZip$(Configuration)\Tmp\ + + + arm\MiniZip$(Configuration)\ + arm\MiniZip$(Configuration)\Tmp\ + + + + Disabled + ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) + WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + Default + MultiThreadedDebugDLL + false + + + $(IntDir) + Level3 + ProgramDatabase + + + x86\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies) + $(OutDir)minizip.exe + true + $(OutDir)minizip.pdb + Console + false + + + MachineX86 + + + + + MaxSpeed + OnlyExplicitInline + true + ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) + WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + Default + MultiThreaded + false + true + + + $(IntDir) + Level3 + ProgramDatabase + + + x86\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies) + $(OutDir)minizip.exe + true + Console + true + true + false + + + MachineX86 + + + + + X64 + + + Disabled + ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) + _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions) + true + Default + MultiThreadedDebugDLL + false + + + $(IntDir) + Level3 + ProgramDatabase + + + x64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies) + $(OutDir)minizip.exe + true + $(OutDir)minizip.pdb + Console + MachineX64 + + + + + + Disabled + ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) + _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions) + true + Default + MultiThreadedDebugDLL + false + + + $(IntDir) + Level3 + ProgramDatabase + + + x64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies) + $(OutDir)minizip.exe + true + $(OutDir)minizip.pdb + Console + + + + + + Disabled + ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) + _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions) + true + Default + MultiThreadedDebugDLL + false + + + $(IntDir) + Level3 + ProgramDatabase + + + x64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies) + $(OutDir)minizip.exe + true + $(OutDir)minizip.pdb + Console + + + + + X64 + + + MaxSpeed + OnlyExplicitInline + true + ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) + _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions) + true + Default + MultiThreadedDLL + false + true + + + $(IntDir) + Level3 + ProgramDatabase + + + x64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies) + $(OutDir)minizip.exe + true + Console + true + true + MachineX64 + + + + + + MaxSpeed + OnlyExplicitInline + true + ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) + _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions) + true + Default + MultiThreadedDLL + false + true + + + $(IntDir) + Level3 + ProgramDatabase + + + x64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies) + $(OutDir)minizip.exe + true + Console + true + true + + + + + + MaxSpeed + OnlyExplicitInline + true + ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) + _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions) + true + Default + MultiThreadedDLL + false + true + + + $(IntDir) + Level3 + ProgramDatabase + + + x64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies) + $(OutDir)minizip.exe + true + Console + true + true + + + + + + + + {8fd826f8-3739-44e6-8cc8-997122e53b8d} + + + + + + \ No newline at end of file diff --git a/deps/zlib/contrib/vstudio/vc17/testzlib.vcxproj b/deps/zlib/contrib/vstudio/vc17/testzlib.vcxproj new file mode 100644 index 000000000..4cc99b3ff --- /dev/null +++ b/deps/zlib/contrib/vstudio/vc17/testzlib.vcxproj @@ -0,0 +1,473 @@ + + + + + Debug + ARM + + + Debug + ARM64 + + + Debug + Win32 + + + Debug + x64 + + + ReleaseWithoutAsm + ARM + + + ReleaseWithoutAsm + ARM64 + + + ReleaseWithoutAsm + Win32 + + + ReleaseWithoutAsm + x64 + + + Release + ARM + + + Release + ARM64 + + + Release + Win32 + + + Release + x64 + + + + {AA6666AA-E09F-4135-9C0C-4FE50C3C654B} + testzlib + Win32Proj + 10.0 + + + + Application + MultiByte + true + v143 + + + Application + MultiByte + true + v143 + + + Application + Unicode + v143 + + + Application + true + v143 + + + Application + true + v143 + + + Application + true + v143 + + + Application + true + v143 + + + Application + true + v143 + + + Application + true + v143 + + + Application + v143 + + + Application + v143 + + + Application + v143 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30128.1 + x86\TestZlib$(Configuration)\ + x86\TestZlib$(Configuration)\Tmp\ + true + false + x86\TestZlib$(Configuration)\ + x86\TestZlib$(Configuration)\Tmp\ + false + false + x86\TestZlib$(Configuration)\ + x86\TestZlib$(Configuration)\Tmp\ + false + false + x64\TestZlib$(Configuration)\ + x64\TestZlib$(Configuration)\Tmp\ + false + false + false + x64\TestZlib$(Configuration)\ + x64\TestZlib$(Configuration)\Tmp\ + false + false + false + x64\TestZlib$(Configuration)\ + x64\TestZlib$(Configuration)\Tmp\ + false + false + false + AllRules.ruleset + + + AllRules.ruleset + AllRules.ruleset + AllRules.ruleset + + + + + + + AllRules.ruleset + + + AllRules.ruleset + AllRules.ruleset + AllRules.ruleset + + + + + + + AllRules.ruleset + + + AllRules.ruleset + AllRules.ruleset + AllRules.ruleset + + + + + + + + + arm64\TestZlib$(Configuration)\ + arm64\TestZlib$(Configuration)\Tmp\ + + + arm64\TestZlib$(Configuration)\ + arm64\TestZlib$(Configuration)\Tmp\ + + + arm64\TestZlib$(Configuration)\ + arm64\TestZlib$(Configuration)\Tmp\ + + + arm\TestZlib$(Configuration)\ + arm\TestZlib$(Configuration)\Tmp\ + + + arm\TestZlib$(Configuration)\ + arm\TestZlib$(Configuration)\Tmp\ + + + arm\TestZlib$(Configuration)\ + arm\TestZlib$(Configuration)\Tmp\ + + + + Disabled + ..\..\..;%(AdditionalIncludeDirectories) + WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) + true + Default + MultiThreadedDebugDLL + false + + + AssemblyAndSourceCode + $(IntDir) + Level3 + ProgramDatabase + + + %(AdditionalDependencies) + $(OutDir)testzlib.exe + true + $(OutDir)testzlib.pdb + Console + false + + + MachineX86 + + + + + MaxSpeed + OnlyExplicitInline + true + ..\..\..;%(AdditionalIncludeDirectories) + WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) + true + Default + MultiThreaded + false + true + + + $(IntDir) + Level3 + ProgramDatabase + + + $(OutDir)testzlib.exe + true + Console + true + true + false + + + MachineX86 + + + + + MaxSpeed + OnlyExplicitInline + true + ..\..\..;%(AdditionalIncludeDirectories) + WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) + true + Default + MultiThreaded + false + true + + + $(IntDir) + Level3 + ProgramDatabase + + + %(AdditionalDependencies) + $(OutDir)testzlib.exe + true + Console + true + true + false + + + MachineX86 + false + + + + + ..\..\..;%(AdditionalIncludeDirectories) + WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) + Default + MultiThreadedDebugDLL + false + $(IntDir) + + + %(AdditionalDependencies) + + + + + ..\..\..;%(AdditionalIncludeDirectories) + WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) + Default + MultiThreadedDebugDLL + false + $(IntDir) + + + %(AdditionalDependencies) + + + + + ..\..\..;%(AdditionalIncludeDirectories) + WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) + Default + MultiThreadedDebugDLL + false + $(IntDir) + + + %(AdditionalDependencies) + + + + + ..\..\..;%(AdditionalIncludeDirectories) + WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) + Default + MultiThreadedDLL + false + $(IntDir) + + + %(AdditionalDependencies) + + + + + ..\..\..;%(AdditionalIncludeDirectories) + WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) + Default + MultiThreadedDLL + false + $(IntDir) + + + %(AdditionalDependencies) + + + + + ..\..\..;%(AdditionalIncludeDirectories) + WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) + Default + MultiThreadedDLL + false + $(IntDir) + + + %(AdditionalDependencies) + + + + + ..\..\..;%(AdditionalIncludeDirectories) + WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) + Default + MultiThreadedDLL + false + $(IntDir) + + + %(AdditionalDependencies) + + + + + ..\..\..;%(AdditionalIncludeDirectories) + WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) + Default + MultiThreadedDLL + false + $(IntDir) + + + %(AdditionalDependencies) + + + + + ..\..\..;%(AdditionalIncludeDirectories) + WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) + Default + MultiThreadedDLL + false + $(IntDir) + + + %(AdditionalDependencies) + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/deps/zlib/contrib/vstudio/vc17/testzlibdll.vcxproj b/deps/zlib/contrib/vstudio/vc17/testzlibdll.vcxproj new file mode 100644 index 000000000..73bba55da --- /dev/null +++ b/deps/zlib/contrib/vstudio/vc17/testzlibdll.vcxproj @@ -0,0 +1,409 @@ + + + + + Debug + ARM + + + Debug + ARM64 + + + Debug + Win32 + + + Debug + x64 + + + Release + ARM + + + Release + ARM64 + + + Release + Win32 + + + Release + x64 + + + + {C52F9E7B-498A-42BE-8DB4-85A15694366A} + Win32Proj + 10.0 + + + + Application + MultiByte + v143 + + + Application + Unicode + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30128.1 + x86\TestZlibDll$(Configuration)\ + x86\TestZlibDll$(Configuration)\Tmp\ + true + false + x86\TestZlibDll$(Configuration)\ + x86\TestZlibDll$(Configuration)\Tmp\ + false + false + x64\TestZlibDll$(Configuration)\ + x64\TestZlibDll$(Configuration)\Tmp\ + true + true + true + false + false + false + x64\TestZlibDll$(Configuration)\ + x64\TestZlibDll$(Configuration)\Tmp\ + false + false + false + false + false + false + AllRules.ruleset + + + AllRules.ruleset + AllRules.ruleset + AllRules.ruleset + + + + + + + AllRules.ruleset + + + AllRules.ruleset + AllRules.ruleset + AllRules.ruleset + + + + + + + + + arm64\TestZlibDll$(Configuration)\ + arm64\TestZlibDll$(Configuration)\Tmp\ + + + arm64\TestZlibDll$(Configuration)\ + arm64\TestZlibDll$(Configuration)\Tmp\ + + + arm\TestZlibDll$(Configuration)\ + arm\TestZlibDll$(Configuration)\Tmp\ + + + arm\TestZlibDll$(Configuration)\ + arm\TestZlibDll$(Configuration)\Tmp\ + + + + Disabled + ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) + WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + Default + MultiThreadedDebugDLL + false + + + $(IntDir) + Level3 + ProgramDatabase + + + x86\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies) + $(OutDir)testzlibdll.exe + true + $(OutDir)testzlib.pdb + Console + false + + + MachineX86 + + + + + MaxSpeed + OnlyExplicitInline + true + ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) + WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + Default + MultiThreaded + false + true + + + $(IntDir) + Level3 + ProgramDatabase + + + x86\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies) + $(OutDir)testzlibdll.exe + true + Console + true + true + false + + + MachineX86 + + + + + X64 + + + Disabled + ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) + _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions) + true + Default + MultiThreadedDebugDLL + false + + + $(IntDir) + Level3 + ProgramDatabase + + + x64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies) + $(OutDir)testzlibdll.exe + true + $(OutDir)testzlib.pdb + Console + MachineX64 + + + + + + Disabled + ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) + _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions) + true + Default + MultiThreadedDebugDLL + false + + + $(IntDir) + Level3 + ProgramDatabase + + + x64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies) + $(OutDir)testzlibdll.exe + true + $(OutDir)testzlib.pdb + Console + + + + + + Disabled + ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) + _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions) + true + Default + MultiThreadedDebugDLL + false + + + $(IntDir) + Level3 + ProgramDatabase + + + x64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies) + $(OutDir)testzlibdll.exe + true + $(OutDir)testzlib.pdb + Console + + + + + X64 + + + MaxSpeed + OnlyExplicitInline + true + ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) + _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions) + true + Default + MultiThreadedDLL + false + true + + + $(IntDir) + Level3 + ProgramDatabase + + + x64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies) + $(OutDir)testzlibdll.exe + true + Console + true + true + MachineX64 + + + + + + MaxSpeed + OnlyExplicitInline + true + ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) + _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions) + true + Default + MultiThreadedDLL + false + true + + + $(IntDir) + Level3 + ProgramDatabase + + + x64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies) + $(OutDir)testzlibdll.exe + true + Console + true + true + + + + + + MaxSpeed + OnlyExplicitInline + true + ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) + _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions) + true + Default + MultiThreadedDLL + false + true + + + $(IntDir) + Level3 + ProgramDatabase + + + x64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies) + $(OutDir)testzlibdll.exe + true + Console + true + true + + + + + + + + {8fd826f8-3739-44e6-8cc8-997122e53b8d} + + + + + + \ No newline at end of file diff --git a/deps/zlib/contrib/vstudio/vc17/zlib.rc b/deps/zlib/contrib/vstudio/vc17/zlib.rc new file mode 100644 index 000000000..fdfb12414 --- /dev/null +++ b/deps/zlib/contrib/vstudio/vc17/zlib.rc @@ -0,0 +1,32 @@ +#include + +#define IDR_VERSION1 1 +IDR_VERSION1 VERSIONINFO MOVEABLE IMPURE LOADONCALL DISCARDABLE + FILEVERSION 1, 3, 1, 1 + PRODUCTVERSION 1, 3, 1, 1 + FILEFLAGSMASK VS_FFI_FILEFLAGSMASK + FILEFLAGS 0 + FILEOS VOS_DOS_WINDOWS32 + FILETYPE VFT_DLL + FILESUBTYPE 0 // not used +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904E4" + //language ID = U.S. English, char set = Windows, Multilingual + + BEGIN + VALUE "FileDescription", "zlib data compression and ZIP file I/O library\0" + VALUE "FileVersion", "1.3.1.1\0" + VALUE "InternalName", "zlib\0" + VALUE "OriginalFilename", "zlibwapi.dll\0" + VALUE "ProductName", "ZLib.DLL\0" + VALUE "Comments","DLL support by Alessandro Iacopetti & Gilles Vollant\0" + VALUE "LegalCopyright", "(C) 1995-2024 Jean-loup Gailly & Mark Adler\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x0409, 1252 + END +END diff --git a/deps/zlib/contrib/vstudio/vc17/zlibstat.vcxproj b/deps/zlib/contrib/vstudio/vc17/zlibstat.vcxproj new file mode 100644 index 000000000..b946ac2a9 --- /dev/null +++ b/deps/zlib/contrib/vstudio/vc17/zlibstat.vcxproj @@ -0,0 +1,602 @@ + + + + + Debug + ARM + + + Debug + ARM64 + + + Debug + Win32 + + + Debug + x64 + + + ReleaseWithoutAsm + ARM + + + ReleaseWithoutAsm + ARM64 + + + ReleaseWithoutAsm + Win32 + + + ReleaseWithoutAsm + x64 + + + Release + ARM + + + Release + ARM64 + + + Release + Win32 + + + Release + x64 + + + + {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8} + 10.0 + + + + StaticLibrary + false + v143 + + + StaticLibrary + false + v143 + + + StaticLibrary + false + v143 + Unicode + + + StaticLibrary + false + v143 + + + StaticLibrary + false + v143 + + + StaticLibrary + false + v143 + + + StaticLibrary + false + v143 + + + StaticLibrary + false + v143 + + + StaticLibrary + false + v143 + + + StaticLibrary + false + v143 + + + StaticLibrary + false + v143 + + + StaticLibrary + false + v143 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30128.1 + x86\ZlibStat$(Configuration)\ + x86\ZlibStat$(Configuration)\Tmp\ + x86\ZlibStat$(Configuration)\ + x86\ZlibStat$(Configuration)\Tmp\ + x86\ZlibStat$(Configuration)\ + x86\ZlibStat$(Configuration)\Tmp\ + x64\ZlibStat$(Configuration)\ + x64\ZlibStat$(Configuration)\Tmp\ + x64\ZlibStat$(Configuration)\ + x64\ZlibStat$(Configuration)\Tmp\ + x64\ZlibStat$(Configuration)\ + x64\ZlibStat$(Configuration)\Tmp\ + AllRules.ruleset + + + AllRules.ruleset + AllRules.ruleset + AllRules.ruleset + + + + + + + AllRules.ruleset + + + AllRules.ruleset + AllRules.ruleset + AllRules.ruleset + + + + + + + AllRules.ruleset + + + AllRules.ruleset + AllRules.ruleset + AllRules.ruleset + + + + + + + + + arm64\ZlibStat$(Configuration)\ + arm64\ZlibStat$(Configuration)\Tmp\ + + + arm64\ZlibStat$(Configuration)\ + arm64\ZlibStat$(Configuration)\Tmp\ + + + arm64\ZlibStat$(Configuration)\ + arm64\ZlibStat$(Configuration)\Tmp\ + + + arm\ZlibStat$(Configuration)\ + arm\ZlibStat$(Configuration)\Tmp\ + + + arm\ZlibStat$(Configuration)\ + arm\ZlibStat$(Configuration)\Tmp\ + + + arm\ZlibStat$(Configuration)\ + arm\ZlibStat$(Configuration)\Tmp\ + + + + Disabled + ..\..\..;%(AdditionalIncludeDirectories) + WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) + + + MultiThreadedDebugDLL + false + $(IntDir)zlibstat.pch + $(IntDir) + $(IntDir) + $(OutDir) + Level3 + true + OldStyle + + + 0x040c + + + /MACHINE:X86 /NODEFAULTLIB %(AdditionalOptions) + $(OutDir)zlibstat.lib + true + + + + + OnlyExplicitInline + ..\..\..;%(AdditionalIncludeDirectories) + WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) + true + + + MultiThreaded + false + true + $(IntDir)zlibstat.pch + $(IntDir) + $(IntDir) + $(OutDir) + Level3 + true + + + 0x040c + + + /MACHINE:X86 /NODEFAULTLIB %(AdditionalOptions) + %(AdditionalDependencies) + $(OutDir)zlibstat.lib + true + + + + + OnlyExplicitInline + ..\..\..;%(AdditionalIncludeDirectories) + WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) + true + + + MultiThreaded + false + true + $(IntDir)zlibstat.pch + $(IntDir) + $(IntDir) + $(OutDir) + Level3 + true + + + 0x040c + + + /MACHINE:X86 /NODEFAULTLIB %(AdditionalOptions) + $(OutDir)zlibstat.lib + true + + + + + X64 + + + Disabled + ..\..\..;%(AdditionalIncludeDirectories) + ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions) + + + MultiThreadedDebugDLL + false + $(IntDir)zlibstat.pch + $(IntDir) + $(IntDir) + $(OutDir) + Level3 + true + OldStyle + + + 0x040c + + + /MACHINE:AMD64 /NODEFAULTLIB %(AdditionalOptions) + $(OutDir)zlibstat.lib + true + + + + + + Disabled + ..\..\..;%(AdditionalIncludeDirectories) + ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions) + + + MultiThreadedDebugDLL + false + $(IntDir)zlibstat.pch + $(IntDir) + $(IntDir) + $(OutDir) + Level3 + true + OldStyle + + + 0x040c + + + /MACHINE:ARM64 /NODEFAULTLIB %(AdditionalOptions) + $(OutDir)zlibstat.lib + true + + + + + + Disabled + ..\..\..;%(AdditionalIncludeDirectories) + ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions) + + + MultiThreadedDebugDLL + false + $(IntDir)zlibstat.pch + $(IntDir) + $(IntDir) + $(OutDir) + Level3 + true + OldStyle + + + 0x040c + + + /MACHINE:ARM /NODEFAULTLIB %(AdditionalOptions) + $(OutDir)zlibstat.lib + true + + + + + X64 + + + OnlyExplicitInline + ..\..\..;%(AdditionalIncludeDirectories) + ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions) + true + + + MultiThreadedDLL + false + true + $(IntDir)zlibstat.pch + $(IntDir) + $(IntDir) + $(OutDir) + Level3 + true + + + 0x040c + + + /MACHINE:AMD64 /NODEFAULTLIB %(AdditionalOptions) + %(AdditionalDependencies) + $(OutDir)zlibstat.lib + true + + + + + + OnlyExplicitInline + ..\..\..;%(AdditionalIncludeDirectories) + ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions) + true + + + MultiThreadedDLL + false + true + $(IntDir)zlibstat.pch + $(IntDir) + $(IntDir) + $(OutDir) + Level3 + true + + + 0x040c + + + /MACHINE:ARM64 /NODEFAULTLIB %(AdditionalOptions) + %(AdditionalDependencies) + $(OutDir)zlibstat.lib + true + + + + + + OnlyExplicitInline + ..\..\..;%(AdditionalIncludeDirectories) + ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions) + true + + + MultiThreadedDLL + false + true + $(IntDir)zlibstat.pch + $(IntDir) + $(IntDir) + $(OutDir) + Level3 + true + + + 0x040c + + + /MACHINE:ARM /NODEFAULTLIB %(AdditionalOptions) + %(AdditionalDependencies) + $(OutDir)zlibstat.lib + true + + + + + X64 + + + OnlyExplicitInline + ..\..\..;%(AdditionalIncludeDirectories) + ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions) + true + + + MultiThreadedDLL + false + true + $(IntDir)zlibstat.pch + $(IntDir) + $(IntDir) + $(OutDir) + Level3 + true + + + 0x040c + + + /MACHINE:AMD64 /NODEFAULTLIB %(AdditionalOptions) + $(OutDir)zlibstat.lib + true + + + + + + OnlyExplicitInline + ..\..\..;%(AdditionalIncludeDirectories) + ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions) + true + + + MultiThreadedDLL + false + true + $(IntDir)zlibstat.pch + $(IntDir) + $(IntDir) + $(OutDir) + Level3 + true + + + 0x040c + + + /MACHINE:ARM64 /NODEFAULTLIB %(AdditionalOptions) + $(OutDir)zlibstat.lib + true + + + + + + OnlyExplicitInline + ..\..\..;%(AdditionalIncludeDirectories) + ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions) + true + + + MultiThreadedDLL + false + true + $(IntDir)zlibstat.pch + $(IntDir) + $(IntDir) + $(OutDir) + Level3 + true + + + 0x040c + + + /MACHINE:ARM /NODEFAULTLIB %(AdditionalOptions) + $(OutDir)zlibstat.lib + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/deps/zlib/contrib/vstudio/vc17/zlibvc.def b/deps/zlib/contrib/vstudio/vc17/zlibvc.def new file mode 100644 index 000000000..61b2d3fbe --- /dev/null +++ b/deps/zlib/contrib/vstudio/vc17/zlibvc.def @@ -0,0 +1,161 @@ +LIBRARY +; zlib data compression and ZIP file I/O library + +VERSION 1.3 + +EXPORTS + adler32 @1 + compress @2 + crc32 @3 + deflate @4 + deflateCopy @5 + deflateEnd @6 + deflateInit2_ @7 + deflateInit_ @8 + deflateParams @9 + deflateReset @10 + deflateSetDictionary @11 + gzclose @12 + gzdopen @13 + gzerror @14 + gzflush @15 + gzopen @16 + gzread @17 + gzwrite @18 + inflate @19 + inflateEnd @20 + inflateInit2_ @21 + inflateInit_ @22 + inflateReset @23 + inflateSetDictionary @24 + inflateSync @25 + uncompress @26 + zlibVersion @27 + gzprintf @28 + gzputc @29 + gzgetc @30 + gzseek @31 + gzrewind @32 + gztell @33 + gzeof @34 + gzsetparams @35 + zError @36 + inflateSyncPoint @37 + get_crc_table @38 + compress2 @39 + gzputs @40 + gzgets @41 + inflateCopy @42 + inflateBackInit_ @43 + inflateBack @44 + inflateBackEnd @45 + compressBound @46 + deflateBound @47 + gzclearerr @48 + gzungetc @49 + zlibCompileFlags @50 + deflatePrime @51 + deflatePending @52 + + unzOpen @61 + unzClose @62 + unzGetGlobalInfo @63 + unzGetCurrentFileInfo @64 + unzGoToFirstFile @65 + unzGoToNextFile @66 + unzOpenCurrentFile @67 + unzReadCurrentFile @68 + unzOpenCurrentFile3 @69 + unztell @70 + unzeof @71 + unzCloseCurrentFile @72 + unzGetGlobalComment @73 + unzStringFileNameCompare @74 + unzLocateFile @75 + unzGetLocalExtrafield @76 + unzOpen2 @77 + unzOpenCurrentFile2 @78 + unzOpenCurrentFilePassword @79 + + zipOpen @80 + zipOpenNewFileInZip @81 + zipWriteInFileInZip @82 + zipCloseFileInZip @83 + zipClose @84 + zipOpenNewFileInZip2 @86 + zipCloseFileInZipRaw @87 + zipOpen2 @88 + zipOpenNewFileInZip3 @89 + + unzGetFilePos @100 + unzGoToFilePos @101 + + fill_win32_filefunc @110 + +; zlibwapi v1.2.4 added: + fill_win32_filefunc64 @111 + fill_win32_filefunc64A @112 + fill_win32_filefunc64W @113 + + unzOpen64 @120 + unzOpen2_64 @121 + unzGetGlobalInfo64 @122 + unzGetCurrentFileInfo64 @124 + unzGetCurrentFileZStreamPos64 @125 + unztell64 @126 + unzGetFilePos64 @127 + unzGoToFilePos64 @128 + + zipOpen64 @130 + zipOpen2_64 @131 + zipOpenNewFileInZip64 @132 + zipOpenNewFileInZip2_64 @133 + zipOpenNewFileInZip3_64 @134 + zipOpenNewFileInZip4_64 @135 + zipCloseFileInZipRaw64 @136 + +; zlib1 v1.2.4 added: + adler32_combine @140 + crc32_combine @142 + deflateSetHeader @144 + deflateTune @145 + gzbuffer @146 + gzclose_r @147 + gzclose_w @148 + gzdirect @149 + gzoffset @150 + inflateGetHeader @156 + inflateMark @157 + inflatePrime @158 + inflateReset2 @159 + inflateUndermine @160 + +; zlib1 v1.2.6 added: + gzgetc_ @161 + inflateResetKeep @163 + deflateResetKeep @164 + +; zlib1 v1.2.7 added: + gzopen_w @165 + +; zlib1 v1.2.8 added: + inflateGetDictionary @166 + gzvprintf @167 + +; zlib1 v1.2.9 added: + inflateCodesUsed @168 + inflateValidate @169 + uncompress2 @170 + gzfread @171 + gzfwrite @172 + deflateGetDictionary @173 + adler32_z @174 + crc32_z @175 + +; zlib1 v1.2.12 added: + crc32_combine_gen @176 + crc32_combine_gen64 @177 + crc32_combine_op @178 + +; zlib1 v1.3.2 added: + deflateUsed @179 diff --git a/deps/zlib/contrib/vstudio/vc17/zlibvc.sln b/deps/zlib/contrib/vstudio/vc17/zlibvc.sln new file mode 100644 index 000000000..67896b747 --- /dev/null +++ b/deps/zlib/contrib/vstudio/vc17/zlibvc.sln @@ -0,0 +1,179 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.4.33015.44 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlibvc", "zlibvc.vcxproj", "{8FD826F8-3739-44E6-8CC8-997122E53B8D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlibstat", "zlibstat.vcxproj", "{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testzlib", "testzlib.vcxproj", "{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testzlibdll", "testzlibdll.vcxproj", "{C52F9E7B-498A-42BE-8DB4-85A15694366A}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "minizip", "minizip.vcxproj", "{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "miniunz", "miniunz.vcxproj", "{C52F9E7B-498A-42BE-8DB4-85A15694382A}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|ARM = Debug|ARM + Debug|ARM64 = Debug|ARM64 + Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 + Release|ARM = Release|ARM + Release|ARM64 = Release|ARM64 + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + ReleaseWithoutAsm|ARM = ReleaseWithoutAsm|ARM + ReleaseWithoutAsm|ARM64 = ReleaseWithoutAsm|ARM64 + ReleaseWithoutAsm|Win32 = ReleaseWithoutAsm|Win32 + ReleaseWithoutAsm|x64 = ReleaseWithoutAsm|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|ARM.ActiveCfg = Debug|ARM + {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|ARM.Build.0 = Debug|ARM + {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|ARM64.Build.0 = Debug|ARM64 + {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|Win32.ActiveCfg = Debug|Win32 + {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|Win32.Build.0 = Debug|Win32 + {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|x64.ActiveCfg = Debug|x64 + {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|x64.Build.0 = Debug|x64 + {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|ARM.ActiveCfg = Release|ARM + {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|ARM.Build.0 = Release|ARM + {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|ARM64.ActiveCfg = Release|ARM64 + {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|ARM64.Build.0 = Release|ARM64 + {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|Win32.ActiveCfg = Release|Win32 + {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|Win32.Build.0 = Release|Win32 + {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|x64.ActiveCfg = Release|x64 + {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|x64.Build.0 = Release|x64 + {8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|ARM.ActiveCfg = ReleaseWithoutAsm|ARM + {8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|ARM.Build.0 = ReleaseWithoutAsm|ARM + {8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|ARM64.ActiveCfg = ReleaseWithoutAsm|ARM64 + {8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|ARM64.Build.0 = ReleaseWithoutAsm|ARM64 + {8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|Win32.ActiveCfg = ReleaseWithoutAsm|Win32 + {8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|Win32.Build.0 = ReleaseWithoutAsm|Win32 + {8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|x64.ActiveCfg = ReleaseWithoutAsm|x64 + {8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|x64.Build.0 = ReleaseWithoutAsm|x64 + {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|ARM.ActiveCfg = Debug|ARM + {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|ARM.Build.0 = Debug|ARM + {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|ARM64.Build.0 = Debug|ARM64 + {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|Win32.ActiveCfg = Debug|Win32 + {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|Win32.Build.0 = Debug|Win32 + {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|x64.ActiveCfg = Debug|x64 + {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|x64.Build.0 = Debug|x64 + {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|ARM.ActiveCfg = Release|ARM + {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|ARM.Build.0 = Release|ARM + {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|ARM64.ActiveCfg = Release|ARM64 + {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|ARM64.Build.0 = Release|ARM64 + {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|Win32.ActiveCfg = Release|Win32 + {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|Win32.Build.0 = Release|Win32 + {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|x64.ActiveCfg = Release|x64 + {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|x64.Build.0 = Release|x64 + {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|ARM.ActiveCfg = ReleaseWithoutAsm|ARM + {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|ARM.Build.0 = ReleaseWithoutAsm|ARM + {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|ARM64.ActiveCfg = ReleaseWithoutAsm|ARM64 + {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|ARM64.Build.0 = ReleaseWithoutAsm|ARM64 + {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|Win32.ActiveCfg = ReleaseWithoutAsm|Win32 + {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|Win32.Build.0 = ReleaseWithoutAsm|Win32 + {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|x64.ActiveCfg = ReleaseWithoutAsm|x64 + {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|x64.Build.0 = ReleaseWithoutAsm|x64 + {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|ARM.ActiveCfg = Debug|ARM + {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|ARM.Build.0 = Debug|ARM + {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|ARM64.Build.0 = Debug|ARM64 + {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|Win32.ActiveCfg = Debug|Win32 + {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|Win32.Build.0 = Debug|Win32 + {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|x64.ActiveCfg = Debug|x64 + {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|x64.Build.0 = Debug|x64 + {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|ARM.ActiveCfg = Release|ARM + {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|ARM.Build.0 = Release|ARM + {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|ARM64.ActiveCfg = Release|ARM64 + {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|ARM64.Build.0 = Release|ARM64 + {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|Win32.ActiveCfg = Release|Win32 + {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|Win32.Build.0 = Release|Win32 + {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|x64.ActiveCfg = Release|x64 + {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|x64.Build.0 = Release|x64 + {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|ARM.ActiveCfg = ReleaseWithoutAsm|ARM + {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|ARM.Build.0 = ReleaseWithoutAsm|ARM + {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|ARM64.ActiveCfg = ReleaseWithoutAsm|ARM64 + {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|ARM64.Build.0 = ReleaseWithoutAsm|ARM64 + {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Win32.ActiveCfg = ReleaseWithoutAsm|Win32 + {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Win32.Build.0 = ReleaseWithoutAsm|Win32 + {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|x64.ActiveCfg = ReleaseWithoutAsm|x64 + {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|x64.Build.0 = ReleaseWithoutAsm|x64 + {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|ARM.ActiveCfg = Debug|ARM + {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|ARM.Build.0 = Debug|ARM + {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|ARM64.Build.0 = Debug|ARM64 + {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|Win32.ActiveCfg = Debug|Win32 + {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|Win32.Build.0 = Debug|Win32 + {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|x64.ActiveCfg = Debug|x64 + {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|x64.Build.0 = Debug|x64 + {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|ARM.ActiveCfg = Release|ARM + {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|ARM.Build.0 = Release|ARM + {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|ARM64.ActiveCfg = Release|ARM64 + {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|ARM64.Build.0 = Release|ARM64 + {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|Win32.ActiveCfg = Release|Win32 + {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|Win32.Build.0 = Release|Win32 + {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|x64.ActiveCfg = Release|x64 + {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|x64.Build.0 = Release|x64 + {C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|ARM.ActiveCfg = Release|ARM + {C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|ARM.Build.0 = Release|ARM + {C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|ARM64.ActiveCfg = Release|ARM64 + {C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|ARM64.Build.0 = Release|ARM64 + {C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|Win32.ActiveCfg = Release|Win32 + {C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|x64.ActiveCfg = Release|x64 + {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|ARM.ActiveCfg = Debug|ARM + {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|ARM.Build.0 = Debug|ARM + {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|ARM64.Build.0 = Debug|ARM64 + {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|Win32.ActiveCfg = Debug|Win32 + {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|Win32.Build.0 = Debug|Win32 + {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|x64.ActiveCfg = Debug|x64 + {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|x64.Build.0 = Debug|x64 + {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|ARM.ActiveCfg = Release|ARM + {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|ARM.Build.0 = Release|ARM + {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|ARM64.ActiveCfg = Release|ARM64 + {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|ARM64.Build.0 = Release|ARM64 + {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|Win32.ActiveCfg = Release|Win32 + {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|Win32.Build.0 = Release|Win32 + {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|x64.ActiveCfg = Release|x64 + {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|x64.Build.0 = Release|x64 + {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|ARM.ActiveCfg = Release|ARM + {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|ARM.Build.0 = Release|ARM + {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|ARM64.ActiveCfg = Release|ARM64 + {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|ARM64.Build.0 = Release|ARM64 + {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Win32.ActiveCfg = Release|Win32 + {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|x64.ActiveCfg = Release|x64 + {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|ARM.ActiveCfg = Debug|ARM + {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|ARM.Build.0 = Debug|ARM + {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|ARM64.Build.0 = Debug|ARM64 + {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|Win32.ActiveCfg = Debug|Win32 + {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|Win32.Build.0 = Debug|Win32 + {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|x64.ActiveCfg = Debug|x64 + {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|x64.Build.0 = Debug|x64 + {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|ARM.ActiveCfg = Release|ARM + {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|ARM.Build.0 = Release|ARM + {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|ARM64.ActiveCfg = Release|ARM64 + {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|ARM64.Build.0 = Release|ARM64 + {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|Win32.ActiveCfg = Release|Win32 + {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|Win32.Build.0 = Release|Win32 + {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|x64.ActiveCfg = Release|x64 + {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|x64.Build.0 = Release|x64 + {C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|ARM.ActiveCfg = Release|ARM + {C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|ARM.Build.0 = Release|ARM + {C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|ARM64.ActiveCfg = Release|ARM64 + {C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|ARM64.Build.0 = Release|ARM64 + {C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|Win32.ActiveCfg = Release|Win32 + {C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|x64.ActiveCfg = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {EAA58685-56D9-43F2-8703-FD2CB020745E} + EndGlobalSection +EndGlobal diff --git a/deps/zlib/contrib/vstudio/vc17/zlibvc.vcxproj b/deps/zlib/contrib/vstudio/vc17/zlibvc.vcxproj new file mode 100644 index 000000000..10a7a901e --- /dev/null +++ b/deps/zlib/contrib/vstudio/vc17/zlibvc.vcxproj @@ -0,0 +1,875 @@ + + + + + Debug + ARM + + + Debug + ARM64 + + + Debug + Win32 + + + Debug + x64 + + + ReleaseWithoutAsm + ARM + + + ReleaseWithoutAsm + ARM64 + + + ReleaseWithoutAsm + Win32 + + + ReleaseWithoutAsm + x64 + + + Release + ARM + + + Release + ARM64 + + + Release + Win32 + + + Release + x64 + + + + {8FD826F8-3739-44E6-8CC8-997122E53B8D} + 10.0 + + + + DynamicLibrary + false + true + v143 + + + DynamicLibrary + false + true + v143 + + + DynamicLibrary + false + v143 + Unicode + + + DynamicLibrary + false + true + v143 + + + DynamicLibrary + false + true + v143 + + + DynamicLibrary + false + true + v143 + + + DynamicLibrary + false + true + v143 + + + DynamicLibrary + false + true + v143 + + + DynamicLibrary + false + true + v143 + + + DynamicLibrary + false + v143 + + + DynamicLibrary + false + v143 + + + DynamicLibrary + false + v143 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30128.1 + x86\ZlibDll$(Configuration)\ + x86\ZlibDll$(Configuration)\Tmp\ + true + false + x86\ZlibDll$(Configuration)\ + x86\ZlibDll$(Configuration)\Tmp\ + false + false + x86\ZlibDll$(Configuration)\ + x86\ZlibDll$(Configuration)\Tmp\ + false + false + x64\ZlibDll$(Configuration)\ + x64\ZlibDll$(Configuration)\Tmp\ + true + true + true + false + false + false + x64\ZlibDll$(Configuration)\ + x64\ZlibDll$(Configuration)\Tmp\ + false + false + false + false + false + false + x64\ZlibDll$(Configuration)\ + x64\ZlibDll$(Configuration)\Tmp\ + false + false + false + false + false + false + AllRules.ruleset + + + AllRules.ruleset + AllRules.ruleset + AllRules.ruleset + + + + + + + AllRules.ruleset + + + AllRules.ruleset + AllRules.ruleset + AllRules.ruleset + + + + + + + AllRules.ruleset + + + AllRules.ruleset + AllRules.ruleset + AllRules.ruleset + + + + + + + zlibwapi + zlibwapi + zlibwapi + zlibwapi + zlibwapi + zlibwapi + zlibwapi + zlibwapi + zlibwapi + zlibwapi + zlibwapi + zlibwapi + + + arm64\ZlibDll$(Configuration)\ + arm64\ZlibDll$(Configuration)\Tmp\ + + + arm\ZlibDll$(Configuration)\ + arm\ZlibDll$(Configuration)\Tmp\ + + + arm64\ZlibDll$(Configuration)\ + arm64\ZlibDll$(Configuration)\Tmp\ + + + arm64\ZlibDll$(Configuration)\ + arm64\ZlibDll$(Configuration)\Tmp\ + + + arm\ZlibDll$(Configuration)\ + arm\ZlibDll$(Configuration)\Tmp\ + + + arm\ZlibDll$(Configuration)\ + arm\ZlibDll$(Configuration)\Tmp\ + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + $(OutDir)zlibvc.tlb + + + Disabled + ..\..\..;%(AdditionalIncludeDirectories) + WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;%(PreprocessorDefinitions) + + + MultiThreadedDebugDLL + false + $(IntDir)zlibvc.pch + $(IntDir) + $(IntDir) + $(OutDir) + + + Level3 + true + ProgramDatabase + + + _DEBUG;%(PreprocessorDefinitions) + 0x040c + + + /MACHINE:I386 %(AdditionalOptions) + %(AdditionalDependencies) + $(OutDir)zlibwapi.dll + true + .\zlibvc.def + true + $(OutDir)zlibwapi.pdb + true + $(OutDir)zlibwapi.map + Windows + false + + + $(OutDir)zlibwapi.lib + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + $(OutDir)zlibvc.tlb + + + OnlyExplicitInline + ..\..\..;%(AdditionalIncludeDirectories) + WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;%(PreprocessorDefinitions) + true + + + MultiThreadedDLL + false + true + $(IntDir)zlibvc.pch + All + $(IntDir) + $(IntDir) + $(OutDir) + + + Level3 + true + + + NDEBUG;%(PreprocessorDefinitions) + 0x040c + + + /MACHINE:I386 %(AdditionalOptions) + $(OutDir)zlibwapi.dll + true + false + .\zlibvc.def + $(OutDir)zlibwapi.pdb + true + $(OutDir)zlibwapi.map + Windows + false + + + $(OutDir)zlibwapi.lib + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + $(OutDir)zlibvc.tlb + + + OnlyExplicitInline + ..\..\..;%(AdditionalIncludeDirectories) + WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;%(PreprocessorDefinitions) + true + + + MultiThreaded + false + true + $(IntDir)zlibvc.pch + All + $(IntDir) + $(IntDir) + $(OutDir) + + + Level3 + true + + + NDEBUG;%(PreprocessorDefinitions) + 0x040c + + + /MACHINE:I386 %(AdditionalOptions) + %(AdditionalDependencies) + $(OutDir)zlibwapi.dll + true + false + .\zlibvc.def + $(OutDir)zlibwapi.pdb + true + $(OutDir)zlibwapi.map + Windows + false + + + $(OutDir)zlibwapi.lib + false + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + X64 + $(OutDir)zlibvc.tlb + + + Disabled + ..\..\..;%(AdditionalIncludeDirectories) + WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions) + + + MultiThreadedDebugDLL + false + $(IntDir)zlibvc.pch + $(IntDir) + $(IntDir) + $(OutDir) + + + Level3 + true + ProgramDatabase + + + _DEBUG;%(PreprocessorDefinitions) + 0x040c + + + %(AdditionalDependencies) + $(OutDir)zlibwapi.dll + true + .\zlibvc.def + true + $(OutDir)zlibwapi.pdb + true + $(OutDir)zlibwapi.map + Windows + $(OutDir)zlibwapi.lib + MachineX64 + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + $(OutDir)zlibvc.tlb + + + Disabled + ..\..\..;%(AdditionalIncludeDirectories) + WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions) + + + MultiThreadedDebugDLL + false + $(IntDir)zlibvc.pch + $(IntDir) + $(IntDir) + $(OutDir) + + + Level3 + true + ProgramDatabase + + + _DEBUG;%(PreprocessorDefinitions) + 0x040c + + + %(AdditionalDependencies) + $(OutDir)zlibwapi.dll + true + .\zlibvc.def + true + $(OutDir)zlibwapi.pdb + true + $(OutDir)zlibwapi.map + Windows + $(OutDir)zlibwapi.lib + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + $(OutDir)zlibvc.tlb + + + Disabled + ..\..\..;%(AdditionalIncludeDirectories) + WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions) + + + MultiThreadedDebugDLL + false + $(IntDir)zlibvc.pch + $(IntDir) + $(IntDir) + $(OutDir) + + + Level3 + true + ProgramDatabase + + + _DEBUG;%(PreprocessorDefinitions) + 0x040c + + + %(AdditionalDependencies) + $(OutDir)zlibwapi.dll + true + .\zlibvc.def + true + $(OutDir)zlibwapi.pdb + true + $(OutDir)zlibwapi.map + Windows + $(OutDir)zlibwapi.lib + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + X64 + $(OutDir)zlibvc.tlb + + + OnlyExplicitInline + ..\..\..;%(AdditionalIncludeDirectories) + WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions) + true + + + MultiThreadedDLL + false + true + $(IntDir)zlibvc.pch + All + $(IntDir) + $(IntDir) + $(OutDir) + + + Level3 + true + + + NDEBUG;%(PreprocessorDefinitions) + 0x040c + + + $(OutDir)zlibwapi.dll + true + false + .\zlibvc.def + $(OutDir)zlibwapi.pdb + true + $(OutDir)zlibwapi.map + Windows + $(OutDir)zlibwapi.lib + MachineX64 + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + $(OutDir)zlibvc.tlb + + + OnlyExplicitInline + ..\..\..;%(AdditionalIncludeDirectories) + WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions) + true + + + MultiThreadedDLL + false + true + $(IntDir)zlibvc.pch + All + $(IntDir) + $(IntDir) + $(OutDir) + + + Level3 + true + + + NDEBUG;%(PreprocessorDefinitions) + 0x040c + + + $(OutDir)zlibwapi.dll + true + false + .\zlibvc.def + $(OutDir)zlibwapi.pdb + true + $(OutDir)zlibwapi.map + Windows + $(OutDir)zlibwapi.lib + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + $(OutDir)zlibvc.tlb + + + OnlyExplicitInline + ..\..\..;%(AdditionalIncludeDirectories) + WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions) + true + + + MultiThreadedDLL + false + true + $(IntDir)zlibvc.pch + All + $(IntDir) + $(IntDir) + $(OutDir) + + + Level3 + true + + + NDEBUG;%(PreprocessorDefinitions) + 0x040c + + + $(OutDir)zlibwapi.dll + true + false + .\zlibvc.def + $(OutDir)zlibwapi.pdb + true + $(OutDir)zlibwapi.map + Windows + $(OutDir)zlibwapi.lib + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + X64 + $(OutDir)zlibvc.tlb + + + OnlyExplicitInline + ..\..\..;%(AdditionalIncludeDirectories) + _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions) + true + + + MultiThreadedDLL + false + true + $(IntDir)zlibvc.pch + All + $(IntDir) + $(IntDir) + $(OutDir) + + + Level3 + true + + + NDEBUG;%(PreprocessorDefinitions) + 0x040c + + + %(AdditionalDependencies) + $(OutDir)zlibwapi.dll + true + false + .\zlibvc.def + $(OutDir)zlibwapi.pdb + true + $(OutDir)zlibwapi.map + Windows + $(OutDir)zlibwapi.lib + MachineX64 + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + $(OutDir)zlibvc.tlb + + + OnlyExplicitInline + ..\..\..;%(AdditionalIncludeDirectories) + _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions) + true + + + MultiThreadedDLL + false + true + $(IntDir)zlibvc.pch + All + $(IntDir) + $(IntDir) + $(OutDir) + + + Level3 + true + + + NDEBUG;%(PreprocessorDefinitions) + 0x040c + + + %(AdditionalDependencies) + $(OutDir)zlibwapi.dll + true + false + .\zlibvc.def + $(OutDir)zlibwapi.pdb + true + $(OutDir)zlibwapi.map + Windows + $(OutDir)zlibwapi.lib + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + $(OutDir)zlibvc.tlb + + + OnlyExplicitInline + ..\..\..;%(AdditionalIncludeDirectories) + _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN32;%(PreprocessorDefinitions) + true + + + MultiThreadedDLL + false + true + $(IntDir)zlibvc.pch + All + $(IntDir) + $(IntDir) + $(OutDir) + + + Level3 + true + + + NDEBUG;%(PreprocessorDefinitions) + 0x040c + + + %(AdditionalDependencies) + $(OutDir)zlibwapi.dll + true + false + .\zlibvc.def + $(OutDir)zlibwapi.pdb + true + $(OutDir)zlibwapi.map + Windows + $(OutDir)zlibwapi.lib + + + + + + + + + + + + + + + + + + + + + %(AdditionalIncludeDirectories) + ZLIB_INTERNAL;%(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(AdditionalIncludeDirectories) + %(AdditionalIncludeDirectories) + ZLIB_INTERNAL;%(PreprocessorDefinitions) + ZLIB_INTERNAL;%(PreprocessorDefinitions) + ZLIB_INTERNAL;%(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + ZLIB_INTERNAL;%(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(AdditionalIncludeDirectories) + %(AdditionalIncludeDirectories) + ZLIB_INTERNAL;%(PreprocessorDefinitions) + ZLIB_INTERNAL;%(PreprocessorDefinitions) + ZLIB_INTERNAL;%(PreprocessorDefinitions) + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/deps/zlib/contrib/vstudio/vc9/miniunz.vcproj b/deps/zlib/contrib/vstudio/vc9/miniunz.vcproj index 7da32b91e..cc3d13a10 100644 --- a/deps/zlib/contrib/vstudio/vc9/miniunz.vcproj +++ b/deps/zlib/contrib/vstudio/vc9/miniunz.vcproj @@ -542,7 +542,7 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/deps/zlib/contrib/vstudio/vc9/testzlibdll.vcproj b/deps/zlib/contrib/vstudio/vc9/testzlibdll.vcproj index b1ddde05f..6448b497c 100644 --- a/deps/zlib/contrib/vstudio/vc9/testzlibdll.vcproj +++ b/deps/zlib/contrib/vstudio/vc9/testzlibdll.vcproj @@ -542,7 +542,7 @@ @@ -343,8 +342,8 @@ @@ -418,7 +416,7 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/deps/zlib/contrib/vstudio/vc9/zlibvc.def b/deps/zlib/contrib/vstudio/vc9/zlibvc.def index 54e683d99..61b2d3fbe 100644 --- a/deps/zlib/contrib/vstudio/vc9/zlibvc.def +++ b/deps/zlib/contrib/vstudio/vc9/zlibvc.def @@ -1,7 +1,7 @@ LIBRARY ; zlib data compression and ZIP file I/O library -VERSION 1.2 +VERSION 1.3 EXPORTS adler32 @1 @@ -151,3 +151,11 @@ EXPORTS deflateGetDictionary @173 adler32_z @174 crc32_z @175 + +; zlib1 v1.2.12 added: + crc32_combine_gen @176 + crc32_combine_gen64 @177 + crc32_combine_op @178 + +; zlib1 v1.3.2 added: + deflateUsed @179 diff --git a/deps/zlib/contrib/vstudio/vc9/zlibvc.vcproj b/deps/zlib/contrib/vstudio/vc9/zlibvc.vcproj index c9a89471e..f11dd1fbf 100644 --- a/deps/zlib/contrib/vstudio/vc9/zlibvc.vcproj +++ b/deps/zlib/contrib/vstudio/vc9/zlibvc.vcproj @@ -53,8 +53,8 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/deps/zlib/crc32.c b/deps/zlib/crc32.c index 9580440c0..6c38f5c04 100644 --- a/deps/zlib/crc32.c +++ b/deps/zlib/crc32.c @@ -1,12 +1,10 @@ /* crc32.c -- compute the CRC-32 of a data stream - * Copyright (C) 1995-2006, 2010, 2011, 2012, 2016 Mark Adler + * Copyright (C) 1995-2022 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h * - * Thanks to Rodney Brown for his contribution of faster - * CRC methods: exclusive-oring 32 bits of data at a time, and pre-computing - * tables for updating the shift register in one step with three exclusive-ors - * instead of four steps with four exclusive-ors. This results in about a - * factor of two increase in speed on a Power PC G4 (PPC7455) using gcc -O3. + * This interleaved implementation of a CRC makes use of pipelined multiple + * arithmetic-logic units, commonly found in modern CPU cores. It is due to + * Kadatch and Jenkins (2010). See doc/crc-doc.1.0.pdf in this distribution. */ /* @(#) $Id$ */ @@ -14,11 +12,12 @@ /* Note on the use of DYNAMIC_CRC_TABLE: there is no mutex or semaphore protection on the static variables used to control the first-use generation - of the crc tables. Therefore, if you #define DYNAMIC_CRC_TABLE, you should + of the crc tables. Therefore, if you #define DYNAMIC_CRC_TABLE, you should first call get_crc_table() to initialize the tables before allowing more than one thread to use crc32(). - DYNAMIC_CRC_TABLE and MAKECRCH can be #defined to write out crc32.h. + MAKECRCH can be #defined to write out crc32.h. A main() routine is also + produced, so that this one source file can be compiled to an executable. */ #ifdef MAKECRCH @@ -28,415 +27,1023 @@ # endif /* !DYNAMIC_CRC_TABLE */ #endif /* MAKECRCH */ -#include "zutil.h" /* for STDC and FAR definitions */ +#include "zutil.h" /* for Z_U4, Z_U8, z_crc_t, and FAR definitions */ -/* Definitions for doing the crc four data bytes at a time. */ -#if !defined(NOBYFOUR) && defined(Z_U4) -# define BYFOUR -#endif -#ifdef BYFOUR - local unsigned long crc32_little OF((unsigned long, - const unsigned char FAR *, z_size_t)); - local unsigned long crc32_big OF((unsigned long, - const unsigned char FAR *, z_size_t)); -# define TBLS 8 + /* + A CRC of a message is computed on N braids of words in the message, where + each word consists of W bytes (4 or 8). If N is 3, for example, then three + running sparse CRCs are calculated respectively on each braid, at these + indices in the array of words: 0, 3, 6, ..., 1, 4, 7, ..., and 2, 5, 8, ... + This is done starting at a word boundary, and continues until as many blocks + of N * W bytes as are available have been processed. The results are combined + into a single CRC at the end. For this code, N must be in the range 1..6 and + W must be 4 or 8. The upper limit on N can be increased if desired by adding + more #if blocks, extending the patterns apparent in the code. In addition, + crc32.h would need to be regenerated, if the maximum N value is increased. + + N and W are chosen empirically by benchmarking the execution time on a given + processor. The choices for N and W below were based on testing on Intel Kaby + Lake i7, AMD Ryzen 7, ARM Cortex-A57, Sparc64-VII, PowerPC POWER9, and MIPS64 + Octeon II processors. The Intel, AMD, and ARM processors were all fastest + with N=5, W=8. The Sparc, PowerPC, and MIPS64 were all fastest at N=5, W=4. + They were all tested with either gcc or clang, all using the -O3 optimization + level. Your mileage may vary. + */ + +/* Define N */ +#ifdef Z_TESTN +# define N Z_TESTN #else -# define TBLS 1 -#endif /* BYFOUR */ +# define N 5 +#endif +#if N < 1 || N > 6 +# error N must be in 1..6 +#endif -/* Local functions for crc concatenation */ -local unsigned long gf2_matrix_times OF((unsigned long *mat, - unsigned long vec)); -local void gf2_matrix_square OF((unsigned long *square, unsigned long *mat)); -local uLong crc32_combine_ OF((uLong crc1, uLong crc2, z_off64_t len2)); +/* + z_crc_t must be at least 32 bits. z_word_t must be at least as long as + z_crc_t. It is assumed here that z_word_t is either 32 bits or 64 bits, and + that bytes are eight bits. + */ +/* + Define W and the associated z_word_t type. If W is not defined, then a + braided calculation is not used, and the associated tables and code are not + compiled. + */ +#ifdef Z_TESTW +# if Z_TESTW-1 != -1 +# define W Z_TESTW +# endif +#else +# ifdef MAKECRCH +# define W 8 /* required for MAKECRCH */ +# else +# if defined(__x86_64__) || defined(__aarch64__) +# define W 8 +# else +# define W 4 +# endif +# endif +#endif +#ifdef W +# if W == 8 && defined(Z_U8) + typedef Z_U8 z_word_t; +# elif defined(Z_U4) +# undef W +# define W 4 + typedef Z_U4 z_word_t; +# else +# undef W +# endif +#endif + +/* If available, use the ARM processor CRC32 instruction. */ +#if defined(__aarch64__) && defined(__ARM_FEATURE_CRC32) && W == 8 +# define ARMCRC32 +#endif + +#if defined(W) && (!defined(ARMCRC32) || defined(DYNAMIC_CRC_TABLE)) +/* + Swap the bytes in a z_word_t to convert between little and big endian. Any + self-respecting compiler will optimize this to a single machine byte-swap + instruction, if one is available. This assumes that word_t is either 32 bits + or 64 bits. + */ +local z_word_t byte_swap(z_word_t word) { +# if W == 8 + return + (word & 0xff00000000000000) >> 56 | + (word & 0xff000000000000) >> 40 | + (word & 0xff0000000000) >> 24 | + (word & 0xff00000000) >> 8 | + (word & 0xff000000) << 8 | + (word & 0xff0000) << 24 | + (word & 0xff00) << 40 | + (word & 0xff) << 56; +# else /* W == 4 */ + return + (word & 0xff000000) >> 24 | + (word & 0xff0000) >> 8 | + (word & 0xff00) << 8 | + (word & 0xff) << 24; +# endif +} +#endif #ifdef DYNAMIC_CRC_TABLE +/* ========================================================================= + * Table of powers of x for combining CRC-32s, filled in by make_crc_table() + * below. + */ + local z_crc_t FAR x2n_table[32]; +#else +/* ========================================================================= + * Tables for byte-wise and braided CRC-32 calculations, and a table of powers + * of x for combining CRC-32s, all made by make_crc_table(). + */ +# include "crc32.h" +#endif -local volatile int crc_table_empty = 1; -local z_crc_t FAR crc_table[TBLS][256]; -local void make_crc_table OF((void)); +/* CRC polynomial. */ +#define POLY 0xedb88320 /* p(x) reflected, with x^32 implied */ + +/* + Return a(x) multiplied by b(x) modulo p(x), where p(x) is the CRC polynomial, + reflected. For speed, this requires that a not be zero. + */ +local z_crc_t multmodp(z_crc_t a, z_crc_t b) { + z_crc_t m, p; + + m = (z_crc_t)1 << 31; + p = 0; + for (;;) { + if (a & m) { + p ^= b; + if ((a & (m - 1)) == 0) + break; + } + m >>= 1; + b = b & 1 ? (b >> 1) ^ POLY : b >> 1; + } + return p; +} + +/* + Return x^(n * 2^k) modulo p(x). Requires that x2n_table[] has been + initialized. + */ +local z_crc_t x2nmodp(z_off64_t n, unsigned k) { + z_crc_t p; + + p = (z_crc_t)1 << 31; /* x^0 == 1 */ + while (n) { + if (n & 1) + p = multmodp(x2n_table[k & 31], p); + n >>= 1; + k++; + } + return p; +} + +#ifdef DYNAMIC_CRC_TABLE +/* ========================================================================= + * Build the tables for byte-wise and braided CRC-32 calculations, and a table + * of powers of x for combining CRC-32s. + */ +local z_crc_t FAR crc_table[256]; +#ifdef W + local z_word_t FAR crc_big_table[256]; + local z_crc_t FAR crc_braid_table[W][256]; + local z_word_t FAR crc_braid_big_table[W][256]; + local void braid(z_crc_t [][256], z_word_t [][256], int, int); +#endif #ifdef MAKECRCH - local void write_table OF((FILE *, const z_crc_t FAR *)); + local void write_table(FILE *, const z_crc_t FAR *, int); + local void write_table32hi(FILE *, const z_word_t FAR *, int); + local void write_table64(FILE *, const z_word_t FAR *, int); #endif /* MAKECRCH */ + +/* + Define a once() function depending on the availability of atomics. If this is + compiled with DYNAMIC_CRC_TABLE defined, and if CRCs will be computed in + multiple threads, and if atomics are not available, then get_crc_table() must + be called to initialize the tables and must return before any threads are + allowed to compute or combine CRCs. + */ + +/* Definition of once functionality. */ +typedef struct once_s once_t; + +/* Check for the availability of atomics. */ +#if defined(__STDC__) && __STDC_VERSION__ >= 201112L && \ + !defined(__STDC_NO_ATOMICS__) + +#include + +/* Structure for once(), which must be initialized with ONCE_INIT. */ +struct once_s { + atomic_flag begun; + atomic_int done; +}; +#define ONCE_INIT {ATOMIC_FLAG_INIT, 0} + +/* + Run the provided init() function exactly once, even if multiple threads + invoke once() at the same time. The state must be a once_t initialized with + ONCE_INIT. + */ +local void once(once_t *state, void (*init)(void)) { + if (!atomic_load(&state->done)) { + if (atomic_flag_test_and_set(&state->begun)) + while (!atomic_load(&state->done)) + ; + else { + init(); + atomic_store(&state->done, 1); + } + } +} + +#else /* no atomics */ + +/* Structure for once(), which must be initialized with ONCE_INIT. */ +struct once_s { + volatile int begun; + volatile int done; +}; +#define ONCE_INIT {0, 0} + +/* Test and set. Alas, not atomic, but tries to minimize the period of + vulnerability. */ +local int test_and_set(int volatile *flag) { + int was; + + was = *flag; + *flag = 1; + return was; +} + +/* Run the provided init() function once. This is not thread-safe. */ +local void once(once_t *state, void (*init)(void)) { + if (!state->done) { + if (test_and_set(&state->begun)) + while (!state->done) + ; + else { + init(); + state->done = 1; + } + } +} + +#endif + +/* State for once(). */ +local once_t made = ONCE_INIT; + /* Generate tables for a byte-wise 32-bit CRC calculation on the polynomial: x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x+1. Polynomials over GF(2) are represented in binary, one bit per coefficient, - with the lowest powers in the most significant bit. Then adding polynomials + with the lowest powers in the most significant bit. Then adding polynomials is just exclusive-or, and multiplying a polynomial by x is a right shift by - one. If we call the above polynomial p, and represent a byte as the + one. If we call the above polynomial p, and represent a byte as the polynomial q, also with the lowest power in the most significant bit (so the - byte 0xb1 is the polynomial x^7+x^3+x+1), then the CRC is (q*x^32) mod p, + byte 0xb1 is the polynomial x^7+x^3+x^2+1), then the CRC is (q*x^32) mod p, where a mod b means the remainder after dividing a by b. This calculation is done using the shift-register method of multiplying and - taking the remainder. The register is initialized to zero, and for each + taking the remainder. The register is initialized to zero, and for each incoming bit, x^32 is added mod p to the register if the bit is a one (where - x^32 mod p is p+x^32 = x^26+...+1), and the register is multiplied mod p by - x (which is shifting right by one and adding x^32 mod p if the bit shifted - out is a one). We start with the highest power (least significant bit) of - q and repeat for all eight bits of q. + x^32 mod p is p+x^32 = x^26+...+1), and the register is multiplied mod p by x + (which is shifting right by one and adding x^32 mod p if the bit shifted out + is a one). We start with the highest power (least significant bit) of q and + repeat for all eight bits of q. - The first table is simply the CRC of all possible eight bit values. This is - all the information needed to generate CRCs on data a byte at a time for all - combinations of CRC register values and incoming bytes. The remaining tables - allow for word-at-a-time CRC calculation for both big-endian and little- - endian machines, where a word is four bytes. -*/ -local void make_crc_table() -{ - z_crc_t c; - int n, k; - z_crc_t poly; /* polynomial exclusive-or pattern */ - /* terms of polynomial defining this crc (except x^32): */ - static volatile int first = 1; /* flag to limit concurrent making */ - static const unsigned char p[] = {0,1,2,4,5,7,8,10,11,12,16,22,23,26}; + The table is simply the CRC of all possible eight bit values. This is all the + information needed to generate CRCs on data a byte at a time for all + combinations of CRC register values and incoming bytes. + */ - /* See if another task is already doing this (not thread-safe, but better - than nothing -- significantly reduces duration of vulnerability in - case the advice about DYNAMIC_CRC_TABLE is ignored) */ - if (first) { - first = 0; +local void make_crc_table(void) { + unsigned i, j, n; + z_crc_t p; - /* make exclusive-or pattern from polynomial (0xedb88320UL) */ - poly = 0; - for (n = 0; n < (int)(sizeof(p)/sizeof(unsigned char)); n++) - poly |= (z_crc_t)1 << (31 - p[n]); - - /* generate a crc for every 8-bit value */ - for (n = 0; n < 256; n++) { - c = (z_crc_t)n; - for (k = 0; k < 8; k++) - c = c & 1 ? poly ^ (c >> 1) : c >> 1; - crc_table[0][n] = c; - } - -#ifdef BYFOUR - /* generate crc for each value followed by one, two, and three zeros, - and then the byte reversal of those as well as the first table */ - for (n = 0; n < 256; n++) { - c = crc_table[0][n]; - crc_table[4][n] = ZSWAP32(c); - for (k = 1; k < 4; k++) { - c = crc_table[0][c & 0xff] ^ (c >> 8); - crc_table[k][n] = c; - crc_table[k + 4][n] = ZSWAP32(c); - } - } -#endif /* BYFOUR */ - - crc_table_empty = 0; - } - else { /* not first */ - /* wait for the other guy to finish (not efficient, but rare) */ - while (crc_table_empty) - ; + /* initialize the CRC of bytes tables */ + for (i = 0; i < 256; i++) { + p = i; + for (j = 0; j < 8; j++) + p = p & 1 ? (p >> 1) ^ POLY : p >> 1; + crc_table[i] = p; +#ifdef W + crc_big_table[i] = byte_swap(p); +#endif } + /* initialize the x^2^n mod p(x) table */ + p = (z_crc_t)1 << 30; /* x^1 */ + x2n_table[0] = p; + for (n = 1; n < 32; n++) + x2n_table[n] = p = multmodp(p, p); + +#ifdef W + /* initialize the braiding tables -- needs x2n_table[] */ + braid(crc_braid_table, crc_braid_big_table, N, W); +#endif + #ifdef MAKECRCH - /* write out CRC tables to crc32.h */ { + /* + The crc32.h header file contains tables for both 32-bit and 64-bit + z_word_t's, and so requires a 64-bit type be available. In that case, + z_word_t must be defined to be 64-bits. This code then also generates + and writes out the tables for the case that z_word_t is 32 bits. + */ +#if !defined(W) || W != 8 +# error Need a 64-bit integer type in order to generate crc32.h. +#endif FILE *out; + int k, n; + z_crc_t ltl[8][256]; + z_word_t big[8][256]; out = fopen("crc32.h", "w"); if (out == NULL) return; - fprintf(out, "/* crc32.h -- tables for rapid CRC calculation\n"); - fprintf(out, " * Generated automatically by crc32.c\n */\n\n"); - fprintf(out, "local const z_crc_t FAR "); - fprintf(out, "crc_table[TBLS][256] =\n{\n {\n"); - write_table(out, crc_table[0]); -# ifdef BYFOUR - fprintf(out, "#ifdef BYFOUR\n"); - for (k = 1; k < 8; k++) { - fprintf(out, " },\n {\n"); - write_table(out, crc_table[k]); + + /* write out little-endian CRC table to crc32.h */ + fprintf(out, + "/* crc32.h -- tables for rapid CRC calculation\n" + " * Generated automatically by crc32.c\n */\n" + "\n" + "local const z_crc_t FAR crc_table[] = {\n" + " "); + write_table(out, crc_table, 256); + fprintf(out, + "};\n"); + + /* write out big-endian CRC table for 64-bit z_word_t to crc32.h */ + fprintf(out, + "\n" + "#ifdef W\n" + "\n" + "#if W == 8\n" + "\n" + "local const z_word_t FAR crc_big_table[] = {\n" + " "); + write_table64(out, crc_big_table, 256); + fprintf(out, + "};\n"); + + /* write out big-endian CRC table for 32-bit z_word_t to crc32.h */ + fprintf(out, + "\n" + "#else /* W == 4 */\n" + "\n" + "local const z_word_t FAR crc_big_table[] = {\n" + " "); + write_table32hi(out, crc_big_table, 256); + fprintf(out, + "};\n" + "\n" + "#endif\n"); + + /* write out braid tables for each value of N */ + for (n = 1; n <= 6; n++) { + fprintf(out, + "\n" + "#if N == %d\n", n); + + /* compute braid tables for this N and 64-bit word_t */ + braid(ltl, big, n, 8); + + /* write out braid tables for 64-bit z_word_t to crc32.h */ + fprintf(out, + "\n" + "#if W == 8\n" + "\n" + "local const z_crc_t FAR crc_braid_table[][256] = {\n"); + for (k = 0; k < 8; k++) { + fprintf(out, " {"); + write_table(out, ltl[k], 256); + fprintf(out, "}%s", k < 7 ? ",\n" : ""); + } + fprintf(out, + "};\n" + "\n" + "local const z_word_t FAR crc_braid_big_table[][256] = {\n"); + for (k = 0; k < 8; k++) { + fprintf(out, " {"); + write_table64(out, big[k], 256); + fprintf(out, "}%s", k < 7 ? ",\n" : ""); + } + fprintf(out, + "};\n"); + + /* compute braid tables for this N and 32-bit word_t */ + braid(ltl, big, n, 4); + + /* write out braid tables for 32-bit z_word_t to crc32.h */ + fprintf(out, + "\n" + "#else /* W == 4 */\n" + "\n" + "local const z_crc_t FAR crc_braid_table[][256] = {\n"); + for (k = 0; k < 4; k++) { + fprintf(out, " {"); + write_table(out, ltl[k], 256); + fprintf(out, "}%s", k < 3 ? ",\n" : ""); + } + fprintf(out, + "};\n" + "\n" + "local const z_word_t FAR crc_braid_big_table[][256] = {\n"); + for (k = 0; k < 4; k++) { + fprintf(out, " {"); + write_table32hi(out, big[k], 256); + fprintf(out, "}%s", k < 3 ? ",\n" : ""); + } + fprintf(out, + "};\n" + "\n" + "#endif\n" + "\n" + "#endif\n"); } - fprintf(out, "#endif\n"); -# endif /* BYFOUR */ - fprintf(out, " }\n};\n"); + fprintf(out, + "\n" + "#endif\n"); + + /* write out zeros operator table to crc32.h */ + fprintf(out, + "\n" + "local const z_crc_t FAR x2n_table[] = {\n" + " "); + write_table(out, x2n_table, 32); + fprintf(out, + "};\n"); fclose(out); } #endif /* MAKECRCH */ } #ifdef MAKECRCH -local void write_table(out, table) - FILE *out; - const z_crc_t FAR *table; -{ + +/* + Write the 32-bit values in table[0..k-1] to out, five per line in + hexadecimal separated by commas. + */ +local void write_table(FILE *out, const z_crc_t FAR *table, int k) { int n; - for (n = 0; n < 256; n++) - fprintf(out, "%s0x%08lxUL%s", n % 5 ? "" : " ", + for (n = 0; n < k; n++) + fprintf(out, "%s0x%08lx%s", n == 0 || n % 5 ? "" : " ", (unsigned long)(table[n]), - n == 255 ? "\n" : (n % 5 == 4 ? ",\n" : ", ")); + n == k - 1 ? "" : (n % 5 == 4 ? ",\n" : ", ")); } + +/* + Write the high 32-bits of each value in table[0..k-1] to out, five per line + in hexadecimal separated by commas. + */ +local void write_table32hi(FILE *out, const z_word_t FAR *table, int k) { + int n; + + for (n = 0; n < k; n++) + fprintf(out, "%s0x%08lx%s", n == 0 || n % 5 ? "" : " ", + (unsigned long)(table[n] >> 32), + n == k - 1 ? "" : (n % 5 == 4 ? ",\n" : ", ")); +} + +/* + Write the 64-bit values in table[0..k-1] to out, three per line in + hexadecimal separated by commas. This assumes that if there is a 64-bit + type, then there is also a long long integer type, and it is at least 64 + bits. If not, then the type cast and format string can be adjusted + accordingly. + */ +local void write_table64(FILE *out, const z_word_t FAR *table, int k) { + int n; + + for (n = 0; n < k; n++) + fprintf(out, "%s0x%016llx%s", n == 0 || n % 3 ? "" : " ", + (unsigned long long)(table[n]), + n == k - 1 ? "" : (n % 3 == 2 ? ",\n" : ", ")); +} + +/* Actually do the deed. */ +int main(void) { + make_crc_table(); + return 0; +} + #endif /* MAKECRCH */ -#else /* !DYNAMIC_CRC_TABLE */ -/* ======================================================================== - * Tables of CRC-32s of all single-byte values, made by make_crc_table(). +#ifdef W +/* + Generate the little and big-endian braid tables for the given n and z_word_t + size w. Each array must have room for w blocks of 256 elements. */ -#include "crc32.h" +local void braid(z_crc_t ltl[][256], z_word_t big[][256], int n, int w) { + int k; + z_crc_t i, p, q; + for (k = 0; k < w; k++) { + p = x2nmodp((n * w + 3 - k) << 3, 0); + ltl[k][0] = 0; + big[w - 1 - k][0] = 0; + for (i = 1; i < 256; i++) { + ltl[k][i] = q = multmodp(i << 24, p); + big[w - 1 - k][i] = byte_swap(q); + } + } +} +#endif + #endif /* DYNAMIC_CRC_TABLE */ /* ========================================================================= - * This function can be used by asm versions of crc32() + * This function can be used by asm versions of crc32(), and to force the + * generation of the CRC tables in a threaded application. */ -const z_crc_t FAR * ZEXPORT get_crc_table() -{ +const z_crc_t FAR * ZEXPORT get_crc_table(void) { #ifdef DYNAMIC_CRC_TABLE - if (crc_table_empty) - make_crc_table(); + once(&made, make_crc_table); #endif /* DYNAMIC_CRC_TABLE */ return (const z_crc_t FAR *)crc_table; } -/* ========================================================================= */ -#define DO1 crc = crc_table[0][((int)crc ^ (*buf++)) & 0xff] ^ (crc >> 8) -#define DO8 DO1; DO1; DO1; DO1; DO1; DO1; DO1; DO1 +/* ========================================================================= + * Use ARM machine instructions if available. This will compute the CRC about + * ten times faster than the braided calculation. This code does not check for + * the presence of the CRC instruction at run time. __ARM_FEATURE_CRC32 will + * only be defined if the compilation specifies an ARM processor architecture + * that has the instructions. For example, compiling with -march=armv8.1-a or + * -march=armv8-a+crc, or -march=native if the compile machine has the crc32 + * instructions. + */ +#ifdef ARMCRC32 -/* ========================================================================= */ -unsigned long ZEXPORT crc32_z(crc, buf, len) - unsigned long crc; - const unsigned char FAR *buf; - z_size_t len; -{ - if (buf == Z_NULL) return 0UL; +/* + Constants empirically determined to maximize speed. These values are from + measurements on a Cortex-A57. Your mileage may vary. + */ +#define Z_BATCH 3990 /* number of words in a batch */ +#define Z_BATCH_ZEROS 0xa10d3d0c /* computed from Z_BATCH = 3990 */ +#define Z_BATCH_MIN 800 /* fewest words in a final batch */ + +unsigned long ZEXPORT crc32_z(unsigned long crc, const unsigned char FAR *buf, + z_size_t len) { + z_crc_t val; + z_word_t crc1, crc2; + const z_word_t *word; + z_word_t val0, val1, val2; + z_size_t last, last2, i; + z_size_t num; + + /* Return initial CRC, if requested. */ + if (buf == Z_NULL) return 0; #ifdef DYNAMIC_CRC_TABLE - if (crc_table_empty) - make_crc_table(); + once(&made, make_crc_table); #endif /* DYNAMIC_CRC_TABLE */ -#ifdef BYFOUR - if (sizeof(void *) == sizeof(ptrdiff_t)) { - z_crc_t endian; + /* Pre-condition the CRC */ + crc = (~crc) & 0xffffffff; - endian = 1; - if (*((unsigned char *)(&endian))) - return crc32_little(crc, buf, len); - else - return crc32_big(crc, buf, len); + /* Compute the CRC up to a word boundary. */ + while (len && ((z_size_t)buf & 7) != 0) { + len--; + val = *buf++; + __asm__ volatile("crc32b %w0, %w0, %w1" : "+r"(crc) : "r"(val)); } -#endif /* BYFOUR */ - crc = crc ^ 0xffffffffUL; - while (len >= 8) { - DO8; - len -= 8; + + /* Prepare to compute the CRC on full 64-bit words word[0..num-1]. */ + word = (z_word_t const *)buf; + num = len >> 3; + len &= 7; + + /* Do three interleaved CRCs to realize the throughput of one crc32x + instruction per cycle. Each CRC is calculated on Z_BATCH words. The + three CRCs are combined into a single CRC after each set of batches. */ + while (num >= 3 * Z_BATCH) { + crc1 = 0; + crc2 = 0; + for (i = 0; i < Z_BATCH; i++) { + val0 = word[i]; + val1 = word[i + Z_BATCH]; + val2 = word[i + 2 * Z_BATCH]; + __asm__ volatile("crc32x %w0, %w0, %x1" : "+r"(crc) : "r"(val0)); + __asm__ volatile("crc32x %w0, %w0, %x1" : "+r"(crc1) : "r"(val1)); + __asm__ volatile("crc32x %w0, %w0, %x1" : "+r"(crc2) : "r"(val2)); + } + word += 3 * Z_BATCH; + num -= 3 * Z_BATCH; + crc = multmodp(Z_BATCH_ZEROS, crc) ^ crc1; + crc = multmodp(Z_BATCH_ZEROS, crc) ^ crc2; } - if (len) do { - DO1; - } while (--len); - return crc ^ 0xffffffffUL; + + /* Do one last smaller batch with the remaining words, if there are enough + to pay for the combination of CRCs. */ + last = num / 3; + if (last >= Z_BATCH_MIN) { + last2 = last << 1; + crc1 = 0; + crc2 = 0; + for (i = 0; i < last; i++) { + val0 = word[i]; + val1 = word[i + last]; + val2 = word[i + last2]; + __asm__ volatile("crc32x %w0, %w0, %x1" : "+r"(crc) : "r"(val0)); + __asm__ volatile("crc32x %w0, %w0, %x1" : "+r"(crc1) : "r"(val1)); + __asm__ volatile("crc32x %w0, %w0, %x1" : "+r"(crc2) : "r"(val2)); + } + word += 3 * last; + num -= 3 * last; + val = x2nmodp(last, 6); + crc = multmodp(val, crc) ^ crc1; + crc = multmodp(val, crc) ^ crc2; + } + + /* Compute the CRC on any remaining words. */ + for (i = 0; i < num; i++) { + val0 = word[i]; + __asm__ volatile("crc32x %w0, %w0, %x1" : "+r"(crc) : "r"(val0)); + } + word += num; + + /* Complete the CRC on any remaining bytes. */ + buf = (const unsigned char FAR *)word; + while (len) { + len--; + val = *buf++; + __asm__ volatile("crc32b %w0, %w0, %w1" : "+r"(crc) : "r"(val)); + } + + /* Return the CRC, post-conditioned. */ + return crc ^ 0xffffffff; } +#else + +#ifdef W + +/* + Return the CRC of the W bytes in the word_t data, taking the + least-significant byte of the word as the first byte of data, without any pre + or post conditioning. This is used to combine the CRCs of each braid. + */ +local z_crc_t crc_word(z_word_t data) { + int k; + for (k = 0; k < W; k++) + data = (data >> 8) ^ crc_table[data & 0xff]; + return (z_crc_t)data; +} + +local z_word_t crc_word_big(z_word_t data) { + int k; + for (k = 0; k < W; k++) + data = (data << 8) ^ + crc_big_table[(data >> ((W - 1) << 3)) & 0xff]; + return data; +} + +#endif + /* ========================================================================= */ -unsigned long ZEXPORT crc32(crc, buf, len) - unsigned long crc; - const unsigned char FAR *buf; - uInt len; -{ +unsigned long ZEXPORT crc32_z(unsigned long crc, const unsigned char FAR *buf, + z_size_t len) { + /* Return initial CRC, if requested. */ + if (buf == Z_NULL) return 0; + +#ifdef DYNAMIC_CRC_TABLE + once(&made, make_crc_table); +#endif /* DYNAMIC_CRC_TABLE */ + + /* Pre-condition the CRC */ + crc = (~crc) & 0xffffffff; + +#ifdef W + + /* If provided enough bytes, do a braided CRC calculation. */ + if (len >= N * W + W - 1) { + z_size_t blks; + z_word_t const *words; + unsigned endian; + int k; + + /* Compute the CRC up to a z_word_t boundary. */ + while (len && ((z_size_t)buf & (W - 1)) != 0) { + len--; + crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff]; + } + + /* Compute the CRC on as many N z_word_t blocks as are available. */ + blks = len / (N * W); + len -= blks * N * W; + words = (z_word_t const *)buf; + + /* Do endian check at execution time instead of compile time, since ARM + processors can change the endianness at execution time. If the + compiler knows what the endianness will be, it can optimize out the + check and the unused branch. */ + endian = 1; + if (*(unsigned char *)&endian) { + /* Little endian. */ + + z_crc_t crc0; + z_word_t word0; +#if N > 1 + z_crc_t crc1; + z_word_t word1; +#if N > 2 + z_crc_t crc2; + z_word_t word2; +#if N > 3 + z_crc_t crc3; + z_word_t word3; +#if N > 4 + z_crc_t crc4; + z_word_t word4; +#if N > 5 + z_crc_t crc5; + z_word_t word5; +#endif +#endif +#endif +#endif +#endif + + /* Initialize the CRC for each braid. */ + crc0 = crc; +#if N > 1 + crc1 = 0; +#if N > 2 + crc2 = 0; +#if N > 3 + crc3 = 0; +#if N > 4 + crc4 = 0; +#if N > 5 + crc5 = 0; +#endif +#endif +#endif +#endif +#endif + + /* + Process the first blks-1 blocks, computing the CRCs on each braid + independently. + */ + while (--blks) { + /* Load the word for each braid into registers. */ + word0 = crc0 ^ words[0]; +#if N > 1 + word1 = crc1 ^ words[1]; +#if N > 2 + word2 = crc2 ^ words[2]; +#if N > 3 + word3 = crc3 ^ words[3]; +#if N > 4 + word4 = crc4 ^ words[4]; +#if N > 5 + word5 = crc5 ^ words[5]; +#endif +#endif +#endif +#endif +#endif + words += N; + + /* Compute and update the CRC for each word. The loop should + get unrolled. */ + crc0 = crc_braid_table[0][word0 & 0xff]; +#if N > 1 + crc1 = crc_braid_table[0][word1 & 0xff]; +#if N > 2 + crc2 = crc_braid_table[0][word2 & 0xff]; +#if N > 3 + crc3 = crc_braid_table[0][word3 & 0xff]; +#if N > 4 + crc4 = crc_braid_table[0][word4 & 0xff]; +#if N > 5 + crc5 = crc_braid_table[0][word5 & 0xff]; +#endif +#endif +#endif +#endif +#endif + for (k = 1; k < W; k++) { + crc0 ^= crc_braid_table[k][(word0 >> (k << 3)) & 0xff]; +#if N > 1 + crc1 ^= crc_braid_table[k][(word1 >> (k << 3)) & 0xff]; +#if N > 2 + crc2 ^= crc_braid_table[k][(word2 >> (k << 3)) & 0xff]; +#if N > 3 + crc3 ^= crc_braid_table[k][(word3 >> (k << 3)) & 0xff]; +#if N > 4 + crc4 ^= crc_braid_table[k][(word4 >> (k << 3)) & 0xff]; +#if N > 5 + crc5 ^= crc_braid_table[k][(word5 >> (k << 3)) & 0xff]; +#endif +#endif +#endif +#endif +#endif + } + } + + /* + Process the last block, combining the CRCs of the N braids at the + same time. + */ + crc = crc_word(crc0 ^ words[0]); +#if N > 1 + crc = crc_word(crc1 ^ words[1] ^ crc); +#if N > 2 + crc = crc_word(crc2 ^ words[2] ^ crc); +#if N > 3 + crc = crc_word(crc3 ^ words[3] ^ crc); +#if N > 4 + crc = crc_word(crc4 ^ words[4] ^ crc); +#if N > 5 + crc = crc_word(crc5 ^ words[5] ^ crc); +#endif +#endif +#endif +#endif +#endif + words += N; + } + else { + /* Big endian. */ + + z_word_t crc0, word0, comb; +#if N > 1 + z_word_t crc1, word1; +#if N > 2 + z_word_t crc2, word2; +#if N > 3 + z_word_t crc3, word3; +#if N > 4 + z_word_t crc4, word4; +#if N > 5 + z_word_t crc5, word5; +#endif +#endif +#endif +#endif +#endif + + /* Initialize the CRC for each braid. */ + crc0 = byte_swap(crc); +#if N > 1 + crc1 = 0; +#if N > 2 + crc2 = 0; +#if N > 3 + crc3 = 0; +#if N > 4 + crc4 = 0; +#if N > 5 + crc5 = 0; +#endif +#endif +#endif +#endif +#endif + + /* + Process the first blks-1 blocks, computing the CRCs on each braid + independently. + */ + while (--blks) { + /* Load the word for each braid into registers. */ + word0 = crc0 ^ words[0]; +#if N > 1 + word1 = crc1 ^ words[1]; +#if N > 2 + word2 = crc2 ^ words[2]; +#if N > 3 + word3 = crc3 ^ words[3]; +#if N > 4 + word4 = crc4 ^ words[4]; +#if N > 5 + word5 = crc5 ^ words[5]; +#endif +#endif +#endif +#endif +#endif + words += N; + + /* Compute and update the CRC for each word. The loop should + get unrolled. */ + crc0 = crc_braid_big_table[0][word0 & 0xff]; +#if N > 1 + crc1 = crc_braid_big_table[0][word1 & 0xff]; +#if N > 2 + crc2 = crc_braid_big_table[0][word2 & 0xff]; +#if N > 3 + crc3 = crc_braid_big_table[0][word3 & 0xff]; +#if N > 4 + crc4 = crc_braid_big_table[0][word4 & 0xff]; +#if N > 5 + crc5 = crc_braid_big_table[0][word5 & 0xff]; +#endif +#endif +#endif +#endif +#endif + for (k = 1; k < W; k++) { + crc0 ^= crc_braid_big_table[k][(word0 >> (k << 3)) & 0xff]; +#if N > 1 + crc1 ^= crc_braid_big_table[k][(word1 >> (k << 3)) & 0xff]; +#if N > 2 + crc2 ^= crc_braid_big_table[k][(word2 >> (k << 3)) & 0xff]; +#if N > 3 + crc3 ^= crc_braid_big_table[k][(word3 >> (k << 3)) & 0xff]; +#if N > 4 + crc4 ^= crc_braid_big_table[k][(word4 >> (k << 3)) & 0xff]; +#if N > 5 + crc5 ^= crc_braid_big_table[k][(word5 >> (k << 3)) & 0xff]; +#endif +#endif +#endif +#endif +#endif + } + } + + /* + Process the last block, combining the CRCs of the N braids at the + same time. + */ + comb = crc_word_big(crc0 ^ words[0]); +#if N > 1 + comb = crc_word_big(crc1 ^ words[1] ^ comb); +#if N > 2 + comb = crc_word_big(crc2 ^ words[2] ^ comb); +#if N > 3 + comb = crc_word_big(crc3 ^ words[3] ^ comb); +#if N > 4 + comb = crc_word_big(crc4 ^ words[4] ^ comb); +#if N > 5 + comb = crc_word_big(crc5 ^ words[5] ^ comb); +#endif +#endif +#endif +#endif +#endif + words += N; + crc = byte_swap(comb); + } + + /* + Update the pointer to the remaining bytes to process. + */ + buf = (unsigned char const *)words; + } + +#endif /* W */ + + /* Complete the computation of the CRC on any remaining bytes. */ + while (len >= 8) { + len -= 8; + crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff]; + crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff]; + crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff]; + crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff]; + crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff]; + crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff]; + crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff]; + crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff]; + } + while (len) { + len--; + crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff]; + } + + /* Return the CRC, post-conditioned. */ + return crc ^ 0xffffffff; +} + +#endif + +/* ========================================================================= */ +unsigned long ZEXPORT crc32(unsigned long crc, const unsigned char FAR *buf, + uInt len) { return crc32_z(crc, buf, len); } -#ifdef BYFOUR - -/* - This BYFOUR code accesses the passed unsigned char * buffer with a 32-bit - integer pointer type. This violates the strict aliasing rule, where a - compiler can assume, for optimization purposes, that two pointers to - fundamentally different types won't ever point to the same memory. This can - manifest as a problem only if one of the pointers is written to. This code - only reads from those pointers. So long as this code remains isolated in - this compilation unit, there won't be a problem. For this reason, this code - should not be copied and pasted into a compilation unit in which other code - writes to the buffer that is passed to these routines. - */ - /* ========================================================================= */ -#define DOLIT4 c ^= *buf4++; \ - c = crc_table[3][c & 0xff] ^ crc_table[2][(c >> 8) & 0xff] ^ \ - crc_table[1][(c >> 16) & 0xff] ^ crc_table[0][c >> 24] -#define DOLIT32 DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4 - -/* ========================================================================= */ -local unsigned long crc32_little(crc, buf, len) - unsigned long crc; - const unsigned char FAR *buf; - z_size_t len; -{ - register z_crc_t c; - register const z_crc_t FAR *buf4; - - c = (z_crc_t)crc; - c = ~c; - while (len && ((ptrdiff_t)buf & 3)) { - c = crc_table[0][(c ^ *buf++) & 0xff] ^ (c >> 8); - len--; - } - - buf4 = (const z_crc_t FAR *)(const void FAR *)buf; - while (len >= 32) { - DOLIT32; - len -= 32; - } - while (len >= 4) { - DOLIT4; - len -= 4; - } - buf = (const unsigned char FAR *)buf4; - - if (len) do { - c = crc_table[0][(c ^ *buf++) & 0xff] ^ (c >> 8); - } while (--len); - c = ~c; - return (unsigned long)c; +uLong ZEXPORT crc32_combine64(uLong crc1, uLong crc2, z_off64_t len2) { +#ifdef DYNAMIC_CRC_TABLE + once(&made, make_crc_table); +#endif /* DYNAMIC_CRC_TABLE */ + return multmodp(x2nmodp(len2, 3), crc1) ^ (crc2 & 0xffffffff); } /* ========================================================================= */ -#define DOBIG4 c ^= *buf4++; \ - c = crc_table[4][c & 0xff] ^ crc_table[5][(c >> 8) & 0xff] ^ \ - crc_table[6][(c >> 16) & 0xff] ^ crc_table[7][c >> 24] -#define DOBIG32 DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4 - -/* ========================================================================= */ -local unsigned long crc32_big(crc, buf, len) - unsigned long crc; - const unsigned char FAR *buf; - z_size_t len; -{ - register z_crc_t c; - register const z_crc_t FAR *buf4; - - c = ZSWAP32((z_crc_t)crc); - c = ~c; - while (len && ((ptrdiff_t)buf & 3)) { - c = crc_table[4][(c >> 24) ^ *buf++] ^ (c << 8); - len--; - } - - buf4 = (const z_crc_t FAR *)(const void FAR *)buf; - while (len >= 32) { - DOBIG32; - len -= 32; - } - while (len >= 4) { - DOBIG4; - len -= 4; - } - buf = (const unsigned char FAR *)buf4; - - if (len) do { - c = crc_table[4][(c >> 24) ^ *buf++] ^ (c << 8); - } while (--len); - c = ~c; - return (unsigned long)(ZSWAP32(c)); -} - -#endif /* BYFOUR */ - -#define GF2_DIM 32 /* dimension of GF(2) vectors (length of CRC) */ - -/* ========================================================================= */ -local unsigned long gf2_matrix_times(mat, vec) - unsigned long *mat; - unsigned long vec; -{ - unsigned long sum; - - sum = 0; - while (vec) { - if (vec & 1) - sum ^= *mat; - vec >>= 1; - mat++; - } - return sum; +uLong ZEXPORT crc32_combine(uLong crc1, uLong crc2, z_off_t len2) { + return crc32_combine64(crc1, crc2, (z_off64_t)len2); } /* ========================================================================= */ -local void gf2_matrix_square(square, mat) - unsigned long *square; - unsigned long *mat; -{ - int n; - - for (n = 0; n < GF2_DIM; n++) - square[n] = gf2_matrix_times(mat, mat[n]); +uLong ZEXPORT crc32_combine_gen64(z_off64_t len2) { +#ifdef DYNAMIC_CRC_TABLE + once(&made, make_crc_table); +#endif /* DYNAMIC_CRC_TABLE */ + return x2nmodp(len2, 3); } /* ========================================================================= */ -local uLong crc32_combine_(crc1, crc2, len2) - uLong crc1; - uLong crc2; - z_off64_t len2; -{ - int n; - unsigned long row; - unsigned long even[GF2_DIM]; /* even-power-of-two zeros operator */ - unsigned long odd[GF2_DIM]; /* odd-power-of-two zeros operator */ - - /* degenerate case (also disallow negative lengths) */ - if (len2 <= 0) - return crc1; - - /* put operator for one zero bit in odd */ - odd[0] = 0xedb88320UL; /* CRC-32 polynomial */ - row = 1; - for (n = 1; n < GF2_DIM; n++) { - odd[n] = row; - row <<= 1; - } - - /* put operator for two zero bits in even */ - gf2_matrix_square(even, odd); - - /* put operator for four zero bits in odd */ - gf2_matrix_square(odd, even); - - /* apply len2 zeros to crc1 (first square will put the operator for one - zero byte, eight zero bits, in even) */ - do { - /* apply zeros operator for this bit of len2 */ - gf2_matrix_square(even, odd); - if (len2 & 1) - crc1 = gf2_matrix_times(even, crc1); - len2 >>= 1; - - /* if no more bits set, then done */ - if (len2 == 0) - break; - - /* another iteration of the loop with odd and even swapped */ - gf2_matrix_square(odd, even); - if (len2 & 1) - crc1 = gf2_matrix_times(odd, crc1); - len2 >>= 1; - - /* if no more bits set, then done */ - } while (len2 != 0); - - /* return combined crc */ - crc1 ^= crc2; - return crc1; +uLong ZEXPORT crc32_combine_gen(z_off_t len2) { + return crc32_combine_gen64((z_off64_t)len2); } /* ========================================================================= */ -uLong ZEXPORT crc32_combine(crc1, crc2, len2) - uLong crc1; - uLong crc2; - z_off_t len2; -{ - return crc32_combine_(crc1, crc2, len2); -} - -uLong ZEXPORT crc32_combine64(crc1, crc2, len2) - uLong crc1; - uLong crc2; - z_off64_t len2; -{ - return crc32_combine_(crc1, crc2, len2); +uLong ZEXPORT crc32_combine_op(uLong crc1, uLong crc2, uLong op) { + return multmodp(op, crc1) ^ (crc2 & 0xffffffff); } diff --git a/deps/zlib/crc32.h b/deps/zlib/crc32.h index 9e0c77810..137df68d6 100644 --- a/deps/zlib/crc32.h +++ b/deps/zlib/crc32.h @@ -2,440 +2,9445 @@ * Generated automatically by crc32.c */ -local const z_crc_t FAR crc_table[TBLS][256] = -{ - { - 0x00000000UL, 0x77073096UL, 0xee0e612cUL, 0x990951baUL, 0x076dc419UL, - 0x706af48fUL, 0xe963a535UL, 0x9e6495a3UL, 0x0edb8832UL, 0x79dcb8a4UL, - 0xe0d5e91eUL, 0x97d2d988UL, 0x09b64c2bUL, 0x7eb17cbdUL, 0xe7b82d07UL, - 0x90bf1d91UL, 0x1db71064UL, 0x6ab020f2UL, 0xf3b97148UL, 0x84be41deUL, - 0x1adad47dUL, 0x6ddde4ebUL, 0xf4d4b551UL, 0x83d385c7UL, 0x136c9856UL, - 0x646ba8c0UL, 0xfd62f97aUL, 0x8a65c9ecUL, 0x14015c4fUL, 0x63066cd9UL, - 0xfa0f3d63UL, 0x8d080df5UL, 0x3b6e20c8UL, 0x4c69105eUL, 0xd56041e4UL, - 0xa2677172UL, 0x3c03e4d1UL, 0x4b04d447UL, 0xd20d85fdUL, 0xa50ab56bUL, - 0x35b5a8faUL, 0x42b2986cUL, 0xdbbbc9d6UL, 0xacbcf940UL, 0x32d86ce3UL, - 0x45df5c75UL, 0xdcd60dcfUL, 0xabd13d59UL, 0x26d930acUL, 0x51de003aUL, - 0xc8d75180UL, 0xbfd06116UL, 0x21b4f4b5UL, 0x56b3c423UL, 0xcfba9599UL, - 0xb8bda50fUL, 0x2802b89eUL, 0x5f058808UL, 0xc60cd9b2UL, 0xb10be924UL, - 0x2f6f7c87UL, 0x58684c11UL, 0xc1611dabUL, 0xb6662d3dUL, 0x76dc4190UL, - 0x01db7106UL, 0x98d220bcUL, 0xefd5102aUL, 0x71b18589UL, 0x06b6b51fUL, - 0x9fbfe4a5UL, 0xe8b8d433UL, 0x7807c9a2UL, 0x0f00f934UL, 0x9609a88eUL, - 0xe10e9818UL, 0x7f6a0dbbUL, 0x086d3d2dUL, 0x91646c97UL, 0xe6635c01UL, - 0x6b6b51f4UL, 0x1c6c6162UL, 0x856530d8UL, 0xf262004eUL, 0x6c0695edUL, - 0x1b01a57bUL, 0x8208f4c1UL, 0xf50fc457UL, 0x65b0d9c6UL, 0x12b7e950UL, - 0x8bbeb8eaUL, 0xfcb9887cUL, 0x62dd1ddfUL, 0x15da2d49UL, 0x8cd37cf3UL, - 0xfbd44c65UL, 0x4db26158UL, 0x3ab551ceUL, 0xa3bc0074UL, 0xd4bb30e2UL, - 0x4adfa541UL, 0x3dd895d7UL, 0xa4d1c46dUL, 0xd3d6f4fbUL, 0x4369e96aUL, - 0x346ed9fcUL, 0xad678846UL, 0xda60b8d0UL, 0x44042d73UL, 0x33031de5UL, - 0xaa0a4c5fUL, 0xdd0d7cc9UL, 0x5005713cUL, 0x270241aaUL, 0xbe0b1010UL, - 0xc90c2086UL, 0x5768b525UL, 0x206f85b3UL, 0xb966d409UL, 0xce61e49fUL, - 0x5edef90eUL, 0x29d9c998UL, 0xb0d09822UL, 0xc7d7a8b4UL, 0x59b33d17UL, - 0x2eb40d81UL, 0xb7bd5c3bUL, 0xc0ba6cadUL, 0xedb88320UL, 0x9abfb3b6UL, - 0x03b6e20cUL, 0x74b1d29aUL, 0xead54739UL, 0x9dd277afUL, 0x04db2615UL, - 0x73dc1683UL, 0xe3630b12UL, 0x94643b84UL, 0x0d6d6a3eUL, 0x7a6a5aa8UL, - 0xe40ecf0bUL, 0x9309ff9dUL, 0x0a00ae27UL, 0x7d079eb1UL, 0xf00f9344UL, - 0x8708a3d2UL, 0x1e01f268UL, 0x6906c2feUL, 0xf762575dUL, 0x806567cbUL, - 0x196c3671UL, 0x6e6b06e7UL, 0xfed41b76UL, 0x89d32be0UL, 0x10da7a5aUL, - 0x67dd4accUL, 0xf9b9df6fUL, 0x8ebeeff9UL, 0x17b7be43UL, 0x60b08ed5UL, - 0xd6d6a3e8UL, 0xa1d1937eUL, 0x38d8c2c4UL, 0x4fdff252UL, 0xd1bb67f1UL, - 0xa6bc5767UL, 0x3fb506ddUL, 0x48b2364bUL, 0xd80d2bdaUL, 0xaf0a1b4cUL, - 0x36034af6UL, 0x41047a60UL, 0xdf60efc3UL, 0xa867df55UL, 0x316e8eefUL, - 0x4669be79UL, 0xcb61b38cUL, 0xbc66831aUL, 0x256fd2a0UL, 0x5268e236UL, - 0xcc0c7795UL, 0xbb0b4703UL, 0x220216b9UL, 0x5505262fUL, 0xc5ba3bbeUL, - 0xb2bd0b28UL, 0x2bb45a92UL, 0x5cb36a04UL, 0xc2d7ffa7UL, 0xb5d0cf31UL, - 0x2cd99e8bUL, 0x5bdeae1dUL, 0x9b64c2b0UL, 0xec63f226UL, 0x756aa39cUL, - 0x026d930aUL, 0x9c0906a9UL, 0xeb0e363fUL, 0x72076785UL, 0x05005713UL, - 0x95bf4a82UL, 0xe2b87a14UL, 0x7bb12baeUL, 0x0cb61b38UL, 0x92d28e9bUL, - 0xe5d5be0dUL, 0x7cdcefb7UL, 0x0bdbdf21UL, 0x86d3d2d4UL, 0xf1d4e242UL, - 0x68ddb3f8UL, 0x1fda836eUL, 0x81be16cdUL, 0xf6b9265bUL, 0x6fb077e1UL, - 0x18b74777UL, 0x88085ae6UL, 0xff0f6a70UL, 0x66063bcaUL, 0x11010b5cUL, - 0x8f659effUL, 0xf862ae69UL, 0x616bffd3UL, 0x166ccf45UL, 0xa00ae278UL, - 0xd70dd2eeUL, 0x4e048354UL, 0x3903b3c2UL, 0xa7672661UL, 0xd06016f7UL, - 0x4969474dUL, 0x3e6e77dbUL, 0xaed16a4aUL, 0xd9d65adcUL, 0x40df0b66UL, - 0x37d83bf0UL, 0xa9bcae53UL, 0xdebb9ec5UL, 0x47b2cf7fUL, 0x30b5ffe9UL, - 0xbdbdf21cUL, 0xcabac28aUL, 0x53b39330UL, 0x24b4a3a6UL, 0xbad03605UL, - 0xcdd70693UL, 0x54de5729UL, 0x23d967bfUL, 0xb3667a2eUL, 0xc4614ab8UL, - 0x5d681b02UL, 0x2a6f2b94UL, 0xb40bbe37UL, 0xc30c8ea1UL, 0x5a05df1bUL, - 0x2d02ef8dUL -#ifdef BYFOUR - }, - { - 0x00000000UL, 0x191b3141UL, 0x32366282UL, 0x2b2d53c3UL, 0x646cc504UL, - 0x7d77f445UL, 0x565aa786UL, 0x4f4196c7UL, 0xc8d98a08UL, 0xd1c2bb49UL, - 0xfaefe88aUL, 0xe3f4d9cbUL, 0xacb54f0cUL, 0xb5ae7e4dUL, 0x9e832d8eUL, - 0x87981ccfUL, 0x4ac21251UL, 0x53d92310UL, 0x78f470d3UL, 0x61ef4192UL, - 0x2eaed755UL, 0x37b5e614UL, 0x1c98b5d7UL, 0x05838496UL, 0x821b9859UL, - 0x9b00a918UL, 0xb02dfadbUL, 0xa936cb9aUL, 0xe6775d5dUL, 0xff6c6c1cUL, - 0xd4413fdfUL, 0xcd5a0e9eUL, 0x958424a2UL, 0x8c9f15e3UL, 0xa7b24620UL, - 0xbea97761UL, 0xf1e8e1a6UL, 0xe8f3d0e7UL, 0xc3de8324UL, 0xdac5b265UL, - 0x5d5daeaaUL, 0x44469febUL, 0x6f6bcc28UL, 0x7670fd69UL, 0x39316baeUL, - 0x202a5aefUL, 0x0b07092cUL, 0x121c386dUL, 0xdf4636f3UL, 0xc65d07b2UL, - 0xed705471UL, 0xf46b6530UL, 0xbb2af3f7UL, 0xa231c2b6UL, 0x891c9175UL, - 0x9007a034UL, 0x179fbcfbUL, 0x0e848dbaUL, 0x25a9de79UL, 0x3cb2ef38UL, - 0x73f379ffUL, 0x6ae848beUL, 0x41c51b7dUL, 0x58de2a3cUL, 0xf0794f05UL, - 0xe9627e44UL, 0xc24f2d87UL, 0xdb541cc6UL, 0x94158a01UL, 0x8d0ebb40UL, - 0xa623e883UL, 0xbf38d9c2UL, 0x38a0c50dUL, 0x21bbf44cUL, 0x0a96a78fUL, - 0x138d96ceUL, 0x5ccc0009UL, 0x45d73148UL, 0x6efa628bUL, 0x77e153caUL, - 0xbabb5d54UL, 0xa3a06c15UL, 0x888d3fd6UL, 0x91960e97UL, 0xded79850UL, - 0xc7cca911UL, 0xece1fad2UL, 0xf5facb93UL, 0x7262d75cUL, 0x6b79e61dUL, - 0x4054b5deUL, 0x594f849fUL, 0x160e1258UL, 0x0f152319UL, 0x243870daUL, - 0x3d23419bUL, 0x65fd6ba7UL, 0x7ce65ae6UL, 0x57cb0925UL, 0x4ed03864UL, - 0x0191aea3UL, 0x188a9fe2UL, 0x33a7cc21UL, 0x2abcfd60UL, 0xad24e1afUL, - 0xb43fd0eeUL, 0x9f12832dUL, 0x8609b26cUL, 0xc94824abUL, 0xd05315eaUL, - 0xfb7e4629UL, 0xe2657768UL, 0x2f3f79f6UL, 0x362448b7UL, 0x1d091b74UL, - 0x04122a35UL, 0x4b53bcf2UL, 0x52488db3UL, 0x7965de70UL, 0x607eef31UL, - 0xe7e6f3feUL, 0xfefdc2bfUL, 0xd5d0917cUL, 0xcccba03dUL, 0x838a36faUL, - 0x9a9107bbUL, 0xb1bc5478UL, 0xa8a76539UL, 0x3b83984bUL, 0x2298a90aUL, - 0x09b5fac9UL, 0x10aecb88UL, 0x5fef5d4fUL, 0x46f46c0eUL, 0x6dd93fcdUL, - 0x74c20e8cUL, 0xf35a1243UL, 0xea412302UL, 0xc16c70c1UL, 0xd8774180UL, - 0x9736d747UL, 0x8e2de606UL, 0xa500b5c5UL, 0xbc1b8484UL, 0x71418a1aUL, - 0x685abb5bUL, 0x4377e898UL, 0x5a6cd9d9UL, 0x152d4f1eUL, 0x0c367e5fUL, - 0x271b2d9cUL, 0x3e001cddUL, 0xb9980012UL, 0xa0833153UL, 0x8bae6290UL, - 0x92b553d1UL, 0xddf4c516UL, 0xc4eff457UL, 0xefc2a794UL, 0xf6d996d5UL, - 0xae07bce9UL, 0xb71c8da8UL, 0x9c31de6bUL, 0x852aef2aUL, 0xca6b79edUL, - 0xd37048acUL, 0xf85d1b6fUL, 0xe1462a2eUL, 0x66de36e1UL, 0x7fc507a0UL, - 0x54e85463UL, 0x4df36522UL, 0x02b2f3e5UL, 0x1ba9c2a4UL, 0x30849167UL, - 0x299fa026UL, 0xe4c5aeb8UL, 0xfdde9ff9UL, 0xd6f3cc3aUL, 0xcfe8fd7bUL, - 0x80a96bbcUL, 0x99b25afdUL, 0xb29f093eUL, 0xab84387fUL, 0x2c1c24b0UL, - 0x350715f1UL, 0x1e2a4632UL, 0x07317773UL, 0x4870e1b4UL, 0x516bd0f5UL, - 0x7a468336UL, 0x635db277UL, 0xcbfad74eUL, 0xd2e1e60fUL, 0xf9ccb5ccUL, - 0xe0d7848dUL, 0xaf96124aUL, 0xb68d230bUL, 0x9da070c8UL, 0x84bb4189UL, - 0x03235d46UL, 0x1a386c07UL, 0x31153fc4UL, 0x280e0e85UL, 0x674f9842UL, - 0x7e54a903UL, 0x5579fac0UL, 0x4c62cb81UL, 0x8138c51fUL, 0x9823f45eUL, - 0xb30ea79dUL, 0xaa1596dcUL, 0xe554001bUL, 0xfc4f315aUL, 0xd7626299UL, - 0xce7953d8UL, 0x49e14f17UL, 0x50fa7e56UL, 0x7bd72d95UL, 0x62cc1cd4UL, - 0x2d8d8a13UL, 0x3496bb52UL, 0x1fbbe891UL, 0x06a0d9d0UL, 0x5e7ef3ecUL, - 0x4765c2adUL, 0x6c48916eUL, 0x7553a02fUL, 0x3a1236e8UL, 0x230907a9UL, - 0x0824546aUL, 0x113f652bUL, 0x96a779e4UL, 0x8fbc48a5UL, 0xa4911b66UL, - 0xbd8a2a27UL, 0xf2cbbce0UL, 0xebd08da1UL, 0xc0fdde62UL, 0xd9e6ef23UL, - 0x14bce1bdUL, 0x0da7d0fcUL, 0x268a833fUL, 0x3f91b27eUL, 0x70d024b9UL, - 0x69cb15f8UL, 0x42e6463bUL, 0x5bfd777aUL, 0xdc656bb5UL, 0xc57e5af4UL, - 0xee530937UL, 0xf7483876UL, 0xb809aeb1UL, 0xa1129ff0UL, 0x8a3fcc33UL, - 0x9324fd72UL - }, - { - 0x00000000UL, 0x01c26a37UL, 0x0384d46eUL, 0x0246be59UL, 0x0709a8dcUL, - 0x06cbc2ebUL, 0x048d7cb2UL, 0x054f1685UL, 0x0e1351b8UL, 0x0fd13b8fUL, - 0x0d9785d6UL, 0x0c55efe1UL, 0x091af964UL, 0x08d89353UL, 0x0a9e2d0aUL, - 0x0b5c473dUL, 0x1c26a370UL, 0x1de4c947UL, 0x1fa2771eUL, 0x1e601d29UL, - 0x1b2f0bacUL, 0x1aed619bUL, 0x18abdfc2UL, 0x1969b5f5UL, 0x1235f2c8UL, - 0x13f798ffUL, 0x11b126a6UL, 0x10734c91UL, 0x153c5a14UL, 0x14fe3023UL, - 0x16b88e7aUL, 0x177ae44dUL, 0x384d46e0UL, 0x398f2cd7UL, 0x3bc9928eUL, - 0x3a0bf8b9UL, 0x3f44ee3cUL, 0x3e86840bUL, 0x3cc03a52UL, 0x3d025065UL, - 0x365e1758UL, 0x379c7d6fUL, 0x35dac336UL, 0x3418a901UL, 0x3157bf84UL, - 0x3095d5b3UL, 0x32d36beaUL, 0x331101ddUL, 0x246be590UL, 0x25a98fa7UL, - 0x27ef31feUL, 0x262d5bc9UL, 0x23624d4cUL, 0x22a0277bUL, 0x20e69922UL, - 0x2124f315UL, 0x2a78b428UL, 0x2bbade1fUL, 0x29fc6046UL, 0x283e0a71UL, - 0x2d711cf4UL, 0x2cb376c3UL, 0x2ef5c89aUL, 0x2f37a2adUL, 0x709a8dc0UL, - 0x7158e7f7UL, 0x731e59aeUL, 0x72dc3399UL, 0x7793251cUL, 0x76514f2bUL, - 0x7417f172UL, 0x75d59b45UL, 0x7e89dc78UL, 0x7f4bb64fUL, 0x7d0d0816UL, - 0x7ccf6221UL, 0x798074a4UL, 0x78421e93UL, 0x7a04a0caUL, 0x7bc6cafdUL, - 0x6cbc2eb0UL, 0x6d7e4487UL, 0x6f38fadeUL, 0x6efa90e9UL, 0x6bb5866cUL, - 0x6a77ec5bUL, 0x68315202UL, 0x69f33835UL, 0x62af7f08UL, 0x636d153fUL, - 0x612bab66UL, 0x60e9c151UL, 0x65a6d7d4UL, 0x6464bde3UL, 0x662203baUL, - 0x67e0698dUL, 0x48d7cb20UL, 0x4915a117UL, 0x4b531f4eUL, 0x4a917579UL, - 0x4fde63fcUL, 0x4e1c09cbUL, 0x4c5ab792UL, 0x4d98dda5UL, 0x46c49a98UL, - 0x4706f0afUL, 0x45404ef6UL, 0x448224c1UL, 0x41cd3244UL, 0x400f5873UL, - 0x4249e62aUL, 0x438b8c1dUL, 0x54f16850UL, 0x55330267UL, 0x5775bc3eUL, - 0x56b7d609UL, 0x53f8c08cUL, 0x523aaabbUL, 0x507c14e2UL, 0x51be7ed5UL, - 0x5ae239e8UL, 0x5b2053dfUL, 0x5966ed86UL, 0x58a487b1UL, 0x5deb9134UL, - 0x5c29fb03UL, 0x5e6f455aUL, 0x5fad2f6dUL, 0xe1351b80UL, 0xe0f771b7UL, - 0xe2b1cfeeUL, 0xe373a5d9UL, 0xe63cb35cUL, 0xe7fed96bUL, 0xe5b86732UL, - 0xe47a0d05UL, 0xef264a38UL, 0xeee4200fUL, 0xeca29e56UL, 0xed60f461UL, - 0xe82fe2e4UL, 0xe9ed88d3UL, 0xebab368aUL, 0xea695cbdUL, 0xfd13b8f0UL, - 0xfcd1d2c7UL, 0xfe976c9eUL, 0xff5506a9UL, 0xfa1a102cUL, 0xfbd87a1bUL, - 0xf99ec442UL, 0xf85cae75UL, 0xf300e948UL, 0xf2c2837fUL, 0xf0843d26UL, - 0xf1465711UL, 0xf4094194UL, 0xf5cb2ba3UL, 0xf78d95faUL, 0xf64fffcdUL, - 0xd9785d60UL, 0xd8ba3757UL, 0xdafc890eUL, 0xdb3ee339UL, 0xde71f5bcUL, - 0xdfb39f8bUL, 0xddf521d2UL, 0xdc374be5UL, 0xd76b0cd8UL, 0xd6a966efUL, - 0xd4efd8b6UL, 0xd52db281UL, 0xd062a404UL, 0xd1a0ce33UL, 0xd3e6706aUL, - 0xd2241a5dUL, 0xc55efe10UL, 0xc49c9427UL, 0xc6da2a7eUL, 0xc7184049UL, - 0xc25756ccUL, 0xc3953cfbUL, 0xc1d382a2UL, 0xc011e895UL, 0xcb4dafa8UL, - 0xca8fc59fUL, 0xc8c97bc6UL, 0xc90b11f1UL, 0xcc440774UL, 0xcd866d43UL, - 0xcfc0d31aUL, 0xce02b92dUL, 0x91af9640UL, 0x906dfc77UL, 0x922b422eUL, - 0x93e92819UL, 0x96a63e9cUL, 0x976454abUL, 0x9522eaf2UL, 0x94e080c5UL, - 0x9fbcc7f8UL, 0x9e7eadcfUL, 0x9c381396UL, 0x9dfa79a1UL, 0x98b56f24UL, - 0x99770513UL, 0x9b31bb4aUL, 0x9af3d17dUL, 0x8d893530UL, 0x8c4b5f07UL, - 0x8e0de15eUL, 0x8fcf8b69UL, 0x8a809decUL, 0x8b42f7dbUL, 0x89044982UL, - 0x88c623b5UL, 0x839a6488UL, 0x82580ebfUL, 0x801eb0e6UL, 0x81dcdad1UL, - 0x8493cc54UL, 0x8551a663UL, 0x8717183aUL, 0x86d5720dUL, 0xa9e2d0a0UL, - 0xa820ba97UL, 0xaa6604ceUL, 0xaba46ef9UL, 0xaeeb787cUL, 0xaf29124bUL, - 0xad6fac12UL, 0xacadc625UL, 0xa7f18118UL, 0xa633eb2fUL, 0xa4755576UL, - 0xa5b73f41UL, 0xa0f829c4UL, 0xa13a43f3UL, 0xa37cfdaaUL, 0xa2be979dUL, - 0xb5c473d0UL, 0xb40619e7UL, 0xb640a7beUL, 0xb782cd89UL, 0xb2cddb0cUL, - 0xb30fb13bUL, 0xb1490f62UL, 0xb08b6555UL, 0xbbd72268UL, 0xba15485fUL, - 0xb853f606UL, 0xb9919c31UL, 0xbcde8ab4UL, 0xbd1ce083UL, 0xbf5a5edaUL, - 0xbe9834edUL - }, - { - 0x00000000UL, 0xb8bc6765UL, 0xaa09c88bUL, 0x12b5afeeUL, 0x8f629757UL, - 0x37def032UL, 0x256b5fdcUL, 0x9dd738b9UL, 0xc5b428efUL, 0x7d084f8aUL, - 0x6fbde064UL, 0xd7018701UL, 0x4ad6bfb8UL, 0xf26ad8ddUL, 0xe0df7733UL, - 0x58631056UL, 0x5019579fUL, 0xe8a530faUL, 0xfa109f14UL, 0x42acf871UL, - 0xdf7bc0c8UL, 0x67c7a7adUL, 0x75720843UL, 0xcdce6f26UL, 0x95ad7f70UL, - 0x2d111815UL, 0x3fa4b7fbUL, 0x8718d09eUL, 0x1acfe827UL, 0xa2738f42UL, - 0xb0c620acUL, 0x087a47c9UL, 0xa032af3eUL, 0x188ec85bUL, 0x0a3b67b5UL, - 0xb28700d0UL, 0x2f503869UL, 0x97ec5f0cUL, 0x8559f0e2UL, 0x3de59787UL, - 0x658687d1UL, 0xdd3ae0b4UL, 0xcf8f4f5aUL, 0x7733283fUL, 0xeae41086UL, - 0x525877e3UL, 0x40edd80dUL, 0xf851bf68UL, 0xf02bf8a1UL, 0x48979fc4UL, - 0x5a22302aUL, 0xe29e574fUL, 0x7f496ff6UL, 0xc7f50893UL, 0xd540a77dUL, - 0x6dfcc018UL, 0x359fd04eUL, 0x8d23b72bUL, 0x9f9618c5UL, 0x272a7fa0UL, - 0xbafd4719UL, 0x0241207cUL, 0x10f48f92UL, 0xa848e8f7UL, 0x9b14583dUL, - 0x23a83f58UL, 0x311d90b6UL, 0x89a1f7d3UL, 0x1476cf6aUL, 0xaccaa80fUL, - 0xbe7f07e1UL, 0x06c36084UL, 0x5ea070d2UL, 0xe61c17b7UL, 0xf4a9b859UL, - 0x4c15df3cUL, 0xd1c2e785UL, 0x697e80e0UL, 0x7bcb2f0eUL, 0xc377486bUL, - 0xcb0d0fa2UL, 0x73b168c7UL, 0x6104c729UL, 0xd9b8a04cUL, 0x446f98f5UL, - 0xfcd3ff90UL, 0xee66507eUL, 0x56da371bUL, 0x0eb9274dUL, 0xb6054028UL, - 0xa4b0efc6UL, 0x1c0c88a3UL, 0x81dbb01aUL, 0x3967d77fUL, 0x2bd27891UL, - 0x936e1ff4UL, 0x3b26f703UL, 0x839a9066UL, 0x912f3f88UL, 0x299358edUL, - 0xb4446054UL, 0x0cf80731UL, 0x1e4da8dfUL, 0xa6f1cfbaUL, 0xfe92dfecUL, - 0x462eb889UL, 0x549b1767UL, 0xec277002UL, 0x71f048bbUL, 0xc94c2fdeUL, - 0xdbf98030UL, 0x6345e755UL, 0x6b3fa09cUL, 0xd383c7f9UL, 0xc1366817UL, - 0x798a0f72UL, 0xe45d37cbUL, 0x5ce150aeUL, 0x4e54ff40UL, 0xf6e89825UL, - 0xae8b8873UL, 0x1637ef16UL, 0x048240f8UL, 0xbc3e279dUL, 0x21e91f24UL, - 0x99557841UL, 0x8be0d7afUL, 0x335cb0caUL, 0xed59b63bUL, 0x55e5d15eUL, - 0x47507eb0UL, 0xffec19d5UL, 0x623b216cUL, 0xda874609UL, 0xc832e9e7UL, - 0x708e8e82UL, 0x28ed9ed4UL, 0x9051f9b1UL, 0x82e4565fUL, 0x3a58313aUL, - 0xa78f0983UL, 0x1f336ee6UL, 0x0d86c108UL, 0xb53aa66dUL, 0xbd40e1a4UL, - 0x05fc86c1UL, 0x1749292fUL, 0xaff54e4aUL, 0x322276f3UL, 0x8a9e1196UL, - 0x982bbe78UL, 0x2097d91dUL, 0x78f4c94bUL, 0xc048ae2eUL, 0xd2fd01c0UL, - 0x6a4166a5UL, 0xf7965e1cUL, 0x4f2a3979UL, 0x5d9f9697UL, 0xe523f1f2UL, - 0x4d6b1905UL, 0xf5d77e60UL, 0xe762d18eUL, 0x5fdeb6ebUL, 0xc2098e52UL, - 0x7ab5e937UL, 0x680046d9UL, 0xd0bc21bcUL, 0x88df31eaUL, 0x3063568fUL, - 0x22d6f961UL, 0x9a6a9e04UL, 0x07bda6bdUL, 0xbf01c1d8UL, 0xadb46e36UL, - 0x15080953UL, 0x1d724e9aUL, 0xa5ce29ffUL, 0xb77b8611UL, 0x0fc7e174UL, - 0x9210d9cdUL, 0x2aacbea8UL, 0x38191146UL, 0x80a57623UL, 0xd8c66675UL, - 0x607a0110UL, 0x72cfaefeUL, 0xca73c99bUL, 0x57a4f122UL, 0xef189647UL, - 0xfdad39a9UL, 0x45115eccUL, 0x764dee06UL, 0xcef18963UL, 0xdc44268dUL, - 0x64f841e8UL, 0xf92f7951UL, 0x41931e34UL, 0x5326b1daUL, 0xeb9ad6bfUL, - 0xb3f9c6e9UL, 0x0b45a18cUL, 0x19f00e62UL, 0xa14c6907UL, 0x3c9b51beUL, - 0x842736dbUL, 0x96929935UL, 0x2e2efe50UL, 0x2654b999UL, 0x9ee8defcUL, - 0x8c5d7112UL, 0x34e11677UL, 0xa9362eceUL, 0x118a49abUL, 0x033fe645UL, - 0xbb838120UL, 0xe3e09176UL, 0x5b5cf613UL, 0x49e959fdUL, 0xf1553e98UL, - 0x6c820621UL, 0xd43e6144UL, 0xc68bceaaUL, 0x7e37a9cfUL, 0xd67f4138UL, - 0x6ec3265dUL, 0x7c7689b3UL, 0xc4caeed6UL, 0x591dd66fUL, 0xe1a1b10aUL, - 0xf3141ee4UL, 0x4ba87981UL, 0x13cb69d7UL, 0xab770eb2UL, 0xb9c2a15cUL, - 0x017ec639UL, 0x9ca9fe80UL, 0x241599e5UL, 0x36a0360bUL, 0x8e1c516eUL, - 0x866616a7UL, 0x3eda71c2UL, 0x2c6fde2cUL, 0x94d3b949UL, 0x090481f0UL, - 0xb1b8e695UL, 0xa30d497bUL, 0x1bb12e1eUL, 0x43d23e48UL, 0xfb6e592dUL, - 0xe9dbf6c3UL, 0x516791a6UL, 0xccb0a91fUL, 0x740cce7aUL, 0x66b96194UL, - 0xde0506f1UL - }, - { - 0x00000000UL, 0x96300777UL, 0x2c610eeeUL, 0xba510999UL, 0x19c46d07UL, - 0x8ff46a70UL, 0x35a563e9UL, 0xa395649eUL, 0x3288db0eUL, 0xa4b8dc79UL, - 0x1ee9d5e0UL, 0x88d9d297UL, 0x2b4cb609UL, 0xbd7cb17eUL, 0x072db8e7UL, - 0x911dbf90UL, 0x6410b71dUL, 0xf220b06aUL, 0x4871b9f3UL, 0xde41be84UL, - 0x7dd4da1aUL, 0xebe4dd6dUL, 0x51b5d4f4UL, 0xc785d383UL, 0x56986c13UL, - 0xc0a86b64UL, 0x7af962fdUL, 0xecc9658aUL, 0x4f5c0114UL, 0xd96c0663UL, - 0x633d0ffaUL, 0xf50d088dUL, 0xc8206e3bUL, 0x5e10694cUL, 0xe44160d5UL, - 0x727167a2UL, 0xd1e4033cUL, 0x47d4044bUL, 0xfd850dd2UL, 0x6bb50aa5UL, - 0xfaa8b535UL, 0x6c98b242UL, 0xd6c9bbdbUL, 0x40f9bcacUL, 0xe36cd832UL, - 0x755cdf45UL, 0xcf0dd6dcUL, 0x593dd1abUL, 0xac30d926UL, 0x3a00de51UL, - 0x8051d7c8UL, 0x1661d0bfUL, 0xb5f4b421UL, 0x23c4b356UL, 0x9995bacfUL, - 0x0fa5bdb8UL, 0x9eb80228UL, 0x0888055fUL, 0xb2d90cc6UL, 0x24e90bb1UL, - 0x877c6f2fUL, 0x114c6858UL, 0xab1d61c1UL, 0x3d2d66b6UL, 0x9041dc76UL, - 0x0671db01UL, 0xbc20d298UL, 0x2a10d5efUL, 0x8985b171UL, 0x1fb5b606UL, - 0xa5e4bf9fUL, 0x33d4b8e8UL, 0xa2c90778UL, 0x34f9000fUL, 0x8ea80996UL, - 0x18980ee1UL, 0xbb0d6a7fUL, 0x2d3d6d08UL, 0x976c6491UL, 0x015c63e6UL, - 0xf4516b6bUL, 0x62616c1cUL, 0xd8306585UL, 0x4e0062f2UL, 0xed95066cUL, - 0x7ba5011bUL, 0xc1f40882UL, 0x57c40ff5UL, 0xc6d9b065UL, 0x50e9b712UL, - 0xeab8be8bUL, 0x7c88b9fcUL, 0xdf1ddd62UL, 0x492dda15UL, 0xf37cd38cUL, - 0x654cd4fbUL, 0x5861b24dUL, 0xce51b53aUL, 0x7400bca3UL, 0xe230bbd4UL, - 0x41a5df4aUL, 0xd795d83dUL, 0x6dc4d1a4UL, 0xfbf4d6d3UL, 0x6ae96943UL, - 0xfcd96e34UL, 0x468867adUL, 0xd0b860daUL, 0x732d0444UL, 0xe51d0333UL, - 0x5f4c0aaaUL, 0xc97c0dddUL, 0x3c710550UL, 0xaa410227UL, 0x10100bbeUL, - 0x86200cc9UL, 0x25b56857UL, 0xb3856f20UL, 0x09d466b9UL, 0x9fe461ceUL, - 0x0ef9de5eUL, 0x98c9d929UL, 0x2298d0b0UL, 0xb4a8d7c7UL, 0x173db359UL, - 0x810db42eUL, 0x3b5cbdb7UL, 0xad6cbac0UL, 0x2083b8edUL, 0xb6b3bf9aUL, - 0x0ce2b603UL, 0x9ad2b174UL, 0x3947d5eaUL, 0xaf77d29dUL, 0x1526db04UL, - 0x8316dc73UL, 0x120b63e3UL, 0x843b6494UL, 0x3e6a6d0dUL, 0xa85a6a7aUL, - 0x0bcf0ee4UL, 0x9dff0993UL, 0x27ae000aUL, 0xb19e077dUL, 0x44930ff0UL, - 0xd2a30887UL, 0x68f2011eUL, 0xfec20669UL, 0x5d5762f7UL, 0xcb676580UL, - 0x71366c19UL, 0xe7066b6eUL, 0x761bd4feUL, 0xe02bd389UL, 0x5a7ada10UL, - 0xcc4add67UL, 0x6fdfb9f9UL, 0xf9efbe8eUL, 0x43beb717UL, 0xd58eb060UL, - 0xe8a3d6d6UL, 0x7e93d1a1UL, 0xc4c2d838UL, 0x52f2df4fUL, 0xf167bbd1UL, - 0x6757bca6UL, 0xdd06b53fUL, 0x4b36b248UL, 0xda2b0dd8UL, 0x4c1b0aafUL, - 0xf64a0336UL, 0x607a0441UL, 0xc3ef60dfUL, 0x55df67a8UL, 0xef8e6e31UL, - 0x79be6946UL, 0x8cb361cbUL, 0x1a8366bcUL, 0xa0d26f25UL, 0x36e26852UL, - 0x95770cccUL, 0x03470bbbUL, 0xb9160222UL, 0x2f260555UL, 0xbe3bbac5UL, - 0x280bbdb2UL, 0x925ab42bUL, 0x046ab35cUL, 0xa7ffd7c2UL, 0x31cfd0b5UL, - 0x8b9ed92cUL, 0x1daede5bUL, 0xb0c2649bUL, 0x26f263ecUL, 0x9ca36a75UL, - 0x0a936d02UL, 0xa906099cUL, 0x3f360eebUL, 0x85670772UL, 0x13570005UL, - 0x824abf95UL, 0x147ab8e2UL, 0xae2bb17bUL, 0x381bb60cUL, 0x9b8ed292UL, - 0x0dbed5e5UL, 0xb7efdc7cUL, 0x21dfdb0bUL, 0xd4d2d386UL, 0x42e2d4f1UL, - 0xf8b3dd68UL, 0x6e83da1fUL, 0xcd16be81UL, 0x5b26b9f6UL, 0xe177b06fUL, - 0x7747b718UL, 0xe65a0888UL, 0x706a0fffUL, 0xca3b0666UL, 0x5c0b0111UL, - 0xff9e658fUL, 0x69ae62f8UL, 0xd3ff6b61UL, 0x45cf6c16UL, 0x78e20aa0UL, - 0xeed20dd7UL, 0x5483044eUL, 0xc2b30339UL, 0x612667a7UL, 0xf71660d0UL, - 0x4d476949UL, 0xdb776e3eUL, 0x4a6ad1aeUL, 0xdc5ad6d9UL, 0x660bdf40UL, - 0xf03bd837UL, 0x53aebca9UL, 0xc59ebbdeUL, 0x7fcfb247UL, 0xe9ffb530UL, - 0x1cf2bdbdUL, 0x8ac2bacaUL, 0x3093b353UL, 0xa6a3b424UL, 0x0536d0baUL, - 0x9306d7cdUL, 0x2957de54UL, 0xbf67d923UL, 0x2e7a66b3UL, 0xb84a61c4UL, - 0x021b685dUL, 0x942b6f2aUL, 0x37be0bb4UL, 0xa18e0cc3UL, 0x1bdf055aUL, - 0x8def022dUL - }, - { - 0x00000000UL, 0x41311b19UL, 0x82623632UL, 0xc3532d2bUL, 0x04c56c64UL, - 0x45f4777dUL, 0x86a75a56UL, 0xc796414fUL, 0x088ad9c8UL, 0x49bbc2d1UL, - 0x8ae8effaUL, 0xcbd9f4e3UL, 0x0c4fb5acUL, 0x4d7eaeb5UL, 0x8e2d839eUL, - 0xcf1c9887UL, 0x5112c24aUL, 0x1023d953UL, 0xd370f478UL, 0x9241ef61UL, - 0x55d7ae2eUL, 0x14e6b537UL, 0xd7b5981cUL, 0x96848305UL, 0x59981b82UL, - 0x18a9009bUL, 0xdbfa2db0UL, 0x9acb36a9UL, 0x5d5d77e6UL, 0x1c6c6cffUL, - 0xdf3f41d4UL, 0x9e0e5acdUL, 0xa2248495UL, 0xe3159f8cUL, 0x2046b2a7UL, - 0x6177a9beUL, 0xa6e1e8f1UL, 0xe7d0f3e8UL, 0x2483dec3UL, 0x65b2c5daUL, - 0xaaae5d5dUL, 0xeb9f4644UL, 0x28cc6b6fUL, 0x69fd7076UL, 0xae6b3139UL, - 0xef5a2a20UL, 0x2c09070bUL, 0x6d381c12UL, 0xf33646dfUL, 0xb2075dc6UL, - 0x715470edUL, 0x30656bf4UL, 0xf7f32abbUL, 0xb6c231a2UL, 0x75911c89UL, - 0x34a00790UL, 0xfbbc9f17UL, 0xba8d840eUL, 0x79dea925UL, 0x38efb23cUL, - 0xff79f373UL, 0xbe48e86aUL, 0x7d1bc541UL, 0x3c2ade58UL, 0x054f79f0UL, - 0x447e62e9UL, 0x872d4fc2UL, 0xc61c54dbUL, 0x018a1594UL, 0x40bb0e8dUL, - 0x83e823a6UL, 0xc2d938bfUL, 0x0dc5a038UL, 0x4cf4bb21UL, 0x8fa7960aUL, - 0xce968d13UL, 0x0900cc5cUL, 0x4831d745UL, 0x8b62fa6eUL, 0xca53e177UL, - 0x545dbbbaUL, 0x156ca0a3UL, 0xd63f8d88UL, 0x970e9691UL, 0x5098d7deUL, - 0x11a9ccc7UL, 0xd2fae1ecUL, 0x93cbfaf5UL, 0x5cd76272UL, 0x1de6796bUL, - 0xdeb55440UL, 0x9f844f59UL, 0x58120e16UL, 0x1923150fUL, 0xda703824UL, - 0x9b41233dUL, 0xa76bfd65UL, 0xe65ae67cUL, 0x2509cb57UL, 0x6438d04eUL, - 0xa3ae9101UL, 0xe29f8a18UL, 0x21cca733UL, 0x60fdbc2aUL, 0xafe124adUL, - 0xeed03fb4UL, 0x2d83129fUL, 0x6cb20986UL, 0xab2448c9UL, 0xea1553d0UL, - 0x29467efbUL, 0x687765e2UL, 0xf6793f2fUL, 0xb7482436UL, 0x741b091dUL, - 0x352a1204UL, 0xf2bc534bUL, 0xb38d4852UL, 0x70de6579UL, 0x31ef7e60UL, - 0xfef3e6e7UL, 0xbfc2fdfeUL, 0x7c91d0d5UL, 0x3da0cbccUL, 0xfa368a83UL, - 0xbb07919aUL, 0x7854bcb1UL, 0x3965a7a8UL, 0x4b98833bUL, 0x0aa99822UL, - 0xc9fab509UL, 0x88cbae10UL, 0x4f5def5fUL, 0x0e6cf446UL, 0xcd3fd96dUL, - 0x8c0ec274UL, 0x43125af3UL, 0x022341eaUL, 0xc1706cc1UL, 0x804177d8UL, - 0x47d73697UL, 0x06e62d8eUL, 0xc5b500a5UL, 0x84841bbcUL, 0x1a8a4171UL, - 0x5bbb5a68UL, 0x98e87743UL, 0xd9d96c5aUL, 0x1e4f2d15UL, 0x5f7e360cUL, - 0x9c2d1b27UL, 0xdd1c003eUL, 0x120098b9UL, 0x533183a0UL, 0x9062ae8bUL, - 0xd153b592UL, 0x16c5f4ddUL, 0x57f4efc4UL, 0x94a7c2efUL, 0xd596d9f6UL, - 0xe9bc07aeUL, 0xa88d1cb7UL, 0x6bde319cUL, 0x2aef2a85UL, 0xed796bcaUL, - 0xac4870d3UL, 0x6f1b5df8UL, 0x2e2a46e1UL, 0xe136de66UL, 0xa007c57fUL, - 0x6354e854UL, 0x2265f34dUL, 0xe5f3b202UL, 0xa4c2a91bUL, 0x67918430UL, - 0x26a09f29UL, 0xb8aec5e4UL, 0xf99fdefdUL, 0x3accf3d6UL, 0x7bfde8cfUL, - 0xbc6ba980UL, 0xfd5ab299UL, 0x3e099fb2UL, 0x7f3884abUL, 0xb0241c2cUL, - 0xf1150735UL, 0x32462a1eUL, 0x73773107UL, 0xb4e17048UL, 0xf5d06b51UL, - 0x3683467aUL, 0x77b25d63UL, 0x4ed7facbUL, 0x0fe6e1d2UL, 0xccb5ccf9UL, - 0x8d84d7e0UL, 0x4a1296afUL, 0x0b238db6UL, 0xc870a09dUL, 0x8941bb84UL, - 0x465d2303UL, 0x076c381aUL, 0xc43f1531UL, 0x850e0e28UL, 0x42984f67UL, - 0x03a9547eUL, 0xc0fa7955UL, 0x81cb624cUL, 0x1fc53881UL, 0x5ef42398UL, - 0x9da70eb3UL, 0xdc9615aaUL, 0x1b0054e5UL, 0x5a314ffcUL, 0x996262d7UL, - 0xd85379ceUL, 0x174fe149UL, 0x567efa50UL, 0x952dd77bUL, 0xd41ccc62UL, - 0x138a8d2dUL, 0x52bb9634UL, 0x91e8bb1fUL, 0xd0d9a006UL, 0xecf37e5eUL, - 0xadc26547UL, 0x6e91486cUL, 0x2fa05375UL, 0xe836123aUL, 0xa9070923UL, - 0x6a542408UL, 0x2b653f11UL, 0xe479a796UL, 0xa548bc8fUL, 0x661b91a4UL, - 0x272a8abdUL, 0xe0bccbf2UL, 0xa18dd0ebUL, 0x62defdc0UL, 0x23efe6d9UL, - 0xbde1bc14UL, 0xfcd0a70dUL, 0x3f838a26UL, 0x7eb2913fUL, 0xb924d070UL, - 0xf815cb69UL, 0x3b46e642UL, 0x7a77fd5bUL, 0xb56b65dcUL, 0xf45a7ec5UL, - 0x370953eeUL, 0x763848f7UL, 0xb1ae09b8UL, 0xf09f12a1UL, 0x33cc3f8aUL, - 0x72fd2493UL - }, - { - 0x00000000UL, 0x376ac201UL, 0x6ed48403UL, 0x59be4602UL, 0xdca80907UL, - 0xebc2cb06UL, 0xb27c8d04UL, 0x85164f05UL, 0xb851130eUL, 0x8f3bd10fUL, - 0xd685970dUL, 0xe1ef550cUL, 0x64f91a09UL, 0x5393d808UL, 0x0a2d9e0aUL, - 0x3d475c0bUL, 0x70a3261cUL, 0x47c9e41dUL, 0x1e77a21fUL, 0x291d601eUL, - 0xac0b2f1bUL, 0x9b61ed1aUL, 0xc2dfab18UL, 0xf5b56919UL, 0xc8f23512UL, - 0xff98f713UL, 0xa626b111UL, 0x914c7310UL, 0x145a3c15UL, 0x2330fe14UL, - 0x7a8eb816UL, 0x4de47a17UL, 0xe0464d38UL, 0xd72c8f39UL, 0x8e92c93bUL, - 0xb9f80b3aUL, 0x3cee443fUL, 0x0b84863eUL, 0x523ac03cUL, 0x6550023dUL, - 0x58175e36UL, 0x6f7d9c37UL, 0x36c3da35UL, 0x01a91834UL, 0x84bf5731UL, - 0xb3d59530UL, 0xea6bd332UL, 0xdd011133UL, 0x90e56b24UL, 0xa78fa925UL, - 0xfe31ef27UL, 0xc95b2d26UL, 0x4c4d6223UL, 0x7b27a022UL, 0x2299e620UL, - 0x15f32421UL, 0x28b4782aUL, 0x1fdeba2bUL, 0x4660fc29UL, 0x710a3e28UL, - 0xf41c712dUL, 0xc376b32cUL, 0x9ac8f52eUL, 0xada2372fUL, 0xc08d9a70UL, - 0xf7e75871UL, 0xae591e73UL, 0x9933dc72UL, 0x1c259377UL, 0x2b4f5176UL, - 0x72f11774UL, 0x459bd575UL, 0x78dc897eUL, 0x4fb64b7fUL, 0x16080d7dUL, - 0x2162cf7cUL, 0xa4748079UL, 0x931e4278UL, 0xcaa0047aUL, 0xfdcac67bUL, - 0xb02ebc6cUL, 0x87447e6dUL, 0xdefa386fUL, 0xe990fa6eUL, 0x6c86b56bUL, - 0x5bec776aUL, 0x02523168UL, 0x3538f369UL, 0x087faf62UL, 0x3f156d63UL, - 0x66ab2b61UL, 0x51c1e960UL, 0xd4d7a665UL, 0xe3bd6464UL, 0xba032266UL, - 0x8d69e067UL, 0x20cbd748UL, 0x17a11549UL, 0x4e1f534bUL, 0x7975914aUL, - 0xfc63de4fUL, 0xcb091c4eUL, 0x92b75a4cUL, 0xa5dd984dUL, 0x989ac446UL, - 0xaff00647UL, 0xf64e4045UL, 0xc1248244UL, 0x4432cd41UL, 0x73580f40UL, - 0x2ae64942UL, 0x1d8c8b43UL, 0x5068f154UL, 0x67023355UL, 0x3ebc7557UL, - 0x09d6b756UL, 0x8cc0f853UL, 0xbbaa3a52UL, 0xe2147c50UL, 0xd57ebe51UL, - 0xe839e25aUL, 0xdf53205bUL, 0x86ed6659UL, 0xb187a458UL, 0x3491eb5dUL, - 0x03fb295cUL, 0x5a456f5eUL, 0x6d2fad5fUL, 0x801b35e1UL, 0xb771f7e0UL, - 0xeecfb1e2UL, 0xd9a573e3UL, 0x5cb33ce6UL, 0x6bd9fee7UL, 0x3267b8e5UL, - 0x050d7ae4UL, 0x384a26efUL, 0x0f20e4eeUL, 0x569ea2ecUL, 0x61f460edUL, - 0xe4e22fe8UL, 0xd388ede9UL, 0x8a36abebUL, 0xbd5c69eaUL, 0xf0b813fdUL, - 0xc7d2d1fcUL, 0x9e6c97feUL, 0xa90655ffUL, 0x2c101afaUL, 0x1b7ad8fbUL, - 0x42c49ef9UL, 0x75ae5cf8UL, 0x48e900f3UL, 0x7f83c2f2UL, 0x263d84f0UL, - 0x115746f1UL, 0x944109f4UL, 0xa32bcbf5UL, 0xfa958df7UL, 0xcdff4ff6UL, - 0x605d78d9UL, 0x5737bad8UL, 0x0e89fcdaUL, 0x39e33edbUL, 0xbcf571deUL, - 0x8b9fb3dfUL, 0xd221f5ddUL, 0xe54b37dcUL, 0xd80c6bd7UL, 0xef66a9d6UL, - 0xb6d8efd4UL, 0x81b22dd5UL, 0x04a462d0UL, 0x33cea0d1UL, 0x6a70e6d3UL, - 0x5d1a24d2UL, 0x10fe5ec5UL, 0x27949cc4UL, 0x7e2adac6UL, 0x494018c7UL, - 0xcc5657c2UL, 0xfb3c95c3UL, 0xa282d3c1UL, 0x95e811c0UL, 0xa8af4dcbUL, - 0x9fc58fcaUL, 0xc67bc9c8UL, 0xf1110bc9UL, 0x740744ccUL, 0x436d86cdUL, - 0x1ad3c0cfUL, 0x2db902ceUL, 0x4096af91UL, 0x77fc6d90UL, 0x2e422b92UL, - 0x1928e993UL, 0x9c3ea696UL, 0xab546497UL, 0xf2ea2295UL, 0xc580e094UL, - 0xf8c7bc9fUL, 0xcfad7e9eUL, 0x9613389cUL, 0xa179fa9dUL, 0x246fb598UL, - 0x13057799UL, 0x4abb319bUL, 0x7dd1f39aUL, 0x3035898dUL, 0x075f4b8cUL, - 0x5ee10d8eUL, 0x698bcf8fUL, 0xec9d808aUL, 0xdbf7428bUL, 0x82490489UL, - 0xb523c688UL, 0x88649a83UL, 0xbf0e5882UL, 0xe6b01e80UL, 0xd1dadc81UL, - 0x54cc9384UL, 0x63a65185UL, 0x3a181787UL, 0x0d72d586UL, 0xa0d0e2a9UL, - 0x97ba20a8UL, 0xce0466aaUL, 0xf96ea4abUL, 0x7c78ebaeUL, 0x4b1229afUL, - 0x12ac6fadUL, 0x25c6adacUL, 0x1881f1a7UL, 0x2feb33a6UL, 0x765575a4UL, - 0x413fb7a5UL, 0xc429f8a0UL, 0xf3433aa1UL, 0xaafd7ca3UL, 0x9d97bea2UL, - 0xd073c4b5UL, 0xe71906b4UL, 0xbea740b6UL, 0x89cd82b7UL, 0x0cdbcdb2UL, - 0x3bb10fb3UL, 0x620f49b1UL, 0x55658bb0UL, 0x6822d7bbUL, 0x5f4815baUL, - 0x06f653b8UL, 0x319c91b9UL, 0xb48adebcUL, 0x83e01cbdUL, 0xda5e5abfUL, - 0xed3498beUL - }, - { - 0x00000000UL, 0x6567bcb8UL, 0x8bc809aaUL, 0xeeafb512UL, 0x5797628fUL, - 0x32f0de37UL, 0xdc5f6b25UL, 0xb938d79dUL, 0xef28b4c5UL, 0x8a4f087dUL, - 0x64e0bd6fUL, 0x018701d7UL, 0xb8bfd64aUL, 0xddd86af2UL, 0x3377dfe0UL, - 0x56106358UL, 0x9f571950UL, 0xfa30a5e8UL, 0x149f10faUL, 0x71f8ac42UL, - 0xc8c07bdfUL, 0xada7c767UL, 0x43087275UL, 0x266fcecdUL, 0x707fad95UL, - 0x1518112dUL, 0xfbb7a43fUL, 0x9ed01887UL, 0x27e8cf1aUL, 0x428f73a2UL, - 0xac20c6b0UL, 0xc9477a08UL, 0x3eaf32a0UL, 0x5bc88e18UL, 0xb5673b0aUL, - 0xd00087b2UL, 0x6938502fUL, 0x0c5fec97UL, 0xe2f05985UL, 0x8797e53dUL, - 0xd1878665UL, 0xb4e03addUL, 0x5a4f8fcfUL, 0x3f283377UL, 0x8610e4eaUL, - 0xe3775852UL, 0x0dd8ed40UL, 0x68bf51f8UL, 0xa1f82bf0UL, 0xc49f9748UL, - 0x2a30225aUL, 0x4f579ee2UL, 0xf66f497fUL, 0x9308f5c7UL, 0x7da740d5UL, - 0x18c0fc6dUL, 0x4ed09f35UL, 0x2bb7238dUL, 0xc518969fUL, 0xa07f2a27UL, - 0x1947fdbaUL, 0x7c204102UL, 0x928ff410UL, 0xf7e848a8UL, 0x3d58149bUL, - 0x583fa823UL, 0xb6901d31UL, 0xd3f7a189UL, 0x6acf7614UL, 0x0fa8caacUL, - 0xe1077fbeUL, 0x8460c306UL, 0xd270a05eUL, 0xb7171ce6UL, 0x59b8a9f4UL, - 0x3cdf154cUL, 0x85e7c2d1UL, 0xe0807e69UL, 0x0e2fcb7bUL, 0x6b4877c3UL, - 0xa20f0dcbUL, 0xc768b173UL, 0x29c70461UL, 0x4ca0b8d9UL, 0xf5986f44UL, - 0x90ffd3fcUL, 0x7e5066eeUL, 0x1b37da56UL, 0x4d27b90eUL, 0x284005b6UL, - 0xc6efb0a4UL, 0xa3880c1cUL, 0x1ab0db81UL, 0x7fd76739UL, 0x9178d22bUL, - 0xf41f6e93UL, 0x03f7263bUL, 0x66909a83UL, 0x883f2f91UL, 0xed589329UL, - 0x546044b4UL, 0x3107f80cUL, 0xdfa84d1eUL, 0xbacff1a6UL, 0xecdf92feUL, - 0x89b82e46UL, 0x67179b54UL, 0x027027ecUL, 0xbb48f071UL, 0xde2f4cc9UL, - 0x3080f9dbUL, 0x55e74563UL, 0x9ca03f6bUL, 0xf9c783d3UL, 0x176836c1UL, - 0x720f8a79UL, 0xcb375de4UL, 0xae50e15cUL, 0x40ff544eUL, 0x2598e8f6UL, - 0x73888baeUL, 0x16ef3716UL, 0xf8408204UL, 0x9d273ebcUL, 0x241fe921UL, - 0x41785599UL, 0xafd7e08bUL, 0xcab05c33UL, 0x3bb659edUL, 0x5ed1e555UL, - 0xb07e5047UL, 0xd519ecffUL, 0x6c213b62UL, 0x094687daUL, 0xe7e932c8UL, - 0x828e8e70UL, 0xd49eed28UL, 0xb1f95190UL, 0x5f56e482UL, 0x3a31583aUL, - 0x83098fa7UL, 0xe66e331fUL, 0x08c1860dUL, 0x6da63ab5UL, 0xa4e140bdUL, - 0xc186fc05UL, 0x2f294917UL, 0x4a4ef5afUL, 0xf3762232UL, 0x96119e8aUL, - 0x78be2b98UL, 0x1dd99720UL, 0x4bc9f478UL, 0x2eae48c0UL, 0xc001fdd2UL, - 0xa566416aUL, 0x1c5e96f7UL, 0x79392a4fUL, 0x97969f5dUL, 0xf2f123e5UL, - 0x05196b4dUL, 0x607ed7f5UL, 0x8ed162e7UL, 0xebb6de5fUL, 0x528e09c2UL, - 0x37e9b57aUL, 0xd9460068UL, 0xbc21bcd0UL, 0xea31df88UL, 0x8f566330UL, - 0x61f9d622UL, 0x049e6a9aUL, 0xbda6bd07UL, 0xd8c101bfUL, 0x366eb4adUL, - 0x53090815UL, 0x9a4e721dUL, 0xff29cea5UL, 0x11867bb7UL, 0x74e1c70fUL, - 0xcdd91092UL, 0xa8beac2aUL, 0x46111938UL, 0x2376a580UL, 0x7566c6d8UL, - 0x10017a60UL, 0xfeaecf72UL, 0x9bc973caUL, 0x22f1a457UL, 0x479618efUL, - 0xa939adfdUL, 0xcc5e1145UL, 0x06ee4d76UL, 0x6389f1ceUL, 0x8d2644dcUL, - 0xe841f864UL, 0x51792ff9UL, 0x341e9341UL, 0xdab12653UL, 0xbfd69aebUL, - 0xe9c6f9b3UL, 0x8ca1450bUL, 0x620ef019UL, 0x07694ca1UL, 0xbe519b3cUL, - 0xdb362784UL, 0x35999296UL, 0x50fe2e2eUL, 0x99b95426UL, 0xfcdee89eUL, - 0x12715d8cUL, 0x7716e134UL, 0xce2e36a9UL, 0xab498a11UL, 0x45e63f03UL, - 0x208183bbUL, 0x7691e0e3UL, 0x13f65c5bUL, 0xfd59e949UL, 0x983e55f1UL, - 0x2106826cUL, 0x44613ed4UL, 0xaace8bc6UL, 0xcfa9377eUL, 0x38417fd6UL, - 0x5d26c36eUL, 0xb389767cUL, 0xd6eecac4UL, 0x6fd61d59UL, 0x0ab1a1e1UL, - 0xe41e14f3UL, 0x8179a84bUL, 0xd769cb13UL, 0xb20e77abUL, 0x5ca1c2b9UL, - 0x39c67e01UL, 0x80fea99cUL, 0xe5991524UL, 0x0b36a036UL, 0x6e511c8eUL, - 0xa7166686UL, 0xc271da3eUL, 0x2cde6f2cUL, 0x49b9d394UL, 0xf0810409UL, - 0x95e6b8b1UL, 0x7b490da3UL, 0x1e2eb11bUL, 0x483ed243UL, 0x2d596efbUL, - 0xc3f6dbe9UL, 0xa6916751UL, 0x1fa9b0ccUL, 0x7ace0c74UL, 0x9461b966UL, - 0xf10605deUL +local const z_crc_t FAR crc_table[] = { + 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, + 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, + 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, + 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, + 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856, + 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, + 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, + 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, + 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, + 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a, + 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, + 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, + 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, + 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, + 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e, + 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01, + 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, + 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, + 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, + 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, + 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, + 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, + 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010, + 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, + 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, + 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, + 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, + 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, + 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344, + 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, + 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, + 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, + 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, + 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c, + 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, + 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, + 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, + 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, + 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c, + 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713, + 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, + 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242, + 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, + 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, + 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278, + 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, + 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66, + 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, + 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, + 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, + 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, + 0x2d02ef8d}; + +#ifdef W + +#if W == 8 + +local const z_word_t FAR crc_big_table[] = { + 0x0000000000000000, 0x9630077700000000, 0x2c610eee00000000, + 0xba51099900000000, 0x19c46d0700000000, 0x8ff46a7000000000, + 0x35a563e900000000, 0xa395649e00000000, 0x3288db0e00000000, + 0xa4b8dc7900000000, 0x1ee9d5e000000000, 0x88d9d29700000000, + 0x2b4cb60900000000, 0xbd7cb17e00000000, 0x072db8e700000000, + 0x911dbf9000000000, 0x6410b71d00000000, 0xf220b06a00000000, + 0x4871b9f300000000, 0xde41be8400000000, 0x7dd4da1a00000000, + 0xebe4dd6d00000000, 0x51b5d4f400000000, 0xc785d38300000000, + 0x56986c1300000000, 0xc0a86b6400000000, 0x7af962fd00000000, + 0xecc9658a00000000, 0x4f5c011400000000, 0xd96c066300000000, + 0x633d0ffa00000000, 0xf50d088d00000000, 0xc8206e3b00000000, + 0x5e10694c00000000, 0xe44160d500000000, 0x727167a200000000, + 0xd1e4033c00000000, 0x47d4044b00000000, 0xfd850dd200000000, + 0x6bb50aa500000000, 0xfaa8b53500000000, 0x6c98b24200000000, + 0xd6c9bbdb00000000, 0x40f9bcac00000000, 0xe36cd83200000000, + 0x755cdf4500000000, 0xcf0dd6dc00000000, 0x593dd1ab00000000, + 0xac30d92600000000, 0x3a00de5100000000, 0x8051d7c800000000, + 0x1661d0bf00000000, 0xb5f4b42100000000, 0x23c4b35600000000, + 0x9995bacf00000000, 0x0fa5bdb800000000, 0x9eb8022800000000, + 0x0888055f00000000, 0xb2d90cc600000000, 0x24e90bb100000000, + 0x877c6f2f00000000, 0x114c685800000000, 0xab1d61c100000000, + 0x3d2d66b600000000, 0x9041dc7600000000, 0x0671db0100000000, + 0xbc20d29800000000, 0x2a10d5ef00000000, 0x8985b17100000000, + 0x1fb5b60600000000, 0xa5e4bf9f00000000, 0x33d4b8e800000000, + 0xa2c9077800000000, 0x34f9000f00000000, 0x8ea8099600000000, + 0x18980ee100000000, 0xbb0d6a7f00000000, 0x2d3d6d0800000000, + 0x976c649100000000, 0x015c63e600000000, 0xf4516b6b00000000, + 0x62616c1c00000000, 0xd830658500000000, 0x4e0062f200000000, + 0xed95066c00000000, 0x7ba5011b00000000, 0xc1f4088200000000, + 0x57c40ff500000000, 0xc6d9b06500000000, 0x50e9b71200000000, + 0xeab8be8b00000000, 0x7c88b9fc00000000, 0xdf1ddd6200000000, + 0x492dda1500000000, 0xf37cd38c00000000, 0x654cd4fb00000000, + 0x5861b24d00000000, 0xce51b53a00000000, 0x7400bca300000000, + 0xe230bbd400000000, 0x41a5df4a00000000, 0xd795d83d00000000, + 0x6dc4d1a400000000, 0xfbf4d6d300000000, 0x6ae9694300000000, + 0xfcd96e3400000000, 0x468867ad00000000, 0xd0b860da00000000, + 0x732d044400000000, 0xe51d033300000000, 0x5f4c0aaa00000000, + 0xc97c0ddd00000000, 0x3c71055000000000, 0xaa41022700000000, + 0x10100bbe00000000, 0x86200cc900000000, 0x25b5685700000000, + 0xb3856f2000000000, 0x09d466b900000000, 0x9fe461ce00000000, + 0x0ef9de5e00000000, 0x98c9d92900000000, 0x2298d0b000000000, + 0xb4a8d7c700000000, 0x173db35900000000, 0x810db42e00000000, + 0x3b5cbdb700000000, 0xad6cbac000000000, 0x2083b8ed00000000, + 0xb6b3bf9a00000000, 0x0ce2b60300000000, 0x9ad2b17400000000, + 0x3947d5ea00000000, 0xaf77d29d00000000, 0x1526db0400000000, + 0x8316dc7300000000, 0x120b63e300000000, 0x843b649400000000, + 0x3e6a6d0d00000000, 0xa85a6a7a00000000, 0x0bcf0ee400000000, + 0x9dff099300000000, 0x27ae000a00000000, 0xb19e077d00000000, + 0x44930ff000000000, 0xd2a3088700000000, 0x68f2011e00000000, + 0xfec2066900000000, 0x5d5762f700000000, 0xcb67658000000000, + 0x71366c1900000000, 0xe7066b6e00000000, 0x761bd4fe00000000, + 0xe02bd38900000000, 0x5a7ada1000000000, 0xcc4add6700000000, + 0x6fdfb9f900000000, 0xf9efbe8e00000000, 0x43beb71700000000, + 0xd58eb06000000000, 0xe8a3d6d600000000, 0x7e93d1a100000000, + 0xc4c2d83800000000, 0x52f2df4f00000000, 0xf167bbd100000000, + 0x6757bca600000000, 0xdd06b53f00000000, 0x4b36b24800000000, + 0xda2b0dd800000000, 0x4c1b0aaf00000000, 0xf64a033600000000, + 0x607a044100000000, 0xc3ef60df00000000, 0x55df67a800000000, + 0xef8e6e3100000000, 0x79be694600000000, 0x8cb361cb00000000, + 0x1a8366bc00000000, 0xa0d26f2500000000, 0x36e2685200000000, + 0x95770ccc00000000, 0x03470bbb00000000, 0xb916022200000000, + 0x2f26055500000000, 0xbe3bbac500000000, 0x280bbdb200000000, + 0x925ab42b00000000, 0x046ab35c00000000, 0xa7ffd7c200000000, + 0x31cfd0b500000000, 0x8b9ed92c00000000, 0x1daede5b00000000, + 0xb0c2649b00000000, 0x26f263ec00000000, 0x9ca36a7500000000, + 0x0a936d0200000000, 0xa906099c00000000, 0x3f360eeb00000000, + 0x8567077200000000, 0x1357000500000000, 0x824abf9500000000, + 0x147ab8e200000000, 0xae2bb17b00000000, 0x381bb60c00000000, + 0x9b8ed29200000000, 0x0dbed5e500000000, 0xb7efdc7c00000000, + 0x21dfdb0b00000000, 0xd4d2d38600000000, 0x42e2d4f100000000, + 0xf8b3dd6800000000, 0x6e83da1f00000000, 0xcd16be8100000000, + 0x5b26b9f600000000, 0xe177b06f00000000, 0x7747b71800000000, + 0xe65a088800000000, 0x706a0fff00000000, 0xca3b066600000000, + 0x5c0b011100000000, 0xff9e658f00000000, 0x69ae62f800000000, + 0xd3ff6b6100000000, 0x45cf6c1600000000, 0x78e20aa000000000, + 0xeed20dd700000000, 0x5483044e00000000, 0xc2b3033900000000, + 0x612667a700000000, 0xf71660d000000000, 0x4d47694900000000, + 0xdb776e3e00000000, 0x4a6ad1ae00000000, 0xdc5ad6d900000000, + 0x660bdf4000000000, 0xf03bd83700000000, 0x53aebca900000000, + 0xc59ebbde00000000, 0x7fcfb24700000000, 0xe9ffb53000000000, + 0x1cf2bdbd00000000, 0x8ac2baca00000000, 0x3093b35300000000, + 0xa6a3b42400000000, 0x0536d0ba00000000, 0x9306d7cd00000000, + 0x2957de5400000000, 0xbf67d92300000000, 0x2e7a66b300000000, + 0xb84a61c400000000, 0x021b685d00000000, 0x942b6f2a00000000, + 0x37be0bb400000000, 0xa18e0cc300000000, 0x1bdf055a00000000, + 0x8def022d00000000}; + +#else /* W == 4 */ + +local const z_word_t FAR crc_big_table[] = { + 0x00000000, 0x96300777, 0x2c610eee, 0xba510999, 0x19c46d07, + 0x8ff46a70, 0x35a563e9, 0xa395649e, 0x3288db0e, 0xa4b8dc79, + 0x1ee9d5e0, 0x88d9d297, 0x2b4cb609, 0xbd7cb17e, 0x072db8e7, + 0x911dbf90, 0x6410b71d, 0xf220b06a, 0x4871b9f3, 0xde41be84, + 0x7dd4da1a, 0xebe4dd6d, 0x51b5d4f4, 0xc785d383, 0x56986c13, + 0xc0a86b64, 0x7af962fd, 0xecc9658a, 0x4f5c0114, 0xd96c0663, + 0x633d0ffa, 0xf50d088d, 0xc8206e3b, 0x5e10694c, 0xe44160d5, + 0x727167a2, 0xd1e4033c, 0x47d4044b, 0xfd850dd2, 0x6bb50aa5, + 0xfaa8b535, 0x6c98b242, 0xd6c9bbdb, 0x40f9bcac, 0xe36cd832, + 0x755cdf45, 0xcf0dd6dc, 0x593dd1ab, 0xac30d926, 0x3a00de51, + 0x8051d7c8, 0x1661d0bf, 0xb5f4b421, 0x23c4b356, 0x9995bacf, + 0x0fa5bdb8, 0x9eb80228, 0x0888055f, 0xb2d90cc6, 0x24e90bb1, + 0x877c6f2f, 0x114c6858, 0xab1d61c1, 0x3d2d66b6, 0x9041dc76, + 0x0671db01, 0xbc20d298, 0x2a10d5ef, 0x8985b171, 0x1fb5b606, + 0xa5e4bf9f, 0x33d4b8e8, 0xa2c90778, 0x34f9000f, 0x8ea80996, + 0x18980ee1, 0xbb0d6a7f, 0x2d3d6d08, 0x976c6491, 0x015c63e6, + 0xf4516b6b, 0x62616c1c, 0xd8306585, 0x4e0062f2, 0xed95066c, + 0x7ba5011b, 0xc1f40882, 0x57c40ff5, 0xc6d9b065, 0x50e9b712, + 0xeab8be8b, 0x7c88b9fc, 0xdf1ddd62, 0x492dda15, 0xf37cd38c, + 0x654cd4fb, 0x5861b24d, 0xce51b53a, 0x7400bca3, 0xe230bbd4, + 0x41a5df4a, 0xd795d83d, 0x6dc4d1a4, 0xfbf4d6d3, 0x6ae96943, + 0xfcd96e34, 0x468867ad, 0xd0b860da, 0x732d0444, 0xe51d0333, + 0x5f4c0aaa, 0xc97c0ddd, 0x3c710550, 0xaa410227, 0x10100bbe, + 0x86200cc9, 0x25b56857, 0xb3856f20, 0x09d466b9, 0x9fe461ce, + 0x0ef9de5e, 0x98c9d929, 0x2298d0b0, 0xb4a8d7c7, 0x173db359, + 0x810db42e, 0x3b5cbdb7, 0xad6cbac0, 0x2083b8ed, 0xb6b3bf9a, + 0x0ce2b603, 0x9ad2b174, 0x3947d5ea, 0xaf77d29d, 0x1526db04, + 0x8316dc73, 0x120b63e3, 0x843b6494, 0x3e6a6d0d, 0xa85a6a7a, + 0x0bcf0ee4, 0x9dff0993, 0x27ae000a, 0xb19e077d, 0x44930ff0, + 0xd2a30887, 0x68f2011e, 0xfec20669, 0x5d5762f7, 0xcb676580, + 0x71366c19, 0xe7066b6e, 0x761bd4fe, 0xe02bd389, 0x5a7ada10, + 0xcc4add67, 0x6fdfb9f9, 0xf9efbe8e, 0x43beb717, 0xd58eb060, + 0xe8a3d6d6, 0x7e93d1a1, 0xc4c2d838, 0x52f2df4f, 0xf167bbd1, + 0x6757bca6, 0xdd06b53f, 0x4b36b248, 0xda2b0dd8, 0x4c1b0aaf, + 0xf64a0336, 0x607a0441, 0xc3ef60df, 0x55df67a8, 0xef8e6e31, + 0x79be6946, 0x8cb361cb, 0x1a8366bc, 0xa0d26f25, 0x36e26852, + 0x95770ccc, 0x03470bbb, 0xb9160222, 0x2f260555, 0xbe3bbac5, + 0x280bbdb2, 0x925ab42b, 0x046ab35c, 0xa7ffd7c2, 0x31cfd0b5, + 0x8b9ed92c, 0x1daede5b, 0xb0c2649b, 0x26f263ec, 0x9ca36a75, + 0x0a936d02, 0xa906099c, 0x3f360eeb, 0x85670772, 0x13570005, + 0x824abf95, 0x147ab8e2, 0xae2bb17b, 0x381bb60c, 0x9b8ed292, + 0x0dbed5e5, 0xb7efdc7c, 0x21dfdb0b, 0xd4d2d386, 0x42e2d4f1, + 0xf8b3dd68, 0x6e83da1f, 0xcd16be81, 0x5b26b9f6, 0xe177b06f, + 0x7747b718, 0xe65a0888, 0x706a0fff, 0xca3b0666, 0x5c0b0111, + 0xff9e658f, 0x69ae62f8, 0xd3ff6b61, 0x45cf6c16, 0x78e20aa0, + 0xeed20dd7, 0x5483044e, 0xc2b30339, 0x612667a7, 0xf71660d0, + 0x4d476949, 0xdb776e3e, 0x4a6ad1ae, 0xdc5ad6d9, 0x660bdf40, + 0xf03bd837, 0x53aebca9, 0xc59ebbde, 0x7fcfb247, 0xe9ffb530, + 0x1cf2bdbd, 0x8ac2baca, 0x3093b353, 0xa6a3b424, 0x0536d0ba, + 0x9306d7cd, 0x2957de54, 0xbf67d923, 0x2e7a66b3, 0xb84a61c4, + 0x021b685d, 0x942b6f2a, 0x37be0bb4, 0xa18e0cc3, 0x1bdf055a, + 0x8def022d}; + #endif - } -}; + +#if N == 1 + +#if W == 8 + +local const z_crc_t FAR crc_braid_table[][256] = { + {0x00000000, 0xccaa009e, 0x4225077d, 0x8e8f07e3, 0x844a0efa, + 0x48e00e64, 0xc66f0987, 0x0ac50919, 0xd3e51bb5, 0x1f4f1b2b, + 0x91c01cc8, 0x5d6a1c56, 0x57af154f, 0x9b0515d1, 0x158a1232, + 0xd92012ac, 0x7cbb312b, 0xb01131b5, 0x3e9e3656, 0xf23436c8, + 0xf8f13fd1, 0x345b3f4f, 0xbad438ac, 0x767e3832, 0xaf5e2a9e, + 0x63f42a00, 0xed7b2de3, 0x21d12d7d, 0x2b142464, 0xe7be24fa, + 0x69312319, 0xa59b2387, 0xf9766256, 0x35dc62c8, 0xbb53652b, + 0x77f965b5, 0x7d3c6cac, 0xb1966c32, 0x3f196bd1, 0xf3b36b4f, + 0x2a9379e3, 0xe639797d, 0x68b67e9e, 0xa41c7e00, 0xaed97719, + 0x62737787, 0xecfc7064, 0x205670fa, 0x85cd537d, 0x496753e3, + 0xc7e85400, 0x0b42549e, 0x01875d87, 0xcd2d5d19, 0x43a25afa, + 0x8f085a64, 0x562848c8, 0x9a824856, 0x140d4fb5, 0xd8a74f2b, + 0xd2624632, 0x1ec846ac, 0x9047414f, 0x5ced41d1, 0x299dc2ed, + 0xe537c273, 0x6bb8c590, 0xa712c50e, 0xadd7cc17, 0x617dcc89, + 0xeff2cb6a, 0x2358cbf4, 0xfa78d958, 0x36d2d9c6, 0xb85dde25, + 0x74f7debb, 0x7e32d7a2, 0xb298d73c, 0x3c17d0df, 0xf0bdd041, + 0x5526f3c6, 0x998cf358, 0x1703f4bb, 0xdba9f425, 0xd16cfd3c, + 0x1dc6fda2, 0x9349fa41, 0x5fe3fadf, 0x86c3e873, 0x4a69e8ed, + 0xc4e6ef0e, 0x084cef90, 0x0289e689, 0xce23e617, 0x40ace1f4, + 0x8c06e16a, 0xd0eba0bb, 0x1c41a025, 0x92cea7c6, 0x5e64a758, + 0x54a1ae41, 0x980baedf, 0x1684a93c, 0xda2ea9a2, 0x030ebb0e, + 0xcfa4bb90, 0x412bbc73, 0x8d81bced, 0x8744b5f4, 0x4beeb56a, + 0xc561b289, 0x09cbb217, 0xac509190, 0x60fa910e, 0xee7596ed, + 0x22df9673, 0x281a9f6a, 0xe4b09ff4, 0x6a3f9817, 0xa6959889, + 0x7fb58a25, 0xb31f8abb, 0x3d908d58, 0xf13a8dc6, 0xfbff84df, + 0x37558441, 0xb9da83a2, 0x7570833c, 0x533b85da, 0x9f918544, + 0x111e82a7, 0xddb48239, 0xd7718b20, 0x1bdb8bbe, 0x95548c5d, + 0x59fe8cc3, 0x80de9e6f, 0x4c749ef1, 0xc2fb9912, 0x0e51998c, + 0x04949095, 0xc83e900b, 0x46b197e8, 0x8a1b9776, 0x2f80b4f1, + 0xe32ab46f, 0x6da5b38c, 0xa10fb312, 0xabcaba0b, 0x6760ba95, + 0xe9efbd76, 0x2545bde8, 0xfc65af44, 0x30cfafda, 0xbe40a839, + 0x72eaa8a7, 0x782fa1be, 0xb485a120, 0x3a0aa6c3, 0xf6a0a65d, + 0xaa4de78c, 0x66e7e712, 0xe868e0f1, 0x24c2e06f, 0x2e07e976, + 0xe2ade9e8, 0x6c22ee0b, 0xa088ee95, 0x79a8fc39, 0xb502fca7, + 0x3b8dfb44, 0xf727fbda, 0xfde2f2c3, 0x3148f25d, 0xbfc7f5be, + 0x736df520, 0xd6f6d6a7, 0x1a5cd639, 0x94d3d1da, 0x5879d144, + 0x52bcd85d, 0x9e16d8c3, 0x1099df20, 0xdc33dfbe, 0x0513cd12, + 0xc9b9cd8c, 0x4736ca6f, 0x8b9ccaf1, 0x8159c3e8, 0x4df3c376, + 0xc37cc495, 0x0fd6c40b, 0x7aa64737, 0xb60c47a9, 0x3883404a, + 0xf42940d4, 0xfeec49cd, 0x32464953, 0xbcc94eb0, 0x70634e2e, + 0xa9435c82, 0x65e95c1c, 0xeb665bff, 0x27cc5b61, 0x2d095278, + 0xe1a352e6, 0x6f2c5505, 0xa386559b, 0x061d761c, 0xcab77682, + 0x44387161, 0x889271ff, 0x825778e6, 0x4efd7878, 0xc0727f9b, + 0x0cd87f05, 0xd5f86da9, 0x19526d37, 0x97dd6ad4, 0x5b776a4a, + 0x51b26353, 0x9d1863cd, 0x1397642e, 0xdf3d64b0, 0x83d02561, + 0x4f7a25ff, 0xc1f5221c, 0x0d5f2282, 0x079a2b9b, 0xcb302b05, + 0x45bf2ce6, 0x89152c78, 0x50353ed4, 0x9c9f3e4a, 0x121039a9, + 0xdeba3937, 0xd47f302e, 0x18d530b0, 0x965a3753, 0x5af037cd, + 0xff6b144a, 0x33c114d4, 0xbd4e1337, 0x71e413a9, 0x7b211ab0, + 0xb78b1a2e, 0x39041dcd, 0xf5ae1d53, 0x2c8e0fff, 0xe0240f61, + 0x6eab0882, 0xa201081c, 0xa8c40105, 0x646e019b, 0xeae10678, + 0x264b06e6}, + {0x00000000, 0xa6770bb4, 0x979f1129, 0x31e81a9d, 0xf44f2413, + 0x52382fa7, 0x63d0353a, 0xc5a73e8e, 0x33ef4e67, 0x959845d3, + 0xa4705f4e, 0x020754fa, 0xc7a06a74, 0x61d761c0, 0x503f7b5d, + 0xf64870e9, 0x67de9cce, 0xc1a9977a, 0xf0418de7, 0x56368653, + 0x9391b8dd, 0x35e6b369, 0x040ea9f4, 0xa279a240, 0x5431d2a9, + 0xf246d91d, 0xc3aec380, 0x65d9c834, 0xa07ef6ba, 0x0609fd0e, + 0x37e1e793, 0x9196ec27, 0xcfbd399c, 0x69ca3228, 0x582228b5, + 0xfe552301, 0x3bf21d8f, 0x9d85163b, 0xac6d0ca6, 0x0a1a0712, + 0xfc5277fb, 0x5a257c4f, 0x6bcd66d2, 0xcdba6d66, 0x081d53e8, + 0xae6a585c, 0x9f8242c1, 0x39f54975, 0xa863a552, 0x0e14aee6, + 0x3ffcb47b, 0x998bbfcf, 0x5c2c8141, 0xfa5b8af5, 0xcbb39068, + 0x6dc49bdc, 0x9b8ceb35, 0x3dfbe081, 0x0c13fa1c, 0xaa64f1a8, + 0x6fc3cf26, 0xc9b4c492, 0xf85cde0f, 0x5e2bd5bb, 0x440b7579, + 0xe27c7ecd, 0xd3946450, 0x75e36fe4, 0xb044516a, 0x16335ade, + 0x27db4043, 0x81ac4bf7, 0x77e43b1e, 0xd19330aa, 0xe07b2a37, + 0x460c2183, 0x83ab1f0d, 0x25dc14b9, 0x14340e24, 0xb2430590, + 0x23d5e9b7, 0x85a2e203, 0xb44af89e, 0x123df32a, 0xd79acda4, + 0x71edc610, 0x4005dc8d, 0xe672d739, 0x103aa7d0, 0xb64dac64, + 0x87a5b6f9, 0x21d2bd4d, 0xe47583c3, 0x42028877, 0x73ea92ea, + 0xd59d995e, 0x8bb64ce5, 0x2dc14751, 0x1c295dcc, 0xba5e5678, + 0x7ff968f6, 0xd98e6342, 0xe86679df, 0x4e11726b, 0xb8590282, + 0x1e2e0936, 0x2fc613ab, 0x89b1181f, 0x4c162691, 0xea612d25, + 0xdb8937b8, 0x7dfe3c0c, 0xec68d02b, 0x4a1fdb9f, 0x7bf7c102, + 0xdd80cab6, 0x1827f438, 0xbe50ff8c, 0x8fb8e511, 0x29cfeea5, + 0xdf879e4c, 0x79f095f8, 0x48188f65, 0xee6f84d1, 0x2bc8ba5f, + 0x8dbfb1eb, 0xbc57ab76, 0x1a20a0c2, 0x8816eaf2, 0x2e61e146, + 0x1f89fbdb, 0xb9fef06f, 0x7c59cee1, 0xda2ec555, 0xebc6dfc8, + 0x4db1d47c, 0xbbf9a495, 0x1d8eaf21, 0x2c66b5bc, 0x8a11be08, + 0x4fb68086, 0xe9c18b32, 0xd82991af, 0x7e5e9a1b, 0xefc8763c, + 0x49bf7d88, 0x78576715, 0xde206ca1, 0x1b87522f, 0xbdf0599b, + 0x8c184306, 0x2a6f48b2, 0xdc27385b, 0x7a5033ef, 0x4bb82972, + 0xedcf22c6, 0x28681c48, 0x8e1f17fc, 0xbff70d61, 0x198006d5, + 0x47abd36e, 0xe1dcd8da, 0xd034c247, 0x7643c9f3, 0xb3e4f77d, + 0x1593fcc9, 0x247be654, 0x820cede0, 0x74449d09, 0xd23396bd, + 0xe3db8c20, 0x45ac8794, 0x800bb91a, 0x267cb2ae, 0x1794a833, + 0xb1e3a387, 0x20754fa0, 0x86024414, 0xb7ea5e89, 0x119d553d, + 0xd43a6bb3, 0x724d6007, 0x43a57a9a, 0xe5d2712e, 0x139a01c7, + 0xb5ed0a73, 0x840510ee, 0x22721b5a, 0xe7d525d4, 0x41a22e60, + 0x704a34fd, 0xd63d3f49, 0xcc1d9f8b, 0x6a6a943f, 0x5b828ea2, + 0xfdf58516, 0x3852bb98, 0x9e25b02c, 0xafcdaab1, 0x09baa105, + 0xfff2d1ec, 0x5985da58, 0x686dc0c5, 0xce1acb71, 0x0bbdf5ff, + 0xadcafe4b, 0x9c22e4d6, 0x3a55ef62, 0xabc30345, 0x0db408f1, + 0x3c5c126c, 0x9a2b19d8, 0x5f8c2756, 0xf9fb2ce2, 0xc813367f, + 0x6e643dcb, 0x982c4d22, 0x3e5b4696, 0x0fb35c0b, 0xa9c457bf, + 0x6c636931, 0xca146285, 0xfbfc7818, 0x5d8b73ac, 0x03a0a617, + 0xa5d7ada3, 0x943fb73e, 0x3248bc8a, 0xf7ef8204, 0x519889b0, + 0x6070932d, 0xc6079899, 0x304fe870, 0x9638e3c4, 0xa7d0f959, + 0x01a7f2ed, 0xc400cc63, 0x6277c7d7, 0x539fdd4a, 0xf5e8d6fe, + 0x647e3ad9, 0xc209316d, 0xf3e12bf0, 0x55962044, 0x90311eca, + 0x3646157e, 0x07ae0fe3, 0xa1d90457, 0x579174be, 0xf1e67f0a, + 0xc00e6597, 0x66796e23, 0xa3de50ad, 0x05a95b19, 0x34414184, + 0x92364a30}, + {0x00000000, 0xcb5cd3a5, 0x4dc8a10b, 0x869472ae, 0x9b914216, + 0x50cd91b3, 0xd659e31d, 0x1d0530b8, 0xec53826d, 0x270f51c8, + 0xa19b2366, 0x6ac7f0c3, 0x77c2c07b, 0xbc9e13de, 0x3a0a6170, + 0xf156b2d5, 0x03d6029b, 0xc88ad13e, 0x4e1ea390, 0x85427035, + 0x9847408d, 0x531b9328, 0xd58fe186, 0x1ed33223, 0xef8580f6, + 0x24d95353, 0xa24d21fd, 0x6911f258, 0x7414c2e0, 0xbf481145, + 0x39dc63eb, 0xf280b04e, 0x07ac0536, 0xccf0d693, 0x4a64a43d, + 0x81387798, 0x9c3d4720, 0x57619485, 0xd1f5e62b, 0x1aa9358e, + 0xebff875b, 0x20a354fe, 0xa6372650, 0x6d6bf5f5, 0x706ec54d, + 0xbb3216e8, 0x3da66446, 0xf6fab7e3, 0x047a07ad, 0xcf26d408, + 0x49b2a6a6, 0x82ee7503, 0x9feb45bb, 0x54b7961e, 0xd223e4b0, + 0x197f3715, 0xe82985c0, 0x23755665, 0xa5e124cb, 0x6ebdf76e, + 0x73b8c7d6, 0xb8e41473, 0x3e7066dd, 0xf52cb578, 0x0f580a6c, + 0xc404d9c9, 0x4290ab67, 0x89cc78c2, 0x94c9487a, 0x5f959bdf, + 0xd901e971, 0x125d3ad4, 0xe30b8801, 0x28575ba4, 0xaec3290a, + 0x659ffaaf, 0x789aca17, 0xb3c619b2, 0x35526b1c, 0xfe0eb8b9, + 0x0c8e08f7, 0xc7d2db52, 0x4146a9fc, 0x8a1a7a59, 0x971f4ae1, + 0x5c439944, 0xdad7ebea, 0x118b384f, 0xe0dd8a9a, 0x2b81593f, + 0xad152b91, 0x6649f834, 0x7b4cc88c, 0xb0101b29, 0x36846987, + 0xfdd8ba22, 0x08f40f5a, 0xc3a8dcff, 0x453cae51, 0x8e607df4, + 0x93654d4c, 0x58399ee9, 0xdeadec47, 0x15f13fe2, 0xe4a78d37, + 0x2ffb5e92, 0xa96f2c3c, 0x6233ff99, 0x7f36cf21, 0xb46a1c84, + 0x32fe6e2a, 0xf9a2bd8f, 0x0b220dc1, 0xc07ede64, 0x46eaacca, + 0x8db67f6f, 0x90b34fd7, 0x5bef9c72, 0xdd7beedc, 0x16273d79, + 0xe7718fac, 0x2c2d5c09, 0xaab92ea7, 0x61e5fd02, 0x7ce0cdba, + 0xb7bc1e1f, 0x31286cb1, 0xfa74bf14, 0x1eb014d8, 0xd5ecc77d, + 0x5378b5d3, 0x98246676, 0x852156ce, 0x4e7d856b, 0xc8e9f7c5, + 0x03b52460, 0xf2e396b5, 0x39bf4510, 0xbf2b37be, 0x7477e41b, + 0x6972d4a3, 0xa22e0706, 0x24ba75a8, 0xefe6a60d, 0x1d661643, + 0xd63ac5e6, 0x50aeb748, 0x9bf264ed, 0x86f75455, 0x4dab87f0, + 0xcb3ff55e, 0x006326fb, 0xf135942e, 0x3a69478b, 0xbcfd3525, + 0x77a1e680, 0x6aa4d638, 0xa1f8059d, 0x276c7733, 0xec30a496, + 0x191c11ee, 0xd240c24b, 0x54d4b0e5, 0x9f886340, 0x828d53f8, + 0x49d1805d, 0xcf45f2f3, 0x04192156, 0xf54f9383, 0x3e134026, + 0xb8873288, 0x73dbe12d, 0x6eded195, 0xa5820230, 0x2316709e, + 0xe84aa33b, 0x1aca1375, 0xd196c0d0, 0x5702b27e, 0x9c5e61db, + 0x815b5163, 0x4a0782c6, 0xcc93f068, 0x07cf23cd, 0xf6999118, + 0x3dc542bd, 0xbb513013, 0x700de3b6, 0x6d08d30e, 0xa65400ab, + 0x20c07205, 0xeb9ca1a0, 0x11e81eb4, 0xdab4cd11, 0x5c20bfbf, + 0x977c6c1a, 0x8a795ca2, 0x41258f07, 0xc7b1fda9, 0x0ced2e0c, + 0xfdbb9cd9, 0x36e74f7c, 0xb0733dd2, 0x7b2fee77, 0x662adecf, + 0xad760d6a, 0x2be27fc4, 0xe0beac61, 0x123e1c2f, 0xd962cf8a, + 0x5ff6bd24, 0x94aa6e81, 0x89af5e39, 0x42f38d9c, 0xc467ff32, + 0x0f3b2c97, 0xfe6d9e42, 0x35314de7, 0xb3a53f49, 0x78f9ecec, + 0x65fcdc54, 0xaea00ff1, 0x28347d5f, 0xe368aefa, 0x16441b82, + 0xdd18c827, 0x5b8cba89, 0x90d0692c, 0x8dd55994, 0x46898a31, + 0xc01df89f, 0x0b412b3a, 0xfa1799ef, 0x314b4a4a, 0xb7df38e4, + 0x7c83eb41, 0x6186dbf9, 0xaada085c, 0x2c4e7af2, 0xe712a957, + 0x15921919, 0xdececabc, 0x585ab812, 0x93066bb7, 0x8e035b0f, + 0x455f88aa, 0xc3cbfa04, 0x089729a1, 0xf9c19b74, 0x329d48d1, + 0xb4093a7f, 0x7f55e9da, 0x6250d962, 0xa90c0ac7, 0x2f987869, + 0xe4c4abcc}, + {0x00000000, 0x3d6029b0, 0x7ac05360, 0x47a07ad0, 0xf580a6c0, + 0xc8e08f70, 0x8f40f5a0, 0xb220dc10, 0x30704bc1, 0x0d106271, + 0x4ab018a1, 0x77d03111, 0xc5f0ed01, 0xf890c4b1, 0xbf30be61, + 0x825097d1, 0x60e09782, 0x5d80be32, 0x1a20c4e2, 0x2740ed52, + 0x95603142, 0xa80018f2, 0xefa06222, 0xd2c04b92, 0x5090dc43, + 0x6df0f5f3, 0x2a508f23, 0x1730a693, 0xa5107a83, 0x98705333, + 0xdfd029e3, 0xe2b00053, 0xc1c12f04, 0xfca106b4, 0xbb017c64, + 0x866155d4, 0x344189c4, 0x0921a074, 0x4e81daa4, 0x73e1f314, + 0xf1b164c5, 0xccd14d75, 0x8b7137a5, 0xb6111e15, 0x0431c205, + 0x3951ebb5, 0x7ef19165, 0x4391b8d5, 0xa121b886, 0x9c419136, + 0xdbe1ebe6, 0xe681c256, 0x54a11e46, 0x69c137f6, 0x2e614d26, + 0x13016496, 0x9151f347, 0xac31daf7, 0xeb91a027, 0xd6f18997, + 0x64d15587, 0x59b17c37, 0x1e1106e7, 0x23712f57, 0x58f35849, + 0x659371f9, 0x22330b29, 0x1f532299, 0xad73fe89, 0x9013d739, + 0xd7b3ade9, 0xead38459, 0x68831388, 0x55e33a38, 0x124340e8, + 0x2f236958, 0x9d03b548, 0xa0639cf8, 0xe7c3e628, 0xdaa3cf98, + 0x3813cfcb, 0x0573e67b, 0x42d39cab, 0x7fb3b51b, 0xcd93690b, + 0xf0f340bb, 0xb7533a6b, 0x8a3313db, 0x0863840a, 0x3503adba, + 0x72a3d76a, 0x4fc3feda, 0xfde322ca, 0xc0830b7a, 0x872371aa, + 0xba43581a, 0x9932774d, 0xa4525efd, 0xe3f2242d, 0xde920d9d, + 0x6cb2d18d, 0x51d2f83d, 0x167282ed, 0x2b12ab5d, 0xa9423c8c, + 0x9422153c, 0xd3826fec, 0xeee2465c, 0x5cc29a4c, 0x61a2b3fc, + 0x2602c92c, 0x1b62e09c, 0xf9d2e0cf, 0xc4b2c97f, 0x8312b3af, + 0xbe729a1f, 0x0c52460f, 0x31326fbf, 0x7692156f, 0x4bf23cdf, + 0xc9a2ab0e, 0xf4c282be, 0xb362f86e, 0x8e02d1de, 0x3c220dce, + 0x0142247e, 0x46e25eae, 0x7b82771e, 0xb1e6b092, 0x8c869922, + 0xcb26e3f2, 0xf646ca42, 0x44661652, 0x79063fe2, 0x3ea64532, + 0x03c66c82, 0x8196fb53, 0xbcf6d2e3, 0xfb56a833, 0xc6368183, + 0x74165d93, 0x49767423, 0x0ed60ef3, 0x33b62743, 0xd1062710, + 0xec660ea0, 0xabc67470, 0x96a65dc0, 0x248681d0, 0x19e6a860, + 0x5e46d2b0, 0x6326fb00, 0xe1766cd1, 0xdc164561, 0x9bb63fb1, + 0xa6d61601, 0x14f6ca11, 0x2996e3a1, 0x6e369971, 0x5356b0c1, + 0x70279f96, 0x4d47b626, 0x0ae7ccf6, 0x3787e546, 0x85a73956, + 0xb8c710e6, 0xff676a36, 0xc2074386, 0x4057d457, 0x7d37fde7, + 0x3a978737, 0x07f7ae87, 0xb5d77297, 0x88b75b27, 0xcf1721f7, + 0xf2770847, 0x10c70814, 0x2da721a4, 0x6a075b74, 0x576772c4, + 0xe547aed4, 0xd8278764, 0x9f87fdb4, 0xa2e7d404, 0x20b743d5, + 0x1dd76a65, 0x5a7710b5, 0x67173905, 0xd537e515, 0xe857cca5, + 0xaff7b675, 0x92979fc5, 0xe915e8db, 0xd475c16b, 0x93d5bbbb, + 0xaeb5920b, 0x1c954e1b, 0x21f567ab, 0x66551d7b, 0x5b3534cb, + 0xd965a31a, 0xe4058aaa, 0xa3a5f07a, 0x9ec5d9ca, 0x2ce505da, + 0x11852c6a, 0x562556ba, 0x6b457f0a, 0x89f57f59, 0xb49556e9, + 0xf3352c39, 0xce550589, 0x7c75d999, 0x4115f029, 0x06b58af9, + 0x3bd5a349, 0xb9853498, 0x84e51d28, 0xc34567f8, 0xfe254e48, + 0x4c059258, 0x7165bbe8, 0x36c5c138, 0x0ba5e888, 0x28d4c7df, + 0x15b4ee6f, 0x521494bf, 0x6f74bd0f, 0xdd54611f, 0xe03448af, + 0xa794327f, 0x9af41bcf, 0x18a48c1e, 0x25c4a5ae, 0x6264df7e, + 0x5f04f6ce, 0xed242ade, 0xd044036e, 0x97e479be, 0xaa84500e, + 0x4834505d, 0x755479ed, 0x32f4033d, 0x0f942a8d, 0xbdb4f69d, + 0x80d4df2d, 0xc774a5fd, 0xfa148c4d, 0x78441b9c, 0x4524322c, + 0x028448fc, 0x3fe4614c, 0x8dc4bd5c, 0xb0a494ec, 0xf704ee3c, + 0xca64c78c}, + {0x00000000, 0xb8bc6765, 0xaa09c88b, 0x12b5afee, 0x8f629757, + 0x37def032, 0x256b5fdc, 0x9dd738b9, 0xc5b428ef, 0x7d084f8a, + 0x6fbde064, 0xd7018701, 0x4ad6bfb8, 0xf26ad8dd, 0xe0df7733, + 0x58631056, 0x5019579f, 0xe8a530fa, 0xfa109f14, 0x42acf871, + 0xdf7bc0c8, 0x67c7a7ad, 0x75720843, 0xcdce6f26, 0x95ad7f70, + 0x2d111815, 0x3fa4b7fb, 0x8718d09e, 0x1acfe827, 0xa2738f42, + 0xb0c620ac, 0x087a47c9, 0xa032af3e, 0x188ec85b, 0x0a3b67b5, + 0xb28700d0, 0x2f503869, 0x97ec5f0c, 0x8559f0e2, 0x3de59787, + 0x658687d1, 0xdd3ae0b4, 0xcf8f4f5a, 0x7733283f, 0xeae41086, + 0x525877e3, 0x40edd80d, 0xf851bf68, 0xf02bf8a1, 0x48979fc4, + 0x5a22302a, 0xe29e574f, 0x7f496ff6, 0xc7f50893, 0xd540a77d, + 0x6dfcc018, 0x359fd04e, 0x8d23b72b, 0x9f9618c5, 0x272a7fa0, + 0xbafd4719, 0x0241207c, 0x10f48f92, 0xa848e8f7, 0x9b14583d, + 0x23a83f58, 0x311d90b6, 0x89a1f7d3, 0x1476cf6a, 0xaccaa80f, + 0xbe7f07e1, 0x06c36084, 0x5ea070d2, 0xe61c17b7, 0xf4a9b859, + 0x4c15df3c, 0xd1c2e785, 0x697e80e0, 0x7bcb2f0e, 0xc377486b, + 0xcb0d0fa2, 0x73b168c7, 0x6104c729, 0xd9b8a04c, 0x446f98f5, + 0xfcd3ff90, 0xee66507e, 0x56da371b, 0x0eb9274d, 0xb6054028, + 0xa4b0efc6, 0x1c0c88a3, 0x81dbb01a, 0x3967d77f, 0x2bd27891, + 0x936e1ff4, 0x3b26f703, 0x839a9066, 0x912f3f88, 0x299358ed, + 0xb4446054, 0x0cf80731, 0x1e4da8df, 0xa6f1cfba, 0xfe92dfec, + 0x462eb889, 0x549b1767, 0xec277002, 0x71f048bb, 0xc94c2fde, + 0xdbf98030, 0x6345e755, 0x6b3fa09c, 0xd383c7f9, 0xc1366817, + 0x798a0f72, 0xe45d37cb, 0x5ce150ae, 0x4e54ff40, 0xf6e89825, + 0xae8b8873, 0x1637ef16, 0x048240f8, 0xbc3e279d, 0x21e91f24, + 0x99557841, 0x8be0d7af, 0x335cb0ca, 0xed59b63b, 0x55e5d15e, + 0x47507eb0, 0xffec19d5, 0x623b216c, 0xda874609, 0xc832e9e7, + 0x708e8e82, 0x28ed9ed4, 0x9051f9b1, 0x82e4565f, 0x3a58313a, + 0xa78f0983, 0x1f336ee6, 0x0d86c108, 0xb53aa66d, 0xbd40e1a4, + 0x05fc86c1, 0x1749292f, 0xaff54e4a, 0x322276f3, 0x8a9e1196, + 0x982bbe78, 0x2097d91d, 0x78f4c94b, 0xc048ae2e, 0xd2fd01c0, + 0x6a4166a5, 0xf7965e1c, 0x4f2a3979, 0x5d9f9697, 0xe523f1f2, + 0x4d6b1905, 0xf5d77e60, 0xe762d18e, 0x5fdeb6eb, 0xc2098e52, + 0x7ab5e937, 0x680046d9, 0xd0bc21bc, 0x88df31ea, 0x3063568f, + 0x22d6f961, 0x9a6a9e04, 0x07bda6bd, 0xbf01c1d8, 0xadb46e36, + 0x15080953, 0x1d724e9a, 0xa5ce29ff, 0xb77b8611, 0x0fc7e174, + 0x9210d9cd, 0x2aacbea8, 0x38191146, 0x80a57623, 0xd8c66675, + 0x607a0110, 0x72cfaefe, 0xca73c99b, 0x57a4f122, 0xef189647, + 0xfdad39a9, 0x45115ecc, 0x764dee06, 0xcef18963, 0xdc44268d, + 0x64f841e8, 0xf92f7951, 0x41931e34, 0x5326b1da, 0xeb9ad6bf, + 0xb3f9c6e9, 0x0b45a18c, 0x19f00e62, 0xa14c6907, 0x3c9b51be, + 0x842736db, 0x96929935, 0x2e2efe50, 0x2654b999, 0x9ee8defc, + 0x8c5d7112, 0x34e11677, 0xa9362ece, 0x118a49ab, 0x033fe645, + 0xbb838120, 0xe3e09176, 0x5b5cf613, 0x49e959fd, 0xf1553e98, + 0x6c820621, 0xd43e6144, 0xc68bceaa, 0x7e37a9cf, 0xd67f4138, + 0x6ec3265d, 0x7c7689b3, 0xc4caeed6, 0x591dd66f, 0xe1a1b10a, + 0xf3141ee4, 0x4ba87981, 0x13cb69d7, 0xab770eb2, 0xb9c2a15c, + 0x017ec639, 0x9ca9fe80, 0x241599e5, 0x36a0360b, 0x8e1c516e, + 0x866616a7, 0x3eda71c2, 0x2c6fde2c, 0x94d3b949, 0x090481f0, + 0xb1b8e695, 0xa30d497b, 0x1bb12e1e, 0x43d23e48, 0xfb6e592d, + 0xe9dbf6c3, 0x516791a6, 0xccb0a91f, 0x740cce7a, 0x66b96194, + 0xde0506f1}, + {0x00000000, 0x01c26a37, 0x0384d46e, 0x0246be59, 0x0709a8dc, + 0x06cbc2eb, 0x048d7cb2, 0x054f1685, 0x0e1351b8, 0x0fd13b8f, + 0x0d9785d6, 0x0c55efe1, 0x091af964, 0x08d89353, 0x0a9e2d0a, + 0x0b5c473d, 0x1c26a370, 0x1de4c947, 0x1fa2771e, 0x1e601d29, + 0x1b2f0bac, 0x1aed619b, 0x18abdfc2, 0x1969b5f5, 0x1235f2c8, + 0x13f798ff, 0x11b126a6, 0x10734c91, 0x153c5a14, 0x14fe3023, + 0x16b88e7a, 0x177ae44d, 0x384d46e0, 0x398f2cd7, 0x3bc9928e, + 0x3a0bf8b9, 0x3f44ee3c, 0x3e86840b, 0x3cc03a52, 0x3d025065, + 0x365e1758, 0x379c7d6f, 0x35dac336, 0x3418a901, 0x3157bf84, + 0x3095d5b3, 0x32d36bea, 0x331101dd, 0x246be590, 0x25a98fa7, + 0x27ef31fe, 0x262d5bc9, 0x23624d4c, 0x22a0277b, 0x20e69922, + 0x2124f315, 0x2a78b428, 0x2bbade1f, 0x29fc6046, 0x283e0a71, + 0x2d711cf4, 0x2cb376c3, 0x2ef5c89a, 0x2f37a2ad, 0x709a8dc0, + 0x7158e7f7, 0x731e59ae, 0x72dc3399, 0x7793251c, 0x76514f2b, + 0x7417f172, 0x75d59b45, 0x7e89dc78, 0x7f4bb64f, 0x7d0d0816, + 0x7ccf6221, 0x798074a4, 0x78421e93, 0x7a04a0ca, 0x7bc6cafd, + 0x6cbc2eb0, 0x6d7e4487, 0x6f38fade, 0x6efa90e9, 0x6bb5866c, + 0x6a77ec5b, 0x68315202, 0x69f33835, 0x62af7f08, 0x636d153f, + 0x612bab66, 0x60e9c151, 0x65a6d7d4, 0x6464bde3, 0x662203ba, + 0x67e0698d, 0x48d7cb20, 0x4915a117, 0x4b531f4e, 0x4a917579, + 0x4fde63fc, 0x4e1c09cb, 0x4c5ab792, 0x4d98dda5, 0x46c49a98, + 0x4706f0af, 0x45404ef6, 0x448224c1, 0x41cd3244, 0x400f5873, + 0x4249e62a, 0x438b8c1d, 0x54f16850, 0x55330267, 0x5775bc3e, + 0x56b7d609, 0x53f8c08c, 0x523aaabb, 0x507c14e2, 0x51be7ed5, + 0x5ae239e8, 0x5b2053df, 0x5966ed86, 0x58a487b1, 0x5deb9134, + 0x5c29fb03, 0x5e6f455a, 0x5fad2f6d, 0xe1351b80, 0xe0f771b7, + 0xe2b1cfee, 0xe373a5d9, 0xe63cb35c, 0xe7fed96b, 0xe5b86732, + 0xe47a0d05, 0xef264a38, 0xeee4200f, 0xeca29e56, 0xed60f461, + 0xe82fe2e4, 0xe9ed88d3, 0xebab368a, 0xea695cbd, 0xfd13b8f0, + 0xfcd1d2c7, 0xfe976c9e, 0xff5506a9, 0xfa1a102c, 0xfbd87a1b, + 0xf99ec442, 0xf85cae75, 0xf300e948, 0xf2c2837f, 0xf0843d26, + 0xf1465711, 0xf4094194, 0xf5cb2ba3, 0xf78d95fa, 0xf64fffcd, + 0xd9785d60, 0xd8ba3757, 0xdafc890e, 0xdb3ee339, 0xde71f5bc, + 0xdfb39f8b, 0xddf521d2, 0xdc374be5, 0xd76b0cd8, 0xd6a966ef, + 0xd4efd8b6, 0xd52db281, 0xd062a404, 0xd1a0ce33, 0xd3e6706a, + 0xd2241a5d, 0xc55efe10, 0xc49c9427, 0xc6da2a7e, 0xc7184049, + 0xc25756cc, 0xc3953cfb, 0xc1d382a2, 0xc011e895, 0xcb4dafa8, + 0xca8fc59f, 0xc8c97bc6, 0xc90b11f1, 0xcc440774, 0xcd866d43, + 0xcfc0d31a, 0xce02b92d, 0x91af9640, 0x906dfc77, 0x922b422e, + 0x93e92819, 0x96a63e9c, 0x976454ab, 0x9522eaf2, 0x94e080c5, + 0x9fbcc7f8, 0x9e7eadcf, 0x9c381396, 0x9dfa79a1, 0x98b56f24, + 0x99770513, 0x9b31bb4a, 0x9af3d17d, 0x8d893530, 0x8c4b5f07, + 0x8e0de15e, 0x8fcf8b69, 0x8a809dec, 0x8b42f7db, 0x89044982, + 0x88c623b5, 0x839a6488, 0x82580ebf, 0x801eb0e6, 0x81dcdad1, + 0x8493cc54, 0x8551a663, 0x8717183a, 0x86d5720d, 0xa9e2d0a0, + 0xa820ba97, 0xaa6604ce, 0xaba46ef9, 0xaeeb787c, 0xaf29124b, + 0xad6fac12, 0xacadc625, 0xa7f18118, 0xa633eb2f, 0xa4755576, + 0xa5b73f41, 0xa0f829c4, 0xa13a43f3, 0xa37cfdaa, 0xa2be979d, + 0xb5c473d0, 0xb40619e7, 0xb640a7be, 0xb782cd89, 0xb2cddb0c, + 0xb30fb13b, 0xb1490f62, 0xb08b6555, 0xbbd72268, 0xba15485f, + 0xb853f606, 0xb9919c31, 0xbcde8ab4, 0xbd1ce083, 0xbf5a5eda, + 0xbe9834ed}, + {0x00000000, 0x191b3141, 0x32366282, 0x2b2d53c3, 0x646cc504, + 0x7d77f445, 0x565aa786, 0x4f4196c7, 0xc8d98a08, 0xd1c2bb49, + 0xfaefe88a, 0xe3f4d9cb, 0xacb54f0c, 0xb5ae7e4d, 0x9e832d8e, + 0x87981ccf, 0x4ac21251, 0x53d92310, 0x78f470d3, 0x61ef4192, + 0x2eaed755, 0x37b5e614, 0x1c98b5d7, 0x05838496, 0x821b9859, + 0x9b00a918, 0xb02dfadb, 0xa936cb9a, 0xe6775d5d, 0xff6c6c1c, + 0xd4413fdf, 0xcd5a0e9e, 0x958424a2, 0x8c9f15e3, 0xa7b24620, + 0xbea97761, 0xf1e8e1a6, 0xe8f3d0e7, 0xc3de8324, 0xdac5b265, + 0x5d5daeaa, 0x44469feb, 0x6f6bcc28, 0x7670fd69, 0x39316bae, + 0x202a5aef, 0x0b07092c, 0x121c386d, 0xdf4636f3, 0xc65d07b2, + 0xed705471, 0xf46b6530, 0xbb2af3f7, 0xa231c2b6, 0x891c9175, + 0x9007a034, 0x179fbcfb, 0x0e848dba, 0x25a9de79, 0x3cb2ef38, + 0x73f379ff, 0x6ae848be, 0x41c51b7d, 0x58de2a3c, 0xf0794f05, + 0xe9627e44, 0xc24f2d87, 0xdb541cc6, 0x94158a01, 0x8d0ebb40, + 0xa623e883, 0xbf38d9c2, 0x38a0c50d, 0x21bbf44c, 0x0a96a78f, + 0x138d96ce, 0x5ccc0009, 0x45d73148, 0x6efa628b, 0x77e153ca, + 0xbabb5d54, 0xa3a06c15, 0x888d3fd6, 0x91960e97, 0xded79850, + 0xc7cca911, 0xece1fad2, 0xf5facb93, 0x7262d75c, 0x6b79e61d, + 0x4054b5de, 0x594f849f, 0x160e1258, 0x0f152319, 0x243870da, + 0x3d23419b, 0x65fd6ba7, 0x7ce65ae6, 0x57cb0925, 0x4ed03864, + 0x0191aea3, 0x188a9fe2, 0x33a7cc21, 0x2abcfd60, 0xad24e1af, + 0xb43fd0ee, 0x9f12832d, 0x8609b26c, 0xc94824ab, 0xd05315ea, + 0xfb7e4629, 0xe2657768, 0x2f3f79f6, 0x362448b7, 0x1d091b74, + 0x04122a35, 0x4b53bcf2, 0x52488db3, 0x7965de70, 0x607eef31, + 0xe7e6f3fe, 0xfefdc2bf, 0xd5d0917c, 0xcccba03d, 0x838a36fa, + 0x9a9107bb, 0xb1bc5478, 0xa8a76539, 0x3b83984b, 0x2298a90a, + 0x09b5fac9, 0x10aecb88, 0x5fef5d4f, 0x46f46c0e, 0x6dd93fcd, + 0x74c20e8c, 0xf35a1243, 0xea412302, 0xc16c70c1, 0xd8774180, + 0x9736d747, 0x8e2de606, 0xa500b5c5, 0xbc1b8484, 0x71418a1a, + 0x685abb5b, 0x4377e898, 0x5a6cd9d9, 0x152d4f1e, 0x0c367e5f, + 0x271b2d9c, 0x3e001cdd, 0xb9980012, 0xa0833153, 0x8bae6290, + 0x92b553d1, 0xddf4c516, 0xc4eff457, 0xefc2a794, 0xf6d996d5, + 0xae07bce9, 0xb71c8da8, 0x9c31de6b, 0x852aef2a, 0xca6b79ed, + 0xd37048ac, 0xf85d1b6f, 0xe1462a2e, 0x66de36e1, 0x7fc507a0, + 0x54e85463, 0x4df36522, 0x02b2f3e5, 0x1ba9c2a4, 0x30849167, + 0x299fa026, 0xe4c5aeb8, 0xfdde9ff9, 0xd6f3cc3a, 0xcfe8fd7b, + 0x80a96bbc, 0x99b25afd, 0xb29f093e, 0xab84387f, 0x2c1c24b0, + 0x350715f1, 0x1e2a4632, 0x07317773, 0x4870e1b4, 0x516bd0f5, + 0x7a468336, 0x635db277, 0xcbfad74e, 0xd2e1e60f, 0xf9ccb5cc, + 0xe0d7848d, 0xaf96124a, 0xb68d230b, 0x9da070c8, 0x84bb4189, + 0x03235d46, 0x1a386c07, 0x31153fc4, 0x280e0e85, 0x674f9842, + 0x7e54a903, 0x5579fac0, 0x4c62cb81, 0x8138c51f, 0x9823f45e, + 0xb30ea79d, 0xaa1596dc, 0xe554001b, 0xfc4f315a, 0xd7626299, + 0xce7953d8, 0x49e14f17, 0x50fa7e56, 0x7bd72d95, 0x62cc1cd4, + 0x2d8d8a13, 0x3496bb52, 0x1fbbe891, 0x06a0d9d0, 0x5e7ef3ec, + 0x4765c2ad, 0x6c48916e, 0x7553a02f, 0x3a1236e8, 0x230907a9, + 0x0824546a, 0x113f652b, 0x96a779e4, 0x8fbc48a5, 0xa4911b66, + 0xbd8a2a27, 0xf2cbbce0, 0xebd08da1, 0xc0fdde62, 0xd9e6ef23, + 0x14bce1bd, 0x0da7d0fc, 0x268a833f, 0x3f91b27e, 0x70d024b9, + 0x69cb15f8, 0x42e6463b, 0x5bfd777a, 0xdc656bb5, 0xc57e5af4, + 0xee530937, 0xf7483876, 0xb809aeb1, 0xa1129ff0, 0x8a3fcc33, + 0x9324fd72}, + {0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, + 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, + 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, + 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, + 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856, + 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, + 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, + 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, + 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, + 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a, + 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, + 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, + 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, + 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, + 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e, + 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01, + 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, + 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, + 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, + 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, + 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, + 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, + 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010, + 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, + 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, + 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, + 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, + 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, + 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344, + 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, + 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, + 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, + 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, + 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c, + 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, + 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, + 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, + 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, + 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c, + 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713, + 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, + 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242, + 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, + 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, + 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278, + 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, + 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66, + 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, + 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, + 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, + 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, + 0x2d02ef8d}}; + +local const z_word_t FAR crc_braid_big_table[][256] = { + {0x0000000000000000, 0x9630077700000000, 0x2c610eee00000000, + 0xba51099900000000, 0x19c46d0700000000, 0x8ff46a7000000000, + 0x35a563e900000000, 0xa395649e00000000, 0x3288db0e00000000, + 0xa4b8dc7900000000, 0x1ee9d5e000000000, 0x88d9d29700000000, + 0x2b4cb60900000000, 0xbd7cb17e00000000, 0x072db8e700000000, + 0x911dbf9000000000, 0x6410b71d00000000, 0xf220b06a00000000, + 0x4871b9f300000000, 0xde41be8400000000, 0x7dd4da1a00000000, + 0xebe4dd6d00000000, 0x51b5d4f400000000, 0xc785d38300000000, + 0x56986c1300000000, 0xc0a86b6400000000, 0x7af962fd00000000, + 0xecc9658a00000000, 0x4f5c011400000000, 0xd96c066300000000, + 0x633d0ffa00000000, 0xf50d088d00000000, 0xc8206e3b00000000, + 0x5e10694c00000000, 0xe44160d500000000, 0x727167a200000000, + 0xd1e4033c00000000, 0x47d4044b00000000, 0xfd850dd200000000, + 0x6bb50aa500000000, 0xfaa8b53500000000, 0x6c98b24200000000, + 0xd6c9bbdb00000000, 0x40f9bcac00000000, 0xe36cd83200000000, + 0x755cdf4500000000, 0xcf0dd6dc00000000, 0x593dd1ab00000000, + 0xac30d92600000000, 0x3a00de5100000000, 0x8051d7c800000000, + 0x1661d0bf00000000, 0xb5f4b42100000000, 0x23c4b35600000000, + 0x9995bacf00000000, 0x0fa5bdb800000000, 0x9eb8022800000000, + 0x0888055f00000000, 0xb2d90cc600000000, 0x24e90bb100000000, + 0x877c6f2f00000000, 0x114c685800000000, 0xab1d61c100000000, + 0x3d2d66b600000000, 0x9041dc7600000000, 0x0671db0100000000, + 0xbc20d29800000000, 0x2a10d5ef00000000, 0x8985b17100000000, + 0x1fb5b60600000000, 0xa5e4bf9f00000000, 0x33d4b8e800000000, + 0xa2c9077800000000, 0x34f9000f00000000, 0x8ea8099600000000, + 0x18980ee100000000, 0xbb0d6a7f00000000, 0x2d3d6d0800000000, + 0x976c649100000000, 0x015c63e600000000, 0xf4516b6b00000000, + 0x62616c1c00000000, 0xd830658500000000, 0x4e0062f200000000, + 0xed95066c00000000, 0x7ba5011b00000000, 0xc1f4088200000000, + 0x57c40ff500000000, 0xc6d9b06500000000, 0x50e9b71200000000, + 0xeab8be8b00000000, 0x7c88b9fc00000000, 0xdf1ddd6200000000, + 0x492dda1500000000, 0xf37cd38c00000000, 0x654cd4fb00000000, + 0x5861b24d00000000, 0xce51b53a00000000, 0x7400bca300000000, + 0xe230bbd400000000, 0x41a5df4a00000000, 0xd795d83d00000000, + 0x6dc4d1a400000000, 0xfbf4d6d300000000, 0x6ae9694300000000, + 0xfcd96e3400000000, 0x468867ad00000000, 0xd0b860da00000000, + 0x732d044400000000, 0xe51d033300000000, 0x5f4c0aaa00000000, + 0xc97c0ddd00000000, 0x3c71055000000000, 0xaa41022700000000, + 0x10100bbe00000000, 0x86200cc900000000, 0x25b5685700000000, + 0xb3856f2000000000, 0x09d466b900000000, 0x9fe461ce00000000, + 0x0ef9de5e00000000, 0x98c9d92900000000, 0x2298d0b000000000, + 0xb4a8d7c700000000, 0x173db35900000000, 0x810db42e00000000, + 0x3b5cbdb700000000, 0xad6cbac000000000, 0x2083b8ed00000000, + 0xb6b3bf9a00000000, 0x0ce2b60300000000, 0x9ad2b17400000000, + 0x3947d5ea00000000, 0xaf77d29d00000000, 0x1526db0400000000, + 0x8316dc7300000000, 0x120b63e300000000, 0x843b649400000000, + 0x3e6a6d0d00000000, 0xa85a6a7a00000000, 0x0bcf0ee400000000, + 0x9dff099300000000, 0x27ae000a00000000, 0xb19e077d00000000, + 0x44930ff000000000, 0xd2a3088700000000, 0x68f2011e00000000, + 0xfec2066900000000, 0x5d5762f700000000, 0xcb67658000000000, + 0x71366c1900000000, 0xe7066b6e00000000, 0x761bd4fe00000000, + 0xe02bd38900000000, 0x5a7ada1000000000, 0xcc4add6700000000, + 0x6fdfb9f900000000, 0xf9efbe8e00000000, 0x43beb71700000000, + 0xd58eb06000000000, 0xe8a3d6d600000000, 0x7e93d1a100000000, + 0xc4c2d83800000000, 0x52f2df4f00000000, 0xf167bbd100000000, + 0x6757bca600000000, 0xdd06b53f00000000, 0x4b36b24800000000, + 0xda2b0dd800000000, 0x4c1b0aaf00000000, 0xf64a033600000000, + 0x607a044100000000, 0xc3ef60df00000000, 0x55df67a800000000, + 0xef8e6e3100000000, 0x79be694600000000, 0x8cb361cb00000000, + 0x1a8366bc00000000, 0xa0d26f2500000000, 0x36e2685200000000, + 0x95770ccc00000000, 0x03470bbb00000000, 0xb916022200000000, + 0x2f26055500000000, 0xbe3bbac500000000, 0x280bbdb200000000, + 0x925ab42b00000000, 0x046ab35c00000000, 0xa7ffd7c200000000, + 0x31cfd0b500000000, 0x8b9ed92c00000000, 0x1daede5b00000000, + 0xb0c2649b00000000, 0x26f263ec00000000, 0x9ca36a7500000000, + 0x0a936d0200000000, 0xa906099c00000000, 0x3f360eeb00000000, + 0x8567077200000000, 0x1357000500000000, 0x824abf9500000000, + 0x147ab8e200000000, 0xae2bb17b00000000, 0x381bb60c00000000, + 0x9b8ed29200000000, 0x0dbed5e500000000, 0xb7efdc7c00000000, + 0x21dfdb0b00000000, 0xd4d2d38600000000, 0x42e2d4f100000000, + 0xf8b3dd6800000000, 0x6e83da1f00000000, 0xcd16be8100000000, + 0x5b26b9f600000000, 0xe177b06f00000000, 0x7747b71800000000, + 0xe65a088800000000, 0x706a0fff00000000, 0xca3b066600000000, + 0x5c0b011100000000, 0xff9e658f00000000, 0x69ae62f800000000, + 0xd3ff6b6100000000, 0x45cf6c1600000000, 0x78e20aa000000000, + 0xeed20dd700000000, 0x5483044e00000000, 0xc2b3033900000000, + 0x612667a700000000, 0xf71660d000000000, 0x4d47694900000000, + 0xdb776e3e00000000, 0x4a6ad1ae00000000, 0xdc5ad6d900000000, + 0x660bdf4000000000, 0xf03bd83700000000, 0x53aebca900000000, + 0xc59ebbde00000000, 0x7fcfb24700000000, 0xe9ffb53000000000, + 0x1cf2bdbd00000000, 0x8ac2baca00000000, 0x3093b35300000000, + 0xa6a3b42400000000, 0x0536d0ba00000000, 0x9306d7cd00000000, + 0x2957de5400000000, 0xbf67d92300000000, 0x2e7a66b300000000, + 0xb84a61c400000000, 0x021b685d00000000, 0x942b6f2a00000000, + 0x37be0bb400000000, 0xa18e0cc300000000, 0x1bdf055a00000000, + 0x8def022d00000000}, + {0x0000000000000000, 0x41311b1900000000, 0x8262363200000000, + 0xc3532d2b00000000, 0x04c56c6400000000, 0x45f4777d00000000, + 0x86a75a5600000000, 0xc796414f00000000, 0x088ad9c800000000, + 0x49bbc2d100000000, 0x8ae8effa00000000, 0xcbd9f4e300000000, + 0x0c4fb5ac00000000, 0x4d7eaeb500000000, 0x8e2d839e00000000, + 0xcf1c988700000000, 0x5112c24a00000000, 0x1023d95300000000, + 0xd370f47800000000, 0x9241ef6100000000, 0x55d7ae2e00000000, + 0x14e6b53700000000, 0xd7b5981c00000000, 0x9684830500000000, + 0x59981b8200000000, 0x18a9009b00000000, 0xdbfa2db000000000, + 0x9acb36a900000000, 0x5d5d77e600000000, 0x1c6c6cff00000000, + 0xdf3f41d400000000, 0x9e0e5acd00000000, 0xa224849500000000, + 0xe3159f8c00000000, 0x2046b2a700000000, 0x6177a9be00000000, + 0xa6e1e8f100000000, 0xe7d0f3e800000000, 0x2483dec300000000, + 0x65b2c5da00000000, 0xaaae5d5d00000000, 0xeb9f464400000000, + 0x28cc6b6f00000000, 0x69fd707600000000, 0xae6b313900000000, + 0xef5a2a2000000000, 0x2c09070b00000000, 0x6d381c1200000000, + 0xf33646df00000000, 0xb2075dc600000000, 0x715470ed00000000, + 0x30656bf400000000, 0xf7f32abb00000000, 0xb6c231a200000000, + 0x75911c8900000000, 0x34a0079000000000, 0xfbbc9f1700000000, + 0xba8d840e00000000, 0x79dea92500000000, 0x38efb23c00000000, + 0xff79f37300000000, 0xbe48e86a00000000, 0x7d1bc54100000000, + 0x3c2ade5800000000, 0x054f79f000000000, 0x447e62e900000000, + 0x872d4fc200000000, 0xc61c54db00000000, 0x018a159400000000, + 0x40bb0e8d00000000, 0x83e823a600000000, 0xc2d938bf00000000, + 0x0dc5a03800000000, 0x4cf4bb2100000000, 0x8fa7960a00000000, + 0xce968d1300000000, 0x0900cc5c00000000, 0x4831d74500000000, + 0x8b62fa6e00000000, 0xca53e17700000000, 0x545dbbba00000000, + 0x156ca0a300000000, 0xd63f8d8800000000, 0x970e969100000000, + 0x5098d7de00000000, 0x11a9ccc700000000, 0xd2fae1ec00000000, + 0x93cbfaf500000000, 0x5cd7627200000000, 0x1de6796b00000000, + 0xdeb5544000000000, 0x9f844f5900000000, 0x58120e1600000000, + 0x1923150f00000000, 0xda70382400000000, 0x9b41233d00000000, + 0xa76bfd6500000000, 0xe65ae67c00000000, 0x2509cb5700000000, + 0x6438d04e00000000, 0xa3ae910100000000, 0xe29f8a1800000000, + 0x21cca73300000000, 0x60fdbc2a00000000, 0xafe124ad00000000, + 0xeed03fb400000000, 0x2d83129f00000000, 0x6cb2098600000000, + 0xab2448c900000000, 0xea1553d000000000, 0x29467efb00000000, + 0x687765e200000000, 0xf6793f2f00000000, 0xb748243600000000, + 0x741b091d00000000, 0x352a120400000000, 0xf2bc534b00000000, + 0xb38d485200000000, 0x70de657900000000, 0x31ef7e6000000000, + 0xfef3e6e700000000, 0xbfc2fdfe00000000, 0x7c91d0d500000000, + 0x3da0cbcc00000000, 0xfa368a8300000000, 0xbb07919a00000000, + 0x7854bcb100000000, 0x3965a7a800000000, 0x4b98833b00000000, + 0x0aa9982200000000, 0xc9fab50900000000, 0x88cbae1000000000, + 0x4f5def5f00000000, 0x0e6cf44600000000, 0xcd3fd96d00000000, + 0x8c0ec27400000000, 0x43125af300000000, 0x022341ea00000000, + 0xc1706cc100000000, 0x804177d800000000, 0x47d7369700000000, + 0x06e62d8e00000000, 0xc5b500a500000000, 0x84841bbc00000000, + 0x1a8a417100000000, 0x5bbb5a6800000000, 0x98e8774300000000, + 0xd9d96c5a00000000, 0x1e4f2d1500000000, 0x5f7e360c00000000, + 0x9c2d1b2700000000, 0xdd1c003e00000000, 0x120098b900000000, + 0x533183a000000000, 0x9062ae8b00000000, 0xd153b59200000000, + 0x16c5f4dd00000000, 0x57f4efc400000000, 0x94a7c2ef00000000, + 0xd596d9f600000000, 0xe9bc07ae00000000, 0xa88d1cb700000000, + 0x6bde319c00000000, 0x2aef2a8500000000, 0xed796bca00000000, + 0xac4870d300000000, 0x6f1b5df800000000, 0x2e2a46e100000000, + 0xe136de6600000000, 0xa007c57f00000000, 0x6354e85400000000, + 0x2265f34d00000000, 0xe5f3b20200000000, 0xa4c2a91b00000000, + 0x6791843000000000, 0x26a09f2900000000, 0xb8aec5e400000000, + 0xf99fdefd00000000, 0x3accf3d600000000, 0x7bfde8cf00000000, + 0xbc6ba98000000000, 0xfd5ab29900000000, 0x3e099fb200000000, + 0x7f3884ab00000000, 0xb0241c2c00000000, 0xf115073500000000, + 0x32462a1e00000000, 0x7377310700000000, 0xb4e1704800000000, + 0xf5d06b5100000000, 0x3683467a00000000, 0x77b25d6300000000, + 0x4ed7facb00000000, 0x0fe6e1d200000000, 0xccb5ccf900000000, + 0x8d84d7e000000000, 0x4a1296af00000000, 0x0b238db600000000, + 0xc870a09d00000000, 0x8941bb8400000000, 0x465d230300000000, + 0x076c381a00000000, 0xc43f153100000000, 0x850e0e2800000000, + 0x42984f6700000000, 0x03a9547e00000000, 0xc0fa795500000000, + 0x81cb624c00000000, 0x1fc5388100000000, 0x5ef4239800000000, + 0x9da70eb300000000, 0xdc9615aa00000000, 0x1b0054e500000000, + 0x5a314ffc00000000, 0x996262d700000000, 0xd85379ce00000000, + 0x174fe14900000000, 0x567efa5000000000, 0x952dd77b00000000, + 0xd41ccc6200000000, 0x138a8d2d00000000, 0x52bb963400000000, + 0x91e8bb1f00000000, 0xd0d9a00600000000, 0xecf37e5e00000000, + 0xadc2654700000000, 0x6e91486c00000000, 0x2fa0537500000000, + 0xe836123a00000000, 0xa907092300000000, 0x6a54240800000000, + 0x2b653f1100000000, 0xe479a79600000000, 0xa548bc8f00000000, + 0x661b91a400000000, 0x272a8abd00000000, 0xe0bccbf200000000, + 0xa18dd0eb00000000, 0x62defdc000000000, 0x23efe6d900000000, + 0xbde1bc1400000000, 0xfcd0a70d00000000, 0x3f838a2600000000, + 0x7eb2913f00000000, 0xb924d07000000000, 0xf815cb6900000000, + 0x3b46e64200000000, 0x7a77fd5b00000000, 0xb56b65dc00000000, + 0xf45a7ec500000000, 0x370953ee00000000, 0x763848f700000000, + 0xb1ae09b800000000, 0xf09f12a100000000, 0x33cc3f8a00000000, + 0x72fd249300000000}, + {0x0000000000000000, 0x376ac20100000000, 0x6ed4840300000000, + 0x59be460200000000, 0xdca8090700000000, 0xebc2cb0600000000, + 0xb27c8d0400000000, 0x85164f0500000000, 0xb851130e00000000, + 0x8f3bd10f00000000, 0xd685970d00000000, 0xe1ef550c00000000, + 0x64f91a0900000000, 0x5393d80800000000, 0x0a2d9e0a00000000, + 0x3d475c0b00000000, 0x70a3261c00000000, 0x47c9e41d00000000, + 0x1e77a21f00000000, 0x291d601e00000000, 0xac0b2f1b00000000, + 0x9b61ed1a00000000, 0xc2dfab1800000000, 0xf5b5691900000000, + 0xc8f2351200000000, 0xff98f71300000000, 0xa626b11100000000, + 0x914c731000000000, 0x145a3c1500000000, 0x2330fe1400000000, + 0x7a8eb81600000000, 0x4de47a1700000000, 0xe0464d3800000000, + 0xd72c8f3900000000, 0x8e92c93b00000000, 0xb9f80b3a00000000, + 0x3cee443f00000000, 0x0b84863e00000000, 0x523ac03c00000000, + 0x6550023d00000000, 0x58175e3600000000, 0x6f7d9c3700000000, + 0x36c3da3500000000, 0x01a9183400000000, 0x84bf573100000000, + 0xb3d5953000000000, 0xea6bd33200000000, 0xdd01113300000000, + 0x90e56b2400000000, 0xa78fa92500000000, 0xfe31ef2700000000, + 0xc95b2d2600000000, 0x4c4d622300000000, 0x7b27a02200000000, + 0x2299e62000000000, 0x15f3242100000000, 0x28b4782a00000000, + 0x1fdeba2b00000000, 0x4660fc2900000000, 0x710a3e2800000000, + 0xf41c712d00000000, 0xc376b32c00000000, 0x9ac8f52e00000000, + 0xada2372f00000000, 0xc08d9a7000000000, 0xf7e7587100000000, + 0xae591e7300000000, 0x9933dc7200000000, 0x1c25937700000000, + 0x2b4f517600000000, 0x72f1177400000000, 0x459bd57500000000, + 0x78dc897e00000000, 0x4fb64b7f00000000, 0x16080d7d00000000, + 0x2162cf7c00000000, 0xa474807900000000, 0x931e427800000000, + 0xcaa0047a00000000, 0xfdcac67b00000000, 0xb02ebc6c00000000, + 0x87447e6d00000000, 0xdefa386f00000000, 0xe990fa6e00000000, + 0x6c86b56b00000000, 0x5bec776a00000000, 0x0252316800000000, + 0x3538f36900000000, 0x087faf6200000000, 0x3f156d6300000000, + 0x66ab2b6100000000, 0x51c1e96000000000, 0xd4d7a66500000000, + 0xe3bd646400000000, 0xba03226600000000, 0x8d69e06700000000, + 0x20cbd74800000000, 0x17a1154900000000, 0x4e1f534b00000000, + 0x7975914a00000000, 0xfc63de4f00000000, 0xcb091c4e00000000, + 0x92b75a4c00000000, 0xa5dd984d00000000, 0x989ac44600000000, + 0xaff0064700000000, 0xf64e404500000000, 0xc124824400000000, + 0x4432cd4100000000, 0x73580f4000000000, 0x2ae6494200000000, + 0x1d8c8b4300000000, 0x5068f15400000000, 0x6702335500000000, + 0x3ebc755700000000, 0x09d6b75600000000, 0x8cc0f85300000000, + 0xbbaa3a5200000000, 0xe2147c5000000000, 0xd57ebe5100000000, + 0xe839e25a00000000, 0xdf53205b00000000, 0x86ed665900000000, + 0xb187a45800000000, 0x3491eb5d00000000, 0x03fb295c00000000, + 0x5a456f5e00000000, 0x6d2fad5f00000000, 0x801b35e100000000, + 0xb771f7e000000000, 0xeecfb1e200000000, 0xd9a573e300000000, + 0x5cb33ce600000000, 0x6bd9fee700000000, 0x3267b8e500000000, + 0x050d7ae400000000, 0x384a26ef00000000, 0x0f20e4ee00000000, + 0x569ea2ec00000000, 0x61f460ed00000000, 0xe4e22fe800000000, + 0xd388ede900000000, 0x8a36abeb00000000, 0xbd5c69ea00000000, + 0xf0b813fd00000000, 0xc7d2d1fc00000000, 0x9e6c97fe00000000, + 0xa90655ff00000000, 0x2c101afa00000000, 0x1b7ad8fb00000000, + 0x42c49ef900000000, 0x75ae5cf800000000, 0x48e900f300000000, + 0x7f83c2f200000000, 0x263d84f000000000, 0x115746f100000000, + 0x944109f400000000, 0xa32bcbf500000000, 0xfa958df700000000, + 0xcdff4ff600000000, 0x605d78d900000000, 0x5737bad800000000, + 0x0e89fcda00000000, 0x39e33edb00000000, 0xbcf571de00000000, + 0x8b9fb3df00000000, 0xd221f5dd00000000, 0xe54b37dc00000000, + 0xd80c6bd700000000, 0xef66a9d600000000, 0xb6d8efd400000000, + 0x81b22dd500000000, 0x04a462d000000000, 0x33cea0d100000000, + 0x6a70e6d300000000, 0x5d1a24d200000000, 0x10fe5ec500000000, + 0x27949cc400000000, 0x7e2adac600000000, 0x494018c700000000, + 0xcc5657c200000000, 0xfb3c95c300000000, 0xa282d3c100000000, + 0x95e811c000000000, 0xa8af4dcb00000000, 0x9fc58fca00000000, + 0xc67bc9c800000000, 0xf1110bc900000000, 0x740744cc00000000, + 0x436d86cd00000000, 0x1ad3c0cf00000000, 0x2db902ce00000000, + 0x4096af9100000000, 0x77fc6d9000000000, 0x2e422b9200000000, + 0x1928e99300000000, 0x9c3ea69600000000, 0xab54649700000000, + 0xf2ea229500000000, 0xc580e09400000000, 0xf8c7bc9f00000000, + 0xcfad7e9e00000000, 0x9613389c00000000, 0xa179fa9d00000000, + 0x246fb59800000000, 0x1305779900000000, 0x4abb319b00000000, + 0x7dd1f39a00000000, 0x3035898d00000000, 0x075f4b8c00000000, + 0x5ee10d8e00000000, 0x698bcf8f00000000, 0xec9d808a00000000, + 0xdbf7428b00000000, 0x8249048900000000, 0xb523c68800000000, + 0x88649a8300000000, 0xbf0e588200000000, 0xe6b01e8000000000, + 0xd1dadc8100000000, 0x54cc938400000000, 0x63a6518500000000, + 0x3a18178700000000, 0x0d72d58600000000, 0xa0d0e2a900000000, + 0x97ba20a800000000, 0xce0466aa00000000, 0xf96ea4ab00000000, + 0x7c78ebae00000000, 0x4b1229af00000000, 0x12ac6fad00000000, + 0x25c6adac00000000, 0x1881f1a700000000, 0x2feb33a600000000, + 0x765575a400000000, 0x413fb7a500000000, 0xc429f8a000000000, + 0xf3433aa100000000, 0xaafd7ca300000000, 0x9d97bea200000000, + 0xd073c4b500000000, 0xe71906b400000000, 0xbea740b600000000, + 0x89cd82b700000000, 0x0cdbcdb200000000, 0x3bb10fb300000000, + 0x620f49b100000000, 0x55658bb000000000, 0x6822d7bb00000000, + 0x5f4815ba00000000, 0x06f653b800000000, 0x319c91b900000000, + 0xb48adebc00000000, 0x83e01cbd00000000, 0xda5e5abf00000000, + 0xed3498be00000000}, + {0x0000000000000000, 0x6567bcb800000000, 0x8bc809aa00000000, + 0xeeafb51200000000, 0x5797628f00000000, 0x32f0de3700000000, + 0xdc5f6b2500000000, 0xb938d79d00000000, 0xef28b4c500000000, + 0x8a4f087d00000000, 0x64e0bd6f00000000, 0x018701d700000000, + 0xb8bfd64a00000000, 0xddd86af200000000, 0x3377dfe000000000, + 0x5610635800000000, 0x9f57195000000000, 0xfa30a5e800000000, + 0x149f10fa00000000, 0x71f8ac4200000000, 0xc8c07bdf00000000, + 0xada7c76700000000, 0x4308727500000000, 0x266fcecd00000000, + 0x707fad9500000000, 0x1518112d00000000, 0xfbb7a43f00000000, + 0x9ed0188700000000, 0x27e8cf1a00000000, 0x428f73a200000000, + 0xac20c6b000000000, 0xc9477a0800000000, 0x3eaf32a000000000, + 0x5bc88e1800000000, 0xb5673b0a00000000, 0xd00087b200000000, + 0x6938502f00000000, 0x0c5fec9700000000, 0xe2f0598500000000, + 0x8797e53d00000000, 0xd187866500000000, 0xb4e03add00000000, + 0x5a4f8fcf00000000, 0x3f28337700000000, 0x8610e4ea00000000, + 0xe377585200000000, 0x0dd8ed4000000000, 0x68bf51f800000000, + 0xa1f82bf000000000, 0xc49f974800000000, 0x2a30225a00000000, + 0x4f579ee200000000, 0xf66f497f00000000, 0x9308f5c700000000, + 0x7da740d500000000, 0x18c0fc6d00000000, 0x4ed09f3500000000, + 0x2bb7238d00000000, 0xc518969f00000000, 0xa07f2a2700000000, + 0x1947fdba00000000, 0x7c20410200000000, 0x928ff41000000000, + 0xf7e848a800000000, 0x3d58149b00000000, 0x583fa82300000000, + 0xb6901d3100000000, 0xd3f7a18900000000, 0x6acf761400000000, + 0x0fa8caac00000000, 0xe1077fbe00000000, 0x8460c30600000000, + 0xd270a05e00000000, 0xb7171ce600000000, 0x59b8a9f400000000, + 0x3cdf154c00000000, 0x85e7c2d100000000, 0xe0807e6900000000, + 0x0e2fcb7b00000000, 0x6b4877c300000000, 0xa20f0dcb00000000, + 0xc768b17300000000, 0x29c7046100000000, 0x4ca0b8d900000000, + 0xf5986f4400000000, 0x90ffd3fc00000000, 0x7e5066ee00000000, + 0x1b37da5600000000, 0x4d27b90e00000000, 0x284005b600000000, + 0xc6efb0a400000000, 0xa3880c1c00000000, 0x1ab0db8100000000, + 0x7fd7673900000000, 0x9178d22b00000000, 0xf41f6e9300000000, + 0x03f7263b00000000, 0x66909a8300000000, 0x883f2f9100000000, + 0xed58932900000000, 0x546044b400000000, 0x3107f80c00000000, + 0xdfa84d1e00000000, 0xbacff1a600000000, 0xecdf92fe00000000, + 0x89b82e4600000000, 0x67179b5400000000, 0x027027ec00000000, + 0xbb48f07100000000, 0xde2f4cc900000000, 0x3080f9db00000000, + 0x55e7456300000000, 0x9ca03f6b00000000, 0xf9c783d300000000, + 0x176836c100000000, 0x720f8a7900000000, 0xcb375de400000000, + 0xae50e15c00000000, 0x40ff544e00000000, 0x2598e8f600000000, + 0x73888bae00000000, 0x16ef371600000000, 0xf840820400000000, + 0x9d273ebc00000000, 0x241fe92100000000, 0x4178559900000000, + 0xafd7e08b00000000, 0xcab05c3300000000, 0x3bb659ed00000000, + 0x5ed1e55500000000, 0xb07e504700000000, 0xd519ecff00000000, + 0x6c213b6200000000, 0x094687da00000000, 0xe7e932c800000000, + 0x828e8e7000000000, 0xd49eed2800000000, 0xb1f9519000000000, + 0x5f56e48200000000, 0x3a31583a00000000, 0x83098fa700000000, + 0xe66e331f00000000, 0x08c1860d00000000, 0x6da63ab500000000, + 0xa4e140bd00000000, 0xc186fc0500000000, 0x2f29491700000000, + 0x4a4ef5af00000000, 0xf376223200000000, 0x96119e8a00000000, + 0x78be2b9800000000, 0x1dd9972000000000, 0x4bc9f47800000000, + 0x2eae48c000000000, 0xc001fdd200000000, 0xa566416a00000000, + 0x1c5e96f700000000, 0x79392a4f00000000, 0x97969f5d00000000, + 0xf2f123e500000000, 0x05196b4d00000000, 0x607ed7f500000000, + 0x8ed162e700000000, 0xebb6de5f00000000, 0x528e09c200000000, + 0x37e9b57a00000000, 0xd946006800000000, 0xbc21bcd000000000, + 0xea31df8800000000, 0x8f56633000000000, 0x61f9d62200000000, + 0x049e6a9a00000000, 0xbda6bd0700000000, 0xd8c101bf00000000, + 0x366eb4ad00000000, 0x5309081500000000, 0x9a4e721d00000000, + 0xff29cea500000000, 0x11867bb700000000, 0x74e1c70f00000000, + 0xcdd9109200000000, 0xa8beac2a00000000, 0x4611193800000000, + 0x2376a58000000000, 0x7566c6d800000000, 0x10017a6000000000, + 0xfeaecf7200000000, 0x9bc973ca00000000, 0x22f1a45700000000, + 0x479618ef00000000, 0xa939adfd00000000, 0xcc5e114500000000, + 0x06ee4d7600000000, 0x6389f1ce00000000, 0x8d2644dc00000000, + 0xe841f86400000000, 0x51792ff900000000, 0x341e934100000000, + 0xdab1265300000000, 0xbfd69aeb00000000, 0xe9c6f9b300000000, + 0x8ca1450b00000000, 0x620ef01900000000, 0x07694ca100000000, + 0xbe519b3c00000000, 0xdb36278400000000, 0x3599929600000000, + 0x50fe2e2e00000000, 0x99b9542600000000, 0xfcdee89e00000000, + 0x12715d8c00000000, 0x7716e13400000000, 0xce2e36a900000000, + 0xab498a1100000000, 0x45e63f0300000000, 0x208183bb00000000, + 0x7691e0e300000000, 0x13f65c5b00000000, 0xfd59e94900000000, + 0x983e55f100000000, 0x2106826c00000000, 0x44613ed400000000, + 0xaace8bc600000000, 0xcfa9377e00000000, 0x38417fd600000000, + 0x5d26c36e00000000, 0xb389767c00000000, 0xd6eecac400000000, + 0x6fd61d5900000000, 0x0ab1a1e100000000, 0xe41e14f300000000, + 0x8179a84b00000000, 0xd769cb1300000000, 0xb20e77ab00000000, + 0x5ca1c2b900000000, 0x39c67e0100000000, 0x80fea99c00000000, + 0xe599152400000000, 0x0b36a03600000000, 0x6e511c8e00000000, + 0xa716668600000000, 0xc271da3e00000000, 0x2cde6f2c00000000, + 0x49b9d39400000000, 0xf081040900000000, 0x95e6b8b100000000, + 0x7b490da300000000, 0x1e2eb11b00000000, 0x483ed24300000000, + 0x2d596efb00000000, 0xc3f6dbe900000000, 0xa691675100000000, + 0x1fa9b0cc00000000, 0x7ace0c7400000000, 0x9461b96600000000, + 0xf10605de00000000}, + {0x0000000000000000, 0xb029603d00000000, 0x6053c07a00000000, + 0xd07aa04700000000, 0xc0a680f500000000, 0x708fe0c800000000, + 0xa0f5408f00000000, 0x10dc20b200000000, 0xc14b703000000000, + 0x7162100d00000000, 0xa118b04a00000000, 0x1131d07700000000, + 0x01edf0c500000000, 0xb1c490f800000000, 0x61be30bf00000000, + 0xd197508200000000, 0x8297e06000000000, 0x32be805d00000000, + 0xe2c4201a00000000, 0x52ed402700000000, 0x4231609500000000, + 0xf21800a800000000, 0x2262a0ef00000000, 0x924bc0d200000000, + 0x43dc905000000000, 0xf3f5f06d00000000, 0x238f502a00000000, + 0x93a6301700000000, 0x837a10a500000000, 0x3353709800000000, + 0xe329d0df00000000, 0x5300b0e200000000, 0x042fc1c100000000, + 0xb406a1fc00000000, 0x647c01bb00000000, 0xd455618600000000, + 0xc489413400000000, 0x74a0210900000000, 0xa4da814e00000000, + 0x14f3e17300000000, 0xc564b1f100000000, 0x754dd1cc00000000, + 0xa537718b00000000, 0x151e11b600000000, 0x05c2310400000000, + 0xb5eb513900000000, 0x6591f17e00000000, 0xd5b8914300000000, + 0x86b821a100000000, 0x3691419c00000000, 0xe6ebe1db00000000, + 0x56c281e600000000, 0x461ea15400000000, 0xf637c16900000000, + 0x264d612e00000000, 0x9664011300000000, 0x47f3519100000000, + 0xf7da31ac00000000, 0x27a091eb00000000, 0x9789f1d600000000, + 0x8755d16400000000, 0x377cb15900000000, 0xe706111e00000000, + 0x572f712300000000, 0x4958f35800000000, 0xf971936500000000, + 0x290b332200000000, 0x9922531f00000000, 0x89fe73ad00000000, + 0x39d7139000000000, 0xe9adb3d700000000, 0x5984d3ea00000000, + 0x8813836800000000, 0x383ae35500000000, 0xe840431200000000, + 0x5869232f00000000, 0x48b5039d00000000, 0xf89c63a000000000, + 0x28e6c3e700000000, 0x98cfa3da00000000, 0xcbcf133800000000, + 0x7be6730500000000, 0xab9cd34200000000, 0x1bb5b37f00000000, + 0x0b6993cd00000000, 0xbb40f3f000000000, 0x6b3a53b700000000, + 0xdb13338a00000000, 0x0a84630800000000, 0xbaad033500000000, + 0x6ad7a37200000000, 0xdafec34f00000000, 0xca22e3fd00000000, + 0x7a0b83c000000000, 0xaa71238700000000, 0x1a5843ba00000000, + 0x4d77329900000000, 0xfd5e52a400000000, 0x2d24f2e300000000, + 0x9d0d92de00000000, 0x8dd1b26c00000000, 0x3df8d25100000000, + 0xed82721600000000, 0x5dab122b00000000, 0x8c3c42a900000000, + 0x3c15229400000000, 0xec6f82d300000000, 0x5c46e2ee00000000, + 0x4c9ac25c00000000, 0xfcb3a26100000000, 0x2cc9022600000000, + 0x9ce0621b00000000, 0xcfe0d2f900000000, 0x7fc9b2c400000000, + 0xafb3128300000000, 0x1f9a72be00000000, 0x0f46520c00000000, + 0xbf6f323100000000, 0x6f15927600000000, 0xdf3cf24b00000000, + 0x0eaba2c900000000, 0xbe82c2f400000000, 0x6ef862b300000000, + 0xded1028e00000000, 0xce0d223c00000000, 0x7e24420100000000, + 0xae5ee24600000000, 0x1e77827b00000000, 0x92b0e6b100000000, + 0x2299868c00000000, 0xf2e326cb00000000, 0x42ca46f600000000, + 0x5216664400000000, 0xe23f067900000000, 0x3245a63e00000000, + 0x826cc60300000000, 0x53fb968100000000, 0xe3d2f6bc00000000, + 0x33a856fb00000000, 0x838136c600000000, 0x935d167400000000, + 0x2374764900000000, 0xf30ed60e00000000, 0x4327b63300000000, + 0x102706d100000000, 0xa00e66ec00000000, 0x7074c6ab00000000, + 0xc05da69600000000, 0xd081862400000000, 0x60a8e61900000000, + 0xb0d2465e00000000, 0x00fb266300000000, 0xd16c76e100000000, + 0x614516dc00000000, 0xb13fb69b00000000, 0x0116d6a600000000, + 0x11caf61400000000, 0xa1e3962900000000, 0x7199366e00000000, + 0xc1b0565300000000, 0x969f277000000000, 0x26b6474d00000000, + 0xf6cce70a00000000, 0x46e5873700000000, 0x5639a78500000000, + 0xe610c7b800000000, 0x366a67ff00000000, 0x864307c200000000, + 0x57d4574000000000, 0xe7fd377d00000000, 0x3787973a00000000, + 0x87aef70700000000, 0x9772d7b500000000, 0x275bb78800000000, + 0xf72117cf00000000, 0x470877f200000000, 0x1408c71000000000, + 0xa421a72d00000000, 0x745b076a00000000, 0xc472675700000000, + 0xd4ae47e500000000, 0x648727d800000000, 0xb4fd879f00000000, + 0x04d4e7a200000000, 0xd543b72000000000, 0x656ad71d00000000, + 0xb510775a00000000, 0x0539176700000000, 0x15e537d500000000, + 0xa5cc57e800000000, 0x75b6f7af00000000, 0xc59f979200000000, + 0xdbe815e900000000, 0x6bc175d400000000, 0xbbbbd59300000000, + 0x0b92b5ae00000000, 0x1b4e951c00000000, 0xab67f52100000000, + 0x7b1d556600000000, 0xcb34355b00000000, 0x1aa365d900000000, + 0xaa8a05e400000000, 0x7af0a5a300000000, 0xcad9c59e00000000, + 0xda05e52c00000000, 0x6a2c851100000000, 0xba56255600000000, + 0x0a7f456b00000000, 0x597ff58900000000, 0xe95695b400000000, + 0x392c35f300000000, 0x890555ce00000000, 0x99d9757c00000000, + 0x29f0154100000000, 0xf98ab50600000000, 0x49a3d53b00000000, + 0x983485b900000000, 0x281de58400000000, 0xf86745c300000000, + 0x484e25fe00000000, 0x5892054c00000000, 0xe8bb657100000000, + 0x38c1c53600000000, 0x88e8a50b00000000, 0xdfc7d42800000000, + 0x6feeb41500000000, 0xbf94145200000000, 0x0fbd746f00000000, + 0x1f6154dd00000000, 0xaf4834e000000000, 0x7f3294a700000000, + 0xcf1bf49a00000000, 0x1e8ca41800000000, 0xaea5c42500000000, + 0x7edf646200000000, 0xcef6045f00000000, 0xde2a24ed00000000, + 0x6e0344d000000000, 0xbe79e49700000000, 0x0e5084aa00000000, + 0x5d50344800000000, 0xed79547500000000, 0x3d03f43200000000, + 0x8d2a940f00000000, 0x9df6b4bd00000000, 0x2ddfd48000000000, + 0xfda574c700000000, 0x4d8c14fa00000000, 0x9c1b447800000000, + 0x2c32244500000000, 0xfc48840200000000, 0x4c61e43f00000000, + 0x5cbdc48d00000000, 0xec94a4b000000000, 0x3cee04f700000000, + 0x8cc764ca00000000}, + {0x0000000000000000, 0xa5d35ccb00000000, 0x0ba1c84d00000000, + 0xae72948600000000, 0x1642919b00000000, 0xb391cd5000000000, + 0x1de359d600000000, 0xb830051d00000000, 0x6d8253ec00000000, + 0xc8510f2700000000, 0x66239ba100000000, 0xc3f0c76a00000000, + 0x7bc0c27700000000, 0xde139ebc00000000, 0x70610a3a00000000, + 0xd5b256f100000000, 0x9b02d60300000000, 0x3ed18ac800000000, + 0x90a31e4e00000000, 0x3570428500000000, 0x8d40479800000000, + 0x28931b5300000000, 0x86e18fd500000000, 0x2332d31e00000000, + 0xf68085ef00000000, 0x5353d92400000000, 0xfd214da200000000, + 0x58f2116900000000, 0xe0c2147400000000, 0x451148bf00000000, + 0xeb63dc3900000000, 0x4eb080f200000000, 0x3605ac0700000000, + 0x93d6f0cc00000000, 0x3da4644a00000000, 0x9877388100000000, + 0x20473d9c00000000, 0x8594615700000000, 0x2be6f5d100000000, + 0x8e35a91a00000000, 0x5b87ffeb00000000, 0xfe54a32000000000, + 0x502637a600000000, 0xf5f56b6d00000000, 0x4dc56e7000000000, + 0xe81632bb00000000, 0x4664a63d00000000, 0xe3b7faf600000000, + 0xad077a0400000000, 0x08d426cf00000000, 0xa6a6b24900000000, + 0x0375ee8200000000, 0xbb45eb9f00000000, 0x1e96b75400000000, + 0xb0e423d200000000, 0x15377f1900000000, 0xc08529e800000000, + 0x6556752300000000, 0xcb24e1a500000000, 0x6ef7bd6e00000000, + 0xd6c7b87300000000, 0x7314e4b800000000, 0xdd66703e00000000, + 0x78b52cf500000000, 0x6c0a580f00000000, 0xc9d904c400000000, + 0x67ab904200000000, 0xc278cc8900000000, 0x7a48c99400000000, + 0xdf9b955f00000000, 0x71e901d900000000, 0xd43a5d1200000000, + 0x01880be300000000, 0xa45b572800000000, 0x0a29c3ae00000000, + 0xaffa9f6500000000, 0x17ca9a7800000000, 0xb219c6b300000000, + 0x1c6b523500000000, 0xb9b80efe00000000, 0xf7088e0c00000000, + 0x52dbd2c700000000, 0xfca9464100000000, 0x597a1a8a00000000, + 0xe14a1f9700000000, 0x4499435c00000000, 0xeaebd7da00000000, + 0x4f388b1100000000, 0x9a8adde000000000, 0x3f59812b00000000, + 0x912b15ad00000000, 0x34f8496600000000, 0x8cc84c7b00000000, + 0x291b10b000000000, 0x8769843600000000, 0x22bad8fd00000000, + 0x5a0ff40800000000, 0xffdca8c300000000, 0x51ae3c4500000000, + 0xf47d608e00000000, 0x4c4d659300000000, 0xe99e395800000000, + 0x47ecadde00000000, 0xe23ff11500000000, 0x378da7e400000000, + 0x925efb2f00000000, 0x3c2c6fa900000000, 0x99ff336200000000, + 0x21cf367f00000000, 0x841c6ab400000000, 0x2a6efe3200000000, + 0x8fbda2f900000000, 0xc10d220b00000000, 0x64de7ec000000000, + 0xcaacea4600000000, 0x6f7fb68d00000000, 0xd74fb39000000000, + 0x729cef5b00000000, 0xdcee7bdd00000000, 0x793d271600000000, + 0xac8f71e700000000, 0x095c2d2c00000000, 0xa72eb9aa00000000, + 0x02fde56100000000, 0xbacde07c00000000, 0x1f1ebcb700000000, + 0xb16c283100000000, 0x14bf74fa00000000, 0xd814b01e00000000, + 0x7dc7ecd500000000, 0xd3b5785300000000, 0x7666249800000000, + 0xce56218500000000, 0x6b857d4e00000000, 0xc5f7e9c800000000, + 0x6024b50300000000, 0xb596e3f200000000, 0x1045bf3900000000, + 0xbe372bbf00000000, 0x1be4777400000000, 0xa3d4726900000000, + 0x06072ea200000000, 0xa875ba2400000000, 0x0da6e6ef00000000, + 0x4316661d00000000, 0xe6c53ad600000000, 0x48b7ae5000000000, + 0xed64f29b00000000, 0x5554f78600000000, 0xf087ab4d00000000, + 0x5ef53fcb00000000, 0xfb26630000000000, 0x2e9435f100000000, + 0x8b47693a00000000, 0x2535fdbc00000000, 0x80e6a17700000000, + 0x38d6a46a00000000, 0x9d05f8a100000000, 0x33776c2700000000, + 0x96a430ec00000000, 0xee111c1900000000, 0x4bc240d200000000, + 0xe5b0d45400000000, 0x4063889f00000000, 0xf8538d8200000000, + 0x5d80d14900000000, 0xf3f245cf00000000, 0x5621190400000000, + 0x83934ff500000000, 0x2640133e00000000, 0x883287b800000000, + 0x2de1db7300000000, 0x95d1de6e00000000, 0x300282a500000000, + 0x9e70162300000000, 0x3ba34ae800000000, 0x7513ca1a00000000, + 0xd0c096d100000000, 0x7eb2025700000000, 0xdb615e9c00000000, + 0x63515b8100000000, 0xc682074a00000000, 0x68f093cc00000000, + 0xcd23cf0700000000, 0x189199f600000000, 0xbd42c53d00000000, + 0x133051bb00000000, 0xb6e30d7000000000, 0x0ed3086d00000000, + 0xab0054a600000000, 0x0572c02000000000, 0xa0a19ceb00000000, + 0xb41ee81100000000, 0x11cdb4da00000000, 0xbfbf205c00000000, + 0x1a6c7c9700000000, 0xa25c798a00000000, 0x078f254100000000, + 0xa9fdb1c700000000, 0x0c2eed0c00000000, 0xd99cbbfd00000000, + 0x7c4fe73600000000, 0xd23d73b000000000, 0x77ee2f7b00000000, + 0xcfde2a6600000000, 0x6a0d76ad00000000, 0xc47fe22b00000000, + 0x61acbee000000000, 0x2f1c3e1200000000, 0x8acf62d900000000, + 0x24bdf65f00000000, 0x816eaa9400000000, 0x395eaf8900000000, + 0x9c8df34200000000, 0x32ff67c400000000, 0x972c3b0f00000000, + 0x429e6dfe00000000, 0xe74d313500000000, 0x493fa5b300000000, + 0xececf97800000000, 0x54dcfc6500000000, 0xf10fa0ae00000000, + 0x5f7d342800000000, 0xfaae68e300000000, 0x821b441600000000, + 0x27c818dd00000000, 0x89ba8c5b00000000, 0x2c69d09000000000, + 0x9459d58d00000000, 0x318a894600000000, 0x9ff81dc000000000, + 0x3a2b410b00000000, 0xef9917fa00000000, 0x4a4a4b3100000000, + 0xe438dfb700000000, 0x41eb837c00000000, 0xf9db866100000000, + 0x5c08daaa00000000, 0xf27a4e2c00000000, 0x57a912e700000000, + 0x1919921500000000, 0xbccacede00000000, 0x12b85a5800000000, + 0xb76b069300000000, 0x0f5b038e00000000, 0xaa885f4500000000, + 0x04facbc300000000, 0xa129970800000000, 0x749bc1f900000000, + 0xd1489d3200000000, 0x7f3a09b400000000, 0xdae9557f00000000, + 0x62d9506200000000, 0xc70a0ca900000000, 0x6978982f00000000, + 0xccabc4e400000000}, + {0x0000000000000000, 0xb40b77a600000000, 0x29119f9700000000, + 0x9d1ae83100000000, 0x13244ff400000000, 0xa72f385200000000, + 0x3a35d06300000000, 0x8e3ea7c500000000, 0x674eef3300000000, + 0xd345989500000000, 0x4e5f70a400000000, 0xfa54070200000000, + 0x746aa0c700000000, 0xc061d76100000000, 0x5d7b3f5000000000, + 0xe97048f600000000, 0xce9cde6700000000, 0x7a97a9c100000000, + 0xe78d41f000000000, 0x5386365600000000, 0xddb8919300000000, + 0x69b3e63500000000, 0xf4a90e0400000000, 0x40a279a200000000, + 0xa9d2315400000000, 0x1dd946f200000000, 0x80c3aec300000000, + 0x34c8d96500000000, 0xbaf67ea000000000, 0x0efd090600000000, + 0x93e7e13700000000, 0x27ec969100000000, 0x9c39bdcf00000000, + 0x2832ca6900000000, 0xb528225800000000, 0x012355fe00000000, + 0x8f1df23b00000000, 0x3b16859d00000000, 0xa60c6dac00000000, + 0x12071a0a00000000, 0xfb7752fc00000000, 0x4f7c255a00000000, + 0xd266cd6b00000000, 0x666dbacd00000000, 0xe8531d0800000000, + 0x5c586aae00000000, 0xc142829f00000000, 0x7549f53900000000, + 0x52a563a800000000, 0xe6ae140e00000000, 0x7bb4fc3f00000000, + 0xcfbf8b9900000000, 0x41812c5c00000000, 0xf58a5bfa00000000, + 0x6890b3cb00000000, 0xdc9bc46d00000000, 0x35eb8c9b00000000, + 0x81e0fb3d00000000, 0x1cfa130c00000000, 0xa8f164aa00000000, + 0x26cfc36f00000000, 0x92c4b4c900000000, 0x0fde5cf800000000, + 0xbbd52b5e00000000, 0x79750b4400000000, 0xcd7e7ce200000000, + 0x506494d300000000, 0xe46fe37500000000, 0x6a5144b000000000, + 0xde5a331600000000, 0x4340db2700000000, 0xf74bac8100000000, + 0x1e3be47700000000, 0xaa3093d100000000, 0x372a7be000000000, + 0x83210c4600000000, 0x0d1fab8300000000, 0xb914dc2500000000, + 0x240e341400000000, 0x900543b200000000, 0xb7e9d52300000000, + 0x03e2a28500000000, 0x9ef84ab400000000, 0x2af33d1200000000, + 0xa4cd9ad700000000, 0x10c6ed7100000000, 0x8ddc054000000000, + 0x39d772e600000000, 0xd0a73a1000000000, 0x64ac4db600000000, + 0xf9b6a58700000000, 0x4dbdd22100000000, 0xc38375e400000000, + 0x7788024200000000, 0xea92ea7300000000, 0x5e999dd500000000, + 0xe54cb68b00000000, 0x5147c12d00000000, 0xcc5d291c00000000, + 0x78565eba00000000, 0xf668f97f00000000, 0x42638ed900000000, + 0xdf7966e800000000, 0x6b72114e00000000, 0x820259b800000000, + 0x36092e1e00000000, 0xab13c62f00000000, 0x1f18b18900000000, + 0x9126164c00000000, 0x252d61ea00000000, 0xb83789db00000000, + 0x0c3cfe7d00000000, 0x2bd068ec00000000, 0x9fdb1f4a00000000, + 0x02c1f77b00000000, 0xb6ca80dd00000000, 0x38f4271800000000, + 0x8cff50be00000000, 0x11e5b88f00000000, 0xa5eecf2900000000, + 0x4c9e87df00000000, 0xf895f07900000000, 0x658f184800000000, + 0xd1846fee00000000, 0x5fbac82b00000000, 0xebb1bf8d00000000, + 0x76ab57bc00000000, 0xc2a0201a00000000, 0xf2ea168800000000, + 0x46e1612e00000000, 0xdbfb891f00000000, 0x6ff0feb900000000, + 0xe1ce597c00000000, 0x55c52eda00000000, 0xc8dfc6eb00000000, + 0x7cd4b14d00000000, 0x95a4f9bb00000000, 0x21af8e1d00000000, + 0xbcb5662c00000000, 0x08be118a00000000, 0x8680b64f00000000, + 0x328bc1e900000000, 0xaf9129d800000000, 0x1b9a5e7e00000000, + 0x3c76c8ef00000000, 0x887dbf4900000000, 0x1567577800000000, + 0xa16c20de00000000, 0x2f52871b00000000, 0x9b59f0bd00000000, + 0x0643188c00000000, 0xb2486f2a00000000, 0x5b3827dc00000000, + 0xef33507a00000000, 0x7229b84b00000000, 0xc622cfed00000000, + 0x481c682800000000, 0xfc171f8e00000000, 0x610df7bf00000000, + 0xd506801900000000, 0x6ed3ab4700000000, 0xdad8dce100000000, + 0x47c234d000000000, 0xf3c9437600000000, 0x7df7e4b300000000, + 0xc9fc931500000000, 0x54e67b2400000000, 0xe0ed0c8200000000, + 0x099d447400000000, 0xbd9633d200000000, 0x208cdbe300000000, + 0x9487ac4500000000, 0x1ab90b8000000000, 0xaeb27c2600000000, + 0x33a8941700000000, 0x87a3e3b100000000, 0xa04f752000000000, + 0x1444028600000000, 0x895eeab700000000, 0x3d559d1100000000, + 0xb36b3ad400000000, 0x07604d7200000000, 0x9a7aa54300000000, + 0x2e71d2e500000000, 0xc7019a1300000000, 0x730aedb500000000, + 0xee10058400000000, 0x5a1b722200000000, 0xd425d5e700000000, + 0x602ea24100000000, 0xfd344a7000000000, 0x493f3dd600000000, + 0x8b9f1dcc00000000, 0x3f946a6a00000000, 0xa28e825b00000000, + 0x1685f5fd00000000, 0x98bb523800000000, 0x2cb0259e00000000, + 0xb1aacdaf00000000, 0x05a1ba0900000000, 0xecd1f2ff00000000, + 0x58da855900000000, 0xc5c06d6800000000, 0x71cb1ace00000000, + 0xfff5bd0b00000000, 0x4bfecaad00000000, 0xd6e4229c00000000, + 0x62ef553a00000000, 0x4503c3ab00000000, 0xf108b40d00000000, + 0x6c125c3c00000000, 0xd8192b9a00000000, 0x56278c5f00000000, + 0xe22cfbf900000000, 0x7f3613c800000000, 0xcb3d646e00000000, + 0x224d2c9800000000, 0x96465b3e00000000, 0x0b5cb30f00000000, + 0xbf57c4a900000000, 0x3169636c00000000, 0x856214ca00000000, + 0x1878fcfb00000000, 0xac738b5d00000000, 0x17a6a00300000000, + 0xa3add7a500000000, 0x3eb73f9400000000, 0x8abc483200000000, + 0x0482eff700000000, 0xb089985100000000, 0x2d93706000000000, + 0x999807c600000000, 0x70e84f3000000000, 0xc4e3389600000000, + 0x59f9d0a700000000, 0xedf2a70100000000, 0x63cc00c400000000, + 0xd7c7776200000000, 0x4add9f5300000000, 0xfed6e8f500000000, + 0xd93a7e6400000000, 0x6d3109c200000000, 0xf02be1f300000000, + 0x4420965500000000, 0xca1e319000000000, 0x7e15463600000000, + 0xe30fae0700000000, 0x5704d9a100000000, 0xbe74915700000000, + 0x0a7fe6f100000000, 0x97650ec000000000, 0x236e796600000000, + 0xad50dea300000000, 0x195ba90500000000, 0x8441413400000000, + 0x304a369200000000}, + {0x0000000000000000, 0x9e00aacc00000000, 0x7d07254200000000, + 0xe3078f8e00000000, 0xfa0e4a8400000000, 0x640ee04800000000, + 0x87096fc600000000, 0x1909c50a00000000, 0xb51be5d300000000, + 0x2b1b4f1f00000000, 0xc81cc09100000000, 0x561c6a5d00000000, + 0x4f15af5700000000, 0xd115059b00000000, 0x32128a1500000000, + 0xac1220d900000000, 0x2b31bb7c00000000, 0xb53111b000000000, + 0x56369e3e00000000, 0xc83634f200000000, 0xd13ff1f800000000, + 0x4f3f5b3400000000, 0xac38d4ba00000000, 0x32387e7600000000, + 0x9e2a5eaf00000000, 0x002af46300000000, 0xe32d7bed00000000, + 0x7d2dd12100000000, 0x6424142b00000000, 0xfa24bee700000000, + 0x1923316900000000, 0x87239ba500000000, 0x566276f900000000, + 0xc862dc3500000000, 0x2b6553bb00000000, 0xb565f97700000000, + 0xac6c3c7d00000000, 0x326c96b100000000, 0xd16b193f00000000, + 0x4f6bb3f300000000, 0xe379932a00000000, 0x7d7939e600000000, + 0x9e7eb66800000000, 0x007e1ca400000000, 0x1977d9ae00000000, + 0x8777736200000000, 0x6470fcec00000000, 0xfa70562000000000, + 0x7d53cd8500000000, 0xe353674900000000, 0x0054e8c700000000, + 0x9e54420b00000000, 0x875d870100000000, 0x195d2dcd00000000, + 0xfa5aa24300000000, 0x645a088f00000000, 0xc848285600000000, + 0x5648829a00000000, 0xb54f0d1400000000, 0x2b4fa7d800000000, + 0x324662d200000000, 0xac46c81e00000000, 0x4f41479000000000, + 0xd141ed5c00000000, 0xedc29d2900000000, 0x73c237e500000000, + 0x90c5b86b00000000, 0x0ec512a700000000, 0x17ccd7ad00000000, + 0x89cc7d6100000000, 0x6acbf2ef00000000, 0xf4cb582300000000, + 0x58d978fa00000000, 0xc6d9d23600000000, 0x25de5db800000000, + 0xbbdef77400000000, 0xa2d7327e00000000, 0x3cd798b200000000, + 0xdfd0173c00000000, 0x41d0bdf000000000, 0xc6f3265500000000, + 0x58f38c9900000000, 0xbbf4031700000000, 0x25f4a9db00000000, + 0x3cfd6cd100000000, 0xa2fdc61d00000000, 0x41fa499300000000, + 0xdffae35f00000000, 0x73e8c38600000000, 0xede8694a00000000, + 0x0eefe6c400000000, 0x90ef4c0800000000, 0x89e6890200000000, + 0x17e623ce00000000, 0xf4e1ac4000000000, 0x6ae1068c00000000, + 0xbba0ebd000000000, 0x25a0411c00000000, 0xc6a7ce9200000000, + 0x58a7645e00000000, 0x41aea15400000000, 0xdfae0b9800000000, + 0x3ca9841600000000, 0xa2a92eda00000000, 0x0ebb0e0300000000, + 0x90bba4cf00000000, 0x73bc2b4100000000, 0xedbc818d00000000, + 0xf4b5448700000000, 0x6ab5ee4b00000000, 0x89b261c500000000, + 0x17b2cb0900000000, 0x909150ac00000000, 0x0e91fa6000000000, + 0xed9675ee00000000, 0x7396df2200000000, 0x6a9f1a2800000000, + 0xf49fb0e400000000, 0x17983f6a00000000, 0x899895a600000000, + 0x258ab57f00000000, 0xbb8a1fb300000000, 0x588d903d00000000, + 0xc68d3af100000000, 0xdf84fffb00000000, 0x4184553700000000, + 0xa283dab900000000, 0x3c83707500000000, 0xda853b5300000000, + 0x4485919f00000000, 0xa7821e1100000000, 0x3982b4dd00000000, + 0x208b71d700000000, 0xbe8bdb1b00000000, 0x5d8c549500000000, + 0xc38cfe5900000000, 0x6f9ede8000000000, 0xf19e744c00000000, + 0x1299fbc200000000, 0x8c99510e00000000, 0x9590940400000000, + 0x0b903ec800000000, 0xe897b14600000000, 0x76971b8a00000000, + 0xf1b4802f00000000, 0x6fb42ae300000000, 0x8cb3a56d00000000, + 0x12b30fa100000000, 0x0bbacaab00000000, 0x95ba606700000000, + 0x76bdefe900000000, 0xe8bd452500000000, 0x44af65fc00000000, + 0xdaafcf3000000000, 0x39a840be00000000, 0xa7a8ea7200000000, + 0xbea12f7800000000, 0x20a185b400000000, 0xc3a60a3a00000000, + 0x5da6a0f600000000, 0x8ce74daa00000000, 0x12e7e76600000000, + 0xf1e068e800000000, 0x6fe0c22400000000, 0x76e9072e00000000, + 0xe8e9ade200000000, 0x0bee226c00000000, 0x95ee88a000000000, + 0x39fca87900000000, 0xa7fc02b500000000, 0x44fb8d3b00000000, + 0xdafb27f700000000, 0xc3f2e2fd00000000, 0x5df2483100000000, + 0xbef5c7bf00000000, 0x20f56d7300000000, 0xa7d6f6d600000000, + 0x39d65c1a00000000, 0xdad1d39400000000, 0x44d1795800000000, + 0x5dd8bc5200000000, 0xc3d8169e00000000, 0x20df991000000000, + 0xbedf33dc00000000, 0x12cd130500000000, 0x8ccdb9c900000000, + 0x6fca364700000000, 0xf1ca9c8b00000000, 0xe8c3598100000000, + 0x76c3f34d00000000, 0x95c47cc300000000, 0x0bc4d60f00000000, + 0x3747a67a00000000, 0xa9470cb600000000, 0x4a40833800000000, + 0xd44029f400000000, 0xcd49ecfe00000000, 0x5349463200000000, + 0xb04ec9bc00000000, 0x2e4e637000000000, 0x825c43a900000000, + 0x1c5ce96500000000, 0xff5b66eb00000000, 0x615bcc2700000000, + 0x7852092d00000000, 0xe652a3e100000000, 0x05552c6f00000000, + 0x9b5586a300000000, 0x1c761d0600000000, 0x8276b7ca00000000, + 0x6171384400000000, 0xff71928800000000, 0xe678578200000000, + 0x7878fd4e00000000, 0x9b7f72c000000000, 0x057fd80c00000000, + 0xa96df8d500000000, 0x376d521900000000, 0xd46add9700000000, + 0x4a6a775b00000000, 0x5363b25100000000, 0xcd63189d00000000, + 0x2e64971300000000, 0xb0643ddf00000000, 0x6125d08300000000, + 0xff257a4f00000000, 0x1c22f5c100000000, 0x82225f0d00000000, + 0x9b2b9a0700000000, 0x052b30cb00000000, 0xe62cbf4500000000, + 0x782c158900000000, 0xd43e355000000000, 0x4a3e9f9c00000000, + 0xa939101200000000, 0x3739bade00000000, 0x2e307fd400000000, + 0xb030d51800000000, 0x53375a9600000000, 0xcd37f05a00000000, + 0x4a146bff00000000, 0xd414c13300000000, 0x37134ebd00000000, + 0xa913e47100000000, 0xb01a217b00000000, 0x2e1a8bb700000000, + 0xcd1d043900000000, 0x531daef500000000, 0xff0f8e2c00000000, + 0x610f24e000000000, 0x8208ab6e00000000, 0x1c0801a200000000, + 0x0501c4a800000000, 0x9b016e6400000000, 0x7806e1ea00000000, + 0xe6064b2600000000}}; + +#else /* W == 4 */ + +local const z_crc_t FAR crc_braid_table[][256] = { + {0x00000000, 0xb8bc6765, 0xaa09c88b, 0x12b5afee, 0x8f629757, + 0x37def032, 0x256b5fdc, 0x9dd738b9, 0xc5b428ef, 0x7d084f8a, + 0x6fbde064, 0xd7018701, 0x4ad6bfb8, 0xf26ad8dd, 0xe0df7733, + 0x58631056, 0x5019579f, 0xe8a530fa, 0xfa109f14, 0x42acf871, + 0xdf7bc0c8, 0x67c7a7ad, 0x75720843, 0xcdce6f26, 0x95ad7f70, + 0x2d111815, 0x3fa4b7fb, 0x8718d09e, 0x1acfe827, 0xa2738f42, + 0xb0c620ac, 0x087a47c9, 0xa032af3e, 0x188ec85b, 0x0a3b67b5, + 0xb28700d0, 0x2f503869, 0x97ec5f0c, 0x8559f0e2, 0x3de59787, + 0x658687d1, 0xdd3ae0b4, 0xcf8f4f5a, 0x7733283f, 0xeae41086, + 0x525877e3, 0x40edd80d, 0xf851bf68, 0xf02bf8a1, 0x48979fc4, + 0x5a22302a, 0xe29e574f, 0x7f496ff6, 0xc7f50893, 0xd540a77d, + 0x6dfcc018, 0x359fd04e, 0x8d23b72b, 0x9f9618c5, 0x272a7fa0, + 0xbafd4719, 0x0241207c, 0x10f48f92, 0xa848e8f7, 0x9b14583d, + 0x23a83f58, 0x311d90b6, 0x89a1f7d3, 0x1476cf6a, 0xaccaa80f, + 0xbe7f07e1, 0x06c36084, 0x5ea070d2, 0xe61c17b7, 0xf4a9b859, + 0x4c15df3c, 0xd1c2e785, 0x697e80e0, 0x7bcb2f0e, 0xc377486b, + 0xcb0d0fa2, 0x73b168c7, 0x6104c729, 0xd9b8a04c, 0x446f98f5, + 0xfcd3ff90, 0xee66507e, 0x56da371b, 0x0eb9274d, 0xb6054028, + 0xa4b0efc6, 0x1c0c88a3, 0x81dbb01a, 0x3967d77f, 0x2bd27891, + 0x936e1ff4, 0x3b26f703, 0x839a9066, 0x912f3f88, 0x299358ed, + 0xb4446054, 0x0cf80731, 0x1e4da8df, 0xa6f1cfba, 0xfe92dfec, + 0x462eb889, 0x549b1767, 0xec277002, 0x71f048bb, 0xc94c2fde, + 0xdbf98030, 0x6345e755, 0x6b3fa09c, 0xd383c7f9, 0xc1366817, + 0x798a0f72, 0xe45d37cb, 0x5ce150ae, 0x4e54ff40, 0xf6e89825, + 0xae8b8873, 0x1637ef16, 0x048240f8, 0xbc3e279d, 0x21e91f24, + 0x99557841, 0x8be0d7af, 0x335cb0ca, 0xed59b63b, 0x55e5d15e, + 0x47507eb0, 0xffec19d5, 0x623b216c, 0xda874609, 0xc832e9e7, + 0x708e8e82, 0x28ed9ed4, 0x9051f9b1, 0x82e4565f, 0x3a58313a, + 0xa78f0983, 0x1f336ee6, 0x0d86c108, 0xb53aa66d, 0xbd40e1a4, + 0x05fc86c1, 0x1749292f, 0xaff54e4a, 0x322276f3, 0x8a9e1196, + 0x982bbe78, 0x2097d91d, 0x78f4c94b, 0xc048ae2e, 0xd2fd01c0, + 0x6a4166a5, 0xf7965e1c, 0x4f2a3979, 0x5d9f9697, 0xe523f1f2, + 0x4d6b1905, 0xf5d77e60, 0xe762d18e, 0x5fdeb6eb, 0xc2098e52, + 0x7ab5e937, 0x680046d9, 0xd0bc21bc, 0x88df31ea, 0x3063568f, + 0x22d6f961, 0x9a6a9e04, 0x07bda6bd, 0xbf01c1d8, 0xadb46e36, + 0x15080953, 0x1d724e9a, 0xa5ce29ff, 0xb77b8611, 0x0fc7e174, + 0x9210d9cd, 0x2aacbea8, 0x38191146, 0x80a57623, 0xd8c66675, + 0x607a0110, 0x72cfaefe, 0xca73c99b, 0x57a4f122, 0xef189647, + 0xfdad39a9, 0x45115ecc, 0x764dee06, 0xcef18963, 0xdc44268d, + 0x64f841e8, 0xf92f7951, 0x41931e34, 0x5326b1da, 0xeb9ad6bf, + 0xb3f9c6e9, 0x0b45a18c, 0x19f00e62, 0xa14c6907, 0x3c9b51be, + 0x842736db, 0x96929935, 0x2e2efe50, 0x2654b999, 0x9ee8defc, + 0x8c5d7112, 0x34e11677, 0xa9362ece, 0x118a49ab, 0x033fe645, + 0xbb838120, 0xe3e09176, 0x5b5cf613, 0x49e959fd, 0xf1553e98, + 0x6c820621, 0xd43e6144, 0xc68bceaa, 0x7e37a9cf, 0xd67f4138, + 0x6ec3265d, 0x7c7689b3, 0xc4caeed6, 0x591dd66f, 0xe1a1b10a, + 0xf3141ee4, 0x4ba87981, 0x13cb69d7, 0xab770eb2, 0xb9c2a15c, + 0x017ec639, 0x9ca9fe80, 0x241599e5, 0x36a0360b, 0x8e1c516e, + 0x866616a7, 0x3eda71c2, 0x2c6fde2c, 0x94d3b949, 0x090481f0, + 0xb1b8e695, 0xa30d497b, 0x1bb12e1e, 0x43d23e48, 0xfb6e592d, + 0xe9dbf6c3, 0x516791a6, 0xccb0a91f, 0x740cce7a, 0x66b96194, + 0xde0506f1}, + {0x00000000, 0x01c26a37, 0x0384d46e, 0x0246be59, 0x0709a8dc, + 0x06cbc2eb, 0x048d7cb2, 0x054f1685, 0x0e1351b8, 0x0fd13b8f, + 0x0d9785d6, 0x0c55efe1, 0x091af964, 0x08d89353, 0x0a9e2d0a, + 0x0b5c473d, 0x1c26a370, 0x1de4c947, 0x1fa2771e, 0x1e601d29, + 0x1b2f0bac, 0x1aed619b, 0x18abdfc2, 0x1969b5f5, 0x1235f2c8, + 0x13f798ff, 0x11b126a6, 0x10734c91, 0x153c5a14, 0x14fe3023, + 0x16b88e7a, 0x177ae44d, 0x384d46e0, 0x398f2cd7, 0x3bc9928e, + 0x3a0bf8b9, 0x3f44ee3c, 0x3e86840b, 0x3cc03a52, 0x3d025065, + 0x365e1758, 0x379c7d6f, 0x35dac336, 0x3418a901, 0x3157bf84, + 0x3095d5b3, 0x32d36bea, 0x331101dd, 0x246be590, 0x25a98fa7, + 0x27ef31fe, 0x262d5bc9, 0x23624d4c, 0x22a0277b, 0x20e69922, + 0x2124f315, 0x2a78b428, 0x2bbade1f, 0x29fc6046, 0x283e0a71, + 0x2d711cf4, 0x2cb376c3, 0x2ef5c89a, 0x2f37a2ad, 0x709a8dc0, + 0x7158e7f7, 0x731e59ae, 0x72dc3399, 0x7793251c, 0x76514f2b, + 0x7417f172, 0x75d59b45, 0x7e89dc78, 0x7f4bb64f, 0x7d0d0816, + 0x7ccf6221, 0x798074a4, 0x78421e93, 0x7a04a0ca, 0x7bc6cafd, + 0x6cbc2eb0, 0x6d7e4487, 0x6f38fade, 0x6efa90e9, 0x6bb5866c, + 0x6a77ec5b, 0x68315202, 0x69f33835, 0x62af7f08, 0x636d153f, + 0x612bab66, 0x60e9c151, 0x65a6d7d4, 0x6464bde3, 0x662203ba, + 0x67e0698d, 0x48d7cb20, 0x4915a117, 0x4b531f4e, 0x4a917579, + 0x4fde63fc, 0x4e1c09cb, 0x4c5ab792, 0x4d98dda5, 0x46c49a98, + 0x4706f0af, 0x45404ef6, 0x448224c1, 0x41cd3244, 0x400f5873, + 0x4249e62a, 0x438b8c1d, 0x54f16850, 0x55330267, 0x5775bc3e, + 0x56b7d609, 0x53f8c08c, 0x523aaabb, 0x507c14e2, 0x51be7ed5, + 0x5ae239e8, 0x5b2053df, 0x5966ed86, 0x58a487b1, 0x5deb9134, + 0x5c29fb03, 0x5e6f455a, 0x5fad2f6d, 0xe1351b80, 0xe0f771b7, + 0xe2b1cfee, 0xe373a5d9, 0xe63cb35c, 0xe7fed96b, 0xe5b86732, + 0xe47a0d05, 0xef264a38, 0xeee4200f, 0xeca29e56, 0xed60f461, + 0xe82fe2e4, 0xe9ed88d3, 0xebab368a, 0xea695cbd, 0xfd13b8f0, + 0xfcd1d2c7, 0xfe976c9e, 0xff5506a9, 0xfa1a102c, 0xfbd87a1b, + 0xf99ec442, 0xf85cae75, 0xf300e948, 0xf2c2837f, 0xf0843d26, + 0xf1465711, 0xf4094194, 0xf5cb2ba3, 0xf78d95fa, 0xf64fffcd, + 0xd9785d60, 0xd8ba3757, 0xdafc890e, 0xdb3ee339, 0xde71f5bc, + 0xdfb39f8b, 0xddf521d2, 0xdc374be5, 0xd76b0cd8, 0xd6a966ef, + 0xd4efd8b6, 0xd52db281, 0xd062a404, 0xd1a0ce33, 0xd3e6706a, + 0xd2241a5d, 0xc55efe10, 0xc49c9427, 0xc6da2a7e, 0xc7184049, + 0xc25756cc, 0xc3953cfb, 0xc1d382a2, 0xc011e895, 0xcb4dafa8, + 0xca8fc59f, 0xc8c97bc6, 0xc90b11f1, 0xcc440774, 0xcd866d43, + 0xcfc0d31a, 0xce02b92d, 0x91af9640, 0x906dfc77, 0x922b422e, + 0x93e92819, 0x96a63e9c, 0x976454ab, 0x9522eaf2, 0x94e080c5, + 0x9fbcc7f8, 0x9e7eadcf, 0x9c381396, 0x9dfa79a1, 0x98b56f24, + 0x99770513, 0x9b31bb4a, 0x9af3d17d, 0x8d893530, 0x8c4b5f07, + 0x8e0de15e, 0x8fcf8b69, 0x8a809dec, 0x8b42f7db, 0x89044982, + 0x88c623b5, 0x839a6488, 0x82580ebf, 0x801eb0e6, 0x81dcdad1, + 0x8493cc54, 0x8551a663, 0x8717183a, 0x86d5720d, 0xa9e2d0a0, + 0xa820ba97, 0xaa6604ce, 0xaba46ef9, 0xaeeb787c, 0xaf29124b, + 0xad6fac12, 0xacadc625, 0xa7f18118, 0xa633eb2f, 0xa4755576, + 0xa5b73f41, 0xa0f829c4, 0xa13a43f3, 0xa37cfdaa, 0xa2be979d, + 0xb5c473d0, 0xb40619e7, 0xb640a7be, 0xb782cd89, 0xb2cddb0c, + 0xb30fb13b, 0xb1490f62, 0xb08b6555, 0xbbd72268, 0xba15485f, + 0xb853f606, 0xb9919c31, 0xbcde8ab4, 0xbd1ce083, 0xbf5a5eda, + 0xbe9834ed}, + {0x00000000, 0x191b3141, 0x32366282, 0x2b2d53c3, 0x646cc504, + 0x7d77f445, 0x565aa786, 0x4f4196c7, 0xc8d98a08, 0xd1c2bb49, + 0xfaefe88a, 0xe3f4d9cb, 0xacb54f0c, 0xb5ae7e4d, 0x9e832d8e, + 0x87981ccf, 0x4ac21251, 0x53d92310, 0x78f470d3, 0x61ef4192, + 0x2eaed755, 0x37b5e614, 0x1c98b5d7, 0x05838496, 0x821b9859, + 0x9b00a918, 0xb02dfadb, 0xa936cb9a, 0xe6775d5d, 0xff6c6c1c, + 0xd4413fdf, 0xcd5a0e9e, 0x958424a2, 0x8c9f15e3, 0xa7b24620, + 0xbea97761, 0xf1e8e1a6, 0xe8f3d0e7, 0xc3de8324, 0xdac5b265, + 0x5d5daeaa, 0x44469feb, 0x6f6bcc28, 0x7670fd69, 0x39316bae, + 0x202a5aef, 0x0b07092c, 0x121c386d, 0xdf4636f3, 0xc65d07b2, + 0xed705471, 0xf46b6530, 0xbb2af3f7, 0xa231c2b6, 0x891c9175, + 0x9007a034, 0x179fbcfb, 0x0e848dba, 0x25a9de79, 0x3cb2ef38, + 0x73f379ff, 0x6ae848be, 0x41c51b7d, 0x58de2a3c, 0xf0794f05, + 0xe9627e44, 0xc24f2d87, 0xdb541cc6, 0x94158a01, 0x8d0ebb40, + 0xa623e883, 0xbf38d9c2, 0x38a0c50d, 0x21bbf44c, 0x0a96a78f, + 0x138d96ce, 0x5ccc0009, 0x45d73148, 0x6efa628b, 0x77e153ca, + 0xbabb5d54, 0xa3a06c15, 0x888d3fd6, 0x91960e97, 0xded79850, + 0xc7cca911, 0xece1fad2, 0xf5facb93, 0x7262d75c, 0x6b79e61d, + 0x4054b5de, 0x594f849f, 0x160e1258, 0x0f152319, 0x243870da, + 0x3d23419b, 0x65fd6ba7, 0x7ce65ae6, 0x57cb0925, 0x4ed03864, + 0x0191aea3, 0x188a9fe2, 0x33a7cc21, 0x2abcfd60, 0xad24e1af, + 0xb43fd0ee, 0x9f12832d, 0x8609b26c, 0xc94824ab, 0xd05315ea, + 0xfb7e4629, 0xe2657768, 0x2f3f79f6, 0x362448b7, 0x1d091b74, + 0x04122a35, 0x4b53bcf2, 0x52488db3, 0x7965de70, 0x607eef31, + 0xe7e6f3fe, 0xfefdc2bf, 0xd5d0917c, 0xcccba03d, 0x838a36fa, + 0x9a9107bb, 0xb1bc5478, 0xa8a76539, 0x3b83984b, 0x2298a90a, + 0x09b5fac9, 0x10aecb88, 0x5fef5d4f, 0x46f46c0e, 0x6dd93fcd, + 0x74c20e8c, 0xf35a1243, 0xea412302, 0xc16c70c1, 0xd8774180, + 0x9736d747, 0x8e2de606, 0xa500b5c5, 0xbc1b8484, 0x71418a1a, + 0x685abb5b, 0x4377e898, 0x5a6cd9d9, 0x152d4f1e, 0x0c367e5f, + 0x271b2d9c, 0x3e001cdd, 0xb9980012, 0xa0833153, 0x8bae6290, + 0x92b553d1, 0xddf4c516, 0xc4eff457, 0xefc2a794, 0xf6d996d5, + 0xae07bce9, 0xb71c8da8, 0x9c31de6b, 0x852aef2a, 0xca6b79ed, + 0xd37048ac, 0xf85d1b6f, 0xe1462a2e, 0x66de36e1, 0x7fc507a0, + 0x54e85463, 0x4df36522, 0x02b2f3e5, 0x1ba9c2a4, 0x30849167, + 0x299fa026, 0xe4c5aeb8, 0xfdde9ff9, 0xd6f3cc3a, 0xcfe8fd7b, + 0x80a96bbc, 0x99b25afd, 0xb29f093e, 0xab84387f, 0x2c1c24b0, + 0x350715f1, 0x1e2a4632, 0x07317773, 0x4870e1b4, 0x516bd0f5, + 0x7a468336, 0x635db277, 0xcbfad74e, 0xd2e1e60f, 0xf9ccb5cc, + 0xe0d7848d, 0xaf96124a, 0xb68d230b, 0x9da070c8, 0x84bb4189, + 0x03235d46, 0x1a386c07, 0x31153fc4, 0x280e0e85, 0x674f9842, + 0x7e54a903, 0x5579fac0, 0x4c62cb81, 0x8138c51f, 0x9823f45e, + 0xb30ea79d, 0xaa1596dc, 0xe554001b, 0xfc4f315a, 0xd7626299, + 0xce7953d8, 0x49e14f17, 0x50fa7e56, 0x7bd72d95, 0x62cc1cd4, + 0x2d8d8a13, 0x3496bb52, 0x1fbbe891, 0x06a0d9d0, 0x5e7ef3ec, + 0x4765c2ad, 0x6c48916e, 0x7553a02f, 0x3a1236e8, 0x230907a9, + 0x0824546a, 0x113f652b, 0x96a779e4, 0x8fbc48a5, 0xa4911b66, + 0xbd8a2a27, 0xf2cbbce0, 0xebd08da1, 0xc0fdde62, 0xd9e6ef23, + 0x14bce1bd, 0x0da7d0fc, 0x268a833f, 0x3f91b27e, 0x70d024b9, + 0x69cb15f8, 0x42e6463b, 0x5bfd777a, 0xdc656bb5, 0xc57e5af4, + 0xee530937, 0xf7483876, 0xb809aeb1, 0xa1129ff0, 0x8a3fcc33, + 0x9324fd72}, + {0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, + 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, + 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, + 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, + 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856, + 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, + 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, + 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, + 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, + 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a, + 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, + 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, + 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, + 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, + 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e, + 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01, + 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, + 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, + 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, + 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, + 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, + 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, + 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010, + 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, + 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, + 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, + 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, + 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, + 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344, + 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, + 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, + 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, + 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, + 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c, + 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, + 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, + 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, + 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, + 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c, + 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713, + 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, + 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242, + 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, + 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, + 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278, + 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, + 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66, + 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, + 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, + 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, + 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, + 0x2d02ef8d}}; + +local const z_word_t FAR crc_braid_big_table[][256] = { + {0x00000000, 0x96300777, 0x2c610eee, 0xba510999, 0x19c46d07, + 0x8ff46a70, 0x35a563e9, 0xa395649e, 0x3288db0e, 0xa4b8dc79, + 0x1ee9d5e0, 0x88d9d297, 0x2b4cb609, 0xbd7cb17e, 0x072db8e7, + 0x911dbf90, 0x6410b71d, 0xf220b06a, 0x4871b9f3, 0xde41be84, + 0x7dd4da1a, 0xebe4dd6d, 0x51b5d4f4, 0xc785d383, 0x56986c13, + 0xc0a86b64, 0x7af962fd, 0xecc9658a, 0x4f5c0114, 0xd96c0663, + 0x633d0ffa, 0xf50d088d, 0xc8206e3b, 0x5e10694c, 0xe44160d5, + 0x727167a2, 0xd1e4033c, 0x47d4044b, 0xfd850dd2, 0x6bb50aa5, + 0xfaa8b535, 0x6c98b242, 0xd6c9bbdb, 0x40f9bcac, 0xe36cd832, + 0x755cdf45, 0xcf0dd6dc, 0x593dd1ab, 0xac30d926, 0x3a00de51, + 0x8051d7c8, 0x1661d0bf, 0xb5f4b421, 0x23c4b356, 0x9995bacf, + 0x0fa5bdb8, 0x9eb80228, 0x0888055f, 0xb2d90cc6, 0x24e90bb1, + 0x877c6f2f, 0x114c6858, 0xab1d61c1, 0x3d2d66b6, 0x9041dc76, + 0x0671db01, 0xbc20d298, 0x2a10d5ef, 0x8985b171, 0x1fb5b606, + 0xa5e4bf9f, 0x33d4b8e8, 0xa2c90778, 0x34f9000f, 0x8ea80996, + 0x18980ee1, 0xbb0d6a7f, 0x2d3d6d08, 0x976c6491, 0x015c63e6, + 0xf4516b6b, 0x62616c1c, 0xd8306585, 0x4e0062f2, 0xed95066c, + 0x7ba5011b, 0xc1f40882, 0x57c40ff5, 0xc6d9b065, 0x50e9b712, + 0xeab8be8b, 0x7c88b9fc, 0xdf1ddd62, 0x492dda15, 0xf37cd38c, + 0x654cd4fb, 0x5861b24d, 0xce51b53a, 0x7400bca3, 0xe230bbd4, + 0x41a5df4a, 0xd795d83d, 0x6dc4d1a4, 0xfbf4d6d3, 0x6ae96943, + 0xfcd96e34, 0x468867ad, 0xd0b860da, 0x732d0444, 0xe51d0333, + 0x5f4c0aaa, 0xc97c0ddd, 0x3c710550, 0xaa410227, 0x10100bbe, + 0x86200cc9, 0x25b56857, 0xb3856f20, 0x09d466b9, 0x9fe461ce, + 0x0ef9de5e, 0x98c9d929, 0x2298d0b0, 0xb4a8d7c7, 0x173db359, + 0x810db42e, 0x3b5cbdb7, 0xad6cbac0, 0x2083b8ed, 0xb6b3bf9a, + 0x0ce2b603, 0x9ad2b174, 0x3947d5ea, 0xaf77d29d, 0x1526db04, + 0x8316dc73, 0x120b63e3, 0x843b6494, 0x3e6a6d0d, 0xa85a6a7a, + 0x0bcf0ee4, 0x9dff0993, 0x27ae000a, 0xb19e077d, 0x44930ff0, + 0xd2a30887, 0x68f2011e, 0xfec20669, 0x5d5762f7, 0xcb676580, + 0x71366c19, 0xe7066b6e, 0x761bd4fe, 0xe02bd389, 0x5a7ada10, + 0xcc4add67, 0x6fdfb9f9, 0xf9efbe8e, 0x43beb717, 0xd58eb060, + 0xe8a3d6d6, 0x7e93d1a1, 0xc4c2d838, 0x52f2df4f, 0xf167bbd1, + 0x6757bca6, 0xdd06b53f, 0x4b36b248, 0xda2b0dd8, 0x4c1b0aaf, + 0xf64a0336, 0x607a0441, 0xc3ef60df, 0x55df67a8, 0xef8e6e31, + 0x79be6946, 0x8cb361cb, 0x1a8366bc, 0xa0d26f25, 0x36e26852, + 0x95770ccc, 0x03470bbb, 0xb9160222, 0x2f260555, 0xbe3bbac5, + 0x280bbdb2, 0x925ab42b, 0x046ab35c, 0xa7ffd7c2, 0x31cfd0b5, + 0x8b9ed92c, 0x1daede5b, 0xb0c2649b, 0x26f263ec, 0x9ca36a75, + 0x0a936d02, 0xa906099c, 0x3f360eeb, 0x85670772, 0x13570005, + 0x824abf95, 0x147ab8e2, 0xae2bb17b, 0x381bb60c, 0x9b8ed292, + 0x0dbed5e5, 0xb7efdc7c, 0x21dfdb0b, 0xd4d2d386, 0x42e2d4f1, + 0xf8b3dd68, 0x6e83da1f, 0xcd16be81, 0x5b26b9f6, 0xe177b06f, + 0x7747b718, 0xe65a0888, 0x706a0fff, 0xca3b0666, 0x5c0b0111, + 0xff9e658f, 0x69ae62f8, 0xd3ff6b61, 0x45cf6c16, 0x78e20aa0, + 0xeed20dd7, 0x5483044e, 0xc2b30339, 0x612667a7, 0xf71660d0, + 0x4d476949, 0xdb776e3e, 0x4a6ad1ae, 0xdc5ad6d9, 0x660bdf40, + 0xf03bd837, 0x53aebca9, 0xc59ebbde, 0x7fcfb247, 0xe9ffb530, + 0x1cf2bdbd, 0x8ac2baca, 0x3093b353, 0xa6a3b424, 0x0536d0ba, + 0x9306d7cd, 0x2957de54, 0xbf67d923, 0x2e7a66b3, 0xb84a61c4, + 0x021b685d, 0x942b6f2a, 0x37be0bb4, 0xa18e0cc3, 0x1bdf055a, + 0x8def022d}, + {0x00000000, 0x41311b19, 0x82623632, 0xc3532d2b, 0x04c56c64, + 0x45f4777d, 0x86a75a56, 0xc796414f, 0x088ad9c8, 0x49bbc2d1, + 0x8ae8effa, 0xcbd9f4e3, 0x0c4fb5ac, 0x4d7eaeb5, 0x8e2d839e, + 0xcf1c9887, 0x5112c24a, 0x1023d953, 0xd370f478, 0x9241ef61, + 0x55d7ae2e, 0x14e6b537, 0xd7b5981c, 0x96848305, 0x59981b82, + 0x18a9009b, 0xdbfa2db0, 0x9acb36a9, 0x5d5d77e6, 0x1c6c6cff, + 0xdf3f41d4, 0x9e0e5acd, 0xa2248495, 0xe3159f8c, 0x2046b2a7, + 0x6177a9be, 0xa6e1e8f1, 0xe7d0f3e8, 0x2483dec3, 0x65b2c5da, + 0xaaae5d5d, 0xeb9f4644, 0x28cc6b6f, 0x69fd7076, 0xae6b3139, + 0xef5a2a20, 0x2c09070b, 0x6d381c12, 0xf33646df, 0xb2075dc6, + 0x715470ed, 0x30656bf4, 0xf7f32abb, 0xb6c231a2, 0x75911c89, + 0x34a00790, 0xfbbc9f17, 0xba8d840e, 0x79dea925, 0x38efb23c, + 0xff79f373, 0xbe48e86a, 0x7d1bc541, 0x3c2ade58, 0x054f79f0, + 0x447e62e9, 0x872d4fc2, 0xc61c54db, 0x018a1594, 0x40bb0e8d, + 0x83e823a6, 0xc2d938bf, 0x0dc5a038, 0x4cf4bb21, 0x8fa7960a, + 0xce968d13, 0x0900cc5c, 0x4831d745, 0x8b62fa6e, 0xca53e177, + 0x545dbbba, 0x156ca0a3, 0xd63f8d88, 0x970e9691, 0x5098d7de, + 0x11a9ccc7, 0xd2fae1ec, 0x93cbfaf5, 0x5cd76272, 0x1de6796b, + 0xdeb55440, 0x9f844f59, 0x58120e16, 0x1923150f, 0xda703824, + 0x9b41233d, 0xa76bfd65, 0xe65ae67c, 0x2509cb57, 0x6438d04e, + 0xa3ae9101, 0xe29f8a18, 0x21cca733, 0x60fdbc2a, 0xafe124ad, + 0xeed03fb4, 0x2d83129f, 0x6cb20986, 0xab2448c9, 0xea1553d0, + 0x29467efb, 0x687765e2, 0xf6793f2f, 0xb7482436, 0x741b091d, + 0x352a1204, 0xf2bc534b, 0xb38d4852, 0x70de6579, 0x31ef7e60, + 0xfef3e6e7, 0xbfc2fdfe, 0x7c91d0d5, 0x3da0cbcc, 0xfa368a83, + 0xbb07919a, 0x7854bcb1, 0x3965a7a8, 0x4b98833b, 0x0aa99822, + 0xc9fab509, 0x88cbae10, 0x4f5def5f, 0x0e6cf446, 0xcd3fd96d, + 0x8c0ec274, 0x43125af3, 0x022341ea, 0xc1706cc1, 0x804177d8, + 0x47d73697, 0x06e62d8e, 0xc5b500a5, 0x84841bbc, 0x1a8a4171, + 0x5bbb5a68, 0x98e87743, 0xd9d96c5a, 0x1e4f2d15, 0x5f7e360c, + 0x9c2d1b27, 0xdd1c003e, 0x120098b9, 0x533183a0, 0x9062ae8b, + 0xd153b592, 0x16c5f4dd, 0x57f4efc4, 0x94a7c2ef, 0xd596d9f6, + 0xe9bc07ae, 0xa88d1cb7, 0x6bde319c, 0x2aef2a85, 0xed796bca, + 0xac4870d3, 0x6f1b5df8, 0x2e2a46e1, 0xe136de66, 0xa007c57f, + 0x6354e854, 0x2265f34d, 0xe5f3b202, 0xa4c2a91b, 0x67918430, + 0x26a09f29, 0xb8aec5e4, 0xf99fdefd, 0x3accf3d6, 0x7bfde8cf, + 0xbc6ba980, 0xfd5ab299, 0x3e099fb2, 0x7f3884ab, 0xb0241c2c, + 0xf1150735, 0x32462a1e, 0x73773107, 0xb4e17048, 0xf5d06b51, + 0x3683467a, 0x77b25d63, 0x4ed7facb, 0x0fe6e1d2, 0xccb5ccf9, + 0x8d84d7e0, 0x4a1296af, 0x0b238db6, 0xc870a09d, 0x8941bb84, + 0x465d2303, 0x076c381a, 0xc43f1531, 0x850e0e28, 0x42984f67, + 0x03a9547e, 0xc0fa7955, 0x81cb624c, 0x1fc53881, 0x5ef42398, + 0x9da70eb3, 0xdc9615aa, 0x1b0054e5, 0x5a314ffc, 0x996262d7, + 0xd85379ce, 0x174fe149, 0x567efa50, 0x952dd77b, 0xd41ccc62, + 0x138a8d2d, 0x52bb9634, 0x91e8bb1f, 0xd0d9a006, 0xecf37e5e, + 0xadc26547, 0x6e91486c, 0x2fa05375, 0xe836123a, 0xa9070923, + 0x6a542408, 0x2b653f11, 0xe479a796, 0xa548bc8f, 0x661b91a4, + 0x272a8abd, 0xe0bccbf2, 0xa18dd0eb, 0x62defdc0, 0x23efe6d9, + 0xbde1bc14, 0xfcd0a70d, 0x3f838a26, 0x7eb2913f, 0xb924d070, + 0xf815cb69, 0x3b46e642, 0x7a77fd5b, 0xb56b65dc, 0xf45a7ec5, + 0x370953ee, 0x763848f7, 0xb1ae09b8, 0xf09f12a1, 0x33cc3f8a, + 0x72fd2493}, + {0x00000000, 0x376ac201, 0x6ed48403, 0x59be4602, 0xdca80907, + 0xebc2cb06, 0xb27c8d04, 0x85164f05, 0xb851130e, 0x8f3bd10f, + 0xd685970d, 0xe1ef550c, 0x64f91a09, 0x5393d808, 0x0a2d9e0a, + 0x3d475c0b, 0x70a3261c, 0x47c9e41d, 0x1e77a21f, 0x291d601e, + 0xac0b2f1b, 0x9b61ed1a, 0xc2dfab18, 0xf5b56919, 0xc8f23512, + 0xff98f713, 0xa626b111, 0x914c7310, 0x145a3c15, 0x2330fe14, + 0x7a8eb816, 0x4de47a17, 0xe0464d38, 0xd72c8f39, 0x8e92c93b, + 0xb9f80b3a, 0x3cee443f, 0x0b84863e, 0x523ac03c, 0x6550023d, + 0x58175e36, 0x6f7d9c37, 0x36c3da35, 0x01a91834, 0x84bf5731, + 0xb3d59530, 0xea6bd332, 0xdd011133, 0x90e56b24, 0xa78fa925, + 0xfe31ef27, 0xc95b2d26, 0x4c4d6223, 0x7b27a022, 0x2299e620, + 0x15f32421, 0x28b4782a, 0x1fdeba2b, 0x4660fc29, 0x710a3e28, + 0xf41c712d, 0xc376b32c, 0x9ac8f52e, 0xada2372f, 0xc08d9a70, + 0xf7e75871, 0xae591e73, 0x9933dc72, 0x1c259377, 0x2b4f5176, + 0x72f11774, 0x459bd575, 0x78dc897e, 0x4fb64b7f, 0x16080d7d, + 0x2162cf7c, 0xa4748079, 0x931e4278, 0xcaa0047a, 0xfdcac67b, + 0xb02ebc6c, 0x87447e6d, 0xdefa386f, 0xe990fa6e, 0x6c86b56b, + 0x5bec776a, 0x02523168, 0x3538f369, 0x087faf62, 0x3f156d63, + 0x66ab2b61, 0x51c1e960, 0xd4d7a665, 0xe3bd6464, 0xba032266, + 0x8d69e067, 0x20cbd748, 0x17a11549, 0x4e1f534b, 0x7975914a, + 0xfc63de4f, 0xcb091c4e, 0x92b75a4c, 0xa5dd984d, 0x989ac446, + 0xaff00647, 0xf64e4045, 0xc1248244, 0x4432cd41, 0x73580f40, + 0x2ae64942, 0x1d8c8b43, 0x5068f154, 0x67023355, 0x3ebc7557, + 0x09d6b756, 0x8cc0f853, 0xbbaa3a52, 0xe2147c50, 0xd57ebe51, + 0xe839e25a, 0xdf53205b, 0x86ed6659, 0xb187a458, 0x3491eb5d, + 0x03fb295c, 0x5a456f5e, 0x6d2fad5f, 0x801b35e1, 0xb771f7e0, + 0xeecfb1e2, 0xd9a573e3, 0x5cb33ce6, 0x6bd9fee7, 0x3267b8e5, + 0x050d7ae4, 0x384a26ef, 0x0f20e4ee, 0x569ea2ec, 0x61f460ed, + 0xe4e22fe8, 0xd388ede9, 0x8a36abeb, 0xbd5c69ea, 0xf0b813fd, + 0xc7d2d1fc, 0x9e6c97fe, 0xa90655ff, 0x2c101afa, 0x1b7ad8fb, + 0x42c49ef9, 0x75ae5cf8, 0x48e900f3, 0x7f83c2f2, 0x263d84f0, + 0x115746f1, 0x944109f4, 0xa32bcbf5, 0xfa958df7, 0xcdff4ff6, + 0x605d78d9, 0x5737bad8, 0x0e89fcda, 0x39e33edb, 0xbcf571de, + 0x8b9fb3df, 0xd221f5dd, 0xe54b37dc, 0xd80c6bd7, 0xef66a9d6, + 0xb6d8efd4, 0x81b22dd5, 0x04a462d0, 0x33cea0d1, 0x6a70e6d3, + 0x5d1a24d2, 0x10fe5ec5, 0x27949cc4, 0x7e2adac6, 0x494018c7, + 0xcc5657c2, 0xfb3c95c3, 0xa282d3c1, 0x95e811c0, 0xa8af4dcb, + 0x9fc58fca, 0xc67bc9c8, 0xf1110bc9, 0x740744cc, 0x436d86cd, + 0x1ad3c0cf, 0x2db902ce, 0x4096af91, 0x77fc6d90, 0x2e422b92, + 0x1928e993, 0x9c3ea696, 0xab546497, 0xf2ea2295, 0xc580e094, + 0xf8c7bc9f, 0xcfad7e9e, 0x9613389c, 0xa179fa9d, 0x246fb598, + 0x13057799, 0x4abb319b, 0x7dd1f39a, 0x3035898d, 0x075f4b8c, + 0x5ee10d8e, 0x698bcf8f, 0xec9d808a, 0xdbf7428b, 0x82490489, + 0xb523c688, 0x88649a83, 0xbf0e5882, 0xe6b01e80, 0xd1dadc81, + 0x54cc9384, 0x63a65185, 0x3a181787, 0x0d72d586, 0xa0d0e2a9, + 0x97ba20a8, 0xce0466aa, 0xf96ea4ab, 0x7c78ebae, 0x4b1229af, + 0x12ac6fad, 0x25c6adac, 0x1881f1a7, 0x2feb33a6, 0x765575a4, + 0x413fb7a5, 0xc429f8a0, 0xf3433aa1, 0xaafd7ca3, 0x9d97bea2, + 0xd073c4b5, 0xe71906b4, 0xbea740b6, 0x89cd82b7, 0x0cdbcdb2, + 0x3bb10fb3, 0x620f49b1, 0x55658bb0, 0x6822d7bb, 0x5f4815ba, + 0x06f653b8, 0x319c91b9, 0xb48adebc, 0x83e01cbd, 0xda5e5abf, + 0xed3498be}, + {0x00000000, 0x6567bcb8, 0x8bc809aa, 0xeeafb512, 0x5797628f, + 0x32f0de37, 0xdc5f6b25, 0xb938d79d, 0xef28b4c5, 0x8a4f087d, + 0x64e0bd6f, 0x018701d7, 0xb8bfd64a, 0xddd86af2, 0x3377dfe0, + 0x56106358, 0x9f571950, 0xfa30a5e8, 0x149f10fa, 0x71f8ac42, + 0xc8c07bdf, 0xada7c767, 0x43087275, 0x266fcecd, 0x707fad95, + 0x1518112d, 0xfbb7a43f, 0x9ed01887, 0x27e8cf1a, 0x428f73a2, + 0xac20c6b0, 0xc9477a08, 0x3eaf32a0, 0x5bc88e18, 0xb5673b0a, + 0xd00087b2, 0x6938502f, 0x0c5fec97, 0xe2f05985, 0x8797e53d, + 0xd1878665, 0xb4e03add, 0x5a4f8fcf, 0x3f283377, 0x8610e4ea, + 0xe3775852, 0x0dd8ed40, 0x68bf51f8, 0xa1f82bf0, 0xc49f9748, + 0x2a30225a, 0x4f579ee2, 0xf66f497f, 0x9308f5c7, 0x7da740d5, + 0x18c0fc6d, 0x4ed09f35, 0x2bb7238d, 0xc518969f, 0xa07f2a27, + 0x1947fdba, 0x7c204102, 0x928ff410, 0xf7e848a8, 0x3d58149b, + 0x583fa823, 0xb6901d31, 0xd3f7a189, 0x6acf7614, 0x0fa8caac, + 0xe1077fbe, 0x8460c306, 0xd270a05e, 0xb7171ce6, 0x59b8a9f4, + 0x3cdf154c, 0x85e7c2d1, 0xe0807e69, 0x0e2fcb7b, 0x6b4877c3, + 0xa20f0dcb, 0xc768b173, 0x29c70461, 0x4ca0b8d9, 0xf5986f44, + 0x90ffd3fc, 0x7e5066ee, 0x1b37da56, 0x4d27b90e, 0x284005b6, + 0xc6efb0a4, 0xa3880c1c, 0x1ab0db81, 0x7fd76739, 0x9178d22b, + 0xf41f6e93, 0x03f7263b, 0x66909a83, 0x883f2f91, 0xed589329, + 0x546044b4, 0x3107f80c, 0xdfa84d1e, 0xbacff1a6, 0xecdf92fe, + 0x89b82e46, 0x67179b54, 0x027027ec, 0xbb48f071, 0xde2f4cc9, + 0x3080f9db, 0x55e74563, 0x9ca03f6b, 0xf9c783d3, 0x176836c1, + 0x720f8a79, 0xcb375de4, 0xae50e15c, 0x40ff544e, 0x2598e8f6, + 0x73888bae, 0x16ef3716, 0xf8408204, 0x9d273ebc, 0x241fe921, + 0x41785599, 0xafd7e08b, 0xcab05c33, 0x3bb659ed, 0x5ed1e555, + 0xb07e5047, 0xd519ecff, 0x6c213b62, 0x094687da, 0xe7e932c8, + 0x828e8e70, 0xd49eed28, 0xb1f95190, 0x5f56e482, 0x3a31583a, + 0x83098fa7, 0xe66e331f, 0x08c1860d, 0x6da63ab5, 0xa4e140bd, + 0xc186fc05, 0x2f294917, 0x4a4ef5af, 0xf3762232, 0x96119e8a, + 0x78be2b98, 0x1dd99720, 0x4bc9f478, 0x2eae48c0, 0xc001fdd2, + 0xa566416a, 0x1c5e96f7, 0x79392a4f, 0x97969f5d, 0xf2f123e5, + 0x05196b4d, 0x607ed7f5, 0x8ed162e7, 0xebb6de5f, 0x528e09c2, + 0x37e9b57a, 0xd9460068, 0xbc21bcd0, 0xea31df88, 0x8f566330, + 0x61f9d622, 0x049e6a9a, 0xbda6bd07, 0xd8c101bf, 0x366eb4ad, + 0x53090815, 0x9a4e721d, 0xff29cea5, 0x11867bb7, 0x74e1c70f, + 0xcdd91092, 0xa8beac2a, 0x46111938, 0x2376a580, 0x7566c6d8, + 0x10017a60, 0xfeaecf72, 0x9bc973ca, 0x22f1a457, 0x479618ef, + 0xa939adfd, 0xcc5e1145, 0x06ee4d76, 0x6389f1ce, 0x8d2644dc, + 0xe841f864, 0x51792ff9, 0x341e9341, 0xdab12653, 0xbfd69aeb, + 0xe9c6f9b3, 0x8ca1450b, 0x620ef019, 0x07694ca1, 0xbe519b3c, + 0xdb362784, 0x35999296, 0x50fe2e2e, 0x99b95426, 0xfcdee89e, + 0x12715d8c, 0x7716e134, 0xce2e36a9, 0xab498a11, 0x45e63f03, + 0x208183bb, 0x7691e0e3, 0x13f65c5b, 0xfd59e949, 0x983e55f1, + 0x2106826c, 0x44613ed4, 0xaace8bc6, 0xcfa9377e, 0x38417fd6, + 0x5d26c36e, 0xb389767c, 0xd6eecac4, 0x6fd61d59, 0x0ab1a1e1, + 0xe41e14f3, 0x8179a84b, 0xd769cb13, 0xb20e77ab, 0x5ca1c2b9, + 0x39c67e01, 0x80fea99c, 0xe5991524, 0x0b36a036, 0x6e511c8e, + 0xa7166686, 0xc271da3e, 0x2cde6f2c, 0x49b9d394, 0xf0810409, + 0x95e6b8b1, 0x7b490da3, 0x1e2eb11b, 0x483ed243, 0x2d596efb, + 0xc3f6dbe9, 0xa6916751, 0x1fa9b0cc, 0x7ace0c74, 0x9461b966, + 0xf10605de}}; + +#endif + +#endif + +#if N == 2 + +#if W == 8 + +local const z_crc_t FAR crc_braid_table[][256] = { + {0x00000000, 0xae689191, 0x87a02563, 0x29c8b4f2, 0xd4314c87, + 0x7a59dd16, 0x539169e4, 0xfdf9f875, 0x73139f4f, 0xdd7b0ede, + 0xf4b3ba2c, 0x5adb2bbd, 0xa722d3c8, 0x094a4259, 0x2082f6ab, + 0x8eea673a, 0xe6273e9e, 0x484faf0f, 0x61871bfd, 0xcfef8a6c, + 0x32167219, 0x9c7ee388, 0xb5b6577a, 0x1bdec6eb, 0x9534a1d1, + 0x3b5c3040, 0x129484b2, 0xbcfc1523, 0x4105ed56, 0xef6d7cc7, + 0xc6a5c835, 0x68cd59a4, 0x173f7b7d, 0xb957eaec, 0x909f5e1e, + 0x3ef7cf8f, 0xc30e37fa, 0x6d66a66b, 0x44ae1299, 0xeac68308, + 0x642ce432, 0xca4475a3, 0xe38cc151, 0x4de450c0, 0xb01da8b5, + 0x1e753924, 0x37bd8dd6, 0x99d51c47, 0xf11845e3, 0x5f70d472, + 0x76b86080, 0xd8d0f111, 0x25290964, 0x8b4198f5, 0xa2892c07, + 0x0ce1bd96, 0x820bdaac, 0x2c634b3d, 0x05abffcf, 0xabc36e5e, + 0x563a962b, 0xf85207ba, 0xd19ab348, 0x7ff222d9, 0x2e7ef6fa, + 0x8016676b, 0xa9ded399, 0x07b64208, 0xfa4fba7d, 0x54272bec, + 0x7def9f1e, 0xd3870e8f, 0x5d6d69b5, 0xf305f824, 0xdacd4cd6, + 0x74a5dd47, 0x895c2532, 0x2734b4a3, 0x0efc0051, 0xa09491c0, + 0xc859c864, 0x663159f5, 0x4ff9ed07, 0xe1917c96, 0x1c6884e3, + 0xb2001572, 0x9bc8a180, 0x35a03011, 0xbb4a572b, 0x1522c6ba, + 0x3cea7248, 0x9282e3d9, 0x6f7b1bac, 0xc1138a3d, 0xe8db3ecf, + 0x46b3af5e, 0x39418d87, 0x97291c16, 0xbee1a8e4, 0x10893975, + 0xed70c100, 0x43185091, 0x6ad0e463, 0xc4b875f2, 0x4a5212c8, + 0xe43a8359, 0xcdf237ab, 0x639aa63a, 0x9e635e4f, 0x300bcfde, + 0x19c37b2c, 0xb7abeabd, 0xdf66b319, 0x710e2288, 0x58c6967a, + 0xf6ae07eb, 0x0b57ff9e, 0xa53f6e0f, 0x8cf7dafd, 0x229f4b6c, + 0xac752c56, 0x021dbdc7, 0x2bd50935, 0x85bd98a4, 0x784460d1, + 0xd62cf140, 0xffe445b2, 0x518cd423, 0x5cfdedf4, 0xf2957c65, + 0xdb5dc897, 0x75355906, 0x88cca173, 0x26a430e2, 0x0f6c8410, + 0xa1041581, 0x2fee72bb, 0x8186e32a, 0xa84e57d8, 0x0626c649, + 0xfbdf3e3c, 0x55b7afad, 0x7c7f1b5f, 0xd2178ace, 0xbadad36a, + 0x14b242fb, 0x3d7af609, 0x93126798, 0x6eeb9fed, 0xc0830e7c, + 0xe94bba8e, 0x47232b1f, 0xc9c94c25, 0x67a1ddb4, 0x4e696946, + 0xe001f8d7, 0x1df800a2, 0xb3909133, 0x9a5825c1, 0x3430b450, + 0x4bc29689, 0xe5aa0718, 0xcc62b3ea, 0x620a227b, 0x9ff3da0e, + 0x319b4b9f, 0x1853ff6d, 0xb63b6efc, 0x38d109c6, 0x96b99857, + 0xbf712ca5, 0x1119bd34, 0xece04541, 0x4288d4d0, 0x6b406022, + 0xc528f1b3, 0xade5a817, 0x038d3986, 0x2a458d74, 0x842d1ce5, + 0x79d4e490, 0xd7bc7501, 0xfe74c1f3, 0x501c5062, 0xdef63758, + 0x709ea6c9, 0x5956123b, 0xf73e83aa, 0x0ac77bdf, 0xa4afea4e, + 0x8d675ebc, 0x230fcf2d, 0x72831b0e, 0xdceb8a9f, 0xf5233e6d, + 0x5b4baffc, 0xa6b25789, 0x08dac618, 0x211272ea, 0x8f7ae37b, + 0x01908441, 0xaff815d0, 0x8630a122, 0x285830b3, 0xd5a1c8c6, + 0x7bc95957, 0x5201eda5, 0xfc697c34, 0x94a42590, 0x3accb401, + 0x130400f3, 0xbd6c9162, 0x40956917, 0xeefdf886, 0xc7354c74, + 0x695ddde5, 0xe7b7badf, 0x49df2b4e, 0x60179fbc, 0xce7f0e2d, + 0x3386f658, 0x9dee67c9, 0xb426d33b, 0x1a4e42aa, 0x65bc6073, + 0xcbd4f1e2, 0xe21c4510, 0x4c74d481, 0xb18d2cf4, 0x1fe5bd65, + 0x362d0997, 0x98459806, 0x16afff3c, 0xb8c76ead, 0x910fda5f, + 0x3f674bce, 0xc29eb3bb, 0x6cf6222a, 0x453e96d8, 0xeb560749, + 0x839b5eed, 0x2df3cf7c, 0x043b7b8e, 0xaa53ea1f, 0x57aa126a, + 0xf9c283fb, 0xd00a3709, 0x7e62a698, 0xf088c1a2, 0x5ee05033, + 0x7728e4c1, 0xd9407550, 0x24b98d25, 0x8ad11cb4, 0xa319a846, + 0x0d7139d7}, + {0x00000000, 0xb9fbdbe8, 0xa886b191, 0x117d6a79, 0x8a7c6563, + 0x3387be8b, 0x22fad4f2, 0x9b010f1a, 0xcf89cc87, 0x7672176f, + 0x670f7d16, 0xdef4a6fe, 0x45f5a9e4, 0xfc0e720c, 0xed731875, + 0x5488c39d, 0x44629f4f, 0xfd9944a7, 0xece42ede, 0x551ff536, + 0xce1efa2c, 0x77e521c4, 0x66984bbd, 0xdf639055, 0x8beb53c8, + 0x32108820, 0x236de259, 0x9a9639b1, 0x019736ab, 0xb86ced43, + 0xa911873a, 0x10ea5cd2, 0x88c53e9e, 0x313ee576, 0x20438f0f, + 0x99b854e7, 0x02b95bfd, 0xbb428015, 0xaa3fea6c, 0x13c43184, + 0x474cf219, 0xfeb729f1, 0xefca4388, 0x56319860, 0xcd30977a, + 0x74cb4c92, 0x65b626eb, 0xdc4dfd03, 0xcca7a1d1, 0x755c7a39, + 0x64211040, 0xdddacba8, 0x46dbc4b2, 0xff201f5a, 0xee5d7523, + 0x57a6aecb, 0x032e6d56, 0xbad5b6be, 0xaba8dcc7, 0x1253072f, + 0x89520835, 0x30a9d3dd, 0x21d4b9a4, 0x982f624c, 0xcafb7b7d, + 0x7300a095, 0x627dcaec, 0xdb861104, 0x40871e1e, 0xf97cc5f6, + 0xe801af8f, 0x51fa7467, 0x0572b7fa, 0xbc896c12, 0xadf4066b, + 0x140fdd83, 0x8f0ed299, 0x36f50971, 0x27886308, 0x9e73b8e0, + 0x8e99e432, 0x37623fda, 0x261f55a3, 0x9fe48e4b, 0x04e58151, + 0xbd1e5ab9, 0xac6330c0, 0x1598eb28, 0x411028b5, 0xf8ebf35d, + 0xe9969924, 0x506d42cc, 0xcb6c4dd6, 0x7297963e, 0x63eafc47, + 0xda1127af, 0x423e45e3, 0xfbc59e0b, 0xeab8f472, 0x53432f9a, + 0xc8422080, 0x71b9fb68, 0x60c49111, 0xd93f4af9, 0x8db78964, + 0x344c528c, 0x253138f5, 0x9ccae31d, 0x07cbec07, 0xbe3037ef, + 0xaf4d5d96, 0x16b6867e, 0x065cdaac, 0xbfa70144, 0xaeda6b3d, + 0x1721b0d5, 0x8c20bfcf, 0x35db6427, 0x24a60e5e, 0x9d5dd5b6, + 0xc9d5162b, 0x702ecdc3, 0x6153a7ba, 0xd8a87c52, 0x43a97348, + 0xfa52a8a0, 0xeb2fc2d9, 0x52d41931, 0x4e87f0bb, 0xf77c2b53, + 0xe601412a, 0x5ffa9ac2, 0xc4fb95d8, 0x7d004e30, 0x6c7d2449, + 0xd586ffa1, 0x810e3c3c, 0x38f5e7d4, 0x29888dad, 0x90735645, + 0x0b72595f, 0xb28982b7, 0xa3f4e8ce, 0x1a0f3326, 0x0ae56ff4, + 0xb31eb41c, 0xa263de65, 0x1b98058d, 0x80990a97, 0x3962d17f, + 0x281fbb06, 0x91e460ee, 0xc56ca373, 0x7c97789b, 0x6dea12e2, + 0xd411c90a, 0x4f10c610, 0xf6eb1df8, 0xe7967781, 0x5e6dac69, + 0xc642ce25, 0x7fb915cd, 0x6ec47fb4, 0xd73fa45c, 0x4c3eab46, + 0xf5c570ae, 0xe4b81ad7, 0x5d43c13f, 0x09cb02a2, 0xb030d94a, + 0xa14db333, 0x18b668db, 0x83b767c1, 0x3a4cbc29, 0x2b31d650, + 0x92ca0db8, 0x8220516a, 0x3bdb8a82, 0x2aa6e0fb, 0x935d3b13, + 0x085c3409, 0xb1a7efe1, 0xa0da8598, 0x19215e70, 0x4da99ded, + 0xf4524605, 0xe52f2c7c, 0x5cd4f794, 0xc7d5f88e, 0x7e2e2366, + 0x6f53491f, 0xd6a892f7, 0x847c8bc6, 0x3d87502e, 0x2cfa3a57, + 0x9501e1bf, 0x0e00eea5, 0xb7fb354d, 0xa6865f34, 0x1f7d84dc, + 0x4bf54741, 0xf20e9ca9, 0xe373f6d0, 0x5a882d38, 0xc1892222, + 0x7872f9ca, 0x690f93b3, 0xd0f4485b, 0xc01e1489, 0x79e5cf61, + 0x6898a518, 0xd1637ef0, 0x4a6271ea, 0xf399aa02, 0xe2e4c07b, + 0x5b1f1b93, 0x0f97d80e, 0xb66c03e6, 0xa711699f, 0x1eeab277, + 0x85ebbd6d, 0x3c106685, 0x2d6d0cfc, 0x9496d714, 0x0cb9b558, + 0xb5426eb0, 0xa43f04c9, 0x1dc4df21, 0x86c5d03b, 0x3f3e0bd3, + 0x2e4361aa, 0x97b8ba42, 0xc33079df, 0x7acba237, 0x6bb6c84e, + 0xd24d13a6, 0x494c1cbc, 0xf0b7c754, 0xe1caad2d, 0x583176c5, + 0x48db2a17, 0xf120f1ff, 0xe05d9b86, 0x59a6406e, 0xc2a74f74, + 0x7b5c949c, 0x6a21fee5, 0xd3da250d, 0x8752e690, 0x3ea93d78, + 0x2fd45701, 0x962f8ce9, 0x0d2e83f3, 0xb4d5581b, 0xa5a83262, + 0x1c53e98a}, + {0x00000000, 0x9d0fe176, 0xe16ec4ad, 0x7c6125db, 0x19ac8f1b, + 0x84a36e6d, 0xf8c24bb6, 0x65cdaac0, 0x33591e36, 0xae56ff40, + 0xd237da9b, 0x4f383bed, 0x2af5912d, 0xb7fa705b, 0xcb9b5580, + 0x5694b4f6, 0x66b23c6c, 0xfbbddd1a, 0x87dcf8c1, 0x1ad319b7, + 0x7f1eb377, 0xe2115201, 0x9e7077da, 0x037f96ac, 0x55eb225a, + 0xc8e4c32c, 0xb485e6f7, 0x298a0781, 0x4c47ad41, 0xd1484c37, + 0xad2969ec, 0x3026889a, 0xcd6478d8, 0x506b99ae, 0x2c0abc75, + 0xb1055d03, 0xd4c8f7c3, 0x49c716b5, 0x35a6336e, 0xa8a9d218, + 0xfe3d66ee, 0x63328798, 0x1f53a243, 0x825c4335, 0xe791e9f5, + 0x7a9e0883, 0x06ff2d58, 0x9bf0cc2e, 0xabd644b4, 0x36d9a5c2, + 0x4ab88019, 0xd7b7616f, 0xb27acbaf, 0x2f752ad9, 0x53140f02, + 0xce1bee74, 0x988f5a82, 0x0580bbf4, 0x79e19e2f, 0xe4ee7f59, + 0x8123d599, 0x1c2c34ef, 0x604d1134, 0xfd42f042, 0x41b9f7f1, + 0xdcb61687, 0xa0d7335c, 0x3dd8d22a, 0x581578ea, 0xc51a999c, + 0xb97bbc47, 0x24745d31, 0x72e0e9c7, 0xefef08b1, 0x938e2d6a, + 0x0e81cc1c, 0x6b4c66dc, 0xf64387aa, 0x8a22a271, 0x172d4307, + 0x270bcb9d, 0xba042aeb, 0xc6650f30, 0x5b6aee46, 0x3ea74486, + 0xa3a8a5f0, 0xdfc9802b, 0x42c6615d, 0x1452d5ab, 0x895d34dd, + 0xf53c1106, 0x6833f070, 0x0dfe5ab0, 0x90f1bbc6, 0xec909e1d, + 0x719f7f6b, 0x8cdd8f29, 0x11d26e5f, 0x6db34b84, 0xf0bcaaf2, + 0x95710032, 0x087ee144, 0x741fc49f, 0xe91025e9, 0xbf84911f, + 0x228b7069, 0x5eea55b2, 0xc3e5b4c4, 0xa6281e04, 0x3b27ff72, + 0x4746daa9, 0xda493bdf, 0xea6fb345, 0x77605233, 0x0b0177e8, + 0x960e969e, 0xf3c33c5e, 0x6eccdd28, 0x12adf8f3, 0x8fa21985, + 0xd936ad73, 0x44394c05, 0x385869de, 0xa55788a8, 0xc09a2268, + 0x5d95c31e, 0x21f4e6c5, 0xbcfb07b3, 0x8373efe2, 0x1e7c0e94, + 0x621d2b4f, 0xff12ca39, 0x9adf60f9, 0x07d0818f, 0x7bb1a454, + 0xe6be4522, 0xb02af1d4, 0x2d2510a2, 0x51443579, 0xcc4bd40f, + 0xa9867ecf, 0x34899fb9, 0x48e8ba62, 0xd5e75b14, 0xe5c1d38e, + 0x78ce32f8, 0x04af1723, 0x99a0f655, 0xfc6d5c95, 0x6162bde3, + 0x1d039838, 0x800c794e, 0xd698cdb8, 0x4b972cce, 0x37f60915, + 0xaaf9e863, 0xcf3442a3, 0x523ba3d5, 0x2e5a860e, 0xb3556778, + 0x4e17973a, 0xd318764c, 0xaf795397, 0x3276b2e1, 0x57bb1821, + 0xcab4f957, 0xb6d5dc8c, 0x2bda3dfa, 0x7d4e890c, 0xe041687a, + 0x9c204da1, 0x012facd7, 0x64e20617, 0xf9ede761, 0x858cc2ba, + 0x188323cc, 0x28a5ab56, 0xb5aa4a20, 0xc9cb6ffb, 0x54c48e8d, + 0x3109244d, 0xac06c53b, 0xd067e0e0, 0x4d680196, 0x1bfcb560, + 0x86f35416, 0xfa9271cd, 0x679d90bb, 0x02503a7b, 0x9f5fdb0d, + 0xe33efed6, 0x7e311fa0, 0xc2ca1813, 0x5fc5f965, 0x23a4dcbe, + 0xbeab3dc8, 0xdb669708, 0x4669767e, 0x3a0853a5, 0xa707b2d3, + 0xf1930625, 0x6c9ce753, 0x10fdc288, 0x8df223fe, 0xe83f893e, + 0x75306848, 0x09514d93, 0x945eace5, 0xa478247f, 0x3977c509, + 0x4516e0d2, 0xd81901a4, 0xbdd4ab64, 0x20db4a12, 0x5cba6fc9, + 0xc1b58ebf, 0x97213a49, 0x0a2edb3f, 0x764ffee4, 0xeb401f92, + 0x8e8db552, 0x13825424, 0x6fe371ff, 0xf2ec9089, 0x0fae60cb, + 0x92a181bd, 0xeec0a466, 0x73cf4510, 0x1602efd0, 0x8b0d0ea6, + 0xf76c2b7d, 0x6a63ca0b, 0x3cf77efd, 0xa1f89f8b, 0xdd99ba50, + 0x40965b26, 0x255bf1e6, 0xb8541090, 0xc435354b, 0x593ad43d, + 0x691c5ca7, 0xf413bdd1, 0x8872980a, 0x157d797c, 0x70b0d3bc, + 0xedbf32ca, 0x91de1711, 0x0cd1f667, 0x5a454291, 0xc74aa3e7, + 0xbb2b863c, 0x2624674a, 0x43e9cd8a, 0xdee62cfc, 0xa2870927, + 0x3f88e851}, + {0x00000000, 0xdd96d985, 0x605cb54b, 0xbdca6cce, 0xc0b96a96, + 0x1d2fb313, 0xa0e5dfdd, 0x7d730658, 0x5a03d36d, 0x87950ae8, + 0x3a5f6626, 0xe7c9bfa3, 0x9abab9fb, 0x472c607e, 0xfae60cb0, + 0x2770d535, 0xb407a6da, 0x69917f5f, 0xd45b1391, 0x09cdca14, + 0x74becc4c, 0xa92815c9, 0x14e27907, 0xc974a082, 0xee0475b7, + 0x3392ac32, 0x8e58c0fc, 0x53ce1979, 0x2ebd1f21, 0xf32bc6a4, + 0x4ee1aa6a, 0x937773ef, 0xb37e4bf5, 0x6ee89270, 0xd322febe, + 0x0eb4273b, 0x73c72163, 0xae51f8e6, 0x139b9428, 0xce0d4dad, + 0xe97d9898, 0x34eb411d, 0x89212dd3, 0x54b7f456, 0x29c4f20e, + 0xf4522b8b, 0x49984745, 0x940e9ec0, 0x0779ed2f, 0xdaef34aa, + 0x67255864, 0xbab381e1, 0xc7c087b9, 0x1a565e3c, 0xa79c32f2, + 0x7a0aeb77, 0x5d7a3e42, 0x80ece7c7, 0x3d268b09, 0xe0b0528c, + 0x9dc354d4, 0x40558d51, 0xfd9fe19f, 0x2009381a, 0xbd8d91ab, + 0x601b482e, 0xddd124e0, 0x0047fd65, 0x7d34fb3d, 0xa0a222b8, + 0x1d684e76, 0xc0fe97f3, 0xe78e42c6, 0x3a189b43, 0x87d2f78d, + 0x5a442e08, 0x27372850, 0xfaa1f1d5, 0x476b9d1b, 0x9afd449e, + 0x098a3771, 0xd41ceef4, 0x69d6823a, 0xb4405bbf, 0xc9335de7, + 0x14a58462, 0xa96fe8ac, 0x74f93129, 0x5389e41c, 0x8e1f3d99, + 0x33d55157, 0xee4388d2, 0x93308e8a, 0x4ea6570f, 0xf36c3bc1, + 0x2efae244, 0x0ef3da5e, 0xd36503db, 0x6eaf6f15, 0xb339b690, + 0xce4ab0c8, 0x13dc694d, 0xae160583, 0x7380dc06, 0x54f00933, + 0x8966d0b6, 0x34acbc78, 0xe93a65fd, 0x944963a5, 0x49dfba20, + 0xf415d6ee, 0x29830f6b, 0xbaf47c84, 0x6762a501, 0xdaa8c9cf, + 0x073e104a, 0x7a4d1612, 0xa7dbcf97, 0x1a11a359, 0xc7877adc, + 0xe0f7afe9, 0x3d61766c, 0x80ab1aa2, 0x5d3dc327, 0x204ec57f, + 0xfdd81cfa, 0x40127034, 0x9d84a9b1, 0xa06a2517, 0x7dfcfc92, + 0xc036905c, 0x1da049d9, 0x60d34f81, 0xbd459604, 0x008ffaca, + 0xdd19234f, 0xfa69f67a, 0x27ff2fff, 0x9a354331, 0x47a39ab4, + 0x3ad09cec, 0xe7464569, 0x5a8c29a7, 0x871af022, 0x146d83cd, + 0xc9fb5a48, 0x74313686, 0xa9a7ef03, 0xd4d4e95b, 0x094230de, + 0xb4885c10, 0x691e8595, 0x4e6e50a0, 0x93f88925, 0x2e32e5eb, + 0xf3a43c6e, 0x8ed73a36, 0x5341e3b3, 0xee8b8f7d, 0x331d56f8, + 0x13146ee2, 0xce82b767, 0x7348dba9, 0xaede022c, 0xd3ad0474, + 0x0e3bddf1, 0xb3f1b13f, 0x6e6768ba, 0x4917bd8f, 0x9481640a, + 0x294b08c4, 0xf4ddd141, 0x89aed719, 0x54380e9c, 0xe9f26252, + 0x3464bbd7, 0xa713c838, 0x7a8511bd, 0xc74f7d73, 0x1ad9a4f6, + 0x67aaa2ae, 0xba3c7b2b, 0x07f617e5, 0xda60ce60, 0xfd101b55, + 0x2086c2d0, 0x9d4cae1e, 0x40da779b, 0x3da971c3, 0xe03fa846, + 0x5df5c488, 0x80631d0d, 0x1de7b4bc, 0xc0716d39, 0x7dbb01f7, + 0xa02dd872, 0xdd5ede2a, 0x00c807af, 0xbd026b61, 0x6094b2e4, + 0x47e467d1, 0x9a72be54, 0x27b8d29a, 0xfa2e0b1f, 0x875d0d47, + 0x5acbd4c2, 0xe701b80c, 0x3a976189, 0xa9e01266, 0x7476cbe3, + 0xc9bca72d, 0x142a7ea8, 0x695978f0, 0xb4cfa175, 0x0905cdbb, + 0xd493143e, 0xf3e3c10b, 0x2e75188e, 0x93bf7440, 0x4e29adc5, + 0x335aab9d, 0xeecc7218, 0x53061ed6, 0x8e90c753, 0xae99ff49, + 0x730f26cc, 0xcec54a02, 0x13539387, 0x6e2095df, 0xb3b64c5a, + 0x0e7c2094, 0xd3eaf911, 0xf49a2c24, 0x290cf5a1, 0x94c6996f, + 0x495040ea, 0x342346b2, 0xe9b59f37, 0x547ff3f9, 0x89e92a7c, + 0x1a9e5993, 0xc7088016, 0x7ac2ecd8, 0xa754355d, 0xda273305, + 0x07b1ea80, 0xba7b864e, 0x67ed5fcb, 0x409d8afe, 0x9d0b537b, + 0x20c13fb5, 0xfd57e630, 0x8024e068, 0x5db239ed, 0xe0785523, + 0x3dee8ca6}, + {0x00000000, 0x9ba54c6f, 0xec3b9e9f, 0x779ed2f0, 0x03063b7f, + 0x98a37710, 0xef3da5e0, 0x7498e98f, 0x060c76fe, 0x9da93a91, + 0xea37e861, 0x7192a40e, 0x050a4d81, 0x9eaf01ee, 0xe931d31e, + 0x72949f71, 0x0c18edfc, 0x97bda193, 0xe0237363, 0x7b863f0c, + 0x0f1ed683, 0x94bb9aec, 0xe325481c, 0x78800473, 0x0a149b02, + 0x91b1d76d, 0xe62f059d, 0x7d8a49f2, 0x0912a07d, 0x92b7ec12, + 0xe5293ee2, 0x7e8c728d, 0x1831dbf8, 0x83949797, 0xf40a4567, + 0x6faf0908, 0x1b37e087, 0x8092ace8, 0xf70c7e18, 0x6ca93277, + 0x1e3dad06, 0x8598e169, 0xf2063399, 0x69a37ff6, 0x1d3b9679, + 0x869eda16, 0xf10008e6, 0x6aa54489, 0x14293604, 0x8f8c7a6b, + 0xf812a89b, 0x63b7e4f4, 0x172f0d7b, 0x8c8a4114, 0xfb1493e4, + 0x60b1df8b, 0x122540fa, 0x89800c95, 0xfe1ede65, 0x65bb920a, + 0x11237b85, 0x8a8637ea, 0xfd18e51a, 0x66bda975, 0x3063b7f0, + 0xabc6fb9f, 0xdc58296f, 0x47fd6500, 0x33658c8f, 0xa8c0c0e0, + 0xdf5e1210, 0x44fb5e7f, 0x366fc10e, 0xadca8d61, 0xda545f91, + 0x41f113fe, 0x3569fa71, 0xaeccb61e, 0xd95264ee, 0x42f72881, + 0x3c7b5a0c, 0xa7de1663, 0xd040c493, 0x4be588fc, 0x3f7d6173, + 0xa4d82d1c, 0xd346ffec, 0x48e3b383, 0x3a772cf2, 0xa1d2609d, + 0xd64cb26d, 0x4de9fe02, 0x3971178d, 0xa2d45be2, 0xd54a8912, + 0x4eefc57d, 0x28526c08, 0xb3f72067, 0xc469f297, 0x5fccbef8, + 0x2b545777, 0xb0f11b18, 0xc76fc9e8, 0x5cca8587, 0x2e5e1af6, + 0xb5fb5699, 0xc2658469, 0x59c0c806, 0x2d582189, 0xb6fd6de6, + 0xc163bf16, 0x5ac6f379, 0x244a81f4, 0xbfefcd9b, 0xc8711f6b, + 0x53d45304, 0x274cba8b, 0xbce9f6e4, 0xcb772414, 0x50d2687b, + 0x2246f70a, 0xb9e3bb65, 0xce7d6995, 0x55d825fa, 0x2140cc75, + 0xbae5801a, 0xcd7b52ea, 0x56de1e85, 0x60c76fe0, 0xfb62238f, + 0x8cfcf17f, 0x1759bd10, 0x63c1549f, 0xf86418f0, 0x8ffaca00, + 0x145f866f, 0x66cb191e, 0xfd6e5571, 0x8af08781, 0x1155cbee, + 0x65cd2261, 0xfe686e0e, 0x89f6bcfe, 0x1253f091, 0x6cdf821c, + 0xf77ace73, 0x80e41c83, 0x1b4150ec, 0x6fd9b963, 0xf47cf50c, + 0x83e227fc, 0x18476b93, 0x6ad3f4e2, 0xf176b88d, 0x86e86a7d, + 0x1d4d2612, 0x69d5cf9d, 0xf27083f2, 0x85ee5102, 0x1e4b1d6d, + 0x78f6b418, 0xe353f877, 0x94cd2a87, 0x0f6866e8, 0x7bf08f67, + 0xe055c308, 0x97cb11f8, 0x0c6e5d97, 0x7efac2e6, 0xe55f8e89, + 0x92c15c79, 0x09641016, 0x7dfcf999, 0xe659b5f6, 0x91c76706, + 0x0a622b69, 0x74ee59e4, 0xef4b158b, 0x98d5c77b, 0x03708b14, + 0x77e8629b, 0xec4d2ef4, 0x9bd3fc04, 0x0076b06b, 0x72e22f1a, + 0xe9476375, 0x9ed9b185, 0x057cfdea, 0x71e41465, 0xea41580a, + 0x9ddf8afa, 0x067ac695, 0x50a4d810, 0xcb01947f, 0xbc9f468f, + 0x273a0ae0, 0x53a2e36f, 0xc807af00, 0xbf997df0, 0x243c319f, + 0x56a8aeee, 0xcd0de281, 0xba933071, 0x21367c1e, 0x55ae9591, + 0xce0bd9fe, 0xb9950b0e, 0x22304761, 0x5cbc35ec, 0xc7197983, + 0xb087ab73, 0x2b22e71c, 0x5fba0e93, 0xc41f42fc, 0xb381900c, + 0x2824dc63, 0x5ab04312, 0xc1150f7d, 0xb68bdd8d, 0x2d2e91e2, + 0x59b6786d, 0xc2133402, 0xb58de6f2, 0x2e28aa9d, 0x489503e8, + 0xd3304f87, 0xa4ae9d77, 0x3f0bd118, 0x4b933897, 0xd03674f8, + 0xa7a8a608, 0x3c0dea67, 0x4e997516, 0xd53c3979, 0xa2a2eb89, + 0x3907a7e6, 0x4d9f4e69, 0xd63a0206, 0xa1a4d0f6, 0x3a019c99, + 0x448dee14, 0xdf28a27b, 0xa8b6708b, 0x33133ce4, 0x478bd56b, + 0xdc2e9904, 0xabb04bf4, 0x3015079b, 0x428198ea, 0xd924d485, + 0xaeba0675, 0x351f4a1a, 0x4187a395, 0xda22effa, 0xadbc3d0a, + 0x36197165}, + {0x00000000, 0xc18edfc0, 0x586cb9c1, 0x99e26601, 0xb0d97382, + 0x7157ac42, 0xe8b5ca43, 0x293b1583, 0xbac3e145, 0x7b4d3e85, + 0xe2af5884, 0x23218744, 0x0a1a92c7, 0xcb944d07, 0x52762b06, + 0x93f8f4c6, 0xaef6c4cb, 0x6f781b0b, 0xf69a7d0a, 0x3714a2ca, + 0x1e2fb749, 0xdfa16889, 0x46430e88, 0x87cdd148, 0x1435258e, + 0xd5bbfa4e, 0x4c599c4f, 0x8dd7438f, 0xa4ec560c, 0x656289cc, + 0xfc80efcd, 0x3d0e300d, 0x869c8fd7, 0x47125017, 0xdef03616, + 0x1f7ee9d6, 0x3645fc55, 0xf7cb2395, 0x6e294594, 0xafa79a54, + 0x3c5f6e92, 0xfdd1b152, 0x6433d753, 0xa5bd0893, 0x8c861d10, + 0x4d08c2d0, 0xd4eaa4d1, 0x15647b11, 0x286a4b1c, 0xe9e494dc, + 0x7006f2dd, 0xb1882d1d, 0x98b3389e, 0x593de75e, 0xc0df815f, + 0x01515e9f, 0x92a9aa59, 0x53277599, 0xcac51398, 0x0b4bcc58, + 0x2270d9db, 0xe3fe061b, 0x7a1c601a, 0xbb92bfda, 0xd64819ef, + 0x17c6c62f, 0x8e24a02e, 0x4faa7fee, 0x66916a6d, 0xa71fb5ad, + 0x3efdd3ac, 0xff730c6c, 0x6c8bf8aa, 0xad05276a, 0x34e7416b, + 0xf5699eab, 0xdc528b28, 0x1ddc54e8, 0x843e32e9, 0x45b0ed29, + 0x78bedd24, 0xb93002e4, 0x20d264e5, 0xe15cbb25, 0xc867aea6, + 0x09e97166, 0x900b1767, 0x5185c8a7, 0xc27d3c61, 0x03f3e3a1, + 0x9a1185a0, 0x5b9f5a60, 0x72a44fe3, 0xb32a9023, 0x2ac8f622, + 0xeb4629e2, 0x50d49638, 0x915a49f8, 0x08b82ff9, 0xc936f039, + 0xe00de5ba, 0x21833a7a, 0xb8615c7b, 0x79ef83bb, 0xea17777d, + 0x2b99a8bd, 0xb27bcebc, 0x73f5117c, 0x5ace04ff, 0x9b40db3f, + 0x02a2bd3e, 0xc32c62fe, 0xfe2252f3, 0x3fac8d33, 0xa64eeb32, + 0x67c034f2, 0x4efb2171, 0x8f75feb1, 0x169798b0, 0xd7194770, + 0x44e1b3b6, 0x856f6c76, 0x1c8d0a77, 0xdd03d5b7, 0xf438c034, + 0x35b61ff4, 0xac5479f5, 0x6ddaa635, 0x77e1359f, 0xb66fea5f, + 0x2f8d8c5e, 0xee03539e, 0xc738461d, 0x06b699dd, 0x9f54ffdc, + 0x5eda201c, 0xcd22d4da, 0x0cac0b1a, 0x954e6d1b, 0x54c0b2db, + 0x7dfba758, 0xbc757898, 0x25971e99, 0xe419c159, 0xd917f154, + 0x18992e94, 0x817b4895, 0x40f59755, 0x69ce82d6, 0xa8405d16, + 0x31a23b17, 0xf02ce4d7, 0x63d41011, 0xa25acfd1, 0x3bb8a9d0, + 0xfa367610, 0xd30d6393, 0x1283bc53, 0x8b61da52, 0x4aef0592, + 0xf17dba48, 0x30f36588, 0xa9110389, 0x689fdc49, 0x41a4c9ca, + 0x802a160a, 0x19c8700b, 0xd846afcb, 0x4bbe5b0d, 0x8a3084cd, + 0x13d2e2cc, 0xd25c3d0c, 0xfb67288f, 0x3ae9f74f, 0xa30b914e, + 0x62854e8e, 0x5f8b7e83, 0x9e05a143, 0x07e7c742, 0xc6691882, + 0xef520d01, 0x2edcd2c1, 0xb73eb4c0, 0x76b06b00, 0xe5489fc6, + 0x24c64006, 0xbd242607, 0x7caaf9c7, 0x5591ec44, 0x941f3384, + 0x0dfd5585, 0xcc738a45, 0xa1a92c70, 0x6027f3b0, 0xf9c595b1, + 0x384b4a71, 0x11705ff2, 0xd0fe8032, 0x491ce633, 0x889239f3, + 0x1b6acd35, 0xdae412f5, 0x430674f4, 0x8288ab34, 0xabb3beb7, + 0x6a3d6177, 0xf3df0776, 0x3251d8b6, 0x0f5fe8bb, 0xced1377b, + 0x5733517a, 0x96bd8eba, 0xbf869b39, 0x7e0844f9, 0xe7ea22f8, + 0x2664fd38, 0xb59c09fe, 0x7412d63e, 0xedf0b03f, 0x2c7e6fff, + 0x05457a7c, 0xc4cba5bc, 0x5d29c3bd, 0x9ca71c7d, 0x2735a3a7, + 0xe6bb7c67, 0x7f591a66, 0xbed7c5a6, 0x97ecd025, 0x56620fe5, + 0xcf8069e4, 0x0e0eb624, 0x9df642e2, 0x5c789d22, 0xc59afb23, + 0x041424e3, 0x2d2f3160, 0xeca1eea0, 0x754388a1, 0xb4cd5761, + 0x89c3676c, 0x484db8ac, 0xd1afdead, 0x1021016d, 0x391a14ee, + 0xf894cb2e, 0x6176ad2f, 0xa0f872ef, 0x33008629, 0xf28e59e9, + 0x6b6c3fe8, 0xaae2e028, 0x83d9f5ab, 0x42572a6b, 0xdbb54c6a, + 0x1a3b93aa}, + {0x00000000, 0xefc26b3e, 0x04f5d03d, 0xeb37bb03, 0x09eba07a, + 0xe629cb44, 0x0d1e7047, 0xe2dc1b79, 0x13d740f4, 0xfc152bca, + 0x172290c9, 0xf8e0fbf7, 0x1a3ce08e, 0xf5fe8bb0, 0x1ec930b3, + 0xf10b5b8d, 0x27ae81e8, 0xc86cead6, 0x235b51d5, 0xcc993aeb, + 0x2e452192, 0xc1874aac, 0x2ab0f1af, 0xc5729a91, 0x3479c11c, + 0xdbbbaa22, 0x308c1121, 0xdf4e7a1f, 0x3d926166, 0xd2500a58, + 0x3967b15b, 0xd6a5da65, 0x4f5d03d0, 0xa09f68ee, 0x4ba8d3ed, + 0xa46ab8d3, 0x46b6a3aa, 0xa974c894, 0x42437397, 0xad8118a9, + 0x5c8a4324, 0xb348281a, 0x587f9319, 0xb7bdf827, 0x5561e35e, + 0xbaa38860, 0x51943363, 0xbe56585d, 0x68f38238, 0x8731e906, + 0x6c065205, 0x83c4393b, 0x61182242, 0x8eda497c, 0x65edf27f, + 0x8a2f9941, 0x7b24c2cc, 0x94e6a9f2, 0x7fd112f1, 0x901379cf, + 0x72cf62b6, 0x9d0d0988, 0x763ab28b, 0x99f8d9b5, 0x9eba07a0, + 0x71786c9e, 0x9a4fd79d, 0x758dbca3, 0x9751a7da, 0x7893cce4, + 0x93a477e7, 0x7c661cd9, 0x8d6d4754, 0x62af2c6a, 0x89989769, + 0x665afc57, 0x8486e72e, 0x6b448c10, 0x80733713, 0x6fb15c2d, + 0xb9148648, 0x56d6ed76, 0xbde15675, 0x52233d4b, 0xb0ff2632, + 0x5f3d4d0c, 0xb40af60f, 0x5bc89d31, 0xaac3c6bc, 0x4501ad82, + 0xae361681, 0x41f47dbf, 0xa32866c6, 0x4cea0df8, 0xa7ddb6fb, + 0x481fddc5, 0xd1e70470, 0x3e256f4e, 0xd512d44d, 0x3ad0bf73, + 0xd80ca40a, 0x37cecf34, 0xdcf97437, 0x333b1f09, 0xc2304484, + 0x2df22fba, 0xc6c594b9, 0x2907ff87, 0xcbdbe4fe, 0x24198fc0, + 0xcf2e34c3, 0x20ec5ffd, 0xf6498598, 0x198beea6, 0xf2bc55a5, + 0x1d7e3e9b, 0xffa225e2, 0x10604edc, 0xfb57f5df, 0x14959ee1, + 0xe59ec56c, 0x0a5cae52, 0xe16b1551, 0x0ea97e6f, 0xec756516, + 0x03b70e28, 0xe880b52b, 0x0742de15, 0xe6050901, 0x09c7623f, + 0xe2f0d93c, 0x0d32b202, 0xefeea97b, 0x002cc245, 0xeb1b7946, + 0x04d91278, 0xf5d249f5, 0x1a1022cb, 0xf12799c8, 0x1ee5f2f6, + 0xfc39e98f, 0x13fb82b1, 0xf8cc39b2, 0x170e528c, 0xc1ab88e9, + 0x2e69e3d7, 0xc55e58d4, 0x2a9c33ea, 0xc8402893, 0x278243ad, + 0xccb5f8ae, 0x23779390, 0xd27cc81d, 0x3dbea323, 0xd6891820, + 0x394b731e, 0xdb976867, 0x34550359, 0xdf62b85a, 0x30a0d364, + 0xa9580ad1, 0x469a61ef, 0xadaddaec, 0x426fb1d2, 0xa0b3aaab, + 0x4f71c195, 0xa4467a96, 0x4b8411a8, 0xba8f4a25, 0x554d211b, + 0xbe7a9a18, 0x51b8f126, 0xb364ea5f, 0x5ca68161, 0xb7913a62, + 0x5853515c, 0x8ef68b39, 0x6134e007, 0x8a035b04, 0x65c1303a, + 0x871d2b43, 0x68df407d, 0x83e8fb7e, 0x6c2a9040, 0x9d21cbcd, + 0x72e3a0f3, 0x99d41bf0, 0x761670ce, 0x94ca6bb7, 0x7b080089, + 0x903fbb8a, 0x7ffdd0b4, 0x78bf0ea1, 0x977d659f, 0x7c4ade9c, + 0x9388b5a2, 0x7154aedb, 0x9e96c5e5, 0x75a17ee6, 0x9a6315d8, + 0x6b684e55, 0x84aa256b, 0x6f9d9e68, 0x805ff556, 0x6283ee2f, + 0x8d418511, 0x66763e12, 0x89b4552c, 0x5f118f49, 0xb0d3e477, + 0x5be45f74, 0xb426344a, 0x56fa2f33, 0xb938440d, 0x520fff0e, + 0xbdcd9430, 0x4cc6cfbd, 0xa304a483, 0x48331f80, 0xa7f174be, + 0x452d6fc7, 0xaaef04f9, 0x41d8bffa, 0xae1ad4c4, 0x37e20d71, + 0xd820664f, 0x3317dd4c, 0xdcd5b672, 0x3e09ad0b, 0xd1cbc635, + 0x3afc7d36, 0xd53e1608, 0x24354d85, 0xcbf726bb, 0x20c09db8, + 0xcf02f686, 0x2ddeedff, 0xc21c86c1, 0x292b3dc2, 0xc6e956fc, + 0x104c8c99, 0xff8ee7a7, 0x14b95ca4, 0xfb7b379a, 0x19a72ce3, + 0xf66547dd, 0x1d52fcde, 0xf29097e0, 0x039bcc6d, 0xec59a753, + 0x076e1c50, 0xe8ac776e, 0x0a706c17, 0xe5b20729, 0x0e85bc2a, + 0xe147d714}, + {0x00000000, 0x177b1443, 0x2ef62886, 0x398d3cc5, 0x5dec510c, + 0x4a97454f, 0x731a798a, 0x64616dc9, 0xbbd8a218, 0xaca3b65b, + 0x952e8a9e, 0x82559edd, 0xe634f314, 0xf14fe757, 0xc8c2db92, + 0xdfb9cfd1, 0xacc04271, 0xbbbb5632, 0x82366af7, 0x954d7eb4, + 0xf12c137d, 0xe657073e, 0xdfda3bfb, 0xc8a12fb8, 0x1718e069, + 0x0063f42a, 0x39eec8ef, 0x2e95dcac, 0x4af4b165, 0x5d8fa526, + 0x640299e3, 0x73798da0, 0x82f182a3, 0x958a96e0, 0xac07aa25, + 0xbb7cbe66, 0xdf1dd3af, 0xc866c7ec, 0xf1ebfb29, 0xe690ef6a, + 0x392920bb, 0x2e5234f8, 0x17df083d, 0x00a41c7e, 0x64c571b7, + 0x73be65f4, 0x4a335931, 0x5d484d72, 0x2e31c0d2, 0x394ad491, + 0x00c7e854, 0x17bcfc17, 0x73dd91de, 0x64a6859d, 0x5d2bb958, + 0x4a50ad1b, 0x95e962ca, 0x82927689, 0xbb1f4a4c, 0xac645e0f, + 0xc80533c6, 0xdf7e2785, 0xe6f31b40, 0xf1880f03, 0xde920307, + 0xc9e91744, 0xf0642b81, 0xe71f3fc2, 0x837e520b, 0x94054648, + 0xad887a8d, 0xbaf36ece, 0x654aa11f, 0x7231b55c, 0x4bbc8999, + 0x5cc79dda, 0x38a6f013, 0x2fdde450, 0x1650d895, 0x012bccd6, + 0x72524176, 0x65295535, 0x5ca469f0, 0x4bdf7db3, 0x2fbe107a, + 0x38c50439, 0x014838fc, 0x16332cbf, 0xc98ae36e, 0xdef1f72d, + 0xe77ccbe8, 0xf007dfab, 0x9466b262, 0x831da621, 0xba909ae4, + 0xadeb8ea7, 0x5c6381a4, 0x4b1895e7, 0x7295a922, 0x65eebd61, + 0x018fd0a8, 0x16f4c4eb, 0x2f79f82e, 0x3802ec6d, 0xe7bb23bc, + 0xf0c037ff, 0xc94d0b3a, 0xde361f79, 0xba5772b0, 0xad2c66f3, + 0x94a15a36, 0x83da4e75, 0xf0a3c3d5, 0xe7d8d796, 0xde55eb53, + 0xc92eff10, 0xad4f92d9, 0xba34869a, 0x83b9ba5f, 0x94c2ae1c, + 0x4b7b61cd, 0x5c00758e, 0x658d494b, 0x72f65d08, 0x169730c1, + 0x01ec2482, 0x38611847, 0x2f1a0c04, 0x6655004f, 0x712e140c, + 0x48a328c9, 0x5fd83c8a, 0x3bb95143, 0x2cc24500, 0x154f79c5, + 0x02346d86, 0xdd8da257, 0xcaf6b614, 0xf37b8ad1, 0xe4009e92, + 0x8061f35b, 0x971ae718, 0xae97dbdd, 0xb9eccf9e, 0xca95423e, + 0xddee567d, 0xe4636ab8, 0xf3187efb, 0x97791332, 0x80020771, + 0xb98f3bb4, 0xaef42ff7, 0x714de026, 0x6636f465, 0x5fbbc8a0, + 0x48c0dce3, 0x2ca1b12a, 0x3bdaa569, 0x025799ac, 0x152c8def, + 0xe4a482ec, 0xf3df96af, 0xca52aa6a, 0xdd29be29, 0xb948d3e0, + 0xae33c7a3, 0x97befb66, 0x80c5ef25, 0x5f7c20f4, 0x480734b7, + 0x718a0872, 0x66f11c31, 0x029071f8, 0x15eb65bb, 0x2c66597e, + 0x3b1d4d3d, 0x4864c09d, 0x5f1fd4de, 0x6692e81b, 0x71e9fc58, + 0x15889191, 0x02f385d2, 0x3b7eb917, 0x2c05ad54, 0xf3bc6285, + 0xe4c776c6, 0xdd4a4a03, 0xca315e40, 0xae503389, 0xb92b27ca, + 0x80a61b0f, 0x97dd0f4c, 0xb8c70348, 0xafbc170b, 0x96312bce, + 0x814a3f8d, 0xe52b5244, 0xf2504607, 0xcbdd7ac2, 0xdca66e81, + 0x031fa150, 0x1464b513, 0x2de989d6, 0x3a929d95, 0x5ef3f05c, + 0x4988e41f, 0x7005d8da, 0x677ecc99, 0x14074139, 0x037c557a, + 0x3af169bf, 0x2d8a7dfc, 0x49eb1035, 0x5e900476, 0x671d38b3, + 0x70662cf0, 0xafdfe321, 0xb8a4f762, 0x8129cba7, 0x9652dfe4, + 0xf233b22d, 0xe548a66e, 0xdcc59aab, 0xcbbe8ee8, 0x3a3681eb, + 0x2d4d95a8, 0x14c0a96d, 0x03bbbd2e, 0x67dad0e7, 0x70a1c4a4, + 0x492cf861, 0x5e57ec22, 0x81ee23f3, 0x969537b0, 0xaf180b75, + 0xb8631f36, 0xdc0272ff, 0xcb7966bc, 0xf2f45a79, 0xe58f4e3a, + 0x96f6c39a, 0x818dd7d9, 0xb800eb1c, 0xaf7bff5f, 0xcb1a9296, + 0xdc6186d5, 0xe5ecba10, 0xf297ae53, 0x2d2e6182, 0x3a5575c1, + 0x03d84904, 0x14a35d47, 0x70c2308e, 0x67b924cd, 0x5e341808, + 0x494f0c4b}}; + +local const z_word_t FAR crc_braid_big_table[][256] = { + {0x0000000000000000, 0x43147b1700000000, 0x8628f62e00000000, + 0xc53c8d3900000000, 0x0c51ec5d00000000, 0x4f45974a00000000, + 0x8a791a7300000000, 0xc96d616400000000, 0x18a2d8bb00000000, + 0x5bb6a3ac00000000, 0x9e8a2e9500000000, 0xdd9e558200000000, + 0x14f334e600000000, 0x57e74ff100000000, 0x92dbc2c800000000, + 0xd1cfb9df00000000, 0x7142c0ac00000000, 0x3256bbbb00000000, + 0xf76a368200000000, 0xb47e4d9500000000, 0x7d132cf100000000, + 0x3e0757e600000000, 0xfb3bdadf00000000, 0xb82fa1c800000000, + 0x69e0181700000000, 0x2af4630000000000, 0xefc8ee3900000000, + 0xacdc952e00000000, 0x65b1f44a00000000, 0x26a58f5d00000000, + 0xe399026400000000, 0xa08d797300000000, 0xa382f18200000000, + 0xe0968a9500000000, 0x25aa07ac00000000, 0x66be7cbb00000000, + 0xafd31ddf00000000, 0xecc766c800000000, 0x29fbebf100000000, + 0x6aef90e600000000, 0xbb20293900000000, 0xf834522e00000000, + 0x3d08df1700000000, 0x7e1ca40000000000, 0xb771c56400000000, + 0xf465be7300000000, 0x3159334a00000000, 0x724d485d00000000, + 0xd2c0312e00000000, 0x91d44a3900000000, 0x54e8c70000000000, + 0x17fcbc1700000000, 0xde91dd7300000000, 0x9d85a66400000000, + 0x58b92b5d00000000, 0x1bad504a00000000, 0xca62e99500000000, + 0x8976928200000000, 0x4c4a1fbb00000000, 0x0f5e64ac00000000, + 0xc63305c800000000, 0x85277edf00000000, 0x401bf3e600000000, + 0x030f88f100000000, 0x070392de00000000, 0x4417e9c900000000, + 0x812b64f000000000, 0xc23f1fe700000000, 0x0b527e8300000000, + 0x4846059400000000, 0x8d7a88ad00000000, 0xce6ef3ba00000000, + 0x1fa14a6500000000, 0x5cb5317200000000, 0x9989bc4b00000000, + 0xda9dc75c00000000, 0x13f0a63800000000, 0x50e4dd2f00000000, + 0x95d8501600000000, 0xd6cc2b0100000000, 0x7641527200000000, + 0x3555296500000000, 0xf069a45c00000000, 0xb37ddf4b00000000, + 0x7a10be2f00000000, 0x3904c53800000000, 0xfc38480100000000, + 0xbf2c331600000000, 0x6ee38ac900000000, 0x2df7f1de00000000, + 0xe8cb7ce700000000, 0xabdf07f000000000, 0x62b2669400000000, + 0x21a61d8300000000, 0xe49a90ba00000000, 0xa78eebad00000000, + 0xa481635c00000000, 0xe795184b00000000, 0x22a9957200000000, + 0x61bdee6500000000, 0xa8d08f0100000000, 0xebc4f41600000000, + 0x2ef8792f00000000, 0x6dec023800000000, 0xbc23bbe700000000, + 0xff37c0f000000000, 0x3a0b4dc900000000, 0x791f36de00000000, + 0xb07257ba00000000, 0xf3662cad00000000, 0x365aa19400000000, + 0x754eda8300000000, 0xd5c3a3f000000000, 0x96d7d8e700000000, + 0x53eb55de00000000, 0x10ff2ec900000000, 0xd9924fad00000000, + 0x9a8634ba00000000, 0x5fbab98300000000, 0x1caec29400000000, + 0xcd617b4b00000000, 0x8e75005c00000000, 0x4b498d6500000000, + 0x085df67200000000, 0xc130971600000000, 0x8224ec0100000000, + 0x4718613800000000, 0x040c1a2f00000000, 0x4f00556600000000, + 0x0c142e7100000000, 0xc928a34800000000, 0x8a3cd85f00000000, + 0x4351b93b00000000, 0x0045c22c00000000, 0xc5794f1500000000, + 0x866d340200000000, 0x57a28ddd00000000, 0x14b6f6ca00000000, + 0xd18a7bf300000000, 0x929e00e400000000, 0x5bf3618000000000, + 0x18e71a9700000000, 0xdddb97ae00000000, 0x9ecfecb900000000, + 0x3e4295ca00000000, 0x7d56eedd00000000, 0xb86a63e400000000, + 0xfb7e18f300000000, 0x3213799700000000, 0x7107028000000000, + 0xb43b8fb900000000, 0xf72ff4ae00000000, 0x26e04d7100000000, + 0x65f4366600000000, 0xa0c8bb5f00000000, 0xe3dcc04800000000, + 0x2ab1a12c00000000, 0x69a5da3b00000000, 0xac99570200000000, + 0xef8d2c1500000000, 0xec82a4e400000000, 0xaf96dff300000000, + 0x6aaa52ca00000000, 0x29be29dd00000000, 0xe0d348b900000000, + 0xa3c733ae00000000, 0x66fbbe9700000000, 0x25efc58000000000, + 0xf4207c5f00000000, 0xb734074800000000, 0x72088a7100000000, + 0x311cf16600000000, 0xf871900200000000, 0xbb65eb1500000000, + 0x7e59662c00000000, 0x3d4d1d3b00000000, 0x9dc0644800000000, + 0xded41f5f00000000, 0x1be8926600000000, 0x58fce97100000000, + 0x9191881500000000, 0xd285f30200000000, 0x17b97e3b00000000, + 0x54ad052c00000000, 0x8562bcf300000000, 0xc676c7e400000000, + 0x034a4add00000000, 0x405e31ca00000000, 0x893350ae00000000, + 0xca272bb900000000, 0x0f1ba68000000000, 0x4c0fdd9700000000, + 0x4803c7b800000000, 0x0b17bcaf00000000, 0xce2b319600000000, + 0x8d3f4a8100000000, 0x44522be500000000, 0x074650f200000000, + 0xc27addcb00000000, 0x816ea6dc00000000, 0x50a11f0300000000, + 0x13b5641400000000, 0xd689e92d00000000, 0x959d923a00000000, + 0x5cf0f35e00000000, 0x1fe4884900000000, 0xdad8057000000000, + 0x99cc7e6700000000, 0x3941071400000000, 0x7a557c0300000000, + 0xbf69f13a00000000, 0xfc7d8a2d00000000, 0x3510eb4900000000, + 0x7604905e00000000, 0xb3381d6700000000, 0xf02c667000000000, + 0x21e3dfaf00000000, 0x62f7a4b800000000, 0xa7cb298100000000, + 0xe4df529600000000, 0x2db233f200000000, 0x6ea648e500000000, + 0xab9ac5dc00000000, 0xe88ebecb00000000, 0xeb81363a00000000, + 0xa8954d2d00000000, 0x6da9c01400000000, 0x2ebdbb0300000000, + 0xe7d0da6700000000, 0xa4c4a17000000000, 0x61f82c4900000000, + 0x22ec575e00000000, 0xf323ee8100000000, 0xb037959600000000, + 0x750b18af00000000, 0x361f63b800000000, 0xff7202dc00000000, + 0xbc6679cb00000000, 0x795af4f200000000, 0x3a4e8fe500000000, + 0x9ac3f69600000000, 0xd9d78d8100000000, 0x1ceb00b800000000, + 0x5fff7baf00000000, 0x96921acb00000000, 0xd58661dc00000000, + 0x10baece500000000, 0x53ae97f200000000, 0x82612e2d00000000, + 0xc175553a00000000, 0x0449d80300000000, 0x475da31400000000, + 0x8e30c27000000000, 0xcd24b96700000000, 0x0818345e00000000, + 0x4b0c4f4900000000}, + {0x0000000000000000, 0x3e6bc2ef00000000, 0x3dd0f50400000000, + 0x03bb37eb00000000, 0x7aa0eb0900000000, 0x44cb29e600000000, + 0x47701e0d00000000, 0x791bdce200000000, 0xf440d71300000000, + 0xca2b15fc00000000, 0xc990221700000000, 0xf7fbe0f800000000, + 0x8ee03c1a00000000, 0xb08bfef500000000, 0xb330c91e00000000, + 0x8d5b0bf100000000, 0xe881ae2700000000, 0xd6ea6cc800000000, + 0xd5515b2300000000, 0xeb3a99cc00000000, 0x9221452e00000000, + 0xac4a87c100000000, 0xaff1b02a00000000, 0x919a72c500000000, + 0x1cc1793400000000, 0x22aabbdb00000000, 0x21118c3000000000, + 0x1f7a4edf00000000, 0x6661923d00000000, 0x580a50d200000000, + 0x5bb1673900000000, 0x65daa5d600000000, 0xd0035d4f00000000, + 0xee689fa000000000, 0xedd3a84b00000000, 0xd3b86aa400000000, + 0xaaa3b64600000000, 0x94c874a900000000, 0x9773434200000000, + 0xa91881ad00000000, 0x24438a5c00000000, 0x1a2848b300000000, + 0x19937f5800000000, 0x27f8bdb700000000, 0x5ee3615500000000, + 0x6088a3ba00000000, 0x6333945100000000, 0x5d5856be00000000, + 0x3882f36800000000, 0x06e9318700000000, 0x0552066c00000000, + 0x3b39c48300000000, 0x4222186100000000, 0x7c49da8e00000000, + 0x7ff2ed6500000000, 0x41992f8a00000000, 0xccc2247b00000000, + 0xf2a9e69400000000, 0xf112d17f00000000, 0xcf79139000000000, + 0xb662cf7200000000, 0x88090d9d00000000, 0x8bb23a7600000000, + 0xb5d9f89900000000, 0xa007ba9e00000000, 0x9e6c787100000000, + 0x9dd74f9a00000000, 0xa3bc8d7500000000, 0xdaa7519700000000, + 0xe4cc937800000000, 0xe777a49300000000, 0xd91c667c00000000, + 0x54476d8d00000000, 0x6a2caf6200000000, 0x6997988900000000, + 0x57fc5a6600000000, 0x2ee7868400000000, 0x108c446b00000000, + 0x1337738000000000, 0x2d5cb16f00000000, 0x488614b900000000, + 0x76edd65600000000, 0x7556e1bd00000000, 0x4b3d235200000000, + 0x3226ffb000000000, 0x0c4d3d5f00000000, 0x0ff60ab400000000, + 0x319dc85b00000000, 0xbcc6c3aa00000000, 0x82ad014500000000, + 0x811636ae00000000, 0xbf7df44100000000, 0xc66628a300000000, + 0xf80dea4c00000000, 0xfbb6dda700000000, 0xc5dd1f4800000000, + 0x7004e7d100000000, 0x4e6f253e00000000, 0x4dd412d500000000, + 0x73bfd03a00000000, 0x0aa40cd800000000, 0x34cfce3700000000, + 0x3774f9dc00000000, 0x091f3b3300000000, 0x844430c200000000, + 0xba2ff22d00000000, 0xb994c5c600000000, 0x87ff072900000000, + 0xfee4dbcb00000000, 0xc08f192400000000, 0xc3342ecf00000000, + 0xfd5fec2000000000, 0x988549f600000000, 0xa6ee8b1900000000, + 0xa555bcf200000000, 0x9b3e7e1d00000000, 0xe225a2ff00000000, + 0xdc4e601000000000, 0xdff557fb00000000, 0xe19e951400000000, + 0x6cc59ee500000000, 0x52ae5c0a00000000, 0x51156be100000000, + 0x6f7ea90e00000000, 0x166575ec00000000, 0x280eb70300000000, + 0x2bb580e800000000, 0x15de420700000000, 0x010905e600000000, + 0x3f62c70900000000, 0x3cd9f0e200000000, 0x02b2320d00000000, + 0x7ba9eeef00000000, 0x45c22c0000000000, 0x46791beb00000000, + 0x7812d90400000000, 0xf549d2f500000000, 0xcb22101a00000000, + 0xc89927f100000000, 0xf6f2e51e00000000, 0x8fe939fc00000000, + 0xb182fb1300000000, 0xb239ccf800000000, 0x8c520e1700000000, + 0xe988abc100000000, 0xd7e3692e00000000, 0xd4585ec500000000, + 0xea339c2a00000000, 0x932840c800000000, 0xad43822700000000, + 0xaef8b5cc00000000, 0x9093772300000000, 0x1dc87cd200000000, + 0x23a3be3d00000000, 0x201889d600000000, 0x1e734b3900000000, + 0x676897db00000000, 0x5903553400000000, 0x5ab862df00000000, + 0x64d3a03000000000, 0xd10a58a900000000, 0xef619a4600000000, + 0xecdaadad00000000, 0xd2b16f4200000000, 0xabaab3a000000000, + 0x95c1714f00000000, 0x967a46a400000000, 0xa811844b00000000, + 0x254a8fba00000000, 0x1b214d5500000000, 0x189a7abe00000000, + 0x26f1b85100000000, 0x5fea64b300000000, 0x6181a65c00000000, + 0x623a91b700000000, 0x5c51535800000000, 0x398bf68e00000000, + 0x07e0346100000000, 0x045b038a00000000, 0x3a30c16500000000, + 0x432b1d8700000000, 0x7d40df6800000000, 0x7efbe88300000000, + 0x40902a6c00000000, 0xcdcb219d00000000, 0xf3a0e37200000000, + 0xf01bd49900000000, 0xce70167600000000, 0xb76bca9400000000, + 0x8900087b00000000, 0x8abb3f9000000000, 0xb4d0fd7f00000000, + 0xa10ebf7800000000, 0x9f657d9700000000, 0x9cde4a7c00000000, + 0xa2b5889300000000, 0xdbae547100000000, 0xe5c5969e00000000, + 0xe67ea17500000000, 0xd815639a00000000, 0x554e686b00000000, + 0x6b25aa8400000000, 0x689e9d6f00000000, 0x56f55f8000000000, + 0x2fee836200000000, 0x1185418d00000000, 0x123e766600000000, + 0x2c55b48900000000, 0x498f115f00000000, 0x77e4d3b000000000, + 0x745fe45b00000000, 0x4a3426b400000000, 0x332ffa5600000000, + 0x0d4438b900000000, 0x0eff0f5200000000, 0x3094cdbd00000000, + 0xbdcfc64c00000000, 0x83a404a300000000, 0x801f334800000000, + 0xbe74f1a700000000, 0xc76f2d4500000000, 0xf904efaa00000000, + 0xfabfd84100000000, 0xc4d41aae00000000, 0x710de23700000000, + 0x4f6620d800000000, 0x4cdd173300000000, 0x72b6d5dc00000000, + 0x0bad093e00000000, 0x35c6cbd100000000, 0x367dfc3a00000000, + 0x08163ed500000000, 0x854d352400000000, 0xbb26f7cb00000000, + 0xb89dc02000000000, 0x86f602cf00000000, 0xffedde2d00000000, + 0xc1861cc200000000, 0xc23d2b2900000000, 0xfc56e9c600000000, + 0x998c4c1000000000, 0xa7e78eff00000000, 0xa45cb91400000000, + 0x9a377bfb00000000, 0xe32ca71900000000, 0xdd4765f600000000, + 0xdefc521d00000000, 0xe09790f200000000, 0x6dcc9b0300000000, + 0x53a759ec00000000, 0x501c6e0700000000, 0x6e77ace800000000, + 0x176c700a00000000, 0x2907b2e500000000, 0x2abc850e00000000, + 0x14d747e100000000}, + {0x0000000000000000, 0xc0df8ec100000000, 0xc1b96c5800000000, + 0x0166e29900000000, 0x8273d9b000000000, 0x42ac577100000000, + 0x43cab5e800000000, 0x83153b2900000000, 0x45e1c3ba00000000, + 0x853e4d7b00000000, 0x8458afe200000000, 0x4487212300000000, + 0xc7921a0a00000000, 0x074d94cb00000000, 0x062b765200000000, + 0xc6f4f89300000000, 0xcbc4f6ae00000000, 0x0b1b786f00000000, + 0x0a7d9af600000000, 0xcaa2143700000000, 0x49b72f1e00000000, + 0x8968a1df00000000, 0x880e434600000000, 0x48d1cd8700000000, + 0x8e25351400000000, 0x4efabbd500000000, 0x4f9c594c00000000, + 0x8f43d78d00000000, 0x0c56eca400000000, 0xcc89626500000000, + 0xcdef80fc00000000, 0x0d300e3d00000000, 0xd78f9c8600000000, + 0x1750124700000000, 0x1636f0de00000000, 0xd6e97e1f00000000, + 0x55fc453600000000, 0x9523cbf700000000, 0x9445296e00000000, + 0x549aa7af00000000, 0x926e5f3c00000000, 0x52b1d1fd00000000, + 0x53d7336400000000, 0x9308bda500000000, 0x101d868c00000000, + 0xd0c2084d00000000, 0xd1a4ead400000000, 0x117b641500000000, + 0x1c4b6a2800000000, 0xdc94e4e900000000, 0xddf2067000000000, + 0x1d2d88b100000000, 0x9e38b39800000000, 0x5ee73d5900000000, + 0x5f81dfc000000000, 0x9f5e510100000000, 0x59aaa99200000000, + 0x9975275300000000, 0x9813c5ca00000000, 0x58cc4b0b00000000, + 0xdbd9702200000000, 0x1b06fee300000000, 0x1a601c7a00000000, + 0xdabf92bb00000000, 0xef1948d600000000, 0x2fc6c61700000000, + 0x2ea0248e00000000, 0xee7faa4f00000000, 0x6d6a916600000000, + 0xadb51fa700000000, 0xacd3fd3e00000000, 0x6c0c73ff00000000, + 0xaaf88b6c00000000, 0x6a2705ad00000000, 0x6b41e73400000000, + 0xab9e69f500000000, 0x288b52dc00000000, 0xe854dc1d00000000, + 0xe9323e8400000000, 0x29edb04500000000, 0x24ddbe7800000000, + 0xe40230b900000000, 0xe564d22000000000, 0x25bb5ce100000000, + 0xa6ae67c800000000, 0x6671e90900000000, 0x67170b9000000000, + 0xa7c8855100000000, 0x613c7dc200000000, 0xa1e3f30300000000, + 0xa085119a00000000, 0x605a9f5b00000000, 0xe34fa47200000000, + 0x23902ab300000000, 0x22f6c82a00000000, 0xe22946eb00000000, + 0x3896d45000000000, 0xf8495a9100000000, 0xf92fb80800000000, + 0x39f036c900000000, 0xbae50de000000000, 0x7a3a832100000000, + 0x7b5c61b800000000, 0xbb83ef7900000000, 0x7d7717ea00000000, + 0xbda8992b00000000, 0xbcce7bb200000000, 0x7c11f57300000000, + 0xff04ce5a00000000, 0x3fdb409b00000000, 0x3ebda20200000000, + 0xfe622cc300000000, 0xf35222fe00000000, 0x338dac3f00000000, + 0x32eb4ea600000000, 0xf234c06700000000, 0x7121fb4e00000000, + 0xb1fe758f00000000, 0xb098971600000000, 0x704719d700000000, + 0xb6b3e14400000000, 0x766c6f8500000000, 0x770a8d1c00000000, + 0xb7d503dd00000000, 0x34c038f400000000, 0xf41fb63500000000, + 0xf57954ac00000000, 0x35a6da6d00000000, 0x9f35e17700000000, + 0x5fea6fb600000000, 0x5e8c8d2f00000000, 0x9e5303ee00000000, + 0x1d4638c700000000, 0xdd99b60600000000, 0xdcff549f00000000, + 0x1c20da5e00000000, 0xdad422cd00000000, 0x1a0bac0c00000000, + 0x1b6d4e9500000000, 0xdbb2c05400000000, 0x58a7fb7d00000000, + 0x987875bc00000000, 0x991e972500000000, 0x59c119e400000000, + 0x54f117d900000000, 0x942e991800000000, 0x95487b8100000000, + 0x5597f54000000000, 0xd682ce6900000000, 0x165d40a800000000, + 0x173ba23100000000, 0xd7e42cf000000000, 0x1110d46300000000, + 0xd1cf5aa200000000, 0xd0a9b83b00000000, 0x107636fa00000000, + 0x93630dd300000000, 0x53bc831200000000, 0x52da618b00000000, + 0x9205ef4a00000000, 0x48ba7df100000000, 0x8865f33000000000, + 0x890311a900000000, 0x49dc9f6800000000, 0xcac9a44100000000, + 0x0a162a8000000000, 0x0b70c81900000000, 0xcbaf46d800000000, + 0x0d5bbe4b00000000, 0xcd84308a00000000, 0xcce2d21300000000, + 0x0c3d5cd200000000, 0x8f2867fb00000000, 0x4ff7e93a00000000, + 0x4e910ba300000000, 0x8e4e856200000000, 0x837e8b5f00000000, + 0x43a1059e00000000, 0x42c7e70700000000, 0x821869c600000000, + 0x010d52ef00000000, 0xc1d2dc2e00000000, 0xc0b43eb700000000, + 0x006bb07600000000, 0xc69f48e500000000, 0x0640c62400000000, + 0x072624bd00000000, 0xc7f9aa7c00000000, 0x44ec915500000000, + 0x84331f9400000000, 0x8555fd0d00000000, 0x458a73cc00000000, + 0x702ca9a100000000, 0xb0f3276000000000, 0xb195c5f900000000, + 0x714a4b3800000000, 0xf25f701100000000, 0x3280fed000000000, + 0x33e61c4900000000, 0xf339928800000000, 0x35cd6a1b00000000, + 0xf512e4da00000000, 0xf474064300000000, 0x34ab888200000000, + 0xb7beb3ab00000000, 0x77613d6a00000000, 0x7607dff300000000, + 0xb6d8513200000000, 0xbbe85f0f00000000, 0x7b37d1ce00000000, + 0x7a51335700000000, 0xba8ebd9600000000, 0x399b86bf00000000, + 0xf944087e00000000, 0xf822eae700000000, 0x38fd642600000000, + 0xfe099cb500000000, 0x3ed6127400000000, 0x3fb0f0ed00000000, + 0xff6f7e2c00000000, 0x7c7a450500000000, 0xbca5cbc400000000, + 0xbdc3295d00000000, 0x7d1ca79c00000000, 0xa7a3352700000000, + 0x677cbbe600000000, 0x661a597f00000000, 0xa6c5d7be00000000, + 0x25d0ec9700000000, 0xe50f625600000000, 0xe46980cf00000000, + 0x24b60e0e00000000, 0xe242f69d00000000, 0x229d785c00000000, + 0x23fb9ac500000000, 0xe324140400000000, 0x60312f2d00000000, + 0xa0eea1ec00000000, 0xa188437500000000, 0x6157cdb400000000, + 0x6c67c38900000000, 0xacb84d4800000000, 0xaddeafd100000000, + 0x6d01211000000000, 0xee141a3900000000, 0x2ecb94f800000000, + 0x2fad766100000000, 0xef72f8a000000000, 0x2986003300000000, + 0xe9598ef200000000, 0xe83f6c6b00000000, 0x28e0e2aa00000000, + 0xabf5d98300000000, 0x6b2a574200000000, 0x6a4cb5db00000000, + 0xaa933b1a00000000}, + {0x0000000000000000, 0x6f4ca59b00000000, 0x9f9e3bec00000000, + 0xf0d29e7700000000, 0x7f3b060300000000, 0x1077a39800000000, + 0xe0a53def00000000, 0x8fe9987400000000, 0xfe760c0600000000, + 0x913aa99d00000000, 0x61e837ea00000000, 0x0ea4927100000000, + 0x814d0a0500000000, 0xee01af9e00000000, 0x1ed331e900000000, + 0x719f947200000000, 0xfced180c00000000, 0x93a1bd9700000000, + 0x637323e000000000, 0x0c3f867b00000000, 0x83d61e0f00000000, + 0xec9abb9400000000, 0x1c4825e300000000, 0x7304807800000000, + 0x029b140a00000000, 0x6dd7b19100000000, 0x9d052fe600000000, + 0xf2498a7d00000000, 0x7da0120900000000, 0x12ecb79200000000, + 0xe23e29e500000000, 0x8d728c7e00000000, 0xf8db311800000000, + 0x9797948300000000, 0x67450af400000000, 0x0809af6f00000000, + 0x87e0371b00000000, 0xe8ac928000000000, 0x187e0cf700000000, + 0x7732a96c00000000, 0x06ad3d1e00000000, 0x69e1988500000000, + 0x993306f200000000, 0xf67fa36900000000, 0x79963b1d00000000, + 0x16da9e8600000000, 0xe60800f100000000, 0x8944a56a00000000, + 0x0436291400000000, 0x6b7a8c8f00000000, 0x9ba812f800000000, + 0xf4e4b76300000000, 0x7b0d2f1700000000, 0x14418a8c00000000, + 0xe49314fb00000000, 0x8bdfb16000000000, 0xfa40251200000000, + 0x950c808900000000, 0x65de1efe00000000, 0x0a92bb6500000000, + 0x857b231100000000, 0xea37868a00000000, 0x1ae518fd00000000, + 0x75a9bd6600000000, 0xf0b7633000000000, 0x9ffbc6ab00000000, + 0x6f2958dc00000000, 0x0065fd4700000000, 0x8f8c653300000000, + 0xe0c0c0a800000000, 0x10125edf00000000, 0x7f5efb4400000000, + 0x0ec16f3600000000, 0x618dcaad00000000, 0x915f54da00000000, + 0xfe13f14100000000, 0x71fa693500000000, 0x1eb6ccae00000000, + 0xee6452d900000000, 0x8128f74200000000, 0x0c5a7b3c00000000, + 0x6316dea700000000, 0x93c440d000000000, 0xfc88e54b00000000, + 0x73617d3f00000000, 0x1c2dd8a400000000, 0xecff46d300000000, + 0x83b3e34800000000, 0xf22c773a00000000, 0x9d60d2a100000000, + 0x6db24cd600000000, 0x02fee94d00000000, 0x8d17713900000000, + 0xe25bd4a200000000, 0x12894ad500000000, 0x7dc5ef4e00000000, + 0x086c522800000000, 0x6720f7b300000000, 0x97f269c400000000, + 0xf8becc5f00000000, 0x7757542b00000000, 0x181bf1b000000000, + 0xe8c96fc700000000, 0x8785ca5c00000000, 0xf61a5e2e00000000, + 0x9956fbb500000000, 0x698465c200000000, 0x06c8c05900000000, + 0x8921582d00000000, 0xe66dfdb600000000, 0x16bf63c100000000, + 0x79f3c65a00000000, 0xf4814a2400000000, 0x9bcdefbf00000000, + 0x6b1f71c800000000, 0x0453d45300000000, 0x8bba4c2700000000, + 0xe4f6e9bc00000000, 0x142477cb00000000, 0x7b68d25000000000, + 0x0af7462200000000, 0x65bbe3b900000000, 0x95697dce00000000, + 0xfa25d85500000000, 0x75cc402100000000, 0x1a80e5ba00000000, + 0xea527bcd00000000, 0x851ede5600000000, 0xe06fc76000000000, + 0x8f2362fb00000000, 0x7ff1fc8c00000000, 0x10bd591700000000, + 0x9f54c16300000000, 0xf01864f800000000, 0x00cafa8f00000000, + 0x6f865f1400000000, 0x1e19cb6600000000, 0x71556efd00000000, + 0x8187f08a00000000, 0xeecb551100000000, 0x6122cd6500000000, + 0x0e6e68fe00000000, 0xfebcf68900000000, 0x91f0531200000000, + 0x1c82df6c00000000, 0x73ce7af700000000, 0x831ce48000000000, + 0xec50411b00000000, 0x63b9d96f00000000, 0x0cf57cf400000000, + 0xfc27e28300000000, 0x936b471800000000, 0xe2f4d36a00000000, + 0x8db876f100000000, 0x7d6ae88600000000, 0x12264d1d00000000, + 0x9dcfd56900000000, 0xf28370f200000000, 0x0251ee8500000000, + 0x6d1d4b1e00000000, 0x18b4f67800000000, 0x77f853e300000000, + 0x872acd9400000000, 0xe866680f00000000, 0x678ff07b00000000, + 0x08c355e000000000, 0xf811cb9700000000, 0x975d6e0c00000000, + 0xe6c2fa7e00000000, 0x898e5fe500000000, 0x795cc19200000000, + 0x1610640900000000, 0x99f9fc7d00000000, 0xf6b559e600000000, + 0x0667c79100000000, 0x692b620a00000000, 0xe459ee7400000000, + 0x8b154bef00000000, 0x7bc7d59800000000, 0x148b700300000000, + 0x9b62e87700000000, 0xf42e4dec00000000, 0x04fcd39b00000000, + 0x6bb0760000000000, 0x1a2fe27200000000, 0x756347e900000000, + 0x85b1d99e00000000, 0xeafd7c0500000000, 0x6514e47100000000, + 0x0a5841ea00000000, 0xfa8adf9d00000000, 0x95c67a0600000000, + 0x10d8a45000000000, 0x7f9401cb00000000, 0x8f469fbc00000000, + 0xe00a3a2700000000, 0x6fe3a25300000000, 0x00af07c800000000, + 0xf07d99bf00000000, 0x9f313c2400000000, 0xeeaea85600000000, + 0x81e20dcd00000000, 0x713093ba00000000, 0x1e7c362100000000, + 0x9195ae5500000000, 0xfed90bce00000000, 0x0e0b95b900000000, + 0x6147302200000000, 0xec35bc5c00000000, 0x837919c700000000, + 0x73ab87b000000000, 0x1ce7222b00000000, 0x930eba5f00000000, + 0xfc421fc400000000, 0x0c9081b300000000, 0x63dc242800000000, + 0x1243b05a00000000, 0x7d0f15c100000000, 0x8ddd8bb600000000, + 0xe2912e2d00000000, 0x6d78b65900000000, 0x023413c200000000, + 0xf2e68db500000000, 0x9daa282e00000000, 0xe803954800000000, + 0x874f30d300000000, 0x779daea400000000, 0x18d10b3f00000000, + 0x9738934b00000000, 0xf87436d000000000, 0x08a6a8a700000000, + 0x67ea0d3c00000000, 0x1675994e00000000, 0x79393cd500000000, + 0x89eba2a200000000, 0xe6a7073900000000, 0x694e9f4d00000000, + 0x06023ad600000000, 0xf6d0a4a100000000, 0x999c013a00000000, + 0x14ee8d4400000000, 0x7ba228df00000000, 0x8b70b6a800000000, + 0xe43c133300000000, 0x6bd58b4700000000, 0x04992edc00000000, + 0xf44bb0ab00000000, 0x9b07153000000000, 0xea98814200000000, + 0x85d424d900000000, 0x7506baae00000000, 0x1a4a1f3500000000, + 0x95a3874100000000, 0xfaef22da00000000, 0x0a3dbcad00000000, + 0x6571193600000000}, + {0x0000000000000000, 0x85d996dd00000000, 0x4bb55c6000000000, + 0xce6ccabd00000000, 0x966ab9c000000000, 0x13b32f1d00000000, + 0xdddfe5a000000000, 0x5806737d00000000, 0x6dd3035a00000000, + 0xe80a958700000000, 0x26665f3a00000000, 0xa3bfc9e700000000, + 0xfbb9ba9a00000000, 0x7e602c4700000000, 0xb00ce6fa00000000, + 0x35d5702700000000, 0xdaa607b400000000, 0x5f7f916900000000, + 0x91135bd400000000, 0x14cacd0900000000, 0x4cccbe7400000000, + 0xc91528a900000000, 0x0779e21400000000, 0x82a074c900000000, + 0xb77504ee00000000, 0x32ac923300000000, 0xfcc0588e00000000, + 0x7919ce5300000000, 0x211fbd2e00000000, 0xa4c62bf300000000, + 0x6aaae14e00000000, 0xef73779300000000, 0xf54b7eb300000000, + 0x7092e86e00000000, 0xbefe22d300000000, 0x3b27b40e00000000, + 0x6321c77300000000, 0xe6f851ae00000000, 0x28949b1300000000, + 0xad4d0dce00000000, 0x98987de900000000, 0x1d41eb3400000000, + 0xd32d218900000000, 0x56f4b75400000000, 0x0ef2c42900000000, + 0x8b2b52f400000000, 0x4547984900000000, 0xc09e0e9400000000, + 0x2fed790700000000, 0xaa34efda00000000, 0x6458256700000000, + 0xe181b3ba00000000, 0xb987c0c700000000, 0x3c5e561a00000000, + 0xf2329ca700000000, 0x77eb0a7a00000000, 0x423e7a5d00000000, + 0xc7e7ec8000000000, 0x098b263d00000000, 0x8c52b0e000000000, + 0xd454c39d00000000, 0x518d554000000000, 0x9fe19ffd00000000, + 0x1a38092000000000, 0xab918dbd00000000, 0x2e481b6000000000, + 0xe024d1dd00000000, 0x65fd470000000000, 0x3dfb347d00000000, + 0xb822a2a000000000, 0x764e681d00000000, 0xf397fec000000000, + 0xc6428ee700000000, 0x439b183a00000000, 0x8df7d28700000000, + 0x082e445a00000000, 0x5028372700000000, 0xd5f1a1fa00000000, + 0x1b9d6b4700000000, 0x9e44fd9a00000000, 0x71378a0900000000, + 0xf4ee1cd400000000, 0x3a82d66900000000, 0xbf5b40b400000000, + 0xe75d33c900000000, 0x6284a51400000000, 0xace86fa900000000, + 0x2931f97400000000, 0x1ce4895300000000, 0x993d1f8e00000000, + 0x5751d53300000000, 0xd28843ee00000000, 0x8a8e309300000000, + 0x0f57a64e00000000, 0xc13b6cf300000000, 0x44e2fa2e00000000, + 0x5edaf30e00000000, 0xdb0365d300000000, 0x156faf6e00000000, + 0x90b639b300000000, 0xc8b04ace00000000, 0x4d69dc1300000000, + 0x830516ae00000000, 0x06dc807300000000, 0x3309f05400000000, + 0xb6d0668900000000, 0x78bcac3400000000, 0xfd653ae900000000, + 0xa563499400000000, 0x20badf4900000000, 0xeed615f400000000, + 0x6b0f832900000000, 0x847cf4ba00000000, 0x01a5626700000000, + 0xcfc9a8da00000000, 0x4a103e0700000000, 0x12164d7a00000000, + 0x97cfdba700000000, 0x59a3111a00000000, 0xdc7a87c700000000, + 0xe9aff7e000000000, 0x6c76613d00000000, 0xa21aab8000000000, + 0x27c33d5d00000000, 0x7fc54e2000000000, 0xfa1cd8fd00000000, + 0x3470124000000000, 0xb1a9849d00000000, 0x17256aa000000000, + 0x92fcfc7d00000000, 0x5c9036c000000000, 0xd949a01d00000000, + 0x814fd36000000000, 0x049645bd00000000, 0xcafa8f0000000000, + 0x4f2319dd00000000, 0x7af669fa00000000, 0xff2fff2700000000, + 0x3143359a00000000, 0xb49aa34700000000, 0xec9cd03a00000000, + 0x694546e700000000, 0xa7298c5a00000000, 0x22f01a8700000000, + 0xcd836d1400000000, 0x485afbc900000000, 0x8636317400000000, + 0x03efa7a900000000, 0x5be9d4d400000000, 0xde30420900000000, + 0x105c88b400000000, 0x95851e6900000000, 0xa0506e4e00000000, + 0x2589f89300000000, 0xebe5322e00000000, 0x6e3ca4f300000000, + 0x363ad78e00000000, 0xb3e3415300000000, 0x7d8f8bee00000000, + 0xf8561d3300000000, 0xe26e141300000000, 0x67b782ce00000000, + 0xa9db487300000000, 0x2c02deae00000000, 0x7404add300000000, + 0xf1dd3b0e00000000, 0x3fb1f1b300000000, 0xba68676e00000000, + 0x8fbd174900000000, 0x0a64819400000000, 0xc4084b2900000000, + 0x41d1ddf400000000, 0x19d7ae8900000000, 0x9c0e385400000000, + 0x5262f2e900000000, 0xd7bb643400000000, 0x38c813a700000000, + 0xbd11857a00000000, 0x737d4fc700000000, 0xf6a4d91a00000000, + 0xaea2aa6700000000, 0x2b7b3cba00000000, 0xe517f60700000000, + 0x60ce60da00000000, 0x551b10fd00000000, 0xd0c2862000000000, + 0x1eae4c9d00000000, 0x9b77da4000000000, 0xc371a93d00000000, + 0x46a83fe000000000, 0x88c4f55d00000000, 0x0d1d638000000000, + 0xbcb4e71d00000000, 0x396d71c000000000, 0xf701bb7d00000000, + 0x72d82da000000000, 0x2ade5edd00000000, 0xaf07c80000000000, + 0x616b02bd00000000, 0xe4b2946000000000, 0xd167e44700000000, + 0x54be729a00000000, 0x9ad2b82700000000, 0x1f0b2efa00000000, + 0x470d5d8700000000, 0xc2d4cb5a00000000, 0x0cb801e700000000, + 0x8961973a00000000, 0x6612e0a900000000, 0xe3cb767400000000, + 0x2da7bcc900000000, 0xa87e2a1400000000, 0xf078596900000000, + 0x75a1cfb400000000, 0xbbcd050900000000, 0x3e1493d400000000, + 0x0bc1e3f300000000, 0x8e18752e00000000, 0x4074bf9300000000, + 0xc5ad294e00000000, 0x9dab5a3300000000, 0x1872ccee00000000, + 0xd61e065300000000, 0x53c7908e00000000, 0x49ff99ae00000000, + 0xcc260f7300000000, 0x024ac5ce00000000, 0x8793531300000000, + 0xdf95206e00000000, 0x5a4cb6b300000000, 0x94207c0e00000000, + 0x11f9ead300000000, 0x242c9af400000000, 0xa1f50c2900000000, + 0x6f99c69400000000, 0xea40504900000000, 0xb246233400000000, + 0x379fb5e900000000, 0xf9f37f5400000000, 0x7c2ae98900000000, + 0x93599e1a00000000, 0x168008c700000000, 0xd8ecc27a00000000, + 0x5d3554a700000000, 0x053327da00000000, 0x80eab10700000000, + 0x4e867bba00000000, 0xcb5fed6700000000, 0xfe8a9d4000000000, + 0x7b530b9d00000000, 0xb53fc12000000000, 0x30e657fd00000000, + 0x68e0248000000000, 0xed39b25d00000000, 0x235578e000000000, + 0xa68cee3d00000000}, + {0x0000000000000000, 0x76e10f9d00000000, 0xadc46ee100000000, + 0xdb25617c00000000, 0x1b8fac1900000000, 0x6d6ea38400000000, + 0xb64bc2f800000000, 0xc0aacd6500000000, 0x361e593300000000, + 0x40ff56ae00000000, 0x9bda37d200000000, 0xed3b384f00000000, + 0x2d91f52a00000000, 0x5b70fab700000000, 0x80559bcb00000000, + 0xf6b4945600000000, 0x6c3cb26600000000, 0x1addbdfb00000000, + 0xc1f8dc8700000000, 0xb719d31a00000000, 0x77b31e7f00000000, + 0x015211e200000000, 0xda77709e00000000, 0xac967f0300000000, + 0x5a22eb5500000000, 0x2cc3e4c800000000, 0xf7e685b400000000, + 0x81078a2900000000, 0x41ad474c00000000, 0x374c48d100000000, + 0xec6929ad00000000, 0x9a88263000000000, 0xd87864cd00000000, + 0xae996b5000000000, 0x75bc0a2c00000000, 0x035d05b100000000, + 0xc3f7c8d400000000, 0xb516c74900000000, 0x6e33a63500000000, + 0x18d2a9a800000000, 0xee663dfe00000000, 0x9887326300000000, + 0x43a2531f00000000, 0x35435c8200000000, 0xf5e991e700000000, + 0x83089e7a00000000, 0x582dff0600000000, 0x2eccf09b00000000, + 0xb444d6ab00000000, 0xc2a5d93600000000, 0x1980b84a00000000, + 0x6f61b7d700000000, 0xafcb7ab200000000, 0xd92a752f00000000, + 0x020f145300000000, 0x74ee1bce00000000, 0x825a8f9800000000, + 0xf4bb800500000000, 0x2f9ee17900000000, 0x597feee400000000, + 0x99d5238100000000, 0xef342c1c00000000, 0x34114d6000000000, + 0x42f042fd00000000, 0xf1f7b94100000000, 0x8716b6dc00000000, + 0x5c33d7a000000000, 0x2ad2d83d00000000, 0xea78155800000000, + 0x9c991ac500000000, 0x47bc7bb900000000, 0x315d742400000000, + 0xc7e9e07200000000, 0xb108efef00000000, 0x6a2d8e9300000000, + 0x1ccc810e00000000, 0xdc664c6b00000000, 0xaa8743f600000000, + 0x71a2228a00000000, 0x07432d1700000000, 0x9dcb0b2700000000, + 0xeb2a04ba00000000, 0x300f65c600000000, 0x46ee6a5b00000000, + 0x8644a73e00000000, 0xf0a5a8a300000000, 0x2b80c9df00000000, + 0x5d61c64200000000, 0xabd5521400000000, 0xdd345d8900000000, + 0x06113cf500000000, 0x70f0336800000000, 0xb05afe0d00000000, + 0xc6bbf19000000000, 0x1d9e90ec00000000, 0x6b7f9f7100000000, + 0x298fdd8c00000000, 0x5f6ed21100000000, 0x844bb36d00000000, + 0xf2aabcf000000000, 0x3200719500000000, 0x44e17e0800000000, + 0x9fc41f7400000000, 0xe92510e900000000, 0x1f9184bf00000000, + 0x69708b2200000000, 0xb255ea5e00000000, 0xc4b4e5c300000000, + 0x041e28a600000000, 0x72ff273b00000000, 0xa9da464700000000, + 0xdf3b49da00000000, 0x45b36fea00000000, 0x3352607700000000, + 0xe877010b00000000, 0x9e960e9600000000, 0x5e3cc3f300000000, + 0x28ddcc6e00000000, 0xf3f8ad1200000000, 0x8519a28f00000000, + 0x73ad36d900000000, 0x054c394400000000, 0xde69583800000000, + 0xa88857a500000000, 0x68229ac000000000, 0x1ec3955d00000000, + 0xc5e6f42100000000, 0xb307fbbc00000000, 0xe2ef738300000000, + 0x940e7c1e00000000, 0x4f2b1d6200000000, 0x39ca12ff00000000, + 0xf960df9a00000000, 0x8f81d00700000000, 0x54a4b17b00000000, + 0x2245bee600000000, 0xd4f12ab000000000, 0xa210252d00000000, + 0x7935445100000000, 0x0fd44bcc00000000, 0xcf7e86a900000000, + 0xb99f893400000000, 0x62bae84800000000, 0x145be7d500000000, + 0x8ed3c1e500000000, 0xf832ce7800000000, 0x2317af0400000000, + 0x55f6a09900000000, 0x955c6dfc00000000, 0xe3bd626100000000, + 0x3898031d00000000, 0x4e790c8000000000, 0xb8cd98d600000000, + 0xce2c974b00000000, 0x1509f63700000000, 0x63e8f9aa00000000, + 0xa34234cf00000000, 0xd5a33b5200000000, 0x0e865a2e00000000, + 0x786755b300000000, 0x3a97174e00000000, 0x4c7618d300000000, + 0x975379af00000000, 0xe1b2763200000000, 0x2118bb5700000000, + 0x57f9b4ca00000000, 0x8cdcd5b600000000, 0xfa3dda2b00000000, + 0x0c894e7d00000000, 0x7a6841e000000000, 0xa14d209c00000000, + 0xd7ac2f0100000000, 0x1706e26400000000, 0x61e7edf900000000, + 0xbac28c8500000000, 0xcc23831800000000, 0x56aba52800000000, + 0x204aaab500000000, 0xfb6fcbc900000000, 0x8d8ec45400000000, + 0x4d24093100000000, 0x3bc506ac00000000, 0xe0e067d000000000, + 0x9601684d00000000, 0x60b5fc1b00000000, 0x1654f38600000000, + 0xcd7192fa00000000, 0xbb909d6700000000, 0x7b3a500200000000, + 0x0ddb5f9f00000000, 0xd6fe3ee300000000, 0xa01f317e00000000, + 0x1318cac200000000, 0x65f9c55f00000000, 0xbedca42300000000, + 0xc83dabbe00000000, 0x089766db00000000, 0x7e76694600000000, + 0xa553083a00000000, 0xd3b207a700000000, 0x250693f100000000, + 0x53e79c6c00000000, 0x88c2fd1000000000, 0xfe23f28d00000000, + 0x3e893fe800000000, 0x4868307500000000, 0x934d510900000000, + 0xe5ac5e9400000000, 0x7f2478a400000000, 0x09c5773900000000, + 0xd2e0164500000000, 0xa40119d800000000, 0x64abd4bd00000000, + 0x124adb2000000000, 0xc96fba5c00000000, 0xbf8eb5c100000000, + 0x493a219700000000, 0x3fdb2e0a00000000, 0xe4fe4f7600000000, + 0x921f40eb00000000, 0x52b58d8e00000000, 0x2454821300000000, + 0xff71e36f00000000, 0x8990ecf200000000, 0xcb60ae0f00000000, + 0xbd81a19200000000, 0x66a4c0ee00000000, 0x1045cf7300000000, + 0xd0ef021600000000, 0xa60e0d8b00000000, 0x7d2b6cf700000000, + 0x0bca636a00000000, 0xfd7ef73c00000000, 0x8b9ff8a100000000, + 0x50ba99dd00000000, 0x265b964000000000, 0xe6f15b2500000000, + 0x901054b800000000, 0x4b3535c400000000, 0x3dd43a5900000000, + 0xa75c1c6900000000, 0xd1bd13f400000000, 0x0a98728800000000, + 0x7c797d1500000000, 0xbcd3b07000000000, 0xca32bfed00000000, + 0x1117de9100000000, 0x67f6d10c00000000, 0x9142455a00000000, + 0xe7a34ac700000000, 0x3c862bbb00000000, 0x4a67242600000000, + 0x8acde94300000000, 0xfc2ce6de00000000, 0x270987a200000000, + 0x51e8883f00000000}, + {0x0000000000000000, 0xe8dbfbb900000000, 0x91b186a800000000, + 0x796a7d1100000000, 0x63657c8a00000000, 0x8bbe873300000000, + 0xf2d4fa2200000000, 0x1a0f019b00000000, 0x87cc89cf00000000, + 0x6f17727600000000, 0x167d0f6700000000, 0xfea6f4de00000000, + 0xe4a9f54500000000, 0x0c720efc00000000, 0x751873ed00000000, + 0x9dc3885400000000, 0x4f9f624400000000, 0xa74499fd00000000, + 0xde2ee4ec00000000, 0x36f51f5500000000, 0x2cfa1ece00000000, + 0xc421e57700000000, 0xbd4b986600000000, 0x559063df00000000, + 0xc853eb8b00000000, 0x2088103200000000, 0x59e26d2300000000, + 0xb139969a00000000, 0xab36970100000000, 0x43ed6cb800000000, + 0x3a8711a900000000, 0xd25cea1000000000, 0x9e3ec58800000000, + 0x76e53e3100000000, 0x0f8f432000000000, 0xe754b89900000000, + 0xfd5bb90200000000, 0x158042bb00000000, 0x6cea3faa00000000, + 0x8431c41300000000, 0x19f24c4700000000, 0xf129b7fe00000000, + 0x8843caef00000000, 0x6098315600000000, 0x7a9730cd00000000, + 0x924ccb7400000000, 0xeb26b66500000000, 0x03fd4ddc00000000, + 0xd1a1a7cc00000000, 0x397a5c7500000000, 0x4010216400000000, + 0xa8cbdadd00000000, 0xb2c4db4600000000, 0x5a1f20ff00000000, + 0x23755dee00000000, 0xcbaea65700000000, 0x566d2e0300000000, + 0xbeb6d5ba00000000, 0xc7dca8ab00000000, 0x2f07531200000000, + 0x3508528900000000, 0xddd3a93000000000, 0xa4b9d42100000000, + 0x4c622f9800000000, 0x7d7bfbca00000000, 0x95a0007300000000, + 0xecca7d6200000000, 0x041186db00000000, 0x1e1e874000000000, + 0xf6c57cf900000000, 0x8faf01e800000000, 0x6774fa5100000000, + 0xfab7720500000000, 0x126c89bc00000000, 0x6b06f4ad00000000, + 0x83dd0f1400000000, 0x99d20e8f00000000, 0x7109f53600000000, + 0x0863882700000000, 0xe0b8739e00000000, 0x32e4998e00000000, + 0xda3f623700000000, 0xa3551f2600000000, 0x4b8ee49f00000000, + 0x5181e50400000000, 0xb95a1ebd00000000, 0xc03063ac00000000, + 0x28eb981500000000, 0xb528104100000000, 0x5df3ebf800000000, + 0x249996e900000000, 0xcc426d5000000000, 0xd64d6ccb00000000, + 0x3e96977200000000, 0x47fcea6300000000, 0xaf2711da00000000, + 0xe3453e4200000000, 0x0b9ec5fb00000000, 0x72f4b8ea00000000, + 0x9a2f435300000000, 0x802042c800000000, 0x68fbb97100000000, + 0x1191c46000000000, 0xf94a3fd900000000, 0x6489b78d00000000, + 0x8c524c3400000000, 0xf538312500000000, 0x1de3ca9c00000000, + 0x07eccb0700000000, 0xef3730be00000000, 0x965d4daf00000000, + 0x7e86b61600000000, 0xacda5c0600000000, 0x4401a7bf00000000, + 0x3d6bdaae00000000, 0xd5b0211700000000, 0xcfbf208c00000000, + 0x2764db3500000000, 0x5e0ea62400000000, 0xb6d55d9d00000000, + 0x2b16d5c900000000, 0xc3cd2e7000000000, 0xbaa7536100000000, + 0x527ca8d800000000, 0x4873a94300000000, 0xa0a852fa00000000, + 0xd9c22feb00000000, 0x3119d45200000000, 0xbbf0874e00000000, + 0x532b7cf700000000, 0x2a4101e600000000, 0xc29afa5f00000000, + 0xd895fbc400000000, 0x304e007d00000000, 0x49247d6c00000000, + 0xa1ff86d500000000, 0x3c3c0e8100000000, 0xd4e7f53800000000, + 0xad8d882900000000, 0x4556739000000000, 0x5f59720b00000000, + 0xb78289b200000000, 0xcee8f4a300000000, 0x26330f1a00000000, + 0xf46fe50a00000000, 0x1cb41eb300000000, 0x65de63a200000000, + 0x8d05981b00000000, 0x970a998000000000, 0x7fd1623900000000, + 0x06bb1f2800000000, 0xee60e49100000000, 0x73a36cc500000000, + 0x9b78977c00000000, 0xe212ea6d00000000, 0x0ac911d400000000, + 0x10c6104f00000000, 0xf81debf600000000, 0x817796e700000000, + 0x69ac6d5e00000000, 0x25ce42c600000000, 0xcd15b97f00000000, + 0xb47fc46e00000000, 0x5ca43fd700000000, 0x46ab3e4c00000000, + 0xae70c5f500000000, 0xd71ab8e400000000, 0x3fc1435d00000000, + 0xa202cb0900000000, 0x4ad930b000000000, 0x33b34da100000000, + 0xdb68b61800000000, 0xc167b78300000000, 0x29bc4c3a00000000, + 0x50d6312b00000000, 0xb80dca9200000000, 0x6a51208200000000, + 0x828adb3b00000000, 0xfbe0a62a00000000, 0x133b5d9300000000, + 0x09345c0800000000, 0xe1efa7b100000000, 0x9885daa000000000, + 0x705e211900000000, 0xed9da94d00000000, 0x054652f400000000, + 0x7c2c2fe500000000, 0x94f7d45c00000000, 0x8ef8d5c700000000, + 0x66232e7e00000000, 0x1f49536f00000000, 0xf792a8d600000000, + 0xc68b7c8400000000, 0x2e50873d00000000, 0x573afa2c00000000, + 0xbfe1019500000000, 0xa5ee000e00000000, 0x4d35fbb700000000, + 0x345f86a600000000, 0xdc847d1f00000000, 0x4147f54b00000000, + 0xa99c0ef200000000, 0xd0f673e300000000, 0x382d885a00000000, + 0x222289c100000000, 0xcaf9727800000000, 0xb3930f6900000000, + 0x5b48f4d000000000, 0x89141ec000000000, 0x61cfe57900000000, + 0x18a5986800000000, 0xf07e63d100000000, 0xea71624a00000000, + 0x02aa99f300000000, 0x7bc0e4e200000000, 0x931b1f5b00000000, + 0x0ed8970f00000000, 0xe6036cb600000000, 0x9f6911a700000000, + 0x77b2ea1e00000000, 0x6dbdeb8500000000, 0x8566103c00000000, + 0xfc0c6d2d00000000, 0x14d7969400000000, 0x58b5b90c00000000, + 0xb06e42b500000000, 0xc9043fa400000000, 0x21dfc41d00000000, + 0x3bd0c58600000000, 0xd30b3e3f00000000, 0xaa61432e00000000, + 0x42bab89700000000, 0xdf7930c300000000, 0x37a2cb7a00000000, + 0x4ec8b66b00000000, 0xa6134dd200000000, 0xbc1c4c4900000000, + 0x54c7b7f000000000, 0x2dadcae100000000, 0xc576315800000000, + 0x172adb4800000000, 0xfff120f100000000, 0x869b5de000000000, + 0x6e40a65900000000, 0x744fa7c200000000, 0x9c945c7b00000000, + 0xe5fe216a00000000, 0x0d25dad300000000, 0x90e6528700000000, + 0x783da93e00000000, 0x0157d42f00000000, 0xe98c2f9600000000, + 0xf3832e0d00000000, 0x1b58d5b400000000, 0x6232a8a500000000, + 0x8ae9531c00000000}, + {0x0000000000000000, 0x919168ae00000000, 0x6325a08700000000, + 0xf2b4c82900000000, 0x874c31d400000000, 0x16dd597a00000000, + 0xe469915300000000, 0x75f8f9fd00000000, 0x4f9f137300000000, + 0xde0e7bdd00000000, 0x2cbab3f400000000, 0xbd2bdb5a00000000, + 0xc8d322a700000000, 0x59424a0900000000, 0xabf6822000000000, + 0x3a67ea8e00000000, 0x9e3e27e600000000, 0x0faf4f4800000000, + 0xfd1b876100000000, 0x6c8aefcf00000000, 0x1972163200000000, + 0x88e37e9c00000000, 0x7a57b6b500000000, 0xebc6de1b00000000, + 0xd1a1349500000000, 0x40305c3b00000000, 0xb284941200000000, + 0x2315fcbc00000000, 0x56ed054100000000, 0xc77c6def00000000, + 0x35c8a5c600000000, 0xa459cd6800000000, 0x7d7b3f1700000000, + 0xecea57b900000000, 0x1e5e9f9000000000, 0x8fcff73e00000000, + 0xfa370ec300000000, 0x6ba6666d00000000, 0x9912ae4400000000, + 0x0883c6ea00000000, 0x32e42c6400000000, 0xa37544ca00000000, + 0x51c18ce300000000, 0xc050e44d00000000, 0xb5a81db000000000, + 0x2439751e00000000, 0xd68dbd3700000000, 0x471cd59900000000, + 0xe34518f100000000, 0x72d4705f00000000, 0x8060b87600000000, + 0x11f1d0d800000000, 0x6409292500000000, 0xf598418b00000000, + 0x072c89a200000000, 0x96bde10c00000000, 0xacda0b8200000000, + 0x3d4b632c00000000, 0xcfffab0500000000, 0x5e6ec3ab00000000, + 0x2b963a5600000000, 0xba0752f800000000, 0x48b39ad100000000, + 0xd922f27f00000000, 0xfaf67e2e00000000, 0x6b67168000000000, + 0x99d3dea900000000, 0x0842b60700000000, 0x7dba4ffa00000000, + 0xec2b275400000000, 0x1e9fef7d00000000, 0x8f0e87d300000000, + 0xb5696d5d00000000, 0x24f805f300000000, 0xd64ccdda00000000, + 0x47dda57400000000, 0x32255c8900000000, 0xa3b4342700000000, + 0x5100fc0e00000000, 0xc09194a000000000, 0x64c859c800000000, + 0xf559316600000000, 0x07edf94f00000000, 0x967c91e100000000, + 0xe384681c00000000, 0x721500b200000000, 0x80a1c89b00000000, + 0x1130a03500000000, 0x2b574abb00000000, 0xbac6221500000000, + 0x4872ea3c00000000, 0xd9e3829200000000, 0xac1b7b6f00000000, + 0x3d8a13c100000000, 0xcf3edbe800000000, 0x5eafb34600000000, + 0x878d413900000000, 0x161c299700000000, 0xe4a8e1be00000000, + 0x7539891000000000, 0x00c170ed00000000, 0x9150184300000000, + 0x63e4d06a00000000, 0xf275b8c400000000, 0xc812524a00000000, + 0x59833ae400000000, 0xab37f2cd00000000, 0x3aa69a6300000000, + 0x4f5e639e00000000, 0xdecf0b3000000000, 0x2c7bc31900000000, + 0xbdeaabb700000000, 0x19b366df00000000, 0x88220e7100000000, + 0x7a96c65800000000, 0xeb07aef600000000, 0x9eff570b00000000, + 0x0f6e3fa500000000, 0xfddaf78c00000000, 0x6c4b9f2200000000, + 0x562c75ac00000000, 0xc7bd1d0200000000, 0x3509d52b00000000, + 0xa498bd8500000000, 0xd160447800000000, 0x40f12cd600000000, + 0xb245e4ff00000000, 0x23d48c5100000000, 0xf4edfd5c00000000, + 0x657c95f200000000, 0x97c85ddb00000000, 0x0659357500000000, + 0x73a1cc8800000000, 0xe230a42600000000, 0x10846c0f00000000, + 0x811504a100000000, 0xbb72ee2f00000000, 0x2ae3868100000000, + 0xd8574ea800000000, 0x49c6260600000000, 0x3c3edffb00000000, + 0xadafb75500000000, 0x5f1b7f7c00000000, 0xce8a17d200000000, + 0x6ad3daba00000000, 0xfb42b21400000000, 0x09f67a3d00000000, + 0x9867129300000000, 0xed9feb6e00000000, 0x7c0e83c000000000, + 0x8eba4be900000000, 0x1f2b234700000000, 0x254cc9c900000000, + 0xb4dda16700000000, 0x4669694e00000000, 0xd7f801e000000000, + 0xa200f81d00000000, 0x339190b300000000, 0xc125589a00000000, + 0x50b4303400000000, 0x8996c24b00000000, 0x1807aae500000000, + 0xeab362cc00000000, 0x7b220a6200000000, 0x0edaf39f00000000, + 0x9f4b9b3100000000, 0x6dff531800000000, 0xfc6e3bb600000000, + 0xc609d13800000000, 0x5798b99600000000, 0xa52c71bf00000000, + 0x34bd191100000000, 0x4145e0ec00000000, 0xd0d4884200000000, + 0x2260406b00000000, 0xb3f128c500000000, 0x17a8e5ad00000000, + 0x86398d0300000000, 0x748d452a00000000, 0xe51c2d8400000000, + 0x90e4d47900000000, 0x0175bcd700000000, 0xf3c174fe00000000, + 0x62501c5000000000, 0x5837f6de00000000, 0xc9a69e7000000000, + 0x3b12565900000000, 0xaa833ef700000000, 0xdf7bc70a00000000, + 0x4eeaafa400000000, 0xbc5e678d00000000, 0x2dcf0f2300000000, + 0x0e1b837200000000, 0x9f8aebdc00000000, 0x6d3e23f500000000, + 0xfcaf4b5b00000000, 0x8957b2a600000000, 0x18c6da0800000000, + 0xea72122100000000, 0x7be37a8f00000000, 0x4184900100000000, + 0xd015f8af00000000, 0x22a1308600000000, 0xb330582800000000, + 0xc6c8a1d500000000, 0x5759c97b00000000, 0xa5ed015200000000, + 0x347c69fc00000000, 0x9025a49400000000, 0x01b4cc3a00000000, + 0xf300041300000000, 0x62916cbd00000000, 0x1769954000000000, + 0x86f8fdee00000000, 0x744c35c700000000, 0xe5dd5d6900000000, + 0xdfbab7e700000000, 0x4e2bdf4900000000, 0xbc9f176000000000, + 0x2d0e7fce00000000, 0x58f6863300000000, 0xc967ee9d00000000, + 0x3bd326b400000000, 0xaa424e1a00000000, 0x7360bc6500000000, + 0xe2f1d4cb00000000, 0x10451ce200000000, 0x81d4744c00000000, + 0xf42c8db100000000, 0x65bde51f00000000, 0x97092d3600000000, + 0x0698459800000000, 0x3cffaf1600000000, 0xad6ec7b800000000, + 0x5fda0f9100000000, 0xce4b673f00000000, 0xbbb39ec200000000, + 0x2a22f66c00000000, 0xd8963e4500000000, 0x490756eb00000000, + 0xed5e9b8300000000, 0x7ccff32d00000000, 0x8e7b3b0400000000, + 0x1fea53aa00000000, 0x6a12aa5700000000, 0xfb83c2f900000000, + 0x09370ad000000000, 0x98a6627e00000000, 0xa2c188f000000000, + 0x3350e05e00000000, 0xc1e4287700000000, 0x507540d900000000, + 0x258db92400000000, 0xb41cd18a00000000, 0x46a819a300000000, + 0xd739710d00000000}}; + +#else /* W == 4 */ + +local const z_crc_t FAR crc_braid_table[][256] = { + {0x00000000, 0xccaa009e, 0x4225077d, 0x8e8f07e3, 0x844a0efa, + 0x48e00e64, 0xc66f0987, 0x0ac50919, 0xd3e51bb5, 0x1f4f1b2b, + 0x91c01cc8, 0x5d6a1c56, 0x57af154f, 0x9b0515d1, 0x158a1232, + 0xd92012ac, 0x7cbb312b, 0xb01131b5, 0x3e9e3656, 0xf23436c8, + 0xf8f13fd1, 0x345b3f4f, 0xbad438ac, 0x767e3832, 0xaf5e2a9e, + 0x63f42a00, 0xed7b2de3, 0x21d12d7d, 0x2b142464, 0xe7be24fa, + 0x69312319, 0xa59b2387, 0xf9766256, 0x35dc62c8, 0xbb53652b, + 0x77f965b5, 0x7d3c6cac, 0xb1966c32, 0x3f196bd1, 0xf3b36b4f, + 0x2a9379e3, 0xe639797d, 0x68b67e9e, 0xa41c7e00, 0xaed97719, + 0x62737787, 0xecfc7064, 0x205670fa, 0x85cd537d, 0x496753e3, + 0xc7e85400, 0x0b42549e, 0x01875d87, 0xcd2d5d19, 0x43a25afa, + 0x8f085a64, 0x562848c8, 0x9a824856, 0x140d4fb5, 0xd8a74f2b, + 0xd2624632, 0x1ec846ac, 0x9047414f, 0x5ced41d1, 0x299dc2ed, + 0xe537c273, 0x6bb8c590, 0xa712c50e, 0xadd7cc17, 0x617dcc89, + 0xeff2cb6a, 0x2358cbf4, 0xfa78d958, 0x36d2d9c6, 0xb85dde25, + 0x74f7debb, 0x7e32d7a2, 0xb298d73c, 0x3c17d0df, 0xf0bdd041, + 0x5526f3c6, 0x998cf358, 0x1703f4bb, 0xdba9f425, 0xd16cfd3c, + 0x1dc6fda2, 0x9349fa41, 0x5fe3fadf, 0x86c3e873, 0x4a69e8ed, + 0xc4e6ef0e, 0x084cef90, 0x0289e689, 0xce23e617, 0x40ace1f4, + 0x8c06e16a, 0xd0eba0bb, 0x1c41a025, 0x92cea7c6, 0x5e64a758, + 0x54a1ae41, 0x980baedf, 0x1684a93c, 0xda2ea9a2, 0x030ebb0e, + 0xcfa4bb90, 0x412bbc73, 0x8d81bced, 0x8744b5f4, 0x4beeb56a, + 0xc561b289, 0x09cbb217, 0xac509190, 0x60fa910e, 0xee7596ed, + 0x22df9673, 0x281a9f6a, 0xe4b09ff4, 0x6a3f9817, 0xa6959889, + 0x7fb58a25, 0xb31f8abb, 0x3d908d58, 0xf13a8dc6, 0xfbff84df, + 0x37558441, 0xb9da83a2, 0x7570833c, 0x533b85da, 0x9f918544, + 0x111e82a7, 0xddb48239, 0xd7718b20, 0x1bdb8bbe, 0x95548c5d, + 0x59fe8cc3, 0x80de9e6f, 0x4c749ef1, 0xc2fb9912, 0x0e51998c, + 0x04949095, 0xc83e900b, 0x46b197e8, 0x8a1b9776, 0x2f80b4f1, + 0xe32ab46f, 0x6da5b38c, 0xa10fb312, 0xabcaba0b, 0x6760ba95, + 0xe9efbd76, 0x2545bde8, 0xfc65af44, 0x30cfafda, 0xbe40a839, + 0x72eaa8a7, 0x782fa1be, 0xb485a120, 0x3a0aa6c3, 0xf6a0a65d, + 0xaa4de78c, 0x66e7e712, 0xe868e0f1, 0x24c2e06f, 0x2e07e976, + 0xe2ade9e8, 0x6c22ee0b, 0xa088ee95, 0x79a8fc39, 0xb502fca7, + 0x3b8dfb44, 0xf727fbda, 0xfde2f2c3, 0x3148f25d, 0xbfc7f5be, + 0x736df520, 0xd6f6d6a7, 0x1a5cd639, 0x94d3d1da, 0x5879d144, + 0x52bcd85d, 0x9e16d8c3, 0x1099df20, 0xdc33dfbe, 0x0513cd12, + 0xc9b9cd8c, 0x4736ca6f, 0x8b9ccaf1, 0x8159c3e8, 0x4df3c376, + 0xc37cc495, 0x0fd6c40b, 0x7aa64737, 0xb60c47a9, 0x3883404a, + 0xf42940d4, 0xfeec49cd, 0x32464953, 0xbcc94eb0, 0x70634e2e, + 0xa9435c82, 0x65e95c1c, 0xeb665bff, 0x27cc5b61, 0x2d095278, + 0xe1a352e6, 0x6f2c5505, 0xa386559b, 0x061d761c, 0xcab77682, + 0x44387161, 0x889271ff, 0x825778e6, 0x4efd7878, 0xc0727f9b, + 0x0cd87f05, 0xd5f86da9, 0x19526d37, 0x97dd6ad4, 0x5b776a4a, + 0x51b26353, 0x9d1863cd, 0x1397642e, 0xdf3d64b0, 0x83d02561, + 0x4f7a25ff, 0xc1f5221c, 0x0d5f2282, 0x079a2b9b, 0xcb302b05, + 0x45bf2ce6, 0x89152c78, 0x50353ed4, 0x9c9f3e4a, 0x121039a9, + 0xdeba3937, 0xd47f302e, 0x18d530b0, 0x965a3753, 0x5af037cd, + 0xff6b144a, 0x33c114d4, 0xbd4e1337, 0x71e413a9, 0x7b211ab0, + 0xb78b1a2e, 0x39041dcd, 0xf5ae1d53, 0x2c8e0fff, 0xe0240f61, + 0x6eab0882, 0xa201081c, 0xa8c40105, 0x646e019b, 0xeae10678, + 0x264b06e6}, + {0x00000000, 0xa6770bb4, 0x979f1129, 0x31e81a9d, 0xf44f2413, + 0x52382fa7, 0x63d0353a, 0xc5a73e8e, 0x33ef4e67, 0x959845d3, + 0xa4705f4e, 0x020754fa, 0xc7a06a74, 0x61d761c0, 0x503f7b5d, + 0xf64870e9, 0x67de9cce, 0xc1a9977a, 0xf0418de7, 0x56368653, + 0x9391b8dd, 0x35e6b369, 0x040ea9f4, 0xa279a240, 0x5431d2a9, + 0xf246d91d, 0xc3aec380, 0x65d9c834, 0xa07ef6ba, 0x0609fd0e, + 0x37e1e793, 0x9196ec27, 0xcfbd399c, 0x69ca3228, 0x582228b5, + 0xfe552301, 0x3bf21d8f, 0x9d85163b, 0xac6d0ca6, 0x0a1a0712, + 0xfc5277fb, 0x5a257c4f, 0x6bcd66d2, 0xcdba6d66, 0x081d53e8, + 0xae6a585c, 0x9f8242c1, 0x39f54975, 0xa863a552, 0x0e14aee6, + 0x3ffcb47b, 0x998bbfcf, 0x5c2c8141, 0xfa5b8af5, 0xcbb39068, + 0x6dc49bdc, 0x9b8ceb35, 0x3dfbe081, 0x0c13fa1c, 0xaa64f1a8, + 0x6fc3cf26, 0xc9b4c492, 0xf85cde0f, 0x5e2bd5bb, 0x440b7579, + 0xe27c7ecd, 0xd3946450, 0x75e36fe4, 0xb044516a, 0x16335ade, + 0x27db4043, 0x81ac4bf7, 0x77e43b1e, 0xd19330aa, 0xe07b2a37, + 0x460c2183, 0x83ab1f0d, 0x25dc14b9, 0x14340e24, 0xb2430590, + 0x23d5e9b7, 0x85a2e203, 0xb44af89e, 0x123df32a, 0xd79acda4, + 0x71edc610, 0x4005dc8d, 0xe672d739, 0x103aa7d0, 0xb64dac64, + 0x87a5b6f9, 0x21d2bd4d, 0xe47583c3, 0x42028877, 0x73ea92ea, + 0xd59d995e, 0x8bb64ce5, 0x2dc14751, 0x1c295dcc, 0xba5e5678, + 0x7ff968f6, 0xd98e6342, 0xe86679df, 0x4e11726b, 0xb8590282, + 0x1e2e0936, 0x2fc613ab, 0x89b1181f, 0x4c162691, 0xea612d25, + 0xdb8937b8, 0x7dfe3c0c, 0xec68d02b, 0x4a1fdb9f, 0x7bf7c102, + 0xdd80cab6, 0x1827f438, 0xbe50ff8c, 0x8fb8e511, 0x29cfeea5, + 0xdf879e4c, 0x79f095f8, 0x48188f65, 0xee6f84d1, 0x2bc8ba5f, + 0x8dbfb1eb, 0xbc57ab76, 0x1a20a0c2, 0x8816eaf2, 0x2e61e146, + 0x1f89fbdb, 0xb9fef06f, 0x7c59cee1, 0xda2ec555, 0xebc6dfc8, + 0x4db1d47c, 0xbbf9a495, 0x1d8eaf21, 0x2c66b5bc, 0x8a11be08, + 0x4fb68086, 0xe9c18b32, 0xd82991af, 0x7e5e9a1b, 0xefc8763c, + 0x49bf7d88, 0x78576715, 0xde206ca1, 0x1b87522f, 0xbdf0599b, + 0x8c184306, 0x2a6f48b2, 0xdc27385b, 0x7a5033ef, 0x4bb82972, + 0xedcf22c6, 0x28681c48, 0x8e1f17fc, 0xbff70d61, 0x198006d5, + 0x47abd36e, 0xe1dcd8da, 0xd034c247, 0x7643c9f3, 0xb3e4f77d, + 0x1593fcc9, 0x247be654, 0x820cede0, 0x74449d09, 0xd23396bd, + 0xe3db8c20, 0x45ac8794, 0x800bb91a, 0x267cb2ae, 0x1794a833, + 0xb1e3a387, 0x20754fa0, 0x86024414, 0xb7ea5e89, 0x119d553d, + 0xd43a6bb3, 0x724d6007, 0x43a57a9a, 0xe5d2712e, 0x139a01c7, + 0xb5ed0a73, 0x840510ee, 0x22721b5a, 0xe7d525d4, 0x41a22e60, + 0x704a34fd, 0xd63d3f49, 0xcc1d9f8b, 0x6a6a943f, 0x5b828ea2, + 0xfdf58516, 0x3852bb98, 0x9e25b02c, 0xafcdaab1, 0x09baa105, + 0xfff2d1ec, 0x5985da58, 0x686dc0c5, 0xce1acb71, 0x0bbdf5ff, + 0xadcafe4b, 0x9c22e4d6, 0x3a55ef62, 0xabc30345, 0x0db408f1, + 0x3c5c126c, 0x9a2b19d8, 0x5f8c2756, 0xf9fb2ce2, 0xc813367f, + 0x6e643dcb, 0x982c4d22, 0x3e5b4696, 0x0fb35c0b, 0xa9c457bf, + 0x6c636931, 0xca146285, 0xfbfc7818, 0x5d8b73ac, 0x03a0a617, + 0xa5d7ada3, 0x943fb73e, 0x3248bc8a, 0xf7ef8204, 0x519889b0, + 0x6070932d, 0xc6079899, 0x304fe870, 0x9638e3c4, 0xa7d0f959, + 0x01a7f2ed, 0xc400cc63, 0x6277c7d7, 0x539fdd4a, 0xf5e8d6fe, + 0x647e3ad9, 0xc209316d, 0xf3e12bf0, 0x55962044, 0x90311eca, + 0x3646157e, 0x07ae0fe3, 0xa1d90457, 0x579174be, 0xf1e67f0a, + 0xc00e6597, 0x66796e23, 0xa3de50ad, 0x05a95b19, 0x34414184, + 0x92364a30}, + {0x00000000, 0xcb5cd3a5, 0x4dc8a10b, 0x869472ae, 0x9b914216, + 0x50cd91b3, 0xd659e31d, 0x1d0530b8, 0xec53826d, 0x270f51c8, + 0xa19b2366, 0x6ac7f0c3, 0x77c2c07b, 0xbc9e13de, 0x3a0a6170, + 0xf156b2d5, 0x03d6029b, 0xc88ad13e, 0x4e1ea390, 0x85427035, + 0x9847408d, 0x531b9328, 0xd58fe186, 0x1ed33223, 0xef8580f6, + 0x24d95353, 0xa24d21fd, 0x6911f258, 0x7414c2e0, 0xbf481145, + 0x39dc63eb, 0xf280b04e, 0x07ac0536, 0xccf0d693, 0x4a64a43d, + 0x81387798, 0x9c3d4720, 0x57619485, 0xd1f5e62b, 0x1aa9358e, + 0xebff875b, 0x20a354fe, 0xa6372650, 0x6d6bf5f5, 0x706ec54d, + 0xbb3216e8, 0x3da66446, 0xf6fab7e3, 0x047a07ad, 0xcf26d408, + 0x49b2a6a6, 0x82ee7503, 0x9feb45bb, 0x54b7961e, 0xd223e4b0, + 0x197f3715, 0xe82985c0, 0x23755665, 0xa5e124cb, 0x6ebdf76e, + 0x73b8c7d6, 0xb8e41473, 0x3e7066dd, 0xf52cb578, 0x0f580a6c, + 0xc404d9c9, 0x4290ab67, 0x89cc78c2, 0x94c9487a, 0x5f959bdf, + 0xd901e971, 0x125d3ad4, 0xe30b8801, 0x28575ba4, 0xaec3290a, + 0x659ffaaf, 0x789aca17, 0xb3c619b2, 0x35526b1c, 0xfe0eb8b9, + 0x0c8e08f7, 0xc7d2db52, 0x4146a9fc, 0x8a1a7a59, 0x971f4ae1, + 0x5c439944, 0xdad7ebea, 0x118b384f, 0xe0dd8a9a, 0x2b81593f, + 0xad152b91, 0x6649f834, 0x7b4cc88c, 0xb0101b29, 0x36846987, + 0xfdd8ba22, 0x08f40f5a, 0xc3a8dcff, 0x453cae51, 0x8e607df4, + 0x93654d4c, 0x58399ee9, 0xdeadec47, 0x15f13fe2, 0xe4a78d37, + 0x2ffb5e92, 0xa96f2c3c, 0x6233ff99, 0x7f36cf21, 0xb46a1c84, + 0x32fe6e2a, 0xf9a2bd8f, 0x0b220dc1, 0xc07ede64, 0x46eaacca, + 0x8db67f6f, 0x90b34fd7, 0x5bef9c72, 0xdd7beedc, 0x16273d79, + 0xe7718fac, 0x2c2d5c09, 0xaab92ea7, 0x61e5fd02, 0x7ce0cdba, + 0xb7bc1e1f, 0x31286cb1, 0xfa74bf14, 0x1eb014d8, 0xd5ecc77d, + 0x5378b5d3, 0x98246676, 0x852156ce, 0x4e7d856b, 0xc8e9f7c5, + 0x03b52460, 0xf2e396b5, 0x39bf4510, 0xbf2b37be, 0x7477e41b, + 0x6972d4a3, 0xa22e0706, 0x24ba75a8, 0xefe6a60d, 0x1d661643, + 0xd63ac5e6, 0x50aeb748, 0x9bf264ed, 0x86f75455, 0x4dab87f0, + 0xcb3ff55e, 0x006326fb, 0xf135942e, 0x3a69478b, 0xbcfd3525, + 0x77a1e680, 0x6aa4d638, 0xa1f8059d, 0x276c7733, 0xec30a496, + 0x191c11ee, 0xd240c24b, 0x54d4b0e5, 0x9f886340, 0x828d53f8, + 0x49d1805d, 0xcf45f2f3, 0x04192156, 0xf54f9383, 0x3e134026, + 0xb8873288, 0x73dbe12d, 0x6eded195, 0xa5820230, 0x2316709e, + 0xe84aa33b, 0x1aca1375, 0xd196c0d0, 0x5702b27e, 0x9c5e61db, + 0x815b5163, 0x4a0782c6, 0xcc93f068, 0x07cf23cd, 0xf6999118, + 0x3dc542bd, 0xbb513013, 0x700de3b6, 0x6d08d30e, 0xa65400ab, + 0x20c07205, 0xeb9ca1a0, 0x11e81eb4, 0xdab4cd11, 0x5c20bfbf, + 0x977c6c1a, 0x8a795ca2, 0x41258f07, 0xc7b1fda9, 0x0ced2e0c, + 0xfdbb9cd9, 0x36e74f7c, 0xb0733dd2, 0x7b2fee77, 0x662adecf, + 0xad760d6a, 0x2be27fc4, 0xe0beac61, 0x123e1c2f, 0xd962cf8a, + 0x5ff6bd24, 0x94aa6e81, 0x89af5e39, 0x42f38d9c, 0xc467ff32, + 0x0f3b2c97, 0xfe6d9e42, 0x35314de7, 0xb3a53f49, 0x78f9ecec, + 0x65fcdc54, 0xaea00ff1, 0x28347d5f, 0xe368aefa, 0x16441b82, + 0xdd18c827, 0x5b8cba89, 0x90d0692c, 0x8dd55994, 0x46898a31, + 0xc01df89f, 0x0b412b3a, 0xfa1799ef, 0x314b4a4a, 0xb7df38e4, + 0x7c83eb41, 0x6186dbf9, 0xaada085c, 0x2c4e7af2, 0xe712a957, + 0x15921919, 0xdececabc, 0x585ab812, 0x93066bb7, 0x8e035b0f, + 0x455f88aa, 0xc3cbfa04, 0x089729a1, 0xf9c19b74, 0x329d48d1, + 0xb4093a7f, 0x7f55e9da, 0x6250d962, 0xa90c0ac7, 0x2f987869, + 0xe4c4abcc}, + {0x00000000, 0x3d6029b0, 0x7ac05360, 0x47a07ad0, 0xf580a6c0, + 0xc8e08f70, 0x8f40f5a0, 0xb220dc10, 0x30704bc1, 0x0d106271, + 0x4ab018a1, 0x77d03111, 0xc5f0ed01, 0xf890c4b1, 0xbf30be61, + 0x825097d1, 0x60e09782, 0x5d80be32, 0x1a20c4e2, 0x2740ed52, + 0x95603142, 0xa80018f2, 0xefa06222, 0xd2c04b92, 0x5090dc43, + 0x6df0f5f3, 0x2a508f23, 0x1730a693, 0xa5107a83, 0x98705333, + 0xdfd029e3, 0xe2b00053, 0xc1c12f04, 0xfca106b4, 0xbb017c64, + 0x866155d4, 0x344189c4, 0x0921a074, 0x4e81daa4, 0x73e1f314, + 0xf1b164c5, 0xccd14d75, 0x8b7137a5, 0xb6111e15, 0x0431c205, + 0x3951ebb5, 0x7ef19165, 0x4391b8d5, 0xa121b886, 0x9c419136, + 0xdbe1ebe6, 0xe681c256, 0x54a11e46, 0x69c137f6, 0x2e614d26, + 0x13016496, 0x9151f347, 0xac31daf7, 0xeb91a027, 0xd6f18997, + 0x64d15587, 0x59b17c37, 0x1e1106e7, 0x23712f57, 0x58f35849, + 0x659371f9, 0x22330b29, 0x1f532299, 0xad73fe89, 0x9013d739, + 0xd7b3ade9, 0xead38459, 0x68831388, 0x55e33a38, 0x124340e8, + 0x2f236958, 0x9d03b548, 0xa0639cf8, 0xe7c3e628, 0xdaa3cf98, + 0x3813cfcb, 0x0573e67b, 0x42d39cab, 0x7fb3b51b, 0xcd93690b, + 0xf0f340bb, 0xb7533a6b, 0x8a3313db, 0x0863840a, 0x3503adba, + 0x72a3d76a, 0x4fc3feda, 0xfde322ca, 0xc0830b7a, 0x872371aa, + 0xba43581a, 0x9932774d, 0xa4525efd, 0xe3f2242d, 0xde920d9d, + 0x6cb2d18d, 0x51d2f83d, 0x167282ed, 0x2b12ab5d, 0xa9423c8c, + 0x9422153c, 0xd3826fec, 0xeee2465c, 0x5cc29a4c, 0x61a2b3fc, + 0x2602c92c, 0x1b62e09c, 0xf9d2e0cf, 0xc4b2c97f, 0x8312b3af, + 0xbe729a1f, 0x0c52460f, 0x31326fbf, 0x7692156f, 0x4bf23cdf, + 0xc9a2ab0e, 0xf4c282be, 0xb362f86e, 0x8e02d1de, 0x3c220dce, + 0x0142247e, 0x46e25eae, 0x7b82771e, 0xb1e6b092, 0x8c869922, + 0xcb26e3f2, 0xf646ca42, 0x44661652, 0x79063fe2, 0x3ea64532, + 0x03c66c82, 0x8196fb53, 0xbcf6d2e3, 0xfb56a833, 0xc6368183, + 0x74165d93, 0x49767423, 0x0ed60ef3, 0x33b62743, 0xd1062710, + 0xec660ea0, 0xabc67470, 0x96a65dc0, 0x248681d0, 0x19e6a860, + 0x5e46d2b0, 0x6326fb00, 0xe1766cd1, 0xdc164561, 0x9bb63fb1, + 0xa6d61601, 0x14f6ca11, 0x2996e3a1, 0x6e369971, 0x5356b0c1, + 0x70279f96, 0x4d47b626, 0x0ae7ccf6, 0x3787e546, 0x85a73956, + 0xb8c710e6, 0xff676a36, 0xc2074386, 0x4057d457, 0x7d37fde7, + 0x3a978737, 0x07f7ae87, 0xb5d77297, 0x88b75b27, 0xcf1721f7, + 0xf2770847, 0x10c70814, 0x2da721a4, 0x6a075b74, 0x576772c4, + 0xe547aed4, 0xd8278764, 0x9f87fdb4, 0xa2e7d404, 0x20b743d5, + 0x1dd76a65, 0x5a7710b5, 0x67173905, 0xd537e515, 0xe857cca5, + 0xaff7b675, 0x92979fc5, 0xe915e8db, 0xd475c16b, 0x93d5bbbb, + 0xaeb5920b, 0x1c954e1b, 0x21f567ab, 0x66551d7b, 0x5b3534cb, + 0xd965a31a, 0xe4058aaa, 0xa3a5f07a, 0x9ec5d9ca, 0x2ce505da, + 0x11852c6a, 0x562556ba, 0x6b457f0a, 0x89f57f59, 0xb49556e9, + 0xf3352c39, 0xce550589, 0x7c75d999, 0x4115f029, 0x06b58af9, + 0x3bd5a349, 0xb9853498, 0x84e51d28, 0xc34567f8, 0xfe254e48, + 0x4c059258, 0x7165bbe8, 0x36c5c138, 0x0ba5e888, 0x28d4c7df, + 0x15b4ee6f, 0x521494bf, 0x6f74bd0f, 0xdd54611f, 0xe03448af, + 0xa794327f, 0x9af41bcf, 0x18a48c1e, 0x25c4a5ae, 0x6264df7e, + 0x5f04f6ce, 0xed242ade, 0xd044036e, 0x97e479be, 0xaa84500e, + 0x4834505d, 0x755479ed, 0x32f4033d, 0x0f942a8d, 0xbdb4f69d, + 0x80d4df2d, 0xc774a5fd, 0xfa148c4d, 0x78441b9c, 0x4524322c, + 0x028448fc, 0x3fe4614c, 0x8dc4bd5c, 0xb0a494ec, 0xf704ee3c, + 0xca64c78c}}; + +local const z_word_t FAR crc_braid_big_table[][256] = { + {0x00000000, 0xb029603d, 0x6053c07a, 0xd07aa047, 0xc0a680f5, + 0x708fe0c8, 0xa0f5408f, 0x10dc20b2, 0xc14b7030, 0x7162100d, + 0xa118b04a, 0x1131d077, 0x01edf0c5, 0xb1c490f8, 0x61be30bf, + 0xd1975082, 0x8297e060, 0x32be805d, 0xe2c4201a, 0x52ed4027, + 0x42316095, 0xf21800a8, 0x2262a0ef, 0x924bc0d2, 0x43dc9050, + 0xf3f5f06d, 0x238f502a, 0x93a63017, 0x837a10a5, 0x33537098, + 0xe329d0df, 0x5300b0e2, 0x042fc1c1, 0xb406a1fc, 0x647c01bb, + 0xd4556186, 0xc4894134, 0x74a02109, 0xa4da814e, 0x14f3e173, + 0xc564b1f1, 0x754dd1cc, 0xa537718b, 0x151e11b6, 0x05c23104, + 0xb5eb5139, 0x6591f17e, 0xd5b89143, 0x86b821a1, 0x3691419c, + 0xe6ebe1db, 0x56c281e6, 0x461ea154, 0xf637c169, 0x264d612e, + 0x96640113, 0x47f35191, 0xf7da31ac, 0x27a091eb, 0x9789f1d6, + 0x8755d164, 0x377cb159, 0xe706111e, 0x572f7123, 0x4958f358, + 0xf9719365, 0x290b3322, 0x9922531f, 0x89fe73ad, 0x39d71390, + 0xe9adb3d7, 0x5984d3ea, 0x88138368, 0x383ae355, 0xe8404312, + 0x5869232f, 0x48b5039d, 0xf89c63a0, 0x28e6c3e7, 0x98cfa3da, + 0xcbcf1338, 0x7be67305, 0xab9cd342, 0x1bb5b37f, 0x0b6993cd, + 0xbb40f3f0, 0x6b3a53b7, 0xdb13338a, 0x0a846308, 0xbaad0335, + 0x6ad7a372, 0xdafec34f, 0xca22e3fd, 0x7a0b83c0, 0xaa712387, + 0x1a5843ba, 0x4d773299, 0xfd5e52a4, 0x2d24f2e3, 0x9d0d92de, + 0x8dd1b26c, 0x3df8d251, 0xed827216, 0x5dab122b, 0x8c3c42a9, + 0x3c152294, 0xec6f82d3, 0x5c46e2ee, 0x4c9ac25c, 0xfcb3a261, + 0x2cc90226, 0x9ce0621b, 0xcfe0d2f9, 0x7fc9b2c4, 0xafb31283, + 0x1f9a72be, 0x0f46520c, 0xbf6f3231, 0x6f159276, 0xdf3cf24b, + 0x0eaba2c9, 0xbe82c2f4, 0x6ef862b3, 0xded1028e, 0xce0d223c, + 0x7e244201, 0xae5ee246, 0x1e77827b, 0x92b0e6b1, 0x2299868c, + 0xf2e326cb, 0x42ca46f6, 0x52166644, 0xe23f0679, 0x3245a63e, + 0x826cc603, 0x53fb9681, 0xe3d2f6bc, 0x33a856fb, 0x838136c6, + 0x935d1674, 0x23747649, 0xf30ed60e, 0x4327b633, 0x102706d1, + 0xa00e66ec, 0x7074c6ab, 0xc05da696, 0xd0818624, 0x60a8e619, + 0xb0d2465e, 0x00fb2663, 0xd16c76e1, 0x614516dc, 0xb13fb69b, + 0x0116d6a6, 0x11caf614, 0xa1e39629, 0x7199366e, 0xc1b05653, + 0x969f2770, 0x26b6474d, 0xf6cce70a, 0x46e58737, 0x5639a785, + 0xe610c7b8, 0x366a67ff, 0x864307c2, 0x57d45740, 0xe7fd377d, + 0x3787973a, 0x87aef707, 0x9772d7b5, 0x275bb788, 0xf72117cf, + 0x470877f2, 0x1408c710, 0xa421a72d, 0x745b076a, 0xc4726757, + 0xd4ae47e5, 0x648727d8, 0xb4fd879f, 0x04d4e7a2, 0xd543b720, + 0x656ad71d, 0xb510775a, 0x05391767, 0x15e537d5, 0xa5cc57e8, + 0x75b6f7af, 0xc59f9792, 0xdbe815e9, 0x6bc175d4, 0xbbbbd593, + 0x0b92b5ae, 0x1b4e951c, 0xab67f521, 0x7b1d5566, 0xcb34355b, + 0x1aa365d9, 0xaa8a05e4, 0x7af0a5a3, 0xcad9c59e, 0xda05e52c, + 0x6a2c8511, 0xba562556, 0x0a7f456b, 0x597ff589, 0xe95695b4, + 0x392c35f3, 0x890555ce, 0x99d9757c, 0x29f01541, 0xf98ab506, + 0x49a3d53b, 0x983485b9, 0x281de584, 0xf86745c3, 0x484e25fe, + 0x5892054c, 0xe8bb6571, 0x38c1c536, 0x88e8a50b, 0xdfc7d428, + 0x6feeb415, 0xbf941452, 0x0fbd746f, 0x1f6154dd, 0xaf4834e0, + 0x7f3294a7, 0xcf1bf49a, 0x1e8ca418, 0xaea5c425, 0x7edf6462, + 0xcef6045f, 0xde2a24ed, 0x6e0344d0, 0xbe79e497, 0x0e5084aa, + 0x5d503448, 0xed795475, 0x3d03f432, 0x8d2a940f, 0x9df6b4bd, + 0x2ddfd480, 0xfda574c7, 0x4d8c14fa, 0x9c1b4478, 0x2c322445, + 0xfc488402, 0x4c61e43f, 0x5cbdc48d, 0xec94a4b0, 0x3cee04f7, + 0x8cc764ca}, + {0x00000000, 0xa5d35ccb, 0x0ba1c84d, 0xae729486, 0x1642919b, + 0xb391cd50, 0x1de359d6, 0xb830051d, 0x6d8253ec, 0xc8510f27, + 0x66239ba1, 0xc3f0c76a, 0x7bc0c277, 0xde139ebc, 0x70610a3a, + 0xd5b256f1, 0x9b02d603, 0x3ed18ac8, 0x90a31e4e, 0x35704285, + 0x8d404798, 0x28931b53, 0x86e18fd5, 0x2332d31e, 0xf68085ef, + 0x5353d924, 0xfd214da2, 0x58f21169, 0xe0c21474, 0x451148bf, + 0xeb63dc39, 0x4eb080f2, 0x3605ac07, 0x93d6f0cc, 0x3da4644a, + 0x98773881, 0x20473d9c, 0x85946157, 0x2be6f5d1, 0x8e35a91a, + 0x5b87ffeb, 0xfe54a320, 0x502637a6, 0xf5f56b6d, 0x4dc56e70, + 0xe81632bb, 0x4664a63d, 0xe3b7faf6, 0xad077a04, 0x08d426cf, + 0xa6a6b249, 0x0375ee82, 0xbb45eb9f, 0x1e96b754, 0xb0e423d2, + 0x15377f19, 0xc08529e8, 0x65567523, 0xcb24e1a5, 0x6ef7bd6e, + 0xd6c7b873, 0x7314e4b8, 0xdd66703e, 0x78b52cf5, 0x6c0a580f, + 0xc9d904c4, 0x67ab9042, 0xc278cc89, 0x7a48c994, 0xdf9b955f, + 0x71e901d9, 0xd43a5d12, 0x01880be3, 0xa45b5728, 0x0a29c3ae, + 0xaffa9f65, 0x17ca9a78, 0xb219c6b3, 0x1c6b5235, 0xb9b80efe, + 0xf7088e0c, 0x52dbd2c7, 0xfca94641, 0x597a1a8a, 0xe14a1f97, + 0x4499435c, 0xeaebd7da, 0x4f388b11, 0x9a8adde0, 0x3f59812b, + 0x912b15ad, 0x34f84966, 0x8cc84c7b, 0x291b10b0, 0x87698436, + 0x22bad8fd, 0x5a0ff408, 0xffdca8c3, 0x51ae3c45, 0xf47d608e, + 0x4c4d6593, 0xe99e3958, 0x47ecadde, 0xe23ff115, 0x378da7e4, + 0x925efb2f, 0x3c2c6fa9, 0x99ff3362, 0x21cf367f, 0x841c6ab4, + 0x2a6efe32, 0x8fbda2f9, 0xc10d220b, 0x64de7ec0, 0xcaacea46, + 0x6f7fb68d, 0xd74fb390, 0x729cef5b, 0xdcee7bdd, 0x793d2716, + 0xac8f71e7, 0x095c2d2c, 0xa72eb9aa, 0x02fde561, 0xbacde07c, + 0x1f1ebcb7, 0xb16c2831, 0x14bf74fa, 0xd814b01e, 0x7dc7ecd5, + 0xd3b57853, 0x76662498, 0xce562185, 0x6b857d4e, 0xc5f7e9c8, + 0x6024b503, 0xb596e3f2, 0x1045bf39, 0xbe372bbf, 0x1be47774, + 0xa3d47269, 0x06072ea2, 0xa875ba24, 0x0da6e6ef, 0x4316661d, + 0xe6c53ad6, 0x48b7ae50, 0xed64f29b, 0x5554f786, 0xf087ab4d, + 0x5ef53fcb, 0xfb266300, 0x2e9435f1, 0x8b47693a, 0x2535fdbc, + 0x80e6a177, 0x38d6a46a, 0x9d05f8a1, 0x33776c27, 0x96a430ec, + 0xee111c19, 0x4bc240d2, 0xe5b0d454, 0x4063889f, 0xf8538d82, + 0x5d80d149, 0xf3f245cf, 0x56211904, 0x83934ff5, 0x2640133e, + 0x883287b8, 0x2de1db73, 0x95d1de6e, 0x300282a5, 0x9e701623, + 0x3ba34ae8, 0x7513ca1a, 0xd0c096d1, 0x7eb20257, 0xdb615e9c, + 0x63515b81, 0xc682074a, 0x68f093cc, 0xcd23cf07, 0x189199f6, + 0xbd42c53d, 0x133051bb, 0xb6e30d70, 0x0ed3086d, 0xab0054a6, + 0x0572c020, 0xa0a19ceb, 0xb41ee811, 0x11cdb4da, 0xbfbf205c, + 0x1a6c7c97, 0xa25c798a, 0x078f2541, 0xa9fdb1c7, 0x0c2eed0c, + 0xd99cbbfd, 0x7c4fe736, 0xd23d73b0, 0x77ee2f7b, 0xcfde2a66, + 0x6a0d76ad, 0xc47fe22b, 0x61acbee0, 0x2f1c3e12, 0x8acf62d9, + 0x24bdf65f, 0x816eaa94, 0x395eaf89, 0x9c8df342, 0x32ff67c4, + 0x972c3b0f, 0x429e6dfe, 0xe74d3135, 0x493fa5b3, 0xececf978, + 0x54dcfc65, 0xf10fa0ae, 0x5f7d3428, 0xfaae68e3, 0x821b4416, + 0x27c818dd, 0x89ba8c5b, 0x2c69d090, 0x9459d58d, 0x318a8946, + 0x9ff81dc0, 0x3a2b410b, 0xef9917fa, 0x4a4a4b31, 0xe438dfb7, + 0x41eb837c, 0xf9db8661, 0x5c08daaa, 0xf27a4e2c, 0x57a912e7, + 0x19199215, 0xbccacede, 0x12b85a58, 0xb76b0693, 0x0f5b038e, + 0xaa885f45, 0x04facbc3, 0xa1299708, 0x749bc1f9, 0xd1489d32, + 0x7f3a09b4, 0xdae9557f, 0x62d95062, 0xc70a0ca9, 0x6978982f, + 0xccabc4e4}, + {0x00000000, 0xb40b77a6, 0x29119f97, 0x9d1ae831, 0x13244ff4, + 0xa72f3852, 0x3a35d063, 0x8e3ea7c5, 0x674eef33, 0xd3459895, + 0x4e5f70a4, 0xfa540702, 0x746aa0c7, 0xc061d761, 0x5d7b3f50, + 0xe97048f6, 0xce9cde67, 0x7a97a9c1, 0xe78d41f0, 0x53863656, + 0xddb89193, 0x69b3e635, 0xf4a90e04, 0x40a279a2, 0xa9d23154, + 0x1dd946f2, 0x80c3aec3, 0x34c8d965, 0xbaf67ea0, 0x0efd0906, + 0x93e7e137, 0x27ec9691, 0x9c39bdcf, 0x2832ca69, 0xb5282258, + 0x012355fe, 0x8f1df23b, 0x3b16859d, 0xa60c6dac, 0x12071a0a, + 0xfb7752fc, 0x4f7c255a, 0xd266cd6b, 0x666dbacd, 0xe8531d08, + 0x5c586aae, 0xc142829f, 0x7549f539, 0x52a563a8, 0xe6ae140e, + 0x7bb4fc3f, 0xcfbf8b99, 0x41812c5c, 0xf58a5bfa, 0x6890b3cb, + 0xdc9bc46d, 0x35eb8c9b, 0x81e0fb3d, 0x1cfa130c, 0xa8f164aa, + 0x26cfc36f, 0x92c4b4c9, 0x0fde5cf8, 0xbbd52b5e, 0x79750b44, + 0xcd7e7ce2, 0x506494d3, 0xe46fe375, 0x6a5144b0, 0xde5a3316, + 0x4340db27, 0xf74bac81, 0x1e3be477, 0xaa3093d1, 0x372a7be0, + 0x83210c46, 0x0d1fab83, 0xb914dc25, 0x240e3414, 0x900543b2, + 0xb7e9d523, 0x03e2a285, 0x9ef84ab4, 0x2af33d12, 0xa4cd9ad7, + 0x10c6ed71, 0x8ddc0540, 0x39d772e6, 0xd0a73a10, 0x64ac4db6, + 0xf9b6a587, 0x4dbdd221, 0xc38375e4, 0x77880242, 0xea92ea73, + 0x5e999dd5, 0xe54cb68b, 0x5147c12d, 0xcc5d291c, 0x78565eba, + 0xf668f97f, 0x42638ed9, 0xdf7966e8, 0x6b72114e, 0x820259b8, + 0x36092e1e, 0xab13c62f, 0x1f18b189, 0x9126164c, 0x252d61ea, + 0xb83789db, 0x0c3cfe7d, 0x2bd068ec, 0x9fdb1f4a, 0x02c1f77b, + 0xb6ca80dd, 0x38f42718, 0x8cff50be, 0x11e5b88f, 0xa5eecf29, + 0x4c9e87df, 0xf895f079, 0x658f1848, 0xd1846fee, 0x5fbac82b, + 0xebb1bf8d, 0x76ab57bc, 0xc2a0201a, 0xf2ea1688, 0x46e1612e, + 0xdbfb891f, 0x6ff0feb9, 0xe1ce597c, 0x55c52eda, 0xc8dfc6eb, + 0x7cd4b14d, 0x95a4f9bb, 0x21af8e1d, 0xbcb5662c, 0x08be118a, + 0x8680b64f, 0x328bc1e9, 0xaf9129d8, 0x1b9a5e7e, 0x3c76c8ef, + 0x887dbf49, 0x15675778, 0xa16c20de, 0x2f52871b, 0x9b59f0bd, + 0x0643188c, 0xb2486f2a, 0x5b3827dc, 0xef33507a, 0x7229b84b, + 0xc622cfed, 0x481c6828, 0xfc171f8e, 0x610df7bf, 0xd5068019, + 0x6ed3ab47, 0xdad8dce1, 0x47c234d0, 0xf3c94376, 0x7df7e4b3, + 0xc9fc9315, 0x54e67b24, 0xe0ed0c82, 0x099d4474, 0xbd9633d2, + 0x208cdbe3, 0x9487ac45, 0x1ab90b80, 0xaeb27c26, 0x33a89417, + 0x87a3e3b1, 0xa04f7520, 0x14440286, 0x895eeab7, 0x3d559d11, + 0xb36b3ad4, 0x07604d72, 0x9a7aa543, 0x2e71d2e5, 0xc7019a13, + 0x730aedb5, 0xee100584, 0x5a1b7222, 0xd425d5e7, 0x602ea241, + 0xfd344a70, 0x493f3dd6, 0x8b9f1dcc, 0x3f946a6a, 0xa28e825b, + 0x1685f5fd, 0x98bb5238, 0x2cb0259e, 0xb1aacdaf, 0x05a1ba09, + 0xecd1f2ff, 0x58da8559, 0xc5c06d68, 0x71cb1ace, 0xfff5bd0b, + 0x4bfecaad, 0xd6e4229c, 0x62ef553a, 0x4503c3ab, 0xf108b40d, + 0x6c125c3c, 0xd8192b9a, 0x56278c5f, 0xe22cfbf9, 0x7f3613c8, + 0xcb3d646e, 0x224d2c98, 0x96465b3e, 0x0b5cb30f, 0xbf57c4a9, + 0x3169636c, 0x856214ca, 0x1878fcfb, 0xac738b5d, 0x17a6a003, + 0xa3add7a5, 0x3eb73f94, 0x8abc4832, 0x0482eff7, 0xb0899851, + 0x2d937060, 0x999807c6, 0x70e84f30, 0xc4e33896, 0x59f9d0a7, + 0xedf2a701, 0x63cc00c4, 0xd7c77762, 0x4add9f53, 0xfed6e8f5, + 0xd93a7e64, 0x6d3109c2, 0xf02be1f3, 0x44209655, 0xca1e3190, + 0x7e154636, 0xe30fae07, 0x5704d9a1, 0xbe749157, 0x0a7fe6f1, + 0x97650ec0, 0x236e7966, 0xad50dea3, 0x195ba905, 0x84414134, + 0x304a3692}, + {0x00000000, 0x9e00aacc, 0x7d072542, 0xe3078f8e, 0xfa0e4a84, + 0x640ee048, 0x87096fc6, 0x1909c50a, 0xb51be5d3, 0x2b1b4f1f, + 0xc81cc091, 0x561c6a5d, 0x4f15af57, 0xd115059b, 0x32128a15, + 0xac1220d9, 0x2b31bb7c, 0xb53111b0, 0x56369e3e, 0xc83634f2, + 0xd13ff1f8, 0x4f3f5b34, 0xac38d4ba, 0x32387e76, 0x9e2a5eaf, + 0x002af463, 0xe32d7bed, 0x7d2dd121, 0x6424142b, 0xfa24bee7, + 0x19233169, 0x87239ba5, 0x566276f9, 0xc862dc35, 0x2b6553bb, + 0xb565f977, 0xac6c3c7d, 0x326c96b1, 0xd16b193f, 0x4f6bb3f3, + 0xe379932a, 0x7d7939e6, 0x9e7eb668, 0x007e1ca4, 0x1977d9ae, + 0x87777362, 0x6470fcec, 0xfa705620, 0x7d53cd85, 0xe3536749, + 0x0054e8c7, 0x9e54420b, 0x875d8701, 0x195d2dcd, 0xfa5aa243, + 0x645a088f, 0xc8482856, 0x5648829a, 0xb54f0d14, 0x2b4fa7d8, + 0x324662d2, 0xac46c81e, 0x4f414790, 0xd141ed5c, 0xedc29d29, + 0x73c237e5, 0x90c5b86b, 0x0ec512a7, 0x17ccd7ad, 0x89cc7d61, + 0x6acbf2ef, 0xf4cb5823, 0x58d978fa, 0xc6d9d236, 0x25de5db8, + 0xbbdef774, 0xa2d7327e, 0x3cd798b2, 0xdfd0173c, 0x41d0bdf0, + 0xc6f32655, 0x58f38c99, 0xbbf40317, 0x25f4a9db, 0x3cfd6cd1, + 0xa2fdc61d, 0x41fa4993, 0xdffae35f, 0x73e8c386, 0xede8694a, + 0x0eefe6c4, 0x90ef4c08, 0x89e68902, 0x17e623ce, 0xf4e1ac40, + 0x6ae1068c, 0xbba0ebd0, 0x25a0411c, 0xc6a7ce92, 0x58a7645e, + 0x41aea154, 0xdfae0b98, 0x3ca98416, 0xa2a92eda, 0x0ebb0e03, + 0x90bba4cf, 0x73bc2b41, 0xedbc818d, 0xf4b54487, 0x6ab5ee4b, + 0x89b261c5, 0x17b2cb09, 0x909150ac, 0x0e91fa60, 0xed9675ee, + 0x7396df22, 0x6a9f1a28, 0xf49fb0e4, 0x17983f6a, 0x899895a6, + 0x258ab57f, 0xbb8a1fb3, 0x588d903d, 0xc68d3af1, 0xdf84fffb, + 0x41845537, 0xa283dab9, 0x3c837075, 0xda853b53, 0x4485919f, + 0xa7821e11, 0x3982b4dd, 0x208b71d7, 0xbe8bdb1b, 0x5d8c5495, + 0xc38cfe59, 0x6f9ede80, 0xf19e744c, 0x1299fbc2, 0x8c99510e, + 0x95909404, 0x0b903ec8, 0xe897b146, 0x76971b8a, 0xf1b4802f, + 0x6fb42ae3, 0x8cb3a56d, 0x12b30fa1, 0x0bbacaab, 0x95ba6067, + 0x76bdefe9, 0xe8bd4525, 0x44af65fc, 0xdaafcf30, 0x39a840be, + 0xa7a8ea72, 0xbea12f78, 0x20a185b4, 0xc3a60a3a, 0x5da6a0f6, + 0x8ce74daa, 0x12e7e766, 0xf1e068e8, 0x6fe0c224, 0x76e9072e, + 0xe8e9ade2, 0x0bee226c, 0x95ee88a0, 0x39fca879, 0xa7fc02b5, + 0x44fb8d3b, 0xdafb27f7, 0xc3f2e2fd, 0x5df24831, 0xbef5c7bf, + 0x20f56d73, 0xa7d6f6d6, 0x39d65c1a, 0xdad1d394, 0x44d17958, + 0x5dd8bc52, 0xc3d8169e, 0x20df9910, 0xbedf33dc, 0x12cd1305, + 0x8ccdb9c9, 0x6fca3647, 0xf1ca9c8b, 0xe8c35981, 0x76c3f34d, + 0x95c47cc3, 0x0bc4d60f, 0x3747a67a, 0xa9470cb6, 0x4a408338, + 0xd44029f4, 0xcd49ecfe, 0x53494632, 0xb04ec9bc, 0x2e4e6370, + 0x825c43a9, 0x1c5ce965, 0xff5b66eb, 0x615bcc27, 0x7852092d, + 0xe652a3e1, 0x05552c6f, 0x9b5586a3, 0x1c761d06, 0x8276b7ca, + 0x61713844, 0xff719288, 0xe6785782, 0x7878fd4e, 0x9b7f72c0, + 0x057fd80c, 0xa96df8d5, 0x376d5219, 0xd46add97, 0x4a6a775b, + 0x5363b251, 0xcd63189d, 0x2e649713, 0xb0643ddf, 0x6125d083, + 0xff257a4f, 0x1c22f5c1, 0x82225f0d, 0x9b2b9a07, 0x052b30cb, + 0xe62cbf45, 0x782c1589, 0xd43e3550, 0x4a3e9f9c, 0xa9391012, + 0x3739bade, 0x2e307fd4, 0xb030d518, 0x53375a96, 0xcd37f05a, + 0x4a146bff, 0xd414c133, 0x37134ebd, 0xa913e471, 0xb01a217b, + 0x2e1a8bb7, 0xcd1d0439, 0x531daef5, 0xff0f8e2c, 0x610f24e0, + 0x8208ab6e, 0x1c0801a2, 0x0501c4a8, 0x9b016e64, 0x7806e1ea, + 0xe6064b26}}; + +#endif + +#endif + +#if N == 3 + +#if W == 8 + +local const z_crc_t FAR crc_braid_table[][256] = { + {0x00000000, 0x81256527, 0xd93bcc0f, 0x581ea928, 0x69069e5f, + 0xe823fb78, 0xb03d5250, 0x31183777, 0xd20d3cbe, 0x53285999, + 0x0b36f0b1, 0x8a139596, 0xbb0ba2e1, 0x3a2ec7c6, 0x62306eee, + 0xe3150bc9, 0x7f6b7f3d, 0xfe4e1a1a, 0xa650b332, 0x2775d615, + 0x166de162, 0x97488445, 0xcf562d6d, 0x4e73484a, 0xad664383, + 0x2c4326a4, 0x745d8f8c, 0xf578eaab, 0xc460dddc, 0x4545b8fb, + 0x1d5b11d3, 0x9c7e74f4, 0xfed6fe7a, 0x7ff39b5d, 0x27ed3275, + 0xa6c85752, 0x97d06025, 0x16f50502, 0x4eebac2a, 0xcfcec90d, + 0x2cdbc2c4, 0xadfea7e3, 0xf5e00ecb, 0x74c56bec, 0x45dd5c9b, + 0xc4f839bc, 0x9ce69094, 0x1dc3f5b3, 0x81bd8147, 0x0098e460, + 0x58864d48, 0xd9a3286f, 0xe8bb1f18, 0x699e7a3f, 0x3180d317, + 0xb0a5b630, 0x53b0bdf9, 0xd295d8de, 0x8a8b71f6, 0x0bae14d1, + 0x3ab623a6, 0xbb934681, 0xe38defa9, 0x62a88a8e, 0x26dcfab5, + 0xa7f99f92, 0xffe736ba, 0x7ec2539d, 0x4fda64ea, 0xceff01cd, + 0x96e1a8e5, 0x17c4cdc2, 0xf4d1c60b, 0x75f4a32c, 0x2dea0a04, + 0xaccf6f23, 0x9dd75854, 0x1cf23d73, 0x44ec945b, 0xc5c9f17c, + 0x59b78588, 0xd892e0af, 0x808c4987, 0x01a92ca0, 0x30b11bd7, + 0xb1947ef0, 0xe98ad7d8, 0x68afb2ff, 0x8bbab936, 0x0a9fdc11, + 0x52817539, 0xd3a4101e, 0xe2bc2769, 0x6399424e, 0x3b87eb66, + 0xbaa28e41, 0xd80a04cf, 0x592f61e8, 0x0131c8c0, 0x8014ade7, + 0xb10c9a90, 0x3029ffb7, 0x6837569f, 0xe91233b8, 0x0a073871, + 0x8b225d56, 0xd33cf47e, 0x52199159, 0x6301a62e, 0xe224c309, + 0xba3a6a21, 0x3b1f0f06, 0xa7617bf2, 0x26441ed5, 0x7e5ab7fd, + 0xff7fd2da, 0xce67e5ad, 0x4f42808a, 0x175c29a2, 0x96794c85, + 0x756c474c, 0xf449226b, 0xac578b43, 0x2d72ee64, 0x1c6ad913, + 0x9d4fbc34, 0xc551151c, 0x4474703b, 0x4db9f56a, 0xcc9c904d, + 0x94823965, 0x15a75c42, 0x24bf6b35, 0xa59a0e12, 0xfd84a73a, + 0x7ca1c21d, 0x9fb4c9d4, 0x1e91acf3, 0x468f05db, 0xc7aa60fc, + 0xf6b2578b, 0x779732ac, 0x2f899b84, 0xaeacfea3, 0x32d28a57, + 0xb3f7ef70, 0xebe94658, 0x6acc237f, 0x5bd41408, 0xdaf1712f, + 0x82efd807, 0x03cabd20, 0xe0dfb6e9, 0x61fad3ce, 0x39e47ae6, + 0xb8c11fc1, 0x89d928b6, 0x08fc4d91, 0x50e2e4b9, 0xd1c7819e, + 0xb36f0b10, 0x324a6e37, 0x6a54c71f, 0xeb71a238, 0xda69954f, + 0x5b4cf068, 0x03525940, 0x82773c67, 0x616237ae, 0xe0475289, + 0xb859fba1, 0x397c9e86, 0x0864a9f1, 0x8941ccd6, 0xd15f65fe, + 0x507a00d9, 0xcc04742d, 0x4d21110a, 0x153fb822, 0x941add05, + 0xa502ea72, 0x24278f55, 0x7c39267d, 0xfd1c435a, 0x1e094893, + 0x9f2c2db4, 0xc732849c, 0x4617e1bb, 0x770fd6cc, 0xf62ab3eb, + 0xae341ac3, 0x2f117fe4, 0x6b650fdf, 0xea406af8, 0xb25ec3d0, + 0x337ba6f7, 0x02639180, 0x8346f4a7, 0xdb585d8f, 0x5a7d38a8, + 0xb9683361, 0x384d5646, 0x6053ff6e, 0xe1769a49, 0xd06ead3e, + 0x514bc819, 0x09556131, 0x88700416, 0x140e70e2, 0x952b15c5, + 0xcd35bced, 0x4c10d9ca, 0x7d08eebd, 0xfc2d8b9a, 0xa43322b2, + 0x25164795, 0xc6034c5c, 0x4726297b, 0x1f388053, 0x9e1de574, + 0xaf05d203, 0x2e20b724, 0x763e1e0c, 0xf71b7b2b, 0x95b3f1a5, + 0x14969482, 0x4c883daa, 0xcdad588d, 0xfcb56ffa, 0x7d900add, + 0x258ea3f5, 0xa4abc6d2, 0x47becd1b, 0xc69ba83c, 0x9e850114, + 0x1fa06433, 0x2eb85344, 0xaf9d3663, 0xf7839f4b, 0x76a6fa6c, + 0xead88e98, 0x6bfdebbf, 0x33e34297, 0xb2c627b0, 0x83de10c7, + 0x02fb75e0, 0x5ae5dcc8, 0xdbc0b9ef, 0x38d5b226, 0xb9f0d701, + 0xe1ee7e29, 0x60cb1b0e, 0x51d32c79, 0xd0f6495e, 0x88e8e076, + 0x09cd8551}, + {0x00000000, 0x9b73ead4, 0xed96d3e9, 0x76e5393d, 0x005ca193, + 0x9b2f4b47, 0xedca727a, 0x76b998ae, 0x00b94326, 0x9bcaa9f2, + 0xed2f90cf, 0x765c7a1b, 0x00e5e2b5, 0x9b960861, 0xed73315c, + 0x7600db88, 0x0172864c, 0x9a016c98, 0xece455a5, 0x7797bf71, + 0x012e27df, 0x9a5dcd0b, 0xecb8f436, 0x77cb1ee2, 0x01cbc56a, + 0x9ab82fbe, 0xec5d1683, 0x772efc57, 0x019764f9, 0x9ae48e2d, + 0xec01b710, 0x77725dc4, 0x02e50c98, 0x9996e64c, 0xef73df71, + 0x740035a5, 0x02b9ad0b, 0x99ca47df, 0xef2f7ee2, 0x745c9436, + 0x025c4fbe, 0x992fa56a, 0xefca9c57, 0x74b97683, 0x0200ee2d, + 0x997304f9, 0xef963dc4, 0x74e5d710, 0x03978ad4, 0x98e46000, + 0xee01593d, 0x7572b3e9, 0x03cb2b47, 0x98b8c193, 0xee5df8ae, + 0x752e127a, 0x032ec9f2, 0x985d2326, 0xeeb81a1b, 0x75cbf0cf, + 0x03726861, 0x980182b5, 0xeee4bb88, 0x7597515c, 0x05ca1930, + 0x9eb9f3e4, 0xe85ccad9, 0x732f200d, 0x0596b8a3, 0x9ee55277, + 0xe8006b4a, 0x7373819e, 0x05735a16, 0x9e00b0c2, 0xe8e589ff, + 0x7396632b, 0x052ffb85, 0x9e5c1151, 0xe8b9286c, 0x73cac2b8, + 0x04b89f7c, 0x9fcb75a8, 0xe92e4c95, 0x725da641, 0x04e43eef, + 0x9f97d43b, 0xe972ed06, 0x720107d2, 0x0401dc5a, 0x9f72368e, + 0xe9970fb3, 0x72e4e567, 0x045d7dc9, 0x9f2e971d, 0xe9cbae20, + 0x72b844f4, 0x072f15a8, 0x9c5cff7c, 0xeab9c641, 0x71ca2c95, + 0x0773b43b, 0x9c005eef, 0xeae567d2, 0x71968d06, 0x0796568e, + 0x9ce5bc5a, 0xea008567, 0x71736fb3, 0x07caf71d, 0x9cb91dc9, + 0xea5c24f4, 0x712fce20, 0x065d93e4, 0x9d2e7930, 0xebcb400d, + 0x70b8aad9, 0x06013277, 0x9d72d8a3, 0xeb97e19e, 0x70e40b4a, + 0x06e4d0c2, 0x9d973a16, 0xeb72032b, 0x7001e9ff, 0x06b87151, + 0x9dcb9b85, 0xeb2ea2b8, 0x705d486c, 0x0b943260, 0x90e7d8b4, + 0xe602e189, 0x7d710b5d, 0x0bc893f3, 0x90bb7927, 0xe65e401a, + 0x7d2daace, 0x0b2d7146, 0x905e9b92, 0xe6bba2af, 0x7dc8487b, + 0x0b71d0d5, 0x90023a01, 0xe6e7033c, 0x7d94e9e8, 0x0ae6b42c, + 0x91955ef8, 0xe77067c5, 0x7c038d11, 0x0aba15bf, 0x91c9ff6b, + 0xe72cc656, 0x7c5f2c82, 0x0a5ff70a, 0x912c1dde, 0xe7c924e3, + 0x7cbace37, 0x0a035699, 0x9170bc4d, 0xe7958570, 0x7ce66fa4, + 0x09713ef8, 0x9202d42c, 0xe4e7ed11, 0x7f9407c5, 0x092d9f6b, + 0x925e75bf, 0xe4bb4c82, 0x7fc8a656, 0x09c87dde, 0x92bb970a, + 0xe45eae37, 0x7f2d44e3, 0x0994dc4d, 0x92e73699, 0xe4020fa4, + 0x7f71e570, 0x0803b8b4, 0x93705260, 0xe5956b5d, 0x7ee68189, + 0x085f1927, 0x932cf3f3, 0xe5c9cace, 0x7eba201a, 0x08bafb92, + 0x93c91146, 0xe52c287b, 0x7e5fc2af, 0x08e65a01, 0x9395b0d5, + 0xe57089e8, 0x7e03633c, 0x0e5e2b50, 0x952dc184, 0xe3c8f8b9, + 0x78bb126d, 0x0e028ac3, 0x95716017, 0xe394592a, 0x78e7b3fe, + 0x0ee76876, 0x959482a2, 0xe371bb9f, 0x7802514b, 0x0ebbc9e5, + 0x95c82331, 0xe32d1a0c, 0x785ef0d8, 0x0f2cad1c, 0x945f47c8, + 0xe2ba7ef5, 0x79c99421, 0x0f700c8f, 0x9403e65b, 0xe2e6df66, + 0x799535b2, 0x0f95ee3a, 0x94e604ee, 0xe2033dd3, 0x7970d707, + 0x0fc94fa9, 0x94baa57d, 0xe25f9c40, 0x792c7694, 0x0cbb27c8, + 0x97c8cd1c, 0xe12df421, 0x7a5e1ef5, 0x0ce7865b, 0x97946c8f, + 0xe17155b2, 0x7a02bf66, 0x0c0264ee, 0x97718e3a, 0xe194b707, + 0x7ae75dd3, 0x0c5ec57d, 0x972d2fa9, 0xe1c81694, 0x7abbfc40, + 0x0dc9a184, 0x96ba4b50, 0xe05f726d, 0x7b2c98b9, 0x0d950017, + 0x96e6eac3, 0xe003d3fe, 0x7b70392a, 0x0d70e2a2, 0x96030876, + 0xe0e6314b, 0x7b95db9f, 0x0d2c4331, 0x965fa9e5, 0xe0ba90d8, + 0x7bc97a0c}, + {0x00000000, 0x172864c0, 0x2e50c980, 0x3978ad40, 0x5ca19300, + 0x4b89f7c0, 0x72f15a80, 0x65d93e40, 0xb9432600, 0xae6b42c0, + 0x9713ef80, 0x803b8b40, 0xe5e2b500, 0xf2cad1c0, 0xcbb27c80, + 0xdc9a1840, 0xa9f74a41, 0xbedf2e81, 0x87a783c1, 0x908fe701, + 0xf556d941, 0xe27ebd81, 0xdb0610c1, 0xcc2e7401, 0x10b46c41, + 0x079c0881, 0x3ee4a5c1, 0x29ccc101, 0x4c15ff41, 0x5b3d9b81, + 0x624536c1, 0x756d5201, 0x889f92c3, 0x9fb7f603, 0xa6cf5b43, + 0xb1e73f83, 0xd43e01c3, 0xc3166503, 0xfa6ec843, 0xed46ac83, + 0x31dcb4c3, 0x26f4d003, 0x1f8c7d43, 0x08a41983, 0x6d7d27c3, + 0x7a554303, 0x432dee43, 0x54058a83, 0x2168d882, 0x3640bc42, + 0x0f381102, 0x181075c2, 0x7dc94b82, 0x6ae12f42, 0x53998202, + 0x44b1e6c2, 0x982bfe82, 0x8f039a42, 0xb67b3702, 0xa15353c2, + 0xc48a6d82, 0xd3a20942, 0xeadaa402, 0xfdf2c0c2, 0xca4e23c7, + 0xdd664707, 0xe41eea47, 0xf3368e87, 0x96efb0c7, 0x81c7d407, + 0xb8bf7947, 0xaf971d87, 0x730d05c7, 0x64256107, 0x5d5dcc47, + 0x4a75a887, 0x2fac96c7, 0x3884f207, 0x01fc5f47, 0x16d43b87, + 0x63b96986, 0x74910d46, 0x4de9a006, 0x5ac1c4c6, 0x3f18fa86, + 0x28309e46, 0x11483306, 0x066057c6, 0xdafa4f86, 0xcdd22b46, + 0xf4aa8606, 0xe382e2c6, 0x865bdc86, 0x9173b846, 0xa80b1506, + 0xbf2371c6, 0x42d1b104, 0x55f9d5c4, 0x6c817884, 0x7ba91c44, + 0x1e702204, 0x095846c4, 0x3020eb84, 0x27088f44, 0xfb929704, + 0xecbaf3c4, 0xd5c25e84, 0xc2ea3a44, 0xa7330404, 0xb01b60c4, + 0x8963cd84, 0x9e4ba944, 0xeb26fb45, 0xfc0e9f85, 0xc57632c5, + 0xd25e5605, 0xb7876845, 0xa0af0c85, 0x99d7a1c5, 0x8effc505, + 0x5265dd45, 0x454db985, 0x7c3514c5, 0x6b1d7005, 0x0ec44e45, + 0x19ec2a85, 0x209487c5, 0x37bce305, 0x4fed41cf, 0x58c5250f, + 0x61bd884f, 0x7695ec8f, 0x134cd2cf, 0x0464b60f, 0x3d1c1b4f, + 0x2a347f8f, 0xf6ae67cf, 0xe186030f, 0xd8feae4f, 0xcfd6ca8f, + 0xaa0ff4cf, 0xbd27900f, 0x845f3d4f, 0x9377598f, 0xe61a0b8e, + 0xf1326f4e, 0xc84ac20e, 0xdf62a6ce, 0xbabb988e, 0xad93fc4e, + 0x94eb510e, 0x83c335ce, 0x5f592d8e, 0x4871494e, 0x7109e40e, + 0x662180ce, 0x03f8be8e, 0x14d0da4e, 0x2da8770e, 0x3a8013ce, + 0xc772d30c, 0xd05ab7cc, 0xe9221a8c, 0xfe0a7e4c, 0x9bd3400c, + 0x8cfb24cc, 0xb583898c, 0xa2abed4c, 0x7e31f50c, 0x691991cc, + 0x50613c8c, 0x4749584c, 0x2290660c, 0x35b802cc, 0x0cc0af8c, + 0x1be8cb4c, 0x6e85994d, 0x79adfd8d, 0x40d550cd, 0x57fd340d, + 0x32240a4d, 0x250c6e8d, 0x1c74c3cd, 0x0b5ca70d, 0xd7c6bf4d, + 0xc0eedb8d, 0xf99676cd, 0xeebe120d, 0x8b672c4d, 0x9c4f488d, + 0xa537e5cd, 0xb21f810d, 0x85a36208, 0x928b06c8, 0xabf3ab88, + 0xbcdbcf48, 0xd902f108, 0xce2a95c8, 0xf7523888, 0xe07a5c48, + 0x3ce04408, 0x2bc820c8, 0x12b08d88, 0x0598e948, 0x6041d708, + 0x7769b3c8, 0x4e111e88, 0x59397a48, 0x2c542849, 0x3b7c4c89, + 0x0204e1c9, 0x152c8509, 0x70f5bb49, 0x67dddf89, 0x5ea572c9, + 0x498d1609, 0x95170e49, 0x823f6a89, 0xbb47c7c9, 0xac6fa309, + 0xc9b69d49, 0xde9ef989, 0xe7e654c9, 0xf0ce3009, 0x0d3cf0cb, + 0x1a14940b, 0x236c394b, 0x34445d8b, 0x519d63cb, 0x46b5070b, + 0x7fcdaa4b, 0x68e5ce8b, 0xb47fd6cb, 0xa357b20b, 0x9a2f1f4b, + 0x8d077b8b, 0xe8de45cb, 0xfff6210b, 0xc68e8c4b, 0xd1a6e88b, + 0xa4cbba8a, 0xb3e3de4a, 0x8a9b730a, 0x9db317ca, 0xf86a298a, + 0xef424d4a, 0xd63ae00a, 0xc11284ca, 0x1d889c8a, 0x0aa0f84a, + 0x33d8550a, 0x24f031ca, 0x41290f8a, 0x56016b4a, 0x6f79c60a, + 0x7851a2ca}, + {0x00000000, 0x9fda839e, 0xe4c4017d, 0x7b1e82e3, 0x12f904bb, + 0x8d238725, 0xf63d05c6, 0x69e78658, 0x25f20976, 0xba288ae8, + 0xc136080b, 0x5eec8b95, 0x370b0dcd, 0xa8d18e53, 0xd3cf0cb0, + 0x4c158f2e, 0x4be412ec, 0xd43e9172, 0xaf201391, 0x30fa900f, + 0x591d1657, 0xc6c795c9, 0xbdd9172a, 0x220394b4, 0x6e161b9a, + 0xf1cc9804, 0x8ad21ae7, 0x15089979, 0x7cef1f21, 0xe3359cbf, + 0x982b1e5c, 0x07f19dc2, 0x97c825d8, 0x0812a646, 0x730c24a5, + 0xecd6a73b, 0x85312163, 0x1aeba2fd, 0x61f5201e, 0xfe2fa380, + 0xb23a2cae, 0x2de0af30, 0x56fe2dd3, 0xc924ae4d, 0xa0c32815, + 0x3f19ab8b, 0x44072968, 0xdbddaaf6, 0xdc2c3734, 0x43f6b4aa, + 0x38e83649, 0xa732b5d7, 0xced5338f, 0x510fb011, 0x2a1132f2, + 0xb5cbb16c, 0xf9de3e42, 0x6604bddc, 0x1d1a3f3f, 0x82c0bca1, + 0xeb273af9, 0x74fdb967, 0x0fe33b84, 0x9039b81a, 0xf4e14df1, + 0x6b3bce6f, 0x10254c8c, 0x8fffcf12, 0xe618494a, 0x79c2cad4, + 0x02dc4837, 0x9d06cba9, 0xd1134487, 0x4ec9c719, 0x35d745fa, + 0xaa0dc664, 0xc3ea403c, 0x5c30c3a2, 0x272e4141, 0xb8f4c2df, + 0xbf055f1d, 0x20dfdc83, 0x5bc15e60, 0xc41bddfe, 0xadfc5ba6, + 0x3226d838, 0x49385adb, 0xd6e2d945, 0x9af7566b, 0x052dd5f5, + 0x7e335716, 0xe1e9d488, 0x880e52d0, 0x17d4d14e, 0x6cca53ad, + 0xf310d033, 0x63296829, 0xfcf3ebb7, 0x87ed6954, 0x1837eaca, + 0x71d06c92, 0xee0aef0c, 0x95146def, 0x0aceee71, 0x46db615f, + 0xd901e2c1, 0xa21f6022, 0x3dc5e3bc, 0x542265e4, 0xcbf8e67a, + 0xb0e66499, 0x2f3ce707, 0x28cd7ac5, 0xb717f95b, 0xcc097bb8, + 0x53d3f826, 0x3a347e7e, 0xa5eefde0, 0xdef07f03, 0x412afc9d, + 0x0d3f73b3, 0x92e5f02d, 0xe9fb72ce, 0x7621f150, 0x1fc67708, + 0x801cf496, 0xfb027675, 0x64d8f5eb, 0x32b39da3, 0xad691e3d, + 0xd6779cde, 0x49ad1f40, 0x204a9918, 0xbf901a86, 0xc48e9865, + 0x5b541bfb, 0x174194d5, 0x889b174b, 0xf38595a8, 0x6c5f1636, + 0x05b8906e, 0x9a6213f0, 0xe17c9113, 0x7ea6128d, 0x79578f4f, + 0xe68d0cd1, 0x9d938e32, 0x02490dac, 0x6bae8bf4, 0xf474086a, + 0x8f6a8a89, 0x10b00917, 0x5ca58639, 0xc37f05a7, 0xb8618744, + 0x27bb04da, 0x4e5c8282, 0xd186011c, 0xaa9883ff, 0x35420061, + 0xa57bb87b, 0x3aa13be5, 0x41bfb906, 0xde653a98, 0xb782bcc0, + 0x28583f5e, 0x5346bdbd, 0xcc9c3e23, 0x8089b10d, 0x1f533293, + 0x644db070, 0xfb9733ee, 0x9270b5b6, 0x0daa3628, 0x76b4b4cb, + 0xe96e3755, 0xee9faa97, 0x71452909, 0x0a5babea, 0x95812874, + 0xfc66ae2c, 0x63bc2db2, 0x18a2af51, 0x87782ccf, 0xcb6da3e1, + 0x54b7207f, 0x2fa9a29c, 0xb0732102, 0xd994a75a, 0x464e24c4, + 0x3d50a627, 0xa28a25b9, 0xc652d052, 0x598853cc, 0x2296d12f, + 0xbd4c52b1, 0xd4abd4e9, 0x4b715777, 0x306fd594, 0xafb5560a, + 0xe3a0d924, 0x7c7a5aba, 0x0764d859, 0x98be5bc7, 0xf159dd9f, + 0x6e835e01, 0x159ddce2, 0x8a475f7c, 0x8db6c2be, 0x126c4120, + 0x6972c3c3, 0xf6a8405d, 0x9f4fc605, 0x0095459b, 0x7b8bc778, + 0xe45144e6, 0xa844cbc8, 0x379e4856, 0x4c80cab5, 0xd35a492b, + 0xbabdcf73, 0x25674ced, 0x5e79ce0e, 0xc1a34d90, 0x519af58a, + 0xce407614, 0xb55ef4f7, 0x2a847769, 0x4363f131, 0xdcb972af, + 0xa7a7f04c, 0x387d73d2, 0x7468fcfc, 0xebb27f62, 0x90acfd81, + 0x0f767e1f, 0x6691f847, 0xf94b7bd9, 0x8255f93a, 0x1d8f7aa4, + 0x1a7ee766, 0x85a464f8, 0xfebae61b, 0x61606585, 0x0887e3dd, + 0x975d6043, 0xec43e2a0, 0x7399613e, 0x3f8cee10, 0xa0566d8e, + 0xdb48ef6d, 0x44926cf3, 0x2d75eaab, 0xb2af6935, 0xc9b1ebd6, + 0x566b6848}, + {0x00000000, 0x65673b46, 0xcace768c, 0xafa94dca, 0x4eedeb59, + 0x2b8ad01f, 0x84239dd5, 0xe144a693, 0x9ddbd6b2, 0xf8bcedf4, + 0x5715a03e, 0x32729b78, 0xd3363deb, 0xb65106ad, 0x19f84b67, + 0x7c9f7021, 0xe0c6ab25, 0x85a19063, 0x2a08dda9, 0x4f6fe6ef, + 0xae2b407c, 0xcb4c7b3a, 0x64e536f0, 0x01820db6, 0x7d1d7d97, + 0x187a46d1, 0xb7d30b1b, 0xd2b4305d, 0x33f096ce, 0x5697ad88, + 0xf93ee042, 0x9c59db04, 0x1afc500b, 0x7f9b6b4d, 0xd0322687, + 0xb5551dc1, 0x5411bb52, 0x31768014, 0x9edfcdde, 0xfbb8f698, + 0x872786b9, 0xe240bdff, 0x4de9f035, 0x288ecb73, 0xc9ca6de0, + 0xacad56a6, 0x03041b6c, 0x6663202a, 0xfa3afb2e, 0x9f5dc068, + 0x30f48da2, 0x5593b6e4, 0xb4d71077, 0xd1b02b31, 0x7e1966fb, + 0x1b7e5dbd, 0x67e12d9c, 0x028616da, 0xad2f5b10, 0xc8486056, + 0x290cc6c5, 0x4c6bfd83, 0xe3c2b049, 0x86a58b0f, 0x35f8a016, + 0x509f9b50, 0xff36d69a, 0x9a51eddc, 0x7b154b4f, 0x1e727009, + 0xb1db3dc3, 0xd4bc0685, 0xa82376a4, 0xcd444de2, 0x62ed0028, + 0x078a3b6e, 0xe6ce9dfd, 0x83a9a6bb, 0x2c00eb71, 0x4967d037, + 0xd53e0b33, 0xb0593075, 0x1ff07dbf, 0x7a9746f9, 0x9bd3e06a, + 0xfeb4db2c, 0x511d96e6, 0x347aada0, 0x48e5dd81, 0x2d82e6c7, + 0x822bab0d, 0xe74c904b, 0x060836d8, 0x636f0d9e, 0xccc64054, + 0xa9a17b12, 0x2f04f01d, 0x4a63cb5b, 0xe5ca8691, 0x80adbdd7, + 0x61e91b44, 0x048e2002, 0xab276dc8, 0xce40568e, 0xb2df26af, + 0xd7b81de9, 0x78115023, 0x1d766b65, 0xfc32cdf6, 0x9955f6b0, + 0x36fcbb7a, 0x539b803c, 0xcfc25b38, 0xaaa5607e, 0x050c2db4, + 0x606b16f2, 0x812fb061, 0xe4488b27, 0x4be1c6ed, 0x2e86fdab, + 0x52198d8a, 0x377eb6cc, 0x98d7fb06, 0xfdb0c040, 0x1cf466d3, + 0x79935d95, 0xd63a105f, 0xb35d2b19, 0x6bf1402c, 0x0e967b6a, + 0xa13f36a0, 0xc4580de6, 0x251cab75, 0x407b9033, 0xefd2ddf9, + 0x8ab5e6bf, 0xf62a969e, 0x934dadd8, 0x3ce4e012, 0x5983db54, + 0xb8c77dc7, 0xdda04681, 0x72090b4b, 0x176e300d, 0x8b37eb09, + 0xee50d04f, 0x41f99d85, 0x249ea6c3, 0xc5da0050, 0xa0bd3b16, + 0x0f1476dc, 0x6a734d9a, 0x16ec3dbb, 0x738b06fd, 0xdc224b37, + 0xb9457071, 0x5801d6e2, 0x3d66eda4, 0x92cfa06e, 0xf7a89b28, + 0x710d1027, 0x146a2b61, 0xbbc366ab, 0xdea45ded, 0x3fe0fb7e, + 0x5a87c038, 0xf52e8df2, 0x9049b6b4, 0xecd6c695, 0x89b1fdd3, + 0x2618b019, 0x437f8b5f, 0xa23b2dcc, 0xc75c168a, 0x68f55b40, + 0x0d926006, 0x91cbbb02, 0xf4ac8044, 0x5b05cd8e, 0x3e62f6c8, + 0xdf26505b, 0xba416b1d, 0x15e826d7, 0x708f1d91, 0x0c106db0, + 0x697756f6, 0xc6de1b3c, 0xa3b9207a, 0x42fd86e9, 0x279abdaf, + 0x8833f065, 0xed54cb23, 0x5e09e03a, 0x3b6edb7c, 0x94c796b6, + 0xf1a0adf0, 0x10e40b63, 0x75833025, 0xda2a7def, 0xbf4d46a9, + 0xc3d23688, 0xa6b50dce, 0x091c4004, 0x6c7b7b42, 0x8d3fddd1, + 0xe858e697, 0x47f1ab5d, 0x2296901b, 0xbecf4b1f, 0xdba87059, + 0x74013d93, 0x116606d5, 0xf022a046, 0x95459b00, 0x3aecd6ca, + 0x5f8bed8c, 0x23149dad, 0x4673a6eb, 0xe9daeb21, 0x8cbdd067, + 0x6df976f4, 0x089e4db2, 0xa7370078, 0xc2503b3e, 0x44f5b031, + 0x21928b77, 0x8e3bc6bd, 0xeb5cfdfb, 0x0a185b68, 0x6f7f602e, + 0xc0d62de4, 0xa5b116a2, 0xd92e6683, 0xbc495dc5, 0x13e0100f, + 0x76872b49, 0x97c38dda, 0xf2a4b69c, 0x5d0dfb56, 0x386ac010, + 0xa4331b14, 0xc1542052, 0x6efd6d98, 0x0b9a56de, 0xeadef04d, + 0x8fb9cb0b, 0x201086c1, 0x4577bd87, 0x39e8cda6, 0x5c8ff6e0, + 0xf326bb2a, 0x9641806c, 0x770526ff, 0x12621db9, 0xbdcb5073, + 0xd8ac6b35}, + {0x00000000, 0xd7e28058, 0x74b406f1, 0xa35686a9, 0xe9680de2, + 0x3e8a8dba, 0x9ddc0b13, 0x4a3e8b4b, 0x09a11d85, 0xde439ddd, + 0x7d151b74, 0xaaf79b2c, 0xe0c91067, 0x372b903f, 0x947d1696, + 0x439f96ce, 0x13423b0a, 0xc4a0bb52, 0x67f63dfb, 0xb014bda3, + 0xfa2a36e8, 0x2dc8b6b0, 0x8e9e3019, 0x597cb041, 0x1ae3268f, + 0xcd01a6d7, 0x6e57207e, 0xb9b5a026, 0xf38b2b6d, 0x2469ab35, + 0x873f2d9c, 0x50ddadc4, 0x26847614, 0xf166f64c, 0x523070e5, + 0x85d2f0bd, 0xcfec7bf6, 0x180efbae, 0xbb587d07, 0x6cbafd5f, + 0x2f256b91, 0xf8c7ebc9, 0x5b916d60, 0x8c73ed38, 0xc64d6673, + 0x11afe62b, 0xb2f96082, 0x651be0da, 0x35c64d1e, 0xe224cd46, + 0x41724bef, 0x9690cbb7, 0xdcae40fc, 0x0b4cc0a4, 0xa81a460d, + 0x7ff8c655, 0x3c67509b, 0xeb85d0c3, 0x48d3566a, 0x9f31d632, + 0xd50f5d79, 0x02eddd21, 0xa1bb5b88, 0x7659dbd0, 0x4d08ec28, + 0x9aea6c70, 0x39bcead9, 0xee5e6a81, 0xa460e1ca, 0x73826192, + 0xd0d4e73b, 0x07366763, 0x44a9f1ad, 0x934b71f5, 0x301df75c, + 0xe7ff7704, 0xadc1fc4f, 0x7a237c17, 0xd975fabe, 0x0e977ae6, + 0x5e4ad722, 0x89a8577a, 0x2afed1d3, 0xfd1c518b, 0xb722dac0, + 0x60c05a98, 0xc396dc31, 0x14745c69, 0x57ebcaa7, 0x80094aff, + 0x235fcc56, 0xf4bd4c0e, 0xbe83c745, 0x6961471d, 0xca37c1b4, + 0x1dd541ec, 0x6b8c9a3c, 0xbc6e1a64, 0x1f389ccd, 0xc8da1c95, + 0x82e497de, 0x55061786, 0xf650912f, 0x21b21177, 0x622d87b9, + 0xb5cf07e1, 0x16998148, 0xc17b0110, 0x8b458a5b, 0x5ca70a03, + 0xfff18caa, 0x28130cf2, 0x78cea136, 0xaf2c216e, 0x0c7aa7c7, + 0xdb98279f, 0x91a6acd4, 0x46442c8c, 0xe512aa25, 0x32f02a7d, + 0x716fbcb3, 0xa68d3ceb, 0x05dbba42, 0xd2393a1a, 0x9807b151, + 0x4fe53109, 0xecb3b7a0, 0x3b5137f8, 0x9a11d850, 0x4df35808, + 0xeea5dea1, 0x39475ef9, 0x7379d5b2, 0xa49b55ea, 0x07cdd343, + 0xd02f531b, 0x93b0c5d5, 0x4452458d, 0xe704c324, 0x30e6437c, + 0x7ad8c837, 0xad3a486f, 0x0e6ccec6, 0xd98e4e9e, 0x8953e35a, + 0x5eb16302, 0xfde7e5ab, 0x2a0565f3, 0x603beeb8, 0xb7d96ee0, + 0x148fe849, 0xc36d6811, 0x80f2fedf, 0x57107e87, 0xf446f82e, + 0x23a47876, 0x699af33d, 0xbe787365, 0x1d2ef5cc, 0xcacc7594, + 0xbc95ae44, 0x6b772e1c, 0xc821a8b5, 0x1fc328ed, 0x55fda3a6, + 0x821f23fe, 0x2149a557, 0xf6ab250f, 0xb534b3c1, 0x62d63399, + 0xc180b530, 0x16623568, 0x5c5cbe23, 0x8bbe3e7b, 0x28e8b8d2, + 0xff0a388a, 0xafd7954e, 0x78351516, 0xdb6393bf, 0x0c8113e7, + 0x46bf98ac, 0x915d18f4, 0x320b9e5d, 0xe5e91e05, 0xa67688cb, + 0x71940893, 0xd2c28e3a, 0x05200e62, 0x4f1e8529, 0x98fc0571, + 0x3baa83d8, 0xec480380, 0xd7193478, 0x00fbb420, 0xa3ad3289, + 0x744fb2d1, 0x3e71399a, 0xe993b9c2, 0x4ac53f6b, 0x9d27bf33, + 0xdeb829fd, 0x095aa9a5, 0xaa0c2f0c, 0x7deeaf54, 0x37d0241f, + 0xe032a447, 0x436422ee, 0x9486a2b6, 0xc45b0f72, 0x13b98f2a, + 0xb0ef0983, 0x670d89db, 0x2d330290, 0xfad182c8, 0x59870461, + 0x8e658439, 0xcdfa12f7, 0x1a1892af, 0xb94e1406, 0x6eac945e, + 0x24921f15, 0xf3709f4d, 0x502619e4, 0x87c499bc, 0xf19d426c, + 0x267fc234, 0x8529449d, 0x52cbc4c5, 0x18f54f8e, 0xcf17cfd6, + 0x6c41497f, 0xbba3c927, 0xf83c5fe9, 0x2fdedfb1, 0x8c885918, + 0x5b6ad940, 0x1154520b, 0xc6b6d253, 0x65e054fa, 0xb202d4a2, + 0xe2df7966, 0x353df93e, 0x966b7f97, 0x4189ffcf, 0x0bb77484, + 0xdc55f4dc, 0x7f037275, 0xa8e1f22d, 0xeb7e64e3, 0x3c9ce4bb, + 0x9fca6212, 0x4828e24a, 0x02166901, 0xd5f4e959, 0x76a26ff0, + 0xa140efa8}, + {0x00000000, 0xef52b6e1, 0x05d46b83, 0xea86dd62, 0x0ba8d706, + 0xe4fa61e7, 0x0e7cbc85, 0xe12e0a64, 0x1751ae0c, 0xf80318ed, + 0x1285c58f, 0xfdd7736e, 0x1cf9790a, 0xf3abcfeb, 0x192d1289, + 0xf67fa468, 0x2ea35c18, 0xc1f1eaf9, 0x2b77379b, 0xc425817a, + 0x250b8b1e, 0xca593dff, 0x20dfe09d, 0xcf8d567c, 0x39f2f214, + 0xd6a044f5, 0x3c269997, 0xd3742f76, 0x325a2512, 0xdd0893f3, + 0x378e4e91, 0xd8dcf870, 0x5d46b830, 0xb2140ed1, 0x5892d3b3, + 0xb7c06552, 0x56ee6f36, 0xb9bcd9d7, 0x533a04b5, 0xbc68b254, + 0x4a17163c, 0xa545a0dd, 0x4fc37dbf, 0xa091cb5e, 0x41bfc13a, + 0xaeed77db, 0x446baab9, 0xab391c58, 0x73e5e428, 0x9cb752c9, + 0x76318fab, 0x9963394a, 0x784d332e, 0x971f85cf, 0x7d9958ad, + 0x92cbee4c, 0x64b44a24, 0x8be6fcc5, 0x616021a7, 0x8e329746, + 0x6f1c9d22, 0x804e2bc3, 0x6ac8f6a1, 0x859a4040, 0xba8d7060, + 0x55dfc681, 0xbf591be3, 0x500bad02, 0xb125a766, 0x5e771187, + 0xb4f1cce5, 0x5ba37a04, 0xaddcde6c, 0x428e688d, 0xa808b5ef, + 0x475a030e, 0xa674096a, 0x4926bf8b, 0xa3a062e9, 0x4cf2d408, + 0x942e2c78, 0x7b7c9a99, 0x91fa47fb, 0x7ea8f11a, 0x9f86fb7e, + 0x70d44d9f, 0x9a5290fd, 0x7500261c, 0x837f8274, 0x6c2d3495, + 0x86abe9f7, 0x69f95f16, 0x88d75572, 0x6785e393, 0x8d033ef1, + 0x62518810, 0xe7cbc850, 0x08997eb1, 0xe21fa3d3, 0x0d4d1532, + 0xec631f56, 0x0331a9b7, 0xe9b774d5, 0x06e5c234, 0xf09a665c, + 0x1fc8d0bd, 0xf54e0ddf, 0x1a1cbb3e, 0xfb32b15a, 0x146007bb, + 0xfee6dad9, 0x11b46c38, 0xc9689448, 0x263a22a9, 0xccbcffcb, + 0x23ee492a, 0xc2c0434e, 0x2d92f5af, 0xc71428cd, 0x28469e2c, + 0xde393a44, 0x316b8ca5, 0xdbed51c7, 0x34bfe726, 0xd591ed42, + 0x3ac35ba3, 0xd04586c1, 0x3f173020, 0xae6be681, 0x41395060, + 0xabbf8d02, 0x44ed3be3, 0xa5c33187, 0x4a918766, 0xa0175a04, + 0x4f45ece5, 0xb93a488d, 0x5668fe6c, 0xbcee230e, 0x53bc95ef, + 0xb2929f8b, 0x5dc0296a, 0xb746f408, 0x581442e9, 0x80c8ba99, + 0x6f9a0c78, 0x851cd11a, 0x6a4e67fb, 0x8b606d9f, 0x6432db7e, + 0x8eb4061c, 0x61e6b0fd, 0x97991495, 0x78cba274, 0x924d7f16, + 0x7d1fc9f7, 0x9c31c393, 0x73637572, 0x99e5a810, 0x76b71ef1, + 0xf32d5eb1, 0x1c7fe850, 0xf6f93532, 0x19ab83d3, 0xf88589b7, + 0x17d73f56, 0xfd51e234, 0x120354d5, 0xe47cf0bd, 0x0b2e465c, + 0xe1a89b3e, 0x0efa2ddf, 0xefd427bb, 0x0086915a, 0xea004c38, + 0x0552fad9, 0xdd8e02a9, 0x32dcb448, 0xd85a692a, 0x3708dfcb, + 0xd626d5af, 0x3974634e, 0xd3f2be2c, 0x3ca008cd, 0xcadfaca5, + 0x258d1a44, 0xcf0bc726, 0x205971c7, 0xc1777ba3, 0x2e25cd42, + 0xc4a31020, 0x2bf1a6c1, 0x14e696e1, 0xfbb42000, 0x1132fd62, + 0xfe604b83, 0x1f4e41e7, 0xf01cf706, 0x1a9a2a64, 0xf5c89c85, + 0x03b738ed, 0xece58e0c, 0x0663536e, 0xe931e58f, 0x081fefeb, + 0xe74d590a, 0x0dcb8468, 0xe2993289, 0x3a45caf9, 0xd5177c18, + 0x3f91a17a, 0xd0c3179b, 0x31ed1dff, 0xdebfab1e, 0x3439767c, + 0xdb6bc09d, 0x2d1464f5, 0xc246d214, 0x28c00f76, 0xc792b997, + 0x26bcb3f3, 0xc9ee0512, 0x2368d870, 0xcc3a6e91, 0x49a02ed1, + 0xa6f29830, 0x4c744552, 0xa326f3b3, 0x4208f9d7, 0xad5a4f36, + 0x47dc9254, 0xa88e24b5, 0x5ef180dd, 0xb1a3363c, 0x5b25eb5e, + 0xb4775dbf, 0x555957db, 0xba0be13a, 0x508d3c58, 0xbfdf8ab9, + 0x670372c9, 0x8851c428, 0x62d7194a, 0x8d85afab, 0x6caba5cf, + 0x83f9132e, 0x697fce4c, 0x862d78ad, 0x7052dcc5, 0x9f006a24, + 0x7586b746, 0x9ad401a7, 0x7bfa0bc3, 0x94a8bd22, 0x7e2e6040, + 0x917cd6a1}, + {0x00000000, 0x87a6cb43, 0xd43c90c7, 0x539a5b84, 0x730827cf, + 0xf4aeec8c, 0xa734b708, 0x20927c4b, 0xe6104f9e, 0x61b684dd, + 0x322cdf59, 0xb58a141a, 0x95186851, 0x12bea312, 0x4124f896, + 0xc68233d5, 0x1751997d, 0x90f7523e, 0xc36d09ba, 0x44cbc2f9, + 0x6459beb2, 0xe3ff75f1, 0xb0652e75, 0x37c3e536, 0xf141d6e3, + 0x76e71da0, 0x257d4624, 0xa2db8d67, 0x8249f12c, 0x05ef3a6f, + 0x567561eb, 0xd1d3aaa8, 0x2ea332fa, 0xa905f9b9, 0xfa9fa23d, + 0x7d39697e, 0x5dab1535, 0xda0dde76, 0x899785f2, 0x0e314eb1, + 0xc8b37d64, 0x4f15b627, 0x1c8feda3, 0x9b2926e0, 0xbbbb5aab, + 0x3c1d91e8, 0x6f87ca6c, 0xe821012f, 0x39f2ab87, 0xbe5460c4, + 0xedce3b40, 0x6a68f003, 0x4afa8c48, 0xcd5c470b, 0x9ec61c8f, + 0x1960d7cc, 0xdfe2e419, 0x58442f5a, 0x0bde74de, 0x8c78bf9d, + 0xaceac3d6, 0x2b4c0895, 0x78d65311, 0xff709852, 0x5d4665f4, + 0xdae0aeb7, 0x897af533, 0x0edc3e70, 0x2e4e423b, 0xa9e88978, + 0xfa72d2fc, 0x7dd419bf, 0xbb562a6a, 0x3cf0e129, 0x6f6abaad, + 0xe8cc71ee, 0xc85e0da5, 0x4ff8c6e6, 0x1c629d62, 0x9bc45621, + 0x4a17fc89, 0xcdb137ca, 0x9e2b6c4e, 0x198da70d, 0x391fdb46, + 0xbeb91005, 0xed234b81, 0x6a8580c2, 0xac07b317, 0x2ba17854, + 0x783b23d0, 0xff9de893, 0xdf0f94d8, 0x58a95f9b, 0x0b33041f, + 0x8c95cf5c, 0x73e5570e, 0xf4439c4d, 0xa7d9c7c9, 0x207f0c8a, + 0x00ed70c1, 0x874bbb82, 0xd4d1e006, 0x53772b45, 0x95f51890, + 0x1253d3d3, 0x41c98857, 0xc66f4314, 0xe6fd3f5f, 0x615bf41c, + 0x32c1af98, 0xb56764db, 0x64b4ce73, 0xe3120530, 0xb0885eb4, + 0x372e95f7, 0x17bce9bc, 0x901a22ff, 0xc380797b, 0x4426b238, + 0x82a481ed, 0x05024aae, 0x5698112a, 0xd13eda69, 0xf1aca622, + 0x760a6d61, 0x259036e5, 0xa236fda6, 0xba8ccbe8, 0x3d2a00ab, + 0x6eb05b2f, 0xe916906c, 0xc984ec27, 0x4e222764, 0x1db87ce0, + 0x9a1eb7a3, 0x5c9c8476, 0xdb3a4f35, 0x88a014b1, 0x0f06dff2, + 0x2f94a3b9, 0xa83268fa, 0xfba8337e, 0x7c0ef83d, 0xaddd5295, + 0x2a7b99d6, 0x79e1c252, 0xfe470911, 0xded5755a, 0x5973be19, + 0x0ae9e59d, 0x8d4f2ede, 0x4bcd1d0b, 0xcc6bd648, 0x9ff18dcc, + 0x1857468f, 0x38c53ac4, 0xbf63f187, 0xecf9aa03, 0x6b5f6140, + 0x942ff912, 0x13893251, 0x401369d5, 0xc7b5a296, 0xe727dedd, + 0x6081159e, 0x331b4e1a, 0xb4bd8559, 0x723fb68c, 0xf5997dcf, + 0xa603264b, 0x21a5ed08, 0x01379143, 0x86915a00, 0xd50b0184, + 0x52adcac7, 0x837e606f, 0x04d8ab2c, 0x5742f0a8, 0xd0e43beb, + 0xf07647a0, 0x77d08ce3, 0x244ad767, 0xa3ec1c24, 0x656e2ff1, + 0xe2c8e4b2, 0xb152bf36, 0x36f47475, 0x1666083e, 0x91c0c37d, + 0xc25a98f9, 0x45fc53ba, 0xe7caae1c, 0x606c655f, 0x33f63edb, + 0xb450f598, 0x94c289d3, 0x13644290, 0x40fe1914, 0xc758d257, + 0x01dae182, 0x867c2ac1, 0xd5e67145, 0x5240ba06, 0x72d2c64d, + 0xf5740d0e, 0xa6ee568a, 0x21489dc9, 0xf09b3761, 0x773dfc22, + 0x24a7a7a6, 0xa3016ce5, 0x839310ae, 0x0435dbed, 0x57af8069, + 0xd0094b2a, 0x168b78ff, 0x912db3bc, 0xc2b7e838, 0x4511237b, + 0x65835f30, 0xe2259473, 0xb1bfcff7, 0x361904b4, 0xc9699ce6, + 0x4ecf57a5, 0x1d550c21, 0x9af3c762, 0xba61bb29, 0x3dc7706a, + 0x6e5d2bee, 0xe9fbe0ad, 0x2f79d378, 0xa8df183b, 0xfb4543bf, + 0x7ce388fc, 0x5c71f4b7, 0xdbd73ff4, 0x884d6470, 0x0febaf33, + 0xde38059b, 0x599eced8, 0x0a04955c, 0x8da25e1f, 0xad302254, + 0x2a96e917, 0x790cb293, 0xfeaa79d0, 0x38284a05, 0xbf8e8146, + 0xec14dac2, 0x6bb21181, 0x4b206dca, 0xcc86a689, 0x9f1cfd0d, + 0x18ba364e}}; + +local const z_word_t FAR crc_braid_big_table[][256] = { + {0x0000000000000000, 0x43cba68700000000, 0xc7903cd400000000, + 0x845b9a5300000000, 0xcf27087300000000, 0x8cecaef400000000, + 0x08b734a700000000, 0x4b7c922000000000, 0x9e4f10e600000000, + 0xdd84b66100000000, 0x59df2c3200000000, 0x1a148ab500000000, + 0x5168189500000000, 0x12a3be1200000000, 0x96f8244100000000, + 0xd53382c600000000, 0x7d99511700000000, 0x3e52f79000000000, + 0xba096dc300000000, 0xf9c2cb4400000000, 0xb2be596400000000, + 0xf175ffe300000000, 0x752e65b000000000, 0x36e5c33700000000, + 0xe3d641f100000000, 0xa01de77600000000, 0x24467d2500000000, + 0x678ddba200000000, 0x2cf1498200000000, 0x6f3aef0500000000, + 0xeb61755600000000, 0xa8aad3d100000000, 0xfa32a32e00000000, + 0xb9f905a900000000, 0x3da29ffa00000000, 0x7e69397d00000000, + 0x3515ab5d00000000, 0x76de0dda00000000, 0xf285978900000000, + 0xb14e310e00000000, 0x647db3c800000000, 0x27b6154f00000000, + 0xa3ed8f1c00000000, 0xe026299b00000000, 0xab5abbbb00000000, + 0xe8911d3c00000000, 0x6cca876f00000000, 0x2f0121e800000000, + 0x87abf23900000000, 0xc46054be00000000, 0x403bceed00000000, + 0x03f0686a00000000, 0x488cfa4a00000000, 0x0b475ccd00000000, + 0x8f1cc69e00000000, 0xccd7601900000000, 0x19e4e2df00000000, + 0x5a2f445800000000, 0xde74de0b00000000, 0x9dbf788c00000000, + 0xd6c3eaac00000000, 0x95084c2b00000000, 0x1153d67800000000, + 0x529870ff00000000, 0xf465465d00000000, 0xb7aee0da00000000, + 0x33f57a8900000000, 0x703edc0e00000000, 0x3b424e2e00000000, + 0x7889e8a900000000, 0xfcd272fa00000000, 0xbf19d47d00000000, + 0x6a2a56bb00000000, 0x29e1f03c00000000, 0xadba6a6f00000000, + 0xee71cce800000000, 0xa50d5ec800000000, 0xe6c6f84f00000000, + 0x629d621c00000000, 0x2156c49b00000000, 0x89fc174a00000000, + 0xca37b1cd00000000, 0x4e6c2b9e00000000, 0x0da78d1900000000, + 0x46db1f3900000000, 0x0510b9be00000000, 0x814b23ed00000000, + 0xc280856a00000000, 0x17b307ac00000000, 0x5478a12b00000000, + 0xd0233b7800000000, 0x93e89dff00000000, 0xd8940fdf00000000, + 0x9b5fa95800000000, 0x1f04330b00000000, 0x5ccf958c00000000, + 0x0e57e57300000000, 0x4d9c43f400000000, 0xc9c7d9a700000000, + 0x8a0c7f2000000000, 0xc170ed0000000000, 0x82bb4b8700000000, + 0x06e0d1d400000000, 0x452b775300000000, 0x9018f59500000000, + 0xd3d3531200000000, 0x5788c94100000000, 0x14436fc600000000, + 0x5f3ffde600000000, 0x1cf45b6100000000, 0x98afc13200000000, + 0xdb6467b500000000, 0x73ceb46400000000, 0x300512e300000000, + 0xb45e88b000000000, 0xf7952e3700000000, 0xbce9bc1700000000, + 0xff221a9000000000, 0x7b7980c300000000, 0x38b2264400000000, + 0xed81a48200000000, 0xae4a020500000000, 0x2a11985600000000, + 0x69da3ed100000000, 0x22a6acf100000000, 0x616d0a7600000000, + 0xe536902500000000, 0xa6fd36a200000000, 0xe8cb8cba00000000, + 0xab002a3d00000000, 0x2f5bb06e00000000, 0x6c9016e900000000, + 0x27ec84c900000000, 0x6427224e00000000, 0xe07cb81d00000000, + 0xa3b71e9a00000000, 0x76849c5c00000000, 0x354f3adb00000000, + 0xb114a08800000000, 0xf2df060f00000000, 0xb9a3942f00000000, + 0xfa6832a800000000, 0x7e33a8fb00000000, 0x3df80e7c00000000, + 0x9552ddad00000000, 0xd6997b2a00000000, 0x52c2e17900000000, + 0x110947fe00000000, 0x5a75d5de00000000, 0x19be735900000000, + 0x9de5e90a00000000, 0xde2e4f8d00000000, 0x0b1dcd4b00000000, + 0x48d66bcc00000000, 0xcc8df19f00000000, 0x8f46571800000000, + 0xc43ac53800000000, 0x87f163bf00000000, 0x03aaf9ec00000000, + 0x40615f6b00000000, 0x12f92f9400000000, 0x5132891300000000, + 0xd569134000000000, 0x96a2b5c700000000, 0xddde27e700000000, + 0x9e15816000000000, 0x1a4e1b3300000000, 0x5985bdb400000000, + 0x8cb63f7200000000, 0xcf7d99f500000000, 0x4b2603a600000000, + 0x08eda52100000000, 0x4391370100000000, 0x005a918600000000, + 0x84010bd500000000, 0xc7caad5200000000, 0x6f607e8300000000, + 0x2cabd80400000000, 0xa8f0425700000000, 0xeb3be4d000000000, + 0xa04776f000000000, 0xe38cd07700000000, 0x67d74a2400000000, + 0x241ceca300000000, 0xf12f6e6500000000, 0xb2e4c8e200000000, + 0x36bf52b100000000, 0x7574f43600000000, 0x3e08661600000000, + 0x7dc3c09100000000, 0xf9985ac200000000, 0xba53fc4500000000, + 0x1caecae700000000, 0x5f656c6000000000, 0xdb3ef63300000000, + 0x98f550b400000000, 0xd389c29400000000, 0x9042641300000000, + 0x1419fe4000000000, 0x57d258c700000000, 0x82e1da0100000000, + 0xc12a7c8600000000, 0x4571e6d500000000, 0x06ba405200000000, + 0x4dc6d27200000000, 0x0e0d74f500000000, 0x8a56eea600000000, + 0xc99d482100000000, 0x61379bf000000000, 0x22fc3d7700000000, + 0xa6a7a72400000000, 0xe56c01a300000000, 0xae10938300000000, + 0xeddb350400000000, 0x6980af5700000000, 0x2a4b09d000000000, + 0xff788b1600000000, 0xbcb32d9100000000, 0x38e8b7c200000000, + 0x7b23114500000000, 0x305f836500000000, 0x739425e200000000, + 0xf7cfbfb100000000, 0xb404193600000000, 0xe69c69c900000000, + 0xa557cf4e00000000, 0x210c551d00000000, 0x62c7f39a00000000, + 0x29bb61ba00000000, 0x6a70c73d00000000, 0xee2b5d6e00000000, + 0xade0fbe900000000, 0x78d3792f00000000, 0x3b18dfa800000000, + 0xbf4345fb00000000, 0xfc88e37c00000000, 0xb7f4715c00000000, + 0xf43fd7db00000000, 0x70644d8800000000, 0x33afeb0f00000000, + 0x9b0538de00000000, 0xd8ce9e5900000000, 0x5c95040a00000000, + 0x1f5ea28d00000000, 0x542230ad00000000, 0x17e9962a00000000, + 0x93b20c7900000000, 0xd079aafe00000000, 0x054a283800000000, + 0x46818ebf00000000, 0xc2da14ec00000000, 0x8111b26b00000000, + 0xca6d204b00000000, 0x89a686cc00000000, 0x0dfd1c9f00000000, + 0x4e36ba1800000000}, + {0x0000000000000000, 0xe1b652ef00000000, 0x836bd40500000000, + 0x62dd86ea00000000, 0x06d7a80b00000000, 0xe761fae400000000, + 0x85bc7c0e00000000, 0x640a2ee100000000, 0x0cae511700000000, + 0xed1803f800000000, 0x8fc5851200000000, 0x6e73d7fd00000000, + 0x0a79f91c00000000, 0xebcfabf300000000, 0x89122d1900000000, + 0x68a47ff600000000, 0x185ca32e00000000, 0xf9eaf1c100000000, + 0x9b37772b00000000, 0x7a8125c400000000, 0x1e8b0b2500000000, + 0xff3d59ca00000000, 0x9de0df2000000000, 0x7c568dcf00000000, + 0x14f2f23900000000, 0xf544a0d600000000, 0x9799263c00000000, + 0x762f74d300000000, 0x12255a3200000000, 0xf39308dd00000000, + 0x914e8e3700000000, 0x70f8dcd800000000, 0x30b8465d00000000, + 0xd10e14b200000000, 0xb3d3925800000000, 0x5265c0b700000000, + 0x366fee5600000000, 0xd7d9bcb900000000, 0xb5043a5300000000, + 0x54b268bc00000000, 0x3c16174a00000000, 0xdda045a500000000, + 0xbf7dc34f00000000, 0x5ecb91a000000000, 0x3ac1bf4100000000, + 0xdb77edae00000000, 0xb9aa6b4400000000, 0x581c39ab00000000, + 0x28e4e57300000000, 0xc952b79c00000000, 0xab8f317600000000, + 0x4a39639900000000, 0x2e334d7800000000, 0xcf851f9700000000, + 0xad58997d00000000, 0x4ceecb9200000000, 0x244ab46400000000, + 0xc5fce68b00000000, 0xa721606100000000, 0x4697328e00000000, + 0x229d1c6f00000000, 0xc32b4e8000000000, 0xa1f6c86a00000000, + 0x40409a8500000000, 0x60708dba00000000, 0x81c6df5500000000, + 0xe31b59bf00000000, 0x02ad0b5000000000, 0x66a725b100000000, + 0x8711775e00000000, 0xe5ccf1b400000000, 0x047aa35b00000000, + 0x6cdedcad00000000, 0x8d688e4200000000, 0xefb508a800000000, + 0x0e035a4700000000, 0x6a0974a600000000, 0x8bbf264900000000, + 0xe962a0a300000000, 0x08d4f24c00000000, 0x782c2e9400000000, + 0x999a7c7b00000000, 0xfb47fa9100000000, 0x1af1a87e00000000, + 0x7efb869f00000000, 0x9f4dd47000000000, 0xfd90529a00000000, + 0x1c26007500000000, 0x74827f8300000000, 0x95342d6c00000000, + 0xf7e9ab8600000000, 0x165ff96900000000, 0x7255d78800000000, + 0x93e3856700000000, 0xf13e038d00000000, 0x1088516200000000, + 0x50c8cbe700000000, 0xb17e990800000000, 0xd3a31fe200000000, + 0x32154d0d00000000, 0x561f63ec00000000, 0xb7a9310300000000, + 0xd574b7e900000000, 0x34c2e50600000000, 0x5c669af000000000, + 0xbdd0c81f00000000, 0xdf0d4ef500000000, 0x3ebb1c1a00000000, + 0x5ab132fb00000000, 0xbb07601400000000, 0xd9dae6fe00000000, + 0x386cb41100000000, 0x489468c900000000, 0xa9223a2600000000, + 0xcbffbccc00000000, 0x2a49ee2300000000, 0x4e43c0c200000000, + 0xaff5922d00000000, 0xcd2814c700000000, 0x2c9e462800000000, + 0x443a39de00000000, 0xa58c6b3100000000, 0xc751eddb00000000, + 0x26e7bf3400000000, 0x42ed91d500000000, 0xa35bc33a00000000, + 0xc18645d000000000, 0x2030173f00000000, 0x81e66bae00000000, + 0x6050394100000000, 0x028dbfab00000000, 0xe33bed4400000000, + 0x8731c3a500000000, 0x6687914a00000000, 0x045a17a000000000, + 0xe5ec454f00000000, 0x8d483ab900000000, 0x6cfe685600000000, + 0x0e23eebc00000000, 0xef95bc5300000000, 0x8b9f92b200000000, + 0x6a29c05d00000000, 0x08f446b700000000, 0xe942145800000000, + 0x99bac88000000000, 0x780c9a6f00000000, 0x1ad11c8500000000, + 0xfb674e6a00000000, 0x9f6d608b00000000, 0x7edb326400000000, + 0x1c06b48e00000000, 0xfdb0e66100000000, 0x9514999700000000, + 0x74a2cb7800000000, 0x167f4d9200000000, 0xf7c91f7d00000000, + 0x93c3319c00000000, 0x7275637300000000, 0x10a8e59900000000, + 0xf11eb77600000000, 0xb15e2df300000000, 0x50e87f1c00000000, + 0x3235f9f600000000, 0xd383ab1900000000, 0xb78985f800000000, + 0x563fd71700000000, 0x34e251fd00000000, 0xd554031200000000, + 0xbdf07ce400000000, 0x5c462e0b00000000, 0x3e9ba8e100000000, + 0xdf2dfa0e00000000, 0xbb27d4ef00000000, 0x5a91860000000000, + 0x384c00ea00000000, 0xd9fa520500000000, 0xa9028edd00000000, + 0x48b4dc3200000000, 0x2a695ad800000000, 0xcbdf083700000000, + 0xafd526d600000000, 0x4e63743900000000, 0x2cbef2d300000000, + 0xcd08a03c00000000, 0xa5acdfca00000000, 0x441a8d2500000000, + 0x26c70bcf00000000, 0xc771592000000000, 0xa37b77c100000000, + 0x42cd252e00000000, 0x2010a3c400000000, 0xc1a6f12b00000000, + 0xe196e61400000000, 0x0020b4fb00000000, 0x62fd321100000000, + 0x834b60fe00000000, 0xe7414e1f00000000, 0x06f71cf000000000, + 0x642a9a1a00000000, 0x859cc8f500000000, 0xed38b70300000000, + 0x0c8ee5ec00000000, 0x6e53630600000000, 0x8fe531e900000000, + 0xebef1f0800000000, 0x0a594de700000000, 0x6884cb0d00000000, + 0x893299e200000000, 0xf9ca453a00000000, 0x187c17d500000000, + 0x7aa1913f00000000, 0x9b17c3d000000000, 0xff1ded3100000000, + 0x1eabbfde00000000, 0x7c76393400000000, 0x9dc06bdb00000000, + 0xf564142d00000000, 0x14d246c200000000, 0x760fc02800000000, + 0x97b992c700000000, 0xf3b3bc2600000000, 0x1205eec900000000, + 0x70d8682300000000, 0x916e3acc00000000, 0xd12ea04900000000, + 0x3098f2a600000000, 0x5245744c00000000, 0xb3f326a300000000, + 0xd7f9084200000000, 0x364f5aad00000000, 0x5492dc4700000000, + 0xb5248ea800000000, 0xdd80f15e00000000, 0x3c36a3b100000000, + 0x5eeb255b00000000, 0xbf5d77b400000000, 0xdb57595500000000, + 0x3ae10bba00000000, 0x583c8d5000000000, 0xb98adfbf00000000, + 0xc972036700000000, 0x28c4518800000000, 0x4a19d76200000000, + 0xabaf858d00000000, 0xcfa5ab6c00000000, 0x2e13f98300000000, + 0x4cce7f6900000000, 0xad782d8600000000, 0xc5dc527000000000, + 0x246a009f00000000, 0x46b7867500000000, 0xa701d49a00000000, + 0xc30bfa7b00000000, 0x22bda89400000000, 0x40602e7e00000000, + 0xa1d67c9100000000}, + {0x0000000000000000, 0x5880e2d700000000, 0xf106b47400000000, + 0xa98656a300000000, 0xe20d68e900000000, 0xba8d8a3e00000000, + 0x130bdc9d00000000, 0x4b8b3e4a00000000, 0x851da10900000000, + 0xdd9d43de00000000, 0x741b157d00000000, 0x2c9bf7aa00000000, + 0x6710c9e000000000, 0x3f902b3700000000, 0x96167d9400000000, + 0xce969f4300000000, 0x0a3b421300000000, 0x52bba0c400000000, + 0xfb3df66700000000, 0xa3bd14b000000000, 0xe8362afa00000000, + 0xb0b6c82d00000000, 0x19309e8e00000000, 0x41b07c5900000000, + 0x8f26e31a00000000, 0xd7a601cd00000000, 0x7e20576e00000000, + 0x26a0b5b900000000, 0x6d2b8bf300000000, 0x35ab692400000000, + 0x9c2d3f8700000000, 0xc4addd5000000000, 0x1476842600000000, + 0x4cf666f100000000, 0xe570305200000000, 0xbdf0d28500000000, + 0xf67beccf00000000, 0xaefb0e1800000000, 0x077d58bb00000000, + 0x5ffdba6c00000000, 0x916b252f00000000, 0xc9ebc7f800000000, + 0x606d915b00000000, 0x38ed738c00000000, 0x73664dc600000000, + 0x2be6af1100000000, 0x8260f9b200000000, 0xdae01b6500000000, + 0x1e4dc63500000000, 0x46cd24e200000000, 0xef4b724100000000, + 0xb7cb909600000000, 0xfc40aedc00000000, 0xa4c04c0b00000000, + 0x0d461aa800000000, 0x55c6f87f00000000, 0x9b50673c00000000, + 0xc3d085eb00000000, 0x6a56d34800000000, 0x32d6319f00000000, + 0x795d0fd500000000, 0x21dded0200000000, 0x885bbba100000000, + 0xd0db597600000000, 0x28ec084d00000000, 0x706cea9a00000000, + 0xd9eabc3900000000, 0x816a5eee00000000, 0xcae160a400000000, + 0x9261827300000000, 0x3be7d4d000000000, 0x6367360700000000, + 0xadf1a94400000000, 0xf5714b9300000000, 0x5cf71d3000000000, + 0x0477ffe700000000, 0x4ffcc1ad00000000, 0x177c237a00000000, + 0xbefa75d900000000, 0xe67a970e00000000, 0x22d74a5e00000000, + 0x7a57a88900000000, 0xd3d1fe2a00000000, 0x8b511cfd00000000, + 0xc0da22b700000000, 0x985ac06000000000, 0x31dc96c300000000, + 0x695c741400000000, 0xa7caeb5700000000, 0xff4a098000000000, + 0x56cc5f2300000000, 0x0e4cbdf400000000, 0x45c783be00000000, + 0x1d47616900000000, 0xb4c137ca00000000, 0xec41d51d00000000, + 0x3c9a8c6b00000000, 0x641a6ebc00000000, 0xcd9c381f00000000, + 0x951cdac800000000, 0xde97e48200000000, 0x8617065500000000, + 0x2f9150f600000000, 0x7711b22100000000, 0xb9872d6200000000, + 0xe107cfb500000000, 0x4881991600000000, 0x10017bc100000000, + 0x5b8a458b00000000, 0x030aa75c00000000, 0xaa8cf1ff00000000, + 0xf20c132800000000, 0x36a1ce7800000000, 0x6e212caf00000000, + 0xc7a77a0c00000000, 0x9f2798db00000000, 0xd4aca69100000000, + 0x8c2c444600000000, 0x25aa12e500000000, 0x7d2af03200000000, + 0xb3bc6f7100000000, 0xeb3c8da600000000, 0x42badb0500000000, + 0x1a3a39d200000000, 0x51b1079800000000, 0x0931e54f00000000, + 0xa0b7b3ec00000000, 0xf837513b00000000, 0x50d8119a00000000, + 0x0858f34d00000000, 0xa1dea5ee00000000, 0xf95e473900000000, + 0xb2d5797300000000, 0xea559ba400000000, 0x43d3cd0700000000, + 0x1b532fd000000000, 0xd5c5b09300000000, 0x8d45524400000000, + 0x24c304e700000000, 0x7c43e63000000000, 0x37c8d87a00000000, + 0x6f483aad00000000, 0xc6ce6c0e00000000, 0x9e4e8ed900000000, + 0x5ae3538900000000, 0x0263b15e00000000, 0xabe5e7fd00000000, + 0xf365052a00000000, 0xb8ee3b6000000000, 0xe06ed9b700000000, + 0x49e88f1400000000, 0x11686dc300000000, 0xdffef28000000000, + 0x877e105700000000, 0x2ef846f400000000, 0x7678a42300000000, + 0x3df39a6900000000, 0x657378be00000000, 0xccf52e1d00000000, + 0x9475ccca00000000, 0x44ae95bc00000000, 0x1c2e776b00000000, + 0xb5a821c800000000, 0xed28c31f00000000, 0xa6a3fd5500000000, + 0xfe231f8200000000, 0x57a5492100000000, 0x0f25abf600000000, + 0xc1b334b500000000, 0x9933d66200000000, 0x30b580c100000000, + 0x6835621600000000, 0x23be5c5c00000000, 0x7b3ebe8b00000000, + 0xd2b8e82800000000, 0x8a380aff00000000, 0x4e95d7af00000000, + 0x1615357800000000, 0xbf9363db00000000, 0xe713810c00000000, + 0xac98bf4600000000, 0xf4185d9100000000, 0x5d9e0b3200000000, + 0x051ee9e500000000, 0xcb8876a600000000, 0x9308947100000000, + 0x3a8ec2d200000000, 0x620e200500000000, 0x29851e4f00000000, + 0x7105fc9800000000, 0xd883aa3b00000000, 0x800348ec00000000, + 0x783419d700000000, 0x20b4fb0000000000, 0x8932ada300000000, + 0xd1b24f7400000000, 0x9a39713e00000000, 0xc2b993e900000000, + 0x6b3fc54a00000000, 0x33bf279d00000000, 0xfd29b8de00000000, + 0xa5a95a0900000000, 0x0c2f0caa00000000, 0x54afee7d00000000, + 0x1f24d03700000000, 0x47a432e000000000, 0xee22644300000000, + 0xb6a2869400000000, 0x720f5bc400000000, 0x2a8fb91300000000, + 0x8309efb000000000, 0xdb890d6700000000, 0x9002332d00000000, + 0xc882d1fa00000000, 0x6104875900000000, 0x3984658e00000000, + 0xf712facd00000000, 0xaf92181a00000000, 0x06144eb900000000, + 0x5e94ac6e00000000, 0x151f922400000000, 0x4d9f70f300000000, + 0xe419265000000000, 0xbc99c48700000000, 0x6c429df100000000, + 0x34c27f2600000000, 0x9d44298500000000, 0xc5c4cb5200000000, + 0x8e4ff51800000000, 0xd6cf17cf00000000, 0x7f49416c00000000, + 0x27c9a3bb00000000, 0xe95f3cf800000000, 0xb1dfde2f00000000, + 0x1859888c00000000, 0x40d96a5b00000000, 0x0b52541100000000, + 0x53d2b6c600000000, 0xfa54e06500000000, 0xa2d402b200000000, + 0x6679dfe200000000, 0x3ef93d3500000000, 0x977f6b9600000000, + 0xcfff894100000000, 0x8474b70b00000000, 0xdcf455dc00000000, + 0x7572037f00000000, 0x2df2e1a800000000, 0xe3647eeb00000000, + 0xbbe49c3c00000000, 0x1262ca9f00000000, 0x4ae2284800000000, + 0x0169160200000000, 0x59e9f4d500000000, 0xf06fa27600000000, + 0xa8ef40a100000000}, + {0x0000000000000000, 0x463b676500000000, 0x8c76ceca00000000, + 0xca4da9af00000000, 0x59ebed4e00000000, 0x1fd08a2b00000000, + 0xd59d238400000000, 0x93a644e100000000, 0xb2d6db9d00000000, + 0xf4edbcf800000000, 0x3ea0155700000000, 0x789b723200000000, + 0xeb3d36d300000000, 0xad0651b600000000, 0x674bf81900000000, + 0x21709f7c00000000, 0x25abc6e000000000, 0x6390a18500000000, + 0xa9dd082a00000000, 0xefe66f4f00000000, 0x7c402bae00000000, + 0x3a7b4ccb00000000, 0xf036e56400000000, 0xb60d820100000000, + 0x977d1d7d00000000, 0xd1467a1800000000, 0x1b0bd3b700000000, + 0x5d30b4d200000000, 0xce96f03300000000, 0x88ad975600000000, + 0x42e03ef900000000, 0x04db599c00000000, 0x0b50fc1a00000000, + 0x4d6b9b7f00000000, 0x872632d000000000, 0xc11d55b500000000, + 0x52bb115400000000, 0x1480763100000000, 0xdecddf9e00000000, + 0x98f6b8fb00000000, 0xb986278700000000, 0xffbd40e200000000, + 0x35f0e94d00000000, 0x73cb8e2800000000, 0xe06dcac900000000, + 0xa656adac00000000, 0x6c1b040300000000, 0x2a20636600000000, + 0x2efb3afa00000000, 0x68c05d9f00000000, 0xa28df43000000000, + 0xe4b6935500000000, 0x7710d7b400000000, 0x312bb0d100000000, + 0xfb66197e00000000, 0xbd5d7e1b00000000, 0x9c2de16700000000, + 0xda16860200000000, 0x105b2fad00000000, 0x566048c800000000, + 0xc5c60c2900000000, 0x83fd6b4c00000000, 0x49b0c2e300000000, + 0x0f8ba58600000000, 0x16a0f83500000000, 0x509b9f5000000000, + 0x9ad636ff00000000, 0xdced519a00000000, 0x4f4b157b00000000, + 0x0970721e00000000, 0xc33ddbb100000000, 0x8506bcd400000000, + 0xa47623a800000000, 0xe24d44cd00000000, 0x2800ed6200000000, + 0x6e3b8a0700000000, 0xfd9dcee600000000, 0xbba6a98300000000, + 0x71eb002c00000000, 0x37d0674900000000, 0x330b3ed500000000, + 0x753059b000000000, 0xbf7df01f00000000, 0xf946977a00000000, + 0x6ae0d39b00000000, 0x2cdbb4fe00000000, 0xe6961d5100000000, + 0xa0ad7a3400000000, 0x81dde54800000000, 0xc7e6822d00000000, + 0x0dab2b8200000000, 0x4b904ce700000000, 0xd836080600000000, + 0x9e0d6f6300000000, 0x5440c6cc00000000, 0x127ba1a900000000, + 0x1df0042f00000000, 0x5bcb634a00000000, 0x9186cae500000000, + 0xd7bdad8000000000, 0x441be96100000000, 0x02208e0400000000, + 0xc86d27ab00000000, 0x8e5640ce00000000, 0xaf26dfb200000000, + 0xe91db8d700000000, 0x2350117800000000, 0x656b761d00000000, + 0xf6cd32fc00000000, 0xb0f6559900000000, 0x7abbfc3600000000, + 0x3c809b5300000000, 0x385bc2cf00000000, 0x7e60a5aa00000000, + 0xb42d0c0500000000, 0xf2166b6000000000, 0x61b02f8100000000, + 0x278b48e400000000, 0xedc6e14b00000000, 0xabfd862e00000000, + 0x8a8d195200000000, 0xccb67e3700000000, 0x06fbd79800000000, + 0x40c0b0fd00000000, 0xd366f41c00000000, 0x955d937900000000, + 0x5f103ad600000000, 0x192b5db300000000, 0x2c40f16b00000000, + 0x6a7b960e00000000, 0xa0363fa100000000, 0xe60d58c400000000, + 0x75ab1c2500000000, 0x33907b4000000000, 0xf9ddd2ef00000000, + 0xbfe6b58a00000000, 0x9e962af600000000, 0xd8ad4d9300000000, + 0x12e0e43c00000000, 0x54db835900000000, 0xc77dc7b800000000, + 0x8146a0dd00000000, 0x4b0b097200000000, 0x0d306e1700000000, + 0x09eb378b00000000, 0x4fd050ee00000000, 0x859df94100000000, + 0xc3a69e2400000000, 0x5000dac500000000, 0x163bbda000000000, + 0xdc76140f00000000, 0x9a4d736a00000000, 0xbb3dec1600000000, + 0xfd068b7300000000, 0x374b22dc00000000, 0x717045b900000000, + 0xe2d6015800000000, 0xa4ed663d00000000, 0x6ea0cf9200000000, + 0x289ba8f700000000, 0x27100d7100000000, 0x612b6a1400000000, + 0xab66c3bb00000000, 0xed5da4de00000000, 0x7efbe03f00000000, + 0x38c0875a00000000, 0xf28d2ef500000000, 0xb4b6499000000000, + 0x95c6d6ec00000000, 0xd3fdb18900000000, 0x19b0182600000000, + 0x5f8b7f4300000000, 0xcc2d3ba200000000, 0x8a165cc700000000, + 0x405bf56800000000, 0x0660920d00000000, 0x02bbcb9100000000, + 0x4480acf400000000, 0x8ecd055b00000000, 0xc8f6623e00000000, + 0x5b5026df00000000, 0x1d6b41ba00000000, 0xd726e81500000000, + 0x911d8f7000000000, 0xb06d100c00000000, 0xf656776900000000, + 0x3c1bdec600000000, 0x7a20b9a300000000, 0xe986fd4200000000, + 0xafbd9a2700000000, 0x65f0338800000000, 0x23cb54ed00000000, + 0x3ae0095e00000000, 0x7cdb6e3b00000000, 0xb696c79400000000, + 0xf0ada0f100000000, 0x630be41000000000, 0x2530837500000000, + 0xef7d2ada00000000, 0xa9464dbf00000000, 0x8836d2c300000000, + 0xce0db5a600000000, 0x04401c0900000000, 0x427b7b6c00000000, + 0xd1dd3f8d00000000, 0x97e658e800000000, 0x5dabf14700000000, + 0x1b90962200000000, 0x1f4bcfbe00000000, 0x5970a8db00000000, + 0x933d017400000000, 0xd506661100000000, 0x46a022f000000000, + 0x009b459500000000, 0xcad6ec3a00000000, 0x8ced8b5f00000000, + 0xad9d142300000000, 0xeba6734600000000, 0x21ebdae900000000, + 0x67d0bd8c00000000, 0xf476f96d00000000, 0xb24d9e0800000000, + 0x780037a700000000, 0x3e3b50c200000000, 0x31b0f54400000000, + 0x778b922100000000, 0xbdc63b8e00000000, 0xfbfd5ceb00000000, + 0x685b180a00000000, 0x2e607f6f00000000, 0xe42dd6c000000000, + 0xa216b1a500000000, 0x83662ed900000000, 0xc55d49bc00000000, + 0x0f10e01300000000, 0x492b877600000000, 0xda8dc39700000000, + 0x9cb6a4f200000000, 0x56fb0d5d00000000, 0x10c06a3800000000, + 0x141b33a400000000, 0x522054c100000000, 0x986dfd6e00000000, + 0xde569a0b00000000, 0x4df0deea00000000, 0x0bcbb98f00000000, + 0xc186102000000000, 0x87bd774500000000, 0xa6cde83900000000, + 0xe0f68f5c00000000, 0x2abb26f300000000, 0x6c80419600000000, + 0xff26057700000000, 0xb91d621200000000, 0x7350cbbd00000000, + 0x356bacd800000000}, + {0x0000000000000000, 0x9e83da9f00000000, 0x7d01c4e400000000, + 0xe3821e7b00000000, 0xbb04f91200000000, 0x2587238d00000000, + 0xc6053df600000000, 0x5886e76900000000, 0x7609f22500000000, + 0xe88a28ba00000000, 0x0b0836c100000000, 0x958bec5e00000000, + 0xcd0d0b3700000000, 0x538ed1a800000000, 0xb00ccfd300000000, + 0x2e8f154c00000000, 0xec12e44b00000000, 0x72913ed400000000, + 0x911320af00000000, 0x0f90fa3000000000, 0x57161d5900000000, + 0xc995c7c600000000, 0x2a17d9bd00000000, 0xb494032200000000, + 0x9a1b166e00000000, 0x0498ccf100000000, 0xe71ad28a00000000, + 0x7999081500000000, 0x211fef7c00000000, 0xbf9c35e300000000, + 0x5c1e2b9800000000, 0xc29df10700000000, 0xd825c89700000000, + 0x46a6120800000000, 0xa5240c7300000000, 0x3ba7d6ec00000000, + 0x6321318500000000, 0xfda2eb1a00000000, 0x1e20f56100000000, + 0x80a32ffe00000000, 0xae2c3ab200000000, 0x30afe02d00000000, + 0xd32dfe5600000000, 0x4dae24c900000000, 0x1528c3a000000000, + 0x8bab193f00000000, 0x6829074400000000, 0xf6aadddb00000000, + 0x34372cdc00000000, 0xaab4f64300000000, 0x4936e83800000000, + 0xd7b532a700000000, 0x8f33d5ce00000000, 0x11b00f5100000000, + 0xf232112a00000000, 0x6cb1cbb500000000, 0x423edef900000000, + 0xdcbd046600000000, 0x3f3f1a1d00000000, 0xa1bcc08200000000, + 0xf93a27eb00000000, 0x67b9fd7400000000, 0x843be30f00000000, + 0x1ab8399000000000, 0xf14de1f400000000, 0x6fce3b6b00000000, + 0x8c4c251000000000, 0x12cfff8f00000000, 0x4a4918e600000000, + 0xd4cac27900000000, 0x3748dc0200000000, 0xa9cb069d00000000, + 0x874413d100000000, 0x19c7c94e00000000, 0xfa45d73500000000, + 0x64c60daa00000000, 0x3c40eac300000000, 0xa2c3305c00000000, + 0x41412e2700000000, 0xdfc2f4b800000000, 0x1d5f05bf00000000, + 0x83dcdf2000000000, 0x605ec15b00000000, 0xfedd1bc400000000, + 0xa65bfcad00000000, 0x38d8263200000000, 0xdb5a384900000000, + 0x45d9e2d600000000, 0x6b56f79a00000000, 0xf5d52d0500000000, + 0x1657337e00000000, 0x88d4e9e100000000, 0xd0520e8800000000, + 0x4ed1d41700000000, 0xad53ca6c00000000, 0x33d010f300000000, + 0x2968296300000000, 0xb7ebf3fc00000000, 0x5469ed8700000000, + 0xcaea371800000000, 0x926cd07100000000, 0x0cef0aee00000000, + 0xef6d149500000000, 0x71eece0a00000000, 0x5f61db4600000000, + 0xc1e201d900000000, 0x22601fa200000000, 0xbce3c53d00000000, + 0xe465225400000000, 0x7ae6f8cb00000000, 0x9964e6b000000000, + 0x07e73c2f00000000, 0xc57acd2800000000, 0x5bf917b700000000, + 0xb87b09cc00000000, 0x26f8d35300000000, 0x7e7e343a00000000, + 0xe0fdeea500000000, 0x037ff0de00000000, 0x9dfc2a4100000000, + 0xb3733f0d00000000, 0x2df0e59200000000, 0xce72fbe900000000, + 0x50f1217600000000, 0x0877c61f00000000, 0x96f41c8000000000, + 0x757602fb00000000, 0xebf5d86400000000, 0xa39db33200000000, + 0x3d1e69ad00000000, 0xde9c77d600000000, 0x401fad4900000000, + 0x18994a2000000000, 0x861a90bf00000000, 0x65988ec400000000, + 0xfb1b545b00000000, 0xd594411700000000, 0x4b179b8800000000, + 0xa89585f300000000, 0x36165f6c00000000, 0x6e90b80500000000, + 0xf013629a00000000, 0x13917ce100000000, 0x8d12a67e00000000, + 0x4f8f577900000000, 0xd10c8de600000000, 0x328e939d00000000, + 0xac0d490200000000, 0xf48bae6b00000000, 0x6a0874f400000000, + 0x898a6a8f00000000, 0x1709b01000000000, 0x3986a55c00000000, + 0xa7057fc300000000, 0x448761b800000000, 0xda04bb2700000000, + 0x82825c4e00000000, 0x1c0186d100000000, 0xff8398aa00000000, + 0x6100423500000000, 0x7bb87ba500000000, 0xe53ba13a00000000, + 0x06b9bf4100000000, 0x983a65de00000000, 0xc0bc82b700000000, + 0x5e3f582800000000, 0xbdbd465300000000, 0x233e9ccc00000000, + 0x0db1898000000000, 0x9332531f00000000, 0x70b04d6400000000, + 0xee3397fb00000000, 0xb6b5709200000000, 0x2836aa0d00000000, + 0xcbb4b47600000000, 0x55376ee900000000, 0x97aa9fee00000000, + 0x0929457100000000, 0xeaab5b0a00000000, 0x7428819500000000, + 0x2cae66fc00000000, 0xb22dbc6300000000, 0x51afa21800000000, + 0xcf2c788700000000, 0xe1a36dcb00000000, 0x7f20b75400000000, + 0x9ca2a92f00000000, 0x022173b000000000, 0x5aa794d900000000, + 0xc4244e4600000000, 0x27a6503d00000000, 0xb9258aa200000000, + 0x52d052c600000000, 0xcc53885900000000, 0x2fd1962200000000, + 0xb1524cbd00000000, 0xe9d4abd400000000, 0x7757714b00000000, + 0x94d56f3000000000, 0x0a56b5af00000000, 0x24d9a0e300000000, + 0xba5a7a7c00000000, 0x59d8640700000000, 0xc75bbe9800000000, + 0x9fdd59f100000000, 0x015e836e00000000, 0xe2dc9d1500000000, + 0x7c5f478a00000000, 0xbec2b68d00000000, 0x20416c1200000000, + 0xc3c3726900000000, 0x5d40a8f600000000, 0x05c64f9f00000000, + 0x9b45950000000000, 0x78c78b7b00000000, 0xe64451e400000000, + 0xc8cb44a800000000, 0x56489e3700000000, 0xb5ca804c00000000, + 0x2b495ad300000000, 0x73cfbdba00000000, 0xed4c672500000000, + 0x0ece795e00000000, 0x904da3c100000000, 0x8af59a5100000000, + 0x147640ce00000000, 0xf7f45eb500000000, 0x6977842a00000000, + 0x31f1634300000000, 0xaf72b9dc00000000, 0x4cf0a7a700000000, + 0xd2737d3800000000, 0xfcfc687400000000, 0x627fb2eb00000000, + 0x81fdac9000000000, 0x1f7e760f00000000, 0x47f8916600000000, + 0xd97b4bf900000000, 0x3af9558200000000, 0xa47a8f1d00000000, + 0x66e77e1a00000000, 0xf864a48500000000, 0x1be6bafe00000000, + 0x8565606100000000, 0xdde3870800000000, 0x43605d9700000000, + 0xa0e243ec00000000, 0x3e61997300000000, 0x10ee8c3f00000000, + 0x8e6d56a000000000, 0x6def48db00000000, 0xf36c924400000000, + 0xabea752d00000000, 0x3569afb200000000, 0xd6ebb1c900000000, + 0x48686b5600000000}, + {0x0000000000000000, 0xc064281700000000, 0x80c9502e00000000, + 0x40ad783900000000, 0x0093a15c00000000, 0xc0f7894b00000000, + 0x805af17200000000, 0x403ed96500000000, 0x002643b900000000, + 0xc0426bae00000000, 0x80ef139700000000, 0x408b3b8000000000, + 0x00b5e2e500000000, 0xc0d1caf200000000, 0x807cb2cb00000000, + 0x40189adc00000000, 0x414af7a900000000, 0x812edfbe00000000, + 0xc183a78700000000, 0x01e78f9000000000, 0x41d956f500000000, + 0x81bd7ee200000000, 0xc11006db00000000, 0x01742ecc00000000, + 0x416cb41000000000, 0x81089c0700000000, 0xc1a5e43e00000000, + 0x01c1cc2900000000, 0x41ff154c00000000, 0x819b3d5b00000000, + 0xc136456200000000, 0x01526d7500000000, 0xc3929f8800000000, + 0x03f6b79f00000000, 0x435bcfa600000000, 0x833fe7b100000000, + 0xc3013ed400000000, 0x036516c300000000, 0x43c86efa00000000, + 0x83ac46ed00000000, 0xc3b4dc3100000000, 0x03d0f42600000000, + 0x437d8c1f00000000, 0x8319a40800000000, 0xc3277d6d00000000, + 0x0343557a00000000, 0x43ee2d4300000000, 0x838a055400000000, + 0x82d8682100000000, 0x42bc403600000000, 0x0211380f00000000, + 0xc275101800000000, 0x824bc97d00000000, 0x422fe16a00000000, + 0x0282995300000000, 0xc2e6b14400000000, 0x82fe2b9800000000, + 0x429a038f00000000, 0x02377bb600000000, 0xc25353a100000000, + 0x826d8ac400000000, 0x4209a2d300000000, 0x02a4daea00000000, + 0xc2c0f2fd00000000, 0xc7234eca00000000, 0x074766dd00000000, + 0x47ea1ee400000000, 0x878e36f300000000, 0xc7b0ef9600000000, + 0x07d4c78100000000, 0x4779bfb800000000, 0x871d97af00000000, + 0xc7050d7300000000, 0x0761256400000000, 0x47cc5d5d00000000, + 0x87a8754a00000000, 0xc796ac2f00000000, 0x07f2843800000000, + 0x475ffc0100000000, 0x873bd41600000000, 0x8669b96300000000, + 0x460d917400000000, 0x06a0e94d00000000, 0xc6c4c15a00000000, + 0x86fa183f00000000, 0x469e302800000000, 0x0633481100000000, + 0xc657600600000000, 0x864ffada00000000, 0x462bd2cd00000000, + 0x0686aaf400000000, 0xc6e282e300000000, 0x86dc5b8600000000, + 0x46b8739100000000, 0x06150ba800000000, 0xc67123bf00000000, + 0x04b1d14200000000, 0xc4d5f95500000000, 0x8478816c00000000, + 0x441ca97b00000000, 0x0422701e00000000, 0xc446580900000000, + 0x84eb203000000000, 0x448f082700000000, 0x049792fb00000000, + 0xc4f3baec00000000, 0x845ec2d500000000, 0x443aeac200000000, + 0x040433a700000000, 0xc4601bb000000000, 0x84cd638900000000, + 0x44a94b9e00000000, 0x45fb26eb00000000, 0x859f0efc00000000, + 0xc53276c500000000, 0x05565ed200000000, 0x456887b700000000, + 0x850cafa000000000, 0xc5a1d79900000000, 0x05c5ff8e00000000, + 0x45dd655200000000, 0x85b94d4500000000, 0xc514357c00000000, + 0x05701d6b00000000, 0x454ec40e00000000, 0x852aec1900000000, + 0xc587942000000000, 0x05e3bc3700000000, 0xcf41ed4f00000000, + 0x0f25c55800000000, 0x4f88bd6100000000, 0x8fec957600000000, + 0xcfd24c1300000000, 0x0fb6640400000000, 0x4f1b1c3d00000000, + 0x8f7f342a00000000, 0xcf67aef600000000, 0x0f0386e100000000, + 0x4faefed800000000, 0x8fcad6cf00000000, 0xcff40faa00000000, + 0x0f9027bd00000000, 0x4f3d5f8400000000, 0x8f59779300000000, + 0x8e0b1ae600000000, 0x4e6f32f100000000, 0x0ec24ac800000000, + 0xcea662df00000000, 0x8e98bbba00000000, 0x4efc93ad00000000, + 0x0e51eb9400000000, 0xce35c38300000000, 0x8e2d595f00000000, + 0x4e49714800000000, 0x0ee4097100000000, 0xce80216600000000, + 0x8ebef80300000000, 0x4edad01400000000, 0x0e77a82d00000000, + 0xce13803a00000000, 0x0cd372c700000000, 0xccb75ad000000000, + 0x8c1a22e900000000, 0x4c7e0afe00000000, 0x0c40d39b00000000, + 0xcc24fb8c00000000, 0x8c8983b500000000, 0x4cedaba200000000, + 0x0cf5317e00000000, 0xcc91196900000000, 0x8c3c615000000000, + 0x4c58494700000000, 0x0c66902200000000, 0xcc02b83500000000, + 0x8cafc00c00000000, 0x4ccbe81b00000000, 0x4d99856e00000000, + 0x8dfdad7900000000, 0xcd50d54000000000, 0x0d34fd5700000000, + 0x4d0a243200000000, 0x8d6e0c2500000000, 0xcdc3741c00000000, + 0x0da75c0b00000000, 0x4dbfc6d700000000, 0x8ddbeec000000000, + 0xcd7696f900000000, 0x0d12beee00000000, 0x4d2c678b00000000, + 0x8d484f9c00000000, 0xcde537a500000000, 0x0d811fb200000000, + 0x0862a38500000000, 0xc8068b9200000000, 0x88abf3ab00000000, + 0x48cfdbbc00000000, 0x08f102d900000000, 0xc8952ace00000000, + 0x883852f700000000, 0x485c7ae000000000, 0x0844e03c00000000, + 0xc820c82b00000000, 0x888db01200000000, 0x48e9980500000000, + 0x08d7416000000000, 0xc8b3697700000000, 0x881e114e00000000, + 0x487a395900000000, 0x4928542c00000000, 0x894c7c3b00000000, + 0xc9e1040200000000, 0x09852c1500000000, 0x49bbf57000000000, + 0x89dfdd6700000000, 0xc972a55e00000000, 0x09168d4900000000, + 0x490e179500000000, 0x896a3f8200000000, 0xc9c747bb00000000, + 0x09a36fac00000000, 0x499db6c900000000, 0x89f99ede00000000, + 0xc954e6e700000000, 0x0930cef000000000, 0xcbf03c0d00000000, + 0x0b94141a00000000, 0x4b396c2300000000, 0x8b5d443400000000, + 0xcb639d5100000000, 0x0b07b54600000000, 0x4baacd7f00000000, + 0x8bcee56800000000, 0xcbd67fb400000000, 0x0bb257a300000000, + 0x4b1f2f9a00000000, 0x8b7b078d00000000, 0xcb45dee800000000, + 0x0b21f6ff00000000, 0x4b8c8ec600000000, 0x8be8a6d100000000, + 0x8abacba400000000, 0x4adee3b300000000, 0x0a739b8a00000000, + 0xca17b39d00000000, 0x8a296af800000000, 0x4a4d42ef00000000, + 0x0ae03ad600000000, 0xca8412c100000000, 0x8a9c881d00000000, + 0x4af8a00a00000000, 0x0a55d83300000000, 0xca31f02400000000, + 0x8a0f294100000000, 0x4a6b015600000000, 0x0ac6796f00000000, + 0xcaa2517800000000}, + {0x0000000000000000, 0xd4ea739b00000000, 0xe9d396ed00000000, + 0x3d39e57600000000, 0x93a15c0000000000, 0x474b2f9b00000000, + 0x7a72caed00000000, 0xae98b97600000000, 0x2643b90000000000, + 0xf2a9ca9b00000000, 0xcf902fed00000000, 0x1b7a5c7600000000, + 0xb5e2e50000000000, 0x6108969b00000000, 0x5c3173ed00000000, + 0x88db007600000000, 0x4c86720100000000, 0x986c019a00000000, + 0xa555e4ec00000000, 0x71bf977700000000, 0xdf272e0100000000, + 0x0bcd5d9a00000000, 0x36f4b8ec00000000, 0xe21ecb7700000000, + 0x6ac5cb0100000000, 0xbe2fb89a00000000, 0x83165dec00000000, + 0x57fc2e7700000000, 0xf964970100000000, 0x2d8ee49a00000000, + 0x10b701ec00000000, 0xc45d727700000000, 0x980ce50200000000, + 0x4ce6969900000000, 0x71df73ef00000000, 0xa535007400000000, + 0x0badb90200000000, 0xdf47ca9900000000, 0xe27e2fef00000000, + 0x36945c7400000000, 0xbe4f5c0200000000, 0x6aa52f9900000000, + 0x579ccaef00000000, 0x8376b97400000000, 0x2dee000200000000, + 0xf904739900000000, 0xc43d96ef00000000, 0x10d7e57400000000, + 0xd48a970300000000, 0x0060e49800000000, 0x3d5901ee00000000, + 0xe9b3727500000000, 0x472bcb0300000000, 0x93c1b89800000000, + 0xaef85dee00000000, 0x7a122e7500000000, 0xf2c92e0300000000, + 0x26235d9800000000, 0x1b1ab8ee00000000, 0xcff0cb7500000000, + 0x6168720300000000, 0xb582019800000000, 0x88bbe4ee00000000, + 0x5c51977500000000, 0x3019ca0500000000, 0xe4f3b99e00000000, + 0xd9ca5ce800000000, 0x0d202f7300000000, 0xa3b8960500000000, + 0x7752e59e00000000, 0x4a6b00e800000000, 0x9e81737300000000, + 0x165a730500000000, 0xc2b0009e00000000, 0xff89e5e800000000, + 0x2b63967300000000, 0x85fb2f0500000000, 0x51115c9e00000000, + 0x6c28b9e800000000, 0xb8c2ca7300000000, 0x7c9fb80400000000, + 0xa875cb9f00000000, 0x954c2ee900000000, 0x41a65d7200000000, + 0xef3ee40400000000, 0x3bd4979f00000000, 0x06ed72e900000000, + 0xd207017200000000, 0x5adc010400000000, 0x8e36729f00000000, + 0xb30f97e900000000, 0x67e5e47200000000, 0xc97d5d0400000000, + 0x1d972e9f00000000, 0x20aecbe900000000, 0xf444b87200000000, + 0xa8152f0700000000, 0x7cff5c9c00000000, 0x41c6b9ea00000000, + 0x952cca7100000000, 0x3bb4730700000000, 0xef5e009c00000000, + 0xd267e5ea00000000, 0x068d967100000000, 0x8e56960700000000, + 0x5abce59c00000000, 0x678500ea00000000, 0xb36f737100000000, + 0x1df7ca0700000000, 0xc91db99c00000000, 0xf4245cea00000000, + 0x20ce2f7100000000, 0xe4935d0600000000, 0x30792e9d00000000, + 0x0d40cbeb00000000, 0xd9aab87000000000, 0x7732010600000000, + 0xa3d8729d00000000, 0x9ee197eb00000000, 0x4a0be47000000000, + 0xc2d0e40600000000, 0x163a979d00000000, 0x2b0372eb00000000, + 0xffe9017000000000, 0x5171b80600000000, 0x859bcb9d00000000, + 0xb8a22eeb00000000, 0x6c485d7000000000, 0x6032940b00000000, + 0xb4d8e79000000000, 0x89e102e600000000, 0x5d0b717d00000000, + 0xf393c80b00000000, 0x2779bb9000000000, 0x1a405ee600000000, + 0xceaa2d7d00000000, 0x46712d0b00000000, 0x929b5e9000000000, + 0xafa2bbe600000000, 0x7b48c87d00000000, 0xd5d0710b00000000, + 0x013a029000000000, 0x3c03e7e600000000, 0xe8e9947d00000000, + 0x2cb4e60a00000000, 0xf85e959100000000, 0xc56770e700000000, + 0x118d037c00000000, 0xbf15ba0a00000000, 0x6bffc99100000000, + 0x56c62ce700000000, 0x822c5f7c00000000, 0x0af75f0a00000000, + 0xde1d2c9100000000, 0xe324c9e700000000, 0x37ceba7c00000000, + 0x9956030a00000000, 0x4dbc709100000000, 0x708595e700000000, + 0xa46fe67c00000000, 0xf83e710900000000, 0x2cd4029200000000, + 0x11ede7e400000000, 0xc507947f00000000, 0x6b9f2d0900000000, + 0xbf755e9200000000, 0x824cbbe400000000, 0x56a6c87f00000000, + 0xde7dc80900000000, 0x0a97bb9200000000, 0x37ae5ee400000000, + 0xe3442d7f00000000, 0x4ddc940900000000, 0x9936e79200000000, + 0xa40f02e400000000, 0x70e5717f00000000, 0xb4b8030800000000, + 0x6052709300000000, 0x5d6b95e500000000, 0x8981e67e00000000, + 0x27195f0800000000, 0xf3f32c9300000000, 0xcecac9e500000000, + 0x1a20ba7e00000000, 0x92fbba0800000000, 0x4611c99300000000, + 0x7b282ce500000000, 0xafc25f7e00000000, 0x015ae60800000000, + 0xd5b0959300000000, 0xe88970e500000000, 0x3c63037e00000000, + 0x502b5e0e00000000, 0x84c12d9500000000, 0xb9f8c8e300000000, + 0x6d12bb7800000000, 0xc38a020e00000000, 0x1760719500000000, + 0x2a5994e300000000, 0xfeb3e77800000000, 0x7668e70e00000000, + 0xa282949500000000, 0x9fbb71e300000000, 0x4b51027800000000, + 0xe5c9bb0e00000000, 0x3123c89500000000, 0x0c1a2de300000000, + 0xd8f05e7800000000, 0x1cad2c0f00000000, 0xc8475f9400000000, + 0xf57ebae200000000, 0x2194c97900000000, 0x8f0c700f00000000, + 0x5be6039400000000, 0x66dfe6e200000000, 0xb235957900000000, + 0x3aee950f00000000, 0xee04e69400000000, 0xd33d03e200000000, + 0x07d7707900000000, 0xa94fc90f00000000, 0x7da5ba9400000000, + 0x409c5fe200000000, 0x94762c7900000000, 0xc827bb0c00000000, + 0x1ccdc89700000000, 0x21f42de100000000, 0xf51e5e7a00000000, + 0x5b86e70c00000000, 0x8f6c949700000000, 0xb25571e100000000, + 0x66bf027a00000000, 0xee64020c00000000, 0x3a8e719700000000, + 0x07b794e100000000, 0xd35de77a00000000, 0x7dc55e0c00000000, + 0xa92f2d9700000000, 0x9416c8e100000000, 0x40fcbb7a00000000, + 0x84a1c90d00000000, 0x504bba9600000000, 0x6d725fe000000000, + 0xb9982c7b00000000, 0x1700950d00000000, 0xc3eae69600000000, + 0xfed303e000000000, 0x2a39707b00000000, 0xa2e2700d00000000, + 0x7608039600000000, 0x4b31e6e000000000, 0x9fdb957b00000000, + 0x31432c0d00000000, 0xe5a95f9600000000, 0xd890bae000000000, + 0x0c7ac97b00000000}, + {0x0000000000000000, 0x2765258100000000, 0x0fcc3bd900000000, + 0x28a91e5800000000, 0x5f9e066900000000, 0x78fb23e800000000, + 0x50523db000000000, 0x7737183100000000, 0xbe3c0dd200000000, + 0x9959285300000000, 0xb1f0360b00000000, 0x9695138a00000000, + 0xe1a20bbb00000000, 0xc6c72e3a00000000, 0xee6e306200000000, + 0xc90b15e300000000, 0x3d7f6b7f00000000, 0x1a1a4efe00000000, + 0x32b350a600000000, 0x15d6752700000000, 0x62e16d1600000000, + 0x4584489700000000, 0x6d2d56cf00000000, 0x4a48734e00000000, + 0x834366ad00000000, 0xa426432c00000000, 0x8c8f5d7400000000, + 0xabea78f500000000, 0xdcdd60c400000000, 0xfbb8454500000000, + 0xd3115b1d00000000, 0xf4747e9c00000000, 0x7afed6fe00000000, + 0x5d9bf37f00000000, 0x7532ed2700000000, 0x5257c8a600000000, + 0x2560d09700000000, 0x0205f51600000000, 0x2aaceb4e00000000, + 0x0dc9cecf00000000, 0xc4c2db2c00000000, 0xe3a7fead00000000, + 0xcb0ee0f500000000, 0xec6bc57400000000, 0x9b5cdd4500000000, + 0xbc39f8c400000000, 0x9490e69c00000000, 0xb3f5c31d00000000, + 0x4781bd8100000000, 0x60e4980000000000, 0x484d865800000000, + 0x6f28a3d900000000, 0x181fbbe800000000, 0x3f7a9e6900000000, + 0x17d3803100000000, 0x30b6a5b000000000, 0xf9bdb05300000000, + 0xded895d200000000, 0xf6718b8a00000000, 0xd114ae0b00000000, + 0xa623b63a00000000, 0x814693bb00000000, 0xa9ef8de300000000, + 0x8e8aa86200000000, 0xb5fadc2600000000, 0x929ff9a700000000, + 0xba36e7ff00000000, 0x9d53c27e00000000, 0xea64da4f00000000, + 0xcd01ffce00000000, 0xe5a8e19600000000, 0xc2cdc41700000000, + 0x0bc6d1f400000000, 0x2ca3f47500000000, 0x040aea2d00000000, + 0x236fcfac00000000, 0x5458d79d00000000, 0x733df21c00000000, + 0x5b94ec4400000000, 0x7cf1c9c500000000, 0x8885b75900000000, + 0xafe092d800000000, 0x87498c8000000000, 0xa02ca90100000000, + 0xd71bb13000000000, 0xf07e94b100000000, 0xd8d78ae900000000, + 0xffb2af6800000000, 0x36b9ba8b00000000, 0x11dc9f0a00000000, + 0x3975815200000000, 0x1e10a4d300000000, 0x6927bce200000000, + 0x4e42996300000000, 0x66eb873b00000000, 0x418ea2ba00000000, + 0xcf040ad800000000, 0xe8612f5900000000, 0xc0c8310100000000, + 0xe7ad148000000000, 0x909a0cb100000000, 0xb7ff293000000000, + 0x9f56376800000000, 0xb83312e900000000, 0x7138070a00000000, + 0x565d228b00000000, 0x7ef43cd300000000, 0x5991195200000000, + 0x2ea6016300000000, 0x09c324e200000000, 0x216a3aba00000000, + 0x060f1f3b00000000, 0xf27b61a700000000, 0xd51e442600000000, + 0xfdb75a7e00000000, 0xdad27fff00000000, 0xade567ce00000000, + 0x8a80424f00000000, 0xa2295c1700000000, 0x854c799600000000, + 0x4c476c7500000000, 0x6b2249f400000000, 0x438b57ac00000000, + 0x64ee722d00000000, 0x13d96a1c00000000, 0x34bc4f9d00000000, + 0x1c1551c500000000, 0x3b70744400000000, 0x6af5b94d00000000, + 0x4d909ccc00000000, 0x6539829400000000, 0x425ca71500000000, + 0x356bbf2400000000, 0x120e9aa500000000, 0x3aa784fd00000000, + 0x1dc2a17c00000000, 0xd4c9b49f00000000, 0xf3ac911e00000000, + 0xdb058f4600000000, 0xfc60aac700000000, 0x8b57b2f600000000, + 0xac32977700000000, 0x849b892f00000000, 0xa3feacae00000000, + 0x578ad23200000000, 0x70eff7b300000000, 0x5846e9eb00000000, + 0x7f23cc6a00000000, 0x0814d45b00000000, 0x2f71f1da00000000, + 0x07d8ef8200000000, 0x20bdca0300000000, 0xe9b6dfe000000000, + 0xced3fa6100000000, 0xe67ae43900000000, 0xc11fc1b800000000, + 0xb628d98900000000, 0x914dfc0800000000, 0xb9e4e25000000000, + 0x9e81c7d100000000, 0x100b6fb300000000, 0x376e4a3200000000, + 0x1fc7546a00000000, 0x38a271eb00000000, 0x4f9569da00000000, + 0x68f04c5b00000000, 0x4059520300000000, 0x673c778200000000, + 0xae37626100000000, 0x895247e000000000, 0xa1fb59b800000000, + 0x869e7c3900000000, 0xf1a9640800000000, 0xd6cc418900000000, + 0xfe655fd100000000, 0xd9007a5000000000, 0x2d7404cc00000000, + 0x0a11214d00000000, 0x22b83f1500000000, 0x05dd1a9400000000, + 0x72ea02a500000000, 0x558f272400000000, 0x7d26397c00000000, + 0x5a431cfd00000000, 0x9348091e00000000, 0xb42d2c9f00000000, + 0x9c8432c700000000, 0xbbe1174600000000, 0xccd60f7700000000, + 0xebb32af600000000, 0xc31a34ae00000000, 0xe47f112f00000000, + 0xdf0f656b00000000, 0xf86a40ea00000000, 0xd0c35eb200000000, + 0xf7a67b3300000000, 0x8091630200000000, 0xa7f4468300000000, + 0x8f5d58db00000000, 0xa8387d5a00000000, 0x613368b900000000, + 0x46564d3800000000, 0x6eff536000000000, 0x499a76e100000000, + 0x3ead6ed000000000, 0x19c84b5100000000, 0x3161550900000000, + 0x1604708800000000, 0xe2700e1400000000, 0xc5152b9500000000, + 0xedbc35cd00000000, 0xcad9104c00000000, 0xbdee087d00000000, + 0x9a8b2dfc00000000, 0xb22233a400000000, 0x9547162500000000, + 0x5c4c03c600000000, 0x7b29264700000000, 0x5380381f00000000, + 0x74e51d9e00000000, 0x03d205af00000000, 0x24b7202e00000000, + 0x0c1e3e7600000000, 0x2b7b1bf700000000, 0xa5f1b39500000000, + 0x8294961400000000, 0xaa3d884c00000000, 0x8d58adcd00000000, + 0xfa6fb5fc00000000, 0xdd0a907d00000000, 0xf5a38e2500000000, + 0xd2c6aba400000000, 0x1bcdbe4700000000, 0x3ca89bc600000000, + 0x1401859e00000000, 0x3364a01f00000000, 0x4453b82e00000000, + 0x63369daf00000000, 0x4b9f83f700000000, 0x6cfaa67600000000, + 0x988ed8ea00000000, 0xbfebfd6b00000000, 0x9742e33300000000, + 0xb027c6b200000000, 0xc710de8300000000, 0xe075fb0200000000, + 0xc8dce55a00000000, 0xefb9c0db00000000, 0x26b2d53800000000, + 0x01d7f0b900000000, 0x297eeee100000000, 0x0e1bcb6000000000, + 0x792cd35100000000, 0x5e49f6d000000000, 0x76e0e88800000000, + 0x5185cd0900000000}}; + +#else /* W == 4 */ + +local const z_crc_t FAR crc_braid_table[][256] = { + {0x00000000, 0x9ba54c6f, 0xec3b9e9f, 0x779ed2f0, 0x03063b7f, + 0x98a37710, 0xef3da5e0, 0x7498e98f, 0x060c76fe, 0x9da93a91, + 0xea37e861, 0x7192a40e, 0x050a4d81, 0x9eaf01ee, 0xe931d31e, + 0x72949f71, 0x0c18edfc, 0x97bda193, 0xe0237363, 0x7b863f0c, + 0x0f1ed683, 0x94bb9aec, 0xe325481c, 0x78800473, 0x0a149b02, + 0x91b1d76d, 0xe62f059d, 0x7d8a49f2, 0x0912a07d, 0x92b7ec12, + 0xe5293ee2, 0x7e8c728d, 0x1831dbf8, 0x83949797, 0xf40a4567, + 0x6faf0908, 0x1b37e087, 0x8092ace8, 0xf70c7e18, 0x6ca93277, + 0x1e3dad06, 0x8598e169, 0xf2063399, 0x69a37ff6, 0x1d3b9679, + 0x869eda16, 0xf10008e6, 0x6aa54489, 0x14293604, 0x8f8c7a6b, + 0xf812a89b, 0x63b7e4f4, 0x172f0d7b, 0x8c8a4114, 0xfb1493e4, + 0x60b1df8b, 0x122540fa, 0x89800c95, 0xfe1ede65, 0x65bb920a, + 0x11237b85, 0x8a8637ea, 0xfd18e51a, 0x66bda975, 0x3063b7f0, + 0xabc6fb9f, 0xdc58296f, 0x47fd6500, 0x33658c8f, 0xa8c0c0e0, + 0xdf5e1210, 0x44fb5e7f, 0x366fc10e, 0xadca8d61, 0xda545f91, + 0x41f113fe, 0x3569fa71, 0xaeccb61e, 0xd95264ee, 0x42f72881, + 0x3c7b5a0c, 0xa7de1663, 0xd040c493, 0x4be588fc, 0x3f7d6173, + 0xa4d82d1c, 0xd346ffec, 0x48e3b383, 0x3a772cf2, 0xa1d2609d, + 0xd64cb26d, 0x4de9fe02, 0x3971178d, 0xa2d45be2, 0xd54a8912, + 0x4eefc57d, 0x28526c08, 0xb3f72067, 0xc469f297, 0x5fccbef8, + 0x2b545777, 0xb0f11b18, 0xc76fc9e8, 0x5cca8587, 0x2e5e1af6, + 0xb5fb5699, 0xc2658469, 0x59c0c806, 0x2d582189, 0xb6fd6de6, + 0xc163bf16, 0x5ac6f379, 0x244a81f4, 0xbfefcd9b, 0xc8711f6b, + 0x53d45304, 0x274cba8b, 0xbce9f6e4, 0xcb772414, 0x50d2687b, + 0x2246f70a, 0xb9e3bb65, 0xce7d6995, 0x55d825fa, 0x2140cc75, + 0xbae5801a, 0xcd7b52ea, 0x56de1e85, 0x60c76fe0, 0xfb62238f, + 0x8cfcf17f, 0x1759bd10, 0x63c1549f, 0xf86418f0, 0x8ffaca00, + 0x145f866f, 0x66cb191e, 0xfd6e5571, 0x8af08781, 0x1155cbee, + 0x65cd2261, 0xfe686e0e, 0x89f6bcfe, 0x1253f091, 0x6cdf821c, + 0xf77ace73, 0x80e41c83, 0x1b4150ec, 0x6fd9b963, 0xf47cf50c, + 0x83e227fc, 0x18476b93, 0x6ad3f4e2, 0xf176b88d, 0x86e86a7d, + 0x1d4d2612, 0x69d5cf9d, 0xf27083f2, 0x85ee5102, 0x1e4b1d6d, + 0x78f6b418, 0xe353f877, 0x94cd2a87, 0x0f6866e8, 0x7bf08f67, + 0xe055c308, 0x97cb11f8, 0x0c6e5d97, 0x7efac2e6, 0xe55f8e89, + 0x92c15c79, 0x09641016, 0x7dfcf999, 0xe659b5f6, 0x91c76706, + 0x0a622b69, 0x74ee59e4, 0xef4b158b, 0x98d5c77b, 0x03708b14, + 0x77e8629b, 0xec4d2ef4, 0x9bd3fc04, 0x0076b06b, 0x72e22f1a, + 0xe9476375, 0x9ed9b185, 0x057cfdea, 0x71e41465, 0xea41580a, + 0x9ddf8afa, 0x067ac695, 0x50a4d810, 0xcb01947f, 0xbc9f468f, + 0x273a0ae0, 0x53a2e36f, 0xc807af00, 0xbf997df0, 0x243c319f, + 0x56a8aeee, 0xcd0de281, 0xba933071, 0x21367c1e, 0x55ae9591, + 0xce0bd9fe, 0xb9950b0e, 0x22304761, 0x5cbc35ec, 0xc7197983, + 0xb087ab73, 0x2b22e71c, 0x5fba0e93, 0xc41f42fc, 0xb381900c, + 0x2824dc63, 0x5ab04312, 0xc1150f7d, 0xb68bdd8d, 0x2d2e91e2, + 0x59b6786d, 0xc2133402, 0xb58de6f2, 0x2e28aa9d, 0x489503e8, + 0xd3304f87, 0xa4ae9d77, 0x3f0bd118, 0x4b933897, 0xd03674f8, + 0xa7a8a608, 0x3c0dea67, 0x4e997516, 0xd53c3979, 0xa2a2eb89, + 0x3907a7e6, 0x4d9f4e69, 0xd63a0206, 0xa1a4d0f6, 0x3a019c99, + 0x448dee14, 0xdf28a27b, 0xa8b6708b, 0x33133ce4, 0x478bd56b, + 0xdc2e9904, 0xabb04bf4, 0x3015079b, 0x428198ea, 0xd924d485, + 0xaeba0675, 0x351f4a1a, 0x4187a395, 0xda22effa, 0xadbc3d0a, + 0x36197165}, + {0x00000000, 0xc18edfc0, 0x586cb9c1, 0x99e26601, 0xb0d97382, + 0x7157ac42, 0xe8b5ca43, 0x293b1583, 0xbac3e145, 0x7b4d3e85, + 0xe2af5884, 0x23218744, 0x0a1a92c7, 0xcb944d07, 0x52762b06, + 0x93f8f4c6, 0xaef6c4cb, 0x6f781b0b, 0xf69a7d0a, 0x3714a2ca, + 0x1e2fb749, 0xdfa16889, 0x46430e88, 0x87cdd148, 0x1435258e, + 0xd5bbfa4e, 0x4c599c4f, 0x8dd7438f, 0xa4ec560c, 0x656289cc, + 0xfc80efcd, 0x3d0e300d, 0x869c8fd7, 0x47125017, 0xdef03616, + 0x1f7ee9d6, 0x3645fc55, 0xf7cb2395, 0x6e294594, 0xafa79a54, + 0x3c5f6e92, 0xfdd1b152, 0x6433d753, 0xa5bd0893, 0x8c861d10, + 0x4d08c2d0, 0xd4eaa4d1, 0x15647b11, 0x286a4b1c, 0xe9e494dc, + 0x7006f2dd, 0xb1882d1d, 0x98b3389e, 0x593de75e, 0xc0df815f, + 0x01515e9f, 0x92a9aa59, 0x53277599, 0xcac51398, 0x0b4bcc58, + 0x2270d9db, 0xe3fe061b, 0x7a1c601a, 0xbb92bfda, 0xd64819ef, + 0x17c6c62f, 0x8e24a02e, 0x4faa7fee, 0x66916a6d, 0xa71fb5ad, + 0x3efdd3ac, 0xff730c6c, 0x6c8bf8aa, 0xad05276a, 0x34e7416b, + 0xf5699eab, 0xdc528b28, 0x1ddc54e8, 0x843e32e9, 0x45b0ed29, + 0x78bedd24, 0xb93002e4, 0x20d264e5, 0xe15cbb25, 0xc867aea6, + 0x09e97166, 0x900b1767, 0x5185c8a7, 0xc27d3c61, 0x03f3e3a1, + 0x9a1185a0, 0x5b9f5a60, 0x72a44fe3, 0xb32a9023, 0x2ac8f622, + 0xeb4629e2, 0x50d49638, 0x915a49f8, 0x08b82ff9, 0xc936f039, + 0xe00de5ba, 0x21833a7a, 0xb8615c7b, 0x79ef83bb, 0xea17777d, + 0x2b99a8bd, 0xb27bcebc, 0x73f5117c, 0x5ace04ff, 0x9b40db3f, + 0x02a2bd3e, 0xc32c62fe, 0xfe2252f3, 0x3fac8d33, 0xa64eeb32, + 0x67c034f2, 0x4efb2171, 0x8f75feb1, 0x169798b0, 0xd7194770, + 0x44e1b3b6, 0x856f6c76, 0x1c8d0a77, 0xdd03d5b7, 0xf438c034, + 0x35b61ff4, 0xac5479f5, 0x6ddaa635, 0x77e1359f, 0xb66fea5f, + 0x2f8d8c5e, 0xee03539e, 0xc738461d, 0x06b699dd, 0x9f54ffdc, + 0x5eda201c, 0xcd22d4da, 0x0cac0b1a, 0x954e6d1b, 0x54c0b2db, + 0x7dfba758, 0xbc757898, 0x25971e99, 0xe419c159, 0xd917f154, + 0x18992e94, 0x817b4895, 0x40f59755, 0x69ce82d6, 0xa8405d16, + 0x31a23b17, 0xf02ce4d7, 0x63d41011, 0xa25acfd1, 0x3bb8a9d0, + 0xfa367610, 0xd30d6393, 0x1283bc53, 0x8b61da52, 0x4aef0592, + 0xf17dba48, 0x30f36588, 0xa9110389, 0x689fdc49, 0x41a4c9ca, + 0x802a160a, 0x19c8700b, 0xd846afcb, 0x4bbe5b0d, 0x8a3084cd, + 0x13d2e2cc, 0xd25c3d0c, 0xfb67288f, 0x3ae9f74f, 0xa30b914e, + 0x62854e8e, 0x5f8b7e83, 0x9e05a143, 0x07e7c742, 0xc6691882, + 0xef520d01, 0x2edcd2c1, 0xb73eb4c0, 0x76b06b00, 0xe5489fc6, + 0x24c64006, 0xbd242607, 0x7caaf9c7, 0x5591ec44, 0x941f3384, + 0x0dfd5585, 0xcc738a45, 0xa1a92c70, 0x6027f3b0, 0xf9c595b1, + 0x384b4a71, 0x11705ff2, 0xd0fe8032, 0x491ce633, 0x889239f3, + 0x1b6acd35, 0xdae412f5, 0x430674f4, 0x8288ab34, 0xabb3beb7, + 0x6a3d6177, 0xf3df0776, 0x3251d8b6, 0x0f5fe8bb, 0xced1377b, + 0x5733517a, 0x96bd8eba, 0xbf869b39, 0x7e0844f9, 0xe7ea22f8, + 0x2664fd38, 0xb59c09fe, 0x7412d63e, 0xedf0b03f, 0x2c7e6fff, + 0x05457a7c, 0xc4cba5bc, 0x5d29c3bd, 0x9ca71c7d, 0x2735a3a7, + 0xe6bb7c67, 0x7f591a66, 0xbed7c5a6, 0x97ecd025, 0x56620fe5, + 0xcf8069e4, 0x0e0eb624, 0x9df642e2, 0x5c789d22, 0xc59afb23, + 0x041424e3, 0x2d2f3160, 0xeca1eea0, 0x754388a1, 0xb4cd5761, + 0x89c3676c, 0x484db8ac, 0xd1afdead, 0x1021016d, 0x391a14ee, + 0xf894cb2e, 0x6176ad2f, 0xa0f872ef, 0x33008629, 0xf28e59e9, + 0x6b6c3fe8, 0xaae2e028, 0x83d9f5ab, 0x42572a6b, 0xdbb54c6a, + 0x1a3b93aa}, + {0x00000000, 0xefc26b3e, 0x04f5d03d, 0xeb37bb03, 0x09eba07a, + 0xe629cb44, 0x0d1e7047, 0xe2dc1b79, 0x13d740f4, 0xfc152bca, + 0x172290c9, 0xf8e0fbf7, 0x1a3ce08e, 0xf5fe8bb0, 0x1ec930b3, + 0xf10b5b8d, 0x27ae81e8, 0xc86cead6, 0x235b51d5, 0xcc993aeb, + 0x2e452192, 0xc1874aac, 0x2ab0f1af, 0xc5729a91, 0x3479c11c, + 0xdbbbaa22, 0x308c1121, 0xdf4e7a1f, 0x3d926166, 0xd2500a58, + 0x3967b15b, 0xd6a5da65, 0x4f5d03d0, 0xa09f68ee, 0x4ba8d3ed, + 0xa46ab8d3, 0x46b6a3aa, 0xa974c894, 0x42437397, 0xad8118a9, + 0x5c8a4324, 0xb348281a, 0x587f9319, 0xb7bdf827, 0x5561e35e, + 0xbaa38860, 0x51943363, 0xbe56585d, 0x68f38238, 0x8731e906, + 0x6c065205, 0x83c4393b, 0x61182242, 0x8eda497c, 0x65edf27f, + 0x8a2f9941, 0x7b24c2cc, 0x94e6a9f2, 0x7fd112f1, 0x901379cf, + 0x72cf62b6, 0x9d0d0988, 0x763ab28b, 0x99f8d9b5, 0x9eba07a0, + 0x71786c9e, 0x9a4fd79d, 0x758dbca3, 0x9751a7da, 0x7893cce4, + 0x93a477e7, 0x7c661cd9, 0x8d6d4754, 0x62af2c6a, 0x89989769, + 0x665afc57, 0x8486e72e, 0x6b448c10, 0x80733713, 0x6fb15c2d, + 0xb9148648, 0x56d6ed76, 0xbde15675, 0x52233d4b, 0xb0ff2632, + 0x5f3d4d0c, 0xb40af60f, 0x5bc89d31, 0xaac3c6bc, 0x4501ad82, + 0xae361681, 0x41f47dbf, 0xa32866c6, 0x4cea0df8, 0xa7ddb6fb, + 0x481fddc5, 0xd1e70470, 0x3e256f4e, 0xd512d44d, 0x3ad0bf73, + 0xd80ca40a, 0x37cecf34, 0xdcf97437, 0x333b1f09, 0xc2304484, + 0x2df22fba, 0xc6c594b9, 0x2907ff87, 0xcbdbe4fe, 0x24198fc0, + 0xcf2e34c3, 0x20ec5ffd, 0xf6498598, 0x198beea6, 0xf2bc55a5, + 0x1d7e3e9b, 0xffa225e2, 0x10604edc, 0xfb57f5df, 0x14959ee1, + 0xe59ec56c, 0x0a5cae52, 0xe16b1551, 0x0ea97e6f, 0xec756516, + 0x03b70e28, 0xe880b52b, 0x0742de15, 0xe6050901, 0x09c7623f, + 0xe2f0d93c, 0x0d32b202, 0xefeea97b, 0x002cc245, 0xeb1b7946, + 0x04d91278, 0xf5d249f5, 0x1a1022cb, 0xf12799c8, 0x1ee5f2f6, + 0xfc39e98f, 0x13fb82b1, 0xf8cc39b2, 0x170e528c, 0xc1ab88e9, + 0x2e69e3d7, 0xc55e58d4, 0x2a9c33ea, 0xc8402893, 0x278243ad, + 0xccb5f8ae, 0x23779390, 0xd27cc81d, 0x3dbea323, 0xd6891820, + 0x394b731e, 0xdb976867, 0x34550359, 0xdf62b85a, 0x30a0d364, + 0xa9580ad1, 0x469a61ef, 0xadaddaec, 0x426fb1d2, 0xa0b3aaab, + 0x4f71c195, 0xa4467a96, 0x4b8411a8, 0xba8f4a25, 0x554d211b, + 0xbe7a9a18, 0x51b8f126, 0xb364ea5f, 0x5ca68161, 0xb7913a62, + 0x5853515c, 0x8ef68b39, 0x6134e007, 0x8a035b04, 0x65c1303a, + 0x871d2b43, 0x68df407d, 0x83e8fb7e, 0x6c2a9040, 0x9d21cbcd, + 0x72e3a0f3, 0x99d41bf0, 0x761670ce, 0x94ca6bb7, 0x7b080089, + 0x903fbb8a, 0x7ffdd0b4, 0x78bf0ea1, 0x977d659f, 0x7c4ade9c, + 0x9388b5a2, 0x7154aedb, 0x9e96c5e5, 0x75a17ee6, 0x9a6315d8, + 0x6b684e55, 0x84aa256b, 0x6f9d9e68, 0x805ff556, 0x6283ee2f, + 0x8d418511, 0x66763e12, 0x89b4552c, 0x5f118f49, 0xb0d3e477, + 0x5be45f74, 0xb426344a, 0x56fa2f33, 0xb938440d, 0x520fff0e, + 0xbdcd9430, 0x4cc6cfbd, 0xa304a483, 0x48331f80, 0xa7f174be, + 0x452d6fc7, 0xaaef04f9, 0x41d8bffa, 0xae1ad4c4, 0x37e20d71, + 0xd820664f, 0x3317dd4c, 0xdcd5b672, 0x3e09ad0b, 0xd1cbc635, + 0x3afc7d36, 0xd53e1608, 0x24354d85, 0xcbf726bb, 0x20c09db8, + 0xcf02f686, 0x2ddeedff, 0xc21c86c1, 0x292b3dc2, 0xc6e956fc, + 0x104c8c99, 0xff8ee7a7, 0x14b95ca4, 0xfb7b379a, 0x19a72ce3, + 0xf66547dd, 0x1d52fcde, 0xf29097e0, 0x039bcc6d, 0xec59a753, + 0x076e1c50, 0xe8ac776e, 0x0a706c17, 0xe5b20729, 0x0e85bc2a, + 0xe147d714}, + {0x00000000, 0x177b1443, 0x2ef62886, 0x398d3cc5, 0x5dec510c, + 0x4a97454f, 0x731a798a, 0x64616dc9, 0xbbd8a218, 0xaca3b65b, + 0x952e8a9e, 0x82559edd, 0xe634f314, 0xf14fe757, 0xc8c2db92, + 0xdfb9cfd1, 0xacc04271, 0xbbbb5632, 0x82366af7, 0x954d7eb4, + 0xf12c137d, 0xe657073e, 0xdfda3bfb, 0xc8a12fb8, 0x1718e069, + 0x0063f42a, 0x39eec8ef, 0x2e95dcac, 0x4af4b165, 0x5d8fa526, + 0x640299e3, 0x73798da0, 0x82f182a3, 0x958a96e0, 0xac07aa25, + 0xbb7cbe66, 0xdf1dd3af, 0xc866c7ec, 0xf1ebfb29, 0xe690ef6a, + 0x392920bb, 0x2e5234f8, 0x17df083d, 0x00a41c7e, 0x64c571b7, + 0x73be65f4, 0x4a335931, 0x5d484d72, 0x2e31c0d2, 0x394ad491, + 0x00c7e854, 0x17bcfc17, 0x73dd91de, 0x64a6859d, 0x5d2bb958, + 0x4a50ad1b, 0x95e962ca, 0x82927689, 0xbb1f4a4c, 0xac645e0f, + 0xc80533c6, 0xdf7e2785, 0xe6f31b40, 0xf1880f03, 0xde920307, + 0xc9e91744, 0xf0642b81, 0xe71f3fc2, 0x837e520b, 0x94054648, + 0xad887a8d, 0xbaf36ece, 0x654aa11f, 0x7231b55c, 0x4bbc8999, + 0x5cc79dda, 0x38a6f013, 0x2fdde450, 0x1650d895, 0x012bccd6, + 0x72524176, 0x65295535, 0x5ca469f0, 0x4bdf7db3, 0x2fbe107a, + 0x38c50439, 0x014838fc, 0x16332cbf, 0xc98ae36e, 0xdef1f72d, + 0xe77ccbe8, 0xf007dfab, 0x9466b262, 0x831da621, 0xba909ae4, + 0xadeb8ea7, 0x5c6381a4, 0x4b1895e7, 0x7295a922, 0x65eebd61, + 0x018fd0a8, 0x16f4c4eb, 0x2f79f82e, 0x3802ec6d, 0xe7bb23bc, + 0xf0c037ff, 0xc94d0b3a, 0xde361f79, 0xba5772b0, 0xad2c66f3, + 0x94a15a36, 0x83da4e75, 0xf0a3c3d5, 0xe7d8d796, 0xde55eb53, + 0xc92eff10, 0xad4f92d9, 0xba34869a, 0x83b9ba5f, 0x94c2ae1c, + 0x4b7b61cd, 0x5c00758e, 0x658d494b, 0x72f65d08, 0x169730c1, + 0x01ec2482, 0x38611847, 0x2f1a0c04, 0x6655004f, 0x712e140c, + 0x48a328c9, 0x5fd83c8a, 0x3bb95143, 0x2cc24500, 0x154f79c5, + 0x02346d86, 0xdd8da257, 0xcaf6b614, 0xf37b8ad1, 0xe4009e92, + 0x8061f35b, 0x971ae718, 0xae97dbdd, 0xb9eccf9e, 0xca95423e, + 0xddee567d, 0xe4636ab8, 0xf3187efb, 0x97791332, 0x80020771, + 0xb98f3bb4, 0xaef42ff7, 0x714de026, 0x6636f465, 0x5fbbc8a0, + 0x48c0dce3, 0x2ca1b12a, 0x3bdaa569, 0x025799ac, 0x152c8def, + 0xe4a482ec, 0xf3df96af, 0xca52aa6a, 0xdd29be29, 0xb948d3e0, + 0xae33c7a3, 0x97befb66, 0x80c5ef25, 0x5f7c20f4, 0x480734b7, + 0x718a0872, 0x66f11c31, 0x029071f8, 0x15eb65bb, 0x2c66597e, + 0x3b1d4d3d, 0x4864c09d, 0x5f1fd4de, 0x6692e81b, 0x71e9fc58, + 0x15889191, 0x02f385d2, 0x3b7eb917, 0x2c05ad54, 0xf3bc6285, + 0xe4c776c6, 0xdd4a4a03, 0xca315e40, 0xae503389, 0xb92b27ca, + 0x80a61b0f, 0x97dd0f4c, 0xb8c70348, 0xafbc170b, 0x96312bce, + 0x814a3f8d, 0xe52b5244, 0xf2504607, 0xcbdd7ac2, 0xdca66e81, + 0x031fa150, 0x1464b513, 0x2de989d6, 0x3a929d95, 0x5ef3f05c, + 0x4988e41f, 0x7005d8da, 0x677ecc99, 0x14074139, 0x037c557a, + 0x3af169bf, 0x2d8a7dfc, 0x49eb1035, 0x5e900476, 0x671d38b3, + 0x70662cf0, 0xafdfe321, 0xb8a4f762, 0x8129cba7, 0x9652dfe4, + 0xf233b22d, 0xe548a66e, 0xdcc59aab, 0xcbbe8ee8, 0x3a3681eb, + 0x2d4d95a8, 0x14c0a96d, 0x03bbbd2e, 0x67dad0e7, 0x70a1c4a4, + 0x492cf861, 0x5e57ec22, 0x81ee23f3, 0x969537b0, 0xaf180b75, + 0xb8631f36, 0xdc0272ff, 0xcb7966bc, 0xf2f45a79, 0xe58f4e3a, + 0x96f6c39a, 0x818dd7d9, 0xb800eb1c, 0xaf7bff5f, 0xcb1a9296, + 0xdc6186d5, 0xe5ecba10, 0xf297ae53, 0x2d2e6182, 0x3a5575c1, + 0x03d84904, 0x14a35d47, 0x70c2308e, 0x67b924cd, 0x5e341808, + 0x494f0c4b}}; + +local const z_word_t FAR crc_braid_big_table[][256] = { + {0x00000000, 0x43147b17, 0x8628f62e, 0xc53c8d39, 0x0c51ec5d, + 0x4f45974a, 0x8a791a73, 0xc96d6164, 0x18a2d8bb, 0x5bb6a3ac, + 0x9e8a2e95, 0xdd9e5582, 0x14f334e6, 0x57e74ff1, 0x92dbc2c8, + 0xd1cfb9df, 0x7142c0ac, 0x3256bbbb, 0xf76a3682, 0xb47e4d95, + 0x7d132cf1, 0x3e0757e6, 0xfb3bdadf, 0xb82fa1c8, 0x69e01817, + 0x2af46300, 0xefc8ee39, 0xacdc952e, 0x65b1f44a, 0x26a58f5d, + 0xe3990264, 0xa08d7973, 0xa382f182, 0xe0968a95, 0x25aa07ac, + 0x66be7cbb, 0xafd31ddf, 0xecc766c8, 0x29fbebf1, 0x6aef90e6, + 0xbb202939, 0xf834522e, 0x3d08df17, 0x7e1ca400, 0xb771c564, + 0xf465be73, 0x3159334a, 0x724d485d, 0xd2c0312e, 0x91d44a39, + 0x54e8c700, 0x17fcbc17, 0xde91dd73, 0x9d85a664, 0x58b92b5d, + 0x1bad504a, 0xca62e995, 0x89769282, 0x4c4a1fbb, 0x0f5e64ac, + 0xc63305c8, 0x85277edf, 0x401bf3e6, 0x030f88f1, 0x070392de, + 0x4417e9c9, 0x812b64f0, 0xc23f1fe7, 0x0b527e83, 0x48460594, + 0x8d7a88ad, 0xce6ef3ba, 0x1fa14a65, 0x5cb53172, 0x9989bc4b, + 0xda9dc75c, 0x13f0a638, 0x50e4dd2f, 0x95d85016, 0xd6cc2b01, + 0x76415272, 0x35552965, 0xf069a45c, 0xb37ddf4b, 0x7a10be2f, + 0x3904c538, 0xfc384801, 0xbf2c3316, 0x6ee38ac9, 0x2df7f1de, + 0xe8cb7ce7, 0xabdf07f0, 0x62b26694, 0x21a61d83, 0xe49a90ba, + 0xa78eebad, 0xa481635c, 0xe795184b, 0x22a99572, 0x61bdee65, + 0xa8d08f01, 0xebc4f416, 0x2ef8792f, 0x6dec0238, 0xbc23bbe7, + 0xff37c0f0, 0x3a0b4dc9, 0x791f36de, 0xb07257ba, 0xf3662cad, + 0x365aa194, 0x754eda83, 0xd5c3a3f0, 0x96d7d8e7, 0x53eb55de, + 0x10ff2ec9, 0xd9924fad, 0x9a8634ba, 0x5fbab983, 0x1caec294, + 0xcd617b4b, 0x8e75005c, 0x4b498d65, 0x085df672, 0xc1309716, + 0x8224ec01, 0x47186138, 0x040c1a2f, 0x4f005566, 0x0c142e71, + 0xc928a348, 0x8a3cd85f, 0x4351b93b, 0x0045c22c, 0xc5794f15, + 0x866d3402, 0x57a28ddd, 0x14b6f6ca, 0xd18a7bf3, 0x929e00e4, + 0x5bf36180, 0x18e71a97, 0xdddb97ae, 0x9ecfecb9, 0x3e4295ca, + 0x7d56eedd, 0xb86a63e4, 0xfb7e18f3, 0x32137997, 0x71070280, + 0xb43b8fb9, 0xf72ff4ae, 0x26e04d71, 0x65f43666, 0xa0c8bb5f, + 0xe3dcc048, 0x2ab1a12c, 0x69a5da3b, 0xac995702, 0xef8d2c15, + 0xec82a4e4, 0xaf96dff3, 0x6aaa52ca, 0x29be29dd, 0xe0d348b9, + 0xa3c733ae, 0x66fbbe97, 0x25efc580, 0xf4207c5f, 0xb7340748, + 0x72088a71, 0x311cf166, 0xf8719002, 0xbb65eb15, 0x7e59662c, + 0x3d4d1d3b, 0x9dc06448, 0xded41f5f, 0x1be89266, 0x58fce971, + 0x91918815, 0xd285f302, 0x17b97e3b, 0x54ad052c, 0x8562bcf3, + 0xc676c7e4, 0x034a4add, 0x405e31ca, 0x893350ae, 0xca272bb9, + 0x0f1ba680, 0x4c0fdd97, 0x4803c7b8, 0x0b17bcaf, 0xce2b3196, + 0x8d3f4a81, 0x44522be5, 0x074650f2, 0xc27addcb, 0x816ea6dc, + 0x50a11f03, 0x13b56414, 0xd689e92d, 0x959d923a, 0x5cf0f35e, + 0x1fe48849, 0xdad80570, 0x99cc7e67, 0x39410714, 0x7a557c03, + 0xbf69f13a, 0xfc7d8a2d, 0x3510eb49, 0x7604905e, 0xb3381d67, + 0xf02c6670, 0x21e3dfaf, 0x62f7a4b8, 0xa7cb2981, 0xe4df5296, + 0x2db233f2, 0x6ea648e5, 0xab9ac5dc, 0xe88ebecb, 0xeb81363a, + 0xa8954d2d, 0x6da9c014, 0x2ebdbb03, 0xe7d0da67, 0xa4c4a170, + 0x61f82c49, 0x22ec575e, 0xf323ee81, 0xb0379596, 0x750b18af, + 0x361f63b8, 0xff7202dc, 0xbc6679cb, 0x795af4f2, 0x3a4e8fe5, + 0x9ac3f696, 0xd9d78d81, 0x1ceb00b8, 0x5fff7baf, 0x96921acb, + 0xd58661dc, 0x10baece5, 0x53ae97f2, 0x82612e2d, 0xc175553a, + 0x0449d803, 0x475da314, 0x8e30c270, 0xcd24b967, 0x0818345e, + 0x4b0c4f49}, + {0x00000000, 0x3e6bc2ef, 0x3dd0f504, 0x03bb37eb, 0x7aa0eb09, + 0x44cb29e6, 0x47701e0d, 0x791bdce2, 0xf440d713, 0xca2b15fc, + 0xc9902217, 0xf7fbe0f8, 0x8ee03c1a, 0xb08bfef5, 0xb330c91e, + 0x8d5b0bf1, 0xe881ae27, 0xd6ea6cc8, 0xd5515b23, 0xeb3a99cc, + 0x9221452e, 0xac4a87c1, 0xaff1b02a, 0x919a72c5, 0x1cc17934, + 0x22aabbdb, 0x21118c30, 0x1f7a4edf, 0x6661923d, 0x580a50d2, + 0x5bb16739, 0x65daa5d6, 0xd0035d4f, 0xee689fa0, 0xedd3a84b, + 0xd3b86aa4, 0xaaa3b646, 0x94c874a9, 0x97734342, 0xa91881ad, + 0x24438a5c, 0x1a2848b3, 0x19937f58, 0x27f8bdb7, 0x5ee36155, + 0x6088a3ba, 0x63339451, 0x5d5856be, 0x3882f368, 0x06e93187, + 0x0552066c, 0x3b39c483, 0x42221861, 0x7c49da8e, 0x7ff2ed65, + 0x41992f8a, 0xccc2247b, 0xf2a9e694, 0xf112d17f, 0xcf791390, + 0xb662cf72, 0x88090d9d, 0x8bb23a76, 0xb5d9f899, 0xa007ba9e, + 0x9e6c7871, 0x9dd74f9a, 0xa3bc8d75, 0xdaa75197, 0xe4cc9378, + 0xe777a493, 0xd91c667c, 0x54476d8d, 0x6a2caf62, 0x69979889, + 0x57fc5a66, 0x2ee78684, 0x108c446b, 0x13377380, 0x2d5cb16f, + 0x488614b9, 0x76edd656, 0x7556e1bd, 0x4b3d2352, 0x3226ffb0, + 0x0c4d3d5f, 0x0ff60ab4, 0x319dc85b, 0xbcc6c3aa, 0x82ad0145, + 0x811636ae, 0xbf7df441, 0xc66628a3, 0xf80dea4c, 0xfbb6dda7, + 0xc5dd1f48, 0x7004e7d1, 0x4e6f253e, 0x4dd412d5, 0x73bfd03a, + 0x0aa40cd8, 0x34cfce37, 0x3774f9dc, 0x091f3b33, 0x844430c2, + 0xba2ff22d, 0xb994c5c6, 0x87ff0729, 0xfee4dbcb, 0xc08f1924, + 0xc3342ecf, 0xfd5fec20, 0x988549f6, 0xa6ee8b19, 0xa555bcf2, + 0x9b3e7e1d, 0xe225a2ff, 0xdc4e6010, 0xdff557fb, 0xe19e9514, + 0x6cc59ee5, 0x52ae5c0a, 0x51156be1, 0x6f7ea90e, 0x166575ec, + 0x280eb703, 0x2bb580e8, 0x15de4207, 0x010905e6, 0x3f62c709, + 0x3cd9f0e2, 0x02b2320d, 0x7ba9eeef, 0x45c22c00, 0x46791beb, + 0x7812d904, 0xf549d2f5, 0xcb22101a, 0xc89927f1, 0xf6f2e51e, + 0x8fe939fc, 0xb182fb13, 0xb239ccf8, 0x8c520e17, 0xe988abc1, + 0xd7e3692e, 0xd4585ec5, 0xea339c2a, 0x932840c8, 0xad438227, + 0xaef8b5cc, 0x90937723, 0x1dc87cd2, 0x23a3be3d, 0x201889d6, + 0x1e734b39, 0x676897db, 0x59035534, 0x5ab862df, 0x64d3a030, + 0xd10a58a9, 0xef619a46, 0xecdaadad, 0xd2b16f42, 0xabaab3a0, + 0x95c1714f, 0x967a46a4, 0xa811844b, 0x254a8fba, 0x1b214d55, + 0x189a7abe, 0x26f1b851, 0x5fea64b3, 0x6181a65c, 0x623a91b7, + 0x5c515358, 0x398bf68e, 0x07e03461, 0x045b038a, 0x3a30c165, + 0x432b1d87, 0x7d40df68, 0x7efbe883, 0x40902a6c, 0xcdcb219d, + 0xf3a0e372, 0xf01bd499, 0xce701676, 0xb76bca94, 0x8900087b, + 0x8abb3f90, 0xb4d0fd7f, 0xa10ebf78, 0x9f657d97, 0x9cde4a7c, + 0xa2b58893, 0xdbae5471, 0xe5c5969e, 0xe67ea175, 0xd815639a, + 0x554e686b, 0x6b25aa84, 0x689e9d6f, 0x56f55f80, 0x2fee8362, + 0x1185418d, 0x123e7666, 0x2c55b489, 0x498f115f, 0x77e4d3b0, + 0x745fe45b, 0x4a3426b4, 0x332ffa56, 0x0d4438b9, 0x0eff0f52, + 0x3094cdbd, 0xbdcfc64c, 0x83a404a3, 0x801f3348, 0xbe74f1a7, + 0xc76f2d45, 0xf904efaa, 0xfabfd841, 0xc4d41aae, 0x710de237, + 0x4f6620d8, 0x4cdd1733, 0x72b6d5dc, 0x0bad093e, 0x35c6cbd1, + 0x367dfc3a, 0x08163ed5, 0x854d3524, 0xbb26f7cb, 0xb89dc020, + 0x86f602cf, 0xffedde2d, 0xc1861cc2, 0xc23d2b29, 0xfc56e9c6, + 0x998c4c10, 0xa7e78eff, 0xa45cb914, 0x9a377bfb, 0xe32ca719, + 0xdd4765f6, 0xdefc521d, 0xe09790f2, 0x6dcc9b03, 0x53a759ec, + 0x501c6e07, 0x6e77ace8, 0x176c700a, 0x2907b2e5, 0x2abc850e, + 0x14d747e1}, + {0x00000000, 0xc0df8ec1, 0xc1b96c58, 0x0166e299, 0x8273d9b0, + 0x42ac5771, 0x43cab5e8, 0x83153b29, 0x45e1c3ba, 0x853e4d7b, + 0x8458afe2, 0x44872123, 0xc7921a0a, 0x074d94cb, 0x062b7652, + 0xc6f4f893, 0xcbc4f6ae, 0x0b1b786f, 0x0a7d9af6, 0xcaa21437, + 0x49b72f1e, 0x8968a1df, 0x880e4346, 0x48d1cd87, 0x8e253514, + 0x4efabbd5, 0x4f9c594c, 0x8f43d78d, 0x0c56eca4, 0xcc896265, + 0xcdef80fc, 0x0d300e3d, 0xd78f9c86, 0x17501247, 0x1636f0de, + 0xd6e97e1f, 0x55fc4536, 0x9523cbf7, 0x9445296e, 0x549aa7af, + 0x926e5f3c, 0x52b1d1fd, 0x53d73364, 0x9308bda5, 0x101d868c, + 0xd0c2084d, 0xd1a4ead4, 0x117b6415, 0x1c4b6a28, 0xdc94e4e9, + 0xddf20670, 0x1d2d88b1, 0x9e38b398, 0x5ee73d59, 0x5f81dfc0, + 0x9f5e5101, 0x59aaa992, 0x99752753, 0x9813c5ca, 0x58cc4b0b, + 0xdbd97022, 0x1b06fee3, 0x1a601c7a, 0xdabf92bb, 0xef1948d6, + 0x2fc6c617, 0x2ea0248e, 0xee7faa4f, 0x6d6a9166, 0xadb51fa7, + 0xacd3fd3e, 0x6c0c73ff, 0xaaf88b6c, 0x6a2705ad, 0x6b41e734, + 0xab9e69f5, 0x288b52dc, 0xe854dc1d, 0xe9323e84, 0x29edb045, + 0x24ddbe78, 0xe40230b9, 0xe564d220, 0x25bb5ce1, 0xa6ae67c8, + 0x6671e909, 0x67170b90, 0xa7c88551, 0x613c7dc2, 0xa1e3f303, + 0xa085119a, 0x605a9f5b, 0xe34fa472, 0x23902ab3, 0x22f6c82a, + 0xe22946eb, 0x3896d450, 0xf8495a91, 0xf92fb808, 0x39f036c9, + 0xbae50de0, 0x7a3a8321, 0x7b5c61b8, 0xbb83ef79, 0x7d7717ea, + 0xbda8992b, 0xbcce7bb2, 0x7c11f573, 0xff04ce5a, 0x3fdb409b, + 0x3ebda202, 0xfe622cc3, 0xf35222fe, 0x338dac3f, 0x32eb4ea6, + 0xf234c067, 0x7121fb4e, 0xb1fe758f, 0xb0989716, 0x704719d7, + 0xb6b3e144, 0x766c6f85, 0x770a8d1c, 0xb7d503dd, 0x34c038f4, + 0xf41fb635, 0xf57954ac, 0x35a6da6d, 0x9f35e177, 0x5fea6fb6, + 0x5e8c8d2f, 0x9e5303ee, 0x1d4638c7, 0xdd99b606, 0xdcff549f, + 0x1c20da5e, 0xdad422cd, 0x1a0bac0c, 0x1b6d4e95, 0xdbb2c054, + 0x58a7fb7d, 0x987875bc, 0x991e9725, 0x59c119e4, 0x54f117d9, + 0x942e9918, 0x95487b81, 0x5597f540, 0xd682ce69, 0x165d40a8, + 0x173ba231, 0xd7e42cf0, 0x1110d463, 0xd1cf5aa2, 0xd0a9b83b, + 0x107636fa, 0x93630dd3, 0x53bc8312, 0x52da618b, 0x9205ef4a, + 0x48ba7df1, 0x8865f330, 0x890311a9, 0x49dc9f68, 0xcac9a441, + 0x0a162a80, 0x0b70c819, 0xcbaf46d8, 0x0d5bbe4b, 0xcd84308a, + 0xcce2d213, 0x0c3d5cd2, 0x8f2867fb, 0x4ff7e93a, 0x4e910ba3, + 0x8e4e8562, 0x837e8b5f, 0x43a1059e, 0x42c7e707, 0x821869c6, + 0x010d52ef, 0xc1d2dc2e, 0xc0b43eb7, 0x006bb076, 0xc69f48e5, + 0x0640c624, 0x072624bd, 0xc7f9aa7c, 0x44ec9155, 0x84331f94, + 0x8555fd0d, 0x458a73cc, 0x702ca9a1, 0xb0f32760, 0xb195c5f9, + 0x714a4b38, 0xf25f7011, 0x3280fed0, 0x33e61c49, 0xf3399288, + 0x35cd6a1b, 0xf512e4da, 0xf4740643, 0x34ab8882, 0xb7beb3ab, + 0x77613d6a, 0x7607dff3, 0xb6d85132, 0xbbe85f0f, 0x7b37d1ce, + 0x7a513357, 0xba8ebd96, 0x399b86bf, 0xf944087e, 0xf822eae7, + 0x38fd6426, 0xfe099cb5, 0x3ed61274, 0x3fb0f0ed, 0xff6f7e2c, + 0x7c7a4505, 0xbca5cbc4, 0xbdc3295d, 0x7d1ca79c, 0xa7a33527, + 0x677cbbe6, 0x661a597f, 0xa6c5d7be, 0x25d0ec97, 0xe50f6256, + 0xe46980cf, 0x24b60e0e, 0xe242f69d, 0x229d785c, 0x23fb9ac5, + 0xe3241404, 0x60312f2d, 0xa0eea1ec, 0xa1884375, 0x6157cdb4, + 0x6c67c389, 0xacb84d48, 0xaddeafd1, 0x6d012110, 0xee141a39, + 0x2ecb94f8, 0x2fad7661, 0xef72f8a0, 0x29860033, 0xe9598ef2, + 0xe83f6c6b, 0x28e0e2aa, 0xabf5d983, 0x6b2a5742, 0x6a4cb5db, + 0xaa933b1a}, + {0x00000000, 0x6f4ca59b, 0x9f9e3bec, 0xf0d29e77, 0x7f3b0603, + 0x1077a398, 0xe0a53def, 0x8fe99874, 0xfe760c06, 0x913aa99d, + 0x61e837ea, 0x0ea49271, 0x814d0a05, 0xee01af9e, 0x1ed331e9, + 0x719f9472, 0xfced180c, 0x93a1bd97, 0x637323e0, 0x0c3f867b, + 0x83d61e0f, 0xec9abb94, 0x1c4825e3, 0x73048078, 0x029b140a, + 0x6dd7b191, 0x9d052fe6, 0xf2498a7d, 0x7da01209, 0x12ecb792, + 0xe23e29e5, 0x8d728c7e, 0xf8db3118, 0x97979483, 0x67450af4, + 0x0809af6f, 0x87e0371b, 0xe8ac9280, 0x187e0cf7, 0x7732a96c, + 0x06ad3d1e, 0x69e19885, 0x993306f2, 0xf67fa369, 0x79963b1d, + 0x16da9e86, 0xe60800f1, 0x8944a56a, 0x04362914, 0x6b7a8c8f, + 0x9ba812f8, 0xf4e4b763, 0x7b0d2f17, 0x14418a8c, 0xe49314fb, + 0x8bdfb160, 0xfa402512, 0x950c8089, 0x65de1efe, 0x0a92bb65, + 0x857b2311, 0xea37868a, 0x1ae518fd, 0x75a9bd66, 0xf0b76330, + 0x9ffbc6ab, 0x6f2958dc, 0x0065fd47, 0x8f8c6533, 0xe0c0c0a8, + 0x10125edf, 0x7f5efb44, 0x0ec16f36, 0x618dcaad, 0x915f54da, + 0xfe13f141, 0x71fa6935, 0x1eb6ccae, 0xee6452d9, 0x8128f742, + 0x0c5a7b3c, 0x6316dea7, 0x93c440d0, 0xfc88e54b, 0x73617d3f, + 0x1c2dd8a4, 0xecff46d3, 0x83b3e348, 0xf22c773a, 0x9d60d2a1, + 0x6db24cd6, 0x02fee94d, 0x8d177139, 0xe25bd4a2, 0x12894ad5, + 0x7dc5ef4e, 0x086c5228, 0x6720f7b3, 0x97f269c4, 0xf8becc5f, + 0x7757542b, 0x181bf1b0, 0xe8c96fc7, 0x8785ca5c, 0xf61a5e2e, + 0x9956fbb5, 0x698465c2, 0x06c8c059, 0x8921582d, 0xe66dfdb6, + 0x16bf63c1, 0x79f3c65a, 0xf4814a24, 0x9bcdefbf, 0x6b1f71c8, + 0x0453d453, 0x8bba4c27, 0xe4f6e9bc, 0x142477cb, 0x7b68d250, + 0x0af74622, 0x65bbe3b9, 0x95697dce, 0xfa25d855, 0x75cc4021, + 0x1a80e5ba, 0xea527bcd, 0x851ede56, 0xe06fc760, 0x8f2362fb, + 0x7ff1fc8c, 0x10bd5917, 0x9f54c163, 0xf01864f8, 0x00cafa8f, + 0x6f865f14, 0x1e19cb66, 0x71556efd, 0x8187f08a, 0xeecb5511, + 0x6122cd65, 0x0e6e68fe, 0xfebcf689, 0x91f05312, 0x1c82df6c, + 0x73ce7af7, 0x831ce480, 0xec50411b, 0x63b9d96f, 0x0cf57cf4, + 0xfc27e283, 0x936b4718, 0xe2f4d36a, 0x8db876f1, 0x7d6ae886, + 0x12264d1d, 0x9dcfd569, 0xf28370f2, 0x0251ee85, 0x6d1d4b1e, + 0x18b4f678, 0x77f853e3, 0x872acd94, 0xe866680f, 0x678ff07b, + 0x08c355e0, 0xf811cb97, 0x975d6e0c, 0xe6c2fa7e, 0x898e5fe5, + 0x795cc192, 0x16106409, 0x99f9fc7d, 0xf6b559e6, 0x0667c791, + 0x692b620a, 0xe459ee74, 0x8b154bef, 0x7bc7d598, 0x148b7003, + 0x9b62e877, 0xf42e4dec, 0x04fcd39b, 0x6bb07600, 0x1a2fe272, + 0x756347e9, 0x85b1d99e, 0xeafd7c05, 0x6514e471, 0x0a5841ea, + 0xfa8adf9d, 0x95c67a06, 0x10d8a450, 0x7f9401cb, 0x8f469fbc, + 0xe00a3a27, 0x6fe3a253, 0x00af07c8, 0xf07d99bf, 0x9f313c24, + 0xeeaea856, 0x81e20dcd, 0x713093ba, 0x1e7c3621, 0x9195ae55, + 0xfed90bce, 0x0e0b95b9, 0x61473022, 0xec35bc5c, 0x837919c7, + 0x73ab87b0, 0x1ce7222b, 0x930eba5f, 0xfc421fc4, 0x0c9081b3, + 0x63dc2428, 0x1243b05a, 0x7d0f15c1, 0x8ddd8bb6, 0xe2912e2d, + 0x6d78b659, 0x023413c2, 0xf2e68db5, 0x9daa282e, 0xe8039548, + 0x874f30d3, 0x779daea4, 0x18d10b3f, 0x9738934b, 0xf87436d0, + 0x08a6a8a7, 0x67ea0d3c, 0x1675994e, 0x79393cd5, 0x89eba2a2, + 0xe6a70739, 0x694e9f4d, 0x06023ad6, 0xf6d0a4a1, 0x999c013a, + 0x14ee8d44, 0x7ba228df, 0x8b70b6a8, 0xe43c1333, 0x6bd58b47, + 0x04992edc, 0xf44bb0ab, 0x9b071530, 0xea988142, 0x85d424d9, + 0x7506baae, 0x1a4a1f35, 0x95a38741, 0xfaef22da, 0x0a3dbcad, + 0x65711936}}; + +#endif + +#endif + +#if N == 4 + +#if W == 8 + +local const z_crc_t FAR crc_braid_table[][256] = { + {0x00000000, 0xf1da05aa, 0x38c50d15, 0xc91f08bf, 0x718a1a2a, + 0x80501f80, 0x494f173f, 0xb8951295, 0xe3143454, 0x12ce31fe, + 0xdbd13941, 0x2a0b3ceb, 0x929e2e7e, 0x63442bd4, 0xaa5b236b, + 0x5b8126c1, 0x1d596ee9, 0xec836b43, 0x259c63fc, 0xd4466656, + 0x6cd374c3, 0x9d097169, 0x541679d6, 0xa5cc7c7c, 0xfe4d5abd, + 0x0f975f17, 0xc68857a8, 0x37525202, 0x8fc74097, 0x7e1d453d, + 0xb7024d82, 0x46d84828, 0x3ab2ddd2, 0xcb68d878, 0x0277d0c7, + 0xf3add56d, 0x4b38c7f8, 0xbae2c252, 0x73fdcaed, 0x8227cf47, + 0xd9a6e986, 0x287cec2c, 0xe163e493, 0x10b9e139, 0xa82cf3ac, + 0x59f6f606, 0x90e9feb9, 0x6133fb13, 0x27ebb33b, 0xd631b691, + 0x1f2ebe2e, 0xeef4bb84, 0x5661a911, 0xa7bbacbb, 0x6ea4a404, + 0x9f7ea1ae, 0xc4ff876f, 0x352582c5, 0xfc3a8a7a, 0x0de08fd0, + 0xb5759d45, 0x44af98ef, 0x8db09050, 0x7c6a95fa, 0x7565bba4, + 0x84bfbe0e, 0x4da0b6b1, 0xbc7ab31b, 0x04efa18e, 0xf535a424, + 0x3c2aac9b, 0xcdf0a931, 0x96718ff0, 0x67ab8a5a, 0xaeb482e5, + 0x5f6e874f, 0xe7fb95da, 0x16219070, 0xdf3e98cf, 0x2ee49d65, + 0x683cd54d, 0x99e6d0e7, 0x50f9d858, 0xa123ddf2, 0x19b6cf67, + 0xe86ccacd, 0x2173c272, 0xd0a9c7d8, 0x8b28e119, 0x7af2e4b3, + 0xb3edec0c, 0x4237e9a6, 0xfaa2fb33, 0x0b78fe99, 0xc267f626, + 0x33bdf38c, 0x4fd76676, 0xbe0d63dc, 0x77126b63, 0x86c86ec9, + 0x3e5d7c5c, 0xcf8779f6, 0x06987149, 0xf74274e3, 0xacc35222, + 0x5d195788, 0x94065f37, 0x65dc5a9d, 0xdd494808, 0x2c934da2, + 0xe58c451d, 0x145640b7, 0x528e089f, 0xa3540d35, 0x6a4b058a, + 0x9b910020, 0x230412b5, 0xd2de171f, 0x1bc11fa0, 0xea1b1a0a, + 0xb19a3ccb, 0x40403961, 0x895f31de, 0x78853474, 0xc01026e1, + 0x31ca234b, 0xf8d52bf4, 0x090f2e5e, 0xeacb7748, 0x1b1172e2, + 0xd20e7a5d, 0x23d47ff7, 0x9b416d62, 0x6a9b68c8, 0xa3846077, + 0x525e65dd, 0x09df431c, 0xf80546b6, 0x311a4e09, 0xc0c04ba3, + 0x78555936, 0x898f5c9c, 0x40905423, 0xb14a5189, 0xf79219a1, + 0x06481c0b, 0xcf5714b4, 0x3e8d111e, 0x8618038b, 0x77c20621, + 0xbedd0e9e, 0x4f070b34, 0x14862df5, 0xe55c285f, 0x2c4320e0, + 0xdd99254a, 0x650c37df, 0x94d63275, 0x5dc93aca, 0xac133f60, + 0xd079aa9a, 0x21a3af30, 0xe8bca78f, 0x1966a225, 0xa1f3b0b0, + 0x5029b51a, 0x9936bda5, 0x68ecb80f, 0x336d9ece, 0xc2b79b64, + 0x0ba893db, 0xfa729671, 0x42e784e4, 0xb33d814e, 0x7a2289f1, + 0x8bf88c5b, 0xcd20c473, 0x3cfac1d9, 0xf5e5c966, 0x043fcccc, + 0xbcaade59, 0x4d70dbf3, 0x846fd34c, 0x75b5d6e6, 0x2e34f027, + 0xdfeef58d, 0x16f1fd32, 0xe72bf898, 0x5fbeea0d, 0xae64efa7, + 0x677be718, 0x96a1e2b2, 0x9faeccec, 0x6e74c946, 0xa76bc1f9, + 0x56b1c453, 0xee24d6c6, 0x1ffed36c, 0xd6e1dbd3, 0x273bde79, + 0x7cbaf8b8, 0x8d60fd12, 0x447ff5ad, 0xb5a5f007, 0x0d30e292, + 0xfceae738, 0x35f5ef87, 0xc42fea2d, 0x82f7a205, 0x732da7af, + 0xba32af10, 0x4be8aaba, 0xf37db82f, 0x02a7bd85, 0xcbb8b53a, + 0x3a62b090, 0x61e39651, 0x903993fb, 0x59269b44, 0xa8fc9eee, + 0x10698c7b, 0xe1b389d1, 0x28ac816e, 0xd97684c4, 0xa51c113e, + 0x54c61494, 0x9dd91c2b, 0x6c031981, 0xd4960b14, 0x254c0ebe, + 0xec530601, 0x1d8903ab, 0x4608256a, 0xb7d220c0, 0x7ecd287f, + 0x8f172dd5, 0x37823f40, 0xc6583aea, 0x0f473255, 0xfe9d37ff, + 0xb8457fd7, 0x499f7a7d, 0x808072c2, 0x715a7768, 0xc9cf65fd, + 0x38156057, 0xf10a68e8, 0x00d06d42, 0x5b514b83, 0xaa8b4e29, + 0x63944696, 0x924e433c, 0x2adb51a9, 0xdb015403, 0x121e5cbc, + 0xe3c45916}, + {0x00000000, 0x0ee7e8d1, 0x1dcfd1a2, 0x13283973, 0x3b9fa344, + 0x35784b95, 0x265072e6, 0x28b79a37, 0x773f4688, 0x79d8ae59, + 0x6af0972a, 0x64177ffb, 0x4ca0e5cc, 0x42470d1d, 0x516f346e, + 0x5f88dcbf, 0xee7e8d10, 0xe09965c1, 0xf3b15cb2, 0xfd56b463, + 0xd5e12e54, 0xdb06c685, 0xc82efff6, 0xc6c91727, 0x9941cb98, + 0x97a62349, 0x848e1a3a, 0x8a69f2eb, 0xa2de68dc, 0xac39800d, + 0xbf11b97e, 0xb1f651af, 0x078c1c61, 0x096bf4b0, 0x1a43cdc3, + 0x14a42512, 0x3c13bf25, 0x32f457f4, 0x21dc6e87, 0x2f3b8656, + 0x70b35ae9, 0x7e54b238, 0x6d7c8b4b, 0x639b639a, 0x4b2cf9ad, + 0x45cb117c, 0x56e3280f, 0x5804c0de, 0xe9f29171, 0xe71579a0, + 0xf43d40d3, 0xfadaa802, 0xd26d3235, 0xdc8adae4, 0xcfa2e397, + 0xc1450b46, 0x9ecdd7f9, 0x902a3f28, 0x8302065b, 0x8de5ee8a, + 0xa55274bd, 0xabb59c6c, 0xb89da51f, 0xb67a4dce, 0x0f1838c2, + 0x01ffd013, 0x12d7e960, 0x1c3001b1, 0x34879b86, 0x3a607357, + 0x29484a24, 0x27afa2f5, 0x78277e4a, 0x76c0969b, 0x65e8afe8, + 0x6b0f4739, 0x43b8dd0e, 0x4d5f35df, 0x5e770cac, 0x5090e47d, + 0xe166b5d2, 0xef815d03, 0xfca96470, 0xf24e8ca1, 0xdaf91696, + 0xd41efe47, 0xc736c734, 0xc9d12fe5, 0x9659f35a, 0x98be1b8b, + 0x8b9622f8, 0x8571ca29, 0xadc6501e, 0xa321b8cf, 0xb00981bc, + 0xbeee696d, 0x089424a3, 0x0673cc72, 0x155bf501, 0x1bbc1dd0, + 0x330b87e7, 0x3dec6f36, 0x2ec45645, 0x2023be94, 0x7fab622b, + 0x714c8afa, 0x6264b389, 0x6c835b58, 0x4434c16f, 0x4ad329be, + 0x59fb10cd, 0x571cf81c, 0xe6eaa9b3, 0xe80d4162, 0xfb257811, + 0xf5c290c0, 0xdd750af7, 0xd392e226, 0xc0badb55, 0xce5d3384, + 0x91d5ef3b, 0x9f3207ea, 0x8c1a3e99, 0x82fdd648, 0xaa4a4c7f, + 0xa4ada4ae, 0xb7859ddd, 0xb962750c, 0x1e307184, 0x10d79955, + 0x03ffa026, 0x0d1848f7, 0x25afd2c0, 0x2b483a11, 0x38600362, + 0x3687ebb3, 0x690f370c, 0x67e8dfdd, 0x74c0e6ae, 0x7a270e7f, + 0x52909448, 0x5c777c99, 0x4f5f45ea, 0x41b8ad3b, 0xf04efc94, + 0xfea91445, 0xed812d36, 0xe366c5e7, 0xcbd15fd0, 0xc536b701, + 0xd61e8e72, 0xd8f966a3, 0x8771ba1c, 0x899652cd, 0x9abe6bbe, + 0x9459836f, 0xbcee1958, 0xb209f189, 0xa121c8fa, 0xafc6202b, + 0x19bc6de5, 0x175b8534, 0x0473bc47, 0x0a945496, 0x2223cea1, + 0x2cc42670, 0x3fec1f03, 0x310bf7d2, 0x6e832b6d, 0x6064c3bc, + 0x734cfacf, 0x7dab121e, 0x551c8829, 0x5bfb60f8, 0x48d3598b, + 0x4634b15a, 0xf7c2e0f5, 0xf9250824, 0xea0d3157, 0xe4ead986, + 0xcc5d43b1, 0xc2baab60, 0xd1929213, 0xdf757ac2, 0x80fda67d, + 0x8e1a4eac, 0x9d3277df, 0x93d59f0e, 0xbb620539, 0xb585ede8, + 0xa6add49b, 0xa84a3c4a, 0x11284946, 0x1fcfa197, 0x0ce798e4, + 0x02007035, 0x2ab7ea02, 0x245002d3, 0x37783ba0, 0x399fd371, + 0x66170fce, 0x68f0e71f, 0x7bd8de6c, 0x753f36bd, 0x5d88ac8a, + 0x536f445b, 0x40477d28, 0x4ea095f9, 0xff56c456, 0xf1b12c87, + 0xe29915f4, 0xec7efd25, 0xc4c96712, 0xca2e8fc3, 0xd906b6b0, + 0xd7e15e61, 0x886982de, 0x868e6a0f, 0x95a6537c, 0x9b41bbad, + 0xb3f6219a, 0xbd11c94b, 0xae39f038, 0xa0de18e9, 0x16a45527, + 0x1843bdf6, 0x0b6b8485, 0x058c6c54, 0x2d3bf663, 0x23dc1eb2, + 0x30f427c1, 0x3e13cf10, 0x619b13af, 0x6f7cfb7e, 0x7c54c20d, + 0x72b32adc, 0x5a04b0eb, 0x54e3583a, 0x47cb6149, 0x492c8998, + 0xf8dad837, 0xf63d30e6, 0xe5150995, 0xebf2e144, 0xc3457b73, + 0xcda293a2, 0xde8aaad1, 0xd06d4200, 0x8fe59ebf, 0x8102766e, + 0x922a4f1d, 0x9ccda7cc, 0xb47a3dfb, 0xba9dd52a, 0xa9b5ec59, + 0xa7520488}, + {0x00000000, 0x3c60e308, 0x78c1c610, 0x44a12518, 0xf1838c20, + 0xcde36f28, 0x89424a30, 0xb522a938, 0x38761e01, 0x0416fd09, + 0x40b7d811, 0x7cd73b19, 0xc9f59221, 0xf5957129, 0xb1345431, + 0x8d54b739, 0x70ec3c02, 0x4c8cdf0a, 0x082dfa12, 0x344d191a, + 0x816fb022, 0xbd0f532a, 0xf9ae7632, 0xc5ce953a, 0x489a2203, + 0x74fac10b, 0x305be413, 0x0c3b071b, 0xb919ae23, 0x85794d2b, + 0xc1d86833, 0xfdb88b3b, 0xe1d87804, 0xddb89b0c, 0x9919be14, + 0xa5795d1c, 0x105bf424, 0x2c3b172c, 0x689a3234, 0x54fad13c, + 0xd9ae6605, 0xe5ce850d, 0xa16fa015, 0x9d0f431d, 0x282dea25, + 0x144d092d, 0x50ec2c35, 0x6c8ccf3d, 0x91344406, 0xad54a70e, + 0xe9f58216, 0xd595611e, 0x60b7c826, 0x5cd72b2e, 0x18760e36, + 0x2416ed3e, 0xa9425a07, 0x9522b90f, 0xd1839c17, 0xede37f1f, + 0x58c1d627, 0x64a1352f, 0x20001037, 0x1c60f33f, 0x18c1f649, + 0x24a11541, 0x60003059, 0x5c60d351, 0xe9427a69, 0xd5229961, + 0x9183bc79, 0xade35f71, 0x20b7e848, 0x1cd70b40, 0x58762e58, + 0x6416cd50, 0xd1346468, 0xed548760, 0xa9f5a278, 0x95954170, + 0x682dca4b, 0x544d2943, 0x10ec0c5b, 0x2c8cef53, 0x99ae466b, + 0xa5cea563, 0xe16f807b, 0xdd0f6373, 0x505bd44a, 0x6c3b3742, + 0x289a125a, 0x14faf152, 0xa1d8586a, 0x9db8bb62, 0xd9199e7a, + 0xe5797d72, 0xf9198e4d, 0xc5796d45, 0x81d8485d, 0xbdb8ab55, + 0x089a026d, 0x34fae165, 0x705bc47d, 0x4c3b2775, 0xc16f904c, + 0xfd0f7344, 0xb9ae565c, 0x85ceb554, 0x30ec1c6c, 0x0c8cff64, + 0x482dda7c, 0x744d3974, 0x89f5b24f, 0xb5955147, 0xf134745f, + 0xcd549757, 0x78763e6f, 0x4416dd67, 0x00b7f87f, 0x3cd71b77, + 0xb183ac4e, 0x8de34f46, 0xc9426a5e, 0xf5228956, 0x4000206e, + 0x7c60c366, 0x38c1e67e, 0x04a10576, 0x3183ec92, 0x0de30f9a, + 0x49422a82, 0x7522c98a, 0xc00060b2, 0xfc6083ba, 0xb8c1a6a2, + 0x84a145aa, 0x09f5f293, 0x3595119b, 0x71343483, 0x4d54d78b, + 0xf8767eb3, 0xc4169dbb, 0x80b7b8a3, 0xbcd75bab, 0x416fd090, + 0x7d0f3398, 0x39ae1680, 0x05cef588, 0xb0ec5cb0, 0x8c8cbfb8, + 0xc82d9aa0, 0xf44d79a8, 0x7919ce91, 0x45792d99, 0x01d80881, + 0x3db8eb89, 0x889a42b1, 0xb4faa1b9, 0xf05b84a1, 0xcc3b67a9, + 0xd05b9496, 0xec3b779e, 0xa89a5286, 0x94fab18e, 0x21d818b6, + 0x1db8fbbe, 0x5919dea6, 0x65793dae, 0xe82d8a97, 0xd44d699f, + 0x90ec4c87, 0xac8caf8f, 0x19ae06b7, 0x25cee5bf, 0x616fc0a7, + 0x5d0f23af, 0xa0b7a894, 0x9cd74b9c, 0xd8766e84, 0xe4168d8c, + 0x513424b4, 0x6d54c7bc, 0x29f5e2a4, 0x159501ac, 0x98c1b695, + 0xa4a1559d, 0xe0007085, 0xdc60938d, 0x69423ab5, 0x5522d9bd, + 0x1183fca5, 0x2de31fad, 0x29421adb, 0x1522f9d3, 0x5183dccb, + 0x6de33fc3, 0xd8c196fb, 0xe4a175f3, 0xa00050eb, 0x9c60b3e3, + 0x113404da, 0x2d54e7d2, 0x69f5c2ca, 0x559521c2, 0xe0b788fa, + 0xdcd76bf2, 0x98764eea, 0xa416ade2, 0x59ae26d9, 0x65cec5d1, + 0x216fe0c9, 0x1d0f03c1, 0xa82daaf9, 0x944d49f1, 0xd0ec6ce9, + 0xec8c8fe1, 0x61d838d8, 0x5db8dbd0, 0x1919fec8, 0x25791dc0, + 0x905bb4f8, 0xac3b57f0, 0xe89a72e8, 0xd4fa91e0, 0xc89a62df, + 0xf4fa81d7, 0xb05ba4cf, 0x8c3b47c7, 0x3919eeff, 0x05790df7, + 0x41d828ef, 0x7db8cbe7, 0xf0ec7cde, 0xcc8c9fd6, 0x882dbace, + 0xb44d59c6, 0x016ff0fe, 0x3d0f13f6, 0x79ae36ee, 0x45ced5e6, + 0xb8765edd, 0x8416bdd5, 0xc0b798cd, 0xfcd77bc5, 0x49f5d2fd, + 0x759531f5, 0x313414ed, 0x0d54f7e5, 0x800040dc, 0xbc60a3d4, + 0xf8c186cc, 0xc4a165c4, 0x7183ccfc, 0x4de32ff4, 0x09420aec, + 0x3522e9e4}, + {0x00000000, 0x6307d924, 0xc60fb248, 0xa5086b6c, 0x576e62d1, + 0x3469bbf5, 0x9161d099, 0xf26609bd, 0xaedcc5a2, 0xcddb1c86, + 0x68d377ea, 0x0bd4aece, 0xf9b2a773, 0x9ab57e57, 0x3fbd153b, + 0x5cbacc1f, 0x86c88d05, 0xe5cf5421, 0x40c73f4d, 0x23c0e669, + 0xd1a6efd4, 0xb2a136f0, 0x17a95d9c, 0x74ae84b8, 0x281448a7, + 0x4b139183, 0xee1bfaef, 0x8d1c23cb, 0x7f7a2a76, 0x1c7df352, + 0xb975983e, 0xda72411a, 0xd6e01c4b, 0xb5e7c56f, 0x10efae03, + 0x73e87727, 0x818e7e9a, 0xe289a7be, 0x4781ccd2, 0x248615f6, + 0x783cd9e9, 0x1b3b00cd, 0xbe336ba1, 0xdd34b285, 0x2f52bb38, + 0x4c55621c, 0xe95d0970, 0x8a5ad054, 0x5028914e, 0x332f486a, + 0x96272306, 0xf520fa22, 0x0746f39f, 0x64412abb, 0xc14941d7, + 0xa24e98f3, 0xfef454ec, 0x9df38dc8, 0x38fbe6a4, 0x5bfc3f80, + 0xa99a363d, 0xca9def19, 0x6f958475, 0x0c925d51, 0x76b13ed7, + 0x15b6e7f3, 0xb0be8c9f, 0xd3b955bb, 0x21df5c06, 0x42d88522, + 0xe7d0ee4e, 0x84d7376a, 0xd86dfb75, 0xbb6a2251, 0x1e62493d, + 0x7d659019, 0x8f0399a4, 0xec044080, 0x490c2bec, 0x2a0bf2c8, + 0xf079b3d2, 0x937e6af6, 0x3676019a, 0x5571d8be, 0xa717d103, + 0xc4100827, 0x6118634b, 0x021fba6f, 0x5ea57670, 0x3da2af54, + 0x98aac438, 0xfbad1d1c, 0x09cb14a1, 0x6acccd85, 0xcfc4a6e9, + 0xacc37fcd, 0xa051229c, 0xc356fbb8, 0x665e90d4, 0x055949f0, + 0xf73f404d, 0x94389969, 0x3130f205, 0x52372b21, 0x0e8de73e, + 0x6d8a3e1a, 0xc8825576, 0xab858c52, 0x59e385ef, 0x3ae45ccb, + 0x9fec37a7, 0xfcebee83, 0x2699af99, 0x459e76bd, 0xe0961dd1, + 0x8391c4f5, 0x71f7cd48, 0x12f0146c, 0xb7f87f00, 0xd4ffa624, + 0x88456a3b, 0xeb42b31f, 0x4e4ad873, 0x2d4d0157, 0xdf2b08ea, + 0xbc2cd1ce, 0x1924baa2, 0x7a236386, 0xed627dae, 0x8e65a48a, + 0x2b6dcfe6, 0x486a16c2, 0xba0c1f7f, 0xd90bc65b, 0x7c03ad37, + 0x1f047413, 0x43beb80c, 0x20b96128, 0x85b10a44, 0xe6b6d360, + 0x14d0dadd, 0x77d703f9, 0xd2df6895, 0xb1d8b1b1, 0x6baaf0ab, + 0x08ad298f, 0xada542e3, 0xcea29bc7, 0x3cc4927a, 0x5fc34b5e, + 0xfacb2032, 0x99ccf916, 0xc5763509, 0xa671ec2d, 0x03798741, + 0x607e5e65, 0x921857d8, 0xf11f8efc, 0x5417e590, 0x37103cb4, + 0x3b8261e5, 0x5885b8c1, 0xfd8dd3ad, 0x9e8a0a89, 0x6cec0334, + 0x0febda10, 0xaae3b17c, 0xc9e46858, 0x955ea447, 0xf6597d63, + 0x5351160f, 0x3056cf2b, 0xc230c696, 0xa1371fb2, 0x043f74de, + 0x6738adfa, 0xbd4aece0, 0xde4d35c4, 0x7b455ea8, 0x1842878c, + 0xea248e31, 0x89235715, 0x2c2b3c79, 0x4f2ce55d, 0x13962942, + 0x7091f066, 0xd5999b0a, 0xb69e422e, 0x44f84b93, 0x27ff92b7, + 0x82f7f9db, 0xe1f020ff, 0x9bd34379, 0xf8d49a5d, 0x5ddcf131, + 0x3edb2815, 0xccbd21a8, 0xafbaf88c, 0x0ab293e0, 0x69b54ac4, + 0x350f86db, 0x56085fff, 0xf3003493, 0x9007edb7, 0x6261e40a, + 0x01663d2e, 0xa46e5642, 0xc7698f66, 0x1d1bce7c, 0x7e1c1758, + 0xdb147c34, 0xb813a510, 0x4a75acad, 0x29727589, 0x8c7a1ee5, + 0xef7dc7c1, 0xb3c70bde, 0xd0c0d2fa, 0x75c8b996, 0x16cf60b2, + 0xe4a9690f, 0x87aeb02b, 0x22a6db47, 0x41a10263, 0x4d335f32, + 0x2e348616, 0x8b3ced7a, 0xe83b345e, 0x1a5d3de3, 0x795ae4c7, + 0xdc528fab, 0xbf55568f, 0xe3ef9a90, 0x80e843b4, 0x25e028d8, + 0x46e7f1fc, 0xb481f841, 0xd7862165, 0x728e4a09, 0x1189932d, + 0xcbfbd237, 0xa8fc0b13, 0x0df4607f, 0x6ef3b95b, 0x9c95b0e6, + 0xff9269c2, 0x5a9a02ae, 0x399ddb8a, 0x65271795, 0x0620ceb1, + 0xa328a5dd, 0xc02f7cf9, 0x32497544, 0x514eac60, 0xf446c70c, + 0x97411e28}, + {0x00000000, 0x01b5fd1d, 0x036bfa3a, 0x02de0727, 0x06d7f474, + 0x07620969, 0x05bc0e4e, 0x0409f353, 0x0dafe8e8, 0x0c1a15f5, + 0x0ec412d2, 0x0f71efcf, 0x0b781c9c, 0x0acde181, 0x0813e6a6, + 0x09a61bbb, 0x1b5fd1d0, 0x1aea2ccd, 0x18342bea, 0x1981d6f7, + 0x1d8825a4, 0x1c3dd8b9, 0x1ee3df9e, 0x1f562283, 0x16f03938, + 0x1745c425, 0x159bc302, 0x142e3e1f, 0x1027cd4c, 0x11923051, + 0x134c3776, 0x12f9ca6b, 0x36bfa3a0, 0x370a5ebd, 0x35d4599a, + 0x3461a487, 0x306857d4, 0x31ddaac9, 0x3303adee, 0x32b650f3, + 0x3b104b48, 0x3aa5b655, 0x387bb172, 0x39ce4c6f, 0x3dc7bf3c, + 0x3c724221, 0x3eac4506, 0x3f19b81b, 0x2de07270, 0x2c558f6d, + 0x2e8b884a, 0x2f3e7557, 0x2b378604, 0x2a827b19, 0x285c7c3e, + 0x29e98123, 0x204f9a98, 0x21fa6785, 0x232460a2, 0x22919dbf, + 0x26986eec, 0x272d93f1, 0x25f394d6, 0x244669cb, 0x6d7f4740, + 0x6ccaba5d, 0x6e14bd7a, 0x6fa14067, 0x6ba8b334, 0x6a1d4e29, + 0x68c3490e, 0x6976b413, 0x60d0afa8, 0x616552b5, 0x63bb5592, + 0x620ea88f, 0x66075bdc, 0x67b2a6c1, 0x656ca1e6, 0x64d95cfb, + 0x76209690, 0x77956b8d, 0x754b6caa, 0x74fe91b7, 0x70f762e4, + 0x71429ff9, 0x739c98de, 0x722965c3, 0x7b8f7e78, 0x7a3a8365, + 0x78e48442, 0x7951795f, 0x7d588a0c, 0x7ced7711, 0x7e337036, + 0x7f868d2b, 0x5bc0e4e0, 0x5a7519fd, 0x58ab1eda, 0x591ee3c7, + 0x5d171094, 0x5ca2ed89, 0x5e7ceaae, 0x5fc917b3, 0x566f0c08, + 0x57daf115, 0x5504f632, 0x54b10b2f, 0x50b8f87c, 0x510d0561, + 0x53d30246, 0x5266ff5b, 0x409f3530, 0x412ac82d, 0x43f4cf0a, + 0x42413217, 0x4648c144, 0x47fd3c59, 0x45233b7e, 0x4496c663, + 0x4d30ddd8, 0x4c8520c5, 0x4e5b27e2, 0x4feedaff, 0x4be729ac, + 0x4a52d4b1, 0x488cd396, 0x49392e8b, 0xdafe8e80, 0xdb4b739d, + 0xd99574ba, 0xd82089a7, 0xdc297af4, 0xdd9c87e9, 0xdf4280ce, + 0xdef77dd3, 0xd7516668, 0xd6e49b75, 0xd43a9c52, 0xd58f614f, + 0xd186921c, 0xd0336f01, 0xd2ed6826, 0xd358953b, 0xc1a15f50, + 0xc014a24d, 0xc2caa56a, 0xc37f5877, 0xc776ab24, 0xc6c35639, + 0xc41d511e, 0xc5a8ac03, 0xcc0eb7b8, 0xcdbb4aa5, 0xcf654d82, + 0xced0b09f, 0xcad943cc, 0xcb6cbed1, 0xc9b2b9f6, 0xc80744eb, + 0xec412d20, 0xedf4d03d, 0xef2ad71a, 0xee9f2a07, 0xea96d954, + 0xeb232449, 0xe9fd236e, 0xe848de73, 0xe1eec5c8, 0xe05b38d5, + 0xe2853ff2, 0xe330c2ef, 0xe73931bc, 0xe68ccca1, 0xe452cb86, + 0xe5e7369b, 0xf71efcf0, 0xf6ab01ed, 0xf47506ca, 0xf5c0fbd7, + 0xf1c90884, 0xf07cf599, 0xf2a2f2be, 0xf3170fa3, 0xfab11418, + 0xfb04e905, 0xf9daee22, 0xf86f133f, 0xfc66e06c, 0xfdd31d71, + 0xff0d1a56, 0xfeb8e74b, 0xb781c9c0, 0xb63434dd, 0xb4ea33fa, + 0xb55fcee7, 0xb1563db4, 0xb0e3c0a9, 0xb23dc78e, 0xb3883a93, + 0xba2e2128, 0xbb9bdc35, 0xb945db12, 0xb8f0260f, 0xbcf9d55c, + 0xbd4c2841, 0xbf922f66, 0xbe27d27b, 0xacde1810, 0xad6be50d, + 0xafb5e22a, 0xae001f37, 0xaa09ec64, 0xabbc1179, 0xa962165e, + 0xa8d7eb43, 0xa171f0f8, 0xa0c40de5, 0xa21a0ac2, 0xa3aff7df, + 0xa7a6048c, 0xa613f991, 0xa4cdfeb6, 0xa57803ab, 0x813e6a60, + 0x808b977d, 0x8255905a, 0x83e06d47, 0x87e99e14, 0x865c6309, + 0x8482642e, 0x85379933, 0x8c918288, 0x8d247f95, 0x8ffa78b2, + 0x8e4f85af, 0x8a4676fc, 0x8bf38be1, 0x892d8cc6, 0x889871db, + 0x9a61bbb0, 0x9bd446ad, 0x990a418a, 0x98bfbc97, 0x9cb64fc4, + 0x9d03b2d9, 0x9fddb5fe, 0x9e6848e3, 0x97ce5358, 0x967bae45, + 0x94a5a962, 0x9510547f, 0x9119a72c, 0x90ac5a31, 0x92725d16, + 0x93c7a00b}, + {0x00000000, 0x6e8c1b41, 0xdd183682, 0xb3942dc3, 0x61416b45, + 0x0fcd7004, 0xbc595dc7, 0xd2d54686, 0xc282d68a, 0xac0ecdcb, + 0x1f9ae008, 0x7116fb49, 0xa3c3bdcf, 0xcd4fa68e, 0x7edb8b4d, + 0x1057900c, 0x5e74ab55, 0x30f8b014, 0x836c9dd7, 0xede08696, + 0x3f35c010, 0x51b9db51, 0xe22df692, 0x8ca1edd3, 0x9cf67ddf, + 0xf27a669e, 0x41ee4b5d, 0x2f62501c, 0xfdb7169a, 0x933b0ddb, + 0x20af2018, 0x4e233b59, 0xbce956aa, 0xd2654deb, 0x61f16028, + 0x0f7d7b69, 0xdda83def, 0xb32426ae, 0x00b00b6d, 0x6e3c102c, + 0x7e6b8020, 0x10e79b61, 0xa373b6a2, 0xcdffade3, 0x1f2aeb65, + 0x71a6f024, 0xc232dde7, 0xacbec6a6, 0xe29dfdff, 0x8c11e6be, + 0x3f85cb7d, 0x5109d03c, 0x83dc96ba, 0xed508dfb, 0x5ec4a038, + 0x3048bb79, 0x201f2b75, 0x4e933034, 0xfd071df7, 0x938b06b6, + 0x415e4030, 0x2fd25b71, 0x9c4676b2, 0xf2ca6df3, 0xa2a3ab15, + 0xcc2fb054, 0x7fbb9d97, 0x113786d6, 0xc3e2c050, 0xad6edb11, + 0x1efaf6d2, 0x7076ed93, 0x60217d9f, 0x0ead66de, 0xbd394b1d, + 0xd3b5505c, 0x016016da, 0x6fec0d9b, 0xdc782058, 0xb2f43b19, + 0xfcd70040, 0x925b1b01, 0x21cf36c2, 0x4f432d83, 0x9d966b05, + 0xf31a7044, 0x408e5d87, 0x2e0246c6, 0x3e55d6ca, 0x50d9cd8b, + 0xe34de048, 0x8dc1fb09, 0x5f14bd8f, 0x3198a6ce, 0x820c8b0d, + 0xec80904c, 0x1e4afdbf, 0x70c6e6fe, 0xc352cb3d, 0xadded07c, + 0x7f0b96fa, 0x11878dbb, 0xa213a078, 0xcc9fbb39, 0xdcc82b35, + 0xb2443074, 0x01d01db7, 0x6f5c06f6, 0xbd894070, 0xd3055b31, + 0x609176f2, 0x0e1d6db3, 0x403e56ea, 0x2eb24dab, 0x9d266068, + 0xf3aa7b29, 0x217f3daf, 0x4ff326ee, 0xfc670b2d, 0x92eb106c, + 0x82bc8060, 0xec309b21, 0x5fa4b6e2, 0x3128ada3, 0xe3fdeb25, + 0x8d71f064, 0x3ee5dda7, 0x5069c6e6, 0x9e36506b, 0xf0ba4b2a, + 0x432e66e9, 0x2da27da8, 0xff773b2e, 0x91fb206f, 0x226f0dac, + 0x4ce316ed, 0x5cb486e1, 0x32389da0, 0x81acb063, 0xef20ab22, + 0x3df5eda4, 0x5379f6e5, 0xe0eddb26, 0x8e61c067, 0xc042fb3e, + 0xaecee07f, 0x1d5acdbc, 0x73d6d6fd, 0xa103907b, 0xcf8f8b3a, + 0x7c1ba6f9, 0x1297bdb8, 0x02c02db4, 0x6c4c36f5, 0xdfd81b36, + 0xb1540077, 0x638146f1, 0x0d0d5db0, 0xbe997073, 0xd0156b32, + 0x22df06c1, 0x4c531d80, 0xffc73043, 0x914b2b02, 0x439e6d84, + 0x2d1276c5, 0x9e865b06, 0xf00a4047, 0xe05dd04b, 0x8ed1cb0a, + 0x3d45e6c9, 0x53c9fd88, 0x811cbb0e, 0xef90a04f, 0x5c048d8c, + 0x328896cd, 0x7cabad94, 0x1227b6d5, 0xa1b39b16, 0xcf3f8057, + 0x1deac6d1, 0x7366dd90, 0xc0f2f053, 0xae7eeb12, 0xbe297b1e, + 0xd0a5605f, 0x63314d9c, 0x0dbd56dd, 0xdf68105b, 0xb1e40b1a, + 0x027026d9, 0x6cfc3d98, 0x3c95fb7e, 0x5219e03f, 0xe18dcdfc, + 0x8f01d6bd, 0x5dd4903b, 0x33588b7a, 0x80cca6b9, 0xee40bdf8, + 0xfe172df4, 0x909b36b5, 0x230f1b76, 0x4d830037, 0x9f5646b1, + 0xf1da5df0, 0x424e7033, 0x2cc26b72, 0x62e1502b, 0x0c6d4b6a, + 0xbff966a9, 0xd1757de8, 0x03a03b6e, 0x6d2c202f, 0xdeb80dec, + 0xb03416ad, 0xa06386a1, 0xceef9de0, 0x7d7bb023, 0x13f7ab62, + 0xc122ede4, 0xafaef6a5, 0x1c3adb66, 0x72b6c027, 0x807cadd4, + 0xeef0b695, 0x5d649b56, 0x33e88017, 0xe13dc691, 0x8fb1ddd0, + 0x3c25f013, 0x52a9eb52, 0x42fe7b5e, 0x2c72601f, 0x9fe64ddc, + 0xf16a569d, 0x23bf101b, 0x4d330b5a, 0xfea72699, 0x902b3dd8, + 0xde080681, 0xb0841dc0, 0x03103003, 0x6d9c2b42, 0xbf496dc4, + 0xd1c57685, 0x62515b46, 0x0cdd4007, 0x1c8ad00b, 0x7206cb4a, + 0xc192e689, 0xaf1efdc8, 0x7dcbbb4e, 0x1347a00f, 0xa0d38dcc, + 0xce5f968d}, + {0x00000000, 0xe71da697, 0x154a4b6f, 0xf257edf8, 0x2a9496de, + 0xcd893049, 0x3fdeddb1, 0xd8c37b26, 0x55292dbc, 0xb2348b2b, + 0x406366d3, 0xa77ec044, 0x7fbdbb62, 0x98a01df5, 0x6af7f00d, + 0x8dea569a, 0xaa525b78, 0x4d4ffdef, 0xbf181017, 0x5805b680, + 0x80c6cda6, 0x67db6b31, 0x958c86c9, 0x7291205e, 0xff7b76c4, + 0x1866d053, 0xea313dab, 0x0d2c9b3c, 0xd5efe01a, 0x32f2468d, + 0xc0a5ab75, 0x27b80de2, 0x8fd5b0b1, 0x68c81626, 0x9a9ffbde, + 0x7d825d49, 0xa541266f, 0x425c80f8, 0xb00b6d00, 0x5716cb97, + 0xdafc9d0d, 0x3de13b9a, 0xcfb6d662, 0x28ab70f5, 0xf0680bd3, + 0x1775ad44, 0xe52240bc, 0x023fe62b, 0x2587ebc9, 0xc29a4d5e, + 0x30cda0a6, 0xd7d00631, 0x0f137d17, 0xe80edb80, 0x1a593678, + 0xfd4490ef, 0x70aec675, 0x97b360e2, 0x65e48d1a, 0x82f92b8d, + 0x5a3a50ab, 0xbd27f63c, 0x4f701bc4, 0xa86dbd53, 0xc4da6723, + 0x23c7c1b4, 0xd1902c4c, 0x368d8adb, 0xee4ef1fd, 0x0953576a, + 0xfb04ba92, 0x1c191c05, 0x91f34a9f, 0x76eeec08, 0x84b901f0, + 0x63a4a767, 0xbb67dc41, 0x5c7a7ad6, 0xae2d972e, 0x493031b9, + 0x6e883c5b, 0x89959acc, 0x7bc27734, 0x9cdfd1a3, 0x441caa85, + 0xa3010c12, 0x5156e1ea, 0xb64b477d, 0x3ba111e7, 0xdcbcb770, + 0x2eeb5a88, 0xc9f6fc1f, 0x11358739, 0xf62821ae, 0x047fcc56, + 0xe3626ac1, 0x4b0fd792, 0xac127105, 0x5e459cfd, 0xb9583a6a, + 0x619b414c, 0x8686e7db, 0x74d10a23, 0x93ccacb4, 0x1e26fa2e, + 0xf93b5cb9, 0x0b6cb141, 0xec7117d6, 0x34b26cf0, 0xd3afca67, + 0x21f8279f, 0xc6e58108, 0xe15d8cea, 0x06402a7d, 0xf417c785, + 0x130a6112, 0xcbc91a34, 0x2cd4bca3, 0xde83515b, 0x399ef7cc, + 0xb474a156, 0x536907c1, 0xa13eea39, 0x46234cae, 0x9ee03788, + 0x79fd911f, 0x8baa7ce7, 0x6cb7da70, 0x52c5c807, 0xb5d86e90, + 0x478f8368, 0xa09225ff, 0x78515ed9, 0x9f4cf84e, 0x6d1b15b6, + 0x8a06b321, 0x07ece5bb, 0xe0f1432c, 0x12a6aed4, 0xf5bb0843, + 0x2d787365, 0xca65d5f2, 0x3832380a, 0xdf2f9e9d, 0xf897937f, + 0x1f8a35e8, 0xedddd810, 0x0ac07e87, 0xd20305a1, 0x351ea336, + 0xc7494ece, 0x2054e859, 0xadbebec3, 0x4aa31854, 0xb8f4f5ac, + 0x5fe9533b, 0x872a281d, 0x60378e8a, 0x92606372, 0x757dc5e5, + 0xdd1078b6, 0x3a0dde21, 0xc85a33d9, 0x2f47954e, 0xf784ee68, + 0x109948ff, 0xe2cea507, 0x05d30390, 0x8839550a, 0x6f24f39d, + 0x9d731e65, 0x7a6eb8f2, 0xa2adc3d4, 0x45b06543, 0xb7e788bb, + 0x50fa2e2c, 0x774223ce, 0x905f8559, 0x620868a1, 0x8515ce36, + 0x5dd6b510, 0xbacb1387, 0x489cfe7f, 0xaf8158e8, 0x226b0e72, + 0xc576a8e5, 0x3721451d, 0xd03ce38a, 0x08ff98ac, 0xefe23e3b, + 0x1db5d3c3, 0xfaa87554, 0x961faf24, 0x710209b3, 0x8355e44b, + 0x644842dc, 0xbc8b39fa, 0x5b969f6d, 0xa9c17295, 0x4edcd402, + 0xc3368298, 0x242b240f, 0xd67cc9f7, 0x31616f60, 0xe9a21446, + 0x0ebfb2d1, 0xfce85f29, 0x1bf5f9be, 0x3c4df45c, 0xdb5052cb, + 0x2907bf33, 0xce1a19a4, 0x16d96282, 0xf1c4c415, 0x039329ed, + 0xe48e8f7a, 0x6964d9e0, 0x8e797f77, 0x7c2e928f, 0x9b333418, + 0x43f04f3e, 0xa4ede9a9, 0x56ba0451, 0xb1a7a2c6, 0x19ca1f95, + 0xfed7b902, 0x0c8054fa, 0xeb9df26d, 0x335e894b, 0xd4432fdc, + 0x2614c224, 0xc10964b3, 0x4ce33229, 0xabfe94be, 0x59a97946, + 0xbeb4dfd1, 0x6677a4f7, 0x816a0260, 0x733def98, 0x9420490f, + 0xb39844ed, 0x5485e27a, 0xa6d20f82, 0x41cfa915, 0x990cd233, + 0x7e1174a4, 0x8c46995c, 0x6b5b3fcb, 0xe6b16951, 0x01accfc6, + 0xf3fb223e, 0x14e684a9, 0xcc25ff8f, 0x2b385918, 0xd96fb4e0, + 0x3e721277}, + {0x00000000, 0xa58b900e, 0x9066265d, 0x35edb653, 0xfbbd4afb, + 0x5e36daf5, 0x6bdb6ca6, 0xce50fca8, 0x2c0b93b7, 0x898003b9, + 0xbc6db5ea, 0x19e625e4, 0xd7b6d94c, 0x723d4942, 0x47d0ff11, + 0xe25b6f1f, 0x5817276e, 0xfd9cb760, 0xc8710133, 0x6dfa913d, + 0xa3aa6d95, 0x0621fd9b, 0x33cc4bc8, 0x9647dbc6, 0x741cb4d9, + 0xd19724d7, 0xe47a9284, 0x41f1028a, 0x8fa1fe22, 0x2a2a6e2c, + 0x1fc7d87f, 0xba4c4871, 0xb02e4edc, 0x15a5ded2, 0x20486881, + 0x85c3f88f, 0x4b930427, 0xee189429, 0xdbf5227a, 0x7e7eb274, + 0x9c25dd6b, 0x39ae4d65, 0x0c43fb36, 0xa9c86b38, 0x67989790, + 0xc213079e, 0xf7feb1cd, 0x527521c3, 0xe83969b2, 0x4db2f9bc, + 0x785f4fef, 0xddd4dfe1, 0x13842349, 0xb60fb347, 0x83e20514, + 0x2669951a, 0xc432fa05, 0x61b96a0b, 0x5454dc58, 0xf1df4c56, + 0x3f8fb0fe, 0x9a0420f0, 0xafe996a3, 0x0a6206ad, 0xbb2d9bf9, + 0x1ea60bf7, 0x2b4bbda4, 0x8ec02daa, 0x4090d102, 0xe51b410c, + 0xd0f6f75f, 0x757d6751, 0x9726084e, 0x32ad9840, 0x07402e13, + 0xa2cbbe1d, 0x6c9b42b5, 0xc910d2bb, 0xfcfd64e8, 0x5976f4e6, + 0xe33abc97, 0x46b12c99, 0x735c9aca, 0xd6d70ac4, 0x1887f66c, + 0xbd0c6662, 0x88e1d031, 0x2d6a403f, 0xcf312f20, 0x6ababf2e, + 0x5f57097d, 0xfadc9973, 0x348c65db, 0x9107f5d5, 0xa4ea4386, + 0x0161d388, 0x0b03d525, 0xae88452b, 0x9b65f378, 0x3eee6376, + 0xf0be9fde, 0x55350fd0, 0x60d8b983, 0xc553298d, 0x27084692, + 0x8283d69c, 0xb76e60cf, 0x12e5f0c1, 0xdcb50c69, 0x793e9c67, + 0x4cd32a34, 0xe958ba3a, 0x5314f24b, 0xf69f6245, 0xc372d416, + 0x66f94418, 0xa8a9b8b0, 0x0d2228be, 0x38cf9eed, 0x9d440ee3, + 0x7f1f61fc, 0xda94f1f2, 0xef7947a1, 0x4af2d7af, 0x84a22b07, + 0x2129bb09, 0x14c40d5a, 0xb14f9d54, 0xad2a31b3, 0x08a1a1bd, + 0x3d4c17ee, 0x98c787e0, 0x56977b48, 0xf31ceb46, 0xc6f15d15, + 0x637acd1b, 0x8121a204, 0x24aa320a, 0x11478459, 0xb4cc1457, + 0x7a9ce8ff, 0xdf1778f1, 0xeafacea2, 0x4f715eac, 0xf53d16dd, + 0x50b686d3, 0x655b3080, 0xc0d0a08e, 0x0e805c26, 0xab0bcc28, + 0x9ee67a7b, 0x3b6dea75, 0xd936856a, 0x7cbd1564, 0x4950a337, + 0xecdb3339, 0x228bcf91, 0x87005f9f, 0xb2ede9cc, 0x176679c2, + 0x1d047f6f, 0xb88fef61, 0x8d625932, 0x28e9c93c, 0xe6b93594, + 0x4332a59a, 0x76df13c9, 0xd35483c7, 0x310fecd8, 0x94847cd6, + 0xa169ca85, 0x04e25a8b, 0xcab2a623, 0x6f39362d, 0x5ad4807e, + 0xff5f1070, 0x45135801, 0xe098c80f, 0xd5757e5c, 0x70feee52, + 0xbeae12fa, 0x1b2582f4, 0x2ec834a7, 0x8b43a4a9, 0x6918cbb6, + 0xcc935bb8, 0xf97eedeb, 0x5cf57de5, 0x92a5814d, 0x372e1143, + 0x02c3a710, 0xa748371e, 0x1607aa4a, 0xb38c3a44, 0x86618c17, + 0x23ea1c19, 0xedbae0b1, 0x483170bf, 0x7ddcc6ec, 0xd85756e2, + 0x3a0c39fd, 0x9f87a9f3, 0xaa6a1fa0, 0x0fe18fae, 0xc1b17306, + 0x643ae308, 0x51d7555b, 0xf45cc555, 0x4e108d24, 0xeb9b1d2a, + 0xde76ab79, 0x7bfd3b77, 0xb5adc7df, 0x102657d1, 0x25cbe182, + 0x8040718c, 0x621b1e93, 0xc7908e9d, 0xf27d38ce, 0x57f6a8c0, + 0x99a65468, 0x3c2dc466, 0x09c07235, 0xac4be23b, 0xa629e496, + 0x03a27498, 0x364fc2cb, 0x93c452c5, 0x5d94ae6d, 0xf81f3e63, + 0xcdf28830, 0x6879183e, 0x8a227721, 0x2fa9e72f, 0x1a44517c, + 0xbfcfc172, 0x719f3dda, 0xd414add4, 0xe1f91b87, 0x44728b89, + 0xfe3ec3f8, 0x5bb553f6, 0x6e58e5a5, 0xcbd375ab, 0x05838903, + 0xa008190d, 0x95e5af5e, 0x306e3f50, 0xd235504f, 0x77bec041, + 0x42537612, 0xe7d8e61c, 0x29881ab4, 0x8c038aba, 0xb9ee3ce9, + 0x1c65ace7}}; + +local const z_word_t FAR crc_braid_big_table[][256] = { + {0x0000000000000000, 0x0e908ba500000000, 0x5d26669000000000, + 0x53b6ed3500000000, 0xfb4abdfb00000000, 0xf5da365e00000000, + 0xa66cdb6b00000000, 0xa8fc50ce00000000, 0xb7930b2c00000000, + 0xb903808900000000, 0xeab56dbc00000000, 0xe425e61900000000, + 0x4cd9b6d700000000, 0x42493d7200000000, 0x11ffd04700000000, + 0x1f6f5be200000000, 0x6e27175800000000, 0x60b79cfd00000000, + 0x330171c800000000, 0x3d91fa6d00000000, 0x956daaa300000000, + 0x9bfd210600000000, 0xc84bcc3300000000, 0xc6db479600000000, + 0xd9b41c7400000000, 0xd72497d100000000, 0x84927ae400000000, + 0x8a02f14100000000, 0x22fea18f00000000, 0x2c6e2a2a00000000, + 0x7fd8c71f00000000, 0x71484cba00000000, 0xdc4e2eb000000000, + 0xd2dea51500000000, 0x8168482000000000, 0x8ff8c38500000000, + 0x2704934b00000000, 0x299418ee00000000, 0x7a22f5db00000000, + 0x74b27e7e00000000, 0x6bdd259c00000000, 0x654dae3900000000, + 0x36fb430c00000000, 0x386bc8a900000000, 0x9097986700000000, + 0x9e0713c200000000, 0xcdb1fef700000000, 0xc321755200000000, + 0xb26939e800000000, 0xbcf9b24d00000000, 0xef4f5f7800000000, + 0xe1dfd4dd00000000, 0x4923841300000000, 0x47b30fb600000000, + 0x1405e28300000000, 0x1a95692600000000, 0x05fa32c400000000, + 0x0b6ab96100000000, 0x58dc545400000000, 0x564cdff100000000, + 0xfeb08f3f00000000, 0xf020049a00000000, 0xa396e9af00000000, + 0xad06620a00000000, 0xf99b2dbb00000000, 0xf70ba61e00000000, + 0xa4bd4b2b00000000, 0xaa2dc08e00000000, 0x02d1904000000000, + 0x0c411be500000000, 0x5ff7f6d000000000, 0x51677d7500000000, + 0x4e08269700000000, 0x4098ad3200000000, 0x132e400700000000, + 0x1dbecba200000000, 0xb5429b6c00000000, 0xbbd210c900000000, + 0xe864fdfc00000000, 0xe6f4765900000000, 0x97bc3ae300000000, + 0x992cb14600000000, 0xca9a5c7300000000, 0xc40ad7d600000000, + 0x6cf6871800000000, 0x62660cbd00000000, 0x31d0e18800000000, + 0x3f406a2d00000000, 0x202f31cf00000000, 0x2ebfba6a00000000, + 0x7d09575f00000000, 0x7399dcfa00000000, 0xdb658c3400000000, + 0xd5f5079100000000, 0x8643eaa400000000, 0x88d3610100000000, + 0x25d5030b00000000, 0x2b4588ae00000000, 0x78f3659b00000000, + 0x7663ee3e00000000, 0xde9fbef000000000, 0xd00f355500000000, + 0x83b9d86000000000, 0x8d2953c500000000, 0x9246082700000000, + 0x9cd6838200000000, 0xcf606eb700000000, 0xc1f0e51200000000, + 0x690cb5dc00000000, 0x679c3e7900000000, 0x342ad34c00000000, + 0x3aba58e900000000, 0x4bf2145300000000, 0x45629ff600000000, + 0x16d472c300000000, 0x1844f96600000000, 0xb0b8a9a800000000, + 0xbe28220d00000000, 0xed9ecf3800000000, 0xe30e449d00000000, + 0xfc611f7f00000000, 0xf2f194da00000000, 0xa14779ef00000000, + 0xafd7f24a00000000, 0x072ba28400000000, 0x09bb292100000000, + 0x5a0dc41400000000, 0x549d4fb100000000, 0xb3312aad00000000, + 0xbda1a10800000000, 0xee174c3d00000000, 0xe087c79800000000, + 0x487b975600000000, 0x46eb1cf300000000, 0x155df1c600000000, + 0x1bcd7a6300000000, 0x04a2218100000000, 0x0a32aa2400000000, + 0x5984471100000000, 0x5714ccb400000000, 0xffe89c7a00000000, + 0xf17817df00000000, 0xa2cefaea00000000, 0xac5e714f00000000, + 0xdd163df500000000, 0xd386b65000000000, 0x80305b6500000000, + 0x8ea0d0c000000000, 0x265c800e00000000, 0x28cc0bab00000000, + 0x7b7ae69e00000000, 0x75ea6d3b00000000, 0x6a8536d900000000, + 0x6415bd7c00000000, 0x37a3504900000000, 0x3933dbec00000000, + 0x91cf8b2200000000, 0x9f5f008700000000, 0xcce9edb200000000, + 0xc279661700000000, 0x6f7f041d00000000, 0x61ef8fb800000000, + 0x3259628d00000000, 0x3cc9e92800000000, 0x9435b9e600000000, + 0x9aa5324300000000, 0xc913df7600000000, 0xc78354d300000000, + 0xd8ec0f3100000000, 0xd67c849400000000, 0x85ca69a100000000, + 0x8b5ae20400000000, 0x23a6b2ca00000000, 0x2d36396f00000000, + 0x7e80d45a00000000, 0x70105fff00000000, 0x0158134500000000, + 0x0fc898e000000000, 0x5c7e75d500000000, 0x52eefe7000000000, + 0xfa12aebe00000000, 0xf482251b00000000, 0xa734c82e00000000, + 0xa9a4438b00000000, 0xb6cb186900000000, 0xb85b93cc00000000, + 0xebed7ef900000000, 0xe57df55c00000000, 0x4d81a59200000000, + 0x43112e3700000000, 0x10a7c30200000000, 0x1e3748a700000000, + 0x4aaa071600000000, 0x443a8cb300000000, 0x178c618600000000, + 0x191cea2300000000, 0xb1e0baed00000000, 0xbf70314800000000, + 0xecc6dc7d00000000, 0xe25657d800000000, 0xfd390c3a00000000, + 0xf3a9879f00000000, 0xa01f6aaa00000000, 0xae8fe10f00000000, + 0x0673b1c100000000, 0x08e33a6400000000, 0x5b55d75100000000, + 0x55c55cf400000000, 0x248d104e00000000, 0x2a1d9beb00000000, + 0x79ab76de00000000, 0x773bfd7b00000000, 0xdfc7adb500000000, + 0xd157261000000000, 0x82e1cb2500000000, 0x8c71408000000000, + 0x931e1b6200000000, 0x9d8e90c700000000, 0xce387df200000000, + 0xc0a8f65700000000, 0x6854a69900000000, 0x66c42d3c00000000, + 0x3572c00900000000, 0x3be24bac00000000, 0x96e429a600000000, + 0x9874a20300000000, 0xcbc24f3600000000, 0xc552c49300000000, + 0x6dae945d00000000, 0x633e1ff800000000, 0x3088f2cd00000000, + 0x3e18796800000000, 0x2177228a00000000, 0x2fe7a92f00000000, + 0x7c51441a00000000, 0x72c1cfbf00000000, 0xda3d9f7100000000, + 0xd4ad14d400000000, 0x871bf9e100000000, 0x898b724400000000, + 0xf8c33efe00000000, 0xf653b55b00000000, 0xa5e5586e00000000, + 0xab75d3cb00000000, 0x0389830500000000, 0x0d1908a000000000, + 0x5eafe59500000000, 0x503f6e3000000000, 0x4f5035d200000000, + 0x41c0be7700000000, 0x1276534200000000, 0x1ce6d8e700000000, + 0xb41a882900000000, 0xba8a038c00000000, 0xe93ceeb900000000, + 0xe7ac651c00000000}, + {0x0000000000000000, 0x97a61de700000000, 0x6f4b4a1500000000, + 0xf8ed57f200000000, 0xde96942a00000000, 0x493089cd00000000, + 0xb1ddde3f00000000, 0x267bc3d800000000, 0xbc2d295500000000, + 0x2b8b34b200000000, 0xd366634000000000, 0x44c07ea700000000, + 0x62bbbd7f00000000, 0xf51da09800000000, 0x0df0f76a00000000, + 0x9a56ea8d00000000, 0x785b52aa00000000, 0xeffd4f4d00000000, + 0x171018bf00000000, 0x80b6055800000000, 0xa6cdc68000000000, + 0x316bdb6700000000, 0xc9868c9500000000, 0x5e20917200000000, + 0xc4767bff00000000, 0x53d0661800000000, 0xab3d31ea00000000, + 0x3c9b2c0d00000000, 0x1ae0efd500000000, 0x8d46f23200000000, + 0x75aba5c000000000, 0xe20db82700000000, 0xb1b0d58f00000000, + 0x2616c86800000000, 0xdefb9f9a00000000, 0x495d827d00000000, + 0x6f2641a500000000, 0xf8805c4200000000, 0x006d0bb000000000, + 0x97cb165700000000, 0x0d9dfcda00000000, 0x9a3be13d00000000, + 0x62d6b6cf00000000, 0xf570ab2800000000, 0xd30b68f000000000, + 0x44ad751700000000, 0xbc4022e500000000, 0x2be63f0200000000, + 0xc9eb872500000000, 0x5e4d9ac200000000, 0xa6a0cd3000000000, + 0x3106d0d700000000, 0x177d130f00000000, 0x80db0ee800000000, + 0x7836591a00000000, 0xef9044fd00000000, 0x75c6ae7000000000, + 0xe260b39700000000, 0x1a8de46500000000, 0x8d2bf98200000000, + 0xab503a5a00000000, 0x3cf627bd00000000, 0xc41b704f00000000, + 0x53bd6da800000000, 0x2367dac400000000, 0xb4c1c72300000000, + 0x4c2c90d100000000, 0xdb8a8d3600000000, 0xfdf14eee00000000, + 0x6a57530900000000, 0x92ba04fb00000000, 0x051c191c00000000, + 0x9f4af39100000000, 0x08ecee7600000000, 0xf001b98400000000, + 0x67a7a46300000000, 0x41dc67bb00000000, 0xd67a7a5c00000000, + 0x2e972dae00000000, 0xb931304900000000, 0x5b3c886e00000000, + 0xcc9a958900000000, 0x3477c27b00000000, 0xa3d1df9c00000000, + 0x85aa1c4400000000, 0x120c01a300000000, 0xeae1565100000000, + 0x7d474bb600000000, 0xe711a13b00000000, 0x70b7bcdc00000000, + 0x885aeb2e00000000, 0x1ffcf6c900000000, 0x3987351100000000, + 0xae2128f600000000, 0x56cc7f0400000000, 0xc16a62e300000000, + 0x92d70f4b00000000, 0x057112ac00000000, 0xfd9c455e00000000, + 0x6a3a58b900000000, 0x4c419b6100000000, 0xdbe7868600000000, + 0x230ad17400000000, 0xb4accc9300000000, 0x2efa261e00000000, + 0xb95c3bf900000000, 0x41b16c0b00000000, 0xd61771ec00000000, + 0xf06cb23400000000, 0x67caafd300000000, 0x9f27f82100000000, + 0x0881e5c600000000, 0xea8c5de100000000, 0x7d2a400600000000, + 0x85c717f400000000, 0x12610a1300000000, 0x341ac9cb00000000, + 0xa3bcd42c00000000, 0x5b5183de00000000, 0xccf79e3900000000, + 0x56a174b400000000, 0xc107695300000000, 0x39ea3ea100000000, + 0xae4c234600000000, 0x8837e09e00000000, 0x1f91fd7900000000, + 0xe77caa8b00000000, 0x70dab76c00000000, 0x07c8c55200000000, + 0x906ed8b500000000, 0x68838f4700000000, 0xff2592a000000000, + 0xd95e517800000000, 0x4ef84c9f00000000, 0xb6151b6d00000000, + 0x21b3068a00000000, 0xbbe5ec0700000000, 0x2c43f1e000000000, + 0xd4aea61200000000, 0x4308bbf500000000, 0x6573782d00000000, + 0xf2d565ca00000000, 0x0a38323800000000, 0x9d9e2fdf00000000, + 0x7f9397f800000000, 0xe8358a1f00000000, 0x10d8dded00000000, + 0x877ec00a00000000, 0xa10503d200000000, 0x36a31e3500000000, + 0xce4e49c700000000, 0x59e8542000000000, 0xc3bebead00000000, + 0x5418a34a00000000, 0xacf5f4b800000000, 0x3b53e95f00000000, + 0x1d282a8700000000, 0x8a8e376000000000, 0x7263609200000000, + 0xe5c57d7500000000, 0xb67810dd00000000, 0x21de0d3a00000000, + 0xd9335ac800000000, 0x4e95472f00000000, 0x68ee84f700000000, + 0xff48991000000000, 0x07a5cee200000000, 0x9003d30500000000, + 0x0a55398800000000, 0x9df3246f00000000, 0x651e739d00000000, + 0xf2b86e7a00000000, 0xd4c3ada200000000, 0x4365b04500000000, + 0xbb88e7b700000000, 0x2c2efa5000000000, 0xce23427700000000, + 0x59855f9000000000, 0xa168086200000000, 0x36ce158500000000, + 0x10b5d65d00000000, 0x8713cbba00000000, 0x7ffe9c4800000000, + 0xe85881af00000000, 0x720e6b2200000000, 0xe5a876c500000000, + 0x1d45213700000000, 0x8ae33cd000000000, 0xac98ff0800000000, + 0x3b3ee2ef00000000, 0xc3d3b51d00000000, 0x5475a8fa00000000, + 0x24af1f9600000000, 0xb309027100000000, 0x4be4558300000000, + 0xdc42486400000000, 0xfa398bbc00000000, 0x6d9f965b00000000, + 0x9572c1a900000000, 0x02d4dc4e00000000, 0x988236c300000000, + 0x0f242b2400000000, 0xf7c97cd600000000, 0x606f613100000000, + 0x4614a2e900000000, 0xd1b2bf0e00000000, 0x295fe8fc00000000, + 0xbef9f51b00000000, 0x5cf44d3c00000000, 0xcb5250db00000000, + 0x33bf072900000000, 0xa4191ace00000000, 0x8262d91600000000, + 0x15c4c4f100000000, 0xed29930300000000, 0x7a8f8ee400000000, + 0xe0d9646900000000, 0x777f798e00000000, 0x8f922e7c00000000, + 0x1834339b00000000, 0x3e4ff04300000000, 0xa9e9eda400000000, + 0x5104ba5600000000, 0xc6a2a7b100000000, 0x951fca1900000000, + 0x02b9d7fe00000000, 0xfa54800c00000000, 0x6df29deb00000000, + 0x4b895e3300000000, 0xdc2f43d400000000, 0x24c2142600000000, + 0xb36409c100000000, 0x2932e34c00000000, 0xbe94feab00000000, + 0x4679a95900000000, 0xd1dfb4be00000000, 0xf7a4776600000000, + 0x60026a8100000000, 0x98ef3d7300000000, 0x0f49209400000000, + 0xed4498b300000000, 0x7ae2855400000000, 0x820fd2a600000000, + 0x15a9cf4100000000, 0x33d20c9900000000, 0xa474117e00000000, + 0x5c99468c00000000, 0xcb3f5b6b00000000, 0x5169b1e600000000, + 0xc6cfac0100000000, 0x3e22fbf300000000, 0xa984e61400000000, + 0x8fff25cc00000000, 0x1859382b00000000, 0xe0b46fd900000000, + 0x7712723e00000000}, + {0x0000000000000000, 0x411b8c6e00000000, 0x823618dd00000000, + 0xc32d94b300000000, 0x456b416100000000, 0x0470cd0f00000000, + 0xc75d59bc00000000, 0x8646d5d200000000, 0x8ad682c200000000, + 0xcbcd0eac00000000, 0x08e09a1f00000000, 0x49fb167100000000, + 0xcfbdc3a300000000, 0x8ea64fcd00000000, 0x4d8bdb7e00000000, + 0x0c90571000000000, 0x55ab745e00000000, 0x14b0f83000000000, + 0xd79d6c8300000000, 0x9686e0ed00000000, 0x10c0353f00000000, + 0x51dbb95100000000, 0x92f62de200000000, 0xd3eda18c00000000, + 0xdf7df69c00000000, 0x9e667af200000000, 0x5d4bee4100000000, + 0x1c50622f00000000, 0x9a16b7fd00000000, 0xdb0d3b9300000000, + 0x1820af2000000000, 0x593b234e00000000, 0xaa56e9bc00000000, + 0xeb4d65d200000000, 0x2860f16100000000, 0x697b7d0f00000000, + 0xef3da8dd00000000, 0xae2624b300000000, 0x6d0bb00000000000, + 0x2c103c6e00000000, 0x20806b7e00000000, 0x619be71000000000, + 0xa2b673a300000000, 0xe3adffcd00000000, 0x65eb2a1f00000000, + 0x24f0a67100000000, 0xe7dd32c200000000, 0xa6c6beac00000000, + 0xfffd9de200000000, 0xbee6118c00000000, 0x7dcb853f00000000, + 0x3cd0095100000000, 0xba96dc8300000000, 0xfb8d50ed00000000, + 0x38a0c45e00000000, 0x79bb483000000000, 0x752b1f2000000000, + 0x3430934e00000000, 0xf71d07fd00000000, 0xb6068b9300000000, + 0x30405e4100000000, 0x715bd22f00000000, 0xb276469c00000000, + 0xf36dcaf200000000, 0x15aba3a200000000, 0x54b02fcc00000000, + 0x979dbb7f00000000, 0xd686371100000000, 0x50c0e2c300000000, + 0x11db6ead00000000, 0xd2f6fa1e00000000, 0x93ed767000000000, + 0x9f7d216000000000, 0xde66ad0e00000000, 0x1d4b39bd00000000, + 0x5c50b5d300000000, 0xda16600100000000, 0x9b0dec6f00000000, + 0x582078dc00000000, 0x193bf4b200000000, 0x4000d7fc00000000, + 0x011b5b9200000000, 0xc236cf2100000000, 0x832d434f00000000, + 0x056b969d00000000, 0x44701af300000000, 0x875d8e4000000000, + 0xc646022e00000000, 0xcad6553e00000000, 0x8bcdd95000000000, + 0x48e04de300000000, 0x09fbc18d00000000, 0x8fbd145f00000000, + 0xcea6983100000000, 0x0d8b0c8200000000, 0x4c9080ec00000000, + 0xbffd4a1e00000000, 0xfee6c67000000000, 0x3dcb52c300000000, + 0x7cd0dead00000000, 0xfa960b7f00000000, 0xbb8d871100000000, + 0x78a013a200000000, 0x39bb9fcc00000000, 0x352bc8dc00000000, + 0x743044b200000000, 0xb71dd00100000000, 0xf6065c6f00000000, + 0x704089bd00000000, 0x315b05d300000000, 0xf276916000000000, + 0xb36d1d0e00000000, 0xea563e4000000000, 0xab4db22e00000000, + 0x6860269d00000000, 0x297baaf300000000, 0xaf3d7f2100000000, + 0xee26f34f00000000, 0x2d0b67fc00000000, 0x6c10eb9200000000, + 0x6080bc8200000000, 0x219b30ec00000000, 0xe2b6a45f00000000, + 0xa3ad283100000000, 0x25ebfde300000000, 0x64f0718d00000000, + 0xa7dde53e00000000, 0xe6c6695000000000, 0x6b50369e00000000, + 0x2a4bbaf000000000, 0xe9662e4300000000, 0xa87da22d00000000, + 0x2e3b77ff00000000, 0x6f20fb9100000000, 0xac0d6f2200000000, + 0xed16e34c00000000, 0xe186b45c00000000, 0xa09d383200000000, + 0x63b0ac8100000000, 0x22ab20ef00000000, 0xa4edf53d00000000, + 0xe5f6795300000000, 0x26dbede000000000, 0x67c0618e00000000, + 0x3efb42c000000000, 0x7fe0ceae00000000, 0xbccd5a1d00000000, + 0xfdd6d67300000000, 0x7b9003a100000000, 0x3a8b8fcf00000000, + 0xf9a61b7c00000000, 0xb8bd971200000000, 0xb42dc00200000000, + 0xf5364c6c00000000, 0x361bd8df00000000, 0x770054b100000000, + 0xf146816300000000, 0xb05d0d0d00000000, 0x737099be00000000, + 0x326b15d000000000, 0xc106df2200000000, 0x801d534c00000000, + 0x4330c7ff00000000, 0x022b4b9100000000, 0x846d9e4300000000, + 0xc576122d00000000, 0x065b869e00000000, 0x47400af000000000, + 0x4bd05de000000000, 0x0acbd18e00000000, 0xc9e6453d00000000, + 0x88fdc95300000000, 0x0ebb1c8100000000, 0x4fa090ef00000000, + 0x8c8d045c00000000, 0xcd96883200000000, 0x94adab7c00000000, + 0xd5b6271200000000, 0x169bb3a100000000, 0x57803fcf00000000, + 0xd1c6ea1d00000000, 0x90dd667300000000, 0x53f0f2c000000000, + 0x12eb7eae00000000, 0x1e7b29be00000000, 0x5f60a5d000000000, + 0x9c4d316300000000, 0xdd56bd0d00000000, 0x5b1068df00000000, + 0x1a0be4b100000000, 0xd926700200000000, 0x983dfc6c00000000, + 0x7efb953c00000000, 0x3fe0195200000000, 0xfccd8de100000000, + 0xbdd6018f00000000, 0x3b90d45d00000000, 0x7a8b583300000000, + 0xb9a6cc8000000000, 0xf8bd40ee00000000, 0xf42d17fe00000000, + 0xb5369b9000000000, 0x761b0f2300000000, 0x3700834d00000000, + 0xb146569f00000000, 0xf05ddaf100000000, 0x33704e4200000000, + 0x726bc22c00000000, 0x2b50e16200000000, 0x6a4b6d0c00000000, + 0xa966f9bf00000000, 0xe87d75d100000000, 0x6e3ba00300000000, + 0x2f202c6d00000000, 0xec0db8de00000000, 0xad1634b000000000, + 0xa18663a000000000, 0xe09defce00000000, 0x23b07b7d00000000, + 0x62abf71300000000, 0xe4ed22c100000000, 0xa5f6aeaf00000000, + 0x66db3a1c00000000, 0x27c0b67200000000, 0xd4ad7c8000000000, + 0x95b6f0ee00000000, 0x569b645d00000000, 0x1780e83300000000, + 0x91c63de100000000, 0xd0ddb18f00000000, 0x13f0253c00000000, + 0x52eba95200000000, 0x5e7bfe4200000000, 0x1f60722c00000000, + 0xdc4de69f00000000, 0x9d566af100000000, 0x1b10bf2300000000, + 0x5a0b334d00000000, 0x9926a7fe00000000, 0xd83d2b9000000000, + 0x810608de00000000, 0xc01d84b000000000, 0x0330100300000000, + 0x422b9c6d00000000, 0xc46d49bf00000000, 0x8576c5d100000000, + 0x465b516200000000, 0x0740dd0c00000000, 0x0bd08a1c00000000, + 0x4acb067200000000, 0x89e692c100000000, 0xc8fd1eaf00000000, + 0x4ebbcb7d00000000, 0x0fa0471300000000, 0xcc8dd3a000000000, + 0x8d965fce00000000}, + {0x0000000000000000, 0x1dfdb50100000000, 0x3afa6b0300000000, + 0x2707de0200000000, 0x74f4d70600000000, 0x6909620700000000, + 0x4e0ebc0500000000, 0x53f3090400000000, 0xe8e8af0d00000000, + 0xf5151a0c00000000, 0xd212c40e00000000, 0xcfef710f00000000, + 0x9c1c780b00000000, 0x81e1cd0a00000000, 0xa6e6130800000000, + 0xbb1ba60900000000, 0xd0d15f1b00000000, 0xcd2cea1a00000000, + 0xea2b341800000000, 0xf7d6811900000000, 0xa425881d00000000, + 0xb9d83d1c00000000, 0x9edfe31e00000000, 0x8322561f00000000, + 0x3839f01600000000, 0x25c4451700000000, 0x02c39b1500000000, + 0x1f3e2e1400000000, 0x4ccd271000000000, 0x5130921100000000, + 0x76374c1300000000, 0x6bcaf91200000000, 0xa0a3bf3600000000, + 0xbd5e0a3700000000, 0x9a59d43500000000, 0x87a4613400000000, + 0xd457683000000000, 0xc9aadd3100000000, 0xeead033300000000, + 0xf350b63200000000, 0x484b103b00000000, 0x55b6a53a00000000, + 0x72b17b3800000000, 0x6f4cce3900000000, 0x3cbfc73d00000000, + 0x2142723c00000000, 0x0645ac3e00000000, 0x1bb8193f00000000, + 0x7072e02d00000000, 0x6d8f552c00000000, 0x4a888b2e00000000, + 0x57753e2f00000000, 0x0486372b00000000, 0x197b822a00000000, + 0x3e7c5c2800000000, 0x2381e92900000000, 0x989a4f2000000000, + 0x8567fa2100000000, 0xa260242300000000, 0xbf9d912200000000, + 0xec6e982600000000, 0xf1932d2700000000, 0xd694f32500000000, + 0xcb69462400000000, 0x40477f6d00000000, 0x5dbaca6c00000000, + 0x7abd146e00000000, 0x6740a16f00000000, 0x34b3a86b00000000, + 0x294e1d6a00000000, 0x0e49c36800000000, 0x13b4766900000000, + 0xa8afd06000000000, 0xb552656100000000, 0x9255bb6300000000, + 0x8fa80e6200000000, 0xdc5b076600000000, 0xc1a6b26700000000, + 0xe6a16c6500000000, 0xfb5cd96400000000, 0x9096207600000000, + 0x8d6b957700000000, 0xaa6c4b7500000000, 0xb791fe7400000000, + 0xe462f77000000000, 0xf99f427100000000, 0xde989c7300000000, + 0xc365297200000000, 0x787e8f7b00000000, 0x65833a7a00000000, + 0x4284e47800000000, 0x5f79517900000000, 0x0c8a587d00000000, + 0x1177ed7c00000000, 0x3670337e00000000, 0x2b8d867f00000000, + 0xe0e4c05b00000000, 0xfd19755a00000000, 0xda1eab5800000000, + 0xc7e31e5900000000, 0x9410175d00000000, 0x89eda25c00000000, + 0xaeea7c5e00000000, 0xb317c95f00000000, 0x080c6f5600000000, + 0x15f1da5700000000, 0x32f6045500000000, 0x2f0bb15400000000, + 0x7cf8b85000000000, 0x61050d5100000000, 0x4602d35300000000, + 0x5bff665200000000, 0x30359f4000000000, 0x2dc82a4100000000, + 0x0acff44300000000, 0x1732414200000000, 0x44c1484600000000, + 0x593cfd4700000000, 0x7e3b234500000000, 0x63c6964400000000, + 0xd8dd304d00000000, 0xc520854c00000000, 0xe2275b4e00000000, + 0xffdaee4f00000000, 0xac29e74b00000000, 0xb1d4524a00000000, + 0x96d38c4800000000, 0x8b2e394900000000, 0x808efeda00000000, + 0x9d734bdb00000000, 0xba7495d900000000, 0xa78920d800000000, + 0xf47a29dc00000000, 0xe9879cdd00000000, 0xce8042df00000000, + 0xd37df7de00000000, 0x686651d700000000, 0x759be4d600000000, + 0x529c3ad400000000, 0x4f618fd500000000, 0x1c9286d100000000, + 0x016f33d000000000, 0x2668edd200000000, 0x3b9558d300000000, + 0x505fa1c100000000, 0x4da214c000000000, 0x6aa5cac200000000, + 0x77587fc300000000, 0x24ab76c700000000, 0x3956c3c600000000, + 0x1e511dc400000000, 0x03aca8c500000000, 0xb8b70ecc00000000, + 0xa54abbcd00000000, 0x824d65cf00000000, 0x9fb0d0ce00000000, + 0xcc43d9ca00000000, 0xd1be6ccb00000000, 0xf6b9b2c900000000, + 0xeb4407c800000000, 0x202d41ec00000000, 0x3dd0f4ed00000000, + 0x1ad72aef00000000, 0x072a9fee00000000, 0x54d996ea00000000, + 0x492423eb00000000, 0x6e23fde900000000, 0x73de48e800000000, + 0xc8c5eee100000000, 0xd5385be000000000, 0xf23f85e200000000, + 0xefc230e300000000, 0xbc3139e700000000, 0xa1cc8ce600000000, + 0x86cb52e400000000, 0x9b36e7e500000000, 0xf0fc1ef700000000, + 0xed01abf600000000, 0xca0675f400000000, 0xd7fbc0f500000000, + 0x8408c9f100000000, 0x99f57cf000000000, 0xbef2a2f200000000, + 0xa30f17f300000000, 0x1814b1fa00000000, 0x05e904fb00000000, + 0x22eedaf900000000, 0x3f136ff800000000, 0x6ce066fc00000000, + 0x711dd3fd00000000, 0x561a0dff00000000, 0x4be7b8fe00000000, + 0xc0c981b700000000, 0xdd3434b600000000, 0xfa33eab400000000, + 0xe7ce5fb500000000, 0xb43d56b100000000, 0xa9c0e3b000000000, + 0x8ec73db200000000, 0x933a88b300000000, 0x28212eba00000000, + 0x35dc9bbb00000000, 0x12db45b900000000, 0x0f26f0b800000000, + 0x5cd5f9bc00000000, 0x41284cbd00000000, 0x662f92bf00000000, + 0x7bd227be00000000, 0x1018deac00000000, 0x0de56bad00000000, + 0x2ae2b5af00000000, 0x371f00ae00000000, 0x64ec09aa00000000, + 0x7911bcab00000000, 0x5e1662a900000000, 0x43ebd7a800000000, + 0xf8f071a100000000, 0xe50dc4a000000000, 0xc20a1aa200000000, + 0xdff7afa300000000, 0x8c04a6a700000000, 0x91f913a600000000, + 0xb6fecda400000000, 0xab0378a500000000, 0x606a3e8100000000, + 0x7d978b8000000000, 0x5a90558200000000, 0x476de08300000000, + 0x149ee98700000000, 0x09635c8600000000, 0x2e64828400000000, + 0x3399378500000000, 0x8882918c00000000, 0x957f248d00000000, + 0xb278fa8f00000000, 0xaf854f8e00000000, 0xfc76468a00000000, + 0xe18bf38b00000000, 0xc68c2d8900000000, 0xdb71988800000000, + 0xb0bb619a00000000, 0xad46d49b00000000, 0x8a410a9900000000, + 0x97bcbf9800000000, 0xc44fb69c00000000, 0xd9b2039d00000000, + 0xfeb5dd9f00000000, 0xe348689e00000000, 0x5853ce9700000000, + 0x45ae7b9600000000, 0x62a9a59400000000, 0x7f54109500000000, + 0x2ca7199100000000, 0x315aac9000000000, 0x165d729200000000, + 0x0ba0c79300000000}, + {0x0000000000000000, 0x24d9076300000000, 0x48b20fc600000000, + 0x6c6b08a500000000, 0xd1626e5700000000, 0xf5bb693400000000, + 0x99d0619100000000, 0xbd0966f200000000, 0xa2c5dcae00000000, + 0x861cdbcd00000000, 0xea77d36800000000, 0xceaed40b00000000, + 0x73a7b2f900000000, 0x577eb59a00000000, 0x3b15bd3f00000000, + 0x1fccba5c00000000, 0x058dc88600000000, 0x2154cfe500000000, + 0x4d3fc74000000000, 0x69e6c02300000000, 0xd4efa6d100000000, + 0xf036a1b200000000, 0x9c5da91700000000, 0xb884ae7400000000, + 0xa748142800000000, 0x8391134b00000000, 0xeffa1bee00000000, + 0xcb231c8d00000000, 0x762a7a7f00000000, 0x52f37d1c00000000, + 0x3e9875b900000000, 0x1a4172da00000000, 0x4b1ce0d600000000, + 0x6fc5e7b500000000, 0x03aeef1000000000, 0x2777e87300000000, + 0x9a7e8e8100000000, 0xbea789e200000000, 0xd2cc814700000000, + 0xf615862400000000, 0xe9d93c7800000000, 0xcd003b1b00000000, + 0xa16b33be00000000, 0x85b234dd00000000, 0x38bb522f00000000, + 0x1c62554c00000000, 0x70095de900000000, 0x54d05a8a00000000, + 0x4e91285000000000, 0x6a482f3300000000, 0x0623279600000000, + 0x22fa20f500000000, 0x9ff3460700000000, 0xbb2a416400000000, + 0xd74149c100000000, 0xf3984ea200000000, 0xec54f4fe00000000, + 0xc88df39d00000000, 0xa4e6fb3800000000, 0x803ffc5b00000000, + 0x3d369aa900000000, 0x19ef9dca00000000, 0x7584956f00000000, + 0x515d920c00000000, 0xd73eb17600000000, 0xf3e7b61500000000, + 0x9f8cbeb000000000, 0xbb55b9d300000000, 0x065cdf2100000000, + 0x2285d84200000000, 0x4eeed0e700000000, 0x6a37d78400000000, + 0x75fb6dd800000000, 0x51226abb00000000, 0x3d49621e00000000, + 0x1990657d00000000, 0xa499038f00000000, 0x804004ec00000000, + 0xec2b0c4900000000, 0xc8f20b2a00000000, 0xd2b379f000000000, + 0xf66a7e9300000000, 0x9a01763600000000, 0xbed8715500000000, + 0x03d117a700000000, 0x270810c400000000, 0x4b63186100000000, + 0x6fba1f0200000000, 0x7076a55e00000000, 0x54afa23d00000000, + 0x38c4aa9800000000, 0x1c1dadfb00000000, 0xa114cb0900000000, + 0x85cdcc6a00000000, 0xe9a6c4cf00000000, 0xcd7fc3ac00000000, + 0x9c2251a000000000, 0xb8fb56c300000000, 0xd4905e6600000000, + 0xf049590500000000, 0x4d403ff700000000, 0x6999389400000000, + 0x05f2303100000000, 0x212b375200000000, 0x3ee78d0e00000000, + 0x1a3e8a6d00000000, 0x765582c800000000, 0x528c85ab00000000, + 0xef85e35900000000, 0xcb5ce43a00000000, 0xa737ec9f00000000, + 0x83eeebfc00000000, 0x99af992600000000, 0xbd769e4500000000, + 0xd11d96e000000000, 0xf5c4918300000000, 0x48cdf77100000000, + 0x6c14f01200000000, 0x007ff8b700000000, 0x24a6ffd400000000, + 0x3b6a458800000000, 0x1fb342eb00000000, 0x73d84a4e00000000, + 0x57014d2d00000000, 0xea082bdf00000000, 0xced12cbc00000000, + 0xa2ba241900000000, 0x8663237a00000000, 0xae7d62ed00000000, + 0x8aa4658e00000000, 0xe6cf6d2b00000000, 0xc2166a4800000000, + 0x7f1f0cba00000000, 0x5bc60bd900000000, 0x37ad037c00000000, + 0x1374041f00000000, 0x0cb8be4300000000, 0x2861b92000000000, + 0x440ab18500000000, 0x60d3b6e600000000, 0xdddad01400000000, + 0xf903d77700000000, 0x9568dfd200000000, 0xb1b1d8b100000000, + 0xabf0aa6b00000000, 0x8f29ad0800000000, 0xe342a5ad00000000, + 0xc79ba2ce00000000, 0x7a92c43c00000000, 0x5e4bc35f00000000, + 0x3220cbfa00000000, 0x16f9cc9900000000, 0x093576c500000000, + 0x2dec71a600000000, 0x4187790300000000, 0x655e7e6000000000, + 0xd857189200000000, 0xfc8e1ff100000000, 0x90e5175400000000, + 0xb43c103700000000, 0xe561823b00000000, 0xc1b8855800000000, + 0xadd38dfd00000000, 0x890a8a9e00000000, 0x3403ec6c00000000, + 0x10daeb0f00000000, 0x7cb1e3aa00000000, 0x5868e4c900000000, + 0x47a45e9500000000, 0x637d59f600000000, 0x0f16515300000000, + 0x2bcf563000000000, 0x96c630c200000000, 0xb21f37a100000000, + 0xde743f0400000000, 0xfaad386700000000, 0xe0ec4abd00000000, + 0xc4354dde00000000, 0xa85e457b00000000, 0x8c87421800000000, + 0x318e24ea00000000, 0x1557238900000000, 0x793c2b2c00000000, + 0x5de52c4f00000000, 0x4229961300000000, 0x66f0917000000000, + 0x0a9b99d500000000, 0x2e429eb600000000, 0x934bf84400000000, + 0xb792ff2700000000, 0xdbf9f78200000000, 0xff20f0e100000000, + 0x7943d39b00000000, 0x5d9ad4f800000000, 0x31f1dc5d00000000, + 0x1528db3e00000000, 0xa821bdcc00000000, 0x8cf8baaf00000000, + 0xe093b20a00000000, 0xc44ab56900000000, 0xdb860f3500000000, + 0xff5f085600000000, 0x933400f300000000, 0xb7ed079000000000, + 0x0ae4616200000000, 0x2e3d660100000000, 0x42566ea400000000, + 0x668f69c700000000, 0x7cce1b1d00000000, 0x58171c7e00000000, + 0x347c14db00000000, 0x10a513b800000000, 0xadac754a00000000, + 0x8975722900000000, 0xe51e7a8c00000000, 0xc1c77def00000000, + 0xde0bc7b300000000, 0xfad2c0d000000000, 0x96b9c87500000000, + 0xb260cf1600000000, 0x0f69a9e400000000, 0x2bb0ae8700000000, + 0x47dba62200000000, 0x6302a14100000000, 0x325f334d00000000, + 0x1686342e00000000, 0x7aed3c8b00000000, 0x5e343be800000000, + 0xe33d5d1a00000000, 0xc7e45a7900000000, 0xab8f52dc00000000, + 0x8f5655bf00000000, 0x909aefe300000000, 0xb443e88000000000, + 0xd828e02500000000, 0xfcf1e74600000000, 0x41f881b400000000, + 0x652186d700000000, 0x094a8e7200000000, 0x2d93891100000000, + 0x37d2fbcb00000000, 0x130bfca800000000, 0x7f60f40d00000000, + 0x5bb9f36e00000000, 0xe6b0959c00000000, 0xc26992ff00000000, + 0xae029a5a00000000, 0x8adb9d3900000000, 0x9517276500000000, + 0xb1ce200600000000, 0xdda528a300000000, 0xf97c2fc000000000, + 0x4475493200000000, 0x60ac4e5100000000, 0x0cc746f400000000, + 0x281e419700000000}, + {0x0000000000000000, 0x08e3603c00000000, 0x10c6c17800000000, + 0x1825a14400000000, 0x208c83f100000000, 0x286fe3cd00000000, + 0x304a428900000000, 0x38a922b500000000, 0x011e763800000000, + 0x09fd160400000000, 0x11d8b74000000000, 0x193bd77c00000000, + 0x2192f5c900000000, 0x297195f500000000, 0x315434b100000000, + 0x39b7548d00000000, 0x023cec7000000000, 0x0adf8c4c00000000, + 0x12fa2d0800000000, 0x1a194d3400000000, 0x22b06f8100000000, + 0x2a530fbd00000000, 0x3276aef900000000, 0x3a95cec500000000, + 0x03229a4800000000, 0x0bc1fa7400000000, 0x13e45b3000000000, + 0x1b073b0c00000000, 0x23ae19b900000000, 0x2b4d798500000000, + 0x3368d8c100000000, 0x3b8bb8fd00000000, 0x0478d8e100000000, + 0x0c9bb8dd00000000, 0x14be199900000000, 0x1c5d79a500000000, + 0x24f45b1000000000, 0x2c173b2c00000000, 0x34329a6800000000, + 0x3cd1fa5400000000, 0x0566aed900000000, 0x0d85cee500000000, + 0x15a06fa100000000, 0x1d430f9d00000000, 0x25ea2d2800000000, + 0x2d094d1400000000, 0x352cec5000000000, 0x3dcf8c6c00000000, + 0x0644349100000000, 0x0ea754ad00000000, 0x1682f5e900000000, + 0x1e6195d500000000, 0x26c8b76000000000, 0x2e2bd75c00000000, + 0x360e761800000000, 0x3eed162400000000, 0x075a42a900000000, + 0x0fb9229500000000, 0x179c83d100000000, 0x1f7fe3ed00000000, + 0x27d6c15800000000, 0x2f35a16400000000, 0x3710002000000000, + 0x3ff3601c00000000, 0x49f6c11800000000, 0x4115a12400000000, + 0x5930006000000000, 0x51d3605c00000000, 0x697a42e900000000, + 0x619922d500000000, 0x79bc839100000000, 0x715fe3ad00000000, + 0x48e8b72000000000, 0x400bd71c00000000, 0x582e765800000000, + 0x50cd166400000000, 0x686434d100000000, 0x608754ed00000000, + 0x78a2f5a900000000, 0x7041959500000000, 0x4bca2d6800000000, + 0x43294d5400000000, 0x5b0cec1000000000, 0x53ef8c2c00000000, + 0x6b46ae9900000000, 0x63a5cea500000000, 0x7b806fe100000000, + 0x73630fdd00000000, 0x4ad45b5000000000, 0x42373b6c00000000, + 0x5a129a2800000000, 0x52f1fa1400000000, 0x6a58d8a100000000, + 0x62bbb89d00000000, 0x7a9e19d900000000, 0x727d79e500000000, + 0x4d8e19f900000000, 0x456d79c500000000, 0x5d48d88100000000, + 0x55abb8bd00000000, 0x6d029a0800000000, 0x65e1fa3400000000, + 0x7dc45b7000000000, 0x75273b4c00000000, 0x4c906fc100000000, + 0x44730ffd00000000, 0x5c56aeb900000000, 0x54b5ce8500000000, + 0x6c1cec3000000000, 0x64ff8c0c00000000, 0x7cda2d4800000000, + 0x74394d7400000000, 0x4fb2f58900000000, 0x475195b500000000, + 0x5f7434f100000000, 0x579754cd00000000, 0x6f3e767800000000, + 0x67dd164400000000, 0x7ff8b70000000000, 0x771bd73c00000000, + 0x4eac83b100000000, 0x464fe38d00000000, 0x5e6a42c900000000, + 0x568922f500000000, 0x6e20004000000000, 0x66c3607c00000000, + 0x7ee6c13800000000, 0x7605a10400000000, 0x92ec833100000000, + 0x9a0fe30d00000000, 0x822a424900000000, 0x8ac9227500000000, + 0xb26000c000000000, 0xba8360fc00000000, 0xa2a6c1b800000000, + 0xaa45a18400000000, 0x93f2f50900000000, 0x9b11953500000000, + 0x8334347100000000, 0x8bd7544d00000000, 0xb37e76f800000000, + 0xbb9d16c400000000, 0xa3b8b78000000000, 0xab5bd7bc00000000, + 0x90d06f4100000000, 0x98330f7d00000000, 0x8016ae3900000000, + 0x88f5ce0500000000, 0xb05cecb000000000, 0xb8bf8c8c00000000, + 0xa09a2dc800000000, 0xa8794df400000000, 0x91ce197900000000, + 0x992d794500000000, 0x8108d80100000000, 0x89ebb83d00000000, + 0xb1429a8800000000, 0xb9a1fab400000000, 0xa1845bf000000000, + 0xa9673bcc00000000, 0x96945bd000000000, 0x9e773bec00000000, + 0x86529aa800000000, 0x8eb1fa9400000000, 0xb618d82100000000, + 0xbefbb81d00000000, 0xa6de195900000000, 0xae3d796500000000, + 0x978a2de800000000, 0x9f694dd400000000, 0x874cec9000000000, + 0x8faf8cac00000000, 0xb706ae1900000000, 0xbfe5ce2500000000, + 0xa7c06f6100000000, 0xaf230f5d00000000, 0x94a8b7a000000000, + 0x9c4bd79c00000000, 0x846e76d800000000, 0x8c8d16e400000000, + 0xb424345100000000, 0xbcc7546d00000000, 0xa4e2f52900000000, + 0xac01951500000000, 0x95b6c19800000000, 0x9d55a1a400000000, + 0x857000e000000000, 0x8d9360dc00000000, 0xb53a426900000000, + 0xbdd9225500000000, 0xa5fc831100000000, 0xad1fe32d00000000, + 0xdb1a422900000000, 0xd3f9221500000000, 0xcbdc835100000000, + 0xc33fe36d00000000, 0xfb96c1d800000000, 0xf375a1e400000000, + 0xeb5000a000000000, 0xe3b3609c00000000, 0xda04341100000000, + 0xd2e7542d00000000, 0xcac2f56900000000, 0xc221955500000000, + 0xfa88b7e000000000, 0xf26bd7dc00000000, 0xea4e769800000000, + 0xe2ad16a400000000, 0xd926ae5900000000, 0xd1c5ce6500000000, + 0xc9e06f2100000000, 0xc1030f1d00000000, 0xf9aa2da800000000, + 0xf1494d9400000000, 0xe96cecd000000000, 0xe18f8cec00000000, + 0xd838d86100000000, 0xd0dbb85d00000000, 0xc8fe191900000000, + 0xc01d792500000000, 0xf8b45b9000000000, 0xf0573bac00000000, + 0xe8729ae800000000, 0xe091fad400000000, 0xdf629ac800000000, + 0xd781faf400000000, 0xcfa45bb000000000, 0xc7473b8c00000000, + 0xffee193900000000, 0xf70d790500000000, 0xef28d84100000000, + 0xe7cbb87d00000000, 0xde7cecf000000000, 0xd69f8ccc00000000, + 0xceba2d8800000000, 0xc6594db400000000, 0xfef06f0100000000, + 0xf6130f3d00000000, 0xee36ae7900000000, 0xe6d5ce4500000000, + 0xdd5e76b800000000, 0xd5bd168400000000, 0xcd98b7c000000000, + 0xc57bd7fc00000000, 0xfdd2f54900000000, 0xf531957500000000, + 0xed14343100000000, 0xe5f7540d00000000, 0xdc40008000000000, + 0xd4a360bc00000000, 0xcc86c1f800000000, 0xc465a1c400000000, + 0xfccc837100000000, 0xf42fe34d00000000, 0xec0a420900000000, + 0xe4e9223500000000}, + {0x0000000000000000, 0xd1e8e70e00000000, 0xa2d1cf1d00000000, + 0x7339281300000000, 0x44a39f3b00000000, 0x954b783500000000, + 0xe672502600000000, 0x379ab72800000000, 0x88463f7700000000, + 0x59aed87900000000, 0x2a97f06a00000000, 0xfb7f176400000000, + 0xcce5a04c00000000, 0x1d0d474200000000, 0x6e346f5100000000, + 0xbfdc885f00000000, 0x108d7eee00000000, 0xc16599e000000000, + 0xb25cb1f300000000, 0x63b456fd00000000, 0x542ee1d500000000, + 0x85c606db00000000, 0xf6ff2ec800000000, 0x2717c9c600000000, + 0x98cb419900000000, 0x4923a69700000000, 0x3a1a8e8400000000, + 0xebf2698a00000000, 0xdc68dea200000000, 0x0d8039ac00000000, + 0x7eb911bf00000000, 0xaf51f6b100000000, 0x611c8c0700000000, + 0xb0f46b0900000000, 0xc3cd431a00000000, 0x1225a41400000000, + 0x25bf133c00000000, 0xf457f43200000000, 0x876edc2100000000, + 0x56863b2f00000000, 0xe95ab37000000000, 0x38b2547e00000000, + 0x4b8b7c6d00000000, 0x9a639b6300000000, 0xadf92c4b00000000, + 0x7c11cb4500000000, 0x0f28e35600000000, 0xdec0045800000000, + 0x7191f2e900000000, 0xa07915e700000000, 0xd3403df400000000, + 0x02a8dafa00000000, 0x35326dd200000000, 0xe4da8adc00000000, + 0x97e3a2cf00000000, 0x460b45c100000000, 0xf9d7cd9e00000000, + 0x283f2a9000000000, 0x5b06028300000000, 0x8aeee58d00000000, + 0xbd7452a500000000, 0x6c9cb5ab00000000, 0x1fa59db800000000, + 0xce4d7ab600000000, 0xc238180f00000000, 0x13d0ff0100000000, + 0x60e9d71200000000, 0xb101301c00000000, 0x869b873400000000, + 0x5773603a00000000, 0x244a482900000000, 0xf5a2af2700000000, + 0x4a7e277800000000, 0x9b96c07600000000, 0xe8afe86500000000, + 0x39470f6b00000000, 0x0eddb84300000000, 0xdf355f4d00000000, + 0xac0c775e00000000, 0x7de4905000000000, 0xd2b566e100000000, + 0x035d81ef00000000, 0x7064a9fc00000000, 0xa18c4ef200000000, + 0x9616f9da00000000, 0x47fe1ed400000000, 0x34c736c700000000, + 0xe52fd1c900000000, 0x5af3599600000000, 0x8b1bbe9800000000, + 0xf822968b00000000, 0x29ca718500000000, 0x1e50c6ad00000000, + 0xcfb821a300000000, 0xbc8109b000000000, 0x6d69eebe00000000, + 0xa324940800000000, 0x72cc730600000000, 0x01f55b1500000000, + 0xd01dbc1b00000000, 0xe7870b3300000000, 0x366fec3d00000000, + 0x4556c42e00000000, 0x94be232000000000, 0x2b62ab7f00000000, + 0xfa8a4c7100000000, 0x89b3646200000000, 0x585b836c00000000, + 0x6fc1344400000000, 0xbe29d34a00000000, 0xcd10fb5900000000, + 0x1cf81c5700000000, 0xb3a9eae600000000, 0x62410de800000000, + 0x117825fb00000000, 0xc090c2f500000000, 0xf70a75dd00000000, + 0x26e292d300000000, 0x55dbbac000000000, 0x84335dce00000000, + 0x3befd59100000000, 0xea07329f00000000, 0x993e1a8c00000000, + 0x48d6fd8200000000, 0x7f4c4aaa00000000, 0xaea4ada400000000, + 0xdd9d85b700000000, 0x0c7562b900000000, 0x8471301e00000000, + 0x5599d71000000000, 0x26a0ff0300000000, 0xf748180d00000000, + 0xc0d2af2500000000, 0x113a482b00000000, 0x6203603800000000, + 0xb3eb873600000000, 0x0c370f6900000000, 0xdddfe86700000000, + 0xaee6c07400000000, 0x7f0e277a00000000, 0x4894905200000000, + 0x997c775c00000000, 0xea455f4f00000000, 0x3badb84100000000, + 0x94fc4ef000000000, 0x4514a9fe00000000, 0x362d81ed00000000, + 0xe7c566e300000000, 0xd05fd1cb00000000, 0x01b736c500000000, + 0x728e1ed600000000, 0xa366f9d800000000, 0x1cba718700000000, + 0xcd52968900000000, 0xbe6bbe9a00000000, 0x6f83599400000000, + 0x5819eebc00000000, 0x89f109b200000000, 0xfac821a100000000, + 0x2b20c6af00000000, 0xe56dbc1900000000, 0x34855b1700000000, + 0x47bc730400000000, 0x9654940a00000000, 0xa1ce232200000000, + 0x7026c42c00000000, 0x031fec3f00000000, 0xd2f70b3100000000, + 0x6d2b836e00000000, 0xbcc3646000000000, 0xcffa4c7300000000, + 0x1e12ab7d00000000, 0x29881c5500000000, 0xf860fb5b00000000, + 0x8b59d34800000000, 0x5ab1344600000000, 0xf5e0c2f700000000, + 0x240825f900000000, 0x57310dea00000000, 0x86d9eae400000000, + 0xb1435dcc00000000, 0x60abbac200000000, 0x139292d100000000, + 0xc27a75df00000000, 0x7da6fd8000000000, 0xac4e1a8e00000000, + 0xdf77329d00000000, 0x0e9fd59300000000, 0x390562bb00000000, + 0xe8ed85b500000000, 0x9bd4ada600000000, 0x4a3c4aa800000000, + 0x4649281100000000, 0x97a1cf1f00000000, 0xe498e70c00000000, + 0x3570000200000000, 0x02eab72a00000000, 0xd302502400000000, + 0xa03b783700000000, 0x71d39f3900000000, 0xce0f176600000000, + 0x1fe7f06800000000, 0x6cded87b00000000, 0xbd363f7500000000, + 0x8aac885d00000000, 0x5b446f5300000000, 0x287d474000000000, + 0xf995a04e00000000, 0x56c456ff00000000, 0x872cb1f100000000, + 0xf41599e200000000, 0x25fd7eec00000000, 0x1267c9c400000000, + 0xc38f2eca00000000, 0xb0b606d900000000, 0x615ee1d700000000, + 0xde82698800000000, 0x0f6a8e8600000000, 0x7c53a69500000000, + 0xadbb419b00000000, 0x9a21f6b300000000, 0x4bc911bd00000000, + 0x38f039ae00000000, 0xe918dea000000000, 0x2755a41600000000, + 0xf6bd431800000000, 0x85846b0b00000000, 0x546c8c0500000000, + 0x63f63b2d00000000, 0xb21edc2300000000, 0xc127f43000000000, + 0x10cf133e00000000, 0xaf139b6100000000, 0x7efb7c6f00000000, + 0x0dc2547c00000000, 0xdc2ab37200000000, 0xebb0045a00000000, + 0x3a58e35400000000, 0x4961cb4700000000, 0x98892c4900000000, + 0x37d8daf800000000, 0xe6303df600000000, 0x950915e500000000, + 0x44e1f2eb00000000, 0x737b45c300000000, 0xa293a2cd00000000, + 0xd1aa8ade00000000, 0x00426dd000000000, 0xbf9ee58f00000000, + 0x6e76028100000000, 0x1d4f2a9200000000, 0xcca7cd9c00000000, + 0xfb3d7ab400000000, 0x2ad59dba00000000, 0x59ecb5a900000000, + 0x880452a700000000}, + {0x0000000000000000, 0xaa05daf100000000, 0x150dc53800000000, + 0xbf081fc900000000, 0x2a1a8a7100000000, 0x801f508000000000, + 0x3f174f4900000000, 0x951295b800000000, 0x543414e300000000, + 0xfe31ce1200000000, 0x4139d1db00000000, 0xeb3c0b2a00000000, + 0x7e2e9e9200000000, 0xd42b446300000000, 0x6b235baa00000000, + 0xc126815b00000000, 0xe96e591d00000000, 0x436b83ec00000000, + 0xfc639c2500000000, 0x566646d400000000, 0xc374d36c00000000, + 0x6971099d00000000, 0xd679165400000000, 0x7c7ccca500000000, + 0xbd5a4dfe00000000, 0x175f970f00000000, 0xa85788c600000000, + 0x0252523700000000, 0x9740c78f00000000, 0x3d451d7e00000000, + 0x824d02b700000000, 0x2848d84600000000, 0xd2ddb23a00000000, + 0x78d868cb00000000, 0xc7d0770200000000, 0x6dd5adf300000000, + 0xf8c7384b00000000, 0x52c2e2ba00000000, 0xedcafd7300000000, + 0x47cf278200000000, 0x86e9a6d900000000, 0x2cec7c2800000000, + 0x93e463e100000000, 0x39e1b91000000000, 0xacf32ca800000000, + 0x06f6f65900000000, 0xb9fee99000000000, 0x13fb336100000000, + 0x3bb3eb2700000000, 0x91b631d600000000, 0x2ebe2e1f00000000, + 0x84bbf4ee00000000, 0x11a9615600000000, 0xbbacbba700000000, + 0x04a4a46e00000000, 0xaea17e9f00000000, 0x6f87ffc400000000, + 0xc582253500000000, 0x7a8a3afc00000000, 0xd08fe00d00000000, + 0x459d75b500000000, 0xef98af4400000000, 0x5090b08d00000000, + 0xfa956a7c00000000, 0xa4bb657500000000, 0x0ebebf8400000000, + 0xb1b6a04d00000000, 0x1bb37abc00000000, 0x8ea1ef0400000000, + 0x24a435f500000000, 0x9bac2a3c00000000, 0x31a9f0cd00000000, + 0xf08f719600000000, 0x5a8aab6700000000, 0xe582b4ae00000000, + 0x4f876e5f00000000, 0xda95fbe700000000, 0x7090211600000000, + 0xcf983edf00000000, 0x659de42e00000000, 0x4dd53c6800000000, + 0xe7d0e69900000000, 0x58d8f95000000000, 0xf2dd23a100000000, + 0x67cfb61900000000, 0xcdca6ce800000000, 0x72c2732100000000, + 0xd8c7a9d000000000, 0x19e1288b00000000, 0xb3e4f27a00000000, + 0x0cecedb300000000, 0xa6e9374200000000, 0x33fba2fa00000000, + 0x99fe780b00000000, 0x26f667c200000000, 0x8cf3bd3300000000, + 0x7666d74f00000000, 0xdc630dbe00000000, 0x636b127700000000, + 0xc96ec88600000000, 0x5c7c5d3e00000000, 0xf67987cf00000000, + 0x4971980600000000, 0xe37442f700000000, 0x2252c3ac00000000, + 0x8857195d00000000, 0x375f069400000000, 0x9d5adc6500000000, + 0x084849dd00000000, 0xa24d932c00000000, 0x1d458ce500000000, + 0xb740561400000000, 0x9f088e5200000000, 0x350d54a300000000, + 0x8a054b6a00000000, 0x2000919b00000000, 0xb512042300000000, + 0x1f17ded200000000, 0xa01fc11b00000000, 0x0a1a1bea00000000, + 0xcb3c9ab100000000, 0x6139404000000000, 0xde315f8900000000, + 0x7434857800000000, 0xe12610c000000000, 0x4b23ca3100000000, + 0xf42bd5f800000000, 0x5e2e0f0900000000, 0x4877cbea00000000, + 0xe272111b00000000, 0x5d7a0ed200000000, 0xf77fd42300000000, + 0x626d419b00000000, 0xc8689b6a00000000, 0x776084a300000000, + 0xdd655e5200000000, 0x1c43df0900000000, 0xb64605f800000000, + 0x094e1a3100000000, 0xa34bc0c000000000, 0x3659557800000000, + 0x9c5c8f8900000000, 0x2354904000000000, 0x89514ab100000000, + 0xa11992f700000000, 0x0b1c480600000000, 0xb41457cf00000000, + 0x1e118d3e00000000, 0x8b03188600000000, 0x2106c27700000000, + 0x9e0eddbe00000000, 0x340b074f00000000, 0xf52d861400000000, + 0x5f285ce500000000, 0xe020432c00000000, 0x4a2599dd00000000, + 0xdf370c6500000000, 0x7532d69400000000, 0xca3ac95d00000000, + 0x603f13ac00000000, 0x9aaa79d000000000, 0x30afa32100000000, + 0x8fa7bce800000000, 0x25a2661900000000, 0xb0b0f3a100000000, + 0x1ab5295000000000, 0xa5bd369900000000, 0x0fb8ec6800000000, + 0xce9e6d3300000000, 0x649bb7c200000000, 0xdb93a80b00000000, + 0x719672fa00000000, 0xe484e74200000000, 0x4e813db300000000, + 0xf189227a00000000, 0x5b8cf88b00000000, 0x73c420cd00000000, + 0xd9c1fa3c00000000, 0x66c9e5f500000000, 0xcccc3f0400000000, + 0x59deaabc00000000, 0xf3db704d00000000, 0x4cd36f8400000000, + 0xe6d6b57500000000, 0x27f0342e00000000, 0x8df5eedf00000000, + 0x32fdf11600000000, 0x98f82be700000000, 0x0deabe5f00000000, + 0xa7ef64ae00000000, 0x18e77b6700000000, 0xb2e2a19600000000, + 0xecccae9f00000000, 0x46c9746e00000000, 0xf9c16ba700000000, + 0x53c4b15600000000, 0xc6d624ee00000000, 0x6cd3fe1f00000000, + 0xd3dbe1d600000000, 0x79de3b2700000000, 0xb8f8ba7c00000000, + 0x12fd608d00000000, 0xadf57f4400000000, 0x07f0a5b500000000, + 0x92e2300d00000000, 0x38e7eafc00000000, 0x87eff53500000000, + 0x2dea2fc400000000, 0x05a2f78200000000, 0xafa72d7300000000, + 0x10af32ba00000000, 0xbaaae84b00000000, 0x2fb87df300000000, + 0x85bda70200000000, 0x3ab5b8cb00000000, 0x90b0623a00000000, + 0x5196e36100000000, 0xfb93399000000000, 0x449b265900000000, + 0xee9efca800000000, 0x7b8c691000000000, 0xd189b3e100000000, + 0x6e81ac2800000000, 0xc48476d900000000, 0x3e111ca500000000, + 0x9414c65400000000, 0x2b1cd99d00000000, 0x8119036c00000000, + 0x140b96d400000000, 0xbe0e4c2500000000, 0x010653ec00000000, + 0xab03891d00000000, 0x6a25084600000000, 0xc020d2b700000000, + 0x7f28cd7e00000000, 0xd52d178f00000000, 0x403f823700000000, + 0xea3a58c600000000, 0x5532470f00000000, 0xff379dfe00000000, + 0xd77f45b800000000, 0x7d7a9f4900000000, 0xc272808000000000, + 0x68775a7100000000, 0xfd65cfc900000000, 0x5760153800000000, + 0xe8680af100000000, 0x426dd00000000000, 0x834b515b00000000, + 0x294e8baa00000000, 0x9646946300000000, 0x3c434e9200000000, + 0xa951db2a00000000, 0x035401db00000000, 0xbc5c1e1200000000, + 0x1659c4e300000000}}; + +#else /* W == 4 */ + +local const z_crc_t FAR crc_braid_table[][256] = { + {0x00000000, 0xae689191, 0x87a02563, 0x29c8b4f2, 0xd4314c87, + 0x7a59dd16, 0x539169e4, 0xfdf9f875, 0x73139f4f, 0xdd7b0ede, + 0xf4b3ba2c, 0x5adb2bbd, 0xa722d3c8, 0x094a4259, 0x2082f6ab, + 0x8eea673a, 0xe6273e9e, 0x484faf0f, 0x61871bfd, 0xcfef8a6c, + 0x32167219, 0x9c7ee388, 0xb5b6577a, 0x1bdec6eb, 0x9534a1d1, + 0x3b5c3040, 0x129484b2, 0xbcfc1523, 0x4105ed56, 0xef6d7cc7, + 0xc6a5c835, 0x68cd59a4, 0x173f7b7d, 0xb957eaec, 0x909f5e1e, + 0x3ef7cf8f, 0xc30e37fa, 0x6d66a66b, 0x44ae1299, 0xeac68308, + 0x642ce432, 0xca4475a3, 0xe38cc151, 0x4de450c0, 0xb01da8b5, + 0x1e753924, 0x37bd8dd6, 0x99d51c47, 0xf11845e3, 0x5f70d472, + 0x76b86080, 0xd8d0f111, 0x25290964, 0x8b4198f5, 0xa2892c07, + 0x0ce1bd96, 0x820bdaac, 0x2c634b3d, 0x05abffcf, 0xabc36e5e, + 0x563a962b, 0xf85207ba, 0xd19ab348, 0x7ff222d9, 0x2e7ef6fa, + 0x8016676b, 0xa9ded399, 0x07b64208, 0xfa4fba7d, 0x54272bec, + 0x7def9f1e, 0xd3870e8f, 0x5d6d69b5, 0xf305f824, 0xdacd4cd6, + 0x74a5dd47, 0x895c2532, 0x2734b4a3, 0x0efc0051, 0xa09491c0, + 0xc859c864, 0x663159f5, 0x4ff9ed07, 0xe1917c96, 0x1c6884e3, + 0xb2001572, 0x9bc8a180, 0x35a03011, 0xbb4a572b, 0x1522c6ba, + 0x3cea7248, 0x9282e3d9, 0x6f7b1bac, 0xc1138a3d, 0xe8db3ecf, + 0x46b3af5e, 0x39418d87, 0x97291c16, 0xbee1a8e4, 0x10893975, + 0xed70c100, 0x43185091, 0x6ad0e463, 0xc4b875f2, 0x4a5212c8, + 0xe43a8359, 0xcdf237ab, 0x639aa63a, 0x9e635e4f, 0x300bcfde, + 0x19c37b2c, 0xb7abeabd, 0xdf66b319, 0x710e2288, 0x58c6967a, + 0xf6ae07eb, 0x0b57ff9e, 0xa53f6e0f, 0x8cf7dafd, 0x229f4b6c, + 0xac752c56, 0x021dbdc7, 0x2bd50935, 0x85bd98a4, 0x784460d1, + 0xd62cf140, 0xffe445b2, 0x518cd423, 0x5cfdedf4, 0xf2957c65, + 0xdb5dc897, 0x75355906, 0x88cca173, 0x26a430e2, 0x0f6c8410, + 0xa1041581, 0x2fee72bb, 0x8186e32a, 0xa84e57d8, 0x0626c649, + 0xfbdf3e3c, 0x55b7afad, 0x7c7f1b5f, 0xd2178ace, 0xbadad36a, + 0x14b242fb, 0x3d7af609, 0x93126798, 0x6eeb9fed, 0xc0830e7c, + 0xe94bba8e, 0x47232b1f, 0xc9c94c25, 0x67a1ddb4, 0x4e696946, + 0xe001f8d7, 0x1df800a2, 0xb3909133, 0x9a5825c1, 0x3430b450, + 0x4bc29689, 0xe5aa0718, 0xcc62b3ea, 0x620a227b, 0x9ff3da0e, + 0x319b4b9f, 0x1853ff6d, 0xb63b6efc, 0x38d109c6, 0x96b99857, + 0xbf712ca5, 0x1119bd34, 0xece04541, 0x4288d4d0, 0x6b406022, + 0xc528f1b3, 0xade5a817, 0x038d3986, 0x2a458d74, 0x842d1ce5, + 0x79d4e490, 0xd7bc7501, 0xfe74c1f3, 0x501c5062, 0xdef63758, + 0x709ea6c9, 0x5956123b, 0xf73e83aa, 0x0ac77bdf, 0xa4afea4e, + 0x8d675ebc, 0x230fcf2d, 0x72831b0e, 0xdceb8a9f, 0xf5233e6d, + 0x5b4baffc, 0xa6b25789, 0x08dac618, 0x211272ea, 0x8f7ae37b, + 0x01908441, 0xaff815d0, 0x8630a122, 0x285830b3, 0xd5a1c8c6, + 0x7bc95957, 0x5201eda5, 0xfc697c34, 0x94a42590, 0x3accb401, + 0x130400f3, 0xbd6c9162, 0x40956917, 0xeefdf886, 0xc7354c74, + 0x695ddde5, 0xe7b7badf, 0x49df2b4e, 0x60179fbc, 0xce7f0e2d, + 0x3386f658, 0x9dee67c9, 0xb426d33b, 0x1a4e42aa, 0x65bc6073, + 0xcbd4f1e2, 0xe21c4510, 0x4c74d481, 0xb18d2cf4, 0x1fe5bd65, + 0x362d0997, 0x98459806, 0x16afff3c, 0xb8c76ead, 0x910fda5f, + 0x3f674bce, 0xc29eb3bb, 0x6cf6222a, 0x453e96d8, 0xeb560749, + 0x839b5eed, 0x2df3cf7c, 0x043b7b8e, 0xaa53ea1f, 0x57aa126a, + 0xf9c283fb, 0xd00a3709, 0x7e62a698, 0xf088c1a2, 0x5ee05033, + 0x7728e4c1, 0xd9407550, 0x24b98d25, 0x8ad11cb4, 0xa319a846, + 0x0d7139d7}, + {0x00000000, 0xb9fbdbe8, 0xa886b191, 0x117d6a79, 0x8a7c6563, + 0x3387be8b, 0x22fad4f2, 0x9b010f1a, 0xcf89cc87, 0x7672176f, + 0x670f7d16, 0xdef4a6fe, 0x45f5a9e4, 0xfc0e720c, 0xed731875, + 0x5488c39d, 0x44629f4f, 0xfd9944a7, 0xece42ede, 0x551ff536, + 0xce1efa2c, 0x77e521c4, 0x66984bbd, 0xdf639055, 0x8beb53c8, + 0x32108820, 0x236de259, 0x9a9639b1, 0x019736ab, 0xb86ced43, + 0xa911873a, 0x10ea5cd2, 0x88c53e9e, 0x313ee576, 0x20438f0f, + 0x99b854e7, 0x02b95bfd, 0xbb428015, 0xaa3fea6c, 0x13c43184, + 0x474cf219, 0xfeb729f1, 0xefca4388, 0x56319860, 0xcd30977a, + 0x74cb4c92, 0x65b626eb, 0xdc4dfd03, 0xcca7a1d1, 0x755c7a39, + 0x64211040, 0xdddacba8, 0x46dbc4b2, 0xff201f5a, 0xee5d7523, + 0x57a6aecb, 0x032e6d56, 0xbad5b6be, 0xaba8dcc7, 0x1253072f, + 0x89520835, 0x30a9d3dd, 0x21d4b9a4, 0x982f624c, 0xcafb7b7d, + 0x7300a095, 0x627dcaec, 0xdb861104, 0x40871e1e, 0xf97cc5f6, + 0xe801af8f, 0x51fa7467, 0x0572b7fa, 0xbc896c12, 0xadf4066b, + 0x140fdd83, 0x8f0ed299, 0x36f50971, 0x27886308, 0x9e73b8e0, + 0x8e99e432, 0x37623fda, 0x261f55a3, 0x9fe48e4b, 0x04e58151, + 0xbd1e5ab9, 0xac6330c0, 0x1598eb28, 0x411028b5, 0xf8ebf35d, + 0xe9969924, 0x506d42cc, 0xcb6c4dd6, 0x7297963e, 0x63eafc47, + 0xda1127af, 0x423e45e3, 0xfbc59e0b, 0xeab8f472, 0x53432f9a, + 0xc8422080, 0x71b9fb68, 0x60c49111, 0xd93f4af9, 0x8db78964, + 0x344c528c, 0x253138f5, 0x9ccae31d, 0x07cbec07, 0xbe3037ef, + 0xaf4d5d96, 0x16b6867e, 0x065cdaac, 0xbfa70144, 0xaeda6b3d, + 0x1721b0d5, 0x8c20bfcf, 0x35db6427, 0x24a60e5e, 0x9d5dd5b6, + 0xc9d5162b, 0x702ecdc3, 0x6153a7ba, 0xd8a87c52, 0x43a97348, + 0xfa52a8a0, 0xeb2fc2d9, 0x52d41931, 0x4e87f0bb, 0xf77c2b53, + 0xe601412a, 0x5ffa9ac2, 0xc4fb95d8, 0x7d004e30, 0x6c7d2449, + 0xd586ffa1, 0x810e3c3c, 0x38f5e7d4, 0x29888dad, 0x90735645, + 0x0b72595f, 0xb28982b7, 0xa3f4e8ce, 0x1a0f3326, 0x0ae56ff4, + 0xb31eb41c, 0xa263de65, 0x1b98058d, 0x80990a97, 0x3962d17f, + 0x281fbb06, 0x91e460ee, 0xc56ca373, 0x7c97789b, 0x6dea12e2, + 0xd411c90a, 0x4f10c610, 0xf6eb1df8, 0xe7967781, 0x5e6dac69, + 0xc642ce25, 0x7fb915cd, 0x6ec47fb4, 0xd73fa45c, 0x4c3eab46, + 0xf5c570ae, 0xe4b81ad7, 0x5d43c13f, 0x09cb02a2, 0xb030d94a, + 0xa14db333, 0x18b668db, 0x83b767c1, 0x3a4cbc29, 0x2b31d650, + 0x92ca0db8, 0x8220516a, 0x3bdb8a82, 0x2aa6e0fb, 0x935d3b13, + 0x085c3409, 0xb1a7efe1, 0xa0da8598, 0x19215e70, 0x4da99ded, + 0xf4524605, 0xe52f2c7c, 0x5cd4f794, 0xc7d5f88e, 0x7e2e2366, + 0x6f53491f, 0xd6a892f7, 0x847c8bc6, 0x3d87502e, 0x2cfa3a57, + 0x9501e1bf, 0x0e00eea5, 0xb7fb354d, 0xa6865f34, 0x1f7d84dc, + 0x4bf54741, 0xf20e9ca9, 0xe373f6d0, 0x5a882d38, 0xc1892222, + 0x7872f9ca, 0x690f93b3, 0xd0f4485b, 0xc01e1489, 0x79e5cf61, + 0x6898a518, 0xd1637ef0, 0x4a6271ea, 0xf399aa02, 0xe2e4c07b, + 0x5b1f1b93, 0x0f97d80e, 0xb66c03e6, 0xa711699f, 0x1eeab277, + 0x85ebbd6d, 0x3c106685, 0x2d6d0cfc, 0x9496d714, 0x0cb9b558, + 0xb5426eb0, 0xa43f04c9, 0x1dc4df21, 0x86c5d03b, 0x3f3e0bd3, + 0x2e4361aa, 0x97b8ba42, 0xc33079df, 0x7acba237, 0x6bb6c84e, + 0xd24d13a6, 0x494c1cbc, 0xf0b7c754, 0xe1caad2d, 0x583176c5, + 0x48db2a17, 0xf120f1ff, 0xe05d9b86, 0x59a6406e, 0xc2a74f74, + 0x7b5c949c, 0x6a21fee5, 0xd3da250d, 0x8752e690, 0x3ea93d78, + 0x2fd45701, 0x962f8ce9, 0x0d2e83f3, 0xb4d5581b, 0xa5a83262, + 0x1c53e98a}, + {0x00000000, 0x9d0fe176, 0xe16ec4ad, 0x7c6125db, 0x19ac8f1b, + 0x84a36e6d, 0xf8c24bb6, 0x65cdaac0, 0x33591e36, 0xae56ff40, + 0xd237da9b, 0x4f383bed, 0x2af5912d, 0xb7fa705b, 0xcb9b5580, + 0x5694b4f6, 0x66b23c6c, 0xfbbddd1a, 0x87dcf8c1, 0x1ad319b7, + 0x7f1eb377, 0xe2115201, 0x9e7077da, 0x037f96ac, 0x55eb225a, + 0xc8e4c32c, 0xb485e6f7, 0x298a0781, 0x4c47ad41, 0xd1484c37, + 0xad2969ec, 0x3026889a, 0xcd6478d8, 0x506b99ae, 0x2c0abc75, + 0xb1055d03, 0xd4c8f7c3, 0x49c716b5, 0x35a6336e, 0xa8a9d218, + 0xfe3d66ee, 0x63328798, 0x1f53a243, 0x825c4335, 0xe791e9f5, + 0x7a9e0883, 0x06ff2d58, 0x9bf0cc2e, 0xabd644b4, 0x36d9a5c2, + 0x4ab88019, 0xd7b7616f, 0xb27acbaf, 0x2f752ad9, 0x53140f02, + 0xce1bee74, 0x988f5a82, 0x0580bbf4, 0x79e19e2f, 0xe4ee7f59, + 0x8123d599, 0x1c2c34ef, 0x604d1134, 0xfd42f042, 0x41b9f7f1, + 0xdcb61687, 0xa0d7335c, 0x3dd8d22a, 0x581578ea, 0xc51a999c, + 0xb97bbc47, 0x24745d31, 0x72e0e9c7, 0xefef08b1, 0x938e2d6a, + 0x0e81cc1c, 0x6b4c66dc, 0xf64387aa, 0x8a22a271, 0x172d4307, + 0x270bcb9d, 0xba042aeb, 0xc6650f30, 0x5b6aee46, 0x3ea74486, + 0xa3a8a5f0, 0xdfc9802b, 0x42c6615d, 0x1452d5ab, 0x895d34dd, + 0xf53c1106, 0x6833f070, 0x0dfe5ab0, 0x90f1bbc6, 0xec909e1d, + 0x719f7f6b, 0x8cdd8f29, 0x11d26e5f, 0x6db34b84, 0xf0bcaaf2, + 0x95710032, 0x087ee144, 0x741fc49f, 0xe91025e9, 0xbf84911f, + 0x228b7069, 0x5eea55b2, 0xc3e5b4c4, 0xa6281e04, 0x3b27ff72, + 0x4746daa9, 0xda493bdf, 0xea6fb345, 0x77605233, 0x0b0177e8, + 0x960e969e, 0xf3c33c5e, 0x6eccdd28, 0x12adf8f3, 0x8fa21985, + 0xd936ad73, 0x44394c05, 0x385869de, 0xa55788a8, 0xc09a2268, + 0x5d95c31e, 0x21f4e6c5, 0xbcfb07b3, 0x8373efe2, 0x1e7c0e94, + 0x621d2b4f, 0xff12ca39, 0x9adf60f9, 0x07d0818f, 0x7bb1a454, + 0xe6be4522, 0xb02af1d4, 0x2d2510a2, 0x51443579, 0xcc4bd40f, + 0xa9867ecf, 0x34899fb9, 0x48e8ba62, 0xd5e75b14, 0xe5c1d38e, + 0x78ce32f8, 0x04af1723, 0x99a0f655, 0xfc6d5c95, 0x6162bde3, + 0x1d039838, 0x800c794e, 0xd698cdb8, 0x4b972cce, 0x37f60915, + 0xaaf9e863, 0xcf3442a3, 0x523ba3d5, 0x2e5a860e, 0xb3556778, + 0x4e17973a, 0xd318764c, 0xaf795397, 0x3276b2e1, 0x57bb1821, + 0xcab4f957, 0xb6d5dc8c, 0x2bda3dfa, 0x7d4e890c, 0xe041687a, + 0x9c204da1, 0x012facd7, 0x64e20617, 0xf9ede761, 0x858cc2ba, + 0x188323cc, 0x28a5ab56, 0xb5aa4a20, 0xc9cb6ffb, 0x54c48e8d, + 0x3109244d, 0xac06c53b, 0xd067e0e0, 0x4d680196, 0x1bfcb560, + 0x86f35416, 0xfa9271cd, 0x679d90bb, 0x02503a7b, 0x9f5fdb0d, + 0xe33efed6, 0x7e311fa0, 0xc2ca1813, 0x5fc5f965, 0x23a4dcbe, + 0xbeab3dc8, 0xdb669708, 0x4669767e, 0x3a0853a5, 0xa707b2d3, + 0xf1930625, 0x6c9ce753, 0x10fdc288, 0x8df223fe, 0xe83f893e, + 0x75306848, 0x09514d93, 0x945eace5, 0xa478247f, 0x3977c509, + 0x4516e0d2, 0xd81901a4, 0xbdd4ab64, 0x20db4a12, 0x5cba6fc9, + 0xc1b58ebf, 0x97213a49, 0x0a2edb3f, 0x764ffee4, 0xeb401f92, + 0x8e8db552, 0x13825424, 0x6fe371ff, 0xf2ec9089, 0x0fae60cb, + 0x92a181bd, 0xeec0a466, 0x73cf4510, 0x1602efd0, 0x8b0d0ea6, + 0xf76c2b7d, 0x6a63ca0b, 0x3cf77efd, 0xa1f89f8b, 0xdd99ba50, + 0x40965b26, 0x255bf1e6, 0xb8541090, 0xc435354b, 0x593ad43d, + 0x691c5ca7, 0xf413bdd1, 0x8872980a, 0x157d797c, 0x70b0d3bc, + 0xedbf32ca, 0x91de1711, 0x0cd1f667, 0x5a454291, 0xc74aa3e7, + 0xbb2b863c, 0x2624674a, 0x43e9cd8a, 0xdee62cfc, 0xa2870927, + 0x3f88e851}, + {0x00000000, 0xdd96d985, 0x605cb54b, 0xbdca6cce, 0xc0b96a96, + 0x1d2fb313, 0xa0e5dfdd, 0x7d730658, 0x5a03d36d, 0x87950ae8, + 0x3a5f6626, 0xe7c9bfa3, 0x9abab9fb, 0x472c607e, 0xfae60cb0, + 0x2770d535, 0xb407a6da, 0x69917f5f, 0xd45b1391, 0x09cdca14, + 0x74becc4c, 0xa92815c9, 0x14e27907, 0xc974a082, 0xee0475b7, + 0x3392ac32, 0x8e58c0fc, 0x53ce1979, 0x2ebd1f21, 0xf32bc6a4, + 0x4ee1aa6a, 0x937773ef, 0xb37e4bf5, 0x6ee89270, 0xd322febe, + 0x0eb4273b, 0x73c72163, 0xae51f8e6, 0x139b9428, 0xce0d4dad, + 0xe97d9898, 0x34eb411d, 0x89212dd3, 0x54b7f456, 0x29c4f20e, + 0xf4522b8b, 0x49984745, 0x940e9ec0, 0x0779ed2f, 0xdaef34aa, + 0x67255864, 0xbab381e1, 0xc7c087b9, 0x1a565e3c, 0xa79c32f2, + 0x7a0aeb77, 0x5d7a3e42, 0x80ece7c7, 0x3d268b09, 0xe0b0528c, + 0x9dc354d4, 0x40558d51, 0xfd9fe19f, 0x2009381a, 0xbd8d91ab, + 0x601b482e, 0xddd124e0, 0x0047fd65, 0x7d34fb3d, 0xa0a222b8, + 0x1d684e76, 0xc0fe97f3, 0xe78e42c6, 0x3a189b43, 0x87d2f78d, + 0x5a442e08, 0x27372850, 0xfaa1f1d5, 0x476b9d1b, 0x9afd449e, + 0x098a3771, 0xd41ceef4, 0x69d6823a, 0xb4405bbf, 0xc9335de7, + 0x14a58462, 0xa96fe8ac, 0x74f93129, 0x5389e41c, 0x8e1f3d99, + 0x33d55157, 0xee4388d2, 0x93308e8a, 0x4ea6570f, 0xf36c3bc1, + 0x2efae244, 0x0ef3da5e, 0xd36503db, 0x6eaf6f15, 0xb339b690, + 0xce4ab0c8, 0x13dc694d, 0xae160583, 0x7380dc06, 0x54f00933, + 0x8966d0b6, 0x34acbc78, 0xe93a65fd, 0x944963a5, 0x49dfba20, + 0xf415d6ee, 0x29830f6b, 0xbaf47c84, 0x6762a501, 0xdaa8c9cf, + 0x073e104a, 0x7a4d1612, 0xa7dbcf97, 0x1a11a359, 0xc7877adc, + 0xe0f7afe9, 0x3d61766c, 0x80ab1aa2, 0x5d3dc327, 0x204ec57f, + 0xfdd81cfa, 0x40127034, 0x9d84a9b1, 0xa06a2517, 0x7dfcfc92, + 0xc036905c, 0x1da049d9, 0x60d34f81, 0xbd459604, 0x008ffaca, + 0xdd19234f, 0xfa69f67a, 0x27ff2fff, 0x9a354331, 0x47a39ab4, + 0x3ad09cec, 0xe7464569, 0x5a8c29a7, 0x871af022, 0x146d83cd, + 0xc9fb5a48, 0x74313686, 0xa9a7ef03, 0xd4d4e95b, 0x094230de, + 0xb4885c10, 0x691e8595, 0x4e6e50a0, 0x93f88925, 0x2e32e5eb, + 0xf3a43c6e, 0x8ed73a36, 0x5341e3b3, 0xee8b8f7d, 0x331d56f8, + 0x13146ee2, 0xce82b767, 0x7348dba9, 0xaede022c, 0xd3ad0474, + 0x0e3bddf1, 0xb3f1b13f, 0x6e6768ba, 0x4917bd8f, 0x9481640a, + 0x294b08c4, 0xf4ddd141, 0x89aed719, 0x54380e9c, 0xe9f26252, + 0x3464bbd7, 0xa713c838, 0x7a8511bd, 0xc74f7d73, 0x1ad9a4f6, + 0x67aaa2ae, 0xba3c7b2b, 0x07f617e5, 0xda60ce60, 0xfd101b55, + 0x2086c2d0, 0x9d4cae1e, 0x40da779b, 0x3da971c3, 0xe03fa846, + 0x5df5c488, 0x80631d0d, 0x1de7b4bc, 0xc0716d39, 0x7dbb01f7, + 0xa02dd872, 0xdd5ede2a, 0x00c807af, 0xbd026b61, 0x6094b2e4, + 0x47e467d1, 0x9a72be54, 0x27b8d29a, 0xfa2e0b1f, 0x875d0d47, + 0x5acbd4c2, 0xe701b80c, 0x3a976189, 0xa9e01266, 0x7476cbe3, + 0xc9bca72d, 0x142a7ea8, 0x695978f0, 0xb4cfa175, 0x0905cdbb, + 0xd493143e, 0xf3e3c10b, 0x2e75188e, 0x93bf7440, 0x4e29adc5, + 0x335aab9d, 0xeecc7218, 0x53061ed6, 0x8e90c753, 0xae99ff49, + 0x730f26cc, 0xcec54a02, 0x13539387, 0x6e2095df, 0xb3b64c5a, + 0x0e7c2094, 0xd3eaf911, 0xf49a2c24, 0x290cf5a1, 0x94c6996f, + 0x495040ea, 0x342346b2, 0xe9b59f37, 0x547ff3f9, 0x89e92a7c, + 0x1a9e5993, 0xc7088016, 0x7ac2ecd8, 0xa754355d, 0xda273305, + 0x07b1ea80, 0xba7b864e, 0x67ed5fcb, 0x409d8afe, 0x9d0b537b, + 0x20c13fb5, 0xfd57e630, 0x8024e068, 0x5db239ed, 0xe0785523, + 0x3dee8ca6}}; + +local const z_word_t FAR crc_braid_big_table[][256] = { + {0x00000000, 0x85d996dd, 0x4bb55c60, 0xce6ccabd, 0x966ab9c0, + 0x13b32f1d, 0xdddfe5a0, 0x5806737d, 0x6dd3035a, 0xe80a9587, + 0x26665f3a, 0xa3bfc9e7, 0xfbb9ba9a, 0x7e602c47, 0xb00ce6fa, + 0x35d57027, 0xdaa607b4, 0x5f7f9169, 0x91135bd4, 0x14cacd09, + 0x4cccbe74, 0xc91528a9, 0x0779e214, 0x82a074c9, 0xb77504ee, + 0x32ac9233, 0xfcc0588e, 0x7919ce53, 0x211fbd2e, 0xa4c62bf3, + 0x6aaae14e, 0xef737793, 0xf54b7eb3, 0x7092e86e, 0xbefe22d3, + 0x3b27b40e, 0x6321c773, 0xe6f851ae, 0x28949b13, 0xad4d0dce, + 0x98987de9, 0x1d41eb34, 0xd32d2189, 0x56f4b754, 0x0ef2c429, + 0x8b2b52f4, 0x45479849, 0xc09e0e94, 0x2fed7907, 0xaa34efda, + 0x64582567, 0xe181b3ba, 0xb987c0c7, 0x3c5e561a, 0xf2329ca7, + 0x77eb0a7a, 0x423e7a5d, 0xc7e7ec80, 0x098b263d, 0x8c52b0e0, + 0xd454c39d, 0x518d5540, 0x9fe19ffd, 0x1a380920, 0xab918dbd, + 0x2e481b60, 0xe024d1dd, 0x65fd4700, 0x3dfb347d, 0xb822a2a0, + 0x764e681d, 0xf397fec0, 0xc6428ee7, 0x439b183a, 0x8df7d287, + 0x082e445a, 0x50283727, 0xd5f1a1fa, 0x1b9d6b47, 0x9e44fd9a, + 0x71378a09, 0xf4ee1cd4, 0x3a82d669, 0xbf5b40b4, 0xe75d33c9, + 0x6284a514, 0xace86fa9, 0x2931f974, 0x1ce48953, 0x993d1f8e, + 0x5751d533, 0xd28843ee, 0x8a8e3093, 0x0f57a64e, 0xc13b6cf3, + 0x44e2fa2e, 0x5edaf30e, 0xdb0365d3, 0x156faf6e, 0x90b639b3, + 0xc8b04ace, 0x4d69dc13, 0x830516ae, 0x06dc8073, 0x3309f054, + 0xb6d06689, 0x78bcac34, 0xfd653ae9, 0xa5634994, 0x20badf49, + 0xeed615f4, 0x6b0f8329, 0x847cf4ba, 0x01a56267, 0xcfc9a8da, + 0x4a103e07, 0x12164d7a, 0x97cfdba7, 0x59a3111a, 0xdc7a87c7, + 0xe9aff7e0, 0x6c76613d, 0xa21aab80, 0x27c33d5d, 0x7fc54e20, + 0xfa1cd8fd, 0x34701240, 0xb1a9849d, 0x17256aa0, 0x92fcfc7d, + 0x5c9036c0, 0xd949a01d, 0x814fd360, 0x049645bd, 0xcafa8f00, + 0x4f2319dd, 0x7af669fa, 0xff2fff27, 0x3143359a, 0xb49aa347, + 0xec9cd03a, 0x694546e7, 0xa7298c5a, 0x22f01a87, 0xcd836d14, + 0x485afbc9, 0x86363174, 0x03efa7a9, 0x5be9d4d4, 0xde304209, + 0x105c88b4, 0x95851e69, 0xa0506e4e, 0x2589f893, 0xebe5322e, + 0x6e3ca4f3, 0x363ad78e, 0xb3e34153, 0x7d8f8bee, 0xf8561d33, + 0xe26e1413, 0x67b782ce, 0xa9db4873, 0x2c02deae, 0x7404add3, + 0xf1dd3b0e, 0x3fb1f1b3, 0xba68676e, 0x8fbd1749, 0x0a648194, + 0xc4084b29, 0x41d1ddf4, 0x19d7ae89, 0x9c0e3854, 0x5262f2e9, + 0xd7bb6434, 0x38c813a7, 0xbd11857a, 0x737d4fc7, 0xf6a4d91a, + 0xaea2aa67, 0x2b7b3cba, 0xe517f607, 0x60ce60da, 0x551b10fd, + 0xd0c28620, 0x1eae4c9d, 0x9b77da40, 0xc371a93d, 0x46a83fe0, + 0x88c4f55d, 0x0d1d6380, 0xbcb4e71d, 0x396d71c0, 0xf701bb7d, + 0x72d82da0, 0x2ade5edd, 0xaf07c800, 0x616b02bd, 0xe4b29460, + 0xd167e447, 0x54be729a, 0x9ad2b827, 0x1f0b2efa, 0x470d5d87, + 0xc2d4cb5a, 0x0cb801e7, 0x8961973a, 0x6612e0a9, 0xe3cb7674, + 0x2da7bcc9, 0xa87e2a14, 0xf0785969, 0x75a1cfb4, 0xbbcd0509, + 0x3e1493d4, 0x0bc1e3f3, 0x8e18752e, 0x4074bf93, 0xc5ad294e, + 0x9dab5a33, 0x1872ccee, 0xd61e0653, 0x53c7908e, 0x49ff99ae, + 0xcc260f73, 0x024ac5ce, 0x87935313, 0xdf95206e, 0x5a4cb6b3, + 0x94207c0e, 0x11f9ead3, 0x242c9af4, 0xa1f50c29, 0x6f99c694, + 0xea405049, 0xb2462334, 0x379fb5e9, 0xf9f37f54, 0x7c2ae989, + 0x93599e1a, 0x168008c7, 0xd8ecc27a, 0x5d3554a7, 0x053327da, + 0x80eab107, 0x4e867bba, 0xcb5fed67, 0xfe8a9d40, 0x7b530b9d, + 0xb53fc120, 0x30e657fd, 0x68e02480, 0xed39b25d, 0x235578e0, + 0xa68cee3d}, + {0x00000000, 0x76e10f9d, 0xadc46ee1, 0xdb25617c, 0x1b8fac19, + 0x6d6ea384, 0xb64bc2f8, 0xc0aacd65, 0x361e5933, 0x40ff56ae, + 0x9bda37d2, 0xed3b384f, 0x2d91f52a, 0x5b70fab7, 0x80559bcb, + 0xf6b49456, 0x6c3cb266, 0x1addbdfb, 0xc1f8dc87, 0xb719d31a, + 0x77b31e7f, 0x015211e2, 0xda77709e, 0xac967f03, 0x5a22eb55, + 0x2cc3e4c8, 0xf7e685b4, 0x81078a29, 0x41ad474c, 0x374c48d1, + 0xec6929ad, 0x9a882630, 0xd87864cd, 0xae996b50, 0x75bc0a2c, + 0x035d05b1, 0xc3f7c8d4, 0xb516c749, 0x6e33a635, 0x18d2a9a8, + 0xee663dfe, 0x98873263, 0x43a2531f, 0x35435c82, 0xf5e991e7, + 0x83089e7a, 0x582dff06, 0x2eccf09b, 0xb444d6ab, 0xc2a5d936, + 0x1980b84a, 0x6f61b7d7, 0xafcb7ab2, 0xd92a752f, 0x020f1453, + 0x74ee1bce, 0x825a8f98, 0xf4bb8005, 0x2f9ee179, 0x597feee4, + 0x99d52381, 0xef342c1c, 0x34114d60, 0x42f042fd, 0xf1f7b941, + 0x8716b6dc, 0x5c33d7a0, 0x2ad2d83d, 0xea781558, 0x9c991ac5, + 0x47bc7bb9, 0x315d7424, 0xc7e9e072, 0xb108efef, 0x6a2d8e93, + 0x1ccc810e, 0xdc664c6b, 0xaa8743f6, 0x71a2228a, 0x07432d17, + 0x9dcb0b27, 0xeb2a04ba, 0x300f65c6, 0x46ee6a5b, 0x8644a73e, + 0xf0a5a8a3, 0x2b80c9df, 0x5d61c642, 0xabd55214, 0xdd345d89, + 0x06113cf5, 0x70f03368, 0xb05afe0d, 0xc6bbf190, 0x1d9e90ec, + 0x6b7f9f71, 0x298fdd8c, 0x5f6ed211, 0x844bb36d, 0xf2aabcf0, + 0x32007195, 0x44e17e08, 0x9fc41f74, 0xe92510e9, 0x1f9184bf, + 0x69708b22, 0xb255ea5e, 0xc4b4e5c3, 0x041e28a6, 0x72ff273b, + 0xa9da4647, 0xdf3b49da, 0x45b36fea, 0x33526077, 0xe877010b, + 0x9e960e96, 0x5e3cc3f3, 0x28ddcc6e, 0xf3f8ad12, 0x8519a28f, + 0x73ad36d9, 0x054c3944, 0xde695838, 0xa88857a5, 0x68229ac0, + 0x1ec3955d, 0xc5e6f421, 0xb307fbbc, 0xe2ef7383, 0x940e7c1e, + 0x4f2b1d62, 0x39ca12ff, 0xf960df9a, 0x8f81d007, 0x54a4b17b, + 0x2245bee6, 0xd4f12ab0, 0xa210252d, 0x79354451, 0x0fd44bcc, + 0xcf7e86a9, 0xb99f8934, 0x62bae848, 0x145be7d5, 0x8ed3c1e5, + 0xf832ce78, 0x2317af04, 0x55f6a099, 0x955c6dfc, 0xe3bd6261, + 0x3898031d, 0x4e790c80, 0xb8cd98d6, 0xce2c974b, 0x1509f637, + 0x63e8f9aa, 0xa34234cf, 0xd5a33b52, 0x0e865a2e, 0x786755b3, + 0x3a97174e, 0x4c7618d3, 0x975379af, 0xe1b27632, 0x2118bb57, + 0x57f9b4ca, 0x8cdcd5b6, 0xfa3dda2b, 0x0c894e7d, 0x7a6841e0, + 0xa14d209c, 0xd7ac2f01, 0x1706e264, 0x61e7edf9, 0xbac28c85, + 0xcc238318, 0x56aba528, 0x204aaab5, 0xfb6fcbc9, 0x8d8ec454, + 0x4d240931, 0x3bc506ac, 0xe0e067d0, 0x9601684d, 0x60b5fc1b, + 0x1654f386, 0xcd7192fa, 0xbb909d67, 0x7b3a5002, 0x0ddb5f9f, + 0xd6fe3ee3, 0xa01f317e, 0x1318cac2, 0x65f9c55f, 0xbedca423, + 0xc83dabbe, 0x089766db, 0x7e766946, 0xa553083a, 0xd3b207a7, + 0x250693f1, 0x53e79c6c, 0x88c2fd10, 0xfe23f28d, 0x3e893fe8, + 0x48683075, 0x934d5109, 0xe5ac5e94, 0x7f2478a4, 0x09c57739, + 0xd2e01645, 0xa40119d8, 0x64abd4bd, 0x124adb20, 0xc96fba5c, + 0xbf8eb5c1, 0x493a2197, 0x3fdb2e0a, 0xe4fe4f76, 0x921f40eb, + 0x52b58d8e, 0x24548213, 0xff71e36f, 0x8990ecf2, 0xcb60ae0f, + 0xbd81a192, 0x66a4c0ee, 0x1045cf73, 0xd0ef0216, 0xa60e0d8b, + 0x7d2b6cf7, 0x0bca636a, 0xfd7ef73c, 0x8b9ff8a1, 0x50ba99dd, + 0x265b9640, 0xe6f15b25, 0x901054b8, 0x4b3535c4, 0x3dd43a59, + 0xa75c1c69, 0xd1bd13f4, 0x0a987288, 0x7c797d15, 0xbcd3b070, + 0xca32bfed, 0x1117de91, 0x67f6d10c, 0x9142455a, 0xe7a34ac7, + 0x3c862bbb, 0x4a672426, 0x8acde943, 0xfc2ce6de, 0x270987a2, + 0x51e8883f}, + {0x00000000, 0xe8dbfbb9, 0x91b186a8, 0x796a7d11, 0x63657c8a, + 0x8bbe8733, 0xf2d4fa22, 0x1a0f019b, 0x87cc89cf, 0x6f177276, + 0x167d0f67, 0xfea6f4de, 0xe4a9f545, 0x0c720efc, 0x751873ed, + 0x9dc38854, 0x4f9f6244, 0xa74499fd, 0xde2ee4ec, 0x36f51f55, + 0x2cfa1ece, 0xc421e577, 0xbd4b9866, 0x559063df, 0xc853eb8b, + 0x20881032, 0x59e26d23, 0xb139969a, 0xab369701, 0x43ed6cb8, + 0x3a8711a9, 0xd25cea10, 0x9e3ec588, 0x76e53e31, 0x0f8f4320, + 0xe754b899, 0xfd5bb902, 0x158042bb, 0x6cea3faa, 0x8431c413, + 0x19f24c47, 0xf129b7fe, 0x8843caef, 0x60983156, 0x7a9730cd, + 0x924ccb74, 0xeb26b665, 0x03fd4ddc, 0xd1a1a7cc, 0x397a5c75, + 0x40102164, 0xa8cbdadd, 0xb2c4db46, 0x5a1f20ff, 0x23755dee, + 0xcbaea657, 0x566d2e03, 0xbeb6d5ba, 0xc7dca8ab, 0x2f075312, + 0x35085289, 0xddd3a930, 0xa4b9d421, 0x4c622f98, 0x7d7bfbca, + 0x95a00073, 0xecca7d62, 0x041186db, 0x1e1e8740, 0xf6c57cf9, + 0x8faf01e8, 0x6774fa51, 0xfab77205, 0x126c89bc, 0x6b06f4ad, + 0x83dd0f14, 0x99d20e8f, 0x7109f536, 0x08638827, 0xe0b8739e, + 0x32e4998e, 0xda3f6237, 0xa3551f26, 0x4b8ee49f, 0x5181e504, + 0xb95a1ebd, 0xc03063ac, 0x28eb9815, 0xb5281041, 0x5df3ebf8, + 0x249996e9, 0xcc426d50, 0xd64d6ccb, 0x3e969772, 0x47fcea63, + 0xaf2711da, 0xe3453e42, 0x0b9ec5fb, 0x72f4b8ea, 0x9a2f4353, + 0x802042c8, 0x68fbb971, 0x1191c460, 0xf94a3fd9, 0x6489b78d, + 0x8c524c34, 0xf5383125, 0x1de3ca9c, 0x07eccb07, 0xef3730be, + 0x965d4daf, 0x7e86b616, 0xacda5c06, 0x4401a7bf, 0x3d6bdaae, + 0xd5b02117, 0xcfbf208c, 0x2764db35, 0x5e0ea624, 0xb6d55d9d, + 0x2b16d5c9, 0xc3cd2e70, 0xbaa75361, 0x527ca8d8, 0x4873a943, + 0xa0a852fa, 0xd9c22feb, 0x3119d452, 0xbbf0874e, 0x532b7cf7, + 0x2a4101e6, 0xc29afa5f, 0xd895fbc4, 0x304e007d, 0x49247d6c, + 0xa1ff86d5, 0x3c3c0e81, 0xd4e7f538, 0xad8d8829, 0x45567390, + 0x5f59720b, 0xb78289b2, 0xcee8f4a3, 0x26330f1a, 0xf46fe50a, + 0x1cb41eb3, 0x65de63a2, 0x8d05981b, 0x970a9980, 0x7fd16239, + 0x06bb1f28, 0xee60e491, 0x73a36cc5, 0x9b78977c, 0xe212ea6d, + 0x0ac911d4, 0x10c6104f, 0xf81debf6, 0x817796e7, 0x69ac6d5e, + 0x25ce42c6, 0xcd15b97f, 0xb47fc46e, 0x5ca43fd7, 0x46ab3e4c, + 0xae70c5f5, 0xd71ab8e4, 0x3fc1435d, 0xa202cb09, 0x4ad930b0, + 0x33b34da1, 0xdb68b618, 0xc167b783, 0x29bc4c3a, 0x50d6312b, + 0xb80dca92, 0x6a512082, 0x828adb3b, 0xfbe0a62a, 0x133b5d93, + 0x09345c08, 0xe1efa7b1, 0x9885daa0, 0x705e2119, 0xed9da94d, + 0x054652f4, 0x7c2c2fe5, 0x94f7d45c, 0x8ef8d5c7, 0x66232e7e, + 0x1f49536f, 0xf792a8d6, 0xc68b7c84, 0x2e50873d, 0x573afa2c, + 0xbfe10195, 0xa5ee000e, 0x4d35fbb7, 0x345f86a6, 0xdc847d1f, + 0x4147f54b, 0xa99c0ef2, 0xd0f673e3, 0x382d885a, 0x222289c1, + 0xcaf97278, 0xb3930f69, 0x5b48f4d0, 0x89141ec0, 0x61cfe579, + 0x18a59868, 0xf07e63d1, 0xea71624a, 0x02aa99f3, 0x7bc0e4e2, + 0x931b1f5b, 0x0ed8970f, 0xe6036cb6, 0x9f6911a7, 0x77b2ea1e, + 0x6dbdeb85, 0x8566103c, 0xfc0c6d2d, 0x14d79694, 0x58b5b90c, + 0xb06e42b5, 0xc9043fa4, 0x21dfc41d, 0x3bd0c586, 0xd30b3e3f, + 0xaa61432e, 0x42bab897, 0xdf7930c3, 0x37a2cb7a, 0x4ec8b66b, + 0xa6134dd2, 0xbc1c4c49, 0x54c7b7f0, 0x2dadcae1, 0xc5763158, + 0x172adb48, 0xfff120f1, 0x869b5de0, 0x6e40a659, 0x744fa7c2, + 0x9c945c7b, 0xe5fe216a, 0x0d25dad3, 0x90e65287, 0x783da93e, + 0x0157d42f, 0xe98c2f96, 0xf3832e0d, 0x1b58d5b4, 0x6232a8a5, + 0x8ae9531c}, + {0x00000000, 0x919168ae, 0x6325a087, 0xf2b4c829, 0x874c31d4, + 0x16dd597a, 0xe4699153, 0x75f8f9fd, 0x4f9f1373, 0xde0e7bdd, + 0x2cbab3f4, 0xbd2bdb5a, 0xc8d322a7, 0x59424a09, 0xabf68220, + 0x3a67ea8e, 0x9e3e27e6, 0x0faf4f48, 0xfd1b8761, 0x6c8aefcf, + 0x19721632, 0x88e37e9c, 0x7a57b6b5, 0xebc6de1b, 0xd1a13495, + 0x40305c3b, 0xb2849412, 0x2315fcbc, 0x56ed0541, 0xc77c6def, + 0x35c8a5c6, 0xa459cd68, 0x7d7b3f17, 0xecea57b9, 0x1e5e9f90, + 0x8fcff73e, 0xfa370ec3, 0x6ba6666d, 0x9912ae44, 0x0883c6ea, + 0x32e42c64, 0xa37544ca, 0x51c18ce3, 0xc050e44d, 0xb5a81db0, + 0x2439751e, 0xd68dbd37, 0x471cd599, 0xe34518f1, 0x72d4705f, + 0x8060b876, 0x11f1d0d8, 0x64092925, 0xf598418b, 0x072c89a2, + 0x96bde10c, 0xacda0b82, 0x3d4b632c, 0xcfffab05, 0x5e6ec3ab, + 0x2b963a56, 0xba0752f8, 0x48b39ad1, 0xd922f27f, 0xfaf67e2e, + 0x6b671680, 0x99d3dea9, 0x0842b607, 0x7dba4ffa, 0xec2b2754, + 0x1e9fef7d, 0x8f0e87d3, 0xb5696d5d, 0x24f805f3, 0xd64ccdda, + 0x47dda574, 0x32255c89, 0xa3b43427, 0x5100fc0e, 0xc09194a0, + 0x64c859c8, 0xf5593166, 0x07edf94f, 0x967c91e1, 0xe384681c, + 0x721500b2, 0x80a1c89b, 0x1130a035, 0x2b574abb, 0xbac62215, + 0x4872ea3c, 0xd9e38292, 0xac1b7b6f, 0x3d8a13c1, 0xcf3edbe8, + 0x5eafb346, 0x878d4139, 0x161c2997, 0xe4a8e1be, 0x75398910, + 0x00c170ed, 0x91501843, 0x63e4d06a, 0xf275b8c4, 0xc812524a, + 0x59833ae4, 0xab37f2cd, 0x3aa69a63, 0x4f5e639e, 0xdecf0b30, + 0x2c7bc319, 0xbdeaabb7, 0x19b366df, 0x88220e71, 0x7a96c658, + 0xeb07aef6, 0x9eff570b, 0x0f6e3fa5, 0xfddaf78c, 0x6c4b9f22, + 0x562c75ac, 0xc7bd1d02, 0x3509d52b, 0xa498bd85, 0xd1604478, + 0x40f12cd6, 0xb245e4ff, 0x23d48c51, 0xf4edfd5c, 0x657c95f2, + 0x97c85ddb, 0x06593575, 0x73a1cc88, 0xe230a426, 0x10846c0f, + 0x811504a1, 0xbb72ee2f, 0x2ae38681, 0xd8574ea8, 0x49c62606, + 0x3c3edffb, 0xadafb755, 0x5f1b7f7c, 0xce8a17d2, 0x6ad3daba, + 0xfb42b214, 0x09f67a3d, 0x98671293, 0xed9feb6e, 0x7c0e83c0, + 0x8eba4be9, 0x1f2b2347, 0x254cc9c9, 0xb4dda167, 0x4669694e, + 0xd7f801e0, 0xa200f81d, 0x339190b3, 0xc125589a, 0x50b43034, + 0x8996c24b, 0x1807aae5, 0xeab362cc, 0x7b220a62, 0x0edaf39f, + 0x9f4b9b31, 0x6dff5318, 0xfc6e3bb6, 0xc609d138, 0x5798b996, + 0xa52c71bf, 0x34bd1911, 0x4145e0ec, 0xd0d48842, 0x2260406b, + 0xb3f128c5, 0x17a8e5ad, 0x86398d03, 0x748d452a, 0xe51c2d84, + 0x90e4d479, 0x0175bcd7, 0xf3c174fe, 0x62501c50, 0x5837f6de, + 0xc9a69e70, 0x3b125659, 0xaa833ef7, 0xdf7bc70a, 0x4eeaafa4, + 0xbc5e678d, 0x2dcf0f23, 0x0e1b8372, 0x9f8aebdc, 0x6d3e23f5, + 0xfcaf4b5b, 0x8957b2a6, 0x18c6da08, 0xea721221, 0x7be37a8f, + 0x41849001, 0xd015f8af, 0x22a13086, 0xb3305828, 0xc6c8a1d5, + 0x5759c97b, 0xa5ed0152, 0x347c69fc, 0x9025a494, 0x01b4cc3a, + 0xf3000413, 0x62916cbd, 0x17699540, 0x86f8fdee, 0x744c35c7, + 0xe5dd5d69, 0xdfbab7e7, 0x4e2bdf49, 0xbc9f1760, 0x2d0e7fce, + 0x58f68633, 0xc967ee9d, 0x3bd326b4, 0xaa424e1a, 0x7360bc65, + 0xe2f1d4cb, 0x10451ce2, 0x81d4744c, 0xf42c8db1, 0x65bde51f, + 0x97092d36, 0x06984598, 0x3cffaf16, 0xad6ec7b8, 0x5fda0f91, + 0xce4b673f, 0xbbb39ec2, 0x2a22f66c, 0xd8963e45, 0x490756eb, + 0xed5e9b83, 0x7ccff32d, 0x8e7b3b04, 0x1fea53aa, 0x6a12aa57, + 0xfb83c2f9, 0x09370ad0, 0x98a6627e, 0xa2c188f0, 0x3350e05e, + 0xc1e42877, 0x507540d9, 0x258db924, 0xb41cd18a, 0x46a819a3, + 0xd739710d}}; + +#endif + +#endif + +#if N == 5 + +#if W == 8 + +local const z_crc_t FAR crc_braid_table[][256] = { + {0x00000000, 0xaf449247, 0x85f822cf, 0x2abcb088, 0xd08143df, + 0x7fc5d198, 0x55796110, 0xfa3df357, 0x7a7381ff, 0xd53713b8, + 0xff8ba330, 0x50cf3177, 0xaaf2c220, 0x05b65067, 0x2f0ae0ef, + 0x804e72a8, 0xf4e703fe, 0x5ba391b9, 0x711f2131, 0xde5bb376, + 0x24664021, 0x8b22d266, 0xa19e62ee, 0x0edaf0a9, 0x8e948201, + 0x21d01046, 0x0b6ca0ce, 0xa4283289, 0x5e15c1de, 0xf1515399, + 0xdbede311, 0x74a97156, 0x32bf01bd, 0x9dfb93fa, 0xb7472372, + 0x1803b135, 0xe23e4262, 0x4d7ad025, 0x67c660ad, 0xc882f2ea, + 0x48cc8042, 0xe7881205, 0xcd34a28d, 0x627030ca, 0x984dc39d, + 0x370951da, 0x1db5e152, 0xb2f17315, 0xc6580243, 0x691c9004, + 0x43a0208c, 0xece4b2cb, 0x16d9419c, 0xb99dd3db, 0x93216353, + 0x3c65f114, 0xbc2b83bc, 0x136f11fb, 0x39d3a173, 0x96973334, + 0x6caac063, 0xc3ee5224, 0xe952e2ac, 0x461670eb, 0x657e037a, + 0xca3a913d, 0xe08621b5, 0x4fc2b3f2, 0xb5ff40a5, 0x1abbd2e2, + 0x3007626a, 0x9f43f02d, 0x1f0d8285, 0xb04910c2, 0x9af5a04a, + 0x35b1320d, 0xcf8cc15a, 0x60c8531d, 0x4a74e395, 0xe53071d2, + 0x91990084, 0x3edd92c3, 0x1461224b, 0xbb25b00c, 0x4118435b, + 0xee5cd11c, 0xc4e06194, 0x6ba4f3d3, 0xebea817b, 0x44ae133c, + 0x6e12a3b4, 0xc15631f3, 0x3b6bc2a4, 0x942f50e3, 0xbe93e06b, + 0x11d7722c, 0x57c102c7, 0xf8859080, 0xd2392008, 0x7d7db24f, + 0x87404118, 0x2804d35f, 0x02b863d7, 0xadfcf190, 0x2db28338, + 0x82f6117f, 0xa84aa1f7, 0x070e33b0, 0xfd33c0e7, 0x527752a0, + 0x78cbe228, 0xd78f706f, 0xa3260139, 0x0c62937e, 0x26de23f6, + 0x899ab1b1, 0x73a742e6, 0xdce3d0a1, 0xf65f6029, 0x591bf26e, + 0xd95580c6, 0x76111281, 0x5cada209, 0xf3e9304e, 0x09d4c319, + 0xa690515e, 0x8c2ce1d6, 0x23687391, 0xcafc06f4, 0x65b894b3, + 0x4f04243b, 0xe040b67c, 0x1a7d452b, 0xb539d76c, 0x9f8567e4, + 0x30c1f5a3, 0xb08f870b, 0x1fcb154c, 0x3577a5c4, 0x9a333783, + 0x600ec4d4, 0xcf4a5693, 0xe5f6e61b, 0x4ab2745c, 0x3e1b050a, + 0x915f974d, 0xbbe327c5, 0x14a7b582, 0xee9a46d5, 0x41ded492, + 0x6b62641a, 0xc426f65d, 0x446884f5, 0xeb2c16b2, 0xc190a63a, + 0x6ed4347d, 0x94e9c72a, 0x3bad556d, 0x1111e5e5, 0xbe5577a2, + 0xf8430749, 0x5707950e, 0x7dbb2586, 0xd2ffb7c1, 0x28c24496, + 0x8786d6d1, 0xad3a6659, 0x027ef41e, 0x823086b6, 0x2d7414f1, + 0x07c8a479, 0xa88c363e, 0x52b1c569, 0xfdf5572e, 0xd749e7a6, + 0x780d75e1, 0x0ca404b7, 0xa3e096f0, 0x895c2678, 0x2618b43f, + 0xdc254768, 0x7361d52f, 0x59dd65a7, 0xf699f7e0, 0x76d78548, + 0xd993170f, 0xf32fa787, 0x5c6b35c0, 0xa656c697, 0x091254d0, + 0x23aee458, 0x8cea761f, 0xaf82058e, 0x00c697c9, 0x2a7a2741, + 0x853eb506, 0x7f034651, 0xd047d416, 0xfafb649e, 0x55bff6d9, + 0xd5f18471, 0x7ab51636, 0x5009a6be, 0xff4d34f9, 0x0570c7ae, + 0xaa3455e9, 0x8088e561, 0x2fcc7726, 0x5b650670, 0xf4219437, + 0xde9d24bf, 0x71d9b6f8, 0x8be445af, 0x24a0d7e8, 0x0e1c6760, + 0xa158f527, 0x2116878f, 0x8e5215c8, 0xa4eea540, 0x0baa3707, + 0xf197c450, 0x5ed35617, 0x746fe69f, 0xdb2b74d8, 0x9d3d0433, + 0x32799674, 0x18c526fc, 0xb781b4bb, 0x4dbc47ec, 0xe2f8d5ab, + 0xc8446523, 0x6700f764, 0xe74e85cc, 0x480a178b, 0x62b6a703, + 0xcdf23544, 0x37cfc613, 0x988b5454, 0xb237e4dc, 0x1d73769b, + 0x69da07cd, 0xc69e958a, 0xec222502, 0x4366b745, 0xb95b4412, + 0x161fd655, 0x3ca366dd, 0x93e7f49a, 0x13a98632, 0xbced1475, + 0x9651a4fd, 0x391536ba, 0xc328c5ed, 0x6c6c57aa, 0x46d0e722, + 0xe9947565}, + {0x00000000, 0x4e890ba9, 0x9d121752, 0xd39b1cfb, 0xe15528e5, + 0xafdc234c, 0x7c473fb7, 0x32ce341e, 0x19db578b, 0x57525c22, + 0x84c940d9, 0xca404b70, 0xf88e7f6e, 0xb60774c7, 0x659c683c, + 0x2b156395, 0x33b6af16, 0x7d3fa4bf, 0xaea4b844, 0xe02db3ed, + 0xd2e387f3, 0x9c6a8c5a, 0x4ff190a1, 0x01789b08, 0x2a6df89d, + 0x64e4f334, 0xb77fefcf, 0xf9f6e466, 0xcb38d078, 0x85b1dbd1, + 0x562ac72a, 0x18a3cc83, 0x676d5e2c, 0x29e45585, 0xfa7f497e, + 0xb4f642d7, 0x863876c9, 0xc8b17d60, 0x1b2a619b, 0x55a36a32, + 0x7eb609a7, 0x303f020e, 0xe3a41ef5, 0xad2d155c, 0x9fe32142, + 0xd16a2aeb, 0x02f13610, 0x4c783db9, 0x54dbf13a, 0x1a52fa93, + 0xc9c9e668, 0x8740edc1, 0xb58ed9df, 0xfb07d276, 0x289cce8d, + 0x6615c524, 0x4d00a6b1, 0x0389ad18, 0xd012b1e3, 0x9e9bba4a, + 0xac558e54, 0xe2dc85fd, 0x31479906, 0x7fce92af, 0xcedabc58, + 0x8053b7f1, 0x53c8ab0a, 0x1d41a0a3, 0x2f8f94bd, 0x61069f14, + 0xb29d83ef, 0xfc148846, 0xd701ebd3, 0x9988e07a, 0x4a13fc81, + 0x049af728, 0x3654c336, 0x78ddc89f, 0xab46d464, 0xe5cfdfcd, + 0xfd6c134e, 0xb3e518e7, 0x607e041c, 0x2ef70fb5, 0x1c393bab, + 0x52b03002, 0x812b2cf9, 0xcfa22750, 0xe4b744c5, 0xaa3e4f6c, + 0x79a55397, 0x372c583e, 0x05e26c20, 0x4b6b6789, 0x98f07b72, + 0xd67970db, 0xa9b7e274, 0xe73ee9dd, 0x34a5f526, 0x7a2cfe8f, + 0x48e2ca91, 0x066bc138, 0xd5f0ddc3, 0x9b79d66a, 0xb06cb5ff, + 0xfee5be56, 0x2d7ea2ad, 0x63f7a904, 0x51399d1a, 0x1fb096b3, + 0xcc2b8a48, 0x82a281e1, 0x9a014d62, 0xd48846cb, 0x07135a30, + 0x499a5199, 0x7b546587, 0x35dd6e2e, 0xe64672d5, 0xa8cf797c, + 0x83da1ae9, 0xcd531140, 0x1ec80dbb, 0x50410612, 0x628f320c, + 0x2c0639a5, 0xff9d255e, 0xb1142ef7, 0x46c47ef1, 0x084d7558, + 0xdbd669a3, 0x955f620a, 0xa7915614, 0xe9185dbd, 0x3a834146, + 0x740a4aef, 0x5f1f297a, 0x119622d3, 0xc20d3e28, 0x8c843581, + 0xbe4a019f, 0xf0c30a36, 0x235816cd, 0x6dd11d64, 0x7572d1e7, + 0x3bfbda4e, 0xe860c6b5, 0xa6e9cd1c, 0x9427f902, 0xdaaef2ab, + 0x0935ee50, 0x47bce5f9, 0x6ca9866c, 0x22208dc5, 0xf1bb913e, + 0xbf329a97, 0x8dfcae89, 0xc375a520, 0x10eeb9db, 0x5e67b272, + 0x21a920dd, 0x6f202b74, 0xbcbb378f, 0xf2323c26, 0xc0fc0838, + 0x8e750391, 0x5dee1f6a, 0x136714c3, 0x38727756, 0x76fb7cff, + 0xa5606004, 0xebe96bad, 0xd9275fb3, 0x97ae541a, 0x443548e1, + 0x0abc4348, 0x121f8fcb, 0x5c968462, 0x8f0d9899, 0xc1849330, + 0xf34aa72e, 0xbdc3ac87, 0x6e58b07c, 0x20d1bbd5, 0x0bc4d840, + 0x454dd3e9, 0x96d6cf12, 0xd85fc4bb, 0xea91f0a5, 0xa418fb0c, + 0x7783e7f7, 0x390aec5e, 0x881ec2a9, 0xc697c900, 0x150cd5fb, + 0x5b85de52, 0x694bea4c, 0x27c2e1e5, 0xf459fd1e, 0xbad0f6b7, + 0x91c59522, 0xdf4c9e8b, 0x0cd78270, 0x425e89d9, 0x7090bdc7, + 0x3e19b66e, 0xed82aa95, 0xa30ba13c, 0xbba86dbf, 0xf5216616, + 0x26ba7aed, 0x68337144, 0x5afd455a, 0x14744ef3, 0xc7ef5208, + 0x896659a1, 0xa2733a34, 0xecfa319d, 0x3f612d66, 0x71e826cf, + 0x432612d1, 0x0daf1978, 0xde340583, 0x90bd0e2a, 0xef739c85, + 0xa1fa972c, 0x72618bd7, 0x3ce8807e, 0x0e26b460, 0x40afbfc9, + 0x9334a332, 0xddbda89b, 0xf6a8cb0e, 0xb821c0a7, 0x6bbadc5c, + 0x2533d7f5, 0x17fde3eb, 0x5974e842, 0x8aeff4b9, 0xc466ff10, + 0xdcc53393, 0x924c383a, 0x41d724c1, 0x0f5e2f68, 0x3d901b76, + 0x731910df, 0xa0820c24, 0xee0b078d, 0xc51e6418, 0x8b976fb1, + 0x580c734a, 0x168578e3, 0x244b4cfd, 0x6ac24754, 0xb9595baf, + 0xf7d05006}, + {0x00000000, 0x8d88fde2, 0xc060fd85, 0x4de80067, 0x5bb0fd4b, + 0xd63800a9, 0x9bd000ce, 0x1658fd2c, 0xb761fa96, 0x3ae90774, + 0x77010713, 0xfa89faf1, 0xecd107dd, 0x6159fa3f, 0x2cb1fa58, + 0xa13907ba, 0xb5b2f36d, 0x383a0e8f, 0x75d20ee8, 0xf85af30a, + 0xee020e26, 0x638af3c4, 0x2e62f3a3, 0xa3ea0e41, 0x02d309fb, + 0x8f5bf419, 0xc2b3f47e, 0x4f3b099c, 0x5963f4b0, 0xd4eb0952, + 0x99030935, 0x148bf4d7, 0xb014e09b, 0x3d9c1d79, 0x70741d1e, + 0xfdfce0fc, 0xeba41dd0, 0x662ce032, 0x2bc4e055, 0xa64c1db7, + 0x07751a0d, 0x8afde7ef, 0xc715e788, 0x4a9d1a6a, 0x5cc5e746, + 0xd14d1aa4, 0x9ca51ac3, 0x112de721, 0x05a613f6, 0x882eee14, + 0xc5c6ee73, 0x484e1391, 0x5e16eebd, 0xd39e135f, 0x9e761338, + 0x13feeeda, 0xb2c7e960, 0x3f4f1482, 0x72a714e5, 0xff2fe907, + 0xe977142b, 0x64ffe9c9, 0x2917e9ae, 0xa49f144c, 0xbb58c777, + 0x36d03a95, 0x7b383af2, 0xf6b0c710, 0xe0e83a3c, 0x6d60c7de, + 0x2088c7b9, 0xad003a5b, 0x0c393de1, 0x81b1c003, 0xcc59c064, + 0x41d13d86, 0x5789c0aa, 0xda013d48, 0x97e93d2f, 0x1a61c0cd, + 0x0eea341a, 0x8362c9f8, 0xce8ac99f, 0x4302347d, 0x555ac951, + 0xd8d234b3, 0x953a34d4, 0x18b2c936, 0xb98bce8c, 0x3403336e, + 0x79eb3309, 0xf463ceeb, 0xe23b33c7, 0x6fb3ce25, 0x225bce42, + 0xafd333a0, 0x0b4c27ec, 0x86c4da0e, 0xcb2cda69, 0x46a4278b, + 0x50fcdaa7, 0xdd742745, 0x909c2722, 0x1d14dac0, 0xbc2ddd7a, + 0x31a52098, 0x7c4d20ff, 0xf1c5dd1d, 0xe79d2031, 0x6a15ddd3, + 0x27fdddb4, 0xaa752056, 0xbefed481, 0x33762963, 0x7e9e2904, + 0xf316d4e6, 0xe54e29ca, 0x68c6d428, 0x252ed44f, 0xa8a629ad, + 0x099f2e17, 0x8417d3f5, 0xc9ffd392, 0x44772e70, 0x522fd35c, + 0xdfa72ebe, 0x924f2ed9, 0x1fc7d33b, 0xadc088af, 0x2048754d, + 0x6da0752a, 0xe02888c8, 0xf67075e4, 0x7bf88806, 0x36108861, + 0xbb987583, 0x1aa17239, 0x97298fdb, 0xdac18fbc, 0x5749725e, + 0x41118f72, 0xcc997290, 0x817172f7, 0x0cf98f15, 0x18727bc2, + 0x95fa8620, 0xd8128647, 0x559a7ba5, 0x43c28689, 0xce4a7b6b, + 0x83a27b0c, 0x0e2a86ee, 0xaf138154, 0x229b7cb6, 0x6f737cd1, + 0xe2fb8133, 0xf4a37c1f, 0x792b81fd, 0x34c3819a, 0xb94b7c78, + 0x1dd46834, 0x905c95d6, 0xddb495b1, 0x503c6853, 0x4664957f, + 0xcbec689d, 0x860468fa, 0x0b8c9518, 0xaab592a2, 0x273d6f40, + 0x6ad56f27, 0xe75d92c5, 0xf1056fe9, 0x7c8d920b, 0x3165926c, + 0xbced6f8e, 0xa8669b59, 0x25ee66bb, 0x680666dc, 0xe58e9b3e, + 0xf3d66612, 0x7e5e9bf0, 0x33b69b97, 0xbe3e6675, 0x1f0761cf, + 0x928f9c2d, 0xdf679c4a, 0x52ef61a8, 0x44b79c84, 0xc93f6166, + 0x84d76101, 0x095f9ce3, 0x16984fd8, 0x9b10b23a, 0xd6f8b25d, + 0x5b704fbf, 0x4d28b293, 0xc0a04f71, 0x8d484f16, 0x00c0b2f4, + 0xa1f9b54e, 0x2c7148ac, 0x619948cb, 0xec11b529, 0xfa494805, + 0x77c1b5e7, 0x3a29b580, 0xb7a14862, 0xa32abcb5, 0x2ea24157, + 0x634a4130, 0xeec2bcd2, 0xf89a41fe, 0x7512bc1c, 0x38fabc7b, + 0xb5724199, 0x144b4623, 0x99c3bbc1, 0xd42bbba6, 0x59a34644, + 0x4ffbbb68, 0xc273468a, 0x8f9b46ed, 0x0213bb0f, 0xa68caf43, + 0x2b0452a1, 0x66ec52c6, 0xeb64af24, 0xfd3c5208, 0x70b4afea, + 0x3d5caf8d, 0xb0d4526f, 0x11ed55d5, 0x9c65a837, 0xd18da850, + 0x5c0555b2, 0x4a5da89e, 0xc7d5557c, 0x8a3d551b, 0x07b5a8f9, + 0x133e5c2e, 0x9eb6a1cc, 0xd35ea1ab, 0x5ed65c49, 0x488ea165, + 0xc5065c87, 0x88ee5ce0, 0x0566a102, 0xa45fa6b8, 0x29d75b5a, + 0x643f5b3d, 0xe9b7a6df, 0xffef5bf3, 0x7267a611, 0x3f8fa676, + 0xb2075b94}, + {0x00000000, 0x80f0171f, 0xda91287f, 0x5a613f60, 0x6e5356bf, + 0xeea341a0, 0xb4c27ec0, 0x343269df, 0xdca6ad7e, 0x5c56ba61, + 0x06378501, 0x86c7921e, 0xb2f5fbc1, 0x3205ecde, 0x6864d3be, + 0xe894c4a1, 0x623c5cbd, 0xe2cc4ba2, 0xb8ad74c2, 0x385d63dd, + 0x0c6f0a02, 0x8c9f1d1d, 0xd6fe227d, 0x560e3562, 0xbe9af1c3, + 0x3e6ae6dc, 0x640bd9bc, 0xe4fbcea3, 0xd0c9a77c, 0x5039b063, + 0x0a588f03, 0x8aa8981c, 0xc478b97a, 0x4488ae65, 0x1ee99105, + 0x9e19861a, 0xaa2befc5, 0x2adbf8da, 0x70bac7ba, 0xf04ad0a5, + 0x18de1404, 0x982e031b, 0xc24f3c7b, 0x42bf2b64, 0x768d42bb, + 0xf67d55a4, 0xac1c6ac4, 0x2cec7ddb, 0xa644e5c7, 0x26b4f2d8, + 0x7cd5cdb8, 0xfc25daa7, 0xc817b378, 0x48e7a467, 0x12869b07, + 0x92768c18, 0x7ae248b9, 0xfa125fa6, 0xa07360c6, 0x208377d9, + 0x14b11e06, 0x94410919, 0xce203679, 0x4ed02166, 0x538074b5, + 0xd37063aa, 0x89115cca, 0x09e14bd5, 0x3dd3220a, 0xbd233515, + 0xe7420a75, 0x67b21d6a, 0x8f26d9cb, 0x0fd6ced4, 0x55b7f1b4, + 0xd547e6ab, 0xe1758f74, 0x6185986b, 0x3be4a70b, 0xbb14b014, + 0x31bc2808, 0xb14c3f17, 0xeb2d0077, 0x6bdd1768, 0x5fef7eb7, + 0xdf1f69a8, 0x857e56c8, 0x058e41d7, 0xed1a8576, 0x6dea9269, + 0x378bad09, 0xb77bba16, 0x8349d3c9, 0x03b9c4d6, 0x59d8fbb6, + 0xd928eca9, 0x97f8cdcf, 0x1708dad0, 0x4d69e5b0, 0xcd99f2af, + 0xf9ab9b70, 0x795b8c6f, 0x233ab30f, 0xa3caa410, 0x4b5e60b1, + 0xcbae77ae, 0x91cf48ce, 0x113f5fd1, 0x250d360e, 0xa5fd2111, + 0xff9c1e71, 0x7f6c096e, 0xf5c49172, 0x7534866d, 0x2f55b90d, + 0xafa5ae12, 0x9b97c7cd, 0x1b67d0d2, 0x4106efb2, 0xc1f6f8ad, + 0x29623c0c, 0xa9922b13, 0xf3f31473, 0x7303036c, 0x47316ab3, + 0xc7c17dac, 0x9da042cc, 0x1d5055d3, 0xa700e96a, 0x27f0fe75, + 0x7d91c115, 0xfd61d60a, 0xc953bfd5, 0x49a3a8ca, 0x13c297aa, + 0x933280b5, 0x7ba64414, 0xfb56530b, 0xa1376c6b, 0x21c77b74, + 0x15f512ab, 0x950505b4, 0xcf643ad4, 0x4f942dcb, 0xc53cb5d7, + 0x45cca2c8, 0x1fad9da8, 0x9f5d8ab7, 0xab6fe368, 0x2b9ff477, + 0x71fecb17, 0xf10edc08, 0x199a18a9, 0x996a0fb6, 0xc30b30d6, + 0x43fb27c9, 0x77c94e16, 0xf7395909, 0xad586669, 0x2da87176, + 0x63785010, 0xe388470f, 0xb9e9786f, 0x39196f70, 0x0d2b06af, + 0x8ddb11b0, 0xd7ba2ed0, 0x574a39cf, 0xbfdefd6e, 0x3f2eea71, + 0x654fd511, 0xe5bfc20e, 0xd18dabd1, 0x517dbcce, 0x0b1c83ae, + 0x8bec94b1, 0x01440cad, 0x81b41bb2, 0xdbd524d2, 0x5b2533cd, + 0x6f175a12, 0xefe74d0d, 0xb586726d, 0x35766572, 0xdde2a1d3, + 0x5d12b6cc, 0x077389ac, 0x87839eb3, 0xb3b1f76c, 0x3341e073, + 0x6920df13, 0xe9d0c80c, 0xf4809ddf, 0x74708ac0, 0x2e11b5a0, + 0xaee1a2bf, 0x9ad3cb60, 0x1a23dc7f, 0x4042e31f, 0xc0b2f400, + 0x282630a1, 0xa8d627be, 0xf2b718de, 0x72470fc1, 0x4675661e, + 0xc6857101, 0x9ce44e61, 0x1c14597e, 0x96bcc162, 0x164cd67d, + 0x4c2de91d, 0xccddfe02, 0xf8ef97dd, 0x781f80c2, 0x227ebfa2, + 0xa28ea8bd, 0x4a1a6c1c, 0xcaea7b03, 0x908b4463, 0x107b537c, + 0x24493aa3, 0xa4b92dbc, 0xfed812dc, 0x7e2805c3, 0x30f824a5, + 0xb00833ba, 0xea690cda, 0x6a991bc5, 0x5eab721a, 0xde5b6505, + 0x843a5a65, 0x04ca4d7a, 0xec5e89db, 0x6cae9ec4, 0x36cfa1a4, + 0xb63fb6bb, 0x820ddf64, 0x02fdc87b, 0x589cf71b, 0xd86ce004, + 0x52c47818, 0xd2346f07, 0x88555067, 0x08a54778, 0x3c972ea7, + 0xbc6739b8, 0xe60606d8, 0x66f611c7, 0x8e62d566, 0x0e92c279, + 0x54f3fd19, 0xd403ea06, 0xe03183d9, 0x60c194c6, 0x3aa0aba6, + 0xba50bcb9}, + {0x00000000, 0x9570d495, 0xf190af6b, 0x64e07bfe, 0x38505897, + 0xad208c02, 0xc9c0f7fc, 0x5cb02369, 0x70a0b12e, 0xe5d065bb, + 0x81301e45, 0x1440cad0, 0x48f0e9b9, 0xdd803d2c, 0xb96046d2, + 0x2c109247, 0xe141625c, 0x7431b6c9, 0x10d1cd37, 0x85a119a2, + 0xd9113acb, 0x4c61ee5e, 0x288195a0, 0xbdf14135, 0x91e1d372, + 0x049107e7, 0x60717c19, 0xf501a88c, 0xa9b18be5, 0x3cc15f70, + 0x5821248e, 0xcd51f01b, 0x19f3c2f9, 0x8c83166c, 0xe8636d92, + 0x7d13b907, 0x21a39a6e, 0xb4d34efb, 0xd0333505, 0x4543e190, + 0x695373d7, 0xfc23a742, 0x98c3dcbc, 0x0db30829, 0x51032b40, + 0xc473ffd5, 0xa093842b, 0x35e350be, 0xf8b2a0a5, 0x6dc27430, + 0x09220fce, 0x9c52db5b, 0xc0e2f832, 0x55922ca7, 0x31725759, + 0xa40283cc, 0x8812118b, 0x1d62c51e, 0x7982bee0, 0xecf26a75, + 0xb042491c, 0x25329d89, 0x41d2e677, 0xd4a232e2, 0x33e785f2, + 0xa6975167, 0xc2772a99, 0x5707fe0c, 0x0bb7dd65, 0x9ec709f0, + 0xfa27720e, 0x6f57a69b, 0x434734dc, 0xd637e049, 0xb2d79bb7, + 0x27a74f22, 0x7b176c4b, 0xee67b8de, 0x8a87c320, 0x1ff717b5, + 0xd2a6e7ae, 0x47d6333b, 0x233648c5, 0xb6469c50, 0xeaf6bf39, + 0x7f866bac, 0x1b661052, 0x8e16c4c7, 0xa2065680, 0x37768215, + 0x5396f9eb, 0xc6e62d7e, 0x9a560e17, 0x0f26da82, 0x6bc6a17c, + 0xfeb675e9, 0x2a14470b, 0xbf64939e, 0xdb84e860, 0x4ef43cf5, + 0x12441f9c, 0x8734cb09, 0xe3d4b0f7, 0x76a46462, 0x5ab4f625, + 0xcfc422b0, 0xab24594e, 0x3e548ddb, 0x62e4aeb2, 0xf7947a27, + 0x937401d9, 0x0604d54c, 0xcb552557, 0x5e25f1c2, 0x3ac58a3c, + 0xafb55ea9, 0xf3057dc0, 0x6675a955, 0x0295d2ab, 0x97e5063e, + 0xbbf59479, 0x2e8540ec, 0x4a653b12, 0xdf15ef87, 0x83a5ccee, + 0x16d5187b, 0x72356385, 0xe745b710, 0x67cf0be4, 0xf2bfdf71, + 0x965fa48f, 0x032f701a, 0x5f9f5373, 0xcaef87e6, 0xae0ffc18, + 0x3b7f288d, 0x176fbaca, 0x821f6e5f, 0xe6ff15a1, 0x738fc134, + 0x2f3fe25d, 0xba4f36c8, 0xdeaf4d36, 0x4bdf99a3, 0x868e69b8, + 0x13febd2d, 0x771ec6d3, 0xe26e1246, 0xbede312f, 0x2baee5ba, + 0x4f4e9e44, 0xda3e4ad1, 0xf62ed896, 0x635e0c03, 0x07be77fd, + 0x92cea368, 0xce7e8001, 0x5b0e5494, 0x3fee2f6a, 0xaa9efbff, + 0x7e3cc91d, 0xeb4c1d88, 0x8fac6676, 0x1adcb2e3, 0x466c918a, + 0xd31c451f, 0xb7fc3ee1, 0x228cea74, 0x0e9c7833, 0x9becaca6, + 0xff0cd758, 0x6a7c03cd, 0x36cc20a4, 0xa3bcf431, 0xc75c8fcf, + 0x522c5b5a, 0x9f7dab41, 0x0a0d7fd4, 0x6eed042a, 0xfb9dd0bf, + 0xa72df3d6, 0x325d2743, 0x56bd5cbd, 0xc3cd8828, 0xefdd1a6f, + 0x7aadcefa, 0x1e4db504, 0x8b3d6191, 0xd78d42f8, 0x42fd966d, + 0x261ded93, 0xb36d3906, 0x54288e16, 0xc1585a83, 0xa5b8217d, + 0x30c8f5e8, 0x6c78d681, 0xf9080214, 0x9de879ea, 0x0898ad7f, + 0x24883f38, 0xb1f8ebad, 0xd5189053, 0x406844c6, 0x1cd867af, + 0x89a8b33a, 0xed48c8c4, 0x78381c51, 0xb569ec4a, 0x201938df, + 0x44f94321, 0xd18997b4, 0x8d39b4dd, 0x18496048, 0x7ca91bb6, + 0xe9d9cf23, 0xc5c95d64, 0x50b989f1, 0x3459f20f, 0xa129269a, + 0xfd9905f3, 0x68e9d166, 0x0c09aa98, 0x99797e0d, 0x4ddb4cef, + 0xd8ab987a, 0xbc4be384, 0x293b3711, 0x758b1478, 0xe0fbc0ed, + 0x841bbb13, 0x116b6f86, 0x3d7bfdc1, 0xa80b2954, 0xcceb52aa, + 0x599b863f, 0x052ba556, 0x905b71c3, 0xf4bb0a3d, 0x61cbdea8, + 0xac9a2eb3, 0x39eafa26, 0x5d0a81d8, 0xc87a554d, 0x94ca7624, + 0x01baa2b1, 0x655ad94f, 0xf02a0dda, 0xdc3a9f9d, 0x494a4b08, + 0x2daa30f6, 0xb8dae463, 0xe46ac70a, 0x711a139f, 0x15fa6861, + 0x808abcf4}, + {0x00000000, 0xcf9e17c8, 0x444d29d1, 0x8bd33e19, 0x889a53a2, + 0x4704446a, 0xccd77a73, 0x03496dbb, 0xca45a105, 0x05dbb6cd, + 0x8e0888d4, 0x41969f1c, 0x42dff2a7, 0x8d41e56f, 0x0692db76, + 0xc90cccbe, 0x4ffa444b, 0x80645383, 0x0bb76d9a, 0xc4297a52, + 0xc76017e9, 0x08fe0021, 0x832d3e38, 0x4cb329f0, 0x85bfe54e, + 0x4a21f286, 0xc1f2cc9f, 0x0e6cdb57, 0x0d25b6ec, 0xc2bba124, + 0x49689f3d, 0x86f688f5, 0x9ff48896, 0x506a9f5e, 0xdbb9a147, + 0x1427b68f, 0x176edb34, 0xd8f0ccfc, 0x5323f2e5, 0x9cbde52d, + 0x55b12993, 0x9a2f3e5b, 0x11fc0042, 0xde62178a, 0xdd2b7a31, + 0x12b56df9, 0x996653e0, 0x56f84428, 0xd00eccdd, 0x1f90db15, + 0x9443e50c, 0x5bddf2c4, 0x58949f7f, 0x970a88b7, 0x1cd9b6ae, + 0xd347a166, 0x1a4b6dd8, 0xd5d57a10, 0x5e064409, 0x919853c1, + 0x92d13e7a, 0x5d4f29b2, 0xd69c17ab, 0x19020063, 0xe498176d, + 0x2b0600a5, 0xa0d53ebc, 0x6f4b2974, 0x6c0244cf, 0xa39c5307, + 0x284f6d1e, 0xe7d17ad6, 0x2eddb668, 0xe143a1a0, 0x6a909fb9, + 0xa50e8871, 0xa647e5ca, 0x69d9f202, 0xe20acc1b, 0x2d94dbd3, + 0xab625326, 0x64fc44ee, 0xef2f7af7, 0x20b16d3f, 0x23f80084, + 0xec66174c, 0x67b52955, 0xa82b3e9d, 0x6127f223, 0xaeb9e5eb, + 0x256adbf2, 0xeaf4cc3a, 0xe9bda181, 0x2623b649, 0xadf08850, + 0x626e9f98, 0x7b6c9ffb, 0xb4f28833, 0x3f21b62a, 0xf0bfa1e2, + 0xf3f6cc59, 0x3c68db91, 0xb7bbe588, 0x7825f240, 0xb1293efe, + 0x7eb72936, 0xf564172f, 0x3afa00e7, 0x39b36d5c, 0xf62d7a94, + 0x7dfe448d, 0xb2605345, 0x3496dbb0, 0xfb08cc78, 0x70dbf261, + 0xbf45e5a9, 0xbc0c8812, 0x73929fda, 0xf841a1c3, 0x37dfb60b, + 0xfed37ab5, 0x314d6d7d, 0xba9e5364, 0x750044ac, 0x76492917, + 0xb9d73edf, 0x320400c6, 0xfd9a170e, 0x1241289b, 0xdddf3f53, + 0x560c014a, 0x99921682, 0x9adb7b39, 0x55456cf1, 0xde9652e8, + 0x11084520, 0xd804899e, 0x179a9e56, 0x9c49a04f, 0x53d7b787, + 0x509eda3c, 0x9f00cdf4, 0x14d3f3ed, 0xdb4de425, 0x5dbb6cd0, + 0x92257b18, 0x19f64501, 0xd66852c9, 0xd5213f72, 0x1abf28ba, + 0x916c16a3, 0x5ef2016b, 0x97fecdd5, 0x5860da1d, 0xd3b3e404, + 0x1c2df3cc, 0x1f649e77, 0xd0fa89bf, 0x5b29b7a6, 0x94b7a06e, + 0x8db5a00d, 0x422bb7c5, 0xc9f889dc, 0x06669e14, 0x052ff3af, + 0xcab1e467, 0x4162da7e, 0x8efccdb6, 0x47f00108, 0x886e16c0, + 0x03bd28d9, 0xcc233f11, 0xcf6a52aa, 0x00f44562, 0x8b277b7b, + 0x44b96cb3, 0xc24fe446, 0x0dd1f38e, 0x8602cd97, 0x499cda5f, + 0x4ad5b7e4, 0x854ba02c, 0x0e989e35, 0xc10689fd, 0x080a4543, + 0xc794528b, 0x4c476c92, 0x83d97b5a, 0x809016e1, 0x4f0e0129, + 0xc4dd3f30, 0x0b4328f8, 0xf6d93ff6, 0x3947283e, 0xb2941627, + 0x7d0a01ef, 0x7e436c54, 0xb1dd7b9c, 0x3a0e4585, 0xf590524d, + 0x3c9c9ef3, 0xf302893b, 0x78d1b722, 0xb74fa0ea, 0xb406cd51, + 0x7b98da99, 0xf04be480, 0x3fd5f348, 0xb9237bbd, 0x76bd6c75, + 0xfd6e526c, 0x32f045a4, 0x31b9281f, 0xfe273fd7, 0x75f401ce, + 0xba6a1606, 0x7366dab8, 0xbcf8cd70, 0x372bf369, 0xf8b5e4a1, + 0xfbfc891a, 0x34629ed2, 0xbfb1a0cb, 0x702fb703, 0x692db760, + 0xa6b3a0a8, 0x2d609eb1, 0xe2fe8979, 0xe1b7e4c2, 0x2e29f30a, + 0xa5facd13, 0x6a64dadb, 0xa3681665, 0x6cf601ad, 0xe7253fb4, + 0x28bb287c, 0x2bf245c7, 0xe46c520f, 0x6fbf6c16, 0xa0217bde, + 0x26d7f32b, 0xe949e4e3, 0x629adafa, 0xad04cd32, 0xae4da089, + 0x61d3b741, 0xea008958, 0x259e9e90, 0xec92522e, 0x230c45e6, + 0xa8df7bff, 0x67416c37, 0x6408018c, 0xab961644, 0x2045285d, + 0xefdb3f95}, + {0x00000000, 0x24825136, 0x4904a26c, 0x6d86f35a, 0x920944d8, + 0xb68b15ee, 0xdb0de6b4, 0xff8fb782, 0xff638ff1, 0xdbe1dec7, + 0xb6672d9d, 0x92e57cab, 0x6d6acb29, 0x49e89a1f, 0x246e6945, + 0x00ec3873, 0x25b619a3, 0x01344895, 0x6cb2bbcf, 0x4830eaf9, + 0xb7bf5d7b, 0x933d0c4d, 0xfebbff17, 0xda39ae21, 0xdad59652, + 0xfe57c764, 0x93d1343e, 0xb7536508, 0x48dcd28a, 0x6c5e83bc, + 0x01d870e6, 0x255a21d0, 0x4b6c3346, 0x6fee6270, 0x0268912a, + 0x26eac01c, 0xd965779e, 0xfde726a8, 0x9061d5f2, 0xb4e384c4, + 0xb40fbcb7, 0x908ded81, 0xfd0b1edb, 0xd9894fed, 0x2606f86f, + 0x0284a959, 0x6f025a03, 0x4b800b35, 0x6eda2ae5, 0x4a587bd3, + 0x27de8889, 0x035cd9bf, 0xfcd36e3d, 0xd8513f0b, 0xb5d7cc51, + 0x91559d67, 0x91b9a514, 0xb53bf422, 0xd8bd0778, 0xfc3f564e, + 0x03b0e1cc, 0x2732b0fa, 0x4ab443a0, 0x6e361296, 0x96d8668c, + 0xb25a37ba, 0xdfdcc4e0, 0xfb5e95d6, 0x04d12254, 0x20537362, + 0x4dd58038, 0x6957d10e, 0x69bbe97d, 0x4d39b84b, 0x20bf4b11, + 0x043d1a27, 0xfbb2ada5, 0xdf30fc93, 0xb2b60fc9, 0x96345eff, + 0xb36e7f2f, 0x97ec2e19, 0xfa6add43, 0xdee88c75, 0x21673bf7, + 0x05e56ac1, 0x6863999b, 0x4ce1c8ad, 0x4c0df0de, 0x688fa1e8, + 0x050952b2, 0x218b0384, 0xde04b406, 0xfa86e530, 0x9700166a, + 0xb382475c, 0xddb455ca, 0xf93604fc, 0x94b0f7a6, 0xb032a690, + 0x4fbd1112, 0x6b3f4024, 0x06b9b37e, 0x223be248, 0x22d7da3b, + 0x06558b0d, 0x6bd37857, 0x4f512961, 0xb0de9ee3, 0x945ccfd5, + 0xf9da3c8f, 0xdd586db9, 0xf8024c69, 0xdc801d5f, 0xb106ee05, + 0x9584bf33, 0x6a0b08b1, 0x4e895987, 0x230faadd, 0x078dfbeb, + 0x0761c398, 0x23e392ae, 0x4e6561f4, 0x6ae730c2, 0x95688740, + 0xb1ead676, 0xdc6c252c, 0xf8ee741a, 0xf6c1cb59, 0xd2439a6f, + 0xbfc56935, 0x9b473803, 0x64c88f81, 0x404adeb7, 0x2dcc2ded, + 0x094e7cdb, 0x09a244a8, 0x2d20159e, 0x40a6e6c4, 0x6424b7f2, + 0x9bab0070, 0xbf295146, 0xd2afa21c, 0xf62df32a, 0xd377d2fa, + 0xf7f583cc, 0x9a737096, 0xbef121a0, 0x417e9622, 0x65fcc714, + 0x087a344e, 0x2cf86578, 0x2c145d0b, 0x08960c3d, 0x6510ff67, + 0x4192ae51, 0xbe1d19d3, 0x9a9f48e5, 0xf719bbbf, 0xd39bea89, + 0xbdadf81f, 0x992fa929, 0xf4a95a73, 0xd02b0b45, 0x2fa4bcc7, + 0x0b26edf1, 0x66a01eab, 0x42224f9d, 0x42ce77ee, 0x664c26d8, + 0x0bcad582, 0x2f4884b4, 0xd0c73336, 0xf4456200, 0x99c3915a, + 0xbd41c06c, 0x981be1bc, 0xbc99b08a, 0xd11f43d0, 0xf59d12e6, + 0x0a12a564, 0x2e90f452, 0x43160708, 0x6794563e, 0x67786e4d, + 0x43fa3f7b, 0x2e7ccc21, 0x0afe9d17, 0xf5712a95, 0xd1f37ba3, + 0xbc7588f9, 0x98f7d9cf, 0x6019add5, 0x449bfce3, 0x291d0fb9, + 0x0d9f5e8f, 0xf210e90d, 0xd692b83b, 0xbb144b61, 0x9f961a57, + 0x9f7a2224, 0xbbf87312, 0xd67e8048, 0xf2fcd17e, 0x0d7366fc, + 0x29f137ca, 0x4477c490, 0x60f595a6, 0x45afb476, 0x612de540, + 0x0cab161a, 0x2829472c, 0xd7a6f0ae, 0xf324a198, 0x9ea252c2, + 0xba2003f4, 0xbacc3b87, 0x9e4e6ab1, 0xf3c899eb, 0xd74ac8dd, + 0x28c57f5f, 0x0c472e69, 0x61c1dd33, 0x45438c05, 0x2b759e93, + 0x0ff7cfa5, 0x62713cff, 0x46f36dc9, 0xb97cda4b, 0x9dfe8b7d, + 0xf0787827, 0xd4fa2911, 0xd4161162, 0xf0944054, 0x9d12b30e, + 0xb990e238, 0x461f55ba, 0x629d048c, 0x0f1bf7d6, 0x2b99a6e0, + 0x0ec38730, 0x2a41d606, 0x47c7255c, 0x6345746a, 0x9ccac3e8, + 0xb84892de, 0xd5ce6184, 0xf14c30b2, 0xf1a008c1, 0xd52259f7, + 0xb8a4aaad, 0x9c26fb9b, 0x63a94c19, 0x472b1d2f, 0x2aadee75, + 0x0e2fbf43}, + {0x00000000, 0x36f290f3, 0x6de521e6, 0x5b17b115, 0xdbca43cc, + 0xed38d33f, 0xb62f622a, 0x80ddf2d9, 0x6ce581d9, 0x5a17112a, + 0x0100a03f, 0x37f230cc, 0xb72fc215, 0x81dd52e6, 0xdacae3f3, + 0xec387300, 0xd9cb03b2, 0xef399341, 0xb42e2254, 0x82dcb2a7, + 0x0201407e, 0x34f3d08d, 0x6fe46198, 0x5916f16b, 0xb52e826b, + 0x83dc1298, 0xd8cba38d, 0xee39337e, 0x6ee4c1a7, 0x58165154, + 0x0301e041, 0x35f370b2, 0x68e70125, 0x5e1591d6, 0x050220c3, + 0x33f0b030, 0xb32d42e9, 0x85dfd21a, 0xdec8630f, 0xe83af3fc, + 0x040280fc, 0x32f0100f, 0x69e7a11a, 0x5f1531e9, 0xdfc8c330, + 0xe93a53c3, 0xb22de2d6, 0x84df7225, 0xb12c0297, 0x87de9264, + 0xdcc92371, 0xea3bb382, 0x6ae6415b, 0x5c14d1a8, 0x070360bd, + 0x31f1f04e, 0xddc9834e, 0xeb3b13bd, 0xb02ca2a8, 0x86de325b, + 0x0603c082, 0x30f15071, 0x6be6e164, 0x5d147197, 0xd1ce024a, + 0xe73c92b9, 0xbc2b23ac, 0x8ad9b35f, 0x0a044186, 0x3cf6d175, + 0x67e16060, 0x5113f093, 0xbd2b8393, 0x8bd91360, 0xd0cea275, + 0xe63c3286, 0x66e1c05f, 0x501350ac, 0x0b04e1b9, 0x3df6714a, + 0x080501f8, 0x3ef7910b, 0x65e0201e, 0x5312b0ed, 0xd3cf4234, + 0xe53dd2c7, 0xbe2a63d2, 0x88d8f321, 0x64e08021, 0x521210d2, + 0x0905a1c7, 0x3ff73134, 0xbf2ac3ed, 0x89d8531e, 0xd2cfe20b, + 0xe43d72f8, 0xb929036f, 0x8fdb939c, 0xd4cc2289, 0xe23eb27a, + 0x62e340a3, 0x5411d050, 0x0f066145, 0x39f4f1b6, 0xd5cc82b6, + 0xe33e1245, 0xb829a350, 0x8edb33a3, 0x0e06c17a, 0x38f45189, + 0x63e3e09c, 0x5511706f, 0x60e200dd, 0x5610902e, 0x0d07213b, + 0x3bf5b1c8, 0xbb284311, 0x8ddad3e2, 0xd6cd62f7, 0xe03ff204, + 0x0c078104, 0x3af511f7, 0x61e2a0e2, 0x57103011, 0xd7cdc2c8, + 0xe13f523b, 0xba28e32e, 0x8cda73dd, 0x78ed02d5, 0x4e1f9226, + 0x15082333, 0x23fab3c0, 0xa3274119, 0x95d5d1ea, 0xcec260ff, + 0xf830f00c, 0x1408830c, 0x22fa13ff, 0x79eda2ea, 0x4f1f3219, + 0xcfc2c0c0, 0xf9305033, 0xa227e126, 0x94d571d5, 0xa1260167, + 0x97d49194, 0xccc32081, 0xfa31b072, 0x7aec42ab, 0x4c1ed258, + 0x1709634d, 0x21fbf3be, 0xcdc380be, 0xfb31104d, 0xa026a158, + 0x96d431ab, 0x1609c372, 0x20fb5381, 0x7bece294, 0x4d1e7267, + 0x100a03f0, 0x26f89303, 0x7def2216, 0x4b1db2e5, 0xcbc0403c, + 0xfd32d0cf, 0xa62561da, 0x90d7f129, 0x7cef8229, 0x4a1d12da, + 0x110aa3cf, 0x27f8333c, 0xa725c1e5, 0x91d75116, 0xcac0e003, + 0xfc3270f0, 0xc9c10042, 0xff3390b1, 0xa42421a4, 0x92d6b157, + 0x120b438e, 0x24f9d37d, 0x7fee6268, 0x491cf29b, 0xa524819b, + 0x93d61168, 0xc8c1a07d, 0xfe33308e, 0x7eeec257, 0x481c52a4, + 0x130be3b1, 0x25f97342, 0xa923009f, 0x9fd1906c, 0xc4c62179, + 0xf234b18a, 0x72e94353, 0x441bd3a0, 0x1f0c62b5, 0x29fef246, + 0xc5c68146, 0xf33411b5, 0xa823a0a0, 0x9ed13053, 0x1e0cc28a, + 0x28fe5279, 0x73e9e36c, 0x451b739f, 0x70e8032d, 0x461a93de, + 0x1d0d22cb, 0x2bffb238, 0xab2240e1, 0x9dd0d012, 0xc6c76107, + 0xf035f1f4, 0x1c0d82f4, 0x2aff1207, 0x71e8a312, 0x471a33e1, + 0xc7c7c138, 0xf13551cb, 0xaa22e0de, 0x9cd0702d, 0xc1c401ba, + 0xf7369149, 0xac21205c, 0x9ad3b0af, 0x1a0e4276, 0x2cfcd285, + 0x77eb6390, 0x4119f363, 0xad218063, 0x9bd31090, 0xc0c4a185, + 0xf6363176, 0x76ebc3af, 0x4019535c, 0x1b0ee249, 0x2dfc72ba, + 0x180f0208, 0x2efd92fb, 0x75ea23ee, 0x4318b31d, 0xc3c541c4, + 0xf537d137, 0xae206022, 0x98d2f0d1, 0x74ea83d1, 0x42181322, + 0x190fa237, 0x2ffd32c4, 0xaf20c01d, 0x99d250ee, 0xc2c5e1fb, + 0xf4377108}}; + +local const z_word_t FAR crc_braid_big_table[][256] = { + {0x0000000000000000, 0xf390f23600000000, 0xe621e56d00000000, + 0x15b1175b00000000, 0xcc43cadb00000000, 0x3fd338ed00000000, + 0x2a622fb600000000, 0xd9f2dd8000000000, 0xd981e56c00000000, + 0x2a11175a00000000, 0x3fa0000100000000, 0xcc30f23700000000, + 0x15c22fb700000000, 0xe652dd8100000000, 0xf3e3cada00000000, + 0x007338ec00000000, 0xb203cbd900000000, 0x419339ef00000000, + 0x54222eb400000000, 0xa7b2dc8200000000, 0x7e40010200000000, + 0x8dd0f33400000000, 0x9861e46f00000000, 0x6bf1165900000000, + 0x6b822eb500000000, 0x9812dc8300000000, 0x8da3cbd800000000, + 0x7e3339ee00000000, 0xa7c1e46e00000000, 0x5451165800000000, + 0x41e0010300000000, 0xb270f33500000000, 0x2501e76800000000, + 0xd691155e00000000, 0xc320020500000000, 0x30b0f03300000000, + 0xe9422db300000000, 0x1ad2df8500000000, 0x0f63c8de00000000, + 0xfcf33ae800000000, 0xfc80020400000000, 0x0f10f03200000000, + 0x1aa1e76900000000, 0xe931155f00000000, 0x30c3c8df00000000, + 0xc3533ae900000000, 0xd6e22db200000000, 0x2572df8400000000, + 0x97022cb100000000, 0x6492de8700000000, 0x7123c9dc00000000, + 0x82b33bea00000000, 0x5b41e66a00000000, 0xa8d1145c00000000, + 0xbd60030700000000, 0x4ef0f13100000000, 0x4e83c9dd00000000, + 0xbd133beb00000000, 0xa8a22cb000000000, 0x5b32de8600000000, + 0x82c0030600000000, 0x7150f13000000000, 0x64e1e66b00000000, + 0x9771145d00000000, 0x4a02ced100000000, 0xb9923ce700000000, + 0xac232bbc00000000, 0x5fb3d98a00000000, 0x8641040a00000000, + 0x75d1f63c00000000, 0x6060e16700000000, 0x93f0135100000000, + 0x93832bbd00000000, 0x6013d98b00000000, 0x75a2ced000000000, + 0x86323ce600000000, 0x5fc0e16600000000, 0xac50135000000000, + 0xb9e1040b00000000, 0x4a71f63d00000000, 0xf801050800000000, + 0x0b91f73e00000000, 0x1e20e06500000000, 0xedb0125300000000, + 0x3442cfd300000000, 0xc7d23de500000000, 0xd2632abe00000000, + 0x21f3d88800000000, 0x2180e06400000000, 0xd210125200000000, + 0xc7a1050900000000, 0x3431f73f00000000, 0xedc32abf00000000, + 0x1e53d88900000000, 0x0be2cfd200000000, 0xf8723de400000000, + 0x6f0329b900000000, 0x9c93db8f00000000, 0x8922ccd400000000, + 0x7ab23ee200000000, 0xa340e36200000000, 0x50d0115400000000, + 0x4561060f00000000, 0xb6f1f43900000000, 0xb682ccd500000000, + 0x45123ee300000000, 0x50a329b800000000, 0xa333db8e00000000, + 0x7ac1060e00000000, 0x8951f43800000000, 0x9ce0e36300000000, + 0x6f70115500000000, 0xdd00e26000000000, 0x2e90105600000000, + 0x3b21070d00000000, 0xc8b1f53b00000000, 0x114328bb00000000, + 0xe2d3da8d00000000, 0xf762cdd600000000, 0x04f23fe000000000, + 0x0481070c00000000, 0xf711f53a00000000, 0xe2a0e26100000000, + 0x1130105700000000, 0xc8c2cdd700000000, 0x3b523fe100000000, + 0x2ee328ba00000000, 0xdd73da8c00000000, 0xd502ed7800000000, + 0x26921f4e00000000, 0x3323081500000000, 0xc0b3fa2300000000, + 0x194127a300000000, 0xead1d59500000000, 0xff60c2ce00000000, + 0x0cf030f800000000, 0x0c83081400000000, 0xff13fa2200000000, + 0xeaa2ed7900000000, 0x19321f4f00000000, 0xc0c0c2cf00000000, + 0x335030f900000000, 0x26e127a200000000, 0xd571d59400000000, + 0x670126a100000000, 0x9491d49700000000, 0x8120c3cc00000000, + 0x72b031fa00000000, 0xab42ec7a00000000, 0x58d21e4c00000000, + 0x4d63091700000000, 0xbef3fb2100000000, 0xbe80c3cd00000000, + 0x4d1031fb00000000, 0x58a126a000000000, 0xab31d49600000000, + 0x72c3091600000000, 0x8153fb2000000000, 0x94e2ec7b00000000, + 0x67721e4d00000000, 0xf0030a1000000000, 0x0393f82600000000, + 0x1622ef7d00000000, 0xe5b21d4b00000000, 0x3c40c0cb00000000, + 0xcfd032fd00000000, 0xda6125a600000000, 0x29f1d79000000000, + 0x2982ef7c00000000, 0xda121d4a00000000, 0xcfa30a1100000000, + 0x3c33f82700000000, 0xe5c125a700000000, 0x1651d79100000000, + 0x03e0c0ca00000000, 0xf07032fc00000000, 0x4200c1c900000000, + 0xb19033ff00000000, 0xa42124a400000000, 0x57b1d69200000000, + 0x8e430b1200000000, 0x7dd3f92400000000, 0x6862ee7f00000000, + 0x9bf21c4900000000, 0x9b8124a500000000, 0x6811d69300000000, + 0x7da0c1c800000000, 0x8e3033fe00000000, 0x57c2ee7e00000000, + 0xa4521c4800000000, 0xb1e30b1300000000, 0x4273f92500000000, + 0x9f0023a900000000, 0x6c90d19f00000000, 0x7921c6c400000000, + 0x8ab134f200000000, 0x5343e97200000000, 0xa0d31b4400000000, + 0xb5620c1f00000000, 0x46f2fe2900000000, 0x4681c6c500000000, + 0xb51134f300000000, 0xa0a023a800000000, 0x5330d19e00000000, + 0x8ac20c1e00000000, 0x7952fe2800000000, 0x6ce3e97300000000, + 0x9f731b4500000000, 0x2d03e87000000000, 0xde931a4600000000, + 0xcb220d1d00000000, 0x38b2ff2b00000000, 0xe14022ab00000000, + 0x12d0d09d00000000, 0x0761c7c600000000, 0xf4f135f000000000, + 0xf4820d1c00000000, 0x0712ff2a00000000, 0x12a3e87100000000, + 0xe1331a4700000000, 0x38c1c7c700000000, 0xcb5135f100000000, + 0xdee022aa00000000, 0x2d70d09c00000000, 0xba01c4c100000000, + 0x499136f700000000, 0x5c2021ac00000000, 0xafb0d39a00000000, + 0x76420e1a00000000, 0x85d2fc2c00000000, 0x9063eb7700000000, + 0x63f3194100000000, 0x638021ad00000000, 0x9010d39b00000000, + 0x85a1c4c000000000, 0x763136f600000000, 0xafc3eb7600000000, + 0x5c53194000000000, 0x49e20e1b00000000, 0xba72fc2d00000000, + 0x08020f1800000000, 0xfb92fd2e00000000, 0xee23ea7500000000, + 0x1db3184300000000, 0xc441c5c300000000, 0x37d137f500000000, + 0x226020ae00000000, 0xd1f0d29800000000, 0xd183ea7400000000, + 0x2213184200000000, 0x37a20f1900000000, 0xc432fd2f00000000, + 0x1dc020af00000000, 0xee50d29900000000, 0xfbe1c5c200000000, + 0x087137f400000000}, + {0x0000000000000000, 0x3651822400000000, 0x6ca2044900000000, + 0x5af3866d00000000, 0xd844099200000000, 0xee158bb600000000, + 0xb4e60ddb00000000, 0x82b78fff00000000, 0xf18f63ff00000000, + 0xc7dee1db00000000, 0x9d2d67b600000000, 0xab7ce59200000000, + 0x29cb6a6d00000000, 0x1f9ae84900000000, 0x45696e2400000000, + 0x7338ec0000000000, 0xa319b62500000000, 0x9548340100000000, + 0xcfbbb26c00000000, 0xf9ea304800000000, 0x7b5dbfb700000000, + 0x4d0c3d9300000000, 0x17ffbbfe00000000, 0x21ae39da00000000, + 0x5296d5da00000000, 0x64c757fe00000000, 0x3e34d19300000000, + 0x086553b700000000, 0x8ad2dc4800000000, 0xbc835e6c00000000, + 0xe670d80100000000, 0xd0215a2500000000, 0x46336c4b00000000, + 0x7062ee6f00000000, 0x2a91680200000000, 0x1cc0ea2600000000, + 0x9e7765d900000000, 0xa826e7fd00000000, 0xf2d5619000000000, + 0xc484e3b400000000, 0xb7bc0fb400000000, 0x81ed8d9000000000, + 0xdb1e0bfd00000000, 0xed4f89d900000000, 0x6ff8062600000000, + 0x59a9840200000000, 0x035a026f00000000, 0x350b804b00000000, + 0xe52ada6e00000000, 0xd37b584a00000000, 0x8988de2700000000, + 0xbfd95c0300000000, 0x3d6ed3fc00000000, 0x0b3f51d800000000, + 0x51ccd7b500000000, 0x679d559100000000, 0x14a5b99100000000, + 0x22f43bb500000000, 0x7807bdd800000000, 0x4e563ffc00000000, + 0xcce1b00300000000, 0xfab0322700000000, 0xa043b44a00000000, + 0x9612366e00000000, 0x8c66d89600000000, 0xba375ab200000000, + 0xe0c4dcdf00000000, 0xd6955efb00000000, 0x5422d10400000000, + 0x6273532000000000, 0x3880d54d00000000, 0x0ed1576900000000, + 0x7de9bb6900000000, 0x4bb8394d00000000, 0x114bbf2000000000, + 0x271a3d0400000000, 0xa5adb2fb00000000, 0x93fc30df00000000, + 0xc90fb6b200000000, 0xff5e349600000000, 0x2f7f6eb300000000, + 0x192eec9700000000, 0x43dd6afa00000000, 0x758ce8de00000000, + 0xf73b672100000000, 0xc16ae50500000000, 0x9b99636800000000, + 0xadc8e14c00000000, 0xdef00d4c00000000, 0xe8a18f6800000000, + 0xb252090500000000, 0x84038b2100000000, 0x06b404de00000000, + 0x30e586fa00000000, 0x6a16009700000000, 0x5c4782b300000000, + 0xca55b4dd00000000, 0xfc0436f900000000, 0xa6f7b09400000000, + 0x90a632b000000000, 0x1211bd4f00000000, 0x24403f6b00000000, + 0x7eb3b90600000000, 0x48e23b2200000000, 0x3bdad72200000000, + 0x0d8b550600000000, 0x5778d36b00000000, 0x6129514f00000000, + 0xe39edeb000000000, 0xd5cf5c9400000000, 0x8f3cdaf900000000, + 0xb96d58dd00000000, 0x694c02f800000000, 0x5f1d80dc00000000, + 0x05ee06b100000000, 0x33bf849500000000, 0xb1080b6a00000000, + 0x8759894e00000000, 0xddaa0f2300000000, 0xebfb8d0700000000, + 0x98c3610700000000, 0xae92e32300000000, 0xf461654e00000000, + 0xc230e76a00000000, 0x4087689500000000, 0x76d6eab100000000, + 0x2c256cdc00000000, 0x1a74eef800000000, 0x59cbc1f600000000, + 0x6f9a43d200000000, 0x3569c5bf00000000, 0x0338479b00000000, + 0x818fc86400000000, 0xb7de4a4000000000, 0xed2dcc2d00000000, + 0xdb7c4e0900000000, 0xa844a20900000000, 0x9e15202d00000000, + 0xc4e6a64000000000, 0xf2b7246400000000, 0x7000ab9b00000000, + 0x465129bf00000000, 0x1ca2afd200000000, 0x2af32df600000000, + 0xfad277d300000000, 0xcc83f5f700000000, 0x9670739a00000000, + 0xa021f1be00000000, 0x22967e4100000000, 0x14c7fc6500000000, + 0x4e347a0800000000, 0x7865f82c00000000, 0x0b5d142c00000000, + 0x3d0c960800000000, 0x67ff106500000000, 0x51ae924100000000, + 0xd3191dbe00000000, 0xe5489f9a00000000, 0xbfbb19f700000000, + 0x89ea9bd300000000, 0x1ff8adbd00000000, 0x29a92f9900000000, + 0x735aa9f400000000, 0x450b2bd000000000, 0xc7bca42f00000000, + 0xf1ed260b00000000, 0xab1ea06600000000, 0x9d4f224200000000, + 0xee77ce4200000000, 0xd8264c6600000000, 0x82d5ca0b00000000, + 0xb484482f00000000, 0x3633c7d000000000, 0x006245f400000000, + 0x5a91c39900000000, 0x6cc041bd00000000, 0xbce11b9800000000, + 0x8ab099bc00000000, 0xd0431fd100000000, 0xe6129df500000000, + 0x64a5120a00000000, 0x52f4902e00000000, 0x0807164300000000, + 0x3e56946700000000, 0x4d6e786700000000, 0x7b3ffa4300000000, + 0x21cc7c2e00000000, 0x179dfe0a00000000, 0x952a71f500000000, + 0xa37bf3d100000000, 0xf98875bc00000000, 0xcfd9f79800000000, + 0xd5ad196000000000, 0xe3fc9b4400000000, 0xb90f1d2900000000, + 0x8f5e9f0d00000000, 0x0de910f200000000, 0x3bb892d600000000, + 0x614b14bb00000000, 0x571a969f00000000, 0x24227a9f00000000, + 0x1273f8bb00000000, 0x48807ed600000000, 0x7ed1fcf200000000, + 0xfc66730d00000000, 0xca37f12900000000, 0x90c4774400000000, + 0xa695f56000000000, 0x76b4af4500000000, 0x40e52d6100000000, + 0x1a16ab0c00000000, 0x2c47292800000000, 0xaef0a6d700000000, + 0x98a124f300000000, 0xc252a29e00000000, 0xf40320ba00000000, + 0x873bccba00000000, 0xb16a4e9e00000000, 0xeb99c8f300000000, + 0xddc84ad700000000, 0x5f7fc52800000000, 0x692e470c00000000, + 0x33ddc16100000000, 0x058c434500000000, 0x939e752b00000000, + 0xa5cff70f00000000, 0xff3c716200000000, 0xc96df34600000000, + 0x4bda7cb900000000, 0x7d8bfe9d00000000, 0x277878f000000000, + 0x1129fad400000000, 0x621116d400000000, 0x544094f000000000, + 0x0eb3129d00000000, 0x38e290b900000000, 0xba551f4600000000, + 0x8c049d6200000000, 0xd6f71b0f00000000, 0xe0a6992b00000000, + 0x3087c30e00000000, 0x06d6412a00000000, 0x5c25c74700000000, + 0x6a74456300000000, 0xe8c3ca9c00000000, 0xde9248b800000000, + 0x8461ced500000000, 0xb2304cf100000000, 0xc108a0f100000000, + 0xf75922d500000000, 0xadaaa4b800000000, 0x9bfb269c00000000, + 0x194ca96300000000, 0x2f1d2b4700000000, 0x75eead2a00000000, + 0x43bf2f0e00000000}, + {0x0000000000000000, 0xc8179ecf00000000, 0xd1294d4400000000, + 0x193ed38b00000000, 0xa2539a8800000000, 0x6a44044700000000, + 0x737ad7cc00000000, 0xbb6d490300000000, 0x05a145ca00000000, + 0xcdb6db0500000000, 0xd488088e00000000, 0x1c9f964100000000, + 0xa7f2df4200000000, 0x6fe5418d00000000, 0x76db920600000000, + 0xbecc0cc900000000, 0x4b44fa4f00000000, 0x8353648000000000, + 0x9a6db70b00000000, 0x527a29c400000000, 0xe91760c700000000, + 0x2100fe0800000000, 0x383e2d8300000000, 0xf029b34c00000000, + 0x4ee5bf8500000000, 0x86f2214a00000000, 0x9fccf2c100000000, + 0x57db6c0e00000000, 0xecb6250d00000000, 0x24a1bbc200000000, + 0x3d9f684900000000, 0xf588f68600000000, 0x9688f49f00000000, + 0x5e9f6a5000000000, 0x47a1b9db00000000, 0x8fb6271400000000, + 0x34db6e1700000000, 0xfcccf0d800000000, 0xe5f2235300000000, + 0x2de5bd9c00000000, 0x9329b15500000000, 0x5b3e2f9a00000000, + 0x4200fc1100000000, 0x8a1762de00000000, 0x317a2bdd00000000, + 0xf96db51200000000, 0xe053669900000000, 0x2844f85600000000, + 0xddcc0ed000000000, 0x15db901f00000000, 0x0ce5439400000000, + 0xc4f2dd5b00000000, 0x7f9f945800000000, 0xb7880a9700000000, + 0xaeb6d91c00000000, 0x66a147d300000000, 0xd86d4b1a00000000, + 0x107ad5d500000000, 0x0944065e00000000, 0xc153989100000000, + 0x7a3ed19200000000, 0xb2294f5d00000000, 0xab179cd600000000, + 0x6300021900000000, 0x6d1798e400000000, 0xa500062b00000000, + 0xbc3ed5a000000000, 0x74294b6f00000000, 0xcf44026c00000000, + 0x07539ca300000000, 0x1e6d4f2800000000, 0xd67ad1e700000000, + 0x68b6dd2e00000000, 0xa0a143e100000000, 0xb99f906a00000000, + 0x71880ea500000000, 0xcae547a600000000, 0x02f2d96900000000, + 0x1bcc0ae200000000, 0xd3db942d00000000, 0x265362ab00000000, + 0xee44fc6400000000, 0xf77a2fef00000000, 0x3f6db12000000000, + 0x8400f82300000000, 0x4c1766ec00000000, 0x5529b56700000000, + 0x9d3e2ba800000000, 0x23f2276100000000, 0xebe5b9ae00000000, + 0xf2db6a2500000000, 0x3accf4ea00000000, 0x81a1bde900000000, + 0x49b6232600000000, 0x5088f0ad00000000, 0x989f6e6200000000, + 0xfb9f6c7b00000000, 0x3388f2b400000000, 0x2ab6213f00000000, + 0xe2a1bff000000000, 0x59ccf6f300000000, 0x91db683c00000000, + 0x88e5bbb700000000, 0x40f2257800000000, 0xfe3e29b100000000, + 0x3629b77e00000000, 0x2f1764f500000000, 0xe700fa3a00000000, + 0x5c6db33900000000, 0x947a2df600000000, 0x8d44fe7d00000000, + 0x455360b200000000, 0xb0db963400000000, 0x78cc08fb00000000, + 0x61f2db7000000000, 0xa9e545bf00000000, 0x12880cbc00000000, + 0xda9f927300000000, 0xc3a141f800000000, 0x0bb6df3700000000, + 0xb57ad3fe00000000, 0x7d6d4d3100000000, 0x64539eba00000000, + 0xac44007500000000, 0x1729497600000000, 0xdf3ed7b900000000, + 0xc600043200000000, 0x0e179afd00000000, 0x9b28411200000000, + 0x533fdfdd00000000, 0x4a010c5600000000, 0x8216929900000000, + 0x397bdb9a00000000, 0xf16c455500000000, 0xe85296de00000000, + 0x2045081100000000, 0x9e8904d800000000, 0x569e9a1700000000, + 0x4fa0499c00000000, 0x87b7d75300000000, 0x3cda9e5000000000, + 0xf4cd009f00000000, 0xedf3d31400000000, 0x25e44ddb00000000, + 0xd06cbb5d00000000, 0x187b259200000000, 0x0145f61900000000, + 0xc95268d600000000, 0x723f21d500000000, 0xba28bf1a00000000, + 0xa3166c9100000000, 0x6b01f25e00000000, 0xd5cdfe9700000000, + 0x1dda605800000000, 0x04e4b3d300000000, 0xccf32d1c00000000, + 0x779e641f00000000, 0xbf89fad000000000, 0xa6b7295b00000000, + 0x6ea0b79400000000, 0x0da0b58d00000000, 0xc5b72b4200000000, + 0xdc89f8c900000000, 0x149e660600000000, 0xaff32f0500000000, + 0x67e4b1ca00000000, 0x7eda624100000000, 0xb6cdfc8e00000000, + 0x0801f04700000000, 0xc0166e8800000000, 0xd928bd0300000000, + 0x113f23cc00000000, 0xaa526acf00000000, 0x6245f40000000000, + 0x7b7b278b00000000, 0xb36cb94400000000, 0x46e44fc200000000, + 0x8ef3d10d00000000, 0x97cd028600000000, 0x5fda9c4900000000, + 0xe4b7d54a00000000, 0x2ca04b8500000000, 0x359e980e00000000, + 0xfd8906c100000000, 0x43450a0800000000, 0x8b5294c700000000, + 0x926c474c00000000, 0x5a7bd98300000000, 0xe116908000000000, + 0x29010e4f00000000, 0x303fddc400000000, 0xf828430b00000000, + 0xf63fd9f600000000, 0x3e28473900000000, 0x271694b200000000, + 0xef010a7d00000000, 0x546c437e00000000, 0x9c7bddb100000000, + 0x85450e3a00000000, 0x4d5290f500000000, 0xf39e9c3c00000000, + 0x3b8902f300000000, 0x22b7d17800000000, 0xeaa04fb700000000, + 0x51cd06b400000000, 0x99da987b00000000, 0x80e44bf000000000, + 0x48f3d53f00000000, 0xbd7b23b900000000, 0x756cbd7600000000, + 0x6c526efd00000000, 0xa445f03200000000, 0x1f28b93100000000, + 0xd73f27fe00000000, 0xce01f47500000000, 0x06166aba00000000, + 0xb8da667300000000, 0x70cdf8bc00000000, 0x69f32b3700000000, + 0xa1e4b5f800000000, 0x1a89fcfb00000000, 0xd29e623400000000, + 0xcba0b1bf00000000, 0x03b72f7000000000, 0x60b72d6900000000, + 0xa8a0b3a600000000, 0xb19e602d00000000, 0x7989fee200000000, + 0xc2e4b7e100000000, 0x0af3292e00000000, 0x13cdfaa500000000, + 0xdbda646a00000000, 0x651668a300000000, 0xad01f66c00000000, + 0xb43f25e700000000, 0x7c28bb2800000000, 0xc745f22b00000000, + 0x0f526ce400000000, 0x166cbf6f00000000, 0xde7b21a000000000, + 0x2bf3d72600000000, 0xe3e449e900000000, 0xfada9a6200000000, + 0x32cd04ad00000000, 0x89a04dae00000000, 0x41b7d36100000000, + 0x588900ea00000000, 0x909e9e2500000000, 0x2e5292ec00000000, + 0xe6450c2300000000, 0xff7bdfa800000000, 0x376c416700000000, + 0x8c01086400000000, 0x441696ab00000000, 0x5d28452000000000, + 0x953fdbef00000000}, + {0x0000000000000000, 0x95d4709500000000, 0x6baf90f100000000, + 0xfe7be06400000000, 0x9758503800000000, 0x028c20ad00000000, + 0xfcf7c0c900000000, 0x6923b05c00000000, 0x2eb1a07000000000, + 0xbb65d0e500000000, 0x451e308100000000, 0xd0ca401400000000, + 0xb9e9f04800000000, 0x2c3d80dd00000000, 0xd24660b900000000, + 0x4792102c00000000, 0x5c6241e100000000, 0xc9b6317400000000, + 0x37cdd11000000000, 0xa219a18500000000, 0xcb3a11d900000000, + 0x5eee614c00000000, 0xa095812800000000, 0x3541f1bd00000000, + 0x72d3e19100000000, 0xe707910400000000, 0x197c716000000000, + 0x8ca801f500000000, 0xe58bb1a900000000, 0x705fc13c00000000, + 0x8e24215800000000, 0x1bf051cd00000000, 0xf9c2f31900000000, + 0x6c16838c00000000, 0x926d63e800000000, 0x07b9137d00000000, + 0x6e9aa32100000000, 0xfb4ed3b400000000, 0x053533d000000000, + 0x90e1434500000000, 0xd773536900000000, 0x42a723fc00000000, + 0xbcdcc39800000000, 0x2908b30d00000000, 0x402b035100000000, + 0xd5ff73c400000000, 0x2b8493a000000000, 0xbe50e33500000000, + 0xa5a0b2f800000000, 0x3074c26d00000000, 0xce0f220900000000, + 0x5bdb529c00000000, 0x32f8e2c000000000, 0xa72c925500000000, + 0x5957723100000000, 0xcc8302a400000000, 0x8b11128800000000, + 0x1ec5621d00000000, 0xe0be827900000000, 0x756af2ec00000000, + 0x1c4942b000000000, 0x899d322500000000, 0x77e6d24100000000, + 0xe232a2d400000000, 0xf285e73300000000, 0x675197a600000000, + 0x992a77c200000000, 0x0cfe075700000000, 0x65ddb70b00000000, + 0xf009c79e00000000, 0x0e7227fa00000000, 0x9ba6576f00000000, + 0xdc34474300000000, 0x49e037d600000000, 0xb79bd7b200000000, + 0x224fa72700000000, 0x4b6c177b00000000, 0xdeb867ee00000000, + 0x20c3878a00000000, 0xb517f71f00000000, 0xaee7a6d200000000, + 0x3b33d64700000000, 0xc548362300000000, 0x509c46b600000000, + 0x39bff6ea00000000, 0xac6b867f00000000, 0x5210661b00000000, + 0xc7c4168e00000000, 0x805606a200000000, 0x1582763700000000, + 0xebf9965300000000, 0x7e2de6c600000000, 0x170e569a00000000, + 0x82da260f00000000, 0x7ca1c66b00000000, 0xe975b6fe00000000, + 0x0b47142a00000000, 0x9e9364bf00000000, 0x60e884db00000000, + 0xf53cf44e00000000, 0x9c1f441200000000, 0x09cb348700000000, + 0xf7b0d4e300000000, 0x6264a47600000000, 0x25f6b45a00000000, + 0xb022c4cf00000000, 0x4e5924ab00000000, 0xdb8d543e00000000, + 0xb2aee46200000000, 0x277a94f700000000, 0xd901749300000000, + 0x4cd5040600000000, 0x572555cb00000000, 0xc2f1255e00000000, + 0x3c8ac53a00000000, 0xa95eb5af00000000, 0xc07d05f300000000, + 0x55a9756600000000, 0xabd2950200000000, 0x3e06e59700000000, + 0x7994f5bb00000000, 0xec40852e00000000, 0x123b654a00000000, + 0x87ef15df00000000, 0xeecca58300000000, 0x7b18d51600000000, + 0x8563357200000000, 0x10b745e700000000, 0xe40bcf6700000000, + 0x71dfbff200000000, 0x8fa45f9600000000, 0x1a702f0300000000, + 0x73539f5f00000000, 0xe687efca00000000, 0x18fc0fae00000000, + 0x8d287f3b00000000, 0xcaba6f1700000000, 0x5f6e1f8200000000, + 0xa115ffe600000000, 0x34c18f7300000000, 0x5de23f2f00000000, + 0xc8364fba00000000, 0x364dafde00000000, 0xa399df4b00000000, + 0xb8698e8600000000, 0x2dbdfe1300000000, 0xd3c61e7700000000, + 0x46126ee200000000, 0x2f31debe00000000, 0xbae5ae2b00000000, + 0x449e4e4f00000000, 0xd14a3eda00000000, 0x96d82ef600000000, + 0x030c5e6300000000, 0xfd77be0700000000, 0x68a3ce9200000000, + 0x01807ece00000000, 0x94540e5b00000000, 0x6a2fee3f00000000, + 0xfffb9eaa00000000, 0x1dc93c7e00000000, 0x881d4ceb00000000, + 0x7666ac8f00000000, 0xe3b2dc1a00000000, 0x8a916c4600000000, + 0x1f451cd300000000, 0xe13efcb700000000, 0x74ea8c2200000000, + 0x33789c0e00000000, 0xa6acec9b00000000, 0x58d70cff00000000, + 0xcd037c6a00000000, 0xa420cc3600000000, 0x31f4bca300000000, + 0xcf8f5cc700000000, 0x5a5b2c5200000000, 0x41ab7d9f00000000, + 0xd47f0d0a00000000, 0x2a04ed6e00000000, 0xbfd09dfb00000000, + 0xd6f32da700000000, 0x43275d3200000000, 0xbd5cbd5600000000, + 0x2888cdc300000000, 0x6f1addef00000000, 0xfacead7a00000000, + 0x04b54d1e00000000, 0x91613d8b00000000, 0xf8428dd700000000, + 0x6d96fd4200000000, 0x93ed1d2600000000, 0x06396db300000000, + 0x168e285400000000, 0x835a58c100000000, 0x7d21b8a500000000, + 0xe8f5c83000000000, 0x81d6786c00000000, 0x140208f900000000, + 0xea79e89d00000000, 0x7fad980800000000, 0x383f882400000000, + 0xadebf8b100000000, 0x539018d500000000, 0xc644684000000000, + 0xaf67d81c00000000, 0x3ab3a88900000000, 0xc4c848ed00000000, + 0x511c387800000000, 0x4aec69b500000000, 0xdf38192000000000, + 0x2143f94400000000, 0xb49789d100000000, 0xddb4398d00000000, + 0x4860491800000000, 0xb61ba97c00000000, 0x23cfd9e900000000, + 0x645dc9c500000000, 0xf189b95000000000, 0x0ff2593400000000, + 0x9a2629a100000000, 0xf30599fd00000000, 0x66d1e96800000000, + 0x98aa090c00000000, 0x0d7e799900000000, 0xef4cdb4d00000000, + 0x7a98abd800000000, 0x84e34bbc00000000, 0x11373b2900000000, + 0x78148b7500000000, 0xedc0fbe000000000, 0x13bb1b8400000000, + 0x866f6b1100000000, 0xc1fd7b3d00000000, 0x54290ba800000000, + 0xaa52ebcc00000000, 0x3f869b5900000000, 0x56a52b0500000000, + 0xc3715b9000000000, 0x3d0abbf400000000, 0xa8decb6100000000, + 0xb32e9aac00000000, 0x26faea3900000000, 0xd8810a5d00000000, + 0x4d557ac800000000, 0x2476ca9400000000, 0xb1a2ba0100000000, + 0x4fd95a6500000000, 0xda0d2af000000000, 0x9d9f3adc00000000, + 0x084b4a4900000000, 0xf630aa2d00000000, 0x63e4dab800000000, + 0x0ac76ae400000000, 0x9f131a7100000000, 0x6168fa1500000000, + 0xf4bc8a8000000000}, + {0x0000000000000000, 0x1f17f08000000000, 0x7f2891da00000000, + 0x603f615a00000000, 0xbf56536e00000000, 0xa041a3ee00000000, + 0xc07ec2b400000000, 0xdf69323400000000, 0x7eada6dc00000000, + 0x61ba565c00000000, 0x0185370600000000, 0x1e92c78600000000, + 0xc1fbf5b200000000, 0xdeec053200000000, 0xbed3646800000000, + 0xa1c494e800000000, 0xbd5c3c6200000000, 0xa24bcce200000000, + 0xc274adb800000000, 0xdd635d3800000000, 0x020a6f0c00000000, + 0x1d1d9f8c00000000, 0x7d22fed600000000, 0x62350e5600000000, + 0xc3f19abe00000000, 0xdce66a3e00000000, 0xbcd90b6400000000, + 0xa3cefbe400000000, 0x7ca7c9d000000000, 0x63b0395000000000, + 0x038f580a00000000, 0x1c98a88a00000000, 0x7ab978c400000000, + 0x65ae884400000000, 0x0591e91e00000000, 0x1a86199e00000000, + 0xc5ef2baa00000000, 0xdaf8db2a00000000, 0xbac7ba7000000000, + 0xa5d04af000000000, 0x0414de1800000000, 0x1b032e9800000000, + 0x7b3c4fc200000000, 0x642bbf4200000000, 0xbb428d7600000000, + 0xa4557df600000000, 0xc46a1cac00000000, 0xdb7dec2c00000000, + 0xc7e544a600000000, 0xd8f2b42600000000, 0xb8cdd57c00000000, + 0xa7da25fc00000000, 0x78b317c800000000, 0x67a4e74800000000, + 0x079b861200000000, 0x188c769200000000, 0xb948e27a00000000, + 0xa65f12fa00000000, 0xc66073a000000000, 0xd977832000000000, + 0x061eb11400000000, 0x1909419400000000, 0x793620ce00000000, + 0x6621d04e00000000, 0xb574805300000000, 0xaa6370d300000000, + 0xca5c118900000000, 0xd54be10900000000, 0x0a22d33d00000000, + 0x153523bd00000000, 0x750a42e700000000, 0x6a1db26700000000, + 0xcbd9268f00000000, 0xd4ced60f00000000, 0xb4f1b75500000000, + 0xabe647d500000000, 0x748f75e100000000, 0x6b98856100000000, + 0x0ba7e43b00000000, 0x14b014bb00000000, 0x0828bc3100000000, + 0x173f4cb100000000, 0x77002deb00000000, 0x6817dd6b00000000, + 0xb77eef5f00000000, 0xa8691fdf00000000, 0xc8567e8500000000, + 0xd7418e0500000000, 0x76851aed00000000, 0x6992ea6d00000000, + 0x09ad8b3700000000, 0x16ba7bb700000000, 0xc9d3498300000000, + 0xd6c4b90300000000, 0xb6fbd85900000000, 0xa9ec28d900000000, + 0xcfcdf89700000000, 0xd0da081700000000, 0xb0e5694d00000000, + 0xaff299cd00000000, 0x709babf900000000, 0x6f8c5b7900000000, + 0x0fb33a2300000000, 0x10a4caa300000000, 0xb1605e4b00000000, + 0xae77aecb00000000, 0xce48cf9100000000, 0xd15f3f1100000000, + 0x0e360d2500000000, 0x1121fda500000000, 0x711e9cff00000000, + 0x6e096c7f00000000, 0x7291c4f500000000, 0x6d86347500000000, + 0x0db9552f00000000, 0x12aea5af00000000, 0xcdc7979b00000000, + 0xd2d0671b00000000, 0xb2ef064100000000, 0xadf8f6c100000000, + 0x0c3c622900000000, 0x132b92a900000000, 0x7314f3f300000000, + 0x6c03037300000000, 0xb36a314700000000, 0xac7dc1c700000000, + 0xcc42a09d00000000, 0xd355501d00000000, 0x6ae900a700000000, + 0x75fef02700000000, 0x15c1917d00000000, 0x0ad661fd00000000, + 0xd5bf53c900000000, 0xcaa8a34900000000, 0xaa97c21300000000, + 0xb580329300000000, 0x1444a67b00000000, 0x0b5356fb00000000, + 0x6b6c37a100000000, 0x747bc72100000000, 0xab12f51500000000, + 0xb405059500000000, 0xd43a64cf00000000, 0xcb2d944f00000000, + 0xd7b53cc500000000, 0xc8a2cc4500000000, 0xa89dad1f00000000, + 0xb78a5d9f00000000, 0x68e36fab00000000, 0x77f49f2b00000000, + 0x17cbfe7100000000, 0x08dc0ef100000000, 0xa9189a1900000000, + 0xb60f6a9900000000, 0xd6300bc300000000, 0xc927fb4300000000, + 0x164ec97700000000, 0x095939f700000000, 0x696658ad00000000, + 0x7671a82d00000000, 0x1050786300000000, 0x0f4788e300000000, + 0x6f78e9b900000000, 0x706f193900000000, 0xaf062b0d00000000, + 0xb011db8d00000000, 0xd02ebad700000000, 0xcf394a5700000000, + 0x6efddebf00000000, 0x71ea2e3f00000000, 0x11d54f6500000000, + 0x0ec2bfe500000000, 0xd1ab8dd100000000, 0xcebc7d5100000000, + 0xae831c0b00000000, 0xb194ec8b00000000, 0xad0c440100000000, + 0xb21bb48100000000, 0xd224d5db00000000, 0xcd33255b00000000, + 0x125a176f00000000, 0x0d4de7ef00000000, 0x6d7286b500000000, + 0x7265763500000000, 0xd3a1e2dd00000000, 0xccb6125d00000000, + 0xac89730700000000, 0xb39e838700000000, 0x6cf7b1b300000000, + 0x73e0413300000000, 0x13df206900000000, 0x0cc8d0e900000000, + 0xdf9d80f400000000, 0xc08a707400000000, 0xa0b5112e00000000, + 0xbfa2e1ae00000000, 0x60cbd39a00000000, 0x7fdc231a00000000, + 0x1fe3424000000000, 0x00f4b2c000000000, 0xa130262800000000, + 0xbe27d6a800000000, 0xde18b7f200000000, 0xc10f477200000000, + 0x1e66754600000000, 0x017185c600000000, 0x614ee49c00000000, + 0x7e59141c00000000, 0x62c1bc9600000000, 0x7dd64c1600000000, + 0x1de92d4c00000000, 0x02feddcc00000000, 0xdd97eff800000000, + 0xc2801f7800000000, 0xa2bf7e2200000000, 0xbda88ea200000000, + 0x1c6c1a4a00000000, 0x037beaca00000000, 0x63448b9000000000, + 0x7c537b1000000000, 0xa33a492400000000, 0xbc2db9a400000000, + 0xdc12d8fe00000000, 0xc305287e00000000, 0xa524f83000000000, + 0xba3308b000000000, 0xda0c69ea00000000, 0xc51b996a00000000, + 0x1a72ab5e00000000, 0x05655bde00000000, 0x655a3a8400000000, + 0x7a4dca0400000000, 0xdb895eec00000000, 0xc49eae6c00000000, + 0xa4a1cf3600000000, 0xbbb63fb600000000, 0x64df0d8200000000, + 0x7bc8fd0200000000, 0x1bf79c5800000000, 0x04e06cd800000000, + 0x1878c45200000000, 0x076f34d200000000, 0x6750558800000000, + 0x7847a50800000000, 0xa72e973c00000000, 0xb83967bc00000000, + 0xd80606e600000000, 0xc711f66600000000, 0x66d5628e00000000, + 0x79c2920e00000000, 0x19fdf35400000000, 0x06ea03d400000000, + 0xd98331e000000000, 0xc694c16000000000, 0xa6aba03a00000000, + 0xb9bc50ba00000000}, + {0x0000000000000000, 0xe2fd888d00000000, 0x85fd60c000000000, + 0x6700e84d00000000, 0x4bfdb05b00000000, 0xa90038d600000000, + 0xce00d09b00000000, 0x2cfd581600000000, 0x96fa61b700000000, + 0x7407e93a00000000, 0x1307017700000000, 0xf1fa89fa00000000, + 0xdd07d1ec00000000, 0x3ffa596100000000, 0x58fab12c00000000, + 0xba0739a100000000, 0x6df3b2b500000000, 0x8f0e3a3800000000, + 0xe80ed27500000000, 0x0af35af800000000, 0x260e02ee00000000, + 0xc4f38a6300000000, 0xa3f3622e00000000, 0x410eeaa300000000, + 0xfb09d30200000000, 0x19f45b8f00000000, 0x7ef4b3c200000000, + 0x9c093b4f00000000, 0xb0f4635900000000, 0x5209ebd400000000, + 0x3509039900000000, 0xd7f48b1400000000, 0x9be014b000000000, + 0x791d9c3d00000000, 0x1e1d747000000000, 0xfce0fcfd00000000, + 0xd01da4eb00000000, 0x32e02c6600000000, 0x55e0c42b00000000, + 0xb71d4ca600000000, 0x0d1a750700000000, 0xefe7fd8a00000000, + 0x88e715c700000000, 0x6a1a9d4a00000000, 0x46e7c55c00000000, + 0xa41a4dd100000000, 0xc31aa59c00000000, 0x21e72d1100000000, + 0xf613a60500000000, 0x14ee2e8800000000, 0x73eec6c500000000, + 0x91134e4800000000, 0xbdee165e00000000, 0x5f139ed300000000, + 0x3813769e00000000, 0xdaeefe1300000000, 0x60e9c7b200000000, + 0x82144f3f00000000, 0xe514a77200000000, 0x07e92fff00000000, + 0x2b1477e900000000, 0xc9e9ff6400000000, 0xaee9172900000000, + 0x4c149fa400000000, 0x77c758bb00000000, 0x953ad03600000000, + 0xf23a387b00000000, 0x10c7b0f600000000, 0x3c3ae8e000000000, + 0xdec7606d00000000, 0xb9c7882000000000, 0x5b3a00ad00000000, + 0xe13d390c00000000, 0x03c0b18100000000, 0x64c059cc00000000, + 0x863dd14100000000, 0xaac0895700000000, 0x483d01da00000000, + 0x2f3de99700000000, 0xcdc0611a00000000, 0x1a34ea0e00000000, + 0xf8c9628300000000, 0x9fc98ace00000000, 0x7d34024300000000, + 0x51c95a5500000000, 0xb334d2d800000000, 0xd4343a9500000000, + 0x36c9b21800000000, 0x8cce8bb900000000, 0x6e33033400000000, + 0x0933eb7900000000, 0xebce63f400000000, 0xc7333be200000000, + 0x25ceb36f00000000, 0x42ce5b2200000000, 0xa033d3af00000000, + 0xec274c0b00000000, 0x0edac48600000000, 0x69da2ccb00000000, + 0x8b27a44600000000, 0xa7dafc5000000000, 0x452774dd00000000, + 0x22279c9000000000, 0xc0da141d00000000, 0x7add2dbc00000000, + 0x9820a53100000000, 0xff204d7c00000000, 0x1dddc5f100000000, + 0x31209de700000000, 0xd3dd156a00000000, 0xb4ddfd2700000000, + 0x562075aa00000000, 0x81d4febe00000000, 0x6329763300000000, + 0x04299e7e00000000, 0xe6d416f300000000, 0xca294ee500000000, + 0x28d4c66800000000, 0x4fd42e2500000000, 0xad29a6a800000000, + 0x172e9f0900000000, 0xf5d3178400000000, 0x92d3ffc900000000, + 0x702e774400000000, 0x5cd32f5200000000, 0xbe2ea7df00000000, + 0xd92e4f9200000000, 0x3bd3c71f00000000, 0xaf88c0ad00000000, + 0x4d75482000000000, 0x2a75a06d00000000, 0xc88828e000000000, + 0xe47570f600000000, 0x0688f87b00000000, 0x6188103600000000, + 0x837598bb00000000, 0x3972a11a00000000, 0xdb8f299700000000, + 0xbc8fc1da00000000, 0x5e72495700000000, 0x728f114100000000, + 0x907299cc00000000, 0xf772718100000000, 0x158ff90c00000000, + 0xc27b721800000000, 0x2086fa9500000000, 0x478612d800000000, + 0xa57b9a5500000000, 0x8986c24300000000, 0x6b7b4ace00000000, + 0x0c7ba28300000000, 0xee862a0e00000000, 0x548113af00000000, + 0xb67c9b2200000000, 0xd17c736f00000000, 0x3381fbe200000000, + 0x1f7ca3f400000000, 0xfd812b7900000000, 0x9a81c33400000000, + 0x787c4bb900000000, 0x3468d41d00000000, 0xd6955c9000000000, + 0xb195b4dd00000000, 0x53683c5000000000, 0x7f95644600000000, + 0x9d68eccb00000000, 0xfa68048600000000, 0x18958c0b00000000, + 0xa292b5aa00000000, 0x406f3d2700000000, 0x276fd56a00000000, + 0xc5925de700000000, 0xe96f05f100000000, 0x0b928d7c00000000, + 0x6c92653100000000, 0x8e6fedbc00000000, 0x599b66a800000000, + 0xbb66ee2500000000, 0xdc66066800000000, 0x3e9b8ee500000000, + 0x1266d6f300000000, 0xf09b5e7e00000000, 0x979bb63300000000, + 0x75663ebe00000000, 0xcf61071f00000000, 0x2d9c8f9200000000, + 0x4a9c67df00000000, 0xa861ef5200000000, 0x849cb74400000000, + 0x66613fc900000000, 0x0161d78400000000, 0xe39c5f0900000000, + 0xd84f981600000000, 0x3ab2109b00000000, 0x5db2f8d600000000, + 0xbf4f705b00000000, 0x93b2284d00000000, 0x714fa0c000000000, + 0x164f488d00000000, 0xf4b2c00000000000, 0x4eb5f9a100000000, + 0xac48712c00000000, 0xcb48996100000000, 0x29b511ec00000000, + 0x054849fa00000000, 0xe7b5c17700000000, 0x80b5293a00000000, + 0x6248a1b700000000, 0xb5bc2aa300000000, 0x5741a22e00000000, + 0x30414a6300000000, 0xd2bcc2ee00000000, 0xfe419af800000000, + 0x1cbc127500000000, 0x7bbcfa3800000000, 0x994172b500000000, + 0x23464b1400000000, 0xc1bbc39900000000, 0xa6bb2bd400000000, + 0x4446a35900000000, 0x68bbfb4f00000000, 0x8a4673c200000000, + 0xed469b8f00000000, 0x0fbb130200000000, 0x43af8ca600000000, + 0xa152042b00000000, 0xc652ec6600000000, 0x24af64eb00000000, + 0x08523cfd00000000, 0xeaafb47000000000, 0x8daf5c3d00000000, + 0x6f52d4b000000000, 0xd555ed1100000000, 0x37a8659c00000000, + 0x50a88dd100000000, 0xb255055c00000000, 0x9ea85d4a00000000, + 0x7c55d5c700000000, 0x1b553d8a00000000, 0xf9a8b50700000000, + 0x2e5c3e1300000000, 0xcca1b69e00000000, 0xaba15ed300000000, + 0x495cd65e00000000, 0x65a18e4800000000, 0x875c06c500000000, + 0xe05cee8800000000, 0x02a1660500000000, 0xb8a65fa400000000, + 0x5a5bd72900000000, 0x3d5b3f6400000000, 0xdfa6b7e900000000, + 0xf35befff00000000, 0x11a6677200000000, 0x76a68f3f00000000, + 0x945b07b200000000}, + {0x0000000000000000, 0xa90b894e00000000, 0x5217129d00000000, + 0xfb1c9bd300000000, 0xe52855e100000000, 0x4c23dcaf00000000, + 0xb73f477c00000000, 0x1e34ce3200000000, 0x8b57db1900000000, + 0x225c525700000000, 0xd940c98400000000, 0x704b40ca00000000, + 0x6e7f8ef800000000, 0xc77407b600000000, 0x3c689c6500000000, + 0x9563152b00000000, 0x16afb63300000000, 0xbfa43f7d00000000, + 0x44b8a4ae00000000, 0xedb32de000000000, 0xf387e3d200000000, + 0x5a8c6a9c00000000, 0xa190f14f00000000, 0x089b780100000000, + 0x9df86d2a00000000, 0x34f3e46400000000, 0xcfef7fb700000000, + 0x66e4f6f900000000, 0x78d038cb00000000, 0xd1dbb18500000000, + 0x2ac72a5600000000, 0x83cca31800000000, 0x2c5e6d6700000000, + 0x8555e42900000000, 0x7e497ffa00000000, 0xd742f6b400000000, + 0xc976388600000000, 0x607db1c800000000, 0x9b612a1b00000000, + 0x326aa35500000000, 0xa709b67e00000000, 0x0e023f3000000000, + 0xf51ea4e300000000, 0x5c152dad00000000, 0x4221e39f00000000, + 0xeb2a6ad100000000, 0x1036f10200000000, 0xb93d784c00000000, + 0x3af1db5400000000, 0x93fa521a00000000, 0x68e6c9c900000000, + 0xc1ed408700000000, 0xdfd98eb500000000, 0x76d207fb00000000, + 0x8dce9c2800000000, 0x24c5156600000000, 0xb1a6004d00000000, + 0x18ad890300000000, 0xe3b112d000000000, 0x4aba9b9e00000000, + 0x548e55ac00000000, 0xfd85dce200000000, 0x0699473100000000, + 0xaf92ce7f00000000, 0x58bcdace00000000, 0xf1b7538000000000, + 0x0aabc85300000000, 0xa3a0411d00000000, 0xbd948f2f00000000, + 0x149f066100000000, 0xef839db200000000, 0x468814fc00000000, + 0xd3eb01d700000000, 0x7ae0889900000000, 0x81fc134a00000000, + 0x28f79a0400000000, 0x36c3543600000000, 0x9fc8dd7800000000, + 0x64d446ab00000000, 0xcddfcfe500000000, 0x4e136cfd00000000, + 0xe718e5b300000000, 0x1c047e6000000000, 0xb50ff72e00000000, + 0xab3b391c00000000, 0x0230b05200000000, 0xf92c2b8100000000, + 0x5027a2cf00000000, 0xc544b7e400000000, 0x6c4f3eaa00000000, + 0x9753a57900000000, 0x3e582c3700000000, 0x206ce20500000000, + 0x89676b4b00000000, 0x727bf09800000000, 0xdb7079d600000000, + 0x74e2b7a900000000, 0xdde93ee700000000, 0x26f5a53400000000, + 0x8ffe2c7a00000000, 0x91cae24800000000, 0x38c16b0600000000, + 0xc3ddf0d500000000, 0x6ad6799b00000000, 0xffb56cb000000000, + 0x56bee5fe00000000, 0xada27e2d00000000, 0x04a9f76300000000, + 0x1a9d395100000000, 0xb396b01f00000000, 0x488a2bcc00000000, + 0xe181a28200000000, 0x624d019a00000000, 0xcb4688d400000000, + 0x305a130700000000, 0x99519a4900000000, 0x8765547b00000000, + 0x2e6edd3500000000, 0xd57246e600000000, 0x7c79cfa800000000, + 0xe91ada8300000000, 0x401153cd00000000, 0xbb0dc81e00000000, + 0x1206415000000000, 0x0c328f6200000000, 0xa539062c00000000, + 0x5e259dff00000000, 0xf72e14b100000000, 0xf17ec44600000000, + 0x58754d0800000000, 0xa369d6db00000000, 0x0a625f9500000000, + 0x145691a700000000, 0xbd5d18e900000000, 0x4641833a00000000, + 0xef4a0a7400000000, 0x7a291f5f00000000, 0xd322961100000000, + 0x283e0dc200000000, 0x8135848c00000000, 0x9f014abe00000000, + 0x360ac3f000000000, 0xcd16582300000000, 0x641dd16d00000000, + 0xe7d1727500000000, 0x4edafb3b00000000, 0xb5c660e800000000, + 0x1ccde9a600000000, 0x02f9279400000000, 0xabf2aeda00000000, + 0x50ee350900000000, 0xf9e5bc4700000000, 0x6c86a96c00000000, + 0xc58d202200000000, 0x3e91bbf100000000, 0x979a32bf00000000, + 0x89aefc8d00000000, 0x20a575c300000000, 0xdbb9ee1000000000, + 0x72b2675e00000000, 0xdd20a92100000000, 0x742b206f00000000, + 0x8f37bbbc00000000, 0x263c32f200000000, 0x3808fcc000000000, + 0x9103758e00000000, 0x6a1fee5d00000000, 0xc314671300000000, + 0x5677723800000000, 0xff7cfb7600000000, 0x046060a500000000, + 0xad6be9eb00000000, 0xb35f27d900000000, 0x1a54ae9700000000, + 0xe148354400000000, 0x4843bc0a00000000, 0xcb8f1f1200000000, + 0x6284965c00000000, 0x99980d8f00000000, 0x309384c100000000, + 0x2ea74af300000000, 0x87acc3bd00000000, 0x7cb0586e00000000, + 0xd5bbd12000000000, 0x40d8c40b00000000, 0xe9d34d4500000000, + 0x12cfd69600000000, 0xbbc45fd800000000, 0xa5f091ea00000000, + 0x0cfb18a400000000, 0xf7e7837700000000, 0x5eec0a3900000000, + 0xa9c21e8800000000, 0x00c997c600000000, 0xfbd50c1500000000, + 0x52de855b00000000, 0x4cea4b6900000000, 0xe5e1c22700000000, + 0x1efd59f400000000, 0xb7f6d0ba00000000, 0x2295c59100000000, + 0x8b9e4cdf00000000, 0x7082d70c00000000, 0xd9895e4200000000, + 0xc7bd907000000000, 0x6eb6193e00000000, 0x95aa82ed00000000, + 0x3ca10ba300000000, 0xbf6da8bb00000000, 0x166621f500000000, + 0xed7aba2600000000, 0x4471336800000000, 0x5a45fd5a00000000, + 0xf34e741400000000, 0x0852efc700000000, 0xa159668900000000, + 0x343a73a200000000, 0x9d31faec00000000, 0x662d613f00000000, + 0xcf26e87100000000, 0xd112264300000000, 0x7819af0d00000000, + 0x830534de00000000, 0x2a0ebd9000000000, 0x859c73ef00000000, + 0x2c97faa100000000, 0xd78b617200000000, 0x7e80e83c00000000, + 0x60b4260e00000000, 0xc9bfaf4000000000, 0x32a3349300000000, + 0x9ba8bddd00000000, 0x0ecba8f600000000, 0xa7c021b800000000, + 0x5cdcba6b00000000, 0xf5d7332500000000, 0xebe3fd1700000000, + 0x42e8745900000000, 0xb9f4ef8a00000000, 0x10ff66c400000000, + 0x9333c5dc00000000, 0x3a384c9200000000, 0xc124d74100000000, + 0x682f5e0f00000000, 0x761b903d00000000, 0xdf10197300000000, + 0x240c82a000000000, 0x8d070bee00000000, 0x18641ec500000000, + 0xb16f978b00000000, 0x4a730c5800000000, 0xe378851600000000, + 0xfd4c4b2400000000, 0x5447c26a00000000, 0xaf5b59b900000000, + 0x0650d0f700000000}, + {0x0000000000000000, 0x479244af00000000, 0xcf22f88500000000, + 0x88b0bc2a00000000, 0xdf4381d000000000, 0x98d1c57f00000000, + 0x1061795500000000, 0x57f33dfa00000000, 0xff81737a00000000, + 0xb81337d500000000, 0x30a38bff00000000, 0x7731cf5000000000, + 0x20c2f2aa00000000, 0x6750b60500000000, 0xefe00a2f00000000, + 0xa8724e8000000000, 0xfe03e7f400000000, 0xb991a35b00000000, + 0x31211f7100000000, 0x76b35bde00000000, 0x2140662400000000, + 0x66d2228b00000000, 0xee629ea100000000, 0xa9f0da0e00000000, + 0x0182948e00000000, 0x4610d02100000000, 0xcea06c0b00000000, + 0x893228a400000000, 0xdec1155e00000000, 0x995351f100000000, + 0x11e3eddb00000000, 0x5671a97400000000, 0xbd01bf3200000000, + 0xfa93fb9d00000000, 0x722347b700000000, 0x35b1031800000000, + 0x62423ee200000000, 0x25d07a4d00000000, 0xad60c66700000000, + 0xeaf282c800000000, 0x4280cc4800000000, 0x051288e700000000, + 0x8da234cd00000000, 0xca30706200000000, 0x9dc34d9800000000, + 0xda51093700000000, 0x52e1b51d00000000, 0x1573f1b200000000, + 0x430258c600000000, 0x04901c6900000000, 0x8c20a04300000000, + 0xcbb2e4ec00000000, 0x9c41d91600000000, 0xdbd39db900000000, + 0x5363219300000000, 0x14f1653c00000000, 0xbc832bbc00000000, + 0xfb116f1300000000, 0x73a1d33900000000, 0x3433979600000000, + 0x63c0aa6c00000000, 0x2452eec300000000, 0xace252e900000000, + 0xeb70164600000000, 0x7a037e6500000000, 0x3d913aca00000000, + 0xb52186e000000000, 0xf2b3c24f00000000, 0xa540ffb500000000, + 0xe2d2bb1a00000000, 0x6a62073000000000, 0x2df0439f00000000, + 0x85820d1f00000000, 0xc21049b000000000, 0x4aa0f59a00000000, + 0x0d32b13500000000, 0x5ac18ccf00000000, 0x1d53c86000000000, + 0x95e3744a00000000, 0xd27130e500000000, 0x8400999100000000, + 0xc392dd3e00000000, 0x4b22611400000000, 0x0cb025bb00000000, + 0x5b43184100000000, 0x1cd15cee00000000, 0x9461e0c400000000, + 0xd3f3a46b00000000, 0x7b81eaeb00000000, 0x3c13ae4400000000, + 0xb4a3126e00000000, 0xf33156c100000000, 0xa4c26b3b00000000, + 0xe3502f9400000000, 0x6be093be00000000, 0x2c72d71100000000, + 0xc702c15700000000, 0x809085f800000000, 0x082039d200000000, + 0x4fb27d7d00000000, 0x1841408700000000, 0x5fd3042800000000, + 0xd763b80200000000, 0x90f1fcad00000000, 0x3883b22d00000000, + 0x7f11f68200000000, 0xf7a14aa800000000, 0xb0330e0700000000, + 0xe7c033fd00000000, 0xa052775200000000, 0x28e2cb7800000000, + 0x6f708fd700000000, 0x390126a300000000, 0x7e93620c00000000, + 0xf623de2600000000, 0xb1b19a8900000000, 0xe642a77300000000, + 0xa1d0e3dc00000000, 0x29605ff600000000, 0x6ef21b5900000000, + 0xc68055d900000000, 0x8112117600000000, 0x09a2ad5c00000000, + 0x4e30e9f300000000, 0x19c3d40900000000, 0x5e5190a600000000, + 0xd6e12c8c00000000, 0x9173682300000000, 0xf406fcca00000000, + 0xb394b86500000000, 0x3b24044f00000000, 0x7cb640e000000000, + 0x2b457d1a00000000, 0x6cd739b500000000, 0xe467859f00000000, + 0xa3f5c13000000000, 0x0b878fb000000000, 0x4c15cb1f00000000, + 0xc4a5773500000000, 0x8337339a00000000, 0xd4c40e6000000000, + 0x93564acf00000000, 0x1be6f6e500000000, 0x5c74b24a00000000, + 0x0a051b3e00000000, 0x4d975f9100000000, 0xc527e3bb00000000, + 0x82b5a71400000000, 0xd5469aee00000000, 0x92d4de4100000000, + 0x1a64626b00000000, 0x5df626c400000000, 0xf584684400000000, + 0xb2162ceb00000000, 0x3aa690c100000000, 0x7d34d46e00000000, + 0x2ac7e99400000000, 0x6d55ad3b00000000, 0xe5e5111100000000, + 0xa27755be00000000, 0x490743f800000000, 0x0e95075700000000, + 0x8625bb7d00000000, 0xc1b7ffd200000000, 0x9644c22800000000, + 0xd1d6868700000000, 0x59663aad00000000, 0x1ef47e0200000000, + 0xb686308200000000, 0xf114742d00000000, 0x79a4c80700000000, + 0x3e368ca800000000, 0x69c5b15200000000, 0x2e57f5fd00000000, + 0xa6e749d700000000, 0xe1750d7800000000, 0xb704a40c00000000, + 0xf096e0a300000000, 0x78265c8900000000, 0x3fb4182600000000, + 0x684725dc00000000, 0x2fd5617300000000, 0xa765dd5900000000, + 0xe0f799f600000000, 0x4885d77600000000, 0x0f1793d900000000, + 0x87a72ff300000000, 0xc0356b5c00000000, 0x97c656a600000000, + 0xd054120900000000, 0x58e4ae2300000000, 0x1f76ea8c00000000, + 0x8e0582af00000000, 0xc997c60000000000, 0x41277a2a00000000, + 0x06b53e8500000000, 0x5146037f00000000, 0x16d447d000000000, + 0x9e64fbfa00000000, 0xd9f6bf5500000000, 0x7184f1d500000000, + 0x3616b57a00000000, 0xbea6095000000000, 0xf9344dff00000000, + 0xaec7700500000000, 0xe95534aa00000000, 0x61e5888000000000, + 0x2677cc2f00000000, 0x7006655b00000000, 0x379421f400000000, + 0xbf249dde00000000, 0xf8b6d97100000000, 0xaf45e48b00000000, + 0xe8d7a02400000000, 0x60671c0e00000000, 0x27f558a100000000, + 0x8f87162100000000, 0xc815528e00000000, 0x40a5eea400000000, + 0x0737aa0b00000000, 0x50c497f100000000, 0x1756d35e00000000, + 0x9fe66f7400000000, 0xd8742bdb00000000, 0x33043d9d00000000, + 0x7496793200000000, 0xfc26c51800000000, 0xbbb481b700000000, + 0xec47bc4d00000000, 0xabd5f8e200000000, 0x236544c800000000, + 0x64f7006700000000, 0xcc854ee700000000, 0x8b170a4800000000, + 0x03a7b66200000000, 0x4435f2cd00000000, 0x13c6cf3700000000, + 0x54548b9800000000, 0xdce437b200000000, 0x9b76731d00000000, + 0xcd07da6900000000, 0x8a959ec600000000, 0x022522ec00000000, + 0x45b7664300000000, 0x12445bb900000000, 0x55d61f1600000000, + 0xdd66a33c00000000, 0x9af4e79300000000, 0x3286a91300000000, + 0x7514edbc00000000, 0xfda4519600000000, 0xba36153900000000, + 0xedc528c300000000, 0xaa576c6c00000000, 0x22e7d04600000000, + 0x657594e900000000}}; + +#else /* W == 4 */ + +local const z_crc_t FAR crc_braid_table[][256] = { + {0x00000000, 0x65673b46, 0xcace768c, 0xafa94dca, 0x4eedeb59, + 0x2b8ad01f, 0x84239dd5, 0xe144a693, 0x9ddbd6b2, 0xf8bcedf4, + 0x5715a03e, 0x32729b78, 0xd3363deb, 0xb65106ad, 0x19f84b67, + 0x7c9f7021, 0xe0c6ab25, 0x85a19063, 0x2a08dda9, 0x4f6fe6ef, + 0xae2b407c, 0xcb4c7b3a, 0x64e536f0, 0x01820db6, 0x7d1d7d97, + 0x187a46d1, 0xb7d30b1b, 0xd2b4305d, 0x33f096ce, 0x5697ad88, + 0xf93ee042, 0x9c59db04, 0x1afc500b, 0x7f9b6b4d, 0xd0322687, + 0xb5551dc1, 0x5411bb52, 0x31768014, 0x9edfcdde, 0xfbb8f698, + 0x872786b9, 0xe240bdff, 0x4de9f035, 0x288ecb73, 0xc9ca6de0, + 0xacad56a6, 0x03041b6c, 0x6663202a, 0xfa3afb2e, 0x9f5dc068, + 0x30f48da2, 0x5593b6e4, 0xb4d71077, 0xd1b02b31, 0x7e1966fb, + 0x1b7e5dbd, 0x67e12d9c, 0x028616da, 0xad2f5b10, 0xc8486056, + 0x290cc6c5, 0x4c6bfd83, 0xe3c2b049, 0x86a58b0f, 0x35f8a016, + 0x509f9b50, 0xff36d69a, 0x9a51eddc, 0x7b154b4f, 0x1e727009, + 0xb1db3dc3, 0xd4bc0685, 0xa82376a4, 0xcd444de2, 0x62ed0028, + 0x078a3b6e, 0xe6ce9dfd, 0x83a9a6bb, 0x2c00eb71, 0x4967d037, + 0xd53e0b33, 0xb0593075, 0x1ff07dbf, 0x7a9746f9, 0x9bd3e06a, + 0xfeb4db2c, 0x511d96e6, 0x347aada0, 0x48e5dd81, 0x2d82e6c7, + 0x822bab0d, 0xe74c904b, 0x060836d8, 0x636f0d9e, 0xccc64054, + 0xa9a17b12, 0x2f04f01d, 0x4a63cb5b, 0xe5ca8691, 0x80adbdd7, + 0x61e91b44, 0x048e2002, 0xab276dc8, 0xce40568e, 0xb2df26af, + 0xd7b81de9, 0x78115023, 0x1d766b65, 0xfc32cdf6, 0x9955f6b0, + 0x36fcbb7a, 0x539b803c, 0xcfc25b38, 0xaaa5607e, 0x050c2db4, + 0x606b16f2, 0x812fb061, 0xe4488b27, 0x4be1c6ed, 0x2e86fdab, + 0x52198d8a, 0x377eb6cc, 0x98d7fb06, 0xfdb0c040, 0x1cf466d3, + 0x79935d95, 0xd63a105f, 0xb35d2b19, 0x6bf1402c, 0x0e967b6a, + 0xa13f36a0, 0xc4580de6, 0x251cab75, 0x407b9033, 0xefd2ddf9, + 0x8ab5e6bf, 0xf62a969e, 0x934dadd8, 0x3ce4e012, 0x5983db54, + 0xb8c77dc7, 0xdda04681, 0x72090b4b, 0x176e300d, 0x8b37eb09, + 0xee50d04f, 0x41f99d85, 0x249ea6c3, 0xc5da0050, 0xa0bd3b16, + 0x0f1476dc, 0x6a734d9a, 0x16ec3dbb, 0x738b06fd, 0xdc224b37, + 0xb9457071, 0x5801d6e2, 0x3d66eda4, 0x92cfa06e, 0xf7a89b28, + 0x710d1027, 0x146a2b61, 0xbbc366ab, 0xdea45ded, 0x3fe0fb7e, + 0x5a87c038, 0xf52e8df2, 0x9049b6b4, 0xecd6c695, 0x89b1fdd3, + 0x2618b019, 0x437f8b5f, 0xa23b2dcc, 0xc75c168a, 0x68f55b40, + 0x0d926006, 0x91cbbb02, 0xf4ac8044, 0x5b05cd8e, 0x3e62f6c8, + 0xdf26505b, 0xba416b1d, 0x15e826d7, 0x708f1d91, 0x0c106db0, + 0x697756f6, 0xc6de1b3c, 0xa3b9207a, 0x42fd86e9, 0x279abdaf, + 0x8833f065, 0xed54cb23, 0x5e09e03a, 0x3b6edb7c, 0x94c796b6, + 0xf1a0adf0, 0x10e40b63, 0x75833025, 0xda2a7def, 0xbf4d46a9, + 0xc3d23688, 0xa6b50dce, 0x091c4004, 0x6c7b7b42, 0x8d3fddd1, + 0xe858e697, 0x47f1ab5d, 0x2296901b, 0xbecf4b1f, 0xdba87059, + 0x74013d93, 0x116606d5, 0xf022a046, 0x95459b00, 0x3aecd6ca, + 0x5f8bed8c, 0x23149dad, 0x4673a6eb, 0xe9daeb21, 0x8cbdd067, + 0x6df976f4, 0x089e4db2, 0xa7370078, 0xc2503b3e, 0x44f5b031, + 0x21928b77, 0x8e3bc6bd, 0xeb5cfdfb, 0x0a185b68, 0x6f7f602e, + 0xc0d62de4, 0xa5b116a2, 0xd92e6683, 0xbc495dc5, 0x13e0100f, + 0x76872b49, 0x97c38dda, 0xf2a4b69c, 0x5d0dfb56, 0x386ac010, + 0xa4331b14, 0xc1542052, 0x6efd6d98, 0x0b9a56de, 0xeadef04d, + 0x8fb9cb0b, 0x201086c1, 0x4577bd87, 0x39e8cda6, 0x5c8ff6e0, + 0xf326bb2a, 0x9641806c, 0x770526ff, 0x12621db9, 0xbdcb5073, + 0xd8ac6b35}, + {0x00000000, 0xd7e28058, 0x74b406f1, 0xa35686a9, 0xe9680de2, + 0x3e8a8dba, 0x9ddc0b13, 0x4a3e8b4b, 0x09a11d85, 0xde439ddd, + 0x7d151b74, 0xaaf79b2c, 0xe0c91067, 0x372b903f, 0x947d1696, + 0x439f96ce, 0x13423b0a, 0xc4a0bb52, 0x67f63dfb, 0xb014bda3, + 0xfa2a36e8, 0x2dc8b6b0, 0x8e9e3019, 0x597cb041, 0x1ae3268f, + 0xcd01a6d7, 0x6e57207e, 0xb9b5a026, 0xf38b2b6d, 0x2469ab35, + 0x873f2d9c, 0x50ddadc4, 0x26847614, 0xf166f64c, 0x523070e5, + 0x85d2f0bd, 0xcfec7bf6, 0x180efbae, 0xbb587d07, 0x6cbafd5f, + 0x2f256b91, 0xf8c7ebc9, 0x5b916d60, 0x8c73ed38, 0xc64d6673, + 0x11afe62b, 0xb2f96082, 0x651be0da, 0x35c64d1e, 0xe224cd46, + 0x41724bef, 0x9690cbb7, 0xdcae40fc, 0x0b4cc0a4, 0xa81a460d, + 0x7ff8c655, 0x3c67509b, 0xeb85d0c3, 0x48d3566a, 0x9f31d632, + 0xd50f5d79, 0x02eddd21, 0xa1bb5b88, 0x7659dbd0, 0x4d08ec28, + 0x9aea6c70, 0x39bcead9, 0xee5e6a81, 0xa460e1ca, 0x73826192, + 0xd0d4e73b, 0x07366763, 0x44a9f1ad, 0x934b71f5, 0x301df75c, + 0xe7ff7704, 0xadc1fc4f, 0x7a237c17, 0xd975fabe, 0x0e977ae6, + 0x5e4ad722, 0x89a8577a, 0x2afed1d3, 0xfd1c518b, 0xb722dac0, + 0x60c05a98, 0xc396dc31, 0x14745c69, 0x57ebcaa7, 0x80094aff, + 0x235fcc56, 0xf4bd4c0e, 0xbe83c745, 0x6961471d, 0xca37c1b4, + 0x1dd541ec, 0x6b8c9a3c, 0xbc6e1a64, 0x1f389ccd, 0xc8da1c95, + 0x82e497de, 0x55061786, 0xf650912f, 0x21b21177, 0x622d87b9, + 0xb5cf07e1, 0x16998148, 0xc17b0110, 0x8b458a5b, 0x5ca70a03, + 0xfff18caa, 0x28130cf2, 0x78cea136, 0xaf2c216e, 0x0c7aa7c7, + 0xdb98279f, 0x91a6acd4, 0x46442c8c, 0xe512aa25, 0x32f02a7d, + 0x716fbcb3, 0xa68d3ceb, 0x05dbba42, 0xd2393a1a, 0x9807b151, + 0x4fe53109, 0xecb3b7a0, 0x3b5137f8, 0x9a11d850, 0x4df35808, + 0xeea5dea1, 0x39475ef9, 0x7379d5b2, 0xa49b55ea, 0x07cdd343, + 0xd02f531b, 0x93b0c5d5, 0x4452458d, 0xe704c324, 0x30e6437c, + 0x7ad8c837, 0xad3a486f, 0x0e6ccec6, 0xd98e4e9e, 0x8953e35a, + 0x5eb16302, 0xfde7e5ab, 0x2a0565f3, 0x603beeb8, 0xb7d96ee0, + 0x148fe849, 0xc36d6811, 0x80f2fedf, 0x57107e87, 0xf446f82e, + 0x23a47876, 0x699af33d, 0xbe787365, 0x1d2ef5cc, 0xcacc7594, + 0xbc95ae44, 0x6b772e1c, 0xc821a8b5, 0x1fc328ed, 0x55fda3a6, + 0x821f23fe, 0x2149a557, 0xf6ab250f, 0xb534b3c1, 0x62d63399, + 0xc180b530, 0x16623568, 0x5c5cbe23, 0x8bbe3e7b, 0x28e8b8d2, + 0xff0a388a, 0xafd7954e, 0x78351516, 0xdb6393bf, 0x0c8113e7, + 0x46bf98ac, 0x915d18f4, 0x320b9e5d, 0xe5e91e05, 0xa67688cb, + 0x71940893, 0xd2c28e3a, 0x05200e62, 0x4f1e8529, 0x98fc0571, + 0x3baa83d8, 0xec480380, 0xd7193478, 0x00fbb420, 0xa3ad3289, + 0x744fb2d1, 0x3e71399a, 0xe993b9c2, 0x4ac53f6b, 0x9d27bf33, + 0xdeb829fd, 0x095aa9a5, 0xaa0c2f0c, 0x7deeaf54, 0x37d0241f, + 0xe032a447, 0x436422ee, 0x9486a2b6, 0xc45b0f72, 0x13b98f2a, + 0xb0ef0983, 0x670d89db, 0x2d330290, 0xfad182c8, 0x59870461, + 0x8e658439, 0xcdfa12f7, 0x1a1892af, 0xb94e1406, 0x6eac945e, + 0x24921f15, 0xf3709f4d, 0x502619e4, 0x87c499bc, 0xf19d426c, + 0x267fc234, 0x8529449d, 0x52cbc4c5, 0x18f54f8e, 0xcf17cfd6, + 0x6c41497f, 0xbba3c927, 0xf83c5fe9, 0x2fdedfb1, 0x8c885918, + 0x5b6ad940, 0x1154520b, 0xc6b6d253, 0x65e054fa, 0xb202d4a2, + 0xe2df7966, 0x353df93e, 0x966b7f97, 0x4189ffcf, 0x0bb77484, + 0xdc55f4dc, 0x7f037275, 0xa8e1f22d, 0xeb7e64e3, 0x3c9ce4bb, + 0x9fca6212, 0x4828e24a, 0x02166901, 0xd5f4e959, 0x76a26ff0, + 0xa140efa8}, + {0x00000000, 0xef52b6e1, 0x05d46b83, 0xea86dd62, 0x0ba8d706, + 0xe4fa61e7, 0x0e7cbc85, 0xe12e0a64, 0x1751ae0c, 0xf80318ed, + 0x1285c58f, 0xfdd7736e, 0x1cf9790a, 0xf3abcfeb, 0x192d1289, + 0xf67fa468, 0x2ea35c18, 0xc1f1eaf9, 0x2b77379b, 0xc425817a, + 0x250b8b1e, 0xca593dff, 0x20dfe09d, 0xcf8d567c, 0x39f2f214, + 0xd6a044f5, 0x3c269997, 0xd3742f76, 0x325a2512, 0xdd0893f3, + 0x378e4e91, 0xd8dcf870, 0x5d46b830, 0xb2140ed1, 0x5892d3b3, + 0xb7c06552, 0x56ee6f36, 0xb9bcd9d7, 0x533a04b5, 0xbc68b254, + 0x4a17163c, 0xa545a0dd, 0x4fc37dbf, 0xa091cb5e, 0x41bfc13a, + 0xaeed77db, 0x446baab9, 0xab391c58, 0x73e5e428, 0x9cb752c9, + 0x76318fab, 0x9963394a, 0x784d332e, 0x971f85cf, 0x7d9958ad, + 0x92cbee4c, 0x64b44a24, 0x8be6fcc5, 0x616021a7, 0x8e329746, + 0x6f1c9d22, 0x804e2bc3, 0x6ac8f6a1, 0x859a4040, 0xba8d7060, + 0x55dfc681, 0xbf591be3, 0x500bad02, 0xb125a766, 0x5e771187, + 0xb4f1cce5, 0x5ba37a04, 0xaddcde6c, 0x428e688d, 0xa808b5ef, + 0x475a030e, 0xa674096a, 0x4926bf8b, 0xa3a062e9, 0x4cf2d408, + 0x942e2c78, 0x7b7c9a99, 0x91fa47fb, 0x7ea8f11a, 0x9f86fb7e, + 0x70d44d9f, 0x9a5290fd, 0x7500261c, 0x837f8274, 0x6c2d3495, + 0x86abe9f7, 0x69f95f16, 0x88d75572, 0x6785e393, 0x8d033ef1, + 0x62518810, 0xe7cbc850, 0x08997eb1, 0xe21fa3d3, 0x0d4d1532, + 0xec631f56, 0x0331a9b7, 0xe9b774d5, 0x06e5c234, 0xf09a665c, + 0x1fc8d0bd, 0xf54e0ddf, 0x1a1cbb3e, 0xfb32b15a, 0x146007bb, + 0xfee6dad9, 0x11b46c38, 0xc9689448, 0x263a22a9, 0xccbcffcb, + 0x23ee492a, 0xc2c0434e, 0x2d92f5af, 0xc71428cd, 0x28469e2c, + 0xde393a44, 0x316b8ca5, 0xdbed51c7, 0x34bfe726, 0xd591ed42, + 0x3ac35ba3, 0xd04586c1, 0x3f173020, 0xae6be681, 0x41395060, + 0xabbf8d02, 0x44ed3be3, 0xa5c33187, 0x4a918766, 0xa0175a04, + 0x4f45ece5, 0xb93a488d, 0x5668fe6c, 0xbcee230e, 0x53bc95ef, + 0xb2929f8b, 0x5dc0296a, 0xb746f408, 0x581442e9, 0x80c8ba99, + 0x6f9a0c78, 0x851cd11a, 0x6a4e67fb, 0x8b606d9f, 0x6432db7e, + 0x8eb4061c, 0x61e6b0fd, 0x97991495, 0x78cba274, 0x924d7f16, + 0x7d1fc9f7, 0x9c31c393, 0x73637572, 0x99e5a810, 0x76b71ef1, + 0xf32d5eb1, 0x1c7fe850, 0xf6f93532, 0x19ab83d3, 0xf88589b7, + 0x17d73f56, 0xfd51e234, 0x120354d5, 0xe47cf0bd, 0x0b2e465c, + 0xe1a89b3e, 0x0efa2ddf, 0xefd427bb, 0x0086915a, 0xea004c38, + 0x0552fad9, 0xdd8e02a9, 0x32dcb448, 0xd85a692a, 0x3708dfcb, + 0xd626d5af, 0x3974634e, 0xd3f2be2c, 0x3ca008cd, 0xcadfaca5, + 0x258d1a44, 0xcf0bc726, 0x205971c7, 0xc1777ba3, 0x2e25cd42, + 0xc4a31020, 0x2bf1a6c1, 0x14e696e1, 0xfbb42000, 0x1132fd62, + 0xfe604b83, 0x1f4e41e7, 0xf01cf706, 0x1a9a2a64, 0xf5c89c85, + 0x03b738ed, 0xece58e0c, 0x0663536e, 0xe931e58f, 0x081fefeb, + 0xe74d590a, 0x0dcb8468, 0xe2993289, 0x3a45caf9, 0xd5177c18, + 0x3f91a17a, 0xd0c3179b, 0x31ed1dff, 0xdebfab1e, 0x3439767c, + 0xdb6bc09d, 0x2d1464f5, 0xc246d214, 0x28c00f76, 0xc792b997, + 0x26bcb3f3, 0xc9ee0512, 0x2368d870, 0xcc3a6e91, 0x49a02ed1, + 0xa6f29830, 0x4c744552, 0xa326f3b3, 0x4208f9d7, 0xad5a4f36, + 0x47dc9254, 0xa88e24b5, 0x5ef180dd, 0xb1a3363c, 0x5b25eb5e, + 0xb4775dbf, 0x555957db, 0xba0be13a, 0x508d3c58, 0xbfdf8ab9, + 0x670372c9, 0x8851c428, 0x62d7194a, 0x8d85afab, 0x6caba5cf, + 0x83f9132e, 0x697fce4c, 0x862d78ad, 0x7052dcc5, 0x9f006a24, + 0x7586b746, 0x9ad401a7, 0x7bfa0bc3, 0x94a8bd22, 0x7e2e6040, + 0x917cd6a1}, + {0x00000000, 0x87a6cb43, 0xd43c90c7, 0x539a5b84, 0x730827cf, + 0xf4aeec8c, 0xa734b708, 0x20927c4b, 0xe6104f9e, 0x61b684dd, + 0x322cdf59, 0xb58a141a, 0x95186851, 0x12bea312, 0x4124f896, + 0xc68233d5, 0x1751997d, 0x90f7523e, 0xc36d09ba, 0x44cbc2f9, + 0x6459beb2, 0xe3ff75f1, 0xb0652e75, 0x37c3e536, 0xf141d6e3, + 0x76e71da0, 0x257d4624, 0xa2db8d67, 0x8249f12c, 0x05ef3a6f, + 0x567561eb, 0xd1d3aaa8, 0x2ea332fa, 0xa905f9b9, 0xfa9fa23d, + 0x7d39697e, 0x5dab1535, 0xda0dde76, 0x899785f2, 0x0e314eb1, + 0xc8b37d64, 0x4f15b627, 0x1c8feda3, 0x9b2926e0, 0xbbbb5aab, + 0x3c1d91e8, 0x6f87ca6c, 0xe821012f, 0x39f2ab87, 0xbe5460c4, + 0xedce3b40, 0x6a68f003, 0x4afa8c48, 0xcd5c470b, 0x9ec61c8f, + 0x1960d7cc, 0xdfe2e419, 0x58442f5a, 0x0bde74de, 0x8c78bf9d, + 0xaceac3d6, 0x2b4c0895, 0x78d65311, 0xff709852, 0x5d4665f4, + 0xdae0aeb7, 0x897af533, 0x0edc3e70, 0x2e4e423b, 0xa9e88978, + 0xfa72d2fc, 0x7dd419bf, 0xbb562a6a, 0x3cf0e129, 0x6f6abaad, + 0xe8cc71ee, 0xc85e0da5, 0x4ff8c6e6, 0x1c629d62, 0x9bc45621, + 0x4a17fc89, 0xcdb137ca, 0x9e2b6c4e, 0x198da70d, 0x391fdb46, + 0xbeb91005, 0xed234b81, 0x6a8580c2, 0xac07b317, 0x2ba17854, + 0x783b23d0, 0xff9de893, 0xdf0f94d8, 0x58a95f9b, 0x0b33041f, + 0x8c95cf5c, 0x73e5570e, 0xf4439c4d, 0xa7d9c7c9, 0x207f0c8a, + 0x00ed70c1, 0x874bbb82, 0xd4d1e006, 0x53772b45, 0x95f51890, + 0x1253d3d3, 0x41c98857, 0xc66f4314, 0xe6fd3f5f, 0x615bf41c, + 0x32c1af98, 0xb56764db, 0x64b4ce73, 0xe3120530, 0xb0885eb4, + 0x372e95f7, 0x17bce9bc, 0x901a22ff, 0xc380797b, 0x4426b238, + 0x82a481ed, 0x05024aae, 0x5698112a, 0xd13eda69, 0xf1aca622, + 0x760a6d61, 0x259036e5, 0xa236fda6, 0xba8ccbe8, 0x3d2a00ab, + 0x6eb05b2f, 0xe916906c, 0xc984ec27, 0x4e222764, 0x1db87ce0, + 0x9a1eb7a3, 0x5c9c8476, 0xdb3a4f35, 0x88a014b1, 0x0f06dff2, + 0x2f94a3b9, 0xa83268fa, 0xfba8337e, 0x7c0ef83d, 0xaddd5295, + 0x2a7b99d6, 0x79e1c252, 0xfe470911, 0xded5755a, 0x5973be19, + 0x0ae9e59d, 0x8d4f2ede, 0x4bcd1d0b, 0xcc6bd648, 0x9ff18dcc, + 0x1857468f, 0x38c53ac4, 0xbf63f187, 0xecf9aa03, 0x6b5f6140, + 0x942ff912, 0x13893251, 0x401369d5, 0xc7b5a296, 0xe727dedd, + 0x6081159e, 0x331b4e1a, 0xb4bd8559, 0x723fb68c, 0xf5997dcf, + 0xa603264b, 0x21a5ed08, 0x01379143, 0x86915a00, 0xd50b0184, + 0x52adcac7, 0x837e606f, 0x04d8ab2c, 0x5742f0a8, 0xd0e43beb, + 0xf07647a0, 0x77d08ce3, 0x244ad767, 0xa3ec1c24, 0x656e2ff1, + 0xe2c8e4b2, 0xb152bf36, 0x36f47475, 0x1666083e, 0x91c0c37d, + 0xc25a98f9, 0x45fc53ba, 0xe7caae1c, 0x606c655f, 0x33f63edb, + 0xb450f598, 0x94c289d3, 0x13644290, 0x40fe1914, 0xc758d257, + 0x01dae182, 0x867c2ac1, 0xd5e67145, 0x5240ba06, 0x72d2c64d, + 0xf5740d0e, 0xa6ee568a, 0x21489dc9, 0xf09b3761, 0x773dfc22, + 0x24a7a7a6, 0xa3016ce5, 0x839310ae, 0x0435dbed, 0x57af8069, + 0xd0094b2a, 0x168b78ff, 0x912db3bc, 0xc2b7e838, 0x4511237b, + 0x65835f30, 0xe2259473, 0xb1bfcff7, 0x361904b4, 0xc9699ce6, + 0x4ecf57a5, 0x1d550c21, 0x9af3c762, 0xba61bb29, 0x3dc7706a, + 0x6e5d2bee, 0xe9fbe0ad, 0x2f79d378, 0xa8df183b, 0xfb4543bf, + 0x7ce388fc, 0x5c71f4b7, 0xdbd73ff4, 0x884d6470, 0x0febaf33, + 0xde38059b, 0x599eced8, 0x0a04955c, 0x8da25e1f, 0xad302254, + 0x2a96e917, 0x790cb293, 0xfeaa79d0, 0x38284a05, 0xbf8e8146, + 0xec14dac2, 0x6bb21181, 0x4b206dca, 0xcc86a689, 0x9f1cfd0d, + 0x18ba364e}}; + +local const z_word_t FAR crc_braid_big_table[][256] = { + {0x00000000, 0x43cba687, 0xc7903cd4, 0x845b9a53, 0xcf270873, + 0x8cecaef4, 0x08b734a7, 0x4b7c9220, 0x9e4f10e6, 0xdd84b661, + 0x59df2c32, 0x1a148ab5, 0x51681895, 0x12a3be12, 0x96f82441, + 0xd53382c6, 0x7d995117, 0x3e52f790, 0xba096dc3, 0xf9c2cb44, + 0xb2be5964, 0xf175ffe3, 0x752e65b0, 0x36e5c337, 0xe3d641f1, + 0xa01de776, 0x24467d25, 0x678ddba2, 0x2cf14982, 0x6f3aef05, + 0xeb617556, 0xa8aad3d1, 0xfa32a32e, 0xb9f905a9, 0x3da29ffa, + 0x7e69397d, 0x3515ab5d, 0x76de0dda, 0xf2859789, 0xb14e310e, + 0x647db3c8, 0x27b6154f, 0xa3ed8f1c, 0xe026299b, 0xab5abbbb, + 0xe8911d3c, 0x6cca876f, 0x2f0121e8, 0x87abf239, 0xc46054be, + 0x403bceed, 0x03f0686a, 0x488cfa4a, 0x0b475ccd, 0x8f1cc69e, + 0xccd76019, 0x19e4e2df, 0x5a2f4458, 0xde74de0b, 0x9dbf788c, + 0xd6c3eaac, 0x95084c2b, 0x1153d678, 0x529870ff, 0xf465465d, + 0xb7aee0da, 0x33f57a89, 0x703edc0e, 0x3b424e2e, 0x7889e8a9, + 0xfcd272fa, 0xbf19d47d, 0x6a2a56bb, 0x29e1f03c, 0xadba6a6f, + 0xee71cce8, 0xa50d5ec8, 0xe6c6f84f, 0x629d621c, 0x2156c49b, + 0x89fc174a, 0xca37b1cd, 0x4e6c2b9e, 0x0da78d19, 0x46db1f39, + 0x0510b9be, 0x814b23ed, 0xc280856a, 0x17b307ac, 0x5478a12b, + 0xd0233b78, 0x93e89dff, 0xd8940fdf, 0x9b5fa958, 0x1f04330b, + 0x5ccf958c, 0x0e57e573, 0x4d9c43f4, 0xc9c7d9a7, 0x8a0c7f20, + 0xc170ed00, 0x82bb4b87, 0x06e0d1d4, 0x452b7753, 0x9018f595, + 0xd3d35312, 0x5788c941, 0x14436fc6, 0x5f3ffde6, 0x1cf45b61, + 0x98afc132, 0xdb6467b5, 0x73ceb464, 0x300512e3, 0xb45e88b0, + 0xf7952e37, 0xbce9bc17, 0xff221a90, 0x7b7980c3, 0x38b22644, + 0xed81a482, 0xae4a0205, 0x2a119856, 0x69da3ed1, 0x22a6acf1, + 0x616d0a76, 0xe5369025, 0xa6fd36a2, 0xe8cb8cba, 0xab002a3d, + 0x2f5bb06e, 0x6c9016e9, 0x27ec84c9, 0x6427224e, 0xe07cb81d, + 0xa3b71e9a, 0x76849c5c, 0x354f3adb, 0xb114a088, 0xf2df060f, + 0xb9a3942f, 0xfa6832a8, 0x7e33a8fb, 0x3df80e7c, 0x9552ddad, + 0xd6997b2a, 0x52c2e179, 0x110947fe, 0x5a75d5de, 0x19be7359, + 0x9de5e90a, 0xde2e4f8d, 0x0b1dcd4b, 0x48d66bcc, 0xcc8df19f, + 0x8f465718, 0xc43ac538, 0x87f163bf, 0x03aaf9ec, 0x40615f6b, + 0x12f92f94, 0x51328913, 0xd5691340, 0x96a2b5c7, 0xddde27e7, + 0x9e158160, 0x1a4e1b33, 0x5985bdb4, 0x8cb63f72, 0xcf7d99f5, + 0x4b2603a6, 0x08eda521, 0x43913701, 0x005a9186, 0x84010bd5, + 0xc7caad52, 0x6f607e83, 0x2cabd804, 0xa8f04257, 0xeb3be4d0, + 0xa04776f0, 0xe38cd077, 0x67d74a24, 0x241ceca3, 0xf12f6e65, + 0xb2e4c8e2, 0x36bf52b1, 0x7574f436, 0x3e086616, 0x7dc3c091, + 0xf9985ac2, 0xba53fc45, 0x1caecae7, 0x5f656c60, 0xdb3ef633, + 0x98f550b4, 0xd389c294, 0x90426413, 0x1419fe40, 0x57d258c7, + 0x82e1da01, 0xc12a7c86, 0x4571e6d5, 0x06ba4052, 0x4dc6d272, + 0x0e0d74f5, 0x8a56eea6, 0xc99d4821, 0x61379bf0, 0x22fc3d77, + 0xa6a7a724, 0xe56c01a3, 0xae109383, 0xeddb3504, 0x6980af57, + 0x2a4b09d0, 0xff788b16, 0xbcb32d91, 0x38e8b7c2, 0x7b231145, + 0x305f8365, 0x739425e2, 0xf7cfbfb1, 0xb4041936, 0xe69c69c9, + 0xa557cf4e, 0x210c551d, 0x62c7f39a, 0x29bb61ba, 0x6a70c73d, + 0xee2b5d6e, 0xade0fbe9, 0x78d3792f, 0x3b18dfa8, 0xbf4345fb, + 0xfc88e37c, 0xb7f4715c, 0xf43fd7db, 0x70644d88, 0x33afeb0f, + 0x9b0538de, 0xd8ce9e59, 0x5c95040a, 0x1f5ea28d, 0x542230ad, + 0x17e9962a, 0x93b20c79, 0xd079aafe, 0x054a2838, 0x46818ebf, + 0xc2da14ec, 0x8111b26b, 0xca6d204b, 0x89a686cc, 0x0dfd1c9f, + 0x4e36ba18}, + {0x00000000, 0xe1b652ef, 0x836bd405, 0x62dd86ea, 0x06d7a80b, + 0xe761fae4, 0x85bc7c0e, 0x640a2ee1, 0x0cae5117, 0xed1803f8, + 0x8fc58512, 0x6e73d7fd, 0x0a79f91c, 0xebcfabf3, 0x89122d19, + 0x68a47ff6, 0x185ca32e, 0xf9eaf1c1, 0x9b37772b, 0x7a8125c4, + 0x1e8b0b25, 0xff3d59ca, 0x9de0df20, 0x7c568dcf, 0x14f2f239, + 0xf544a0d6, 0x9799263c, 0x762f74d3, 0x12255a32, 0xf39308dd, + 0x914e8e37, 0x70f8dcd8, 0x30b8465d, 0xd10e14b2, 0xb3d39258, + 0x5265c0b7, 0x366fee56, 0xd7d9bcb9, 0xb5043a53, 0x54b268bc, + 0x3c16174a, 0xdda045a5, 0xbf7dc34f, 0x5ecb91a0, 0x3ac1bf41, + 0xdb77edae, 0xb9aa6b44, 0x581c39ab, 0x28e4e573, 0xc952b79c, + 0xab8f3176, 0x4a396399, 0x2e334d78, 0xcf851f97, 0xad58997d, + 0x4ceecb92, 0x244ab464, 0xc5fce68b, 0xa7216061, 0x4697328e, + 0x229d1c6f, 0xc32b4e80, 0xa1f6c86a, 0x40409a85, 0x60708dba, + 0x81c6df55, 0xe31b59bf, 0x02ad0b50, 0x66a725b1, 0x8711775e, + 0xe5ccf1b4, 0x047aa35b, 0x6cdedcad, 0x8d688e42, 0xefb508a8, + 0x0e035a47, 0x6a0974a6, 0x8bbf2649, 0xe962a0a3, 0x08d4f24c, + 0x782c2e94, 0x999a7c7b, 0xfb47fa91, 0x1af1a87e, 0x7efb869f, + 0x9f4dd470, 0xfd90529a, 0x1c260075, 0x74827f83, 0x95342d6c, + 0xf7e9ab86, 0x165ff969, 0x7255d788, 0x93e38567, 0xf13e038d, + 0x10885162, 0x50c8cbe7, 0xb17e9908, 0xd3a31fe2, 0x32154d0d, + 0x561f63ec, 0xb7a93103, 0xd574b7e9, 0x34c2e506, 0x5c669af0, + 0xbdd0c81f, 0xdf0d4ef5, 0x3ebb1c1a, 0x5ab132fb, 0xbb076014, + 0xd9dae6fe, 0x386cb411, 0x489468c9, 0xa9223a26, 0xcbffbccc, + 0x2a49ee23, 0x4e43c0c2, 0xaff5922d, 0xcd2814c7, 0x2c9e4628, + 0x443a39de, 0xa58c6b31, 0xc751eddb, 0x26e7bf34, 0x42ed91d5, + 0xa35bc33a, 0xc18645d0, 0x2030173f, 0x81e66bae, 0x60503941, + 0x028dbfab, 0xe33bed44, 0x8731c3a5, 0x6687914a, 0x045a17a0, + 0xe5ec454f, 0x8d483ab9, 0x6cfe6856, 0x0e23eebc, 0xef95bc53, + 0x8b9f92b2, 0x6a29c05d, 0x08f446b7, 0xe9421458, 0x99bac880, + 0x780c9a6f, 0x1ad11c85, 0xfb674e6a, 0x9f6d608b, 0x7edb3264, + 0x1c06b48e, 0xfdb0e661, 0x95149997, 0x74a2cb78, 0x167f4d92, + 0xf7c91f7d, 0x93c3319c, 0x72756373, 0x10a8e599, 0xf11eb776, + 0xb15e2df3, 0x50e87f1c, 0x3235f9f6, 0xd383ab19, 0xb78985f8, + 0x563fd717, 0x34e251fd, 0xd5540312, 0xbdf07ce4, 0x5c462e0b, + 0x3e9ba8e1, 0xdf2dfa0e, 0xbb27d4ef, 0x5a918600, 0x384c00ea, + 0xd9fa5205, 0xa9028edd, 0x48b4dc32, 0x2a695ad8, 0xcbdf0837, + 0xafd526d6, 0x4e637439, 0x2cbef2d3, 0xcd08a03c, 0xa5acdfca, + 0x441a8d25, 0x26c70bcf, 0xc7715920, 0xa37b77c1, 0x42cd252e, + 0x2010a3c4, 0xc1a6f12b, 0xe196e614, 0x0020b4fb, 0x62fd3211, + 0x834b60fe, 0xe7414e1f, 0x06f71cf0, 0x642a9a1a, 0x859cc8f5, + 0xed38b703, 0x0c8ee5ec, 0x6e536306, 0x8fe531e9, 0xebef1f08, + 0x0a594de7, 0x6884cb0d, 0x893299e2, 0xf9ca453a, 0x187c17d5, + 0x7aa1913f, 0x9b17c3d0, 0xff1ded31, 0x1eabbfde, 0x7c763934, + 0x9dc06bdb, 0xf564142d, 0x14d246c2, 0x760fc028, 0x97b992c7, + 0xf3b3bc26, 0x1205eec9, 0x70d86823, 0x916e3acc, 0xd12ea049, + 0x3098f2a6, 0x5245744c, 0xb3f326a3, 0xd7f90842, 0x364f5aad, + 0x5492dc47, 0xb5248ea8, 0xdd80f15e, 0x3c36a3b1, 0x5eeb255b, + 0xbf5d77b4, 0xdb575955, 0x3ae10bba, 0x583c8d50, 0xb98adfbf, + 0xc9720367, 0x28c45188, 0x4a19d762, 0xabaf858d, 0xcfa5ab6c, + 0x2e13f983, 0x4cce7f69, 0xad782d86, 0xc5dc5270, 0x246a009f, + 0x46b78675, 0xa701d49a, 0xc30bfa7b, 0x22bda894, 0x40602e7e, + 0xa1d67c91}, + {0x00000000, 0x5880e2d7, 0xf106b474, 0xa98656a3, 0xe20d68e9, + 0xba8d8a3e, 0x130bdc9d, 0x4b8b3e4a, 0x851da109, 0xdd9d43de, + 0x741b157d, 0x2c9bf7aa, 0x6710c9e0, 0x3f902b37, 0x96167d94, + 0xce969f43, 0x0a3b4213, 0x52bba0c4, 0xfb3df667, 0xa3bd14b0, + 0xe8362afa, 0xb0b6c82d, 0x19309e8e, 0x41b07c59, 0x8f26e31a, + 0xd7a601cd, 0x7e20576e, 0x26a0b5b9, 0x6d2b8bf3, 0x35ab6924, + 0x9c2d3f87, 0xc4addd50, 0x14768426, 0x4cf666f1, 0xe5703052, + 0xbdf0d285, 0xf67beccf, 0xaefb0e18, 0x077d58bb, 0x5ffdba6c, + 0x916b252f, 0xc9ebc7f8, 0x606d915b, 0x38ed738c, 0x73664dc6, + 0x2be6af11, 0x8260f9b2, 0xdae01b65, 0x1e4dc635, 0x46cd24e2, + 0xef4b7241, 0xb7cb9096, 0xfc40aedc, 0xa4c04c0b, 0x0d461aa8, + 0x55c6f87f, 0x9b50673c, 0xc3d085eb, 0x6a56d348, 0x32d6319f, + 0x795d0fd5, 0x21dded02, 0x885bbba1, 0xd0db5976, 0x28ec084d, + 0x706cea9a, 0xd9eabc39, 0x816a5eee, 0xcae160a4, 0x92618273, + 0x3be7d4d0, 0x63673607, 0xadf1a944, 0xf5714b93, 0x5cf71d30, + 0x0477ffe7, 0x4ffcc1ad, 0x177c237a, 0xbefa75d9, 0xe67a970e, + 0x22d74a5e, 0x7a57a889, 0xd3d1fe2a, 0x8b511cfd, 0xc0da22b7, + 0x985ac060, 0x31dc96c3, 0x695c7414, 0xa7caeb57, 0xff4a0980, + 0x56cc5f23, 0x0e4cbdf4, 0x45c783be, 0x1d476169, 0xb4c137ca, + 0xec41d51d, 0x3c9a8c6b, 0x641a6ebc, 0xcd9c381f, 0x951cdac8, + 0xde97e482, 0x86170655, 0x2f9150f6, 0x7711b221, 0xb9872d62, + 0xe107cfb5, 0x48819916, 0x10017bc1, 0x5b8a458b, 0x030aa75c, + 0xaa8cf1ff, 0xf20c1328, 0x36a1ce78, 0x6e212caf, 0xc7a77a0c, + 0x9f2798db, 0xd4aca691, 0x8c2c4446, 0x25aa12e5, 0x7d2af032, + 0xb3bc6f71, 0xeb3c8da6, 0x42badb05, 0x1a3a39d2, 0x51b10798, + 0x0931e54f, 0xa0b7b3ec, 0xf837513b, 0x50d8119a, 0x0858f34d, + 0xa1dea5ee, 0xf95e4739, 0xb2d57973, 0xea559ba4, 0x43d3cd07, + 0x1b532fd0, 0xd5c5b093, 0x8d455244, 0x24c304e7, 0x7c43e630, + 0x37c8d87a, 0x6f483aad, 0xc6ce6c0e, 0x9e4e8ed9, 0x5ae35389, + 0x0263b15e, 0xabe5e7fd, 0xf365052a, 0xb8ee3b60, 0xe06ed9b7, + 0x49e88f14, 0x11686dc3, 0xdffef280, 0x877e1057, 0x2ef846f4, + 0x7678a423, 0x3df39a69, 0x657378be, 0xccf52e1d, 0x9475ccca, + 0x44ae95bc, 0x1c2e776b, 0xb5a821c8, 0xed28c31f, 0xa6a3fd55, + 0xfe231f82, 0x57a54921, 0x0f25abf6, 0xc1b334b5, 0x9933d662, + 0x30b580c1, 0x68356216, 0x23be5c5c, 0x7b3ebe8b, 0xd2b8e828, + 0x8a380aff, 0x4e95d7af, 0x16153578, 0xbf9363db, 0xe713810c, + 0xac98bf46, 0xf4185d91, 0x5d9e0b32, 0x051ee9e5, 0xcb8876a6, + 0x93089471, 0x3a8ec2d2, 0x620e2005, 0x29851e4f, 0x7105fc98, + 0xd883aa3b, 0x800348ec, 0x783419d7, 0x20b4fb00, 0x8932ada3, + 0xd1b24f74, 0x9a39713e, 0xc2b993e9, 0x6b3fc54a, 0x33bf279d, + 0xfd29b8de, 0xa5a95a09, 0x0c2f0caa, 0x54afee7d, 0x1f24d037, + 0x47a432e0, 0xee226443, 0xb6a28694, 0x720f5bc4, 0x2a8fb913, + 0x8309efb0, 0xdb890d67, 0x9002332d, 0xc882d1fa, 0x61048759, + 0x3984658e, 0xf712facd, 0xaf92181a, 0x06144eb9, 0x5e94ac6e, + 0x151f9224, 0x4d9f70f3, 0xe4192650, 0xbc99c487, 0x6c429df1, + 0x34c27f26, 0x9d442985, 0xc5c4cb52, 0x8e4ff518, 0xd6cf17cf, + 0x7f49416c, 0x27c9a3bb, 0xe95f3cf8, 0xb1dfde2f, 0x1859888c, + 0x40d96a5b, 0x0b525411, 0x53d2b6c6, 0xfa54e065, 0xa2d402b2, + 0x6679dfe2, 0x3ef93d35, 0x977f6b96, 0xcfff8941, 0x8474b70b, + 0xdcf455dc, 0x7572037f, 0x2df2e1a8, 0xe3647eeb, 0xbbe49c3c, + 0x1262ca9f, 0x4ae22848, 0x01691602, 0x59e9f4d5, 0xf06fa276, + 0xa8ef40a1}, + {0x00000000, 0x463b6765, 0x8c76ceca, 0xca4da9af, 0x59ebed4e, + 0x1fd08a2b, 0xd59d2384, 0x93a644e1, 0xb2d6db9d, 0xf4edbcf8, + 0x3ea01557, 0x789b7232, 0xeb3d36d3, 0xad0651b6, 0x674bf819, + 0x21709f7c, 0x25abc6e0, 0x6390a185, 0xa9dd082a, 0xefe66f4f, + 0x7c402bae, 0x3a7b4ccb, 0xf036e564, 0xb60d8201, 0x977d1d7d, + 0xd1467a18, 0x1b0bd3b7, 0x5d30b4d2, 0xce96f033, 0x88ad9756, + 0x42e03ef9, 0x04db599c, 0x0b50fc1a, 0x4d6b9b7f, 0x872632d0, + 0xc11d55b5, 0x52bb1154, 0x14807631, 0xdecddf9e, 0x98f6b8fb, + 0xb9862787, 0xffbd40e2, 0x35f0e94d, 0x73cb8e28, 0xe06dcac9, + 0xa656adac, 0x6c1b0403, 0x2a206366, 0x2efb3afa, 0x68c05d9f, + 0xa28df430, 0xe4b69355, 0x7710d7b4, 0x312bb0d1, 0xfb66197e, + 0xbd5d7e1b, 0x9c2de167, 0xda168602, 0x105b2fad, 0x566048c8, + 0xc5c60c29, 0x83fd6b4c, 0x49b0c2e3, 0x0f8ba586, 0x16a0f835, + 0x509b9f50, 0x9ad636ff, 0xdced519a, 0x4f4b157b, 0x0970721e, + 0xc33ddbb1, 0x8506bcd4, 0xa47623a8, 0xe24d44cd, 0x2800ed62, + 0x6e3b8a07, 0xfd9dcee6, 0xbba6a983, 0x71eb002c, 0x37d06749, + 0x330b3ed5, 0x753059b0, 0xbf7df01f, 0xf946977a, 0x6ae0d39b, + 0x2cdbb4fe, 0xe6961d51, 0xa0ad7a34, 0x81dde548, 0xc7e6822d, + 0x0dab2b82, 0x4b904ce7, 0xd8360806, 0x9e0d6f63, 0x5440c6cc, + 0x127ba1a9, 0x1df0042f, 0x5bcb634a, 0x9186cae5, 0xd7bdad80, + 0x441be961, 0x02208e04, 0xc86d27ab, 0x8e5640ce, 0xaf26dfb2, + 0xe91db8d7, 0x23501178, 0x656b761d, 0xf6cd32fc, 0xb0f65599, + 0x7abbfc36, 0x3c809b53, 0x385bc2cf, 0x7e60a5aa, 0xb42d0c05, + 0xf2166b60, 0x61b02f81, 0x278b48e4, 0xedc6e14b, 0xabfd862e, + 0x8a8d1952, 0xccb67e37, 0x06fbd798, 0x40c0b0fd, 0xd366f41c, + 0x955d9379, 0x5f103ad6, 0x192b5db3, 0x2c40f16b, 0x6a7b960e, + 0xa0363fa1, 0xe60d58c4, 0x75ab1c25, 0x33907b40, 0xf9ddd2ef, + 0xbfe6b58a, 0x9e962af6, 0xd8ad4d93, 0x12e0e43c, 0x54db8359, + 0xc77dc7b8, 0x8146a0dd, 0x4b0b0972, 0x0d306e17, 0x09eb378b, + 0x4fd050ee, 0x859df941, 0xc3a69e24, 0x5000dac5, 0x163bbda0, + 0xdc76140f, 0x9a4d736a, 0xbb3dec16, 0xfd068b73, 0x374b22dc, + 0x717045b9, 0xe2d60158, 0xa4ed663d, 0x6ea0cf92, 0x289ba8f7, + 0x27100d71, 0x612b6a14, 0xab66c3bb, 0xed5da4de, 0x7efbe03f, + 0x38c0875a, 0xf28d2ef5, 0xb4b64990, 0x95c6d6ec, 0xd3fdb189, + 0x19b01826, 0x5f8b7f43, 0xcc2d3ba2, 0x8a165cc7, 0x405bf568, + 0x0660920d, 0x02bbcb91, 0x4480acf4, 0x8ecd055b, 0xc8f6623e, + 0x5b5026df, 0x1d6b41ba, 0xd726e815, 0x911d8f70, 0xb06d100c, + 0xf6567769, 0x3c1bdec6, 0x7a20b9a3, 0xe986fd42, 0xafbd9a27, + 0x65f03388, 0x23cb54ed, 0x3ae0095e, 0x7cdb6e3b, 0xb696c794, + 0xf0ada0f1, 0x630be410, 0x25308375, 0xef7d2ada, 0xa9464dbf, + 0x8836d2c3, 0xce0db5a6, 0x04401c09, 0x427b7b6c, 0xd1dd3f8d, + 0x97e658e8, 0x5dabf147, 0x1b909622, 0x1f4bcfbe, 0x5970a8db, + 0x933d0174, 0xd5066611, 0x46a022f0, 0x009b4595, 0xcad6ec3a, + 0x8ced8b5f, 0xad9d1423, 0xeba67346, 0x21ebdae9, 0x67d0bd8c, + 0xf476f96d, 0xb24d9e08, 0x780037a7, 0x3e3b50c2, 0x31b0f544, + 0x778b9221, 0xbdc63b8e, 0xfbfd5ceb, 0x685b180a, 0x2e607f6f, + 0xe42dd6c0, 0xa216b1a5, 0x83662ed9, 0xc55d49bc, 0x0f10e013, + 0x492b8776, 0xda8dc397, 0x9cb6a4f2, 0x56fb0d5d, 0x10c06a38, + 0x141b33a4, 0x522054c1, 0x986dfd6e, 0xde569a0b, 0x4df0deea, + 0x0bcbb98f, 0xc1861020, 0x87bd7745, 0xa6cde839, 0xe0f68f5c, + 0x2abb26f3, 0x6c804196, 0xff260577, 0xb91d6212, 0x7350cbbd, + 0x356bacd8}}; + +#endif + +#endif + +#if N == 6 + +#if W == 8 + +local const z_crc_t FAR crc_braid_table[][256] = { + {0x00000000, 0x3db1ecdc, 0x7b63d9b8, 0x46d23564, 0xf6c7b370, + 0xcb765fac, 0x8da46ac8, 0xb0158614, 0x36fe60a1, 0x0b4f8c7d, + 0x4d9db919, 0x702c55c5, 0xc039d3d1, 0xfd883f0d, 0xbb5a0a69, + 0x86ebe6b5, 0x6dfcc142, 0x504d2d9e, 0x169f18fa, 0x2b2ef426, + 0x9b3b7232, 0xa68a9eee, 0xe058ab8a, 0xdde94756, 0x5b02a1e3, + 0x66b34d3f, 0x2061785b, 0x1dd09487, 0xadc51293, 0x9074fe4f, + 0xd6a6cb2b, 0xeb1727f7, 0xdbf98284, 0xe6486e58, 0xa09a5b3c, + 0x9d2bb7e0, 0x2d3e31f4, 0x108fdd28, 0x565de84c, 0x6bec0490, + 0xed07e225, 0xd0b60ef9, 0x96643b9d, 0xabd5d741, 0x1bc05155, + 0x2671bd89, 0x60a388ed, 0x5d126431, 0xb60543c6, 0x8bb4af1a, + 0xcd669a7e, 0xf0d776a2, 0x40c2f0b6, 0x7d731c6a, 0x3ba1290e, + 0x0610c5d2, 0x80fb2367, 0xbd4acfbb, 0xfb98fadf, 0xc6291603, + 0x763c9017, 0x4b8d7ccb, 0x0d5f49af, 0x30eea573, 0x6c820349, + 0x5133ef95, 0x17e1daf1, 0x2a50362d, 0x9a45b039, 0xa7f45ce5, + 0xe1266981, 0xdc97855d, 0x5a7c63e8, 0x67cd8f34, 0x211fba50, + 0x1cae568c, 0xacbbd098, 0x910a3c44, 0xd7d80920, 0xea69e5fc, + 0x017ec20b, 0x3ccf2ed7, 0x7a1d1bb3, 0x47acf76f, 0xf7b9717b, + 0xca089da7, 0x8cdaa8c3, 0xb16b441f, 0x3780a2aa, 0x0a314e76, + 0x4ce37b12, 0x715297ce, 0xc14711da, 0xfcf6fd06, 0xba24c862, + 0x879524be, 0xb77b81cd, 0x8aca6d11, 0xcc185875, 0xf1a9b4a9, + 0x41bc32bd, 0x7c0dde61, 0x3adfeb05, 0x076e07d9, 0x8185e16c, + 0xbc340db0, 0xfae638d4, 0xc757d408, 0x7742521c, 0x4af3bec0, + 0x0c218ba4, 0x31906778, 0xda87408f, 0xe736ac53, 0xa1e49937, + 0x9c5575eb, 0x2c40f3ff, 0x11f11f23, 0x57232a47, 0x6a92c69b, + 0xec79202e, 0xd1c8ccf2, 0x971af996, 0xaaab154a, 0x1abe935e, + 0x270f7f82, 0x61dd4ae6, 0x5c6ca63a, 0xd9040692, 0xe4b5ea4e, + 0xa267df2a, 0x9fd633f6, 0x2fc3b5e2, 0x1272593e, 0x54a06c5a, + 0x69118086, 0xeffa6633, 0xd24b8aef, 0x9499bf8b, 0xa9285357, + 0x193dd543, 0x248c399f, 0x625e0cfb, 0x5fefe027, 0xb4f8c7d0, + 0x89492b0c, 0xcf9b1e68, 0xf22af2b4, 0x423f74a0, 0x7f8e987c, + 0x395cad18, 0x04ed41c4, 0x8206a771, 0xbfb74bad, 0xf9657ec9, + 0xc4d49215, 0x74c11401, 0x4970f8dd, 0x0fa2cdb9, 0x32132165, + 0x02fd8416, 0x3f4c68ca, 0x799e5dae, 0x442fb172, 0xf43a3766, + 0xc98bdbba, 0x8f59eede, 0xb2e80202, 0x3403e4b7, 0x09b2086b, + 0x4f603d0f, 0x72d1d1d3, 0xc2c457c7, 0xff75bb1b, 0xb9a78e7f, + 0x841662a3, 0x6f014554, 0x52b0a988, 0x14629cec, 0x29d37030, + 0x99c6f624, 0xa4771af8, 0xe2a52f9c, 0xdf14c340, 0x59ff25f5, + 0x644ec929, 0x229cfc4d, 0x1f2d1091, 0xaf389685, 0x92897a59, + 0xd45b4f3d, 0xe9eaa3e1, 0xb58605db, 0x8837e907, 0xcee5dc63, + 0xf35430bf, 0x4341b6ab, 0x7ef05a77, 0x38226f13, 0x059383cf, + 0x8378657a, 0xbec989a6, 0xf81bbcc2, 0xc5aa501e, 0x75bfd60a, + 0x480e3ad6, 0x0edc0fb2, 0x336de36e, 0xd87ac499, 0xe5cb2845, + 0xa3191d21, 0x9ea8f1fd, 0x2ebd77e9, 0x130c9b35, 0x55deae51, + 0x686f428d, 0xee84a438, 0xd33548e4, 0x95e77d80, 0xa856915c, + 0x18431748, 0x25f2fb94, 0x6320cef0, 0x5e91222c, 0x6e7f875f, + 0x53ce6b83, 0x151c5ee7, 0x28adb23b, 0x98b8342f, 0xa509d8f3, + 0xe3dbed97, 0xde6a014b, 0x5881e7fe, 0x65300b22, 0x23e23e46, + 0x1e53d29a, 0xae46548e, 0x93f7b852, 0xd5258d36, 0xe89461ea, + 0x0383461d, 0x3e32aac1, 0x78e09fa5, 0x45517379, 0xf544f56d, + 0xc8f519b1, 0x8e272cd5, 0xb396c009, 0x357d26bc, 0x08ccca60, + 0x4e1eff04, 0x73af13d8, 0xc3ba95cc, 0xfe0b7910, 0xb8d94c74, + 0x8568a0a8}, + {0x00000000, 0x69790b65, 0xd2f216ca, 0xbb8b1daf, 0x7e952bd5, + 0x17ec20b0, 0xac673d1f, 0xc51e367a, 0xfd2a57aa, 0x94535ccf, + 0x2fd84160, 0x46a14a05, 0x83bf7c7f, 0xeac6771a, 0x514d6ab5, + 0x383461d0, 0x2125a915, 0x485ca270, 0xf3d7bfdf, 0x9aaeb4ba, + 0x5fb082c0, 0x36c989a5, 0x8d42940a, 0xe43b9f6f, 0xdc0ffebf, + 0xb576f5da, 0x0efde875, 0x6784e310, 0xa29ad56a, 0xcbe3de0f, + 0x7068c3a0, 0x1911c8c5, 0x424b522a, 0x2b32594f, 0x90b944e0, + 0xf9c04f85, 0x3cde79ff, 0x55a7729a, 0xee2c6f35, 0x87556450, + 0xbf610580, 0xd6180ee5, 0x6d93134a, 0x04ea182f, 0xc1f42e55, + 0xa88d2530, 0x1306389f, 0x7a7f33fa, 0x636efb3f, 0x0a17f05a, + 0xb19cedf5, 0xd8e5e690, 0x1dfbd0ea, 0x7482db8f, 0xcf09c620, + 0xa670cd45, 0x9e44ac95, 0xf73da7f0, 0x4cb6ba5f, 0x25cfb13a, + 0xe0d18740, 0x89a88c25, 0x3223918a, 0x5b5a9aef, 0x8496a454, + 0xedefaf31, 0x5664b29e, 0x3f1db9fb, 0xfa038f81, 0x937a84e4, + 0x28f1994b, 0x4188922e, 0x79bcf3fe, 0x10c5f89b, 0xab4ee534, + 0xc237ee51, 0x0729d82b, 0x6e50d34e, 0xd5dbcee1, 0xbca2c584, + 0xa5b30d41, 0xccca0624, 0x77411b8b, 0x1e3810ee, 0xdb262694, + 0xb25f2df1, 0x09d4305e, 0x60ad3b3b, 0x58995aeb, 0x31e0518e, + 0x8a6b4c21, 0xe3124744, 0x260c713e, 0x4f757a5b, 0xf4fe67f4, + 0x9d876c91, 0xc6ddf67e, 0xafa4fd1b, 0x142fe0b4, 0x7d56ebd1, + 0xb848ddab, 0xd131d6ce, 0x6abacb61, 0x03c3c004, 0x3bf7a1d4, + 0x528eaab1, 0xe905b71e, 0x807cbc7b, 0x45628a01, 0x2c1b8164, + 0x97909ccb, 0xfee997ae, 0xe7f85f6b, 0x8e81540e, 0x350a49a1, + 0x5c7342c4, 0x996d74be, 0xf0147fdb, 0x4b9f6274, 0x22e66911, + 0x1ad208c1, 0x73ab03a4, 0xc8201e0b, 0xa159156e, 0x64472314, + 0x0d3e2871, 0xb6b535de, 0xdfcc3ebb, 0xd25c4ee9, 0xbb25458c, + 0x00ae5823, 0x69d75346, 0xacc9653c, 0xc5b06e59, 0x7e3b73f6, + 0x17427893, 0x2f761943, 0x460f1226, 0xfd840f89, 0x94fd04ec, + 0x51e33296, 0x389a39f3, 0x8311245c, 0xea682f39, 0xf379e7fc, + 0x9a00ec99, 0x218bf136, 0x48f2fa53, 0x8deccc29, 0xe495c74c, + 0x5f1edae3, 0x3667d186, 0x0e53b056, 0x672abb33, 0xdca1a69c, + 0xb5d8adf9, 0x70c69b83, 0x19bf90e6, 0xa2348d49, 0xcb4d862c, + 0x90171cc3, 0xf96e17a6, 0x42e50a09, 0x2b9c016c, 0xee823716, + 0x87fb3c73, 0x3c7021dc, 0x55092ab9, 0x6d3d4b69, 0x0444400c, + 0xbfcf5da3, 0xd6b656c6, 0x13a860bc, 0x7ad16bd9, 0xc15a7676, + 0xa8237d13, 0xb132b5d6, 0xd84bbeb3, 0x63c0a31c, 0x0ab9a879, + 0xcfa79e03, 0xa6de9566, 0x1d5588c9, 0x742c83ac, 0x4c18e27c, + 0x2561e919, 0x9eeaf4b6, 0xf793ffd3, 0x328dc9a9, 0x5bf4c2cc, + 0xe07fdf63, 0x8906d406, 0x56caeabd, 0x3fb3e1d8, 0x8438fc77, + 0xed41f712, 0x285fc168, 0x4126ca0d, 0xfaadd7a2, 0x93d4dcc7, + 0xabe0bd17, 0xc299b672, 0x7912abdd, 0x106ba0b8, 0xd57596c2, + 0xbc0c9da7, 0x07878008, 0x6efe8b6d, 0x77ef43a8, 0x1e9648cd, + 0xa51d5562, 0xcc645e07, 0x097a687d, 0x60036318, 0xdb887eb7, + 0xb2f175d2, 0x8ac51402, 0xe3bc1f67, 0x583702c8, 0x314e09ad, + 0xf4503fd7, 0x9d2934b2, 0x26a2291d, 0x4fdb2278, 0x1481b897, + 0x7df8b3f2, 0xc673ae5d, 0xaf0aa538, 0x6a149342, 0x036d9827, + 0xb8e68588, 0xd19f8eed, 0xe9abef3d, 0x80d2e458, 0x3b59f9f7, + 0x5220f292, 0x973ec4e8, 0xfe47cf8d, 0x45ccd222, 0x2cb5d947, + 0x35a41182, 0x5cdd1ae7, 0xe7560748, 0x8e2f0c2d, 0x4b313a57, + 0x22483132, 0x99c32c9d, 0xf0ba27f8, 0xc88e4628, 0xa1f74d4d, + 0x1a7c50e2, 0x73055b87, 0xb61b6dfd, 0xdf626698, 0x64e97b37, + 0x0d907052}, + {0x00000000, 0x7fc99b93, 0xff933726, 0x805aacb5, 0x2457680d, + 0x5b9ef39e, 0xdbc45f2b, 0xa40dc4b8, 0x48aed01a, 0x37674b89, + 0xb73de73c, 0xc8f47caf, 0x6cf9b817, 0x13302384, 0x936a8f31, + 0xeca314a2, 0x915da034, 0xee943ba7, 0x6ece9712, 0x11070c81, + 0xb50ac839, 0xcac353aa, 0x4a99ff1f, 0x3550648c, 0xd9f3702e, + 0xa63aebbd, 0x26604708, 0x59a9dc9b, 0xfda41823, 0x826d83b0, + 0x02372f05, 0x7dfeb496, 0xf9ca4629, 0x8603ddba, 0x0659710f, + 0x7990ea9c, 0xdd9d2e24, 0xa254b5b7, 0x220e1902, 0x5dc78291, + 0xb1649633, 0xcead0da0, 0x4ef7a115, 0x313e3a86, 0x9533fe3e, + 0xeafa65ad, 0x6aa0c918, 0x1569528b, 0x6897e61d, 0x175e7d8e, + 0x9704d13b, 0xe8cd4aa8, 0x4cc08e10, 0x33091583, 0xb353b936, + 0xcc9a22a5, 0x20393607, 0x5ff0ad94, 0xdfaa0121, 0xa0639ab2, + 0x046e5e0a, 0x7ba7c599, 0xfbfd692c, 0x8434f2bf, 0x28e58a13, + 0x572c1180, 0xd776bd35, 0xa8bf26a6, 0x0cb2e21e, 0x737b798d, + 0xf321d538, 0x8ce84eab, 0x604b5a09, 0x1f82c19a, 0x9fd86d2f, + 0xe011f6bc, 0x441c3204, 0x3bd5a997, 0xbb8f0522, 0xc4469eb1, + 0xb9b82a27, 0xc671b1b4, 0x462b1d01, 0x39e28692, 0x9def422a, + 0xe226d9b9, 0x627c750c, 0x1db5ee9f, 0xf116fa3d, 0x8edf61ae, + 0x0e85cd1b, 0x714c5688, 0xd5419230, 0xaa8809a3, 0x2ad2a516, + 0x551b3e85, 0xd12fcc3a, 0xaee657a9, 0x2ebcfb1c, 0x5175608f, + 0xf578a437, 0x8ab13fa4, 0x0aeb9311, 0x75220882, 0x99811c20, + 0xe64887b3, 0x66122b06, 0x19dbb095, 0xbdd6742d, 0xc21fefbe, + 0x4245430b, 0x3d8cd898, 0x40726c0e, 0x3fbbf79d, 0xbfe15b28, + 0xc028c0bb, 0x64250403, 0x1bec9f90, 0x9bb63325, 0xe47fa8b6, + 0x08dcbc14, 0x77152787, 0xf74f8b32, 0x888610a1, 0x2c8bd419, + 0x53424f8a, 0xd318e33f, 0xacd178ac, 0x51cb1426, 0x2e028fb5, + 0xae582300, 0xd191b893, 0x759c7c2b, 0x0a55e7b8, 0x8a0f4b0d, + 0xf5c6d09e, 0x1965c43c, 0x66ac5faf, 0xe6f6f31a, 0x993f6889, + 0x3d32ac31, 0x42fb37a2, 0xc2a19b17, 0xbd680084, 0xc096b412, + 0xbf5f2f81, 0x3f058334, 0x40cc18a7, 0xe4c1dc1f, 0x9b08478c, + 0x1b52eb39, 0x649b70aa, 0x88386408, 0xf7f1ff9b, 0x77ab532e, + 0x0862c8bd, 0xac6f0c05, 0xd3a69796, 0x53fc3b23, 0x2c35a0b0, + 0xa801520f, 0xd7c8c99c, 0x57926529, 0x285bfeba, 0x8c563a02, + 0xf39fa191, 0x73c50d24, 0x0c0c96b7, 0xe0af8215, 0x9f661986, + 0x1f3cb533, 0x60f52ea0, 0xc4f8ea18, 0xbb31718b, 0x3b6bdd3e, + 0x44a246ad, 0x395cf23b, 0x469569a8, 0xc6cfc51d, 0xb9065e8e, + 0x1d0b9a36, 0x62c201a5, 0xe298ad10, 0x9d513683, 0x71f22221, + 0x0e3bb9b2, 0x8e611507, 0xf1a88e94, 0x55a54a2c, 0x2a6cd1bf, + 0xaa367d0a, 0xd5ffe699, 0x792e9e35, 0x06e705a6, 0x86bda913, + 0xf9743280, 0x5d79f638, 0x22b06dab, 0xa2eac11e, 0xdd235a8d, + 0x31804e2f, 0x4e49d5bc, 0xce137909, 0xb1dae29a, 0x15d72622, + 0x6a1ebdb1, 0xea441104, 0x958d8a97, 0xe8733e01, 0x97baa592, + 0x17e00927, 0x682992b4, 0xcc24560c, 0xb3edcd9f, 0x33b7612a, + 0x4c7efab9, 0xa0ddee1b, 0xdf147588, 0x5f4ed93d, 0x208742ae, + 0x848a8616, 0xfb431d85, 0x7b19b130, 0x04d02aa3, 0x80e4d81c, + 0xff2d438f, 0x7f77ef3a, 0x00be74a9, 0xa4b3b011, 0xdb7a2b82, + 0x5b208737, 0x24e91ca4, 0xc84a0806, 0xb7839395, 0x37d93f20, + 0x4810a4b3, 0xec1d600b, 0x93d4fb98, 0x138e572d, 0x6c47ccbe, + 0x11b97828, 0x6e70e3bb, 0xee2a4f0e, 0x91e3d49d, 0x35ee1025, + 0x4a278bb6, 0xca7d2703, 0xb5b4bc90, 0x5917a832, 0x26de33a1, + 0xa6849f14, 0xd94d0487, 0x7d40c03f, 0x02895bac, 0x82d3f719, + 0xfd1a6c8a}, + {0x00000000, 0xa396284c, 0x9c5d56d9, 0x3fcb7e95, 0xe3cbabf3, + 0x405d83bf, 0x7f96fd2a, 0xdc00d566, 0x1ce651a7, 0xbf7079eb, + 0x80bb077e, 0x232d2f32, 0xff2dfa54, 0x5cbbd218, 0x6370ac8d, + 0xc0e684c1, 0x39cca34e, 0x9a5a8b02, 0xa591f597, 0x0607dddb, + 0xda0708bd, 0x799120f1, 0x465a5e64, 0xe5cc7628, 0x252af2e9, + 0x86bcdaa5, 0xb977a430, 0x1ae18c7c, 0xc6e1591a, 0x65777156, + 0x5abc0fc3, 0xf92a278f, 0x7399469c, 0xd00f6ed0, 0xefc41045, + 0x4c523809, 0x9052ed6f, 0x33c4c523, 0x0c0fbbb6, 0xaf9993fa, + 0x6f7f173b, 0xcce93f77, 0xf32241e2, 0x50b469ae, 0x8cb4bcc8, + 0x2f229484, 0x10e9ea11, 0xb37fc25d, 0x4a55e5d2, 0xe9c3cd9e, + 0xd608b30b, 0x759e9b47, 0xa99e4e21, 0x0a08666d, 0x35c318f8, + 0x965530b4, 0x56b3b475, 0xf5259c39, 0xcaeee2ac, 0x6978cae0, + 0xb5781f86, 0x16ee37ca, 0x2925495f, 0x8ab36113, 0xe7328d38, + 0x44a4a574, 0x7b6fdbe1, 0xd8f9f3ad, 0x04f926cb, 0xa76f0e87, + 0x98a47012, 0x3b32585e, 0xfbd4dc9f, 0x5842f4d3, 0x67898a46, + 0xc41fa20a, 0x181f776c, 0xbb895f20, 0x844221b5, 0x27d409f9, + 0xdefe2e76, 0x7d68063a, 0x42a378af, 0xe13550e3, 0x3d358585, + 0x9ea3adc9, 0xa168d35c, 0x02fefb10, 0xc2187fd1, 0x618e579d, + 0x5e452908, 0xfdd30144, 0x21d3d422, 0x8245fc6e, 0xbd8e82fb, + 0x1e18aab7, 0x94abcba4, 0x373de3e8, 0x08f69d7d, 0xab60b531, + 0x77606057, 0xd4f6481b, 0xeb3d368e, 0x48ab1ec2, 0x884d9a03, + 0x2bdbb24f, 0x1410ccda, 0xb786e496, 0x6b8631f0, 0xc81019bc, + 0xf7db6729, 0x544d4f65, 0xad6768ea, 0x0ef140a6, 0x313a3e33, + 0x92ac167f, 0x4eacc319, 0xed3aeb55, 0xd2f195c0, 0x7167bd8c, + 0xb181394d, 0x12171101, 0x2ddc6f94, 0x8e4a47d8, 0x524a92be, + 0xf1dcbaf2, 0xce17c467, 0x6d81ec2b, 0x15141c31, 0xb682347d, + 0x89494ae8, 0x2adf62a4, 0xf6dfb7c2, 0x55499f8e, 0x6a82e11b, + 0xc914c957, 0x09f24d96, 0xaa6465da, 0x95af1b4f, 0x36393303, + 0xea39e665, 0x49afce29, 0x7664b0bc, 0xd5f298f0, 0x2cd8bf7f, + 0x8f4e9733, 0xb085e9a6, 0x1313c1ea, 0xcf13148c, 0x6c853cc0, + 0x534e4255, 0xf0d86a19, 0x303eeed8, 0x93a8c694, 0xac63b801, + 0x0ff5904d, 0xd3f5452b, 0x70636d67, 0x4fa813f2, 0xec3e3bbe, + 0x668d5aad, 0xc51b72e1, 0xfad00c74, 0x59462438, 0x8546f15e, + 0x26d0d912, 0x191ba787, 0xba8d8fcb, 0x7a6b0b0a, 0xd9fd2346, + 0xe6365dd3, 0x45a0759f, 0x99a0a0f9, 0x3a3688b5, 0x05fdf620, + 0xa66bde6c, 0x5f41f9e3, 0xfcd7d1af, 0xc31caf3a, 0x608a8776, + 0xbc8a5210, 0x1f1c7a5c, 0x20d704c9, 0x83412c85, 0x43a7a844, + 0xe0318008, 0xdffafe9d, 0x7c6cd6d1, 0xa06c03b7, 0x03fa2bfb, + 0x3c31556e, 0x9fa77d22, 0xf2269109, 0x51b0b945, 0x6e7bc7d0, + 0xcdedef9c, 0x11ed3afa, 0xb27b12b6, 0x8db06c23, 0x2e26446f, + 0xeec0c0ae, 0x4d56e8e2, 0x729d9677, 0xd10bbe3b, 0x0d0b6b5d, + 0xae9d4311, 0x91563d84, 0x32c015c8, 0xcbea3247, 0x687c1a0b, + 0x57b7649e, 0xf4214cd2, 0x282199b4, 0x8bb7b1f8, 0xb47ccf6d, + 0x17eae721, 0xd70c63e0, 0x749a4bac, 0x4b513539, 0xe8c71d75, + 0x34c7c813, 0x9751e05f, 0xa89a9eca, 0x0b0cb686, 0x81bfd795, + 0x2229ffd9, 0x1de2814c, 0xbe74a900, 0x62747c66, 0xc1e2542a, + 0xfe292abf, 0x5dbf02f3, 0x9d598632, 0x3ecfae7e, 0x0104d0eb, + 0xa292f8a7, 0x7e922dc1, 0xdd04058d, 0xe2cf7b18, 0x41595354, + 0xb87374db, 0x1be55c97, 0x242e2202, 0x87b80a4e, 0x5bb8df28, + 0xf82ef764, 0xc7e589f1, 0x6473a1bd, 0xa495257c, 0x07030d30, + 0x38c873a5, 0x9b5e5be9, 0x475e8e8f, 0xe4c8a6c3, 0xdb03d856, + 0x7895f01a}, + {0x00000000, 0x2a283862, 0x545070c4, 0x7e7848a6, 0xa8a0e188, + 0x8288d9ea, 0xfcf0914c, 0xd6d8a92e, 0x8a30c551, 0xa018fd33, + 0xde60b595, 0xf4488df7, 0x229024d9, 0x08b81cbb, 0x76c0541d, + 0x5ce86c7f, 0xcf108ce3, 0xe538b481, 0x9b40fc27, 0xb168c445, + 0x67b06d6b, 0x4d985509, 0x33e01daf, 0x19c825cd, 0x452049b2, + 0x6f0871d0, 0x11703976, 0x3b580114, 0xed80a83a, 0xc7a89058, + 0xb9d0d8fe, 0x93f8e09c, 0x45501f87, 0x6f7827e5, 0x11006f43, + 0x3b285721, 0xedf0fe0f, 0xc7d8c66d, 0xb9a08ecb, 0x9388b6a9, + 0xcf60dad6, 0xe548e2b4, 0x9b30aa12, 0xb1189270, 0x67c03b5e, + 0x4de8033c, 0x33904b9a, 0x19b873f8, 0x8a409364, 0xa068ab06, + 0xde10e3a0, 0xf438dbc2, 0x22e072ec, 0x08c84a8e, 0x76b00228, + 0x5c983a4a, 0x00705635, 0x2a586e57, 0x542026f1, 0x7e081e93, + 0xa8d0b7bd, 0x82f88fdf, 0xfc80c779, 0xd6a8ff1b, 0x8aa03f0e, + 0xa088076c, 0xdef04fca, 0xf4d877a8, 0x2200de86, 0x0828e6e4, + 0x7650ae42, 0x5c789620, 0x0090fa5f, 0x2ab8c23d, 0x54c08a9b, + 0x7ee8b2f9, 0xa8301bd7, 0x821823b5, 0xfc606b13, 0xd6485371, + 0x45b0b3ed, 0x6f988b8f, 0x11e0c329, 0x3bc8fb4b, 0xed105265, + 0xc7386a07, 0xb94022a1, 0x93681ac3, 0xcf8076bc, 0xe5a84ede, + 0x9bd00678, 0xb1f83e1a, 0x67209734, 0x4d08af56, 0x3370e7f0, + 0x1958df92, 0xcff02089, 0xe5d818eb, 0x9ba0504d, 0xb188682f, + 0x6750c101, 0x4d78f963, 0x3300b1c5, 0x192889a7, 0x45c0e5d8, + 0x6fe8ddba, 0x1190951c, 0x3bb8ad7e, 0xed600450, 0xc7483c32, + 0xb9307494, 0x93184cf6, 0x00e0ac6a, 0x2ac89408, 0x54b0dcae, + 0x7e98e4cc, 0xa8404de2, 0x82687580, 0xfc103d26, 0xd6380544, + 0x8ad0693b, 0xa0f85159, 0xde8019ff, 0xf4a8219d, 0x227088b3, + 0x0858b0d1, 0x7620f877, 0x5c08c015, 0xce31785d, 0xe419403f, + 0x9a610899, 0xb04930fb, 0x669199d5, 0x4cb9a1b7, 0x32c1e911, + 0x18e9d173, 0x4401bd0c, 0x6e29856e, 0x1051cdc8, 0x3a79f5aa, + 0xeca15c84, 0xc68964e6, 0xb8f12c40, 0x92d91422, 0x0121f4be, + 0x2b09ccdc, 0x5571847a, 0x7f59bc18, 0xa9811536, 0x83a92d54, + 0xfdd165f2, 0xd7f95d90, 0x8b1131ef, 0xa139098d, 0xdf41412b, + 0xf5697949, 0x23b1d067, 0x0999e805, 0x77e1a0a3, 0x5dc998c1, + 0x8b6167da, 0xa1495fb8, 0xdf31171e, 0xf5192f7c, 0x23c18652, + 0x09e9be30, 0x7791f696, 0x5db9cef4, 0x0151a28b, 0x2b799ae9, + 0x5501d24f, 0x7f29ea2d, 0xa9f14303, 0x83d97b61, 0xfda133c7, + 0xd7890ba5, 0x4471eb39, 0x6e59d35b, 0x10219bfd, 0x3a09a39f, + 0xecd10ab1, 0xc6f932d3, 0xb8817a75, 0x92a94217, 0xce412e68, + 0xe469160a, 0x9a115eac, 0xb03966ce, 0x66e1cfe0, 0x4cc9f782, + 0x32b1bf24, 0x18998746, 0x44914753, 0x6eb97f31, 0x10c13797, + 0x3ae90ff5, 0xec31a6db, 0xc6199eb9, 0xb861d61f, 0x9249ee7d, + 0xcea18202, 0xe489ba60, 0x9af1f2c6, 0xb0d9caa4, 0x6601638a, + 0x4c295be8, 0x3251134e, 0x18792b2c, 0x8b81cbb0, 0xa1a9f3d2, + 0xdfd1bb74, 0xf5f98316, 0x23212a38, 0x0909125a, 0x77715afc, + 0x5d59629e, 0x01b10ee1, 0x2b993683, 0x55e17e25, 0x7fc94647, + 0xa911ef69, 0x8339d70b, 0xfd419fad, 0xd769a7cf, 0x01c158d4, + 0x2be960b6, 0x55912810, 0x7fb91072, 0xa961b95c, 0x8349813e, + 0xfd31c998, 0xd719f1fa, 0x8bf19d85, 0xa1d9a5e7, 0xdfa1ed41, + 0xf589d523, 0x23517c0d, 0x0979446f, 0x77010cc9, 0x5d2934ab, + 0xced1d437, 0xe4f9ec55, 0x9a81a4f3, 0xb0a99c91, 0x667135bf, + 0x4c590ddd, 0x3221457b, 0x18097d19, 0x44e11166, 0x6ec92904, + 0x10b161a2, 0x3a9959c0, 0xec41f0ee, 0xc669c88c, 0xb811802a, + 0x9239b848}, + {0x00000000, 0x4713f6fb, 0x8e27edf6, 0xc9341b0d, 0xc73eddad, + 0x802d2b56, 0x4919305b, 0x0e0ac6a0, 0x550cbd1b, 0x121f4be0, + 0xdb2b50ed, 0x9c38a616, 0x923260b6, 0xd521964d, 0x1c158d40, + 0x5b067bbb, 0xaa197a36, 0xed0a8ccd, 0x243e97c0, 0x632d613b, + 0x6d27a79b, 0x2a345160, 0xe3004a6d, 0xa413bc96, 0xff15c72d, + 0xb80631d6, 0x71322adb, 0x3621dc20, 0x382b1a80, 0x7f38ec7b, + 0xb60cf776, 0xf11f018d, 0x8f43f22d, 0xc85004d6, 0x01641fdb, + 0x4677e920, 0x487d2f80, 0x0f6ed97b, 0xc65ac276, 0x8149348d, + 0xda4f4f36, 0x9d5cb9cd, 0x5468a2c0, 0x137b543b, 0x1d71929b, + 0x5a626460, 0x93567f6d, 0xd4458996, 0x255a881b, 0x62497ee0, + 0xab7d65ed, 0xec6e9316, 0xe26455b6, 0xa577a34d, 0x6c43b840, + 0x2b504ebb, 0x70563500, 0x3745c3fb, 0xfe71d8f6, 0xb9622e0d, + 0xb768e8ad, 0xf07b1e56, 0x394f055b, 0x7e5cf3a0, 0xc5f6e21b, + 0x82e514e0, 0x4bd10fed, 0x0cc2f916, 0x02c83fb6, 0x45dbc94d, + 0x8cefd240, 0xcbfc24bb, 0x90fa5f00, 0xd7e9a9fb, 0x1eddb2f6, + 0x59ce440d, 0x57c482ad, 0x10d77456, 0xd9e36f5b, 0x9ef099a0, + 0x6fef982d, 0x28fc6ed6, 0xe1c875db, 0xa6db8320, 0xa8d14580, + 0xefc2b37b, 0x26f6a876, 0x61e55e8d, 0x3ae32536, 0x7df0d3cd, + 0xb4c4c8c0, 0xf3d73e3b, 0xfdddf89b, 0xbace0e60, 0x73fa156d, + 0x34e9e396, 0x4ab51036, 0x0da6e6cd, 0xc492fdc0, 0x83810b3b, + 0x8d8bcd9b, 0xca983b60, 0x03ac206d, 0x44bfd696, 0x1fb9ad2d, + 0x58aa5bd6, 0x919e40db, 0xd68db620, 0xd8877080, 0x9f94867b, + 0x56a09d76, 0x11b36b8d, 0xe0ac6a00, 0xa7bf9cfb, 0x6e8b87f6, + 0x2998710d, 0x2792b7ad, 0x60814156, 0xa9b55a5b, 0xeea6aca0, + 0xb5a0d71b, 0xf2b321e0, 0x3b873aed, 0x7c94cc16, 0x729e0ab6, + 0x358dfc4d, 0xfcb9e740, 0xbbaa11bb, 0x509cc277, 0x178f348c, + 0xdebb2f81, 0x99a8d97a, 0x97a21fda, 0xd0b1e921, 0x1985f22c, + 0x5e9604d7, 0x05907f6c, 0x42838997, 0x8bb7929a, 0xcca46461, + 0xc2aea2c1, 0x85bd543a, 0x4c894f37, 0x0b9ab9cc, 0xfa85b841, + 0xbd964eba, 0x74a255b7, 0x33b1a34c, 0x3dbb65ec, 0x7aa89317, + 0xb39c881a, 0xf48f7ee1, 0xaf89055a, 0xe89af3a1, 0x21aee8ac, + 0x66bd1e57, 0x68b7d8f7, 0x2fa42e0c, 0xe6903501, 0xa183c3fa, + 0xdfdf305a, 0x98ccc6a1, 0x51f8ddac, 0x16eb2b57, 0x18e1edf7, + 0x5ff21b0c, 0x96c60001, 0xd1d5f6fa, 0x8ad38d41, 0xcdc07bba, + 0x04f460b7, 0x43e7964c, 0x4ded50ec, 0x0afea617, 0xc3cabd1a, + 0x84d94be1, 0x75c64a6c, 0x32d5bc97, 0xfbe1a79a, 0xbcf25161, + 0xb2f897c1, 0xf5eb613a, 0x3cdf7a37, 0x7bcc8ccc, 0x20caf777, + 0x67d9018c, 0xaeed1a81, 0xe9feec7a, 0xe7f42ada, 0xa0e7dc21, + 0x69d3c72c, 0x2ec031d7, 0x956a206c, 0xd279d697, 0x1b4dcd9a, + 0x5c5e3b61, 0x5254fdc1, 0x15470b3a, 0xdc731037, 0x9b60e6cc, + 0xc0669d77, 0x87756b8c, 0x4e417081, 0x0952867a, 0x075840da, + 0x404bb621, 0x897fad2c, 0xce6c5bd7, 0x3f735a5a, 0x7860aca1, + 0xb154b7ac, 0xf6474157, 0xf84d87f7, 0xbf5e710c, 0x766a6a01, + 0x31799cfa, 0x6a7fe741, 0x2d6c11ba, 0xe4580ab7, 0xa34bfc4c, + 0xad413aec, 0xea52cc17, 0x2366d71a, 0x647521e1, 0x1a29d241, + 0x5d3a24ba, 0x940e3fb7, 0xd31dc94c, 0xdd170fec, 0x9a04f917, + 0x5330e21a, 0x142314e1, 0x4f256f5a, 0x083699a1, 0xc10282ac, + 0x86117457, 0x881bb2f7, 0xcf08440c, 0x063c5f01, 0x412fa9fa, + 0xb030a877, 0xf7235e8c, 0x3e174581, 0x7904b37a, 0x770e75da, + 0x301d8321, 0xf929982c, 0xbe3a6ed7, 0xe53c156c, 0xa22fe397, + 0x6b1bf89a, 0x2c080e61, 0x2202c8c1, 0x65113e3a, 0xac252537, + 0xeb36d3cc}, + {0x00000000, 0xa13984ee, 0x99020f9d, 0x383b8b73, 0xe975197b, + 0x484c9d95, 0x707716e6, 0xd14e9208, 0x099b34b7, 0xa8a2b059, + 0x90993b2a, 0x31a0bfc4, 0xe0ee2dcc, 0x41d7a922, 0x79ec2251, + 0xd8d5a6bf, 0x1336696e, 0xb20fed80, 0x8a3466f3, 0x2b0de21d, + 0xfa437015, 0x5b7af4fb, 0x63417f88, 0xc278fb66, 0x1aad5dd9, + 0xbb94d937, 0x83af5244, 0x2296d6aa, 0xf3d844a2, 0x52e1c04c, + 0x6ada4b3f, 0xcbe3cfd1, 0x266cd2dc, 0x87555632, 0xbf6edd41, + 0x1e5759af, 0xcf19cba7, 0x6e204f49, 0x561bc43a, 0xf72240d4, + 0x2ff7e66b, 0x8ece6285, 0xb6f5e9f6, 0x17cc6d18, 0xc682ff10, + 0x67bb7bfe, 0x5f80f08d, 0xfeb97463, 0x355abbb2, 0x94633f5c, + 0xac58b42f, 0x0d6130c1, 0xdc2fa2c9, 0x7d162627, 0x452dad54, + 0xe41429ba, 0x3cc18f05, 0x9df80beb, 0xa5c38098, 0x04fa0476, + 0xd5b4967e, 0x748d1290, 0x4cb699e3, 0xed8f1d0d, 0x4cd9a5b8, + 0xede02156, 0xd5dbaa25, 0x74e22ecb, 0xa5acbcc3, 0x0495382d, + 0x3caeb35e, 0x9d9737b0, 0x4542910f, 0xe47b15e1, 0xdc409e92, + 0x7d791a7c, 0xac378874, 0x0d0e0c9a, 0x353587e9, 0x940c0307, + 0x5fefccd6, 0xfed64838, 0xc6edc34b, 0x67d447a5, 0xb69ad5ad, + 0x17a35143, 0x2f98da30, 0x8ea15ede, 0x5674f861, 0xf74d7c8f, + 0xcf76f7fc, 0x6e4f7312, 0xbf01e11a, 0x1e3865f4, 0x2603ee87, + 0x873a6a69, 0x6ab57764, 0xcb8cf38a, 0xf3b778f9, 0x528efc17, + 0x83c06e1f, 0x22f9eaf1, 0x1ac26182, 0xbbfbe56c, 0x632e43d3, + 0xc217c73d, 0xfa2c4c4e, 0x5b15c8a0, 0x8a5b5aa8, 0x2b62de46, + 0x13595535, 0xb260d1db, 0x79831e0a, 0xd8ba9ae4, 0xe0811197, + 0x41b89579, 0x90f60771, 0x31cf839f, 0x09f408ec, 0xa8cd8c02, + 0x70182abd, 0xd121ae53, 0xe91a2520, 0x4823a1ce, 0x996d33c6, + 0x3854b728, 0x006f3c5b, 0xa156b8b5, 0x99b34b70, 0x388acf9e, + 0x00b144ed, 0xa188c003, 0x70c6520b, 0xd1ffd6e5, 0xe9c45d96, + 0x48fdd978, 0x90287fc7, 0x3111fb29, 0x092a705a, 0xa813f4b4, + 0x795d66bc, 0xd864e252, 0xe05f6921, 0x4166edcf, 0x8a85221e, + 0x2bbca6f0, 0x13872d83, 0xb2bea96d, 0x63f03b65, 0xc2c9bf8b, + 0xfaf234f8, 0x5bcbb016, 0x831e16a9, 0x22279247, 0x1a1c1934, + 0xbb259dda, 0x6a6b0fd2, 0xcb528b3c, 0xf369004f, 0x525084a1, + 0xbfdf99ac, 0x1ee61d42, 0x26dd9631, 0x87e412df, 0x56aa80d7, + 0xf7930439, 0xcfa88f4a, 0x6e910ba4, 0xb644ad1b, 0x177d29f5, + 0x2f46a286, 0x8e7f2668, 0x5f31b460, 0xfe08308e, 0xc633bbfd, + 0x670a3f13, 0xace9f0c2, 0x0dd0742c, 0x35ebff5f, 0x94d27bb1, + 0x459ce9b9, 0xe4a56d57, 0xdc9ee624, 0x7da762ca, 0xa572c475, + 0x044b409b, 0x3c70cbe8, 0x9d494f06, 0x4c07dd0e, 0xed3e59e0, + 0xd505d293, 0x743c567d, 0xd56aeec8, 0x74536a26, 0x4c68e155, + 0xed5165bb, 0x3c1ff7b3, 0x9d26735d, 0xa51df82e, 0x04247cc0, + 0xdcf1da7f, 0x7dc85e91, 0x45f3d5e2, 0xe4ca510c, 0x3584c304, + 0x94bd47ea, 0xac86cc99, 0x0dbf4877, 0xc65c87a6, 0x67650348, + 0x5f5e883b, 0xfe670cd5, 0x2f299edd, 0x8e101a33, 0xb62b9140, + 0x171215ae, 0xcfc7b311, 0x6efe37ff, 0x56c5bc8c, 0xf7fc3862, + 0x26b2aa6a, 0x878b2e84, 0xbfb0a5f7, 0x1e892119, 0xf3063c14, + 0x523fb8fa, 0x6a043389, 0xcb3db767, 0x1a73256f, 0xbb4aa181, + 0x83712af2, 0x2248ae1c, 0xfa9d08a3, 0x5ba48c4d, 0x639f073e, + 0xc2a683d0, 0x13e811d8, 0xb2d19536, 0x8aea1e45, 0x2bd39aab, + 0xe030557a, 0x4109d194, 0x79325ae7, 0xd80bde09, 0x09454c01, + 0xa87cc8ef, 0x9047439c, 0x317ec772, 0xe9ab61cd, 0x4892e523, + 0x70a96e50, 0xd190eabe, 0x00de78b6, 0xa1e7fc58, 0x99dc772b, + 0x38e5f3c5}, + {0x00000000, 0xe81790a1, 0x0b5e2703, 0xe349b7a2, 0x16bc4e06, + 0xfeabdea7, 0x1de26905, 0xf5f5f9a4, 0x2d789c0c, 0xc56f0cad, + 0x2626bb0f, 0xce312bae, 0x3bc4d20a, 0xd3d342ab, 0x309af509, + 0xd88d65a8, 0x5af13818, 0xb2e6a8b9, 0x51af1f1b, 0xb9b88fba, + 0x4c4d761e, 0xa45ae6bf, 0x4713511d, 0xaf04c1bc, 0x7789a414, + 0x9f9e34b5, 0x7cd78317, 0x94c013b6, 0x6135ea12, 0x89227ab3, + 0x6a6bcd11, 0x827c5db0, 0xb5e27030, 0x5df5e091, 0xbebc5733, + 0x56abc792, 0xa35e3e36, 0x4b49ae97, 0xa8001935, 0x40178994, + 0x989aec3c, 0x708d7c9d, 0x93c4cb3f, 0x7bd35b9e, 0x8e26a23a, + 0x6631329b, 0x85788539, 0x6d6f1598, 0xef134828, 0x0704d889, + 0xe44d6f2b, 0x0c5aff8a, 0xf9af062e, 0x11b8968f, 0xf2f1212d, + 0x1ae6b18c, 0xc26bd424, 0x2a7c4485, 0xc935f327, 0x21226386, + 0xd4d79a22, 0x3cc00a83, 0xdf89bd21, 0x379e2d80, 0xb0b5e621, + 0x58a27680, 0xbbebc122, 0x53fc5183, 0xa609a827, 0x4e1e3886, + 0xad578f24, 0x45401f85, 0x9dcd7a2d, 0x75daea8c, 0x96935d2e, + 0x7e84cd8f, 0x8b71342b, 0x6366a48a, 0x802f1328, 0x68388389, + 0xea44de39, 0x02534e98, 0xe11af93a, 0x090d699b, 0xfcf8903f, + 0x14ef009e, 0xf7a6b73c, 0x1fb1279d, 0xc73c4235, 0x2f2bd294, + 0xcc626536, 0x2475f597, 0xd1800c33, 0x39979c92, 0xdade2b30, + 0x32c9bb91, 0x05579611, 0xed4006b0, 0x0e09b112, 0xe61e21b3, + 0x13ebd817, 0xfbfc48b6, 0x18b5ff14, 0xf0a26fb5, 0x282f0a1d, + 0xc0389abc, 0x23712d1e, 0xcb66bdbf, 0x3e93441b, 0xd684d4ba, + 0x35cd6318, 0xdddaf3b9, 0x5fa6ae09, 0xb7b13ea8, 0x54f8890a, + 0xbcef19ab, 0x491ae00f, 0xa10d70ae, 0x4244c70c, 0xaa5357ad, + 0x72de3205, 0x9ac9a2a4, 0x79801506, 0x919785a7, 0x64627c03, + 0x8c75eca2, 0x6f3c5b00, 0x872bcba1, 0xba1aca03, 0x520d5aa2, + 0xb144ed00, 0x59537da1, 0xaca68405, 0x44b114a4, 0xa7f8a306, + 0x4fef33a7, 0x9762560f, 0x7f75c6ae, 0x9c3c710c, 0x742be1ad, + 0x81de1809, 0x69c988a8, 0x8a803f0a, 0x6297afab, 0xe0ebf21b, + 0x08fc62ba, 0xebb5d518, 0x03a245b9, 0xf657bc1d, 0x1e402cbc, + 0xfd099b1e, 0x151e0bbf, 0xcd936e17, 0x2584feb6, 0xc6cd4914, + 0x2edad9b5, 0xdb2f2011, 0x3338b0b0, 0xd0710712, 0x386697b3, + 0x0ff8ba33, 0xe7ef2a92, 0x04a69d30, 0xecb10d91, 0x1944f435, + 0xf1536494, 0x121ad336, 0xfa0d4397, 0x2280263f, 0xca97b69e, + 0x29de013c, 0xc1c9919d, 0x343c6839, 0xdc2bf898, 0x3f624f3a, + 0xd775df9b, 0x5509822b, 0xbd1e128a, 0x5e57a528, 0xb6403589, + 0x43b5cc2d, 0xaba25c8c, 0x48ebeb2e, 0xa0fc7b8f, 0x78711e27, + 0x90668e86, 0x732f3924, 0x9b38a985, 0x6ecd5021, 0x86dac080, + 0x65937722, 0x8d84e783, 0x0aaf2c22, 0xe2b8bc83, 0x01f10b21, + 0xe9e69b80, 0x1c136224, 0xf404f285, 0x174d4527, 0xff5ad586, + 0x27d7b02e, 0xcfc0208f, 0x2c89972d, 0xc49e078c, 0x316bfe28, + 0xd97c6e89, 0x3a35d92b, 0xd222498a, 0x505e143a, 0xb849849b, + 0x5b003339, 0xb317a398, 0x46e25a3c, 0xaef5ca9d, 0x4dbc7d3f, + 0xa5abed9e, 0x7d268836, 0x95311897, 0x7678af35, 0x9e6f3f94, + 0x6b9ac630, 0x838d5691, 0x60c4e133, 0x88d37192, 0xbf4d5c12, + 0x575accb3, 0xb4137b11, 0x5c04ebb0, 0xa9f11214, 0x41e682b5, + 0xa2af3517, 0x4ab8a5b6, 0x9235c01e, 0x7a2250bf, 0x996be71d, + 0x717c77bc, 0x84898e18, 0x6c9e1eb9, 0x8fd7a91b, 0x67c039ba, + 0xe5bc640a, 0x0dabf4ab, 0xeee24309, 0x06f5d3a8, 0xf3002a0c, + 0x1b17baad, 0xf85e0d0f, 0x10499dae, 0xc8c4f806, 0x20d368a7, + 0xc39adf05, 0x2b8d4fa4, 0xde78b600, 0x366f26a1, 0xd5269103, + 0x3d3101a2}}; + +local const z_word_t FAR crc_braid_big_table[][256] = { + {0x0000000000000000, 0xa19017e800000000, 0x03275e0b00000000, + 0xa2b749e300000000, 0x064ebc1600000000, 0xa7deabfe00000000, + 0x0569e21d00000000, 0xa4f9f5f500000000, 0x0c9c782d00000000, + 0xad0c6fc500000000, 0x0fbb262600000000, 0xae2b31ce00000000, + 0x0ad2c43b00000000, 0xab42d3d300000000, 0x09f59a3000000000, + 0xa8658dd800000000, 0x1838f15a00000000, 0xb9a8e6b200000000, + 0x1b1faf5100000000, 0xba8fb8b900000000, 0x1e764d4c00000000, + 0xbfe65aa400000000, 0x1d51134700000000, 0xbcc104af00000000, + 0x14a4897700000000, 0xb5349e9f00000000, 0x1783d77c00000000, + 0xb613c09400000000, 0x12ea356100000000, 0xb37a228900000000, + 0x11cd6b6a00000000, 0xb05d7c8200000000, 0x3070e2b500000000, + 0x91e0f55d00000000, 0x3357bcbe00000000, 0x92c7ab5600000000, + 0x363e5ea300000000, 0x97ae494b00000000, 0x351900a800000000, + 0x9489174000000000, 0x3cec9a9800000000, 0x9d7c8d7000000000, + 0x3fcbc49300000000, 0x9e5bd37b00000000, 0x3aa2268e00000000, + 0x9b32316600000000, 0x3985788500000000, 0x98156f6d00000000, + 0x284813ef00000000, 0x89d8040700000000, 0x2b6f4de400000000, + 0x8aff5a0c00000000, 0x2e06aff900000000, 0x8f96b81100000000, + 0x2d21f1f200000000, 0x8cb1e61a00000000, 0x24d46bc200000000, + 0x85447c2a00000000, 0x27f335c900000000, 0x8663222100000000, + 0x229ad7d400000000, 0x830ac03c00000000, 0x21bd89df00000000, + 0x802d9e3700000000, 0x21e6b5b000000000, 0x8076a25800000000, + 0x22c1ebbb00000000, 0x8351fc5300000000, 0x27a809a600000000, + 0x86381e4e00000000, 0x248f57ad00000000, 0x851f404500000000, + 0x2d7acd9d00000000, 0x8ceada7500000000, 0x2e5d939600000000, + 0x8fcd847e00000000, 0x2b34718b00000000, 0x8aa4666300000000, + 0x28132f8000000000, 0x8983386800000000, 0x39de44ea00000000, + 0x984e530200000000, 0x3af91ae100000000, 0x9b690d0900000000, + 0x3f90f8fc00000000, 0x9e00ef1400000000, 0x3cb7a6f700000000, + 0x9d27b11f00000000, 0x35423cc700000000, 0x94d22b2f00000000, + 0x366562cc00000000, 0x97f5752400000000, 0x330c80d100000000, + 0x929c973900000000, 0x302bdeda00000000, 0x91bbc93200000000, + 0x1196570500000000, 0xb00640ed00000000, 0x12b1090e00000000, + 0xb3211ee600000000, 0x17d8eb1300000000, 0xb648fcfb00000000, + 0x14ffb51800000000, 0xb56fa2f000000000, 0x1d0a2f2800000000, + 0xbc9a38c000000000, 0x1e2d712300000000, 0xbfbd66cb00000000, + 0x1b44933e00000000, 0xbad484d600000000, 0x1863cd3500000000, + 0xb9f3dadd00000000, 0x09aea65f00000000, 0xa83eb1b700000000, + 0x0a89f85400000000, 0xab19efbc00000000, 0x0fe01a4900000000, + 0xae700da100000000, 0x0cc7444200000000, 0xad5753aa00000000, + 0x0532de7200000000, 0xa4a2c99a00000000, 0x0615807900000000, + 0xa785979100000000, 0x037c626400000000, 0xa2ec758c00000000, + 0x005b3c6f00000000, 0xa1cb2b8700000000, 0x03ca1aba00000000, + 0xa25a0d5200000000, 0x00ed44b100000000, 0xa17d535900000000, + 0x0584a6ac00000000, 0xa414b14400000000, 0x06a3f8a700000000, + 0xa733ef4f00000000, 0x0f56629700000000, 0xaec6757f00000000, + 0x0c713c9c00000000, 0xade12b7400000000, 0x0918de8100000000, + 0xa888c96900000000, 0x0a3f808a00000000, 0xabaf976200000000, + 0x1bf2ebe000000000, 0xba62fc0800000000, 0x18d5b5eb00000000, + 0xb945a20300000000, 0x1dbc57f600000000, 0xbc2c401e00000000, + 0x1e9b09fd00000000, 0xbf0b1e1500000000, 0x176e93cd00000000, + 0xb6fe842500000000, 0x1449cdc600000000, 0xb5d9da2e00000000, + 0x11202fdb00000000, 0xb0b0383300000000, 0x120771d000000000, + 0xb397663800000000, 0x33baf80f00000000, 0x922aefe700000000, + 0x309da60400000000, 0x910db1ec00000000, 0x35f4441900000000, + 0x946453f100000000, 0x36d31a1200000000, 0x97430dfa00000000, + 0x3f26802200000000, 0x9eb697ca00000000, 0x3c01de2900000000, + 0x9d91c9c100000000, 0x39683c3400000000, 0x98f82bdc00000000, + 0x3a4f623f00000000, 0x9bdf75d700000000, 0x2b82095500000000, + 0x8a121ebd00000000, 0x28a5575e00000000, 0x893540b600000000, + 0x2dccb54300000000, 0x8c5ca2ab00000000, 0x2eebeb4800000000, + 0x8f7bfca000000000, 0x271e717800000000, 0x868e669000000000, + 0x24392f7300000000, 0x85a9389b00000000, 0x2150cd6e00000000, + 0x80c0da8600000000, 0x2277936500000000, 0x83e7848d00000000, + 0x222caf0a00000000, 0x83bcb8e200000000, 0x210bf10100000000, + 0x809be6e900000000, 0x2462131c00000000, 0x85f204f400000000, + 0x27454d1700000000, 0x86d55aff00000000, 0x2eb0d72700000000, + 0x8f20c0cf00000000, 0x2d97892c00000000, 0x8c079ec400000000, + 0x28fe6b3100000000, 0x896e7cd900000000, 0x2bd9353a00000000, + 0x8a4922d200000000, 0x3a145e5000000000, 0x9b8449b800000000, + 0x3933005b00000000, 0x98a317b300000000, 0x3c5ae24600000000, + 0x9dcaf5ae00000000, 0x3f7dbc4d00000000, 0x9eedaba500000000, + 0x3688267d00000000, 0x9718319500000000, 0x35af787600000000, + 0x943f6f9e00000000, 0x30c69a6b00000000, 0x91568d8300000000, + 0x33e1c46000000000, 0x9271d38800000000, 0x125c4dbf00000000, + 0xb3cc5a5700000000, 0x117b13b400000000, 0xb0eb045c00000000, + 0x1412f1a900000000, 0xb582e64100000000, 0x1735afa200000000, + 0xb6a5b84a00000000, 0x1ec0359200000000, 0xbf50227a00000000, + 0x1de76b9900000000, 0xbc777c7100000000, 0x188e898400000000, + 0xb91e9e6c00000000, 0x1ba9d78f00000000, 0xba39c06700000000, + 0x0a64bce500000000, 0xabf4ab0d00000000, 0x0943e2ee00000000, + 0xa8d3f50600000000, 0x0c2a00f300000000, 0xadba171b00000000, + 0x0f0d5ef800000000, 0xae9d491000000000, 0x06f8c4c800000000, + 0xa768d32000000000, 0x05df9ac300000000, 0xa44f8d2b00000000, + 0x00b678de00000000, 0xa1266f3600000000, 0x039126d500000000, + 0xa201313d00000000}, + {0x0000000000000000, 0xee8439a100000000, 0x9d0f029900000000, + 0x738b3b3800000000, 0x7b1975e900000000, 0x959d4c4800000000, + 0xe616777000000000, 0x08924ed100000000, 0xb7349b0900000000, + 0x59b0a2a800000000, 0x2a3b999000000000, 0xc4bfa03100000000, + 0xcc2deee000000000, 0x22a9d74100000000, 0x5122ec7900000000, + 0xbfa6d5d800000000, 0x6e69361300000000, 0x80ed0fb200000000, + 0xf366348a00000000, 0x1de20d2b00000000, 0x157043fa00000000, + 0xfbf47a5b00000000, 0x887f416300000000, 0x66fb78c200000000, + 0xd95dad1a00000000, 0x37d994bb00000000, 0x4452af8300000000, + 0xaad6962200000000, 0xa244d8f300000000, 0x4cc0e15200000000, + 0x3f4bda6a00000000, 0xd1cfe3cb00000000, 0xdcd26c2600000000, + 0x3256558700000000, 0x41dd6ebf00000000, 0xaf59571e00000000, + 0xa7cb19cf00000000, 0x494f206e00000000, 0x3ac41b5600000000, + 0xd44022f700000000, 0x6be6f72f00000000, 0x8562ce8e00000000, + 0xf6e9f5b600000000, 0x186dcc1700000000, 0x10ff82c600000000, + 0xfe7bbb6700000000, 0x8df0805f00000000, 0x6374b9fe00000000, + 0xb2bb5a3500000000, 0x5c3f639400000000, 0x2fb458ac00000000, + 0xc130610d00000000, 0xc9a22fdc00000000, 0x2726167d00000000, + 0x54ad2d4500000000, 0xba2914e400000000, 0x058fc13c00000000, + 0xeb0bf89d00000000, 0x9880c3a500000000, 0x7604fa0400000000, + 0x7e96b4d500000000, 0x90128d7400000000, 0xe399b64c00000000, + 0x0d1d8fed00000000, 0xb8a5d94c00000000, 0x5621e0ed00000000, + 0x25aadbd500000000, 0xcb2ee27400000000, 0xc3bcaca500000000, + 0x2d38950400000000, 0x5eb3ae3c00000000, 0xb037979d00000000, + 0x0f91424500000000, 0xe1157be400000000, 0x929e40dc00000000, + 0x7c1a797d00000000, 0x748837ac00000000, 0x9a0c0e0d00000000, + 0xe987353500000000, 0x07030c9400000000, 0xd6ccef5f00000000, + 0x3848d6fe00000000, 0x4bc3edc600000000, 0xa547d46700000000, + 0xadd59ab600000000, 0x4351a31700000000, 0x30da982f00000000, + 0xde5ea18e00000000, 0x61f8745600000000, 0x8f7c4df700000000, + 0xfcf776cf00000000, 0x12734f6e00000000, 0x1ae101bf00000000, + 0xf465381e00000000, 0x87ee032600000000, 0x696a3a8700000000, + 0x6477b56a00000000, 0x8af38ccb00000000, 0xf978b7f300000000, + 0x17fc8e5200000000, 0x1f6ec08300000000, 0xf1eaf92200000000, + 0x8261c21a00000000, 0x6ce5fbbb00000000, 0xd3432e6300000000, + 0x3dc717c200000000, 0x4e4c2cfa00000000, 0xa0c8155b00000000, + 0xa85a5b8a00000000, 0x46de622b00000000, 0x3555591300000000, + 0xdbd160b200000000, 0x0a1e837900000000, 0xe49abad800000000, + 0x971181e000000000, 0x7995b84100000000, 0x7107f69000000000, + 0x9f83cf3100000000, 0xec08f40900000000, 0x028ccda800000000, + 0xbd2a187000000000, 0x53ae21d100000000, 0x20251ae900000000, + 0xcea1234800000000, 0xc6336d9900000000, 0x28b7543800000000, + 0x5b3c6f0000000000, 0xb5b856a100000000, 0x704bb39900000000, + 0x9ecf8a3800000000, 0xed44b10000000000, 0x03c088a100000000, + 0x0b52c67000000000, 0xe5d6ffd100000000, 0x965dc4e900000000, + 0x78d9fd4800000000, 0xc77f289000000000, 0x29fb113100000000, + 0x5a702a0900000000, 0xb4f413a800000000, 0xbc665d7900000000, + 0x52e264d800000000, 0x21695fe000000000, 0xcfed664100000000, + 0x1e22858a00000000, 0xf0a6bc2b00000000, 0x832d871300000000, + 0x6da9beb200000000, 0x653bf06300000000, 0x8bbfc9c200000000, + 0xf834f2fa00000000, 0x16b0cb5b00000000, 0xa9161e8300000000, + 0x4792272200000000, 0x34191c1a00000000, 0xda9d25bb00000000, + 0xd20f6b6a00000000, 0x3c8b52cb00000000, 0x4f0069f300000000, + 0xa184505200000000, 0xac99dfbf00000000, 0x421de61e00000000, + 0x3196dd2600000000, 0xdf12e48700000000, 0xd780aa5600000000, + 0x390493f700000000, 0x4a8fa8cf00000000, 0xa40b916e00000000, + 0x1bad44b600000000, 0xf5297d1700000000, 0x86a2462f00000000, + 0x68267f8e00000000, 0x60b4315f00000000, 0x8e3008fe00000000, + 0xfdbb33c600000000, 0x133f0a6700000000, 0xc2f0e9ac00000000, + 0x2c74d00d00000000, 0x5fffeb3500000000, 0xb17bd29400000000, + 0xb9e99c4500000000, 0x576da5e400000000, 0x24e69edc00000000, + 0xca62a77d00000000, 0x75c472a500000000, 0x9b404b0400000000, + 0xe8cb703c00000000, 0x064f499d00000000, 0x0edd074c00000000, + 0xe0593eed00000000, 0x93d205d500000000, 0x7d563c7400000000, + 0xc8ee6ad500000000, 0x266a537400000000, 0x55e1684c00000000, + 0xbb6551ed00000000, 0xb3f71f3c00000000, 0x5d73269d00000000, + 0x2ef81da500000000, 0xc07c240400000000, 0x7fdaf1dc00000000, + 0x915ec87d00000000, 0xe2d5f34500000000, 0x0c51cae400000000, + 0x04c3843500000000, 0xea47bd9400000000, 0x99cc86ac00000000, + 0x7748bf0d00000000, 0xa6875cc600000000, 0x4803656700000000, + 0x3b885e5f00000000, 0xd50c67fe00000000, 0xdd9e292f00000000, + 0x331a108e00000000, 0x40912bb600000000, 0xae15121700000000, + 0x11b3c7cf00000000, 0xff37fe6e00000000, 0x8cbcc55600000000, + 0x6238fcf700000000, 0x6aaab22600000000, 0x842e8b8700000000, + 0xf7a5b0bf00000000, 0x1921891e00000000, 0x143c06f300000000, + 0xfab83f5200000000, 0x8933046a00000000, 0x67b73dcb00000000, + 0x6f25731a00000000, 0x81a14abb00000000, 0xf22a718300000000, + 0x1cae482200000000, 0xa3089dfa00000000, 0x4d8ca45b00000000, + 0x3e079f6300000000, 0xd083a6c200000000, 0xd811e81300000000, + 0x3695d1b200000000, 0x451eea8a00000000, 0xab9ad32b00000000, + 0x7a5530e000000000, 0x94d1094100000000, 0xe75a327900000000, + 0x09de0bd800000000, 0x014c450900000000, 0xefc87ca800000000, + 0x9c43479000000000, 0x72c77e3100000000, 0xcd61abe900000000, + 0x23e5924800000000, 0x506ea97000000000, 0xbeea90d100000000, + 0xb678de0000000000, 0x58fce7a100000000, 0x2b77dc9900000000, + 0xc5f3e53800000000}, + {0x0000000000000000, 0xfbf6134700000000, 0xf6ed278e00000000, + 0x0d1b34c900000000, 0xaddd3ec700000000, 0x562b2d8000000000, + 0x5b30194900000000, 0xa0c60a0e00000000, 0x1bbd0c5500000000, + 0xe04b1f1200000000, 0xed502bdb00000000, 0x16a6389c00000000, + 0xb660329200000000, 0x4d9621d500000000, 0x408d151c00000000, + 0xbb7b065b00000000, 0x367a19aa00000000, 0xcd8c0aed00000000, + 0xc0973e2400000000, 0x3b612d6300000000, 0x9ba7276d00000000, + 0x6051342a00000000, 0x6d4a00e300000000, 0x96bc13a400000000, + 0x2dc715ff00000000, 0xd63106b800000000, 0xdb2a327100000000, + 0x20dc213600000000, 0x801a2b3800000000, 0x7bec387f00000000, + 0x76f70cb600000000, 0x8d011ff100000000, 0x2df2438f00000000, + 0xd60450c800000000, 0xdb1f640100000000, 0x20e9774600000000, + 0x802f7d4800000000, 0x7bd96e0f00000000, 0x76c25ac600000000, + 0x8d34498100000000, 0x364f4fda00000000, 0xcdb95c9d00000000, + 0xc0a2685400000000, 0x3b547b1300000000, 0x9b92711d00000000, + 0x6064625a00000000, 0x6d7f569300000000, 0x968945d400000000, + 0x1b885a2500000000, 0xe07e496200000000, 0xed657dab00000000, + 0x16936eec00000000, 0xb65564e200000000, 0x4da377a500000000, + 0x40b8436c00000000, 0xbb4e502b00000000, 0x0035567000000000, + 0xfbc3453700000000, 0xf6d871fe00000000, 0x0d2e62b900000000, + 0xade868b700000000, 0x561e7bf000000000, 0x5b054f3900000000, + 0xa0f35c7e00000000, 0x1be2f6c500000000, 0xe014e58200000000, + 0xed0fd14b00000000, 0x16f9c20c00000000, 0xb63fc80200000000, + 0x4dc9db4500000000, 0x40d2ef8c00000000, 0xbb24fccb00000000, + 0x005ffa9000000000, 0xfba9e9d700000000, 0xf6b2dd1e00000000, + 0x0d44ce5900000000, 0xad82c45700000000, 0x5674d71000000000, + 0x5b6fe3d900000000, 0xa099f09e00000000, 0x2d98ef6f00000000, + 0xd66efc2800000000, 0xdb75c8e100000000, 0x2083dba600000000, + 0x8045d1a800000000, 0x7bb3c2ef00000000, 0x76a8f62600000000, + 0x8d5ee56100000000, 0x3625e33a00000000, 0xcdd3f07d00000000, + 0xc0c8c4b400000000, 0x3b3ed7f300000000, 0x9bf8ddfd00000000, + 0x600eceba00000000, 0x6d15fa7300000000, 0x96e3e93400000000, + 0x3610b54a00000000, 0xcde6a60d00000000, 0xc0fd92c400000000, + 0x3b0b818300000000, 0x9bcd8b8d00000000, 0x603b98ca00000000, + 0x6d20ac0300000000, 0x96d6bf4400000000, 0x2dadb91f00000000, + 0xd65baa5800000000, 0xdb409e9100000000, 0x20b68dd600000000, + 0x807087d800000000, 0x7b86949f00000000, 0x769da05600000000, + 0x8d6bb31100000000, 0x006aace000000000, 0xfb9cbfa700000000, + 0xf6878b6e00000000, 0x0d71982900000000, 0xadb7922700000000, + 0x5641816000000000, 0x5b5ab5a900000000, 0xa0aca6ee00000000, + 0x1bd7a0b500000000, 0xe021b3f200000000, 0xed3a873b00000000, + 0x16cc947c00000000, 0xb60a9e7200000000, 0x4dfc8d3500000000, + 0x40e7b9fc00000000, 0xbb11aabb00000000, 0x77c29c5000000000, + 0x8c348f1700000000, 0x812fbbde00000000, 0x7ad9a89900000000, + 0xda1fa29700000000, 0x21e9b1d000000000, 0x2cf2851900000000, + 0xd704965e00000000, 0x6c7f900500000000, 0x9789834200000000, + 0x9a92b78b00000000, 0x6164a4cc00000000, 0xc1a2aec200000000, + 0x3a54bd8500000000, 0x374f894c00000000, 0xccb99a0b00000000, + 0x41b885fa00000000, 0xba4e96bd00000000, 0xb755a27400000000, + 0x4ca3b13300000000, 0xec65bb3d00000000, 0x1793a87a00000000, + 0x1a889cb300000000, 0xe17e8ff400000000, 0x5a0589af00000000, + 0xa1f39ae800000000, 0xace8ae2100000000, 0x571ebd6600000000, + 0xf7d8b76800000000, 0x0c2ea42f00000000, 0x013590e600000000, + 0xfac383a100000000, 0x5a30dfdf00000000, 0xa1c6cc9800000000, + 0xacddf85100000000, 0x572beb1600000000, 0xf7ede11800000000, + 0x0c1bf25f00000000, 0x0100c69600000000, 0xfaf6d5d100000000, + 0x418dd38a00000000, 0xba7bc0cd00000000, 0xb760f40400000000, + 0x4c96e74300000000, 0xec50ed4d00000000, 0x17a6fe0a00000000, + 0x1abdcac300000000, 0xe14bd98400000000, 0x6c4ac67500000000, + 0x97bcd53200000000, 0x9aa7e1fb00000000, 0x6151f2bc00000000, + 0xc197f8b200000000, 0x3a61ebf500000000, 0x377adf3c00000000, + 0xcc8ccc7b00000000, 0x77f7ca2000000000, 0x8c01d96700000000, + 0x811aedae00000000, 0x7aecfee900000000, 0xda2af4e700000000, + 0x21dce7a000000000, 0x2cc7d36900000000, 0xd731c02e00000000, + 0x6c206a9500000000, 0x97d679d200000000, 0x9acd4d1b00000000, + 0x613b5e5c00000000, 0xc1fd545200000000, 0x3a0b471500000000, + 0x371073dc00000000, 0xcce6609b00000000, 0x779d66c000000000, + 0x8c6b758700000000, 0x8170414e00000000, 0x7a86520900000000, + 0xda40580700000000, 0x21b64b4000000000, 0x2cad7f8900000000, + 0xd75b6cce00000000, 0x5a5a733f00000000, 0xa1ac607800000000, + 0xacb754b100000000, 0x574147f600000000, 0xf7874df800000000, + 0x0c715ebf00000000, 0x016a6a7600000000, 0xfa9c793100000000, + 0x41e77f6a00000000, 0xba116c2d00000000, 0xb70a58e400000000, + 0x4cfc4ba300000000, 0xec3a41ad00000000, 0x17cc52ea00000000, + 0x1ad7662300000000, 0xe121756400000000, 0x41d2291a00000000, + 0xba243a5d00000000, 0xb73f0e9400000000, 0x4cc91dd300000000, + 0xec0f17dd00000000, 0x17f9049a00000000, 0x1ae2305300000000, + 0xe114231400000000, 0x5a6f254f00000000, 0xa199360800000000, + 0xac8202c100000000, 0x5774118600000000, 0xf7b21b8800000000, + 0x0c4408cf00000000, 0x015f3c0600000000, 0xfaa92f4100000000, + 0x77a830b000000000, 0x8c5e23f700000000, 0x8145173e00000000, + 0x7ab3047900000000, 0xda750e7700000000, 0x21831d3000000000, + 0x2c9829f900000000, 0xd76e3abe00000000, 0x6c153ce500000000, + 0x97e32fa200000000, 0x9af81b6b00000000, 0x610e082c00000000, + 0xc1c8022200000000, 0x3a3e116500000000, 0x372525ac00000000, + 0xccd336eb00000000}, + {0x0000000000000000, 0x6238282a00000000, 0xc470505400000000, + 0xa648787e00000000, 0x88e1a0a800000000, 0xead9888200000000, + 0x4c91f0fc00000000, 0x2ea9d8d600000000, 0x51c5308a00000000, + 0x33fd18a000000000, 0x95b560de00000000, 0xf78d48f400000000, + 0xd924902200000000, 0xbb1cb80800000000, 0x1d54c07600000000, + 0x7f6ce85c00000000, 0xe38c10cf00000000, 0x81b438e500000000, + 0x27fc409b00000000, 0x45c468b100000000, 0x6b6db06700000000, + 0x0955984d00000000, 0xaf1de03300000000, 0xcd25c81900000000, + 0xb249204500000000, 0xd071086f00000000, 0x7639701100000000, + 0x1401583b00000000, 0x3aa880ed00000000, 0x5890a8c700000000, + 0xfed8d0b900000000, 0x9ce0f89300000000, 0x871f504500000000, + 0xe527786f00000000, 0x436f001100000000, 0x2157283b00000000, + 0x0ffef0ed00000000, 0x6dc6d8c700000000, 0xcb8ea0b900000000, + 0xa9b6889300000000, 0xd6da60cf00000000, 0xb4e248e500000000, + 0x12aa309b00000000, 0x709218b100000000, 0x5e3bc06700000000, + 0x3c03e84d00000000, 0x9a4b903300000000, 0xf873b81900000000, + 0x6493408a00000000, 0x06ab68a000000000, 0xa0e310de00000000, + 0xc2db38f400000000, 0xec72e02200000000, 0x8e4ac80800000000, + 0x2802b07600000000, 0x4a3a985c00000000, 0x3556700000000000, + 0x576e582a00000000, 0xf126205400000000, 0x931e087e00000000, + 0xbdb7d0a800000000, 0xdf8ff88200000000, 0x79c780fc00000000, + 0x1bffa8d600000000, 0x0e3fa08a00000000, 0x6c0788a000000000, + 0xca4ff0de00000000, 0xa877d8f400000000, 0x86de002200000000, + 0xe4e6280800000000, 0x42ae507600000000, 0x2096785c00000000, + 0x5ffa900000000000, 0x3dc2b82a00000000, 0x9b8ac05400000000, + 0xf9b2e87e00000000, 0xd71b30a800000000, 0xb523188200000000, + 0x136b60fc00000000, 0x715348d600000000, 0xedb3b04500000000, + 0x8f8b986f00000000, 0x29c3e01100000000, 0x4bfbc83b00000000, + 0x655210ed00000000, 0x076a38c700000000, 0xa12240b900000000, + 0xc31a689300000000, 0xbc7680cf00000000, 0xde4ea8e500000000, + 0x7806d09b00000000, 0x1a3ef8b100000000, 0x3497206700000000, + 0x56af084d00000000, 0xf0e7703300000000, 0x92df581900000000, + 0x8920f0cf00000000, 0xeb18d8e500000000, 0x4d50a09b00000000, + 0x2f6888b100000000, 0x01c1506700000000, 0x63f9784d00000000, + 0xc5b1003300000000, 0xa789281900000000, 0xd8e5c04500000000, + 0xbadde86f00000000, 0x1c95901100000000, 0x7eadb83b00000000, + 0x500460ed00000000, 0x323c48c700000000, 0x947430b900000000, + 0xf64c189300000000, 0x6aace00000000000, 0x0894c82a00000000, + 0xaedcb05400000000, 0xcce4987e00000000, 0xe24d40a800000000, + 0x8075688200000000, 0x263d10fc00000000, 0x440538d600000000, + 0x3b69d08a00000000, 0x5951f8a000000000, 0xff1980de00000000, + 0x9d21a8f400000000, 0xb388702200000000, 0xd1b0580800000000, + 0x77f8207600000000, 0x15c0085c00000000, 0x5d7831ce00000000, + 0x3f4019e400000000, 0x9908619a00000000, 0xfb3049b000000000, + 0xd599916600000000, 0xb7a1b94c00000000, 0x11e9c13200000000, + 0x73d1e91800000000, 0x0cbd014400000000, 0x6e85296e00000000, + 0xc8cd511000000000, 0xaaf5793a00000000, 0x845ca1ec00000000, + 0xe66489c600000000, 0x402cf1b800000000, 0x2214d99200000000, + 0xbef4210100000000, 0xdccc092b00000000, 0x7a84715500000000, + 0x18bc597f00000000, 0x361581a900000000, 0x542da98300000000, + 0xf265d1fd00000000, 0x905df9d700000000, 0xef31118b00000000, + 0x8d0939a100000000, 0x2b4141df00000000, 0x497969f500000000, + 0x67d0b12300000000, 0x05e8990900000000, 0xa3a0e17700000000, + 0xc198c95d00000000, 0xda67618b00000000, 0xb85f49a100000000, + 0x1e1731df00000000, 0x7c2f19f500000000, 0x5286c12300000000, + 0x30bee90900000000, 0x96f6917700000000, 0xf4ceb95d00000000, + 0x8ba2510100000000, 0xe99a792b00000000, 0x4fd2015500000000, + 0x2dea297f00000000, 0x0343f1a900000000, 0x617bd98300000000, + 0xc733a1fd00000000, 0xa50b89d700000000, 0x39eb714400000000, + 0x5bd3596e00000000, 0xfd9b211000000000, 0x9fa3093a00000000, + 0xb10ad1ec00000000, 0xd332f9c600000000, 0x757a81b800000000, + 0x1742a99200000000, 0x682e41ce00000000, 0x0a1669e400000000, + 0xac5e119a00000000, 0xce6639b000000000, 0xe0cfe16600000000, + 0x82f7c94c00000000, 0x24bfb13200000000, 0x4687991800000000, + 0x5347914400000000, 0x317fb96e00000000, 0x9737c11000000000, + 0xf50fe93a00000000, 0xdba631ec00000000, 0xb99e19c600000000, + 0x1fd661b800000000, 0x7dee499200000000, 0x0282a1ce00000000, + 0x60ba89e400000000, 0xc6f2f19a00000000, 0xa4cad9b000000000, + 0x8a63016600000000, 0xe85b294c00000000, 0x4e13513200000000, + 0x2c2b791800000000, 0xb0cb818b00000000, 0xd2f3a9a100000000, + 0x74bbd1df00000000, 0x1683f9f500000000, 0x382a212300000000, + 0x5a12090900000000, 0xfc5a717700000000, 0x9e62595d00000000, + 0xe10eb10100000000, 0x8336992b00000000, 0x257ee15500000000, + 0x4746c97f00000000, 0x69ef11a900000000, 0x0bd7398300000000, + 0xad9f41fd00000000, 0xcfa769d700000000, 0xd458c10100000000, + 0xb660e92b00000000, 0x1028915500000000, 0x7210b97f00000000, + 0x5cb961a900000000, 0x3e81498300000000, 0x98c931fd00000000, + 0xfaf119d700000000, 0x859df18b00000000, 0xe7a5d9a100000000, + 0x41eda1df00000000, 0x23d589f500000000, 0x0d7c512300000000, + 0x6f44790900000000, 0xc90c017700000000, 0xab34295d00000000, + 0x37d4d1ce00000000, 0x55ecf9e400000000, 0xf3a4819a00000000, + 0x919ca9b000000000, 0xbf35716600000000, 0xdd0d594c00000000, + 0x7b45213200000000, 0x197d091800000000, 0x6611e14400000000, + 0x0429c96e00000000, 0xa261b11000000000, 0xc059993a00000000, + 0xeef041ec00000000, 0x8cc869c600000000, 0x2a8011b800000000, + 0x48b8399200000000}, + {0x0000000000000000, 0x4c2896a300000000, 0xd9565d9c00000000, + 0x957ecb3f00000000, 0xf3abcbe300000000, 0xbf835d4000000000, + 0x2afd967f00000000, 0x66d500dc00000000, 0xa751e61c00000000, + 0xeb7970bf00000000, 0x7e07bb8000000000, 0x322f2d2300000000, + 0x54fa2dff00000000, 0x18d2bb5c00000000, 0x8dac706300000000, + 0xc184e6c000000000, 0x4ea3cc3900000000, 0x028b5a9a00000000, + 0x97f591a500000000, 0xdbdd070600000000, 0xbd0807da00000000, + 0xf120917900000000, 0x645e5a4600000000, 0x2876cce500000000, + 0xe9f22a2500000000, 0xa5dabc8600000000, 0x30a477b900000000, + 0x7c8ce11a00000000, 0x1a59e1c600000000, 0x5671776500000000, + 0xc30fbc5a00000000, 0x8f272af900000000, 0x9c46997300000000, + 0xd06e0fd000000000, 0x4510c4ef00000000, 0x0938524c00000000, + 0x6fed529000000000, 0x23c5c43300000000, 0xb6bb0f0c00000000, + 0xfa9399af00000000, 0x3b177f6f00000000, 0x773fe9cc00000000, + 0xe24122f300000000, 0xae69b45000000000, 0xc8bcb48c00000000, + 0x8494222f00000000, 0x11eae91000000000, 0x5dc27fb300000000, + 0xd2e5554a00000000, 0x9ecdc3e900000000, 0x0bb308d600000000, + 0x479b9e7500000000, 0x214e9ea900000000, 0x6d66080a00000000, + 0xf818c33500000000, 0xb430559600000000, 0x75b4b35600000000, + 0x399c25f500000000, 0xace2eeca00000000, 0xe0ca786900000000, + 0x861f78b500000000, 0xca37ee1600000000, 0x5f49252900000000, + 0x1361b38a00000000, 0x388d32e700000000, 0x74a5a44400000000, + 0xe1db6f7b00000000, 0xadf3f9d800000000, 0xcb26f90400000000, + 0x870e6fa700000000, 0x1270a49800000000, 0x5e58323b00000000, + 0x9fdcd4fb00000000, 0xd3f4425800000000, 0x468a896700000000, + 0x0aa21fc400000000, 0x6c771f1800000000, 0x205f89bb00000000, + 0xb521428400000000, 0xf909d42700000000, 0x762efede00000000, + 0x3a06687d00000000, 0xaf78a34200000000, 0xe35035e100000000, + 0x8585353d00000000, 0xc9ada39e00000000, 0x5cd368a100000000, + 0x10fbfe0200000000, 0xd17f18c200000000, 0x9d578e6100000000, + 0x0829455e00000000, 0x4401d3fd00000000, 0x22d4d32100000000, + 0x6efc458200000000, 0xfb828ebd00000000, 0xb7aa181e00000000, + 0xa4cbab9400000000, 0xe8e33d3700000000, 0x7d9df60800000000, + 0x31b560ab00000000, 0x5760607700000000, 0x1b48f6d400000000, + 0x8e363deb00000000, 0xc21eab4800000000, 0x039a4d8800000000, + 0x4fb2db2b00000000, 0xdacc101400000000, 0x96e486b700000000, + 0xf031866b00000000, 0xbc1910c800000000, 0x2967dbf700000000, + 0x654f4d5400000000, 0xea6867ad00000000, 0xa640f10e00000000, + 0x333e3a3100000000, 0x7f16ac9200000000, 0x19c3ac4e00000000, + 0x55eb3aed00000000, 0xc095f1d200000000, 0x8cbd677100000000, + 0x4d3981b100000000, 0x0111171200000000, 0x946fdc2d00000000, + 0xd8474a8e00000000, 0xbe924a5200000000, 0xf2badcf100000000, + 0x67c417ce00000000, 0x2bec816d00000000, 0x311c141500000000, + 0x7d3482b600000000, 0xe84a498900000000, 0xa462df2a00000000, + 0xc2b7dff600000000, 0x8e9f495500000000, 0x1be1826a00000000, + 0x57c914c900000000, 0x964df20900000000, 0xda6564aa00000000, + 0x4f1baf9500000000, 0x0333393600000000, 0x65e639ea00000000, + 0x29ceaf4900000000, 0xbcb0647600000000, 0xf098f2d500000000, + 0x7fbfd82c00000000, 0x33974e8f00000000, 0xa6e985b000000000, + 0xeac1131300000000, 0x8c1413cf00000000, 0xc03c856c00000000, + 0x55424e5300000000, 0x196ad8f000000000, 0xd8ee3e3000000000, + 0x94c6a89300000000, 0x01b863ac00000000, 0x4d90f50f00000000, + 0x2b45f5d300000000, 0x676d637000000000, 0xf213a84f00000000, + 0xbe3b3eec00000000, 0xad5a8d6600000000, 0xe1721bc500000000, + 0x740cd0fa00000000, 0x3824465900000000, 0x5ef1468500000000, + 0x12d9d02600000000, 0x87a71b1900000000, 0xcb8f8dba00000000, + 0x0a0b6b7a00000000, 0x4623fdd900000000, 0xd35d36e600000000, + 0x9f75a04500000000, 0xf9a0a09900000000, 0xb588363a00000000, + 0x20f6fd0500000000, 0x6cde6ba600000000, 0xe3f9415f00000000, + 0xafd1d7fc00000000, 0x3aaf1cc300000000, 0x76878a6000000000, + 0x10528abc00000000, 0x5c7a1c1f00000000, 0xc904d72000000000, + 0x852c418300000000, 0x44a8a74300000000, 0x088031e000000000, + 0x9dfefadf00000000, 0xd1d66c7c00000000, 0xb7036ca000000000, + 0xfb2bfa0300000000, 0x6e55313c00000000, 0x227da79f00000000, + 0x099126f200000000, 0x45b9b05100000000, 0xd0c77b6e00000000, + 0x9cefedcd00000000, 0xfa3aed1100000000, 0xb6127bb200000000, + 0x236cb08d00000000, 0x6f44262e00000000, 0xaec0c0ee00000000, + 0xe2e8564d00000000, 0x77969d7200000000, 0x3bbe0bd100000000, + 0x5d6b0b0d00000000, 0x11439dae00000000, 0x843d569100000000, + 0xc815c03200000000, 0x4732eacb00000000, 0x0b1a7c6800000000, + 0x9e64b75700000000, 0xd24c21f400000000, 0xb499212800000000, + 0xf8b1b78b00000000, 0x6dcf7cb400000000, 0x21e7ea1700000000, + 0xe0630cd700000000, 0xac4b9a7400000000, 0x3935514b00000000, + 0x751dc7e800000000, 0x13c8c73400000000, 0x5fe0519700000000, + 0xca9e9aa800000000, 0x86b60c0b00000000, 0x95d7bf8100000000, + 0xd9ff292200000000, 0x4c81e21d00000000, 0x00a974be00000000, + 0x667c746200000000, 0x2a54e2c100000000, 0xbf2a29fe00000000, + 0xf302bf5d00000000, 0x3286599d00000000, 0x7eaecf3e00000000, + 0xebd0040100000000, 0xa7f892a200000000, 0xc12d927e00000000, + 0x8d0504dd00000000, 0x187bcfe200000000, 0x5453594100000000, + 0xdb7473b800000000, 0x975ce51b00000000, 0x02222e2400000000, + 0x4e0ab88700000000, 0x28dfb85b00000000, 0x64f72ef800000000, + 0xf189e5c700000000, 0xbda1736400000000, 0x7c2595a400000000, + 0x300d030700000000, 0xa573c83800000000, 0xe95b5e9b00000000, + 0x8f8e5e4700000000, 0xc3a6c8e400000000, 0x56d803db00000000, + 0x1af0957800000000}, + {0x0000000000000000, 0x939bc97f00000000, 0x263793ff00000000, + 0xb5ac5a8000000000, 0x0d68572400000000, 0x9ef39e5b00000000, + 0x2b5fc4db00000000, 0xb8c40da400000000, 0x1ad0ae4800000000, + 0x894b673700000000, 0x3ce73db700000000, 0xaf7cf4c800000000, + 0x17b8f96c00000000, 0x8423301300000000, 0x318f6a9300000000, + 0xa214a3ec00000000, 0x34a05d9100000000, 0xa73b94ee00000000, + 0x1297ce6e00000000, 0x810c071100000000, 0x39c80ab500000000, + 0xaa53c3ca00000000, 0x1fff994a00000000, 0x8c64503500000000, + 0x2e70f3d900000000, 0xbdeb3aa600000000, 0x0847602600000000, + 0x9bdca95900000000, 0x2318a4fd00000000, 0xb0836d8200000000, + 0x052f370200000000, 0x96b4fe7d00000000, 0x2946caf900000000, + 0xbadd038600000000, 0x0f71590600000000, 0x9cea907900000000, + 0x242e9ddd00000000, 0xb7b554a200000000, 0x02190e2200000000, + 0x9182c75d00000000, 0x339664b100000000, 0xa00dadce00000000, + 0x15a1f74e00000000, 0x863a3e3100000000, 0x3efe339500000000, + 0xad65faea00000000, 0x18c9a06a00000000, 0x8b52691500000000, + 0x1de6976800000000, 0x8e7d5e1700000000, 0x3bd1049700000000, + 0xa84acde800000000, 0x108ec04c00000000, 0x8315093300000000, + 0x36b953b300000000, 0xa5229acc00000000, 0x0736392000000000, + 0x94adf05f00000000, 0x2101aadf00000000, 0xb29a63a000000000, + 0x0a5e6e0400000000, 0x99c5a77b00000000, 0x2c69fdfb00000000, + 0xbff2348400000000, 0x138ae52800000000, 0x80112c5700000000, + 0x35bd76d700000000, 0xa626bfa800000000, 0x1ee2b20c00000000, + 0x8d797b7300000000, 0x38d521f300000000, 0xab4ee88c00000000, + 0x095a4b6000000000, 0x9ac1821f00000000, 0x2f6dd89f00000000, + 0xbcf611e000000000, 0x04321c4400000000, 0x97a9d53b00000000, + 0x22058fbb00000000, 0xb19e46c400000000, 0x272ab8b900000000, + 0xb4b171c600000000, 0x011d2b4600000000, 0x9286e23900000000, + 0x2a42ef9d00000000, 0xb9d926e200000000, 0x0c757c6200000000, + 0x9feeb51d00000000, 0x3dfa16f100000000, 0xae61df8e00000000, + 0x1bcd850e00000000, 0x88564c7100000000, 0x309241d500000000, + 0xa30988aa00000000, 0x16a5d22a00000000, 0x853e1b5500000000, + 0x3acc2fd100000000, 0xa957e6ae00000000, 0x1cfbbc2e00000000, + 0x8f60755100000000, 0x37a478f500000000, 0xa43fb18a00000000, + 0x1193eb0a00000000, 0x8208227500000000, 0x201c819900000000, + 0xb38748e600000000, 0x062b126600000000, 0x95b0db1900000000, + 0x2d74d6bd00000000, 0xbeef1fc200000000, 0x0b43454200000000, + 0x98d88c3d00000000, 0x0e6c724000000000, 0x9df7bb3f00000000, + 0x285be1bf00000000, 0xbbc028c000000000, 0x0304256400000000, + 0x909fec1b00000000, 0x2533b69b00000000, 0xb6a87fe400000000, + 0x14bcdc0800000000, 0x8727157700000000, 0x328b4ff700000000, + 0xa110868800000000, 0x19d48b2c00000000, 0x8a4f425300000000, + 0x3fe318d300000000, 0xac78d1ac00000000, 0x2614cb5100000000, + 0xb58f022e00000000, 0x002358ae00000000, 0x93b891d100000000, + 0x2b7c9c7500000000, 0xb8e7550a00000000, 0x0d4b0f8a00000000, + 0x9ed0c6f500000000, 0x3cc4651900000000, 0xaf5fac6600000000, + 0x1af3f6e600000000, 0x89683f9900000000, 0x31ac323d00000000, + 0xa237fb4200000000, 0x179ba1c200000000, 0x840068bd00000000, + 0x12b496c000000000, 0x812f5fbf00000000, 0x3483053f00000000, + 0xa718cc4000000000, 0x1fdcc1e400000000, 0x8c47089b00000000, + 0x39eb521b00000000, 0xaa709b6400000000, 0x0864388800000000, + 0x9bfff1f700000000, 0x2e53ab7700000000, 0xbdc8620800000000, + 0x050c6fac00000000, 0x9697a6d300000000, 0x233bfc5300000000, + 0xb0a0352c00000000, 0x0f5201a800000000, 0x9cc9c8d700000000, + 0x2965925700000000, 0xbafe5b2800000000, 0x023a568c00000000, + 0x91a19ff300000000, 0x240dc57300000000, 0xb7960c0c00000000, + 0x1582afe000000000, 0x8619669f00000000, 0x33b53c1f00000000, + 0xa02ef56000000000, 0x18eaf8c400000000, 0x8b7131bb00000000, + 0x3edd6b3b00000000, 0xad46a24400000000, 0x3bf25c3900000000, + 0xa869954600000000, 0x1dc5cfc600000000, 0x8e5e06b900000000, + 0x369a0b1d00000000, 0xa501c26200000000, 0x10ad98e200000000, + 0x8336519d00000000, 0x2122f27100000000, 0xb2b93b0e00000000, + 0x0715618e00000000, 0x948ea8f100000000, 0x2c4aa55500000000, + 0xbfd16c2a00000000, 0x0a7d36aa00000000, 0x99e6ffd500000000, + 0x359e2e7900000000, 0xa605e70600000000, 0x13a9bd8600000000, + 0x803274f900000000, 0x38f6795d00000000, 0xab6db02200000000, + 0x1ec1eaa200000000, 0x8d5a23dd00000000, 0x2f4e803100000000, + 0xbcd5494e00000000, 0x097913ce00000000, 0x9ae2dab100000000, + 0x2226d71500000000, 0xb1bd1e6a00000000, 0x041144ea00000000, + 0x978a8d9500000000, 0x013e73e800000000, 0x92a5ba9700000000, + 0x2709e01700000000, 0xb492296800000000, 0x0c5624cc00000000, + 0x9fcdedb300000000, 0x2a61b73300000000, 0xb9fa7e4c00000000, + 0x1beedda000000000, 0x887514df00000000, 0x3dd94e5f00000000, + 0xae42872000000000, 0x16868a8400000000, 0x851d43fb00000000, + 0x30b1197b00000000, 0xa32ad00400000000, 0x1cd8e48000000000, + 0x8f432dff00000000, 0x3aef777f00000000, 0xa974be0000000000, + 0x11b0b3a400000000, 0x822b7adb00000000, 0x3787205b00000000, + 0xa41ce92400000000, 0x06084ac800000000, 0x959383b700000000, + 0x203fd93700000000, 0xb3a4104800000000, 0x0b601dec00000000, + 0x98fbd49300000000, 0x2d578e1300000000, 0xbecc476c00000000, + 0x2878b91100000000, 0xbbe3706e00000000, 0x0e4f2aee00000000, + 0x9dd4e39100000000, 0x2510ee3500000000, 0xb68b274a00000000, + 0x03277dca00000000, 0x90bcb4b500000000, 0x32a8175900000000, + 0xa133de2600000000, 0x149f84a600000000, 0x87044dd900000000, + 0x3fc0407d00000000, 0xac5b890200000000, 0x19f7d38200000000, + 0x8a6c1afd00000000}, + {0x0000000000000000, 0x650b796900000000, 0xca16f2d200000000, + 0xaf1d8bbb00000000, 0xd52b957e00000000, 0xb020ec1700000000, + 0x1f3d67ac00000000, 0x7a361ec500000000, 0xaa572afd00000000, + 0xcf5c539400000000, 0x6041d82f00000000, 0x054aa14600000000, + 0x7f7cbf8300000000, 0x1a77c6ea00000000, 0xb56a4d5100000000, + 0xd061343800000000, 0x15a9252100000000, 0x70a25c4800000000, + 0xdfbfd7f300000000, 0xbab4ae9a00000000, 0xc082b05f00000000, + 0xa589c93600000000, 0x0a94428d00000000, 0x6f9f3be400000000, + 0xbffe0fdc00000000, 0xdaf576b500000000, 0x75e8fd0e00000000, + 0x10e3846700000000, 0x6ad59aa200000000, 0x0fdee3cb00000000, + 0xa0c3687000000000, 0xc5c8111900000000, 0x2a524b4200000000, + 0x4f59322b00000000, 0xe044b99000000000, 0x854fc0f900000000, + 0xff79de3c00000000, 0x9a72a75500000000, 0x356f2cee00000000, + 0x5064558700000000, 0x800561bf00000000, 0xe50e18d600000000, + 0x4a13936d00000000, 0x2f18ea0400000000, 0x552ef4c100000000, + 0x30258da800000000, 0x9f38061300000000, 0xfa337f7a00000000, + 0x3ffb6e6300000000, 0x5af0170a00000000, 0xf5ed9cb100000000, + 0x90e6e5d800000000, 0xead0fb1d00000000, 0x8fdb827400000000, + 0x20c609cf00000000, 0x45cd70a600000000, 0x95ac449e00000000, + 0xf0a73df700000000, 0x5fbab64c00000000, 0x3ab1cf2500000000, + 0x4087d1e000000000, 0x258ca88900000000, 0x8a91233200000000, + 0xef9a5a5b00000000, 0x54a4968400000000, 0x31afefed00000000, + 0x9eb2645600000000, 0xfbb91d3f00000000, 0x818f03fa00000000, + 0xe4847a9300000000, 0x4b99f12800000000, 0x2e92884100000000, + 0xfef3bc7900000000, 0x9bf8c51000000000, 0x34e54eab00000000, + 0x51ee37c200000000, 0x2bd8290700000000, 0x4ed3506e00000000, + 0xe1cedbd500000000, 0x84c5a2bc00000000, 0x410db3a500000000, + 0x2406cacc00000000, 0x8b1b417700000000, 0xee10381e00000000, + 0x942626db00000000, 0xf12d5fb200000000, 0x5e30d40900000000, + 0x3b3bad6000000000, 0xeb5a995800000000, 0x8e51e03100000000, + 0x214c6b8a00000000, 0x444712e300000000, 0x3e710c2600000000, + 0x5b7a754f00000000, 0xf467fef400000000, 0x916c879d00000000, + 0x7ef6ddc600000000, 0x1bfda4af00000000, 0xb4e02f1400000000, + 0xd1eb567d00000000, 0xabdd48b800000000, 0xced631d100000000, + 0x61cbba6a00000000, 0x04c0c30300000000, 0xd4a1f73b00000000, + 0xb1aa8e5200000000, 0x1eb705e900000000, 0x7bbc7c8000000000, + 0x018a624500000000, 0x64811b2c00000000, 0xcb9c909700000000, + 0xae97e9fe00000000, 0x6b5ff8e700000000, 0x0e54818e00000000, + 0xa1490a3500000000, 0xc442735c00000000, 0xbe746d9900000000, + 0xdb7f14f000000000, 0x74629f4b00000000, 0x1169e62200000000, + 0xc108d21a00000000, 0xa403ab7300000000, 0x0b1e20c800000000, + 0x6e1559a100000000, 0x1423476400000000, 0x71283e0d00000000, + 0xde35b5b600000000, 0xbb3eccdf00000000, 0xe94e5cd200000000, + 0x8c4525bb00000000, 0x2358ae0000000000, 0x4653d76900000000, + 0x3c65c9ac00000000, 0x596eb0c500000000, 0xf6733b7e00000000, + 0x9378421700000000, 0x4319762f00000000, 0x26120f4600000000, + 0x890f84fd00000000, 0xec04fd9400000000, 0x9632e35100000000, + 0xf3399a3800000000, 0x5c24118300000000, 0x392f68ea00000000, + 0xfce779f300000000, 0x99ec009a00000000, 0x36f18b2100000000, + 0x53faf24800000000, 0x29ccec8d00000000, 0x4cc795e400000000, + 0xe3da1e5f00000000, 0x86d1673600000000, 0x56b0530e00000000, + 0x33bb2a6700000000, 0x9ca6a1dc00000000, 0xf9add8b500000000, + 0x839bc67000000000, 0xe690bf1900000000, 0x498d34a200000000, + 0x2c864dcb00000000, 0xc31c179000000000, 0xa6176ef900000000, + 0x090ae54200000000, 0x6c019c2b00000000, 0x163782ee00000000, + 0x733cfb8700000000, 0xdc21703c00000000, 0xb92a095500000000, + 0x694b3d6d00000000, 0x0c40440400000000, 0xa35dcfbf00000000, + 0xc656b6d600000000, 0xbc60a81300000000, 0xd96bd17a00000000, + 0x76765ac100000000, 0x137d23a800000000, 0xd6b532b100000000, + 0xb3be4bd800000000, 0x1ca3c06300000000, 0x79a8b90a00000000, + 0x039ea7cf00000000, 0x6695dea600000000, 0xc988551d00000000, + 0xac832c7400000000, 0x7ce2184c00000000, 0x19e9612500000000, + 0xb6f4ea9e00000000, 0xd3ff93f700000000, 0xa9c98d3200000000, + 0xccc2f45b00000000, 0x63df7fe000000000, 0x06d4068900000000, + 0xbdeaca5600000000, 0xd8e1b33f00000000, 0x77fc388400000000, + 0x12f741ed00000000, 0x68c15f2800000000, 0x0dca264100000000, + 0xa2d7adfa00000000, 0xc7dcd49300000000, 0x17bde0ab00000000, + 0x72b699c200000000, 0xddab127900000000, 0xb8a06b1000000000, + 0xc29675d500000000, 0xa79d0cbc00000000, 0x0880870700000000, + 0x6d8bfe6e00000000, 0xa843ef7700000000, 0xcd48961e00000000, + 0x62551da500000000, 0x075e64cc00000000, 0x7d687a0900000000, + 0x1863036000000000, 0xb77e88db00000000, 0xd275f1b200000000, + 0x0214c58a00000000, 0x671fbce300000000, 0xc802375800000000, + 0xad094e3100000000, 0xd73f50f400000000, 0xb234299d00000000, + 0x1d29a22600000000, 0x7822db4f00000000, 0x97b8811400000000, + 0xf2b3f87d00000000, 0x5dae73c600000000, 0x38a50aaf00000000, + 0x4293146a00000000, 0x27986d0300000000, 0x8885e6b800000000, + 0xed8e9fd100000000, 0x3defabe900000000, 0x58e4d28000000000, + 0xf7f9593b00000000, 0x92f2205200000000, 0xe8c43e9700000000, + 0x8dcf47fe00000000, 0x22d2cc4500000000, 0x47d9b52c00000000, + 0x8211a43500000000, 0xe71add5c00000000, 0x480756e700000000, + 0x2d0c2f8e00000000, 0x573a314b00000000, 0x3231482200000000, + 0x9d2cc39900000000, 0xf827baf000000000, 0x28468ec800000000, + 0x4d4df7a100000000, 0xe2507c1a00000000, 0x875b057300000000, + 0xfd6d1bb600000000, 0x986662df00000000, 0x377be96400000000, + 0x5270900d00000000}, + {0x0000000000000000, 0xdcecb13d00000000, 0xb8d9637b00000000, + 0x6435d24600000000, 0x70b3c7f600000000, 0xac5f76cb00000000, + 0xc86aa48d00000000, 0x148615b000000000, 0xa160fe3600000000, + 0x7d8c4f0b00000000, 0x19b99d4d00000000, 0xc5552c7000000000, + 0xd1d339c000000000, 0x0d3f88fd00000000, 0x690a5abb00000000, + 0xb5e6eb8600000000, 0x42c1fc6d00000000, 0x9e2d4d5000000000, + 0xfa189f1600000000, 0x26f42e2b00000000, 0x32723b9b00000000, + 0xee9e8aa600000000, 0x8aab58e000000000, 0x5647e9dd00000000, + 0xe3a1025b00000000, 0x3f4db36600000000, 0x5b78612000000000, + 0x8794d01d00000000, 0x9312c5ad00000000, 0x4ffe749000000000, + 0x2bcba6d600000000, 0xf72717eb00000000, 0x8482f9db00000000, + 0x586e48e600000000, 0x3c5b9aa000000000, 0xe0b72b9d00000000, + 0xf4313e2d00000000, 0x28dd8f1000000000, 0x4ce85d5600000000, + 0x9004ec6b00000000, 0x25e207ed00000000, 0xf90eb6d000000000, + 0x9d3b649600000000, 0x41d7d5ab00000000, 0x5551c01b00000000, + 0x89bd712600000000, 0xed88a36000000000, 0x3164125d00000000, + 0xc64305b600000000, 0x1aafb48b00000000, 0x7e9a66cd00000000, + 0xa276d7f000000000, 0xb6f0c24000000000, 0x6a1c737d00000000, + 0x0e29a13b00000000, 0xd2c5100600000000, 0x6723fb8000000000, + 0xbbcf4abd00000000, 0xdffa98fb00000000, 0x031629c600000000, + 0x17903c7600000000, 0xcb7c8d4b00000000, 0xaf495f0d00000000, + 0x73a5ee3000000000, 0x4903826c00000000, 0x95ef335100000000, + 0xf1dae11700000000, 0x2d36502a00000000, 0x39b0459a00000000, + 0xe55cf4a700000000, 0x816926e100000000, 0x5d8597dc00000000, + 0xe8637c5a00000000, 0x348fcd6700000000, 0x50ba1f2100000000, + 0x8c56ae1c00000000, 0x98d0bbac00000000, 0x443c0a9100000000, + 0x2009d8d700000000, 0xfce569ea00000000, 0x0bc27e0100000000, + 0xd72ecf3c00000000, 0xb31b1d7a00000000, 0x6ff7ac4700000000, + 0x7b71b9f700000000, 0xa79d08ca00000000, 0xc3a8da8c00000000, + 0x1f446bb100000000, 0xaaa2803700000000, 0x764e310a00000000, + 0x127be34c00000000, 0xce97527100000000, 0xda1147c100000000, + 0x06fdf6fc00000000, 0x62c824ba00000000, 0xbe24958700000000, + 0xcd817bb700000000, 0x116dca8a00000000, 0x755818cc00000000, + 0xa9b4a9f100000000, 0xbd32bc4100000000, 0x61de0d7c00000000, + 0x05ebdf3a00000000, 0xd9076e0700000000, 0x6ce1858100000000, + 0xb00d34bc00000000, 0xd438e6fa00000000, 0x08d457c700000000, + 0x1c52427700000000, 0xc0bef34a00000000, 0xa48b210c00000000, + 0x7867903100000000, 0x8f4087da00000000, 0x53ac36e700000000, + 0x3799e4a100000000, 0xeb75559c00000000, 0xfff3402c00000000, + 0x231ff11100000000, 0x472a235700000000, 0x9bc6926a00000000, + 0x2e2079ec00000000, 0xf2ccc8d100000000, 0x96f91a9700000000, + 0x4a15abaa00000000, 0x5e93be1a00000000, 0x827f0f2700000000, + 0xe64add6100000000, 0x3aa66c5c00000000, 0x920604d900000000, + 0x4eeab5e400000000, 0x2adf67a200000000, 0xf633d69f00000000, + 0xe2b5c32f00000000, 0x3e59721200000000, 0x5a6ca05400000000, + 0x8680116900000000, 0x3366faef00000000, 0xef8a4bd200000000, + 0x8bbf999400000000, 0x575328a900000000, 0x43d53d1900000000, + 0x9f398c2400000000, 0xfb0c5e6200000000, 0x27e0ef5f00000000, + 0xd0c7f8b400000000, 0x0c2b498900000000, 0x681e9bcf00000000, + 0xb4f22af200000000, 0xa0743f4200000000, 0x7c988e7f00000000, + 0x18ad5c3900000000, 0xc441ed0400000000, 0x71a7068200000000, + 0xad4bb7bf00000000, 0xc97e65f900000000, 0x1592d4c400000000, + 0x0114c17400000000, 0xddf8704900000000, 0xb9cda20f00000000, + 0x6521133200000000, 0x1684fd0200000000, 0xca684c3f00000000, + 0xae5d9e7900000000, 0x72b12f4400000000, 0x66373af400000000, + 0xbadb8bc900000000, 0xdeee598f00000000, 0x0202e8b200000000, + 0xb7e4033400000000, 0x6b08b20900000000, 0x0f3d604f00000000, + 0xd3d1d17200000000, 0xc757c4c200000000, 0x1bbb75ff00000000, + 0x7f8ea7b900000000, 0xa362168400000000, 0x5445016f00000000, + 0x88a9b05200000000, 0xec9c621400000000, 0x3070d32900000000, + 0x24f6c69900000000, 0xf81a77a400000000, 0x9c2fa5e200000000, + 0x40c314df00000000, 0xf525ff5900000000, 0x29c94e6400000000, + 0x4dfc9c2200000000, 0x91102d1f00000000, 0x859638af00000000, + 0x597a899200000000, 0x3d4f5bd400000000, 0xe1a3eae900000000, + 0xdb0586b500000000, 0x07e9378800000000, 0x63dce5ce00000000, + 0xbf3054f300000000, 0xabb6414300000000, 0x775af07e00000000, + 0x136f223800000000, 0xcf83930500000000, 0x7a65788300000000, + 0xa689c9be00000000, 0xc2bc1bf800000000, 0x1e50aac500000000, + 0x0ad6bf7500000000, 0xd63a0e4800000000, 0xb20fdc0e00000000, + 0x6ee36d3300000000, 0x99c47ad800000000, 0x4528cbe500000000, + 0x211d19a300000000, 0xfdf1a89e00000000, 0xe977bd2e00000000, + 0x359b0c1300000000, 0x51aede5500000000, 0x8d426f6800000000, + 0x38a484ee00000000, 0xe44835d300000000, 0x807de79500000000, + 0x5c9156a800000000, 0x4817431800000000, 0x94fbf22500000000, + 0xf0ce206300000000, 0x2c22915e00000000, 0x5f877f6e00000000, + 0x836bce5300000000, 0xe75e1c1500000000, 0x3bb2ad2800000000, + 0x2f34b89800000000, 0xf3d809a500000000, 0x97eddbe300000000, + 0x4b016ade00000000, 0xfee7815800000000, 0x220b306500000000, + 0x463ee22300000000, 0x9ad2531e00000000, 0x8e5446ae00000000, + 0x52b8f79300000000, 0x368d25d500000000, 0xea6194e800000000, + 0x1d46830300000000, 0xc1aa323e00000000, 0xa59fe07800000000, + 0x7973514500000000, 0x6df544f500000000, 0xb119f5c800000000, + 0xd52c278e00000000, 0x09c096b300000000, 0xbc267d3500000000, + 0x60cacc0800000000, 0x04ff1e4e00000000, 0xd813af7300000000, + 0xcc95bac300000000, 0x10790bfe00000000, 0x744cd9b800000000, + 0xa8a0688500000000}}; + +#else /* W == 4 */ + +local const z_crc_t FAR crc_braid_table[][256] = { + {0x00000000, 0x81256527, 0xd93bcc0f, 0x581ea928, 0x69069e5f, + 0xe823fb78, 0xb03d5250, 0x31183777, 0xd20d3cbe, 0x53285999, + 0x0b36f0b1, 0x8a139596, 0xbb0ba2e1, 0x3a2ec7c6, 0x62306eee, + 0xe3150bc9, 0x7f6b7f3d, 0xfe4e1a1a, 0xa650b332, 0x2775d615, + 0x166de162, 0x97488445, 0xcf562d6d, 0x4e73484a, 0xad664383, + 0x2c4326a4, 0x745d8f8c, 0xf578eaab, 0xc460dddc, 0x4545b8fb, + 0x1d5b11d3, 0x9c7e74f4, 0xfed6fe7a, 0x7ff39b5d, 0x27ed3275, + 0xa6c85752, 0x97d06025, 0x16f50502, 0x4eebac2a, 0xcfcec90d, + 0x2cdbc2c4, 0xadfea7e3, 0xf5e00ecb, 0x74c56bec, 0x45dd5c9b, + 0xc4f839bc, 0x9ce69094, 0x1dc3f5b3, 0x81bd8147, 0x0098e460, + 0x58864d48, 0xd9a3286f, 0xe8bb1f18, 0x699e7a3f, 0x3180d317, + 0xb0a5b630, 0x53b0bdf9, 0xd295d8de, 0x8a8b71f6, 0x0bae14d1, + 0x3ab623a6, 0xbb934681, 0xe38defa9, 0x62a88a8e, 0x26dcfab5, + 0xa7f99f92, 0xffe736ba, 0x7ec2539d, 0x4fda64ea, 0xceff01cd, + 0x96e1a8e5, 0x17c4cdc2, 0xf4d1c60b, 0x75f4a32c, 0x2dea0a04, + 0xaccf6f23, 0x9dd75854, 0x1cf23d73, 0x44ec945b, 0xc5c9f17c, + 0x59b78588, 0xd892e0af, 0x808c4987, 0x01a92ca0, 0x30b11bd7, + 0xb1947ef0, 0xe98ad7d8, 0x68afb2ff, 0x8bbab936, 0x0a9fdc11, + 0x52817539, 0xd3a4101e, 0xe2bc2769, 0x6399424e, 0x3b87eb66, + 0xbaa28e41, 0xd80a04cf, 0x592f61e8, 0x0131c8c0, 0x8014ade7, + 0xb10c9a90, 0x3029ffb7, 0x6837569f, 0xe91233b8, 0x0a073871, + 0x8b225d56, 0xd33cf47e, 0x52199159, 0x6301a62e, 0xe224c309, + 0xba3a6a21, 0x3b1f0f06, 0xa7617bf2, 0x26441ed5, 0x7e5ab7fd, + 0xff7fd2da, 0xce67e5ad, 0x4f42808a, 0x175c29a2, 0x96794c85, + 0x756c474c, 0xf449226b, 0xac578b43, 0x2d72ee64, 0x1c6ad913, + 0x9d4fbc34, 0xc551151c, 0x4474703b, 0x4db9f56a, 0xcc9c904d, + 0x94823965, 0x15a75c42, 0x24bf6b35, 0xa59a0e12, 0xfd84a73a, + 0x7ca1c21d, 0x9fb4c9d4, 0x1e91acf3, 0x468f05db, 0xc7aa60fc, + 0xf6b2578b, 0x779732ac, 0x2f899b84, 0xaeacfea3, 0x32d28a57, + 0xb3f7ef70, 0xebe94658, 0x6acc237f, 0x5bd41408, 0xdaf1712f, + 0x82efd807, 0x03cabd20, 0xe0dfb6e9, 0x61fad3ce, 0x39e47ae6, + 0xb8c11fc1, 0x89d928b6, 0x08fc4d91, 0x50e2e4b9, 0xd1c7819e, + 0xb36f0b10, 0x324a6e37, 0x6a54c71f, 0xeb71a238, 0xda69954f, + 0x5b4cf068, 0x03525940, 0x82773c67, 0x616237ae, 0xe0475289, + 0xb859fba1, 0x397c9e86, 0x0864a9f1, 0x8941ccd6, 0xd15f65fe, + 0x507a00d9, 0xcc04742d, 0x4d21110a, 0x153fb822, 0x941add05, + 0xa502ea72, 0x24278f55, 0x7c39267d, 0xfd1c435a, 0x1e094893, + 0x9f2c2db4, 0xc732849c, 0x4617e1bb, 0x770fd6cc, 0xf62ab3eb, + 0xae341ac3, 0x2f117fe4, 0x6b650fdf, 0xea406af8, 0xb25ec3d0, + 0x337ba6f7, 0x02639180, 0x8346f4a7, 0xdb585d8f, 0x5a7d38a8, + 0xb9683361, 0x384d5646, 0x6053ff6e, 0xe1769a49, 0xd06ead3e, + 0x514bc819, 0x09556131, 0x88700416, 0x140e70e2, 0x952b15c5, + 0xcd35bced, 0x4c10d9ca, 0x7d08eebd, 0xfc2d8b9a, 0xa43322b2, + 0x25164795, 0xc6034c5c, 0x4726297b, 0x1f388053, 0x9e1de574, + 0xaf05d203, 0x2e20b724, 0x763e1e0c, 0xf71b7b2b, 0x95b3f1a5, + 0x14969482, 0x4c883daa, 0xcdad588d, 0xfcb56ffa, 0x7d900add, + 0x258ea3f5, 0xa4abc6d2, 0x47becd1b, 0xc69ba83c, 0x9e850114, + 0x1fa06433, 0x2eb85344, 0xaf9d3663, 0xf7839f4b, 0x76a6fa6c, + 0xead88e98, 0x6bfdebbf, 0x33e34297, 0xb2c627b0, 0x83de10c7, + 0x02fb75e0, 0x5ae5dcc8, 0xdbc0b9ef, 0x38d5b226, 0xb9f0d701, + 0xe1ee7e29, 0x60cb1b0e, 0x51d32c79, 0xd0f6495e, 0x88e8e076, + 0x09cd8551}, + {0x00000000, 0x9b73ead4, 0xed96d3e9, 0x76e5393d, 0x005ca193, + 0x9b2f4b47, 0xedca727a, 0x76b998ae, 0x00b94326, 0x9bcaa9f2, + 0xed2f90cf, 0x765c7a1b, 0x00e5e2b5, 0x9b960861, 0xed73315c, + 0x7600db88, 0x0172864c, 0x9a016c98, 0xece455a5, 0x7797bf71, + 0x012e27df, 0x9a5dcd0b, 0xecb8f436, 0x77cb1ee2, 0x01cbc56a, + 0x9ab82fbe, 0xec5d1683, 0x772efc57, 0x019764f9, 0x9ae48e2d, + 0xec01b710, 0x77725dc4, 0x02e50c98, 0x9996e64c, 0xef73df71, + 0x740035a5, 0x02b9ad0b, 0x99ca47df, 0xef2f7ee2, 0x745c9436, + 0x025c4fbe, 0x992fa56a, 0xefca9c57, 0x74b97683, 0x0200ee2d, + 0x997304f9, 0xef963dc4, 0x74e5d710, 0x03978ad4, 0x98e46000, + 0xee01593d, 0x7572b3e9, 0x03cb2b47, 0x98b8c193, 0xee5df8ae, + 0x752e127a, 0x032ec9f2, 0x985d2326, 0xeeb81a1b, 0x75cbf0cf, + 0x03726861, 0x980182b5, 0xeee4bb88, 0x7597515c, 0x05ca1930, + 0x9eb9f3e4, 0xe85ccad9, 0x732f200d, 0x0596b8a3, 0x9ee55277, + 0xe8006b4a, 0x7373819e, 0x05735a16, 0x9e00b0c2, 0xe8e589ff, + 0x7396632b, 0x052ffb85, 0x9e5c1151, 0xe8b9286c, 0x73cac2b8, + 0x04b89f7c, 0x9fcb75a8, 0xe92e4c95, 0x725da641, 0x04e43eef, + 0x9f97d43b, 0xe972ed06, 0x720107d2, 0x0401dc5a, 0x9f72368e, + 0xe9970fb3, 0x72e4e567, 0x045d7dc9, 0x9f2e971d, 0xe9cbae20, + 0x72b844f4, 0x072f15a8, 0x9c5cff7c, 0xeab9c641, 0x71ca2c95, + 0x0773b43b, 0x9c005eef, 0xeae567d2, 0x71968d06, 0x0796568e, + 0x9ce5bc5a, 0xea008567, 0x71736fb3, 0x07caf71d, 0x9cb91dc9, + 0xea5c24f4, 0x712fce20, 0x065d93e4, 0x9d2e7930, 0xebcb400d, + 0x70b8aad9, 0x06013277, 0x9d72d8a3, 0xeb97e19e, 0x70e40b4a, + 0x06e4d0c2, 0x9d973a16, 0xeb72032b, 0x7001e9ff, 0x06b87151, + 0x9dcb9b85, 0xeb2ea2b8, 0x705d486c, 0x0b943260, 0x90e7d8b4, + 0xe602e189, 0x7d710b5d, 0x0bc893f3, 0x90bb7927, 0xe65e401a, + 0x7d2daace, 0x0b2d7146, 0x905e9b92, 0xe6bba2af, 0x7dc8487b, + 0x0b71d0d5, 0x90023a01, 0xe6e7033c, 0x7d94e9e8, 0x0ae6b42c, + 0x91955ef8, 0xe77067c5, 0x7c038d11, 0x0aba15bf, 0x91c9ff6b, + 0xe72cc656, 0x7c5f2c82, 0x0a5ff70a, 0x912c1dde, 0xe7c924e3, + 0x7cbace37, 0x0a035699, 0x9170bc4d, 0xe7958570, 0x7ce66fa4, + 0x09713ef8, 0x9202d42c, 0xe4e7ed11, 0x7f9407c5, 0x092d9f6b, + 0x925e75bf, 0xe4bb4c82, 0x7fc8a656, 0x09c87dde, 0x92bb970a, + 0xe45eae37, 0x7f2d44e3, 0x0994dc4d, 0x92e73699, 0xe4020fa4, + 0x7f71e570, 0x0803b8b4, 0x93705260, 0xe5956b5d, 0x7ee68189, + 0x085f1927, 0x932cf3f3, 0xe5c9cace, 0x7eba201a, 0x08bafb92, + 0x93c91146, 0xe52c287b, 0x7e5fc2af, 0x08e65a01, 0x9395b0d5, + 0xe57089e8, 0x7e03633c, 0x0e5e2b50, 0x952dc184, 0xe3c8f8b9, + 0x78bb126d, 0x0e028ac3, 0x95716017, 0xe394592a, 0x78e7b3fe, + 0x0ee76876, 0x959482a2, 0xe371bb9f, 0x7802514b, 0x0ebbc9e5, + 0x95c82331, 0xe32d1a0c, 0x785ef0d8, 0x0f2cad1c, 0x945f47c8, + 0xe2ba7ef5, 0x79c99421, 0x0f700c8f, 0x9403e65b, 0xe2e6df66, + 0x799535b2, 0x0f95ee3a, 0x94e604ee, 0xe2033dd3, 0x7970d707, + 0x0fc94fa9, 0x94baa57d, 0xe25f9c40, 0x792c7694, 0x0cbb27c8, + 0x97c8cd1c, 0xe12df421, 0x7a5e1ef5, 0x0ce7865b, 0x97946c8f, + 0xe17155b2, 0x7a02bf66, 0x0c0264ee, 0x97718e3a, 0xe194b707, + 0x7ae75dd3, 0x0c5ec57d, 0x972d2fa9, 0xe1c81694, 0x7abbfc40, + 0x0dc9a184, 0x96ba4b50, 0xe05f726d, 0x7b2c98b9, 0x0d950017, + 0x96e6eac3, 0xe003d3fe, 0x7b70392a, 0x0d70e2a2, 0x96030876, + 0xe0e6314b, 0x7b95db9f, 0x0d2c4331, 0x965fa9e5, 0xe0ba90d8, + 0x7bc97a0c}, + {0x00000000, 0x172864c0, 0x2e50c980, 0x3978ad40, 0x5ca19300, + 0x4b89f7c0, 0x72f15a80, 0x65d93e40, 0xb9432600, 0xae6b42c0, + 0x9713ef80, 0x803b8b40, 0xe5e2b500, 0xf2cad1c0, 0xcbb27c80, + 0xdc9a1840, 0xa9f74a41, 0xbedf2e81, 0x87a783c1, 0x908fe701, + 0xf556d941, 0xe27ebd81, 0xdb0610c1, 0xcc2e7401, 0x10b46c41, + 0x079c0881, 0x3ee4a5c1, 0x29ccc101, 0x4c15ff41, 0x5b3d9b81, + 0x624536c1, 0x756d5201, 0x889f92c3, 0x9fb7f603, 0xa6cf5b43, + 0xb1e73f83, 0xd43e01c3, 0xc3166503, 0xfa6ec843, 0xed46ac83, + 0x31dcb4c3, 0x26f4d003, 0x1f8c7d43, 0x08a41983, 0x6d7d27c3, + 0x7a554303, 0x432dee43, 0x54058a83, 0x2168d882, 0x3640bc42, + 0x0f381102, 0x181075c2, 0x7dc94b82, 0x6ae12f42, 0x53998202, + 0x44b1e6c2, 0x982bfe82, 0x8f039a42, 0xb67b3702, 0xa15353c2, + 0xc48a6d82, 0xd3a20942, 0xeadaa402, 0xfdf2c0c2, 0xca4e23c7, + 0xdd664707, 0xe41eea47, 0xf3368e87, 0x96efb0c7, 0x81c7d407, + 0xb8bf7947, 0xaf971d87, 0x730d05c7, 0x64256107, 0x5d5dcc47, + 0x4a75a887, 0x2fac96c7, 0x3884f207, 0x01fc5f47, 0x16d43b87, + 0x63b96986, 0x74910d46, 0x4de9a006, 0x5ac1c4c6, 0x3f18fa86, + 0x28309e46, 0x11483306, 0x066057c6, 0xdafa4f86, 0xcdd22b46, + 0xf4aa8606, 0xe382e2c6, 0x865bdc86, 0x9173b846, 0xa80b1506, + 0xbf2371c6, 0x42d1b104, 0x55f9d5c4, 0x6c817884, 0x7ba91c44, + 0x1e702204, 0x095846c4, 0x3020eb84, 0x27088f44, 0xfb929704, + 0xecbaf3c4, 0xd5c25e84, 0xc2ea3a44, 0xa7330404, 0xb01b60c4, + 0x8963cd84, 0x9e4ba944, 0xeb26fb45, 0xfc0e9f85, 0xc57632c5, + 0xd25e5605, 0xb7876845, 0xa0af0c85, 0x99d7a1c5, 0x8effc505, + 0x5265dd45, 0x454db985, 0x7c3514c5, 0x6b1d7005, 0x0ec44e45, + 0x19ec2a85, 0x209487c5, 0x37bce305, 0x4fed41cf, 0x58c5250f, + 0x61bd884f, 0x7695ec8f, 0x134cd2cf, 0x0464b60f, 0x3d1c1b4f, + 0x2a347f8f, 0xf6ae67cf, 0xe186030f, 0xd8feae4f, 0xcfd6ca8f, + 0xaa0ff4cf, 0xbd27900f, 0x845f3d4f, 0x9377598f, 0xe61a0b8e, + 0xf1326f4e, 0xc84ac20e, 0xdf62a6ce, 0xbabb988e, 0xad93fc4e, + 0x94eb510e, 0x83c335ce, 0x5f592d8e, 0x4871494e, 0x7109e40e, + 0x662180ce, 0x03f8be8e, 0x14d0da4e, 0x2da8770e, 0x3a8013ce, + 0xc772d30c, 0xd05ab7cc, 0xe9221a8c, 0xfe0a7e4c, 0x9bd3400c, + 0x8cfb24cc, 0xb583898c, 0xa2abed4c, 0x7e31f50c, 0x691991cc, + 0x50613c8c, 0x4749584c, 0x2290660c, 0x35b802cc, 0x0cc0af8c, + 0x1be8cb4c, 0x6e85994d, 0x79adfd8d, 0x40d550cd, 0x57fd340d, + 0x32240a4d, 0x250c6e8d, 0x1c74c3cd, 0x0b5ca70d, 0xd7c6bf4d, + 0xc0eedb8d, 0xf99676cd, 0xeebe120d, 0x8b672c4d, 0x9c4f488d, + 0xa537e5cd, 0xb21f810d, 0x85a36208, 0x928b06c8, 0xabf3ab88, + 0xbcdbcf48, 0xd902f108, 0xce2a95c8, 0xf7523888, 0xe07a5c48, + 0x3ce04408, 0x2bc820c8, 0x12b08d88, 0x0598e948, 0x6041d708, + 0x7769b3c8, 0x4e111e88, 0x59397a48, 0x2c542849, 0x3b7c4c89, + 0x0204e1c9, 0x152c8509, 0x70f5bb49, 0x67dddf89, 0x5ea572c9, + 0x498d1609, 0x95170e49, 0x823f6a89, 0xbb47c7c9, 0xac6fa309, + 0xc9b69d49, 0xde9ef989, 0xe7e654c9, 0xf0ce3009, 0x0d3cf0cb, + 0x1a14940b, 0x236c394b, 0x34445d8b, 0x519d63cb, 0x46b5070b, + 0x7fcdaa4b, 0x68e5ce8b, 0xb47fd6cb, 0xa357b20b, 0x9a2f1f4b, + 0x8d077b8b, 0xe8de45cb, 0xfff6210b, 0xc68e8c4b, 0xd1a6e88b, + 0xa4cbba8a, 0xb3e3de4a, 0x8a9b730a, 0x9db317ca, 0xf86a298a, + 0xef424d4a, 0xd63ae00a, 0xc11284ca, 0x1d889c8a, 0x0aa0f84a, + 0x33d8550a, 0x24f031ca, 0x41290f8a, 0x56016b4a, 0x6f79c60a, + 0x7851a2ca}, + {0x00000000, 0x9fda839e, 0xe4c4017d, 0x7b1e82e3, 0x12f904bb, + 0x8d238725, 0xf63d05c6, 0x69e78658, 0x25f20976, 0xba288ae8, + 0xc136080b, 0x5eec8b95, 0x370b0dcd, 0xa8d18e53, 0xd3cf0cb0, + 0x4c158f2e, 0x4be412ec, 0xd43e9172, 0xaf201391, 0x30fa900f, + 0x591d1657, 0xc6c795c9, 0xbdd9172a, 0x220394b4, 0x6e161b9a, + 0xf1cc9804, 0x8ad21ae7, 0x15089979, 0x7cef1f21, 0xe3359cbf, + 0x982b1e5c, 0x07f19dc2, 0x97c825d8, 0x0812a646, 0x730c24a5, + 0xecd6a73b, 0x85312163, 0x1aeba2fd, 0x61f5201e, 0xfe2fa380, + 0xb23a2cae, 0x2de0af30, 0x56fe2dd3, 0xc924ae4d, 0xa0c32815, + 0x3f19ab8b, 0x44072968, 0xdbddaaf6, 0xdc2c3734, 0x43f6b4aa, + 0x38e83649, 0xa732b5d7, 0xced5338f, 0x510fb011, 0x2a1132f2, + 0xb5cbb16c, 0xf9de3e42, 0x6604bddc, 0x1d1a3f3f, 0x82c0bca1, + 0xeb273af9, 0x74fdb967, 0x0fe33b84, 0x9039b81a, 0xf4e14df1, + 0x6b3bce6f, 0x10254c8c, 0x8fffcf12, 0xe618494a, 0x79c2cad4, + 0x02dc4837, 0x9d06cba9, 0xd1134487, 0x4ec9c719, 0x35d745fa, + 0xaa0dc664, 0xc3ea403c, 0x5c30c3a2, 0x272e4141, 0xb8f4c2df, + 0xbf055f1d, 0x20dfdc83, 0x5bc15e60, 0xc41bddfe, 0xadfc5ba6, + 0x3226d838, 0x49385adb, 0xd6e2d945, 0x9af7566b, 0x052dd5f5, + 0x7e335716, 0xe1e9d488, 0x880e52d0, 0x17d4d14e, 0x6cca53ad, + 0xf310d033, 0x63296829, 0xfcf3ebb7, 0x87ed6954, 0x1837eaca, + 0x71d06c92, 0xee0aef0c, 0x95146def, 0x0aceee71, 0x46db615f, + 0xd901e2c1, 0xa21f6022, 0x3dc5e3bc, 0x542265e4, 0xcbf8e67a, + 0xb0e66499, 0x2f3ce707, 0x28cd7ac5, 0xb717f95b, 0xcc097bb8, + 0x53d3f826, 0x3a347e7e, 0xa5eefde0, 0xdef07f03, 0x412afc9d, + 0x0d3f73b3, 0x92e5f02d, 0xe9fb72ce, 0x7621f150, 0x1fc67708, + 0x801cf496, 0xfb027675, 0x64d8f5eb, 0x32b39da3, 0xad691e3d, + 0xd6779cde, 0x49ad1f40, 0x204a9918, 0xbf901a86, 0xc48e9865, + 0x5b541bfb, 0x174194d5, 0x889b174b, 0xf38595a8, 0x6c5f1636, + 0x05b8906e, 0x9a6213f0, 0xe17c9113, 0x7ea6128d, 0x79578f4f, + 0xe68d0cd1, 0x9d938e32, 0x02490dac, 0x6bae8bf4, 0xf474086a, + 0x8f6a8a89, 0x10b00917, 0x5ca58639, 0xc37f05a7, 0xb8618744, + 0x27bb04da, 0x4e5c8282, 0xd186011c, 0xaa9883ff, 0x35420061, + 0xa57bb87b, 0x3aa13be5, 0x41bfb906, 0xde653a98, 0xb782bcc0, + 0x28583f5e, 0x5346bdbd, 0xcc9c3e23, 0x8089b10d, 0x1f533293, + 0x644db070, 0xfb9733ee, 0x9270b5b6, 0x0daa3628, 0x76b4b4cb, + 0xe96e3755, 0xee9faa97, 0x71452909, 0x0a5babea, 0x95812874, + 0xfc66ae2c, 0x63bc2db2, 0x18a2af51, 0x87782ccf, 0xcb6da3e1, + 0x54b7207f, 0x2fa9a29c, 0xb0732102, 0xd994a75a, 0x464e24c4, + 0x3d50a627, 0xa28a25b9, 0xc652d052, 0x598853cc, 0x2296d12f, + 0xbd4c52b1, 0xd4abd4e9, 0x4b715777, 0x306fd594, 0xafb5560a, + 0xe3a0d924, 0x7c7a5aba, 0x0764d859, 0x98be5bc7, 0xf159dd9f, + 0x6e835e01, 0x159ddce2, 0x8a475f7c, 0x8db6c2be, 0x126c4120, + 0x6972c3c3, 0xf6a8405d, 0x9f4fc605, 0x0095459b, 0x7b8bc778, + 0xe45144e6, 0xa844cbc8, 0x379e4856, 0x4c80cab5, 0xd35a492b, + 0xbabdcf73, 0x25674ced, 0x5e79ce0e, 0xc1a34d90, 0x519af58a, + 0xce407614, 0xb55ef4f7, 0x2a847769, 0x4363f131, 0xdcb972af, + 0xa7a7f04c, 0x387d73d2, 0x7468fcfc, 0xebb27f62, 0x90acfd81, + 0x0f767e1f, 0x6691f847, 0xf94b7bd9, 0x8255f93a, 0x1d8f7aa4, + 0x1a7ee766, 0x85a464f8, 0xfebae61b, 0x61606585, 0x0887e3dd, + 0x975d6043, 0xec43e2a0, 0x7399613e, 0x3f8cee10, 0xa0566d8e, + 0xdb48ef6d, 0x44926cf3, 0x2d75eaab, 0xb2af6935, 0xc9b1ebd6, + 0x566b6848}}; + +local const z_word_t FAR crc_braid_big_table[][256] = { + {0x00000000, 0x9e83da9f, 0x7d01c4e4, 0xe3821e7b, 0xbb04f912, + 0x2587238d, 0xc6053df6, 0x5886e769, 0x7609f225, 0xe88a28ba, + 0x0b0836c1, 0x958bec5e, 0xcd0d0b37, 0x538ed1a8, 0xb00ccfd3, + 0x2e8f154c, 0xec12e44b, 0x72913ed4, 0x911320af, 0x0f90fa30, + 0x57161d59, 0xc995c7c6, 0x2a17d9bd, 0xb4940322, 0x9a1b166e, + 0x0498ccf1, 0xe71ad28a, 0x79990815, 0x211fef7c, 0xbf9c35e3, + 0x5c1e2b98, 0xc29df107, 0xd825c897, 0x46a61208, 0xa5240c73, + 0x3ba7d6ec, 0x63213185, 0xfda2eb1a, 0x1e20f561, 0x80a32ffe, + 0xae2c3ab2, 0x30afe02d, 0xd32dfe56, 0x4dae24c9, 0x1528c3a0, + 0x8bab193f, 0x68290744, 0xf6aadddb, 0x34372cdc, 0xaab4f643, + 0x4936e838, 0xd7b532a7, 0x8f33d5ce, 0x11b00f51, 0xf232112a, + 0x6cb1cbb5, 0x423edef9, 0xdcbd0466, 0x3f3f1a1d, 0xa1bcc082, + 0xf93a27eb, 0x67b9fd74, 0x843be30f, 0x1ab83990, 0xf14de1f4, + 0x6fce3b6b, 0x8c4c2510, 0x12cfff8f, 0x4a4918e6, 0xd4cac279, + 0x3748dc02, 0xa9cb069d, 0x874413d1, 0x19c7c94e, 0xfa45d735, + 0x64c60daa, 0x3c40eac3, 0xa2c3305c, 0x41412e27, 0xdfc2f4b8, + 0x1d5f05bf, 0x83dcdf20, 0x605ec15b, 0xfedd1bc4, 0xa65bfcad, + 0x38d82632, 0xdb5a3849, 0x45d9e2d6, 0x6b56f79a, 0xf5d52d05, + 0x1657337e, 0x88d4e9e1, 0xd0520e88, 0x4ed1d417, 0xad53ca6c, + 0x33d010f3, 0x29682963, 0xb7ebf3fc, 0x5469ed87, 0xcaea3718, + 0x926cd071, 0x0cef0aee, 0xef6d1495, 0x71eece0a, 0x5f61db46, + 0xc1e201d9, 0x22601fa2, 0xbce3c53d, 0xe4652254, 0x7ae6f8cb, + 0x9964e6b0, 0x07e73c2f, 0xc57acd28, 0x5bf917b7, 0xb87b09cc, + 0x26f8d353, 0x7e7e343a, 0xe0fdeea5, 0x037ff0de, 0x9dfc2a41, + 0xb3733f0d, 0x2df0e592, 0xce72fbe9, 0x50f12176, 0x0877c61f, + 0x96f41c80, 0x757602fb, 0xebf5d864, 0xa39db332, 0x3d1e69ad, + 0xde9c77d6, 0x401fad49, 0x18994a20, 0x861a90bf, 0x65988ec4, + 0xfb1b545b, 0xd5944117, 0x4b179b88, 0xa89585f3, 0x36165f6c, + 0x6e90b805, 0xf013629a, 0x13917ce1, 0x8d12a67e, 0x4f8f5779, + 0xd10c8de6, 0x328e939d, 0xac0d4902, 0xf48bae6b, 0x6a0874f4, + 0x898a6a8f, 0x1709b010, 0x3986a55c, 0xa7057fc3, 0x448761b8, + 0xda04bb27, 0x82825c4e, 0x1c0186d1, 0xff8398aa, 0x61004235, + 0x7bb87ba5, 0xe53ba13a, 0x06b9bf41, 0x983a65de, 0xc0bc82b7, + 0x5e3f5828, 0xbdbd4653, 0x233e9ccc, 0x0db18980, 0x9332531f, + 0x70b04d64, 0xee3397fb, 0xb6b57092, 0x2836aa0d, 0xcbb4b476, + 0x55376ee9, 0x97aa9fee, 0x09294571, 0xeaab5b0a, 0x74288195, + 0x2cae66fc, 0xb22dbc63, 0x51afa218, 0xcf2c7887, 0xe1a36dcb, + 0x7f20b754, 0x9ca2a92f, 0x022173b0, 0x5aa794d9, 0xc4244e46, + 0x27a6503d, 0xb9258aa2, 0x52d052c6, 0xcc538859, 0x2fd19622, + 0xb1524cbd, 0xe9d4abd4, 0x7757714b, 0x94d56f30, 0x0a56b5af, + 0x24d9a0e3, 0xba5a7a7c, 0x59d86407, 0xc75bbe98, 0x9fdd59f1, + 0x015e836e, 0xe2dc9d15, 0x7c5f478a, 0xbec2b68d, 0x20416c12, + 0xc3c37269, 0x5d40a8f6, 0x05c64f9f, 0x9b459500, 0x78c78b7b, + 0xe64451e4, 0xc8cb44a8, 0x56489e37, 0xb5ca804c, 0x2b495ad3, + 0x73cfbdba, 0xed4c6725, 0x0ece795e, 0x904da3c1, 0x8af59a51, + 0x147640ce, 0xf7f45eb5, 0x6977842a, 0x31f16343, 0xaf72b9dc, + 0x4cf0a7a7, 0xd2737d38, 0xfcfc6874, 0x627fb2eb, 0x81fdac90, + 0x1f7e760f, 0x47f89166, 0xd97b4bf9, 0x3af95582, 0xa47a8f1d, + 0x66e77e1a, 0xf864a485, 0x1be6bafe, 0x85656061, 0xdde38708, + 0x43605d97, 0xa0e243ec, 0x3e619973, 0x10ee8c3f, 0x8e6d56a0, + 0x6def48db, 0xf36c9244, 0xabea752d, 0x3569afb2, 0xd6ebb1c9, + 0x48686b56}, + {0x00000000, 0xc0642817, 0x80c9502e, 0x40ad7839, 0x0093a15c, + 0xc0f7894b, 0x805af172, 0x403ed965, 0x002643b9, 0xc0426bae, + 0x80ef1397, 0x408b3b80, 0x00b5e2e5, 0xc0d1caf2, 0x807cb2cb, + 0x40189adc, 0x414af7a9, 0x812edfbe, 0xc183a787, 0x01e78f90, + 0x41d956f5, 0x81bd7ee2, 0xc11006db, 0x01742ecc, 0x416cb410, + 0x81089c07, 0xc1a5e43e, 0x01c1cc29, 0x41ff154c, 0x819b3d5b, + 0xc1364562, 0x01526d75, 0xc3929f88, 0x03f6b79f, 0x435bcfa6, + 0x833fe7b1, 0xc3013ed4, 0x036516c3, 0x43c86efa, 0x83ac46ed, + 0xc3b4dc31, 0x03d0f426, 0x437d8c1f, 0x8319a408, 0xc3277d6d, + 0x0343557a, 0x43ee2d43, 0x838a0554, 0x82d86821, 0x42bc4036, + 0x0211380f, 0xc2751018, 0x824bc97d, 0x422fe16a, 0x02829953, + 0xc2e6b144, 0x82fe2b98, 0x429a038f, 0x02377bb6, 0xc25353a1, + 0x826d8ac4, 0x4209a2d3, 0x02a4daea, 0xc2c0f2fd, 0xc7234eca, + 0x074766dd, 0x47ea1ee4, 0x878e36f3, 0xc7b0ef96, 0x07d4c781, + 0x4779bfb8, 0x871d97af, 0xc7050d73, 0x07612564, 0x47cc5d5d, + 0x87a8754a, 0xc796ac2f, 0x07f28438, 0x475ffc01, 0x873bd416, + 0x8669b963, 0x460d9174, 0x06a0e94d, 0xc6c4c15a, 0x86fa183f, + 0x469e3028, 0x06334811, 0xc6576006, 0x864ffada, 0x462bd2cd, + 0x0686aaf4, 0xc6e282e3, 0x86dc5b86, 0x46b87391, 0x06150ba8, + 0xc67123bf, 0x04b1d142, 0xc4d5f955, 0x8478816c, 0x441ca97b, + 0x0422701e, 0xc4465809, 0x84eb2030, 0x448f0827, 0x049792fb, + 0xc4f3baec, 0x845ec2d5, 0x443aeac2, 0x040433a7, 0xc4601bb0, + 0x84cd6389, 0x44a94b9e, 0x45fb26eb, 0x859f0efc, 0xc53276c5, + 0x05565ed2, 0x456887b7, 0x850cafa0, 0xc5a1d799, 0x05c5ff8e, + 0x45dd6552, 0x85b94d45, 0xc514357c, 0x05701d6b, 0x454ec40e, + 0x852aec19, 0xc5879420, 0x05e3bc37, 0xcf41ed4f, 0x0f25c558, + 0x4f88bd61, 0x8fec9576, 0xcfd24c13, 0x0fb66404, 0x4f1b1c3d, + 0x8f7f342a, 0xcf67aef6, 0x0f0386e1, 0x4faefed8, 0x8fcad6cf, + 0xcff40faa, 0x0f9027bd, 0x4f3d5f84, 0x8f597793, 0x8e0b1ae6, + 0x4e6f32f1, 0x0ec24ac8, 0xcea662df, 0x8e98bbba, 0x4efc93ad, + 0x0e51eb94, 0xce35c383, 0x8e2d595f, 0x4e497148, 0x0ee40971, + 0xce802166, 0x8ebef803, 0x4edad014, 0x0e77a82d, 0xce13803a, + 0x0cd372c7, 0xccb75ad0, 0x8c1a22e9, 0x4c7e0afe, 0x0c40d39b, + 0xcc24fb8c, 0x8c8983b5, 0x4cedaba2, 0x0cf5317e, 0xcc911969, + 0x8c3c6150, 0x4c584947, 0x0c669022, 0xcc02b835, 0x8cafc00c, + 0x4ccbe81b, 0x4d99856e, 0x8dfdad79, 0xcd50d540, 0x0d34fd57, + 0x4d0a2432, 0x8d6e0c25, 0xcdc3741c, 0x0da75c0b, 0x4dbfc6d7, + 0x8ddbeec0, 0xcd7696f9, 0x0d12beee, 0x4d2c678b, 0x8d484f9c, + 0xcde537a5, 0x0d811fb2, 0x0862a385, 0xc8068b92, 0x88abf3ab, + 0x48cfdbbc, 0x08f102d9, 0xc8952ace, 0x883852f7, 0x485c7ae0, + 0x0844e03c, 0xc820c82b, 0x888db012, 0x48e99805, 0x08d74160, + 0xc8b36977, 0x881e114e, 0x487a3959, 0x4928542c, 0x894c7c3b, + 0xc9e10402, 0x09852c15, 0x49bbf570, 0x89dfdd67, 0xc972a55e, + 0x09168d49, 0x490e1795, 0x896a3f82, 0xc9c747bb, 0x09a36fac, + 0x499db6c9, 0x89f99ede, 0xc954e6e7, 0x0930cef0, 0xcbf03c0d, + 0x0b94141a, 0x4b396c23, 0x8b5d4434, 0xcb639d51, 0x0b07b546, + 0x4baacd7f, 0x8bcee568, 0xcbd67fb4, 0x0bb257a3, 0x4b1f2f9a, + 0x8b7b078d, 0xcb45dee8, 0x0b21f6ff, 0x4b8c8ec6, 0x8be8a6d1, + 0x8abacba4, 0x4adee3b3, 0x0a739b8a, 0xca17b39d, 0x8a296af8, + 0x4a4d42ef, 0x0ae03ad6, 0xca8412c1, 0x8a9c881d, 0x4af8a00a, + 0x0a55d833, 0xca31f024, 0x8a0f2941, 0x4a6b0156, 0x0ac6796f, + 0xcaa25178}, + {0x00000000, 0xd4ea739b, 0xe9d396ed, 0x3d39e576, 0x93a15c00, + 0x474b2f9b, 0x7a72caed, 0xae98b976, 0x2643b900, 0xf2a9ca9b, + 0xcf902fed, 0x1b7a5c76, 0xb5e2e500, 0x6108969b, 0x5c3173ed, + 0x88db0076, 0x4c867201, 0x986c019a, 0xa555e4ec, 0x71bf9777, + 0xdf272e01, 0x0bcd5d9a, 0x36f4b8ec, 0xe21ecb77, 0x6ac5cb01, + 0xbe2fb89a, 0x83165dec, 0x57fc2e77, 0xf9649701, 0x2d8ee49a, + 0x10b701ec, 0xc45d7277, 0x980ce502, 0x4ce69699, 0x71df73ef, + 0xa5350074, 0x0badb902, 0xdf47ca99, 0xe27e2fef, 0x36945c74, + 0xbe4f5c02, 0x6aa52f99, 0x579ccaef, 0x8376b974, 0x2dee0002, + 0xf9047399, 0xc43d96ef, 0x10d7e574, 0xd48a9703, 0x0060e498, + 0x3d5901ee, 0xe9b37275, 0x472bcb03, 0x93c1b898, 0xaef85dee, + 0x7a122e75, 0xf2c92e03, 0x26235d98, 0x1b1ab8ee, 0xcff0cb75, + 0x61687203, 0xb5820198, 0x88bbe4ee, 0x5c519775, 0x3019ca05, + 0xe4f3b99e, 0xd9ca5ce8, 0x0d202f73, 0xa3b89605, 0x7752e59e, + 0x4a6b00e8, 0x9e817373, 0x165a7305, 0xc2b0009e, 0xff89e5e8, + 0x2b639673, 0x85fb2f05, 0x51115c9e, 0x6c28b9e8, 0xb8c2ca73, + 0x7c9fb804, 0xa875cb9f, 0x954c2ee9, 0x41a65d72, 0xef3ee404, + 0x3bd4979f, 0x06ed72e9, 0xd2070172, 0x5adc0104, 0x8e36729f, + 0xb30f97e9, 0x67e5e472, 0xc97d5d04, 0x1d972e9f, 0x20aecbe9, + 0xf444b872, 0xa8152f07, 0x7cff5c9c, 0x41c6b9ea, 0x952cca71, + 0x3bb47307, 0xef5e009c, 0xd267e5ea, 0x068d9671, 0x8e569607, + 0x5abce59c, 0x678500ea, 0xb36f7371, 0x1df7ca07, 0xc91db99c, + 0xf4245cea, 0x20ce2f71, 0xe4935d06, 0x30792e9d, 0x0d40cbeb, + 0xd9aab870, 0x77320106, 0xa3d8729d, 0x9ee197eb, 0x4a0be470, + 0xc2d0e406, 0x163a979d, 0x2b0372eb, 0xffe90170, 0x5171b806, + 0x859bcb9d, 0xb8a22eeb, 0x6c485d70, 0x6032940b, 0xb4d8e790, + 0x89e102e6, 0x5d0b717d, 0xf393c80b, 0x2779bb90, 0x1a405ee6, + 0xceaa2d7d, 0x46712d0b, 0x929b5e90, 0xafa2bbe6, 0x7b48c87d, + 0xd5d0710b, 0x013a0290, 0x3c03e7e6, 0xe8e9947d, 0x2cb4e60a, + 0xf85e9591, 0xc56770e7, 0x118d037c, 0xbf15ba0a, 0x6bffc991, + 0x56c62ce7, 0x822c5f7c, 0x0af75f0a, 0xde1d2c91, 0xe324c9e7, + 0x37ceba7c, 0x9956030a, 0x4dbc7091, 0x708595e7, 0xa46fe67c, + 0xf83e7109, 0x2cd40292, 0x11ede7e4, 0xc507947f, 0x6b9f2d09, + 0xbf755e92, 0x824cbbe4, 0x56a6c87f, 0xde7dc809, 0x0a97bb92, + 0x37ae5ee4, 0xe3442d7f, 0x4ddc9409, 0x9936e792, 0xa40f02e4, + 0x70e5717f, 0xb4b80308, 0x60527093, 0x5d6b95e5, 0x8981e67e, + 0x27195f08, 0xf3f32c93, 0xcecac9e5, 0x1a20ba7e, 0x92fbba08, + 0x4611c993, 0x7b282ce5, 0xafc25f7e, 0x015ae608, 0xd5b09593, + 0xe88970e5, 0x3c63037e, 0x502b5e0e, 0x84c12d95, 0xb9f8c8e3, + 0x6d12bb78, 0xc38a020e, 0x17607195, 0x2a5994e3, 0xfeb3e778, + 0x7668e70e, 0xa2829495, 0x9fbb71e3, 0x4b510278, 0xe5c9bb0e, + 0x3123c895, 0x0c1a2de3, 0xd8f05e78, 0x1cad2c0f, 0xc8475f94, + 0xf57ebae2, 0x2194c979, 0x8f0c700f, 0x5be60394, 0x66dfe6e2, + 0xb2359579, 0x3aee950f, 0xee04e694, 0xd33d03e2, 0x07d77079, + 0xa94fc90f, 0x7da5ba94, 0x409c5fe2, 0x94762c79, 0xc827bb0c, + 0x1ccdc897, 0x21f42de1, 0xf51e5e7a, 0x5b86e70c, 0x8f6c9497, + 0xb25571e1, 0x66bf027a, 0xee64020c, 0x3a8e7197, 0x07b794e1, + 0xd35de77a, 0x7dc55e0c, 0xa92f2d97, 0x9416c8e1, 0x40fcbb7a, + 0x84a1c90d, 0x504bba96, 0x6d725fe0, 0xb9982c7b, 0x1700950d, + 0xc3eae696, 0xfed303e0, 0x2a39707b, 0xa2e2700d, 0x76080396, + 0x4b31e6e0, 0x9fdb957b, 0x31432c0d, 0xe5a95f96, 0xd890bae0, + 0x0c7ac97b}, + {0x00000000, 0x27652581, 0x0fcc3bd9, 0x28a91e58, 0x5f9e0669, + 0x78fb23e8, 0x50523db0, 0x77371831, 0xbe3c0dd2, 0x99592853, + 0xb1f0360b, 0x9695138a, 0xe1a20bbb, 0xc6c72e3a, 0xee6e3062, + 0xc90b15e3, 0x3d7f6b7f, 0x1a1a4efe, 0x32b350a6, 0x15d67527, + 0x62e16d16, 0x45844897, 0x6d2d56cf, 0x4a48734e, 0x834366ad, + 0xa426432c, 0x8c8f5d74, 0xabea78f5, 0xdcdd60c4, 0xfbb84545, + 0xd3115b1d, 0xf4747e9c, 0x7afed6fe, 0x5d9bf37f, 0x7532ed27, + 0x5257c8a6, 0x2560d097, 0x0205f516, 0x2aaceb4e, 0x0dc9cecf, + 0xc4c2db2c, 0xe3a7fead, 0xcb0ee0f5, 0xec6bc574, 0x9b5cdd45, + 0xbc39f8c4, 0x9490e69c, 0xb3f5c31d, 0x4781bd81, 0x60e49800, + 0x484d8658, 0x6f28a3d9, 0x181fbbe8, 0x3f7a9e69, 0x17d38031, + 0x30b6a5b0, 0xf9bdb053, 0xded895d2, 0xf6718b8a, 0xd114ae0b, + 0xa623b63a, 0x814693bb, 0xa9ef8de3, 0x8e8aa862, 0xb5fadc26, + 0x929ff9a7, 0xba36e7ff, 0x9d53c27e, 0xea64da4f, 0xcd01ffce, + 0xe5a8e196, 0xc2cdc417, 0x0bc6d1f4, 0x2ca3f475, 0x040aea2d, + 0x236fcfac, 0x5458d79d, 0x733df21c, 0x5b94ec44, 0x7cf1c9c5, + 0x8885b759, 0xafe092d8, 0x87498c80, 0xa02ca901, 0xd71bb130, + 0xf07e94b1, 0xd8d78ae9, 0xffb2af68, 0x36b9ba8b, 0x11dc9f0a, + 0x39758152, 0x1e10a4d3, 0x6927bce2, 0x4e429963, 0x66eb873b, + 0x418ea2ba, 0xcf040ad8, 0xe8612f59, 0xc0c83101, 0xe7ad1480, + 0x909a0cb1, 0xb7ff2930, 0x9f563768, 0xb83312e9, 0x7138070a, + 0x565d228b, 0x7ef43cd3, 0x59911952, 0x2ea60163, 0x09c324e2, + 0x216a3aba, 0x060f1f3b, 0xf27b61a7, 0xd51e4426, 0xfdb75a7e, + 0xdad27fff, 0xade567ce, 0x8a80424f, 0xa2295c17, 0x854c7996, + 0x4c476c75, 0x6b2249f4, 0x438b57ac, 0x64ee722d, 0x13d96a1c, + 0x34bc4f9d, 0x1c1551c5, 0x3b707444, 0x6af5b94d, 0x4d909ccc, + 0x65398294, 0x425ca715, 0x356bbf24, 0x120e9aa5, 0x3aa784fd, + 0x1dc2a17c, 0xd4c9b49f, 0xf3ac911e, 0xdb058f46, 0xfc60aac7, + 0x8b57b2f6, 0xac329777, 0x849b892f, 0xa3feacae, 0x578ad232, + 0x70eff7b3, 0x5846e9eb, 0x7f23cc6a, 0x0814d45b, 0x2f71f1da, + 0x07d8ef82, 0x20bdca03, 0xe9b6dfe0, 0xced3fa61, 0xe67ae439, + 0xc11fc1b8, 0xb628d989, 0x914dfc08, 0xb9e4e250, 0x9e81c7d1, + 0x100b6fb3, 0x376e4a32, 0x1fc7546a, 0x38a271eb, 0x4f9569da, + 0x68f04c5b, 0x40595203, 0x673c7782, 0xae376261, 0x895247e0, + 0xa1fb59b8, 0x869e7c39, 0xf1a96408, 0xd6cc4189, 0xfe655fd1, + 0xd9007a50, 0x2d7404cc, 0x0a11214d, 0x22b83f15, 0x05dd1a94, + 0x72ea02a5, 0x558f2724, 0x7d26397c, 0x5a431cfd, 0x9348091e, + 0xb42d2c9f, 0x9c8432c7, 0xbbe11746, 0xccd60f77, 0xebb32af6, + 0xc31a34ae, 0xe47f112f, 0xdf0f656b, 0xf86a40ea, 0xd0c35eb2, + 0xf7a67b33, 0x80916302, 0xa7f44683, 0x8f5d58db, 0xa8387d5a, + 0x613368b9, 0x46564d38, 0x6eff5360, 0x499a76e1, 0x3ead6ed0, + 0x19c84b51, 0x31615509, 0x16047088, 0xe2700e14, 0xc5152b95, + 0xedbc35cd, 0xcad9104c, 0xbdee087d, 0x9a8b2dfc, 0xb22233a4, + 0x95471625, 0x5c4c03c6, 0x7b292647, 0x5380381f, 0x74e51d9e, + 0x03d205af, 0x24b7202e, 0x0c1e3e76, 0x2b7b1bf7, 0xa5f1b395, + 0x82949614, 0xaa3d884c, 0x8d58adcd, 0xfa6fb5fc, 0xdd0a907d, + 0xf5a38e25, 0xd2c6aba4, 0x1bcdbe47, 0x3ca89bc6, 0x1401859e, + 0x3364a01f, 0x4453b82e, 0x63369daf, 0x4b9f83f7, 0x6cfaa676, + 0x988ed8ea, 0xbfebfd6b, 0x9742e333, 0xb027c6b2, 0xc710de83, + 0xe075fb02, 0xc8dce55a, 0xefb9c0db, 0x26b2d538, 0x01d7f0b9, + 0x297eeee1, 0x0e1bcb60, 0x792cd351, 0x5e49f6d0, 0x76e0e888, + 0x5185cd09}}; + +#endif + +#endif + +#endif + +local const z_crc_t FAR x2n_table[] = { + 0x40000000, 0x20000000, 0x08000000, 0x00800000, 0x00008000, + 0xedb88320, 0xb1e6b092, 0xa06a2517, 0xed627dae, 0x88d14467, + 0xd7bbfe6a, 0xec447f11, 0x8e7ea170, 0x6427800e, 0x4d47bae0, + 0x09fe548f, 0x83852d0f, 0x30362f1a, 0x7b5a9cc3, 0x31fec169, + 0x9fec022a, 0x6c8dedc4, 0x15d6874d, 0x5fde7a4e, 0xbad90e37, + 0x2e4e5eef, 0x4eaba214, 0xa8a472c0, 0x429a969e, 0x148d302a, + 0xc40ba6d0, 0xc4e22c3c}; diff --git a/deps/zlib/deflate.c b/deps/zlib/deflate.c index 1ec761448..298785587 100644 --- a/deps/zlib/deflate.c +++ b/deps/zlib/deflate.c @@ -1,5 +1,5 @@ /* deflate.c -- compress data using the deflation algorithm - * Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler + * Copyright (C) 1995-2024 Jean-loup Gailly and Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -52,7 +52,7 @@ #include "deflate.h" const char deflate_copyright[] = - " deflate 1.2.11 Copyright 1995-2017 Jean-loup Gailly and Mark Adler "; + " deflate 1.3.1.1 Copyright 1995-2024 Jean-loup Gailly and Mark Adler "; /* If you use the zlib library in a product, an acknowledgment is welcome in the documentation of your product. If for some reason you cannot @@ -60,9 +60,6 @@ const char deflate_copyright[] = copyright string in the executable of your product. */ -/* =========================================================================== - * Function prototypes. - */ typedef enum { need_more, /* block not completed, need more input or more output */ block_done, /* block flush performed */ @@ -70,35 +67,16 @@ typedef enum { finish_done /* finish done, accept no more input or output */ } block_state; -typedef block_state (*compress_func) OF((deflate_state *s, int flush)); +typedef block_state (*compress_func)(deflate_state *s, int flush); /* Compression function. Returns the block state after the call. */ -local int deflateStateCheck OF((z_streamp strm)); -local void slide_hash OF((deflate_state *s)); -local void fill_window OF((deflate_state *s)); -local block_state deflate_stored OF((deflate_state *s, int flush)); -local block_state deflate_fast OF((deflate_state *s, int flush)); +local block_state deflate_stored(deflate_state *s, int flush); +local block_state deflate_fast(deflate_state *s, int flush); #ifndef FASTEST -local block_state deflate_slow OF((deflate_state *s, int flush)); -#endif -local block_state deflate_rle OF((deflate_state *s, int flush)); -local block_state deflate_huff OF((deflate_state *s, int flush)); -local void lm_init OF((deflate_state *s)); -local void putShortMSB OF((deflate_state *s, uInt b)); -local void flush_pending OF((z_streamp strm)); -local unsigned read_buf OF((z_streamp strm, Bytef *buf, unsigned size)); -#ifdef ASMV -# pragma message("Assembler code may have bugs -- use at your own risk") - void match_init OF((void)); /* asm code initialization */ - uInt longest_match OF((deflate_state *s, IPos cur_match)); -#else -local uInt longest_match OF((deflate_state *s, IPos cur_match)); -#endif - -#ifdef ZLIB_DEBUG -local void check_match OF((deflate_state *s, IPos start, IPos match, - int length)); +local block_state deflate_slow(deflate_state *s, int flush); #endif +local block_state deflate_rle(deflate_state *s, int flush); +local block_state deflate_huff(deflate_state *s, int flush); /* =========================================================================== * Local data @@ -160,7 +138,7 @@ local const config configuration_table[10] = { * characters, so that a running hash key can be computed from the previous * key instead of complete recalculation each time. */ -#define UPDATE_HASH(s,h,c) (h = (((h)<hash_shift) ^ (c)) & s->hash_mask) +#define UPDATE_HASH(s,h,c) (h = (((h) << s->hash_shift) ^ (c)) & s->hash_mask) /* =========================================================================== @@ -190,17 +168,23 @@ local const config configuration_table[10] = { * prev[] will be initialized on the fly. */ #define CLEAR_HASH(s) \ - s->head[s->hash_size-1] = NIL; \ - zmemzero((Bytef *)s->head, (unsigned)(s->hash_size-1)*sizeof(*s->head)); + do { \ + s->head[s->hash_size - 1] = NIL; \ + zmemzero((Bytef *)s->head, \ + (unsigned)(s->hash_size - 1)*sizeof(*s->head)); \ + } while (0) /* =========================================================================== * Slide the hash table when sliding the window down (could be avoided with 32 * bit values at the expense of memory usage). We slide even when level == 0 to * keep the hash table consistent if we switch back to level > 0 later. */ -local void slide_hash(s) - deflate_state *s; -{ +#if defined(__has_feature) +# if __has_feature(memory_sanitizer) + __attribute__((no_sanitize("memory"))) +# endif +#endif +local void slide_hash(deflate_state *s) { unsigned n, m; Posf *p; uInt wsize = s->w_size; @@ -224,39 +208,181 @@ local void slide_hash(s) #endif } +/* =========================================================================== + * Read a new buffer from the current input stream, update the adler32 + * and total number of bytes read. All deflate() input goes through + * this function so some applications may wish to modify it to avoid + * allocating a large strm->next_in buffer and copying from it. + * (See also flush_pending()). + */ +local unsigned read_buf(z_streamp strm, Bytef *buf, unsigned size) { + unsigned len = strm->avail_in; + + if (len > size) len = size; + if (len == 0) return 0; + + strm->avail_in -= len; + + zmemcpy(buf, strm->next_in, len); + if (strm->state->wrap == 1) { + strm->adler = adler32(strm->adler, buf, len); + } +#ifdef GZIP + else if (strm->state->wrap == 2) { + strm->adler = crc32(strm->adler, buf, len); + } +#endif + strm->next_in += len; + strm->total_in += len; + + return len; +} + +/* =========================================================================== + * Fill the window when the lookahead becomes insufficient. + * Updates strstart and lookahead. + * + * IN assertion: lookahead < MIN_LOOKAHEAD + * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD + * At least one byte has been read, or avail_in == 0; reads are + * performed for at least two bytes (required for the zip translate_eol + * option -- not supported here). + */ +local void fill_window(deflate_state *s) { + unsigned n; + unsigned more; /* Amount of free space at the end of the window. */ + uInt wsize = s->w_size; + + Assert(s->lookahead < MIN_LOOKAHEAD, "already enough lookahead"); + + do { + more = (unsigned)(s->window_size -(ulg)s->lookahead -(ulg)s->strstart); + + /* Deal with !@#$% 64K limit: */ + if (sizeof(int) <= 2) { + if (more == 0 && s->strstart == 0 && s->lookahead == 0) { + more = wsize; + + } else if (more == (unsigned)(-1)) { + /* Very unlikely, but possible on 16 bit machine if + * strstart == 0 && lookahead == 1 (input done a byte at time) + */ + more--; + } + } + + /* If the window is almost full and there is insufficient lookahead, + * move the upper half to the lower one to make room in the upper half. + */ + if (s->strstart >= wsize + MAX_DIST(s)) { + + zmemcpy(s->window, s->window + wsize, (unsigned)wsize - more); + s->match_start -= wsize; + s->strstart -= wsize; /* we now have strstart >= MAX_DIST */ + s->block_start -= (long) wsize; + if (s->insert > s->strstart) + s->insert = s->strstart; + slide_hash(s); + more += wsize; + } + if (s->strm->avail_in == 0) break; + + /* If there was no sliding: + * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 && + * more == window_size - lookahead - strstart + * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1) + * => more >= window_size - 2*WSIZE + 2 + * In the BIG_MEM or MMAP case (not yet supported), + * window_size == input_size + MIN_LOOKAHEAD && + * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD. + * Otherwise, window_size == 2*WSIZE so more >= 2. + * If there was sliding, more >= WSIZE. So in all cases, more >= 2. + */ + Assert(more >= 2, "more < 2"); + + n = read_buf(s->strm, s->window + s->strstart + s->lookahead, more); + s->lookahead += n; + + /* Initialize the hash value now that we have some input: */ + if (s->lookahead + s->insert >= MIN_MATCH) { + uInt str = s->strstart - s->insert; + s->ins_h = s->window[str]; + UPDATE_HASH(s, s->ins_h, s->window[str + 1]); +#if MIN_MATCH != 3 + Call UPDATE_HASH() MIN_MATCH-3 more times +#endif + while (s->insert) { + UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); +#ifndef FASTEST + s->prev[str & s->w_mask] = s->head[s->ins_h]; +#endif + s->head[s->ins_h] = (Pos)str; + str++; + s->insert--; + if (s->lookahead + s->insert < MIN_MATCH) + break; + } + } + /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage, + * but this is not important since only literal bytes will be emitted. + */ + + } while (s->lookahead < MIN_LOOKAHEAD && s->strm->avail_in != 0); + + /* If the WIN_INIT bytes after the end of the current data have never been + * written, then zero those bytes in order to avoid memory check reports of + * the use of uninitialized (or uninitialised as Julian writes) bytes by + * the longest match routines. Update the high water mark for the next + * time through here. WIN_INIT is set to MAX_MATCH since the longest match + * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead. + */ + if (s->high_water < s->window_size) { + ulg curr = s->strstart + (ulg)(s->lookahead); + ulg init; + + if (s->high_water < curr) { + /* Previous high water mark below current data -- zero WIN_INIT + * bytes or up to end of window, whichever is less. + */ + init = s->window_size - curr; + if (init > WIN_INIT) + init = WIN_INIT; + zmemzero(s->window + curr, (unsigned)init); + s->high_water = curr + init; + } + else if (s->high_water < (ulg)curr + WIN_INIT) { + /* High water mark at or above current data, but below current data + * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up + * to end of window, whichever is less. + */ + init = (ulg)curr + WIN_INIT - s->high_water; + if (init > s->window_size - s->high_water) + init = s->window_size - s->high_water; + zmemzero(s->window + s->high_water, (unsigned)init); + s->high_water += init; + } + } + + Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD, + "not enough room for search"); +} + /* ========================================================================= */ -int ZEXPORT deflateInit_(strm, level, version, stream_size) - z_streamp strm; - int level; - const char *version; - int stream_size; -{ +int ZEXPORT deflateInit_(z_streamp strm, int level, const char *version, + int stream_size) { return deflateInit2_(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY, version, stream_size); /* To do: ignore strm->next_in if we use it as window */ } /* ========================================================================= */ -int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy, - version, stream_size) - z_streamp strm; - int level; - int method; - int windowBits; - int memLevel; - int strategy; - const char *version; - int stream_size; -{ +int ZEXPORT deflateInit2_(z_streamp strm, int level, int method, + int windowBits, int memLevel, int strategy, + const char *version, int stream_size) { deflate_state *s; int wrap = 1; static const char my_version[] = ZLIB_VERSION; - ushf *overlay; - /* We overlay pending_buf and d_buf+l_buf. This works since the average - * output size for (length,distance) codes is <= 24 bits. - */ - if (version == Z_NULL || version[0] != my_version[0] || stream_size != sizeof(z_stream)) { return Z_VERSION_ERROR; @@ -287,6 +413,8 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy, if (windowBits < 0) { /* suppress zlib wrapper */ wrap = 0; + if (windowBits < -15) + return Z_STREAM_ERROR; windowBits = -windowBits; } #ifdef GZIP @@ -316,7 +444,7 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy, s->hash_bits = (uInt)memLevel + 7; s->hash_size = 1 << s->hash_bits; s->hash_mask = s->hash_size - 1; - s->hash_shift = ((s->hash_bits+MIN_MATCH-1)/MIN_MATCH); + s->hash_shift = ((s->hash_bits + MIN_MATCH-1) / MIN_MATCH); s->window = (Bytef *) ZALLOC(strm, s->w_size, 2*sizeof(Byte)); s->prev = (Posf *) ZALLOC(strm, s->w_size, sizeof(Pos)); @@ -326,9 +454,47 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy, s->lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */ - overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2); - s->pending_buf = (uchf *) overlay; - s->pending_buf_size = (ulg)s->lit_bufsize * (sizeof(ush)+2L); + /* We overlay pending_buf and sym_buf. This works since the average size + * for length/distance pairs over any compressed block is assured to be 31 + * bits or less. + * + * Analysis: The longest fixed codes are a length code of 8 bits plus 5 + * extra bits, for lengths 131 to 257. The longest fixed distance codes are + * 5 bits plus 13 extra bits, for distances 16385 to 32768. The longest + * possible fixed-codes length/distance pair is then 31 bits total. + * + * sym_buf starts one-fourth of the way into pending_buf. So there are + * three bytes in sym_buf for every four bytes in pending_buf. Each symbol + * in sym_buf is three bytes -- two for the distance and one for the + * literal/length. As each symbol is consumed, the pointer to the next + * sym_buf value to read moves forward three bytes. From that symbol, up to + * 31 bits are written to pending_buf. The closest the written pending_buf + * bits gets to the next sym_buf symbol to read is just before the last + * code is written. At that time, 31*(n - 2) bits have been written, just + * after 24*(n - 2) bits have been consumed from sym_buf. sym_buf starts at + * 8*n bits into pending_buf. (Note that the symbol buffer fills when n - 1 + * symbols are written.) The closest the writing gets to what is unread is + * then n + 14 bits. Here n is lit_bufsize, which is 16384 by default, and + * can range from 128 to 32768. + * + * Therefore, at a minimum, there are 142 bits of space between what is + * written and what is read in the overlain buffers, so the symbols cannot + * be overwritten by the compressed data. That space is actually 139 bits, + * due to the three-bit fixed-code block header. + * + * That covers the case where either Z_FIXED is specified, forcing fixed + * codes, or when the use of fixed codes is chosen, because that choice + * results in a smaller compressed block than dynamic codes. That latter + * condition then assures that the above analysis also covers all dynamic + * blocks. A dynamic-code block will only be chosen to be emitted if it has + * fewer bits than a fixed-code block would for the same set of symbols. + * Therefore its average symbol length is assured to be less than 31. So + * the compressed data for a dynamic block also cannot overwrite the + * symbols from which it is being constructed. + */ + + s->pending_buf = (uchf *) ZALLOC(strm, s->lit_bufsize, LIT_BUFS); + s->pending_buf_size = (ulg)s->lit_bufsize * 4; if (s->window == Z_NULL || s->prev == Z_NULL || s->head == Z_NULL || s->pending_buf == Z_NULL) { @@ -337,8 +503,18 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy, deflateEnd (strm); return Z_MEM_ERROR; } - s->d_buf = overlay + s->lit_bufsize/sizeof(ush); - s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize; +#ifdef LIT_MEM + s->d_buf = (ushf *)(s->pending_buf + (s->lit_bufsize << 1)); + s->l_buf = s->pending_buf + (s->lit_bufsize << 2); + s->sym_end = s->lit_bufsize - 1; +#else + s->sym_buf = s->pending_buf + s->lit_bufsize; + s->sym_end = (s->lit_bufsize - 1) * 3; +#endif + /* We avoid equality with lit_bufsize*3 because of wraparound at 64K + * on 16 bit machines and because stored blocks are restricted to + * 64K-1 bytes. + */ s->level = level; s->strategy = strategy; @@ -350,9 +526,7 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy, /* ========================================================================= * Check for a valid deflate stream state. Return 0 if ok, 1 if not. */ -local int deflateStateCheck (strm) - z_streamp strm; -{ +local int deflateStateCheck(z_streamp strm) { deflate_state *s; if (strm == Z_NULL || strm->zalloc == (alloc_func)0 || strm->zfree == (free_func)0) @@ -373,11 +547,8 @@ local int deflateStateCheck (strm) } /* ========================================================================= */ -int ZEXPORT deflateSetDictionary (strm, dictionary, dictLength) - z_streamp strm; - const Bytef *dictionary; - uInt dictLength; -{ +int ZEXPORT deflateSetDictionary(z_streamp strm, const Bytef *dictionary, + uInt dictLength) { deflate_state *s; uInt str, n; int wrap; @@ -442,11 +613,8 @@ int ZEXPORT deflateSetDictionary (strm, dictionary, dictLength) } /* ========================================================================= */ -int ZEXPORT deflateGetDictionary (strm, dictionary, dictLength) - z_streamp strm; - Bytef *dictionary; - uInt *dictLength; -{ +int ZEXPORT deflateGetDictionary(z_streamp strm, Bytef *dictionary, + uInt *dictLength) { deflate_state *s; uInt len; @@ -464,9 +632,7 @@ int ZEXPORT deflateGetDictionary (strm, dictionary, dictLength) } /* ========================================================================= */ -int ZEXPORT deflateResetKeep (strm) - z_streamp strm; -{ +int ZEXPORT deflateResetKeep(z_streamp strm) { deflate_state *s; if (deflateStateCheck(strm)) { @@ -488,23 +654,45 @@ int ZEXPORT deflateResetKeep (strm) #ifdef GZIP s->wrap == 2 ? GZIP_STATE : #endif - s->wrap ? INIT_STATE : BUSY_STATE; + INIT_STATE; strm->adler = #ifdef GZIP s->wrap == 2 ? crc32(0L, Z_NULL, 0) : #endif adler32(0L, Z_NULL, 0); - s->last_flush = Z_NO_FLUSH; + s->last_flush = -2; _tr_init(s); return Z_OK; } +/* =========================================================================== + * Initialize the "longest match" routines for a new zlib stream + */ +local void lm_init(deflate_state *s) { + s->window_size = (ulg)2L*s->w_size; + + CLEAR_HASH(s); + + /* Set the default configuration parameters: + */ + s->max_lazy_match = configuration_table[s->level].max_lazy; + s->good_match = configuration_table[s->level].good_length; + s->nice_match = configuration_table[s->level].nice_length; + s->max_chain_length = configuration_table[s->level].max_chain; + + s->strstart = 0; + s->block_start = 0L; + s->lookahead = 0; + s->insert = 0; + s->match_length = s->prev_length = MIN_MATCH-1; + s->match_available = 0; + s->ins_h = 0; +} + /* ========================================================================= */ -int ZEXPORT deflateReset (strm) - z_streamp strm; -{ +int ZEXPORT deflateReset(z_streamp strm) { int ret; ret = deflateResetKeep(strm); @@ -514,10 +702,7 @@ int ZEXPORT deflateReset (strm) } /* ========================================================================= */ -int ZEXPORT deflateSetHeader (strm, head) - z_streamp strm; - gz_headerp head; -{ +int ZEXPORT deflateSetHeader(z_streamp strm, gz_headerp head) { if (deflateStateCheck(strm) || strm->state->wrap != 2) return Z_STREAM_ERROR; strm->state->gzhead = head; @@ -525,11 +710,7 @@ int ZEXPORT deflateSetHeader (strm, head) } /* ========================================================================= */ -int ZEXPORT deflatePending (strm, pending, bits) - unsigned *pending; - int *bits; - z_streamp strm; -{ +int ZEXPORT deflatePending(z_streamp strm, unsigned *pending, int *bits) { if (deflateStateCheck(strm)) return Z_STREAM_ERROR; if (pending != Z_NULL) *pending = strm->state->pending; @@ -539,18 +720,29 @@ int ZEXPORT deflatePending (strm, pending, bits) } /* ========================================================================= */ -int ZEXPORT deflatePrime (strm, bits, value) - z_streamp strm; - int bits; - int value; -{ +int ZEXPORT deflateUsed(z_streamp strm, int *bits) { + if (deflateStateCheck(strm)) return Z_STREAM_ERROR; + if (bits != Z_NULL) + *bits = strm->state->bi_used; + return Z_OK; +} + +/* ========================================================================= */ +int ZEXPORT deflatePrime(z_streamp strm, int bits, int value) { deflate_state *s; int put; if (deflateStateCheck(strm)) return Z_STREAM_ERROR; s = strm->state; - if ((Bytef *)(s->d_buf) < s->pending_out + ((Buf_size + 7) >> 3)) +#ifdef LIT_MEM + if (bits < 0 || bits > 16 || + (uchf *)s->d_buf < s->pending_out + ((Buf_size + 7) >> 3)) return Z_BUF_ERROR; +#else + if (bits < 0 || bits > 16 || + s->sym_buf < s->pending_out + ((Buf_size + 7) >> 3)) + return Z_BUF_ERROR; +#endif do { put = Buf_size - s->bi_valid; if (put > bits) @@ -565,11 +757,7 @@ int ZEXPORT deflatePrime (strm, bits, value) } /* ========================================================================= */ -int ZEXPORT deflateParams(strm, level, strategy) - z_streamp strm; - int level; - int strategy; -{ +int ZEXPORT deflateParams(z_streamp strm, int level, int strategy) { deflate_state *s; compress_func func; @@ -587,12 +775,12 @@ int ZEXPORT deflateParams(strm, level, strategy) func = configuration_table[s->level].func; if ((strategy != s->strategy || func != configuration_table[level].func) && - s->high_water) { + s->last_flush != -2) { /* Flush the last buffer: */ int err = deflate(strm, Z_BLOCK); if (err == Z_STREAM_ERROR) return err; - if (strm->avail_out == 0) + if (strm->avail_in || (s->strstart - s->block_start) + s->lookahead) return Z_BUF_ERROR; } if (s->level != level) { @@ -614,13 +802,8 @@ int ZEXPORT deflateParams(strm, level, strategy) } /* ========================================================================= */ -int ZEXPORT deflateTune(strm, good_length, max_lazy, nice_length, max_chain) - z_streamp strm; - int good_length; - int max_lazy; - int nice_length; - int max_chain; -{ +int ZEXPORT deflateTune(z_streamp strm, int good_length, int max_lazy, + int nice_length, int max_chain) { deflate_state *s; if (deflateStateCheck(strm)) return Z_STREAM_ERROR; @@ -633,40 +816,51 @@ int ZEXPORT deflateTune(strm, good_length, max_lazy, nice_length, max_chain) } /* ========================================================================= - * For the default windowBits of 15 and memLevel of 8, this function returns - * a close to exact, as well as small, upper bound on the compressed size. - * They are coded as constants here for a reason--if the #define's are - * changed, then this function needs to be changed as well. The return - * value for 15 and 8 only works for those exact settings. + * For the default windowBits of 15 and memLevel of 8, this function returns a + * close to exact, as well as small, upper bound on the compressed size. This + * is an expansion of ~0.03%, plus a small constant. * - * For any setting other than those defaults for windowBits and memLevel, - * the value returned is a conservative worst case for the maximum expansion - * resulting from using fixed blocks instead of stored blocks, which deflate - * can emit on compressed data for some combinations of the parameters. + * For any setting other than those defaults for windowBits and memLevel, one + * of two worst case bounds is returned. This is at most an expansion of ~4% or + * ~13%, plus a small constant. * - * This function could be more sophisticated to provide closer upper bounds for - * every combination of windowBits and memLevel. But even the conservative - * upper bound of about 14% expansion does not seem onerous for output buffer - * allocation. + * Both the 0.03% and 4% derive from the overhead of stored blocks. The first + * one is for stored blocks of 16383 bytes (memLevel == 8), whereas the second + * is for stored blocks of 127 bytes (the worst case memLevel == 1). The + * expansion results from five bytes of header for each stored block. + * + * The larger expansion of 13% results from a window size less than or equal to + * the symbols buffer size (windowBits <= memLevel + 7). In that case some of + * the data being compressed may have slid out of the sliding window, impeding + * a stored block from being emitted. Then the only choice is a fixed or + * dynamic block, where a fixed block limits the maximum expansion to 9 bits + * per 8-bit byte, plus 10 bits for every block. The smallest block size for + * which this can occur is 255 (memLevel == 2). + * + * Shifts are used to approximate divisions, for speed. */ -uLong ZEXPORT deflateBound(strm, sourceLen) - z_streamp strm; - uLong sourceLen; -{ +uLong ZEXPORT deflateBound(z_streamp strm, uLong sourceLen) { deflate_state *s; - uLong complen, wraplen; + uLong fixedlen, storelen, wraplen; - /* conservative upper bound for compressed data */ - complen = sourceLen + - ((sourceLen + 7) >> 3) + ((sourceLen + 63) >> 6) + 5; + /* upper bound for fixed blocks with 9-bit literals and length 255 + (memLevel == 2, which is the lowest that may not use stored blocks) -- + ~13% overhead plus a small constant */ + fixedlen = sourceLen + (sourceLen >> 3) + (sourceLen >> 8) + + (sourceLen >> 9) + 4; - /* if can't get parameters, return conservative bound plus zlib wrapper */ + /* upper bound for stored blocks with length 127 (memLevel == 1) -- + ~4% overhead plus a small constant */ + storelen = sourceLen + (sourceLen >> 5) + (sourceLen >> 7) + + (sourceLen >> 11) + 7; + + /* if can't get parameters, return larger bound plus a wrapper */ if (deflateStateCheck(strm)) - return complen + 6; + return (fixedlen > storelen ? fixedlen : storelen) + 18; /* compute wrapper length */ s = strm->state; - switch (s->wrap) { + switch (s->wrap < 0 ? -s->wrap : s->wrap) { case 0: /* raw deflate */ wraplen = 0; break; @@ -696,14 +890,16 @@ uLong ZEXPORT deflateBound(strm, sourceLen) break; #endif default: /* for compiler happiness */ - wraplen = 6; + wraplen = 18; } - /* if not default parameters, return conservative bound */ + /* if not default parameters, return one of the conservative bounds */ if (s->w_bits != 15 || s->hash_bits != 8 + 7) - return complen + wraplen; + return (s->w_bits <= s->hash_bits && s->level ? fixedlen : storelen) + + wraplen; - /* default settings: return tight bound for that case */ + /* default settings: return tight bound for that case -- ~0.03% overhead + plus a small constant */ return sourceLen + (sourceLen >> 12) + (sourceLen >> 14) + (sourceLen >> 25) + 13 - 6 + wraplen; } @@ -713,10 +909,7 @@ uLong ZEXPORT deflateBound(strm, sourceLen) * IN assertion: the stream state is correct and there is enough room in * pending_buf. */ -local void putShortMSB (s, b) - deflate_state *s; - uInt b; -{ +local void putShortMSB(deflate_state *s, uInt b) { put_byte(s, (Byte)(b >> 8)); put_byte(s, (Byte)(b & 0xff)); } @@ -727,9 +920,7 @@ local void putShortMSB (s, b) * applications may wish to modify it to avoid allocating a large * strm->next_out buffer and copying into it. (See also read_buf()). */ -local void flush_pending(strm) - z_streamp strm; -{ +local void flush_pending(z_streamp strm) { unsigned len; deflate_state *s = strm->state; @@ -760,10 +951,7 @@ local void flush_pending(strm) } while (0) /* ========================================================================= */ -int ZEXPORT deflate (strm, flush) - z_streamp strm; - int flush; -{ +int ZEXPORT deflate(z_streamp strm, int flush) { int old_flush; /* value of flush param for previous deflate call */ deflate_state *s; @@ -811,9 +999,11 @@ int ZEXPORT deflate (strm, flush) } /* Write the header */ + if (s->status == INIT_STATE && s->wrap == 0) + s->status = BUSY_STATE; if (s->status == INIT_STATE) { /* zlib header */ - uInt header = (Z_DEFLATED + ((s->w_bits-8)<<4)) << 8; + uInt header = (Z_DEFLATED + ((s->w_bits - 8) << 4)) << 8; uInt level_flags; if (s->strategy >= Z_HUFFMAN_ONLY || s->level < 2) @@ -1073,9 +1263,7 @@ int ZEXPORT deflate (strm, flush) } /* ========================================================================= */ -int ZEXPORT deflateEnd (strm) - z_streamp strm; -{ +int ZEXPORT deflateEnd(z_streamp strm) { int status; if (deflateStateCheck(strm)) return Z_STREAM_ERROR; @@ -1099,16 +1287,14 @@ int ZEXPORT deflateEnd (strm) * To simplify the source, this is not supported for 16-bit MSDOS (which * doesn't have enough memory anyway to duplicate compression states). */ -int ZEXPORT deflateCopy (dest, source) - z_streamp dest; - z_streamp source; -{ +int ZEXPORT deflateCopy(z_streamp dest, z_streamp source) { #ifdef MAXSEG_64K + (void)dest; + (void)source; return Z_STREAM_ERROR; #else deflate_state *ds; deflate_state *ss; - ushf *overlay; if (deflateStateCheck(source) || dest == Z_NULL) { @@ -1128,8 +1314,7 @@ int ZEXPORT deflateCopy (dest, source) ds->window = (Bytef *) ZALLOC(dest, ds->w_size, 2*sizeof(Byte)); ds->prev = (Posf *) ZALLOC(dest, ds->w_size, sizeof(Pos)); ds->head = (Posf *) ZALLOC(dest, ds->hash_size, sizeof(Pos)); - overlay = (ushf *) ZALLOC(dest, ds->lit_bufsize, sizeof(ush)+2); - ds->pending_buf = (uchf *) overlay; + ds->pending_buf = (uchf *) ZALLOC(dest, ds->lit_bufsize, LIT_BUFS); if (ds->window == Z_NULL || ds->prev == Z_NULL || ds->head == Z_NULL || ds->pending_buf == Z_NULL) { @@ -1140,11 +1325,15 @@ int ZEXPORT deflateCopy (dest, source) zmemcpy(ds->window, ss->window, ds->w_size * 2 * sizeof(Byte)); zmemcpy((voidpf)ds->prev, (voidpf)ss->prev, ds->w_size * sizeof(Pos)); zmemcpy((voidpf)ds->head, (voidpf)ss->head, ds->hash_size * sizeof(Pos)); - zmemcpy(ds->pending_buf, ss->pending_buf, (uInt)ds->pending_buf_size); + zmemcpy(ds->pending_buf, ss->pending_buf, ds->lit_bufsize * LIT_BUFS); ds->pending_out = ds->pending_buf + (ss->pending_out - ss->pending_buf); - ds->d_buf = overlay + ds->lit_bufsize/sizeof(ush); - ds->l_buf = ds->pending_buf + (1+sizeof(ush))*ds->lit_bufsize; +#ifdef LIT_MEM + ds->d_buf = (ushf *)(ds->pending_buf + (ds->lit_bufsize << 1)); + ds->l_buf = ds->pending_buf + (ds->lit_bufsize << 2); +#else + ds->sym_buf = ds->pending_buf + ds->lit_bufsize; +#endif ds->l_desc.dyn_tree = ds->dyn_ltree; ds->d_desc.dyn_tree = ds->dyn_dtree; @@ -1154,71 +1343,6 @@ int ZEXPORT deflateCopy (dest, source) #endif /* MAXSEG_64K */ } -/* =========================================================================== - * Read a new buffer from the current input stream, update the adler32 - * and total number of bytes read. All deflate() input goes through - * this function so some applications may wish to modify it to avoid - * allocating a large strm->next_in buffer and copying from it. - * (See also flush_pending()). - */ -local unsigned read_buf(strm, buf, size) - z_streamp strm; - Bytef *buf; - unsigned size; -{ - unsigned len = strm->avail_in; - - if (len > size) len = size; - if (len == 0) return 0; - - strm->avail_in -= len; - - zmemcpy(buf, strm->next_in, len); - if (strm->state->wrap == 1) { - strm->adler = adler32(strm->adler, buf, len); - } -#ifdef GZIP - else if (strm->state->wrap == 2) { - strm->adler = crc32(strm->adler, buf, len); - } -#endif - strm->next_in += len; - strm->total_in += len; - - return len; -} - -/* =========================================================================== - * Initialize the "longest match" routines for a new zlib stream - */ -local void lm_init (s) - deflate_state *s; -{ - s->window_size = (ulg)2L*s->w_size; - - CLEAR_HASH(s); - - /* Set the default configuration parameters: - */ - s->max_lazy_match = configuration_table[s->level].max_lazy; - s->good_match = configuration_table[s->level].good_length; - s->nice_match = configuration_table[s->level].nice_length; - s->max_chain_length = configuration_table[s->level].max_chain; - - s->strstart = 0; - s->block_start = 0L; - s->lookahead = 0; - s->insert = 0; - s->match_length = s->prev_length = MIN_MATCH-1; - s->match_available = 0; - s->ins_h = 0; -#ifndef FASTEST -#ifdef ASMV - match_init(); /* initialize the asm code */ -#endif -#endif -} - #ifndef FASTEST /* =========================================================================== * Set match_start to the longest match starting at the given string and @@ -1229,14 +1353,7 @@ local void lm_init (s) * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1 * OUT assertion: the match length is not greater than s->lookahead. */ -#ifndef ASMV -/* For 80x86 and 680x0, an optimized version will be provided in match.asm or - * match.S. The code will be functionally equivalent. - */ -local uInt longest_match(s, cur_match) - deflate_state *s; - IPos cur_match; /* current match */ -{ +local uInt longest_match(deflate_state *s, IPos cur_match) { unsigned chain_length = s->max_chain_length;/* max hash chain length */ register Bytef *scan = s->window + s->strstart; /* current string */ register Bytef *match; /* matched string */ @@ -1257,10 +1374,10 @@ local uInt longest_match(s, cur_match) */ register Bytef *strend = s->window + s->strstart + MAX_MATCH - 1; register ush scan_start = *(ushf*)scan; - register ush scan_end = *(ushf*)(scan+best_len-1); + register ush scan_end = *(ushf*)(scan + best_len - 1); #else register Bytef *strend = s->window + s->strstart + MAX_MATCH; - register Byte scan_end1 = scan[best_len-1]; + register Byte scan_end1 = scan[best_len - 1]; register Byte scan_end = scan[best_len]; #endif @@ -1278,7 +1395,8 @@ local uInt longest_match(s, cur_match) */ if ((uInt)nice_match > s->lookahead) nice_match = (int)s->lookahead; - Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, "need lookahead"); + Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD, + "need lookahead"); do { Assert(cur_match < s->strstart, "no future"); @@ -1296,43 +1414,44 @@ local uInt longest_match(s, cur_match) /* This code assumes sizeof(unsigned short) == 2. Do not use * UNALIGNED_OK if your compiler uses a different size. */ - if (*(ushf*)(match+best_len-1) != scan_end || + if (*(ushf*)(match + best_len - 1) != scan_end || *(ushf*)match != scan_start) continue; /* It is not necessary to compare scan[2] and match[2] since they are * always equal when the other bytes match, given that the hash keys * are equal and that HASH_BITS >= 8. Compare 2 bytes at a time at - * strstart+3, +5, ... up to strstart+257. We check for insufficient + * strstart + 3, + 5, up to strstart + 257. We check for insufficient * lookahead only every 4th comparison; the 128th check will be made - * at strstart+257. If MAX_MATCH-2 is not a multiple of 8, it is + * at strstart + 257. If MAX_MATCH-2 is not a multiple of 8, it is * necessary to put more guard bytes at the end of the window, or * to check more often for insufficient lookahead. */ Assert(scan[2] == match[2], "scan[2]?"); scan++, match++; do { - } while (*(ushf*)(scan+=2) == *(ushf*)(match+=2) && - *(ushf*)(scan+=2) == *(ushf*)(match+=2) && - *(ushf*)(scan+=2) == *(ushf*)(match+=2) && - *(ushf*)(scan+=2) == *(ushf*)(match+=2) && + } while (*(ushf*)(scan += 2) == *(ushf*)(match += 2) && + *(ushf*)(scan += 2) == *(ushf*)(match += 2) && + *(ushf*)(scan += 2) == *(ushf*)(match += 2) && + *(ushf*)(scan += 2) == *(ushf*)(match += 2) && scan < strend); /* The funny "do {}" generates better code on most compilers */ - /* Here, scan <= window+strstart+257 */ - Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan"); + /* Here, scan <= window + strstart + 257 */ + Assert(scan <= s->window + (unsigned)(s->window_size - 1), + "wild scan"); if (*scan == *match) scan++; - len = (MAX_MATCH - 1) - (int)(strend-scan); + len = (MAX_MATCH - 1) - (int)(strend - scan); scan = strend - (MAX_MATCH-1); #else /* UNALIGNED_OK */ - if (match[best_len] != scan_end || - match[best_len-1] != scan_end1 || - *match != *scan || - *++match != scan[1]) continue; + if (match[best_len] != scan_end || + match[best_len - 1] != scan_end1 || + *match != *scan || + *++match != scan[1]) continue; - /* The check at best_len-1 can be removed because it will be made + /* The check at best_len - 1 can be removed because it will be made * again later. (This heuristic is not always a win.) * It is not necessary to compare scan[2] and match[2] since they * are always equal when the other bytes match, given that @@ -1342,7 +1461,7 @@ local uInt longest_match(s, cur_match) Assert(*scan == *match, "match[2]?"); /* We check for insufficient lookahead only every 8th comparison; - * the 256th check will be made at strstart+258. + * the 256th check will be made at strstart + 258. */ do { } while (*++scan == *++match && *++scan == *++match && @@ -1351,7 +1470,8 @@ local uInt longest_match(s, cur_match) *++scan == *++match && *++scan == *++match && scan < strend); - Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan"); + Assert(scan <= s->window + (unsigned)(s->window_size - 1), + "wild scan"); len = MAX_MATCH - (int)(strend - scan); scan = strend - MAX_MATCH; @@ -1363,9 +1483,9 @@ local uInt longest_match(s, cur_match) best_len = len; if (len >= nice_match) break; #ifdef UNALIGNED_OK - scan_end = *(ushf*)(scan+best_len-1); + scan_end = *(ushf*)(scan + best_len - 1); #else - scan_end1 = scan[best_len-1]; + scan_end1 = scan[best_len - 1]; scan_end = scan[best_len]; #endif } @@ -1375,17 +1495,13 @@ local uInt longest_match(s, cur_match) if ((uInt)best_len <= s->lookahead) return (uInt)best_len; return s->lookahead; } -#endif /* ASMV */ #else /* FASTEST */ /* --------------------------------------------------------------------------- * Optimized version for FASTEST only */ -local uInt longest_match(s, cur_match) - deflate_state *s; - IPos cur_match; /* current match */ -{ +local uInt longest_match(deflate_state *s, IPos cur_match) { register Bytef *scan = s->window + s->strstart; /* current string */ register Bytef *match; /* matched string */ register int len; /* length of current match */ @@ -1396,7 +1512,8 @@ local uInt longest_match(s, cur_match) */ Assert(s->hash_bits >= 8 && MAX_MATCH == 258, "Code too clever"); - Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, "need lookahead"); + Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD, + "need lookahead"); Assert(cur_match < s->strstart, "no future"); @@ -1406,7 +1523,7 @@ local uInt longest_match(s, cur_match) */ if (match[0] != scan[0] || match[1] != scan[1]) return MIN_MATCH-1; - /* The check at best_len-1 can be removed because it will be made + /* The check at best_len - 1 can be removed because it will be made * again later. (This heuristic is not always a win.) * It is not necessary to compare scan[2] and match[2] since they * are always equal when the other bytes match, given that @@ -1416,7 +1533,7 @@ local uInt longest_match(s, cur_match) Assert(*scan == *match, "match[2]?"); /* We check for insufficient lookahead only every 8th comparison; - * the 256th check will be made at strstart+258. + * the 256th check will be made at strstart + 258. */ do { } while (*++scan == *++match && *++scan == *++match && @@ -1425,7 +1542,7 @@ local uInt longest_match(s, cur_match) *++scan == *++match && *++scan == *++match && scan < strend); - Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan"); + Assert(scan <= s->window + (unsigned)(s->window_size - 1), "wild scan"); len = MAX_MATCH - (int)(strend - scan); @@ -1445,23 +1562,27 @@ local uInt longest_match(s, cur_match) /* =========================================================================== * Check that the match at match_start is indeed a match. */ -local void check_match(s, start, match, length) - deflate_state *s; - IPos start, match; - int length; -{ +local void check_match(deflate_state *s, IPos start, IPos match, int length) { /* check that the match is indeed a match */ - if (zmemcmp(s->window + match, - s->window + start, length) != EQUAL) { - fprintf(stderr, " start %u, match %u, length %d\n", - start, match, length); + Bytef *back = s->window + (int)match, *here = s->window + start; + IPos len = length; + if (match == (IPos)-1) { + /* match starts one byte before the current window -- just compare the + subsequent length-1 bytes */ + back++; + here++; + len--; + } + if (zmemcmp(back, here, len) != EQUAL) { + fprintf(stderr, " start %u, match %d, length %d\n", + start, (int)match, length); do { - fprintf(stderr, "%c%c", s->window[match++], s->window[start++]); - } while (--length != 0); + fprintf(stderr, "(%02x %02x)", *back++, *here++); + } while (--len != 0); z_error("invalid match"); } if (z_verbose > 1) { - fprintf(stderr,"\\[%d,%d]", start-match, length); + fprintf(stderr,"\\[%d,%d]", start - match, length); do { putc(s->window[start++], stderr); } while (--length != 0); } } @@ -1469,135 +1590,6 @@ local void check_match(s, start, match, length) # define check_match(s, start, match, length) #endif /* ZLIB_DEBUG */ -/* =========================================================================== - * Fill the window when the lookahead becomes insufficient. - * Updates strstart and lookahead. - * - * IN assertion: lookahead < MIN_LOOKAHEAD - * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD - * At least one byte has been read, or avail_in == 0; reads are - * performed for at least two bytes (required for the zip translate_eol - * option -- not supported here). - */ -local void fill_window(s) - deflate_state *s; -{ - unsigned n; - unsigned more; /* Amount of free space at the end of the window. */ - uInt wsize = s->w_size; - - Assert(s->lookahead < MIN_LOOKAHEAD, "already enough lookahead"); - - do { - more = (unsigned)(s->window_size -(ulg)s->lookahead -(ulg)s->strstart); - - /* Deal with !@#$% 64K limit: */ - if (sizeof(int) <= 2) { - if (more == 0 && s->strstart == 0 && s->lookahead == 0) { - more = wsize; - - } else if (more == (unsigned)(-1)) { - /* Very unlikely, but possible on 16 bit machine if - * strstart == 0 && lookahead == 1 (input done a byte at time) - */ - more--; - } - } - - /* If the window is almost full and there is insufficient lookahead, - * move the upper half to the lower one to make room in the upper half. - */ - if (s->strstart >= wsize+MAX_DIST(s)) { - - zmemcpy(s->window, s->window+wsize, (unsigned)wsize - more); - s->match_start -= wsize; - s->strstart -= wsize; /* we now have strstart >= MAX_DIST */ - s->block_start -= (long) wsize; - slide_hash(s); - more += wsize; - } - if (s->strm->avail_in == 0) break; - - /* If there was no sliding: - * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 && - * more == window_size - lookahead - strstart - * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1) - * => more >= window_size - 2*WSIZE + 2 - * In the BIG_MEM or MMAP case (not yet supported), - * window_size == input_size + MIN_LOOKAHEAD && - * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD. - * Otherwise, window_size == 2*WSIZE so more >= 2. - * If there was sliding, more >= WSIZE. So in all cases, more >= 2. - */ - Assert(more >= 2, "more < 2"); - - n = read_buf(s->strm, s->window + s->strstart + s->lookahead, more); - s->lookahead += n; - - /* Initialize the hash value now that we have some input: */ - if (s->lookahead + s->insert >= MIN_MATCH) { - uInt str = s->strstart - s->insert; - s->ins_h = s->window[str]; - UPDATE_HASH(s, s->ins_h, s->window[str + 1]); -#if MIN_MATCH != 3 - Call UPDATE_HASH() MIN_MATCH-3 more times -#endif - while (s->insert) { - UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); -#ifndef FASTEST - s->prev[str & s->w_mask] = s->head[s->ins_h]; -#endif - s->head[s->ins_h] = (Pos)str; - str++; - s->insert--; - if (s->lookahead + s->insert < MIN_MATCH) - break; - } - } - /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage, - * but this is not important since only literal bytes will be emitted. - */ - - } while (s->lookahead < MIN_LOOKAHEAD && s->strm->avail_in != 0); - - /* If the WIN_INIT bytes after the end of the current data have never been - * written, then zero those bytes in order to avoid memory check reports of - * the use of uninitialized (or uninitialised as Julian writes) bytes by - * the longest match routines. Update the high water mark for the next - * time through here. WIN_INIT is set to MAX_MATCH since the longest match - * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead. - */ - if (s->high_water < s->window_size) { - ulg curr = s->strstart + (ulg)(s->lookahead); - ulg init; - - if (s->high_water < curr) { - /* Previous high water mark below current data -- zero WIN_INIT - * bytes or up to end of window, whichever is less. - */ - init = s->window_size - curr; - if (init > WIN_INIT) - init = WIN_INIT; - zmemzero(s->window + curr, (unsigned)init); - s->high_water = curr + init; - } - else if (s->high_water < (ulg)curr + WIN_INIT) { - /* High water mark at or above current data, but below current data - * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up - * to end of window, whichever is less. - */ - init = (ulg)curr + WIN_INIT - s->high_water; - if (init > s->window_size - s->high_water) - init = s->window_size - s->high_water; - zmemzero(s->window + s->high_water, (unsigned)init); - s->high_water += init; - } - } - - Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD, - "not enough room for search"); -} - /* =========================================================================== * Flush the current block, with given end-of-file flag. * IN assertion: strstart is set to the end of the current match. @@ -1638,12 +1630,9 @@ local void fill_window(s) * * deflate_stored() is written to minimize the number of times an input byte is * copied. It is most efficient with large input and output buffers, which - * maximizes the opportunites to have a single copy from next_in to next_out. + * maximizes the opportunities to have a single copy from next_in to next_out. */ -local block_state deflate_stored(s, flush) - deflate_state *s; - int flush; -{ +local block_state deflate_stored(deflate_state *s, int flush) { /* Smallest worthy block size when not flushing or finishing. By default * this is 32K. This can be as small as 507 bytes for memLevel == 1. For * large input and output buffers, the stored block size will be larger. @@ -1654,7 +1643,8 @@ local block_state deflate_stored(s, flush) * possible. If flushing, copy the remaining available input to next_out as * stored blocks, if there is enough space. */ - unsigned len, left, have, last = 0; + int last = 0; + unsigned len, left, have; unsigned used = s->strm->avail_in; do { /* Set len to the maximum size block that we can copy directly with the @@ -1690,10 +1680,10 @@ local block_state deflate_stored(s, flush) _tr_stored_block(s, (char *)0, 0L, last); /* Replace the lengths in the dummy stored block with len. */ - s->pending_buf[s->pending - 4] = len; - s->pending_buf[s->pending - 3] = len >> 8; - s->pending_buf[s->pending - 2] = ~len; - s->pending_buf[s->pending - 1] = ~len >> 8; + s->pending_buf[s->pending - 4] = (Bytef)len; + s->pending_buf[s->pending - 3] = (Bytef)(len >> 8); + s->pending_buf[s->pending - 2] = (Bytef)~len; + s->pending_buf[s->pending - 1] = (Bytef)(~len >> 8); /* Write the stored block header bytes. */ flush_pending(s->strm); @@ -1742,6 +1732,7 @@ local block_state deflate_stored(s, flush) s->matches = 2; /* clear hash */ zmemcpy(s->window, s->strm->next_in - s->w_size, s->w_size); s->strstart = s->w_size; + s->insert = s->strstart; } else { if (s->window_size - s->strstart <= used) { @@ -1750,19 +1741,23 @@ local block_state deflate_stored(s, flush) zmemcpy(s->window, s->window + s->w_size, s->strstart); if (s->matches < 2) s->matches++; /* add a pending slide_hash() */ + if (s->insert > s->strstart) + s->insert = s->strstart; } zmemcpy(s->window + s->strstart, s->strm->next_in - used, used); s->strstart += used; + s->insert += MIN(used, s->w_size - s->insert); } s->block_start = s->strstart; - s->insert += MIN(used, s->w_size - s->insert); } if (s->high_water < s->strstart) s->high_water = s->strstart; /* If the last block was written to next_out, then done. */ - if (last) + if (last) { + s->bi_used = 8; return finish_done; + } /* If flushing and all input has been consumed, then done. */ if (flush != Z_NO_FLUSH && flush != Z_FINISH && @@ -1770,7 +1765,7 @@ local block_state deflate_stored(s, flush) return block_done; /* Fill the window with any remaining input. */ - have = s->window_size - s->strstart - 1; + have = s->window_size - s->strstart; if (s->strm->avail_in > have && s->block_start >= (long)s->w_size) { /* Slide the window down. */ s->block_start -= s->w_size; @@ -1779,12 +1774,15 @@ local block_state deflate_stored(s, flush) if (s->matches < 2) s->matches++; /* add a pending slide_hash() */ have += s->w_size; /* more space now */ + if (s->insert > s->strstart) + s->insert = s->strstart; } if (have > s->strm->avail_in) have = s->strm->avail_in; if (have) { read_buf(s->strm, s->window + s->strstart, have); s->strstart += have; + s->insert += MIN(have, s->w_size - s->insert); } if (s->high_water < s->strstart) s->high_water = s->strstart; @@ -1811,6 +1809,8 @@ local block_state deflate_stored(s, flush) } /* We've done all we can with the available input and output. */ + if (last) + s->bi_used = 8; return last ? finish_started : need_more; } @@ -1821,10 +1821,7 @@ local block_state deflate_stored(s, flush) * new strings in the dictionary only for unmatched strings or for short * matches. It is used only for the fast compression options. */ -local block_state deflate_fast(s, flush) - deflate_state *s; - int flush; -{ +local block_state deflate_fast(deflate_state *s, int flush) { IPos hash_head; /* head of the hash chain */ int bflush; /* set if current block must be flushed */ @@ -1842,7 +1839,7 @@ local block_state deflate_fast(s, flush) if (s->lookahead == 0) break; /* flush the current block */ } - /* Insert the string window[strstart .. strstart+2] in the + /* Insert the string window[strstart .. strstart + 2] in the * dictionary, and set hash_head to the head of the hash chain: */ hash_head = NIL; @@ -1890,7 +1887,7 @@ local block_state deflate_fast(s, flush) s->strstart += s->match_length; s->match_length = 0; s->ins_h = s->window[s->strstart]; - UPDATE_HASH(s, s->ins_h, s->window[s->strstart+1]); + UPDATE_HASH(s, s->ins_h, s->window[s->strstart + 1]); #if MIN_MATCH != 3 Call UPDATE_HASH() MIN_MATCH-3 more times #endif @@ -1901,7 +1898,7 @@ local block_state deflate_fast(s, flush) } else { /* No match, output a literal byte */ Tracevv((stderr,"%c", s->window[s->strstart])); - _tr_tally_lit (s, s->window[s->strstart], bflush); + _tr_tally_lit(s, s->window[s->strstart], bflush); s->lookahead--; s->strstart++; } @@ -1912,7 +1909,7 @@ local block_state deflate_fast(s, flush) FLUSH_BLOCK(s, 1); return finish_done; } - if (s->last_lit) + if (s->sym_next) FLUSH_BLOCK(s, 0); return block_done; } @@ -1923,10 +1920,7 @@ local block_state deflate_fast(s, flush) * evaluation for matches: a match is finally adopted only if there is * no better match at the next window position. */ -local block_state deflate_slow(s, flush) - deflate_state *s; - int flush; -{ +local block_state deflate_slow(deflate_state *s, int flush) { IPos hash_head; /* head of hash chain */ int bflush; /* set if current block must be flushed */ @@ -1945,7 +1939,7 @@ local block_state deflate_slow(s, flush) if (s->lookahead == 0) break; /* flush the current block */ } - /* Insert the string window[strstart .. strstart+2] in the + /* Insert the string window[strstart .. strstart + 2] in the * dictionary, and set hash_head to the head of the hash chain: */ hash_head = NIL; @@ -1987,17 +1981,17 @@ local block_state deflate_slow(s, flush) uInt max_insert = s->strstart + s->lookahead - MIN_MATCH; /* Do not insert strings in hash table beyond this. */ - check_match(s, s->strstart-1, s->prev_match, s->prev_length); + check_match(s, s->strstart - 1, s->prev_match, s->prev_length); - _tr_tally_dist(s, s->strstart -1 - s->prev_match, + _tr_tally_dist(s, s->strstart - 1 - s->prev_match, s->prev_length - MIN_MATCH, bflush); /* Insert in hash table all strings up to the end of the match. - * strstart-1 and strstart are already inserted. If there is not + * strstart - 1 and strstart are already inserted. If there is not * enough lookahead, the last two strings are not inserted in * the hash table. */ - s->lookahead -= s->prev_length-1; + s->lookahead -= s->prev_length - 1; s->prev_length -= 2; do { if (++s->strstart <= max_insert) { @@ -2015,8 +2009,8 @@ local block_state deflate_slow(s, flush) * single literal. If there was a match but the current match * is longer, truncate the previous match to a single literal. */ - Tracevv((stderr,"%c", s->window[s->strstart-1])); - _tr_tally_lit(s, s->window[s->strstart-1], bflush); + Tracevv((stderr,"%c", s->window[s->strstart - 1])); + _tr_tally_lit(s, s->window[s->strstart - 1], bflush); if (bflush) { FLUSH_BLOCK_ONLY(s, 0); } @@ -2034,8 +2028,8 @@ local block_state deflate_slow(s, flush) } Assert (flush != Z_NO_FLUSH, "no flush?"); if (s->match_available) { - Tracevv((stderr,"%c", s->window[s->strstart-1])); - _tr_tally_lit(s, s->window[s->strstart-1], bflush); + Tracevv((stderr,"%c", s->window[s->strstart - 1])); + _tr_tally_lit(s, s->window[s->strstart - 1], bflush); s->match_available = 0; } s->insert = s->strstart < MIN_MATCH-1 ? s->strstart : MIN_MATCH-1; @@ -2043,7 +2037,7 @@ local block_state deflate_slow(s, flush) FLUSH_BLOCK(s, 1); return finish_done; } - if (s->last_lit) + if (s->sym_next) FLUSH_BLOCK(s, 0); return block_done; } @@ -2054,10 +2048,7 @@ local block_state deflate_slow(s, flush) * one. Do not maintain a hash table. (It will be regenerated if this run of * deflate switches away from Z_RLE.) */ -local block_state deflate_rle(s, flush) - deflate_state *s; - int flush; -{ +local block_state deflate_rle(deflate_state *s, int flush) { int bflush; /* set if current block must be flushed */ uInt prev; /* byte at distance one to match */ Bytef *scan, *strend; /* scan goes up to strend for length of run */ @@ -2092,7 +2083,8 @@ local block_state deflate_rle(s, flush) if (s->match_length > s->lookahead) s->match_length = s->lookahead; } - Assert(scan <= s->window+(uInt)(s->window_size-1), "wild scan"); + Assert(scan <= s->window + (uInt)(s->window_size - 1), + "wild scan"); } /* Emit match if have run of MIN_MATCH or longer, else emit literal */ @@ -2107,7 +2099,7 @@ local block_state deflate_rle(s, flush) } else { /* No match, output a literal byte */ Tracevv((stderr,"%c", s->window[s->strstart])); - _tr_tally_lit (s, s->window[s->strstart], bflush); + _tr_tally_lit(s, s->window[s->strstart], bflush); s->lookahead--; s->strstart++; } @@ -2118,7 +2110,7 @@ local block_state deflate_rle(s, flush) FLUSH_BLOCK(s, 1); return finish_done; } - if (s->last_lit) + if (s->sym_next) FLUSH_BLOCK(s, 0); return block_done; } @@ -2127,10 +2119,7 @@ local block_state deflate_rle(s, flush) * For Z_HUFFMAN_ONLY, do not look for matches. Do not maintain a hash table. * (It will be regenerated if this run of deflate switches away from Huffman.) */ -local block_state deflate_huff(s, flush) - deflate_state *s; - int flush; -{ +local block_state deflate_huff(deflate_state *s, int flush) { int bflush; /* set if current block must be flushed */ for (;;) { @@ -2147,7 +2136,7 @@ local block_state deflate_huff(s, flush) /* Output a literal byte */ s->match_length = 0; Tracevv((stderr,"%c", s->window[s->strstart])); - _tr_tally_lit (s, s->window[s->strstart], bflush); + _tr_tally_lit(s, s->window[s->strstart], bflush); s->lookahead--; s->strstart++; if (bflush) FLUSH_BLOCK(s, 0); @@ -2157,7 +2146,7 @@ local block_state deflate_huff(s, flush) FLUSH_BLOCK(s, 1); return finish_done; } - if (s->last_lit) + if (s->sym_next) FLUSH_BLOCK(s, 0); return block_done; } diff --git a/deps/zlib/deflate.h b/deps/zlib/deflate.h index 23ecdd312..4884a4ba0 100644 --- a/deps/zlib/deflate.h +++ b/deps/zlib/deflate.h @@ -1,5 +1,5 @@ /* deflate.h -- internal compression state - * Copyright (C) 1995-2016 Jean-loup Gailly + * Copyright (C) 1995-2024 Jean-loup Gailly * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -23,6 +23,10 @@ # define GZIP #endif +/* define LIT_MEM to slightly increase the speed of deflate (order 1% to 2%) at + the cost of a larger memory footprint */ +/* #define LIT_MEM */ + /* =========================================================================== * Internal compression state. */ @@ -217,7 +221,14 @@ typedef struct internal_state { /* Depth of each subtree used as tie breaker for trees of equal frequency */ - uchf *l_buf; /* buffer for literals or lengths */ +#ifdef LIT_MEM +# define LIT_BUFS 5 + ushf *d_buf; /* buffer for distances */ + uchf *l_buf; /* buffer for literals/lengths */ +#else +# define LIT_BUFS 4 + uchf *sym_buf; /* buffer for distances and literals/lengths */ +#endif uInt lit_bufsize; /* Size of match buffer for literals/lengths. There are 4 reasons for @@ -239,13 +250,8 @@ typedef struct internal_state { * - I can't count above 4 */ - uInt last_lit; /* running index in l_buf */ - - ushf *d_buf; - /* Buffer for distances. To simplify the code, d_buf and l_buf have - * the same number of elements. To use different lengths, an extra flag - * array would be necessary. - */ + uInt sym_next; /* running index in symbol buffer */ + uInt sym_end; /* symbol table full when sym_next reaches this */ ulg opt_len; /* bit length of current block with optimal trees */ ulg static_len; /* bit length of current block with static trees */ @@ -265,6 +271,9 @@ typedef struct internal_state { /* Number of valid bits in bi_buf. All bits above the last valid bit * are always zero. */ + int bi_used; + /* Last number of used bits when going to a byte boundary. + */ ulg high_water; /* High water mark offset in window for initialized bytes -- bytes above @@ -296,14 +305,14 @@ typedef struct internal_state { memory checker errors from longest match routines */ /* in trees.c */ -void ZLIB_INTERNAL _tr_init OF((deflate_state *s)); -int ZLIB_INTERNAL _tr_tally OF((deflate_state *s, unsigned dist, unsigned lc)); -void ZLIB_INTERNAL _tr_flush_block OF((deflate_state *s, charf *buf, - ulg stored_len, int last)); -void ZLIB_INTERNAL _tr_flush_bits OF((deflate_state *s)); -void ZLIB_INTERNAL _tr_align OF((deflate_state *s)); -void ZLIB_INTERNAL _tr_stored_block OF((deflate_state *s, charf *buf, - ulg stored_len, int last)); +void ZLIB_INTERNAL _tr_init(deflate_state *s); +int ZLIB_INTERNAL _tr_tally(deflate_state *s, unsigned dist, unsigned lc); +void ZLIB_INTERNAL _tr_flush_block(deflate_state *s, charf *buf, + ulg stored_len, int last); +void ZLIB_INTERNAL _tr_flush_bits(deflate_state *s); +void ZLIB_INTERNAL _tr_align(deflate_state *s); +void ZLIB_INTERNAL _tr_stored_block(deflate_state *s, charf *buf, + ulg stored_len, int last); #define d_code(dist) \ ((dist) < 256 ? _dist_code[dist] : _dist_code[256+((dist)>>7)]) @@ -323,24 +332,46 @@ void ZLIB_INTERNAL _tr_stored_block OF((deflate_state *s, charf *buf, extern const uch ZLIB_INTERNAL _dist_code[]; #endif +#ifdef LIT_MEM # define _tr_tally_lit(s, c, flush) \ { uch cc = (c); \ - s->d_buf[s->last_lit] = 0; \ - s->l_buf[s->last_lit++] = cc; \ + s->d_buf[s->sym_next] = 0; \ + s->l_buf[s->sym_next++] = cc; \ s->dyn_ltree[cc].Freq++; \ - flush = (s->last_lit == s->lit_bufsize-1); \ + flush = (s->sym_next == s->sym_end); \ } # define _tr_tally_dist(s, distance, length, flush) \ { uch len = (uch)(length); \ ush dist = (ush)(distance); \ - s->d_buf[s->last_lit] = dist; \ - s->l_buf[s->last_lit++] = len; \ + s->d_buf[s->sym_next] = dist; \ + s->l_buf[s->sym_next++] = len; \ dist--; \ s->dyn_ltree[_length_code[len]+LITERALS+1].Freq++; \ s->dyn_dtree[d_code(dist)].Freq++; \ - flush = (s->last_lit == s->lit_bufsize-1); \ + flush = (s->sym_next == s->sym_end); \ } #else +# define _tr_tally_lit(s, c, flush) \ + { uch cc = (c); \ + s->sym_buf[s->sym_next++] = 0; \ + s->sym_buf[s->sym_next++] = 0; \ + s->sym_buf[s->sym_next++] = cc; \ + s->dyn_ltree[cc].Freq++; \ + flush = (s->sym_next == s->sym_end); \ + } +# define _tr_tally_dist(s, distance, length, flush) \ + { uch len = (uch)(length); \ + ush dist = (ush)(distance); \ + s->sym_buf[s->sym_next++] = (uch)dist; \ + s->sym_buf[s->sym_next++] = (uch)(dist >> 8); \ + s->sym_buf[s->sym_next++] = len; \ + dist--; \ + s->dyn_ltree[_length_code[len]+LITERALS+1].Freq++; \ + s->dyn_dtree[d_code(dist)].Freq++; \ + flush = (s->sym_next == s->sym_end); \ + } +#endif +#else # define _tr_tally_lit(s, c, flush) flush = _tr_tally(s, 0, c) # define _tr_tally_dist(s, distance, length, flush) \ flush = _tr_tally(s, distance, length) diff --git a/deps/zlib/doc/algorithm.txt b/deps/zlib/doc/algorithm.txt index c97f49502..029e5a313 100644 --- a/deps/zlib/doc/algorithm.txt +++ b/deps/zlib/doc/algorithm.txt @@ -77,7 +77,7 @@ table took no time (and if you had infinite memory), then there would only be a first level table to cover all the way to the longest code. However, building the table ends up taking a lot longer for more bits since short codes are replicated many times in such a table. What inflate() does is -simply to make the number of bits in the first table a variable, and then +simply to make the number of bits in the first table a variable, and then to set that variable for the maximum speed. For inflate, which has 286 possible codes for the literal/length tree, the size diff --git a/deps/zlib/doc/crc-doc.1.0.pdf b/deps/zlib/doc/crc-doc.1.0.pdf new file mode 100644 index 000000000..d6942ecc0 Binary files /dev/null and b/deps/zlib/doc/crc-doc.1.0.pdf differ diff --git a/deps/zlib/doc/txtvsbin.txt b/deps/zlib/doc/txtvsbin.txt index 3d0f0634f..2a901eaa6 100644 --- a/deps/zlib/doc/txtvsbin.txt +++ b/deps/zlib/doc/txtvsbin.txt @@ -38,15 +38,15 @@ The Algorithm The algorithm works by dividing the set of bytecodes [0..255] into three categories: -- The white list of textual bytecodes: +- The allow list of textual bytecodes: 9 (TAB), 10 (LF), 13 (CR), 32 (SPACE) to 255. - The gray list of tolerated bytecodes: 7 (BEL), 8 (BS), 11 (VT), 12 (FF), 26 (SUB), 27 (ESC). -- The black list of undesired, non-textual bytecodes: +- The block list of undesired, non-textual bytecodes: 0 (NUL) to 6, 14 to 31. -If a file contains at least one byte that belongs to the white list and -no byte that belongs to the black list, then the file is categorized as +If a file contains at least one byte that belongs to the allow list and +no byte that belongs to the block list, then the file is categorized as plain text; otherwise, it is categorized as binary. (The boundary case, when the file is empty, automatically falls into the latter category.) @@ -84,9 +84,9 @@ consistent results, regardless what alphabet encoding is being used. results on a text encoded, say, using ISO-8859-16 versus UTF-8.) There is an extra category of plain text files that are "polluted" with -one or more black-listed codes, either by mistake or by peculiar design +one or more block-listed codes, either by mistake or by peculiar design considerations. In such cases, a scheme that tolerates a small fraction -of black-listed codes would provide an increased recall (i.e. more true +of block-listed codes would provide an increased recall (i.e. more true positives). This, however, incurs a reduced precision overall, since false positives are more likely to appear in binary files that contain large chunks of textual data. Furthermore, "polluted" plain text should diff --git a/deps/zlib/examples/README.examples b/deps/zlib/examples/README.examples index 56a31714e..e3a4b88bb 100644 --- a/deps/zlib/examples/README.examples +++ b/deps/zlib/examples/README.examples @@ -34,6 +34,10 @@ gzlog.h and deflateSetDictionary() - illustrates use of a gzip header extra field +gznorm.c + normalize a gzip file by combining members into a single member + - demonstrates how to concatenate deflate streams using Z_BLOCK + zlib_how.html painfully comprehensive description of zpipe.c (see below) - describes in excruciating detail the use of deflate() and inflate() @@ -44,6 +48,7 @@ zpipe.c - deeply commented in zlib_how.html (see above) zran.c +zran.h index a zlib or gzip stream and randomly access it - illustrates the use of Z_BLOCK, inflatePrime(), and inflateSetDictionary() to provide random access diff --git a/deps/zlib/examples/enough.c b/deps/zlib/examples/enough.c index b99114430..43112a438 100644 --- a/deps/zlib/examples/enough.c +++ b/deps/zlib/examples/enough.c @@ -1,7 +1,7 @@ /* enough.c -- determine the maximum size of inflate's Huffman code tables over - * all possible valid and complete Huffman codes, subject to a length limit. - * Copyright (C) 2007, 2008, 2012 Mark Adler - * Version 1.4 18 August 2012 Mark Adler + * all possible valid and complete prefix codes, subject to a length limit. + * Copyright (C) 2007, 2008, 2012, 2018, 2024 Mark Adler + * Version 1.6 29 July 2024 Mark Adler */ /* Version history: @@ -17,101 +17,107 @@ 1.4 18 Aug 2012 Avoid shifts more than bits in type (caused endless loop!) Clean up comparisons of different types Clean up code indentation + 1.5 5 Aug 2018 Clean up code style, formatting, and comments + Show all the codes for the maximum, and only the maximum + 1.6 29 Jul 2024 Avoid use of uintmax_t */ /* - Examine all possible Huffman codes for a given number of symbols and a - maximum code length in bits to determine the maximum table size for zilb's - inflate. Only complete Huffman codes are counted. + Examine all possible prefix codes for a given number of symbols and a + maximum code length in bits to determine the maximum table size for zlib's + inflate. Only complete prefix codes are counted. Two codes are considered distinct if the vectors of the number of codes per - length are not identical. So permutations of the symbol assignments result + length are not identical. So permutations of the symbol assignments result in the same code for the counting, as do permutations of the assignments of the bit values to the codes (i.e. only canonical codes are counted). We build a code from shorter to longer lengths, determining how many symbols - are coded at each length. At each step, we have how many symbols remain to + are coded at each length. At each step, we have how many symbols remain to be coded, what the last code length used was, and how many bit patterns of that length remain unused. Then we add one to the code length and double the - number of unused patterns to graduate to the next code length. We then + number of unused patterns to graduate to the next code length. We then assign all portions of the remaining symbols to that code length that - preserve the properties of a correct and eventually complete code. Those + preserve the properties of a correct and eventually complete code. Those properties are: we cannot use more bit patterns than are available; and when - all the symbols are used, there are exactly zero possible bit patterns - remaining. + all the symbols are used, there are exactly zero possible bit patterns left + unused. The inflate Huffman decoding algorithm uses two-level lookup tables for - speed. There is a single first-level table to decode codes up to root bits - in length (root == 9 in the current inflate implementation). The table - has 1 << root entries and is indexed by the next root bits of input. Codes - shorter than root bits have replicated table entries, so that the correct - entry is pointed to regardless of the bits that follow the short code. If - the code is longer than root bits, then the table entry points to a second- - level table. The size of that table is determined by the longest code with - that root-bit prefix. If that longest code has length len, then the table - has size 1 << (len - root), to index the remaining bits in that set of - codes. Each subsequent root-bit prefix then has its own sub-table. The - total number of table entries required by the code is calculated - incrementally as the number of codes at each bit length is populated. When - all of the codes are shorter than root bits, then root is reduced to the - longest code length, resulting in a single, smaller, one-level table. + speed. There is a single first-level table to decode codes up to root bits + in length (root == 9 for literal/length codes and root == 6 for distance + codes, in the current inflate implementation). The base table has 1 << root + entries and is indexed by the next root bits of input. Codes shorter than + root bits have replicated table entries, so that the correct entry is + pointed to regardless of the bits that follow the short code. If the code is + longer than root bits, then the table entry points to a second-level table. + The size of that table is determined by the longest code with that root-bit + prefix. If that longest code has length len, then the table has size 1 << + (len - root), to index the remaining bits in that set of codes. Each + subsequent root-bit prefix then has its own sub-table. The total number of + table entries required by the code is calculated incrementally as the number + of codes at each bit length is populated. When all of the codes are shorter + than root bits, then root is reduced to the longest code length, resulting + in a single, smaller, one-level table. The inflate algorithm also provides for small values of root (relative to the log2 of the number of symbols), where the shortest code has more bits - than root. In that case, root is increased to the length of the shortest - code. This program, by design, does not handle that case, so it is verified - that the number of symbols is less than 2^(root + 1). + than root. In that case, root is increased to the length of the shortest + code. This program, by design, does not handle that case, so it is verified + that the number of symbols is less than 1 << (root + 1). In order to speed up the examination (by about ten orders of magnitude for the default arguments), the intermediate states in the build-up of a code - are remembered and previously visited branches are pruned. The memory + are remembered and previously visited branches are pruned. The memory required for this will increase rapidly with the total number of symbols and - the maximum code length in bits. However this is a very small price to pay + the maximum code length in bits. However this is a very small price to pay for the vast speedup. - First, all of the possible Huffman codes are counted, and reachable + First, all of the possible prefix codes are counted, and reachable intermediate states are noted by a non-zero count in a saved-results array. Second, the intermediate states that lead to (root + 1) bit or longer codes are used to look at all sub-codes from those junctures for their inflate - memory usage. (The amount of memory used is not affected by the number of + memory usage. (The amount of memory used is not affected by the number of codes of root bits or less in length.) Third, the visited states in the construction of those sub-codes and the associated calculation of the table size is recalled in order to avoid recalculating from the same juncture. Beginning the code examination at (root + 1) bit codes, which is enabled by identifying the reachable nodes, accounts for about six of the orders of - magnitude of improvement for the default arguments. About another four - orders of magnitude come from not revisiting previous states. Out of - approximately 2x10^16 possible Huffman codes, only about 2x10^6 sub-codes + magnitude of improvement for the default arguments. About another four + orders of magnitude come from not revisiting previous states. Out of + approximately 2x10^16 possible prefix codes, only about 2x10^6 sub-codes need to be examined to cover all of the possible table memory usage cases for the default arguments of 286 symbols limited to 15-bit codes. - Note that an unsigned long long type is used for counting. It is quite easy - to exceed the capacity of an eight-byte integer with a large number of - symbols and a large maximum code length, so multiple-precision arithmetic - would need to replace the unsigned long long arithmetic in that case. This - program will abort if an overflow occurs. The big_t type identifies where - the counting takes place. + Note that unsigned long long is used for counting. It is quite easy to + exceed the capacity of an eight-byte integer with a large number of symbols + and a large maximum code length, so multiple-precision arithmetic would need + to replace the integer arithmetic in that case. This program will abort if + an overflow occurs. The big_t type identifies where the counting takes + place. - An unsigned long long type is also used for calculating the number of - possible codes remaining at the maximum length. This limits the maximum - code length to the number of bits in a long long minus the number of bits - needed to represent the symbols in a flat code. The code_t type identifies - where the bit pattern counting takes place. + The unsigned long long type is also used for calculating the number of + possible codes remaining at the maximum length. This limits the maximum code + length to the number of bits in a long long minus the number of bits needed + to represent the symbols in a flat code. The code_t type identifies where + the bit-pattern counting takes place. */ #include #include #include +#include #include #define local static -/* special data types */ -typedef unsigned long long big_t; /* type for code counting */ -typedef unsigned long long code_t; /* type for bit pattern counting */ -struct tab { /* type for been here check */ - size_t len; /* length of bit vector in char's */ - char *vec; /* allocated bit vector */ +// Special data types. +typedef unsigned long long big_t; // type for code counting +#define PRIbig "llu" // printf format for big_t +typedef big_t code_t; // type for bit pattern counting +struct tab { // type for been-here check + size_t len; // allocated length of bit vector in octets + char *vec; // allocated bit vector }; /* The array for saving results, num[], is indexed with this triplet: @@ -126,447 +132,466 @@ struct tab { /* type for been here check */ left: 2..syms - 1, but only the evens (so syms == 8 -> 2, 4, 6) len: 1..max - 1 (max == maximum code length in bits) - syms == 2 is not saved since that immediately leads to a single code. left + syms == 2 is not saved since that immediately leads to a single code. left must be even, since it represents the number of available bit patterns at - the current length, which is double the number at the previous length. - left ends at syms-1 since left == syms immediately results in a single code. + the current length, which is double the number at the previous length. left + ends at syms-1 since left == syms immediately results in a single code. (left > sym is not allowed since that would result in an incomplete code.) len is less than max, since the code completes immediately when len == max. - The offset into the array is calculated for the three indices with the - first one (syms) being outermost, and the last one (len) being innermost. - We build the array with length max-1 lists for the len index, with syms-3 - of those for each symbol. There are totsym-2 of those, with each one - varying in length as a function of sym. See the calculation of index in - count() for the index, and the calculation of size in main() for the size - of the array. + The offset into the array is calculated for the three indices with the first + one (syms) being outermost, and the last one (len) being innermost. We build + the array with length max-1 lists for the len index, with syms-3 of those + for each symbol. There are totsym-2 of those, with each one varying in + length as a function of sym. See the calculation of index in map() for the + index, and the calculation of size in main() for the size of the array. For the deflate example of 286 symbols limited to 15-bit codes, the array - has 284,284 entries, taking up 2.17 MB for an 8-byte big_t. More than - half of the space allocated for saved results is actually used -- not all - possible triplets are reached in the generation of valid Huffman codes. + has 284,284 entries, taking up 2.17 MB for an 8-byte big_t. More than half + of the space allocated for saved results is actually used -- not all + possible triplets are reached in the generation of valid prefix codes. */ /* The array for tracking visited states, done[], is itself indexed identically to the num[] array as described above for the (syms, left, len) triplet. Each element in the array is further indexed by the (mem, rem) doublet, where mem is the amount of inflate table space used so far, and rem is the - remaining unused entries in the current inflate sub-table. Each indexed + remaining unused entries in the current inflate sub-table. Each indexed element is simply one bit indicating whether the state has been visited or - not. Since the ranges for mem and rem are not known a priori, each bit + not. Since the ranges for mem and rem are not known a priori, each bit vector is of a variable size, and grows as needed to accommodate the visited - states. mem and rem are used to calculate a single index in a triangular - array. Since the range of mem is expected in the default case to be about + states. mem and rem are used to calculate a single index in a triangular + array. Since the range of mem is expected in the default case to be about ten times larger than the range of rem, the array is skewed to reduce the - memory usage, with eight times the range for mem than for rem. See the - calculations for offset and bit in beenhere() for the details. + memory usage, with eight times the range for mem than for rem. See the + calculations for offset and bit in been_here() for the details. For the deflate example of 286 symbols limited to 15-bit codes, the bit - vectors grow to total approximately 21 MB, in addition to the 4.3 MB done[] - array itself. + vectors grow to total 5.5 MB, in addition to the 4.3 MB done array itself. */ -/* Globals to avoid propagating constants or constant pointers recursively */ -local int max; /* maximum allowed bit length for the codes */ -local int root; /* size of base code table in bits */ -local int large; /* largest code table so far */ -local size_t size; /* number of elements in num and done */ -local int *code; /* number of symbols assigned to each bit length */ -local big_t *num; /* saved results array for code counting */ -local struct tab *done; /* states already evaluated array */ +// Type for a variable-length, allocated string. +typedef struct { + char *str; // pointer to allocated string + size_t size; // size of allocation + size_t len; // length of string, not including terminating zero +} string_t; -/* Index function for num[] and done[] */ -#define INDEX(i,j,k) (((size_t)((i-1)>>1)*((i-2)>>1)+(j>>1)-1)*(max-1)+k-1) - -/* Free allocated space. Uses globals code, num, and done. */ -local void cleanup(void) -{ - size_t n; - - if (done != NULL) { - for (n = 0; n < size; n++) - if (done[n].len) - free(done[n].vec); - free(done); - } - if (num != NULL) - free(num); - if (code != NULL) - free(code); +// Clear a string_t. +local void string_clear(string_t *s) { + s->str[0] = 0; + s->len = 0; } -/* Return the number of possible Huffman codes using bit patterns of lengths - len through max inclusive, coding syms symbols, with left bit patterns of - length len unused -- return -1 if there is an overflow in the counting. - Keep a record of previous results in num to prevent repeating the same - calculation. Uses the globals max and num. */ -local big_t count(int syms, int len, int left) -{ - big_t sum; /* number of possible codes from this juncture */ - big_t got; /* value returned from count() */ - int least; /* least number of syms to use at this juncture */ - int most; /* most number of syms to use at this juncture */ - int use; /* number of bit patterns to use in next call */ - size_t index; /* index of this case in *num */ +// Initialize a string_t. +local void string_init(string_t *s) { + s->size = 16; + s->str = malloc(s->size); + assert(s->str != NULL && "out of memory"); + string_clear(s); +} - /* see if only one possible code */ +// Release the allocation of a string_t. +local void string_free(string_t *s) { + free(s->str); + s->str = NULL; + s->size = 0; + s->len = 0; +} + +// Save the results of printf with fmt and the subsequent argument list to s. +// Each call appends to s. The allocated space for s is increased as needed. +local void string_printf(string_t *s, char *fmt, ...) { + va_list ap; + va_start(ap, fmt); + size_t len = s->len; + int ret = vsnprintf(s->str + len, s->size - len, fmt, ap); + assert(ret >= 0 && "out of memory"); + s->len += ret; + if (s->size < s->len + 1) { + do { + s->size <<= 1; + assert(s->size != 0 && "overflow"); + } while (s->size < s->len + 1); + s->str = realloc(s->str, s->size); + assert(s->str != NULL && "out of memory"); + vsnprintf(s->str + len, s->size - len, fmt, ap); + } + va_end(ap); +} + +// Globals to avoid propagating constants or constant pointers recursively. +struct { + int max; // maximum allowed bit length for the codes + int root; // size of base code table in bits + int large; // largest code table so far + size_t size; // number of elements in num and done + big_t tot; // total number of codes with maximum tables size + string_t out; // display of subcodes for maximum tables size + int *code; // number of symbols assigned to each bit length + big_t *num; // saved results array for code counting + struct tab *done; // states already evaluated array +} g; + +// Index function for num[] and done[]. +local inline size_t map(int syms, int left, int len) { + return ((size_t)((syms - 1) >> 1) * ((syms - 2) >> 1) + + (left >> 1) - 1) * (g.max - 1) + + len - 1; +} + +// Free allocated space in globals. +local void cleanup(void) { + if (g.done != NULL) { + for (size_t n = 0; n < g.size; n++) + if (g.done[n].len) + free(g.done[n].vec); + g.size = 0; + free(g.done); g.done = NULL; + } + free(g.num); g.num = NULL; + free(g.code); g.code = NULL; + string_free(&g.out); +} + +// Return the number of possible prefix codes using bit patterns of lengths len +// through max inclusive, coding syms symbols, with left bit patterns of length +// len unused -- return -1 if there is an overflow in the counting. Keep a +// record of previous results in num to prevent repeating the same calculation. +local big_t count(int syms, int left, int len) { + // see if only one possible code if (syms == left) return 1; - /* note and verify the expected state */ - assert(syms > left && left > 0 && len < max); + // note and verify the expected state + assert(syms > left && left > 0 && len < g.max); - /* see if we've done this one already */ - index = INDEX(syms, left, len); - got = num[index]; + // see if we've done this one already + size_t index = map(syms, left, len); + big_t got = g.num[index]; if (got) - return got; /* we have -- return the saved result */ + return got; // we have -- return the saved result - /* we need to use at least this many bit patterns so that the code won't be - incomplete at the next length (more bit patterns than symbols) */ - least = (left << 1) - syms; + // we need to use at least this many bit patterns so that the code won't be + // incomplete at the next length (more bit patterns than symbols) + int least = (left << 1) - syms; if (least < 0) least = 0; - /* we can use at most this many bit patterns, lest there not be enough - available for the remaining symbols at the maximum length (if there were - no limit to the code length, this would become: most = left - 1) */ - most = (((code_t)left << (max - len)) - syms) / - (((code_t)1 << (max - len)) - 1); + // we can use at most this many bit patterns, lest there not be enough + // available for the remaining symbols at the maximum length (if there were + // no limit to the code length, this would become: most = left - 1) + int most = (((code_t)left << (g.max - len)) - syms) / + (((code_t)1 << (g.max - len)) - 1); - /* count all possible codes from this juncture and add them up */ - sum = 0; - for (use = least; use <= most; use++) { - got = count(syms - use, len + 1, (left - use) << 1); + // count all possible codes from this juncture and add them up + big_t sum = 0; + for (int use = least; use <= most; use++) { + got = count(syms - use, (left - use) << 1, len + 1); sum += got; - if (got == (big_t)0 - 1 || sum < got) /* overflow */ - return (big_t)0 - 1; + if (got == (big_t)-1 || sum < got) // overflow + return (big_t)-1; } - /* verify that all recursive calls are productive */ + // verify that all recursive calls are productive assert(sum != 0); - /* save the result and return it */ - num[index] = sum; + // save the result and return it + g.num[index] = sum; return sum; } -/* Return true if we've been here before, set to true if not. Set a bit in a - bit vector to indicate visiting this state. Each (syms,len,left) state - has a variable size bit vector indexed by (mem,rem). The bit vector is - lengthened if needed to allow setting the (mem,rem) bit. */ -local int beenhere(int syms, int len, int left, int mem, int rem) -{ - size_t index; /* index for this state's bit vector */ - size_t offset; /* offset in this state's bit vector */ - int bit; /* mask for this state's bit */ - size_t length; /* length of the bit vector in bytes */ - char *vector; /* new or enlarged bit vector */ - - /* point to vector for (syms,left,len), bit in vector for (mem,rem) */ - index = INDEX(syms, left, len); - mem -= 1 << root; - offset = (mem >> 3) + rem; +// Return true if we've been here before, set to true if not. Set a bit in a +// bit vector to indicate visiting this state. Each (syms,len,left) state has a +// variable size bit vector indexed by (mem,rem). The bit vector is lengthened +// as needed to allow setting the (mem,rem) bit. +local int been_here(int syms, int left, int len, int mem, int rem) { + // point to vector for (syms,left,len), bit in vector for (mem,rem) + size_t index = map(syms, left, len); + mem -= 1 << g.root; // mem always includes the root table + mem >>= 1; // mem and rem are always even + rem >>= 1; + size_t offset = (mem >> 3) + rem; offset = ((offset * (offset + 1)) >> 1) + rem; - bit = 1 << (mem & 7); + int bit = 1 << (mem & 7); - /* see if we've been here */ - length = done[index].len; - if (offset < length && (done[index].vec[offset] & bit) != 0) - return 1; /* done this! */ + // see if we've been here + size_t length = g.done[index].len; + if (offset < length && (g.done[index].vec[offset] & bit) != 0) + return 1; // done this! - /* we haven't been here before -- set the bit to show we have now */ + // we haven't been here before -- set the bit to show we have now - /* see if we need to lengthen the vector in order to set the bit */ + // see if we need to lengthen the vector in order to set the bit if (length <= offset) { - /* if we have one already, enlarge it, zero out the appended space */ + // if we have one already, enlarge it, zero out the appended space + char *vector; if (length) { do { length <<= 1; } while (length <= offset); - vector = realloc(done[index].vec, length); - if (vector != NULL) - memset(vector + done[index].len, 0, length - done[index].len); + vector = realloc(g.done[index].vec, length); + assert(vector != NULL && "out of memory"); + memset(vector + g.done[index].len, 0, length - g.done[index].len); } - /* otherwise we need to make a new vector and zero it out */ + // otherwise we need to make a new vector and zero it out else { - length = 1 << (len - root); + length = 16; while (length <= offset) length <<= 1; - vector = calloc(length, sizeof(char)); + vector = calloc(length, 1); + assert(vector != NULL && "out of memory"); } - /* in either case, bail if we can't get the memory */ - if (vector == NULL) { - fputs("abort: unable to allocate enough memory\n", stderr); - cleanup(); - exit(1); - } - - /* install the new vector */ - done[index].len = length; - done[index].vec = vector; + // install the new vector + g.done[index].len = length; + g.done[index].vec = vector; } - /* set the bit */ - done[index].vec[offset] |= bit; + // set the bit + g.done[index].vec[offset] |= bit; return 0; } -/* Examine all possible codes from the given node (syms, len, left). Compute - the amount of memory required to build inflate's decoding tables, where the - number of code structures used so far is mem, and the number remaining in - the current sub-table is rem. Uses the globals max, code, root, large, and - done. */ -local void examine(int syms, int len, int left, int mem, int rem) -{ - int least; /* least number of syms to use at this juncture */ - int most; /* most number of syms to use at this juncture */ - int use; /* number of bit patterns to use in next call */ - - /* see if we have a complete code */ +// Examine all possible codes from the given node (syms, len, left). Compute +// the amount of memory required to build inflate's decoding tables, where the +// number of code structures used so far is mem, and the number remaining in +// the current sub-table is rem. +local void examine(int syms, int left, int len, int mem, int rem) { + // see if we have a complete code if (syms == left) { - /* set the last code entry */ - code[len] = left; + // set the last code entry + g.code[len] = left; - /* complete computation of memory used by this code */ + // complete computation of memory used by this code while (rem < left) { left -= rem; - rem = 1 << (len - root); + rem = 1 << (len - g.root); mem += rem; } assert(rem == left); - /* if this is a new maximum, show the entries used and the sub-code */ - if (mem > large) { - large = mem; - printf("max %d: ", mem); - for (use = root + 1; use <= max; use++) - if (code[use]) - printf("%d[%d] ", code[use], use); - putchar('\n'); - fflush(stdout); + // if this is at the maximum, show the sub-code + if (mem >= g.large) { + // if this is a new maximum, update the maximum and clear out the + // printed sub-codes from the previous maximum + if (mem > g.large) { + g.large = mem; + string_clear(&g.out); + } + + // compute the starting state for this sub-code + syms = 0; + left = 1 << g.max; + for (int bits = g.max; bits > g.root; bits--) { + syms += g.code[bits]; + left -= g.code[bits]; + assert((left & 1) == 0); + left >>= 1; + } + + // print the starting state and the resulting sub-code to g.out + string_printf(&g.out, "<%u, %u, %u>:", + syms, g.root + 1, ((1 << g.root) - left) << 1); + for (int bits = g.root + 1; bits <= g.max; bits++) + if (g.code[bits]) + string_printf(&g.out, " %d[%d]", g.code[bits], bits); + string_printf(&g.out, "\n"); } - /* remove entries as we drop back down in the recursion */ - code[len] = 0; + // remove entries as we drop back down in the recursion + g.code[len] = 0; return; } - /* prune the tree if we can */ - if (beenhere(syms, len, left, mem, rem)) + // prune the tree if we can + if (been_here(syms, left, len, mem, rem)) return; - /* we need to use at least this many bit patterns so that the code won't be - incomplete at the next length (more bit patterns than symbols) */ - least = (left << 1) - syms; + // we need to use at least this many bit patterns so that the code won't be + // incomplete at the next length (more bit patterns than symbols) + int least = (left << 1) - syms; if (least < 0) least = 0; - /* we can use at most this many bit patterns, lest there not be enough - available for the remaining symbols at the maximum length (if there were - no limit to the code length, this would become: most = left - 1) */ - most = (((code_t)left << (max - len)) - syms) / - (((code_t)1 << (max - len)) - 1); + // we can use at most this many bit patterns, lest there not be enough + // available for the remaining symbols at the maximum length (if there were + // no limit to the code length, this would become: most = left - 1) + int most = (((code_t)left << (g.max - len)) - syms) / + (((code_t)1 << (g.max - len)) - 1); - /* occupy least table spaces, creating new sub-tables as needed */ - use = least; + // occupy least table spaces, creating new sub-tables as needed + int use = least; while (rem < use) { use -= rem; - rem = 1 << (len - root); + rem = 1 << (len - g.root); mem += rem; } rem -= use; - /* examine codes from here, updating table space as we go */ + // examine codes from here, updating table space as we go for (use = least; use <= most; use++) { - code[len] = use; - examine(syms - use, len + 1, (left - use) << 1, - mem + (rem ? 1 << (len - root) : 0), rem << 1); + g.code[len] = use; + examine(syms - use, (left - use) << 1, len + 1, + mem + (rem ? 1 << (len - g.root) : 0), rem << 1); if (rem == 0) { - rem = 1 << (len - root); + rem = 1 << (len - g.root); mem += rem; } rem--; } - /* remove entries as we drop back down in the recursion */ - code[len] = 0; + // remove entries as we drop back down in the recursion + g.code[len] = 0; } -/* Look at all sub-codes starting with root + 1 bits. Look at only the valid - intermediate code states (syms, left, len). For each completed code, - calculate the amount of memory required by inflate to build the decoding - tables. Find the maximum amount of memory required and show the code that - requires that maximum. Uses the globals max, root, and num. */ -local void enough(int syms) -{ - int n; /* number of remaing symbols for this node */ - int left; /* number of unused bit patterns at this length */ - size_t index; /* index of this case in *num */ +// Look at all sub-codes starting with root + 1 bits. Look at only the valid +// intermediate code states (syms, left, len). For each completed code, +// calculate the amount of memory required by inflate to build the decoding +// tables. Find the maximum amount of memory required and show the codes that +// require that maximum. +local void enough(int syms) { + // clear code + for (int n = 0; n <= g.max; n++) + g.code[n] = 0; - /* clear code */ - for (n = 0; n <= max; n++) - code[n] = 0; + // look at all (root + 1) bit and longer codes + string_clear(&g.out); // empty saved results + g.large = 1 << g.root; // base table + if (g.root < g.max) // otherwise, there's only a base table + for (int n = 3; n <= syms; n++) + for (int left = 2; left < n; left += 2) { + // look at all reachable (root + 1) bit nodes, and the + // resulting codes (complete at root + 2 or more) + size_t index = map(n, left, g.root + 1); + if (g.root + 1 < g.max && g.num[index]) // reachable node + examine(n, left, g.root + 1, 1 << g.root, 0); - /* look at all (root + 1) bit and longer codes */ - large = 1 << root; /* base table */ - if (root < max) /* otherwise, there's only a base table */ - for (n = 3; n <= syms; n++) - for (left = 2; left < n; left += 2) - { - /* look at all reachable (root + 1) bit nodes, and the - resulting codes (complete at root + 2 or more) */ - index = INDEX(n, left, root + 1); - if (root + 1 < max && num[index]) /* reachable node */ - examine(n, root + 1, left, 1 << root, 0); - - /* also look at root bit codes with completions at root + 1 - bits (not saved in num, since complete), just in case */ - if (num[index - 1] && n <= left << 1) - examine((n - left) << 1, root + 1, (n - left) << 1, - 1 << root, 0); + // also look at root bit codes with completions at root + 1 + // bits (not saved in num, since complete), just in case + if (g.num[index - 1] && n <= left << 1) + examine((n - left) << 1, (n - left) << 1, g.root + 1, + 1 << g.root, 0); } - /* done */ - printf("done: maximum of %d table entries\n", large); + // done + printf("maximum of %d table entries for root = %d\n", g.large, g.root); + fputs(g.out.str, stdout); } -/* - Examine and show the total number of possible Huffman codes for a given - maximum number of symbols, initial root table size, and maximum code length - in bits -- those are the command arguments in that order. The default - values are 286, 9, and 15 respectively, for the deflate literal/length code. - The possible codes are counted for each number of coded symbols from two to - the maximum. The counts for each of those and the total number of codes are - shown. The maximum number of inflate table entires is then calculated - across all possible codes. Each new maximum number of table entries and the - associated sub-code (starting at root + 1 == 10 bits) is shown. +// Examine and show the total number of possible prefix codes for a given +// maximum number of symbols, initial root table size, and maximum code length +// in bits -- those are the command arguments in that order. The default values +// are 286, 9, and 15 respectively, for the deflate literal/length code. The +// possible codes are counted for each number of coded symbols from two to the +// maximum. The counts for each of those and the total number of codes are +// shown. The maximum number of inflate table entries is then calculated across +// all possible codes. Each new maximum number of table entries and the +// associated sub-code (starting at root + 1 == 10 bits) is shown. +// +// To count and examine prefix codes that are not length-limited, provide a +// maximum length equal to the number of symbols minus one. +// +// For the deflate literal/length code, use "enough". For the deflate distance +// code, use "enough 30 6". +int main(int argc, char **argv) { + // set up globals for cleanup() + g.code = NULL; + g.num = NULL; + g.done = NULL; + string_init(&g.out); - To count and examine Huffman codes that are not length-limited, provide a - maximum length equal to the number of symbols minus one. - - For the deflate literal/length code, use "enough". For the deflate distance - code, use "enough 30 6". - - This uses the %llu printf format to print big_t numbers, which assumes that - big_t is an unsigned long long. If the big_t type is changed (for example - to a multiple precision type), the method of printing will also need to be - updated. - */ -int main(int argc, char **argv) -{ - int syms; /* total number of symbols to code */ - int n; /* number of symbols to code for this run */ - big_t got; /* return value of count() */ - big_t sum; /* accumulated number of codes over n */ - code_t word; /* for counting bits in code_t */ - - /* set up globals for cleanup() */ - code = NULL; - num = NULL; - done = NULL; - - /* get arguments -- default to the deflate literal/length code */ - syms = 286; - root = 9; - max = 15; + // get arguments -- default to the deflate literal/length code + int syms = 286; + g.root = 9; + g.max = 15; if (argc > 1) { syms = atoi(argv[1]); if (argc > 2) { - root = atoi(argv[2]); + g.root = atoi(argv[2]); if (argc > 3) - max = atoi(argv[3]); + g.max = atoi(argv[3]); } } - if (argc > 4 || syms < 2 || root < 1 || max < 1) { + if (argc > 4 || syms < 2 || g.root < 1 || g.max < 1) { fputs("invalid arguments, need: [sym >= 2 [root >= 1 [max >= 1]]]\n", stderr); return 1; } - /* if not restricting the code length, the longest is syms - 1 */ - if (max > syms - 1) - max = syms - 1; + // if not restricting the code length, the longest is syms - 1 + if (g.max > syms - 1) + g.max = syms - 1; - /* determine the number of bits in a code_t */ - for (n = 0, word = 1; word; n++, word <<= 1) - ; + // determine the number of bits in a code_t + int bits = 0; + for (code_t word = 1; word; word <<= 1) + bits++; - /* make sure that the calculation of most will not overflow */ - if (max > n || (code_t)(syms - 2) >= (((code_t)0 - 1) >> (max - 1))) { + // make sure that the calculation of most will not overflow + if (g.max > bits || (code_t)(syms - 2) >= ((code_t)-1 >> (g.max - 1))) { fputs("abort: code length too long for internal types\n", stderr); return 1; } - /* reject impossible code requests */ - if ((code_t)(syms - 1) > ((code_t)1 << max) - 1) { + // reject impossible code requests + if ((code_t)(syms - 1) > ((code_t)1 << g.max) - 1) { fprintf(stderr, "%d symbols cannot be coded in %d bits\n", - syms, max); + syms, g.max); return 1; } - /* allocate code vector */ - code = calloc(max + 1, sizeof(int)); - if (code == NULL) { - fputs("abort: unable to allocate enough memory\n", stderr); - return 1; - } + // allocate code vector + g.code = calloc(g.max + 1, sizeof(int)); + assert(g.code != NULL && "out of memory"); - /* determine size of saved results array, checking for overflows, - allocate and clear the array (set all to zero with calloc()) */ - if (syms == 2) /* iff max == 1 */ - num = NULL; /* won't be saving any results */ + // determine size of saved results array, checking for overflows, + // allocate and clear the array (set all to zero with calloc()) + if (syms == 2) // iff max == 1 + g.num = NULL; // won't be saving any results else { - size = syms >> 1; - if (size > ((size_t)0 - 1) / (n = (syms - 1) >> 1) || - (size *= n, size > ((size_t)0 - 1) / (n = max - 1)) || - (size *= n, size > ((size_t)0 - 1) / sizeof(big_t)) || - (num = calloc(size, sizeof(big_t))) == NULL) { - fputs("abort: unable to allocate enough memory\n", stderr); - cleanup(); - return 1; - } + g.size = syms >> 1; + int n = (syms - 1) >> 1; + assert(g.size <= (size_t)-1 / n && "overflow"); + g.size *= n; + n = g.max - 1; + assert(g.size <= (size_t)-1 / n && "overflow"); + g.size *= n; + g.num = calloc(g.size, sizeof(big_t)); + assert(g.num != NULL && "out of memory"); } - /* count possible codes for all numbers of symbols, add up counts */ - sum = 0; - for (n = 2; n <= syms; n++) { - got = count(n, 1, 2); + // count possible codes for all numbers of symbols, add up counts + big_t sum = 0; + for (int n = 2; n <= syms; n++) { + big_t got = count(n, 2, 1); sum += got; - if (got == (big_t)0 - 1 || sum < got) { /* overflow */ - fputs("abort: can't count that high!\n", stderr); - cleanup(); - return 1; - } - printf("%llu %d-codes\n", got, n); + assert(got != (big_t)-1 && sum >= got && "overflow"); } - printf("%llu total codes for 2 to %d symbols", sum, syms); - if (max < syms - 1) - printf(" (%d-bit length limit)\n", max); + printf("%"PRIbig" total codes for 2 to %d symbols", sum, syms); + if (g.max < syms - 1) + printf(" (%d-bit length limit)\n", g.max); else puts(" (no length limit)"); - /* allocate and clear done array for beenhere() */ + // allocate and clear done array for been_here() if (syms == 2) - done = NULL; - else if (size > ((size_t)0 - 1) / sizeof(struct tab) || - (done = calloc(size, sizeof(struct tab))) == NULL) { - fputs("abort: unable to allocate enough memory\n", stderr); - cleanup(); - return 1; + g.done = NULL; + else { + g.done = calloc(g.size, sizeof(struct tab)); + assert(g.done != NULL && "out of memory"); } - /* find and show maximum inflate table usage */ - if (root > max) /* reduce root to max length */ - root = max; - if ((code_t)syms < ((code_t)1 << (root + 1))) + // find and show maximum inflate table usage + if (g.root > g.max) // reduce root to max length + g.root = g.max; + if ((code_t)syms < ((code_t)1 << (g.root + 1))) enough(syms); else - puts("cannot handle minimum code lengths > root"); + fputs("cannot handle minimum code lengths > root", stderr); - /* done */ + // done cleanup(); return 0; } diff --git a/deps/zlib/examples/fitblk.c b/deps/zlib/examples/fitblk.c index c61de5c99..723dc0028 100644 --- a/deps/zlib/examples/fitblk.c +++ b/deps/zlib/examples/fitblk.c @@ -17,7 +17,7 @@ data in order to determine how much of that input will compress to nearly the requested output block size. The first pass generates enough deflate blocks to produce output to fill the requested - output size plus a specfied excess amount (see the EXCESS define + output size plus a specified excess amount (see the EXCESS define below). The last deflate block may go quite a bit past that, but is discarded. The second pass decompresses and recompresses just the compressed data that fit in the requested plus excess sized @@ -109,7 +109,7 @@ local int recompress(z_streamp inf, z_streamp def) if (ret == Z_MEM_ERROR) return ret; - /* compress what was decompresed until done or no room */ + /* compress what was decompressed until done or no room */ def->avail_in = RAWLEN - inf->avail_out; def->next_in = raw; if (inf->avail_out != 0) @@ -198,7 +198,7 @@ int main(int argc, char **argv) if (ret == Z_MEM_ERROR) quit("out of memory"); - /* set up for next reocmpression */ + /* set up for next recompression */ ret = inflateReset(&inf); assert(ret != Z_STREAM_ERROR); ret = deflateReset(&def); diff --git a/deps/zlib/examples/gun.c b/deps/zlib/examples/gun.c index be44fa51f..dbd181c07 100644 --- a/deps/zlib/examples/gun.c +++ b/deps/zlib/examples/gun.c @@ -43,7 +43,7 @@ gun will also decompress files made by Unix compress, which uses LZW compression. These files are automatically detected by virtue of their magic header bytes. Since the end of Unix compress stream is marked by the - end-of-file, they cannot be concantenated. If a Unix compress stream is + end-of-file, they cannot be concatenated. If a Unix compress stream is encountered in an input file, it is the last stream in that file. Like gunzip and uncompress, the file attributes of the original compressed @@ -227,12 +227,12 @@ local int lunpipe(unsigned have, z_const unsigned char *next, struct ind *indp, if (last == -1) return Z_BUF_ERROR; if (flags & 0x60) { - strm->msg = (char *)"unknown lzw flags set"; + strm->msg = (z_const char *)"unknown lzw flags set"; return Z_DATA_ERROR; } max = flags & 0x1f; if (max < 9 || max > 16) { - strm->msg = (char *)"lzw bits out of range"; + strm->msg = (z_const char *)"lzw bits out of range"; return Z_DATA_ERROR; } if (max == 9) /* 9 doesn't really mean 9 */ @@ -252,7 +252,7 @@ local int lunpipe(unsigned have, z_const unsigned char *next, struct ind *indp, if (NEXT() == -1) /* missing a bit */ return Z_BUF_ERROR; if (last & 1) { /* code must be < 256 */ - strm->msg = (char *)"invalid lzw code"; + strm->msg = (z_const char *)"invalid lzw code"; return Z_DATA_ERROR; } rem = (unsigned)last >> 1; /* remaining 7 bits */ @@ -319,7 +319,7 @@ local int lunpipe(unsigned have, z_const unsigned char *next, struct ind *indp, to detect random or corrupted input after a compress header. In any case, the prev > end check must be retained. */ if (code != end + 1 || prev > end) { - strm->msg = (char *)"invalid lzw code"; + strm->msg = (z_const char *)"invalid lzw code"; return Z_DATA_ERROR; } match[stack++] = (unsigned char)final; @@ -404,7 +404,7 @@ local int gunpipe(z_stream *strm, int infile, int outfile) break; /* empty gzip stream is ok */ } if (last != 31 || (NEXT() != 139 && last != 157)) { - strm->msg = (char *)"incorrect header check"; + strm->msg = (z_const char *)"incorrect header check"; ret = first ? Z_DATA_ERROR : Z_ERRNO; break; /* not a gzip or compress header */ } @@ -420,7 +420,7 @@ local int gunpipe(z_stream *strm, int infile, int outfile) ret = Z_BUF_ERROR; if (NEXT() != 8) { /* only deflate method allowed */ if (last == -1) break; - strm->msg = (char *)"unknown compression method"; + strm->msg = (z_const char *)"unknown compression method"; ret = Z_DATA_ERROR; break; } @@ -433,7 +433,7 @@ local int gunpipe(z_stream *strm, int infile, int outfile) NEXT(); if (last == -1) break; if (flags & 0xe0) { - strm->msg = (char *)"unknown header flags set"; + strm->msg = (z_const char *)"unknown header flags set"; ret = Z_DATA_ERROR; break; } @@ -486,7 +486,7 @@ local int gunpipe(z_stream *strm, int infile, int outfile) NEXT() != (int)((outd.crc >> 24) & 0xff)) { /* crc error */ if (last != -1) { - strm->msg = (char *)"incorrect data check"; + strm->msg = (z_const char *)"incorrect data check"; ret = Z_DATA_ERROR; } break; @@ -497,7 +497,7 @@ local int gunpipe(z_stream *strm, int infile, int outfile) NEXT() != (int)((outd.total >> 24) & 0xff)) { /* length error */ if (last != -1) { - strm->msg = (char *)"incorrect length check"; + strm->msg = (z_const char *)"incorrect length check"; ret = Z_DATA_ERROR; } break; diff --git a/deps/zlib/examples/gzappend.c b/deps/zlib/examples/gzappend.c index 662dec379..23e93cf68 100644 --- a/deps/zlib/examples/gzappend.c +++ b/deps/zlib/examples/gzappend.c @@ -33,7 +33,7 @@ * - Add L to constants in lseek() calls * - Remove some debugging information in error messages * - Use new data_type definition for zlib 1.2.1 - * - Simplfy and unify file operations + * - Simplify and unify file operations * - Finish off gzip file in gztack() * - Use deflatePrime() instead of adding empty blocks * - Keep gzip file clean on appended file read errors @@ -54,7 +54,7 @@ block boundary to facilitate locating and modifying the last block bit at the start of the final deflate block. Also whether using Z_BLOCK or not, another required feature of zlib 1.2.x is that inflate() now provides the - number of unusued bits in the last input byte used. gzappend will not work + number of unused bits in the last input byte used. gzappend will not work with versions of zlib earlier than 1.2.1. gzappend first decompresses the gzip file internally, discarding all but @@ -137,7 +137,7 @@ local void rotate(unsigned char *list, unsigned len, unsigned rot) /* do simple left shift by one */ if (rot == 1) { tmp = *list; - memcpy(list, list + 1, len - 1); + memmove(list, list + 1, len - 1); *last = tmp; return; } diff --git a/deps/zlib/examples/gzlog.c b/deps/zlib/examples/gzlog.c index d830ddf04..da1b02e73 100644 --- a/deps/zlib/examples/gzlog.c +++ b/deps/zlib/examples/gzlog.c @@ -1,8 +1,8 @@ /* * gzlog.c - * Copyright (C) 2004, 2008, 2012, 2016 Mark Adler, all rights reserved + * Copyright (C) 2004, 2008, 2012, 2016, 2019 Mark Adler, all rights reserved * For conditions of distribution and use, see copyright notice in gzlog.h - * version 2.2, 14 Aug 2012 + * version 2.3, 25 May 2019 */ /* @@ -212,8 +212,8 @@ to the appropriate recovery below. If there is no foo.add file, provide a zero data length to the recovery. In that case, the append recovery restores the foo.gz to the previous compressed + uncompressed data state. - For the the compress recovery, a missing foo.add file results in foo.gz - being restored to the previous compressed-only data state. + For the compress recovery, a missing foo.add file results in foo.gz being + restored to the previous compressed-only data state. - Append recovery: - Pick up append at + step above - Compress recovery: @@ -756,16 +756,15 @@ local int log_recover(struct log *log, int op) return -2; } if ((fd = open(log->path, O_RDONLY, 0)) < 0) { + free(data); log_log(log, op, ".add file read failure"); - if (data != NULL) - free(data); return -1; } ret = (size_t)read(fd, data, len) != len; close(fd); if (ret) { + free(data); log_log(log, op, ".add file read failure"); - return -1; } log_log(log, op, "loaded .add file"); diff --git a/deps/zlib/examples/gzlog.h b/deps/zlib/examples/gzlog.h index 86f0cecba..4f0510955 100644 --- a/deps/zlib/examples/gzlog.h +++ b/deps/zlib/examples/gzlog.h @@ -40,7 +40,7 @@ its new size at that time. After each write operation, the log file is a valid gzip file that can decompressed to recover what was written. - The gzlog operations can be interupted at any point due to an application or + The gzlog operations can be interrupted at any point due to an application or system crash, and the log file will be recovered the next time the log is opened with gzlog_open(). */ diff --git a/deps/zlib/examples/gznorm.c b/deps/zlib/examples/gznorm.c new file mode 100644 index 000000000..e8d9b480d --- /dev/null +++ b/deps/zlib/examples/gznorm.c @@ -0,0 +1,474 @@ +/* gznorm.c -- normalize a gzip stream + * Copyright (C) 2018 Mark Adler + * For conditions of distribution and use, see copyright notice in zlib.h + * Version 1.0 7 Oct 2018 Mark Adler */ + +// gznorm takes a gzip stream, potentially containing multiple members, and +// converts it to a gzip stream with a single member. In addition the gzip +// header is normalized, removing the file name and time stamp, and setting the +// other header contents (XFL, OS) to fixed values. gznorm does not recompress +// the data, so it is fast, but no advantage is gained from the history that +// could be available across member boundaries. + +#if defined(_WIN32) && !defined(_CRT_NONSTDC_NO_DEPRECATE) +# define _CRT_NONSTDC_NO_DEPRECATE +#endif + +#include // fread, fwrite, putc, fflush, ferror, fprintf, + // vsnprintf, stdout, stderr, NULL, FILE +#include // malloc, free +#include // strerror +#include // errno +#include // va_list, va_start, va_end +#include "zlib.h" // inflateInit2, inflate, inflateReset, inflateEnd, + // z_stream, z_off_t, crc32_combine, Z_NULL, Z_BLOCK, + // Z_OK, Z_STREAM_END, Z_BUF_ERROR, Z_DATA_ERROR, + // Z_MEM_ERROR + +#if defined(MSDOS) || defined(OS2) || defined(WIN32) || defined(__CYGWIN__) +# include +# include +# define SET_BINARY_MODE(file) setmode(fileno(file), O_BINARY) +#else +# define SET_BINARY_MODE(file) +#endif + +#define local static + +// printf to an allocated string. Return the string, or NULL if the printf or +// allocation fails. +local char *aprintf(char *fmt, ...) { + // Get the length of the result of the printf. + va_list args; + va_start(args, fmt); + int len = vsnprintf(NULL, 0, fmt, args); + va_end(args); + if (len < 0) + return NULL; + + // Allocate the required space and printf to it. + char *str = malloc(len + 1); + if (str == NULL) + return NULL; + va_start(args, fmt); + vsnprintf(str, len + 1, fmt, args); + va_end(args); + return str; +} + +// Return with an error, putting an allocated error message in *err. Doing an +// inflateEnd() on an already ended state, or one with state set to Z_NULL, is +// permitted. +#define BYE(...) \ + do { \ + inflateEnd(&strm); \ + *err = aprintf(__VA_ARGS__); \ + return 1; \ + } while (0) + +// Chunk size for buffered reads and for decompression. Twice this many bytes +// will be allocated on the stack by gzip_normalize(). Must fit in an unsigned. +#define CHUNK 16384 + +// Read a gzip stream from in and write an equivalent normalized gzip stream to +// out. If given no input, an empty gzip stream will be written. If successful, +// 0 is returned, and *err is set to NULL. On error, 1 is returned, where the +// details of the error are returned in *err, a pointer to an allocated string. +// +// The input may be a stream with multiple gzip members, which is converted to +// a single gzip member on the output. Each gzip member is decompressed at the +// level of deflate blocks. This enables clearing the last-block bit, shifting +// the compressed data to concatenate to the previous member's compressed data, +// which can end at an arbitrary bit boundary, and identifying stored blocks in +// order to resynchronize those to byte boundaries. The deflate compressed data +// is terminated with a 10-bit empty fixed block. If any members on the input +// end with a 10-bit empty fixed block, then that block is excised from the +// stream. This avoids appending empty fixed blocks for every normalization, +// and assures that gzip_normalize applied a second time will not change the +// input. The pad bits after stored block headers and after the final deflate +// block are all forced to zeros. +local int gzip_normalize(FILE *in, FILE *out, char **err) { + // initialize the inflate engine to process a gzip member + z_stream strm; + strm.zalloc = Z_NULL; + strm.zfree = Z_NULL; + strm.opaque = Z_NULL; + strm.avail_in = 0; + strm.next_in = Z_NULL; + if (inflateInit2(&strm, 15 + 16) != Z_OK) + BYE("out of memory"); + + // State while processing the input gzip stream. + enum { // BETWEEN -> HEAD -> BLOCK -> TAIL -> BETWEEN -> ... + BETWEEN, // between gzip members (must end in this state) + HEAD, // reading a gzip header + BLOCK, // reading deflate blocks + TAIL // reading a gzip trailer + } state = BETWEEN; // current component being processed + unsigned long crc = 0; // accumulated CRC of uncompressed data + unsigned long len = 0; // accumulated length of uncompressed data + unsigned long buf = 0; // deflate stream bit buffer of num bits + int num = 0; // number of bits in buf (at bottom) + + // Write a canonical gzip header (no mod time, file name, comment, extra + // block, or extra flags, and OS is marked as unknown). + fwrite("\x1f\x8b\x08\0\0\0\0\0\0\xff", 1, 10, out); + + // Process the gzip stream from in until reaching the end of the input, + // encountering invalid input, or experiencing an i/o error. + int more; // true if not at the end of the input + do { + // State inside this loop. + unsigned char *put; // next input buffer location to process + int prev; // number of bits from previous block in + // the bit buffer, or -1 if not at the + // start of a block + unsigned long long memb; // uncompressed length of member + size_t tail; // number of trailer bytes read (0..8) + unsigned long part; // accumulated trailer component + + // Get the next chunk of input from in. + unsigned char dat[CHUNK]; + strm.avail_in = fread(dat, 1, CHUNK, in); + if (strm.avail_in == 0) + break; + more = strm.avail_in == CHUNK; + strm.next_in = put = dat; + + // Run that chunk of input through the inflate engine to exhaustion. + do { + // At this point it is assured that strm.avail_in > 0. + + // Inflate until the end of a gzip component (header, deflate + // block, trailer) is reached, or until all of the chunk is + // consumed. The resulting decompressed data is discarded, though + // the total size of the decompressed data in each member is + // tracked, for the calculation of the total CRC. + do { + // inflate and handle any errors + unsigned char scrap[CHUNK]; + strm.avail_out = CHUNK; + strm.next_out = scrap; + int ret = inflate(&strm, Z_BLOCK); + if (ret == Z_MEM_ERROR) + BYE("out of memory"); + if (ret == Z_DATA_ERROR) + BYE("input invalid: %s", strm.msg); + if (ret != Z_OK && ret != Z_BUF_ERROR && ret != Z_STREAM_END) + BYE("internal error"); + + // Update the number of uncompressed bytes generated in this + // member. The actual count (not modulo 2^32) is required to + // correctly compute the total CRC. + unsigned got = CHUNK - strm.avail_out; + memb += got; + if (memb < got) + BYE("overflow error"); + + // Continue to process this chunk until it is consumed, or + // until the end of a component (header, deflate block, or + // trailer) is reached. + } while (strm.avail_out == 0 && (strm.data_type & 0x80) == 0); + + // Since strm.avail_in was > 0 for the inflate call, some input was + // just consumed. It is therefore assured that put < strm.next_in. + + // Disposition the consumed component or part of a component. + switch (state) { + case BETWEEN: + state = HEAD; + // Fall through to HEAD when some or all of the header is + // processed. + + case HEAD: + // Discard the header. + if (strm.data_type & 0x80) { + // End of header reached -- deflate blocks follow. + put = strm.next_in; + prev = num; + memb = 0; + state = BLOCK; + } + break; + + case BLOCK: + // Copy the deflate stream to the output, but with the + // last-block-bit cleared. Re-synchronize stored block + // headers to the output byte boundaries. The bytes at + // put..strm.next_in-1 is the compressed data that has been + // processed and is ready to be copied to the output. + + // At this point, it is assured that new compressed data is + // available, i.e., put < strm.next_in. If prev is -1, then + // that compressed data starts in the middle of a deflate + // block. If prev is not -1, then the bits in the bit + // buffer, possibly combined with the bits in *put, contain + // the three-bit header of the new deflate block. In that + // case, prev is the number of bits from the previous block + // that remain in the bit buffer. Since num is the number + // of bits in the bit buffer, we have that num - prev is + // the number of bits from the new block currently in the + // bit buffer. + + // If strm.data_type & 0xc0 is 0x80, then the last byte of + // the available compressed data includes the last bits of + // the end of a deflate block. In that case, that last byte + // also has strm.data_type & 0x1f bits of the next deflate + // block, in the range 0..7. If strm.data_type & 0xc0 is + // 0xc0, then the last byte of the compressed data is the + // end of the deflate stream, followed by strm.data_type & + // 0x1f pad bits, also in the range 0..7. + + // Set bits to the number of bits not yet consumed from the + // last byte. If we are at the end of the block, bits is + // either the number of bits in the last byte belonging to + // the next block, or the number of pad bits after the + // final block. In either of those cases, bits is in the + // range 0..7. + ; // (required due to C syntax oddity) + int bits = strm.data_type & 0x1f; + + if (prev != -1) { + // We are at the start of a new block. Clear the last + // block bit, and check for special cases. If it is a + // stored block, then emit the header and pad to the + // next byte boundary. If it is a final, empty fixed + // block, then excise it. + + // Some or all of the three header bits for this block + // may already be in the bit buffer. Load any remaining + // header bits into the bit buffer. + if (num - prev < 3) { + buf += (unsigned long)*put++ << num; + num += 8; + } + + // Set last to have a 1 in the position of the last + // block bit in the bit buffer. + unsigned long last = (unsigned long)1 << prev; + + if (((buf >> prev) & 7) == 3) { + // This is a final fixed block. Load at least ten + // bits from this block, including the header, into + // the bit buffer. We already have at least three, + // so at most one more byte needs to be loaded. + if (num - prev < 10) { + if (put == strm.next_in) + // Need to go get and process more input. + // We'll end up back here to finish this. + break; + buf += (unsigned long)*put++ << num; + num += 8; + } + if (((buf >> prev) & 0x3ff) == 3) { + // That final fixed block is empty. Delete it + // to avoid adding an empty block every time a + // gzip stream is normalized. + num = prev; + buf &= last - 1; // zero the pad bits + } + } + else if (((buf >> prev) & 6) == 0) { + // This is a stored block. Flush to the next + // byte boundary after the three-bit header. + num = (prev + 10) & ~7; + buf &= last - 1; // zero the pad bits + } + + // Clear the last block bit. + buf &= ~last; + + // Write out complete bytes in the bit buffer. + while (num >= 8) { + putc(buf, out); + buf >>= 8; + num -= 8; + } + + // If no more bytes left to process, then we have + // consumed the byte that had bits from the next block. + if (put == strm.next_in) + bits = 0; + } + + // We are done handling the deflate block header. Now copy + // all or almost all of the remaining compressed data that + // has been processed so far. Don't copy one byte at the + // end if it contains bits from the next deflate block or + // pad bits at the end of a deflate block. + + // mix is 1 if we are at the end of a deflate block, and if + // some of the bits in the last byte follow this block. mix + // is 0 if we are in the middle of a deflate block, if the + // deflate block ended on a byte boundary, or if all of the + // compressed data processed so far has been consumed. + int mix = (strm.data_type & 0x80) && bits; + + // Copy all of the processed compressed data to the output, + // except for the last byte if it contains bits from the + // next deflate block or pad bits at the end of the deflate + // stream. Copy the data after shifting in num bits from + // buf in front of it, leaving num bits from the end of the + // compressed data in buf when done. + unsigned char *end = strm.next_in - mix; + if (put < end) { + if (num) + // Insert num bits from buf before the data being + // copied. + do { + buf += (unsigned)(*put++) << num; + putc(buf, out); + buf >>= 8; + } while (put < end); + else { + // No shifting needed -- write directly. + fwrite(put, 1, end - put, out); + put = end; + } + } + + // Process the last processed byte if it wasn't written. + if (mix) { + // Load the last byte into the bit buffer. + buf += (unsigned)(*put++) << num; + num += 8; + + if (strm.data_type & 0x40) { + // We are at the end of the deflate stream and + // there are bits pad bits. Discard the pad bits + // and write a byte to the output, if available. + // Leave the num bits left over in buf to prepend + // to the next deflate stream. + num -= bits; + if (num >= 8) { + putc(buf, out); + num -= 8; + buf >>= 8; + } + + // Force the pad bits in the bit buffer to zeros. + buf &= ((unsigned long)1 << num) - 1; + + // Don't need to set prev here since going to TAIL. + } + else + // At the end of an internal deflate block. Leave + // the last byte in the bit buffer to examine on + // the next entry to BLOCK, when more bits from the + // next block will be available. + prev = num - bits; // number of bits in buffer + // from current block + } + + // Don't have a byte left over, so we are in the middle of + // a deflate block, or the deflate block ended on a byte + // boundary. Set prev appropriately for the next entry into + // BLOCK. + else if (strm.data_type & 0x80) + // The block ended on a byte boundary, so no header + // bits are in the bit buffer. + prev = num; + else + // In the middle of a deflate block, so no header here. + prev = -1; + + // Check for the end of the deflate stream. + if ((strm.data_type & 0xc0) == 0xc0) { + // That ends the deflate stream on the input side, the + // pad bits were discarded, and any remaining bits from + // the last block in the stream are saved in the bit + // buffer to prepend to the next stream. Process the + // gzip trailer next. + tail = 0; + part = 0; + state = TAIL; + } + break; + + case TAIL: + // Accumulate available trailer bytes to update the total + // CRC and the total uncompressed length. + do { + part = (part >> 8) + ((unsigned long)(*put++) << 24); + tail++; + if (tail == 4) { + // Update the total CRC. + z_off_t len2 = memb; + if (len2 < 0 || (unsigned long long)len2 != memb) + BYE("overflow error"); + crc = crc ? crc32_combine(crc, part, len2) : part; + part = 0; + } + else if (tail == 8) { + // Update the total uncompressed length. (It's ok + // if this sum is done modulo 2^32.) + len += part; + + // At the end of a member. Set up to inflate an + // immediately following gzip member. (If we made + // it this far, then the trailer was valid.) + if (inflateReset(&strm) != Z_OK) + BYE("internal error"); + state = BETWEEN; + break; + } + } while (put < strm.next_in); + break; + } + + // Process the input buffer until completely consumed. + } while (strm.avail_in > 0); + + // Process input until end of file, invalid input, or i/o error. + } while (more); + + // Done with the inflate engine. + inflateEnd(&strm); + + // Verify the validity of the input. + if (state != BETWEEN) + BYE("input invalid: incomplete gzip stream"); + + // Write the remaining deflate stream bits, followed by a terminating + // deflate fixed block. + buf += (unsigned long)3 << num; + putc(buf, out); + putc(buf >> 8, out); + if (num > 6) + putc(0, out); + + // Write the gzip trailer, which is the CRC and the uncompressed length + // modulo 2^32, both in little-endian order. + putc(crc, out); + putc(crc >> 8, out); + putc(crc >> 16, out); + putc(crc >> 24, out); + putc(len, out); + putc(len >> 8, out); + putc(len >> 16, out); + putc(len >> 24, out); + fflush(out); + + // Check for any i/o errors. + if (ferror(in) || ferror(out)) + BYE("i/o error: %s", strerror(errno)); + + // All good! + *err = NULL; + return 0; +} + +// Normalize the gzip stream on stdin, writing the result to stdout. +int main(void) { + // Avoid end-of-line conversions on evil operating systems. + SET_BINARY_MODE(stdin); + SET_BINARY_MODE(stdout); + + // Normalize from stdin to stdout, returning 1 on error, 0 if ok. + char *err; + int ret = gzip_normalize(stdin, stdout, &err); + if (ret) + fprintf(stderr, "gznorm error: %s\n", err); + free(err); + return ret; +} diff --git a/deps/zlib/examples/zlib_how.html b/deps/zlib/examples/zlib_how.html index 444ff1c9a..43271b988 100644 --- a/deps/zlib/examples/zlib_how.html +++ b/deps/zlib/examples/zlib_how.html @@ -1,10 +1,10 @@ - + zlib Usage Example - +

zlib Usage Example

@@ -17,7 +17,7 @@ from an input file to an output file using deflate() and inflate()< annotations are interspersed between lines of the code. So please read between the lines. We hope this helps explain some of the intricacies of zlib.

-Without further adieu, here is the program zpipe.c: +Without further ado, here is the program zpipe.c:


 /* zpipe.c: example of proper use of zlib's inflate() and deflate()
    Not copyrighted -- provided to the public domain
@@ -155,13 +155,11 @@ before we fall out of the loop at the bottom.
 
We start off by reading data from the input file. The number of bytes read is put directly into avail_in, and a pointer to those bytes is put into next_in. We also -check to see if end-of-file on the input has been reached. If we are at the end of file, then flush is set to the +check to see if end-of-file on the input has been reached using feof(). +If we are at the end of file, then flush is set to the zlib constant Z_FINISH, which is later passed to deflate() to -indicate that this is the last chunk of input data to compress. We need to use feof() -to check for end-of-file as opposed to seeing if fewer than CHUNK bytes have been read. The -reason is that if the input file length is an exact multiple of CHUNK, we will miss -the fact that we got to the end-of-file, and not know to tell deflate() to finish -up the compressed stream. If we are not yet at the end of the input, then the zlib +indicate that this is the last chunk of input data to compress. +If we are not yet at the end of the input, then the zlib constant Z_NO_FLUSH will be passed to deflate to indicate that we are still in the middle of the uncompressed data.

@@ -540,6 +538,12 @@ int main(int argc, char **argv) }


-Copyright (c) 2004, 2005 by Mark Adler
Last modified 11 December 2005
+Last modified 24 January 2023
+Copyright © 2004-2023 Mark Adler

+ +Creative Commons License + +Creative Commons Attribution-NoDerivatives 4.0 International License. diff --git a/deps/zlib/examples/zpipe.c b/deps/zlib/examples/zpipe.c index 83535d169..51dec4745 100644 --- a/deps/zlib/examples/zpipe.c +++ b/deps/zlib/examples/zpipe.c @@ -12,6 +12,10 @@ Avoid some compiler warnings for input and output buffers */ +#if defined(_WIN32) && !defined(_CRT_NONSTDC_NO_DEPRECATE) +# define _CRT_NONSTDC_NO_DEPRECATE +#endif + #include #include #include diff --git a/deps/zlib/examples/zran.c b/deps/zlib/examples/zran.c index 4fec6594a..6ce75dda8 100644 --- a/deps/zlib/examples/zran.c +++ b/deps/zlib/examples/zran.c @@ -1,383 +1,520 @@ -/* zran.c -- example of zlib/gzip stream indexing and random access - * Copyright (C) 2005, 2012 Mark Adler +/* zran.c -- example of deflate stream indexing and random access + * Copyright (C) 2005, 2012, 2018, 2023, 2024 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h - Version 1.1 29 Sep 2012 Mark Adler */ + * Version 1.6 2 Aug 2024 Mark Adler */ /* Version History: 1.0 29 May 2005 First version 1.1 29 Sep 2012 Fix memory reallocation error + 1.2 14 Oct 2018 Handle gzip streams with multiple members + Add a header file to facilitate usage in applications + 1.3 18 Feb 2023 Permit raw deflate streams as well as zlib and gzip + Permit crossing gzip member boundaries when extracting + Support a size_t size when extracting (was an int) + Do a binary search over the index for an access point + Expose the access point type to enable save and load + 1.4 13 Apr 2023 Add a NOPRIME define to not use inflatePrime() + 1.5 4 Feb 2024 Set returned index to NULL on an index build error + Stop decoding once request is satisfied + Provide a reusable inflate engine in the index + Allocate the dictionaries to reduce memory usage + 1.6 2 Aug 2024 Remove unneeded dependency on limits.h */ -/* Illustrate the use of Z_BLOCK, inflatePrime(), and inflateSetDictionary() - for random access of a compressed file. A file containing a zlib or gzip - stream is provided on the command line. The compressed stream is decoded in - its entirety, and an index built with access points about every SPAN bytes - in the uncompressed output. The compressed file is left open, and can then - be read randomly, having to decompress on the average SPAN/2 uncompressed - bytes before getting to the desired block of data. - - An access point can be created at the start of any deflate block, by saving - the starting file offset and bit of that block, and the 32K bytes of - uncompressed data that precede that block. Also the uncompressed offset of - that block is saved to provide a referece for locating a desired starting - point in the uncompressed stream. build_index() works by decompressing the - input zlib or gzip stream a block at a time, and at the end of each block - deciding if enough uncompressed data has gone by to justify the creation of - a new access point. If so, that point is saved in a data structure that - grows as needed to accommodate the points. - - To use the index, an offset in the uncompressed data is provided, for which - the latest access point at or preceding that offset is located in the index. - The input file is positioned to the specified location in the index, and if - necessary the first few bits of the compressed data is read from the file. - inflate is initialized with those bits and the 32K of uncompressed data, and - the decompression then proceeds until the desired offset in the file is - reached. Then the decompression continues to read the desired uncompressed - data from the file. - - Another approach would be to generate the index on demand. In that case, - requests for random access reads from the compressed data would try to use - the index, but if a read far enough past the end of the index is required, - then further index entries would be generated and added. - - There is some fair bit of overhead to starting inflation for the random - access, mainly copying the 32K byte dictionary. So if small pieces of the - file are being accessed, it would make sense to implement a cache to hold - some lookahead and avoid many calls to extract() for small lengths. - - Another way to build an index would be to use inflateCopy(). That would - not be constrained to have access points at block boundaries, but requires - more memory per access point, and also cannot be saved to file due to the - use of pointers in the state. The approach here allows for storage of the - index in a file. - */ +// Illustrate the use of Z_BLOCK, inflatePrime(), and inflateSetDictionary() +// for random access of a compressed file. A file containing a raw deflate +// stream is provided on the command line. The compressed stream is decoded in +// its entirety, and an index built with access points about every SPAN bytes +// in the uncompressed output. The compressed file is left open, and can then +// be read randomly, having to decompress on the average SPAN/2 uncompressed +// bytes before getting to the desired block of data. +// +// An access point can be created at the start of any deflate block, by saving +// the starting file offset and bit of that block, and the 32K bytes of +// uncompressed data that precede that block. Also the uncompressed offset of +// that block is saved to provide a reference for locating a desired starting +// point in the uncompressed stream. deflate_index_build() decompresses the +// input raw deflate stream a block at a time, and at the end of each block +// decides if enough uncompressed data has gone by to justify the creation of a +// new access point. If so, that point is saved in a data structure that grows +// as needed to accommodate the points. +// +// To use the index, an offset in the uncompressed data is provided, for which +// the latest access point at or preceding that offset is located in the index. +// The input file is positioned to the specified location in the index, and if +// necessary the first few bits of the compressed data is read from the file. +// inflate is initialized with those bits and the 32K of uncompressed data, and +// decompression then proceeds until the desired offset in the file is reached. +// Then decompression continues to read the requested uncompressed data from +// the file. +// +// There is some fair bit of overhead to starting inflation for the random +// access, mainly copying the 32K byte dictionary. If small pieces of the file +// are being accessed, it would make sense to implement a cache to hold some +// lookahead to avoid many calls to deflate_index_extract() for small lengths. +// +// Another way to build an index would be to use inflateCopy(). That would not +// be constrained to have access points at block boundaries, but would require +// more memory per access point, and could not be saved to a file due to the +// use of pointers in the state. The approach here allows for storage of the +// index in a file. #include #include #include #include "zlib.h" +#include "zran.h" -#define local static +#define WINSIZE 32768U // sliding window size +#define CHUNK 16384 // file input buffer size -#define SPAN 1048576L /* desired distance between access points */ -#define WINSIZE 32768U /* sliding window size */ -#define CHUNK 16384 /* file input buffer size */ - -/* access point entry */ -struct point { - off_t out; /* corresponding offset in uncompressed data */ - off_t in; /* offset in input file of first full byte */ - int bits; /* number of bits (1-7) from byte at in - 1, or 0 */ - unsigned char window[WINSIZE]; /* preceding 32K of uncompressed data */ -}; - -/* access point list */ -struct access { - int have; /* number of list entries filled in */ - int size; /* number of list entries allocated */ - struct point *list; /* allocated list */ -}; - -/* Deallocate an index built by build_index() */ -local void free_index(struct access *index) -{ +// See comments in zran.h. +void deflate_index_free(struct deflate_index *index) { if (index != NULL) { + size_t i = index->have; + while (i) + free(index->list[--i].window); free(index->list); + inflateEnd(&index->strm); free(index); } } -/* Add an entry to the access point list. If out of memory, deallocate the - existing list and return NULL. */ -local struct access *addpoint(struct access *index, int bits, - off_t in, off_t out, unsigned left, unsigned char *window) -{ - struct point *next; - - /* if list is empty, create it (start with eight points) */ - if (index == NULL) { - index = malloc(sizeof(struct access)); - if (index == NULL) return NULL; - index->list = malloc(sizeof(struct point) << 3); - if (index->list == NULL) { - free(index); - return NULL; - } - index->size = 8; - index->have = 0; - } - - /* if list is full, make it bigger */ - else if (index->have == index->size) { - index->size <<= 1; - next = realloc(index->list, sizeof(struct point) * index->size); +// Add an access point to the list. If out of memory, deallocate the existing +// list and return NULL. index->mode is temporarily the allocated number of +// access points, until it is time for deflate_index_build() to return. Then +// index->mode is set to the mode of inflation. +static struct deflate_index *add_point(struct deflate_index *index, off_t in, + off_t out, off_t beg, + unsigned char *window) { + if (index->have == index->mode) { + // The list is full. Make it bigger. + index->mode = index->mode ? index->mode << 1 : 8; + point_t *next = realloc(index->list, sizeof(point_t) * index->mode); if (next == NULL) { - free_index(index); + deflate_index_free(index); return NULL; } index->list = next; } - /* fill in entry and increment how many we have */ - next = index->list + index->have; - next->bits = bits; - next->in = in; + // Fill in the access point and increment how many we have. + point_t *next = (point_t *)(index->list) + index->have++; + if (index->have < 0) { + // Overflowed the int! + deflate_index_free(index); + return NULL; + } next->out = out; - if (left) - memcpy(next->window, window + WINSIZE - left, left); - if (left < WINSIZE) - memcpy(next->window + left, window, WINSIZE - left); - index->have++; + next->in = in; + next->bits = index->strm.data_type & 7; + next->dict = out - beg > WINSIZE ? WINSIZE : (unsigned)(out - beg); + next->window = malloc(next->dict); + if (next->window == NULL) { + deflate_index_free(index); + return NULL; + } + unsigned recent = WINSIZE - index->strm.avail_out; + unsigned copy = recent > next->dict ? next->dict : recent; + memcpy(next->window + next->dict - copy, window + recent - copy, copy); + copy = next->dict - copy; + memcpy(next->window, window + WINSIZE - copy, copy); - /* return list, possibly reallocated */ + // Return the index, which may have been newly allocated or destroyed. return index; } -/* Make one entire pass through the compressed stream and build an index, with - access points about every span bytes of uncompressed output -- span is - chosen to balance the speed of random access against the memory requirements - of the list, about 32K bytes per access point. Note that data after the end - of the first zlib or gzip stream in the file is ignored. build_index() - returns the number of access points on success (>= 1), Z_MEM_ERROR for out - of memory, Z_DATA_ERROR for an error in the input file, or Z_ERRNO for a - file read error. On success, *built points to the resulting index. */ -local int build_index(FILE *in, off_t span, struct access **built) -{ - int ret; - off_t totin, totout; /* our own total counters to avoid 4GB limit */ - off_t last; /* totout value of last access point */ - struct access *index; /* access points being generated */ - z_stream strm; - unsigned char input[CHUNK]; - unsigned char window[WINSIZE]; +// Decompression modes. These are the inflateInit2() windowBits parameter. +#define RAW -15 +#define ZLIB 15 +#define GZIP 31 - /* initialize inflate */ - strm.zalloc = Z_NULL; - strm.zfree = Z_NULL; - strm.opaque = Z_NULL; - strm.avail_in = 0; - strm.next_in = Z_NULL; - ret = inflateInit2(&strm, 47); /* automatic zlib or gzip decoding */ - if (ret != Z_OK) - return ret; +// See comments in zran.h. +int deflate_index_build(FILE *in, off_t span, struct deflate_index **built) { + // If this returns with an error, any attempt to use the index will cleanly + // return an error. + *built = NULL; - /* inflate the input, maintain a sliding window, and build an index -- this - also validates the integrity of the compressed data using the check - information at the end of the gzip or zlib stream */ - totin = totout = last = 0; - index = NULL; /* will be allocated by first addpoint() */ - strm.avail_out = 0; + // Create and initialize the index list. + struct deflate_index *index = malloc(sizeof(struct deflate_index)); + if (index == NULL) + return Z_MEM_ERROR; + index->have = 0; + index->mode = 0; // entries in index->list allocation + index->list = NULL; + index->strm.state = Z_NULL; // so inflateEnd() can work + + // Set up the inflation state. + index->strm.avail_in = 0; + index->strm.avail_out = 0; + unsigned char buf[CHUNK]; // input buffer + unsigned char win[WINSIZE] = {0}; // output sliding window + off_t totin = 0; // total bytes read from input + off_t totout = 0; // total bytes uncompressed + off_t beg = 0; // starting offset of last history reset + int mode = 0; // mode: RAW, ZLIB, or GZIP (0 => not set yet) + + // Decompress from in, generating access points along the way. + int ret; // the return value from zlib, or Z_ERRNO + off_t last; // last access point uncompressed offset do { - /* get some compressed data from input file */ - strm.avail_in = fread(input, 1, CHUNK, in); - if (ferror(in)) { - ret = Z_ERRNO; - goto build_index_error; - } - if (strm.avail_in == 0) { - ret = Z_DATA_ERROR; - goto build_index_error; - } - strm.next_in = input; - - /* process all of that, or until end of stream */ - do { - /* reset sliding window if necessary */ - if (strm.avail_out == 0) { - strm.avail_out = WINSIZE; - strm.next_out = window; - } - - /* inflate until out of input, output, or at end of block -- - update the total input and output counters */ - totin += strm.avail_in; - totout += strm.avail_out; - ret = inflate(&strm, Z_BLOCK); /* return at end of block */ - totin -= strm.avail_in; - totout -= strm.avail_out; - if (ret == Z_NEED_DICT) - ret = Z_DATA_ERROR; - if (ret == Z_MEM_ERROR || ret == Z_DATA_ERROR) - goto build_index_error; - if (ret == Z_STREAM_END) + // Assure available input, at least until reaching EOF. + if (index->strm.avail_in == 0) { + index->strm.avail_in = fread(buf, 1, sizeof(buf), in); + totin += index->strm.avail_in; + index->strm.next_in = buf; + if (index->strm.avail_in < sizeof(buf) && ferror(in)) { + ret = Z_ERRNO; break; - - /* if at end of block, consider adding an index entry (note that if - data_type indicates an end-of-block, then all of the - uncompressed data from that block has been delivered, and none - of the compressed data after that block has been consumed, - except for up to seven bits) -- the totout == 0 provides an - entry point after the zlib or gzip header, and assures that the - index always has at least one access point; we avoid creating an - access point after the last block by checking bit 6 of data_type - */ - if ((strm.data_type & 128) && !(strm.data_type & 64) && - (totout == 0 || totout - last > span)) { - index = addpoint(index, strm.data_type & 7, totin, - totout, strm.avail_out, window); - if (index == NULL) { - ret = Z_MEM_ERROR; - goto build_index_error; - } - last = totout; } - } while (strm.avail_in != 0); - } while (ret != Z_STREAM_END); - /* clean up and return index (release unused entries in list) */ - (void)inflateEnd(&strm); - index->list = realloc(index->list, sizeof(struct point) * index->have); - index->size = index->have; + if (mode == 0) { + // At the start of the input -- determine the type. Assume raw + // if it is neither zlib nor gzip. This could in theory result + // in a false positive for zlib, but in practice the fill bits + // after a stored block are always zeros, so a raw stream won't + // start with an 8 in the low nybble. + mode = index->strm.avail_in == 0 ? RAW : // will fail + (index->strm.next_in[0] & 0xf) == 8 ? ZLIB : + index->strm.next_in[0] == 0x1f ? GZIP : + /* else */ RAW; + index->strm.zalloc = Z_NULL; + index->strm.zfree = Z_NULL; + index->strm.opaque = Z_NULL; + ret = inflateInit2(&index->strm, mode); + if (ret != Z_OK) + break; + } + } + + // Assure available output. This rotates the output through, for use as + // a sliding window on the uncompressed data. + if (index->strm.avail_out == 0) { + index->strm.avail_out = sizeof(win); + index->strm.next_out = win; + } + + if (mode == RAW && index->have == 0) + // We skip the inflate() call at the start of raw deflate data in + // order generate an access point there. Set data_type to imitate + // the end of a header. + index->strm.data_type = 0x80; + else { + // Inflate and update the number of uncompressed bytes. + unsigned before = index->strm.avail_out; + ret = inflate(&index->strm, Z_BLOCK); + totout += before - index->strm.avail_out; + } + + if ((index->strm.data_type & 0xc0) == 0x80 && + (index->have == 0 || totout - last >= span)) { + // We are at the end of a header or a non-last deflate block, so we + // can add an access point here. Furthermore, we are either at the + // very start for the first access point, or there has been span or + // more uncompressed bytes since the last access point, so we want + // to add an access point here. + index = add_point(index, totin - index->strm.avail_in, totout, beg, + win); + if (index == NULL) { + ret = Z_MEM_ERROR; + break; + } + last = totout; + } + + if (ret == Z_STREAM_END && mode == GZIP && + (index->strm.avail_in || ungetc(getc(in), in) != EOF)) { + // There is more input after the end of a gzip member. Reset the + // inflate state to read another gzip member. On success, this will + // set ret to Z_OK to continue decompressing. + ret = inflateReset2(&index->strm, GZIP); + beg = totout; // reset history + } + + // Keep going until Z_STREAM_END or error. If the compressed data ends + // prematurely without a file read error, Z_BUF_ERROR is returned. + } while (ret == Z_OK); + + if (ret != Z_STREAM_END) { + // An error was encountered. Discard the index and return a negative + // error code. + deflate_index_free(index); + return ret == Z_NEED_DICT ? Z_DATA_ERROR : ret; + } + + // Return the index. + index->mode = mode; + index->length = totout; *built = index; - return index->size; - - /* return error */ - build_index_error: - (void)inflateEnd(&strm); - if (index != NULL) - free_index(index); - return ret; + return index->have; } -/* Use the index to read len bytes from offset into buf, return bytes read or - negative for error (Z_DATA_ERROR or Z_MEM_ERROR). If data is requested past - the end of the uncompressed data, then extract() will return a value less - than len, indicating how much as actually read into buf. This function - should not return a data error unless the file was modified since the index - was generated. extract() may also return Z_ERRNO if there is an error on - reading or seeking the input file. */ -local int extract(FILE *in, struct access *index, off_t offset, - unsigned char *buf, int len) -{ - int ret, skip; - z_stream strm; - struct point *here; - unsigned char input[CHUNK]; - unsigned char discard[WINSIZE]; +#ifdef NOPRIME +// Support zlib versions before 1.2.3 (July 2005), or incomplete zlib clones +// that do not have inflatePrime(). - /* proceed only if something reasonable to do */ - if (len < 0) +# define INFLATEPRIME inflatePreface + +// Append the low bits bits of value to in[] at bit position *have, updating +// *have. value must be zero above its low bits bits. bits must be positive. +// This assumes that any bits above the *have bits in the last byte are zeros. +// That assumption is preserved on return, as any bits above *have + bits in +// the last byte written will be set to zeros. +static inline void append_bits(unsigned value, int bits, + unsigned char *in, int *have) { + in += *have >> 3; // where the first bits from value will go + int k = *have & 7; // the number of bits already there + *have += bits; + if (k) + *in |= value << k; // write value above the low k bits + else + *in = value; + k = 8 - k; // the number of bits just appended + while (bits > k) { + value >>= k; // drop the bits appended + bits -= k; + k = 8; // now at a byte boundary + *++in = value; + } +} + +// Insert enough bits in the form of empty deflate blocks in front of the +// low bits bits of value, in order to bring the sequence to a byte boundary. +// Then feed that to inflate(). This does what inflatePrime() does, except that +// a negative value of bits is not supported. bits must be in 0..16. If the +// arguments are invalid, Z_STREAM_ERROR is returned. Otherwise the return +// value from inflate() is returned. +static int inflatePreface(z_stream *strm, int bits, int value) { + // Check input. + if (strm == Z_NULL || bits < 0 || bits > 16) + return Z_STREAM_ERROR; + if (bits == 0) + return Z_OK; + value &= (2 << (bits - 1)) - 1; + + // An empty dynamic block with an odd number of bits (95). The high bit of + // the last byte is unused. + static const unsigned char dyn[] = { + 4, 0xe0, 0x81, 8, 0, 0, 0, 0, 0x20, 0xa8, 0xab, 0x1f + }; + const int dynlen = 95; // number of bits in the block + + // Build an input buffer for inflate that is a multiple of eight bits in + // length, and that ends with the low bits bits of value. + unsigned char in[(dynlen + 3 * 10 + 16 + 7) / 8]; + int have = 0; + if (bits & 1) { + // Insert an empty dynamic block to get to an odd number of bits, so + // when bits bits from value are appended, we are at an even number of + // bits. + memcpy(in, dyn, sizeof(dyn)); + have = dynlen; + } + while ((have + bits) & 7) + // Insert empty fixed blocks until appending bits bits would put us on + // a byte boundary. This will insert at most three fixed blocks. + append_bits(2, 10, in, &have); + + // Append the bits bits from value, which takes us to a byte boundary. + append_bits(value, bits, in, &have); + + // Deliver the input to inflate(). There is no output space provided, but + // inflate() can't get stuck waiting on output not ingesting all of the + // provided input. The reason is that there will be at most 16 bits of + // input from value after the empty deflate blocks (which themselves + // generate no output). At least ten bits are needed to generate the first + // output byte from a fixed block. The last two bytes of the buffer have to + // be ingested in order to get ten bits, which is the most that value can + // occupy. + strm->avail_in = have >> 3; + strm->next_in = in; + strm->avail_out = 0; + strm->next_out = in; // not used, but can't be NULL + return inflate(strm, Z_NO_FLUSH); +} + +#else +# define INFLATEPRIME inflatePrime +#endif + +// See comments in zran.h. +ptrdiff_t deflate_index_extract(FILE *in, struct deflate_index *index, + off_t offset, unsigned char *buf, size_t len) { + // Do a quick sanity check on the index. + if (index == NULL || index->have < 1 || index->list[0].out != 0 || + index->strm.state == Z_NULL) + return Z_STREAM_ERROR; + + // If nothing to extract, return zero bytes extracted. + if (len == 0 || offset < 0 || offset >= index->length) return 0; - /* find where in stream to start */ - here = index->list; - ret = index->have; - while (--ret && here[1].out <= offset) - here++; + // Find the access point closest to but not after offset. + int lo = -1, hi = index->have; + point_t *point = index->list; + while (hi - lo > 1) { + int mid = (lo + hi) >> 1; + if (offset < point[mid].out) + hi = mid; + else + lo = mid; + } + point += lo; - /* initialize file and inflate state to start there */ - strm.zalloc = Z_NULL; - strm.zfree = Z_NULL; - strm.opaque = Z_NULL; - strm.avail_in = 0; - strm.next_in = Z_NULL; - ret = inflateInit2(&strm, -15); /* raw inflate */ + // Initialize the input file and prime the inflate engine to start there. + int ret = fseeko(in, point->in - (point->bits ? 1 : 0), SEEK_SET); + if (ret == -1) + return Z_ERRNO; + int ch = 0; + if (point->bits && (ch = getc(in)) == EOF) + return ferror(in) ? Z_ERRNO : Z_BUF_ERROR; + index->strm.avail_in = 0; + ret = inflateReset2(&index->strm, RAW); if (ret != Z_OK) return ret; - ret = fseeko(in, here->in - (here->bits ? 1 : 0), SEEK_SET); - if (ret == -1) - goto extract_ret; - if (here->bits) { - ret = getc(in); - if (ret == -1) { - ret = ferror(in) ? Z_ERRNO : Z_DATA_ERROR; - goto extract_ret; - } - (void)inflatePrime(&strm, here->bits, ret >> (8 - here->bits)); - } - (void)inflateSetDictionary(&strm, here->window, WINSIZE); + if (point->bits) + INFLATEPRIME(&index->strm, point->bits, ch >> (8 - point->bits)); + inflateSetDictionary(&index->strm, point->window, point->dict); - /* skip uncompressed bytes until offset reached, then satisfy request */ - offset -= here->out; - strm.avail_in = 0; - skip = 1; /* while skipping to offset */ + // Skip uncompressed bytes until offset reached, then satisfy request. + unsigned char input[CHUNK]; + unsigned char discard[WINSIZE]; + offset -= point->out; // number of bytes to skip to get to offset + size_t left = len; // number of bytes left to read after offset do { - /* define where to put uncompressed data, and how much */ - if (offset == 0 && skip) { /* at offset now */ - strm.avail_out = len; - strm.next_out = buf; - skip = 0; /* only do this once */ + if (offset) { + // Discard up to offset uncompressed bytes. + index->strm.avail_out = offset < WINSIZE ? (unsigned)offset : + WINSIZE; + index->strm.next_out = discard; } - if (offset > WINSIZE) { /* skip WINSIZE bytes */ - strm.avail_out = WINSIZE; - strm.next_out = discard; - offset -= WINSIZE; - } - else if (offset != 0) { /* last skip */ - strm.avail_out = (unsigned)offset; - strm.next_out = discard; - offset = 0; + else { + // Uncompress up to left bytes into buf. + index->strm.avail_out = left < (unsigned)-1 ? (unsigned)left : + (unsigned)-1; + index->strm.next_out = buf + len - left; } - /* uncompress until avail_out filled, or end of stream */ - do { - if (strm.avail_in == 0) { - strm.avail_in = fread(input, 1, CHUNK, in); - if (ferror(in)) { - ret = Z_ERRNO; - goto extract_ret; - } - if (strm.avail_in == 0) { - ret = Z_DATA_ERROR; - goto extract_ret; - } - strm.next_in = input; - } - ret = inflate(&strm, Z_NO_FLUSH); /* normal inflate */ - if (ret == Z_NEED_DICT) - ret = Z_DATA_ERROR; - if (ret == Z_MEM_ERROR || ret == Z_DATA_ERROR) - goto extract_ret; - if (ret == Z_STREAM_END) + // Uncompress, setting got to the number of bytes uncompressed. + if (index->strm.avail_in == 0) { + // Assure available input. + index->strm.avail_in = fread(input, 1, CHUNK, in); + if (index->strm.avail_in < CHUNK && ferror(in)) { + ret = Z_ERRNO; break; - } while (strm.avail_out != 0); + } + index->strm.next_in = input; + } + unsigned got = index->strm.avail_out; + ret = inflate(&index->strm, Z_NO_FLUSH); + got -= index->strm.avail_out; - /* if reach end of stream, then don't keep trying to get more */ - if (ret == Z_STREAM_END) - break; + // Update the appropriate count. + if (offset) + offset -= got; + else { + left -= got; + if (left == 0) + // Request satisfied. + break; + } - /* do until offset reached and requested data read, or stream ends */ - } while (skip); + // If we're at the end of a gzip member and there's more to read, + // continue to the next gzip member. + if (ret == Z_STREAM_END && index->mode == GZIP) { + // Discard the gzip trailer. + unsigned drop = 8; // length of gzip trailer + if (index->strm.avail_in >= drop) { + index->strm.avail_in -= drop; + index->strm.next_in += drop; + } + else { + // Read and discard the remainder of the gzip trailer. + drop -= index->strm.avail_in; + index->strm.avail_in = 0; + do { + if (getc(in) == EOF) + // The input does not have a complete trailer. + return ferror(in) ? Z_ERRNO : Z_BUF_ERROR; + } while (--drop); + } - /* compute number of uncompressed bytes read after offset */ - ret = skip ? 0 : len - strm.avail_out; + if (index->strm.avail_in || ungetc(getc(in), in) != EOF) { + // There's more after the gzip trailer. Use inflate to skip the + // gzip header and resume the raw inflate there. + inflateReset2(&index->strm, GZIP); + do { + if (index->strm.avail_in == 0) { + index->strm.avail_in = fread(input, 1, CHUNK, in); + if (index->strm.avail_in < CHUNK && ferror(in)) { + ret = Z_ERRNO; + break; + } + index->strm.next_in = input; + } + index->strm.avail_out = WINSIZE; + index->strm.next_out = discard; + ret = inflate(&index->strm, Z_BLOCK); // stop after header + } while (ret == Z_OK && (index->strm.data_type & 0x80) == 0); + if (ret != Z_OK) + break; + inflateReset2(&index->strm, RAW); + } + } - /* clean up and return bytes read or error */ - extract_ret: - (void)inflateEnd(&strm); - return ret; + // Continue until we have the requested data, the deflate data has + // ended, or an error is encountered. + } while (ret == Z_OK); + + // Return the number of uncompressed bytes read into buf, or the error. + return ret == Z_OK || ret == Z_STREAM_END ? len - left : ret; } -/* Demonstrate the use of build_index() and extract() by processing the file - provided on the command line, and the extracting 16K from about 2/3rds of - the way through the uncompressed output, and writing that to stdout. */ -int main(int argc, char **argv) -{ - int len; - off_t offset; - FILE *in; - struct access *index = NULL; - unsigned char buf[CHUNK]; +#ifdef TEST - /* open input file */ - if (argc != 2) { - fprintf(stderr, "usage: zran file.gz\n"); +#define SPAN 1048576L // desired distance between access points +#define LEN 16384 // number of bytes to extract + +// Demonstrate the use of deflate_index_build() and deflate_index_extract() by +// processing the file provided on the command line, and extracting LEN bytes +// from 2/3rds of the way through the uncompressed output, writing that to +// stdout. An offset can be provided as the second argument, in which case the +// data is extracted from there instead. +int main(int argc, char **argv) { + // Open the input file. + if (argc < 2 || argc > 3) { + fprintf(stderr, "usage: zran file.raw [offset]\n"); return 1; } - in = fopen(argv[1], "rb"); + FILE *in = fopen(argv[1], "rb"); if (in == NULL) { fprintf(stderr, "zran: could not open %s for reading\n", argv[1]); return 1; } - /* build index */ - len = build_index(in, SPAN, &index); + // Get optional offset. + off_t offset = -1; + if (argc == 3) { + char *end; + offset = strtoll(argv[2], &end, 10); + if (*end || offset < 0) { + fprintf(stderr, "zran: %s is not a valid offset\n", argv[2]); + return 1; + } + } + + // Build index. + struct deflate_index *index = NULL; + int len = deflate_index_build(in, SPAN, &index); if (len < 0) { fclose(in); switch (len) { case Z_MEM_ERROR: fprintf(stderr, "zran: out of memory\n"); break; + case Z_BUF_ERROR: + fprintf(stderr, "zran: %s ended prematurely\n", argv[1]); + break; case Z_DATA_ERROR: fprintf(stderr, "zran: compressed data error in %s\n", argv[1]); break; @@ -391,19 +528,23 @@ int main(int argc, char **argv) } fprintf(stderr, "zran: built index with %d access points\n", len); - /* use index by reading some bytes from an arbitrary offset */ - offset = (index->list[index->have - 1].out << 1) / 3; - len = extract(in, index, offset, buf, CHUNK); - if (len < 0) + // Use index by reading some bytes from an arbitrary offset. + unsigned char buf[LEN]; + if (offset == -1) + offset = ((index->length + 1) << 1) / 3; + ptrdiff_t got = deflate_index_extract(in, index, offset, buf, LEN); + if (got < 0) fprintf(stderr, "zran: extraction failed: %s error\n", - len == Z_MEM_ERROR ? "out of memory" : "input corrupted"); + got == Z_MEM_ERROR ? "out of memory" : "input corrupted"); else { - fwrite(buf, 1, len, stdout); - fprintf(stderr, "zran: extracted %d bytes at %llu\n", len, offset); + fwrite(buf, 1, got, stdout); + fprintf(stderr, "zran: extracted %ld bytes at %lld\n", got, offset); } - /* clean up and exit */ - free_index(index); + // Clean up and exit. + deflate_index_free(index); fclose(in); return 0; } + +#endif diff --git a/deps/zlib/examples/zran.h b/deps/zlib/examples/zran.h new file mode 100644 index 000000000..5c6e643a2 --- /dev/null +++ b/deps/zlib/examples/zran.h @@ -0,0 +1,53 @@ +/* zran.h -- example of deflated stream indexing and random access + * Copyright (C) 2005, 2012, 2018, 2023, 2024 Mark Adler + * For conditions of distribution and use, see copyright notice in zlib.h + * Version 1.5 4 Feb 2024 Mark Adler */ + +#include +#include "zlib.h" + +// Access point. +typedef struct point { + off_t out; // offset in uncompressed data + off_t in; // offset in compressed file of first full byte + int bits; // 0, or number of bits (1-7) from byte at in-1 + unsigned dict; // number of bytes in window to use as a dictionary + unsigned char *window; // preceding 32K (or less) of uncompressed data +} point_t; + +// Access point list. +struct deflate_index { + int have; // number of access points in list + int mode; // -15 for raw, 15 for zlib, or 31 for gzip + off_t length; // total length of uncompressed data + point_t *list; // allocated list of access points + z_stream strm; // re-usable inflate engine for extraction +}; + +// Make one pass through a zlib, gzip, or raw deflate compressed stream and +// build an index, with access points about every span bytes of uncompressed +// output. gzip files with multiple members are fully indexed. span should be +// chosen to balance the speed of random access against the memory requirements +// of the list, which is about 32K bytes per access point. The return value is +// the number of access points on success (>= 1), Z_MEM_ERROR for out of +// memory, Z_BUF_ERROR for a premature end of input, Z_DATA_ERROR for a format +// or verification error in the input file, or Z_ERRNO for a file read error. +// On success, *built points to the resulting index, otherwise it's NULL. +int deflate_index_build(FILE *in, off_t span, struct deflate_index **built); + +// Use the index to read len bytes from offset into buf. Return the number of +// bytes read or a negative error code. If data is requested past the end of +// the uncompressed data, then deflate_index_extract() will return a value less +// than len, indicating how much was actually read into buf. If given a valid +// index, this function should not return an error unless the file was modified +// somehow since the index was generated, given that deflate_index_build() had +// validated all of the input. If nevertheless there is a failure, Z_BUF_ERROR +// is returned if the compressed data ends prematurely, Z_DATA_ERROR if the +// deflate compressed data is not valid, Z_MEM_ERROR if out of memory, +// Z_STREAM_ERROR if the index is not valid, or Z_ERRNO if there is an error +// reading or seeking on the input file. +ptrdiff_t deflate_index_extract(FILE *in, struct deflate_index *index, + off_t offset, unsigned char *buf, size_t len); + +// Deallocate an index built by deflate_index_build(). +void deflate_index_free(struct deflate_index *index); diff --git a/deps/zlib/gzclose.c b/deps/zlib/gzclose.c index caeb99a31..48d6a86f0 100644 --- a/deps/zlib/gzclose.c +++ b/deps/zlib/gzclose.c @@ -8,9 +8,7 @@ /* gzclose() is in a separate file so that it is linked in only if it is used. That way the other gzclose functions can be used instead to avoid linking in unneeded compression or decompression routines. */ -int ZEXPORT gzclose(file) - gzFile file; -{ +int ZEXPORT gzclose(gzFile file) { #ifndef NO_GZCOMPRESS gz_statep state; diff --git a/deps/zlib/gzguts.h b/deps/zlib/gzguts.h index 990a4d251..71dea740c 100644 --- a/deps/zlib/gzguts.h +++ b/deps/zlib/gzguts.h @@ -1,5 +1,5 @@ /* gzguts.h -- zlib internal header definitions for gz* operations - * Copyright (C) 2004, 2005, 2010, 2011, 2012, 2013, 2016 Mark Adler + * Copyright (C) 2004-2024 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -7,9 +7,8 @@ # ifndef _LARGEFILE_SOURCE # define _LARGEFILE_SOURCE 1 # endif -# ifdef _FILE_OFFSET_BITS -# undef _FILE_OFFSET_BITS -# endif +# undef _FILE_OFFSET_BITS +# undef _TIME_BITS #endif #ifdef HAVE_HIDDEN @@ -18,6 +17,18 @@ # define ZLIB_INTERNAL #endif +#if defined(_WIN32) +# ifndef WIN32_LEAN_AND_MEAN +# define WIN32_LEAN_AND_MEAN +# endif +# ifndef _CRT_SECURE_NO_WARNINGS +# define _CRT_SECURE_NO_WARNINGS +# endif +# ifndef _CRT_NONSTDC_NO_DEPRECATE +# define _CRT_NONSTDC_NO_DEPRECATE +# endif +#endif + #include #include "zlib.h" #ifdef STDC @@ -26,8 +37,8 @@ # include #endif -#ifndef _POSIX_SOURCE -# define _POSIX_SOURCE +#ifndef _POSIX_C_SOURCE +# define _POSIX_C_SOURCE 200112L #endif #include @@ -37,19 +48,13 @@ #if defined(__TURBOC__) || defined(_MSC_VER) || defined(_WIN32) # include +# include #endif -#if defined(_WIN32) || defined(__CYGWIN__) +#if defined(_WIN32) && !defined(WIDECHAR) # define WIDECHAR #endif -#ifdef WINAPI_FAMILY -# define open _open -# define read _read -# define write _write -# define close _close -#endif - #ifdef NO_DEFLATE /* for compatibility with old definition */ # define NO_GZCOMPRESS #endif @@ -73,33 +78,28 @@ #endif #ifndef HAVE_VSNPRINTF -# ifdef MSDOS +# if !defined(NO_vsnprintf) && \ + (defined(MSDOS) || defined(__TURBOC__) || defined(__SASC) || \ + defined(VMS) || defined(__OS400) || defined(__MVS__)) /* vsnprintf may exist on some MS-DOS compilers (DJGPP?), but for now we just assume it doesn't. */ # define NO_vsnprintf # endif -# ifdef __TURBOC__ -# define NO_vsnprintf -# endif # ifdef WIN32 /* In Win32, vsnprintf is available as the "non-ANSI" _vsnprintf. */ -# if !defined(vsnprintf) && !defined(NO_vsnprintf) -# if !defined(_MSC_VER) || ( defined(_MSC_VER) && _MSC_VER < 1500 ) -# define vsnprintf _vsnprintf +# if !defined(_MSC_VER) || ( defined(_MSC_VER) && _MSC_VER < 1500 ) +# ifndef vsnprintf +# define vsnprintf _vsnprintf # endif # endif -# endif -# ifdef __SASC -# define NO_vsnprintf -# endif -# ifdef VMS -# define NO_vsnprintf -# endif -# ifdef __OS400__ -# define NO_vsnprintf -# endif -# ifdef __MVS__ -# define NO_vsnprintf +# elif !defined(__STDC_VERSION__) || __STDC_VERSION__-0 < 199901L +/* Otherwise if C89/90, assume no C99 snprintf() or vsnprintf() */ +# ifndef NO_snprintf +# define NO_snprintf +# endif +# ifndef NO_vsnprintf +# define NO_vsnprintf +# endif # endif #endif @@ -119,8 +119,8 @@ /* gz* functions always use library allocation functions */ #ifndef STDC - extern voidp malloc OF((uInt size)); - extern void free OF((voidpf ptr)); + extern voidp malloc(uInt size); + extern void free(voidpf ptr); #endif /* get errno and strerror definition */ @@ -138,10 +138,10 @@ /* provide prototypes for these when building zlib without LFS */ #if !defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0 - ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *)); - ZEXTERN z_off64_t ZEXPORT gzseek64 OF((gzFile, z_off64_t, int)); - ZEXTERN z_off64_t ZEXPORT gztell64 OF((gzFile)); - ZEXTERN z_off64_t ZEXPORT gzoffset64 OF((gzFile)); + ZEXTERN gzFile ZEXPORT gzopen64(const char *, const char *); + ZEXTERN z_off64_t ZEXPORT gzseek64(gzFile, z_off64_t, int); + ZEXTERN z_off64_t ZEXPORT gztell64(gzFile); + ZEXTERN z_off64_t ZEXPORT gzoffset64(gzFile); #endif /* default memLevel */ @@ -190,6 +190,7 @@ typedef struct { /* just for writing */ int level; /* compression level */ int strategy; /* compression strategy */ + int reset; /* true if a reset is pending after a Z_FINISH */ /* seek request */ z_off64_t skip; /* amount to skip (already rewound if backwards) */ int seek; /* true if seek request pending */ @@ -202,17 +203,13 @@ typedef struct { typedef gz_state FAR *gz_statep; /* shared functions */ -void ZLIB_INTERNAL gz_error OF((gz_statep, int, const char *)); +void ZLIB_INTERNAL gz_error(gz_statep, int, const char *); #if defined UNDER_CE -char ZLIB_INTERNAL *gz_strwinerror OF((DWORD error)); +char ZLIB_INTERNAL *gz_strwinerror(DWORD error); #endif /* GT_OFF(x), where x is an unsigned value, is true if x > maximum z_off64_t value -- needed when comparing unsigned to z_off64_t, which is signed (possible z_off64_t types off_t, off64_t, and long are all signed) */ -#ifdef INT_MAX -# define GT_OFF(x) (sizeof(int) == sizeof(z_off64_t) && (x) > INT_MAX) -#else -unsigned ZLIB_INTERNAL gz_intmax OF((void)); -# define GT_OFF(x) (sizeof(int) == sizeof(z_off64_t) && (x) > gz_intmax()) -#endif +unsigned ZLIB_INTERNAL gz_intmax(void); +#define GT_OFF(x) (sizeof(int) == sizeof(z_off64_t) && (x) > gz_intmax()) diff --git a/deps/zlib/gzlib.c b/deps/zlib/gzlib.c index 4105e6aff..baa3e79d4 100644 --- a/deps/zlib/gzlib.c +++ b/deps/zlib/gzlib.c @@ -1,23 +1,19 @@ /* gzlib.c -- zlib functions common to reading and writing gzip files - * Copyright (C) 2004-2017 Mark Adler + * Copyright (C) 2004-2024 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ #include "gzguts.h" -#if defined(_WIN32) && !defined(__BORLANDC__) && !defined(__MINGW32__) +#if defined(__DJGPP__) +# define LSEEK llseek +#elif defined(_WIN32) && !defined(__BORLANDC__) && !defined(UNDER_CE) # define LSEEK _lseeki64 -#else -#if defined(_LARGEFILE64_SOURCE) && _LFS64_LARGEFILE-0 +#elif defined(_LARGEFILE64_SOURCE) && _LFS64_LARGEFILE-0 # define LSEEK lseek64 #else # define LSEEK lseek #endif -#endif - -/* Local functions */ -local void gz_reset OF((gz_statep)); -local gzFile gz_open OF((const void *, int, const char *)); #if defined UNDER_CE @@ -30,9 +26,7 @@ local gzFile gz_open OF((const void *, int, const char *)); The gz_strwinerror function does not change the current setting of GetLastError. */ -char ZLIB_INTERNAL *gz_strwinerror (error) - DWORD error; -{ +char ZLIB_INTERNAL *gz_strwinerror(DWORD error) { static char buf[1024]; wchar_t *msgbuf; @@ -58,7 +52,7 @@ char ZLIB_INTERNAL *gz_strwinerror (error) msgbuf[chars] = 0; } - wcstombs(buf, msgbuf, chars + 1); + wcstombs(buf, msgbuf, chars + 1); // assumes buf is big enough LocalFree(msgbuf); } else { @@ -72,15 +66,15 @@ char ZLIB_INTERNAL *gz_strwinerror (error) #endif /* UNDER_CE */ /* Reset gzip file state */ -local void gz_reset(state) - gz_statep state; -{ +local void gz_reset(gz_statep state) { state->x.have = 0; /* no output data available */ if (state->mode == GZ_READ) { /* for reading ... */ state->eof = 0; /* not at end of file */ state->past = 0; /* have not read past end yet */ state->how = LOOK; /* look for gzip header */ } + else /* for writing ... */ + state->reset = 0; /* no deflateReset pending */ state->seek = 0; /* no seek request pending */ gz_error(state, Z_OK, NULL); /* clear error */ state->x.pos = 0; /* no uncompressed data yet */ @@ -88,11 +82,7 @@ local void gz_reset(state) } /* Open a gzip file either by name or file descriptor. */ -local gzFile gz_open(path, fd, mode) - const void *path; - int fd; - const char *mode; -{ +local gzFile gz_open(const void *path, int fd, const char *mode) { gz_statep state; z_size_t len; int oflag; @@ -189,11 +179,8 @@ local gzFile gz_open(path, fd, mode) /* save the path name for error messages */ #ifdef WIDECHAR - if (fd == -2) { + if (fd == -2) len = wcstombs(NULL, path, 0); - if (len == (z_size_t)-1) - len = 0; - } else #endif len = strlen((const char *)path); @@ -203,18 +190,21 @@ local gzFile gz_open(path, fd, mode) return NULL; } #ifdef WIDECHAR - if (fd == -2) + if (fd == -2) { if (len) wcstombs(state->path, path, len + 1); else *(state->path) = 0; + } else #endif + { #if !defined(NO_snprintf) && !defined(NO_vsnprintf) (void)snprintf(state->path, len + 1, "%s", (const char *)path); #else strcpy(state->path, path); #endif + } /* compute the flags for open() */ oflag = @@ -238,11 +228,14 @@ local gzFile gz_open(path, fd, mode) O_APPEND))); /* open the file with the appropriate flags (or just use fd) */ - state->fd = fd > -1 ? fd : ( + if (fd == -1) + state->fd = open((const char *)path, oflag, 0666); #ifdef WIDECHAR - fd == -2 ? _wopen(path, oflag, 0666) : + else if (fd == -2) + state->fd = _wopen(path, oflag, _S_IREAD | _S_IWRITE); #endif - open((const char *)path, oflag, 0666)); + else + state->fd = fd; if (state->fd == -1) { free(state->path); free(state); @@ -267,26 +260,17 @@ local gzFile gz_open(path, fd, mode) } /* -- see zlib.h -- */ -gzFile ZEXPORT gzopen(path, mode) - const char *path; - const char *mode; -{ +gzFile ZEXPORT gzopen(const char *path, const char *mode) { return gz_open(path, -1, mode); } /* -- see zlib.h -- */ -gzFile ZEXPORT gzopen64(path, mode) - const char *path; - const char *mode; -{ +gzFile ZEXPORT gzopen64(const char *path, const char *mode) { return gz_open(path, -1, mode); } /* -- see zlib.h -- */ -gzFile ZEXPORT gzdopen(fd, mode) - int fd; - const char *mode; -{ +gzFile ZEXPORT gzdopen(int fd, const char *mode) { char *path; /* identifier for error messages */ gzFile gz; @@ -304,19 +288,13 @@ gzFile ZEXPORT gzdopen(fd, mode) /* -- see zlib.h -- */ #ifdef WIDECHAR -gzFile ZEXPORT gzopen_w(path, mode) - const wchar_t *path; - const char *mode; -{ +gzFile ZEXPORT gzopen_w(const wchar_t *path, const char *mode) { return gz_open(path, -2, mode); } #endif /* -- see zlib.h -- */ -int ZEXPORT gzbuffer(file, size) - gzFile file; - unsigned size; -{ +int ZEXPORT gzbuffer(gzFile file, unsigned size) { gz_statep state; /* get internal structure and check integrity */ @@ -333,16 +311,14 @@ int ZEXPORT gzbuffer(file, size) /* check and set requested size */ if ((size << 1) < size) return -1; /* need to be able to double it */ - if (size < 2) - size = 2; /* need two bytes to check magic header */ + if (size < 8) + size = 8; /* needed to behave well with flushing */ state->want = size; return 0; } /* -- see zlib.h -- */ -int ZEXPORT gzrewind(file) - gzFile file; -{ +int ZEXPORT gzrewind(gzFile file) { gz_statep state; /* get internal structure */ @@ -363,11 +339,7 @@ int ZEXPORT gzrewind(file) } /* -- see zlib.h -- */ -z_off64_t ZEXPORT gzseek64(file, offset, whence) - gzFile file; - z_off64_t offset; - int whence; -{ +z_off64_t ZEXPORT gzseek64(gzFile file, z_off64_t offset, int whence) { unsigned n; z_off64_t ret; gz_statep state; @@ -397,7 +369,7 @@ z_off64_t ZEXPORT gzseek64(file, offset, whence) /* if within raw area while reading, just go there */ if (state->mode == GZ_READ && state->how == COPY && state->x.pos + offset >= 0) { - ret = LSEEK(state->fd, offset - state->x.have, SEEK_CUR); + ret = LSEEK(state->fd, offset - (z_off64_t)state->x.have, SEEK_CUR); if (ret == -1) return -1; state->x.have = 0; @@ -440,11 +412,7 @@ z_off64_t ZEXPORT gzseek64(file, offset, whence) } /* -- see zlib.h -- */ -z_off_t ZEXPORT gzseek(file, offset, whence) - gzFile file; - z_off_t offset; - int whence; -{ +z_off_t ZEXPORT gzseek(gzFile file, z_off_t offset, int whence) { z_off64_t ret; ret = gzseek64(file, (z_off64_t)offset, whence); @@ -452,9 +420,7 @@ z_off_t ZEXPORT gzseek(file, offset, whence) } /* -- see zlib.h -- */ -z_off64_t ZEXPORT gztell64(file) - gzFile file; -{ +z_off64_t ZEXPORT gztell64(gzFile file) { gz_statep state; /* get internal structure and check integrity */ @@ -469,9 +435,7 @@ z_off64_t ZEXPORT gztell64(file) } /* -- see zlib.h -- */ -z_off_t ZEXPORT gztell(file) - gzFile file; -{ +z_off_t ZEXPORT gztell(gzFile file) { z_off64_t ret; ret = gztell64(file); @@ -479,9 +443,7 @@ z_off_t ZEXPORT gztell(file) } /* -- see zlib.h -- */ -z_off64_t ZEXPORT gzoffset64(file) - gzFile file; -{ +z_off64_t ZEXPORT gzoffset64(gzFile file) { z_off64_t offset; gz_statep state; @@ -502,9 +464,7 @@ z_off64_t ZEXPORT gzoffset64(file) } /* -- see zlib.h -- */ -z_off_t ZEXPORT gzoffset(file) - gzFile file; -{ +z_off_t ZEXPORT gzoffset(gzFile file) { z_off64_t ret; ret = gzoffset64(file); @@ -512,9 +472,7 @@ z_off_t ZEXPORT gzoffset(file) } /* -- see zlib.h -- */ -int ZEXPORT gzeof(file) - gzFile file; -{ +int ZEXPORT gzeof(gzFile file) { gz_statep state; /* get internal structure and check integrity */ @@ -529,10 +487,7 @@ int ZEXPORT gzeof(file) } /* -- see zlib.h -- */ -const char * ZEXPORT gzerror(file, errnum) - gzFile file; - int *errnum; -{ +const char * ZEXPORT gzerror(gzFile file, int *errnum) { gz_statep state; /* get internal structure and check integrity */ @@ -550,9 +505,7 @@ const char * ZEXPORT gzerror(file, errnum) } /* -- see zlib.h -- */ -void ZEXPORT gzclearerr(file) - gzFile file; -{ +void ZEXPORT gzclearerr(gzFile file) { gz_statep state; /* get internal structure and check integrity */ @@ -576,11 +529,7 @@ void ZEXPORT gzclearerr(file) memory). Simply save the error message as a static string. If there is an allocation failure constructing the error message, then convert the error to out of memory. */ -void ZLIB_INTERNAL gz_error(state, err, msg) - gz_statep state; - int err; - const char *msg; -{ +void ZLIB_INTERNAL gz_error(gz_statep state, int err, const char *msg) { /* free previously allocated message and clear */ if (state->msg != NULL) { if (state->err != Z_MEM_ERROR) @@ -617,21 +566,20 @@ void ZLIB_INTERNAL gz_error(state, err, msg) #endif } -#ifndef INT_MAX /* portably return maximum value for an int (when limits.h presumed not available) -- we need to do this to cover cases where 2's complement not used, since C standard permits 1's complement and sign-bit representations, otherwise we could just use ((unsigned)-1) >> 1 */ -unsigned ZLIB_INTERNAL gz_intmax() -{ - unsigned p, q; - - p = 1; +unsigned ZLIB_INTERNAL gz_intmax(void) { +#ifdef INT_MAX + return INT_MAX; +#else + unsigned p = 1, q; do { q = p; p <<= 1; p++; } while (p > q); return q >> 1; -} #endif +} diff --git a/deps/zlib/gzread.c b/deps/zlib/gzread.c index 956b91ea7..2d4ca4290 100644 --- a/deps/zlib/gzread.c +++ b/deps/zlib/gzread.c @@ -1,29 +1,16 @@ /* gzread.c -- zlib functions for reading gzip files - * Copyright (C) 2004, 2005, 2010, 2011, 2012, 2013, 2016 Mark Adler + * Copyright (C) 2004-2017 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ #include "gzguts.h" -/* Local functions */ -local int gz_load OF((gz_statep, unsigned char *, unsigned, unsigned *)); -local int gz_avail OF((gz_statep)); -local int gz_look OF((gz_statep)); -local int gz_decomp OF((gz_statep)); -local int gz_fetch OF((gz_statep)); -local int gz_skip OF((gz_statep, z_off64_t)); -local z_size_t gz_read OF((gz_statep, voidp, z_size_t)); - /* Use read() to load a buffer -- return -1 on error, otherwise 0. Read from state->fd, and update state->eof, state->err, and state->msg as appropriate. This function needs to loop on read(), since read() is not guaranteed to read the number of bytes requested, depending on the type of descriptor. */ -local int gz_load(state, buf, len, have) - gz_statep state; - unsigned char *buf; - unsigned len; - unsigned *have; -{ +local int gz_load(gz_statep state, unsigned char *buf, unsigned len, + unsigned *have) { int ret; unsigned get, max = ((unsigned)-1 >> 2) + 1; @@ -53,9 +40,7 @@ local int gz_load(state, buf, len, have) If strm->avail_in != 0, then the current data is moved to the beginning of the input buffer, and then the remainder of the buffer is loaded with the available data from the input file. */ -local int gz_avail(state) - gz_statep state; -{ +local int gz_avail(gz_statep state) { unsigned got; z_streamp strm = &(state->strm); @@ -88,9 +73,7 @@ local int gz_avail(state) case, all further file reads will be directly to either the output buffer or a user buffer. If decompressing, the inflate state will be initialized. gz_look() will return 0 on success or -1 on failure. */ -local int gz_look(state) - gz_statep state; -{ +local int gz_look(gz_statep state) { z_streamp strm = &(state->strm); /* allocate read buffers and inflate memory */ @@ -157,11 +140,9 @@ local int gz_look(state) the output buffer is larger than the input buffer, which also assures space for gzungetc() */ state->x.next = state->out; - if (strm->avail_in) { - memcpy(state->x.next, strm->next_in, strm->avail_in); - state->x.have = strm->avail_in; - strm->avail_in = 0; - } + memcpy(state->x.next, strm->next_in, strm->avail_in); + state->x.have = strm->avail_in; + strm->avail_in = 0; state->how = COPY; state->direct = 1; return 0; @@ -172,9 +153,7 @@ local int gz_look(state) data. If the gzip stream completes, state->how is reset to LOOK to look for the next gzip stream or raw data, once state->x.have is depleted. Returns 0 on success, -1 on failure. */ -local int gz_decomp(state) - gz_statep state; -{ +local int gz_decomp(gz_statep state) { int ret = Z_OK; unsigned had; z_streamp strm = &(state->strm); @@ -226,9 +205,7 @@ local int gz_decomp(state) looked for to determine whether to copy or decompress. Returns -1 on error, otherwise 0. gz_fetch() will leave state->how as COPY or GZIP unless the end of the input file has been reached and all data has been processed. */ -local int gz_fetch(state) - gz_statep state; -{ +local int gz_fetch(gz_statep state) { z_streamp strm = &(state->strm); do { @@ -256,10 +233,7 @@ local int gz_fetch(state) } /* Skip len uncompressed bytes of output. Return -1 on error, 0 on success. */ -local int gz_skip(state, len) - gz_statep state; - z_off64_t len; -{ +local int gz_skip(gz_statep state, z_off64_t len) { unsigned n; /* skip over len bytes or reach end-of-file, whichever comes first */ @@ -291,11 +265,7 @@ local int gz_skip(state, len) input. Return the number of bytes read. If zero is returned, either the end of file was reached, or there was an error. state->err must be consulted in that case to determine which. */ -local z_size_t gz_read(state, buf, len) - gz_statep state; - voidp buf; - z_size_t len; -{ +local z_size_t gz_read(gz_statep state, voidp buf, z_size_t len) { z_size_t got; unsigned n; @@ -314,9 +284,9 @@ local z_size_t gz_read(state, buf, len) got = 0; do { /* set n to the maximum amount of len that fits in an unsigned int */ - n = -1; + n = (unsigned)-1; if (n > len) - n = len; + n = (unsigned)len; /* first just try copying data from the output buffer */ if (state->x.have) { @@ -372,11 +342,7 @@ local z_size_t gz_read(state, buf, len) } /* -- see zlib.h -- */ -int ZEXPORT gzread(file, buf, len) - gzFile file; - voidp buf; - unsigned len; -{ +int ZEXPORT gzread(gzFile file, voidp buf, unsigned len) { gz_statep state; /* get internal structure */ @@ -397,7 +363,7 @@ int ZEXPORT gzread(file, buf, len) } /* read len or fewer bytes to buf */ - len = gz_read(state, buf, len); + len = (unsigned)gz_read(state, buf, len); /* check for an error */ if (len == 0 && state->err != Z_OK && state->err != Z_BUF_ERROR) @@ -408,12 +374,8 @@ int ZEXPORT gzread(file, buf, len) } /* -- see zlib.h -- */ -z_size_t ZEXPORT gzfread(buf, size, nitems, file) - voidp buf; - z_size_t size; - z_size_t nitems; - gzFile file; -{ +z_size_t ZEXPORT gzfread(voidp buf, z_size_t size, z_size_t nitems, + gzFile file) { z_size_t len; gz_statep state; @@ -444,10 +406,7 @@ z_size_t ZEXPORT gzfread(buf, size, nitems, file) #else # undef gzgetc #endif -int ZEXPORT gzgetc(file) - gzFile file; -{ - int ret; +int ZEXPORT gzgetc(gzFile file) { unsigned char buf[1]; gz_statep state; @@ -469,21 +428,15 @@ int ZEXPORT gzgetc(file) } /* nothing there -- try gz_read() */ - ret = gz_read(state, buf, 1); - return ret < 1 ? -1 : buf[0]; + return gz_read(state, buf, 1) < 1 ? -1 : buf[0]; } -int ZEXPORT gzgetc_(file) -gzFile file; -{ +int ZEXPORT gzgetc_(gzFile file) { return gzgetc(file); } /* -- see zlib.h -- */ -int ZEXPORT gzungetc(c, file) - int c; - gzFile file; -{ +int ZEXPORT gzungetc(int c, gzFile file) { gz_statep state; /* get internal structure */ @@ -491,6 +444,10 @@ int ZEXPORT gzungetc(c, file) return -1; state = (gz_statep)file; + /* in case this was just opened, set up the input buffer */ + if (state->mode == GZ_READ && state->how == LOOK && state->x.have == 0) + (void)gz_look(state); + /* check that we're reading and that there's no (serious) error */ if (state->mode != GZ_READ || (state->err != Z_OK && state->err != Z_BUF_ERROR)) @@ -540,11 +497,7 @@ int ZEXPORT gzungetc(c, file) } /* -- see zlib.h -- */ -char * ZEXPORT gzgets(file, buf, len) - gzFile file; - char *buf; - int len; -{ +char * ZEXPORT gzgets(gzFile file, char *buf, int len) { unsigned left, n; char *str; unsigned char *eol; @@ -604,9 +557,7 @@ char * ZEXPORT gzgets(file, buf, len) } /* -- see zlib.h -- */ -int ZEXPORT gzdirect(file) - gzFile file; -{ +int ZEXPORT gzdirect(gzFile file) { gz_statep state; /* get internal structure */ @@ -624,9 +575,7 @@ int ZEXPORT gzdirect(file) } /* -- see zlib.h -- */ -int ZEXPORT gzclose_r(file) - gzFile file; -{ +int ZEXPORT gzclose_r(gzFile file) { int ret, err; gz_statep state; diff --git a/deps/zlib/gzwrite.c b/deps/zlib/gzwrite.c index c7b5651d7..435b4621b 100644 --- a/deps/zlib/gzwrite.c +++ b/deps/zlib/gzwrite.c @@ -1,22 +1,14 @@ /* gzwrite.c -- zlib functions for writing gzip files - * Copyright (C) 2004-2017 Mark Adler + * Copyright (C) 2004-2019 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ #include "gzguts.h" -/* Local functions */ -local int gz_init OF((gz_statep)); -local int gz_comp OF((gz_statep, int)); -local int gz_zero OF((gz_statep, z_off64_t)); -local z_size_t gz_write OF((gz_statep, voidpc, z_size_t)); - /* Initialize state for writing a gzip file. Mark initialization by setting state->size to non-zero. Return -1 on a memory allocation failure, or 0 on success. */ -local int gz_init(state) - gz_statep state; -{ +local int gz_init(gz_statep state) { int ret; z_streamp strm = &(state->strm); @@ -70,10 +62,7 @@ local int gz_init(state) deflate() flush value. If flush is Z_FINISH, then the deflate() state is reset to start a new gzip stream. If gz->direct is true, then simply write to the output file without compressing, and ignore flush. */ -local int gz_comp(state, flush) - gz_statep state; - int flush; -{ +local int gz_comp(gz_statep state, int flush) { int ret, writ; unsigned have, put, max = ((unsigned)-1 >> 2) + 1; z_streamp strm = &(state->strm); @@ -97,6 +86,15 @@ local int gz_comp(state, flush) return 0; } + /* check for a pending reset */ + if (state->reset) { + /* don't start a new gzip member unless there is data to write */ + if (strm->avail_in == 0) + return 0; + deflateReset(strm); + state->reset = 0; + } + /* run deflate() on provided input until it produces no more output */ ret = Z_OK; do { @@ -134,7 +132,7 @@ local int gz_comp(state, flush) /* if that completed a deflate stream, allow another to start */ if (flush == Z_FINISH) - deflateReset(strm); + state->reset = 1; /* all done, no errors */ return 0; @@ -142,10 +140,7 @@ local int gz_comp(state, flush) /* Compress len zeros to output. Return -1 on a write error or memory allocation failure by gz_comp(), or 0 on success. */ -local int gz_zero(state, len) - gz_statep state; - z_off64_t len; -{ +local int gz_zero(gz_statep state, z_off64_t len) { int first; unsigned n; z_streamp strm = &(state->strm); @@ -175,11 +170,7 @@ local int gz_zero(state, len) /* Write len bytes from buf to file. Return the number of bytes written. If the returned value is less than len, then there was an error. */ -local z_size_t gz_write(state, buf, len) - gz_statep state; - voidpc buf; - z_size_t len; -{ +local z_size_t gz_write(gz_statep state, voidpc buf, z_size_t len) { z_size_t put = len; /* if len is zero, avoid unnecessary operations */ @@ -209,7 +200,7 @@ local z_size_t gz_write(state, buf, len) state->in); copy = state->size - have; if (copy > len) - copy = len; + copy = (unsigned)len; memcpy(state->in + have, buf, copy); state->strm.avail_in += copy; state->x.pos += copy; @@ -229,7 +220,7 @@ local z_size_t gz_write(state, buf, len) do { unsigned n = (unsigned)-1; if (n > len) - n = len; + n = (unsigned)len; state->strm.avail_in = n; state->x.pos += n; if (gz_comp(state, Z_NO_FLUSH) == -1) @@ -243,11 +234,7 @@ local z_size_t gz_write(state, buf, len) } /* -- see zlib.h -- */ -int ZEXPORT gzwrite(file, buf, len) - gzFile file; - voidpc buf; - unsigned len; -{ +int ZEXPORT gzwrite(gzFile file, voidpc buf, unsigned len) { gz_statep state; /* get internal structure */ @@ -271,12 +258,8 @@ int ZEXPORT gzwrite(file, buf, len) } /* -- see zlib.h -- */ -z_size_t ZEXPORT gzfwrite(buf, size, nitems, file) - voidpc buf; - z_size_t size; - z_size_t nitems; - gzFile file; -{ +z_size_t ZEXPORT gzfwrite(voidpc buf, z_size_t size, z_size_t nitems, + gzFile file) { z_size_t len; gz_statep state; @@ -301,10 +284,7 @@ z_size_t ZEXPORT gzfwrite(buf, size, nitems, file) } /* -- see zlib.h -- */ -int ZEXPORT gzputc(file, c) - gzFile file; - int c; -{ +int ZEXPORT gzputc(gzFile file, int c) { unsigned have; unsigned char buf[1]; gz_statep state; @@ -349,12 +329,8 @@ int ZEXPORT gzputc(file, c) } /* -- see zlib.h -- */ -int ZEXPORT gzputs(file, str) - gzFile file; - const char *str; -{ - int ret; - z_size_t len; +int ZEXPORT gzputs(gzFile file, const char *s) { + z_size_t len, put; gz_statep state; /* get internal structure */ @@ -367,17 +343,20 @@ int ZEXPORT gzputs(file, str) return -1; /* write string */ - len = strlen(str); - ret = gz_write(state, str, len); - return ret == 0 && len != 0 ? -1 : ret; + len = strlen(s); + if ((int)len < 0 || (unsigned)len != len) { + gz_error(state, Z_STREAM_ERROR, "string length does not fit in int"); + return -1; + } + put = gz_write(state, s, len); + return put < len ? -1 : (int)len; } #if defined(STDC) || defined(Z_HAVE_STDARG_H) #include /* -- see zlib.h -- */ -int ZEXPORTVA gzvprintf(gzFile file, const char *format, va_list va) -{ +int ZEXPORTVA gzvprintf(gzFile file, const char *format, va_list va) { int len; unsigned left; char *next; @@ -441,15 +420,14 @@ int ZEXPORTVA gzvprintf(gzFile file, const char *format, va_list va) strm->avail_in = state->size; if (gz_comp(state, Z_NO_FLUSH) == -1) return state->err; - memcpy(state->in, state->in + state->size, left); + memmove(state->in, state->in + state->size, left); strm->next_in = state->in; strm->avail_in = left; } return len; } -int ZEXPORTVA gzprintf(gzFile file, const char *format, ...) -{ +int ZEXPORTVA gzprintf(gzFile file, const char *format, ...) { va_list va; int ret; @@ -462,13 +440,10 @@ int ZEXPORTVA gzprintf(gzFile file, const char *format, ...) #else /* !STDC && !Z_HAVE_STDARG_H */ /* -- see zlib.h -- */ -int ZEXPORTVA gzprintf (file, format, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, - a11, a12, a13, a14, a15, a16, a17, a18, a19, a20) - gzFile file; - const char *format; - int a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, - a11, a12, a13, a14, a15, a16, a17, a18, a19, a20; -{ +int ZEXPORTVA gzprintf(gzFile file, const char *format, int a1, int a2, int a3, + int a4, int a5, int a6, int a7, int a8, int a9, int a10, + int a11, int a12, int a13, int a14, int a15, int a16, + int a17, int a18, int a19, int a20) { unsigned len, left; char *next; gz_statep state; @@ -540,7 +515,7 @@ int ZEXPORTVA gzprintf (file, format, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, strm->avail_in = state->size; if (gz_comp(state, Z_NO_FLUSH) == -1) return state->err; - memcpy(state->in, state->in + state->size, left); + memmove(state->in, state->in + state->size, left); strm->next_in = state->in; strm->avail_in = left; } @@ -550,10 +525,7 @@ int ZEXPORTVA gzprintf (file, format, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, #endif /* -- see zlib.h -- */ -int ZEXPORT gzflush(file, flush) - gzFile file; - int flush; -{ +int ZEXPORT gzflush(gzFile file, int flush) { gz_statep state; /* get internal structure */ @@ -582,11 +554,7 @@ int ZEXPORT gzflush(file, flush) } /* -- see zlib.h -- */ -int ZEXPORT gzsetparams(file, level, strategy) - gzFile file; - int level; - int strategy; -{ +int ZEXPORT gzsetparams(gzFile file, int level, int strategy) { gz_statep state; z_streamp strm; @@ -597,7 +565,7 @@ int ZEXPORT gzsetparams(file, level, strategy) strm = &(state->strm); /* check that we're writing and that there's no error */ - if (state->mode != GZ_WRITE || state->err != Z_OK) + if (state->mode != GZ_WRITE || state->err != Z_OK || state->direct) return Z_STREAM_ERROR; /* if no change is requested, then do nothing */ @@ -624,9 +592,7 @@ int ZEXPORT gzsetparams(file, level, strategy) } /* -- see zlib.h -- */ -int ZEXPORT gzclose_w(file) - gzFile file; -{ +int ZEXPORT gzclose_w(gzFile file) { int ret = Z_OK; gz_statep state; diff --git a/deps/zlib/infback.c b/deps/zlib/infback.c index 59679ecbf..6c7a034a7 100644 --- a/deps/zlib/infback.c +++ b/deps/zlib/infback.c @@ -1,5 +1,5 @@ /* infback.c -- inflate using a call-back interface - * Copyright (C) 1995-2016 Mark Adler + * Copyright (C) 1995-2022 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -15,9 +15,6 @@ #include "inflate.h" #include "inffast.h" -/* function prototypes */ -local void fixedtables OF((struct inflate_state FAR *state)); - /* strm provides memory allocation functions in zalloc and zfree, or Z_NULL to use the library memory allocation functions. @@ -25,13 +22,9 @@ local void fixedtables OF((struct inflate_state FAR *state)); windowBits is in the range 8..15, and window is a user-supplied window and output buffer that is 2**windowBits bytes. */ -int ZEXPORT inflateBackInit_(strm, windowBits, window, version, stream_size) -z_streamp strm; -int windowBits; -unsigned char FAR *window; -const char *version; -int stream_size; -{ +int ZEXPORT inflateBackInit_(z_streamp strm, int windowBits, + unsigned char FAR *window, const char *version, + int stream_size) { struct inflate_state FAR *state; if (version == Z_NULL || version[0] != ZLIB_VERSION[0] || @@ -53,7 +46,7 @@ int stream_size; #ifdef Z_SOLO return Z_STREAM_ERROR; #else - strm->zfree = zcfree; + strm->zfree = zcfree; #endif state = (struct inflate_state FAR *)ZALLOC(strm, 1, sizeof(struct inflate_state)); @@ -66,6 +59,7 @@ int stream_size; state->window = window; state->wnext = 0; state->whave = 0; + state->sane = 1; return Z_OK; } @@ -79,9 +73,7 @@ int stream_size; used for threaded applications, since the rewriting of the tables and virgin may not be thread-safe. */ -local void fixedtables(state) -struct inflate_state FAR *state; -{ +local void fixedtables(struct inflate_state FAR *state) { #ifdef BUILDFIXED static int virgin = 1; static code *lenfix, *distfix; @@ -247,13 +239,8 @@ struct inflate_state FAR *state; inflateBack() can also return Z_STREAM_ERROR if the input parameters are not correct, i.e. strm is Z_NULL or the state was not initialized. */ -int ZEXPORT inflateBack(strm, in, in_desc, out, out_desc) -z_streamp strm; -in_func in; -void FAR *in_desc; -out_func out; -void FAR *out_desc; -{ +int ZEXPORT inflateBack(z_streamp strm, in_func in, void FAR *in_desc, + out_func out, void FAR *out_desc) { struct inflate_state FAR *state; z_const unsigned char FAR *next; /* next input */ unsigned char FAR *put; /* next output */ @@ -317,7 +304,7 @@ void FAR *out_desc; state->mode = TABLE; break; case 3: - strm->msg = (char *)"invalid block type"; + strm->msg = (z_const char *)"invalid block type"; state->mode = BAD; } DROPBITS(2); @@ -328,7 +315,7 @@ void FAR *out_desc; BYTEBITS(); /* go to byte boundary */ NEEDBITS(32); if ((hold & 0xffff) != ((hold >> 16) ^ 0xffff)) { - strm->msg = (char *)"invalid stored block lengths"; + strm->msg = (z_const char *)"invalid stored block lengths"; state->mode = BAD; break; } @@ -366,7 +353,7 @@ void FAR *out_desc; DROPBITS(4); #ifndef PKZIP_BUG_WORKAROUND if (state->nlen > 286 || state->ndist > 30) { - strm->msg = (char *)"too many length or distance symbols"; + strm->msg = (z_const char *)"too many length or distance symbols"; state->mode = BAD; break; } @@ -388,7 +375,7 @@ void FAR *out_desc; ret = inflate_table(CODES, state->lens, 19, &(state->next), &(state->lenbits), state->work); if (ret) { - strm->msg = (char *)"invalid code lengths set"; + strm->msg = (z_const char *)"invalid code lengths set"; state->mode = BAD; break; } @@ -411,7 +398,7 @@ void FAR *out_desc; NEEDBITS(here.bits + 2); DROPBITS(here.bits); if (state->have == 0) { - strm->msg = (char *)"invalid bit length repeat"; + strm->msg = (z_const char *)"invalid bit length repeat"; state->mode = BAD; break; } @@ -434,7 +421,7 @@ void FAR *out_desc; DROPBITS(7); } if (state->have + copy > state->nlen + state->ndist) { - strm->msg = (char *)"invalid bit length repeat"; + strm->msg = (z_const char *)"invalid bit length repeat"; state->mode = BAD; break; } @@ -448,7 +435,7 @@ void FAR *out_desc; /* check for end-of-block code (better have one) */ if (state->lens[256] == 0) { - strm->msg = (char *)"invalid code -- missing end-of-block"; + strm->msg = (z_const char *)"invalid code -- missing end-of-block"; state->mode = BAD; break; } @@ -462,7 +449,7 @@ void FAR *out_desc; ret = inflate_table(LENS, state->lens, state->nlen, &(state->next), &(state->lenbits), state->work); if (ret) { - strm->msg = (char *)"invalid literal/lengths set"; + strm->msg = (z_const char *)"invalid literal/lengths set"; state->mode = BAD; break; } @@ -471,12 +458,13 @@ void FAR *out_desc; ret = inflate_table(DISTS, state->lens + state->nlen, state->ndist, &(state->next), &(state->distbits), state->work); if (ret) { - strm->msg = (char *)"invalid distances set"; + strm->msg = (z_const char *)"invalid distances set"; state->mode = BAD; break; } Tracev((stderr, "inflate: codes ok\n")); state->mode = LEN; + /* fallthrough */ case LEN: /* use inflate_fast() if we have enough input and output */ @@ -529,7 +517,7 @@ void FAR *out_desc; /* invalid code */ if (here.op & 64) { - strm->msg = (char *)"invalid literal/length code"; + strm->msg = (z_const char *)"invalid literal/length code"; state->mode = BAD; break; } @@ -561,7 +549,7 @@ void FAR *out_desc; } DROPBITS(here.bits); if (here.op & 64) { - strm->msg = (char *)"invalid distance code"; + strm->msg = (z_const char *)"invalid distance code"; state->mode = BAD; break; } @@ -576,7 +564,7 @@ void FAR *out_desc; } if (state->offset > state->wsize - (state->whave < state->wsize ? left : 0)) { - strm->msg = (char *)"invalid distance too far back"; + strm->msg = (z_const char *)"invalid distance too far back"; state->mode = BAD; break; } @@ -604,33 +592,33 @@ void FAR *out_desc; break; case DONE: - /* inflate stream terminated properly -- write leftover output */ + /* inflate stream terminated properly */ ret = Z_STREAM_END; - if (left < state->wsize) { - if (out(out_desc, state->window, state->wsize - left)) - ret = Z_BUF_ERROR; - } goto inf_leave; case BAD: ret = Z_DATA_ERROR; goto inf_leave; - default: /* can't happen, but makes compilers happy */ + default: + /* can't happen, but makes compilers happy */ ret = Z_STREAM_ERROR; goto inf_leave; } - /* Return unused input */ + /* Write leftover output and return unused input */ inf_leave: + if (left < state->wsize) { + if (out(out_desc, state->window, state->wsize - left) && + ret == Z_STREAM_END) + ret = Z_BUF_ERROR; + } strm->next_in = next; strm->avail_in = have; return ret; } -int ZEXPORT inflateBackEnd(strm) -z_streamp strm; -{ +int ZEXPORT inflateBackEnd(z_streamp strm) { if (strm == Z_NULL || strm->state == Z_NULL || strm->zfree == (free_func)0) return Z_STREAM_ERROR; ZFREE(strm, strm->state); diff --git a/deps/zlib/inffast.c b/deps/zlib/inffast.c index 0dbd1dbc0..f7b550b8b 100644 --- a/deps/zlib/inffast.c +++ b/deps/zlib/inffast.c @@ -47,10 +47,7 @@ requires strm->avail_out >= 258 for each loop to avoid checking for output space. */ -void ZLIB_INTERNAL inflate_fast(strm, start) -z_streamp strm; -unsigned start; /* inflate()'s starting value for strm->avail_out */ -{ +void ZLIB_INTERNAL inflate_fast(z_streamp strm, unsigned start) { struct inflate_state FAR *state; z_const unsigned char FAR *in; /* local strm->next_in */ z_const unsigned char FAR *last; /* have enough input while in < last */ @@ -70,7 +67,7 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */ code const FAR *dcode; /* local strm->distcode */ unsigned lmask; /* mask for first level of length codes */ unsigned dmask; /* mask for first level of distance codes */ - code here; /* retrieved table entry */ + code const *here; /* retrieved table entry */ unsigned op; /* code bits, operation, extra bits, or */ /* window position, window bytes to copy */ unsigned len; /* match length, unused bytes */ @@ -107,20 +104,20 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */ hold += (unsigned long)(*in++) << bits; bits += 8; } - here = lcode[hold & lmask]; + here = lcode + (hold & lmask); dolen: - op = (unsigned)(here.bits); + op = (unsigned)(here->bits); hold >>= op; bits -= op; - op = (unsigned)(here.op); + op = (unsigned)(here->op); if (op == 0) { /* literal */ - Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ? + Tracevv((stderr, here->val >= 0x20 && here->val < 0x7f ? "inflate: literal '%c'\n" : - "inflate: literal 0x%02x\n", here.val)); - *out++ = (unsigned char)(here.val); + "inflate: literal 0x%02x\n", here->val)); + *out++ = (unsigned char)(here->val); } else if (op & 16) { /* length base */ - len = (unsigned)(here.val); + len = (unsigned)(here->val); op &= 15; /* number of extra bits */ if (op) { if (bits < op) { @@ -138,14 +135,14 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */ hold += (unsigned long)(*in++) << bits; bits += 8; } - here = dcode[hold & dmask]; + here = dcode + (hold & dmask); dodist: - op = (unsigned)(here.bits); + op = (unsigned)(here->bits); hold >>= op; bits -= op; - op = (unsigned)(here.op); + op = (unsigned)(here->op); if (op & 16) { /* distance base */ - dist = (unsigned)(here.val); + dist = (unsigned)(here->val); op &= 15; /* number of extra bits */ if (bits < op) { hold += (unsigned long)(*in++) << bits; @@ -158,7 +155,7 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */ dist += (unsigned)hold & ((1U << op) - 1); #ifdef INFLATE_STRICT if (dist > dmax) { - strm->msg = (char *)"invalid distance too far back"; + strm->msg = (z_const char *)"invalid distance too far back"; state->mode = BAD; break; } @@ -172,7 +169,7 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */ if (op > whave) { if (state->sane) { strm->msg = - (char *)"invalid distance too far back"; + (z_const char *)"invalid distance too far back"; state->mode = BAD; break; } @@ -264,17 +261,17 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */ } } else if ((op & 64) == 0) { /* 2nd level distance code */ - here = dcode[here.val + (hold & ((1U << op) - 1))]; + here = dcode + here->val + (hold & ((1U << op) - 1)); goto dodist; } else { - strm->msg = (char *)"invalid distance code"; + strm->msg = (z_const char *)"invalid distance code"; state->mode = BAD; break; } } else if ((op & 64) == 0) { /* 2nd level length code */ - here = lcode[here.val + (hold & ((1U << op) - 1))]; + here = lcode + here->val + (hold & ((1U << op) - 1)); goto dolen; } else if (op & 32) { /* end-of-block */ @@ -283,7 +280,7 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */ break; } else { - strm->msg = (char *)"invalid literal/length code"; + strm->msg = (z_const char *)"invalid literal/length code"; state->mode = BAD; break; } diff --git a/deps/zlib/inffast.h b/deps/zlib/inffast.h index e5c1aa4ca..49c6d156c 100644 --- a/deps/zlib/inffast.h +++ b/deps/zlib/inffast.h @@ -8,4 +8,4 @@ subject to change. Applications should only use zlib.h. */ -void ZLIB_INTERNAL inflate_fast OF((z_streamp strm, unsigned start)); +void ZLIB_INTERNAL inflate_fast(z_streamp strm, unsigned start); diff --git a/deps/zlib/inflate.c b/deps/zlib/inflate.c index ac333e8c2..4feac091e 100644 --- a/deps/zlib/inflate.c +++ b/deps/zlib/inflate.c @@ -1,5 +1,5 @@ /* inflate.c -- zlib decompression - * Copyright (C) 1995-2016 Mark Adler + * Copyright (C) 1995-2022 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -91,20 +91,7 @@ # endif #endif -/* function prototypes */ -local int inflateStateCheck OF((z_streamp strm)); -local void fixedtables OF((struct inflate_state FAR *state)); -local int updatewindow OF((z_streamp strm, const unsigned char FAR *end, - unsigned copy)); -#ifdef BUILDFIXED - void makefixed OF((void)); -#endif -local unsigned syncsearch OF((unsigned FAR *have, const unsigned char FAR *buf, - unsigned len)); - -local int inflateStateCheck(strm) -z_streamp strm; -{ +local int inflateStateCheck(z_streamp strm) { struct inflate_state FAR *state; if (strm == Z_NULL || strm->zalloc == (alloc_func)0 || strm->zfree == (free_func)0) @@ -116,9 +103,7 @@ z_streamp strm; return 0; } -int ZEXPORT inflateResetKeep(strm) -z_streamp strm; -{ +int ZEXPORT inflateResetKeep(z_streamp strm) { struct inflate_state FAR *state; if (inflateStateCheck(strm)) return Z_STREAM_ERROR; @@ -130,6 +115,7 @@ z_streamp strm; state->mode = HEAD; state->last = 0; state->havedict = 0; + state->flags = -1; state->dmax = 32768U; state->head = Z_NULL; state->hold = 0; @@ -141,9 +127,7 @@ z_streamp strm; return Z_OK; } -int ZEXPORT inflateReset(strm) -z_streamp strm; -{ +int ZEXPORT inflateReset(z_streamp strm) { struct inflate_state FAR *state; if (inflateStateCheck(strm)) return Z_STREAM_ERROR; @@ -154,10 +138,7 @@ z_streamp strm; return inflateResetKeep(strm); } -int ZEXPORT inflateReset2(strm, windowBits) -z_streamp strm; -int windowBits; -{ +int ZEXPORT inflateReset2(z_streamp strm, int windowBits) { int wrap; struct inflate_state FAR *state; @@ -167,6 +148,8 @@ int windowBits; /* extract wrap request from windowBits parameter */ if (windowBits < 0) { + if (windowBits < -15) + return Z_STREAM_ERROR; wrap = 0; windowBits = -windowBits; } @@ -192,12 +175,8 @@ int windowBits; return inflateReset(strm); } -int ZEXPORT inflateInit2_(strm, windowBits, version, stream_size) -z_streamp strm; -int windowBits; -const char *version; -int stream_size; -{ +int ZEXPORT inflateInit2_(z_streamp strm, int windowBits, + const char *version, int stream_size) { int ret; struct inflate_state FAR *state; @@ -236,22 +215,17 @@ int stream_size; return ret; } -int ZEXPORT inflateInit_(strm, version, stream_size) -z_streamp strm; -const char *version; -int stream_size; -{ +int ZEXPORT inflateInit_(z_streamp strm, const char *version, + int stream_size) { return inflateInit2_(strm, DEF_WBITS, version, stream_size); } -int ZEXPORT inflatePrime(strm, bits, value) -z_streamp strm; -int bits; -int value; -{ +int ZEXPORT inflatePrime(z_streamp strm, int bits, int value) { struct inflate_state FAR *state; if (inflateStateCheck(strm)) return Z_STREAM_ERROR; + if (bits == 0) + return Z_OK; state = (struct inflate_state FAR *)strm->state; if (bits < 0) { state->hold = 0; @@ -275,9 +249,7 @@ int value; used for threaded applications, since the rewriting of the tables and virgin may not be thread-safe. */ -local void fixedtables(state) -struct inflate_state FAR *state; -{ +local void fixedtables(struct inflate_state FAR *state) { #ifdef BUILDFIXED static int virgin = 1; static code *lenfix, *distfix; @@ -339,7 +311,7 @@ struct inflate_state FAR *state; a.out > inffixed.h */ -void makefixed() +void makefixed(void) { unsigned low, size; struct inflate_state state; @@ -393,11 +365,7 @@ void makefixed() output will fall in the output data, making match copies simpler and faster. The advantage may be dependent on the size of the processor's data caches. */ -local int updatewindow(strm, end, copy) -z_streamp strm; -const Bytef *end; -unsigned copy; -{ +local int updatewindow(z_streamp strm, const Bytef *end, unsigned copy) { struct inflate_state FAR *state; unsigned dist; @@ -447,10 +415,10 @@ unsigned copy; /* check function to use adler32() for zlib or crc32() for gzip */ #ifdef GUNZIP -# define UPDATE(check, buf, len) \ +# define UPDATE_CHECK(check, buf, len) \ (state->flags ? crc32(check, buf, len) : adler32(check, buf, len)) #else -# define UPDATE(check, buf, len) adler32(check, buf, len) +# define UPDATE_CHECK(check, buf, len) adler32(check, buf, len) #endif /* check macros for header crc */ @@ -619,10 +587,7 @@ unsigned copy; will return Z_BUF_ERROR if it has not reached the end of the stream. */ -int ZEXPORT inflate(strm, flush) -z_streamp strm; -int flush; -{ +int ZEXPORT inflate(z_streamp strm, int flush) { struct inflate_state FAR *state; z_const unsigned char FAR *next; /* next input */ unsigned char FAR *put; /* next output */ @@ -670,7 +635,6 @@ int flush; state->mode = FLAGS; break; } - state->flags = 0; /* expect zlib header */ if (state->head != Z_NULL) state->head->done = -1; if (!(state->wrap & 1) || /* check if zlib header allowed */ @@ -678,12 +642,12 @@ int flush; if ( #endif ((BITS(8) << 8) + (hold >> 8)) % 31) { - strm->msg = (char *)"incorrect header check"; + strm->msg = (z_const char *)"incorrect header check"; state->mode = BAD; break; } if (BITS(4) != Z_DEFLATED) { - strm->msg = (char *)"unknown compression method"; + strm->msg = (z_const char *)"unknown compression method"; state->mode = BAD; break; } @@ -692,11 +656,12 @@ int flush; if (state->wbits == 0) state->wbits = len; if (len > 15 || len > state->wbits) { - strm->msg = (char *)"invalid window size"; + strm->msg = (z_const char *)"invalid window size"; state->mode = BAD; break; } state->dmax = 1U << len; + state->flags = 0; /* indicate zlib header */ Tracev((stderr, "inflate: zlib header ok\n")); strm->adler = state->check = adler32(0L, Z_NULL, 0); state->mode = hold & 0x200 ? DICTID : TYPE; @@ -707,12 +672,12 @@ int flush; NEEDBITS(16); state->flags = (int)(hold); if ((state->flags & 0xff) != Z_DEFLATED) { - strm->msg = (char *)"unknown compression method"; + strm->msg = (z_const char *)"unknown compression method"; state->mode = BAD; break; } if (state->flags & 0xe000) { - strm->msg = (char *)"unknown header flags set"; + strm->msg = (z_const char *)"unknown header flags set"; state->mode = BAD; break; } @@ -722,6 +687,7 @@ int flush; CRC2(state->check, hold); INITBITS(); state->mode = TIME; + /* fallthrough */ case TIME: NEEDBITS(32); if (state->head != Z_NULL) @@ -730,6 +696,7 @@ int flush; CRC4(state->check, hold); INITBITS(); state->mode = OS; + /* fallthrough */ case OS: NEEDBITS(16); if (state->head != Z_NULL) { @@ -740,6 +707,7 @@ int flush; CRC2(state->check, hold); INITBITS(); state->mode = EXLEN; + /* fallthrough */ case EXLEN: if (state->flags & 0x0400) { NEEDBITS(16); @@ -753,14 +721,16 @@ int flush; else if (state->head != Z_NULL) state->head->extra = Z_NULL; state->mode = EXTRA; + /* fallthrough */ case EXTRA: if (state->flags & 0x0400) { copy = state->length; if (copy > have) copy = have; if (copy) { if (state->head != Z_NULL && - state->head->extra != Z_NULL) { - len = state->head->extra_len - state->length; + state->head->extra != Z_NULL && + (len = state->head->extra_len - state->length) < + state->head->extra_max) { zmemcpy(state->head->extra + len, next, len + copy > state->head->extra_max ? state->head->extra_max - len : copy); @@ -775,6 +745,7 @@ int flush; } state->length = 0; state->mode = NAME; + /* fallthrough */ case NAME: if (state->flags & 0x0800) { if (have == 0) goto inf_leave; @@ -796,6 +767,7 @@ int flush; state->head->name = Z_NULL; state->length = 0; state->mode = COMMENT; + /* fallthrough */ case COMMENT: if (state->flags & 0x1000) { if (have == 0) goto inf_leave; @@ -816,11 +788,12 @@ int flush; else if (state->head != Z_NULL) state->head->comment = Z_NULL; state->mode = HCRC; + /* fallthrough */ case HCRC: if (state->flags & 0x0200) { NEEDBITS(16); if ((state->wrap & 4) && hold != (state->check & 0xffff)) { - strm->msg = (char *)"header crc mismatch"; + strm->msg = (z_const char *)"header crc mismatch"; state->mode = BAD; break; } @@ -839,6 +812,7 @@ int flush; strm->adler = state->check = ZSWAP32(hold); INITBITS(); state->mode = DICT; + /* fallthrough */ case DICT: if (state->havedict == 0) { RESTORE(); @@ -846,8 +820,10 @@ int flush; } strm->adler = state->check = adler32(0L, Z_NULL, 0); state->mode = TYPE; + /* fallthrough */ case TYPE: if (flush == Z_BLOCK || flush == Z_TREES) goto inf_leave; + /* fallthrough */ case TYPEDO: if (state->last) { BYTEBITS(); @@ -879,7 +855,7 @@ int flush; state->mode = TABLE; break; case 3: - strm->msg = (char *)"invalid block type"; + strm->msg = (z_const char *)"invalid block type"; state->mode = BAD; } DROPBITS(2); @@ -888,7 +864,7 @@ int flush; BYTEBITS(); /* go to byte boundary */ NEEDBITS(32); if ((hold & 0xffff) != ((hold >> 16) ^ 0xffff)) { - strm->msg = (char *)"invalid stored block lengths"; + strm->msg = (z_const char *)"invalid stored block lengths"; state->mode = BAD; break; } @@ -898,8 +874,10 @@ int flush; INITBITS(); state->mode = COPY_; if (flush == Z_TREES) goto inf_leave; + /* fallthrough */ case COPY_: state->mode = COPY; + /* fallthrough */ case COPY: copy = state->length; if (copy) { @@ -927,7 +905,7 @@ int flush; DROPBITS(4); #ifndef PKZIP_BUG_WORKAROUND if (state->nlen > 286 || state->ndist > 30) { - strm->msg = (char *)"too many length or distance symbols"; + strm->msg = (z_const char *)"too many length or distance symbols"; state->mode = BAD; break; } @@ -935,6 +913,7 @@ int flush; Tracev((stderr, "inflate: table sizes ok\n")); state->have = 0; state->mode = LENLENS; + /* fallthrough */ case LENLENS: while (state->have < state->ncode) { NEEDBITS(3); @@ -944,18 +923,19 @@ int flush; while (state->have < 19) state->lens[order[state->have++]] = 0; state->next = state->codes; - state->lencode = (const code FAR *)(state->next); + state->lencode = state->distcode = (const code FAR *)(state->next); state->lenbits = 7; ret = inflate_table(CODES, state->lens, 19, &(state->next), &(state->lenbits), state->work); if (ret) { - strm->msg = (char *)"invalid code lengths set"; + strm->msg = (z_const char *)"invalid code lengths set"; state->mode = BAD; break; } Tracev((stderr, "inflate: code lengths ok\n")); state->have = 0; state->mode = CODELENS; + /* fallthrough */ case CODELENS: while (state->have < state->nlen + state->ndist) { for (;;) { @@ -972,7 +952,7 @@ int flush; NEEDBITS(here.bits + 2); DROPBITS(here.bits); if (state->have == 0) { - strm->msg = (char *)"invalid bit length repeat"; + strm->msg = (z_const char *)"invalid bit length repeat"; state->mode = BAD; break; } @@ -995,7 +975,7 @@ int flush; DROPBITS(7); } if (state->have + copy > state->nlen + state->ndist) { - strm->msg = (char *)"invalid bit length repeat"; + strm->msg = (z_const char *)"invalid bit length repeat"; state->mode = BAD; break; } @@ -1009,7 +989,7 @@ int flush; /* check for end-of-block code (better have one) */ if (state->lens[256] == 0) { - strm->msg = (char *)"invalid code -- missing end-of-block"; + strm->msg = (z_const char *)"invalid code -- missing end-of-block"; state->mode = BAD; break; } @@ -1023,7 +1003,7 @@ int flush; ret = inflate_table(LENS, state->lens, state->nlen, &(state->next), &(state->lenbits), state->work); if (ret) { - strm->msg = (char *)"invalid literal/lengths set"; + strm->msg = (z_const char *)"invalid literal/lengths set"; state->mode = BAD; break; } @@ -1032,15 +1012,17 @@ int flush; ret = inflate_table(DISTS, state->lens + state->nlen, state->ndist, &(state->next), &(state->distbits), state->work); if (ret) { - strm->msg = (char *)"invalid distances set"; + strm->msg = (z_const char *)"invalid distances set"; state->mode = BAD; break; } Tracev((stderr, "inflate: codes ok\n")); state->mode = LEN_; if (flush == Z_TREES) goto inf_leave; + /* fallthrough */ case LEN_: state->mode = LEN; + /* fallthrough */ case LEN: if (have >= 6 && left >= 258) { RESTORE(); @@ -1084,12 +1066,13 @@ int flush; break; } if (here.op & 64) { - strm->msg = (char *)"invalid literal/length code"; + strm->msg = (z_const char *)"invalid literal/length code"; state->mode = BAD; break; } state->extra = (unsigned)(here.op) & 15; state->mode = LENEXT; + /* fallthrough */ case LENEXT: if (state->extra) { NEEDBITS(state->extra); @@ -1100,6 +1083,7 @@ int flush; Tracevv((stderr, "inflate: length %u\n", state->length)); state->was = state->length; state->mode = DIST; + /* fallthrough */ case DIST: for (;;) { here = state->distcode[BITS(state->distbits)]; @@ -1120,13 +1104,14 @@ int flush; DROPBITS(here.bits); state->back += here.bits; if (here.op & 64) { - strm->msg = (char *)"invalid distance code"; + strm->msg = (z_const char *)"invalid distance code"; state->mode = BAD; break; } state->offset = (unsigned)here.val; state->extra = (unsigned)(here.op) & 15; state->mode = DISTEXT; + /* fallthrough */ case DISTEXT: if (state->extra) { NEEDBITS(state->extra); @@ -1136,13 +1121,14 @@ int flush; } #ifdef INFLATE_STRICT if (state->offset > state->dmax) { - strm->msg = (char *)"invalid distance too far back"; + strm->msg = (z_const char *)"invalid distance too far back"; state->mode = BAD; break; } #endif Tracevv((stderr, "inflate: distance %u\n", state->offset)); state->mode = MATCH; + /* fallthrough */ case MATCH: if (left == 0) goto inf_leave; copy = out - left; @@ -1150,7 +1136,7 @@ int flush; copy = state->offset - copy; if (copy > state->whave) { if (state->sane) { - strm->msg = (char *)"invalid distance too far back"; + strm->msg = (z_const char *)"invalid distance too far back"; state->mode = BAD; break; } @@ -1202,14 +1188,14 @@ int flush; state->total += out; if ((state->wrap & 4) && out) strm->adler = state->check = - UPDATE(state->check, put - out, out); + UPDATE_CHECK(state->check, put - out, out); out = left; if ((state->wrap & 4) && ( #ifdef GUNZIP state->flags ? hold : #endif ZSWAP32(hold)) != state->check) { - strm->msg = (char *)"incorrect data check"; + strm->msg = (z_const char *)"incorrect data check"; state->mode = BAD; break; } @@ -1218,11 +1204,12 @@ int flush; } #ifdef GUNZIP state->mode = LENGTH; + /* fallthrough */ case LENGTH: if (state->wrap && state->flags) { NEEDBITS(32); - if (hold != (state->total & 0xffffffffUL)) { - strm->msg = (char *)"incorrect length check"; + if ((state->wrap & 4) && hold != (state->total & 0xffffffff)) { + strm->msg = (z_const char *)"incorrect length check"; state->mode = BAD; break; } @@ -1231,6 +1218,7 @@ int flush; } #endif state->mode = DONE; + /* fallthrough */ case DONE: ret = Z_STREAM_END; goto inf_leave; @@ -1240,6 +1228,7 @@ int flush; case MEM: return Z_MEM_ERROR; case SYNC: + /* fallthrough */ default: return Z_STREAM_ERROR; } @@ -1265,7 +1254,7 @@ int flush; state->total += out; if ((state->wrap & 4) && out) strm->adler = state->check = - UPDATE(state->check, strm->next_out - out, out); + UPDATE_CHECK(state->check, strm->next_out - out, out); strm->data_type = (int)state->bits + (state->last ? 64 : 0) + (state->mode == TYPE ? 128 : 0) + (state->mode == LEN_ || state->mode == COPY_ ? 256 : 0); @@ -1274,9 +1263,7 @@ int flush; return ret; } -int ZEXPORT inflateEnd(strm) -z_streamp strm; -{ +int ZEXPORT inflateEnd(z_streamp strm) { struct inflate_state FAR *state; if (inflateStateCheck(strm)) return Z_STREAM_ERROR; @@ -1288,11 +1275,8 @@ z_streamp strm; return Z_OK; } -int ZEXPORT inflateGetDictionary(strm, dictionary, dictLength) -z_streamp strm; -Bytef *dictionary; -uInt *dictLength; -{ +int ZEXPORT inflateGetDictionary(z_streamp strm, Bytef *dictionary, + uInt *dictLength) { struct inflate_state FAR *state; /* check state */ @@ -1311,11 +1295,8 @@ uInt *dictLength; return Z_OK; } -int ZEXPORT inflateSetDictionary(strm, dictionary, dictLength) -z_streamp strm; -const Bytef *dictionary; -uInt dictLength; -{ +int ZEXPORT inflateSetDictionary(z_streamp strm, const Bytef *dictionary, + uInt dictLength) { struct inflate_state FAR *state; unsigned long dictid; int ret; @@ -1346,10 +1327,7 @@ uInt dictLength; return Z_OK; } -int ZEXPORT inflateGetHeader(strm, head) -z_streamp strm; -gz_headerp head; -{ +int ZEXPORT inflateGetHeader(z_streamp strm, gz_headerp head) { struct inflate_state FAR *state; /* check state */ @@ -1374,11 +1352,8 @@ gz_headerp head; called again with more data and the *have state. *have is initialized to zero for the first call. */ -local unsigned syncsearch(have, buf, len) -unsigned FAR *have; -const unsigned char FAR *buf; -unsigned len; -{ +local unsigned syncsearch(unsigned FAR *have, const unsigned char FAR *buf, + unsigned len) { unsigned got; unsigned next; @@ -1397,10 +1372,9 @@ unsigned len; return next; } -int ZEXPORT inflateSync(strm) -z_streamp strm; -{ +int ZEXPORT inflateSync(z_streamp strm) { unsigned len; /* number of bytes to look at or looked at */ + int flags; /* temporary to save header status */ unsigned long in, out; /* temporary to save total_in and total_out */ unsigned char buf[4]; /* to restore bit buffer to byte string */ struct inflate_state FAR *state; @@ -1413,7 +1387,7 @@ z_streamp strm; /* if first time, start search in bit buffer */ if (state->mode != SYNC) { state->mode = SYNC; - state->hold <<= state->bits & 7; + state->hold >>= state->bits & 7; state->bits -= state->bits & 7; len = 0; while (state->bits >= 8) { @@ -1433,9 +1407,15 @@ z_streamp strm; /* return no joy or set up to restart inflate() on a new block */ if (state->have != 4) return Z_DATA_ERROR; + if (state->flags == -1) + state->wrap = 0; /* if no header yet, treat as raw */ + else + state->wrap &= ~4; /* no point in computing a check value now */ + flags = state->flags; in = strm->total_in; out = strm->total_out; inflateReset(strm); strm->total_in = in; strm->total_out = out; + state->flags = flags; state->mode = TYPE; return Z_OK; } @@ -1448,9 +1428,7 @@ z_streamp strm; block. When decompressing, PPP checks that at the end of input packet, inflate is waiting for these length bytes. */ -int ZEXPORT inflateSyncPoint(strm) -z_streamp strm; -{ +int ZEXPORT inflateSyncPoint(z_streamp strm) { struct inflate_state FAR *state; if (inflateStateCheck(strm)) return Z_STREAM_ERROR; @@ -1458,10 +1436,7 @@ z_streamp strm; return state->mode == STORED && state->bits == 0; } -int ZEXPORT inflateCopy(dest, source) -z_streamp dest; -z_streamp source; -{ +int ZEXPORT inflateCopy(z_streamp dest, z_streamp source) { struct inflate_state FAR *state; struct inflate_state FAR *copy; unsigned char FAR *window; @@ -1505,10 +1480,7 @@ z_streamp source; return Z_OK; } -int ZEXPORT inflateUndermine(strm, subvert) -z_streamp strm; -int subvert; -{ +int ZEXPORT inflateUndermine(z_streamp strm, int subvert) { struct inflate_state FAR *state; if (inflateStateCheck(strm)) return Z_STREAM_ERROR; @@ -1523,24 +1495,19 @@ int subvert; #endif } -int ZEXPORT inflateValidate(strm, check) -z_streamp strm; -int check; -{ +int ZEXPORT inflateValidate(z_streamp strm, int check) { struct inflate_state FAR *state; if (inflateStateCheck(strm)) return Z_STREAM_ERROR; state = (struct inflate_state FAR *)strm->state; - if (check) + if (check && state->wrap) state->wrap |= 4; else state->wrap &= ~4; return Z_OK; } -long ZEXPORT inflateMark(strm) -z_streamp strm; -{ +long ZEXPORT inflateMark(z_streamp strm) { struct inflate_state FAR *state; if (inflateStateCheck(strm)) @@ -1551,9 +1518,7 @@ z_streamp strm; (state->mode == MATCH ? state->was - state->length : 0)); } -unsigned long ZEXPORT inflateCodesUsed(strm) -z_streamp strm; -{ +unsigned long ZEXPORT inflateCodesUsed(z_streamp strm) { struct inflate_state FAR *state; if (inflateStateCheck(strm)) return (unsigned long)-1; state = (struct inflate_state FAR *)strm->state; diff --git a/deps/zlib/inflate.h b/deps/zlib/inflate.h index a46cce6b6..f758e0dcc 100644 --- a/deps/zlib/inflate.h +++ b/deps/zlib/inflate.h @@ -1,5 +1,5 @@ /* inflate.h -- internal inflate state definition - * Copyright (C) 1995-2016 Mark Adler + * Copyright (C) 1995-2019 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -86,7 +86,8 @@ struct inflate_state { int wrap; /* bit 0 true for zlib, bit 1 true for gzip, bit 2 true to validate check value */ int havedict; /* true if dictionary provided */ - int flags; /* gzip header method and flags (0 if zlib) */ + int flags; /* gzip header method and flags, 0 if zlib, or + -1 if raw or no header yet */ unsigned dmax; /* zlib header max distance (INFLATE_STRICT) */ unsigned long check; /* protected copy of check value */ unsigned long total; /* protected copy of output count */ @@ -99,7 +100,7 @@ struct inflate_state { unsigned char FAR *window; /* allocated sliding window, if needed */ /* bit accumulator */ unsigned long hold; /* input bit accumulator */ - unsigned bits; /* number of bits in "in" */ + unsigned bits; /* number of bits in hold */ /* for string and stored block copying */ unsigned length; /* literal or length of data to copy */ unsigned offset; /* distance back to copy string from */ diff --git a/deps/zlib/inftrees.c b/deps/zlib/inftrees.c index 2ea08fc13..a127e6b8f 100644 --- a/deps/zlib/inftrees.c +++ b/deps/zlib/inftrees.c @@ -1,5 +1,5 @@ /* inftrees.c -- generate Huffman trees for efficient decoding - * Copyright (C) 1995-2017 Mark Adler + * Copyright (C) 1995-2024 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -9,7 +9,7 @@ #define MAXBITS 15 const char inflate_copyright[] = - " inflate 1.2.11 Copyright 1995-2017 Mark Adler "; + " inflate 1.3.1.1 Copyright 1995-2024 Mark Adler "; /* If you use the zlib library in a product, an acknowledgment is welcome in the documentation of your product. If for some reason you cannot @@ -29,14 +29,9 @@ const char inflate_copyright[] = table index bits. It will differ if the request is greater than the longest code or if it is less than the shortest code. */ -int ZLIB_INTERNAL inflate_table(type, lens, codes, table, bits, work) -codetype type; -unsigned short FAR *lens; -unsigned codes; -code FAR * FAR *table; -unsigned FAR *bits; -unsigned short FAR *work; -{ +int ZLIB_INTERNAL inflate_table(codetype type, unsigned short FAR *lens, + unsigned codes, code FAR * FAR *table, + unsigned FAR *bits, unsigned short FAR *work) { unsigned len; /* a code's length in bits */ unsigned sym; /* index of code symbols */ unsigned min, max; /* minimum and maximum code lengths */ @@ -62,7 +57,7 @@ unsigned short FAR *work; 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0}; static const unsigned short lext[31] = { /* Length codes 257..285 extra */ 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, - 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 77, 202}; + 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 73, 200}; static const unsigned short dbase[32] = { /* Distance codes 0..29 base */ 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, diff --git a/deps/zlib/inftrees.h b/deps/zlib/inftrees.h index baa53a0b1..396f74b5d 100644 --- a/deps/zlib/inftrees.h +++ b/deps/zlib/inftrees.h @@ -38,11 +38,11 @@ typedef struct { /* Maximum size of the dynamic table. The maximum number of code structures is 1444, which is the sum of 852 for literal/length codes and 592 for distance codes. These values were found by exhaustive searches using the program - examples/enough.c found in the zlib distribtution. The arguments to that + examples/enough.c found in the zlib distribution. The arguments to that program are the number of symbols, the initial root table size, and the maximum bit length of a code. "enough 286 9 15" for literal/length codes - returns returns 852, and "enough 30 6 15" for distance codes returns 592. - The initial root table size (9 or 6) is found in the fifth argument of the + returns 852, and "enough 30 6 15" for distance codes returns 592. The + initial root table size (9 or 6) is found in the fifth argument of the inflate_table() calls in inflate.c and infback.c. If the root table size is changed, then these maximum sizes would be need to be recalculated and updated. */ @@ -57,6 +57,6 @@ typedef enum { DISTS } codetype; -int ZLIB_INTERNAL inflate_table OF((codetype type, unsigned short FAR *lens, - unsigned codes, code FAR * FAR *table, - unsigned FAR *bits, unsigned short FAR *work)); +int ZLIB_INTERNAL inflate_table(codetype type, unsigned short FAR *lens, + unsigned codes, code FAR * FAR *table, + unsigned FAR *bits, unsigned short FAR *work); diff --git a/deps/zlib/make_vms.com b/deps/zlib/make_vms.com index 65e9d0cbc..4dc8a8913 100644 --- a/deps/zlib/make_vms.com +++ b/deps/zlib/make_vms.com @@ -14,9 +14,9 @@ $! 0.02 20061008 Adapt to new Makefile.in $! 0.03 20091224 Add support for large file check $! 0.04 20100110 Add new gzclose, gzlib, gzread, gzwrite $! 0.05 20100221 Exchange zlibdefs.h by zconf.h.in -$! 0.06 20120111 Fix missing amiss_err, update zconf_h.in, fix new exmples +$! 0.06 20120111 Fix missing amiss_err, update zconf_h.in, fix new examples $! subdir path, update module search in makefile.in -$! 0.07 20120115 Triggered by work done by Alexey Chupahin completly redesigned +$! 0.07 20120115 Triggered by work done by Alexey Chupahin completely redesigned $! shared image creation $! 0.08 20120219 Make it work on VAX again, pre-load missing symbols to shared $! image diff --git a/deps/zlib/msdos/Makefile.dj2 b/deps/zlib/msdos/Makefile.dj2 index 59d2037d6..c8dc3ceaa 100644 --- a/deps/zlib/msdos/Makefile.dj2 +++ b/deps/zlib/msdos/Makefile.dj2 @@ -30,7 +30,7 @@ CC=gcc #CFLAGS=-MMD -O #CFLAGS=-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7 #CFLAGS=-MMD -g -DZLIB_DEBUG -CFLAGS=-MMD -O3 $(BUTT) -Wall -Wwrite-strings -Wpointer-arith -Wconversion \ +CFLAGS=-MMD -O3 $(BUTT) -Wall -Wwrite-strings -Wpointer-arith \ -Wstrict-prototypes -Wmissing-prototypes # If cp.exe is available, replace "copy /Y" with "cp -fp" . diff --git a/deps/zlib/old/Makefile.riscos b/deps/zlib/old/Makefile.riscos index 57e29d3fb..0f503ff21 100644 --- a/deps/zlib/old/Makefile.riscos +++ b/deps/zlib/old/Makefile.riscos @@ -3,7 +3,7 @@ # test works out-of-the-box, installs `somewhere' on demand # Toolflags: -CCflags = -c -depend !Depend -IC: -g -throwback -DRISCOS -fah +CCflags = -c -depend !Depend -IC: -g -throwback -fah C++flags = -c -depend !Depend -IC: -throwback Linkflags = -aif -c++ -o $@ ObjAsmflags = -throwback -NoCache -depend !Depend diff --git a/deps/zlib/old/visual-basic.txt b/deps/zlib/old/visual-basic.txt index 57efe5812..3c8d2a42d 100644 --- a/deps/zlib/old/visual-basic.txt +++ b/deps/zlib/old/visual-basic.txt @@ -115,7 +115,7 @@ SUCCESS Then ReDim Preserve bytaryCpr(lngCprSiz - 1) Open strCprPth For Binary Access Write As #1 Put #1, , bytaryCpr() - Put #1, , lngOriSiz 'Add the the original size value to the end + Put #1, , lngOriSiz 'Add the original size value to the end (last 4 bytes) Close #1 Else diff --git a/deps/zlib/os400/README400 b/deps/zlib/os400/README400 index 4f98334f5..ebc1adc08 100644 --- a/deps/zlib/os400/README400 +++ b/deps/zlib/os400/README400 @@ -1,9 +1,9 @@ - ZLIB version 1.2.11 for OS/400 installation instructions + ZLIB version 1.3.1.1 for OS/400 installation instructions 1) Download and unpack the zlib tarball to some IFS directory. (i.e.: /path/to/the/zlib/ifs/source/directory) - If the installed IFS command suppors gzip format, this is straightforward, + If the installed IFS command supports gzip format, this is straightforward, else you have to unpack first to some directory on a system supporting it, then move the whole directory to the IFS via the network (via SMB or FTP). @@ -43,6 +43,6 @@ Notes: For OS/400 ILE RPG programmers, a /copy member defining the ZLIB Remember that most foreign textual data are ASCII coded: this implementation does not handle conversion from/to ASCII, so - text data code conversions must be done explicitely. + text data code conversions must be done explicitly. Mainly for the reason above, always open zipped files in binary mode. diff --git a/deps/zlib/os400/bndsrc b/deps/zlib/os400/bndsrc index 5e6e0a2f0..187fb691a 100644 --- a/deps/zlib/os400/bndsrc +++ b/deps/zlib/os400/bndsrc @@ -116,4 +116,18 @@ STRPGMEXP PGMLVL(*CURRENT) SIGNATURE('ZLIB') EXPORT SYMBOL("inflateValidate") EXPORT SYMBOL("uncompress2") +/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/ +/* Version 1.2.12 additional entry points. */ +/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/ + + EXPORT SYMBOL("crc32_combine_gen64") + EXPORT SYMBOL("crc32_combine_gen") + EXPORT SYMBOL("crc32_combine_op") + +/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/ +/* Version 1.3.2 additional entry points. */ +/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/ + + EXPORT SYMBOL("deflateUsed") + ENDPGMEXP diff --git a/deps/zlib/os400/zlib.inc b/deps/zlib/os400/zlib.inc index c6aca2cbd..e9352fed2 100644 --- a/deps/zlib/os400/zlib.inc +++ b/deps/zlib/os400/zlib.inc @@ -1,7 +1,7 @@ * ZLIB.INC - Interface to the general purpose compression library * * ILE RPG400 version by Patrick Monnerat, DATASPHERE. - * Version 1.2.11 + * Version 1.3.1.1 * * * WARNING: @@ -22,14 +22,14 @@ * * Versioning information. * - D ZLIB_VERSION C '1.2.11' + D ZLIB_VERSION C '1.3.1.1' D ZLIB_VERNUM C X'12a0' D ZLIB_VER_MAJOR C 1 - D ZLIB_VER_MINOR C 2 + D ZLIB_VER_MINOR C 3 D ZLIB_VER_REVISION... - D C 11 + D C 1 D ZLIB_VER_SUBREVISION... - D C 0 + D C 1 * * Other equates. * @@ -371,6 +371,10 @@ D pending 10U 0 Pending bytes D bits 10I 0 Pending bits * + D deflateUsed PR 10I 0 extproc('deflateUsed') Get used bits + D strm like(z_stream) Compression stream + D bits 10I 0 Used bits + * D deflatePrime PR 10I 0 extproc('deflatePrime') Change level & strat D strm like(z_stream) Compression stream D bits 10I 0 value # of bits to insert diff --git a/deps/zlib/qnx/package.qpg b/deps/zlib/qnx/package.qpg index 31e8e90db..02970c231 100644 --- a/deps/zlib/qnx/package.qpg +++ b/deps/zlib/qnx/package.qpg @@ -25,10 +25,10 @@ - - - - + + + + @@ -58,12 +58,12 @@ A massively spiffy yet delicately unobtrusive compression library. zlib is designed to be a free, general-purpose, legally unencumbered, lossless data compression library for use on virtually any computer hardware and operating system. - http://www.gzip.org/zlib + https://zlib.net/ - 1.2.11 + 1.3.1.1 Medium Stable diff --git a/deps/zlib/test/CMakeLists.txt b/deps/zlib/test/CMakeLists.txt new file mode 100644 index 000000000..0d2844d8c --- /dev/null +++ b/deps/zlib/test/CMakeLists.txt @@ -0,0 +1,265 @@ +function(ZLIB_findTestEnv testName) + set(testEnv "PATH=") + + if(MSVC OR MINGW) + set(separator "\\\;") + else() + set(separator ":") + endif() + + string(APPEND testEnv "$${separator}") + string(APPEND testEnv "$ENV{PATH}") + + set_tests_properties(${testName} PROPERTIES ENVIRONMENT "${testEnv}") +endfunction() + +if(ZLIB_BUILD_SHARED) + add_executable(zlib_example example.c) + target_link_libraries(zlib_example ZLIB::ZLIB) + target_compile_definitions(zlib_example PRIVATE ZLIB_BUILD) + add_test(NAME zlib_example COMMAND zlib_example) + + add_executable(minigzip minigzip.c) + target_compile_definitions( + minigzip PRIVATE $<$:HAVE_HIDDEN>) + target_link_libraries(minigzip ZLIB::ZLIB) + + if(MSVC + OR MSYS + OR MINGW + OR CYGWIN) + zlib_findtestenv(zlib_example) + endif( + MSVC + OR MSYS + OR MINGW + OR CYGWIN) + + if(HAVE_OFF64_T) + add_executable(zlib_example64 example.c) + target_compile_definitions( + zlib_example64 + PRIVATE ZLIB_BUILD + $<$:HAVE_HIDDEN>) + target_link_libraries(zlib_example64 ZLIB::ZLIB) + add_test(NAME zlib_example64 COMMAND zlib_example64) + + if(MSVC + OR MSYS + OR MINGW + OR CYGWIN) + zlib_findtestenv(zlib_example64) + endif( + MSVC + OR MSYS + OR MINGW + OR CYGWIN) + endif(HAVE_OFF64_T) +endif(ZLIB_BUILD_SHARED) + +if(ZLIB_BUILD_STATIC) + add_executable(zlib_static_example example.c) + target_link_libraries(zlib_static_example ZLIB::ZLIBSTATIC) + target_compile_definitions( + zlib_static_example + PRIVATE ZLIB_BUILD + $<$:HAVE_HIDDEN>) + add_test(NAME zlib_static_example COMMAND zlib_static_example) + + add_executable(static_minigzip minigzip.c) + target_link_libraries(static_minigzip ZLIB::ZLIBSTATIC) + + if(${CMAKE_C_COMPILER_ID} STREQUAL "GNU" OR ${CMAKE_C_COMPILER_ID} STREQUAL + "Clang") + set(CFLAGS_OLD ${CMAKE_C_FLAGS}) + set({CMAKE_C_FLAGS + "" + CACHE STRING "" FORCE) + + if(${CMAKE_C_COMPILER_ID} STREQUAL "GNU") + find_program(GCOV_EXECUTABLE gcov) + endif(${CMAKE_C_COMPILER_ID} STREQUAL "GNU") + + if(${CMAKE_C_COMPILER_ID} STREQUAL "Clang") + set(llvm_names llvm_cov) + list(APPEND llvm_names llvm-cov) + + foreach(ver RANGE 11 99) + list(APPEND llvm_names llvm-cov-${ver}) + endforeach(ver RANGE 11 99) + + find_program(GCOV_EXECUTABLE NAMES ${llvm_names}) + set(llvm_option "gcov") + endif(${CMAKE_C_COMPILER_ID} STREQUAL "Clang") + + add_executable(infcover infcover.c) + target_link_libraries(infcover ZLIB::ZLIBSTATIC) + target_compile_options(infcover PRIVATE -coverage) + target_link_options(infcover PRIVATE -coverage) + target_compile_definitions( + infcover PRIVATE $<$:HAVE_HIDDEN>) + add_test(NAME zlib-coverage COMMAND infcover) + set(INFCOVER_DIR ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/infcover.dir) + add_test( + NAME zlib-coverage-summary + COMMAND + ${GCOV_EXECUTABLE} ${llvm_option} + ${CMAKE_CURRENT_SOURCE_DIR}/infcover.c -o + ${INFCOVER_DIR}/infcover.c.gcda) + set_tests_properties(zlib-coverage-summary PROPERTIES DEPENDS + zlib-coverage) + set({CMAKE_C_FLAGS + ${CFLAGS_OLD} + CACHE STRING "" FORCE) + endif(${CMAKE_C_COMPILER_ID} STREQUAL "GNU" OR ${CMAKE_C_COMPILER_ID} + STREQUAL "Clang") + + if(HAVE_OFF64_T) + add_executable(zlib_static_example64 example.c) + target_compile_definitions( + zlib_static_example64 + PRIVATE ZLIB_BUILD + $<$:HAVE_HIDDEN>) + target_link_libraries(zlib_static_example64 ZLIB::ZLIBSTATIC) + add_test(NAME zlib_static_example64 COMMAND zlib_static_example64) + endif(HAVE_OFF64_T) +endif(ZLIB_BUILD_STATIC) + +add_test( + NAME zlib_install + COMMAND ${CMAKE_COMMAND} --install ${zlib_BINARY_DIR} --prefix + ${CMAKE_CURRENT_BINARY_DIR}/test_install --config $ + WORKING_DIRECTORY ${zlib_BINARY_DIR}) + +set_tests_properties(zlib_install PROPERTIES FIXTURES_SETUP zlib_install) + +file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/findpackage_test) +file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/add_subdirectory_test) +file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/add_subdirectory_exclude_test) + +configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/find_package_test.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/findpackage_test/CMakeLists.txt @ONLY) + +configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/add_subdirectory_test.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/add_subdirectory_test/CMakeLists.txt @ONLY) + +configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/add_subdirectory_exclude_test.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/add_subdirectory_exclude_test/CMakeLists.txt + @ONLY) + +# CMAKE_GENERATOR_PLATFORM doesn't work in the if +set(GENERATOR ${CMAKE_GENERATOR_PLATFORM}) + +if(GENERATOR) + set(PLATFORM "-A ${GENERATOR}") +endif(GENERATOR) +# +# findpackage_test +# +add_test( + NAME zlib_find_package_configure + COMMAND + ${CMAKE_COMMAND} ${PLATFORM} + -B${CMAKE_CURRENT_BINARY_DIR}/findpackage_test_build + -DCMAKE_BUILD_TYPE=$ -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} + -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} + -DCMAKE_INSTALL_PREFIX=${CMAKE_CURRENT_BINARY_DIR}/test_install --fresh + -G "${CMAKE_GENERATOR}" -S${CMAKE_CURRENT_BINARY_DIR}/findpackage_test) + +add_test( + NAME zlib_find_package_build + COMMAND ${CMAKE_COMMAND} --build . --config $ + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/findpackage_test_build) + +add_test( + NAME zlib_find_package_test + COMMAND ${CMAKE_CTEST_COMMAND} -C $ + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/findpackage_test_build) + +set_tests_properties( + zlib_find_package_configure PROPERTIES FIXTURES_REQUIRED zlib_install + FIXTURES_SETUP fp_config) + +set_tests_properties( + zlib_find_package_build PROPERTIES FIXTURES_REQUIRED fp_config + FIXTURES_SETUP fp_build) + +set_tests_properties( + zlib_find_package_test PROPERTIES FIXTURES_REQUIRED fp_build ENVIRONMENT + CTEST_OUTPUT_ON_FAILURE=1) + +# +# add_subdirectory_test +# +add_test( + NAME zlib_add_subdirectory_configure + COMMAND + ${CMAKE_COMMAND} ${PLATFORM} + -B${CMAKE_CURRENT_BINARY_DIR}/add_subdirectory_test_build + -DCMAKE_BUILD_TYPE=$ -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} + -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} + -DCMAKE_INSTALL_PREFIX=${CMAKE_CURRENT_BINARY_DIR}/test_install --fresh + -G "${CMAKE_GENERATOR}" -S${CMAKE_CURRENT_BINARY_DIR}/findpackage_test) + +add_test( + NAME zlib_add_subdirectory_build + COMMAND ${CMAKE_COMMAND} --build . --config $ + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/add_subdirectory_test_build) + +add_test( + NAME zlib_add_subdirectory_test + COMMAND ${CMAKE_CTEST_COMMAND} -C $ + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/add_subdirectory_test_build) + +set_tests_properties( + zlib_add_subdirectory_configure PROPERTIES FIXTURES_REQUIRED zlib_install + FIXTURES_SETUP as_config) + +set_tests_properties( + zlib_add_subdirectory_build PROPERTIES FIXTURES_REQUIRED as_config + FIXTURES_SETUP as_build) + +set_tests_properties( + zlib_add_subdirectory_test PROPERTIES FIXTURES_REQUIRED as_build + ENVIRONMENT CTEST_OUTPUT_ON_FAILURE=1) + +# +# add_subdirectory_exclude_test +# +add_test( + NAME zlib_add_subdirectory_exclude_configure + COMMAND + ${CMAKE_COMMAND} ${PLATFORM} + -B${CMAKE_CURRENT_BINARY_DIR}/add_subdirectory_exclude_test_build + -DCMAKE_BUILD_TYPE=$ -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} + -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} + -DCMAKE_INSTALL_PREFIX=${CMAKE_CURRENT_BINARY_DIR}/test_install --fresh + -G "${CMAKE_GENERATOR}" -S${CMAKE_CURRENT_BINARY_DIR}/findpackage_test) + +add_test( + NAME zlib_add_subdirectory_exclude_build + COMMAND ${CMAKE_COMMAND} --build . --config $ + WORKING_DIRECTORY + ${CMAKE_CURRENT_BINARY_DIR}/add_subdirectory_exclude_test_build) + +add_test( + NAME zlib_add_subdirectory_exclude_test + COMMAND ${CMAKE_CTEST_COMMAND} -C $ + WORKING_DIRECTORY + ${CMAKE_CURRENT_BINARY_DIR}/add_subdirectory_exclude_test_build) + +set_tests_properties( + zlib_add_subdirectory_exclude_configure + PROPERTIES FIXTURES_REQUIRED zlib_install FIXTURES_SETUP asx_config) + +set_tests_properties( + zlib_add_subdirectory_exclude_build PROPERTIES FIXTURES_REQUIRED as_config + FIXTURES_SETUP asx_build) + +set_tests_properties( + zlib_add_subdirectory_exclude_test + PROPERTIES FIXTURES_REQUIRED asx_build ENVIRONMENT + CTEST_OUTPUT_ON_FAILURE=1) diff --git a/deps/zlib/test/add_subdirectory_exclude_test.cmake.in b/deps/zlib/test/add_subdirectory_exclude_test.cmake.in new file mode 100644 index 000000000..9077ce595 --- /dev/null +++ b/deps/zlib/test/add_subdirectory_exclude_test.cmake.in @@ -0,0 +1,29 @@ +cmake_minimum_required(VERSION 3.12...3.31) + +project( + zlib_find_package_test + LANGUAGES C + VERSION @zlib_VERSION@) + +enable_testing() +option(ZLIB_BUILD_TESTING "" OFF) +option(ZLIB_BUILD_SHARED "" @ZLIB_BUILD_SHARED@) +option(ZLIB_BUILD_STATIC "" @ZLIB_BUILD_STATIC@) + +add_subdirectory(@zlib_SOURCE_DIR@ ${CMAKE_CURRENT_BINARY_DIR}/zlib + EXCLUDE_FROM_ALL) + +if(ZLIB_BUILD_SHARED) + add_executable(test_example @zlib_SOURCE_DIR@/test/example.c) + target_link_libraries(test_example ZLIB::ZLIB) + + if(NOT ${CMAKE_SHARED_LIBRARY_SUFFIX} STREQUAL ".dll") + add_test(NAME zlib_test_example_shared COMMAND test_example) + endif(NOT ${CMAKE_SHARED_LIBRARY_SUFFIX} STREQUAL ".dll") +endif(ZLIB_BUILD_SHARED) + +if(ZLIB_BUILD_STATIC) + add_executable(test_example_static @zlib_SOURCE_DIR@/test/example.c) + target_link_libraries(test_example_static ZLIB::ZLIBSTATIC) + add_test(NAME zlib_test_example_static COMMAND test_example_static) +endif(ZLIB_BUILD_STATIC) diff --git a/deps/zlib/test/add_subdirectory_test.cmake.in b/deps/zlib/test/add_subdirectory_test.cmake.in new file mode 100644 index 000000000..4201af82f --- /dev/null +++ b/deps/zlib/test/add_subdirectory_test.cmake.in @@ -0,0 +1,28 @@ +cmake_minimum_required(VERSION 3.12...3.31) + +project( + zlib_find_package_test + LANGUAGES C + VERSION @zlib_VERSION@) + +enable_testing() +option(ZLIB_BUILD_TESTING "" OFF) +option(ZLIB_BUILD_SHARED "" @ZLIB_BUILD_SHARED@) +option(ZLIB_BUILD_STATIC "" @ZLIB_BUILD_STATIC@) + +add_subdirectory(@zlib_SOURCE_DIR@ ${CMAKE_CURRENT_BINARY_DIR}/zlib) + +if(ZLIB_BUILD_SHARED) + add_executable(test_example @zlib_SOURCE_DIR@/test/example.c) + target_link_libraries(test_example ZLIB::ZLIB) + + if(NOT ${CMAKE_SHARED_LIBRARY_SUFFIX} STREQUAL ".dll") + add_test(NAME zlib_test_example_shared COMMAND test_example) + endif(NOT ${CMAKE_SHARED_LIBRARY_SUFFIX} STREQUAL ".dll") +endif(ZLIB_BUILD_SHARED) + +if(ZLIB_BUILD_STATIC) + add_executable(test_example_static @zlib_SOURCE_DIR@/test/example.c) + target_link_libraries(test_example_static ZLIB::ZLIBSTATIC) + add_test(NAME zlib_test_example_static COMMAND test_example_static) +endif(@ZLIB_BUILD_STATIC) diff --git a/deps/zlib/test/example.c b/deps/zlib/test/example.c index eee17ce7c..d22e5f437 100644 --- a/deps/zlib/test/example.c +++ b/deps/zlib/test/example.c @@ -5,6 +5,10 @@ /* @(#) $Id$ */ +#if defined(_WIN32) && !defined(_CRT_SECURE_NO_WARNINGS) +# define _CRT_SECURE_NO_WARNINGS +#endif + #include "zlib.h" #include @@ -13,8 +17,10 @@ # include #endif -#if defined(VMS) || defined(RISCOS) +#if defined(VMS) # define TESTFILE "foo-gz" +#elif defined(__riscos) && !defined(__TARGET_UNIXLIB__) +# define TESTFILE "foo/gz" #else # define TESTFILE "foo.gz" #endif @@ -34,37 +40,14 @@ static z_const char hello[] = "hello, hello!"; static const char dictionary[] = "hello"; static uLong dictId; /* Adler32 value of the dictionary */ -void test_deflate OF((Byte *compr, uLong comprLen)); -void test_inflate OF((Byte *compr, uLong comprLen, - Byte *uncompr, uLong uncomprLen)); -void test_large_deflate OF((Byte *compr, uLong comprLen, - Byte *uncompr, uLong uncomprLen)); -void test_large_inflate OF((Byte *compr, uLong comprLen, - Byte *uncompr, uLong uncomprLen)); -void test_flush OF((Byte *compr, uLong *comprLen)); -void test_sync OF((Byte *compr, uLong comprLen, - Byte *uncompr, uLong uncomprLen)); -void test_dict_deflate OF((Byte *compr, uLong comprLen)); -void test_dict_inflate OF((Byte *compr, uLong comprLen, - Byte *uncompr, uLong uncomprLen)); -int main OF((int argc, char *argv[])); - - #ifdef Z_SOLO -void *myalloc OF((void *, unsigned, unsigned)); -void myfree OF((void *, void *)); - -void *myalloc(q, n, m) - void *q; - unsigned n, m; -{ +static void *myalloc(void *q, unsigned n, unsigned m) { (void)q; return calloc(n, m); } -void myfree(void *q, void *p) -{ +static void myfree(void *q, void *p) { (void)q; free(p); } @@ -77,18 +60,11 @@ static free_func zfree = myfree; static alloc_func zalloc = (alloc_func)0; static free_func zfree = (free_func)0; -void test_compress OF((Byte *compr, uLong comprLen, - Byte *uncompr, uLong uncomprLen)); -void test_gzio OF((const char *fname, - Byte *uncompr, uLong uncomprLen)); - /* =========================================================================== * Test compress() and uncompress() */ -void test_compress(compr, comprLen, uncompr, uncomprLen) - Byte *compr, *uncompr; - uLong comprLen, uncomprLen; -{ +static void test_compress(Byte *compr, uLong comprLen, Byte *uncompr, + uLong uncomprLen) { int err; uLong len = (uLong)strlen(hello)+1; @@ -111,11 +87,7 @@ void test_compress(compr, comprLen, uncompr, uncomprLen) /* =========================================================================== * Test read/write of .gz files */ -void test_gzio(fname, uncompr, uncomprLen) - const char *fname; /* compressed file name */ - Byte *uncompr; - uLong uncomprLen; -{ +static void test_gzio(const char *fname, Byte *uncompr, uLong uncomprLen) { #ifdef NO_GZCOMPRESS fprintf(stderr, "NO_GZCOMPRESS -- gz* functions cannot compress\n"); #else @@ -197,10 +169,7 @@ void test_gzio(fname, uncompr, uncomprLen) /* =========================================================================== * Test deflate() with small buffers */ -void test_deflate(compr, comprLen) - Byte *compr; - uLong comprLen; -{ +static void test_deflate(Byte *compr, uLong comprLen) { z_stream c_stream; /* compression stream */ int err; uLong len = (uLong)strlen(hello)+1; @@ -235,10 +204,8 @@ void test_deflate(compr, comprLen) /* =========================================================================== * Test inflate() with small buffers */ -void test_inflate(compr, comprLen, uncompr, uncomprLen) - Byte *compr, *uncompr; - uLong comprLen, uncomprLen; -{ +static void test_inflate(Byte *compr, uLong comprLen, Byte *uncompr, + uLong uncomprLen) { int err; z_stream d_stream; /* decompression stream */ @@ -276,10 +243,8 @@ void test_inflate(compr, comprLen, uncompr, uncomprLen) /* =========================================================================== * Test deflate() with large buffers and dynamic change of compression level */ -void test_large_deflate(compr, comprLen, uncompr, uncomprLen) - Byte *compr, *uncompr; - uLong comprLen, uncomprLen; -{ +static void test_large_deflate(Byte *compr, uLong comprLen, Byte *uncompr, + uLong uncomprLen) { z_stream c_stream; /* compression stream */ int err; @@ -308,7 +273,7 @@ void test_large_deflate(compr, comprLen, uncompr, uncomprLen) /* Feed in already compressed data and switch to no compression: */ deflateParams(&c_stream, Z_NO_COMPRESSION, Z_DEFAULT_STRATEGY); c_stream.next_in = compr; - c_stream.avail_in = (uInt)comprLen/2; + c_stream.avail_in = (uInt)uncomprLen/2; err = deflate(&c_stream, Z_NO_FLUSH); CHECK_ERR(err, "deflate"); @@ -331,10 +296,8 @@ void test_large_deflate(compr, comprLen, uncompr, uncomprLen) /* =========================================================================== * Test inflate() with large buffers */ -void test_large_inflate(compr, comprLen, uncompr, uncomprLen) - Byte *compr, *uncompr; - uLong comprLen, uncomprLen; -{ +static void test_large_inflate(Byte *compr, uLong comprLen, Byte *uncompr, + uLong uncomprLen) { int err; z_stream d_stream; /* decompression stream */ @@ -361,7 +324,7 @@ void test_large_inflate(compr, comprLen, uncompr, uncomprLen) err = inflateEnd(&d_stream); CHECK_ERR(err, "inflateEnd"); - if (d_stream.total_out != 2*uncomprLen + comprLen/2) { + if (d_stream.total_out != 2*uncomprLen + uncomprLen/2) { fprintf(stderr, "bad large inflate: %ld\n", d_stream.total_out); exit(1); } else { @@ -372,10 +335,7 @@ void test_large_inflate(compr, comprLen, uncompr, uncomprLen) /* =========================================================================== * Test deflate() with full flush */ -void test_flush(compr, comprLen) - Byte *compr; - uLong *comprLen; -{ +static void test_flush(Byte *compr, uLong *comprLen) { z_stream c_stream; /* compression stream */ int err; uInt len = (uInt)strlen(hello)+1; @@ -410,10 +370,8 @@ void test_flush(compr, comprLen) /* =========================================================================== * Test inflateSync() */ -void test_sync(compr, comprLen, uncompr, uncomprLen) - Byte *compr, *uncompr; - uLong comprLen, uncomprLen; -{ +static void test_sync(Byte *compr, uLong comprLen, Byte *uncompr, + uLong uncomprLen) { int err; z_stream d_stream; /* decompression stream */ @@ -440,9 +398,8 @@ void test_sync(compr, comprLen, uncompr, uncomprLen) CHECK_ERR(err, "inflateSync"); err = inflate(&d_stream, Z_FINISH); - if (err != Z_DATA_ERROR) { - fprintf(stderr, "inflate should report DATA_ERROR\n"); - /* Because of incorrect adler32 */ + if (err != Z_STREAM_END) { + fprintf(stderr, "inflate should report Z_STREAM_END\n"); exit(1); } err = inflateEnd(&d_stream); @@ -454,10 +411,7 @@ void test_sync(compr, comprLen, uncompr, uncomprLen) /* =========================================================================== * Test deflate() with preset dictionary */ -void test_dict_deflate(compr, comprLen) - Byte *compr; - uLong comprLen; -{ +static void test_dict_deflate(Byte *compr, uLong comprLen) { z_stream c_stream; /* compression stream */ int err; @@ -491,10 +445,8 @@ void test_dict_deflate(compr, comprLen) /* =========================================================================== * Test inflate() with a preset dictionary */ -void test_dict_inflate(compr, comprLen, uncompr, uncomprLen) - Byte *compr, *uncompr; - uLong comprLen, uncomprLen; -{ +static void test_dict_inflate(Byte *compr, uLong comprLen, Byte *uncompr, + uLong uncomprLen) { int err; z_stream d_stream; /* decompression stream */ @@ -542,13 +494,10 @@ void test_dict_inflate(compr, comprLen, uncompr, uncomprLen) * Usage: example [output.gz [input.gz]] */ -int main(argc, argv) - int argc; - char *argv[]; -{ +int main(int argc, char *argv[]) { Byte *compr, *uncompr; - uLong comprLen = 10000*sizeof(int); /* don't overflow on MSDOS */ - uLong uncomprLen = comprLen; + uLong uncomprLen = 20000; + uLong comprLen = 3 * uncomprLen; static const char* myVersion = ZLIB_VERSION; if (zlibVersion()[0] != myVersion[0]) { @@ -556,7 +505,8 @@ int main(argc, argv) exit(1); } else if (strcmp(zlibVersion(), ZLIB_VERSION) != 0) { - fprintf(stderr, "warning: different zlib version\n"); + fprintf(stderr, "warning: different zlib version linked: %s\n", + zlibVersion()); } printf("zlib version %s = 0x%04x, compile flags = 0x%lx\n", @@ -590,7 +540,7 @@ int main(argc, argv) test_flush(compr, &comprLen); test_sync(compr, comprLen, uncompr, uncomprLen); - comprLen = uncomprLen; + comprLen = 3 * uncomprLen; test_dict_deflate(compr, comprLen); test_dict_inflate(compr, comprLen, uncompr, uncomprLen); diff --git a/deps/zlib/test/find_package_test.cmake.in b/deps/zlib/test/find_package_test.cmake.in new file mode 100644 index 000000000..0f77d4977 --- /dev/null +++ b/deps/zlib/test/find_package_test.cmake.in @@ -0,0 +1,26 @@ +cmake_minimum_required(VERSION 3.12...3.31) + +project( + zlib_find_package_test + LANGUAGES C + VERSION @zlib_VERSION@) + +enable_testing() +find_package(ZLIB @zlib_VERSION@ CONFIG REQUIRED) +option(ZLIB_BUILD_SHARED "" @ZLIB_BUILD_SHARED@) +option(ZLIB_BUILD_STATIC "" @ZLIB_BUILD_STATIC@) + +if(ZLIB_BUILD_SHARED) + add_executable(test_example @zlib_SOURCE_DIR@/test/example.c) + target_link_libraries(test_example ZLIB::ZLIB) + + if(NOT ${CMAKE_SHARED_LIBRARY_SUFFIX} STREQUAL ".dll") + add_test(NAME zlib_test_example_shared COMMAND test_example) + endif(NOT ${CMAKE_SHARED_LIBRARY_SUFFIX} STREQUAL ".dll") +endif(ZLIB_BUILD_SHARED) + +if(ZLIB_BUILD_STATIC) + add_executable(test_example_static @zlib_SOURCE_DIR@/test/example.c) + target_link_libraries(test_example_static ZLIB::ZLIBSTATIC) + add_test(NAME zlib_test_example_static COMMAND test_example_static) +endif(ZLIB_BUILD_STATIC) diff --git a/deps/zlib/test/infcover.c b/deps/zlib/test/infcover.c index 2be01646c..f1ad0f912 100644 --- a/deps/zlib/test/infcover.c +++ b/deps/zlib/test/infcover.c @@ -1,5 +1,5 @@ /* infcover.c -- test zlib's inflate routines with full code coverage - * Copyright (C) 2011, 2016 Mark Adler + * Copyright (C) 2011, 2016, 2024 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -185,7 +185,7 @@ local void mem_used(z_stream *strm, char *prefix) { struct mem_zone *zone = strm->opaque; - fprintf(stderr, "%s: %lu allocated\n", prefix, zone->total); + fprintf(stderr, "%s: %zu allocated\n", prefix, zone->total); } /* show the high water allocation in bytes */ @@ -193,7 +193,7 @@ local void mem_high(z_stream *strm, char *prefix) { struct mem_zone *zone = strm->opaque; - fprintf(stderr, "%s: %lu high water mark\n", prefix, zone->highwater); + fprintf(stderr, "%s: %zu high water mark\n", prefix, zone->highwater); } /* release the memory allocation zone -- if there are any surprises, notify */ @@ -218,7 +218,7 @@ local void mem_done(z_stream *strm, char *prefix) /* issue alerts about anything unexpected */ if (count || zone->total) - fprintf(stderr, "** %s: %lu bytes in %d blocks not freed\n", + fprintf(stderr, "** %s: %zu bytes in %d blocks not freed\n", prefix, zone->total, count); if (zone->notlifo) fprintf(stderr, "** %s: %d frees not LIFO\n", prefix, zone->notlifo); @@ -373,7 +373,7 @@ local void cover_support(void) mem_setup(&strm); strm.avail_in = 0; strm.next_in = Z_NULL; - ret = inflateInit_(&strm, ZLIB_VERSION - 1, (int)sizeof(z_stream)); + ret = inflateInit_(&strm, "!", (int)sizeof(z_stream)); assert(ret == Z_VERSION_ERROR); mem_done(&strm, "wrong version"); @@ -444,7 +444,7 @@ local void cover_wrap(void) } /* input and output functions for inflateBack() */ -local unsigned pull(void *desc, unsigned char **buf) +local unsigned pull(void *desc, unsigned char z_const **buf) { static unsigned int next = 0; static unsigned char dat[] = {0x63, 0, 2, 0}; @@ -462,7 +462,8 @@ local unsigned pull(void *desc, unsigned char **buf) local int push(void *desc, unsigned char *buf, unsigned len) { - buf += len; + (void)buf; + (void)len; return desc != Z_NULL; /* force error if desc not null */ } diff --git a/deps/zlib/test/minigzip.c b/deps/zlib/test/minigzip.c index e22fb08c0..541f3716b 100644 --- a/deps/zlib/test/minigzip.c +++ b/deps/zlib/test/minigzip.c @@ -15,6 +15,17 @@ /* @(#) $Id$ */ +#ifndef _POSIX_C_SOURCE +# define _POSIX_C_SOURCE 200112L +#endif + +#if defined(_WIN32) && !defined(_CRT_SECURE_NO_WARNINGS) +# define _CRT_SECURE_NO_WARNINGS +#endif +#if defined(_WIN32) && !defined(_CRT_NONSTDC_NO_DEPRECATE) +# define _CRT_NONSTDC_NO_DEPRECATE +#endif + #include "zlib.h" #include @@ -40,18 +51,16 @@ # define SET_BINARY_MODE(file) #endif -#if defined(_MSC_VER) && _MSC_VER < 1900 -# define snprintf _snprintf -#endif - #ifdef VMS # define unlink delete # define GZ_SUFFIX "-gz" #endif -#ifdef RISCOS -# define unlink remove -# define GZ_SUFFIX "-gz" -# define fileno(file) file->__file +#if defined(__riscos) && !defined(__TARGET_UNIXLIB__) +# define GZ_SUFFIX "/gz" +# ifndef __GNUC__ +# define unlink remove +# define fileno(file) file->__file +# endif #endif #if defined(__MWERKS__) && __dest_os != __be_os && __dest_os != __win32_os # include /* for fileno */ @@ -59,7 +68,7 @@ #if !defined(Z_HAVE_UNISTD_H) && !defined(_LARGEFILE64_SOURCE) #ifndef WIN32 /* unlink already in stdio.h for WIN32 */ - extern int unlink OF((const char *)); + extern int unlink(const char *); #endif #endif @@ -142,6 +151,25 @@ static void pwinerror (s) # define local #endif +/* =========================================================================== + * Safe string copy. Copy up to len bytes from src to dst, if src terminates + * with a null by then. If not, copy len-1 bytes from src, terminating it with + * a null in dst[len-1], cutting src short. Return a pointer to the terminating + * null. If len is zero, nothing is written to *dst and NULL is returned. + */ +static char *string_copy(char *dst, char const *src, z_size_t len) { + if (len == 0) + return NULL; + while (--len) { + *dst = *src++; + if (*dst == 0) + return dst; + dst++; + } + *dst = 0; + return dst; +} + #ifdef Z_SOLO /* for Z_SOLO, create simplified gz* functions using deflate and inflate */ @@ -149,20 +177,12 @@ static void pwinerror (s) # include /* for unlink() */ #endif -void *myalloc OF((void *, unsigned, unsigned)); -void myfree OF((void *, void *)); - -void *myalloc(q, n, m) - void *q; - unsigned n, m; -{ +static void *myalloc(void *q, unsigned n, unsigned m) { (void)q; return calloc(n, m); } -void myfree(q, p) - void *q, *p; -{ +static void myfree(void *q, void *p) { (void)q; free(p); } @@ -175,29 +195,7 @@ typedef struct gzFile_s { z_stream strm; } *gzFile; -gzFile gzopen OF((const char *, const char *)); -gzFile gzdopen OF((int, const char *)); -gzFile gz_open OF((const char *, int, const char *)); - -gzFile gzopen(path, mode) -const char *path; -const char *mode; -{ - return gz_open(path, -1, mode); -} - -gzFile gzdopen(fd, mode) -int fd; -const char *mode; -{ - return gz_open(NULL, fd, mode); -} - -gzFile gz_open(path, fd, mode) - const char *path; - int fd; - const char *mode; -{ +static gzFile gz_open(const char *path, int fd, const char *mode) { gzFile gz; int ret; @@ -231,13 +229,15 @@ gzFile gz_open(path, fd, mode) return gz; } -int gzwrite OF((gzFile, const void *, unsigned)); +static gzFile gzopen(const char *path, const char *mode) { + return gz_open(path, -1, mode); +} -int gzwrite(gz, buf, len) - gzFile gz; - const void *buf; - unsigned len; -{ +static gzFile gzdopen(int fd, const char *mode) { + return gz_open(NULL, fd, mode); +} + +static int gzwrite(gzFile gz, const void *buf, unsigned len) { z_stream *strm; unsigned char out[BUFLEN]; @@ -255,13 +255,7 @@ int gzwrite(gz, buf, len) return len; } -int gzread OF((gzFile, void *, unsigned)); - -int gzread(gz, buf, len) - gzFile gz; - void *buf; - unsigned len; -{ +static int gzread(gzFile gz, void *buf, unsigned len) { int ret; unsigned got; unsigned char in[1]; @@ -292,11 +286,7 @@ int gzread(gz, buf, len) return len - strm->avail_out; } -int gzclose OF((gzFile)); - -int gzclose(gz) - gzFile gz; -{ +static int gzclose(gzFile gz) { z_stream *strm; unsigned char out[BUFLEN]; @@ -321,12 +311,7 @@ int gzclose(gz) return Z_OK; } -const char *gzerror OF((gzFile, int *)); - -const char *gzerror(gz, err) - gzFile gz; - int *err; -{ +static const char *gzerror(gzFile gz, int *err) { *err = gz->err; return gz->msg; } @@ -335,67 +320,20 @@ const char *gzerror(gz, err) static char *prog; -void error OF((const char *msg)); -void gz_compress OF((FILE *in, gzFile out)); -#ifdef USE_MMAP -int gz_compress_mmap OF((FILE *in, gzFile out)); -#endif -void gz_uncompress OF((gzFile in, FILE *out)); -void file_compress OF((char *file, char *mode)); -void file_uncompress OF((char *file)); -int main OF((int argc, char *argv[])); - /* =========================================================================== * Display error message and exit */ -void error(msg) - const char *msg; -{ +static void error(const char *msg) { fprintf(stderr, "%s: %s\n", prog, msg); exit(1); } -/* =========================================================================== - * Compress input to output then close both files. - */ - -void gz_compress(in, out) - FILE *in; - gzFile out; -{ - local char buf[BUFLEN]; - int len; - int err; - -#ifdef USE_MMAP - /* Try first compressing with mmap. If mmap fails (minigzip used in a - * pipe), use the normal fread loop. - */ - if (gz_compress_mmap(in, out) == Z_OK) return; -#endif - for (;;) { - len = (int)fread(buf, 1, sizeof(buf), in); - if (ferror(in)) { - perror("fread"); - exit(1); - } - if (len == 0) break; - - if (gzwrite(out, buf, (unsigned)len) != len) error(gzerror(out, &err)); - } - fclose(in); - if (gzclose(out) != Z_OK) error("failed gzclose"); -} - #ifdef USE_MMAP /* MMAP version, Miguel Albrecht */ /* Try compressing the input file at once using mmap. Return Z_OK if - * if success, Z_ERRNO otherwise. + * success, Z_ERRNO otherwise. */ -int gz_compress_mmap(in, out) - FILE *in; - gzFile out; -{ +static int gz_compress_mmap(FILE *in, gzFile out) { int len; int err; int ifd = fileno(in); @@ -424,13 +362,39 @@ int gz_compress_mmap(in, out) } #endif /* USE_MMAP */ +/* =========================================================================== + * Compress input to output then close both files. + */ + +static void gz_compress(FILE *in, gzFile out) { + local char buf[BUFLEN]; + int len; + int err; + +#ifdef USE_MMAP + /* Try first compressing with mmap. If mmap fails (minigzip used in a + * pipe), use the normal fread loop. + */ + if (gz_compress_mmap(in, out) == Z_OK) return; +#endif + for (;;) { + len = (int)fread(buf, 1, sizeof(buf), in); + if (ferror(in)) { + perror("fread"); + exit(1); + } + if (len == 0) break; + + if (gzwrite(out, buf, (unsigned)len) != len) error(gzerror(out, &err)); + } + fclose(in); + if (gzclose(out) != Z_OK) error("failed gzclose"); +} + /* =========================================================================== * Uncompress input to output then close both files. */ -void gz_uncompress(in, out) - gzFile in; - FILE *out; -{ +static void gz_uncompress(gzFile in, FILE *out) { local char buf[BUFLEN]; int len; int err; @@ -454,11 +418,8 @@ void gz_uncompress(in, out) * Compress the given file: create a corresponding .gz file and remove the * original. */ -void file_compress(file, mode) - char *file; - char *mode; -{ - local char outfile[MAX_NAME_LEN]; +static void file_compress(char *file, char *mode) { + local char outfile[MAX_NAME_LEN+1], *end; FILE *in; gzFile out; @@ -467,12 +428,8 @@ void file_compress(file, mode) exit(1); } -#if !defined(NO_snprintf) && !defined(NO_vsnprintf) - snprintf(outfile, sizeof(outfile), "%s%s", file, GZ_SUFFIX); -#else - strcpy(outfile, file); - strcat(outfile, GZ_SUFFIX); -#endif + end = string_copy(outfile, file, sizeof(outfile)); + string_copy(end, GZ_SUFFIX, sizeof(outfile) - (z_size_t)(end - outfile)); in = fopen(file, "rb"); if (in == NULL) { @@ -493,25 +450,19 @@ void file_compress(file, mode) /* =========================================================================== * Uncompress the given file and remove the original. */ -void file_uncompress(file) - char *file; -{ - local char buf[MAX_NAME_LEN]; +static void file_uncompress(char *file) { + local char buf[MAX_NAME_LEN+1]; char *infile, *outfile; FILE *out; gzFile in; - unsigned len = strlen(file); + z_size_t len = strlen(file); if (len + strlen(GZ_SUFFIX) >= sizeof(buf)) { fprintf(stderr, "%s: filename too long\n", prog); exit(1); } -#if !defined(NO_snprintf) && !defined(NO_vsnprintf) - snprintf(buf, sizeof(buf), "%s", file); -#else - strcpy(buf, file); -#endif + string_copy(buf, file, sizeof(buf)); if (len > SUFFIX_LEN && strcmp(file+len-SUFFIX_LEN, GZ_SUFFIX) == 0) { infile = file; @@ -520,11 +471,7 @@ void file_uncompress(file) } else { outfile = file; infile = buf; -#if !defined(NO_snprintf) && !defined(NO_vsnprintf) - snprintf(buf + len, sizeof(buf) - len, "%s", GZ_SUFFIX); -#else - strcat(infile, GZ_SUFFIX); -#endif + string_copy(buf + len, GZ_SUFFIX, sizeof(buf) - len); } in = gzopen(infile, "rb"); if (in == NULL) { @@ -553,21 +500,13 @@ void file_uncompress(file) * -1 to -9 : compression level */ -int main(argc, argv) - int argc; - char *argv[]; -{ +int main(int argc, char *argv[]) { int copyout = 0; int uncompr = 0; gzFile file; - char *bname, outmode[20]; - -#if !defined(NO_snprintf) && !defined(NO_vsnprintf) - snprintf(outmode, sizeof(outmode), "%s", "wb6 "); -#else - strcpy(outmode, "wb6 "); -#endif + char *bname, outmode[5]; + string_copy(outmode, "wb6 ", sizeof(outmode)); prog = argv[0]; bname = strrchr(argv[0], '/'); if (bname) diff --git a/deps/zlib/treebuild.xml b/deps/zlib/treebuild.xml index fd75525f9..78aae5e1a 100644 --- a/deps/zlib/treebuild.xml +++ b/deps/zlib/treebuild.xml @@ -1,6 +1,6 @@ - - + + zip compression library diff --git a/deps/zlib/trees.c b/deps/zlib/trees.c index 50cf4b457..e052a470b 100644 --- a/deps/zlib/trees.c +++ b/deps/zlib/trees.c @@ -1,5 +1,5 @@ /* trees.c -- output deflated data using Huffman coding - * Copyright (C) 1995-2017 Jean-loup Gailly + * Copyright (C) 1995-2024 Jean-loup Gailly * detect_data_type() function provided freely by Cosmin Truta, 2006 * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -122,39 +122,117 @@ struct static_tree_desc_s { int max_length; /* max bit length for the codes */ }; -local const static_tree_desc static_l_desc = +#ifdef NO_INIT_GLOBAL_POINTERS +# define TCONST +#else +# define TCONST const +#endif + +local TCONST static_tree_desc static_l_desc = {static_ltree, extra_lbits, LITERALS+1, L_CODES, MAX_BITS}; -local const static_tree_desc static_d_desc = +local TCONST static_tree_desc static_d_desc = {static_dtree, extra_dbits, 0, D_CODES, MAX_BITS}; -local const static_tree_desc static_bl_desc = +local TCONST static_tree_desc static_bl_desc = {(const ct_data *)0, extra_blbits, 0, BL_CODES, MAX_BL_BITS}; /* =========================================================================== - * Local (static) routines in this file. + * Output a short LSB first on the stream. + * IN assertion: there is enough room in pendingBuf. */ +#define put_short(s, w) { \ + put_byte(s, (uch)((w) & 0xff)); \ + put_byte(s, (uch)((ush)(w) >> 8)); \ +} -local void tr_static_init OF((void)); -local void init_block OF((deflate_state *s)); -local void pqdownheap OF((deflate_state *s, ct_data *tree, int k)); -local void gen_bitlen OF((deflate_state *s, tree_desc *desc)); -local void gen_codes OF((ct_data *tree, int max_code, ushf *bl_count)); -local void build_tree OF((deflate_state *s, tree_desc *desc)); -local void scan_tree OF((deflate_state *s, ct_data *tree, int max_code)); -local void send_tree OF((deflate_state *s, ct_data *tree, int max_code)); -local int build_bl_tree OF((deflate_state *s)); -local void send_all_trees OF((deflate_state *s, int lcodes, int dcodes, - int blcodes)); -local void compress_block OF((deflate_state *s, const ct_data *ltree, - const ct_data *dtree)); -local int detect_data_type OF((deflate_state *s)); -local unsigned bi_reverse OF((unsigned value, int length)); -local void bi_windup OF((deflate_state *s)); -local void bi_flush OF((deflate_state *s)); +/* =========================================================================== + * Reverse the first len bits of a code, using straightforward code (a faster + * method would use a table) + * IN assertion: 1 <= len <= 15 + */ +local unsigned bi_reverse(unsigned code, int len) { + register unsigned res = 0; + do { + res |= code & 1; + code >>= 1, res <<= 1; + } while (--len > 0); + return res >> 1; +} + +/* =========================================================================== + * Flush the bit buffer, keeping at most 7 bits in it. + */ +local void bi_flush(deflate_state *s) { + if (s->bi_valid == 16) { + put_short(s, s->bi_buf); + s->bi_buf = 0; + s->bi_valid = 0; + } else if (s->bi_valid >= 8) { + put_byte(s, (Byte)s->bi_buf); + s->bi_buf >>= 8; + s->bi_valid -= 8; + } +} + +/* =========================================================================== + * Flush the bit buffer and align the output on a byte boundary + */ +local void bi_windup(deflate_state *s) { + if (s->bi_valid > 8) { + put_short(s, s->bi_buf); + } else if (s->bi_valid > 0) { + put_byte(s, (Byte)s->bi_buf); + } + s->bi_used = ((s->bi_valid - 1) & 7) + 1; + s->bi_buf = 0; + s->bi_valid = 0; +#ifdef ZLIB_DEBUG + s->bits_sent = (s->bits_sent + 7) & ~7; +#endif +} + +/* =========================================================================== + * Generate the codes for a given tree and bit counts (which need not be + * optimal). + * IN assertion: the array bl_count contains the bit length statistics for + * the given tree and the field len is set for all tree elements. + * OUT assertion: the field code is set for all tree elements of non + * zero code length. + */ +local void gen_codes(ct_data *tree, int max_code, ushf *bl_count) { + ush next_code[MAX_BITS+1]; /* next code value for each bit length */ + unsigned code = 0; /* running code value */ + int bits; /* bit index */ + int n; /* code index */ + + /* The distribution counts are first used to generate the code values + * without bit reversal. + */ + for (bits = 1; bits <= MAX_BITS; bits++) { + code = (code + bl_count[bits - 1]) << 1; + next_code[bits] = (ush)code; + } + /* Check that the bit counts in bl_count are consistent. The last code + * must be all ones. + */ + Assert (code + bl_count[MAX_BITS] - 1 == (1 << MAX_BITS) - 1, + "inconsistent bit counts"); + Tracev((stderr,"\ngen_codes: max_code %d ", max_code)); + + for (n = 0; n <= max_code; n++) { + int len = tree[n].Len; + if (len == 0) continue; + /* Now reverse the bits */ + tree[n].Code = (ush)bi_reverse(next_code[len]++, len); + + Tracecv(tree != static_ltree, (stderr,"\nn %3d %c l %2d c %4x (%x) ", + n, (isgraph(n) ? n : ' '), len, tree[n].Code, next_code[len] - 1)); + } +} #ifdef GEN_TREES_H -local void gen_trees_header OF((void)); +local void gen_trees_header(void); #endif #ifndef ZLIB_DEBUG @@ -167,33 +245,18 @@ local void gen_trees_header OF((void)); send_bits(s, tree[c].Code, tree[c].Len); } #endif -/* =========================================================================== - * Output a short LSB first on the stream. - * IN assertion: there is enough room in pendingBuf. - */ -#define put_short(s, w) { \ - put_byte(s, (uch)((w) & 0xff)); \ - put_byte(s, (uch)((ush)(w) >> 8)); \ -} - /* =========================================================================== * Send a value on a given number of bits. * IN assertion: length <= 16 and value fits in length bits. */ #ifdef ZLIB_DEBUG -local void send_bits OF((deflate_state *s, int value, int length)); - -local void send_bits(s, value, length) - deflate_state *s; - int value; /* value to send */ - int length; /* number of bits */ -{ +local void send_bits(deflate_state *s, int value, int length) { Tracevv((stderr," l %2d v %4x ", length, value)); Assert(length > 0 && length <= 15, "invalid length"); s->bits_sent += (ulg)length; /* If not enough room in bi_buf, use (valid) bits from bi_buf and - * (16 - bi_valid) bits from value, leaving (width - (16-bi_valid)) + * (16 - bi_valid) bits from value, leaving (width - (16 - bi_valid)) * unused bits in value. */ if (s->bi_valid > (int)Buf_size - length) { @@ -229,8 +292,7 @@ local void send_bits(s, value, length) /* =========================================================================== * Initialize the various 'constant' tables. */ -local void tr_static_init() -{ +local void tr_static_init(void) { #if defined(GEN_TREES_H) || !defined(STDC) static int static_init_done = 0; int n; /* iterates over tree elements */ @@ -256,7 +318,7 @@ local void tr_static_init() length = 0; for (code = 0; code < LENGTH_CODES-1; code++) { base_length[code] = length; - for (n = 0; n < (1< dist code (0..29) */ dist = 0; for (code = 0 ; code < 16; code++) { base_dist[code] = dist; - for (n = 0; n < (1<>= 7; /* from now on, all distances are divided by 128 */ for ( ; code < D_CODES; code++) { base_dist[code] = dist << 7; - for (n = 0; n < (1<<(extra_dbits[code]-7)); n++) { + for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) { _dist_code[256 + dist++] = (uch)code; } } - Assert (dist == 256, "tr_static_init: 256+dist != 512"); + Assert (dist == 256, "tr_static_init: 256 + dist != 512"); /* Construct the codes of the static literal tree */ for (bits = 0; bits <= MAX_BITS; bits++) bl_count[bits] = 0; @@ -312,7 +374,7 @@ local void tr_static_init() } /* =========================================================================== - * Genererate the file trees.h describing the static trees. + * Generate the file trees.h describing the static trees. */ #ifdef GEN_TREES_H # ifndef ZLIB_DEBUG @@ -321,10 +383,9 @@ local void tr_static_init() # define SEPARATOR(i, last, width) \ ((i) == (last)? "\n};\n\n" : \ - ((i) % (width) == (width)-1 ? ",\n" : ", ")) + ((i) % (width) == (width) - 1 ? ",\n" : ", ")) -void gen_trees_header() -{ +void gen_trees_header(void) { FILE *header = fopen("trees.h", "w"); int i; @@ -373,12 +434,26 @@ void gen_trees_header() } #endif /* GEN_TREES_H */ +/* =========================================================================== + * Initialize a new block. + */ +local void init_block(deflate_state *s) { + int n; /* iterates over tree elements */ + + /* Initialize the trees. */ + for (n = 0; n < L_CODES; n++) s->dyn_ltree[n].Freq = 0; + for (n = 0; n < D_CODES; n++) s->dyn_dtree[n].Freq = 0; + for (n = 0; n < BL_CODES; n++) s->bl_tree[n].Freq = 0; + + s->dyn_ltree[END_BLOCK].Freq = 1; + s->opt_len = s->static_len = 0L; + s->sym_next = s->matches = 0; +} + /* =========================================================================== * Initialize the tree data structures for a new zlib stream. */ -void ZLIB_INTERNAL _tr_init(s) - deflate_state *s; -{ +void ZLIB_INTERNAL _tr_init(deflate_state *s) { tr_static_init(); s->l_desc.dyn_tree = s->dyn_ltree; @@ -392,6 +467,7 @@ void ZLIB_INTERNAL _tr_init(s) s->bi_buf = 0; s->bi_valid = 0; + s->bi_used = 0; #ifdef ZLIB_DEBUG s->compressed_len = 0L; s->bits_sent = 0L; @@ -401,24 +477,6 @@ void ZLIB_INTERNAL _tr_init(s) init_block(s); } -/* =========================================================================== - * Initialize a new block. - */ -local void init_block(s) - deflate_state *s; -{ - int n; /* iterates over tree elements */ - - /* Initialize the trees. */ - for (n = 0; n < L_CODES; n++) s->dyn_ltree[n].Freq = 0; - for (n = 0; n < D_CODES; n++) s->dyn_dtree[n].Freq = 0; - for (n = 0; n < BL_CODES; n++) s->bl_tree[n].Freq = 0; - - s->dyn_ltree[END_BLOCK].Freq = 1; - s->opt_len = s->static_len = 0L; - s->last_lit = s->matches = 0; -} - #define SMALLEST 1 /* Index within the heap array of least frequent node in the Huffman tree */ @@ -448,17 +506,13 @@ local void init_block(s) * when the heap property is re-established (each father smaller than its * two sons). */ -local void pqdownheap(s, tree, k) - deflate_state *s; - ct_data *tree; /* the tree to restore */ - int k; /* node to move down */ -{ +local void pqdownheap(deflate_state *s, ct_data *tree, int k) { int v = s->heap[k]; int j = k << 1; /* left son of k */ while (j <= s->heap_len) { /* Set j to the smallest of the two sons: */ if (j < s->heap_len && - smaller(tree, s->heap[j+1], s->heap[j], s->depth)) { + smaller(tree, s->heap[j + 1], s->heap[j], s->depth)) { j++; } /* Exit if v is smaller than both sons */ @@ -483,10 +537,7 @@ local void pqdownheap(s, tree, k) * The length opt_len is updated; static_len is also updated if stree is * not null. */ -local void gen_bitlen(s, desc) - deflate_state *s; - tree_desc *desc; /* the tree descriptor */ -{ +local void gen_bitlen(deflate_state *s, tree_desc *desc) { ct_data *tree = desc->dyn_tree; int max_code = desc->max_code; const ct_data *stree = desc->stat_desc->static_tree; @@ -507,7 +558,7 @@ local void gen_bitlen(s, desc) */ tree[s->heap[s->heap_max]].Len = 0; /* root of the heap */ - for (h = s->heap_max+1; h < HEAP_SIZE; h++) { + for (h = s->heap_max + 1; h < HEAP_SIZE; h++) { n = s->heap[h]; bits = tree[tree[n].Dad].Len + 1; if (bits > max_length) bits = max_length, overflow++; @@ -518,7 +569,7 @@ local void gen_bitlen(s, desc) s->bl_count[bits]++; xbits = 0; - if (n >= base) xbits = extra[n-base]; + if (n >= base) xbits = extra[n - base]; f = tree[n].Freq; s->opt_len += (ulg)f * (unsigned)(bits + xbits); if (stree) s->static_len += (ulg)f * (unsigned)(stree[n].Len + xbits); @@ -530,10 +581,10 @@ local void gen_bitlen(s, desc) /* Find the first bit length which could increase: */ do { - bits = max_length-1; + bits = max_length - 1; while (s->bl_count[bits] == 0) bits--; - s->bl_count[bits]--; /* move one leaf down the tree */ - s->bl_count[bits+1] += 2; /* move one overflow item as its brother */ + s->bl_count[bits]--; /* move one leaf down the tree */ + s->bl_count[bits + 1] += 2; /* move one overflow item as its brother */ s->bl_count[max_length]--; /* The brother of the overflow item also moves one step up, * but this does not affect bl_count[max_length] @@ -561,48 +612,9 @@ local void gen_bitlen(s, desc) } } -/* =========================================================================== - * Generate the codes for a given tree and bit counts (which need not be - * optimal). - * IN assertion: the array bl_count contains the bit length statistics for - * the given tree and the field len is set for all tree elements. - * OUT assertion: the field code is set for all tree elements of non - * zero code length. - */ -local void gen_codes (tree, max_code, bl_count) - ct_data *tree; /* the tree to decorate */ - int max_code; /* largest code with non zero frequency */ - ushf *bl_count; /* number of codes at each bit length */ -{ - ush next_code[MAX_BITS+1]; /* next code value for each bit length */ - unsigned code = 0; /* running code value */ - int bits; /* bit index */ - int n; /* code index */ - - /* The distribution counts are first used to generate the code values - * without bit reversal. - */ - for (bits = 1; bits <= MAX_BITS; bits++) { - code = (code + bl_count[bits-1]) << 1; - next_code[bits] = (ush)code; - } - /* Check that the bit counts in bl_count are consistent. The last code - * must be all ones. - */ - Assert (code + bl_count[MAX_BITS]-1 == (1< +#endif /* =========================================================================== * Construct one Huffman tree and assigns the code bit strings and lengths. @@ -612,10 +624,7 @@ local void gen_codes (tree, max_code, bl_count) * and corresponding code. The length opt_len is updated; static_len is * also updated if stree is not null. The field max_code is set. */ -local void build_tree(s, desc) - deflate_state *s; - tree_desc *desc; /* the tree descriptor */ -{ +local void build_tree(deflate_state *s, tree_desc *desc) { ct_data *tree = desc->dyn_tree; const ct_data *stree = desc->stat_desc->static_tree; int elems = desc->stat_desc->elems; @@ -624,7 +633,7 @@ local void build_tree(s, desc) int node; /* new node being created */ /* Construct the initial heap, with least frequent element in - * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1]. + * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n + 1]. * heap[0] is not used. */ s->heap_len = 0, s->heap_max = HEAP_SIZE; @@ -652,7 +661,7 @@ local void build_tree(s, desc) } desc->max_code = max_code; - /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree, + /* The elements heap[heap_len/2 + 1 .. heap_len] are leaves of the tree, * establish sub-heaps of increasing lengths: */ for (n = s->heap_len/2; n >= 1; n--) pqdownheap(s, tree, n); @@ -700,11 +709,7 @@ local void build_tree(s, desc) * Scan a literal or distance tree to determine the frequencies of the codes * in the bit length tree. */ -local void scan_tree (s, tree, max_code) - deflate_state *s; - ct_data *tree; /* the tree to be scanned */ - int max_code; /* and its largest code of non zero frequency */ -{ +local void scan_tree(deflate_state *s, ct_data *tree, int max_code) { int n; /* iterates over all tree elements */ int prevlen = -1; /* last emitted length */ int curlen; /* length of current code */ @@ -714,14 +719,14 @@ local void scan_tree (s, tree, max_code) int min_count = 4; /* min repeat count */ if (nextlen == 0) max_count = 138, min_count = 3; - tree[max_code+1].Len = (ush)0xffff; /* guard */ + tree[max_code + 1].Len = (ush)0xffff; /* guard */ for (n = 0; n <= max_code; n++) { - curlen = nextlen; nextlen = tree[n+1].Len; + curlen = nextlen; nextlen = tree[n + 1].Len; if (++count < max_count && curlen == nextlen) { continue; } else if (count < min_count) { - s->bl_tree[curlen].Freq += count; + s->bl_tree[curlen].Freq += (ush)count; } else if (curlen != 0) { if (curlen != prevlen) s->bl_tree[curlen].Freq++; s->bl_tree[REP_3_6].Freq++; @@ -745,11 +750,7 @@ local void scan_tree (s, tree, max_code) * Send a literal or distance tree in compressed form, using the codes in * bl_tree. */ -local void send_tree (s, tree, max_code) - deflate_state *s; - ct_data *tree; /* the tree to be scanned */ - int max_code; /* and its largest code of non zero frequency */ -{ +local void send_tree(deflate_state *s, ct_data *tree, int max_code) { int n; /* iterates over all tree elements */ int prevlen = -1; /* last emitted length */ int curlen; /* length of current code */ @@ -758,11 +759,11 @@ local void send_tree (s, tree, max_code) int max_count = 7; /* max repeat count */ int min_count = 4; /* min repeat count */ - /* tree[max_code+1].Len = -1; */ /* guard already set */ + /* tree[max_code + 1].Len = -1; */ /* guard already set */ if (nextlen == 0) max_count = 138, min_count = 3; for (n = 0; n <= max_code; n++) { - curlen = nextlen; nextlen = tree[n+1].Len; + curlen = nextlen; nextlen = tree[n + 1].Len; if (++count < max_count && curlen == nextlen) { continue; } else if (count < min_count) { @@ -773,13 +774,13 @@ local void send_tree (s, tree, max_code) send_code(s, curlen, s->bl_tree); count--; } Assert(count >= 3 && count <= 6, " 3_6?"); - send_code(s, REP_3_6, s->bl_tree); send_bits(s, count-3, 2); + send_code(s, REP_3_6, s->bl_tree); send_bits(s, count - 3, 2); } else if (count <= 10) { - send_code(s, REPZ_3_10, s->bl_tree); send_bits(s, count-3, 3); + send_code(s, REPZ_3_10, s->bl_tree); send_bits(s, count - 3, 3); } else { - send_code(s, REPZ_11_138, s->bl_tree); send_bits(s, count-11, 7); + send_code(s, REPZ_11_138, s->bl_tree); send_bits(s, count - 11, 7); } count = 0; prevlen = curlen; if (nextlen == 0) { @@ -796,9 +797,7 @@ local void send_tree (s, tree, max_code) * Construct the Huffman tree for the bit lengths and return the index in * bl_order of the last bit length code to send. */ -local int build_bl_tree(s) - deflate_state *s; -{ +local int build_bl_tree(deflate_state *s) { int max_blindex; /* index of last bit length code of non zero freq */ /* Determine the bit length frequencies for literal and distance trees */ @@ -807,8 +806,8 @@ local int build_bl_tree(s) /* Build the bit length tree: */ build_tree(s, (tree_desc *)(&(s->bl_desc))); - /* opt_len now includes the length of the tree representations, except - * the lengths of the bit lengths codes and the 5+5+4 bits for the counts. + /* opt_len now includes the length of the tree representations, except the + * lengths of the bit lengths codes and the 5 + 5 + 4 bits for the counts. */ /* Determine the number of bit length codes to send. The pkzip format @@ -819,7 +818,7 @@ local int build_bl_tree(s) if (s->bl_tree[bl_order[max_blindex]].Len != 0) break; } /* Update opt_len to include the bit length tree and counts */ - s->opt_len += 3*((ulg)max_blindex+1) + 5+5+4; + s->opt_len += 3*((ulg)max_blindex + 1) + 5 + 5 + 4; Tracev((stderr, "\ndyn trees: dyn %ld, stat %ld", s->opt_len, s->static_len)); @@ -831,61 +830,54 @@ local int build_bl_tree(s) * lengths of the bit length codes, the literal tree and the distance tree. * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4. */ -local void send_all_trees(s, lcodes, dcodes, blcodes) - deflate_state *s; - int lcodes, dcodes, blcodes; /* number of codes for each tree */ -{ +local void send_all_trees(deflate_state *s, int lcodes, int dcodes, + int blcodes) { int rank; /* index in bl_order */ Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, "not enough codes"); Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES, "too many codes"); Tracev((stderr, "\nbl counts: ")); - send_bits(s, lcodes-257, 5); /* not +255 as stated in appnote.txt */ - send_bits(s, dcodes-1, 5); - send_bits(s, blcodes-4, 4); /* not -3 as stated in appnote.txt */ + send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */ + send_bits(s, dcodes - 1, 5); + send_bits(s, blcodes - 4, 4); /* not -3 as stated in appnote.txt */ for (rank = 0; rank < blcodes; rank++) { Tracev((stderr, "\nbl code %2d ", bl_order[rank])); send_bits(s, s->bl_tree[bl_order[rank]].Len, 3); } Tracev((stderr, "\nbl tree: sent %ld", s->bits_sent)); - send_tree(s, (ct_data *)s->dyn_ltree, lcodes-1); /* literal tree */ + send_tree(s, (ct_data *)s->dyn_ltree, lcodes - 1); /* literal tree */ Tracev((stderr, "\nlit tree: sent %ld", s->bits_sent)); - send_tree(s, (ct_data *)s->dyn_dtree, dcodes-1); /* distance tree */ + send_tree(s, (ct_data *)s->dyn_dtree, dcodes - 1); /* distance tree */ Tracev((stderr, "\ndist tree: sent %ld", s->bits_sent)); } /* =========================================================================== * Send a stored block */ -void ZLIB_INTERNAL _tr_stored_block(s, buf, stored_len, last) - deflate_state *s; - charf *buf; /* input block */ - ulg stored_len; /* length of input block */ - int last; /* one if this is the last block for a file */ -{ - send_bits(s, (STORED_BLOCK<<1)+last, 3); /* send block type */ +void ZLIB_INTERNAL _tr_stored_block(deflate_state *s, charf *buf, + ulg stored_len, int last) { + send_bits(s, (STORED_BLOCK<<1) + last, 3); /* send block type */ bi_windup(s); /* align on byte boundary */ put_short(s, (ush)stored_len); put_short(s, (ush)~stored_len); - zmemcpy(s->pending_buf + s->pending, (Bytef *)buf, stored_len); + if (stored_len) + zmemcpy(s->pending_buf + s->pending, (Bytef *)buf, stored_len); s->pending += stored_len; #ifdef ZLIB_DEBUG s->compressed_len = (s->compressed_len + 3 + 7) & (ulg)~7L; s->compressed_len += (stored_len + 4) << 3; s->bits_sent += 2*16; - s->bits_sent += stored_len<<3; + s->bits_sent += stored_len << 3; #endif } /* =========================================================================== * Flush the bits in the bit buffer to pending output (leaves at most 7 bits) */ -void ZLIB_INTERNAL _tr_flush_bits(s) - deflate_state *s; -{ +void ZLIB_INTERNAL _tr_flush_bits(deflate_state *s) { bi_flush(s); } @@ -893,9 +885,7 @@ void ZLIB_INTERNAL _tr_flush_bits(s) * Send one empty static block to give enough lookahead for inflate. * This takes 10 bits, of which 7 may remain in the bit buffer. */ -void ZLIB_INTERNAL _tr_align(s) - deflate_state *s; -{ +void ZLIB_INTERNAL _tr_align(deflate_state *s) { send_bits(s, STATIC_TREES<<1, 3); send_code(s, END_BLOCK, static_ltree); #ifdef ZLIB_DEBUG @@ -904,16 +894,108 @@ void ZLIB_INTERNAL _tr_align(s) bi_flush(s); } +/* =========================================================================== + * Send the block data compressed using the given Huffman trees + */ +local void compress_block(deflate_state *s, const ct_data *ltree, + const ct_data *dtree) { + unsigned dist; /* distance of matched string */ + int lc; /* match length or unmatched char (if dist == 0) */ + unsigned sx = 0; /* running index in symbol buffers */ + unsigned code; /* the code to send */ + int extra; /* number of extra bits to send */ + + if (s->sym_next != 0) do { +#ifdef LIT_MEM + dist = s->d_buf[sx]; + lc = s->l_buf[sx++]; +#else + dist = s->sym_buf[sx++] & 0xff; + dist += (unsigned)(s->sym_buf[sx++] & 0xff) << 8; + lc = s->sym_buf[sx++]; +#endif + if (dist == 0) { + send_code(s, lc, ltree); /* send a literal byte */ + Tracecv(isgraph(lc), (stderr," '%c' ", lc)); + } else { + /* Here, lc is the match length - MIN_MATCH */ + code = _length_code[lc]; + send_code(s, code + LITERALS + 1, ltree); /* send length code */ + extra = extra_lbits[code]; + if (extra != 0) { + lc -= base_length[code]; + send_bits(s, lc, extra); /* send the extra length bits */ + } + dist--; /* dist is now the match distance - 1 */ + code = d_code(dist); + Assert (code < D_CODES, "bad d_code"); + + send_code(s, code, dtree); /* send the distance code */ + extra = extra_dbits[code]; + if (extra != 0) { + dist -= (unsigned)base_dist[code]; + send_bits(s, dist, extra); /* send the extra distance bits */ + } + } /* literal or match pair ? */ + + /* Check for no overlay of pending_buf on needed symbols */ +#ifdef LIT_MEM + Assert(s->pending < 2 * (s->lit_bufsize + sx), "pendingBuf overflow"); +#else + Assert(s->pending < s->lit_bufsize + sx, "pendingBuf overflow"); +#endif + + } while (sx < s->sym_next); + + send_code(s, END_BLOCK, ltree); +} + +/* =========================================================================== + * Check if the data type is TEXT or BINARY, using the following algorithm: + * - TEXT if the two conditions below are satisfied: + * a) There are no non-portable control characters belonging to the + * "block list" (0..6, 14..25, 28..31). + * b) There is at least one printable character belonging to the + * "allow list" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255). + * - BINARY otherwise. + * - The following partially-portable control characters form a + * "gray list" that is ignored in this detection algorithm: + * (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}). + * IN assertion: the fields Freq of dyn_ltree are set. + */ +local int detect_data_type(deflate_state *s) { + /* block_mask is the bit mask of block-listed bytes + * set bits 0..6, 14..25, and 28..31 + * 0xf3ffc07f = binary 11110011111111111100000001111111 + */ + unsigned long block_mask = 0xf3ffc07fUL; + int n; + + /* Check for non-textual ("block-listed") bytes. */ + for (n = 0; n <= 31; n++, block_mask >>= 1) + if ((block_mask & 1) && (s->dyn_ltree[n].Freq != 0)) + return Z_BINARY; + + /* Check for textual ("allow-listed") bytes. */ + if (s->dyn_ltree[9].Freq != 0 || s->dyn_ltree[10].Freq != 0 + || s->dyn_ltree[13].Freq != 0) + return Z_TEXT; + for (n = 32; n < LITERALS; n++) + if (s->dyn_ltree[n].Freq != 0) + return Z_TEXT; + + /* There are no "block-listed" or "allow-listed" bytes: + * this stream either is empty or has tolerated ("gray-listed") bytes only. + */ + return Z_BINARY; +} + /* =========================================================================== * Determine the best encoding for the current block: dynamic trees, static * trees or store, and write out the encoded block. */ -void ZLIB_INTERNAL _tr_flush_block(s, buf, stored_len, last) - deflate_state *s; - charf *buf; /* input block, or NULL if too old */ - ulg stored_len; /* length of input block */ - int last; /* one if this is the last block for a file */ -{ +void ZLIB_INTERNAL _tr_flush_block(deflate_state *s, charf *buf, + ulg stored_len, int last) { ulg opt_lenb, static_lenb; /* opt_len and static_len in bytes */ int max_blindex = 0; /* index of last bit length code of non zero freq */ @@ -942,14 +1024,17 @@ void ZLIB_INTERNAL _tr_flush_block(s, buf, stored_len, last) max_blindex = build_bl_tree(s); /* Determine the best encoding. Compute the block lengths in bytes. */ - opt_lenb = (s->opt_len+3+7)>>3; - static_lenb = (s->static_len+3+7)>>3; + opt_lenb = (s->opt_len + 3 + 7) >> 3; + static_lenb = (s->static_len + 3 + 7) >> 3; Tracev((stderr, "\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u ", opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len, - s->last_lit)); + s->sym_next / 3)); - if (static_lenb <= opt_lenb) opt_lenb = static_lenb; +#ifndef FORCE_STATIC + if (static_lenb <= opt_lenb || s->strategy == Z_FIXED) +#endif + opt_lenb = static_lenb; } else { Assert(buf != (char*)0, "lost buf"); @@ -959,7 +1044,7 @@ void ZLIB_INTERNAL _tr_flush_block(s, buf, stored_len, last) #ifdef FORCE_STORED if (buf != (char*)0) { /* force stored block */ #else - if (stored_len+4 <= opt_lenb && buf != (char*)0) { + if (stored_len + 4 <= opt_lenb && buf != (char*)0) { /* 4: two words for the lengths */ #endif /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE. @@ -970,21 +1055,17 @@ void ZLIB_INTERNAL _tr_flush_block(s, buf, stored_len, last) */ _tr_stored_block(s, buf, stored_len, last); -#ifdef FORCE_STATIC - } else if (static_lenb >= 0) { /* force static trees */ -#else - } else if (s->strategy == Z_FIXED || static_lenb == opt_lenb) { -#endif - send_bits(s, (STATIC_TREES<<1)+last, 3); + } else if (static_lenb == opt_lenb) { + send_bits(s, (STATIC_TREES<<1) + last, 3); compress_block(s, (const ct_data *)static_ltree, (const ct_data *)static_dtree); #ifdef ZLIB_DEBUG s->compressed_len += 3 + s->static_len; #endif } else { - send_bits(s, (DYN_TREES<<1)+last, 3); - send_all_trees(s, s->l_desc.max_code+1, s->d_desc.max_code+1, - max_blindex+1); + send_bits(s, (DYN_TREES<<1) + last, 3); + send_all_trees(s, s->l_desc.max_code + 1, s->d_desc.max_code + 1, + max_blindex + 1); compress_block(s, (const ct_data *)s->dyn_ltree, (const ct_data *)s->dyn_dtree); #ifdef ZLIB_DEBUG @@ -1003,21 +1084,23 @@ void ZLIB_INTERNAL _tr_flush_block(s, buf, stored_len, last) s->compressed_len += 7; /* align on byte boundary */ #endif } - Tracev((stderr,"\ncomprlen %lu(%lu) ", s->compressed_len>>3, - s->compressed_len-7*last)); + Tracev((stderr,"\ncomprlen %lu(%lu) ", s->compressed_len >> 3, + s->compressed_len - 7*last)); } /* =========================================================================== * Save the match info and tally the frequency counts. Return true if * the current block must be flushed. */ -int ZLIB_INTERNAL _tr_tally (s, dist, lc) - deflate_state *s; - unsigned dist; /* distance of matched string */ - unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */ -{ - s->d_buf[s->last_lit] = (ush)dist; - s->l_buf[s->last_lit++] = (uch)lc; +int ZLIB_INTERNAL _tr_tally(deflate_state *s, unsigned dist, unsigned lc) { +#ifdef LIT_MEM + s->d_buf[s->sym_next] = (ush)dist; + s->l_buf[s->sym_next++] = (uch)lc; +#else + s->sym_buf[s->sym_next++] = (uch)dist; + s->sym_buf[s->sym_next++] = (uch)(dist >> 8); + s->sym_buf[s->sym_next++] = (uch)lc; +#endif if (dist == 0) { /* lc is the unmatched char */ s->dyn_ltree[lc].Freq++; @@ -1029,175 +1112,8 @@ int ZLIB_INTERNAL _tr_tally (s, dist, lc) (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) && (ush)d_code(dist) < (ush)D_CODES, "_tr_tally: bad match"); - s->dyn_ltree[_length_code[lc]+LITERALS+1].Freq++; + s->dyn_ltree[_length_code[lc] + LITERALS + 1].Freq++; s->dyn_dtree[d_code(dist)].Freq++; } - -#ifdef TRUNCATE_BLOCK - /* Try to guess if it is profitable to stop the current block here */ - if ((s->last_lit & 0x1fff) == 0 && s->level > 2) { - /* Compute an upper bound for the compressed length */ - ulg out_length = (ulg)s->last_lit*8L; - ulg in_length = (ulg)((long)s->strstart - s->block_start); - int dcode; - for (dcode = 0; dcode < D_CODES; dcode++) { - out_length += (ulg)s->dyn_dtree[dcode].Freq * - (5L+extra_dbits[dcode]); - } - out_length >>= 3; - Tracev((stderr,"\nlast_lit %u, in %ld, out ~%ld(%ld%%) ", - s->last_lit, in_length, out_length, - 100L - out_length*100L/in_length)); - if (s->matches < s->last_lit/2 && out_length < in_length/2) return 1; - } -#endif - return (s->last_lit == s->lit_bufsize-1); - /* We avoid equality with lit_bufsize because of wraparound at 64K - * on 16 bit machines and because stored blocks are restricted to - * 64K-1 bytes. - */ -} - -/* =========================================================================== - * Send the block data compressed using the given Huffman trees - */ -local void compress_block(s, ltree, dtree) - deflate_state *s; - const ct_data *ltree; /* literal tree */ - const ct_data *dtree; /* distance tree */ -{ - unsigned dist; /* distance of matched string */ - int lc; /* match length or unmatched char (if dist == 0) */ - unsigned lx = 0; /* running index in l_buf */ - unsigned code; /* the code to send */ - int extra; /* number of extra bits to send */ - - if (s->last_lit != 0) do { - dist = s->d_buf[lx]; - lc = s->l_buf[lx++]; - if (dist == 0) { - send_code(s, lc, ltree); /* send a literal byte */ - Tracecv(isgraph(lc), (stderr," '%c' ", lc)); - } else { - /* Here, lc is the match length - MIN_MATCH */ - code = _length_code[lc]; - send_code(s, code+LITERALS+1, ltree); /* send the length code */ - extra = extra_lbits[code]; - if (extra != 0) { - lc -= base_length[code]; - send_bits(s, lc, extra); /* send the extra length bits */ - } - dist--; /* dist is now the match distance - 1 */ - code = d_code(dist); - Assert (code < D_CODES, "bad d_code"); - - send_code(s, code, dtree); /* send the distance code */ - extra = extra_dbits[code]; - if (extra != 0) { - dist -= (unsigned)base_dist[code]; - send_bits(s, dist, extra); /* send the extra distance bits */ - } - } /* literal or match pair ? */ - - /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */ - Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx, - "pendingBuf overflow"); - - } while (lx < s->last_lit); - - send_code(s, END_BLOCK, ltree); -} - -/* =========================================================================== - * Check if the data type is TEXT or BINARY, using the following algorithm: - * - TEXT if the two conditions below are satisfied: - * a) There are no non-portable control characters belonging to the - * "black list" (0..6, 14..25, 28..31). - * b) There is at least one printable character belonging to the - * "white list" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255). - * - BINARY otherwise. - * - The following partially-portable control characters form a - * "gray list" that is ignored in this detection algorithm: - * (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}). - * IN assertion: the fields Freq of dyn_ltree are set. - */ -local int detect_data_type(s) - deflate_state *s; -{ - /* black_mask is the bit mask of black-listed bytes - * set bits 0..6, 14..25, and 28..31 - * 0xf3ffc07f = binary 11110011111111111100000001111111 - */ - unsigned long black_mask = 0xf3ffc07fUL; - int n; - - /* Check for non-textual ("black-listed") bytes. */ - for (n = 0; n <= 31; n++, black_mask >>= 1) - if ((black_mask & 1) && (s->dyn_ltree[n].Freq != 0)) - return Z_BINARY; - - /* Check for textual ("white-listed") bytes. */ - if (s->dyn_ltree[9].Freq != 0 || s->dyn_ltree[10].Freq != 0 - || s->dyn_ltree[13].Freq != 0) - return Z_TEXT; - for (n = 32; n < LITERALS; n++) - if (s->dyn_ltree[n].Freq != 0) - return Z_TEXT; - - /* There are no "black-listed" or "white-listed" bytes: - * this stream either is empty or has tolerated ("gray-listed") bytes only. - */ - return Z_BINARY; -} - -/* =========================================================================== - * Reverse the first len bits of a code, using straightforward code (a faster - * method would use a table) - * IN assertion: 1 <= len <= 15 - */ -local unsigned bi_reverse(code, len) - unsigned code; /* the value to invert */ - int len; /* its bit length */ -{ - register unsigned res = 0; - do { - res |= code & 1; - code >>= 1, res <<= 1; - } while (--len > 0); - return res >> 1; -} - -/* =========================================================================== - * Flush the bit buffer, keeping at most 7 bits in it. - */ -local void bi_flush(s) - deflate_state *s; -{ - if (s->bi_valid == 16) { - put_short(s, s->bi_buf); - s->bi_buf = 0; - s->bi_valid = 0; - } else if (s->bi_valid >= 8) { - put_byte(s, (Byte)s->bi_buf); - s->bi_buf >>= 8; - s->bi_valid -= 8; - } -} - -/* =========================================================================== - * Flush the bit buffer and align the output on a byte boundary - */ -local void bi_windup(s) - deflate_state *s; -{ - if (s->bi_valid > 8) { - put_short(s, s->bi_buf); - } else if (s->bi_valid > 0) { - put_byte(s, (Byte)s->bi_buf); - } - s->bi_buf = 0; - s->bi_valid = 0; -#ifdef ZLIB_DEBUG - s->bits_sent = (s->bits_sent+7) & ~7; -#endif + return (s->sym_next == s->sym_end); } diff --git a/deps/zlib/uncompr.c b/deps/zlib/uncompr.c index f03a1a865..5e256663b 100644 --- a/deps/zlib/uncompr.c +++ b/deps/zlib/uncompr.c @@ -24,12 +24,8 @@ Z_DATA_ERROR if the input data was corrupted, including if the input data is an incomplete zlib stream. */ -int ZEXPORT uncompress2 (dest, destLen, source, sourceLen) - Bytef *dest; - uLongf *destLen; - const Bytef *source; - uLong *sourceLen; -{ +int ZEXPORT uncompress2(Bytef *dest, uLongf *destLen, const Bytef *source, + uLong *sourceLen) { z_stream stream; int err; const uInt max = (uInt)-1; @@ -83,11 +79,7 @@ int ZEXPORT uncompress2 (dest, destLen, source, sourceLen) err; } -int ZEXPORT uncompress (dest, destLen, source, sourceLen) - Bytef *dest; - uLongf *destLen; - const Bytef *source; - uLong sourceLen; -{ +int ZEXPORT uncompress(Bytef *dest, uLongf *destLen, const Bytef *source, + uLong sourceLen) { return uncompress2(dest, destLen, source, &sourceLen); } diff --git a/deps/zlib/win32/DLL_FAQ.txt b/deps/zlib/win32/DLL_FAQ.txt index 12c009018..07760df1a 100644 --- a/deps/zlib/win32/DLL_FAQ.txt +++ b/deps/zlib/win32/DLL_FAQ.txt @@ -3,21 +3,17 @@ This document describes the design, the rationale, and the usage -of the official DLL build of zlib, named ZLIB1.DLL. If you have +of the common DLL build of zlib, named ZLIB1.DLL. If you have general questions about zlib, you should see the file "FAQ" found in the zlib distribution, or at the following location: - http://www.gzip.org/zlib/zlib_faq.html + https://www.zlib.net/zlib_faq.html 1. What is ZLIB1.DLL, and how can I get it? - - ZLIB1.DLL is the official build of zlib as a DLL. + - ZLIB1.DLL is the common build of zlib as a DLL. (Please remark the character '1' in the name.) - Pointers to a precompiled ZLIB1.DLL can be found in the zlib - web site at: - http://www.zlib.net/ - Applications that link to ZLIB1.DLL can rely on the following specification: @@ -379,18 +375,6 @@ in the zlib distribution, or at the following location: code. But you can make your own private DLL build, under a different file name, as suggested in the previous answer. - -17. I made my own ZLIB1.DLL build. Can I test it for compliance? - - - We prefer that you download the official DLL from the zlib - web site. If you need something peculiar from this DLL, you - can send your suggestion to the zlib mailing list. - - However, in case you do rebuild the DLL yourself, you can run - it with the test programs found in the DLL distribution. - Running these test programs is not a guarantee of compliance, - but a failure can imply a detected problem. - ** This document is written and maintained by diff --git a/deps/zlib/win32/Makefile.bor b/deps/zlib/win32/Makefile.bor index d152bbb7f..4495353f3 100644 --- a/deps/zlib/win32/Makefile.bor +++ b/deps/zlib/win32/Makefile.bor @@ -3,7 +3,6 @@ # # Usage: # make -f win32/Makefile.bor -# make -f win32/Makefile.bor LOCAL_ZLIB=-DASMV OBJA=match.obj OBJPA=+match.obj # ------------ Borland C++ ------------ diff --git a/deps/zlib/win32/Makefile.gcc b/deps/zlib/win32/Makefile.gcc index 305be50af..35172fb35 100644 --- a/deps/zlib/win32/Makefile.gcc +++ b/deps/zlib/win32/Makefile.gcc @@ -11,10 +11,6 @@ # # make -fwin32/Makefile.gcc; make test testdll -fwin32/Makefile.gcc # -# To use the asm code, type: -# cp contrib/asm?86/match.S ./match.S -# make LOC=-DASMV OBJA=match.o -fwin32/Makefile.gcc -# # To install libz.a, zconf.h and zlib.h in the system directories, type: # # make install -fwin32/Makefile.gcc @@ -38,7 +34,6 @@ IMPLIB = libz.dll.a # SHARED_MODE=0 -#LOC = -DASMV #LOC = -DZLIB_DEBUG -g PREFIX = @@ -55,7 +50,7 @@ AR = $(PREFIX)ar ARFLAGS = rcs RC = $(PREFIX)windres -RCFLAGS = --define GCC_WINDRES +RCFLAGS = STRIP = $(PREFIX)strip diff --git a/deps/zlib/win32/Makefile.msc b/deps/zlib/win32/Makefile.msc index 6831882de..9c6515360 100644 --- a/deps/zlib/win32/Makefile.msc +++ b/deps/zlib/win32/Makefile.msc @@ -4,10 +4,6 @@ # Usage: # nmake -f win32/Makefile.msc (standard build) # nmake -f win32/Makefile.msc LOC=-DFOO (nonstandard build) -# nmake -f win32/Makefile.msc LOC="-DASMV -DASMINF" \ -# OBJA="inffas32.obj match686.obj" (use ASM code, x86) -# nmake -f win32/Makefile.msc AS=ml64 LOC="-DASMV -DASMINF -I." \ -# OBJA="inffasx64.obj gvmat64.obj inffas8664.obj" (use ASM code, x64) # The toplevel directory of the source tree. # diff --git a/deps/zlib/win32/README-WIN32.txt b/deps/zlib/win32/README-WIN32.txt index df7ab7f4b..88cb470f4 100644 --- a/deps/zlib/win32/README-WIN32.txt +++ b/deps/zlib/win32/README-WIN32.txt @@ -1,6 +1,6 @@ ZLIB DATA COMPRESSION LIBRARY -zlib 1.2.11 is a general purpose data compression library. All the code is +zlib 1.3.1.1 is a general purpose data compression library. All the code is thread safe. The data format used by the zlib library is described by RFCs (Request for Comments) 1950 to 1952 in the files http://www.ietf.org/rfc/rfc1950.txt (zlib format), rfc1951.txt (deflate format) @@ -16,13 +16,13 @@ is http://zlib.net/ . Before reporting a problem, please check this site to verify that you have the latest version of zlib; otherwise get the latest version and check whether the problem still exists or not. -PLEASE read DLL_FAQ.txt, and the the zlib FAQ http://zlib.net/zlib_faq.html -before asking for help. +PLEASE read DLL_FAQ.txt, and the zlib FAQ http://zlib.net/zlib_faq.html before +asking for help. Manifest: -The package zlib-1.2.11-win32-x86.zip will contain the following files: +The package zlib-1.3.1.1-win32-x86.zip will contain the following files: README-WIN32.txt This document ChangeLog Changes since previous zlib packages diff --git a/deps/zlib/win32/zlib.def b/deps/zlib/win32/zlib.def index 784b13869..84f6496d8 100644 --- a/deps/zlib/win32/zlib.def +++ b/deps/zlib/win32/zlib.def @@ -15,6 +15,7 @@ EXPORTS deflateTune deflateBound deflatePending + deflateUsed deflatePrime deflateSetHeader inflateSetDictionary @@ -69,6 +70,7 @@ EXPORTS gzoffset64 adler32_combine64 crc32_combine64 + crc32_combine_gen64 ; checksum functions adler32 adler32_z @@ -76,6 +78,8 @@ EXPORTS crc32_z adler32_combine crc32_combine + crc32_combine_gen + crc32_combine_op ; various hacks, don't look :) deflateInit_ deflateInit2_ diff --git a/deps/zlib/win32/zlib1.rc b/deps/zlib/win32/zlib1.rc index 234e641c3..e4847d85b 100644 --- a/deps/zlib/win32/zlib1.rc +++ b/deps/zlib/win32/zlib1.rc @@ -1,11 +1,8 @@ #include #include "../zlib.h" -#ifdef GCC_WINDRES VS_VERSION_INFO VERSIONINFO -#else -VS_VERSION_INFO VERSIONINFO MOVEABLE IMPURE LOADONCALL DISCARDABLE -#endif + FILEVERSION ZLIB_VER_MAJOR,ZLIB_VER_MINOR,ZLIB_VER_REVISION,0 PRODUCTVERSION ZLIB_VER_MAJOR,ZLIB_VER_MINOR,ZLIB_VER_REVISION,0 FILEFLAGSMASK VS_FFI_FILEFLAGSMASK @@ -26,7 +23,7 @@ BEGIN VALUE "FileDescription", "zlib data compression library\0" VALUE "FileVersion", ZLIB_VERSION "\0" VALUE "InternalName", "zlib1.dll\0" - VALUE "LegalCopyright", "(C) 1995-2017 Jean-loup Gailly & Mark Adler\0" + VALUE "LegalCopyright", "(C) 1995-2022 Jean-loup Gailly & Mark Adler\0" VALUE "OriginalFilename", "zlib1.dll\0" VALUE "ProductName", "zlib\0" VALUE "ProductVersion", ZLIB_VERSION "\0" diff --git a/deps/zlib/zconf.h b/deps/zlib/zconf.h index 5e1d68a00..bc3ef079b 100644 --- a/deps/zlib/zconf.h +++ b/deps/zlib/zconf.h @@ -1,5 +1,5 @@ /* zconf.h -- configuration of the zlib compression library - * Copyright (C) 1995-2016 Jean-loup Gailly, Mark Adler + * Copyright (C) 1995-2024 Jean-loup Gailly, Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -38,6 +38,9 @@ # define crc32 z_crc32 # define crc32_combine z_crc32_combine # define crc32_combine64 z_crc32_combine64 +# define crc32_combine_gen z_crc32_combine_gen +# define crc32_combine_gen64 z_crc32_combine_gen64 +# define crc32_combine_op z_crc32_combine_op # define crc32_z z_crc32_z # define deflate z_deflate # define deflateBound z_deflateBound @@ -56,6 +59,7 @@ # define deflateSetDictionary z_deflateSetDictionary # define deflateSetHeader z_deflateSetHeader # define deflateTune z_deflateTune +# define deflateUsed z_deflateUsed # define deflate_copyright z_deflate_copyright # define get_crc_table z_get_crc_table # ifndef Z_SOLO @@ -231,14 +235,20 @@ # endif #endif -#if defined(ZLIB_CONST) && !defined(z_const) -# define z_const const -#else -# define z_const +#ifndef z_const +# ifdef ZLIB_CONST +# define z_const const +# else +# define z_const +# endif #endif #ifdef Z_SOLO - typedef unsigned long z_size_t; +# ifdef _WIN64 + typedef unsigned long long z_size_t; +# else + typedef unsigned long z_size_t; +# endif #else # define z_longlong long long # if defined(NO_SIZE_T) @@ -293,14 +303,6 @@ # endif #endif -#ifndef Z_ARG /* function prototypes for stdarg */ -# if defined(STDC) || defined(Z_HAVE_STDARG_H) -# define Z_ARG(args) args -# else -# define Z_ARG(args) () -# endif -#endif - /* The following definitions for FAR are needed only for MSDOS mixed * model programming (small or medium model with some far allocations). * This was tested only with MSC; for other MSDOS compilers you may have @@ -349,6 +351,9 @@ # ifdef FAR # undef FAR # endif +# ifndef WIN32_LEAN_AND_MEAN +# define WIN32_LEAN_AND_MEAN +# endif # include /* No need for _export, use ZLIB.DEF instead. */ /* For complete Windows compatibility, use WINAPI, not __stdcall. */ @@ -431,11 +436,11 @@ typedef uLong FAR uLongf; typedef unsigned long z_crc_t; #endif -#ifdef HAVE_UNISTD_H /* may be set to #if 1 by ./configure */ +#if HAVE_UNISTD_H-0 /* may be set to #if 1 by ./configure */ # define Z_HAVE_UNISTD_H #endif -#ifdef HAVE_STDARG_H /* may be set to #if 1 by ./configure */ +#if HAVE_STDARG_H-0 /* may be set to #if 1 by ./configure */ # define Z_HAVE_STDARG_H #endif @@ -467,11 +472,14 @@ typedef uLong FAR uLongf; # undef _LARGEFILE64_SOURCE #endif -#if defined(__WATCOMC__) && !defined(Z_HAVE_UNISTD_H) -# define Z_HAVE_UNISTD_H +#ifndef Z_HAVE_UNISTD_H +# if defined(__WATCOMC__) || defined(__GO32__) || \ + (defined(_LARGEFILE64_SOURCE) && !defined(_WIN32)) +# define Z_HAVE_UNISTD_H +# endif #endif #ifndef Z_SOLO -# if defined(Z_HAVE_UNISTD_H) || defined(_LARGEFILE64_SOURCE) +# if defined(Z_HAVE_UNISTD_H) # include /* for SEEK_*, off_t, and _LFS64_LARGEFILE */ # ifdef VMS # include /* for off_t */ @@ -501,17 +509,19 @@ typedef uLong FAR uLongf; #endif #ifndef z_off_t -# define z_off_t long +# define z_off_t long long #endif #if !defined(_WIN32) && defined(Z_LARGE64) # define z_off64_t off64_t +#elif defined(__MINGW32__) +# define z_off64_t long long +#elif defined(_WIN32) && !defined(__GNUC__) +# define z_off64_t __int64 +#elif defined(__GO32__) +# define z_off64_t offset_t #else -# if defined(_WIN32) && !defined(__GNUC__) && !defined(Z_SOLO) -# define z_off64_t __int64 -# else -# define z_off64_t z_off_t -# endif +# define z_off64_t z_off_t #endif /* MVS linker does not support external names larger than 8 bytes */ diff --git a/deps/zlib/zconf.h.cmakein b/deps/zlib/zconf.h.cmakein deleted file mode 100644 index a7f24cce6..000000000 --- a/deps/zlib/zconf.h.cmakein +++ /dev/null @@ -1,536 +0,0 @@ -/* zconf.h -- configuration of the zlib compression library - * Copyright (C) 1995-2016 Jean-loup Gailly, Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* @(#) $Id$ */ - -#ifndef ZCONF_H -#define ZCONF_H -#cmakedefine Z_PREFIX -#cmakedefine Z_HAVE_UNISTD_H - -/* - * If you *really* need a unique prefix for all types and library functions, - * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it. - * Even better than compiling with -DZ_PREFIX would be to use configure to set - * this permanently in zconf.h using "./configure --zprefix". - */ -#ifdef Z_PREFIX /* may be set to #if 1 by ./configure */ -# define Z_PREFIX_SET - -/* all linked symbols and init macros */ -# define _dist_code z__dist_code -# define _length_code z__length_code -# define _tr_align z__tr_align -# define _tr_flush_bits z__tr_flush_bits -# define _tr_flush_block z__tr_flush_block -# define _tr_init z__tr_init -# define _tr_stored_block z__tr_stored_block -# define _tr_tally z__tr_tally -# define adler32 z_adler32 -# define adler32_combine z_adler32_combine -# define adler32_combine64 z_adler32_combine64 -# define adler32_z z_adler32_z -# ifndef Z_SOLO -# define compress z_compress -# define compress2 z_compress2 -# define compressBound z_compressBound -# endif -# define crc32 z_crc32 -# define crc32_combine z_crc32_combine -# define crc32_combine64 z_crc32_combine64 -# define crc32_z z_crc32_z -# define deflate z_deflate -# define deflateBound z_deflateBound -# define deflateCopy z_deflateCopy -# define deflateEnd z_deflateEnd -# define deflateGetDictionary z_deflateGetDictionary -# define deflateInit z_deflateInit -# define deflateInit2 z_deflateInit2 -# define deflateInit2_ z_deflateInit2_ -# define deflateInit_ z_deflateInit_ -# define deflateParams z_deflateParams -# define deflatePending z_deflatePending -# define deflatePrime z_deflatePrime -# define deflateReset z_deflateReset -# define deflateResetKeep z_deflateResetKeep -# define deflateSetDictionary z_deflateSetDictionary -# define deflateSetHeader z_deflateSetHeader -# define deflateTune z_deflateTune -# define deflate_copyright z_deflate_copyright -# define get_crc_table z_get_crc_table -# ifndef Z_SOLO -# define gz_error z_gz_error -# define gz_intmax z_gz_intmax -# define gz_strwinerror z_gz_strwinerror -# define gzbuffer z_gzbuffer -# define gzclearerr z_gzclearerr -# define gzclose z_gzclose -# define gzclose_r z_gzclose_r -# define gzclose_w z_gzclose_w -# define gzdirect z_gzdirect -# define gzdopen z_gzdopen -# define gzeof z_gzeof -# define gzerror z_gzerror -# define gzflush z_gzflush -# define gzfread z_gzfread -# define gzfwrite z_gzfwrite -# define gzgetc z_gzgetc -# define gzgetc_ z_gzgetc_ -# define gzgets z_gzgets -# define gzoffset z_gzoffset -# define gzoffset64 z_gzoffset64 -# define gzopen z_gzopen -# define gzopen64 z_gzopen64 -# ifdef _WIN32 -# define gzopen_w z_gzopen_w -# endif -# define gzprintf z_gzprintf -# define gzputc z_gzputc -# define gzputs z_gzputs -# define gzread z_gzread -# define gzrewind z_gzrewind -# define gzseek z_gzseek -# define gzseek64 z_gzseek64 -# define gzsetparams z_gzsetparams -# define gztell z_gztell -# define gztell64 z_gztell64 -# define gzungetc z_gzungetc -# define gzvprintf z_gzvprintf -# define gzwrite z_gzwrite -# endif -# define inflate z_inflate -# define inflateBack z_inflateBack -# define inflateBackEnd z_inflateBackEnd -# define inflateBackInit z_inflateBackInit -# define inflateBackInit_ z_inflateBackInit_ -# define inflateCodesUsed z_inflateCodesUsed -# define inflateCopy z_inflateCopy -# define inflateEnd z_inflateEnd -# define inflateGetDictionary z_inflateGetDictionary -# define inflateGetHeader z_inflateGetHeader -# define inflateInit z_inflateInit -# define inflateInit2 z_inflateInit2 -# define inflateInit2_ z_inflateInit2_ -# define inflateInit_ z_inflateInit_ -# define inflateMark z_inflateMark -# define inflatePrime z_inflatePrime -# define inflateReset z_inflateReset -# define inflateReset2 z_inflateReset2 -# define inflateResetKeep z_inflateResetKeep -# define inflateSetDictionary z_inflateSetDictionary -# define inflateSync z_inflateSync -# define inflateSyncPoint z_inflateSyncPoint -# define inflateUndermine z_inflateUndermine -# define inflateValidate z_inflateValidate -# define inflate_copyright z_inflate_copyright -# define inflate_fast z_inflate_fast -# define inflate_table z_inflate_table -# ifndef Z_SOLO -# define uncompress z_uncompress -# define uncompress2 z_uncompress2 -# endif -# define zError z_zError -# ifndef Z_SOLO -# define zcalloc z_zcalloc -# define zcfree z_zcfree -# endif -# define zlibCompileFlags z_zlibCompileFlags -# define zlibVersion z_zlibVersion - -/* all zlib typedefs in zlib.h and zconf.h */ -# define Byte z_Byte -# define Bytef z_Bytef -# define alloc_func z_alloc_func -# define charf z_charf -# define free_func z_free_func -# ifndef Z_SOLO -# define gzFile z_gzFile -# endif -# define gz_header z_gz_header -# define gz_headerp z_gz_headerp -# define in_func z_in_func -# define intf z_intf -# define out_func z_out_func -# define uInt z_uInt -# define uIntf z_uIntf -# define uLong z_uLong -# define uLongf z_uLongf -# define voidp z_voidp -# define voidpc z_voidpc -# define voidpf z_voidpf - -/* all zlib structs in zlib.h and zconf.h */ -# define gz_header_s z_gz_header_s -# define internal_state z_internal_state - -#endif - -#if defined(__MSDOS__) && !defined(MSDOS) -# define MSDOS -#endif -#if (defined(OS_2) || defined(__OS2__)) && !defined(OS2) -# define OS2 -#endif -#if defined(_WINDOWS) && !defined(WINDOWS) -# define WINDOWS -#endif -#if defined(_WIN32) || defined(_WIN32_WCE) || defined(__WIN32__) -# ifndef WIN32 -# define WIN32 -# endif -#endif -#if (defined(MSDOS) || defined(OS2) || defined(WINDOWS)) && !defined(WIN32) -# if !defined(__GNUC__) && !defined(__FLAT__) && !defined(__386__) -# ifndef SYS16BIT -# define SYS16BIT -# endif -# endif -#endif - -/* - * Compile with -DMAXSEG_64K if the alloc function cannot allocate more - * than 64k bytes at a time (needed on systems with 16-bit int). - */ -#ifdef SYS16BIT -# define MAXSEG_64K -#endif -#ifdef MSDOS -# define UNALIGNED_OK -#endif - -#ifdef __STDC_VERSION__ -# ifndef STDC -# define STDC -# endif -# if __STDC_VERSION__ >= 199901L -# ifndef STDC99 -# define STDC99 -# endif -# endif -#endif -#if !defined(STDC) && (defined(__STDC__) || defined(__cplusplus)) -# define STDC -#endif -#if !defined(STDC) && (defined(__GNUC__) || defined(__BORLANDC__)) -# define STDC -#endif -#if !defined(STDC) && (defined(MSDOS) || defined(WINDOWS) || defined(WIN32)) -# define STDC -#endif -#if !defined(STDC) && (defined(OS2) || defined(__HOS_AIX__)) -# define STDC -#endif - -#if defined(__OS400__) && !defined(STDC) /* iSeries (formerly AS/400). */ -# define STDC -#endif - -#ifndef STDC -# ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */ -# define const /* note: need a more gentle solution here */ -# endif -#endif - -#if defined(ZLIB_CONST) && !defined(z_const) -# define z_const const -#else -# define z_const -#endif - -#ifdef Z_SOLO - typedef unsigned long z_size_t; -#else -# define z_longlong long long -# if defined(NO_SIZE_T) - typedef unsigned NO_SIZE_T z_size_t; -# elif defined(STDC) -# include - typedef size_t z_size_t; -# else - typedef unsigned long z_size_t; -# endif -# undef z_longlong -#endif - -/* Maximum value for memLevel in deflateInit2 */ -#ifndef MAX_MEM_LEVEL -# ifdef MAXSEG_64K -# define MAX_MEM_LEVEL 8 -# else -# define MAX_MEM_LEVEL 9 -# endif -#endif - -/* Maximum value for windowBits in deflateInit2 and inflateInit2. - * WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files - * created by gzip. (Files created by minigzip can still be extracted by - * gzip.) - */ -#ifndef MAX_WBITS -# define MAX_WBITS 15 /* 32K LZ77 window */ -#endif - -/* The memory requirements for deflate are (in bytes): - (1 << (windowBits+2)) + (1 << (memLevel+9)) - that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values) - plus a few kilobytes for small objects. For example, if you want to reduce - the default memory requirements from 256K to 128K, compile with - make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7" - Of course this will generally degrade compression (there's no free lunch). - - The memory requirements for inflate are (in bytes) 1 << windowBits - that is, 32K for windowBits=15 (default value) plus about 7 kilobytes - for small objects. -*/ - - /* Type declarations */ - -#ifndef OF /* function prototypes */ -# ifdef STDC -# define OF(args) args -# else -# define OF(args) () -# endif -#endif - -#ifndef Z_ARG /* function prototypes for stdarg */ -# if defined(STDC) || defined(Z_HAVE_STDARG_H) -# define Z_ARG(args) args -# else -# define Z_ARG(args) () -# endif -#endif - -/* The following definitions for FAR are needed only for MSDOS mixed - * model programming (small or medium model with some far allocations). - * This was tested only with MSC; for other MSDOS compilers you may have - * to define NO_MEMCPY in zutil.h. If you don't need the mixed model, - * just define FAR to be empty. - */ -#ifdef SYS16BIT -# if defined(M_I86SM) || defined(M_I86MM) - /* MSC small or medium model */ -# define SMALL_MEDIUM -# ifdef _MSC_VER -# define FAR _far -# else -# define FAR far -# endif -# endif -# if (defined(__SMALL__) || defined(__MEDIUM__)) - /* Turbo C small or medium model */ -# define SMALL_MEDIUM -# ifdef __BORLANDC__ -# define FAR _far -# else -# define FAR far -# endif -# endif -#endif - -#if defined(WINDOWS) || defined(WIN32) - /* If building or using zlib as a DLL, define ZLIB_DLL. - * This is not mandatory, but it offers a little performance increase. - */ -# ifdef ZLIB_DLL -# if defined(WIN32) && (!defined(__BORLANDC__) || (__BORLANDC__ >= 0x500)) -# ifdef ZLIB_INTERNAL -# define ZEXTERN extern __declspec(dllexport) -# else -# define ZEXTERN extern __declspec(dllimport) -# endif -# endif -# endif /* ZLIB_DLL */ - /* If building or using zlib with the WINAPI/WINAPIV calling convention, - * define ZLIB_WINAPI. - * Caution: the standard ZLIB1.DLL is NOT compiled using ZLIB_WINAPI. - */ -# ifdef ZLIB_WINAPI -# ifdef FAR -# undef FAR -# endif -# include - /* No need for _export, use ZLIB.DEF instead. */ - /* For complete Windows compatibility, use WINAPI, not __stdcall. */ -# define ZEXPORT WINAPI -# ifdef WIN32 -# define ZEXPORTVA WINAPIV -# else -# define ZEXPORTVA FAR CDECL -# endif -# endif -#endif - -#if defined (__BEOS__) -# ifdef ZLIB_DLL -# ifdef ZLIB_INTERNAL -# define ZEXPORT __declspec(dllexport) -# define ZEXPORTVA __declspec(dllexport) -# else -# define ZEXPORT __declspec(dllimport) -# define ZEXPORTVA __declspec(dllimport) -# endif -# endif -#endif - -#ifndef ZEXTERN -# define ZEXTERN extern -#endif -#ifndef ZEXPORT -# define ZEXPORT -#endif -#ifndef ZEXPORTVA -# define ZEXPORTVA -#endif - -#ifndef FAR -# define FAR -#endif - -#if !defined(__MACTYPES__) -typedef unsigned char Byte; /* 8 bits */ -#endif -typedef unsigned int uInt; /* 16 bits or more */ -typedef unsigned long uLong; /* 32 bits or more */ - -#ifdef SMALL_MEDIUM - /* Borland C/C++ and some old MSC versions ignore FAR inside typedef */ -# define Bytef Byte FAR -#else - typedef Byte FAR Bytef; -#endif -typedef char FAR charf; -typedef int FAR intf; -typedef uInt FAR uIntf; -typedef uLong FAR uLongf; - -#ifdef STDC - typedef void const *voidpc; - typedef void FAR *voidpf; - typedef void *voidp; -#else - typedef Byte const *voidpc; - typedef Byte FAR *voidpf; - typedef Byte *voidp; -#endif - -#if !defined(Z_U4) && !defined(Z_SOLO) && defined(STDC) -# include -# if (UINT_MAX == 0xffffffffUL) -# define Z_U4 unsigned -# elif (ULONG_MAX == 0xffffffffUL) -# define Z_U4 unsigned long -# elif (USHRT_MAX == 0xffffffffUL) -# define Z_U4 unsigned short -# endif -#endif - -#ifdef Z_U4 - typedef Z_U4 z_crc_t; -#else - typedef unsigned long z_crc_t; -#endif - -#ifdef HAVE_UNISTD_H /* may be set to #if 1 by ./configure */ -# define Z_HAVE_UNISTD_H -#endif - -#ifdef HAVE_STDARG_H /* may be set to #if 1 by ./configure */ -# define Z_HAVE_STDARG_H -#endif - -#ifdef STDC -# ifndef Z_SOLO -# include /* for off_t */ -# endif -#endif - -#if defined(STDC) || defined(Z_HAVE_STDARG_H) -# ifndef Z_SOLO -# include /* for va_list */ -# endif -#endif - -#ifdef _WIN32 -# ifndef Z_SOLO -# include /* for wchar_t */ -# endif -#endif - -/* a little trick to accommodate both "#define _LARGEFILE64_SOURCE" and - * "#define _LARGEFILE64_SOURCE 1" as requesting 64-bit operations, (even - * though the former does not conform to the LFS document), but considering - * both "#undef _LARGEFILE64_SOURCE" and "#define _LARGEFILE64_SOURCE 0" as - * equivalently requesting no 64-bit operations - */ -#if defined(_LARGEFILE64_SOURCE) && -_LARGEFILE64_SOURCE - -1 == 1 -# undef _LARGEFILE64_SOURCE -#endif - -#if defined(__WATCOMC__) && !defined(Z_HAVE_UNISTD_H) -# define Z_HAVE_UNISTD_H -#endif -#ifndef Z_SOLO -# if defined(Z_HAVE_UNISTD_H) || defined(_LARGEFILE64_SOURCE) -# include /* for SEEK_*, off_t, and _LFS64_LARGEFILE */ -# ifdef VMS -# include /* for off_t */ -# endif -# ifndef z_off_t -# define z_off_t off_t -# endif -# endif -#endif - -#if defined(_LFS64_LARGEFILE) && _LFS64_LARGEFILE-0 -# define Z_LFS64 -#endif - -#if defined(_LARGEFILE64_SOURCE) && defined(Z_LFS64) -# define Z_LARGE64 -#endif - -#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS-0 == 64 && defined(Z_LFS64) -# define Z_WANT64 -#endif - -#if !defined(SEEK_SET) && !defined(Z_SOLO) -# define SEEK_SET 0 /* Seek from beginning of file. */ -# define SEEK_CUR 1 /* Seek from current position. */ -# define SEEK_END 2 /* Set file pointer to EOF plus "offset" */ -#endif - -#ifndef z_off_t -# define z_off_t long -#endif - -#if !defined(_WIN32) && defined(Z_LARGE64) -# define z_off64_t off64_t -#else -# if defined(_WIN32) && !defined(__GNUC__) && !defined(Z_SOLO) -# define z_off64_t __int64 -# else -# define z_off64_t z_off_t -# endif -#endif - -/* MVS linker does not support external names larger than 8 bytes */ -#if defined(__MVS__) - #pragma map(deflateInit_,"DEIN") - #pragma map(deflateInit2_,"DEIN2") - #pragma map(deflateEnd,"DEEND") - #pragma map(deflateBound,"DEBND") - #pragma map(inflateInit_,"ININ") - #pragma map(inflateInit2_,"ININ2") - #pragma map(inflateEnd,"INEND") - #pragma map(inflateSync,"INSY") - #pragma map(inflateSetDictionary,"INSEDI") - #pragma map(compressBound,"CMBND") - #pragma map(inflate_table,"INTABL") - #pragma map(inflate_fast,"INFA") - #pragma map(inflate_copyright,"INCOPY") -#endif - -#endif /* ZCONF_H */ diff --git a/deps/zlib/zconf.h.in b/deps/zlib/zconf.h.in index 5e1d68a00..bc3ef079b 100644 --- a/deps/zlib/zconf.h.in +++ b/deps/zlib/zconf.h.in @@ -1,5 +1,5 @@ /* zconf.h -- configuration of the zlib compression library - * Copyright (C) 1995-2016 Jean-loup Gailly, Mark Adler + * Copyright (C) 1995-2024 Jean-loup Gailly, Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -38,6 +38,9 @@ # define crc32 z_crc32 # define crc32_combine z_crc32_combine # define crc32_combine64 z_crc32_combine64 +# define crc32_combine_gen z_crc32_combine_gen +# define crc32_combine_gen64 z_crc32_combine_gen64 +# define crc32_combine_op z_crc32_combine_op # define crc32_z z_crc32_z # define deflate z_deflate # define deflateBound z_deflateBound @@ -56,6 +59,7 @@ # define deflateSetDictionary z_deflateSetDictionary # define deflateSetHeader z_deflateSetHeader # define deflateTune z_deflateTune +# define deflateUsed z_deflateUsed # define deflate_copyright z_deflate_copyright # define get_crc_table z_get_crc_table # ifndef Z_SOLO @@ -231,14 +235,20 @@ # endif #endif -#if defined(ZLIB_CONST) && !defined(z_const) -# define z_const const -#else -# define z_const +#ifndef z_const +# ifdef ZLIB_CONST +# define z_const const +# else +# define z_const +# endif #endif #ifdef Z_SOLO - typedef unsigned long z_size_t; +# ifdef _WIN64 + typedef unsigned long long z_size_t; +# else + typedef unsigned long z_size_t; +# endif #else # define z_longlong long long # if defined(NO_SIZE_T) @@ -293,14 +303,6 @@ # endif #endif -#ifndef Z_ARG /* function prototypes for stdarg */ -# if defined(STDC) || defined(Z_HAVE_STDARG_H) -# define Z_ARG(args) args -# else -# define Z_ARG(args) () -# endif -#endif - /* The following definitions for FAR are needed only for MSDOS mixed * model programming (small or medium model with some far allocations). * This was tested only with MSC; for other MSDOS compilers you may have @@ -349,6 +351,9 @@ # ifdef FAR # undef FAR # endif +# ifndef WIN32_LEAN_AND_MEAN +# define WIN32_LEAN_AND_MEAN +# endif # include /* No need for _export, use ZLIB.DEF instead. */ /* For complete Windows compatibility, use WINAPI, not __stdcall. */ @@ -431,11 +436,11 @@ typedef uLong FAR uLongf; typedef unsigned long z_crc_t; #endif -#ifdef HAVE_UNISTD_H /* may be set to #if 1 by ./configure */ +#if HAVE_UNISTD_H-0 /* may be set to #if 1 by ./configure */ # define Z_HAVE_UNISTD_H #endif -#ifdef HAVE_STDARG_H /* may be set to #if 1 by ./configure */ +#if HAVE_STDARG_H-0 /* may be set to #if 1 by ./configure */ # define Z_HAVE_STDARG_H #endif @@ -467,11 +472,14 @@ typedef uLong FAR uLongf; # undef _LARGEFILE64_SOURCE #endif -#if defined(__WATCOMC__) && !defined(Z_HAVE_UNISTD_H) -# define Z_HAVE_UNISTD_H +#ifndef Z_HAVE_UNISTD_H +# if defined(__WATCOMC__) || defined(__GO32__) || \ + (defined(_LARGEFILE64_SOURCE) && !defined(_WIN32)) +# define Z_HAVE_UNISTD_H +# endif #endif #ifndef Z_SOLO -# if defined(Z_HAVE_UNISTD_H) || defined(_LARGEFILE64_SOURCE) +# if defined(Z_HAVE_UNISTD_H) # include /* for SEEK_*, off_t, and _LFS64_LARGEFILE */ # ifdef VMS # include /* for off_t */ @@ -501,17 +509,19 @@ typedef uLong FAR uLongf; #endif #ifndef z_off_t -# define z_off_t long +# define z_off_t long long #endif #if !defined(_WIN32) && defined(Z_LARGE64) # define z_off64_t off64_t +#elif defined(__MINGW32__) +# define z_off64_t long long +#elif defined(_WIN32) && !defined(__GNUC__) +# define z_off64_t __int64 +#elif defined(__GO32__) +# define z_off64_t offset_t #else -# if defined(_WIN32) && !defined(__GNUC__) && !defined(Z_SOLO) -# define z_off64_t __int64 -# else -# define z_off64_t z_off_t -# endif +# define z_off64_t z_off_t #endif /* MVS linker does not support external names larger than 8 bytes */ diff --git a/deps/zlib/zlib.3 b/deps/zlib/zlib.3 index bda4eb073..3e24d9313 100644 --- a/deps/zlib/zlib.3 +++ b/deps/zlib/zlib.3 @@ -1,4 +1,4 @@ -.TH ZLIB 3 "15 Jan 2017" +.TH ZLIB 3 "xx Jan 2024" .SH NAME zlib \- compression/decompression library .SH SYNOPSIS @@ -86,7 +86,7 @@ Mark Nelson wrote an article about for the Jan. 1997 issue of Dr. Dobb's Journal; a copy of the article is available at: .IP -http://marknelson.us/1997/01/01/zlib-engine/ +https://marknelson.us/posts/1997/01/01/zlib-engine.html .SH "REPORTING PROBLEMS" Before reporting a problem, please check the @@ -105,9 +105,9 @@ before asking for help. Send questions and/or comments to zlib@gzip.org, or (for the Windows DLL version) to Gilles Vollant (info@winimage.com). .SH AUTHORS AND LICENSE -Version 1.2.11 +Version 1.3.1.1 .LP -Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler +Copyright (C) 1995-2024 Jean-loup Gailly and Mark Adler .LP This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/deps/zlib/zlib.3.pdf b/deps/zlib/zlib.3.pdf index 6fa519c5b..b224532bd 100644 Binary files a/deps/zlib/zlib.3.pdf and b/deps/zlib/zlib.3.pdf differ diff --git a/deps/zlib/zlib.h b/deps/zlib/zlib.h index f09cdaf1e..c75090b0f 100644 --- a/deps/zlib/zlib.h +++ b/deps/zlib/zlib.h @@ -1,7 +1,7 @@ /* zlib.h -- interface of the 'zlib' general purpose compression library - version 1.2.11, January 15th, 2017 + version 1.3.1.1, January xxth, 2024 - Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler + Copyright (C) 1995-2024 Jean-loup Gailly and Mark Adler This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages @@ -31,18 +31,22 @@ #ifndef ZLIB_H #define ZLIB_H -#include "zconf.h" +#ifdef ZLIB_BUILD +# include +#else +# include "zconf.h" +#endif #ifdef __cplusplus extern "C" { #endif -#define ZLIB_VERSION "1.2.11" -#define ZLIB_VERNUM 0x12b0 +#define ZLIB_VERSION "1.3.1.1-motley" +#define ZLIB_VERNUM 0x1311 #define ZLIB_VER_MAJOR 1 -#define ZLIB_VER_MINOR 2 -#define ZLIB_VER_REVISION 11 -#define ZLIB_VER_SUBREVISION 0 +#define ZLIB_VER_MINOR 3 +#define ZLIB_VER_REVISION 1 +#define ZLIB_VER_SUBREVISION 1 /* The 'zlib' compression library provides in-memory compression and @@ -78,8 +82,8 @@ extern "C" { even in the case of corrupted input. */ -typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size)); -typedef void (*free_func) OF((voidpf opaque, voidpf address)); +typedef voidpf (*alloc_func)(voidpf opaque, uInt items, uInt size); +typedef void (*free_func)(voidpf opaque, voidpf address); struct internal_state; @@ -217,7 +221,7 @@ typedef gz_header FAR *gz_headerp; /* basic functions */ -ZEXTERN const char * ZEXPORT zlibVersion OF((void)); +ZEXTERN const char * ZEXPORT zlibVersion(void); /* The application can compare zlibVersion and ZLIB_VERSION for consistency. If the first character differs, the library code actually used is not compatible with the zlib.h header file used by the application. This check @@ -225,12 +229,12 @@ ZEXTERN const char * ZEXPORT zlibVersion OF((void)); */ /* -ZEXTERN int ZEXPORT deflateInit OF((z_streamp strm, int level)); +ZEXTERN int ZEXPORT deflateInit(z_streamp strm, int level); Initializes the internal stream state for compression. The fields zalloc, zfree and opaque must be initialized before by the caller. If zalloc and zfree are set to Z_NULL, deflateInit updates them to use default - allocation functions. + allocation functions. total_in, total_out, adler, and msg are initialized. The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9: 1 gives best speed, 9 gives best compression, 0 gives no compression at all @@ -247,7 +251,7 @@ ZEXTERN int ZEXPORT deflateInit OF((z_streamp strm, int level)); */ -ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush)); +ZEXTERN int ZEXPORT deflate(z_streamp strm, int flush); /* deflate compresses as much data as possible, and stops when the input buffer becomes empty or the output buffer becomes full. It may introduce @@ -276,7 +280,7 @@ ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush)); == 0), or after each call of deflate(). If deflate returns Z_OK and with zero avail_out, it must be called again after making room in the output buffer because there might be more output pending. See deflatePending(), - which can be used if desired to determine whether or not there is more ouput + which can be used if desired to determine whether or not there is more output in that case. Normally the parameter flush is set to Z_NO_FLUSH, which allows deflate to @@ -320,8 +324,8 @@ ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush)); with the same value of the flush parameter and more output space (updated avail_out), until the flush is complete (deflate returns with non-zero avail_out). In the case of a Z_FULL_FLUSH or Z_SYNC_FLUSH, make sure that - avail_out is greater than six to avoid repeated flush markers due to - avail_out == 0 on return. + avail_out is greater than six when the flush marker begins, in order to avoid + repeated flush markers upon calling deflate() again when avail_out == 0. If the parameter flush is set to Z_FINISH, pending input is processed, pending output is flushed and deflate returns with Z_STREAM_END if there was @@ -360,7 +364,7 @@ ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush)); */ -ZEXTERN int ZEXPORT deflateEnd OF((z_streamp strm)); +ZEXTERN int ZEXPORT deflateEnd(z_streamp strm); /* All dynamically allocated data structures for this stream are freed. This function discards any unprocessed input and does not flush any pending @@ -375,7 +379,7 @@ ZEXTERN int ZEXPORT deflateEnd OF((z_streamp strm)); /* -ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm)); +ZEXTERN int ZEXPORT inflateInit(z_streamp strm); Initializes the internal stream state for decompression. The fields next_in, avail_in, zalloc, zfree and opaque must be initialized before by @@ -383,7 +387,8 @@ ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm)); read or consumed. The allocation of a sliding window will be deferred to the first call of inflate (if the decompression does not complete on the first call). If zalloc and zfree are set to Z_NULL, inflateInit updates - them to use default allocation functions. + them to use default allocation functions. total_in, total_out, adler, and + msg are initialized. inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough memory, Z_VERSION_ERROR if the zlib library version is incompatible with the @@ -397,7 +402,7 @@ ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm)); */ -ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush)); +ZEXTERN int ZEXPORT inflate(z_streamp strm, int flush); /* inflate decompresses as much data as possible, and stops when the input buffer becomes empty or the output buffer becomes full. It may introduce @@ -517,7 +522,7 @@ ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush)); */ -ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm)); +ZEXTERN int ZEXPORT inflateEnd(z_streamp strm); /* All dynamically allocated data structures for this stream are freed. This function discards any unprocessed input and does not flush any pending @@ -535,16 +540,15 @@ ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm)); */ /* -ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm, - int level, - int method, - int windowBits, - int memLevel, - int strategy)); +ZEXTERN int ZEXPORT deflateInit2(z_streamp strm, + int level, + int method, + int windowBits, + int memLevel, + int strategy); This is another version of deflateInit with more compression options. The - fields next_in, zalloc, zfree and opaque must be initialized before by the - caller. + fields zalloc, zfree and opaque must be initialized before by the caller. The method parameter is the compression method. It must be Z_DEFLATED in this version of the library. @@ -587,18 +591,21 @@ ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm, The strategy parameter is used to tune the compression algorithm. Use the value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a - filter (or predictor), Z_HUFFMAN_ONLY to force Huffman encoding only (no - string match), or Z_RLE to limit match distances to one (run-length - encoding). Filtered data consists mostly of small values with a somewhat - random distribution. In this case, the compression algorithm is tuned to - compress them better. The effect of Z_FILTERED is to force more Huffman - coding and less string matching; it is somewhat intermediate between - Z_DEFAULT_STRATEGY and Z_HUFFMAN_ONLY. Z_RLE is designed to be almost as - fast as Z_HUFFMAN_ONLY, but give better compression for PNG image data. The - strategy parameter only affects the compression ratio but not the - correctness of the compressed output even if it is not set appropriately. - Z_FIXED prevents the use of dynamic Huffman codes, allowing for a simpler - decoder for special applications. + filter (or predictor), Z_RLE to limit match distances to one (run-length + encoding), or Z_HUFFMAN_ONLY to force Huffman encoding only (no string + matching). Filtered data consists mostly of small values with a somewhat + random distribution, as produced by the PNG filters. In this case, the + compression algorithm is tuned to compress them better. The effect of + Z_FILTERED is to force more Huffman coding and less string matching than the + default; it is intermediate between Z_DEFAULT_STRATEGY and Z_HUFFMAN_ONLY. + Z_RLE is almost as fast as Z_HUFFMAN_ONLY, but should give better + compression for PNG image data than Huffman only. The degree of string + matching from most to none is: Z_DEFAULT_STRATEGY, Z_FILTERED, Z_RLE, then + Z_HUFFMAN_ONLY. The strategy parameter affects the compression ratio but + never the correctness of the compressed output, even if it is not set + optimally for the given data. Z_FIXED uses the default string matching, but + prevents the use of dynamic Huffman codes, allowing for a simpler decoder + for special applications. deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough memory, Z_STREAM_ERROR if any parameter is invalid (such as an invalid @@ -608,9 +615,9 @@ ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm, compression: this will be done by deflate(). */ -ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm, - const Bytef *dictionary, - uInt dictLength)); +ZEXTERN int ZEXPORT deflateSetDictionary(z_streamp strm, + const Bytef *dictionary, + uInt dictLength); /* Initializes the compression dictionary from the given byte sequence without producing any compressed output. When using the zlib format, this @@ -652,16 +659,16 @@ ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm, not perform any compression: this will be done by deflate(). */ -ZEXTERN int ZEXPORT deflateGetDictionary OF((z_streamp strm, - Bytef *dictionary, - uInt *dictLength)); +ZEXTERN int ZEXPORT deflateGetDictionary(z_streamp strm, + Bytef *dictionary, + uInt *dictLength); /* Returns the sliding dictionary being maintained by deflate. dictLength is set to the number of bytes in the dictionary, and that many bytes are copied to dictionary. dictionary must have enough space, where 32768 bytes is always enough. If deflateGetDictionary() is called with dictionary equal to Z_NULL, then only the dictionary length is returned, and nothing is copied. - Similary, if dictLength is Z_NULL, then it is not set. + Similarly, if dictLength is Z_NULL, then it is not set. deflateGetDictionary() may return a length less than the window size, even when more than the window size in input has been provided. It may return up @@ -674,8 +681,8 @@ ZEXTERN int ZEXPORT deflateGetDictionary OF((z_streamp strm, stream state is inconsistent. */ -ZEXTERN int ZEXPORT deflateCopy OF((z_streamp dest, - z_streamp source)); +ZEXTERN int ZEXPORT deflateCopy(z_streamp dest, + z_streamp source); /* Sets the destination stream as a complete copy of the source stream. @@ -692,31 +699,32 @@ ZEXTERN int ZEXPORT deflateCopy OF((z_streamp dest, destination. */ -ZEXTERN int ZEXPORT deflateReset OF((z_streamp strm)); +ZEXTERN int ZEXPORT deflateReset(z_streamp strm); /* This function is equivalent to deflateEnd followed by deflateInit, but does not free and reallocate the internal compression state. The stream will leave the compression level and any other attributes that may have been - set unchanged. + set unchanged. total_in, total_out, adler, and msg are initialized. deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source stream state was inconsistent (such as zalloc or state being Z_NULL). */ -ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm, - int level, - int strategy)); +ZEXTERN int ZEXPORT deflateParams(z_streamp strm, + int level, + int strategy); /* Dynamically update the compression level and compression strategy. The interpretation of level and strategy is as in deflateInit2(). This can be used to switch between compression and straight copy of the input data, or to switch to a different kind of input data requiring a different strategy. If the compression approach (which is a function of the level) or the - strategy is changed, and if any input has been consumed in a previous - deflate() call, then the input available so far is compressed with the old - level and strategy using deflate(strm, Z_BLOCK). There are three approaches - for the compression levels 0, 1..3, and 4..9 respectively. The new level - and strategy will take effect at the next call of deflate(). + strategy is changed, and if there have been any deflate() calls since the + state was initialized or reset, then the input available so far is + compressed with the old level and strategy using deflate(strm, Z_BLOCK). + There are three approaches for the compression levels 0, 1..3, and 4..9 + respectively. The new level and strategy will take effect at the next call + of deflate(). If a deflate(strm, Z_BLOCK) is performed by deflateParams(), and it does not have enough output space to complete, then the parameter change will not @@ -729,7 +737,7 @@ ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm, Then no more input data should be provided before the deflateParams() call. If this is done, the old level and strategy will be applied to the data compressed before deflateParams(), and the new level and strategy will be - applied to the the data compressed after deflateParams(). + applied to the data compressed after deflateParams(). deflateParams returns Z_OK on success, Z_STREAM_ERROR if the source stream state was inconsistent or if a parameter was invalid, or Z_BUF_ERROR if @@ -740,11 +748,11 @@ ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm, retried with more output space. */ -ZEXTERN int ZEXPORT deflateTune OF((z_streamp strm, - int good_length, - int max_lazy, - int nice_length, - int max_chain)); +ZEXTERN int ZEXPORT deflateTune(z_streamp strm, + int good_length, + int max_lazy, + int nice_length, + int max_chain); /* Fine tune deflate's internal compression parameters. This should only be used by someone who understands the algorithm used by zlib's deflate for @@ -757,8 +765,8 @@ ZEXTERN int ZEXPORT deflateTune OF((z_streamp strm, returns Z_OK on success, or Z_STREAM_ERROR for an invalid deflate stream. */ -ZEXTERN uLong ZEXPORT deflateBound OF((z_streamp strm, - uLong sourceLen)); +ZEXTERN uLong ZEXPORT deflateBound(z_streamp strm, + uLong sourceLen); /* deflateBound() returns an upper bound on the compressed size after deflation of sourceLen bytes. It must be called after deflateInit() or @@ -772,9 +780,9 @@ ZEXTERN uLong ZEXPORT deflateBound OF((z_streamp strm, than Z_FINISH or Z_NO_FLUSH are used. */ -ZEXTERN int ZEXPORT deflatePending OF((z_streamp strm, - unsigned *pending, - int *bits)); +ZEXTERN int ZEXPORT deflatePending(z_streamp strm, + unsigned *pending, + int *bits); /* deflatePending() returns the number of bytes and bits of output that have been generated, but not yet provided in the available output. The bytes not @@ -787,9 +795,21 @@ ZEXTERN int ZEXPORT deflatePending OF((z_streamp strm, stream state was inconsistent. */ -ZEXTERN int ZEXPORT deflatePrime OF((z_streamp strm, - int bits, - int value)); +ZEXTERN int ZEXPORT deflateUsed(z_streamp strm, + int *bits); +/* + deflateUsed() returns in *bits the most recent number of deflate bits used + in the last byte when flushing to a byte boundary. The result is in 1..8, or + 0 if there has not yet been a flush. This helps determine the location of + the last bit of a deflate stream. + + deflateUsed returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent. + */ + +ZEXTERN int ZEXPORT deflatePrime(z_streamp strm, + int bits, + int value); /* deflatePrime() inserts bits in the deflate output stream. The intent is that this function is used to start off the deflate output with the bits @@ -804,8 +824,8 @@ ZEXTERN int ZEXPORT deflatePrime OF((z_streamp strm, source stream state was inconsistent. */ -ZEXTERN int ZEXPORT deflateSetHeader OF((z_streamp strm, - gz_headerp head)); +ZEXTERN int ZEXPORT deflateSetHeader(z_streamp strm, + gz_headerp head); /* deflateSetHeader() provides gzip header information for when a gzip stream is requested by deflateInit2(). deflateSetHeader() may be called @@ -821,16 +841,17 @@ ZEXTERN int ZEXPORT deflateSetHeader OF((z_streamp strm, gzip file" and give up. If deflateSetHeader is not used, the default gzip header has text false, - the time set to zero, and os set to 255, with no extra, name, or comment - fields. The gzip header is returned to the default state by deflateReset(). + the time set to zero, and os set to the current operating system, with no + extra, name, or comment fields. The gzip header is returned to the default + state by deflateReset(). deflateSetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source stream state was inconsistent. */ /* -ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm, - int windowBits)); +ZEXTERN int ZEXPORT inflateInit2(z_streamp strm, + int windowBits); This is another version of inflateInit with an extra parameter. The fields next_in, avail_in, zalloc, zfree and opaque must be initialized @@ -865,9 +886,11 @@ ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm, detection, or add 16 to decode only the gzip format (the zlib format will return a Z_DATA_ERROR). If a gzip stream is being decoded, strm->adler is a CRC-32 instead of an Adler-32. Unlike the gunzip utility and gzread() (see - below), inflate() will not automatically decode concatenated gzip streams. - inflate() will return Z_STREAM_END at the end of the gzip stream. The state - would need to be reset to continue decoding a subsequent gzip stream. + below), inflate() will *not* automatically decode concatenated gzip members. + inflate() will return Z_STREAM_END at the end of the gzip member. The state + would need to be reset to continue decoding a subsequent gzip member. This + *must* be done if there is more data after a gzip member, in order for the + decompression to be compliant with the gzip standard (RFC 1952). inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough memory, Z_VERSION_ERROR if the zlib library version is incompatible with the @@ -881,9 +904,9 @@ ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm, deferred until inflate() is called. */ -ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm, - const Bytef *dictionary, - uInt dictLength)); +ZEXTERN int ZEXPORT inflateSetDictionary(z_streamp strm, + const Bytef *dictionary, + uInt dictLength); /* Initializes the decompression dictionary from the given uncompressed byte sequence. This function must be called immediately after a call of inflate, @@ -904,22 +927,22 @@ ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm, inflate(). */ -ZEXTERN int ZEXPORT inflateGetDictionary OF((z_streamp strm, - Bytef *dictionary, - uInt *dictLength)); +ZEXTERN int ZEXPORT inflateGetDictionary(z_streamp strm, + Bytef *dictionary, + uInt *dictLength); /* Returns the sliding dictionary being maintained by inflate. dictLength is set to the number of bytes in the dictionary, and that many bytes are copied to dictionary. dictionary must have enough space, where 32768 bytes is always enough. If inflateGetDictionary() is called with dictionary equal to Z_NULL, then only the dictionary length is returned, and nothing is copied. - Similary, if dictLength is Z_NULL, then it is not set. + Similarly, if dictLength is Z_NULL, then it is not set. inflateGetDictionary returns Z_OK on success, or Z_STREAM_ERROR if the stream state is inconsistent. */ -ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm)); +ZEXTERN int ZEXPORT inflateSync(z_streamp strm); /* Skips invalid compressed data until a possible full flush point (see above for the description of deflate with Z_FULL_FLUSH) can be found, or until all @@ -932,14 +955,14 @@ ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm)); inflateSync returns Z_OK if a possible full flush point has been found, Z_BUF_ERROR if no more input was provided, Z_DATA_ERROR if no flush point has been found, or Z_STREAM_ERROR if the stream structure was inconsistent. - In the success case, the application may save the current current value of - total_in which indicates where valid compressed data was found. In the - error case, the application may repeatedly call inflateSync, providing more - input each time, until success or end of the input data. + In the success case, the application may save the current value of total_in + which indicates where valid compressed data was found. In the error case, + the application may repeatedly call inflateSync, providing more input each + time, until success or end of the input data. */ -ZEXTERN int ZEXPORT inflateCopy OF((z_streamp dest, - z_streamp source)); +ZEXTERN int ZEXPORT inflateCopy(z_streamp dest, + z_streamp source); /* Sets the destination stream as a complete copy of the source stream. @@ -954,18 +977,19 @@ ZEXTERN int ZEXPORT inflateCopy OF((z_streamp dest, destination. */ -ZEXTERN int ZEXPORT inflateReset OF((z_streamp strm)); +ZEXTERN int ZEXPORT inflateReset(z_streamp strm); /* This function is equivalent to inflateEnd followed by inflateInit, but does not free and reallocate the internal decompression state. The stream will keep attributes that may have been set by inflateInit2. + total_in, total_out, adler, and msg are initialized. inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source stream state was inconsistent (such as zalloc or state being Z_NULL). */ -ZEXTERN int ZEXPORT inflateReset2 OF((z_streamp strm, - int windowBits)); +ZEXTERN int ZEXPORT inflateReset2(z_streamp strm, + int windowBits); /* This function is the same as inflateReset, but it also permits changing the wrap and window size requests. The windowBits parameter is interpreted @@ -978,9 +1002,9 @@ ZEXTERN int ZEXPORT inflateReset2 OF((z_streamp strm, the windowBits parameter is invalid. */ -ZEXTERN int ZEXPORT inflatePrime OF((z_streamp strm, - int bits, - int value)); +ZEXTERN int ZEXPORT inflatePrime(z_streamp strm, + int bits, + int value); /* This function inserts bits in the inflate input stream. The intent is that this function is used to start inflating at a bit position in the @@ -999,7 +1023,7 @@ ZEXTERN int ZEXPORT inflatePrime OF((z_streamp strm, stream state was inconsistent. */ -ZEXTERN long ZEXPORT inflateMark OF((z_streamp strm)); +ZEXTERN long ZEXPORT inflateMark(z_streamp strm); /* This function returns two values, one in the lower 16 bits of the return value, and the other in the remaining upper bits, obtained by shifting the @@ -1027,8 +1051,8 @@ ZEXTERN long ZEXPORT inflateMark OF((z_streamp strm)); source stream state was inconsistent. */ -ZEXTERN int ZEXPORT inflateGetHeader OF((z_streamp strm, - gz_headerp head)); +ZEXTERN int ZEXPORT inflateGetHeader(z_streamp strm, + gz_headerp head); /* inflateGetHeader() requests that gzip header information be stored in the provided gz_header structure. inflateGetHeader() may be called after @@ -1068,8 +1092,8 @@ ZEXTERN int ZEXPORT inflateGetHeader OF((z_streamp strm, */ /* -ZEXTERN int ZEXPORT inflateBackInit OF((z_streamp strm, int windowBits, - unsigned char FAR *window)); +ZEXTERN int ZEXPORT inflateBackInit(z_streamp strm, int windowBits, + unsigned char FAR *window); Initialize the internal stream state for decompression using inflateBack() calls. The fields zalloc, zfree and opaque in strm must be initialized @@ -1089,13 +1113,13 @@ ZEXTERN int ZEXPORT inflateBackInit OF((z_streamp strm, int windowBits, the version of the header file. */ -typedef unsigned (*in_func) OF((void FAR *, - z_const unsigned char FAR * FAR *)); -typedef int (*out_func) OF((void FAR *, unsigned char FAR *, unsigned)); +typedef unsigned (*in_func)(void FAR *, + z_const unsigned char FAR * FAR *); +typedef int (*out_func)(void FAR *, unsigned char FAR *, unsigned); -ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm, - in_func in, void FAR *in_desc, - out_func out, void FAR *out_desc)); +ZEXTERN int ZEXPORT inflateBack(z_streamp strm, + in_func in, void FAR *in_desc, + out_func out, void FAR *out_desc); /* inflateBack() does a raw inflate with a single call using a call-back interface for input and output. This is potentially more efficient than @@ -1163,7 +1187,7 @@ ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm, cannot return Z_OK. */ -ZEXTERN int ZEXPORT inflateBackEnd OF((z_streamp strm)); +ZEXTERN int ZEXPORT inflateBackEnd(z_streamp strm); /* All memory allocated by inflateBackInit() is freed. @@ -1171,7 +1195,7 @@ ZEXTERN int ZEXPORT inflateBackEnd OF((z_streamp strm)); state was inconsistent. */ -ZEXTERN uLong ZEXPORT zlibCompileFlags OF((void)); +ZEXTERN uLong ZEXPORT zlibCompileFlags(void); /* Return flags indicating compile-time options. Type sizes, two bits each, 00 = 16 bits, 01 = 32, 10 = 64, 11 = other: @@ -1224,8 +1248,8 @@ ZEXTERN uLong ZEXPORT zlibCompileFlags OF((void)); you need special options. */ -ZEXTERN int ZEXPORT compress OF((Bytef *dest, uLongf *destLen, - const Bytef *source, uLong sourceLen)); +ZEXTERN int ZEXPORT compress(Bytef *dest, uLongf *destLen, + const Bytef *source, uLong sourceLen); /* Compresses the source buffer into the destination buffer. sourceLen is the byte length of the source buffer. Upon entry, destLen is the total size @@ -1239,9 +1263,9 @@ ZEXTERN int ZEXPORT compress OF((Bytef *dest, uLongf *destLen, buffer. */ -ZEXTERN int ZEXPORT compress2 OF((Bytef *dest, uLongf *destLen, - const Bytef *source, uLong sourceLen, - int level)); +ZEXTERN int ZEXPORT compress2(Bytef *dest, uLongf *destLen, + const Bytef *source, uLong sourceLen, + int level); /* Compresses the source buffer into the destination buffer. The level parameter has the same meaning as in deflateInit. sourceLen is the byte @@ -1255,15 +1279,15 @@ ZEXTERN int ZEXPORT compress2 OF((Bytef *dest, uLongf *destLen, Z_STREAM_ERROR if the level parameter is invalid. */ -ZEXTERN uLong ZEXPORT compressBound OF((uLong sourceLen)); +ZEXTERN uLong ZEXPORT compressBound(uLong sourceLen); /* compressBound() returns an upper bound on the compressed size after compress() or compress2() on sourceLen bytes. It would be used before a compress() or compress2() call to allocate the destination buffer. */ -ZEXTERN int ZEXPORT uncompress OF((Bytef *dest, uLongf *destLen, - const Bytef *source, uLong sourceLen)); +ZEXTERN int ZEXPORT uncompress(Bytef *dest, uLongf *destLen, + const Bytef *source, uLong sourceLen); /* Decompresses the source buffer into the destination buffer. sourceLen is the byte length of the source buffer. Upon entry, destLen is the total size @@ -1280,8 +1304,8 @@ ZEXTERN int ZEXPORT uncompress OF((Bytef *dest, uLongf *destLen, buffer with the uncompressed data up to that point. */ -ZEXTERN int ZEXPORT uncompress2 OF((Bytef *dest, uLongf *destLen, - const Bytef *source, uLong *sourceLen)); +ZEXTERN int ZEXPORT uncompress2(Bytef *dest, uLongf *destLen, + const Bytef *source, uLong *sourceLen); /* Same as uncompress, except that sourceLen is a pointer, where the length of the source is *sourceLen. On return, *sourceLen is the number of @@ -1300,16 +1324,16 @@ ZEXTERN int ZEXPORT uncompress2 OF((Bytef *dest, uLongf *destLen, typedef struct gzFile_s *gzFile; /* semi-opaque gzip file descriptor */ /* -ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode)); +ZEXTERN gzFile ZEXPORT gzopen(const char *path, const char *mode); - Opens a gzip (.gz) file for reading or writing. The mode parameter is as - in fopen ("rb" or "wb") but can also include a compression level ("wb9") or - a strategy: 'f' for filtered data as in "wb6f", 'h' for Huffman-only - compression as in "wb1h", 'R' for run-length encoding as in "wb1R", or 'F' - for fixed code compression as in "wb9F". (See the description of - deflateInit2 for more information about the strategy parameter.) 'T' will - request transparent writing or appending with no compression and not using - the gzip format. + Open the gzip (.gz) file at path for reading and decompressing, or + compressing and writing. The mode parameter is as in fopen ("rb" or "wb") + but can also include a compression level ("wb9") or a strategy: 'f' for + filtered data as in "wb6f", 'h' for Huffman-only compression as in "wb1h", + 'R' for run-length encoding as in "wb1R", or 'F' for fixed code compression + as in "wb9F". (See the description of deflateInit2 for more information + about the strategy parameter.) 'T' will request transparent writing or + appending with no compression and not using the gzip format. "a" can be used instead of "w" to request that the gzip stream that will be written be appended to the file. "+" will result in an error, since @@ -1337,11 +1361,11 @@ ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode)); file could not be opened. */ -ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode)); +ZEXTERN gzFile ZEXPORT gzdopen(int fd, const char *mode); /* - gzdopen associates a gzFile with the file descriptor fd. File descriptors - are obtained from calls like open, dup, creat, pipe or fileno (if the file - has been previously opened with fopen). The mode parameter is as in gzopen. + Associate a gzFile with the file descriptor fd. File descriptors are + obtained from calls like open, dup, creat, pipe or fileno (if the file has + been previously opened with fopen). The mode parameter is as in gzopen. The next call of gzclose on the returned gzFile will also close the file descriptor fd, just like fclose(fdopen(fd, mode)) closes the file descriptor @@ -1360,15 +1384,15 @@ ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode)); will not detect if fd is invalid (unless fd is -1). */ -ZEXTERN int ZEXPORT gzbuffer OF((gzFile file, unsigned size)); +ZEXTERN int ZEXPORT gzbuffer(gzFile file, unsigned size); /* - Set the internal buffer size used by this library's functions. The - default buffer size is 8192 bytes. This function must be called after - gzopen() or gzdopen(), and before any other calls that read or write the - file. The buffer memory allocation is always deferred to the first read or - write. Three times that size in buffer space is allocated. A larger buffer - size of, for example, 64K or 128K bytes will noticeably increase the speed - of decompression (reading). + Set the internal buffer size used by this library's functions for file to + size. The default buffer size is 8192 bytes. This function must be called + after gzopen() or gzdopen(), and before any other calls that read or write + the file. The buffer memory allocation is always deferred to the first read + or write. Three times that size in buffer space is allocated. A larger + buffer size of, for example, 64K or 128K bytes will noticeably increase the + speed of decompression (reading). The new buffer size also affects the maximum length for gzprintf(). @@ -1376,20 +1400,20 @@ ZEXTERN int ZEXPORT gzbuffer OF((gzFile file, unsigned size)); too late. */ -ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy)); +ZEXTERN int ZEXPORT gzsetparams(gzFile file, int level, int strategy); /* - Dynamically update the compression level or strategy. See the description - of deflateInit2 for the meaning of these parameters. Previously provided - data is flushed before the parameter change. + Dynamically update the compression level and strategy for file. See the + description of deflateInit2 for the meaning of these parameters. Previously + provided data is flushed before applying the parameter changes. gzsetparams returns Z_OK if success, Z_STREAM_ERROR if the file was not opened for writing, Z_ERRNO if there is an error writing the flushed data, or Z_MEM_ERROR if there is a memory allocation error. */ -ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len)); +ZEXTERN int ZEXPORT gzread(gzFile file, voidp buf, unsigned len); /* - Reads the given number of uncompressed bytes from the compressed file. If + Read and decompress up to len uncompressed bytes from file into buf. If the input file is not in gzip format, gzread copies the given number of bytes into the buffer directly from the file. @@ -1417,14 +1441,14 @@ ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len)); Z_STREAM_ERROR. */ -ZEXTERN z_size_t ZEXPORT gzfread OF((voidp buf, z_size_t size, z_size_t nitems, - gzFile file)); +ZEXTERN z_size_t ZEXPORT gzfread(voidp buf, z_size_t size, z_size_t nitems, + gzFile file); /* - Read up to nitems items of size size from file to buf, otherwise operating - as gzread() does. This duplicates the interface of stdio's fread(), with - size_t request and return types. If the library defines size_t, then - z_size_t is identical to size_t. If not, then z_size_t is an unsigned - integer type that can contain a pointer. + Read and decompress up to nitems items of size size from file into buf, + otherwise operating as gzread() does. This duplicates the interface of + stdio's fread(), with size_t request and return types. If the library + defines size_t, then z_size_t is identical to size_t. If not, then z_size_t + is an unsigned integer type that can contain a pointer. gzfread() returns the number of full items read of size size, or zero if the end of the file was reached and a full item could not be read, or if @@ -1435,26 +1459,24 @@ ZEXTERN z_size_t ZEXPORT gzfread OF((voidp buf, z_size_t size, z_size_t nitems, In the event that the end of file is reached and only a partial item is available at the end, i.e. the remaining uncompressed data length is not a - multiple of size, then the final partial item is nevetheless read into buf + multiple of size, then the final partial item is nevertheless read into buf and the end-of-file flag is set. The length of the partial item read is not provided, but could be inferred from the result of gztell(). This behavior is the same as the behavior of fread() implementations in common libraries, but it prevents the direct use of gzfread() to read a concurrently written - file, reseting and retrying on end-of-file, when size is not 1. + file, resetting and retrying on end-of-file, when size is not 1. */ -ZEXTERN int ZEXPORT gzwrite OF((gzFile file, - voidpc buf, unsigned len)); +ZEXTERN int ZEXPORT gzwrite(gzFile file, voidpc buf, unsigned len); /* - Writes the given number of uncompressed bytes into the compressed file. - gzwrite returns the number of uncompressed bytes written or 0 in case of - error. + Compress and write the len uncompressed bytes at buf to file. gzwrite + returns the number of uncompressed bytes written or 0 in case of error. */ -ZEXTERN z_size_t ZEXPORT gzfwrite OF((voidpc buf, z_size_t size, - z_size_t nitems, gzFile file)); +ZEXTERN z_size_t ZEXPORT gzfwrite(voidpc buf, z_size_t size, + z_size_t nitems, gzFile file); /* - gzfwrite() writes nitems items of size size from buf to file, duplicating + Compress and write nitems items of size size from buf to file, duplicating the interface of stdio's fwrite(), with size_t request and return types. If the library defines size_t, then z_size_t is identical to size_t. If not, then z_size_t is an unsigned integer type that can contain a pointer. @@ -1465,61 +1487,62 @@ ZEXTERN z_size_t ZEXPORT gzfwrite OF((voidpc buf, z_size_t size, is returned, and the error state is set to Z_STREAM_ERROR. */ -ZEXTERN int ZEXPORTVA gzprintf Z_ARG((gzFile file, const char *format, ...)); +ZEXTERN int ZEXPORTVA gzprintf(gzFile file, const char *format, ...); /* - Converts, formats, and writes the arguments to the compressed file under - control of the format string, as in fprintf. gzprintf returns the number of + Convert, format, compress, and write the arguments (...) to file under + control of the string format, as in fprintf. gzprintf returns the number of uncompressed bytes actually written, or a negative zlib error code in case of error. The number of uncompressed bytes written is limited to 8191, or one less than the buffer size given to gzbuffer(). The caller should assure that this limit is not exceeded. If it is exceeded, then gzprintf() will return an error (0) with nothing written. In this case, there may also be a buffer overflow with unpredictable consequences, which is possible only if - zlib was compiled with the insecure functions sprintf() or vsprintf() + zlib was compiled with the insecure functions sprintf() or vsprintf(), because the secure snprintf() or vsnprintf() functions were not available. This can be determined using zlibCompileFlags(). */ -ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s)); +ZEXTERN int ZEXPORT gzputs(gzFile file, const char *s); /* - Writes the given null-terminated string to the compressed file, excluding + Compress and write the given null-terminated string s to file, excluding the terminating null character. gzputs returns the number of characters written, or -1 in case of error. */ -ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len)); +ZEXTERN char * ZEXPORT gzgets(gzFile file, char *buf, int len); /* - Reads bytes from the compressed file until len-1 characters are read, or a - newline character is read and transferred to buf, or an end-of-file - condition is encountered. If any characters are read or if len == 1, the - string is terminated with a null character. If no characters are read due - to an end-of-file or len < 1, then the buffer is left untouched. + Read and decompress bytes from file into buf, until len-1 characters are + read, or until a newline character is read and transferred to buf, or an + end-of-file condition is encountered. If any characters are read or if len + is one, the string is terminated with a null character. If no characters + are read due to an end-of-file or len is less than one, then the buffer is + left untouched. gzgets returns buf which is a null-terminated string, or it returns NULL for end-of-file or in case of error. If there was an error, the contents at buf are indeterminate. */ -ZEXTERN int ZEXPORT gzputc OF((gzFile file, int c)); +ZEXTERN int ZEXPORT gzputc(gzFile file, int c); /* - Writes c, converted to an unsigned char, into the compressed file. gzputc + Compress and write c, converted to an unsigned char, into file. gzputc returns the value that was written, or -1 in case of error. */ -ZEXTERN int ZEXPORT gzgetc OF((gzFile file)); +ZEXTERN int ZEXPORT gzgetc(gzFile file); /* - Reads one byte from the compressed file. gzgetc returns this byte or -1 + Read and decompress one byte from file. gzgetc returns this byte or -1 in case of end of file or error. This is implemented as a macro for speed. As such, it does not do all of the checking the other functions do. I.e. it does not check to see if file is NULL, nor whether the structure file points to has been clobbered or not. */ -ZEXTERN int ZEXPORT gzungetc OF((int c, gzFile file)); +ZEXTERN int ZEXPORT gzungetc(int c, gzFile file); /* - Push one character back onto the stream to be read as the first character - on the next read. At least one character of push-back is allowed. + Push c back onto the stream for file to be read as the first character on + the next read. At least one character of push-back is always allowed. gzungetc() returns the character pushed, or -1 on failure. gzungetc() will fail if c is -1, and may fail if a character has been pushed but not read yet. If gzungetc is used immediately after gzopen or gzdopen, at least the @@ -1528,11 +1551,11 @@ ZEXTERN int ZEXPORT gzungetc OF((int c, gzFile file)); gzseek() or gzrewind(). */ -ZEXTERN int ZEXPORT gzflush OF((gzFile file, int flush)); +ZEXTERN int ZEXPORT gzflush(gzFile file, int flush); /* - Flushes all pending output into the compressed file. The parameter flush - is as in the deflate() function. The return value is the zlib error number - (see function gzerror below). gzflush is only permitted when writing. + Flush all pending output to file. The parameter flush is as in the + deflate() function. The return value is the zlib error number (see function + gzerror below). gzflush is only permitted when writing. If the flush parameter is Z_FINISH, the remaining data is written and the gzip stream is completed in the output. If gzwrite() is called again, a new @@ -1544,11 +1567,11 @@ ZEXTERN int ZEXPORT gzflush OF((gzFile file, int flush)); */ /* -ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile file, - z_off_t offset, int whence)); +ZEXTERN z_off_t ZEXPORT gzseek(gzFile file, + z_off_t offset, int whence); - Sets the starting position for the next gzread or gzwrite on the given - compressed file. The offset represents a number of bytes in the + Set the starting position to offset relative to whence for the next gzread + or gzwrite on file. The offset represents a number of bytes in the uncompressed data stream. The whence parameter is defined as in lseek(2); the value SEEK_END is not supported. @@ -1563,52 +1586,52 @@ ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile file, would be before the current position. */ -ZEXTERN int ZEXPORT gzrewind OF((gzFile file)); +ZEXTERN int ZEXPORT gzrewind(gzFile file); /* - Rewinds the given file. This function is supported only for reading. + Rewind file. This function is supported only for reading. - gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET) + gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET). */ /* -ZEXTERN z_off_t ZEXPORT gztell OF((gzFile file)); +ZEXTERN z_off_t ZEXPORT gztell(gzFile file); - Returns the starting position for the next gzread or gzwrite on the given - compressed file. This position represents a number of bytes in the - uncompressed data stream, and is zero when starting, even if appending or - reading a gzip stream from the middle of a file using gzdopen(). + Return the starting position for the next gzread or gzwrite on file. + This position represents a number of bytes in the uncompressed data stream, + and is zero when starting, even if appending or reading a gzip stream from + the middle of a file using gzdopen(). gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR) */ /* -ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile file)); +ZEXTERN z_off_t ZEXPORT gzoffset(gzFile file); - Returns the current offset in the file being read or written. This offset - includes the count of bytes that precede the gzip stream, for example when - appending or when using gzdopen() for reading. When reading, the offset - does not include as yet unused buffered input. This information can be used - for a progress indicator. On error, gzoffset() returns -1. + Return the current compressed (actual) read or write offset of file. This + offset includes the count of bytes that precede the gzip stream, for example + when appending or when using gzdopen() for reading. When reading, the + offset does not include as yet unused buffered input. This information can + be used for a progress indicator. On error, gzoffset() returns -1. */ -ZEXTERN int ZEXPORT gzeof OF((gzFile file)); +ZEXTERN int ZEXPORT gzeof(gzFile file); /* - Returns true (1) if the end-of-file indicator has been set while reading, - false (0) otherwise. Note that the end-of-file indicator is set only if the - read tried to go past the end of the input, but came up short. Therefore, - just like feof(), gzeof() may return false even if there is no more data to - read, in the event that the last read request was for the exact number of - bytes remaining in the input file. This will happen if the input file size - is an exact multiple of the buffer size. + Return true (1) if the end-of-file indicator for file has been set while + reading, false (0) otherwise. Note that the end-of-file indicator is set + only if the read tried to go past the end of the input, but came up short. + Therefore, just like feof(), gzeof() may return false even if there is no + more data to read, in the event that the last read request was for the exact + number of bytes remaining in the input file. This will happen if the input + file size is an exact multiple of the buffer size. If gzeof() returns true, then the read functions will return no more data, unless the end-of-file indicator is reset by gzclearerr() and the input file has grown since the previous end of file was detected. */ -ZEXTERN int ZEXPORT gzdirect OF((gzFile file)); +ZEXTERN int ZEXPORT gzdirect(gzFile file); /* - Returns true (1) if file is being copied directly while reading, or false + Return true (1) if file is being copied directly while reading, or false (0) if file is a gzip stream being decompressed. If the input file is empty, gzdirect() will return true, since the input @@ -1627,10 +1650,10 @@ ZEXTERN int ZEXPORT gzdirect OF((gzFile file)); gzip file reading and decompression, which may not be desired.) */ -ZEXTERN int ZEXPORT gzclose OF((gzFile file)); +ZEXTERN int ZEXPORT gzclose(gzFile file); /* - Flushes all pending output if necessary, closes the compressed file and - deallocates the (de)compression state. Note that once file is closed, you + Flush all pending output for file, if necessary, close file and + deallocate the (de)compression state. Note that once file is closed, you cannot call gzerror with file, since its structures have been deallocated. gzclose must not be called more than once on the same file, just as free must not be called more than once on the same allocation. @@ -1640,8 +1663,8 @@ ZEXTERN int ZEXPORT gzclose OF((gzFile file)); last read ended in the middle of a gzip stream, or Z_OK on success. */ -ZEXTERN int ZEXPORT gzclose_r OF((gzFile file)); -ZEXTERN int ZEXPORT gzclose_w OF((gzFile file)); +ZEXTERN int ZEXPORT gzclose_r(gzFile file); +ZEXTERN int ZEXPORT gzclose_w(gzFile file); /* Same as gzclose(), but gzclose_r() is only for use when reading, and gzclose_w() is only for use when writing or appending. The advantage to @@ -1652,12 +1675,12 @@ ZEXTERN int ZEXPORT gzclose_w OF((gzFile file)); zlib library. */ -ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum)); +ZEXTERN const char * ZEXPORT gzerror(gzFile file, int *errnum); /* - Returns the error message for the last error which occurred on the given - compressed file. errnum is set to zlib error number. If an error occurred - in the file system and not in the compression library, errnum is set to - Z_ERRNO and the application may consult errno to get the exact error code. + Return the error message for the last error which occurred on file. + errnum is set to zlib error number. If an error occurred in the file system + and not in the compression library, errnum is set to Z_ERRNO and the + application may consult errno to get the exact error code. The application must not modify the returned string. Future calls to this function may invalidate the previously returned string. If file is @@ -1668,9 +1691,9 @@ ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum)); functions above that do not distinguish those cases in their return values. */ -ZEXTERN void ZEXPORT gzclearerr OF((gzFile file)); +ZEXTERN void ZEXPORT gzclearerr(gzFile file); /* - Clears the error and end-of-file flags for file. This is analogous to the + Clear the error and end-of-file flags for file. This is analogous to the clearerr() function in stdio. This is useful for continuing to read a gzip file that is being written concurrently. */ @@ -1685,11 +1708,12 @@ ZEXTERN void ZEXPORT gzclearerr OF((gzFile file)); library. */ -ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len)); +ZEXTERN uLong ZEXPORT adler32(uLong adler, const Bytef *buf, uInt len); /* Update a running Adler-32 checksum with the bytes buf[0..len-1] and - return the updated checksum. If buf is Z_NULL, this function returns the - required initial value for the checksum. + return the updated checksum. An Adler-32 value is in the range of a 32-bit + unsigned integer. If buf is Z_NULL, this function returns the required + initial value for the checksum. An Adler-32 checksum is almost as reliable as a CRC-32 but can be computed much faster. @@ -1704,15 +1728,15 @@ ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len)); if (adler != original_adler) error(); */ -ZEXTERN uLong ZEXPORT adler32_z OF((uLong adler, const Bytef *buf, - z_size_t len)); +ZEXTERN uLong ZEXPORT adler32_z(uLong adler, const Bytef *buf, + z_size_t len); /* Same as adler32(), but with a size_t length. */ /* -ZEXTERN uLong ZEXPORT adler32_combine OF((uLong adler1, uLong adler2, - z_off_t len2)); +ZEXTERN uLong ZEXPORT adler32_combine(uLong adler1, uLong adler2, + z_off_t len2); Combine two Adler-32 checksums into one. For two sequences of bytes, seq1 and seq2 with lengths len1 and len2, Adler-32 checksums were calculated for @@ -1722,12 +1746,13 @@ ZEXTERN uLong ZEXPORT adler32_combine OF((uLong adler1, uLong adler2, negative, the result has no meaning or utility. */ -ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len)); +ZEXTERN uLong ZEXPORT crc32(uLong crc, const Bytef *buf, uInt len); /* Update a running CRC-32 with the bytes buf[0..len-1] and return the - updated CRC-32. If buf is Z_NULL, this function returns the required - initial value for the crc. Pre- and post-conditioning (one's complement) is - performed within this function so it shouldn't be done by the application. + updated CRC-32. A CRC-32 value is in the range of a 32-bit unsigned integer. + If buf is Z_NULL, this function returns the required initial value for the + crc. Pre- and post-conditioning (one's complement) is performed within this + function so it shouldn't be done by the application. Usage example: @@ -1739,20 +1764,34 @@ ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len)); if (crc != original_crc) error(); */ -ZEXTERN uLong ZEXPORT crc32_z OF((uLong adler, const Bytef *buf, - z_size_t len)); +ZEXTERN uLong ZEXPORT crc32_z(uLong crc, const Bytef *buf, + z_size_t len); /* Same as crc32(), but with a size_t length. */ /* -ZEXTERN uLong ZEXPORT crc32_combine OF((uLong crc1, uLong crc2, z_off_t len2)); +ZEXTERN uLong ZEXPORT crc32_combine(uLong crc1, uLong crc2, z_off_t len2); Combine two CRC-32 check values into one. For two sequences of bytes, seq1 and seq2 with lengths len1 and len2, CRC-32 check values were calculated for each, crc1 and crc2. crc32_combine() returns the CRC-32 check value of seq1 and seq2 concatenated, requiring only crc1, crc2, and - len2. + len2. len2 must be non-negative. +*/ + +/* +ZEXTERN uLong ZEXPORT crc32_combine_gen(z_off_t len2); + + Return the operator corresponding to length len2, to be used with + crc32_combine_op(). len2 must be non-negative. +*/ + +ZEXTERN uLong ZEXPORT crc32_combine_op(uLong crc1, uLong crc2, uLong op); +/* + Give the same result as crc32_combine(), using op in place of len2. op is + is generated from len2 by crc32_combine_gen(). This will be faster than + crc32_combine() if the generated op is used more than once. */ @@ -1761,20 +1800,20 @@ ZEXTERN uLong ZEXPORT crc32_combine OF((uLong crc1, uLong crc2, z_off_t len2)); /* deflateInit and inflateInit are macros to allow checking the zlib version * and the compiler's view of z_stream: */ -ZEXTERN int ZEXPORT deflateInit_ OF((z_streamp strm, int level, - const char *version, int stream_size)); -ZEXTERN int ZEXPORT inflateInit_ OF((z_streamp strm, - const char *version, int stream_size)); -ZEXTERN int ZEXPORT deflateInit2_ OF((z_streamp strm, int level, int method, - int windowBits, int memLevel, - int strategy, const char *version, - int stream_size)); -ZEXTERN int ZEXPORT inflateInit2_ OF((z_streamp strm, int windowBits, - const char *version, int stream_size)); -ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits, - unsigned char FAR *window, - const char *version, - int stream_size)); +ZEXTERN int ZEXPORT deflateInit_(z_streamp strm, int level, + const char *version, int stream_size); +ZEXTERN int ZEXPORT inflateInit_(z_streamp strm, + const char *version, int stream_size); +ZEXTERN int ZEXPORT deflateInit2_(z_streamp strm, int level, int method, + int windowBits, int memLevel, + int strategy, const char *version, + int stream_size); +ZEXTERN int ZEXPORT inflateInit2_(z_streamp strm, int windowBits, + const char *version, int stream_size); +ZEXTERN int ZEXPORT inflateBackInit_(z_streamp strm, int windowBits, + unsigned char FAR *window, + const char *version, + int stream_size); #ifdef Z_PREFIX_SET # define z_deflateInit(strm, level) \ deflateInit_((strm), (level), ZLIB_VERSION, (int)sizeof(z_stream)) @@ -1819,7 +1858,7 @@ struct gzFile_s { unsigned char *next; z_off64_t pos; }; -ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */ +ZEXTERN int ZEXPORT gzgetc_(gzFile file); /* backward compatibility */ #ifdef Z_PREFIX_SET # undef z_gzgetc # define z_gzgetc(g) \ @@ -1836,12 +1875,13 @@ ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */ * without large file support, _LFS64_LARGEFILE must also be true */ #ifdef Z_LARGE64 - ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *)); - ZEXTERN z_off64_t ZEXPORT gzseek64 OF((gzFile, z_off64_t, int)); - ZEXTERN z_off64_t ZEXPORT gztell64 OF((gzFile)); - ZEXTERN z_off64_t ZEXPORT gzoffset64 OF((gzFile)); - ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off64_t)); - ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off64_t)); + ZEXTERN gzFile ZEXPORT gzopen64(const char *, const char *); + ZEXTERN z_off64_t ZEXPORT gzseek64(gzFile, z_off64_t, int); + ZEXTERN z_off64_t ZEXPORT gztell64(gzFile); + ZEXTERN z_off64_t ZEXPORT gzoffset64(gzFile); + ZEXTERN uLong ZEXPORT adler32_combine64(uLong, uLong, z_off64_t); + ZEXTERN uLong ZEXPORT crc32_combine64(uLong, uLong, z_off64_t); + ZEXTERN uLong ZEXPORT crc32_combine_gen64(z_off64_t); #endif #if !defined(ZLIB_INTERNAL) && defined(Z_WANT64) @@ -1852,6 +1892,7 @@ ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */ # define z_gzoffset z_gzoffset64 # define z_adler32_combine z_adler32_combine64 # define z_crc32_combine z_crc32_combine64 +# define z_crc32_combine_gen z_crc32_combine_gen64 # else # define gzopen gzopen64 # define gzseek gzseek64 @@ -1859,49 +1900,53 @@ ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */ # define gzoffset gzoffset64 # define adler32_combine adler32_combine64 # define crc32_combine crc32_combine64 +# define crc32_combine_gen crc32_combine_gen64 # endif # ifndef Z_LARGE64 - ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *)); - ZEXTERN z_off_t ZEXPORT gzseek64 OF((gzFile, z_off_t, int)); - ZEXTERN z_off_t ZEXPORT gztell64 OF((gzFile)); - ZEXTERN z_off_t ZEXPORT gzoffset64 OF((gzFile)); - ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off_t)); - ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off_t)); + ZEXTERN gzFile ZEXPORT gzopen64(const char *, const char *); + ZEXTERN z_off_t ZEXPORT gzseek64(gzFile, z_off_t, int); + ZEXTERN z_off_t ZEXPORT gztell64(gzFile); + ZEXTERN z_off_t ZEXPORT gzoffset64(gzFile); + ZEXTERN uLong ZEXPORT adler32_combine64(uLong, uLong, z_off64_t); + ZEXTERN uLong ZEXPORT crc32_combine64(uLong, uLong, z_off64_t); + ZEXTERN uLong ZEXPORT crc32_combine_gen64(z_off64_t); # endif #else - ZEXTERN gzFile ZEXPORT gzopen OF((const char *, const char *)); - ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile, z_off_t, int)); - ZEXTERN z_off_t ZEXPORT gztell OF((gzFile)); - ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile)); - ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t)); - ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t)); + ZEXTERN gzFile ZEXPORT gzopen(const char *, const char *); + ZEXTERN z_off_t ZEXPORT gzseek(gzFile, z_off_t, int); + ZEXTERN z_off_t ZEXPORT gztell(gzFile); + ZEXTERN z_off_t ZEXPORT gzoffset(gzFile); + ZEXTERN uLong ZEXPORT adler32_combine(uLong, uLong, z_off_t); + ZEXTERN uLong ZEXPORT crc32_combine(uLong, uLong, z_off_t); + ZEXTERN uLong ZEXPORT crc32_combine_gen(z_off_t); #endif #else /* Z_SOLO */ - ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t)); - ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t)); + ZEXTERN uLong ZEXPORT adler32_combine(uLong, uLong, z_off_t); + ZEXTERN uLong ZEXPORT crc32_combine(uLong, uLong, z_off_t); + ZEXTERN uLong ZEXPORT crc32_combine_gen(z_off_t); #endif /* !Z_SOLO */ /* undocumented functions */ -ZEXTERN const char * ZEXPORT zError OF((int)); -ZEXTERN int ZEXPORT inflateSyncPoint OF((z_streamp)); -ZEXTERN const z_crc_t FAR * ZEXPORT get_crc_table OF((void)); -ZEXTERN int ZEXPORT inflateUndermine OF((z_streamp, int)); -ZEXTERN int ZEXPORT inflateValidate OF((z_streamp, int)); -ZEXTERN unsigned long ZEXPORT inflateCodesUsed OF ((z_streamp)); -ZEXTERN int ZEXPORT inflateResetKeep OF((z_streamp)); -ZEXTERN int ZEXPORT deflateResetKeep OF((z_streamp)); -#if (defined(_WIN32) || defined(__CYGWIN__)) && !defined(Z_SOLO) -ZEXTERN gzFile ZEXPORT gzopen_w OF((const wchar_t *path, - const char *mode)); +ZEXTERN const char * ZEXPORT zError(int); +ZEXTERN int ZEXPORT inflateSyncPoint(z_streamp); +ZEXTERN const z_crc_t FAR * ZEXPORT get_crc_table(void); +ZEXTERN int ZEXPORT inflateUndermine(z_streamp, int); +ZEXTERN int ZEXPORT inflateValidate(z_streamp, int); +ZEXTERN unsigned long ZEXPORT inflateCodesUsed(z_streamp); +ZEXTERN int ZEXPORT inflateResetKeep(z_streamp); +ZEXTERN int ZEXPORT deflateResetKeep(z_streamp); +#if defined(_WIN32) && !defined(Z_SOLO) +ZEXTERN gzFile ZEXPORT gzopen_w(const wchar_t *path, + const char *mode); #endif #if defined(STDC) || defined(Z_HAVE_STDARG_H) # ifndef Z_SOLO -ZEXTERN int ZEXPORTVA gzvprintf Z_ARG((gzFile file, - const char *format, - va_list va)); +ZEXTERN int ZEXPORTVA gzvprintf(gzFile file, + const char *format, + va_list va); # endif #endif diff --git a/deps/zlib/zlib.map b/deps/zlib/zlib.map index 40fa9db2b..a62852127 100644 --- a/deps/zlib/zlib.map +++ b/deps/zlib/zlib.map @@ -1,94 +1,104 @@ -ZLIB_1.2.0 { - global: - compressBound; - deflateBound; - inflateBack; - inflateBackEnd; - inflateBackInit_; - inflateCopy; - local: - deflate_copyright; - inflate_copyright; - inflate_fast; - inflate_table; - zcalloc; - zcfree; - z_errmsg; - gz_error; - gz_intmax; - _*; -}; - -ZLIB_1.2.0.2 { - gzclearerr; - gzungetc; - zlibCompileFlags; -} ZLIB_1.2.0; - -ZLIB_1.2.0.8 { - deflatePrime; -} ZLIB_1.2.0.2; - -ZLIB_1.2.2 { - adler32_combine; - crc32_combine; - deflateSetHeader; - inflateGetHeader; -} ZLIB_1.2.0.8; - -ZLIB_1.2.2.3 { - deflateTune; - gzdirect; -} ZLIB_1.2.2; - -ZLIB_1.2.2.4 { - inflatePrime; -} ZLIB_1.2.2.3; - -ZLIB_1.2.3.3 { - adler32_combine64; - crc32_combine64; - gzopen64; - gzseek64; - gztell64; - inflateUndermine; -} ZLIB_1.2.2.4; - -ZLIB_1.2.3.4 { - inflateReset2; - inflateMark; -} ZLIB_1.2.3.3; - -ZLIB_1.2.3.5 { - gzbuffer; - gzoffset; - gzoffset64; - gzclose_r; - gzclose_w; -} ZLIB_1.2.3.4; - -ZLIB_1.2.5.1 { - deflatePending; -} ZLIB_1.2.3.5; - -ZLIB_1.2.5.2 { - deflateResetKeep; - gzgetc_; - inflateResetKeep; -} ZLIB_1.2.5.1; - -ZLIB_1.2.7.1 { - inflateGetDictionary; - gzvprintf; -} ZLIB_1.2.5.2; - -ZLIB_1.2.9 { - inflateCodesUsed; - inflateValidate; - uncompress2; - gzfread; - gzfwrite; - deflateGetDictionary; - adler32_z; - crc32_z; -} ZLIB_1.2.7.1; +ZLIB_1.2.0 { + global: + compressBound; + deflateBound; + inflateBack; + inflateBackEnd; + inflateBackInit_; + inflateCopy; + local: + deflate_copyright; + inflate_copyright; + inflate_fast; + inflate_table; + zcalloc; + zcfree; + z_errmsg; + gz_error; + gz_intmax; + _*; +}; + +ZLIB_1.2.0.2 { + gzclearerr; + gzungetc; + zlibCompileFlags; +} ZLIB_1.2.0; + +ZLIB_1.2.0.8 { + deflatePrime; +} ZLIB_1.2.0.2; + +ZLIB_1.2.2 { + adler32_combine; + crc32_combine; + deflateSetHeader; + inflateGetHeader; +} ZLIB_1.2.0.8; + +ZLIB_1.2.2.3 { + deflateTune; + gzdirect; +} ZLIB_1.2.2; + +ZLIB_1.2.2.4 { + inflatePrime; +} ZLIB_1.2.2.3; + +ZLIB_1.2.3.3 { + adler32_combine64; + crc32_combine64; + gzopen64; + gzseek64; + gztell64; + inflateUndermine; +} ZLIB_1.2.2.4; + +ZLIB_1.2.3.4 { + inflateReset2; + inflateMark; +} ZLIB_1.2.3.3; + +ZLIB_1.2.3.5 { + gzbuffer; + gzoffset; + gzoffset64; + gzclose_r; + gzclose_w; +} ZLIB_1.2.3.4; + +ZLIB_1.2.5.1 { + deflatePending; +} ZLIB_1.2.3.5; + +ZLIB_1.2.5.2 { + deflateResetKeep; + gzgetc_; + inflateResetKeep; +} ZLIB_1.2.5.1; + +ZLIB_1.2.7.1 { + inflateGetDictionary; + gzvprintf; +} ZLIB_1.2.5.2; + +ZLIB_1.2.9 { + inflateCodesUsed; + inflateValidate; + uncompress2; + gzfread; + gzfwrite; + deflateGetDictionary; + adler32_z; + crc32_z; +} ZLIB_1.2.7.1; + +ZLIB_1.2.12 { + crc32_combine_gen; + crc32_combine_gen64; + crc32_combine_op; +} ZLIB_1.2.9; + +ZLIB_1.3.2 { + deflateUsed; +} ZLIB_1.2.12; \ No newline at end of file diff --git a/deps/zlib/zlib.pc.cmakein b/deps/zlib/zlib.pc.cmakein index a5e642938..6da9e49fd 100644 --- a/deps/zlib/zlib.pc.cmakein +++ b/deps/zlib/zlib.pc.cmakein @@ -1,12 +1,12 @@ prefix=@CMAKE_INSTALL_PREFIX@ exec_prefix=@CMAKE_INSTALL_PREFIX@ -libdir=@INSTALL_LIB_DIR@ -sharedlibdir=@INSTALL_LIB_DIR@ -includedir=@INSTALL_INC_DIR@ +libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@ +sharedlibdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@ +includedir=${exec_prefix}/@CMAKE_INSTALL_INCLUDEDIR@ Name: zlib Description: zlib compression library -Version: @VERSION@ +Version: @zlib_VERSION@ Requires: Libs: -L${libdir} -L${sharedlibdir} -lz diff --git a/deps/zlib/zlib2ansi b/deps/zlib/zlib2ansi deleted file mode 100755 index 15e3e165f..000000000 --- a/deps/zlib/zlib2ansi +++ /dev/null @@ -1,152 +0,0 @@ -#!/usr/bin/perl - -# Transform K&R C function definitions into ANSI equivalent. -# -# Author: Paul Marquess -# Version: 1.0 -# Date: 3 October 2006 - -# TODO -# -# Asumes no function pointer parameters. unless they are typedefed. -# Assumes no literal strings that look like function definitions -# Assumes functions start at the beginning of a line - -use strict; -use warnings; - -local $/; -$_ = <>; - -my $sp = qr{ \s* (?: /\* .*? \*/ )? \s* }x; # assume no nested comments - -my $d1 = qr{ $sp (?: [\w\*\s]+ $sp)* $sp \w+ $sp [\[\]\s]* $sp }x ; -my $decl = qr{ $sp (?: \w+ $sp )+ $d1 }xo ; -my $dList = qr{ $sp $decl (?: $sp , $d1 )* $sp ; $sp }xo ; - - -while (s/^ - ( # Start $1 - ( # Start $2 - .*? # Minimal eat content - ( ^ \w [\w\s\*]+ ) # $3 -- function name - \s* # optional whitespace - ) # $2 - Matched up to before parameter list - - \( \s* # Literal "(" + optional whitespace - ( [^\)]+ ) # $4 - one or more anythings except ")" - \s* \) # optional whitespace surrounding a Literal ")" - - ( (?: $dList )+ ) # $5 - - $sp ^ { # literal "{" at start of line - ) # Remember to $1 - //xsom - ) -{ - my $all = $1 ; - my $prefix = $2; - my $param_list = $4 ; - my $params = $5; - - StripComments($params); - StripComments($param_list); - $param_list =~ s/^\s+//; - $param_list =~ s/\s+$//; - - my $i = 0 ; - my %pList = map { $_ => $i++ } - split /\s*,\s*/, $param_list; - my $pMatch = '(\b' . join('|', keys %pList) . '\b)\W*$' ; - - my @params = split /\s*;\s*/, $params; - my @outParams = (); - foreach my $p (@params) - { - if ($p =~ /,/) - { - my @bits = split /\s*,\s*/, $p; - my $first = shift @bits; - $first =~ s/^\s*//; - push @outParams, $first; - $first =~ /^(\w+\s*)/; - my $type = $1 ; - push @outParams, map { $type . $_ } @bits; - } - else - { - $p =~ s/^\s+//; - push @outParams, $p; - } - } - - - my %tmp = map { /$pMatch/; $_ => $pList{$1} } - @outParams ; - - @outParams = map { " $_" } - sort { $tmp{$a} <=> $tmp{$b} } - @outParams ; - - print $prefix ; - print "(\n" . join(",\n", @outParams) . ")\n"; - print "{" ; - -} - -# Output any trailing code. -print ; -exit 0; - - -sub StripComments -{ - - no warnings; - - # Strip C & C++ coments - # From the perlfaq - $_[0] =~ - - s{ - /\* ## Start of /* ... */ comment - [^*]*\*+ ## Non-* followed by 1-or-more *'s - ( - [^/*][^*]*\*+ - )* ## 0-or-more things which don't start with / - ## but do end with '*' - / ## End of /* ... */ comment - - | ## OR C++ Comment - // ## Start of C++ comment // - [^\n]* ## followed by 0-or-more non end of line characters - - | ## OR various things which aren't comments: - - ( - " ## Start of " ... " string - ( - \\. ## Escaped char - | ## OR - [^"\\] ## Non "\ - )* - " ## End of " ... " string - - | ## OR - - ' ## Start of ' ... ' string - ( - \\. ## Escaped char - | ## OR - [^'\\] ## Non '\ - )* - ' ## End of ' ... ' string - - | ## OR - - . ## Anything other char - [^/"'\\]* ## Chars which doesn't start a comment, string or escape - ) - }{$2}gxs; - -} diff --git a/deps/zlib/zlibConfig.cmake.in b/deps/zlib/zlibConfig.cmake.in new file mode 100644 index 000000000..713cac458 --- /dev/null +++ b/deps/zlib/zlibConfig.cmake.in @@ -0,0 +1,26 @@ +@PACKAGE_INIT@ + +set(_ZLIB_supported_components "") + +if(@ZLIB_BUILD_SHARED@) + list(APPEND _ZLIB_supported_components shared) +endif(@ZLIB_BUILD_SHARED@) + +if(@ZLIB_BUILD_STATIC@) + list(APPEND _ZLIB_supported_components static) +endif(@ZLIB_BUILD_STATIC@) + +if(ZLIB_FIND_COMPONENTS) + foreach(_comp ${ZLIB_FIND_COMPONENTS}) + if(NOT _comp IN_LIST _ZLIB_supported_components) + set(ZLIB_FOUND False) + set(ZLIB_NOT_FOUND_MESSAGE "Unsupported component: ${_comp}") + endif(NOT _comp IN_LIST _ZLIB_supported_components) + + include("${CMAKE_CURRENT_LIST_DIR}/ZLIB-${_comp}.cmake") + endforeach(_comp ${ZLIB_FIND_COMPONENTS}) +else(ZLIB_FIND_COMPONENTS) + foreach(_component_config IN LISTS _ZLIB_supported_components) + include("${CMAKE_CURRENT_LIST_DIR}/ZLIB-${_component_config}.cmake") + endforeach(_component_config IN LISTS _ZLIB_supported_components) +endif(ZLIB_FIND_COMPONENTS) diff --git a/deps/zlib/zutil.c b/deps/zlib/zutil.c index a76c6b0c7..b1c5d2d3c 100644 --- a/deps/zlib/zutil.c +++ b/deps/zlib/zutil.c @@ -24,13 +24,11 @@ z_const char * const z_errmsg[10] = { }; -const char * ZEXPORT zlibVersion() -{ +const char * ZEXPORT zlibVersion(void) { return ZLIB_VERSION; } -uLong ZEXPORT zlibCompileFlags() -{ +uLong ZEXPORT zlibCompileFlags(void) { uLong flags; flags = 0; @@ -61,9 +59,11 @@ uLong ZEXPORT zlibCompileFlags() #ifdef ZLIB_DEBUG flags += 1 << 8; #endif + /* #if defined(ASMV) || defined(ASMINF) flags += 1 << 9; #endif + */ #ifdef ZLIB_WINAPI flags += 1 << 10; #endif @@ -119,9 +119,7 @@ uLong ZEXPORT zlibCompileFlags() # endif int ZLIB_INTERNAL z_verbose = verbose; -void ZLIB_INTERNAL z_error (m) - char *m; -{ +void ZLIB_INTERNAL z_error(char *m) { fprintf(stderr, "%s\n", m); exit(1); } @@ -130,14 +128,12 @@ void ZLIB_INTERNAL z_error (m) /* exported to allow conversion of error code to string for compress() and * uncompress() */ -const char * ZEXPORT zError(err) - int err; -{ +const char * ZEXPORT zError(int err) { return ERR_MSG(err); } -#if defined(_WIN32_WCE) - /* The Microsoft C Run-Time Library for Windows CE doesn't have +#if defined(_WIN32_WCE) && _WIN32_WCE < 0x800 + /* The older Microsoft C Run-Time Library for Windows CE doesn't have * errno. We define it as a global variable to simplify porting. * Its value is always 0 and should not be used. */ @@ -146,22 +142,14 @@ const char * ZEXPORT zError(err) #ifndef HAVE_MEMCPY -void ZLIB_INTERNAL zmemcpy(dest, source, len) - Bytef* dest; - const Bytef* source; - uInt len; -{ +void ZLIB_INTERNAL zmemcpy(Bytef* dest, const Bytef* source, uInt len) { if (len == 0) return; do { *dest++ = *source++; /* ??? to be unrolled */ } while (--len != 0); } -int ZLIB_INTERNAL zmemcmp(s1, s2, len) - const Bytef* s1; - const Bytef* s2; - uInt len; -{ +int ZLIB_INTERNAL zmemcmp(const Bytef* s1, const Bytef* s2, uInt len) { uInt j; for (j = 0; j < len; j++) { @@ -170,10 +158,7 @@ int ZLIB_INTERNAL zmemcmp(s1, s2, len) return 0; } -void ZLIB_INTERNAL zmemzero(dest, len) - Bytef* dest; - uInt len; -{ +void ZLIB_INTERNAL zmemzero(Bytef* dest, uInt len) { if (len == 0) return; do { *dest++ = 0; /* ??? to be unrolled */ @@ -214,8 +199,7 @@ local ptr_table table[MAX_PTR]; * a protected system like OS/2. Use Microsoft C instead. */ -voidpf ZLIB_INTERNAL zcalloc (voidpf opaque, unsigned items, unsigned size) -{ +voidpf ZLIB_INTERNAL zcalloc(voidpf opaque, unsigned items, unsigned size) { voidpf buf; ulg bsize = (ulg)items*size; @@ -240,8 +224,7 @@ voidpf ZLIB_INTERNAL zcalloc (voidpf opaque, unsigned items, unsigned size) return buf; } -void ZLIB_INTERNAL zcfree (voidpf opaque, voidpf ptr) -{ +void ZLIB_INTERNAL zcfree(voidpf opaque, voidpf ptr) { int n; (void)opaque; @@ -277,14 +260,12 @@ void ZLIB_INTERNAL zcfree (voidpf opaque, voidpf ptr) # define _hfree hfree #endif -voidpf ZLIB_INTERNAL zcalloc (voidpf opaque, uInt items, uInt size) -{ +voidpf ZLIB_INTERNAL zcalloc(voidpf opaque, uInt items, uInt size) { (void)opaque; return _halloc((long)items, size); } -void ZLIB_INTERNAL zcfree (voidpf opaque, voidpf ptr) -{ +void ZLIB_INTERNAL zcfree(voidpf opaque, voidpf ptr) { (void)opaque; _hfree(ptr); } @@ -297,25 +278,18 @@ void ZLIB_INTERNAL zcfree (voidpf opaque, voidpf ptr) #ifndef MY_ZCALLOC /* Any system without a special alloc function */ #ifndef STDC -extern voidp malloc OF((uInt size)); -extern voidp calloc OF((uInt items, uInt size)); -extern void free OF((voidpf ptr)); +extern voidp malloc(uInt size); +extern voidp calloc(uInt items, uInt size); +extern void free(voidpf ptr); #endif -voidpf ZLIB_INTERNAL zcalloc (opaque, items, size) - voidpf opaque; - unsigned items; - unsigned size; -{ +voidpf ZLIB_INTERNAL zcalloc(voidpf opaque, unsigned items, unsigned size) { (void)opaque; return sizeof(uInt) > 2 ? (voidpf)malloc(items * size) : (voidpf)calloc(items, size); } -void ZLIB_INTERNAL zcfree (opaque, ptr) - voidpf opaque; - voidpf ptr; -{ +void ZLIB_INTERNAL zcfree(voidpf opaque, voidpf ptr) { (void)opaque; free(ptr); } diff --git a/deps/zlib/zutil.h b/deps/zlib/zutil.h index b079ea6a8..27ca69380 100644 --- a/deps/zlib/zutil.h +++ b/deps/zlib/zutil.h @@ -1,5 +1,5 @@ /* zutil.h -- internal interface and configuration of the compression library - * Copyright (C) 1995-2016 Jean-loup Gailly, Mark Adler + * Copyright (C) 1995-2024 Jean-loup Gailly, Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -29,10 +29,6 @@ # include #endif -#ifdef Z_SOLO - typedef long ptrdiff_t; /* guess -- will be caught if guess is wrong */ -#endif - #ifndef local # define local static #endif @@ -46,17 +42,32 @@ typedef unsigned short ush; typedef ush FAR ushf; typedef unsigned long ulg; +#if !defined(Z_U8) && !defined(Z_SOLO) && defined(STDC) +# include +# if (ULONG_MAX == 0xffffffffffffffff) +# define Z_U8 unsigned long +# elif (ULLONG_MAX == 0xffffffffffffffff) +# define Z_U8 unsigned long long +# elif (ULONG_LONG_MAX == 0xffffffffffffffff) +# define Z_U8 unsigned long long +# elif (UINT_MAX == 0xffffffffffffffff) +# define Z_U8 unsigned +# endif +#endif + extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */ /* (size given to avoid silly warnings with Visual C++) */ -#define ERR_MSG(err) z_errmsg[Z_NEED_DICT-(err)] +#define ERR_MSG(err) z_errmsg[(err) < -6 || (err) > 2 ? 9 : 2 - (err)] #define ERR_RETURN(strm,err) \ return (strm->msg = ERR_MSG(err), (err)) /* To be used only when the state is known to be valid */ /* common constants */ - +#if MAX_WBITS < 9 || MAX_WBITS > 15 +# error MAX_WBITS must be in 9..15 +#endif #ifndef DEF_WBITS # define DEF_WBITS MAX_WBITS #endif @@ -130,20 +141,11 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */ # endif #endif -#if defined(MACOS) || defined(TARGET_OS_MAC) +#if defined(MACOS) # define OS_CODE 7 -# ifndef Z_SOLO -# if defined(__MWERKS__) && __dest_os != __be_os && __dest_os != __win32_os -# include /* for fdopen */ -# else -# ifndef fdopen -# define fdopen(fd,mode) NULL /* No fdopen() */ -# endif -# endif -# endif #endif -#ifdef __acorn +#if defined(__acorn) || defined(__riscos) # define OS_CODE 13 #endif @@ -163,22 +165,6 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */ # define OS_CODE 19 #endif -#if defined(_BEOS_) || defined(RISCOS) -# define fdopen(fd,mode) NULL /* No fdopen() */ -#endif - -#if (defined(_MSC_VER) && (_MSC_VER > 600)) && !defined __INTERIX -# if defined(_WIN32_WCE) -# define fdopen(fd,mode) NULL /* No fdopen() */ -# ifndef _PTRDIFF_T_DEFINED - typedef int ptrdiff_t; -# define _PTRDIFF_T_DEFINED -# endif -# else -# define fdopen(fd,type) _fdopen(fd,type) -# endif -#endif - #if defined(__BORLANDC__) && !defined(MSDOS) #pragma warn -8004 #pragma warn -8008 @@ -186,10 +172,10 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */ #endif /* provide prototypes for these when building zlib without LFS */ -#if !defined(_WIN32) && \ - (!defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0) - ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off_t)); - ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off_t)); +#ifndef Z_LARGE64 + ZEXTERN uLong ZEXPORT adler32_combine64(uLong, uLong, z_off64_t); + ZEXTERN uLong ZEXPORT crc32_combine64(uLong, uLong, z_off64_t); + ZEXTERN uLong ZEXPORT crc32_combine_gen64(z_off64_t); #endif /* common defaults */ @@ -228,16 +214,16 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */ # define zmemzero(dest, len) memset(dest, 0, len) # endif #else - void ZLIB_INTERNAL zmemcpy OF((Bytef* dest, const Bytef* source, uInt len)); - int ZLIB_INTERNAL zmemcmp OF((const Bytef* s1, const Bytef* s2, uInt len)); - void ZLIB_INTERNAL zmemzero OF((Bytef* dest, uInt len)); + void ZLIB_INTERNAL zmemcpy(Bytef* dest, const Bytef* source, uInt len); + int ZLIB_INTERNAL zmemcmp(const Bytef* s1, const Bytef* s2, uInt len); + void ZLIB_INTERNAL zmemzero(Bytef* dest, uInt len); #endif /* Diagnostic functions */ #ifdef ZLIB_DEBUG # include extern int ZLIB_INTERNAL z_verbose; - extern void ZLIB_INTERNAL z_error OF((char *m)); + extern void ZLIB_INTERNAL z_error(char *m); # define Assert(cond,msg) {if(!(cond)) z_error(msg);} # define Trace(x) {if (z_verbose>=0) fprintf x ;} # define Tracev(x) {if (z_verbose>0) fprintf x ;} @@ -254,9 +240,9 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */ #endif #ifndef Z_SOLO - voidpf ZLIB_INTERNAL zcalloc OF((voidpf opaque, unsigned items, - unsigned size)); - void ZLIB_INTERNAL zcfree OF((voidpf opaque, voidpf ptr)); + voidpf ZLIB_INTERNAL zcalloc(voidpf opaque, unsigned items, + unsigned size); + void ZLIB_INTERNAL zcfree(voidpf opaque, voidpf ptr); #endif #define ZALLOC(strm, items, size) \ diff --git a/docker/BinaryPackage.arch b/docker/BinaryPackage.arch new file mode 100644 index 000000000..e6ddbd4a1 --- /dev/null +++ b/docker/BinaryPackage.arch @@ -0,0 +1,66 @@ +FROM archlinux:latest + +# Set environment +RUN echo "en_US.UTF-8 UTF-8" > /etc/locale.gen && \ + locale-gen && \ + echo "LANG=en_US.UTF-8" > /etc/locale.conf && \ + ln -sf /usr/share/zoneinfo/UTC /etc/localtime +ENV LANG=en_US.UTF-8 +ENV LC_ALL=en_US.UTF-8 + +# Install all necessary packages +RUN pacman -Sy --noconfirm \ + base-devel \ + git \ + cmake \ + unzip \ + wget \ + zstd \ + python \ + mingw-w64-gcc \ + mingw-w64-crt \ + mingw-w64-headers \ + mingw-w64-binutils \ + mingw-w64-winpthreads \ + p7zip \ + dos2unix \ + && pacman -Scc --noconfirm + +# Set source working directory +WORKDIR /root + +# Clone hashcat and win-iconv repositories +RUN git clone https://github.com/win-iconv/win-iconv.git + +# Build win-iconv for Windows target +WORKDIR /root/win-iconv +RUN cmake \ + -D WIN_ICONV_BUILD_EXECUTABLE=OFF \ + -D CMAKE_INSTALL_PREFIX=/opt/win-iconv-64 \ + -D CMAKE_C_COMPILER=$(which x86_64-w64-mingw32-gcc) \ + -D CMAKE_CXX_COMPILER=$(which x86_64-w64-mingw32-g++) \ + . && \ + make -j$(nproc) && make install + +# Download and extract MSYS2 Python headers (still 3.12) +RUN mkdir /opt/win-python +WORKDIR /opt/win-python +RUN wget https://repo.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-3.12.10-1-any.pkg.tar.zst && \ + zstd -d mingw-w64-x86_64-python-3.12.10-1-any.pkg.tar.zst && \ + tar -xf mingw-w64-x86_64-python-3.12.10-1-any.pkg.tar + +## Custom patches +WORKDIR /root +COPY docker/patches/ /root/patches/ + +## hashcat +WORKDIR /root +RUN git clone https://github.com/hashcat/hashcat.git + +## Compile +WORKDIR /root/hashcat +RUN bash -c 'shopt -s nullglob; for p in /root/patches/*.patch /root/patches/*.diff; do pwd && git apply "$p"; done' +RUN make -s binaries +RUN tools/package_bin.sh + +CMD ["/bin/bash"] diff --git a/docker/BinaryPackage.ubuntu20 b/docker/BinaryPackage.ubuntu20 new file mode 100644 index 000000000..c23d5832d --- /dev/null +++ b/docker/BinaryPackage.ubuntu20 @@ -0,0 +1,104 @@ +FROM ubuntu:20.04 + +ENV DEBIAN_FRONTEND=noninteractive + +## Change to bash + +RUN echo "dash dash/sh boolean false" | debconf-set-selections && dpkg-reconfigure dash + +RUN apt-get update && \ + apt-get install -y --no-install-recommends \ + ca-certificates \ + build-essential \ + git \ + wget \ + pkg-config \ + make \ + gcc-mingw-w64-x86-64 \ + g++-mingw-w64-x86-64 \ + dos2unix \ + libssl-dev \ + zlib1g-dev \ + libncurses5-dev \ + libncursesw5-dev \ + libreadline-dev \ + libsqlite3-dev \ + libgdbm-dev \ + libdb5.3-dev \ + libbz2-dev \ + libexpat1-dev \ + liblzma-dev tk-dev \ + unzip \ + zstd \ + tar + +WORKDIR /root + +## Ubuntu 20.04 cmake version is incompatible to recent win-iconv so we use our own +RUN wget https://github.com/Kitware/CMake/releases/download/v3.25.3/cmake-3.25.3-linux-x86_64.sh && \ + chmod +x cmake-3.25.3-linux-x86_64.sh && \ + ./cmake-3.25.3-linux-x86_64.sh --skip-license --prefix=/usr/local + +## Also 7z on ubuntu 20.04 is very outdated +WORKDIR /root +RUN git clone --branch 24.09 https://github.com/ip7z/7zip.git +WORKDIR /root/7zip/CPP/7zip/Bundles/Alone2 +RUN make -f makefile.gcc -j +RUN cp /root/7zip/CPP/7zip/Bundles/Alone2/_o/7zz /usr/local/bin/7z + +## Iconv for windows +WORKDIR /root +RUN git clone --branch v0.0.10 https://github.com/win-iconv/win-iconv.git + +WORKDIR /root/win-iconv +RUN cmake \ + -D WIN_ICONV_BUILD_EXECUTABLE=OFF \ + -D CMAKE_INSTALL_PREFIX=/opt/win-iconv-64 \ + -D CMAKE_C_COMPILER=$(which x86_64-w64-mingw32-gcc) \ + -D CMAKE_CXX_COMPILER=$(which x86_64-w64-mingw32-g++) \ + . && \ + make install + +## Ubuntu 20.04 python version 3.10 is too old, it lacks support for non-GIL mode + +WORKDIR /root + +ENV PYTHON_VERSION=3.13.3 + +RUN wget https://www.python.org/ftp/python/${PYTHON_VERSION}/Python-${PYTHON_VERSION}.tgz && \ + tar xzf Python-${PYTHON_VERSION}.tgz + +WORKDIR /root/Python-${PYTHON_VERSION} + +RUN ./configure --prefix=/opt/linux-python && \ + make -j && make install + +ENV PATH="/opt/linux-python/bin:$PATH" + +## For Windows we also need python + +WORKDIR /root + +RUN mkdir /opt/win-python +WORKDIR /opt/win-python +RUN wget https://repo.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-3.12.10-1-any.pkg.tar.zst +RUN unzstd mingw-w64-x86_64-python-3.12.10-1-any.pkg.tar.zst +RUN tar -xf mingw-w64-x86_64-python-3.12.10-1-any.pkg.tar + +## Custom patches + +WORKDIR /root + +COPY docker/patches/ /root/patches/ + +RUN git clone https://github.com/hashcat/hashcat.git + +WORKDIR /root/hashcat + +RUN bash -c 'shopt -s nullglob; for p in /root/patches/*.patch /root/patches/*.diff; do pwd && git apply "$p"; done' + +RUN make -s binaries + +RUN tools/package_bin.sh + +RUN ["/bin/bash"] diff --git a/obj/.lock b/docker/patches/.gitkeep similarity index 100% rename from obj/.lock rename to docker/patches/.gitkeep diff --git a/docs/changes.txt b/docs/changes.txt index 4dae255b3..961dad326 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -8,6 +8,7 @@ - Added hash-mode: Adobe AEM (SSPR, SHA-256 with Salt) - Added hash-mode: Adobe AEM (SSPR, SHA-512 with Salt) - Added hash-mode: Anope IRC Services (enc_sha256) +- Added hash-mode: BestCrypt v4 Volume Encryption - Added hash-mode: Bisq .wallet (scrypt) - Added hash-mode: Bitcoin raw private key (P2PKH) - Added hash-mode: Bitcoin raw private key (P2SH(P2WPKH)) @@ -30,6 +31,7 @@ - Added hash-mode: Kerberos 5, etype 18, AS-REP - Added hash-mode: MetaMask Mobile Wallet - Added hash-mode: MetaMask Wallet (short hash, plaintext check) +- Added hash-mode: Microsoft Online Account (PBKDF2-HMAC-SHA256 + AES256) - Added hash-mode: NetIQ SSPR (MD5) - Added hash-mode: NetIQ SSPR (PBKDF2WithHmacSHA1) - Added hash-mode: NetIQ SSPR (PBKDF2WithHmacSHA256) @@ -38,6 +40,9 @@ - Added hash-mode: NetIQ SSPR (SHA-1 with Salt) - Added hash-mode: NetIQ SSPR (SHA-256 with Salt) - Added hash-mode: NetIQ SSPR (SHA-512 with Salt) +- Added hash-mode: RC4 104-bit DropN +- Added hash-mode: RC4 40-bit DropN +- Added hash-mode: RC4 72-bit DropN - Added hash-mode: RSA Security Analytics / NetWitness (sha256) - Added hash-mode: SecureCRT MasterPassphrase v2 - Added hash-mode: Veeam VB @@ -62,6 +67,8 @@ ## - Added new feature (-Y) that creates N virtual instances for each device in your system at the cost of N times the device memory consumption +- Added options --benchmark-min and --benchmark-max to set a hash-mode range to be used during the benchmark +- Added option --backend-devices-keepfree to configure X percentage of device memory available to keep free ## ## Performance @@ -88,7 +95,8 @@ - Fixed build failed for 18400 with Apple Metal - Fixed build failed for 18600 with Apple Metal - Fixed build failed for 4410 with vector width > 1 -- Fixed build failure for almost all hash modes that make use of hc_swap64 and/or hc_swap64_S with Apple Metal +- Fixed clang identification in src/Makefile +- Fixed build failure for almost all hash modes that make use of hc_swap64 and/or hc_swap64_S with Apple Metal / Apple Silicon - Fixed debug mode 5 by adding the missing colon between original-word and finding-rule - Fixed display problem of the "Optimizers applied" list for algorithms using OPTI_TYPE_SLOW_HASH_SIMD_INIT2 and/or OPTI_TYPE_SLOW_HASH_SIMD_LOOP2 - Fixed incompatible pointer types (salt1 and salt2 buf) in 3730 a3 kernel @@ -96,12 +104,15 @@ - Fixed keys extraction in luks2hashcat - now extracts all active keys - Fixed maximum password length in module/test_module of hash-mode 2400 - Fixed maximum password length in module/test_module of hash-mode 2410 +- Fixed memory leaks in tuning_db_init in tuningdb.c - Fixed minimum password length in module of hash-mode 28200 - Fixed minimum password length in module of hash-mode 29800 - Fixed out-of-boundary read when a fast hash defines a kernel_loops_min value higher than the amplifiers provided by the user +- Fixed stack buffer overflow in PKZIP modules (17200, 17210, 17220, 17225, 17230) - Fixed vector datatypes usage for HIP - Fix missing check for -j and -k before writing hashcat.dictstat2 which can lead to false negatives - Handle signed/unsigned PDF permission P value for all PDF hash-modes +- Improve ASN.1 check for RSA/DSA/EC/OpenSSH Private Keys modules (22911, 22921, 22931, 22941, 22951) - Prevent Hashcat from hanging by checking during startup whether the output file is a named pipe - Skip chained generated rules that exceed the maximum number of function calls @@ -110,17 +121,23 @@ ## - AMD Driver: Updated requirements for AMD Windows drivers to "AMD Adrenalin Edition" (23.7.2 or later) and "AMD HIP SDK" (23.Q3 or later) +- Alias Devices: Prevents hashcat, when started with x86_64 emulation on Apple Silicon, from showing the Apple M1 OpenCL CPU as an alias for the Apple M1 Metal GPU - Apple Driver: Automatically enable GPU support on Apple OpenCL instead of CPU support - Apple Driver: Updated requirements to use Apple OpenCL API to macOS 13.0 - use +- Backend: Updated filename chksum format to prevent invalid cache on Apple Silicon when switching arch - Backend Checks: Describe workaround in error message when detecting more than 64 backend devices - Brain: Added sanity check and corresponding error message for invalid --brain-port values -- Dependencies: Updated LZMA SDK to 22.01 +- Dependencies: Added sse2neon v1.8.0 (commit 658eeac) +- Dependencies: Updated LZMA SDK to 24.09 - Dependencies: Updated unrar source to 6.2.7 +- Dependencies: Updated xxHash to 0.8.3 (commit 50f4226) - Building: Support building windows binaries on macOS using MinGW -- Dependencies: Updated OpenCL-Headers to v2023.04.17 +- Dependencies: Updated OpenCL-Headers to v2024.10.24 (commit 265df85) - Documents: Updated BUILD.md and added BUILD_macOS.md (containing instructions for building windows binaries on macOS) - Modules: Added support for non-zero IVs for -m 6800 (Lastpass). Also added `tools/lastpass2hashcat.py` +- Modules: Updated module_unstable_warning - Open Document Format: Added support for small documents with content length < 1024 +- OpenCL Backend: added workaround to set device_available_memory from CUDA/HIP alias device - Status Code: Add specific return code for self-test fail (-11) - Scrypt: Increase buffer sizes in module for hash mode 8900 to allow longer scrypt digests - Unicode: Update UTF-8 to UTF-16 conversion to match RFC 3629 @@ -128,8 +145,10 @@ - MetaMask: update extraction tool to support MetaMask Mobile wallets - SecureCRT MasterPassphrase v2: update module, pure kernels and test unit. Add optimized kernels. - Metal Backend: added workaround to prevent 'Infinite Loop' bug when build kernels +- Metal Backend: added workaround to set the true Processor value in Metal devices on Apple Intel - Metal Backend: allow use of devices with Metal if runtime version is >= 200 - Metal Backend: disable Metal devices only if at least one OpenCL device is active +- Modules: Check UnpackSize to raise false positive with hc_decompress_rar - User Options: added --metal-compiler-runtime option - Hardware Monitor: avoid sprintf in src/ext_iokit.c - Help: show supported hash-modes only with -hh diff --git a/docs/hashcat-assimilation-bridge-development.md b/docs/hashcat-assimilation-bridge-development.md new file mode 100644 index 000000000..72794c494 --- /dev/null +++ b/docs/hashcat-assimilation-bridge-development.md @@ -0,0 +1,207 @@ +# Assimilation Bridge Plugin Development + +## Developer Section + +The following section is for plugin and bridge developers. It contains low-level implementation details. + +## Update existing plugins + +In case you have written a hashcat plugin, you need to update the init function and add the following two lines: + ++ module_ctx->module_bridge_name = MODULE_DEFAULT; ++ module_ctx->module_bridge_type = MODULE_DEFAULT; + +Existing modules on hashcat repository will be automatically updated. + +## Plugin Integration and Bridge Registration + +Plugins can opt in to bridge support by adding: + +```c +static const u64 BRIDGE_TYPE = BRIDGE_TYPE_MATCH_TUNINGS + | BRIDGE_TYPE_LAUNCH_LOOP; +static const char *BRIDGE_NAME = "scrypt_jane"; +``` + +* `BRIDGE_NAME` tells Hashcat which bridge to load (e.g., `bridge_scrypt_jane.so`). +* `BRIDGE_TYPE` indicates which backend kernel functions the bridge will override: + + * `BRIDGE_TYPE_LAUNCH_LOOP`: Entry point for all bridges that register to run after `RUN_LOOP` + * `BRIDGE_TYPE_LAUNCH_LOOP2`: Entry point for all bridges that register to run after `RUN_LOOP2` + * `BRIDGE_TYPE_REPLACE_LOOP`: Same as BRIDGE_TYPE_LAUNCH_LOOP, but deactivates `RUN_LOOP` + * `BRIDGE_TYPE_REPLACE_LOOP2`: Same as BRIDGE_TYPE_LAUNCH_LOOP2, but deactivates `RUN_LOOP2` + +Hashcat loads the bridge dynamically and uses it for any declared invocation. + +Note that bridges only load for outside kernel, aka "slow hash" kernels. In "fast hash" kernels, such as MD5, they are ignored. In case you want to implement a "fast hash" + bridge hybrid, you can move the "fast hash" code into a new "slow hash" kernel. + +Here's a high-level view on how hashcat executes several key points during a password batch: + +``` +ATTACK_EXEC_OUTSIDE_KERNEL: + COPY_AMPLIFIER_MATERIAL + RUN_AMPLIFIER + RUN_UTF16_CONVERT + RUN_INIT + COPY_HOOK_DATA_TO_HOST + CALL_HOOK12 + COPY_HOOK_DATA_TO_DEVICE + SALT_REPEATS (default 1): + RUN_PREPARE + ITER_REPEATS: + RUN_LOOP + RUN_EXTENTED + COPY_BRIDGE_MATERIAL_TO_HOST + BRIDGE_LAUNCH_LOOP + COPY_BRIDGE_MATERIAL_TO_DEVICE + COPY_HOOK_DATA_TO_HOST + CALL_HOOK23 + COPY_HOOK_DATA_TO_DEVICE + RUN_INIT2 + SALT_REPEATS (default 1): + RUN_PREPARE2 + ITER2_REPEATS: + RUN_LOOP2 + COPY_BRIDGE_MATERIAL_TO_HOST + BRIDGE_LAUNCH_LOOP2 + COPY_BRIDGE_MATERIAL_TO_DEVICE + DEEP_COMP_KERNEL: + RUN_AUX1/2/3/4 + RUN_COMP + CLEAN_HOOK_DATA +``` + +- RUN_* refers to compute kernel executions, such as "init" kernel, but also "amplifier" (typically base-word * modifier-word multiplication). +- COPY_* refers to host-to-device or device-to-host copies and typically involve PCIe data transfer. +- CALL_* are code functions executed on the host CPU. They are plugin-specific and defined in a module. They were the predecessor of bridges but are still usable. +- SALT_* typically are optional steps which allow certain algorithms specific optimizations. For instance in Scrypt with P > 1, the V and XY buffer can be reused and allow temporary storage of result values into B. This saves memory requirement, improving parallelization +- ITER_* is the main loop that chunks what typically is defined as "iterations" in a algorithm computation. For instance a PBKDF2 function is called with 10,000 iterations, which would take a while to compute. The time this takes could be longer than a GPU drivers watchdog allows (before it resets the compute engine.). Hashcat will divide the 10,000 into chunks of let's say 1,000 and call the same kernel 10 times +- BRIDGE_* existing bridge entry points. During the "lifetime" of a hash computation the tmps[] variable is used (algorithm specific, so defined in the specific plugin module and kernel). This variable is which we refer to as bridge material, but it's possible we add other types of variables to "material" in the future +- ITER2/LOOP2: Optional entry points in case the algorithm consists of two types of long running (high iterated) sub-components. For instance one iteration of 10k loops sha256 followed by 100k loops of sha512, or bcrypt followed by scrypt + + * `BRIDGE_TYPE_LAUNCH_INIT` + * `BRIDGE_TYPE_LAUNCH_COMP` + +Hashcat devs will add support on request. + +As mentioned in the BRIDGE_* entry points, it's the developer's responsibility to ensure compatibility. That typically means the handling of the `tmps` variable relevant in the `kernel_loop` and how it changes over algorithm computations lifetime. Hashcat will take care of copying the data from and to the compute backend buffers (bridge material). + +But the bridge developer must ensure data transformation compatibility. For instance, if we replace the loop section in SCRYPT (8900), the long running part is the smix() activity. But SCRYPT implements the PBKDF2 handling in both init and comp kernels, preparing the values in B[] after the init kernel, and expecting modified values in B[] before running comp kernel. If you want to replace the smix() section with let's say FPGA code, the bridge needs to understand the structure of the tmps[] variable. In this case tmps[] just reflect SCRYPT B[], making this simple, but other algorithms may require more than just one large buffer array. That means the structure itself (datatypes), but also the amount of workitems, because there's almost always more than one workitem (to reduce overhead times). + +There's some more BRIDGE PARAMETERs that you should know: + ++ BRIDGE_TYPE_MATCH_TUNINGS = Disables autotune and adjusts -n, -u and -T for the backend device according to match the bridge's dimensions ++ BRIDGE_TYPE_UPDATE_SELFTEST = updates the selftest configured in the module. Can be useful for generic hash modes such as the python plugin + +## How Bridges Work + +When Hashcat starts with a plugin that specifies a bridge, it loads the bridge and invokes its initialization function. The bridge must then discover its internal compute units, called *bridge units*. Handling the units must be implemented by the bridge developer, and typically involves loading some library, init it, and retrieve some resources available, for instances loading XRT, asking how many FPGA are available. If there's two FPGA, then the bridge unit count would be two. You also need to provide some detailed information on the unit itself, for instance the name of the device, or version or your software solution if it's not a hardware. + +Each of these bridge unit maps to one virtual backend device, which allows asynchronous and independent parallel execution, and this were virtual backend devices become relevant. Read section about virtual backend devices for a better understanding + +From the bridge_init() function you have access to the following generic parameters, set on the command line by the user: + +```c ++ " --bridge-parameter1 | Str | Sets the generic parameter 1 for a Bridge |", ++ " --bridge-parameter2 | Str | Sets the generic parameter 2 for a Bridge |", ++ " --bridge-parameter3 | Str | Sets the generic parameter 3 for a Bridge |", ++ " --bridge-parameter4 | Str | Sets the generic parameter 4 for a Bridge |", +``` + +## Virtual Backend Devices + +This feature is available also outside of bridges, eg in order to increase some workload on a compute device, but it was added in the first place to support bridges. The main problem is that it's possible that a bridge return 2 bridge units which may have different speeds (clocking), or an ideal batch size. The time it takes to compute a certain batch of passwords would be different, so there was a need for an asynchronous execution strategy. Hashcat supports mixed speed device types, but that typically mean "backend" devices. To solve the issue, we partition (virtualize) one physical backend device into multiple virtual backend devices (done internally by hashcat), and "link" each of the virtual backend device to a bridge unit. Due to this binding we can support bridge units of different speed. There's two flags a user can control in regard to virtual device backend: + +* Use `-Y` to define how many virtual backend devices to create. +* Use `-R` to bind these virtual devices to a physical backend host (new in v7). + +Note that if a bridge is used, the user's `-Y` parameter is overridden with the bridge unit count. If no bridge is used for a hash mode, then -Y can be manually specified. `-R` works in both cases. The default is device `1`, unless overridden. + +## Writing a Bridge + +### File Layout + +Bridges live in the `src/bridges/` directory and consist of a `.c` file and a `.mk` build rule: + +``` +src/bridges/bridge_scrypt_jane.c +src/bridges/bridge_scrypt_jane.mk +``` + +The target output should be named like this: `bridges/bridge_scrypt_jane.so` and `bridges/bridge_scrypt_jane.dll`. Use any of the existing `.mk` files as template. + +When hashcat starts, it finds the plugin using this pathfinder: + +``` + #if defined (_WIN) || defined (__CYGWIN__) + return snprintf (out_buf, out_size, "%s/bridges/bridge_%s.dll", folder_config->shared_dir, bridge_name); + #else + return snprintf (out_buf, out_size, "%s/bridges/bridge_%s.so", folder_config->shared_dir, bridge_name); + #endif +``` + +### Required Function Exports + +```c +bridge_ctx->platform_init = platform_init; +bridge_ctx->platform_term = platform_term; +bridge_ctx->get_unit_count = get_unit_count; +bridge_ctx->get_unit_info = get_unit_info; +bridge_ctx->get_workitem_count = get_workitem_count; +bridge_ctx->thread_init = BRIDGE_DEFAULT; +bridge_ctx->thread_term = BRIDGE_DEFAULT; +bridge_ctx->salt_prepare = salt_prepare; +bridge_ctx->salt_destroy = salt_destroy; +bridge_ctx->launch_loop = launch_loop; +bridge_ctx->launch_loop2 = BRIDGE_DEFAULT; +bridge_ctx->st_update_hash = BRIDGE_DEFAULT; +bridge_ctx->st_update_pass = BRIDGE_DEFAULT; +``` + +They are defined like this: + +```c + void *(*platform_init) (user_options_t *); + void (*platform_term) (void *); + int (*get_unit_count) (void *); + char *(*get_unit_info) (void *, const int); + int (*get_workitem_count) (void *, const int); + bool (*salt_prepare) (void *, hashconfig_t *, hashes_t *); + void (*salt_destroy) (void *, hashconfig_t *, hashes_t *); + bool (*thread_init) (void *, hc_device_param_t *, hashconfig_t *, hashes_t *); + void (*thread_term) (void *, hc_device_param_t *, hashconfig_t *, hashes_t *); + bool (*launch_loop) (void *, hc_device_param_t *, hashconfig_t *, hashes_t *, const u32, const u64); + bool (*launch_loop2) (void *, hc_device_param_t *, hashconfig_t *, hashes_t *, const u32, const u64); + const char *(*st_update_pass) (void *); + const char *(*st_update_hash) (void *); +``` + +**Note**: Use `BRIDGE_DEFAULT` when no function implementation is required. + +### Mandatory Functions + +The following functions must be defined: + +```c +CHECK_MANDATORY (bridge_ctx->platform_init); +CHECK_MANDATORY (bridge_ctx->platform_term); +CHECK_MANDATORY (bridge_ctx->get_unit_count); +CHECK_MANDATORY (bridge_ctx->get_unit_info); +CHECK_MANDATORY (bridge_ctx->get_workitem_count); +``` + +### Function Roles + +- platform_init: Called at startup. Responsible for initialization. This might include loading libraries, connecting to remote endpoints, or setting up hardware APIs. Returns a context pointer. +- platform_term: Final cleanup logic. Frees any context data allocated during initialization. +- get_unit_count: Returns the number of available units. For example, return `2` if two FPGAs are detected. +- get_unit_info: Returns a human-readable description of a unit, like "Python v3.13.3". +- get_workitem_count: Returns the number of password candidates to process per invocation. +- thread_init: Optional. Use for per-thread setup, such as creating a new Python interpreter. +- thread_term: Optional. Use for per-thread cleanup. +- salt_prepare: Called once per salt. Useful for preprocessing or storing large salt/esalt buffers. +- salt_destroy: Optional cleanup routine for any salt-specific memory. +- launch_loop: Main compute function. Replaces the traditional `_loop` kernel. +- launch_loop2: Secondary compute function. Replaces `_loop2` if needed. +- st_update_hash: Optionally override the module's default self-test hash. +- st_update_pass: Optionally override the module's default self-test password. diff --git a/docs/hashcat-assimilation-bridge.md b/docs/hashcat-assimilation-bridge.md new file mode 100644 index 000000000..f1606f405 --- /dev/null +++ b/docs/hashcat-assimilation-bridge.md @@ -0,0 +1,73 @@ +# Assimilation Bridge in Hashcat v7 + +## Overview + +Hashcat has historically optimized password cracking GPU and CPU compute backends. However, other types of hardware compute systems or pure software solutions were not supported. The Assimilation Bridge is a feature introduced in Hashcat v7 that extends the compute pipeline beyond traditional backends. It enables the integration of additional compute resources and software solutions such as FPGAs, remote TPMs, CPU reference implementations, or embedded runtimes into new or existing hash mode plugins. + +All existing hash-mode plugins continue to function as before. Bridges are optional and only active when explicitly declared within a plugin's configuration. This ensures full backward compatibility with existing setups. + +## Use Cases + +### Embedded Language Runtimes + +Hashcat v7 introduces support for an embedded Python interpreter as its premier demonstration example: + +- Hash modes `-m 72000` and `-m 73000` use embedded Python; start with `-m 73000`. +- These demonstrate a "generic hash" model, enabling full hash mode creation in Python. +- Users don’t need to recompile when making changes. +- Python’s crypto ecosystem helps developers or AI generate new hash mode code easily and efficiently. +- Here's a sample how a user can add `yescrypt` (`$y$...`) support with just one line of code: + +```python +from pyescrypt import Yescrypt,Mode + +def calc_hash(password: bytes, salt: dict) -> str: + return Yescrypt(n=4096, r=32, p=1, mode=Mode.MCF).digest(password=password, settings=hcshared.get_salt_buf(salt)).decode('utf8') +``` + +This is just a preview. See `docs/hashcat-python-plugin-quickstart.md` for details about hashing formats, self-test pairs, or when to use `-m 72000` vs. `-m 73000`. + +### Hybrid Architecture + +Note that in the Python example, only CPU resources are used and Hashcat does not transform Python into GPU code. However, the Bridge supports hybrid setups, where part of the workload runs on a traditional backend and another part on the Bridge. This model allows performance-critical components to be handled by the most suitable type of compute unit. + +For example, in hash mode `-m 70100`, a demonstration of SCRYPT, the PBKDF2 stage runs on a GPU using OpenCL/CUDA/HIP/Metal, while the memory-intensive `smix()` runs on the CPU through a bridge using the scrypt-jane implementation. This could just as easily be offloaded to an FPGA instead, which would benefit from reduced code complexity and increased parallelization boosting performance significantly. + +A mix of traditional backend compute on GPU and embedded Python is also possible. + +### CPU-Based Reference Code + +Bridges can also be used to quickly integrate reference implementations of new algorithms. We will provide initial examples for Argon2 and SCRYPT. These can run entirely on CPU or form part of a hybrid setup. + +- Mode `-m 70000` uses the official Argon2 implementation from the Password Hashing Competition (PHC). +- Mode `-m 70200` demonstrates Yescrypt in its scrypt-emulation mode and benefits from AVX512 acceleration on capable CPUs. + +### Secure Distributed Cracking + +In scenarios where raw password data must remain local, bridges can enable remote processing of depersonalized intermediate keys. This allows secure password cracking using external compute infrastructure without compromising sensitive input. + +A working proof-of-concept exists, but it's not yet confirmed for inclusion in the v7 release. + +## Other Ideas for Use Cases (Not Yet Implemented) + +### Remote Hardware + +A bridge could be built to interact with TPMs on mobile devices or laptops, accessed through networked agents. This enables secure challenge/response flows with hardware-backed key storage. + +### Project Interoperability + +Depending on interface compatibility, code from other password cracking tools (e.g., JtR) could be wrapped in bridges, allowing functionality reuse and deeper collaboration. + +## Limitations and Status + +- Bridges are optional and configured on a per-plugin basis. +- Hashcat v7 includes working bridges for CPU and Python. +- FPGA support has been verified internally but is excluded from this release due to licensing issues. + +> **Call to FPGA Developers**: Contribute an open FPGA implementation and bitstream and the Hashcat Developer Team will support in integrating it into a bridge. Please contact us on Discord. + +## Conclusion + +The Assimilation Bridge introduces a highly extensible mechanism to integrate custom compute resources and logic into Hashcat. + +For hands-on examples and developer guidance, refer to the accompanying documentation in `docs/hashcat-assimiliation-bridge-development.md` (first draft). diff --git a/docs/hashcat-python-plugin-development-guide.md b/docs/hashcat-python-plugin-development-guide.md new file mode 100644 index 000000000..308b6d918 --- /dev/null +++ b/docs/hashcat-python-plugin-development-guide.md @@ -0,0 +1,258 @@ +# Hashcat Python Plugin Development Guide + +This document is a comprehensive guide for writing custom hash modes in Python via Hashcat's Assimilation Bridge plugin. + +## 1. Introduction + +The Assimilation Bridge enables developers to implement complete hash mode logic in languages other than C, most notably Python. Traditionally, customizing Hashcat required writing a module in C and a kernel in OpenCL/CUDA. With the bridge, you can now implement a complete hash mode in Python. + +The bridge supports two hash modes to run python code: + +- `-m 72000`: Uses single-threaded Python interpreter and hashcat controlling the multi-threading. +- `-m 73000`: Uses classic multiprocessing module controlling multi-threaded support. + +Having two hash modes is currently a workaround; future Python developments toward a fully GIL-free mode should eventually resolve this. The single-threaded Python route is the way to go, and when Python will be totally GIL-free, we will remove the multiprocessing support completely. For now, we must work around platform-specific behavior (see `hashcat-python-plugin-requirements.md`). + +## 2. Requirements + +Ideally, start by walking through `hashcat-python-plugin-quickstart.md`, or read `hashcat-python-plugin-requirements.md`. + +## 3. Python Bridge basics + +Hashcat implements the CPython interface, loading the embedded interpreter via dynamic loading mechanisms (`dlopen()`, `LoadLibrary()`, etc). This enables runtime flexibility, allowing Hashcat to use whatever Python version is installed on the system. Users of the precompiled Hashcat binaries don’t need Python headers and just a working Python interpreter. Compatibility is checked at runtime, not compile time. If hashcat detect an invalid python version it will stop and print informative instructions on what to do next. + +In general, when using any assimilation bridge "application" (such as the Python bridge), the hash mode determines which bridge plugin is loaded (this is a 1:1 relationship). From there, the bridge decides how to proceed. In the case of the Python bridge, it loads the Python library, sets up the interpreter, and finally selects which Python script to execute. Understanding this flow is essential, especially if you plan to contribute to upstream Hashcat on GitHub or want to register a dedicated hash mode number. + +You can decide to use the generic hash mode and only contribute the .py file itself with your implementation, or you copy the bridge code and hardcode the path to you .py implementation in there. The advantage in the generic mode is that it's super simple, but it will run a little slower and you have less control about workload tuning. Also having a dedicated mode allows you to implement a unit test, because you have a dedicated hash mode that you can refer to. + +Hashcat includes a top-level `Python/` directory with standard helpers and bridge modules: + +The following three files are relevant regardless of whether you plan to create a generic or a dedicated hash mode. These modules do the heavy lifting to interact with Hashcat internals from Python. Basically you should not need to change them, and instead you import them from your implementation: + +```text +- hcsp.py: Helper for single-threaded mode. Manages queue handling, function invocation, and context propagation. +- hcmp.py: Extends `hcsp.py` to support multiprocessing. It spawns worker processes and routes password batches via queues. +- hcshared.py: Shared utility functions between SP and MP, for instance some getter function for salt data retrieval. +``` + +There are two additional files, and they are mainly relevant in case you plan to make use of the generic hash mode. But even if you plan to make a dedicated hash mode have a look into them, most likely they will be a very good template for your non-generic mode + +```text +- generic_hash_mp.py +- generic_hash_sp.py +``` + +We will discuss these two in more detail in the `generic hash mode` section. + +## 4. Required Functions in a Python Module + +Both `-m 72000` and `-m 73000` follow the same requirements, with the idea that your python code will run in both hash-modes, whatever your user decides to use. + +The requirements are to implement the following three functions: + +```python +def init(ctx): +def term(ctx): +def kernel_loop(ctx, passwords, salt_id, is_selftest): +``` + +- `init(ctx)`: Called once during plugin startup. All salts and esalts are copied at this stage. You use it to wire up callbacks to helper modules. +- `term(ctx)`: Called once at shutdown. Use it to clean up resources like file handles or sockets if you use them. +- `kernel_loop(...)`: Main function for processing password batches. This is called many times during cracking. + +A typical `init()` might look like this: + +```python +def init(ctx): + hcsp.init(ctx, calc_hash, extract_esalts) +``` + +Here: +- `calc_hash()` is your main implementation that processes one password (with one specific salt). You return the result in the format that hashcat requires. In generic hash mode that would be just the same format as in your hashlist. Instead, if you write your own decoder and encoder in the module, this can also be in binary for better performance. +- `extract_esalts()` is an optional function to deserialize binary esalt blobs. Depends on your hash, if esalts (such as binary blobs for decryption) are required. +- `hcsp.init()` stores these so that `handle_queue()` (described later) can call `calc_hash()` for each password in a batch. + +Note the the ctx will hold your salt data from all hashes. Whenever calc_hash() is called, this context is given. If you have multiple hashes with multiple salts, the context will have all of them. The helper module hcsp.init() will deserialize the static salt and the dynamic salt and store the data in your context. + +A typical `term()` might look like this: + +```python +def term(ctx): + hcsp.term(ctx) +``` + +This should be used in case you had open files, open networking connection, or similar. We are good citizens! + +Here's our main function `kernel_loop()` where we spend almost all our time: + +```python +def kernel_loop(ctx,passwords,salt_id,is_selftest): + return hcsp.handle_queue(ctx,passwords,salt_id,is_selftest) +``` + +Hashcat optimizes performance by sending password candidates in batches. The `passwords` parameter in `kernel_loop()` is a list. Instead of manually looping over them, the helper module will queue them, and call your callback function which you had specified in the `init()` function before. The idea is that whenever your calc_hash() is called, it will always be only about one password and one salt (and optional some binary blobs), and you do not have to deal with queuing, whether it is threaded or not. + +Of course, you can also fully control this yourself: + +```python +def calc_hash(ctx, password, salt_id, is_selftest): + # Your custom logic here + return encoded_guess +``` + +If you want to control all by youself, here's what's important to know: + +- salt_id: Basically a index number which tells you about which salt your calculation is about. When you initially receive the context, it will hold all salts at once, and you need to store them in the context. The helper scripts do that for your, but just for you to know, its the salt_id which tells the handle_queue() which salt data to pick before it calls your hash_calc() function. +- is_selftest: Historically hashcat keeps two parallel structures for the selftest hash and real hash. As such they arrive in the context buffer, and you need to make a decision on that `is_selftest` flag which salt buffer to pick. + +## 5. Esalts and Structured Binary Blobs, and fixed Salts + +One of the most confusing parts for developers new to hashcat is salt handling. While simple hash modes may work out-of-the-box with default helpers, dealing with salts in real-world formats requires deeper understanding. + +For complex formats, you may need a structured binary blob ("esalt") passed from the C plugin to Python. Since only you as the developer know the structures of your hash mode, structures vary. For that reason you can optionally write Python code to unpack it. + +### Some C Structure + +Let's say you need to transfer a salt value to python. You can specify an exact structure in the module to do so. Or, as in this example, this is how we had designed a generic hash mode: + +```c +typedef struct { + u32 hash_buf[16384]; + u32 hash_len; + u32 salt_buf[16384]; + u32 salt_len; +} generic_io_t; +``` + +### Unpacking esalts + +To access the data, we typically want to unpack it so it's easier to access from python: + +```python +def extract_esalts(esalts_buf): + esalts = [] + for hash_buf, hash_len, salt_buf, salt_len in struct.iter_unpack("65536s I 65536s I", esalts_buf): + hash_buf = hash_buf[0:hash_len] + salt_buf = salt_buf[0:salt_len] + esalts.append({ "hash_buf": hash_buf, "salt_buf": salt_buf }) + return esalts +``` + +Remember, the extract_esalts() was given as function pointer to hcsp.init(). That's how the helper can include your code from outside the helper code. The esalt format is based on what is defined in the module struct. + +### Salts Appear as Binary Blobs using 32 bit datatypes + +Hashcat is optimized for performance, especially on GPUs. To improve performance, it mostly works on 32 bit datatypes instead of 8 bit datatypes. In python the helper scripts convert these binary blobs into byte[] objects that are easier to work with. As you can see from the above example: `16384 * 4 = 65536` + +### Fixed salt datatypes + +In general, in all hashcat hash modes: + +- The `salt_t` structure is **fixed and consistent**. +- The esalt (extra salt) is **custom and plugin-specific**. + +Since `salt_t` is a fixed structure, the helper mode come with a salt unpacker code and in addition, it provides getter functions: + +```python +def get_salt_buf(salt: dict) -> bytes: +def get_salt_buf_pc(salt: dict) -> bytes: +def get_salt_iter(salt: dict) -> int: +def get_salt_iter2(salt: dict) -> int: +def get_salt_sign(salt: dict) -> bytes: +def get_salt_repeats(salt: dict) -> int: +def get_orig_pos(salt: dict) -> int: +def get_digests_cnt(salt: dict) -> int: +def get_digests_done(salt: dict) -> int: +def get_digests_offset(salt: dict) -> int: +def get_scrypt_N(salt: dict) -> int: +def get_scrypt_r(salt: dict) -> int: +``` + +These go back to the `salt_t` fixed structure you can find in `OpenCL/inc_types.h`. As an example on how to use these, here's a snippet from the `yescrypt`: + +```python +settings=hcshared.get_salt_buf(salt) +``` + +The `salt` variable is one of the parameters from the calc_hash(): + +```python +def calc_hash(password: bytes, salt: dict) -> str: +``` + +Note that if you fully exhaust the Hashcat keyspace, your function has been called X times Y.. X is the number of candidates, and Y is all the salts (except if a salt has been cracked). What's important to realize that within your function, you implement hashing logic only for precisely that situation where you have one password and one salt. + + +### Merging Salts and Esalts into a Single Object + +Finally, after unpacking both salts and esalts from their binary blob form, they are explicitly combined into a single dictionary object to simplify access: + +```python +for salt, esalt in zip(salts, esalts): + salt["esalt"] = esalt +``` + +Initially, salts and esalts are unpacked separately from their respective binary structures. Each salt entry contains standardized fields defined by the fixed `salt_t` structure and each esalt is dynamically structured and plugin-specific. Merging the esalt dictionary into the salt dictionary makes accessing all related data straightforward and intuitive within Python. + +## 6. Python generic hash mode `-m 72000` and `-m 73000` + +The "generic hash" support in hashcat is using python. The main idea behind "generic" is to write freely. Ideal for rapid prototyping and achieving your goal. + +The most straight-forward way is to edit the following files directly: + +- `generic_hash_sp.py` for single-threaded (SP), typically when the user is using `-m 72000`. +- `generic_hash_mp.py` for multiprocessing (MP), typically when the user is using `-m 73000`. + +Notes: + +- Even though `-m 72000` uses single-threaded Python, the bridge plugin above it manages multiple Python interpreters (one per thread) making it effectively multi-threaded. +- On Windows/macOS, if `-m 73000` is selected, it silently falls back to `generic_hash_sp.py` due to limitations with multiprocessing. This behavior is important to understand and you might otherwise wonder why your code changes have no effect. + +If you modify one of these plugin files, there's a trade-off: you won’t be able to contribute that code directly to the upstream Hashcat repository, since those files are meant to remain clean for demonstration purposes. + +To address this, the assimilation bridge provides a generic parameter that users can specify via the command line. In the case of the Python bridge, only the first parameter is used. You can override the Python script to be loaded using `--bridge-parameter1`: + +``` +$ ./hashcat -m 73000 --bridge-parameter1 myimplementation.py hash.txt wordlist.txt ... +``` + +This tells the Python bridge plugin to load `myimplementation.py` instead of the default `generic_hash_mp.py`. This approach is especially useful if you plan to contribute `myimplementation.py` to the upstream Hashcat repository. If you choose to stay within the generic mode, your Python code won’t have a dedicated hash mode, and you'll need to instruct users to use the `--bridge-parameter1` flag to load your implementation. + +### Design Tradeoffs and Format Considerations + +In the generic hash mode, we are using a generic binary esalt to avoid writing complex C encode/decode logic. However, guesses returned from Python must match the **original encoded format** exactly. This can be inefficient if encoding is complex. The hash lines are intentionally not decoded and re-encoded in a structured way. Instead, a simple trick such as appending the salt after an asterisk (`*`) is used: + +``` +hash-with-embedded-salt*salt +``` + +This technique makes each hash appear unique, especially when multiple salts are involved, and simplifies initial parsing and processing. + +However, it is crucial to highlight: + +- You are **not obligated to follow this generic approach**. In fact, it's generally preferable to implement proper hash line decoding and encoding logic. +- For instance, a proper Yescrypt implementation (unlike the quickstart document) would ideally decode hash lines into clear, separate components (digest, salt, parameters) and encode them accordingly upon successful cracking. + +The reason the generic hash mode provided by Hashcat employs a simplified approach is to: + +- Demonstrate a flexible, format-agnostic solution suitable for initial prototyping or unfamiliar hash formats. +- Avoid complexity and make it easy for plugin developers to get started quickly without deep understanding of specific hash format parsing logic. + +In summary, while the generic mode is quick and easy, robust real-world plugins **should implement proper hash decoding and encoding logic** to ensure accuracy, efficiency, and maintainability. + +## 7. Debugging Without Hashcat + +You can run your plugin as a standalone script: + +``` +python3 generic_hash.py +``` + +It reads passwords from stdin and prints the result of `calc_hash()`: + +``` +echo "password" | python3 generic_hash_mp.py +``` + +Note that you probably want to inline the correct salt value, see the `main` section in the code. TBD: Add some sample + diff --git a/docs/hashcat-python-plugin-quickstart.md b/docs/hashcat-python-plugin-quickstart.md new file mode 100644 index 000000000..760607cd7 --- /dev/null +++ b/docs/hashcat-python-plugin-quickstart.md @@ -0,0 +1,87 @@ +# Hashcat Python Plugin Quickstart + +## Introduction + +Hashcat v7 introduces a `Python plugin bridge` that allows you to write and integrate custom hash-matching algorithms directly in Python. This plugin system fits into the regular cracking workflow by replacing or extending internal kernel routines. + +When enabled, Hashcat uses the plugin’s `calc_hash()` function to compute hash candidates for verification, making it easy to experiment with new or obscure algorithms without modifying core C code or writing OpenCL/CUDA kernels. + +This guide demonstrates how to quickly customize such an algorithm using pure Python. Whether you're prototyping a new hash mode, supporting a proprietary format, or simply prefer high-level development, Python plugins make the process fast and straightforward. + +No C required. No recompilation. Just write your logic in Python using `calc_hash()`, and you're ready to crack. + +You can use any Python modules you like. + +## Quick Start + +A benchmark is a good way to verify that your setup is working correctly. + +Hashcat mode `73000` is preconfigured to load a generic Python plugin from the source file `Python/generic_hash_mp.py`: + +``` +hashcat -m 73000 -b +``` + +If you encounter issues with your Python installation, refer to `hashcat-python-plugin-requirements.md`. + +To learn how to modify the plugin source, see `hashcat-python-plugin-development-guide.md`. + +## Yescrypt in One Line + +### Generate a Yescrypt Test Hash + +``` +echo password | mkpasswd -s -m yescrypt +``` + +Example output: + +``` +$y$j9T$uxVFACnNnGBakt9MLrpFf0$SmbSZAge5oa1BfHPBxYGq3mITgHeO/iG2Mdfgo93UN0 +``` + +### Prepare the Hash Line for Hashcat + +``` +$y$j9T$uxVFACnNnGBakt9MLrpFf0$SmbSZAge5oa1BfHPBxYGq3mITgHeO/iG2Mdfgo93UN0*$y$j9T$uxVFACnNnGBakt9MLrpFf0$ +``` + +(Use the full hash before the `*` and the salt portion after the `*`.) + +Hashcat modes `73000` and `72000` are generic modes that do not parse the hash, which can lead to redundancy. + +Refer to `hashcat-python-plugin-development-guide.md` to learn how to develop plugins for the generic hash mode. + +### Plugin Code + +Install the required module: + +``` +pip install pyescrypt +``` + +Then in your plugin (either `generic_hash_mp.py` for `-m 73000` or `generic_hash_sp.py` for `-m 72000`): + +**Note for Windows and MacOS users:** Mode `73000` automatically switches to `generic_hash_sp.py`, so be sure to edit that file. + +```python +from pyescrypt import Yescrypt, Mode + +# Self-test pair +ST_HASH = "$y$j9T$uxVFACnNnGBakt9MLrpFf0$SmbSZAge5oa1BfHPBxYGq3mITgHeO/iG2Mdfgo93UN0*$y$j9T$uxVFACnNnGBakt9MLrpFf0$" +ST_PASS = "password" + +def calc_hash(password: bytes, salt: dict) -> str: + return Yescrypt(n=4096, r=32, p=1, mode=Mode.MCF).digest( + password=password, + settings=hcshared.get_salt_buf(salt) + ).decode("utf-8") +``` + +That’s it. + +### Run Regularly + +``` +hashcat -m 73000 yescrypt.hash wordlist.txt +``` diff --git a/docs/hashcat-python-plugin-requirements.md b/docs/hashcat-python-plugin-requirements.md new file mode 100644 index 000000000..41564afbd --- /dev/null +++ b/docs/hashcat-python-plugin-requirements.md @@ -0,0 +1,51 @@ +# Hashcat Python Plugin Requirements + +## Windows/macOS and Linux + +There are significant differences between Windows/macOS and Linux when embedding Python as done here. + +### On Windows/macOS + +The `multiprocessing` module is not fully supported in this embedded environment, so only a single process can run effectively. In contrast, even though `threading` module does work correctly on Windows/macOS for starting threads and enabling parallelism, most cryptographic functions like `sha256()` block the Global Interpreter Lock (GIL). Since we often run CPU-intensive algorithms (e.g., 10,000 iterations of `sha256()`), this monopolizes the GIL, making the program effectively single-threaded. To achieve true multithreading on Windows/macOS, we need to move to a free-threaded Python runtime. + +**On Windows**: Use the official installer from https://www.python.org/downloads/windows/ and ensure you check the "Install free-threaded" option - it's disabled by default. Do not use python from Microsoft Store it's too old. + +**On macOS**: Use `pyenv`. It's the easiest way to install and manage Python versions, see below section + +### On Linux + +The `multiprocessing` module functions correctly, allowing full CPU utilization through parallel worker processes. However, since threading is managed by Python, it relies on `fork()` and inter-process communication (IPC). This adds complexity and code bloat to Hashcat, effectively duplicating modules and bridge plugins, making the codebase harder to understand for those exploring how it all works. We could switch to a free-threaded Python runtime, but it's still unstable at the time of writing even on Linux (see the `cffi` problem below). For now, we’ve chosen to use the `multiprocessing` module as a more practical solution. + +**On Linux**: Use `pyenv`. It's the easiest way to install and manage Python versions, see below section + +### Free-threaded Python (3.13+) + +In order to have multithreading on Windows/macOS, we were looking into Python 3.13 which introduces optional GIL-free support. This allows multithreading to work even in embedded Python. However, it has a major downside. Most relevant modules such as `cffi` still lacks support for running with the Python free-threaded ABI. But if your hash-mode does not rely on modules with `cffi` you should be fine using `-m 72000` no matter the OS. + +At the time of writing, several Linux distributions, including Ubuntu 24.04, do not ship with Python 3.13 because it was released after the distro’s feature freeze. You will likely need to install it manually, which is one of the reason we are refering to use `pyenv`. + +### Real-world best practice + +For now, multiprocessing (-m 73000) supports most modules and is generally better for real-world workloads, but it works only on Linux. Developers on Windows/macOS may use `-m 72000` for development, except if `cffi` modules are requested and in this case switch back to `-m 73000`. Then use Linux (or WSL2 on Windows) for long running tasks. + +### Pyenv + +Pyenv is great for managing local python versions, and also frees us from using virtual environments while at the same time to not break global system installs when using `pip` to install new modules. + +Check out https://github.com/pyenv/pyenv in order how to install `pyenv`. + +After install, if you are fine with `-m 73000` + +``` +pyenv install 3.13 +pyenv local 3.13 +``` + +In order to use `-m 72000` + +``` +pyenv install 3.13t +pyenv local 3.13t +``` + +Note that unlike on Windows, there is no combined Python 3.13 + 3.13t version. This can be a bit confusing. If you plan to use `-m 72000`, you must switch your pyenv to Python `3.13t` beforehand. Similarly, you need to switch back to Python `3.13` before using `-m 73000`. diff --git a/docs/license_libs/SSE2NEON_LICENSE.txt b/docs/license_libs/SSE2NEON_LICENSE.txt new file mode 100644 index 000000000..edc36de51 --- /dev/null +++ b/docs/license_libs/SSE2NEON_LICENSE.txt @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2015-2025 SSE2NEON Contributors + +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. diff --git a/docs/readme.txt b/docs/readme.txt index b00f21628..52157d817 100644 --- a/docs/readme.txt +++ b/docs/readme.txt @@ -326,6 +326,7 @@ NVIDIA GPUs require "NVIDIA Driver" (440.64 or later) and "CUDA Toolkit" (9.0 or - LUKS v1 - VeraCrypt - BestCrypt v3 Volume Encryption +- BestCrypt v4 Volume Encryption - FileVault 2 - VirtualBox (PBKDF2-HMAC-SHA256 & AES-128-XTS) - VirtualBox (PBKDF2-HMAC-SHA256 & AES-256-XTS) @@ -481,6 +482,10 @@ NVIDIA GPUs require "NVIDIA Driver" (440.64 or later) and "CUDA Toolkit" (9.0 or - ENCsecurity Datavault (MD5/no keychain) - ENCsecurity Datavault (MD5/keychain) - SecureCRT MasterPassphrase v2 +- RC4 40-bit DropN +- RC4 72-bit DropN +- RC4 104-bit DropN +- Microsoft Online Account (PBKDF2-HMAC-SHA256 + AES256) ## ## Attack-Modes diff --git a/extra/tab_completion/hashcat.sh b/extra/tab_completion/hashcat.sh index f823cda72..f1d01e0f5 100755 --- a/extra/tab_completion/hashcat.sh +++ b/extra/tab_completion/hashcat.sh @@ -425,9 +425,9 @@ _hashcat () local HIDDEN_FILES_AGGRESSIVE="${HIDDEN_FILES}|hcmask|hcchr" local BUILD_IN_CHARSETS='?l ?u ?d ?a ?b ?s ?h ?H' - local SHORT_OPTS="-m -a -V -h -b -t -T -o -p -c -d -D -w -n -u -j -k -r -g -1 -2 -3 -4 -i -I -s -l -O -S -z -M -Y" - local LONG_OPTS="--hash-type --attack-mode --version --help --quiet --benchmark --benchmark-all --hex-salt --hex-wordlist --hex-charset --force --status --status-json --status-timer --stdin-timeout-abort --machine-readable --loopback --markov-hcstat2 --markov-disable --markov-inverse --markov-classic --markov-threshold --runtime --session --speed-only --progress-only --restore --restore-file-path --restore-disable --outfile --outfile-format --outfile-autohex-disable --outfile-json --outfile-check-timer --outfile-check-dir --wordlist-autohex-disable --separator --show --deprecated-check-disable --left --username --dynamic-x --remove --remove-timer --potfile-disable --potfile-path --debug-mode --debug-file --induction-dir --segment-size --bitmap-min --bitmap-max --cpu-affinity --example-hashes --hash-info --backend-ignore-cuda --backend-ignore-opencl --backend-ignore-hip --backend-ignore-metal --backend-info --backend-devices --backend-devices-virtual --opencl-device-types --backend-vector-width --workload-profile --kernel-accel --kernel-loops --kernel-threads --spin-damp --hwmon-disable --hwmon-temp-abort --skip --limit --keyspace --rule-left --rule-right --rules-file --generate-rules --generate-rules-func-min --generate-rules-func-max --generate-rules-func-sel --generate-rules-seed --custom-charset1 --custom-charset2 --custom-charset3 --custom-charset4 --hook-threads --increment --increment-min --increment-max --logfile-disable --scrypt-tmto --keyboard-layout-mapping --truecrypt-keyfiles --veracrypt-keyfiles --veracrypt-pim-start --veracrypt-pim-stop --stdout --keep-guessing --hccapx-message-pair --nonce-error-corrections --encoding-from --encoding-to --optimized-kernel-enable --multiply-accel-disable --self-test-disable --slow-candidates --brain-server --brain-server-timer --brain-client --brain-client-features --brain-host --brain-port --brain-session --brain-session-whitelist --brain-password --identify" - local OPTIONS="-m -a -t -o -p -c -d -w -n -u -j -k -r -g -1 -2 -3 -4 -s -l --hash-type --attack-mode --status-timer --stdin-timeout-abort --markov-hcstat2 --markov-threshold --runtime --session --outfile --outfile-format --outfile-check-timer --outfile-check-dir --separator --remove-timer --potfile-path --restore-file-path --debug-mode --debug-file --induction-dir --segment-size --bitmap-min --bitmap-max --cpu-affinity --backend-devices --backend-devices-virtual --opencl-device-types --backend-vector-width --workload-profile --kernel-accel --kernel-loops --kernel-threads --spin-damp --hwmon-temp-abort --skip --limit --rule-left --rule-right --rules-file --generate-rules --generate-rules-func-min --generate-rules-func-max --generate-rules-func-sel --generate-rules-seed --custom-charset1 --custom-charset2 --custom-charset3 --custom-charset4 --hook-threads --increment-min --increment-max --scrypt-tmto --keyboard-layout-mapping --truecrypt-keyfiles --veracrypt-keyfiles --veracrypt-pim-start --veracrypt-pim-stop --hccapx-message-pair --nonce-error-corrections --encoding-from --encoding-to --brain-server-timer --brain-client-features --brain-host --brain-password --brain-port --brain-session --brain-session-whitelist" + local SHORT_OPTS="-m -a -V -h -b -t -T -o -p -c -d -D -w -n -u -j -k -r -g -1 -2 -3 -4 -i -I -s -l -O -S -z -M -Y -R" + local LONG_OPTS="--hash-type --attack-mode --version --help --quiet --benchmark --benchmark-all --hex-salt --hex-wordlist --hex-charset --force --status --status-json --status-timer --stdin-timeout-abort --machine-readable --loopback --markov-hcstat2 --markov-disable --markov-inverse --markov-classic --markov-threshold --runtime --session --speed-only --progress-only --restore --restore-file-path --restore-disable --outfile --outfile-format --outfile-autohex-disable --outfile-json --outfile-check-timer --outfile-check-dir --wordlist-autohex-disable --separator --show --deprecated-check-disable --left --username --dynamic-x --remove --remove-timer --potfile-disable --potfile-path --debug-mode --debug-file --induction-dir --segment-size --bitmap-min --bitmap-max --cpu-affinity --example-hashes --hash-info --backend-ignore-cuda --backend-ignore-opencl --backend-ignore-hip --backend-ignore-metal --backend-info --backend-devices --backend-devices-virtmulti --backend-devices-virthost --backend-devices-keepfree --opencl-device-types --backend-vector-width --workload-profile --kernel-accel --kernel-loops --kernel-threads --spin-damp --hwmon-disable --hwmon-temp-abort --skip --limit --keyspace --rule-left --rule-right --rules-file --generate-rules --generate-rules-func-min --generate-rules-func-max --generate-rules-func-sel --generate-rules-seed --custom-charset1 --custom-charset2 --custom-charset3 --custom-charset4 --hook-threads --increment --increment-min --increment-max --logfile-disable --scrypt-tmto --keyboard-layout-mapping --truecrypt-keyfiles --veracrypt-keyfiles --veracrypt-pim-start --veracrypt-pim-stop --stdout --keep-guessing --hccapx-message-pair --nonce-error-corrections --encoding-from --encoding-to --optimized-kernel-enable --multiply-accel-disable --self-test-disable --slow-candidates --brain-server --brain-server-timer --brain-client --brain-client-features --brain-host --brain-port --brain-session --brain-session-whitelist --brain-password --identify --bridge-parameter1 --bridge-parameter2 --bridge-parameter3 --bridge-parameter4" + local OPTIONS="-m -a -t -o -p -c -d -w -n -u -j -k -r -g -1 -2 -3 -4 -s -l --hash-type --attack-mode --status-timer --stdin-timeout-abort --markov-hcstat2 --markov-threshold --runtime --session --outfile --outfile-format --outfile-check-timer --outfile-check-dir --separator --remove-timer --potfile-path --restore-file-path --debug-mode --debug-file --induction-dir --segment-size --bitmap-min --bitmap-max --cpu-affinity --backend-devices --backend-devices-virtmulti --backend-devices-virthost --backend-devices-keepfree --opencl-device-types --backend-vector-width --workload-profile --kernel-accel --kernel-loops --kernel-threads --spin-damp --hwmon-temp-abort --skip --limit --rule-left --rule-right --rules-file --generate-rules --generate-rules-func-min --generate-rules-func-max --generate-rules-func-sel --generate-rules-seed --custom-charset1 --custom-charset2 --custom-charset3 --custom-charset4 --hook-threads --increment-min --increment-max --scrypt-tmto --keyboard-layout-mapping --truecrypt-keyfiles --veracrypt-keyfiles --veracrypt-pim-start --veracrypt-pim-stop --hccapx-message-pair --nonce-error-corrections --encoding-from --encoding-to --brain-server-timer --brain-client-features --brain-host --brain-password --brain-port --brain-session --brain-session-whitelist --bridge-parameter1 --bridge-parameter2 --bridge-parameter3 --bridge-parameter4" COMPREPLY=() local cur="${COMP_WORDS[COMP_CWORD]}" diff --git a/include/autotune.h b/include/autotune.h index 09d297d04..d919b02ba 100644 --- a/include/autotune.h +++ b/include/autotune.h @@ -6,6 +6,8 @@ #ifndef HC_AUTOTUNE_H #define HC_AUTOTUNE_H +int find_tuning_function (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param); + HC_API_CALL void *thread_autotune (void *p); #endif // HC_AUTOTUNE_H diff --git a/include/backend.h b/include/backend.h index ce1e9cfe4..339fd6bf9 100644 --- a/include/backend.h +++ b/include/backend.h @@ -22,6 +22,7 @@ static const char CL_VENDOR_INTEL_SDK[] = "Intel(R) Corporation"; static const char CL_VENDOR_MESA[] = "Mesa"; static const char CL_VENDOR_NV[] = "NVIDIA Corporation"; static const char CL_VENDOR_POCL[] = "The pocl project"; +static const char CL_VENDOR_MICROSOFT[] = "Microsoft"; int backend_ctx_init (hashcat_ctx_t *hashcat_ctx); void backend_ctx_destroy (hashcat_ctx_t *hashcat_ctx); @@ -39,8 +40,6 @@ int backend_session_update_combinator (hashcat_ctx_t *hashcat_ctx); int backend_session_update_mp (hashcat_ctx_t *hashcat_ctx); int backend_session_update_mp_rl (hashcat_ctx_t *hashcat_ctx, const u32 css_cnt_l, const u32 css_cnt_r); -u32 backend_device_idx_real_from_virtual (const u32 device_idx, const u32 backend_devices_virtual); - void generate_source_kernel_filename (const bool slow_candidates, const u32 attack_exec, const u32 attack_kern, const u32 kern_type, const u32 opti_type, char *shared_dir, char *source_file); void generate_cached_kernel_filename (const bool slow_candidates, const u32 attack_exec, const u32 attack_kern, const u32 kern_type, const u32 opti_type, char *cache_dir, const char *device_name_chksum, char *cached_file, bool is_metal); void generate_source_kernel_shared_filename (char *shared_dir, char *source_file); @@ -57,7 +56,7 @@ int gidd_to_pw_t (hashcat_ctx_t *hashcat_ctx, hc_devi int copy_pws_idx (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param, u64 gidd, const u64 cnt, pw_idx_t *dest); int copy_pws_comp (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param, u32 off, u32 cnt, u32 *dest); -int choose_kernel (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param, const u32 highest_pw_len, const u64 pws_pos, const u64 pws_cnt, const u32 fast_iteration, const u32 salt_pos); +int choose_kernel (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param, const u32 highest_pw_len, const u64 pws_pos, const u64 pws_cnt, const u32 fast_iteration, const u32 salt_pos, const bool is_autotune); int run_cuda_kernel_atinit (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param, CUdeviceptr buf, const u64 num); int run_cuda_kernel_utf8toutf16le (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param, CUdeviceptr buf, const u64 num); @@ -85,7 +84,7 @@ int run_opencl_kernel_memset (hashcat_ctx_t *hashcat_ctx, hc_devi int run_opencl_kernel_memset32 (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param, cl_mem buf, const u64 offset, const u32 value, const u64 size); int run_opencl_kernel_bzero (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param, cl_mem buf, const u64 size); -int run_kernel (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param, const u32 kern_run, const u64 pws_pos, const u64 num, const u32 event_update, const u32 iteration); +int run_kernel (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param, const u32 kern_run, const u64 pws_pos, const u64 num, const u32 event_update, const u32 iteration, const bool is_autotune); int run_kernel_mp (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param, const u32 kern_run, const u64 num); int run_kernel_tm (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param); int run_kernel_amp (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param, const u64 num); diff --git a/include/bridges.h b/include/bridges.h new file mode 100644 index 000000000..cd98a7b2f --- /dev/null +++ b/include/bridges.h @@ -0,0 +1,30 @@ +/** + * Author......: See docs/credits.txt + * License.....: MIT + */ + +#ifndef HC_BRIDGE_H +#define HC_BRIDGE_H + +#include +#include +#include +#include +#include +#include + +static const int BRIDGE_INTERFACE_VERSION_MINIMUM = 700; + +static const size_t BRIDGE_CONTEXT_SIZE_CURRENT = sizeof (bridge_ctx_t); + +/** + * output functions + */ + +bool bridges_init (hashcat_ctx_t *hashcat_ctx); +void bridges_destroy (hashcat_ctx_t *hashcat_ctx); + +bool bridges_salt_prepare (hashcat_ctx_t *hashcat_ctx); +void bridges_salt_destroy (hashcat_ctx_t *hashcat_ctx); + +#endif // HC_BRIDGE_H diff --git a/include/cpu_features.h b/include/cpu_features.h new file mode 100644 index 000000000..f583ed9bc --- /dev/null +++ b/include/cpu_features.h @@ -0,0 +1,24 @@ +/** + * Author......: See docs/credits.txt + * License.....: MIT + */ + +#ifndef HC_CPU_FEATURES_H +#define HC_CPU_FEATURES_H + +#include + +#if defined(__x86_64__) || defined(_M_X64) +#include +#endif + +// SIMD detection + +int cpu_supports_sse2 (); +int cpu_supports_ssse3 (); +int cpu_supports_xop (); +int cpu_supports_avx2 (); +int cpu_supports_avx512f (); +int cpu_chipset_test (); + +#endif // HC_CPU_FEATURES_H diff --git a/include/ext_cuda.h b/include/ext_cuda.h index 3a05aff1a..44ae01cd6 100644 --- a/include/ext_cuda.h +++ b/include/ext_cuda.h @@ -712,118 +712,160 @@ typedef enum CUjit_option_enum /** * Device properties */ -typedef enum CUdevice_attribute_enum -{ - CU_DEVICE_ATTRIBUTE_MAX_THREADS_PER_BLOCK = 1, /**< Maximum number of threads per block */ - CU_DEVICE_ATTRIBUTE_MAX_BLOCK_DIM_X = 2, /**< Maximum block dimension X */ - CU_DEVICE_ATTRIBUTE_MAX_BLOCK_DIM_Y = 3, /**< Maximum block dimension Y */ - CU_DEVICE_ATTRIBUTE_MAX_BLOCK_DIM_Z = 4, /**< Maximum block dimension Z */ - CU_DEVICE_ATTRIBUTE_MAX_GRID_DIM_X = 5, /**< Maximum grid dimension X */ - CU_DEVICE_ATTRIBUTE_MAX_GRID_DIM_Y = 6, /**< Maximum grid dimension Y */ - CU_DEVICE_ATTRIBUTE_MAX_GRID_DIM_Z = 7, /**< Maximum grid dimension Z */ - CU_DEVICE_ATTRIBUTE_MAX_SHARED_MEMORY_PER_BLOCK = 8, /**< Maximum shared memory available per block in bytes */ - CU_DEVICE_ATTRIBUTE_SHARED_MEMORY_PER_BLOCK = 8, /**< Deprecated, use CU_DEVICE_ATTRIBUTE_MAX_SHARED_MEMORY_PER_BLOCK */ - CU_DEVICE_ATTRIBUTE_TOTAL_CONSTANT_MEMORY = 9, /**< Memory available on device for __constant__ variables in a CUDA C kernel in bytes */ - CU_DEVICE_ATTRIBUTE_WARP_SIZE = 10, /**< Warp size in threads */ - CU_DEVICE_ATTRIBUTE_MAX_PITCH = 11, /**< Maximum pitch in bytes allowed by memory copies */ - CU_DEVICE_ATTRIBUTE_MAX_REGISTERS_PER_BLOCK = 12, /**< Maximum number of 32-bit registers available per block */ - CU_DEVICE_ATTRIBUTE_REGISTERS_PER_BLOCK = 12, /**< Deprecated, use CU_DEVICE_ATTRIBUTE_MAX_REGISTERS_PER_BLOCK */ - CU_DEVICE_ATTRIBUTE_CLOCK_RATE = 13, /**< Typical clock frequency in kilohertz */ - CU_DEVICE_ATTRIBUTE_TEXTURE_ALIGNMENT = 14, /**< Alignment requirement for textures */ - CU_DEVICE_ATTRIBUTE_GPU_OVERLAP = 15, /**< Device can possibly copy memory and execute a kernel concurrently. Deprecated. Use instead CU_DEVICE_ATTRIBUTE_ASYNC_ENGINE_COUNT. */ - CU_DEVICE_ATTRIBUTE_MULTIPROCESSOR_COUNT = 16, /**< Number of multiprocessors on device */ - CU_DEVICE_ATTRIBUTE_KERNEL_EXEC_TIMEOUT = 17, /**< Specifies whether there is a run time limit on kernels */ - CU_DEVICE_ATTRIBUTE_INTEGRATED = 18, /**< Device is integrated with host memory */ - CU_DEVICE_ATTRIBUTE_CAN_MAP_HOST_MEMORY = 19, /**< Device can map host memory into CUDA address space */ - CU_DEVICE_ATTRIBUTE_COMPUTE_MODE = 20, /**< Compute mode (See ::CUcomputemode for details) */ - CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE1D_WIDTH = 21, /**< Maximum 1D texture width */ - CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_WIDTH = 22, /**< Maximum 2D texture width */ - CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_HEIGHT = 23, /**< Maximum 2D texture height */ - CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE3D_WIDTH = 24, /**< Maximum 3D texture width */ - CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE3D_HEIGHT = 25, /**< Maximum 3D texture height */ - CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE3D_DEPTH = 26, /**< Maximum 3D texture depth */ - CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LAYERED_WIDTH = 27, /**< Maximum 2D layered texture width */ - CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LAYERED_HEIGHT = 28, /**< Maximum 2D layered texture height */ - CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LAYERED_LAYERS = 29, /**< Maximum layers in a 2D layered texture */ - CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_ARRAY_WIDTH = 27, /**< Deprecated, use CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LAYERED_WIDTH */ - CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_ARRAY_HEIGHT = 28, /**< Deprecated, use CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LAYERED_HEIGHT */ - CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_ARRAY_NUMSLICES = 29, /**< Deprecated, use CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LAYERED_LAYERS */ - CU_DEVICE_ATTRIBUTE_SURFACE_ALIGNMENT = 30, /**< Alignment requirement for surfaces */ - CU_DEVICE_ATTRIBUTE_CONCURRENT_KERNELS = 31, /**< Device can possibly execute multiple kernels concurrently */ - CU_DEVICE_ATTRIBUTE_ECC_ENABLED = 32, /**< Device has ECC support enabled */ - CU_DEVICE_ATTRIBUTE_PCI_BUS_ID = 33, /**< PCI bus ID of the device */ - CU_DEVICE_ATTRIBUTE_PCI_DEVICE_ID = 34, /**< PCI device ID of the device */ - CU_DEVICE_ATTRIBUTE_TCC_DRIVER = 35, /**< Device is using TCC driver model */ - CU_DEVICE_ATTRIBUTE_MEMORY_CLOCK_RATE = 36, /**< Peak memory clock frequency in kilohertz */ - CU_DEVICE_ATTRIBUTE_GLOBAL_MEMORY_BUS_WIDTH = 37, /**< Global memory bus width in bits */ - CU_DEVICE_ATTRIBUTE_L2_CACHE_SIZE = 38, /**< Size of L2 cache in bytes */ - CU_DEVICE_ATTRIBUTE_MAX_THREADS_PER_MULTIPROCESSOR = 39, /**< Maximum resident threads per multiprocessor */ - CU_DEVICE_ATTRIBUTE_ASYNC_ENGINE_COUNT = 40, /**< Number of asynchronous engines */ - CU_DEVICE_ATTRIBUTE_UNIFIED_ADDRESSING = 41, /**< Device shares a unified address space with the host */ - CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE1D_LAYERED_WIDTH = 42, /**< Maximum 1D layered texture width */ - CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE1D_LAYERED_LAYERS = 43, /**< Maximum layers in a 1D layered texture */ - CU_DEVICE_ATTRIBUTE_CAN_TEX2D_GATHER = 44, /**< Deprecated, do not use. */ - CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_GATHER_WIDTH = 45, /**< Maximum 2D texture width if CUDA_ARRAY3D_TEXTURE_GATHER is set */ - CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_GATHER_HEIGHT = 46, /**< Maximum 2D texture height if CUDA_ARRAY3D_TEXTURE_GATHER is set */ - CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE3D_WIDTH_ALTERNATE = 47, /**< Alternate maximum 3D texture width */ - CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE3D_HEIGHT_ALTERNATE = 48,/**< Alternate maximum 3D texture height */ - CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE3D_DEPTH_ALTERNATE = 49, /**< Alternate maximum 3D texture depth */ - CU_DEVICE_ATTRIBUTE_PCI_DOMAIN_ID = 50, /**< PCI domain ID of the device */ - CU_DEVICE_ATTRIBUTE_TEXTURE_PITCH_ALIGNMENT = 51, /**< Pitch alignment requirement for textures */ - CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURECUBEMAP_WIDTH = 52, /**< Maximum cubemap texture width/height */ - CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURECUBEMAP_LAYERED_WIDTH = 53, /**< Maximum cubemap layered texture width/height */ - CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURECUBEMAP_LAYERED_LAYERS = 54, /**< Maximum layers in a cubemap layered texture */ - CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE1D_WIDTH = 55, /**< Maximum 1D surface width */ - CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE2D_WIDTH = 56, /**< Maximum 2D surface width */ - CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE2D_HEIGHT = 57, /**< Maximum 2D surface height */ - CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE3D_WIDTH = 58, /**< Maximum 3D surface width */ - CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE3D_HEIGHT = 59, /**< Maximum 3D surface height */ - CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE3D_DEPTH = 60, /**< Maximum 3D surface depth */ - CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE1D_LAYERED_WIDTH = 61, /**< Maximum 1D layered surface width */ - CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE1D_LAYERED_LAYERS = 62, /**< Maximum layers in a 1D layered surface */ - CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE2D_LAYERED_WIDTH = 63, /**< Maximum 2D layered surface width */ - CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE2D_LAYERED_HEIGHT = 64, /**< Maximum 2D layered surface height */ - CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE2D_LAYERED_LAYERS = 65, /**< Maximum layers in a 2D layered surface */ - CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACECUBEMAP_WIDTH = 66, /**< Maximum cubemap surface width */ - CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACECUBEMAP_LAYERED_WIDTH = 67, /**< Maximum cubemap layered surface width */ - CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACECUBEMAP_LAYERED_LAYERS = 68, /**< Maximum layers in a cubemap layered surface */ - CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE1D_LINEAR_WIDTH = 69, /**< Maximum 1D linear texture width */ - CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LINEAR_WIDTH = 70, /**< Maximum 2D linear texture width */ - CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LINEAR_HEIGHT = 71, /**< Maximum 2D linear texture height */ - CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LINEAR_PITCH = 72, /**< Maximum 2D linear texture pitch in bytes */ - CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_MIPMAPPED_WIDTH = 73, /**< Maximum mipmapped 2D texture width */ - CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_MIPMAPPED_HEIGHT = 74,/**< Maximum mipmapped 2D texture height */ - CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MAJOR = 75, /**< Major compute capability version number */ - CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MINOR = 76, /**< Minor compute capability version number */ - CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE1D_MIPMAPPED_WIDTH = 77, /**< Maximum mipmapped 1D texture width */ - CU_DEVICE_ATTRIBUTE_STREAM_PRIORITIES_SUPPORTED = 78, /**< Device supports stream priorities */ - CU_DEVICE_ATTRIBUTE_GLOBAL_L1_CACHE_SUPPORTED = 79, /**< Device supports caching globals in L1 */ - CU_DEVICE_ATTRIBUTE_LOCAL_L1_CACHE_SUPPORTED = 80, /**< Device supports caching locals in L1 */ - CU_DEVICE_ATTRIBUTE_MAX_SHARED_MEMORY_PER_MULTIPROCESSOR = 81, /**< Maximum shared memory available per multiprocessor in bytes */ - CU_DEVICE_ATTRIBUTE_MAX_REGISTERS_PER_MULTIPROCESSOR = 82, /**< Maximum number of 32-bit registers available per multiprocessor */ - CU_DEVICE_ATTRIBUTE_MANAGED_MEMORY = 83, /**< Device can allocate managed memory on this system */ - CU_DEVICE_ATTRIBUTE_MULTI_GPU_BOARD = 84, /**< Device is on a multi-GPU board */ - CU_DEVICE_ATTRIBUTE_MULTI_GPU_BOARD_GROUP_ID = 85, /**< Unique id for a group of devices on the same multi-GPU board */ - CU_DEVICE_ATTRIBUTE_HOST_NATIVE_ATOMIC_SUPPORTED = 86, /**< Link between the device and the host supports native atomic operations (this is a placeholder attribute, and is not supported on any current hardware)*/ - CU_DEVICE_ATTRIBUTE_SINGLE_TO_DOUBLE_PRECISION_PERF_RATIO = 87, /**< Ratio of single precision performance (in floating-point operations per second) to double precision performance */ - CU_DEVICE_ATTRIBUTE_PAGEABLE_MEMORY_ACCESS = 88, /**< Device supports coherently accessing pageable memory without calling cudaHostRegister on it */ - CU_DEVICE_ATTRIBUTE_CONCURRENT_MANAGED_ACCESS = 89, /**< Device can coherently access managed memory concurrently with the CPU */ - CU_DEVICE_ATTRIBUTE_COMPUTE_PREEMPTION_SUPPORTED = 90, /**< Device supports compute preemption. */ - CU_DEVICE_ATTRIBUTE_CAN_USE_HOST_POINTER_FOR_REGISTERED_MEM = 91, /**< Device can access host registered memory at the same virtual address as the CPU */ - CU_DEVICE_ATTRIBUTE_CAN_USE_STREAM_MEM_OPS = 92, /**< ::cuStreamBatchMemOp and related APIs are supported. */ - CU_DEVICE_ATTRIBUTE_CAN_USE_64_BIT_STREAM_MEM_OPS = 93, /**< 64-bit operations are supported in ::cuStreamBatchMemOp and related APIs. */ - CU_DEVICE_ATTRIBUTE_CAN_USE_STREAM_WAIT_VALUE_NOR = 94, /**< ::CU_STREAM_WAIT_VALUE_NOR is supported. */ - CU_DEVICE_ATTRIBUTE_COOPERATIVE_LAUNCH = 95, /**< Device supports launching cooperative kernels via ::cuLaunchCooperativeKernel */ - CU_DEVICE_ATTRIBUTE_COOPERATIVE_MULTI_DEVICE_LAUNCH = 96, /**< Device can participate in cooperative kernels launched via ::cuLaunchCooperativeKernelMultiDevice */ - CU_DEVICE_ATTRIBUTE_MAX_SHARED_MEMORY_PER_BLOCK_OPTIN = 97, /**< Maximum optin shared memory per block */ - CU_DEVICE_ATTRIBUTE_CAN_FLUSH_REMOTE_WRITES = 98, /**< Both the ::CU_STREAM_WAIT_VALUE_FLUSH flag and the ::CU_STREAM_MEM_OP_FLUSH_REMOTE_WRITES MemOp are supported on the device. See \ref CUDA_MEMOP for additional details. */ - CU_DEVICE_ATTRIBUTE_HOST_REGISTER_SUPPORTED = 99, /**< Device supports host memory registration via ::cudaHostRegister. */ - CU_DEVICE_ATTRIBUTE_PAGEABLE_MEMORY_ACCESS_USES_HOST_PAGE_TABLES = 100, /**< Device accesses pageable memory via the host's page tables. */ - CU_DEVICE_ATTRIBUTE_DIRECT_MANAGED_MEM_ACCESS_FROM_HOST = 101, /**< The host can directly access managed memory on the device without migration. */ - CU_DEVICE_ATTRIBUTE_MAX - +typedef enum CUdevice_attribute_enum { + CU_DEVICE_ATTRIBUTE_MAX_THREADS_PER_BLOCK = 1, /**< Maximum number of threads per block */ + CU_DEVICE_ATTRIBUTE_MAX_BLOCK_DIM_X = 2, /**< Maximum block dimension X */ + CU_DEVICE_ATTRIBUTE_MAX_BLOCK_DIM_Y = 3, /**< Maximum block dimension Y */ + CU_DEVICE_ATTRIBUTE_MAX_BLOCK_DIM_Z = 4, /**< Maximum block dimension Z */ + CU_DEVICE_ATTRIBUTE_MAX_GRID_DIM_X = 5, /**< Maximum grid dimension X */ + CU_DEVICE_ATTRIBUTE_MAX_GRID_DIM_Y = 6, /**< Maximum grid dimension Y */ + CU_DEVICE_ATTRIBUTE_MAX_GRID_DIM_Z = 7, /**< Maximum grid dimension Z */ + CU_DEVICE_ATTRIBUTE_MAX_SHARED_MEMORY_PER_BLOCK = 8, /**< Maximum shared memory available per block in bytes */ + CU_DEVICE_ATTRIBUTE_SHARED_MEMORY_PER_BLOCK = 8, /**< Deprecated, use CU_DEVICE_ATTRIBUTE_MAX_SHARED_MEMORY_PER_BLOCK */ + CU_DEVICE_ATTRIBUTE_TOTAL_CONSTANT_MEMORY = 9, /**< Memory available on device for __constant__ variables in a CUDA C kernel in bytes */ + CU_DEVICE_ATTRIBUTE_WARP_SIZE = 10, /**< Warp size in threads */ + CU_DEVICE_ATTRIBUTE_MAX_PITCH = 11, /**< Maximum pitch in bytes allowed by memory copies */ + CU_DEVICE_ATTRIBUTE_MAX_REGISTERS_PER_BLOCK = 12, /**< Maximum number of 32-bit registers available per block */ + CU_DEVICE_ATTRIBUTE_REGISTERS_PER_BLOCK = 12, /**< Deprecated, use CU_DEVICE_ATTRIBUTE_MAX_REGISTERS_PER_BLOCK */ + CU_DEVICE_ATTRIBUTE_CLOCK_RATE = 13, /**< Typical clock frequency in kilohertz */ + CU_DEVICE_ATTRIBUTE_TEXTURE_ALIGNMENT = 14, /**< Alignment requirement for textures */ + CU_DEVICE_ATTRIBUTE_GPU_OVERLAP = 15, /**< Device can possibly copy memory and execute a kernel concurrently. Deprecated. Use instead CU_DEVICE_ATTRIBUTE_ASYNC_ENGINE_COUNT. */ + CU_DEVICE_ATTRIBUTE_MULTIPROCESSOR_COUNT = 16, /**< Number of multiprocessors on device */ + CU_DEVICE_ATTRIBUTE_KERNEL_EXEC_TIMEOUT = 17, /**< Specifies whether there is a run time limit on kernels */ + CU_DEVICE_ATTRIBUTE_INTEGRATED = 18, /**< Device is integrated with host memory */ + CU_DEVICE_ATTRIBUTE_CAN_MAP_HOST_MEMORY = 19, /**< Device can map host memory into CUDA address space */ + CU_DEVICE_ATTRIBUTE_COMPUTE_MODE = 20, /**< Compute mode (See ::CUcomputemode for details) */ + CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE1D_WIDTH = 21, /**< Maximum 1D texture width */ + CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_WIDTH = 22, /**< Maximum 2D texture width */ + CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_HEIGHT = 23, /**< Maximum 2D texture height */ + CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE3D_WIDTH = 24, /**< Maximum 3D texture width */ + CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE3D_HEIGHT = 25, /**< Maximum 3D texture height */ + CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE3D_DEPTH = 26, /**< Maximum 3D texture depth */ + CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LAYERED_WIDTH = 27, /**< Maximum 2D layered texture width */ + CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LAYERED_HEIGHT = 28, /**< Maximum 2D layered texture height */ + CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LAYERED_LAYERS = 29, /**< Maximum layers in a 2D layered texture */ + CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_ARRAY_WIDTH = 27, /**< Deprecated, use CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LAYERED_WIDTH */ + CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_ARRAY_HEIGHT = 28, /**< Deprecated, use CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LAYERED_HEIGHT */ + CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_ARRAY_NUMSLICES = 29, /**< Deprecated, use CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LAYERED_LAYERS */ + CU_DEVICE_ATTRIBUTE_SURFACE_ALIGNMENT = 30, /**< Alignment requirement for surfaces */ + CU_DEVICE_ATTRIBUTE_CONCURRENT_KERNELS = 31, /**< Device can possibly execute multiple kernels concurrently */ + CU_DEVICE_ATTRIBUTE_ECC_ENABLED = 32, /**< Device has ECC support enabled */ + CU_DEVICE_ATTRIBUTE_PCI_BUS_ID = 33, /**< PCI bus ID of the device */ + CU_DEVICE_ATTRIBUTE_PCI_DEVICE_ID = 34, /**< PCI device ID of the device */ + CU_DEVICE_ATTRIBUTE_TCC_DRIVER = 35, /**< Device is using TCC driver model */ + CU_DEVICE_ATTRIBUTE_MEMORY_CLOCK_RATE = 36, /**< Peak memory clock frequency in kilohertz */ + CU_DEVICE_ATTRIBUTE_GLOBAL_MEMORY_BUS_WIDTH = 37, /**< Global memory bus width in bits */ + CU_DEVICE_ATTRIBUTE_L2_CACHE_SIZE = 38, /**< Size of L2 cache in bytes */ + CU_DEVICE_ATTRIBUTE_MAX_THREADS_PER_MULTIPROCESSOR = 39, /**< Maximum resident threads per multiprocessor */ + CU_DEVICE_ATTRIBUTE_ASYNC_ENGINE_COUNT = 40, /**< Number of asynchronous engines */ + CU_DEVICE_ATTRIBUTE_UNIFIED_ADDRESSING = 41, /**< Device shares a unified address space with the host */ + CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE1D_LAYERED_WIDTH = 42, /**< Maximum 1D layered texture width */ + CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE1D_LAYERED_LAYERS = 43, /**< Maximum layers in a 1D layered texture */ + CU_DEVICE_ATTRIBUTE_CAN_TEX2D_GATHER = 44, /**< Deprecated, do not use. */ + CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_GATHER_WIDTH = 45, /**< Maximum 2D texture width if CUDA_ARRAY3D_TEXTURE_GATHER is set */ + CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_GATHER_HEIGHT = 46, /**< Maximum 2D texture height if CUDA_ARRAY3D_TEXTURE_GATHER is set */ + CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE3D_WIDTH_ALTERNATE = 47, /**< Alternate maximum 3D texture width */ + CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE3D_HEIGHT_ALTERNATE = 48, /**< Alternate maximum 3D texture height */ + CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE3D_DEPTH_ALTERNATE = 49, /**< Alternate maximum 3D texture depth */ + CU_DEVICE_ATTRIBUTE_PCI_DOMAIN_ID = 50, /**< PCI domain ID of the device */ + CU_DEVICE_ATTRIBUTE_TEXTURE_PITCH_ALIGNMENT = 51, /**< Pitch alignment requirement for textures */ + CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURECUBEMAP_WIDTH = 52, /**< Maximum cubemap texture width/height */ + CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURECUBEMAP_LAYERED_WIDTH = 53, /**< Maximum cubemap layered texture width/height */ + CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURECUBEMAP_LAYERED_LAYERS = 54, /**< Maximum layers in a cubemap layered texture */ + CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE1D_WIDTH = 55, /**< Maximum 1D surface width */ + CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE2D_WIDTH = 56, /**< Maximum 2D surface width */ + CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE2D_HEIGHT = 57, /**< Maximum 2D surface height */ + CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE3D_WIDTH = 58, /**< Maximum 3D surface width */ + CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE3D_HEIGHT = 59, /**< Maximum 3D surface height */ + CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE3D_DEPTH = 60, /**< Maximum 3D surface depth */ + CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE1D_LAYERED_WIDTH = 61, /**< Maximum 1D layered surface width */ + CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE1D_LAYERED_LAYERS = 62, /**< Maximum layers in a 1D layered surface */ + CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE2D_LAYERED_WIDTH = 63, /**< Maximum 2D layered surface width */ + CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE2D_LAYERED_HEIGHT = 64, /**< Maximum 2D layered surface height */ + CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE2D_LAYERED_LAYERS = 65, /**< Maximum layers in a 2D layered surface */ + CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACECUBEMAP_WIDTH = 66, /**< Maximum cubemap surface width */ + CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACECUBEMAP_LAYERED_WIDTH = 67, /**< Maximum cubemap layered surface width */ + CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACECUBEMAP_LAYERED_LAYERS = 68, /**< Maximum layers in a cubemap layered surface */ + CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE1D_LINEAR_WIDTH = 69, /**< Deprecated, do not use. Use cudaDeviceGetTexture1DLinearMaxWidth() or cuDeviceGetTexture1DLinearMaxWidth() instead. */ + CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LINEAR_WIDTH = 70, /**< Maximum 2D linear texture width */ + CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LINEAR_HEIGHT = 71, /**< Maximum 2D linear texture height */ + CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LINEAR_PITCH = 72, /**< Maximum 2D linear texture pitch in bytes */ + CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_MIPMAPPED_WIDTH = 73, /**< Maximum mipmapped 2D texture width */ + CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_MIPMAPPED_HEIGHT = 74, /**< Maximum mipmapped 2D texture height */ + CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MAJOR = 75, /**< Major compute capability version number */ + CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MINOR = 76, /**< Minor compute capability version number */ + CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE1D_MIPMAPPED_WIDTH = 77, /**< Maximum mipmapped 1D texture width */ + CU_DEVICE_ATTRIBUTE_STREAM_PRIORITIES_SUPPORTED = 78, /**< Device supports stream priorities */ + CU_DEVICE_ATTRIBUTE_GLOBAL_L1_CACHE_SUPPORTED = 79, /**< Device supports caching globals in L1 */ + CU_DEVICE_ATTRIBUTE_LOCAL_L1_CACHE_SUPPORTED = 80, /**< Device supports caching locals in L1 */ + CU_DEVICE_ATTRIBUTE_MAX_SHARED_MEMORY_PER_MULTIPROCESSOR = 81, /**< Maximum shared memory available per multiprocessor in bytes */ + CU_DEVICE_ATTRIBUTE_MAX_REGISTERS_PER_MULTIPROCESSOR = 82, /**< Maximum number of 32-bit registers available per multiprocessor */ + CU_DEVICE_ATTRIBUTE_MANAGED_MEMORY = 83, /**< Device can allocate managed memory on this system */ + CU_DEVICE_ATTRIBUTE_MULTI_GPU_BOARD = 84, /**< Device is on a multi-GPU board */ + CU_DEVICE_ATTRIBUTE_MULTI_GPU_BOARD_GROUP_ID = 85, /**< Unique id for a group of devices on the same multi-GPU board */ + CU_DEVICE_ATTRIBUTE_HOST_NATIVE_ATOMIC_SUPPORTED = 86, /**< Link between the device and the host supports native atomic operations */ + CU_DEVICE_ATTRIBUTE_SINGLE_TO_DOUBLE_PRECISION_PERF_RATIO = 87, /**< Ratio of single precision performance (in floating-point operations per second) to double precision performance */ + CU_DEVICE_ATTRIBUTE_PAGEABLE_MEMORY_ACCESS = 88, /**< Device supports coherently accessing pageable memory without calling cudaHostRegister on it */ + CU_DEVICE_ATTRIBUTE_CONCURRENT_MANAGED_ACCESS = 89, /**< Device can coherently access managed memory concurrently with the CPU */ + CU_DEVICE_ATTRIBUTE_COMPUTE_PREEMPTION_SUPPORTED = 90, /**< Device supports compute preemption. */ + CU_DEVICE_ATTRIBUTE_CAN_USE_HOST_POINTER_FOR_REGISTERED_MEM = 91, /**< Device can access host registered memory at the same virtual address as the CPU */ + CU_DEVICE_ATTRIBUTE_CAN_USE_STREAM_MEM_OPS_V1 = 92, /**< Deprecated, along with v1 MemOps API, ::cuStreamBatchMemOp and related APIs are supported. */ + CU_DEVICE_ATTRIBUTE_CAN_USE_64_BIT_STREAM_MEM_OPS_V1 = 93, /**< Deprecated, along with v1 MemOps API, 64-bit operations are supported in ::cuStreamBatchMemOp and related APIs. */ + CU_DEVICE_ATTRIBUTE_CAN_USE_STREAM_WAIT_VALUE_NOR_V1 = 94, /**< Deprecated, along with v1 MemOps API, ::CU_STREAM_WAIT_VALUE_NOR is supported. */ + CU_DEVICE_ATTRIBUTE_COOPERATIVE_LAUNCH = 95, /**< Device supports launching cooperative kernels via ::cuLaunchCooperativeKernel */ + CU_DEVICE_ATTRIBUTE_COOPERATIVE_MULTI_DEVICE_LAUNCH = 96, /**< Deprecated, ::cuLaunchCooperativeKernelMultiDevice is deprecated. */ + CU_DEVICE_ATTRIBUTE_MAX_SHARED_MEMORY_PER_BLOCK_OPTIN = 97, /**< Maximum optin shared memory per block */ + CU_DEVICE_ATTRIBUTE_CAN_FLUSH_REMOTE_WRITES = 98, /**< The ::CU_STREAM_WAIT_VALUE_FLUSH flag and the ::CU_STREAM_MEM_OP_FLUSH_REMOTE_WRITES MemOp are supported on the device. See \ref CUDA_MEMOP for additional details. */ + CU_DEVICE_ATTRIBUTE_HOST_REGISTER_SUPPORTED = 99, /**< Device supports host memory registration via ::cudaHostRegister. */ + CU_DEVICE_ATTRIBUTE_PAGEABLE_MEMORY_ACCESS_USES_HOST_PAGE_TABLES = 100, /**< Device accesses pageable memory via the host's page tables. */ + CU_DEVICE_ATTRIBUTE_DIRECT_MANAGED_MEM_ACCESS_FROM_HOST = 101, /**< The host can directly access managed memory on the device without migration. */ + CU_DEVICE_ATTRIBUTE_VIRTUAL_ADDRESS_MANAGEMENT_SUPPORTED = 102, /**< Deprecated, Use CU_DEVICE_ATTRIBUTE_VIRTUAL_MEMORY_MANAGEMENT_SUPPORTED*/ + CU_DEVICE_ATTRIBUTE_VIRTUAL_MEMORY_MANAGEMENT_SUPPORTED = 102, /**< Device supports virtual memory management APIs like ::cuMemAddressReserve, ::cuMemCreate, ::cuMemMap and related APIs */ + CU_DEVICE_ATTRIBUTE_HANDLE_TYPE_POSIX_FILE_DESCRIPTOR_SUPPORTED = 103, /**< Device supports exporting memory to a posix file descriptor with ::cuMemExportToShareableHandle, if requested via ::cuMemCreate */ + CU_DEVICE_ATTRIBUTE_HANDLE_TYPE_WIN32_HANDLE_SUPPORTED = 104, /**< Device supports exporting memory to a Win32 NT handle with ::cuMemExportToShareableHandle, if requested via ::cuMemCreate */ + CU_DEVICE_ATTRIBUTE_HANDLE_TYPE_WIN32_KMT_HANDLE_SUPPORTED = 105, /**< Device supports exporting memory to a Win32 KMT handle with ::cuMemExportToShareableHandle, if requested via ::cuMemCreate */ + CU_DEVICE_ATTRIBUTE_MAX_BLOCKS_PER_MULTIPROCESSOR = 106, /**< Maximum number of blocks per multiprocessor */ + CU_DEVICE_ATTRIBUTE_GENERIC_COMPRESSION_SUPPORTED = 107, /**< Device supports compression of memory */ + CU_DEVICE_ATTRIBUTE_MAX_PERSISTING_L2_CACHE_SIZE = 108, /**< Maximum L2 persisting lines capacity setting in bytes. */ + CU_DEVICE_ATTRIBUTE_MAX_ACCESS_POLICY_WINDOW_SIZE = 109, /**< Maximum value of CUaccessPolicyWindow::num_bytes. */ + CU_DEVICE_ATTRIBUTE_GPU_DIRECT_RDMA_WITH_CUDA_VMM_SUPPORTED = 110, /**< Device supports specifying the GPUDirect RDMA flag with ::cuMemCreate */ + CU_DEVICE_ATTRIBUTE_RESERVED_SHARED_MEMORY_PER_BLOCK = 111, /**< Shared memory reserved by CUDA driver per block in bytes */ + CU_DEVICE_ATTRIBUTE_SPARSE_CUDA_ARRAY_SUPPORTED = 112, /**< Device supports sparse CUDA arrays and sparse CUDA mipmapped arrays */ + CU_DEVICE_ATTRIBUTE_READ_ONLY_HOST_REGISTER_SUPPORTED = 113, /**< Device supports using the ::cuMemHostRegister flag ::CU_MEMHOSTERGISTER_READ_ONLY to register memory that must be mapped as read-only to the GPU */ + CU_DEVICE_ATTRIBUTE_TIMELINE_SEMAPHORE_INTEROP_SUPPORTED = 114, /**< External timeline semaphore interop is supported on the device */ + CU_DEVICE_ATTRIBUTE_MEMORY_POOLS_SUPPORTED = 115, /**< Device supports using the ::cuMemAllocAsync and ::cuMemPool family of APIs */ + CU_DEVICE_ATTRIBUTE_GPU_DIRECT_RDMA_SUPPORTED = 116, /**< Device supports GPUDirect RDMA APIs, like nvidia_p2p_get_pages (see https://docs.nvidia.com/cuda/gpudirect-rdma for more information) */ + CU_DEVICE_ATTRIBUTE_GPU_DIRECT_RDMA_FLUSH_WRITES_OPTIONS = 117, /**< The returned attribute shall be interpreted as a bitmask, where the individual bits are described by the ::CUflushGPUDirectRDMAWritesOptions enum */ + CU_DEVICE_ATTRIBUTE_GPU_DIRECT_RDMA_WRITES_ORDERING = 118, /**< GPUDirect RDMA writes to the device do not need to be flushed for consumers within the scope indicated by the returned attribute. See ::CUGPUDirectRDMAWritesOrdering for the numerical values returned here. */ + CU_DEVICE_ATTRIBUTE_MEMPOOL_SUPPORTED_HANDLE_TYPES = 119, /**< Handle types supported with mempool based IPC */ + CU_DEVICE_ATTRIBUTE_CLUSTER_LAUNCH = 120, /**< Indicates device supports cluster launch */ + CU_DEVICE_ATTRIBUTE_DEFERRED_MAPPING_CUDA_ARRAY_SUPPORTED = 121, /**< Device supports deferred mapping CUDA arrays and CUDA mipmapped arrays */ + CU_DEVICE_ATTRIBUTE_CAN_USE_64_BIT_STREAM_MEM_OPS = 122, /**< 64-bit operations are supported in ::cuStreamBatchMemOp and related MemOp APIs. */ + CU_DEVICE_ATTRIBUTE_CAN_USE_STREAM_WAIT_VALUE_NOR = 123, /**< ::CU_STREAM_WAIT_VALUE_NOR is supported by MemOp APIs. */ + CU_DEVICE_ATTRIBUTE_DMA_BUF_SUPPORTED = 124, /**< Device supports buffer sharing with dma_buf mechanism. */ + CU_DEVICE_ATTRIBUTE_IPC_EVENT_SUPPORTED = 125, /**< Device supports IPC Events. */ + CU_DEVICE_ATTRIBUTE_MEM_SYNC_DOMAIN_COUNT = 126, /**< Number of memory domains the device supports. */ + CU_DEVICE_ATTRIBUTE_TENSOR_MAP_ACCESS_SUPPORTED = 127, /**< Device supports accessing memory using Tensor Map. */ + CU_DEVICE_ATTRIBUTE_HANDLE_TYPE_FABRIC_SUPPORTED = 128, /**< Device supports exporting memory to a fabric handle with cuMemExportToShareableHandle() or requested with cuMemCreate() */ + CU_DEVICE_ATTRIBUTE_UNIFIED_FUNCTION_POINTERS = 129, /**< Device supports unified function pointers. */ + CU_DEVICE_ATTRIBUTE_NUMA_CONFIG = 130, /**< NUMA configuration of a device: value is of type ::CUdeviceNumaConfig enum */ + CU_DEVICE_ATTRIBUTE_NUMA_ID = 131, /**< NUMA node ID of the GPU memory */ + CU_DEVICE_ATTRIBUTE_MULTICAST_SUPPORTED = 132, /**< Device supports switch multicast and reduction operations. */ + CU_DEVICE_ATTRIBUTE_MPS_ENABLED = 133, /**< Indicates if contexts created on this device will be shared via MPS */ + CU_DEVICE_ATTRIBUTE_HOST_NUMA_ID = 134, /**< NUMA ID of the host node closest to the device. Returns -1 when system does not support NUMA. */ + CU_DEVICE_ATTRIBUTE_D3D12_CIG_SUPPORTED = 135, /**< Device supports CIG with D3D12. */ + CU_DEVICE_ATTRIBUTE_MEM_DECOMPRESS_ALGORITHM_MASK = 136, /**< The returned valued shall be interpreted as a bitmask, where the individual bits are described by the ::CUmemDecompressAlgorithm enum. */ + CU_DEVICE_ATTRIBUTE_MEM_DECOMPRESS_MAXIMUM_LENGTH = 137, /**< The returned valued is the maximum length in bytes of a single decompress operation that is allowed. */ + CU_DEVICE_ATTRIBUTE_VULKAN_CIG_SUPPORTED = 138, /**< Device supports CIG with Vulkan. */ + CU_DEVICE_ATTRIBUTE_GPU_PCI_DEVICE_ID = 139, /**< The combined 16-bit PCI device ID and 16-bit PCI vendor ID. */ + CU_DEVICE_ATTRIBUTE_GPU_PCI_SUBSYSTEM_ID = 140, /**< The combined 16-bit PCI subsystem ID and 16-bit PCI subsystem vendor ID. */ + CU_DEVICE_ATTRIBUTE_HOST_NUMA_VIRTUAL_MEMORY_MANAGEMENT_SUPPORTED = 141, /**< Device supports HOST_NUMA location with the virtual memory management APIs like ::cuMemCreate, ::cuMemMap and related APIs */ + CU_DEVICE_ATTRIBUTE_HOST_NUMA_MEMORY_POOLS_SUPPORTED = 142, /**< Device supports HOST_NUMA location with the ::cuMemAllocAsync and ::cuMemPool family of APIs */ + CU_DEVICE_ATTRIBUTE_HOST_NUMA_MULTINODE_IPC_SUPPORTED = 143, /**< Device supports HOST_NUMA location IPC between nodes in a multi-node system. */ + CU_DEVICE_ATTRIBUTE_MAX } CUdevice_attribute; + /** * Function cache configurations */ @@ -850,81 +892,148 @@ typedef enum CUsharedconfig_enum /** * Function properties */ -typedef enum CUfunction_attribute_enum -{ - /** - * The maximum number of threads per block, beyond which a launch of the - * function would fail. This number depends on both the function and the - * device on which the function is currently loaded. - */ - CU_FUNC_ATTRIBUTE_MAX_THREADS_PER_BLOCK = 0, +typedef enum CUfunction_attribute_enum { + /** + * The maximum number of threads per block, beyond which a launch of the + * function would fail. This number depends on both the function and the + * device on which the function is currently loaded. + */ + CU_FUNC_ATTRIBUTE_MAX_THREADS_PER_BLOCK = 0, - /** - * The size in bytes of statically-allocated shared memory required by - * this function. This does not include dynamically-allocated shared - * memory requested by the user at runtime. - */ - CU_FUNC_ATTRIBUTE_SHARED_SIZE_BYTES = 1, + /** + * The size in bytes of statically-allocated shared memory required by + * this function. This does not include dynamically-allocated shared + * memory requested by the user at runtime. + */ + CU_FUNC_ATTRIBUTE_SHARED_SIZE_BYTES = 1, - /** - * The size in bytes of user-allocated constant memory required by this - * function. - */ - CU_FUNC_ATTRIBUTE_CONST_SIZE_BYTES = 2, + /** + * The size in bytes of user-allocated constant memory required by this + * function. + */ + CU_FUNC_ATTRIBUTE_CONST_SIZE_BYTES = 2, - /** - * The size in bytes of local memory used by each thread of this function. - */ - CU_FUNC_ATTRIBUTE_LOCAL_SIZE_BYTES = 3, + /** + * The size in bytes of local memory used by each thread of this function. + */ + CU_FUNC_ATTRIBUTE_LOCAL_SIZE_BYTES = 3, - /** - * The number of registers used by each thread of this function. - */ - CU_FUNC_ATTRIBUTE_NUM_REGS = 4, + /** + * The number of registers used by each thread of this function. + */ + CU_FUNC_ATTRIBUTE_NUM_REGS = 4, - /** - * The PTX virtual architecture version for which the function was - * compiled. This value is the major PTX version * 10 + the minor PTX - * version, so a PTX version 1.3 function would return the value 13. - * Note that this may return the undefined value of 0 for cubins - * compiled prior to CUDA 3.0. - */ - CU_FUNC_ATTRIBUTE_PTX_VERSION = 5, + /** + * The PTX virtual architecture version for which the function was + * compiled. This value is the major PTX version * 10 + the minor PTX + * version, so a PTX version 1.3 function would return the value 13. + * Note that this may return the undefined value of 0 for cubins + * compiled prior to CUDA 3.0. + */ + CU_FUNC_ATTRIBUTE_PTX_VERSION = 5, - /** - * The binary architecture version for which the function was compiled. - * This value is the major binary version * 10 + the minor binary version, - * so a binary version 1.3 function would return the value 13. Note that - * this will return a value of 10 for legacy cubins that do not have a - * properly-encoded binary architecture version. - */ - CU_FUNC_ATTRIBUTE_BINARY_VERSION = 6, + /** + * The binary architecture version for which the function was compiled. + * This value is the major binary version * 10 + the minor binary version, + * so a binary version 1.3 function would return the value 13. Note that + * this will return a value of 10 for legacy cubins that do not have a + * properly-encoded binary architecture version. + */ + CU_FUNC_ATTRIBUTE_BINARY_VERSION = 6, - /** - * The attribute to indicate whether the function has been compiled with - * user specified option "-Xptxas --dlcm=ca" set . - */ - CU_FUNC_ATTRIBUTE_CACHE_MODE_CA = 7, + /** + * The attribute to indicate whether the function has been compiled with + * user specified option "-Xptxas --dlcm=ca" set . + */ + CU_FUNC_ATTRIBUTE_CACHE_MODE_CA = 7, - /** - * The maximum size in bytes of dynamically-allocated shared memory that can be used by - * this function. If the user-specified dynamic shared memory size is larger than this - * value, the launch will fail. - * See ::cuFuncSetAttribute - */ - CU_FUNC_ATTRIBUTE_MAX_DYNAMIC_SHARED_SIZE_BYTES = 8, + /** + * The maximum size in bytes of dynamically-allocated shared memory that can be used by + * this function. If the user-specified dynamic shared memory size is larger than this + * value, the launch will fail. + * See ::cuFuncSetAttribute, ::cuKernelSetAttribute + */ + CU_FUNC_ATTRIBUTE_MAX_DYNAMIC_SHARED_SIZE_BYTES = 8, - /** - * On devices where the L1 cache and shared memory use the same hardware resources, - * this sets the shared memory carveout preference, in percent of the total shared memory. - * Refer to ::CU_DEVICE_ATTRIBUTE_MAX_SHARED_MEMORY_PER_MULTIPROCESSOR. - * This is only a hint, and the driver can choose a different ratio if required to execute the function. - * See ::cuFuncSetAttribute - */ - CU_FUNC_ATTRIBUTE_PREFERRED_SHARED_MEMORY_CARVEOUT = 9, + /** + * On devices where the L1 cache and shared memory use the same hardware resources, + * this sets the shared memory carveout preference, in percent of the total shared memory. + * Refer to ::CU_DEVICE_ATTRIBUTE_MAX_SHARED_MEMORY_PER_MULTIPROCESSOR. + * This is only a hint, and the driver can choose a different ratio if required to execute the function. + * See ::cuFuncSetAttribute, ::cuKernelSetAttribute + */ + CU_FUNC_ATTRIBUTE_PREFERRED_SHARED_MEMORY_CARVEOUT = 9, - CU_FUNC_ATTRIBUTE_MAX + /** + * If this attribute is set, the kernel must launch with a valid cluster + * size specified. + * See ::cuFuncSetAttribute, ::cuKernelSetAttribute + */ + CU_FUNC_ATTRIBUTE_CLUSTER_SIZE_MUST_BE_SET = 10, + /** + * The required cluster width in blocks. The values must either all be 0 or + * all be positive. The validity of the cluster dimensions is otherwise + * checked at launch time. + * + * If the value is set during compile time, it cannot be set at runtime. + * Setting it at runtime will return CUDA_ERROR_NOT_PERMITTED. + * See ::cuFuncSetAttribute, ::cuKernelSetAttribute + */ + CU_FUNC_ATTRIBUTE_REQUIRED_CLUSTER_WIDTH = 11, + + /** + * The required cluster height in blocks. The values must either all be 0 or + * all be positive. The validity of the cluster dimensions is otherwise + * checked at launch time. + * + * If the value is set during compile time, it cannot be set at runtime. + * Setting it at runtime should return CUDA_ERROR_NOT_PERMITTED. + * See ::cuFuncSetAttribute, ::cuKernelSetAttribute + */ + CU_FUNC_ATTRIBUTE_REQUIRED_CLUSTER_HEIGHT = 12, + + /** + * The required cluster depth in blocks. The values must either all be 0 or + * all be positive. The validity of the cluster dimensions is otherwise + * checked at launch time. + * + * If the value is set during compile time, it cannot be set at runtime. + * Setting it at runtime should return CUDA_ERROR_NOT_PERMITTED. + * See ::cuFuncSetAttribute, ::cuKernelSetAttribute + */ + CU_FUNC_ATTRIBUTE_REQUIRED_CLUSTER_DEPTH = 13, + + /** + * Whether the function can be launched with non-portable cluster size. 1 is + * allowed, 0 is disallowed. A non-portable cluster size may only function + * on the specific SKUs the program is tested on. The launch might fail if + * the program is run on a different hardware platform. + * + * CUDA API provides cudaOccupancyMaxActiveClusters to assist with checking + * whether the desired size can be launched on the current device. + * + * Portable Cluster Size + * + * A portable cluster size is guaranteed to be functional on all compute + * capabilities higher than the target compute capability. The portable + * cluster size for sm_90 is 8 blocks per cluster. This value may increase + * for future compute capabilities. + * + * The specific hardware unit may support higher cluster sizes that’s not + * guaranteed to be portable. + * See ::cuFuncSetAttribute, ::cuKernelSetAttribute + */ + CU_FUNC_ATTRIBUTE_NON_PORTABLE_CLUSTER_SIZE_ALLOWED = 14, + + /** + * The block scheduling policy of a function. The value type is + * CUclusterSchedulingPolicy / cudaClusterSchedulingPolicy. + * See ::cuFuncSetAttribute, ::cuKernelSetAttribute + */ + CU_FUNC_ATTRIBUTE_CLUSTER_SCHEDULING_POLICY_PREFERENCE = 15, + + CU_FUNC_ATTRIBUTE_MAX } CUfunction_attribute; /** @@ -1069,6 +1178,7 @@ typedef CUresult (CUDA_API_CALL *CUDA_CULINKCREATE) (unsigned int, C typedef CUresult (CUDA_API_CALL *CUDA_CULINKADDDATA) (CUlinkState, CUjitInputType, void *, size_t, const char *, unsigned int, CUjit_option *, void **); typedef CUresult (CUDA_API_CALL *CUDA_CULINKDESTROY) (CUlinkState); typedef CUresult (CUDA_API_CALL *CUDA_CULINKCOMPLETE) (CUlinkState, void **, size_t *); +typedef CUresult (CUDA_API_CALL *CUDA_CUOCCUPANCYMAXBLOCKSPERMULTIPROCESSOR) (int *, CUfunction, int, size_t); typedef struct hc_cuda_lib { @@ -1131,6 +1241,7 @@ typedef struct hc_cuda_lib CUDA_CULINKADDDATA cuLinkAddData; CUDA_CULINKDESTROY cuLinkDestroy; CUDA_CULINKCOMPLETE cuLinkComplete; + CUDA_CUOCCUPANCYMAXBLOCKSPERMULTIPROCESSOR cuOccupancyMaxActiveBlocksPerMultiprocessor; } hc_cuda_lib_t; @@ -1181,5 +1292,6 @@ int hc_cuLinkCreate (void *hashcat_ctx, unsigned int numOptions, CUji int hc_cuLinkAddData (void *hashcat_ctx, CUlinkState state, CUjitInputType type, void *data, size_t size, const char *name, unsigned int numOptions, CUjit_option *options, void **optionValues); int hc_cuLinkDestroy (void *hashcat_ctx, CUlinkState state); int hc_cuLinkComplete (void *hashcat_ctx, CUlinkState state, void **cubinOut, size_t *sizeOut); +int hc_cuOccupancyMaxActiveBlocksPerMultiprocessor (void *hashcat_ctx, int *numBlocks, CUfunction func, int blockSize, size_t dynamicSMemSize); #endif // HC_EXT_CUDA_H diff --git a/include/ext_hip.h b/include/ext_hip.h index eb0d52a59..4cc6fb797 100644 --- a/include/ext_hip.h +++ b/include/ext_hip.h @@ -15,16 +15,16 @@ typedef void* hipDeviceptr_t; typedef enum hipFunction_attribute { - HIP_FUNC_ATTRIBUTE_MAX_THREADS_PER_BLOCK, - HIP_FUNC_ATTRIBUTE_SHARED_SIZE_BYTES, - HIP_FUNC_ATTRIBUTE_CONST_SIZE_BYTES, - HIP_FUNC_ATTRIBUTE_LOCAL_SIZE_BYTES, - HIP_FUNC_ATTRIBUTE_NUM_REGS, - HIP_FUNC_ATTRIBUTE_PTX_VERSION, - HIP_FUNC_ATTRIBUTE_BINARY_VERSION, - HIP_FUNC_ATTRIBUTE_CACHE_MODE_CA, - HIP_FUNC_ATTRIBUTE_MAX_DYNAMIC_SHARED_SIZE_BYTES, - HIP_FUNC_ATTRIBUTE_PREFERRED_SHARED_MEMORY_CARVEOUT, + HIP_FUNC_ATTRIBUTE_MAX_THREADS_PER_BLOCK, ///< The maximum number of threads per block. Depends on function and device. + HIP_FUNC_ATTRIBUTE_SHARED_SIZE_BYTES, ///< The statically allocated shared memory size in bytes per block required by the function. + HIP_FUNC_ATTRIBUTE_CONST_SIZE_BYTES, ///< The user-allocated constant memory by the function in bytes. + HIP_FUNC_ATTRIBUTE_LOCAL_SIZE_BYTES, ///< The local memory usage of each thread by this function in bytes. + HIP_FUNC_ATTRIBUTE_NUM_REGS, ///< The number of registers used by each thread of this function. + HIP_FUNC_ATTRIBUTE_PTX_VERSION, ///< PTX version + HIP_FUNC_ATTRIBUTE_BINARY_VERSION, ///< Binary version + HIP_FUNC_ATTRIBUTE_CACHE_MODE_CA, ///< Cache mode + HIP_FUNC_ATTRIBUTE_MAX_DYNAMIC_SHARED_SIZE_BYTES, ///< The maximum dynamic shared memory per block for this function in bytes. + HIP_FUNC_ATTRIBUTE_PREFERRED_SHARED_MEMORY_CARVEOUT, ///< The shared memory carveout preference in percent of the maximum shared memory. HIP_FUNC_ATTRIBUTE_MAX } hipFunction_attribute; @@ -165,38 +165,43 @@ typedef enum __HIP_NODISCARD hipError_t { #undef __HIP_NODISCARD + +/** + * hipDeviceAttribute_t + * hipDeviceAttributeUnused number: 5 + */ typedef enum hipDeviceAttribute_t { hipDeviceAttributeCudaCompatibleBegin = 0, hipDeviceAttributeEccEnabled = hipDeviceAttributeCudaCompatibleBegin, ///< Whether ECC support is enabled. hipDeviceAttributeAccessPolicyMaxWindowSize, ///< Cuda only. The maximum size of the window policy in bytes. - hipDeviceAttributeAsyncEngineCount, ///< Cuda only. Asynchronous engines number. + hipDeviceAttributeAsyncEngineCount, ///< Asynchronous engines number. hipDeviceAttributeCanMapHostMemory, ///< Whether host memory can be mapped into device address space - hipDeviceAttributeCanUseHostPointerForRegisteredMem,///< Cuda only. Device can access host registered memory + hipDeviceAttributeCanUseHostPointerForRegisteredMem,///< Device can access host registered memory ///< at the same virtual address as the CPU hipDeviceAttributeClockRate, ///< Peak clock frequency in kilohertz. hipDeviceAttributeComputeMode, ///< Compute mode that device is currently in. - hipDeviceAttributeComputePreemptionSupported, ///< Cuda only. Device supports Compute Preemption. + hipDeviceAttributeComputePreemptionSupported, ///< Device supports Compute Preemption. hipDeviceAttributeConcurrentKernels, ///< Device can possibly execute multiple kernels concurrently. hipDeviceAttributeConcurrentManagedAccess, ///< Device can coherently access managed memory concurrently with the CPU hipDeviceAttributeCooperativeLaunch, ///< Support cooperative launch hipDeviceAttributeCooperativeMultiDeviceLaunch, ///< Support cooperative launch on multiple devices - hipDeviceAttributeDeviceOverlap, ///< Cuda only. Device can concurrently copy memory and execute a kernel. + hipDeviceAttributeDeviceOverlap, ///< Device can concurrently copy memory and execute a kernel. ///< Deprecated. Use instead asyncEngineCount. hipDeviceAttributeDirectManagedMemAccessFromHost, ///< Host can directly access managed memory on ///< the device without migration - hipDeviceAttributeGlobalL1CacheSupported, ///< Cuda only. Device supports caching globals in L1 - hipDeviceAttributeHostNativeAtomicSupported, ///< Cuda only. Link between the device and the host supports native atomic operations + hipDeviceAttributeGlobalL1CacheSupported, ///< Device supports caching globals in L1 + hipDeviceAttributeHostNativeAtomicSupported, ///< Link between the device and the host supports native atomic operations hipDeviceAttributeIntegrated, ///< Device is integrated GPU hipDeviceAttributeIsMultiGpuBoard, ///< Multiple GPU devices. hipDeviceAttributeKernelExecTimeout, ///< Run time limit for kernels executed on the device hipDeviceAttributeL2CacheSize, ///< Size of L2 cache in bytes. 0 if the device doesn't have L2 cache. hipDeviceAttributeLocalL1CacheSupported, ///< caching locals in L1 is supported - hipDeviceAttributeLuid, ///< Cuda only. 8-byte locally unique identifier in 8 bytes. Undefined on TCC and non-Windows platforms - hipDeviceAttributeLuidDeviceNodeMask, ///< Cuda only. Luid device node mask. Undefined on TCC and non-Windows platforms + hipDeviceAttributeLuid, ///< 8-byte locally unique identifier in 8 bytes. Undefined on TCC and non-Windows platforms + hipDeviceAttributeLuidDeviceNodeMask, ///< Luid device node mask. Undefined on TCC and non-Windows platforms hipDeviceAttributeComputeCapabilityMajor, ///< Major compute capability version number. hipDeviceAttributeManagedMemory, ///< Device supports allocating managed memory on this system - hipDeviceAttributeMaxBlocksPerMultiProcessor, ///< Cuda only. Max block size per multiprocessor + hipDeviceAttributeMaxBlocksPerMultiProcessor, ///< Max block size per multiprocessor hipDeviceAttributeMaxBlockDimX, ///< Max block size in width. hipDeviceAttributeMaxBlockDimY, ///< Max block size in height. hipDeviceAttributeMaxBlockDimZ, ///< Max block size in depth. @@ -211,22 +216,22 @@ typedef enum hipDeviceAttribute_t { hipDeviceAttributeMaxSurfaceCubemap, ///< Cuda only. Maximum dimensions of Cubemap surface. hipDeviceAttributeMaxSurfaceCubemapLayered, ///< Cuda only. Maximum dimension of Cubemap layered surface. hipDeviceAttributeMaxTexture1DWidth, ///< Maximum size of 1D texture. - hipDeviceAttributeMaxTexture1DLayered, ///< Cuda only. Maximum dimensions of 1D layered texture. + hipDeviceAttributeMaxTexture1DLayered, ///< Maximum dimensions of 1D layered texture. hipDeviceAttributeMaxTexture1DLinear, ///< Maximum number of elements allocatable in a 1D linear texture. ///< Use cudaDeviceGetTexture1DLinearMaxWidth() instead on Cuda. - hipDeviceAttributeMaxTexture1DMipmap, ///< Cuda only. Maximum size of 1D mipmapped texture. + hipDeviceAttributeMaxTexture1DMipmap, ///< Maximum size of 1D mipmapped texture. hipDeviceAttributeMaxTexture2DWidth, ///< Maximum dimension width of 2D texture. - hipDeviceAttributeMaxTexture2DHeight, ///< Maximum dimension height of 2D texture. - hipDeviceAttributeMaxTexture2DGather, ///< Cuda only. Maximum dimensions of 2D texture if gather operations performed. - hipDeviceAttributeMaxTexture2DLayered, ///< Cuda only. Maximum dimensions of 2D layered texture. - hipDeviceAttributeMaxTexture2DLinear, ///< Cuda only. Maximum dimensions (width, height, pitch) of 2D textures bound to pitched memory. - hipDeviceAttributeMaxTexture2DMipmap, ///< Cuda only. Maximum dimensions of 2D mipmapped texture. + hipDeviceAttributeMaxTexture2DHeight, ///< Maximum dimension hight of 2D texture. + hipDeviceAttributeMaxTexture2DGather, ///< Maximum dimensions of 2D texture if gather operations performed. + hipDeviceAttributeMaxTexture2DLayered, ///< Maximum dimensions of 2D layered texture. + hipDeviceAttributeMaxTexture2DLinear, ///< Maximum dimensions (width, height, pitch) of 2D textures bound to pitched memory. + hipDeviceAttributeMaxTexture2DMipmap, ///< Maximum dimensions of 2D mipmapped texture. hipDeviceAttributeMaxTexture3DWidth, ///< Maximum dimension width of 3D texture. hipDeviceAttributeMaxTexture3DHeight, ///< Maximum dimension height of 3D texture. hipDeviceAttributeMaxTexture3DDepth, ///< Maximum dimension depth of 3D texture. - hipDeviceAttributeMaxTexture3DAlt, ///< Cuda only. Maximum dimensions of alternate 3D texture. - hipDeviceAttributeMaxTextureCubemap, ///< Cuda only. Maximum dimensions of Cubemap texture - hipDeviceAttributeMaxTextureCubemapLayered, ///< Cuda only. Maximum dimensions of Cubemap layered texture. + hipDeviceAttributeMaxTexture3DAlt, ///< Maximum dimensions of alternate 3D texture. + hipDeviceAttributeMaxTextureCubemap, ///< Maximum dimensions of Cubemap texture + hipDeviceAttributeMaxTextureCubemapLayered, ///< Maximum dimensions of Cubemap layered texture. hipDeviceAttributeMaxThreadsDim, ///< Maximum dimension of a block hipDeviceAttributeMaxThreadsPerBlock, ///< Maximum number of threads per block. hipDeviceAttributeMaxThreadsPerMultiProcessor, ///< Maximum resident threads per multiprocessor. @@ -234,45 +239,47 @@ typedef enum hipDeviceAttribute_t { hipDeviceAttributeMemoryBusWidth, ///< Global memory bus width in bits. hipDeviceAttributeMemoryClockRate, ///< Peak memory clock frequency in kilohertz. hipDeviceAttributeComputeCapabilityMinor, ///< Minor compute capability version number. - hipDeviceAttributeMultiGpuBoardGroupID, ///< Cuda only. Unique ID of device group on the same multi-GPU board + hipDeviceAttributeMultiGpuBoardGroupID, ///< Unique ID of device group on the same multi-GPU board hipDeviceAttributeMultiprocessorCount, ///< Number of multiprocessors on the device. - hipDeviceAttributeName, ///< Device name. + hipDeviceAttributeUnused1, ///< Previously hipDeviceAttributeName hipDeviceAttributePageableMemoryAccess, ///< Device supports coherently accessing pageable memory ///< without calling hipHostRegister on it hipDeviceAttributePageableMemoryAccessUsesHostPageTables, ///< Device accesses pageable memory via the host's page tables hipDeviceAttributePciBusId, ///< PCI Bus ID. hipDeviceAttributePciDeviceId, ///< PCI Device ID. hipDeviceAttributePciDomainID, ///< PCI Domain ID. - hipDeviceAttributePersistingL2CacheMaxSize, ///< Cuda11 only. Maximum l2 persisting lines capacity in bytes + hipDeviceAttributePersistingL2CacheMaxSize, ///< Maximum l2 persisting lines capacity in bytes hipDeviceAttributeMaxRegistersPerBlock, ///< 32-bit registers available to a thread block. This number is shared ///< by all thread blocks simultaneously resident on a multiprocessor. hipDeviceAttributeMaxRegistersPerMultiprocessor, ///< 32-bit registers available per block. - hipDeviceAttributeReservedSharedMemPerBlock, ///< Cuda11 only. Shared memory reserved by CUDA driver per block. + hipDeviceAttributeReservedSharedMemPerBlock, ///< Shared memory reserved by CUDA driver per block. hipDeviceAttributeMaxSharedMemoryPerBlock, ///< Maximum shared memory available per block in bytes. - hipDeviceAttributeSharedMemPerBlockOptin, ///< Cuda only. Maximum shared memory per block usable by special opt in. - hipDeviceAttributeSharedMemPerMultiprocessor, ///< Cuda only. Shared memory available per multiprocessor. + hipDeviceAttributeSharedMemPerBlockOptin, ///< Maximum shared memory per block usable by special opt in. + hipDeviceAttributeSharedMemPerMultiprocessor, ///< Shared memory available per multiprocessor. hipDeviceAttributeSingleToDoublePrecisionPerfRatio, ///< Cuda only. Performance ratio of single precision to double precision. - hipDeviceAttributeStreamPrioritiesSupported, ///< Cuda only. Whether to support stream priorities. - hipDeviceAttributeSurfaceAlignment, ///< Cuda only. Alignment requirement for surfaces + hipDeviceAttributeStreamPrioritiesSupported, ///< Whether to support stream priorities. + hipDeviceAttributeSurfaceAlignment, ///< Alignment requirement for surfaces hipDeviceAttributeTccDriver, ///< Cuda only. Whether device is a Tesla device using TCC driver hipDeviceAttributeTextureAlignment, ///< Alignment requirement for textures hipDeviceAttributeTexturePitchAlignment, ///< Pitch alignment requirement for 2D texture references bound to pitched memory; hipDeviceAttributeTotalConstantMemory, ///< Constant memory size in bytes. - hipDeviceAttributeTotalGlobalMem, ///< Global memory available on device. + hipDeviceAttributeTotalGlobalMem, ///< Global memory available on devicice. hipDeviceAttributeUnifiedAddressing, ///< Cuda only. An unified address space shared with the host. - hipDeviceAttributeUuid, ///< Cuda only. Unique ID in 16 byte. + hipDeviceAttributeUnused2, ///< Previously hipDeviceAttributeUuid hipDeviceAttributeWarpSize, ///< Warp size in threads. hipDeviceAttributeMemoryPoolsSupported, ///< Device supports HIP Stream Ordered Memory Allocator hipDeviceAttributeVirtualMemoryManagementSupported, ///< Device supports HIP virtual memory management + hipDeviceAttributeHostRegisterSupported, ///< Can device support host memory registration via hipHostRegister + hipDeviceAttributeMemoryPoolSupportedHandleTypes, ///< Supported handle mask for HIP Stream Ordered Memory Allocator hipDeviceAttributeCudaCompatibleEnd = 9999, hipDeviceAttributeAmdSpecificBegin = 10000, hipDeviceAttributeClockInstructionRate = hipDeviceAttributeAmdSpecificBegin, ///< Frequency in khz of the timer used by the device-side "clock*" - hipDeviceAttributeArch, ///< Device architecture + hipDeviceAttributeUnused3, ///< Previously hipDeviceAttributeArch hipDeviceAttributeMaxSharedMemoryPerMultiprocessor, ///< Maximum Shared Memory PerMultiprocessor. - hipDeviceAttributeGcnArch, ///< Device gcn architecture - hipDeviceAttributeGcnArchName, ///< Device gcnArch name in 256 bytes + hipDeviceAttributeUnused4, ///< Previously hipDeviceAttributeGcnArch + hipDeviceAttributeUnused5, ///< Previously hipDeviceAttributeGcnArchName hipDeviceAttributeHdpMemFlushCntl, ///< Address of the HDP_MEM_COHERENCY_FLUSH_CNTL register hipDeviceAttributeHdpRegFlushCntl, ///< Address of the HDP_REG_COHERENCY_FLUSH_CNTL register hipDeviceAttributeCooperativeMultiDeviceUnmatchedFunc, ///< Supports cooperative launch on multiple @@ -298,6 +305,190 @@ typedef enum hipDeviceAttribute_t { // Extended attributes for vendors } hipDeviceAttribute_t; +/** + * hipDeviceArch_t + * + */ +typedef struct { + // 32-bit Atomics + unsigned hasGlobalInt32Atomics : 1; ///< 32-bit integer atomics for global memory. + unsigned hasGlobalFloatAtomicExch : 1; ///< 32-bit float atomic exch for global memory. + unsigned hasSharedInt32Atomics : 1; ///< 32-bit integer atomics for shared memory. + unsigned hasSharedFloatAtomicExch : 1; ///< 32-bit float atomic exch for shared memory. + unsigned hasFloatAtomicAdd : 1; ///< 32-bit float atomic add in global and shared memory. + + // 64-bit Atomics + unsigned hasGlobalInt64Atomics : 1; ///< 64-bit integer atomics for global memory. + unsigned hasSharedInt64Atomics : 1; ///< 64-bit integer atomics for shared memory. + + // Doubles + unsigned hasDoubles : 1; ///< Double-precision floating point. + + // Warp cross-lane operations + unsigned hasWarpVote : 1; ///< Warp vote instructions (__any, __all). + unsigned hasWarpBallot : 1; ///< Warp ballot instructions (__ballot). + unsigned hasWarpShuffle : 1; ///< Warp shuffle operations. (__shfl_*). + unsigned hasFunnelShift : 1; ///< Funnel two words into one with shift&mask caps. + + // Sync + unsigned hasThreadFenceSystem : 1; ///< __threadfence_system. + unsigned hasSyncThreadsExt : 1; ///< __syncthreads_count, syncthreads_and, syncthreads_or. + + // Misc + unsigned hasSurfaceFuncs : 1; ///< Surface functions. + unsigned has3dGrid : 1; ///< Grid and group dims are 3D (rather than 2D). + unsigned hasDynamicParallelism : 1; ///< Dynamic parallelism. +} hipDeviceArch_t; + +typedef struct hipUUID_t { + char bytes[16]; +} hipUUID; + + +/** + * hipDeviceProp + * + */ +typedef struct hipDeviceProp_t { + char name[256]; ///< Device name. + hipUUID uuid; ///< UUID of a device + char luid[8]; ///< 8-byte unique identifier. Only valid on windows + unsigned int luidDeviceNodeMask; ///< LUID node mask + size_t totalGlobalMem; ///< Size of global memory region (in bytes). + size_t sharedMemPerBlock; ///< Size of shared memory per block (in bytes). + int regsPerBlock; ///< Registers per block. + int warpSize; ///< Warp size. + size_t memPitch; ///< Maximum pitch in bytes allowed by memory copies + ///< pitched memory + int maxThreadsPerBlock; ///< Max work items per work group or workgroup max size. + int maxThreadsDim[3]; ///< Max number of threads in each dimension (XYZ) of a block. + int maxGridSize[3]; ///< Max grid dimensions (XYZ). + int clockRate; ///< Max clock frequency of the multiProcessors in khz. + size_t totalConstMem; ///< Size of shared constant memory region on the device + ///< (in bytes). + int major; ///< Major compute capability. On HCC, this is an approximation and features may + ///< differ from CUDA CC. See the arch feature flags for portable ways to query + ///< feature caps. + int minor; ///< Minor compute capability. On HCC, this is an approximation and features may + ///< differ from CUDA CC. See the arch feature flags for portable ways to query + ///< feature caps. + size_t textureAlignment; ///< Alignment requirement for textures + size_t texturePitchAlignment; ///< Pitch alignment requirement for texture references bound to + int deviceOverlap; ///< Deprecated. Use asyncEngineCount instead + int multiProcessorCount; ///< Number of multi-processors (compute units). + int kernelExecTimeoutEnabled; ///< Run time limit for kernels executed on the device + int integrated; ///< APU vs dGPU + int canMapHostMemory; ///< Check whether HIP can map host memory + int computeMode; ///< Compute mode. + int maxTexture1D; ///< Maximum number of elements in 1D images + int maxTexture1DMipmap; ///< Maximum 1D mipmap texture size + int maxTexture1DLinear; ///< Maximum size for 1D textures bound to linear memory + int maxTexture2D[2]; ///< Maximum dimensions (width, height) of 2D images, in image elements + int maxTexture2DMipmap[2]; ///< Maximum number of elements in 2D array mipmap of images + int maxTexture2DLinear[3]; ///< Maximum 2D tex dimensions if tex are bound to pitched memory + int maxTexture2DGather[2]; ///< Maximum 2D tex dimensions if gather has to be performed + int maxTexture3D[3]; ///< Maximum dimensions (width, height, depth) of 3D images, in image + ///< elements + int maxTexture3DAlt[3]; ///< Maximum alternate 3D texture dims + int maxTextureCubemap; ///< Maximum cubemap texture dims + int maxTexture1DLayered[2]; ///< Maximum number of elements in 1D array images + int maxTexture2DLayered[3]; ///< Maximum number of elements in 2D array images + int maxTextureCubemapLayered[2]; ///< Maximum cubemaps layered texture dims + int maxSurface1D; ///< Maximum 1D surface size + int maxSurface2D[2]; ///< Maximum 2D surface size + int maxSurface3D[3]; ///< Maximum 3D surface size + int maxSurface1DLayered[2]; ///< Maximum 1D layered surface size + int maxSurface2DLayered[3]; ///< Maximum 2D layared surface size + int maxSurfaceCubemap; ///< Maximum cubemap surface size + int maxSurfaceCubemapLayered[2]; ///< Maximum cubemap layered surface size + size_t surfaceAlignment; ///< Alignment requirement for surface + int concurrentKernels; ///< Device can possibly execute multiple kernels concurrently. + int ECCEnabled; ///< Device has ECC support enabled + int pciBusID; ///< PCI Bus ID. + int pciDeviceID; ///< PCI Device ID. + int pciDomainID; ///< PCI Domain ID + int tccDriver; ///< 1:If device is Tesla device using TCC driver, else 0 + int asyncEngineCount; ///< Number of async engines + int unifiedAddressing; ///< Does device and host share unified address space + int memoryClockRate; ///< Max global memory clock frequency in khz. + int memoryBusWidth; ///< Global memory bus width in bits. + int l2CacheSize; ///< L2 cache size. + int persistingL2CacheMaxSize; ///< Device's max L2 persisting lines in bytes + int maxThreadsPerMultiProcessor; ///< Maximum resident threads per multi-processor. + int streamPrioritiesSupported; ///< Device supports stream priority + int globalL1CacheSupported; ///< Indicates globals are cached in L1 + int localL1CacheSupported; ///< Locals are cahced in L1 + size_t sharedMemPerMultiprocessor; ///< Amount of shared memory available per multiprocessor. + int regsPerMultiprocessor; ///< registers available per multiprocessor + int managedMemory; ///< Device supports allocating managed memory on this system + int isMultiGpuBoard; ///< 1 if device is on a multi-GPU board, 0 if not. + int multiGpuBoardGroupID; ///< Unique identifier for a group of devices on same multiboard GPU + int hostNativeAtomicSupported; ///< Link between host and device supports native atomics + int singleToDoublePrecisionPerfRatio; ///< Deprecated. CUDA only. + int pageableMemoryAccess; ///< Device supports coherently accessing pageable memory + ///< without calling hipHostRegister on it + int concurrentManagedAccess; ///< Device can coherently access managed memory concurrently with + ///< the CPU + int computePreemptionSupported; ///< Is compute preemption supported on the device + int canUseHostPointerForRegisteredMem; ///< Device can access host registered memory with same + ///< address as the host + int cooperativeLaunch; ///< HIP device supports cooperative launch + int cooperativeMultiDeviceLaunch; ///< HIP device supports cooperative launch on multiple + ///< devices + size_t + sharedMemPerBlockOptin; ///< Per device m ax shared mem per block usable by special opt in + int pageableMemoryAccessUsesHostPageTables; ///< Device accesses pageable memory via the host's + ///< page tables + int directManagedMemAccessFromHost; ///< Host can directly access managed memory on the device + ///< without migration + int maxBlocksPerMultiProcessor; ///< Max number of blocks on CU + int accessPolicyMaxWindowSize; ///< Max value of access policy window + size_t reservedSharedMemPerBlock; ///< Shared memory reserved by driver per block + int hostRegisterSupported; ///< Device supports hipHostRegister + int sparseHipArraySupported; ///< Indicates if device supports sparse hip arrays + int hostRegisterReadOnlySupported; ///< Device supports using the hipHostRegisterReadOnly flag + ///< with hipHostRegistger + int timelineSemaphoreInteropSupported; ///< Indicates external timeline semaphore support + int memoryPoolsSupported; ///< Indicates if device supports hipMallocAsync and hipMemPool APIs + int gpuDirectRDMASupported; ///< Indicates device support of RDMA APIs + unsigned int gpuDirectRDMAFlushWritesOptions; ///< Bitmask to be interpreted according to + ///< hipFlushGPUDirectRDMAWritesOptions + int gpuDirectRDMAWritesOrdering; ///< value of hipGPUDirectRDMAWritesOrdering + unsigned int + memoryPoolSupportedHandleTypes; ///< Bitmask of handle types support with mempool based IPC + int deferredMappingHipArraySupported; ///< Device supports deferred mapping HIP arrays and HIP + ///< mipmapped arrays + int ipcEventSupported; ///< Device supports IPC events + int clusterLaunch; ///< Device supports cluster launch + int unifiedFunctionPointers; ///< Indicates device supports unified function pointers + int reserved[63]; ///< CUDA Reserved. + + int hipReserved[32]; ///< Reserved for adding new entries for HIP/CUDA. + + /* HIP Only struct members */ + char gcnArchName[256]; ///< AMD GCN Arch Name. HIP Only. + size_t maxSharedMemoryPerMultiProcessor; ///< Maximum Shared Memory Per CU. HIP Only. + int clockInstructionRate; ///< Frequency in khz of the timer used by the device-side "clock*" + ///< instructions. New for HIP. + hipDeviceArch_t arch; ///< Architectural feature flags. New for HIP. + unsigned int* hdpMemFlushCntl; ///< Addres of HDP_MEM_COHERENCY_FLUSH_CNTL register + unsigned int* hdpRegFlushCntl; ///< Addres of HDP_REG_COHERENCY_FLUSH_CNTL register + int cooperativeMultiDeviceUnmatchedFunc; ///< HIP device supports cooperative launch on + ///< multiple + /// devices with unmatched functions + int cooperativeMultiDeviceUnmatchedGridDim; ///< HIP device supports cooperative launch on + ///< multiple + /// devices with unmatched grid dimensions + int cooperativeMultiDeviceUnmatchedBlockDim; ///< HIP device supports cooperative launch on + ///< multiple + /// devices with unmatched block dimensions + int cooperativeMultiDeviceUnmatchedSharedMem; ///< HIP device supports cooperative launch on + ///< multiple + /// devices with unmatched shared memories + int isLargeBar; ///< 1: if it is a large PCI bar device, else 0 + int asicRevision; ///< Revision of the GPU in this device +} hipDeviceProp_t; + //Flags that can be used with hipStreamCreateWithFlags. /** Default stream creation flags. These are used with hipStreamCreate().*/ #define hipStreamDefault 0x00 @@ -410,6 +601,8 @@ typedef hipError_t (HIP_API_CALL *HIP_HIPRUNTIMEGETVERSION) (int *); typedef hipError_t (HIP_API_CALL *HIP_HIPSTREAMCREATE) (hipStream_t *, unsigned int); typedef hipError_t (HIP_API_CALL *HIP_HIPSTREAMDESTROY) (hipStream_t); typedef hipError_t (HIP_API_CALL *HIP_HIPSTREAMSYNCHRONIZE) (hipStream_t); +typedef hipError_t (HIP_API_CALL *HIP_HIPGETDEVICEPROPERTIES) (hipDeviceProp_t *, hipDevice_t); +typedef hipError_t (HIP_API_CALL *HIP_HIPMODULEOCCUPANCYMAXACTIVEBLOCKSPERMULTIPROCESSOR) (int *, hipFunction_t, int, size_t); typedef struct hc_hip_lib { @@ -453,6 +646,8 @@ typedef struct hc_hip_lib HIP_HIPSTREAMCREATE hipStreamCreate; HIP_HIPSTREAMDESTROY hipStreamDestroy; HIP_HIPSTREAMSYNCHRONIZE hipStreamSynchronize; + HIP_HIPGETDEVICEPROPERTIES hipGetDeviceProperties; + HIP_HIPMODULEOCCUPANCYMAXACTIVEBLOCKSPERMULTIPROCESSOR hipModuleOccupancyMaxActiveBlocksPerMultiprocessor; } hc_hip_lib_t; @@ -498,5 +693,7 @@ int hc_hipRuntimeGetVersion (void *hashcat_ctx, int *runtimeVersion); int hc_hipStreamCreate (void *hashcat_ctx, hipStream_t *phStream, unsigned int Flags); int hc_hipStreamDestroy (void *hashcat_ctx, hipStream_t hStream); int hc_hipStreamSynchronize (void *hashcat_ctx, hipStream_t hStream); +int hc_hipGetDeviceProperties (void *hashcat_ctx, hipDeviceProp_t *prop, hipDevice_t dev); +int hc_hipModuleOccupancyMaxActiveBlocksPerMultiprocessor (void *hashcat_ctx, int *numBlocks, hipFunction_t f, int blockSize, size_t dynSharedMemPerBlk); #endif // HC_EXT_HIP_H diff --git a/include/ext_nvml.h b/include/ext_nvml.h index 02c5d490c..0215e1a32 100644 --- a/include/ext_nvml.h +++ b/include/ext_nvml.h @@ -161,6 +161,18 @@ typedef enum nvmlGom_enum * */ #define nvmlClocksThrottleReasonNone 0x0000000000000000LL +/** + * Memory allocation information for a device (v1). + * The total amount is equal to the sum of the amounts of free and used memory. + */ +typedef struct nvmlMemory_st +{ + unsigned long long total; //!< Total physical device memory (in bytes) + unsigned long long free; //!< Unallocated device memory (in bytes) + unsigned long long used; //!< Sum of Reserved and Allocated device memory (in bytes). + //!< Note that the driver/GPU always sets aside a small amount of memory for bookkeeping +} nvmlMemory_t; + /* * End of declarations from nvml.h **/ @@ -191,6 +203,7 @@ typedef nvmlReturn_t (*NVML_API_CALL NVML_DEVICE_GET_SUPPORTEDCLOCKSTHROTTLEREAS typedef nvmlReturn_t (*NVML_API_CALL NVML_DEVICE_SET_COMPUTEMODE) (nvmlDevice_t, nvmlComputeMode_t); typedef nvmlReturn_t (*NVML_API_CALL NVML_DEVICE_SET_OPERATIONMODE) (nvmlDevice_t, nvmlGpuOperationMode_t); typedef nvmlReturn_t (*NVML_API_CALL NVML_DEVICE_GET_PCIINFO) (nvmlDevice_t, nvmlPciInfo_t *); +typedef nvmlReturn_t (*NVML_API_CALL NVML_DEVICE_GET_MEMORYINFO) (nvmlDevice_t, nvmlMemory_t *); typedef struct hm_nvml_lib { @@ -212,6 +225,7 @@ typedef struct hm_nvml_lib NVML_DEVICE_GET_CURRENTCLOCKSTHROTTLEREASONS nvmlDeviceGetCurrentClocksThrottleReasons; NVML_DEVICE_GET_SUPPORTEDCLOCKSTHROTTLEREASONS nvmlDeviceGetSupportedClocksThrottleReasons; NVML_DEVICE_GET_PCIINFO nvmlDeviceGetPciInfo; + NVML_DEVICE_GET_MEMORYINFO nvmlDeviceGetMemoryInfo; } hm_nvml_lib_t; @@ -232,5 +246,6 @@ int hm_NVML_nvmlDeviceGetClockInfo (void *hashcat_ctx, nvmlDevice_t device, nvml int hm_NVML_nvmlDeviceGetTemperatureThreshold (void *hashcat_ctx, nvmlDevice_t device, nvmlTemperatureThresholds_t thresholdType, unsigned int *temp); int hm_NVML_nvmlDeviceGetCurrPcieLinkWidth (void *hashcat_ctx, nvmlDevice_t device, unsigned int *currLinkWidth); int hm_NVML_nvmlDeviceGetPciInfo (void *hashcat_ctx, nvmlDevice_t device, nvmlPciInfo_t *pci); +int hm_NVML_nvmlDeviceGetMemoryInfo (void *hashcat_ctx, nvmlDevice_t device, nvmlMemory_t *mem); #endif // HC_NVML_H diff --git a/include/ext_sysfs_amdgpu.h b/include/ext_sysfs_amdgpu.h index 50c0dc569..d381d9cec 100644 --- a/include/ext_sysfs_amdgpu.h +++ b/include/ext_sysfs_amdgpu.h @@ -34,5 +34,6 @@ int hm_SYSFS_AMDGPU_get_pp_dpm_sclk (void *hashcat_ctx, const int backend_device int hm_SYSFS_AMDGPU_get_pp_dpm_mclk (void *hashcat_ctx, const int backend_device_idx, int *val); int hm_SYSFS_AMDGPU_get_pp_dpm_pcie (void *hashcat_ctx, const int backend_device_idx, int *val); int hm_SYSFS_AMDGPU_get_gpu_busy_percent (void *hashcat_ctx, const int backend_device_idx, int *val); +int hm_SYSFS_AMDGPU_get_mem_info_vram_used (void *hashcat_ctx, const int backend_device_idx, u64 *val); #endif // HC_EXT_SYSFS_AMDGPU_H diff --git a/include/hashes.h b/include/hashes.h index 9daa87583..35b5a1d42 100644 --- a/include/hashes.h +++ b/include/hashes.h @@ -25,6 +25,7 @@ int hashes_init_stage1 (hashcat_ctx_t *hashcat_ctx); int hashes_init_stage2 (hashcat_ctx_t *hashcat_ctx); int hashes_init_stage3 (hashcat_ctx_t *hashcat_ctx); int hashes_init_stage4 (hashcat_ctx_t *hashcat_ctx); +int hashes_init_stage5 (hashcat_ctx_t *hashcat_ctx); int hashes_init_selftest (hashcat_ctx_t *hashcat_ctx); int hashes_init_benchmark (hashcat_ctx_t *hashcat_ctx); int hashes_init_zerohash (hashcat_ctx_t *hashcat_ctx); diff --git a/include/hwmon.h b/include/hwmon.h index 545e22b2d..3d4bd7940 100644 --- a/include/hwmon.h +++ b/include/hwmon.h @@ -24,6 +24,7 @@ int hm_get_utilization_with_devices_idx (hashcat_ctx_t *hashcat_ctx, cons int hm_get_memoryspeed_with_devices_idx (hashcat_ctx_t *hashcat_ctx, const int backend_device_idx); int hm_get_corespeed_with_devices_idx (hashcat_ctx_t *hashcat_ctx, const int backend_device_idx); int hm_get_throttle_with_devices_idx (hashcat_ctx_t *hashcat_ctx, const int backend_device_idx); +u64 hm_get_memoryused_with_devices_idx (hashcat_ctx_t *hashcat_ctx, const int backend_device_idx); int hwmon_ctx_init (hashcat_ctx_t *hashcat_ctx); void hwmon_ctx_destroy (hashcat_ctx_t *hashcat_ctx); diff --git a/include/modules.h b/include/modules.h index 9768c11de..713b3f46f 100644 --- a/include/modules.h +++ b/include/modules.h @@ -20,7 +20,7 @@ u32 module_dgst_pos2 (MAYBE_UNUSED const hashconfig_t *ha u32 module_dgst_pos3 (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra); u32 module_dgst_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra); u64 module_esalt_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra); -const char *module_extra_tuningdb_block (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra); +const char *module_extra_tuningdb_block (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, const backend_ctx_t *backend_ctx, MAYBE_UNUSED const hashes_t *hashes, const u32 device_id, const u32 kernel_accel); u32 module_forced_outfile_format (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra); u32 module_hash_category (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra); const char *module_hash_name (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra); diff --git a/include/shared.h b/include/shared.h index f1660c58e..ae968281c 100644 --- a/include/shared.h +++ b/include/shared.h @@ -46,7 +46,7 @@ void naive_escape (char *s, size_t s_max, const char key_char, const char escape __attribute__ ((format (printf, 2, 3))) int hc_asprintf (char **strp, const char *fmt, ...); -void setup_environment_variables (const folder_config_t *folder_config); +void setup_environment_variables (const folder_config_t *folder_config, const user_options_t *user_options); void setup_umask (void); void setup_seeding (const bool rp_gen_seed_chgd, const u32 rp_gen_seed); @@ -106,10 +106,23 @@ int input_tokenizer (const u8 *input_buf, const int input_len, hc_token_t *token int extract_dynamicx_hash (const u8 *input_buf, const int input_len, u8 **output_buf, int *output_len); +int get_current_arch(); + #if defined (__APPLE__) bool is_apple_silicon (void); #endif char *file_to_buffer (const char *filename); +bool check_file_suffix (const char *file, const char *suffix); +bool remove_file_suffix (char *file, const char *suffix); + +int suppress_stderr (void); +void restore_stderr (int saved_fd); + +bool get_free_memory (u64 *free_mem); + +u32 previous_power_of_two (const u32 x); +u32 next_power_of_two (const u32 x); + #endif // HC_SHARED_H diff --git a/include/types.h b/include/types.h index e6ea946f9..cd3331234 100644 --- a/include/types.h +++ b/include/types.h @@ -103,9 +103,17 @@ typedef enum event_identifier EVENT_AUTODETECT_STARTING = 0x00000101, EVENT_AUTOTUNE_FINISHED = 0x00000000, EVENT_AUTOTUNE_STARTING = 0x00000001, + EVENT_BACKEND_RUNTIMES_INIT_POST = 0x00000130, + EVENT_BACKEND_RUNTIMES_INIT_PRE = 0x00000131, + EVENT_BACKEND_DEVICES_INIT_POST = 0x00000132, + EVENT_BACKEND_DEVICES_INIT_PRE = 0x00000133, EVENT_BITMAP_INIT_POST = 0x00000010, EVENT_BITMAP_INIT_PRE = 0x00000011, EVENT_BITMAP_FINAL_OVERFLOW = 0x00000012, + EVENT_BRIDGES_INIT_POST = 0x00000120, + EVENT_BRIDGES_INIT_PRE = 0x00000121, + EVENT_BRIDGES_SALT_POST = 0x00000122, + EVENT_BRIDGES_SALT_PRE = 0x00000123, EVENT_CALCULATED_WORDS_BASE = 0x00000020, EVENT_CRACKER_FINISHED = 0x00000030, EVENT_CRACKER_HASH_CRACKED = 0x00000031, @@ -183,6 +191,7 @@ typedef enum vendor_id VENDOR_ID_POCL = (1U << 6), VENDOR_ID_AMD_USE_INTEL = (1U << 7), VENDOR_ID_AMD_USE_HIP = (1U << 8), + VENDOR_ID_MICROSOFT = (1U << 9), VENDOR_ID_GENERIC = (1U << 31) } vendor_id_t; @@ -438,41 +447,78 @@ typedef enum opts_type OPTS_TYPE_MT_HEX = (1ULL << 27), // mask is always in hex OPTS_TYPE_HASH_COPY = (1ULL << 28), OPTS_TYPE_HASH_SPLIT = (1ULL << 29), - OPTS_TYPE_LOOP_PREPARE = (1ULL << 30), // a kernel which is called each time before _loop kernel started. + OPTS_TYPE_INIT = (1ULL << 30), // Added v7, since bridge can fully replace these, but are set by default automatically + OPTS_TYPE_LOOP = (1ULL << 31), // Added v7, since bridge can fully replace these, but are set by default automatically + OPTS_TYPE_COMP = (1ULL << 32), // Added v7, since bridge can fully replace these, but are set by default automatically + OPTS_TYPE_LOOP_PREPARE = (1ULL << 33), // a kernel which is called each time before _loop kernel started. // like a hook12 kernel but without extra buffers. - OPTS_TYPE_LOOP_EXTENDED = (1ULL << 31), // a kernel which is called each time normal _loop kernel finished. + OPTS_TYPE_LOOP_EXTENDED = (1ULL << 34), // a kernel which is called each time normal _loop kernel finished. // but unlike a hook kernel this kernel is called for every _loop iteration offset - OPTS_TYPE_HOOK12 = (1ULL << 32), - OPTS_TYPE_HOOK23 = (1ULL << 33), - OPTS_TYPE_INIT2 = (1ULL << 34), - OPTS_TYPE_LOOP2_PREPARE = (1ULL << 35), // same as OPTS_TYPE_LOOP_PREPARE but for loop2 kernel - OPTS_TYPE_LOOP2 = (1ULL << 36), - OPTS_TYPE_AUX1 = (1ULL << 37), - OPTS_TYPE_AUX2 = (1ULL << 38), - OPTS_TYPE_AUX3 = (1ULL << 39), - OPTS_TYPE_AUX4 = (1ULL << 40), - OPTS_TYPE_BINARY_HASHFILE = (1ULL << 41), + OPTS_TYPE_HOOK12 = (1ULL << 35), + OPTS_TYPE_HOOK23 = (1ULL << 36), + OPTS_TYPE_INIT2 = (1ULL << 37), + OPTS_TYPE_LOOP2_PREPARE = (1ULL << 38), // same as OPTS_TYPE_LOOP_PREPARE but for loop2 kernel + OPTS_TYPE_LOOP2 = (1ULL << 39), + OPTS_TYPE_AUX1 = (1ULL << 40), + OPTS_TYPE_AUX2 = (1ULL << 41), + OPTS_TYPE_AUX3 = (1ULL << 42), + OPTS_TYPE_AUX4 = (1ULL << 43), + OPTS_TYPE_BINARY_HASHFILE = (1ULL << 44), OPTS_TYPE_BINARY_HASHFILE_OPTIONAL - = (1ULL << 42), // this allows us to not enforce the use of a binary file. requires OPTS_TYPE_BINARY_HASHFILE set to be effective. - OPTS_TYPE_PT_ADD06 = (1ULL << 43), - OPTS_TYPE_KEYBOARD_MAPPING = (1ULL << 44), - OPTS_TYPE_DEEP_COMP_KERNEL = (1ULL << 45), // if we have to iterate through each hash inside the comp kernel, for example if each hash has to be decrypted separately - OPTS_TYPE_TM_KERNEL = (1ULL << 46), - OPTS_TYPE_SUGGEST_KG = (1ULL << 47), // suggest keep guessing for modules the user maybe wants to use --keep-guessing - OPTS_TYPE_COPY_TMPS = (1ULL << 48), // if we want to use data from tmps buffer (for example get the PMK in WPA) - OPTS_TYPE_POTFILE_NOPASS = (1ULL << 49), // sometimes the password should not be printed to potfile - OPTS_TYPE_DYNAMIC_SHARED = (1ULL << 50), // use dynamic shared memory (note: needs special kernel changes) - OPTS_TYPE_SELF_TEST_DISABLE = (1ULL << 51), // some algos use JiT in combinations with a salt or create too much startup time - OPTS_TYPE_MP_MULTI_DISABLE = (1ULL << 52), // do not multiply the kernel-accel with the multiprocessor count per device to allow more fine-tuned workload settings - OPTS_TYPE_NATIVE_THREADS = (1ULL << 53), // forces "native" thread count: CPU=1, GPU-Intel=8, GPU-AMD=64 (wavefront), GPU-NV=32 (warps) - OPTS_TYPE_MAXIMUM_THREADS = (1ULL << 54), // disable else branch in pre-compilation thread count optimization setting - OPTS_TYPE_POST_AMP_UTF16LE = (1ULL << 55), // run the utf8 to utf16le conversion kernel after they have been processed from amplifiers + = (1ULL << 45), // this allows us to not enforce the use of a binary file. requires OPTS_TYPE_BINARY_HASHFILE set to be effective. + OPTS_TYPE_PT_ADD06 = (1ULL << 46), + OPTS_TYPE_KEYBOARD_MAPPING = (1ULL << 47), + OPTS_TYPE_DEEP_COMP_KERNEL = (1ULL << 48), // if we have to iterate through each hash inside the comp kernel, for example if each hash has to be decrypted separately + OPTS_TYPE_TM_KERNEL = (1ULL << 49), + OPTS_TYPE_SUGGEST_KG = (1ULL << 50), // suggest keep guessing for modules the user maybe wants to use --keep-guessing + OPTS_TYPE_COPY_TMPS = (1ULL << 51), // if we want to use data from tmps buffer (for example get the PMK in WPA) + OPTS_TYPE_POTFILE_NOPASS = (1ULL << 52), // sometimes the password should not be printed to potfile + OPTS_TYPE_DYNAMIC_SHARED = (1ULL << 53), // use dynamic shared memory (note: needs special kernel changes) + OPTS_TYPE_SELF_TEST_DISABLE = (1ULL << 54), // some algos use JiT in combinations with a salt or create too much startup time + OPTS_TYPE_MP_MULTI_DISABLE = (1ULL << 55), // do not multiply the kernel-accel with the multiprocessor count per device to allow more fine-tuned workload settings + OPTS_TYPE_NATIVE_THREADS = (1ULL << 56), // forces "native" thread count: CPU=1, GPU-Intel=8, GPU-AMD=64 (wavefront), GPU-NV=32 (warps) + OPTS_TYPE_MAXIMUM_THREADS = (1ULL << 57), // disable else branch in pre-compilation thread count optimization setting + OPTS_TYPE_POST_AMP_UTF16LE = (1ULL << 58), // run the utf8 to utf16le conversion kernel after they have been processed from amplifiers OPTS_TYPE_AUTODETECT_DISABLE - = (1ULL << 56), // skip autodetect engine - OPTS_TYPE_STOCK_MODULE = (1ULL << 57), // module included with hashcat default distribution + = (1ULL << 59), // skip autodetect engine + OPTS_TYPE_STOCK_MODULE = (1ULL << 60), // module included with hashcat default distribution + OPTS_TYPE_MULTIHASH_DESPITE_ESALT + = (1ULL << 61), // overrule multihash cracking check same salt but not same esalt } opts_type_t; +typedef enum bridge_type +{ + BRIDGE_TYPE_NONE = 0, // no bridge support + BRIDGE_TYPE_MATCH_TUNINGS = (1ULL << 1), // Disables autotune and adjusts -n, -u and -T for the backend device according to match bridge dimensions + BRIDGE_TYPE_UPDATE_SELFTEST = (1ULL << 2), // updates the selftest configured in the module. Can be useful for generic hash modes such as the python one + + BRIDGE_TYPE_LAUNCH_INIT = (1ULL << 10), // attention! not yet implemented + BRIDGE_TYPE_LAUNCH_LOOP = (1ULL << 11), + BRIDGE_TYPE_LAUNCH_LOOP2 = (1ULL << 12), + BRIDGE_TYPE_LAUNCH_COMP = (1ULL << 13), // attention! not yet implemented + + // BRIDGE_TYPE_REPLACE_* is like + // BRIDGE_TYPE_LAUNCH_*, but + // deactivates KERN_RUN INIT/LOOP/COMP + + BRIDGE_TYPE_REPLACE_INIT = (1ULL << 20), // attention! not yet implemented + BRIDGE_TYPE_REPLACE_LOOP = (1ULL << 21), + BRIDGE_TYPE_REPLACE_LOOP2 = (1ULL << 22), + BRIDGE_TYPE_REPLACE_COMP = (1ULL << 23), // attention! not yet implemented + + BRIDGE_TYPE_FORCE_WORKITEMS_001 = (1ULL << 30), // This override the workitem counts reported from the bridge device + BRIDGE_TYPE_FORCE_WORKITEMS_002 = (1ULL << 31), // Can be useful if this is not a physical hardware + BRIDGE_TYPE_FORCE_WORKITEMS_004 = (1ULL << 32), + BRIDGE_TYPE_FORCE_WORKITEMS_008 = (1ULL << 33), + BRIDGE_TYPE_FORCE_WORKITEMS_016 = (1ULL << 34), + BRIDGE_TYPE_FORCE_WORKITEMS_032 = (1ULL << 35), + BRIDGE_TYPE_FORCE_WORKITEMS_064 = (1ULL << 36), + BRIDGE_TYPE_FORCE_WORKITEMS_128 = (1ULL << 37), + BRIDGE_TYPE_FORCE_WORKITEMS_256 = (1ULL << 36), + +} bridge_type_t; + typedef enum dgst_size { DGST_SIZE_4_2 = (2 * sizeof (u32)), // 8 @@ -584,8 +630,10 @@ typedef enum parser_rc PARSER_FILE_SIZE = -41, PARSER_IV_LENGTH = -42, PARSER_CT_LENGTH = -43, - PARSER_CRYPTOAPI_KERNELTYPE = -44, - PARSER_CRYPTOAPI_KEYSIZE = -45, + PARSER_PT_LENGTH = -44, + PARSER_PT_OFFSET = -45, + PARSER_CRYPTOAPI_KERNELTYPE = -46, + PARSER_CRYPTOAPI_KEYSIZE = -47, PARSER_HAVE_ERRNO = -100, PARSER_UNKNOWN_ERROR = -255 @@ -624,8 +672,12 @@ typedef enum user_options_defaults ADVICE = true, ATTACK_MODE = ATTACK_MODE_STRAIGHT, AUTODETECT = false, - BACKEND_DEVICES_VIRTUAL = 1, + BACKEND_DEVICES_VIRTMULTI = 1, + BACKEND_DEVICES_VIRTHOST = 1, + BACKEND_DEVICES_KEEPFREE = 0, BENCHMARK_ALL = false, + BENCHMARK_MAX = 99999, + BENCHMARK_MIN = 0, BENCHMARK = false, BITMAP_MAX = 18, BITMAP_MIN = 16, @@ -728,7 +780,9 @@ typedef enum user_options_map IDX_ADVICE_DISABLE = 0xff00, IDX_ATTACK_MODE = 'a', IDX_BACKEND_DEVICES = 'd', - IDX_BACKEND_DEVICES_VIRTUAL = 'Y', + IDX_BACKEND_DEVICES_VIRTMULTI = 'Y', + IDX_BACKEND_DEVICES_VIRTHOST = 'R', + IDX_BACKEND_DEVICES_KEEPFREE = 0xff60, IDX_BACKEND_IGNORE_CUDA = 0xff01, IDX_BACKEND_IGNORE_HIP = 0xff02, IDX_BACKEND_IGNORE_METAL = 0xff03, @@ -736,6 +790,8 @@ typedef enum user_options_map IDX_BACKEND_INFO = 'I', IDX_BACKEND_VECTOR_WIDTH = 0xff05, IDX_BENCHMARK_ALL = 0xff06, + IDX_BENCHMARK_MAX = 0xff56, + IDX_BENCHMARK_MIN = 0xff57, IDX_BENCHMARK = 'b', IDX_BITMAP_MAX = 0xff07, IDX_BITMAP_MIN = 0xff08, @@ -750,6 +806,10 @@ typedef enum user_options_map IDX_BRAIN_SESSION = 0xff0f, IDX_BRAIN_SESSION_WHITELIST = 0xff10, #endif + IDX_BRIDGE_PARAMETER1 = 0xff80, + IDX_BRIDGE_PARAMETER2 = 0xff81, + IDX_BRIDGE_PARAMETER3 = 0xff82, + IDX_BRIDGE_PARAMETER4 = 0xff83, IDX_CPU_AFFINITY = 0xff11, IDX_CUSTOM_CHARSET_1 = '1', IDX_CUSTOM_CHARSET_2 = '2', @@ -1086,6 +1146,11 @@ typedef struct hashconfig u32 pwdump_column; + // bridge + + u64 bridge_type; + const char *bridge_name; + } hashconfig_t; typedef struct pw_pre @@ -1174,10 +1239,15 @@ typedef struct hc_device_param int sm_major; int sm_minor; + char *gcnArchName; + int regsPerBlock; + int regsPerMultiprocessor; u32 kernel_exec_timeout; u32 kernel_preferred_wgs_multiple; + int bridge_link_device; + st_status_t st_status; // selftest status at_status_t at_status; // autotune status @@ -1368,6 +1438,8 @@ typedef struct hc_device_param pw_pre_t *pws_base_buf; // for debug mode u64 pws_base_cnt; + void *h_tmps; // we need this only for bridges + u64 words_off; u64 words_done; @@ -1889,7 +1961,9 @@ typedef struct backend_ctx int backend_device_from_opencl_platform[CL_PLATFORMS_MAX][DEVICES_MAX]; // from opencl device index to backend device index (by platform) int backend_devices_cnt; - int backend_devices_virtual; + int backend_devices_virtmulti; + int backend_devices_virthost; + int backend_devices_keepfree; int backend_devices_active; int cuda_devices_cnt; @@ -1901,7 +1975,7 @@ typedef struct backend_ctx int opencl_devices_cnt; int opencl_devices_active; - bool backend_devices_filter[DEVICES_MAX + 1]; + int backend_devices_filter[DEVICES_MAX]; hc_device_param_t *devices_param; @@ -2000,6 +2074,7 @@ typedef struct hm_attrs bool threshold_slowdown_get_supported; bool throttle_get_supported; bool utilization_get_supported; + bool memoryused_get_supported; } hm_attrs_t; @@ -2257,6 +2332,7 @@ typedef struct tuning_db_entry int vector_width; int kernel_accel; int kernel_loops; + int source; // 1 = dbfile, 2 = module } tuning_db_entry_t; @@ -2332,6 +2408,7 @@ typedef struct user_options bool separator_chgd; bool rule_buf_l_chgd; bool rule_buf_r_chgd; + bool session_chgd; bool advice; bool benchmark; @@ -2390,6 +2467,10 @@ typedef struct user_options char *brain_password; char *brain_session_whitelist; #endif + char *bridge_parameter1; + char *bridge_parameter2; + char *bridge_parameter3; + char *bridge_parameter4; char *cpu_affinity; char *custom_charset_4; char *debug_file; @@ -2416,8 +2497,12 @@ typedef struct user_options const char *rule_buf_r; const char *session; u32 attack_mode; - u32 backend_devices_virtual; + u32 backend_devices_virtmulti; + u32 backend_devices_virthost; + u32 backend_devices_keepfree; u32 backend_info; + u32 benchmark_max; + u32 benchmark_min; u32 bitmap_max; u32 bitmap_min; #ifdef WITH_BRAIN @@ -2864,6 +2949,50 @@ typedef struct event_ctx } event_ctx_t; +#define BRIDGE_DEFAULT (void *) -1 + +typedef void (*BRIDGE_INIT) (void *); + +typedef struct bridge_ctx +{ + // local variables + + size_t bridge_context_size; + int bridge_interface_version; + + hc_dynlib_t bridge_handle; + + BRIDGE_INIT bridge_init; + + bool enabled; + + void *platform_context; + + void *pws_buf; // transfer buffer for tmps[] + + // functions + + void *(*platform_init) (user_options_t *); + void (*platform_term) (void *); + + int (*get_unit_count) (void *); + char *(*get_unit_info) (void *, const int); + int (*get_workitem_count) (void *, const int); + + bool (*salt_prepare) (void *, hashconfig_t *, hashes_t *); + void (*salt_destroy) (void *, hashconfig_t *, hashes_t *); + + bool (*thread_init) (void *, hc_device_param_t *, hashconfig_t *, hashes_t *); + void (*thread_term) (void *, hc_device_param_t *, hashconfig_t *, hashes_t *); + + bool (*launch_loop) (void *, hc_device_param_t *, hashconfig_t *, hashes_t *, const u32, const u64); + bool (*launch_loop2) (void *, hc_device_param_t *, hashconfig_t *, hashes_t *, const u32, const u64); + + const char *(*st_update_pass) (void *); + const char *(*st_update_hash) (void *); + +} bridge_ctx_t; + #define MODULE_DEFAULT (void *) -1 typedef void (*MODULE_INIT) (void *); @@ -2893,7 +3022,7 @@ typedef struct module_ctx u32 (*module_dgst_size) (const hashconfig_t *, const user_options_t *, const user_options_extra_t *); bool (*module_dictstat_disable) (const hashconfig_t *, const user_options_t *, const user_options_extra_t *); u64 (*module_esalt_size) (const hashconfig_t *, const user_options_t *, const user_options_extra_t *); - const char *(*module_extra_tuningdb_block) (const hashconfig_t *, const user_options_t *, const user_options_extra_t *); + const char *(*module_extra_tuningdb_block) (const hashconfig_t *, const user_options_t *, const user_options_extra_t *, const backend_ctx_t *, const hashes_t *, const u32, const u32); u32 (*module_forced_outfile_format) (const hashconfig_t *, const user_options_t *, const user_options_extra_t *); u32 (*module_hash_category) (const hashconfig_t *, const user_options_t *, const user_options_extra_t *); const char *(*module_hash_name) (const hashconfig_t *, const user_options_t *, const user_options_extra_t *); @@ -2961,12 +3090,16 @@ typedef struct module_ctx bool (*module_potfile_custom_check) (const hashconfig_t *, const hash_t *, const hash_t *, const void *); + u64 (*module_bridge_type) (const hashconfig_t *, const user_options_t *, const user_options_extra_t *); + const char *(*module_bridge_name) (const hashconfig_t *, const user_options_t *, const user_options_extra_t *); + } module_ctx_t; typedef struct hashcat_ctx { brain_ctx_t *brain_ctx; bitmap_ctx_t *bitmap_ctx; + bridge_ctx_t *bridge_ctx; combinator_ctx_t *combinator_ctx; cpt_ctx_t *cpt_ctx; debugfile_ctx_t *debugfile_ctx; @@ -3012,6 +3145,7 @@ typedef struct hook_thread_param int tid; int tsz; + bridge_ctx_t *bridge_ctx; module_ctx_t *module_ctx; status_ctx_t *status_ctx; diff --git a/obj/contrib/minizip/.lock b/modules/.gitkeep similarity index 100% rename from obj/contrib/minizip/.lock rename to modules/.gitkeep diff --git a/obj/.gitkeep b/obj/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/obj/contrib/minizip/.gitkeep b/obj/contrib/minizip/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/src/Makefile b/src/Makefile index 1cd440645..2ed479330 100644 --- a/src/Makefile +++ b/src/Makefile @@ -37,6 +37,14 @@ endif ifeq ($(DEBUG),1) $(info "## Detected Operating System : $(UNAME)") +$(info "## Detected CC : $(CC)") +$(info "## Detected CXX : $(CXX)") +endif + +BUILD_MODE := native + +ifneq ($(filter binaries linux host_linux modules_linux bridges_linux win host_win modules_win bridges_win,$(MAKECMDGOALS)),) + BUILD_MODE := cross endif ## @@ -54,6 +62,7 @@ endif ## MODULE_INTERFACE_VERSION := 700 +BRIDGE_INTERFACE_VERSION := 700 ## ## Native compiler paths @@ -148,6 +157,8 @@ DEPS_UNRAR_PATH := $(LIBRARY_DEV_ROOT_FOLDER) endif endif +DEPS_SSE2NEON := deps/sse2neon + ## ## Filenames for library and frontend ## @@ -188,15 +199,17 @@ CFLAGS += -Wextra endif ## because LZMA SDK -ifeq ($(CC),clang) -#No longer supported in clang 10.0.0 -#CFLAGS += -Wno-enum-conversion +ifneq (,$(findstring clang, $(CC))) CFLAGS += -Wno-typedef-redefinition +else +ifeq ($(CC),cc) +CFLAGS += -Wno-typedef-redefinition +endif endif ifeq ($(USE_SYSTEM_LZMA),0) CFLAGS_LZMA += -D_7ZIP_ST -ifneq ($(CC),clang) +ifeq (,$(findstring clang, $(CC))) CFLAGS_LZMA += -Wno-misleading-indentation endif endif @@ -208,17 +221,21 @@ CFLAGS_ZLIB += -Wno-implicit-function-declaration CFLAGS_ZLIB += -Wno-unused-parameter CFLAGS_ZLIB += -DIOAPI_NO_64 CFLAGS_ZLIB += -DUNZ_BUFSIZE=262144 +ifneq (,$(findstring clang, $(CC))) +CFLAGS_ZLIB += -Wno-deprecated-non-prototype -Wno-unknown-warning-option +endif endif ## because UNRAR ifeq ($(ENABLE_UNRAR),1) ifeq ($(USE_SYSTEM_UNRAR),0) +ifeq ($(UNAME),Darwin) +CFLAGS_UNRAR += -std=c++14 +endif ifneq ($(CC),clang) CFLAGS_UNRAR += -Wno-class-memaccess CFLAGS_UNRAR += -Wno-misleading-indentation CFLAGS_UNRAR += -Wno-format-overflow -else -CFLAGS_UNRAR += -std=c++11 endif CFLAGS_UNRAR += -Wno-missing-braces CFLAGS_UNRAR += -Wno-unused-variable @@ -359,6 +376,8 @@ LFLAGS_NATIVE += -lpthread LFLAGS_NATIVE += -liconv ifeq ($(IS_APPLE_SILICON),1) +CFLAGS_NATIVE += -DSSE2NEON_SUPPRESS_WARNINGS +CFLAGS_NATIVE += -I$(DEPS_SSE2NEON) CFLAGS_NATIVE += -arch arm64 CFLAGS_NATIVE += -arch x86_64 ifeq ($(SHARED),1) @@ -407,7 +426,7 @@ EMU_OBJS_ALL += emu_inc_hash_md4 emu_inc_hash_md5 emu_inc_hash_ripemd EMU_OBJS_ALL += emu_inc_cipher_aes emu_inc_cipher_camellia emu_inc_cipher_des emu_inc_cipher_kuznyechik emu_inc_cipher_serpent emu_inc_cipher_twofish EMU_OBJS_ALL += emu_inc_hash_base58 -OBJS_ALL := affinity autotune backend benchmark bitmap bitops combinator common convert cpt cpu_crc32 debugfile dictstat dispatch dynloader event ext_ADL ext_cuda ext_hip ext_nvapi ext_nvml ext_nvrtc ext_hiprtc ext_OpenCL ext_sysfs_amdgpu ext_sysfs_cpu ext_iokit ext_lzma filehandling folder hashcat hashes hlfmt hwmon induct interface keyboard_layout locking logfile loopback memory monitor mpsp outfile_check outfile pidfile potfile restore rp rp_cpu selftest slow_candidates shared status stdout straight terminal thread timer tuningdb usage user_options wordlist $(EMU_OBJS_ALL) +OBJS_ALL := affinity autotune backend benchmark bitmap bitops bridges combinator common convert cpt cpu_crc32 debugfile dictstat dispatch dynloader event ext_ADL ext_cuda ext_hip ext_nvapi ext_nvml ext_nvrtc ext_hiprtc ext_OpenCL ext_sysfs_amdgpu ext_sysfs_cpu ext_iokit ext_lzma filehandling folder hashcat hashes hlfmt hwmon induct interface keyboard_layout locking logfile loopback memory monitor mpsp outfile_check outfile pidfile potfile restore rp rp_cpu selftest slow_candidates shared status stdout straight terminal thread timer tuningdb usage user_options wordlist $(EMU_OBJS_ALL) ifeq ($(ENABLE_BRAIN),1) OBJS_ALL += brain @@ -424,7 +443,7 @@ NATIVE_OBJS += $(foreach OBJ,$(OBJS_METAL),obj/$(OBJ).METAL.NATIVE.o endif ifeq ($(USE_SYSTEM_LZMA),0) -OBJS_LZMA := 7zCrc 7zCrcOpt 7zFile 7zStream Alloc Bra Bra86 BraIA64 CpuArch Delta LzmaDec Lzma2Dec Sha256 Sha256Opt Xz XzCrc64 XzCrc64Opt XzDec XzIn +OBJS_LZMA := 7zCrc 7zCrcOpt 7zFile 7zStream Alloc Bra Bra86 BraIA64 CpuArch Delta LzmaDec Lzma2Dec MtDec Sha256 Sha256Opt Threads Xz XzCrc64 XzCrc64Opt XzDec XzIn NATIVE_OBJS += $(foreach OBJ,$(OBJS_LZMA),obj/$(OBJ).LZMA.NATIVE.o) LINUX_OBJS += $(foreach OBJ,$(OBJS_LZMA),obj/$(OBJ).LZMA.LINUX.o) @@ -464,15 +483,18 @@ endif ## .PHONY: default -default: $(HASHCAT_FRONTEND) modules +default: $(HASHCAT_FRONTEND) modules bridges .PHONY: clean clean: $(RM) -f $(HASHCAT_FRONTEND) $(RM) -f $(HASHCAT_LIBRARY) $(RM) -rf modules/*.dSYM + $(RM) -rf bridges/*.dSYM $(RM) -f modules/*.dll $(RM) -f modules/*.so + $(RM) -f bridges/*.dll + $(RM) -f bridges/*.so $(RM) -f obj/*/*/*.o $(RM) -f obj/*/*.o $(RM) -f obj/*.o @@ -516,9 +538,9 @@ endif .PHONY: install ifeq ($(SHARED),1) -install: install_docs install_shared install_library install_library_dev install_tunings install_kernels install_modules install_hashcat +install: install_docs install_shared install_library install_library_dev install_tunings install_kernels install_modules install_bridges install_hashcat else -install: install_docs install_shared install_tunings install_kernels install_modules install_hashcat +install: install_docs install_shared install_tunings install_kernels install_modules install_bridges install_hashcat endif # we need this extra target to make sure that for parallel builds (i.e. 2+ Makefile targets could possible run at the same time) @@ -591,6 +613,12 @@ install_modules: install_shared modules $(FIND) modules/ -mindepth 1 -type d -execdir $(INSTALL) -m 755 -d $(DESTDIR)$(SHARED_FOLDER)/modules/{} \; $(FIND) modules/ -mindepth 1 -type f -execdir $(INSTALL) -m 644 {} $(DESTDIR)$(SHARED_FOLDER)/modules/{} \; +.PHONY: install_bridges +install_bridges: install_shared bridges + $(INSTALL) -m 755 -d $(DESTDIR)$(SHARED_FOLDER)/bridges + $(FIND) bridges/ -mindepth 1 -type d -execdir $(INSTALL) -m 755 -d $(DESTDIR)$(SHARED_FOLDER)/bridges/{} \; + $(FIND) bridges/ -mindepth 1 -type f -execdir $(INSTALL) -m 644 {} $(DESTDIR)$(SHARED_FOLDER)/bridges/{} \; + .PHONY: install_library install_library: $(HASHCAT_LIBRARY) $(INSTALL) -m 755 -d $(DESTDIR)$(LIBRARY_FOLDER) @@ -714,6 +742,40 @@ MODULES_LIB := $(patsubst src/modules/module_%.c, modules/module_%.$(MODULE_SU .PHONY: modules modules: $(MODULES_LIB) +## +## native compiled bridges +## + +BRIDGE_SUFFIX := so + +ifeq ($(UNAME),CYGWIN) +BRIDGE_SUFFIX := dll +endif + +ifeq ($(UNAME),MSYS2) +BRIDGE_SUFFIX := dll +endif + +BRIDGES_SRC := $(wildcard src/bridges/*.c) + +## not used so far, see modules above +BRIDGES_DISABLE ?= + +$(BRIDGES_DISABLE): ; + +ifeq ($(SHARED),1) +bridges/bridge_%.$(BRIDGE_SUFFIX): src/bridges/bridge_%.c $(HASHCAT_LIBRARY) + $(CC) $(CCFLAGS) $(CFLAGS_NATIVE) $^ -o $@ $(LFLAGS_NATIVE) -shared -fPIC -D BRIDGE_INTERFACE_VERSION_CURRENT=$(BRIDGE_INTERFACE_VERSION) +else +bridges/bridge_%.$(BRIDGE_SUFFIX): src/bridges/bridge_%.c obj/combined.NATIVE.a + $(CC) $(CCFLAGS) $(CFLAGS_NATIVE) $^ -o $@ $(LFLAGS_NATIVE) -shared -fPIC -D BRIDGE_INTERFACE_VERSION_CURRENT=$(BRIDGE_INTERFACE_VERSION) +endif + +BRIDGES_LIB := $(patsubst src/bridges/bridge_%.c, bridges/bridge_%.$(BRIDGE_SUFFIX), $(BRIDGES_SRC)) + +.PHONY: bridges +bridges: $(BRIDGES_LIB) + ## ## Cross Compilation (binary release version) ## @@ -732,12 +794,9 @@ CXX_WIN := x86_64-w64-mingw32-g++ AR_LINUX := ar AR_WIN := x86_64-w64-mingw32-ar -## To compile win-iconv with mingw clone from here: https://github.com/win-iconv/win-iconv -## -## Then patch the makefile with the patches from tools/win-iconv-64.diff and run make install -## - +# See BUILD_WSL.md to make these WIN_ICONV := /opt/win-iconv-64 +WIN_PYTHON := /opt/win-python ## ## Compiler options @@ -775,6 +834,11 @@ CFLAGS_LZMA_WIN += -Wno-misleading-indentation CFLAGS_UNRAR_WIN += -Wno-misleading-indentation CFLAGS_UNRAR_WIN += -Wno-class-memaccess + +ifeq ($(IS_APPLE_SILICON),1) +CFLAGS_CROSS_LINUX += -DSSE2NEON_SUPPRESS_WARNINGS +CFLAGS_CROSS_LINUX += -I$(DEPS_SSE2NEON) +endif endif ## @@ -789,7 +853,7 @@ binaries: win host_win: hashcat.exe .PHONY: win -win: host_win modules_win +win: host_win modules_win bridges_win else .PHONY: binaries binaries: linux win @@ -799,8 +863,8 @@ host_linux: hashcat.bin host_win: hashcat.exe .PHONY: linux win -linux: host_linux modules_linux -win: host_win modules_win +linux: host_linux modules_linux bridges_linux +win: host_win modules_win bridges_win endif ## @@ -820,6 +884,23 @@ modules/module_%.so: src/modules/module_%.c obj/combined.LINUX.a modules/module_%.dll: src/modules/module_%.c obj/combined.WIN.a $(CC_WIN) $(CCFLAGS) $(CFLAGS_CROSS_WIN) $^ -o $@ $(LFLAGS_CROSS_WIN) -shared -fPIC -D MODULE_INTERFACE_VERSION_CURRENT=$(MODULE_INTERFACE_VERSION) +## +## cross compiled bridges +## + +BRIDGES_LIB_LINUX := $(patsubst src/bridges/bridge_%.c, bridges/bridge_%.so, $(BRIDGES_SRC)) +BRIDGES_LIB_WIN := $(patsubst src/bridges/bridge_%.c, bridges/bridge_%.dll, $(BRIDGES_SRC)) + +.PHONY: bridges_linux bridges_win +bridges_linux: $(BRIDGES_LIB_LINUX) +bridges_win: $(BRIDGES_LIB_WIN) + +bridges/bridge_%.so: src/bridges/bridge_%.c obj/combined.LINUX.a + $(CC_LINUX) $(CCFLAGS) $(CFLAGS_CROSS_LINUX) $^ -o $@ $(LFLAGS_CROSS_LINUX) -shared -fPIC -D BRIDGE_INTERFACE_VERSION_CURRENT=$(BRIDGE_INTERFACE_VERSION) + +bridges/bridge_%.dll: src/bridges/bridge_%.c obj/combined.WIN.a + $(CC_WIN) $(CCFLAGS) $(CFLAGS_CROSS_WIN) $^ -o $@ $(LFLAGS_CROSS_WIN) -shared -fPIC -D BRIDGE_INTERFACE_VERSION_CURRENT=$(BRIDGE_INTERFACE_VERSION) + ## ## cross compiled hashcat ## @@ -885,3 +966,6 @@ endif # Give plugin developers a chance to add some 3rd party libraries include $(wildcard src/modules/module_*.mk) + +# Give plugin developers a chance to add some 3rd party libraries +include $(wildcard src/bridges/bridge_*.mk) diff --git a/src/autotune.c b/src/autotune.c index 64bfab721..b33ed36d6 100644 --- a/src/autotune.c +++ b/src/autotune.c @@ -8,8 +8,32 @@ #include "event.h" #include "backend.h" #include "status.h" +#include "shared.h" #include "autotune.h" +int find_tuning_function (hashcat_ctx_t *hashcat_ctx, MAYBE_UNUSED hc_device_param_t *device_param) +{ + hashconfig_t *hashconfig = hashcat_ctx->hashconfig; + + if (hashconfig->attack_exec == ATTACK_EXEC_INSIDE_KERNEL) + { + if (hashconfig->opti_type & OPTI_TYPE_OPTIMIZED_KERNEL) + { + return KERN_RUN_1; + } + else + { + return KERN_RUN_4; + } + } + else + { + return KERN_RUN_2; + } + + return -1; +} + static double try_run (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param, const u32 kernel_accel, const u32 kernel_loops, const u32 kernel_threads) { hashconfig_t *hashconfig = hashcat_ctx->hashconfig; @@ -43,21 +67,9 @@ static double try_run (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_par device_param->spin_damp = 0; - if (hashconfig->attack_exec == ATTACK_EXEC_INSIDE_KERNEL) - { - if (hashconfig->opti_type & OPTI_TYPE_OPTIMIZED_KERNEL) - { - run_kernel (hashcat_ctx, device_param, KERN_RUN_1, 0, kernel_power_try, true, 0); - } - else - { - run_kernel (hashcat_ctx, device_param, KERN_RUN_4, 0, kernel_power_try, true, 0); - } - } - else - { - run_kernel (hashcat_ctx, device_param, KERN_RUN_2, 0, kernel_power_try, true, 0); - } + const u32 kern_run = find_tuning_function (hashcat_ctx, device_param); + + run_kernel (hashcat_ctx, device_param, kern_run, 0, kernel_power_try, true, 0, true); device_param->spin_damp = spin_damp_sav; @@ -84,24 +96,6 @@ static double try_run_times (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *devi return exec_msec_best; } -static u32 previous_power_of_two (const u32 x) -{ - // https://stackoverflow.com/questions/2679815/previous-power-of-2 - // really cool! - - if (x == 0) return 0; - - u32 r = x; - - r |= (r >> 1); - r |= (r >> 2); - r |= (r >> 4); - r |= (r >> 8); - r |= (r >> 16); - - return r - (r >> 1); -} - static int autotune (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param) { const hashconfig_t *hashconfig = hashcat_ctx->hashconfig; @@ -120,6 +114,16 @@ static int autotune (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param const u32 kernel_threads_min = device_param->kernel_threads_min; const u32 kernel_threads_max = device_param->kernel_threads_max; + /* + printf ("starting autotune with: %d %d %d %d %d %d\n", + kernel_accel_min, + kernel_accel_max, + kernel_loops_min, + kernel_loops_max, + kernel_threads_min, + kernel_threads_max); + */ + // stores the minimum values // they could be used if the autotune fails and user specify --force @@ -136,34 +140,29 @@ static int autotune (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param u32 kernel_accel = kernel_accel_min; u32 kernel_loops = kernel_loops_min; + u32 kernel_threads = kernel_threads_min; // for the threads we take as initial value what we receive from the runtime // but is only to start with something, we will fine tune this value as soon as we have our workload specified // this thread limiting is also performed inside run_kernel() so we need to redo it here, too + /* u32 kernel_wgs = 0; - u32 kernel_wgs_multiple = 0; if (hashconfig->attack_exec == ATTACK_EXEC_INSIDE_KERNEL) { if (hashconfig->opti_type & OPTI_TYPE_OPTIMIZED_KERNEL) { kernel_wgs = device_param->kernel_wgs1; - - kernel_wgs_multiple = device_param->kernel_preferred_wgs_multiple1; } else { kernel_wgs = device_param->kernel_wgs4; - - kernel_wgs_multiple = device_param->kernel_preferred_wgs_multiple4; } } else { kernel_wgs = device_param->kernel_wgs2; - - kernel_wgs_multiple = device_param->kernel_preferred_wgs_multiple2; } u32 kernel_threads = kernel_threads_max; @@ -175,18 +174,20 @@ static int autotune (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param // having a value power of 2 makes it easier to divide + const u32 kernel_threads_p2 = previous_power_of_two (kernel_threads); if ((kernel_threads_p2 >= kernel_threads_min) && (kernel_threads_p2 <= kernel_threads_max)) { kernel_threads = kernel_threads_p2; } + */ // in this case the user specified a fixed -n and -u on the commandline // no way to tune anything // but we need to run a few caching rounds - if ((kernel_accel_min == kernel_accel_max) && (kernel_loops_min == kernel_loops_max)) + if ((kernel_threads_min == kernel_threads_max) && (kernel_accel_min == kernel_accel_max) && (kernel_loops_min == kernel_loops_max)) { #if defined (DEBUG) @@ -298,13 +299,13 @@ static int autotune (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param device_param->kernel_threads = device_param->kernel_wgs1; - run_kernel (hashcat_ctx, device_param, KERN_RUN_1, 0, kernel_power_max, false, 0); + run_kernel (hashcat_ctx, device_param, KERN_RUN_1, 0, kernel_power_max, false, 0, true); if (hashconfig->opts_type & OPTS_TYPE_LOOP_PREPARE) { device_param->kernel_threads = device_param->kernel_wgs2p; - run_kernel (hashcat_ctx, device_param, KERN_RUN_2P, 0, kernel_power_max, false, 0); + run_kernel (hashcat_ctx, device_param, KERN_RUN_2P, 0, kernel_power_max, false, 0, true); } device_param->kernel_threads = kernel_threads_sav; @@ -312,8 +313,6 @@ static int autotune (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param // Do a pre-autotune test run to find out if kernel runtime is above some TDR limit - u32 kernel_loops_max_reduced = kernel_loops_max; - if (true) { double exec_msec = try_run (hashcat_ctx, device_param, kernel_accel_min, kernel_loops_min, kernel_threads); @@ -326,144 +325,147 @@ static int autotune (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param return -1; } - - exec_msec = try_run (hashcat_ctx, device_param, kernel_accel_min, kernel_loops_min, kernel_threads); - - const u32 mm = kernel_loops_max / kernel_loops_min; - - if ((exec_msec * mm) > target_msec) - { - const u32 loops_valid = (const u32) (target_msec / exec_msec); - - kernel_loops_max_reduced = kernel_loops_min * loops_valid; - } } - // first find out highest kernel-loops that stays below target_msec + // v7 autotuner is a lot more straight forward - if (kernel_loops_min < kernel_loops_max) + for (u32 kernel_loops_test = kernel_loops_min; kernel_loops_test <= kernel_loops_max; kernel_loops_test <<= 1) { - for (kernel_loops = kernel_loops_max; kernel_loops > kernel_loops_min; kernel_loops >>= 1) + double exec_msec = try_run_times (hashcat_ctx, device_param, kernel_accel_min, kernel_loops_test, kernel_threads_min, 2); + + //printf ("loop %f %u %u %u\n", exec_msec, kernel_accel_min, kernel_loops_test, kernel_threads_min); + if (exec_msec > target_msec) break; + + // we want a little room for threads to play with so not full target_msec + // but of course only if we are going to make use of that :) + + if ((kernel_accel_min < kernel_accel_max) || (kernel_threads_min < kernel_threads_max)) { - if (kernel_loops > kernel_loops_max_reduced) continue; + if (exec_msec > target_msec / 8) break; - double exec_msec = try_run_times (hashcat_ctx, device_param, kernel_accel_min, kernel_loops, kernel_threads, 1); + // in general, an unparallelized kernel should not run that long. + // if the kernel uses barriers it will have a bad impact on performance. + // streebog is a good testing example - if (exec_msec < target_msec) break; + if (exec_msec > 4) break; } + + kernel_loops = kernel_loops_test; } - #define STEPS_CNT 16 + for (u32 kernel_threads_test = kernel_threads_min; kernel_threads_test <= kernel_threads_max; kernel_threads_test <<= 1) + { + double exec_msec = try_run_times (hashcat_ctx, device_param, kernel_accel_min, kernel_loops, kernel_threads_test, 2); - // now the same for kernel-accel but with the new kernel-loops from previous loop set + //printf ("threads %f %u %u %u\n", exec_msec, kernel_accel_min, kernel_loops, kernel_threads_test); + if (exec_msec > target_msec) break; + + if (kernel_threads >= 32) + { + // we want a little room for accel to play with so not full target_msec + + if (exec_msec > target_msec / 8) break; + } + + kernel_threads = kernel_threads_test; + } + + #define STEPS_CNT 12 + + // now we tune for kernel-accel but with the new kernel-loops from previous loop set if (kernel_accel_min < kernel_accel_max) { for (int i = 0; i < STEPS_CNT; i++) { - const u32 kernel_accel_try = 1U << i; + const u32 kernel_accel_try = kernel_accel; if (kernel_accel_try < kernel_accel_min) continue; if (kernel_accel_try > kernel_accel_max) break; - double exec_msec = try_run_times (hashcat_ctx, device_param, kernel_accel_try, kernel_loops, kernel_threads, 1); + double exec_msec = try_run_times (hashcat_ctx, device_param, kernel_accel_try, kernel_loops, kernel_threads, 2); + //printf ("accel %f %u %u %u\n", exec_msec, kernel_accel_try, kernel_loops, kernel_threads); if (exec_msec > target_msec) break; - kernel_accel = kernel_accel_try; + float multi = target_msec / exec_msec; + + // we cap that multiplier, because on low accel numbers we do not run into spilling + multi = (multi > 4) ? 4 : multi; + + kernel_accel = (float) kernel_accel_try * multi; + + if (kernel_accel == kernel_accel_try) break; // too close } + + if (kernel_accel > kernel_accel_max) kernel_accel = kernel_accel_max; } - // now find the middle balance between kernel_accel and kernel_loops - // while respecting allowed ranges at the same time + if (kernel_accel > 64) kernel_accel -= kernel_accel % 32; - if (kernel_accel < kernel_loops) + if (device_param->opencl_device_type & CL_DEVICE_TYPE_CPU) { - const u32 kernel_accel_orig = kernel_accel; - const u32 kernel_loops_orig = kernel_loops; + if (kernel_accel > device_param->device_processors) kernel_accel -= kernel_accel % device_param->device_processors; + } - double exec_msec_prev = try_run_times (hashcat_ctx, device_param, kernel_accel, kernel_loops, kernel_threads, 1); + // some final play, if we have strange numbers from the APIs, namely 96, 384, and such - for (int i = 1; i < STEPS_CNT; i++) + if ((kernel_accel_min == kernel_accel_max) || (kernel_threads_min == kernel_threads_max)) + { + } + else + { + u32 fun[2]; + + if (is_power_of_2 (kernel_threads) == false) { - const u32 kernel_accel_try = kernel_accel_orig * (1U << i); - const u32 kernel_loops_try = kernel_loops_orig / (1U << i); - - if (kernel_accel_try < kernel_accel_min) continue; - if (kernel_accel_try > kernel_accel_max) break; - - if (kernel_loops_try > kernel_loops_max) continue; - if (kernel_loops_try < kernel_loops_min) break; - - // do a real test - - const double exec_msec = try_run_times (hashcat_ctx, device_param, kernel_accel_try, kernel_loops_try, kernel_threads, 1); - - if (exec_msec_prev < exec_msec) break; - - exec_msec_prev = exec_msec; - - // so far, so good! save - - kernel_accel = kernel_accel_try; - kernel_loops = kernel_loops_try; - - // too much if the next test is true - - if (kernel_loops_try < kernel_accel_try) break; + fun[0] = previous_power_of_two (kernel_threads); + fun[1] = next_power_of_two (kernel_threads); } - } - - double exec_msec_pre_final = try_run_times (hashcat_ctx, device_param, kernel_accel, kernel_loops, kernel_threads, 1); - - const u32 exec_left = (const u32) (target_msec / exec_msec_pre_final); - - const u32 accel_left = kernel_accel_max / kernel_accel; - - const u32 exec_accel_min = MIN (exec_left, accel_left); // we want that to be int - - if (exec_accel_min >= 1) - { - // this is safe to not overflow kernel_accel_max because of accel_left - - kernel_accel *= exec_accel_min; - } - - // v6.2.4 new section: find thread count - // This is not as effective as it could be because of inaccurate kernel return timers - // But is better than fixed values - // Timers in this section are critical, so we rerun measurements 3 times - - if (kernel_threads_max > kernel_threads_min) - { - const u32 kernel_accel_orig = kernel_accel; - const u32 kernel_threads_orig = kernel_threads; - - double exec_msec_prev = try_run_times (hashcat_ctx, device_param, kernel_accel, kernel_loops, kernel_threads, 3); - - for (int i = 1; i < STEPS_CNT; i++) + else { - const u32 kernel_accel_try = kernel_accel_orig * (1U << i); - const u32 kernel_threads_try = kernel_threads_orig / (1U << i); + fun[0] = kernel_threads >> 1; + fun[1] = kernel_threads << 1; + } - // since we do not modify total amount of workitems, we can (and need) to do increase kernel_accel_max + float fact[2]; - const u32 kernel_accel_max_try = kernel_accel_max * (1U << i); + fact[0] = (float) kernel_threads / fun[0]; + fact[1] = (float) kernel_threads / fun[1]; - if (kernel_accel_try > kernel_accel_max_try) break; + float ms_prev = try_run_times (hashcat_ctx, device_param, kernel_accel, kernel_loops, kernel_threads, 2); - if (kernel_threads_try < kernel_threads_min) break; + float res[2] = { 0 }; - if (kernel_threads_try % kernel_wgs_multiple) break; // this would just be waste of time + for (int i = 0; i < 2; i++) + { + const u32 kernel_threads_test = fun[i]; + const u32 kernel_accel_test = kernel_accel * fact[i]; - double exec_msec = try_run_times (hashcat_ctx, device_param, kernel_accel_try, kernel_loops, kernel_threads_try, 3); + if (kernel_accel_test == 0) continue; + if (kernel_threads_test == 0) continue; - if (exec_msec > exec_msec_prev) continue; + if (kernel_threads_test > device_param->device_maxworkgroup_size) continue; - exec_msec_prev = exec_msec; + const float ms = try_run_times (hashcat_ctx, device_param, kernel_accel_test, kernel_loops, kernel_threads_test, 2); - kernel_accel = kernel_accel_try; - kernel_threads = kernel_threads_try; + res[i] = ms_prev / ms; + } + + const int sel = (res[0] > res[1]) ? 0 : 1; + + if (res[sel] > 1.01) + { + const u32 kernel_accel_new = kernel_accel * fact[sel]; + const u32 kernel_threads_new = fun[sel]; + + if ((kernel_accel_new >= kernel_accel_min) && (kernel_accel_new <= kernel_accel_max)) + { + // we can't check kernel_threads because that is for sure outside the range + + kernel_accel = kernel_accel_new; + kernel_threads = kernel_threads_new; + } } } } @@ -545,6 +547,8 @@ static int autotune (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param device_param->kernel_power = kernel_power; + //printf ("Final: %d %d %d %d %d\n", kernel_accel, kernel_loops, kernel_threads, hardware_power, kernel_power); + return 0; } diff --git a/src/backend.c b/src/backend.c index f7c916e1d..6bb511c5b 100644 --- a/src/backend.c +++ b/src/backend.c @@ -24,6 +24,8 @@ #include "dynloader.h" #include "backend.h" #include "terminal.h" +#include "hwmon.h" +#include "autotune.h" #if defined (__linux__) static const char *const dri_card0_path = "/dev/dri/card0"; @@ -43,7 +45,7 @@ static const u32 bzeros[4] = { 0, 0, 0, 0 }; /* forward declarations */ static void rebuild_pws_compressed_append (hc_device_param_t *device_param, const u64 pws_cnt, const u8 chr); - +// static bool is_same_device (const hc_device_param_t *src, const hc_device_param_t *dst) { // First check by PCI address @@ -69,6 +71,15 @@ static bool is_same_device (const hc_device_param_t *src, const hc_device_param_ // Metal can't have aliases if ((src->is_metal == true) && (dst->is_metal == true)) return false; + + // But Metal and OpenCL can have aliases + + if ((src->is_metal == true) && (dst->is_opencl == true)) + { + // Prevents hashcat, when started with x86_64 emulation on Apple Silicon, from showing the Apple M1 OpenCL CPU as an alias for the Apple M1 Metal GPU + + if (src->opencl_device_type != dst->opencl_device_type) return false; + } #endif // But OpenCL can have aliases @@ -87,6 +98,210 @@ static bool is_same_device (const hc_device_param_t *src, const hc_device_param_ return true; } +static const int kern_run_cnt = 15; + +static const int kern_run_all[] = +{ + KERN_RUN_1, + KERN_RUN_12, + KERN_RUN_2P, + KERN_RUN_2, + KERN_RUN_2E, + KERN_RUN_23, + KERN_RUN_3, + KERN_RUN_4, + KERN_RUN_INIT2, + KERN_RUN_LOOP2P, + KERN_RUN_LOOP2, + KERN_RUN_AUX1, + KERN_RUN_AUX2, + KERN_RUN_AUX3, + KERN_RUN_AUX4, +}; + +static cl_kernel opencl_kernel_with_id (hc_device_param_t *device_param, const int kern_run) +{ + switch (kern_run) + { + case KERN_RUN_1: return device_param->opencl_kernel1; break; + case KERN_RUN_12: return device_param->opencl_kernel12; break; + case KERN_RUN_2P: return device_param->opencl_kernel2p; break; + case KERN_RUN_2: return device_param->opencl_kernel2; break; + case KERN_RUN_2E: return device_param->opencl_kernel2e; break; + case KERN_RUN_23: return device_param->opencl_kernel23; break; + case KERN_RUN_3: return device_param->opencl_kernel3; break; + case KERN_RUN_4: return device_param->opencl_kernel4; break; + case KERN_RUN_INIT2: return device_param->opencl_kernel_init2; break; + case KERN_RUN_LOOP2P: return device_param->opencl_kernel_loop2p; break; + case KERN_RUN_LOOP2: return device_param->opencl_kernel_loop2; break; + case KERN_RUN_AUX1: return device_param->opencl_kernel_aux1; break; + case KERN_RUN_AUX2: return device_param->opencl_kernel_aux1; break; + case KERN_RUN_AUX3: return device_param->opencl_kernel_aux1; break; + case KERN_RUN_AUX4: return device_param->opencl_kernel_aux1; break; + } + + return NULL; +} + +static hipFunction_t hip_function_with_id (hc_device_param_t *device_param, const int kern_run) +{ + switch (kern_run) + { + case KERN_RUN_1: return device_param->hip_function1; break; + case KERN_RUN_12: return device_param->hip_function12; break; + case KERN_RUN_2P: return device_param->hip_function2p; break; + case KERN_RUN_2: return device_param->hip_function2; break; + case KERN_RUN_2E: return device_param->hip_function2e; break; + case KERN_RUN_23: return device_param->hip_function23; break; + case KERN_RUN_3: return device_param->hip_function3; break; + case KERN_RUN_4: return device_param->hip_function4; break; + case KERN_RUN_INIT2: return device_param->hip_function_init2; break; + case KERN_RUN_LOOP2P: return device_param->hip_function_loop2p; break; + case KERN_RUN_LOOP2: return device_param->hip_function_loop2; break; + case KERN_RUN_AUX1: return device_param->hip_function_aux1; break; + case KERN_RUN_AUX2: return device_param->hip_function_aux2; break; + case KERN_RUN_AUX3: return device_param->hip_function_aux3; break; + case KERN_RUN_AUX4: return device_param->hip_function_aux4; break; + } + + return NULL; +} + +static CUfunction cuda_function_with_id (hc_device_param_t *device_param, const int kern_run) +{ + switch (kern_run) + { + case KERN_RUN_1: return device_param->cuda_function1; break; + case KERN_RUN_12: return device_param->cuda_function12; break; + case KERN_RUN_2P: return device_param->cuda_function2p; break; + case KERN_RUN_2: return device_param->cuda_function2; break; + case KERN_RUN_2E: return device_param->cuda_function2e; break; + case KERN_RUN_23: return device_param->cuda_function23; break; + case KERN_RUN_3: return device_param->cuda_function3; break; + case KERN_RUN_4: return device_param->cuda_function4; break; + case KERN_RUN_INIT2: return device_param->cuda_function_init2; break; + case KERN_RUN_LOOP2P: return device_param->cuda_function_loop2p; break; + case KERN_RUN_LOOP2: return device_param->cuda_function_loop2; break; + case KERN_RUN_AUX1: return device_param->cuda_function_aux1; break; + case KERN_RUN_AUX2: return device_param->cuda_function_aux2; break; + case KERN_RUN_AUX3: return device_param->cuda_function_aux3; break; + case KERN_RUN_AUX4: return device_param->cuda_function_aux4; break; + } + + return NULL; +} + +int opencl_query_threads_per_block (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param, cl_kernel kernel) +{ + size_t threads_per_block = 0; + + if (hc_clGetKernelWorkGroupInfo (hashcat_ctx, kernel, device_param->opencl_device, CL_KERNEL_WORK_GROUP_SIZE, sizeof (threads_per_block), &threads_per_block, NULL) == -1) return -1; + + return threads_per_block; +} + +int opencl_query_max_local_size_bytes (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param) +{ + size_t max_local_size_bytes = 0; + + for (int kern_run_idx = 0; kern_run_idx < kern_run_cnt; kern_run_idx++) + { + cl_kernel kernel = opencl_kernel_with_id (device_param, kern_run_all[kern_run_idx]); + + if (kernel == NULL) continue; + + size_t local_size_bytes = 0; + + if (hc_clGetKernelWorkGroupInfo (hashcat_ctx, kernel, device_param->opencl_device, CL_KERNEL_PRIVATE_MEM_SIZE, sizeof (local_size_bytes), &local_size_bytes, NULL) == -1) return -1; + + if (local_size_bytes == 0) continue; + + max_local_size_bytes = MAX (max_local_size_bytes, local_size_bytes); + } + + return (int) max_local_size_bytes; +} + +int hip_query_num_regs (hashcat_ctx_t *hashcat_ctx, hipFunction_t hip_function) +{ + int num_regs = 0; + + if (hc_hipFuncGetAttribute (hashcat_ctx, &num_regs, HIP_FUNC_ATTRIBUTE_NUM_REGS, hip_function) == -1) return -1; + + return num_regs; +} + +int hip_query_threads_per_block (hashcat_ctx_t *hashcat_ctx, hipFunction_t hip_function) +{ + int threads_per_block = 0; + + if (hc_hipFuncGetAttribute (hashcat_ctx, &threads_per_block, HIP_FUNC_ATTRIBUTE_MAX_THREADS_PER_BLOCK, hip_function) == -1) return -1; + + return threads_per_block; +} + +int hip_query_max_local_size_bytes (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param) +{ + int max_local_size_bytes = 0; + + for (int kern_run_idx = 0; kern_run_idx < kern_run_cnt; kern_run_idx++) + { + hipFunction_t hip_function = hip_function_with_id (device_param, kern_run_all[kern_run_idx]); + + if (hip_function == NULL) continue; + + int local_size_bytes = 0; + + if (hc_hipFuncGetAttribute (hashcat_ctx, &local_size_bytes, HIP_FUNC_ATTRIBUTE_LOCAL_SIZE_BYTES, hip_function) == -1) return -1; + + if (local_size_bytes == 0) continue; + + max_local_size_bytes = MAX (max_local_size_bytes, local_size_bytes); + } + + return max_local_size_bytes; +} + +int cuda_query_num_regs (hashcat_ctx_t *hashcat_ctx, CUfunction cuda_function) +{ + int num_regs = 0; + + if (hc_cuFuncGetAttribute (hashcat_ctx, &num_regs, CU_FUNC_ATTRIBUTE_NUM_REGS, cuda_function) == -1) return -1; + + return num_regs; +} + +int cuda_query_threads_per_block (hashcat_ctx_t *hashcat_ctx, CUfunction cuda_function) +{ + int threads_per_block = 0; + + if (hc_cuFuncGetAttribute (hashcat_ctx, &threads_per_block, CU_FUNC_ATTRIBUTE_MAX_THREADS_PER_BLOCK, cuda_function) == -1) return -1; + + return threads_per_block; +} + +int cuda_query_max_local_size_bytes (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param) +{ + int max_local_size_bytes = 0; + + for (int kern_run_idx = 0; kern_run_idx < kern_run_cnt; kern_run_idx++) + { + CUfunction cuda_function = cuda_function_with_id (device_param, kern_run_all[kern_run_idx]); + + if (cuda_function == NULL) continue; + + int local_size_bytes = 0; + + if (hc_cuFuncGetAttribute (hashcat_ctx, &local_size_bytes, CU_FUNC_ATTRIBUTE_LOCAL_SIZE_BYTES, cuda_function) == -1) return -1; + + if (local_size_bytes == 0) continue; + + max_local_size_bytes = MAX (max_local_size_bytes, local_size_bytes); + } + + return max_local_size_bytes; +} + static int backend_ctx_find_alias_devices (hashcat_ctx_t *hashcat_ctx) { backend_ctx_t *backend_ctx = hashcat_ctx->backend_ctx; @@ -157,7 +372,7 @@ static int backend_ctx_find_alias_devices (hashcat_ctx_t *hashcat_ctx) // show a warning for specifically listed devices if they are an alias - if (backend_ctx->backend_devices_filter[alias_device->device_id]) + if (backend_ctx->backend_devices_filter[alias_device->device_id] == 1) { event_log_warning (hashcat_ctx, "The device #%d specifically listed was skipped because it is an alias of device #%d", alias_device->device_id + 1, backend_device->device_id + 1); event_log_warning (hashcat_ctx, NULL); @@ -270,51 +485,46 @@ static int ocl_check_dri (MAYBE_UNUSED hashcat_ctx_t *hashcat_ctx) return 0; } -static bool setup_backend_devices_filter (hashcat_ctx_t *hashcat_ctx, const char *backend_devices, bool *out) +static bool setup_backend_devices_filter (hashcat_ctx_t *hashcat_ctx, const char *backend_devices, int *backend_devices_filter) { - bool backend_devices_filter[DEVICES_MAX + 1] = {false}; + const bridge_ctx_t *bridge_ctx = hashcat_ctx->bridge_ctx; - if (backend_devices) + for (int i = 0; i < DEVICES_MAX; i++) backend_devices_filter[i] = 0; + + if (bridge_ctx->enabled == true) return true; + + if (backend_devices == NULL) return true; + + // in this case opposite + + for (int i = 0; i < DEVICES_MAX; i++) backend_devices_filter[i] = 1; + + char *devices = hcstrdup (backend_devices); + + if (devices == NULL) return false; + + char *saveptr = NULL; + + char *next = strtok_r (devices, ",", &saveptr); + + do { - char *devices = hcstrdup (backend_devices); + const int backend_device_id = (const int) strtol (next, NULL, 10); - if (devices == NULL) return false; - - char *saveptr = NULL; - - char *next = strtok_r (devices, ",", &saveptr); - - do + if ((backend_device_id <= 0) || (backend_device_id >= DEVICES_MAX)) { - const int backend_device_id = (const int) strtol (next, NULL, 10); + event_log_error (hashcat_ctx, "Invalid device_id %d specified.", backend_device_id); - if ((backend_device_id <= 0) || (backend_device_id >= DEVICES_MAX)) - { - event_log_error (hashcat_ctx, "Invalid device_id %d specified.", backend_device_id); + hcfree (devices); - hcfree (devices); - - return false; - } - - backend_devices_filter[backend_device_id - 1] = true; - - } while ((next = strtok_r ((char *) NULL, ",", &saveptr)) != NULL); - - hcfree (devices); - } - else - { - for (int i = 0; i <= DEVICES_MAX; i++) - { - backend_devices_filter[i] = true; + return false; } - } - for (int i = 0; i <= DEVICES_MAX; i++) - { - out[i] = backend_devices_filter[i]; - } + backend_devices_filter[backend_device_id - 1] = 0; + + } while ((next = strtok_r ((char *) NULL, ",", &saveptr)) != NULL); + + hcfree (devices); return true; } @@ -403,7 +613,7 @@ static bool cuda_test_instruction (hashcat_ctx_t *hashcat_ctx, const int sm_majo nvrtc_options[0] = "--restrict"; nvrtc_options[1] = "--gpu-architecture"; - hc_asprintf (&nvrtc_options[2], "compute_%d%d", sm_major, sm_minor); + hc_asprintf (&nvrtc_options[2], "compute_%d", (device_param->sm_major * 10) + device_param->sm_minor); nvrtc_options[3] = NULL; @@ -481,22 +691,13 @@ static bool opencl_test_instruction (hashcat_ctx_t *hashcat_ctx, cl_context cont OCL_PTR *ocl = (OCL_PTR *) backend_ctx->ocl; #ifndef DEBUG - const int fd_stderr = fileno (stderr); - const int stderr_bak = dup (fd_stderr); - #ifdef _WIN - const int tmp = open ("NUL", O_WRONLY); - #else - const int tmp = open ("/dev/null", O_WRONLY); - #endif - dup2 (tmp, fd_stderr); - close (tmp); + int saved_stderr = suppress_stderr (); #endif const int CL_rc = ocl->clBuildProgram (program, 1, &device, NULL, NULL, NULL); #ifndef DEBUG - dup2 (stderr_bak, fd_stderr); - close (stderr_bak); + restore_stderr (saved_stderr); #endif if (CL_rc != CL_SUCCESS) @@ -620,11 +821,6 @@ static bool write_kernel_binary (hashcat_ctx_t *hashcat_ctx, const char *kernel_ return true; } -u32 backend_device_idx_real_from_virtual (const u32 device_idx, const u32 backend_devices_virtual) -{ - return device_idx / backend_devices_virtual; -} - void generate_source_kernel_filename (const bool slow_candidates, const u32 attack_exec, const u32 attack_kern, const u32 kern_type, const u32 opti_type, char *shared_dir, char *source_file) { if (opti_type & OPTI_TYPE_OPTIMIZED_KERNEL) @@ -950,8 +1146,9 @@ int copy_pws_comp (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param, return 0; } -int choose_kernel (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param, const u32 highest_pw_len, const u64 pws_pos, const u64 pws_cnt, const u32 fast_iteration, const u32 salt_pos) +int choose_kernel (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param, const u32 highest_pw_len, const u64 pws_pos, const u64 pws_cnt, const u32 fast_iteration, const u32 salt_pos, const bool is_autotune) { + bridge_ctx_t *bridge_ctx = hashcat_ctx->bridge_ctx; hashconfig_t *hashconfig = hashcat_ctx->hashconfig; hashes_t *hashes = hashcat_ctx->hashes; module_ctx_t *module_ctx = hashcat_ctx->module_ctx; @@ -1033,20 +1230,20 @@ int choose_kernel (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param, if (highest_pw_len < 16) { - if (run_kernel (hashcat_ctx, device_param, KERN_RUN_1, pws_pos, pws_cnt, true, fast_iteration) == -1) return -1; + if (run_kernel (hashcat_ctx, device_param, KERN_RUN_1, pws_pos, pws_cnt, true, fast_iteration, is_autotune) == -1) return -1; } else if (highest_pw_len < 32) { - if (run_kernel (hashcat_ctx, device_param, KERN_RUN_2, pws_pos, pws_cnt, true, fast_iteration) == -1) return -1; + if (run_kernel (hashcat_ctx, device_param, KERN_RUN_2, pws_pos, pws_cnt, true, fast_iteration, is_autotune) == -1) return -1; } else { - if (run_kernel (hashcat_ctx, device_param, KERN_RUN_3, pws_pos, pws_cnt, true, fast_iteration) == -1) return -1; + if (run_kernel (hashcat_ctx, device_param, KERN_RUN_3, pws_pos, pws_cnt, true, fast_iteration, is_autotune) == -1) return -1; } } else { - if (run_kernel (hashcat_ctx, device_param, KERN_RUN_4, pws_pos, pws_cnt, true, fast_iteration) == -1) return -1; + if (run_kernel (hashcat_ctx, device_param, KERN_RUN_4, pws_pos, pws_cnt, true, fast_iteration, is_autotune) == -1) return -1; } } else @@ -1073,6 +1270,41 @@ int choose_kernel (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param, // as soon as the first restore checkpoint is reached the prediction is accurate. // also the closer it gets to that point. + /* workflow overview: + + ATTACK_EXEC_OUTSIDE_KERNEL: + COPY_AMPLIFIER_MATERIAL + RUN_AMPLIFIER + RUN_UTF16_CONVERT + RUN_INIT + COPY_HOOK_DATA_TO_HOST + CALL_HOOK12 + COPY_HOOK_DATA_TO_DEVICE + SALT_REPEATS (default 1): + RUN_PREPARE + ITER_REPEATS: + RUN_LOOP + RUN_EXTENTED + COPY_BRIDGE_MATERIAL_TO_HOST + BRIDGE_LOOP + COPY_BRIDGE_MATERIAL_TO_DEVICE + COPY_HOOK_DATA_TO_HOST + CALL_HOOK23 + COPY_HOOK_DATA_TO_DEVICE + RUN_INIT2 + SALT_REPEATS (default 1): + RUN_PREPARE2 + ITER2_REPEATS: + RUN_LOOP2 + COPY_BRIDGE_MATERIAL_TO_HOST + BRIDGE_LOOP2 + COPY_BRIDGE_MATERIAL_TO_DEVICE + DEEP_COMP_KERNEL: + RUN_AUX1/2/3/4 + RUN_COMP + CLEAN_HOOK_DATA + */ + if (true) { if (device_param->is_cuda == true) @@ -1130,11 +1362,14 @@ int choose_kernel (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param, } } - if (run_kernel (hashcat_ctx, device_param, KERN_RUN_1, pws_pos, pws_cnt, false, 0) == -1) return -1; + if (hashconfig->opts_type & OPTS_TYPE_INIT) + { + if (run_kernel (hashcat_ctx, device_param, KERN_RUN_1, pws_pos, pws_cnt, false, 0, is_autotune) == -1) return -1; + } if (hashconfig->opts_type & OPTS_TYPE_HOOK12) { - if (run_kernel (hashcat_ctx, device_param, KERN_RUN_12, pws_pos, pws_cnt, false, 0) == -1) return -1; + if (run_kernel (hashcat_ctx, device_param, KERN_RUN_12, pws_pos, pws_cnt, false, 0, is_autotune) == -1) return -1; if (device_param->is_cuda == true) { @@ -1214,7 +1449,7 @@ int choose_kernel (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param, if (device_param->is_opencl == true) { - if (hc_clEnqueueWriteBuffer (hashcat_ctx, device_param->opencl_command_queue, device_param->opencl_d_hooks, CL_FALSE, 0, pws_cnt * hashconfig->hook_size, device_param->hooks_buf, 0, NULL, NULL) == -1) return -1; + if (hc_clEnqueueWriteBuffer (hashcat_ctx, device_param->opencl_command_queue, device_param->opencl_d_hooks, CL_TRUE, 0, pws_cnt * hashconfig->hook_size, device_param->hooks_buf, 0, NULL, NULL) == -1) return -1; } } } @@ -1229,7 +1464,7 @@ int choose_kernel (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param, if (hashconfig->opts_type & OPTS_TYPE_LOOP_PREPARE) { - if (run_kernel (hashcat_ctx, device_param, KERN_RUN_2P, pws_pos, pws_cnt, false, 0) == -1) return -1; + if (run_kernel (hashcat_ctx, device_param, KERN_RUN_2P, pws_pos, pws_cnt, false, 0, is_autotune) == -1) return -1; } if (true) @@ -1247,11 +1482,14 @@ int choose_kernel (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param, device_param->kernel_param.loop_pos = loop_pos; device_param->kernel_param.loop_cnt = loop_left; - if (run_kernel (hashcat_ctx, device_param, KERN_RUN_2, pws_pos, pws_cnt, true, slow_iteration) == -1) return -1; + if (hashconfig->opts_type & OPTS_TYPE_LOOP) + { + if (run_kernel (hashcat_ctx, device_param, KERN_RUN_2, pws_pos, pws_cnt, true, slow_iteration, is_autotune) == -1) return -1; + } if (hashconfig->opts_type & OPTS_TYPE_LOOP_EXTENDED) { - if (run_kernel (hashcat_ctx, device_param, KERN_RUN_2E, pws_pos, pws_cnt, true, slow_iteration) == -1) return -1; + if (run_kernel (hashcat_ctx, device_param, KERN_RUN_2E, pws_pos, pws_cnt, true, slow_iteration, is_autotune) == -1) return -1; } //bug? @@ -1292,9 +1530,98 @@ int choose_kernel (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param, } } + if (hashconfig->bridge_type & BRIDGE_TYPE_LAUNCH_LOOP) + { + if (device_param->is_cuda == true) + { + if (hc_cuMemcpyDtoHAsync (hashcat_ctx, device_param->h_tmps, device_param->cuda_d_tmps, pws_cnt * hashconfig->tmp_size, device_param->cuda_stream) == -1) return -1; + + if (hc_cuStreamSynchronize (hashcat_ctx, device_param->cuda_stream) == -1) return -1; + } + + if (device_param->is_hip == true) + { + if (hc_hipMemcpyDtoHAsync (hashcat_ctx, device_param->h_tmps, device_param->hip_d_tmps, pws_cnt * hashconfig->tmp_size, device_param->hip_stream) == -1) return -1; + + if (hc_hipStreamSynchronize (hashcat_ctx, device_param->hip_stream) == -1) return -1; + } + + #if defined (__APPLE__) + if (device_param->is_metal == true) + { + if (hc_mtlMemcpyDtoH (hashcat_ctx, device_param->metal_command_queue, device_param->h_tmps, device_param->metal_d_tmps, 0, pws_cnt * hashconfig->tmp_size) == -1) return -1; + } + #endif + + if (device_param->is_opencl == true) + { + /* blocking */ + if (hc_clEnqueueReadBuffer (hashcat_ctx, device_param->opencl_command_queue, device_param->opencl_d_tmps, CL_TRUE, 0, pws_cnt * hashconfig->tmp_size, device_param->h_tmps, 0, NULL, NULL) == -1) return -1; + } + + if (bridge_ctx->launch_loop (bridge_ctx->platform_context, device_param, hashconfig, hashes, salt_pos, pws_cnt) == false) return -1; + + if (device_param->is_cuda == true) + { + if (hc_cuMemcpyHtoDAsync (hashcat_ctx, device_param->cuda_d_tmps, device_param->h_tmps, pws_cnt * hashconfig->tmp_size, device_param->cuda_stream) == -1) return -1; + + if (hc_cuStreamSynchronize (hashcat_ctx, device_param->cuda_stream) == -1) return -1; + } + + if (device_param->is_hip == true) + { + if (hc_hipMemcpyHtoDAsync (hashcat_ctx, device_param->hip_d_tmps, device_param->h_tmps, pws_cnt * hashconfig->tmp_size, device_param->hip_stream) == -1) return -1; + + if (hc_hipStreamSynchronize (hashcat_ctx, device_param->hip_stream) == -1) return -1; + } + + #if defined (__APPLE__) + if (device_param->is_metal == true) + { + if (hc_mtlMemcpyHtoD (hashcat_ctx, device_param->metal_command_queue, device_param->metal_d_tmps, 0, device_param->h_tmps, pws_cnt * hashconfig->tmp_size) == -1) return -1; + } + #endif + + if (device_param->is_opencl == true) + { + /* blocking */ + if (hc_clEnqueueWriteBuffer (hashcat_ctx, device_param->opencl_command_queue, device_param->opencl_d_tmps, CL_TRUE, 0, pws_cnt * hashconfig->tmp_size, device_param->h_tmps, 0, NULL, NULL) == -1) return -1; + } + + //bug? + //while (status_ctx->run_thread_level2 == false) break; + if (status_ctx->run_thread_level2 == false) break; + + /** + * speed + */ + + const u64 perf_sum_all = (u64) (pws_cnt); + + double speed_msec = hc_timer_get (device_param->timer_speed); + + const u32 speed_pos = device_param->speed_pos; + + device_param->speed_cnt[speed_pos] = perf_sum_all; + + device_param->speed_msec[speed_pos] = speed_msec; + + if (user_options->speed_only == true) + { + if (speed_msec > 4000) + { + device_param->speed_pos = 1; + + device_param->speed_only_finish = true; + + return 0; + } + } + } + if (hashconfig->opts_type & OPTS_TYPE_HOOK23) { - if (run_kernel (hashcat_ctx, device_param, KERN_RUN_23, pws_pos, pws_cnt, false, 0) == -1) return -1; + if (run_kernel (hashcat_ctx, device_param, KERN_RUN_23, pws_pos, pws_cnt, false, 0, is_autotune) == -1) return -1; if (device_param->is_cuda == true) { @@ -1374,7 +1701,7 @@ int choose_kernel (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param, if (device_param->is_opencl == true) { - if (hc_clEnqueueWriteBuffer (hashcat_ctx, device_param->opencl_command_queue, device_param->opencl_d_hooks, CL_FALSE, 0, pws_cnt * hashconfig->hook_size, device_param->hooks_buf, 0, NULL, NULL) == -1) return -1; + if (hc_clEnqueueWriteBuffer (hashcat_ctx, device_param->opencl_command_queue, device_param->opencl_d_hooks, CL_TRUE, 0, pws_cnt * hashconfig->hook_size, device_param->hooks_buf, 0, NULL, NULL) == -1) return -1; } } } @@ -1386,7 +1713,7 @@ int choose_kernel (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param, if (hashconfig->opts_type & OPTS_TYPE_INIT2) { - if (run_kernel (hashcat_ctx, device_param, KERN_RUN_INIT2, pws_pos, pws_cnt, false, 0) == -1) return -1; + if (run_kernel (hashcat_ctx, device_param, KERN_RUN_INIT2, pws_pos, pws_cnt, false, 0, is_autotune) == -1) return -1; } if (true) @@ -1399,7 +1726,7 @@ int choose_kernel (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param, if (hashconfig->opts_type & OPTS_TYPE_LOOP2_PREPARE) { - if (run_kernel (hashcat_ctx, device_param, KERN_RUN_LOOP2P, pws_pos, pws_cnt, false, 0) == -1) return -1; + if (run_kernel (hashcat_ctx, device_param, KERN_RUN_LOOP2P, pws_pos, pws_cnt, false, 0, is_autotune) == -1) return -1; } if (hashconfig->opts_type & OPTS_TYPE_LOOP2) @@ -1417,7 +1744,7 @@ int choose_kernel (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param, device_param->kernel_param.loop_pos = loop_pos; device_param->kernel_param.loop_cnt = loop_left; - if (run_kernel (hashcat_ctx, device_param, KERN_RUN_LOOP2, pws_pos, pws_cnt, true, slow_iteration) == -1) return -1; + if (run_kernel (hashcat_ctx, device_param, KERN_RUN_LOOP2, pws_pos, pws_cnt, true, slow_iteration, is_autotune) == -1) return -1; //bug? //while (status_ctx->run_thread_level2 == false) break; @@ -1442,6 +1769,65 @@ int choose_kernel (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param, device_param->speed_msec[speed_pos] = speed_msec; } + + if (hashconfig->bridge_type & BRIDGE_TYPE_LAUNCH_LOOP2) + { + if (device_param->is_cuda == true) + { + if (hc_cuMemcpyDtoHAsync (hashcat_ctx, device_param->h_tmps, device_param->cuda_d_tmps, pws_cnt * hashconfig->tmp_size, device_param->cuda_stream) == -1) return -1; + + if (hc_cuStreamSynchronize (hashcat_ctx, device_param->cuda_stream) == -1) return -1; + } + + if (device_param->is_hip == true) + { + if (hc_hipMemcpyDtoHAsync (hashcat_ctx, device_param->h_tmps, device_param->hip_d_tmps, pws_cnt * hashconfig->tmp_size, device_param->hip_stream) == -1) return -1; + + if (hc_hipStreamSynchronize (hashcat_ctx, device_param->hip_stream) == -1) return -1; + } + + #if defined (__APPLE__) + if (device_param->is_metal == true) + { + if (hc_mtlMemcpyDtoH (hashcat_ctx, device_param->metal_command_queue, device_param->h_tmps, device_param->metal_d_tmps, 0, pws_cnt * hashconfig->tmp_size) == -1) return -1; + } + #endif + + if (device_param->is_opencl == true) + { + /* blocking */ + if (hc_clEnqueueReadBuffer (hashcat_ctx, device_param->opencl_command_queue, device_param->opencl_d_tmps, CL_TRUE, 0, pws_cnt * hashconfig->tmp_size, device_param->h_tmps, 0, NULL, NULL) == -1) return -1; + } + + if (bridge_ctx->launch_loop2 (bridge_ctx->platform_context, device_param, hashconfig, hashes, salt_pos, pws_cnt) == false) return -1; + + if (device_param->is_cuda == true) + { + if (hc_cuMemcpyHtoDAsync (hashcat_ctx, device_param->cuda_d_tmps, device_param->h_tmps, pws_cnt * hashconfig->tmp_size, device_param->cuda_stream) == -1) return -1; + + if (hc_cuStreamSynchronize (hashcat_ctx, device_param->cuda_stream) == -1) return -1; + } + + if (device_param->is_hip == true) + { + if (hc_hipMemcpyHtoDAsync (hashcat_ctx, device_param->hip_d_tmps, device_param->h_tmps, pws_cnt * hashconfig->tmp_size, device_param->hip_stream) == -1) return -1; + + if (hc_hipStreamSynchronize (hashcat_ctx, device_param->hip_stream) == -1) return -1; + } + + #if defined (__APPLE__) + if (device_param->is_metal == true) + { + if (hc_mtlMemcpyHtoD (hashcat_ctx, device_param->metal_command_queue, device_param->metal_d_tmps, 0, device_param->h_tmps, pws_cnt * hashconfig->tmp_size) == -1) return -1; + } + #endif + + if (device_param->is_opencl == true) + { + /* blocking */ + if (hc_clEnqueueWriteBuffer (hashcat_ctx, device_param->opencl_command_queue, device_param->opencl_d_tmps, CL_TRUE, 0, pws_cnt * hashconfig->tmp_size, device_param->h_tmps, 0, NULL, NULL) == -1) return -1; + } + } } } } @@ -1462,30 +1848,50 @@ int choose_kernel (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param, device_param->kernel_param.loop_pos = loops_pos; device_param->kernel_param.loop_cnt = loops_cnt; + int aux_cnt = 0; + if (hashconfig->opts_type & OPTS_TYPE_AUX1) { - if (run_kernel (hashcat_ctx, device_param, KERN_RUN_AUX1, pws_pos, pws_cnt, false, 0) == -1) return -1; + if (run_kernel (hashcat_ctx, device_param, KERN_RUN_AUX1, pws_pos, pws_cnt, false, 0, is_autotune) == -1) return -1; if (status_ctx->run_thread_level2 == false) break; + + aux_cnt++; } if (hashconfig->opts_type & OPTS_TYPE_AUX2) { - if (run_kernel (hashcat_ctx, device_param, KERN_RUN_AUX2, pws_pos, pws_cnt, false, 0) == -1) return -1; + if (run_kernel (hashcat_ctx, device_param, KERN_RUN_AUX2, pws_pos, pws_cnt, false, 0, is_autotune) == -1) return -1; if (status_ctx->run_thread_level2 == false) break; + + aux_cnt++; } if (hashconfig->opts_type & OPTS_TYPE_AUX3) { - if (run_kernel (hashcat_ctx, device_param, KERN_RUN_AUX3, pws_pos, pws_cnt, false, 0) == -1) return -1; + if (run_kernel (hashcat_ctx, device_param, KERN_RUN_AUX3, pws_pos, pws_cnt, false, 0, is_autotune) == -1) return -1; if (status_ctx->run_thread_level2 == false) break; + + aux_cnt++; } if (hashconfig->opts_type & OPTS_TYPE_AUX4) { - if (run_kernel (hashcat_ctx, device_param, KERN_RUN_AUX4, pws_pos, pws_cnt, false, 0) == -1) return -1; + if (run_kernel (hashcat_ctx, device_param, KERN_RUN_AUX4, pws_pos, pws_cnt, false, 0, is_autotune) == -1) return -1; + + if (status_ctx->run_thread_level2 == false) break; + + aux_cnt++; + } + + if (aux_cnt == 0) + { + if (hashconfig->opts_type & OPTS_TYPE_COMP) + { + if (run_kernel (hashcat_ctx, device_param, KERN_RUN_3, pws_pos, pws_cnt, false, 0, is_autotune) == -1) return -1; + } if (status_ctx->run_thread_level2 == false) break; } @@ -1502,7 +1908,7 @@ int choose_kernel (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param, const u32 deep_comp_kernel = module_ctx->module_deep_comp_kernel (hashes, salt_pos, loops_pos); - if (run_kernel (hashcat_ctx, device_param, deep_comp_kernel, pws_pos, pws_cnt, false, 0) == -1) return -1; + if (run_kernel (hashcat_ctx, device_param, deep_comp_kernel, pws_pos, pws_cnt, false, 0, is_autotune) == -1) return -1; if (status_ctx->run_thread_level2 == false) break; } @@ -1510,7 +1916,10 @@ int choose_kernel (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param, } else { - if (run_kernel (hashcat_ctx, device_param, KERN_RUN_3, pws_pos, pws_cnt, false, 0) == -1) return -1; + if (hashconfig->opts_type & OPTS_TYPE_COMP) + { + if (run_kernel (hashcat_ctx, device_param, KERN_RUN_3, pws_pos, pws_cnt, false, 0, is_autotune) == -1) return -1; + } } } @@ -2064,7 +2473,7 @@ int run_opencl_kernel_bzero (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *devi return 0; } -int run_kernel (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param, const u32 kern_run, const u64 pws_pos, const u64 num, const u32 event_update, const u32 iteration) +int run_kernel (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param, const u32 kern_run, const u64 pws_pos, const u64 num, const u32 event_update, const u32 iteration, const bool is_autotune) { const hashconfig_t *hashconfig = hashcat_ctx->hashconfig; const status_ctx_t *status_ctx = hashcat_ctx->status_ctx; @@ -2227,6 +2636,11 @@ int run_kernel (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param, con } } + if (is_autotune == true) + { + if (hc_cuLaunchKernel (hashcat_ctx, cuda_function, num_elements, 1, 1, kernel_threads, 1, 1, dynamic_shared_mem, device_param->cuda_stream, device_param->kernel_params, NULL) == -1) return -1; + } + if (hc_cuEventRecord (hashcat_ctx, device_param->cuda_event1, device_param->cuda_stream) == -1) return -1; if (hc_cuLaunchKernel (hashcat_ctx, cuda_function, num_elements, 1, 1, kernel_threads, 1, 1, dynamic_shared_mem, device_param->cuda_stream, device_param->kernel_params, NULL) == -1) return -1; @@ -2323,6 +2737,11 @@ int run_kernel (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param, con } } + if (is_autotune == true) + { + if (hc_hipLaunchKernel (hashcat_ctx, hip_function, num_elements, 1, 1, kernel_threads, 1, 1, dynamic_shared_mem, device_param->hip_stream, device_param->kernel_params, NULL) == -1) return -1; + } + if (hc_hipEventRecord (hashcat_ctx, device_param->hip_event1, device_param->hip_stream) == -1) return -1; if (hc_hipLaunchKernel (hashcat_ctx, hip_function, num_elements, 1, 1, kernel_threads, 1, 1, dynamic_shared_mem, device_param->hip_stream, device_param->kernel_params, NULL) == -1) return -1; @@ -2382,18 +2801,17 @@ int run_kernel (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param, con if (hc_mtlEncodeComputeCommand_pre (hashcat_ctx, metal_pipeline, device_param->metal_command_queue, &metal_command_buffer, &metal_command_encoder) == -1) return -1; - // all buffers must be allocated - int tmp_buf_cnt = 0; - mtl_mem tmp_buf[25] = { 0 }; + mtl_mem metal_buffer = NULL; + if (hc_mtlCreateBuffer (hashcat_ctx, device_param->metal_device, sizeof (u8), NULL, &metal_buffer) == -1) return -1; + + // all buffers must be allocated for (u32 i = 0; i <= 24; i++) { // allocate fake buffer if NULL if (device_param->kernel_params[i] == NULL) { - if (hc_mtlCreateBuffer (hashcat_ctx, device_param->metal_device, sizeof (u8), NULL, &tmp_buf[tmp_buf_cnt]) == -1) return -1; - if (hc_mtlSetCommandEncoderArg (hashcat_ctx, metal_command_encoder, 0, i, tmp_buf[tmp_buf_cnt], NULL, 0) == -1) return -1; - tmp_buf_cnt++; + if (hc_mtlSetCommandEncoderArg (hashcat_ctx, metal_command_encoder, 0, i, metal_buffer, NULL, 0) == -1) return -1; } else { @@ -2448,6 +2866,27 @@ int run_kernel (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param, con double ms = 0; + if (is_autotune == true) + { + hc_mtlEncodeComputeCommand (hashcat_ctx, metal_command_encoder, metal_command_buffer, global_work_size[0], local_work_size[0], &ms); + + // hc_mtlEncodeComputeCommand_pre() must be called before every hc_mtlEncodeComputeCommand() + if (hc_mtlEncodeComputeCommand_pre (hashcat_ctx, metal_pipeline, device_param->metal_command_queue, &metal_command_buffer, &metal_command_encoder) == -1) return -1; + + for (u32 i = 0; i <= 24; i++) + { + // allocate fake buffer if NULL + if (device_param->kernel_params[i] == NULL) + { + if (hc_mtlSetCommandEncoderArg (hashcat_ctx, metal_command_encoder, 0, i, metal_buffer, NULL, 0) == -1) return -1; + } + else + { + if (hc_mtlSetCommandEncoderArg (hashcat_ctx, metal_command_encoder, 0, i, device_param->kernel_params[i], NULL, 0) == -1) return -1; + } + } + } + const int rc_cc = hc_mtlEncodeComputeCommand (hashcat_ctx, metal_command_encoder, metal_command_buffer, global_work_size[0], local_work_size[0], &ms); if (rc_cc != -1) @@ -2473,12 +2912,6 @@ int run_kernel (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param, con // release tmp_buf - for (int i = 0; i < tmp_buf_cnt; i++) - { - hc_mtlReleaseMemObject (hashcat_ctx, tmp_buf[i]); - tmp_buf[i] = NULL; - } - if (rc_cc == -1) return -1; } #endif // __APPLE__ @@ -2556,6 +2989,11 @@ int run_kernel (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param, con const size_t global_work_size[3] = { num_elements, 1, 1 }; const size_t local_work_size[3] = { kernel_threads, 1, 1 }; + if (is_autotune == true) + { + if (hc_clEnqueueNDRangeKernel (hashcat_ctx, device_param->opencl_command_queue, opencl_kernel, 1, NULL, global_work_size, local_work_size, 0, NULL, &opencl_event) == -1) return -1; + } + if (hc_clEnqueueNDRangeKernel (hashcat_ctx, device_param->opencl_command_queue, opencl_kernel, 1, NULL, global_work_size, local_work_size, 0, NULL, &opencl_event) == -1) return -1; // spin damper section @@ -3479,6 +3917,23 @@ int run_copy (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param, const } } + if (device_param->is_cuda == true) + { + if (hc_cuStreamSynchronize (hashcat_ctx, device_param->cuda_stream) == -1) return -1; + } + + if (device_param->is_hip == true) + { + if (hc_hipStreamSynchronize (hashcat_ctx, device_param->hip_stream) == -1) return -1; + } + + #if defined (__APPLE__) + if (device_param->is_metal == true) + { + // what to do here? + } + #endif + if (device_param->is_opencl == true) { if (hc_clFlush (hashcat_ctx, device_param->opencl_command_queue) == -1) return -1; @@ -3552,13 +4007,6 @@ int run_cracker (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param, co device_param->outerloop_pos = 0; device_param->outerloop_left = pws_cnt; - // we ignore the time to copy data over pci bus in this case - - if (user_options->speed_only == true) - { - hc_timer_set (&device_param->timer_speed); - } - // loop start: most outer loop = salt iteration, then innerloops (if multi) u32 salts_cnt = hashes->salts_cnt; @@ -4086,7 +4534,7 @@ int run_cracker (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param, co } } - if (choose_kernel (hashcat_ctx, device_param, highest_pw_len, pws_pos, pws_cnt, fast_iteration, salt_pos) == -1) return -1; + if (choose_kernel (hashcat_ctx, device_param, highest_pw_len, pws_pos, pws_cnt, fast_iteration, salt_pos, false) == -1) return -1; /** * benchmark was aborted because too long kernel runtime (slow hashes only) @@ -4153,16 +4601,6 @@ int run_cracker (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param, co if (user_options->speed_only == true) { - // let's abort this so that the user doesn't have to wait too long on the result - // for slow hashes it's fine anyway as boost mode should be turned on - - if (hashconfig->attack_exec == ATTACK_EXEC_OUTSIDE_KERNEL) - { - device_param->speed_only_finish = true; - - break; - } - double total_msec = device_param->speed_msec[0]; for (u32 speed_pos = 1; speed_pos < device_param->speed_pos; speed_pos++) @@ -4239,7 +4677,7 @@ int run_cracker (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param, co device_param->outerloop_msec = total_msec * hashes->salts_cnt * device_param->outerloop_multi; - device_param->speed_only_finish = true; + //device_param->speed_only_finish = true; } if (iconv_enabled == true) @@ -4401,17 +4839,6 @@ int backend_ctx_init (hashcat_ctx_t *hashcat_ctx) hiprtc_close (hashcat_ctx); } - if ((rc_hip_init == 0) && (rc_hiprtc_init == -1)) - { - #if defined (_WIN) - event_log_warning (hashcat_ctx, "Support for HIPRTC was dropped by AMD Adrenalin Edition 22.7.1 and later."); - event_log_warning (hashcat_ctx, "This is not a hashcat problem."); - event_log_warning (hashcat_ctx, NULL); - event_log_warning (hashcat_ctx, "Please install the AMD HIP SDK"); - event_log_warning (hashcat_ctx, NULL); - #endif - } - /** * Check if both HIP and HIPRTC were load successful */ @@ -4456,8 +4883,7 @@ int backend_ctx_init (hashcat_ctx_t *hashcat_ctx) // hiprtc_close (hashcat_ctx); } #else - // 500 is ok - if (hip_runtimeVersion < 50013601) + if (hip_runtimeVersion < 60200000) { int hip_version_major = (hip_runtimeVersion - 0) / 10000000; int hip_version_minor = (hip_runtimeVersion - (hip_version_major * 10000000)) / 100000; @@ -4616,11 +5042,7 @@ int backend_ctx_init (hashcat_ctx_t *hashcat_ctx) * Backend device selection */ - bool backend_devices_filter[DEVICES_MAX + 1]; - - if (setup_backend_devices_filter (hashcat_ctx, user_options->backend_devices, backend_devices_filter) == false) return -1; - - for (int i = 0; i <= DEVICES_MAX; i++) backend_ctx->backend_devices_filter[i] = backend_devices_filter[i]; + if (setup_backend_devices_filter (hashcat_ctx, user_options->backend_devices, backend_ctx->backend_devices_filter) == false) return -1; /** * OpenCL device type selection @@ -4793,6 +5215,10 @@ int backend_ctx_init (hashcat_ctx_t *hashcat_ctx) { opencl_platform_vendor_id = VENDOR_ID_POCL; } + else if (strcmp (opencl_platform_vendor, CL_VENDOR_MICROSOFT) == 0) + { + opencl_platform_vendor_id = VENDOR_ID_MICROSOFT; + } else { opencl_platform_vendor_id = VENDOR_ID_GENERIC; @@ -4839,12 +5265,14 @@ int backend_ctx_init (hashcat_ctx_t *hashcat_ctx) } } + /* no longer used opencl_platform_devices_cnt *= user_options->backend_devices_virtual; for (int i = opencl_platform_devices_cnt - 1; i >= 0; i--) { opencl_platform_devices[i] = opencl_platform_devices[backend_device_idx_real_from_virtual (i, user_options->backend_devices_virtual)]; } + */ opencl_platforms_devices[opencl_platforms_idx] = opencl_platform_devices; opencl_platforms_devices_cnt[opencl_platforms_idx] = opencl_platform_devices_cnt; @@ -4899,6 +5327,11 @@ int backend_ctx_init (hashcat_ctx_t *hashcat_ctx) } } + // we don't want accelerators here + // for this kind of devices, we use accelerator bridge plugin interface + + opencl_device_types_filter &= ~CL_DEVICE_TYPE_ACCELERATOR; + backend_ctx->opencl_device_types_filter = opencl_device_types_filter; } } @@ -4946,6 +5379,8 @@ int backend_ctx_init (hashcat_ctx_t *hashcat_ctx) event_log_warning (hashcat_ctx, " \"CUDA Toolkit\" (9.0 or later)"); event_log_warning (hashcat_ctx, NULL); + hcfree (backend_ctx->devices_param); + return -1; } @@ -4985,6 +5420,7 @@ void backend_ctx_destroy (hashcat_ctx_t *hashcat_ctx) int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime) { + const bridge_ctx_t *bridge_ctx = hashcat_ctx->bridge_ctx; const folder_config_t *folder_config = hashcat_ctx->folder_config; backend_ctx_t *backend_ctx = hashcat_ctx->backend_ctx; user_options_t *user_options = hashcat_ctx->user_options; @@ -5000,7 +5436,16 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime) bool need_sysfs_cpu = false; bool need_iokit = false; - int backend_devices_idx = 0; + int bridge_link_device = 0; // this will only count active device + + int backend_devices_idx = 0; // this will not only count active devices + + bool is_virtualized = ((user_options->backend_devices_virtmulti > 1) || (bridge_ctx->enabled == true)) ? true : false; + + int virtmulti = (bridge_ctx->enabled == true) ? bridge_ctx->get_unit_count (bridge_ctx->platform_context) : (int) user_options->backend_devices_virtmulti; + + int virthost = -1; + int virthost_finder = user_options->backend_devices_virthost; // CUDA @@ -5016,7 +5461,21 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime) cuda_close (hashcat_ctx); } - cuda_devices_cnt *= user_options->backend_devices_virtual; + if (is_virtualized == true) + { + if ((virthost == -1) && (virthost_finder <= cuda_devices_cnt)) + { + cuda_devices_cnt = virtmulti; + + virthost = virthost_finder - 1; + } + else + { + virthost_finder -= cuda_devices_cnt; + + cuda_devices_cnt = 0; + } + } backend_ctx->cuda_devices_cnt = cuda_devices_cnt; @@ -5026,7 +5485,7 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime) { const u32 device_id = backend_devices_idx; - const u32 cuda_devices_idx_real = backend_device_idx_real_from_virtual (cuda_devices_idx, user_options->backend_devices_virtual); + const u32 cuda_devices_idx_real = (is_virtualized == true) ? virthost : cuda_devices_idx; hc_device_param_t *device_param = &devices_param[backend_devices_idx]; @@ -5073,6 +5532,45 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime) hc_string_trim_trailing (device_name); + // regsPerBlock + + int max_registers_per_block = 0; + + if (hc_cuDeviceGetAttribute (hashcat_ctx, &max_registers_per_block, CU_DEVICE_ATTRIBUTE_MAX_REGISTERS_PER_BLOCK, cuda_device) == -1) + { + device_param->skipped = true; + + continue; + } + + device_param->regsPerBlock = max_registers_per_block; + + // regsPerMultiprocessor + + int max_registers_per_multiprocessor = 0; + + if (hc_cuDeviceGetAttribute (hashcat_ctx, &max_registers_per_multiprocessor, CU_DEVICE_ATTRIBUTE_MAX_REGISTERS_PER_MULTIPROCESSOR, cuda_device) == -1) + { + device_param->skipped = true; + + continue; + } + + device_param->regsPerMultiprocessor = max_registers_per_multiprocessor; + + // unified memory + + int device_host_unified_memory = 0; + + if (hc_cuDeviceGetAttribute (hashcat_ctx, &device_host_unified_memory, CU_DEVICE_ATTRIBUTE_INTEGRATED, cuda_device) == -1) + { + device_param->skipped = true; + + continue; + } + + device_param->device_host_unified_memory = device_host_unified_memory; + // device_processors int device_processors = 0; @@ -5279,7 +5777,7 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime) // skipped - if (!backend_ctx->backend_devices_filter[device_id]) + if (backend_ctx->backend_devices_filter[device_id] == 1) { device_param->skipped = true; } @@ -5328,7 +5826,7 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime) if (device_param->kernel_exec_timeout != 0) { - if (user_options->quiet == false) + if ((user_options->quiet == false) && (is_virtualized == false)) { event_log_advice (hashcat_ctx, "* Device #%u: WARNING! Kernel exec timeout is not disabled.", device_id + 1); event_log_advice (hashcat_ctx, " This may cause \"CL_OUT_OF_RESOURCES\" or related errors."); @@ -5386,7 +5884,7 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime) continue; } - device_param->device_available_mem = (u64) free; + device_param->device_available_mem = ((u64) free * (100 - user_options->backend_devices_keepfree)) / 100; if (hc_cuCtxPopCurrent (hashcat_ctx, &cuda_context) == -1) { @@ -5406,7 +5904,12 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime) * activate device */ - if (device_param->skipped == false) cuda_devices_active++; + if (device_param->skipped == false) + { + device_param->bridge_link_device = bridge_link_device++; + + cuda_devices_active++; + } } } @@ -5427,7 +5930,21 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime) hip_close (hashcat_ctx); } - hip_devices_cnt *= user_options->backend_devices_virtual; + if (is_virtualized == true) + { + if ((virthost == -1) && (virthost_finder <= hip_devices_cnt)) + { + hip_devices_cnt = virtmulti; + + virthost = virthost_finder - 1; + } + else + { + virthost_finder -= hip_devices_cnt; + + hip_devices_cnt = 0; + } + } backend_ctx->hip_devices_cnt = hip_devices_cnt; @@ -5437,7 +5954,7 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime) { const u32 device_id = backend_devices_idx; - const u32 hip_devices_idx_real = backend_device_idx_real_from_virtual (hip_devices_idx, user_options->backend_devices_virtual); + const u32 hip_devices_idx_real = (is_virtualized == true) ? virthost : hip_devices_idx; hc_device_param_t *device_param = &devices_param[backend_devices_idx]; @@ -5484,6 +6001,19 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime) hc_string_trim_trailing (device_name); + // unified memory + + int device_host_unified_memory = 0; + + if (hc_hipDeviceGetAttribute (hashcat_ctx, &device_host_unified_memory, hipDeviceAttributeIntegrated, hip_device) == -1) + { + device_param->skipped = true; + + continue; + } + + device_param->device_host_unified_memory = device_host_unified_memory; + // device_processors int device_processors = 0; @@ -5527,6 +6057,41 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime) device_param->hip_warp_size = hip_warp_size; + // gcnArchName + + hipDeviceProp_t prop; + + if (hc_hipGetDeviceProperties (hashcat_ctx, &prop, hip_device) == -1) + { + device_param->skipped = true; + + continue; + } + + device_param->gcnArchName = strdup (prop.gcnArchName); + + // regsPerBlock + + if (hc_hipGetDeviceProperties (hashcat_ctx, &prop, hip_device) == -1) + { + device_param->skipped = true; + + continue; + } + + device_param->regsPerBlock = prop.regsPerBlock; + + // regsPerMultiprocessor + + if (hc_hipGetDeviceProperties (hashcat_ctx, &prop, hip_device) == -1) + { + device_param->skipped = true; + + continue; + } + + device_param->regsPerMultiprocessor = prop.regsPerMultiprocessor; + // sm_minor, sm_major int sm_major = 0; @@ -5696,7 +6261,7 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime) // skipped - if (!backend_ctx->backend_devices_filter[device_id]) + if (backend_ctx->backend_devices_filter[device_id] == 1) { device_param->skipped = true; } @@ -5745,7 +6310,7 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime) if (device_param->kernel_exec_timeout != 0) { - if (user_options->quiet == false) + if ((user_options->quiet == false) && (is_virtualized == false)) { event_log_advice (hashcat_ctx, "* Device #%u: WARNING! Kernel exec timeout is not disabled.", device_id + 1); event_log_advice (hashcat_ctx, " This may cause \"CL_OUT_OF_RESOURCES\" or related errors."); @@ -5796,7 +6361,7 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime) continue; } - device_param->device_available_mem = (u64) free; + device_param->device_available_mem = ((u64) free * (100 - user_options->backend_devices_keepfree)) / 100; if (hc_hipCtxPopCurrent (hashcat_ctx, &hip_context) == -1) { @@ -5837,7 +6402,12 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime) * activate device */ - if (device_param->skipped == false) hip_devices_active++; + if (device_param->skipped == false) + { + device_param->bridge_link_device = bridge_link_device++; + + hip_devices_active++; + } } } @@ -5859,7 +6429,21 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime) mtl_close (hashcat_ctx); } - metal_devices_cnt *= user_options->backend_devices_virtual; + if (is_virtualized == true) + { + if ((virthost == -1) && (virthost_finder <= metal_devices_cnt)) + { + metal_devices_cnt = virtmulti; + + virthost = virthost_finder - 1; + } + else + { + virthost_finder -= metal_devices_cnt; + + metal_devices_cnt = 0; + } + } backend_ctx->metal_devices_cnt = metal_devices_cnt; @@ -5869,7 +6453,7 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime) { const u32 device_id = backend_devices_idx; - const u32 metal_devices_idx_real = backend_device_idx_real_from_virtual (metal_devices_idx, user_options->backend_devices_virtual); + const u32 metal_devices_idx_real = (is_virtualized == true) ? virthost : metal_devices_idx; hc_device_param_t *device_param = &devices_param[backend_devices_idx]; @@ -6193,7 +6777,7 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime) // skipped - if (!backend_ctx->backend_devices_filter[device_id]) + if (backend_ctx->backend_devices_filter[device_id] == 1) { device_param->skipped = true; } @@ -6245,7 +6829,12 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime) * activate device */ - if (device_param->skipped == false) metal_devices_active++; + if (device_param->skipped == false) + { + device_param->bridge_link_device = bridge_link_device++; + + metal_devices_active++; + } } } #endif // __APPLE__ @@ -6277,6 +6866,24 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime) cl_uint opencl_platform_vendor_id = opencl_platforms_vendor_id[opencl_platforms_idx]; char *opencl_platform_version = opencl_platforms_version[opencl_platforms_idx]; + if (is_virtualized == true) + { + if ((virthost == -1) && (virthost_finder <= (int) opencl_platform_devices_cnt)) + { + opencl_platform_devices_cnt = virtmulti; + + virthost = virthost_finder - 1; + } + else + { + virthost_finder -= (int) opencl_platform_devices_cnt; + + opencl_platform_devices_cnt = 0; + } + + opencl_platforms_devices_cnt[opencl_platforms_idx] = opencl_platform_devices_cnt; + } + for (u32 opencl_platform_devices_idx = 0; opencl_platform_devices_idx < opencl_platform_devices_cnt; opencl_platform_devices_idx++, backend_devices_idx++, opencl_devices_cnt++) { const u32 device_id = backend_devices_idx; @@ -6291,7 +6898,7 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime) device_param->opencl_platform_vendor_id = opencl_platform_vendor_id; - device_param->opencl_device = opencl_platform_devices[opencl_platform_devices_idx]; + device_param->opencl_device = opencl_platform_devices[(is_virtualized == true) ? virthost : (int) opencl_platform_devices_idx]; //device_param->opencl_platform = opencl_platform; @@ -6487,6 +7094,10 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime) { opencl_device_vendor_id = VENDOR_ID_POCL; } + else if (strcmp (opencl_device_vendor, CL_VENDOR_MICROSOFT) == 0) + { + opencl_device_vendor_id = VENDOR_ID_MICROSOFT; + } else { opencl_device_vendor_id = VENDOR_ID_GENERIC; @@ -6551,6 +7162,33 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime) device_param->device_processors = device_processors; + #if defined (__APPLE__) + if (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU) + { + if (backend_ctx->metal_devices_cnt > 0 && backend_ctx->metal_devices_active > 0) + { + for (int metal_devices_idx = 0; metal_devices_idx < backend_ctx->metal_devices_cnt; metal_devices_idx++) + { + const int tmp_backend_devices_idx = backend_ctx->backend_device_from_metal[metal_devices_idx]; + + hc_device_param_t *tmp_device_param = backend_ctx->devices_param + tmp_backend_devices_idx; + + if (strstr (device_param->device_name, tmp_device_param->device_name) || strstr (tmp_device_param->device_name, device_param->device_name)) + { + // can't detect the actual value of device_processors on macOS Intel with Metal + // set the value of Metal device_processor from OpenCL to solve the issue + if (tmp_device_param->device_processors != device_param->device_processors) + { + tmp_device_param->device_processors = device_param->device_processors; + + break; + } + } + } + } + } + #endif // __APPLE__ + // device_host_unified_memory cl_bool device_host_unified_memory = false; @@ -6599,10 +7237,6 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime) device_param->device_maxmem_alloc /= 2; } - // note we'll limit to 2gb, otherwise this causes all kinds of weird errors because of possible integer overflows in opencl runtimes - // testwise disabling that - //device_param->device_maxmem_alloc = MIN (device_maxmem_alloc, 0x7fffffff); - // max_work_group_size size_t device_maxworkgroup_size = 0; @@ -6992,7 +7626,7 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime) // skipped - if (!backend_ctx->backend_devices_filter[device_id]) + if (backend_ctx->backend_devices_filter[device_id] == 1) { device_param->skipped = true; } @@ -7149,6 +7783,39 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime) device_param->pcie_bus = amdtopo.pcie.bus; device_param->pcie_device = amdtopo.pcie.device; device_param->pcie_function = amdtopo.pcie.function; + + if (user_options->stdout_flag == false) + { + // recommend HIP + + if ((backend_ctx->hip == NULL) || (backend_ctx->hiprtc == NULL)) + { + if (user_options->backend_ignore_hip == false) + { + if (backend_ctx->rc_hip_init == -1) + { + event_log_warning (hashcat_ctx, "Failed to initialize the AMD main driver HIP runtime library. Please install the AMD HIP SDK."); + event_log_warning (hashcat_ctx, NULL); + } + else + { + event_log_warning (hashcat_ctx, "Successfully initialized the AMD main driver HIP runtime library."); + event_log_warning (hashcat_ctx, NULL); + } + + if (backend_ctx->rc_hiprtc_init == -1) + { + event_log_warning (hashcat_ctx, "Failed to initialize AMD HIP RTC library. Please install the AMD HIP SDK."); + event_log_warning (hashcat_ctx, NULL); + } + else + { + event_log_warning (hashcat_ctx, "Successfully initialized AMD HIP RTC library."); + event_log_warning (hashcat_ctx, NULL); + } + } + } + } } if ((device_param->opencl_platform_vendor_id == VENDOR_ID_NV) && (device_param->opencl_device_vendor_id == VENDOR_ID_NV)) @@ -7461,7 +8128,7 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime) if (device_param->kernel_exec_timeout != 0) { - if (user_options->quiet == false) + if ((user_options->quiet == false) && (is_virtualized == false)) { event_log_warning (hashcat_ctx, "* Device #%u: WARNING! Kernel exec timeout is not disabled.", device_id + 1); event_log_warning (hashcat_ctx, " This may cause \"CL_OUT_OF_RESOURCES\" or related errors."); @@ -7564,6 +8231,8 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime) * activate device */ + device_param->bridge_link_device = bridge_link_device++; + opencl_devices_active++; } } @@ -7595,7 +8264,7 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime) if (device_param->skipped == false) { - if (backend_ctx->backend_devices_filter[DEVICES_MAX]) + if (backend_ctx->backend_devices_filter[device_param->device_id] == 1) { if ((user_options->quiet == false) && (user_options->backend_info == 0)) { @@ -7672,22 +8341,6 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime) return -1; } - if (!backend_ctx->backend_devices_filter[DEVICES_MAX]) - { - const u64 backend_devices_cnt_mask = ~(((u64) -1 >> backend_ctx->backend_devices_cnt) << backend_ctx->backend_devices_cnt); - - for (int i = backend_ctx->backend_devices_cnt; i < DEVICES_MAX; i++) - { - if (backend_ctx->backend_devices_filter[i]) - { - event_log_error (hashcat_ctx, "An invalid device was specified using the --backend-devices parameter."); - event_log_error (hashcat_ctx, "The specified device was higher than the number of available devices (%u).", backend_ctx->backend_devices_cnt); - - return -1; - } - } - } - // time or resource intensive operations which we do not run if the corresponding device was skipped by the user if (backend_ctx->cuda) @@ -7810,7 +8463,13 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime) device_param->device_available_mem = device_param->device_global_mem - MAX_ALLOC_CHECKS_SIZE; - if (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU) + if (user_options->backend_devices_keepfree < 100) + { + device_param->device_available_mem = (device_param->device_global_mem * (100 - user_options->backend_devices_keepfree)) / 100; + } + // this section is creating more problems than it solves, so lets use a fixed multiplier instead + // users can override with --backend-devices-keepfree=100 + else if ((device_param->opencl_device_type & CL_DEVICE_TYPE_GPU) && (device_param->device_host_unified_memory == 0)) { // following the same logic as for OpenCL, explained later @@ -8023,108 +8682,168 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime) */ } - // available device memory - // This test causes an GPU memory usage spike. - // In case there are multiple hashcat instances starting at the same time this will cause GPU out of memory errors which otherwise would not exist. - // We will simply not run it if that device was skipped by the user. + // available device memory + // first trying to check if we can get device_available_mem from cuda/hip alias device - if (device_param->device_global_mem) + bool updated_device_available_mem = false; + + if (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU) { - #define MAX_ALLOC_CHECKS_CNT 8192 - #define MAX_ALLOC_CHECKS_SIZE (64 * 1024 * 1024) - - device_param->device_available_mem = device_param->device_global_mem - MAX_ALLOC_CHECKS_SIZE; - - if ((device_param->opencl_device_type & CL_DEVICE_TYPE_GPU) && ((device_param->opencl_platform_vendor_id != VENDOR_ID_INTEL_SDK) || (device_param->device_host_unified_memory == 0))) + if (device_param->opencl_platform_vendor_id == VENDOR_ID_NV) { - // OK, so the problem here is the following: - // There's just CL_DEVICE_GLOBAL_MEM_SIZE to ask OpenCL about the total memory on the device, - // but there's no way to ask for available memory on the device. - // In combination, most OpenCL runtimes implementation of clCreateBuffer() - // are doing so called lazy memory allocation on the device. - // Now, if the user has X11 (or a game or anything that takes a lot of GPU memory) - // running on the host we end up with an error type of this: - // clEnqueueNDRangeKernel(): CL_MEM_OBJECT_ALLOCATION_FAILURE - // The clEnqueueNDRangeKernel() is because of the lazy allocation - // The best way to workaround this problem is if we would be able to ask for available memory, - // The idea here is to try to evaluate available memory by allocating it till it errors - - cl_mem *tmp_device = (cl_mem *) hccalloc (MAX_ALLOC_CHECKS_CNT, sizeof (cl_mem)); - - u64 c; - - for (c = 0; c < MAX_ALLOC_CHECKS_CNT; c++) + if (backend_ctx->cuda_devices_cnt > 0 && backend_ctx->cuda_devices_active > 0) { - if (((c + 1 + 1) * MAX_ALLOC_CHECKS_SIZE) >= device_param->device_global_mem) break; - - // work around, for some reason apple opencl can't have buffers larger 2^31 - // typically runs into trap 6 - // maybe 32/64 bit problem affecting size_t? - // this seems to affect global memory as well no just single allocations - - if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->is_metal == false)) + for (int cuda_devices_idx = 0; cuda_devices_idx < backend_ctx->cuda_devices_cnt; cuda_devices_idx++) { - const size_t undocumented_single_allocation_apple = 0x7fffffff; + const int tmp_backend_devices_idx = backend_ctx->backend_device_from_cuda[cuda_devices_idx]; - if (((c + 1 + 1) * MAX_ALLOC_CHECKS_SIZE) >= undocumented_single_allocation_apple) break; - } + hc_device_param_t *tmp_device_param = backend_ctx->devices_param + tmp_backend_devices_idx; - cl_int CL_err; - - OCL_PTR *ocl = (OCL_PTR *) backend_ctx->ocl; - - tmp_device[c] = ocl->clCreateBuffer (context, CL_MEM_READ_WRITE, MAX_ALLOC_CHECKS_SIZE, NULL, &CL_err); - - if (CL_err != CL_SUCCESS) - { - c--; - - break; - } - - // transfer only a few byte should be enough to force the runtime to actually allocate the memory - - u8 tmp_host[8]; - - if (ocl->clEnqueueReadBuffer (command_queue, tmp_device[c], CL_TRUE, 0, sizeof (tmp_host), tmp_host, 0, NULL, NULL) != CL_SUCCESS) break; - if (ocl->clEnqueueWriteBuffer (command_queue, tmp_device[c], CL_TRUE, 0, sizeof (tmp_host), tmp_host, 0, NULL, NULL) != CL_SUCCESS) break; - - if (ocl->clEnqueueReadBuffer (command_queue, tmp_device[c], CL_TRUE, MAX_ALLOC_CHECKS_SIZE - sizeof (tmp_host), sizeof (tmp_host), tmp_host, 0, NULL, NULL) != CL_SUCCESS) break; - if (ocl->clEnqueueWriteBuffer (command_queue, tmp_device[c], CL_TRUE, MAX_ALLOC_CHECKS_SIZE - sizeof (tmp_host), sizeof (tmp_host), tmp_host, 0, NULL, NULL) != CL_SUCCESS) break; - } - - device_param->device_available_mem = MAX_ALLOC_CHECKS_SIZE; - - if (c > 0) - { - device_param->device_available_mem *= c; - } - - // clean up - - for (c = 0; c < MAX_ALLOC_CHECKS_CNT; c++) - { - if (((c + 1 + 1) * MAX_ALLOC_CHECKS_SIZE) >= device_param->device_global_mem) break; - - if (tmp_device[c] != NULL) - { - if (hc_clReleaseMemObject (hashcat_ctx, tmp_device[c]) == -1) return -1; + if (is_same_device (device_param, tmp_device_param)) + { + device_param->device_available_mem = tmp_device_param->device_available_mem; + updated_device_available_mem = true; + break; + } } } + } + else if (device_param->opencl_platform_vendor_id == VENDOR_ID_AMD) + { + if (backend_ctx->hip_devices_cnt > 0 && backend_ctx->hip_devices_active > 0) + { + for (int hip_devices_idx = 0; hip_devices_idx < backend_ctx->hip_devices_cnt; hip_devices_idx++) + { + const int tmp_backend_devices_idx = backend_ctx->backend_device_from_hip[hip_devices_idx]; - hcfree (tmp_device); + hc_device_param_t *tmp_device_param = backend_ctx->devices_param + tmp_backend_devices_idx; + + if (is_same_device (device_param, tmp_device_param)) + { + device_param->device_available_mem = tmp_device_param->device_available_mem; + updated_device_available_mem = true; + break; + } + } + } } } - hc_clReleaseCommandQueue (hashcat_ctx, command_queue); + // if not found ... use old strategy - hc_clReleaseContext (hashcat_ctx, context); - - if (device_param->device_host_unified_memory == 1) + if (updated_device_available_mem == false) { - // so, we actually have only half the memory because we need the same buffers on host side + // This test causes an GPU memory usage spike. + // In case there are multiple hashcat instances starting at the same time this will cause GPU out of memory errors which otherwise would not exist. + // We will simply not run it if that device was skipped by the user. - device_param->device_available_mem /= 2; + if (device_param->device_global_mem) + { + #define MAX_ALLOC_CHECKS_CNT 8192 + #define MAX_ALLOC_CHECKS_SIZE (64 * 1024 * 1024) + + device_param->device_available_mem = device_param->device_global_mem - MAX_ALLOC_CHECKS_SIZE; + + if (user_options->backend_devices_keepfree < 100) + { + device_param->device_available_mem = (device_param->device_global_mem * (100 - user_options->backend_devices_keepfree)) / 100; + } + // this section is creating more problems than it solves, so lets use a fixed multiplier instead + // users can override with --backend-devices-keepfree=100 + else if ((device_param->opencl_device_type & CL_DEVICE_TYPE_GPU) && (device_param->device_host_unified_memory == 0)) + { + // OK, so the problem here is the following: + // There's just CL_DEVICE_GLOBAL_MEM_SIZE to ask OpenCL about the total memory on the device, + // but there's no way to ask for available memory on the device. + // In combination, most OpenCL runtimes implementation of clCreateBuffer() + // are doing so called lazy memory allocation on the device. + // Now, if the user has X11 (or a game or anything that takes a lot of GPU memory) + // running on the host we end up with an error type of this: + // clEnqueueNDRangeKernel(): CL_MEM_OBJECT_ALLOCATION_FAILURE + // The clEnqueueNDRangeKernel() is because of the lazy allocation + // The best way to workaround this problem is if we would be able to ask for available memory, + // The idea here is to try to evaluate available memory by allocating it till it errors + + cl_mem *tmp_device = (cl_mem *) hccalloc (MAX_ALLOC_CHECKS_CNT, sizeof (cl_mem)); + + u64 c; + + for (c = 0; c < MAX_ALLOC_CHECKS_CNT; c++) + { + if (((c + 1 + 1) * MAX_ALLOC_CHECKS_SIZE) >= device_param->device_global_mem) break; + + // work around, for some reason apple opencl can't have buffers larger 2^31 + // typically runs into trap 6 + // maybe 32/64 bit problem affecting size_t? + // this seems to affect global memory as well no just single allocations + // this is really ugly, and still in place 2025/06/09 + // Version.: OpenCL 1.2 (Apr 18 2025 21:45:30) + // Driver.Version.: 1.2 (Apr 22 2025 20:11:41) + + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->is_metal == false)) + { + const size_t undocumented_single_allocation_apple = 0x7fffffff; + + if (((c + 1 + 1) * MAX_ALLOC_CHECKS_SIZE) >= undocumented_single_allocation_apple) break; + } + + cl_int CL_err; + + OCL_PTR *ocl = (OCL_PTR *) backend_ctx->ocl; + + tmp_device[c] = ocl->clCreateBuffer (context, CL_MEM_READ_WRITE, MAX_ALLOC_CHECKS_SIZE, NULL, &CL_err); + + if (CL_err != CL_SUCCESS) + { + c--; + + break; + } + + // transfer only a few byte should be enough to force the runtime to actually allocate the memory + + u8 tmp_host[8]; + + if (ocl->clEnqueueReadBuffer (command_queue, tmp_device[c], CL_TRUE, 0, sizeof (tmp_host), tmp_host, 0, NULL, NULL) != CL_SUCCESS) break; + if (ocl->clEnqueueWriteBuffer (command_queue, tmp_device[c], CL_TRUE, 0, sizeof (tmp_host), tmp_host, 0, NULL, NULL) != CL_SUCCESS) break; + + if (ocl->clEnqueueReadBuffer (command_queue, tmp_device[c], CL_TRUE, MAX_ALLOC_CHECKS_SIZE - sizeof (tmp_host), sizeof (tmp_host), tmp_host, 0, NULL, NULL) != CL_SUCCESS) break; + if (ocl->clEnqueueWriteBuffer (command_queue, tmp_device[c], CL_TRUE, MAX_ALLOC_CHECKS_SIZE - sizeof (tmp_host), sizeof (tmp_host), tmp_host, 0, NULL, NULL) != CL_SUCCESS) break; + } + + device_param->device_available_mem = MAX_ALLOC_CHECKS_SIZE; + + if (c > 0) + { + device_param->device_available_mem *= c; + } + + // clean up + + for (c = 0; c < MAX_ALLOC_CHECKS_CNT; c++) + { + if (((c + 1 + 1) * MAX_ALLOC_CHECKS_SIZE) >= device_param->device_global_mem) break; + + if (tmp_device[c] != NULL) + { + if (hc_clReleaseMemObject (hashcat_ctx, tmp_device[c]) == -1) return -1; + } + } + + hcfree (tmp_device); + } + } + + hc_clReleaseCommandQueue (hashcat_ctx, command_queue); + + hc_clReleaseContext (hashcat_ctx, context); + + if (device_param->device_host_unified_memory == 1) + { + // so, we actually have only half the memory because we need the same buffers on host side + + device_param->device_available_mem /= 2; + } } } } @@ -8178,6 +8897,11 @@ void backend_ctx_devices_destroy (hashcat_ctx_t *hashcat_ctx) hcfree (device_param->opencl_device_c_version); hcfree (device_param->opencl_device_vendor); } + + if (device_param->is_hip == true) + { + hcfree (device_param->gcnArchName); + } } backend_ctx->backend_devices_cnt = 0; @@ -8201,8 +8925,10 @@ void backend_ctx_devices_destroy (hashcat_ctx_t *hashcat_ctx) void backend_ctx_devices_sync_tuning (hashcat_ctx_t *hashcat_ctx) { - backend_ctx_t *backend_ctx = hashcat_ctx->backend_ctx; - hashconfig_t *hashconfig = hashcat_ctx->hashconfig; + backend_ctx_t *backend_ctx = hashcat_ctx->backend_ctx; + bridge_ctx_t *bridge_ctx = hashcat_ctx->bridge_ctx; + hashconfig_t *hashconfig = hashcat_ctx->hashconfig; + user_options_t *user_options = hashcat_ctx->user_options; if (backend_ctx->enabled == false) return; @@ -8235,6 +8961,38 @@ void backend_ctx_devices_sync_tuning (hashcat_ctx_t *hashcat_ctx) device_param_dst->kernel_power = kernel_power; } } + + // bridge overrides everything + + if (hashconfig->bridge_type) + { + for (int backend_devices_cnt = 0; backend_devices_cnt < backend_ctx->backend_devices_cnt; backend_devices_cnt++) + { + hc_device_param_t *device_param = &backend_ctx->devices_param[backend_devices_cnt]; + + if (device_param->skipped == true) continue; + if (device_param->skipped_warning == true) continue; + + int workitem_count = bridge_ctx->get_workitem_count (bridge_ctx->platform_context, device_param->bridge_link_device); + + if (hashconfig->bridge_type & BRIDGE_TYPE_FORCE_WORKITEMS_001) workitem_count = 1; + else if (hashconfig->bridge_type & BRIDGE_TYPE_FORCE_WORKITEMS_002) workitem_count = 2; + else if (hashconfig->bridge_type & BRIDGE_TYPE_FORCE_WORKITEMS_004) workitem_count = 4; + else if (hashconfig->bridge_type & BRIDGE_TYPE_FORCE_WORKITEMS_008) workitem_count = 8; + else if (hashconfig->bridge_type & BRIDGE_TYPE_FORCE_WORKITEMS_016) workitem_count = 16; + else if (hashconfig->bridge_type & BRIDGE_TYPE_FORCE_WORKITEMS_032) workitem_count = 32; + else if (hashconfig->bridge_type & BRIDGE_TYPE_FORCE_WORKITEMS_064) workitem_count = 64; + else if (hashconfig->bridge_type & BRIDGE_TYPE_FORCE_WORKITEMS_128) workitem_count = 128; + else if (hashconfig->bridge_type & BRIDGE_TYPE_FORCE_WORKITEMS_256) workitem_count = 256; + + if ((int) device_param->kernel_power < workitem_count) + { + if (user_options->quiet == false) event_log_warning (hashcat_ctx, "* Device #%u/Bridge #%u: kernel_power:%" PRIu64 " < workitem_count:%d", device_param->device_id + 1, device_param->bridge_link_device + 1, device_param->kernel_power, workitem_count); + } + + device_param->kernel_power = workitem_count; + } + } } void backend_ctx_devices_update_power (hashcat_ctx_t *hashcat_ctx) @@ -8449,6 +9207,7 @@ static bool load_kernel (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_p static bool load_kernel (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param, const char *kernel_name, char *source_file, char *cached_file, const char *build_options_buf, const bool cache_disable, cl_program *opencl_program, CUmodule *cuda_module, hipModule_t *hip_module, MAYBE_UNUSED void *metal_library) #endif { + const backend_ctx_t *backend_ctx = hashcat_ctx->backend_ctx; const hashconfig_t *hashconfig = hashcat_ctx->hashconfig; const user_options_t *user_options = hashcat_ctx->user_options; const folder_config_t *folder_config = hashcat_ctx->folder_config; @@ -8496,27 +9255,46 @@ static bool load_kernel (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_p if (hc_nvrtcCreateProgram (hashcat_ctx, &program, kernel_sources[0], kernel_name, 0, NULL, NULL) == -1) return false; - char **nvrtc_options = (char **) hccalloc (7 + strlen (build_options_buf) + 1, sizeof (char *)); // ... + char **nvrtc_options = (char **) hccalloc (16 + strlen (build_options_buf) + 1, sizeof (char *)); // ... - nvrtc_options[0] = "--restrict"; - nvrtc_options[1] = "--device-as-default-execution-space"; - nvrtc_options[2] = "--gpu-architecture"; + int nvrtc_options_idx = 0; - hc_asprintf (&nvrtc_options[3], "compute_%d%d", device_param->sm_major, device_param->sm_minor); + if (backend_ctx->nvrtc_driver_version >= 12000) + { + nvrtc_options[nvrtc_options_idx++] = "--std=c++14"; + } + + //nvrtc_options[nvrtc_options_idx++] = "--restrict"; + nvrtc_options[nvrtc_options_idx++] = "--gpu-architecture"; + + hc_asprintf (&nvrtc_options[nvrtc_options_idx++], "compute_%d", (device_param->sm_major * 10) + device_param->sm_minor); + + if (backend_ctx->nvrtc_driver_version >= 12010) + { + nvrtc_options[nvrtc_options_idx++] = "--split-compile"; + + hc_asprintf (&nvrtc_options[nvrtc_options_idx++], "%d", 0); + } + + if (backend_ctx->nvrtc_driver_version >= 12040) + { + nvrtc_options[nvrtc_options_idx++] = "--minimal"; + } // untested on windows, but it should work #if defined (_WIN) || defined (__CYGWIN__) || defined (__MSYS__) - hc_asprintf (&nvrtc_options[4], "-D INCLUDE_PATH=%s", "OpenCL"); + hc_asprintf (&nvrtc_options[nvrtc_options_idx++], "-D INCLUDE_PATH=%s", "OpenCL"); #else - hc_asprintf (&nvrtc_options[4], "-D INCLUDE_PATH=%s", folder_config->cpath_real); + hc_asprintf (&nvrtc_options[nvrtc_options_idx++], "-D INCLUDE_PATH=%s", folder_config->cpath_real); #endif - hc_asprintf (&nvrtc_options[5], "-D XM2S(x)=#x"); - hc_asprintf (&nvrtc_options[6], "-D M2S(x)=XM2S(x)"); + hc_asprintf (&nvrtc_options[nvrtc_options_idx++], "-D XM2S(x)=#x"); + hc_asprintf (&nvrtc_options[nvrtc_options_idx++], "-D M2S(x)=XM2S(x)"); + hc_asprintf (&nvrtc_options[nvrtc_options_idx++], "-D MAX_THREADS_PER_BLOCK=%d", (user_options->kernel_threads_chgd == true) ? user_options->kernel_threads : device_param->kernel_threads_max); char *nvrtc_options_string = hcstrdup (build_options_buf); - const int num_options = 7 + nvrtc_make_options_array_from_string (nvrtc_options_string, nvrtc_options + 7); + const int num_options = nvrtc_options_idx + nvrtc_make_options_array_from_string (nvrtc_options_string, nvrtc_options + nvrtc_options_idx); const int rc_nvrtcCompileProgram = hc_nvrtcCompileProgram (hashcat_ctx, program, num_options, (const char * const *) nvrtc_options); @@ -8738,41 +9516,28 @@ static bool load_kernel (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_p if (hc_hiprtcCreateProgram (hashcat_ctx, &program, kernel_sources[0], kernel_name, 0, NULL, NULL) == -1) return false; - char **hiprtc_options = (char **) hccalloc (8 + strlen (build_options_buf) + 1, sizeof (char *)); // ... + char **hiprtc_options = (char **) hccalloc (16 + strlen (build_options_buf) + 1, sizeof (char *)); // ... - //hiprtc_options[0] = "--restrict"; - //hiprtc_options[1] = "--device-as-default-execution-space"; - //hiprtc_options[2] = "--gpu-architecture"; + int hiprtc_options_idx = 0; - hc_asprintf (&hiprtc_options[0], "--gpu-max-threads-per-block=%d", (user_options->kernel_threads_chgd == true) ? user_options->kernel_threads : device_param->kernel_threads_max); - - /* 4.3 linux - hiprtc_options[1] = "-I"; - hiprtc_options[2] = "/opt/rocm/hip/bin/include"; - hiprtc_options[3] = "-I"; - hiprtc_options[4] = "/opt/rocm/include"; - hiprtc_options[5] = "-I"; - */ - - hiprtc_options[1] = "-nocudainc"; - hiprtc_options[2] = "-nocudalib"; - hiprtc_options[3] = ""; - hiprtc_options[4] = ""; + hc_asprintf (&hiprtc_options[hiprtc_options_idx++], "-D MAX_THREADS_PER_BLOCK=%d", (user_options->kernel_threads_chgd == true) ? user_options->kernel_threads : device_param->kernel_threads_max); + hc_asprintf (&hiprtc_options[hiprtc_options_idx++], "--gpu-architecture=%s", device_param->gcnArchName); + hc_asprintf (&hiprtc_options[hiprtc_options_idx++], "--gpu-max-threads-per-block=%d", (user_options->kernel_threads_chgd == true) ? user_options->kernel_threads : device_param->kernel_threads_max); // untested but it should work #if defined (_WIN) || defined (__CYGWIN__) || defined (__MSYS__) - hc_asprintf (&hiprtc_options[5], "-D INCLUDE_PATH=%s/OpenCL/", folder_config->cwd); + hc_asprintf (&hiprtc_options[hiprtc_options_idx++], "-D INCLUDE_PATH=%s/OpenCL/", folder_config->cwd); // ugly, but required since HIPRTC is changing the current working folder to the temporary compile folder #else - hc_asprintf (&hiprtc_options[5], "-D INCLUDE_PATH=%s", folder_config->cpath_real); + hc_asprintf (&hiprtc_options[hiprtc_options_idx++], "-D INCLUDE_PATH=%s", folder_config->cpath_real); #endif - hc_asprintf (&hiprtc_options[6], "-D XM2S(x)=#x"); - hc_asprintf (&hiprtc_options[7], "-D M2S(x)=XM2S(x)"); + hc_asprintf (&hiprtc_options[hiprtc_options_idx++], "-D XM2S(x)=#x"); + hc_asprintf (&hiprtc_options[hiprtc_options_idx++], "-D M2S(x)=XM2S(x)"); char *hiprtc_options_string = hcstrdup (build_options_buf); - const int num_options = 8 + hiprtc_make_options_array_from_string (hiprtc_options_string, hiprtc_options + 8); + const int num_options = hiprtc_options_idx + hiprtc_make_options_array_from_string (hiprtc_options_string, hiprtc_options + hiprtc_options_idx); const int rc_hiprtcCompileProgram = hc_hiprtcCompileProgram (hashcat_ctx, program, num_options, (const char * const *) hiprtc_options); @@ -9132,6 +9897,7 @@ static bool load_kernel (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_p int backend_session_begin (hashcat_ctx_t *hashcat_ctx) { const bitmap_ctx_t *bitmap_ctx = hashcat_ctx->bitmap_ctx; + const bridge_ctx_t *bridge_ctx = hashcat_ctx->bridge_ctx; const folder_config_t *folder_config = hashcat_ctx->folder_config; const hashconfig_t *hashconfig = hashcat_ctx->hashconfig; const hashes_t *hashes = hashcat_ctx->hashes; @@ -9176,6 +9942,18 @@ int backend_session_begin (hashcat_ctx_t *hashcat_ctx) const int device_id = device_param->device_id; + /** + * Query used memory from the device using low-level API and update device_available_mem + * If there's no low-level API available we will silently ignore + */ + + const u64 used_bytes = hm_get_memoryused_with_devices_idx (hashcat_ctx, device_id); + + if (used_bytes) + { + device_param->device_available_mem = MIN (device_param->device_available_mem, device_param->device_global_mem - used_bytes); + } + /** * module depending checks */ @@ -9217,7 +9995,64 @@ int backend_session_begin (hashcat_ctx_t *hashcat_ctx) if (module_ctx->module_extra_tuningdb_block != MODULE_DEFAULT) { - const char *extra_tuningdb_block = module_ctx->module_extra_tuningdb_block (hashconfig, user_options, user_options_extra); + // We need this because we can't trust CUDA/HIP to give us the real free device memory + // The only way to do so is through low level APIs + + for (int i = 0; i < 10; i++) + { + const u64 used_bytes = hm_get_memoryused_with_devices_idx (hashcat_ctx, device_id); + + if (used_bytes) + { + if ((used_bytes > (3ULL * 1024 * 1024 * 1024)) + || (used_bytes > (device_param->device_global_mem * 0.5))) + { + event_log_warning (hashcat_ctx, "* Device #%u: Memory usage is too high: %" PRIu64 "/%" PRIu64 ", waiting...", device_id + 1, used_bytes, device_param->device_global_mem); + + sleep (1); + + continue; + } + + device_param->device_available_mem = MIN (device_param->device_available_mem, device_param->device_global_mem - used_bytes); + + break; + } + else + { + if (user_options->backend_devices_keepfree == 0) + { + const u64 device_available_mem_sav = device_param->device_available_mem; + + const u64 device_available_mem_new = device_available_mem_sav - (device_available_mem_sav * 0.2); + + event_log_warning (hashcat_ctx, "* Device #%u: This system does not offer any reliable method to query actual free memory. Estimated base: %" PRIu64, device_id + 1, device_available_mem_sav); + event_log_warning (hashcat_ctx, " Assuming normal desktop activity, reducing estimate by 20%%: %" PRIu64, device_available_mem_new); + event_log_warning (hashcat_ctx, " This can hurt performance drastically, especially on memory-heavy algorithms."); + event_log_warning (hashcat_ctx, " You can adjust this percentage using --backend-devices-keepfree"); + event_log_warning (hashcat_ctx, NULL); + + device_param->device_available_mem = device_available_mem_new; + } + + break; + } + } + + u32 _kernel_accel = 0; + + if (user_options->kernel_accel_chgd == true) + { + _kernel_accel = user_options->kernel_accel; + } + else + { + tuning_db_entry_t *tuningdb_entry = tuning_db_search (hashcat_ctx, device_param->device_name, device_param->opencl_device_type, user_options->attack_mode, hashconfig->hash_mode); + + if (tuningdb_entry != NULL) _kernel_accel = tuningdb_entry->kernel_accel; + } + + const char *extra_tuningdb_block = module_ctx->module_extra_tuningdb_block (hashconfig, user_options, user_options_extra, backend_ctx, hashes, device_id, _kernel_accel); char *lines_buf = hcstrdup (extra_tuningdb_block); @@ -9237,7 +10072,13 @@ int backend_session_begin (hashcat_ctx_t *hashcat_ctx) if (next[0] == '#') continue; - tuning_db_process_line (hashcat_ctx, next, line_num); + char *search_name = NULL; + + hc_asprintf (&search_name, "MODULE_%02d_%s", device_param->device_id, next); + + tuning_db_process_line (hashcat_ctx, search_name, line_num); + + hcfree (search_name); } while ((next = strtok_r ((char *) NULL, "\n", &saveptr)) != NULL); @@ -9398,13 +10239,31 @@ int backend_session_begin (hashcat_ctx_t *hashcat_ctx) tuning_db_entry_t *tuningdb_entry = NULL; - if (user_options->slow_candidates == true) + for (int i = 0; i < 2; i++) { - tuningdb_entry = tuning_db_search (hashcat_ctx, device_param->device_name, device_param->opencl_device_type, 0, hashconfig->hash_mode); - } - else - { - tuningdb_entry = tuning_db_search (hashcat_ctx, device_param->device_name, device_param->opencl_device_type, user_options->attack_mode, hashconfig->hash_mode); + char *search_name = NULL; + + if (i == 0) + { + hc_asprintf (&search_name, "MODULE_%02d_%s", device_param->device_id, device_param->device_name); + } + else + { + search_name = device_param->device_name; + } + + if (user_options->slow_candidates == true) + { + tuningdb_entry = tuning_db_search (hashcat_ctx, search_name, device_param->opencl_device_type, 0, hashconfig->hash_mode); + } + else + { + tuningdb_entry = tuning_db_search (hashcat_ctx, search_name, device_param->opencl_device_type, user_options->attack_mode, hashconfig->hash_mode); + } + + if (i == 0) hcfree (search_name); + + if (tuningdb_entry != NULL) break; } // user commandline option override tuning db @@ -9461,6 +10320,37 @@ int backend_session_begin (hashcat_ctx_t *hashcat_ctx) } } } + + if (hashconfig->bridge_type & BRIDGE_TYPE_MATCH_TUNINGS) + { + u32 workitem_count = bridge_ctx->get_workitem_count (bridge_ctx->platform_context, device_param->bridge_link_device); + + if (hashconfig->bridge_type & BRIDGE_TYPE_FORCE_WORKITEMS_001) workitem_count = 1; + else if (hashconfig->bridge_type & BRIDGE_TYPE_FORCE_WORKITEMS_002) workitem_count = 2; + else if (hashconfig->bridge_type & BRIDGE_TYPE_FORCE_WORKITEMS_004) workitem_count = 4; + else if (hashconfig->bridge_type & BRIDGE_TYPE_FORCE_WORKITEMS_008) workitem_count = 8; + else if (hashconfig->bridge_type & BRIDGE_TYPE_FORCE_WORKITEMS_016) workitem_count = 16; + else if (hashconfig->bridge_type & BRIDGE_TYPE_FORCE_WORKITEMS_032) workitem_count = 32; + else if (hashconfig->bridge_type & BRIDGE_TYPE_FORCE_WORKITEMS_064) workitem_count = 64; + else if (hashconfig->bridge_type & BRIDGE_TYPE_FORCE_WORKITEMS_128) workitem_count = 128; + else if (hashconfig->bridge_type & BRIDGE_TYPE_FORCE_WORKITEMS_256) workitem_count = 256; + + u32 native_threads = 0; + + if (device_param->opencl_device_type & CL_DEVICE_TYPE_CPU) + { + native_threads = 1; + } + else if (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU) + { + native_threads = device_param->kernel_preferred_wgs_multiple; + } + + const u32 _kernel_accel = ((workitem_count + native_threads - 1) / native_threads) * native_threads; + + device_param->kernel_accel_min = _kernel_accel; + device_param->kernel_accel_max = _kernel_accel; + } } if (user_options->kernel_loops_chgd == true) @@ -9587,8 +10477,24 @@ int backend_session_begin (hashcat_ctx_t *hashcat_ctx) } else { - if (device_param->is_hip == true) + // v7 test, needs some larger test, but I think we will need to stick to this + + if (device_param->is_cuda == true) { + // we will find this after loading the kernel with suppport of runtime api + } + else if (device_param->is_hip == true) + { + // we will find this after loading the kernel with suppport of runtime api + } + else if (device_param->is_opencl == true) + { + // we will find this after loading the kernel with suppport of runtime api + } + else if (device_param->is_metal == true) + { + // metal: todo - remove this section after below section is implemented + const u32 native_threads = device_param->kernel_preferred_wgs_multiple; if ((native_threads >= device_param->kernel_threads_min) && (native_threads <= device_param->kernel_threads_max)) @@ -9817,8 +10723,9 @@ int backend_session_begin (hashcat_ctx_t *hashcat_ctx) u32 aligned_rules_cnt = MAX (MAX (straight_ctx->kernel_rules_cnt, device_param->kernel_loops_min), KERNEL_RULES); - u64 size_rules = (u64) aligned_rules_cnt * sizeof (kernel_rule_t); - u64 size_rules_c = (u64) KERNEL_RULES * sizeof (kernel_rule_t); + u64 size_rules = (u64) aligned_rules_cnt * sizeof (kernel_rule_t); + u64 size_rules_src = (u64) straight_ctx->kernel_rules_cnt * sizeof (kernel_rule_t); // size of source rules buffer can be less than aligned_rules_cnt + u64 size_rules_c = (u64) KERNEL_RULES * sizeof (kernel_rule_t); device_param->size_rules = size_rules; device_param->size_rules_c = size_rules_c; @@ -9855,7 +10762,10 @@ int backend_session_begin (hashcat_ctx_t *hashcat_ctx) // extra buffer - u64 size_extra_buffer = 4; + u64 size_extra_buffer1 = 4096; + u64 size_extra_buffer2 = 4096; + u64 size_extra_buffer3 = 4096; + u64 size_extra_buffer4 = 4096; if (module_ctx->module_extra_buffer_size != MODULE_DEFAULT) { @@ -9873,20 +10783,51 @@ int backend_session_begin (hashcat_ctx_t *hashcat_ctx) device_param->extra_buffer_size = extra_buffer_size; - // for the size we actually allocate we need to cheat a bit in order to make it more easy for plugin developer. - // - // we will divide this size by 4 to workaround opencl limitation. - // this collides with a theoretical scenario (like -n1 -T1) where there's only one workitem, - // because inside the kernel the target buffer is selected by workitem_id / 4. - // but the maximum size of the buffer would be only 1/4 of what is needed -> overflow. - // - // to workaround this we make sure that there's always a full buffer in each of the 4 allocated buffers available. + /** + * We use a "4-buffer" strategy for certain hash types (like scrypt) + * that require large scratch buffers per work-item. + * + * The kernel assigns each work-item to one of 4 sub-buffers using: + * buffer index = workitem_id % 4 + * + * This means that each of the 4 sub-buffers must be large enough to hold + * all work-items that map to it. However, the total number of work-items + * is not always a multiple of 4. If we naively split the total buffer size + * evenly into 4 parts, the last chunk may be too small and cause buffer + * overflows for configurations where work-items spill into a partially sized chunk. + * + * Previous versions worked around this by over-allocating a full extra buffer, + * but this wasted gpu memory for large hashes like scrypt with high N. + * + * This improved logic computes the exact number of work-items assigned to + * each of the 4 chunks and sizes each chunk precisely: + * + * - The first 'leftover' chunks get one extra work-item to cover any remainder. + * - This guarantees each chunk is large enough for its assigned work-items. + */ - const u64 kernel_power_max = ((hashconfig->opts_type & OPTS_TYPE_MP_MULTI_DISABLE) ? 1 : device_param->device_processors) * device_param->kernel_threads_max * device_param->kernel_accel_max; + const u64 kernel_power_max = ((hashconfig->opts_type & OPTS_TYPE_MP_MULTI_DISABLE) ? 1 : device_param->device_processors) * device_param->kernel_accel_max; - const u64 extra_buffer_size_one = extra_buffer_size / kernel_power_max; + const u64 extra_buffer_size_threads = extra_buffer_size / kernel_power_max; - size_extra_buffer = extra_buffer_size + (extra_buffer_size_one * 4); + const u64 workitems_per_chunk = kernel_power_max / 4; + + const u64 base_chunk_size = workitems_per_chunk * extra_buffer_size_threads; + + size_extra_buffer1 += base_chunk_size; + size_extra_buffer2 += base_chunk_size; + size_extra_buffer3 += base_chunk_size; + size_extra_buffer4 += base_chunk_size; + + const u64 leftover = kernel_power_max % 4; + + switch (leftover) + { + case 3: size_extra_buffer3 += extra_buffer_size_threads; // fall-through + case 2: size_extra_buffer2 += extra_buffer_size_threads; // fall-through + case 1: size_extra_buffer1 += extra_buffer_size_threads; // fall-through + case 0: break; + } } // kern type @@ -9953,6 +10894,7 @@ int backend_session_begin (hashcat_ctx_t *hashcat_ctx) build_options_len += snprintf (build_options_buf + build_options_len, build_options_sz - build_options_len, "-D XM2S(x)=#x "); build_options_len += snprintf (build_options_buf + build_options_len, build_options_sz - build_options_len, "-D M2S(x)=XM2S(x) "); + build_options_len += snprintf (build_options_buf + build_options_len, build_options_sz - build_options_len, "-D MAX_THREADS_PER_BLOCK=%d ", (user_options->kernel_threads_chgd == true) ? user_options->kernel_threads : device_param->kernel_threads_max); #if defined (__APPLE__) if (is_apple_silicon () == true) @@ -10013,17 +10955,21 @@ int backend_session_begin (hashcat_ctx_t *hashcat_ctx) char device_name_chksum_amp_mp[HCBUFSIZ_TINY] = { 0 }; - const size_t dnclen_amp_mp = snprintf (device_name_chksum_amp_mp, HCBUFSIZ_TINY, "%d-%d-%d-%u-%d-%u-%s-%s-%s-%u", + const size_t dnclen_amp_mp = snprintf (device_name_chksum_amp_mp, HCBUFSIZ_TINY, "%d-%d-%d-%u-%u-%u-%s-%d-%u-%s-%s-%s-%u-%u", backend_ctx->comptime, backend_ctx->cuda_driver_version, backend_ctx->hip_runtimeVersion, backend_ctx->metal_runtimeVersion, + device_param->sm_major, + device_param->sm_minor, + (device_param->is_hip == true) ? device_param->gcnArchName : "", device_param->is_opencl, device_param->opencl_platform_vendor_id, device_param->device_name, device_param->opencl_device_version, device_param->opencl_driver_version, - (user_options->kernel_threads_chgd == true) ? user_options->kernel_threads : device_param->kernel_threads_max); + (user_options->kernel_threads_chgd == true) ? user_options->kernel_threads : device_param->kernel_threads_max, + get_current_arch()); md5_ctx_t md5_ctx; @@ -10575,11 +11521,14 @@ int backend_session_begin (hashcat_ctx_t *hashcat_ctx) const u32 extra_value = (user_options->attack_mode == ATTACK_MODE_ASSOCIATION) ? ATTACK_MODE_ASSOCIATION : ATTACK_MODE_NONE; - const size_t dnclen = snprintf (device_name_chksum, HCBUFSIZ_TINY, "%d-%d-%d-%u-%d-%u-%s-%s-%s-%d-%u-%u-%u-%s", + const size_t dnclen = snprintf (device_name_chksum, HCBUFSIZ_TINY, "%d-%d-%d-%u-%u-%u-%s-%d-%u-%s-%s-%s-%d-%u-%u-%u-%u-%s", backend_ctx->comptime, backend_ctx->cuda_driver_version, backend_ctx->hip_runtimeVersion, backend_ctx->metal_runtimeVersion, + device_param->sm_major, + device_param->sm_minor, + (device_param->is_hip == true) ? device_param->gcnArchName : "", device_param->is_opencl, device_param->opencl_platform_vendor_id, device_param->device_name, @@ -10589,6 +11538,7 @@ int backend_session_begin (hashcat_ctx_t *hashcat_ctx) hashconfig->kern_type, extra_value, (user_options->kernel_threads_chgd == true) ? user_options->kernel_threads : device_param->kernel_threads_max, + get_current_arch(), build_options_module_buf); memset (&md5_ctx, 0, sizeof (md5_ctx_t)); @@ -10791,7 +11741,10 @@ int backend_session_begin (hashcat_ctx_t *hashcat_ctx) + size_shown + size_salts + size_results - + size_extra_buffer + + size_extra_buffer1 + + size_extra_buffer2 + + size_extra_buffer3 + + size_extra_buffer4 + size_st_digests + size_st_salts + size_st_esalts @@ -10828,10 +11781,10 @@ int backend_session_begin (hashcat_ctx_t *hashcat_ctx) if (hc_cuMemAlloc (hashcat_ctx, &device_param->cuda_d_digests_shown, size_shown) == -1) return -1; if (hc_cuMemAlloc (hashcat_ctx, &device_param->cuda_d_salt_bufs, size_salts) == -1) return -1; if (hc_cuMemAlloc (hashcat_ctx, &device_param->cuda_d_result, size_results) == -1) return -1; - if (hc_cuMemAlloc (hashcat_ctx, &device_param->cuda_d_extra0_buf, size_extra_buffer / 4) == -1) return -1; - if (hc_cuMemAlloc (hashcat_ctx, &device_param->cuda_d_extra1_buf, size_extra_buffer / 4) == -1) return -1; - if (hc_cuMemAlloc (hashcat_ctx, &device_param->cuda_d_extra2_buf, size_extra_buffer / 4) == -1) return -1; - if (hc_cuMemAlloc (hashcat_ctx, &device_param->cuda_d_extra3_buf, size_extra_buffer / 4) == -1) return -1; + if (hc_cuMemAlloc (hashcat_ctx, &device_param->cuda_d_extra0_buf, size_extra_buffer1) == -1) return -1; + if (hc_cuMemAlloc (hashcat_ctx, &device_param->cuda_d_extra1_buf, size_extra_buffer2) == -1) return -1; + if (hc_cuMemAlloc (hashcat_ctx, &device_param->cuda_d_extra2_buf, size_extra_buffer3) == -1) return -1; + if (hc_cuMemAlloc (hashcat_ctx, &device_param->cuda_d_extra3_buf, size_extra_buffer4) == -1) return -1; if (hc_cuMemAlloc (hashcat_ctx, &device_param->cuda_d_st_digests_buf, size_st_digests) == -1) return -1; if (hc_cuMemAlloc (hashcat_ctx, &device_param->cuda_d_st_salts_buf, size_st_salts) == -1) return -1; if (hc_cuMemAlloc (hashcat_ctx, &device_param->cuda_d_kernel_param, size_kernel_params) == -1) return -1; @@ -10872,7 +11825,7 @@ int backend_session_begin (hashcat_ctx_t *hashcat_ctx) if (hc_cuMemAlloc (hashcat_ctx, &device_param->cuda_d_rules_c, size_rules_c) == -1) return -1; } - if (hc_cuMemcpyHtoDAsync (hashcat_ctx, device_param->cuda_d_rules, straight_ctx->kernel_rules_buf, size_rules, device_param->cuda_stream) == -1) return -1; + if (hc_cuMemcpyHtoDAsync (hashcat_ctx, device_param->cuda_d_rules, straight_ctx->kernel_rules_buf, size_rules_src, device_param->cuda_stream) == -1) return -1; } else if (user_options_extra->attack_kern == ATTACK_KERN_COMBI) { @@ -10939,10 +11892,10 @@ int backend_session_begin (hashcat_ctx_t *hashcat_ctx) if (hc_hipMemAlloc (hashcat_ctx, &device_param->hip_d_digests_shown, size_shown) == -1) return -1; if (hc_hipMemAlloc (hashcat_ctx, &device_param->hip_d_salt_bufs, size_salts) == -1) return -1; if (hc_hipMemAlloc (hashcat_ctx, &device_param->hip_d_result, size_results) == -1) return -1; - if (hc_hipMemAlloc (hashcat_ctx, &device_param->hip_d_extra0_buf, size_extra_buffer / 4) == -1) return -1; - if (hc_hipMemAlloc (hashcat_ctx, &device_param->hip_d_extra1_buf, size_extra_buffer / 4) == -1) return -1; - if (hc_hipMemAlloc (hashcat_ctx, &device_param->hip_d_extra2_buf, size_extra_buffer / 4) == -1) return -1; - if (hc_hipMemAlloc (hashcat_ctx, &device_param->hip_d_extra3_buf, size_extra_buffer / 4) == -1) return -1; + if (hc_hipMemAlloc (hashcat_ctx, &device_param->hip_d_extra0_buf, size_extra_buffer1) == -1) return -1; + if (hc_hipMemAlloc (hashcat_ctx, &device_param->hip_d_extra1_buf, size_extra_buffer2) == -1) return -1; + if (hc_hipMemAlloc (hashcat_ctx, &device_param->hip_d_extra2_buf, size_extra_buffer3) == -1) return -1; + if (hc_hipMemAlloc (hashcat_ctx, &device_param->hip_d_extra3_buf, size_extra_buffer4) == -1) return -1; if (hc_hipMemAlloc (hashcat_ctx, &device_param->hip_d_st_digests_buf, size_st_digests) == -1) return -1; if (hc_hipMemAlloc (hashcat_ctx, &device_param->hip_d_st_salts_buf, size_st_salts) == -1) return -1; if (hc_hipMemAlloc (hashcat_ctx, &device_param->hip_d_kernel_param, size_kernel_params) == -1) return -1; @@ -10983,7 +11936,7 @@ int backend_session_begin (hashcat_ctx_t *hashcat_ctx) if (hc_hipMemAlloc (hashcat_ctx, &device_param->hip_d_rules_c, size_rules_c) == -1) return -1; } - if (hc_hipMemcpyHtoDAsync (hashcat_ctx, device_param->hip_d_rules, straight_ctx->kernel_rules_buf, size_rules, device_param->hip_stream) == -1) return -1; + if (hc_hipMemcpyHtoDAsync (hashcat_ctx, device_param->hip_d_rules, straight_ctx->kernel_rules_buf, size_rules_src, device_param->hip_stream) == -1) return -1; } else if (user_options_extra->attack_kern == ATTACK_KERN_COMBI) { @@ -11062,10 +12015,10 @@ int backend_session_begin (hashcat_ctx_t *hashcat_ctx) // shared if (hc_mtlCreateBuffer (hashcat_ctx, device_param->metal_device, size_results, NULL, &device_param->metal_d_result) == -1) return -1; - if (hc_mtlCreateBuffer (hashcat_ctx, device_param->metal_device, size_extra_buffer / 4, NULL, &device_param->metal_d_extra0_buf) == -1) return -1; - if (hc_mtlCreateBuffer (hashcat_ctx, device_param->metal_device, size_extra_buffer / 4, NULL, &device_param->metal_d_extra1_buf) == -1) return -1; - if (hc_mtlCreateBuffer (hashcat_ctx, device_param->metal_device, size_extra_buffer / 4, NULL, &device_param->metal_d_extra2_buf) == -1) return -1; - if (hc_mtlCreateBuffer (hashcat_ctx, device_param->metal_device, size_extra_buffer / 4, NULL, &device_param->metal_d_extra3_buf) == -1) return -1; + if (hc_mtlCreateBuffer (hashcat_ctx, device_param->metal_device, size_extra_buffer1, NULL, &device_param->metal_d_extra0_buf) == -1) return -1; + if (hc_mtlCreateBuffer (hashcat_ctx, device_param->metal_device, size_extra_buffer2, NULL, &device_param->metal_d_extra1_buf) == -1) return -1; + if (hc_mtlCreateBuffer (hashcat_ctx, device_param->metal_device, size_extra_buffer3, NULL, &device_param->metal_d_extra2_buf) == -1) return -1; + if (hc_mtlCreateBuffer (hashcat_ctx, device_param->metal_device, size_extra_buffer4, NULL, &device_param->metal_d_extra3_buf) == -1) return -1; // gpu only if (hc_mtlCreateBuffer (hashcat_ctx, device_param->metal_device, size_st_digests, NULL, &device_param->metal_d_st_digests_buf) == -1) return -1; @@ -11100,7 +12053,7 @@ int backend_session_begin (hashcat_ctx_t *hashcat_ctx) if (hc_mtlCreateBuffer (hashcat_ctx, device_param->metal_device, size_rules, NULL, &device_param->metal_d_rules) == -1) return -1; if (hc_mtlCreateBuffer (hashcat_ctx, device_param->metal_device, size_rules_c, NULL, &device_param->metal_d_rules_c) == -1) return -1; - if (hc_mtlMemcpyHtoD (hashcat_ctx, device_param->metal_command_queue, device_param->metal_d_rules, 0, straight_ctx->kernel_rules_buf, size_rules) == -1) return -1; + if (hc_mtlMemcpyHtoD (hashcat_ctx, device_param->metal_command_queue, device_param->metal_d_rules, 0, straight_ctx->kernel_rules_buf, size_rules_src) == -1) return -1; } else if (user_options_extra->attack_kern == ATTACK_KERN_COMBI) { @@ -11160,10 +12113,10 @@ int backend_session_begin (hashcat_ctx_t *hashcat_ctx) if (hc_clCreateBuffer (hashcat_ctx, device_param->opencl_context, CL_MEM_READ_WRITE, size_shown, NULL, &device_param->opencl_d_digests_shown) == -1) return -1; if (hc_clCreateBuffer (hashcat_ctx, device_param->opencl_context, CL_MEM_READ_ONLY, size_salts, NULL, &device_param->opencl_d_salt_bufs) == -1) return -1; if (hc_clCreateBuffer (hashcat_ctx, device_param->opencl_context, CL_MEM_READ_WRITE, size_results, NULL, &device_param->opencl_d_result) == -1) return -1; - if (hc_clCreateBuffer (hashcat_ctx, device_param->opencl_context, CL_MEM_READ_WRITE, size_extra_buffer / 4, NULL, &device_param->opencl_d_extra0_buf) == -1) return -1; - if (hc_clCreateBuffer (hashcat_ctx, device_param->opencl_context, CL_MEM_READ_WRITE, size_extra_buffer / 4, NULL, &device_param->opencl_d_extra1_buf) == -1) return -1; - if (hc_clCreateBuffer (hashcat_ctx, device_param->opencl_context, CL_MEM_READ_WRITE, size_extra_buffer / 4, NULL, &device_param->opencl_d_extra2_buf) == -1) return -1; - if (hc_clCreateBuffer (hashcat_ctx, device_param->opencl_context, CL_MEM_READ_WRITE, size_extra_buffer / 4, NULL, &device_param->opencl_d_extra3_buf) == -1) return -1; + if (hc_clCreateBuffer (hashcat_ctx, device_param->opencl_context, CL_MEM_READ_WRITE, size_extra_buffer1, NULL, &device_param->opencl_d_extra0_buf) == -1) return -1; + if (hc_clCreateBuffer (hashcat_ctx, device_param->opencl_context, CL_MEM_READ_WRITE, size_extra_buffer2, NULL, &device_param->opencl_d_extra1_buf) == -1) return -1; + if (hc_clCreateBuffer (hashcat_ctx, device_param->opencl_context, CL_MEM_READ_WRITE, size_extra_buffer3, NULL, &device_param->opencl_d_extra2_buf) == -1) return -1; + if (hc_clCreateBuffer (hashcat_ctx, device_param->opencl_context, CL_MEM_READ_WRITE, size_extra_buffer4, NULL, &device_param->opencl_d_extra3_buf) == -1) return -1; if (hc_clCreateBuffer (hashcat_ctx, device_param->opencl_context, CL_MEM_READ_ONLY, size_st_digests, NULL, &device_param->opencl_d_st_digests_buf) == -1) return -1; if (hc_clCreateBuffer (hashcat_ctx, device_param->opencl_context, CL_MEM_READ_ONLY, size_st_salts, NULL, &device_param->opencl_d_st_salts_buf) == -1) return -1; if (hc_clCreateBuffer (hashcat_ctx, device_param->opencl_context, CL_MEM_READ_ONLY, size_kernel_params, NULL, &device_param->opencl_d_kernel_param) == -1) return -1; @@ -11194,7 +12147,7 @@ int backend_session_begin (hashcat_ctx_t *hashcat_ctx) if (hc_clCreateBuffer (hashcat_ctx, device_param->opencl_context, CL_MEM_READ_ONLY, size_rules, NULL, &device_param->opencl_d_rules) == -1) return -1; if (hc_clCreateBuffer (hashcat_ctx, device_param->opencl_context, CL_MEM_READ_ONLY, size_rules_c, NULL, &device_param->opencl_d_rules_c) == -1) return -1; - if (hc_clEnqueueWriteBuffer (hashcat_ctx, device_param->opencl_command_queue, device_param->opencl_d_rules, CL_FALSE, 0, size_rules, straight_ctx->kernel_rules_buf, 0, NULL, NULL) == -1) return -1; + if (hc_clEnqueueWriteBuffer (hashcat_ctx, device_param->opencl_command_queue, device_param->opencl_d_rules, CL_FALSE, 0, size_rules_src, straight_ctx->kernel_rules_buf, 0, NULL, NULL) == -1) return -1; } else if (user_options_extra->attack_kern == ATTACK_KERN_COMBI) { @@ -14975,6 +15928,75 @@ int backend_session_begin (hashcat_ctx_t *hashcat_ctx) } } + u32 threads_per_block = 32; + + if (device_param->is_cuda == true) + { + const int kern_run = find_tuning_function (hashcat_ctx, device_param); + + CUfunction func = cuda_function_with_id (device_param, kern_run); + + threads_per_block = cuda_query_threads_per_block (hashcat_ctx, func); + + const u32 num_regs = cuda_query_num_regs (hashcat_ctx, func); + + if (num_regs) + { + u32 threads_per_block_with_regs = (floor) ((float) device_param->regsPerBlock / num_regs); + + if (threads_per_block_with_regs > device_param->kernel_preferred_wgs_multiple) threads_per_block_with_regs -= threads_per_block_with_regs % device_param->kernel_preferred_wgs_multiple; + + threads_per_block = MIN (threads_per_block, threads_per_block_with_regs); + } + } + else if (device_param->is_hip == true) + { + const int kern_run = find_tuning_function (hashcat_ctx, device_param); + + hipFunction_t func = hip_function_with_id (device_param, kern_run); + + threads_per_block = hip_query_threads_per_block (hashcat_ctx, func); + + const u32 num_regs = hip_query_num_regs (hashcat_ctx, func); + + if (num_regs) + { + u32 threads_per_block_with_regs = (floor) ((float) device_param->regsPerBlock / num_regs); + + if (threads_per_block_with_regs > device_param->kernel_preferred_wgs_multiple) threads_per_block_with_regs -= threads_per_block_with_regs % device_param->kernel_preferred_wgs_multiple; + + threads_per_block = MIN (threads_per_block, threads_per_block_with_regs); + } + } + else if (device_param->is_opencl == true) + { + const int kern_run = find_tuning_function (hashcat_ctx, device_param); + + cl_kernel kernel = opencl_kernel_with_id (device_param, kern_run); + + threads_per_block = opencl_query_threads_per_block (hashcat_ctx, device_param, kernel); + + // num_regs check should be included in opencl's CL_KERNEL_WORK_GROUP_SIZE + } + else if (device_param->is_metal == true) + { + threads_per_block = device_param->kernel_preferred_wgs_multiple; + } + + if ((threads_per_block >= device_param->kernel_threads_min) && (threads_per_block <= device_param->kernel_threads_max)) + { + //printf ("auto thread max: %d\n", threads_per_block); + device_param->kernel_threads_max = threads_per_block; + } + + const u32 threads_per_block_p2f = threads_per_block / (threads_per_block & -threads_per_block); + + if ((threads_per_block_p2f >= device_param->kernel_threads_min) && (threads_per_block_p2f <= device_param->kernel_threads_max)) + { + //printf ("auto thread min: %d\n", threads_per_block_p2f); + device_param->kernel_threads_min = threads_per_block_p2f; + } + // this is required because inside the kernels there is this: // __local pw_t s_pws[64]; @@ -15020,61 +16042,25 @@ int backend_session_begin (hashcat_ctx_t *hashcat_ctx) u32 kernel_accel_min = device_param->kernel_accel_min; u32 kernel_accel_max = device_param->kernel_accel_max; - // We need to deal with the situation that the total video RAM > total host RAM. - // For the opposite direction, we do that in the loop section below. - // Especially in multi-GPU setups that is very likely. - // The buffers which actually take a lot of memory (except for SCRYPT) are the ones for the password candidates. - // They are stored in an aligned order for better performance, but this increases the memory pressure. - // The best way to keep these buffers to a reasonable size is by controlling the kernel_accel parameter. - // - // In theory this check could be disabled if we check if total video RAM < total host RAM, - // but at this point of initialization phase we don't have this information available. + // check if there's enough host memory left for upcoming allocations, otherwise reduce skip device and present user an option to deal with - // We need to hard-code some value, let's assume that (in 2021) the host has at least 4GB ram per active GPU + u64 accel_limit_host = 0; - const u64 SIZE_4GB = 4ULL * 1024 * 1024 * 1024; - - u64 accel_limit = SIZE_4GB; - - // in slow candidate mode we need to keep the buffers on the host alive - // a high accel value doesn't help much here anyway - - if (user_options->slow_candidates == true) + if (get_free_memory (&accel_limit_host) == false) { - // Tested with NTLM, almost no difference in performance + const u64 GiB4 = 4ULL * 1024 * 1024 * 1024; - accel_limit /= 8; + event_log_warning (hashcat_ctx, "Couldn't query the OS for free memory, assuming 4GiB"); + + accel_limit_host = GiB4; } - - // this is device_processors * kernel_threads - - accel_limit /= hardware_power_max; - - // single password candidate size - - accel_limit /= sizeof (pw_t); - - // pws[], pws_comp[] and pw_pre[] are some large blocks with password candidates - - accel_limit /= 3; - - // Is possible that the GPU simply has too much hardware resources and 8GB per GPU is not enough, but OTOH we can't get lower than 1 - - accel_limit = MAX (accel_limit, 1); - - // I think vector size is not required because vector_size is dividing the pws_cnt in run_kernel() - - kernel_accel_max = MIN (kernel_accel_max, accel_limit); - - if (kernel_accel_min > kernel_accel_max) + else { - event_log_error (hashcat_ctx, "* Device #%u: Too many compute units to keep minimum kernel accel limit.", device_id + 1); - event_log_error (hashcat_ctx, " Retry with lower --kernel-threads value."); + // even tho let's not be greedy - backend_kernel_accel_warnings++; + const u64 GiB8 = 8ULL * 1024 * 1024 * 1024; - device_param->skipped_warning = true; - continue; + accel_limit_host = MIN (accel_limit_host, GiB8); } // Opposite direction check: find out if we would request too much memory on memory blocks which are based on kernel_accel @@ -15092,10 +16078,38 @@ int backend_session_begin (hashcat_ctx_t *hashcat_ctx) u64 size_brain_link_out = 4; #endif + u32 local_size_bytes = 0; + + if ((device_param->is_cuda == true) || (device_param->is_hip == true) || (device_param->is_opencl == true)) + { + if (device_param->is_cuda == true) local_size_bytes = cuda_query_max_local_size_bytes (hashcat_ctx, device_param); + if (device_param->is_hip == true) local_size_bytes = hip_query_max_local_size_bytes (hashcat_ctx, device_param); + if (device_param->is_opencl == true) local_size_bytes = opencl_query_max_local_size_bytes (hashcat_ctx, device_param); + // metal todo + + // use this parameter to tune down kernel_accel_max, because it has such a huge impact on memory requirement + // let's target a maximum use of memory of 8GiB so that there's some room left for other stuff + + if (local_size_bytes) + { + const u64 SIZE_8GiB = 8ULL * 1024 * 1024 * 1024; + + const u64 max_accel = SIZE_8GiB / (hardware_power_max * local_size_bytes); + + kernel_accel_max = MIN (kernel_accel_max, max_accel); + } + } + + const u64 size_device_extra1234 = size_extra_buffer1 + size_extra_buffer2 + size_extra_buffer3 + size_extra_buffer4; + + const u64 size_device_extra = MAX ((1024 * 1024 * 1024), size_device_extra1234); + while (kernel_accel_max >= kernel_accel_min) { const u64 kernel_power_max = hardware_power_max * kernel_accel_max; + const u64 size_spilling = kernel_power_max * local_size_bytes; + // size_pws size_pws = kernel_power_max * sizeof (pw_t); @@ -15144,11 +16158,12 @@ int backend_session_begin (hashcat_ctx_t *hashcat_ctx) // sometimes device_available_mem and device_maxmem_alloc reported back from the opencl runtime are a bit inaccurate. // let's add some extra space just to be sure. // now depends on the kernel-accel value (where scrypt and similar benefits), but also hard minimum 64mb and maximum 1024mb limit + // let's see if we still need this now that we have low-level API to report free memory - u64 EXTRA_SPACE = (1024ULL * 1024ULL) * kernel_accel_max; + u64 EXTRA_SPACE = 4096; //(1024ULL * 1024ULL) * kernel_accel_max; - EXTRA_SPACE = MAX (EXTRA_SPACE, ( 256ULL * 1024ULL * 1024ULL)); - EXTRA_SPACE = MIN (EXTRA_SPACE, (1024ULL * 1024ULL * 1024ULL)); + //EXTRA_SPACE = MAX (EXTRA_SPACE, ( 256ULL * 1024ULL * 1024ULL)); + //EXTRA_SPACE = MIN (EXTRA_SPACE, (1024ULL * 1024ULL * 1024ULL)); if ((size_pws + EXTRA_SPACE) > device_param->device_maxmem_alloc) memory_limit_hit = 1; if ((size_tmps + EXTRA_SPACE) > device_param->device_maxmem_alloc) memory_limit_hit = 1; @@ -15157,6 +16172,9 @@ int backend_session_begin (hashcat_ctx_t *hashcat_ctx) // work around, for some reason apple opencl can't have buffers larger 2^31 // typically runs into trap 6 // maybe 32/64 bit problem affecting size_t? + // this is really ugly, and still in place 2025/06/09 + // Version.: OpenCL 1.2 (Apr 18 2025 21:45:30) + // Driver.Version.: 1.2 (Apr 22 2025 20:11:41) if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->is_metal == false)) { @@ -15179,7 +16197,10 @@ int backend_session_begin (hashcat_ctx_t *hashcat_ctx) if (size_rules > undocumented_single_allocation_apple) memory_limit_hit = 1; if (size_rules_c > undocumented_single_allocation_apple) memory_limit_hit = 1; if (size_salts > undocumented_single_allocation_apple) memory_limit_hit = 1; - if (size_extra_buffer > undocumented_single_allocation_apple) memory_limit_hit = 1; + if (size_extra_buffer1 > undocumented_single_allocation_apple) memory_limit_hit = 1; + if (size_extra_buffer2 > undocumented_single_allocation_apple) memory_limit_hit = 1; + if (size_extra_buffer3 > undocumented_single_allocation_apple) memory_limit_hit = 1; + if (size_extra_buffer4 > undocumented_single_allocation_apple) memory_limit_hit = 1; if (size_shown > undocumented_single_allocation_apple) memory_limit_hit = 1; if (size_tm > undocumented_single_allocation_apple) memory_limit_hit = 1; if (size_tmps > undocumented_single_allocation_apple) memory_limit_hit = 1; @@ -15214,14 +16235,15 @@ int backend_session_begin (hashcat_ctx_t *hashcat_ctx) + size_rules + size_rules_c + size_salts - + size_extra_buffer + + size_device_extra + size_shown + size_tm + size_tmps + size_st_digests + size_st_salts + size_st_esalts - + size_kernel_params; + + size_kernel_params + + size_spilling; if ((size_total + EXTRA_SPACE) > device_param->device_available_mem) memory_limit_hit = 1; @@ -15232,6 +16254,8 @@ int backend_session_begin (hashcat_ctx_t *hashcat_ctx) continue; } + const u64 size_host_extra = (512 * 1024 * 1024); + const u64 size_total_host = size_pws_comp + size_pws_idx @@ -15241,7 +16265,17 @@ int backend_session_begin (hashcat_ctx_t *hashcat_ctx) + size_brain_link_out #endif + size_pws_pre - + size_pws_base; + + size_pws_base + + size_host_extra; + + if ((size_total_host + EXTRA_SPACE) > accel_limit_host) memory_limit_hit = 1; + + if (memory_limit_hit == 1) + { + kernel_accel_max--; + + continue; + } size_total_host_all += size_total_host; @@ -15250,7 +16284,7 @@ int backend_session_begin (hashcat_ctx_t *hashcat_ctx) if (kernel_accel_max < kernel_accel_min) { - event_log_error (hashcat_ctx, "* Device #%u: Not enough allocatable device memory for this attack.", device_id + 1); + event_log_error (hashcat_ctx, "* Device #%u: Not enough allocatable device memory or free host memory for mapping.", device_id + 1); backend_memory_hit_warnings++; @@ -15368,6 +16402,13 @@ int backend_session_begin (hashcat_ctx_t *hashcat_ctx) * main host data */ + if (hashconfig->bridge_type) + { + void *h_tmps = hcmalloc_aligned (device_param->size_tmps, 64); + + device_param->h_tmps = h_tmps; + } + u32 *pws_comp = (u32 *) hcmalloc (size_pws_comp); device_param->pws_comp = pws_comp; @@ -15702,6 +16743,7 @@ void backend_session_destroy (hashcat_ctx_t *hashcat_ctx) if (device_param->skipped == true) continue; + hcfree_aligned (device_param->h_tmps); hcfree (device_param->pws_comp); hcfree (device_param->pws_idx); hcfree (device_param->pws_pre_buf); @@ -16268,6 +17310,7 @@ void backend_session_destroy (hashcat_ctx_t *hashcat_ctx) device_param->opencl_context = NULL; } + device_param->h_tmps = NULL; device_param->pws_comp = NULL; device_param->pws_idx = NULL; device_param->pws_pre_buf = NULL; diff --git a/src/brain.c b/src/brain.c index fbb1f206a..88b896c55 100644 --- a/src/brain.c +++ b/src/brain.c @@ -3052,6 +3052,8 @@ int brain_server (const char *listen_host, const int listen_port, const char *br { brain_logging (stderr, 0, "setsockopt: %s\n", strerror (errno)); + close(server_fd); + if (brain_password == NULL) hcfree (auth_password); return -1; @@ -3061,6 +3063,8 @@ int brain_server (const char *listen_host, const int listen_port, const char *br { brain_logging (stderr, 0, "setsockopt: %s\n", strerror (errno)); + close(server_fd); + if (brain_password == NULL) hcfree (auth_password); return -1; @@ -3104,6 +3108,8 @@ int brain_server (const char *listen_host, const int listen_port, const char *br { brain_logging (stderr, 0, "%s: %s\n", listen_host, gai_strerror (rc_getaddrinfo)); + close(server_fd); + if (brain_password == NULL) hcfree (auth_password); return -1; @@ -3114,6 +3120,8 @@ int brain_server (const char *listen_host, const int listen_port, const char *br { brain_logging (stderr, 0, "bind: %s\n", strerror (errno)); + close(server_fd); + if (brain_password == NULL) hcfree (auth_password); return -1; @@ -3123,6 +3131,8 @@ int brain_server (const char *listen_host, const int listen_port, const char *br { brain_logging (stderr, 0, "listen: %s\n", strerror (errno)); + close(server_fd); + if (brain_password == NULL) hcfree (auth_password); return -1; diff --git a/src/bridges.c b/src/bridges.c new file mode 100644 index 000000000..9b37aa25a --- /dev/null +++ b/src/bridges.c @@ -0,0 +1,276 @@ +/** + * Author......: See docs/credits.txt + * License.....: MIT + */ + +#include "common.h" +#include "types.h" +#include "memory.h" +#include "event.h" +#include "shared.h" +#include "modules.h" +#include "backend.h" +#include "dynloader.h" +#include "bridges.h" +#include "interface.h" + +/** + * parsing + */ + +int bridge_filename (const folder_config_t *folder_config, const char *bridge_name, char *out_buf, const size_t out_size) +{ + // native compiled + #if defined (_WIN) || defined (__CYGWIN__) + return snprintf (out_buf, out_size, "%s/bridges/bridge_%s.dll", folder_config->shared_dir, bridge_name); + #else + return snprintf (out_buf, out_size, "%s/bridges/bridge_%s.so", folder_config->shared_dir, bridge_name); + #endif +} + +bool bridge_load (hashcat_ctx_t *hashcat_ctx, bridge_ctx_t *bridge_ctx, const char *bridge_name) +{ + const folder_config_t *folder_config = hashcat_ctx->folder_config; + + char *bridge_file = (char *) hcmalloc (HCBUFSIZ_TINY); + + bridge_filename (folder_config, bridge_name, bridge_file, HCBUFSIZ_TINY); + + struct stat s; + + memset (&s, 0, sizeof (struct stat)); + + if (stat (bridge_file, &s) == -1) + { + event_log_warning (hashcat_ctx, "The bridge plugin '%s' couldn't be found.", bridge_file); + event_log_warning (hashcat_ctx, NULL); + } + + bridge_ctx->bridge_handle = hc_dlopen (bridge_file); + + if (bridge_ctx->bridge_handle == NULL) + { + #if defined (_WIN) + event_log_error (hashcat_ctx, "Cannot load bridge %s", bridge_file); // todo: maybe there's a dlerror () equivalent + #else + event_log_error (hashcat_ctx, "%s", dlerror ()); + #endif + + return false; + } + + bridge_ctx->bridge_init = (BRIDGE_INIT) hc_dlsym (bridge_ctx->bridge_handle, "bridge_init"); + + if (bridge_ctx->bridge_init == NULL) + { + event_log_error (hashcat_ctx, "Cannot load symbol 'bridge_init' in bridge %s", bridge_file); + + return false; + } + + hcfree (bridge_file); + + return true; +} + +void bridge_unload (bridge_ctx_t *bridge_ctx) +{ + if (bridge_ctx->bridge_handle) + { + hc_dlclose (bridge_ctx->bridge_handle); + } +} + +bool bridges_init (hashcat_ctx_t *hashcat_ctx) +{ + bridge_ctx_t *bridge_ctx = hashcat_ctx->bridge_ctx; + user_options_t *user_options = hashcat_ctx->user_options; + hashconfig_t *hashconfig = hashcat_ctx->hashconfig; + + if (user_options->hash_info == true) return true; + if (user_options->left == true) return true; + if (user_options->show == true) return true; + if (user_options->usage > 0) return true; + if (user_options->version == true) return true; + if (user_options->backend_info > 0) return true; + + // There is a problem here. At this point, hashconfig is not yet initialized. + // This is because initializing hashconfig requires the module to be loaded, + // but in order to load the module, we need to know the backend devices. + // However, the backend devices are also not yet initialized, because + // they require the virtualization count, which we only determine here. + // To break this chicken-and-egg problem, we cheat by quick-loading the module + // and unloading it afterwards, so it can be properly initialized later. + + const int hashconfig_init_rc = hashconfig_init (hashcat_ctx); + + if (hashconfig_init_rc == -1) return false; + + // ok, we can start + + if (hashconfig->bridge_type == BRIDGE_TYPE_NONE) + { + hashconfig_destroy (hashcat_ctx); + + return true; + } + + bridge_ctx->enabled = true; + + // finally, the real stuff + + const bool rc_load = bridge_load (hashcat_ctx, bridge_ctx, hashconfig->bridge_name); + + if (rc_load == false) return false; + + bridge_ctx->bridge_init (bridge_ctx); + + if (bridge_ctx->bridge_context_size != BRIDGE_CONTEXT_SIZE_CURRENT) + { + event_log_error (hashcat_ctx, "bridge context size is invalid. Old template?"); + + return false; + } + + if (bridge_ctx->bridge_interface_version < BRIDGE_INTERFACE_VERSION_MINIMUM) + { + event_log_error (hashcat_ctx, "bridge interface version is outdated, please compile"); + + return false; + } + + // check for missing pointer assignements + + #define CHECK_DEFINED(func) \ + if ((func) == NULL) \ + { \ + event_log_error (hashcat_ctx, "Missing symbol definitions in bridge '%s'. Old template?", hashconfig->bridge_name); \ + \ + return false; \ + } + + CHECK_DEFINED (bridge_ctx->platform_init); + CHECK_DEFINED (bridge_ctx->platform_term); + CHECK_DEFINED (bridge_ctx->get_unit_count); + CHECK_DEFINED (bridge_ctx->get_unit_info); + CHECK_DEFINED (bridge_ctx->get_workitem_count); + CHECK_DEFINED (bridge_ctx->thread_init); + CHECK_DEFINED (bridge_ctx->thread_term); + CHECK_DEFINED (bridge_ctx->salt_prepare); + CHECK_DEFINED (bridge_ctx->salt_destroy); + CHECK_DEFINED (bridge_ctx->launch_loop); + CHECK_DEFINED (bridge_ctx->launch_loop2); + CHECK_DEFINED (bridge_ctx->st_update_hash); + CHECK_DEFINED (bridge_ctx->st_update_pass); + + #undef CHECK_DEFINED + + // mandatory functions check + + #define CHECK_MANDATORY(func) \ + if ((func) == MODULE_DEFAULT) \ + { \ + event_log_error (hashcat_ctx, "Missing mandatory symbol definitions"); \ + \ + return false; \ + } + + CHECK_MANDATORY (bridge_ctx->platform_init); + CHECK_MANDATORY (bridge_ctx->platform_term); + CHECK_MANDATORY (bridge_ctx->get_unit_count); + CHECK_MANDATORY (bridge_ctx->get_unit_info); + CHECK_MANDATORY (bridge_ctx->get_workitem_count); + + if (hashconfig->bridge_type & BRIDGE_TYPE_REPLACE_LOOP) CHECK_MANDATORY (bridge_ctx->launch_loop); + if (hashconfig->bridge_type & BRIDGE_TYPE_REPLACE_LOOP2) CHECK_MANDATORY (bridge_ctx->launch_loop2); + if (hashconfig->bridge_type & BRIDGE_TYPE_LAUNCH_LOOP) CHECK_MANDATORY (bridge_ctx->launch_loop); + if (hashconfig->bridge_type & BRIDGE_TYPE_LAUNCH_LOOP2) CHECK_MANDATORY (bridge_ctx->launch_loop2); + + #undef CHECK_MANDATORY + + bridge_ctx->platform_context = bridge_ctx->platform_init (user_options); + + if (bridge_ctx->platform_context == NULL) + { + event_log_error (hashcat_ctx, "Platform initialization failed"); + + return false; + } + + // auto adjust workitem counts + + if (hashconfig->bridge_type & BRIDGE_TYPE_MATCH_TUNINGS) + { + if ((hashconfig->opts_type & OPTS_TYPE_NATIVE_THREADS) == 0) + { + event_log_error (hashcat_ctx, "BRIDGE_TYPE_MATCH_TUNINGS requires OPTS_TYPE_NATIVE_THREADS"); + + return false; + } + + if ((hashconfig->opts_type & OPTS_TYPE_MP_MULTI_DISABLE) == 0) + { + event_log_error (hashcat_ctx, "BRIDGE_TYPE_MATCH_TUNINGS requires OPTS_TYPE_MP_MULTI_DISABLE"); + + return false; + } + } + + // clean up + + hashconfig_destroy (hashcat_ctx); + + return true; +} + +void bridges_destroy (hashcat_ctx_t *hashcat_ctx) +{ + bridge_ctx_t *bridge_ctx = hashcat_ctx->bridge_ctx; + + if (bridge_ctx->enabled == false) return; + + bridge_ctx->platform_term (bridge_ctx->platform_context); + + bridge_unload (bridge_ctx); +} + +bool bridges_salt_prepare (hashcat_ctx_t *hashcat_ctx) +{ + bridge_ctx_t *bridge_ctx = hashcat_ctx->bridge_ctx; + hashconfig_t *hashconfig = hashcat_ctx->hashconfig; + hashes_t *hashes = hashcat_ctx->hashes; + user_options_t *user_options = hashcat_ctx->user_options; + + if (user_options->hash_info == true) return true; + if (user_options->left == true) return true; + if (user_options->show == true) return true; + if (user_options->usage > 0) return true; + if (user_options->version == true) return true; + if (user_options->backend_info > 0) return true; + + if (bridge_ctx->enabled == false) return true; + + if (bridge_ctx->salt_prepare == MODULE_DEFAULT) return true; + + if (bridge_ctx->salt_prepare (bridge_ctx->platform_context, hashconfig, hashes) == false) + { + event_log_error (hashcat_ctx, "Couldn't prepare salt specific data in bridge"); + + return false; + } + + return true; +} + +void bridges_salt_destroy (hashcat_ctx_t *hashcat_ctx) +{ + bridge_ctx_t *bridge_ctx = hashcat_ctx->bridge_ctx; + hashconfig_t *hashconfig = hashcat_ctx->hashconfig; + hashes_t *hashes = hashcat_ctx->hashes; + + if (bridge_ctx->enabled == false) return; + + if (bridge_ctx->salt_destroy == MODULE_DEFAULT) return; + + bridge_ctx->salt_destroy (bridge_ctx->platform_context, hashconfig, hashes); +} diff --git a/src/bridges/.gitkeep b/src/bridges/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/src/bridges/bridge_argon2id_reference.c b/src/bridges/bridge_argon2id_reference.c new file mode 100644 index 000000000..06c9eda22 --- /dev/null +++ b/src/bridges/bridge_argon2id_reference.c @@ -0,0 +1,305 @@ +/** + * Author......: See docs/credits.txt + * License.....: MIT + */ + +#include "common.h" +#include "types.h" +#include "bridges.h" +#include "memory.h" +#include "shared.h" +#include "cpu_features.h" + +// argon2 reference + +#undef _DEFAULT_SOURCE + +#include "argon2.c" +#include "core.c" +#include "blake2/blake2b.c" +#include "opt.c" + +// good: we can use this multiplier do reduce copy overhead to increase the guessing speed, +// bad: but we also increase the password candidate batch size. +// slow hashes which make use of this bridge probably are used with smaller wordlists, +// and therefore it's easier for hashcat to parallelize if this multiplier is low. +// in the end, it's a trade-off. + +#define N_ACCEL 8 + +typedef struct +{ + // input + + u32 pw_buf[64]; + u32 pw_len; + + // output + + u32 h[64]; + +} argon2_reference_tmp_t; + +typedef struct +{ + u32 salt_buf[64]; + u32 salt_len; + + u32 digest_buf[64]; + u32 digest_len; + + u32 m; + u32 t; + u32 p; + +} argon2_t; + +typedef struct +{ + // template + + char unit_info_buf[1024]; + int unit_info_len; + + u64 workitem_count; + size_t workitem_size; + + // implementation specific + + void *memory; + +} unit_t; + +typedef struct +{ + unit_t *units_buf; + int units_cnt; + +} bridge_argon2id_t; + +static bool units_init (bridge_argon2id_t *bridge_argon2id) +{ + #if defined (_WIN) + + SYSTEM_INFO sysinfo; + + GetSystemInfo (&sysinfo); + + int num_devices = sysinfo.dwNumberOfProcessors; + + #else + + int num_devices = sysconf (_SC_NPROCESSORS_ONLN); + + #endif + + // this works really good for me, I think is because of register pressure on SIMD enabled code + num_devices /= 2; + + // this is just a wild guess, but memory bus will probably bottleneck if we + // have too many cores using it. we set some upper limit which is not ideal, but good enough for now. + //num_devices = MIN (num_devices, 8); + + unit_t *units_buf = (unit_t *) hccalloc (num_devices, sizeof (unit_t)); + + int units_cnt = 0; + + for (int i = 0; i < num_devices; i++) + { + unit_t *unit_buf = &units_buf[i]; + + unit_buf->unit_info_len = snprintf (unit_buf->unit_info_buf, sizeof (unit_buf->unit_info_buf) - 1, + "%s", + "Argon2 reference implementation + tunings"); + + unit_buf->unit_info_buf[unit_buf->unit_info_len] = 0; + + unit_buf->workitem_count = N_ACCEL; + + units_cnt++; + } + + bridge_argon2id->units_buf = units_buf; + bridge_argon2id->units_cnt = units_cnt; + + return true; +} + +static void units_term (bridge_argon2id_t *bridge_argon2id) +{ + if (bridge_argon2id->units_buf) + { + hcfree (bridge_argon2id->units_buf); + } +} + +void *platform_init () +{ + // Verify CPU features + + if (cpu_chipset_test () == -1) return NULL; + + // Allocate platform context + + bridge_argon2id_t *bridge_argon2id = (bridge_argon2id_t *) hcmalloc (sizeof (bridge_argon2id_t)); + + if (units_init (bridge_argon2id) == false) + { + hcfree (bridge_argon2id); + + return NULL; + } + + return bridge_argon2id; +} + +void platform_term (void *platform_context) +{ + bridge_argon2id_t *bridge_argon2id = platform_context; + + if (bridge_argon2id) + { + units_term (bridge_argon2id); + + hcfree (bridge_argon2id); + } +} + +int get_unit_count (void *platform_context) +{ + bridge_argon2id_t *bridge_argon2id = platform_context; + + return bridge_argon2id->units_cnt; +} + +// we support units of mixed speed, that's why the workitem count is unit specific + +int get_workitem_count (void *platform_context, const int unit_idx) +{ + bridge_argon2id_t *bridge_argon2id = platform_context; + + unit_t *unit_buf = &bridge_argon2id->units_buf[unit_idx]; + + return unit_buf->workitem_count; +} + +char *get_unit_info (void *platform_context, const int unit_idx) +{ + bridge_argon2id_t *bridge_argon2id = platform_context; + + unit_t *unit_buf = &bridge_argon2id->units_buf[unit_idx]; + + return unit_buf->unit_info_buf; +} + +bool salt_prepare (void *platform_context, MAYBE_UNUSED hashconfig_t *hashconfig, MAYBE_UNUSED hashes_t *hashes) +{ + // we can use self-test hash as base + + argon2_t *argon2_st = (argon2_t *) hashes->st_esalts_buf; + + size_t largest_m = argon2_st->m; + + // from here regular hashes + + argon2_t *argon2 = (argon2_t *) hashes->esalts_buf; + + for (u32 salt_idx = 0; salt_idx < hashes->salts_cnt; salt_idx++, argon2++) + { + if (argon2->m > largest_m) largest_m = argon2->m; + } + + bridge_argon2id_t *bridge_argon2id = platform_context; + + for (int unit_idx = 0; unit_idx < bridge_argon2id->units_cnt; unit_idx++) + { + unit_t *unit_buf = &bridge_argon2id->units_buf[unit_idx]; + + unit_buf->memory = hcmalloc_aligned ((largest_m * 1024), 32); // because AVX2 + } + + return true; +} + +void salt_destroy (void *platform_context, MAYBE_UNUSED hashconfig_t *hashconfig, MAYBE_UNUSED hashes_t *hashes) +{ + bridge_argon2id_t *bridge_argon2id = platform_context; + + for (int unit_idx = 0; unit_idx < bridge_argon2id->units_cnt; unit_idx++) + { + unit_t *unit_buf = &bridge_argon2id->units_buf[unit_idx]; + + hcfree_aligned (unit_buf->memory); + } +} + +bool launch_loop (MAYBE_UNUSED void *platform_context, MAYBE_UNUSED hc_device_param_t *device_param, MAYBE_UNUSED hashconfig_t *hashconfig, MAYBE_UNUSED hashes_t *hashes, MAYBE_UNUSED const u32 salt_pos, MAYBE_UNUSED const u64 pws_cnt) +{ + bridge_argon2id_t *bridge_argon2id = platform_context; + + const int unit_idx = device_param->bridge_link_device; + + unit_t *unit_buf = &bridge_argon2id->units_buf[unit_idx]; + + argon2_t *esalts_buf = (argon2_t *) hashes->esalts_buf; + + argon2_t *argon2id = &esalts_buf[salt_pos]; + + argon2_reference_tmp_t *argon2_reference_tmp = (argon2_reference_tmp_t *) device_param->h_tmps; + + argon2_context context; + + context.out = (uint8_t *) NULL; + context.outlen = (uint32_t) 0; + context.pwd = (uint8_t *) NULL; + context.pwdlen = (uint32_t) 0; + context.salt = (uint8_t *) argon2id->salt_buf; + context.saltlen = (uint32_t) argon2id->salt_len; + context.secret = NULL; + context.secretlen = 0; + context.ad = NULL; + context.adlen = 0; + context.t_cost = argon2id->t; + context.m_cost = argon2id->m; + context.lanes = argon2id->p; + context.threads = 1; + context.allocate_cbk = NULL; + context.free_cbk = NULL; + context.flags = ARGON2_DEFAULT_FLAGS; + context.version = ARGON2_VERSION_NUMBER; + context.memory = unit_buf->memory; + + for (u64 i = 0; i < pws_cnt; i++) + { + context.out = (uint8_t *) argon2_reference_tmp->h; + context.outlen = (uint32_t) argon2id->digest_len; + context.pwd = (uint8_t *) argon2_reference_tmp->pw_buf; + context.pwdlen = (uint32_t) argon2_reference_tmp->pw_len; + + argon2_ctx (&context, Argon2_id); + + argon2_reference_tmp++; + } + + return true; +} + +void bridge_init (bridge_ctx_t *bridge_ctx) +{ + bridge_ctx->bridge_context_size = BRIDGE_CONTEXT_SIZE_CURRENT; + bridge_ctx->bridge_interface_version = BRIDGE_INTERFACE_VERSION_CURRENT; + + bridge_ctx->platform_init = platform_init; + bridge_ctx->platform_term = platform_term; + bridge_ctx->get_unit_count = get_unit_count; + bridge_ctx->get_unit_info = get_unit_info; + bridge_ctx->get_workitem_count = get_workitem_count; + bridge_ctx->thread_init = BRIDGE_DEFAULT; + bridge_ctx->thread_term = BRIDGE_DEFAULT; + bridge_ctx->salt_prepare = salt_prepare; + bridge_ctx->salt_destroy = salt_destroy; + bridge_ctx->launch_loop = launch_loop; + bridge_ctx->launch_loop2 = BRIDGE_DEFAULT; + bridge_ctx->st_update_hash = BRIDGE_DEFAULT; + bridge_ctx->st_update_pass = BRIDGE_DEFAULT; +} diff --git a/src/bridges/bridge_argon2id_reference.mk b/src/bridges/bridge_argon2id_reference.mk new file mode 100644 index 000000000..d02eed8ff --- /dev/null +++ b/src/bridges/bridge_argon2id_reference.mk @@ -0,0 +1,30 @@ + +ARGON2_REFERENCE := deps/phc-winner-argon2-20190702 +ARGON2_REFERENCE_CFLAGS := -I$(ARGON2_REFERENCE)/_hashcat/ + +ifeq ($(BUILD_MODE),cross) +ARGON2_REFERENCE_CFLAGS += -mavx2 +else +ifeq ($(UNAME),Darwin) +ifeq ($(IS_APPLE_SILICON),0) +ARGON2_REFERENCE_CFLAGS += -mavx2 +endif +else +ARGON2_REFERENCE_CFLAGS += -march=native +endif +endif + +ifeq ($(BUILD_MODE),cross) +bridges/bridge_argon2id_reference.so: src/bridges/bridge_argon2id_reference.c src/cpu_features.c obj/combined.LINUX.a + $(CC_LINUX) $(CCFLAGS) $(CFLAGS_CROSS_LINUX) $^ -o $@ $(LFLAGS_CROSS_LINUX) -shared -fPIC -D BRIDGE_INTERFACE_VERSION_CURRENT=$(BRIDGE_INTERFACE_VERSION) $(ARGON2_REFERENCE_CFLAGS) +bridges/bridge_argon2id_reference.dll: src/bridges/bridge_argon2id_reference.c src/cpu_features.c obj/combined.WIN.a + $(CC_WIN) $(CCFLAGS) $(CFLAGS_CROSS_WIN) $^ -o $@ $(LFLAGS_CROSS_WIN) -shared -fPIC -D BRIDGE_INTERFACE_VERSION_CURRENT=$(BRIDGE_INTERFACE_VERSION) $(ARGON2_REFERENCE_CFLAGS) +else +ifeq ($(SHARED),1) +bridges/bridge_argon2id_reference.$(BRIDGE_SUFFIX): src/bridges/bridge_argon2id_reference.c src/cpu_features.c $(HASHCAT_LIBRARY) + $(CC) $(CCFLAGS) $(CFLAGS_NATIVE) $^ -o $@ $(LFLAGS_NATIVE) -shared -fPIC -D BRIDGE_INTERFACE_VERSION_CURRENT=$(BRIDGE_INTERFACE_VERSION) $(ARGON2_REFERENCE_CFLAGS) +else +bridges/bridge_argon2id_reference.$(BRIDGE_SUFFIX): src/bridges/bridge_argon2id_reference.c src/cpu_features.c obj/combined.NATIVE.a + $(CC) $(CCFLAGS) $(CFLAGS_NATIVE) $^ -o $@ $(LFLAGS_NATIVE) -shared -fPIC -D BRIDGE_INTERFACE_VERSION_CURRENT=$(BRIDGE_INTERFACE_VERSION) $(ARGON2_REFERENCE_CFLAGS) +endif +endif diff --git a/src/bridges/bridge_python_generic_hash_mp.c b/src/bridges/bridge_python_generic_hash_mp.c new file mode 100644 index 000000000..4dcfe0ea5 --- /dev/null +++ b/src/bridges/bridge_python_generic_hash_mp.c @@ -0,0 +1,1136 @@ +/** + * Author......: See docs/credits.txt + * License.....: MIT + */ + +#include "common.h" +#include "types.h" +#include "bridges.h" +#include "memory.h" +#include "shared.h" +#include "cpu_features.h" +#include "dynloader.h" + +#if defined (_WIN) +#include "processenv.h" +#endif + +// python interpreter + +#define PY_SSIZE_T_CLEAN + +#undef _GNU_SOURCE +#include + +#define PYTHON_API_CALL + +typedef void (PYTHON_API_CALL *PY_INITIALIZE) (); +typedef void (PYTHON_API_CALL *PY_FINALIZE) (); +typedef void (PYTHON_API_CALL *PY_DECREF) (PyObject *); +typedef PyObject *(PYTHON_API_CALL *PYBOOL_FROMLONG) (long); +typedef PyObject *(PYTHON_API_CALL *PYBYTES_FROMSTRINGANDSIZE) (const char *, Py_ssize_t); +typedef int (PYTHON_API_CALL *PYDICT_DELITEMSTRING) (PyObject *, const char *); +typedef PyObject *(PYTHON_API_CALL *PYDICT_GETITEMSTRING) (PyObject *, const char *); +typedef PyObject *(PYTHON_API_CALL *PYDICT_NEW) (); +typedef int (PYTHON_API_CALL *PYDICT_SETITEMSTRING) (PyObject *, const char *, PyObject *); +typedef void (PYTHON_API_CALL *PYERR_PRINT) (); +typedef PyObject *(PYTHON_API_CALL *PYIMPORT_IMPORTMODULE) (const char *); +typedef PyObject *(PYTHON_API_CALL *PYIMPORT_IMPORT) (PyObject *); +typedef int (PYTHON_API_CALL *PYLIST_APPEND) (PyObject *, PyObject *); +typedef PyObject *(PYTHON_API_CALL *PYLIST_GETITEM) (PyObject *, Py_ssize_t); +typedef PyObject *(PYTHON_API_CALL *PYLIST_NEW) (Py_ssize_t); +typedef int (PYTHON_API_CALL *PYLIST_SETITEM) (PyObject *, Py_ssize_t, PyObject *); +typedef Py_ssize_t (PYTHON_API_CALL *PYLIST_SIZE) (PyObject *); +typedef PyObject *(PYTHON_API_CALL *PYLONG_FROMLONG) (long); +typedef PyObject *(PYTHON_API_CALL *PYOBJECT_CALLOBJECT) (PyObject *, PyObject *); +typedef PyObject *(PYTHON_API_CALL *PYOBJECT_GETATTRSTRING) (PyObject *, const char *); +typedef PyObject *(PYTHON_API_CALL *PYTUPLE_NEW) (Py_ssize_t); +typedef int (PYTHON_API_CALL *PYTUPLE_SETITEM) (PyObject *, Py_ssize_t, PyObject *); +typedef const char *(PYTHON_API_CALL *PYUNICODE_ASUTF8) (PyObject *); +typedef const char *(PYTHON_API_CALL *PYUNICODE_ASUTF8ANDSIZE) (PyObject *, Py_ssize_t *); +typedef PyObject *(PYTHON_API_CALL *PYUNICODE_DECODEFSDEFAULTANDSIZE) (const char *, Py_ssize_t); +typedef PyObject *(PYTHON_API_CALL *PYUNICODE_DECODEFSDEFAULT) (const char *); +typedef PyObject *(PYTHON_API_CALL *PYUNICODE_FROMSTRINGANDSIZE) (const char *, Py_ssize_t); +typedef PyObject *(PYTHON_API_CALL *PYUNICODE_FROMSTRING) (const char *); +typedef void (PYTHON_API_CALL *PYEVAL_ACQUIRELOCK) (void); +typedef void (PYTHON_API_CALL *PYEVAL_RELEASELOCK) (void); +typedef PyThreadState *(PYTHON_API_CALL *PYTHREADSTATE_SWAP) (PyThreadState *); +typedef PyThreadState *(PYTHON_API_CALL *PYNEWINTERPRETER) (void); +typedef void (PYTHON_API_CALL *PYENDINTERPRETER) (PyThreadState *); +typedef PyGILState_STATE (PYTHON_API_CALL *PYGILSTATE_ENSURE) (void); +typedef void (PYTHON_API_CALL *PYGILSTATE_RELEASE) (PyGILState_STATE); +typedef void (PYTHON_API_CALL *PYEVAL_ACQUIRETHREAD) (PyThreadState *); +typedef void (PYTHON_API_CALL *PYEVAL_RELEASETHREAD) (PyThreadState *); +typedef void (PYTHON_API_CALL *PYTHREADSTATE_CLEAR) (PyThreadState *); +typedef void (PYTHON_API_CALL *PYTHREADSTATE_DELETE) (PyThreadState *); +typedef PyThreadState *(PYTHON_API_CALL *PYTHREADSTATE_NEW) (PyInterpreterState *); +typedef PyInterpreterState *(PYTHON_API_CALL *PYINTERPRETERSTATE_MAIN) (void); +typedef void (PYTHON_API_CALL *PYEVAL_INITTHREADS) (void); +typedef PyThreadState *(PYTHON_API_CALL *PYEVAL_SAVETHREAD) (void); +//typedef PyStatus (PYTHON_API_CALL *PYNEWINTERPRETERFROMCONFIG) (PyThreadState **, const PyInterpreterConfig *); +typedef void (PYTHON_API_CALL *PYEXITSTATUSEXCEPTION) (PyStatus); +typedef PyStatus (PYTHON_API_CALL *PYINITIALIZEFROMCONFIG) (const PyConfig *); +typedef void (PYTHON_API_CALL *PYEVAL_RESTORETHREAD) (PyThreadState *); +typedef const char *(PYTHON_API_CALL *PYGETVERSION) (void); +typedef PyObject *(PYTHON_API_CALL *PY_COMPILESTRINGEXFLAGS) (const char *, const char *, int, PyCompilerFlags *, int); +typedef PyObject *(PYTHON_API_CALL *PYEVAL_EVALCODE) (PyObject *, PyObject *, PyObject *); +typedef PyObject *(PYTHON_API_CALL *PYEVAL_GETBUILTINS) (void); + +typedef struct hc_python_lib +{ + hc_dynlib_t lib; + + PY_INITIALIZE Py_Initialize; + PY_FINALIZE Py_Finalize; + PY_DECREF Py_DecRef; + PYBOOL_FROMLONG PyBool_FromLong; + PYBYTES_FROMSTRINGANDSIZE PyBytes_FromStringAndSize; + PYDICT_DELITEMSTRING PyDict_DelItemString; + PYDICT_GETITEMSTRING PyDict_GetItemString; + PYDICT_NEW PyDict_New; + PYDICT_SETITEMSTRING PyDict_SetItemString; + PYERR_PRINT PyErr_Print; + PYIMPORT_IMPORTMODULE PyImport_ImportModule; + PYIMPORT_IMPORT PyImport_Import; + PYLIST_APPEND PyList_Append; + PYLIST_GETITEM PyList_GetItem; + PYLIST_NEW PyList_New; + PYLIST_SETITEM PyList_SetItem; + PYLIST_SIZE PyList_Size; + PYLONG_FROMLONG PyLong_FromLong; + PYOBJECT_CALLOBJECT PyObject_CallObject; + PYOBJECT_GETATTRSTRING PyObject_GetAttrString; + PYTUPLE_NEW PyTuple_New; + PYTUPLE_SETITEM PyTuple_SetItem; + PYUNICODE_ASUTF8 PyUnicode_AsUTF8; + PYUNICODE_ASUTF8ANDSIZE PyUnicode_AsUTF8AndSize; + PYUNICODE_DECODEFSDEFAULTANDSIZE PyUnicode_DecodeFSDefaultAndSize; + PYUNICODE_DECODEFSDEFAULT PyUnicode_DecodeFSDefault; + PYUNICODE_FROMSTRINGANDSIZE PyUnicode_FromStringAndSize; + PYUNICODE_FROMSTRING PyUnicode_FromString; + PYEVAL_ACQUIRELOCK PyEval_AcquireLock; + PYEVAL_RELEASELOCK PyEval_ReleaseLock; + PYTHREADSTATE_SWAP PyThreadState_Swap; + PYNEWINTERPRETER Py_NewInterpreter; + PYENDINTERPRETER Py_EndInterpreter; + PYGILSTATE_ENSURE PyGILState_Ensure; + PYGILSTATE_RELEASE PyGILState_Release; + PYEVAL_ACQUIRETHREAD PyEval_AcquireThread; + PYEVAL_RELEASETHREAD PyEval_ReleaseThread; + PYTHREADSTATE_CLEAR PyThreadState_Clear; + PYTHREADSTATE_DELETE PyThreadState_Delete; + PYTHREADSTATE_NEW PyThreadState_New; + PYINTERPRETERSTATE_MAIN PyInterpreterState_Main; + PYEVAL_INITTHREADS PyEval_InitThreads; + PYEVAL_SAVETHREAD PyEval_SaveThread; + //PYNEWINTERPRETERFROMCONFIG Py_NewInterpreterFromConfig; + PYEXITSTATUSEXCEPTION Py_ExitStatusException; + PYINITIALIZEFROMCONFIG Py_InitializeFromConfig; + PYEVAL_RESTORETHREAD PyEval_RestoreThread; + PYGETVERSION Py_GetVersion; + PY_COMPILESTRINGEXFLAGS Py_CompileStringExFlags; + PYEVAL_EVALCODE PyEval_EvalCode; + PYEVAL_GETBUILTINS PyEval_GetBuiltins; + +} hc_python_lib_t; + +// good: we can use this multiplier do reduce copy overhead to increase the guessing speed, +// bad: but we also increase the password candidate batch size. +// slow hashes which make use of this bridge probably are used with smaller wordlists, +// and therefore it's easier for hashcat to parallelize if this multiplier is low. +// in the end, it's a trade-off. + +#define N_ACCEL 8 + +typedef struct +{ + // input + + u32 pw_buf[64]; + u32 pw_len; + + // output + + u32 out_buf[64]; + u32 out_len; + +} generic_io_tmp_t; + +typedef struct +{ + // template + + char unit_info_buf[1024]; + int unit_info_len; + + u64 workitem_count; + size_t workitem_size; + + // implementation specific + + int parallelism; + + PyGILState_STATE gstate; + + PyObject *pArgs; + PyObject *pContext; + PyObject *pGlobals; + PyObject *pFunc_Init; + PyObject *pFunc_Term; + PyObject *pFunc_kernel_loop; + +} unit_t; + +typedef struct +{ + unit_t *units_buf; + int units_cnt; + + hc_python_lib_t *python; + + PyThreadState *tstate; + + char *source_filename; + +} python_interpreter_t; + +#if defined (_WIN) || defined (__CYGWIN__) || defined (__APPLE__) +static char *DEFAULT_SOURCE_FILENAME = "Python/generic_hash_sp.py"; +#else +static char *DEFAULT_SOURCE_FILENAME = "Python/generic_hash_mp.py"; +#endif + +const char *extract_module_name (const char *path) +{ + char *filename = strdup (path); + + remove_file_suffix (filename, ".py"); + + const char *slash = strrchr (filename, '/'); + const char *backslash = strrchr (filename, '\\'); + + const char *module_name = NULL; + + if (slash) + { + module_name = slash + 1; + } + else if (backslash) + { + module_name = backslash + 1; + } + else + { + module_name = filename; + } + + return module_name; +} + +static char *expand_pyenv_libpath (const char *prefix, const int maj, const int min) +{ + char *out = NULL; + + #if defined (_WIN) + const int len = asprintf (&out, "%s/python%d%d.dll", prefix, maj, min); //untested + #elif defined (__MSYS__) + const int len = asprintf (&out, "%s/msys-python%d.%d.dll", prefix, maj, min); //untested could be wrong + #elif defined (__APPLE__) + const int len = asprintf (&out, "%s/lib/libpython%d.%d.dylib", prefix, maj, min); //untested + #elif defined (__CYGWIN__) + const int len = asprintf (&out, "%s/lib/python%d%d.dll", prefix, maj, min); //untested + #else + const int len = asprintf (&out, "%s/lib/libpython%d.%d.so", prefix, maj, min); + #endif + + if (len == -1) return NULL; + + struct stat st; + + if (stat (out, &st) != 0) + { + free (out); + + return NULL; + } + + return out; +} + +static int resolve_pyenv_libpath (char *out_buf, const size_t out_sz) +{ + // prefix + + FILE *fp1 = popen ("pyenv prefix", "r"); + + if (fp1 == NULL) return -1; + + char prefix_path[PATH_MAX]; + + if (fgets (prefix_path, sizeof (prefix_path), fp1) == NULL) + { + pclose (fp1); + + return -1; + } + + pclose (fp1); + + superchop_with_length (prefix_path, strlen (prefix_path)); + + int maj = 0; + int min = 0; + + // local + + FILE *fp2 = popen ("pyenv local", "r"); + + if (fp2 == NULL) return -1; + + if (fscanf (fp2, "%d.%d", &maj, &min) == 2) + { + pclose (fp2); + + char *pyenv_libpath = expand_pyenv_libpath (prefix_path, maj, min); + + if (pyenv_libpath != NULL) + { + strncpy (out_buf, pyenv_libpath, out_sz - 1); + + free (pyenv_libpath); + + return 0; + } + + return -1; + } + + pclose (fp2); + + // global + + FILE *fp3 = popen ("pyenv global", "r"); + + if (fp3 == NULL) return -1; + + if (fscanf (fp3, "%d.%d", &maj, &min) == 2) + { + pclose (fp3); + + char *pyenv_libpath = expand_pyenv_libpath (prefix_path, maj, min); + + if (pyenv_libpath != NULL) + { + strncpy (out_buf, pyenv_libpath, out_sz - 1); + + free (pyenv_libpath); + + return 0; + } + + return -1; + } + + pclose (fp3); + + return -1; +} + +static bool init_python (hc_python_lib_t *python) +{ + char pythondll_path[PATH_MAX]; + + python->lib = NULL; + + // let's see if we have pyenv, that will save us a lot of guessing... + + int saved_stderr = suppress_stderr (); + + const int pyenv_rc = resolve_pyenv_libpath (pythondll_path, sizeof (pythondll_path)); + + restore_stderr (saved_stderr); + + if (pyenv_rc == 0) + { + #if defined (_WIN) + python->lib = hc_dlopen (pythondll_path); + #elif defined (__MSYS__) + python->lib = dlopen (pythondll_path, RTLD_NOW | RTLD_GLOBAL); + #elif defined (__APPLE__) + python->lib = dlopen (pythondll_path, RTLD_NOW | RTLD_GLOBAL); + #elif defined (__CYGWIN__) + python->lib = hc_dlopen (pythondll_path); + #else + python->lib = dlopen (pythondll_path, RTLD_NOW | RTLD_GLOBAL); + #endif + } + + #define MIN_MAJ 3 + #define MAX_MAJ 8 + + #define MIN_MIN 0 + #define MAX_MIN 50 + + for (int maj = MAX_MAJ; maj >= MIN_MAJ; --maj) + { + if (python->lib != NULL) break; + + for (int min = MAX_MIN; min >= MIN_MIN; --min) + { + #if defined (_WIN) + + // first try %LocalAppData% default path + char expandedPath[MAX_PATH - 1]; + + char *libpython_namelocal = NULL; + + hc_asprintf (&libpython_namelocal, "%%LocalAppData%%\\Programs\\Python\\Python%d%d\\python%d%d.dll", maj, min, maj, min); + + DWORD len = ExpandEnvironmentStringsA (libpython_namelocal, expandedPath, sizeof (expandedPath)); + + if (len) + { + python->lib = hc_dlopen (expandedPath); + + if (python->lib != NULL) + { + strncpy (pythondll_path, expandedPath, sizeof (pythondll_path) - 1); + + hcfree (libpython_namelocal); + + break; + } + else + { + hcfree (libpython_namelocal); + }; + } + + // use %PATH% + char *libpython_namepath = NULL; + + hc_asprintf (&libpython_namepath, "python%d%d.dll", maj, min); + + python->lib = hc_dlopen (libpython_namepath); + + if (python->lib != NULL) + { + strncpy (pythondll_path, libpython_namepath, sizeof (pythondll_path) - 1); + + hcfree (libpython_namepath); + + break; + } + else + { + hcfree (libpython_namepath); + }; + + #elif defined (__MSYS__) + + char *libpython_name = NULL; + + hc_asprintf (&libpython_name, "msys-python%d.%d.dll", maj, min); + + python->lib = dlopen (libpython_name, RTLD_NOW | RTLD_GLOBAL); + + if (python->lib != NULL) + { + strncpy (pythondll_path, libpython_name, sizeof (pythondll_path) - 1); + + hcfree (libpython_name); + + break; + } + else + { + hcfree (libpython_name); + }; + + #elif defined (__APPLE__) + + char *libpython_name = NULL; + + hc_asprintf (&libpython_name, "libpython%d.%d.dylib", maj, min); + + python->lib = dlopen (libpython_name, RTLD_NOW | RTLD_GLOBAL); + + if (python->lib != NULL) + { + strncpy (pythondll_path, libpython_name, sizeof (pythondll_path) - 1); + + hcfree (libpython_name); + + break; + } + else + { + hcfree (libpython_name); + }; + + #elif defined (__CYGWIN__) + + char *libpython_name = NULL; + + hc_asprintf (&libpython_name, "python%d%d.dll", maj, min); + + python->lib = hc_dlopen (libpython_name); + + if (python->lib != NULL) + { + strncpy (pythondll_path, libpython_name, sizeof (pythondll_path) - 1); + + hcfree (libpython_name); + + break; + } + else + { + hcfree (libpython_name); + }; + + #else + + char *libpython_name = NULL; + + hc_asprintf (&libpython_name, "libpython%d.%d.so", maj, min); + + python->lib = dlopen (libpython_name, RTLD_NOW | RTLD_GLOBAL); + + if (python->lib != NULL) + { + strncpy (pythondll_path, libpython_name, sizeof (pythondll_path) - 1); + + hcfree (libpython_name); + + break; + } + else + { + hcfree (libpython_name); + }; + + #endif + + if (python->lib != NULL) break; + } + + if (python->lib != NULL) break; + } + + if (python->lib == NULL) + { + fprintf (stderr, "Awww, unable to find Python shared library.\n"); + + return false; + } + else + { + printf ("Loaded python library from: %s\n\n", pythondll_path); + } + + #define HC_LOAD_FUNC_PYTHON(ptr,name,pythonname,type,libname,noerr) \ + do { \ + ptr->name = (type) hc_dlsym ((ptr)->lib, #pythonname); \ + if ((noerr) != -1) { \ + if (!(ptr)->name) { \ + if ((noerr) == 1) { \ + fprintf (stderr, "%s is missing from %s shared library.", #name, #libname); \ + return false; \ + } \ + if ((noerr) != 1) { \ + fprintf (stderr, "%s is missing from %s shared library.", #name, #libname); \ + return true; \ + } \ + } \ + } \ + } while (0) + + HC_LOAD_FUNC_PYTHON (python, Py_GetVersion, Py_GetVersion, PYGETVERSION, PYTHON, 1); + + const char *version_str = python->Py_GetVersion (); + + int major = 0; + int minor = 0; + + if (sscanf (version_str, "%d.%d", &major, &minor) != 2) + { + fprintf (stderr, "Python version string is not valid: %s\n", version_str); + + return false; + } + + if ((major < 3) || (major == 3 && minor < 10)) + { + fprintf (stderr, "Python version mismatch: Need at least v3.10\n"); + + return false; + } + + HC_LOAD_FUNC_PYTHON (python, Py_Initialize, Py_Initialize, PY_INITIALIZE, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, Py_Finalize, Py_Finalize, PY_FINALIZE, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, Py_DecRef, Py_DecRef, PY_DECREF, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, PyBool_FromLong, PyBool_FromLong, PYBOOL_FROMLONG, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, PyBytes_FromStringAndSize, PyBytes_FromStringAndSize, PYBYTES_FROMSTRINGANDSIZE, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, PyDict_DelItemString, PyDict_DelItemString, PYDICT_DELITEMSTRING, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, PyDict_GetItemString, PyDict_GetItemString, PYDICT_GETITEMSTRING, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, PyDict_New, PyDict_New, PYDICT_NEW, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, PyDict_SetItemString, PyDict_SetItemString, PYDICT_SETITEMSTRING, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, PyErr_Print, PyErr_Print, PYERR_PRINT, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, PyImport_ImportModule, PyImport_ImportModule, PYIMPORT_IMPORTMODULE, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, PyImport_Import, PyImport_Import, PYIMPORT_IMPORT, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, PyList_Append, PyList_Append, PYLIST_APPEND, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, PyList_GetItem, PyList_GetItem, PYLIST_GETITEM, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, PyList_New, PyList_New, PYLIST_NEW, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, PyList_SetItem, PyList_SetItem, PYLIST_SETITEM, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, PyList_Size, PyList_Size, PYLIST_SIZE, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, PyLong_FromLong, PyLong_FromLong, PYLONG_FROMLONG, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, PyObject_CallObject, PyObject_CallObject, PYOBJECT_CALLOBJECT, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, PyObject_GetAttrString, PyObject_GetAttrString, PYOBJECT_GETATTRSTRING, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, PyTuple_New, PyTuple_New, PYTUPLE_NEW, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, PyTuple_SetItem, PyTuple_SetItem, PYTUPLE_SETITEM, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, PyUnicode_AsUTF8, PyUnicode_AsUTF8, PYUNICODE_ASUTF8, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, PyUnicode_AsUTF8AndSize, PyUnicode_AsUTF8AndSize, PYUNICODE_ASUTF8ANDSIZE, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, PyUnicode_DecodeFSDefaultAndSize, PyUnicode_DecodeFSDefaultAndSize, PYUNICODE_DECODEFSDEFAULTANDSIZE, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, PyUnicode_DecodeFSDefault, PyUnicode_DecodeFSDefault, PYUNICODE_DECODEFSDEFAULT, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, PyUnicode_FromStringAndSize, PyUnicode_FromStringAndSize, PYUNICODE_FROMSTRINGANDSIZE, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, PyUnicode_FromString, PyUnicode_FromString, PYUNICODE_FROMSTRING, PYTHON, 1); + //HC_LOAD_FUNC_PYTHON (python, PyEval_AcquireLock, PyEval_AcquireLock, PYEVAL_ACQUIRELOCK, PYTHON, 1); + //HC_LOAD_FUNC_PYTHON (python, PyEval_ReleaseLock, PyEval_ReleaseLock, PYEVAL_RELEASELOCK, PYTHON, 1); + //HC_LOAD_FUNC_PYTHON (python, PyThreadState_Swap, PyThreadState_Swap, PYTHREADSTATE_SWAP, PYTHON, 1); + //HC_LOAD_FUNC_PYTHON (python, Py_NewInterpreter, Py_NewInterpreter, PYNEWINTERPRETER, PYTHON, 1); + //HC_LOAD_FUNC_PYTHON (python, Py_EndInterpreter, Py_EndInterpreter, PYENDINTERPRETER, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, PyGILState_Ensure, PyGILState_Ensure, PYGILSTATE_ENSURE, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, PyGILState_Release, PyGILState_Release, PYGILSTATE_RELEASE, PYTHON, 1); + //HC_LOAD_FUNC_PYTHON (python, PyEval_AcquireThread, PyEval_AcquireThread, PYEVAL_ACQUIRETHREAD, PYTHON, 1); + //HC_LOAD_FUNC_PYTHON (python, PyEval_ReleaseThread, PyEval_ReleaseThread, PYEVAL_RELEASETHREAD, PYTHON, 1); + //HC_LOAD_FUNC_PYTHON (python, PyThreadState_Clear, PyThreadState_Clear, PYTHREADSTATE_CLEAR, PYTHON, 1); + //HC_LOAD_FUNC_PYTHON (python, PyThreadState_Delete, PyThreadState_Delete, PYTHREADSTATE_DELETE, PYTHON, 1); + //HC_LOAD_FUNC_PYTHON (python, PyThreadState_New, PyThreadState_New, PYTHREADSTATE_NEW, PYTHON, 1); + //HC_LOAD_FUNC_PYTHON (python, PyInterpreterState_Main, PyInterpreterState_Main, PYINTERPRETERSTATE_MAIN, PYTHON, 1); + //HC_LOAD_FUNC_PYTHON (python, PyEval_InitThreads, PyEval_InitThreads, PYEVAL_INITTHREADS, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, PyEval_SaveThread, PyEval_SaveThread, PYEVAL_SAVETHREAD, PYTHON, 1); + //HC_LOAD_FUNC_PYTHON (python, Py_NewInterpreterFromConfig, Py_NewInterpreterFromConfig, PYNEWINTERPRETERFROMCONFIG, PYTHON, 1); + //HC_LOAD_FUNC_PYTHON (python, Py_ExitStatusException, Py_ExitStatusException, PYEXITSTATUSEXCEPTION, PYTHON, 1); + //HC_LOAD_FUNC_PYTHON (python, Py_InitializeFromConfig, Py_InitializeFromConfig, PYINITIALIZEFROMCONFIG, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, PyEval_RestoreThread, PyEval_RestoreThread, PYEVAL_RESTORETHREAD, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, Py_CompileStringExFlags, Py_CompileStringExFlags, PY_COMPILESTRINGEXFLAGS, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, PyEval_EvalCode, PyEval_EvalCode, PYEVAL_EVALCODE, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, PyEval_GetBuiltins, PyEval_GetBuiltins, PYEVAL_GETBUILTINS, PYTHON, 1); + + return true; +} + +static bool units_init (python_interpreter_t *python_interpreter) +{ + #if defined (_WIN) + + SYSTEM_INFO sysinfo; + + GetSystemInfo (&sysinfo); + + int num_devices = sysinfo.dwNumberOfProcessors; + + #else + + int num_devices = sysconf (_SC_NPROCESSORS_ONLN); + + #endif + + // This branch of python plugin handles threads through multiprocessing module, so we only need one thread + // Bu we will multiply N_ACCEL later with the num_devices count to achieve the same workload size + + const int num_devices_sav = num_devices; + + num_devices = 1; + + unit_t *units_buf = (unit_t *) hccalloc (num_devices, sizeof (unit_t)); + + int units_cnt = 0; + + for (int i = 0; i < num_devices; i++) + { + unit_t *unit_buf = &units_buf[i]; + + hc_python_lib_t *python = python_interpreter->python; + + unit_buf->unit_info_len = snprintf (unit_buf->unit_info_buf, sizeof (unit_buf->unit_info_buf) - 1, "Python Interpreter (%s)", python->Py_GetVersion ()); + + unit_buf->unit_info_buf[unit_buf->unit_info_len] = 0; + + unit_buf->parallelism = num_devices_sav; + unit_buf->workitem_count = N_ACCEL * num_devices_sav; + + units_cnt++; + } + + python_interpreter->units_buf = units_buf; + python_interpreter->units_cnt = units_cnt; + + return true; +} + +static void units_term (python_interpreter_t *python_interpreter) +{ + unit_t *units_buf = python_interpreter->units_buf; + + if (units_buf) + { + hcfree (python_interpreter->units_buf); + } +} + +void *platform_init (user_options_t *user_options) +{ + // Verify CPU features + + if (cpu_chipset_test () == -1) return NULL; + + // Allocate platform context + + python_interpreter_t *python_interpreter = (python_interpreter_t *) hcmalloc (sizeof (python_interpreter_t)); + + hc_python_lib_t *python = (hc_python_lib_t *) hcmalloc (sizeof (hc_python_lib_t)); + + python_interpreter->python = python; + + if (init_python (python) == false) return NULL; + + python->Py_Initialize (); + + PyObject *sys = python->PyImport_ImportModule ("sys"); + PyObject *path = python->PyObject_GetAttrString (sys, "path"); + python->PyList_Append (path, python->PyUnicode_FromString ("./Python")); + python->Py_DecRef (path); + python->Py_DecRef (sys); + + if (units_init (python_interpreter) == false) + { + hcfree (python_interpreter); + + return NULL; + } + + unit_t *unit_buf = &python_interpreter->units_buf[0]; + + #if defined (_WIN) || defined (__CYGWIN__) || defined (__APPLE__) + fprintf (stderr, "Attention!!! Falling back to single-threaded mode.\n"); + fprintf (stderr, " Windows and MacOS ds not support multiprocessing module cleanly!\n"); + fprintf (stderr, " For multithreading on Windows and MacOS, please use -m 72000 instead.\n\n"); + #endif + + python_interpreter->source_filename = (user_options->bridge_parameter1 == NULL) ? DEFAULT_SOURCE_FILENAME : user_options->bridge_parameter1; + + char *source = file_to_buffer (python_interpreter->source_filename); + + if (source == NULL) + { + fprintf (stderr, "ERROR: %s: %s\n\n", python_interpreter->source_filename, strerror (errno)); + + return NULL; + } + + PyObject *code = python->Py_CompileStringExFlags (source, python_interpreter->source_filename, Py_file_input, NULL, -1); + + free (source); + + if (code == NULL) + { + python->PyErr_Print (); + + return false; + } + + unit_buf->pGlobals = python->PyDict_New (); + + python->PyDict_SetItemString (unit_buf->pGlobals, "__builtins__", python->PyEval_GetBuiltins ()); + + PyObject *result = python->PyEval_EvalCode (code, unit_buf->pGlobals, unit_buf->pGlobals); + + if (result == NULL) + { + python->PyErr_Print (); + + return false; + } + + python->Py_DecRef (result); + + unit_buf->pFunc_Init = python->PyDict_GetItemString (unit_buf->pGlobals, "init"); + + if (unit_buf->pFunc_Init == NULL) + { + python->PyErr_Print (); + + return false; + } + + unit_buf->pFunc_Term = python->PyDict_GetItemString (unit_buf->pGlobals, "term"); + + if (unit_buf->pFunc_Term == NULL) + { + python->PyErr_Print (); + + return false; + } + + unit_buf->pFunc_kernel_loop = python->PyDict_GetItemString (unit_buf->pGlobals, "kernel_loop"); + + if (unit_buf->pFunc_kernel_loop == NULL) + { + python->PyErr_Print (); + + return false; + } + + // Initialize Context (which also means copy salts because they are part of the context) + + unit_buf->pContext = python->PyDict_New (); + + if (unit_buf->pContext == NULL) + { + python->PyErr_Print (); + + return false; + } + + // for later calls + + unit_buf->pArgs = python->PyTuple_New (4); + + if (unit_buf->pArgs == NULL) + { + python->PyErr_Print (); + + return false; + } + + python->PyTuple_SetItem (unit_buf->pArgs, 0, unit_buf->pContext); + python->PyTuple_SetItem (unit_buf->pArgs, 2, python->PyLong_FromLong (0)); + python->PyTuple_SetItem (unit_buf->pArgs, 3, python->PyBool_FromLong (false)); + + python_interpreter->tstate = python->PyEval_SaveThread (); + + return python_interpreter; +} + +void platform_term (void *platform_context) +{ + python_interpreter_t *python_interpreter = platform_context; + + hc_python_lib_t *python = python_interpreter->python; + + unit_t *unit_buf = &python_interpreter->units_buf[0]; + + unit_buf->gstate = python->PyGILState_Ensure (); + + python->Py_DecRef (unit_buf->pArgs); + python->Py_DecRef (unit_buf->pContext); + python->Py_DecRef (unit_buf->pFunc_kernel_loop); + python->Py_DecRef (unit_buf->pFunc_Term); + python->Py_DecRef (unit_buf->pFunc_Init); + python->Py_DecRef (unit_buf->pGlobals); + + //python->PyEval_RestoreThread (python_interpreter->tstate); + + python->Py_Finalize (); + + units_term (python_interpreter); + + hcfree (python_interpreter); +} + +bool thread_init (MAYBE_UNUSED void *platform_context, MAYBE_UNUSED hc_device_param_t *device_param, MAYBE_UNUSED hashconfig_t *hashconfig, MAYBE_UNUSED hashes_t *hashes) +{ + python_interpreter_t *python_interpreter = platform_context; + + const int unit_idx = device_param->bridge_link_device; + + unit_t *unit_buf = &python_interpreter->units_buf[unit_idx]; + + hc_python_lib_t *python = python_interpreter->python; + + unit_buf->gstate = python->PyGILState_Ensure (); + + int rc = 0; + + const char *module_name = extract_module_name (python_interpreter->source_filename); + + rc |= python->PyDict_SetItemString (unit_buf->pContext, "module_name", python->PyUnicode_FromString ((const char *) module_name)); + rc |= python->PyDict_SetItemString (unit_buf->pContext, "parallelism", python->PyLong_FromLong (unit_buf->parallelism)); + rc |= python->PyDict_SetItemString (unit_buf->pContext, "salts_cnt", python->PyLong_FromLong (hashes->salts_cnt)); + rc |= python->PyDict_SetItemString (unit_buf->pContext, "salts_size", python->PyLong_FromLong (sizeof (salt_t))); + rc |= python->PyDict_SetItemString (unit_buf->pContext, "salts_buf", python->PyBytes_FromStringAndSize ((const char *) hashes->salts_buf, sizeof (salt_t) * hashes->salts_cnt)); + rc |= python->PyDict_SetItemString (unit_buf->pContext, "esalts_cnt", python->PyLong_FromLong (hashes->digests_cnt)); + rc |= python->PyDict_SetItemString (unit_buf->pContext, "esalts_size", python->PyLong_FromLong (hashconfig->esalt_size)); + rc |= python->PyDict_SetItemString (unit_buf->pContext, "esalts_buf", python->PyBytes_FromStringAndSize ((const char *) hashes->esalts_buf, hashconfig->esalt_size * hashes->digests_cnt)); + rc |= python->PyDict_SetItemString (unit_buf->pContext, "st_salts_cnt", python->PyLong_FromLong (1)); + rc |= python->PyDict_SetItemString (unit_buf->pContext, "st_salts_size", python->PyLong_FromLong (sizeof (salt_t))); + rc |= python->PyDict_SetItemString (unit_buf->pContext, "st_salts_buf", python->PyBytes_FromStringAndSize ((const char *) hashes->st_salts_buf, sizeof (salt_t) * 1)); + rc |= python->PyDict_SetItemString (unit_buf->pContext, "st_esalts_cnt", python->PyLong_FromLong (1)); + rc |= python->PyDict_SetItemString (unit_buf->pContext, "st_esalts_size", python->PyLong_FromLong (hashconfig->esalt_size)); + rc |= python->PyDict_SetItemString (unit_buf->pContext, "st_esalts_buf", python->PyBytes_FromStringAndSize ((const char *) hashes->st_esalts_buf, hashconfig->esalt_size * 1)); + + if (rc != 0) + { + python->PyErr_Print (); + + return false; + } + + PyObject *pArgs = python->PyTuple_New (1); + + if (pArgs == NULL) + { + python->PyErr_Print (); + + return false; + } + + python->PyTuple_SetItem (pArgs, 0, unit_buf->pContext); + + PyObject *pReturn = python->PyObject_CallObject (unit_buf->pFunc_Init, pArgs); + + if (pReturn == NULL) + { + python->PyErr_Print (); + + return false; + } + + python->Py_DecRef (pReturn); + + python->PyGILState_Release (unit_buf->gstate); + + return true; +} + +void thread_term (MAYBE_UNUSED void *platform_context, MAYBE_UNUSED hc_device_param_t *device_param, MAYBE_UNUSED hashconfig_t *hashconfig, MAYBE_UNUSED hashes_t *hashes) +{ + python_interpreter_t *python_interpreter = platform_context; + + const int unit_idx = device_param->bridge_link_device; + + unit_t *unit_buf = &python_interpreter->units_buf[unit_idx]; + + hc_python_lib_t *python = python_interpreter->python; + + unit_buf->gstate = python->PyGILState_Ensure (); + + PyObject *pArgs = python->PyTuple_New (1); + + if (pArgs == NULL) + { + python->PyErr_Print (); + + return; + } + + python->PyTuple_SetItem (pArgs, 0, unit_buf->pContext); + + python->PyObject_CallObject (unit_buf->pFunc_Term, pArgs); + + python->PyDict_DelItemString (unit_buf->pContext, "salts_cnt"); + python->PyDict_DelItemString (unit_buf->pContext, "salts_size"); + python->PyDict_DelItemString (unit_buf->pContext, "salts_buf"); + python->PyDict_DelItemString (unit_buf->pContext, "esalts_cnt"); + python->PyDict_DelItemString (unit_buf->pContext, "esalts_size"); + python->PyDict_DelItemString (unit_buf->pContext, "esalts_buf"); + python->PyDict_DelItemString (unit_buf->pContext, "st_salts_cnt"); + python->PyDict_DelItemString (unit_buf->pContext, "st_salts_size"); + python->PyDict_DelItemString (unit_buf->pContext, "st_salts_buf"); + python->PyDict_DelItemString (unit_buf->pContext, "st_esalts_cnt"); + python->PyDict_DelItemString (unit_buf->pContext, "st_esalts_size"); + python->PyDict_DelItemString (unit_buf->pContext, "st_esalts_buf"); + + python->PyGILState_Release (unit_buf->gstate); +} + +int get_unit_count (void *platform_context) +{ + python_interpreter_t *python_interpreter = platform_context; + + return python_interpreter->units_cnt; +} + +// we support units of mixed speed, that's why the workitem count is unit specific + +int get_workitem_count (void *platform_context, const int unit_idx) +{ + python_interpreter_t *python_interpreter = platform_context; + + unit_t *unit_buf = &python_interpreter->units_buf[unit_idx]; + + return unit_buf->workitem_count; +} + +char *get_unit_info (void *platform_context, const int unit_idx) +{ + python_interpreter_t *python_interpreter = platform_context; + + unit_t *unit_buf = &python_interpreter->units_buf[unit_idx]; + + return unit_buf->unit_info_buf; +} + +bool launch_loop (MAYBE_UNUSED void *platform_context, MAYBE_UNUSED hc_device_param_t *device_param, MAYBE_UNUSED hashconfig_t *hashconfig, MAYBE_UNUSED hashes_t *hashes, MAYBE_UNUSED const u32 salt_pos, MAYBE_UNUSED const u64 pws_cnt) +{ + python_interpreter_t *python_interpreter = platform_context; + + const int unit_idx = device_param->bridge_link_device; + + unit_t *unit_buf = &python_interpreter->units_buf[unit_idx]; + + hc_python_lib_t *python = python_interpreter->python; + + unit_buf->gstate = python->PyGILState_Ensure (); + + generic_io_tmp_t *generic_io_tmp = (generic_io_tmp_t *) device_param->h_tmps; + + PyObject *pws = python->PyList_New (pws_cnt); + + if (pws == NULL) + { + python->PyErr_Print (); + + return false; + } + + for (u64 i = 0; i < pws_cnt; i++) + { + PyObject *pw = python->PyBytes_FromStringAndSize ((char *) generic_io_tmp->pw_buf, generic_io_tmp->pw_len); + + if (pw == NULL) return false; + + python->PyList_SetItem (pws, i, pw); + + generic_io_tmp++; + } + + python->PyTuple_SetItem (unit_buf->pArgs, 1, pws); + python->PyTuple_SetItem (unit_buf->pArgs, 2, python->PyLong_FromLong (salt_pos)); + + if (hashes->salts_buf == hashes->st_salts_buf) + { + python->PyTuple_SetItem (unit_buf->pArgs, 3, python->PyBool_FromLong (true)); + } + else + { + python->PyTuple_SetItem (unit_buf->pArgs, 3, python->PyBool_FromLong (false)); + } + + PyObject *pReturn = python->PyObject_CallObject (unit_buf->pFunc_kernel_loop, unit_buf->pArgs); + + if (pReturn == NULL) + { + python->PyErr_Print (); + + return false; + } + + Py_ssize_t retsz = python->PyList_Size (pReturn); + + if (retsz != (Py_ssize_t) pws_cnt) return false; + + generic_io_tmp = (generic_io_tmp_t *) device_param->h_tmps; + + for (Py_ssize_t i = 0; i < retsz; i++) + { + PyObject *hash = python->PyList_GetItem (pReturn, i); + + Py_ssize_t len; + + const char *s = python->PyUnicode_AsUTF8AndSize (hash, &len); + + if (s) + { + memcpy (generic_io_tmp->out_buf, s, len); + + generic_io_tmp->out_len = len; + } + + generic_io_tmp++; + } + + python->Py_DecRef (pReturn); + + python->PyGILState_Release (unit_buf->gstate); + + return true; +} + +const char *st_update_hash (MAYBE_UNUSED void *platform_context) +{ + python_interpreter_t *python_interpreter = platform_context; + + hc_python_lib_t *python = python_interpreter->python; + + unit_t *unit_buf = &python_interpreter->units_buf[0]; + + unit_buf->gstate = python->PyGILState_Ensure (); + + PyObject *constant = python->PyDict_GetItemString (unit_buf->pGlobals, "ST_HASH"); + + if (constant == NULL) + { + python->PyGILState_Release (unit_buf->gstate); + + return NULL; + } + + const char *s = python->PyUnicode_AsUTF8 (constant); + + python->Py_DecRef (constant); + + python->PyGILState_Release (unit_buf->gstate); + + return s; +} + +const char *st_update_pass (MAYBE_UNUSED void *platform_context) +{ + python_interpreter_t *python_interpreter = platform_context; + + hc_python_lib_t *python = python_interpreter->python; + + unit_t *unit_buf = &python_interpreter->units_buf[0]; + + unit_buf->gstate = python->PyGILState_Ensure (); + + PyObject *constant = python->PyDict_GetItemString (unit_buf->pGlobals, "ST_PASS"); + + if (constant == NULL) + { + python->PyGILState_Release (unit_buf->gstate); + + return NULL; + } + + const char *s = python->PyUnicode_AsUTF8 (constant); + + python->Py_DecRef (constant); + + python->PyGILState_Release (unit_buf->gstate); + + return s; +} + +void bridge_init (bridge_ctx_t *bridge_ctx) +{ + bridge_ctx->bridge_context_size = BRIDGE_CONTEXT_SIZE_CURRENT; + bridge_ctx->bridge_interface_version = BRIDGE_INTERFACE_VERSION_CURRENT; + + bridge_ctx->platform_init = platform_init; + bridge_ctx->platform_term = platform_term; + bridge_ctx->get_unit_count = get_unit_count; + bridge_ctx->get_unit_info = get_unit_info; + bridge_ctx->get_workitem_count = get_workitem_count; + bridge_ctx->thread_init = thread_init; + bridge_ctx->thread_term = thread_term; + bridge_ctx->salt_prepare = BRIDGE_DEFAULT; + bridge_ctx->salt_destroy = BRIDGE_DEFAULT; + bridge_ctx->launch_loop = launch_loop; + bridge_ctx->launch_loop2 = BRIDGE_DEFAULT; + bridge_ctx->st_update_hash = st_update_hash; + bridge_ctx->st_update_pass = st_update_pass; +} diff --git a/src/bridges/bridge_python_generic_hash_mp.mk b/src/bridges/bridge_python_generic_hash_mp.mk new file mode 100644 index 000000000..2903553a3 --- /dev/null +++ b/src/bridges/bridge_python_generic_hash_mp.mk @@ -0,0 +1,74 @@ +REPORT_MISSING_SO := false +REPORT_MISSING_DLL := false + +ifeq ($(BRIDGE_SUFFIX),so) +ifeq ($(REPORT_MISSING_SO),false) +PYTHON_CONFIG := $(shell command -v python3-config 2>/dev/null) +ifeq ($(PYTHON_CONFIG),) + REPORT_MISSING_SO := true +endif +endif +ifeq ($(REPORT_MISSING_SO),false) +PYTHON_CFLAGS := $(shell python3-config --includes 2>/dev/null) +ifeq ($(strip $(PYTHON_CFLAGS)),) + REPORT_MISSING_SO := true +endif +endif +endif + +CHECK_DLL := false + +ifeq ($(BRIDGE_SUFFIX),dll) + CHECK_DLL := true +endif +ifeq ($(BUILD_MODE),cross) + CHECK_DLL := true +endif + +ifeq ($(CHECK_DLL),true) +ifeq ($(REPORT_MISSING_DLL),false) +PYTHON_CONFIG := $(shell ls $(WIN_PYTHON)/mingw64/include/python3.12/ 2>/dev/null) +ifeq ($(PYTHON_CONFIG),) + REPORT_MISSING_DLL := true +endif +endif +PYTHON_CFLAGS_WIN := -I$(WIN_PYTHON)/mingw64/include/python3.12/ +endif + +ifeq ($(BUILD_MODE),cross) +bridges/bridge_python_generic_hash_mp.so: src/bridges/bridge_python_generic_hash_mp.c src/cpu_features.c obj/combined.LINUX.a + $(CC_LINUX) $(CCFLAGS) $(CFLAGS_CROSS_LINUX) $^ -o $@ $(LFLAGS_CROSS_LINUX) -shared -fPIC -D BRIDGE_INTERFACE_VERSION_CURRENT=$(BRIDGE_INTERFACE_VERSION) $(PYTHON_CFLAGS) +bridges/bridge_python_generic_hash_mp.dll: src/bridges/bridge_python_generic_hash_mp.c src/cpu_features.c obj/combined.WIN.a + $(CC_WIN) $(CCFLAGS) $(CFLAGS_CROSS_WIN) $^ -o $@ $(LFLAGS_CROSS_WIN) -shared -fPIC -D BRIDGE_INTERFACE_VERSION_CURRENT=$(BRIDGE_INTERFACE_VERSION) $(PYTHON_CFLAGS_WIN) +else +ifeq ($(SHARED),1) +bridges/bridge_python_generic_hash_mp.$(BRIDGE_SUFFIX): src/bridges/bridge_python_generic_hash_mp.c src/cpu_features.c $(HASHCAT_LIBRARY) + $(CC) $(CCFLAGS) $(CFLAGS_NATIVE) $^ -o $@ $(LFLAGS_NATIVE) -shared -fPIC -D BRIDGE_INTERFACE_VERSION_CURRENT=$(BRIDGE_INTERFACE_VERSION) $(PYTHON_CFLAGS) +else +bridges/bridge_python_generic_hash_mp.$(BRIDGE_SUFFIX): src/bridges/bridge_python_generic_hash_mp.c src/cpu_features.c obj/combined.NATIVE.a + $(CC) $(CCFLAGS) $(CFLAGS_NATIVE) $^ -o $@ $(LFLAGS_NATIVE) -shared -fPIC -D BRIDGE_INTERFACE_VERSION_CURRENT=$(BRIDGE_INTERFACE_VERSION) $(PYTHON_CFLAGS) +endif +endif + +RED = \033[1;31m +RESET = \033[0m + +ifeq ($(REPORT_MISSING_DLL),true) +bridges/bridge_python_generic_hash_mp.dll: + @echo "" + @echo "$(RED)WARNING$(RESET): Skipping regular plugin 70300: Python Windows headers not found." + @echo " To use -m 70300, you must install the required Python headers." + @echo " Otherwise, you can safely ignore this warning." + @echo " See BUILD_WSL.md how to prepare $(WIN_PYTHON)." + @echo "" +endif + +ifeq ($(REPORT_MISSING_SO),true) +bridges/bridge_python_generic_hash_mp.so: + @echo "" + @echo "$(RED)WARNING$(RESET): Skipping regular plugin 70300: Python headers not found." + @echo " To use -m 70300, you must install the required Python headers." + @echo " Otherwise, you can safely ignore this warning." + @echo " For more information, see 'docs/hashcat-python-plugin-requirements.md'." + @echo "" +endif diff --git a/src/bridges/bridge_python_generic_hash_sp.c b/src/bridges/bridge_python_generic_hash_sp.c new file mode 100644 index 000000000..3d2dbb994 --- /dev/null +++ b/src/bridges/bridge_python_generic_hash_sp.c @@ -0,0 +1,1220 @@ +/** + * Author......: See docs/credits.txt + * License.....: MIT + */ + +#include "common.h" +#include "types.h" +#include "bridges.h" +#include "memory.h" +#include "shared.h" +#include "cpu_features.h" +#include "dynloader.h" + +#if defined (_WIN) +#include "processenv.h" +#endif + +// python interpreter + +#define PY_SSIZE_T_CLEAN + +#undef _GNU_SOURCE +#include + +#define PYTHON_API_CALL + +typedef void (PYTHON_API_CALL *PY_INITIALIZE) (); +typedef void (PYTHON_API_CALL *PY_FINALIZE) (); +typedef void (PYTHON_API_CALL *PY_DECREF) (PyObject *); +typedef PyObject *(PYTHON_API_CALL *PYBOOL_FROMLONG) (long); +typedef PyObject *(PYTHON_API_CALL *PYBYTES_FROMSTRINGANDSIZE) (const char *, Py_ssize_t); +typedef int (PYTHON_API_CALL *PYDICT_DELITEMSTRING) (PyObject *, const char *); +typedef PyObject *(PYTHON_API_CALL *PYDICT_GETITEMSTRING) (PyObject *, const char *); +typedef PyObject *(PYTHON_API_CALL *PYDICT_NEW) (); +typedef int (PYTHON_API_CALL *PYDICT_SETITEMSTRING) (PyObject *, const char *, PyObject *); +typedef void (PYTHON_API_CALL *PYERR_PRINT) (); +typedef PyObject *(PYTHON_API_CALL *PYIMPORT_IMPORTMODULE) (const char *); +typedef PyObject *(PYTHON_API_CALL *PYIMPORT_IMPORT) (PyObject *); +typedef int (PYTHON_API_CALL *PYLIST_APPEND) (PyObject *, PyObject *); +typedef PyObject *(PYTHON_API_CALL *PYLIST_GETITEM) (PyObject *, Py_ssize_t); +typedef PyObject *(PYTHON_API_CALL *PYLIST_NEW) (Py_ssize_t); +typedef int (PYTHON_API_CALL *PYLIST_SETITEM) (PyObject *, Py_ssize_t, PyObject *); +typedef Py_ssize_t (PYTHON_API_CALL *PYLIST_SIZE) (PyObject *); +typedef PyObject *(PYTHON_API_CALL *PYLONG_FROMLONG) (long); +typedef PyObject *(PYTHON_API_CALL *PYOBJECT_CALLOBJECT) (PyObject *, PyObject *); +typedef PyObject *(PYTHON_API_CALL *PYOBJECT_GETATTRSTRING) (PyObject *, const char *); +typedef PyObject *(PYTHON_API_CALL *PYTUPLE_NEW) (Py_ssize_t); +typedef int (PYTHON_API_CALL *PYTUPLE_SETITEM) (PyObject *, Py_ssize_t, PyObject *); +typedef const char *(PYTHON_API_CALL *PYUNICODE_ASUTF8) (PyObject *); +typedef const char *(PYTHON_API_CALL *PYUNICODE_ASUTF8ANDSIZE) (PyObject *, Py_ssize_t *); +typedef PyObject *(PYTHON_API_CALL *PYUNICODE_DECODEFSDEFAULTANDSIZE) (const char *, Py_ssize_t); +typedef PyObject *(PYTHON_API_CALL *PYUNICODE_DECODEFSDEFAULT) (const char *); +typedef PyObject *(PYTHON_API_CALL *PYUNICODE_FROMSTRINGANDSIZE) (const char *, Py_ssize_t); +typedef PyObject *(PYTHON_API_CALL *PYUNICODE_FROMSTRING) (const char *); +typedef void (PYTHON_API_CALL *PYEVAL_ACQUIRELOCK) (void); +typedef void (PYTHON_API_CALL *PYEVAL_RELEASELOCK) (void); +typedef PyThreadState *(PYTHON_API_CALL *PYTHREADSTATE_SWAP) (PyThreadState *); +typedef PyThreadState *(PYTHON_API_CALL *PYNEWINTERPRETER) (void); +typedef void (PYTHON_API_CALL *PYENDINTERPRETER) (PyThreadState *); +typedef PyGILState_STATE (PYTHON_API_CALL *PYGILSTATE_ENSURE) (void); +typedef void (PYTHON_API_CALL *PYGILSTATE_RELEASE) (PyGILState_STATE); +typedef void (PYTHON_API_CALL *PYEVAL_ACQUIRETHREAD) (PyThreadState *); +typedef void (PYTHON_API_CALL *PYEVAL_RELEASETHREAD) (PyThreadState *); +typedef void (PYTHON_API_CALL *PYTHREADSTATE_CLEAR) (PyThreadState *); +typedef void (PYTHON_API_CALL *PYTHREADSTATE_DELETE) (PyThreadState *); +typedef PyThreadState *(PYTHON_API_CALL *PYTHREADSTATE_NEW) (PyInterpreterState *); +typedef PyInterpreterState *(PYTHON_API_CALL *PYINTERPRETERSTATE_MAIN) (void); +typedef void (PYTHON_API_CALL *PYEVAL_INITTHREADS) (void); +typedef PyThreadState *(PYTHON_API_CALL *PYEVAL_SAVETHREAD) (void); +typedef PyStatus (PYTHON_API_CALL *PYNEWINTERPRETERFROMCONFIG) (PyThreadState **, const PyInterpreterConfig *); +typedef void (PYTHON_API_CALL *PYEXITSTATUSEXCEPTION) (PyStatus); +typedef PyStatus (PYTHON_API_CALL *PYINITIALIZEFROMCONFIG) (const PyConfig *); +typedef void (PYTHON_API_CALL *PYEVAL_RESTORETHREAD) (PyThreadState *); +typedef const char *(PYTHON_API_CALL *PYGETVERSION) (void); +typedef PyObject *(PYTHON_API_CALL *PY_COMPILESTRINGEXFLAGS) (const char *, const char *, int, PyCompilerFlags *, int); +typedef PyObject *(PYTHON_API_CALL *PYEVAL_EVALCODE) (PyObject *, PyObject *, PyObject *); +typedef PyObject *(PYTHON_API_CALL *PYEVAL_GETBUILTINS) (void); + +typedef struct hc_python_lib +{ + hc_dynlib_t lib; + + PY_INITIALIZE Py_Initialize; + PY_FINALIZE Py_Finalize; + PY_DECREF Py_DecRef; + PYBOOL_FROMLONG PyBool_FromLong; + PYBYTES_FROMSTRINGANDSIZE PyBytes_FromStringAndSize; + PYDICT_DELITEMSTRING PyDict_DelItemString; + PYDICT_GETITEMSTRING PyDict_GetItemString; + PYDICT_NEW PyDict_New; + PYDICT_SETITEMSTRING PyDict_SetItemString; + PYERR_PRINT PyErr_Print; + PYIMPORT_IMPORTMODULE PyImport_ImportModule; + PYIMPORT_IMPORT PyImport_Import; + PYLIST_APPEND PyList_Append; + PYLIST_GETITEM PyList_GetItem; + PYLIST_NEW PyList_New; + PYLIST_SETITEM PyList_SetItem; + PYLIST_SIZE PyList_Size; + PYLONG_FROMLONG PyLong_FromLong; + PYOBJECT_CALLOBJECT PyObject_CallObject; + PYOBJECT_GETATTRSTRING PyObject_GetAttrString; + PYTUPLE_NEW PyTuple_New; + PYTUPLE_SETITEM PyTuple_SetItem; + PYUNICODE_ASUTF8 PyUnicode_AsUTF8; + PYUNICODE_ASUTF8ANDSIZE PyUnicode_AsUTF8AndSize; + PYUNICODE_DECODEFSDEFAULTANDSIZE PyUnicode_DecodeFSDefaultAndSize; + PYUNICODE_DECODEFSDEFAULT PyUnicode_DecodeFSDefault; + PYUNICODE_FROMSTRINGANDSIZE PyUnicode_FromStringAndSize; + PYUNICODE_FROMSTRING PyUnicode_FromString; + PYEVAL_ACQUIRELOCK PyEval_AcquireLock; + PYEVAL_RELEASELOCK PyEval_ReleaseLock; + PYTHREADSTATE_SWAP PyThreadState_Swap; + PYNEWINTERPRETER Py_NewInterpreter; + PYENDINTERPRETER Py_EndInterpreter; + PYGILSTATE_ENSURE PyGILState_Ensure; + PYGILSTATE_RELEASE PyGILState_Release; + PYEVAL_ACQUIRETHREAD PyEval_AcquireThread; + PYEVAL_RELEASETHREAD PyEval_ReleaseThread; + PYTHREADSTATE_CLEAR PyThreadState_Clear; + PYTHREADSTATE_DELETE PyThreadState_Delete; + PYTHREADSTATE_NEW PyThreadState_New; + PYINTERPRETERSTATE_MAIN PyInterpreterState_Main; + PYEVAL_INITTHREADS PyEval_InitThreads; + PYEVAL_SAVETHREAD PyEval_SaveThread; + PYNEWINTERPRETERFROMCONFIG Py_NewInterpreterFromConfig; + PYEXITSTATUSEXCEPTION Py_ExitStatusException; + PYINITIALIZEFROMCONFIG Py_InitializeFromConfig; + PYEVAL_RESTORETHREAD PyEval_RestoreThread; + PYGETVERSION Py_GetVersion; + PY_COMPILESTRINGEXFLAGS Py_CompileStringExFlags; + PYEVAL_EVALCODE PyEval_EvalCode; + PYEVAL_GETBUILTINS PyEval_GetBuiltins; + +} hc_python_lib_t; + +// good: we can use this multiplier do reduce copy overhead to increase the guessing speed, +// bad: but we also increase the password candidate batch size. +// slow hashes which make use of this bridge probably are used with smaller wordlists, +// and therefore it's easier for hashcat to parallelize if this multiplier is low. +// in the end, it's a trade-off. + +#define N_ACCEL 8 + +typedef struct +{ + // input + + u32 pw_buf[64]; + u32 pw_len; + + // output + + u32 out_buf[64]; + u32 out_len; + +} generic_io_tmp_t; + +typedef struct +{ + // template + + char unit_info_buf[1024]; + int unit_info_len; + + u64 workitem_count; + size_t workitem_size; + + // implementation specific + + PyThreadState *tstate; + + PyObject *pArgs; + PyObject *pContext; + PyObject *pGlobals; + PyObject *pFunc_Init; + PyObject *pFunc_Term; + PyObject *pFunc_kernel_loop; + +} unit_t; + +typedef struct +{ + unit_t *units_buf; + int units_cnt; + + hc_python_lib_t *python; + + PyThreadState *thread_state; + + char *source_filename; + +} python_interpreter_t; + +static char *DEFAULT_SOURCE_FILENAME = "Python/generic_hash_sp.py"; + +const char *extract_module_name (const char *path) +{ + char *filename = strdup (path); + + remove_file_suffix (filename, ".py"); + + const char *slash = strrchr (filename, '/'); + const char *backslash = strrchr (filename, '\\'); + + const char *module_name = NULL; + + if (slash) + { + module_name = slash + 1; + } + else if (backslash) + { + module_name = backslash + 1; + } + else + { + module_name = filename; + } + + return module_name; +} + +static char *expand_pyenv_libpath (const char *prefix, const int maj, const int min) +{ + char *out = NULL; + + #if defined (_WIN) + const int len = asprintf (&out, "%s/python%d%dt.dll", prefix, maj, min); //untested + #elif defined (__MSYS__) + const int len = asprintf (&out, "%s/msys-python%d.%dt.dll", prefix, maj, min); //untested could be wrong + #elif defined (__APPLE__) + const int len = asprintf (&out, "%s/lib/libpython%d.%dt.dylib", prefix, maj, min); //untested + #elif defined (__CYGWIN__) + const int len = asprintf (&out, "%s/lib/python%d%dt.dll", prefix, maj, min); //untested + #else + const int len = asprintf (&out, "%s/lib/libpython%d.%dt.so", prefix, maj, min); + #endif + + if (len == -1) return NULL; + + struct stat st; + + if (stat (out, &st) != 0) + { + free (out); + + return NULL; + } + + return out; +} + +static int resolve_pyenv_libpath (char *out_buf, const size_t out_sz) +{ + // prefix + + FILE *fp1 = popen ("pyenv prefix", "r"); + + if (fp1 == NULL) return -1; + + char prefix_path[PATH_MAX]; + + if (fgets (prefix_path, sizeof (prefix_path), fp1) == NULL) + { + pclose (fp1); + + return -1; + } + + pclose (fp1); + + superchop_with_length (prefix_path, strlen (prefix_path)); + + int maj = 0; + int min = 0; + + // local + + FILE *fp2 = popen ("pyenv local", "r"); + + if (fp2 == NULL) return -1; + + if (fscanf (fp2, "%d.%d", &maj, &min) == 2) + { + pclose (fp2); + + char *pyenv_libpath = expand_pyenv_libpath (prefix_path, maj, min); + + if (pyenv_libpath != NULL) + { + strncpy (out_buf, pyenv_libpath, out_sz - 1); + + free (pyenv_libpath); + + return 0; + } + + return -1; + } + + pclose (fp2); + + // global + + FILE *fp3 = popen ("pyenv global", "r"); + + if (fp3 == NULL) return -1; + + if (fscanf (fp3, "%d.%d", &maj, &min) == 2) + { + pclose (fp3); + + char *pyenv_libpath = expand_pyenv_libpath (prefix_path, maj, min); + + if (pyenv_libpath != NULL) + { + strncpy (out_buf, pyenv_libpath, out_sz - 1); + + free (pyenv_libpath); + + return 0; + } + + return -1; + } + + pclose (fp3); + + return -1; +} + +static bool init_python (hc_python_lib_t *python) +{ + char pythondll_path[PATH_MAX]; + + python->lib = NULL; + + // let's see if we have pyenv, that will save us a lot of guessing... + + int saved_stderr = suppress_stderr (); + + const int pyenv_rc = resolve_pyenv_libpath (pythondll_path, sizeof (pythondll_path)); + + restore_stderr (saved_stderr); + + if (pyenv_rc == 0) + { + #if defined (_WIN) + python->lib = hc_dlopen (pythondll_path); + #elif defined (__MSYS__) + python->lib = dlopen (pythondll_path, RTLD_NOW | RTLD_GLOBAL); + #elif defined (__APPLE__) + python->lib = dlopen (pythondll_path, RTLD_NOW | RTLD_GLOBAL); + #elif defined (__CYGWIN__) + python->lib = hc_dlopen (pythondll_path); + #else + python->lib = dlopen (pythondll_path, RTLD_NOW | RTLD_GLOBAL); + #endif + } + + #define MIN_MAJ 3 + #define MAX_MAJ 8 + + #define MIN_MIN 0 + #define MAX_MIN 50 + + for (int maj = MAX_MAJ; maj >= MIN_MAJ; --maj) + { + if (python->lib != NULL) break; + + for (int min = MAX_MIN; min >= MIN_MIN; --min) + { + #if defined (_WIN) + + // first try %LocalAppData% default path + char expandedPath[MAX_PATH - 1]; + + char *libpython_namelocal = NULL; + + hc_asprintf (&libpython_namelocal, "%%LocalAppData%%\\Programs\\Python\\Python%d%d\\python%d%dt.dll", maj, min, maj, min); + + DWORD len = ExpandEnvironmentStringsA (libpython_namelocal, expandedPath, sizeof (expandedPath)); + + if (len) + { + python->lib = hc_dlopen (expandedPath); + + if (python->lib != NULL) + { + strncpy (pythondll_path, expandedPath, sizeof (pythondll_path) - 1); + + hcfree (libpython_namelocal); + + break; + } + else + { + hcfree (libpython_namelocal); + }; + } + + // use %PATH% + char *libpython_namepath = NULL; + + hc_asprintf (&libpython_namepath, "python%d%dt.dll", maj, min); + + python->lib = hc_dlopen (libpython_namepath); + + if (python->lib != NULL) + { + strncpy (pythondll_path, libpython_namepath, sizeof (pythondll_path) - 1); + + hcfree (libpython_namepath); + + break; + } + else + { + hcfree (libpython_namepath); + }; + + #elif defined (__MSYS__) + + char *libpython_name = NULL; + + hc_asprintf (&libpython_name, "msys-python%d.%dt.dll", maj, min); + + python->lib = dlopen (libpython_name, RTLD_NOW | RTLD_GLOBAL); + + if (python->lib != NULL) + { + strncpy (pythondll_path, libpython_name, sizeof (pythondll_path) - 1); + + hcfree (libpython_name); + + break; + } + else + { + hcfree (libpython_name); + }; + + #elif defined (__APPLE__) + + char *libpython_name = NULL; + + hc_asprintf (&libpython_name, "libpython%d.%dt.dylib", maj, min); + + python->lib = dlopen (libpython_name, RTLD_NOW | RTLD_GLOBAL); + + if (python->lib != NULL) + { + strncpy (pythondll_path, libpython_name, sizeof (pythondll_path) - 1); + + hcfree (libpython_name); + + break; + } + else + { + hcfree (libpython_name); + }; + + #elif defined (__CYGWIN__) + + char *libpython_name = NULL; + + hc_asprintf (&libpython_name, "python%d%dt.dll", maj, min); + + python->lib = hc_dlopen (libpython_name); + + if (python->lib != NULL) + { + strncpy (pythondll_path, libpython_name, sizeof (pythondll_path) - 1); + + hcfree (libpython_name); + + break; + } + else + { + hcfree (libpython_name); + }; + + #else + + char *libpython_name = NULL; + + hc_asprintf (&libpython_name, "libpython%d.%dt.so", maj, min); + + python->lib = dlopen (libpython_name, RTLD_NOW | RTLD_GLOBAL); + + if (python->lib != NULL) + { + strncpy (pythondll_path, libpython_name, sizeof (pythondll_path) - 1); + + hcfree (libpython_name); + + break; + } + else + { + hcfree (libpython_name); + }; + + #endif + + if (python->lib != NULL) break; + } + + if (python->lib != NULL) break; + } + + if (python->lib == NULL) + { + fprintf (stderr, "Unable to find suitable Python library for -m 72000.\n\n"); + fprintf (stderr, "Most users who encounter this error are just missing the so called 'free-threaded' library support.\n"); + fprintf (stderr, "* On Windows, during install, there's an option 'free-threaded' that you need to click, it's just disabled by default.\n"); + fprintf (stderr, "* On Linux and MacOS, use `pyenv` and select a version that ends with a `t` (for instance `3.13t`).\n"); + fprintf (stderr, " However, on Linux (not MacOS) it's better to use -m 73000 instead. So you probably want to ignore this.\n"); + fprintf (stderr, "\n"); + + return false; + } + else + { + printf ("Loaded python library from: %s\n\n", pythondll_path); + } + + #if defined (_WIN) || defined (__CYGWIN__) || defined (__APPLE__) + + #else + fprintf (stderr, "Attention!!! The 'free-threaded' python library has some major downsides.\n"); + fprintf (stderr, " The main purpose of this module is to give Windows and macOS users a multithreading option.\n"); + fprintf (stderr, " It seems to be a lot slower, and relevant modules such as `cffi` are incompatibile.\n"); + fprintf (stderr, " Since your are on Linux we highly recommend to stick to multiprocessing module.\n"); + fprintf (stderr, " Maybe 'free-threaded' mode will become more mature in the future.\n"); + fprintf (stderr, " For now, we high recommend to stick to -m 73000 instead.\n\n"); + #endif + + #define HC_LOAD_FUNC_PYTHON(ptr,name,pythonname,type,libname,noerr) \ + do { \ + ptr->name = (type) hc_dlsym ((ptr)->lib, #pythonname); \ + if ((noerr) != -1) { \ + if (!(ptr)->name) { \ + if ((noerr) == 1) { \ + fprintf (stderr, "%s is missing from %s shared library.", #name, #libname); \ + return false; \ + } \ + if ((noerr) != 1) { \ + fprintf (stderr, "%s is missing from %s shared library.", #name, #libname); \ + return true; \ + } \ + } \ + } \ + } while (0) + + HC_LOAD_FUNC_PYTHON (python, Py_GetVersion, Py_GetVersion, PYGETVERSION, PYTHON, 1); + + const char *version_str = python->Py_GetVersion (); + + int major = 0; + int minor = 0; + + if (sscanf (version_str, "%d.%d", &major, &minor) != 2) + { + fprintf (stderr, "Python version string is not valid: %s\n", version_str); + + return false; + } + + if ((major < 3) || (major == 3 && minor < 13)) + { + fprintf (stderr, "Python version mismatch: Need at least v3.13\n"); + + return false; + } + + HC_LOAD_FUNC_PYTHON (python, Py_Initialize, Py_Initialize, PY_INITIALIZE, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, Py_Finalize, Py_Finalize, PY_FINALIZE, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, Py_DecRef, Py_DecRef, PY_DECREF, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, PyBool_FromLong, PyBool_FromLong, PYBOOL_FROMLONG, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, PyBytes_FromStringAndSize, PyBytes_FromStringAndSize, PYBYTES_FROMSTRINGANDSIZE, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, PyDict_DelItemString, PyDict_DelItemString, PYDICT_DELITEMSTRING, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, PyDict_GetItemString, PyDict_GetItemString, PYDICT_GETITEMSTRING, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, PyDict_New, PyDict_New, PYDICT_NEW, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, PyDict_SetItemString, PyDict_SetItemString, PYDICT_SETITEMSTRING, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, PyErr_Print, PyErr_Print, PYERR_PRINT, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, PyImport_ImportModule, PyImport_ImportModule, PYIMPORT_IMPORTMODULE, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, PyImport_Import, PyImport_Import, PYIMPORT_IMPORT, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, PyList_Append, PyList_Append, PYLIST_APPEND, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, PyList_GetItem, PyList_GetItem, PYLIST_GETITEM, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, PyList_New, PyList_New, PYLIST_NEW, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, PyList_SetItem, PyList_SetItem, PYLIST_SETITEM, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, PyList_Size, PyList_Size, PYLIST_SIZE, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, PyLong_FromLong, PyLong_FromLong, PYLONG_FROMLONG, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, PyObject_CallObject, PyObject_CallObject, PYOBJECT_CALLOBJECT, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, PyObject_GetAttrString, PyObject_GetAttrString, PYOBJECT_GETATTRSTRING, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, PyTuple_New, PyTuple_New, PYTUPLE_NEW, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, PyTuple_SetItem, PyTuple_SetItem, PYTUPLE_SETITEM, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, PyUnicode_AsUTF8, PyUnicode_AsUTF8, PYUNICODE_ASUTF8, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, PyUnicode_AsUTF8AndSize, PyUnicode_AsUTF8AndSize, PYUNICODE_ASUTF8ANDSIZE, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, PyUnicode_DecodeFSDefaultAndSize, PyUnicode_DecodeFSDefaultAndSize, PYUNICODE_DECODEFSDEFAULTANDSIZE, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, PyUnicode_DecodeFSDefault, PyUnicode_DecodeFSDefault, PYUNICODE_DECODEFSDEFAULT, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, PyUnicode_FromStringAndSize, PyUnicode_FromStringAndSize, PYUNICODE_FROMSTRINGANDSIZE, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, PyUnicode_FromString, PyUnicode_FromString, PYUNICODE_FROMSTRING, PYTHON, 1); + //HC_LOAD_FUNC_PYTHON (python, PyEval_AcquireLock, PyEval_AcquireLock, PYEVAL_ACQUIRELOCK, PYTHON, 1); + //HC_LOAD_FUNC_PYTHON (python, PyEval_ReleaseLock, PyEval_ReleaseLock, PYEVAL_RELEASELOCK, PYTHON, 1); + //HC_LOAD_FUNC_PYTHON (python, PyThreadState_Swap, PyThreadState_Swap, PYTHREADSTATE_SWAP, PYTHON, 1); + //HC_LOAD_FUNC_PYTHON (python, Py_NewInterpreter, Py_NewInterpreter, PYNEWINTERPRETER, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, Py_EndInterpreter, Py_EndInterpreter, PYENDINTERPRETER, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, PyGILState_Ensure, PyGILState_Ensure, PYGILSTATE_ENSURE, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, PyGILState_Release, PyGILState_Release, PYGILSTATE_RELEASE, PYTHON, 1); + //HC_LOAD_FUNC_PYTHON (python, PyEval_AcquireThread, PyEval_AcquireThread, PYEVAL_ACQUIRETHREAD, PYTHON, 1); + //HC_LOAD_FUNC_PYTHON (python, PyEval_ReleaseThread, PyEval_ReleaseThread, PYEVAL_RELEASETHREAD, PYTHON, 1); + //HC_LOAD_FUNC_PYTHON (python, PyThreadState_Clear, PyThreadState_Clear, PYTHREADSTATE_CLEAR, PYTHON, 1); + //HC_LOAD_FUNC_PYTHON (python, PyThreadState_Delete, PyThreadState_Delete, PYTHREADSTATE_DELETE, PYTHON, 1); + //HC_LOAD_FUNC_PYTHON (python, PyThreadState_New, PyThreadState_New, PYTHREADSTATE_NEW, PYTHON, 1); + //HC_LOAD_FUNC_PYTHON (python, PyInterpreterState_Main, PyInterpreterState_Main, PYINTERPRETERSTATE_MAIN, PYTHON, 1); + //HC_LOAD_FUNC_PYTHON (python, PyEval_InitThreads, PyEval_InitThreads, PYEVAL_INITTHREADS, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, PyEval_SaveThread, PyEval_SaveThread, PYEVAL_SAVETHREAD, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, Py_NewInterpreterFromConfig, Py_NewInterpreterFromConfig, PYNEWINTERPRETERFROMCONFIG, PYTHON, 1); + //HC_LOAD_FUNC_PYTHON (python, Py_ExitStatusException, Py_ExitStatusException, PYEXITSTATUSEXCEPTION, PYTHON, 1); + //HC_LOAD_FUNC_PYTHON (python, Py_InitializeFromConfig, Py_InitializeFromConfig, PYINITIALIZEFROMCONFIG, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, PyEval_RestoreThread, PyEval_RestoreThread, PYEVAL_RESTORETHREAD, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, Py_CompileStringExFlags, Py_CompileStringExFlags, PY_COMPILESTRINGEXFLAGS, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, PyEval_EvalCode, PyEval_EvalCode, PYEVAL_EVALCODE, PYTHON, 1); + HC_LOAD_FUNC_PYTHON (python, PyEval_GetBuiltins, PyEval_GetBuiltins, PYEVAL_GETBUILTINS, PYTHON, 1); + + return true; +} + +static bool units_init (python_interpreter_t *python_interpreter) +{ + #if defined (_WIN) + + SYSTEM_INFO sysinfo; + + GetSystemInfo (&sysinfo); + + int num_devices = sysinfo.dwNumberOfProcessors; + + #else + + int num_devices = sysconf (_SC_NPROCESSORS_ONLN); + + #endif + + unit_t *units_buf = (unit_t *) hccalloc (num_devices, sizeof (unit_t)); + + int units_cnt = 0; + + for (int i = 0; i < num_devices; i++) + { + unit_t *unit_buf = &units_buf[i]; + + hc_python_lib_t *python = python_interpreter->python; + + unit_buf->unit_info_len = snprintf (unit_buf->unit_info_buf, sizeof (unit_buf->unit_info_buf) - 1, "Python Interpreter (%s)", python->Py_GetVersion ()); + + unit_buf->unit_info_buf[unit_buf->unit_info_len] = 0; + + unit_buf->workitem_count = N_ACCEL; + + units_cnt++; + } + + python_interpreter->units_buf = units_buf; + python_interpreter->units_cnt = units_cnt; + + return true; +} + +static void units_term (python_interpreter_t *python_interpreter) +{ + unit_t *units_buf = python_interpreter->units_buf; + + if (units_buf) + { + hcfree (python_interpreter->units_buf); + } +} + +void *platform_init (user_options_t *user_options) +{ + // Verify CPU features + + if (cpu_chipset_test () == -1) return NULL; + + // Allocate platform context + + python_interpreter_t *python_interpreter = (python_interpreter_t *) hcmalloc (sizeof (python_interpreter_t)); + + hc_python_lib_t *python = (hc_python_lib_t *) hcmalloc (sizeof (hc_python_lib_t)); + + python_interpreter->python = python; + + if (init_python (python) == false) return NULL; + + python->Py_Initialize (); + + python_interpreter->thread_state = python->PyEval_SaveThread (); + + python_interpreter->source_filename = (user_options->bridge_parameter1 == NULL) ? DEFAULT_SOURCE_FILENAME : user_options->bridge_parameter1; + + if (units_init (python_interpreter) == false) + { + hcfree (python_interpreter); + + return NULL; + } + + return python_interpreter; +} + +void platform_term (void *platform_context) +{ + python_interpreter_t *python_interpreter = platform_context; + + if (python_interpreter == NULL) return; + + hc_python_lib_t *python = python_interpreter->python; + + // python->PyGILState_Ensure (); + + python->PyEval_RestoreThread (python_interpreter->thread_state); + + python->Py_Finalize (); + + units_term (python_interpreter); + + hcfree (python_interpreter); +} + +bool thread_init (MAYBE_UNUSED void *platform_context, MAYBE_UNUSED hc_device_param_t *device_param, MAYBE_UNUSED hashconfig_t *hashconfig, MAYBE_UNUSED hashes_t *hashes) +{ + python_interpreter_t *python_interpreter = platform_context; + + const int unit_idx = device_param->bridge_link_device; + + unit_t *unit_buf = &python_interpreter->units_buf[unit_idx]; + + hc_python_lib_t *python = python_interpreter->python; + + PyInterpreterConfig config = + { + .use_main_obmalloc = 0, + .allow_fork = 1, + .allow_exec = 1, + .allow_threads = 1, + .allow_daemon_threads = 0, + .check_multi_interp_extensions = 1, + .gil = PyInterpreterConfig_OWN_GIL + }; + + unit_buf->tstate = NULL; + + PyStatus status = python->Py_NewInterpreterFromConfig (&unit_buf->tstate, &config); + + if (status.exitcode) + { + python->PyErr_Print (); + + return false; + } + + PyObject *sys = python->PyImport_ImportModule ("sys"); + PyObject *path = python->PyObject_GetAttrString (sys, "path"); + python->PyList_Append (path, python->PyUnicode_FromString ("./Python")); + python->Py_DecRef (path); + python->Py_DecRef (sys); + + char *source = file_to_buffer (python_interpreter->source_filename); + + if (source == NULL) return NULL; + + PyObject *code = python->Py_CompileStringExFlags (source, python_interpreter->source_filename, Py_file_input, NULL, -1); + + free (source); + + if (code == NULL) + { + python->PyErr_Print (); + + return false; + } + + unit_buf->pGlobals = python->PyDict_New (); + + python->PyDict_SetItemString (unit_buf->pGlobals, "__builtins__", python->PyEval_GetBuiltins ()); + + PyObject *result = python->PyEval_EvalCode (code, unit_buf->pGlobals, unit_buf->pGlobals); + + if (result == NULL) + { + python->PyErr_Print (); + + return false; + } + + python->Py_DecRef (result); + + unit_buf->pFunc_Init = python->PyDict_GetItemString (unit_buf->pGlobals, "init"); + + if (unit_buf->pFunc_Init == NULL) + { + python->PyErr_Print (); + + return false; + } + + unit_buf->pFunc_Term = python->PyDict_GetItemString (unit_buf->pGlobals, "term"); + + if (unit_buf->pFunc_Term == NULL) + { + python->PyErr_Print (); + + return false; + } + + unit_buf->pFunc_kernel_loop = python->PyDict_GetItemString (unit_buf->pGlobals, "kernel_loop"); + + if (unit_buf->pFunc_kernel_loop == NULL) + { + python->PyErr_Print (); + + return false; + } + + // Initialize Context (which also means copy salts because they are part of the context) + + unit_buf->pContext = python->PyDict_New (); + + if (unit_buf->pContext == NULL) + { + python->PyErr_Print (); + + return false; + } + + const char *module_name = extract_module_name (python_interpreter->source_filename); + + int rc = 0; + + + + rc |= python->PyDict_SetItemString (unit_buf->pContext, "module_name", python->PyUnicode_FromString ((const char *) module_name)); + rc |= python->PyDict_SetItemString (unit_buf->pContext, "salts_cnt", python->PyLong_FromLong (hashes->salts_cnt)); + rc |= python->PyDict_SetItemString (unit_buf->pContext, "salts_size", python->PyLong_FromLong (sizeof (salt_t))); + rc |= python->PyDict_SetItemString (unit_buf->pContext, "salts_buf", python->PyBytes_FromStringAndSize ((const char *) hashes->salts_buf, sizeof (salt_t) * hashes->salts_cnt)); + rc |= python->PyDict_SetItemString (unit_buf->pContext, "esalts_cnt", python->PyLong_FromLong (hashes->digests_cnt)); + rc |= python->PyDict_SetItemString (unit_buf->pContext, "esalts_size", python->PyLong_FromLong (hashconfig->esalt_size)); + rc |= python->PyDict_SetItemString (unit_buf->pContext, "esalts_buf", python->PyBytes_FromStringAndSize ((const char *) hashes->esalts_buf, hashconfig->esalt_size * hashes->digests_cnt)); + rc |= python->PyDict_SetItemString (unit_buf->pContext, "st_salts_cnt", python->PyLong_FromLong (1)); + rc |= python->PyDict_SetItemString (unit_buf->pContext, "st_salts_size", python->PyLong_FromLong (sizeof (salt_t))); + rc |= python->PyDict_SetItemString (unit_buf->pContext, "st_salts_buf", python->PyBytes_FromStringAndSize ((const char *) hashes->st_salts_buf, sizeof (salt_t) * 1)); + rc |= python->PyDict_SetItemString (unit_buf->pContext, "st_esalts_cnt", python->PyLong_FromLong (1)); + rc |= python->PyDict_SetItemString (unit_buf->pContext, "st_esalts_size", python->PyLong_FromLong (hashconfig->esalt_size)); + rc |= python->PyDict_SetItemString (unit_buf->pContext, "st_esalts_buf", python->PyBytes_FromStringAndSize ((const char *) hashes->st_esalts_buf, hashconfig->esalt_size * 1)); + + if (rc != 0) + { + python->PyErr_Print (); + + return false; + } + + PyObject *pArgs = python->PyTuple_New (1); + + if (pArgs == NULL) + { + python->PyErr_Print (); + + return false; + } + + python->PyTuple_SetItem (pArgs, 0, unit_buf->pContext); + + PyObject *pReturn = python->PyObject_CallObject (unit_buf->pFunc_Init, pArgs); + + if (pReturn == NULL) + { + python->PyErr_Print (); + + return false; + } + + python->Py_DecRef (pReturn); + + //python->Py_DecRef (pArgs); + + // for later calls + + unit_buf->pArgs = python->PyTuple_New (4); + + if (unit_buf->pArgs == NULL) + { + python->PyErr_Print (); + + return false; + } + + python->PyTuple_SetItem (unit_buf->pArgs, 0, unit_buf->pContext); + python->PyTuple_SetItem (unit_buf->pArgs, 2, python->PyLong_FromLong (0)); + python->PyTuple_SetItem (unit_buf->pArgs, 3, python->PyBool_FromLong (false)); + + return true; +} + +void thread_term (MAYBE_UNUSED void *platform_context, MAYBE_UNUSED hc_device_param_t *device_param, MAYBE_UNUSED hashconfig_t *hashconfig, MAYBE_UNUSED hashes_t *hashes) +{ + python_interpreter_t *python_interpreter = platform_context; + + const int unit_idx = device_param->bridge_link_device; + + unit_t *unit_buf = &python_interpreter->units_buf[unit_idx]; + + hc_python_lib_t *python = python_interpreter->python; + + python->PyDict_DelItemString (unit_buf->pContext, "module_name"); + python->PyDict_DelItemString (unit_buf->pContext, "salts_cnt"); + python->PyDict_DelItemString (unit_buf->pContext, "salts_size"); + python->PyDict_DelItemString (unit_buf->pContext, "salts_buf"); + python->PyDict_DelItemString (unit_buf->pContext, "esalts_cnt"); + python->PyDict_DelItemString (unit_buf->pContext, "esalts_size"); + python->PyDict_DelItemString (unit_buf->pContext, "esalts_buf"); + python->PyDict_DelItemString (unit_buf->pContext, "st_salts_cnt"); + python->PyDict_DelItemString (unit_buf->pContext, "st_salts_size"); + python->PyDict_DelItemString (unit_buf->pContext, "st_salts_buf"); + python->PyDict_DelItemString (unit_buf->pContext, "st_esalts_cnt"); + python->PyDict_DelItemString (unit_buf->pContext, "st_esalts_size"); + python->PyDict_DelItemString (unit_buf->pContext, "st_esalts_buf"); + + PyObject *pArgs = python->PyTuple_New (1); + + if (pArgs == NULL) + { + python->PyErr_Print (); + + return; + } + + python->PyTuple_SetItem (pArgs, 0, unit_buf->pContext); + + python->PyObject_CallObject (unit_buf->pFunc_Term, pArgs); + + python->Py_DecRef (pArgs); + + python->Py_DecRef (unit_buf->pArgs); + python->Py_DecRef (unit_buf->pContext); + python->Py_DecRef (unit_buf->pFunc_kernel_loop); + python->Py_DecRef (unit_buf->pFunc_Term); + python->Py_DecRef (unit_buf->pFunc_Init); + python->Py_DecRef (unit_buf->pGlobals); + + python->Py_EndInterpreter (unit_buf->tstate); +} + +int get_unit_count (void *platform_context) +{ + python_interpreter_t *python_interpreter = platform_context; + + return python_interpreter->units_cnt; +} + +// we support units of mixed speed, that's why the workitem count is unit specific + +int get_workitem_count (void *platform_context, const int unit_idx) +{ + python_interpreter_t *python_interpreter = platform_context; + + unit_t *unit_buf = &python_interpreter->units_buf[unit_idx]; + + return unit_buf->workitem_count; +} + +char *get_unit_info (void *platform_context, const int unit_idx) +{ + python_interpreter_t *python_interpreter = platform_context; + + unit_t *unit_buf = &python_interpreter->units_buf[unit_idx]; + + return unit_buf->unit_info_buf; +} + +bool launch_loop (MAYBE_UNUSED void *platform_context, MAYBE_UNUSED hc_device_param_t *device_param, MAYBE_UNUSED hashconfig_t *hashconfig, MAYBE_UNUSED hashes_t *hashes, MAYBE_UNUSED const u32 salt_pos, MAYBE_UNUSED const u64 pws_cnt) +{ + python_interpreter_t *python_interpreter = platform_context; + + const int unit_idx = device_param->bridge_link_device; + + unit_t *unit_buf = &python_interpreter->units_buf[unit_idx]; + + hc_python_lib_t *python = python_interpreter->python; + + generic_io_tmp_t *generic_io_tmp = (generic_io_tmp_t *) device_param->h_tmps; + + PyObject *pws = python->PyList_New (pws_cnt); + + if (pws == NULL) + { + python->PyErr_Print (); + + return false; + } + + for (u64 i = 0; i < pws_cnt; i++) + { + PyObject *pw = python->PyBytes_FromStringAndSize ((char *) generic_io_tmp->pw_buf, generic_io_tmp->pw_len); + + if (pw == NULL) return false; + + python->PyList_SetItem (pws, i, pw); + + generic_io_tmp++; + } + + python->PyTuple_SetItem (unit_buf->pArgs, 1, pws); + python->PyTuple_SetItem (unit_buf->pArgs, 2, python->PyLong_FromLong (salt_pos)); + + if (hashes->salts_buf == hashes->st_salts_buf) + { + python->PyTuple_SetItem (unit_buf->pArgs, 3, python->PyBool_FromLong (true)); + } + else + { + python->PyTuple_SetItem (unit_buf->pArgs, 3, python->PyBool_FromLong (false)); + } + + PyObject *pReturn = python->PyObject_CallObject (unit_buf->pFunc_kernel_loop, unit_buf->pArgs); + + if (pReturn == NULL) + { + python->PyErr_Print (); + + return false; + } + + Py_ssize_t retsz = python->PyList_Size (pReturn); + + if (retsz != (Py_ssize_t) pws_cnt) return false; + + generic_io_tmp = (generic_io_tmp_t *) device_param->h_tmps; + + for (Py_ssize_t i = 0; i < retsz; i++) + { + PyObject *hash = python->PyList_GetItem (pReturn, i); + + Py_ssize_t len; + + const char *s = python->PyUnicode_AsUTF8AndSize (hash, &len); + + if (s) + { + memcpy (generic_io_tmp->out_buf, s, len); + + generic_io_tmp->out_len = len; + } + + generic_io_tmp++; + } + + python->Py_DecRef (pReturn); + + return true; +} + +const char *st_update_hash (MAYBE_UNUSED void *platform_context) +{ + python_interpreter_t *python_interpreter = platform_context; + + hc_python_lib_t *python = python_interpreter->python; + + python->PyEval_RestoreThread (python_interpreter->thread_state); + + // this is ugly to load that entire thing just to get that one variable + + PyObject *sys = python->PyImport_ImportModule ("sys"); + PyObject *path = python->PyObject_GetAttrString (sys, "path"); + python->PyList_Append (path, python->PyUnicode_FromString ("./Python")); + python->Py_DecRef (path); + python->Py_DecRef (sys); + + char *source = file_to_buffer (python_interpreter->source_filename); + + if (source == NULL) + { + fprintf (stderr, "ERROR: %s: %s\n\n", python_interpreter->source_filename, strerror (errno)); + + return NULL; + } + + PyObject *code = python->Py_CompileStringExFlags (source, python_interpreter->source_filename, Py_file_input, NULL, -1); + + free (source); + + if (code == NULL) + { + python->PyErr_Print (); + + return false; + } + + PyObject *pGlobals = python->PyDict_New (); + + python->PyDict_SetItemString (pGlobals, "__builtins__", python->PyEval_GetBuiltins ()); + + PyObject *result = python->PyEval_EvalCode (code, pGlobals, pGlobals); + + if (result == NULL) + { + python->PyErr_Print (); + + return false; + } + + python->Py_DecRef (result); + + PyObject *constant = python->PyDict_GetItemString (pGlobals, "ST_HASH"); + + if (constant == NULL) + { + python_interpreter->thread_state = python->PyEval_SaveThread (); + + return NULL; + } + + const char *s = python->PyUnicode_AsUTF8 (constant); + + python->Py_DecRef (constant); + + python_interpreter->thread_state = python->PyEval_SaveThread (); + + return s; +} + +const char *st_update_pass (MAYBE_UNUSED void *platform_context) +{ + python_interpreter_t *python_interpreter = platform_context; + + hc_python_lib_t *python = python_interpreter->python; + + python->PyEval_RestoreThread (python_interpreter->thread_state); + + PyObject *sys = python->PyImport_ImportModule ("sys"); + PyObject *path = python->PyObject_GetAttrString (sys, "path"); + python->PyList_Append (path, python->PyUnicode_FromString ("./Python")); + python->Py_DecRef (path); + python->Py_DecRef (sys); + + // this is ugly to load that entire thing just to get that one variable + + char *source = file_to_buffer (python_interpreter->source_filename); + + if (source == NULL) return NULL; + + PyObject *code = python->Py_CompileStringExFlags (source, python_interpreter->source_filename, Py_file_input, NULL, -1); + + free (source); + + if (code == NULL) + { + python->PyErr_Print (); + + return false; + } + + PyObject *pGlobals = python->PyDict_New (); + + python->PyDict_SetItemString (pGlobals, "__builtins__", python->PyEval_GetBuiltins ()); + + PyObject *result = python->PyEval_EvalCode (code, pGlobals, pGlobals); + + if (result == NULL) + { + python->PyErr_Print (); + + return false; + } + + python->Py_DecRef (result); + + PyObject *constant = python->PyDict_GetItemString (pGlobals, "ST_PASS"); + + if (constant == NULL) + { + python_interpreter->thread_state = python->PyEval_SaveThread (); + + return NULL; + } + + const char *s = python->PyUnicode_AsUTF8 (constant); + + python->Py_DecRef (constant); + + python_interpreter->thread_state = python->PyEval_SaveThread (); + + return s; +} + +void bridge_init (bridge_ctx_t *bridge_ctx) +{ + bridge_ctx->bridge_context_size = BRIDGE_CONTEXT_SIZE_CURRENT; + bridge_ctx->bridge_interface_version = BRIDGE_INTERFACE_VERSION_CURRENT; + + bridge_ctx->platform_init = platform_init; + bridge_ctx->platform_term = platform_term; + bridge_ctx->get_unit_count = get_unit_count; + bridge_ctx->get_unit_info = get_unit_info; + bridge_ctx->get_workitem_count = get_workitem_count; + bridge_ctx->thread_init = thread_init; + bridge_ctx->thread_term = thread_term; + bridge_ctx->salt_prepare = BRIDGE_DEFAULT; + bridge_ctx->salt_destroy = BRIDGE_DEFAULT; + bridge_ctx->launch_loop = launch_loop; + bridge_ctx->launch_loop2 = BRIDGE_DEFAULT; + bridge_ctx->st_update_hash = st_update_hash; + bridge_ctx->st_update_pass = st_update_pass; +} diff --git a/src/bridges/bridge_python_generic_hash_sp.mk b/src/bridges/bridge_python_generic_hash_sp.mk new file mode 100644 index 000000000..cbef434cb --- /dev/null +++ b/src/bridges/bridge_python_generic_hash_sp.mk @@ -0,0 +1,86 @@ +REPORT_MISSING_SO := false +REPORT_MISSING_DLL := false + +ifeq ($(BRIDGE_SUFFIX),so) +ifeq ($(REPORT_MISSING_SO),false) +PYTHON_CONFIG := $(shell command -v python3-config 2>/dev/null) +ifeq ($(PYTHON_CONFIG),) + REPORT_MISSING_SO := true +endif +endif +ifeq ($(REPORT_MISSING_SO),false) +PYTHON_CFLAGS := $(shell python3-config --includes 2>/dev/null) +ifeq ($(strip $(PYTHON_CFLAGS)),) + REPORT_MISSING_SO := true +endif +endif +ifeq ($(REPORT_MISSING_SO),false) +PYTHON_INCLUDE_PATH := $(shell echo "$(PYTHON_CFLAGS)" | sed -n 's/-I\([^ ]*\).*/\1/p') +ifeq ($(PYTHON_INCLUDE_PATH),) + REPORT_MISSING_SO := true +endif +endif +ifeq ($(REPORT_MISSING_SO),false) +PYTHON_HAS_OWN_GIL := $(shell grep -r -q 'PyInterpreterConfig_OWN_GIL' "$(PYTHON_INCLUDE_PATH)" && echo true || echo false) +ifeq ($(PYTHON_HAS_OWN_GIL),false) + REPORT_MISSING_SO := true +endif +endif +endif + +CHECK_DLL := false + +ifeq ($(BRIDGE_SUFFIX),dll) + CHECK_DLL := true +endif +ifeq ($(BUILD_MODE),cross) + CHECK_DLL := true +endif + +ifeq ($(CHECK_DLL),true) +ifeq ($(REPORT_MISSING_DLL),false) +PYTHON_CONFIG := $(shell ls $(WIN_PYTHON)/mingw64/include/python3.12/ 2>/dev/null) +ifeq ($(PYTHON_CONFIG),) + REPORT_MISSING_DLL := true +endif +endif +PYTHON_CFLAGS_WIN := -I$(WIN_PYTHON)/mingw64/include/python3.12/ +endif + +ifeq ($(BUILD_MODE),cross) +bridges/bridge_python_generic_hash_sp.so: src/bridges/bridge_python_generic_hash_sp.c src/cpu_features.c obj/combined.LINUX.a + $(CC_LINUX) $(CCFLAGS) $(CFLAGS_CROSS_LINUX) $^ -o $@ $(LFLAGS_CROSS_LINUX) -shared -fPIC -D BRIDGE_INTERFACE_VERSION_CURRENT=$(BRIDGE_INTERFACE_VERSION) $(PYTHON_CFLAGS) +bridges/bridge_python_generic_hash_sp.dll: src/bridges/bridge_python_generic_hash_sp.c src/cpu_features.c obj/combined.WIN.a + $(CC_WIN) $(CCFLAGS) $(CFLAGS_CROSS_WIN) $^ -o $@ $(LFLAGS_CROSS_WIN) -shared -fPIC -D BRIDGE_INTERFACE_VERSION_CURRENT=$(BRIDGE_INTERFACE_VERSION) $(PYTHON_CFLAGS_WIN) +else +ifeq ($(SHARED),1) +bridges/bridge_python_generic_hash_sp.$(BRIDGE_SUFFIX): src/bridges/bridge_python_generic_hash_sp.c src/cpu_features.c $(HASHCAT_LIBRARY) + $(CC) $(CCFLAGS) $(CFLAGS_NATIVE) $^ -o $@ $(LFLAGS_NATIVE) -shared -fPIC -D BRIDGE_INTERFACE_VERSION_CURRENT=$(BRIDGE_INTERFACE_VERSION) $(PYTHON_CFLAGS) +else +bridges/bridge_python_generic_hash_sp.$(BRIDGE_SUFFIX): src/bridges/bridge_python_generic_hash_sp.c src/cpu_features.c obj/combined.NATIVE.a + $(CC) $(CCFLAGS) $(CFLAGS_NATIVE) $^ -o $@ $(LFLAGS_NATIVE) -shared -fPIC -D BRIDGE_INTERFACE_VERSION_CURRENT=$(BRIDGE_INTERFACE_VERSION) $(PYTHON_CFLAGS) +endif +endif + +RED = \033[1;31m +RESET = \033[0m + +ifeq ($(REPORT_MISSING_DLL),true) +bridges/bridge_python_generic_hash_sp.dll: + @echo "" + @echo "$(RED)WARNING$(RESET): Skipping freethreaded plugin 70200: Python Windows headers not found." + @echo " To use -m 70200, you must install the required Python headers." + @echo " Otherwise, you can safely ignore this warning." + @echo " See BUILD_WSL.md how to prepare $(WIN_PYTHON)." + @echo "" +endif + +ifeq ($(REPORT_MISSING_SO),true) +bridges/bridge_python_generic_hash_sp.so: + @echo "" + @echo "$(RED)WARNING$(RESET): Skipping freethreaded plugin 70200: Python 3.12+ headers not found." + @echo " To use -m 70200, you must install the required Python headers." + @echo " Otherwise, you can safely ignore this warning." + @echo " For more information, see 'docs/hashcat-python-plugin-requirements.md'." + @echo "" +endif diff --git a/src/bridges/bridge_scrypt_jane.c b/src/bridges/bridge_scrypt_jane.c new file mode 100644 index 000000000..f6df8fd12 --- /dev/null +++ b/src/bridges/bridge_scrypt_jane.c @@ -0,0 +1,284 @@ +/** + * Author......: See docs/credits.txt + * License.....: MIT + */ + +#include "common.h" +#include "types.h" +#include "bridges.h" +#include "memory.h" +#include "shared.h" +#include "cpu_features.h" + +#include "code/scrypt-jane-portable.h" +#include "code/scrypt-jane-hash.h" +#include "code/scrypt-jane-romix.h" + +// good: we can use this multiplier do reduce copy overhead to increase the guessing speed, +// bad: but we also increase the password candidate batch size. +// slow hashes which make use of this bridge probably are used with smaller wordlists, +// and therefore it's easier for hashcat to parallelize if this multiplier is low. +// in the end, it's a trade-off. + +#define N_ACCEL 8 + +#define SCRYPT_R_MAX 16 +#define SCRYPT_P_MAX 16 + +#define SCRYPT_TMP_SIZE (128ULL * SCRYPT_R_MAX * SCRYPT_P_MAX) +#define SCRYPT_TMP_SIZE4 (SCRYPT_TMP_SIZE / 4) + +typedef struct +{ + u32 P[SCRYPT_TMP_SIZE4]; + +} scrypt_tmp_t; + +typedef struct +{ + void *V; + //void *X; + void *Y; + + // implementation specific + + char unit_info_buf[1024]; + int unit_info_len; + + u64 workitem_count; + size_t workitem_size; + +} unit_t; + +typedef struct +{ + unit_t *units_buf; + int units_cnt; + +} bridge_scrypt_jane_t; + +static bool units_init (bridge_scrypt_jane_t *bridge_scrypt_jane) +{ + #if defined (_WIN) + + SYSTEM_INFO sysinfo; + + GetSystemInfo (&sysinfo); + + int num_devices = sysinfo.dwNumberOfProcessors; + + #else + + int num_devices = sysconf (_SC_NPROCESSORS_ONLN); + + #endif + + unit_t *units_buf = (unit_t *) hccalloc (num_devices, sizeof (unit_t)); + + int units_cnt = 0; + + for (int i = 0; i < num_devices; i++) + { + unit_t *unit_buf = &units_buf[i]; + + unit_buf->unit_info_len = snprintf (unit_buf->unit_info_buf, sizeof (unit_buf->unit_info_buf) - 1, + "%s", + "Scrypt-Jane ROMix"); + + unit_buf->unit_info_buf[unit_buf->unit_info_len] = 0; + + unit_buf->workitem_count = N_ACCEL; + + units_cnt++; + } + + bridge_scrypt_jane->units_buf = units_buf; + bridge_scrypt_jane->units_cnt = units_cnt; + + return true; +} + +static void units_term (bridge_scrypt_jane_t *bridge_scrypt_jane) +{ + if (bridge_scrypt_jane) + { + hcfree (bridge_scrypt_jane->units_buf); + } +} + +void *platform_init () +{ + // Verify CPU features + + if (cpu_chipset_test () == -1) return NULL; + + // Allocate platform context + + bridge_scrypt_jane_t *bridge_scrypt_jane = (bridge_scrypt_jane_t *) hcmalloc (sizeof (bridge_scrypt_jane_t)); + + if (units_init (bridge_scrypt_jane) == false) + { + hcfree (bridge_scrypt_jane); + + return NULL; + } + + return bridge_scrypt_jane; +} + +void platform_term (void *platform_context) +{ + bridge_scrypt_jane_t *bridge_scrypt_jane = platform_context; + + if (bridge_scrypt_jane) + { + units_term (bridge_scrypt_jane); + + hcfree (bridge_scrypt_jane); + } +} + +int get_unit_count (void *platform_context) +{ + bridge_scrypt_jane_t *bridge_scrypt_jane = platform_context; + + return bridge_scrypt_jane->units_cnt; +} + +// we support units of mixed speed, that's why the workitem count is unit specific + +int get_workitem_count (void *platform_context, const int unit_idx) +{ + bridge_scrypt_jane_t *bridge_scrypt_jane = platform_context; + + unit_t *unit_buf = &bridge_scrypt_jane->units_buf[unit_idx]; + + return unit_buf->workitem_count; +} + +char *get_unit_info (void *platform_context, const int unit_idx) +{ + bridge_scrypt_jane_t *bridge_scrypt_jane = platform_context; + + unit_t *unit_buf = &bridge_scrypt_jane->units_buf[unit_idx]; + + return unit_buf->unit_info_buf; +} + +bool salt_prepare (void *platform_context, MAYBE_UNUSED hashconfig_t *hashconfig, MAYBE_UNUSED hashes_t *hashes) +{ + // selftest hash + + salt_t *scrypt_st = (salt_t *) hashes->st_salts_buf; + + const size_t chunk_bytes = 64 * 2 * scrypt_st->scrypt_r; + + size_t largest_V = chunk_bytes * scrypt_st->scrypt_N; + //size_t largest_X = chunk_bytes * scrypt_st->scrypt_p; + size_t largest_Y = chunk_bytes; + + // from here regular hashes + + salt_t *scrypt = (salt_t *) hashes->salts_buf; + + for (u32 salt_idx = 0; salt_idx < hashes->salts_cnt; salt_idx++, scrypt++) + { + const size_t chunk_bytes = 64 * 2 * scrypt->scrypt_r; + + const size_t sz_V = chunk_bytes * scrypt->scrypt_N; + //const size_t sz_X = chunk_bytes * scrypt->scrypt_p; + const size_t sz_Y = chunk_bytes; + + if (sz_V > largest_V) largest_V = sz_V; + //if (sz_X > largest_X) largest_X = sz_X; + if (sz_Y > largest_Y) largest_Y = sz_Y; + } + + bridge_scrypt_jane_t *bridge_scrypt_jane = platform_context; + + for (int unit_idx = 0; unit_idx < bridge_scrypt_jane->units_cnt; unit_idx++) + { + unit_t *unit_buf = &bridge_scrypt_jane->units_buf[unit_idx]; + + unit_buf->V = hcmalloc_aligned (largest_V, 64); + //unit_buf->X = hcmalloc_aligned (largest_X, 64); + unit_buf->Y = hcmalloc_aligned (largest_Y, 64); + } + + return true; +} + +void salt_destroy (void *platform_context, MAYBE_UNUSED hashconfig_t *hashconfig, MAYBE_UNUSED hashes_t *hashes) +{ + bridge_scrypt_jane_t *bridge_scrypt_jane = platform_context; + + for (int unit_idx = 0; unit_idx < bridge_scrypt_jane->units_cnt; unit_idx++) + { + unit_t *unit_buf = &bridge_scrypt_jane->units_buf[unit_idx]; + + hcfree_aligned (unit_buf->V); + //hcfree_aligned (unit_buf->X); + hcfree_aligned (unit_buf->Y); + } +} + +bool launch_loop (MAYBE_UNUSED void *platform_context, MAYBE_UNUSED hc_device_param_t *device_param, MAYBE_UNUSED hashconfig_t *hashconfig, MAYBE_UNUSED hashes_t *hashes, MAYBE_UNUSED const u32 salt_pos, MAYBE_UNUSED const u64 pws_cnt) +{ + bridge_scrypt_jane_t *bridge_scrypt_jane = platform_context; + + const int unit_idx = device_param->bridge_link_device; + + unit_t *unit_buf = &bridge_scrypt_jane->units_buf[unit_idx]; + + salt_t *salts_buf = (salt_t *) hashes->salts_buf; + + salt_t *salt_buf = &salts_buf[salt_pos]; + + scrypt_tmp_t *scrypt_tmp = (scrypt_tmp_t *) device_param->h_tmps; + + scrypt_mix_word_t *V = unit_buf->V; + //scrypt_mix_word_t *X = unit_buf->X; + scrypt_mix_word_t *Y = unit_buf->Y; + + const u32 N = salt_buf->scrypt_N; + const u32 r = salt_buf->scrypt_r; + const u32 p = salt_buf->scrypt_p; + + const size_t chunk_bytes = 64 * 2 * r; + + // hashcat guarantees h_tmps[] is 64 byte aligned + + for (u64 pw_cnt = 0; pw_cnt < pws_cnt; pw_cnt++) + { + u8 *X = (u8 *) scrypt_tmp->P; + + for (u32 i = 0; i < p; i++) + { + scrypt_ROMix ((scrypt_mix_word_t *) (X + (chunk_bytes * i)), (scrypt_mix_word_t *) Y, (scrypt_mix_word_t *) V, N, r); + } + + scrypt_tmp++; + } + + return true; +} + +void bridge_init (bridge_ctx_t *bridge_ctx) +{ + bridge_ctx->bridge_context_size = BRIDGE_CONTEXT_SIZE_CURRENT; + bridge_ctx->bridge_interface_version = BRIDGE_INTERFACE_VERSION_CURRENT; + + bridge_ctx->platform_init = platform_init; + bridge_ctx->platform_term = platform_term; + bridge_ctx->get_unit_count = get_unit_count; + bridge_ctx->get_unit_info = get_unit_info; + bridge_ctx->get_workitem_count = get_workitem_count; + bridge_ctx->thread_init = BRIDGE_DEFAULT; + bridge_ctx->thread_term = BRIDGE_DEFAULT; + bridge_ctx->salt_prepare = salt_prepare; + bridge_ctx->salt_destroy = salt_destroy; + bridge_ctx->launch_loop = launch_loop; + bridge_ctx->launch_loop2 = BRIDGE_DEFAULT; + bridge_ctx->st_update_hash = BRIDGE_DEFAULT; + bridge_ctx->st_update_pass = BRIDGE_DEFAULT; +} diff --git a/src/bridges/bridge_scrypt_jane.mk b/src/bridges/bridge_scrypt_jane.mk new file mode 100644 index 000000000..9aa789fc3 --- /dev/null +++ b/src/bridges/bridge_scrypt_jane.mk @@ -0,0 +1,30 @@ + +SCRYPT_JANE := deps/scrypt-jane-master +SCRYPT_JANE_CFLAGS := -I$(SCRYPT_JANE)/ -DSCRYPT_SHA256 -DSCRYPT_SALSA -DSCRYPT_CHOOSE_COMPILETIME -Wno-unused-function -Wno-unused-but-set-variable + +ifeq ($(BUILD_MODE),cross) +SCRYPT_JANE_CFLAGS += -mavx2 +else +ifeq ($(UNAME),Darwin) +ifeq ($(IS_APPLE_SILICON),0) +SCRYPT_JANE_CFLAGS += -mavx2 +endif +else +SCRYPT_JANE_CFLAGS += -march=native +endif +endif + +ifeq ($(BUILD_MODE),cross) +bridges/bridge_scrypt_jane.so: src/bridges/bridge_scrypt_jane.c src/cpu_features.c obj/combined.LINUX.a + $(CC_LINUX) $(CCFLAGS) $(CFLAGS_CROSS_LINUX) $^ -o $@ $(LFLAGS_CROSS_LINUX) -shared -fPIC -D BRIDGE_INTERFACE_VERSION_CURRENT=$(BRIDGE_INTERFACE_VERSION) $(SCRYPT_JANE_CFLAGS) +bridges/bridge_scrypt_jane.dll: src/bridges/bridge_scrypt_jane.c src/cpu_features.c obj/combined.WIN.a + $(CC_WIN) $(CCFLAGS) $(CFLAGS_CROSS_WIN) $^ -o $@ $(LFLAGS_CROSS_WIN) -shared -fPIC -D BRIDGE_INTERFACE_VERSION_CURRENT=$(BRIDGE_INTERFACE_VERSION) $(SCRYPT_JANE_CFLAGS) +else +ifeq ($(SHARED),1) +bridges/bridge_scrypt_jane.$(BRIDGE_SUFFIX): src/bridges/bridge_scrypt_jane.c src/cpu_features.c $(HASHCAT_LIBRARY) + $(CC) $(CCFLAGS) $(CFLAGS_NATIVE) $^ -o $@ $(LFLAGS_NATIVE) -shared -fPIC -D BRIDGE_INTERFACE_VERSION_CURRENT=$(BRIDGE_INTERFACE_VERSION) $(SCRYPT_JANE_CFLAGS) +else +bridges/bridge_scrypt_jane.$(BRIDGE_SUFFIX): src/bridges/bridge_scrypt_jane.c src/cpu_features.c obj/combined.NATIVE.a + $(CC) $(CCFLAGS) $(CFLAGS_NATIVE) $^ -o $@ $(LFLAGS_NATIVE) -shared -fPIC -D BRIDGE_INTERFACE_VERSION_CURRENT=$(BRIDGE_INTERFACE_VERSION) $(SCRYPT_JANE_CFLAGS) +endif +endif diff --git a/src/bridges/bridge_scrypt_yescrypt.c b/src/bridges/bridge_scrypt_yescrypt.c new file mode 100644 index 000000000..4e709153f --- /dev/null +++ b/src/bridges/bridge_scrypt_yescrypt.c @@ -0,0 +1,277 @@ +/** + * Author......: See docs/credits.txt + * License.....: MIT + */ + +#include "common.h" +#include "types.h" +#include "bridges.h" +#include "memory.h" +#include "shared.h" +#include "cpu_features.h" + +#include "yescrypt.h" + +void smix(uint8_t *B, size_t r, uint32_t N, uint32_t p, uint32_t t, + yescrypt_flags_t flags, + void *V, uint32_t NROM, const void *VROM, + void *XY, uint8_t *S, uint8_t *passwd); + +// good: we can use this multiplier do reduce copy overhead to increase the guessing speed, +// bad: but we also increase the password candidate batch size. +// slow hashes which make use of this bridge probably are used with smaller wordlists, +// and therefore it's easier for hashcat to parallelize if this multiplier is low. +// in the end, it's a trade-off. + +#define N_ACCEL 8 + +#define SCRYPT_R_MAX 16 +#define SCRYPT_P_MAX 16 + +#define SCRYPT_TMP_SIZE (128ULL * SCRYPT_R_MAX * SCRYPT_P_MAX) +#define SCRYPT_TMP_SIZE4 (SCRYPT_TMP_SIZE / 4) + +typedef struct +{ + u32 B[SCRYPT_TMP_SIZE4]; + +} scrypt_tmp_t; + +typedef struct +{ + void *V; + void *XY; + + // implementation specific + + char unit_info_buf[1024]; + int unit_info_len; + + u64 workitem_count; + size_t workitem_size; + +} unit_t; + +typedef struct +{ + unit_t *units_buf; + int units_cnt; + +} bridge_scrypt_yescrypt_t; + +static bool units_init (bridge_scrypt_yescrypt_t *bridge_scrypt_yescrypt) +{ + #if defined (_WIN) + + SYSTEM_INFO sysinfo; + + GetSystemInfo (&sysinfo); + + int num_devices = sysinfo.dwNumberOfProcessors; + + #else + + int num_devices = sysconf (_SC_NPROCESSORS_ONLN); + + #endif + + unit_t *units_buf = (unit_t *) hccalloc (num_devices, sizeof (unit_t)); + + int units_cnt = 0; + + for (int i = 0; i < num_devices; i++) + { + unit_t *unit_buf = &units_buf[i]; + + unit_buf->unit_info_len = snprintf (unit_buf->unit_info_buf, sizeof (unit_buf->unit_info_buf) - 1, + "%s", + "Scrypt-Yescrypt"); + + unit_buf->unit_info_buf[unit_buf->unit_info_len] = 0; + + unit_buf->workitem_count = N_ACCEL; + + units_cnt++; + } + + bridge_scrypt_yescrypt->units_buf = units_buf; + bridge_scrypt_yescrypt->units_cnt = units_cnt; + + return true; +} + +static void units_term (bridge_scrypt_yescrypt_t *bridge_scrypt_yescrypt) +{ + if (bridge_scrypt_yescrypt) + { + hcfree (bridge_scrypt_yescrypt->units_buf); + } +} + +void *platform_init () +{ + // Verify CPU features + + if (cpu_chipset_test () == -1) return NULL; + + // Allocate platform context + + bridge_scrypt_yescrypt_t *bridge_scrypt_yescrypt = (bridge_scrypt_yescrypt_t *) hcmalloc (sizeof (bridge_scrypt_yescrypt_t)); + + if (units_init (bridge_scrypt_yescrypt) == false) + { + hcfree (bridge_scrypt_yescrypt); + + return NULL; + } + + return bridge_scrypt_yescrypt; +} + +void platform_term (void *platform_context) +{ + bridge_scrypt_yescrypt_t *bridge_scrypt_yescrypt = platform_context; + + if (bridge_scrypt_yescrypt) + { + units_term (bridge_scrypt_yescrypt); + + hcfree (bridge_scrypt_yescrypt); + } +} + +int get_unit_count (void *platform_context) +{ + bridge_scrypt_yescrypt_t *bridge_scrypt_yescrypt = platform_context; + + return bridge_scrypt_yescrypt->units_cnt; +} + +// we support units of mixed speed, that's why the workitem count is unit specific + +int get_workitem_count (void *platform_context, const int unit_idx) +{ + bridge_scrypt_yescrypt_t *bridge_scrypt_yescrypt = platform_context; + + unit_t *unit_buf = &bridge_scrypt_yescrypt->units_buf[unit_idx]; + + return unit_buf->workitem_count; +} + +char *get_unit_info (void *platform_context, const int unit_idx) +{ + bridge_scrypt_yescrypt_t *bridge_scrypt_yescrypt = platform_context; + + unit_t *unit_buf = &bridge_scrypt_yescrypt->units_buf[unit_idx]; + + return unit_buf->unit_info_buf; +} + +bool salt_prepare (void *platform_context, MAYBE_UNUSED hashconfig_t *hashconfig, MAYBE_UNUSED hashes_t *hashes) +{ + // selftest hash + + salt_t *scrypt_st = (salt_t *) hashes->st_salts_buf; + + size_t largest_V = 128 * scrypt_st->scrypt_r * scrypt_st->scrypt_N; // yescrypt: the temporary storage V must be 128rN bytes in length + size_t largest_XY = 256 * scrypt_st->scrypt_r * scrypt_st->scrypt_p; // yescrypt: the temporary storage XY must be 256r or 256rp bytes in length + + // from here regular hashes + + salt_t *scrypt = (salt_t *) hashes->salts_buf; + + for (u32 salt_idx = 0; salt_idx < hashes->salts_cnt; salt_idx++, scrypt++) + { + const size_t sz_V = 128 * scrypt->scrypt_r * scrypt->scrypt_N; // yescrypt: the temporary storage V must be 128rN bytes in length + const size_t sz_XY = 256 * scrypt->scrypt_r * scrypt->scrypt_p; // yescrypt: the temporary storage XY must be 256r or 256rp bytes in length + + if (sz_V > largest_V) largest_V = sz_V; + if (sz_XY > largest_XY) largest_XY = sz_XY; + } + + bridge_scrypt_yescrypt_t *bridge_scrypt_yescrypt = platform_context; + + for (int unit_idx = 0; unit_idx < bridge_scrypt_yescrypt->units_cnt; unit_idx++) + { + unit_t *unit_buf = &bridge_scrypt_yescrypt->units_buf[unit_idx]; + + unit_buf->V = hcmalloc_aligned (largest_V, 64); + unit_buf->XY = hcmalloc_aligned (largest_XY, 64); + } + + return true; +} + +void salt_destroy (void *platform_context, MAYBE_UNUSED hashconfig_t *hashconfig, MAYBE_UNUSED hashes_t *hashes) +{ + bridge_scrypt_yescrypt_t *bridge_scrypt_yescrypt = platform_context; + + for (int unit_idx = 0; unit_idx < bridge_scrypt_yescrypt->units_cnt; unit_idx++) + { + unit_t *unit_buf = &bridge_scrypt_yescrypt->units_buf[unit_idx]; + + hcfree_aligned (unit_buf->V); + hcfree_aligned (unit_buf->XY); + } +} + +bool launch_loop (MAYBE_UNUSED void *platform_context, MAYBE_UNUSED hc_device_param_t *device_param, MAYBE_UNUSED hashconfig_t *hashconfig, MAYBE_UNUSED hashes_t *hashes, MAYBE_UNUSED const u32 salt_pos, MAYBE_UNUSED const u64 pws_cnt) +{ + bridge_scrypt_yescrypt_t *bridge_scrypt_yescrypt = platform_context; + + const int unit_idx = device_param->bridge_link_device; + + unit_t *unit_buf = &bridge_scrypt_yescrypt->units_buf[unit_idx]; + + salt_t *salts_buf = (salt_t *) hashes->salts_buf; + + salt_t *salt_buf = &salts_buf[salt_pos]; + + // hashcat guarantees h_tmps[] is 64 byte aligned, so is *B + + scrypt_tmp_t *scrypt_tmp = (scrypt_tmp_t *) device_param->h_tmps; + + for (u64 pw_cnt = 0; pw_cnt < pws_cnt; pw_cnt++) + { + u8 *B = (u8 *) scrypt_tmp->B; + + // We could use p-based parallelization from yescrypt instead, + // but since we're already multi-threading, there's no need to run OpenMP. + // With that in mind, we can optimize by using a constant p=1, + // allowing the compiler to eliminate branches in smix(). + + for (u32 i = 0; i < salt_buf->scrypt_p; i++) + { + // Same here: using constants allows the compiler to optimize away branches in smix(), + // so there's no need to call smix1()/smix2() directly and unnecessarily complicate the code. + + smix (B, salt_buf->scrypt_r, salt_buf->scrypt_N, 1, 0, 0, unit_buf->V, 0, NULL, unit_buf->XY, NULL, NULL); + + B += 128 * salt_buf->scrypt_r; + } + + scrypt_tmp++; + } + + return true; +} + +void bridge_init (bridge_ctx_t *bridge_ctx) +{ + bridge_ctx->bridge_context_size = BRIDGE_CONTEXT_SIZE_CURRENT; + bridge_ctx->bridge_interface_version = BRIDGE_INTERFACE_VERSION_CURRENT; + + bridge_ctx->platform_init = platform_init; + bridge_ctx->platform_term = platform_term; + bridge_ctx->get_unit_count = get_unit_count; + bridge_ctx->get_unit_info = get_unit_info; + bridge_ctx->get_workitem_count = get_workitem_count; + bridge_ctx->thread_init = BRIDGE_DEFAULT; + bridge_ctx->thread_term = BRIDGE_DEFAULT; + bridge_ctx->salt_prepare = salt_prepare; + bridge_ctx->salt_destroy = salt_destroy; + bridge_ctx->launch_loop = launch_loop; + bridge_ctx->launch_loop2 = BRIDGE_DEFAULT; + bridge_ctx->st_update_hash = BRIDGE_DEFAULT; + bridge_ctx->st_update_pass = BRIDGE_DEFAULT; +} diff --git a/src/bridges/bridge_scrypt_yescrypt.mk b/src/bridges/bridge_scrypt_yescrypt.mk new file mode 100644 index 000000000..046450a33 --- /dev/null +++ b/src/bridges/bridge_scrypt_yescrypt.mk @@ -0,0 +1,30 @@ + +SCRYPT_YESCRYPT := deps/yescrypt-master +SCRYPT_YESCRYPT_CFLAGS := -I$(SCRYPT_YESCRYPT)/ -DSKIP_MEMZERO -Wno-cpp -Wno-type-limits + +ifeq ($(BUILD_MODE),cross) +SCRYPT_YESCRYPT_CFLAGS += -mavx2 +else +ifeq ($(UNAME),Darwin) +ifeq ($(IS_APPLE_SILICON),0) +SCRYPT_YESCRYPT_CFLAGS += -mavx2 +endif +else +SCRYPT_YESCRYPT_CFLAGS += -march=native +endif +endif + +ifeq ($(BUILD_MODE),cross) +bridges/bridge_scrypt_yescrypt.so: src/bridges/bridge_scrypt_yescrypt.c src/cpu_features.c $(SCRYPT_YESCRYPT)/yescrypt-opt.c $(SCRYPT_YESCRYPT)/sha256.c obj/combined.LINUX.a + $(CC_LINUX) $(CCFLAGS) $(CFLAGS_CROSS_LINUX) $^ -o $@ $(LFLAGS_CROSS_LINUX) -shared -fPIC -D BRIDGE_INTERFACE_VERSION_CURRENT=$(BRIDGE_INTERFACE_VERSION) $(SCRYPT_YESCRYPT_CFLAGS) +bridges/bridge_scrypt_yescrypt.dll: src/bridges/bridge_scrypt_yescrypt.c src/cpu_features.c $(SCRYPT_YESCRYPT)/yescrypt-opt.c $(SCRYPT_YESCRYPT)/sha256.c obj/combined.WIN.a + $(CC_WIN) $(CCFLAGS) $(CFLAGS_CROSS_WIN) $^ -o $@ $(LFLAGS_CROSS_WIN) -shared -fPIC -D BRIDGE_INTERFACE_VERSION_CURRENT=$(BRIDGE_INTERFACE_VERSION) $(SCRYPT_YESCRYPT_CFLAGS) +else +ifeq ($(SHARED),1) +bridges/bridge_scrypt_yescrypt.$(BRIDGE_SUFFIX): src/bridges/bridge_scrypt_yescrypt.c src/cpu_features.c $(SCRYPT_YESCRYPT)/yescrypt-opt.c $(SCRYPT_YESCRYPT)/sha256.c $(HASHCAT_LIBRARY) + $(CC) $(CCFLAGS) $(CFLAGS_NATIVE) $^ -o $@ $(LFLAGS_NATIVE) -shared -fPIC -D BRIDGE_INTERFACE_VERSION_CURRENT=$(BRIDGE_INTERFACE_VERSION) $(SCRYPT_YESCRYPT_CFLAGS) +else +bridges/bridge_scrypt_yescrypt.$(BRIDGE_SUFFIX): src/bridges/bridge_scrypt_yescrypt.c src/cpu_features.c $(SCRYPT_YESCRYPT)/yescrypt-opt.c $(SCRYPT_YESCRYPT)/sha256.c obj/combined.NATIVE.a + $(CC) $(CCFLAGS) $(CFLAGS_NATIVE) $^ -o $@ $(LFLAGS_NATIVE) -shared -fPIC -D BRIDGE_INTERFACE_VERSION_CURRENT=$(BRIDGE_INTERFACE_VERSION) $(SCRYPT_YESCRYPT_CFLAGS) +endif +endif diff --git a/src/cpu_features.c b/src/cpu_features.c new file mode 100644 index 000000000..cf00a8438 --- /dev/null +++ b/src/cpu_features.c @@ -0,0 +1,192 @@ +/** + * Author......: See docs/credits.txt + * License.....: MIT + */ + +#include "common.h" +#include "types.h" +#include "cpu_features.h" + +#if defined(__aarch64__) || defined(__arm64__) + +int cpu_supports_sse2 () { return 1; } +int cpu_supports_ssse3 () { return 0; } +int cpu_supports_xop () { return 0; } +int cpu_supports_avx2 () { return 0; } +int cpu_supports_avx512f () { return 0; } +int cpu_supports_avx512vl () { return 0; } + +#else +static inline void cpuid (u32 leaf, u32 subleaf, u32 *eax, u32 *ebx, u32 *ecx, u32 *edx) +{ + __cpuid_count (leaf, subleaf, *eax, *ebx, *ecx, *edx); +} + +static inline u64 xgetbv (u32 index) +{ + u32 eax, edx; + + __asm__ volatile (".byte 0x0f, 0x01, 0xd0" + : "=a"(eax), "=d"(edx) + : "c"(index)); + + return ((u64)edx << 32) | eax; +} + +// Should always be present on 64 bit? +int cpu_supports_sse2 () +{ + u32 eax, ebx, ecx, edx; + + cpuid (1, 0, &eax, &ebx, &ecx, &edx); + + return (edx & bit_SSE2) != 0; +} + +int cpu_supports_ssse3 () +{ + u32 eax, ebx, ecx, edx; + + cpuid (1, 0, &eax, &ebx, &ecx, &edx); + + return (ecx & bit_SSSE3) != 0; +} + +int cpu_supports_xop () +{ + u32 eax, ebx, ecx, edx; + + cpuid (0x80000000, 0, &eax, &ebx, &ecx, &edx); + + if (eax < 0x80000001) + { + return 0; + } + + cpuid (0x80000001, 0, &eax, &ebx, &ecx, &edx); + + return (ecx & (1 << 11)) != 0; // No macro for XOP +} + +int cpu_supports_avx2 () +{ + u32 eax, ebx, ecx, edx; + + cpuid (1, 0, &eax, &ebx, &ecx, &edx); + + if (!(ecx & bit_OSXSAVE) || !(ecx & bit_AVX)) + { + return 0; + } + + if ((xgetbv(0) & 0x6) != 0x6) // XMM and YMM state + { + return 0; + } + + cpuid (7, 0, &eax, &ebx, &ecx, &edx); + + return (ebx & bit_AVX2) != 0; +} + +int cpu_supports_avx512f () +{ + u32 eax, ebx, ecx, edx; + + cpuid (1, 0, &eax, &ebx, &ecx, &edx); + + if (!(ecx & bit_OSXSAVE) || !(ecx & bit_AVX)) + { + return 0; + } + + if ((xgetbv(0) & 0xE6) != 0xE6) + { + return 0; + } + + cpuid (7, 0, &eax, &ebx, &ecx, &edx); + + return (ebx & bit_AVX512F) != 0; +} + +int cpu_supports_avx512vl () +{ + u32 eax, ebx, ecx, edx; + + cpuid (1, 0, &eax, &ebx, &ecx, &edx); + + if (!(ecx & bit_OSXSAVE) || !(ecx & bit_AVX)) + { + return 0; + } + + if ((xgetbv(0) & 0xE6) != 0xE6) + { + return 0; + } + + cpuid (7, 0, &eax, &ebx, &ecx, &edx); + + return (ebx & (1u << 31)) != 0; +} +#endif + +int cpu_chipset_test () +{ + #ifdef __SSE2__ + if (cpu_supports_sse2 () == 0) + { + fprintf (stderr, "ERROR: Compiled with SSE2 but CPU does not support it.\n"); + + return -1; + } + #endif + + #ifdef __SSSE3__ + if (cpu_supports_ssse3 () == 0) + { + fprintf (stderr, "ERROR: Compiled with SSSE3 but CPU does not support it.\n"); + + return -1; + } + #endif + + #ifdef __XOP__ + if (cpu_supports_xop () == 0) + { + fprintf (stderr, "ERROR: Compiled with XOP but CPU does not support it.\n"); + + return -1; + } + #endif + + #ifdef __AVX2__ + if (cpu_supports_avx2 () == 0) + { + fprintf (stderr, "ERROR: Compiled with AVX2 but CPU does not support it.\n"); + + return -1; + } + #endif + + #ifdef __AVX512F__ + if (cpu_supports_avx512f () == 0) + { + fprintf (stderr, "ERROR: Compiled with AVX512F but CPU does not support it.\n"); + + return -1; + } + #endif + + #ifdef __AVX512VL__ + if (cpu_supports_avx512vl () == 0) + { + fprintf (stderr, "ERROR: Compiled with AVX512VL but CPU does not support it.\n"); + + return -1; + } + #endif + + return 0; +} diff --git a/src/dispatch.c b/src/dispatch.c index fdb0b441d..ad7c9851b 100644 --- a/src/dispatch.c +++ b/src/dispatch.c @@ -355,6 +355,9 @@ HC_API_CALL void *thread_calc_stdin (void *p) hashcat_ctx_t *hashcat_ctx = thread_param->hashcat_ctx; backend_ctx_t *backend_ctx = hashcat_ctx->backend_ctx; + bridge_ctx_t *bridge_ctx = hashcat_ctx->bridge_ctx; + hashconfig_t *hashconfig = hashcat_ctx->hashconfig; + hashes_t *hashes = hashcat_ctx->hashes; if (backend_ctx->enabled == false) return NULL; @@ -363,6 +366,14 @@ HC_API_CALL void *thread_calc_stdin (void *p) if (device_param->skipped) return NULL; if (device_param->skipped_warning == true) return NULL; + if (bridge_ctx->enabled == true) + { + if (bridge_ctx->thread_init != BRIDGE_DEFAULT) + { + if (bridge_ctx->thread_init (bridge_ctx->platform_context, device_param, hashconfig, hashes) == false) return NULL; + } + } + if (device_param->is_cuda == true) { if (hc_cuCtxPushCurrent (hashcat_ctx, device_param->cuda_context) == -1) return NULL; @@ -390,6 +401,14 @@ HC_API_CALL void *thread_calc_stdin (void *p) if (hc_hipCtxPopCurrent (hashcat_ctx, &device_param->hip_context) == -1) return NULL; } + if (bridge_ctx->enabled == true) + { + if (bridge_ctx->thread_term != BRIDGE_DEFAULT) + { + bridge_ctx->thread_term (bridge_ctx->platform_context, device_param, hashconfig, hashes); + } + } + return NULL; } @@ -1640,6 +1659,9 @@ HC_API_CALL void *thread_calc (void *p) hashcat_ctx_t *hashcat_ctx = thread_param->hashcat_ctx; backend_ctx_t *backend_ctx = hashcat_ctx->backend_ctx; + bridge_ctx_t *bridge_ctx = hashcat_ctx->bridge_ctx; + hashconfig_t *hashconfig = hashcat_ctx->hashconfig; + hashes_t *hashes = hashcat_ctx->hashes; if (backend_ctx->enabled == false) return NULL; @@ -1648,6 +1670,14 @@ HC_API_CALL void *thread_calc (void *p) if (device_param->skipped) return NULL; if (device_param->skipped_warning == true) return NULL; + if (bridge_ctx->enabled == true) + { + if (bridge_ctx->thread_init != BRIDGE_DEFAULT) + { + if (bridge_ctx->thread_init (bridge_ctx->platform_context, device_param, hashconfig, hashes) == false) return NULL; + } + } + if (device_param->is_cuda == true) { if (hc_cuCtxPushCurrent (hashcat_ctx, device_param->cuda_context) == -1) return NULL; @@ -1675,5 +1705,13 @@ HC_API_CALL void *thread_calc (void *p) if (hc_hipCtxPopCurrent (hashcat_ctx, &device_param->hip_context) == -1) return NULL; } + if (bridge_ctx->enabled == true) + { + if (bridge_ctx->thread_term != BRIDGE_DEFAULT) + { + bridge_ctx->thread_term (bridge_ctx->platform_context, device_param, hashconfig, hashes); + } + } + return NULL; } diff --git a/src/ext_cuda.c b/src/ext_cuda.c index dbafa065e..4c0db9ffb 100644 --- a/src/ext_cuda.c +++ b/src/ext_cuda.c @@ -107,6 +107,9 @@ int cuda_init (void *hashcat_ctx) HC_LOAD_FUNC_CUDA (cuda, cuStreamDestroy, cuStreamDestroy_v2, CUDA_CUSTREAMDESTROY, CUDA, 1); HC_LOAD_FUNC_CUDA (cuda, cuStreamSynchronize, cuStreamSynchronize, CUDA_CUSTREAMSYNCHRONIZE, CUDA, 1); HC_LOAD_FUNC_CUDA (cuda, cuStreamWaitEvent, cuStreamWaitEvent, CUDA_CUSTREAMWAITEVENT, CUDA, 1); + HC_LOAD_FUNC_CUDA (cuda, cuStreamWaitEvent, cuStreamWaitEvent, CUDA_CUSTREAMWAITEVENT, CUDA, 1); + HC_LOAD_FUNC_CUDA (cuda, cuOccupancyMaxActiveBlocksPerMultiprocessor, cuOccupancyMaxActiveBlocksPerMultiprocessor, CUDA_CUOCCUPANCYMAXBLOCKSPERMULTIPROCESSOR, CUDA, 1); + #if defined (WITH_CUBIN) HC_LOAD_FUNC_CUDA (cuda, cuLinkCreate, cuLinkCreate_v2, CUDA_CULINKCREATE, CUDA, 1); HC_LOAD_FUNC_CUDA (cuda, cuLinkAddData, cuLinkAddData_v2, CUDA_CULINKADDDATA, CUDA, 1); @@ -1269,3 +1272,31 @@ int hc_cuLinkComplete (void *hashcat_ctx, CUlinkState state, void **cubinOut, si return 0; } + +int hc_cuOccupancyMaxActiveBlocksPerMultiprocessor (void *hashcat_ctx, int *numBlocks, CUfunction func, int blockSize, size_t dynamicSMemSize) +{ + backend_ctx_t *backend_ctx = ((hashcat_ctx_t *) hashcat_ctx)->backend_ctx; + + CUDA_PTR *cuda = (CUDA_PTR *) backend_ctx->cuda; + + const CUresult CU_err = cuda->cuOccupancyMaxActiveBlocksPerMultiprocessor (numBlocks, func, blockSize, dynamicSMemSize); + + if (CU_err != CUDA_SUCCESS) + { + const char *pStr = NULL; + + if (cuda->cuGetErrorString (CU_err, &pStr) == CUDA_SUCCESS) + { + event_log_error (hashcat_ctx, "cuOccupancyMaxActiveBlocksPerMultiprocessor(): %s", pStr); + } + else + { + event_log_error (hashcat_ctx, "cuOccupancyMaxActiveBlocksPerMultiprocessor(): %d", CU_err); + } + + return -1; + } + + return 0; +} + diff --git a/src/ext_hip.c b/src/ext_hip.c index 95bec69e1..c0145504b 100644 --- a/src/ext_hip.c +++ b/src/ext_hip.c @@ -8,9 +8,39 @@ #include "memory.h" #include "event.h" #include "ext_hip.h" +#include "shared.h" #include "dynloader.h" +char *hipDllPath (char *hipSDKPath) +{ + /* + AMD HIP DLLs is stored at "C:\Program Files\ROCm\X.Y\bin\amdhip64_X.dll" + + This function can return complete dll path based on major release version + X.Y parsed from the ENV variable HIP_PATH. + */ + + const char *marker = "\\ROCm\\"; + + int major = 0; + int minor = 0; + + const char *version_start = strstr (hipSDKPath, marker); + + if (version_start == NULL) return NULL; + + version_start += strlen (marker); // now points at "6.2\\" + + if (sscanf (version_start, "%d.%d", &major, &minor) != 2) return NULL; + + char *hipdllpath = NULL; + + hc_asprintf (&hipdllpath, "%sbin\\amdhip64_%d.dll", hipSDKPath, major); + + return (hipdllpath); +} + int hip_init (void *hashcat_ctx) { backend_ctx_t *backend_ctx = ((hashcat_ctx_t *) hashcat_ctx)->backend_ctx; @@ -20,11 +50,43 @@ int hip_init (void *hashcat_ctx) memset (hip, 0, sizeof (HIP_PTR)); #if defined (_WIN) - hip->lib = hc_dlopen ("amdhip64.dll"); + char *hipSDKPath = getenv ("HIP_PATH"); + + if (hipSDKPath == NULL) return -1; + + char *hipdllpath = hipDllPath (hipSDKPath); + + if (hipdllpath == NULL) return -1; + + hip->lib = hc_dlopen (hipdllpath); + + free (hipdllpath); + + if (hip->lib == NULL) + { + hip->lib = hc_dlopen ("amdhip64.dll"); + } + #elif defined (__APPLE__) hip->lib = hc_dlopen ("fixme.dylib"); #elif defined (__CYGWIN__) - hip->lib = hc_dlopen ("amdhip64.dll"); + char *hipSDKPath = getenv ("HIP_PATH"); + + if (hipSDKPath == NULL) return -1; + + char *hipdllpath = hipDllPath (hipSDKPath); + + if (hipdllpath == NULL) return -1; + + hip->lib = hc_dlopen (hipdllpath); + + free (hipdllpath); + + if (hip->lib == NULL) + { + hip->lib = hc_dlopen ("amdhip64.dll"); + } + #else hip->lib = hc_dlopen ("libamdhip64.so"); #endif @@ -92,6 +154,8 @@ int hip_init (void *hashcat_ctx) HC_LOAD_FUNC_HIP (hip, hipStreamCreate, hipStreamCreate, HIP_HIPSTREAMCREATE, HIP, 1); HC_LOAD_FUNC_HIP (hip, hipStreamDestroy, hipStreamDestroy, HIP_HIPSTREAMDESTROY, HIP, 1); HC_LOAD_FUNC_HIP (hip, hipStreamSynchronize, hipStreamSynchronize, HIP_HIPSTREAMSYNCHRONIZE, HIP, 1); + HC_LOAD_FUNC_HIP (hip, hipGetDeviceProperties, hipGetDevicePropertiesR0600, HIP_HIPGETDEVICEPROPERTIES, HIP, 1); + HC_LOAD_FUNC_HIP (hip, hipModuleOccupancyMaxActiveBlocksPerMultiprocessor, hipModuleOccupancyMaxActiveBlocksPerMultiprocessor, HIP_HIPMODULEOCCUPANCYMAXACTIVEBLOCKSPERMULTIPROCESSOR, HIP, 1); return 0; } @@ -1086,3 +1150,57 @@ int hc_hipStreamSynchronize (void *hashcat_ctx, hipStream_t hStream) return 0; } + +int hc_hipGetDeviceProperties (void *hashcat_ctx, hipDeviceProp_t *prop, hipDevice_t dev) +{ + backend_ctx_t *backend_ctx = ((hashcat_ctx_t *) hashcat_ctx)->backend_ctx; + + HIP_PTR *hip = (HIP_PTR *) backend_ctx->hip; + + const hipError_t HIP_err = hip->hipGetDeviceProperties (prop, dev); + + if (HIP_err != hipSuccess) + { + const char *pStr = NULL; + + if (hip->hipGetErrorString (HIP_err, &pStr) == hipSuccess) + { + event_log_error (hashcat_ctx, "hipDeviceGetAttribute(): %s", pStr); + } + else + { + event_log_error (hashcat_ctx, "hipDeviceGetAttribute(): %d", HIP_err); + } + + return -1; + } + + return 0; +} + +int hc_hipModuleOccupancyMaxActiveBlocksPerMultiprocessor (void *hashcat_ctx, int *numBlocks, hipFunction_t f, int blockSize, size_t dynSharedMemPerBlk) +{ + backend_ctx_t *backend_ctx = ((hashcat_ctx_t *) hashcat_ctx)->backend_ctx; + + HIP_PTR *hip = (HIP_PTR *) backend_ctx->hip; + + const hipError_t HIP_err = hip->hipModuleOccupancyMaxActiveBlocksPerMultiprocessor (numBlocks, f, blockSize, dynSharedMemPerBlk); + + if (HIP_err != hipSuccess) + { + const char *pStr = NULL; + + if (hip->hipGetErrorString (HIP_err, &pStr) == hipSuccess) + { + event_log_error (hashcat_ctx, "hipModuleOccupancyMaxActiveBlocksPerMultiprocessor(): %s", pStr); + } + else + { + event_log_error (hashcat_ctx, "hipModuleOccupancyMaxActiveBlocksPerMultiprocessor(): %d", HIP_err); + } + + return -1; + } + + return 0; +} diff --git a/src/ext_hiprtc.c b/src/ext_hiprtc.c index ad7d14be9..9a228273c 100644 --- a/src/ext_hiprtc.c +++ b/src/ext_hiprtc.c @@ -8,9 +8,39 @@ #include "memory.h" #include "event.h" #include "ext_hiprtc.h" +#include "shared.h" #include "dynloader.h" +char* hiprtcDllPath(char* hipSDKPath) +{ + /* + AMD HIP RTC DLLs is stored at "C:\Program Files\ROCm\X.Y\bin\hiprtc0X0Y.dll" + + This function can return complete dll path based on major release version + X.Y parsed from the ENV variable HIP_PATH. + */ + + const char *marker = "\\ROCm\\"; + + int major = 0; + int minor = 0; + + const char *version_start = strstr (hipSDKPath, marker); + + if (version_start == NULL) return NULL; + + version_start += strlen (marker); // now points at "6.2\\" + + if (sscanf (version_start, "%d.%d", &major, &minor) != 2) return NULL; + + char *hiprtcdllpath = NULL; + + hc_asprintf (&hiprtcdllpath, "%s\\bin\\hiprtc%02d%02d.dll", hipSDKPath, major, minor); + + return (hiprtcdllpath); +} + int hiprtc_make_options_array_from_string (char *string, char **options) { char *saveptr = NULL; @@ -39,17 +69,31 @@ int hiprtc_init (void *hashcat_ctx) memset (hiprtc, 0, sizeof (HIPRTC_PTR)); #if defined (_WIN) - hiprtc->lib = hc_dlopen ("hiprtc.dll"); + char *hipSDKPath = getenv ("HIP_PATH"); - if (hiprtc->lib == NULL) hiprtc->lib = hc_dlopen ("C:/Program Files/AMD/ROCm/5.5/bin/hiprtc0505.dll"); - if (hiprtc->lib == NULL) hiprtc->lib = hc_dlopen ("amdhip64.dll"); + if (hipSDKPath == NULL) return -1; + + char *hiprtcdllpath = hiprtcDllPath (hipSDKPath); + + if (hiprtcdllpath == NULL) return -1; + + hiprtc->lib = hc_dlopen (hiprtcdllpath); + + free (hiprtcdllpath); #elif defined (__APPLE__) hiprtc->lib = hc_dlopen ("fixme.dylib"); #elif defined (__CYGWIN__) - hiprtc->lib = hc_dlopen ("hiprtc.dll"); + char *hipSDKPath = getenv ("HIP_PATH"); - if (hiprtc->lib == NULL) hiprtc->lib = hc_dlopen ("C:/Program Files/AMD/ROCm/5.5/bin/hiprtc0505.dll"); - if (hiprtc->lib == NULL) hiprtc->lib = hc_dlopen ("amdhip64.dll"); + if (hipSDKPath == NULL) return -1; + + char *hiprtcdllpath = hiprtcDllPath (hipSDKPath); + + if (hiprtcdllpath == NULL) return -1; + + hiprtc->lib = hc_dlopen (hiprtcdllpath); + + free (hiprtcdllpath); #else hiprtc->lib = hc_dlopen ("libhiprtc.so"); #endif diff --git a/src/ext_nvml.c b/src/ext_nvml.c index 25911df14..e6d49cd08 100644 --- a/src/ext_nvml.c +++ b/src/ext_nvml.c @@ -149,6 +149,7 @@ int nvml_init (void *hashcat_ctx) HC_LOAD_FUNC(nvml, nvmlDeviceGetCurrentClocksThrottleReasons, NVML_DEVICE_GET_CURRENTCLOCKSTHROTTLEREASONS, NVML, 0); HC_LOAD_FUNC(nvml, nvmlDeviceGetSupportedClocksThrottleReasons, NVML_DEVICE_GET_SUPPORTEDCLOCKSTHROTTLEREASONS, NVML, 0); HC_LOAD_FUNC(nvml, nvmlDeviceGetPciInfo, NVML_DEVICE_GET_PCIINFO, NVML, 0); + HC_LOAD_FUNC(nvml, nvmlDeviceGetMemoryInfo, NVML_DEVICE_GET_MEMORYINFO, NVML, 0); return 0; } @@ -392,3 +393,24 @@ int hm_NVML_nvmlDeviceGetPciInfo (void *hashcat_ctx, nvmlDevice_t device, nvmlPc return 0; } + +int hm_NVML_nvmlDeviceGetMemoryInfo (void *hashcat_ctx, nvmlDevice_t device, nvmlMemory_t *mem) +{ + hwmon_ctx_t *hwmon_ctx = ((hashcat_ctx_t *) hashcat_ctx)->hwmon_ctx; + + NVML_PTR *nvml = (NVML_PTR *) hwmon_ctx->hm_nvml; + + const nvmlReturn_t nvml_rc = nvml->nvmlDeviceGetMemoryInfo (device, mem); + + if (nvml_rc != NVML_SUCCESS) + { + const char *string = hm_NVML_nvmlErrorString (nvml, nvml_rc); + + event_log_error (hashcat_ctx, "nvmlDeviceGetMemoryInfo(): %s", string); + + return -1; + } + + return 0; +} + diff --git a/src/ext_sysfs_amdgpu.c b/src/ext_sysfs_amdgpu.c index 1aa53b210..70f071649 100644 --- a/src/ext_sysfs_amdgpu.c +++ b/src/ext_sysfs_amdgpu.c @@ -441,3 +441,55 @@ int hm_SYSFS_AMDGPU_get_gpu_busy_percent (void *hashcat_ctx, const int backend_d return 0; } + +int hm_SYSFS_AMDGPU_get_mem_info_vram_used (void *hashcat_ctx, const int backend_device_idx, u64 *val) +{ + char *syspath = hm_SYSFS_AMDGPU_get_syspath_device (hashcat_ctx, backend_device_idx); + + if (syspath == NULL) return -1; + + char *path; + + hc_asprintf (&path, "%s/mem_info_vram_used", syspath); + + hcfree (syspath); + + HCFILE fp; + + if (hc_fopen (&fp, path, "r") == false) + { + event_log_error (hashcat_ctx, "%s: %s", path, strerror (errno)); + + hcfree (path); + + return -1; + } + + u64 mem_info_vram_used = 0; + + while (!hc_feof (&fp)) + { + char buf[HCBUFSIZ_TINY]; + + char *ptr = hc_fgets (buf, sizeof (buf), &fp); + + if (ptr == NULL) continue; + + size_t len = strlen (ptr); + + if (len < 1) continue; + + int rc = sscanf (ptr, "%" PRIu64, &mem_info_vram_used); + + if (rc == 1) break; + } + + hc_fclose (&fp); + + *val = mem_info_vram_used; + + hcfree (path); + + return 0; +} + diff --git a/src/ext_sysfs_cpu.c b/src/ext_sysfs_cpu.c index 54683d741..5b89023d5 100644 --- a/src/ext_sysfs_cpu.c +++ b/src/ext_sysfs_cpu.c @@ -44,12 +44,9 @@ void sysfs_cpu_close (void *hashcat_ctx) char *hm_SYSFS_CPU_get_syspath_hwmon (void) { - char *found[4]; + char *found = NULL; - found[0] = NULL; - found[1] = NULL; - found[2] = NULL; - found[3] = NULL; + int best = 4; // 16 ok? @@ -61,31 +58,43 @@ char *hm_SYSFS_CPU_get_syspath_hwmon (void) HCFILE fp; - if (hc_fopen_raw (&fp, path, "rb") == false) continue; + if (hc_fopen_raw (&fp, path, "rb") == false) + { + hcfree (path); + + continue; + } char buf[64] = { 0 }; const size_t line_len = fgetl (&fp, buf, sizeof (buf)); - if (line_len) - { - if (strcmp (buf, SENSOR_CORETEMP) == 0) hc_asprintf (&found[0], "%s/hwmon%d", SYSFS_HWMON, i); - if (strcmp (buf, SENSOR_K10TEMP) == 0) hc_asprintf (&found[1], "%s/hwmon%d", SYSFS_HWMON, i); - if (strcmp (buf, SENSOR_K8TEMP) == 0) hc_asprintf (&found[2], "%s/hwmon%d", SYSFS_HWMON, i); - if (strcmp (buf, SENSOR_ACPITZ) == 0) hc_asprintf (&found[3], "%s/hwmon%d", SYSFS_HWMON, i); - } - hc_fclose (&fp); hcfree (path); + + if (line_len == 0) continue; + + int tmp_best = -1; + + if (strcmp (buf, SENSOR_CORETEMP) == 0) tmp_best = 0; + if (strcmp (buf, SENSOR_K10TEMP) == 0) tmp_best = 1; + if (strcmp (buf, SENSOR_K8TEMP) == 0) tmp_best = 2; + if (strcmp (buf, SENSOR_ACPITZ) == 0) tmp_best = 3; + + if (tmp_best >= 0 && tmp_best < best) + { + hcfree (found); + + best = tmp_best; + + hc_asprintf (&found, "%s/hwmon%d", SYSFS_HWMON, i); + + if (best == 0) break; + } } - if (found[0]) return found[0]; - if (found[1]) return found[1]; - if (found[2]) return found[2]; - if (found[3]) return found[3]; - - return NULL; + return found; } int hm_SYSFS_CPU_get_temperature_current (void *hashcat_ctx, int *val) diff --git a/src/filehandling.c b/src/filehandling.c index 9a2d0ea39..63fc4f908 100644 --- a/src/filehandling.c +++ b/src/filehandling.c @@ -214,7 +214,7 @@ bool hc_fopen (HCFILE *fp, const char *path, const char *mode) lookStream.buf = xfp->inBuf; lookStream.bufSize = HCFILE_BUFFER_SIZE; lookStream.realStream = &inStream->vt; - LookToRead2_Init (&lookStream); + LookToRead2_INIT (&lookStream); Xzs_Construct (&xfp->streams); Int64 offset = 0; SRes res = Xzs_ReadBackward (&xfp->streams, &lookStream.vt, &offset, NULL, alloc); diff --git a/src/hashcat.c b/src/hashcat.c index a6dd823d1..5f54fd68e 100644 --- a/src/hashcat.c +++ b/src/hashcat.c @@ -20,6 +20,7 @@ #include "autotune.h" #include "benchmark.h" #include "bitmap.h" +#include "bridges.h" #include "combinator.h" #include "cpt.h" #include "debugfile.h" @@ -727,6 +728,12 @@ static int outer_loop (hashcat_ctx_t *hashcat_ctx) if (hashes_init_selftest (hashcat_ctx) == -1) return -1; + /** + * load hashes, post automatisation + */ + + if (hashes_init_stage5 (hashcat_ctx) == -1) return -1; + /** * load hashes, benchmark */ @@ -836,6 +843,21 @@ static int outer_loop (hashcat_ctx_t *hashcat_ctx) EVENT (EVENT_POTFILE_NUM_CRACKED); + /** + * setup salts for bridges, needs to be after bridge init, but before session start + */ + + EVENT (EVENT_BRIDGES_SALT_PRE); + + if (bridges_salt_prepare (hashcat_ctx) == false) + { + event_log_error (hashcat_ctx, "Bridge salt preparation for hash-mode '%u' failed.", user_options->hash_mode); + + return -1; + } + + EVENT (EVENT_BRIDGES_SALT_POST); + /** * inform the user */ @@ -858,6 +880,8 @@ static int outer_loop (hashcat_ctx_t *hashcat_ctx) brain_ctx_destroy (hashcat_ctx); #endif + bridges_salt_destroy (hashcat_ctx); + bridges_destroy (hashcat_ctx); bitmap_ctx_destroy (hashcat_ctx); combinator_ctx_destroy (hashcat_ctx); cpt_ctx_destroy (hashcat_ctx); @@ -1034,6 +1058,8 @@ static int outer_loop (hashcat_ctx_t *hashcat_ctx) brain_ctx_destroy (hashcat_ctx); #endif + bridges_salt_destroy (hashcat_ctx); + bridges_destroy (hashcat_ctx); bitmap_ctx_destroy (hashcat_ctx); combinator_ctx_destroy (hashcat_ctx); cpt_ctx_destroy (hashcat_ctx); @@ -1065,6 +1091,7 @@ int hashcat_init (hashcat_ctx_t *hashcat_ctx, void (*event) (const u32, struct h hashcat_ctx->bitmap_ctx = (bitmap_ctx_t *) hcmalloc (sizeof (bitmap_ctx_t)); hashcat_ctx->brain_ctx = (brain_ctx_t *) hcmalloc (sizeof (brain_ctx_t)); + hashcat_ctx->bridge_ctx = (bridge_ctx_t *) hcmalloc (sizeof (bridge_ctx_t)); hashcat_ctx->combinator_ctx = (combinator_ctx_t *) hcmalloc (sizeof (combinator_ctx_t)); hashcat_ctx->cpt_ctx = (cpt_ctx_t *) hcmalloc (sizeof (cpt_ctx_t)); hashcat_ctx->debugfile_ctx = (debugfile_ctx_t *) hcmalloc (sizeof (debugfile_ctx_t)); @@ -1100,6 +1127,7 @@ void hashcat_destroy (hashcat_ctx_t *hashcat_ctx) { hcfree (hashcat_ctx->bitmap_ctx); hcfree (hashcat_ctx->brain_ctx); + hcfree (hashcat_ctx->bridge_ctx); hcfree (hashcat_ctx->combinator_ctx); hcfree (hashcat_ctx->cpt_ctx); hcfree (hashcat_ctx->debugfile_ctx); @@ -1231,7 +1259,7 @@ int hashcat_session_init (hashcat_ctx_t *hashcat_ctx, const char *install_folder * To help users a bit */ - setup_environment_variables (hashcat_ctx->folder_config); + setup_environment_variables (hashcat_ctx->folder_config, hashcat_ctx->user_options); setup_umask (); @@ -1291,18 +1319,41 @@ int hashcat_session_init (hashcat_ctx_t *hashcat_ctx, const char *install_folder if (user_options_check_files (hashcat_ctx) == -1) return -1; + /** + * Load bridge a bit too early actually, but we need to know the unit count so we can automatically configure virtualization for the user + */ + + EVENT (EVENT_BRIDGES_INIT_PRE); + + if (bridges_init (hashcat_ctx) == false) + { + event_log_error (hashcat_ctx, "Bridge initialization for hash-mode '%u' failed.", user_options->hash_mode); + + return -1; + } + + EVENT (EVENT_BRIDGES_INIT_POST); + /** * Init backend library loader */ + EVENT (EVENT_BACKEND_RUNTIMES_INIT_PRE); + if (backend_ctx_init (hashcat_ctx) == -1) return -1; + EVENT (EVENT_BACKEND_RUNTIMES_INIT_POST); + /** * Init backend devices */ + EVENT (EVENT_BACKEND_DEVICES_INIT_PRE); + if (backend_ctx_devices_init (hashcat_ctx, comptime) == -1) return -1; + EVENT (EVENT_BACKEND_DEVICES_INIT_POST); + /** * HM devices: init */ @@ -1771,6 +1822,9 @@ int hashcat_session_execute (hashcat_ctx_t *hashcat_ctx) while ((hash_mode = benchmark_next (hashcat_ctx)) != -1) { + if ((u32) hash_mode < user_options->benchmark_min) continue; + if ((u32) hash_mode > user_options->benchmark_max) continue; + user_options->hash_mode = hash_mode; rc_final = outer_loop (hashcat_ctx); diff --git a/src/hashes.c b/src/hashes.c index 9de7a95a3..78a6d5b90 100644 --- a/src/hashes.c +++ b/src/hashes.c @@ -2236,9 +2236,7 @@ int hashes_init_stage4 (hashcat_ctx_t *hashcat_ctx) { hashconfig_t *hashconfig = hashcat_ctx->hashconfig; hashes_t *hashes = hashcat_ctx->hashes; - module_ctx_t *module_ctx = hashcat_ctx->module_ctx; user_options_t *user_options = hashcat_ctx->user_options; - user_options_extra_t *user_options_extra = hashcat_ctx->user_options_extra; if (hashes->salts_cnt == 1) hashconfig->opti_type |= OPTI_TYPE_SINGLE_SALT; @@ -2283,13 +2281,19 @@ int hashes_init_stage4 (hashcat_ctx_t *hashcat_ctx) if ((hashconfig->opts_type & OPTS_TYPE_DEEP_COMP_KERNEL) == 0) { - if (hashconfig->attack_exec == ATTACK_EXEC_OUTSIDE_KERNEL) + if ((hashconfig->opts_type & OPTS_TYPE_MULTIHASH_DESPITE_ESALT) == 0) { - if (hashes->digests_cnt != hashes->salts_cnt) + if (hashconfig->attack_exec == ATTACK_EXEC_OUTSIDE_KERNEL) { - event_log_error (hashcat_ctx, "This hash-mode plugin cannot crack multiple hashes with the same salt, please select one of the hashes."); + if (hashconfig->esalt_size > 0) + { + if (hashes->digests_cnt != hashes->salts_cnt) + { + event_log_error (hashcat_ctx, "This hash-mode plugin cannot crack multiple hashes with the same salt, please select one of the hashes."); - return -1; + return -1; + } + } } } } @@ -2311,22 +2315,6 @@ int hashes_init_stage4 (hashcat_ctx_t *hashcat_ctx) } } - // time to update extra_tmp_size which is tmp_size value based on hash configuration - - if (module_ctx->module_extra_tmp_size != MODULE_DEFAULT) - { - const u64 extra_tmp_size = module_ctx->module_extra_tmp_size (hashconfig, user_options, user_options_extra, hashes); - - if (extra_tmp_size == (u64) -1) - { - event_log_error (hashcat_ctx, "Mixed hash settings are not supported."); - - return -1; - } - - hashconfig->tmp_size = extra_tmp_size; - } - // at this point we no longer need hash_t* structure hash_t *hashes_buf = hashes->hashes_buf; @@ -2362,6 +2350,96 @@ int hashes_init_stage4 (hashcat_ctx_t *hashcat_ctx) return 0; } +int hashes_init_stage5 (hashcat_ctx_t *hashcat_ctx) +{ + hashconfig_t *hashconfig = hashcat_ctx->hashconfig; + hashes_t *hashes = hashcat_ctx->hashes; + module_ctx_t *module_ctx = hashcat_ctx->module_ctx; + user_options_t *user_options = hashcat_ctx->user_options; + user_options_extra_t *user_options_extra = hashcat_ctx->user_options_extra; + + // time to update extra_tmp_size which is tmp_size value based on hash configuration + + if (module_ctx->module_extra_tmp_size != MODULE_DEFAULT) + { + const u64 extra_tmp_size = module_ctx->module_extra_tmp_size (hashconfig, user_options, user_options_extra, hashes); + + if ((extra_tmp_size & (1ULL << 62)) || (extra_tmp_size & (1ULL << 63))) + { + const u64 salt_pos = extra_tmp_size & 0xffffffff; + + char *tmp_buf = (char *) hcmalloc (HCBUFSIZ_LARGE); + + const int tmp_len = hash_encode (hashcat_ctx->hashconfig, hashcat_ctx->hashes, hashcat_ctx->module_ctx, tmp_buf, HCBUFSIZ_LARGE, salt_pos, 0); + + tmp_buf[tmp_len] = 0; + + compress_terminal_line_length (tmp_buf, 47, 6); + + char *user_hash = strdup (tmp_buf); + + if (extra_tmp_size & (1ULL << 62)) + { + strncpy (tmp_buf, hashconfig->st_hash, HCBUFSIZ_LARGE - 1); + + compress_terminal_line_length (tmp_buf, 47, 6); + + char *st_hash = strdup (tmp_buf); + + event_log_error (hashcat_ctx, "ERROR: Incompatible self-test SCRYPT configuration detected."); + + event_log_warning (hashcat_ctx, "The specified target hash:"); + event_log_warning (hashcat_ctx, " -> %s", user_hash); + event_log_warning (hashcat_ctx, "does not match the SCRYPT configuration of the self-test hash:"); + event_log_warning (hashcat_ctx, " -> %s", st_hash); + event_log_warning (hashcat_ctx, "The JIT-compiled kernel for this SCRYPT configuration may be incompatible."); + event_log_warning (hashcat_ctx, "You must disable the self-test functionality or recompile the plugin with a matching self-test hash."); + event_log_warning (hashcat_ctx, "To disable the self-test, use the --self-test-disable option."); + event_log_warning (hashcat_ctx, NULL); + + hcfree (tmp_buf); + hcfree (user_hash); + hcfree (st_hash); + + return -1; + } + + if (extra_tmp_size & (1ULL << 63)) + { + const int tmp_len = hash_encode (hashcat_ctx->hashconfig, hashcat_ctx->hashes, hashcat_ctx->module_ctx, tmp_buf, HCBUFSIZ_LARGE, 0, 0); + + tmp_buf[tmp_len] = 0; + + compress_terminal_line_length (tmp_buf, 47, 6); + + char *user_hash2 = strdup (tmp_buf); + + event_log_error (hashcat_ctx, "ERROR: Mixed SCRYPT configuration detected."); + + event_log_warning (hashcat_ctx, "The specified target hash:"); + event_log_warning (hashcat_ctx, " -> %s", user_hash); + event_log_warning (hashcat_ctx, "does not match the SCRYPT configuration of another target hash:"); + event_log_warning (hashcat_ctx, " -> %s", user_hash2); + event_log_warning (hashcat_ctx, "Please run these hashes in separate cracking sessions."); + event_log_warning (hashcat_ctx, NULL); + + hcfree (tmp_buf); + hcfree (user_hash); + hcfree (user_hash2); + + return -1; + } + + hcfree (tmp_buf); + hcfree (user_hash); + } + + hashconfig->tmp_size = extra_tmp_size; + } + + return 0; +} + int hashes_init_selftest (hashcat_ctx_t *hashcat_ctx) { folder_config_t *folder_config = hashcat_ctx->folder_config; diff --git a/src/hwmon.c b/src/hwmon.c index d18d12552..4f5264b3d 100644 --- a/src/hwmon.c +++ b/src/hwmon.c @@ -1214,20 +1214,79 @@ int hm_get_throttle_with_devices_idx (hashcat_ctx_t *hashcat_ctx, const int back return -1; } +u64 hm_get_memoryused_with_devices_idx (hashcat_ctx_t *hashcat_ctx, const int backend_device_idx) +{ + hwmon_ctx_t *hwmon_ctx = hashcat_ctx->hwmon_ctx; + backend_ctx_t *backend_ctx = hashcat_ctx->backend_ctx; + + if (hwmon_ctx->enabled == false) return 0; + + if (hwmon_ctx->hm_device[backend_device_idx].memoryused_get_supported == false) return 0; + + if ((backend_ctx->devices_param[backend_device_idx].is_opencl == true) || (backend_ctx->devices_param[backend_device_idx].is_hip == true) || (backend_ctx->devices_param[backend_device_idx].is_cuda == true)) + { + if (backend_ctx->devices_param[backend_device_idx].opencl_device_type & CL_DEVICE_TYPE_GPU) + { + if ((backend_ctx->devices_param[backend_device_idx].opencl_device_vendor_id == VENDOR_ID_AMD) || (backend_ctx->devices_param[backend_device_idx].opencl_device_vendor_id == VENDOR_ID_AMD_USE_HIP)) + { + if (hwmon_ctx->hm_sysfs_amdgpu) + { + u64 used = 0; + + if (hm_SYSFS_AMDGPU_get_mem_info_vram_used (hashcat_ctx, backend_device_idx, &used) == -1) + { + hwmon_ctx->hm_device[backend_device_idx].memoryused_get_supported = false; + + return 0; + } + + return used; + } + } + + if (backend_ctx->devices_param[backend_device_idx].opencl_device_vendor_id == VENDOR_ID_NV) + { + if (hwmon_ctx->hm_nvml) + { + nvmlMemory_t mem; + + if (hm_NVML_nvmlDeviceGetMemoryInfo (hashcat_ctx, hwmon_ctx->hm_device[backend_device_idx].nvml, &mem) == -1) + { + hwmon_ctx->hm_device[backend_device_idx].memoryused_get_supported = false; + + return 0; + } + + return mem.used; + } + } + } + } + + hwmon_ctx->hm_device[backend_device_idx].memoryused_get_supported = false; + + return 0; +} + int hwmon_ctx_init (hashcat_ctx_t *hashcat_ctx) { + bridge_ctx_t *bridge_ctx = hashcat_ctx->bridge_ctx; hwmon_ctx_t *hwmon_ctx = hashcat_ctx->hwmon_ctx; backend_ctx_t *backend_ctx = hashcat_ctx->backend_ctx; user_options_t *user_options = hashcat_ctx->user_options; hwmon_ctx->enabled = false; - #if !defined (WITH_HWMON) - return 0; - #endif // WITH_HWMON + int backend_devices_cnt = backend_ctx->backend_devices_cnt; + + if (bridge_ctx->enabled == true) backend_devices_cnt = 1; + + //#if !defined (WITH_HWMON) + //return 0; + //#endif // WITH_HWMON if (user_options->usage > 0) return 0; - if (user_options->backend_info > 0) return 0; + //if (user_options->backend_info > 0) return 0; if (user_options->hash_info == true) return 0; if (user_options->keyspace == true) return 0; @@ -1236,7 +1295,9 @@ int hwmon_ctx_init (hashcat_ctx_t *hashcat_ctx) if (user_options->stdout_flag == true) return 0; if (user_options->version == true) return 0; if (user_options->identify == true) return 0; - if (user_options->hwmon == false) return 0; + //we need hwmon support to get free memory per device support + //its a joke, but there's no way around + //if (user_options->hwmon == false) return 0; hwmon_ctx->hm_device = (hm_attrs_t *) hccalloc (DEVICES_MAX, sizeof (hm_attrs_t)); @@ -1352,7 +1413,7 @@ int hwmon_ctx_init (hashcat_ctx_t *hashcat_ctx) int tmp_in = hm_get_adapter_index_nvml (hashcat_ctx, nvmlGPUHandle); - for (int backend_devices_idx = 0; backend_devices_idx < backend_ctx->backend_devices_cnt; backend_devices_idx++) + for (int backend_devices_idx = 0; backend_devices_idx < backend_devices_cnt; backend_devices_idx++) { hc_device_param_t *device_param = &backend_ctx->devices_param[backend_devices_idx]; @@ -1382,6 +1443,7 @@ int hwmon_ctx_init (hashcat_ctx_t *hashcat_ctx) hm_adapters_nvml[device_id].threshold_shutdown_get_supported = true; hm_adapters_nvml[device_id].threshold_slowdown_get_supported = true; hm_adapters_nvml[device_id].utilization_get_supported = true; + hm_adapters_nvml[device_id].memoryused_get_supported = true; } } } @@ -1414,6 +1476,7 @@ int hwmon_ctx_init (hashcat_ctx_t *hashcat_ctx) hm_adapters_nvml[device_id].threshold_shutdown_get_supported = true; hm_adapters_nvml[device_id].threshold_slowdown_get_supported = true; hm_adapters_nvml[device_id].utilization_get_supported = true; + hm_adapters_nvml[device_id].memoryused_get_supported = true; } } } @@ -1431,7 +1494,7 @@ int hwmon_ctx_init (hashcat_ctx_t *hashcat_ctx) int tmp_in = hm_get_adapter_index_nvapi (hashcat_ctx, nvGPUHandle); - for (int backend_devices_idx = 0; backend_devices_idx < backend_ctx->backend_devices_cnt; backend_devices_idx++) + for (int backend_devices_idx = 0; backend_devices_idx < backend_devices_cnt; backend_devices_idx++) { hc_device_param_t *device_param = &backend_ctx->devices_param[backend_devices_idx]; @@ -1522,7 +1585,7 @@ int hwmon_ctx_init (hashcat_ctx_t *hashcat_ctx) return -1; } - for (int backend_devices_idx = 0; backend_devices_idx < backend_ctx->backend_devices_cnt; backend_devices_idx++) + for (int backend_devices_idx = 0; backend_devices_idx < backend_devices_cnt; backend_devices_idx++) { hc_device_param_t *device_param = &backend_ctx->devices_param[backend_devices_idx]; @@ -1580,7 +1643,7 @@ int hwmon_ctx_init (hashcat_ctx_t *hashcat_ctx) { if (true) { - for (int backend_devices_idx = 0; backend_devices_idx < backend_ctx->backend_devices_cnt; backend_devices_idx++) + for (int backend_devices_idx = 0; backend_devices_idx < backend_devices_cnt; backend_devices_idx++) { hc_device_param_t *device_param = &backend_ctx->devices_param[backend_devices_idx]; @@ -1635,6 +1698,7 @@ int hwmon_ctx_init (hashcat_ctx_t *hashcat_ctx) hm_adapters_sysfs_amdgpu[device_id].memoryspeed_get_supported = true; hm_adapters_sysfs_amdgpu[device_id].temperature_get_supported = true; hm_adapters_sysfs_amdgpu[device_id].utilization_get_supported = true; + hm_adapters_sysfs_amdgpu[device_id].memoryused_get_supported = true; } } } @@ -1645,7 +1709,7 @@ int hwmon_ctx_init (hashcat_ctx_t *hashcat_ctx) { if (true) { - for (int backend_devices_idx = 0; backend_devices_idx < backend_ctx->backend_devices_cnt; backend_devices_idx++) + for (int backend_devices_idx = 0; backend_devices_idx < backend_devices_cnt; backend_devices_idx++) { hc_device_param_t *device_param = &backend_ctx->devices_param[backend_devices_idx]; @@ -1708,7 +1772,7 @@ int hwmon_ctx_init (hashcat_ctx_t *hashcat_ctx) * HM devices: copy */ - for (int backend_devices_idx = 0; backend_devices_idx < backend_ctx->backend_devices_cnt; backend_devices_idx++) + for (int backend_devices_idx = 0; backend_devices_idx < backend_devices_cnt; backend_devices_idx++) { hc_device_param_t *device_param = &backend_ctx->devices_param[backend_devices_idx]; @@ -1741,6 +1805,7 @@ int hwmon_ctx_init (hashcat_ctx_t *hashcat_ctx) hwmon_ctx->hm_device[backend_devices_idx].threshold_slowdown_get_supported |= hm_adapters_nvml[device_id].threshold_slowdown_get_supported; hwmon_ctx->hm_device[backend_devices_idx].throttle_get_supported |= hm_adapters_nvml[device_id].throttle_get_supported; hwmon_ctx->hm_device[backend_devices_idx].utilization_get_supported |= hm_adapters_nvml[device_id].utilization_get_supported; + hwmon_ctx->hm_device[backend_devices_idx].memoryused_get_supported |= hm_adapters_nvml[device_id].memoryused_get_supported; } if (hwmon_ctx->hm_nvapi) @@ -1870,6 +1935,7 @@ int hwmon_ctx_init (hashcat_ctx_t *hashcat_ctx) hwmon_ctx->hm_device[backend_devices_idx].threshold_slowdown_get_supported |= hm_adapters_sysfs_amdgpu[device_id].threshold_slowdown_get_supported; hwmon_ctx->hm_device[backend_devices_idx].throttle_get_supported |= hm_adapters_sysfs_amdgpu[device_id].throttle_get_supported; hwmon_ctx->hm_device[backend_devices_idx].utilization_get_supported |= hm_adapters_sysfs_amdgpu[device_id].utilization_get_supported; + hwmon_ctx->hm_device[backend_devices_idx].memoryused_get_supported |= hm_adapters_sysfs_amdgpu[device_id].memoryused_get_supported; } } @@ -1890,6 +1956,7 @@ int hwmon_ctx_init (hashcat_ctx_t *hashcat_ctx) hwmon_ctx->hm_device[backend_devices_idx].threshold_slowdown_get_supported |= hm_adapters_nvml[device_id].threshold_slowdown_get_supported; hwmon_ctx->hm_device[backend_devices_idx].throttle_get_supported |= hm_adapters_nvml[device_id].throttle_get_supported; hwmon_ctx->hm_device[backend_devices_idx].utilization_get_supported |= hm_adapters_nvml[device_id].utilization_get_supported; + hwmon_ctx->hm_device[backend_devices_idx].memoryused_get_supported |= hm_adapters_nvml[device_id].memoryused_get_supported; } if (hwmon_ctx->hm_nvapi) @@ -1922,6 +1989,7 @@ int hwmon_ctx_init (hashcat_ctx_t *hashcat_ctx) hm_get_threshold_slowdown_with_devices_idx (hashcat_ctx, backend_devices_idx); hm_get_throttle_with_devices_idx (hashcat_ctx, backend_devices_idx); hm_get_utilization_with_devices_idx (hashcat_ctx, backend_devices_idx); + hm_get_memoryused_with_devices_idx (hashcat_ctx, backend_devices_idx); } FREE_ADAPTERS; diff --git a/src/interface.c b/src/interface.c index 691e2931b..3c9c7ed2d 100644 --- a/src/interface.c +++ b/src/interface.c @@ -87,6 +87,7 @@ void module_unload (module_ctx_t *module_ctx) int hashconfig_init (hashcat_ctx_t *hashcat_ctx) { const backend_ctx_t *backend_ctx = hashcat_ctx->backend_ctx; + const bridge_ctx_t *bridge_ctx = hashcat_ctx->bridge_ctx; const folder_config_t *folder_config = hashcat_ctx->folder_config; hashconfig_t *hashconfig = hashcat_ctx->hashconfig; module_ctx_t *module_ctx = hashcat_ctx->module_ctx; @@ -153,6 +154,8 @@ int hashconfig_init (hashcat_ctx_t *hashcat_ctx) CHECK_DEFINED (module_ctx->module_benchmark_mask); CHECK_DEFINED (module_ctx->module_benchmark_charset); CHECK_DEFINED (module_ctx->module_benchmark_salt); + CHECK_DEFINED (module_ctx->module_bridge_name); + CHECK_DEFINED (module_ctx->module_bridge_type); CHECK_DEFINED (module_ctx->module_build_plain_postprocess); CHECK_DEFINED (module_ctx->module_deep_comp_kernel); CHECK_DEFINED (module_ctx->module_deprecated_notice); @@ -333,6 +336,11 @@ int hashconfig_init (hashcat_ctx_t *hashcat_ctx) } } + if (hashconfig->attack_exec == ATTACK_EXEC_OUTSIDE_KERNEL) + { + hashconfig->opts_type |= OPTS_TYPE_INIT | OPTS_TYPE_LOOP | OPTS_TYPE_COMP; + } + hashconfig->has_optimized_kernel = false; hashconfig->has_pure_kernel = false; @@ -464,6 +472,8 @@ int hashconfig_init (hashcat_ctx_t *hashcat_ctx) if (module_ctx->module_kernel_loops_max != MODULE_DEFAULT) hashconfig->kernel_loops_max = module_ctx->module_kernel_loops_max (hashconfig, user_options, user_options_extra); if (module_ctx->module_kernel_threads_min != MODULE_DEFAULT) hashconfig->kernel_threads_min = module_ctx->module_kernel_threads_min (hashconfig, user_options, user_options_extra); if (module_ctx->module_kernel_threads_max != MODULE_DEFAULT) hashconfig->kernel_threads_max = module_ctx->module_kernel_threads_max (hashconfig, user_options, user_options_extra); + if (module_ctx->module_bridge_name != MODULE_DEFAULT) hashconfig->bridge_name = module_ctx->module_bridge_name (hashconfig, user_options, user_options_extra); + if (module_ctx->module_bridge_type != MODULE_DEFAULT) hashconfig->bridge_type = module_ctx->module_bridge_type (hashconfig, user_options, user_options_extra); if (hashconfig->hook_extra_param_size) { @@ -495,6 +505,28 @@ int hashconfig_init (hashcat_ctx_t *hashcat_ctx) } } + // bridges have some serious impact on hashconfig + if (hashconfig->bridge_type & BRIDGE_TYPE_REPLACE_LOOP) + { + hashconfig->opts_type &= ~OPTS_TYPE_LOOP; + + hashconfig->bridge_type |= BRIDGE_TYPE_LAUNCH_LOOP; + } + + if (hashconfig->bridge_type & BRIDGE_TYPE_REPLACE_LOOP2) + { + hashconfig->opts_type &= ~OPTS_TYPE_LOOP2; + + hashconfig->bridge_type |= BRIDGE_TYPE_LAUNCH_LOOP2; + } + + // selftest bridge update + if (hashconfig->bridge_type & BRIDGE_TYPE_UPDATE_SELFTEST) + { + if (bridge_ctx->st_update_hash) hashconfig->st_hash = bridge_ctx->st_update_hash (bridge_ctx->platform_context); + if (bridge_ctx->st_update_pass) hashconfig->st_pass = bridge_ctx->st_update_pass (bridge_ctx->platform_context); + } + return 0; } @@ -548,7 +580,7 @@ void hashconfig_destroy (hashcat_ctx_t *hashcat_ctx) const char *default_benchmark_mask (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { - const char *mask = "?b?b?b?b?b?b?b"; + const char *mask = "?a?a?a?a?a?a?a"; return mask; } diff --git a/src/keyboard_layout.c b/src/keyboard_layout.c index 18e338038..83a85a847 100644 --- a/src/keyboard_layout.c +++ b/src/keyboard_layout.c @@ -15,7 +15,10 @@ static int sort_by_src_len (const void *p1, const void *p2) const keyboard_layout_mapping_t *k1 = (const keyboard_layout_mapping_t *) p1; const keyboard_layout_mapping_t *k2 = (const keyboard_layout_mapping_t *) p2; - return k1->src_len < k2->src_len; + if (k1->src_len < k2->src_len) return 1; + if (k1->src_len > k2->src_len) return -1; + + return 0; } bool initialize_keyboard_layout_mapping (const char *filename, keyboard_layout_mapping_t *keyboard_layout_mapping, int *keyboard_layout_mapping_cnt) diff --git a/src/locking.c b/src/locking.c index 8918101a2..492350bab 100644 --- a/src/locking.c +++ b/src/locking.c @@ -20,9 +20,18 @@ int hc_lockfile (HCFILE *fp) lock.l_type = F_WRLCK; - /* Needs this loop because a signal may interrupt a wait for lock */ while (fcntl (fp->fd, F_SETLKW, &lock)) { + // These shouldn't happen with F_SETLKW yet are (rarely) seen IRL. Recoverable! + if (errno == EAGAIN || errno == ENOLCK) + { + struct timeval tv = { .tv_sec = 0, .tv_usec = 10000 }; + select (0, NULL, NULL, NULL, &tv); + + continue; + } + + // A signal may interrupt a wait for lock with EINTR. Anything else is fatal if (errno != EINTR) return -1; } diff --git a/src/main.c b/src/main.c index 085ce38b4..deef5873c 100644 --- a/src/main.c +++ b/src/main.c @@ -1157,6 +1157,78 @@ static void main_autotune_finished (MAYBE_UNUSED hashcat_ctx_t *hashcat_ctx, MAY event_log_info_nn (hashcat_ctx, "Finished autotune"); } +static void main_backend_runtimes_init_pre (MAYBE_UNUSED hashcat_ctx_t *hashcat_ctx, MAYBE_UNUSED const void *buf, MAYBE_UNUSED const size_t len) +{ + const user_options_t *user_options = hashcat_ctx->user_options; + + if (user_options->quiet == true) return; + + event_log_info_nn (hashcat_ctx, "Initializing backend runtimes. Please be patient..."); +} + +static void main_backend_runtimes_init_post (MAYBE_UNUSED hashcat_ctx_t *hashcat_ctx, MAYBE_UNUSED const void *buf, MAYBE_UNUSED const size_t len) +{ + const user_options_t *user_options = hashcat_ctx->user_options; + + if (user_options->quiet == true) return; + + event_log_info_nn (hashcat_ctx, "Initialized backend runtimes"); +} + +static void main_backend_devices_init_pre (MAYBE_UNUSED hashcat_ctx_t *hashcat_ctx, MAYBE_UNUSED const void *buf, MAYBE_UNUSED const size_t len) +{ + const user_options_t *user_options = hashcat_ctx->user_options; + + if (user_options->quiet == true) return; + + event_log_info_nn (hashcat_ctx, "Initializing backend devices. Please be patient..."); +} + +static void main_backend_devices_init_post (MAYBE_UNUSED hashcat_ctx_t *hashcat_ctx, MAYBE_UNUSED const void *buf, MAYBE_UNUSED const size_t len) +{ + const user_options_t *user_options = hashcat_ctx->user_options; + + if (user_options->quiet == true) return; + + event_log_info_nn (hashcat_ctx, "Initialized backend devices"); +} + +static void main_bridges_init_pre (MAYBE_UNUSED hashcat_ctx_t *hashcat_ctx, MAYBE_UNUSED const void *buf, MAYBE_UNUSED const size_t len) +{ + const user_options_t *user_options = hashcat_ctx->user_options; + + if (user_options->quiet == true) return; + + event_log_info_nn (hashcat_ctx, "Initializing bridges. Please be patient..."); +} + +static void main_bridges_init_post (MAYBE_UNUSED hashcat_ctx_t *hashcat_ctx, MAYBE_UNUSED const void *buf, MAYBE_UNUSED const size_t len) +{ + const user_options_t *user_options = hashcat_ctx->user_options; + + if (user_options->quiet == true) return; + + event_log_info_nn (hashcat_ctx, "Initialized bridges"); +} + +static void main_bridges_salt_pre (MAYBE_UNUSED hashcat_ctx_t *hashcat_ctx, MAYBE_UNUSED const void *buf, MAYBE_UNUSED const size_t len) +{ + const user_options_t *user_options = hashcat_ctx->user_options; + + if (user_options->quiet == true) return; + + event_log_info_nn (hashcat_ctx, "Initializing bridge salts. Please be patient..."); +} + +static void main_bridges_salt_post (MAYBE_UNUSED hashcat_ctx_t *hashcat_ctx, MAYBE_UNUSED const void *buf, MAYBE_UNUSED const size_t len) +{ + const user_options_t *user_options = hashcat_ctx->user_options; + + if (user_options->quiet == true) return; + + event_log_info_nn (hashcat_ctx, "Initialized bridge salts"); +} + static void event (const u32 id, hashcat_ctx_t *hashcat_ctx, const void *buf, const size_t len) { switch (id) @@ -1167,9 +1239,17 @@ static void event (const u32 id, hashcat_ctx_t *hashcat_ctx, const void *buf, co case EVENT_SELFTEST_STARTING: main_selftest_starting (hashcat_ctx, buf, len); break; case EVENT_AUTODETECT_FINISHED: main_autodetect_finished (hashcat_ctx, buf, len); break; case EVENT_AUTODETECT_STARTING: main_autodetect_starting (hashcat_ctx, buf, len); break; + case EVENT_BACKEND_RUNTIMES_INIT_POST:main_backend_runtimes_init_post(hashcat_ctx, buf, len); break; + case EVENT_BACKEND_RUNTIMES_INIT_PRE: main_backend_runtimes_init_pre (hashcat_ctx, buf, len); break; + case EVENT_BACKEND_DEVICES_INIT_POST: main_backend_devices_init_post (hashcat_ctx, buf, len); break; + case EVENT_BACKEND_DEVICES_INIT_PRE: main_backend_devices_init_pre (hashcat_ctx, buf, len); break; case EVENT_BITMAP_INIT_POST: main_bitmap_init_post (hashcat_ctx, buf, len); break; case EVENT_BITMAP_INIT_PRE: main_bitmap_init_pre (hashcat_ctx, buf, len); break; case EVENT_BITMAP_FINAL_OVERFLOW: main_bitmap_final_overflow (hashcat_ctx, buf, len); break; + case EVENT_BRIDGES_INIT_POST: main_bridges_init_post (hashcat_ctx, buf, len); break; + case EVENT_BRIDGES_INIT_PRE: main_bridges_init_pre (hashcat_ctx, buf, len); break; + case EVENT_BRIDGES_SALT_POST: main_bridges_salt_post (hashcat_ctx, buf, len); break; + case EVENT_BRIDGES_SALT_PRE: main_bridges_salt_pre (hashcat_ctx, buf, len); break; case EVENT_CALCULATED_WORDS_BASE: main_calculated_words_base (hashcat_ctx, buf, len); break; case EVENT_CRACKER_FINISHED: main_cracker_finished (hashcat_ctx, buf, len); break; case EVENT_CRACKER_HASH_CRACKED: main_cracker_hash_cracked (hashcat_ctx, buf, len); break; diff --git a/src/memory.c b/src/memory.c index 54995cc86..15f4cbe19 100644 --- a/src/memory.c +++ b/src/memory.c @@ -69,23 +69,27 @@ void hcfree (void *ptr) void *hcmalloc_aligned (const size_t sz, const int align) { - // store the original allocated address so we can later use it to free the memory - // this is convenient to use because we don't need to store two memory addresses + uintptr_t align_mask = (uintptr_t) (align - 1); - const int align1 = align - 1; + void *raw = malloc (sz + align + sizeof (void *)); - void *ptr1 = hcmalloc (sz + sizeof (void *) + align1); + if (raw == NULL) return NULL; - void *ptr2 = (void **) ((uintptr_t) (ptr1 + sizeof (void *) + align1) & ~align1); + uintptr_t raw_addr = (uintptr_t) raw + sizeof (void *); - ((void **) ptr2)[-1] = ptr1; + uintptr_t aligned_addr = (raw_addr + align_mask) & ~align_mask; - return ptr2; + void **aligned_ptr = (void **) aligned_addr; + + aligned_ptr[-1] = raw; + + return aligned_ptr; } -void hcfree_aligned (void *ptr) +void hcfree_aligned(void *ptr) { - if (ptr == NULL) return; - - free (((void **) ptr)[-1]); + if (ptr != NULL) + { + free (((void **) ptr)[-1]); + } } diff --git a/src/modules/module_00000.c b/src/modules/module_00000.c index 127d95c16..2ac0449b7 100644 --- a/src/modules/module_00000.c +++ b/src/modules/module_00000.c @@ -130,6 +130,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_00010.c b/src/modules/module_00010.c index 57197205e..3918445b4 100644 --- a/src/modules/module_00010.c +++ b/src/modules/module_00010.c @@ -153,6 +153,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_00011.c b/src/modules/module_00011.c index e762f70d7..7026bd04f 100644 --- a/src/modules/module_00011.c +++ b/src/modules/module_00011.c @@ -155,6 +155,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_00012.c b/src/modules/module_00012.c index f0236e151..115c24073 100644 --- a/src/modules/module_00012.c +++ b/src/modules/module_00012.c @@ -148,6 +148,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_00020.c b/src/modules/module_00020.c index 505f648e4..3d514be55 100644 --- a/src/modules/module_00020.c +++ b/src/modules/module_00020.c @@ -152,6 +152,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_00021.c b/src/modules/module_00021.c index 7ad9d9acf..a9072fb4e 100644 --- a/src/modules/module_00021.c +++ b/src/modules/module_00021.c @@ -147,6 +147,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_00022.c b/src/modules/module_00022.c index 6e974b024..4252f2f6d 100644 --- a/src/modules/module_00022.c +++ b/src/modules/module_00022.c @@ -260,6 +260,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_00023.c b/src/modules/module_00023.c index 1cbce89a2..b50bf7a84 100644 --- a/src/modules/module_00023.c +++ b/src/modules/module_00023.c @@ -162,6 +162,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_00024.c b/src/modules/module_00024.c index fedd77c37..a2c4d2e90 100644 --- a/src/modules/module_00024.c +++ b/src/modules/module_00024.c @@ -146,6 +146,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_00030.c b/src/modules/module_00030.c index 50c5ca511..48d76c069 100644 --- a/src/modules/module_00030.c +++ b/src/modules/module_00030.c @@ -154,6 +154,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_00040.c b/src/modules/module_00040.c index 2d0186982..16907aa00 100644 --- a/src/modules/module_00040.c +++ b/src/modules/module_00040.c @@ -153,6 +153,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_00050.c b/src/modules/module_00050.c index 7e4eeaa4d..a3c1bf1c4 100644 --- a/src/modules/module_00050.c +++ b/src/modules/module_00050.c @@ -132,6 +132,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_00060.c b/src/modules/module_00060.c index 7a3e0757d..bba42dfa3 100644 --- a/src/modules/module_00060.c +++ b/src/modules/module_00060.c @@ -132,6 +132,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_00070.c b/src/modules/module_00070.c index d503dd5fe..995c2b34e 100644 --- a/src/modules/module_00070.c +++ b/src/modules/module_00070.c @@ -128,6 +128,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_00100.c b/src/modules/module_00100.c index 3d6bb223d..186616de0 100644 --- a/src/modules/module_00100.c +++ b/src/modules/module_00100.c @@ -146,6 +146,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_00101.c b/src/modules/module_00101.c index 7482896e2..9d873f97b 100644 --- a/src/modules/module_00101.c +++ b/src/modules/module_00101.c @@ -150,6 +150,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_00110.c b/src/modules/module_00110.c index 30ce167af..8ce8652bf 100644 --- a/src/modules/module_00110.c +++ b/src/modules/module_00110.c @@ -172,6 +172,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_00111.c b/src/modules/module_00111.c index 499c9a67c..fbb4f312c 100644 --- a/src/modules/module_00111.c +++ b/src/modules/module_00111.c @@ -177,6 +177,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_00112.c b/src/modules/module_00112.c index 152f2314a..f7220e57e 100644 --- a/src/modules/module_00112.c +++ b/src/modules/module_00112.c @@ -172,6 +172,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_00120.c b/src/modules/module_00120.c index 2ecb1aa79..6a94d02fe 100644 --- a/src/modules/module_00120.c +++ b/src/modules/module_00120.c @@ -172,6 +172,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_00121.c b/src/modules/module_00121.c index e988a45a6..6307a4311 100644 --- a/src/modules/module_00121.c +++ b/src/modules/module_00121.c @@ -173,6 +173,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_00122.c b/src/modules/module_00122.c index c806a2055..ea9c8574f 100644 --- a/src/modules/module_00122.c +++ b/src/modules/module_00122.c @@ -153,6 +153,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_00124.c b/src/modules/module_00124.c index ccdfe4e63..723165ee9 100644 --- a/src/modules/module_00124.c +++ b/src/modules/module_00124.c @@ -172,6 +172,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_00125.c b/src/modules/module_00125.c index b865e087a..53ce3a8d8 100644 --- a/src/modules/module_00125.c +++ b/src/modules/module_00125.c @@ -155,6 +155,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_00130.c b/src/modules/module_00130.c index d071fdc94..32ee6ae02 100644 --- a/src/modules/module_00130.c +++ b/src/modules/module_00130.c @@ -173,6 +173,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_00131.c b/src/modules/module_00131.c index 26eae96f9..381634701 100644 --- a/src/modules/module_00131.c +++ b/src/modules/module_00131.c @@ -169,6 +169,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_00132.c b/src/modules/module_00132.c index ab05701cb..e30f2bba4 100644 --- a/src/modules/module_00132.c +++ b/src/modules/module_00132.c @@ -163,6 +163,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_00133.c b/src/modules/module_00133.c index ecef6b61f..925701f3b 100644 --- a/src/modules/module_00133.c +++ b/src/modules/module_00133.c @@ -145,6 +145,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_00140.c b/src/modules/module_00140.c index bfded211a..abf65ff12 100644 --- a/src/modules/module_00140.c +++ b/src/modules/module_00140.c @@ -173,6 +173,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_00141.c b/src/modules/module_00141.c index 6a356562f..d78a2a2c2 100644 --- a/src/modules/module_00141.c +++ b/src/modules/module_00141.c @@ -179,6 +179,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_00150.c b/src/modules/module_00150.c index 9df2e605c..4a36fc8c5 100644 --- a/src/modules/module_00150.c +++ b/src/modules/module_00150.c @@ -44,6 +44,15 @@ u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig, const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; } const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; } +char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + char *jit_build_options = NULL; + + hc_asprintf (&jit_build_options, "-D NO_FUNNELSHIFT"); + + return jit_build_options; +} + int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED void *digest_buf, MAYBE_UNUSED salt_t *salt, MAYBE_UNUSED void *esalt_buf, MAYBE_UNUSED void *hook_salt_buf, MAYBE_UNUSED hashinfo_t *hash_info, const char *line_buf, MAYBE_UNUSED const int line_len) { u32 *digest = (u32 *) digest_buf; @@ -150,6 +159,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -188,7 +199,7 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_hook23 = MODULE_DEFAULT; module_ctx->module_hook_salt_size = MODULE_DEFAULT; module_ctx->module_hook_size = MODULE_DEFAULT; - module_ctx->module_jit_build_options = MODULE_DEFAULT; + module_ctx->module_jit_build_options = module_jit_build_options; module_ctx->module_jit_cache_disable = MODULE_DEFAULT; module_ctx->module_kernel_accel_max = MODULE_DEFAULT; module_ctx->module_kernel_accel_min = MODULE_DEFAULT; diff --git a/src/modules/module_00160.c b/src/modules/module_00160.c index ab82bed03..466f97d77 100644 --- a/src/modules/module_00160.c +++ b/src/modules/module_00160.c @@ -150,6 +150,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_00170.c b/src/modules/module_00170.c index ae08beca6..cd973e8a4 100644 --- a/src/modules/module_00170.c +++ b/src/modules/module_00170.c @@ -147,6 +147,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_00200.c b/src/modules/module_00200.c index e2bd7c8f4..4eeffc1e5 100644 --- a/src/modules/module_00200.c +++ b/src/modules/module_00200.c @@ -114,6 +114,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_00300.c b/src/modules/module_00300.c index db4731a85..d4369553e 100644 --- a/src/modules/module_00300.c +++ b/src/modules/module_00300.c @@ -145,6 +145,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_00400.c b/src/modules/module_00400.c index 23dc5c4c4..3e30912a5 100644 --- a/src/modules/module_00400.c +++ b/src/modules/module_00400.c @@ -242,6 +242,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_00500.c b/src/modules/module_00500.c index dad794f1b..108d08c45 100644 --- a/src/modules/module_00500.c +++ b/src/modules/module_00500.c @@ -261,6 +261,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = module_deep_comp_kernel; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_00501.c b/src/modules/module_00501.c index f31985406..ef20df5a9 100644 --- a/src/modules/module_00501.c +++ b/src/modules/module_00501.c @@ -335,6 +335,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_00600.c b/src/modules/module_00600.c index 9165bb744..d9d3831ea 100644 --- a/src/modules/module_00600.c +++ b/src/modules/module_00600.c @@ -120,6 +120,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_00610.c b/src/modules/module_00610.c index 05f5074dc..4127aa481 100644 --- a/src/modules/module_00610.c +++ b/src/modules/module_00610.c @@ -154,6 +154,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_00620.c b/src/modules/module_00620.c index fc56fadb6..e15777a66 100644 --- a/src/modules/module_00620.c +++ b/src/modules/module_00620.c @@ -154,6 +154,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_00900.c b/src/modules/module_00900.c index 8e007962a..0ff85f3ae 100644 --- a/src/modules/module_00900.c +++ b/src/modules/module_00900.c @@ -130,6 +130,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_01000.c b/src/modules/module_01000.c index 7662af81b..c0a4078f3 100644 --- a/src/modules/module_01000.c +++ b/src/modules/module_01000.c @@ -133,6 +133,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_01100.c b/src/modules/module_01100.c index d514c311e..1c3cbd731 100644 --- a/src/modules/module_01100.c +++ b/src/modules/module_01100.c @@ -50,6 +50,15 @@ u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig, const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; } const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; } +char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + char *jit_build_options = NULL; + + hc_asprintf (&jit_build_options, "-D NO_FUNNELSHIFT"); + + return jit_build_options; +} + int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED void *digest_buf, MAYBE_UNUSED salt_t *salt, MAYBE_UNUSED void *esalt_buf, MAYBE_UNUSED void *hook_salt_buf, MAYBE_UNUSED hashinfo_t *hash_info, const char *line_buf, MAYBE_UNUSED const int line_len) { u32 *digest = (u32 *) digest_buf; @@ -157,6 +166,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -195,7 +206,7 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_hook23 = MODULE_DEFAULT; module_ctx->module_hook_salt_size = MODULE_DEFAULT; module_ctx->module_hook_size = MODULE_DEFAULT; - module_ctx->module_jit_build_options = MODULE_DEFAULT; + module_ctx->module_jit_build_options = module_jit_build_options; module_ctx->module_jit_cache_disable = MODULE_DEFAULT; module_ctx->module_kernel_accel_max = MODULE_DEFAULT; module_ctx->module_kernel_accel_min = MODULE_DEFAULT; diff --git a/src/modules/module_01300.c b/src/modules/module_01300.c index 149fd39ad..b50a0e99c 100644 --- a/src/modules/module_01300.c +++ b/src/modules/module_01300.c @@ -160,6 +160,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_01400.c b/src/modules/module_01400.c index ab002efbe..8b74d4ee0 100644 --- a/src/modules/module_01400.c +++ b/src/modules/module_01400.c @@ -167,6 +167,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_01410.c b/src/modules/module_01410.c index f2f763bfe..c95e4aeed 100644 --- a/src/modules/module_01410.c +++ b/src/modules/module_01410.c @@ -193,6 +193,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_01411.c b/src/modules/module_01411.c index 63d8bde69..35f352e8b 100644 --- a/src/modules/module_01411.c +++ b/src/modules/module_01411.c @@ -190,6 +190,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_01420.c b/src/modules/module_01420.c index 795bd254f..01d8a649b 100644 --- a/src/modules/module_01420.c +++ b/src/modules/module_01420.c @@ -193,6 +193,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_01421.c b/src/modules/module_01421.c index 22cda42c1..def451112 100644 --- a/src/modules/module_01421.c +++ b/src/modules/module_01421.c @@ -169,6 +169,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_01430.c b/src/modules/module_01430.c index 650a7ec92..38277bbff 100644 --- a/src/modules/module_01430.c +++ b/src/modules/module_01430.c @@ -194,6 +194,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_01440.c b/src/modules/module_01440.c index 4dd8fb3c6..67b88bd65 100644 --- a/src/modules/module_01440.c +++ b/src/modules/module_01440.c @@ -194,6 +194,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_01441.c b/src/modules/module_01441.c index 89ff454d6..cd6757780 100644 --- a/src/modules/module_01441.c +++ b/src/modules/module_01441.c @@ -194,6 +194,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_01450.c b/src/modules/module_01450.c index b909b0b70..cd0f541df 100644 --- a/src/modules/module_01450.c +++ b/src/modules/module_01450.c @@ -164,6 +164,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_01460.c b/src/modules/module_01460.c index 08937aeb2..7b4d28c7d 100644 --- a/src/modules/module_01460.c +++ b/src/modules/module_01460.c @@ -196,6 +196,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_01470.c b/src/modules/module_01470.c index 07d3b5bee..53592fed6 100644 --- a/src/modules/module_01470.c +++ b/src/modules/module_01470.c @@ -168,6 +168,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_01500.c b/src/modules/module_01500.c index c6bb1e995..b66dddff1 100644 --- a/src/modules/module_01500.c +++ b/src/modules/module_01500.c @@ -46,9 +46,27 @@ const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) { - // Intel(R) Xeon(R) W-3223 CPU @ 3.50GHz; OpenCL C 1.2; 11.3.1; 20E241 - if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_CPU)) + if (device_param->opencl_device_type & CL_DEVICE_TYPE_CPU) { + if (device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) + { + // works on Apple Intel: Intel(R) Core(TM) i7-4578U CPU @ 3.00GHz + return false; + } + + if (strncmp (device_param->device_name, "AMD EPYC", 8) == 0) + { + // works on Linux: AMD EPYC 7642 48-Core Processor, OpenCL 2.1 (Build 0) + return false; + } + + if (device_param->opencl_platform_vendor_id != VENDOR_ID_INTEL_SDK) + { + // works on Linux/POCL + return false; + } + + // skip by default for now return true; } @@ -250,6 +268,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = module_build_plain_postprocess; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_01600.c b/src/modules/module_01600.c index fd2698d9d..197dbd1ba 100644 --- a/src/modules/module_01600.c +++ b/src/modules/module_01600.c @@ -255,6 +255,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_01700.c b/src/modules/module_01700.c index 66398ad54..a17a2cb6b 100644 --- a/src/modules/module_01700.c +++ b/src/modules/module_01700.c @@ -200,6 +200,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_01710.c b/src/modules/module_01710.c index 870bc22ef..93d51c731 100644 --- a/src/modules/module_01710.c +++ b/src/modules/module_01710.c @@ -225,6 +225,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_01711.c b/src/modules/module_01711.c index 7d5f1b112..8afc9a83e 100644 --- a/src/modules/module_01711.c +++ b/src/modules/module_01711.c @@ -222,6 +222,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_01720.c b/src/modules/module_01720.c index 01b2571ee..70bcc1d93 100644 --- a/src/modules/module_01720.c +++ b/src/modules/module_01720.c @@ -225,6 +225,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_01722.c b/src/modules/module_01722.c index 9da97c101..05c8e6b34 100644 --- a/src/modules/module_01722.c +++ b/src/modules/module_01722.c @@ -203,6 +203,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_01730.c b/src/modules/module_01730.c index 0f9d1632b..1e0561669 100644 --- a/src/modules/module_01730.c +++ b/src/modules/module_01730.c @@ -226,6 +226,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_01731.c b/src/modules/module_01731.c index a150b407d..65a259dbe 100644 --- a/src/modules/module_01731.c +++ b/src/modules/module_01731.c @@ -213,6 +213,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_01740.c b/src/modules/module_01740.c index c45cb2cdf..36b653c6d 100644 --- a/src/modules/module_01740.c +++ b/src/modules/module_01740.c @@ -226,6 +226,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_01750.c b/src/modules/module_01750.c index e2eaa5382..9563fc997 100644 --- a/src/modules/module_01750.c +++ b/src/modules/module_01750.c @@ -165,6 +165,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_01760.c b/src/modules/module_01760.c index b2bff2f12..349ea045b 100644 --- a/src/modules/module_01760.c +++ b/src/modules/module_01760.c @@ -166,6 +166,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_01770.c b/src/modules/module_01770.c index 799f0d71f..c42574c1a 100644 --- a/src/modules/module_01770.c +++ b/src/modules/module_01770.c @@ -183,6 +183,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_01800.c b/src/modules/module_01800.c index eeea0a484..fea4851c6 100644 --- a/src/modules/module_01800.c +++ b/src/modules/module_01800.c @@ -22,9 +22,7 @@ static const u64 KERN_TYPE = 1800; static const u32 OPTI_TYPE = OPTI_TYPE_ZERO_BYTE | OPTI_TYPE_USES_BITS_64; static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE - | OPTS_TYPE_PT_GENERATE_LE - | OPTS_TYPE_MP_MULTI_DISABLE - | OPTS_TYPE_MAXIMUM_THREADS; + | OPTS_TYPE_PT_GENERATE_LE; static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; static const char *ST_PASS = "hashcat"; static const char *ST_HASH = "$6$72820166$U4DVzpcYxgw7MVVDGGvB2/H5lRistD5.Ah4upwENR5UtffLR4X4SxSzfREv8z6wVl0jRFX40/KnYVvK4829kD1"; @@ -417,29 +415,21 @@ static void sha512crypt_encode (const u8 digest[64], u8 buf[86]) buf[85] = int_to_itoa64 (l & 0x3f); //l >>= 6; } -u32 module_kernel_threads_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) -{ - const u32 kernel_threads_max = 256; - - return kernel_threads_max; -} - bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) { - // AMD Radeon Pro W5700X Compute Engine; 1.2 (Apr 22 2021 21:54:44); 11.3.1; 20E241 if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) { - if (hashconfig->opti_type & OPTI_TYPE_OPTIMIZED_KERNEL) + if (device_param->is_metal == true) { - return true; + if (strncmp (device_param->device_name, "AMD Radeon", 10) == 0) + { + // AMD Radeon Pro W5700X, Metal.Version.: 261.13, compiler hangs + return true; + } } - } - - // AMD Radeon Pro W5700X, Metal.Version.: 261.13, compiler hangs - if (device_param->is_metal == true) - { - if (hashconfig->opti_type & OPTI_TYPE_OPTIMIZED_KERNEL) + else if ((device_param->opencl_device_vendor_id == VENDOR_ID_AMD) && (hashconfig->opti_type & OPTI_TYPE_OPTIMIZED_KERNEL)) { + // AMD Radeon Pro W5700X Compute Engine; 1.2 (Apr 22 2021 21:54:44); 11.3.1; 20E241 return true; } } @@ -457,12 +447,6 @@ char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAY return jit_build_options; } - // HIP - if (device_param->opencl_device_vendor_id == VENDOR_ID_AMD_USE_HIP) - { - hc_asprintf (&jit_build_options, "-fno-unroll-loops"); - } - // ROCM if ((device_param->opencl_device_vendor_id == VENDOR_ID_AMD) && (device_param->has_vperm == true)) { @@ -577,6 +561,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -621,7 +607,7 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_kernel_accel_min = MODULE_DEFAULT; module_ctx->module_kernel_loops_max = MODULE_DEFAULT; module_ctx->module_kernel_loops_min = MODULE_DEFAULT; - module_ctx->module_kernel_threads_max = module_kernel_threads_max; + module_ctx->module_kernel_threads_max = MODULE_DEFAULT; module_ctx->module_kernel_threads_min = MODULE_DEFAULT; module_ctx->module_kern_type = module_kern_type; module_ctx->module_kern_type_dynamic = MODULE_DEFAULT; diff --git a/src/modules/module_02000.c b/src/modules/module_02000.c index 6df5bff06..aa4110daf 100644 --- a/src/modules/module_02000.c +++ b/src/modules/module_02000.c @@ -70,6 +70,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_02100.c b/src/modules/module_02100.c index a304c003f..a5d69390f 100644 --- a/src/modules/module_02100.c +++ b/src/modules/module_02100.c @@ -55,6 +55,23 @@ typedef struct dcc2_tmp static const char *SIGNATURE_DCC2 = "$DCC2$"; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm02100_init'pipeline, Compilation failed + return true; + } + } + } + + return false; +} + u64 module_tmp_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const u64 tmp_size = (const u64) sizeof (dcc2_tmp_t); @@ -167,6 +184,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -232,6 +251,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_02400.c b/src/modules/module_02400.c index 1856a6f1d..5932bfea3 100644 --- a/src/modules/module_02400.c +++ b/src/modules/module_02400.c @@ -175,6 +175,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_02410.c b/src/modules/module_02410.c index e7aa402b8..10195f701 100644 --- a/src/modules/module_02410.c +++ b/src/modules/module_02410.c @@ -212,6 +212,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_02500.c b/src/modules/module_02500.c index 95e0c8713..e0ffc746d 100644 --- a/src/modules/module_02500.c +++ b/src/modules/module_02500.c @@ -912,6 +912,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = module_benchmark_mask; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = module_deep_comp_kernel; module_ctx->module_deprecated_notice = module_deprecated_notice; diff --git a/src/modules/module_02501.c b/src/modules/module_02501.c index 3b987cee8..458724712 100644 --- a/src/modules/module_02501.c +++ b/src/modules/module_02501.c @@ -910,6 +910,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = module_benchmark_mask; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = module_deep_comp_kernel; module_ctx->module_deprecated_notice = module_deprecated_notice; diff --git a/src/modules/module_02600.c b/src/modules/module_02600.c index a784dcb79..2d24809d3 100644 --- a/src/modules/module_02600.c +++ b/src/modules/module_02600.c @@ -139,6 +139,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_02611.c b/src/modules/module_02611.c index 096fb3cd8..50c91eb8f 100644 --- a/src/modules/module_02611.c +++ b/src/modules/module_02611.c @@ -153,6 +153,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_02612.c b/src/modules/module_02612.c index 56edc1de8..e4445ca13 100644 --- a/src/modules/module_02612.c +++ b/src/modules/module_02612.c @@ -155,6 +155,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_02630.c b/src/modules/module_02630.c index f1098413d..2cb6f0877 100644 --- a/src/modules/module_02630.c +++ b/src/modules/module_02630.c @@ -156,6 +156,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_02711.c b/src/modules/module_02711.c index e9943538f..11a2495d1 100644 --- a/src/modules/module_02711.c +++ b/src/modules/module_02711.c @@ -137,6 +137,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_02811.c b/src/modules/module_02811.c index 7f9c5fb3a..945878bae 100644 --- a/src/modules/module_02811.c +++ b/src/modules/module_02811.c @@ -167,6 +167,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_03000.c b/src/modules/module_03000.c index 2fe4cf17b..2da2023f0 100644 --- a/src/modules/module_03000.c +++ b/src/modules/module_03000.c @@ -49,11 +49,27 @@ u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig, const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; } const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; } +u32 module_kernel_threads_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) +{ + const u32 kernel_threads_max = 64; + + return kernel_threads_max; +} + bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) { // Intel(R) Xeon(R) W-3223 CPU @ 3.50GHz; OpenCL C 1.2; 11.3.1; 20E241 - if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_CPU)) + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE || device_param->opencl_platform_vendor_id == VENDOR_ID_INTEL_SDK) && (device_param->opencl_device_type & CL_DEVICE_TYPE_CPU)) { + if (strncmp (device_param->device_name, "AMD EPYC", 8) == 0) + { + // works on: AMD EPYC 7642 48-Core Processor, OpenCL 2.1 (Build 0) + return false; + } + + // fail also on Apple Intel + + // skip by default for now return true; } @@ -224,6 +240,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_03100.c b/src/modules/module_03100.c index af0f98840..f5b77a395 100644 --- a/src/modules/module_03100.c +++ b/src/modules/module_03100.c @@ -135,6 +135,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_03200.c b/src/modules/module_03200.c index bd38d8aec..9e2579df9 100644 --- a/src/modules/module_03200.c +++ b/src/modules/module_03200.c @@ -60,6 +60,37 @@ typedef struct bcrypt_tmp } bcrypt_tmp_t; +u32 module_kernel_loops_min (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) +{ + const u32 kernel_loops_min = 32; + + return kernel_loops_min; +} + +u32 module_kernel_loops_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) +{ + const u32 kernel_loops_max = 32; + + return kernel_loops_max; +} + +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: self-test failed + return true; + } + } + } + + return false; +} + u32 module_pw_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const u32 pw_max = 72; // Underlaying Blowfish max @@ -295,6 +326,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -337,8 +370,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_jit_cache_disable = module_jit_cache_disable; module_ctx->module_kernel_accel_max = MODULE_DEFAULT; module_ctx->module_kernel_accel_min = MODULE_DEFAULT; - module_ctx->module_kernel_loops_max = MODULE_DEFAULT; - module_ctx->module_kernel_loops_min = MODULE_DEFAULT; + module_ctx->module_kernel_loops_max = module_kernel_loops_max; + module_ctx->module_kernel_loops_min = module_kernel_loops_min; module_ctx->module_kernel_threads_max = MODULE_DEFAULT; module_ctx->module_kernel_threads_min = MODULE_DEFAULT; module_ctx->module_kern_type = module_kern_type; @@ -360,6 +393,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_03500.c b/src/modules/module_03500.c index cdca0d157..b6a94471d 100644 --- a/src/modules/module_03500.c +++ b/src/modules/module_03500.c @@ -139,6 +139,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_03610.c b/src/modules/module_03610.c index e93be95ed..413d0776f 100644 --- a/src/modules/module_03610.c +++ b/src/modules/module_03610.c @@ -153,6 +153,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_03710.c b/src/modules/module_03710.c index 787473468..f9c038577 100644 --- a/src/modules/module_03710.c +++ b/src/modules/module_03710.c @@ -152,6 +152,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_03711.c b/src/modules/module_03711.c index ad7fd3a9a..e1f221cfa 100644 --- a/src/modules/module_03711.c +++ b/src/modules/module_03711.c @@ -155,6 +155,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_03730.c b/src/modules/module_03730.c index c5959ad06..746fdff9a 100644 --- a/src/modules/module_03730.c +++ b/src/modules/module_03730.c @@ -207,6 +207,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_03800.c b/src/modules/module_03800.c index a863b7ec0..f80aea247 100644 --- a/src/modules/module_03800.c +++ b/src/modules/module_03800.c @@ -153,6 +153,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_03910.c b/src/modules/module_03910.c index 4aebe37c3..0adb66ef7 100644 --- a/src/modules/module_03910.c +++ b/src/modules/module_03910.c @@ -169,6 +169,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_04010.c b/src/modules/module_04010.c index 0e7e2063e..8a77bc84d 100644 --- a/src/modules/module_04010.c +++ b/src/modules/module_04010.c @@ -152,6 +152,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_04110.c b/src/modules/module_04110.c index 396238751..e364454f8 100644 --- a/src/modules/module_04110.c +++ b/src/modules/module_04110.c @@ -150,6 +150,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_04300.c b/src/modules/module_04300.c index 85d999530..05b1ae98b 100644 --- a/src/modules/module_04300.c +++ b/src/modules/module_04300.c @@ -139,6 +139,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_04400.c b/src/modules/module_04400.c index 6c86306d1..c00f9555c 100644 --- a/src/modules/module_04400.c +++ b/src/modules/module_04400.c @@ -129,6 +129,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_04410.c b/src/modules/module_04410.c index 4a763340a..e7c631a7b 100644 --- a/src/modules/module_04410.c +++ b/src/modules/module_04410.c @@ -152,6 +152,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_04420.c b/src/modules/module_04420.c index 9a2727935..c2dee200b 100644 --- a/src/modules/module_04420.c +++ b/src/modules/module_04420.c @@ -151,6 +151,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_04430.c b/src/modules/module_04430.c index 52eae5dea..e9acfe3f2 100644 --- a/src/modules/module_04430.c +++ b/src/modules/module_04430.c @@ -151,6 +151,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_04500.c b/src/modules/module_04500.c index ad98eb05d..7973d962d 100644 --- a/src/modules/module_04500.c +++ b/src/modules/module_04500.c @@ -144,6 +144,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_04510.c b/src/modules/module_04510.c index 6659b478d..b3e8cb224 100644 --- a/src/modules/module_04510.c +++ b/src/modules/module_04510.c @@ -182,6 +182,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_04520.c b/src/modules/module_04520.c index 3c0ff2eb5..5a92a0dc0 100644 --- a/src/modules/module_04520.c +++ b/src/modules/module_04520.c @@ -152,6 +152,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_04521.c b/src/modules/module_04521.c index 3e0f8abe8..ce8e3b859 100644 --- a/src/modules/module_04521.c +++ b/src/modules/module_04521.c @@ -143,6 +143,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_04522.c b/src/modules/module_04522.c index 5423f86cc..fc8ce061e 100644 --- a/src/modules/module_04522.c +++ b/src/modules/module_04522.c @@ -143,6 +143,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_04700.c b/src/modules/module_04700.c index 90b1f0f18..1b510503f 100644 --- a/src/modules/module_04700.c +++ b/src/modules/module_04700.c @@ -146,6 +146,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_04710.c b/src/modules/module_04710.c index 6a04380c0..27f47ccc6 100644 --- a/src/modules/module_04710.c +++ b/src/modules/module_04710.c @@ -182,6 +182,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_04711.c b/src/modules/module_04711.c index 1e1bfdcc0..bebcb9fda 100644 --- a/src/modules/module_04711.c +++ b/src/modules/module_04711.c @@ -183,6 +183,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_04800.c b/src/modules/module_04800.c index d65124938..05a3b11e3 100644 --- a/src/modules/module_04800.c +++ b/src/modules/module_04800.c @@ -150,6 +150,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_04900.c b/src/modules/module_04900.c index 02c7a2ca7..b82b5c8ee 100644 --- a/src/modules/module_04900.c +++ b/src/modules/module_04900.c @@ -167,6 +167,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_05000.c b/src/modules/module_05000.c index 85c5c9e87..8d2cb7f05 100644 --- a/src/modules/module_05000.c +++ b/src/modules/module_05000.c @@ -167,6 +167,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_05100.c b/src/modules/module_05100.c index d16ae19d6..a8c3800c3 100644 --- a/src/modules/module_05100.c +++ b/src/modules/module_05100.c @@ -107,6 +107,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_05200.c b/src/modules/module_05200.c index 47fb863cb..fae79c537 100644 --- a/src/modules/module_05200.c +++ b/src/modules/module_05200.c @@ -192,6 +192,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_05300.c b/src/modules/module_05300.c index ea10850b2..036043f57 100644 --- a/src/modules/module_05300.c +++ b/src/modules/module_05300.c @@ -248,6 +248,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_05400.c b/src/modules/module_05400.c index f6470f0c0..e5df606cf 100644 --- a/src/modules/module_05400.c +++ b/src/modules/module_05400.c @@ -255,6 +255,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_05500.c b/src/modules/module_05500.c index 9fc1de726..ffb3b3ba5 100644 --- a/src/modules/module_05500.c +++ b/src/modules/module_05500.c @@ -410,6 +410,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_05600.c b/src/modules/module_05600.c index a40ec4e64..bb347e372 100644 --- a/src/modules/module_05600.c +++ b/src/modules/module_05600.c @@ -305,6 +305,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_05700.c b/src/modules/module_05700.c index e981eeea1..78ed12a1f 100644 --- a/src/modules/module_05700.c +++ b/src/modules/module_05700.c @@ -156,6 +156,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_05800.c b/src/modules/module_05800.c index b646d0f89..9595ab988 100644 --- a/src/modules/module_05800.c +++ b/src/modules/module_05800.c @@ -168,6 +168,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_06000.c b/src/modules/module_06000.c index 6c7b5ffec..8b118d9af 100644 --- a/src/modules/module_06000.c +++ b/src/modules/module_06000.c @@ -42,6 +42,15 @@ u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig, const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; } const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; } +char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + char *jit_build_options = NULL; + + hc_asprintf (&jit_build_options, "-D NO_FUNNELSHIFT"); + + return jit_build_options; +} + int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED void *digest_buf, MAYBE_UNUSED salt_t *salt, MAYBE_UNUSED void *esalt_buf, MAYBE_UNUSED void *hook_salt_buf, MAYBE_UNUSED hashinfo_t *hash_info, const char *line_buf, MAYBE_UNUSED const int line_len) { u32 *digest = (u32 *) digest_buf; @@ -110,6 +119,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -148,7 +159,7 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_hook23 = MODULE_DEFAULT; module_ctx->module_hook_salt_size = MODULE_DEFAULT; module_ctx->module_hook_size = MODULE_DEFAULT; - module_ctx->module_jit_build_options = MODULE_DEFAULT; + module_ctx->module_jit_build_options = module_jit_build_options; module_ctx->module_jit_cache_disable = MODULE_DEFAULT; module_ctx->module_kernel_accel_max = MODULE_DEFAULT; module_ctx->module_kernel_accel_min = MODULE_DEFAULT; diff --git a/src/modules/module_06050.c b/src/modules/module_06050.c index 7cb55504c..e092facd7 100644 --- a/src/modules/module_06050.c +++ b/src/modules/module_06050.c @@ -138,6 +138,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_06060.c b/src/modules/module_06060.c index 5407e642e..c9009589f 100644 --- a/src/modules/module_06060.c +++ b/src/modules/module_06060.c @@ -138,6 +138,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_06100.c b/src/modules/module_06100.c index c583db693..2791501ea 100644 --- a/src/modules/module_06100.c +++ b/src/modules/module_06100.c @@ -42,6 +42,23 @@ u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig, const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; } const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; } +char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + char *jit_build_options = NULL; + + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + hc_asprintf (&jit_build_options, "-D FORCE_DISABLE_SHM"); + } + + if (device_param->opencl_device_vendor_id == VENDOR_ID_AMD_USE_HIP) + { + hc_asprintf (&jit_build_options, "-D FORCE_DISABLE_SHM"); + } + + return jit_build_options; +} + int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED void *digest_buf, MAYBE_UNUSED salt_t *salt, MAYBE_UNUSED void *esalt_buf, MAYBE_UNUSED void *hook_salt_buf, MAYBE_UNUSED hashinfo_t *hash_info, const char *line_buf, MAYBE_UNUSED const int line_len) { u32 *digest = (u32 *) digest_buf; @@ -177,6 +194,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -215,7 +234,7 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_hook23 = MODULE_DEFAULT; module_ctx->module_hook_salt_size = MODULE_DEFAULT; module_ctx->module_hook_size = MODULE_DEFAULT; - module_ctx->module_jit_build_options = MODULE_DEFAULT; + module_ctx->module_jit_build_options = module_jit_build_options; module_ctx->module_jit_cache_disable = MODULE_DEFAULT; module_ctx->module_kernel_accel_max = MODULE_DEFAULT; module_ctx->module_kernel_accel_min = MODULE_DEFAULT; diff --git a/src/modules/module_06211.c b/src/modules/module_06211.c index aae64c1af..0faa59d79 100644 --- a/src/modules/module_06211.c +++ b/src/modules/module_06211.c @@ -77,15 +77,13 @@ typedef struct tc static const int ROUNDS_TRUECRYPT_2K = 2000; static const float MIN_SUFFICIENT_ENTROPY_FILE = 7.0f; -bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) { - // AMD Radeon Pro W5700X, Metal.Version.: 261.13, compiler hangs - if (device_param->is_metal == true) - { - return true; - } + char *jit_build_options = NULL; - return false; + hc_asprintf (&jit_build_options, "-D NO_FUNNELSHIFT"); + + return jit_build_options; } bool module_potfile_disable (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) @@ -252,6 +250,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -290,7 +290,7 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_hook23 = MODULE_DEFAULT; module_ctx->module_hook_salt_size = MODULE_DEFAULT; module_ctx->module_hook_size = MODULE_DEFAULT; - module_ctx->module_jit_build_options = MODULE_DEFAULT; + module_ctx->module_jit_build_options = module_jit_build_options; module_ctx->module_jit_cache_disable = MODULE_DEFAULT; module_ctx->module_kernel_accel_max = MODULE_DEFAULT; module_ctx->module_kernel_accel_min = MODULE_DEFAULT; @@ -317,6 +317,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = module_unstable_warning; + module_ctx->module_unstable_warning = MODULE_DEFAULT; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_06212.c b/src/modules/module_06212.c index 3d7712130..8601a32ab 100644 --- a/src/modules/module_06212.c +++ b/src/modules/module_06212.c @@ -77,15 +77,13 @@ typedef struct tc static const int ROUNDS_TRUECRYPT_2K = 2000; static const float MIN_SUFFICIENT_ENTROPY_FILE = 7.0f; -bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) { - // AMD Radeon Pro W5700X, Metal.Version.: 261.13, compiler hangs - if (device_param->is_metal == true) - { - return true; - } + char *jit_build_options = NULL; - return false; + hc_asprintf (&jit_build_options, "-D NO_FUNNELSHIFT"); + + return jit_build_options; } bool module_potfile_disable (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) @@ -252,6 +250,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -290,7 +290,7 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_hook23 = MODULE_DEFAULT; module_ctx->module_hook_salt_size = MODULE_DEFAULT; module_ctx->module_hook_size = MODULE_DEFAULT; - module_ctx->module_jit_build_options = MODULE_DEFAULT; + module_ctx->module_jit_build_options = module_jit_build_options; module_ctx->module_jit_cache_disable = MODULE_DEFAULT; module_ctx->module_kernel_accel_max = MODULE_DEFAULT; module_ctx->module_kernel_accel_min = MODULE_DEFAULT; @@ -317,6 +317,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = module_unstable_warning; + module_ctx->module_unstable_warning = MODULE_DEFAULT; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_06213.c b/src/modules/module_06213.c index 52e4c6e2d..7f0af57cc 100644 --- a/src/modules/module_06213.c +++ b/src/modules/module_06213.c @@ -77,15 +77,13 @@ typedef struct tc static const int ROUNDS_TRUECRYPT_2K = 2000; static const float MIN_SUFFICIENT_ENTROPY_FILE = 7.0f; -bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) { - // AMD Radeon Pro W5700X, Metal.Version.: 261.13, compiler hangs - if (device_param->is_metal == true) - { - return true; - } + char *jit_build_options = NULL; - return false; + hc_asprintf (&jit_build_options, "-D NO_FUNNELSHIFT"); + + return jit_build_options; } bool module_potfile_disable (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) @@ -252,6 +250,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -290,7 +290,7 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_hook23 = MODULE_DEFAULT; module_ctx->module_hook_salt_size = MODULE_DEFAULT; module_ctx->module_hook_size = MODULE_DEFAULT; - module_ctx->module_jit_build_options = MODULE_DEFAULT; + module_ctx->module_jit_build_options = module_jit_build_options; module_ctx->module_jit_cache_disable = MODULE_DEFAULT; module_ctx->module_kernel_accel_max = MODULE_DEFAULT; module_ctx->module_kernel_accel_min = MODULE_DEFAULT; @@ -317,6 +317,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = module_unstable_warning; + module_ctx->module_unstable_warning = MODULE_DEFAULT; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_06221.c b/src/modules/module_06221.c index 5165af4ea..08a1abe3c 100644 --- a/src/modules/module_06221.c +++ b/src/modules/module_06221.c @@ -78,26 +78,6 @@ typedef struct tc static const int ROUNDS_TRUECRYPT_1K = 1000; static const float MIN_SUFFICIENT_ENTROPY_FILE = 7.0f; -bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - if (device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) - { - // self-test failed - if ((device_param->opencl_device_vendor_id == VENDOR_ID_AMD) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) - { - return true; - } - } - - // AMD Radeon Pro W5700X, Metal.Version.: 261.13, compiler hangs - if (device_param->is_metal == true) - { - return true; - } - - return false; -} - bool module_potfile_disable (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const bool potfile_disable = true; @@ -264,6 +244,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -329,6 +311,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = module_unstable_warning; + module_ctx->module_unstable_warning = MODULE_DEFAULT; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_06222.c b/src/modules/module_06222.c index 8ca545ec5..ae050a8fb 100644 --- a/src/modules/module_06222.c +++ b/src/modules/module_06222.c @@ -78,26 +78,6 @@ typedef struct tc static const int ROUNDS_TRUECRYPT_1K = 1000; static const float MIN_SUFFICIENT_ENTROPY_FILE = 7.0f; -bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - if (device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) - { - // self-test failed - if ((device_param->opencl_device_vendor_id == VENDOR_ID_AMD) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) - { - return true; - } - } - - // AMD Radeon Pro W5700X, Metal.Version.: 261.13, compiler hangs - if (device_param->is_metal == true) - { - return true; - } - - return false; -} - bool module_potfile_disable (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const bool potfile_disable = true; @@ -264,6 +244,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -329,6 +311,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = module_unstable_warning; + module_ctx->module_unstable_warning = MODULE_DEFAULT; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_06223.c b/src/modules/module_06223.c index 7c96d4e46..f424a1ede 100644 --- a/src/modules/module_06223.c +++ b/src/modules/module_06223.c @@ -78,26 +78,6 @@ typedef struct tc static const int ROUNDS_TRUECRYPT_1K = 1000; static const float MIN_SUFFICIENT_ENTROPY_FILE = 7.0f; -bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - if (device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) - { - // self-test failed - if ((device_param->opencl_device_vendor_id == VENDOR_ID_AMD) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) - { - return true; - } - } - - // AMD Radeon Pro W5700X, Metal.Version.: 261.13, compiler hangs - if (device_param->is_metal == true) - { - return true; - } - - return false; -} - bool module_potfile_disable (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const bool potfile_disable = true; @@ -264,6 +244,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -329,6 +311,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = module_unstable_warning; + module_ctx->module_unstable_warning = MODULE_DEFAULT; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_06231.c b/src/modules/module_06231.c index 0860c0771..11679dd43 100644 --- a/src/modules/module_06231.c +++ b/src/modules/module_06231.c @@ -26,8 +26,7 @@ static const u32 OPTI_TYPE = OPTI_TYPE_ZERO_BYTE | OPTI_TYPE_SLOW_HASH_SIMD_LOOP; static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE | OPTS_TYPE_PT_GENERATE_LE - | OPTS_TYPE_BINARY_HASHFILE - | OPTS_TYPE_MAXIMUM_THREADS; + | OPTS_TYPE_BINARY_HASHFILE; static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; static const char *ST_PASS = "hashcat"; static const char *ST_HASH = "cf53d4153414b63285e701e52c2d99e148c6ccc4508132f82cb41862d0a0ac9ea16274285ac261c339c1508eec9fea54c33e382458662913678f2a88a84959a678e238973985ec670d50252677430587ee28b72bfa5edfb2f79c40b734ba8a54a3662642a6ab067e75f41154688ad4adb5d6decd891462dd537188195a51e06fa5baf22b69d0f472cfeeae77ab9a90091731863af1d8b5b380da179fa7d5227ef031732b1ae06e0fe34c0b28b7a64eac34e5a08e09d7001394b3afc804ac69bf819cdd2d383fe96a721f7c683628da8e529d84bdaa68d702573d8f7ef26f75d1bd5c91efa88cb33b1e9c006b87981c55ed3b8063ab7068f8e99b128bc56ea3e883efa55d6f340b2681e50405d91f5f6d76cdbeac404944164d329d3ee01311de0bc6547310f126b5a4c0e9fb74825f91faefa60b7ac828819d4544c1872ff5041e61d5cf093553f427358b2181046376d7b876e1bccf0774d5d251b7c922c214bb5c70c715165d028e1dca73e7adeca3396d77f6e597a10dd4c58f37fdbbdc1d04cd8890ba4c5025776a88a349bb925add13193becf1ca10fe32536db0c0b06a1ef799fb692e304b3716ca5a8a80859c4012ca3e06701b46b5a32f4d10e285a0cdaf6c24e0d98139e7f306e52503c9b503aa28f1fbbb236284907068074fcb3e267e3c4aab2bd3b79b24a7a08106bb55850fa2bb8e2f6d9919a6743cb822c164"; @@ -78,24 +77,6 @@ typedef struct tc static const int ROUNDS_TRUECRYPT_1K = 1000; static const float MIN_SUFFICIENT_ENTROPY_FILE = 7.0f; -u32 module_kernel_threads_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) -{ - const u32 kernel_threads_max = 64; - - return kernel_threads_max; -} - -bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - // AMD Radeon Pro W5700X, Metal.Version.: 261.13, compiler hangs - if (device_param->is_metal == true) - { - return true; - } - - return false; -} - bool module_potfile_disable (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const bool potfile_disable = true; @@ -262,6 +243,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -306,7 +289,7 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_kernel_accel_min = MODULE_DEFAULT; module_ctx->module_kernel_loops_max = MODULE_DEFAULT; module_ctx->module_kernel_loops_min = MODULE_DEFAULT; - module_ctx->module_kernel_threads_max = module_kernel_threads_max; + module_ctx->module_kernel_threads_max = MODULE_DEFAULT; module_ctx->module_kernel_threads_min = MODULE_DEFAULT; module_ctx->module_kern_type = module_kern_type; module_ctx->module_kern_type_dynamic = MODULE_DEFAULT; @@ -327,6 +310,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = module_unstable_warning; + module_ctx->module_unstable_warning = MODULE_DEFAULT; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_06232.c b/src/modules/module_06232.c index 6005483ef..3d02dbef4 100644 --- a/src/modules/module_06232.c +++ b/src/modules/module_06232.c @@ -26,8 +26,7 @@ static const u32 OPTI_TYPE = OPTI_TYPE_ZERO_BYTE | OPTI_TYPE_SLOW_HASH_SIMD_LOOP; static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE | OPTS_TYPE_PT_GENERATE_LE - | OPTS_TYPE_BINARY_HASHFILE - | OPTS_TYPE_MAXIMUM_THREADS; + | OPTS_TYPE_BINARY_HASHFILE; static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; static const char *ST_PASS = "hashcat"; static const char *ST_HASH = "e9e503972b72dee996b0bfced2df003a54b42399e3586520cf1f69475ba32aff564e40e604a505af95ce15220f558ae815e94ce4953882a8299ee3fffb12e9bd62bf8e2c41c0a8337ce20d45715440cc83e394200d351c5b04be5b70fa11b8467320a091a1d703c88cc7b26fd114795c04a973b3266ba97f55d4b4e4771bb1b4a6aabc9d57e03f0ae7c8a77dfc3d37078efba45031e7d63bb514726e2f2dc6da8cce167a17e36b32c326a5bcaa2c4b445f6e10e1f899a9adcc2a698769f900b7909f7aec52fc9862d75286ffda67933f9c52e5c681d590ad0329b85f8db0f6bb6daa3b2d55b62c65da37e3e7fcb99954e0abe20c39724e8fb2c7f839ec67d35f151dfd8c4dd4bc8dc4393fab291efa08cc0099277d219a0ba4c6272af3684d8043ed3f502b98e196dc7aa0291627613179199976f28eff08649acf70aa0c0dc5896ed13eb18ea28fdd6c460a9c7cfedeab5ac80a3c195226cfca094a7590fa2ae5ed2133ba09b5466b2049b6291f8dcf345e5718a4c0ef3f9c8d8e07d0e5dddd07452b533fbf243ef063fb6d26759ae725d8ca430f8cf17b86665d23bdff1c9dbdfe601b88e87cb7c89f23abc4a8bb1f0b7375cc29b1d81c950ffe92e16e2080e1d6270bbb3ba753322d2b623caed87213e552c33e699d4010f0f61df2b7f460d7cd82e70a711388f1c0b591d424259d3de8b3628daf62c6c5b71864eb0e7d31"; @@ -78,24 +77,6 @@ typedef struct tc static const int ROUNDS_TRUECRYPT_1K = 1000; static const float MIN_SUFFICIENT_ENTROPY_FILE = 7.0f; -u32 module_kernel_threads_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) -{ - const u32 kernel_threads_max = 64; - - return kernel_threads_max; -} - -bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - // AMD Radeon Pro W5700X, Metal.Version.: 261.13, compiler hangs - if (device_param->is_metal == true) - { - return true; - } - - return false; -} - bool module_potfile_disable (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const bool potfile_disable = true; @@ -262,6 +243,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -306,7 +289,7 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_kernel_accel_min = MODULE_DEFAULT; module_ctx->module_kernel_loops_max = MODULE_DEFAULT; module_ctx->module_kernel_loops_min = MODULE_DEFAULT; - module_ctx->module_kernel_threads_max = module_kernel_threads_max; + module_ctx->module_kernel_threads_max = MODULE_DEFAULT; module_ctx->module_kernel_threads_min = MODULE_DEFAULT; module_ctx->module_kern_type = module_kern_type; module_ctx->module_kern_type_dynamic = MODULE_DEFAULT; @@ -327,6 +310,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = module_unstable_warning; + module_ctx->module_unstable_warning = MODULE_DEFAULT; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_06233.c b/src/modules/module_06233.c index df7ff9cb6..337bf3beb 100644 --- a/src/modules/module_06233.c +++ b/src/modules/module_06233.c @@ -26,8 +26,7 @@ static const u32 OPTI_TYPE = OPTI_TYPE_ZERO_BYTE | OPTI_TYPE_SLOW_HASH_SIMD_LOOP; static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE | OPTS_TYPE_PT_GENERATE_LE - | OPTS_TYPE_BINARY_HASHFILE - | OPTS_TYPE_MAXIMUM_THREADS; + | OPTS_TYPE_BINARY_HASHFILE; static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; static const char *ST_PASS = "hashcat"; static const char *ST_HASH = "de7d6725cc4c910a7e96307df69d41335e64d17b4425ca5bf1730f27820f92df9f20f3e855d8566eb5255927153f987348789666c8e563e366a09e68a8126b11c25ac817b2706dde5cec3946e64332b21b41b928985c1a637559ead5b4fecac74ff0d625ef6d8be93dea3eaca05394f23ee9e079d3504a77b4c0b22d3cfcafa9c670966bfa3a5f30539250d97267a9e56b5a1437b1fd2ce58f4ab78b52ba61d01c28d7a6b726d92c8819711c70f820690cf2b9bbef75f196ba87fb5f72a29e213096a8be3b6e6d0ff3dc22563dc9e7d95be68ad169c233289fccfdc2f5528c658cb178b4e78d54e96cb452859b01dd756ca0245bdd586fb450e84988071428c80af0a6dc5f16dea8094da3acb51ac5d2a710414256b2423e0333584437ea9a65a07f06bd241103a478d137e9a274a78a19d3ca121f1bc10e4c9e5fc277d23107db1fb447f71ba0f92b20e3ead77cffaca25f772182705a75e500d9aab3996bfda042f4bdfe35a3a477e355c76a711ad0f64848d6144073ce6ec4152c87973fc3e69626523463812061c51f51fc08487e8a4dbae1ca7965c11f222c607688b3384c5c29d4fe91d14d2cc940a6a9d94486d1823261928d88f56fe00e206d7a31734de0217afd38afa3d2cf3499c2dcff13332a369c4b1f39867f6dfc83ec32d19b931b082f07acac7e70bdd537e8432245c11662d89ec3cc97e582de5d2cc6bde7"; @@ -78,24 +77,6 @@ typedef struct tc static const int ROUNDS_TRUECRYPT_1K = 1000; static const float MIN_SUFFICIENT_ENTROPY_FILE = 7.0f; -u32 module_kernel_threads_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) -{ - const u32 kernel_threads_max = 64; - - return kernel_threads_max; -} - -bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - // AMD Radeon Pro W5700X, Metal.Version.: 261.13, compiler hangs - if (device_param->is_metal == true) - { - return true; - } - - return false; -} - bool module_potfile_disable (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const bool potfile_disable = true; @@ -262,6 +243,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -306,7 +289,7 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_kernel_accel_min = MODULE_DEFAULT; module_ctx->module_kernel_loops_max = MODULE_DEFAULT; module_ctx->module_kernel_loops_min = MODULE_DEFAULT; - module_ctx->module_kernel_threads_max = module_kernel_threads_max; + module_ctx->module_kernel_threads_max = MODULE_DEFAULT; module_ctx->module_kernel_threads_min = MODULE_DEFAULT; module_ctx->module_kern_type = module_kern_type; module_ctx->module_kern_type_dynamic = MODULE_DEFAULT; @@ -327,6 +310,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = module_unstable_warning; + module_ctx->module_unstable_warning = MODULE_DEFAULT; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_06241.c b/src/modules/module_06241.c index bf41db0a2..ff8647ae0 100644 --- a/src/modules/module_06241.c +++ b/src/modules/module_06241.c @@ -78,17 +78,6 @@ typedef struct tc static const int ROUNDS_TRUECRYPT_1K = 1000; static const float MIN_SUFFICIENT_ENTROPY_FILE = 7.0f; -bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - // AMD Radeon Pro W5700X, Metal.Version.: 261.13, compiler hangs - if (device_param->is_metal == true) - { - return true; - } - - return false; -} - int module_build_plain_postprocess (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const void *tmps, const u32 *src_buf, MAYBE_UNUSED const size_t src_sz, MAYBE_UNUSED const int src_len, u32 *dst_buf, MAYBE_UNUSED const size_t dst_sz) { const tc_t *tc = (const tc_t *) hashes->esalts_buf; @@ -267,6 +256,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = module_build_plain_postprocess; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -332,6 +323,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = module_unstable_warning; + module_ctx->module_unstable_warning = MODULE_DEFAULT; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_06242.c b/src/modules/module_06242.c index 1079060fb..7bc2f961f 100644 --- a/src/modules/module_06242.c +++ b/src/modules/module_06242.c @@ -78,17 +78,6 @@ typedef struct tc static const int ROUNDS_TRUECRYPT_1K = 1000; static const float MIN_SUFFICIENT_ENTROPY_FILE = 7.0f; -bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - // AMD Radeon Pro W5700X, Metal.Version.: 261.13, compiler hangs - if (device_param->is_metal == true) - { - return true; - } - - return false; -} - int module_build_plain_postprocess (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const void *tmps, const u32 *src_buf, MAYBE_UNUSED const size_t src_sz, MAYBE_UNUSED const int src_len, u32 *dst_buf, MAYBE_UNUSED const size_t dst_sz) { const tc_t *tc = (const tc_t *) hashes->esalts_buf; @@ -267,6 +256,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = module_build_plain_postprocess; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -332,6 +323,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = module_unstable_warning; + module_ctx->module_unstable_warning = MODULE_DEFAULT; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_06243.c b/src/modules/module_06243.c index f2101dc69..a2205b498 100644 --- a/src/modules/module_06243.c +++ b/src/modules/module_06243.c @@ -78,17 +78,6 @@ typedef struct tc static const int ROUNDS_TRUECRYPT_1K = 1000; static const float MIN_SUFFICIENT_ENTROPY_FILE = 7.0f; -bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - // AMD Radeon Pro W5700X, Metal.Version.: 261.13, compiler hangs - if (device_param->is_metal == true) - { - return true; - } - - return false; -} - int module_build_plain_postprocess (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const void *tmps, const u32 *src_buf, MAYBE_UNUSED const size_t src_sz, MAYBE_UNUSED const int src_len, u32 *dst_buf, MAYBE_UNUSED const size_t dst_sz) { const tc_t *tc = (const tc_t *) hashes->esalts_buf; @@ -267,6 +256,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = module_build_plain_postprocess; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -332,6 +323,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = module_unstable_warning; + module_ctx->module_unstable_warning = MODULE_DEFAULT; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_06300.c b/src/modules/module_06300.c index 0f6ed5bc0..bf8c1e37f 100644 --- a/src/modules/module_06300.c +++ b/src/modules/module_06300.c @@ -246,6 +246,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_06400.c b/src/modules/module_06400.c index 79e825509..b7ac9d87f 100644 --- a/src/modules/module_06400.c +++ b/src/modules/module_06400.c @@ -370,6 +370,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_06500.c b/src/modules/module_06500.c index bfaa5e243..29ec729f3 100644 --- a/src/modules/module_06500.c +++ b/src/modules/module_06500.c @@ -411,17 +411,6 @@ static void sha512aix_encode (const u8 digest[64], u8 buf[86]) buf[85] = int_to_itoa64 (l & 0x3f); //l >>= 6; } -bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - // AMD Radeon Pro W5700X, Metal.Version.: 261.13, compiler hangs - if (device_param->is_metal == true) - { - return true; - } - - return false; -} - u64 module_tmp_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const u64 tmp_size = (const u64) sizeof (sha512aix_tmp_t); @@ -554,6 +543,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -619,6 +610,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = module_unstable_warning; + module_ctx->module_unstable_warning = MODULE_DEFAULT; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_06600.c b/src/modules/module_06600.c index f7bea8cdd..a78540944 100644 --- a/src/modules/module_06600.c +++ b/src/modules/module_06600.c @@ -220,6 +220,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_06700.c b/src/modules/module_06700.c index 3305f1502..717908cf5 100644 --- a/src/modules/module_06700.c +++ b/src/modules/module_06700.c @@ -296,6 +296,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_06800.c b/src/modules/module_06800.c index 6439f98f3..215f26992 100644 --- a/src/modules/module_06800.c +++ b/src/modules/module_06800.c @@ -218,6 +218,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_06900.c b/src/modules/module_06900.c index eff993986..537f9df8f 100644 --- a/src/modules/module_06900.c +++ b/src/modules/module_06900.c @@ -121,6 +121,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_07000.c b/src/modules/module_07000.c index 99fb188cc..d11968a80 100644 --- a/src/modules/module_07000.c +++ b/src/modules/module_07000.c @@ -194,6 +194,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_07100.c b/src/modules/module_07100.c index 22adc6a98..ec3924cec 100644 --- a/src/modules/module_07100.c +++ b/src/modules/module_07100.c @@ -85,17 +85,6 @@ u32 module_pw_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED con return pw_max; } -bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - // AMD Radeon Pro W5700X, Metal.Version.: 261.13, compiler hangs - if (device_param->is_metal == true) - { - return true; - } - - return false; -} - char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) { char *jit_build_options = NULL; @@ -369,6 +358,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -434,6 +425,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = module_unstable_warning; + module_ctx->module_unstable_warning = MODULE_DEFAULT; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_07200.c b/src/modules/module_07200.c index 7387334b8..ed3485a70 100644 --- a/src/modules/module_07200.c +++ b/src/modules/module_07200.c @@ -61,17 +61,6 @@ typedef struct pbkdf2_sha512_tmp static const char *SIGNATURE_SHA512GRUB = "grub.pbkdf2.sha512."; -bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - // AMD Radeon Pro W5700X, Metal.Version.: 261.13, compiler hangs - if (device_param->is_metal == true) - { - return true; - } - - return false; -} - u64 module_esalt_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const u64 esalt_size = (const u64) sizeof (pbkdf2_sha512_t); @@ -226,6 +215,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -291,6 +282,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = module_unstable_warning; + module_ctx->module_unstable_warning = MODULE_DEFAULT; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_07300.c b/src/modules/module_07300.c index 00bff337a..42efc5721 100644 --- a/src/modules/module_07300.c +++ b/src/modules/module_07300.c @@ -171,6 +171,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_07350.c b/src/modules/module_07350.c index fd79d31d1..ff59537cf 100644 --- a/src/modules/module_07350.c +++ b/src/modules/module_07350.c @@ -129,6 +129,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_07400.c b/src/modules/module_07400.c index 251aec4f8..5584e0482 100644 --- a/src/modules/module_07400.c +++ b/src/modules/module_07400.c @@ -376,6 +376,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = module_deep_comp_kernel; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_07401.c b/src/modules/module_07401.c index ae5fdd434..633c5dd47 100644 --- a/src/modules/module_07401.c +++ b/src/modules/module_07401.c @@ -412,6 +412,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_07500.c b/src/modules/module_07500.c index e8434e5f6..bca6a02d3 100644 --- a/src/modules/module_07500.c +++ b/src/modules/module_07500.c @@ -54,6 +54,23 @@ typedef struct krb5pa static const char *SIGNATURE_KRB5PA = "$krb5pa$23$"; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: self-test failed + return true; + } + } + } + + return false; +} + char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) { char *jit_build_options = NULL; @@ -256,6 +273,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -321,6 +340,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = MODULE_DEFAULT; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_07700.c b/src/modules/module_07700.c index af5dd78d6..2642a0bb7 100644 --- a/src/modules/module_07700.c +++ b/src/modules/module_07700.c @@ -142,6 +142,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_07701.c b/src/modules/module_07701.c index 8ca22e4c3..bc852639b 100644 --- a/src/modules/module_07701.c +++ b/src/modules/module_07701.c @@ -134,6 +134,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_07800.c b/src/modules/module_07800.c index 8aa784460..ce94bead4 100644 --- a/src/modules/module_07800.c +++ b/src/modules/module_07800.c @@ -156,6 +156,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_07801.c b/src/modules/module_07801.c index 4caf03e84..17f8777d4 100644 --- a/src/modules/module_07801.c +++ b/src/modules/module_07801.c @@ -156,6 +156,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_07900.c b/src/modules/module_07900.c index 7afbe2221..29e458de3 100644 --- a/src/modules/module_07900.c +++ b/src/modules/module_07900.c @@ -51,17 +51,6 @@ typedef struct drupal7_tmp static const char *SIGNATURE_DRUPAL7 = "$S$"; -bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - // AMD Radeon Pro W5700X, Metal.Version.: 261.13, compiler hangs - if (device_param->is_metal == true) - { - return true; - } - - return false; -} - char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) { char *jit_build_options = NULL; @@ -452,6 +441,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -517,6 +508,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = module_unstable_warning; + module_ctx->module_unstable_warning = MODULE_DEFAULT; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_08000.c b/src/modules/module_08000.c index 0c774b5a6..ba0913cb2 100644 --- a/src/modules/module_08000.c +++ b/src/modules/module_08000.c @@ -50,6 +50,23 @@ const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, static const char *SIGNATURE_SYBASEASE = "0xc007"; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: self-test failed + return true; + } + } + } + + return false; +} + u32 module_pw_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const u32 pw_max = 30; // http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.dc31654.1570/html/sag1/CIHIBDBA.htm @@ -175,6 +192,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -240,6 +259,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = MODULE_DEFAULT; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_08100.c b/src/modules/module_08100.c index 14459192a..8974f004b 100644 --- a/src/modules/module_08100.c +++ b/src/modules/module_08100.c @@ -165,6 +165,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_08200.c b/src/modules/module_08200.c index b8a7b75d9..6ebb1288d 100644 --- a/src/modules/module_08200.c +++ b/src/modules/module_08200.c @@ -60,22 +60,6 @@ typedef struct pbkdf2_sha512_tmp } pbkdf2_sha512_tmp_t; -bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - if (device_param->opencl_device_vendor_id == VENDOR_ID_INTEL_SDK) - { - return true; - } - - // AMD Radeon Pro W5700X, Metal.Version.: 261.13, compiler hangs - if (device_param->is_metal == true) - { - return true; - } - - return false; -} - char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) { char *jit_build_options = NULL; @@ -277,6 +261,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -342,6 +328,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = module_unstable_warning; + module_ctx->module_unstable_warning = MODULE_DEFAULT; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_08300.c b/src/modules/module_08300.c index 74bb19823..c499667ae 100644 --- a/src/modules/module_08300.c +++ b/src/modules/module_08300.c @@ -212,6 +212,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_08400.c b/src/modules/module_08400.c index 199177f2c..455243297 100644 --- a/src/modules/module_08400.c +++ b/src/modules/module_08400.c @@ -142,6 +142,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_08500.c b/src/modules/module_08500.c index 30984cb2e..ecaf87f4e 100644 --- a/src/modules/module_08500.c +++ b/src/modules/module_08500.c @@ -209,6 +209,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_08600.c b/src/modules/module_08600.c index 498e3f378..f1e83a17e 100644 --- a/src/modules/module_08600.c +++ b/src/modules/module_08600.c @@ -106,6 +106,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_08700.c b/src/modules/module_08700.c index 6b3b2970e..39b157196 100644 --- a/src/modules/module_08700.c +++ b/src/modules/module_08700.c @@ -23,8 +23,7 @@ static const u32 OPTI_TYPE = OPTI_TYPE_EARLY_SKIP | OPTI_TYPE_NOT_ITERATED | OPTI_TYPE_RAW_HASH; static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE - | OPTS_TYPE_PT_GENERATE_LE - | OPTS_TYPE_MAXIMUM_THREADS; + | OPTS_TYPE_PT_GENERATE_LE; static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; static const char *ST_PASS = "hashcat"; static const char *ST_HASH = "(GDJ0nDZI8l8RJzlRbemg)"; @@ -62,19 +61,6 @@ u32 module_pw_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED con return pw_max; } -char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - char *jit_build_options = NULL; - - // HIP - if (device_param->opencl_device_vendor_id == VENDOR_ID_AMD_USE_HIP) - { - hc_asprintf (&jit_build_options, "-fno-unroll-loops"); - } - - return jit_build_options; -} - int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED void *digest_buf, MAYBE_UNUSED salt_t *salt, MAYBE_UNUSED void *esalt_buf, MAYBE_UNUSED void *hook_salt_buf, MAYBE_UNUSED hashinfo_t *hash_info, const char *line_buf, MAYBE_UNUSED const int line_len) { u32 *digest = (u32 *) digest_buf; @@ -162,6 +148,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -200,7 +188,7 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_hook23 = MODULE_DEFAULT; module_ctx->module_hook_salt_size = MODULE_DEFAULT; module_ctx->module_hook_size = MODULE_DEFAULT; - module_ctx->module_jit_build_options = module_jit_build_options; + module_ctx->module_jit_build_options = MODULE_DEFAULT; module_ctx->module_jit_cache_disable = MODULE_DEFAULT; module_ctx->module_kernel_accel_max = MODULE_DEFAULT; module_ctx->module_kernel_accel_min = MODULE_DEFAULT; diff --git a/src/modules/module_08800.c b/src/modules/module_08800.c index 6b78e7f16..575c912fe 100644 --- a/src/modules/module_08800.c +++ b/src/modules/module_08800.c @@ -214,6 +214,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_08900.c b/src/modules/module_08900.c index 6f996a3b0..44cf20537 100644 --- a/src/modules/module_08900.c +++ b/src/modules/module_08900.c @@ -10,6 +10,7 @@ #include "bitops.h" #include "convert.h" #include "shared.h" +#include "memory.h" static const u32 ATTACK_EXEC = ATTACK_EXEC_OUTSIDE_KERNEL; static const u32 DGST_POS0 = 0; @@ -25,8 +26,7 @@ static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE | OPTS_TYPE_PT_GENERATE_LE | OPTS_TYPE_MP_MULTI_DISABLE | OPTS_TYPE_NATIVE_THREADS - | OPTS_TYPE_LOOP_PREPARE - | OPTS_TYPE_SELF_TEST_DISABLE; + | OPTS_TYPE_LOOP_PREPARE; static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; static const char *ST_PASS = "hashcat"; static const char *ST_HASH = "SCRYPT:16384:8:1:OTEyNzU0ODg=:Cc8SPjRH1hFQhuIPCdF51uNGtJ2aOY/isuoMlMUsJ8c="; @@ -48,222 +48,9 @@ const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, static const char *SIGNATURE_SCRYPT = "SCRYPT"; -static const u64 SCRYPT_N = 16384; -static const u64 SCRYPT_R = 8; -static const u64 SCRYPT_P = 1; +static const u32 SCRYPT_THREADS = 32; -u32 module_kernel_loops_min (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) -{ - const u32 kernel_loops_min = 1024; - - return kernel_loops_min; -} - -u32 module_kernel_loops_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) -{ - const u32 kernel_loops_max = 1024; - - return kernel_loops_max; -} - -u32 module_kernel_threads_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) -{ - const u32 kernel_threads_max = 32; - - return kernel_threads_max; -} - -u32 module_pw_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) -{ - // this overrides the reductions of PW_MAX in case optimized kernel is selected - // IOW, even in optimized kernel mode it support length 256 - - const u32 pw_max = PW_MAX; - - return pw_max; -} - -u64 module_extra_buffer_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - // we need to set the self-test hash settings to pass the self-test - // the decoder for the self-test is called after this function - - const u64 scrypt_N = (hashes->salts_buf[0].scrypt_N) ? hashes->salts_buf[0].scrypt_N : SCRYPT_N; - const u64 scrypt_r = (hashes->salts_buf[0].scrypt_r) ? hashes->salts_buf[0].scrypt_r : SCRYPT_R; - - const u64 kernel_power_max = ((OPTS_TYPE & OPTS_TYPE_MP_MULTI_DISABLE) ? 1 : device_param->device_processors) * device_param->kernel_threads_max * device_param->kernel_accel_max; - - u64 tmto_start = 0; - u64 tmto_stop = 4; - - if (user_options->scrypt_tmto_chgd == true) - { - tmto_start = user_options->scrypt_tmto; - tmto_stop = user_options->scrypt_tmto; - } - - // size_pws - - const u64 size_pws = kernel_power_max * sizeof (pw_t); - - const u64 size_pws_amp = size_pws; - - // size_pws_comp - - const u64 size_pws_comp = kernel_power_max * (sizeof (u32) * 64); - - // size_pws_idx - - const u64 size_pws_idx = (kernel_power_max + 1) * sizeof (pw_idx_t); - - // size_tmps - - const u64 size_tmps = kernel_power_max * hashconfig->tmp_size; - - // size_hooks - - const u64 size_hooks = kernel_power_max * hashconfig->hook_size; - - u64 size_pws_pre = 4; - u64 size_pws_base = 4; - - if (user_options->slow_candidates == true) - { - // size_pws_pre - - size_pws_pre = kernel_power_max * sizeof (pw_pre_t); - - // size_pws_base - - size_pws_base = kernel_power_max * sizeof (pw_pre_t); - } - - // sometimes device_available_mem and device_maxmem_alloc reported back from the opencl runtime are a bit inaccurate. - // let's add some extra space just to be sure. - // now depends on the kernel-accel value (where scrypt and similar benefits), but also hard minimum 64mb and maximum 1024mb limit - - u64 EXTRA_SPACE = (1024ULL * 1024ULL) * device_param->kernel_accel_max; - - EXTRA_SPACE = MAX (EXTRA_SPACE, ( 64ULL * 1024ULL * 1024ULL)); - EXTRA_SPACE = MIN (EXTRA_SPACE, (1024ULL * 1024ULL * 1024ULL)); - - const u64 scrypt_extra_space - = device_param->size_bfs - + device_param->size_combs - + device_param->size_digests - + device_param->size_esalts - + device_param->size_markov_css - + device_param->size_plains - + device_param->size_results - + device_param->size_root_css - + device_param->size_rules - + device_param->size_rules_c - + device_param->size_salts - + device_param->size_shown - + device_param->size_tm - + device_param->size_st_digests - + device_param->size_st_salts - + device_param->size_st_esalts - + size_pws - + size_pws_amp - + size_pws_comp - + size_pws_idx - + size_tmps - + size_hooks - + size_pws_pre - + size_pws_base - + EXTRA_SPACE; - - bool not_enough_memory = true; - - u64 size_scrypt = 0; - - u64 tmto; - - for (tmto = tmto_start; tmto <= tmto_stop; tmto++) - { - size_scrypt = (128ULL * scrypt_r) * scrypt_N; - - size_scrypt /= 1ull << tmto; - - size_scrypt *= kernel_power_max; - - if ((size_scrypt / 4) > device_param->device_maxmem_alloc) continue; - - if ((size_scrypt + scrypt_extra_space) > device_param->device_available_mem) continue; - - not_enough_memory = false; - - break; - } - - if (not_enough_memory == true) return -1; - - return size_scrypt; -} - -u64 module_tmp_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) -{ - const u64 tmp_size = 0; // we'll add some later - - return tmp_size; -} - -u64 module_extra_tmp_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes) -{ - const u64 scrypt_N = (hashes->salts_buf[0].scrypt_N) ? hashes->salts_buf[0].scrypt_N : SCRYPT_N; - const u64 scrypt_r = (hashes->salts_buf[0].scrypt_r) ? hashes->salts_buf[0].scrypt_r : SCRYPT_R; - const u64 scrypt_p = (hashes->salts_buf[0].scrypt_p) ? hashes->salts_buf[0].scrypt_p : SCRYPT_P; - - // we need to check that all hashes have the same scrypt settings - - for (u32 i = 1; i < hashes->salts_cnt; i++) - { - if ((hashes->salts_buf[i].scrypt_N != scrypt_N) - || (hashes->salts_buf[i].scrypt_r != scrypt_r) - || (hashes->salts_buf[i].scrypt_p != scrypt_p)) - { - return -1; - } - } - - const u64 tmp_size = 128ULL * scrypt_r * scrypt_p; - - return tmp_size; -} - -bool module_warmup_disable (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) -{ - return true; -} - -char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - const u64 scrypt_N = (hashes->salts_buf[0].scrypt_N) ? hashes->salts_buf[0].scrypt_N : SCRYPT_N; - const u64 scrypt_r = (hashes->salts_buf[0].scrypt_r) ? hashes->salts_buf[0].scrypt_r : SCRYPT_R; - const u64 scrypt_p = (hashes->salts_buf[0].scrypt_p) ? hashes->salts_buf[0].scrypt_p : SCRYPT_P; - - const u64 extra_buffer_size = device_param->extra_buffer_size; - - const u64 kernel_power_max = ((OPTS_TYPE & OPTS_TYPE_MP_MULTI_DISABLE) ? 1 : device_param->device_processors) * device_param->kernel_threads_max * device_param->kernel_accel_max; - - const u64 size_scrypt = 128ULL * scrypt_r * scrypt_N; - - const u64 scrypt_tmto_final = (kernel_power_max * size_scrypt) / extra_buffer_size; - - const u64 tmp_size = 128ULL * scrypt_r * scrypt_p; - - char *jit_build_options = NULL; - - hc_asprintf (&jit_build_options, "-D SCRYPT_N=%u -D SCRYPT_R=%u -D SCRYPT_P=%u -D SCRYPT_TMTO=%" PRIu64 " -D SCRYPT_TMP_ELEM=%" PRIu64, - hashes->salts_buf[0].scrypt_N, - hashes->salts_buf[0].scrypt_r, - hashes->salts_buf[0].scrypt_p, - scrypt_tmto_final, - tmp_size / 16); - - return jit_build_options; -} +#include "scrypt_common.c" int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED void *digest_buf, MAYBE_UNUSED salt_t *salt, MAYBE_UNUSED void *esalt_buf, MAYBE_UNUSED void *hook_salt_buf, MAYBE_UNUSED hashinfo_t *hash_info, const char *line_buf, MAYBE_UNUSED const int line_len) { @@ -392,6 +179,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -402,9 +191,9 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_dgst_size = module_dgst_size; module_ctx->module_dictstat_disable = MODULE_DEFAULT; module_ctx->module_esalt_size = MODULE_DEFAULT; - module_ctx->module_extra_buffer_size = module_extra_buffer_size; - module_ctx->module_extra_tmp_size = module_extra_tmp_size; - module_ctx->module_extra_tuningdb_block = MODULE_DEFAULT; + module_ctx->module_extra_buffer_size = scrypt_module_extra_buffer_size; + module_ctx->module_extra_tmp_size = scrypt_module_extra_tmp_size; + module_ctx->module_extra_tuningdb_block = scrypt_module_extra_tuningdb_block; module_ctx->module_forced_outfile_format = MODULE_DEFAULT; module_ctx->module_hash_binary_count = MODULE_DEFAULT; module_ctx->module_hash_binary_parse = MODULE_DEFAULT; @@ -430,13 +219,13 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_hook23 = MODULE_DEFAULT; module_ctx->module_hook_salt_size = MODULE_DEFAULT; module_ctx->module_hook_size = MODULE_DEFAULT; - module_ctx->module_jit_build_options = module_jit_build_options; + module_ctx->module_jit_build_options = scrypt_module_jit_build_options; module_ctx->module_jit_cache_disable = MODULE_DEFAULT; module_ctx->module_kernel_accel_max = MODULE_DEFAULT; module_ctx->module_kernel_accel_min = MODULE_DEFAULT; - module_ctx->module_kernel_loops_max = module_kernel_loops_max; - module_ctx->module_kernel_loops_min = module_kernel_loops_min; - module_ctx->module_kernel_threads_max = module_kernel_threads_max; + module_ctx->module_kernel_loops_max = scrypt_module_kernel_loops_max; + module_ctx->module_kernel_loops_min = scrypt_module_kernel_loops_min; + module_ctx->module_kernel_threads_max = scrypt_module_kernel_threads_max; module_ctx->module_kernel_threads_min = MODULE_DEFAULT; module_ctx->module_kern_type = module_kern_type; module_ctx->module_kern_type_dynamic = MODULE_DEFAULT; @@ -448,7 +237,7 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_potfile_disable = MODULE_DEFAULT; module_ctx->module_potfile_keep_all_hashes = MODULE_DEFAULT; module_ctx->module_pwdump_column = MODULE_DEFAULT; - module_ctx->module_pw_max = module_pw_max; + module_ctx->module_pw_max = MODULE_DEFAULT; module_ctx->module_pw_min = MODULE_DEFAULT; module_ctx->module_salt_max = MODULE_DEFAULT; module_ctx->module_salt_min = MODULE_DEFAULT; @@ -456,7 +245,7 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_separator = MODULE_DEFAULT; module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; - module_ctx->module_tmp_size = module_tmp_size; + module_ctx->module_tmp_size = scrypt_module_tmp_size; module_ctx->module_unstable_warning = MODULE_DEFAULT; - module_ctx->module_warmup_disable = module_warmup_disable; + module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_09000.c b/src/modules/module_09000.c index 4ed3b41ff..5e0f66941 100644 --- a/src/modules/module_09000.c +++ b/src/modules/module_09000.c @@ -226,6 +226,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_09100.c b/src/modules/module_09100.c index b0378756a..c0195f136 100644 --- a/src/modules/module_09100.c +++ b/src/modules/module_09100.c @@ -200,6 +200,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_09200.c b/src/modules/module_09200.c index 495dea9fd..75266262d 100644 --- a/src/modules/module_09200.c +++ b/src/modules/module_09200.c @@ -213,6 +213,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_09300.c b/src/modules/module_09300.c index b4e06bef9..4293053ab 100644 --- a/src/modules/module_09300.c +++ b/src/modules/module_09300.c @@ -10,6 +10,7 @@ #include "bitops.h" #include "convert.h" #include "shared.h" +#include "memory.h" static const u32 ATTACK_EXEC = ATTACK_EXEC_OUTSIDE_KERNEL; static const u32 DGST_POS0 = 0; @@ -25,8 +26,7 @@ static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE | OPTS_TYPE_PT_GENERATE_LE | OPTS_TYPE_MP_MULTI_DISABLE | OPTS_TYPE_NATIVE_THREADS - | OPTS_TYPE_LOOP_PREPARE - | OPTS_TYPE_SELF_TEST_DISABLE; + | OPTS_TYPE_LOOP_PREPARE; static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; static const char *ST_PASS = "hashcat"; static const char *ST_HASH = "$9$87023684531115$phio0TBQwaO7KZ8toQFyGFyDvyOzidaypRWN0uKX0hU"; @@ -48,222 +48,9 @@ const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, static const char *SIGNATURE_CISCO9 = "$9$"; -static const u64 SCRYPT_N = 16384; -static const u64 SCRYPT_R = 1; -static const u64 SCRYPT_P = 1; +static const u32 SCRYPT_THREADS = 32; -u32 module_kernel_loops_min (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) -{ - const u32 kernel_loops_min = 1024; - - return kernel_loops_min; -} - -u32 module_kernel_loops_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) -{ - const u32 kernel_loops_max = 1024; - - return kernel_loops_max; -} - -u32 module_kernel_threads_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) -{ - const u32 kernel_threads_max = 32; - - return kernel_threads_max; -} - -u32 module_pw_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) -{ - // this overrides the reductions of PW_MAX in case optimized kernel is selected - // IOW, even in optimized kernel mode it support length 256 - - const u32 pw_max = PW_MAX; - - return pw_max; -} - -u64 module_extra_buffer_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - // we need to set the self-test hash settings to pass the self-test - // the decoder for the self-test is called after this function - - const u64 scrypt_N = (hashes->salts_buf[0].scrypt_N) ? hashes->salts_buf[0].scrypt_N : SCRYPT_N; - const u64 scrypt_r = (hashes->salts_buf[0].scrypt_r) ? hashes->salts_buf[0].scrypt_r : SCRYPT_R; - - const u64 kernel_power_max = ((OPTS_TYPE & OPTS_TYPE_MP_MULTI_DISABLE) ? 1 : device_param->device_processors) * device_param->kernel_threads_max * device_param->kernel_accel_max; - - u64 tmto_start = 0; - u64 tmto_stop = 4; - - if (user_options->scrypt_tmto_chgd == true) - { - tmto_start = user_options->scrypt_tmto; - tmto_stop = user_options->scrypt_tmto; - } - - // size_pws - - const u64 size_pws = kernel_power_max * sizeof (pw_t); - - const u64 size_pws_amp = size_pws; - - // size_pws_comp - - const u64 size_pws_comp = kernel_power_max * (sizeof (u32) * 64); - - // size_pws_idx - - const u64 size_pws_idx = (kernel_power_max + 1) * sizeof (pw_idx_t); - - // size_tmps - - const u64 size_tmps = kernel_power_max * hashconfig->tmp_size; - - // size_hooks - - const u64 size_hooks = kernel_power_max * hashconfig->hook_size; - - u64 size_pws_pre = 4; - u64 size_pws_base = 4; - - if (user_options->slow_candidates == true) - { - // size_pws_pre - - size_pws_pre = kernel_power_max * sizeof (pw_pre_t); - - // size_pws_base - - size_pws_base = kernel_power_max * sizeof (pw_pre_t); - } - - // sometimes device_available_mem and device_maxmem_alloc reported back from the opencl runtime are a bit inaccurate. - // let's add some extra space just to be sure. - // now depends on the kernel-accel value (where scrypt and similar benefits), but also hard minimum 64mb and maximum 1024mb limit - - u64 EXTRA_SPACE = (1024ULL * 1024ULL) * device_param->kernel_accel_max; - - EXTRA_SPACE = MAX (EXTRA_SPACE, ( 64ULL * 1024ULL * 1024ULL)); - EXTRA_SPACE = MIN (EXTRA_SPACE, (1024ULL * 1024ULL * 1024ULL)); - - const u64 scrypt_extra_space - = device_param->size_bfs - + device_param->size_combs - + device_param->size_digests - + device_param->size_esalts - + device_param->size_markov_css - + device_param->size_plains - + device_param->size_results - + device_param->size_root_css - + device_param->size_rules - + device_param->size_rules_c - + device_param->size_salts - + device_param->size_shown - + device_param->size_tm - + device_param->size_st_digests - + device_param->size_st_salts - + device_param->size_st_esalts - + size_pws - + size_pws_amp - + size_pws_comp - + size_pws_idx - + size_tmps - + size_hooks - + size_pws_pre - + size_pws_base - + EXTRA_SPACE; - - bool not_enough_memory = true; - - u64 size_scrypt = 0; - - u64 tmto; - - for (tmto = tmto_start; tmto <= tmto_stop; tmto++) - { - size_scrypt = (128ULL * scrypt_r) * scrypt_N; - - size_scrypt /= 1ull << tmto; - - size_scrypt *= kernel_power_max; - - if ((size_scrypt / 4) > device_param->device_maxmem_alloc) continue; - - if ((size_scrypt + scrypt_extra_space) > device_param->device_available_mem) continue; - - not_enough_memory = false; - - break; - } - - if (not_enough_memory == true) return -1; - - return size_scrypt; -} - -u64 module_tmp_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) -{ - const u64 tmp_size = 0; // we'll add some later - - return tmp_size; -} - -u64 module_extra_tmp_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes) -{ - const u64 scrypt_N = (hashes->salts_buf[0].scrypt_N) ? hashes->salts_buf[0].scrypt_N : SCRYPT_N; - const u64 scrypt_r = (hashes->salts_buf[0].scrypt_r) ? hashes->salts_buf[0].scrypt_r : SCRYPT_R; - const u64 scrypt_p = (hashes->salts_buf[0].scrypt_p) ? hashes->salts_buf[0].scrypt_p : SCRYPT_P; - - // we need to check that all hashes have the same scrypt settings - - for (u32 i = 1; i < hashes->salts_cnt; i++) - { - if ((hashes->salts_buf[i].scrypt_N != scrypt_N) - || (hashes->salts_buf[i].scrypt_r != scrypt_r) - || (hashes->salts_buf[i].scrypt_p != scrypt_p)) - { - return -1; - } - } - - const u64 tmp_size = 128ULL * scrypt_r * scrypt_p; - - return tmp_size; -} - -bool module_warmup_disable (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) -{ - return true; -} - -char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - const u64 scrypt_N = (hashes->salts_buf[0].scrypt_N) ? hashes->salts_buf[0].scrypt_N : SCRYPT_N; - const u64 scrypt_r = (hashes->salts_buf[0].scrypt_r) ? hashes->salts_buf[0].scrypt_r : SCRYPT_R; - const u64 scrypt_p = (hashes->salts_buf[0].scrypt_p) ? hashes->salts_buf[0].scrypt_p : SCRYPT_P; - - const u64 extra_buffer_size = device_param->extra_buffer_size; - - const u64 kernel_power_max = ((OPTS_TYPE & OPTS_TYPE_MP_MULTI_DISABLE) ? 1 : device_param->device_processors) * device_param->kernel_threads_max * device_param->kernel_accel_max; - - const u64 size_scrypt = 128ULL * scrypt_r * scrypt_N; - - const u64 scrypt_tmto_final = (kernel_power_max * size_scrypt) / extra_buffer_size; - - const u64 tmp_size = 128ULL * scrypt_r * scrypt_p; - - char *jit_build_options = NULL; - - hc_asprintf (&jit_build_options, "-D SCRYPT_N=%u -D SCRYPT_R=%u -D SCRYPT_P=%u -D SCRYPT_TMTO=%" PRIu64 " -D SCRYPT_TMP_ELEM=%" PRIu64, - hashes->salts_buf[0].scrypt_N, - hashes->salts_buf[0].scrypt_r, - hashes->salts_buf[0].scrypt_p, - scrypt_tmto_final, - tmp_size / 16); - - return jit_build_options; -} +#include "scrypt_common.c" int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED void *digest_buf, MAYBE_UNUSED salt_t *salt, MAYBE_UNUSED void *esalt_buf, MAYBE_UNUSED void *hook_salt_buf, MAYBE_UNUSED hashinfo_t *hash_info, const char *line_buf, MAYBE_UNUSED const int line_len) { @@ -305,14 +92,15 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE salt->salt_len = salt_len; - salt->scrypt_N = SCRYPT_N; - salt->scrypt_r = SCRYPT_R; - salt->scrypt_p = SCRYPT_P; + // fixed scrypt configuration in this mode + + salt->scrypt_N = 16384; + salt->scrypt_r = 1; + salt->scrypt_p = 1; salt->salt_iter = salt->scrypt_N; salt->salt_repeats = salt->scrypt_p - 1; - // base64 decode hash const u8 *hash_pos = token.buf[2]; @@ -353,6 +141,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -363,9 +153,9 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_dgst_size = module_dgst_size; module_ctx->module_dictstat_disable = MODULE_DEFAULT; module_ctx->module_esalt_size = MODULE_DEFAULT; - module_ctx->module_extra_buffer_size = module_extra_buffer_size; - module_ctx->module_extra_tmp_size = module_extra_tmp_size; - module_ctx->module_extra_tuningdb_block = MODULE_DEFAULT; + module_ctx->module_extra_buffer_size = scrypt_module_extra_buffer_size; + module_ctx->module_extra_tmp_size = scrypt_module_extra_tmp_size; + module_ctx->module_extra_tuningdb_block = scrypt_module_extra_tuningdb_block; module_ctx->module_forced_outfile_format = MODULE_DEFAULT; module_ctx->module_hash_binary_count = MODULE_DEFAULT; module_ctx->module_hash_binary_parse = MODULE_DEFAULT; @@ -391,13 +181,13 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_hook23 = MODULE_DEFAULT; module_ctx->module_hook_salt_size = MODULE_DEFAULT; module_ctx->module_hook_size = MODULE_DEFAULT; - module_ctx->module_jit_build_options = module_jit_build_options; + module_ctx->module_jit_build_options = scrypt_module_jit_build_options; module_ctx->module_jit_cache_disable = MODULE_DEFAULT; module_ctx->module_kernel_accel_max = MODULE_DEFAULT; module_ctx->module_kernel_accel_min = MODULE_DEFAULT; - module_ctx->module_kernel_loops_max = module_kernel_loops_max; - module_ctx->module_kernel_loops_min = module_kernel_loops_min; - module_ctx->module_kernel_threads_max = module_kernel_threads_max; + module_ctx->module_kernel_loops_max = scrypt_module_kernel_loops_max; + module_ctx->module_kernel_loops_min = scrypt_module_kernel_loops_min; + module_ctx->module_kernel_threads_max = scrypt_module_kernel_threads_max; module_ctx->module_kernel_threads_min = MODULE_DEFAULT; module_ctx->module_kern_type = module_kern_type; module_ctx->module_kern_type_dynamic = MODULE_DEFAULT; @@ -409,7 +199,7 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_potfile_disable = MODULE_DEFAULT; module_ctx->module_potfile_keep_all_hashes = MODULE_DEFAULT; module_ctx->module_pwdump_column = MODULE_DEFAULT; - module_ctx->module_pw_max = module_pw_max; + module_ctx->module_pw_max = MODULE_DEFAULT; module_ctx->module_pw_min = MODULE_DEFAULT; module_ctx->module_salt_max = MODULE_DEFAULT; module_ctx->module_salt_min = MODULE_DEFAULT; @@ -417,7 +207,7 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_separator = MODULE_DEFAULT; module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; - module_ctx->module_tmp_size = module_tmp_size; + module_ctx->module_tmp_size = scrypt_module_tmp_size; module_ctx->module_unstable_warning = MODULE_DEFAULT; - module_ctx->module_warmup_disable = module_warmup_disable; + module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_09400.c b/src/modules/module_09400.c index a5961f4fb..756607efa 100644 --- a/src/modules/module_09400.c +++ b/src/modules/module_09400.c @@ -256,6 +256,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_09500.c b/src/modules/module_09500.c index a9b179889..c91ae9511 100644 --- a/src/modules/module_09500.c +++ b/src/modules/module_09500.c @@ -266,6 +266,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = module_deep_comp_kernel; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_09600.c b/src/modules/module_09600.c index 9232e543f..e0f7727fe 100644 --- a/src/modules/module_09600.c +++ b/src/modules/module_09600.c @@ -24,9 +24,7 @@ static const u32 OPTI_TYPE = OPTI_TYPE_ZERO_BYTE | OPTI_TYPE_SLOW_HASH_SIMD_LOOP; static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE | OPTS_TYPE_PT_GENERATE_LE - | OPTS_TYPE_MP_MULTI_DISABLE - | OPTS_TYPE_DEEP_COMP_KERNEL - | OPTS_TYPE_MAXIMUM_THREADS; + | OPTS_TYPE_DEEP_COMP_KERNEL; static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; static const char *ST_PASS = "hashcat"; static const char *ST_HASH = "$office$*2013*100000*256*16*67805436882475302087847656644837*0c392d3b9ca889656d1e615c54f9f3c9*612b79e33b96322c3253fc8a0f314463cd76bc4efe1352f7efffca0f374f7e4b"; @@ -61,6 +59,30 @@ typedef struct office2013_tmp static const char *SIGNATURE_OFFICE2013 = "$office$"; +u32 module_kernel_loops_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) +{ + const u32 kernel_loops_max = 1000; + + return kernel_loops_max; +} + +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm09600_init' pipeline, Compilation failed + return true; + } + } + } + + return false; +} + char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) { char *jit_build_options = NULL; @@ -300,6 +322,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = module_deep_comp_kernel; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -365,6 +389,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_09700.c b/src/modules/module_09700.c index a50e380b7..8050babb7 100644 --- a/src/modules/module_09700.c +++ b/src/modules/module_09700.c @@ -58,6 +58,23 @@ static const char *SIGNATURE_OLDOFFICE = "$oldoffice$"; static const char *SIGNATURE_OLDOFFICE0 = "$oldoffice$0"; static const char *SIGNATURE_OLDOFFICE1 = "$oldoffice$1"; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: self-test failed + return true; + } + } + } + + return false; +} + char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) { char *jit_build_options = NULL; @@ -241,6 +258,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -306,6 +325,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = MODULE_DEFAULT; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_09710.c b/src/modules/module_09710.c index 10ca46814..1698ba1bc 100644 --- a/src/modules/module_09710.c +++ b/src/modules/module_09710.c @@ -28,6 +28,7 @@ static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE | OPTS_TYPE_PT_ALWAYS_HEXIFY | OPTS_TYPE_AUTODETECT_DISABLE; static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; +static const char *BENCHMARK_MASK = "?b?b?b?b?b"; static const char *ST_PASS = "\x91\xb2\xe0\x62\xb9"; static const char *ST_HASH = "$oldoffice$0*55045061647456688860411218030058*e7e24d163fbd743992d4b8892bf3f2f7*493410dbc832557d3fe1870ace8397e2"; @@ -59,6 +60,23 @@ static const char *SIGNATURE_OLDOFFICE = "$oldoffice$"; static const char *SIGNATURE_OLDOFFICE0 = "$oldoffice$0"; static const char *SIGNATURE_OLDOFFICE1 = "$oldoffice$1"; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: self-test failed + return true; + } + } + } + + return false; +} + char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) { char *jit_build_options = NULL; @@ -117,7 +135,7 @@ u32 module_pw_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED con const char *module_benchmark_mask (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { - return "?b?b?b?b?b"; + return BENCHMARK_MASK; } u32 module_forced_outfile_format (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) @@ -261,6 +279,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = module_benchmark_mask; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -326,6 +346,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = MODULE_DEFAULT; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_09720.c b/src/modules/module_09720.c index ee1b6c6e8..daf23c6ea 100644 --- a/src/modules/module_09720.c +++ b/src/modules/module_09720.c @@ -273,6 +273,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_09800.c b/src/modules/module_09800.c index 7c3036d5c..31085ff4c 100644 --- a/src/modules/module_09800.c +++ b/src/modules/module_09800.c @@ -60,6 +60,23 @@ static const char *SIGNATURE_OLDOFFICE = "$oldoffice$"; static const char *SIGNATURE_OLDOFFICE3 = "$oldoffice$3"; static const char *SIGNATURE_OLDOFFICE4 = "$oldoffice$4"; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: self-test failed + return true; + } + } + } + + return false; +} + char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) { char *jit_build_options = NULL; @@ -84,7 +101,9 @@ char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAY } else { - native_threads = device_param->kernel_preferred_wgs_multiple; + const u32 possible = MIN (device_param->device_local_mem_size / 256, 32768 / 256); + + native_threads = possible - (possible % device_param->kernel_preferred_wgs_multiple); } #endif @@ -299,6 +318,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -364,6 +385,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = MODULE_DEFAULT; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_09810.c b/src/modules/module_09810.c index d0c838e01..a4aa244e4 100644 --- a/src/modules/module_09810.c +++ b/src/modules/module_09810.c @@ -27,6 +27,7 @@ static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE | OPTS_TYPE_PT_ALWAYS_HEXIFY | OPTS_TYPE_AUTODETECT_DISABLE; static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; +static const char *BENCHMARK_MASK = "?b?b?b?b?b"; static const char *ST_PASS = "\xb8\xf6\x36\x19\xca"; static const char *ST_HASH = "$oldoffice$3*83328705222323020515404251156288*2855956a165ff6511bc7f4cd77b9e101*941861655e73a09c40f7b1e9dfd0c256ed285acd"; @@ -60,6 +61,23 @@ static const char *SIGNATURE_OLDOFFICE = "$oldoffice$"; static const char *SIGNATURE_OLDOFFICE3 = "$oldoffice$3"; static const char *SIGNATURE_OLDOFFICE4 = "$oldoffice$4"; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: self-test failed + return true; + } + } + } + + return false; +} + char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) { char *jit_build_options = NULL; @@ -118,7 +136,7 @@ u32 module_pw_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED con const char *module_benchmark_mask (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { - return "?b?b?b?b?b"; + return BENCHMARK_MASK; } u32 module_forced_outfile_format (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) @@ -318,6 +336,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = module_benchmark_mask; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -383,6 +403,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = MODULE_DEFAULT; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_09820.c b/src/modules/module_09820.c index f356fcbcb..99314896d 100644 --- a/src/modules/module_09820.c +++ b/src/modules/module_09820.c @@ -338,6 +338,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_09900.c b/src/modules/module_09900.c index 3d845f55a..9e772ea46 100644 --- a/src/modules/module_09900.c +++ b/src/modules/module_09900.c @@ -119,6 +119,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_10000.c b/src/modules/module_10000.c index 47901e03c..33fa062c0 100644 --- a/src/modules/module_10000.c +++ b/src/modules/module_10000.c @@ -222,6 +222,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_10100.c b/src/modules/module_10100.c index 096b8eba2..149cc5bf2 100644 --- a/src/modules/module_10100.c +++ b/src/modules/module_10100.c @@ -137,6 +137,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_10200.c b/src/modules/module_10200.c index 8c743a518..502984264 100644 --- a/src/modules/module_10200.c +++ b/src/modules/module_10200.c @@ -183,6 +183,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_10300.c b/src/modules/module_10300.c index 85937d115..cc83dc1d5 100644 --- a/src/modules/module_10300.c +++ b/src/modules/module_10300.c @@ -185,6 +185,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_10400.c b/src/modules/module_10400.c index 079325392..0f5ecb970 100644 --- a/src/modules/module_10400.c +++ b/src/modules/module_10400.c @@ -67,6 +67,23 @@ typedef struct pdf static const char *SIGNATURE_PDF = "$pdf$"; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: self-test failed + return true; + } + } + } + + return false; +} + char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) { char *jit_build_options = NULL; @@ -338,6 +355,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -403,6 +422,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = MODULE_DEFAULT; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_10410.c b/src/modules/module_10410.c index 265a15662..063ac4916 100644 --- a/src/modules/module_10410.c +++ b/src/modules/module_10410.c @@ -26,6 +26,7 @@ static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE | OPTS_TYPE_PT_ALWAYS_HEXIFY | OPTS_TYPE_AUTODETECT_DISABLE; static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; +static const char *BENCHMARK_MASK = "?b?b?b?b?b"; static const char *ST_PASS = "\x6a\x8a\xed\xcc\xb7"; static const char *ST_HASH = "$pdf$1*2*40*-1*0*16*01221086741440841668371056103222*32*27c3fecef6d46a78eb61b8b4dbc690f5f8a2912bbb9afc842c12d79481568b74*32*0000000000000000000000000000000000000000000000000000000000000000"; @@ -69,6 +70,23 @@ typedef struct pdf static const char *SIGNATURE_PDF = "$pdf$"; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: self-test failed + return true; + } + } + } + + return false; +} + char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) { char *jit_build_options = NULL; @@ -127,7 +145,7 @@ u32 module_pw_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED con const char *module_benchmark_mask (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { - return "?b?b?b?b?b"; + return BENCHMARK_MASK; } u32 module_forced_outfile_format (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) @@ -359,6 +377,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = module_benchmark_mask; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -424,6 +444,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = MODULE_DEFAULT; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_10420.c b/src/modules/module_10420.c index 14054efc7..af90f250e 100644 --- a/src/modules/module_10420.c +++ b/src/modules/module_10420.c @@ -373,6 +373,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_10500.c b/src/modules/module_10500.c index 0e9026ef1..7c746ef10 100644 --- a/src/modules/module_10500.c +++ b/src/modules/module_10500.c @@ -91,6 +91,23 @@ static void md5_complete_no_limit (u32 digest[4], const u32 *plain, const u32 pl digest[3] = md5_ctx.h[3]; } +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: self-test failed + return true; + } + } + } + + return false; +} + char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) { char *jit_build_options = NULL; @@ -469,6 +486,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -534,6 +553,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_10600.c b/src/modules/module_10600.c index 6cd76cbbd..66506fb1d 100644 --- a/src/modules/module_10600.c +++ b/src/modules/module_10600.c @@ -291,6 +291,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_10700.c b/src/modules/module_10700.c index 05be37b65..4a7725e52 100644 --- a/src/modules/module_10700.c +++ b/src/modules/module_10700.c @@ -24,8 +24,7 @@ static const u32 OPTI_TYPE = OPTI_TYPE_ZERO_BYTE | OPTI_TYPE_REGISTER_LIMIT; static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE | OPTS_TYPE_PT_GENERATE_LE - | OPTS_TYPE_HASH_COPY - | OPTS_TYPE_MAXIMUM_THREADS; + | OPTS_TYPE_HASH_COPY; static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; static const char *ST_PASS = "hashcat"; static const char *ST_HASH = "$pdf$5*6*256*-1028*1*16*62137640825124540503886403748430*127*0391647179352257f7181236ba371e540c2dbb82fac1c462313eb58b772a54956213764082512454050388640374843000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000*127*00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000*32*0000000000000000000000000000000000000000000000000000000000000000*32*0000000000000000000000000000000000000000000000000000000000000000"; @@ -82,14 +81,41 @@ typedef struct pdf17l8_tmp static const char *SIGNATURE_PDF = "$pdf$"; static const int ROUNDS_PDF17L8 = 64; +u32 module_kernel_loops_min (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) +{ + u32 kernel_loops_min = KERNEL_LOOPS_MIN; + + if (hashconfig->opti_type & OPTI_TYPE_OPTIMIZED_KERNEL) + { + kernel_loops_min = 1; + } + + return kernel_loops_min; +} + +u32 module_kernel_loops_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) +{ + u32 kernel_loops_max = KERNEL_LOOPS_MAX; + + if (hashconfig->opti_type & OPTI_TYPE_OPTIMIZED_KERNEL) + { + kernel_loops_max = 1; + } + + return kernel_loops_max; +} + bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) { - // AppleM1, OpenCL, MTLCompilerService, createKernel never-end with pure kernel if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) { - if ((hashconfig->opti_type & OPTI_TYPE_OPTIMIZED_KERNEL) == 0) + if (device_param->is_metal == false) { - return true; + if (strncmp (device_param->device_name, "Apple M", 7) == 0) + { + // AppleM1, OpenCL, MTLCompilerService, createKernel never-end with pure kernel and newComputePipelineState failed with optimized kernel + return true; + } } } @@ -124,47 +150,40 @@ u32 module_pw_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED con return pw_max; } -u32 module_kernel_threads_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) -{ - const u32 kernel_threads_max = 256; - - return kernel_threads_max; -} - char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) { char *jit_build_options = NULL; - if (device_param->is_metal == true) + if (hashconfig->opti_type & OPTI_TYPE_OPTIMIZED_KERNEL) { - hc_asprintf (&jit_build_options, "-D FORCE_DISABLE_SHM"); - } + u32 native_threads = 0; - if ((device_param->opencl_device_vendor_id == VENDOR_ID_AMD) && (device_param->has_vperm == false)) - { - // this is a workaround to avoid a Segmentation fault and self-test fails on AMD GPU PRO - - hc_asprintf (&jit_build_options, "-cl-opt-disable"); - } - - if ((device_param->opencl_device_vendor_id == VENDOR_ID_AMD) && (device_param->has_vperm == true)) - { - if ((hashconfig->opti_type & OPTI_TYPE_OPTIMIZED_KERNEL) == 0) + if (device_param->opencl_device_type & CL_DEVICE_TYPE_CPU) { - // this is a workaround to avoid a compile time of over an hour (and then to not work) on ROCM in pure kernel mode - - hc_asprintf (&jit_build_options, "-cl-opt-disable"); + native_threads = 1; } - } - - if (device_param->opencl_device_vendor_id == VENDOR_ID_AMD_USE_HIP) - { - if ((hashconfig->opti_type & OPTI_TYPE_OPTIMIZED_KERNEL) == 1) + else if (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU) { - // this is a workaround to avoid a compile time of over an hour (and then to not work) on ROCM in pure kernel mode + #if defined (__APPLE__) - hc_asprintf (&jit_build_options, "-D NO_INLINE"); + native_threads = 32; + + #else + + if (device_param->device_local_mem_size < 49152) + { + native_threads = MIN (device_param->kernel_preferred_wgs_multiple, 32); // We can't just set 32, because Intel GPU need 8 + } + else + { + // to go over 48KiB, we need to use dynamic shared mem + native_threads = 49152 / 128; + } + + #endif } + + hc_asprintf (&jit_build_options, "-D FIXED_LOCAL_SIZE=%u -D _unroll", native_threads); } return jit_build_options; @@ -354,6 +373,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -396,9 +417,9 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_jit_cache_disable = MODULE_DEFAULT; module_ctx->module_kernel_accel_max = MODULE_DEFAULT; module_ctx->module_kernel_accel_min = MODULE_DEFAULT; - module_ctx->module_kernel_loops_max = MODULE_DEFAULT; - module_ctx->module_kernel_loops_min = MODULE_DEFAULT; - module_ctx->module_kernel_threads_max = module_kernel_threads_max; + module_ctx->module_kernel_loops_max = module_kernel_loops_max; + module_ctx->module_kernel_loops_min = module_kernel_loops_min; + module_ctx->module_kernel_threads_max = MODULE_DEFAULT; module_ctx->module_kernel_threads_min = MODULE_DEFAULT; module_ctx->module_kern_type = module_kern_type; module_ctx->module_kern_type_dynamic = MODULE_DEFAULT; diff --git a/src/modules/module_10800.c b/src/modules/module_10800.c index d121df35b..61258f778 100644 --- a/src/modules/module_10800.c +++ b/src/modules/module_10800.c @@ -211,6 +211,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_10810.c b/src/modules/module_10810.c index a21fcdb56..3c31bbdcf 100644 --- a/src/modules/module_10810.c +++ b/src/modules/module_10810.c @@ -223,6 +223,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_10820.c b/src/modules/module_10820.c index 97dd5b775..e4379bf54 100644 --- a/src/modules/module_10820.c +++ b/src/modules/module_10820.c @@ -223,6 +223,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_10830.c b/src/modules/module_10830.c index 6e3831d78..5e71c75ff 100644 --- a/src/modules/module_10830.c +++ b/src/modules/module_10830.c @@ -224,6 +224,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_10840.c b/src/modules/module_10840.c index 77e070dc0..d75d03cc3 100644 --- a/src/modules/module_10840.c +++ b/src/modules/module_10840.c @@ -224,6 +224,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_10870.c b/src/modules/module_10870.c index 3e2e4bfdd..c60b34586 100644 --- a/src/modules/module_10870.c +++ b/src/modules/module_10870.c @@ -198,6 +198,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_10900.c b/src/modules/module_10900.c index 75385f023..c1bf6b92f 100644 --- a/src/modules/module_10900.c +++ b/src/modules/module_10900.c @@ -228,6 +228,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_10901.c b/src/modules/module_10901.c index b0444bb8d..a5c2a2fd8 100644 --- a/src/modules/module_10901.c +++ b/src/modules/module_10901.c @@ -203,6 +203,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_11000.c b/src/modules/module_11000.c index 60ab88df0..916f0ffa1 100644 --- a/src/modules/module_11000.c +++ b/src/modules/module_11000.c @@ -45,6 +45,15 @@ u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig, const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; } const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; } +char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + char *jit_build_options = NULL; + + hc_asprintf (&jit_build_options, "-D NO_FUNNELSHIFT"); + + return jit_build_options; +} + u32 module_salt_min (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const u32 salt_min = 56; @@ -141,6 +150,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -179,7 +190,7 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_hook23 = MODULE_DEFAULT; module_ctx->module_hook_salt_size = MODULE_DEFAULT; module_ctx->module_hook_size = MODULE_DEFAULT; - module_ctx->module_jit_build_options = MODULE_DEFAULT; + module_ctx->module_jit_build_options = module_jit_build_options; module_ctx->module_jit_cache_disable = MODULE_DEFAULT; module_ctx->module_kernel_accel_max = MODULE_DEFAULT; module_ctx->module_kernel_accel_min = MODULE_DEFAULT; diff --git a/src/modules/module_11100.c b/src/modules/module_11100.c index c95bd6893..a6f20dc6c 100644 --- a/src/modules/module_11100.c +++ b/src/modules/module_11100.c @@ -176,6 +176,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_11200.c b/src/modules/module_11200.c index 938b179b1..c899f7eb1 100644 --- a/src/modules/module_11200.c +++ b/src/modules/module_11200.c @@ -140,6 +140,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_11300.c b/src/modules/module_11300.c index 6ece4048a..5c7920e7a 100644 --- a/src/modules/module_11300.c +++ b/src/modules/module_11300.c @@ -286,6 +286,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = module_deep_comp_kernel; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_11400.c b/src/modules/module_11400.c index e5264d053..d3540797e 100644 --- a/src/modules/module_11400.c +++ b/src/modules/module_11400.c @@ -432,6 +432,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_11500.c b/src/modules/module_11500.c index fa691a2e2..48c803592 100644 --- a/src/modules/module_11500.c +++ b/src/modules/module_11500.c @@ -115,6 +115,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_11600.c b/src/modules/module_11600.c index 7205f6b7e..f2b848141 100644 --- a/src/modules/module_11600.c +++ b/src/modules/module_11600.c @@ -791,6 +791,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_11700.c b/src/modules/module_11700.c index 55b1bd13b..9df95c265 100644 --- a/src/modules/module_11700.c +++ b/src/modules/module_11700.c @@ -23,8 +23,7 @@ static const u32 OPTI_TYPE = OPTI_TYPE_ZERO_BYTE | OPTI_TYPE_USES_BITS_64; static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE | OPTS_TYPE_PT_GENERATE_LE - | OPTS_TYPE_PT_ADD01 - | OPTS_TYPE_MAXIMUM_THREADS; + | OPTS_TYPE_PT_ADD01; static const u32 SALT_TYPE = SALT_TYPE_NONE; static const char *ST_PASS = "hashcat"; static const char *ST_HASH = "57e9e50caec93d72e9498c211d6dc4f4d328248b48ecf46ba7abfa874f666e36"; @@ -142,6 +141,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_11750.c b/src/modules/module_11750.c index bf49d3f9e..afd277f68 100644 --- a/src/modules/module_11750.c +++ b/src/modules/module_11750.c @@ -23,8 +23,7 @@ static const u32 OPTI_TYPE = OPTI_TYPE_ZERO_BYTE | OPTI_TYPE_USES_BITS_64; static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE | OPTS_TYPE_PT_GENERATE_LE - | OPTS_TYPE_PT_ADD01 - | OPTS_TYPE_MAXIMUM_THREADS; + | OPTS_TYPE_PT_ADD01; static const u32 SALT_TYPE = SALT_TYPE_GENERIC; static const char *ST_PASS = "hashcat"; static const char *ST_HASH = "0f71c7c82700c9094ca95eee3d804cc283b538bec49428a9ef8da7b34effb3ba:08151337"; @@ -168,6 +167,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_11760.c b/src/modules/module_11760.c index b9d0c19a2..df888f5aa 100644 --- a/src/modules/module_11760.c +++ b/src/modules/module_11760.c @@ -23,8 +23,7 @@ static const u32 OPTI_TYPE = OPTI_TYPE_ZERO_BYTE | OPTI_TYPE_USES_BITS_64; static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE | OPTS_TYPE_PT_GENERATE_LE - | OPTS_TYPE_PT_ADD01 - | OPTS_TYPE_MAXIMUM_THREADS; + | OPTS_TYPE_PT_ADD01; static const u32 SALT_TYPE = SALT_TYPE_GENERIC; static const char *ST_PASS = "hashcat"; static const char *ST_HASH = "d5c6b874338a492ac57ddc6871afc3c70dcfd264185a69d84cf839a07ef92b2c:08151337"; @@ -168,6 +167,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_11800.c b/src/modules/module_11800.c index 36fa205ce..7e8711f94 100644 --- a/src/modules/module_11800.c +++ b/src/modules/module_11800.c @@ -23,8 +23,7 @@ static const u32 OPTI_TYPE = OPTI_TYPE_ZERO_BYTE | OPTI_TYPE_USES_BITS_64; static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE | OPTS_TYPE_PT_GENERATE_LE - | OPTS_TYPE_PT_ADD01 - | OPTS_TYPE_MAXIMUM_THREADS; + | OPTS_TYPE_PT_ADD01; static const u32 SALT_TYPE = SALT_TYPE_NONE; static const char *ST_PASS = "hashcat"; static const char *ST_HASH = "5d5bdba48c8f89ee6c0a0e11023540424283e84902de08013aeeb626e819950bb32842903593a1d2e8f71897ff7fe72e17ac9ba8ce1d1d2f7e9c4359ea63bdc3"; @@ -166,6 +165,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_11850.c b/src/modules/module_11850.c index 4e952013a..28ccdc94f 100644 --- a/src/modules/module_11850.c +++ b/src/modules/module_11850.c @@ -23,8 +23,7 @@ static const u32 OPTI_TYPE = OPTI_TYPE_ZERO_BYTE | OPTI_TYPE_USES_BITS_64; static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE | OPTS_TYPE_PT_GENERATE_LE - | OPTS_TYPE_PT_ADD01 - | OPTS_TYPE_MAXIMUM_THREADS; + | OPTS_TYPE_PT_ADD01; static const u32 SALT_TYPE = SALT_TYPE_GENERIC; static const char *ST_PASS = "hashcat"; static const char *ST_HASH = "be4555415af4a05078dcf260bb3c0a35948135df3dbf93f7c8b80574ceb0d71ea4312127f839b7707bf39ccc932d9e7cb799671183455889e8dde3738dfab5b6:08151337"; @@ -192,6 +191,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_11860.c b/src/modules/module_11860.c index 3147c7a8c..f08306f3d 100644 --- a/src/modules/module_11860.c +++ b/src/modules/module_11860.c @@ -23,8 +23,7 @@ static const u32 OPTI_TYPE = OPTI_TYPE_ZERO_BYTE | OPTI_TYPE_USES_BITS_64; static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE | OPTS_TYPE_PT_GENERATE_LE - | OPTS_TYPE_PT_ADD01 - | OPTS_TYPE_MAXIMUM_THREADS; + | OPTS_TYPE_PT_ADD01; static const u32 SALT_TYPE = SALT_TYPE_GENERIC; static const char *ST_PASS = "hashcat"; static const char *ST_HASH = "bebf6831b3f9f958acb345a88cb98f30cb0374cff13e6012818487c8dc8d5857f23bca2caed280195ad558b8ce393503e632e901e8d1eb2ccb349a544ac195fd:08151337"; @@ -192,6 +191,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_11900.c b/src/modules/module_11900.c index 6e85beb0d..83b2c769a 100644 --- a/src/modules/module_11900.c +++ b/src/modules/module_11900.c @@ -192,6 +192,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_12000.c b/src/modules/module_12000.c index 733f161b6..32b26c261 100644 --- a/src/modules/module_12000.c +++ b/src/modules/module_12000.c @@ -197,6 +197,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_12001.c b/src/modules/module_12001.c index e2be237fe..300068589 100644 --- a/src/modules/module_12001.c +++ b/src/modules/module_12001.c @@ -170,6 +170,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_12100.c b/src/modules/module_12100.c index 556476236..d7dc28ddd 100644 --- a/src/modules/module_12100.c +++ b/src/modules/module_12100.c @@ -202,6 +202,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_12200.c b/src/modules/module_12200.c index c731fc89f..14868bad6 100644 --- a/src/modules/module_12200.c +++ b/src/modules/module_12200.c @@ -206,6 +206,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_12300.c b/src/modules/module_12300.c index 1352e956d..c474e1cef 100644 --- a/src/modules/module_12300.c +++ b/src/modules/module_12300.c @@ -55,17 +55,6 @@ typedef struct oraclet_tmp static const int ROUNDS_ORACLET = 4096; -bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - // AMD Radeon Pro W5700X, Metal.Version.: 261.13, compiler hangs - if (device_param->is_metal == true) - { - return true; - } - - return false; -} - u64 module_tmp_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const u64 tmp_size = (const u64) sizeof (oraclet_tmp_t); @@ -191,6 +180,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -256,6 +247,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = module_unstable_warning; + module_ctx->module_unstable_warning = MODULE_DEFAULT; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_12400.c b/src/modules/module_12400.c index e84420685..04ec8b03c 100644 --- a/src/modules/module_12400.c +++ b/src/modules/module_12400.c @@ -222,6 +222,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_12500.c b/src/modules/module_12500.c index ada4ac4d8..b46e19ab0 100644 --- a/src/modules/module_12500.c +++ b/src/modules/module_12500.c @@ -61,6 +61,20 @@ typedef struct rar3_tmp_optimized static const int ROUNDS_RAR3 = 262144; static const char *SIGNATURE_RAR3 = "$RAR3$"; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->opencl_device_vendor_id == VENDOR_ID_INTEL_SDK) + { + // Intel Iris + return true; + } + } + + return false; +} + u64 module_tmp_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const bool optimized_kernel = (hashconfig->opti_type & OPTI_TYPE_OPTIMIZED_KERNEL); @@ -206,6 +220,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = module_benchmark_mask; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -271,6 +287,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_12600.c b/src/modules/module_12600.c index 27606ceeb..15ba04535 100644 --- a/src/modules/module_12600.c +++ b/src/modules/module_12600.c @@ -222,6 +222,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_12700.c b/src/modules/module_12700.c index f7af4f4d1..7a5fa69fc 100644 --- a/src/modules/module_12700.c +++ b/src/modules/module_12700.c @@ -56,6 +56,20 @@ typedef struct mywallet_tmp static const char *SIGNATURE_MYWALLET = "$blockchain$"; static const int ROUNDS_MYWALLET = 10; +u32 module_kernel_loops_min (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) +{ + const u32 kernel_loops_min = ROUNDS_MYWALLET - 1; + + return kernel_loops_min; +} + +u32 module_kernel_loops_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) +{ + const u32 kernel_loops_max = ROUNDS_MYWALLET - 1; + + return kernel_loops_max; +} + u64 module_tmp_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const u64 tmp_size = (const u64) sizeof (mywallet_tmp_t); @@ -153,6 +167,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -195,8 +211,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_jit_cache_disable = MODULE_DEFAULT; module_ctx->module_kernel_accel_max = MODULE_DEFAULT; module_ctx->module_kernel_accel_min = MODULE_DEFAULT; - module_ctx->module_kernel_loops_max = MODULE_DEFAULT; - module_ctx->module_kernel_loops_min = MODULE_DEFAULT; + module_ctx->module_kernel_loops_max = module_kernel_loops_min; + module_ctx->module_kernel_loops_min = module_kernel_loops_max; module_ctx->module_kernel_threads_max = MODULE_DEFAULT; module_ctx->module_kernel_threads_min = MODULE_DEFAULT; module_ctx->module_kern_type = module_kern_type; diff --git a/src/modules/module_12800.c b/src/modules/module_12800.c index 066ed8a1d..848946cbe 100644 --- a/src/modules/module_12800.c +++ b/src/modules/module_12800.c @@ -225,6 +225,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_12900.c b/src/modules/module_12900.c index 2a09a0652..b77312145 100644 --- a/src/modules/module_12900.c +++ b/src/modules/module_12900.c @@ -233,6 +233,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_13000.c b/src/modules/module_13000.c index 2bb211b7d..7a4b4748b 100644 --- a/src/modules/module_13000.c +++ b/src/modules/module_13000.c @@ -60,6 +60,20 @@ typedef struct rar5 static const char *SIGNATURE_RAR5 = "$rar5$"; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->opencl_device_vendor_id == VENDOR_ID_INTEL_SDK) + { + // Intel Iris + return true; + } + } + + return false; +} + char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) { char *jit_build_options = NULL; @@ -261,6 +275,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -326,6 +342,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_13100.c b/src/modules/module_13100.c index eb6288fb6..49b609d54 100644 --- a/src/modules/module_13100.c +++ b/src/modules/module_13100.c @@ -22,8 +22,7 @@ static const u64 KERN_TYPE = 13100; static const u32 OPTI_TYPE = OPTI_TYPE_ZERO_BYTE | OPTI_TYPE_NOT_ITERATED; static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE - | OPTS_TYPE_PT_GENERATE_LE - | OPTS_TYPE_MAXIMUM_THREADS; + | OPTS_TYPE_PT_GENERATE_LE; static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; static const char *ST_PASS = "hashcat"; static const char *ST_HASH = "$krb5tgs$23$*user$realm$test/spn*$b548e10f5694ae018d7ad63c257af7dc$35e8e45658860bc31a859b41a08989265f4ef8afd75652ab4d7a30ef151bf6350d879ae189a8cb769e01fa573c6315232b37e4bcad9105520640a781e5fd85c09615e78267e494f433f067cc6958200a82f70627ce0eebc2ac445729c2a8a0255dc3ede2c4973d2d93ac8c1a56b26444df300cb93045d05ff2326affaa3ae97f5cd866c14b78a459f0933a550e0b6507bf8af27c2391ef69fbdd649dd059a4b9ae2440edd96c82479645ccdb06bae0eead3b7f639178a90cf24d9a"; @@ -55,6 +54,23 @@ typedef struct krb5tgs static const char *SIGNATURE_KRB5TGS = "$krb5tgs$"; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: self-test failed + return true; + } + } + } + + return false; +} + char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) { char *jit_build_options = NULL; @@ -357,6 +373,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -422,6 +440,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = MODULE_DEFAULT; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_13200.c b/src/modules/module_13200.c index 22d201208..9f87b6a62 100644 --- a/src/modules/module_13200.c +++ b/src/modules/module_13200.c @@ -189,6 +189,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_13300.c b/src/modules/module_13300.c index daef383d7..b8c7fb56b 100644 --- a/src/modules/module_13300.c +++ b/src/modules/module_13300.c @@ -117,6 +117,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_13400.c b/src/modules/module_13400.c index 8f019d859..c5f9d6faf 100644 --- a/src/modules/module_13400.c +++ b/src/modules/module_13400.c @@ -637,6 +637,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_13500.c b/src/modules/module_13500.c index 5f59900df..1079a32a7 100644 --- a/src/modules/module_13500.c +++ b/src/modules/module_13500.c @@ -210,6 +210,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_13600.c b/src/modules/module_13600.c index f927d5761..1a419067c 100644 --- a/src/modules/module_13600.c +++ b/src/modules/module_13600.c @@ -411,6 +411,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_13711.c b/src/modules/module_13711.c index 05ab89ecc..ff18b6c52 100644 --- a/src/modules/module_13711.c +++ b/src/modules/module_13711.c @@ -299,6 +299,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = module_build_plain_postprocess; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_13712.c b/src/modules/module_13712.c index 6f62b2b33..b39eecfe7 100644 --- a/src/modules/module_13712.c +++ b/src/modules/module_13712.c @@ -87,6 +87,23 @@ typedef struct vc static const int ROUNDS_VERACRYPT_655331 = 655331; static const float MIN_SUFFICIENT_ENTROPY_FILE = 7.0f; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm13712_comp' pipeline, timeout reached + return true; + } + } + } + + return false; +} + int module_build_plain_postprocess (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const void *tmps, const u32 *src_buf, MAYBE_UNUSED const size_t src_sz, MAYBE_UNUSED const int src_len, u32 *dst_buf, MAYBE_UNUSED const size_t dst_sz) { const vc_tmp_t *vc_tmp = (const vc_tmp_t *) tmps; @@ -299,6 +316,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = module_build_plain_postprocess; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -364,6 +383,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_13713.c b/src/modules/module_13713.c index ba414a5a0..d3c8d5fa4 100644 --- a/src/modules/module_13713.c +++ b/src/modules/module_13713.c @@ -87,6 +87,23 @@ typedef struct vc static const int ROUNDS_VERACRYPT_655331 = 655331; static const float MIN_SUFFICIENT_ENTROPY_FILE = 7.0f; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm13713_comp' pipeline, timeout reached + return true; + } + } + } + + return false; +} + int module_build_plain_postprocess (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const void *tmps, const u32 *src_buf, MAYBE_UNUSED const size_t src_sz, MAYBE_UNUSED const int src_len, u32 *dst_buf, MAYBE_UNUSED const size_t dst_sz) { const vc_tmp_t *vc_tmp = (const vc_tmp_t *) tmps; @@ -299,6 +316,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = module_build_plain_postprocess; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -364,6 +383,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_13721.c b/src/modules/module_13721.c index f6f335eb6..b6c937875 100644 --- a/src/modules/module_13721.c +++ b/src/modules/module_13721.c @@ -89,17 +89,6 @@ typedef struct vc static const int ROUNDS_VERACRYPT_500000 = 500000; static const float MIN_SUFFICIENT_ENTROPY_FILE = 7.0f; -bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - // AMD Radeon Pro W5700X, Metal.Version.: 261.13, compiler hangs - if (device_param->is_metal == true) - { - return true; - } - - return false; -} - int module_build_plain_postprocess (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const void *tmps, const u32 *src_buf, MAYBE_UNUSED const size_t src_sz, MAYBE_UNUSED const int src_len, u32 *dst_buf, MAYBE_UNUSED const size_t dst_sz) { const vc64_tmp_t *vc64_tmp = (const vc64_tmp_t *) tmps; @@ -312,6 +301,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = module_build_plain_postprocess; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -377,6 +368,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = module_unstable_warning; + module_ctx->module_unstable_warning = MODULE_DEFAULT; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_13722.c b/src/modules/module_13722.c index 6ce7258e3..89b65cf6b 100644 --- a/src/modules/module_13722.c +++ b/src/modules/module_13722.c @@ -89,17 +89,6 @@ typedef struct vc static const int ROUNDS_VERACRYPT_500000 = 500000; static const float MIN_SUFFICIENT_ENTROPY_FILE = 7.0f; -bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - // AMD Radeon Pro W5700X, Metal.Version.: 261.13, compiler hangs - if (device_param->is_metal == true) - { - return true; - } - - return false; -} - int module_build_plain_postprocess (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const void *tmps, const u32 *src_buf, MAYBE_UNUSED const size_t src_sz, MAYBE_UNUSED const int src_len, u32 *dst_buf, MAYBE_UNUSED const size_t dst_sz) { const vc64_tmp_t *vc64_tmp = (const vc64_tmp_t *) tmps; @@ -312,6 +301,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = module_build_plain_postprocess; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -377,6 +368,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = module_unstable_warning; + module_ctx->module_unstable_warning = MODULE_DEFAULT; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_13723.c b/src/modules/module_13723.c index ca2a70316..92fb1bb5b 100644 --- a/src/modules/module_13723.c +++ b/src/modules/module_13723.c @@ -89,17 +89,6 @@ typedef struct vc static const int ROUNDS_VERACRYPT_500000 = 500000; static const float MIN_SUFFICIENT_ENTROPY_FILE = 7.0f; -bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - // AMD Radeon Pro W5700X, Metal.Version.: 261.13, compiler hangs - if (device_param->is_metal == true) - { - return true; - } - - return false; -} - int module_build_plain_postprocess (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const void *tmps, const u32 *src_buf, MAYBE_UNUSED const size_t src_sz, MAYBE_UNUSED const int src_len, u32 *dst_buf, MAYBE_UNUSED const size_t dst_sz) { const vc64_tmp_t *vc64_tmp = (const vc64_tmp_t *) tmps; @@ -312,6 +301,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = module_build_plain_postprocess; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -377,6 +368,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = module_unstable_warning; + module_ctx->module_unstable_warning = MODULE_DEFAULT; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_13731.c b/src/modules/module_13731.c index 428c33ffa..27f0e5033 100644 --- a/src/modules/module_13731.c +++ b/src/modules/module_13731.c @@ -29,8 +29,7 @@ static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE | OPTS_TYPE_BINARY_HASHFILE | OPTS_TYPE_LOOP_EXTENDED | OPTS_TYPE_MP_MULTI_DISABLE - | OPTS_TYPE_COPY_TMPS - | OPTS_TYPE_MAXIMUM_THREADS; + | OPTS_TYPE_COPY_TMPS; static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; static const char *ST_PASS = "hashcat"; static const char *ST_HASH = "48f79476aa0aa8327a8a9056e61450f4e2883c9e9669142f2e2f022c2f85303b897d088dea03d64329f6c402a56fed05b3919715929090a25c8ae84c67dbdb364ebfa3e9ccc0b391c130a4c3dd6495a1d6eb5d2eab72f8009096f7475ecb736bb3225b6da144e1596d859dad159fae5a739beea88ea074771e9d0b2d7c48ae302606a60d7cff6db54f3e460c548c06a4f47dc1ac203a8c8349fbff6a652219a63f27bc76327543e22be4f8dab8e4f90a4283fbf1552119fe24114ce8869eb20ce87dd72300f7aad3f7b4a26a355f16517725449151cf0373dbd0b281f6ac753485a14a5361cc75d40928e241a6b4684658801774843238048cf8c7f2fd88950abac040e12b0c41fdcaca3702907e951ec11c061a91b3050a4855abe6f3b50b4bd0b17c4be1f5b50b873eadc2d8446cd72c4fcac576bbce3acea769f740c5322ee8c927ffd4dd11c8a9e66f06e58df2e5d4d85c13b44c412bab839c9512b7a0acdd97b37dcccc4b70854eda0f36de12d62dd10cc13bc6154103d083bf6540bc78e5d0aad5d063cc74dad4cbe6e060febda2a9fd79c238f99dcb0766ff4addcfd0c03e619c765f65b1c75d5d22c6536958bcda78077ff44b64c4da741bf50154df310d4e0724238a777b524237b9478277e400ad8146dc3ca1da83e3d2f1c5115a4b7fcdc71dd7d56ba86a2f9b721c9a4137aabb07c3c5fedcf5342c4fae4898c9"; @@ -88,24 +87,6 @@ typedef struct vc static const int ROUNDS_VERACRYPT_500000 = 500000; static const float MIN_SUFFICIENT_ENTROPY_FILE = 7.0f; -u32 module_kernel_threads_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) -{ - const u32 kernel_threads_max = 64; - - return kernel_threads_max; -} - -bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - // AppleM1, OpenCL, MTLCompilerService never-end (pure/optimized kernel) - if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) - { - return true; - } - - return false; -} - int module_build_plain_postprocess (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const void *tmps, const u32 *src_buf, MAYBE_UNUSED const size_t src_sz, MAYBE_UNUSED const int src_len, u32 *dst_buf, MAYBE_UNUSED const size_t dst_sz) { const vc_tmp_t *vc_tmp = (const vc_tmp_t *) tmps; @@ -318,6 +299,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = module_build_plain_postprocess; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -362,7 +345,7 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_kernel_accel_min = MODULE_DEFAULT; module_ctx->module_kernel_loops_max = module_kernel_loops_max; module_ctx->module_kernel_loops_min = MODULE_DEFAULT; - module_ctx->module_kernel_threads_max = module_kernel_threads_max; + module_ctx->module_kernel_threads_max = MODULE_DEFAULT; module_ctx->module_kernel_threads_min = MODULE_DEFAULT; module_ctx->module_kern_type = module_kern_type; module_ctx->module_kern_type_dynamic = MODULE_DEFAULT; @@ -383,6 +366,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = module_unstable_warning; + module_ctx->module_unstable_warning = MODULE_DEFAULT; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_13732.c b/src/modules/module_13732.c index 742b68d39..e78dbaa83 100644 --- a/src/modules/module_13732.c +++ b/src/modules/module_13732.c @@ -29,8 +29,7 @@ static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE | OPTS_TYPE_BINARY_HASHFILE | OPTS_TYPE_LOOP_EXTENDED | OPTS_TYPE_MP_MULTI_DISABLE - | OPTS_TYPE_COPY_TMPS - | OPTS_TYPE_MAXIMUM_THREADS; + | OPTS_TYPE_COPY_TMPS; static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; static const char *ST_PASS = "hashcat"; static const char *ST_HASH = "1b721942019ebe8cedddbed7744a0702c0e053281a467e0ed69bf875c7406407d72eb8f2aea21270e41898c0a2c14382f86e04c15e7bc019d1d9dd813eabee0ae5173e3cb1d927859d3e6de1006335a5184ae12b4c8dc2db2b1cd785063152a776f4dc5cacc1856a919b880d704b7450f5a0e0c9521bc9b4d67213c36a50e6664a1cbcea33f997b858e654111c7e9fca74f361528e85a28880381ec2600e3c1cd508c3833dd21cc91978185cba53caefd7b3c82d219d49f0b41e536d32e8d3ce194ad7923ca742213e19dcebdbd9687979d5a594654a5c611e8b829c4019e90a3cfb14e5fd7f8ed91e0fc79eed182399f02a3e3e202d4becaa6730e1f05f99ce06ce16dba7777ccddac72e85f2d3be5ecc9c808ac273f10ceb71cad666166abc327c4061a5f47424a5b6d9d093782f34b49924342a2e8cea663446ed4232a9a415ee2dfde988fa827b06d7438fec20ad0689543c3ee4602ce3ec3806fc7d668ef7e34330edd1e077b329a7627fa3ae5c89308258a17ecefbee114c80c2ab06f8271f14de8f2d13d1d6e5a119b71a6bae88ab151f76cdb2442284bc481d0df7e2163c3acfe763d3968195450d275af9034a00184a30cefed163e636626bffe6a35df3472508a49cb2b9b4c4a95d11c5d17e4e0539e9f13112125515778bcd1c2813c62a02673663062ad60583ec6a02c8a572865829e5b8c767b285728bea4907"; @@ -88,24 +87,6 @@ typedef struct vc static const int ROUNDS_VERACRYPT_500000 = 500000; static const float MIN_SUFFICIENT_ENTROPY_FILE = 7.0f; -u32 module_kernel_threads_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) -{ - const u32 kernel_threads_max = 64; - - return kernel_threads_max; -} - -bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - // AppleM1, OpenCL, MTLCompilerService never-end (pure/optimized kernel) - if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) - { - return true; - } - - return false; -} - int module_build_plain_postprocess (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const void *tmps, const u32 *src_buf, MAYBE_UNUSED const size_t src_sz, MAYBE_UNUSED const int src_len, u32 *dst_buf, MAYBE_UNUSED const size_t dst_sz) { const vc_tmp_t *vc_tmp = (const vc_tmp_t *) tmps; @@ -318,6 +299,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = module_build_plain_postprocess; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -362,7 +345,7 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_kernel_accel_min = MODULE_DEFAULT; module_ctx->module_kernel_loops_max = module_kernel_loops_max; module_ctx->module_kernel_loops_min = MODULE_DEFAULT; - module_ctx->module_kernel_threads_max = module_kernel_threads_max; + module_ctx->module_kernel_threads_max = MODULE_DEFAULT; module_ctx->module_kernel_threads_min = MODULE_DEFAULT; module_ctx->module_kern_type = module_kern_type; module_ctx->module_kern_type_dynamic = MODULE_DEFAULT; @@ -383,6 +366,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = module_unstable_warning; + module_ctx->module_unstable_warning = MODULE_DEFAULT; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_13733.c b/src/modules/module_13733.c index 1e9007315..1d7c36628 100644 --- a/src/modules/module_13733.c +++ b/src/modules/module_13733.c @@ -29,8 +29,7 @@ static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE | OPTS_TYPE_BINARY_HASHFILE | OPTS_TYPE_LOOP_EXTENDED | OPTS_TYPE_MP_MULTI_DISABLE - | OPTS_TYPE_COPY_TMPS - | OPTS_TYPE_MAXIMUM_THREADS; + | OPTS_TYPE_COPY_TMPS; static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; static const char *ST_PASS = "hashcat"; static const char *ST_HASH = "5eb128daef63eff7e6db6aa10a8858f89964f47844acca68df82ebb2e73866fa75e3b7a53f9d2ff1ecdd1f4dc90e9c0fdf51f60d11b1992cd2971b4889edfc8920bbf346fd7693f675b617cb9e4e9a43e6f445021068fc13453b130f2eb1d753ee83ecc61dabec293e88b62110cf6a8fab670e171f6aba2226550b54893263f5fa086b3cc41dd3db2eae07b585e5162c7a0d9723a426d408d83266c4d6018dc1b8b456d28a224033a30bfe62b1e58c2ddf596e07f7ff31849a6f5cfcc1c977b82d8484c270d44ededb0afdb781295e92968fc8cc69766af0ce1e72f02d6b4e124ba4b1af71519dcaade857bb3f371f93a350da6e65ee46c2ac782f134c75c10fe9d653fccc08c614dc362871911af8b83bdfc479f770dfe4b3c86b5d895842c53852fe4912738f848bf7c3e10b8189d25faceab9ef30b6fa0284edaa471752ac2b65335179b8d605417709f64fded7d94383618a921660d4cdb190bbb3769a8e56d2cd1ee07078ebc3b68ebeb016893f7099018e40cb326e32b29a62806eaf1a3fd382f4f876bf721eadfc019c5545813e81fd7168995f743663b136762b07910a63b6eec5b728a4ad07a689cceecb14c2802f334401a0a4fd2ec49e2da7f3cb24d6181f01ceed93ee73dedc3378133c83c9a71155c86785ff20dd5a64323d2fd4bf076bab3c17a1bb45edf81c30a7bd7dbbb097ece0dca83fff9138d56ae668"; @@ -88,24 +87,6 @@ typedef struct vc static const int ROUNDS_VERACRYPT_500000 = 500000; static const float MIN_SUFFICIENT_ENTROPY_FILE = 7.0f; -u32 module_kernel_threads_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) -{ - const u32 kernel_threads_max = 64; - - return kernel_threads_max; -} - -bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - // AppleM1, OpenCL, MTLCompilerService never-end (pure/optimized kernel) - if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) - { - return true; - } - - return false; -} - int module_build_plain_postprocess (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const void *tmps, const u32 *src_buf, MAYBE_UNUSED const size_t src_sz, MAYBE_UNUSED const int src_len, u32 *dst_buf, MAYBE_UNUSED const size_t dst_sz) { const vc_tmp_t *vc_tmp = (const vc_tmp_t *) tmps; @@ -318,6 +299,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = module_build_plain_postprocess; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -362,7 +345,7 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_kernel_accel_min = MODULE_DEFAULT; module_ctx->module_kernel_loops_max = module_kernel_loops_max; module_ctx->module_kernel_loops_min = MODULE_DEFAULT; - module_ctx->module_kernel_threads_max = module_kernel_threads_max; + module_ctx->module_kernel_threads_max = MODULE_DEFAULT; module_ctx->module_kernel_threads_min = MODULE_DEFAULT; module_ctx->module_kern_type = module_kern_type; module_ctx->module_kern_type_dynamic = MODULE_DEFAULT; @@ -383,6 +366,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = module_unstable_warning; + module_ctx->module_unstable_warning = MODULE_DEFAULT; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_13741.c b/src/modules/module_13741.c index e4811633c..7dfb33100 100644 --- a/src/modules/module_13741.c +++ b/src/modules/module_13741.c @@ -301,6 +301,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = module_build_plain_postprocess; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_13742.c b/src/modules/module_13742.c index 45f9cfc51..25aa069d2 100644 --- a/src/modules/module_13742.c +++ b/src/modules/module_13742.c @@ -88,6 +88,23 @@ typedef struct vc static const int ROUNDS_VERACRYPT_327661 = 327661; static const float MIN_SUFFICIENT_ENTROPY_FILE = 7.0f; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm13712_loop_extended' pipeline, timeout reached + return true; + } + } + } + + return false; +} + int module_build_plain_postprocess (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const void *tmps, const u32 *src_buf, MAYBE_UNUSED const size_t src_sz, MAYBE_UNUSED const int src_len, u32 *dst_buf, MAYBE_UNUSED const size_t dst_sz) { const vc_t *vc = (const vc_t *) hashes->esalts_buf; @@ -301,6 +318,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = module_build_plain_postprocess; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -366,6 +385,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_13743.c b/src/modules/module_13743.c index 2824e93f9..4aa9a36e0 100644 --- a/src/modules/module_13743.c +++ b/src/modules/module_13743.c @@ -88,6 +88,23 @@ typedef struct vc static const int ROUNDS_VERACRYPT_327661 = 327661; static const float MIN_SUFFICIENT_ENTROPY_FILE = 7.0f; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm13713_comp' pipeline, timeout reached + return true; + } + } + } + + return false; +} + int module_build_plain_postprocess (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const void *tmps, const u32 *src_buf, MAYBE_UNUSED const size_t src_sz, MAYBE_UNUSED const int src_len, u32 *dst_buf, MAYBE_UNUSED const size_t dst_sz) { const vc_t *vc = (const vc_t *) hashes->esalts_buf; @@ -301,6 +318,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = module_build_plain_postprocess; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -366,6 +385,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_13751.c b/src/modules/module_13751.c index 5530305f0..dac31a633 100644 --- a/src/modules/module_13751.c +++ b/src/modules/module_13751.c @@ -87,6 +87,23 @@ typedef struct vc static const int ROUNDS_VERACRYPT_500000 = 500000; static const float MIN_SUFFICIENT_ENTROPY_FILE = 7.0f; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm13751_init' pipeline, timeout reached + return true; + } + } + } + + return false; +} + char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) { char *jit_build_options = NULL; @@ -318,6 +335,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = module_build_plain_postprocess; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -383,6 +402,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_13752.c b/src/modules/module_13752.c index d5485047f..e959a80af 100644 --- a/src/modules/module_13752.c +++ b/src/modules/module_13752.c @@ -87,6 +87,23 @@ typedef struct vc static const int ROUNDS_VERACRYPT_500000 = 500000; static const float MIN_SUFFICIENT_ENTROPY_FILE = 7.0f; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm13752_init' pipeline, timeout reached + return true; + } + } + } + + return false; +} + char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) { char *jit_build_options = NULL; @@ -318,6 +335,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = module_build_plain_postprocess; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -383,6 +402,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_13753.c b/src/modules/module_13753.c index 5b6d7297d..277afaf02 100644 --- a/src/modules/module_13753.c +++ b/src/modules/module_13753.c @@ -87,6 +87,23 @@ typedef struct vc static const int ROUNDS_VERACRYPT_500000 = 500000; static const float MIN_SUFFICIENT_ENTROPY_FILE = 7.0f; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm13753_init' pipeline, timeout reached + return true; + } + } + } + + return false; +} + char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) { char *jit_build_options = NULL; @@ -318,6 +335,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = module_build_plain_postprocess; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -383,6 +402,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_13761.c b/src/modules/module_13761.c index 7212b8f96..e33a693e2 100644 --- a/src/modules/module_13761.c +++ b/src/modules/module_13761.c @@ -88,6 +88,23 @@ typedef struct vc static const int ROUNDS_VERACRYPT_200000 = 200000; static const float MIN_SUFFICIENT_ENTROPY_FILE = 7.0f; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm13751_init' pipeline, timeout reached + return true; + } + } + } + + return false; +} + char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) { char *jit_build_options = NULL; @@ -320,6 +337,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = module_build_plain_postprocess; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -385,6 +404,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_13762.c b/src/modules/module_13762.c index 113e71460..0f5f18545 100644 --- a/src/modules/module_13762.c +++ b/src/modules/module_13762.c @@ -88,6 +88,23 @@ typedef struct vc static const int ROUNDS_VERACRYPT_200000 = 200000; static const float MIN_SUFFICIENT_ENTROPY_FILE = 7.0f; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm13752_init' pipeline, timeout reached + return true; + } + } + } + + return false; +} + char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) { char *jit_build_options = NULL; @@ -320,6 +337,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = module_build_plain_postprocess; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -385,6 +404,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_13763.c b/src/modules/module_13763.c index 89f900e62..c9e28d4c7 100644 --- a/src/modules/module_13763.c +++ b/src/modules/module_13763.c @@ -88,6 +88,23 @@ typedef struct vc static const int ROUNDS_VERACRYPT_200000 = 200000; static const float MIN_SUFFICIENT_ENTROPY_FILE = 7.0f; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm13753_comp' pipeline, timeout reached + return true; + } + } + } + + return false; +} + char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) { char *jit_build_options = NULL; @@ -320,6 +337,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = module_build_plain_postprocess; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -385,6 +404,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_13771.c b/src/modules/module_13771.c index e6283a499..b753d171f 100644 --- a/src/modules/module_13771.c +++ b/src/modules/module_13771.c @@ -30,8 +30,7 @@ static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE | OPTS_TYPE_BINARY_HASHFILE | OPTS_TYPE_LOOP_EXTENDED | OPTS_TYPE_MP_MULTI_DISABLE - | OPTS_TYPE_COPY_TMPS - | OPTS_TYPE_MAXIMUM_THREADS; + | OPTS_TYPE_COPY_TMPS; static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; static const char *ST_PASS = "hashcat"; static const char *ST_HASH = "444ec71554f0a2989b34bd8a5750ae7b5ed8b1ccdead29120fc030bd5186f312a7fa18ab4f4389d7798e43c073afd1e71dda2052db38dec04a700e8d6b488802ead0cf95d6e6cecc8eaf6464baf94a64acbbd1a86f826333115b6380bda18cf936150efd6ffc2a344bb78b0b4875781a8c5079772429ef50ddf148f35895496d2e39f32ffaf68a007b070b0beaad316c4b3adf43c0c58ad24430a34abf168ed455b64958ca5465cae0684adadc00f7b9c13fc7671b4520892d23aebff49ea92bc15e804cc650dc3bbd5b8f5122051636f0c576977d4b64ba355bf6e6a8e042fc5165f2a8affa51aa12ff718cee4c543976bf565997b4b57c74e79584e317f4bdb3920f2937c4251af87f432bb8ce78dcb30675246f0303db4aaea913c93be5a26d16dbf8d4d20773aa2a4608d2151491ca6593b51965baeaf9b58f78905df522bf88976fe9436a916c8de38d5a6ca7ca7f436e7982a36335a404298304322ebe194bb34e91e8f7ee7c6541679bb0ce9d80bf4431d1c475b1a785e943e57f8e27a4e665940389b6da2771bd27d943955185379f83ca6a124ec55b2b63d4ef2e2ad6ee27de25f959708f3a64facfe07f06e29459a14f02699751d530f258d0c744a759c188de4f9423f2bd21d3d999ea28df4f3a93a2c47a7e788fe43ccbfbe267277b048002da1ef8c1e7b26690230285675a3a8fdc0f2acf46a4cb24141b3ad1"; @@ -92,6 +91,23 @@ typedef struct vc static const int ROUNDS_VERACRYPT_500000 = 500000; static const float MIN_SUFFICIENT_ENTROPY_FILE = 7.0f; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm13771_init' pipeline, timeout reached + return true; + } + } + } + + return false; +} + int module_build_plain_postprocess (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const void *tmps, const u32 *src_buf, MAYBE_UNUSED const size_t src_sz, MAYBE_UNUSED const int src_len, u32 *dst_buf, MAYBE_UNUSED const size_t dst_sz) { const vc64_sbog_tmp_t *vc64_sbog_tmp = (const vc64_sbog_tmp_t *) tmps; @@ -304,6 +320,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = module_build_plain_postprocess; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -369,6 +387,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_13772.c b/src/modules/module_13772.c index 7ae4bed75..6494ee637 100644 --- a/src/modules/module_13772.c +++ b/src/modules/module_13772.c @@ -30,8 +30,7 @@ static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE | OPTS_TYPE_BINARY_HASHFILE | OPTS_TYPE_LOOP_EXTENDED | OPTS_TYPE_MP_MULTI_DISABLE - | OPTS_TYPE_COPY_TMPS - | OPTS_TYPE_MAXIMUM_THREADS; + | OPTS_TYPE_COPY_TMPS; static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; static const char *ST_PASS = "hashcat"; static const char *ST_HASH = "0f5da0b17c60edcd392058752ec29c389b140b54cd1f94de43dccea703b1fd37936e75a500b7f9d4e94e7f214c4696c051be9697792a856ebf9c0f5a598cf8ba5621e49c7505eba3b4738acdc860b6ed648f52e5b673ae06bb04616de438a090ab19abea11c30984ead06859de9b7aec8e436c40816f67a56cb53d5f125e58c42225315a4bf494da8128f0df924bcf6ad4b91c9efc5cb0be67cb0cd753c392388d780f57aba39197513a191cc684e9ebee41bc901dd99e9a625141cf98e55e8f74d838baea3bf8f411b85c14eff8cddd1720c2539eef7a38a72c4ed9745a05476b6a16bcda2a5391c94b6f499e3bea64ff412d03d060741e938ed3dc905d8bd6dbb2420e9277251ebe3421be389ea8b02782baeb258b9ec7e0732b3817ee6da58209871aee4e16d57a132c6215782364570238157d8a7fdcd29f54ab2295f68d027dc9f2e0c951afad7500cafe3219e6530699918ac55f4fa1141bc3596155b05bae2fdc8b0a5438edeb5bb0cfac592565b20645be90b406a1fd59846957e7539fd8423bfd4c7ae7d608aacb084ae887baa1a83b14afff8d2063565086c66e293234a8667af39642b90a38c3a5bd4fa8a787c60f73882535c9b34cb7b243465dcc32aff29cee0e741ff059c6acd8ddcbdb3cfafecdcd0f45c84dd871be4fbffd5ac2ab9e01898009adcf7d932c37d6568ad875e4d6ea15db29a1e8ba5a4e86bd"; @@ -92,6 +91,23 @@ typedef struct vc static const int ROUNDS_VERACRYPT_500000 = 500000; static const float MIN_SUFFICIENT_ENTROPY_FILE = 7.0f; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm13772_init' pipeline, timeout reached + return true; + } + } + } + + return false; +} + int module_build_plain_postprocess (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const void *tmps, const u32 *src_buf, MAYBE_UNUSED const size_t src_sz, MAYBE_UNUSED const int src_len, u32 *dst_buf, MAYBE_UNUSED const size_t dst_sz) { const vc64_sbog_tmp_t *vc64_sbog_tmp = (const vc64_sbog_tmp_t *) tmps; @@ -304,6 +320,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = module_build_plain_postprocess; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -369,6 +387,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_13773.c b/src/modules/module_13773.c index df1e35ba0..6f2740347 100644 --- a/src/modules/module_13773.c +++ b/src/modules/module_13773.c @@ -30,8 +30,7 @@ static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE | OPTS_TYPE_BINARY_HASHFILE | OPTS_TYPE_LOOP_EXTENDED | OPTS_TYPE_MP_MULTI_DISABLE - | OPTS_TYPE_COPY_TMPS - | OPTS_TYPE_MAXIMUM_THREADS; + | OPTS_TYPE_COPY_TMPS; static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; static const char *ST_PASS = "hashcat"; static const char *ST_HASH = "18d2e8314961850f8fc26d2bc6f896db9c4eee301b5fa7295615166552b2422042c6cf6212187ec9c0234908e7934009c23ceed0c4858a7a4deecbc59b50a303afdc7d583cde1b0c06f0bf56162ef1d6d8df8f194aadcbe395780b3d1d7127faf39910eb10f4805abdd1c3ef7a66972603124a475e2b9224699e60a9e12f4096597f20c5fb0528f590d7bd317e41dc6a2128cf5e58a99803a28c213feb8286350b1d7ab56d43bb52e511f3c860e5002472a4454a549509c8ce0c34f17ece23d5b61aa7c63389c8ca44ed10c2caae03e7ed30b3ef98565926d7e4f3a2a9abf03b278083bed7aaadd78d5bffb7cd45ffae92990c06d9e9f375a77a94226035d1f90e177c46a04dab416dfb7ed7c4ed9ee7e84580bed65c5fee9f4b1545b9a7cf6af533870d393eced609aebe308ec1eee3729da09eb7df7a8d1282b15c4a1b8266a456c06b4ea20c209c549d5d6b58a861f8e15cca3b6cef114accbf470ec76d717f6d7d416d7a32f064ab560c1167f9ef4e93310fbd927b088bffbb0cf5d5c2e271c9cad4c604e489e9983a990b23e1a2f973682fdfe38df385474f73ecdc9bce701d01d627192d3051240f4b96bbdcf2346b275e05aa75add4acb97b286cc00e830fee95d0f86a8b1e315ccb6f3f8642180392b3baac01ed2c97c200489b5e5ca4dcb0a6417e622b6196482a10e640b2b6b08e3f62acac3d45dfc6b88c666205"; @@ -92,6 +91,23 @@ typedef struct vc static const int ROUNDS_VERACRYPT_500000 = 500000; static const float MIN_SUFFICIENT_ENTROPY_FILE = 7.0f; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm13773_comp' pipeline, timeout reached + return true; + } + } + } + + return false; +} + int module_build_plain_postprocess (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const void *tmps, const u32 *src_buf, MAYBE_UNUSED const size_t src_sz, MAYBE_UNUSED const int src_len, u32 *dst_buf, MAYBE_UNUSED const size_t dst_sz) { const vc64_sbog_tmp_t *vc64_sbog_tmp = (const vc64_sbog_tmp_t *) tmps; @@ -304,6 +320,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = module_build_plain_postprocess; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -369,6 +387,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_13781.c b/src/modules/module_13781.c index 191a64c80..fbbb6b0bf 100644 --- a/src/modules/module_13781.c +++ b/src/modules/module_13781.c @@ -31,8 +31,7 @@ static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE | OPTS_TYPE_LOOP_EXTENDED | OPTS_TYPE_MP_MULTI_DISABLE | OPTS_TYPE_KEYBOARD_MAPPING - | OPTS_TYPE_COPY_TMPS - | OPTS_TYPE_MAXIMUM_THREADS; + | OPTS_TYPE_COPY_TMPS; static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; static const char *ST_PASS = "hashcat"; static const char *ST_HASH = "2bfe4a72e13388a9ce074bbe0711a48d62f123df85b09e0350771edc4a0e4f397038a49b900275c9158145a96b52f95e92f927b3f963c7eadb71a07518d643231041c457d2794d0aa505f794153b52b24441271185d386833fbabf0e880c51b544f583d0db2ab6a926ddd3cdd0b68a61d7f5fe3f0ac6aa06ca676a868f373d35073605cf9d521ff55862b5005213a881a7b9025afc3409fa34dc86496620835df072fecd5b501f15e08113835c510d9f0bfd09d2ef1ac0e7bd01f0523d74a54fe984eb497cb960cce5bb154e024dc0c6c61a61e20a45a8f8ef319c63ca9646fbe00930302a5910891a1bc84bd936c926ca535b3b40c9e0ab255363b24a28bb8216d3d32244a725774e6ebbd73d6d3f2a2adcbc28d5341679cbb747efd56db1a09ce80b24640583ffc6f7ca5bd60d59114afcc78601184ba8feadb8d472f86c32bebf70e8158aa56f9db3b3200ef432aa7b370aa4ba408ef11b70d6806f1a21aaa3b629fa06f71dac0ae3e0ce95c7e5b550fc8c46017e151cbbcdf64b3b62b1b846a08925a217227286acfdad35b28407d589bec9578c2a4e9a4320f4a78e1e590fdf53c0a20fe0a1bb6c7d693abcd0e991c449e569477980d4b8972d21e4abc917d897e48ca427c954c3a3e0c8465ef40de51ffc9188047c043224c4a18638f1d91cd88c36623a1d880f18fd0d6ca0b3bbfa7d5d795acfb63576e2c2d83772e8"; @@ -93,6 +92,23 @@ typedef struct vc static const int ROUNDS_VERACRYPT_200000 = 200000; static const float MIN_SUFFICIENT_ENTROPY_FILE = 7.0f; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm13771_init' pipeline, timeout reached + return true; + } + } + } + + return false; +} + int module_build_plain_postprocess (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const void *tmps, const u32 *src_buf, MAYBE_UNUSED const size_t src_sz, MAYBE_UNUSED const int src_len, u32 *dst_buf, MAYBE_UNUSED const size_t dst_sz) { const vc_t *vc = (const vc_t *) hashes->esalts_buf; @@ -306,6 +322,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = module_build_plain_postprocess; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -371,6 +389,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_13782.c b/src/modules/module_13782.c index 16c5cc9b6..e1e6c89c4 100644 --- a/src/modules/module_13782.c +++ b/src/modules/module_13782.c @@ -31,8 +31,7 @@ static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE | OPTS_TYPE_LOOP_EXTENDED | OPTS_TYPE_MP_MULTI_DISABLE | OPTS_TYPE_KEYBOARD_MAPPING - | OPTS_TYPE_COPY_TMPS - | OPTS_TYPE_MAXIMUM_THREADS; + | OPTS_TYPE_COPY_TMPS; static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; static const char *ST_PASS = "hashcat"; static const char *ST_HASH = "af7a64c7c81f608527552532cc7049b0d369e2ce20202d7a41ffb94300cbc9c7ce2130247f49ace4c1512fc3d1b4289ca965e8eb065b35faee5b8479a4e43c4a269f4ee7f6d20f22fe61b2570d46df07b4307f44ba6926f3b44524f0a47be2a0d677d225e2c50ff618b2e5078a19f0613a856bb3145d765cc4c1726aef27b5f03648dcf421b040e7b4fde3193ad9f8a0ae6d91c079610f826e3d556776753d8ca11320632c16a2e49a4eec6e8371681b39be2d7bb826d81dea19eb1dda2e6c71c520a2ad9128b3209a7caf10c196a16ac6f4267ffea8e7be7ddb856976438e0e997773dab75e3dfe0c047f82e4ed0b6e107261b891c4b161fa3c29017428afaaabee5c2dc727fa23b4195265716d92d06e7b828535a77521113077e6f219d7ca721eb5dab66524a530ca3ceba52e3703ec3f435ad1dfee092b090174f4acd1546107db5b403a0ba4fa90c0b4ec19af92a54ebedfd28783dcd83c78499bd33baf3ed10af229ff29634110e2970b6c04232dc95120a365947688abe011f0c8de0e651d9bd112ce0bdf80c4e37c77b962d92f1418272e7484df5217f5f2f3ba1e9b965773ed2727c5d03938516dd789236479b5ff340335c92260b1ad82a313ffa568f912fac799f93b857aaff7b4d76cb525f120a0a9efc376d39c8e27866eff689be01f5adf693ae63ad4b2a77ca96ea985ab7931457f4d8d1afaeb7e423dd752"; @@ -93,6 +92,23 @@ typedef struct vc static const int ROUNDS_VERACRYPT_200000 = 200000; static const float MIN_SUFFICIENT_ENTROPY_FILE = 7.0f; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm13772_init' pipeline, timeout reached + return true; + } + } + } + + return false; +} + int module_build_plain_postprocess (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const void *tmps, const u32 *src_buf, MAYBE_UNUSED const size_t src_sz, MAYBE_UNUSED const int src_len, u32 *dst_buf, MAYBE_UNUSED const size_t dst_sz) { const vc_t *vc = (const vc_t *) hashes->esalts_buf; @@ -306,6 +322,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = module_build_plain_postprocess; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -371,6 +389,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_13783.c b/src/modules/module_13783.c index ad4a2e4cc..b1339f7a4 100644 --- a/src/modules/module_13783.c +++ b/src/modules/module_13783.c @@ -31,8 +31,7 @@ static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE | OPTS_TYPE_LOOP_EXTENDED | OPTS_TYPE_MP_MULTI_DISABLE | OPTS_TYPE_KEYBOARD_MAPPING - | OPTS_TYPE_COPY_TMPS - | OPTS_TYPE_MAXIMUM_THREADS; + | OPTS_TYPE_COPY_TMPS; static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; static const char *ST_PASS = "hashcat"; static const char *ST_HASH = "0c9d7444e9e64a833e857163787b2f6349224bdb4bbf788ce25156c870514226674725be3eebc3f2a2c2ee8adbf8bb3ec1405a333e8e091cec0c5aa77fa9b65048ca01d954912bf3a3b1c38c00297a33ea0e014156ce08d9526150c085e5e2776a1faeb272c6e9539f466f4f93ffe6497c77d3aed54ffcdf1a3e6171cffac7b2ad96bd9e7cc553058894058def68beea05891b0ce734b6a166b8a5f24b4052fc7014b424bd6c33c9d710fb409cdf1a6c7567c1ba6a3010b03f9bda8aa2ef6733542d198a316da0c83106a6c31043f11ac191169db3db994493168ea996737355ccff84f27f6792b3dc87025d3594edb9e759ba3885980df17bc8c751ce3aba0df67aa7997906348729e81c4893cc654dc6b1da3ff7c588a327f45b8acff976d0593cc607dad48a25468d7c3ebc6dd49aa32fc526dd513852cdec4b36f3683b4998800afa25bb968c242d4c66b9b0c77b20d7bd40ffb403e9e087990d59c94ee7d36e9ebfa35a310bab963c253596e6bc89f67d5307823851c526ac789d0628a3eb81f2cdfd7d7612d8be1dade1b17f30aa2bb5d02eb8534caca0c334a269085939a5041c4ad112d325b1bfe3e9851bfdcad80bbc05ecbddc3f2ac09e2ad7182daf6ca5ccc510a100514f5d2dce1ff5046e0c8e7edf0bdc27f8fcdf4e9b3bce786c24bfa28dacee65ee8c913fc18eee5df61b8a43224f3a9c4e1b5de7b600d9e0"; @@ -93,6 +92,23 @@ typedef struct vc static const int ROUNDS_VERACRYPT_200000 = 200000; static const float MIN_SUFFICIENT_ENTROPY_FILE = 7.0f; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm13773_comp' pipeline, timeout reached + return true; + } + } + } + + return false; +} + int module_build_plain_postprocess (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const void *tmps, const u32 *src_buf, MAYBE_UNUSED const size_t src_sz, MAYBE_UNUSED const int src_len, u32 *dst_buf, MAYBE_UNUSED const size_t dst_sz) { const vc_t *vc = (const vc_t *) hashes->esalts_buf; @@ -306,6 +322,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = module_build_plain_postprocess; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -371,6 +389,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_13800.c b/src/modules/module_13800.c index 199aeebda..507600568 100644 --- a/src/modules/module_13800.c +++ b/src/modules/module_13800.c @@ -52,6 +52,23 @@ typedef struct win8phone } win8phone_t; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm13800_s04' pipeline, timeout reached + return true; + } + } + } + + return false; +} + char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) { char *jit_build_options = NULL; @@ -192,6 +209,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -257,6 +276,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = MODULE_DEFAULT; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_13900.c b/src/modules/module_13900.c index ed573ec79..20d016cb4 100644 --- a/src/modules/module_13900.c +++ b/src/modules/module_13900.c @@ -45,6 +45,23 @@ u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig, const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; } const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; } +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm13900_s04' pipeline, timeout reached + return true; + } + } + } + + return false; +} + int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED void *digest_buf, MAYBE_UNUSED salt_t *salt, MAYBE_UNUSED void *esalt_buf, MAYBE_UNUSED void *hook_salt_buf, MAYBE_UNUSED hashinfo_t *hash_info, const char *line_buf, MAYBE_UNUSED const int line_len) { u32 *digest = (u32 *) digest_buf; @@ -142,6 +159,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -207,6 +226,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = MODULE_DEFAULT; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_14000.c b/src/modules/module_14000.c index 80d1fd79f..bb8c141e8 100644 --- a/src/modules/module_14000.c +++ b/src/modules/module_14000.c @@ -23,6 +23,7 @@ static const u64 KERN_TYPE = 14000; static const u32 OPTI_TYPE = OPTI_TYPE_ZERO_BYTE; static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE | OPTS_TYPE_PT_GENERATE_LE + | OPTS_TYPE_NATIVE_THREADS | OPTS_TYPE_TM_KERNEL | OPTS_TYPE_ST_HEX; static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; @@ -47,8 +48,17 @@ const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) { // Intel(R) Xeon(R) W-3223 CPU @ 3.50GHz; OpenCL C 1.2; 11.3.1; 20E241 - if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_CPU)) + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE || device_param->opencl_platform_vendor_id == VENDOR_ID_INTEL_SDK) && (device_param->opencl_device_type & CL_DEVICE_TYPE_CPU)) { + if (strncmp (device_param->device_name, "AMD EPYC", 8) == 0) + { + // works on: AMD EPYC 7642 48-Core Processor, OpenCL 2.1 (Build 0) + return false; + } + + // fail also on Apple Intel + + // skip by default for now return true; } @@ -254,6 +264,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = module_benchmark_mask; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_14100.c b/src/modules/module_14100.c index bece404ad..da7a0b40c 100644 --- a/src/modules/module_14100.c +++ b/src/modules/module_14100.c @@ -205,6 +205,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = module_benchmark_mask; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_14400.c b/src/modules/module_14400.c index 7c10075a6..18c8d4c4a 100644 --- a/src/modules/module_14400.c +++ b/src/modules/module_14400.c @@ -43,6 +43,15 @@ u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig, const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; } const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; } +char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + char *jit_build_options = NULL; + + hc_asprintf (&jit_build_options, "-D NO_FUNNELSHIFT"); + + return jit_build_options; +} + u32 module_pw_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const bool optimized_kernel = (hashconfig->opti_type & OPTI_TYPE_OPTIMIZED_KERNEL); @@ -148,6 +157,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -186,7 +197,7 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_hook23 = MODULE_DEFAULT; module_ctx->module_hook_salt_size = MODULE_DEFAULT; module_ctx->module_hook_size = MODULE_DEFAULT; - module_ctx->module_jit_build_options = MODULE_DEFAULT; + module_ctx->module_jit_build_options = module_jit_build_options; module_ctx->module_jit_cache_disable = MODULE_DEFAULT; module_ctx->module_kernel_accel_max = MODULE_DEFAULT; module_ctx->module_kernel_accel_min = MODULE_DEFAULT; diff --git a/src/modules/module_14500.c b/src/modules/module_14500.c index c940dc953..3970fac13 100644 --- a/src/modules/module_14500.c +++ b/src/modules/module_14500.c @@ -347,6 +347,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_14600.c b/src/modules/module_14600.c index 6848ca06a..e850e3cc3 100644 --- a/src/modules/module_14600.c +++ b/src/modules/module_14600.c @@ -620,6 +620,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = module_benchmark_salt; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_14700.c b/src/modules/module_14700.c index f71fd99a9..4f29f52b6 100644 --- a/src/modules/module_14700.c +++ b/src/modules/module_14700.c @@ -345,6 +345,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_14800.c b/src/modules/module_14800.c index 2a5f6b33c..9f3c1ca0f 100644 --- a/src/modules/module_14800.c +++ b/src/modules/module_14800.c @@ -383,6 +383,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = module_benchmark_salt; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_14900.c b/src/modules/module_14900.c index 62499126f..cbe009024 100644 --- a/src/modules/module_14900.c +++ b/src/modules/module_14900.c @@ -24,6 +24,7 @@ static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE | OPTS_TYPE_PT_GENERATE_LE | OPTS_TYPE_SUGGEST_KG; static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; +static const char *BENCHMARK_MASK = "?b?b?b?b?bxxxxx"; static const char *ST_PASS = "hashcat!!!"; static const char *ST_HASH = "7090b6b9:04223875"; @@ -58,7 +59,7 @@ u32 module_pw_min (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED con const char *module_benchmark_mask (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { - return "?b?b?b?b?bxxxxx"; + return BENCHMARK_MASK; } int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED void *digest_buf, MAYBE_UNUSED salt_t *salt, MAYBE_UNUSED void *esalt_buf, MAYBE_UNUSED void *hook_salt_buf, MAYBE_UNUSED hashinfo_t *hash_info, const char *line_buf, MAYBE_UNUSED const int line_len) @@ -126,6 +127,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = module_benchmark_mask; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_15000.c b/src/modules/module_15000.c index b41d51d35..998fc2692 100644 --- a/src/modules/module_15000.c +++ b/src/modules/module_15000.c @@ -227,6 +227,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_15100.c b/src/modules/module_15100.c index e1c27067c..40ee7efbb 100644 --- a/src/modules/module_15100.c +++ b/src/modules/module_15100.c @@ -321,6 +321,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_15200.c b/src/modules/module_15200.c index 91c25f0c3..00b966b8e 100644 --- a/src/modules/module_15200.c +++ b/src/modules/module_15200.c @@ -159,6 +159,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_15300.c b/src/modules/module_15300.c index 701e5d695..071ce7680 100644 --- a/src/modules/module_15300.c +++ b/src/modules/module_15300.c @@ -76,6 +76,23 @@ typedef struct dpapimk_tmp_v1 static const char *SIGNATURE_DPAPIMK = "$DPAPImk$"; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm15300_init' pipeline, timeout reached + return true; + } + } + } + + return false; +} + u64 module_tmp_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const u64 tmp_size = (const u64) sizeof (dpapimk_tmp_v1_t); @@ -381,6 +398,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -446,6 +465,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_15310.c b/src/modules/module_15310.c index b10b93792..724034ce9 100644 --- a/src/modules/module_15310.c +++ b/src/modules/module_15310.c @@ -79,6 +79,23 @@ typedef struct dpapimk_tmp_v1 static const char *SIGNATURE_DPAPIMK = "$DPAPImk$"; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm15310_init' pipeline, timeout reached + return true; + } + } + } + + return false; +} + salt_t *module_benchmark_salt (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { salt_t *salt = (salt_t *) hcmalloc (sizeof (salt_t)); @@ -398,6 +415,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = module_benchmark_salt; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -463,6 +482,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_15400.c b/src/modules/module_15400.c index ffcbc1b5a..fac76c8a1 100644 --- a/src/modules/module_15400.c +++ b/src/modules/module_15400.c @@ -216,6 +216,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = module_benchmark_mask; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_15500.c b/src/modules/module_15500.c index b87390fb7..cd8f4639b 100644 --- a/src/modules/module_15500.c +++ b/src/modules/module_15500.c @@ -282,6 +282,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_15600.c b/src/modules/module_15600.c index c06af7f29..1f2b7b9a3 100644 --- a/src/modules/module_15600.c +++ b/src/modules/module_15600.c @@ -273,6 +273,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_15700.c b/src/modules/module_15700.c index 6b8550095..c4b04ab90 100644 --- a/src/modules/module_15700.c +++ b/src/modules/module_15700.c @@ -10,6 +10,7 @@ #include "bitops.h" #include "convert.h" #include "shared.h" +#include "memory.h" static const u32 ATTACK_EXEC = ATTACK_EXEC_OUTSIDE_KERNEL; static const u32 DGST_POS0 = 0; @@ -24,8 +25,8 @@ static const u32 OPTI_TYPE = OPTI_TYPE_ZERO_BYTE; static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE | OPTS_TYPE_PT_GENERATE_LE | OPTS_TYPE_MP_MULTI_DISABLE + | OPTS_TYPE_NATIVE_THREADS | OPTS_TYPE_LOOP_PREPARE - | OPTS_TYPE_SELF_TEST_DISABLE | OPTS_TYPE_ST_HEX; static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; static const char *ST_PASS = "hashcat"; @@ -55,30 +56,9 @@ typedef struct ethereum_scrypt static const char *SIGNATURE_ETHEREUM_SCRYPT = "$ethereum$s"; -static const u64 SCRYPT_N = 262144; -static const u64 SCRYPT_R = 8; -static const u64 SCRYPT_P = 1; +static const u32 SCRYPT_THREADS = 4; -u32 module_kernel_loops_min (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) -{ - const u32 kernel_loops_min = 1024; - - return kernel_loops_min; -} - -u32 module_kernel_loops_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) -{ - const u32 kernel_loops_max = 1024; - - return kernel_loops_max; -} - -u32 module_kernel_threads_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) -{ - const u32 kernel_threads_max = 4; - - return kernel_threads_max; -} +#include "scrypt_common.c" u64 module_esalt_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { @@ -87,198 +67,6 @@ u64 module_esalt_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED return esalt_size; } -u32 module_pw_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) -{ - // this overrides the reductions of PW_MAX in case optimized kernel is selected - // IOW, even in optimized kernel mode it support length 256 - - const u32 pw_max = PW_MAX; - - return pw_max; -} - -u64 module_extra_buffer_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - // we need to set the self-test hash settings to pass the self-test - // the decoder for the self-test is called after this function - - const u64 scrypt_N = (hashes->salts_buf[0].scrypt_N) ? hashes->salts_buf[0].scrypt_N : SCRYPT_N; - const u64 scrypt_r = (hashes->salts_buf[0].scrypt_r) ? hashes->salts_buf[0].scrypt_r : SCRYPT_R; - - const u64 kernel_power_max = ((OPTS_TYPE & OPTS_TYPE_MP_MULTI_DISABLE) ? 1 : device_param->device_processors) * device_param->kernel_threads_max * device_param->kernel_accel_max; - - u64 tmto_start = 0; - u64 tmto_stop = 4; - - if (user_options->scrypt_tmto_chgd == true) - { - tmto_start = user_options->scrypt_tmto; - tmto_stop = user_options->scrypt_tmto; - } - - // size_pws - - const u64 size_pws = kernel_power_max * sizeof (pw_t); - - const u64 size_pws_amp = size_pws; - - // size_pws_comp - - const u64 size_pws_comp = kernel_power_max * (sizeof (u32) * 64); - - // size_pws_idx - - const u64 size_pws_idx = (kernel_power_max + 1) * sizeof (pw_idx_t); - - // size_tmps - - const u64 size_tmps = kernel_power_max * hashconfig->tmp_size; - - // size_hooks - - const u64 size_hooks = kernel_power_max * hashconfig->hook_size; - - u64 size_pws_pre = 4; - u64 size_pws_base = 4; - - if (user_options->slow_candidates == true) - { - // size_pws_pre - - size_pws_pre = kernel_power_max * sizeof (pw_pre_t); - - // size_pws_base - - size_pws_base = kernel_power_max * sizeof (pw_pre_t); - } - - // sometimes device_available_mem and device_maxmem_alloc reported back from the opencl runtime are a bit inaccurate. - // let's add some extra space just to be sure. - // now depends on the kernel-accel value (where scrypt and similar benefits), but also hard minimum 64mb and maximum 1024mb limit - - u64 EXTRA_SPACE = (1024ULL * 1024ULL) * device_param->kernel_accel_max; - - EXTRA_SPACE = MAX (EXTRA_SPACE, ( 64ULL * 1024ULL * 1024ULL)); - EXTRA_SPACE = MIN (EXTRA_SPACE, (1024ULL * 1024ULL * 1024ULL)); - - const u64 scrypt_extra_space - = device_param->size_bfs - + device_param->size_combs - + device_param->size_digests - + device_param->size_esalts - + device_param->size_markov_css - + device_param->size_plains - + device_param->size_results - + device_param->size_root_css - + device_param->size_rules - + device_param->size_rules_c - + device_param->size_salts - + device_param->size_shown - + device_param->size_tm - + device_param->size_st_digests - + device_param->size_st_salts - + device_param->size_st_esalts - + size_pws - + size_pws_amp - + size_pws_comp - + size_pws_idx - + size_tmps - + size_hooks - + size_pws_pre - + size_pws_base - + EXTRA_SPACE; - - bool not_enough_memory = true; - - u64 size_scrypt = 0; - - u64 tmto; - - for (tmto = tmto_start; tmto <= tmto_stop; tmto++) - { - size_scrypt = (128ULL * scrypt_r) * scrypt_N; - - size_scrypt /= 1ull << tmto; - - size_scrypt *= kernel_power_max; - - if ((size_scrypt / 4) > device_param->device_maxmem_alloc) continue; - - if ((size_scrypt + scrypt_extra_space) > device_param->device_available_mem) continue; - - not_enough_memory = false; - - break; - } - - if (not_enough_memory == true) return -1; - - return size_scrypt; -} - -u64 module_tmp_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) -{ - const u64 tmp_size = 0; // we'll add some later - - return tmp_size; -} - -u64 module_extra_tmp_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes) -{ - const u64 scrypt_N = (hashes->salts_buf[0].scrypt_N) ? hashes->salts_buf[0].scrypt_N : SCRYPT_N; - const u64 scrypt_r = (hashes->salts_buf[0].scrypt_r) ? hashes->salts_buf[0].scrypt_r : SCRYPT_R; - const u64 scrypt_p = (hashes->salts_buf[0].scrypt_p) ? hashes->salts_buf[0].scrypt_p : SCRYPT_P; - - // we need to check that all hashes have the same scrypt settings - - for (u32 i = 1; i < hashes->salts_cnt; i++) - { - if ((hashes->salts_buf[i].scrypt_N != scrypt_N) - || (hashes->salts_buf[i].scrypt_r != scrypt_r) - || (hashes->salts_buf[i].scrypt_p != scrypt_p)) - { - return -1; - } - } - - const u64 tmp_size = 128ULL * scrypt_r * scrypt_p; - - return tmp_size; -} - -bool module_warmup_disable (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) -{ - return true; -} - -char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - const u64 scrypt_N = (hashes->salts_buf[0].scrypt_N) ? hashes->salts_buf[0].scrypt_N : SCRYPT_N; - const u64 scrypt_r = (hashes->salts_buf[0].scrypt_r) ? hashes->salts_buf[0].scrypt_r : SCRYPT_R; - const u64 scrypt_p = (hashes->salts_buf[0].scrypt_p) ? hashes->salts_buf[0].scrypt_p : SCRYPT_P; - - const u64 extra_buffer_size = device_param->extra_buffer_size; - - const u64 kernel_power_max = ((OPTS_TYPE & OPTS_TYPE_MP_MULTI_DISABLE) ? 1 : device_param->device_processors) * device_param->kernel_threads_max * device_param->kernel_accel_max; - - const u64 size_scrypt = 128ULL * scrypt_r * scrypt_N; - - const u64 scrypt_tmto_final = (kernel_power_max * size_scrypt) / extra_buffer_size; - - const u64 tmp_size = 128ULL * scrypt_r * scrypt_p; - - char *jit_build_options = NULL; - - hc_asprintf (&jit_build_options, "-D SCRYPT_N=%u -D SCRYPT_R=%u -D SCRYPT_P=%u -D SCRYPT_TMTO=%" PRIu64 " -D SCRYPT_TMP_ELEM=%" PRIu64, - hashes->salts_buf[0].scrypt_N, - hashes->salts_buf[0].scrypt_r, - hashes->salts_buf[0].scrypt_p, - scrypt_tmto_final, - tmp_size / 16); - - return jit_build_options; -} - int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED void *digest_buf, MAYBE_UNUSED salt_t *salt, MAYBE_UNUSED void *esalt_buf, MAYBE_UNUSED void *hook_salt_buf, MAYBE_UNUSED hashinfo_t *hash_info, const char *line_buf, MAYBE_UNUSED const int line_len) { u32 *digest = (u32 *) digest_buf; @@ -452,6 +240,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -462,9 +252,9 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_dgst_size = module_dgst_size; module_ctx->module_dictstat_disable = MODULE_DEFAULT; module_ctx->module_esalt_size = module_esalt_size; - module_ctx->module_extra_buffer_size = module_extra_buffer_size; - module_ctx->module_extra_tmp_size = module_extra_tmp_size; - module_ctx->module_extra_tuningdb_block = MODULE_DEFAULT; + module_ctx->module_extra_buffer_size = scrypt_module_extra_buffer_size; + module_ctx->module_extra_tmp_size = scrypt_module_extra_tmp_size; + module_ctx->module_extra_tuningdb_block = scrypt_module_extra_tuningdb_block; module_ctx->module_forced_outfile_format = MODULE_DEFAULT; module_ctx->module_hash_binary_count = MODULE_DEFAULT; module_ctx->module_hash_binary_parse = MODULE_DEFAULT; @@ -490,13 +280,13 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_hook23 = MODULE_DEFAULT; module_ctx->module_hook_salt_size = MODULE_DEFAULT; module_ctx->module_hook_size = MODULE_DEFAULT; - module_ctx->module_jit_build_options = module_jit_build_options; + module_ctx->module_jit_build_options = scrypt_module_jit_build_options; module_ctx->module_jit_cache_disable = MODULE_DEFAULT; module_ctx->module_kernel_accel_max = MODULE_DEFAULT; module_ctx->module_kernel_accel_min = MODULE_DEFAULT; - module_ctx->module_kernel_loops_max = module_kernel_loops_max; - module_ctx->module_kernel_loops_min = module_kernel_loops_min; - module_ctx->module_kernel_threads_max = module_kernel_threads_max; + module_ctx->module_kernel_loops_max = scrypt_module_kernel_loops_max; + module_ctx->module_kernel_loops_min = scrypt_module_kernel_loops_min; + module_ctx->module_kernel_threads_max = scrypt_module_kernel_threads_max; module_ctx->module_kernel_threads_min = MODULE_DEFAULT; module_ctx->module_kern_type = module_kern_type; module_ctx->module_kern_type_dynamic = MODULE_DEFAULT; @@ -508,7 +298,7 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_potfile_disable = MODULE_DEFAULT; module_ctx->module_potfile_keep_all_hashes = MODULE_DEFAULT; module_ctx->module_pwdump_column = MODULE_DEFAULT; - module_ctx->module_pw_max = module_pw_max; + module_ctx->module_pw_max = MODULE_DEFAULT; module_ctx->module_pw_min = MODULE_DEFAULT; module_ctx->module_salt_max = MODULE_DEFAULT; module_ctx->module_salt_min = MODULE_DEFAULT; @@ -516,7 +306,7 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_separator = MODULE_DEFAULT; module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; - module_ctx->module_tmp_size = module_tmp_size; + module_ctx->module_tmp_size = scrypt_module_tmp_size; module_ctx->module_unstable_warning = MODULE_DEFAULT; - module_ctx->module_warmup_disable = module_warmup_disable; + module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_15900.c b/src/modules/module_15900.c index d3d2df0b7..5ba7bd83d 100644 --- a/src/modules/module_15900.c +++ b/src/modules/module_15900.c @@ -77,17 +77,6 @@ typedef struct dpapimk_tmp_v2 static const char *SIGNATURE_DPAPIMK = "$DPAPImk$"; -bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - // AMD Radeon Pro W5700X, Metal.Version.: 261.13, compiler hangs - if (device_param->is_metal == true) - { - return true; - } - - return false; -} - u64 module_tmp_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const u64 tmp_size = (const u64) sizeof (dpapimk_tmp_v2_t); @@ -392,6 +381,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -457,6 +448,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = module_unstable_warning; + module_ctx->module_unstable_warning = MODULE_DEFAULT; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_15910.c b/src/modules/module_15910.c index 8ca85a5fd..cda606458 100644 --- a/src/modules/module_15910.c +++ b/src/modules/module_15910.c @@ -85,6 +85,23 @@ typedef struct dpapimk_tmp_v2 static const char *SIGNATURE_DPAPIMK = "$DPAPImk$"; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm15910_init' pipeline, timeout reached + return true; + } + } + } + + return false; +} + salt_t *module_benchmark_salt (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { salt_t *salt = (salt_t *) hcmalloc (sizeof (salt_t)); @@ -404,6 +421,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = module_benchmark_salt; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -469,6 +488,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_16000.c b/src/modules/module_16000.c index 0d9536f73..9781e0e72 100644 --- a/src/modules/module_16000.c +++ b/src/modules/module_16000.c @@ -126,6 +126,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_16100.c b/src/modules/module_16100.c index 57b0d5a33..5ad51f65a 100644 --- a/src/modules/module_16100.c +++ b/src/modules/module_16100.c @@ -196,6 +196,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_16200.c b/src/modules/module_16200.c index f3d65d007..e6294a333 100644 --- a/src/modules/module_16200.c +++ b/src/modules/module_16200.c @@ -260,6 +260,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_16300.c b/src/modules/module_16300.c index 9c2fa883d..e7507f1fa 100644 --- a/src/modules/module_16300.c +++ b/src/modules/module_16300.c @@ -64,17 +64,6 @@ typedef struct pbkdf2_sha256_tmp static const char *SIGNATURE_ETHEREUM_PRESALE = "$ethereum$w"; static const int ROUNDS_ETHEREUM_PRESALE = 2000; -bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - // AMD Radeon Pro W5700X, Metal.Version.: 261.13, compiler hangs - if (device_param->is_metal == true) - { - return true; - } - - return false; -} - char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) { char *jit_build_options = NULL; @@ -284,6 +273,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -349,6 +340,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = module_unstable_warning; + module_ctx->module_unstable_warning = MODULE_DEFAULT; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_16400.c b/src/modules/module_16400.c index eecd9fe3d..3c8ab0504 100644 --- a/src/modules/module_16400.c +++ b/src/modules/module_16400.c @@ -123,6 +123,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_16500.c b/src/modules/module_16500.c index cea9e0a24..a9e9fa1af 100644 --- a/src/modules/module_16500.c +++ b/src/modules/module_16500.c @@ -343,6 +343,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = module_benchmark_salt; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_16600.c b/src/modules/module_16600.c index 47ed037d7..75d6b3cb5 100644 --- a/src/modules/module_16600.c +++ b/src/modules/module_16600.c @@ -55,6 +55,18 @@ typedef struct electrum_wallet static const char *SIGNATURE_ELECTRUM_WALLET = "$electrum$"; +char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + char *jit_build_options = NULL; + + if (device_param->is_cuda == true) + { + hc_asprintf (&jit_build_options, "-D FIXED_LOCAL_SIZE=%u", (u32) device_param->device_maxworkgroup_size); + } + + return jit_build_options; +} + u64 module_esalt_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const u64 esalt_size = (const u64) sizeof (electrum_wallet_t); @@ -192,6 +204,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -230,7 +244,7 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_hook23 = MODULE_DEFAULT; module_ctx->module_hook_salt_size = MODULE_DEFAULT; module_ctx->module_hook_size = MODULE_DEFAULT; - module_ctx->module_jit_build_options = MODULE_DEFAULT; + module_ctx->module_jit_build_options = module_jit_build_options; module_ctx->module_jit_cache_disable = MODULE_DEFAULT; module_ctx->module_kernel_accel_max = MODULE_DEFAULT; module_ctx->module_kernel_accel_min = MODULE_DEFAULT; diff --git a/src/modules/module_16700.c b/src/modules/module_16700.c index 3066b8f0b..9dce98e62 100644 --- a/src/modules/module_16700.c +++ b/src/modules/module_16700.c @@ -232,6 +232,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_16800.c b/src/modules/module_16800.c index 9022b4cfb..22d7efba4 100644 --- a/src/modules/module_16800.c +++ b/src/modules/module_16800.c @@ -520,6 +520,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = module_benchmark_mask; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = module_deep_comp_kernel; module_ctx->module_deprecated_notice = module_deprecated_notice; diff --git a/src/modules/module_16801.c b/src/modules/module_16801.c index 183677ace..2d9132391 100644 --- a/src/modules/module_16801.c +++ b/src/modules/module_16801.c @@ -593,6 +593,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = module_benchmark_mask; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = module_deep_comp_kernel; module_ctx->module_deprecated_notice = module_deprecated_notice; diff --git a/src/modules/module_16900.c b/src/modules/module_16900.c index 3fd5a3d40..443da6007 100644 --- a/src/modules/module_16900.c +++ b/src/modules/module_16900.c @@ -295,6 +295,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_17010.c b/src/modules/module_17010.c index c5b4280b0..6dafe2296 100644 --- a/src/modules/module_17010.c +++ b/src/modules/module_17010.c @@ -336,6 +336,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = module_deep_comp_kernel; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_17020.c b/src/modules/module_17020.c index a877ab82d..4f982ebf7 100644 --- a/src/modules/module_17020.c +++ b/src/modules/module_17020.c @@ -78,6 +78,23 @@ typedef struct gpg_tmp static const char *SIGNATURE_GPG = "$gpg$"; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm17020_loop' pipeline, timeout reached + return true; + } + } + } + + return false; +} + u64 module_esalt_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const u64 esalt_size = (const u64) sizeof (gpg_t); @@ -338,6 +355,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = module_deep_comp_kernel; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -403,6 +422,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_17030.c b/src/modules/module_17030.c index 52fa74c92..4ebb0a1bf 100644 --- a/src/modules/module_17030.c +++ b/src/modules/module_17030.c @@ -334,6 +334,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = module_deep_comp_kernel; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_17040.c b/src/modules/module_17040.c index dd3661136..693c5bfc1 100644 --- a/src/modules/module_17040.c +++ b/src/modules/module_17040.c @@ -365,6 +365,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = module_deep_comp_kernel; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_17200.c b/src/modules/module_17200.c index 24f77798f..1810182bb 100644 --- a/src/modules/module_17200.c +++ b/src/modules/module_17200.c @@ -91,6 +91,7 @@ Related publication: https://scitepress.org/PublicationsDetail.aspx?ID=KLPzPqStp #include "bitops.h" #include "convert.h" #include "shared.h" +#include "memory.h" static const u32 ATTACK_EXEC = ATTACK_EXEC_INSIDE_KERNEL; static const u32 DGST_POS0 = 0; @@ -102,8 +103,7 @@ static const u32 HASH_CATEGORY = HASH_CATEGORY_ARCHIVE; static const char *HASH_NAME = "PKZIP (Compressed)"; static const u64 KERN_TYPE = 17200; static const u32 OPTI_TYPE = 0; -static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE - | OPTS_TYPE_NATIVE_THREADS; +static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE; static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; static const char *ST_PASS = "hashcat"; static const char *ST_HASH = "$pkzip2$1*1*2*0*e3*1c5*eda7a8de*0*28*8*e3*eda7*5096*a9fc1f4e951c8fb3031a6f903e5f4e3211c8fdc4671547bf77f6f682afbfcc7475d83898985621a7af9bccd1349d1976500a68c48f630b7f22d7a0955524d768e34868880461335417ddd149c65a917c0eb0a4bf7224e24a1e04cf4ace5eef52205f4452e66ded937db9545f843a68b1e84a2e933cc05fb36d3db90e6c5faf1bee2249fdd06a7307849902a8bb24ec7e8a0886a4544ca47979a9dfeefe034bdfc5bd593904cfe9a5309dd199d337d3183f307c2cb39622549a5b9b8b485b7949a4803f63f67ca427a0640ad3793a519b2476c52198488e3e2e04cac202d624fb7d13c2*$/pkzip2$"; @@ -171,15 +171,27 @@ bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE // it leads to CL_KERNEL_WORK_GROUP_SIZE to return 0 and later we will divide with 0 // workaround would be to rewrite kernel to use global memory - if (device_param->opencl_device_vendor_id == VENDOR_ID_INTEL_SDK) + if (device_param->is_metal == true) + { + // error: 'goto' is not supported in Metal + return true; + } + + if ((device_param->opencl_device_vendor_id == VENDOR_ID_INTEL_SDK) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) { return true; } - // AppleM1, OpenCL, MTLCompilerService never-end if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) { - return true; + if (device_param->is_metal == false) + { + if (strncmp (device_param->device_name, "Apple M", 7) == 0) + { + // AppleM1, OpenCL, MTLCompilerService never-end + return true; + } + } } return false; @@ -206,9 +218,11 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE u32 *digest = (u32 *) digest_buf; - char input[line_len + 1]; + char *input = (char *) hcmalloc (line_len + 1); + if (!input) return PARSER_HAVE_ERRNO; + + memcpy (input, line_buf, line_len); input[line_len] = '\0'; - memcpy (&input, line_buf, line_len); char *saveptr = NULL; @@ -318,6 +332,8 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE digest[2] = 0; digest[3] = 0; + hcfree (input); + return (PARSER_OK); } @@ -383,6 +399,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_17210.c b/src/modules/module_17210.c index 307757689..050ca05d1 100644 --- a/src/modules/module_17210.c +++ b/src/modules/module_17210.c @@ -91,6 +91,7 @@ Related publication: https://scitepress.org/PublicationsDetail.aspx?ID=KLPzPqStp #include "bitops.h" #include "convert.h" #include "shared.h" +#include "memory.h" static const u32 ATTACK_EXEC = ATTACK_EXEC_INSIDE_KERNEL; static const u32 DGST_POS0 = 0; @@ -186,9 +187,11 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE u32 *digest = (u32 *) digest_buf; - char input[line_len + 1]; + char *input = (char *) hcmalloc (line_len + 1); + if (!input) return PARSER_HAVE_ERRNO; + + memcpy (input, line_buf, line_len); input[line_len] = '\0'; - memcpy (&input, line_buf, line_len); char *saveptr = NULL; @@ -297,6 +300,8 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE digest[2] = 0; digest[3] = 0; + hcfree (input); + return (PARSER_OK); } @@ -362,6 +367,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_17220.c b/src/modules/module_17220.c index c2ac82b2c..e9fa6ffec 100644 --- a/src/modules/module_17220.c +++ b/src/modules/module_17220.c @@ -91,6 +91,7 @@ Related publication: https://scitepress.org/PublicationsDetail.aspx?ID=KLPzPqStp #include "bitops.h" #include "convert.h" #include "shared.h" +#include "memory.h" static const u32 ATTACK_EXEC = ATTACK_EXEC_INSIDE_KERNEL; static const u32 DGST_POS0 = 0; @@ -102,8 +103,7 @@ static const u32 HASH_CATEGORY = HASH_CATEGORY_ARCHIVE; static const char *HASH_NAME = "PKZIP (Compressed Multi-File)"; static const u64 KERN_TYPE = 17220; static const u32 OPTI_TYPE = 0; -static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE - | OPTS_TYPE_NATIVE_THREADS; +static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE; static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; static const char *ST_PASS = "hashcat"; static const char *ST_HASH = "$pkzip2$3*1*1*0*8*24*a425*8827*d1730095cd829e245df04ebba6c52c0573d49d3bbeab6cb385b7fa8a28dcccd3098bfdd7*1*0*8*24*2a74*882a*51281ac874a60baedc375ca645888d29780e20d4076edd1e7154a99bde982152a736311f*2*0*e3*1c5*eda7a8de*0*29*8*e3*eda7*5096*1455781b59707f5151139e018bdcfeebfc89bc37e372883a7ec0670a5eafc622feb338f9b021b6601a674094898a91beac70e41e675f77702834ca6156111a1bf7361bc9f3715d77dfcdd626634c68354c6f2e5e0a7b1e1ce84a44e632d0f6e36019feeab92fb7eac9dda8df436e287aafece95d042059a1b27d533c5eab62c1c559af220dc432f2eb1a38a70f29e8f3cb5a207704274d1e305d7402180fd47e026522792f5113c52a116d5bb25b67074ffd6f4926b221555234aabddc69775335d592d5c7d22462b75de1259e8342a9ba71cb06223d13c7f51f13be2ad76352c3b8ed*$/pkzip2$"; @@ -171,15 +171,27 @@ bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE // it leads to CL_KERNEL_WORK_GROUP_SIZE to return 0 and later we will divide with 0 // workaround would be to rewrite kernel to use global memory - if (device_param->opencl_device_vendor_id == VENDOR_ID_INTEL_SDK) + if (device_param->is_metal == true) + { + // error: 'goto' is not supported in Metal + return true; + } + + if ((device_param->opencl_device_vendor_id == VENDOR_ID_INTEL_SDK) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) { return true; } - // AppleM1, OpenCL, MTLCompilerService never-end if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) { - return true; + if (device_param->is_metal == false) + { + if (strncmp (device_param->device_name, "Apple M", 7) == 0) + { + // AppleM1, OpenCL, MTLCompilerService never-end + return true; + } + } } return false; @@ -206,9 +218,11 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE u32 *digest = (u32 *) digest_buf; - char input[line_len + 1]; + char *input = (char *) hcmalloc (line_len + 1); + if (!input) return PARSER_HAVE_ERRNO; + + memcpy (input, line_buf, line_len); input[line_len] = '\0'; - memcpy (&input, line_buf, line_len); char *saveptr = NULL; @@ -314,6 +328,8 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE salt->salt_len = pkzip->hash_count << 2; + hcfree (input); + return (PARSER_OK); } @@ -386,6 +402,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_17225.c b/src/modules/module_17225.c index 3cbf0f51b..41debbd09 100644 --- a/src/modules/module_17225.c +++ b/src/modules/module_17225.c @@ -91,6 +91,7 @@ Related publication: https://scitepress.org/PublicationsDetail.aspx?ID=KLPzPqStp #include "bitops.h" #include "convert.h" #include "shared.h" +#include "memory.h" static const u32 ATTACK_EXEC = ATTACK_EXEC_INSIDE_KERNEL; static const u32 DGST_POS0 = 0; @@ -102,8 +103,7 @@ static const u32 HASH_CATEGORY = HASH_CATEGORY_ARCHIVE; static const char *HASH_NAME = "PKZIP (Mixed Multi-File)"; static const u64 KERN_TYPE = 17225; static const u32 OPTI_TYPE = 0; -static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE - | OPTS_TYPE_NATIVE_THREADS; +static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE; static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; static const char *ST_PASS = "hashcat"; static const char *ST_HASH = "$pkzip2$3*1*1*0*0*24*3e2c*3ef8*0619e9d17ff3f994065b99b1fa8aef41c056edf9fa4540919c109742dcb32f797fc90ce0*1*0*8*24*431a*3f26*18e2461c0dbad89bd9cc763067a020c89b5e16195b1ac5fa7fb13bd246d000b6833a2988*2*0*23*17*1e3c1a16*2e4*2f*0*23*1e3c*3f2d*54ea4dbc711026561485bbd191bf300ae24fa0997f3779b688cdad323985f8d3bb8b0c*$/pkzip2$"; @@ -171,15 +171,27 @@ bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE // it leads to CL_KERNEL_WORK_GROUP_SIZE to return 0 and later we will divide with 0 // workaround would be to rewrite kernel to use global memory - if (device_param->opencl_device_vendor_id == VENDOR_ID_INTEL_SDK) + if (device_param->is_metal == true) + { + // error: 'goto' is not supported in Metal + return true; + } + + if ((device_param->opencl_device_vendor_id == VENDOR_ID_INTEL_SDK) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) { return true; } - // AppleM1, OpenCL, MTLCompilerService never-end if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) { - return true; + if (device_param->is_metal == false) + { + if (strncmp (device_param->device_name, "Apple M", 7) == 0) + { + // AppleM1, OpenCL, MTLCompilerService never-end + return true; + } + } } return false; @@ -207,9 +219,11 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE u32 *digest = (u32 *) digest_buf; - char input[line_len + 1]; + char *input = (char *) hcmalloc (line_len + 1); + if (!input) return PARSER_HAVE_ERRNO; + + memcpy (input, line_buf, line_len); input[line_len] = '\0'; - memcpy (&input, line_buf, line_len); char *saveptr = NULL; @@ -315,6 +329,8 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE salt->salt_len = pkzip->hash_count << 2; + hcfree (input); + return (PARSER_OK); } @@ -387,6 +403,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_17230.c b/src/modules/module_17230.c index 2b3ef24c9..fd285f5b9 100644 --- a/src/modules/module_17230.c +++ b/src/modules/module_17230.c @@ -91,6 +91,7 @@ Related publication: https://scitepress.org/PublicationsDetail.aspx?ID=KLPzPqStp #include "bitops.h" #include "convert.h" #include "shared.h" +#include "memory.h" static const u32 ATTACK_EXEC = ATTACK_EXEC_INSIDE_KERNEL; static const u32 DGST_POS0 = 0; @@ -199,9 +200,11 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE u32 *digest = (u32 *) digest_buf; - char input[line_len + 1]; + char *input = (char *) hcmalloc (line_len + 1); + if (!input) return PARSER_HAVE_ERRNO; + + memcpy (input, line_buf, line_len); input[line_len] = '\0'; - memcpy (&input, line_buf, line_len); char *saveptr = NULL; @@ -308,6 +311,8 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE salt->salt_len = pkzip->hash_count << 2; + hcfree (input); + return (PARSER_OK); } @@ -380,6 +385,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_17300.c b/src/modules/module_17300.c index 139bf7181..36eb6d681 100644 --- a/src/modules/module_17300.c +++ b/src/modules/module_17300.c @@ -118,6 +118,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_17400.c b/src/modules/module_17400.c index 74a7b2275..99c0ed604 100644 --- a/src/modules/module_17400.c +++ b/src/modules/module_17400.c @@ -109,6 +109,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_17500.c b/src/modules/module_17500.c index 2bd2448e4..06d396b0a 100644 --- a/src/modules/module_17500.c +++ b/src/modules/module_17500.c @@ -115,6 +115,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_17600.c b/src/modules/module_17600.c index b6760541b..ccf6101f3 100644 --- a/src/modules/module_17600.c +++ b/src/modules/module_17600.c @@ -121,6 +121,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_17700.c b/src/modules/module_17700.c index 803bed8c5..445d8e579 100644 --- a/src/modules/module_17700.c +++ b/src/modules/module_17700.c @@ -118,6 +118,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_17800.c b/src/modules/module_17800.c index ae6abb885..519566ec0 100644 --- a/src/modules/module_17800.c +++ b/src/modules/module_17800.c @@ -109,6 +109,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_17900.c b/src/modules/module_17900.c index 3db6a9496..c83930537 100644 --- a/src/modules/module_17900.c +++ b/src/modules/module_17900.c @@ -115,6 +115,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_18000.c b/src/modules/module_18000.c index 5f3209c5b..98d352b31 100644 --- a/src/modules/module_18000.c +++ b/src/modules/module_18000.c @@ -121,6 +121,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_18100.c b/src/modules/module_18100.c index 37a8ef2e7..46dadfe60 100644 --- a/src/modules/module_18100.c +++ b/src/modules/module_18100.c @@ -135,6 +135,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = module_build_plain_postprocess; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_18200.c b/src/modules/module_18200.c index b99d4978d..4e5023160 100644 --- a/src/modules/module_18200.c +++ b/src/modules/module_18200.c @@ -54,6 +54,23 @@ typedef struct krb5asrep static const char *SIGNATURE_KRB5ASREP = "$krb5asrep$"; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: self-test failed + return true; + } + } + } + + return false; +} + char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) { char *jit_build_options = NULL; @@ -325,6 +342,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -390,6 +409,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = MODULE_DEFAULT; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_18300.c b/src/modules/module_18300.c index adc98432a..5c8926719 100644 --- a/src/modules/module_18300.c +++ b/src/modules/module_18300.c @@ -271,6 +271,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_18400.c b/src/modules/module_18400.c index 549e6ab71..86e43ef45 100644 --- a/src/modules/module_18400.c +++ b/src/modules/module_18400.c @@ -291,6 +291,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_18500.c b/src/modules/module_18500.c index f4e0e3cdc..78834a96f 100644 --- a/src/modules/module_18500.c +++ b/src/modules/module_18500.c @@ -48,20 +48,6 @@ u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig, const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; } const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; } -char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - char *jit_build_options = NULL; - - if (device_param->opencl_device_vendor_id == VENDOR_ID_AMD_USE_HIP) - { - // this is a workaround to avoid a compile time of over an hour (and then to not work) on ROCM in pure kernel mode - - hc_asprintf (&jit_build_options, "-D NO_INLINE"); - } - - return jit_build_options; -} - int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED void *digest_buf, MAYBE_UNUSED salt_t *salt, MAYBE_UNUSED void *esalt_buf, MAYBE_UNUSED void *hook_salt_buf, MAYBE_UNUSED hashinfo_t *hash_info, const char *line_buf, MAYBE_UNUSED const int line_len) { u32 *digest = (u32 *) digest_buf; @@ -160,6 +146,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -198,7 +186,7 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_hook23 = MODULE_DEFAULT; module_ctx->module_hook_salt_size = MODULE_DEFAULT; module_ctx->module_hook_size = MODULE_DEFAULT; - module_ctx->module_jit_build_options = module_jit_build_options; + module_ctx->module_jit_build_options = MODULE_DEFAULT; module_ctx->module_jit_cache_disable = MODULE_DEFAULT; module_ctx->module_kernel_accel_max = MODULE_DEFAULT; module_ctx->module_kernel_accel_min = MODULE_DEFAULT; diff --git a/src/modules/module_18600.c b/src/modules/module_18600.c index ec7e5cbef..e97870d51 100644 --- a/src/modules/module_18600.c +++ b/src/modules/module_18600.c @@ -23,8 +23,7 @@ static const u32 OPTI_TYPE = OPTI_TYPE_ZERO_BYTE | OPTI_TYPE_SLOW_HASH_SIMD_LOOP; static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE | OPTS_TYPE_PT_GENERATE_LE - | OPTS_TYPE_DYNAMIC_SHARED - | OPTS_TYPE_MAXIMUM_THREADS; + | OPTS_TYPE_DYNAMIC_SHARED; static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; static const char *ST_PASS = "hashcat"; static const char *ST_HASH = "$odf$*0*0*1024*16*bff753835f4ea15644b8a2f8e4b5be3d147b9576*8*ee371da34333b69d*16*a902eff54a4d782a26a899a31f97bef4*0*dae7e41fbc3a500d3ce152edd8876c4f38fb17d673ee2ac44ef1e0e283622cd2ae298a82d8d98f2ea737247881fc353e73a2f535c6e13e0cdc60821c1a61c53a4b0c46ff3a3b355d7b793fad50de15999fc7c1194321d1c54316c3806956c4a3ade7daabb912a2a36398eba883af088b3cb69b43365d9ba9fce3fb0c1524f73947a7e9fc1bf3adb5f85a367035feacb5d97c578b037144c2793f34aa09dcd04bdaa455aee0d4c52fe377248611dd56f2bd4eb294673525db905f5d905a28dec0909348e6bf94bcebf03ddd61a48797cd5728ce6dbb71037b268f526e806401abcf495f6edd0b5d87118671ec690d4627f86a43e51c7f6d42a75a56eec51204d47e115e813ed4425c97b16b195e02ce776c185194b9de43ae89f356e29face016cb393d6fb93af8ea305d921d5592dd184051ac790b9b90266f52b8d53ce1cb1d762942d6d5bbd0e3821be21af9fa6874ba0c60e64f41d3e5b6caca1c53b575afdc5d8f6a3edbf874dbe009c6cb296466fe9637aed4aed8a43a95ea7d26b4090ad33d4ee7a83844b0893e8bc0f04944205fb9576cb5720f019028cd75ca9ac47b3e5fa231354d74135564df43b659cfaea7e195c4a896e0e0e0c85dc9ce3a9ce9ba552bc2a6dbac4901c19558818e1957ed72d78662bb5ba53475ca584371f1825ae0c92322a4404e63c2baad92665aac29b5c6f96e1e6338d48fb0aef4d0b686063974f58b839484f8dcf0a02537cba67a7d2c4de13125d74820cb07ec72782035af1ea6c4db61c77016d1c021b63c8b07adb4e8510f5c41bbc501f60f3dd16462399b52eb146787e38e700147c7aa23ac4d5d22d9d1c93e67a01c92a197d4765cbf8d56a862a1205abb450a182913a69b8d5334a59924f86fb3ccd0dcfe7426053e26ba26b57c05f38d85863fff1f81135b0366e8cd8680663ae8aaf7d005317b849d5e08be882708fa0d8d02d47e89150124b507c34845c922b95e62aa0b3fef218773d7aeb572c67b35ad8787f31ecc6e1846b673b8ba6172223176eabf0020b6aa3aa71405b40b2fc2127bf9741a103f1d8eca21bf27328cdf15153f2f223eff7b831a72ed8ecacf4ea8df4ea44f3a3921e5a88fb2cfa355ece0f05cbc88fdd1ecd368d6e3b2dfabd999e5b708f1bccaeebb296c9d7b76659967742fe966aa6871cbbffe710b0cd838c6e02e6eb608cb5c81d066b60b5b3604396331d97d4a2c4c2317406e48c9f5387a2c72511d1e6899bd450e9ca88d535755bcfddb53a6df118cd9cdc7d8b4b814f7bc17684d8e5975defaa25d06f410ed0724c16b8f69ec3869bc1f05c71483666968d1c04509875dadd72c6182733d564eb1a7d555dc34f6b817c5418626214d0b2c3901c5a46f5b20fddfdf9f71a7dfd75b9928778a3f65e1832dff22be973c2b259744d500a3027c2a2e08972eaaad4c5c4ec871"; @@ -382,6 +381,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_18700.c b/src/modules/module_18700.c index 57c7bdc1e..02652acf0 100644 --- a/src/modules/module_18700.c +++ b/src/modules/module_18700.c @@ -95,6 +95,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_18800.c b/src/modules/module_18800.c index 45e30f6b6..5e3550b3b 100644 --- a/src/modules/module_18800.c +++ b/src/modules/module_18800.c @@ -234,6 +234,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_18900.c b/src/modules/module_18900.c index 0d07400f8..66b767ae5 100644 --- a/src/modules/module_18900.c +++ b/src/modules/module_18900.c @@ -302,6 +302,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_19000.c b/src/modules/module_19000.c index 286635726..fcea5d683 100644 --- a/src/modules/module_19000.c +++ b/src/modules/module_19000.c @@ -23,8 +23,7 @@ static const char *HASH_NAME = "QNX /etc/shadow (MD5)"; static const u64 KERN_TYPE = 19000; static const u32 OPTI_TYPE = OPTI_TYPE_ZERO_BYTE; static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE - | OPTS_TYPE_PT_GENERATE_LE - | OPTS_TYPE_MAXIMUM_THREADS; + | OPTS_TYPE_PT_GENERATE_LE; static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; static const char *ST_PASS = "hashcat"; static const char *ST_HASH = "@m@75f6f129f9c9e77b6b1b78f791ed764a@8741857532330050"; @@ -52,13 +51,6 @@ typedef struct qnx_md5_tmp static const int ROUNDS_QNX = 1000; -u32 module_kernel_threads_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) -{ - const u32 kernel_threads_max = 64; - - return kernel_threads_max; -} - u64 module_tmp_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const u64 tmp_size = (const u64) sizeof (qnx_md5_tmp_t); @@ -196,6 +188,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -240,7 +234,7 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_kernel_accel_min = MODULE_DEFAULT; module_ctx->module_kernel_loops_max = MODULE_DEFAULT; module_ctx->module_kernel_loops_min = MODULE_DEFAULT; - module_ctx->module_kernel_threads_max = module_kernel_threads_max; + module_ctx->module_kernel_threads_max = MODULE_DEFAULT; module_ctx->module_kernel_threads_min = MODULE_DEFAULT; module_ctx->module_kern_type = module_kern_type; module_ctx->module_kern_type_dynamic = MODULE_DEFAULT; diff --git a/src/modules/module_19100.c b/src/modules/module_19100.c index 50b89ecec..bef3b9536 100644 --- a/src/modules/module_19100.c +++ b/src/modules/module_19100.c @@ -196,6 +196,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_19200.c b/src/modules/module_19200.c index 9e4467b40..967e47915 100644 --- a/src/modules/module_19200.c +++ b/src/modules/module_19200.c @@ -54,6 +54,22 @@ typedef struct qnx_sha512_tmp static const int ROUNDS_QNX = 1000; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_INTEL_SDK) && (device_param->opencl_device_type & CL_DEVICE_TYPE_CPU)) + { + if (strncmp (device_param->device_name, "AMD EPYC", 8) == 0) + { + // works on Linux: AMD EPYC 7642 48-Core Processor, OpenCL 2.1 (Build 0) + return false; + } + + return true; + } + + return false; +} + u64 module_tmp_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const u64 tmp_size = (const u64) sizeof (qnx_sha512_tmp_t); @@ -199,6 +215,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -264,6 +282,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_19210.c b/src/modules/module_19210.c index b014c60cb..23c9e632c 100644 --- a/src/modules/module_19210.c +++ b/src/modules/module_19210.c @@ -234,6 +234,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_19300.c b/src/modules/module_19300.c index ad1d7cefc..6715e7ae7 100644 --- a/src/modules/module_19300.c +++ b/src/modules/module_19300.c @@ -23,8 +23,7 @@ static const u64 KERN_TYPE = 19300; static const u32 OPTI_TYPE = OPTI_TYPE_ZERO_BYTE | OPTI_TYPE_RAW_HASH; static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE - | OPTS_TYPE_PT_GENERATE_BE - | OPTS_TYPE_MAXIMUM_THREADS; + | OPTS_TYPE_PT_GENERATE_BE; static const u32 SALT_TYPE = SALT_TYPE_GENERIC; static const char *ST_PASS = "hashcat"; static const char *ST_HASH = "630d2e918ab98e5fad9c61c0e4697654c4c16d73:18463812876898603420835420139870031762867:4449516425193605979760642927684590668549584534278112685644182848763890902699756869283142014018311837025441092624864168514500447147373198033271040848851687108629922695275682773136540885737874252666804716579965812709728589952868736177317883550827482248620334"; @@ -54,27 +53,6 @@ typedef struct sha1_double_salt } sha1_double_salt_t; -u32 module_kernel_threads_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) -{ - const u32 kernel_threads_max = 256; - - return kernel_threads_max; -} - -char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - char *jit_build_options = NULL; - - if (device_param->opencl_device_vendor_id == VENDOR_ID_AMD_USE_HIP) - { - // this is a workaround to avoid a compile time of over an hour (and then to not work) on ROCM in pure kernel mode - - hc_asprintf (&jit_build_options, "-D NO_INLINE"); - } - - return jit_build_options; -} - u64 module_esalt_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const u64 esalt_size = (const u64) sizeof (sha1_double_salt_t); @@ -226,6 +204,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -264,13 +244,13 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_hook23 = MODULE_DEFAULT; module_ctx->module_hook_salt_size = MODULE_DEFAULT; module_ctx->module_hook_size = MODULE_DEFAULT; - module_ctx->module_jit_build_options = module_jit_build_options; + module_ctx->module_jit_build_options = MODULE_DEFAULT; module_ctx->module_jit_cache_disable = MODULE_DEFAULT; module_ctx->module_kernel_accel_max = MODULE_DEFAULT; module_ctx->module_kernel_accel_min = MODULE_DEFAULT; module_ctx->module_kernel_loops_max = MODULE_DEFAULT; module_ctx->module_kernel_loops_min = MODULE_DEFAULT; - module_ctx->module_kernel_threads_max = module_kernel_threads_max; + module_ctx->module_kernel_threads_max = MODULE_DEFAULT; module_ctx->module_kernel_threads_min = MODULE_DEFAULT; module_ctx->module_kern_type = module_kern_type; module_ctx->module_kern_type_dynamic = MODULE_DEFAULT; diff --git a/src/modules/module_19500.c b/src/modules/module_19500.c index afaa3c7cd..f7f139bfb 100644 --- a/src/modules/module_19500.c +++ b/src/modules/module_19500.c @@ -53,18 +53,21 @@ typedef struct devise_hash } devise_hash_t; -char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) { - char *jit_build_options = NULL; - - if (device_param->opencl_device_vendor_id == VENDOR_ID_AMD_USE_HIP) + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) { - // this is a workaround to avoid a compile time of over an hour (and then to not work) on ROCM in pure kernel mode - - hc_asprintf (&jit_build_options, "-D NO_INLINE"); + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm19500_sxx' pipeline, timeout reached + return true; + } + } } - return jit_build_options; + return false; } u64 module_esalt_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) @@ -218,6 +221,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -256,7 +261,7 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_hook23 = MODULE_DEFAULT; module_ctx->module_hook_salt_size = MODULE_DEFAULT; module_ctx->module_hook_size = MODULE_DEFAULT; - module_ctx->module_jit_build_options = module_jit_build_options; + module_ctx->module_jit_build_options = MODULE_DEFAULT; module_ctx->module_jit_cache_disable = MODULE_DEFAULT; module_ctx->module_kernel_accel_max = MODULE_DEFAULT; module_ctx->module_kernel_accel_min = MODULE_DEFAULT; @@ -283,6 +288,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = MODULE_DEFAULT; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_19600.c b/src/modules/module_19600.c index 296a1dca1..9b9a9f258 100644 --- a/src/modules/module_19600.c +++ b/src/modules/module_19600.c @@ -293,6 +293,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_19700.c b/src/modules/module_19700.c index 8a09915b0..8f6459225 100644 --- a/src/modules/module_19700.c +++ b/src/modules/module_19700.c @@ -67,6 +67,23 @@ typedef struct krb5tgs_18_tmp static const char *SIGNATURE_KRB5TGS = "$krb5tgs$18$"; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm19700_comp' pipeline, timeout reached + return true; + } + } + } + + return false; +} + u64 module_tmp_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const u64 tmp_size = (const u64) sizeof (krb5tgs_18_tmp_t); @@ -293,6 +310,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -358,6 +377,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_19800.c b/src/modules/module_19800.c index 93d746dd2..44146c46c 100644 --- a/src/modules/module_19800.c +++ b/src/modules/module_19800.c @@ -241,6 +241,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_19900.c b/src/modules/module_19900.c index facce5cca..c8ecebecc 100644 --- a/src/modules/module_19900.c +++ b/src/modules/module_19900.c @@ -241,6 +241,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_20011.c b/src/modules/module_20011.c index c01b548bb..bd9eb7976 100644 --- a/src/modules/module_20011.c +++ b/src/modules/module_20011.c @@ -64,17 +64,6 @@ static const int DISKCRYPTOR_VERSION = 0; static const int ROUNDS_DISKCRYPTOR = 1000; static const char *SIGNATURE_DISKCRYPTOR = "$diskcryptor$"; -bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - // AMD Radeon Pro W5700X, Metal.Version.: 261.13, compiler hangs - if (device_param->is_metal == true) - { - return true; - } - - return false; -} - u64 module_tmp_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const u64 tmp_size = (const u64) sizeof (pbkdf2_sha512_tmp_t); @@ -206,6 +195,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -271,6 +262,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = module_unstable_warning; + module_ctx->module_unstable_warning = MODULE_DEFAULT; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_20012.c b/src/modules/module_20012.c index 627765d09..4eb42a35f 100644 --- a/src/modules/module_20012.c +++ b/src/modules/module_20012.c @@ -64,17 +64,6 @@ static const int DISKCRYPTOR_VERSION = 0; static const int ROUNDS_DISKCRYPTOR = 1000; static const char *SIGNATURE_DISKCRYPTOR = "$diskcryptor$"; -bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - // AMD Radeon Pro W5700X, Metal.Version.: 261.13, compiler hangs - if (device_param->is_metal == true) - { - return true; - } - - return false; -} - u64 module_tmp_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const u64 tmp_size = (const u64) sizeof (pbkdf2_sha512_tmp_t); @@ -206,6 +195,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -271,6 +262,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = module_unstable_warning; + module_ctx->module_unstable_warning = MODULE_DEFAULT; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_20013.c b/src/modules/module_20013.c index b8cfbf9b7..b2ed70b35 100644 --- a/src/modules/module_20013.c +++ b/src/modules/module_20013.c @@ -64,17 +64,6 @@ static const int DISKCRYPTOR_VERSION = 0; static const int ROUNDS_DISKCRYPTOR = 1000; static const char *SIGNATURE_DISKCRYPTOR = "$diskcryptor$"; -bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - // AMD Radeon Pro W5700X, Metal.Version.: 261.13, compiler hangs - if (device_param->is_metal == true) - { - return true; - } - - return false; -} - u64 module_tmp_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const u64 tmp_size = (const u64) sizeof (pbkdf2_sha512_tmp_t); @@ -206,6 +195,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -271,6 +262,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = module_unstable_warning; + module_ctx->module_unstable_warning = MODULE_DEFAULT; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_20200.c b/src/modules/module_20200.c index ff63ea7c6..af964cf80 100644 --- a/src/modules/module_20200.c +++ b/src/modules/module_20200.c @@ -231,6 +231,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_20300.c b/src/modules/module_20300.c index 2d6ac1fd6..ded45c48e 100644 --- a/src/modules/module_20300.c +++ b/src/modules/module_20300.c @@ -230,6 +230,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_20400.c b/src/modules/module_20400.c index 2fd8a7dcd..66a18a0c7 100644 --- a/src/modules/module_20400.c +++ b/src/modules/module_20400.c @@ -223,6 +223,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_20500.c b/src/modules/module_20500.c index 3a001c93e..37ce6a085 100644 --- a/src/modules/module_20500.c +++ b/src/modules/module_20500.c @@ -162,6 +162,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_20510.c b/src/modules/module_20510.c index d96f57b6e..394a69a3b 100644 --- a/src/modules/module_20510.c +++ b/src/modules/module_20510.c @@ -80,8 +80,8 @@ static const u64 KERN_TYPE = 20510; static const u32 OPTI_TYPE = 0; static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE | OPTS_TYPE_COPY_TMPS - | OPTS_TYPE_MAXIMUM_THREADS - | OPTS_TYPE_AUTODETECT_DISABLE; + | OPTS_TYPE_AUTODETECT_DISABLE + | OPTS_TYPE_SUGGEST_KG; static const u32 SALT_TYPE = SALT_TYPE_NONE; static const char *ST_PASS = "t"; // actually "hashcat" static const char *ST_HASH = "f1eff5c0368d10311dcfc419"; @@ -203,6 +203,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = module_build_plain_postprocess; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_20600.c b/src/modules/module_20600.c index e6a17c5af..a8d23bdc9 100644 --- a/src/modules/module_20600.c +++ b/src/modules/module_20600.c @@ -193,6 +193,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_20710.c b/src/modules/module_20710.c index 49705221e..4fe2ba5f1 100644 --- a/src/modules/module_20710.c +++ b/src/modules/module_20710.c @@ -190,6 +190,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_20711.c b/src/modules/module_20711.c index 1103ddf7b..a72570d04 100644 --- a/src/modules/module_20711.c +++ b/src/modules/module_20711.c @@ -223,6 +223,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_20712.c b/src/modules/module_20712.c index e2b5a492d..987d688c4 100644 --- a/src/modules/module_20712.c +++ b/src/modules/module_20712.c @@ -196,6 +196,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_20720.c b/src/modules/module_20720.c index 3dc89ef5e..f65724855 100644 --- a/src/modules/module_20720.c +++ b/src/modules/module_20720.c @@ -190,6 +190,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_20730.c b/src/modules/module_20730.c new file mode 100644 index 000000000..ccd1db2a7 --- /dev/null +++ b/src/modules/module_20730.c @@ -0,0 +1,262 @@ +/** + * Author......: Andreas Vikerup @ Shelltrail + * License.....: MIT + */ + +#include "common.h" +#include "types.h" +#include "modules.h" +#include "bitops.h" +#include "convert.h" +#include "shared.h" +#include "memory.h" + +static const u32 ATTACK_EXEC = ATTACK_EXEC_INSIDE_KERNEL; +static const u32 DGST_POS0 = 3; +static const u32 DGST_POS1 = 7; +static const u32 DGST_POS2 = 2; +static const u32 DGST_POS3 = 6; +static const u32 DGST_SIZE = DGST_SIZE_4_8; +static const u32 HASH_CATEGORY = HASH_CATEGORY_RAW_HASH_SALTED; +static const char *HASH_NAME = "sha256(sha256($pass.$salt))"; +static const u64 KERN_TYPE = 20730; +static const u32 OPTI_TYPE = OPTI_TYPE_ZERO_BYTE + | OPTI_TYPE_PRECOMPUTE_INIT + | OPTI_TYPE_EARLY_SKIP + | OPTI_TYPE_NOT_ITERATED + | OPTI_TYPE_RAW_HASH; +static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE + | OPTS_TYPE_PT_GENERATE_BE + | OPTS_TYPE_PT_ADD80 + | OPTS_TYPE_PT_ADDBITS15; +static const u32 SALT_TYPE = SALT_TYPE_GENERIC; +static const char *ST_PASS = "hashcat"; +static const char *ST_HASH = "ad66bdc0841d7e08d96c03de271ce14e77de078746b535adbf9d4b6ccbf2a517:7218532375810603"; + +u32 module_attack_exec (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ATTACK_EXEC; } +u32 module_dgst_pos0 (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_POS0; } +u32 module_dgst_pos1 (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_POS1; } +u32 module_dgst_pos2 (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_POS2; } +u32 module_dgst_pos3 (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_POS3; } +u32 module_dgst_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_SIZE; } +u32 module_hash_category (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return HASH_CATEGORY; } +const char *module_hash_name (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return HASH_NAME; } +u64 module_kern_type (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return KERN_TYPE; } +u32 module_opti_type (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return OPTI_TYPE; } +u64 module_opts_type (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return OPTS_TYPE; } +u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return SALT_TYPE; } +const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; } +const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; } + +int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED void *digest_buf, MAYBE_UNUSED salt_t *salt, MAYBE_UNUSED void *esalt_buf, MAYBE_UNUSED void *hook_salt_buf, MAYBE_UNUSED hashinfo_t *hash_info, const char *line_buf, MAYBE_UNUSED const int line_len) +{ + u32 *digest = (u32 *) digest_buf; + + hc_token_t token; + + memset (&token, 0, sizeof (hc_token_t)); + + token.token_cnt = 2; + + token.sep[0] = hashconfig->separator; + token.len[0] = 64; + token.attr[0] = TOKEN_ATTR_FIXED_LENGTH + | TOKEN_ATTR_VERIFY_HEX; + + token.len_min[1] = SALT_MIN; + token.len_max[1] = SALT_MAX; + token.attr[1] = TOKEN_ATTR_VERIFY_LENGTH; + + if (hashconfig->opts_type & OPTS_TYPE_ST_HEX) + { + token.len_min[1] *= 2; + token.len_max[1] *= 2; + + token.attr[1] |= TOKEN_ATTR_VERIFY_HEX; + } + + const int rc_tokenizer = input_tokenizer ((const u8 *) line_buf, line_len, &token); + + if (rc_tokenizer != PARSER_OK) return (rc_tokenizer); + + const u8 *hash_pos = token.buf[0]; + + digest[0] = hex_to_u32 (hash_pos + 0); + digest[1] = hex_to_u32 (hash_pos + 8); + digest[2] = hex_to_u32 (hash_pos + 16); + digest[3] = hex_to_u32 (hash_pos + 24); + digest[4] = hex_to_u32 (hash_pos + 32); + digest[5] = hex_to_u32 (hash_pos + 40); + digest[6] = hex_to_u32 (hash_pos + 48); + digest[7] = hex_to_u32 (hash_pos + 56); + + digest[0] = byte_swap_32 (digest[0]); + digest[1] = byte_swap_32 (digest[1]); + digest[2] = byte_swap_32 (digest[2]); + digest[3] = byte_swap_32 (digest[3]); + digest[4] = byte_swap_32 (digest[4]); + digest[5] = byte_swap_32 (digest[5]); + digest[6] = byte_swap_32 (digest[6]); + digest[7] = byte_swap_32 (digest[7]); + + if (hashconfig->opti_type & OPTI_TYPE_OPTIMIZED_KERNEL) + { + digest[0] -= SHA256M_A; + digest[1] -= SHA256M_B; + digest[2] -= SHA256M_C; + digest[3] -= SHA256M_D; + digest[4] -= SHA256M_E; + digest[5] -= SHA256M_F; + digest[6] -= SHA256M_G; + digest[7] -= SHA256M_H; + } + + const u8 *salt_pos = token.buf[1]; + const int salt_len = token.len[1]; + + const bool parse_rc = generic_salt_decode (hashconfig, salt_pos, salt_len, (u8 *) salt->salt_buf, (int *) &salt->salt_len); + + if (parse_rc == false) return (PARSER_SALT_LENGTH); + + return (PARSER_OK); +} + +int module_hash_encode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const void *digest_buf, MAYBE_UNUSED const salt_t *salt, MAYBE_UNUSED const void *esalt_buf, MAYBE_UNUSED const void *hook_salt_buf, MAYBE_UNUSED const hashinfo_t *hash_info, char *line_buf, MAYBE_UNUSED const int line_size) +{ + const u32 *digest = (const u32 *) digest_buf; + + u32 tmp[8]; + + tmp[0] = digest[0]; + tmp[1] = digest[1]; + tmp[2] = digest[2]; + tmp[3] = digest[3]; + tmp[4] = digest[4]; + tmp[5] = digest[5]; + tmp[6] = digest[6]; + tmp[7] = digest[7]; + + if (hashconfig->opti_type & OPTI_TYPE_OPTIMIZED_KERNEL) + { + tmp[0] += SHA256M_A; + tmp[1] += SHA256M_B; + tmp[2] += SHA256M_C; + tmp[3] += SHA256M_D; + tmp[4] += SHA256M_E; + tmp[5] += SHA256M_F; + tmp[6] += SHA256M_G; + tmp[7] += SHA256M_H; + } + + tmp[0] = byte_swap_32 (tmp[0]); + tmp[1] = byte_swap_32 (tmp[1]); + tmp[2] = byte_swap_32 (tmp[2]); + tmp[3] = byte_swap_32 (tmp[3]); + tmp[4] = byte_swap_32 (tmp[4]); + tmp[5] = byte_swap_32 (tmp[5]); + tmp[6] = byte_swap_32 (tmp[6]); + tmp[7] = byte_swap_32 (tmp[7]); + + u8 *out_buf = (u8 *) line_buf; + + int out_len = 0; + + u32_to_hex (tmp[0], out_buf + out_len); out_len += 8; + u32_to_hex (tmp[1], out_buf + out_len); out_len += 8; + u32_to_hex (tmp[2], out_buf + out_len); out_len += 8; + u32_to_hex (tmp[3], out_buf + out_len); out_len += 8; + u32_to_hex (tmp[4], out_buf + out_len); out_len += 8; + u32_to_hex (tmp[5], out_buf + out_len); out_len += 8; + u32_to_hex (tmp[6], out_buf + out_len); out_len += 8; + u32_to_hex (tmp[7], out_buf + out_len); out_len += 8; + + out_buf[out_len] = hashconfig->separator; + + out_len += 1; + + out_len += generic_salt_encode (hashconfig, (const u8 *) salt->salt_buf, (const int) salt->salt_len, out_buf + out_len); + + return out_len; +} + +void module_init (module_ctx_t *module_ctx) +{ + module_ctx->module_context_size = MODULE_CONTEXT_SIZE_CURRENT; + module_ctx->module_interface_version = MODULE_INTERFACE_VERSION_CURRENT; + + module_ctx->module_attack_exec = module_attack_exec; + module_ctx->module_benchmark_esalt = MODULE_DEFAULT; + module_ctx->module_benchmark_hook_salt = MODULE_DEFAULT; + module_ctx->module_benchmark_mask = MODULE_DEFAULT; + module_ctx->module_benchmark_charset = MODULE_DEFAULT; + module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; + module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; + module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; + module_ctx->module_deprecated_notice = MODULE_DEFAULT; + module_ctx->module_dgst_pos0 = module_dgst_pos0; + module_ctx->module_dgst_pos1 = module_dgst_pos1; + module_ctx->module_dgst_pos2 = module_dgst_pos2; + module_ctx->module_dgst_pos3 = module_dgst_pos3; + module_ctx->module_dgst_size = module_dgst_size; + module_ctx->module_dictstat_disable = MODULE_DEFAULT; + module_ctx->module_esalt_size = MODULE_DEFAULT; + module_ctx->module_extra_buffer_size = MODULE_DEFAULT; + module_ctx->module_extra_tmp_size = MODULE_DEFAULT; + module_ctx->module_extra_tuningdb_block = MODULE_DEFAULT; + module_ctx->module_forced_outfile_format = MODULE_DEFAULT; + module_ctx->module_hash_binary_count = MODULE_DEFAULT; + module_ctx->module_hash_binary_parse = MODULE_DEFAULT; + module_ctx->module_hash_binary_save = MODULE_DEFAULT; + module_ctx->module_hash_decode_postprocess = MODULE_DEFAULT; + module_ctx->module_hash_decode_potfile = MODULE_DEFAULT; + module_ctx->module_hash_decode_zero_hash = MODULE_DEFAULT; + module_ctx->module_hash_decode = module_hash_decode; + module_ctx->module_hash_encode_status = MODULE_DEFAULT; + module_ctx->module_hash_encode_potfile = MODULE_DEFAULT; + module_ctx->module_hash_encode = module_hash_encode; + module_ctx->module_hash_init_selftest = MODULE_DEFAULT; + module_ctx->module_hash_mode = MODULE_DEFAULT; + module_ctx->module_hash_category = module_hash_category; + module_ctx->module_hash_name = module_hash_name; + module_ctx->module_hashes_count_min = MODULE_DEFAULT; + module_ctx->module_hashes_count_max = MODULE_DEFAULT; + module_ctx->module_hlfmt_disable = MODULE_DEFAULT; + module_ctx->module_hook_extra_param_size = MODULE_DEFAULT; + module_ctx->module_hook_extra_param_init = MODULE_DEFAULT; + module_ctx->module_hook_extra_param_term = MODULE_DEFAULT; + module_ctx->module_hook12 = MODULE_DEFAULT; + module_ctx->module_hook23 = MODULE_DEFAULT; + module_ctx->module_hook_salt_size = MODULE_DEFAULT; + module_ctx->module_hook_size = MODULE_DEFAULT; + module_ctx->module_jit_build_options = MODULE_DEFAULT; + module_ctx->module_jit_cache_disable = MODULE_DEFAULT; + module_ctx->module_kernel_accel_max = MODULE_DEFAULT; + module_ctx->module_kernel_accel_min = MODULE_DEFAULT; + module_ctx->module_kernel_loops_max = MODULE_DEFAULT; + module_ctx->module_kernel_loops_min = MODULE_DEFAULT; + module_ctx->module_kernel_threads_max = MODULE_DEFAULT; + module_ctx->module_kernel_threads_min = MODULE_DEFAULT; + module_ctx->module_kern_type = module_kern_type; + module_ctx->module_kern_type_dynamic = MODULE_DEFAULT; + module_ctx->module_opti_type = module_opti_type; + module_ctx->module_opts_type = module_opts_type; + module_ctx->module_outfile_check_disable = MODULE_DEFAULT; + module_ctx->module_outfile_check_nocomp = MODULE_DEFAULT; + module_ctx->module_potfile_custom_check = MODULE_DEFAULT; + module_ctx->module_potfile_disable = MODULE_DEFAULT; + module_ctx->module_potfile_keep_all_hashes = MODULE_DEFAULT; + module_ctx->module_pwdump_column = MODULE_DEFAULT; + module_ctx->module_pw_max = MODULE_DEFAULT; + module_ctx->module_pw_min = MODULE_DEFAULT; + module_ctx->module_salt_max = MODULE_DEFAULT; + module_ctx->module_salt_min = MODULE_DEFAULT; + module_ctx->module_salt_type = module_salt_type; + module_ctx->module_separator = MODULE_DEFAULT; + module_ctx->module_st_hash = module_st_hash; + module_ctx->module_st_pass = module_st_pass; + module_ctx->module_tmp_size = MODULE_DEFAULT; + module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_warmup_disable = MODULE_DEFAULT; +} diff --git a/src/modules/module_20800.c b/src/modules/module_20800.c index 54a1b02d5..6cece615d 100644 --- a/src/modules/module_20800.c +++ b/src/modules/module_20800.c @@ -167,6 +167,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_20900.c b/src/modules/module_20900.c index 8a0dd5c60..7b1321ea6 100644 --- a/src/modules/module_20900.c +++ b/src/modules/module_20900.c @@ -129,6 +129,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_21000.c b/src/modules/module_21000.c index f8fadf552..1cb700b21 100644 --- a/src/modules/module_21000.c +++ b/src/modules/module_21000.c @@ -29,8 +29,7 @@ static const u32 OPTI_TYPE = OPTI_TYPE_ZERO_BYTE static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE | OPTS_TYPE_PT_GENERATE_BE | OPTS_TYPE_PT_ADD80 - | OPTS_TYPE_PT_ADDBITS15 - | OPTS_TYPE_MAXIMUM_THREADS; + | OPTS_TYPE_PT_ADDBITS15; static const u32 SALT_TYPE = SALT_TYPE_NONE; static const char *ST_PASS = "hashcat"; static const char *ST_HASH = "caec04bdf7c17f763a9ec7439f7c9abda112f1bfc9b1bb684fef9b6142636979b9896cfc236896d821a69a961a143dd19c96d59777258201f1bbe5ecc2a2ecf5"; @@ -50,17 +49,6 @@ u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig, const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; } const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; } -bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - // AMD Radeon Pro W5700X, Metal.Version.: 261.13, compiler hangs - if (device_param->is_metal == true) - { - return true; - } - - return false; -} - int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED void *digest_buf, MAYBE_UNUSED salt_t *salt, MAYBE_UNUSED void *esalt_buf, MAYBE_UNUSED void *hook_salt_buf, MAYBE_UNUSED hashinfo_t *hash_info, const char *line_buf, MAYBE_UNUSED const int line_len) { u64 *digest = (u64 *) digest_buf; @@ -181,6 +169,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -246,6 +236,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = MODULE_DEFAULT; - module_ctx->module_unstable_warning = module_unstable_warning; + module_ctx->module_unstable_warning = MODULE_DEFAULT; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_21100.c b/src/modules/module_21100.c index b722be594..9e2f9392e 100644 --- a/src/modules/module_21100.c +++ b/src/modules/module_21100.c @@ -172,6 +172,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_21200.c b/src/modules/module_21200.c index f51d214a6..f8cfd2881 100644 --- a/src/modules/module_21200.c +++ b/src/modules/module_21200.c @@ -186,6 +186,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_21300.c b/src/modules/module_21300.c index 1825bef35..75e57c1f4 100644 --- a/src/modules/module_21300.c +++ b/src/modules/module_21300.c @@ -163,6 +163,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_21310.c b/src/modules/module_21310.c index 9bd5e991c..f631771c8 100644 --- a/src/modules/module_21310.c +++ b/src/modules/module_21310.c @@ -226,6 +226,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_21400.c b/src/modules/module_21400.c index 2959a503f..7e2ea0cad 100644 --- a/src/modules/module_21400.c +++ b/src/modules/module_21400.c @@ -167,6 +167,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_21420.c b/src/modules/module_21420.c index e55c031ab..f31dda02b 100644 --- a/src/modules/module_21420.c +++ b/src/modules/module_21420.c @@ -190,6 +190,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_21500.c b/src/modules/module_21500.c index ba52c09f0..dba580a7c 100644 --- a/src/modules/module_21500.c +++ b/src/modules/module_21500.c @@ -221,6 +221,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_21501.c b/src/modules/module_21501.c index 0c7d25abf..f548bebd5 100644 --- a/src/modules/module_21501.c +++ b/src/modules/module_21501.c @@ -228,6 +228,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_21600.c b/src/modules/module_21600.c index 47cf4ce40..dd35f47de 100644 --- a/src/modules/module_21600.c +++ b/src/modules/module_21600.c @@ -58,10 +58,16 @@ typedef struct web2py_sha512_tmp bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) { - // AMD Radeon Pro W5700X, Metal.Version.: 261.13, compiler hangs - if (device_param->is_metal == true) + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) { - return true; + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "AMD Radeon", 10) == 0) + { + // AMD Radeon Pro W5700X, Metal.Version.: 261.13, compiler hangs + return true; + } + } } return false; @@ -175,6 +181,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_21700.c b/src/modules/module_21700.c index ffd6178d9..3daa3a11f 100644 --- a/src/modules/module_21700.c +++ b/src/modules/module_21700.c @@ -72,22 +72,6 @@ u32 module_deep_comp_kernel (MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED c return KERN_RUN_3; } -bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - if (device_param->opencl_device_vendor_id == VENDOR_ID_INTEL_SDK) - { - return true; - } - - // AMD Radeon Pro W5700X, Metal.Version.: 261.13, compiler hangs - if (device_param->is_metal == true) - { - return true; - } - - return false; -} - char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) { char *jit_build_options = NULL; @@ -294,6 +278,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = module_deep_comp_kernel; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -359,6 +345,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = module_unstable_warning; + module_ctx->module_unstable_warning = MODULE_DEFAULT; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_21800.c b/src/modules/module_21800.c index 486eba089..a64448e7b 100644 --- a/src/modules/module_21800.c +++ b/src/modules/module_21800.c @@ -26,8 +26,7 @@ static const u32 OPTI_TYPE = OPTI_TYPE_ZERO_BYTE | OPTI_TYPE_SLOW_HASH_SIMD_LOOP; static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE | OPTS_TYPE_PT_GENERATE_LE - | OPTS_TYPE_DEEP_COMP_KERNEL - | OPTS_TYPE_NATIVE_THREADS; + | OPTS_TYPE_DEEP_COMP_KERNEL; static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; static const char *ST_PASS = "hashcat"; static const char *ST_HASH = "$electrum$5*02170fee7c35f1ef3b229edc90fbd0793b688a0d6f41137a97aab2343d315cce16*94cf72d8f5d774932b414a3344984859e43721268d2eb35fa531de5a2fc7024b463c730a54f4f46229dd9fede5034b19ac415c2916e9c16b02094f845795df0c397ff76d597886b1f9e014ad1a8f64a3f617d9900aa645b3ba86f16ce542251fc22c41d93fa6bc118be96d9582917e19d2a299743331804cfc7ce2c035367b4cbcfb70adfb1e10a0f2795769f2165d8fd13daa8b45eeac495b5b63e91a87f63b42e483f84a881e49adecacf6519cb564694b42dd9fe80fcbc6cdb63cf5ae33f35255266f5c2524dd93d3cc15eba0f2ccdc3c109cc2d7e8f711b8b440f168caf8b005e8bcdfe694148e94a04d2a738f09349a96600bd8e8edae793b26ebae231022f24e96cb158db141ac40400a9e9ef099e673cfe017281537c57f82fb45c62bdb64462235a6eefb594961d5eb2c46537958e4d04250804c6e9f343ab7a0db07af6b8a9d1a6c5cfcd311b8fb8383ac9ed9d98d427d526c2f517fc97473bd87cb59899bd0e8fb8c57fa0f7e0d53daa57c972cf92764af4b1725a5fb8f504b663ec519731929b3caaa793d8ee74293eee27d0e208a60e26290bc546e6fa9ed865076e13febfea249729218c1b5752e912055fbf993fbac5df2cca2b37c5e0f9c30789858ceeb3c482a8db123966775aeed2eee2fc34efb160d164929f51589bff748ca773f38978bff3508d5a7591fb2d2795df983504a788071f469d78c88fd7899cabbc5804f458653d0206b82771a59522e1fa794d7de1536c51a437f5d6df5efd6654678e5794ca429b5752e1103340ed80786f1e9da7f5b39af628b2212e4d88cd36b8a7136d50a6b6e275ab406ba7c57cc70d77d01c4c16e9363901164fa92dc9e9b99219d5376f24862e775968605001e71b000e2c7123b4b43f3ca40db17efd729388782e46e64d43ccb947db4eb1473ff1a3836b74fe312cd1a33b73b8b8d80c087088932277773c329f2f66a01d6b3fc1e651c56959ebbed7b14a21b977f3acdedf1a0d98d519a74b50c39b3052d840106da4145345d86ec0461cddafacc2a4f0dd646457ad05bf04dcbcc80516a5c5ed14d2d639a70e77b686f19cbfb63f546d81ae19cc8ba35cce3f3b5b9602df25b678e14411fecec87b8347f5047513df415c6b1a3d39871a6bcb0f67d9cf8311596deae45fd1d84a04fd58f1fd55c5156b7309af09094c99a53674809cb87a45f95a2d69f9997a38085519cb4e056f9efd56672a2c1fe927d5ea8eec25b8aff6e56f9a2310f1a481daf407b8adf16201da267c59973920fd21bb087b88123ef98709839d6a3ee34efb8ccd5c15ed0e46cff3172682769531164b66c8689c35a26299dd26d09233d1f64f9667474141cf9c6a6de7f2bc52c3bb44cfe679ff4b912c06df406283836b3581773cb76d375304f46239da5996594a8d03b14c02f1b35a432dc44a96331242ae31174*33a7ee59d6d17ed1ee99dc0a71771227e6f3734b17ba36eb589bdced56244135"; @@ -79,15 +78,27 @@ bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE // it leads to CL_KERNEL_WORK_GROUP_SIZE to return 0 and later we will divide with 0 // workaround would be to rewrite kernel to use global memory - if (device_param->opencl_device_vendor_id == VENDOR_ID_INTEL_SDK) + if (device_param->is_metal == true) + { + // error: 'goto' is not supported in Metal + return true; + } + + if ((device_param->opencl_device_vendor_id == VENDOR_ID_INTEL_SDK) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) { return true; } - // AppleM1, OpenCL, MTLCompilerService never-end if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) { - return true; + if (device_param->is_metal == false) + { + if (strncmp (device_param->device_name, "Apple M", 7) == 0) + { + // AppleM1, OpenCL, MTLCompilerService never-end + return true; + } + } } return false; @@ -271,6 +282,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = module_deep_comp_kernel; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_22000.c b/src/modules/module_22000.c index ebacaab95..24f2c9ad9 100644 --- a/src/modules/module_22000.c +++ b/src/modules/module_22000.c @@ -1340,6 +1340,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = module_benchmark_mask; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = module_deep_comp_kernel; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_22001.c b/src/modules/module_22001.c index b0fb51dd9..541835ee5 100644 --- a/src/modules/module_22001.c +++ b/src/modules/module_22001.c @@ -1341,6 +1341,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = module_benchmark_mask; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = module_deep_comp_kernel; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_22100.c b/src/modules/module_22100.c index f5b21082a..344218243 100644 --- a/src/modules/module_22100.c +++ b/src/modules/module_22100.c @@ -429,6 +429,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_22200.c b/src/modules/module_22200.c index 6e9141ba8..229939159 100644 --- a/src/modules/module_22200.c +++ b/src/modules/module_22200.c @@ -49,17 +49,6 @@ const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, static const char *SIGNATURE_NETSCALER = "2"; -bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - // AMD Radeon Pro W5700X, Metal.Version.: 261.13, compiler hangs - if (device_param->is_metal == true) - { - return true; - } - - return false; -} - char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) { char *jit_build_options = NULL; @@ -237,6 +226,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -302,6 +293,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = MODULE_DEFAULT; - module_ctx->module_unstable_warning = module_unstable_warning; + module_ctx->module_unstable_warning = MODULE_DEFAULT; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_22300.c b/src/modules/module_22300.c index 64f33ad4f..a85d1d753 100644 --- a/src/modules/module_22300.c +++ b/src/modules/module_22300.c @@ -190,6 +190,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_22301.c b/src/modules/module_22301.c index f75c196dc..fb675732a 100644 --- a/src/modules/module_22301.c +++ b/src/modules/module_22301.c @@ -190,6 +190,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_22400.c b/src/modules/module_22400.c index 476911d5d..0aed7670f 100644 --- a/src/modules/module_22400.c +++ b/src/modules/module_22400.c @@ -78,6 +78,18 @@ bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE return true; } + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: self-test failed + return true; + } + } + } + return false; } @@ -309,6 +321,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_22500.c b/src/modules/module_22500.c index 534539b4e..c130400a0 100644 --- a/src/modules/module_22500.c +++ b/src/modules/module_22500.c @@ -163,6 +163,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_22600.c b/src/modules/module_22600.c index 236ba6453..cd618d638 100644 --- a/src/modules/module_22600.c +++ b/src/modules/module_22600.c @@ -236,6 +236,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_22700.c b/src/modules/module_22700.c index 009b4a280..b5f3bafb8 100644 --- a/src/modules/module_22700.c +++ b/src/modules/module_22700.c @@ -10,6 +10,7 @@ #include "bitops.h" #include "convert.h" #include "shared.h" +#include "memory.h" static const u32 ATTACK_EXEC = ATTACK_EXEC_OUTSIDE_KERNEL; static const u32 DGST_POS0 = 0; @@ -25,8 +26,7 @@ static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE | OPTS_TYPE_PT_GENERATE_LE | OPTS_TYPE_MP_MULTI_DISABLE | OPTS_TYPE_NATIVE_THREADS - | OPTS_TYPE_LOOP_PREPARE - | OPTS_TYPE_SELF_TEST_DISABLE; + | OPTS_TYPE_LOOP_PREPARE; static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; static const char *ST_PASS = "hashcat"; static const char *ST_HASH = "$multibit$2*2e311aa2cc5ec99f7073cacc8a2d1938*e3ad782e7f92d66a3cdfaec43a46be29*5d1cabd4f4a50ba125f88c47027fff9b"; @@ -48,222 +48,9 @@ const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, static const char *SIGNATURE_MULTIBIT = "$multibit$"; -static const u64 SCRYPT_N = 16384; -static const u64 SCRYPT_R = 8; -static const u64 SCRYPT_P = 1; +static const u32 SCRYPT_THREADS = 32; -u32 module_kernel_loops_min (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) -{ - const u32 kernel_loops_min = 1024; - - return kernel_loops_min; -} - -u32 module_kernel_loops_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) -{ - const u32 kernel_loops_max = 1024; - - return kernel_loops_max; -} - -u32 module_kernel_threads_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) -{ - const u32 kernel_threads_max = 32; - - return kernel_threads_max; -} - -u32 module_pw_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) -{ - // this overrides the reductions of PW_MAX in case optimized kernel is selected - // IOW, even in optimized kernel mode it support length 256 - - const u32 pw_max = PW_MAX; - - return pw_max; -} - -u64 module_extra_buffer_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - // we need to set the self-test hash settings to pass the self-test - // the decoder for the self-test is called after this function - - const u64 scrypt_N = (hashes->salts_buf[0].scrypt_N) ? hashes->salts_buf[0].scrypt_N : SCRYPT_N; - const u64 scrypt_r = (hashes->salts_buf[0].scrypt_r) ? hashes->salts_buf[0].scrypt_r : SCRYPT_R; - - const u64 kernel_power_max = ((OPTS_TYPE & OPTS_TYPE_MP_MULTI_DISABLE) ? 1 : device_param->device_processors) * device_param->kernel_threads_max * device_param->kernel_accel_max; - - u64 tmto_start = 0; - u64 tmto_stop = 4; - - if (user_options->scrypt_tmto_chgd == true) - { - tmto_start = user_options->scrypt_tmto; - tmto_stop = user_options->scrypt_tmto; - } - - // size_pws - - const u64 size_pws = kernel_power_max * sizeof (pw_t); - - const u64 size_pws_amp = size_pws; - - // size_pws_comp - - const u64 size_pws_comp = kernel_power_max * (sizeof (u32) * 64); - - // size_pws_idx - - const u64 size_pws_idx = (kernel_power_max + 1) * sizeof (pw_idx_t); - - // size_tmps - - const u64 size_tmps = kernel_power_max * hashconfig->tmp_size; - - // size_hooks - - const u64 size_hooks = kernel_power_max * hashconfig->hook_size; - - u64 size_pws_pre = 4; - u64 size_pws_base = 4; - - if (user_options->slow_candidates == true) - { - // size_pws_pre - - size_pws_pre = kernel_power_max * sizeof (pw_pre_t); - - // size_pws_base - - size_pws_base = kernel_power_max * sizeof (pw_pre_t); - } - - // sometimes device_available_mem and device_maxmem_alloc reported back from the opencl runtime are a bit inaccurate. - // let's add some extra space just to be sure. - // now depends on the kernel-accel value (where scrypt and similar benefits), but also hard minimum 64mb and maximum 1024mb limit - - u64 EXTRA_SPACE = (1024ULL * 1024ULL) * device_param->kernel_accel_max; - - EXTRA_SPACE = MAX (EXTRA_SPACE, ( 64ULL * 1024ULL * 1024ULL)); - EXTRA_SPACE = MIN (EXTRA_SPACE, (1024ULL * 1024ULL * 1024ULL)); - - const u64 scrypt_extra_space - = device_param->size_bfs - + device_param->size_combs - + device_param->size_digests - + device_param->size_esalts - + device_param->size_markov_css - + device_param->size_plains - + device_param->size_results - + device_param->size_root_css - + device_param->size_rules - + device_param->size_rules_c - + device_param->size_salts - + device_param->size_shown - + device_param->size_tm - + device_param->size_st_digests - + device_param->size_st_salts - + device_param->size_st_esalts - + size_pws - + size_pws_amp - + size_pws_comp - + size_pws_idx - + size_tmps - + size_hooks - + size_pws_pre - + size_pws_base - + EXTRA_SPACE; - - bool not_enough_memory = true; - - u64 size_scrypt = 0; - - u64 tmto; - - for (tmto = tmto_start; tmto <= tmto_stop; tmto++) - { - size_scrypt = (128ULL * scrypt_r) * scrypt_N; - - size_scrypt /= 1ull << tmto; - - size_scrypt *= kernel_power_max; - - if ((size_scrypt / 4) > device_param->device_maxmem_alloc) continue; - - if ((size_scrypt + scrypt_extra_space) > device_param->device_available_mem) continue; - - not_enough_memory = false; - - break; - } - - if (not_enough_memory == true) return -1; - - return size_scrypt; -} - -u64 module_tmp_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) -{ - const u64 tmp_size = 0; // we'll add some later - - return tmp_size; -} - -u64 module_extra_tmp_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes) -{ - const u64 scrypt_N = (hashes->salts_buf[0].scrypt_N) ? hashes->salts_buf[0].scrypt_N : SCRYPT_N; - const u64 scrypt_r = (hashes->salts_buf[0].scrypt_r) ? hashes->salts_buf[0].scrypt_r : SCRYPT_R; - const u64 scrypt_p = (hashes->salts_buf[0].scrypt_p) ? hashes->salts_buf[0].scrypt_p : SCRYPT_P; - - // we need to check that all hashes have the same scrypt settings - - for (u32 i = 1; i < hashes->salts_cnt; i++) - { - if ((hashes->salts_buf[i].scrypt_N != scrypt_N) - || (hashes->salts_buf[i].scrypt_r != scrypt_r) - || (hashes->salts_buf[i].scrypt_p != scrypt_p)) - { - return -1; - } - } - - const u64 tmp_size = 128ULL * scrypt_r * scrypt_p; - - return tmp_size; -} - -bool module_warmup_disable (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) -{ - return true; -} - -char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - const u64 scrypt_N = (hashes->salts_buf[0].scrypt_N) ? hashes->salts_buf[0].scrypt_N : SCRYPT_N; - const u64 scrypt_r = (hashes->salts_buf[0].scrypt_r) ? hashes->salts_buf[0].scrypt_r : SCRYPT_R; - const u64 scrypt_p = (hashes->salts_buf[0].scrypt_p) ? hashes->salts_buf[0].scrypt_p : SCRYPT_P; - - const u64 extra_buffer_size = device_param->extra_buffer_size; - - const u64 kernel_power_max = ((OPTS_TYPE & OPTS_TYPE_MP_MULTI_DISABLE) ? 1 : device_param->device_processors) * device_param->kernel_threads_max * device_param->kernel_accel_max; - - const u64 size_scrypt = 128ULL * scrypt_r * scrypt_N; - - const u64 scrypt_tmto_final = (kernel_power_max * size_scrypt) / extra_buffer_size; - - const u64 tmp_size = 128ULL * scrypt_r * scrypt_p; - - char *jit_build_options = NULL; - - hc_asprintf (&jit_build_options, "-D SCRYPT_N=%u -D SCRYPT_R=%u -D SCRYPT_P=%u -D SCRYPT_TMTO=%" PRIu64 " -D SCRYPT_TMP_ELEM=%" PRIu64, - hashes->salts_buf[0].scrypt_N, - hashes->salts_buf[0].scrypt_r, - hashes->salts_buf[0].scrypt_p, - scrypt_tmto_final, - tmp_size / 16); - - return jit_build_options; -} +#include "scrypt_common.c" int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED void *digest_buf, MAYBE_UNUSED salt_t *salt, MAYBE_UNUSED void *esalt_buf, MAYBE_UNUSED void *hook_salt_buf, MAYBE_UNUSED hashinfo_t *hash_info, const char *line_buf, MAYBE_UNUSED const int line_len) { @@ -307,9 +94,9 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE // scrypt settings - salt->scrypt_N = SCRYPT_N; - salt->scrypt_r = SCRYPT_R; - salt->scrypt_p = SCRYPT_P; + salt->scrypt_N = 16384; + salt->scrypt_r = 8; + salt->scrypt_p = 1; salt->salt_iter = salt->scrypt_N; salt->salt_repeats = salt->scrypt_p - 1; @@ -391,6 +178,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -401,9 +190,9 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_dgst_size = module_dgst_size; module_ctx->module_dictstat_disable = MODULE_DEFAULT; module_ctx->module_esalt_size = MODULE_DEFAULT; - module_ctx->module_extra_buffer_size = module_extra_buffer_size; - module_ctx->module_extra_tmp_size = module_extra_tmp_size; - module_ctx->module_extra_tuningdb_block = MODULE_DEFAULT; + module_ctx->module_extra_buffer_size = scrypt_module_extra_buffer_size; + module_ctx->module_extra_tmp_size = scrypt_module_extra_tmp_size; + module_ctx->module_extra_tuningdb_block = scrypt_module_extra_tuningdb_block; module_ctx->module_forced_outfile_format = MODULE_DEFAULT; module_ctx->module_hash_binary_count = MODULE_DEFAULT; module_ctx->module_hash_binary_parse = MODULE_DEFAULT; @@ -429,13 +218,13 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_hook23 = MODULE_DEFAULT; module_ctx->module_hook_salt_size = MODULE_DEFAULT; module_ctx->module_hook_size = MODULE_DEFAULT; - module_ctx->module_jit_build_options = module_jit_build_options; + module_ctx->module_jit_build_options = scrypt_module_jit_build_options; module_ctx->module_jit_cache_disable = MODULE_DEFAULT; module_ctx->module_kernel_accel_max = MODULE_DEFAULT; module_ctx->module_kernel_accel_min = MODULE_DEFAULT; - module_ctx->module_kernel_loops_max = module_kernel_loops_max; - module_ctx->module_kernel_loops_min = module_kernel_loops_min; - module_ctx->module_kernel_threads_max = module_kernel_threads_max; + module_ctx->module_kernel_loops_max = scrypt_module_kernel_loops_max; + module_ctx->module_kernel_loops_min = scrypt_module_kernel_loops_min; + module_ctx->module_kernel_threads_max = scrypt_module_kernel_threads_max; module_ctx->module_kernel_threads_min = MODULE_DEFAULT; module_ctx->module_kern_type = module_kern_type; module_ctx->module_kern_type_dynamic = MODULE_DEFAULT; @@ -447,7 +236,7 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_potfile_disable = MODULE_DEFAULT; module_ctx->module_potfile_keep_all_hashes = MODULE_DEFAULT; module_ctx->module_pwdump_column = MODULE_DEFAULT; - module_ctx->module_pw_max = module_pw_max; + module_ctx->module_pw_max = MODULE_DEFAULT; module_ctx->module_pw_min = MODULE_DEFAULT; module_ctx->module_salt_max = MODULE_DEFAULT; module_ctx->module_salt_min = MODULE_DEFAULT; @@ -455,7 +244,7 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_separator = MODULE_DEFAULT; module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; - module_ctx->module_tmp_size = module_tmp_size; + module_ctx->module_tmp_size = scrypt_module_tmp_size; module_ctx->module_unstable_warning = MODULE_DEFAULT; - module_ctx->module_warmup_disable = module_warmup_disable; + module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_22911.c b/src/modules/module_22911.c index 25b90e94a..91ae3d2fe 100644 --- a/src/modules/module_22911.c +++ b/src/modules/module_22911.c @@ -21,8 +21,7 @@ static const char *HASH_NAME = "RSA/DSA/EC/OpenSSH Private Keys ($0$)"; static const u64 KERN_TYPE = 22911; static const u32 OPTI_TYPE = OPTI_TYPE_ZERO_BYTE; static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE - | OPTS_TYPE_PT_GENERATE_LE - | OPTS_TYPE_SUGGEST_KG; + | OPTS_TYPE_PT_GENERATE_LE; static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; static const char *ST_PASS = "hashcat"; static const char *ST_HASH = "$sshng$0$8$7532262427635482$1224$e1b1690703b83fd0ab6677c89a00dfce57fc2f345ebd2b2993bf0d8bb267449d08839213dc234dd23c7a181077e00080ced2700a161c4352ce5574b9758926f09106157715b6d756cf6dd844e473c6bb3c2b591cdbf684394a49935f7d62bcc324c1392aee499e3d6235db0556d27adc6e35ef4654ee5fc72e60dff605484e75c6fd6ae29cb476f8a658dbcce9f9591a9dad023f6d9aa223c3d56261e056c5cafa93438937e0762b989cd10e6280a09488be07423c549514ff9686338e72dbe6bdc5015944739a9f183cacf04c1c141dc8c8d8aa8636c85a6c0578a5983ed33d5ff5ee6a66a54d86defd1c4f9d6a59446861bf4cc7bd667bc92b9d328c154f442d1d03d4d370dcc065a1d5420c5b71e4c35a457e11a0c9f489636559a2ac53bb4cfee2b0058f8a9d1ccc38a844ee0d1ff5d6938427bf24d6e4c69f10e6ebce9187d51e867ac3b362b9c6149712e8378a9ac91d1aab1a7a5f088ddbdead0cc754c30961b7a71284b5c6658f7219632de6007d5145a1ae062f807234230ff73a3436ce28ae3bfa0f880d1e49ec8a288da18db14905bc7a7b061a51c429876db81ad528efb469ba2bf46c7344aadc7d082efc83ede3894bf6b1738151e642f6f60a41069ad862d2f4f8d55733bd6d85086d1d9bb1913a9d4680ea0b49f712c590a3c18b91ef745b9bdf461af67879d94f9672de4abe0b7d2e4efba1f8bb6ffbb4a095742d5cff0e225b1b5e166854bb9821e4283d97f80855c81efea1eb3e7881a6049186650bfbf68f30302c069883668e373c12ce9a39de8d7c1be22a717d9c74410c45093aae03c5de8cc0ec662fe3bb81bf952e17b854001bcad9b36cab2f473a609878a419b735c66f3732bd5540fb1cba9fe081f87cecf63a6243cd2049dfa25a763ef2e0633bfb13a411207d8ca1c8f3c0c30b8a7583436cad7bd8c28ba625b9c53dc280b314671b0a55d75a28d3b21de250e3c554b86ca5d32821ab912c6607687c4dc5b3214216a7409621ce6fb89bd5309a7dd8ec9ae4b751bdfb6b5d12d733a89d87722dbdb1b15df5463241f0f56c401e095ea5dee07c0ded1f11ffbd7c93a41add0cfd8c57b44f255fdfd1929cd7d068d6cf951ba8ab0d718996fec10aaa26a4314d4c1272f744adf3c7e4d710ae171c072a7c61c2b020a445cf32be3083d3bc62083f2385bbae4fadddf8714258b996abd574638891bb918e877fdef3a4856b910999a6dc9dbd13c0e938825cd895c96d39cb86bb283a53fac7090c71a9320c6a34af309d2218af64c895f5eff8eee28cf94e7a7437a0922d83bfa39f08bb40e354d9ace07aa586a446dc217ede98b6ca9637545cc11ef56732fc9cd3dc06e459d868137b75d39a87e6721a95f2b84e57c94ef703486a2857821e497b990c95080015d825b6dc63d666f66cfa35912e607c3b650d81dc98c0c53322796ff9249cdfe7a375e1d01607816a85bb43f3969767a9aaed07161344e714d7e875b40f3524f95e476e605dbd2ac51e36075701fa93b66f36470796ebf5d35690a297e19729f9ac59d98622e3ad3e45a2914bdd2b807446c8b430e54c1a607fd25a69bf469a61d2e3bc3697b786c047bc60dbeabe6372d71e9b7c9787bb2559c663a011f864ecf32793e65f4bdd76370d99f602ddcbc7e5aa7d2749f36e8d0f209a378782882bc06ee5b5014c2a6248469f0fe0fc5369383db0bc898c0760b8c40fe20342fa5b"; @@ -53,6 +52,23 @@ typedef struct pem static const char *SIGNATURE_SSHNG = "$sshng$"; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: self-test failed + return true; + } + } + } + + return false; +} + u64 module_esalt_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const u64 esalt_size = (const u64) sizeof (pem_t); @@ -200,6 +216,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -265,6 +283,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = MODULE_DEFAULT; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_22921.c b/src/modules/module_22921.c index c71aad254..163aacee9 100644 --- a/src/modules/module_22921.c +++ b/src/modules/module_22921.c @@ -21,9 +21,7 @@ static const char *HASH_NAME = "RSA/DSA/EC/OpenSSH Private Keys ($6$)"; static const u64 KERN_TYPE = 22921; static const u32 OPTI_TYPE = OPTI_TYPE_ZERO_BYTE; static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE - | OPTS_TYPE_PT_GENERATE_LE - | OPTS_TYPE_SUGGEST_KG - | OPTS_TYPE_MAXIMUM_THREADS; + | OPTS_TYPE_PT_GENERATE_LE; static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; static const char *ST_PASS = "hashcat"; static const char *ST_HASH = "$sshng$6$8$7620048997557487$1224$13517a1204dc69528c474ef5cbb02d548698771f2a607c04ea54eb92f13dedba0f2185d2884b4db0c95ce6432856108ea2db858be443e0f8004ffcd60857e4ff1e42b17f056998ec5f96806a06e39cc6e6d7ef4ce8ae62b57b2ec0d0236c35cf4bc00dd6fda45e4788dcca0f0e44dddae1dad2d6e7b705d076f2f8fc5837eec4a002d9633bcad1f395ca8e85e78459abe293451567494d440c3f087bb7fe4d6588018f92ca327dda514a99d7b4b32434da0e3b1bf9344afb2fe29f8d8315a385fe8b81fd4c202c7d82cd9f0bb1600e59762ab6ea1b42e4e299f0a59ce510767e1e1138453d362d0a1aa6680e86b5aa0bd5c62165f4fe7c2867f9533578085adc36739d6c9cf7b36899aac39dcabac8b39194433423e8e18ba28496bbe14dd01231eb5b091ae9de0f7f9ea714c22edac394077fb758fe496e1880571ade399ac229457ddd98577f8a01a036ad3bc8b03a9fb02e26b4b76f6cb676eabe82d1606fca0c5fca62cd1d82c3df1ed58ab4acd4611b2827ebde722bc05e471a427225818aa36dabf5bf1203ccb0ebc8dec097e49f7f948bfe7b939e6d0ff1125b863c033768f588964f8b77ca1e2425751f873f80e5d6a0671f7860cf4a46533585094726c3afe5f7203fa4a01650fa9839772c713a033139cfc6a6e6f7dc62e5844d4c57ef4fc3321bc85d597a54bd6fe37e9e696cf3b5ec66f55232e0964dc5cf880d8a41a9891150618bd9c088fd9824af0d86f817f2c79429c3d56cd6eb41eb6120f9accc10a863f23a2bb6c57d4bd6193f2283ae0215e2e87e672a8438e2550c044fa9556bdb4afc40d8c2752ffbc6c95571756a3c230bb2fa95f519f8da238ef0857ecf860247a8b26e28269f9bad564e7d8bfba2eac9760b52449251cb35e183f5b309a09071535154c6f1013b58f305b544f3589c9eb0e9ac4267a84374a3eab49c53aa9bedbf97f8f19ebc212d8db74ee03554a3514140667fa4ce8e06aad3f32d1b00015be0e8979fe66736018589beee06d6f318851dbe8d9689e70202185d71fc5e5a3d2996ddb8ae1d7718c49855c6f8c43301e0915f324f30d0d9c6a8504a91ad5a7179aafb87ede58598394949910874850994abe815817359152ff6a7c8cc6f19524dfc5e50ddfd038a2275bf809e3c8f05ed3e3137ebd62d91cd3578533787c3847e3c5e07e5a891480e5ceabcf6c344e7bec8b640ab9a03e90b846b35d2f46ba150accef32d2597b064810b15fd54fca6d2b146feabcd05c0b51617ae95e36f6817a62c3ff42c5c2f6f1d20a8a1fd334d3b7d3f83bba057b79d9b5508bb0cb706ba00acb0ab797401fdcfac80b5b6e38e51aec0b38f33ff4690425ca28d88a2e876591521230150b4e20a4a82e50061cee9c0705100bfe5fdbd8ef27aec20387cf32455ef305bce2a91ae6da91fc41376b97149e9b41c901b24811df9272ff09718923b8d94e8e459a164a22b0eca47653f3efcbf08188c5da78cd9fb9eda1761094f9d8bc3d479e9f40c7d79ebaaba2a5c632329f20a9962040ff8f512b42c5f32a8460d87b8e93c6f980a1562c436eea1c8994fbf671dda3c4ccd3c142acfcdde2ab61227289ad408213ac8e22d9ef487f36925f5ba3b8e7e913d25c4a8592c861d13f03b615bc2760aabc61d68db80d35296a3312fdf4b56c0fbee5ab3fea1cf9caf3960a564046939e8002d2dd909db446d85aeae9dd42a33fe28684f722172e6"; @@ -54,6 +52,23 @@ typedef struct pem static const char *SIGNATURE_SSHNG = "$sshng$"; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: self-test failed + return true; + } + } + } + + return false; +} + u64 module_esalt_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const u64 esalt_size = (const u64) sizeof (pem_t); @@ -201,6 +216,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -266,6 +283,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = MODULE_DEFAULT; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_22931.c b/src/modules/module_22931.c index ea673b633..8d21533e4 100644 --- a/src/modules/module_22931.c +++ b/src/modules/module_22931.c @@ -21,8 +21,7 @@ static const char *HASH_NAME = "RSA/DSA/EC/OpenSSH Private Keys ($1, $3$)"; static const u64 KERN_TYPE = 22931; static const u32 OPTI_TYPE = OPTI_TYPE_ZERO_BYTE; static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE - | OPTS_TYPE_PT_GENERATE_LE - | OPTS_TYPE_SUGGEST_KG; + | OPTS_TYPE_PT_GENERATE_LE; static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; static const char *ST_PASS = "hashcat"; static const char *ST_HASH = "$sshng$1$16$14987802644369864387956120434709$1232$ffa56007ed83e49fdc439c776a9dec9656521385073bf71931a2c6503c93917e560cc98940c8cdcf2c709265e9ba20783a3bacc63423a98e40ea8999182613e1f5a80084719ca0e5c390299de1ea947df41f2ff1489bddfe13c6128612c5c82b7fc1ef5105ea28adda7b415729c66fb6cbc4b6b51ef518f74e1971f88e0cfabd69e8c4270678e360149ce15716fef4736df296a20d2607ef269a3c69896fc423683d6057e00064f84e04caf4d4663b51b307cfb1d1dbd6b3bf67764a08847c7b83fa5544e6a1e950f16acda8c8bac30675bc3cea9c7e06790ddc7cd1e4177b93bdd0d9edf9cdceb4a4444b437d967acdb92274a7b10d9cd1073ab4e9b5dd468aabe1f40a02b2e51f19840798c2311b625037eba5f0a0256638b42577385f4d4c730a9cedf4e244ce74656a21bf16756857866433dbb1feff9c4323d234d4235b72ed5a3adc3a6c9bae373472d64b7882d1762911326f330cb42d8ab7931f1ad2de56c4e6e8a6e838108cf9a2728ffa356796f63d94723b1d0aad5b4fcea16ab0730e7553804ad9ffb6ecdbdd925fca05ca1c076ed09a30df8a5add44a43c36b92248dc8dd4605bc2ee557e6e4438abf9ea7d047f764c55a5ba46a41719b9c55e54ad5fbfce6a89b9283c163d8464ecdda5aaf113d038b659950b8c79e87abad019eb77535cc8e63f760a4c87ca344a563475361766df718519b1b7e4b3ab511952fcc9b011f1d8971f9261509139b739afcc2c9acd006ee714dffc8c9a4df0d54770d70c8c28c27cdf9ee7301fd64530ef0ec3eb044fb891b193a7aaa9158625ed9f5a842c86ed09e5377d90a69aea4c5fd321bc3ac9b2a0d34509a5de0b72ac3f81304895c4381e01136b1e8654cec20c220c0ac6a1300f031ffc68ddeab554279024c122589b91556feef394a1663b42fb8460af5fe881cb1cd4984b84be75125411b1d3fc236dd81f99b872aad511d28944e91d2f8853f11be85b6930a15b4d0b3d215d76416970ade5726979c1d737980fb68ecb03d1196a69f4013dd2e296a75a4c69664b0162cb8b22af18c536a8ce51f39b1282f2fe07e6b034627f075cfb20dffee62817aabeea60befea1ac93ba608d957e4030e41be7bc55275bc4037300f6ba736370eb7c9240629853c95f9304b7ffd26a10d55ae735fa943e29aa9ed437b61955fc16cde9ea7a3658d831bdbc38befa45cec80da9ccb6d21da83ff666e32d7c5c0ca0ade2cd685407ee701c1c707fc5c80b22f3af42ac1353fcdc09a459086434db7c78792decdc91572363478a14d1256346a9ac6336b8183ed6252106aa546dd092c0bbb464cdb44ae165d67d1be135877587de3bbbd02b5ef6473f125366f6dae0536ebbe18ab8de8ce2ef3d26d6dd400319e7d07ae276b081e94446e9a72877cf23e9ba52406b1842e3a0dcf7bbdc63a1336b894be475613cc917eb47724f64e621bfc3053d7423e3e2fb141a3368dc8881fa20e040e9a6bc2e7348e923e4c20e506566b8663bf7d557e792cbe4adffcf9c520d58565d77f6bf1c9ed5fa3209f8047765d01b9c264e97a3ef9ff90766ad69a4f508041e168bf0f7419e54ec88bdc4c858231cdba60774a27cc459cd65b46e26a620a43033788c6e2ee8916670568d6e6c700515f2cbca3eef62028ce75245cf8f99cd6e0ba7839a7b335c797a06ff80571950ebec2fccebb89265025b3250e4a5c9c3a62f471324556fc4db044cebe97f62c86913"; @@ -53,6 +52,23 @@ typedef struct pem static const char *SIGNATURE_SSHNG = "$sshng$"; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: self-test failed + return true; + } + } + } + + return false; +} + u64 module_esalt_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const u64 esalt_size = (const u64) sizeof (pem_t); @@ -204,6 +220,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -269,6 +287,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = MODULE_DEFAULT; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_22941.c b/src/modules/module_22941.c index 05f0d57e5..4b4bf09ac 100644 --- a/src/modules/module_22941.c +++ b/src/modules/module_22941.c @@ -21,8 +21,7 @@ static const char *HASH_NAME = "RSA/DSA/EC/OpenSSH Private Keys ($4$)"; static const u64 KERN_TYPE = 22941; static const u32 OPTI_TYPE = OPTI_TYPE_ZERO_BYTE; static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE - | OPTS_TYPE_PT_GENERATE_LE - | OPTS_TYPE_SUGGEST_KG; + | OPTS_TYPE_PT_GENERATE_LE; static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; static const char *ST_PASS = "hashcat"; static const char *ST_HASH = "$sshng$4$16$01684556100059289727957814500256$1232$b04d45fdfdf02a9ca91cbc9c53f9e59956822c72c718929aca9251cffd9ac48e48c490b7b6b6043df3a70cf5fbcc2f358b0e8b70d39155c93032b0fd79ec68f6cb8b7de8422ec95cb027a9eaacc453b0b99b5d3f8d6771d6b95b0242a1d8664de8598e8d6b6d6ee360fda5ae0106061a79e88ef2eef98a000b638f8fdc367155ec2d1120b366f74f0933efe5d174e7107db29dc8fb592b22b9837114415d78036c116b2d31b2080c7159442f2d1a61900f5ae4913548c8e7fc716dd4f812bc7e57b2dd5d3f56c6ae0e91c3bc2897d9341cb282d86b915d43cf20ad16fbd2056104529576142354a430281f5e458923ef8014ff9950351798bfcbbcb66cb98bb2cccea48c134b0e05e978d4308c82617869b207f0ed7b227893f2cdde2d6b6a98246de8a2494d5e018a84724780fbe8d1fa91c922908d18ccffbbbbc81e6578fe8bb5c8596a8cf689f3f12b810dee95887e12439e487313229a37913e3cd12bddba3bac94fab03aad8607f6034fa87f7a7a2ac74d0c0a6e6bc905f569221861e1e388cf379cda799d7b56eac58440d17fe97fa68a537d34317376c00dfa9a99e04725a0d2fcf27ee50463e725813c96fe2eed16de59e8a6944d903e11f7923d57ae6d4a1f8085ce19f4d180f13027806f3965fdf875ea092f103f28a5f42f356254958fa7eb0bca2389a6ad4e305640cc64501e6b16330b063037b1cf6fe64131f308e50d9d1dc687ffa487681941084ff21cb54c1b5903b7a78d9913595fa0124f1dde49b1bee2ea83837efe34e2cd6051a4a7a1437eaa84ad332ffd9946b952ed634948789d9541820a0f9c6f44ab6d3cad645743c76c54e79bfdc4fb8e43a0fd7d871baea98e78131bc530b6d736fa1ec5ac70438609497ab2ff8d516146b4b1b3488791cb84dccc0096b570e2ffb3a93cccefec0af7ce616a64466d2d4196941ba9e051dc00ed05e963a7b4a286973ee0b5df4fd92dfb0b229b10730d454832d945c6a596862212d109ce78ac14ffb5d775548b2f3e2ae4be059a24465cc10b7c810f8cc3db7cb327619cc104ebea575ac097d20701dc623f7aa893b785cc20851f3972390e00ab3355655f7d5bea323832c17d8e078e917843ef7fcaca349366092b6743bf7511d5fceb2d992fbd18574be532365be41ad80a114704a64a7aefdf98c907aa10e4d5c547dd8d21647ea9d5c975fe1b24525d94c3eb03e071742fd5f09f22da669b649fac9f87d8cf16c475d006421f69a9b2d5c4037ccc9bf9f0aa0e7df8ac5fcb0d88a528833f9640799026d2fe8694fa1a0307c5f24002172464b290bedd85667800edbff2f1de7119e5b65730a24922e42d53ef28b0a59817a298426dc72e29a85e59e3d777b19eb934bcd620a903aff72927cdbe7253f77694ab0ef970378b4347f6166ca2a40b23cc31970f0cbefd08d2d72bf2c3961d67c73a5a24f75a65e540dc5735520b0d81250af8980ddca3e22a9b25773afd27c76e564ff437d4208df14d802f1d0848390f45924cdd6ced3c9ffb726bb358b334ea0e0481acdd103f2db05f508f62588621d0b8fa274a69eba0d418d85086d9139391f7e28dc54fe9bab801f1fea854f27ad2e5907ae6f9a4b4527d16a8af3c8cbe2c6d82209dc6c7da060da58294eb00380598330c4c19d45581d09e04c0153a8559700b3a8ceab9b8124f84d397356cd9e38e3916afc1f63a3e1dfbc7df8dd0a7d0704e38a0ea523dfc2b9defd5"; @@ -53,6 +52,23 @@ typedef struct pem static const char *SIGNATURE_SSHNG = "$sshng$"; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: self-test failed + return true; + } + } + } + + return false; +} + u64 module_esalt_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const u64 esalt_size = (const u64) sizeof (pem_t); @@ -204,6 +220,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -269,6 +287,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = MODULE_DEFAULT; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_22951.c b/src/modules/module_22951.c index abf2fb6dd..d7c6645ce 100644 --- a/src/modules/module_22951.c +++ b/src/modules/module_22951.c @@ -21,8 +21,7 @@ static const char *HASH_NAME = "RSA/DSA/EC/OpenSSH Private Keys ($5$)"; static const u64 KERN_TYPE = 22951; static const u32 OPTI_TYPE = OPTI_TYPE_ZERO_BYTE; static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE - | OPTS_TYPE_PT_GENERATE_LE - | OPTS_TYPE_SUGGEST_KG; + | OPTS_TYPE_PT_GENERATE_LE; static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; static const char *ST_PASS = "hashcat"; static const char *ST_HASH = "$sshng$5$16$52935050547964524511665675049973$1232$febee392e88cea0086b3cdefd3efec8aedb6011ca4ca9884ef9776d09559109c328fd4daef62ea4094a588d90d4617bc0348cc1205ae140e5bdca4e81bf7a8ff4fcc9954d3548ba9a0d143a504750d04d41c455d6100b33dacc5f9a10036ae75be69a81471e945554a52ca12b95640a08f607eab70c4a750dc48917f3c9ee23c537e9b4a49728a9773a999dfd842cf9a38155029ea5d42f617dbec630889d078ffadaf3ff28eed65389a73528f3d0863fffd9a740edd59ca223595e330bca37ac5a003ac556d2b6232f9900fc8654586e73e7b2d83327d61b2fc561a78aacc8aff473bb3d18ddccae87d84de143a8a98550d955d01d4e6074ac62aa0af0bca58a0c53d0d7cf1a26345c1bd3eca7a0c0e711f5c7f942d50bc872be971d0c17dbc5a88f043a937ff5d28c5ef8d8d291e511d070b14a0cc696ee5088a944b113bc7e697cdc793e931c3f0f3a892b44aad1468e6c45becdcaa89febda17fcd5fe6ff430695e04b5b6271e032e3529315367e56337777a5b342c19d3ebc7441ac0f79b93749ad4526b8be0a5cf5756363aac93da6dc19dbfff15bacbbf2dae7a549afdab8e0589321ac0a612576bbfe06fde086075d1244450a3667f793ccc81fd5ccc5b1d08e6f447e3e0cd89b901049bedb1e65b23ede0d8f00ff1c984743b50342c50408e9060ed6a809a7b068972c9542cd91de0767c02a73d192ea600008bf4a6ef339c7f2db767346cc479e61abedb4ba4a67f72e91ac49a2e92bb4bacd97aed0b044c258e2004fa0fb8da3678a57d37187c1246c90a107540161462145fa7307a6d4db34694fb1b090f07bedb9ca0e71aefd3ce5601b87778fd6b66391c3c61d528a5965f91370f52a72f0622620329f96c5dd68561e0f6576f3a2bc5c21a95aed569edc4ed979746b32909178e550907c5f41d7b24480e81a874b931c23f13517ab5f9331f11819d982bf9e5b8a03034b47c8785f8902611eac26716976bccd51d19864f10ee1fbd62f8b0149c22ab06205a20f9f9fcb0a5279552a8923c3ace2e134f6b190653f430c1a4b82f762283028d9c0c8d1a3428731f4f405f40f947f297a43aa3ba2267bbc749a5677da92a63d51d24aa5ca3e9e1d35a8143d7b4bac481f0c56754e980a60cf2d330797fc81f6c6f405760f1257103ac6edf10976c9005f4a261f7aad055400c4f18dc445eb3a403740ad6c58afa4e8edb30fad907488baf0ede2eb3d3687d1e8724dd69c7bd14b90d4f113fc9f84a2c01ab00917f53cd879a4031b1c91a4d4d7d9e712a584959137001d331f6725dca81ea6cc55fac7fc0e8b578dec0983ca98c3789cdf83507e4c3ba056fdcbea26693a313077290d7c6695f4cc6de4848532f0149cc06dbf4c76d02944178520585923b636196ea2cbcacc43950b308fc7929e85de076a2ab65c9bd8ebb0c04c041281178a48d8d2165d315b3e74abf0a38505b71ae5b2a6e7f87861e174cff873a1f61980b53ef3acdd2ea6a25425b162e5dc0bc1aa2992585d2da1625a6593cc2d4fe8c86eeb4df0e27cda54685f7245e5c48063d489e8d93bd5303bebe633139dcdd04afa005d03d1185a64e8711c0b09d9d0b38b35d6ef1b1e35353a7a4396863650a3843c687a00396dd3db53e8d28baf29101abb9f628ba896b091618f24187f6eeb814e4b64130768fb37e89b9b3230e50a7e5aba852a983525c8f193deb1fe27b334cdc3bdfa4c301d04907ee29a848393"; @@ -53,6 +52,23 @@ typedef struct pem static const char *SIGNATURE_SSHNG = "$sshng$"; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: self-test failed + return true; + } + } + } + + return false; +} + u64 module_esalt_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const u64 esalt_size = (const u64) sizeof (pem_t); @@ -204,6 +220,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -269,6 +287,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = MODULE_DEFAULT; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_23001.c b/src/modules/module_23001.c index db6fb556a..bbde4ee6e 100644 --- a/src/modules/module_23001.c +++ b/src/modules/module_23001.c @@ -246,6 +246,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_23002.c b/src/modules/module_23002.c index 189a78a54..ac58ee5b6 100644 --- a/src/modules/module_23002.c +++ b/src/modules/module_23002.c @@ -246,6 +246,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_23003.c b/src/modules/module_23003.c index c3a44d944..dc697a732 100644 --- a/src/modules/module_23003.c +++ b/src/modules/module_23003.c @@ -26,8 +26,7 @@ static const u32 OPTI_TYPE = OPTI_TYPE_ZERO_BYTE static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE | OPTS_TYPE_PT_GENERATE_BE | OPTS_TYPE_PT_ADD80 - | OPTS_TYPE_PT_ADDBITS15 - | OPTS_TYPE_MAXIMUM_THREADS; + | OPTS_TYPE_PT_ADDBITS15; static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; static const char *ST_PASS = "hashcat"; static const char *ST_HASH = "$zip3$*0*1*256*0*39bff47df6152a0214d7a967*65ff418ffb3b1198cccdef0327c03750f328d6dd5287e00e4c467f33b92a6ef40a74bb11b5afad61a6c3c9b279d8bd7961e96af7b470c36fc186fd3cfe059107021c9dea0cf206692f727eeca71f18f5b0b6ee1f702b648bba01aa21c7b7f3f0f7d547838aad46868155a04214f22feef7b31d7a15e1abe6dba5e569c62ee640783bb4a54054c2c69e93ece9f1a2af9d*0*0*0*file.txt"; @@ -247,6 +246,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_23100.c b/src/modules/module_23100.c index 22b524e9f..7728d93d2 100644 --- a/src/modules/module_23100.c +++ b/src/modules/module_23100.c @@ -200,6 +200,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_23200.c b/src/modules/module_23200.c index 5ec94c72d..3b7b21136 100644 --- a/src/modules/module_23200.c +++ b/src/modules/module_23200.c @@ -195,6 +195,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_23300.c b/src/modules/module_23300.c index decc32913..36e2bcd51 100644 --- a/src/modules/module_23300.c +++ b/src/modules/module_23300.c @@ -263,6 +263,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_23400.c b/src/modules/module_23400.c index 7a0e5fb95..13743815f 100644 --- a/src/modules/module_23400.c +++ b/src/modules/module_23400.c @@ -269,6 +269,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_23500.c b/src/modules/module_23500.c index 5c8bd4367..f3eb316dd 100644 --- a/src/modules/module_23500.c +++ b/src/modules/module_23500.c @@ -68,17 +68,6 @@ typedef struct axcrypt2_tmp static const char *SIGNATURE_AXCRYPT2 = "$axcrypt$"; -bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - // AMD Radeon Pro W5700X, Metal.Version.: 261.13, compiler hangs - if (device_param->is_metal == true) - { - return true; - } - - return false; -} - u64 module_esalt_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const u64 esalt_size = (const u64) sizeof (axcrypt2_t); @@ -299,6 +288,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -364,6 +355,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = module_unstable_warning; + module_ctx->module_unstable_warning = MODULE_DEFAULT; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_23600.c b/src/modules/module_23600.c index 2df2d3479..fdb3467d1 100644 --- a/src/modules/module_23600.c +++ b/src/modules/module_23600.c @@ -68,17 +68,6 @@ typedef struct axcrypt2_tmp static const char *SIGNATURE_AXCRYPT2 = "$axcrypt$"; -bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - // AMD Radeon Pro W5700X, Metal.Version.: 261.13, compiler hangs - if (device_param->is_metal == true) - { - return true; - } - - return false; -} - u64 module_esalt_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const u64 esalt_size = (const u64) sizeof (axcrypt2_t); @@ -299,6 +288,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -364,6 +355,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = module_unstable_warning; + module_ctx->module_unstable_warning = MODULE_DEFAULT; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_23700.c b/src/modules/module_23700.c index 884aceefc..22c9d9a0a 100644 --- a/src/modules/module_23700.c +++ b/src/modules/module_23700.c @@ -71,6 +71,20 @@ typedef struct rar3_tmp_optimized static const int ROUNDS_RAR3 = 262144; static const char *SIGNATURE_RAR3 = "$RAR3$"; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->opencl_device_vendor_id == VENDOR_ID_INTEL_SDK) + { + // Intel Iris + return true; + } + } + + return false; +} + u64 module_tmp_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const bool optimized_kernel = user_options->optimized_kernel; @@ -326,6 +340,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = module_benchmark_mask; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -391,6 +407,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_23800.c b/src/modules/module_23800.c index 214ea0f50..615548bc0 100644 --- a/src/modules/module_23800.c +++ b/src/modules/module_23800.c @@ -73,6 +73,8 @@ typedef struct rar3_hook u32 first_block_decrypted[4]; + u32 unpack_failed; + u32 crc32; } rar3_hook_t; @@ -201,17 +203,6 @@ static int check_huffman (const unsigned char *next) return 1; /* Passed this check! */ } -bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - // AMD Radeon Pro W5700X Compute Engine; 1.2 (Apr 22 2021 21:54:44); 11.3.1; 20E241 - if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) - { - return true; - } - - return false; -} - bool module_hook_extra_param_init (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const folder_config_t *folder_config, MAYBE_UNUSED const backend_ctx_t *backend_ctx, void *hook_extra_param) { rar3_hook_extra_t *rar3_hook_extra = (rar3_hook_extra_t *) hook_extra_param; @@ -286,7 +277,7 @@ bool module_hook_extra_param_term (MAYBE_UNUSED const hashconfig_t *hashconfig, return true; } -unsigned int hc_decompress_rar (unsigned char *Win, unsigned char *Inp, unsigned char *VM, unsigned char *PPM, const unsigned int OutputSize, const unsigned char *Input, const unsigned int PackSize, const unsigned int UnpackSize, const unsigned char *Key, const unsigned char *IV); +unsigned int hc_decompress_rar (unsigned char *Win, unsigned char *Inp, unsigned char *VM, unsigned char *PPM, const unsigned int OutputSize, const unsigned char *Input, const unsigned int PackSize, const unsigned int UnpackSize, const unsigned char *Key, const unsigned char *IV, unsigned int *unpack_failed); void module_hook23 (hc_device_param_t *device_param, const void *hook_extra_param, const void *hook_salts_buf, const u32 salt_pos, const u64 pw_pos) { @@ -328,7 +319,9 @@ void module_hook23 (hc_device_param_t *device_param, const void *hook_extra_para const u8 *key = (u8 *) hook_item->key; const u8 *iv = (u8 *) hook_item->iv; - const u32 crc32 = hc_decompress_rar (rar3_hook_extra->win[device_param->device_id], rar3_hook_extra->inp[device_param->device_id], rar3_hook_extra->vm[device_param->device_id], rar3_hook_extra->ppm[device_param->device_id], unpack_size, data, pack_size, unpack_size, key, iv); + hook_item->unpack_failed = 1; + + const u32 crc32 = hc_decompress_rar (rar3_hook_extra->win[device_param->device_id], rar3_hook_extra->inp[device_param->device_id], rar3_hook_extra->vm[device_param->device_id], rar3_hook_extra->ppm[device_param->device_id], unpack_size, data, pack_size, unpack_size, key, iv, &hook_item->unpack_failed); hook_item->crc32 = crc32; } @@ -603,6 +596,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = module_benchmark_mask; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -668,6 +663,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = module_unstable_warning; + module_ctx->module_unstable_warning = MODULE_DEFAULT; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_23900.c b/src/modules/module_23900.c index 7fe378938..fcee86004 100644 --- a/src/modules/module_23900.c +++ b/src/modules/module_23900.c @@ -204,6 +204,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_24000.c b/src/modules/module_24000.c new file mode 100644 index 000000000..b13d398e0 --- /dev/null +++ b/src/modules/module_24000.c @@ -0,0 +1,267 @@ +/** + * Author......: See docs/credits.txt + * License.....: MIT + */ + +#include "common.h" +#include "types.h" +#include "modules.h" +#include "bitops.h" +#include "convert.h" +#include "shared.h" +#include "memory.h" + +static const u32 ATTACK_EXEC = ATTACK_EXEC_OUTSIDE_KERNEL; +static const u32 DGST_POS0 = 0; +static const u32 DGST_POS1 = 1; +static const u32 DGST_POS2 = 2; +static const u32 DGST_POS3 = 3; +static const u32 DGST_SIZE = DGST_SIZE_4_8; +static const u32 HASH_CATEGORY = HASH_CATEGORY_FDE; +static const char *HASH_NAME = "BestCrypt v4 Volume Encryption"; +static const u64 KERN_TYPE = 24000; +static const u32 OPTI_TYPE = OPTI_TYPE_ZERO_BYTE; +static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE + | OPTS_TYPE_PT_GENERATE_LE + | OPTS_TYPE_MP_MULTI_DISABLE + | OPTS_TYPE_NATIVE_THREADS + | OPTS_TYPE_LOOP_PREPARE + | OPTS_TYPE_ST_HEX; +static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; +static const char *ST_PASS = "hashcat"; +static const char *ST_HASH = "$bcve$4$08$323631353538333233323034363039393534383233393530$9f7892b8324b1d8cd36b5f2f8705b407131261620a89370db8369046646f5f82b96780453948db53b04928ae0cc47066f13454b34e31b58ea44ce943bcba14fcbd87f17205a31a896df182629ceea164d87e9e29127e8d865ca0bee52f832723"; + +u32 module_attack_exec (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ATTACK_EXEC; } +u32 module_dgst_pos0 (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_POS0; } +u32 module_dgst_pos1 (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_POS1; } +u32 module_dgst_pos2 (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_POS2; } +u32 module_dgst_pos3 (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_POS3; } +u32 module_dgst_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_SIZE; } +u32 module_hash_category (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return HASH_CATEGORY; } +const char *module_hash_name (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return HASH_NAME; } +u64 module_kern_type (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return KERN_TYPE; } +u32 module_opti_type (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return OPTI_TYPE; } +u64 module_opts_type (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return OPTS_TYPE; } +u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return SALT_TYPE; } +const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; } +const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; } + +typedef struct bestcrypt_scrypt +{ + u32 salt_buf[24]; + u32 ciphertext[96]; + u32 version; + +} bestcrypt_scrypt_t; + +static const char *SIGNATURE_BESTCRYPT_SCRYPT = "$bcve$"; + +static const u32 SCRYPT_THREADS = 16; + +#include "scrypt_common.c" + +u64 module_esalt_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) +{ + const u64 esalt_size = (const u64) sizeof (bestcrypt_scrypt_t); + + return esalt_size; +} + +int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED void *digest_buf, MAYBE_UNUSED salt_t *salt, MAYBE_UNUSED void *esalt_buf, MAYBE_UNUSED void *hook_salt_buf, MAYBE_UNUSED hashinfo_t *hash_info, const char *line_buf, MAYBE_UNUSED const int line_len) +{ + u32 *digest = (u32 *) digest_buf; + + bestcrypt_scrypt_t *bestcrypt_scrypt = (bestcrypt_scrypt_t *) esalt_buf; + + hc_token_t token; + + memset (&token, 0, sizeof (hc_token_t)); + + token.token_cnt = 5; + + token.signatures_cnt = 1; + token.signatures_buf[0] = SIGNATURE_BESTCRYPT_SCRYPT; + + token.len[0] = 6; + token.attr[0] = TOKEN_ATTR_FIXED_LENGTH + | TOKEN_ATTR_VERIFY_SIGNATURE; + + token.sep[1] = '$'; + token.len[1] = 1; + token.attr[1] = TOKEN_ATTR_FIXED_LENGTH + | TOKEN_ATTR_VERIFY_DIGIT; + + token.sep[2] = '$'; + token.len[2] = 2; + token.attr[2] = TOKEN_ATTR_FIXED_LENGTH + | TOKEN_ATTR_VERIFY_HEX; + + token.sep[3] = '$'; + token.len[3] = 48; + token.attr[3] = TOKEN_ATTR_FIXED_LENGTH + | TOKEN_ATTR_VERIFY_HEX; + + token.len[4] = 192; + token.attr[4] = TOKEN_ATTR_FIXED_LENGTH + | TOKEN_ATTR_VERIFY_HEX; + + const int rc_tokenizer = input_tokenizer ((const u8 *) line_buf, line_len, &token); + + if (rc_tokenizer != PARSER_OK) return (rc_tokenizer); + + const u8 *format_type_pos = token.buf[1]; + + if (format_type_pos[0] != '4') return (PARSER_SALT_VALUE); + + const u8 *crypto_type_pos = token.buf[2]; + + bestcrypt_scrypt->version = crypto_type_pos[1]; + + // scrypt settings + + const u32 scrypt_N = 32768; + const u32 scrypt_r = 16; + const u32 scrypt_p = 1; + + salt->scrypt_N = scrypt_N; + salt->scrypt_r = scrypt_r; + salt->scrypt_p = scrypt_p; + + // salt + + const u8 *salt_pos = token.buf[3]; + const int salt_len = token.len[3]; + + const bool parse_rc = generic_salt_decode (hashconfig, salt_pos, salt_len, (u8 *) salt->salt_buf, (int *) &salt->salt_len); + + if (parse_rc == false) return (PARSER_SALT_LENGTH); + + bestcrypt_scrypt->salt_buf[0] = salt->salt_buf[0]; + bestcrypt_scrypt->salt_buf[1] = salt->salt_buf[1]; + + bestcrypt_scrypt->salt_buf[0] = byte_swap_32 (salt->salt_buf[0]); + bestcrypt_scrypt->salt_buf[1] = byte_swap_32 (salt->salt_buf[1]); + + salt->salt_iter = salt->scrypt_N; + salt->salt_repeats = salt->scrypt_p - 1; + + // ciphertext + + const u8 *ciphertext_pos = token.buf[4]; + const int ciphertext_len = token.len[4]; + + hex_decode (ciphertext_pos, ciphertext_len, (u8 *) bestcrypt_scrypt->ciphertext); + + digest[0] = bestcrypt_scrypt->ciphertext[16]; + digest[1] = bestcrypt_scrypt->ciphertext[17]; + digest[2] = bestcrypt_scrypt->ciphertext[18]; + digest[3] = bestcrypt_scrypt->ciphertext[19]; + + return (PARSER_OK); +} + +int module_hash_encode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const void *digest_buf, MAYBE_UNUSED const salt_t *salt, MAYBE_UNUSED const void *esalt_buf, MAYBE_UNUSED const void *hook_salt_buf, MAYBE_UNUSED const hashinfo_t *hash_info, char *line_buf, MAYBE_UNUSED const int line_size) +{ + char tmp_salt[SALT_MAX * 2]; + + const int salt_len = generic_salt_encode (hashconfig, (const u8 *) salt->salt_buf, (const int) salt->salt_len, (u8 *) tmp_salt); + + tmp_salt[salt_len] = 0; + + bestcrypt_scrypt_t *bestcrypt_scrypt = (bestcrypt_scrypt_t *) esalt_buf; + + u8 data_hex[193] = { 0 }; + + hex_encode ((u8 *) bestcrypt_scrypt->ciphertext, 96, data_hex); + + const int line_len = snprintf (line_buf, line_size, "%s4$0%c$%s$%s", + SIGNATURE_BESTCRYPT_SCRYPT, + bestcrypt_scrypt->version, + (char *) tmp_salt, + data_hex + ); + + return line_len; +} + +void module_init (module_ctx_t *module_ctx) +{ + module_ctx->module_context_size = MODULE_CONTEXT_SIZE_CURRENT; + module_ctx->module_interface_version = MODULE_INTERFACE_VERSION_CURRENT; + + module_ctx->module_attack_exec = module_attack_exec; + module_ctx->module_benchmark_esalt = MODULE_DEFAULT; + module_ctx->module_benchmark_hook_salt = MODULE_DEFAULT; + module_ctx->module_benchmark_mask = MODULE_DEFAULT; + module_ctx->module_benchmark_charset = MODULE_DEFAULT; + module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; + module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; + module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; + module_ctx->module_deprecated_notice = MODULE_DEFAULT; + module_ctx->module_dgst_pos0 = module_dgst_pos0; + module_ctx->module_dgst_pos1 = module_dgst_pos1; + module_ctx->module_dgst_pos2 = module_dgst_pos2; + module_ctx->module_dgst_pos3 = module_dgst_pos3; + module_ctx->module_dgst_size = module_dgst_size; + module_ctx->module_dictstat_disable = MODULE_DEFAULT; + module_ctx->module_esalt_size = module_esalt_size; + module_ctx->module_extra_buffer_size = scrypt_module_extra_buffer_size; + module_ctx->module_extra_tmp_size = scrypt_module_extra_tmp_size; + module_ctx->module_extra_tuningdb_block = scrypt_module_extra_tuningdb_block; + module_ctx->module_forced_outfile_format = MODULE_DEFAULT; + module_ctx->module_hash_binary_count = MODULE_DEFAULT; + module_ctx->module_hash_binary_parse = MODULE_DEFAULT; + module_ctx->module_hash_binary_save = MODULE_DEFAULT; + module_ctx->module_hash_decode_postprocess = MODULE_DEFAULT; + module_ctx->module_hash_decode_potfile = MODULE_DEFAULT; + module_ctx->module_hash_decode_zero_hash = MODULE_DEFAULT; + module_ctx->module_hash_decode = module_hash_decode; + module_ctx->module_hash_encode_status = MODULE_DEFAULT; + module_ctx->module_hash_encode_potfile = MODULE_DEFAULT; + module_ctx->module_hash_encode = module_hash_encode; + module_ctx->module_hash_init_selftest = MODULE_DEFAULT; + module_ctx->module_hash_mode = MODULE_DEFAULT; + module_ctx->module_hash_category = module_hash_category; + module_ctx->module_hash_name = module_hash_name; + module_ctx->module_hashes_count_min = MODULE_DEFAULT; + module_ctx->module_hashes_count_max = MODULE_DEFAULT; + module_ctx->module_hlfmt_disable = MODULE_DEFAULT; + module_ctx->module_hook_extra_param_size = MODULE_DEFAULT; + module_ctx->module_hook_extra_param_init = MODULE_DEFAULT; + module_ctx->module_hook_extra_param_term = MODULE_DEFAULT; + module_ctx->module_hook12 = MODULE_DEFAULT; + module_ctx->module_hook23 = MODULE_DEFAULT; + module_ctx->module_hook_salt_size = MODULE_DEFAULT; + module_ctx->module_hook_size = MODULE_DEFAULT; + module_ctx->module_jit_build_options = scrypt_module_jit_build_options; + module_ctx->module_jit_cache_disable = MODULE_DEFAULT; + module_ctx->module_kernel_accel_max = MODULE_DEFAULT; + module_ctx->module_kernel_accel_min = MODULE_DEFAULT; + module_ctx->module_kernel_loops_max = scrypt_module_kernel_loops_max; + module_ctx->module_kernel_loops_min = scrypt_module_kernel_loops_min; + module_ctx->module_kernel_threads_max = scrypt_module_kernel_threads_max; + module_ctx->module_kernel_threads_min = MODULE_DEFAULT; + module_ctx->module_kern_type = module_kern_type; + module_ctx->module_kern_type_dynamic = MODULE_DEFAULT; + module_ctx->module_opti_type = module_opti_type; + module_ctx->module_opts_type = module_opts_type; + module_ctx->module_outfile_check_disable = MODULE_DEFAULT; + module_ctx->module_outfile_check_nocomp = MODULE_DEFAULT; + module_ctx->module_potfile_custom_check = MODULE_DEFAULT; + module_ctx->module_potfile_disable = MODULE_DEFAULT; + module_ctx->module_potfile_keep_all_hashes = MODULE_DEFAULT; + module_ctx->module_pwdump_column = MODULE_DEFAULT; + module_ctx->module_pw_max = MODULE_DEFAULT; + module_ctx->module_pw_min = MODULE_DEFAULT; + module_ctx->module_salt_max = MODULE_DEFAULT; + module_ctx->module_salt_min = MODULE_DEFAULT; + module_ctx->module_salt_type = module_salt_type; + module_ctx->module_separator = MODULE_DEFAULT; + module_ctx->module_st_hash = module_st_hash; + module_ctx->module_st_pass = module_st_pass; + module_ctx->module_tmp_size = scrypt_module_tmp_size; + module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_warmup_disable = MODULE_DEFAULT; +} diff --git a/src/modules/module_24100.c b/src/modules/module_24100.c index a871090f0..c97b4b9ac 100644 --- a/src/modules/module_24100.c +++ b/src/modules/module_24100.c @@ -284,6 +284,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_24200.c b/src/modules/module_24200.c index 4ab9c2a09..8b6a8e5c8 100644 --- a/src/modules/module_24200.c +++ b/src/modules/module_24200.c @@ -324,6 +324,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_24300.c b/src/modules/module_24300.c index cad17a5b4..c4c90f502 100644 --- a/src/modules/module_24300.c +++ b/src/modules/module_24300.c @@ -150,6 +150,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_24410.c b/src/modules/module_24410.c index 44e3202f9..945ee1041 100644 --- a/src/modules/module_24410.c +++ b/src/modules/module_24410.c @@ -311,6 +311,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_24420.c b/src/modules/module_24420.c index 7bd0e1e05..39820834a 100644 --- a/src/modules/module_24420.c +++ b/src/modules/module_24420.c @@ -311,6 +311,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_24500.c b/src/modules/module_24500.c index f95cdbef5..3b4e6159b 100644 --- a/src/modules/module_24500.c +++ b/src/modules/module_24500.c @@ -23,8 +23,7 @@ static const u32 OPTI_TYPE = OPTI_TYPE_ZERO_BYTE | OPTI_TYPE_USES_BITS_64 | OPTI_TYPE_SLOW_HASH_SIMD_LOOP; static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE - | OPTS_TYPE_PT_GENERATE_LE - | OPTS_TYPE_MP_MULTI_DISABLE; + | OPTS_TYPE_PT_GENERATE_LE; static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; static const char *ST_PASS = "hashcat"; static const char *ST_HASH = "$telegram$2*100000*77461dcb457ce9539f8e4235d33bd12455b4a38446e63b52ecdf2e7b65af4476*f705dda3247df6d690dfc7f44d8c666979737cae9505d961130071bcc18eeadaef0320ac6985e4a116834c0761e55314464aae56dadb8f80ab8886c16f72f8b95adca08b56a60c4303d84210f75cfd78a3e1a197c84a747988ce2e1b247397b61041823bdb33932714ba16ca7279e6c36b75d3f994479a469b50a7b2c7299a4d7aadb775fb030d3bb55ca77b7ce8ac2f5cf5eb7bdbcc10821b8953a4734b448060246e5bb93f130d6d3f2e28b9e04f2a064820be562274c040cd849f1473d45141559fc45da4c54abeaf5ca40d2d57f8f8e33bdb232c7279872f758b3fb452713b5d91c855383f7cec8376649a53b83951cf8edd519a99e91b8a6cb90153088e35d9fed332c7253771740f49f9dc40c7da50352656395bbfeae63e10f754d24a"; @@ -64,6 +63,23 @@ static const char *SIGNATURE_TELEGRAM = "$telegram$"; static const int DATA_LEN_TELEGRAM = 288; static const int SALT_LEN_TELEGRAM = 32; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm24500_init' pipeline, timeout reached + return true; + } + } + } + + return false; +} + u64 module_esalt_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const u64 esalt_size = (const u64) sizeof (telegram_t); @@ -244,6 +260,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -309,6 +327,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_24600.c b/src/modules/module_24600.c index 838d61245..b6f14509a 100644 --- a/src/modules/module_24600.c +++ b/src/modules/module_24600.c @@ -287,6 +287,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_24700.c b/src/modules/module_24700.c index 24b41cf61..2b8cfed86 100644 --- a/src/modules/module_24700.c +++ b/src/modules/module_24700.c @@ -123,6 +123,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_24800.c b/src/modules/module_24800.c index fff6a347b..18db19378 100644 --- a/src/modules/module_24800.c +++ b/src/modules/module_24800.c @@ -122,6 +122,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_24900.c b/src/modules/module_24900.c index d3e419861..4b288cc41 100644 --- a/src/modules/module_24900.c +++ b/src/modules/module_24900.c @@ -163,6 +163,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_25000.c b/src/modules/module_25000.c index c3249420d..ebafcb331 100644 --- a/src/modules/module_25000.c +++ b/src/modules/module_25000.c @@ -23,6 +23,7 @@ static const char *HASH_NAME = "SNMPv3 HMAC-MD5-96/HMAC-SHA1-96"; static const u64 KERN_TYPE = 25000; static const u32 OPTI_TYPE = OPTI_TYPE_ZERO_BYTE; static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE + | OPTS_TYPE_NATIVE_THREADS | OPTS_TYPE_PT_GENERATE_LE; static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; static const char *ST_PASS = "hashcat1"; @@ -83,11 +84,23 @@ typedef struct snmpv3 bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) { - if (device_param->opencl_device_vendor_id == VENDOR_ID_INTEL_SDK) + if ((device_param->opencl_device_vendor_id == VENDOR_ID_INTEL_SDK) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) { return true; } + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: self-test failed + return true; + } + } + } + return false; } @@ -282,6 +295,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_25100.c b/src/modules/module_25100.c index eaa7ba048..29e2592e9 100644 --- a/src/modules/module_25100.c +++ b/src/modules/module_25100.c @@ -23,6 +23,7 @@ static const char *HASH_NAME = "SNMPv3 HMAC-MD5-96"; static const u64 KERN_TYPE = 25100; static const u32 OPTI_TYPE = OPTI_TYPE_ZERO_BYTE; static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE + | OPTS_TYPE_NATIVE_THREADS | OPTS_TYPE_PT_GENERATE_LE; static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; static const char *ST_PASS = "hashcat1"; @@ -79,11 +80,23 @@ typedef struct snmpv3 bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) { - if (device_param->opencl_device_vendor_id == VENDOR_ID_INTEL_SDK) + if ((device_param->opencl_device_vendor_id == VENDOR_ID_INTEL_SDK) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) { return true; } + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: self-test failed + return true; + } + } + } + return false; } @@ -263,6 +276,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_25200.c b/src/modules/module_25200.c index 41131767d..27740b6bf 100644 --- a/src/modules/module_25200.c +++ b/src/modules/module_25200.c @@ -23,6 +23,7 @@ static const char *HASH_NAME = "SNMPv3 HMAC-SHA1-96"; static const u64 KERN_TYPE = 25200; static const u32 OPTI_TYPE = OPTI_TYPE_ZERO_BYTE; static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE + | OPTS_TYPE_NATIVE_THREADS | OPTS_TYPE_PT_GENERATE_LE; static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; static const char *ST_PASS = "hashcat1"; @@ -79,11 +80,23 @@ typedef struct snmpv3 bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) { - if (device_param->opencl_device_vendor_id == VENDOR_ID_INTEL_SDK) + if ((device_param->opencl_device_vendor_id == VENDOR_ID_INTEL_SDK) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) { return true; } + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: self-test failed + return true; + } + } + } + return false; } @@ -274,6 +287,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_25300.c b/src/modules/module_25300.c index d2d56bbd4..ab51bb57d 100644 --- a/src/modules/module_25300.c +++ b/src/modules/module_25300.c @@ -57,6 +57,23 @@ typedef struct office2016_tmp static const char *SIGNATURE_OFFICE2016_SHEETPROTECTION = "$office$2016$0$"; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm25300_init' pipeline, Compilation failed + return true; + } + } + } + + return false; +} + char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) { char *jit_build_options = NULL; @@ -250,6 +267,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -315,6 +334,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_25400.c b/src/modules/module_25400.c index 8dc70b479..c7c3a0bd3 100644 --- a/src/modules/module_25400.c +++ b/src/modules/module_25400.c @@ -82,6 +82,20 @@ typedef struct pdf14_tmp static const char *SIGNATURE_PDF = "$pdf$"; +u32 module_kernel_loops_min (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) +{ + const u32 kernel_loops_min = 70; + + return kernel_loops_min; +} + +u32 module_kernel_loops_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) +{ + const u32 kernel_loops_max = 70; + + return kernel_loops_max; +} + static void md5_complete_no_limit (u32 digest[4], const u32 *plain, const u32 plain_len) { // plain = u32 tmp_md5_buf[64] so this is compatible @@ -98,6 +112,23 @@ static void md5_complete_no_limit (u32 digest[4], const u32 *plain, const u32 pl digest[3] = md5_ctx.h[3]; } +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: self-test failed + return true; + } + } + } + + return false; +} + char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) { char *jit_build_options = NULL; @@ -654,6 +685,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = module_build_plain_postprocess; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -696,8 +729,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_jit_cache_disable = MODULE_DEFAULT; module_ctx->module_kernel_accel_max = MODULE_DEFAULT; module_ctx->module_kernel_accel_min = MODULE_DEFAULT; - module_ctx->module_kernel_loops_max = MODULE_DEFAULT; - module_ctx->module_kernel_loops_min = MODULE_DEFAULT; + module_ctx->module_kernel_loops_max = module_kernel_loops_max; + module_ctx->module_kernel_loops_min = module_kernel_loops_min; module_ctx->module_kernel_threads_max = MODULE_DEFAULT; module_ctx->module_kernel_threads_min = MODULE_DEFAULT; module_ctx->module_kern_type = module_kern_type; @@ -719,6 +752,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_25500.c b/src/modules/module_25500.c index 9e2305f84..afc451fb9 100644 --- a/src/modules/module_25500.c +++ b/src/modules/module_25500.c @@ -304,6 +304,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_25600.c b/src/modules/module_25600.c index dc6ec869c..dffc6068c 100644 --- a/src/modules/module_25600.c +++ b/src/modules/module_25600.c @@ -288,6 +288,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_25700.c b/src/modules/module_25700.c index 30b0df8d5..a00013a64 100644 --- a/src/modules/module_25700.c +++ b/src/modules/module_25700.c @@ -125,6 +125,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_25800.c b/src/modules/module_25800.c index 89c4251b6..fcdb994eb 100644 --- a/src/modules/module_25800.c +++ b/src/modules/module_25800.c @@ -288,6 +288,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_25900.c b/src/modules/module_25900.c index 898fc5b52..7ad951f6d 100644 --- a/src/modules/module_25900.c +++ b/src/modules/module_25900.c @@ -264,6 +264,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = module_deep_comp_kernel; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_26000.c b/src/modules/module_26000.c index 2d7ea5f7b..35a6dd937 100644 --- a/src/modules/module_26000.c +++ b/src/modules/module_26000.c @@ -22,8 +22,7 @@ static const u64 KERN_TYPE = 26000; static const u32 OPTI_TYPE = OPTI_TYPE_ZERO_BYTE | OPTI_TYPE_NOT_ITERATED; static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE - | OPTS_TYPE_PT_GENERATE_BE - | OPTS_TYPE_MAXIMUM_THREADS; + | OPTS_TYPE_PT_GENERATE_BE; static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; static const char *ST_PASS = "hashcat"; static const char *ST_HASH = "$mozilla$*3DES*b735d19e6cadb5136376a98c2369f22819d08c79*2b36961682200a877f7d5550975b614acc9fefe3*f03f3575fd5bdbc9e32232316eab7623"; @@ -196,6 +195,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_26100.c b/src/modules/module_26100.c index 91a170b44..c42958289 100644 --- a/src/modules/module_26100.c +++ b/src/modules/module_26100.c @@ -250,6 +250,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_26200.c b/src/modules/module_26200.c index bed7b39c5..90f5f49ea 100644 --- a/src/modules/module_26200.c +++ b/src/modules/module_26200.c @@ -43,6 +43,23 @@ u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig, const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; } const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; } +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: self-test failed + return true; + } + } + } + + return false; +} + u32 module_pw_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const u32 pw_max = 16; @@ -146,6 +163,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -211,6 +230,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = MODULE_DEFAULT; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_26300.c b/src/modules/module_26300.c index 0a219af8a..994af2523 100644 --- a/src/modules/module_26300.c +++ b/src/modules/module_26300.c @@ -200,6 +200,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_26401.c b/src/modules/module_26401.c index 108fb1697..7add8f50f 100644 --- a/src/modules/module_26401.c +++ b/src/modules/module_26401.c @@ -132,6 +132,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_26402.c b/src/modules/module_26402.c index f720ea3e7..c854479f7 100644 --- a/src/modules/module_26402.c +++ b/src/modules/module_26402.c @@ -132,6 +132,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_26403.c b/src/modules/module_26403.c index 7248f4a74..d36f4ec41 100644 --- a/src/modules/module_26403.c +++ b/src/modules/module_26403.c @@ -132,6 +132,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_26500.c b/src/modules/module_26500.c index 7e766f036..ea7df82aa 100644 --- a/src/modules/module_26500.c +++ b/src/modules/module_26500.c @@ -249,6 +249,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_26600.c b/src/modules/module_26600.c index 4f6d0de3b..926555e94 100644 --- a/src/modules/module_26600.c +++ b/src/modules/module_26600.c @@ -333,6 +333,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_26610.c b/src/modules/module_26610.c index 532246128..ef6f58d3a 100644 --- a/src/modules/module_26610.c +++ b/src/modules/module_26610.c @@ -313,6 +313,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = module_deep_comp_kernel; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_26700.c b/src/modules/module_26700.c index a568da5f4..63854c0d2 100644 --- a/src/modules/module_26700.c +++ b/src/modules/module_26700.c @@ -23,6 +23,7 @@ static const char *HASH_NAME = "SNMPv3 HMAC-SHA224-128"; static const u64 KERN_TYPE = 26700; static const u32 OPTI_TYPE = OPTI_TYPE_ZERO_BYTE; static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE + | OPTS_TYPE_NATIVE_THREADS | OPTS_TYPE_PT_GENERATE_LE; static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; static const char *ST_PASS = "hashcat1"; @@ -77,6 +78,23 @@ typedef struct snmpv3 } snmpv3_t; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: self-test failed + return true; + } + } + } + + return false; +} + u32 module_pw_min (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const u32 pw_min = 8; @@ -273,6 +291,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -338,6 +358,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_26800.c b/src/modules/module_26800.c index 152cfc723..024bfa636 100644 --- a/src/modules/module_26800.c +++ b/src/modules/module_26800.c @@ -23,6 +23,7 @@ static const char *HASH_NAME = "SNMPv3 HMAC-SHA256-192"; static const u64 KERN_TYPE = 26800; static const u32 OPTI_TYPE = OPTI_TYPE_ZERO_BYTE; static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE + | OPTS_TYPE_NATIVE_THREADS | OPTS_TYPE_PT_GENERATE_LE; static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; static const char *ST_PASS = "hashcat1"; @@ -77,6 +78,23 @@ typedef struct snmpv3 } snmpv3_t; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: self-test failed + return true; + } + } + } + + return false; +} + u32 module_pw_min (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const u32 pw_min = 8; @@ -281,6 +299,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -346,6 +366,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_26900.c b/src/modules/module_26900.c index 321bcca47..8d916ebf2 100644 --- a/src/modules/module_26900.c +++ b/src/modules/module_26900.c @@ -24,6 +24,7 @@ static const u64 KERN_TYPE = 26900; static const u32 OPTI_TYPE = OPTI_TYPE_ZERO_BYTE | OPTI_TYPE_USES_BITS_64; static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE + | OPTS_TYPE_NATIVE_THREADS | OPTS_TYPE_PT_GENERATE_LE; static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; static const char *ST_PASS = "hashcat1"; @@ -87,12 +88,23 @@ u32 module_pw_min (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED con bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) { - if (device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) { - // self-test failed - if ((device_param->opencl_device_vendor_id == VENDOR_ID_AMD) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + if (device_param->is_metal == true) { - return true; + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: self-test failed + return true; + } + } + else + { + // self-test failed + if (device_param->opencl_device_vendor_id == VENDOR_ID_AMD) + { + return true; + } } } @@ -330,6 +342,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_27000.c b/src/modules/module_27000.c index bf5a190bb..672800eed 100644 --- a/src/modules/module_27000.c +++ b/src/modules/module_27000.c @@ -28,7 +28,6 @@ static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE | OPTS_TYPE_PT_ADDBITS14 | OPTS_TYPE_PT_UTF16LE | OPTS_TYPE_ST_HEX - | OPTS_TYPE_MAXIMUM_THREADS | OPTS_TYPE_AUTODETECT_DISABLE; static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; static const char *ST_PASS = "b4b9b02e6f09a9bd760f388b67351e2b"; @@ -445,6 +444,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = module_benchmark_mask; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_27100.c b/src/modules/module_27100.c index b11a961d1..1c981fbc1 100644 --- a/src/modules/module_27100.c +++ b/src/modules/module_27100.c @@ -28,7 +28,6 @@ static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE | OPTS_TYPE_PT_ADDBITS14 | OPTS_TYPE_PT_UTF16LE | OPTS_TYPE_ST_HEX - | OPTS_TYPE_MAXIMUM_THREADS | OPTS_TYPE_AUTODETECT_DISABLE; static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; static const char *ST_PASS = "b4b9b02e6f09a9bd760f388b67351e2b"; @@ -343,6 +342,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = module_benchmark_mask; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_27200.c b/src/modules/module_27200.c index ffa2c6c8b..8be60f93a 100644 --- a/src/modules/module_27200.c +++ b/src/modules/module_27200.c @@ -190,6 +190,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_27300.c b/src/modules/module_27300.c index 277be0c1a..ff20acc9d 100644 --- a/src/modules/module_27300.c +++ b/src/modules/module_27300.c @@ -24,6 +24,7 @@ static const u64 KERN_TYPE = 27300; static const u32 OPTI_TYPE = OPTI_TYPE_ZERO_BYTE | OPTI_TYPE_USES_BITS_64; static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE + | OPTS_TYPE_NATIVE_THREADS | OPTS_TYPE_PT_GENERATE_LE; static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; static const char *ST_PASS = "hashcat1"; @@ -87,12 +88,23 @@ u32 module_pw_min (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED con bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) { - if (device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) { - // self-test failed - if ((device_param->opencl_device_vendor_id == VENDOR_ID_AMD) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + if (device_param->is_metal == true) { - return true; + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: self-test failed + return true; + } + } + else + { + // self-test failed + if (device_param->opencl_device_vendor_id == VENDOR_ID_AMD) + { + return true; + } } } @@ -326,6 +338,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_27400.c b/src/modules/module_27400.c index f0368c6b5..7d9f0fbd4 100644 --- a/src/modules/module_27400.c +++ b/src/modules/module_27400.c @@ -239,6 +239,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_27500.c b/src/modules/module_27500.c index 24ea388fd..ebabe24e5 100644 --- a/src/modules/module_27500.c +++ b/src/modules/module_27500.c @@ -364,6 +364,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = module_benchmark_salt; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_27600.c b/src/modules/module_27600.c index 4f2feccd7..b4cdade54 100644 --- a/src/modules/module_27600.c +++ b/src/modules/module_27600.c @@ -380,6 +380,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = module_benchmark_salt; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_27700.c b/src/modules/module_27700.c index 10ecefe70..837418626 100644 --- a/src/modules/module_27700.c +++ b/src/modules/module_27700.c @@ -10,6 +10,7 @@ #include "bitops.h" #include "convert.h" #include "shared.h" +#include "memory.h" static const u32 ATTACK_EXEC = ATTACK_EXEC_OUTSIDE_KERNEL; static const u32 DGST_POS0 = 0; @@ -25,8 +26,7 @@ static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE | OPTS_TYPE_PT_GENERATE_LE | OPTS_TYPE_MP_MULTI_DISABLE | OPTS_TYPE_NATIVE_THREADS - | OPTS_TYPE_LOOP_PREPARE - | OPTS_TYPE_SELF_TEST_DISABLE; + | OPTS_TYPE_LOOP_PREPARE; static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; static const char *ST_PASS = "hashcat"; static const char *ST_HASH = "$multibit$3*16384*8*1*7523cb5482e81b81*91780fd49b81a782ab840157a69ba7996d81270eaf456c850f314fc1787d9b0b"; @@ -48,222 +48,9 @@ const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, static const char *SIGNATURE_MULTIBIT = "$multibit$"; -static const u64 SCRYPT_N = 16384; -static const u64 SCRYPT_R = 8; -static const u64 SCRYPT_P = 1; +static const u32 SCRYPT_THREADS = 32; -u32 module_kernel_loops_min (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) -{ - const u32 kernel_loops_min = 1024; - - return kernel_loops_min; -} - -u32 module_kernel_loops_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) -{ - const u32 kernel_loops_max = 1024; - - return kernel_loops_max; -} - -u32 module_kernel_threads_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) -{ - const u32 kernel_threads_max = 32; - - return kernel_threads_max; -} - -u32 module_pw_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) -{ - // this overrides the reductions of PW_MAX in case optimized kernel is selected - // IOW, even in optimized kernel mode it support length 256 - - const u32 pw_max = PW_MAX; - - return pw_max; -} - -u64 module_extra_buffer_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - // we need to set the self-test hash settings to pass the self-test - // the decoder for the self-test is called after this function - - const u64 scrypt_N = (hashes->salts_buf[0].scrypt_N) ? hashes->salts_buf[0].scrypt_N : SCRYPT_N; - const u64 scrypt_r = (hashes->salts_buf[0].scrypt_r) ? hashes->salts_buf[0].scrypt_r : SCRYPT_R; - - const u64 kernel_power_max = ((OPTS_TYPE & OPTS_TYPE_MP_MULTI_DISABLE) ? 1 : device_param->device_processors) * device_param->kernel_threads_max * device_param->kernel_accel_max; - - u64 tmto_start = 0; - u64 tmto_stop = 4; - - if (user_options->scrypt_tmto_chgd == true) - { - tmto_start = user_options->scrypt_tmto; - tmto_stop = user_options->scrypt_tmto; - } - - // size_pws - - const u64 size_pws = kernel_power_max * sizeof (pw_t); - - const u64 size_pws_amp = size_pws; - - // size_pws_comp - - const u64 size_pws_comp = kernel_power_max * (sizeof (u32) * 64); - - // size_pws_idx - - const u64 size_pws_idx = (kernel_power_max + 1) * sizeof (pw_idx_t); - - // size_tmps - - const u64 size_tmps = kernel_power_max * hashconfig->tmp_size; - - // size_hooks - - const u64 size_hooks = kernel_power_max * hashconfig->hook_size; - - u64 size_pws_pre = 4; - u64 size_pws_base = 4; - - if (user_options->slow_candidates == true) - { - // size_pws_pre - - size_pws_pre = kernel_power_max * sizeof (pw_pre_t); - - // size_pws_base - - size_pws_base = kernel_power_max * sizeof (pw_pre_t); - } - - // sometimes device_available_mem and device_maxmem_alloc reported back from the opencl runtime are a bit inaccurate. - // let's add some extra space just to be sure. - // now depends on the kernel-accel value (where scrypt and similar benefits), but also hard minimum 64mb and maximum 1024mb limit - - u64 EXTRA_SPACE = (1024ULL * 1024ULL) * device_param->kernel_accel_max; - - EXTRA_SPACE = MAX (EXTRA_SPACE, ( 64ULL * 1024ULL * 1024ULL)); - EXTRA_SPACE = MIN (EXTRA_SPACE, (1024ULL * 1024ULL * 1024ULL)); - - const u64 scrypt_extra_space - = device_param->size_bfs - + device_param->size_combs - + device_param->size_digests - + device_param->size_esalts - + device_param->size_markov_css - + device_param->size_plains - + device_param->size_results - + device_param->size_root_css - + device_param->size_rules - + device_param->size_rules_c - + device_param->size_salts - + device_param->size_shown - + device_param->size_tm - + device_param->size_st_digests - + device_param->size_st_salts - + device_param->size_st_esalts - + size_pws - + size_pws_amp - + size_pws_comp - + size_pws_idx - + size_tmps - + size_hooks - + size_pws_pre - + size_pws_base - + EXTRA_SPACE; - - bool not_enough_memory = true; - - u64 size_scrypt = 0; - - u64 tmto; - - for (tmto = tmto_start; tmto <= tmto_stop; tmto++) - { - size_scrypt = (128ULL * scrypt_r) * scrypt_N; - - size_scrypt /= 1ull << tmto; - - size_scrypt *= kernel_power_max; - - if ((size_scrypt / 4) > device_param->device_maxmem_alloc) continue; - - if ((size_scrypt + scrypt_extra_space) > device_param->device_available_mem) continue; - - not_enough_memory = false; - - break; - } - - if (not_enough_memory == true) return -1; - - return size_scrypt; -} - -u64 module_tmp_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) -{ - const u64 tmp_size = 0; // we'll add some later - - return tmp_size; -} - -u64 module_extra_tmp_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes) -{ - const u64 scrypt_N = (hashes->salts_buf[0].scrypt_N) ? hashes->salts_buf[0].scrypt_N : SCRYPT_N; - const u64 scrypt_r = (hashes->salts_buf[0].scrypt_r) ? hashes->salts_buf[0].scrypt_r : SCRYPT_R; - const u64 scrypt_p = (hashes->salts_buf[0].scrypt_p) ? hashes->salts_buf[0].scrypt_p : SCRYPT_P; - - // we need to check that all hashes have the same scrypt settings - - for (u32 i = 1; i < hashes->salts_cnt; i++) - { - if ((hashes->salts_buf[i].scrypt_N != scrypt_N) - || (hashes->salts_buf[i].scrypt_r != scrypt_r) - || (hashes->salts_buf[i].scrypt_p != scrypt_p)) - { - return -1; - } - } - - const u64 tmp_size = 128ULL * scrypt_r * scrypt_p; - - return tmp_size; -} - -bool module_warmup_disable (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) -{ - return true; -} - -char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - const u64 scrypt_N = (hashes->salts_buf[0].scrypt_N) ? hashes->salts_buf[0].scrypt_N : SCRYPT_N; - const u64 scrypt_r = (hashes->salts_buf[0].scrypt_r) ? hashes->salts_buf[0].scrypt_r : SCRYPT_R; - const u64 scrypt_p = (hashes->salts_buf[0].scrypt_p) ? hashes->salts_buf[0].scrypt_p : SCRYPT_P; - - const u64 extra_buffer_size = device_param->extra_buffer_size; - - const u64 kernel_power_max = ((OPTS_TYPE & OPTS_TYPE_MP_MULTI_DISABLE) ? 1 : device_param->device_processors) * device_param->kernel_threads_max * device_param->kernel_accel_max; - - const u64 size_scrypt = 128ULL * scrypt_r * scrypt_N; - - const u64 scrypt_tmto_final = (kernel_power_max * size_scrypt) / extra_buffer_size; - - const u64 tmp_size = 128ULL * scrypt_r * scrypt_p; - - char *jit_build_options = NULL; - - hc_asprintf (&jit_build_options, "-D SCRYPT_N=%u -D SCRYPT_R=%u -D SCRYPT_P=%u -D SCRYPT_TMTO=%" PRIu64 " -D SCRYPT_TMP_ELEM=%" PRIu64, - hashes->salts_buf[0].scrypt_N, - hashes->salts_buf[0].scrypt_r, - hashes->salts_buf[0].scrypt_p, - scrypt_tmto_final, - tmp_size / 16); - - return jit_build_options; -} +#include "scrypt_common.c" int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED void *digest_buf, MAYBE_UNUSED salt_t *salt, MAYBE_UNUSED void *esalt_buf, MAYBE_UNUSED void *hook_salt_buf, MAYBE_UNUSED hashinfo_t *hash_info, const char *line_buf, MAYBE_UNUSED const int line_len) { @@ -415,6 +202,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -425,9 +214,9 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_dgst_size = module_dgst_size; module_ctx->module_dictstat_disable = MODULE_DEFAULT; module_ctx->module_esalt_size = MODULE_DEFAULT; - module_ctx->module_extra_buffer_size = module_extra_buffer_size; - module_ctx->module_extra_tmp_size = module_extra_tmp_size; - module_ctx->module_extra_tuningdb_block = MODULE_DEFAULT; + module_ctx->module_extra_buffer_size = scrypt_module_extra_buffer_size; + module_ctx->module_extra_tmp_size = scrypt_module_extra_tmp_size; + module_ctx->module_extra_tuningdb_block = scrypt_module_extra_tuningdb_block; module_ctx->module_forced_outfile_format = MODULE_DEFAULT; module_ctx->module_hash_binary_count = MODULE_DEFAULT; module_ctx->module_hash_binary_parse = MODULE_DEFAULT; @@ -453,13 +242,13 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_hook23 = MODULE_DEFAULT; module_ctx->module_hook_salt_size = MODULE_DEFAULT; module_ctx->module_hook_size = MODULE_DEFAULT; - module_ctx->module_jit_build_options = module_jit_build_options; + module_ctx->module_jit_build_options = scrypt_module_jit_build_options; module_ctx->module_jit_cache_disable = MODULE_DEFAULT; module_ctx->module_kernel_accel_max = MODULE_DEFAULT; module_ctx->module_kernel_accel_min = MODULE_DEFAULT; - module_ctx->module_kernel_loops_max = module_kernel_loops_max; - module_ctx->module_kernel_loops_min = module_kernel_loops_min; - module_ctx->module_kernel_threads_max = module_kernel_threads_max; + module_ctx->module_kernel_loops_max = scrypt_module_kernel_loops_max; + module_ctx->module_kernel_loops_min = scrypt_module_kernel_loops_min; + module_ctx->module_kernel_threads_max = scrypt_module_kernel_threads_max; module_ctx->module_kernel_threads_min = MODULE_DEFAULT; module_ctx->module_kern_type = module_kern_type; module_ctx->module_kern_type_dynamic = MODULE_DEFAULT; @@ -471,7 +260,7 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_potfile_disable = MODULE_DEFAULT; module_ctx->module_potfile_keep_all_hashes = MODULE_DEFAULT; module_ctx->module_pwdump_column = MODULE_DEFAULT; - module_ctx->module_pw_max = module_pw_max; + module_ctx->module_pw_max = MODULE_DEFAULT; module_ctx->module_pw_min = MODULE_DEFAULT; module_ctx->module_salt_max = MODULE_DEFAULT; module_ctx->module_salt_min = MODULE_DEFAULT; @@ -479,7 +268,7 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_separator = MODULE_DEFAULT; module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; - module_ctx->module_tmp_size = module_tmp_size; + module_ctx->module_tmp_size = scrypt_module_tmp_size; module_ctx->module_unstable_warning = MODULE_DEFAULT; - module_ctx->module_warmup_disable = module_warmup_disable; + module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_27800.c b/src/modules/module_27800.c index f5bf82a46..b78bebd3e 100644 --- a/src/modules/module_27800.c +++ b/src/modules/module_27800.c @@ -125,6 +125,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_27900.c b/src/modules/module_27900.c index ea06e0f2c..c610e73f2 100644 --- a/src/modules/module_27900.c +++ b/src/modules/module_27900.c @@ -115,6 +115,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_28000.c b/src/modules/module_28000.c index 90cf643ce..dade598c1 100644 --- a/src/modules/module_28000.c +++ b/src/modules/module_28000.c @@ -136,6 +136,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_28100.c b/src/modules/module_28100.c index 88e8b7e74..502aef425 100644 --- a/src/modules/module_28100.c +++ b/src/modules/module_28100.c @@ -72,6 +72,23 @@ typedef struct winhello_tmp static const char *SIGNATURE_WINHELLO = "$WINHELLO$"; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm28100_comp' pipeline, timeout reached + return true; + } + } + } + + return false; +} + u64 module_esalt_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const u64 esalt_size = (const u64) sizeof (winhello_t); @@ -386,6 +403,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -451,6 +470,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_28200.c b/src/modules/module_28200.c index dd3ce7998..a8540a1c9 100644 --- a/src/modules/module_28200.c +++ b/src/modules/module_28200.c @@ -10,6 +10,7 @@ #include "bitops.h" #include "convert.h" #include "shared.h" +#include "memory.h" static const u32 ATTACK_EXEC = ATTACK_EXEC_OUTSIDE_KERNEL; static const u32 DGST_POS0 = 0; @@ -25,8 +26,7 @@ static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE | OPTS_TYPE_PT_GENERATE_LE | OPTS_TYPE_MP_MULTI_DISABLE | OPTS_TYPE_NATIVE_THREADS - | OPTS_TYPE_LOOP_PREPARE - | OPTS_TYPE_SELF_TEST_DISABLE; + | OPTS_TYPE_LOOP_PREPARE; static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; static const char *ST_PASS = "hashcat"; static const char *ST_HASH = "EXODUS:16384:8:1:IYkXZgFETRmFp4wQXyP8XMe3LtuOw8wMdLcBVQ+9YWE=:lq0W9ekN5sC0O7Xw:UD4a6mUUhkTbQtGWitXHZUg0pQ4RHI6W/KUyYE95m3k=:ZuNQckXOtr4r21x+DT1zpQ=="; @@ -56,30 +56,9 @@ typedef struct exodus static const char *SIGNATURE_EXODUS = "EXODUS"; -static const u64 SCRYPT_N = 16384; -static const u64 SCRYPT_R = 8; -static const u64 SCRYPT_P = 1; +static const u32 SCRYPT_THREADS = 32; -u32 module_kernel_loops_min (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) -{ - const u32 kernel_loops_min = 1024; - - return kernel_loops_min; -} - -u32 module_kernel_loops_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) -{ - const u32 kernel_loops_max = 1024; - - return kernel_loops_max; -} - -u32 module_kernel_threads_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) -{ - const u32 kernel_threads_max = 32; - - return kernel_threads_max; -} +#include "scrypt_common.c" u32 module_pw_min (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { @@ -95,188 +74,6 @@ u64 module_esalt_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED return esalt_size; } -u64 module_extra_buffer_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - // we need to set the self-test hash settings to pass the self-test - // the decoder for the self-test is called after this function - - const u64 scrypt_N = (hashes->salts_buf[0].scrypt_N) ? hashes->salts_buf[0].scrypt_N : SCRYPT_N; - const u64 scrypt_r = (hashes->salts_buf[0].scrypt_r) ? hashes->salts_buf[0].scrypt_r : SCRYPT_R; - - const u64 kernel_power_max = ((OPTS_TYPE & OPTS_TYPE_MP_MULTI_DISABLE) ? 1 : device_param->device_processors) * device_param->kernel_threads_max * device_param->kernel_accel_max; - - u64 tmto_start = 0; - u64 tmto_stop = 4; - - if (user_options->scrypt_tmto_chgd == true) - { - tmto_start = user_options->scrypt_tmto; - tmto_stop = user_options->scrypt_tmto; - } - - // size_pws - - const u64 size_pws = kernel_power_max * sizeof (pw_t); - - const u64 size_pws_amp = size_pws; - - // size_pws_comp - - const u64 size_pws_comp = kernel_power_max * (sizeof (u32) * 64); - - // size_pws_idx - - const u64 size_pws_idx = (kernel_power_max + 1) * sizeof (pw_idx_t); - - // size_tmps - - const u64 size_tmps = kernel_power_max * hashconfig->tmp_size; - - // size_hooks - - const u64 size_hooks = kernel_power_max * hashconfig->hook_size; - - u64 size_pws_pre = 4; - u64 size_pws_base = 4; - - if (user_options->slow_candidates == true) - { - // size_pws_pre - - size_pws_pre = kernel_power_max * sizeof (pw_pre_t); - - // size_pws_base - - size_pws_base = kernel_power_max * sizeof (pw_pre_t); - } - - // sometimes device_available_mem and device_maxmem_alloc reported back from the opencl runtime are a bit inaccurate. - // let's add some extra space just to be sure. - // now depends on the kernel-accel value (where scrypt and similar benefits), but also hard minimum 64mb and maximum 1024mb limit - - u64 EXTRA_SPACE = (1024ULL * 1024ULL) * device_param->kernel_accel_max; - - EXTRA_SPACE = MAX (EXTRA_SPACE, ( 64ULL * 1024ULL * 1024ULL)); - EXTRA_SPACE = MIN (EXTRA_SPACE, (1024ULL * 1024ULL * 1024ULL)); - - const u64 scrypt_extra_space - = device_param->size_bfs - + device_param->size_combs - + device_param->size_digests - + device_param->size_esalts - + device_param->size_markov_css - + device_param->size_plains - + device_param->size_results - + device_param->size_root_css - + device_param->size_rules - + device_param->size_rules_c - + device_param->size_salts - + device_param->size_shown - + device_param->size_tm - + device_param->size_st_digests - + device_param->size_st_salts - + device_param->size_st_esalts - + size_pws - + size_pws_amp - + size_pws_comp - + size_pws_idx - + size_tmps - + size_hooks - + size_pws_pre - + size_pws_base - + EXTRA_SPACE; - - bool not_enough_memory = true; - - u64 size_scrypt = 0; - - u64 tmto; - - for (tmto = tmto_start; tmto <= tmto_stop; tmto++) - { - size_scrypt = (128ULL * scrypt_r) * scrypt_N; - - size_scrypt /= 1ull << tmto; - - size_scrypt *= kernel_power_max; - - if ((size_scrypt / 4) > device_param->device_maxmem_alloc) continue; - - if ((size_scrypt + scrypt_extra_space) > device_param->device_available_mem) continue; - - not_enough_memory = false; - - break; - } - - if (not_enough_memory == true) return -1; - - return size_scrypt; -} - -u64 module_tmp_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) -{ - const u64 tmp_size = 0; // we'll add some later - - return tmp_size; -} - -u64 module_extra_tmp_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes) -{ - const u64 scrypt_N = (hashes->salts_buf[0].scrypt_N) ? hashes->salts_buf[0].scrypt_N : SCRYPT_N; - const u64 scrypt_r = (hashes->salts_buf[0].scrypt_r) ? hashes->salts_buf[0].scrypt_r : SCRYPT_R; - const u64 scrypt_p = (hashes->salts_buf[0].scrypt_p) ? hashes->salts_buf[0].scrypt_p : SCRYPT_P; - - // we need to check that all hashes have the same scrypt settings - - for (u32 i = 1; i < hashes->salts_cnt; i++) - { - if ((hashes->salts_buf[i].scrypt_N != scrypt_N) - || (hashes->salts_buf[i].scrypt_r != scrypt_r) - || (hashes->salts_buf[i].scrypt_p != scrypt_p)) - { - return -1; - } - } - - const u64 tmp_size = 128ULL * scrypt_r * scrypt_p; - - return tmp_size; -} - -bool module_warmup_disable (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) -{ - return true; -} - -char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - const u64 scrypt_N = (hashes->salts_buf[0].scrypt_N) ? hashes->salts_buf[0].scrypt_N : SCRYPT_N; - const u64 scrypt_r = (hashes->salts_buf[0].scrypt_r) ? hashes->salts_buf[0].scrypt_r : SCRYPT_R; - const u64 scrypt_p = (hashes->salts_buf[0].scrypt_p) ? hashes->salts_buf[0].scrypt_p : SCRYPT_P; - - const u64 extra_buffer_size = device_param->extra_buffer_size; - - const u64 kernel_power_max = ((OPTS_TYPE & OPTS_TYPE_MP_MULTI_DISABLE) ? 1 : device_param->device_processors) * device_param->kernel_threads_max * device_param->kernel_accel_max; - - const u64 size_scrypt = 128ULL * scrypt_r * scrypt_N; - - const u64 scrypt_tmto_final = (kernel_power_max * size_scrypt) / extra_buffer_size; - - const u64 tmp_size = 128ULL * scrypt_r * scrypt_p; - - char *jit_build_options = NULL; - - hc_asprintf (&jit_build_options, "-D SCRYPT_N=%u -D SCRYPT_R=%u -D SCRYPT_P=%u -D SCRYPT_TMTO=%" PRIu64 " -D SCRYPT_TMP_ELEM=%" PRIu64, - hashes->salts_buf[0].scrypt_N, - hashes->salts_buf[0].scrypt_r, - hashes->salts_buf[0].scrypt_p, - scrypt_tmto_final, - tmp_size / 16); - - return jit_build_options; -} - int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED void *digest_buf, MAYBE_UNUSED salt_t *salt, MAYBE_UNUSED void *esalt_buf, MAYBE_UNUSED void *hook_salt_buf, MAYBE_UNUSED hashinfo_t *hash_info, const char *line_buf, MAYBE_UNUSED const int line_len) { u32 *digest = (u32 *) digest_buf; @@ -366,7 +163,8 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE memcpy (salt->salt_buf, tmp_buf, tmp_len); - for (int i = 0; i < 8; i++) salt->salt_buf[i] = byte_swap_32 (salt->salt_buf[i]); + //for (int i = 0; i < 8; i++) salt->salt_buf[i] = byte_swap_32 (salt->salt_buf[i]); + for (int i = 0; i < 8; i++) salt->salt_buf[i] = salt->salt_buf[i]; salt->salt_len = tmp_len; @@ -429,7 +227,8 @@ int module_hash_encode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE u32 tmp_salt[8] = { 0 }; - for (int i = 0; i < 8; i++) tmp_salt[i] = byte_swap_32 (salt->salt_buf[i]); + //for (int i = 0; i < 8; i++) tmp_salt[i] = byte_swap_32 (salt->salt_buf[i]); + for (int i = 0; i < 8; i++) tmp_salt[i] = salt->salt_buf[i]; char base64_salt[64]; @@ -499,6 +298,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -509,9 +310,9 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_dgst_size = module_dgst_size; module_ctx->module_dictstat_disable = MODULE_DEFAULT; module_ctx->module_esalt_size = module_esalt_size; - module_ctx->module_extra_buffer_size = module_extra_buffer_size; - module_ctx->module_extra_tmp_size = module_extra_tmp_size; - module_ctx->module_extra_tuningdb_block = MODULE_DEFAULT; + module_ctx->module_extra_buffer_size = scrypt_module_extra_buffer_size; + module_ctx->module_extra_tmp_size = scrypt_module_extra_tmp_size; + module_ctx->module_extra_tuningdb_block = scrypt_module_extra_tuningdb_block; module_ctx->module_forced_outfile_format = MODULE_DEFAULT; module_ctx->module_hash_binary_count = MODULE_DEFAULT; module_ctx->module_hash_binary_parse = MODULE_DEFAULT; @@ -537,13 +338,13 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_hook23 = MODULE_DEFAULT; module_ctx->module_hook_salt_size = MODULE_DEFAULT; module_ctx->module_hook_size = MODULE_DEFAULT; - module_ctx->module_jit_build_options = module_jit_build_options; + module_ctx->module_jit_build_options = scrypt_module_jit_build_options; module_ctx->module_jit_cache_disable = MODULE_DEFAULT; module_ctx->module_kernel_accel_max = MODULE_DEFAULT; module_ctx->module_kernel_accel_min = MODULE_DEFAULT; - module_ctx->module_kernel_loops_max = module_kernel_loops_max; - module_ctx->module_kernel_loops_min = module_kernel_loops_min; - module_ctx->module_kernel_threads_max = module_kernel_threads_max; + module_ctx->module_kernel_loops_max = scrypt_module_kernel_loops_max; + module_ctx->module_kernel_loops_min = scrypt_module_kernel_loops_min; + module_ctx->module_kernel_threads_max = scrypt_module_kernel_threads_max; module_ctx->module_kernel_threads_min = MODULE_DEFAULT; module_ctx->module_kern_type = module_kern_type; module_ctx->module_kern_type_dynamic = MODULE_DEFAULT; @@ -563,7 +364,7 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_separator = MODULE_DEFAULT; module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; - module_ctx->module_tmp_size = module_tmp_size; + module_ctx->module_tmp_size = scrypt_module_tmp_size; module_ctx->module_unstable_warning = MODULE_DEFAULT; - module_ctx->module_warmup_disable = module_warmup_disable; + module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_28300.c b/src/modules/module_28300.c index b820dd9cb..be8ca0de5 100644 --- a/src/modules/module_28300.c +++ b/src/modules/module_28300.c @@ -178,6 +178,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_28400.c b/src/modules/module_28400.c index fdb164cee..404ccf054 100644 --- a/src/modules/module_28400.c +++ b/src/modules/module_28400.c @@ -288,6 +288,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_28501.c b/src/modules/module_28501.c index 954590b15..764ac9b97 100644 --- a/src/modules/module_28501.c +++ b/src/modules/module_28501.c @@ -51,6 +51,23 @@ const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfi const char *module_benchmark_mask (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return BENCHMARK_MASK; } const char *module_benchmark_charset (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return BENCHMARK_CHARSET; } +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: self-test failed + return true; + } + } + } + + return false; +} + u32 module_pw_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return WIF_LEN; @@ -145,6 +162,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = module_benchmark_mask; module_ctx->module_benchmark_charset = module_benchmark_charset; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -210,6 +229,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = MODULE_DEFAULT; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_28502.c b/src/modules/module_28502.c index 3b910d9bf..793b99634 100644 --- a/src/modules/module_28502.c +++ b/src/modules/module_28502.c @@ -51,6 +51,23 @@ const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfi const char *module_benchmark_mask (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return BENCHMARK_MASK; } const char *module_benchmark_charset (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return BENCHMARK_CHARSET; } +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: self-test failed + return true; + } + } + } + + return false; +} + u32 module_pw_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return WIF_LEN; @@ -145,6 +162,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = module_benchmark_mask; module_ctx->module_benchmark_charset = module_benchmark_charset; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -210,6 +229,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = MODULE_DEFAULT; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_28503.c b/src/modules/module_28503.c index 53838e7e5..78618673b 100644 --- a/src/modules/module_28503.c +++ b/src/modules/module_28503.c @@ -47,6 +47,23 @@ const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfi const char *module_benchmark_mask (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return BENCHMARK_MASK; } const char *module_benchmark_charset (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return BENCHMARK_CHARSET; } +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: self-test failed + return true; + } + } + } + + return false; +} + u32 module_pw_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return WIF_LEN; @@ -327,6 +344,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = module_benchmark_mask; module_ctx->module_benchmark_charset = module_benchmark_charset; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -392,6 +411,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = MODULE_DEFAULT; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_28504.c b/src/modules/module_28504.c index 35539c49f..805beb3cf 100644 --- a/src/modules/module_28504.c +++ b/src/modules/module_28504.c @@ -47,6 +47,23 @@ const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfi const char *module_benchmark_mask (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return BENCHMARK_MASK; } const char *module_benchmark_charset (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return BENCHMARK_CHARSET; } +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: self-test failed + return true; + } + } + } + + return false; +} + u32 module_pw_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return WIF_LEN; @@ -327,6 +344,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = module_benchmark_mask; module_ctx->module_benchmark_charset = module_benchmark_charset; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -392,6 +411,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = MODULE_DEFAULT; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_28505.c b/src/modules/module_28505.c index 7c9ae9090..cee0ac61d 100644 --- a/src/modules/module_28505.c +++ b/src/modules/module_28505.c @@ -51,6 +51,23 @@ const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfi const char *module_benchmark_mask (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return BENCHMARK_MASK; } const char *module_benchmark_charset (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return BENCHMARK_CHARSET; } +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm28505_sxx' pipeline, timeout reached + return true; + } + } + } + + return false; +} + u32 module_pw_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return WIF_LEN; @@ -144,6 +161,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = module_benchmark_mask; module_ctx->module_benchmark_charset = module_benchmark_charset; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -209,6 +228,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = MODULE_DEFAULT; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_28506.c b/src/modules/module_28506.c index 7aac998d4..15dcdf554 100644 --- a/src/modules/module_28506.c +++ b/src/modules/module_28506.c @@ -51,6 +51,23 @@ const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfi const char *module_benchmark_mask (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return BENCHMARK_MASK; } const char *module_benchmark_charset (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return BENCHMARK_CHARSET; } +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm28506_sxx' pipeline, timeout reached + return true; + } + } + } + + return false; +} + u32 module_pw_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return WIF_LEN; @@ -144,6 +161,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = module_benchmark_mask; module_ctx->module_benchmark_charset = module_benchmark_charset; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -209,6 +228,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = MODULE_DEFAULT; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_28600.c b/src/modules/module_28600.c index b77869507..3a77867b9 100644 --- a/src/modules/module_28600.c +++ b/src/modules/module_28600.c @@ -338,6 +338,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_28700.c b/src/modules/module_28700.c index 4bf938a0f..4c88af250 100644 --- a/src/modules/module_28700.c +++ b/src/modules/module_28700.c @@ -363,6 +363,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_28800.c b/src/modules/module_28800.c index a1fe7825d..519299654 100644 --- a/src/modules/module_28800.c +++ b/src/modules/module_28800.c @@ -63,20 +63,6 @@ typedef struct krb5db_17_tmp static const char *SIGNATURE_KRB5DB = "$krb5db$17$"; -bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - // AMD Radeon Pro W5700X Compute Engine; 1.2 (Apr 22 2021 21:54:44); 11.3.1; 20E241 - if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) - { - if (device_param->is_metal == false) - { - return true; - } - } - - return false; -} - u64 module_tmp_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const u64 tmp_size = (const u64) sizeof (krb5db_17_tmp_t); @@ -265,6 +251,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -330,6 +318,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = module_unstable_warning; + module_ctx->module_unstable_warning = MODULE_DEFAULT; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_28900.c b/src/modules/module_28900.c index d0805d085..6f20f3c59 100644 --- a/src/modules/module_28900.c +++ b/src/modules/module_28900.c @@ -63,20 +63,6 @@ typedef struct krb5db_18_tmp static const char *SIGNATURE_KRB5DB = "$krb5db$18$"; -bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - // AMD Radeon Pro W5700X Compute Engine; 1.2 (Apr 22 2021 21:54:44); 11.3.1; 20E241 - if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) - { - if (device_param->is_metal == false) - { - return true; - } - } - - return false; -} - u64 module_tmp_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const u64 tmp_size = (const u64) sizeof (krb5db_18_tmp_t); @@ -274,6 +260,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -339,6 +327,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = module_unstable_warning; + module_ctx->module_unstable_warning = MODULE_DEFAULT; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_29000.c b/src/modules/module_29000.c index 7e9682cf4..32dae72c1 100644 --- a/src/modules/module_29000.c +++ b/src/modules/module_29000.c @@ -59,6 +59,23 @@ typedef struct sha1_double_salt } sha1_double_salt_t; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm29000_sxx' pipeline, timeout reached + return true; + } + } + } + + return false; +} + u64 module_esalt_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const u64 esalt_size = (const u64) sizeof (sha1_double_salt_t); @@ -217,6 +234,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -282,6 +301,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = MODULE_DEFAULT; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_29100.c b/src/modules/module_29100.c index 437cfcb89..81d09de47 100644 --- a/src/modules/module_29100.c +++ b/src/modules/module_29100.c @@ -151,6 +151,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = module_benchmark_salt; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_29200.c b/src/modules/module_29200.c index 5c57ca970..bd47d8534 100644 --- a/src/modules/module_29200.c +++ b/src/modules/module_29200.c @@ -64,6 +64,23 @@ typedef struct radmin3 } radmin3_t; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm29200_sxx' pipeline, timeout reached + return true; + } + } + } + + return false; +} + u64 module_esalt_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const u64 esalt_size = (const u64) sizeof (radmin3_t); @@ -259,6 +276,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -324,6 +343,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = MODULE_DEFAULT; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_29311.c b/src/modules/module_29311.c index 0f976ee8d..cade1b3da 100644 --- a/src/modules/module_29311.c +++ b/src/modules/module_29311.c @@ -79,20 +79,6 @@ static const int ROUNDS_TRUECRYPT_2K = 2000; static const float MIN_SUFFICIENT_ENTROPY_FILE = 7.0f; static const char *SIGNATURE_TRUECRYPT = "$truecrypt$"; -bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - // AMD Radeon Pro W5700X Compute Engine; 1.2 (Apr 22 2021 21:54:44); 11.3.1; 20E241 - if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) - { - if (device_param->is_metal == false) - { - return true; - } - } - - return false; -} - u64 module_esalt_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const u64 esalt_size = (const u64) sizeof (tc_t); @@ -263,6 +249,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -328,6 +316,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = module_unstable_warning; + module_ctx->module_unstable_warning = MODULE_DEFAULT; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_29312.c b/src/modules/module_29312.c index 31e5dba33..f284ffe7b 100644 --- a/src/modules/module_29312.c +++ b/src/modules/module_29312.c @@ -79,20 +79,6 @@ static const int ROUNDS_TRUECRYPT_2K = 2000; static const float MIN_SUFFICIENT_ENTROPY_FILE = 7.0f; static const char *SIGNATURE_TRUECRYPT = "$truecrypt$"; -bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - // AMD Radeon Pro W5700X Compute Engine; 1.2 (Apr 22 2021 21:54:44); 11.3.1; 20E241 - if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) - { - if (device_param->is_metal == false) - { - return true; - } - } - - return false; -} - u64 module_esalt_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const u64 esalt_size = (const u64) sizeof (tc_t); @@ -263,6 +249,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -328,6 +316,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = module_unstable_warning; + module_ctx->module_unstable_warning = MODULE_DEFAULT; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_29313.c b/src/modules/module_29313.c index eadca3d08..78e2067de 100644 --- a/src/modules/module_29313.c +++ b/src/modules/module_29313.c @@ -79,20 +79,6 @@ static const int ROUNDS_TRUECRYPT_2K = 2000; static const float MIN_SUFFICIENT_ENTROPY_FILE = 7.0f; static const char *SIGNATURE_TRUECRYPT = "$truecrypt$"; -bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - // AMD Radeon Pro W5700X Compute Engine; 1.2 (Apr 22 2021 21:54:44); 11.3.1; 20E241 - if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) - { - if (device_param->is_metal == false) - { - return true; - } - } - - return false; -} - u64 module_esalt_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const u64 esalt_size = (const u64) sizeof (tc_t); @@ -263,6 +249,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -328,6 +316,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = module_unstable_warning; + module_ctx->module_unstable_warning = MODULE_DEFAULT; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_29321.c b/src/modules/module_29321.c index ac5e1bf4f..526657c5e 100644 --- a/src/modules/module_29321.c +++ b/src/modules/module_29321.c @@ -264,6 +264,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_29322.c b/src/modules/module_29322.c index 4322666c9..345c76f74 100644 --- a/src/modules/module_29322.c +++ b/src/modules/module_29322.c @@ -264,6 +264,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_29323.c b/src/modules/module_29323.c index 63c016358..88f851e7b 100644 --- a/src/modules/module_29323.c +++ b/src/modules/module_29323.c @@ -264,6 +264,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_29331.c b/src/modules/module_29331.c index 52eefad8f..1a10c3c8b 100644 --- a/src/modules/module_29331.c +++ b/src/modules/module_29331.c @@ -79,6 +79,23 @@ static const int ROUNDS_TRUECRYPT_1K = 1000; static const float MIN_SUFFICIENT_ENTROPY_FILE = 7.0f; static const char *SIGNATURE_TRUECRYPT = "$truecrypt$"; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm06231_init' pipeline, Compilation failed + return true; + } + } + } + + return false; +} + u64 module_esalt_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const u64 esalt_size = (const u64) sizeof (tc_t); @@ -249,6 +266,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -314,6 +333,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_29332.c b/src/modules/module_29332.c index 2bb2c57ae..d49724d1a 100644 --- a/src/modules/module_29332.c +++ b/src/modules/module_29332.c @@ -79,6 +79,23 @@ static const int ROUNDS_TRUECRYPT_1K = 1000; static const float MIN_SUFFICIENT_ENTROPY_FILE = 7.0f; static const char *SIGNATURE_TRUECRYPT = "$truecrypt$"; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm06232_init' pipeline, Compilation failed + return true; + } + } + } + + return false; +} + u64 module_esalt_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const u64 esalt_size = (const u64) sizeof (tc_t); @@ -249,6 +266,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -314,6 +333,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_29333.c b/src/modules/module_29333.c index 427dda7c4..09f413932 100644 --- a/src/modules/module_29333.c +++ b/src/modules/module_29333.c @@ -79,6 +79,23 @@ static const int ROUNDS_TRUECRYPT_1K = 1000; static const float MIN_SUFFICIENT_ENTROPY_FILE = 7.0f; static const char *SIGNATURE_TRUECRYPT = "$truecrypt$"; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm06233_init' pipeline, timeout reached + return true; + } + } + } + + return false; +} + u64 module_esalt_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const u64 esalt_size = (const u64) sizeof (tc_t); @@ -249,6 +266,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -314,6 +333,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_29341.c b/src/modules/module_29341.c index 9b2a472ef..8acaf3586 100644 --- a/src/modules/module_29341.c +++ b/src/modules/module_29341.c @@ -80,20 +80,6 @@ static const int ROUNDS_TRUECRYPT_1K = 1000; static const float MIN_SUFFICIENT_ENTROPY_FILE = 7.0f; static const char *SIGNATURE_TRUECRYPT = "$truecrypt$"; -bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - // AMD Radeon Pro W5700X Compute Engine; 1.2 (Apr 22 2021 21:54:44); 11.3.1; 20E241 - if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) - { - if (device_param->is_metal == false) - { - return true; - } - } - - return false; -} - int module_build_plain_postprocess (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const void *tmps, const u32 *src_buf, MAYBE_UNUSED const size_t src_sz, MAYBE_UNUSED const int src_len, u32 *dst_buf, MAYBE_UNUSED const size_t dst_sz) { const tc_t *tc = (const tc_t *) hashes->esalts_buf; @@ -276,6 +262,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = module_build_plain_postprocess; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -341,6 +329,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = module_unstable_warning; + module_ctx->module_unstable_warning = MODULE_DEFAULT; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_29342.c b/src/modules/module_29342.c index 56ec1bc84..0dea3ce65 100644 --- a/src/modules/module_29342.c +++ b/src/modules/module_29342.c @@ -80,20 +80,6 @@ static const int ROUNDS_TRUECRYPT_1K = 1000; static const float MIN_SUFFICIENT_ENTROPY_FILE = 7.0f; static const char *SIGNATURE_TRUECRYPT = "$truecrypt$"; -bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - // AMD Radeon Pro W5700X Compute Engine; 1.2 (Apr 22 2021 21:54:44); 11.3.1; 20E241 - if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) - { - if (device_param->is_metal == false) - { - return true; - } - } - - return false; -} - int module_build_plain_postprocess (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const void *tmps, const u32 *src_buf, MAYBE_UNUSED const size_t src_sz, MAYBE_UNUSED const int src_len, u32 *dst_buf, MAYBE_UNUSED const size_t dst_sz) { const tc_t *tc = (const tc_t *) hashes->esalts_buf; @@ -276,6 +262,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = module_build_plain_postprocess; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -341,6 +329,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = module_unstable_warning; + module_ctx->module_unstable_warning = MODULE_DEFAULT; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_29343.c b/src/modules/module_29343.c index 5bd5f6823..5257bfc57 100644 --- a/src/modules/module_29343.c +++ b/src/modules/module_29343.c @@ -80,20 +80,6 @@ static const int ROUNDS_TRUECRYPT_1K = 1000; static const float MIN_SUFFICIENT_ENTROPY_FILE = 7.0f; static const char *SIGNATURE_TRUECRYPT = "$truecrypt$"; -bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - // AMD Radeon Pro W5700X Compute Engine; 1.2 (Apr 22 2021 21:54:44); 11.3.1; 20E241 - if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) - { - if (device_param->is_metal == false) - { - return true; - } - } - - return false; -} - int module_build_plain_postprocess (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const void *tmps, const u32 *src_buf, MAYBE_UNUSED const size_t src_sz, MAYBE_UNUSED const int src_len, u32 *dst_buf, MAYBE_UNUSED const size_t dst_sz) { const tc_t *tc = (const tc_t *) hashes->esalts_buf; @@ -276,6 +262,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = module_build_plain_postprocess; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -341,6 +329,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = module_unstable_warning; + module_ctx->module_unstable_warning = MODULE_DEFAULT; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_29411.c b/src/modules/module_29411.c index 434ebd06d..a3e7160eb 100644 --- a/src/modules/module_29411.c +++ b/src/modules/module_29411.c @@ -86,20 +86,6 @@ static const int ROUNDS_VERACRYPT_655331 = 655331; static const float MIN_SUFFICIENT_ENTROPY_FILE = 7.0f; static const char *SIGNATURE_VERACRYPT = "$veracrypt$"; -bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - // AMD Radeon Pro W5700X Compute Engine; 1.2 (Apr 22 2021 21:54:44); 11.3.1; 20E241 - if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) - { - if (device_param->is_metal == false) - { - return true; - } - } - - return false; -} - int module_build_plain_postprocess (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const void *tmps, const u32 *src_buf, MAYBE_UNUSED const size_t src_sz, MAYBE_UNUSED const int src_len, u32 *dst_buf, MAYBE_UNUSED const size_t dst_sz) { const vc_tmp_t *vc_tmp = (const vc_tmp_t *) tmps; @@ -325,6 +311,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = module_build_plain_postprocess; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -390,6 +378,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = module_unstable_warning; + module_ctx->module_unstable_warning = MODULE_DEFAULT; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_29412.c b/src/modules/module_29412.c index ecb9e4706..969e6d355 100644 --- a/src/modules/module_29412.c +++ b/src/modules/module_29412.c @@ -86,20 +86,6 @@ static const int ROUNDS_VERACRYPT_655331 = 655331; static const float MIN_SUFFICIENT_ENTROPY_FILE = 7.0f; static const char *SIGNATURE_VERACRYPT = "$veracrypt$"; -bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - // AMD Radeon Pro W5700X Compute Engine; 1.2 (Apr 22 2021 21:54:44); 11.3.1; 20E241 - if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) - { - if (device_param->is_metal == false) - { - return true; - } - } - - return false; -} - int module_build_plain_postprocess (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const void *tmps, const u32 *src_buf, MAYBE_UNUSED const size_t src_sz, MAYBE_UNUSED const int src_len, u32 *dst_buf, MAYBE_UNUSED const size_t dst_sz) { const vc_tmp_t *vc_tmp = (const vc_tmp_t *) tmps; @@ -325,6 +311,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = module_build_plain_postprocess; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -390,6 +378,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = module_unstable_warning; + module_ctx->module_unstable_warning = MODULE_DEFAULT; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_29413.c b/src/modules/module_29413.c index 295807e18..6e67ec4df 100644 --- a/src/modules/module_29413.c +++ b/src/modules/module_29413.c @@ -86,20 +86,6 @@ static const int ROUNDS_VERACRYPT_655331 = 655331; static const float MIN_SUFFICIENT_ENTROPY_FILE = 7.0f; static const char *SIGNATURE_VERACRYPT = "$veracrypt$"; -bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - // AMD Radeon Pro W5700X Compute Engine; 1.2 (Apr 22 2021 21:54:44); 11.3.1; 20E241 - if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) - { - if (device_param->is_metal == false) - { - return true; - } - } - - return false; -} - int module_build_plain_postprocess (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const void *tmps, const u32 *src_buf, MAYBE_UNUSED const size_t src_sz, MAYBE_UNUSED const int src_len, u32 *dst_buf, MAYBE_UNUSED const size_t dst_sz) { const vc_tmp_t *vc_tmp = (const vc_tmp_t *) tmps; @@ -325,6 +311,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = module_build_plain_postprocess; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -390,6 +378,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = module_unstable_warning; + module_ctx->module_unstable_warning = MODULE_DEFAULT; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_29421.c b/src/modules/module_29421.c index c75184e77..4c0e94163 100644 --- a/src/modules/module_29421.c +++ b/src/modules/module_29421.c @@ -90,20 +90,11 @@ static const char *SIGNATURE_VERACRYPT = "$veracrypt$"; bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) { - // AMD Radeon Pro W5700X Compute Engine; 1.2 (Apr 22 2021 21:54:44); 11.3.1; 20E241 if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) { - if (device_param->is_metal == false) - { - return true; - } - } - - if (device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) - { - // self-test failed - if ((device_param->opencl_device_vendor_id == VENDOR_ID_AMD) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + if (device_param->opencl_device_vendor_id == VENDOR_ID_AMD) { + // AMD Radeon Pro W5700X Compute Engine; 1.2 (Apr 22 2021 21:54:44); 11.3.1; 20E241 return true; } } @@ -336,6 +327,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = module_build_plain_postprocess; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_29422.c b/src/modules/module_29422.c index 1e307a2fd..d32d1471e 100644 --- a/src/modules/module_29422.c +++ b/src/modules/module_29422.c @@ -90,21 +90,23 @@ static const char *SIGNATURE_VERACRYPT = "$veracrypt$"; bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) { - // AMD Radeon Pro W5700X Compute Engine; 1.2 (Apr 22 2021 21:54:44); 11.3.1; 20E241 if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) { - if (device_param->is_metal == false) + if (device_param->is_metal == true) { - return true; + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm13722_loop_extended' pipeline, timeout reached + return true; + } } - } - - if (device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) - { - // self-test failed - if ((device_param->opencl_device_vendor_id == VENDOR_ID_AMD) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + else { - return true; + if (device_param->opencl_device_vendor_id == VENDOR_ID_AMD) + { + // AMD Radeon Pro W5700X Compute Engine; 1.2 (Apr 22 2021 21:54:44); 11.3.1; 20E241 + return true; + } } } @@ -336,6 +338,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = module_build_plain_postprocess; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_29423.c b/src/modules/module_29423.c index fce68cc36..988bc8a42 100644 --- a/src/modules/module_29423.c +++ b/src/modules/module_29423.c @@ -90,21 +90,23 @@ static const char *SIGNATURE_VERACRYPT = "$veracrypt$"; bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) { - // AMD Radeon Pro W5700X Compute Engine; 1.2 (Apr 22 2021 21:54:44); 11.3.1; 20E241 if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) { - if (device_param->is_metal == false) + if (device_param->is_metal == true) { - return true; + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm13723_loop' pipeline, timeout reached + return true; + } } - } - - if (device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) - { - // self-test failed - if ((device_param->opencl_device_vendor_id == VENDOR_ID_AMD) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + else { - return true; + if (device_param->opencl_device_vendor_id == VENDOR_ID_AMD) + { + // AMD Radeon Pro W5700X Compute Engine; 1.2 (Apr 22 2021 21:54:44); 11.3.1; 20E241 + return true; + } } } @@ -336,6 +338,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = module_build_plain_postprocess; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_29431.c b/src/modules/module_29431.c index d98fce4dd..a22c24e3d 100644 --- a/src/modules/module_29431.c +++ b/src/modules/module_29431.c @@ -28,8 +28,7 @@ static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE | OPTS_TYPE_PT_GENERATE_LE | OPTS_TYPE_LOOP_EXTENDED | OPTS_TYPE_MP_MULTI_DISABLE - | OPTS_TYPE_COPY_TMPS - | OPTS_TYPE_MAXIMUM_THREADS; + | OPTS_TYPE_COPY_TMPS; static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; static const char *ST_PASS = "hashcat"; static const char *ST_HASH = "$veracrypt$48f79476aa0aa8327a8a9056e61450f4e2883c9e9669142f2e2f022c2f85303b897d088dea03d64329f6c402a56fed05b3919715929090a25c8ae84c67dbdb36$4ebfa3e9ccc0b391c130a4c3dd6495a1d6eb5d2eab72f8009096f7475ecb736bb3225b6da144e1596d859dad159fae5a739beea88ea074771e9d0b2d7c48ae302606a60d7cff6db54f3e460c548c06a4f47dc1ac203a8c8349fbff6a652219a63f27bc76327543e22be4f8dab8e4f90a4283fbf1552119fe24114ce8869eb20ce87dd72300f7aad3f7b4a26a355f16517725449151cf0373dbd0b281f6ac753485a14a5361cc75d40928e241a6b4684658801774843238048cf8c7f2fd88950abac040e12b0c41fdcaca3702907e951ec11c061a91b3050a4855abe6f3b50b4bd0b17c4be1f5b50b873eadc2d8446cd72c4fcac576bbce3acea769f740c5322ee8c927ffd4dd11c8a9e66f06e58df2e5d4d85c13b44c412bab839c9512b7a0acdd97b37dcccc4b70854eda0f36de12d62dd10cc13bc6154103d083bf6540bc78e5d0aad5d063cc74dad4cbe6e060febda2a9fd79c238f99dcb0766ff4addcfd0c03e619c765f65b1c75d5d22c6536958bcda78077ff44b64c4da741bf50154df310d4e0724238a777b524237b9478277e400ad8146dc3ca1da83e3d2f1c5115a4b7fcdc71dd7d56ba86a2f9b721c9a4137aabb07c3c5fedcf5342c4fae4898c9"; @@ -87,6 +86,23 @@ static const int ROUNDS_VERACRYPT_500000 = 500000; static const float MIN_SUFFICIENT_ENTROPY_FILE = 7.0f; static const char *SIGNATURE_VERACRYPT = "$veracrypt$"; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm13731_init' pipeline, timeout reached + return true; + } + } + } + + return false; +} + int module_build_plain_postprocess (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const void *tmps, const u32 *src_buf, MAYBE_UNUSED const size_t src_sz, MAYBE_UNUSED const int src_len, u32 *dst_buf, MAYBE_UNUSED const size_t dst_sz) { const vc_tmp_t *vc_tmp = (const vc_tmp_t *) tmps; @@ -312,6 +328,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = module_build_plain_postprocess; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -377,6 +395,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_29432.c b/src/modules/module_29432.c index 8bdb26a99..563b254c0 100644 --- a/src/modules/module_29432.c +++ b/src/modules/module_29432.c @@ -28,8 +28,7 @@ static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE | OPTS_TYPE_PT_GENERATE_LE | OPTS_TYPE_LOOP_EXTENDED | OPTS_TYPE_MP_MULTI_DISABLE - | OPTS_TYPE_COPY_TMPS - | OPTS_TYPE_MAXIMUM_THREADS; + | OPTS_TYPE_COPY_TMPS; static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; static const char *ST_PASS = "hashcat"; static const char *ST_HASH = "$veracrypt$1b721942019ebe8cedddbed7744a0702c0e053281a467e0ed69bf875c7406407d72eb8f2aea21270e41898c0a2c14382f86e04c15e7bc019d1d9dd813eabee0a$e5173e3cb1d927859d3e6de1006335a5184ae12b4c8dc2db2b1cd785063152a776f4dc5cacc1856a919b880d704b7450f5a0e0c9521bc9b4d67213c36a50e6664a1cbcea33f997b858e654111c7e9fca74f361528e85a28880381ec2600e3c1cd508c3833dd21cc91978185cba53caefd7b3c82d219d49f0b41e536d32e8d3ce194ad7923ca742213e19dcebdbd9687979d5a594654a5c611e8b829c4019e90a3cfb14e5fd7f8ed91e0fc79eed182399f02a3e3e202d4becaa6730e1f05f99ce06ce16dba7777ccddac72e85f2d3be5ecc9c808ac273f10ceb71cad666166abc327c4061a5f47424a5b6d9d093782f34b49924342a2e8cea663446ed4232a9a415ee2dfde988fa827b06d7438fec20ad0689543c3ee4602ce3ec3806fc7d668ef7e34330edd1e077b329a7627fa3ae5c89308258a17ecefbee114c80c2ab06f8271f14de8f2d13d1d6e5a119b71a6bae88ab151f76cdb2442284bc481d0df7e2163c3acfe763d3968195450d275af9034a00184a30cefed163e636626bffe6a35df3472508a49cb2b9b4c4a95d11c5d17e4e0539e9f13112125515778bcd1c2813c62a02673663062ad60583ec6a02c8a572865829e5b8c767b285728bea4907"; @@ -87,6 +86,23 @@ static const int ROUNDS_VERACRYPT_500000 = 500000; static const float MIN_SUFFICIENT_ENTROPY_FILE = 7.0f; static const char *SIGNATURE_VERACRYPT = "$veracrypt$"; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm13732_init' pipeline, timeout reached + return true; + } + } + } + + return false; +} + int module_build_plain_postprocess (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const void *tmps, const u32 *src_buf, MAYBE_UNUSED const size_t src_sz, MAYBE_UNUSED const int src_len, u32 *dst_buf, MAYBE_UNUSED const size_t dst_sz) { const vc_tmp_t *vc_tmp = (const vc_tmp_t *) tmps; @@ -312,6 +328,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = module_build_plain_postprocess; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -377,6 +395,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_29433.c b/src/modules/module_29433.c index 16d39fa1c..90e2033c9 100644 --- a/src/modules/module_29433.c +++ b/src/modules/module_29433.c @@ -28,8 +28,7 @@ static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE | OPTS_TYPE_PT_GENERATE_LE | OPTS_TYPE_LOOP_EXTENDED | OPTS_TYPE_MP_MULTI_DISABLE - | OPTS_TYPE_COPY_TMPS - | OPTS_TYPE_MAXIMUM_THREADS; + | OPTS_TYPE_COPY_TMPS; static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; static const char *ST_PASS = "hashcat"; static const char *ST_HASH = "$veracrypt$5eb128daef63eff7e6db6aa10a8858f89964f47844acca68df82ebb2e73866fa75e3b7a53f9d2ff1ecdd1f4dc90e9c0fdf51f60d11b1992cd2971b4889edfc89$20bbf346fd7693f675b617cb9e4e9a43e6f445021068fc13453b130f2eb1d753ee83ecc61dabec293e88b62110cf6a8fab670e171f6aba2226550b54893263f5fa086b3cc41dd3db2eae07b585e5162c7a0d9723a426d408d83266c4d6018dc1b8b456d28a224033a30bfe62b1e58c2ddf596e07f7ff31849a6f5cfcc1c977b82d8484c270d44ededb0afdb781295e92968fc8cc69766af0ce1e72f02d6b4e124ba4b1af71519dcaade857bb3f371f93a350da6e65ee46c2ac782f134c75c10fe9d653fccc08c614dc362871911af8b83bdfc479f770dfe4b3c86b5d895842c53852fe4912738f848bf7c3e10b8189d25faceab9ef30b6fa0284edaa471752ac2b65335179b8d605417709f64fded7d94383618a921660d4cdb190bbb3769a8e56d2cd1ee07078ebc3b68ebeb016893f7099018e40cb326e32b29a62806eaf1a3fd382f4f876bf721eadfc019c5545813e81fd7168995f743663b136762b07910a63b6eec5b728a4ad07a689cceecb14c2802f334401a0a4fd2ec49e2da7f3cb24d6181f01ceed93ee73dedc3378133c83c9a71155c86785ff20dd5a64323d2fd4bf076bab3c17a1bb45edf81c30a7bd7dbbb097ece0dca83fff9138d56ae668"; @@ -89,12 +88,15 @@ static const char *SIGNATURE_VERACRYPT = "$veracrypt$"; bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) { - // AppleM1, OpenCL, MTLCompilerService never-end (pure/optimized kernel) if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) { - if (device_param->is_metal == false) + if (device_param->is_metal == true) { - return true; + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm13733_init' pipeline, timeout reached + return true; + } } } @@ -326,6 +328,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = module_build_plain_postprocess; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_29441.c b/src/modules/module_29441.c index 44db4ff81..6bce07025 100644 --- a/src/modules/module_29441.c +++ b/src/modules/module_29441.c @@ -87,20 +87,6 @@ static const int ROUNDS_VERACRYPT_327661 = 327661; static const float MIN_SUFFICIENT_ENTROPY_FILE = 7.0f; static const char *SIGNATURE_VERACRYPT = "$veracrypt$"; -bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - // AMD Radeon Pro W5700X Compute Engine; 1.2 (Apr 22 2021 21:54:44); 11.3.1; 20E241 - if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) - { - if (device_param->is_metal == false) - { - return true; - } - } - - return false; -} - int module_build_plain_postprocess (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const void *tmps, const u32 *src_buf, MAYBE_UNUSED const size_t src_sz, MAYBE_UNUSED const int src_len, u32 *dst_buf, MAYBE_UNUSED const size_t dst_sz) { const vc_t *vc = (const vc_t *) hashes->esalts_buf; @@ -327,6 +313,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = module_build_plain_postprocess; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -392,6 +380,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = module_unstable_warning; + module_ctx->module_unstable_warning = MODULE_DEFAULT; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_29442.c b/src/modules/module_29442.c index d47c16b3f..d6616a7c3 100644 --- a/src/modules/module_29442.c +++ b/src/modules/module_29442.c @@ -87,20 +87,6 @@ static const int ROUNDS_VERACRYPT_327661 = 327661; static const float MIN_SUFFICIENT_ENTROPY_FILE = 7.0f; static const char *SIGNATURE_VERACRYPT = "$veracrypt$"; -bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - // AMD Radeon Pro W5700X Compute Engine; 1.2 (Apr 22 2021 21:54:44); 11.3.1; 20E241 - if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) - { - if (device_param->is_metal == false) - { - return true; - } - } - - return false; -} - int module_build_plain_postprocess (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const void *tmps, const u32 *src_buf, MAYBE_UNUSED const size_t src_sz, MAYBE_UNUSED const int src_len, u32 *dst_buf, MAYBE_UNUSED const size_t dst_sz) { const vc_t *vc = (const vc_t *) hashes->esalts_buf; @@ -327,6 +313,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = module_build_plain_postprocess; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -392,6 +380,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = module_unstable_warning; + module_ctx->module_unstable_warning = MODULE_DEFAULT; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_29443.c b/src/modules/module_29443.c index bc09e12f0..fdfcf7324 100644 --- a/src/modules/module_29443.c +++ b/src/modules/module_29443.c @@ -87,20 +87,6 @@ static const int ROUNDS_VERACRYPT_327661 = 327661; static const float MIN_SUFFICIENT_ENTROPY_FILE = 7.0f; static const char *SIGNATURE_VERACRYPT = "$veracrypt$"; -bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - // AMD Radeon Pro W5700X Compute Engine; 1.2 (Apr 22 2021 21:54:44); 11.3.1; 20E241 - if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) - { - if (device_param->is_metal == false) - { - return true; - } - } - - return false; -} - int module_build_plain_postprocess (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const void *tmps, const u32 *src_buf, MAYBE_UNUSED const size_t src_sz, MAYBE_UNUSED const int src_len, u32 *dst_buf, MAYBE_UNUSED const size_t dst_sz) { const vc_t *vc = (const vc_t *) hashes->esalts_buf; @@ -327,6 +313,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = module_build_plain_postprocess; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -392,6 +380,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = module_unstable_warning; + module_ctx->module_unstable_warning = MODULE_DEFAULT; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_29451.c b/src/modules/module_29451.c index 01a955fa4..d0e527df2 100644 --- a/src/modules/module_29451.c +++ b/src/modules/module_29451.c @@ -86,20 +86,6 @@ static const int ROUNDS_VERACRYPT_500000 = 500000; static const float MIN_SUFFICIENT_ENTROPY_FILE = 7.0f; static const char *SIGNATURE_VERACRYPT = "$veracrypt$"; -bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - // AMD Radeon Pro W5700X Compute Engine; 1.2 (Apr 22 2021 21:54:44); 11.3.1; 20E241 - if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) - { - if (device_param->is_metal == false) - { - return true; - } - } - - return false; -} - char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) { char *jit_build_options = NULL; @@ -344,6 +330,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = module_build_plain_postprocess; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -409,6 +397,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = module_unstable_warning; + module_ctx->module_unstable_warning = MODULE_DEFAULT; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_29452.c b/src/modules/module_29452.c index b77ff6145..1bdf93209 100644 --- a/src/modules/module_29452.c +++ b/src/modules/module_29452.c @@ -86,20 +86,6 @@ static const int ROUNDS_VERACRYPT_500000 = 500000; static const float MIN_SUFFICIENT_ENTROPY_FILE = 7.0f; static const char *SIGNATURE_VERACRYPT = "$veracrypt$"; -bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - // AMD Radeon Pro W5700X Compute Engine; 1.2 (Apr 22 2021 21:54:44); 11.3.1; 20E241 - if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) - { - if (device_param->is_metal == false) - { - return true; - } - } - - return false; -} - char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) { char *jit_build_options = NULL; @@ -344,6 +330,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = module_build_plain_postprocess; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -409,6 +397,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = module_unstable_warning; + module_ctx->module_unstable_warning = MODULE_DEFAULT; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_29453.c b/src/modules/module_29453.c index 171c61373..f73485a17 100644 --- a/src/modules/module_29453.c +++ b/src/modules/module_29453.c @@ -86,20 +86,6 @@ static const int ROUNDS_VERACRYPT_500000 = 500000; static const float MIN_SUFFICIENT_ENTROPY_FILE = 7.0f; static const char *SIGNATURE_VERACRYPT = "$veracrypt$"; -bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - // AMD Radeon Pro W5700X Compute Engine; 1.2 (Apr 22 2021 21:54:44); 11.3.1; 20E241 - if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) - { - if (device_param->is_metal == false) - { - return true; - } - } - - return false; -} - char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) { char *jit_build_options = NULL; @@ -344,6 +330,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = module_build_plain_postprocess; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -409,6 +397,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = module_unstable_warning; + module_ctx->module_unstable_warning = MODULE_DEFAULT; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_29461.c b/src/modules/module_29461.c index 301d2dada..136d77532 100644 --- a/src/modules/module_29461.c +++ b/src/modules/module_29461.c @@ -87,20 +87,6 @@ static const int ROUNDS_VERACRYPT_200000 = 200000; static const float MIN_SUFFICIENT_ENTROPY_FILE = 7.0f; static const char *SIGNATURE_VERACRYPT = "$veracrypt$"; -bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - // AMD Radeon Pro W5700X Compute Engine; 1.2 (Apr 22 2021 21:54:44); 11.3.1; 20E241 - if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) - { - if (device_param->is_metal == false) - { - return true; - } - } - - return false; -} - char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) { char *jit_build_options = NULL; @@ -346,6 +332,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = module_build_plain_postprocess; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -411,6 +399,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = module_unstable_warning; + module_ctx->module_unstable_warning = MODULE_DEFAULT; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_29462.c b/src/modules/module_29462.c index 409384d8e..c2bb7dfeb 100644 --- a/src/modules/module_29462.c +++ b/src/modules/module_29462.c @@ -87,20 +87,6 @@ static const int ROUNDS_VERACRYPT_200000 = 200000; static const float MIN_SUFFICIENT_ENTROPY_FILE = 7.0f; static const char *SIGNATURE_VERACRYPT = "$veracrypt$"; -bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - // AMD Radeon Pro W5700X Compute Engine; 1.2 (Apr 22 2021 21:54:44); 11.3.1; 20E241 - if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) - { - if (device_param->is_metal == false) - { - return true; - } - } - - return false; -} - char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) { char *jit_build_options = NULL; @@ -346,6 +332,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = module_build_plain_postprocess; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -411,6 +399,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = module_unstable_warning; + module_ctx->module_unstable_warning = MODULE_DEFAULT; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_29463.c b/src/modules/module_29463.c index d1dcd3d80..3c22d35c4 100644 --- a/src/modules/module_29463.c +++ b/src/modules/module_29463.c @@ -87,20 +87,6 @@ static const int ROUNDS_VERACRYPT_200000 = 200000; static const float MIN_SUFFICIENT_ENTROPY_FILE = 7.0f; static const char *SIGNATURE_VERACRYPT = "$veracrypt$"; -bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - // AMD Radeon Pro W5700X Compute Engine; 1.2 (Apr 22 2021 21:54:44); 11.3.1; 20E241 - if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) - { - if (device_param->is_metal == false) - { - return true; - } - } - - return false; -} - char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) { char *jit_build_options = NULL; @@ -346,6 +332,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = module_build_plain_postprocess; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -411,6 +399,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = module_unstable_warning; + module_ctx->module_unstable_warning = MODULE_DEFAULT; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_29471.c b/src/modules/module_29471.c index 4b1852559..18d50d294 100644 --- a/src/modules/module_29471.c +++ b/src/modules/module_29471.c @@ -92,18 +92,23 @@ static const char *SIGNATURE_VERACRYPT = "$veracrypt$"; bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) { - // AMD Radeon Pro W5700X Compute Engine; 1.2 (Apr 22 2021 21:54:44); 11.3.1; 20E241 if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) { - return true; - } - - if (device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) - { - // self-test failed - if ((device_param->opencl_device_vendor_id == VENDOR_ID_AMD) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + if (device_param->is_metal == true) { - return true; + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm13771_loop' pipeline, timeout reached + return true; + } + } + else + { + if (device_param->opencl_device_vendor_id == VENDOR_ID_AMD) + { + // AMD Radeon Pro W5700X Compute Engine; 1.2 (Apr 22 2021 21:54:44); 11.3.1; 20E241 + return true; + } } } @@ -335,6 +340,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = module_build_plain_postprocess; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_29472.c b/src/modules/module_29472.c index 8a7a20d15..a4c0c275e 100644 --- a/src/modules/module_29472.c +++ b/src/modules/module_29472.c @@ -92,18 +92,23 @@ static const char *SIGNATURE_VERACRYPT = "$veracrypt$"; bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) { - // AMD Radeon Pro W5700X Compute Engine; 1.2 (Apr 22 2021 21:54:44); 11.3.1; 20E241 if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) { - return true; - } - - if (device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) - { - // self-test failed - if ((device_param->opencl_device_vendor_id == VENDOR_ID_AMD) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + if (device_param->is_metal == true) { - return true; + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm13772_loop' pipeline, timeout reached + return true; + } + } + else + { + if (device_param->opencl_device_vendor_id == VENDOR_ID_AMD) + { + // AMD Radeon Pro W5700X Compute Engine; 1.2 (Apr 22 2021 21:54:44); 11.3.1; 20E241 + return true; + } } } @@ -335,6 +340,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = module_build_plain_postprocess; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_29473.c b/src/modules/module_29473.c index 4e2345011..744c1ac6d 100644 --- a/src/modules/module_29473.c +++ b/src/modules/module_29473.c @@ -92,25 +92,24 @@ static const char *SIGNATURE_VERACRYPT = "$veracrypt$"; bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) { - // AMD Radeon Pro W5700X Compute Engine; 1.2 (Apr 22 2021 21:54:44); 11.3.1; 20E241 if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) { - return true; - } - - if (device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) - { - // self-test failed - if ((device_param->opencl_device_vendor_id == VENDOR_ID_AMD) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + if (device_param->is_metal == true) { - return true; + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm13773_loop_extended' pipeline, timeout reached + return true; + } + } + else + { + if (device_param->opencl_device_vendor_id == VENDOR_ID_AMD) + { + // AMD Radeon Pro W5700X Compute Engine; 1.2 (Apr 22 2021 21:54:44); 11.3.1; 20E241 + return true; + } } - } - - // AppleM1, OpenCL, MTLCompilerService never-end - if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) - { - return true; } return false; @@ -341,6 +340,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = module_build_plain_postprocess; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_29481.c b/src/modules/module_29481.c index 55d0b84c6..3561d5de7 100644 --- a/src/modules/module_29481.c +++ b/src/modules/module_29481.c @@ -93,18 +93,23 @@ static const char *SIGNATURE_VERACRYPT = "$veracrypt$"; bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) { - // AMD Radeon Pro W5700X Compute Engine; 1.2 (Apr 22 2021 21:54:44); 11.3.1; 20E241 if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) { - return true; - } - - if (device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) - { - // self-test failed - if ((device_param->opencl_device_vendor_id == VENDOR_ID_AMD) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + if (device_param->is_metal == true) { - return true; + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm13771_loop' pipeline, timeout reached + return true; + } + } + else + { + if (device_param->opencl_device_vendor_id == VENDOR_ID_AMD) + { + // AMD Radeon Pro W5700X Compute Engine; 1.2 (Apr 22 2021 21:54:44); 11.3.1; 20E241 + return true; + } } } @@ -337,6 +342,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = module_build_plain_postprocess; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_29482.c b/src/modules/module_29482.c index 6e784d9a6..c7244ab7a 100644 --- a/src/modules/module_29482.c +++ b/src/modules/module_29482.c @@ -93,18 +93,23 @@ static const char *SIGNATURE_VERACRYPT = "$veracrypt$"; bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) { - // AMD Radeon Pro W5700X Compute Engine; 1.2 (Apr 22 2021 21:54:44); 11.3.1; 20E241 if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) { - return true; - } - - if (device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) - { - // self-test failed - if ((device_param->opencl_device_vendor_id == VENDOR_ID_AMD) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + if (device_param->is_metal == true) { - return true; + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm13772_loop' pipeline, timeout reached + return true; + } + } + else + { + if (device_param->opencl_device_vendor_id == VENDOR_ID_AMD) + { + // AMD Radeon Pro W5700X Compute Engine; 1.2 (Apr 22 2021 21:54:44); 11.3.1; 20E241 + return true; + } } } @@ -337,6 +342,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = module_build_plain_postprocess; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_29483.c b/src/modules/module_29483.c index c6162d306..4063a038f 100644 --- a/src/modules/module_29483.c +++ b/src/modules/module_29483.c @@ -93,18 +93,23 @@ static const char *SIGNATURE_VERACRYPT = "$veracrypt$"; bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) { - // AMD Radeon Pro W5700X Compute Engine; 1.2 (Apr 22 2021 21:54:44); 11.3.1; 20E241 if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) { - return true; - } - - if (device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) - { - // self-test failed - if ((device_param->opencl_device_vendor_id == VENDOR_ID_AMD) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + if (device_param->is_metal == true) { - return true; + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm13773_loop_extended' pipeline, timeout reached + return true; + } + } + else + { + if (device_param->opencl_device_vendor_id == VENDOR_ID_AMD) + { + // AMD Radeon Pro W5700X Compute Engine; 1.2 (Apr 22 2021 21:54:44); 11.3.1; 20E241 + return true; + } } } @@ -337,6 +342,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = module_build_plain_postprocess; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_29511.c b/src/modules/module_29511.c index 0f1d38566..2a3f9daf2 100644 --- a/src/modules/module_29511.c +++ b/src/modules/module_29511.c @@ -380,6 +380,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_29512.c b/src/modules/module_29512.c index 09f04ccca..e4edc5462 100644 --- a/src/modules/module_29512.c +++ b/src/modules/module_29512.c @@ -121,6 +121,23 @@ typedef struct luks_tmp static const char *SIGNATURE_LUKS = "$luks$1$sha1$serpent$"; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm14612_init' pipeline, timeout reached + return true; + } + } + } + + return false; +} + u64 module_esalt_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const u64 esalt_size = (const u64) sizeof (luks_t); @@ -380,6 +397,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -445,6 +464,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_29513.c b/src/modules/module_29513.c index 8680d3665..1bfe295bf 100644 --- a/src/modules/module_29513.c +++ b/src/modules/module_29513.c @@ -121,6 +121,23 @@ typedef struct luks_tmp static const char *SIGNATURE_LUKS = "$luks$1$sha1$twofish$"; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm14613_init' pipeline, timeout reached + return true; + } + } + } + + return false; +} + u64 module_esalt_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const u64 esalt_size = (const u64) sizeof (luks_t); @@ -380,6 +397,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -445,6 +464,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_29521.c b/src/modules/module_29521.c index ce1978bfd..8eba5a72d 100644 --- a/src/modules/module_29521.c +++ b/src/modules/module_29521.c @@ -121,6 +121,23 @@ typedef struct luks_tmp static const char *SIGNATURE_LUKS = "$luks$1$sha256$aes$"; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm14621_init' pipeline, timeout reached + return true; + } + } + } + + return false; +} + u64 module_esalt_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const u64 esalt_size = (const u64) sizeof (luks_t); @@ -380,6 +397,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -445,6 +464,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_29522.c b/src/modules/module_29522.c index 0466cfca4..6b1c89088 100644 --- a/src/modules/module_29522.c +++ b/src/modules/module_29522.c @@ -121,6 +121,23 @@ typedef struct luks_tmp static const char *SIGNATURE_LUKS = "$luks$1$sha256$serpent$"; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm14622_init' pipeline, timeout reached + return true; + } + } + } + + return false; +} + u64 module_esalt_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const u64 esalt_size = (const u64) sizeof (luks_t); @@ -380,6 +397,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -445,6 +464,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_29523.c b/src/modules/module_29523.c index a88e54de4..5c551e40c 100644 --- a/src/modules/module_29523.c +++ b/src/modules/module_29523.c @@ -121,6 +121,23 @@ typedef struct luks_tmp static const char *SIGNATURE_LUKS = "$luks$1$sha256$twofish$"; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm14623_init' pipeline, timeout reached + return true; + } + } + } + + return false; +} + u64 module_esalt_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const u64 esalt_size = (const u64) sizeof (luks_t); @@ -380,6 +397,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -445,6 +464,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_29531.c b/src/modules/module_29531.c index 1a604a96e..0c8f948c3 100644 --- a/src/modules/module_29531.c +++ b/src/modules/module_29531.c @@ -121,6 +121,23 @@ typedef struct luks_tmp static const char *SIGNATURE_LUKS = "$luks$1$sha512$aes$"; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm14631_init' pipeline, timeout reached + return true; + } + } + } + + return false; +} + u64 module_esalt_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const u64 esalt_size = (const u64) sizeof (luks_t); @@ -380,6 +397,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -445,6 +464,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_29532.c b/src/modules/module_29532.c index 7650b9457..0f2af18cd 100644 --- a/src/modules/module_29532.c +++ b/src/modules/module_29532.c @@ -121,6 +121,23 @@ typedef struct luks_tmp static const char *SIGNATURE_LUKS = "$luks$1$sha512$serpent$"; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm14632_init' pipeline, timeout reached + return true; + } + } + } + + return false; +} + u64 module_esalt_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const u64 esalt_size = (const u64) sizeof (luks_t); @@ -380,6 +397,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -445,6 +464,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_29533.c b/src/modules/module_29533.c index 0c76f085f..bbbaaac2f 100644 --- a/src/modules/module_29533.c +++ b/src/modules/module_29533.c @@ -121,6 +121,23 @@ typedef struct luks_tmp static const char *SIGNATURE_LUKS = "$luks$1$sha512$twofish$"; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm14633_comp' pipeline, timeout reached + return true; + } + } + } + + return false; +} + u64 module_esalt_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const u64 esalt_size = (const u64) sizeof (luks_t); @@ -380,6 +397,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -445,6 +464,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_29541.c b/src/modules/module_29541.c index 1006486b4..ec81998f6 100644 --- a/src/modules/module_29541.c +++ b/src/modules/module_29541.c @@ -380,6 +380,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_29542.c b/src/modules/module_29542.c index 69d561d4f..4d68a99fe 100644 --- a/src/modules/module_29542.c +++ b/src/modules/module_29542.c @@ -121,6 +121,23 @@ typedef struct luks_tmp static const char *SIGNATURE_LUKS = "$luks$1$ripemd160$serpent$"; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm14642_comp' pipeline, timeout reached + return true; + } + } + } + + return false; +} + u64 module_esalt_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const u64 esalt_size = (const u64) sizeof (luks_t); @@ -380,6 +397,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -445,6 +464,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_29543.c b/src/modules/module_29543.c index 8cca348ff..f0789ccdd 100644 --- a/src/modules/module_29543.c +++ b/src/modules/module_29543.c @@ -121,6 +121,23 @@ typedef struct luks_tmp static const char *SIGNATURE_LUKS = "$luks$1$ripemd160$twofish$"; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm14643_init' pipeline, timeout reached + return true; + } + } + } + + return false; +} + u64 module_esalt_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const u64 esalt_size = (const u64) sizeof (luks_t); @@ -380,6 +397,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -445,6 +464,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_29600.c b/src/modules/module_29600.c index 29c026a29..1242f5672 100644 --- a/src/modules/module_29600.c +++ b/src/modules/module_29600.c @@ -62,6 +62,23 @@ typedef struct terra } terra_t; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm29600_init' pipeline, timeout reached + return true; + } + } + } + + return false; +} + u64 module_esalt_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const u64 esalt_size = (const u64) sizeof (terra_t); @@ -258,6 +275,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -323,6 +342,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_29700.c b/src/modules/module_29700.c index 4a2ca92ac..e0f9eab97 100644 --- a/src/modules/module_29700.c +++ b/src/modules/module_29700.c @@ -647,6 +647,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_29800.c b/src/modules/module_29800.c index 364076c45..5e3517e20 100644 --- a/src/modules/module_29800.c +++ b/src/modules/module_29800.c @@ -10,6 +10,7 @@ #include "bitops.h" #include "convert.h" #include "shared.h" +#include "memory.h" static const u32 ATTACK_EXEC = ATTACK_EXEC_OUTSIDE_KERNEL; static const u32 DGST_POS0 = 0; @@ -19,14 +20,13 @@ static const u32 DGST_POS3 = 3; static const u32 DGST_SIZE = DGST_SIZE_4_4; static const u32 HASH_CATEGORY = HASH_CATEGORY_CRYPTOCURRENCY_WALLET; static const char *HASH_NAME = "Bisq .wallet (scrypt)"; -static const u64 KERN_TYPE = 29800; +static const u64 KERN_TYPE = 27700; static const u32 OPTI_TYPE = OPTI_TYPE_ZERO_BYTE; static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE | OPTS_TYPE_PT_GENERATE_LE | OPTS_TYPE_MP_MULTI_DISABLE | OPTS_TYPE_NATIVE_THREADS - | OPTS_TYPE_LOOP_PREPARE - | OPTS_TYPE_SELF_TEST_DISABLE; + | OPTS_TYPE_LOOP_PREPARE; static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; static const char *ST_PASS = "hashcat1"; static const char *ST_HASH = "$bisq$3*32768*8*6*31d838af87f99cb8*5cfb7bf3228d9e865881156e17b1866589ffa6b757011e25d1319083595236d2"; @@ -48,30 +48,9 @@ const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, static const char *SIGNATURE_BISQ = "$bisq$"; -static const u64 SCRYPT_N = 32768; -static const u64 SCRYPT_R = 8; -static const u64 SCRYPT_P = 6; +static const u32 SCRYPT_THREADS = 16; -u32 module_kernel_loops_min (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) -{ - const u32 kernel_loops_min = 1024; - - return kernel_loops_min; -} - -u32 module_kernel_loops_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) -{ - const u32 kernel_loops_max = 1024; - - return kernel_loops_max; -} - -u32 module_kernel_threads_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) -{ - const u32 kernel_threads_max = 32; - - return kernel_threads_max; -} +#include "scrypt_common.c" u32 module_pw_min (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { @@ -80,198 +59,6 @@ u32 module_pw_min (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED con return pw_min; } -u32 module_pw_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) -{ - // this overrides the reductions of PW_MAX in case optimized kernel is selected - // IOW, even in optimized kernel mode it support length 256 - - const u32 pw_max = PW_MAX; - - return pw_max; -} - -u64 module_extra_buffer_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - // we need to set the self-test hash settings to pass the self-test - // the decoder for the self-test is called after this function - - const u64 scrypt_N = (hashes->salts_buf[0].scrypt_N) ? hashes->salts_buf[0].scrypt_N : SCRYPT_N; - const u64 scrypt_r = (hashes->salts_buf[0].scrypt_r) ? hashes->salts_buf[0].scrypt_r : SCRYPT_R; - - const u64 kernel_power_max = ((OPTS_TYPE & OPTS_TYPE_MP_MULTI_DISABLE) ? 1 : device_param->device_processors) * device_param->kernel_threads_max * device_param->kernel_accel_max; - - u64 tmto_start = 0; - u64 tmto_stop = 4; - - if (user_options->scrypt_tmto_chgd == true) - { - tmto_start = user_options->scrypt_tmto; - tmto_stop = user_options->scrypt_tmto; - } - - // size_pws - - const u64 size_pws = kernel_power_max * sizeof (pw_t); - - const u64 size_pws_amp = size_pws; - - // size_pws_comp - - const u64 size_pws_comp = kernel_power_max * (sizeof (u32) * 64); - - // size_pws_idx - - const u64 size_pws_idx = (kernel_power_max + 1) * sizeof (pw_idx_t); - - // size_tmps - - const u64 size_tmps = kernel_power_max * hashconfig->tmp_size; - - // size_hooks - - const u64 size_hooks = kernel_power_max * hashconfig->hook_size; - - u64 size_pws_pre = 4; - u64 size_pws_base = 4; - - if (user_options->slow_candidates == true) - { - // size_pws_pre - - size_pws_pre = kernel_power_max * sizeof (pw_pre_t); - - // size_pws_base - - size_pws_base = kernel_power_max * sizeof (pw_pre_t); - } - - // sometimes device_available_mem and device_maxmem_alloc reported back from the opencl runtime are a bit inaccurate. - // let's add some extra space just to be sure. - // now depends on the kernel-accel value (where scrypt and similar benefits), but also hard minimum 64mb and maximum 1024mb limit - - u64 EXTRA_SPACE = (1024ULL * 1024ULL) * device_param->kernel_accel_max; - - EXTRA_SPACE = MAX (EXTRA_SPACE, ( 64ULL * 1024ULL * 1024ULL)); - EXTRA_SPACE = MIN (EXTRA_SPACE, (1024ULL * 1024ULL * 1024ULL)); - - const u64 scrypt_extra_space - = device_param->size_bfs - + device_param->size_combs - + device_param->size_digests - + device_param->size_esalts - + device_param->size_markov_css - + device_param->size_plains - + device_param->size_results - + device_param->size_root_css - + device_param->size_rules - + device_param->size_rules_c - + device_param->size_salts - + device_param->size_shown - + device_param->size_tm - + device_param->size_st_digests - + device_param->size_st_salts - + device_param->size_st_esalts - + size_pws - + size_pws_amp - + size_pws_comp - + size_pws_idx - + size_tmps - + size_hooks - + size_pws_pre - + size_pws_base - + EXTRA_SPACE; - - bool not_enough_memory = true; - - u64 size_scrypt = 0; - - u64 tmto; - - for (tmto = tmto_start; tmto <= tmto_stop; tmto++) - { - size_scrypt = (128ULL * scrypt_r) * scrypt_N; - - size_scrypt /= 1ull << tmto; - - size_scrypt *= kernel_power_max; - - if ((size_scrypt / 4) > device_param->device_maxmem_alloc) continue; - - if ((size_scrypt + scrypt_extra_space) > device_param->device_available_mem) continue; - - not_enough_memory = false; - - break; - } - - if (not_enough_memory == true) return -1; - - return size_scrypt; -} - -u64 module_tmp_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) -{ - const u64 tmp_size = 0; // we'll add some later - - return tmp_size; -} - -u64 module_extra_tmp_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes) -{ - const u64 scrypt_N = (hashes->salts_buf[0].scrypt_N) ? hashes->salts_buf[0].scrypt_N : SCRYPT_N; - const u64 scrypt_r = (hashes->salts_buf[0].scrypt_r) ? hashes->salts_buf[0].scrypt_r : SCRYPT_R; - const u64 scrypt_p = (hashes->salts_buf[0].scrypt_p) ? hashes->salts_buf[0].scrypt_p : SCRYPT_P; - - // we need to check that all hashes have the same scrypt settings - - for (u32 i = 1; i < hashes->salts_cnt; i++) - { - if ((hashes->salts_buf[i].scrypt_N != scrypt_N) - || (hashes->salts_buf[i].scrypt_r != scrypt_r) - || (hashes->salts_buf[i].scrypt_p != scrypt_p)) - { - return -1; - } - } - - const u64 tmp_size = 128ULL * scrypt_r * scrypt_p; - - return tmp_size; -} - -bool module_warmup_disable (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) -{ - return true; -} - -char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) -{ - const u64 scrypt_N = (hashes->salts_buf[0].scrypt_N) ? hashes->salts_buf[0].scrypt_N : SCRYPT_N; - const u64 scrypt_r = (hashes->salts_buf[0].scrypt_r) ? hashes->salts_buf[0].scrypt_r : SCRYPT_R; - const u64 scrypt_p = (hashes->salts_buf[0].scrypt_p) ? hashes->salts_buf[0].scrypt_p : SCRYPT_P; - - const u64 extra_buffer_size = device_param->extra_buffer_size; - - const u64 kernel_power_max = ((OPTS_TYPE & OPTS_TYPE_MP_MULTI_DISABLE) ? 1 : device_param->device_processors) * device_param->kernel_threads_max * device_param->kernel_accel_max; - - const u64 size_scrypt = 128ULL * scrypt_r * scrypt_N; - - const u64 scrypt_tmto_final = (kernel_power_max * size_scrypt) / extra_buffer_size; - - const u64 tmp_size = 128ULL * scrypt_r * scrypt_p; - - char *jit_build_options = NULL; - - hc_asprintf (&jit_build_options, "-D SCRYPT_N=%u -D SCRYPT_R=%u -D SCRYPT_P=%u -D SCRYPT_TMTO=%" PRIu64 " -D SCRYPT_TMP_ELEM=%" PRIu64, - hashes->salts_buf[0].scrypt_N, - hashes->salts_buf[0].scrypt_r, - hashes->salts_buf[0].scrypt_p, - scrypt_tmto_final, - tmp_size / 16); - - return jit_build_options; -} - int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED void *digest_buf, MAYBE_UNUSED salt_t *salt, MAYBE_UNUSED void *esalt_buf, MAYBE_UNUSED void *hook_salt_buf, MAYBE_UNUSED hashinfo_t *hash_info, const char *line_buf, MAYBE_UNUSED const int line_len) { u32 *digest = (u32 *) digest_buf; @@ -422,6 +209,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -432,9 +221,9 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_dgst_size = module_dgst_size; module_ctx->module_dictstat_disable = MODULE_DEFAULT; module_ctx->module_esalt_size = MODULE_DEFAULT; - module_ctx->module_extra_buffer_size = module_extra_buffer_size; - module_ctx->module_extra_tmp_size = module_extra_tmp_size; - module_ctx->module_extra_tuningdb_block = MODULE_DEFAULT; + module_ctx->module_extra_buffer_size = scrypt_module_extra_buffer_size; + module_ctx->module_extra_tmp_size = scrypt_module_extra_tmp_size; + module_ctx->module_extra_tuningdb_block = scrypt_module_extra_tuningdb_block; module_ctx->module_forced_outfile_format = MODULE_DEFAULT; module_ctx->module_hash_binary_count = MODULE_DEFAULT; module_ctx->module_hash_binary_parse = MODULE_DEFAULT; @@ -460,13 +249,13 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_hook23 = MODULE_DEFAULT; module_ctx->module_hook_salt_size = MODULE_DEFAULT; module_ctx->module_hook_size = MODULE_DEFAULT; - module_ctx->module_jit_build_options = module_jit_build_options; + module_ctx->module_jit_build_options = scrypt_module_jit_build_options; module_ctx->module_jit_cache_disable = MODULE_DEFAULT; module_ctx->module_kernel_accel_max = MODULE_DEFAULT; module_ctx->module_kernel_accel_min = MODULE_DEFAULT; - module_ctx->module_kernel_loops_max = module_kernel_loops_max; - module_ctx->module_kernel_loops_min = module_kernel_loops_min; - module_ctx->module_kernel_threads_max = module_kernel_threads_max; + module_ctx->module_kernel_loops_max = scrypt_module_kernel_loops_max; + module_ctx->module_kernel_loops_min = scrypt_module_kernel_loops_min; + module_ctx->module_kernel_threads_max = scrypt_module_kernel_threads_max; module_ctx->module_kernel_threads_min = MODULE_DEFAULT; module_ctx->module_kern_type = module_kern_type; module_ctx->module_kern_type_dynamic = MODULE_DEFAULT; @@ -478,7 +267,7 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_potfile_disable = MODULE_DEFAULT; module_ctx->module_potfile_keep_all_hashes = MODULE_DEFAULT; module_ctx->module_pwdump_column = MODULE_DEFAULT; - module_ctx->module_pw_max = module_pw_max; + module_ctx->module_pw_max = MODULE_DEFAULT; module_ctx->module_pw_min = module_pw_min; module_ctx->module_salt_max = MODULE_DEFAULT; module_ctx->module_salt_min = MODULE_DEFAULT; @@ -486,7 +275,7 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_separator = MODULE_DEFAULT; module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; - module_ctx->module_tmp_size = module_tmp_size; + module_ctx->module_tmp_size = scrypt_module_tmp_size; module_ctx->module_unstable_warning = MODULE_DEFAULT; - module_ctx->module_warmup_disable = module_warmup_disable; + module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_29910.c b/src/modules/module_29910.c index bb76e8da4..8f8028b03 100644 --- a/src/modules/module_29910.c +++ b/src/modules/module_29910.c @@ -255,6 +255,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_29920.c b/src/modules/module_29920.c index 259e0f620..6cf4a3611 100644 --- a/src/modules/module_29920.c +++ b/src/modules/module_29920.c @@ -278,6 +278,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_29930.c b/src/modules/module_29930.c index d29e9bcfe..eae649504 100644 --- a/src/modules/module_29930.c +++ b/src/modules/module_29930.c @@ -209,6 +209,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_29940.c b/src/modules/module_29940.c index be5522352..aa2791475 100644 --- a/src/modules/module_29940.c +++ b/src/modules/module_29940.c @@ -231,6 +231,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_30000.c b/src/modules/module_30000.c index 2a3fd4704..6a524703e 100644 --- a/src/modules/module_30000.c +++ b/src/modules/module_30000.c @@ -144,6 +144,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_30120.c b/src/modules/module_30120.c index f17570333..44fa456d3 100644 --- a/src/modules/module_30120.c +++ b/src/modules/module_30120.c @@ -208,6 +208,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_30420.c b/src/modules/module_30420.c index 8074d3412..179dd5904 100644 --- a/src/modules/module_30420.c +++ b/src/modules/module_30420.c @@ -160,6 +160,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_30500.c b/src/modules/module_30500.c index e68921944..1746f2625 100644 --- a/src/modules/module_30500.c +++ b/src/modules/module_30500.c @@ -167,6 +167,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_30600.c b/src/modules/module_30600.c index 2af2eecd4..b546989a7 100644 --- a/src/modules/module_30600.c +++ b/src/modules/module_30600.c @@ -288,6 +288,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_30700.c b/src/modules/module_30700.c index b078dc447..a853aeb9d 100644 --- a/src/modules/module_30700.c +++ b/src/modules/module_30700.c @@ -205,6 +205,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_30901.c b/src/modules/module_30901.c index e3af30325..24c2b372d 100644 --- a/src/modules/module_30901.c +++ b/src/modules/module_30901.c @@ -24,7 +24,6 @@ static const char *HASH_NAME = "Bitcoin raw private key (P2PKH), compres static const u64 KERN_TYPE = 30901; static const u32 OPTI_TYPE = OPTI_TYPE_NOT_SALTED; static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE - | OPTS_TYPE_NATIVE_THREADS | OPTS_TYPE_PT_GENERATE_LE; static const u32 SALT_TYPE = SALT_TYPE_NONE; static const char *ST_PASS = "59887ec9920239bd45b6a9f82b7c4e024f80beaf887e5ee6aac5de0a899d3068"; @@ -49,6 +48,23 @@ const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfi const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; } const char *module_benchmark_mask (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return BENCHMARK_MASK; } +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: self-test failed + return true; + } + } + } + + return false; +} + u32 module_kernel_loops_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const u32 kernel_loops_max = 16; @@ -150,6 +166,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = module_benchmark_mask; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -215,6 +233,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = MODULE_DEFAULT; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_30902.c b/src/modules/module_30902.c index ae7f1b030..ad4aab7db 100644 --- a/src/modules/module_30902.c +++ b/src/modules/module_30902.c @@ -24,7 +24,6 @@ static const char *HASH_NAME = "Bitcoin raw private key (P2PKH), uncompr static const u64 KERN_TYPE = 30902; static const u32 OPTI_TYPE = OPTI_TYPE_NOT_SALTED; static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE - | OPTS_TYPE_NATIVE_THREADS | OPTS_TYPE_PT_GENERATE_LE; static const u32 SALT_TYPE = SALT_TYPE_NONE; static const char *ST_PASS = "2006a306cf8f61c18c4e78e5fc0f5a7aa473b5ffb41f34344a32f8e042786fa1"; @@ -50,6 +49,23 @@ const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfi const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; } const char *module_benchmark_mask (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return BENCHMARK_MASK; } +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: self-test failed + return true; + } + } + } + + return false; +} + u32 module_kernel_loops_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const u32 kernel_loops_max = 16; @@ -151,6 +167,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = module_benchmark_mask; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -216,6 +234,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = MODULE_DEFAULT; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_30903.c b/src/modules/module_30903.c index 0b4eaba73..319871186 100644 --- a/src/modules/module_30903.c +++ b/src/modules/module_30903.c @@ -22,7 +22,6 @@ static const char *HASH_NAME = "Bitcoin raw private key (P2WPKH, Bech32) static const u64 KERN_TYPE = 30901; static const u32 OPTI_TYPE = OPTI_TYPE_NOT_SALTED; static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE - | OPTS_TYPE_NATIVE_THREADS | OPTS_TYPE_PT_GENERATE_LE; static const u32 SALT_TYPE = SALT_TYPE_NONE; static const char *ST_PASS = "4d1987d7a341d51557af59996845740135ab2506515426ada57cc8ec05adf794"; @@ -46,6 +45,23 @@ const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfi const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; } const char *module_benchmark_mask (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return BENCHMARK_MASK; } +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: self-test failed + return true; + } + } + } + + return false; +} + u32 module_kernel_loops_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const u32 kernel_loops_max = 16; @@ -333,6 +349,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = module_benchmark_mask; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -398,6 +416,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = MODULE_DEFAULT; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_30904.c b/src/modules/module_30904.c index 58f0b2696..01681e5dd 100644 --- a/src/modules/module_30904.c +++ b/src/modules/module_30904.c @@ -22,7 +22,6 @@ static const char *HASH_NAME = "Bitcoin raw private key (P2WPKH, Bech32) static const u64 KERN_TYPE = 30902; static const u32 OPTI_TYPE = OPTI_TYPE_NOT_SALTED; static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE - | OPTS_TYPE_NATIVE_THREADS | OPTS_TYPE_PT_GENERATE_LE; static const u32 SALT_TYPE = SALT_TYPE_NONE; static const char *ST_PASS = "25c9f8f734d87aacd9308705ca50b9819a57425ffbfae41cef869b19764d72c2"; @@ -46,6 +45,23 @@ const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfi const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; } const char *module_benchmark_mask (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return BENCHMARK_MASK; } +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: self-test failed + return true; + } + } + } + + return false; +} + u32 module_kernel_loops_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const u32 kernel_loops_max = 16; @@ -333,6 +349,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = module_benchmark_mask; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -398,6 +416,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = MODULE_DEFAULT; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_30905.c b/src/modules/module_30905.c index 763fd550d..352cb832d 100644 --- a/src/modules/module_30905.c +++ b/src/modules/module_30905.c @@ -24,7 +24,6 @@ static const char *HASH_NAME = "Bitcoin raw private key (P2SH(P2WPKH)), static const u64 KERN_TYPE = 30905; static const u32 OPTI_TYPE = OPTI_TYPE_NOT_SALTED; static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE - | OPTS_TYPE_NATIVE_THREADS | OPTS_TYPE_PT_GENERATE_LE; static const u32 SALT_TYPE = SALT_TYPE_NONE; static const char *ST_PASS = "83b45ff8d85f37aafc05a8accd1f1cd5e50868b57e2ef0ef6f287bb4d8d17786"; @@ -50,6 +49,23 @@ const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfi const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; } const char *module_benchmark_mask (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return BENCHMARK_MASK; } +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: self-test failed + return true; + } + } + } + + return false; +} + u32 module_kernel_loops_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const u32 kernel_loops_max = 16; @@ -150,6 +166,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = module_benchmark_mask; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -215,6 +233,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = MODULE_DEFAULT; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_30906.c b/src/modules/module_30906.c index 22553013b..982baa384 100644 --- a/src/modules/module_30906.c +++ b/src/modules/module_30906.c @@ -24,7 +24,6 @@ static const char *HASH_NAME = "Bitcoin raw private key (P2SH(P2WPKH)), static const u64 KERN_TYPE = 30906; static const u32 OPTI_TYPE = OPTI_TYPE_NOT_SALTED; static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE - | OPTS_TYPE_NATIVE_THREADS | OPTS_TYPE_PT_GENERATE_LE; static const u32 SALT_TYPE = SALT_TYPE_NONE; static const char *ST_PASS = "4c969ccc86d9e1f557b4ff1f19badc9a99718dd2aec8fcf66460612e05f5f7dd"; @@ -50,6 +49,23 @@ const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfi const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; } const char *module_benchmark_mask (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return BENCHMARK_MASK; } +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: self-test failed + return true; + } + } + } + + return false; +} + u32 module_kernel_loops_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const u32 kernel_loops_max = 16; @@ -150,6 +166,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = module_benchmark_mask; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -215,6 +233,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = MODULE_DEFAULT; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_31000.c b/src/modules/module_31000.c index b7a3c2208..aeb654d19 100644 --- a/src/modules/module_31000.c +++ b/src/modules/module_31000.c @@ -120,6 +120,8 @@ void module_init (module_ctx_t * module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_31100.c b/src/modules/module_31100.c index 8db92fb91..6a4125041 100644 --- a/src/modules/module_31100.c +++ b/src/modules/module_31100.c @@ -167,6 +167,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_31200.c b/src/modules/module_31200.c index 50bc5405e..1bc8dc8a1 100644 --- a/src/modules/module_31200.c +++ b/src/modules/module_31200.c @@ -59,6 +59,23 @@ u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig, const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; } const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; } +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm31200_init' pipeline, Compilation failed + return true; + } + } + } + + return false; +} + u64 module_tmp_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const u64 tmp_size = (const u64) sizeof (pbkdf2_sha1_tmp_t); @@ -235,6 +252,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -300,6 +319,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_31300.c b/src/modules/module_31300.c index ae4130837..c828a33bb 100644 --- a/src/modules/module_31300.c +++ b/src/modules/module_31300.c @@ -148,6 +148,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_31400.c b/src/modules/module_31400.c index 46bcef397..7539486f1 100644 --- a/src/modules/module_31400.c +++ b/src/modules/module_31400.c @@ -142,6 +142,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_31500.c b/src/modules/module_31500.c index 26ec4d0f3..c8e7985c7 100644 --- a/src/modules/module_31500.c +++ b/src/modules/module_31500.c @@ -174,6 +174,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = module_benchmark_mask; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_31600.c b/src/modules/module_31600.c index dbc87e485..1517db1e3 100644 --- a/src/modules/module_31600.c +++ b/src/modules/module_31600.c @@ -56,6 +56,23 @@ typedef struct dcc2_tmp static const char *SIGNATURE_DCC2 = "$DCC2$"; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm31600_init' pipeline, timeout reached + return true; + } + } + } + + return false; +} + u64 module_tmp_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const u64 tmp_size = (const u64) sizeof (dcc2_tmp_t); @@ -179,6 +196,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = module_benchmark_mask; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -244,6 +263,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_31700.c b/src/modules/module_31700.c index 1bdb6161a..e67ad51f6 100644 --- a/src/modules/module_31700.c +++ b/src/modules/module_31700.c @@ -205,6 +205,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_31800.c b/src/modules/module_31800.c index 8a91a90e7..576e9c018 100644 --- a/src/modules/module_31800.c +++ b/src/modules/module_31800.c @@ -382,6 +382,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = module_deep_comp_kernel; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_31900.c b/src/modules/module_31900.c index 7ef9a8f07..1ce10d7a2 100644 --- a/src/modules/module_31900.c +++ b/src/modules/module_31900.c @@ -291,6 +291,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_32000.c b/src/modules/module_32000.c index f1e17711a..50454f2ba 100644 --- a/src/modules/module_32000.c +++ b/src/modules/module_32000.c @@ -141,6 +141,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_32010.c b/src/modules/module_32010.c index d82e5ca6a..7c4279f98 100644 --- a/src/modules/module_32010.c +++ b/src/modules/module_32010.c @@ -150,6 +150,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_32020.c b/src/modules/module_32020.c index 98c525586..c55483742 100644 --- a/src/modules/module_32020.c +++ b/src/modules/module_32020.c @@ -185,6 +185,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_32030.c b/src/modules/module_32030.c index 11ac43ead..db7014287 100644 --- a/src/modules/module_32030.c +++ b/src/modules/module_32030.c @@ -197,6 +197,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_32031.c b/src/modules/module_32031.c index 2ce2cf719..3ff2e3a02 100644 --- a/src/modules/module_32031.c +++ b/src/modules/module_32031.c @@ -202,6 +202,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_32040.c b/src/modules/module_32040.c index a9afe56f7..9518db12d 100644 --- a/src/modules/module_32040.c +++ b/src/modules/module_32040.c @@ -198,6 +198,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_32041.c b/src/modules/module_32041.c index 445562e30..f4d35528e 100644 --- a/src/modules/module_32041.c +++ b/src/modules/module_32041.c @@ -205,6 +205,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_32050.c b/src/modules/module_32050.c index 131651dce..8fceefad2 100644 --- a/src/modules/module_32050.c +++ b/src/modules/module_32050.c @@ -227,6 +227,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_32060.c b/src/modules/module_32060.c index eade07596..c27efbad5 100644 --- a/src/modules/module_32060.c +++ b/src/modules/module_32060.c @@ -291,6 +291,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_32070.c b/src/modules/module_32070.c index a2a785628..23b84781c 100644 --- a/src/modules/module_32070.c +++ b/src/modules/module_32070.c @@ -240,6 +240,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_32100.c b/src/modules/module_32100.c index cbcee0c86..1795c700b 100644 --- a/src/modules/module_32100.c +++ b/src/modules/module_32100.c @@ -69,6 +69,23 @@ typedef struct krb5asrep_17_tmp static const char *SIGNATURE_KRB5ASREP = "$krb5asrep$17$"; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm32100_comp' pipeline, timeout reached + return true; + } + } + } + + return false; +} + u64 module_tmp_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const u64 tmp_size = (const u64) sizeof (krb5asrep_17_tmp_t); @@ -350,6 +367,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -415,6 +434,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_32200.c b/src/modules/module_32200.c index 57f43019b..4c71f9427 100644 --- a/src/modules/module_32200.c +++ b/src/modules/module_32200.c @@ -69,6 +69,23 @@ typedef struct krb5asrep_18_tmp static const char *SIGNATURE_KRB5ASREP = "$krb5asrep$18$"; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm32200_comp' pipeline, timeout reached + return true; + } + } + } + + return false; +} + u64 module_tmp_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const u64 tmp_size = (const u64) sizeof (krb5asrep_18_tmp_t); @@ -349,6 +366,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -414,6 +433,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_32300.c b/src/modules/module_32300.c index 3c0462e72..1b66c35c3 100644 --- a/src/modules/module_32300.c +++ b/src/modules/module_32300.c @@ -61,6 +61,23 @@ typedef struct md5_triple_salt } md5_triple_salt_t; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm32300_s04' pipeline, timeout reached + return true; + } + } + } + + return false; +} + u64 module_esalt_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const u64 esalt_size = (const u64) sizeof (md5_triple_salt_t); @@ -231,6 +248,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -296,6 +315,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = MODULE_DEFAULT; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_32410.c b/src/modules/module_32410.c index 9554e980b..c1857e389 100644 --- a/src/modules/module_32410.c +++ b/src/modules/module_32410.c @@ -201,6 +201,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_32420.c b/src/modules/module_32420.c index d4187ff55..f8a477d79 100644 --- a/src/modules/module_32420.c +++ b/src/modules/module_32420.c @@ -49,6 +49,23 @@ u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig, const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; } const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; } +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm32420_sxx' pipeline, timeout reached + return true; + } + } + } + + return false; +} + char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) { char *jit_build_options = NULL; @@ -201,6 +218,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -266,6 +285,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = MODULE_DEFAULT; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_32500.c b/src/modules/module_32500.c index 74ae3b144..2354ae3cf 100644 --- a/src/modules/module_32500.c +++ b/src/modules/module_32500.c @@ -60,6 +60,23 @@ typedef struct doge_tmp } doge_tmp_t; +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm32500_init' pipeline, timeout reached + return true; + } + } + } + + return false; +} + u64 module_esalt_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { const u64 esalt_size = (const u64) sizeof (payload_t); @@ -206,6 +223,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -271,7 +290,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = module_tmp_size; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; - } diff --git a/src/modules/module_32600.c b/src/modules/module_32600.c index c8be26f3a..9043655c3 100644 --- a/src/modules/module_32600.c +++ b/src/modules/module_32600.c @@ -43,6 +43,23 @@ u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig, const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; } const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; } +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303: failed to create 'm32600_sxx' pipeline, timeout reached + return true; + } + } + } + + return false; +} + int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED void *digest_buf, MAYBE_UNUSED salt_t *salt, MAYBE_UNUSED void *esalt_buf, MAYBE_UNUSED void *hook_salt_buf, MAYBE_UNUSED hashinfo_t *hash_info, const char *line_buf, MAYBE_UNUSED const int line_len) { u32 *digest = (u32 *) digest_buf; @@ -204,6 +221,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; @@ -269,6 +288,6 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_st_hash = module_st_hash; module_ctx->module_st_pass = module_st_pass; module_ctx->module_tmp_size = MODULE_DEFAULT; - module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; module_ctx->module_warmup_disable = MODULE_DEFAULT; } diff --git a/src/modules/module_32700.c b/src/modules/module_32700.c index a34482a42..9bfdd3f02 100644 --- a/src/modules/module_32700.c +++ b/src/modules/module_32700.c @@ -158,6 +158,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/module_33300.c b/src/modules/module_33300.c new file mode 100644 index 000000000..964aeee9e --- /dev/null +++ b/src/modules/module_33300.c @@ -0,0 +1,218 @@ +/** + * Author......: See docs/credits.txt + * License.....: MIT + */ + +#include "common.h" +#include "types.h" +#include "modules.h" +#include "bitops.h" +#include "convert.h" +#include "shared.h" + +static const u32 ATTACK_EXEC = ATTACK_EXEC_INSIDE_KERNEL; +static const u32 DGST_POS0 = 3; +static const u32 DGST_POS1 = 7; +static const u32 DGST_POS2 = 2; +static const u32 DGST_POS3 = 6; +static const u32 DGST_SIZE = DGST_SIZE_4_8; +static const u32 HASH_CATEGORY = HASH_CATEGORY_RAW_HASH_AUTHENTICATED; +static const char *HASH_NAME = "HMAC-BLAKE2S (key = $pass)"; +static const u64 KERN_TYPE = 33300; +static const u32 OPTI_TYPE = OPTI_TYPE_ZERO_BYTE + | OPTI_TYPE_NOT_ITERATED; +static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE + | OPTS_TYPE_PT_GENERATE_LE + | OPTS_TYPE_ST_ADD80; +static const u32 SALT_TYPE = SALT_TYPE_GENERIC; +static const char *ST_PASS = "hashcat"; +static const char *ST_HASH = "0d541ae24d30aff2627c4d1a910f766088a64809edb46a05d29649a9b944da6c:1234"; + +u32 module_attack_exec (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ATTACK_EXEC; } +u32 module_dgst_pos0 (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_POS0; } +u32 module_dgst_pos1 (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_POS1; } +u32 module_dgst_pos2 (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_POS2; } +u32 module_dgst_pos3 (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_POS3; } +u32 module_dgst_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_SIZE; } +u32 module_hash_category (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return HASH_CATEGORY; } +const char *module_hash_name (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return HASH_NAME; } +u64 module_kern_type (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return KERN_TYPE; } +u32 module_opti_type (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return OPTI_TYPE; } +u64 module_opts_type (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return OPTS_TYPE; } +u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return SALT_TYPE; } +const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; } +const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; } + +int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED void *digest_buf, MAYBE_UNUSED salt_t *salt, MAYBE_UNUSED void *esalt_buf, MAYBE_UNUSED void *hook_salt_buf, MAYBE_UNUSED hashinfo_t *hash_info, const char *line_buf, MAYBE_UNUSED const int line_len) +{ + u32 *digest = (u32 *) digest_buf; + + hc_token_t token; + + memset (&token, 0, sizeof (hc_token_t)); + + token.token_cnt = 2; + + token.sep[0] = hashconfig->separator; + token.len[0] = 64; + token.attr[0] = TOKEN_ATTR_FIXED_LENGTH + | TOKEN_ATTR_VERIFY_HEX; + + token.len_min[1] = SALT_MIN; + token.len_max[1] = SALT_MAX; + token.attr[1] = TOKEN_ATTR_VERIFY_LENGTH; + + if (hashconfig->opts_type & OPTS_TYPE_ST_HEX) + { + token.len_min[1] *= 2; + token.len_max[1] *= 2; + + token.attr[1] |= TOKEN_ATTR_VERIFY_HEX; + } + + const int rc_tokenizer = input_tokenizer ((const u8 *) line_buf, line_len, &token); + + if (rc_tokenizer != PARSER_OK) return (rc_tokenizer); + + const u8 *hash_pos = token.buf[0]; + + digest[0] = hex_to_u32 (hash_pos + 0); + digest[1] = hex_to_u32 (hash_pos + 8); + digest[2] = hex_to_u32 (hash_pos + 16); + digest[3] = hex_to_u32 (hash_pos + 24); + digest[4] = hex_to_u32 (hash_pos + 32); + digest[5] = hex_to_u32 (hash_pos + 40); + digest[6] = hex_to_u32 (hash_pos + 48); + digest[7] = hex_to_u32 (hash_pos + 56); + + const u8 *salt_pos = token.buf[1]; + const int salt_len = token.len[1]; + + const bool parse_rc = generic_salt_decode (hashconfig, salt_pos, salt_len, (u8 *) salt->salt_buf, (int *) &salt->salt_len); + + if (parse_rc == false) return (PARSER_SALT_LENGTH); + + return (PARSER_OK); +} + +int module_hash_encode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const void *digest_buf, MAYBE_UNUSED const salt_t *salt, MAYBE_UNUSED const void *esalt_buf, MAYBE_UNUSED const void *hook_salt_buf, MAYBE_UNUSED const hashinfo_t *hash_info, char *line_buf, MAYBE_UNUSED const int line_size) +{ + const u32 *digest = (const u32 *) digest_buf; + + // we can not change anything in the original buffer, otherwise destroying sorting + // therefore create some local buffer + + u32 tmp[8]; + + tmp[0] = digest[0]; + tmp[1] = digest[1]; + tmp[2] = digest[2]; + tmp[3] = digest[3]; + tmp[4] = digest[4]; + tmp[5] = digest[5]; + tmp[6] = digest[6]; + tmp[7] = digest[7]; + + u8 *out_buf = (u8 *) line_buf; + + int out_len = 0; + + u32_to_hex (tmp[0], out_buf + out_len); out_len += 8; + u32_to_hex (tmp[1], out_buf + out_len); out_len += 8; + u32_to_hex (tmp[2], out_buf + out_len); out_len += 8; + u32_to_hex (tmp[3], out_buf + out_len); out_len += 8; + u32_to_hex (tmp[4], out_buf + out_len); out_len += 8; + u32_to_hex (tmp[5], out_buf + out_len); out_len += 8; + u32_to_hex (tmp[6], out_buf + out_len); out_len += 8; + u32_to_hex (tmp[7], out_buf + out_len); out_len += 8; + + out_buf[out_len] = hashconfig->separator; + + out_len += 1; + + out_len += generic_salt_encode (hashconfig, (const u8 *) salt->salt_buf, (const int) salt->salt_len, out_buf + out_len); + + return out_len; +} + +void module_init (module_ctx_t *module_ctx) +{ + module_ctx->module_context_size = MODULE_CONTEXT_SIZE_CURRENT; + module_ctx->module_interface_version = MODULE_INTERFACE_VERSION_CURRENT; + + module_ctx->module_attack_exec = module_attack_exec; + module_ctx->module_benchmark_esalt = MODULE_DEFAULT; + module_ctx->module_benchmark_hook_salt = MODULE_DEFAULT; + module_ctx->module_benchmark_mask = MODULE_DEFAULT; + module_ctx->module_benchmark_charset = MODULE_DEFAULT; + module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; + module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; + module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; + module_ctx->module_deprecated_notice = MODULE_DEFAULT; + module_ctx->module_dgst_pos0 = module_dgst_pos0; + module_ctx->module_dgst_pos1 = module_dgst_pos1; + module_ctx->module_dgst_pos2 = module_dgst_pos2; + module_ctx->module_dgst_pos3 = module_dgst_pos3; + module_ctx->module_dgst_size = module_dgst_size; + module_ctx->module_dictstat_disable = MODULE_DEFAULT; + module_ctx->module_esalt_size = MODULE_DEFAULT; + module_ctx->module_extra_buffer_size = MODULE_DEFAULT; + module_ctx->module_extra_tmp_size = MODULE_DEFAULT; + module_ctx->module_extra_tuningdb_block = MODULE_DEFAULT; + module_ctx->module_forced_outfile_format = MODULE_DEFAULT; + module_ctx->module_hash_binary_count = MODULE_DEFAULT; + module_ctx->module_hash_binary_parse = MODULE_DEFAULT; + module_ctx->module_hash_binary_save = MODULE_DEFAULT; + module_ctx->module_hash_decode_postprocess = MODULE_DEFAULT; + module_ctx->module_hash_decode_potfile = MODULE_DEFAULT; + module_ctx->module_hash_decode_zero_hash = MODULE_DEFAULT; + module_ctx->module_hash_decode = module_hash_decode; + module_ctx->module_hash_encode_status = MODULE_DEFAULT; + module_ctx->module_hash_encode_potfile = MODULE_DEFAULT; + module_ctx->module_hash_encode = module_hash_encode; + module_ctx->module_hash_init_selftest = MODULE_DEFAULT; + module_ctx->module_hash_mode = MODULE_DEFAULT; + module_ctx->module_hash_category = module_hash_category; + module_ctx->module_hash_name = module_hash_name; + module_ctx->module_hashes_count_min = MODULE_DEFAULT; + module_ctx->module_hashes_count_max = MODULE_DEFAULT; + module_ctx->module_hlfmt_disable = MODULE_DEFAULT; + module_ctx->module_hook_extra_param_size = MODULE_DEFAULT; + module_ctx->module_hook_extra_param_init = MODULE_DEFAULT; + module_ctx->module_hook_extra_param_term = MODULE_DEFAULT; + module_ctx->module_hook12 = MODULE_DEFAULT; + module_ctx->module_hook23 = MODULE_DEFAULT; + module_ctx->module_hook_salt_size = MODULE_DEFAULT; + module_ctx->module_hook_size = MODULE_DEFAULT; + module_ctx->module_jit_build_options = MODULE_DEFAULT; + module_ctx->module_jit_cache_disable = MODULE_DEFAULT; + module_ctx->module_kernel_accel_max = MODULE_DEFAULT; + module_ctx->module_kernel_accel_min = MODULE_DEFAULT; + module_ctx->module_kernel_loops_max = MODULE_DEFAULT; + module_ctx->module_kernel_loops_min = MODULE_DEFAULT; + module_ctx->module_kernel_threads_max = MODULE_DEFAULT; + module_ctx->module_kernel_threads_min = MODULE_DEFAULT; + module_ctx->module_kern_type = module_kern_type; + module_ctx->module_kern_type_dynamic = MODULE_DEFAULT; + module_ctx->module_opti_type = module_opti_type; + module_ctx->module_opts_type = module_opts_type; + module_ctx->module_outfile_check_disable = MODULE_DEFAULT; + module_ctx->module_outfile_check_nocomp = MODULE_DEFAULT; + module_ctx->module_potfile_custom_check = MODULE_DEFAULT; + module_ctx->module_potfile_disable = MODULE_DEFAULT; + module_ctx->module_potfile_keep_all_hashes = MODULE_DEFAULT; + module_ctx->module_pwdump_column = MODULE_DEFAULT; + module_ctx->module_pw_max = MODULE_DEFAULT; + module_ctx->module_pw_min = MODULE_DEFAULT; + module_ctx->module_salt_max = MODULE_DEFAULT; + module_ctx->module_salt_min = MODULE_DEFAULT; + module_ctx->module_salt_type = module_salt_type; + module_ctx->module_separator = MODULE_DEFAULT; + module_ctx->module_st_hash = module_st_hash; + module_ctx->module_st_pass = module_st_pass; + module_ctx->module_tmp_size = MODULE_DEFAULT; + module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_warmup_disable = MODULE_DEFAULT; +} diff --git a/src/modules/module_33500.c b/src/modules/module_33500.c new file mode 100644 index 000000000..9554ea8f3 --- /dev/null +++ b/src/modules/module_33500.c @@ -0,0 +1,414 @@ +/** + * Author......: See docs/credits.txt + * License.....: MIT + */ + +#include "common.h" +#include "types.h" +#include "modules.h" +#include "bitops.h" +#include "convert.h" +#include "shared.h" +#include "emu_inc_hash_md5.h" + +static const u32 ATTACK_EXEC = ATTACK_EXEC_INSIDE_KERNEL; +static const u32 DGST_POS0 = 0; +static const u32 DGST_POS1 = 1; +static const u32 DGST_POS2 = 2; +static const u32 DGST_POS3 = 3; +static const u32 DGST_SIZE = DGST_SIZE_4_4; // originally DGST_SIZE_4_2 +static const u32 HASH_CATEGORY = HASH_CATEGORY_RAW_CIPHER_KPA; +static const char *HASH_NAME = "RC4 40-bit DropN"; +static const u64 KERN_TYPE = 33500; +static const u32 OPTI_TYPE = OPTI_TYPE_ZERO_BYTE + | OPTI_TYPE_NOT_ITERATED + | OPTI_TYPE_NOT_SALTED; +static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE + | OPTS_TYPE_SUGGEST_KG // collisions by using pt_len != pass_len + | OPTS_TYPE_PT_GENERATE_LE; +static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; +static const char *ST_PASS = "hashc"; +static const char *ST_HASH = "$rc4$40$0$e9a41693b759cf88929ca31203694f$0$48656c6c6f"; + +u32 module_attack_exec (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ATTACK_EXEC; } +u32 module_dgst_pos0 (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_POS0; } +u32 module_dgst_pos1 (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_POS1; } +u32 module_dgst_pos2 (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_POS2; } +u32 module_dgst_pos3 (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_POS3; } +u32 module_dgst_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_SIZE; } +u32 module_hash_category (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return HASH_CATEGORY; } +const char *module_hash_name (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return HASH_NAME; } +u64 module_kern_type (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return KERN_TYPE; } +u32 module_opti_type (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return OPTI_TYPE; } +u64 module_opts_type (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return OPTS_TYPE; } +u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return SALT_TYPE; } +const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; } +const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; } + +typedef struct rc4 +{ + u32 dropN; + u32 ct_len; + u32 pt_len; + u32 pt_off; + + u32 pt[2]; + u32 ct[16]; + +} rc4_t; + +static const char *SIGNATURE_RC4 = "$rc4$"; +#define RC4_KEY_BITS 40 +#define PW_LEN (RC4_KEY_BITS / 8) // 5 + +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303, compiler timeout but only with -a0 + return true; + } + } + } + + return false; +} + +char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + char *jit_build_options = NULL; + + u32 native_threads = 0; + + if (device_param->opencl_device_type & CL_DEVICE_TYPE_CPU) + { + native_threads = 1; + } + else if (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU) + { + #if defined (__APPLE__) + + native_threads = 32; + + #else + + if (device_param->device_local_mem_size < 49152) + { + native_threads = MIN (device_param->kernel_preferred_wgs_multiple, 32); // We can't just set 32, because Intel GPU need 8 + } + else + { + native_threads = device_param->kernel_preferred_wgs_multiple; + } + + #endif + } + + hc_asprintf (&jit_build_options, "-D FIXED_LOCAL_SIZE=%u -D _unroll", native_threads); + + return jit_build_options; +} + +u64 module_esalt_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) +{ + const u64 esalt_size = (const u64) sizeof (rc4_t); + + return esalt_size; +} + +u32 module_pw_min (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) +{ + const u32 pw_min = PW_LEN; + + return pw_min; +} + +u32 module_pw_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) +{ + const u32 pw_max = PW_LEN; + + return pw_max; +} + +int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED void *digest_buf, MAYBE_UNUSED salt_t *salt, MAYBE_UNUSED void *esalt_buf, MAYBE_UNUSED void *hook_salt_buf, MAYBE_UNUSED hashinfo_t *hash_info, const char *line_buf, MAYBE_UNUSED const int line_len) +{ + u32 *digest = (u32 *) digest_buf; + + rc4_t *rc4 = (rc4_t *) esalt_buf; + + hc_token_t token; + + memset (&token, 0, sizeof (hc_token_t)); + + token.token_cnt = 6; + + token.signatures_cnt = 1; + token.signatures_buf[0] = SIGNATURE_RC4; + + token.len[0] = strlen (SIGNATURE_RC4); + token.attr[0] = TOKEN_ATTR_FIXED_LENGTH + | TOKEN_ATTR_VERIFY_SIGNATURE; + // key bit + + token.sep[1] = '$'; + token.len_min[1] = 2; + token.len_max[1] = 3; + token.attr[1] = TOKEN_ATTR_VERIFY_LENGTH + | TOKEN_ATTR_VERIFY_DIGIT; + + // dropN + + token.sep[2] = '$'; + token.len_min[2] = 1; + token.len_max[2] = 3; + token.attr[2] = TOKEN_ATTR_VERIFY_LENGTH + | TOKEN_ATTR_VERIFY_DIGIT; + + // ciphertext + + token.sep[3] = '$'; + token.len_min[3] = 1 * 2; + token.len_max[3] = 64 * 2; + token.attr[3] = TOKEN_ATTR_VERIFY_LENGTH + | TOKEN_ATTR_VERIFY_HEX; + + // plaintext offset + + token.sep[4] = '$'; + token.len[4] = 1; + token.attr[4] = TOKEN_ATTR_FIXED_LENGTH + | TOKEN_ATTR_VERIFY_DIGIT; + + // plaintext + + token.sep[5] = '$'; + token.len_min[5] = 1 * 2; + token.len_max[5] = 64 * 2; + token.attr[5] = TOKEN_ATTR_VERIFY_LENGTH + | TOKEN_ATTR_VERIFY_HEX; + + const int rc_tokenizer = input_tokenizer ((const u8 *) line_buf, line_len, &token); + + if (rc_tokenizer != PARSER_OK) return (rc_tokenizer); + + // key bit + + const u8 *key_bit_pos = token.buf[1]; + + u32 key_bit = hc_strtoul ((const char *) key_bit_pos, NULL, 10); + + if (key_bit != RC4_KEY_BITS) return (PARSER_KEY_SIZE); + + // dropN + + const u8 *dropN_pos = token.buf[2]; + + rc4->dropN = hc_strtoul ((const char *) dropN_pos, NULL, 10); + + // ciphertext + + u32 salt_len = 0; + u32 salt_buf[16]; + + memset (salt_buf, 0, sizeof (salt_buf)); + + u8 *salt_buf_ptr = (u8 *) salt_buf; + + const u8 *ciphertext_pos = token.buf[3]; + const u32 ciphertext_len = token.len[3]; + + rc4->ct_len = ciphertext_len / 2; + + u8 *ct = (u8 *) rc4->ct; + + for (u32 i = 0, j = 0; i < rc4->ct_len; i += 1, j += 2) + { + ct[i] = hex_to_u8 (ciphertext_pos + j); + + salt_buf_ptr[i] = ct[i]; + salt_len++; + } + + // fake salt (part 1) + + md5_ctx_t md5_ctx; + + md5_init (&md5_ctx); + md5_update (&md5_ctx, salt_buf, salt_len); + + // plaintext offset + + const u8 *pt_offset_pos = token.buf[4]; + + rc4->pt_off = hc_strtoul ((const char *) pt_offset_pos, NULL, 10); + + if (rc4->pt_off > rc4->ct_len) return PARSER_PT_OFFSET; + + // plaintext + + const u8 *plaintext_pos = token.buf[5]; + const u32 plaintext_len = token.len[5]; + + rc4->pt_len = plaintext_len / 2; + + if (rc4->pt_len > rc4->ct_len) return PARSER_PT_LENGTH; + + if ((rc4->pt_off + rc4->pt_len) > rc4->ct_len) return PARSER_PT_OFFSET; + + u8 *pt = (u8 *) rc4->pt; + u8 *dgst = (u8 *) digest; + + salt_len = 0; + memset (salt_buf, 0, sizeof (salt_buf)); + + for (u32 i = 0, j = 0; i < rc4->pt_len; i += 1, j += 2) + { + pt[i] = hex_to_u8 (plaintext_pos + j); + + dgst[i] = pt[i]; + + salt_buf[i] = pt[i]; + salt_len++; + } + + // fake salt (part 2) + + md5_update (&md5_ctx, salt_buf, salt_len); + md5_final (&md5_ctx); + + salt->salt_buf[0] = md5_ctx.h[0]; + salt->salt_buf[1] = md5_ctx.h[1]; + salt->salt_buf[2] = md5_ctx.h[2]; + salt->salt_buf[3] = md5_ctx.h[3]; + + salt->salt_len = 16; + + return (PARSER_OK); +} + +int module_hash_encode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const void *digest_buf, MAYBE_UNUSED const salt_t *salt, MAYBE_UNUSED const void *esalt_buf, MAYBE_UNUSED const void *hook_salt_buf, MAYBE_UNUSED const hashinfo_t *hash_info, char *line_buf, MAYBE_UNUSED const int line_size) +{ + const u32 *digest = (const u32 *) digest_buf; + + const rc4_t *rc4 = (const rc4_t *) esalt_buf; + + snprintf (line_buf, line_size, "%s%u$%u$", SIGNATURE_RC4, RC4_KEY_BITS, rc4->dropN); + + u8 *out_buf = (u8 *) line_buf; + + int out_len = strlen (line_buf); + + u8 *ct = (u8 *) rc4->ct; + + for (u32 i = 0; i < rc4->ct_len; i++) + { + u8_to_hex (ct[i], out_buf + out_len); out_len += 2; + } + + out_buf[out_len++] = '$'; + + char tmp_buf[10] = { 0 }; + + snprintf ((char *) tmp_buf, sizeof (tmp_buf), "%u", rc4->pt_off); + + snprintf ((char *) out_buf + out_len, sizeof (tmp_buf), "%u", rc4->pt_off); + + out_len += strlen (tmp_buf); + + out_buf[out_len++] = '$'; + + u8 *dgst = (u8 *) digest; + + for (u32 i = 0; i < rc4->pt_len; i++) + { + u8_to_hex (dgst[i], out_buf + out_len); out_len += 2; + } + + return out_len; +} + +void module_init (module_ctx_t *module_ctx) +{ + module_ctx->module_context_size = MODULE_CONTEXT_SIZE_CURRENT; + module_ctx->module_interface_version = MODULE_INTERFACE_VERSION_CURRENT; + + module_ctx->module_attack_exec = module_attack_exec; + module_ctx->module_benchmark_esalt = MODULE_DEFAULT; + module_ctx->module_benchmark_hook_salt = MODULE_DEFAULT; + module_ctx->module_benchmark_mask = MODULE_DEFAULT; + module_ctx->module_benchmark_charset = MODULE_DEFAULT; + module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; + module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; + module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; + module_ctx->module_deprecated_notice = MODULE_DEFAULT; + module_ctx->module_dgst_pos0 = module_dgst_pos0; + module_ctx->module_dgst_pos1 = module_dgst_pos1; + module_ctx->module_dgst_pos2 = module_dgst_pos2; + module_ctx->module_dgst_pos3 = module_dgst_pos3; + module_ctx->module_dgst_size = module_dgst_size; + module_ctx->module_dictstat_disable = MODULE_DEFAULT; + module_ctx->module_esalt_size = module_esalt_size; + module_ctx->module_extra_buffer_size = MODULE_DEFAULT; + module_ctx->module_extra_tmp_size = MODULE_DEFAULT; + module_ctx->module_extra_tuningdb_block = MODULE_DEFAULT; + module_ctx->module_forced_outfile_format = MODULE_DEFAULT; + module_ctx->module_hash_binary_count = MODULE_DEFAULT; + module_ctx->module_hash_binary_parse = MODULE_DEFAULT; + module_ctx->module_hash_binary_save = MODULE_DEFAULT; + module_ctx->module_hash_decode_postprocess = MODULE_DEFAULT; + module_ctx->module_hash_decode_potfile = MODULE_DEFAULT; + module_ctx->module_hash_decode_zero_hash = MODULE_DEFAULT; + module_ctx->module_hash_decode = module_hash_decode; + module_ctx->module_hash_encode_status = MODULE_DEFAULT; + module_ctx->module_hash_encode_potfile = MODULE_DEFAULT; + module_ctx->module_hash_encode = module_hash_encode; + module_ctx->module_hash_init_selftest = MODULE_DEFAULT; + module_ctx->module_hash_mode = MODULE_DEFAULT; + module_ctx->module_hash_category = module_hash_category; + module_ctx->module_hash_name = module_hash_name; + module_ctx->module_hashes_count_min = MODULE_DEFAULT; + module_ctx->module_hashes_count_max = MODULE_DEFAULT; + module_ctx->module_hlfmt_disable = MODULE_DEFAULT; + module_ctx->module_hook_extra_param_size = MODULE_DEFAULT; + module_ctx->module_hook_extra_param_init = MODULE_DEFAULT; + module_ctx->module_hook_extra_param_term = MODULE_DEFAULT; + module_ctx->module_hook12 = MODULE_DEFAULT; + module_ctx->module_hook23 = MODULE_DEFAULT; + module_ctx->module_hook_salt_size = MODULE_DEFAULT; + module_ctx->module_hook_size = MODULE_DEFAULT; + module_ctx->module_jit_build_options = module_jit_build_options; + module_ctx->module_jit_cache_disable = MODULE_DEFAULT; + module_ctx->module_kernel_accel_max = MODULE_DEFAULT; + module_ctx->module_kernel_accel_min = MODULE_DEFAULT; + module_ctx->module_kernel_loops_max = MODULE_DEFAULT; + module_ctx->module_kernel_loops_min = MODULE_DEFAULT; + module_ctx->module_kernel_threads_max = MODULE_DEFAULT; + module_ctx->module_kernel_threads_min = MODULE_DEFAULT; + module_ctx->module_kern_type = module_kern_type; + module_ctx->module_kern_type_dynamic = MODULE_DEFAULT; + module_ctx->module_opti_type = module_opti_type; + module_ctx->module_opts_type = module_opts_type; + module_ctx->module_outfile_check_disable = MODULE_DEFAULT; + module_ctx->module_outfile_check_nocomp = MODULE_DEFAULT; + module_ctx->module_potfile_custom_check = MODULE_DEFAULT; + module_ctx->module_potfile_disable = MODULE_DEFAULT; + module_ctx->module_potfile_keep_all_hashes = MODULE_DEFAULT; + module_ctx->module_pwdump_column = MODULE_DEFAULT; + module_ctx->module_pw_max = module_pw_max; + module_ctx->module_pw_min = module_pw_min; + module_ctx->module_salt_max = MODULE_DEFAULT; + module_ctx->module_salt_min = MODULE_DEFAULT; + module_ctx->module_salt_type = module_salt_type; + module_ctx->module_separator = MODULE_DEFAULT; + module_ctx->module_st_hash = module_st_hash; + module_ctx->module_st_pass = module_st_pass; + module_ctx->module_tmp_size = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; + module_ctx->module_warmup_disable = MODULE_DEFAULT; +} diff --git a/src/modules/module_33501.c b/src/modules/module_33501.c new file mode 100644 index 000000000..04befc153 --- /dev/null +++ b/src/modules/module_33501.c @@ -0,0 +1,414 @@ +/** + * Author......: See docs/credits.txt + * License.....: MIT + */ + +#include "common.h" +#include "types.h" +#include "modules.h" +#include "bitops.h" +#include "convert.h" +#include "shared.h" +#include "emu_inc_hash_md5.h" + +static const u32 ATTACK_EXEC = ATTACK_EXEC_INSIDE_KERNEL; +static const u32 DGST_POS0 = 0; +static const u32 DGST_POS1 = 1; +static const u32 DGST_POS2 = 2; +static const u32 DGST_POS3 = 3; +static const u32 DGST_SIZE = DGST_SIZE_4_4; +static const u32 HASH_CATEGORY = HASH_CATEGORY_RAW_CIPHER_KPA; +static const char *HASH_NAME = "RC4 72-bit DropN"; +static const u64 KERN_TYPE = 33501; +static const u32 OPTI_TYPE = OPTI_TYPE_ZERO_BYTE + | OPTI_TYPE_NOT_ITERATED + | OPTI_TYPE_NOT_SALTED; +static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE + | OPTS_TYPE_SUGGEST_KG // collisions by using pt_len != pass_len + | OPTS_TYPE_PT_GENERATE_LE; +static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; +static const char *ST_PASS = "hashcat12"; +static const char *ST_HASH = "$rc4$72$0$90eaa8d71c$0$48656c6c6f"; + +u32 module_attack_exec (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ATTACK_EXEC; } +u32 module_dgst_pos0 (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_POS0; } +u32 module_dgst_pos1 (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_POS1; } +u32 module_dgst_pos2 (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_POS2; } +u32 module_dgst_pos3 (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_POS3; } +u32 module_dgst_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_SIZE; } +u32 module_hash_category (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return HASH_CATEGORY; } +const char *module_hash_name (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return HASH_NAME; } +u64 module_kern_type (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return KERN_TYPE; } +u32 module_opti_type (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return OPTI_TYPE; } +u64 module_opts_type (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return OPTS_TYPE; } +u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return SALT_TYPE; } +const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; } +const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; } + +typedef struct rc4 +{ + u32 dropN; + u32 ct_len; + u32 pt_len; + u32 pt_off; + + u32 pt[2]; + u32 ct[16]; + +} rc4_t; + +static const char *SIGNATURE_RC4 = "$rc4$"; +#define RC4_KEY_BITS 72 +#define PW_LEN (RC4_KEY_BITS / 8) // 9 + +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303, compiler timeout but only with -a0 + return true; + } + } + } + + return false; +} + +char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + char *jit_build_options = NULL; + + u32 native_threads = 0; + + if (device_param->opencl_device_type & CL_DEVICE_TYPE_CPU) + { + native_threads = 1; + } + else if (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU) + { + #if defined (__APPLE__) + + native_threads = 32; + + #else + + if (device_param->device_local_mem_size < 49152) + { + native_threads = MIN (device_param->kernel_preferred_wgs_multiple, 32); // We can't just set 32, because Intel GPU need 8 + } + else + { + native_threads = device_param->kernel_preferred_wgs_multiple; + } + + #endif + } + + hc_asprintf (&jit_build_options, "-D FIXED_LOCAL_SIZE=%u -D _unroll", native_threads); + + return jit_build_options; +} + +u64 module_esalt_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) +{ + const u64 esalt_size = (const u64) sizeof (rc4_t); + + return esalt_size; +} + +u32 module_pw_min (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) +{ + const u32 pw_min = PW_LEN; + + return pw_min; +} + +u32 module_pw_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) +{ + const u32 pw_max = PW_LEN; + + return pw_max; +} + +int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED void *digest_buf, MAYBE_UNUSED salt_t *salt, MAYBE_UNUSED void *esalt_buf, MAYBE_UNUSED void *hook_salt_buf, MAYBE_UNUSED hashinfo_t *hash_info, const char *line_buf, MAYBE_UNUSED const int line_len) +{ + u32 *digest = (u32 *) digest_buf; + + rc4_t *rc4 = (rc4_t *) esalt_buf; + + hc_token_t token; + + memset (&token, 0, sizeof (hc_token_t)); + + token.token_cnt = 6; + + token.signatures_cnt = 1; + token.signatures_buf[0] = SIGNATURE_RC4; + + token.len[0] = strlen (SIGNATURE_RC4); + token.attr[0] = TOKEN_ATTR_FIXED_LENGTH + | TOKEN_ATTR_VERIFY_SIGNATURE; + // key bit + + token.sep[1] = '$'; + token.len_min[1] = 2; + token.len_max[1] = 3; + token.attr[1] = TOKEN_ATTR_VERIFY_LENGTH + | TOKEN_ATTR_VERIFY_DIGIT; + + // dropN + + token.sep[2] = '$'; + token.len_min[2] = 1; + token.len_max[2] = 3; + token.attr[2] = TOKEN_ATTR_VERIFY_LENGTH + | TOKEN_ATTR_VERIFY_DIGIT; + + // ciphertext + + token.sep[3] = '$'; + token.len_min[3] = 1 * 2; + token.len_max[3] = 64 * 2; + token.attr[3] = TOKEN_ATTR_VERIFY_LENGTH + | TOKEN_ATTR_VERIFY_HEX; + + // plaintext offset + + token.sep[4] = '$'; + token.len[4] = 1; + token.attr[4] = TOKEN_ATTR_FIXED_LENGTH + | TOKEN_ATTR_VERIFY_DIGIT; + + // plaintext + + token.sep[5] = '$'; + token.len_min[5] = 1 * 2; + token.len_max[5] = 64 * 2; + token.attr[5] = TOKEN_ATTR_VERIFY_LENGTH + | TOKEN_ATTR_VERIFY_HEX; + + const int rc_tokenizer = input_tokenizer ((const u8 *) line_buf, line_len, &token); + + if (rc_tokenizer != PARSER_OK) return (rc_tokenizer); + + // key bit + + const u8 *key_bit_pos = token.buf[1]; + + u32 key_bit = hc_strtoul ((const char *) key_bit_pos, NULL, 10); + + if (key_bit != RC4_KEY_BITS) return (PARSER_KEY_SIZE); + + // dropN + + const u8 *dropN_pos = token.buf[2]; + + rc4->dropN = hc_strtoul ((const char *) dropN_pos, NULL, 10); + + // ciphertext + + u32 salt_len = 0; + u32 salt_buf[16]; + + memset (salt_buf, 0, sizeof (salt_buf)); + + u8 *salt_buf_ptr = (u8 *) salt_buf; + + const u8 *ciphertext_pos = token.buf[3]; + const u32 ciphertext_len = token.len[3]; + + rc4->ct_len = ciphertext_len / 2; + + u8 *ct = (u8 *) rc4->ct; + + for (u32 i = 0, j = 0; i < rc4->ct_len; i += 1, j += 2) + { + ct[i] = hex_to_u8 (ciphertext_pos + j); + + salt_buf_ptr[i] = ct[i]; + salt_len++; + } + + // fake salt (part 1) + + md5_ctx_t md5_ctx; + + md5_init (&md5_ctx); + md5_update (&md5_ctx, salt_buf, salt_len); + + // plaintext offset + + const u8 *pt_offset_pos = token.buf[4]; + + rc4->pt_off = hc_strtoul ((const char *) pt_offset_pos, NULL, 10); + + if (rc4->pt_off > rc4->ct_len) return PARSER_PT_OFFSET; + + // plaintext + + const u8 *plaintext_pos = token.buf[5]; + const u32 plaintext_len = token.len[5]; + + rc4->pt_len = plaintext_len / 2; + + if (rc4->pt_len > rc4->ct_len) return PARSER_PT_LENGTH; + + if ((rc4->pt_off + rc4->pt_len) > rc4->ct_len) return PARSER_PT_OFFSET; + + u8 *pt = (u8 *) rc4->pt; + u8 *dgst = (u8 *) digest; + + salt_len = 0; + memset (salt_buf, 0, sizeof (salt_buf)); + + for (u32 i = 0, j = 0; i < rc4->pt_len; i += 1, j += 2) + { + pt[i] = hex_to_u8 (plaintext_pos + j); + + dgst[i] = pt[i]; + + salt_buf[i] = pt[i]; + salt_len++; + } + + // fake salt (part 2) + + md5_update (&md5_ctx, salt_buf, salt_len); + md5_final (&md5_ctx); + + salt->salt_buf[0] = md5_ctx.h[0]; + salt->salt_buf[1] = md5_ctx.h[1]; + salt->salt_buf[2] = md5_ctx.h[2]; + salt->salt_buf[3] = md5_ctx.h[3]; + + salt->salt_len = 16; + + return (PARSER_OK); +} + +int module_hash_encode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const void *digest_buf, MAYBE_UNUSED const salt_t *salt, MAYBE_UNUSED const void *esalt_buf, MAYBE_UNUSED const void *hook_salt_buf, MAYBE_UNUSED const hashinfo_t *hash_info, char *line_buf, MAYBE_UNUSED const int line_size) +{ + const u32 *digest = (const u32 *) digest_buf; + + const rc4_t *rc4 = (const rc4_t *) esalt_buf; + + snprintf (line_buf, line_size, "%s%u$%u$", SIGNATURE_RC4, RC4_KEY_BITS, rc4->dropN); + + u8 *out_buf = (u8 *) line_buf; + + int out_len = strlen (line_buf); + + u8 *ct = (u8 *) rc4->ct; + + for (u32 i = 0; i < rc4->ct_len; i++) + { + u8_to_hex (ct[i], out_buf + out_len); out_len += 2; + } + + out_buf[out_len++] = '$'; + + char tmp_buf[10] = { 0 }; + + snprintf ((char *) tmp_buf, sizeof (tmp_buf), "%u", rc4->pt_off); + + snprintf ((char *) out_buf + out_len, sizeof (tmp_buf), "%u", rc4->pt_off); + + out_len += strlen (tmp_buf); + + out_buf[out_len++] = '$'; + + u8 *dgst = (u8 *) digest; + + for (u32 i = 0; i < rc4->pt_len; i++) + { + u8_to_hex (dgst[i], out_buf + out_len); out_len += 2; + } + + return out_len; +} + +void module_init (module_ctx_t *module_ctx) +{ + module_ctx->module_context_size = MODULE_CONTEXT_SIZE_CURRENT; + module_ctx->module_interface_version = MODULE_INTERFACE_VERSION_CURRENT; + + module_ctx->module_attack_exec = module_attack_exec; + module_ctx->module_benchmark_esalt = MODULE_DEFAULT; + module_ctx->module_benchmark_hook_salt = MODULE_DEFAULT; + module_ctx->module_benchmark_mask = MODULE_DEFAULT; + module_ctx->module_benchmark_charset = MODULE_DEFAULT; + module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; + module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; + module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; + module_ctx->module_deprecated_notice = MODULE_DEFAULT; + module_ctx->module_dgst_pos0 = module_dgst_pos0; + module_ctx->module_dgst_pos1 = module_dgst_pos1; + module_ctx->module_dgst_pos2 = module_dgst_pos2; + module_ctx->module_dgst_pos3 = module_dgst_pos3; + module_ctx->module_dgst_size = module_dgst_size; + module_ctx->module_dictstat_disable = MODULE_DEFAULT; + module_ctx->module_esalt_size = module_esalt_size; + module_ctx->module_extra_buffer_size = MODULE_DEFAULT; + module_ctx->module_extra_tmp_size = MODULE_DEFAULT; + module_ctx->module_extra_tuningdb_block = MODULE_DEFAULT; + module_ctx->module_forced_outfile_format = MODULE_DEFAULT; + module_ctx->module_hash_binary_count = MODULE_DEFAULT; + module_ctx->module_hash_binary_parse = MODULE_DEFAULT; + module_ctx->module_hash_binary_save = MODULE_DEFAULT; + module_ctx->module_hash_decode_postprocess = MODULE_DEFAULT; + module_ctx->module_hash_decode_potfile = MODULE_DEFAULT; + module_ctx->module_hash_decode_zero_hash = MODULE_DEFAULT; + module_ctx->module_hash_decode = module_hash_decode; + module_ctx->module_hash_encode_status = MODULE_DEFAULT; + module_ctx->module_hash_encode_potfile = MODULE_DEFAULT; + module_ctx->module_hash_encode = module_hash_encode; + module_ctx->module_hash_init_selftest = MODULE_DEFAULT; + module_ctx->module_hash_mode = MODULE_DEFAULT; + module_ctx->module_hash_category = module_hash_category; + module_ctx->module_hash_name = module_hash_name; + module_ctx->module_hashes_count_min = MODULE_DEFAULT; + module_ctx->module_hashes_count_max = MODULE_DEFAULT; + module_ctx->module_hlfmt_disable = MODULE_DEFAULT; + module_ctx->module_hook_extra_param_size = MODULE_DEFAULT; + module_ctx->module_hook_extra_param_init = MODULE_DEFAULT; + module_ctx->module_hook_extra_param_term = MODULE_DEFAULT; + module_ctx->module_hook12 = MODULE_DEFAULT; + module_ctx->module_hook23 = MODULE_DEFAULT; + module_ctx->module_hook_salt_size = MODULE_DEFAULT; + module_ctx->module_hook_size = MODULE_DEFAULT; + module_ctx->module_jit_build_options = module_jit_build_options; + module_ctx->module_jit_cache_disable = MODULE_DEFAULT; + module_ctx->module_kernel_accel_max = MODULE_DEFAULT; + module_ctx->module_kernel_accel_min = MODULE_DEFAULT; + module_ctx->module_kernel_loops_max = MODULE_DEFAULT; + module_ctx->module_kernel_loops_min = MODULE_DEFAULT; + module_ctx->module_kernel_threads_max = MODULE_DEFAULT; + module_ctx->module_kernel_threads_min = MODULE_DEFAULT; + module_ctx->module_kern_type = module_kern_type; + module_ctx->module_kern_type_dynamic = MODULE_DEFAULT; + module_ctx->module_opti_type = module_opti_type; + module_ctx->module_opts_type = module_opts_type; + module_ctx->module_outfile_check_disable = MODULE_DEFAULT; + module_ctx->module_outfile_check_nocomp = MODULE_DEFAULT; + module_ctx->module_potfile_custom_check = MODULE_DEFAULT; + module_ctx->module_potfile_disable = MODULE_DEFAULT; + module_ctx->module_potfile_keep_all_hashes = MODULE_DEFAULT; + module_ctx->module_pwdump_column = MODULE_DEFAULT; + module_ctx->module_pw_max = module_pw_max; + module_ctx->module_pw_min = module_pw_min; + module_ctx->module_salt_max = MODULE_DEFAULT; + module_ctx->module_salt_min = MODULE_DEFAULT; + module_ctx->module_salt_type = module_salt_type; + module_ctx->module_separator = MODULE_DEFAULT; + module_ctx->module_st_hash = module_st_hash; + module_ctx->module_st_pass = module_st_pass; + module_ctx->module_tmp_size = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; + module_ctx->module_warmup_disable = MODULE_DEFAULT; +} diff --git a/src/modules/module_33502.c b/src/modules/module_33502.c new file mode 100644 index 000000000..50bf97077 --- /dev/null +++ b/src/modules/module_33502.c @@ -0,0 +1,414 @@ +/** + * Author......: See docs/credits.txt + * License.....: MIT + */ + +#include "common.h" +#include "types.h" +#include "modules.h" +#include "bitops.h" +#include "convert.h" +#include "shared.h" +#include "emu_inc_hash_md5.h" + +static const u32 ATTACK_EXEC = ATTACK_EXEC_INSIDE_KERNEL; +static const u32 DGST_POS0 = 0; +static const u32 DGST_POS1 = 1; +static const u32 DGST_POS2 = 2; +static const u32 DGST_POS3 = 3; +static const u32 DGST_SIZE = DGST_SIZE_4_4; +static const u32 HASH_CATEGORY = HASH_CATEGORY_RAW_CIPHER_KPA; +static const char *HASH_NAME = "RC4 104-bit DropN"; +static const u64 KERN_TYPE = 33502; +static const u32 OPTI_TYPE = OPTI_TYPE_ZERO_BYTE + | OPTI_TYPE_NOT_ITERATED + | OPTI_TYPE_NOT_SALTED; +static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE + | OPTS_TYPE_SUGGEST_KG // collisions by using pt_len != pass_len + | OPTS_TYPE_PT_GENERATE_LE; +static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; +static const char *ST_PASS = "hashcat123456"; +static const char *ST_HASH = "$rc4$104$0$a04245c3d7$0$48656c6c6f"; + +u32 module_attack_exec (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ATTACK_EXEC; } +u32 module_dgst_pos0 (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_POS0; } +u32 module_dgst_pos1 (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_POS1; } +u32 module_dgst_pos2 (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_POS2; } +u32 module_dgst_pos3 (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_POS3; } +u32 module_dgst_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_SIZE; } +u32 module_hash_category (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return HASH_CATEGORY; } +const char *module_hash_name (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return HASH_NAME; } +u64 module_kern_type (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return KERN_TYPE; } +u32 module_opti_type (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return OPTI_TYPE; } +u64 module_opts_type (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return OPTS_TYPE; } +u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return SALT_TYPE; } +const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; } +const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; } + +typedef struct rc4 +{ + u32 dropN; + u32 ct_len; + u32 pt_len; + u32 pt_off; + + u32 pt[2]; + u32 ct[16]; + +} rc4_t; + +static const char *SIGNATURE_RC4 = "$rc4$"; +#define RC4_KEY_BITS 104 +#define PW_LEN (RC4_KEY_BITS / 8) // 13 + +bool module_unstable_warning (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + if ((device_param->opencl_platform_vendor_id == VENDOR_ID_APPLE) && (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)) + { + if (device_param->is_metal == true) + { + if (strncmp (device_param->device_name, "Intel", 5) == 0) + { + // Intel Iris Graphics, Metal Version 244.303, compiler timeout but only with -a0 + return true; + } + } + } + + return false; +} + +char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + char *jit_build_options = NULL; + + u32 native_threads = 0; + + if (device_param->opencl_device_type & CL_DEVICE_TYPE_CPU) + { + native_threads = 1; + } + else if (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU) + { + #if defined (__APPLE__) + + native_threads = 32; + + #else + + if (device_param->device_local_mem_size < 49152) + { + native_threads = MIN (device_param->kernel_preferred_wgs_multiple, 32); // We can't just set 32, because Intel GPU need 8 + } + else + { + native_threads = device_param->kernel_preferred_wgs_multiple; + } + + #endif + } + + hc_asprintf (&jit_build_options, "-D FIXED_LOCAL_SIZE=%u -D _unroll", native_threads); + + return jit_build_options; +} + +u64 module_esalt_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) +{ + const u64 esalt_size = (const u64) sizeof (rc4_t); + + return esalt_size; +} + +u32 module_pw_min (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) +{ + const u32 pw_min = PW_LEN; + + return pw_min; +} + +u32 module_pw_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) +{ + const u32 pw_max = PW_LEN; + + return pw_max; +} + +int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED void *digest_buf, MAYBE_UNUSED salt_t *salt, MAYBE_UNUSED void *esalt_buf, MAYBE_UNUSED void *hook_salt_buf, MAYBE_UNUSED hashinfo_t *hash_info, const char *line_buf, MAYBE_UNUSED const int line_len) +{ + u32 *digest = (u32 *) digest_buf; + + rc4_t *rc4 = (rc4_t *) esalt_buf; + + hc_token_t token; + + memset (&token, 0, sizeof (hc_token_t)); + + token.token_cnt = 6; + + token.signatures_cnt = 1; + token.signatures_buf[0] = SIGNATURE_RC4; + + token.len[0] = strlen (SIGNATURE_RC4); + token.attr[0] = TOKEN_ATTR_FIXED_LENGTH + | TOKEN_ATTR_VERIFY_SIGNATURE; + // key bit + + token.sep[1] = '$'; + token.len_min[1] = 2; + token.len_max[1] = 3; + token.attr[1] = TOKEN_ATTR_VERIFY_LENGTH + | TOKEN_ATTR_VERIFY_DIGIT; + + // dropN + + token.sep[2] = '$'; + token.len_min[2] = 1; + token.len_max[2] = 3; + token.attr[2] = TOKEN_ATTR_VERIFY_LENGTH + | TOKEN_ATTR_VERIFY_DIGIT; + + // ciphertext + + token.sep[3] = '$'; + token.len_min[3] = 1 * 2; + token.len_max[3] = 64 * 2; + token.attr[3] = TOKEN_ATTR_VERIFY_LENGTH + | TOKEN_ATTR_VERIFY_HEX; + + // plaintext offset + + token.sep[4] = '$'; + token.len[4] = 1; + token.attr[4] = TOKEN_ATTR_FIXED_LENGTH + | TOKEN_ATTR_VERIFY_DIGIT; + + // plaintext + + token.sep[5] = '$'; + token.len_min[5] = 1 * 2; + token.len_max[5] = 64 * 2; + token.attr[5] = TOKEN_ATTR_VERIFY_LENGTH + | TOKEN_ATTR_VERIFY_HEX; + + const int rc_tokenizer = input_tokenizer ((const u8 *) line_buf, line_len, &token); + + if (rc_tokenizer != PARSER_OK) return (rc_tokenizer); + + // key bit + + const u8 *key_bit_pos = token.buf[1]; + + u32 key_bit = hc_strtoul ((const char *) key_bit_pos, NULL, 10); + + if (key_bit != RC4_KEY_BITS) return (PARSER_KEY_SIZE); + + // dropN + + const u8 *dropN_pos = token.buf[2]; + + rc4->dropN = hc_strtoul ((const char *) dropN_pos, NULL, 10); + + // ciphertext + + u32 salt_len = 0; + u32 salt_buf[16]; + + memset (salt_buf, 0, sizeof (salt_buf)); + + u8 *salt_buf_ptr = (u8 *) salt_buf; + + const u8 *ciphertext_pos = token.buf[3]; + const u32 ciphertext_len = token.len[3]; + + rc4->ct_len = ciphertext_len / 2; + + u8 *ct = (u8 *) rc4->ct; + + for (u32 i = 0, j = 0; i < rc4->ct_len; i += 1, j += 2) + { + ct[i] = hex_to_u8 (ciphertext_pos + j); + + salt_buf_ptr[i] = ct[i]; + salt_len++; + } + + // fake salt (part 1) + + md5_ctx_t md5_ctx; + + md5_init (&md5_ctx); + md5_update (&md5_ctx, salt_buf, salt_len); + + // plaintext offset + + const u8 *pt_offset_pos = token.buf[4]; + + rc4->pt_off = hc_strtoul ((const char *) pt_offset_pos, NULL, 10); + + if (rc4->pt_off > rc4->ct_len) return PARSER_PT_OFFSET; + + // plaintext + + const u8 *plaintext_pos = token.buf[5]; + const u32 plaintext_len = token.len[5]; + + rc4->pt_len = plaintext_len / 2; + + if (rc4->pt_len > rc4->ct_len) return PARSER_PT_LENGTH; + + if ((rc4->pt_off + rc4->pt_len) > rc4->ct_len) return PARSER_PT_OFFSET; + + u8 *pt = (u8 *) rc4->pt; + u8 *dgst = (u8 *) digest; + + salt_len = 0; + memset (salt_buf, 0, sizeof (salt_buf)); + + for (u32 i = 0, j = 0; i < rc4->pt_len; i += 1, j += 2) + { + pt[i] = hex_to_u8 (plaintext_pos + j); + + dgst[i] = pt[i]; + + salt_buf[i] = pt[i]; + salt_len++; + } + + // fake salt (part 2) + + md5_update (&md5_ctx, salt_buf, salt_len); + md5_final (&md5_ctx); + + salt->salt_buf[0] = md5_ctx.h[0]; + salt->salt_buf[1] = md5_ctx.h[1]; + salt->salt_buf[2] = md5_ctx.h[2]; + salt->salt_buf[3] = md5_ctx.h[3]; + + salt->salt_len = 16; + + return (PARSER_OK); +} + +int module_hash_encode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const void *digest_buf, MAYBE_UNUSED const salt_t *salt, MAYBE_UNUSED const void *esalt_buf, MAYBE_UNUSED const void *hook_salt_buf, MAYBE_UNUSED const hashinfo_t *hash_info, char *line_buf, MAYBE_UNUSED const int line_size) +{ + const u32 *digest = (const u32 *) digest_buf; + + const rc4_t *rc4 = (const rc4_t *) esalt_buf; + + snprintf (line_buf, line_size, "%s%u$%u$", SIGNATURE_RC4, RC4_KEY_BITS, rc4->dropN); + + u8 *out_buf = (u8 *) line_buf; + + int out_len = strlen (line_buf); + + u8 *ct = (u8 *) rc4->ct; + + for (u32 i = 0; i < rc4->ct_len; i++) + { + u8_to_hex (ct[i], out_buf + out_len); out_len += 2; + } + + out_buf[out_len++] = '$'; + + char tmp_buf[10] = { 0 }; + + snprintf ((char *) tmp_buf, sizeof (tmp_buf), "%u", rc4->pt_off); + + snprintf ((char *) out_buf + out_len, sizeof (tmp_buf), "%u", rc4->pt_off); + + out_len += strlen (tmp_buf); + + out_buf[out_len++] = '$'; + + u8 *dgst = (u8 *) digest; + + for (u32 i = 0; i < rc4->pt_len; i++) + { + u8_to_hex (dgst[i], out_buf + out_len); out_len += 2; + } + + return out_len; +} + +void module_init (module_ctx_t *module_ctx) +{ + module_ctx->module_context_size = MODULE_CONTEXT_SIZE_CURRENT; + module_ctx->module_interface_version = MODULE_INTERFACE_VERSION_CURRENT; + + module_ctx->module_attack_exec = module_attack_exec; + module_ctx->module_benchmark_esalt = MODULE_DEFAULT; + module_ctx->module_benchmark_hook_salt = MODULE_DEFAULT; + module_ctx->module_benchmark_mask = MODULE_DEFAULT; + module_ctx->module_benchmark_charset = MODULE_DEFAULT; + module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; + module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; + module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; + module_ctx->module_deprecated_notice = MODULE_DEFAULT; + module_ctx->module_dgst_pos0 = module_dgst_pos0; + module_ctx->module_dgst_pos1 = module_dgst_pos1; + module_ctx->module_dgst_pos2 = module_dgst_pos2; + module_ctx->module_dgst_pos3 = module_dgst_pos3; + module_ctx->module_dgst_size = module_dgst_size; + module_ctx->module_dictstat_disable = MODULE_DEFAULT; + module_ctx->module_esalt_size = module_esalt_size; + module_ctx->module_extra_buffer_size = MODULE_DEFAULT; + module_ctx->module_extra_tmp_size = MODULE_DEFAULT; + module_ctx->module_extra_tuningdb_block = MODULE_DEFAULT; + module_ctx->module_forced_outfile_format = MODULE_DEFAULT; + module_ctx->module_hash_binary_count = MODULE_DEFAULT; + module_ctx->module_hash_binary_parse = MODULE_DEFAULT; + module_ctx->module_hash_binary_save = MODULE_DEFAULT; + module_ctx->module_hash_decode_postprocess = MODULE_DEFAULT; + module_ctx->module_hash_decode_potfile = MODULE_DEFAULT; + module_ctx->module_hash_decode_zero_hash = MODULE_DEFAULT; + module_ctx->module_hash_decode = module_hash_decode; + module_ctx->module_hash_encode_status = MODULE_DEFAULT; + module_ctx->module_hash_encode_potfile = MODULE_DEFAULT; + module_ctx->module_hash_encode = module_hash_encode; + module_ctx->module_hash_init_selftest = MODULE_DEFAULT; + module_ctx->module_hash_mode = MODULE_DEFAULT; + module_ctx->module_hash_category = module_hash_category; + module_ctx->module_hash_name = module_hash_name; + module_ctx->module_hashes_count_min = MODULE_DEFAULT; + module_ctx->module_hashes_count_max = MODULE_DEFAULT; + module_ctx->module_hlfmt_disable = MODULE_DEFAULT; + module_ctx->module_hook_extra_param_size = MODULE_DEFAULT; + module_ctx->module_hook_extra_param_init = MODULE_DEFAULT; + module_ctx->module_hook_extra_param_term = MODULE_DEFAULT; + module_ctx->module_hook12 = MODULE_DEFAULT; + module_ctx->module_hook23 = MODULE_DEFAULT; + module_ctx->module_hook_salt_size = MODULE_DEFAULT; + module_ctx->module_hook_size = MODULE_DEFAULT; + module_ctx->module_jit_build_options = module_jit_build_options; + module_ctx->module_jit_cache_disable = MODULE_DEFAULT; + module_ctx->module_kernel_accel_max = MODULE_DEFAULT; + module_ctx->module_kernel_accel_min = MODULE_DEFAULT; + module_ctx->module_kernel_loops_max = MODULE_DEFAULT; + module_ctx->module_kernel_loops_min = MODULE_DEFAULT; + module_ctx->module_kernel_threads_max = MODULE_DEFAULT; + module_ctx->module_kernel_threads_min = MODULE_DEFAULT; + module_ctx->module_kern_type = module_kern_type; + module_ctx->module_kern_type_dynamic = MODULE_DEFAULT; + module_ctx->module_opti_type = module_opti_type; + module_ctx->module_opts_type = module_opts_type; + module_ctx->module_outfile_check_disable = MODULE_DEFAULT; + module_ctx->module_outfile_check_nocomp = MODULE_DEFAULT; + module_ctx->module_potfile_custom_check = MODULE_DEFAULT; + module_ctx->module_potfile_disable = MODULE_DEFAULT; + module_ctx->module_potfile_keep_all_hashes = MODULE_DEFAULT; + module_ctx->module_pwdump_column = MODULE_DEFAULT; + module_ctx->module_pw_max = module_pw_max; + module_ctx->module_pw_min = module_pw_min; + module_ctx->module_salt_max = MODULE_DEFAULT; + module_ctx->module_salt_min = MODULE_DEFAULT; + module_ctx->module_salt_type = module_salt_type; + module_ctx->module_separator = MODULE_DEFAULT; + module_ctx->module_st_hash = module_st_hash; + module_ctx->module_st_pass = module_st_pass; + module_ctx->module_tmp_size = MODULE_DEFAULT; + module_ctx->module_unstable_warning = module_unstable_warning; + module_ctx->module_warmup_disable = MODULE_DEFAULT; +} diff --git a/src/modules/module_33700.c b/src/modules/module_33700.c new file mode 100644 index 000000000..71eddf09f --- /dev/null +++ b/src/modules/module_33700.c @@ -0,0 +1,255 @@ +/** + * Author......: See docs/credits.txt + * License.....: MIT + */ + +#include "common.h" +#include "types.h" +#include "modules.h" +#include "bitops.h" +#include "convert.h" +#include "shared.h" + +static const u32 ATTACK_EXEC = ATTACK_EXEC_OUTSIDE_KERNEL; +static const u32 DGST_POS0 = 0; +static const u32 DGST_POS1 = 1; +static const u32 DGST_POS2 = 2; +static const u32 DGST_POS3 = 3; +static const u32 DGST_SIZE = DGST_SIZE_4_4; +static const u32 HASH_CATEGORY = HASH_CATEGORY_RAW_CIPHER_KPA; +static const char *HASH_NAME = "Microsoft Online Account (PBKDF2-HMAC-SHA256 + AES256)"; +static const u64 KERN_TYPE = 33700; +static const u32 OPTI_TYPE = OPTI_TYPE_ZERO_BYTE + | OPTI_TYPE_SLOW_HASH_SIMD_LOOP; +static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE + | OPTS_TYPE_PT_GENERATE_LE + | OPTS_TYPE_PT_UTF16LE; +static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; +static const char *ST_PASS = "hashcat"; +static const char *ST_HASH = "$MSONLINEACCOUNT$0$10000$91869d1d5d3a1df25dd3f0e57bbc226a43641bc03086dcb5b6672941fcabce01"; + +u32 module_attack_exec (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ATTACK_EXEC; } +u32 module_dgst_pos0 (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_POS0; } +u32 module_dgst_pos1 (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_POS1; } +u32 module_dgst_pos2 (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_POS2; } +u32 module_dgst_pos3 (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_POS3; } +u32 module_dgst_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_SIZE; } +u32 module_hash_category (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return HASH_CATEGORY; } +const char *module_hash_name (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return HASH_NAME; } +u64 module_kern_type (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return KERN_TYPE; } +u32 module_opti_type (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return OPTI_TYPE; } +u64 module_opts_type (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return OPTS_TYPE; } +u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return SALT_TYPE; } +const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; } +const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; } + +typedef struct pkcs_sha256_tmp +{ + u32 ipad[8]; + u32 opad[8]; + + u32 dgst[32]; + u32 out[32]; + +} pkcs_sha256_tmp_t; + +typedef struct pkcs +{ + u32 data_buf[8]; + int data_len; + +} pkcs_t; + +static const char *SIGNATURE_MSOA = "$MSONLINEACCOUNT$"; + +u64 module_esalt_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) +{ + const u64 esalt_size = (const u64) sizeof (pkcs_t); + + return esalt_size; +} + +u64 module_tmp_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) +{ + const u64 tmp_size = (const u64) sizeof (pkcs_sha256_tmp_t); + + return tmp_size; +} + +int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED void *digest_buf, MAYBE_UNUSED salt_t *salt, MAYBE_UNUSED void *esalt_buf, MAYBE_UNUSED void *hook_salt_buf, MAYBE_UNUSED hashinfo_t *hash_info, const char *line_buf, MAYBE_UNUSED const int line_len) +{ + u32 *digest = (u32 *) digest_buf; + + pkcs_t *pkcs = (pkcs_t *) esalt_buf; + + hc_token_t token; + + memset (&token, 0, sizeof (hc_token_t)); + + token.token_cnt = 4; + + token.signatures_cnt = 1; + token.signatures_buf[0] = SIGNATURE_MSOA; + + token.len[0] = 17; + token.attr[0] = TOKEN_ATTR_FIXED_LENGTH + | TOKEN_ATTR_VERIFY_SIGNATURE; + + token.sep[1] = '$'; + token.len[1] = 1; + token.attr[1] = TOKEN_ATTR_FIXED_LENGTH + | TOKEN_ATTR_VERIFY_DIGIT; + + token.sep[2] = '$'; + token.len_min[2] = 1; + token.len_max[2] = 5; + token.attr[2] = TOKEN_ATTR_VERIFY_LENGTH + | TOKEN_ATTR_VERIFY_DIGIT; + + token.sep[3] = '$'; + token.len[3] = 64; + token.attr[3] = TOKEN_ATTR_FIXED_LENGTH + | TOKEN_ATTR_VERIFY_HEX; + + const int rc_tokenizer = input_tokenizer ((const u8 *) line_buf, line_len, &token); + + if (rc_tokenizer != PARSER_OK) return (rc_tokenizer); + + // type + + const u8 *type_pos = token.buf[1]; + + if (type_pos[0] != '0') return (PARSER_SIGNATURE_UNMATCHED); + + // iter + + const u8 *iter_pos = token.buf[2]; + + const u32 iter = hc_strtoul ((const char *) iter_pos, NULL, 10); + + salt->salt_iter = iter - 1; + + // data + + const u8 *data_pos = token.buf[3]; + const int data_len = token.len[3]; + + pkcs->data_len = hex_decode (data_pos, data_len, (u8 *) pkcs->data_buf); + + // fake digest + + digest[0] = pkcs->data_buf[0]; + digest[1] = pkcs->data_buf[1]; + digest[2] = pkcs->data_buf[2]; + digest[3] = pkcs->data_buf[3]; + + // set fake salt + + salt->salt_buf[0] = pkcs->data_buf[0]; + salt->salt_buf[1] = pkcs->data_buf[1]; + salt->salt_buf[2] = pkcs->data_buf[2]; + salt->salt_buf[3] = pkcs->data_buf[3]; + + salt->salt_len = 16; + + return (PARSER_OK); +} + +int module_hash_encode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const void *digest_buf, MAYBE_UNUSED const salt_t *salt, MAYBE_UNUSED const void *esalt_buf, MAYBE_UNUSED const void *hook_salt_buf, MAYBE_UNUSED const hashinfo_t *hash_info, char *line_buf, MAYBE_UNUSED const int line_size) +{ + const pkcs_t *pkcs = (const pkcs_t *) esalt_buf; + + // output + + u8 *out_buf = (u8 *) line_buf; + + int out_len = snprintf ((char *) out_buf, line_size, "%s0$%d$", + SIGNATURE_MSOA, + salt->salt_iter + 1); + + out_len += hex_encode ((const u8 *) pkcs->data_buf, pkcs->data_len, out_buf + out_len); + + return out_len; +} + +void module_init (module_ctx_t *module_ctx) +{ + module_ctx->module_context_size = MODULE_CONTEXT_SIZE_CURRENT; + module_ctx->module_interface_version = MODULE_INTERFACE_VERSION_CURRENT; + + module_ctx->module_attack_exec = module_attack_exec; + module_ctx->module_benchmark_esalt = MODULE_DEFAULT; + module_ctx->module_benchmark_hook_salt = MODULE_DEFAULT; + module_ctx->module_benchmark_mask = MODULE_DEFAULT; + module_ctx->module_benchmark_charset = MODULE_DEFAULT; + module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; + module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; + module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; + module_ctx->module_deprecated_notice = MODULE_DEFAULT; + module_ctx->module_dgst_pos0 = module_dgst_pos0; + module_ctx->module_dgst_pos1 = module_dgst_pos1; + module_ctx->module_dgst_pos2 = module_dgst_pos2; + module_ctx->module_dgst_pos3 = module_dgst_pos3; + module_ctx->module_dgst_size = module_dgst_size; + module_ctx->module_dictstat_disable = MODULE_DEFAULT; + module_ctx->module_esalt_size = module_esalt_size; + module_ctx->module_extra_buffer_size = MODULE_DEFAULT; + module_ctx->module_extra_tmp_size = MODULE_DEFAULT; + module_ctx->module_extra_tuningdb_block = MODULE_DEFAULT; + module_ctx->module_forced_outfile_format = MODULE_DEFAULT; + module_ctx->module_hash_binary_count = MODULE_DEFAULT; + module_ctx->module_hash_binary_parse = MODULE_DEFAULT; + module_ctx->module_hash_binary_save = MODULE_DEFAULT; + module_ctx->module_hash_decode_postprocess = MODULE_DEFAULT; + module_ctx->module_hash_decode_potfile = MODULE_DEFAULT; + module_ctx->module_hash_decode_zero_hash = MODULE_DEFAULT; + module_ctx->module_hash_decode = module_hash_decode; + module_ctx->module_hash_encode_status = MODULE_DEFAULT; + module_ctx->module_hash_encode_potfile = MODULE_DEFAULT; + module_ctx->module_hash_encode = module_hash_encode; + module_ctx->module_hash_init_selftest = MODULE_DEFAULT; + module_ctx->module_hash_mode = MODULE_DEFAULT; + module_ctx->module_hash_category = module_hash_category; + module_ctx->module_hash_name = module_hash_name; + module_ctx->module_hashes_count_min = MODULE_DEFAULT; + module_ctx->module_hashes_count_max = MODULE_DEFAULT; + module_ctx->module_hlfmt_disable = MODULE_DEFAULT; + module_ctx->module_hook_extra_param_size = MODULE_DEFAULT; + module_ctx->module_hook_extra_param_init = MODULE_DEFAULT; + module_ctx->module_hook_extra_param_term = MODULE_DEFAULT; + module_ctx->module_hook12 = MODULE_DEFAULT; + module_ctx->module_hook23 = MODULE_DEFAULT; + module_ctx->module_hook_salt_size = MODULE_DEFAULT; + module_ctx->module_hook_size = MODULE_DEFAULT; + module_ctx->module_jit_build_options = MODULE_DEFAULT; + module_ctx->module_jit_cache_disable = MODULE_DEFAULT; + module_ctx->module_kernel_accel_max = MODULE_DEFAULT; + module_ctx->module_kernel_accel_min = MODULE_DEFAULT; + module_ctx->module_kernel_loops_max = MODULE_DEFAULT; + module_ctx->module_kernel_loops_min = MODULE_DEFAULT; + module_ctx->module_kernel_threads_max = MODULE_DEFAULT; + module_ctx->module_kernel_threads_min = MODULE_DEFAULT; + module_ctx->module_kern_type = module_kern_type; + module_ctx->module_kern_type_dynamic = MODULE_DEFAULT; + module_ctx->module_opti_type = module_opti_type; + module_ctx->module_opts_type = module_opts_type; + module_ctx->module_outfile_check_disable = MODULE_DEFAULT; + module_ctx->module_outfile_check_nocomp = MODULE_DEFAULT; + module_ctx->module_potfile_custom_check = MODULE_DEFAULT; + module_ctx->module_potfile_disable = MODULE_DEFAULT; + module_ctx->module_potfile_keep_all_hashes = MODULE_DEFAULT; + module_ctx->module_pwdump_column = MODULE_DEFAULT; + module_ctx->module_pw_max = MODULE_DEFAULT; + module_ctx->module_pw_min = MODULE_DEFAULT; + module_ctx->module_salt_max = MODULE_DEFAULT; + module_ctx->module_salt_min = MODULE_DEFAULT; + module_ctx->module_salt_type = module_salt_type; + module_ctx->module_separator = MODULE_DEFAULT; + module_ctx->module_st_hash = module_st_hash; + module_ctx->module_st_pass = module_st_pass; + module_ctx->module_tmp_size = module_tmp_size; + module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_warmup_disable = MODULE_DEFAULT; +} diff --git a/src/modules/module_33800.c b/src/modules/module_33800.c new file mode 100644 index 000000000..9a1efa0f4 --- /dev/null +++ b/src/modules/module_33800.c @@ -0,0 +1,388 @@ +/** + * based on mode 3200 + * + * + * related tickets/issues + * + * https://github.com/hashcat/hashcat/issues/73 + * support to recover Woltlab Burning Board 4.x hashes #73 + * (closed without implementation) + * + * https://github.com/hashcat/hashcat/issues/2788 + * Bcrypt(Bcrypt($Pass)) Kernel Support #2788 + * + * + * john the ripper + * + * https://github.com/openwall/john/issues/2413 + * Add support for Woltlab Burning Board 4.x hashes #2413 + * + */ + +#include "common.h" +#include "types.h" +#include "modules.h" +#include "bitops.h" +#include "convert.h" +#include "shared.h" + +static const u32 ATTACK_EXEC = ATTACK_EXEC_OUTSIDE_KERNEL; +static const u32 DGST_POS0 = 0; +static const u32 DGST_POS1 = 1; +static const u32 DGST_POS2 = 2; +static const u32 DGST_POS3 = 3; +static const u32 DGST_SIZE = DGST_SIZE_4_6; +static const u32 HASH_CATEGORY = HASH_CATEGORY_FORUM_SOFTWARE; +static const char *HASH_NAME = "WBB4 (Woltlab Burning Board) Plugin [bcrypt(bcrypt($pass))]"; +static const u64 KERN_TYPE = 33800; +static const u32 OPTI_TYPE = OPTI_TYPE_ZERO_BYTE; +static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE + | OPTS_TYPE_PT_GENERATE_LE + | OPTS_TYPE_INIT2 + | OPTS_TYPE_LOOP2 + | OPTS_TYPE_DYNAMIC_SHARED; +static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; +static const char *ST_PASS = "hashcat"; +static const char *ST_HASH = "$2a$08$hashcatohohohohohohohegk6PN.SFkoXxDIkacAGKFN9AF8nx.Hi"; + +u32 module_attack_exec (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ATTACK_EXEC; } +u32 module_dgst_pos0 (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_POS0; } +u32 module_dgst_pos1 (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_POS1; } +u32 module_dgst_pos2 (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_POS2; } +u32 module_dgst_pos3 (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_POS3; } +u32 module_dgst_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_SIZE; } +u32 module_hash_category (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return HASH_CATEGORY; } +const char *module_hash_name (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return HASH_NAME; } +u64 module_kern_type (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return KERN_TYPE; } +u32 module_opti_type (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return OPTI_TYPE; } +u64 module_opts_type (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return OPTS_TYPE; } +u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return SALT_TYPE; } +const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; } +const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; } + +static const char *SIGNATURE_BCRYPT1 = "$2a$"; +static const char *SIGNATURE_BCRYPT2 = "$2b$"; +static const char *SIGNATURE_BCRYPT3 = "$2x$"; +static const char *SIGNATURE_BCRYPT4 = "$2y$"; + +typedef struct bcrypt_tmp +{ + u32 E[18]; + + u32 P[18]; + + u32 S0[256]; + u32 S1[256]; + u32 S2[256]; + u32 S3[256]; + +} bcrypt_tmp_t; + +u32 module_pw_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) +{ + const u32 pw_max = 72; // Underlaying Blowfish max + + return pw_max; +} + +u64 module_tmp_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) +{ + const u64 tmp_size = (const u64) sizeof (bcrypt_tmp_t); + + return tmp_size; +} + +bool module_jit_cache_disable (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + return true; +} + +char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + char *jit_build_options = NULL; + + // this mode heavily depends on the available shared memory size + // note the kernel need to have some special code changes in order to make use to use post-48k memory region + // we need to set some macros + + bool use_dynamic = false; + + if (device_param->is_cuda == true) + { + use_dynamic = true; + } + + // this uses some nice feedback effect. + // based on the device_local_mem_size the reqd_work_group_size in the kernel is set to some value + // which is then is read from the opencl host in the kernel_preferred_wgs_multiple1/2/3 result. + // therefore we do not need to set module_kernel_threads_min/max except for CPU, where the threads are set to fixed 1. + + if (device_param->opencl_device_type & CL_DEVICE_TYPE_CPU) + { + hc_asprintf (&jit_build_options, "-D FIXED_LOCAL_SIZE=%u", 1); + } + else + { + u32 overhead = 0; + + if (device_param->opencl_device_vendor_id == VENDOR_ID_NV) + { + // note we need to use device_param->device_local_mem_size - 4 because opencl jit returns with: + // Entry function '...' uses too much shared data (0xc004 bytes, 0xc000 max) + // on my development system. no clue where the 4 bytes are spent. + // I did some research on this and it seems to be related with the datatype. + // For example, if i used u8 instead, there's only 1 byte wasted. + + if (device_param->is_opencl == true) + { + overhead = 1; + } + } + + if (user_options->kernel_threads_chgd == true) + { + u32 fixed_local_size = user_options->kernel_threads; + + if (use_dynamic == true) + { + if ((fixed_local_size * 4096) > device_param->kernel_dynamic_local_mem_size_memset) + { + // otherwise out-of-bound reads + + fixed_local_size = device_param->kernel_dynamic_local_mem_size_memset / 4096; + } + + hc_asprintf (&jit_build_options, "-D FIXED_LOCAL_SIZE=%u -D DYNAMIC_LOCAL", fixed_local_size); + } + else + { + if ((fixed_local_size * 4096) > (device_param->device_local_mem_size - overhead)) + { + // otherwise out-of-bound reads + + fixed_local_size = (device_param->device_local_mem_size - overhead) / 4096; + } + + hc_asprintf (&jit_build_options, "-D FIXED_LOCAL_SIZE=%u", fixed_local_size); + } + } + else + { + if (use_dynamic == true) + { + // using kernel_dynamic_local_mem_size_memset is a bit hackish. + // we had to brute-force this value out of an already loaded CUDA function. + // there's no official way to query for this value. + + const u32 fixed_local_size = device_param->kernel_dynamic_local_mem_size_memset / 4096; + + hc_asprintf (&jit_build_options, "-D FIXED_LOCAL_SIZE=%u -D DYNAMIC_LOCAL", fixed_local_size); + } + else + { + const u32 fixed_local_size = (device_param->device_local_mem_size - overhead) / 4096; + + hc_asprintf (&jit_build_options, "-D FIXED_LOCAL_SIZE=%u", fixed_local_size); + } + } + } + + return jit_build_options; +} + +int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED void *digest_buf, MAYBE_UNUSED salt_t *salt, MAYBE_UNUSED void *esalt_buf, MAYBE_UNUSED void *hook_salt_buf, MAYBE_UNUSED hashinfo_t *hash_info, const char *line_buf, MAYBE_UNUSED const int line_len) +{ + u32 *digest = (u32 *) digest_buf; + + hc_token_t token; + + memset (&token, 0, sizeof (hc_token_t)); + + token.token_cnt = 4; + + token.signatures_cnt = 4; + token.signatures_buf[0] = SIGNATURE_BCRYPT1; + token.signatures_buf[1] = SIGNATURE_BCRYPT2; + token.signatures_buf[2] = SIGNATURE_BCRYPT3; + token.signatures_buf[3] = SIGNATURE_BCRYPT4; + + token.len[0] = 4; + token.attr[0] = TOKEN_ATTR_FIXED_LENGTH + | TOKEN_ATTR_VERIFY_SIGNATURE; + + token.sep[1] = '$'; + token.len[1] = 2; + token.attr[1] = TOKEN_ATTR_FIXED_LENGTH + | TOKEN_ATTR_VERIFY_DIGIT; + + token.len[2] = 22; + token.attr[2] = TOKEN_ATTR_FIXED_LENGTH + | TOKEN_ATTR_VERIFY_BASE64B; + + token.len[3] = 31; + token.attr[3] = TOKEN_ATTR_FIXED_LENGTH + | TOKEN_ATTR_VERIFY_BASE64B; + + const int rc_tokenizer = input_tokenizer ((const u8 *) line_buf, line_len, &token); + + if (rc_tokenizer != PARSER_OK) return (rc_tokenizer); + + const u8 *iter_pos = token.buf[1]; + const u8 *salt_pos = token.buf[2]; + const u8 *hash_pos = token.buf[3]; + + const int salt_len = token.len[2]; + const int hash_len = token.len[3]; + + salt->salt_len = 16; + salt->salt_iter = 1u << hc_strtoul ((const char *) iter_pos, NULL, 10); + salt->salt_iter2 = 1u << hc_strtoul ((const char *) iter_pos, NULL, 10); + + memcpy ((char *) salt->salt_sign, line_buf, 6); + //have a copy of that for second round to prevent from calculating it inside kernel + memcpy ((char *) salt->salt_buf_pc, line_buf, 29); + + u8 *salt_buf_ptr = (u8 *) salt->salt_buf; + + u8 tmp_buf[100]; + + memset (tmp_buf, 0, sizeof (tmp_buf)); + + base64_decode (bf64_to_int, (const u8 *) salt_pos, salt_len, tmp_buf); + + memcpy (salt_buf_ptr, tmp_buf, 16); + + salt->salt_buf[0] = byte_swap_32 (salt->salt_buf[0]); + salt->salt_buf[1] = byte_swap_32 (salt->salt_buf[1]); + salt->salt_buf[2] = byte_swap_32 (salt->salt_buf[2]); + salt->salt_buf[3] = byte_swap_32 (salt->salt_buf[3]); + + memset (tmp_buf, 0, sizeof (tmp_buf)); + + base64_decode (bf64_to_int, (const u8 *) hash_pos, hash_len, tmp_buf); + + memcpy (digest, tmp_buf, 24); + + digest[0] = byte_swap_32 (digest[0]); + digest[1] = byte_swap_32 (digest[1]); + digest[2] = byte_swap_32 (digest[2]); + digest[3] = byte_swap_32 (digest[3]); + digest[4] = byte_swap_32 (digest[4]); + digest[5] = byte_swap_32 (digest[5]); + + digest[5] &= ~0xffu; // its just 23 not 24 ! + + return (PARSER_OK); +} + +int module_hash_encode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const void *digest_buf, MAYBE_UNUSED const salt_t *salt, MAYBE_UNUSED const void *esalt_buf, MAYBE_UNUSED const void *hook_salt_buf, MAYBE_UNUSED const hashinfo_t *hash_info, char *line_buf, MAYBE_UNUSED const int line_size) +{ + const u32 *digest = (const u32 *) digest_buf; + + u32 tmp_digest[6]; + + tmp_digest[0] = byte_swap_32 (digest[0]); + tmp_digest[1] = byte_swap_32 (digest[1]); + tmp_digest[2] = byte_swap_32 (digest[2]); + tmp_digest[3] = byte_swap_32 (digest[3]); + tmp_digest[4] = byte_swap_32 (digest[4]); + tmp_digest[5] = byte_swap_32 (digest[5]); + + u32 tmp_salt[4]; + + tmp_salt[0] = byte_swap_32 (salt->salt_buf[0]); + tmp_salt[1] = byte_swap_32 (salt->salt_buf[1]); + tmp_salt[2] = byte_swap_32 (salt->salt_buf[2]); + tmp_salt[3] = byte_swap_32 (salt->salt_buf[3]); + + char tmp_buf[64]; + + base64_encode (int_to_bf64, (const u8 *) tmp_salt, 16, (u8 *) tmp_buf + 0); + base64_encode (int_to_bf64, (const u8 *) tmp_digest, 23, (u8 *) tmp_buf + 22); + + tmp_buf[22 + 31] = 0; // base64_encode wants to pad + + return snprintf (line_buf, line_size, "%s$%s", (const char *) salt->salt_sign, tmp_buf); +} + +void module_init (module_ctx_t *module_ctx) +{ + module_ctx->module_context_size = MODULE_CONTEXT_SIZE_CURRENT; + module_ctx->module_interface_version = MODULE_INTERFACE_VERSION_CURRENT; + + module_ctx->module_attack_exec = module_attack_exec; + module_ctx->module_benchmark_esalt = MODULE_DEFAULT; + module_ctx->module_benchmark_hook_salt = MODULE_DEFAULT; + module_ctx->module_benchmark_mask = MODULE_DEFAULT; + module_ctx->module_benchmark_charset = MODULE_DEFAULT; + module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; + module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; + module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; + module_ctx->module_deprecated_notice = MODULE_DEFAULT; + module_ctx->module_dgst_pos0 = module_dgst_pos0; + module_ctx->module_dgst_pos1 = module_dgst_pos1; + module_ctx->module_dgst_pos2 = module_dgst_pos2; + module_ctx->module_dgst_pos3 = module_dgst_pos3; + module_ctx->module_dgst_size = module_dgst_size; + module_ctx->module_dictstat_disable = MODULE_DEFAULT; + module_ctx->module_esalt_size = MODULE_DEFAULT; + module_ctx->module_extra_buffer_size = MODULE_DEFAULT; + module_ctx->module_extra_tmp_size = MODULE_DEFAULT; + module_ctx->module_extra_tuningdb_block = MODULE_DEFAULT; + module_ctx->module_forced_outfile_format = MODULE_DEFAULT; + module_ctx->module_hash_binary_count = MODULE_DEFAULT; + module_ctx->module_hash_binary_parse = MODULE_DEFAULT; + module_ctx->module_hash_binary_save = MODULE_DEFAULT; + module_ctx->module_hash_decode_postprocess = MODULE_DEFAULT; + module_ctx->module_hash_decode_potfile = MODULE_DEFAULT; + module_ctx->module_hash_decode_zero_hash = MODULE_DEFAULT; + module_ctx->module_hash_decode = module_hash_decode; + module_ctx->module_hash_encode_status = MODULE_DEFAULT; + module_ctx->module_hash_encode_potfile = MODULE_DEFAULT; + module_ctx->module_hash_encode = module_hash_encode; + module_ctx->module_hash_init_selftest = MODULE_DEFAULT; + module_ctx->module_hash_mode = MODULE_DEFAULT; + module_ctx->module_hash_category = module_hash_category; + module_ctx->module_hash_name = module_hash_name; + module_ctx->module_hashes_count_min = MODULE_DEFAULT; + module_ctx->module_hashes_count_max = MODULE_DEFAULT; + module_ctx->module_hlfmt_disable = MODULE_DEFAULT; + module_ctx->module_hook_extra_param_size = MODULE_DEFAULT; + module_ctx->module_hook_extra_param_init = MODULE_DEFAULT; + module_ctx->module_hook_extra_param_term = MODULE_DEFAULT; + module_ctx->module_hook12 = MODULE_DEFAULT; + module_ctx->module_hook23 = MODULE_DEFAULT; + module_ctx->module_hook_salt_size = MODULE_DEFAULT; + module_ctx->module_hook_size = MODULE_DEFAULT; + module_ctx->module_jit_build_options = module_jit_build_options; + module_ctx->module_jit_cache_disable = module_jit_cache_disable; + module_ctx->module_kernel_accel_max = MODULE_DEFAULT; + module_ctx->module_kernel_accel_min = MODULE_DEFAULT; + module_ctx->module_kernel_loops_max = MODULE_DEFAULT; + module_ctx->module_kernel_loops_min = MODULE_DEFAULT; + module_ctx->module_kernel_threads_max = MODULE_DEFAULT; + module_ctx->module_kernel_threads_min = MODULE_DEFAULT; + module_ctx->module_kern_type = module_kern_type; + module_ctx->module_kern_type_dynamic = MODULE_DEFAULT; + module_ctx->module_opti_type = module_opti_type; + module_ctx->module_opts_type = module_opts_type; + module_ctx->module_outfile_check_disable = MODULE_DEFAULT; + module_ctx->module_outfile_check_nocomp = MODULE_DEFAULT; + module_ctx->module_potfile_custom_check = MODULE_DEFAULT; + module_ctx->module_potfile_disable = MODULE_DEFAULT; + module_ctx->module_potfile_keep_all_hashes = MODULE_DEFAULT; + module_ctx->module_pwdump_column = MODULE_DEFAULT; + module_ctx->module_pw_max = module_pw_max; + module_ctx->module_pw_min = MODULE_DEFAULT; + module_ctx->module_salt_max = MODULE_DEFAULT; + module_ctx->module_salt_min = MODULE_DEFAULT; + module_ctx->module_salt_type = module_salt_type; + module_ctx->module_separator = MODULE_DEFAULT; + module_ctx->module_st_hash = module_st_hash; + module_ctx->module_st_pass = module_st_pass; + module_ctx->module_tmp_size = module_tmp_size; + module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_warmup_disable = MODULE_DEFAULT; +} diff --git a/src/modules/module_70000.c b/src/modules/module_70000.c new file mode 100644 index 000000000..01504ea09 --- /dev/null +++ b/src/modules/module_70000.c @@ -0,0 +1,326 @@ +/** + * Author......: See docs/credits.txt + * License.....: MIT + */ + +#include "common.h" +#include "types.h" +#include "modules.h" +#include "bitops.h" +#include "convert.h" +#include "shared.h" + +static const u32 ATTACK_EXEC = ATTACK_EXEC_OUTSIDE_KERNEL; +static const u32 DGST_POS0 = 0; +static const u32 DGST_POS1 = 1; +static const u32 DGST_POS2 = 2; +static const u32 DGST_POS3 = 3; +static const u32 DGST_SIZE = DGST_SIZE_4_4; +static const u32 HASH_CATEGORY = HASH_CATEGORY_RAW_HASH; +static const char *HASH_NAME = "argon2id [Bridged: reference implementation + tunings]"; +static const u64 KERN_TYPE = 70000; +static const u32 OPTI_TYPE = OPTI_TYPE_ZERO_BYTE; +static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE + | OPTS_TYPE_PT_GENERATE_LE + | OPTS_TYPE_NATIVE_THREADS + | OPTS_TYPE_MP_MULTI_DISABLE; +static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; +static const u64 BRIDGE_TYPE = BRIDGE_TYPE_MATCH_TUNINGS // optional - improves performance + | BRIDGE_TYPE_REPLACE_LOOP; +static const char *BRIDGE_NAME = "argon2id_reference"; +static const char *ST_PASS = "hashcat"; +static const char *ST_HASH = "$argon2id$v=19$m=4096,t=3,p=1$FoIjFnZlM2JSJWYXUgMFAw$eYKMzhbW8uyT1LLtKRdRcJj2CQeRrdr2pKv/Y71YbAQ"; + +u32 module_attack_exec (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ATTACK_EXEC; } +u32 module_dgst_pos0 (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_POS0; } +u32 module_dgst_pos1 (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_POS1; } +u32 module_dgst_pos2 (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_POS2; } +u32 module_dgst_pos3 (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_POS3; } +u32 module_dgst_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_SIZE; } +u32 module_hash_category (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return HASH_CATEGORY; } +const char *module_hash_name (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return HASH_NAME; } +u64 module_kern_type (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return KERN_TYPE; } +u32 module_opti_type (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return OPTI_TYPE; } +u64 module_opts_type (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return OPTS_TYPE; } +u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return SALT_TYPE; } +const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; } +const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; } +const char *module_bridge_name (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return BRIDGE_NAME; } +u64 module_bridge_type (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return BRIDGE_TYPE; } + +typedef struct +{ + // input + + u32 pw_buf[64]; + u32 pw_len; + + // output + + u32 h[64]; + +} argon2_reference_tmp_t; + +typedef struct +{ + u32 salt_buf[64]; + u32 salt_len; + + u32 digest_buf[64]; + u32 digest_len; + + u32 m; + u32 t; + u32 p; + +} argon2_t; + +static const char *SIGNATURE_ARGON2ID= "$argon2id$"; + +u64 module_esalt_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) +{ + const u64 esalt_size = (const u64) sizeof (argon2_t); + + return esalt_size; +} + +u64 module_tmp_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) +{ + const u64 tmp_size = (const u64) sizeof (argon2_reference_tmp_t); + + return tmp_size; +} + +int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED void *digest_buf, MAYBE_UNUSED salt_t *salt, MAYBE_UNUSED void *esalt_buf, MAYBE_UNUSED void *hook_salt_buf, MAYBE_UNUSED hashinfo_t *hash_info, const char *line_buf, MAYBE_UNUSED const int line_len) +{ + u32 *digest = (u32 *) digest_buf; + + argon2_t *argon2id = (argon2_t *) esalt_buf; + + hc_token_t token; + + memset (&token, 0, sizeof (hc_token_t)); + + token.token_cnt = 7; + + token.signatures_cnt = 1; + token.signatures_buf[0] = SIGNATURE_ARGON2ID; + + token.len[0] = 10; + token.attr[0] = TOKEN_ATTR_FIXED_LENGTH + | TOKEN_ATTR_VERIFY_SIGNATURE; + + token.len[1] = 4; + token.sep[1] = '$'; + token.attr[1] = TOKEN_ATTR_FIXED_LENGTH; + + token.len_min[2] = 3; + token.len_max[2] = 12; + token.sep[2] = ','; // our tokenizer shines here + token.attr[2] = TOKEN_ATTR_VERIFY_LENGTH; + + token.len_min[3] = 3; + token.len_max[3] = 5; + token.sep[3] = ','; // ... and here + token.attr[3] = TOKEN_ATTR_VERIFY_LENGTH; + + token.len_min[4] = 3; + token.len_max[4] = 5; + token.sep[4] = '$'; + token.attr[4] = TOKEN_ATTR_VERIFY_LENGTH; + + token.len_min[5] = ((SALT_MIN * 8) / 6) + 0; + token.len_max[5] = ((SALT_MAX * 8) / 6) + 3; + token.sep[5] = '$'; + token.attr[5] = TOKEN_ATTR_VERIFY_LENGTH + | TOKEN_ATTR_VERIFY_BASE64A; + + token.len_min[6] = ((SALT_MIN * 8) / 6) + 0; + token.len_max[6] = ((SALT_MAX * 8) / 6) + 3; + token.sep[6] = '$'; + token.attr[6] = TOKEN_ATTR_VERIFY_LENGTH + | TOKEN_ATTR_VERIFY_BASE64A; + + const int rc_tokenizer = input_tokenizer ((const u8 *) line_buf, line_len, &token); + + if (rc_tokenizer != PARSER_OK) return (rc_tokenizer); + + // version + + const int version_len = token.len[1]; + const u8 *version_pos = token.buf[1]; + + if (version_len != 4) return (PARSER_HASH_VALUE); + + if (memcmp (version_pos, "v=19", 4)) return (PARSER_HASH_VALUE); + + // argon2id config + + const u8 *m_pos = token.buf[2]; + const u8 *t_pos = token.buf[3]; + const u8 *p_pos = token.buf[4]; + + argon2id->m = hc_strtoul ((const char *) m_pos + 2, NULL, 10); + argon2id->t = hc_strtoul ((const char *) t_pos + 2, NULL, 10); + argon2id->p = hc_strtoul ((const char *) p_pos + 2, NULL, 10); + + if (argon2id->m < 1) return (PARSER_HASH_VALUE); + if (argon2id->t < 1) return (PARSER_HASH_VALUE); + if (argon2id->p < 1) return (PARSER_HASH_VALUE); + + // salt + + const int salt_len = token.len[5]; + const u8 *salt_pos = token.buf[5]; + + argon2id->salt_len = base64_decode (base64_to_int, (const u8 *) salt_pos, salt_len, (u8 *) argon2id->salt_buf); + + // digest + + const int digest_len = token.len[6]; + const u8 *digest_pos = token.buf[6]; + + argon2id->digest_len = base64_decode (base64_to_int, (const u8 *) digest_pos, digest_len, (u8 *) argon2id->digest_buf); + + // comparison digest + + digest[0] = argon2id->digest_buf[0]; + digest[1] = argon2id->digest_buf[1]; + digest[2] = argon2id->digest_buf[2]; + digest[3] = argon2id->digest_buf[3]; + + // fake salt, we just need to make this unique + + salt->salt_buf[0] = digest[0]; + salt->salt_buf[1] = digest[1]; + salt->salt_buf[2] = digest[2]; + salt->salt_buf[3] = digest[3]; + salt->salt_buf[4] = argon2id->m; + salt->salt_buf[5] = argon2id->t; + salt->salt_buf[6] = argon2id->p; + salt->salt_buf[7] = 0; + + salt->salt_len = 32; + salt->salt_iter = 1; + + return (PARSER_OK); +} + +int module_hash_encode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const void *digest_buf, MAYBE_UNUSED const salt_t *salt, MAYBE_UNUSED const void *esalt_buf, MAYBE_UNUSED const void *hook_salt_buf, MAYBE_UNUSED const hashinfo_t *hash_info, char *line_buf, MAYBE_UNUSED const int line_size) +{ + // const u32 *digest = (const u32 *) digest_buf; + + const argon2_t *argon2 = (const argon2_t *) esalt_buf; + + // salt + + char base64_salt[512] = { 0 }; + + int len1 = base64_encode (int_to_base64, (const u8 *) argon2->salt_buf, argon2->salt_len, (u8 *) base64_salt); + + for (int i = len1 - 1; i >=0; i--) if (base64_salt[i] == '=') base64_salt[i] = 0; + + // digest + + char base64_digest[512] = { 0 }; + + int len2 = base64_encode (int_to_base64, (const u8 *) argon2->digest_buf, argon2->digest_len, (u8 *) base64_digest); + + for (int i = len2 - 1; i >=0; i--) if (base64_digest[i] == '=') base64_digest[i] = 0; + + // out + + u8 *out_buf = (u8 *) line_buf; + + const int out_len = snprintf ((char *) out_buf, line_size, "%sv=19$m=%d,t=%d,p=%d$%s$%s", + SIGNATURE_ARGON2ID, + argon2->m, + argon2->t, + argon2->p, + base64_salt, + base64_digest); + + return out_len; +} + +void module_init (module_ctx_t *module_ctx) +{ + module_ctx->module_context_size = MODULE_CONTEXT_SIZE_CURRENT; + module_ctx->module_interface_version = MODULE_INTERFACE_VERSION_CURRENT; + + module_ctx->module_attack_exec = module_attack_exec; + module_ctx->module_benchmark_esalt = MODULE_DEFAULT; + module_ctx->module_benchmark_hook_salt = MODULE_DEFAULT; + module_ctx->module_benchmark_mask = MODULE_DEFAULT; + module_ctx->module_benchmark_charset = MODULE_DEFAULT; + module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = module_bridge_name; + module_ctx->module_bridge_type = module_bridge_type; + module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; + module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; + module_ctx->module_deprecated_notice = MODULE_DEFAULT; + module_ctx->module_dgst_pos0 = module_dgst_pos0; + module_ctx->module_dgst_pos1 = module_dgst_pos1; + module_ctx->module_dgst_pos2 = module_dgst_pos2; + module_ctx->module_dgst_pos3 = module_dgst_pos3; + module_ctx->module_dgst_size = module_dgst_size; + module_ctx->module_dictstat_disable = MODULE_DEFAULT; + module_ctx->module_esalt_size = module_esalt_size; + module_ctx->module_extra_buffer_size = MODULE_DEFAULT; + module_ctx->module_extra_tmp_size = MODULE_DEFAULT; + module_ctx->module_extra_tuningdb_block = MODULE_DEFAULT; + module_ctx->module_forced_outfile_format = MODULE_DEFAULT; + module_ctx->module_hash_binary_count = MODULE_DEFAULT; + module_ctx->module_hash_binary_parse = MODULE_DEFAULT; + module_ctx->module_hash_binary_save = MODULE_DEFAULT; + module_ctx->module_hash_decode_postprocess = MODULE_DEFAULT; + module_ctx->module_hash_decode_potfile = MODULE_DEFAULT; + module_ctx->module_hash_decode_zero_hash = MODULE_DEFAULT; + module_ctx->module_hash_decode = module_hash_decode; + module_ctx->module_hash_encode_status = MODULE_DEFAULT; + module_ctx->module_hash_encode_potfile = MODULE_DEFAULT; + module_ctx->module_hash_encode = module_hash_encode; + module_ctx->module_hash_init_selftest = MODULE_DEFAULT; + module_ctx->module_hash_mode = MODULE_DEFAULT; + module_ctx->module_hash_category = module_hash_category; + module_ctx->module_hash_name = module_hash_name; + module_ctx->module_hashes_count_min = MODULE_DEFAULT; + module_ctx->module_hashes_count_max = MODULE_DEFAULT; + module_ctx->module_hlfmt_disable = MODULE_DEFAULT; + module_ctx->module_hook_extra_param_size = MODULE_DEFAULT; + module_ctx->module_hook_extra_param_init = MODULE_DEFAULT; + module_ctx->module_hook_extra_param_term = MODULE_DEFAULT; + module_ctx->module_hook12 = MODULE_DEFAULT; + module_ctx->module_hook23 = MODULE_DEFAULT; + module_ctx->module_hook_salt_size = MODULE_DEFAULT; + module_ctx->module_hook_size = MODULE_DEFAULT; + module_ctx->module_jit_build_options = MODULE_DEFAULT; + module_ctx->module_jit_cache_disable = MODULE_DEFAULT; + module_ctx->module_kernel_accel_max = MODULE_DEFAULT; + module_ctx->module_kernel_accel_min = MODULE_DEFAULT; + module_ctx->module_kernel_loops_max = MODULE_DEFAULT; + module_ctx->module_kernel_loops_min = MODULE_DEFAULT; + module_ctx->module_kernel_threads_max = MODULE_DEFAULT; + module_ctx->module_kernel_threads_min = MODULE_DEFAULT; + module_ctx->module_kern_type = module_kern_type; + module_ctx->module_kern_type_dynamic = MODULE_DEFAULT; + module_ctx->module_opti_type = module_opti_type; + module_ctx->module_opts_type = module_opts_type; + module_ctx->module_outfile_check_disable = MODULE_DEFAULT; + module_ctx->module_outfile_check_nocomp = MODULE_DEFAULT; + module_ctx->module_potfile_custom_check = MODULE_DEFAULT; + module_ctx->module_potfile_disable = MODULE_DEFAULT; + module_ctx->module_potfile_keep_all_hashes = MODULE_DEFAULT; + module_ctx->module_pwdump_column = MODULE_DEFAULT; + module_ctx->module_pw_max = MODULE_DEFAULT; + module_ctx->module_pw_min = MODULE_DEFAULT; + module_ctx->module_salt_max = MODULE_DEFAULT; + module_ctx->module_salt_min = MODULE_DEFAULT; + module_ctx->module_salt_type = module_salt_type; + module_ctx->module_separator = MODULE_DEFAULT; + module_ctx->module_st_hash = module_st_hash; + module_ctx->module_st_pass = module_st_pass; + module_ctx->module_tmp_size = module_tmp_size; + module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_warmup_disable = MODULE_DEFAULT; +} diff --git a/src/modules/module_70100.c b/src/modules/module_70100.c new file mode 100644 index 000000000..ac5998476 --- /dev/null +++ b/src/modules/module_70100.c @@ -0,0 +1,268 @@ +/** + * Author......: See docs/credits.txt + * License.....: MIT + */ + +#include "common.h" +#include "types.h" +#include "modules.h" +#include "bitops.h" +#include "convert.h" +#include "shared.h" + +static const u32 ATTACK_EXEC = ATTACK_EXEC_OUTSIDE_KERNEL; +static const u32 DGST_POS0 = 0; +static const u32 DGST_POS1 = 1; +static const u32 DGST_POS2 = 2; +static const u32 DGST_POS3 = 3; +static const u32 DGST_SIZE = DGST_SIZE_4_16; +static const u32 HASH_CATEGORY = HASH_CATEGORY_GENERIC_KDF; +static const char *HASH_NAME = "scrypt [Bridged: Scrypt-Jane ROMix]"; +static const u64 KERN_TYPE = 70100; +static const u32 OPTI_TYPE = OPTI_TYPE_ZERO_BYTE; +static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE + | OPTS_TYPE_PT_GENERATE_LE + | OPTS_TYPE_NATIVE_THREADS + | OPTS_TYPE_MP_MULTI_DISABLE; +static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; +static const u64 BRIDGE_TYPE = BRIDGE_TYPE_MATCH_TUNINGS // optional - improves performance + | BRIDGE_TYPE_REPLACE_LOOP; +static const char *BRIDGE_NAME = "scrypt_jane"; +static const char *ST_PASS = "hashcat"; +static const char *ST_HASH = "SCRYPT:16384:8:1:OTEyNzU0ODg=:Cc8SPjRH1hFQhuIPCdF51uNGtJ2aOY/isuoMlMUsJ8c="; + +u32 module_attack_exec (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ATTACK_EXEC; } +u32 module_dgst_pos0 (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_POS0; } +u32 module_dgst_pos1 (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_POS1; } +u32 module_dgst_pos2 (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_POS2; } +u32 module_dgst_pos3 (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_POS3; } +u32 module_dgst_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_SIZE; } +u32 module_hash_category (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return HASH_CATEGORY; } +const char *module_hash_name (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return HASH_NAME; } +u64 module_kern_type (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return KERN_TYPE; } +u32 module_opti_type (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return OPTI_TYPE; } +u64 module_opts_type (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return OPTS_TYPE; } +u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return SALT_TYPE; } +const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; } +const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; } +const char *module_bridge_name (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return BRIDGE_NAME; } +u64 module_bridge_type (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return BRIDGE_TYPE; } + +static const char *SIGNATURE_SCRYPT = "SCRYPT"; + +u32 module_pw_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) +{ + // this overrides the reductions of PW_MAX in case optimized kernel is selected + // IOW, even in optimized kernel mode it support length 256 + + const u32 pw_max = PW_MAX; + + return pw_max; +} + +u64 module_tmp_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) +{ + #define SCRYPT_R_MAX 16 + #define SCRYPT_P_MAX 16 + + const u64 tmp_size = 128ULL * SCRYPT_R_MAX * SCRYPT_P_MAX; + + return tmp_size; +} + +int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED void *digest_buf, MAYBE_UNUSED salt_t *salt, MAYBE_UNUSED void *esalt_buf, MAYBE_UNUSED void *hook_salt_buf, MAYBE_UNUSED hashinfo_t *hash_info, const char *line_buf, MAYBE_UNUSED const int line_len) +{ + u32 *digest = (u32 *) digest_buf; + + hc_token_t token; + + memset (&token, 0, sizeof (hc_token_t)); + + token.token_cnt = 6; + + token.signatures_cnt = 1; + token.signatures_buf[0] = SIGNATURE_SCRYPT; + + token.sep[0] = ':'; + token.len[0] = 6; + token.attr[0] = TOKEN_ATTR_FIXED_LENGTH + | TOKEN_ATTR_VERIFY_SIGNATURE; + + token.sep[1] = ':'; + token.len_min[1] = 1; + token.len_max[1] = 6; + token.attr[1] = TOKEN_ATTR_VERIFY_LENGTH; + + token.sep[2] = ':'; + token.len_min[2] = 1; + token.len_max[2] = 6; + token.attr[2] = TOKEN_ATTR_VERIFY_LENGTH; + + token.sep[3] = ':'; + token.len_min[3] = 1; + token.len_max[3] = 6; + token.attr[3] = TOKEN_ATTR_VERIFY_LENGTH; + + token.sep[4] = ':'; + token.len_min[4] = 0; + token.len_max[4] = 45; + token.attr[4] = TOKEN_ATTR_VERIFY_LENGTH + | TOKEN_ATTR_VERIFY_BASE64A; + + token.sep[5] = ':'; + token.len_min[5] = 44; + token.len_max[5] = 88; + token.attr[5] = TOKEN_ATTR_VERIFY_LENGTH + | TOKEN_ATTR_VERIFY_BASE64A; + + const int rc_tokenizer = input_tokenizer ((const u8 *) line_buf, line_len, &token); + + if (rc_tokenizer != PARSER_OK) return (rc_tokenizer); + + // scrypt settings + + const u8 *N_pos = token.buf[1]; + const u8 *r_pos = token.buf[2]; + const u8 *p_pos = token.buf[3]; + + salt->scrypt_N = hc_strtoul ((const char *) N_pos, NULL, 10); + salt->scrypt_r = hc_strtoul ((const char *) r_pos, NULL, 10); + salt->scrypt_p = hc_strtoul ((const char *) p_pos, NULL, 10); + + salt->salt_iter = 1; + + if (salt->scrypt_N % 1024) return (PARSER_SALT_VALUE); // we set loop count to 1024 fixed + + // salt + + const u8 *salt_pos = token.buf[4]; + const int salt_len = token.len[4]; + + u8 tmp_buf[128] = { 0 }; + + const int tmp_len = base64_decode (base64_to_int, salt_pos, salt_len, tmp_buf); + + memcpy (salt->salt_buf, tmp_buf, tmp_len); + + salt->salt_len = tmp_len; + + // digest - base64 decode + + const u8 *hash_pos = token.buf[5]; + const int hash_len = token.len[5]; + + memset (tmp_buf, 0, sizeof (tmp_buf)); + + const int digest_len = base64_decode (base64_to_int, hash_pos, hash_len, tmp_buf); + + // digest_len should be safe because of 88 limit + + memcpy (digest, tmp_buf, digest_len); + + salt->salt_len_pc = digest_len; + + return (PARSER_OK); +} + +int module_hash_encode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const void *digest_buf, MAYBE_UNUSED const salt_t *salt, MAYBE_UNUSED const void *esalt_buf, MAYBE_UNUSED const void *hook_salt_buf, MAYBE_UNUSED const hashinfo_t *hash_info, char *line_buf, MAYBE_UNUSED const int line_size) +{ + char base64_salt[64] = { 0 }; + + base64_encode (int_to_base64, (const u8 *) salt->salt_buf, salt->salt_len, (u8 *) base64_salt); + + char base64_digest[128] = { 0 }; + + base64_encode (int_to_base64, (const u8 *) digest_buf, salt->salt_len_pc, (u8 *) base64_digest); + + const int line_len = snprintf (line_buf, line_size, "%s:%u:%u:%u:%s:%s", + SIGNATURE_SCRYPT, + salt->scrypt_N, + salt->scrypt_r, + salt->scrypt_p, + base64_salt, + base64_digest); + + return line_len; +} + +void module_init (module_ctx_t *module_ctx) +{ + module_ctx->module_context_size = MODULE_CONTEXT_SIZE_CURRENT; + module_ctx->module_interface_version = MODULE_INTERFACE_VERSION_CURRENT; + + module_ctx->module_attack_exec = module_attack_exec; + module_ctx->module_benchmark_esalt = MODULE_DEFAULT; + module_ctx->module_benchmark_hook_salt = MODULE_DEFAULT; + module_ctx->module_benchmark_mask = MODULE_DEFAULT; + module_ctx->module_benchmark_charset = MODULE_DEFAULT; + module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = module_bridge_name; + module_ctx->module_bridge_type = module_bridge_type; + module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; + module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; + module_ctx->module_deprecated_notice = MODULE_DEFAULT; + module_ctx->module_dgst_pos0 = module_dgst_pos0; + module_ctx->module_dgst_pos1 = module_dgst_pos1; + module_ctx->module_dgst_pos2 = module_dgst_pos2; + module_ctx->module_dgst_pos3 = module_dgst_pos3; + module_ctx->module_dgst_size = module_dgst_size; + module_ctx->module_dictstat_disable = MODULE_DEFAULT; + module_ctx->module_esalt_size = MODULE_DEFAULT; + module_ctx->module_extra_buffer_size = MODULE_DEFAULT; + module_ctx->module_extra_tmp_size = MODULE_DEFAULT; + module_ctx->module_extra_tuningdb_block = MODULE_DEFAULT; + module_ctx->module_forced_outfile_format = MODULE_DEFAULT; + module_ctx->module_hash_binary_count = MODULE_DEFAULT; + module_ctx->module_hash_binary_parse = MODULE_DEFAULT; + module_ctx->module_hash_binary_save = MODULE_DEFAULT; + module_ctx->module_hash_decode_postprocess = MODULE_DEFAULT; + module_ctx->module_hash_decode_potfile = MODULE_DEFAULT; + module_ctx->module_hash_decode_zero_hash = MODULE_DEFAULT; + module_ctx->module_hash_decode = module_hash_decode; + module_ctx->module_hash_encode_status = MODULE_DEFAULT; + module_ctx->module_hash_encode_potfile = MODULE_DEFAULT; + module_ctx->module_hash_encode = module_hash_encode; + module_ctx->module_hash_init_selftest = MODULE_DEFAULT; + module_ctx->module_hash_mode = MODULE_DEFAULT; + module_ctx->module_hash_category = module_hash_category; + module_ctx->module_hash_name = module_hash_name; + module_ctx->module_hashes_count_min = MODULE_DEFAULT; + module_ctx->module_hashes_count_max = MODULE_DEFAULT; + module_ctx->module_hlfmt_disable = MODULE_DEFAULT; + module_ctx->module_hook_extra_param_size = MODULE_DEFAULT; + module_ctx->module_hook_extra_param_init = MODULE_DEFAULT; + module_ctx->module_hook_extra_param_term = MODULE_DEFAULT; + module_ctx->module_hook12 = MODULE_DEFAULT; + module_ctx->module_hook23 = MODULE_DEFAULT; + module_ctx->module_hook_salt_size = MODULE_DEFAULT; + module_ctx->module_hook_size = MODULE_DEFAULT; + module_ctx->module_jit_build_options = MODULE_DEFAULT; + module_ctx->module_jit_cache_disable = MODULE_DEFAULT; + module_ctx->module_kernel_accel_max = MODULE_DEFAULT; + module_ctx->module_kernel_accel_min = MODULE_DEFAULT; + module_ctx->module_kernel_loops_max = MODULE_DEFAULT; + module_ctx->module_kernel_loops_min = MODULE_DEFAULT; + module_ctx->module_kernel_threads_max = MODULE_DEFAULT; + module_ctx->module_kernel_threads_min = MODULE_DEFAULT; + module_ctx->module_kern_type = module_kern_type; + module_ctx->module_kern_type_dynamic = MODULE_DEFAULT; + module_ctx->module_opti_type = module_opti_type; + module_ctx->module_opts_type = module_opts_type; + module_ctx->module_outfile_check_disable = MODULE_DEFAULT; + module_ctx->module_outfile_check_nocomp = MODULE_DEFAULT; + module_ctx->module_potfile_custom_check = MODULE_DEFAULT; + module_ctx->module_potfile_disable = MODULE_DEFAULT; + module_ctx->module_potfile_keep_all_hashes = MODULE_DEFAULT; + module_ctx->module_pwdump_column = MODULE_DEFAULT; + module_ctx->module_pw_max = module_pw_max; + module_ctx->module_pw_min = MODULE_DEFAULT; + module_ctx->module_salt_max = MODULE_DEFAULT; + module_ctx->module_salt_min = MODULE_DEFAULT; + module_ctx->module_salt_type = module_salt_type; + module_ctx->module_separator = MODULE_DEFAULT; + module_ctx->module_st_hash = module_st_hash; + module_ctx->module_st_pass = module_st_pass; + module_ctx->module_tmp_size = module_tmp_size; + module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_warmup_disable = MODULE_DEFAULT; +} diff --git a/src/modules/module_70200.c b/src/modules/module_70200.c new file mode 100644 index 000000000..e39fd2f25 --- /dev/null +++ b/src/modules/module_70200.c @@ -0,0 +1,268 @@ +/** + * Author......: See docs/credits.txt + * License.....: MIT + */ + +#include "common.h" +#include "types.h" +#include "modules.h" +#include "bitops.h" +#include "convert.h" +#include "shared.h" + +static const u32 ATTACK_EXEC = ATTACK_EXEC_OUTSIDE_KERNEL; +static const u32 DGST_POS0 = 0; +static const u32 DGST_POS1 = 1; +static const u32 DGST_POS2 = 2; +static const u32 DGST_POS3 = 3; +static const u32 DGST_SIZE = DGST_SIZE_4_16; +static const u32 HASH_CATEGORY = HASH_CATEGORY_GENERIC_KDF; +static const char *HASH_NAME = "scrypt [Bridged: Scrypt-Yescrypt]"; +static const u64 KERN_TYPE = 70100; +static const u32 OPTI_TYPE = OPTI_TYPE_ZERO_BYTE; +static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE + | OPTS_TYPE_PT_GENERATE_LE + | OPTS_TYPE_NATIVE_THREADS + | OPTS_TYPE_MP_MULTI_DISABLE; +static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; +static const u64 BRIDGE_TYPE = BRIDGE_TYPE_MATCH_TUNINGS // optional - improves performance + | BRIDGE_TYPE_REPLACE_LOOP; +static const char *BRIDGE_NAME = "scrypt_yescrypt"; +static const char *ST_PASS = "hashcat"; +static const char *ST_HASH = "SCRYPT:16384:8:1:OTEyNzU0ODg=:Cc8SPjRH1hFQhuIPCdF51uNGtJ2aOY/isuoMlMUsJ8c="; + +u32 module_attack_exec (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ATTACK_EXEC; } +u32 module_dgst_pos0 (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_POS0; } +u32 module_dgst_pos1 (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_POS1; } +u32 module_dgst_pos2 (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_POS2; } +u32 module_dgst_pos3 (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_POS3; } +u32 module_dgst_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_SIZE; } +u32 module_hash_category (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return HASH_CATEGORY; } +const char *module_hash_name (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return HASH_NAME; } +u64 module_kern_type (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return KERN_TYPE; } +u32 module_opti_type (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return OPTI_TYPE; } +u64 module_opts_type (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return OPTS_TYPE; } +u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return SALT_TYPE; } +const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; } +const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; } +const char *module_bridge_name (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return BRIDGE_NAME; } +u64 module_bridge_type (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return BRIDGE_TYPE; } + +static const char *SIGNATURE_SCRYPT = "SCRYPT"; + +u32 module_pw_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) +{ + // this overrides the reductions of PW_MAX in case optimized kernel is selected + // IOW, even in optimized kernel mode it support length 256 + + const u32 pw_max = PW_MAX; + + return pw_max; +} + +u64 module_tmp_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) +{ + #define SCRYPT_R_MAX 16 + #define SCRYPT_P_MAX 16 + + const u64 tmp_size = 128ULL * SCRYPT_R_MAX * SCRYPT_P_MAX; + + return tmp_size; +} + +int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED void *digest_buf, MAYBE_UNUSED salt_t *salt, MAYBE_UNUSED void *esalt_buf, MAYBE_UNUSED void *hook_salt_buf, MAYBE_UNUSED hashinfo_t *hash_info, const char *line_buf, MAYBE_UNUSED const int line_len) +{ + u32 *digest = (u32 *) digest_buf; + + hc_token_t token; + + memset (&token, 0, sizeof (hc_token_t)); + + token.token_cnt = 6; + + token.signatures_cnt = 1; + token.signatures_buf[0] = SIGNATURE_SCRYPT; + + token.sep[0] = ':'; + token.len[0] = 6; + token.attr[0] = TOKEN_ATTR_FIXED_LENGTH + | TOKEN_ATTR_VERIFY_SIGNATURE; + + token.sep[1] = ':'; + token.len_min[1] = 1; + token.len_max[1] = 6; + token.attr[1] = TOKEN_ATTR_VERIFY_LENGTH; + + token.sep[2] = ':'; + token.len_min[2] = 1; + token.len_max[2] = 6; + token.attr[2] = TOKEN_ATTR_VERIFY_LENGTH; + + token.sep[3] = ':'; + token.len_min[3] = 1; + token.len_max[3] = 6; + token.attr[3] = TOKEN_ATTR_VERIFY_LENGTH; + + token.sep[4] = ':'; + token.len_min[4] = 0; + token.len_max[4] = 45; + token.attr[4] = TOKEN_ATTR_VERIFY_LENGTH + | TOKEN_ATTR_VERIFY_BASE64A; + + token.sep[5] = ':'; + token.len_min[5] = 44; + token.len_max[5] = 88; + token.attr[5] = TOKEN_ATTR_VERIFY_LENGTH + | TOKEN_ATTR_VERIFY_BASE64A; + + const int rc_tokenizer = input_tokenizer ((const u8 *) line_buf, line_len, &token); + + if (rc_tokenizer != PARSER_OK) return (rc_tokenizer); + + // scrypt settings + + const u8 *N_pos = token.buf[1]; + const u8 *r_pos = token.buf[2]; + const u8 *p_pos = token.buf[3]; + + salt->scrypt_N = hc_strtoul ((const char *) N_pos, NULL, 10); + salt->scrypt_r = hc_strtoul ((const char *) r_pos, NULL, 10); + salt->scrypt_p = hc_strtoul ((const char *) p_pos, NULL, 10); + + salt->salt_iter = 1; + + if (salt->scrypt_N % 1024) return (PARSER_SALT_VALUE); // we set loop count to 1024 fixed + + // salt + + const u8 *salt_pos = token.buf[4]; + const int salt_len = token.len[4]; + + u8 tmp_buf[128] = { 0 }; + + const int tmp_len = base64_decode (base64_to_int, salt_pos, salt_len, tmp_buf); + + memcpy (salt->salt_buf, tmp_buf, tmp_len); + + salt->salt_len = tmp_len; + + // digest - base64 decode + + const u8 *hash_pos = token.buf[5]; + const int hash_len = token.len[5]; + + memset (tmp_buf, 0, sizeof (tmp_buf)); + + const int digest_len = base64_decode (base64_to_int, hash_pos, hash_len, tmp_buf); + + // digest_len should be safe because of 88 limit + + memcpy (digest, tmp_buf, digest_len); + + salt->salt_len_pc = digest_len; + + return (PARSER_OK); +} + +int module_hash_encode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const void *digest_buf, MAYBE_UNUSED const salt_t *salt, MAYBE_UNUSED const void *esalt_buf, MAYBE_UNUSED const void *hook_salt_buf, MAYBE_UNUSED const hashinfo_t *hash_info, char *line_buf, MAYBE_UNUSED const int line_size) +{ + char base64_salt[64] = { 0 }; + + base64_encode (int_to_base64, (const u8 *) salt->salt_buf, salt->salt_len, (u8 *) base64_salt); + + char base64_digest[128] = { 0 }; + + base64_encode (int_to_base64, (const u8 *) digest_buf, salt->salt_len_pc, (u8 *) base64_digest); + + const int line_len = snprintf (line_buf, line_size, "%s:%u:%u:%u:%s:%s", + SIGNATURE_SCRYPT, + salt->scrypt_N, + salt->scrypt_r, + salt->scrypt_p, + base64_salt, + base64_digest); + + return line_len; +} + +void module_init (module_ctx_t *module_ctx) +{ + module_ctx->module_context_size = MODULE_CONTEXT_SIZE_CURRENT; + module_ctx->module_interface_version = MODULE_INTERFACE_VERSION_CURRENT; + + module_ctx->module_attack_exec = module_attack_exec; + module_ctx->module_benchmark_esalt = MODULE_DEFAULT; + module_ctx->module_benchmark_hook_salt = MODULE_DEFAULT; + module_ctx->module_benchmark_mask = MODULE_DEFAULT; + module_ctx->module_benchmark_charset = MODULE_DEFAULT; + module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = module_bridge_name; + module_ctx->module_bridge_type = module_bridge_type; + module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; + module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; + module_ctx->module_deprecated_notice = MODULE_DEFAULT; + module_ctx->module_dgst_pos0 = module_dgst_pos0; + module_ctx->module_dgst_pos1 = module_dgst_pos1; + module_ctx->module_dgst_pos2 = module_dgst_pos2; + module_ctx->module_dgst_pos3 = module_dgst_pos3; + module_ctx->module_dgst_size = module_dgst_size; + module_ctx->module_dictstat_disable = MODULE_DEFAULT; + module_ctx->module_esalt_size = MODULE_DEFAULT; + module_ctx->module_extra_buffer_size = MODULE_DEFAULT; + module_ctx->module_extra_tmp_size = MODULE_DEFAULT; + module_ctx->module_extra_tuningdb_block = MODULE_DEFAULT; + module_ctx->module_forced_outfile_format = MODULE_DEFAULT; + module_ctx->module_hash_binary_count = MODULE_DEFAULT; + module_ctx->module_hash_binary_parse = MODULE_DEFAULT; + module_ctx->module_hash_binary_save = MODULE_DEFAULT; + module_ctx->module_hash_decode_postprocess = MODULE_DEFAULT; + module_ctx->module_hash_decode_potfile = MODULE_DEFAULT; + module_ctx->module_hash_decode_zero_hash = MODULE_DEFAULT; + module_ctx->module_hash_decode = module_hash_decode; + module_ctx->module_hash_encode_status = MODULE_DEFAULT; + module_ctx->module_hash_encode_potfile = MODULE_DEFAULT; + module_ctx->module_hash_encode = module_hash_encode; + module_ctx->module_hash_init_selftest = MODULE_DEFAULT; + module_ctx->module_hash_mode = MODULE_DEFAULT; + module_ctx->module_hash_category = module_hash_category; + module_ctx->module_hash_name = module_hash_name; + module_ctx->module_hashes_count_min = MODULE_DEFAULT; + module_ctx->module_hashes_count_max = MODULE_DEFAULT; + module_ctx->module_hlfmt_disable = MODULE_DEFAULT; + module_ctx->module_hook_extra_param_size = MODULE_DEFAULT; + module_ctx->module_hook_extra_param_init = MODULE_DEFAULT; + module_ctx->module_hook_extra_param_term = MODULE_DEFAULT; + module_ctx->module_hook12 = MODULE_DEFAULT; + module_ctx->module_hook23 = MODULE_DEFAULT; + module_ctx->module_hook_salt_size = MODULE_DEFAULT; + module_ctx->module_hook_size = MODULE_DEFAULT; + module_ctx->module_jit_build_options = MODULE_DEFAULT; + module_ctx->module_jit_cache_disable = MODULE_DEFAULT; + module_ctx->module_kernel_accel_max = MODULE_DEFAULT; + module_ctx->module_kernel_accel_min = MODULE_DEFAULT; + module_ctx->module_kernel_loops_max = MODULE_DEFAULT; + module_ctx->module_kernel_loops_min = MODULE_DEFAULT; + module_ctx->module_kernel_threads_max = MODULE_DEFAULT; + module_ctx->module_kernel_threads_min = MODULE_DEFAULT; + module_ctx->module_kern_type = module_kern_type; + module_ctx->module_kern_type_dynamic = MODULE_DEFAULT; + module_ctx->module_opti_type = module_opti_type; + module_ctx->module_opts_type = module_opts_type; + module_ctx->module_outfile_check_disable = MODULE_DEFAULT; + module_ctx->module_outfile_check_nocomp = MODULE_DEFAULT; + module_ctx->module_potfile_custom_check = MODULE_DEFAULT; + module_ctx->module_potfile_disable = MODULE_DEFAULT; + module_ctx->module_potfile_keep_all_hashes = MODULE_DEFAULT; + module_ctx->module_pwdump_column = MODULE_DEFAULT; + module_ctx->module_pw_max = module_pw_max; + module_ctx->module_pw_min = MODULE_DEFAULT; + module_ctx->module_salt_max = MODULE_DEFAULT; + module_ctx->module_salt_min = MODULE_DEFAULT; + module_ctx->module_salt_type = module_salt_type; + module_ctx->module_separator = MODULE_DEFAULT; + module_ctx->module_st_hash = module_st_hash; + module_ctx->module_st_pass = module_st_pass; + module_ctx->module_tmp_size = module_tmp_size; + module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_warmup_disable = MODULE_DEFAULT; +} diff --git a/src/modules/module_72000.c b/src/modules/module_72000.c new file mode 100644 index 000000000..d9995764c --- /dev/null +++ b/src/modules/module_72000.c @@ -0,0 +1,264 @@ + +/** + * Author......: See docs/credits.txt + * License.....: MIT + */ + +#include "common.h" +#include "types.h" +#include "modules.h" +#include "bitops.h" +#include "convert.h" +#include "shared.h" +#include "memory.h" +#include "emu_inc_hash_md4.h" + +static const u32 ATTACK_EXEC = ATTACK_EXEC_OUTSIDE_KERNEL; +static const u32 DGST_POS0 = 0; +static const u32 DGST_POS1 = 1; +static const u32 DGST_POS2 = 2; +static const u32 DGST_POS3 = 3; +static const u32 DGST_SIZE = DGST_SIZE_4_4; +static const u32 HASH_CATEGORY = HASH_CATEGORY_RAW_HASH; +static const char *HASH_NAME = "Generic Hash [Bridged: Python Interpreter free-threading]"; +static const u64 KERN_TYPE = 72000; +static const u32 OPTI_TYPE = OPTI_TYPE_ZERO_BYTE; +static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE + | OPTS_TYPE_PT_GENERATE_LE + | OPTS_TYPE_AUTODETECT_DISABLE + | OPTS_TYPE_NATIVE_THREADS + | OPTS_TYPE_MP_MULTI_DISABLE; +static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; +static const u64 BRIDGE_TYPE = BRIDGE_TYPE_MATCH_TUNINGS // optional - improves performance + | BRIDGE_TYPE_LAUNCH_LOOP + | BRIDGE_TYPE_UPDATE_SELFTEST; +static const char *BRIDGE_NAME = "python_generic_hash_sp"; +static const char *ST_PASS = "hashcat"; +static const char *ST_HASH = "33522b0fd9812aa68586f66dba7c17a8ce64344137f9c7d8b11f32a6921c22de*9348746780603343"; + +u32 module_attack_exec (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ATTACK_EXEC; } +u32 module_dgst_pos0 (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_POS0; } +u32 module_dgst_pos1 (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_POS1; } +u32 module_dgst_pos2 (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_POS2; } +u32 module_dgst_pos3 (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_POS3; } +u32 module_dgst_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_SIZE; } +u32 module_hash_category (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return HASH_CATEGORY; } +const char *module_hash_name (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return HASH_NAME; } +u64 module_kern_type (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return KERN_TYPE; } +u32 module_opti_type (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return OPTI_TYPE; } +u64 module_opts_type (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return OPTS_TYPE; } +u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return SALT_TYPE; } +const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; } +const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; } +const char *module_bridge_name (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return BRIDGE_NAME; } +u64 module_bridge_type (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return BRIDGE_TYPE; } + +typedef struct +{ + // input + + u32 pw_buf[64]; + u32 pw_len; + + // output + + u32 out_buf[64]; + u32 out_len; + +} generic_io_tmp_t; + +typedef struct +{ + u32 hash_buf[16384]; + u32 hash_len; + + u32 salt_buf[16384]; + u32 salt_len; + +} generic_io_t; + +u64 module_tmp_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) +{ + const u64 tmp_size = (const u64) sizeof (generic_io_tmp_t); + + return tmp_size; +} + +u64 module_esalt_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) +{ + const u64 esalt_size = (const u64) sizeof (generic_io_t); + + return esalt_size; +} + +bool module_potfile_disable (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) +{ + const bool potfile_disable = true; + + return potfile_disable; +} + +int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED void *digest_buf, MAYBE_UNUSED salt_t *salt, MAYBE_UNUSED void *esalt_buf, MAYBE_UNUSED void *hook_salt_buf, MAYBE_UNUSED hashinfo_t *hash_info, const char *line_buf, MAYBE_UNUSED const int line_len) +{ + u32 *digest = (u32 *) digest_buf; + + generic_io_t *generic_io = (generic_io_t *) esalt_buf; + + hc_token_t token; + + memset (&token, 0, sizeof (hc_token_t)); + + token.token_cnt = 2; + + token.len_min[0] = 0; + token.len_max[0] = 65536; + token.sep[0] = '*'; + token.attr[0] = TOKEN_ATTR_VERIFY_LENGTH; + + token.len_min[1] = 0; + token.len_max[1] = 65536; + token.sep[1] = '*'; + token.attr[1] = TOKEN_ATTR_VERIFY_LENGTH; + + const int rc_tokenizer = input_tokenizer ((const u8 *) line_buf, line_len, &token); + + if (rc_tokenizer != PARSER_OK) return (rc_tokenizer); + + // To keep this as generic as possible, + // we make a hash of the input data so it fits into digest[] + // and the same for the salt + + const u8 *salt_buf = token.buf[1]; + const int salt_len = token.len[1]; + + memcpy (generic_io->salt_buf, salt_buf, salt_len); + + generic_io->salt_len = salt_len; + + md4_ctx_t ctx1; + + md4_init (&ctx1); + md4_update (&ctx1, (const u32 *) generic_io->salt_buf, generic_io->salt_len); + md4_final (&ctx1); + + salt->salt_buf[0] = ctx1.h[0]; + salt->salt_buf[1] = ctx1.h[1]; + salt->salt_buf[2] = ctx1.h[2]; + salt->salt_buf[3] = ctx1.h[3]; + + salt->salt_len = 16; + salt->salt_iter = 1; + + // digest + + const u8 *hash_buf = token.buf[0]; + const int hash_len = token.len[0]; + + memcpy (generic_io->hash_buf, hash_buf, hash_len); + + generic_io->hash_len = hash_len; + + md4_ctx_t ctx2; + + md4_init (&ctx2); + md4_update (&ctx2, (const u32 *) generic_io->hash_buf, generic_io->hash_len); + md4_final (&ctx2); + + digest[0] = ctx2.h[0]; + digest[1] = ctx2.h[1]; + digest[2] = ctx2.h[2]; + digest[3] = ctx2.h[3]; + + return (PARSER_OK); +} + +int module_hash_encode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const void *digest_buf, MAYBE_UNUSED const salt_t *salt, MAYBE_UNUSED const void *esalt_buf, MAYBE_UNUSED const void *hook_salt_buf, MAYBE_UNUSED const hashinfo_t *hash_info, char *line_buf, MAYBE_UNUSED const int line_size) +{ + const generic_io_t *generic_io = (const generic_io_t *) esalt_buf; + + const int line_len = snprintf (line_buf, line_size, "%s*%s", (char *) generic_io->hash_buf, (char *) generic_io->salt_buf); + + return line_len; +} + +void module_init (module_ctx_t *module_ctx) +{ + module_ctx->module_context_size = MODULE_CONTEXT_SIZE_CURRENT; + module_ctx->module_interface_version = MODULE_INTERFACE_VERSION_CURRENT; + + module_ctx->module_attack_exec = module_attack_exec; + module_ctx->module_benchmark_esalt = MODULE_DEFAULT; + module_ctx->module_benchmark_hook_salt = MODULE_DEFAULT; + module_ctx->module_benchmark_mask = MODULE_DEFAULT; + module_ctx->module_benchmark_charset = MODULE_DEFAULT; + module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = module_bridge_name; + module_ctx->module_bridge_type = module_bridge_type; + module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; + module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; + module_ctx->module_deprecated_notice = MODULE_DEFAULT; + module_ctx->module_dgst_pos0 = module_dgst_pos0; + module_ctx->module_dgst_pos1 = module_dgst_pos1; + module_ctx->module_dgst_pos2 = module_dgst_pos2; + module_ctx->module_dgst_pos3 = module_dgst_pos3; + module_ctx->module_dgst_size = module_dgst_size; + module_ctx->module_dictstat_disable = MODULE_DEFAULT; + module_ctx->module_esalt_size = module_esalt_size; + module_ctx->module_extra_buffer_size = MODULE_DEFAULT; + module_ctx->module_extra_tmp_size = MODULE_DEFAULT; + module_ctx->module_extra_tuningdb_block = MODULE_DEFAULT; + module_ctx->module_forced_outfile_format = MODULE_DEFAULT; + module_ctx->module_hash_binary_count = MODULE_DEFAULT; + module_ctx->module_hash_binary_parse = MODULE_DEFAULT; + module_ctx->module_hash_binary_save = MODULE_DEFAULT; + module_ctx->module_hash_decode_postprocess = MODULE_DEFAULT; + module_ctx->module_hash_category = module_hash_category; + module_ctx->module_hash_decode = module_hash_decode; + module_ctx->module_hash_decode_potfile = MODULE_DEFAULT; + module_ctx->module_hash_decode_zero_hash = MODULE_DEFAULT; + module_ctx->module_hash_encode = module_hash_encode; + module_ctx->module_hash_encode_status = MODULE_DEFAULT; + module_ctx->module_hash_encode_potfile = MODULE_DEFAULT; + module_ctx->module_hash_init_selftest = MODULE_DEFAULT; + module_ctx->module_hash_mode = MODULE_DEFAULT; + module_ctx->module_hash_name = module_hash_name; + module_ctx->module_hashes_count_min = MODULE_DEFAULT; + module_ctx->module_hashes_count_max = MODULE_DEFAULT; + module_ctx->module_hlfmt_disable = MODULE_DEFAULT; + module_ctx->module_hook_extra_param_size = MODULE_DEFAULT; + module_ctx->module_hook_extra_param_init = MODULE_DEFAULT; + module_ctx->module_hook_extra_param_term = MODULE_DEFAULT; + module_ctx->module_hook12 = MODULE_DEFAULT; + module_ctx->module_hook23 = MODULE_DEFAULT; + module_ctx->module_hook_salt_size = MODULE_DEFAULT; + module_ctx->module_hook_size = MODULE_DEFAULT; + module_ctx->module_jit_build_options = MODULE_DEFAULT; + module_ctx->module_jit_cache_disable = MODULE_DEFAULT; + module_ctx->module_kernel_accel_max = MODULE_DEFAULT; + module_ctx->module_kernel_accel_min = MODULE_DEFAULT; + module_ctx->module_kernel_loops_max = MODULE_DEFAULT; + module_ctx->module_kernel_loops_min = MODULE_DEFAULT; + module_ctx->module_kernel_threads_max = MODULE_DEFAULT; + module_ctx->module_kernel_threads_min = MODULE_DEFAULT; + module_ctx->module_kern_type = module_kern_type; + module_ctx->module_kern_type_dynamic = MODULE_DEFAULT; + module_ctx->module_opti_type = module_opti_type; + module_ctx->module_opts_type = module_opts_type; + module_ctx->module_outfile_check_disable = MODULE_DEFAULT; + module_ctx->module_outfile_check_nocomp = MODULE_DEFAULT; + module_ctx->module_potfile_custom_check = MODULE_DEFAULT; + module_ctx->module_potfile_disable = module_potfile_disable; + module_ctx->module_potfile_keep_all_hashes = MODULE_DEFAULT; + module_ctx->module_pwdump_column = MODULE_DEFAULT; + module_ctx->module_pw_max = MODULE_DEFAULT; + module_ctx->module_pw_min = MODULE_DEFAULT; + module_ctx->module_salt_max = MODULE_DEFAULT; + module_ctx->module_salt_min = MODULE_DEFAULT; + module_ctx->module_salt_type = module_salt_type; + module_ctx->module_separator = MODULE_DEFAULT; + module_ctx->module_st_hash = module_st_hash; + module_ctx->module_st_pass = module_st_pass; + module_ctx->module_tmp_size = module_tmp_size; + module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_warmup_disable = MODULE_DEFAULT; +} diff --git a/src/modules/module_73000.c b/src/modules/module_73000.c new file mode 100644 index 000000000..351893f26 --- /dev/null +++ b/src/modules/module_73000.c @@ -0,0 +1,264 @@ + +/** + * Author......: See docs/credits.txt + * License.....: MIT + */ + +#include "common.h" +#include "types.h" +#include "modules.h" +#include "bitops.h" +#include "convert.h" +#include "shared.h" +#include "memory.h" +#include "emu_inc_hash_md4.h" + +static const u32 ATTACK_EXEC = ATTACK_EXEC_OUTSIDE_KERNEL; +static const u32 DGST_POS0 = 0; +static const u32 DGST_POS1 = 1; +static const u32 DGST_POS2 = 2; +static const u32 DGST_POS3 = 3; +static const u32 DGST_SIZE = DGST_SIZE_4_4; +static const u32 HASH_CATEGORY = HASH_CATEGORY_RAW_HASH; +static const char *HASH_NAME = "Generic Hash [Bridged: Python Interpreter with GIL]"; +static const u64 KERN_TYPE = 73000; +static const u32 OPTI_TYPE = OPTI_TYPE_ZERO_BYTE; +static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE + | OPTS_TYPE_PT_GENERATE_LE + | OPTS_TYPE_AUTODETECT_DISABLE + | OPTS_TYPE_NATIVE_THREADS + | OPTS_TYPE_MP_MULTI_DISABLE; +static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED; +static const u64 BRIDGE_TYPE = BRIDGE_TYPE_MATCH_TUNINGS // optional - improves performance + | BRIDGE_TYPE_LAUNCH_LOOP + | BRIDGE_TYPE_UPDATE_SELFTEST; +static const char *BRIDGE_NAME = "python_generic_hash_mp"; +static const char *ST_PASS = "hashcat"; +static const char *ST_HASH = "33522b0fd9812aa68586f66dba7c17a8ce64344137f9c7d8b11f32a6921c22de*9348746780603343"; + +u32 module_attack_exec (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ATTACK_EXEC; } +u32 module_dgst_pos0 (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_POS0; } +u32 module_dgst_pos1 (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_POS1; } +u32 module_dgst_pos2 (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_POS2; } +u32 module_dgst_pos3 (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_POS3; } +u32 module_dgst_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_SIZE; } +u32 module_hash_category (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return HASH_CATEGORY; } +const char *module_hash_name (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return HASH_NAME; } +u64 module_kern_type (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return KERN_TYPE; } +u32 module_opti_type (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return OPTI_TYPE; } +u64 module_opts_type (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return OPTS_TYPE; } +u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return SALT_TYPE; } +const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; } +const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; } +const char *module_bridge_name (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return BRIDGE_NAME; } +u64 module_bridge_type (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return BRIDGE_TYPE; } + +typedef struct +{ + // input + + u32 pw_buf[64]; + u32 pw_len; + + // output + + u32 out_buf[64]; + u32 out_len; + +} generic_io_tmp_t; + +typedef struct +{ + u32 hash_buf[16384]; + u32 hash_len; + + u32 salt_buf[16384]; + u32 salt_len; + +} generic_io_t; + +u64 module_tmp_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) +{ + const u64 tmp_size = (const u64) sizeof (generic_io_tmp_t); + + return tmp_size; +} + +u64 module_esalt_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) +{ + const u64 esalt_size = (const u64) sizeof (generic_io_t); + + return esalt_size; +} + +bool module_potfile_disable (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) +{ + const bool potfile_disable = true; + + return potfile_disable; +} + +int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED void *digest_buf, MAYBE_UNUSED salt_t *salt, MAYBE_UNUSED void *esalt_buf, MAYBE_UNUSED void *hook_salt_buf, MAYBE_UNUSED hashinfo_t *hash_info, const char *line_buf, MAYBE_UNUSED const int line_len) +{ + u32 *digest = (u32 *) digest_buf; + + generic_io_t *generic_io = (generic_io_t *) esalt_buf; + + hc_token_t token; + + memset (&token, 0, sizeof (hc_token_t)); + + token.token_cnt = 2; + + token.len_min[0] = 0; + token.len_max[0] = 65536; + token.sep[0] = '*'; + token.attr[0] = TOKEN_ATTR_VERIFY_LENGTH; + + token.len_min[1] = 0; + token.len_max[1] = 65536; + token.sep[1] = '*'; + token.attr[1] = TOKEN_ATTR_VERIFY_LENGTH; + + const int rc_tokenizer = input_tokenizer ((const u8 *) line_buf, line_len, &token); + + if (rc_tokenizer != PARSER_OK) return (rc_tokenizer); + + // To keep this as generic as possible, + // we make a hash of the input data so it fits into digest[] + // and the same for the salt + + const u8 *salt_buf = token.buf[1]; + const int salt_len = token.len[1]; + + memcpy (generic_io->salt_buf, salt_buf, salt_len); + + generic_io->salt_len = salt_len; + + md4_ctx_t ctx1; + + md4_init (&ctx1); + md4_update (&ctx1, (const u32 *) generic_io->salt_buf, generic_io->salt_len); + md4_final (&ctx1); + + salt->salt_buf[0] = ctx1.h[0]; + salt->salt_buf[1] = ctx1.h[1]; + salt->salt_buf[2] = ctx1.h[2]; + salt->salt_buf[3] = ctx1.h[3]; + + salt->salt_len = 16; + salt->salt_iter = 1; + + // digest + + const u8 *hash_buf = token.buf[0]; + const int hash_len = token.len[0]; + + memcpy (generic_io->hash_buf, hash_buf, hash_len); + + generic_io->hash_len = hash_len; + + md4_ctx_t ctx2; + + md4_init (&ctx2); + md4_update (&ctx2, (const u32 *) generic_io->hash_buf, generic_io->hash_len); + md4_final (&ctx2); + + digest[0] = ctx2.h[0]; + digest[1] = ctx2.h[1]; + digest[2] = ctx2.h[2]; + digest[3] = ctx2.h[3]; + + return (PARSER_OK); +} + +int module_hash_encode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const void *digest_buf, MAYBE_UNUSED const salt_t *salt, MAYBE_UNUSED const void *esalt_buf, MAYBE_UNUSED const void *hook_salt_buf, MAYBE_UNUSED const hashinfo_t *hash_info, char *line_buf, MAYBE_UNUSED const int line_size) +{ + const generic_io_t *generic_io = (const generic_io_t *) esalt_buf; + + const int line_len = snprintf (line_buf, line_size, "%s*%s", (char *) generic_io->hash_buf, (char *) generic_io->salt_buf); + + return line_len; +} + +void module_init (module_ctx_t *module_ctx) +{ + module_ctx->module_context_size = MODULE_CONTEXT_SIZE_CURRENT; + module_ctx->module_interface_version = MODULE_INTERFACE_VERSION_CURRENT; + + module_ctx->module_attack_exec = module_attack_exec; + module_ctx->module_benchmark_esalt = MODULE_DEFAULT; + module_ctx->module_benchmark_hook_salt = MODULE_DEFAULT; + module_ctx->module_benchmark_mask = MODULE_DEFAULT; + module_ctx->module_benchmark_charset = MODULE_DEFAULT; + module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = module_bridge_name; + module_ctx->module_bridge_type = module_bridge_type; + module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; + module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; + module_ctx->module_deprecated_notice = MODULE_DEFAULT; + module_ctx->module_dgst_pos0 = module_dgst_pos0; + module_ctx->module_dgst_pos1 = module_dgst_pos1; + module_ctx->module_dgst_pos2 = module_dgst_pos2; + module_ctx->module_dgst_pos3 = module_dgst_pos3; + module_ctx->module_dgst_size = module_dgst_size; + module_ctx->module_dictstat_disable = MODULE_DEFAULT; + module_ctx->module_esalt_size = module_esalt_size; + module_ctx->module_extra_buffer_size = MODULE_DEFAULT; + module_ctx->module_extra_tmp_size = MODULE_DEFAULT; + module_ctx->module_extra_tuningdb_block = MODULE_DEFAULT; + module_ctx->module_forced_outfile_format = MODULE_DEFAULT; + module_ctx->module_hash_binary_count = MODULE_DEFAULT; + module_ctx->module_hash_binary_parse = MODULE_DEFAULT; + module_ctx->module_hash_binary_save = MODULE_DEFAULT; + module_ctx->module_hash_decode_postprocess = MODULE_DEFAULT; + module_ctx->module_hash_category = module_hash_category; + module_ctx->module_hash_decode = module_hash_decode; + module_ctx->module_hash_decode_potfile = MODULE_DEFAULT; + module_ctx->module_hash_decode_zero_hash = MODULE_DEFAULT; + module_ctx->module_hash_encode = module_hash_encode; + module_ctx->module_hash_encode_status = MODULE_DEFAULT; + module_ctx->module_hash_encode_potfile = MODULE_DEFAULT; + module_ctx->module_hash_init_selftest = MODULE_DEFAULT; + module_ctx->module_hash_mode = MODULE_DEFAULT; + module_ctx->module_hash_name = module_hash_name; + module_ctx->module_hashes_count_min = MODULE_DEFAULT; + module_ctx->module_hashes_count_max = MODULE_DEFAULT; + module_ctx->module_hlfmt_disable = MODULE_DEFAULT; + module_ctx->module_hook_extra_param_size = MODULE_DEFAULT; + module_ctx->module_hook_extra_param_init = MODULE_DEFAULT; + module_ctx->module_hook_extra_param_term = MODULE_DEFAULT; + module_ctx->module_hook12 = MODULE_DEFAULT; + module_ctx->module_hook23 = MODULE_DEFAULT; + module_ctx->module_hook_salt_size = MODULE_DEFAULT; + module_ctx->module_hook_size = MODULE_DEFAULT; + module_ctx->module_jit_build_options = MODULE_DEFAULT; + module_ctx->module_jit_cache_disable = MODULE_DEFAULT; + module_ctx->module_kernel_accel_max = MODULE_DEFAULT; + module_ctx->module_kernel_accel_min = MODULE_DEFAULT; + module_ctx->module_kernel_loops_max = MODULE_DEFAULT; + module_ctx->module_kernel_loops_min = MODULE_DEFAULT; + module_ctx->module_kernel_threads_max = MODULE_DEFAULT; + module_ctx->module_kernel_threads_min = MODULE_DEFAULT; + module_ctx->module_kern_type = module_kern_type; + module_ctx->module_kern_type_dynamic = MODULE_DEFAULT; + module_ctx->module_opti_type = module_opti_type; + module_ctx->module_opts_type = module_opts_type; + module_ctx->module_outfile_check_disable = MODULE_DEFAULT; + module_ctx->module_outfile_check_nocomp = MODULE_DEFAULT; + module_ctx->module_potfile_custom_check = MODULE_DEFAULT; + module_ctx->module_potfile_disable = module_potfile_disable; + module_ctx->module_potfile_keep_all_hashes = MODULE_DEFAULT; + module_ctx->module_pwdump_column = MODULE_DEFAULT; + module_ctx->module_pw_max = MODULE_DEFAULT; + module_ctx->module_pw_min = MODULE_DEFAULT; + module_ctx->module_salt_max = MODULE_DEFAULT; + module_ctx->module_salt_min = MODULE_DEFAULT; + module_ctx->module_salt_type = module_salt_type; + module_ctx->module_separator = MODULE_DEFAULT; + module_ctx->module_st_hash = module_st_hash; + module_ctx->module_st_pass = module_st_pass; + module_ctx->module_tmp_size = module_tmp_size; + module_ctx->module_unstable_warning = MODULE_DEFAULT; + module_ctx->module_warmup_disable = MODULE_DEFAULT; +} diff --git a/src/modules/module_99999.c b/src/modules/module_99999.c index b1dd810bd..520db334b 100644 --- a/src/modules/module_99999.c +++ b/src/modules/module_99999.c @@ -170,6 +170,8 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_benchmark_mask = MODULE_DEFAULT; module_ctx->module_benchmark_charset = MODULE_DEFAULT; module_ctx->module_benchmark_salt = MODULE_DEFAULT; + module_ctx->module_bridge_name = MODULE_DEFAULT; + module_ctx->module_bridge_type = MODULE_DEFAULT; module_ctx->module_build_plain_postprocess = MODULE_DEFAULT; module_ctx->module_deep_comp_kernel = MODULE_DEFAULT; module_ctx->module_deprecated_notice = MODULE_DEFAULT; diff --git a/src/modules/scrypt_common.c b/src/modules/scrypt_common.c new file mode 100644 index 000000000..eadf0b8c2 --- /dev/null +++ b/src/modules/scrypt_common.c @@ -0,0 +1,324 @@ + +/** + * Author......: See docs/credits.txt + * License.....: MIT + */ + +#include +#include "common.h" +#include "types.h" +#include "modules.h" +#include "bitops.h" +#include "convert.h" +#include "shared.h" +#include "memory.h" + +u32 scrypt_module_kernel_loops_min (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) +{ + const u32 kernel_loops_min = 2048; + + return kernel_loops_min; +} + +u32 scrypt_module_kernel_loops_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) +{ + const u32 kernel_loops_max = 2048; + + return kernel_loops_max; +} + +u32 scrypt_module_kernel_threads_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) +{ + const u32 kernel_threads_max = (user_options->kernel_threads_chgd == true) ? user_options->kernel_threads : SCRYPT_THREADS; + + return kernel_threads_max; +} + +u32 tmto = 0; + +u32 scrypt_exptected_threads (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + u32 threads = scrypt_module_kernel_threads_max (hashconfig, user_options, user_options_extra); + + if (hashconfig->opts_type & OPTS_TYPE_NATIVE_THREADS) + { + if (device_param->opencl_device_type & CL_DEVICE_TYPE_CPU) + { + threads = 1; + } + } + + return threads; +} + +const char *scrypt_module_extra_tuningdb_block (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, const backend_ctx_t *backend_ctx, MAYBE_UNUSED const hashes_t *hashes, const u32 device_id, const u32 kernel_accel_user) +{ + hc_device_param_t *device_param = &backend_ctx->devices_param[device_id]; + + // we enforce the same configuration for all hashes, so the next lines should be fine + + const u32 scrypt_N = (hashes->salts_buf[0].scrypt_N == 0) ? hashes->st_salts_buf[0].scrypt_N : hashes->salts_buf[0].scrypt_N; + const u32 scrypt_r = (hashes->salts_buf[0].scrypt_r == 0) ? hashes->st_salts_buf[0].scrypt_r : hashes->salts_buf[0].scrypt_r; + //const u32 scrypt_p = (hashes->salts_buf[0].scrypt_p == 0) ? hashes->st_salts_buf[0].scrypt_p : hashes->salts_buf[0].scrypt_p; + + const u64 size_per_accel = (128ULL * scrypt_r * scrypt_N * scrypt_exptected_threads (hashconfig, user_options, user_options_extra, device_param)); + //const u64 state_per_accel = (128ULL * scrypt_r * scrypt_p * scrypt_exptected_threads (hashconfig, user_options, user_options_extra, device_param)); + + int lines_sz = 4096; + char *lines_buf = hcmalloc (lines_sz); + int lines_pos = 0; + + const u32 device_processors = device_param->device_processors; + + const u32 device_maxworkgroup_size = device_param->device_maxworkgroup_size; + + //const u32 device_local_mem_size = device_param->device_local_mem_size; + + const u64 fixed_mem = (128 * 1024 * 1024); // some storage we need for pws[], tmps[], and others. Is around 72MiB in reality. + + // SCRYPT kernels cause significant spilling, which increases global memory requirements. + // The variables the runtime uses to allocate global memory for this spilling are undocumented. + // As a result, launching the kernel can run into memory allocation errors, especially on devices with a large SM count and a high SCRYPT-R value. + // Based on testing, we assume the following behavior: + // The runtime uses device_maxworkgroup_size as the thread count, multiplies it by the SM count, and then multiplies that by the spill size. + // Additionally, it completely ignores our specified grid sizes, which could otherwise help mitigate this. + // We assume other runtimes behave similarly. + // Note: we need to allocate the 128R buffer three times: main context, TMTO temporary buffer, (half-size) BlockMix. + + const u64 spill_mem = 3 * ((128ULL * scrypt_r) * device_processors * device_maxworkgroup_size); + + const u64 available_mem = MIN (device_param->device_available_mem, (device_param->device_maxmem_alloc * 4)) - (fixed_mem + spill_mem); + + tmto = 0; + + u32 kernel_accel_new = device_processors; + + if (kernel_accel_user) + { + kernel_accel_new = kernel_accel_user; + + if (user_options->scrypt_tmto_chgd == true) + { + // in this branch the user can shoot themselves into the foot + + tmto = user_options->scrypt_tmto; + } + else + { + // only option to save the user is to increase tmto + + for (tmto = 0; tmto < 6; tmto++) + { + const u64 size_per_accel_tmto = size_per_accel >> tmto; + + if ((size_per_accel_tmto * kernel_accel_new) > available_mem) continue; // not enough memory + + break; + } + } + } + else + { + if (user_options->scrypt_tmto_chgd == true) + { + tmto = user_options->scrypt_tmto; + } + else + { + // This is the typical case and the main challenge: choosing the right TMTO value. + // Finding a consistently good algorithm is nearly impossible due to the many factors + // that influence performance. There is no clear rule of thumb. + // + // For example, consider the default scrypt configuration with N=16k and r=8. + // + // In one test with an NVIDIA mobile GPU with 16 GiB of memory (minus X), the device could + // use 28/58 processors. In theory, increasing the TMTO should increase + // performance, but in practice it had no effect at all. + // + // In another test with an NVIDIA discrete GPU with 11 GiB (minus X), the device initially + // used 19/68 processors. Increasing the TMTO to utilize all 68 processors + // did yield the expected performance improvement, matching the theory. + // + // However, with an AMD discrete GPU with 24 GiB (minus X), the optimal case used 46/48 + // processors. Increasing the TMTO should have reduced performance, but + // instead it nearly doubled the speed?! This might be related to AMD GPUs performing + // best with a thread count of 64 instead of 32, but in practice, using 64 threads + // shows little difference compared to 32, suggesting that at a very low level, + // only 32 threads may actually be active. + // + // This algorithm is far from ideal. Fortunately, we have a tuning database, + // so users can find the best -n value for their specific setup, and a forced -n value + // allows to easily calculate the TMTO. + + if (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU) + { + for (tmto = 0; tmto < 2; tmto++) // results in tmto = 2 + { + if (device_param->device_host_unified_memory == 1) break; // do not touch + + if ((device_param->opencl_device_vendor_id == VENDOR_ID_AMD) + || (device_param->opencl_device_vendor_id == VENDOR_ID_AMD_USE_HIP)) + { + if (tmto == 0) continue; // at least 1 + } + + const u64 size_per_accel_tmto = size_per_accel >> tmto; + + const float blocks = (float) available_mem / size_per_accel_tmto; + + const float blocks_perc = device_processors / blocks; + + if (blocks_perc > 1.16) continue; + + // probably very low scrypt configuration = register pressure becomes a bottleneck + if ((blocks_perc * (1 << tmto)) < 0.4) + { + if (scrypt_r == 1) continue; + } + + break; + } + } + } + + // from here tmto is known, and we need to update kernel_accel + + if ((device_param->opencl_device_type & CL_DEVICE_TYPE_GPU) && (device_param->device_host_unified_memory == false)) + { + const u64 size_per_accel_tmto = size_per_accel >> tmto; + + kernel_accel_new = available_mem / size_per_accel_tmto; + + kernel_accel_new = MIN (kernel_accel_new, 1024); // max supported + + // luxury option, clamp if we have twice the processors + + if (kernel_accel_new > (device_processors * 2)) + { + const u32 extra = kernel_accel_new % device_processors; + + kernel_accel_new -= extra; + } + + // clamp if close to device processors -- 16% seems fine on a 2080ti, and on a 4090 + + if (kernel_accel_new > device_processors) + { + const u32 extra = kernel_accel_new % device_processors; + + if (extra < (device_processors * 0.16)) + { + kernel_accel_new -= extra; + } + } + } + } + + char *new_device_name = hcstrdup (device_param->device_name); + + for (size_t i = 0; i < strlen (new_device_name); i++) + { + if (new_device_name[i] == ' ') new_device_name[i] = '_'; + } + + lines_pos += snprintf (lines_buf + lines_pos, lines_sz - lines_pos, "%s * %u 1 %u A\n", new_device_name, user_options->hash_mode, kernel_accel_new); + + hcfree (new_device_name); + + return lines_buf; +} + +u64 scrypt_module_extra_buffer_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + // we need to set the self-test hash settings to pass the self-test + // the decoder for the self-test is called after this function + + const u32 scrypt_N = (hashes->salts_buf[0].scrypt_N == 0) ? hashes->st_salts_buf[0].scrypt_N : hashes->salts_buf[0].scrypt_N; + const u32 scrypt_r = (hashes->salts_buf[0].scrypt_r == 0) ? hashes->st_salts_buf[0].scrypt_r : hashes->salts_buf[0].scrypt_r; + //const u32 scrypt_p = (hashes->salts_buf[0].scrypt_p == 0) ? hashes->st_salts_buf[0].scrypt_p : hashes->salts_buf[0].scrypt_p; + + const u64 size_per_accel = 128ULL * scrypt_r * scrypt_N * scrypt_exptected_threads (hashconfig, user_options, user_options_extra, device_param); + + const u64 size_per_accel_tmto = size_per_accel >> tmto; + + const u64 size_scrypt = device_param->kernel_accel_max * size_per_accel_tmto; + + return size_scrypt; +} + +u64 scrypt_module_tmp_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) +{ + const u64 tmp_size = 0; // we'll add some later + + return tmp_size; +} + +u64 scrypt_module_extra_tmp_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes) +{ + const u32 scrypt_N = (hashes->salts_buf[0].scrypt_N == 0) ? hashes->st_salts_buf[0].scrypt_N : hashes->salts_buf[0].scrypt_N; + const u32 scrypt_r = (hashes->salts_buf[0].scrypt_r == 0) ? hashes->st_salts_buf[0].scrypt_r : hashes->salts_buf[0].scrypt_r; + const u32 scrypt_p = (hashes->salts_buf[0].scrypt_p == 0) ? hashes->st_salts_buf[0].scrypt_p : hashes->salts_buf[0].scrypt_p; + + // in general, since we compile the kernel based on N, r, p, so the JIT can optimize it, we can't have other configuration settings + // we need to check that all hashes have the same scrypt settings + + for (u32 i = 1; i < hashes->salts_cnt; i++) + { + if ((scrypt_N != hashes->salts_buf[i].scrypt_N) + || (scrypt_r != hashes->salts_buf[i].scrypt_r) + || (scrypt_p != hashes->salts_buf[i].scrypt_p)) + { + return (1ULL << 63) + i; + } + } + + // now that we know they all have the same settings, we also need to check the self-test hash is different to what the user hash is using + + if ((hashconfig->opts_type & OPTS_TYPE_SELF_TEST_DISABLE) == 0) + { + if ((scrypt_N != hashes->st_salts_buf[0].scrypt_N) + || (scrypt_r != hashes->st_salts_buf[0].scrypt_r) + || (scrypt_p != hashes->st_salts_buf[0].scrypt_p)) + { + return (1ULL << 62); + } + } + + // this is what we call SCRYPT_SZ in kernel + + u64 tmp_size = 128ULL * scrypt_r * scrypt_p; + + // we need twice the size of SCRYPT_SZ so we can have two elements of that size. + // we can safely process blockmix on the second element without modifying the first element. + // this can be useful when using hooks in combination with P > 1 + + tmp_size *= 2; + + return tmp_size; +} + +char *scrypt_module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + const u32 scrypt_N = (hashes->salts_buf[0].scrypt_N == 0) ? hashes->st_salts_buf[0].scrypt_N : hashes->salts_buf[0].scrypt_N; + const u32 scrypt_r = (hashes->salts_buf[0].scrypt_r == 0) ? hashes->st_salts_buf[0].scrypt_r : hashes->salts_buf[0].scrypt_r; + const u32 scrypt_p = (hashes->salts_buf[0].scrypt_p == 0) ? hashes->st_salts_buf[0].scrypt_p : hashes->salts_buf[0].scrypt_p; + + u64 tmp_size = 128ULL * scrypt_r * scrypt_p; + + tmp_size *= 2; // see scrypt_module_extra_tmp_size for details + + char *jit_build_options = NULL; + + const u32 expected_threads = scrypt_exptected_threads (hashconfig, user_options, user_options_extra, device_param); + + hc_asprintf (&jit_build_options, "-D FIXED_LOCAL_SIZE=%u -D SCRYPT_N=%u -D SCRYPT_R=%u -D SCRYPT_P=%u -D SCRYPT_TMTO=%u -D SCRYPT_TMP_ELEM=%" PRIu64, + expected_threads, + scrypt_N, + scrypt_r, + scrypt_p, + tmto, + tmp_size / 4); + + return jit_build_options; +} + diff --git a/src/monitor.c b/src/monitor.c index ce02a7a90..571e7c8c3 100644 --- a/src/monitor.c +++ b/src/monitor.c @@ -42,6 +42,7 @@ int get_runtime_left (const hashcat_ctx_t *hashcat_ctx) static int monitor (hashcat_ctx_t *hashcat_ctx) { + bridge_ctx_t *bridge_ctx = hashcat_ctx->bridge_ctx; hashes_t *hashes = hashcat_ctx->hashes; hwmon_ctx_t *hwmon_ctx = hashcat_ctx->hwmon_ctx; backend_ctx_t *backend_ctx = hashcat_ctx->backend_ctx; @@ -87,7 +88,10 @@ static int monitor (hashcat_ctx_t *hashcat_ctx) if (hwmon_ctx->enabled == true) { - performance_check = true; // this check simply requires hwmon to work + if (bridge_ctx->enabled == false) + { + performance_check = true; // this check simply requires hwmon to work + } } if ((runtime_check == false) && (remove_check == false) && (status_check == false) && (restore_check == false) && (hwmon_check == false) && (performance_check == false)) diff --git a/src/potfile.c b/src/potfile.c index a912e1f50..afafca2f1 100644 --- a/src/potfile.c +++ b/src/potfile.c @@ -81,7 +81,10 @@ int sort_pot_orig_line (const void *v1, const void *v2) const pot_orig_line_entry_t *t1 = (const pot_orig_line_entry_t *) v1; const pot_orig_line_entry_t *t2 = (const pot_orig_line_entry_t *) v2; - return t1->line_pos > t2->line_pos; + if (t1->line_pos > t2->line_pos) return 1; + if (t1->line_pos < t2->line_pos) return -1; + + return 0; } // the problem with the GNU tdestroy () function is that it doesn't work with mingw etc diff --git a/src/rp.c b/src/rp.c index 67ebd9322..ace86877b 100644 --- a/src/rp.c +++ b/src/rp.c @@ -906,6 +906,7 @@ int kernel_rules_load (hashcat_ctx_t *hashcat_ctx, kernel_rule_t **out_buf, u32 } u32 invalid_cnt = 0; + u32 valid_cnt = 0; for (u32 i = 0; i < kernel_rules_cnt; i++) { @@ -924,18 +925,27 @@ int kernel_rules_load (hashcat_ctx_t *hashcat_ctx, kernel_rule_t **out_buf, u32 { if (out_pos == RULES_MAX - 1) { - event_log_warning (hashcat_ctx, "Maximum functions per rule exceeded during chaining of rules, skipping..."); - invalid_cnt++; break; } + else + { + valid_cnt++; + } out->cmds[out_pos] = in->cmds[in_pos]; } } } + if (invalid_cnt > 0) + { + event_log_warning (hashcat_ctx, "Maximum functions per rule exceeded during chaining of rules."); + event_log_warning (hashcat_ctx, "Skipped %u rule chains, %u valid chains remain.", invalid_cnt, valid_cnt); + event_log_warning (hashcat_ctx, NULL); + } + hcfree (repeats); kernel_rules_cnt -= invalid_cnt; diff --git a/src/selftest.c b/src/selftest.c index 313725e55..f1b2b2dd5 100644 --- a/src/selftest.c +++ b/src/selftest.c @@ -14,6 +14,7 @@ static int selftest (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param) { + bridge_ctx_t *bridge_ctx = hashcat_ctx->bridge_ctx; hashconfig_t *hashconfig = hashcat_ctx->hashconfig; hashes_t *hashes = hashcat_ctx->hashes; module_ctx_t *module_ctx = hashcat_ctx->module_ctx; @@ -515,20 +516,20 @@ static int selftest (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param { if (highest_pw_len < 16) { - if (run_kernel (hashcat_ctx, device_param, KERN_RUN_1, 0, 1, false, 0) == -1) return -1; + if (run_kernel (hashcat_ctx, device_param, KERN_RUN_1, 0, 1, false, 0, false) == -1) return -1; } else if (highest_pw_len < 32) { - if (run_kernel (hashcat_ctx, device_param, KERN_RUN_2, 0, 1, false, 0) == -1) return -1; + if (run_kernel (hashcat_ctx, device_param, KERN_RUN_2, 0, 1, false, 0, false) == -1) return -1; } else { - if (run_kernel (hashcat_ctx, device_param, KERN_RUN_3, 0, 1, false, 0) == -1) return -1; + if (run_kernel (hashcat_ctx, device_param, KERN_RUN_3, 0, 1, false, 0, false) == -1) return -1; } } else { - if (run_kernel (hashcat_ctx, device_param, KERN_RUN_4, 0, 1, false, 0) == -1) return -1; + if (run_kernel (hashcat_ctx, device_param, KERN_RUN_4, 0, 1, false, 0, false) == -1) return -1; } } else @@ -560,11 +561,14 @@ static int selftest (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param } } - if (run_kernel (hashcat_ctx, device_param, KERN_RUN_1, 0, 1, false, 0) == -1) return -1; + if (hashconfig->opts_type & OPTS_TYPE_INIT) + { + if (run_kernel (hashcat_ctx, device_param, KERN_RUN_1, 0, 1, false, 0, false) == -1) return -1; + } if (hashconfig->opts_type & OPTS_TYPE_HOOK12) { - if (run_kernel (hashcat_ctx, device_param, KERN_RUN_12, 0, 1, false, 0) == -1) return -1; + if (run_kernel (hashcat_ctx, device_param, KERN_RUN_12, 0, 1, false, 0, false) == -1) return -1; if (device_param->is_cuda == true) { @@ -632,7 +636,7 @@ static int selftest (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param if (hashconfig->opts_type & OPTS_TYPE_LOOP_PREPARE) { - if (run_kernel (hashcat_ctx, device_param, KERN_RUN_2P, 0, 1, false, 0) == -1) return -1; + if (run_kernel (hashcat_ctx, device_param, KERN_RUN_2P, 0, 1, false, 0, false) == -1) return -1; } const u32 iter = salt_buf->salt_iter; @@ -646,17 +650,96 @@ static int selftest (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param device_param->kernel_param.loop_pos = loop_pos; device_param->kernel_param.loop_cnt = loop_left; - if (run_kernel (hashcat_ctx, device_param, KERN_RUN_2, 0, 1, false, 0) == -1) return -1; + if (hashconfig->opts_type & OPTS_TYPE_LOOP) + { + if (run_kernel (hashcat_ctx, device_param, KERN_RUN_2, 0, 1, false, 0, false) == -1) return -1; + } if (hashconfig->opts_type & OPTS_TYPE_LOOP_EXTENDED) { - if (run_kernel (hashcat_ctx, device_param, KERN_RUN_2E, 0, 1, false, 0) == -1) return -1; + if (run_kernel (hashcat_ctx, device_param, KERN_RUN_2E, 0, 1, false, 0, false) == -1) return -1; + } + + if (hashconfig->bridge_type & BRIDGE_TYPE_LAUNCH_LOOP) + { + #define COPY_TMPS 1 + + if (COPY_TMPS) + { + if (device_param->is_cuda == true) + { + if (hc_cuMemcpyDtoHAsync (hashcat_ctx, device_param->h_tmps, device_param->cuda_d_tmps, hashconfig->tmp_size, device_param->cuda_stream) == -1) return -1; + + if (hc_cuStreamSynchronize (hashcat_ctx, device_param->cuda_stream) == -1) return -1; + } + + if (device_param->is_hip == true) + { + if (hc_hipMemcpyDtoHAsync (hashcat_ctx, device_param->h_tmps, device_param->hip_d_tmps, hashconfig->tmp_size, device_param->hip_stream) == -1) return -1; + + if (hc_hipStreamSynchronize (hashcat_ctx, device_param->hip_stream) == -1) return -1; + } + + #if defined (__APPLE__) + if (device_param->is_metal == true) + { + if (hc_mtlMemcpyDtoH (hashcat_ctx, device_param->metal_command_queue, device_param->h_tmps, device_param->metal_d_tmps, 0, hashconfig->tmp_size) == -1) return -1; + } + #endif + + if (device_param->is_opencl == true) + { + /* blocking */ + if (hc_clEnqueueReadBuffer (hashcat_ctx, device_param->opencl_command_queue, device_param->opencl_d_tmps, CL_TRUE, 0, hashconfig->tmp_size, device_param->h_tmps, 0, NULL, NULL) == -1) return -1; + } + } + + hashes_t st_hashes; + + memcpy (&st_hashes, hashes, sizeof (hashes_t)); + + st_hashes.digests_buf = st_hashes.st_digests_buf; + st_hashes.salts_buf = st_hashes.st_salts_buf; + st_hashes.esalts_buf = st_hashes.st_esalts_buf; + st_hashes.hook_salts_buf = st_hashes.st_hook_salts_buf; + + if (bridge_ctx->launch_loop (bridge_ctx->platform_context, device_param, hashconfig, &st_hashes, 0, 1) == false) return -1; + + if (COPY_TMPS) + { + if (device_param->is_cuda == true) + { + if (hc_cuMemcpyHtoDAsync (hashcat_ctx, device_param->cuda_d_tmps, device_param->h_tmps, hashconfig->tmp_size, device_param->cuda_stream) == -1) return -1; + + if (hc_cuStreamSynchronize (hashcat_ctx, device_param->cuda_stream) == -1) return -1; + } + + if (device_param->is_hip == true) + { + if (hc_hipMemcpyHtoDAsync (hashcat_ctx, device_param->hip_d_tmps, device_param->h_tmps, hashconfig->tmp_size, device_param->hip_stream) == -1) return -1; + + if (hc_hipStreamSynchronize (hashcat_ctx, device_param->hip_stream) == -1) return -1; + } + + #if defined (__APPLE__) + if (device_param->is_metal == true) + { + if (hc_mtlMemcpyHtoD (hashcat_ctx, device_param->metal_command_queue, device_param->metal_d_tmps, 0, device_param->h_tmps, hashconfig->tmp_size) == -1) return -1; + } + #endif + + if (device_param->is_opencl == true) + { + /* blocking */ + if (hc_clEnqueueWriteBuffer (hashcat_ctx, device_param->opencl_command_queue, device_param->opencl_d_tmps, CL_TRUE, 0, hashconfig->tmp_size, device_param->h_tmps, 0, NULL, NULL) == -1) return -1; + } + } } } if (hashconfig->opts_type & OPTS_TYPE_HOOK23) { - if (run_kernel (hashcat_ctx, device_param, KERN_RUN_23, 0, 1, false, 0) == -1) return -1; + if (run_kernel (hashcat_ctx, device_param, KERN_RUN_23, 0, 1, false, 0, false) == -1) return -1; if (device_param->is_cuda == true) { @@ -713,7 +796,7 @@ static int selftest (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param if (hashconfig->opts_type & OPTS_TYPE_INIT2) { - if (run_kernel (hashcat_ctx, device_param, KERN_RUN_INIT2, 0, 1, false, 0) == -1) return -1; + if (run_kernel (hashcat_ctx, device_param, KERN_RUN_INIT2, 0, 1, false, 0, false) == -1) return -1; } for (u32 salt_repeat = 0; salt_repeat <= salt_repeats; salt_repeat++) @@ -722,7 +805,7 @@ static int selftest (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param if (hashconfig->opts_type & OPTS_TYPE_LOOP2_PREPARE) { - if (run_kernel (hashcat_ctx, device_param, KERN_RUN_LOOP2P, 0, 1, false, 0) == -1) return -1; + if (run_kernel (hashcat_ctx, device_param, KERN_RUN_LOOP2P, 0, 1, false, 0, false) == -1) return -1; } if (hashconfig->opts_type & OPTS_TYPE_LOOP2) @@ -738,7 +821,78 @@ static int selftest (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param device_param->kernel_param.loop_pos = loop_pos; device_param->kernel_param.loop_cnt = loop_left; - if (run_kernel (hashcat_ctx, device_param, KERN_RUN_LOOP2, 0, 1, false, 0) == -1) return -1; + if (run_kernel (hashcat_ctx, device_param, KERN_RUN_LOOP2, 0, 1, false, 0, false) == -1) return -1; + + if (hashconfig->bridge_type & BRIDGE_TYPE_LAUNCH_LOOP2) + { + #define COPY_TMPS 1 + + if (COPY_TMPS) + { + if (device_param->is_cuda == true) + { + if (hc_cuMemcpyDtoHAsync (hashcat_ctx, device_param->h_tmps, device_param->cuda_d_tmps, hashconfig->tmp_size, device_param->cuda_stream) == -1) return -1; + + if (hc_cuStreamSynchronize (hashcat_ctx, device_param->cuda_stream) == -1) return -1; + } + + if (device_param->is_hip == true) + { + if (hc_hipMemcpyDtoHAsync (hashcat_ctx, device_param->h_tmps, device_param->hip_d_tmps, hashconfig->tmp_size, device_param->hip_stream) == -1) return -1; + + if (hc_hipStreamSynchronize (hashcat_ctx, device_param->hip_stream) == -1) return -1; + } + + #if defined (__APPLE__) + if (device_param->is_metal == true) + { + if (hc_mtlMemcpyDtoH (hashcat_ctx, device_param->metal_command_queue, device_param->h_tmps, device_param->metal_d_tmps, 0, hashconfig->tmp_size) == -1) return -1; + } + #endif + + if (device_param->is_opencl == true) + { + /* blocking */ + if (hc_clEnqueueReadBuffer (hashcat_ctx, device_param->opencl_command_queue, device_param->opencl_d_tmps, CL_TRUE, 0, hashconfig->tmp_size, device_param->h_tmps, 0, NULL, NULL) == -1) return -1; + } + } + + hashes_t st_hashes; + + memcpy (&st_hashes, hashes, sizeof (hashes_t)); + + st_hashes.digests_buf = st_hashes.st_digests_buf; + st_hashes.salts_buf = st_hashes.st_salts_buf; + st_hashes.esalts_buf = st_hashes.st_esalts_buf; + st_hashes.hook_salts_buf = st_hashes.st_hook_salts_buf; + + if (bridge_ctx->launch_loop2 (bridge_ctx->platform_context, device_param, hashconfig, &st_hashes, 0, 1) == false) return -1; + + if (COPY_TMPS) + { + if (device_param->is_cuda == true) + { + if (hc_cuMemcpyHtoDAsync (hashcat_ctx, device_param->cuda_d_tmps, device_param->h_tmps, hashconfig->tmp_size, device_param->cuda_stream) == -1) return -1; + } + + if (device_param->is_hip == true) + { + if (hc_hipMemcpyHtoDAsync (hashcat_ctx, device_param->hip_d_tmps, device_param->h_tmps, hashconfig->tmp_size, device_param->hip_stream) == -1) return -1; + } + + #if defined (__APPLE__) + if (device_param->is_metal == true) + { + if (hc_mtlMemcpyHtoD (hashcat_ctx, device_param->metal_command_queue, device_param->metal_d_tmps, 0, device_param->h_tmps, hashconfig->tmp_size) == -1) return -1; + } + #endif + + if (device_param->is_opencl == true) + { + if (hc_clEnqueueWriteBuffer (hashcat_ctx, device_param->opencl_command_queue, device_param->opencl_d_tmps, CL_TRUE, 0, hashconfig->tmp_size, device_param->h_tmps, 0, NULL, NULL) == -1) return -1; + } + } + } } } } @@ -750,26 +904,29 @@ static int selftest (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param if (hashconfig->opts_type & OPTS_TYPE_AUX1) { - if (run_kernel (hashcat_ctx, device_param, KERN_RUN_AUX1, 0, 1, false, 0) == -1) return -1; + if (run_kernel (hashcat_ctx, device_param, KERN_RUN_AUX1, 0, 1, false, 0, false) == -1) return -1; } if (hashconfig->opts_type & OPTS_TYPE_AUX2) { - if (run_kernel (hashcat_ctx, device_param, KERN_RUN_AUX2, 0, 1, false, 0) == -1) return -1; + if (run_kernel (hashcat_ctx, device_param, KERN_RUN_AUX2, 0, 1, false, 0, false) == -1) return -1; } if (hashconfig->opts_type & OPTS_TYPE_AUX3) { - if (run_kernel (hashcat_ctx, device_param, KERN_RUN_AUX3, 0, 1, false, 0) == -1) return -1; + if (run_kernel (hashcat_ctx, device_param, KERN_RUN_AUX3, 0, 1, false, 0, false) == -1) return -1; } if (hashconfig->opts_type & OPTS_TYPE_AUX4) { - if (run_kernel (hashcat_ctx, device_param, KERN_RUN_AUX4, 0, 1, false, 0) == -1) return -1; + if (run_kernel (hashcat_ctx, device_param, KERN_RUN_AUX4, 0, 1, false, 0, false) == -1) return -1; } } - if (run_kernel (hashcat_ctx, device_param, KERN_RUN_3, 0, 1, false, 0) == -1) return -1; + if (hashconfig->opts_type & OPTS_TYPE_COMP) + { + if (run_kernel (hashcat_ctx, device_param, KERN_RUN_3, 0, 1, false, 0, false) == -1) return -1; + } } device_param->spin_damp = spin_damp_sav; @@ -1041,8 +1198,10 @@ HC_API_CALL void *thread_selftest (void *p) thread_param_t *thread_param = (thread_param_t *) p; hashcat_ctx_t *hashcat_ctx = thread_param->hashcat_ctx; - backend_ctx_t *backend_ctx = hashcat_ctx->backend_ctx; + bridge_ctx_t *bridge_ctx = hashcat_ctx->bridge_ctx; + hashconfig_t *hashconfig = hashcat_ctx->hashconfig; + hashes_t *hashes = hashcat_ctx->hashes; if (backend_ctx->enabled == false) return NULL; @@ -1055,6 +1214,14 @@ HC_API_CALL void *thread_selftest (void *p) if (device_param->skipped == true) return NULL; if (device_param->skipped_warning == true) return NULL; + if (bridge_ctx->enabled == true) + { + if (bridge_ctx->thread_init != BRIDGE_DEFAULT) + { + if (bridge_ctx->thread_init (bridge_ctx->platform_context, device_param, hashconfig, hashes) == false) return NULL; + } + } + if (device_param->is_cuda == true) { if (hc_cuCtxPushCurrent (hashcat_ctx, device_param->cuda_context) == -1) return NULL; @@ -1097,6 +1264,14 @@ HC_API_CALL void *thread_selftest (void *p) if (hc_hipCtxPopCurrent (hashcat_ctx, &device_param->hip_context) == -1) return NULL; } + if (bridge_ctx->enabled == true) + { + if (bridge_ctx->thread_term != BRIDGE_DEFAULT) + { + bridge_ctx->thread_term (bridge_ctx->platform_context, device_param, hashconfig, hashes); + } + } + if (device_param->is_opencl == true) { if (hc_clFinish (hashcat_ctx, device_param->opencl_command_queue) == -1) return NULL; diff --git a/src/shared.c b/src/shared.c index 5b2375009..25bbf5005 100644 --- a/src/shared.c +++ b/src/shared.c @@ -17,12 +17,20 @@ #if defined (__APPLE__) #include +#include #endif #if defined (_WIN) #include #endif +#if defined (_POSIX) +#include +#if !defined (__APPLE__) +#include +#endif +#endif + static const char *const PA_000 = "OK"; static const char *const PA_001 = "Ignored due to comment"; static const char *const PA_002 = "Ignored due to zero length"; @@ -67,6 +75,10 @@ static const char *const PA_040 = "Invalid or unsupported cipher"; static const char *const PA_041 = "Invalid filesize"; static const char *const PA_042 = "IV length exception"; static const char *const PA_043 = "CT length exception"; +static const char *const PA_044 = "PT length exception"; +static const char *const PA_045 = "PT offset exception"; +static const char *const PA_046 = "Invalid or unsupported CryptoAPI hash type"; +static const char *const PA_047 = "Invalid CryptoAPI key size"; static const char *const PA_255 = "Unknown error"; static const char *const OPTI_STR_OPTIMIZED_KERNEL = "Optimized-Kernel"; @@ -545,7 +557,7 @@ bool hc_string_is_digit (const char *s) return true; } -void setup_environment_variables (const folder_config_t *folder_config) +void setup_environment_variables (const folder_config_t *folder_config, const user_options_t *user_options) { char *compute = getenv ("COMPUTE"); @@ -587,6 +599,14 @@ void setup_environment_variables (const folder_config_t *folder_config) // we can't free tmpdir at this point! } + // creates too much cpu load + if (getenv ("AMD_DIRECT_DISPATCH") == NULL) + putenv ((char *) "AMD_DIRECT_DISPATCH=0"); + + if (user_options->hash_mode == 72000) // ugly but rare hack, we might move this to modules at a later stage + if (getenv ("PYTHON_GIL") == NULL) + putenv ((char *) "PYTHON_GIL=0"); + /* if (getenv ("CL_CONFIG_USE_VECTORIZER") == NULL) putenv ((char *) "CL_CONFIG_USE_VECTORIZER=False"); @@ -1104,6 +1124,10 @@ const char *strparser (const u32 parser_status) case PARSER_FILE_SIZE: return PA_041; case PARSER_IV_LENGTH: return PA_042; case PARSER_CT_LENGTH: return PA_043; + case PARSER_PT_LENGTH: return PA_044; + case PARSER_PT_OFFSET: return PA_045; + case PARSER_CRYPTOAPI_KERNELTYPE: return PA_046; + case PARSER_CRYPTOAPI_KEYSIZE: return PA_047; } return PA_255; @@ -1439,6 +1463,38 @@ int generic_salt_encode (MAYBE_UNUSED const hashconfig_t *hashconfig, const u8 * return tmp_len; } +int get_current_arch () +{ + #if defined (_WIN) + + SYSTEM_INFO sysinfo; + + GetNativeSystemInfo (&sysinfo); + + switch (sysinfo.wProcessorArchitecture) + { + case PROCESSOR_ARCHITECTURE_AMD64: return 1; + case PROCESSOR_ARCHITECTURE_INTEL: return 2; + case PROCESSOR_ARCHITECTURE_ARM64: return 3; + case PROCESSOR_ARCHITECTURE_ARM: return 4; + default: return 0; + } + + #else + + struct utsname uts; + + if (uname(&uts) != 0) return 0; // same as default, it doesn't matter if it fails here + + if (strstr(uts.machine, "x86_64")) return 1; + else if (strstr(uts.machine, "i386") || strstr(uts.machine, "i686")) return 2; + else if (strstr(uts.machine, "aarch64") || strstr(uts.machine, "arm64")) return 3; + else if (strstr(uts.machine, "arm")) return 4; + else return 0; + + #endif +} + #if defined (__APPLE__) bool is_apple_silicon (void) @@ -1500,3 +1556,157 @@ int extract_dynamicx_hash (const u8 *input_buf, const int input_len, u8 **output return hash_mode; } + +bool check_file_suffix (const char *file, const char *suffix) +{ + if (file == NULL) return false; + if (suffix == NULL) return false; + + const size_t len_file = strlen (file); + const size_t len_suffix = strlen (suffix); + + if (len_suffix > len_file) return false; + + return strcmp (file + len_file - len_suffix, suffix) == 0; +} + +bool remove_file_suffix (char *file, const char *suffix) +{ + if (file == NULL) return false; + if (suffix == NULL) return false; + + if (check_file_suffix (file, suffix) == false) return false; + + const size_t len_file = strlen (file); + const size_t len_suffix = strlen (suffix); + + file[len_file - len_suffix] = 0; + + return true; +} + +#if defined (_WIN) +#define DEVNULL "NUL" +#else +#define DEVNULL "/dev/null" +#endif + +int suppress_stderr (void) +{ + int null_fd = open (DEVNULL, O_WRONLY); + + if (null_fd < 0) return -1; + + int saved_fd = dup (fileno (stderr)); + + if (saved_fd < 0) + { + close (null_fd); + + return -1; + } + + dup2 (null_fd, fileno (stderr)); + + close (null_fd); + + return saved_fd; +} + +void restore_stderr (int saved_fd) +{ + if (saved_fd < 0) return; + + dup2 (saved_fd, fileno (stderr)); + + close (saved_fd); +} + +bool get_free_memory (u64 *free_mem) +{ + #if defined (_WIN) + + MEMORYSTATUSEX memStatus; + + memStatus.dwLength = sizeof (memStatus); + + if (GlobalMemoryStatusEx (&memStatus)) + { + *free_mem = (u64) memStatus.ullAvailPhys; + + return true; + } + else + { + return false; + } + + #elif defined (__APPLE__) + + mach_port_t host_port = mach_host_self (); + + mach_msg_type_number_t count = HOST_VM_INFO_COUNT; + + vm_statistics_data_t vm_stat; + + if (host_statistics (host_port, HOST_VM_INFO, (host_info_t) &vm_stat, &count) != KERN_SUCCESS) + { + return false; + } + + int64_t page_size; + + host_page_size (host_port, (vm_size_t*) &page_size); + + *free_mem = (u64) (vm_stat.free_count + vm_stat.inactive_count) * page_size; + + return true; + + #else + + struct sysinfo info; + + if (sysinfo (&info) != 0) return false; + + *free_mem = (u64) info.freeram * info.mem_unit; + + return true; + + #endif +} + +u32 previous_power_of_two (const u32 x) +{ + // https://stackoverflow.com/questions/2679815/previous-power-of-2 + // really cool! + + if (x == 0) return 0; + + u32 r = x; + + r |= (r >> 1); + r |= (r >> 2); + r |= (r >> 4); + r |= (r >> 8); + r |= (r >> 16); + + return r - (r >> 1); +} + +u32 next_power_of_two (const u32 x) +{ + if (x == 0) return 1; + + u32 r = x - 1; + + r |= (r >> 1); + r |= (r >> 2); + r |= (r >> 4); + r |= (r >> 8); + r |= (r >> 16); + + r++; + + return r; +} + diff --git a/src/terminal.c b/src/terminal.c index 211a8b24f..948b4795d 100644 --- a/src/terminal.c +++ b/src/terminal.c @@ -56,6 +56,15 @@ void welcome_screen (hashcat_ctx_t *hashcat_ctx, const char *version_tag) event_log_advice (hashcat_ctx, "To disable the optimized kernel code in benchmark mode, use the -w option."); event_log_advice (hashcat_ctx, NULL); } + + if (user_options->benchmark_min != BENCHMARK_MIN || user_options->benchmark_max != BENCHMARK_MAX) + { + if (user_options->hash_mode_chgd == true) + { + event_log_advice (hashcat_ctx, "Benchmark min/max is ignored because --hash-type is set."); + event_log_advice (hashcat_ctx, NULL); + } + } } else { @@ -92,6 +101,11 @@ void welcome_screen (hashcat_ctx_t *hashcat_ctx, const char *version_tag) event_log_info (hashcat_ctx, "%s (%s) starting in hash-info mode", PROGNAME, version_tag); event_log_info (hashcat_ctx, NULL); } + else if (user_options->session_chgd == true) + { + event_log_info (hashcat_ctx, "%s (%s) starting - session [%s]", PROGNAME, version_tag, user_options->session); + event_log_info (hashcat_ctx, NULL); + } else { event_log_info (hashcat_ctx, "%s (%s) starting", PROGNAME, version_tag); @@ -1170,11 +1184,11 @@ void backend_info (hashcat_ctx_t *hashcat_ctx) if (device_param->device_id_alias_cnt) { - event_log_info (hashcat_ctx, "Backend Device ID #%u (Alias: #%u)", device_id + 1, device_param->device_id_alias_buf[0] + 1); + event_log_info (hashcat_ctx, "Backend Device ID #%02u (Alias: #%02u)", device_id + 1, device_param->device_id_alias_buf[0] + 1); } else { - event_log_info (hashcat_ctx, "Backend Device ID #%u", device_id + 1); + event_log_info (hashcat_ctx, "Backend Device ID #%02u", device_id + 1); } event_log_info (hashcat_ctx, " Name...........: %s", device_name); @@ -1232,11 +1246,11 @@ void backend_info (hashcat_ctx_t *hashcat_ctx) if (device_param->device_id_alias_cnt) { - event_log_info (hashcat_ctx, "Backend Device ID #%u (Alias: #%u)", device_id + 1, device_param->device_id_alias_buf[0] + 1); + event_log_info (hashcat_ctx, "Backend Device ID #%02u (Alias: #%02u)", device_id + 1, device_param->device_id_alias_buf[0] + 1); } else { - event_log_info (hashcat_ctx, "Backend Device ID #%u", device_id + 1); + event_log_info (hashcat_ctx, "Backend Device ID #%02u", device_id + 1); } event_log_info (hashcat_ctx, " Name...........: %s", device_name); @@ -1296,11 +1310,11 @@ void backend_info (hashcat_ctx_t *hashcat_ctx) if (device_param->device_id_alias_cnt) { - event_log_info (hashcat_ctx, "Backend Device ID #%u (Alias: #%u)", device_id + 1, device_param->device_id_alias_buf[0] + 1); + event_log_info (hashcat_ctx, "Backend Device ID #%02u (Alias: #%02u)", device_id + 1, device_param->device_id_alias_buf[0] + 1); } else { - event_log_info (hashcat_ctx, "Backend Device ID #%u", device_id + 1); + event_log_info (hashcat_ctx, "Backend Device ID #%02u", device_id + 1); } event_log_info (hashcat_ctx, " Type...........: %s", ((opencl_device_type & CL_DEVICE_TYPE_CPU) ? "CPU" : ((opencl_device_type & CL_DEVICE_TYPE_GPU) ? "GPU" : "Accelerator"))); @@ -1398,11 +1412,11 @@ void backend_info (hashcat_ctx_t *hashcat_ctx) if (device_param->device_id_alias_cnt) { - event_log_info (hashcat_ctx, " Backend Device ID #%u (Alias: #%u)", device_id + 1, device_param->device_id_alias_buf[0] + 1); + event_log_info (hashcat_ctx, " Backend Device ID #%02u (Alias: #%02u)", device_id + 1, device_param->device_id_alias_buf[0] + 1); } else { - event_log_info (hashcat_ctx, " Backend Device ID #%u", device_id + 1); + event_log_info (hashcat_ctx, " Backend Device ID #%02u", device_id + 1); } event_log_info (hashcat_ctx, " Type...........: %s", ((opencl_device_type & CL_DEVICE_TYPE_CPU) ? "CPU" : ((opencl_device_type & CL_DEVICE_TYPE_GPU) ? "GPU" : "Accelerator"))); @@ -1443,6 +1457,7 @@ void backend_info (hashcat_ctx_t *hashcat_ctx) void backend_info_compact (hashcat_ctx_t *hashcat_ctx) { + const bridge_ctx_t *bridge_ctx = hashcat_ctx->bridge_ctx; const backend_ctx_t *backend_ctx = hashcat_ctx->backend_ctx; const user_options_t *user_options = hashcat_ctx->user_options; @@ -1450,6 +1465,53 @@ void backend_info_compact (hashcat_ctx_t *hashcat_ctx) if (user_options->machine_readable == true) return; if (user_options->status_json == true) return; + /** + * Bridges + */ + + if (bridge_ctx->enabled == true) + { + const int unit_count = bridge_ctx->get_unit_count (bridge_ctx->platform_context); + + const size_t len = event_log_info (hashcat_ctx, "Assimilation Bridge"); + + char line[HCBUFSIZ_TINY] = { 0 }; + + memset (line, '=', len); + + line[len] = 0; + + event_log_info (hashcat_ctx, "%s", line); + + bool all_same = true; + + char *tmp = bridge_ctx->get_unit_info (bridge_ctx->platform_context, 0); + + for (int i = 1; i < unit_count; i++) + { + if (strcmp (tmp, bridge_ctx->get_unit_info (bridge_ctx->platform_context, i))) + { + all_same = false; + + break; + } + } + + if (all_same == true) + { + event_log_info (hashcat_ctx, "* Unit #%02d -> #%02d: %s", 1, unit_count, tmp); + } + else + { + for (int i = 0; i < unit_count; i++) + { + event_log_info (hashcat_ctx, "* Unit #%02d: %s", i + 1, bridge_ctx->get_unit_info (bridge_ctx->platform_context, i)); + } + } + + event_log_info (hashcat_ctx, NULL); + } + /** * CUDA */ @@ -1459,46 +1521,83 @@ void backend_info_compact (hashcat_ctx_t *hashcat_ctx) int cuda_devices_cnt = backend_ctx->cuda_devices_cnt; int cuda_driver_version = backend_ctx->cuda_driver_version; - const size_t len = event_log_info (hashcat_ctx, "CUDA API (CUDA %u.%u)", cuda_driver_version / 1000, (cuda_driver_version % 100) / 10); - - char line[HCBUFSIZ_TINY] = { 0 }; - - memset (line, '=', len); - - line[len] = 0; - - event_log_info (hashcat_ctx, "%s", line); - - for (int cuda_devices_idx = 0; cuda_devices_idx < cuda_devices_cnt; cuda_devices_idx++) + // hide empty CUDA platforms + if (cuda_devices_cnt) { - const int backend_devices_idx = backend_ctx->backend_device_from_cuda[cuda_devices_idx]; + const size_t len = event_log_info (hashcat_ctx, "CUDA API (CUDA %u.%u)", cuda_driver_version / 1000, (cuda_driver_version % 100) / 10); - const hc_device_param_t *device_param = backend_ctx->devices_param + backend_devices_idx; + char line[HCBUFSIZ_TINY] = { 0 }; - int device_id = device_param->device_id; - char *device_name = device_param->device_name; - u32 device_processors = device_param->device_processors; - u64 device_global_mem = device_param->device_global_mem; - u64 device_available_mem = device_param->device_available_mem; + memset (line, '=', len); - if ((device_param->skipped == false) && (device_param->skipped_warning == false)) + line[len] = 0; + + event_log_info (hashcat_ctx, "%s", line); + + if (bridge_ctx->enabled == true) { - event_log_info (hashcat_ctx, "* Device #%u: %s, %" PRIu64 "/%" PRIu64 " MB, %uMCU", - device_id + 1, - device_name, - device_available_mem / 1024 / 1024, - device_global_mem / 1024 / 1024, - device_processors); + const int unit_count = bridge_ctx->get_unit_count (bridge_ctx->platform_context); + + const int backend_devices_idx = backend_ctx->backend_device_from_cuda[0]; + + const hc_device_param_t *device_param = backend_ctx->devices_param + backend_devices_idx; + + int device_id = device_param->device_id; + char *device_name = device_param->device_name; + u32 device_processors = device_param->device_processors; + u64 device_global_mem = device_param->device_global_mem; + u64 device_available_mem = device_param->device_available_mem; + + if ((device_param->skipped == false) && (device_param->skipped_warning == false)) + { + event_log_info (hashcat_ctx, "* Device #%02u -> #%02u: %s, %" PRIu64 "/%" PRIu64 " MB, %uMCU", + device_id + 1, unit_count, + device_name, + device_available_mem / 1024 / 1024, + device_global_mem / 1024 / 1024, + device_processors); + } + else + { + event_log_info (hashcat_ctx, "* Device #%02u -> #%02u: %s, skipped", + device_id + 1, unit_count, + device_name); + } } else { - event_log_info (hashcat_ctx, "* Device #%u: %s, skipped", - device_id + 1, - device_name); - } - } + for (int cuda_devices_idx = 0; cuda_devices_idx < cuda_devices_cnt; cuda_devices_idx++) + { + const int backend_devices_idx = backend_ctx->backend_device_from_cuda[cuda_devices_idx]; - event_log_info (hashcat_ctx, NULL); + const hc_device_param_t *device_param = backend_ctx->devices_param + backend_devices_idx; + + int device_id = device_param->device_id; + char *device_name = device_param->device_name; + u32 device_processors = device_param->device_processors; + u64 device_global_mem = device_param->device_global_mem; + u64 device_available_mem = device_param->device_available_mem; + + if ((device_param->skipped == false) && (device_param->skipped_warning == false)) + { + event_log_info (hashcat_ctx, "* Device #%02u: %s, %" PRIu64 "/%" PRIu64 " MB, %uMCU", + device_id + 1, + device_name, + device_available_mem / 1024 / 1024, + device_global_mem / 1024 / 1024, + device_processors); + } + else + { + event_log_info (hashcat_ctx, "* Device #%02u: %s, skipped", + device_id + 1, + device_name); + } + } + } + + event_log_info (hashcat_ctx, NULL); + } } /** @@ -1510,59 +1609,96 @@ void backend_info_compact (hashcat_ctx_t *hashcat_ctx) int hip_devices_cnt = backend_ctx->hip_devices_cnt; int hip_runtimeVersion = backend_ctx->hip_runtimeVersion; - size_t len; - - if (hip_runtimeVersion > 1000) + // hide empty HIP platforms + if (hip_devices_cnt) { - int hip_version_major = (hip_runtimeVersion - 0) / 10000000; - int hip_version_minor = (hip_runtimeVersion - (hip_version_major * 10000000)) / 100000; - int hip_version_patch = (hip_runtimeVersion - (hip_version_major * 10000000) - (hip_version_minor * 100000)); + size_t len; - len = event_log_info (hashcat_ctx, "HIP API (HIP %u.%u.%u)", hip_version_major, hip_version_minor, hip_version_patch); - } - else - { - len = event_log_info (hashcat_ctx, "HIP API (HIP %u.%u)", hip_runtimeVersion / 100, hip_runtimeVersion % 10); - } - - char line[HCBUFSIZ_TINY] = { 0 }; - - memset (line, '=', len); - - line[len] = 0; - - event_log_info (hashcat_ctx, "%s", line); - - for (int hip_devices_idx = 0; hip_devices_idx < hip_devices_cnt; hip_devices_idx++) - { - const int backend_devices_idx = backend_ctx->backend_device_from_hip[hip_devices_idx]; - - const hc_device_param_t *device_param = backend_ctx->devices_param + backend_devices_idx; - - int device_id = device_param->device_id; - char *device_name = device_param->device_name; - u32 device_processors = device_param->device_processors; - u64 device_global_mem = device_param->device_global_mem; - u64 device_available_mem = device_param->device_available_mem; - - if ((device_param->skipped == false) && (device_param->skipped_warning == false)) + if (hip_runtimeVersion > 1000) { - event_log_info (hashcat_ctx, "* Device #%u: %s, %" PRIu64 "/%" PRIu64 " MB, %uMCU", - device_id + 1, - device_name, - device_available_mem / 1024 / 1024, - device_global_mem / 1024 / 1024, - device_processors); + int hip_version_major = (hip_runtimeVersion - 0) / 10000000; + int hip_version_minor = (hip_runtimeVersion - (hip_version_major * 10000000)) / 100000; + int hip_version_patch = (hip_runtimeVersion - (hip_version_major * 10000000) - (hip_version_minor * 100000)); + + len = event_log_info (hashcat_ctx, "HIP API (HIP %u.%u.%u)", hip_version_major, hip_version_minor, hip_version_patch); } else { - event_log_info (hashcat_ctx, "* Device #%u: %s, skipped", - device_id + 1, - device_name); + len = event_log_info (hashcat_ctx, "HIP API (HIP %u.%u)", hip_runtimeVersion / 100, hip_runtimeVersion % 10); } - } - event_log_info (hashcat_ctx, NULL); + char line[HCBUFSIZ_TINY] = { 0 }; + + memset (line, '=', len); + + line[len] = 0; + + event_log_info (hashcat_ctx, "%s", line); + + if (bridge_ctx->enabled == true) + { + const int unit_count = bridge_ctx->get_unit_count (bridge_ctx->platform_context); + + const int backend_devices_idx = backend_ctx->backend_device_from_hip[0]; + + const hc_device_param_t *device_param = backend_ctx->devices_param + backend_devices_idx; + + int device_id = device_param->device_id; + char *device_name = device_param->device_name; + u32 device_processors = device_param->device_processors; + u64 device_global_mem = device_param->device_global_mem; + u64 device_available_mem = device_param->device_available_mem; + + if ((device_param->skipped == false) && (device_param->skipped_warning == false)) + { + event_log_info (hashcat_ctx, "* Device #%02u -> #%02u: %s, %" PRIu64 "/%" PRIu64 " MB, %uMCU", + device_id + 1, unit_count, + device_name, + device_available_mem / 1024 / 1024, + device_global_mem / 1024 / 1024, + device_processors); + } + else + { + event_log_info (hashcat_ctx, "* Device #%02u -> #%02u: %s, skipped", + device_id + 1, unit_count, + device_name); + } + } + else + { + for (int hip_devices_idx = 0; hip_devices_idx < hip_devices_cnt; hip_devices_idx++) + { + const int backend_devices_idx = backend_ctx->backend_device_from_hip[hip_devices_idx]; + + const hc_device_param_t *device_param = backend_ctx->devices_param + backend_devices_idx; + + int device_id = device_param->device_id; + char *device_name = device_param->device_name; + u32 device_processors = device_param->device_processors; + u64 device_global_mem = device_param->device_global_mem; + u64 device_available_mem = device_param->device_available_mem; + + if ((device_param->skipped == false) && (device_param->skipped_warning == false)) + { + event_log_info (hashcat_ctx, "* Device #%02u: %s, %" PRIu64 "/%" PRIu64 " MB, %uMCU", + device_id + 1, + device_name, + device_available_mem / 1024 / 1024, + device_global_mem / 1024 / 1024, + device_processors); + } + else + { + event_log_info (hashcat_ctx, "* Device #%02u: %s, skipped", + device_id + 1, + device_name); + } + } + } + + event_log_info (hashcat_ctx, NULL); + } } #if defined (__APPLE__) @@ -1572,50 +1708,88 @@ void backend_info_compact (hashcat_ctx_t *hashcat_ctx) if (backend_ctx->mtl) { - int metal_devices_cnt = backend_ctx->metal_devices_cnt; + int metal_devices_cnt = backend_ctx->metal_devices_cnt; - char *metal_runtimeVersionStr = backend_ctx->metal_runtimeVersionStr; - - size_t len = event_log_info (hashcat_ctx, "METAL API (Metal %s)", metal_runtimeVersionStr); - - char line[HCBUFSIZ_TINY] = { 0 }; - - memset (line, '=', len); - - line[len] = 0; - - event_log_info (hashcat_ctx, "%s", line); - - for (int metal_devices_idx = 0; metal_devices_idx < metal_devices_cnt; metal_devices_idx++) + // hide empty Metal platforms + if (metal_devices_cnt) { - const int backend_devices_idx = backend_ctx->backend_device_from_metal[metal_devices_idx]; + char *metal_runtimeVersionStr = backend_ctx->metal_runtimeVersionStr; - const hc_device_param_t *device_param = backend_ctx->devices_param + backend_devices_idx; + size_t len = event_log_info (hashcat_ctx, "METAL API (Metal %s)", metal_runtimeVersionStr); - int device_id = device_param->device_id; - char *device_name = device_param->device_name; - u32 device_processors = device_param->device_processors; - u64 device_global_mem = device_param->device_global_mem; - u64 device_available_mem = device_param->device_available_mem; + char line[HCBUFSIZ_TINY] = { 0 }; - if ((device_param->skipped == false) && (device_param->skipped_warning == false)) + memset (line, '=', len); + + line[len] = 0; + + event_log_info (hashcat_ctx, "%s", line); + + if (bridge_ctx->enabled == true) { - event_log_info (hashcat_ctx, "* Device #%u: %s, %" PRIu64 "/%" PRIu64 " MB, %uMCU", - device_id + 1, - device_name, - device_available_mem / 1024 / 1024, - device_global_mem / 1024 / 1024, - device_processors); + const int unit_count = bridge_ctx->get_unit_count (bridge_ctx->platform_context); + + const int backend_devices_idx = backend_ctx->backend_device_from_metal[0]; + + const hc_device_param_t *device_param = backend_ctx->devices_param + backend_devices_idx; + + int device_id = device_param->device_id; + char *device_name = device_param->device_name; + u32 device_processors = device_param->device_processors; + u64 device_global_mem = device_param->device_global_mem; + u64 device_available_mem = device_param->device_available_mem; + + if ((device_param->skipped == false) && (device_param->skipped_warning == false)) + { + event_log_info (hashcat_ctx, "* Device #%02u -> #%02u: %s, %" PRIu64 "/%" PRIu64 " MB, %uMCU", + device_id + 1, unit_count, + device_name, + device_available_mem / 1024 / 1024, + device_global_mem / 1024 / 1024, + device_processors); + } + else + { + event_log_info (hashcat_ctx, "* Device #%02u -> #%02u: %s, skipped", + device_id + 1, unit_count, + device_name); + } + } else { - event_log_info (hashcat_ctx, "* Device #%u: %s, skipped", - device_id + 1, - device_name); - } - } + for (int metal_devices_idx = 0; metal_devices_idx < metal_devices_cnt; metal_devices_idx++) + { + const int backend_devices_idx = backend_ctx->backend_device_from_metal[metal_devices_idx]; - event_log_info (hashcat_ctx, NULL); + const hc_device_param_t *device_param = backend_ctx->devices_param + backend_devices_idx; + + int device_id = device_param->device_id; + char *device_name = device_param->device_name; + u32 device_processors = device_param->device_processors; + u64 device_global_mem = device_param->device_global_mem; + u64 device_available_mem = device_param->device_available_mem; + + if ((device_param->skipped == false) && (device_param->skipped_warning == false)) + { + event_log_info (hashcat_ctx, "* Device #%02u: %s, %" PRIu64 "/%" PRIu64 " MB, %uMCU", + device_id + 1, + device_name, + device_available_mem / 1024 / 1024, + device_global_mem / 1024 / 1024, + device_processors); + } + else + { + event_log_info (hashcat_ctx, "* Device #%02u: %s, skipped", + device_id + 1, + device_name); + } + } + } + + event_log_info (hashcat_ctx, NULL); + } } #endif @@ -1649,52 +1823,110 @@ void backend_info_compact (hashcat_ctx_t *hashcat_ctx) event_log_info (hashcat_ctx, "%s", line); - for (cl_uint opencl_platform_devices_idx = 0; opencl_platform_devices_idx < opencl_platform_devices_cnt; opencl_platform_devices_idx++) + if (bridge_ctx->enabled == true) { - const int backend_devices_idx = backend_ctx->backend_device_from_opencl_platform[opencl_platforms_idx][opencl_platform_devices_idx]; + const int unit_count = bridge_ctx->get_unit_count (bridge_ctx->platform_context); - const hc_device_param_t *device_param = backend_ctx->devices_param + backend_devices_idx; - - int device_id = device_param->device_id; - char *device_name = device_param->device_name; - u32 device_processors = device_param->device_processors; - u64 device_maxmem_alloc = device_param->device_maxmem_alloc; - u64 device_global_mem = device_param->device_global_mem; - u64 device_available_mem = device_param->device_available_mem; - - if ((device_param->skipped == false) && (device_param->skipped_warning == false)) + for (cl_uint opencl_platform_devices_idx = 0; opencl_platform_devices_idx < opencl_platform_devices_cnt; opencl_platform_devices_idx++) { - if (strncmp (device_name, "Apple M", 7) == 0) + const int backend_devices_idx = backend_ctx->backend_device_from_opencl_platform[opencl_platforms_idx][opencl_platform_devices_idx]; + + const hc_device_param_t *device_param = backend_ctx->devices_param + backend_devices_idx; + + int device_id = device_param->device_id; + char *device_name = device_param->device_name; + u32 device_processors = device_param->device_processors; + u64 device_maxmem_alloc = device_param->device_maxmem_alloc; + u64 device_global_mem = device_param->device_global_mem; + u64 device_available_mem = device_param->device_available_mem; + + if ((device_param->skipped == false) && (device_param->skipped_warning == false)) { - cl_device_type opencl_device_type = device_param->opencl_device_type; + if (strncmp (device_name, "Apple M", 7) == 0) + { + cl_device_type opencl_device_type = device_param->opencl_device_type; - const char *device_type_desc = ((opencl_device_type & CL_DEVICE_TYPE_CPU) ? "CPU" : ((opencl_device_type & CL_DEVICE_TYPE_GPU) ? "GPU" : "Accelerator")); + const char *device_type_desc = ((opencl_device_type & CL_DEVICE_TYPE_CPU) ? "CPU" : ((opencl_device_type & CL_DEVICE_TYPE_GPU) ? "GPU" : "Accelerator")); - event_log_info (hashcat_ctx, "* Device #%u: %s, %s, %" PRIu64 "/%" PRIu64 " MB (%" PRIu64 " MB allocatable), %uMCU", - device_id + 1, - device_name, - device_type_desc, - device_available_mem / 1024 / 1024, - device_global_mem / 1024 / 1024, - device_maxmem_alloc / 1024 / 1024, - device_processors); + event_log_info (hashcat_ctx, "* Device #%02u -> #%02u: %s, %s, %" PRIu64 "/%" PRIu64 " MB (%" PRIu64 " MB allocatable), %uMCU", + device_id + 1, unit_count, + device_name, + device_type_desc, + device_available_mem / 1024 / 1024, + device_global_mem / 1024 / 1024, + device_maxmem_alloc / 1024 / 1024, + device_processors); + } + else + { + event_log_info (hashcat_ctx, "* Device #%02u -> #%02u: %s, %" PRIu64 "/%" PRIu64 " MB (%" PRIu64 " MB allocatable), %uMCU", + device_id + 1, unit_count, + device_name, + device_available_mem / 1024 / 1024, + device_global_mem / 1024 / 1024, + device_maxmem_alloc / 1024 / 1024, + device_processors); + } + + break; } else { - event_log_info (hashcat_ctx, "* Device #%u: %s, %" PRIu64 "/%" PRIu64 " MB (%" PRIu64 " MB allocatable), %uMCU", - device_id + 1, - device_name, - device_available_mem / 1024 / 1024, - device_global_mem / 1024 / 1024, - device_maxmem_alloc / 1024 / 1024, - device_processors); + event_log_info (hashcat_ctx, "* Device #%02u -> #%02u: %s, skipped", + device_id + 1, unit_count, + device_name); } } - else + } + else + { + for (cl_uint opencl_platform_devices_idx = 0; opencl_platform_devices_idx < opencl_platform_devices_cnt; opencl_platform_devices_idx++) { - event_log_info (hashcat_ctx, "* Device #%u: %s, skipped", - device_id + 1, - device_name); + const int backend_devices_idx = backend_ctx->backend_device_from_opencl_platform[opencl_platforms_idx][opencl_platform_devices_idx]; + + const hc_device_param_t *device_param = backend_ctx->devices_param + backend_devices_idx; + + int device_id = device_param->device_id; + char *device_name = device_param->device_name; + u32 device_processors = device_param->device_processors; + u64 device_maxmem_alloc = device_param->device_maxmem_alloc; + u64 device_global_mem = device_param->device_global_mem; + u64 device_available_mem = device_param->device_available_mem; + + if ((device_param->skipped == false) && (device_param->skipped_warning == false)) + { + if (strncmp (device_name, "Apple M", 7) == 0) + { + cl_device_type opencl_device_type = device_param->opencl_device_type; + + const char *device_type_desc = ((opencl_device_type & CL_DEVICE_TYPE_CPU) ? "CPU" : ((opencl_device_type & CL_DEVICE_TYPE_GPU) ? "GPU" : "Accelerator")); + + event_log_info (hashcat_ctx, "* Device #%02u: %s, %s, %" PRIu64 "/%" PRIu64 " MB (%" PRIu64 " MB allocatable), %uMCU", + device_id + 1, + device_name, + device_type_desc, + device_available_mem / 1024 / 1024, + device_global_mem / 1024 / 1024, + device_maxmem_alloc / 1024 / 1024, + device_processors); + } + else + { + event_log_info (hashcat_ctx, "* Device #%02u: %s, %" PRIu64 "/%" PRIu64 " MB (%" PRIu64 " MB allocatable), %uMCU", + device_id + 1, + device_name, + device_available_mem / 1024 / 1024, + device_global_mem / 1024 / 1024, + device_maxmem_alloc / 1024 / 1024, + device_processors); + } + } + else + { + event_log_info (hashcat_ctx, "* Device #%02u: %s, skipped", + device_id + 1, + device_name); + } } } @@ -1915,7 +2147,7 @@ void status_display_status_json (hashcat_ctx_t *hashcat_ctx) printf (","); } - printf (" { \"device_id\": %u,", device_id + 1); + printf (" { \"device_id\": %02u,", device_id + 1); char *device_name_json_encoded = (char *) hcmalloc (strlen (device_info->device_name) * 2); @@ -1961,6 +2193,7 @@ void status_display_status_json (hashcat_ctx_t *hashcat_ctx) void status_display (hashcat_ctx_t *hashcat_ctx) { + const bridge_ctx_t *bridge_ctx = hashcat_ctx->bridge_ctx; const hashconfig_t *hashconfig = hashcat_ctx->hashconfig; const hwmon_ctx_t *hwmon_ctx = hashcat_ctx->hwmon_ctx; const user_options_t *user_options = hashcat_ctx->user_options; @@ -2350,21 +2583,40 @@ void status_display (hashcat_ctx_t *hashcat_ctx) break; } - for (int device_id = 0; device_id < hashcat_status->device_info_cnt; device_id++) + if (bridge_ctx->enabled == true) { - const device_info_t *device_info = hashcat_status->device_info_buf + device_id; + if (hashcat_status->device_info_cnt == 1) + { + const device_info_t *device_info0 = hashcat_status->device_info_buf + 0; - if (device_info->skipped_dev == true) continue; - if (device_info->skipped_warning_dev == true) continue; + event_log_info (hashcat_ctx, + "Speed.#%02u........: %9sH/s (%0.2fms) @ Accel:%u Loops:%u Thr:%u Vec:%u", 0 + 1, + device_info0->speed_sec_dev, + device_info0->exec_msec_dev, + device_info0->kernel_accel_dev, + device_info0->kernel_loops_dev, + device_info0->kernel_threads_dev, + device_info0->vector_width_dev); + } + } + else + { + for (int device_id = 0; device_id < hashcat_status->device_info_cnt; device_id++) + { + const device_info_t *device_info = hashcat_status->device_info_buf + device_id; - event_log_info (hashcat_ctx, - "Speed.#%u.........: %9sH/s (%0.2fms) @ Accel:%u Loops:%u Thr:%u Vec:%u", device_id + 1, - device_info->speed_sec_dev, - device_info->exec_msec_dev, - device_info->kernel_accel_dev, - device_info->kernel_loops_dev, - device_info->kernel_threads_dev, - device_info->vector_width_dev); + if (device_info->skipped_dev == true) continue; + if (device_info->skipped_warning_dev == true) continue; + + event_log_info (hashcat_ctx, + "Speed.#%02u........: %9sH/s (%0.2fms) @ Accel:%u Loops:%u Thr:%u Vec:%u", device_id + 1, + device_info->speed_sec_dev, + device_info->exec_msec_dev, + device_info->kernel_accel_dev, + device_info->kernel_loops_dev, + device_info->kernel_threads_dev, + device_info->vector_width_dev); + } } if (hashcat_status->device_info_active > 1) @@ -2482,7 +2734,7 @@ void status_display (hashcat_ctx_t *hashcat_ctx) if (device_info->brain_link_status_dev == BRAIN_LINK_STATUS_CONNECTED) { event_log_info (hashcat_ctx, - "Brain.Link.#%u....: RX: %sB (%sbps), TX: %sB (%sbps), idle", device_id + 1, + "Brain.Link.#%02u...: RX: %sB (%sbps), TX: %sB (%sbps), idle", device_id + 1, device_info->brain_link_recv_bytes_dev, device_info->brain_link_recv_bytes_sec_dev, device_info->brain_link_send_bytes_dev, @@ -2491,7 +2743,7 @@ void status_display (hashcat_ctx_t *hashcat_ctx) else if (device_info->brain_link_status_dev == BRAIN_LINK_STATUS_RECEIVING) { event_log_info (hashcat_ctx, - "Brain.Link.#%u....: RX: %sB (%sbps), TX: %sB (%sbps), receiving", device_id + 1, + "Brain.Link.#%02u...: RX: %sB (%sbps), TX: %sB (%sbps), receiving", device_id + 1, device_info->brain_link_recv_bytes_dev, device_info->brain_link_recv_bytes_sec_dev, device_info->brain_link_send_bytes_dev, @@ -2500,7 +2752,7 @@ void status_display (hashcat_ctx_t *hashcat_ctx) else if (device_info->brain_link_status_dev == BRAIN_LINK_STATUS_SENDING) { event_log_info (hashcat_ctx, - "Brain.Link.#%u....: RX: %sB (%sbps), TX: %sB (%sbps), sending", device_id + 1, + "Brain.Link.#%02u...: RX: %sB (%sbps), TX: %sB (%sbps), sending", device_id + 1, device_info->brain_link_recv_bytes_dev, device_info->brain_link_recv_bytes_sec_dev, device_info->brain_link_send_bytes_dev, @@ -2511,7 +2763,7 @@ void status_display (hashcat_ctx_t *hashcat_ctx) if ((device_info->brain_link_time_recv_dev > 0) && (device_info->brain_link_time_send_dev > 0)) { event_log_info (hashcat_ctx, - "Brain.Link.#%u....: RX: %sB (%sbps), TX: %sB (%sbps)", device_id + 1, + "Brain.Link.#%02u...: RX: %sB (%sbps), TX: %sB (%sbps)", device_id + 1, device_info->brain_link_recv_bytes_dev, device_info->brain_link_recv_bytes_sec_dev, device_info->brain_link_send_bytes_dev, @@ -2520,7 +2772,7 @@ void status_display (hashcat_ctx_t *hashcat_ctx) else { event_log_info (hashcat_ctx, - "Brain.Link.#%u....: N/A", device_id + 1); + "Brain.Link.#%02u...: N/A", device_id + 1); } } } @@ -2548,21 +2800,36 @@ void status_display (hashcat_ctx_t *hashcat_ctx) break; } - for (int device_id = 0; device_id < hashcat_status->device_info_cnt; device_id++) + if (bridge_ctx->enabled == true) { - const device_info_t *device_info = hashcat_status->device_info_buf + device_id; - - if (device_info->skipped_dev == true) continue; - if (device_info->skipped_warning_dev == true) continue; + const device_info_t *device_info = hashcat_status->device_info_buf + 0; event_log_info (hashcat_ctx, - "Restore.Sub.#%u...: Salt:%u Amplifier:%u-%u Iteration:%u-%u", device_id + 1, + "Restore.Sub.#%02u..: Salt:%u Amplifier:%u-%u Iteration:%u-%u", 0 + 1, device_info->salt_pos_dev, device_info->innerloop_pos_dev, device_info->innerloop_pos_dev + device_info->innerloop_left_dev, device_info->iteration_pos_dev, device_info->iteration_pos_dev + device_info->iteration_left_dev); } + else + { + for (int device_id = 0; device_id < hashcat_status->device_info_cnt; device_id++) + { + const device_info_t *device_info = hashcat_status->device_info_buf + device_id; + + if (device_info->skipped_dev == true) continue; + if (device_info->skipped_warning_dev == true) continue; + + event_log_info (hashcat_ctx, + "Restore.Sub.#%02u..: Salt:%u Amplifier:%u-%u Iteration:%u-%u", device_id + 1, + device_info->salt_pos_dev, + device_info->innerloop_pos_dev, + device_info->innerloop_pos_dev + device_info->innerloop_left_dev, + device_info->iteration_pos_dev, + device_info->iteration_pos_dev + device_info->iteration_left_dev); + } + } //if (hashconfig->opts_type & OPTS_TYPE_SLOW_CANDIDATES) if (user_options->slow_candidates == true) @@ -2574,18 +2841,32 @@ void status_display (hashcat_ctx_t *hashcat_ctx) event_log_info (hashcat_ctx, "Candidate.Engine.: Device Generator"); } - for (int device_id = 0; device_id < hashcat_status->device_info_cnt; device_id++) + if (bridge_ctx->enabled == true) { - const device_info_t *device_info = hashcat_status->device_info_buf + device_id; + const device_info_t *device_info = hashcat_status->device_info_buf + 0; - if (device_info->skipped_dev == true) continue; - if (device_info->skipped_warning_dev == true) continue; + if (device_info->guess_candidates_dev) + { + event_log_info (hashcat_ctx, + "Candidates.#%02u...: %s", 0 + 1, + device_info->guess_candidates_dev); + } + } + else + { + for (int device_id = 0; device_id < hashcat_status->device_info_cnt; device_id++) + { + const device_info_t *device_info = hashcat_status->device_info_buf + device_id; - if (device_info->guess_candidates_dev == NULL) continue; + if (device_info->skipped_dev == true) continue; + if (device_info->skipped_warning_dev == true) continue; - event_log_info (hashcat_ctx, - "Candidates.#%u....: %s", device_id + 1, - device_info->guess_candidates_dev); + if (device_info->guess_candidates_dev == NULL) continue; + + event_log_info (hashcat_ctx, + "Candidates.#%02u...: %s", device_id + 1, + device_info->guess_candidates_dev); + } } if (hwmon_ctx->enabled == true) @@ -2594,26 +2875,48 @@ void status_display (hashcat_ctx_t *hashcat_ctx) bool first_dev = true; #endif - for (int device_id = 0; device_id < hashcat_status->device_info_cnt; device_id++) + if (bridge_ctx->enabled == true) { - const device_info_t *device_info = hashcat_status->device_info_buf + device_id; + const device_info_t *device_info = hashcat_status->device_info_buf + 0; - if (device_info->skipped_dev == true) continue; - if (device_info->skipped_warning_dev == true) continue; - - if (device_info->hwmon_dev == NULL) continue; - - #if defined(__APPLE__) - if (first_dev && strlen (device_info->hwmon_fan_dev) > 0) + if (device_info->hwmon_dev) { - event_log_info (hashcat_ctx, "Hardware.Mon.SMC.: %s", device_info->hwmon_fan_dev); - first_dev = false; - } - #endif + #if defined(__APPLE__) + if (first_dev && strlen (device_info->hwmon_fan_dev) > 0) + { + event_log_info (hashcat_ctx, "Hardware.Mon.SMC.: %s", device_info->hwmon_fan_dev); + first_dev = false; + } + #endif - event_log_info (hashcat_ctx, - "Hardware.Mon.#%u..: %s", device_id + 1, - device_info->hwmon_dev); + event_log_info (hashcat_ctx, + "Hardware.Mon.#%02u.: %s", 0 + 1, + device_info->hwmon_dev); + } + } + else + { + for (int device_id = 0; device_id < hashcat_status->device_info_cnt; device_id++) + { + const device_info_t *device_info = hashcat_status->device_info_buf + device_id; + + if (device_info->skipped_dev == true) continue; + if (device_info->skipped_warning_dev == true) continue; + + if (device_info->hwmon_dev == NULL) continue; + + #if defined(__APPLE__) + if (first_dev && strlen (device_info->hwmon_fan_dev) > 0) + { + event_log_info (hashcat_ctx, "Hardware.Mon.SMC.: %s", device_info->hwmon_fan_dev); + first_dev = false; + } + #endif + + event_log_info (hashcat_ctx, + "Hardware.Mon.#%02u.: %s", device_id + 1, + device_info->hwmon_dev); + } } } @@ -2680,7 +2983,7 @@ void status_benchmark (hashcat_ctx_t *hashcat_ctx) if (device_info->skipped_warning_dev == true) continue; event_log_info (hashcat_ctx, - "Speed.#%u.........: %9sH/s (%0.2fms) @ Accel:%u Loops:%u Thr:%u Vec:%u", device_id + 1, + "Speed.#%02u........: %9sH/s (%0.2fms) @ Accel:%u Loops:%u Thr:%u Vec:%u", device_id + 1, device_info->speed_sec_dev, device_info->exec_msec_dev, device_info->kernel_accel_dev, @@ -2801,7 +3104,7 @@ void status_speed (hashcat_ctx_t *hashcat_ctx) if (device_info->skipped_warning_dev == true) continue; event_log_info (hashcat_ctx, - "Speed.#%u.........: %9sH/s (%0.2fms)", device_id + 1, + "Speed.#%02u........: %9sH/s (%0.2fms)", device_id + 1, device_info->speed_sec_dev, device_info->exec_msec_dev); } @@ -2919,7 +3222,7 @@ void status_progress (hashcat_ctx_t *hashcat_ctx) if (device_info->skipped_warning_dev == true) continue; event_log_info (hashcat_ctx, - "Progress.#%u......: %" PRIu64, device_id + 1, + "Progress.#%02u.....: %" PRIu64, device_id + 1, device_info->progress_dev); } @@ -2931,7 +3234,7 @@ void status_progress (hashcat_ctx_t *hashcat_ctx) if (device_info->skipped_warning_dev == true) continue; event_log_info (hashcat_ctx, - "Runtime.#%u.......: %0.2fms", device_id + 1, + "Runtime.#%02u......: %0.2fms", device_id + 1, device_info->runtime_msec_dev); } diff --git a/src/tuningdb.c b/src/tuningdb.c index 2f983b31e..41d3795aa 100644 --- a/src/tuningdb.c +++ b/src/tuningdb.c @@ -72,6 +72,8 @@ int tuning_db_init (hashcat_ctx_t *hashcat_ctx) char **tuning_db_files = scan_directory (tuning_db_folder); + hcfree (tuning_db_folder); + for (int i = 0; tuning_db_files[i] != NULL; i++) { char *tuning_db_file = tuning_db_files[i]; @@ -80,9 +82,19 @@ int tuning_db_init (hashcat_ctx_t *hashcat_ctx) const size_t dblen = strlen (tuning_db_file); - if (dblen < suflen) continue; // make sure to not do any out-of-boundary reads + if (dblen < suflen) + { + hcfree (tuning_db_file); - if (memcmp (tuning_db_file + dblen - suflen, TUNING_DB_SUFFIX, suflen) != 0) continue; + continue; // make sure to not do any out-of-boundary reads + } + + if (memcmp (tuning_db_file + dblen - suflen, TUNING_DB_SUFFIX, suflen) != 0) + { + hcfree (tuning_db_file); + + continue; + } HCFILE fp; @@ -90,6 +102,8 @@ int tuning_db_init (hashcat_ctx_t *hashcat_ctx) { event_log_error (hashcat_ctx, "%s: %s", tuning_db_file, strerror (errno)); + for (int j = 0; tuning_db_files[j] != NULL; j++) hcfree (tuning_db_files[j]); + return -1; } @@ -365,7 +379,7 @@ bool tuning_db_process_line (hashcat_ctx_t *hashcat_ctx, const char *line_buf, c return true; } -tuning_db_entry_t *tuning_db_search_real (hashcat_ctx_t *hashcat_ctx, const char *device_name, const cl_device_type device_type, int attack_mode, const int hash_mode) +static tuning_db_entry_t *tuning_db_search_real (hashcat_ctx_t *hashcat_ctx, const char *device_name, const cl_device_type device_type, int attack_mode, const int hash_mode) { tuning_db_t *tuning_db = hashcat_ctx->tuning_db; @@ -501,5 +515,7 @@ tuning_db_entry_t *tuning_db_search (hashcat_ctx_t *hashcat_ctx, const char *dev entry = tuning_db_search_real (hashcat_ctx, device_name, device_type, attack_mode, hash_mode); - return entry; + if (entry) return entry; + + return NULL; } diff --git a/src/usage.c b/src/usage.c index 7cbf22348..01cb31bfe 100644 --- a/src/usage.c +++ b/src/usage.c @@ -87,11 +87,17 @@ static const char *const USAGE_BIG_PRE_HASHMODES[] = " --veracrypt-pim-stop | Num | VeraCrypt personal iterations multiplier stop | --veracrypt-pim-stop=500", " -b, --benchmark | | Run benchmark of selected hash-modes |", " --benchmark-all | | Run benchmark of all hash-modes (requires -b) |", + " --benchmark-min | | Set benchmark min hash-mode (requires -b) | --benchmark-min=100", + " --benchmark-max | | Set benchmark max hash-mode (requires -b) | --benchmark-max=1000", " --speed-only | | Return expected speed of the attack, then quit |", " --progress-only | | Return ideal progress step size and time to process |", " -c, --segment-size | Num | Sets size in MB to cache from the wordfile to X | -c 32", " --bitmap-min | Num | Sets minimum bits allowed for bitmaps to X | --bitmap-min=24", " --bitmap-max | Num | Sets maximum bits allowed for bitmaps to X | --bitmap-max=24", + " --bridge-parameter1 | Str | Sets the generic parameter 1 for a Bridge |", + " --bridge-parameter2 | Str | Sets the generic parameter 2 for a Bridge |", + " --bridge-parameter3 | Str | Sets the generic parameter 3 for a Bridge |", + " --bridge-parameter4 | Str | Sets the generic parameter 4 for a Bridge |", " --cpu-affinity | Str | Locks to CPU devices, separated with commas | --cpu-affinity=1,2,3", " --hook-threads | Num | Sets number of threads for a hook (per compute unit) | --hook-threads=8", " --hash-info | | Show information for each hash-mode |", @@ -102,7 +108,9 @@ static const char *const USAGE_BIG_PRE_HASHMODES[] = " --backend-ignore-opencl | | Do not try to open OpenCL interface on startup |", " -I, --backend-info | | Show system/environment/backend API info | -I or -II", " -d, --backend-devices | Str | Backend devices to use, separated with commas | -d 1", - " -Y, --backend-devices-virtual | Num | Spawn X virtual instances for each real device | -Y 8", + " -Y, --backend-devices-virtmulti| Num | Spawn X virtual instances on a real device | -Y 8", + " -R, --backend-devices-virthost | Num | Sets the real device to create virtual instances | -R 1", + " --backend-devices-keepfree | Num | Keep specified percentage of device memory free | --backend-devices-keepfree=5", " -D, --opencl-device-types | Str | OpenCL device-types to use, separated with commas | -D 1", " -O, --optimized-kernel-enable | | Enable optimized kernels (limits password length) |", " -M, --multiply-accel-disable | | Disable multiply kernel-accel with processor count |", diff --git a/src/user_options.c b/src/user_options.c index b1ed588f4..f70a2640f 100644 --- a/src/user_options.c +++ b/src/user_options.c @@ -21,9 +21,9 @@ #endif #ifdef WITH_BRAIN -static const char *const short_options = "hVvm:a:r:j:k:g:o:t:d:D:n:u:T:c:p:s:l:1:2:3:4:iIbw:OMSY:z"; +static const char *const short_options = "hVvm:a:r:j:k:g:o:t:d:D:n:u:T:c:p:s:l:1:2:3:4:iIbw:OMSY:R:z"; #else -static const char *const short_options = "hVvm:a:r:j:k:g:o:t:d:D:n:u:T:c:p:s:l:1:2:3:4:iIbw:OMSY:"; +static const char *const short_options = "hVvm:a:r:j:k:g:o:t:d:D:n:u:T:c:p:s:l:1:2:3:4:iIbw:OMSY:R:"; #endif static char *const SEPARATOR = ":"; @@ -33,7 +33,9 @@ static const struct option long_options[] = {"advice-disable", no_argument, NULL, IDX_ADVICE_DISABLE}, {"attack-mode", required_argument, NULL, IDX_ATTACK_MODE}, {"backend-devices", required_argument, NULL, IDX_BACKEND_DEVICES}, - {"backend-devices-virtual", required_argument, NULL, IDX_BACKEND_DEVICES_VIRTUAL}, + {"backend-devices-virtmulti", required_argument, NULL, IDX_BACKEND_DEVICES_VIRTMULTI}, + {"backend-devices-virthost", required_argument, NULL, IDX_BACKEND_DEVICES_VIRTHOST}, + {"backend-devices-keepfree", required_argument, NULL, IDX_BACKEND_DEVICES_KEEPFREE}, {"backend-ignore-cuda", no_argument, NULL, IDX_BACKEND_IGNORE_CUDA}, {"backend-ignore-hip", no_argument, NULL, IDX_BACKEND_IGNORE_HIP}, #if defined (__APPLE__) @@ -43,9 +45,15 @@ static const struct option long_options[] = {"backend-info", no_argument, NULL, IDX_BACKEND_INFO}, {"backend-vector-width", required_argument, NULL, IDX_BACKEND_VECTOR_WIDTH}, {"benchmark-all", no_argument, NULL, IDX_BENCHMARK_ALL}, + {"benchmark-max", required_argument, NULL, IDX_BENCHMARK_MAX}, + {"benchmark-min", required_argument, NULL, IDX_BENCHMARK_MIN}, {"benchmark", no_argument, NULL, IDX_BENCHMARK}, {"bitmap-max", required_argument, NULL, IDX_BITMAP_MAX}, {"bitmap-min", required_argument, NULL, IDX_BITMAP_MIN}, + {"bridge-parameter1", required_argument, NULL, IDX_BRIDGE_PARAMETER1}, + {"bridge-parameter2", required_argument, NULL, IDX_BRIDGE_PARAMETER2}, + {"bridge-parameter3", required_argument, NULL, IDX_BRIDGE_PARAMETER3}, + {"bridge-parameter4", required_argument, NULL, IDX_BRIDGE_PARAMETER4}, {"cpu-affinity", required_argument, NULL, IDX_CPU_AFFINITY}, {"custom-charset1", required_argument, NULL, IDX_CUSTOM_CHARSET_1}, {"custom-charset2", required_argument, NULL, IDX_CUSTOM_CHARSET_2}, @@ -175,7 +183,9 @@ int user_options_init (hashcat_ctx_t *hashcat_ctx) user_options->attack_mode = ATTACK_MODE; user_options->autodetect = AUTODETECT; user_options->backend_devices = NULL; - user_options->backend_devices_virtual = BACKEND_DEVICES_VIRTUAL; + user_options->backend_devices_virtmulti = BACKEND_DEVICES_VIRTMULTI; + user_options->backend_devices_virthost = BACKEND_DEVICES_VIRTHOST; + user_options->backend_devices_keepfree = BACKEND_DEVICES_KEEPFREE; user_options->backend_ignore_cuda = BACKEND_IGNORE_CUDA; user_options->backend_ignore_hip = BACKEND_IGNORE_HIP; #if defined (__APPLE__) @@ -185,6 +195,8 @@ int user_options_init (hashcat_ctx_t *hashcat_ctx) user_options->backend_info = BACKEND_INFO; user_options->backend_vector_width = BACKEND_VECTOR_WIDTH; user_options->benchmark_all = BENCHMARK_ALL; + user_options->benchmark_max = BENCHMARK_MAX; + user_options->benchmark_min = BENCHMARK_MIN; user_options->benchmark = BENCHMARK; user_options->bitmap_max = BITMAP_MAX; user_options->bitmap_min = BITMAP_MIN; @@ -198,6 +210,10 @@ int user_options_init (hashcat_ctx_t *hashcat_ctx) user_options->brain_session = BRAIN_SESSION; user_options->brain_session_whitelist = NULL; #endif + user_options->bridge_parameter1 = NULL; + user_options->bridge_parameter2 = NULL; + user_options->bridge_parameter3 = NULL; + user_options->bridge_parameter4 = NULL; user_options->cpu_affinity = NULL; user_options->custom_charset_1 = NULL; user_options->custom_charset_2 = NULL; @@ -308,6 +324,11 @@ void user_options_destroy (hashcat_ctx_t *hashcat_ctx) hcfree (user_options->rp_files); + if (user_options->backend_info > 0) + { + hcfree (user_options->opencl_device_types); + } + //do not reset this, it might be used from main.c //memset (user_options, 0, sizeof (user_options_t)); } @@ -362,7 +383,11 @@ int user_options_getopt (hashcat_ctx_t *hashcat_ctx, int argc, char **argv) case IDX_INCREMENT_MIN: case IDX_INCREMENT_MAX: case IDX_HOOK_THREADS: - case IDX_BACKEND_DEVICES_VIRTUAL: + case IDX_BACKEND_DEVICES_VIRTMULTI: + case IDX_BACKEND_DEVICES_VIRTHOST: + case IDX_BACKEND_DEVICES_KEEPFREE: + case IDX_BENCHMARK_MAX: + case IDX_BENCHMARK_MIN: #ifdef WITH_BRAIN case IDX_BRAIN_PORT: #endif @@ -426,6 +451,8 @@ int user_options_getopt (hashcat_ctx_t *hashcat_ctx, int argc, char **argv) case IDX_KEYSPACE: user_options->keyspace = true; break; case IDX_BENCHMARK: user_options->benchmark = true; break; case IDX_BENCHMARK_ALL: user_options->benchmark_all = true; break; + case IDX_BENCHMARK_MAX: user_options->benchmark_max = hc_strtoul (optarg, NULL, 10); break; + case IDX_BENCHMARK_MIN: user_options->benchmark_min = hc_strtoul (optarg, NULL, 10); break; case IDX_STDOUT_FLAG: user_options->stdout_flag = true; break; case IDX_STDIN_TIMEOUT_ABORT: user_options->stdin_timeout_abort = hc_strtoul (optarg, NULL, 10); user_options->stdin_timeout_abort_chgd = true; break; @@ -439,7 +466,8 @@ int user_options_getopt (hashcat_ctx_t *hashcat_ctx, int argc, char **argv) case IDX_STATUS_TIMER: user_options->status_timer = hc_strtoul (optarg, NULL, 10); break; case IDX_MACHINE_READABLE: user_options->machine_readable = true; break; case IDX_LOOPBACK: user_options->loopback = true; break; - case IDX_SESSION: user_options->session = optarg; break; + case IDX_SESSION: user_options->session = optarg; + user_options->session_chgd = true; break; case IDX_HASH_MODE: user_options->hash_mode = hc_strtoul (optarg, NULL, 10); user_options->hash_mode_chgd = true; break; case IDX_RUNTIME: user_options->runtime = hc_strtoul (optarg, NULL, 10); @@ -475,6 +503,10 @@ int user_options_getopt (hashcat_ctx_t *hashcat_ctx, int argc, char **argv) case IDX_HEX_CHARSET: user_options->hex_charset = true; break; case IDX_HEX_SALT: user_options->hex_salt = true; break; case IDX_HEX_WORDLIST: user_options->hex_wordlist = true; break; + case IDX_BRIDGE_PARAMETER1: user_options->bridge_parameter1 = optarg; break; + case IDX_BRIDGE_PARAMETER2: user_options->bridge_parameter2 = optarg; break; + case IDX_BRIDGE_PARAMETER3: user_options->bridge_parameter3 = optarg; break; + case IDX_BRIDGE_PARAMETER4: user_options->bridge_parameter4 = optarg; break; case IDX_CPU_AFFINITY: user_options->cpu_affinity = optarg; break; case IDX_BACKEND_IGNORE_CUDA: user_options->backend_ignore_cuda = true; break; case IDX_BACKEND_IGNORE_HIP: user_options->backend_ignore_hip = true; break; @@ -484,7 +516,9 @@ int user_options_getopt (hashcat_ctx_t *hashcat_ctx, int argc, char **argv) case IDX_BACKEND_IGNORE_OPENCL: user_options->backend_ignore_opencl = true; break; case IDX_BACKEND_INFO: user_options->backend_info++; break; case IDX_BACKEND_DEVICES: user_options->backend_devices = optarg; break; - case IDX_BACKEND_DEVICES_VIRTUAL: user_options->backend_devices_virtual = hc_strtoul (optarg, NULL, 10); break; + case IDX_BACKEND_DEVICES_VIRTMULTI: user_options->backend_devices_virtmulti = hc_strtoul (optarg, NULL, 10); break; + case IDX_BACKEND_DEVICES_VIRTHOST: user_options->backend_devices_virthost = hc_strtoul (optarg, NULL, 10); break; + case IDX_BACKEND_DEVICES_KEEPFREE: user_options->backend_devices_keepfree = hc_strtoul (optarg, NULL, 10); break; case IDX_BACKEND_VECTOR_WIDTH: user_options->backend_vector_width = hc_strtoul (optarg, NULL, 10); user_options->backend_vector_width_chgd = true; break; case IDX_OPENCL_DEVICE_TYPES: user_options->opencl_device_types = optarg; break; @@ -776,9 +810,23 @@ int user_options_sanity (hashcat_ctx_t *hashcat_ctx) return -1; } - if (user_options->backend_devices_virtual == 0) + if (user_options->backend_devices_virtmulti == 0) { - event_log_error (hashcat_ctx, "Invalid --backend-devices-virtual value specified."); + event_log_error (hashcat_ctx, "Invalid --backend-devices-virtmulti value specified."); + + return -1; + } + + if (user_options->backend_devices_virthost == 0) + { + event_log_error (hashcat_ctx, "Invalid --backend-devices-virthost value specified."); + + return -1; + } + + if (user_options->backend_devices_keepfree > 100) + { + event_log_error (hashcat_ctx, "Invalid --backend-devices-keepfree value specified."); return -1; } @@ -1000,7 +1048,7 @@ int user_options_sanity (hashcat_ctx_t *hashcat_ctx) return -1; } - if (user_options->kernel_loops > 1024) + if (user_options->kernel_loops > KERNEL_LOOPS_MAX) { event_log_error (hashcat_ctx, "Invalid kernel-loops specified."); @@ -1235,6 +1283,26 @@ int user_options_sanity (hashcat_ctx_t *hashcat_ctx) } #endif + if (user_options->benchmark_max > BENCHMARK_MAX) + { + event_log_error (hashcat_ctx, "Invalid --benchmark-max value specified (cannot be greater than 99999)."); + + return -1; + } + + if (user_options->benchmark_max < user_options->benchmark_min) + { + event_log_error (hashcat_ctx, "Invalid --benchmark-min/max values specified (max cannot be lower than min)."); + + return -1; + } + + if (user_options->benchmark_min != BENCHMARK_MIN || user_options->benchmark_max != BENCHMARK_MAX) + { + // forces benchmark-all to be enabled if benchmark-min and benchmark_max are also set + user_options->benchmark_all = true; + } + if (user_options->attack_mode_chgd == true) { event_log_error (hashcat_ctx, "Can't change --attack-mode (-a) in benchmark mode."); @@ -1833,6 +1901,14 @@ void user_options_preprocess (hashcat_ctx_t *hashcat_ctx) } #endif + if (user_options->hwmon == false) + { + // some algorithm, such as SCRYPT, depend on accurate free memory values + // the only way to get them is through low-level APIs such as nvml via hwmon + + user_options->hwmon = true; + } + if (user_options->stdout_flag) { user_options->hwmon = false; @@ -2116,6 +2192,19 @@ void user_options_info (hashcat_ctx_t *hashcat_ctx) event_log_info (hashcat_ctx, "* --benchmark-all"); } + if (user_options->hash_mode_chgd == false) + { + if (user_options->benchmark_max != BENCHMARK_MAX) + { + event_log_info (hashcat_ctx, "* --benchmark-max=%u", user_options->benchmark_max); + } + + if (user_options->benchmark_min != BENCHMARK_MIN) + { + event_log_info (hashcat_ctx, "* --benchmark-min=%u", user_options->benchmark_min); + } + } + if (user_options->force == true) { event_log_info (hashcat_ctx, "* --force"); @@ -2126,9 +2215,14 @@ void user_options_info (hashcat_ctx_t *hashcat_ctx) event_log_info (hashcat_ctx, "* --backend-devices=%s", user_options->backend_devices); } - if (user_options->backend_devices_virtual) + if (user_options->backend_devices_virtmulti) { - event_log_info (hashcat_ctx, "* --backend-devices-virtual=%u", user_options->backend_devices_virtual); + event_log_info (hashcat_ctx, "* --backend-devices-virtmulti=%u", user_options->backend_devices_virtmulti); + } + + if (user_options->backend_devices_virthost) + { + event_log_info (hashcat_ctx, "* --backend-devices-virthost=%u", user_options->backend_devices_virthost); } if (user_options->opencl_device_types) @@ -2180,6 +2274,16 @@ void user_options_info (hashcat_ctx_t *hashcat_ctx) event_log_info (hashcat_ctx, "# option: --benchmark-all"); } + if (user_options->benchmark_max != BENCHMARK_MAX) + { + event_log_info (hashcat_ctx, "# option: --benchmark-max=%u", user_options->benchmark_max); + } + + if (user_options->benchmark_min != BENCHMARK_MIN) + { + event_log_info (hashcat_ctx, "# option: --benchmark-min=%u", user_options->benchmark_min); + } + if (user_options->force == true) { event_log_info (hashcat_ctx, "# option: --force"); @@ -2190,9 +2294,14 @@ void user_options_info (hashcat_ctx_t *hashcat_ctx) event_log_info (hashcat_ctx, "# option: --backend-devices=%s", user_options->backend_devices); } - if (user_options->backend_devices_virtual) + if (user_options->backend_devices_virtmulti) { - event_log_info (hashcat_ctx, "# option: --backend-devices-virtual=%u", user_options->backend_devices_virtual); + event_log_info (hashcat_ctx, "# option: --backend-devices-virtmulti=%u", user_options->backend_devices_virtmulti); + } + + if (user_options->backend_devices_virthost) + { + event_log_info (hashcat_ctx, "# option: --backend-devices-virthost=%u", user_options->backend_devices_virthost); } if (user_options->opencl_device_types) @@ -3194,6 +3303,10 @@ void user_options_logger (hashcat_ctx_t *hashcat_ctx) #ifdef WITH_BRAIN logfile_top_string (user_options->brain_session_whitelist); #endif + logfile_top_string (user_options->bridge_parameter1); + logfile_top_string (user_options->bridge_parameter2); + logfile_top_string (user_options->bridge_parameter3); + logfile_top_string (user_options->bridge_parameter4); logfile_top_string (user_options->cpu_affinity); logfile_top_string (user_options->custom_charset_1); logfile_top_string (user_options->custom_charset_2); @@ -3225,9 +3338,13 @@ void user_options_logger (hashcat_ctx_t *hashcat_ctx) logfile_top_uint64 (user_options->limit); logfile_top_uint64 (user_options->skip); logfile_top_uint (user_options->attack_mode); - logfile_top_uint (user_options->backend_devices_virtual); + logfile_top_uint (user_options->backend_devices_virtmulti); + logfile_top_uint (user_options->backend_devices_virthost); + logfile_top_uint (user_options->backend_devices_keepfree); logfile_top_uint (user_options->benchmark); logfile_top_uint (user_options->benchmark_all); + logfile_top_uint (user_options->benchmark_max); + logfile_top_uint (user_options->benchmark_min); logfile_top_uint (user_options->bitmap_max); logfile_top_uint (user_options->bitmap_min); logfile_top_uint (user_options->debug_mode); diff --git a/tools/benchmark_deep.pl b/tools/benchmark_deep.pl index 79bb19580..f6369e995 100755 --- a/tools/benchmark_deep.pl +++ b/tools/benchmark_deep.pl @@ -13,11 +13,11 @@ my $amd_cache = "~/.AMD"; my $hashcat_path = "."; my $kernels_cache = "$hashcat_path/kernels"; my $hashcat_bin = "$hashcat_path/hashcat"; -my $device = 3; +my $device = 1; my $workload_profile = 3; -my $runtime = 24; -my $sleep_sec = 12; -my $default_mask = "?b?b?b?b?b?b?b"; +my $runtime = 11; +my $sleep_sec = 13; +my $default_mask = "?a?a?a?a?a?a?a"; my $result = "result.txt"; my $old_hashcat = 0; # requires to have ran with new hashcat before to create the hashfiles my $repeats = 0; @@ -25,22 +25,18 @@ my $cpu_benchmark = 0; print "\nHardware preparations... You may need to adjust some settings and probably can ignore some of the error\n\n"; -system ("echo performance | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor"); +system ("echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor"); if ($cpu_benchmark == 1) { - system ("echo 1 > /sys/devices/system/cpu/intel_pstate/no_turbo"); ## for CPU benchmark Intel - system ("echo 0 > /sys/devices/system/cpu/cpufreq/boost"); ## for CPU benchmark AMD + system ("sudo echo 1 > /sys/devices/system/cpu/intel_pstate/no_turbo"); ## for CPU benchmark Intel + system ("sudo echo 0 > /sys/devices/system/cpu/cpufreq/boost"); ## for CPU benchmark AMD } else { - system ("rocm-smi --resetprofile --resetclocks --resetfans"); - system ("rocm-smi --setfan 100% --setperflevel high"); + #system ("rocm-smi --resetprofile --resetclocks --resetfans"); + #system ("rocm-smi --setfan 100% --setperflevel high"); - system ("nvidia-smi -rac"); - system ("nvidia-smi -pm ENABLED"); - system ("nvidia-smi -acp UNRESTRICTED"); - system ("nvidia-smi -pl 225"); ## needs per-gpu adjust system ("nvidia-settings -a GPUPowerMizerMode=1 -a GPUFanControlState=1 -a GPUTargetFanSpeed=100"); } @@ -552,7 +548,7 @@ sub get_module close (IN); - my $mask = (defined $benchmark_mask) ? $benchmark_mask : $default_mask; + my $mask = $default_mask; if ($pw_min != -1) { @@ -575,6 +571,8 @@ sub get_module } } + $mask = (defined $benchmark_mask) ? $benchmark_mask : $mask; + my $module = { "is_binary" => $is_binary, diff --git a/tools/cachedata2hashcat.py b/tools/cachedata2hashcat.py new file mode 100755 index 000000000..4ec57b6b1 --- /dev/null +++ b/tools/cachedata2hashcat.py @@ -0,0 +1,112 @@ +#!/usr/bin/env python3 +# +# Script to extract the hash from a CacheData-file. +#--MicrosoftAccount +### C:\Windows\system32\config\systemprofile\AppData\local\microsoft\windows\CloudAPCache\MicrosoftAccount\\Cache\CacheData +#--AzureAD +### C:\Windows\system32\config\systemprofile\AppData\local\microsoft\windows\CloudAPCache\AzureAD\\Cache\CacheData +# +# This code is build from scratch. Nonetheless, all the initial reverse engineering work has been done +# by https://github.com/tijldeneut and https://github.com/synacktiv +# +# Authors: +# https://github.com/Banaanhangwagen +# https://github.com/Ctrl-Shift-Defeat +# +# v2025-5: initial release +# +# License: MIT +# + +import sys +import struct + +def read_node_info(file, node_count, start_address): + """Extracts node info from the binary file.""" + node_info = [] + node_size = 20 + node_type_counts = {} + for i in range(node_count): + node_start = start_address + i * node_size + node = file[node_start:node_start + node_size] + node_type = node[0] + node_type_counts[node_type] = node_type_counts.get(node_type, 0) + 1 + crypto_blob_size = struct.unpack('111}") + hashes_found += 1 + else: + # Skip the other nodes properly + start_address += crypto_blob_size + encrypted_part_size + 8 + + return hashes_found + + +def print_banner(): + print("╔══════════════════════════════╗") + print("║ Cachedata2hashcat ║") + print("╚══════════════════════════════╝") + + +def main(): + if len(sys.argv) != 2: + print(f"Usage: {sys.argv[0]} path_to_CacheData") + sys.exit(1) + try: + with open(sys.argv[1], 'rb') as f: + file = f.read() + except IOError as e: + print(f"Error opening file: {e}") + sys.exit(1) + + print_banner() + + # Extract version + version = struct.unpack('5}") + if version != 2: + print("\033[91m[!]\033[0m Unsupported version. Be careful when proceeding.") + + # Extract node count + node_count = struct.unpack('14}") + if node_count == 0: + print("\033[91m[!]\033[0m No nodes found. Cannot proceed.") + sys.exit(1) + + node_info, node_type_counts = read_node_info(file, node_count, 0x54) + + type1_count = node_type_counts.get(1, 0) + print(f"\033[92m[+]\033[0m Type 1-nodes: {type1_count:>15}") + if type1_count == 0: + print("\033[91m[!] Warning: No hash-containing nodes (Type 1) found.\033[0m") + + hashes_found = extract_hashes(file, node_info, 0x54 + node_count * 20) + + if hashes_found == 0: + print(f"\033[91m[!]\033[0m No valid hashes found in the file.\033[0m") + else: + print(f"\033[92m[+]\033[0m Successfully extracted {hashes_found} hash(es).") + + +if __name__ == "__main__": + main() diff --git a/tools/install_modules.sh b/tools/install_modules.sh index 5167a9f31..683d20000 100755 --- a/tools/install_modules.sh +++ b/tools/install_modules.sh @@ -19,7 +19,9 @@ cpan install Authen::Passphrase::LANManager \ Compress::Zlib \ Convert::EBCDIC \ Crypt::AuthEnc::GCM \ + Crypt::Camellia \ Crypt::CBC \ + Crypt::Cipher::Serpent \ Crypt::DES \ Crypt::DES_EDE3 \ Crypt::Digest::BLAKE2s_256 \ diff --git a/tools/package_bin.sh b/tools/package_bin.sh index 2854c4916..b110a8bea 100755 --- a/tools/package_bin.sh +++ b/tools/package_bin.sh @@ -5,7 +5,7 @@ ## License.....: MIT ## -export IN=$HOME/hashcat +export IN=. export OUT=$HOME/xy/hashcat-6.2.6 rm -rf $OUT @@ -14,6 +14,7 @@ rm -rf $OUT.7z mkdir -p $OUT mkdir -p $OUT/tools +mkdir -p $OUT/Python cp $IN/hashcat.exe $OUT/ cp $IN/hashcat.bin $OUT/ @@ -23,6 +24,7 @@ cp -r $IN/docs $OUT/ cp -r $IN/charsets $OUT/ cp -r $IN/layouts $OUT/ cp -r $IN/masks $OUT/ +cp -r $IN/bridges $OUT/ cp -r $IN/modules $OUT/ cp -r $IN/rules $OUT/ cp -r $IN/extra $OUT/ @@ -30,6 +32,7 @@ cp -r $IN/tunings $OUT/ cp $IN/example.dict $OUT/ cp $IN/example[0123456789]*.hash $OUT/ cp $IN/example[0123456789]*.cmd $OUT/ +cp -r $IN/Python/*.py $OUT/Python/ cp -r $IN/OpenCL $OUT/ cp $IN/tools/*hashcat.pl $OUT/tools/ cp $IN/tools/*hashcat.py $OUT/tools/ @@ -60,6 +63,7 @@ unix2dos $OUT/rules/hybrid/*.rule unix2dos $OUT/docs/* unix2dos $OUT/docs/license_libs/* unix2dos $OUT/example*.cmd +unix2dos $OUT/Python/* unix2dos $OUT/OpenCL/* unix2dos $OUT/tools/* unix2dos $OUT/tunings/* @@ -79,6 +83,8 @@ chmod 755 $OUT/layouts chmod 644 $OUT/layouts/* chmod 755 $OUT/masks chmod 644 $OUT/masks/* +chmod 755 $OUT/bridges +chmod 644 $OUT/bridges/* chmod 755 $OUT/modules chmod 644 $OUT/modules/* chmod 644 $OUT/example* @@ -86,6 +92,8 @@ chmod 755 $OUT/example*.sh chmod 755 $OUT/extra chmod 755 $OUT/extra/tab_completion/*.sh chmod 755 $OUT/extra/tab_completion/install +chmod 755 $OUT/Python +chmod 644 $OUT/Python/* chmod 755 $OUT/OpenCL chmod 644 $OUT/OpenCL/* chmod 755 $OUT/tunings diff --git a/tools/test.sh b/tools/test.sh index c1cdf382d..abd7777a1 100755 --- a/tools/test.sh +++ b/tools/test.sh @@ -336,6 +336,7 @@ function init() done 9< "${OUTD}/${hash_type}_passwords.txt" min_len=0 + fixed_len=0 if [ "${hash_type}" -eq 2500 ]; then min_len=7 # means length 8, since we start with 0 @@ -351,6 +352,14 @@ function init() min_len=7 # means length 8, since we start with 0 elif [ "${hash_type}" -eq 22000 ]; then min_len=7 # means length 8, since we start with 0 + elif [ "${hash_type}" -eq 33500 ]; then + fixed_len=5 + elif [ "${hash_type}" -eq 33501 ]; then + min_len=5 + fixed_len=9 + elif [ "${hash_type}" -eq 33502 ]; then + min_len=5 + fixed_len=13 fi # generate multiple pass/hash foreach len (2 to 8) @@ -366,7 +375,15 @@ function init() rm -rf "${OUTD}/${hash_type}_dict1_multi_${i}" "${OUTD}/${hash_type}_dict2_multi_${i}" touch "${OUTD}/${hash_type}_dict1_multi_${i}" "${OUTD}/${hash_type}_dict2_multi_${i}" - perl tools/test.pl single "${hash_type}" ${i} > "${cmd_file}" + if [ "${fixed_len}" -ne 0 ]; then + if [ "${fixed_len}" -eq "${i}" ]; then + perl tools/test.pl single "${hash_type}" ${i} > "${cmd_file}" + else + perl tools/test.pl single "${hash_type}" ${fixed_len} > "${cmd_file}" + fi + else + perl tools/test.pl single "${hash_type}" ${i} > "${cmd_file}" + fi sed 's/^echo *|.*$//' "${cmd_file}" | awk '{print $2}' > "${OUTD}/${hash_type}_passwords_multi_${i}.txt" sed 's/^echo *|/echo "" |/' "${cmd_file}" | awk '{t="";for(i=10;i<=NF;i++){if(t){t=t" "$i}else{t=$i}};print t}' | cut -d"'" -f2 > "${OUTD}/${hash_type}_hashes_multi_${i}.txt" @@ -768,6 +785,7 @@ function attack_1() fi echo "> Testing hash type $hash_type with attack mode 1, markov ${MARKOV}, single hash, Device-Type ${DEVICE_TYPE}, Kernel-Type ${KERNEL_TYPE}, Vector-Width ${VECTOR}." >> "${OUTD}/logfull.txt" 2>> "${OUTD}/logfull.txt" + i=1 while read -r -u 9 hash; do @@ -1915,6 +1933,7 @@ function attack_6() e_nm=0 cnt=0 + min=1 max=9 if [ "${hash_type}" -eq 2500 ]; then @@ -1929,6 +1948,12 @@ function attack_6() max=5 elif [ "${hash_type}" -eq 22000 ]; then max=5 + elif [ "${hash_type}" -eq 33500 ]; then + min=5 + elif [ "${hash_type}" -eq 33501 ]; then + min=8 + elif [ "${hash_type}" -eq 33502 ]; then + min=8 fi if is_in_array "${hash_type}" ${TIMEOUT_ALGOS}; then @@ -1941,6 +1966,11 @@ function attack_6() i=2 while [ "$i" -lt "$max" ]; do + if [ "$i" -lt "$min" ]; then + i=$((i + 1)) + continue + fi + hash_file=${OUTD}/${hash_type}_hashes_multi_${i}.txt # if file_only -> decode all base64 "hashes" and put them in the temporary file @@ -2368,6 +2398,12 @@ function attack_7() max=5 elif [ "${hash_type}" -eq 22000 ]; then max=5 + elif [ "${hash_type}" -eq 33500 ]; then + min=5 + elif [ "${hash_type}" -eq 33501 ]; then + max=3 + elif [ "${hash_type}" -eq 33502 ]; then + max=3 fi if is_in_array "${hash_type}" ${TIMEOUT_ALGOS}; then @@ -2383,7 +2419,13 @@ function attack_7() hash_file=${OUTD}/${hash_type}_hashes_multi_${i}.txt dict_file=${OUTD}/${hash_type}_dict2_multi_${i} - mask=${mask_7[$i]} + if [ "${hash_type}" -eq 40001 ]; then + mask=${mask_7[((i+10))]} + elif [ "${hash_type}" -eq 40002 ]; then + mask=${mask_7[((i+10))]} + else + mask=${mask_7[$i]} + fi # if file_only -> decode all base64 "hashes" and put them in the temporary file diff --git a/tools/test_modules/m15700.pm b/tools/test_modules/m15700.pm index 896ce66e5..abee738bf 100644 --- a/tools/test_modules/m15700.pm +++ b/tools/test_modules/m15700.pm @@ -17,8 +17,8 @@ sub module_generate_hash { my $word = shift; my $salt = shift; - my $scrypt_N = shift || 1024 ; # 262144 originally - my $scrypt_r = shift || 1; # 8 originally + my $scrypt_N = shift || 262144; + my $scrypt_r = shift || 8; my $scrypt_p = shift || 1; my $ciphertext = shift || random_bytes (32); diff --git a/tools/test_modules/m20730.pm b/tools/test_modules/m20730.pm new file mode 100644 index 000000000..d6c4556fc --- /dev/null +++ b/tools/test_modules/m20730.pm @@ -0,0 +1,44 @@ +#!/usr/bin/env perl + +## +## Author......: See docs/credits.txt +## License.....: MIT +## + +use strict; +use warnings; + +use Digest::SHA qw (sha256_hex); + +sub module_constraints { [[0, 256], [0, 256], [0, 55], [0, 55], [0, 55]] } + +sub module_generate_hash +{ + my $word = shift; + my $salt = shift; + + my $digest = sha256_hex (sha256_hex ($word . $salt)); + + my $hash = sprintf ("%s:%s", $digest, $salt); + + return $hash; +} + +sub module_verify_hash +{ + my $line = shift; + + my ($hash, $salt, $word) = split (':', $line); + + return unless defined $hash; + return unless defined $salt; + return unless defined $word; + + my $word_packed = pack_if_HEX_notation ($word); + + my $new_hash = module_generate_hash ($word_packed, $salt); + + return ($new_hash, $word); +} + +1; diff --git a/tools/test_modules/m22911.pm b/tools/test_modules/m22911.pm index d8c53693f..45aed4d90 100644 --- a/tools/test_modules/m22911.pm +++ b/tools/test_modules/m22911.pm @@ -12,7 +12,7 @@ use Crypt::CBC; use Crypt::DES_EDE3; use Digest::MD5 qw (md5); -sub module_constraints { [[0, 256], [16, 16], [-1, -1], [-1, -1], [-1, -1]] } +sub module_constraints { [[0, 128], [16, 16], [-1, -1], [-1, -1], [-1, -1]] } sub generate_key { diff --git a/tools/test_modules/m22921.pm b/tools/test_modules/m22921.pm index 4839da1f6..9b35a14e5 100644 --- a/tools/test_modules/m22921.pm +++ b/tools/test_modules/m22921.pm @@ -11,7 +11,7 @@ use warnings; use Crypt::CBC; use Digest::MD5 qw (md5); -sub module_constraints { [[0, 256], [16, 16], [-1, -1], [-1, -1], [-1, -1]] } +sub module_constraints { [[0, 128], [16, 16], [-1, -1], [-1, -1], [-1, -1]] } sub generate_key { diff --git a/tools/test_modules/m22931.pm b/tools/test_modules/m22931.pm index 138f56e66..0fa5897a8 100644 --- a/tools/test_modules/m22931.pm +++ b/tools/test_modules/m22931.pm @@ -11,7 +11,7 @@ use warnings; use Crypt::CBC; use Digest::MD5 qw (md5); -sub module_constraints { [[0, 256], [32, 32], [-1, -1], [-1, -1], [-1, -1]] } +sub module_constraints { [[0, 128], [32, 32], [-1, -1], [-1, -1], [-1, -1]] } sub generate_key { diff --git a/tools/test_modules/m22941.pm b/tools/test_modules/m22941.pm index d4fb2b554..1e1e39e1f 100644 --- a/tools/test_modules/m22941.pm +++ b/tools/test_modules/m22941.pm @@ -11,7 +11,7 @@ use warnings; use Crypt::CBC; use Digest::MD5 qw (md5); -sub module_constraints { [[0, 256], [32, 32], [-1, -1], [-1, -1], [-1, -1]] } +sub module_constraints { [[0, 128], [32, 32], [-1, -1], [-1, -1], [-1, -1]] } sub generate_key { diff --git a/tools/test_modules/m22951.pm b/tools/test_modules/m22951.pm index c9c794be8..a8b8f14f8 100644 --- a/tools/test_modules/m22951.pm +++ b/tools/test_modules/m22951.pm @@ -11,7 +11,7 @@ use warnings; use Crypt::CBC; use Digest::MD5 qw (md5); -sub module_constraints { [[0, 256], [32, 32], [-1, -1], [-1, -1], [-1, -1]] } +sub module_constraints { [[0, 128], [32, 32], [-1, -1], [-1, -1], [-1, -1]] } sub generate_key { diff --git a/tools/test_modules/m24000.pm b/tools/test_modules/m24000.pm new file mode 100644 index 000000000..7f84b373c --- /dev/null +++ b/tools/test_modules/m24000.pm @@ -0,0 +1,144 @@ +#!/usr/bin/env perl + +## +## Author......: See docs/credits.txt +## License.....: MIT +## + +use strict; +use warnings; + +use Crypt::ScryptKDF qw (scrypt_raw); +use Digest::SHA qw (sha256); +use Crypt::CBC; +use Crypt::Rijndael; +use Crypt::Twofish; +use Crypt::Cipher::Serpent; # Crypt::Serpent doesn't work for me :( +use Crypt::Camellia; + +sub module_constraints { [[0, 256], [24, 24], [-1, -1], [-1, -1], [-1, -1]] } + +my $SCRYPT_N = 32768; +my $SCRYPT_R = 16; +my $SCRYPT_P = 1; + +sub module_generate_hash +{ + my $word = shift; + my $salt = shift; + my $data = shift; + my $type = shift; + + # most heavy part of the algorithm: + + my $key = scrypt_raw ($word, $salt, $SCRYPT_N, $SCRYPT_R, $SCRYPT_P, 32); + + my %crypto_types = ( + 8 => 'Crypt::Rijndael', # '08' => AES + 9 => 'Crypt::Twofish', # '09' => Twofish + 10 => 'Crypt::Cipher::Serpent', # '0a' => Serpent + 15 => 'Crypt::Camellia' # '0f' => Camellia + ); + + my @crypto_type_conv = (8, 9, 10, 15); + + if (! defined ($type)) + { + my $rand_type_num = random_number (0, 3); + + $type = $crypto_type_conv[$rand_type_num]; + } + + my $crypto_algo = $crypto_types{$type}; + + my $crypt = Crypt::CBC->new ({ + cipher => $crypto_algo, + key => $key, + iv => "\x00" x 16, + keysize => 32, + literal_key => 1, + header => "none", + padding => "none" + }); + + if (defined ($data)) # decrypt + { + my $plain_text = $crypt->decrypt ($data); + + my $part1 = substr ($plain_text, 0, 64); + my $part2 = substr ($plain_text, 64, 32); + + my $hash = sha256 ($part1); + + if ($hash ne $part2) # wrong => fake the data + { + $data = "\x00" x length ($data); # 64 + 32 = 96 + } + } + else # encrypt + { + $data = random_bytes (64); + + my $hash = sha256 ($data); + + $data = $crypt->encrypt ($data . $hash); + } + + return sprintf ("\$bcve\$4\$%02x\$%s\$%s", $type, unpack ("H*", $salt), unpack ("H*", $data)); +} + +sub module_verify_hash +{ + my $line = shift; + + my $idx1 = index ($line, ':'); + + return if ($idx1 < 1); + + my $hash = substr ($line, 0, $idx1); + my $word = substr ($line, $idx1 + 1); + + return if (substr ($hash, 0, 8) ne "\$bcve\$4\$"); + + $idx1 = index ($hash, '$', 8); + + return if ($idx1 < 1); + + # crypto type + + my $crypto_type = substr ($hash, 8, $idx1 - 8); + + return unless ($crypto_type eq "08") || + ($crypto_type eq "09") || + ($crypto_type eq "0a") || + ($crypto_type eq "0f"); + + $crypto_type = hex ($crypto_type); + + # salt + + my $idx2 = index ($hash, '$', $idx1 + 1); + + my $salt = substr ($hash, $idx1 + 1, $idx2 - $idx1 - 1); + + return unless ($salt =~ m/^[0-9a-fA-F]+$/); + + # data + + my $data = substr ($hash, $idx2 + 1); + + return unless ($data =~ m/^[0-9a-fA-F]+$/); + + # convert to hex: + + $salt = pack ("H*", $salt); + $data = pack ("H*", $data); + + my $word_packed = pack_if_HEX_notation ($word); + + my $new_hash = module_generate_hash ($word_packed, $salt, $data, $crypto_type); + + return ($new_hash, $word); +} + +1; diff --git a/tools/test_modules/m33300.pm b/tools/test_modules/m33300.pm new file mode 100644 index 000000000..6fd276965 --- /dev/null +++ b/tools/test_modules/m33300.pm @@ -0,0 +1,46 @@ +#!/usr/bin/env perl + +## +## Author......: See docs/credits.txt +## License.....: MIT +## + +use strict; +use warnings; + +use Digest::HMAC qw (hmac_hex); + +use Crypt::Digest::BLAKE2s_256 qw (blake2s_256); + +sub module_constraints { [[0, 256], [0, 256], [0, 55], [0, 55], [-1, -1]] } + +sub module_generate_hash +{ + my $word = shift; + my $salt = shift; + + my $digest = hmac_hex ($salt, $word, \&blake2s_256); + + my $hash = sprintf ("%s:%s", $digest, $salt); + + return $hash; +} + +sub module_verify_hash +{ + my $line = shift; + + my ($hash, $salt, $word) = split (':', $line); + + return unless defined $hash; + return unless defined $salt; + return unless defined $word; + + my $word_packed = pack_if_HEX_notation ($word); + + my $new_hash = module_generate_hash ($word_packed, $salt); + + return ($new_hash, $word); +} + +1; diff --git a/tools/test_modules/m33500.pm b/tools/test_modules/m33500.pm new file mode 100644 index 000000000..f899c373b --- /dev/null +++ b/tools/test_modules/m33500.pm @@ -0,0 +1,84 @@ +#!/usr/bin/env perl + +## +## Author......: See docs/credits.txt +## License.....: MIT +## + +use strict; +use warnings; + +use Crypt::RC4; + +sub module_constraints { [[-1, -1], [-1, -1], [5, 5], [-1, -1], [-1, -1]] } + +sub module_generate_hash +{ + my $word = shift; + my $dropN = shift; + my $ciphertext = shift; + my $plaintext_offset = shift; + my $plaintext = shift; + + if (!defined $plaintext || !defined $dropN) + { + $dropN = random_number (0, 512); + $plaintext = random_string (random_number (5, 64)); + } + + my $cipher = Crypt::RC4->new ($word); + + if ($dropN gt 0) + { + $cipher->RC4("\x00" x $dropN); + } + + my $digest = unpack ("H*", $cipher->RC4 ($plaintext)); + + if (defined $ciphertext) + { + if (substr ($ciphertext, 0, 10) eq $digest) + { + $digest = $ciphertext; + } + } + + my $hash = sprintf ('$rc4$40$%d$%s$0$%s', $dropN, $digest, substr (unpack ("H*", $plaintext), 0, 10)); + + return $hash; +} + +sub module_verify_hash +{ + my $line = shift; + + my ($hash, $word) = split (':', $line); + + return unless defined $hash; + return unless defined $word; + + my $signature = substr ($hash, 0, 8); + + return unless ($signature eq "\$rc4\$40\$"); + + my @data = split ('\$', $hash); + + return unless scalar (@data) == 7; + + shift @data; + shift @data; + shift @data; + + my $dropN = shift @data; + my $ciphertext = shift @data; + my $plaintext_offset = shift @data; + my $plaintext = pack ("H*", shift @data); + + my $word_packed = pack_if_HEX_notation ($word); + + my $new_hash = module_generate_hash ($word_packed, $dropN, $ciphertext, $plaintext_offset, $plaintext); + + return ($new_hash, $word); +} + +1; diff --git a/tools/test_modules/m33501.pm b/tools/test_modules/m33501.pm new file mode 100644 index 000000000..b2932ed01 --- /dev/null +++ b/tools/test_modules/m33501.pm @@ -0,0 +1,84 @@ +#!/usr/bin/env perl + +## +## Author......: See docs/credits.txt +## License.....: MIT +## + +use strict; +use warnings; + +use Crypt::RC4; + +sub module_constraints { [[-1, -1], [-1, -1], [9, 9], [-1, -1], [-1, -1]] } + +sub module_generate_hash +{ + my $word = shift; + my $dropN = shift; + my $ciphertext = shift; + my $plaintext_offset = shift; + my $plaintext = shift; + + if (!defined $plaintext || !defined $dropN) + { + $dropN = random_number (0, 512); + $plaintext = random_string (random_number (5, 64)); + } + + my $cipher = Crypt::RC4->new ($word); + + if ($dropN gt 0) + { + $cipher->RC4("\x00" x $dropN); + } + + my $digest = unpack ("H*", $cipher->RC4 ($plaintext)); + + if (defined $ciphertext) + { + if (substr ($ciphertext, 0, 10) eq $digest) + { + $digest = $ciphertext; + } + } + + my $hash = sprintf ('$rc4$72$%d$%s$0$%s', $dropN, $digest, substr (unpack ("H*", $plaintext), 0, 10)); + + return $hash; +} + +sub module_verify_hash +{ + my $line = shift; + + my ($hash, $word) = split (':', $line); + + return unless defined $hash; + return unless defined $word; + + my $signature = substr ($hash, 0, 8); + + return unless ($signature eq "\$rc4\$72\$"); + + my @data = split ('\$', $hash); + + return unless scalar (@data) == 7; + + shift @data; + shift @data; + shift @data; + + my $dropN = shift @data; + my $ciphertext = shift @data; + my $plaintext_offset = shift @data; + my $plaintext = pack ("H*", shift @data); + + my $word_packed = pack_if_HEX_notation ($word); + + my $new_hash = module_generate_hash ($word_packed, $dropN, $ciphertext, $plaintext_offset, $plaintext); + + return ($new_hash, $word); +} + +1; diff --git a/tools/test_modules/m33502.pm b/tools/test_modules/m33502.pm new file mode 100644 index 000000000..a903e4df0 --- /dev/null +++ b/tools/test_modules/m33502.pm @@ -0,0 +1,84 @@ +#!/usr/bin/env perl + +## +## Author......: See docs/credits.txt +## License.....: MIT +## + +use strict; +use warnings; + +use Crypt::RC4; + +sub module_constraints { [[-1, -1], [-1, -1], [13, 13], [-1, -1], [-1, -1]] } + +sub module_generate_hash +{ + my $word = shift; + my $dropN = shift; + my $ciphertext = shift; + my $plaintext_offset = shift; + my $plaintext = shift; + + if (!defined $plaintext || !defined $dropN) + { + $dropN = random_number (0, 512); + $plaintext = random_string (random_number (5, 64)); + } + + my $cipher = Crypt::RC4->new ($word); + + if ($dropN gt 0) + { + $cipher->RC4("\x00" x $dropN); + } + + my $digest = unpack ("H*", $cipher->RC4 ($plaintext)); + + if (defined $ciphertext) + { + if (substr ($ciphertext, 0, 10) eq $digest) + { + $digest = $ciphertext; + } + } + + my $hash = sprintf ('$rc4$104$%d$%s$0$%s', $dropN, $digest, substr (unpack ("H*", $plaintext), 0, 10)); + + return $hash; +} + +sub module_verify_hash +{ + my $line = shift; + + my ($hash, $word) = split (':', $line); + + return unless defined $hash; + return unless defined $word; + + my $signature = substr ($hash, 0, 9); + + return unless ($signature eq "\$rc4\$104\$"); + + my @data = split ('\$', $hash); + + return unless scalar (@data) == 7; + + shift @data; + shift @data; + shift @data; + + my $dropN = shift @data; + my $ciphertext = shift @data; + my $plaintext_offset = shift @data; + my $plaintext = pack ("H*", shift @data); + + my $word_packed = pack_if_HEX_notation ($word); + + my $new_hash = module_generate_hash ($word_packed, $dropN, $ciphertext, $plaintext_offset, $plaintext); + + return ($new_hash, $word); +} + +1; diff --git a/tools/test_modules/m33700.pm b/tools/test_modules/m33700.pm new file mode 100644 index 000000000..dab6da2fb --- /dev/null +++ b/tools/test_modules/m33700.pm @@ -0,0 +1,126 @@ +#!/usr/bin/env perl + +## +## Author......: See docs/credits.txt +## License.....: MIT +## + +use strict; +use warnings; + +use Crypt::PBKDF2; +use Crypt::CBC; +use Encode qw(encode); + +sub module_constraints { [[0, 256], [-1, -1], [-1, -1], [-1, -1], [-1, -1]] } + +sub module_generate_hash +{ + my $word = shift; + my $iter = shift; + my $ct = shift; + + $iter = 10000 unless defined ($iter) && $iter =~ /^\d+$/; + + my $hid = 0; + + my $iv = "\x00" x 16; + + my $key_len = 32; + + my $kdf = Crypt::PBKDF2->new + ( + hasher => Crypt::PBKDF2->hasher_from_algorithm ('HMACSHA2', 256), + iterations => $iter, + output_len => $key_len, + salt_len => 0 + ); + + my $word_utf16le = encode ("UTF-16LE", $word); + + my $key = $kdf->PBKDF2 ('', $word_utf16le); + + my $is_decrypt = defined ($ct); + + my $data_bin; + + if ($is_decrypt == 1) + { + $data_bin = pack ("H*", $ct); + + my $aes = Crypt::CBC->new ({ + cipher => "Crypt::Rijndael", + key => $key, + iv => $iv, + keysize => $key_len, + literal_key => 1, + header => "none", + padding => "standard", + }); + + my $pt_bin = $aes->decrypt ($data_bin); + + my $pt = unpack ("H*", $pt_bin); + my $pt_tmp = substr ($pt, 0, 16); + + my $kp = "\x00\x00\x00\x00\x01\x00\x00\x00"; + my $kp_tmp = unpack ("H*", $kp); + + if ($pt_tmp eq $kp_tmp) + { + $data_bin = $pt_bin; + } + } + else + { + $data_bin = pack ("H*", "000000000100000000000000600000006000000000000000200000004000"); + } + + my $aes = Crypt::CBC->new ({ + cipher => "Crypt::Rijndael", + key => $key, + iv => $iv, + keysize => $key_len, + literal_key => 1, + header => "none", + padding => "standard", + }); + + my $ct_bin = $aes->encrypt ($data_bin); + + my $hash = sprintf ('$MSONLINEACCOUNT$%d$%d$%s', $hid, $iter, unpack ("H*", $ct_bin)); + + return $hash; +} + +sub module_verify_hash +{ + my $line = shift; + + my $idx = index ($line, ':'); + + return unless $idx >= 0; + + my $hash = substr ($line, 0, $idx); + my $word = substr ($line, $idx + 1); + + return unless substr ($hash, 0, 18) eq '$MSONLINEACCOUNT$0'; + + my (undef, $signature, $hid, $iter, $ct) = split '\$', $hash; + + return unless defined $signature; + return unless defined $hid; + return unless defined $iter; + return unless defined $ct; + + return unless ($signature eq 'MSONLINEACCOUNT'); + return unless ($hid eq '0'); + + my $word_packed = pack_if_HEX_notation ($word); + + my $new_hash = module_generate_hash ($word_packed, $iter, $ct); + + return ($new_hash, $word); +} + +1; diff --git a/tools/test_modules/m33800.pm b/tools/test_modules/m33800.pm new file mode 100644 index 000000000..86ffc3b75 --- /dev/null +++ b/tools/test_modules/m33800.pm @@ -0,0 +1,76 @@ +#!/usr/bin/env perl + +## +## Author......: See docs/credits.txt +## License.....: MIT +## + +use strict; +use warnings; + +use Crypt::Eksblowfish::Bcrypt qw (bcrypt en_base64); +use MIME::Base64 qw (decode_base64); + +sub module_constraints { [[0, 72], [16, 16], [-1, -1], [-1, -1], [-1, -1]] } + +sub module_generate_hash +{ + my $word = shift; + my $salt = shift; + my $iter = shift; + + my $cost = "05"; + + if (length ($iter)) + { + $cost = $iter; + } + + my $hash = bcrypt ($word, sprintf ('$2a$%s$%s$', $cost, en_base64 ($salt))); + + my $hash2 = bcrypt ($hash, sprintf ('$2a$%s$%s$', $cost, en_base64 ($salt))); + + return $hash2; +} + +sub module_verify_hash +{ + my $line = shift; + + my $index1 = index ($line, ":", 33); + + return if $index1 < 1; + + my $hash = substr ($line, 0, $index1); + my $word = substr ($line, $index1 + 1); + + my $index2 = index ($hash, "\$", 4); + + my $iter = substr ($hash, 4, $index2 - 4); + + my $plain_base64 = substr ($hash, $index2 + 1, 22); + + # base64 mapping + + my $base64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + my $itoa64_2 = "./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; + + my $encoded = ""; + + for (my $i = 0; $i < length ($plain_base64); $i++) + { + my $char = substr ($plain_base64, $i, 1); + + $encoded .= substr ($base64, index ($itoa64_2, $char), 1); + } + + my $salt = decode_base64 ($encoded); + + my $word_packed = pack_if_HEX_notation ($word); + + my $new_hash = module_generate_hash ($word_packed, $salt, $iter); + + return ($new_hash, $word); +} + +1; diff --git a/tools/test_modules/m70000.pm b/tools/test_modules/m70000.pm new file mode 100644 index 000000000..4b44334ac --- /dev/null +++ b/tools/test_modules/m70000.pm @@ -0,0 +1,76 @@ +#!/usr/bin/env perl + +## +## Author......: See docs/credits.txt +## License.....: MIT +## + +use strict; +use warnings; + +use MIME::Base64 qw (decode_base64 encode_base64); +use Crypt::Argon2 qw (argon2_raw); + +sub module_constraints { [[0, 256], [32, 32], [-1, -1], [-1, -1], [-1, -1]] } + +sub module_generate_hash +{ + my $word = shift; + my $salt = shift; + my $m = shift // 4096; + my $t = shift // 3; + my $p = shift // 1; + my $len = shift // random_number (1, 2) * 16; + + my $salt_bin = pack ("H*", $salt); + + my $digest_bin = argon2_raw ('argon2id', $word, $salt_bin, $t, $m . "k", $p, $len); + + my $salt_base64 = encode_base64 ($salt_bin, ""); $salt_base64 =~ s/=+$//; + my $digest_base64 = encode_base64 ($digest_bin, ""); $digest_base64 =~ s/=+$//; + + my $hash = sprintf ('$argon2id$v=19$m=%d,t=%d,p=%d$%s$%s', $m, $t, $p, $salt_base64, $digest_base64); + + return $hash; +} + +sub module_verify_hash +{ + my $line = shift; + + my $idx = index ($line, ':'); + + return unless $idx >= 0; + + my $hash = substr ($line, 0, $idx); + my $word = substr ($line, $idx + 1); + + return unless substr ($hash, 0, 10) eq '$argon2id$'; + + my (undef, $signature, $version, $config, $salt, $digest) = split '\$', $hash; + + return unless defined $signature; + return unless defined $version; + return unless defined $config; + return unless defined $salt; + return unless defined $digest; + + my ($m_config, $t_config, $p_config) = split ("\,", $config); + + return unless ($version eq "v=19"); + + my $m = (split ("=", $m_config))[1]; + my $t = (split ("=", $t_config))[1]; + my $p = (split ("=", $p_config))[1]; + + $salt = decode_base64 ($salt); + $digest = decode_base64 ($digest); + + my $word_packed = pack_if_HEX_notation ($word); + + my $new_hash = module_generate_hash ($word_packed, unpack ("H*", $salt), $m, $t, $p, length ($digest)); + + return ($new_hash, $word); +} + +1; diff --git a/tools/test_modules/m70100.pm b/tools/test_modules/m70100.pm new file mode 100644 index 000000000..ca3f56710 --- /dev/null +++ b/tools/test_modules/m70100.pm @@ -0,0 +1,90 @@ +#!/usr/bin/env perl + +## +## Author......: See docs/credits.txt +## License.....: MIT +## + +use strict; +use warnings; + +use Crypt::ScryptKDF qw (scrypt_hash); +use MIME::Base64 qw (decode_base64); + +sub module_constraints { [[0, 256], [1, 15], [-1, -1], [-1, -1], [-1, -1]] } + +sub module_generate_hash +{ + my $word = shift; + my $salt = shift; + my $N = shift // 16384; + my $r = shift // 8; + my $p = shift // 1; + + my $hash_buf = scrypt_hash ($word, $salt, $N, $r, $p, 32); + + my $hash = sprintf ('%s', $hash_buf); + + return $hash; +} + +sub module_verify_hash +{ + my $line = shift; + + # scrypt + return unless (substr ($line, 0, 7) eq 'SCRYPT:'); + + # get hash + my $index1 = index ($line, ":", 7); + + return if $index1 < 1; + + # N + my $N = substr ($line, 7, $index1 - 7); + + my $index2 = index ($line, ":", $index1 + 1); + + return if $index2 < 1; + + # r + my $r = substr ($line, $index1 + 1, $index2 - $index1 - 1); + + $index1 = index ($line, ":", $index2 + 1); + + return if $index1 < 1; + + # p + my $p = substr ($line, $index2 + 1, $index1 - $index2 - 1); + + $index2 = index ($line, ":", $index1 + 1); + + return if $index2 < 1; + + # salt + my $salt = substr ($line, $index1 + 1, $index2 - $index1 - 1); + + $salt = decode_base64 ($salt); + + $index1 = index ($line, ":", $index2 + 1); + + return if $index1 < 1; + + # digest + + my $word = substr ($line, $index1 + 1); + + return unless defined $salt; + return unless defined $word; + return unless defined $N; + return unless defined $r; + return unless defined $p; + + $word = pack_if_HEX_notation ($word); + + my $new_hash = module_generate_hash ($word, $salt, $N, $r, $p); + + return ($new_hash, $word); +} + +1; diff --git a/tools/test_modules/m70200.pm b/tools/test_modules/m70200.pm new file mode 100644 index 000000000..ca3f56710 --- /dev/null +++ b/tools/test_modules/m70200.pm @@ -0,0 +1,90 @@ +#!/usr/bin/env perl + +## +## Author......: See docs/credits.txt +## License.....: MIT +## + +use strict; +use warnings; + +use Crypt::ScryptKDF qw (scrypt_hash); +use MIME::Base64 qw (decode_base64); + +sub module_constraints { [[0, 256], [1, 15], [-1, -1], [-1, -1], [-1, -1]] } + +sub module_generate_hash +{ + my $word = shift; + my $salt = shift; + my $N = shift // 16384; + my $r = shift // 8; + my $p = shift // 1; + + my $hash_buf = scrypt_hash ($word, $salt, $N, $r, $p, 32); + + my $hash = sprintf ('%s', $hash_buf); + + return $hash; +} + +sub module_verify_hash +{ + my $line = shift; + + # scrypt + return unless (substr ($line, 0, 7) eq 'SCRYPT:'); + + # get hash + my $index1 = index ($line, ":", 7); + + return if $index1 < 1; + + # N + my $N = substr ($line, 7, $index1 - 7); + + my $index2 = index ($line, ":", $index1 + 1); + + return if $index2 < 1; + + # r + my $r = substr ($line, $index1 + 1, $index2 - $index1 - 1); + + $index1 = index ($line, ":", $index2 + 1); + + return if $index1 < 1; + + # p + my $p = substr ($line, $index2 + 1, $index1 - $index2 - 1); + + $index2 = index ($line, ":", $index1 + 1); + + return if $index2 < 1; + + # salt + my $salt = substr ($line, $index1 + 1, $index2 - $index1 - 1); + + $salt = decode_base64 ($salt); + + $index1 = index ($line, ":", $index2 + 1); + + return if $index1 < 1; + + # digest + + my $word = substr ($line, $index1 + 1); + + return unless defined $salt; + return unless defined $word; + return unless defined $N; + return unless defined $r; + return unless defined $p; + + $word = pack_if_HEX_notation ($word); + + my $new_hash = module_generate_hash ($word, $salt, $N, $r, $p); + + return ($new_hash, $word); +} + +1; diff --git a/tools/test_modules/m72000.pm b/tools/test_modules/m72000.pm new file mode 100644 index 000000000..c16d35790 --- /dev/null +++ b/tools/test_modules/m72000.pm @@ -0,0 +1,55 @@ +#!/usr/bin/env perl + +## +## Author......: See docs/credits.txt +## License.....: MIT +## + +use strict; +use warnings; + +use Digest::SHA qw (sha256); + +sub module_constraints { [[0, 256], [16, 16], [-1, -1], [-1, -1], [-1, -1]] } + +sub module_generate_hash +{ + my $word = shift; + my $salt = shift; + + my $digest = sha256 ($salt . $word); + + for (my $i = 0; $i < 10000; $i++) + { + $digest = sha256 ($digest); + } + + my $hash = sprintf ("%s*%s", unpack ("H*", $digest), $salt); + + return $hash; +} + +sub module_verify_hash +{ + my $line = shift; + + my $idx = index ($line, ':'); + + return unless $idx >= 0; + + my $hash = substr ($line, 0, $idx); + my $word = substr ($line, $idx + 1); + + my ($digest, $salt) = split '\*', $hash; + + return unless defined $digest; + return unless defined $salt; + + my $word_packed = pack_if_HEX_notation ($word); + + my $new_hash = module_generate_hash ($word_packed, $salt); + + return ($new_hash, $word); +} + +1; diff --git a/tools/test_modules/m73000.pm b/tools/test_modules/m73000.pm new file mode 100644 index 000000000..c16d35790 --- /dev/null +++ b/tools/test_modules/m73000.pm @@ -0,0 +1,55 @@ +#!/usr/bin/env perl + +## +## Author......: See docs/credits.txt +## License.....: MIT +## + +use strict; +use warnings; + +use Digest::SHA qw (sha256); + +sub module_constraints { [[0, 256], [16, 16], [-1, -1], [-1, -1], [-1, -1]] } + +sub module_generate_hash +{ + my $word = shift; + my $salt = shift; + + my $digest = sha256 ($salt . $word); + + for (my $i = 0; $i < 10000; $i++) + { + $digest = sha256 ($digest); + } + + my $hash = sprintf ("%s*%s", unpack ("H*", $digest), $salt); + + return $hash; +} + +sub module_verify_hash +{ + my $line = shift; + + my $idx = index ($line, ':'); + + return unless $idx >= 0; + + my $hash = substr ($line, 0, $idx); + my $word = substr ($line, $idx + 1); + + my ($digest, $salt) = split '\*', $hash; + + return unless defined $digest; + return unless defined $salt; + + my $word_packed = pack_if_HEX_notation ($word); + + my $new_hash = module_generate_hash ($word_packed, $salt); + + return ($new_hash, $word); +} + +1; diff --git a/tools/win-iconv-32.diff b/tools/win-iconv-32.diff deleted file mode 100644 index 7dc17e3a6..000000000 --- a/tools/win-iconv-32.diff +++ /dev/null @@ -1,32 +0,0 @@ -diff --git a/Makefile b/Makefile -index 5937584..8777fad 100644 ---- a/Makefile -+++ b/Makefile -@@ -6,10 +6,10 @@ - # MKDIR_P, INSTALL, RM - # prefix, BINARY_PATH, INCLUDE_PATH, LIBRARY_PATH - --CC ?= gcc --AR ?= ar --RANLIB ?= ranlib --DLLTOOL ?= dlltool -+CC := i686-w64-mingw32-gcc -+AR := i686-w64-mingw32-ar -+RANLIB := i686-w64-mingw32-ranlib -+DLLTOOL := i686-w64-mingw32-dlltool - - MKDIR_P = mkdir -p - INSTALL = install -c -@@ -19,10 +19,10 @@ RM = rm -f - DEFAULT_LIBICONV_DLL ?= \"\" - - CFLAGS += -pedantic -Wall --CFLAGS += -DUSE_LIBICONV_DLL -+#CFLAGS += -DUSE_LIBICONV_DLL - CFLAGS += -DDEFAULT_LIBICONV_DLL=$(DEFAULT_LIBICONV_DLL) - --prefix ?= /usr/local -+prefix ?= /opt/win-iconv-32 - BINARY_PATH = $(prefix)/bin - INCLUDE_PATH = $(prefix)/include - LIBRARY_PATH = $(prefix)/lib diff --git a/tools/win-iconv-64.diff b/tools/win-iconv-64.diff deleted file mode 100644 index 2c658d8c1..000000000 --- a/tools/win-iconv-64.diff +++ /dev/null @@ -1,32 +0,0 @@ -diff --git a/Makefile b/Makefile -index 5937584..c4742a3 100644 ---- a/Makefile -+++ b/Makefile -@@ -6,10 +6,10 @@ - # MKDIR_P, INSTALL, RM - # prefix, BINARY_PATH, INCLUDE_PATH, LIBRARY_PATH - --CC ?= gcc --AR ?= ar --RANLIB ?= ranlib --DLLTOOL ?= dlltool -+CC := x86_64-w64-mingw32-gcc -+AR := x86_64-w64-mingw32-ar -+RANLIB := x86_64-w64-mingw32-ranlib -+DLLTOOL := x86_64-w64-mingw32-dlltool - - MKDIR_P = mkdir -p - INSTALL = install -c -@@ -19,10 +19,10 @@ RM = rm -f - DEFAULT_LIBICONV_DLL ?= \"\" - - CFLAGS += -pedantic -Wall --CFLAGS += -DUSE_LIBICONV_DLL -+#CFLAGS += -DUSE_LIBICONV_DLL - CFLAGS += -DDEFAULT_LIBICONV_DLL=$(DEFAULT_LIBICONV_DLL) - --prefix ?= /usr/local -+prefix ?= /opt/win-iconv-64 - BINARY_PATH = $(prefix)/bin - INCLUDE_PATH = $(prefix)/include - LIBRARY_PATH = $(prefix)/lib diff --git a/tunings/Module_08900.hctune b/tunings/Module_08900.hctune index 8aabacba9..46df052b5 100644 --- a/tunings/Module_08900.hctune +++ b/tunings/Module_08900.hctune @@ -1,4 +1,4 @@ -# + # Find the right -n value for your GPU: # ===================================== # @@ -19,21 +19,8 @@ #Device Attack Hash Vector Kernel Kernel #Name Mode Type Width Accel Loops -DEVICE_TYPE_CPU * 8900 1 N A -DEVICE_TYPE_GPU * 8900 1 N A +# Intentionally left blank. +# This is a generic KDF, and its tuning depends largely on the hash parameters. +# It's better to derive the tuning based on the hash information (handled by the hash-mode plugin). +# The tunings from the hash-mode plugin may be slightly off, so if you have better values, you can hardcode them here. -GeForce_GTX_980 * 8900 1 29 A -GeForce_GTX_1080 * 8900 1 15 A -GeForce_RTX_2080_Ti * 8900 1 68 A -GeForce_RTX_3060_Ti * 8900 1 51 A -GeForce_RTX_3070 * 8900 1 46 A -GeForce_RTX_3090 * 8900 1 82 A -GeForce_RTX_3090_Ti * 8900 1 84 A -GeForce_RTX_4090 * 8900 1 180 A -NVS_510 * 8900 1 12 A -ALIAS_AMD_RX480 * 8900 1 15 A -ALIAS_AMD_Vega64 * 8900 1 30 A -ALIAS_AMD_MI100 * 8900 1 79 A -ALIAS_AMD_RX6900XT * 8900 1 123 A -ALIAS_AMD_RX7900XTX * 8900 1 91 A -ALIAS_AMD_W5700X * 8900 1 4 A diff --git a/tunings/Module_09300.hctune b/tunings/Module_09300.hctune index 0014494fb..d98505795 100644 --- a/tunings/Module_09300.hctune +++ b/tunings/Module_09300.hctune @@ -1,4 +1,4 @@ -# + # Find the right -n value for your GPU: # ===================================== # @@ -19,18 +19,3 @@ #Device Attack Hash Vector Kernel Kernel #Name Mode Type Width Accel Loops -DEVICE_TYPE_CPU * 9300 1 N A -DEVICE_TYPE_GPU * 9300 1 N A - -GeForce_GTX_980 * 9300 1 128 A -GeForce_GTX_1080 * 9300 1 256 A -GeForce_RTX_2080_Ti * 9300 1 528 A -GeForce_RTX_3060_Ti * 9300 1 256 A -GeForce_RTX_3070 * 9300 1 368 A -GeForce_RTX_3090 * 9300 1 984 A -ALIAS_AMD_RX480 * 9300 1 232 A -ALIAS_AMD_Vega64 * 9300 1 440 A -ALIAS_AMD_MI100 * 9300 1 1000 A -ALIAS_AMD_RX6900XT * 9300 1 720 A -ALIAS_AMD_RX7900XTX * 9300 1 858 A -ALIAS_AMD_W5700X * 9300 1 3 A diff --git a/tunings/Module_15700.hctune b/tunings/Module_15700.hctune index dd67e5f42..a44bd5a9c 100644 --- a/tunings/Module_15700.hctune +++ b/tunings/Module_15700.hctune @@ -1,4 +1,4 @@ -# + # Find the right -n value for your GPU: # ===================================== # @@ -19,20 +19,3 @@ #Device Attack Hash Vector Kernel Kernel #Name Mode Type Width Accel Loops -DEVICE_TYPE_CPU * 15700 1 N A -DEVICE_TYPE_GPU * 15700 1 1 A - -GeForce_GTX_980 * 15700 1 24 A -GeForce_GTX_1080 * 15700 1 28 A -GeForce_RTX_2080_Ti * 15700 1 68 A -GeForce_RTX_3060_Ti * 15700 1 11 A -GeForce_RTX_3070 * 15700 1 22 A -GeForce_RTX_3090 * 15700 1 82 A -GeForce_RTX_3090_Ti * 15700 1 84 A -GeForce_RTX_4090 * 15700 1 180 A -ALIAS_AMD_RX480 * 15700 1 58 A -ALIAS_AMD_Vega64 * 15700 1 53 A -ALIAS_AMD_MI100 * 15700 1 120 A -ALIAS_AMD_RX6900XT * 15700 1 56 A -ALIAS_AMD_RX7900XTX * 15700 1 45 A -ALIAS_AMD_W5700X * 15700 1 1 A diff --git a/tunings/Module_22700.hctune b/tunings/Module_22700.hctune index 2409eefff..c08bd7a51 100644 --- a/tunings/Module_22700.hctune +++ b/tunings/Module_22700.hctune @@ -1,4 +1,4 @@ -# + # Find the right -n value for your GPU: # ===================================== # @@ -19,21 +19,14 @@ #Device Attack Hash Vector Kernel Kernel #Name Mode Type Width Accel Loops -DEVICE_TYPE_CPU * 22700 1 N A -DEVICE_TYPE_GPU * 22700 1 N A +#Leaving this here as a reference +#GeForce_GTX_980 * 22700 1 28 A +#GeForce_GTX_1630 * 22700 1 11 A +#GeForce_RTX_2080_Ti * 22700 1 78 A +#GeForce_RTX_3090 * 22700 1 82 A +#GeForce_RTX_4090 * 22700 1 180 A +#ALIAS_AMD_RX480 * 22700 1 28 A +#ALIAS_AMD_Vega64 * 22700 1 28 A +#ALIAS_AMD_RX6900XT * 22700 1 56 A +#ALIAS_AMD_RX7900XTX * 22700 1 92 A -GeForce_GTX_980 * 22700 1 29 A -GeForce_GTX_1080 * 22700 1 15 A -GeForce_RTX_2080_Ti * 22700 1 68 A -GeForce_RTX_3060_Ti * 22700 1 51 A -GeForce_RTX_3070 * 22700 1 46 A -GeForce_RTX_3090 * 22700 1 82 A -GeForce_RTX_3090_Ti * 22700 1 84 A -GeForce_RTX_4090 * 22700 1 180 A -NVS_510 * 22700 1 12 A -ALIAS_AMD_RX480 * 22700 1 15 A -ALIAS_AMD_Vega64 * 22700 1 30 A -ALIAS_AMD_MI100 * 22700 1 79 A -ALIAS_AMD_RX6900XT * 22700 1 123 A -ALIAS_AMD_RX7900XTX * 22700 1 186 A -ALIAS_AMD_W5700X * 22700 1 4 A diff --git a/tunings/Module_24000.hctune b/tunings/Module_24000.hctune new file mode 100644 index 000000000..52e4b78bb --- /dev/null +++ b/tunings/Module_24000.hctune @@ -0,0 +1,21 @@ + +# Find the right -n value for your GPU: +# ===================================== +# +# 1. For example, to find the value for 24000, first create a valid hash for 24000 as follows: +# +# $ ./hashcat --example-hashes -m 24000 | grep Example.Hash | grep -v Format | cut -b 25- > tmp.hash.24000 +# +# 2. Now let it iterate through all -n values to a certain point. In this case, I'm using 200, but in general it's a value that is at least twice that of the multiprocessor. If you don't mind you can just leave it as it is, it just runs a little longer. +# +# $ export i=1; while [ $i -ne 201 ]; do echo $i; ./hashcat --quiet tmp.hash.24000 --keep-guessing --self-test-disable --markov-disable --restore-disable --outfile-autohex-disable --wordlist-autohex-disable --potfile-disable --logfile-disable --hwmon-disable --status --status-timer 1 --runtime 28 --machine-readable --optimized-kernel-enable --workload-profile 3 --hash-type 24000 --attack-mode 3 ?b?b?b?b?b?b?b --backend-devices 1 --force -n $i; i=$(($i+1)); done | tee x +# +# 3. Determine the highest measured H/s speed. But don't just use the highest value. Instead, use the number that seems most stable, usually at the beginning. +# +# $ grep "$(printf 'STATUS\t3')" x | cut -f4 -d$'\t' | sort -n | tail +# +# 4. To match the speed you have chosen to the correct value in the 'x' file, simply search for it in it. Then go up a little on the block where you found him. The value -n is the single value that begins before the block start. If you have multiple blocks at the same speed, choose the lowest value for -n + +#Device Attack Hash Vector Kernel Kernel +#Name Mode Type Width Accel Loops + diff --git a/tunings/Module_27700.hctune b/tunings/Module_27700.hctune index 4121ae1a4..095c829f6 100644 --- a/tunings/Module_27700.hctune +++ b/tunings/Module_27700.hctune @@ -1,4 +1,4 @@ -# + # Find the right -n value for your GPU: # ===================================== # @@ -19,21 +19,3 @@ #Device Attack Hash Vector Kernel Kernel #Name Mode Type Width Accel Loops -DEVICE_TYPE_CPU * 27700 1 N A -DEVICE_TYPE_GPU * 27700 1 N A - -GeForce_GTX_980 * 27700 1 29 A -GeForce_GTX_1080 * 27700 1 15 A -GeForce_RTX_2080_Ti * 27700 1 68 A -GeForce_RTX_3060_Ti * 27700 1 51 A -GeForce_RTX_3070 * 27700 1 46 A -GeForce_RTX_3090 * 27700 1 82 A -GeForce_RTX_3090_Ti * 27700 1 84 A -GeForce_RTX_4090 * 27700 1 180 A -NVS_510 * 27700 1 12 A -ALIAS_AMD_RX480 * 27700 1 15 A -ALIAS_AMD_Vega64 * 27700 1 30 A -ALIAS_AMD_MI100 * 27700 1 79 A -ALIAS_AMD_RX6900XT * 27700 1 123 A -ALIAS_AMD_RX7900XTX * 27700 1 171 A -ALIAS_AMD_W5700X * 27700 1 4 A diff --git a/tunings/Module_28200.hctune b/tunings/Module_28200.hctune index a01f9a24d..2759beb00 100644 --- a/tunings/Module_28200.hctune +++ b/tunings/Module_28200.hctune @@ -1,4 +1,4 @@ -# + # Find the right -n value for your GPU: # ===================================== # @@ -19,21 +19,3 @@ #Device Attack Hash Vector Kernel Kernel #Name Mode Type Width Accel Loops -DEVICE_TYPE_CPU * 28200 1 N A -DEVICE_TYPE_GPU * 28200 1 N A - -GeForce_GTX_980 * 28200 1 29 A -GeForce_GTX_1080 * 28200 1 15 A -GeForce_RTX_2080_Ti * 28200 1 68 A -GeForce_RTX_3060_Ti * 28200 1 51 A -GeForce_RTX_3070 * 28200 1 46 A -GeForce_RTX_3090 * 28200 1 82 A -GeForce_RTX_3090_Ti * 28200 1 84 A -GeForce_RTX_4090 * 28200 1 180 A -NVS_510 * 28200 1 12 A -ALIAS_AMD_RX480 * 28200 1 15 A -ALIAS_AMD_Vega64 * 28200 1 30 A -ALIAS_AMD_MI100 * 28200 1 79 A -ALIAS_AMD_RX6900XT * 28200 1 123 A -ALIAS_AMD_RX7900XTX * 28200 1 46 A -ALIAS_AMD_W5700X * 28200 1 4 A diff --git a/tunings/Module_29800.hctune b/tunings/Module_29800.hctune index 14b5cec94..ce9ebd31d 100644 --- a/tunings/Module_29800.hctune +++ b/tunings/Module_29800.hctune @@ -1,4 +1,4 @@ -# + # Find the right -n value for your GPU: # ===================================== # @@ -18,15 +18,3 @@ #Device Attack Hash Vector Kernel Kernel #Name Mode Type Width Accel Loops - -DEVICE_TYPE_CPU * 29800 1 N A -DEVICE_TYPE_GPU * 29800 1 N A - -GeForce_GTX_1070_Ti * 29800 1 14 A -GeForce_GTX_1080 * 29800 1 14 A -GeForce_GTX_1080_Ti * 29800 1 20 A -GeForce_RTX_2080_Ti * 29800 1 40 A -GeForce_RTX_3090 * 29800 1 82 A - -ALIAS_AMD_RX6900XT * 29800 1 125 A -ALIAS_AMD_W5700X * 29800 1 4 A